ZGlmZiAtLWdpdCBhLy5ienJpZ25vcmUgYi8uYnpyaWdub3JlCmluZGV4IDk1OWE3ZGYuLjg5NzA4NGQgMTAwNjQ0Ci0tLSBhLy5ienJpZ25vcmUKKysrIGIvLmJ6cmlnbm9yZQpAQCAtMzMsNyArMzMsNiBAQAogTW9kdWxlcy9jb25maWcuYwogTW9kdWxlcy9sZF9zb19haXgKIFBhcnNlci9wZ2VuCi1QYXJzZXIvcGdlbi5zdGFtcAogTGliL3Rlc3QvZGF0YS8qCiBMaWIvbGliMnRvMy9HcmFtbWFyKi5waWNrbGUKIExpYi9saWIydG8zL1BhdHRlcm5HcmFtbWFyKi5waWNrbGUKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGMxYTgwNTUuLmE4OGIzNmUgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTUsNiArMTUsNyBAQAogRG9jL3Rvb2xzL3B5Z21lbnRzLwogRG9jL3Rvb2xzL3NwaGlueC8KIExpYi9saWIydG8zLyoucGlja2xlCitMaWIvX3N5c2NvbmZpZ2RhdGEucHkKIExpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCkBAIC0zNyw3ICszOCw2IEBACiBQQ2J1aWxkL2FtZDY0LwogLnB1cmlmeQogUGFyc2VyL3BnZW4KLVBhcnNlci9wZ2VuLnN0YW1wCiBfX3B5Y2FjaGVfXwogYXV0b200dGUuY2FjaGUKIGJ1aWxkLwpkaWZmIC0tZ2l0IGEvLmhnZW9sIGIvLmhnZW9sCmluZGV4IGVkMTMxNzEuLjY0YmI3Y2YgMTAwNjQ0Ci0tLSBhLy5oZ2VvbAorKysgYi8uaGdlb2wKQEAgLTI4LDggKzI4LDExIEBACiAKIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dCA9IEJJTgogTGliL3Rlc3QvY2prZW5jb2RpbmdzLyogPSBCSU4KLUxpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KIExpYi90ZXN0L2RlY2ltYWx0ZXN0ZGF0YS8qLmRlY1Rlc3QgPSBCSU4KK0xpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KK0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjYudHh0ID0gQklOCisKK0xpYi92ZW52L3NjcmlwdHMvbnQvKiA9IEJJTgogCiAjIEFsbCBvdGhlciBmaWxlcyAod2hpY2ggcHJlc3VtYWJseSBhcmUgaHVtYW4tZWRpdGFibGUpIGFyZSAibmF0aXZlIi4KICMgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHJ1bGUhCmRpZmYgLS1naXQgYS8uaGdpZ25vcmUgYi8uaGdpZ25vcmUKaW5kZXggMjRkZjNiOS4uYTAxYTE3OCAxMDA2NDQKLS0tIGEvLmhnaWdub3JlCisrKyBiLy5oZ2lnbm9yZQpAQCAtNSw3ICs1LDggQEAKIE1ha2VmaWxlLnByZSQKIFRBR1MkCiBhdXRvbTR0ZS5jYWNoZSQKLWJ1aWxkLworXmJ1aWxkLworXkRvYy9idWlsZC8KIGJ1aWxkbm8kCiBjb25maWcuY2FjaGUKIGNvbmZpZy5sb2cKQEAgLTMxLDcgKzMyLDYgQEAKIE1vZHVsZXMvY29uZmlnLmMKIE1vZHVsZXMvbGRfc29fYWl4JAogUGFyc2VyL3BnZW4kCi1QYXJzZXIvcGdlbi5zdGFtcCQKIF5jb3JlCiBecHl0aG9uLWdkYi5weQogXnB5dGhvbi5leGUtZ2RiLnB5CkBAIC00Nyw2ICs0Nyw3IEBACiAqLnB5ZAogKi5jb3ZlcgogKn4KK0xpYi9fc3lzY29uZmlnZGF0YS5weQogTGliL2xpYjJ0bzMvKi5waWNrbGUKIExpYi90ZXN0L2RhdGEvKgogTWlzYy8qLndwdQpAQCAtNTQsNiArNTUsMTggQEAKIFBDL3B5dGhvbm50X3JjKi5oCiBQQy8qLm9iagogUEMvKi5leGUKK1BDLyovKi5leGUKK1BDLyovKi5leHAKK1BDLyovKi5saWIKK1BDLyovKi5ic2MKK1BDLyovKi5kbGwKK1BDLyovKi5wZGIKK1BDLyovKi51c2VyCitQQy8qLyoubmNiCitQQy8qLyouc3VvCitQQy8qL1dpbjMyLXRlbXAtKgorUEMvKi94NjQtdGVtcC0qCitQQy8qL2FtZDY0CiBQQ2J1aWxkLyouZXhlCiBQQ2J1aWxkLyouZGxsCiBQQ2J1aWxkLyoucGRiCkBAIC02Miw4ICs3NSwxNSBAQAogUENidWlsZC8qLm8KIFBDYnVpbGQvKi5uY2IKIFBDYnVpbGQvKi5ic2MKK1BDYnVpbGQvKi51c2VyCitQQ2J1aWxkLyouc3VvCitQQ2J1aWxkLyouKnNkZgogUENidWlsZC9XaW4zMi10ZW1wLSoKK1BDYnVpbGQveDY0LXRlbXAtKgorUENidWlsZC9hbWQ2NAorQnVpbGRMb2cuaHRtCiBfX3B5Y2FjaGVfXworTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgogTW9kdWxlcy9fdGVzdGVtYmVkCiAuY292ZXJhZ2UKIGNvdmVyYWdlLwpkaWZmIC0tZ2l0IGEvLmhndGFncyBiLy5oZ3RhZ3MKaW5kZXggZjA2MWI5MC4uM2Y2OTc5NCAxMDA2NDQKLS0tIGEvLmhndGFncworKysgYi8uaGd0YWdzCkBAIC05OSwzICs5OSwxMCBAQAogNzA4NTQwM2RhZjQzOWFkYjNmOWU3MGVmMTNmNmJlZGIxYzQ0NzM3NiB2My4yLjNyYzEKIDQyOGYwNWNiNzI3N2UxZDQyYmI5ZGQ4ZDFhZjZiNjI3MGViYzYxMTIgdjMuMi4zcmMyCiAzZDA2ODZkOTBmNTVhNzhmOTZkOTQwM2RhMmM1MmRjMjQxMTQxOWQwIHYzLjIuMworZjFhOWE2NTA1NzMxNzE0ZjBlMTU3NDUzZmY4NTBlM2I3MTYxNWM0NSB2My4zLjBhMQorMmY2OWRiNTJkNmRlMzA2Y2RhZWYwYTBjYzAwY2M4MjNmYjM1MGIwMSB2My4zLjBhMgorMGI1M2I3MGE0MGEwMDAxMzUwNWViMzVlMzY2MDA1N2I2MmJlNzdiZSB2My4zLjBhMworN2M1MTM4OGEzYWE3Y2U3NmE4NTQxYmJiZGZjMDVkMmQyNTlhMTYyYyB2My4zLjBhNAorZTE1YzU1NGNkNDNlYjIzYmMwYTUyOGE0ZTg3NDFkYTliYmVjOTYwNyB2My4zLjBiMQorNDk3MmE4ZjFiMmFhM2Q3Y2RkNjRkYzk2YWE3ZmExMTJmZTFlYTM0MyB2My4zLjBiMgorOGJiNWM3YmM0NmJhNDM4MDQ0ODBmM2UzMjhlMWZhOTU2NjcyYzg4NSB2My4zLjByYzEKZGlmZiAtLWdpdCBhLy5oZ3RvdWNoIGIvLmhndG91Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ5MzZmYQotLS0gL2Rldi9udWxsCisrKyBiLy5oZ3RvdWNoCkBAIC0wLDAgKzEsMTIgQEAKKyMgLSotIE1ha2VmaWxlIC0qLQorIyBEZWZpbmUgZGVwZW5kZW5jaWVzIG9mIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBjaGVja2VkIGludG8gaGcuCisjIFRoZSBzeW50YXggb2YgdGhpcyBmaWxlIHVzZXMgbWFrZSBydWxlIGRlcGVuZGVuY2llcywgd2l0aG91dCBhY3Rpb25zCisKK1B5dGhvbi9pbXBvcnRsaWIuaDogTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFB5dGhvbi9mcmVlemVfaW1wb3J0bGliLnB5CisKK0luY2x1ZGUvYXN0Lmg6IFBhcnNlci9QeXRob24uYXNkbCBQYXJzZXIvYXNkbC5weSBQYXJzZXIvYXNkbF9jLnB5CitQeXRob24vUHl0aG9uLWFzdC5jOiBJbmNsdWRlL2FzdC5oCisKK1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oOiBQeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkgTGliL29wY29kZS5weQorCitPYmplY3RzL3R5cGVzbG90cy5pbmM6IEluY2x1ZGUvdHlwZXNsb3RzLmggT2JqZWN0cy90eXBlc2xvdHMucHkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Eb2MvQUNLUy50eHQgYi9Eb2MvQUNLUy50eHQKaW5kZXggMDNlMWE2Yi4uNTYzNmUwNSAxMDA2NDQKLS0tIGEvRG9jL0FDS1MudHh0CisrKyBiL0RvYy9BQ0tTLnR4dApAQCAtNjIsNiArNjIsNyBAQAogICAgKiBTdGVmYW4gRnJhbmtlCiAgICAqIEppbSBGdWx0b24KICAgICogUGV0ZXIgRnVuaworICAgKiBFdGhhbiBGdXJtYW4KICAgICogTGVsZSBHYWlmYXgKICAgICogTWF0dGhldyBHYWxsYWdoZXIKICAgICogR2FicmllbCBHZW5lbGxpbmEKQEAgLTIxMSw2ICsyMTIsNyBAQAogICAgKiBEYXZpZCBUdXJuZXIKICAgICogU2FuZHJvIFRvc2kKICAgICogVmlsbGUgVmFpbmlvCisgICAqIE5hZGVlbSBWYXdkYQogICAgKiBNYXJ0aWpuIFZyaWVzCiAgICAqIENoYXJsZXMgRy4gV2FsZG1hbgogICAgKiBHcmVnIFdhcmQKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9hcmcucnN0IGIvRG9jL2MtYXBpL2FyZy5yc3QKaW5kZXggZDRkZGE3Yy4uYjI4YWE1ZiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2FyZy5yc3QKKysrIGIvRG9jL2MtYXBpL2FyZy5yc3QKQEAgLTE0Niw3ICsxNDYsNyBAQAogICAgTGlrZSBgYHUjYGAsIGJ1dCB0aGUgUHl0aG9uIG9iamVjdCBtYXkgYWxzbyBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZSB0aGUKICAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIHBvaW50ZXIgaXMgc2V0IHRvICpOVUxMKi4KIAotYGBVYGAgKDpjbGFzczpgc3RyYCkgW1B5VW5pY29kZU9iamVjdCBcKl0KK2BgVWBgICg6Y2xhc3M6YHN0cmApIFtQeU9iamVjdCBcKl0KICAgIFJlcXVpcmVzIHRoYXQgdGhlIFB5dGhvbiBvYmplY3QgaXMgYSBVbmljb2RlIG9iamVjdCwgd2l0aG91dCBhdHRlbXB0aW5nCiAgICBhbnkgY29udmVyc2lvbi4gIFJhaXNlcyA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZSBvYmplY3QgaXMgbm90IGEgVW5pY29kZQogICAgb2JqZWN0LiAgVGhlIEMgdmFyaWFibGUgbWF5IGFsc28gYmUgZGVjbGFyZWQgYXMgOmM6dHlwZTpgUHlPYmplY3RcKmAuCkBAIC0yNjAsOSArMjYwLDEyIEBACiBgYG5gYCAoOmNsYXNzOmBpbnRgKSBbUHlfc3NpemVfdF0KICAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgUHlfc3NpemVfdGAuCiAKLWBgY2BgICg6Y2xhc3M6YGJ5dGVzYCBvZiBsZW5ndGggMSkgW2NoYXJdCi0gICBDb252ZXJ0IGEgUHl0aG9uIGJ5dGUsIHJlcHJlc2VudGVkIGFzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG9mIGxlbmd0aCAxLAotICAgdG8gYSBDIDpjOnR5cGU6YGNoYXJgLgorYGBjYGAgKDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YCBvZiBsZW5ndGggMSkgW2NoYXJdCisgICBDb252ZXJ0IGEgUHl0aG9uIGJ5dGUsIHJlcHJlc2VudGVkIGFzIGEgOmNsYXNzOmBieXRlc2Agb3IKKyAgIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3Qgb2YgbGVuZ3RoIDEsIHRvIGEgQyA6Yzp0eXBlOmBjaGFyYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFsbG93IDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3RzLgogCiBgYENgYCAoOmNsYXNzOmBzdHJgIG9mIGxlbmd0aCAxKSBbaW50XQogICAgQ29udmVydCBhIFB5dGhvbiBjaGFyYWN0ZXIsIHJlcHJlc2VudGVkIGFzIGEgOmNsYXNzOmBzdHJgIG9iamVjdCBvZgpAQCAtMzE1LDYgKzMxOCwxNSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIGBgUHlfQ0xFQU5VUF9TVVBQT1JURURgYCB3YXMgYWRkZWQuCiAKK2BgcGBgICg6Y2xhc3M6YGJvb2xgKSBbaW50XQorICAgVGVzdHMgdGhlIHZhbHVlIHBhc3NlZCBpbiBmb3IgdHJ1dGggKGEgYm9vbGVhbiAqKnAqKlxyZWRpY2F0ZSkgYW5kIGNvbnZlcnRzCisgICB0aGUgcmVzdWx0IHRvIGl0cyBlcXVpdmFsZW50IEMgdHJ1ZS9mYWxzZSBpbnRlZ2VyIHZhbHVlLgorICAgU2V0cyB0aGUgaW50IHRvIDEgaWYgdGhlIGV4cHJlc3Npb24gd2FzIHRydWUgYW5kIDAgaWYgaXQgd2FzIGZhbHNlLgorICAgVGhpcyBhY2NlcHRzIGFueSB2YWxpZCBQeXRob24gdmFsdWUuICBTZWUgOnJlZjpgdHJ1dGhgIGZvciBtb3JlCisgICBpbmZvcm1hdGlvbiBhYm91dCBob3cgUHl0aG9uIHRlc3RzIHZhbHVlcyBmb3IgdHJ1dGguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiBgYChpdGVtcylgYCAoOmNsYXNzOmB0dXBsZWApIFsqbWF0Y2hpbmctaXRlbXMqXQogICAgVGhlIG9iamVjdCBtdXN0IGJlIGEgUHl0aG9uIHNlcXVlbmNlIHdob3NlIGxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIGZvcm1hdCB1bml0cwogICAgaW4gKml0ZW1zKi4gIFRoZSBDIGFyZ3VtZW50cyBtdXN0IGNvcnJlc3BvbmQgdG8gdGhlIGluZGl2aWR1YWwgZm9ybWF0IHVuaXRzIGluCkBAIC0zMzYsNiArMzQ4LDE1IEBACiAgICA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlYCBkb2VzIG5vdCB0b3VjaCB0aGUgY29udGVudHMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgQwogICAgdmFyaWFibGUocykuCiAKK2BgJGBgCisgICA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNgIG9ubHk6CisgICBJbmRpY2F0ZXMgdGhhdCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyBpbiB0aGUgUHl0aG9uIGFyZ3VtZW50IGxpc3QgYXJlCisgICBrZXl3b3JkLW9ubHkuICBDdXJyZW50bHksIGFsbCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIG11c3QgYWxzbyBiZSBvcHRpb25hbAorICAgYXJndW1lbnRzLCBzbyBgYHxgYCBtdXN0IGFsd2F5cyBiZSBzcGVjaWZpZWQgYmVmb3JlIGBgJGBgIGluIHRoZSBmb3JtYXQKKyAgIHN0cmluZy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIGBgOmBgCiAgICBUaGUgbGlzdCBvZiBmb3JtYXQgdW5pdHMgZW5kcyBoZXJlOyB0aGUgc3RyaW5nIGFmdGVyIHRoZSBjb2xvbiBpcyB1c2VkIGFzIHRoZQogICAgZnVuY3Rpb24gbmFtZSBpbiBlcnJvciBtZXNzYWdlcyAodGhlICJhc3NvY2lhdGVkIHZhbHVlIiBvZiB0aGUgZXhjZXB0aW9uIHRoYXQKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9idWZmZXIucnN0IGIvRG9jL2MtYXBpL2J1ZmZlci5yc3QKaW5kZXggZDk4ZWNlMy4uZDYzNjkzNSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2J1ZmZlci5yc3QKKysrIGIvRG9jL2MtYXBpL2J1ZmZlci5yc3QKQEAgLTcsNiArNyw3IEBACiAKIC4uIHNlY3Rpb25hdXRob3I6OiBHcmVnIFN0ZWluIDxnc3RlaW5AbHlyYS5vcmc+CiAuLiBzZWN0aW9uYXV0aG9yOjogQmVuamFtaW4gUGV0ZXJzb24KKy4uIHNlY3Rpb25hdXRob3I6OiBTdGVmYW4gS3JhaAogCiAKIC4uIGluZGV4OjoKQEAgLTIwLDcgKzIxLDcgQEAKIAogV2hpbGUgZWFjaCBvZiB0aGVzZSB0eXBlcyBoYXZlIHRoZWlyIG93biBzZW1hbnRpY3MsIHRoZXkgc2hhcmUgdGhlIGNvbW1vbgogY2hhcmFjdGVyaXN0aWMgb2YgYmVpbmcgYmFja2VkIGJ5IGEgcG9zc2libHkgbGFyZ2UgbWVtb3J5IGJ1ZmZlci4gIEl0IGlzCi10aGVuIGRlc2lyZWFibGUsIGluIHNvbWUgc2l0dWF0aW9ucywgdG8gYWNjZXNzIHRoYXQgYnVmZmVyIGRpcmVjdGx5IGFuZAordGhlbiBkZXNpcmFibGUsIGluIHNvbWUgc2l0dWF0aW9ucywgdG8gYWNjZXNzIHRoYXQgYnVmZmVyIGRpcmVjdGx5IGFuZAogd2l0aG91dCBpbnRlcm1lZGlhdGUgY29weWluZy4KIAogUHl0aG9uIHByb3ZpZGVzIHN1Y2ggYSBmYWNpbGl0eSBhdCB0aGUgQyBsZXZlbCBpbiB0aGUgZm9ybSBvZiB0aGUgKmJ1ZmZlcgpAQCAtNjAsOCArNjEsMTAgQEAKIHJlc291cmNlIGxlYWtzLgogCiAKLVRoZSBidWZmZXIgc3RydWN0dXJlCi09PT09PT09PT09PT09PT09PT09PQorLi4gX2J1ZmZlci1zdHJ1Y3R1cmU6CisKK0J1ZmZlciBzdHJ1Y3R1cmUKKz09PT09PT09PT09PT09PT0KIAogQnVmZmVyIHN0cnVjdHVyZXMgKG9yIHNpbXBseSAiYnVmZmVycyIpIGFyZSB1c2VmdWwgYXMgYSB3YXkgdG8gZXhwb3NlIHRoZQogYmluYXJ5IGRhdGEgZnJvbSBhbm90aGVyIG9iamVjdCB0byB0aGUgUHl0aG9uIHByb2dyYW1tZXIuICBUaGV5IGNhbiBhbHNvIGJlCkBAIC03OCw5NiArODEsMzM5IEBACiBhcm91bmQgYSBidWZmZXIgaXMgbmVlZGVkLCBhIDpyZWY6YG1lbW9yeXZpZXcgPG1lbW9yeXZpZXctb2JqZWN0cz5gIG9iamVjdAogY2FuIGJlIGNyZWF0ZWQuCiAKK0ZvciBzaG9ydCBpbnN0cnVjdGlvbnMgaG93IHRvIHdyaXRlIGFuIGV4cG9ydGluZyBvYmplY3QsIHNlZQorOnJlZjpgQnVmZmVyIE9iamVjdCBTdHJ1Y3R1cmVzIDxidWZmZXItc3RydWN0cz5gLiBGb3Igb2J0YWluaW5nCithIGJ1ZmZlciwgc2VlIDpjOmZ1bmM6YFB5T2JqZWN0X0dldEJ1ZmZlcmAuCiAKIC4uIGM6dHlwZTo6IFB5X2J1ZmZlcgogCi0gICAuLiBjOm1lbWJlcjo6IHZvaWQgKmJ1ZgorICAgLi4gYzptZW1iZXI6OiB2b2lkIFwqb2JqCiAKLSAgICAgIEEgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIG1lbW9yeSBmb3IgdGhlIG9iamVjdC4KKyAgICAgIEEgbmV3IHJlZmVyZW5jZSB0byB0aGUgZXhwb3J0aW5nIG9iamVjdC4gVGhlIHJlZmVyZW5jZSBpcyBvd25lZCBieQorICAgICAgdGhlIGNvbnN1bWVyIGFuZCBhdXRvbWF0aWNhbGx5IGRlY3JlbWVudGVkIGFuZCBzZXQgdG8gKk5VTEwqIGJ5CisgICAgICA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYC4gVGhlIGZpZWxkIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSByZXR1cm4KKyAgICAgIHZhbHVlIG9mIGFueSBzdGFuZGFyZCBDLUFQSSBmdW5jdGlvbi4KKworICAgICAgQXMgYSBzcGVjaWFsIGNhc2UsIGZvciAqdGVtcG9yYXJ5KiBidWZmZXJzIHRoYXQgYXJlIHdyYXBwZWQgYnkKKyAgICAgIDpjOmZ1bmM6YFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyYCBvciA6YzpmdW5jOmBQeUJ1ZmZlcl9GaWxsSW5mb2AKKyAgICAgIHRoaXMgZmllbGQgaXMgKk5VTEwqLiBJbiBnZW5lcmFsLCBleHBvcnRpbmcgb2JqZWN0cyBNVVNUIE5PVAorICAgICAgdXNlIHRoaXMgc2NoZW1lLgorCisgICAuLiBjOm1lbWJlcjo6IHZvaWQgXCpidWYKKworICAgICAgQSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgbG9naWNhbCBzdHJ1Y3R1cmUgZGVzY3JpYmVkIGJ5IHRoZSBidWZmZXIKKyAgICAgIGZpZWxkcy4gVGhpcyBjYW4gYmUgYW55IGxvY2F0aW9uIHdpdGhpbiB0aGUgdW5kZXJseWluZyBwaHlzaWNhbCBtZW1vcnkKKyAgICAgIGJsb2NrIG9mIHRoZSBleHBvcnRlci4gRm9yIGV4YW1wbGUsIHdpdGggbmVnYXRpdmUgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN0cmlkZXNgCisgICAgICB0aGUgdmFsdWUgbWF5IHBvaW50IHRvIHRoZSBlbmQgb2YgdGhlIG1lbW9yeSBibG9jay4KKworICAgICAgRm9yIGNvbnRpZ3VvdXMgYXJyYXlzLCB0aGUgdmFsdWUgcG9pbnRzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1lbW9yeQorICAgICAgYmxvY2suCiAKICAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCBsZW4KLSAgICAgIDpub2luZGV4OgogCi0gICAgICBUaGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBtZW1vcnkgaW4gYnl0ZXMuCisgICAgICBgYHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemVgYC4gRm9yIGNvbnRpZ3VvdXMgYXJyYXlzLCB0aGlzIGlzIHRoZSBsZW5ndGgKKyAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIG1lbW9yeSBibG9jay4gRm9yIG5vbi1jb250aWd1b3VzIGFycmF5cywgaXQgaXMgdGhlIGxlbmd0aAorICAgICAgdGhhdCB0aGUgbG9naWNhbCBzdHJ1Y3R1cmUgd291bGQgaGF2ZSBpZiBpdCB3ZXJlIGNvcGllZCB0byBhIGNvbnRpZ3VvdXMKKyAgICAgIHJlcHJlc2VudGF0aW9uLgorCisgICAgICBBY2Nlc3NpbmcgYGAoKGNoYXIgKilidWYpWzBdIHVwIHRvICgoY2hhciAqKWJ1ZilbbGVuLTFdYGAgaXMgb25seSB2YWxpZAorICAgICAgaWYgdGhlIGJ1ZmZlciBoYXMgYmVlbiBvYnRhaW5lZCBieSBhIHJlcXVlc3QgdGhhdCBndWFyYW50ZWVzIGNvbnRpZ3VpdHkuIEluCisgICAgICBtb3N0IGNhc2VzIHN1Y2ggYSByZXF1ZXN0IHdpbGwgYmUgOmM6bWFjcm86YFB5QlVGX1NJTVBMRWAgb3IgOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYC4KIAogICAgLi4gYzptZW1iZXI6OiBpbnQgcmVhZG9ubHkKIAotICAgICAgQW4gaW5kaWNhdG9yIG9mIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyByZWFkIG9ubHkuCi0KLSAgIC4uIGM6bWVtYmVyOjogY29uc3QgY2hhciAqZm9ybWF0Ci0gICAgICA6bm9pbmRleDoKLQotICAgICAgQSAqTlVMTCogdGVybWluYXRlZCBzdHJpbmcgaW4gOm1vZDpgc3RydWN0YCBtb2R1bGUgc3R5bGUgc3ludGF4IGdpdmluZwotICAgICAgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbGVtZW50cyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgYnVmZmVyLiAgSWYgdGhpcyBpcwotICAgICAgKk5VTEwqLCBgYCJCImBgICh1bnNpZ25lZCBieXRlcykgaXMgYXNzdW1lZC4KLQotICAgLi4gYzptZW1iZXI6OiBpbnQgbmRpbQotCi0gICAgICBUaGUgbnVtYmVyIG9mIGRpbWVuc2lvbnMgdGhlIG1lbW9yeSByZXByZXNlbnRzIGFzIGEgbXVsdGktZGltZW5zaW9uYWwKLSAgICAgIGFycmF5LiAgSWYgaXQgaXMgMCwgOmM6ZGF0YTpgc3RyaWRlc2AgYW5kIDpjOmRhdGE6YHN1Ym9mZnNldHNgIG11c3QgYmUKLSAgICAgICpOVUxMKi4KLQotICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90ICpzaGFwZQotCi0gICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YFxzIHRoZSBsZW5ndGggb2YgOmM6ZGF0YTpgbmRpbWAgZ2l2aW5nIHRoZQotICAgICAgc2hhcGUgb2YgdGhlIG1lbW9yeSBhcyBhIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5LiAgTm90ZSB0aGF0Ci0gICAgICBgYCgoKnNoYXBlKVswXSAqIC4uLiAqICgqc2hhcGUpW25kaW1zLTFdKSppdGVtc2l6ZWBgIHNob3VsZCBiZSBlcXVhbCB0bwotICAgICAgOmM6ZGF0YTpgbGVuYC4KLQotICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90ICpzdHJpZGVzCi0KLSAgICAgIEFuIGFycmF5IG9mIDpjOnR5cGU6YFB5X3NzaXplX3RgXHMgdGhlIGxlbmd0aCBvZiA6YzpkYXRhOmBuZGltYCBnaXZpbmcgdGhlCi0gICAgICBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCB0byBnZXQgdG8gYSBuZXcgZWxlbWVudCBpbiBlYWNoIGRpbWVuc2lvbi4KLQotICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90ICpzdWJvZmZzZXRzCi0KLSAgICAgIEFuIGFycmF5IG9mIDpjOnR5cGU6YFB5X3NzaXplX3RgXHMgdGhlIGxlbmd0aCBvZiA6YzpkYXRhOmBuZGltYC4gIElmIHRoZXNlCi0gICAgICBzdWJvZmZzZXQgbnVtYmVycyBhcmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIHRoZW4gdGhlIHZhbHVlIHN0b3JlZAotICAgICAgYWxvbmcgdGhlIGluZGljYXRlZCBkaW1lbnNpb24gaXMgYSBwb2ludGVyIGFuZCB0aGUgc3Vib2Zmc2V0IHZhbHVlCi0gICAgICBkaWN0YXRlcyBob3cgbWFueSBieXRlcyB0byBhZGQgdG8gdGhlIHBvaW50ZXIgYWZ0ZXIgZGUtcmVmZXJlbmNpbmcuIEEKLSAgICAgIHN1Ym9mZnNldCB2YWx1ZSB0aGF0IGl0IG5lZ2F0aXZlIGluZGljYXRlcyB0aGF0IG5vIGRlLXJlZmVyZW5jaW5nIHNob3VsZAotICAgICAgb2NjdXIgKHN0cmlkaW5nIGluIGEgY29udGlndW91cyBtZW1vcnkgYmxvY2spLgotCi0gICAgICBIZXJlIGlzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZWxlbWVudCBpbiBhbiBOLUQgYXJyYXkKLSAgICAgIHBvaW50ZWQgdG8gYnkgYW4gTi1kaW1lbnNpb25hbCBpbmRleCB3aGVuIHRoZXJlIGFyZSBib3RoIG5vbi1OVUxMIHN0cmlkZXMKLSAgICAgIGFuZCBzdWJvZmZzZXRzOjoKLQotICAgICAgICAgIHZvaWQgKmdldF9pdGVtX3BvaW50ZXIoaW50IG5kaW0sIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCAqc3RyaWRlcywKLSAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3Vib2Zmc2V0cywgUHlfc3NpemVfdCAqaW5kaWNlcykgewotICAgICAgICAgICAgICBjaGFyICpwb2ludGVyID0gKGNoYXIqKWJ1ZjsKLSAgICAgICAgICAgICAgaW50IGk7Ci0gICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZGltOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgIHBvaW50ZXIgKz0gc3RyaWRlc1tpXSAqIGluZGljZXNbaV07Ci0gICAgICAgICAgICAgICAgICBpZiAoc3Vib2Zmc2V0c1tpXSA+PTAgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgcG9pbnRlciA9ICooKGNoYXIqKilwb2ludGVyKSArIHN1Ym9mZnNldHNbaV07Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgcmV0dXJuICh2b2lkKilwb2ludGVyOwotICAgICAgICAgICB9Ci0KKyAgICAgIEFuIGluZGljYXRvciBvZiB3aGV0aGVyIHRoZSBidWZmZXIgaXMgcmVhZC1vbmx5LiBUaGlzIGZpZWxkIGlzIGNvbnRyb2xsZWQKKyAgICAgIGJ5IHRoZSA6YzptYWNybzpgUHlCVUZfV1JJVEFCTEVgIGZsYWcuCiAKICAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCBpdGVtc2l6ZQogCi0gICAgICBUaGlzIGlzIGEgc3RvcmFnZSBmb3IgdGhlIGl0ZW1zaXplIChpbiBieXRlcykgb2YgZWFjaCBlbGVtZW50IG9mIHRoZQotICAgICAgc2hhcmVkIG1lbW9yeS4gSXQgaXMgdGVjaG5pY2FsbHkgdW4tbmVjZXNzYXJ5IGFzIGl0IGNhbiBiZSBvYnRhaW5lZAotICAgICAgdXNpbmcgOmM6ZnVuYzpgUHlCdWZmZXJfU2l6ZUZyb21Gb3JtYXRgLCBob3dldmVyIGFuIGV4cG9ydGVyIG1heSBrbm93Ci0gICAgICB0aGlzIGluZm9ybWF0aW9uIHdpdGhvdXQgcGFyc2luZyB0aGUgZm9ybWF0IHN0cmluZyBhbmQgaXQgaXMgbmVjZXNzYXJ5Ci0gICAgICB0byBrbm93IHRoZSBpdGVtc2l6ZSBmb3IgcHJvcGVyIGludGVycHJldGF0aW9uIG9mIHN0cmlkaW5nLiBUaGVyZWZvcmUsCi0gICAgICBzdG9yaW5nIGl0IGlzIG1vcmUgY29udmVuaWVudCBhbmQgZmFzdGVyLgorICAgICAgSXRlbSBzaXplIGluIGJ5dGVzIG9mIGEgc2luZ2xlIGVsZW1lbnQuIFNhbWUgYXMgdGhlIHZhbHVlIG9mIDpmdW5jOmBzdHJ1Y3QuY2FsY3NpemVgCisgICAgICBjYWxsZWQgb24gbm9uLU5VTEwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmZvcm1hdGAgdmFsdWVzLgogCi0gICAuLiBjOm1lbWJlcjo6IHZvaWQgKmludGVybmFsCisgICAgICBJbXBvcnRhbnQgZXhjZXB0aW9uOiBJZiBhIGNvbnN1bWVyIHJlcXVlc3RzIGEgYnVmZmVyIHdpdGhvdXQgdGhlCisgICAgICA6YzptYWNybzpgUHlCVUZfRk9STUFUYCBmbGFnLCA6YzptZW1iZXI6YH5QeV9CdWZmZXIuZm9ybWF0YCB3aWxsCisgICAgICBiZSBzZXQgdG8gICpOVUxMKiwgIGJ1dCA6YzptZW1iZXI6YH5QeV9idWZmZXIuaXRlbXNpemVgIHN0aWxsIGhhcworICAgICAgdGhlIHZhbHVlIGZvciB0aGUgb3JpZ2luYWwgZm9ybWF0LgorCisgICAgICBJZiA6YzptZW1iZXI6YH5QeV9CdWZmZXIuc2hhcGVgIGlzIHByZXNlbnQsIHRoZSBlcXVhbGl0eQorICAgICAgYGBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID09IGxlbmBgIHN0aWxsIGhvbGRzIGFuZCB0aGUgY29uc3VtZXIKKyAgICAgIGNhbiB1c2UgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYCB0byBuYXZpZ2F0ZSB0aGUgYnVmZmVyLgorCisgICAgICBJZiA6YzptZW1iZXI6YH5QeV9CdWZmZXIuc2hhcGVgIGlzICpOVUxMKiBhcyBhIHJlc3VsdCBvZiBhIDpjOm1hY3JvOmBQeUJVRl9TSU1QTEVgCisgICAgICBvciBhIDpjOm1hY3JvOmBQeUJVRl9XUklUQUJMRWAgcmVxdWVzdCwgdGhlIGNvbnN1bWVyIG11c3QgZGlzcmVnYXJkCisgICAgICA6YzptZW1iZXI6YH5QeV9idWZmZXIuaXRlbXNpemVgIGFuZCBhc3N1bWUgYGBpdGVtc2l6ZSA9PSAxYGAuCisKKyAgIC4uIGM6bWVtYmVyOjogY29uc3QgY2hhciBcKmZvcm1hdAorCisgICAgICBBICpOVUwqIHRlcm1pbmF0ZWQgc3RyaW5nIGluIDptb2Q6YHN0cnVjdGAgbW9kdWxlIHN0eWxlIHN5bnRheCBkZXNjcmliaW5nCisgICAgICB0aGUgY29udGVudHMgb2YgYSBzaW5nbGUgaXRlbS4gSWYgdGhpcyBpcyAqTlVMTCosIGBgIkIiYGAgKHVuc2lnbmVkIGJ5dGVzKQorICAgICAgaXMgYXNzdW1lZC4KKworICAgICAgVGhpcyBmaWVsZCBpcyBjb250cm9sbGVkIGJ5IHRoZSA6YzptYWNybzpgUHlCVUZfRk9STUFUYCBmbGFnLgorCisgICAuLiBjOm1lbWJlcjo6IGludCBuZGltCisKKyAgICAgIFRoZSBudW1iZXIgb2YgZGltZW5zaW9ucyB0aGUgbWVtb3J5IHJlcHJlc2VudHMgYXMgYW4gbi1kaW1lbnNpb25hbCBhcnJheS4KKyAgICAgIElmIGl0IGlzIDAsIDpjOm1lbWJlcjpgflB5X0J1ZmZlci5idWZgIHBvaW50cyB0byBhIHNpbmdsZSBpdGVtIHJlcHJlc2VudGluZworICAgICAgYSBzY2FsYXIuIEluIHRoaXMgY2FzZSwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnNoYXBlYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN0cmlkZXNgCisgICAgICBhbmQgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN1Ym9mZnNldHNgIE1VU1QgYmUgKk5VTEwqLgorCisgICAgICBUaGUgbWFjcm8gOmM6bWFjcm86YFB5QlVGX01BWF9ORElNYCBsaW1pdHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpbWVuc2lvbnMKKyAgICAgIHRvIDY0LiBFeHBvcnRlcnMgTVVTVCByZXNwZWN0IHRoaXMgbGltaXQsIGNvbnN1bWVycyBvZiBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgYnVmZmVycyBTSE9VTEQgYmUgYWJsZSB0byBoYW5kbGUgdXAgdG8gOmM6bWFjcm86YFB5QlVGX01BWF9ORElNYCBkaW1lbnNpb25zLgorCisgICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgXCpzaGFwZQorCisgICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YCBvZiBsZW5ndGggOmM6bWVtYmVyOmB+UHlfYnVmZmVyLm5kaW1gCisgICAgICBpbmRpY2F0aW5nIHRoZSBzaGFwZSBvZiB0aGUgbWVtb3J5IGFzIGFuIG4tZGltZW5zaW9uYWwgYXJyYXkuIE5vdGUgdGhhdAorICAgICAgYGBzaGFwZVswXSAqIC4uLiAqIHNoYXBlW25kaW0tMV0gKiBpdGVtc2l6ZWBgIE1VU1QgYmUgZXF1YWwgdG8KKyAgICAgIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5sZW5gLgorCisgICAgICBTaGFwZSB2YWx1ZXMgYXJlIHJlc3RyaWN0ZWQgdG8gYGBzaGFwZVtuXSA+PSAwYGAuIFRoZSBjYXNlCisgICAgICBgYHNoYXBlW25dID09IDBgYCByZXF1aXJlcyBzcGVjaWFsIGF0dGVudGlvbi4gU2VlIGBjb21wbGV4IGFycmF5c2BfCisgICAgICBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKworICAgICAgVGhlIHNoYXBlIGFycmF5IGlzIHJlYWQtb25seSBmb3IgdGhlIGNvbnN1bWVyLgorCisgICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgXCpzdHJpZGVzCisKKyAgICAgIEFuIGFycmF5IG9mIDpjOnR5cGU6YFB5X3NzaXplX3RgIG9mIGxlbmd0aCA6YzptZW1iZXI6YH5QeV9idWZmZXIubmRpbWAKKyAgICAgIGdpdmluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgdG8gZ2V0IHRvIGEgbmV3IGVsZW1lbnQgaW4gZWFjaAorICAgICAgZGltZW5zaW9uLgorCisgICAgICBTdHJpZGUgdmFsdWVzIGNhbiBiZSBhbnkgaW50ZWdlci4gRm9yIHJlZ3VsYXIgYXJyYXlzLCBzdHJpZGVzIGFyZQorICAgICAgdXN1YWxseSBwb3NpdGl2ZSwgYnV0IGEgY29uc3VtZXIgTVVTVCBiZSBhYmxlIHRvIGhhbmRsZSB0aGUgY2FzZQorICAgICAgYGBzdHJpZGVzW25dIDw9IDBgYC4gU2VlIGBjb21wbGV4IGFycmF5c2BfIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgorCisgICAgICBUaGUgc3RyaWRlcyBhcnJheSBpcyByZWFkLW9ubHkgZm9yIHRoZSBjb25zdW1lci4KKworICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90IFwqc3Vib2Zmc2V0cworCisgICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YCBvZiBsZW5ndGggOmM6bWVtYmVyOmB+UHlfYnVmZmVyLm5kaW1gLgorICAgICAgSWYgYGBzdWJvZmZzZXRzW25dID49IDBgYCwgdGhlIHZhbHVlcyBzdG9yZWQgYWxvbmcgdGhlIG50aCBkaW1lbnNpb24gYXJlCisgICAgICBwb2ludGVycyBhbmQgdGhlIHN1Ym9mZnNldCB2YWx1ZSBkaWN0YXRlcyBob3cgbWFueSBieXRlcyB0byBhZGQgdG8gZWFjaAorICAgICAgcG9pbnRlciBhZnRlciBkZS1yZWZlcmVuY2luZy4gQSBzdWJvZmZzZXQgdmFsdWUgdGhhdCBpcyBuZWdhdGl2ZQorICAgICAgaW5kaWNhdGVzIHRoYXQgbm8gZGUtcmVmZXJlbmNpbmcgc2hvdWxkIG9jY3VyIChzdHJpZGluZyBpbiBhIGNvbnRpZ3VvdXMKKyAgICAgIG1lbW9yeSBibG9jaykuCisKKyAgICAgIFRoaXMgdHlwZSBvZiBhcnJheSByZXByZXNlbnRhdGlvbiBpcyB1c2VkIGJ5IHRoZSBQeXRob24gSW1hZ2luZyBMaWJyYXJ5CisgICAgICAoUElMKS4gU2VlIGBjb21wbGV4IGFycmF5c2BfIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIGhvdyB0byBhY2Nlc3MgZWxlbWVudHMKKyAgICAgIG9mIHN1Y2ggYW4gYXJyYXkuCisKKyAgICAgIFRoZSBzdWJvZmZzZXRzIGFycmF5IGlzIHJlYWQtb25seSBmb3IgdGhlIGNvbnN1bWVyLgorCisgICAuLiBjOm1lbWJlcjo6IHZvaWQgXCppbnRlcm5hbAogCiAgICAgICBUaGlzIGlzIGZvciB1c2UgaW50ZXJuYWxseSBieSB0aGUgZXhwb3J0aW5nIG9iamVjdC4gRm9yIGV4YW1wbGUsIHRoaXMKICAgICAgIG1pZ2h0IGJlIHJlLWNhc3QgYXMgYW4gaW50ZWdlciBieSB0aGUgZXhwb3J0ZXIgYW5kIHVzZWQgdG8gc3RvcmUgZmxhZ3MKICAgICAgIGFib3V0IHdoZXRoZXIgb3Igbm90IHRoZSBzaGFwZSwgc3RyaWRlcywgYW5kIHN1Ym9mZnNldHMgYXJyYXlzIG11c3QgYmUKLSAgICAgIGZyZWVkIHdoZW4gdGhlIGJ1ZmZlciBpcyByZWxlYXNlZC4gVGhlIGNvbnN1bWVyIHNob3VsZCBuZXZlciBhbHRlciB0aGlzCisgICAgICBmcmVlZCB3aGVuIHRoZSBidWZmZXIgaXMgcmVsZWFzZWQuIFRoZSBjb25zdW1lciBNVVNUIE5PVCBhbHRlciB0aGlzCiAgICAgICB2YWx1ZS4KIAorLi4gX2J1ZmZlci1yZXF1ZXN0LXR5cGVzOgorCitCdWZmZXIgcmVxdWVzdCB0eXBlcworPT09PT09PT09PT09PT09PT09PT0KKworQnVmZmVycyBhcmUgdXN1YWxseSBvYnRhaW5lZCBieSBzZW5kaW5nIGEgYnVmZmVyIHJlcXVlc3QgdG8gYW4gZXhwb3J0aW5nCitvYmplY3QgdmlhIDpjOmZ1bmM6YFB5T2JqZWN0X0dldEJ1ZmZlcmAuIFNpbmNlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSBsb2dpY2FsCitzdHJ1Y3R1cmUgb2YgdGhlIG1lbW9yeSBjYW4gdmFyeSBkcmFzdGljYWxseSwgdGhlIGNvbnN1bWVyIHVzZXMgdGhlICpmbGFncyoKK2FyZ3VtZW50IHRvIHNwZWNpZnkgdGhlIGV4YWN0IGJ1ZmZlciB0eXBlIGl0IGNhbiBoYW5kbGUuCisKK0FsbCA6YzpkYXRhOmBQeV9idWZmZXJgIGZpZWxkcyBhcmUgdW5hbWJpZ3VvdXNseSBkZWZpbmVkIGJ5IHRoZSByZXF1ZXN0Cit0eXBlLgorCityZXF1ZXN0LWluZGVwZW5kZW50IGZpZWxkcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBub3QgaW5mbHVlbmNlZCBieSAqZmxhZ3MqIGFuZCBtdXN0IGFsd2F5cyBiZSBmaWxsZWQgaW4KK3dpdGggdGhlIGNvcnJlY3QgdmFsdWVzOiA6YzptZW1iZXI6YH5QeV9idWZmZXIub2JqYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmJ1ZmAsCis6YzptZW1iZXI6YH5QeV9idWZmZXIubGVuYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLm5kaW1gLgorCisKK3JlYWRvbmx5LCBmb3JtYXQKK35+fn5+fn5+fn5+fn5+fn4KKworICAgLi4gYzptYWNybzo6IFB5QlVGX1dSSVRBQkxFCisKKyAgICAgIENvbnRyb2xzIHRoZSA6YzptZW1iZXI6YH5QeV9idWZmZXIucmVhZG9ubHlgIGZpZWxkLiBJZiBzZXQsIHRoZSBleHBvcnRlcgorICAgICAgTVVTVCBwcm92aWRlIGEgd3JpdGFibGUgYnVmZmVyIG9yIGVsc2UgcmVwb3J0IGZhaWx1cmUuIE90aGVyd2lzZSwgdGhlCisgICAgICBleHBvcnRlciBNQVkgcHJvdmlkZSBlaXRoZXIgYSByZWFkLW9ubHkgb3Igd3JpdGFibGUgYnVmZmVyLCBidXQgdGhlIGNob2ljZQorICAgICAgTVVTVCBiZSBjb25zaXN0ZW50IGZvciBhbGwgY29uc3VtZXJzLgorCisgICAuLiBjOm1hY3JvOjogUHlCVUZfRk9STUFUCisKKyAgICAgIENvbnRyb2xzIHRoZSA6YzptZW1iZXI6YH5QeV9idWZmZXIuZm9ybWF0YCBmaWVsZC4gSWYgc2V0LCB0aGlzIGZpZWxkIE1VU1QKKyAgICAgIGJlIGZpbGxlZCBpbiBjb3JyZWN0bHkuIE90aGVyd2lzZSwgdGhpcyBmaWVsZCBNVVNUIGJlICpOVUxMKi4KKworCis6YzptYWNybzpgUHlCVUZfV1JJVEFCTEVgIGNhbiBiZSBcfCdkIHRvIGFueSBvZiB0aGUgZmxhZ3MgaW4gdGhlIG5leHQgc2VjdGlvbi4KK1NpbmNlIDpjOm1hY3JvOmBQeUJVRl9TSU1QTEVgIGlzIGRlZmluZWQgYXMgMCwgOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYAorY2FuIGJlIHVzZWQgYXMgYSBzdGFuZC1hbG9uZSBmbGFnIHRvIHJlcXVlc3QgYSBzaW1wbGUgd3JpdGFibGUgYnVmZmVyLgorCis6YzptYWNybzpgUHlCVUZfRk9STUFUYCBjYW4gYmUgXHwnZCB0byBhbnkgb2YgdGhlIGZsYWdzIGV4Y2VwdCA6YzptYWNybzpgUHlCVUZfU0lNUExFYC4KK1RoZSBsYXR0ZXIgYWxyZWFkeSBpbXBsaWVzIGZvcm1hdCBgYEJgYCAodW5zaWduZWQgYnl0ZXMpLgorCisKK3NoYXBlLCBzdHJpZGVzLCBzdWJvZmZzZXRzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgZmxhZ3MgdGhhdCBjb250cm9sIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgbWVtb3J5IGFyZSBsaXN0ZWQKK2luIGRlY3JlYXNpbmcgb3JkZXIgb2YgY29tcGxleGl0eS4gTm90ZSB0aGF0IGVhY2ggZmxhZyBjb250YWlucyBhbGwgYml0cworb2YgdGhlIGZsYWdzIGJlbG93IGl0LgorCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8ICBSZXF1ZXN0ICAgICAgICAgICAgICAgICAgICB8IHNoYXBlIHwgc3RyaWRlcyB8IHN1Ym9mZnNldHMgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rPT09PT09PT09Kz09PT09PT09PT09PSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0lORElSRUNUIHwgIHllcyAgfCAgIHllcyAgIHwgaWYgbmVlZGVkICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFUyAgfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9ORCAgICAgICB8ICB5ZXMgIHwgICBOVUxMICB8ICAgIE5VTEwgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX1NJTVBMRSAgIHwgIE5VTEwgfCAgIE5VTEwgIHwgICAgTlVMTCAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworCisKK2NvbnRpZ3VpdHkgcmVxdWVzdHMKK35+fn5+fn5+fn5+fn5+fn5+fn4KKworQyBvciBGb3J0cmFuIGNvbnRpZ3VpdHkgY2FuIGJlIGV4cGxpY2l0bHkgcmVxdWVzdGVkLCB3aXRoIGFuZCB3aXRob3V0IHN0cmlkZQoraW5mb3JtYXRpb24uIFdpdGhvdXQgc3RyaWRlIGluZm9ybWF0aW9uLCB0aGUgYnVmZmVyIG11c3QgYmUgQy1jb250aWd1b3VzLgorCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKworfCAgUmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzaGFwZSB8IHN0cmlkZXMgfCBzdWJvZmZzZXRzIHwgY29udGlnIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09Kz09PT09PT09PSs9PT09PT09PT09PT0rPT09PT09PT0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9DX0NPTlRJR1VPVVMgICB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCAgIEMgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0ZfQ09OVElHVU9VUyAgIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8ICAgRiAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfQU5ZX0NPTlRJR1VPVVMgfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgQyBvciBGIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9ORCAgICAgICAgICAgICB8ICB5ZXMgIHwgICBOVUxMICB8ICAgIE5VTEwgICAgfCAgIEMgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSsKKworCitjb21wb3VuZCByZXF1ZXN0cworfn5+fn5+fn5+fn5+fn5+fn4KKworQWxsIHBvc3NpYmxlIHJlcXVlc3RzIGFyZSBmdWxseSBkZWZpbmVkIGJ5IHNvbWUgY29tYmluYXRpb24gb2YgdGhlIGZsYWdzIGluCit0aGUgcHJldmlvdXMgc2VjdGlvbi4gRm9yIGNvbnZlbmllbmNlLCB0aGUgYnVmZmVyIHByb3RvY29sIHByb3ZpZGVzIGZyZXF1ZW50bHkKK3VzZWQgY29tYmluYXRpb25zIGFzIHNpbmdsZSBmbGFncy4KKworSW4gdGhlIGZvbGxvd2luZyB0YWJsZSAqVSogc3RhbmRzIGZvciB1bmRlZmluZWQgY29udGlndWl0eS4gVGhlIGNvbnN1bWVyIHdvdWxkCitoYXZlIHRvIGNhbGwgOmM6ZnVuYzpgUHlCdWZmZXJfSXNDb250aWd1b3VzYCB0byBkZXRlcm1pbmUgY29udGlndWl0eS4KKworCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAgUmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICB8IHNoYXBlIHwgc3RyaWRlcyB8IHN1Ym9mZnNldHMgfCBjb250aWcgfCByZWFkb25seSB8IGZvcm1hdCB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09Kz09PT09PT09PSs9PT09PT09PT09PT0rPT09PT09PT0rPT09PT09PT09PSs9PT09PT09PSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0ZVTEwgICAgICAgfCAgeWVzICB8ICAgeWVzICAgfCBpZiBuZWVkZWQgIHwgICBVICAgIHwgICAgIDAgICAgfCAgeWVzICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9GVUxMX1JPICAgIHwgIHllcyAgfCAgIHllcyAgIHwgaWYgbmVlZGVkICB8ICAgVSAgICB8ICAxIG9yIDAgIHwgIHllcyAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfUkVDT1JEUyAgICB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCAgIFUgICAgfCAgICAgMCAgICB8ICB5ZXMgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX1JFQ09SRFNfUk8gfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgICBVICAgIHwgIDEgb3IgMCAgfCAgeWVzICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9TVFJJREVEICAgIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8ICAgVSAgICB8ICAgICAwICAgIHwgIE5VTEwgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFRF9STyB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCAgIFUgICAgfCAgMSBvciAwICB8ICBOVUxMICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0NPTlRJRyAgICAgfCAgeWVzICB8ICAgTlVMTCAgfCAgICBOVUxMICAgIHwgICBDICAgIHwgICAgIDAgICAgfCAgTlVMTCAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9DT05USUdfUk8gIHwgIHllcyAgfCAgIE5VTEwgIHwgICAgTlVMTCAgICB8ICAgQyAgICB8ICAxIG9yIDAgIHwgIE5VTEwgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworCisKK0NvbXBsZXggYXJyYXlzCis9PT09PT09PT09PT09PQorCitOdW1QeS1zdHlsZTogc2hhcGUgYW5kIHN0cmlkZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgbG9naWNhbCBzdHJ1Y3R1cmUgb2YgTnVtUHktc3R5bGUgYXJyYXlzIGlzIGRlZmluZWQgYnkgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYCwKKzpjOm1lbWJlcjpgflB5X2J1ZmZlci5uZGltYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnNoYXBlYCBhbmQgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN0cmlkZXNgLgorCitJZiBgYG5kaW0gPT0gMGBgLCB0aGUgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmJ1ZmAgaXMKK2ludGVycHJldGVkIGFzIGEgc2NhbGFyIG9mIHNpemUgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYC4gSW4gdGhhdCBjYXNlLAorYm90aCA6YzptZW1iZXI6YH5QeV9idWZmZXIuc2hhcGVgIGFuZCA6YzptZW1iZXI6YH5QeV9idWZmZXIuc3RyaWRlc2AgYXJlICpOVUxMKi4KKworSWYgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN0cmlkZXNgIGlzICpOVUxMKiwgdGhlIGFycmF5IGlzIGludGVycHJldGVkIGFzCithIHN0YW5kYXJkIG4tZGltZW5zaW9uYWwgQy1hcnJheS4gT3RoZXJ3aXNlLCB0aGUgY29uc3VtZXIgbXVzdCBhY2Nlc3MgYW4KK24tZGltZW5zaW9uYWwgYXJyYXkgYXMgZm9sbG93czoKKworICAgYGBwdHIgPSAoY2hhciAqKWJ1ZiArIGluZGljZXNbMF0gKiBzdHJpZGVzWzBdICsgLi4uICsgaW5kaWNlc1tuLTFdICogc3RyaWRlc1tuLTFdYGAKKyAgIGBgaXRlbSA9ICooKHR5cGVvZihpdGVtKSAqKXB0cik7YGAKKworCitBcyBub3RlZCBhYm92ZSwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmJ1ZmAgY2FuIHBvaW50IHRvIGFueSBsb2NhdGlvbiB3aXRoaW4KK3RoZSBhY3R1YWwgbWVtb3J5IGJsb2NrLiBBbiBleHBvcnRlciBjYW4gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIGEgYnVmZmVyIHdpdGgKK3RoaXMgZnVuY3Rpb246CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgZGVmIHZlcmlmeV9zdHJ1Y3R1cmUobWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCk6CisgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIHBhcmFtZXRlcnMgcmVwcmVzZW50IGEgdmFsaWQgYXJyYXkgd2l0aGluCisgICAgICAgICAgdGhlIGJvdW5kcyBvZiB0aGUgYWxsb2NhdGVkIG1lbW9yeToKKyAgICAgICAgICAgICAgY2hhciAqbWVtOiBzdGFydCBvZiB0aGUgcGh5c2ljYWwgbWVtb3J5IGJsb2NrCisgICAgICAgICAgICAgIG1lbWxlbjogbGVuZ3RoIG9mIHRoZSBwaHlzaWNhbCBtZW1vcnkgYmxvY2sKKyAgICAgICAgICAgICAgb2Zmc2V0OiAoY2hhciAqKWJ1ZiAtIG1lbQorICAgICAgICIiIgorICAgICAgIGlmIG9mZnNldCAlIGl0ZW1zaXplOgorICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICBpZiBvZmZzZXQgPCAwIG9yIG9mZnNldCtpdGVtc2l6ZSA+IG1lbWxlbjoKKyAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgaWYgYW55KHYgJSBpdGVtc2l6ZSBmb3IgdiBpbiBzdHJpZGVzKToKKyAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICBpZiBuZGltIDw9IDA6CisgICAgICAgICAgIHJldHVybiBuZGltID09IDAgYW5kIG5vdCBzaGFwZSBhbmQgbm90IHN0cmlkZXMKKyAgICAgICBpZiAwIGluIHNoYXBlOgorICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgaW1pbiA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tqXSA8PSAwKQorICAgICAgIGltYXggPSBzdW0oc3RyaWRlc1tqXSooc2hhcGVbal0tMSkgZm9yIGogaW4gcmFuZ2UobmRpbSkKKyAgICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPiAwKQorCisgICAgICAgcmV0dXJuIDAgPD0gb2Zmc2V0K2ltaW4gYW5kIG9mZnNldCtpbWF4K2l0ZW1zaXplIDw9IG1lbWxlbgorCisKK1BJTC1zdHlsZTogc2hhcGUsIHN0cmlkZXMgYW5kIHN1Ym9mZnNldHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworSW4gYWRkaXRpb24gdG8gdGhlIHJlZ3VsYXIgaXRlbXMsIFBJTC1zdHlsZSBhcnJheXMgY2FuIGNvbnRhaW4gcG9pbnRlcnMKK3RoYXQgbXVzdCBiZSBmb2xsb3dlZCBpbiBvcmRlciB0byBnZXQgdG8gdGhlIG5leHQgZWxlbWVudCBpbiBhIGRpbWVuc2lvbi4KK0ZvciBleGFtcGxlLCB0aGUgcmVndWxhciB0aHJlZS1kaW1lbnNpb25hbCBDLWFycmF5IGBgY2hhciB2WzJdWzJdWzNdYGAgY2FuCithbHNvIGJlIHZpZXdlZCBhcyBhbiBhcnJheSBvZiAyIHBvaW50ZXJzIHRvIDIgdHdvLWRpbWVuc2lvbmFsIGFycmF5czoKK2BgY2hhciAoKnZbMl0pWzJdWzNdYGAuIEluIHN1Ym9mZnNldHMgcmVwcmVzZW50YXRpb24sIHRob3NlIHR3byBwb2ludGVycworY2FuIGJlIGVtYmVkZGVkIGF0IHRoZSBzdGFydCBvZiA6YzptZW1iZXI6YH5QeV9idWZmZXIuYnVmYCwgcG9pbnRpbmcKK3RvIHR3byBgYGNoYXIgeFsyXVszXWBgIGFycmF5cyB0aGF0IGNhbiBiZSBsb2NhdGVkIGFueXdoZXJlIGluIG1lbW9yeS4KKworCitIZXJlIGlzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZWxlbWVudCBpbiBhbiBOLUQgYXJyYXkKK3BvaW50ZWQgdG8gYnkgYW4gTi1kaW1lbnNpb25hbCBpbmRleCB3aGVuIHRoZXJlIGFyZSBib3RoIG5vbi1OVUxMIHN0cmlkZXMKK2FuZCBzdWJvZmZzZXRzOjoKKworICAgdm9pZCAqZ2V0X2l0ZW1fcG9pbnRlcihpbnQgbmRpbSwgdm9pZCAqYnVmLCBQeV9zc2l6ZV90ICpzdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdWJvZmZzZXRzLCBQeV9zc2l6ZV90ICppbmRpY2VzKSB7CisgICAgICAgY2hhciAqcG9pbnRlciA9IChjaGFyKilidWY7CisgICAgICAgaW50IGk7CisgICAgICAgZm9yIChpID0gMDsgaSA8IG5kaW07IGkrKykgeworICAgICAgICAgICBwb2ludGVyICs9IHN0cmlkZXNbaV0gKiBpbmRpY2VzW2ldOworICAgICAgICAgICBpZiAoc3Vib2Zmc2V0c1tpXSA+PTAgKSB7CisgICAgICAgICAgICAgICBwb2ludGVyID0gKigoY2hhcioqKXBvaW50ZXIpICsgc3Vib2Zmc2V0c1tpXTsKKyAgICAgICAgICAgfQorICAgICAgIH0KKyAgICAgICByZXR1cm4gKHZvaWQqKXBvaW50ZXI7CisgICB9CisKIAogQnVmZmVyLXJlbGF0ZWQgZnVuY3Rpb25zCiA9PT09PT09PT09PT09PT09PT09PT09PT0KIAotCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5T2JqZWN0X0NoZWNrQnVmZmVyKFB5T2JqZWN0ICpvYmopCiAKICAgIFJldHVybiAxIGlmICpvYmoqIHN1cHBvcnRzIHRoZSBidWZmZXIgaW50ZXJmYWNlIG90aGVyd2lzZSAwLiAgV2hlbiAxIGlzCkBAIC0xNzUsMTUyICs0MjEsNzEgQEAKICAgIHN1Y2NlZWQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeU9iamVjdF9HZXRCdWZmZXIoUHlPYmplY3QgKm9iaiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5T2JqZWN0X0dldEJ1ZmZlcihQeU9iamVjdCAqZXhwb3J0ZXIsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQogCi0gICAgICBFeHBvcnQgYSB2aWV3IG92ZXIgc29tZSBpbnRlcm5hbCBkYXRhIGZyb20gdGhlIHRhcmdldCBvYmplY3QgKm9iaiouCi0gICAgICAqb2JqKiBtdXN0IG5vdCBiZSBOVUxMLCBhbmQgKnZpZXcqIG11c3QgcG9pbnQgdG8gYW4gZXhpc3RpbmcKLSAgICAgIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIGFsbG9jYXRlZCBieSB0aGUgY2FsbGVyIChtb3N0IHVzZXMgb2YKLSAgICAgIHRoaXMgZnVuY3Rpb24gd2lsbCBzaW1wbHkgZGVjbGFyZSBhIGxvY2FsIHZhcmlhYmxlIG9mIHR5cGUKLSAgICAgIDpjOnR5cGU6YFB5X2J1ZmZlcmApLiAgVGhlICpmbGFncyogYXJndW1lbnQgaXMgYSBiaXQgZmllbGQgaW5kaWNhdGluZwotICAgICAgd2hhdCBraW5kIG9mIGJ1ZmZlciBpcyByZXF1ZXN0ZWQuICBUaGUgYnVmZmVyIGludGVyZmFjZSBhbGxvd3MKLSAgICAgIGZvciBjb21wbGljYXRlZCBtZW1vcnkgbGF5b3V0IHBvc3NpYmlsaXRpZXM7IGhvd2V2ZXIsIHNvbWUgY2FsbGVycwotICAgICAgd29uJ3Qgd2FudCB0byBoYW5kbGUgYWxsIHRoZSBjb21wbGV4aXR5IGFuZCBpbnN0ZWFkIHJlcXVlc3QgYSBzaW1wbGUKLSAgICAgIHZpZXcgb2YgdGhlIHRhcmdldCBvYmplY3QgKHVzaW5nIDpjOm1hY3JvOmBQeUJVRl9TSU1QTEVgIGZvciBhIHJlYWQtb25seQotICAgICAgdmlldyBhbmQgOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYCBmb3IgYSByZWFkLXdyaXRlIHZpZXcpLgorICAgU2VuZCBhIHJlcXVlc3QgdG8gKmV4cG9ydGVyKiB0byBmaWxsIGluICp2aWV3KiBhcyBzcGVjaWZpZWQgYnkgICpmbGFncyouCisgICBJZiB0aGUgZXhwb3J0ZXIgY2Fubm90IHByb3ZpZGUgYSBidWZmZXIgb2YgdGhlIGV4YWN0IHR5cGUsIGl0IE1VU1QgcmFpc2UKKyAgIDpjOmRhdGE6YFB5RXhjX0J1ZmZlckVycm9yYCwgc2V0IDpjOm1lbWJlcjpgdmlldy0+b2JqYCB0byAqTlVMTCogYW5kCisgICByZXR1cm4gLTEuCiAKLSAgICAgIFNvbWUgZXhwb3J0ZXJzIG1heSBub3QgYmUgYWJsZSB0byBzaGFyZSBtZW1vcnkgaW4gZXZlcnkgcG9zc2libGUgd2F5IGFuZAotICAgICAgbWF5IG5lZWQgdG8gcmFpc2UgZXJyb3JzIHRvIHNpZ25hbCB0byBzb21lIGNvbnN1bWVycyB0aGF0IHNvbWV0aGluZyBpcwotICAgICAganVzdCBub3QgcG9zc2libGUuIFRoZXNlIGVycm9ycyBzaG91bGQgYmUgYSA6ZXhjOmBCdWZmZXJFcnJvcmAgdW5sZXNzCi0gICAgICB0aGVyZSBpcyBhbm90aGVyIGVycm9yIHRoYXQgaXMgYWN0dWFsbHkgY2F1c2luZyB0aGUgcHJvYmxlbS4gVGhlCi0gICAgICBleHBvcnRlciBjYW4gdXNlIGZsYWdzIGluZm9ybWF0aW9uIHRvIHNpbXBsaWZ5IGhvdyBtdWNoIG9mIHRoZQotICAgICAgOmM6ZGF0YTpgUHlfYnVmZmVyYCBzdHJ1Y3R1cmUgaXMgZmlsbGVkIGluIHdpdGggbm9uLWRlZmF1bHQgdmFsdWVzIGFuZC9vcgotICAgICAgcmFpc2UgYW4gZXJyb3IgaWYgdGhlIG9iamVjdCBjYW4ndCBzdXBwb3J0IGEgc2ltcGxlciB2aWV3IG9mIGl0cyBtZW1vcnkuCisgICBPbiBzdWNjZXNzLCBmaWxsIGluICp2aWV3Kiwgc2V0IDpjOm1lbWJlcjpgdmlldy0+b2JqYCB0byBhIG5ldyByZWZlcmVuY2UKKyAgIHRvICpleHBvcnRlciogYW5kIHJldHVybiAwLiBJbiB0aGUgY2FzZSBvZiBjaGFpbmVkIGJ1ZmZlciBwcm92aWRlcnMKKyAgIHRoYXQgcmVkaXJlY3QgcmVxdWVzdHMgdG8gYSBzaW5nbGUgb2JqZWN0LCA6YzptZW1iZXI6YHZpZXctPm9iamAgTUFZCisgICByZWZlciB0byB0aGlzIG9iamVjdCBpbnN0ZWFkIG9mICpleHBvcnRlciogKFNlZSA6cmVmOmBCdWZmZXIgT2JqZWN0IFN0cnVjdHVyZXMgPGJ1ZmZlci1zdHJ1Y3RzPmApLgogCi0gICAgICBPbiBzdWNjZXNzLCAwIGlzIHJldHVybmVkIGFuZCB0aGUgKnZpZXcqIHN0cnVjdHVyZSBpcyBmaWxsZWQgd2l0aCB1c2VmdWwKLSAgICAgIHZhbHVlcy4gIE9uIGVycm9yLCAtMSBpcyByZXR1cm5lZCBhbmQgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZDsgdGhlICp2aWV3KgotICAgICAgaXMgbGVmdCBpbiBhbiB1bmRlZmluZWQgc3RhdGUuCi0KLSAgICAgIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBwb3NzaWJsZSB2YWx1ZXMgdG8gdGhlICpmbGFncyogYXJndW1lbnRzLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfU0lNUExFCi0KLSAgICAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgZmxhZy4gIFRoZSByZXR1cm5lZCBidWZmZXIgZXhwb3NlcyBhIHJlYWQtb25seQotICAgICAgICAgbWVtb3J5IGFyZWEuICBUaGUgZm9ybWF0IG9mIGRhdGEgaXMgYXNzdW1lZCB0byBiZSByYXcgdW5zaWduZWQgYnl0ZXMsCi0gICAgICAgICB3aXRob3V0IGFueSBwYXJ0aWN1bGFyIHN0cnVjdHVyZS4gIFRoaXMgaXMgYSAic3RhbmQtYWxvbmUiIGZsYWcKLSAgICAgICAgIGNvbnN0YW50LiAgSXQgbmV2ZXIgbmVlZHMgdG8gYmUgJ3wnZCB0byB0aGUgb3RoZXJzLiAgVGhlIGV4cG9ydGVyIHdpbGwKLSAgICAgICAgIHJhaXNlIGFuIGVycm9yIGlmIGl0IGNhbm5vdCBwcm92aWRlIHN1Y2ggYSBjb250aWd1b3VzIGJ1ZmZlciBvZiBieXRlcy4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1dSSVRBQkxFCi0KLSAgICAgICAgIExpa2UgOmM6bWFjcm86YFB5QlVGX1NJTVBMRWAsIGJ1dCB0aGUgcmV0dXJuZWQgYnVmZmVyIGlzIHdyaXRhYmxlLiAgSWYKLSAgICAgICAgIHRoZSBleHBvcnRlciBkb2Vzbid0IHN1cHBvcnQgd3JpdGFibGUgYnVmZmVycywgYW4gZXJyb3IgaXMgcmFpc2VkLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFUwotCi0gICAgICAgICBUaGlzIGltcGxpZXMgOmM6bWFjcm86YFB5QlVGX05EYC4gIFRoZSByZXR1cm5lZCBidWZmZXIgbXVzdCBwcm92aWRlCi0gICAgICAgICBzdHJpZGVzIGluZm9ybWF0aW9uIChpLmUuIHRoZSBzdHJpZGVzIGNhbm5vdCBiZSBOVUxMKS4gIFRoaXMgd291bGQgYmUKLSAgICAgICAgIHVzZWQgd2hlbiB0aGUgY29uc3VtZXIgY2FuIGhhbmRsZSBzdHJpZGVkLCBkaXNjb250aWd1b3VzIGFycmF5cy4KLSAgICAgICAgIEhhbmRsaW5nIHN0cmlkZXMgYXV0b21hdGljYWxseSBhc3N1bWVzIHlvdSBjYW4gaGFuZGxlIHNoYXBlLiAgVGhlCi0gICAgICAgICBleHBvcnRlciBjYW4gcmFpc2UgYW4gZXJyb3IgaWYgYSBzdHJpZGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRhIGlzCi0gICAgICAgICBub3QgcG9zc2libGUgKGkuZS4gd2l0aG91dCB0aGUgc3Vib2Zmc2V0cykuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9ORAotCi0gICAgICAgICBUaGUgcmV0dXJuZWQgYnVmZmVyIG11c3QgcHJvdmlkZSBzaGFwZSBpbmZvcm1hdGlvbi4gIFRoZSBtZW1vcnkgd2lsbCBiZQotICAgICAgICAgYXNzdW1lZCBDLXN0eWxlIGNvbnRpZ3VvdXMgKGxhc3QgZGltZW5zaW9uIHZhcmllcyB0aGUgZmFzdGVzdCkuICBUaGUKLSAgICAgICAgIGV4cG9ydGVyIG1heSByYWlzZSBhbiBlcnJvciBpZiBpdCBjYW5ub3QgcHJvdmlkZSB0aGlzIGtpbmQgb2YKLSAgICAgICAgIGNvbnRpZ3VvdXMgYnVmZmVyLiAgSWYgdGhpcyBpcyBub3QgZ2l2ZW4gdGhlbiBzaGFwZSB3aWxsIGJlICpOVUxMKi4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0NfQ09OVElHVU9VUwotICAgICAgICAgICAgICAgICAgUHlCVUZfRl9DT05USUdVT1VTCi0gICAgICAgICAgICAgICAgICBQeUJVRl9BTllfQ09OVElHVU9VUwotCi0gICAgICAgICBUaGVzZSBmbGFncyBpbmRpY2F0ZSB0aGF0IHRoZSBjb250aWd1aXR5IHJldHVybmVkIGJ1ZmZlciBtdXN0IGJlCi0gICAgICAgICByZXNwZWN0aXZlbHksIEMtY29udGlndW91cyAobGFzdCBkaW1lbnNpb24gdmFyaWVzIHRoZSBmYXN0ZXN0KSwgRm9ydHJhbgotICAgICAgICAgY29udGlndW91cyAoZmlyc3QgZGltZW5zaW9uIHZhcmllcyB0aGUgZmFzdGVzdCkgb3IgZWl0aGVyIG9uZS4gIEFsbCBvZgotICAgICAgICAgdGhlc2UgZmxhZ3MgaW1wbHkgOmM6bWFjcm86YFB5QlVGX1NUUklERVNgIGFuZCBndWFyYW50ZWUgdGhhdCB0aGUKLSAgICAgICAgIHN0cmlkZXMgYnVmZmVyIGluZm8gc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIGluIGNvcnJlY3RseS4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0lORElSRUNUCi0KLSAgICAgICAgIFRoaXMgZmxhZyBpbmRpY2F0ZXMgdGhlIHJldHVybmVkIGJ1ZmZlciBtdXN0IGhhdmUgc3Vib2Zmc2V0cwotICAgICAgICAgaW5mb3JtYXRpb24gKHdoaWNoIGNhbiBiZSBOVUxMIGlmIG5vIHN1Ym9mZnNldHMgYXJlIG5lZWRlZCkuICBUaGlzIGNhbgotICAgICAgICAgYmUgdXNlZCB3aGVuIHRoZSBjb25zdW1lciBjYW4gaGFuZGxlIGluZGlyZWN0IGFycmF5IHJlZmVyZW5jaW5nIGltcGxpZWQKLSAgICAgICAgIGJ5IHRoZXNlIHN1Ym9mZnNldHMuIFRoaXMgaW1wbGllcyA6YzptYWNybzpgUHlCVUZfU1RSSURFU2AuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9GT1JNQVQKLQotICAgICAgICAgVGhlIHJldHVybmVkIGJ1ZmZlciBtdXN0IGhhdmUgdHJ1ZSBmb3JtYXQgaW5mb3JtYXRpb24gaWYgdGhpcyBmbGFnIGlzCi0gICAgICAgICBwcm92aWRlZC4gIFRoaXMgd291bGQgYmUgdXNlZCB3aGVuIHRoZSBjb25zdW1lciBpcyBnb2luZyB0byBiZSBjaGVja2luZwotICAgICAgICAgZm9yIHdoYXQgJ2tpbmQnIG9mIGRhdGEgaXMgYWN0dWFsbHkgc3RvcmVkLiAgQW4gZXhwb3J0ZXIgc2hvdWxkIGFsd2F5cwotICAgICAgICAgYmUgYWJsZSB0byBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gaWYgcmVxdWVzdGVkLiAgSWYgZm9ybWF0IGlzIG5vdAotICAgICAgICAgZXhwbGljaXRseSByZXF1ZXN0ZWQgdGhlbiB0aGUgZm9ybWF0IG11c3QgYmUgcmV0dXJuZWQgYXMgKk5VTEwqICh3aGljaAotICAgICAgICAgbWVhbnMgYGAnQidgYCwgb3IgdW5zaWduZWQgYnl0ZXMpLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFRAotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfU1RSSURFUyB8IFB5QlVGX1dSSVRBQkxFKWBgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFRF9STwotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfU1RSSURFUylgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1JFQ09SRFMKLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX1NUUklERVMgfCBQeUJVRl9GT1JNQVQgfAotICAgICAgICAgUHlCVUZfV1JJVEFCTEUpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9SRUNPUkRTX1JPCi0KLSAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYChQeUJVRl9TVFJJREVTIHwgUHlCVUZfRk9STUFUKWBgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfRlVMTAotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfSU5ESVJFQ1QgfCBQeUJVRl9GT1JNQVQgfAotICAgICAgICAgUHlCVUZfV1JJVEFCTEUpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9GVUxMX1JPCi0KLSAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYChQeUJVRl9JTkRJUkVDVCB8IFB5QlVGX0ZPUk1BVClgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0NPTlRJRwotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfTkQgfCBQeUJVRl9XUklUQUJMRSlgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0NPTlRJR19STwotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfTkQpYGAuCisgICBTdWNjZXNzZnVsIGNhbGxzIHRvIDpjOmZ1bmM6YFB5T2JqZWN0X0dldEJ1ZmZlcmAgbXVzdCBiZSBwYWlyZWQgd2l0aCBjYWxscworICAgdG8gOmM6ZnVuYzpgUHlCdWZmZXJfUmVsZWFzZWAsIHNpbWlsYXIgdG8gOmM6ZnVuYzpgbWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWAuCisgICBUaHVzLCBhZnRlciB0aGUgY29uc3VtZXIgaXMgZG9uZSB3aXRoIHRoZSBidWZmZXIsIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgCisgICBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UuCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlCdWZmZXJfUmVsZWFzZShQeV9idWZmZXIgKnZpZXcpCiAKLSAgIFJlbGVhc2UgdGhlIGJ1ZmZlciAqdmlldyouICBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgYnVmZmVyIGlzIG5vCi0gICBsb25nZXIgYmVpbmcgdXNlZCBhcyBpdCBtYXkgZnJlZSBtZW1vcnkgZnJvbSBpdC4KKyAgIFJlbGVhc2UgdGhlIGJ1ZmZlciAqdmlldyogYW5kIGRlY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IGZvcgorICAgOmM6bWVtYmVyOmB2aWV3LT5vYmpgLiBUaGlzIGZ1bmN0aW9uIE1VU1QgYmUgY2FsbGVkIHdoZW4gdGhlIGJ1ZmZlcgorICAgaXMgbm8gbG9uZ2VyIGJlaW5nIHVzZWQsIG90aGVyd2lzZSByZWZlcmVuY2UgbGVha3MgbWF5IG9jY3VyLgorCisgICBJdCBpcyBhbiBlcnJvciB0byBjYWxsIHRoaXMgZnVuY3Rpb24gb24gYSBidWZmZXIgdGhhdCB3YXMgbm90IG9idGFpbmVkIHZpYQorICAgOmM6ZnVuYzpgUHlPYmplY3RfR2V0QnVmZmVyYC4KIAogCiAuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeUJ1ZmZlcl9TaXplRnJvbUZvcm1hdChjb25zdCBjaGFyICopCiAKLSAgIFJldHVybiB0aGUgaW1wbGllZCA6YzpkYXRhOmB+UHlfYnVmZmVyLml0ZW1zaXplYCBmcm9tIHRoZSBzdHJ1Y3Qtc3R5cGUKLSAgIDpjOmRhdGE6YH5QeV9idWZmZXIuZm9ybWF0YC4KKyAgIFJldHVybiB0aGUgaW1wbGllZCA6YzpkYXRhOmB+UHlfYnVmZmVyLml0ZW1zaXplYCBmcm9tIDpjOmRhdGE6YH5QeV9idWZmZXIuZm9ybWF0YC4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5QnVmZmVyX0lzQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydHJhbikKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlCdWZmZXJfSXNDb250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgY2hhciBvcmRlcikKIAotICAgUmV0dXJuIDEgaWYgdGhlIG1lbW9yeSBkZWZpbmVkIGJ5IHRoZSAqdmlldyogaXMgQy1zdHlsZSAoKmZvcnRyYW4qIGlzCi0gICBgYCdDJ2BgKSBvciBGb3J0cmFuLXN0eWxlICgqZm9ydHJhbiogaXMgYGAnRidgYCkgY29udGlndW91cyBvciBlaXRoZXIgb25lCi0gICAoKmZvcnRyYW4qIGlzIGBgJ0EnYGApLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLgorICAgUmV0dXJuIDEgaWYgdGhlIG1lbW9yeSBkZWZpbmVkIGJ5IHRoZSAqdmlldyogaXMgQy1zdHlsZSAoKm9yZGVyKiBpcworICAgYGAnQydgYCkgb3IgRm9ydHJhbi1zdHlsZSAoKm9yZGVyKiBpcyBgYCdGJ2BgKSBjb250aWd1b3VzIG9yIGVpdGhlciBvbmUKKyAgICgqb3JkZXIqIGlzIGBgJ0EnYGApLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5QnVmZmVyX0ZpbGxDb250aWd1b3VzU3RyaWRlcyhpbnQgbmRpbSwgUHlfc3NpemVfdCAqc2hhcGUsIFB5X3NzaXplX3QgKnN0cmlkZXMsIFB5X3NzaXplX3QgaXRlbXNpemUsIGNoYXIgZm9ydHJhbikKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5QnVmZmVyX0ZpbGxDb250aWd1b3VzU3RyaWRlcyhpbnQgbmRpbSwgUHlfc3NpemVfdCAqc2hhcGUsIFB5X3NzaXplX3QgKnN0cmlkZXMsIFB5X3NzaXplX3QgaXRlbXNpemUsIGNoYXIgb3JkZXIpCiAKICAgIEZpbGwgdGhlICpzdHJpZGVzKiBhcnJheSB3aXRoIGJ5dGUtc3RyaWRlcyBvZiBhIGNvbnRpZ3VvdXMgKEMtc3R5bGUgaWYKLSAgICpmb3J0cmFuKiBpcyBgYCdDJ2BgIG9yIEZvcnRyYW4tc3R5bGUgaWYgKmZvcnRyYW4qIGlzIGBgJ0YnYGApIGFycmF5IG9mIHRoZQorICAgKm9yZGVyKiBpcyBgYCdDJ2BgIG9yIEZvcnRyYW4tc3R5bGUgaWYgKm9yZGVyKiBpcyBgYCdGJ2BgKSBhcnJheSBvZiB0aGUKICAgIGdpdmVuIHNoYXBlIHdpdGggdGhlIGdpdmVuIG51bWJlciBvZiBieXRlcyBwZXIgZWxlbWVudC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5QnVmZmVyX0ZpbGxJbmZvKFB5X2J1ZmZlciAqdmlldywgUHlPYmplY3QgKm9iaiwgdm9pZCAqYnVmLCBQeV9zc2l6ZV90IGxlbiwgaW50IHJlYWRvbmx5LCBpbnQgaW5mb2ZsYWdzKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeUJ1ZmZlcl9GaWxsSW5mbyhQeV9idWZmZXIgKnZpZXcsIFB5T2JqZWN0ICpleHBvcnRlciwgdm9pZCAqYnVmLCBQeV9zc2l6ZV90IGxlbiwgaW50IHJlYWRvbmx5LCBpbnQgZmxhZ3MpCiAKLSAgIEZpbGwgaW4gYSBidWZmZXItaW5mbyBzdHJ1Y3R1cmUsICp2aWV3KiwgY29ycmVjdGx5IGZvciBhbiBleHBvcnRlciB0aGF0IGNhbgotICAgb25seSBzaGFyZSBhIGNvbnRpZ3VvdXMgY2h1bmsgb2YgbWVtb3J5IG9mICJ1bnNpZ25lZCBieXRlcyIgb2YgdGhlIGdpdmVuCi0gICBsZW5ndGguICBSZXR1cm4gMCBvbiBzdWNjZXNzIGFuZCAtMSAod2l0aCByYWlzaW5nIGFuIGVycm9yKSBvbiBlcnJvci4KKyAgIEhhbmRsZSBidWZmZXIgcmVxdWVzdHMgZm9yIGFuIGV4cG9ydGVyIHRoYXQgd2FudHMgdG8gZXhwb3NlICpidWYqIG9mIHNpemUgKmxlbioKKyAgIHdpdGggd3JpdGFiaWxpdHkgc2V0IGFjY29yZGluZyB0byAqcmVhZG9ubHkqLiAqYnVmKiBpcyBpbnRlcnByZXRlZCBhcyBhIHNlcXVlbmNlCisgICBvZiB1bnNpZ25lZCBieXRlcy4KKworICAgVGhlICpmbGFncyogYXJndW1lbnQgaW5kaWNhdGVzIHRoZSByZXF1ZXN0IHR5cGUuIFRoaXMgZnVuY3Rpb24gYWx3YXlzIGZpbGxzIGluCisgICAqdmlldyogYXMgc3BlY2lmaWVkIGJ5IGZsYWdzLCB1bmxlc3MgKmJ1ZiogaGFzIGJlZW4gZGVzaWduYXRlZCBhcyByZWFkLW9ubHkKKyAgIGFuZCA6YzptYWNybzpgUHlCVUZfV1JJVEFCTEVgIGlzIHNldCBpbiAqZmxhZ3MqLgorCisgICBPbiBzdWNjZXNzLCBzZXQgOmM6bWVtYmVyOmB2aWV3LT5vYmpgIHRvIGEgbmV3IHJlZmVyZW5jZSB0byAqZXhwb3J0ZXIqIGFuZAorICAgcmV0dXJuIDAuIE90aGVyd2lzZSwgcmFpc2UgOmM6ZGF0YTpgUHlFeGNfQnVmZmVyRXJyb3JgLCBzZXQKKyAgIDpjOm1lbWJlcjpgdmlldy0+b2JqYCB0byAqTlVMTCogYW5kIHJldHVybiAtMTsKKworICAgSWYgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFzIHBhcnQgb2YgYSA6cmVmOmBnZXRidWZmZXJwcm9jIDxidWZmZXItc3RydWN0cz5gLAorICAgKmV4cG9ydGVyKiBNVVNUIGJlIHNldCB0byB0aGUgZXhwb3J0aW5nIG9iamVjdC4gT3RoZXJ3aXNlLCAqZXhwb3J0ZXIqIE1VU1QKKyAgIGJlIE5VTEwuCisKKwogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvY29kZS5yc3QgYi9Eb2MvYy1hcGkvY29kZS5yc3QKaW5kZXggNjkzMmJiMS4uNTdlODA3MiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2NvZGUucnN0CisrKyBiL0RvYy9jLWFwaS9jb2RlLnJzdApAQCAtMzEsMTEgKzMxLDExIEBACiAKICAgIFJldHVybiB0cnVlIGlmICpjbyogaXMgYSA6Y2xhc3M6YGNvZGVgIG9iamVjdAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5Q29kZV9HZXROdW1GcmVlKFB5T2JqZWN0ICpjbykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlDb2RlX0dldE51bUZyZWUoUHlDb2RlT2JqZWN0ICpjbykKIAogICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZnJlZSB2YXJpYWJsZXMgaW4gKmNvKi4KIAotLi4gYzpmdW5jdGlvbjo6IFB5Q29kZU9iamVjdCAqUHlDb2RlX05ldyhpbnQgYXJnY291bnQsIGludCBrd29ubHlhcmdjb3VudCwgaW50IG5sb2NhbHMsIGludCBzdGFja3NpemUsIGludCBmbGFncywgUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKnZhcm5hbWVzLCBQeU9iamVjdCAqZnJlZXZhcnMsIFB5T2JqZWN0ICpjZWxsdmFycywgUHlPYmplY3QgKmZpbGVuYW1lLCBQeU9iamVjdCAqbmFtZSwgaW50IGZpcnN0bGluZW5vLCBQeU9iamVjdCAqbG5vdGFiKQorLi4gYzpmdW5jdGlvbjo6IFB5Q29kZU9iamVjdCogUHlDb2RlX05ldyhpbnQgYXJnY291bnQsIGludCBrd29ubHlhcmdjb3VudCwgaW50IG5sb2NhbHMsIGludCBzdGFja3NpemUsIGludCBmbGFncywgUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKnZhcm5hbWVzLCBQeU9iamVjdCAqZnJlZXZhcnMsIFB5T2JqZWN0ICpjZWxsdmFycywgUHlPYmplY3QgKmZpbGVuYW1lLCBQeU9iamVjdCAqbmFtZSwgaW50IGZpcnN0bGluZW5vLCBQeU9iamVjdCAqbG5vdGFiKQogCiAgICBSZXR1cm4gYSBuZXcgY29kZSBvYmplY3QuICBJZiB5b3UgbmVlZCBhIGR1bW15IGNvZGUgb2JqZWN0IHRvCiAgICBjcmVhdGUgYSBmcmFtZSwgdXNlIDpjOmZ1bmM6YFB5Q29kZV9OZXdFbXB0eWAgaW5zdGVhZC4gIENhbGxpbmcKQEAgLTQzLDcgKzQzLDcgQEAKICAgIHZlcnNpb24gc2luY2UgdGhlIGRlZmluaXRpb24gb2YgdGhlIGJ5dGVjb2RlIGNoYW5nZXMgb2Z0ZW4uCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUNvZGVfTmV3RW1wdHkoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBpbnQgZmlyc3RsaW5lbm8pCisuLiBjOmZ1bmN0aW9uOjogUHlDb2RlT2JqZWN0KiBQeUNvZGVfTmV3RW1wdHkoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBpbnQgZmlyc3RsaW5lbm8pCiAKICAgIFJldHVybiBhIG5ldyBlbXB0eSBjb2RlIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgZmlsZW5hbWUsCiAgICBmdW5jdGlvbiBuYW1lLCBhbmQgZmlyc3QgbGluZSBudW1iZXIuICBJdCBpcyBpbGxlZ2FsIHRvCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvY29udmVyc2lvbi5yc3QgYi9Eb2MvYy1hcGkvY29udmVyc2lvbi5yc3QKaW5kZXggZGZjMGEzYS4uOTU3OGY5OCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2NvbnZlcnNpb24ucnN0CisrKyBiL0RvYy9jLWFwaS9jb252ZXJzaW9uLnJzdApAQCAtMTE5LDEzICsxMTksMTMgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKLS4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeU9TX3N0cmljbXAoY2hhciAqczEsIGNoYXIgKnMyKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeU9TX3N0cmljbXAoY2hhciAqczEsIGNoYXIgKnMyKQogCiAgICBDYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gb2Ygc3RyaW5ncy4gVGhlIGZ1bmN0aW9uIHdvcmtzIGFsbW9zdAogICAgaWRlbnRpY2FsbHkgdG8gOmM6ZnVuYzpgc3RyY21wYCBleGNlcHQgdGhhdCBpdCBpZ25vcmVzIHRoZSBjYXNlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeU9TX3N0cm5pY21wKGNoYXIgKnMxLCBjaGFyICpzMiwgUHlfc3NpemVfdCAgc2l6ZSkKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlPU19zdHJuaWNtcChjaGFyICpzMSwgY2hhciAqczIsIFB5X3NzaXplX3QgIHNpemUpCiAKICAgIENhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBvZiBzdHJpbmdzLiBUaGUgZnVuY3Rpb24gd29ya3MgYWxtb3N0CiAgICBpZGVudGljYWxseSB0byA6YzpmdW5jOmBzdHJuY21wYCBleGNlcHQgdGhhdCBpdCBpZ25vcmVzIHRoZSBjYXNlLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2RhdGV0aW1lLnJzdCBiL0RvYy9jLWFwaS9kYXRldGltZS5yc3QKaW5kZXggZmNkMTM5NS4uMzk1NDJiZCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvYy1hcGkvZGF0ZXRpbWUucnN0CkBAIC0xNzAsNiArMTcwLDMxIEBACiAgICBSZXR1cm4gdGhlIG1pY3Jvc2Vjb25kLCBhcyBhbiBpbnQgZnJvbSAwIHRocm91Z2ggOTk5OTk5LgogCiAKK01hY3JvcyB0byBleHRyYWN0IGZpZWxkcyBmcm9tIHRpbWUgZGVsdGEgb2JqZWN0cy4gIFRoZSBhcmd1bWVudCBtdXN0IGJlIGFuCitpbnN0YW5jZSBvZiA6YzpkYXRhOmBQeURhdGVUaW1lX0RlbHRhYCwgaW5jbHVkaW5nIHN1YmNsYXNzZXMuIFRoZSBhcmd1bWVudCBtdXN0Citub3QgYmUgKk5VTEwqLCBhbmQgdGhlIHR5cGUgaXMgbm90IGNoZWNrZWQ6CisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlEYXRlVGltZV9ERUxUQV9HRVRfREFZUyhQeURhdGVUaW1lX0RlbHRhICpvKQorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiBkYXlzLCBhcyBhbiBpbnQgZnJvbSAtOTk5OTk5OTk5IHRvIDk5OTk5OTk5OS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeURhdGVUaW1lX0RFTFRBX0dFVF9TRUNPTkRTKFB5RGF0ZVRpbWVfRGVsdGEgKm8pCisKKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlY29uZHMsIGFzIGFuIGludCBmcm9tIDAgdGhyb3VnaCA4NjM5OS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeURhdGVUaW1lX0RFTFRBX0dFVF9NSUNST1NFQ09ORChQeURhdGVUaW1lX0RlbHRhICpvKQorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiBtaWNyb3NlY29uZHMsIGFzIGFuIGludCBmcm9tIDAgdGhyb3VnaCA5OTk5OTkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIE1hY3JvcyBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIG1vZHVsZXMgaW1wbGVtZW50aW5nIHRoZSBEQiBBUEk6CiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlEYXRlVGltZV9Gcm9tVGltZXN0YW1wKFB5T2JqZWN0ICphcmdzKQpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2RpY3QucnN0IGIvRG9jL2MtYXBpL2RpY3QucnN0CmluZGV4IDZkZjg0ZTAuLjZiYWNjMzIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9kaWN0LnJzdAorKysgYi9Eb2MvYy1hcGkvZGljdC5yc3QKQEAgLTM2LDExICszNiwxMSBAQAogICAgUmV0dXJuIGEgbmV3IGVtcHR5IGRpY3Rpb25hcnksIG9yICpOVUxMKiBvbiBmYWlsdXJlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlEaWN0UHJveHlfTmV3KFB5T2JqZWN0ICpkaWN0KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeURpY3RQcm94eV9OZXcoUHlPYmplY3QgKm1hcHBpbmcpCiAKLSAgIFJldHVybiBhIHByb3h5IG9iamVjdCBmb3IgYSBtYXBwaW5nIHdoaWNoIGVuZm9yY2VzIHJlYWQtb25seSBiZWhhdmlvci4KLSAgIFRoaXMgaXMgbm9ybWFsbHkgdXNlZCB0byBjcmVhdGUgYSBwcm94eSB0byBwcmV2ZW50IG1vZGlmaWNhdGlvbiBvZiB0aGUKLSAgIGRpY3Rpb25hcnkgZm9yIG5vbi1keW5hbWljIGNsYXNzIHR5cGVzLgorICAgUmV0dXJuIGEgOmNsYXNzOmB0eXBlcy5NYXBwaW5nUHJveHlUeXBlYCBvYmplY3QgZm9yIGEgbWFwcGluZyB3aGljaAorICAgZW5mb3JjZXMgcmVhZC1vbmx5IGJlaGF2aW9yLiAgVGhpcyBpcyBub3JtYWxseSB1c2VkIHRvIGNyZWF0ZSBhIHZpZXcgdG8KKyAgIHByZXZlbnQgbW9kaWZpY2F0aW9uIG9mIHRoZSBkaWN0aW9uYXJ5IGZvciBub24tZHluYW1pYyBjbGFzcyB0eXBlcy4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeURpY3RfQ2xlYXIoUHlPYmplY3QgKnApCkBAIC0yMDksMyArMjA5LDEwIEBACiAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VxMjoKICAgICAgICAgICAgICAgaWYgb3ZlcnJpZGUgb3Iga2V5IG5vdCBpbiBhOgogICAgICAgICAgICAgICAgICAgYVtrZXldID0gdmFsdWUKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RGljdF9DbGVhckZyZWVMaXN0KCkKKworICAgQ2xlYXIgdGhlIGZyZWUgbGlzdC4gUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZWQgaXRlbXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0IGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CmluZGV4IDZmMTNjODAuLjlhNjZiN2YgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKQEAgLTEyOSw2ICsxMjksNDEgQEAKICAgICAgIGV4Y2VwdGlvbiBzdGF0ZS4KIAogCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9HZXRFeGNJbmZvKFB5T2JqZWN0ICoqcHR5cGUsIFB5T2JqZWN0ICoqcHZhbHVlLCBQeU9iamVjdCAqKnB0cmFjZWJhY2spCisKKyAgIFJldHJpZXZlIHRoZSBleGNlcHRpb24gaW5mbywgYXMga25vd24gZnJvbSBgYHN5cy5leGNfaW5mbygpYGAuICBUaGlzIHJlZmVycworICAgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzIGFscmVhZHkgY2F1Z2h0LCBub3QgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzCisgICBmcmVzaGx5IHJhaXNlZC4gIFJldHVybnMgbmV3IHJlZmVyZW5jZXMgZm9yIHRoZSB0aHJlZSBvYmplY3RzLCBhbnkgb2Ygd2hpY2gKKyAgIG1heSBiZSAqTlVMTCouICBEb2VzIG5vdCBtb2RpZnkgdGhlIGV4Y2VwdGlvbiBpbmZvIHN0YXRlLgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3Qgbm9ybWFsbHkgdXNlZCBieSBjb2RlIHRoYXQgd2FudHMgdG8gaGFuZGxlIGV4Y2VwdGlvbnMuCisgICAgICBSYXRoZXIsIGl0IGNhbiBiZSB1c2VkIHdoZW4gY29kZSBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBleGNlcHRpb24KKyAgICAgIHN0YXRlIHRlbXBvcmFyaWx5LiAgVXNlIDpjOmZ1bmM6YFB5RXJyX1NldEV4Y0luZm9gIHRvIHJlc3RvcmUgb3IgY2xlYXIgdGhlCisgICAgICBleGNlcHRpb24gc3RhdGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1NldEV4Y0luZm8oUHlPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgUHlPYmplY3QgKnRyYWNlYmFjaykKKworICAgU2V0IHRoZSBleGNlcHRpb24gaW5mbywgYXMga25vd24gZnJvbSBgYHN5cy5leGNfaW5mbygpYGAuICBUaGlzIHJlZmVycworICAgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzIGFscmVhZHkgY2F1Z2h0LCBub3QgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzCisgICBmcmVzaGx5IHJhaXNlZC4gIFRoaXMgZnVuY3Rpb24gc3RlYWxzIHRoZSByZWZlcmVuY2VzIG9mIHRoZSBhcmd1bWVudHMuCisgICBUbyBjbGVhciB0aGUgZXhjZXB0aW9uIHN0YXRlLCBwYXNzICpOVUxMKiBmb3IgYWxsIHRocmVlIGFyZ3VtZW50cy4KKyAgIEZvciBnZW5lcmFsIHJ1bGVzIGFib3V0IHRoZSB0aHJlZSBhcmd1bWVudHMsIHNlZSA6YzpmdW5jOmBQeUVycl9SZXN0b3JlYC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGhhbmRsZSBleGNlcHRpb25zLgorICAgICAgUmF0aGVyLCBpdCBjYW4gYmUgdXNlZCB3aGVuIGNvZGUgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9uCisgICAgICBzdGF0ZSB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9HZXRFeGNJbmZvYCB0byByZWFkIHRoZSBleGNlcHRpb24KKyAgICAgIHN0YXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TZXRTdHJpbmcoUHlPYmplY3QgKnR5cGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiAKICAgIFRoaXMgaXMgdGhlIG1vc3QgY29tbW9uIHdheSB0byBzZXQgdGhlIGVycm9yIGluZGljYXRvci4gIFRoZSBmaXJzdCBhcmd1bWVudApAQCAtMjMwLDYgKzI2NSwxNiBAQAogICAgcGFyYW1ldGVyIHNwZWNpZnlpbmcgdGhlIGV4Y2VwdGlvbiB0eXBlIHRvIGJlIHJhaXNlZC4gQXZhaWxhYmlsaXR5OiBXaW5kb3dzLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlFcnJfU2V0SW1wb3J0RXJyb3IoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorCisgICBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcmFpc2UgOmV4YzpgSW1wb3J0RXJyb3JgLiAqbXNnKiB3aWxsIGJlCisgICBzZXQgYXMgdGhlIGV4Y2VwdGlvbidzIG1lc3NhZ2Ugc3RyaW5nLiAqbmFtZSogYW5kICpwYXRoKiwgYm90aCBvZiB3aGljaCBjYW4KKyAgIGJlIGBgTlVMTGBgLCB3aWxsIGJlIHNldCBhcyB0aGUgOmV4YzpgSW1wb3J0RXJyb3JgJ3MgcmVzcGVjdGl2ZSBgYG5hbWVgYAorICAgYW5kIGBgcGF0aGBgIGF0dHJpYnV0ZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1N5bnRheExvY2F0aW9uRXgoY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogCiAgICBTZXQgZmlsZSwgbGluZSwgYW5kIG9mZnNldCBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLiAgSWYgdGhlCkBAIC0yMzgsNyArMjgzLDcgQEAKICAgIGlzIGEgOmV4YzpgU3ludGF4RXJyb3JgLiAqZmlsZW5hbWUqIGlzIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZwogICAgKDpmdW5jOmBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYCkuCiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfU3ludGF4TG9jYXRpb24oY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCkBAIC0zMTEsNiArMzU2LDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKwogLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9DaGVja1NpZ25hbHMoKQogCiAgICAuLiBpbmRleDo6CkBAIC00MjEsMTcgKzQ2NywxOCBAQAogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXhjZXB0aW9uX0dldENhdXNlKFB5T2JqZWN0ICpleCkKIAotICAgUmV0dXJuIHRoZSBjYXVzZSAoYW5vdGhlciBleGNlcHRpb24gaW5zdGFuY2Ugc2V0IGJ5IGBgcmFpc2UgLi4uIGZyb20gLi4uYGApCi0gICBhc3NvY2lhdGVkIHdpdGggdGhlIGV4Y2VwdGlvbiBhcyBhIG5ldyByZWZlcmVuY2UsIGFzIGFjY2Vzc2libGUgZnJvbSBQeXRob24KLSAgIHRocm91Z2ggOmF0dHI6YF9fY2F1c2VfX2AuICBJZiB0aGVyZSBpcyBubyBjYXVzZSBhc3NvY2lhdGVkLCB0aGlzIHJldHVybnMKLSAgICpOVUxMKi4KKyAgIFJldHVybiB0aGUgY2F1c2UgKGVpdGhlciBhbiBleGNlcHRpb24gaW5zdGFuY2UsIG9yIDpjb25zdDpgTm9uZWAsCisgICBzZXQgYnkgYGByYWlzZSAuLi4gZnJvbSAuLi5gYCkgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGNlcHRpb24gYXMgYSBuZXcKKyAgIHJlZmVyZW5jZSwgYXMgYWNjZXNzaWJsZSBmcm9tIFB5dGhvbiB0aHJvdWdoIDphdHRyOmBfX2NhdXNlX19gLgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXhjZXB0aW9uX1NldENhdXNlKFB5T2JqZWN0ICpleCwgUHlPYmplY3QgKmN0eCkKIAogICAgU2V0IHRoZSBjYXVzZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4Y2VwdGlvbiB0byAqY3R4Ki4gIFVzZSAqTlVMTCogdG8gY2xlYXIKLSAgIGl0LiAgVGhlcmUgaXMgbm8gdHlwZSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCAqY3R4KiBpcyBhbiBleGNlcHRpb24gaW5zdGFuY2UuCi0gICBUaGlzIHN0ZWFscyBhIHJlZmVyZW5jZSB0byAqY3R4Ki4KKyAgIGl0LiAgVGhlcmUgaXMgbm8gdHlwZSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCAqY3R4KiBpcyBlaXRoZXIgYW4gZXhjZXB0aW9uCisgICBpbnN0YW5jZSBvciA6Y29uc3Q6YE5vbmVgLiAgVGhpcyBzdGVhbHMgYSByZWZlcmVuY2UgdG8gKmN0eCouCisKKyAgIDphdHRyOmBfX3N1cHByZXNzX2NvbnRleHRfX2AgaXMgaW1wbGljaXRseSBzZXQgdG8gYGBUcnVlYGAgYnkgdGhpcyBmdW5jdGlvbi4KIAogCiAuLiBfdW5pY29kZWV4Y2VwdGlvbnM6CkBAIC01MjUsNyArNTcyLDcgQEAKIAogICAgTWFya3MgYSBwb2ludCB3aGVyZSBhIHJlY3Vyc2l2ZSBDLWxldmVsIGNhbGwgaXMgYWJvdXQgdG8gYmUgcGVyZm9ybWVkLgogCi0gICBJZiA6Y29uc3Q6YFVTRV9TVEFDS0NIRUNLYCBpcyBkZWZpbmVkLCB0aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgdGhlIE9TCisgICBJZiA6Y29uc3Q6YFVTRV9TVEFDS0NIRUNLYCBpcyBkZWZpbmVkLCB0aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgT1MKICAgIHN0YWNrIG92ZXJmbG93ZWQgdXNpbmcgOmM6ZnVuYzpgUHlPU19DaGVja1N0YWNrYC4gIEluIHRoaXMgaXMgdGhlIGNhc2UsIGl0CiAgICBzZXRzIGEgOmV4YzpgTWVtb3J5RXJyb3JgIGFuZCByZXR1cm5zIGEgbm9uemVybyB2YWx1ZS4KIApAQCAtNTgyLDY1ICs2MjksMTE2IEBACiA6Yzp0eXBlOmBQeU9iamVjdFwqYDsgdGhleSBhcmUgYWxsIGNsYXNzIG9iamVjdHMuICBGb3IgY29tcGxldGVuZXNzLCBoZXJlIGFyZSBhbGwKIHRoZSB2YXJpYWJsZXM6CiAKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgQyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQeXRob24gTmFtZSAgICAgICAgICAgICAgICB8IE5vdGVzICAgIHwKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKLXwgOmM6ZGF0YTpgUHlFeGNfQmFzZUV4Y2VwdGlvbmAgICAgICAgfCA6ZXhjOmBCYXNlRXhjZXB0aW9uYCAgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRXhjZXB0aW9uYCAgICAgICAgICAgfCA6ZXhjOmBFeGNlcHRpb25gICAgICAgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfQXJpdGhtZXRpY0Vycm9yYCAgICAgfCA6ZXhjOmBBcml0aG1ldGljRXJyb3JgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTG9va3VwRXJyb3JgICAgICAgICAgfCA6ZXhjOmBMb29rdXBFcnJvcmAgICAgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfQXNzZXJ0aW9uRXJyb3JgICAgICAgfCA6ZXhjOmBBc3NlcnRpb25FcnJvcmAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfQXR0cmlidXRlRXJyb3JgICAgICAgfCA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRU9GRXJyb3JgICAgICAgICAgICAgfCA6ZXhjOmBFT0ZFcnJvcmAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRW52aXJvbm1lbnRFcnJvcmAgICAgfCA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYCAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yYCAgfCA6ZXhjOmBGbG9hdGluZ1BvaW50RXJyb3JgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfSU9FcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBJT0Vycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfSW1wb3J0RXJyb3JgICAgICAgICAgfCA6ZXhjOmBJbXBvcnRFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfSW5kZXhFcnJvcmAgICAgICAgICAgfCA6ZXhjOmBJbmRleEVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfS2V5RXJyb3JgICAgICAgICAgICAgfCA6ZXhjOmBLZXlFcnJvcmAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHRgICAgfCA6ZXhjOmBLZXlib2FyZEludGVycnVwdGAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTWVtb3J5RXJyb3JgICAgICAgICAgfCA6ZXhjOmBNZW1vcnlFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTmFtZUVycm9yYCAgICAgICAgICAgfCA6ZXhjOmBOYW1lRXJyb3JgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcmAgfCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfT1NFcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBPU0Vycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfT3ZlcmZsb3dFcnJvcmAgICAgICAgfCA6ZXhjOmBPdmVyZmxvd0Vycm9yYCAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfUmVmZXJlbmNlRXJyb3JgICAgICAgfCA6ZXhjOmBSZWZlcmVuY2VFcnJvcmAgICAgICB8IFwoMikgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfUnVudGltZUVycm9yYCAgICAgICAgfCA6ZXhjOmBSdW50aW1lRXJyb3JgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfU3ludGF4RXJyb3JgICAgICAgICAgfCA6ZXhjOmBTeW50YXhFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfU3lzdGVtRXJyb3JgICAgICAgICAgfCA6ZXhjOmBTeXN0ZW1FcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfU3lzdGVtRXhpdGAgICAgICAgICAgfCA6ZXhjOmBTeXN0ZW1FeGl0YCAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfVHlwZUVycm9yYCAgICAgICAgICAgfCA6ZXhjOmBUeXBlRXJyb3JgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfVmFsdWVFcnJvcmAgICAgICAgICAgfCA6ZXhjOmBWYWx1ZUVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfV2luZG93c0Vycm9yYCAgICAgICAgfCA6ZXhjOmBXaW5kb3dzRXJyb3JgICAgICAgICB8IFwoMykgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3JgICAgfCA6ZXhjOmBaZXJvRGl2aXNpb25FcnJvcmAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgQyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIE5hbWUgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKK3wgOmM6ZGF0YTpgUHlFeGNfQmFzZUV4Y2VwdGlvbmAgICAgICAgICAgIHwgOmV4YzpgQmFzZUV4Y2VwdGlvbmAgICAgICAgICAgICB8IFwoMSkgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfRXhjZXB0aW9uYCAgICAgICAgICAgICAgIHwgOmV4YzpgRXhjZXB0aW9uYCAgICAgICAgICAgICAgICB8IFwoMSkgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQXJpdGhtZXRpY0Vycm9yYCAgICAgICAgIHwgOmV4YzpgQXJpdGhtZXRpY0Vycm9yYCAgICAgICAgICB8IFwoMSkgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTG9va3VwRXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgTG9va3VwRXJyb3JgICAgICAgICAgICAgICB8IFwoMSkgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQXNzZXJ0aW9uRXJyb3JgICAgICAgICAgIHwgOmV4YzpgQXNzZXJ0aW9uRXJyb3JgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQXR0cmlidXRlRXJyb3JgICAgICAgICAgIHwgOmV4YzpgQXR0cmlidXRlRXJyb3JgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQmxvY2tpbmdJT0Vycm9yYCAgICAgICAgIHwgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQnJva2VuUGlwZUVycm9yYCAgICAgICAgIHwgOmV4YzpgQnJva2VuUGlwZUVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQ2hpbGRQcm9jZXNzRXJyb3JgICAgICAgIHwgOmV4YzpgQ2hpbGRQcm9jZXNzRXJyb3JgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvbkVycm9yYCAgICAgICAgIHwgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvbkFib3J0ZWRFcnJvcmAgIHwgOmV4YzpgQ29ubmVjdGlvbkFib3J0ZWRFcnJvcmAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAgIHwgOmV4YzpgQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3JgICAgIHwgOmV4YzpgQ29ubmVjdGlvblJlc2V0RXJyb3JgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfRmlsZUV4aXN0c0Vycm9yYCAgICAgICAgIHwgOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfRmlsZU5vdEZvdW5kRXJyb3JgICAgICAgIHwgOmV4YzpgRmlsZU5vdEZvdW5kRXJyb3JgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfRU9GRXJyb3JgICAgICAgICAgICAgICAgIHwgOmV4YzpgRU9GRXJyb3JgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yYCAgICAgIHwgOmV4YzpgRmxvYXRpbmdQb2ludEVycm9yYCAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfSW1wb3J0RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgSW1wb3J0RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfSW5kZXhFcnJvcmAgICAgICAgICAgICAgIHwgOmV4YzpgSW5kZXhFcnJvcmAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgIHwgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3JgICAgICAgIHwgOmV4YzpgSXNBRGlyZWN0b3J5RXJyb3JgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfS2V5RXJyb3JgICAgICAgICAgICAgICAgIHwgOmV4YzpgS2V5RXJyb3JgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHRgICAgICAgIHwgOmV4YzpgS2V5Ym9hcmRJbnRlcnJ1cHRgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTWVtb3J5RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgTWVtb3J5RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTmFtZUVycm9yYCAgICAgICAgICAgICAgIHwgOmV4YzpgTmFtZUVycm9yYCAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTm90QURpcmVjdG9yeUVycm9yYCAgICAgIHwgOmV4YzpgTm90QURpcmVjdG9yeUVycm9yYCAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcmAgICAgIHwgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfT1NFcnJvcmAgICAgICAgICAgICAgICAgIHwgOmV4YzpgT1NFcnJvcmAgICAgICAgICAgICAgICAgICB8IFwoMSkgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfT3ZlcmZsb3dFcnJvcmAgICAgICAgICAgIHwgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfUGVybWlzc2lvbkVycm9yYCAgICAgICAgIHwgOmV4YzpgUGVybWlzc2lvbkVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfUHJvY2Vzc0xvb2t1cEVycm9yYCAgICAgIHwgOmV4YzpgUHJvY2Vzc0xvb2t1cEVycm9yYCAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfUmVmZXJlbmNlRXJyb3JgICAgICAgICAgIHwgOmV4YzpgUmVmZXJlbmNlRXJyb3JgICAgICAgICAgICB8IFwoMikgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfUnVudGltZUVycm9yYCAgICAgICAgICAgIHwgOmV4YzpgUnVudGltZUVycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfU3ludGF4RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgU3ludGF4RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfU3lzdGVtRXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgU3lzdGVtRXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfVGltZW91dEVycm9yYCAgICAgICAgICAgIHwgOmV4YzpgVGltZW91dEVycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfU3lzdGVtRXhpdGAgICAgICAgICAgICAgIHwgOmV4YzpgU3lzdGVtRXhpdGAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfVHlwZUVycm9yYCAgICAgICAgICAgICAgIHwgOmV4YzpgVHlwZUVycm9yYCAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfVmFsdWVFcnJvcmAgICAgICAgICAgICAgIHwgOmV4YzpgVmFsdWVFcnJvcmAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3JgICAgICAgIHwgOmV4YzpgWmVyb0RpdmlzaW9uRXJyb3JgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICA6YzpkYXRhOmBQeUV4Y19CbG9ja2luZ0lPRXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19Ccm9rZW5QaXBlRXJyb3JgLAorICAgOmM6ZGF0YTpgUHlFeGNfQ2hpbGRQcm9jZXNzRXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19Db25uZWN0aW9uRXJyb3JgLAorICAgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvbkFib3J0ZWRFcnJvcmAsIDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25SZWZ1c2VkRXJyb3JgLAorICAgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19GaWxlRXhpc3RzRXJyb3JgLAorICAgOmM6ZGF0YTpgUHlFeGNfRmlsZU5vdEZvdW5kRXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19JbnRlcnJ1cHRlZEVycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX0lzQURpcmVjdG9yeUVycm9yYCwgOmM6ZGF0YTpgUHlFeGNfTm90QURpcmVjdG9yeUVycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX1Blcm1pc3Npb25FcnJvcmAsIDpjOmRhdGE6YFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcmAKKyAgIGFuZCA6YzpkYXRhOmBQeUV4Y19UaW1lb3V0RXJyb3JgIHdlcmUgaW50cm9kdWNlZCBmb2xsb3dpbmcgOnBlcDpgMzE1MWAuCisKKworVGhlc2UgYXJlIGNvbXBhdGliaWxpdHkgYWxpYXNlcyB0byA6YzpkYXRhOmBQeUV4Y19PU0Vycm9yYDoKKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgQyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09KworfCA6YzpkYXRhOmBQeUV4Y19FbnZpcm9ubWVudEVycm9yYCAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0lPRXJyb3JgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfV2luZG93c0Vycm9yYCAgICAgICAgfCBcKDMpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlc2UgYWxpYXNlcyB1c2VkIHRvIGJlIHNlcGFyYXRlIGV4Y2VwdGlvbiB0eXBlcy4KKwogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IFB5RXhjX0Jhc2VFeGNlcHRpb24KQEAgLTY0OSwyOCArNzQ3LDQyIEBACiAgICBzaW5nbGU6IFB5RXhjX0xvb2t1cEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0Fzc2VydGlvbkVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0F0dHJpYnV0ZUVycm9yCisgICBzaW5nbGU6IFB5RXhjX0Jsb2NraW5nSU9FcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Ccm9rZW5QaXBlRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfQ29ubmVjdGlvbkVycm9yCisgICBzaW5nbGU6IFB5RXhjX0Nvbm5lY3Rpb25BYm9ydGVkRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfQ29ubmVjdGlvblJlZnVzZWRFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Db25uZWN0aW9uUmVzZXRFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19FT0ZFcnJvcgotICAgc2luZ2xlOiBQeUV4Y19FbnZpcm9ubWVudEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0ZpbGVFeGlzdHNFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19GaWxlTm90Rm91bmRFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IKLSAgIHNpbmdsZTogUHlFeGNfSU9FcnJvcgogICAgc2luZ2xlOiBQeUV4Y19JbXBvcnRFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19JbmRleEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0ludGVycnVwdGVkRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfS2V5RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQKICAgIHNpbmdsZTogUHlFeGNfTWVtb3J5RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfTmFtZUVycm9yCisgICBzaW5nbGU6IFB5RXhjX05vdEFEaXJlY3RvcnlFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX09TRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfT3ZlcmZsb3dFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19QZXJtaXNzaW9uRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfUHJvY2Vzc0xvb2t1cEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1JlZmVyZW5jZUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1J1bnRpbWVFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19TeW50YXhFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19TeXN0ZW1FcnJvcgogICAgc2luZ2xlOiBQeUV4Y19TeXN0ZW1FeGl0CisgICBzaW5nbGU6IFB5RXhjX1RpbWVvdXRFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19UeXBlRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfVmFsdWVFcnJvcgotICAgc2luZ2xlOiBQeUV4Y19XaW5kb3dzRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfRW52aXJvbm1lbnRFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19JT0Vycm9yCisgICBzaW5nbGU6IFB5RXhjX1dpbmRvd3NFcnJvcgogCiBOb3RlczoKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2Z1bmN0aW9uLnJzdCBiL0RvYy9jLWFwaS9mdW5jdGlvbi5yc3QKaW5kZXggMzE4MDVmZC4uYWQ5ODMyMiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2Z1bmN0aW9uLnJzdAorKysgYi9Eb2MvYy1hcGkvZnVuY3Rpb24ucnN0CkBAIC0zOCw2ICszOCwxNiBAQAogICAgb2JqZWN0LCB0aGUgYXJndW1lbnQgZGVmYXVsdHMgYW5kIGNsb3N1cmUgYXJlIHNldCB0byAqTlVMTCouCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpxdWFsbmFtZSkKKworICAgQXMgOmM6ZnVuYzpgUHlGdW5jdGlvbl9OZXdgLCBidXQgYWxzbyBhbGxvd3MgdG8gc2V0IHRoZSBmdW5jdGlvbiBvYmplY3QncworICAgYGBfX3F1YWxuYW1lX19gYCBhdHRyaWJ1dGUuICAqcXVhbG5hbWUqIHNob3VsZCBiZSBhIHVuaWNvZGUgb2JqZWN0IG9yIE5VTEw7CisgICBpZiBOVUxMLCB0aGUgYGBfX3F1YWxuYW1lX19gYCBhdHRyaWJ1dGUgaXMgc2V0IHRvIHRoZSBzYW1lIHZhbHVlIGFzIGl0cworICAgYGBfX25hbWVfX2BgIGF0dHJpYnV0ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUZ1bmN0aW9uX0dldENvZGUoUHlPYmplY3QgKm9wKQogCiAgICBSZXR1cm4gdGhlIGNvZGUgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0ICpvcCouCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvaW1wb3J0LnJzdCBiL0RvYy9jLWFwaS9pbXBvcnQucnN0CmluZGV4IGNmNDgzNjMuLmMzYzhmNDIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbXBvcnQucnN0CisrKyBiL0RvYy9jLWFwaS9pbXBvcnQucnN0CkBAIC0zMCwxMyArMzAsMTMgQEAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKGNvbnN0IGNoYXIgKm5hbWUpCiAKLSAgIFRoaXMgdmVyc2lvbiBvZiA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVgIGRvZXMgbm90IGJsb2NrLiBJdCdzIGludGVuZGVkCi0gICB0byBiZSB1c2VkIGluIEMgZnVuY3Rpb25zIHRoYXQgaW1wb3J0IG90aGVyIG1vZHVsZXMgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uLgotICAgVGhlIGltcG9ydCBtYXkgYmxvY2sgaWYgYW5vdGhlciB0aHJlYWQgaG9sZHMgdGhlIGltcG9ydCBsb2NrLiBUaGUgZnVuY3Rpb24KLSAgIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2tgIG5ldmVyIGJsb2Nrcy4gSXQgZmlyc3QgdHJpZXMgdG8gZmV0Y2gKLSAgIHRoZSBtb2R1bGUgZnJvbSBzeXMubW9kdWxlcyBhbmQgZmFsbHMgYmFjayB0byA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVgCi0gICB1bmxlc3MgdGhlIGxvY2sgaXMgaGVsZCwgaW4gd2hpY2ggY2FzZSB0aGUgZnVuY3Rpb24gd2lsbCByYWlzZSBhbgotICAgOmV4YzpgSW1wb3J0RXJyb3JgLgorICAgVGhpcyBmdW5jdGlvbiBpcyBhIGRlcHJlY2F0ZWQgYWxpYXMgb2YgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byBmYWlsIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGltcG9ydCBsb2NrIHdhcyBoZWxkCisgICAgICBieSBhbm90aGVyIHRocmVhZC4gIEluIFB5dGhvbiAzLjMgdGhvdWdoLCB0aGUgbG9ja2luZyBzY2hlbWUgc3dpdGNoZWQKKyAgICAgIHRvIHBlci1tb2R1bGUgbG9ja3MgZm9yIG1vc3QgcHVycG9zZXMsIHNvIHRoaXMgZnVuY3Rpb24ncyBzcGVjaWFsCisgICAgICBiZWhhdmlvdXIgaXNuJ3QgbmVlZGVkIGFueW1vcmUuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeChjaGFyICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKmZyb21saXN0KQpAQCAtNDQsOCArNDQsNyBAQAogICAgLi4gaW5kZXg6OiBidWlsdGluOiBfX2ltcG9ydF9fCiAKICAgIEltcG9ydCBhIG1vZHVsZS4gIFRoaXMgaXMgYmVzdCBkZXNjcmliZWQgYnkgcmVmZXJyaW5nIHRvIHRoZSBidWlsdC1pbiBQeXRob24KLSAgIGZ1bmN0aW9uIDpmdW5jOmBfX2ltcG9ydF9fYCwgYXMgdGhlIHN0YW5kYXJkIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbiBjYWxscwotICAgdGhpcyBmdW5jdGlvbiBkaXJlY3RseS4KKyAgIGZ1bmN0aW9uIDpmdW5jOmBfX2ltcG9ydF9fYC4KIAogICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZSBvciB0b3AtbGV2ZWwKICAgIHBhY2thZ2UsIG9yICpOVUxMKiB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQgb24gZmFpbHVyZS4gIExpa2UgZm9yCkBAIC01Nyw3ICs1Niw3IEBACiAgICA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwoY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQogCiAgICBJbXBvcnQgYSBtb2R1bGUuICBUaGlzIGlzIGJlc3QgZGVzY3JpYmVkIGJ5IHJlZmVycmluZyB0byB0aGUgYnVpbHQtaW4gUHl0aG9uCiAgICBmdW5jdGlvbiA6ZnVuYzpgX19pbXBvcnRfX2AsIGFzIHRoZSBzdGFuZGFyZCA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb24gY2FsbHMKQEAgLTY4LDYgKzY3LDE2IEBACiAgICB0aGUgcmV0dXJuIHZhbHVlIHdoZW4gYSBzdWJtb2R1bGUgb2YgYSBwYWNrYWdlIHdhcyByZXF1ZXN0ZWQgaXMgbm9ybWFsbHkgdGhlCiAgICB0b3AtbGV2ZWwgcGFja2FnZSwgdW5sZXNzIGEgbm9uLWVtcHR5ICpmcm9tbGlzdCogd2FzIGdpdmVuLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdGAsIGJ1dCB0aGUgbmFtZSBpcyBhbgorICAgVVRGLTggZW5jb2RlZCBzdHJpbmcgaW5zdGVhZCBvZiBhIFVuaWNvZGUgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgTmVnYXRpdmUgdmFsdWVzIGZvciAqKmxldmVsKiogYXJlIG5vIGxvbmdlciBhY2NlcHRlZC4KIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9JbXBvcnQoUHlPYmplY3QgKm5hbWUpCiAKQEAgLTg2LDcgKzk1LDcgQEAKICAgIGFuIGV4Y2VwdGlvbiBzZXQgb24gZmFpbHVyZSAodGhlIG1vZHVsZSBzdGlsbCBleGlzdHMgaW4gdGhpcyBjYXNlKS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0FkZE1vZHVsZShjb25zdCBjaGFyICpuYW1lKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUpCiAKICAgIFJldHVybiB0aGUgbW9kdWxlIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIGEgbW9kdWxlIG5hbWUuICBUaGUgKm5hbWUqIGFyZ3VtZW50CiAgICBtYXkgYmUgb2YgdGhlIGZvcm0gYGBwYWNrYWdlLm1vZHVsZWBgLiBGaXJzdCBjaGVjayB0aGUgbW9kdWxlcyBkaWN0aW9uYXJ5IGlmCkBAIC0xMDAsNiArMTA5LDE0IEBACiAgICAgICBvciBvbmUgb2YgaXRzIHZhcmlhbnRzIHRvIGltcG9ydCBhIG1vZHVsZS4gIFBhY2thZ2Ugc3RydWN0dXJlcyBpbXBsaWVkIGJ5IGEKICAgICAgIGRvdHRlZCBuYW1lIGZvciAqbmFtZSogYXJlIG5vdCBjcmVhdGVkIGlmIG5vdCBhbHJlYWR5IHByZXNlbnQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfQWRkTW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCisKKyAgIFNpbWlsYXIgdG8gOmM6ZnVuYzpgUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0YCwgYnV0IHRoZSBuYW1lIGlzIGEgVVRGLTgKKyAgIGVuY29kZWQgc3RyaW5nIGluc3RlYWQgb2YgYSBVbmljb2RlIG9iamVjdC4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpjbykKIApAQCAtMTM2LDI1ICsxNTMsNDMgQEAKICAgIFNlZSBhbHNvIDpjOmZ1bmM6YFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lc2AuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvLCBjaGFyICpwYXRobmFtZSwgY2hhciAqY3BhdGhuYW1lKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmNvLCBQeU9iamVjdCAqcGF0aG5hbWUsIFB5T2JqZWN0ICpjcGF0aG5hbWUpCiAKICAgIExpa2UgOmM6ZnVuYzpgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeGAsIGJ1dCB0aGUgOmF0dHI6YF9fY2FjaGVkX19gCiAgICBhdHRyaWJ1dGUgb2YgdGhlIG1vZHVsZSBvYmplY3QgaXMgc2V0IHRvICpjcGF0aG5hbWUqIGlmIGl0IGlzCiAgICBub24tYGBOVUxMYGAuICBPZiB0aGUgdGhyZWUgZnVuY3Rpb25zLCB0aGlzIGlzIHRoZSBwcmVmZXJyZWQgb25lIHRvIHVzZS4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvLCBjaGFyICpwYXRobmFtZSwgY2hhciAqY3BhdGhuYW1lKQorCisgICBMaWtlIDpjOmZ1bmM6YFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0YCwgYnV0ICpuYW1lKiwgKnBhdGhuYW1lKiBhbmQKKyAgICpjcGF0aG5hbWUqIGFyZSBVVEYtOCBlbmNvZGVkIHN0cmluZ3MuIEF0dGVtcHRzIGFyZSBhbHNvIG1hZGUgdG8gZmlndXJlIG91dAorICAgd2hhdCB0aGUgdmFsdWUgZm9yICpwYXRobmFtZSogc2hvdWxkIGJlIGZyb20gKmNwYXRobmFtZSogaWYgdGhlIGZvcm1lciBpcworICAgc2V0IHRvIGBgTlVMTGBgLgorCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVc2VzIDpmdW5jOmBpbXAuc291cmNlX2Zyb21fY2FjaGUoKWAgaW4gY2FsY3VsYXRpbmcgdGhlIHNvdXJjZSBwYXRoIGlmCisgICAgICBvbmx5IHRoZSBieXRlY29kZSBwYXRoIGlzIHByb3ZpZGVkLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBsb25nIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKCkKIAogICAgUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIFB5dGhvbiBieXRlY29kZSBmaWxlcyAoYS5rLmEuIDpmaWxlOmAucHljYCBhbmQKICAgIDpmaWxlOmAucHlvYCBmaWxlcykuICBUaGUgbWFnaWMgbnVtYmVyIHNob3VsZCBiZSBwcmVzZW50IGluIHRoZSBmaXJzdCBmb3VyIGJ5dGVzCi0gICBvZiB0aGUgYnl0ZWNvZGUgZmlsZSwgaW4gbGl0dGxlLWVuZGlhbiBieXRlIG9yZGVyLgorICAgb2YgdGhlIGJ5dGVjb2RlIGZpbGUsIGluIGxpdHRsZS1lbmRpYW4gYnl0ZSBvcmRlci4gUmV0dXJucyAtMSBvbiBlcnJvci4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJldHVybiB2YWx1ZSBvZiAtMSB1cG9uIGZhaWx1cmUuCiAKIAogLi4gYzpmdW5jdGlvbjo6IGNvbnN0IGNoYXIgKiBQeUltcG9ydF9HZXRNYWdpY1RhZygpCiAKICAgIFJldHVybiB0aGUgbWFnaWMgdGFnIHN0cmluZyBmb3IgOnBlcDpgMzE0N2AgZm9ybWF0IFB5dGhvbiBieXRlY29kZSBmaWxlCi0gICBuYW1lcy4KKyAgIG5hbWVzLiAgS2VlcCBpbiBtaW5kIHRoYXQgdGhlIHZhbHVlIGF0IGBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2BgIGlzCisgICBhdXRob3JpdGF0aXZlIGFuZCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoaXMgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC0yMDAsNyArMjM1LDcgQEAKICAgIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZShjaGFyICpuYW1lKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUpCiAKICAgIExvYWQgYSBmcm96ZW4gbW9kdWxlIG5hbWVkICpuYW1lKi4gIFJldHVybiBgYDFgYCBmb3Igc3VjY2VzcywgYGAwYGAgaWYgdGhlCiAgICBtb2R1bGUgaXMgbm90IGZvdW5kLCBhbmQgYGAtMWBgIHdpdGggYW4gZXhjZXB0aW9uIHNldCBpZiB0aGUgaW5pdGlhbGl6YXRpb24KQEAgLTIwOCw2ICsyNDMsMTQgQEAKICAgIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZWAuICAoTm90ZSB0aGUgbWlzbm9tZXIgLS0tIHRoaXMgZnVuY3Rpb24gd291bGQKICAgIHJlbG9hZCB0aGUgbW9kdWxlIGlmIGl0IHdhcyBhbHJlYWR5IGltcG9ydGVkLikKIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoY2hhciAqbmFtZSkKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3RgLCBidXQgdGhlIG5hbWUgaXMgYQorICAgVVRGLTggZW5jb2RlZCBzdHJpbmcgaW5zdGVhZCBvZiBhIFVuaWNvZGUgb2JqZWN0LgorCiAKIC4uIGM6dHlwZTo6IHN0cnVjdCBfZnJvemVuCiAKQEAgLTI0NywxMyArMjkwLDEzIEBACiAKICAgIFN0cnVjdHVyZSBkZXNjcmliaW5nIGEgc2luZ2xlIGVudHJ5IGluIHRoZSBsaXN0IG9mIGJ1aWx0LWluIG1vZHVsZXMuICBFYWNoIG9mCiAgICB0aGVzZSBzdHJ1Y3R1cmVzIGdpdmVzIHRoZSBuYW1lIGFuZCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgYSBtb2R1bGUgYnVpbHQKLSAgIGludG8gdGhlIGludGVycHJldGVyLiAgUHJvZ3JhbXMgd2hpY2ggZW1iZWQgUHl0aG9uIG1heSB1c2UgYW4gYXJyYXkgb2YgdGhlc2UKLSAgIHN0cnVjdHVyZXMgaW4gY29uanVuY3Rpb24gd2l0aCA6YzpmdW5jOmBQeUltcG9ydF9FeHRlbmRJbml0dGFiYCB0byBwcm92aWRlCi0gICBhZGRpdGlvbmFsIGJ1aWx0LWluIG1vZHVsZXMuICBUaGUgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4KLSAgIDpmaWxlOmBJbmNsdWRlL2ltcG9ydC5oYCBhczo6CisgICBpbnRvIHRoZSBpbnRlcnByZXRlci4gIFRoZSBuYW1lIGlzIGFuIEFTQ0lJIGVuY29kZWQgc3RyaW5nLiAgUHJvZ3JhbXMgd2hpY2gKKyAgIGVtYmVkIFB5dGhvbiBtYXkgdXNlIGFuIGFycmF5IG9mIHRoZXNlIHN0cnVjdHVyZXMgaW4gY29uanVuY3Rpb24gd2l0aAorICAgOmM6ZnVuYzpgUHlJbXBvcnRfRXh0ZW5kSW5pdHRhYmAgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGJ1aWx0LWluIG1vZHVsZXMuCisgICBUaGUgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4gOmZpbGU6YEluY2x1ZGUvaW1wb3J0LmhgIGFzOjoKIAogICAgICAgc3RydWN0IF9pbml0dGFiIHsKLSAgICAgICAgICBjaGFyICpuYW1lOworICAgICAgICAgIGNoYXIgKm5hbWU7ICAgICAgICAgICAgICAgICAvKiBBU0NJSSBlbmNvZGVkIHN0cmluZyAqLwogICAgICAgICAgIFB5T2JqZWN0KiAoKmluaXRmdW5jKSh2b2lkKTsKICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbmRleC5yc3QgYi9Eb2MvYy1hcGkvaW5kZXgucnN0CmluZGV4IDEyYTFlYzcuLmEwY2I2ZTUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbmRleC5yc3QKKysrIGIvRG9jL2MtYXBpL2luZGV4LnJzdApAQCAtMjUsMyArMjUsNCBAQAogICAgaW5pdC5yc3QKICAgIG1lbW9yeS5yc3QKICAgIG9iamltcGwucnN0CisgICBzdGFibGUucnN0CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvaW5pdC5yc3QgYi9Eb2MvYy1hcGkvaW5pdC5yc3QKaW5kZXggNzUwN2UzYi4uOTVmZjRlZSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2luaXQucnN0CisrKyBiL0RvYy9jLWFwaS9pbml0LnJzdApAQCAtNjQ2LDcgKzY0Niw3IEBACiAgICA6YzpmdW5jOmBQeUdJTFN0YXRlX1JlbGVhc2VgIG9uIHRoZSBzYW1lIHRocmVhZC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlUaHJlYWRTdGF0ZSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpCisuLiBjOmZ1bmN0aW9uOjogUHlUaHJlYWRTdGF0ZSogUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKQogCiAgICBHZXQgdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlIGZvciB0aGlzIHRocmVhZC4gIE1heSByZXR1cm4gYGBOVUxMYGAgaWYgbm8KICAgIEdJTFN0YXRlIEFQSSBoYXMgYmVlbiB1c2VkIG9uIHRoZSBjdXJyZW50IHRocmVhZC4gIE5vdGUgdGhhdCB0aGUgbWFpbiB0aHJlYWQKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9saXN0LnJzdCBiL0RvYy9jLWFwaS9saXN0LnJzdAppbmRleCBmZWI5MDE1Li41YjI2M2E3IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbGlzdC5yc3QKKysrIGIvRG9jL2MtYXBpL2xpc3QucnN0CkBAIC0xNDIsMyArMTQyLDEwIEBACiAKICAgIFJldHVybiBhIG5ldyB0dXBsZSBvYmplY3QgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgKmxpc3QqOyBlcXVpdmFsZW50IHRvCiAgICBgYHR1cGxlKGxpc3QpYGAuCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeUxpc3RfQ2xlYXJGcmVlTGlzdCgpCisKKyAgIENsZWFyIHRoZSBmcmVlIGxpc3QuIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGZyZWVkIGl0ZW1zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9sb25nLnJzdCBiL0RvYy9jLWFwaS9sb25nLnJzdAppbmRleCBlMmY1OGFkLi4zNjVhYmQ3IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbG9uZy5yc3QKKysrIGIvRG9jL2MtYXBpL2xvbmcucnN0CkBAIC0xMDAsNiArMTAwLDIwIEBACiAgICBzdHJpbmcgaXMgZmlyc3QgZW5jb2RlZCB0byBhIGJ5dGUgc3RyaW5nIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsYAogICAgYW5kIHRoZW4gY29udmVydGVkIHVzaW5nIDpjOmZ1bmM6YFB5TG9uZ19Gcm9tU3RyaW5nYC4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdGAuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbVVuaWNvZGVPYmplY3QoUHlPYmplY3QgKnUsIGludCBiYXNlKQorCisgICBDb252ZXJ0IGEgc2VxdWVuY2Ugb2YgVW5pY29kZSBkaWdpdHMgaW4gdGhlIHN0cmluZyAqdSogdG8gYSBQeXRob24gaW50ZWdlcgorICAgdmFsdWUuICBUaGUgVW5pY29kZSBzdHJpbmcgaXMgZmlyc3QgZW5jb2RlZCB0byBhIGJ5dGUgc3RyaW5nIHVzaW5nCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbGAgYW5kIHRoZW4gY29udmVydGVkIHVzaW5nCisgICA6YzpmdW5jOmBQeUxvbmdfRnJvbVN0cmluZ2AuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKnApCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9tZW1vcnl2aWV3LnJzdCBiL0RvYy9jLWFwaS9tZW1vcnl2aWV3LnJzdAppbmRleCA2YjQ5Y2RmLi41ZTUwOTc3IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbWVtb3J5dmlldy5yc3QKKysrIGIvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0CkBAIC0xNywxNiArMTcsMjEgQEAKIAogICAgQ3JlYXRlIGEgbWVtb3J5dmlldyBvYmplY3QgZnJvbSBhbiBvYmplY3QgdGhhdCBwcm92aWRlcyB0aGUgYnVmZmVyIGludGVyZmFjZS4KICAgIElmICpvYmoqIHN1cHBvcnRzIHdyaXRhYmxlIGJ1ZmZlciBleHBvcnRzLCB0aGUgbWVtb3J5dmlldyBvYmplY3Qgd2lsbCBiZQotICAgcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBvdGhlcndpc2UgaXQgd2lsbCBiZSByZWFkLW9ubHkuCisgICByZWFkL3dyaXRlLCBvdGhlcndpc2UgaXQgbWF5IGJlIGVpdGhlciByZWFkLW9ubHkgb3IgcmVhZC93cml0ZSBhdCB0aGUKKyAgIGRpc2NyZXRpb24gb2YgdGhlIGV4cG9ydGVyLgogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QgKlB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KGNoYXIgKm1lbSwgUHlfc3NpemVfdCBzaXplLCBpbnQgZmxhZ3MpCisKKyAgIENyZWF0ZSBhIG1lbW9yeXZpZXcgb2JqZWN0IHVzaW5nICptZW0qIGFzIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlci4KKyAgICpmbGFncyogY2FuIGJlIG9uZSBvZiA6YzptYWNybzpgUHlCVUZfUkVBRGAgb3IgOmM6bWFjcm86YFB5QlVGX1dSSVRFYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCAqUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoUHlfYnVmZmVyICp2aWV3KQogCiAgICBDcmVhdGUgYSBtZW1vcnl2aWV3IG9iamVjdCB3cmFwcGluZyB0aGUgZ2l2ZW4gYnVmZmVyIHN0cnVjdHVyZSAqdmlldyouCi0gICBUaGUgbWVtb3J5dmlldyBvYmplY3QgdGhlbiBvd25zIHRoZSBidWZmZXIgcmVwcmVzZW50ZWQgYnkgKnZpZXcqLCB3aGljaAotICAgbWVhbnMgeW91IHNob3VsZG4ndCB0cnkgdG8gY2FsbCA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYCB5b3Vyc2VsZjogaXQKLSAgIHdpbGwgYmUgZG9uZSBvbiBkZWFsbG9jYXRpb24gb2YgdGhlIG1lbW9yeXZpZXcgb2JqZWN0LgotCisgICBGb3Igc2ltcGxlIGJ5dGUgYnVmZmVycywgOmM6ZnVuYzpgUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnlgIGlzIHRoZSBwcmVmZXJyZWQKKyAgIGZ1bmN0aW9uLgogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QgKlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpvYmosIGludCBidWZmZXJ0eXBlLCBjaGFyIG9yZGVyKQogCkBAIC00MywxMCArNDgsMTYgQEAKICAgIGN1cnJlbnRseSBhbGxvd2VkIHRvIGNyZWF0ZSBzdWJjbGFzc2VzIG9mIDpjbGFzczpgbWVtb3J5dmlld2AuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X2J1ZmZlciAqUHlNZW1vcnlWaWV3X0dFVF9CVUZGRVIoUHlPYmplY3QgKm9iaikKKy4uIGM6ZnVuY3Rpb246OiBQeV9idWZmZXIgKlB5TWVtb3J5Vmlld19HRVRfQlVGRkVSKFB5T2JqZWN0ICptdmlldykKIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgYnVmZmVyIHN0cnVjdHVyZSB3cmFwcGVkIGJ5IHRoZSBnaXZlbgotICAgbWVtb3J5dmlldyBvYmplY3QuICBUaGUgb2JqZWN0ICoqbXVzdCoqIGJlIGEgbWVtb3J5dmlldyBpbnN0YW5jZTsKLSAgIHRoaXMgbWFjcm8gZG9lc24ndCBjaGVjayBpdHMgdHlwZSwgeW91IG11c3QgZG8gaXQgeW91cnNlbGYgb3IgeW91Ci0gICB3aWxsIHJpc2sgY3Jhc2hlcy4KKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeXZpZXcncyBwcml2YXRlIGNvcHkgb2YgdGhlIGV4cG9ydGVyJ3MgYnVmZmVyLgorICAgKm12aWV3KiAqKm11c3QqKiBiZSBhIG1lbW9yeXZpZXcgaW5zdGFuY2U7IHRoaXMgbWFjcm8gZG9lc24ndCBjaGVjayBpdHMgdHlwZSwKKyAgIHlvdSBtdXN0IGRvIGl0IHlvdXJzZWxmIG9yIHlvdSB3aWxsIHJpc2sgY3Jhc2hlcy4KKworLi4gYzpmdW5jdGlvbjo6IFB5X2J1ZmZlciAqUHlNZW1vcnlWaWV3X0dFVF9CQVNFKFB5T2JqZWN0ICptdmlldykKKworICAgUmV0dXJuIGVpdGhlciBhIHBvaW50ZXIgdG8gdGhlIGV4cG9ydGluZyBvYmplY3QgdGhhdCB0aGUgbWVtb3J5dmlldyBpcyBiYXNlZAorICAgb24gb3IgKk5VTEwqIGlmIHRoZSBtZW1vcnl2aWV3IGhhcyBiZWVuIGNyZWF0ZWQgYnkgb25lIG9mIHRoZSBmdW5jdGlvbnMKKyAgIDpjOmZ1bmM6YFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5YCBvciA6YzpmdW5jOmBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcmAuCisgICAqbXZpZXcqICoqbXVzdCoqIGJlIGEgbWVtb3J5dmlldyBpbnN0YW5jZS4KIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21vZHVsZS5yc3QgYi9Eb2MvYy1hcGkvbW9kdWxlLnJzdAppbmRleCBmZmQ2OGUzLi4zYmU3ZmUzIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbW9kdWxlLnJzdAorKysgYi9Eb2MvYy1hcGkvbW9kdWxlLnJzdApAQCAtMjksNyArMjksNyBAQAogICAgOmM6ZGF0YTpgUHlNb2R1bGVfVHlwZWAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9OZXcoY29uc3QgY2hhciAqbmFtZSkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfTmV3T2JqZWN0KFB5T2JqZWN0ICpuYW1lKQogCiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IF9fbmFtZV9fIChtb2R1bGUgYXR0cmlidXRlKQpAQCAtNDAsNiArNDAsMTQgQEAKICAgIE9ubHkgdGhlIG1vZHVsZSdzIDphdHRyOmBfX2RvY19fYCBhbmQgOmF0dHI6YF9fbmFtZV9fYCBhdHRyaWJ1dGVzIGFyZSBmaWxsZWQgaW47CiAgICB0aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgYSA6YXR0cjpgX19maWxlX19gIGF0dHJpYnV0ZS4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9OZXcoY29uc3QgY2hhciAqbmFtZSkKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeUltcG9ydF9OZXdPYmplY3RgLCBidXQgdGhlIG5hbWUgaXMgYW4gVVRGLTggZW5jb2RlZAorICAgc3RyaW5nIGluc3RlYWQgb2YgYSBVbmljb2RlIG9iamVjdC4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0dldERpY3QoUHlPYmplY3QgKm1vZHVsZSkKIApAQCAtNTIsNyArNjAsNyBAQAogICAgbWFuaXB1bGF0ZSBhIG1vZHVsZSdzIDphdHRyOmBfX2RpY3RfX2AuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5TW9kdWxlX0dldE5hbWUoUHlPYmplY3QgKm1vZHVsZSkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfR2V0TmFtZU9iamVjdChQeU9iamVjdCAqbW9kdWxlKQogCiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IF9fbmFtZV9fIChtb2R1bGUgYXR0cmlidXRlKQpAQCAtNjEsMTUgKzY5LDEzIEBACiAgICBSZXR1cm4gKm1vZHVsZSoncyA6YXR0cjpgX19uYW1lX19gIHZhbHVlLiAgSWYgdGhlIG1vZHVsZSBkb2VzIG5vdCBwcm92aWRlIG9uZSwKICAgIG9yIGlmIGl0IGlzIG5vdCBhIHN0cmluZywgOmV4YzpgU3lzdGVtRXJyb3JgIGlzIHJhaXNlZCBhbmQgKk5VTEwqIGlzIHJldHVybmVkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAotLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5TW9kdWxlX0dldEZpbGVuYW1lKFB5T2JqZWN0ICptb2R1bGUpCiAKLSAgIFNpbWlsYXIgdG8gOmM6ZnVuYzpgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3RgIGJ1dCByZXR1cm4gdGhlIGZpbGVuYW1lCi0gICBlbmNvZGVkIHRvICd1dGYtOCcuCisuLiBjOmZ1bmN0aW9uOjogY2hhciogUHlNb2R1bGVfR2V0TmFtZShQeU9iamVjdCAqbW9kdWxlKQogCi0gICAuLiBkZXByZWNhdGVkOjogMy4yCi0gICAgICA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZWAgcmFpc2VzIDpjOnR5cGU6YFVuaWNvZGVFbmNvZGVFcnJvcmAgb24KLSAgICAgIHVuZW5jb2RhYmxlIGZpbGVuYW1lcywgdXNlIDpjOmZ1bmM6YFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0YCBpbnN0ZWFkLgorICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeU1vZHVsZV9HZXROYW1lT2JqZWN0YCBidXQgcmV0dXJuIHRoZSBuYW1lIGVuY29kZWQgdG8KKyAgIGBgJ3V0Zi04J2BgLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QoUHlPYmplY3QgKm1vZHVsZSkKQEAgLTgxLDExICs4NywyMSBAQAogICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggKm1vZHVsZSogd2FzIGxvYWRlZCB1c2luZyAqbW9kdWxlKidzCiAgICA6YXR0cjpgX19maWxlX19gIGF0dHJpYnV0ZS4gIElmIHRoaXMgaXMgbm90IGRlZmluZWQsIG9yIGlmIGl0IGlzIG5vdCBhCiAgICB1bmljb2RlIHN0cmluZywgcmFpc2UgOmV4YzpgU3lzdGVtRXJyb3JgIGFuZCByZXR1cm4gKk5VTEwqOyBvdGhlcndpc2UgcmV0dXJuCi0gICBhIHJlZmVyZW5jZSB0byBhIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdGAuCisgICBhIHJlZmVyZW5jZSB0byBhIFVuaWNvZGUgb2JqZWN0LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBjOmZ1bmN0aW9uOjogY2hhciogUHlNb2R1bGVfR2V0RmlsZW5hbWUoUHlPYmplY3QgKm1vZHVsZSkKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdGAgYnV0IHJldHVybiB0aGUgZmlsZW5hbWUKKyAgIGVuY29kZWQgdG8gJ3V0Zi04Jy4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMgorICAgICAgOmM6ZnVuYzpgUHlNb2R1bGVfR2V0RmlsZW5hbWVgIHJhaXNlcyA6Yzp0eXBlOmBVbmljb2RlRW5jb2RlRXJyb3JgIG9uCisgICAgICB1bmVuY29kYWJsZSBmaWxlbmFtZXMsIHVzZSA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdGAgaW5zdGVhZC4KKworCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNb2R1bGVfR2V0U3RhdGUoUHlPYmplY3QgKm1vZHVsZSkKIAogICAgUmV0dXJuIHRoZSAic3RhdGUiIG9mIHRoZSBtb2R1bGUsIHRoYXQgaXMsIGEgcG9pbnRlciB0byB0aGUgYmxvY2sgb2YgbWVtb3J5CkBAIC05Nyw4ICsxMTMsMjggQEAKIAogICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgOmM6dHlwZTpgUHlNb2R1bGVEZWZgIHN0cnVjdCBmcm9tIHdoaWNoIHRoZSBtb2R1bGUgd2FzCiAgICBjcmVhdGVkLCBvciAqTlVMTCogaWYgdGhlIG1vZHVsZSB3YXNuJ3QgY3JlYXRlZCB3aXRoCi0gICA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGVgLgorICAgOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlYC5pCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlTdGF0ZV9GaW5kTW9kdWxlKFB5TW9kdWxlRGVmICpkZWYpCisKKyAgIFJldHVybnMgdGhlIG1vZHVsZSBvYmplY3QgdGhhdCB3YXMgY3JlYXRlZCBmcm9tICpkZWYqIGZvciB0aGUgY3VycmVudCBpbnRlcnByZXRlci4KKyAgIFRoaXMgbWV0aG9kIHJlcXVpcmVzIHRoYXQgdGhlIG1vZHVsZSBvYmplY3QgaGFzIGJlZW4gYXR0YWNoZWQgdG8gdGhlIGludGVycHJldGVyIHN0YXRlIHdpdGgKKyAgIDpjOmZ1bmM6YFB5U3RhdGVfQWRkTW9kdWxlYCBiZWZvcmVoYW5kLiBJbiBjYXNlIHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZSBvYmplY3QgaXMgbm90CisgICBmb3VuZCBvciBoYXMgbm90IGJlZW4gYXR0YWNoZWQgdG8gdGhlIGludGVycHJldGVyIHN0YXRlIHlldCwgaXQgcmV0dXJucyBOVUxMLgorCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5U3RhdGVfQWRkTW9kdWxlKFB5TW9kdWxlRGVmICpkZWYsIFB5T2JqZWN0ICptb2R1bGUpCisKKyAgIEF0dGFjaGVzIHRoZSBtb2R1bGUgb2JqZWN0IHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gdG8gdGhlIGludGVycHJldGVyIHN0YXRlLiBUaGlzIGFsbG93cworICAgdGhlIG1vZHVsZSBvYmplY3QgdG8gYmUgYWNjZXNzaWJsZSB2aWEKKyAgIDpjOmZ1bmM6YFB5U3RhdGVfRmluZE1vZHVsZWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5U3RhdGVfUmVtb3ZlTW9kdWxlKFB5TW9kdWxlRGVmICpkZWYsIFB5T2JqZWN0ICptb2R1bGUpCisKKyAgIFJlbW92ZXMgdGhlIG1vZHVsZSBvYmplY3QgY3JlYXRlZCBmcm9tICpkZWYqIGZyb20gdGhlIGludGVycHJldGVyIHN0YXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogSW5pdGlhbGl6aW5nIEMgbW9kdWxlcwogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL29iamVjdC5yc3QgYi9Eb2MvYy1hcGkvb2JqZWN0LnJzdAppbmRleCBkMGQ0NWFkLi5kODk1NTQ3IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvb2JqZWN0LnJzdAorKysgYi9Eb2MvYy1hcGkvb2JqZWN0LnJzdApAQCAtNiw2ICs2LDE5IEBACiA9PT09PT09PT09PT09PT0KIAogCisuLiBjOnZhcjo6IFB5T2JqZWN0KiBQeV9Ob3RJbXBsZW1lbnRlZAorCisgICBUaGUgYGBOb3RJbXBsZW1lbnRlZGBgIHNpbmdsZXRvbiwgdXNlZCB0byBzaWduYWwgdGhhdCBhbiBvcGVyYXRpb24gaXMKKyAgIG5vdCBpbXBsZW1lbnRlZCBmb3IgdGhlIGdpdmVuIHR5cGUgY29tYmluYXRpb24uCisKKworLi4gYzptYWNybzo6IFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRAorCisgICBQcm9wZXJseSBoYW5kbGUgcmV0dXJuaW5nIDpjOmRhdGE6YFB5X05vdEltcGxlbWVudGVkYCBmcm9tIHdpdGhpbiBhIEMKKyAgIGZ1bmN0aW9uICh0aGF0IGlzLCBpbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBOb3RJbXBsZW1lbnRlZCBhbmQKKyAgIHJldHVybiBpdCkuCisKKwogLi4gYzpmdW5jdGlvbjo6IGludCBQeU9iamVjdF9QcmludChQeU9iamVjdCAqbywgRklMRSAqZnAsIGludCBmbGFncykKIAogICAgUHJpbnQgYW4gb2JqZWN0ICpvKiwgb24gZmlsZSAqZnAqLiAgUmV0dXJucyBgYC0xYGAgb24gZXJyb3IuICBUaGUgZmxhZ3MgYXJndW1lbnQKQEAgLTg4LDYgKzEwMSwyMiBAQAogICAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIHN0YXRlbWVudCBgYGRlbCBvLmF0dHJfbmFtZWBgLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlUeXBlX0dlbmVyaWNHZXREaWN0KFB5T2JqZWN0ICpvLCB2b2lkICpjb250ZXh0KQorCisgICBBIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBnZXR0ZXIgb2YgYSBgYF9fZGljdF9fYGAgZGVzY3JpcHRvci4gSXQKKyAgIGNyZWF0ZXMgdGhlIGRpY3Rpb25hcnkgaWYgbmVjZXNzYXJ5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VHlwZV9HZW5lcmljU2V0RGljdChQeU9iamVjdCAqbywgdm9pZCAqY29udGV4dCkKKworICAgQSBnZW5lcmljIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2V0dGVyIG9mIGEgYGBfX2RpY3RfX2BgIGRlc2NyaXB0b3IuIFRoaXMKKyAgIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGFsbG93IHRoZSBkaWN0aW9uYXJ5IHRvIGJlIGRlbGV0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlPYmplY3RfUmljaENvbXBhcmUoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIsIGludCBvcGlkKQogCiAgICBDb21wYXJlIHRoZSB2YWx1ZXMgb2YgKm8xKiBhbmQgKm8yKiB1c2luZyB0aGUgb3BlcmF0aW9uIHNwZWNpZmllZCBieSAqb3BpZCosCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc2V0LnJzdCBiL0RvYy9jLWFwaS9zZXQucnN0CmluZGV4IDY2YjQ3YzQuLjVmMGVmOTAgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zZXQucnN0CisrKyBiL0RvYy9jLWFwaS9zZXQucnN0CkBAIC0xNTcsMyArMTU3LDEwIEBACiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5U2V0X0NsZWFyKFB5T2JqZWN0ICpzZXQpCiAKICAgIEVtcHR5IGFuIGV4aXN0aW5nIHNldCBvZiBhbGwgZWxlbWVudHMuCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeVNldF9DbGVhckZyZWVMaXN0KCkKKworICAgQ2xlYXIgdGhlIGZyZWUgbGlzdC4gUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZWQgaXRlbXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N0YWJsZS5yc3QgYi9Eb2MvYy1hcGkvc3RhYmxlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjg4YzFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2MtYXBpL3N0YWJsZS5yc3QKQEAgLTAsMCArMSwzOSBAQAorLi4gaGlnaGxpZ2h0bGFuZzo6IGMKKworLi4gX3N0YWJsZToKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorU3RhYmxlIEFwcGxpY3Rpb24gQmluYXJ5IEludGVyZmFjZQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitUcmFkaXRpb25hbGx5LCB0aGUgQyBBUEkgb2YgUHl0aG9uIHdpbGwgY2hhbmdlIHdpdGggZXZlcnkgcmVsZWFzZS4KK01vc3QgY2hhbmdlcyB3aWxsIGJlIHNvdXJjZS1jb21wYXRpYmxlLCB0eXBpY2FsbHkgYnkgb25seSBhZGRpbmcgQVBJLAorcmF0aGVyIHRoYW4gY2hhbmdpbmcgZXhpc3RpbmcgQVBJIG9yIHJlbW92aW5nIEFQSSAoYWx0aG91Z2ggc29tZQoraW50ZXJmYWNlcyBkbyBnZXQgcmVtb3ZlZCBhZnRlciBiZWluZyBkZXByZWNhdGVkIGZpcnN0KS4KKworVW5mb3J0dW5hdGVseSwgdGhlIEFQSSBjb21wYXRpYmlsaXR5IGRvZXMgbm90IGV4dGVuZCB0byBiaW5hcnkKK2NvbXBhdGliaWxpdHkgKHRoZSBBQkkpLiBUaGUgcmVhc29uIGlzIHByaW1hcmlseSB0aGUgZXZvbHV0aW9uIG9mCitzdHJ1Y3QgZGVmaW5pdGlvbnMsIHdoZXJlIGFkZGl0aW9uIG9mIGEgbmV3IGZpZWxkLCBvciBjaGFuZ2luZwordGhlIHR5cGUgb2YgYSBmaWVsZCwgbWlnaHQgbm90IGJyZWFrIHRoZSBBUEksIGJ1dCBjYW4gYnJlYWsgdGhlIEFCSS4KK0FzIGEgY29uc2VxdWVuY2UsIGV4dGVuc2lvbiBtb2R1bGVzIG5lZWQgdG8gYmUgcmVjb21waWxlZCBmb3IKK2V2ZXJ5IFB5dGhvbiByZWxlYXNlIChhbHRob3VnaCBhbiBleGNlcHRpb24gaXMgcG9zc2libGUgb24gVW5peAord2hlbiBub25lIG9mIHRoZSBhZmZlY3RlZCBpbnRlcmZhY2VzIGFyZSB1c2VkKS4gSW4gYWRkaXRpb24sIG9uCitXaW5kb3dzLCBleHRlbnNpb24gbW9kdWxlcyBsaW5rIHdpdGggYSBzcGVjaWZpYyBweXRob25YWS5kbGwgYW5kCituZWVkIHRvIGJlIHJlY29tcGlsZWQgdG8gbGluayB3aXRoIGEgbmV3ZXIgb25lLgorCitTaW5jZSBQeXRob24gMy4yLCBhIHN1YnNldCBvZiB0aGUgQVBJIGhhcyBiZWVuIGRlY2xhcmVkIHRvIGd1YXJhbnRlZQorYSBzdGFibGUgQUJJLiBFeHRlbnNpb24gbW9kdWxlcyB3aXNoaW5nIHRvIHVzZSB0aGlzIEFQSSBuZWVkIHRvIGRlZmluZQorUHlfTElNSVRFRF9BUEkuIEEgbnVtYmVyIG9mIGludGVycHJldGVyIGRldGFpbHMgdGhlbiBiZWNvbWUgaGlkZGVuCitmcm9tIHRoZSBleHRlbnNpb24gbW9kdWxlOyBpbiByZXR1cm4sIGEgbW9kdWxlIGlzIGJ1aWx0IHRoYXQgd29ya3MKK29uIGFueSAzLnggdmVyc2lvbiAoeD49Mikgd2l0aG91dCByZWNvbXBpbGF0aW9uLiBJbiBzb21lIGNhc2VzLCB0aGUKK3N0YWJsZSBBQkkgbmVlZHMgdG8gYmUgZXh0ZW5kZWQgd2l0aCBuZXcgZnVuY3Rpb25zLiBFeHRlbnNpb25zIG1vZHVsZXMKK3dpc2hpbmcgdG8gdXNlIHRoZXNlIG5ldyBBUElzIG5lZWQgdG8gc2V0IFB5X0xJTUlURURfQVBJIHRvIHRoZQorUFlfVkVSU0lPTl9IRVggdmFsdWUgb2YgdGhlIG1pbmltdW0gUHl0aG9uIHZlcnNpb24gdGhleSB3YW50IHRvCitzdXBwb3J0IChlLmcuIDB4MDMwMzAwMDAgZm9yIFB5dGhvbiAzLjMpLiBTdWNoIG1vZHVsZXMgd2lsbCB3b3JrCitvbiBhbGwgc3Vic2VxdWVudCBQeXRob24gcmVsZWFzZXMsIGJ1dCBmYWlsIHRvIGxvYWQgKGJlY2F1c2Ugb2YKK21pc3Npbmcgc3ltYm9scykgb24gdGhlIG9sZGVyIHJlbGVhc2VzLgorCitBcyBvZiBQeXRob24gMy4yLCB0aGUgc2V0IG9mIGZ1bmN0aW9ucyBhdmFpbGFibGUgdG8gdGhlIGxpbWl0ZWQgQVBJCitpcyBkb2N1bWVudGVkIGluIFBFUCAzODQuCisKKy4uIFhYWCBjb3B5IGV4YWN0IGxpc3QgaGVyZT8gSW50byBlYWNoIGZ1bmN0aW9ucyBkZWZpbml0aW9uPwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3R5cGUucnN0IGIvRG9jL2MtYXBpL3R5cGUucnN0CmluZGV4IGIzMzg2ZWEuLjQ0YzczMWEgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS90eXBlLnJzdAorKysgYi9Eb2MvYy1hcGkvdHlwZS5yc3QKQEAgLTUxLDEzICs1MSwxMyBAQAogICAgbW9kaWZpY2F0aW9uIG9mIHRoZSBhdHRyaWJ1dGVzIG9yIGJhc2UgY2xhc3NlcyBvZiB0aGUgdHlwZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5VHlwZV9IYXNGZWF0dXJlKFB5T2JqZWN0ICpvLCBpbnQgZmVhdHVyZSkKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX0hhc0ZlYXR1cmUoUHlUeXBlT2JqZWN0ICpvLCBpbnQgZmVhdHVyZSkKIAogICAgUmV0dXJuIHRydWUgaWYgdGhlIHR5cGUgb2JqZWN0ICpvKiBzZXRzIHRoZSBmZWF0dXJlICpmZWF0dXJlKi4gIFR5cGUgZmVhdHVyZXMKICAgIGFyZSBkZW5vdGVkIGJ5IHNpbmdsZSBiaXQgZmxhZ3MuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeVR5cGVfSVNfR0MoUHlPYmplY3QgKm8pCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VHlwZV9JU19HQyhQeVR5cGVPYmplY3QgKm8pCiAKICAgIFJldHVybiB0cnVlIGlmIHRoZSB0eXBlIG9iamVjdCBpbmNsdWRlcyBzdXBwb3J0IGZvciB0aGUgY3ljbGUgZGV0ZWN0b3I7IHRoaXMKICAgIHRlc3RzIHRoZSB0eXBlIGZsYWcgOmNvbnN0OmBQeV9UUEZMQUdTX0hBVkVfR0NgLgpAQCAtNzAsMTMgKzcwLDE0IEBACiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlUeXBlX0dlbmVyaWNBbGxvYyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5X3NzaXplX3Qgbml0ZW1zKQogCi0gICBYWFg6IERvY3VtZW50LgotCisgICBHZW5lcmljIGhhbmRsZXIgZm9yIHRoZSA6YXR0cjpgdHBfYWxsb2NgIHNsb3Qgb2YgYSB0eXBlIG9iamVjdC4gIFVzZQorICAgUHl0aG9uJ3MgZGVmYXVsdCBtZW1vcnkgYWxsb2NhdGlvbiBtZWNoYW5pc20gdG8gYWxsb2NhdGUgYSBuZXcgaW5zdGFuY2UgYW5kCisgICBpbml0aWFsaXplIGFsbCBpdHMgY29udGVudHMgdG8gKk5VTEwqLgogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VHlwZV9HZW5lcmljTmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogCi0gICBYWFg6IERvY3VtZW50LgotCisgICBHZW5lcmljIGhhbmRsZXIgZm9yIHRoZSA6YXR0cjpgdHBfbmV3YCBzbG90IG9mIGEgdHlwZSBvYmplY3QuICBDcmVhdGUgYQorICAgbmV3IGluc3RhbmNlIHVzaW5nIHRoZSB0eXBlJ3MgOmF0dHI6YHRwX2FsbG9jYCBzbG90LgogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VHlwZV9SZWFkeShQeVR5cGVPYmplY3QgKnR5cGUpCiAKQEAgLTg0LDMgKzg1LDE1IEBACiAgICB0aGVpciBpbml0aWFsaXphdGlvbi4gIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGFkZGluZyBpbmhlcml0ZWQgc2xvdHMKICAgIGZyb20gYSB0eXBlJ3MgYmFzZSBjbGFzcy4gIFJldHVybiBgYDBgYCBvbiBzdWNjZXNzLCBvciByZXR1cm4gYGAtMWBgIGFuZCBzZXRzIGFuCiAgICBleGNlcHRpb24gb24gZXJyb3IuCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlUeXBlX0Zyb21TcGVjKFB5VHlwZV9TcGVjICpzcGVjKQorCisgICBDcmVhdGVzIGFuZCByZXR1cm5zIGEgaGVhcCB0eXBlIG9iamVjdCBmcm9tIHRoZSAqc3BlYyogcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMoUHlUeXBlX1NwZWMgKnNwZWMsIFB5T2JqZWN0ICpiYXNlcykKKworICAgQ3JlYXRlcyBhbmQgcmV0dXJucyBhIGhlYXAgdHlwZSBvYmplY3QgZnJvbSB0aGUgKnNwZWMqLiBJbiBhZGRpdGlvbiB0byB0aGF0LAorICAgdGhlIGNyZWF0ZWQgaGVhcCB0eXBlIGNvbnRhaW5zIGFsbCB0eXBlcyBjb250YWluZWQgYnkgdGhlICpiYXNlcyogdHVwbGUgYXMgYmFzZQorICAgdHlwZXMuIFRoaXMgYWxsb3dzIHRoZSBjYWxsZXIgdG8gcmVmZXJlbmNlIG90aGVyIGhlYXAgdHlwZXMgYXMgYmFzZSB0eXBlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdHlwZW9iai5yc3QgYi9Eb2MvYy1hcGkvdHlwZW9iai5yc3QKaW5kZXggNjhjYTlhZC4uZWExYTBhZCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3R5cGVvYmoucnN0CisrKyBiL0RvYy9jLWFwaS90eXBlb2JqLnJzdApAQCAtMTE5OCw0NiArMTE5OCw4OCBAQAogCiAuLiBzZWN0aW9uYXV0aG9yOjogR3JlZyBKLiBTdGVpbiA8Z3JlZ0BseXJhLm9yZz4KIC4uIHNlY3Rpb25hdXRob3I6OiBCZW5qYW1pbiBQZXRlcnNvbgotCi0KLVRoZSA6cmVmOmBidWZmZXIgaW50ZXJmYWNlIDxidWZmZXJvYmplY3RzPmAgZXhwb3J0cyBhIG1vZGVsIHdoZXJlIGFuIG9iamVjdCBjYW4gZXhwb3NlIGl0cyBpbnRlcm5hbAotZGF0YS4KLQotSWYgYW4gb2JqZWN0IGRvZXMgbm90IGV4cG9ydCB0aGUgYnVmZmVyIGludGVyZmFjZSwgdGhlbiBpdHMgOmF0dHI6YHRwX2FzX2J1ZmZlcmAKLW1lbWJlciBpbiB0aGUgOmM6dHlwZTpgUHlUeXBlT2JqZWN0YCBzdHJ1Y3R1cmUgc2hvdWxkIGJlICpOVUxMKi4gIE90aGVyd2lzZSwgdGhlCi06YXR0cjpgdHBfYXNfYnVmZmVyYCB3aWxsIHBvaW50IHRvIGEgOmM6dHlwZTpgUHlCdWZmZXJQcm9jc2Agc3RydWN0dXJlLgotCisuLiBzZWN0aW9uYXV0aG9yOjogU3RlZmFuIEtyYWgKIAogLi4gYzp0eXBlOjogUHlCdWZmZXJQcm9jcwogCi0gICBTdHJ1Y3R1cmUgdXNlZCB0byBob2xkIHRoZSBmdW5jdGlvbiBwb2ludGVycyB3aGljaCBkZWZpbmUgYW4gaW1wbGVtZW50YXRpb24gb2YKLSAgIHRoZSBidWZmZXIgcHJvdG9jb2wuCisgICBUaGlzIHN0cnVjdHVyZSBob2xkcyBwb2ludGVycyB0byB0aGUgZnVuY3Rpb25zIHJlcXVpcmVkIGJ5IHRoZQorICAgOnJlZjpgQnVmZmVyIHByb3RvY29sIDxidWZmZXJvYmplY3RzPmAuIFRoZSBwcm90b2NvbCBkZWZpbmVzIGhvdworICAgYW4gZXhwb3J0ZXIgb2JqZWN0IGNhbiBleHBvc2UgaXRzIGludGVybmFsIGRhdGEgdG8gY29uc3VtZXIgb2JqZWN0cy4KIAotICAgLi4gYzptZW1iZXI6OiBnZXRidWZmZXJwcm9jIGJmX2dldGJ1ZmZlcgorLi4gYzptZW1iZXI6OiBnZXRidWZmZXJwcm9jIFB5QnVmZmVyUHJvY3MuYmZfZ2V0YnVmZmVyCiAKLSAgICAgIFRoaXMgc2hvdWxkIGZpbGwgYSA6Yzp0eXBlOmBQeV9idWZmZXJgIHdpdGggdGhlIG5lY2Vzc2FyeSBkYXRhIGZvcgotICAgICAgZXhwb3J0aW5nIHRoZSB0eXBlLiAgVGhlIHNpZ25hdHVyZSBvZiA6ZGF0YTpgZ2V0YnVmZmVycHJvY2AgaXMgYGBpbnQKLSAgICAgIChQeU9iamVjdCAqb2JqLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncylgYC4gICpvYmoqIGlzIHRoZSBvYmplY3QgdG8KLSAgICAgIGV4cG9ydCwgKnZpZXcqIGlzIHRoZSA6Yzp0eXBlOmBQeV9idWZmZXJgIHN0cnVjdCB0byBmaWxsLCBhbmQgKmZsYWdzKiBnaXZlcwotICAgICAgdGhlIGNvbmRpdGlvbnMgdGhlIGNhbGxlciB3YW50cyB0aGUgbWVtb3J5IHVuZGVyLiAgKFNlZQotICAgICAgOmM6ZnVuYzpgUHlPYmplY3RfR2V0QnVmZmVyYCBmb3IgYWxsIGZsYWdzLikgIDpjOm1lbWJlcjpgYmZfZ2V0YnVmZmVyYCBpcwotICAgICAgcmVzcG9uc2libGUgZm9yIGZpbGxpbmcgKnZpZXcqIHdpdGggdGhlIGFwcHJvcHJpYXRlIGluZm9ybWF0aW9uLgotICAgICAgKDpjOmZ1bmM6YFB5QnVmZmVyX0ZpbGxWaWV3YCBjYW4gYmUgdXNlZCBpbiBzaW1wbGUgY2FzZXMuKSAgU2VlCi0gICAgICA6Yzp0eXBlOmBQeV9idWZmZXJgXHMgZG9jcyBmb3Igd2hhdCBuZWVkcyB0byBiZSBmaWxsZWQgaW4uCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICAgaW50IChQeU9iamVjdCAqZXhwb3J0ZXIsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKTsKKworICAgSGFuZGxlIGEgcmVxdWVzdCB0byAqZXhwb3J0ZXIqIHRvIGZpbGwgaW4gKnZpZXcqIGFzIHNwZWNpZmllZCBieSAqZmxhZ3MqLgorICAgRXhjZXB0IGZvciBwb2ludCAoMyksIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gTVVTVCB0YWtlIHRoZXNlCisgICBzdGVwczoKKworICAgKDEpIENoZWNrIGlmIHRoZSByZXF1ZXN0IGNhbiBiZSBtZXQuIElmIG5vdCwgcmFpc2UgOmM6ZGF0YTpgUHlFeGNfQnVmZmVyRXJyb3JgLAorICAgICAgIHNldCA6YzpkYXRhOmB2aWV3LT5vYmpgIHRvICpOVUxMKiBhbmQgcmV0dXJuIC0xLgorCisgICAoMikgRmlsbCBpbiB0aGUgcmVxdWVzdGVkIGZpZWxkcy4KKworICAgKDMpIEluY3JlbWVudCBhbiBpbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIGV4cG9ydHMuCisKKyAgICg0KSBTZXQgOmM6ZGF0YTpgdmlldy0+b2JqYCB0byAqZXhwb3J0ZXIqIGFuZCBpbmNyZW1lbnQgOmM6ZGF0YTpgdmlldy0+b2JqYC4KKworICAgKDUpIFJldHVybiAwLgorCisgICBJZiAqZXhwb3J0ZXIqIGlzIHBhcnQgb2YgYSBjaGFpbiBvciB0cmVlIG9mIGJ1ZmZlciBwcm92aWRlcnMsIHR3byBtYWluCisgICBzY2hlbWVzIGNhbiBiZSB1c2VkOgorCisgICAqIFJlLWV4cG9ydDogRWFjaCBtZW1iZXIgb2YgdGhlIHRyZWUgYWN0cyBhcyB0aGUgZXhwb3J0aW5nIG9iamVjdCBhbmQKKyAgICAgc2V0cyA6YzpkYXRhOmB2aWV3LT5vYmpgIHRvIGEgbmV3IHJlZmVyZW5jZSB0byBpdHNlbGYuCisKKyAgICogUmVkaXJlY3Q6IFRoZSBidWZmZXIgcmVxdWVzdCBpcyByZWRpcmVjdGVkIHRvIHRoZSByb290IG9iamVjdCBvZiB0aGUKKyAgICAgdHJlZS4gSGVyZSwgOmM6ZGF0YTpgdmlldy0+b2JqYCB3aWxsIGJlIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgcm9vdAorICAgICBvYmplY3QuCisKKyAgIFRoZSBpbmRpdmlkdWFsIGZpZWxkcyBvZiAqdmlldyogYXJlIGRlc2NyaWJlZCBpbiBzZWN0aW9uCisgICA6cmVmOmBCdWZmZXIgc3RydWN0dXJlIDxidWZmZXItc3RydWN0dXJlPmAsIHRoZSBydWxlcyBob3cgYW4gZXhwb3J0ZXIKKyAgIG11c3QgcmVhY3QgdG8gc3BlY2lmaWMgcmVxdWVzdHMgYXJlIGluIHNlY3Rpb24KKyAgIDpyZWY6YEJ1ZmZlciByZXF1ZXN0IHR5cGVzIDxidWZmZXItcmVxdWVzdC10eXBlcz5gLgorCisgICBBbGwgbWVtb3J5IHBvaW50ZWQgdG8gaW4gdGhlIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIGJlbG9uZ3MgdG8KKyAgIHRoZSBleHBvcnRlciBhbmQgbXVzdCByZW1haW4gdmFsaWQgdW50aWwgdGhlcmUgYXJlIG5vIGNvbnN1bWVycyBsZWZ0LgorICAgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmZvcm1hdGAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zaGFwZWAsCisgICA6YzptZW1iZXI6YH5QeV9idWZmZXIuc3RyaWRlc2AsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdWJvZmZzZXRzYAorICAgYW5kIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pbnRlcm5hbGAKKyAgIGFyZSByZWFkLW9ubHkgZm9yIHRoZSBjb25zdW1lci4KKworICAgOmM6ZnVuYzpgUHlCdWZmZXJfRmlsbEluZm9gIHByb3ZpZGVzIGFuIGVhc3kgd2F5IG9mIGV4cG9zaW5nIGEgc2ltcGxlCisgICBieXRlcyBidWZmZXIgd2hpbGUgZGVhbGluZyBjb3JyZWN0bHkgd2l0aCBhbGwgcmVxdWVzdCB0eXBlcy4KKworICAgOmM6ZnVuYzpgUHlPYmplY3RfR2V0QnVmZmVyYCBpcyB0aGUgaW50ZXJmYWNlIGZvciB0aGUgY29uc3VtZXIgdGhhdAorICAgd3JhcHMgdGhpcyBmdW5jdGlvbi4KKworLi4gYzptZW1iZXI6OiByZWxlYXNlYnVmZmVycHJvYyBQeUJ1ZmZlclByb2NzLmJmX3JlbGVhc2VidWZmZXIKKworICAgVGhlIHNpZ25hdHVyZSBvZiB0aGlzIGZ1bmN0aW9uIGlzOjoKKworICAgICAgIHZvaWQgKFB5T2JqZWN0ICpleHBvcnRlciwgUHlfYnVmZmVyICp2aWV3KTsKKworICAgSGFuZGxlIGEgcmVxdWVzdCB0byByZWxlYXNlIHRoZSByZXNvdXJjZXMgb2YgdGhlIGJ1ZmZlci4gSWYgbm8gcmVzb3VyY2VzCisgICBuZWVkIHRvIGJlIHJlbGVhc2VkLCA6YzptZW1iZXI6YFB5QnVmZmVyUHJvY3MuYmZfcmVsZWFzZWJ1ZmZlcmAgbWF5IGJlCisgICAqTlVMTCouIE90aGVyd2lzZSwgYSBzdGFuZGFyZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIHdpbGwgdGFrZQorICAgdGhlc2Ugb3B0aW9uYWwgc3RlcHM6CisKKyAgICgxKSBEZWNyZW1lbnQgYW4gaW50ZXJuYWwgY291bnRlciBmb3IgdGhlIG51bWJlciBvZiBleHBvcnRzLgorCisgICAoMikgSWYgdGhlIGNvdW50ZXIgaXMgMCwgZnJlZSBhbGwgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCAqdmlldyouCisKKyAgIFRoZSBleHBvcnRlciBNVVNUIHVzZSB0aGUgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmludGVybmFsYCBmaWVsZCB0byBrZWVwCisgICB0cmFjayBvZiBidWZmZXItc3BlY2lmaWMgcmVzb3VyY2VzLiBUaGlzIGZpZWxkIGlzIGd1YXJhbnRlZWQgdG8gcmVtYWluCisgICBjb25zdGFudCwgd2hpbGUgYSBjb25zdW1lciBNQVkgcGFzcyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGJ1ZmZlciBhcyB0aGUKKyAgICp2aWV3KiBhcmd1bWVudC4KIAogCi0gICAuLiBjOm1lbWJlcjo6IHJlbGVhc2VidWZmZXJwcm9jIGJmX3JlbGVhc2VidWZmZXIKKyAgIFRoaXMgZnVuY3Rpb24gTVVTVCBOT1QgZGVjcmVtZW50IDpjOmRhdGE6YHZpZXctPm9iamAsIHNpbmNlIHRoYXQgaXMKKyAgIGRvbmUgYXV0b21hdGljYWxseSBpbiA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYCAodGhpcyBzY2hlbWUgaXMKKyAgIHVzZWZ1bCBmb3IgYnJlYWtpbmcgcmVmZXJlbmNlIGN5Y2xlcykuCiAKLSAgICAgIFRoaXMgc2hvdWxkIHJlbGVhc2UgdGhlIHJlc291cmNlcyBvZiB0aGUgYnVmZmVyLiAgVGhlIHNpZ25hdHVyZSBvZgotICAgICAgOmM6ZGF0YTpgcmVsZWFzZWJ1ZmZlcnByb2NgIGlzIGBgdm9pZCAoUHlPYmplY3QgKm9iaiwgUHlfYnVmZmVyICp2aWV3KWBgLgotICAgICAgSWYgdGhlIDpjOmRhdGE6YGJmX3JlbGVhc2VidWZmZXJgIGZ1bmN0aW9uIGlzIG5vdCBwcm92aWRlZCAoaS5lLiBpdCBpcwotICAgICAgKk5VTEwqKSwgdGhlbiBpdCBkb2VzIG5vdCBldmVyIG5lZWQgdG8gYmUgY2FsbGVkLgogCi0gICAgICBUaGUgZXhwb3J0ZXIgb2YgdGhlIGJ1ZmZlciBpbnRlcmZhY2UgbXVzdCBtYWtlIHN1cmUgdGhhdCBhbnkgbWVtb3J5Ci0gICAgICBwb2ludGVkIHRvIGluIHRoZSA6Yzp0eXBlOmBQeV9idWZmZXJgIHN0cnVjdHVyZSByZW1haW5zIHZhbGlkIHVudGlsCi0gICAgICByZWxlYXNlYnVmZmVyIGlzIGNhbGxlZC4gIEV4cG9ydGVycyB3aWxsIG5lZWQgdG8gZGVmaW5lIGEKLSAgICAgIDpjOmRhdGE6YGJmX3JlbGVhc2VidWZmZXJgIGZ1bmN0aW9uIGlmIHRoZXkgY2FuIHJlLWFsbG9jYXRlIHRoZWlyIG1lbW9yeSwKLSAgICAgIHN0cmlkZXMsIHNoYXBlLCBzdWJvZmZzZXRzLCBvciBmb3JtYXQgdmFyaWFibGVzIHdoaWNoIHRoZXkgbWlnaHQgc2hhcmUKLSAgICAgIHRocm91Z2ggdGhlIHN0cnVjdCBidWZmZXJpbmZvLgotCi0gICAgICBTZWUgOmM6ZnVuYzpgUHlCdWZmZXJfUmVsZWFzZWAuCisgICA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYCBpcyB0aGUgaW50ZXJmYWNlIGZvciB0aGUgY29uc3VtZXIgdGhhdAorICAgd3JhcHMgdGhpcyBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS91bmljb2RlLnJzdCBiL0RvYy9jLWFwaS91bmljb2RlLnJzdAppbmRleCBkMWI1N2Q5Li4wZjdkMmJiIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKKysrIGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CkBAIC02LDM4ICs2LDcyIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBzZWN0aW9uYXV0aG9yOjogTWFyYy1BbmRyw6kgTGVtYnVyZyA8bWFsQGxlbWJ1cmcuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IEdlb3JnIEJyYW5kbCA8Z2VvcmdAcHl0aG9uLm9yZz4KIAogVW5pY29kZSBPYmplY3RzCiBeXl5eXl5eXl5eXl5eXl4KIAorU2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIDpwZXA6YDM5M2AgaW4gUHl0aG9uIDMuMywgVW5pY29kZSBvYmplY3RzIGludGVybmFsbHkKK3VzZSBhIHZhcmlldHkgb2YgcmVwcmVzZW50YXRpb25zLCBpbiBvcmRlciB0byBhbGxvdyBoYW5kbGluZyB0aGUgY29tcGxldGUgcmFuZ2UKK29mIFVuaWNvZGUgY2hhcmFjdGVycyB3aGlsZSBzdGF5aW5nIG1lbW9yeSBlZmZpY2llbnQuICBUaGVyZSBhcmUgc3BlY2lhbCBjYXNlcworZm9yIHN0cmluZ3Mgd2hlcmUgYWxsIGNvZGUgcG9pbnRzIGFyZSBiZWxvdyAxMjgsIDI1Niwgb3IgNjU1MzY7IG90aGVyd2lzZSwgY29kZQorcG9pbnRzIG11c3QgYmUgYmVsb3cgMTExNDExMiAod2hpY2ggaXMgdGhlIGZ1bGwgVW5pY29kZSByYW5nZSkuCisKKzpjOnR5cGU6YFB5X1VOSUNPREUqYCBhbmQgVVRGLTggcmVwcmVzZW50YXRpb25zIGFyZSBjcmVhdGVkIG9uIGRlbWFuZCBhbmQgY2FjaGVkCitpbiB0aGUgVW5pY29kZSBvYmplY3QuICBUaGUgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHJlcHJlc2VudGF0aW9uIGlzIGRlcHJlY2F0ZWQKK2FuZCBpbmVmZmljaWVudDsgaXQgc2hvdWxkIGJlIGF2b2lkZWQgaW4gcGVyZm9ybWFuY2UtIG9yIG1lbW9yeS1zZW5zaXRpdmUKK3NpdHVhdGlvbnMuCisKK0R1ZSB0byB0aGUgdHJhbnNpdGlvbiBiZXR3ZWVuIHRoZSBvbGQgQVBJcyBhbmQgdGhlIG5ldyBBUElzLCB1bmljb2RlIG9iamVjdHMKK2NhbiBpbnRlcm5hbGx5IGJlIGluIHR3byBzdGF0ZXMgZGVwZW5kaW5nIG9uIGhvdyB0aGV5IHdlcmUgY3JlYXRlZDoKKworKiAiY2Fub25pY2FsIiB1bmljb2RlIG9iamVjdHMgYXJlIGFsbCBvYmplY3RzIGNyZWF0ZWQgYnkgYSBub24tZGVwcmVjYXRlZAorICB1bmljb2RlIEFQSS4gIFRoZXkgdXNlIHRoZSBtb3N0IGVmZmljaWVudCByZXByZXNlbnRhdGlvbiBhbGxvd2VkIGJ5IHRoZQorICBpbXBsZW1lbnRhdGlvbi4KKworKiAibGVnYWN5IiB1bmljb2RlIG9iamVjdHMgaGF2ZSBiZWVuIGNyZWF0ZWQgdGhyb3VnaCBvbmUgb2YgdGhlIGRlcHJlY2F0ZWQKKyAgQVBJcyAodHlwaWNhbGx5IDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tVW5pY29kZWApIGFuZCBvbmx5IGJlYXIgdGhlCisgIDpjOnR5cGU6YFB5X1VOSUNPREUqYCByZXByZXNlbnRhdGlvbjsgeW91IHdpbGwgaGF2ZSB0byBjYWxsCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9SRUFEWWAgb24gdGhlbSBiZWZvcmUgY2FsbGluZyBhbnkgb3RoZXIgQVBJLgorCisKIFVuaWNvZGUgVHlwZQogIiIiIiIiIiIiIiIiCiAKIFRoZXNlIGFyZSB0aGUgYmFzaWMgVW5pY29kZSBvYmplY3QgdHlwZXMgdXNlZCBmb3IgdGhlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gaW4KIFB5dGhvbjoKIAorLi4gYzp0eXBlOjogUHlfVUNTNAorICAgICAgICAgICAgUHlfVUNTMgorICAgICAgICAgICAgUHlfVUNTMQorCisgICBUaGVzZSB0eXBlcyBhcmUgdHlwZWRlZnMgZm9yIHVuc2lnbmVkIGludGVnZXIgdHlwZXMgd2lkZSBlbm91Z2ggdG8gY29udGFpbgorICAgY2hhcmFjdGVycyBvZiAzMiBiaXRzLCAxNiBiaXRzIGFuZCA4IGJpdHMsIHJlc3BlY3RpdmVseS4gIFdoZW4gZGVhbGluZyB3aXRoCisgICBzaW5nbGUgVW5pY29kZSBjaGFyYWN0ZXJzLCB1c2UgOmM6dHlwZTpgUHlfVUNTNGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGM6dHlwZTo6IFB5X1VOSUNPREUKIAotICAgVGhpcyB0eXBlIHJlcHJlc2VudHMgdGhlIHN0b3JhZ2UgdHlwZSB3aGljaCBpcyB1c2VkIGJ5IFB5dGhvbiBpbnRlcm5hbGx5IGFzCi0gICBiYXNpcyBmb3IgaG9sZGluZyBVbmljb2RlIG9yZGluYWxzLiAgUHl0aG9uJ3MgZGVmYXVsdCBidWlsZHMgdXNlIGEgMTYtYml0IHR5cGUKLSAgIGZvciA6Yzp0eXBlOmBQeV9VTklDT0RFYCBhbmQgc3RvcmUgVW5pY29kZSB2YWx1ZXMgaW50ZXJuYWxseSBhcyBVQ1MyLiBJdCBpcyBhbHNvCi0gICBwb3NzaWJsZSB0byBidWlsZCBhIFVDUzQgdmVyc2lvbiBvZiBQeXRob24gKG1vc3QgcmVjZW50IExpbnV4IGRpc3RyaWJ1dGlvbnMgY29tZQotICAgd2l0aCBVQ1M0IGJ1aWxkcyBvZiBQeXRob24pLiBUaGVzZSBidWlsZHMgdGhlbiB1c2UgYSAzMi1iaXQgdHlwZSBmb3IKLSAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGFuZCBzdG9yZSBVbmljb2RlIGRhdGEgaW50ZXJuYWxseSBhcyBVQ1M0LiBPbiBwbGF0Zm9ybXMKLSAgIHdoZXJlIDpjOnR5cGU6YHdjaGFyX3RgIGlzIGF2YWlsYWJsZSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBjaG9zZW4gUHl0aG9uCi0gICBVbmljb2RlIGJ1aWxkIHZhcmlhbnQsIDpjOnR5cGU6YFB5X1VOSUNPREVgIGlzIGEgdHlwZWRlZiBhbGlhcyBmb3IKLSAgIDpjOnR5cGU6YHdjaGFyX3RgIHRvIGVuaGFuY2UgbmF0aXZlIHBsYXRmb3JtIGNvbXBhdGliaWxpdHkuIE9uIGFsbCBvdGhlcgotICAgcGxhdGZvcm1zLCA6Yzp0eXBlOmBQeV9VTklDT0RFYCBpcyBhIHR5cGVkZWYgYWxpYXMgZm9yIGVpdGhlciA6Yzp0eXBlOmB1bnNpZ25lZAotICAgc2hvcnRgIChVQ1MyKSBvciA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nYCAoVUNTNCkuCisgICBUaGlzIGlzIGEgdHlwZWRlZiBvZiA6Yzp0eXBlOmB3Y2hhcl90YCwgd2hpY2ggaXMgYSAxNi1iaXQgdHlwZSBvciAzMi1iaXQgdHlwZQorICAgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KIAotTm90ZSB0aGF0IFVDUzIgYW5kIFVDUzQgUHl0aG9uIGJ1aWxkcyBhcmUgbm90IGJpbmFyeSBjb21wYXRpYmxlLiBQbGVhc2Uga2VlcAotdGhpcyBpbiBtaW5kIHdoZW4gd3JpdGluZyBleHRlbnNpb25zIG9yIGludGVyZmFjZXMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgSW4gcHJldmlvdXMgdmVyc2lvbnMsIHRoaXMgd2FzIGEgMTYtYml0IHR5cGUgb3IgYSAzMi1iaXQgdHlwZSBkZXBlbmRpbmcgb24KKyAgICAgIHdoZXRoZXIgeW91IHNlbGVjdGVkIGEgIm5hcnJvdyIgb3IgIndpZGUiIFVuaWNvZGUgdmVyc2lvbiBvZiBQeXRob24gYXQKKyAgICAgIGJ1aWxkIHRpbWUuCiAKIAotLi4gYzp0eXBlOjogUHlVbmljb2RlT2JqZWN0CisuLiBjOnR5cGU6OiBQeUFTQ0lJT2JqZWN0CisgICAgICAgICAgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0CisgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QKIAotICAgVGhpcyBzdWJ0eXBlIG9mIDpjOnR5cGU6YFB5T2JqZWN0YCByZXByZXNlbnRzIGEgUHl0aG9uIFVuaWNvZGUgb2JqZWN0LgorICAgVGhlc2Ugc3VidHlwZXMgb2YgOmM6dHlwZTpgUHlPYmplY3RgIHJlcHJlc2VudCBhIFB5dGhvbiBVbmljb2RlIG9iamVjdC4gIEluCisgICBhbG1vc3QgYWxsIGNhc2VzLCB0aGV5IHNob3VsZG4ndCBiZSB1c2VkIGRpcmVjdGx5LCBzaW5jZSBhbGwgQVBJIGZ1bmN0aW9ucworICAgdGhhdCBkZWFsIHdpdGggVW5pY29kZSBvYmplY3RzIHRha2UgYW5kIHJldHVybiA6Yzp0eXBlOmBQeU9iamVjdGAgcG9pbnRlcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGM6dmFyOjogUHlUeXBlT2JqZWN0IFB5VW5pY29kZV9UeXBlCkBAIC00NSwxMCArNzksMTAgQEAKICAgIFRoaXMgaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlUeXBlT2JqZWN0YCByZXByZXNlbnRzIHRoZSBQeXRob24gVW5pY29kZSB0eXBlLiAgSXQKICAgIGlzIGV4cG9zZWQgdG8gUHl0aG9uIGNvZGUgYXMgYGBzdHJgYC4KIAorCiBUaGUgZm9sbG93aW5nIEFQSXMgYXJlIHJlYWxseSBDIG1hY3JvcyBhbmQgY2FuIGJlIHVzZWQgdG8gZG8gZmFzdCBjaGVja3MgYW5kIHRvCiBhY2Nlc3MgaW50ZXJuYWwgcmVhZC1vbmx5IGRhdGEgb2YgVW5pY29kZSBvYmplY3RzOgogCi0KIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX0NoZWNrKFB5T2JqZWN0ICpvKQogCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0ICpvKiBpcyBhIFVuaWNvZGUgb2JqZWN0IG9yIGFuIGluc3RhbmNlIG9mIGEgVW5pY29kZQpAQCAtNjEsMjggKzk1LDEwNiBAQAogICAgc3VidHlwZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR0VUX1NJWkUoUHlPYmplY3QgKm8pCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9SRUFEWShQeU9iamVjdCAqbykKIAotICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBvYmplY3QuICAqbyogaGFzIHRvIGJlIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90Ci0gICBjaGVja2VkKS4KKyAgIEVuc3VyZSB0aGUgc3RyaW5nIG9iamVjdCAqbyogaXMgaW4gdGhlICJjYW5vbmljYWwiIHJlcHJlc2VudGF0aW9uLiAgVGhpcyBpcworICAgcmVxdWlyZWQgYmVmb3JlIHVzaW5nIGFueSBvZiB0aGUgYWNjZXNzIG1hY3JvcyBkZXNjcmliZWQgYmVsb3cuCisKKyAgIC4uIFhYWCBleHBhbmQgb24gd2hlbiBpdCBpcyBub3QgcmVxdWlyZWQKKworICAgUmV0dXJucyAwIG9uIHN1Y2Nlc3MgYW5kIC0xIHdpdGggYW4gZXhjZXB0aW9uIHNldCBvbiBmYWlsdXJlLCB3aGljaCBpbgorICAgcGFydGljdWxhciBoYXBwZW5zIGlmIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShQeU9iamVjdCAqbykKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfTEVOR1RIKFB5T2JqZWN0ICpvKQogCi0gICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIG9iamVjdCdzIGludGVybmFsIGJ1ZmZlciBpbiBieXRlcy4gICpvKiBoYXMgdG8gYmUgYQotICAgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90IGNoZWNrZWQpLgorICAgUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIFVuaWNvZGUgc3RyaW5nLCBpbiBjb2RlIHBvaW50cy4gICpvKiBoYXMgdG8gYmUgYQorICAgVW5pY29kZSBvYmplY3QgaW4gdGhlICJjYW5vbmljYWwiIHJlcHJlc2VudGF0aW9uIChub3QgY2hlY2tlZCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFKiBQeVVuaWNvZGVfQVNfVU5JQ09ERShQeU9iamVjdCAqbykKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1MxKiBQeVVuaWNvZGVfMUJZVEVfREFUQShQeU9iamVjdCAqbykKKyAgICAgICAgICAgICAgICBQeV9VQ1MyKiBQeVVuaWNvZGVfMkJZVEVfREFUQShQeU9iamVjdCAqbykKKyAgICAgICAgICAgICAgICBQeV9VQ1M0KiBQeVVuaWNvZGVfNEJZVEVfREFUQShQeU9iamVjdCAqbykKIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgaW50ZXJuYWwgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBvYmplY3QuICAqbyoKLSAgIGhhcyB0byBiZSBhIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdGAgKG5vdCBjaGVja2VkKS4KKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBjYXN0IHRvIFVDUzEsIFVDUzIgb3IgVUNTNAorICAgaW50ZWdlciB0eXBlcyBmb3IgZGlyZWN0IGNoYXJhY3RlciBhY2Nlc3MuICBObyBjaGVja3MgYXJlIHBlcmZvcm1lZCBpZiB0aGUKKyAgIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBoYXMgdGhlIGNvcnJlY3QgY2hhcmFjdGVyIHNpemU7IHVzZQorICAgOmM6ZnVuYzpgUHlVbmljb2RlX0tJTkRgIHRvIHNlbGVjdCB0aGUgcmlnaHQgbWFjcm8uICBNYWtlIHN1cmUKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9SRUFEWWAgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgdGhpcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gYzpmdW5jdGlvbjo6IGNvbnN0IGNoYXIqIFB5VW5pY29kZV9BU19EQVRBKFB5T2JqZWN0ICpvKQorLi4gYzptYWNybzo6IFB5VW5pY29kZV9XQ0hBUl9LSU5ECisgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfS0lORAorICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9LSU5ECiAKLSAgIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlciBvZiB0aGUgb2JqZWN0LiAqbyogaGFzIHRvIGJlIGEKLSAgIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdGAgKG5vdCBjaGVja2VkKS4KKyAgIFJldHVybiB2YWx1ZXMgb2YgdGhlIDpjOmZ1bmM6YFB5VW5pY29kZV9LSU5EYCBtYWNyby4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfS0lORChQeU9iamVjdCAqbykKKworICAgUmV0dXJuIG9uZSBvZiB0aGUgUHlVbmljb2RlIGtpbmQgY29uc3RhbnRzIChzZWUgYWJvdmUpIHRoYXQgaW5kaWNhdGUgaG93IG1hbnkKKyAgIGJ5dGVzIHBlciBjaGFyYWN0ZXIgdGhpcyBVbmljb2RlIG9iamVjdCB1c2VzIHRvIHN0b3JlIGl0cyBkYXRhLiAgKm8qIGhhcyB0bworICAgYmUgYSBVbmljb2RlIG9iamVjdCBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24gKG5vdCBjaGVja2VkKS4KKworICAgLi4gWFhYIGRvY3VtZW50ICIwIiByZXR1cm4gdmFsdWU/CisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeVVuaWNvZGVfREFUQShQeU9iamVjdCAqbykKKworICAgUmV0dXJuIGEgdm9pZCBwb2ludGVyIHRvIHRoZSByYXcgdW5pY29kZSBidWZmZXIuICAqbyogaGFzIHRvIGJlIGEgVW5pY29kZQorICAgb2JqZWN0IGluIHRoZSAiY2Fub25pY2FsIiByZXByZXNlbnRhdGlvbiAobm90IGNoZWNrZWQpLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeVVuaWNvZGVfV1JJVEUoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgaW5kZXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IHZhbHVlKQorCisgICBXcml0ZSBpbnRvIGEgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uICpkYXRhKiAoYXMgb2J0YWluZWQgd2l0aAorICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RBVEFgKS4gIFRoaXMgbWFjcm8gZG9lcyBub3QgZG8gYW55IHNhbml0eSBjaGVja3MgYW5kIGlzCisgICBpbnRlbmRlZCBmb3IgdXNhZ2UgaW4gbG9vcHMuICBUaGUgY2FsbGVyIHNob3VsZCBjYWNoZSB0aGUgKmtpbmQqIHZhbHVlIGFuZAorICAgKmRhdGEqIHBvaW50ZXIgYXMgb2J0YWluZWQgZnJvbSBvdGhlciBtYWNybyBjYWxscy4gICppbmRleCogaXMgdGhlIGluZGV4IGluCisgICB0aGUgc3RyaW5nIChzdGFydHMgYXQgMCkgYW5kICp2YWx1ZSogaXMgdGhlIG5ldyBjb2RlIHBvaW50IHZhbHVlIHdoaWNoIHNob3VsZAorICAgYmUgd3JpdHRlbiB0byB0aGF0IGxvY2F0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCBQeVVuaWNvZGVfUkVBRChpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBpbmRleCkKKworICAgUmVhZCBhIGNvZGUgcG9pbnQgZnJvbSBhIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiAqZGF0YSogKGFzIG9idGFpbmVkIHdpdGgKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9EQVRBYCkuICBObyBjaGVja3Mgb3IgcmVhZHkgY2FsbHMgYXJlIHBlcmZvcm1lZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VDUzQgUHlVbmljb2RlX1JFQURfQ0hBUihQeU9iamVjdCAqbywgUHlfc3NpemVfdCBpbmRleCkKKworICAgUmVhZCBhIGNoYXJhY3RlciBmcm9tIGEgVW5pY29kZSBvYmplY3QgKm8qLCB3aGljaCBtdXN0IGJlIGluIHRoZSAiY2Fub25pY2FsIgorICAgcmVwcmVzZW50YXRpb24uICBUaGlzIGlzIGxlc3MgZWZmaWNpZW50IHRoYW4gOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURgIGlmIHlvdQorICAgZG8gbXVsdGlwbGUgY29uc2VjdXRpdmUgcmVhZHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoUHlPYmplY3QgKm8pCisKKyAgIFJldHVybiB0aGUgbWF4aW11bSBjb2RlIHBvaW50IHRoYXQgaXMgc3VpdGFibGUgZm9yIGNyZWF0aW5nIGFub3RoZXIgc3RyaW5nCisgICBiYXNlZCBvbiAqbyosIHdoaWNoIG11c3QgYmUgaW4gdGhlICJjYW5vbmljYWwiIHJlcHJlc2VudGF0aW9uLiAgVGhpcyBpcworICAgYWx3YXlzIGFuIGFwcHJveGltYXRpb24gYnV0IG1vcmUgZWZmaWNpZW50IHRoYW4gaXRlcmF0aW5nIG92ZXIgdGhlIHN0cmluZy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfQ2xlYXJGcmVlTGlzdCgpCkBAIC05MCw2ICsyMDIsNDYgQEAKICAgIENsZWFyIHRoZSBmcmVlIGxpc3QuIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGZyZWVkIGl0ZW1zLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfU0laRShQeU9iamVjdCAqbykKKworICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBkZXByZWNhdGVkIDpjOnR5cGU6YFB5X1VOSUNPREVgIHJlcHJlc2VudGF0aW9uLCBpbgorICAgY29kZSB1bml0cyAodGhpcyBpbmNsdWRlcyBzdXJyb2dhdGUgcGFpcnMgYXMgMiB1bml0cykuICAqbyogaGFzIHRvIGJlIGEKKyAgIFVuaWNvZGUgb2JqZWN0IChub3QgY2hlY2tlZCkuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSBVbmljb2RlIEFQSSwgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9HRVRfTEVOR1RIYC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShQeU9iamVjdCAqbykKKworICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBkZXByZWNhdGVkIDpjOnR5cGU6YFB5X1VOSUNPREVgIHJlcHJlc2VudGF0aW9uIGluCisgICBieXRlcy4gICpvKiBoYXMgdG8gYmUgYSBVbmljb2RlIG9iamVjdCAobm90IGNoZWNrZWQpLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgVW5pY29kZSBBUEksIHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfR0VUX0xFTkdUSGAuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9BU19VTklDT0RFKFB5T2JqZWN0ICpvKQorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIFB5VW5pY29kZV9BU19EQVRBKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4gIFRoZQorICAgYGBBU19EQVRBYGAgZm9ybSBjYXN0cyB0aGUgcG9pbnRlciB0byA6Yzp0eXBlOmBjb25zdCBjaGFyICpgLiAgKm8qIGhhcyB0byBiZQorICAgYSBVbmljb2RlIG9iamVjdCAobm90IGNoZWNrZWQpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBtYWNybyBpcyBub3cgaW5lZmZpY2llbnQgLS0gYmVjYXVzZSBpbiBtYW55IGNhc2VzIHRoZQorICAgICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24gZG9lcyBub3QgZXhpc3QgYW5kIG5lZWRzIHRvIGJlIGNyZWF0ZWQKKyAgICAgIC0tIGFuZCBjYW4gZmFpbCAocmV0dXJuICpOVUxMKiB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQpLiAgVHJ5IHRvIHBvcnQgdGhlCisgICAgICBjb2RlIHRvIHVzZSB0aGUgbmV3IDpjOmZ1bmM6YFB5VW5pY29kZV9uQllURV9EQVRBYCBtYWNyb3Mgb3IgdXNlCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfV1JJVEVgIG9yIDpjOmZ1bmM6YFB5VW5pY29kZV9SRUFEYC4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIFVuaWNvZGUgQVBJLCBwbGVhc2UgbWlncmF0ZSB0byB1c2luZyB0aGUKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9uQllURV9EQVRBYCBmYW1pbHkgb2YgbWFjcm9zLgorCisKIFVuaWNvZGUgQ2hhcmFjdGVyIFByb3BlcnRpZXMKICIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKIApAQCAtMTY2LDE2ICszMTgsMjUgQEAKIAogICAgUmV0dXJuIHRoZSBjaGFyYWN0ZXIgKmNoKiBjb252ZXJ0ZWQgdG8gbG93ZXIgY2FzZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VzIHNpbXBsZSBjYXNlIG1hcHBpbmdzLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFIFB5X1VOSUNPREVfVE9VUFBFUihQeV9VTklDT0RFIGNoKQogCiAgICBSZXR1cm4gdGhlIGNoYXJhY3RlciAqY2gqIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgc2ltcGxlIGNhc2UgbWFwcGluZ3MuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUgUHlfVU5JQ09ERV9UT1RJVExFKFB5X1VOSUNPREUgY2gpCiAKICAgIFJldHVybiB0aGUgY2hhcmFjdGVyICpjaCogY29udmVydGVkIHRvIHRpdGxlIGNhc2UuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlcyBzaW1wbGUgY2FzZSBtYXBwaW5ncy4KKwogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5X1VOSUNPREVfVE9ERUNJTUFMKFB5X1VOSUNPREUgY2gpCiAKQEAgLTE5NSwzMSArMzU2LDY2IEBACiAgICBwb3NzaWJsZS4gIFRoaXMgbWFjcm8gZG9lcyBub3QgcmFpc2UgZXhjZXB0aW9ucy4KIAogCi1QbGFpbiBQeV9VTklDT0RFCi0iIiIiIiIiIiIiIiIiIiIiCitUaGVzZSBBUElzIGNhbiBiZSB1c2VkIHRvIHdvcmsgd2l0aCBzdXJyb2dhdGVzOgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpCisKKyAgIENoZWNrIGlmICpjaCogaXMgYSBzdXJyb2dhdGUgKGBgMHhEODAwIDw9IGNoIDw9IDB4REZGRmBgKS4KKworLi4gYzptYWNybzo6IFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoY2gpCisKKyAgIENoZWNrIGlmICpjaCogaXMgYW4gaGlnaCBzdXJyb2dhdGUgKGBgMHhEODAwIDw9IGNoIDw9IDB4REJGRmBgKS4KKworLi4gYzptYWNybzo6IFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShjaCkKKworICAgQ2hlY2sgaWYgKmNoKiBpcyBhIGxvdyBzdXJyb2dhdGUgKGBgMHhEQzAwIDw9IGNoIDw9IDB4REZGRmBgKS4KKworLi4gYzptYWNybzo6IFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKGhpZ2gsIGxvdykKKworICAgSm9pbiB0d28gc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHJldHVybiBhIHNpbmdsZSBQeV9VQ1M0IHZhbHVlLgorICAgKmhpZ2gqIGFuZCAqbG93KiBhcmUgcmVzcGVjdGl2ZWx5IHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzdXJyb2dhdGVzIGluIGEKKyAgIHN1cnJvZ2F0ZSBwYWlyLgorCisKK0NyZWF0aW5nIGFuZCBhY2Nlc3NpbmcgVW5pY29kZSBzdHJpbmdzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCiBUbyBjcmVhdGUgVW5pY29kZSBvYmplY3RzIGFuZCBhY2Nlc3MgdGhlaXIgYmFzaWMgc2VxdWVuY2UgcHJvcGVydGllcywgdXNlIHRoZXNlCiBBUElzOgogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9OZXcoUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IG1heGNoYXIpCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21Vbmljb2RlKGNvbnN0IFB5X1VOSUNPREUgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKKyAgIENyZWF0ZSBhIG5ldyBVbmljb2RlIG9iamVjdC4gICptYXhjaGFyKiBzaG91bGQgYmUgdGhlIHRydWUgbWF4aW11bSBjb2RlIHBvaW50CisgICB0byBiZSBwbGFjZWQgaW4gdGhlIHN0cmluZy4gIEFzIGFuIGFwcHJveGltYXRpb24sIGl0IGNhbiBiZSByb3VuZGVkIHVwIHRvIHRoZQorICAgbmVhcmVzdCB2YWx1ZSBpbiB0aGUgc2VxdWVuY2UgMTI3LCAyNTUsIDY1NTM1LCAxMTE0MTExLgogCi0gICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBmcm9tIHRoZSBQeV9VTklDT0RFIGJ1ZmZlciAqdSogb2YgdGhlIGdpdmVuIHNpemUuICp1KgotICAgbWF5IGJlICpOVUxMKiB3aGljaCBjYXVzZXMgdGhlIGNvbnRlbnRzIHRvIGJlIHVuZGVmaW5lZC4gSXQgaXMgdGhlIHVzZXIncwotICAgcmVzcG9uc2liaWxpdHkgdG8gZmlsbCBpbiB0aGUgbmVlZGVkIGRhdGEuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcKLSAgIG9iamVjdC4gSWYgdGhlIGJ1ZmZlciBpcyBub3QgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkIG9iamVjdC4KLSAgIFRoZXJlZm9yZSwgbW9kaWZpY2F0aW9uIG9mIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QgaXMgb25seSBhbGxvd2VkIHdoZW4gKnUqCi0gICBpcyAqTlVMTCouCisgICBUaGlzIGlzIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gYWxsb2NhdGUgYSBuZXcgVW5pY29kZSBvYmplY3QuICBPYmplY3RzCisgICBjcmVhdGVkIHVzaW5nIHRoaXMgZnVuY3Rpb24gYXJlIG5vdCByZXNpemFibGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShpbnQga2luZCwgY29uc3Qgdm9pZCAqYnVmZmVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQorCisgICBDcmVhdGUgYSBuZXcgVW5pY29kZSBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gKmtpbmQqIChwb3NzaWJsZSB2YWx1ZXMgYXJlCisgICA6YzptYWNybzpgUHlVbmljb2RlXzFCWVRFX0tJTkRgIGV0Yy4sIGFzIHJldHVybmVkIGJ5CisgICA6YzpmdW5jOmBQeVVuaWNvZGVfS0lORGApLiAgVGhlICpidWZmZXIqIG11c3QgcG9pbnQgdG8gYW4gYXJyYXkgb2YgKnNpemUqCisgICB1bml0cyBvZiAxLCAyIG9yIDQgYnl0ZXMgcGVyIGNoYXJhY3RlciwgYXMgZ2l2ZW4gYnkgdGhlIGtpbmQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKGNvbnN0IGNoYXIgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKIAotICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgZnJvbSB0aGUgY2hhciBidWZmZXIgKnUqLiAgVGhlIGJ5dGVzIHdpbGwgYmUgaW50ZXJwcmV0ZWQKLSAgIGFzIGJlaW5nIFVURi04IGVuY29kZWQuICAqdSogbWF5IGFsc28gYmUgKk5VTEwqIHdoaWNoCi0gICBjYXVzZXMgdGhlIGNvbnRlbnRzIHRvIGJlIHVuZGVmaW5lZC4gSXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBmaWxsIGluCi0gICB0aGUgbmVlZGVkIGRhdGEuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcgb2JqZWN0LiBJZiB0aGUgYnVmZmVyIGlzIG5vdAotICAgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkIG9iamVjdC4gVGhlcmVmb3JlLCBtb2RpZmljYXRpb24gb2YKLSAgIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QgaXMgb25seSBhbGxvd2VkIHdoZW4gKnUqIGlzICpOVUxMKi4KKyAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGZyb20gdGhlIGNoYXIgYnVmZmVyICp1Ki4gIFRoZSBieXRlcyB3aWxsIGJlCisgICBpbnRlcnByZXRlZCBhcyBiZWluZyBVVEYtOCBlbmNvZGVkLiAgVGhlIGJ1ZmZlciBpcyBjb3BpZWQgaW50byB0aGUgbmV3CisgICBvYmplY3QuIElmIHRoZSBidWZmZXIgaXMgbm90ICpOVUxMKiwgdGhlIHJldHVybiB2YWx1ZSBtaWdodCBiZSBhIHNoYXJlZAorICAgb2JqZWN0LCBpLmUuIG1vZGlmaWNhdGlvbiBvZiB0aGUgZGF0YSBpcyBub3QgYWxsb3dlZC4KKworICAgSWYgKnUqIGlzICpOVUxMKiwgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21Vbmljb2RlYAorICAgd2l0aCB0aGUgYnVmZmVyIHNldCB0byAqTlVMTCouICBUaGlzIHVzYWdlIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9OZXdgLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCAqUHlVbmljb2RlX0Zyb21TdHJpbmcoY29uc3QgY2hhciAqdSkKQEAgLTI2MCwxOCArNDU2LDI3IEBACiAgICB8IDphdHRyOmAlbGRgICAgICAgIHwgbG9uZyAgICAgICAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbGQiKWBgLiAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDphdHRyOmAlbGlgICAgICAgIHwgbG9uZyAgICAgICAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbGkiKWBgLiAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDphdHRyOmAlbHVgICAgICAgIHwgdW5zaWduZWQgbG9uZyAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbHUiKWBgLiAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDphdHRyOmAlbGxkYCAgICAgIHwgbG9uZyBsb25nICAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbGxkIilgYC4gICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDphdHRyOmAlbGxpYCAgICAgIHwgbG9uZyBsb25nICAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbGxpIilgYC4gICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDphdHRyOmAlbGx1YCAgICAgIHwgdW5zaWduZWQgbG9uZyBsb25nICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbGx1IilgYC4gICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDphdHRyOmAlemRgICAgICAgIHwgUHlfc3NpemVfdCAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlemQiKWBgLiAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDphdHRyOmAlemlgICAgICAgIHwgUHlfc3NpemVfdCAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlemkiKWBgLiAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDphdHRyOmAlenVgICAgICAgIHwgc2l6ZV90ICAgICAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlenUiKWBgLiAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC0zMjIsNDcgKzUyNywxOCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFN1cHBvcnQgZm9yIGBgIiVsbGQiYGAgYW5kIGBgIiVsbHUiYGAgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IGZvciBgYCIlbGkiYGAsIGBgIiVsbGkiYGAgYW5kIGBgIiV6aSJgYCBhZGRlZC4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmFyZ3MpCiAKICAgIElkZW50aWNhbCB0byA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUZvcm1hdGAgZXhjZXB0IHRoYXQgaXQgdGFrZXMgZXhhY3RseSB0d28KICAgIGFyZ3VtZW50cy4KIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplKQogCi0gICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBieSByZXBsYWNpbmcgYWxsIGRlY2ltYWwgZGlnaXRzIGluCi0gICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiBieSBBU0NJSSBkaWdpdHMgMC0tOQotICAgYWNjb3JkaW5nIHRvIHRoZWlyIGRlY2ltYWwgdmFsdWUuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbgotICAgb2NjdXJzLgotCi0KLS4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFKiBQeVVuaWNvZGVfQXNVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBSZXR1cm4gYSByZWFkLW9ubHkgcG9pbnRlciB0byB0aGUgVW5pY29kZSBvYmplY3QncyBpbnRlcm5hbAotICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyLCAqTlVMTCogaWYgKnVuaWNvZGUqIGlzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LgotICAgTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHN0cmluZyBtYXkgY29udGFpbiBlbWJlZGRlZAotICAgbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlIHRydW5jYXRlZCB3aGVuIHVzZWQgaW4KLSAgIG1vc3QgQyBmdW5jdGlvbnMuCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGVDb3B5KFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBDcmVhdGUgYSBjb3B5IG9mIGEgVW5pY29kZSBzdHJpbmcgZW5kaW5nIHdpdGggYSBudWwgY2hhcmFjdGVyLiBSZXR1cm4gKk5VTEwqCi0gICBhbmQgcmFpc2UgYSA6ZXhjOmBNZW1vcnlFcnJvcmAgZXhjZXB0aW9uIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUsCi0gICBvdGhlcndpc2UgcmV0dXJuIGEgbmV3IGFsbG9jYXRlZCBidWZmZXIgKHVzZSA6YzpmdW5jOmBQeU1lbV9GcmVlYCB0byBmcmVlCi0gICB0aGUgYnVmZmVyKS4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHN0cmluZyBtYXkgY29udGFpbgotICAgZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlIHRydW5jYXRlZCB3aGVuCi0gICB1c2VkIGluIG1vc3QgQyBmdW5jdGlvbnMuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0KLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HZXRTaXplKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBvYmplY3QuCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KFB5T2JqZWN0ICpvYmosIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBDb2VyY2UgYW4gZW5jb2RlZCBvYmplY3QgKm9iaiogdG8gYW4gVW5pY29kZSBvYmplY3QgYW5kIHJldHVybiBhIHJlZmVyZW5jZSB3aXRoCiAgICBpbmNyZW1lbnRlZCByZWZjb3VudC4KQEAgLTM3OSwxNSArNTU1LDIyNyBAQAogICAgZGVjcmVmJ2luZyB0aGUgcmV0dXJuZWQgb2JqZWN0cy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR2V0TGVuZ3RoKFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBvYmplY3QsIGluIGNvZGUgcG9pbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycyhQeU9iamVjdCAqdG8sIFB5X3NzaXplX3QgdG9fc3RhcnQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCBmcm9tX3N0YXJ0LCBQeV9zc2l6ZV90IGhvd19tYW55KQorCisgICBDb3B5IGNoYXJhY3RlcnMgZnJvbSBvbmUgVW5pY29kZSBvYmplY3QgaW50byBhbm90aGVyLiAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtcworICAgY2hhcmFjdGVyIGNvbnZlcnNpb24gd2hlbiBuZWNlc3NhcnkgYW5kIGZhbGxzIGJhY2sgdG8gOmM6ZnVuYzpgbWVtY3B5YCBpZgorICAgcG9zc2libGUuICBSZXR1cm5zIGBgLTFgYCBhbmQgc2V0cyBhbiBleGNlcHRpb24gb24gZXJyb3IsIG90aGVyd2lzZSByZXR1cm5zCisgICBgYDBgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbGwoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc3RhcnQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0IGZpbGxfY2hhcikKKworICAgRmlsbCBhIHN0cmluZyB3aXRoIGEgY2hhcmFjdGVyOiB3cml0ZSAqZmlsbF9jaGFyKiBpbnRvCisgICBgYHVuaWNvZGVbc3RhcnQ6c3RhcnQrbGVuZ3RoXWBgLgorCisgICBGYWlsIGlmICpmaWxsX2NoYXIqIGlzIGJpZ2dlciB0aGFuIHRoZSBzdHJpbmcgbWF4aW11bSBjaGFyYWN0ZXIsIG9yIGlmIHRoZQorICAgc3RyaW5nIGhhcyBtb3JlIHRoYW4gMSByZWZlcmVuY2UuCisKKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gY2hhcmFjdGVyLCBvciByZXR1cm4gYGAtMWBgIGFuZCByYWlzZSBhbgorICAgZXhjZXB0aW9uIG9uIGVycm9yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9Xcml0ZUNoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoYXJhY3RlcikKKworICAgV3JpdGUgYSBjaGFyYWN0ZXIgdG8gYSBzdHJpbmcuICBUaGUgc3RyaW5nIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgdGhyb3VnaAorICAgOmM6ZnVuYzpgUHlVbmljb2RlX05ld2AuICBTaW5jZSBVbmljb2RlIHN0cmluZ3MgYXJlIHN1cHBvc2VkIHRvIGJlIGltbXV0YWJsZSwKKyAgIHRoZSBzdHJpbmcgbXVzdCBub3QgYmUgc2hhcmVkLCBvciBoYXZlIGJlZW4gaGFzaGVkIHlldC4KKworICAgVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhhdCAqdW5pY29kZSogaXMgYSBVbmljb2RlIG9iamVjdCwgdGhhdCB0aGUgaW5kZXggaXMKKyAgIG5vdCBvdXQgb2YgYm91bmRzLCBhbmQgdGhhdCB0aGUgb2JqZWN0IGNhbiBiZSBtb2RpZmllZCBzYWZlbHkgKGkuZS4gdGhhdCBpdAorICAgaXRzIHJlZmVyZW5jZSBjb3VudCBpcyBvbmUpLCBpbiBjb250cmFzdCB0byB0aGUgbWFjcm8gdmVyc2lvbgorICAgOmM6ZnVuYzpgUHlVbmljb2RlX1dSSVRFX0NIQVJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCBQeVVuaWNvZGVfUmVhZENoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgpCisKKyAgIFJlYWQgYSBjaGFyYWN0ZXIgZnJvbSBhIHN0cmluZy4gIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRoYXQgKnVuaWNvZGUqIGlzIGEKKyAgIFVuaWNvZGUgb2JqZWN0IGFuZCB0aGUgaW5kZXggaXMgbm90IG91dCBvZiBib3VuZHMsIGluIGNvbnRyYXN0IHRvIHRoZSBtYWNybworICAgdmVyc2lvbiA6YzpmdW5jOmBQeVVuaWNvZGVfUkVBRF9DSEFSYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfU3Vic3RyaW5nKFB5T2JqZWN0ICpzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCkKKworICAgUmV0dXJuIGEgc3Vic3RyaW5nIG9mICpzdHIqLCBmcm9tIGNoYXJhY3RlciBpbmRleCAqc3RhcnQqIChpbmNsdWRlZCkgdG8KKyAgIGNoYXJhY3RlciBpbmRleCAqZW5kKiAoZXhjbHVkZWQpLiAgTmVnYXRpdmUgaW5kaWNlcyBhcmUgbm90IHN1cHBvcnRlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VDUzQqIFB5VW5pY29kZV9Bc1VDUzQoUHlPYmplY3QgKnUsIFB5X1VDUzQgKmJ1ZmZlciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZsZW4sIGludCBjb3B5X251bGwpCisKKyAgIENvcHkgdGhlIHN0cmluZyAqdSogaW50byBhIFVDUzQgYnVmZmVyLCBpbmNsdWRpbmcgYSBudWxsIGNoYXJhY3RlciwgaWYKKyAgICpjb3B5X251bGwqIGlzIHNldC4gIFJldHVybnMgKk5VTEwqIGFuZCBzZXRzIGFuIGV4Y2VwdGlvbiBvbiBlcnJvciAoaW4KKyAgIHBhcnRpY3VsYXIsIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYgKmJ1ZmxlbiogaXMgc21hbGxlciB0aGFuIHRoZSBsZW5ndGggb2YKKyAgICp1KikuICAqYnVmZmVyKiBpcyByZXR1cm5lZCBvbiBzdWNjZXNzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCogUHlVbmljb2RlX0FzVUNTNENvcHkoUHlPYmplY3QgKnUpCisKKyAgIENvcHkgdGhlIHN0cmluZyAqdSogaW50byBhIG5ldyBVQ1M0IGJ1ZmZlciB0aGF0IGlzIGFsbG9jYXRlZCB1c2luZworICAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYC4gIElmIHRoaXMgZmFpbHMsICpOVUxMKiBpcyByZXR1cm5lZCB3aXRoIGEKKyAgIDpleGM6YE1lbW9yeUVycm9yYCBzZXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKK0RlcHJlY2F0ZWQgUHlfVU5JQ09ERSBBUElzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCisuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisKK1RoZXNlIEFQSSBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgd2l0aCB0aGUgaW1wbGVtZW50YXRpb24gb2YgOnBlcDpgMzkzYC4KK0V4dGVuc2lvbiBtb2R1bGVzIGNhbiBjb250aW51ZSB1c2luZyB0aGVtLCBhcyB0aGV5IHdpbGwgbm90IGJlIHJlbW92ZWQgaW4gUHl0aG9uCiszLngsIGJ1dCBuZWVkIHRvIGJlIGF3YXJlIHRoYXQgdGhlaXIgdXNlIGNhbiBub3cgY2F1c2UgcGVyZm9ybWFuY2UgYW5kIG1lbW9yeSBoaXRzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21Vbmljb2RlKGNvbnN0IFB5X1VOSUNPREUgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKKworICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgZnJvbSB0aGUgUHlfVU5JQ09ERSBidWZmZXIgKnUqIG9mIHRoZSBnaXZlbiBzaXplLiAqdSoKKyAgIG1heSBiZSAqTlVMTCogd2hpY2ggY2F1c2VzIHRoZSBjb250ZW50cyB0byBiZSB1bmRlZmluZWQuIEl0IGlzIHRoZSB1c2VyJ3MKKyAgIHJlc3BvbnNpYmlsaXR5IHRvIGZpbGwgaW4gdGhlIG5lZWRlZCBkYXRhLiAgVGhlIGJ1ZmZlciBpcyBjb3BpZWQgaW50byB0aGUgbmV3CisgICBvYmplY3QuCisKKyAgIElmIHRoZSBidWZmZXIgaXMgbm90ICpOVUxMKiwgdGhlIHJldHVybiB2YWx1ZSBtaWdodCBiZSBhIHNoYXJlZCBvYmplY3QuCisgICBUaGVyZWZvcmUsIG1vZGlmaWNhdGlvbiBvZiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUgb2JqZWN0IGlzIG9ubHkgYWxsb3dlZCB3aGVuCisgICAqdSogaXMgKk5VTEwqLgorCisgICBJZiB0aGUgYnVmZmVyIGlzICpOVUxMKiwgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURZYCBtdXN0IGJlIGNhbGxlZCBvbmNlIHRoZQorICAgc3RyaW5nIGNvbnRlbnQgaGFzIGJlZW4gZmlsbGVkIGJlZm9yZSB1c2luZyBhbnkgb2YgdGhlIGFjY2VzcyBtYWNyb3Mgc3VjaCBhcworICAgOmM6ZnVuYzpgUHlVbmljb2RlX0tJTkRgLgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhYCBvcgorICAgOmM6ZnVuYzpgUHlVbmljb2RlX05ld2AuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiBhIHJlYWQtb25seSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCdzIGludGVybmFsCisgICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIsIG9yICpOVUxMKiBvbiBlcnJvci4gVGhpcyB3aWxsIGNyZWF0ZSB0aGUKKyAgIDpjOnR5cGU6YFB5X1VOSUNPREUqYCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0IGlmIGl0IGlzIG5vdCB5ZXQKKyAgIGF2YWlsYWJsZS4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERWAgc3RyaW5nIG1heSBjb250YWluCisgICBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4KKyAgIHVzZWQgaW4gbW9zdCBDIGZ1bmN0aW9ucy4KKworICAgUGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVUNTNGAsCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfU3Vic3RyaW5nYCwgOmM6ZnVuYzpgUHlVbmljb2RlX1JlYWRDaGFyYCBvciBzaW1pbGFyIG5ldworICAgQVBJcy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSShQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCisKKyAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IHJlcGxhY2luZyBhbGwgZGVjaW1hbCBkaWdpdHMgaW4KKyAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIGJ5IEFTQ0lJIGRpZ2l0cyAwLS05CisgICBhY2NvcmRpbmcgdG8gdGhlaXIgZGVjaW1hbCB2YWx1ZS4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIG9jY3Vycy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKnNpemUpCisKKyAgIExpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZWAsIGJ1dCBhbHNvIHNhdmVzIHRoZSA6YzpmdW5jOmBQeV9VTklDT0RFYAorICAgYXJyYXkgbGVuZ3RoIGluICpzaXplKi4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHN0cmluZworICAgbWF5IGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlCisgICB0cnVuY2F0ZWQgd2hlbiB1c2VkIGluIG1vc3QgQyBmdW5jdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFKiBQeVVuaWNvZGVfQXNVbmljb2RlQ29weShQeU9iamVjdCAqdW5pY29kZSkKKworICAgQ3JlYXRlIGEgY29weSBvZiBhIFVuaWNvZGUgc3RyaW5nIGVuZGluZyB3aXRoIGEgbnVsIGNoYXJhY3Rlci4gUmV0dXJuICpOVUxMKgorICAgYW5kIHJhaXNlIGEgOmV4YzpgTWVtb3J5RXJyb3JgIGV4Y2VwdGlvbiBvbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLAorICAgb3RoZXJ3aXNlIHJldHVybiBhIG5ldyBhbGxvY2F0ZWQgYnVmZmVyICh1c2UgOmM6ZnVuYzpgUHlNZW1fRnJlZWAgdG8gZnJlZQorICAgdGhlIGJ1ZmZlcikuIE5vdGUgdGhhdCB0aGUgcmVzdWx0aW5nIDpjOnR5cGU6YFB5X1VOSUNPREUqYCBzdHJpbmcgbWF5CisgICBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycywgd2hpY2ggd291bGQgY2F1c2UgdGhlIHN0cmluZyB0byBiZQorICAgdHJ1bmNhdGVkIHdoZW4gdXNlZCBpbiBtb3N0IEMgZnVuY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKworICAgUGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVUNTNENvcHlgIG9yIHNpbWlsYXIgbmV3IEFQSXMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dldFNpemUoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiB0aGUgc2l6ZSBvZiB0aGUgZGVwcmVjYXRlZCA6Yzp0eXBlOmBQeV9VTklDT0RFYCByZXByZXNlbnRhdGlvbiwgaW4KKyAgIGNvZGUgdW5pdHMgKHRoaXMgaW5jbHVkZXMgc3Vycm9nYXRlIHBhaXJzIGFzIDIgdW5pdHMpLgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TGVuZ3RoYC4KKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Gcm9tT2JqZWN0KFB5T2JqZWN0ICpvYmopCiAKICAgIFNob3J0Y3V0IGZvciBgYFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChvYmosIE5VTEwsICJzdHJpY3QiKWBgIHdoaWNoIGlzIHVzZWQKICAgIHRocm91Z2hvdXQgdGhlIGludGVycHJldGVyIHdoZW5ldmVyIGNvZXJjaW9uIHRvIFVuaWNvZGUgaXMgbmVlZGVkLgogCi1JZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgOmM6dHlwZTpgd2NoYXJfdGAgYW5kIHByb3ZpZGVzIGEgaGVhZGVyIGZpbGUgd2NoYXIuaCwKLVB5dGhvbiBjYW4gaW50ZXJmYWNlIGRpcmVjdGx5IHRvIHRoaXMgdHlwZSB1c2luZyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucy4KLVN1cHBvcnQgaXMgb3B0aW1pemVkIGlmIFB5dGhvbidzIG93biA6Yzp0eXBlOmBQeV9VTklDT0RFYCB0eXBlIGlzIGlkZW50aWNhbCB0bwotdGhlIHN5c3RlbSdzIDpjOnR5cGU6YHdjaGFyX3RgLgorCitMb2NhbGUgRW5jb2RpbmcKKyIiIiIiIiIiIiIiIiIiIgorCitUaGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcgY2FuIGJlIHVzZWQgdG8gZGVjb2RlIHRleHQgZnJvbSB0aGUgb3BlcmF0aW5nCitzeXN0ZW0uCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgaW50IHN1cnJvZ2F0ZWVzY2FwZSkKKworICAgRGVjb2RlIGEgc3RyaW5nIGZyb20gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiBUaGUgZGVjb2RlciBpcyBzdHJpY3QgaWYKKyAgICpzdXJyb2dhdGVlc2NhcGUqIGlzIGVxdWFsIHRvIHplcm8sIG90aGVyd2lzZSBpdCB1c2VzIHRoZQorICAgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgKDpwZXA6YDM4M2ApIHRvIGVzY2FwZSB1bmRlY29kYWJsZQorICAgYnl0ZXMuIElmIGEgYnl0ZSBzZXF1ZW5jZSBjYW4gYmUgZGVjb2RlZCBhcyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgYW5kCisgICAqc3Vycm9nYXRlZXNjYXBlKiBpcyBub3QgZXF1YWwgdG8gemVybywgdGhlIGJ5dGUgc2VxdWVuY2UgaXMgZXNjYXBlZCB1c2luZworICAgdGhlIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyIGluc3RlYWQgb2YgYmVpbmcgZGVjb2RlZC4gICpzdHIqCisgICBtdXN0IGVuZCB3aXRoIGEgbnVsbCBjaGFyYWN0ZXIgYnV0IGNhbm5vdCBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4KKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIFVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZWAgdG8gZGVjb2RlIGEgc3RyaW5nIGZyb20KKyAgICAgIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgICh0aGUgbG9jYWxlIGVuY29kaW5nIHJlYWQgYXQKKyAgICAgIFB5dGhvbiBzdGFydHVwKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIgKnN0ciwgaW50IHN1cnJvZ2F0ZWVzY2FwZSkKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAsIGJ1dCBjb21wdXRlIHRoZSBzdHJpbmcKKyAgIGxlbmd0aCB1c2luZyA6YzpmdW5jOmBzdHJsZW5gLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUoUHlPYmplY3QgKnVuaWNvZGUsIGludCBzdXJyb2dhdGVlc2NhcGUpCisKKyAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHRvIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4gVGhlIGVuY29kZXIgaXMKKyAgIHN0cmljdCBpZiAqc3Vycm9nYXRlZXNjYXBlKiBpcyBlcXVhbCB0byB6ZXJvLCBvdGhlcndpc2UgaXQgdXNlcyB0aGUKKyAgIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyICg6cGVwOmAzODNgKS4gUmV0dXJuIGEgOmNsYXNzOmBieXRlc2AKKyAgIG9iamVjdC4gKnN0ciogY2Fubm90IGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLgorCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIHRvIGVuY29kZSBhIHN0cmluZyB0bworICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgICAgUHl0aG9uIHN0YXJ0dXApLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiBGaWxlIFN5c3RlbSBFbmNvZGluZwpAQCAtNDMwLDYgKzgxOCwxMyBAQAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgaW5pdGlhbGl6ZWQgYXQgc3RhcnR1cCBmcm9tIHRoZQorICAgICAgbG9jYWxlIGVuY29kaW5nIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQgbGF0ZXIuIElmIHlvdSBuZWVkIHRvIGRlY29kZSBhCisgICAgICBzdHJpbmcgZnJvbSB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcsIHVzZQorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemVgLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVXNlIGBgJ3N0cmljdCdgYCBlcnJvciBoYW5kbGVyIG9uIFdpbmRvd3MuCiAKQEAgLTQ1OCw2ICs4NTMsMTMgQEAKICAgIElmIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGlzIG5vdCBzZXQsIGZhbGwgYmFjayB0byB0aGUKICAgIGxvY2FsZSBlbmNvZGluZy4KIAorICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGlzIGluaXRpYWxpemVkIGF0IHN0YXJ0dXAgZnJvbSB0aGUKKyAgICAgIGxvY2FsZSBlbmNvZGluZyBhbmQgY2Fubm90IGJlIG1vZGlmaWVkIGxhdGVyLiBJZiB5b3UgbmVlZCB0byBlbmNvZGUgYQorICAgICAgc3RyaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlYC4KKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIApAQCAtNDc5LDkgKzg4MSw5IEBACiAgICBDb3B5IHRoZSBVbmljb2RlIG9iamVjdCBjb250ZW50cyBpbnRvIHRoZSA6Yzp0eXBlOmB3Y2hhcl90YCBidWZmZXIgKncqLiAgQXQgbW9zdAogICAgKnNpemUqIDpjOnR5cGU6YHdjaGFyX3RgIGNoYXJhY3RlcnMgYXJlIGNvcGllZCAoZXhjbHVkaW5nIGEgcG9zc2libHkgdHJhaWxpbmcKICAgIDAtdGVybWluYXRpb24gY2hhcmFjdGVyKS4gIFJldHVybiB0aGUgbnVtYmVyIG9mIDpjOnR5cGU6YHdjaGFyX3RgIGNoYXJhY3RlcnMKLSAgIGNvcGllZCBvciAtMSBpbiBjYXNlIG9mIGFuIGVycm9yLiAgTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgd2NoYXJfdGAKKyAgIGNvcGllZCBvciAtMSBpbiBjYXNlIG9mIGFuIGVycm9yLiAgTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgd2NoYXJfdCpgCiAgICBzdHJpbmcgbWF5IG9yIG1heSBub3QgYmUgMC10ZXJtaW5hdGVkLiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIKLSAgIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSA6Yzp0eXBlOmB3Y2hhcl90YCBzdHJpbmcgaXMgMC10ZXJtaW5hdGVkIGluIGNhc2UgdGhpcyBpcworICAgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIDpjOnR5cGU6YHdjaGFyX3QqYCBzdHJpbmcgaXMgMC10ZXJtaW5hdGVkIGluIGNhc2UgdGhpcyBpcwogICAgcmVxdWlyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBBbHNvLCBub3RlIHRoYXQgdGhlIDpjOnR5cGU6YHdjaGFyX3QqYCBzdHJpbmcKICAgIG1pZ2h0IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlIHRydW5jYXRlZAogICAgd2hlbiB1c2VkIHdpdGggbW9zdCBDIGZ1bmN0aW9ucy4KQEAgLTQ5NywxMiArODk5LDMyIEBACiAgICBSZXR1cm5zIGEgYnVmZmVyIGFsbG9jYXRlZCBieSA6YzpmdW5jOmBQeU1lbV9BbGxvY2AgKHVzZQogICAgOmM6ZnVuYzpgUHlNZW1fRnJlZWAgdG8gZnJlZSBpdCkgb24gc3VjY2Vzcy4gT24gZXJyb3IsIHJldHVybnMgKk5VTEwqLAogICAgKlwqc2l6ZSogaXMgdW5kZWZpbmVkIGFuZCByYWlzZXMgYSA6ZXhjOmBNZW1vcnlFcnJvcmAuIE5vdGUgdGhhdCB0aGUKLSAgIHJlc3VsdGluZyA6Yzp0eXBlOmB3Y2hhcl90KmAgc3RyaW5nIG1pZ2h0IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXJzLCB3aGljaAorICAgcmVzdWx0aW5nIDpjOnR5cGU6YHdjaGFyX3RgIHN0cmluZyBtaWdodCBjb250YWluIG51bGwgY2hhcmFjdGVycywgd2hpY2gKICAgIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4gdXNlZCB3aXRoIG1vc3QgQyBmdW5jdGlvbnMuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKK1VDUzQgU3VwcG9ydAorIiIiIiIiIiIiIiIiCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBYWFggYXJlIHRoZXNlIG1lYW50IHRvIGJlIHB1YmxpYz8KKworLi4gYzpmdW5jdGlvbjo6IHNpemVfdCBQeV9VQ1M0X3N0cmxlbihjb25zdCBQeV9VQ1M0ICp1KQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5X1VDUzRfc3RyY3B5KFB5X1VDUzQgKnMxLCBjb25zdCBQeV9VQ1M0ICpzMikKKyAgICAgICAgICAgICAgICBQeV9VQ1M0KiBQeV9VQ1M0X3N0cm5jcHkoUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyLCBzaXplX3QgbikKKyAgICAgICAgICAgICAgICBQeV9VQ1M0KiBQeV9VQ1M0X3N0cmNhdChQeV9VQ1M0ICpzMSwgY29uc3QgUHlfVUNTNCAqczIpCisgICAgICAgICAgICAgICAgaW50IFB5X1VDUzRfc3RyY21wKGNvbnN0IFB5X1VDUzQgKnMxLCBjb25zdCBQeV9VQ1M0ICpzMikKKyAgICAgICAgICAgICAgICBpbnQgUHlfVUNTNF9zdHJuY21wKGNvbnN0IFB5X1VDUzQgKnMxLCBjb25zdCBQeV9VQ1M0ICpzMiwgc2l6ZV90IG4pCisgICAgICAgICAgICAgICAgUHlfVUNTNCogUHlfVUNTNF9zdHJjaHIoY29uc3QgUHlfVUNTNCAqcywgUHlfVUNTNCBjKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5X1VDUzRfc3RycmNocihjb25zdCBQeV9VQ1M0ICpzLCBQeV9VQ1M0IGMpCisKKyAgIFRoZXNlIHV0aWxpdHkgZnVuY3Rpb25zIHdvcmsgb24gc3RyaW5ncyBvZiA6Yzp0eXBlOmBQeV9VQ1M0YCBjaGFyYWN0ZXJzIGFuZAorICAgb3RoZXJ3aXNlIGJlaGF2ZSBsaWtlIHRoZSBDIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgbmFtZS4KKworCiAuLiBfYnVpbHRpbmNvZGVjczoKIAogQnVpbHQtaW4gQ29kZWNzCkBAIC01MzcsNyArOTU5LDggQEAKIFRoZXNlIGFyZSB0aGUgZ2VuZXJpYyBjb2RlYyBBUElzOgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBieSBkZWNvZGluZyAqc2l6ZSogYnl0ZXMgb2YgdGhlIGVuY29kZWQgc3RyaW5nICpzKi4KICAgICplbmNvZGluZyogYW5kICplcnJvcnMqIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2FtZSBuYW1lCkBAIC01NDYsNyArOTY5LDE4IEBACiAgICB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcyBvYmplY3QuCisgICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHNhbWUKKyAgIG5hbWUgaW4gdGhlIFVuaWNvZGUgOm1ldGg6YGVuY29kZWAgbWV0aG9kLiBUaGUgY29kZWMgdG8gYmUgdXNlZCBpcyBsb29rZWQgdXAKKyAgIHVzaW5nIHRoZSBQeXRob24gY29kZWMgcmVnaXN0cnkuIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKKyAgIHRoZSBjb2RlYy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGUoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciAqcyogb2YgdGhlIGdpdmVuICpzaXplKiBhbmQgcmV0dXJuIGEgUHl0aG9uCiAgICBieXRlcyBvYmplY3QuICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgdGhlCkBAIC01NTQsMTQgKzk4OCw5IEBACiAgICB0byBiZSB1c2VkIGlzIGxvb2tlZCB1cCB1c2luZyB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5LiAgUmV0dXJuICpOVUxMKiBpZiBhbgogICAgZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLQotICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcyBvYmplY3QuCi0gICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHNhbWUKLSAgIG5hbWUgaW4gdGhlIFVuaWNvZGUgOm1ldGg6YGVuY29kZWAgbWV0aG9kLiBUaGUgY29kZWMgdG8gYmUgdXNlZCBpcyBsb29rZWQgdXAKLSAgIHVzaW5nIHRoZSBQeXRob24gY29kZWMgcmVnaXN0cnkuIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKLSAgIHRoZSBjb2RlYy4KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nYC4KIAogCiBVVEYtOCBDb2RlY3MKQEAgLTU3Niw3ICsxMDA1LDggQEAKICAgICpzKi4gUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgUHlfc3NpemVfdCAqY29uc3VtZWQpCiAKICAgIElmICpjb25zdW1lZCogaXMgKk5VTEwqLCBiZWhhdmUgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGOGAuIElmCiAgICAqY29uc3VtZWQqIGlzIG5vdCAqTlVMTCosIHRyYWlsaW5nIGluY29tcGxldGUgVVRGLTggYnl0ZSBzZXF1ZW5jZXMgd2lsbCBub3QgYmUKQEAgLTU4NCwxMyArMTAxNCw2IEBACiAgICB0aGF0IGhhdmUgYmVlbiBkZWNvZGVkIHdpbGwgYmUgc3RvcmVkIGluICpjb25zdW1lZCouCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGOChjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKLQotICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgKnMqIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgVVRGLTggYW5kCi0gICByZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQotICAgdGhlIGNvZGVjLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGOFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgVVRGLTggYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcwpAQCAtNTk4LDEzICsxMDIxLDQ4IEBACiAgICByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqc2l6ZSkKKworICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBlbmNvZGluZyAoVVRGLTgpIG9mIHRoZSBVbmljb2RlIG9iamVjdCwgYW5kCisgICBzdG9yZSB0aGUgc2l6ZSBvZiB0aGUgZW5jb2RlZCByZXByZXNlbnRhdGlvbiAoaW4gYnl0ZXMpIGluICpzaXplKi4gICpzaXplKgorICAgY2FuIGJlICpOVUxMKiwgaW4gdGhpcyBjYXNlIG5vIHNpemUgd2lsbCBiZSBzdG9yZWQuCisKKyAgIEluIHRoZSBjYXNlIG9mIGFuIGVycm9yLCAqTlVMTCogaXMgcmV0dXJuZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0IGFuZCBubworICAgKnNpemUqIGlzIHN0b3JlZC4KKworICAgVGhpcyBjYWNoZXMgdGhlIFVURi04IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdHJpbmcgaW4gdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQKKyAgIHN1YnNlcXVlbnQgY2FsbHMgd2lsbCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBzYW1lIGJ1ZmZlci4gIFRoZSBjYWxsZXIgaXMgbm90CisgICByZXNwb25zaWJsZSBmb3IgZGVhbGxvY2F0aW5nIHRoZSBidWZmZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBBcyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZWAsIGJ1dCBkb2VzIG5vdCBzdG9yZSB0aGUgc2l6ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGOChjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgKnMqIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgVVRGLTggYW5kCisgICByZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQorICAgdGhlIGNvZGVjLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGOFN0cmluZ2Agb3IgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGOEFuZFNpemVgLgorCisKIFVURi0zMiBDb2RlY3MKICIiIiIiIiIiIiIiIiIKIAogVGhlc2UgYXJlIHRoZSBVVEYtMzIgY29kZWMgQVBJczoKIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYzMihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYzMihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIpCiAKICAgIERlY29kZSAqc2l6ZSogYnl0ZXMgZnJvbSBhIFVURi0zMiBlbmNvZGVkIGJ1ZmZlciBzdHJpbmcgYW5kIHJldHVybiB0aGUKICAgIGNvcnJlc3BvbmRpbmcgVW5pY29kZSBvYmplY3QuICAqZXJyb3JzKiAoaWYgbm9uLSpOVUxMKikgZGVmaW5lcyB0aGUgZXJyb3IKQEAgLTYzMiw3ICsxMDkwLDggQEAKICAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIAogICAgSWYgKmNvbnN1bWVkKiBpcyAqTlVMTCosIGJlaGF2ZSBsaWtlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVVVEYzMmAuIElmCiAgICAqY29uc3VtZWQqIGlzIG5vdCAqTlVMTCosIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsYCB3aWxsIG5vdCB0cmVhdApAQCAtNjQxLDcgKzExMDAsMTUgQEAKICAgIHRoYXQgaGF2ZSBiZWVuIGRlY29kZWQgd2lsbCBiZSBzdG9yZWQgaW4gKmNvbnN1bWVkKi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEYzMihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiBhIFB5dGhvbiBieXRlIHN0cmluZyB1c2luZyB0aGUgVVRGLTMyIGVuY29kaW5nIGluIG5hdGl2ZSBieXRlCisgICBvcmRlci4gVGhlIHN0cmluZyBhbHdheXMgc3RhcnRzIHdpdGggYSBCT00gbWFyay4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLgorICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCiAKICAgIFJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QgaG9sZGluZyB0aGUgVVRGLTMyIGVuY29kZWQgdmFsdWUgb2YgdGhlIFVuaWNvZGUKICAgIGRhdGEgaW4gKnMqLiAgT3V0cHV0IGlzIHdyaXR0ZW4gYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgYnl0ZSBvcmRlcjo6CkBAIC02NTgsMTIgKzExMjUsOSBAQAogCiAgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBSZXR1cm4gYSBQeXRob24gYnl0ZSBzdHJpbmcgdXNpbmcgdGhlIFVURi0zMiBlbmNvZGluZyBpbiBuYXRpdmUgYnl0ZQotICAgb3JkZXIuIFRoZSBzdHJpbmcgYWx3YXlzIHN0YXJ0cyB3aXRoIGEgQk9NIG1hcmsuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4KLSAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nYC4KIAogCiBVVEYtMTYgQ29kZWNzCkBAIC02NzIsNyArMTEzNiw4IEBACiBUaGVzZSBhcmUgdGhlIFVURi0xNiBjb2RlYyBBUElzOgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjE2KGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlcikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjE2KGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlcikKIAogICAgRGVjb2RlICpzaXplKiBieXRlcyBmcm9tIGEgVVRGLTE2IGVuY29kZWQgYnVmZmVyIHN0cmluZyBhbmQgcmV0dXJuIHRoZQogICAgY29ycmVzcG9uZGluZyBVbmljb2RlIG9iamVjdC4gICplcnJvcnMqIChpZiBub24tKk5VTEwqKSBkZWZpbmVzIHRoZSBlcnJvcgpAQCAtNjk5LDcgKzExNjQsOCBAQAogICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogCiAgICBJZiAqY29uc3VtZWQqIGlzICpOVUxMKiwgYmVoYXZlIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjE2YC4gSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWxgIHdpbGwgbm90IHRyZWF0CkBAIC03MDgsNyArMTE3NCwxNSBAQAogICAgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIGRlY29kZWQgd2lsbCBiZSBzdG9yZWQgaW4gKmNvbnN1bWVkKi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEYxNihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiBhIFB5dGhvbiBieXRlIHN0cmluZyB1c2luZyB0aGUgVVRGLTE2IGVuY29kaW5nIGluIG5hdGl2ZSBieXRlCisgICBvcmRlci4gVGhlIHN0cmluZyBhbHdheXMgc3RhcnRzIHdpdGggYSBCT00gbWFyay4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLgorICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCiAKICAgIFJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QgaG9sZGluZyB0aGUgVVRGLTE2IGVuY29kZWQgdmFsdWUgb2YgdGhlIFVuaWNvZGUKICAgIGRhdGEgaW4gKnMqLiAgT3V0cHV0IGlzIHdyaXR0ZW4gYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgYnl0ZSBvcmRlcjo6CkBAIC03MjYsMTIgKzEyMDAsOSBAQAogCiAgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBSZXR1cm4gYSBQeXRob24gYnl0ZSBzdHJpbmcgdXNpbmcgdGhlIFVURi0xNiBlbmNvZGluZyBpbiBuYXRpdmUgYnl0ZQotICAgb3JkZXIuIFRoZSBzdHJpbmcgYWx3YXlzIHN0YXJ0cyB3aXRoIGEgQk9NIG1hcmsuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4KLSAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nYC4KIAogCiBVVEYtNyBDb2RlY3MKQEAgLTc0Niw3ICsxMjE3LDggQEAKICAgICpzKi4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgUHlfc3NpemVfdCAqY29uc3VtZWQpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogCiAgICBJZiAqY29uc3VtZWQqIGlzICpOVUxMKiwgYmVoYXZlIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjdgLiAgSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgdHJhaWxpbmcgaW5jb21wbGV0ZSBVVEYtNyBiYXNlLTY0IHNlY3Rpb25zIHdpbGwgbm90CkBAIC03NTQsNyArMTIyNiw4IEBACiAgICBieXRlcyB0aGF0IGhhdmUgYmVlbiBkZWNvZGVkIHdpbGwgYmUgc3RvcmVkIGluICpjb25zdW1lZCouCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGNyhjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGludCBiYXNlNjRTZXRPLCBpbnQgYmFzZTY0V2hpdGVTcGFjZSwgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGNyhjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRTZXRPLCBpbnQgYmFzZTY0V2hpdGVTcGFjZSwgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gc2l6ZSB1c2luZyBVVEYtNyBhbmQKICAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CkBAIC03NjUsNiArMTIzOCwxMSBAQAogICAgbm9uemVybywgd2hpdGVzcGFjZSB3aWxsIGJlIGVuY29kZWQgaW4gYmFzZS02NC4gIEJvdGggYXJlIHNldCB0byB6ZXJvIGZvciB0aGUKICAgIFB5dGhvbiAidXRmLTciIGNvZGVjLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJLgorCisgICAuLiBYWFggcmVwbGFjZSB3aXRoIHdoYXQ/CisKIAogVW5pY29kZS1Fc2NhcGUgQ29kZWNzCiAiIiIiIiIiIiIiIiIiIiIiIiIiIiIKQEAgLTc3MiwxOSArMTI1MCwxMyBAQAogVGhlc2UgYXJlIHRoZSAiVW5pY29kZSBFc2NhcGUiIGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IGRlY29kaW5nICpzaXplKiBieXRlcyBvZiB0aGUgVW5pY29kZS1Fc2NhcGUgZW5jb2RlZAogICAgc3RyaW5nICpzKi4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplKQotCi0gICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIFVuaWNvZGUtRXNjYXBlIGFuZAotICAgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZQotICAgY29kZWMuCi0KLQogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQogCiAgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBVbmljb2RlLUVzY2FwZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uCkBAIC03OTIsMjUgKzEyNjQsMzAgQEAKICAgIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCisKKyAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgVW5pY29kZS1Fc2NhcGUgYW5kCisgICByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlCisgICBjb2RlYy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmdgLgorCisKIFJhdy1Vbmljb2RlLUVzY2FwZSBDb2RlY3MKICIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKIAogVGhlc2UgYXJlIHRoZSAiUmF3IFVuaWNvZGUgRXNjYXBlIiBjb2RlYyBBUElzOgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBieSBkZWNvZGluZyAqc2l6ZSogYnl0ZXMgb2YgdGhlIFJhdy1Vbmljb2RlLUVzY2FwZQogICAgZW5jb2RlZCBzdHJpbmcgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKLQotICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBSYXctVW5pY29kZS1Fc2NhcGUKLSAgIGFuZCByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKLSAgIHRoZSBjb2RlYy4KLQotCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiAKICAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIFJhdy1Vbmljb2RlLUVzY2FwZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMKQEAgLTgxOCw2ICsxMjk1LDE4IEBACiAgICB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIFJhdy1Vbmljb2RlLUVzY2FwZQorICAgYW5kIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQorICAgdGhlIGNvZGVjLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZ2AuCisKKwogTGF0aW4tMSBDb2RlY3MKICIiIiIiIiIiIiIiIiIiCiAKQEAgLTgzMSwxOCArMTMyMCwyMiBAQAogICAgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIExhdGluLTEgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcworICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKKyAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIExhdGluLTEgYW5kCiAgICByZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQogICAgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBMYXRpbi0xIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKLSAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCi0gICByYWlzZWQgYnkgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZ2AuCiAKIAogQVNDSUkgQ29kZWNzCkBAIC04NTgsMTggKzEzNTEsMjIgQEAKICAgICpzKi4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIEFTQ0lJIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKKyAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCisgICByYWlzZWQgYnkgdGhlIGNvZGVjLgorCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUFTQ0lJKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIEFTQ0lJIGFuZAogICAgcmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKICAgIHRoZSBjb2RlYy4KIAotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBBU0NJSSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCi0gICBvYmplY3QuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcwotICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZ2AuCiAKIAogQ2hhcmFjdGVyIE1hcCBDb2RlY3MKQEAgLTg5OCw3ICsxMzk1LDggQEAKIAogVGhlc2UgYXJlIHRoZSBtYXBwaW5nIGNvZGVjIEFQSXM6CiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZUNoYXJtYXAoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqbWFwcGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IGRlY29kaW5nICpzaXplKiBieXRlcyBvZiB0aGUgZW5jb2RlZCBzdHJpbmcgKnMqIHVzaW5nCiAgICB0aGUgZ2l2ZW4gKm1hcHBpbmcqIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlCkBAIC05MDgsMTMgKzE0MDYsNiBAQAogICAgdHJlYXRlZCBhcyAidW5kZWZpbmVkIG1hcHBpbmciLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqbWFwcGluZywgY29uc3QgY2hhciAqZXJyb3JzKQotCi0gICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIHRoZSBnaXZlbgotICAgKm1hcHBpbmcqIG9iamVjdCBhbmQgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuIFJldHVybiAqTlVMTCogaWYgYW4KLSAgIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KLQotCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICptYXBwaW5nKQogCiAgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4gKm1hcHBpbmcqIG9iamVjdCBhbmQgcmV0dXJuIHRoZSByZXN1bHQKQEAgLTkyNCw3ICsxNDE1LDggQEAKIFRoZSBmb2xsb3dpbmcgY29kZWMgQVBJIGlzIHNwZWNpYWwgaW4gdGhhdCBtYXBzIFVuaWNvZGUgdG8gVW5pY29kZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgUHlPYmplY3QgKnRhYmxlLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRhYmxlLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIFRyYW5zbGF0ZSBhIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIGJ5IGFwcGx5aW5nIGEKICAgIGNoYXJhY3RlciBtYXBwaW5nICp0YWJsZSogdG8gaXQgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUgb2JqZWN0LiAgUmV0dXJuCkBAIC05MzcsNiArMTQyOSwyMiBAQAogICAgYW5kIHNlcXVlbmNlcyB3b3JrIHdlbGwuICBVbm1hcHBlZCBjaGFyYWN0ZXIgb3JkaW5hbHMgKG9uZXMgd2hpY2ggY2F1c2UgYQogICAgOmV4YzpgTG9va3VwRXJyb3JgKSBhcmUgbGVmdCB1bnRvdWNoZWQgYW5kIGFyZSBjb3BpZWQgYXMtaXMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEkuCisKKyAgIC4uIFhYWCByZXBsYWNlIHdpdGggd2hhdD8KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyB0aGUgZ2l2ZW4KKyAgICptYXBwaW5nKiBvYmplY3QgYW5kIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiBSZXR1cm4gKk5VTEwqIGlmIGFuCisgICBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nYC4KIAogCiBNQkNTIGNvZGVjcyBmb3IgV2luZG93cwpAQCAtOTUzLDcgKzE0NjEsOCBAQAogICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIGludCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIGludCAqY29uc3VtZWQpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwoY29uc3QgY2hhciAqcywgaW50IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpjb25zdW1lZCkKIAogICAgSWYgKmNvbnN1bWVkKiBpcyAqTlVMTCosIGJlaGF2ZSBsaWtlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVNQkNTYC4gSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZU1CQ1NTdGF0ZWZ1bGAgd2lsbCBub3QgZGVjb2RlCkBAIC05NjEsMTggKzE0NzAsMzEgQEAKICAgIGluICpjb25zdW1lZCouCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNNQkNTU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBNQkNTIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKKyAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCisgICByYWlzZWQgYnkgdGhlIGNvZGVjLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKGludCBjb2RlX3BhZ2UsIFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplcnJvcnMpCisKKyAgIEVuY29kZSB0aGUgVW5pY29kZSBvYmplY3QgdXNpbmcgdGhlIHNwZWNpZmllZCBjb2RlIHBhZ2UgYW5kIHJldHVybiBhIFB5dGhvbgorICAgYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuIFVzZQorICAgOmM6ZGF0YTpgQ1BfQUNQYCBjb2RlIHBhZ2UgdG8gZ2V0IHRoZSBNQkNTIGVuY29kZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZU1CQ1MoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgTUJDUyBhbmQgcmV0dXJuCiAgICBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZQogICAgY29kZWMuCiAKLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNNQkNTU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBNQkNTIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKLSAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCi0gICByYWlzZWQgYnkgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc01CQ1NTdHJpbmdgIG9yIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZWAuCiAKIAogTWV0aG9kcyAmIFNsb3RzCkBAIC0xMDExLDcgKzE1MzMsOCBAQAogICAgY2hhcmFjdGVycyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgc3RyaW5ncy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2xhdGUoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnRhYmxlLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2xhdGUoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnRhYmxlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIFRyYW5zbGF0ZSBhIHN0cmluZyBieSBhcHBseWluZyBhIGNoYXJhY3RlciBtYXBwaW5nIHRhYmxlIHRvIGl0IGFuZCByZXR1cm4gdGhlCiAgICByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QuCkBAIC0xMDMzLDE0ICsxNTU2LDE2IEBACiAgICBVbmljb2RlIHN0cmluZy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9UYWlsbWF0Y2goUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9UYWlsbWF0Y2goUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCiAKICAgIFJldHVybiAxIGlmICpzdWJzdHIqIG1hdGNoZXMgYGBzdHJbc3RhcnQ6ZW5kXWBgIGF0IHRoZSBnaXZlbiB0YWlsIGVuZAogICAgKCpkaXJlY3Rpb24qID09IC0xIG1lYW5zIHRvIGRvIGEgcHJlZml4IG1hdGNoLCAqZGlyZWN0aW9uKiA9PSAxIGEgc3VmZml4IG1hdGNoKSwKICAgIDAgb3RoZXJ3aXNlLiBSZXR1cm4gYGAtMWBgIGlmIGFuIGVycm9yIG9jY3VycmVkLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9GaW5kKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQogCiAgICBSZXR1cm4gdGhlIGZpcnN0IHBvc2l0aW9uIG9mICpzdWJzdHIqIGluIGBgc3RyW3N0YXJ0OmVuZF1gYCB1c2luZyB0aGUgZ2l2ZW4KICAgICpkaXJlY3Rpb24qICgqZGlyZWN0aW9uKiA9PSAxIG1lYW5zIHRvIGRvIGEgZm9yd2FyZCBzZWFyY2gsICpkaXJlY3Rpb24qID09IC0xIGEKQEAgLTEwNDksMTMgKzE1NzQsMjcgQEAKICAgIG9jY3VycmVkIGFuZCBhbiBleGNlcHRpb24gaGFzIGJlZW4gc2V0LgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9Db3VudChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9GaW5kQ2hhcihQeU9iamVjdCAqc3RyLCBQeV9VQ1M0IGNoLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCisKKyAgIFJldHVybiB0aGUgZmlyc3QgcG9zaXRpb24gb2YgdGhlIGNoYXJhY3RlciAqY2gqIGluIGBgc3RyW3N0YXJ0OmVuZF1gYCB1c2luZworICAgdGhlIGdpdmVuICpkaXJlY3Rpb24qICgqZGlyZWN0aW9uKiA9PSAxIG1lYW5zIHRvIGRvIGEgZm9yd2FyZCBzZWFyY2gsCisgICAqZGlyZWN0aW9uKiA9PSAtMSBhIGJhY2t3YXJkIHNlYXJjaCkuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBpbmRleCBvZiB0aGUKKyAgIGZpcnN0IG1hdGNoOyBhIHZhbHVlIG9mIGBgLTFgYCBpbmRpY2F0ZXMgdGhhdCBubyBtYXRjaCB3YXMgZm91bmQsIGFuZCBgYC0yYGAKKyAgIGluZGljYXRlcyB0aGF0IGFuIGVycm9yIG9jY3VycmVkIGFuZCBhbiBleGNlcHRpb24gaGFzIGJlZW4gc2V0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfQ291bnQoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogCiAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgKnN1YnN0ciogaW4KICAgIGBgc3RyW3N0YXJ0OmVuZF1gYC4gIFJldHVybiBgYC0xYGAgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBQeU9iamVjdCAqcmVwbHN0ciwgUHlfc3NpemVfdCBtYXhjb3VudCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcGxzdHIsIFB5X3NzaXplX3QgbWF4Y291bnQpCiAKICAgIFJlcGxhY2UgYXQgbW9zdCAqbWF4Y291bnQqIG9jY3VycmVuY2VzIG9mICpzdWJzdHIqIGluICpzdHIqIHdpdGggKnJlcGxzdHIqIGFuZAogICAgcmV0dXJuIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QuICptYXhjb3VudCogPT0gLTEgbWVhbnMgcmVwbGFjZSBhbGwKQEAgLTEwNzYsNyArMTYxNSw3IEBACiAgICBJU08tODg1OS0xIGlmIGl0IGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9SaWNoQ29tcGFyZShQeU9iamVjdCAqbGVmdCwgIFB5T2JqZWN0ICpyaWdodCwgIGludCBvcCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1JpY2hDb21wYXJlKFB5T2JqZWN0ICpsZWZ0LCAgUHlPYmplY3QgKnJpZ2h0LCAgaW50IG9wKQogCiAgICBSaWNoIGNvbXBhcmUgdHdvIHVuaWNvZGUgc3RyaW5ncyBhbmQgcmV0dXJuIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogCkBAIC0xMTAzLDggKzE2NDIsOCBAQAogICAgQ2hlY2sgd2hldGhlciAqZWxlbWVudCogaXMgY29udGFpbmVkIGluICpjb250YWluZXIqIGFuZCByZXR1cm4gdHJ1ZSBvciBmYWxzZQogICAgYWNjb3JkaW5nbHkuCiAKLSAgICplbGVtZW50KiBoYXMgdG8gY29lcmNlIHRvIGEgb25lIGVsZW1lbnQgVW5pY29kZSBzdHJpbmcuIGBgLTFgYCBpcyByZXR1cm5lZCBpZgotICAgdGhlcmUgd2FzIGFuIGVycm9yLgorICAgKmVsZW1lbnQqIGhhcyB0byBjb2VyY2UgdG8gYSBvbmUgZWxlbWVudCBVbmljb2RlIHN0cmluZy4gYGAtMWBgIGlzIHJldHVybmVkCisgICBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlVbmljb2RlX0ludGVybkluUGxhY2UoUHlPYmplY3QgKipzdHJpbmcpCkBAIC0xMTIzLDcgKzE2NjIsNiBAQAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhjb25zdCBjaGFyICp2KQogCiAgICBBIGNvbWJpbmF0aW9uIG9mIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tU3RyaW5nYCBhbmQKLSAgIDpjOmZ1bmM6YFB5VW5pY29kZV9JbnRlcm5JblBsYWNlYCwgcmV0dXJuaW5nIGVpdGhlciBhIG5ldyB1bmljb2RlIHN0cmluZyBvYmplY3QKLSAgIHRoYXQgaGFzIGJlZW4gaW50ZXJuZWQsIG9yIGEgbmV3ICgib3duZWQiKSByZWZlcmVuY2UgdG8gYW4gZWFybGllciBpbnRlcm5lZAotICAgc3RyaW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLgotCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZWAsIHJldHVybmluZyBlaXRoZXIgYSBuZXcgdW5pY29kZSBzdHJpbmcKKyAgIG9iamVjdCB0aGF0IGhhcyBiZWVuIGludGVybmVkLCBvciBhIG5ldyAoIm93bmVkIikgcmVmZXJlbmNlIHRvIGFuIGVhcmxpZXIKKyAgIGludGVybmVkIHN0cmluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS92ZXJ5aGlnaC5yc3QgYi9Eb2MvYy1hcGkvdmVyeWhpZ2gucnN0CmluZGV4IDQxY2RkNmIuLjQ5OWViM2UgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS92ZXJ5aGlnaC5yc3QKKysrIGIvRG9jL2MtYXBpL3ZlcnloaWdoLnJzdApAQCAtOTUsMTIgKzk1LDYgQEAKICAgIGxlYXZpbmcgKmNsb3NlaXQqIHNldCB0byBgYDBgYCBhbmQgKmZsYWdzKiBzZXQgdG8gKk5VTEwqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlSdW5fU2ltcGxlRmlsZUZsYWdzKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgUHlDb21waWxlckZsYWdzICpmbGFncykKLQotICAgVGhpcyBpcyBhIHNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIDpjOmZ1bmM6YFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzYCBiZWxvdywKLSAgIGxlYXZpbmcgKmNsb3NlaXQqIHNldCB0byBgYDBgYC4KLQotCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5UnVuX1NpbXBsZUZpbGVFeChGSUxFICpmcCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBjbG9zZWl0KQogCiAgICBUaGlzIGlzIGEgc2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gOmM6ZnVuYzpgUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3NgIGJlbG93LApkaWZmIC0tZ2l0IGEvRG9jL2NvbmYucHkgYi9Eb2MvY29uZi5weQppbmRleCA1NTVmMjgxLi42YjA4NWUwIDEwMDY0NAotLS0gYS9Eb2MvY29uZi5weQorKysgYi9Eb2MvY29uZi5weQpAQCAtOTEsNyArOTEsNyBAQAogfQogCiAjIE91dHB1dCBhbiBPcGVuU2VhcmNoIGRlc2NyaXB0aW9uIGZpbGUuCi1odG1sX3VzZV9vcGVuc2VhcmNoID0gJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4yJworaHRtbF91c2Vfb3BlbnNlYXJjaCA9ICdodHRwOi8vZG9jcy5weXRob24ub3JnLycgKyB2ZXJzaW9uCiAKICMgQWRkaXRpb25hbCBzdGF0aWMgZmlsZXMuCiBodG1sX3N0YXRpY19wYXRoID0gWyd0b29scy9zcGhpbnhleHQvc3RhdGljJ10KZGlmZiAtLWdpdCBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CmluZGV4IGM3ZDdiZDEuLmExMDA0YWQgMTAwNjQ0Ci0tLSBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKKysrIGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdApAQCAtNDY1LDYgKzQ2NSwxMSBAQAogUHlGdW5jdGlvbl9OZXc6UHlPYmplY3QqOmNvZGU6KzE6CiBQeUZ1bmN0aW9uX05ldzpQeU9iamVjdCo6Z2xvYmFsczorMToKIAorUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWU6UHlPYmplY3QqOjorMToKK1B5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lOlB5T2JqZWN0Kjpjb2RlOisxOgorUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWU6UHlPYmplY3QqOmdsb2JhbHM6KzE6CitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZTpQeU9iamVjdCo6cXVhbG5hbWU6KzE6CisKIFB5RnVuY3Rpb25fU2V0Q2xvc3VyZTppbnQ6OjoKIFB5RnVuY3Rpb25fU2V0Q2xvc3VyZTpQeU9iamVjdCo6b3A6MDoKIFB5RnVuY3Rpb25fU2V0Q2xvc3VyZTpQeU9iamVjdCo6Y2xvc3VyZTorMToKZGlmZiAtLWdpdCBhL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdCBiL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdAppbmRleCBlMTVkYzc2Li43MTcwMmU1IDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QKKysrIGIvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0CkBAIC0xNjAsNyArMTYwLDcgQEAKIC4uIGNsYXNzOjogRXh0ZW5zaW9uCiAKICAgIFRoZSBFeHRlbnNpb24gY2xhc3MgZGVzY3JpYmVzIGEgc2luZ2xlIEMgb3IgQysrZXh0ZW5zaW9uIG1vZHVsZSBpbiBhIHNldHVwCi0gICBzY3JpcHQuIEl0IGFjY2VwdHMgdGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBpbiBpdHMgY29uc3RydWN0b3IKKyAgIHNjcmlwdC4gSXQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIGluIGl0cyBjb25zdHJ1Y3RvcjoKIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGFyZ3VtZW50IG5hbWUgICAgICAgICAgfCB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0eXBlICAgICAgICAgICAgICAgICAgICAgIHwKQEAgLTExNTcsMTIgKzExNTcsMTEgQEAKIAogLi4gZnVuY3Rpb246OiBncm9rX2Vudmlyb25tZW50X2Vycm9yKGV4Y1ssIHByZWZpeD0nZXJyb3I6ICddKQogCi0gICBHZW5lcmF0ZSBhIHVzZWZ1bCBlcnJvciBtZXNzYWdlIGZyb20gYW4gOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAgICg6ZXhjOmBJT0Vycm9yYAotICAgb3IgOmV4YzpgT1NFcnJvcmApIGV4Y2VwdGlvbiBvYmplY3QuICAgSGFuZGxlcyBQeXRob24gMS41LjEgYW5kIGxhdGVyIHN0eWxlcywKLSAgIGFuZCBkb2VzIHdoYXQgaXQgY2FuIHRvIGRlYWwgd2l0aCAgZXhjZXB0aW9uIG9iamVjdHMgdGhhdCBkb24ndCBoYXZlIGEgZmlsZW5hbWUKLSAgICh3aGljaCBoYXBwZW5zIHdoZW4gdGhlIGVycm9yICBpcyBkdWUgdG8gYSB0d28tZmlsZSBvcGVyYXRpb24sIHN1Y2ggYXMKLSAgIDpmdW5jOmByZW5hbWVgIG9yICA6ZnVuYzpgbGlua2ApLiAgUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSBhcyBhIHN0cmluZwotICAgcHJlZml4ZWQgIHdpdGggKnByZWZpeCouCisgICBHZW5lcmF0ZSBhIHVzZWZ1bCBlcnJvciBtZXNzYWdlIGZyb20gYW4gOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIG9iamVjdC4KKyAgIEhhbmRsZXMgUHl0aG9uIDEuNS4xIGFuZCBsYXRlciBzdHlsZXMsIGFuZCBkb2VzIHdoYXQgaXQgY2FuIHRvIGRlYWwgd2l0aAorICAgZXhjZXB0aW9uIG9iamVjdHMgdGhhdCBkb24ndCBoYXZlIGEgZmlsZW5hbWUgKHdoaWNoIGhhcHBlbnMgd2hlbiB0aGUgZXJyb3IKKyAgIGlzIGR1ZSB0byBhIHR3by1maWxlIG9wZXJhdGlvbiwgc3VjaCBhcyA6ZnVuYzpgcmVuYW1lYCBvciA6ZnVuYzpgbGlua2ApLgorICAgUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSBhcyBhIHN0cmluZyBwcmVmaXhlZCB3aXRoICpwcmVmaXgqLgogCiAKIC4uIGZ1bmN0aW9uOjogc3BsaXRfcXVvdGVkKHMpCmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QKaW5kZXggN2ZkOWY3Mi4uZWY5NWFjOSAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdApAQCAtMzIxLDcgKzMyMSw3IEBACiAKIFRoZSA6Y29uc3Q6YE1FVEhfS0VZV09SRFNgIGJpdCBtYXkgYmUgc2V0IGluIHRoZSB0aGlyZCBmaWVsZCBpZiBrZXl3b3JkCiBhcmd1bWVudHMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uICBJbiB0aGlzIGNhc2UsIHRoZSBDIGZ1bmN0aW9uIHNob3VsZAotYWNjZXB0IGEgdGhpcmQgYGBQeU9iamVjdCBcKmBgIHBhcmFtZXRlciB3aGljaCB3aWxsIGJlIGEgZGljdGlvbmFyeSBvZiBrZXl3b3Jkcy4KK2FjY2VwdCBhIHRoaXJkIGBgUHlPYmplY3QgKmBgIHBhcmFtZXRlciB3aGljaCB3aWxsIGJlIGEgZGljdGlvbmFyeSBvZiBrZXl3b3Jkcy4KIFVzZSA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNgIHRvIHBhcnNlIHRoZSBhcmd1bWVudHMgdG8gc3VjaCBhCiBmdW5jdGlvbi4KIApAQCAtMzg0LDkgKzM4NCw2IEBACiAgICAgICAgICAgaW1wb3J0cyBpdC4gKi8KICAgICAgICBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInNwYW0iKTsKIAotQW4gZXhhbXBsZSBtYXkgYmUgZm91bmQgaW4gdGhlIGZpbGUgOmZpbGU6YERlbW8vZW1iZWQvZGVtby5jYCBpbiB0aGUgUHl0aG9uCi1zb3VyY2UgZGlzdHJpYnV0aW9uLgotCiAuLiBub3RlOjoKIAogICAgUmVtb3ZpbmcgZW50cmllcyBmcm9tIGBgc3lzLm1vZHVsZXNgYCBvciBpbXBvcnRpbmcgY29tcGlsZWQgbW9kdWxlcyBpbnRvCmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdCBiL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CmluZGV4IDhmMTgyNTMuLmI5MGQzNWMgMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CkBAIC0yNiwxMSArMjYsMTIgQEAKID09PT09PT09PT0KIAogVGhlIFB5dGhvbiBydW50aW1lIHNlZXMgYWxsIFB5dGhvbiBvYmplY3RzIGFzIHZhcmlhYmxlcyBvZiB0eXBlCi06Yzp0eXBlOmBQeU9iamVjdFwqYC4gIEEgOmM6dHlwZTpgUHlPYmplY3RgIGlzIG5vdCBhIHZlcnkgbWFnbmlmaWNlbnQgb2JqZWN0IC0gaXQKLWp1c3QgY29udGFpbnMgdGhlIHJlZmNvdW50IGFuZCBhIHBvaW50ZXIgdG8gdGhlIG9iamVjdCdzICJ0eXBlIG9iamVjdCIuICBUaGlzIGlzCi13aGVyZSB0aGUgYWN0aW9uIGlzOyB0aGUgdHlwZSBvYmplY3QgZGV0ZXJtaW5lcyB3aGljaCAoQykgZnVuY3Rpb25zIGdldCBjYWxsZWQKLXdoZW4sIGZvciBpbnN0YW5jZSwgYW4gYXR0cmlidXRlIGdldHMgbG9va2VkIHVwIG9uIGFuIG9iamVjdCBvciBpdCBpcyBtdWx0aXBsaWVkCi1ieSBhbm90aGVyIG9iamVjdC4gIFRoZXNlIEMgZnVuY3Rpb25zIGFyZSBjYWxsZWQgInR5cGUgbWV0aG9kcyIuCis6Yzp0eXBlOmBQeU9iamVjdFwqYCwgd2hpY2ggc2VydmVzIGFzIGEgImJhc2UgdHlwZSIgZm9yIGFsbCBQeXRob24gb2JqZWN0cy4KKzpjOnR5cGU6YFB5T2JqZWN0YCBpdHNlbGYgb25seSBjb250YWlucyB0aGUgcmVmY291bnQgYW5kIGEgcG9pbnRlciB0byB0aGUKK29iamVjdCdzICJ0eXBlIG9iamVjdCIuICBUaGlzIGlzIHdoZXJlIHRoZSBhY3Rpb24gaXM7IHRoZSB0eXBlIG9iamVjdCBkZXRlcm1pbmVzCit3aGljaCAoQykgZnVuY3Rpb25zIGdldCBjYWxsZWQgd2hlbiwgZm9yIGluc3RhbmNlLCBhbiBhdHRyaWJ1dGUgZ2V0cyBsb29rZWQKK3VwIG9uIGFuIG9iamVjdCBvciBpdCBpcyBtdWx0aXBsaWVkIGJ5IGFub3RoZXIgb2JqZWN0LiAgVGhlc2UgQyBmdW5jdGlvbnMKK2FyZSBjYWxsZWQgInR5cGUgbWV0aG9kcyIuCiAKIFNvLCBpZiB5b3Ugd2FudCB0byBkZWZpbmUgYSBuZXcgb2JqZWN0IHR5cGUsIHlvdSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyB0eXBlCiBvYmplY3QuCkBAIC01MCwxNSArNTEsMTUgQEAKICAgICAgICBQeU9iamVjdF9IRUFECiAgICB9IG5vZGR5X05vZGR5T2JqZWN0OwogCi1UaGlzIGlzIHdoYXQgYSBOb2RkeSBvYmplY3Qgd2lsbCBjb250YWluLS0taW4gdGhpcyBjYXNlLCBub3RoaW5nIG1vcmUgdGhhbiBldmVyeQotUHl0aG9uIG9iamVjdCBjb250YWlucywgbmFtZWx5IGEgcmVmY291bnQgYW5kIGEgcG9pbnRlciB0byBhIHR5cGUgb2JqZWN0LiAgVGhlc2UKLWFyZSB0aGUgZmllbGRzIHRoZSBgYFB5T2JqZWN0X0hFQURgYCBtYWNybyBicmluZ3MgaW4uICBUaGUgcmVhc29uIGZvciB0aGUgbWFjcm8KLWlzIHRvIHN0YW5kYXJkaXplIHRoZSBsYXlvdXQgYW5kIHRvIGVuYWJsZSBzcGVjaWFsIGRlYnVnZ2luZyBmaWVsZHMgaW4gZGVidWcKLWJ1aWxkcy4gIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBzZW1pY29sb24gYWZ0ZXIgdGhlIGBgUHlPYmplY3RfSEVBRGBgIG1hY3JvOyBvbmUKLWlzIGluY2x1ZGVkIGluIHRoZSBtYWNybyBkZWZpbml0aW9uLiAgQmUgd2FyeSBvZiBhZGRpbmcgb25lIGJ5IGFjY2lkZW50OyBpdCdzCi1lYXN5IHRvIGRvIGZyb20gaGFiaXQsIGFuZCB5b3VyIGNvbXBpbGVyIG1pZ2h0IG5vdCBjb21wbGFpbiwgYnV0IHNvbWVvbmUgZWxzZSdzCi1wcm9iYWJseSB3aWxsISAgKE9uIFdpbmRvd3MsIE1TVkMgaXMga25vd24gdG8gY2FsbCB0aGlzIGFuIGVycm9yIGFuZCByZWZ1c2UgdG8KLWNvbXBpbGUgdGhlIGNvZGUuKQorVGhpcyBpcyB3aGF0IGEgTm9kZHkgb2JqZWN0IHdpbGwgY29udGFpbi0tLWluIHRoaXMgY2FzZSwgbm90aGluZyBtb3JlIHRoYW4gd2hhdAorZXZlcnkgUHl0aG9uIG9iamVjdCBjb250YWlucy0tLWEgcmVmY291bnQgYW5kIGEgcG9pbnRlciB0byBhIHR5cGUgb2JqZWN0LgorVGhlc2UgYXJlIHRoZSBmaWVsZHMgdGhlIGBgUHlPYmplY3RfSEVBRGBgIG1hY3JvIGJyaW5ncyBpbi4gIFRoZSByZWFzb24gZm9yIHRoZQorbWFjcm8gaXMgdG8gc3RhbmRhcmRpemUgdGhlIGxheW91dCBhbmQgdG8gZW5hYmxlIHNwZWNpYWwgZGVidWdnaW5nIGZpZWxkcyBpbgorZGVidWcgYnVpbGRzLiAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHNlbWljb2xvbiBhZnRlciB0aGUgYGBQeU9iamVjdF9IRUFEYGAKK21hY3JvOyBvbmUgaXMgaW5jbHVkZWQgaW4gdGhlIG1hY3JvIGRlZmluaXRpb24uICBCZSB3YXJ5IG9mIGFkZGluZyBvbmUgYnkKK2FjY2lkZW50OyBpdCdzIGVhc3kgdG8gZG8gZnJvbSBoYWJpdCwgYW5kIHlvdXIgY29tcGlsZXIgbWlnaHQgbm90IGNvbXBsYWluLAorYnV0IHNvbWVvbmUgZWxzZSdzIHByb2JhYmx5IHdpbGwhICAoT24gV2luZG93cywgTVNWQyBpcyBrbm93biB0byBjYWxsIHRoaXMgYW4KK2Vycm9yIGFuZCByZWZ1c2UgdG8gY29tcGlsZSB0aGUgY29kZS4pCiAKIEZvciBjb250cmFzdCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbiBmb3Igc3RhbmRhcmQKIFB5dGhvbiBmbG9hdHM6OgpAQCAtMjI0LDcgKzIyNSw3IEBACiBBZGRpbmcgZGF0YSBhbmQgbWV0aG9kcyB0byB0aGUgQmFzaWMgZXhhbXBsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTGV0J3MgZXhwZW5kIHRoZSBiYXNpYyBleGFtcGxlIHRvIGFkZCBzb21lIGRhdGEgYW5kIG1ldGhvZHMuICBMZXQncyBhbHNvIG1ha2UKK0xldCdzIGV4dGVuZCB0aGUgYmFzaWMgZXhhbXBsZSB0byBhZGQgc29tZSBkYXRhIGFuZCBtZXRob2RzLiAgTGV0J3MgYWxzbyBtYWtlCiB0aGUgdHlwZSB1c2FibGUgYXMgYSBiYXNlIGNsYXNzLiBXZSdsbCBjcmVhdGUgYSBuZXcgbW9kdWxlLCA6bW9kOmBub2RkeTJgIHRoYXQKIGFkZHMgdGhlc2UgY2FwYWJpbGl0aWVzOgogCkBAIC0yODgsMTggKzI4OSwxNiBAQAogICAgICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlTdHJpbmdfRnJvbVN0cmluZygiIik7Ci0gICAgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKQotICAgICAgICAgICAgIHsKKyAgICAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfQogCiAgICAgICAgICAgIHNlbGYtPmxhc3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICAgICB7CisgICAgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfQogCiAgICAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgICAgfQpAQCAtMzI3LDggKzMyNiw4IEBACiBjcmVhdGVkLiBOZXcgbWV0aG9kcyBhbHdheXMgYWNjZXB0IHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzLCBidXQgdGhleQogb2Z0ZW4gaWdub3JlIHRoZSBhcmd1bWVudHMsIGxlYXZpbmcgdGhlIGFyZ3VtZW50IGhhbmRsaW5nIHRvIGluaXRpYWxpemVyCiBtZXRob2RzLiBOb3RlIHRoYXQgaWYgdGhlIHR5cGUgc3VwcG9ydHMgc3ViY2xhc3NpbmcsIHRoZSB0eXBlIHBhc3NlZCBtYXkgbm90IGJlCi10aGUgdHlwZSBiZWluZyBkZWZpbmVkLiAgVGhlIG5ldyBtZXRob2QgY2FsbHMgdGhlIHRwX2FsbG9jIHNsb3QgdG8gYWxsb2NhdGUKLW1lbW9yeS4gV2UgZG9uJ3QgZmlsbCB0aGUgOmF0dHI6YHRwX2FsbG9jYCBzbG90IG91cnNlbHZlcy4gUmF0aGVyCit0aGUgdHlwZSBiZWluZyBkZWZpbmVkLiAgVGhlIG5ldyBtZXRob2QgY2FsbHMgdGhlIDphdHRyOmB0cF9hbGxvY2Agc2xvdCB0bworYWxsb2NhdGUgbWVtb3J5LiBXZSBkb24ndCBmaWxsIHRoZSA6YXR0cjpgdHBfYWxsb2NgIHNsb3Qgb3Vyc2VsdmVzLiBSYXRoZXIKIDpjOmZ1bmM6YFB5VHlwZV9SZWFkeWAgZmlsbHMgaXQgZm9yIHVzIGJ5IGluaGVyaXRpbmcgaXQgZnJvbSBvdXIgYmFzZSBjbGFzcywKIHdoaWNoIGlzIDpjbGFzczpgb2JqZWN0YCBieSBkZWZhdWx0LiAgTW9zdCB0eXBlcyB1c2UgdGhlIGRlZmF1bHQgYWxsb2NhdGlvbi4KIApAQCAtNDQ1LDE1ICs0NDQsNiBAQAogICAgc3RhdGljIFB5T2JqZWN0ICoKICAgIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiAgICB7Ci0gICAgICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgIGZvcm1hdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcoIiVzICVzIik7Ci0gICAgICAgICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgIH0KLQogICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgImZpcnN0Iik7CiAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDY0LDIwICs0NTQsMTMgQEAKICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgfQogCi0gICAgICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIk9PIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwotICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgcmVzdWx0ID0gUHlTdHJpbmdfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgICAgUHlfREVDUkVGKGFyZ3MpOwotCi0gICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTICVTIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwogICAgfQogCiBUaGUgbWV0aG9kIGlzIGltcGxlbWVudGVkIGFzIGEgQyBmdW5jdGlvbiB0aGF0IHRha2VzIGEgOmNsYXNzOmBOb2RkeWAgKG9yCiA6Y2xhc3M6YE5vZGR5YCBzdWJjbGFzcykgaW5zdGFuY2UgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiAgTWV0aG9kcyBhbHdheXMgdGFrZSBhbgogaW5zdGFuY2UgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiBNZXRob2RzIG9mdGVuIHRha2UgcG9zaXRpb25hbCBhbmQga2V5d29yZAotYXJndW1lbnRzIGFzIHdlbGwsIGJ1dCBpbiB0aGlzIGNhc2VkIHdlIGRvbid0IHRha2UgYW55IGFuZCBkb24ndCBuZWVkIHRvIGFjY2VwdAorYXJndW1lbnRzIGFzIHdlbGwsIGJ1dCBpbiB0aGlzIGNhc2Ugd2UgZG9uJ3QgdGFrZSBhbnkgYW5kIGRvbid0IG5lZWQgdG8gYWNjZXB0CiBhIHBvc2l0aW9uYWwgYXJndW1lbnQgdHVwbGUgb3Iga2V5d29yZCBhcmd1bWVudCBkaWN0aW9uYXJ5LiBUaGlzIG1ldGhvZCBpcwogZXF1aXZhbGVudCB0byB0aGUgUHl0aG9uIG1ldGhvZDo6CiAKQEAgLTExMjQsOSArMTEwNyw2IEBACiBhdCB0aGUgZW5kOyBpdCBpcyBhIHNlbnRpbmVsIHRoYXQgbWFya3MgdGhlIGVuZCBvZiB0aGUgYXJyYXkuICBUaGUKIDphdHRyOmBtbF9uYW1lYCBmaWVsZCBvZiB0aGUgc2VudGluZWwgbXVzdCBiZSAqTlVMTCouCiAKLVhYWCBOZWVkIHRvIHJlZmVyIHRvIHNvbWUgdW5pZmllZCBkaXNjdXNzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGRzLCBzaGFyZWQKLXdpdGggdGhlIG5leHQgc2VjdGlvbi4KLQogVGhlIHNlY29uZCB0YWJsZSBpcyB1c2VkIHRvIGRlZmluZSBhdHRyaWJ1dGVzIHdoaWNoIG1hcCBkaXJlY3RseSB0byBkYXRhIHN0b3JlZAogaW4gdGhlIGluc3RhbmNlLiAgQSB2YXJpZXR5IG9mIHByaW1pdGl2ZSBDIHR5cGVzIGFyZSBzdXBwb3J0ZWQsIGFuZCBhY2Nlc3MgbWF5CiBiZSByZWFkLW9ubHkgb3IgcmVhZC13cml0ZS4gIFRoZSBzdHJ1Y3R1cmVzIGluIHRoZSB0YWJsZSBhcmUgZGVmaW5lZCBhczo6CkBAIC0xMTQ2LDggKzExMjYsNiBAQAogY29udmVydCBQeXRob24gdmFsdWVzIHRvIGFuZCBmcm9tIEMgdmFsdWVzLiAgVGhlIDphdHRyOmBmbGFnc2AgZmllbGQgaXMgdXNlZCB0bwogc3RvcmUgZmxhZ3Mgd2hpY2ggY29udHJvbCBob3cgdGhlIGF0dHJpYnV0ZSBjYW4gYmUgYWNjZXNzZWQuCiAKLVhYWCBOZWVkIHRvIG1vdmUgc29tZSBvZiB0aGlzIHRvIGEgc2hhcmVkIHNlY3Rpb24hCi0KIFRoZSBmb2xsb3dpbmcgZmxhZyBjb25zdGFudHMgYXJlIGRlZmluZWQgaW4gOmZpbGU6YHN0cnVjdG1lbWJlci5oYDsgdGhleSBtYXkgYmUKIGNvbWJpbmVkIHVzaW5nIGJpdHdpc2UtT1IuCiAKQEAgLTEzNzIsNyArMTM1MCw3IEBACiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KIAotWFhYIHNvbWUgZmllbGRzIG5lZWQgdG8gYmUgYWRkZWQgaGVyZS4uLiA6OgorOjoKIAogICAgLyogSXRlcmF0b3JzICovCiAgICBnZXRpdGVyZnVuYyB0cF9pdGVyOwpkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9kZXNpZ24ucnN0IGIvRG9jL2ZhcS9kZXNpZ24ucnN0CmluZGV4IDdjNTExNmQuLjZiOGE4ZmQgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvZGVzaWduLnJzdAorKysgYi9Eb2MvZmFxL2Rlc2lnbi5yc3QKQEAgLTUxNSwxNCArNTE1LDE2IEBACiAKIERpY3Rpb25hcmllcyB3b3JrIGJ5IGNvbXB1dGluZyBhIGhhc2ggY29kZSBmb3IgZWFjaCBrZXkgc3RvcmVkIGluIHRoZSBkaWN0aW9uYXJ5CiB1c2luZyB0aGUgOmZ1bmM6YGhhc2hgIGJ1aWx0LWluIGZ1bmN0aW9uLiAgVGhlIGhhc2ggY29kZSB2YXJpZXMgd2lkZWx5IGRlcGVuZGluZwotb24gdGhlIGtleTsgZm9yIGV4YW1wbGUsICJQeXRob24iIGhhc2hlcyB0byAtNTM5Mjk0Mjk2IHdoaWxlICJweXRob24iLCBhIHN0cmluZwotdGhhdCBkaWZmZXJzIGJ5IGEgc2luZ2xlIGJpdCwgaGFzaGVzIHRvIDExNDIzMzE5NzYuICBUaGUgaGFzaCBjb2RlIGlzIHRoZW4gdXNlZAotdG8gY2FsY3VsYXRlIGEgbG9jYXRpb24gaW4gYW4gaW50ZXJuYWwgYXJyYXkgd2hlcmUgdGhlIHZhbHVlIHdpbGwgYmUgc3RvcmVkLgotQXNzdW1pbmcgdGhhdCB5b3UncmUgc3RvcmluZyBrZXlzIHRoYXQgYWxsIGhhdmUgZGlmZmVyZW50IGhhc2ggdmFsdWVzLCB0aGlzCi1tZWFucyB0aGF0IGRpY3Rpb25hcmllcyB0YWtlIGNvbnN0YW50IHRpbWUgLS0gTygxKSwgaW4gY29tcHV0ZXIgc2NpZW5jZSBub3RhdGlvbgotLS0gdG8gcmV0cmlldmUgYSBrZXkuICBJdCBhbHNvIG1lYW5zIHRoYXQgbm8gc29ydGVkIG9yZGVyIG9mIHRoZSBrZXlzIGlzCi1tYWludGFpbmVkLCBhbmQgdHJhdmVyc2luZyB0aGUgYXJyYXkgYXMgdGhlIGBgLmtleXMoKWBgIGFuZCBgYC5pdGVtcygpYGAgZG8gd2lsbAotb3V0cHV0IHRoZSBkaWN0aW9uYXJ5J3MgY29udGVudCBpbiBzb21lIGFyYml0cmFyeSBqdW1ibGVkIG9yZGVyLgorb24gdGhlIGtleSBhbmQgYSBwZXItcHJvY2VzcyBzZWVkOyBmb3IgZXhhbXBsZSwgIlB5dGhvbiIgY291bGQgaGFzaCB0bworLTUzOTI5NDI5NiB3aGlsZSAicHl0aG9uIiwgYSBzdHJpbmcgdGhhdCBkaWZmZXJzIGJ5IGEgc2luZ2xlIGJpdCwgY291bGQgaGFzaAordG8gMTE0MjMzMTk3Ni4gIFRoZSBoYXNoIGNvZGUgaXMgdGhlbiB1c2VkIHRvIGNhbGN1bGF0ZSBhIGxvY2F0aW9uIGluIGFuCitpbnRlcm5hbCBhcnJheSB3aGVyZSB0aGUgdmFsdWUgd2lsbCBiZSBzdG9yZWQuICBBc3N1bWluZyB0aGF0IHlvdSdyZSBzdG9yaW5nCitrZXlzIHRoYXQgYWxsIGhhdmUgZGlmZmVyZW50IGhhc2ggdmFsdWVzLCB0aGlzIG1lYW5zIHRoYXQgZGljdGlvbmFyaWVzIHRha2UKK2NvbnN0YW50IHRpbWUgLS0gTygxKSwgaW4gY29tcHV0ZXIgc2NpZW5jZSBub3RhdGlvbiAtLSB0byByZXRyaWV2ZSBhIGtleS4gIEl0CithbHNvIG1lYW5zIHRoYXQgbm8gc29ydGVkIG9yZGVyIG9mIHRoZSBrZXlzIGlzIG1haW50YWluZWQsIGFuZCB0cmF2ZXJzaW5nIHRoZQorYXJyYXkgYXMgdGhlIGBgLmtleXMoKWBgIGFuZCBgYC5pdGVtcygpYGAgZG8gd2lsbCBvdXRwdXQgdGhlIGRpY3Rpb25hcnkncworY29udGVudCBpbiBzb21lIGFyYml0cmFyeSBqdW1ibGVkIG9yZGVyIHRoYXQgY2FuIGNoYW5nZSB3aXRoIGV2ZXJ5IGludm9jYXRpb24gb2YKK2EgcHJvZ3JhbS4KIAogCiBXaHkgbXVzdCBkaWN0aW9uYXJ5IGtleXMgYmUgaW1tdXRhYmxlPwpAQCAtNjM0LDcgKzYzNiw3IEBACiBQeXRob24gMi42IGFkZHMgYW4gOm1vZDpgYWJjYCBtb2R1bGUgdGhhdCBsZXRzIHlvdSBkZWZpbmUgQWJzdHJhY3QgQmFzZSBDbGFzc2VzCiAoQUJDcykuICBZb3UgY2FuIHRoZW4gdXNlIDpmdW5jOmBpc2luc3RhbmNlYCBhbmQgOmZ1bmM6YGlzc3ViY2xhc3NgIHRvIGNoZWNrCiB3aGV0aGVyIGFuIGluc3RhbmNlIG9yIGEgY2xhc3MgaW1wbGVtZW50cyBhIHBhcnRpY3VsYXIgQUJDLiAgVGhlCi06bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlIGRlZmluZXMgYSBzZXQgb2YgdXNlZnVsIEFCQ3Mgc3VjaCBhcworOm1vZDpgY29sbGVjdGlvbnMuYWJjYCBtb2R1bGUgZGVmaW5lcyBhIHNldCBvZiB1c2VmdWwgQUJDcyBzdWNoIGFzCiA6Y2xhc3M6YEl0ZXJhYmxlYCwgOmNsYXNzOmBDb250YWluZXJgLCBhbmQgOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AuCiAKIEZvciBQeXRob24sIG1hbnkgb2YgdGhlIGFkdmFudGFnZXMgb2YgaW50ZXJmYWNlIHNwZWNpZmljYXRpb25zIGNhbiBiZSBvYnRhaW5lZApkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9leHRlbmRpbmcucnN0IGIvRG9jL2ZhcS9leHRlbmRpbmcucnN0CmluZGV4IDdjNjg0YTAuLmZhMjQ1YzcgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvZXh0ZW5kaW5nLnJzdAorKysgYi9Eb2MvZmFxL2V4dGVuZGluZy5yc3QKQEAgLTQ0NSwzNCArNDQ1LDMgQEAKIFRoZSBCb29zdCBQeXRob24gTGlicmFyeSAoQlBMLCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3B5dGhvbi9kb2MvaW5kZXguaHRtbCkKIHByb3ZpZGVzIGEgd2F5IG9mIGRvaW5nIHRoaXMgZnJvbSBDKysgKGkuZS4geW91IGNhbiBpbmhlcml0IGZyb20gYW4gZXh0ZW5zaW9uCiBjbGFzcyB3cml0dGVuIGluIEMrKyB1c2luZyB0aGUgQlBMKS4KLQotCi1XaGVuIGltcG9ydGluZyBtb2R1bGUgWCwgd2h5IGRvIEkgZ2V0ICJ1bmRlZmluZWQgc3ltYm9sOiBQeVVuaWNvZGVVQ1MyKiI/Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVlvdSBhcmUgdXNpbmcgYSB2ZXJzaW9uIG9mIFB5dGhvbiB0aGF0IHVzZXMgYSA0LWJ5dGUgcmVwcmVzZW50YXRpb24gZm9yIFVuaWNvZGUKLWNoYXJhY3RlcnMsIGJ1dCBzb21lIEMgZXh0ZW5zaW9uIG1vZHVsZSB5b3UgYXJlIGltcG9ydGluZyB3YXMgY29tcGlsZWQgdXNpbmcgYQotUHl0aG9uIHRoYXQgdXNlcyBhIDItYnl0ZSByZXByZXNlbnRhdGlvbiBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzICh0aGUgZGVmYXVsdCkuCi0KLUlmIGluc3RlYWQgdGhlIG5hbWUgb2YgdGhlIHVuZGVmaW5lZCBzeW1ib2wgc3RhcnRzIHdpdGggYGBQeVVuaWNvZGVVQ1M0YGAsIHRoZQotcHJvYmxlbSBpcyB0aGUgcmV2ZXJzZTogUHl0aG9uIHdhcyBidWlsdCB1c2luZyAyLWJ5dGUgVW5pY29kZSBjaGFyYWN0ZXJzLCBhbmQKLXRoZSBleHRlbnNpb24gbW9kdWxlIHdhcyBjb21waWxlZCB1c2luZyBhIFB5dGhvbiB3aXRoIDQtYnl0ZSBVbmljb2RlIGNoYXJhY3RlcnMuCi0KLVRoaXMgY2FuIGVhc2lseSBvY2N1ciB3aGVuIHVzaW5nIHByZS1idWlsdCBleHRlbnNpb24gcGFja2FnZXMuICBSZWRIYXQgTGludXgKLTcueCwgaW4gcGFydGljdWxhciwgcHJvdmlkZWQgYSAicHl0aG9uMiIgYmluYXJ5IHRoYXQgaXMgY29tcGlsZWQgd2l0aCA0LWJ5dGUKLVVuaWNvZGUuICBUaGlzIG9ubHkgY2F1c2VzIHRoZSBsaW5rIGZhaWx1cmUgaWYgdGhlIGV4dGVuc2lvbiB1c2VzIGFueSBvZiB0aGUKLWBgUHlVbmljb2RlXyooKWBgIGZ1bmN0aW9ucy4gIEl0IGlzIGFsc28gYSBwcm9ibGVtIGlmIGFuIGV4dGVuc2lvbiB1c2VzIGFueSBvZgotdGhlIFVuaWNvZGUtcmVsYXRlZCBmb3JtYXQgc3BlY2lmaWVycyBmb3IgOmM6ZnVuYzpgUHlfQnVpbGRWYWx1ZWAgKG9yIHNpbWlsYXIpIG9yCi1wYXJhbWV0ZXIgc3BlY2lmaWNhdGlvbnMgZm9yIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVgLgotCi1Zb3UgY2FuIGNoZWNrIHRoZSBzaXplIG9mIHRoZSBVbmljb2RlIGNoYXJhY3RlciBhIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c2luZyBieQotY2hlY2tpbmcgdGhlIHZhbHVlIG9mIHN5cy5tYXh1bmljb2RlOgotCi0gICA+Pj4gaW1wb3J0IHN5cwotICAgPj4+IGlmIHN5cy5tYXh1bmljb2RlID4gNjU1MzU6Ci0gICAuLi4gICAgIHByaW50KCdVQ1M0IGJ1aWxkJykKLSAgIC4uLiBlbHNlOgotICAgLi4uICAgICBwcmludCgnVUNTMiBidWlsZCcpCi0KLVRoZSBvbmx5IHdheSB0byBzb2x2ZSB0aGlzIHByb2JsZW0gaXMgdG8gdXNlIGV4dGVuc2lvbiBtb2R1bGVzIGNvbXBpbGVkIHdpdGggYQotUHl0aG9uIGJpbmFyeSBidWlsdCB1c2luZyB0aGUgc2FtZSBzaXplIGZvciBVbmljb2RlIGNoYXJhY3RlcnMuCmRpZmYgLS1naXQgYS9Eb2MvZmFxL2xpYnJhcnkucnN0IGIvRG9jL2ZhcS9saWJyYXJ5LnJzdAppbmRleCA3Mzg1YzU5Li5jYWIyZDdiIDEwMDY0NAotLS0gYS9Eb2MvZmFxL2xpYnJhcnkucnN0CisrKyBiL0RvYy9mYXEvbGlicmFyeS5yc3QKQEAgLTM1MSw3ICszNTEsNyBAQAogICAgV29ya2VyIDxUaHJlYWQod29ya2VyIDEsIHN0YXJ0ZWQgMTMwMjgzODMyNzk3NDU2KT4gcnVubmluZyB3aXRoIGFyZ3VtZW50IDUKICAgIC4uLgogCi1Db25zdWx0IHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHM7IHRoZSA6Y2xhc3M6YH5xdWV1ZS5RdWV1ZWBgCitDb25zdWx0IHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHM7IHRoZSA6Y2xhc3M6YH5xdWV1ZS5RdWV1ZWAKIGNsYXNzIHByb3ZpZGVzIGEgZmVhdHVyZWZ1bCBpbnRlcmZhY2UuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2dsb3NzYXJ5LnJzdCBiL0RvYy9nbG9zc2FyeS5yc3QKaW5kZXggN2NkOTkwNS4uYjk3ODJkOCAxMDA2NDQKLS0tIGEvRG9jL2dsb3NzYXJ5LnJzdAorKysgYi9Eb2MvZ2xvc3NhcnkucnN0CkBAIC0zNCw3ICszNCw3IEBACiAgICAgICBzdWJjbGFzc2VzLCB3aGljaCBhcmUgY2xhc3NlcyB0aGF0IGRvbid0IGluaGVyaXQgZnJvbSBhIGNsYXNzIGJ1dCBhcmUKICAgICAgIHN0aWxsIHJlY29nbml6ZWQgYnkgOmZ1bmM6YGlzaW5zdGFuY2VgIGFuZCA6ZnVuYzpgaXNzdWJjbGFzc2A7IHNlZSB0aGUKICAgICAgIDptb2Q6YGFiY2AgbW9kdWxlIGRvY3VtZW50YXRpb24uICBQeXRob24gY29tZXMgd2l0aCBtYW55IGJ1aWx0LWluIEFCQ3MgZm9yCi0gICAgICBkYXRhIHN0cnVjdHVyZXMgKGluIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlKSwgbnVtYmVycyAoaW4gdGhlCisgICAgICBkYXRhIHN0cnVjdHVyZXMgKGluIHRoZSA6bW9kOmBjb2xsZWN0aW9ucy5hYmNgIG1vZHVsZSksIG51bWJlcnMgKGluIHRoZQogICAgICAgOm1vZDpgbnVtYmVyc2AgbW9kdWxlKSwgc3RyZWFtcyAoaW4gdGhlIDptb2Q6YGlvYCBtb2R1bGUpLCBpbXBvcnQgZmluZGVycwogICAgICAgYW5kIGxvYWRlcnMgKGluIHRoZSA6bW9kOmBpbXBvcnRsaWIuYWJjYCBtb2R1bGUpLiAgWW91IGNhbiBjcmVhdGUgeW91ciBvd24KICAgICAgIEFCQ3Mgd2l0aCB0aGUgOm1vZDpgYWJjYCBtb2R1bGUuCkBAIC0yMDksOSArMjA5LDkgQEAKIAogICAgZmluZGVyCiAgICAgICBBbiBvYmplY3QgdGhhdCB0cmllcyB0byBmaW5kIHRoZSA6dGVybTpgbG9hZGVyYCBmb3IgYSBtb2R1bGUuIEl0IG11c3QKLSAgICAgIGltcGxlbWVudCBhIG1ldGhvZCBuYW1lZCA6bWV0aDpgZmluZF9tb2R1bGVgLiBTZWUgOnBlcDpgMzAyYCBmb3IKLSAgICAgIGRldGFpbHMgYW5kIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGZvciBhbgotICAgICAgOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgLgorICAgICAgaW1wbGVtZW50IGVpdGhlciBhIG1ldGhvZCBuYW1lZCA6bWV0aDpgZmluZF9sb2FkZXJgIG9yIGEgbWV0aG9kIG5hbWVkCisgICAgICA6bWV0aDpgZmluZF9tb2R1bGVgLiBTZWUgOnBlcDpgMzAyYCBhbmQgOnBlcDpgNDIwYCBmb3IgZGV0YWlscyBhbmQKKyAgICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGZvciBhbiA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AuCiAKICAgIGZsb29yIGRpdmlzaW9uCiAgICAgICBNYXRoZW1hdGljYWwgZGl2aXNpb24gdGhhdCByb3VuZHMgZG93biB0byBuZWFyZXN0IGludGVnZXIuICBUaGUgZmxvb3IKQEAgLTMxNSw2ICszMTUsMTcgQEAKICAgICAgIHJvbGUgaW4gcGxhY2VzIHdoZXJlIGEgY29uc3RhbnQgaGFzaCB2YWx1ZSBpcyBuZWVkZWQsIGZvciBleGFtcGxlIGFzIGEga2V5CiAgICAgICBpbiBhIGRpY3Rpb25hcnkuCiAKKyAgIGltcG9ydCBwYXRoCisgICAgICBBIGxpc3Qgb2YgbG9jYXRpb25zIChvciA6dGVybTpgcGF0aCBlbnRyaWVzIDxwYXRoIGVudHJ5PmApIHRoYXQgYXJlCisgICAgICBzZWFyY2hlZCBieSB0aGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCBmb3IgbW9kdWxlcyB0byBpbXBvcnQuIER1cmluZworICAgICAgaW1wb3J0LCB0aGlzIGxpc3Qgb2YgbG9jYXRpb25zIHVzdWFsbHkgY29tZXMgZnJvbSA6ZGF0YTpgc3lzLnBhdGhgLCBidXQKKyAgICAgIGZvciBzdWJwYWNrYWdlcyBpdCBtYXkgYWxzbyBjb21lIGZyb20gdGhlIHBhcmVudCBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgCisgICAgICBhdHRyaWJ1dGUuCisKKyAgIGltcG9ydGluZworICAgICAgVGhlIHByb2Nlc3MgYnkgd2hpY2ggUHl0aG9uIGNvZGUgaW4gb25lIG1vZHVsZSBpcyBtYWRlIGF2YWlsYWJsZSB0bworICAgICAgUHl0aG9uIGNvZGUgaW4gYW5vdGhlciBtb2R1bGUuCisKICAgIGltcG9ydGVyCiAgICAgICBBbiBvYmplY3QgdGhhdCBib3RoIGZpbmRzIGFuZCBsb2FkcyBhIG1vZHVsZTsgYm90aCBhCiAgICAgICA6dGVybTpgZmluZGVyYCBhbmQgOnRlcm06YGxvYWRlcmAgb2JqZWN0LgpAQCAtNDM0LDEyICs0NDUsMTcgQEAKIAogICAgbWFwcGluZwogICAgICAgQSBjb250YWluZXIgb2JqZWN0IHRoYXQgc3VwcG9ydHMgYXJiaXRyYXJ5IGtleSBsb29rdXBzIGFuZCBpbXBsZW1lbnRzIHRoZQotICAgICAgbWV0aG9kcyBzcGVjaWZpZWQgaW4gdGhlIDpjbGFzczpgfmNvbGxlY3Rpb25zLk1hcHBpbmdgIG9yCi0gICAgICA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5NdXRhYmxlTWFwcGluZ2AKKyAgICAgIG1ldGhvZHMgc3BlY2lmaWVkIGluIHRoZSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuTWFwcGluZ2Agb3IKKyAgICAgIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AKICAgICAgIDpyZWY6YGFic3RyYWN0IGJhc2UgY2xhc3NlcyA8Y29sbGVjdGlvbnMtYWJzdHJhY3QtYmFzZS1jbGFzc2VzPmAuICBFeGFtcGxlcwogICAgICAgaW5jbHVkZSA6Y2xhc3M6YGRpY3RgLCA6Y2xhc3M6YGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0YCwKICAgICAgIDpjbGFzczpgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgIGFuZCA6Y2xhc3M6YGNvbGxlY3Rpb25zLkNvdW50ZXJgLgogCisgICBtZXRhIHBhdGggZmluZGVyCisgICAgICBBIGZpbmRlciByZXR1cm5lZCBieSBhIHNlYXJjaCBvZiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAuICBNZXRhIHBhdGgKKyAgICAgIGZpbmRlcnMgYXJlIHJlbGF0ZWQgdG8sIGJ1dCBkaWZmZXJlbnQgZnJvbSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJzCisgICAgICA8cGF0aCBlbnRyeSBmaW5kZXI+YC4KKwogICAgbWV0YWNsYXNzCiAgICAgICBUaGUgY2xhc3Mgb2YgYSBjbGFzcy4gIENsYXNzIGRlZmluaXRpb25zIGNyZWF0ZSBhIGNsYXNzIG5hbWUsIGEgY2xhc3MKICAgICAgIGRpY3Rpb25hcnksIGFuZCBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzLiAgVGhlIG1ldGFjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IKQEAgLTQ2NCw2ICs0ODAsMTEgQEAKICAgICAgIGZvciBhIG1lbWJlciBkdXJpbmcgbG9va3VwLiBTZWUgYFRoZSBQeXRob24gMi4zIE1ldGhvZCBSZXNvbHV0aW9uIE9yZGVyCiAgICAgICA8aHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vPmBfLgogCisgICBtb2R1bGUKKyAgICAgIEFuIG9iamVjdCB0aGF0IHNlcnZlcyBhcyBhbiBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLiAgTW9kdWxlcworICAgICAgaGF2ZSBhIG5hbWVzcGFjZSBjb250YWluaW5nIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gIE1vZHVsZXMgYXJlIGxvYWRlZAorICAgICAgaW50byBQeXRob24gYnkgdGhlIHByb2Nlc3Mgb2YgOnRlcm06YGltcG9ydGluZ2AuCisKICAgIE1STwogICAgICAgU2VlIDp0ZXJtOmBtZXRob2QgcmVzb2x1dGlvbiBvcmRlcmAuCiAKQEAgLTQ5Niw2ICs1MTcsMTIgQEAKICAgICAgIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgYnkgdGhlIDptb2Q6YHJhbmRvbWAgYW5kIDptb2Q6YGl0ZXJ0b29sc2AKICAgICAgIG1vZHVsZXMsIHJlc3BlY3RpdmVseS4KIAorICAgbmFtZXNwYWNlIHBhY2thZ2UKKyAgICAgIEEgOnBlcDpgNDIwYCA6dGVybTpgcGFja2FnZWAgd2hpY2ggc2VydmVzIG9ubHkgYXMgYSBjb250YWluZXIgZm9yCisgICAgICBzdWJwYWNrYWdlcy4gIE5hbWVzcGFjZSBwYWNrYWdlcyBtYXkgaGF2ZSBubyBwaHlzaWNhbCByZXByZXNlbnRhdGlvbiwKKyAgICAgIGFuZCBzcGVjaWZpY2FsbHkgYXJlIG5vdCBsaWtlIGEgOnRlcm06YHJlZ3VsYXIgcGFja2FnZWAgYmVjYXVzZSB0aGV5CisgICAgICBoYXZlIG5vIGBgX19pbml0X18ucHlgYCBmaWxlLgorCiAgICBuZXN0ZWQgc2NvcGUKICAgICAgIFRoZSBhYmlsaXR5IHRvIHJlZmVyIHRvIGEgdmFyaWFibGUgaW4gYW4gZW5jbG9zaW5nIGRlZmluaXRpb24uICBGb3IKICAgICAgIGluc3RhbmNlLCBhIGZ1bmN0aW9uIGRlZmluZWQgaW5zaWRlIGFub3RoZXIgZnVuY3Rpb24gY2FuIHJlZmVyIHRvCkBAIC01MTYsNiArNTQzLDMzIEBACiAgICAgICAobWV0aG9kcykuICBBbHNvIHRoZSB1bHRpbWF0ZSBiYXNlIGNsYXNzIG9mIGFueSA6dGVybTpgbmV3LXN0eWxlCiAgICAgICBjbGFzc2AuCiAKKyAgIHBhY2thZ2UKKyAgICAgIEEgUHl0aG9uIG1vZHVsZSB3aGljaCBjYW4gY29udGFpbiBzdWJtb2R1bGVzIG9yIHJlY3Vyc2l2ZWx5LAorICAgICAgc3VicGFja2FnZXMuICBUZWNobmljYWxseSwgYSBwYWNrYWdlIGlzIGEgUHl0aG9uIG1vZHVsZSB3aXRoIGFuCisgICAgICBgYF9fcGF0aF9fYGAgYXR0cmlidXRlLgorCisgICBwYXRoIGVudHJ5CisgICAgICBBIHNpbmdsZSBsb2NhdGlvbiBvbiB0aGUgOnRlcm06YGltcG9ydCBwYXRoYCB3aGljaCB0aGUgOnRlcm06YHBhdGgKKyAgICAgIGJhc2VkIGZpbmRlcmAgY29uc3VsdHMgdG8gZmluZCBtb2R1bGVzIGZvciBpbXBvcnRpbmcuCisKKyAgIHBhdGggZW50cnkgZmluZGVyCisgICAgICBBIDp0ZXJtOmBmaW5kZXJgIHJldHVybmVkIGJ5IGEgY2FsbGFibGUgb24gOmRhdGE6YHN5cy5wYXRoX2hvb2tzYAorICAgICAgKGkuZS4gYSA6dGVybTpgcGF0aCBlbnRyeSBob29rYCkgd2hpY2gga25vd3MgaG93IHRvIGxvY2F0ZSBtb2R1bGVzIGdpdmVuCisgICAgICBhIDp0ZXJtOmBwYXRoIGVudHJ5YC4KKworICAgcGF0aCBlbnRyeSBob29rCisgICAgICBBIGNhbGxhYmxlIG9uIHRoZSA6ZGF0YTpgc3lzLnBhdGhfaG9va2AgbGlzdCB3aGljaCByZXR1cm5zIGEgOnRlcm06YHBhdGgKKyAgICAgIGVudHJ5IGZpbmRlcmAgaWYgaXQga25vd3MgaG93IHRvIGZpbmQgbW9kdWxlcyBvbiBhIHNwZWNpZmljIDp0ZXJtOmBwYXRoCisgICAgICBlbnRyeWAuCisKKyAgIHBhdGggYmFzZWQgZmluZGVyCisgICAgICBPbmUgb2YgdGhlIGRlZmF1bHQgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJzIDxtZXRhIHBhdGggZmluZGVyPmAgd2hpY2gKKyAgICAgIHNlYXJjaGVzIGFuIDp0ZXJtOmBpbXBvcnQgcGF0aGAgZm9yIG1vZHVsZXMuCisKKyAgIHBvcnRpb24KKyAgICAgIEEgc2V0IG9mIGZpbGVzIGluIGEgc2luZ2xlIGRpcmVjdG9yeSAocG9zc2libHkgc3RvcmVkIGluIGEgemlwIGZpbGUpCisgICAgICB0aGF0IGNvbnRyaWJ1dGUgdG8gYSBuYW1lc3BhY2UgcGFja2FnZSwgYXMgZGVmaW5lZCBpbiA6cGVwOmA0MjBgLgorCiAgICBwb3NpdGlvbmFsIGFyZ3VtZW50CiAgICAgICBUaGUgYXJndW1lbnRzIGFzc2lnbmVkIHRvIGxvY2FsIG5hbWVzIGluc2lkZSBhIGZ1bmN0aW9uIG9yIG1ldGhvZCwKICAgICAgIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBnaXZlbiBpbiB0aGUgY2FsbC4gIGBgKmBgIGlzCkBAIC01MjMsOSArNTc3LDIzIEBACiAgICAgICBkZWZpbml0aW9uKSwgb3IgcGFzcyBzZXZlcmFsIGFyZ3VtZW50cyBhcyBhIGxpc3QgdG8gYSBmdW5jdGlvbi4gIFNlZQogICAgICAgOnRlcm06YGFyZ3VtZW50YC4KIAorICAgcHJvdmlzaW9uYWwgcGFja2FnZQorICAgICAgQSBwcm92aXNpb25hbCBwYWNrYWdlIGlzIG9uZSB3aGljaCBoYXMgYmVlbiBkZWxpYmVyYXRlbHkgZXhjbHVkZWQgZnJvbQorICAgICAgdGhlIHN0YW5kYXJkIGxpYnJhcnkncyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBndWFyYW50ZWVzLiAgV2hpbGUgbWFqb3IKKyAgICAgIGNoYW5nZXMgdG8gc3VjaCBwYWNrYWdlcyBhcmUgbm90IGV4cGVjdGVkLCBhcyBsb25nIGFzIHRoZXkgYXJlIG1hcmtlZAorICAgICAgcHJvdmlzaW9uYWwsIGJhY2t3YXJkcyBpbmNvbXBhdGlibGUgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsCisgICAgICBvZiB0aGUgcGFja2FnZSkgbWF5IG9jY3VyIGlmIGRlZW1lZCBuZWNlc3NhcnkgYnkgY29yZSBkZXZlbG9wZXJzLiAgU3VjaAorICAgICAgY2hhbmdlcyB3aWxsIG5vdCBiZSBtYWRlIGdyYXR1aXRvdXNseSAtLSB0aGV5IHdpbGwgb2NjdXIgb25seSBpZiBzZXJpb3VzCisgICAgICBmbGF3cyBhcmUgdW5jb3ZlcmVkIHRoYXQgd2VyZSBtaXNzZWQgcHJpb3IgdG8gdGhlIGluY2x1c2lvbiBvZiB0aGUKKyAgICAgIHBhY2thZ2UuCisKKyAgICAgIFRoaXMgcHJvY2VzcyBhbGxvd3MgdGhlIHN0YW5kYXJkIGxpYnJhcnkgdG8gY29udGludWUgdG8gZXZvbHZlIG92ZXIKKyAgICAgIHRpbWUsIHdpdGhvdXQgbG9ja2luZyBpbiBwcm9ibGVtYXRpYyBkZXNpZ24gZXJyb3JzIGZvciBleHRlbmRlZCBwZXJpb2RzCisgICAgICBvZiB0aW1lLiAgU2VlIDpwZXA6YDQxMWAgZm9yIG1vcmUgZGV0YWlscy4KKwogICAgUHl0aG9uIDMwMDAKLSAgICAgIE5pY2tuYW1lIGZvciB0aGUgUHl0aG9uIDMueCByZWxlYXNlIGxpbmUgKGNvaW5lZCBsb25nIGFnbyB3aGVuIHRoZSByZWxlYXNlCi0gICAgICBvZiB2ZXJzaW9uIDMgd2FzIHNvbWV0aGluZyBpbiB0aGUgZGlzdGFudCBmdXR1cmUuKSAgVGhpcyBpcyBhbHNvCisgICAgICBOaWNrbmFtZSBmb3IgdGhlIFB5dGhvbiAzLnggcmVsZWFzZSBsaW5lIChjb2luZWQgbG9uZyBhZ28gd2hlbiB0aGUKKyAgICAgIHJlbGVhc2Ugb2YgdmVyc2lvbiAzIHdhcyBzb21ldGhpbmcgaW4gdGhlIGRpc3RhbnQgZnV0dXJlLikgIFRoaXMgaXMgYWxzbwogICAgICAgYWJicmV2aWF0ZWQgIlB5M2siLgogCiAgICBQeXRob25pYwpAQCAtNTQ0LDYgKzYxMiwzMiBAQAogICAgICAgICAgZm9yIHBpZWNlIGluIGZvb2Q6CiAgICAgICAgICAgICAgcHJpbnQocGllY2UpCiAKKyAgIHF1YWxpZmllZCBuYW1lCisgICAgICBBIGRvdHRlZCBuYW1lIHNob3dpbmcgdGhlICJwYXRoIiBmcm9tIGEgbW9kdWxlJ3MgZ2xvYmFsIHNjb3BlIHRvIGEKKyAgICAgIGNsYXNzLCBmdW5jdGlvbiBvciBtZXRob2QgZGVmaW5lZCBpbiB0aGF0IG1vZHVsZSwgYXMgZGVmaW5lZCBpbgorICAgICAgOnBlcDpgMzE1NWAuICBGb3IgdG9wLWxldmVsIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcywgdGhlIHF1YWxpZmllZCBuYW1lCisgICAgICBpcyB0aGUgc2FtZSBhcyB0aGUgb2JqZWN0J3MgbmFtZTo6CisKKyAgICAgICAgID4+PiBjbGFzcyBDOgorICAgICAgICAgLi4uICAgICBjbGFzcyBEOgorICAgICAgICAgLi4uICAgICAgICAgZGVmIG1ldGgoc2VsZik6CisgICAgICAgICAuLi4gICAgICAgICAgICAgcGFzcworICAgICAgICAgLi4uCisgICAgICAgICA+Pj4gQy5fX3F1YWxuYW1lX18KKyAgICAgICAgICdDJworICAgICAgICAgPj4+IEMuRC5fX3F1YWxuYW1lX18KKyAgICAgICAgICdDLkQnCisgICAgICAgICA+Pj4gQy5ELm1ldGguX19xdWFsbmFtZV9fCisgICAgICAgICAnQy5ELm1ldGgnCisKKyAgICAgIFdoZW4gdXNlZCB0byByZWZlciB0byBtb2R1bGVzLCB0aGUgKmZ1bGx5IHF1YWxpZmllZCBuYW1lKiBtZWFucyB0aGUKKyAgICAgIGVudGlyZSBkb3R0ZWQgcGF0aCB0byB0aGUgbW9kdWxlLCBpbmNsdWRpbmcgYW55IHBhcmVudCBwYWNrYWdlcywKKyAgICAgIGUuZy4gYGBlbWFpbC5taW1lLnRleHRgYDo6CisKKyAgICAgICAgID4+PiBpbXBvcnQgZW1haWwubWltZS50ZXh0CisgICAgICAgICA+Pj4gZW1haWwubWltZS50ZXh0Ll9fbmFtZV9fCisgICAgICAgICAnZW1haWwubWltZS50ZXh0JworCiAgICByZWZlcmVuY2UgY291bnQKICAgICAgIFRoZSBudW1iZXIgb2YgcmVmZXJlbmNlcyB0byBhbiBvYmplY3QuICBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4KICAgICAgIG9iamVjdCBkcm9wcyB0byB6ZXJvLCBpdCBpcyBkZWFsbG9jYXRlZC4gIFJlZmVyZW5jZSBjb3VudGluZyBpcwpAQCAtNTUyLDYgKzY0NiwxMCBAQAogICAgICAgOmZ1bmM6YH5zeXMuZ2V0cmVmY291bnRgIGZ1bmN0aW9uIHRoYXQgcHJvZ3JhbW1lcnMgY2FuIGNhbGwgdG8gcmV0dXJuIHRoZQogICAgICAgcmVmZXJlbmNlIGNvdW50IGZvciBhIHBhcnRpY3VsYXIgb2JqZWN0LgogCisgICByZWd1bGFyIHBhY2thZ2UKKyAgICAgIEEgdHJhZGl0aW9uYWwgOnRlcm06YHBhY2thZ2VgLCBzdWNoIGFzIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYW4KKyAgICAgIGBgX19pbml0X18ucHlgYCBmaWxlLgorCiAgICBfX3Nsb3RzX18KICAgICAgIEEgZGVjbGFyYXRpb24gaW5zaWRlIGEgY2xhc3MgdGhhdCBzYXZlcyBtZW1vcnkgYnkgcHJlLWRlY2xhcmluZyBzcGFjZSBmb3IKICAgICAgIGluc3RhbmNlIGF0dHJpYnV0ZXMgYW5kIGVsaW1pbmF0aW5nIGluc3RhbmNlIGRpY3Rpb25hcmllcy4gIFRob3VnaApAQCAtNTg2LDYgKzY4NCwxNCBAQAogICAgICAgYW4gOnRlcm06YGV4cHJlc3Npb25gIG9yIGEgb25lIG9mIHNldmVyYWwgY29uc3RydWN0cyB3aXRoIGEga2V5d29yZCwgc3VjaAogICAgICAgYXMgOmtleXdvcmQ6YGlmYCwgOmtleXdvcmQ6YHdoaWxlYCBvciA6a2V5d29yZDpgZm9yYC4KIAorICAgc3RydWN0IHNlcXVlbmNlCisgICAgICBBIHR1cGxlIHdpdGggbmFtZWQgZWxlbWVudHMuIFN0cnVjdCBzZXF1ZW5jZXMgZXhwb3NlIGFuIGludGVyZmFjZSBzaW1pbGFyCisgICAgICB0byA6dGVybTpgbmFtZWQgdHVwbGVgIGluIHRoYXQgZWxlbWVudHMgY2FuIGVpdGhlciBiZSBhY2Nlc3NlZCBlaXRoZXIgYnkKKyAgICAgIGluZGV4IG9yIGFzIGFuIGF0dHJpYnV0ZS4gSG93ZXZlciwgdGhleSBkbyBub3QgaGF2ZSBhbnkgb2YgdGhlIG5hbWVkIHR1cGxlCisgICAgICBtZXRob2RzIGxpa2UgOm1ldGg6YH5jb2xsZWN0aW9ucy5zb21lbmFtZWR0dXBsZS5fbWFrZWAgb3IKKyAgICAgIDptZXRoOmB+Y29sbGVjdGlvbnMuc29tZW5hbWVkdHVwbGUuX2FzZGljdGAuIEV4YW1wbGVzIG9mIHN0cnVjdCBzZXF1ZW5jZXMKKyAgICAgIGluY2x1ZGUgOmRhdGE6YHN5cy5mbG9hdF9pbmZvYCBhbmQgdGhlIHJldHVybiB2YWx1ZSBvZiA6ZnVuYzpgb3Muc3RhdGAuCisKICAgIHRyaXBsZS1xdW90ZWQgc3RyaW5nCiAgICAgICBBIHN0cmluZyB3aGljaCBpcyBib3VuZCBieSB0aHJlZSBpbnN0YW5jZXMgb2YgZWl0aGVyIGEgcXVvdGF0aW9uIG1hcmsKICAgICAgICgiKSBvciBhbiBhcG9zdHJvcGhlICgnKS4gIFdoaWxlIHRoZXkgZG9uJ3QgcHJvdmlkZSBhbnkgZnVuY3Rpb25hbGl0eQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2Rlc2NyaXB0b3IucnN0IGIvRG9jL2hvd3RvL2Rlc2NyaXB0b3IucnN0CmluZGV4IDE2MTZmNjcuLjBiNTEzZjkgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9kZXNjcmlwdG9yLnJzdAorKysgYi9Eb2MvaG93dG8vZGVzY3JpcHRvci5yc3QKQEAgLTM2LDkgKzM2LDcgQEAKIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZSBkZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uCiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kIGludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4KIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZSBwcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzCi13ZXJlIGRlZmluZWQuICBOb3RlIHRoYXQgZGVzY3JpcHRvcnMgYXJlIG9ubHkgaW52b2tlZCBmb3IgbmV3IHN0eWxlIG9iamVjdHMgb3IKLWNsYXNzZXMgKGEgY2xhc3MgaXMgbmV3IHN0eWxlIGlmIGl0IGluaGVyaXRzIGZyb20gOmNsYXNzOmBvYmplY3RgIG9yCi06Y2xhc3M6YHR5cGVgKS4KK3dlcmUgZGVmaW5lZC4KIAogRGVzY3JpcHRvcnMgYXJlIGEgcG93ZXJmdWwsIGdlbmVyYWwgcHVycG9zZSBwcm90b2NvbC4gIFRoZXkgYXJlIHRoZSBtZWNoYW5pc20KIGJlaGluZCBwcm9wZXJ0aWVzLCBtZXRob2RzLCBzdGF0aWMgbWV0aG9kcywgY2xhc3MgbWV0aG9kcywgYW5kIDpmdW5jOmBzdXBlcigpYC4KQEAgLTg5LDggKzg3LDYgQEAKIGlzIGludm9rZWQgYWNjb3JkaW5nIHRvIHRoZSBwcmVjZWRlbmNlIHJ1bGVzIGxpc3RlZCBiZWxvdy4KIAogVGhlIGRldGFpbHMgb2YgaW52b2NhdGlvbiBkZXBlbmQgb24gd2hldGhlciBgYG9iamBgIGlzIGFuIG9iamVjdCBvciBhIGNsYXNzLgotRWl0aGVyIHdheSwgZGVzY3JpcHRvcnMgb25seSB3b3JrIGZvciBuZXcgc3R5bGUgb2JqZWN0cyBhbmQgY2xhc3Nlcy4gIEEgY2xhc3MgaXMKLW5ldyBzdHlsZSBpZiBpdCBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgb2JqZWN0YC4KIAogRm9yIG9iamVjdHMsIHRoZSBtYWNoaW5lcnkgaXMgaW4gOm1ldGg6YG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fYCB3aGljaAogdHJhbnNmb3JtcyBgYGIueGBgIGludG8gYGB0eXBlKGIpLl9fZGljdF9fWyd4J10uX19nZXRfXyhiLCB0eXBlKGIpKWBgLiAgVGhlCkBAIC0xMTUsNyArMTExLDYgQEAKIAogKiBkZXNjcmlwdG9ycyBhcmUgaW52b2tlZCBieSB0aGUgOm1ldGg6YF9fZ2V0YXR0cmlidXRlX19gIG1ldGhvZAogKiBvdmVycmlkaW5nIDptZXRoOmBfX2dldGF0dHJpYnV0ZV9fYCBwcmV2ZW50cyBhdXRvbWF0aWMgZGVzY3JpcHRvciBjYWxscwotKiA6bWV0aDpgX19nZXRhdHRyaWJ1dGVfX2AgaXMgb25seSBhdmFpbGFibGUgd2l0aCBuZXcgc3R5bGUgY2xhc3NlcyBhbmQgb2JqZWN0cwogKiA6bWV0aDpgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX19gIGFuZCA6bWV0aDpgdHlwZS5fX2dldGF0dHJpYnV0ZV9fYCBtYWtlCiAgIGRpZmZlcmVudCBjYWxscyB0byA6bWV0aDpgX19nZXRfX2AuCiAqIGRhdGEgZGVzY3JpcHRvcnMgYWx3YXlzIG92ZXJyaWRlIGluc3RhbmNlIGRpY3Rpb25hcmllcy4KQEAgLTEyOCwxMCArMTIzLDcgQEAKIGBgbWBgIGlzIHJldHVybmVkIHVuY2hhbmdlZC4gIElmIG5vdCBpbiB0aGUgZGljdGlvbmFyeSwgYGBtYGAgcmV2ZXJ0cyB0byBhCiBzZWFyY2ggdXNpbmcgOm1ldGg6YG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fYC4KIAotTm90ZSwgaW4gUHl0aG9uIDIuMiwgYGBzdXBlcihCLCBvYmopLm0oKWBgIHdvdWxkIG9ubHkgaW52b2tlIDptZXRoOmBfX2dldF9fYCBpZgotYGBtYGAgd2FzIGEgZGF0YSBkZXNjcmlwdG9yLiAgSW4gUHl0aG9uIDIuMywgbm9uLWRhdGEgZGVzY3JpcHRvcnMgYWxzbyBnZXQKLWludm9rZWQgdW5sZXNzIGFuIG9sZC1zdHlsZSBjbGFzcyBpcyBpbnZvbHZlZC4gIFRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFyZQotaW4gOmM6ZnVuYzpgc3VwZXJfZ2V0YXR0cm8oKWAgaW4KK1RoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFyZSBpbiA6YzpmdW5jOmBzdXBlcl9nZXRhdHRybygpYCBpbgogYE9iamVjdHMvdHlwZW9iamVjdC5jIDxodHRwOi8vc3ZuLnB5dGhvbi5vcmcvdmlldy9weXRob24vdHJ1bmsvT2JqZWN0cy90eXBlb2JqZWN0LmM/dmlldz1tYXJrdXA+YF8KIGFuZCBhIHB1cmUgUHl0aG9uIGVxdWl2YWxlbnQgY2FuIGJlIGZvdW5kIGluIGBHdWlkbydzIFR1dG9yaWFsYF8uCiAKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9pbmRleC5yc3QgYi9Eb2MvaG93dG8vaW5kZXgucnN0CmluZGV4IGExMWQzZGEuLmY0NGU4YzAgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9pbmRleC5yc3QKKysrIGIvRG9jL2hvd3RvL2luZGV4LnJzdApAQCAtMjgsNCArMjgsNSBAQAogICAgdXJsbGliMi5yc3QKICAgIHdlYnNlcnZlcnMucnN0CiAgICBhcmdwYXJzZS5yc3QKKyAgIGlwYWRkcmVzcy5yc3QKIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2lwYWRkcmVzcy5yc3QgYi9Eb2MvaG93dG8vaXBhZGRyZXNzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjZkMDVjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2hvd3RvL2lwYWRkcmVzcy5yc3QKQEAgLTAsMCArMSwzMzYgQEAKKy4uIF9pcGFkZHJlc3MtaG93dG86CisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQW4gSW50cm9kdWN0aW9uIHRvIHRoZSBpcGFkZHJlc3MgbW9kdWxlCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworOmF1dGhvcjogUGV0ZXIgTW9vZHkKKzphdXRob3I6IE5pY2sgQ29naGxhbgorCisuLiB0b3BpYzo6IE92ZXJ2aWV3CisKKyAgIFRoaXMgZG9jdW1lbnQgYWltcyB0byBwcm92aWRlIGEgZ2VudGxlIGludHJvZHVjdGlvbiB0byB0aGUKKyAgIDptb2Q6YGlwYWRkcmVzc2AgbW9kdWxlLiBJdCBpcyBhaW1lZCBwcmltYXJpbHkgYXQgdXNlcnMgdGhhdCBhcmVuJ3QKKyAgIGFscmVhZHkgZmFtaWxpYXIgd2l0aCBJUCBuZXR3b3JraW5nIHRlcm1pbm9sb2d5LCBidXQgbWF5IGFsc28gYmUgdXNlZnVsCisgICB0byBuZXR3b3JrIGVuZ2luZWVycyB3YW50aW5nIGFuIG92ZXJ2aWV3IG9mIGhvdyA6bW9kOmBpcGFkZHJlc3NgCisgICByZXByZXNlbnRzIElQIG5ldHdvcmsgYWRkcmVzc2luZyBjb25jZXB0cy4KKworCitDcmVhdGluZyBBZGRyZXNzL05ldHdvcmsvSW50ZXJmYWNlIG9iamVjdHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTaW5jZSA6bW9kOmBpcGFkZHJlc3NgIGlzIGEgbW9kdWxlIGZvciBpbnNwZWN0aW5nIGFuZCBtYW5pcHVsYXRpbmcgSVAgYWRkcmVzc2VzLAordGhlIGZpcnN0IHRoaW5nIHlvdSdsbCB3YW50IHRvIGRvIGlzIGNyZWF0ZSBzb21lIG9iamVjdHMuICBZb3UgY2FuIHVzZQorOm1vZDpgaXBhZGRyZXNzYCB0byBjcmVhdGUgb2JqZWN0cyBmcm9tIHN0cmluZ3MgYW5kIGludGVnZXJzLgorCisKK0EgTm90ZSBvbiBJUCBWZXJzaW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciByZWFkZXJzIHRoYXQgYXJlbid0IHBhcnRpY3VsYXJseSBmYW1pbGlhciB3aXRoIElQIGFkZHJlc3NpbmcsIGl0J3MKK2ltcG9ydGFudCB0byBrbm93IHRoYXQgdGhlIEludGVybmV0IFByb3RvY29sIGlzIGN1cnJlbnRseSBpbiB0aGUgcHJvY2Vzcworb2YgbW92aW5nIGZyb20gdmVyc2lvbiA0IG9mIHRoZSBwcm90b2NvbCB0byB2ZXJzaW9uIDYuIFRoaXMgdHJhbnNpdGlvbiBpcworb2NjdXJyaW5nIGxhcmdlbHkgYmVjYXVzZSB2ZXJzaW9uIDQgb2YgdGhlIHByb3RvY29sIGRvZXNuJ3QgcHJvdmlkZSBlbm91Z2gKK2FkZHJlc3NlcyB0byBoYW5kbGUgdGhlIG5lZWRzIG9mIHRoZSB3aG9sZSB3b3JsZCwgZXNwZWNpYWxseSBnaXZlbiB0aGUKK2luY3JlYXNpbmcgbnVtYmVyIG9mIGRldmljZXMgd2l0aCBkaXJlY3QgY29ubmVjdGlvbnMgdG8gdGhlIGludGVybmV0LgorCitFeHBsYWluaW5nIHRoZSBkZXRhaWxzIG9mIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28gdmVyc2lvbnMgb2YgdGhlCitwcm90b2NvbCBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgaW50cm9kdWN0aW9uLCBidXQgcmVhZGVycyBuZWVkIHRvIGF0CitsZWFzdCBiZSBhd2FyZSB0aGF0IHRoZXNlIHR3byB2ZXJzaW9ucyBleGlzdCwgYW5kIGl0IHdpbGwgc29tZXRpbWVzIGJlCituZWNlc3NhcnkgdG8gZm9yY2UgdGhlIHVzZSBvZiBvbmUgdmVyc2lvbiBvciB0aGUgb3RoZXIuCisKKworSVAgSG9zdCBBZGRyZXNzZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0FkZHJlc3Nlcywgb2Z0ZW4gcmVmZXJyZWQgdG8gYXMgImhvc3QgYWRkcmVzc2VzIiBhcmUgdGhlIG1vc3QgYmFzaWMgdW5pdAord2hlbiB3b3JraW5nIHdpdGggSVAgYWRkcmVzc2luZy4gVGhlIHNpbXBsZXN0IHdheSB0byBjcmVhdGUgYWRkcmVzc2VzIGlzCit0byB1c2UgdGhlIDpmdW5jOmBpcGFkZHJlc3MuaXBfYWRkcmVzc2AgZmFjdG9yeSBmdW5jdGlvbiwgd2hpY2ggYXV0b21hdGljYWxseQorZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGNyZWF0ZSBhbiBJUHY0IG9yIElQdjYgYWRkcmVzcyBiYXNlZCBvbiB0aGUgcGFzc2VkIGluCit2YWx1ZTo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4xJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOkRCODo6MScpCisgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQorCitBZGRyZXNzZXMgY2FuIGFsc28gYmUgY3JlYXRlZCBkaXJlY3RseSBmcm9tIGludGVnZXJzLiBWYWx1ZXMgdGhhdCB3aWxsCitmaXQgd2l0aGluIDMyIGJpdHMgYXJlIGFzc3VtZWQgdG8gYmUgSVB2NCBhZGRyZXNzZXM6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoMzIyMTIyNTk4NSkKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYxKQorICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKKworVG8gZm9yY2UgdGhlIHVzZSBvZiBJUHY0IG9yIElQdjYgYWRkcmVzc2VzLCB0aGUgcmVsZXZhbnQgY2xhc3NlcyBjYW4gYmUKK2ludm9rZWQgZGlyZWN0bHkuIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB0byBmb3JjZSBjcmVhdGlvbiBvZiBJUHY2CithZGRyZXNzZXMgZm9yIHNtYWxsIGludGVnZXJzOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKDEpCisgICBJUHY0QWRkcmVzcygnMC4wLjAuMScpCisgICA+Pj4gaXBhZGRyZXNzLklQdjRBZGRyZXNzKDEpCisgICBJUHY0QWRkcmVzcygnMC4wLjAuMScpCisgICA+Pj4gaXBhZGRyZXNzLklQdjZBZGRyZXNzKDEpCisgICBJUHY2QWRkcmVzcygnOjoxJykKKworCitEZWZpbmluZyBOZXR3b3JrcworLS0tLS0tLS0tLS0tLS0tLS0KKworSG9zdCBhZGRyZXNzZXMgYXJlIHVzdWFsbHkgZ3JvdXBlZCB0b2dldGhlciBpbnRvIElQIG5ldHdvcmtzLCBzbworOm1vZDpgaXBhZGRyZXNzYCBwcm92aWRlcyBhIHdheSB0byBjcmVhdGUsIGluc3BlY3QgYW5kIG1hbmlwdWxhdGUgbmV0d29yaworZGVmaW5pdGlvbnMuIElQIG5ldHdvcmsgb2JqZWN0cyBhcmUgY29uc3RydWN0ZWQgZnJvbSBzdHJpbmdzIHRoYXQgZGVmaW5lIHRoZQorcmFuZ2Ugb2YgaG9zdCBhZGRyZXNzZXMgdGhhdCBhcmUgcGFydCBvZiB0aGF0IG5ldHdvcmsuIFRoZSBzaW1wbGVzdCBmb3JtCitmb3IgdGhhdCBpbmZvcm1hdGlvbiBpcyBhICJuZXR3b3JrIGFkZHJlc3MvbmV0d29yayBwcmVmaXgiIHBhaXIsIHdoZXJlIHRoZQorcHJlZml4IGRlZmluZXMgdGhlIG51bWJlciBvZiBsZWFkaW5nIGJpdHMgdGhhdCBhcmUgY29tcGFyZWQgdG8gZGV0ZXJtaW5lCit3aGV0aGVyIG9yIG5vdCBhbiBhZGRyZXNzIGlzIHBhcnQgb2YgdGhlIG5ldHdvcmsgYW5kIHRoZSBuZXR3b3JrIGFkZHJlc3MKK2RlZmluZXMgdGhlIGV4cGVjdGVkIHZhbHVlIG9mIHRob3NlIGJpdHMuCisKK0FzIGZvciBhZGRyZXNzZXMsIGEgZmFjdG9yeSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0aGF0IGRldGVybWluZXMgdGhlIGNvcnJlY3QKK0lQIHZlcnNpb24gYXV0b21hdGljYWxseTo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCisgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCisKK05ldHdvcmsgb2JqZWN0cyBjYW5ub3QgaGF2ZSBhbnkgaG9zdCBiaXRzIHNldC4gIFRoZSBwcmFjdGljYWwgZWZmZWN0IG9mIHRoaXMKK2lzIHRoYXQgYGAxOTIuMC4yLjEvMjRgYCBkb2VzIG5vdCBkZXNjcmliZSBhIG5ldHdvcmsuICBTdWNoIGRlZmluaXRpb25zIGFyZQorcmVmZXJyZWQgdG8gYXMgaW50ZXJmYWNlIG9iamVjdHMgc2luY2UgdGhlIGlwLW9uLWEtbmV0d29yayBub3RhdGlvbiBpcworY29tbW9ubHkgdXNlZCB0byBkZXNjcmliZSBuZXR3b3JrIGludGVyZmFjZXMgb2YgYSBjb21wdXRlciBvbiBhIGdpdmVuIG5ldHdvcmsKK2FuZCBhcmUgZGVzY3JpYmVkIGZ1cnRoZXIgaW4gdGhlIG5leHQgc2VjdGlvbi4KKworQnkgZGVmYXVsdCwgYXR0ZW1wdGluZyB0byBjcmVhdGUgYSBuZXR3b3JrIG9iamVjdCB3aXRoIGhvc3QgYml0cyBzZXQgd2lsbAorcmVzdWx0IGluIDpleGM6YFZhbHVlRXJyb3JgIGJlaW5nIHJhaXNlZC4gVG8gcmVxdWVzdCB0aGF0IHRoZQorYWRkaXRpb25hbCBiaXRzIGluc3RlYWQgYmUgY29lcmNlZCB0byB6ZXJvLCB0aGUgZmxhZyBgYHN0cmljdD1GYWxzZWBgIGNhbgorYmUgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvcjo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4xLzI0JykKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgVmFsdWVFcnJvcjogMTkyLjAuMi4xLzI0IGhhcyBob3N0IGJpdHMgc2V0CisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjIuMS8yNCcsIHN0cmljdD1GYWxzZSkKKyAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorCitXaGlsZSB0aGUgc3RyaW5nIGZvcm0gb2ZmZXJzIHNpZ25pZmljYW50bHkgbW9yZSBmbGV4aWJpbGl0eSwgbmV0d29ya3MgY2FuCithbHNvIGJlIGRlZmluZWQgd2l0aCBpbnRlZ2VycywganVzdCBsaWtlIGhvc3QgYWRkcmVzc2VzLiBJbiB0aGlzIGNhc2UsIHRoZQorbmV0d29yayBpcyBjb25zaWRlcmVkIHRvIGNvbnRhaW4gb25seSB0aGUgc2luZ2xlIGFkZHJlc3MgaWRlbnRpZmllZCBieSB0aGUKK2ludGVnZXIsIHNvIHRoZSBuZXR3b3JrIHByZWZpeCBpbmNsdWRlcyB0aGUgZW50aXJlIG5ldHdvcmsgYWRkcmVzczo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygzMjIxMjI1OTg0KQorICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8zMicpCisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjApCisgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi8xMjgnKQorCitBcyB3aXRoIGFkZHJlc3NlcywgY3JlYXRpb24gb2YgYSBwYXJ0aWN1bGFyIGtpbmQgb2YgbmV0d29yayBjYW4gYmUgZm9yY2VkCitieSBjYWxsaW5nIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBkaXJlY3RseSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBmYWN0b3J5CitmdW5jdGlvbi4KKworCitIb3N0IEludGVyZmFjZXMKKy0tLS0tLS0tLS0tLS0tLQorCitBcyBtZW50aW9uZWQganVzdCBhYm92ZSwgaWYgeW91IG5lZWQgdG8gZGVzY3JpYmUgYW4gYWRkcmVzcyBvbiBhIHBhcnRpY3VsYXIKK25ldHdvcmssIG5laXRoZXIgdGhlIGFkZHJlc3Mgbm9yIHRoZSBuZXR3b3JrIGNsYXNzZXMgYXJlIHN1ZmZpY2llbnQuCitOb3RhdGlvbiBsaWtlIGBgMTkyLjAuMi4xLzI0YGAgaXMgY29tbW9ubHkgdXNlZCBieSBuZXR3b3JrIGVuZ2luZWVycyBhbmQgdGhlCitwZW9wbGUgd2hvIHdyaXRlIHRvb2xzIGZvciBmaXJld2FsbHMgYW5kIHJvdXRlcnMgYXMgc2hvcnRoYW5kIGZvciAidGhlIGhvc3QKK2BgMTkyLjAuMi4xYGAgb24gdGhlIG5ldHdvcmsgYGAxOTIuMC4yLjAvMjRgYCIsIEFjY29yZGluZ2x5LCA6bW9kOmBpcGFkZHJlc3NgCitwcm92aWRlcyBhIHNldCBvZiBoeWJyaWQgY2xhc3NlcyB0aGF0IGFzc29jaWF0ZSBhbiBhZGRyZXNzIHdpdGggYSBwYXJ0aWN1bGFyCituZXR3b3JrLiBUaGUgaW50ZXJmYWNlIGZvciBjcmVhdGlvbiBpcyBpZGVudGljYWwgdG8gdGhhdCBmb3IgZGVmaW5pbmcgbmV0d29yaworb2JqZWN0cywgZXhjZXB0IHRoYXQgdGhlIGFkZHJlc3MgcG9ydGlvbiBpc24ndCBjb25zdHJhaW5lZCB0byBiZWluZyBhIG5ldHdvcmsKK2FkZHJlc3MuCisKKyAgID4+PiBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxOTIuMC4yLjEvMjQnKQorICAgSVB2NEludGVyZmFjZSgnMTkyLjAuMi4xLzI0JykKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjEvOTYnKQorICAgSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQorCitJbnRlZ2VyIGlucHV0cyBhcmUgYWNjZXB0ZWQgKGFzIHdpdGggbmV0d29ya3MpLCBhbmQgdXNlIG9mIGEgcGFydGljdWxhciBJUAordmVyc2lvbiBjYW4gYmUgZm9yY2VkIGJ5IGNhbGxpbmcgdGhlIHJlbGV2YW50IGNvbnN0cnVjdG9yIGRpcmVjdGx5LgorCisKK0luc3BlY3RpbmcgQWRkcmVzcy9OZXR3b3JrL0ludGVyZmFjZSBPYmplY3RzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitZb3UndmUgZ29uZSB0byB0aGUgdHJvdWJsZSBvZiBjcmVhdGluZyBhbiBJUHYoNHw2KShBZGRyZXNzfE5ldHdvcmt8SW50ZXJmYWNlKQorb2JqZWN0LCBzbyB5b3UgcHJvYmFibHkgd2FudCB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgaXQuICA6bW9kOmBpcGFkZHJlc3NgCit0cmllcyB0byBtYWtlIGRvaW5nIHRoaXMgZWFzeSBhbmQgaW50dWl0aXZlLgorCitFeHRyYWN0aW5nIHRoZSBJUCB2ZXJzaW9uOjoKKworICAgPj4+IGFkZHI0ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gYWRkcjYgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpkYjg6OjEnKQorICAgPj4+IGFkZHI2LnZlcnNpb24KKyAgIDYKKyAgID4+PiBhZGRyNC52ZXJzaW9uCisgICA0CisKK09idGFpbmluZyB0aGUgbmV0d29yayBmcm9tIGFuIGludGVyZmFjZTo6CisKKyAgID4+PiBob3N0NCA9IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzE5Mi4wLjIuMS8yNCcpCisgICA+Pj4gaG9zdDQubmV0d29yaworICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICA+Pj4gaG9zdDYgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCisgICA+Pj4gaG9zdDYubmV0d29yaworICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorCitGaW5kaW5nIG91dCBob3cgbWFueSBpbmRpdmlkdWFsIGFkZHJlc3NlcyBhcmUgaW4gYSBuZXR3b3JrOjoKKworICAgPj4+IG5ldDQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgID4+PiBuZXQ0Lm51bWhvc3RzCisgICAyNTYKKyAgID4+PiBuZXQ2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKKyAgID4+PiBuZXQ2Lm51bWhvc3RzCisgICA0Mjk0OTY3Mjk2CisKK0l0ZXJhdGluZyB0aHJvdWdoIHRoZSAidXNhYmxlIiBhZGRyZXNzZXMgb24gYSBuZXR3b3JrOjoKKworICAgPj4+IG5ldDQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgID4+PiBmb3IgeCBpbiBuZXQ0Lmhvc3RzKCk6CisgICAgICAgICAgcHJpbnQoeCkKKyAgIDE5Mi4wLjIuMQorICAgMTkyLjAuMi4yCisgICAxOTIuMC4yLjMKKyAgIDE5Mi4wLjIuNAorICAgPHNuaXA+CisgICAxOTIuMC4yLjI1MgorICAgMTkyLjAuMi4yNTMKKyAgIDE5Mi4wLjIuMjU0CisKKworT2J0YWluaW5nIHRoZSBuZXRtYXNrIChpLmUuIHNldCBiaXRzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5ldHdvcmsgcHJlZml4KSBvcgordGhlIGhvc3RtYXNrIChhbnkgYml0cyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgbmV0bWFzayk6CisKKyAgID4+PiBuZXQ0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICA+Pj4gbmV0NC5uZXRtYXNrCisgICBJUHY0QWRkcmVzcygnMjU1LjI1NS4yNTUuMCcpCisgICA+Pj4gbmV0NC5ob3N0bWFzaworICAgSVB2NEFkZHJlc3MoJzAuMC4wLjI1NScpCisgICA+Pj4gbmV0NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCisgICA+Pj4gbmV0Ni5uZXRtYXNrCisgICBJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6OicpCisgICA+Pj4gbmV0Ni5ob3N0bWFzaworICAgSVB2NkFkZHJlc3MoJzo6ZmZmZjpmZmZmJykKKworCitFeHBsb2Rpbmcgb3IgY29tcHJlc3NpbmcgdGhlIGFkZHJlc3M6OgorCisgICA+Pj4gYWRkcjYuZXhwbG9kZWQKKyAgICcyMDAxOjBkYjg6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAnCisgICA+Pj4gYWRkcjYuY29tcHJlc3NlZAorICAgJzIwMDE6ZGI4OjonCisgICA+Pj4gbmV0Ni5leHBsb2RlZAorICAgJzIwMDE6MGRiODowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMC85NicKKyAgID4+PiBuZXQ2LmNvbXByZXNzZWQKKyAgICcyMDAxOmRiODo6Lzk2JworCitXaGlsZSBJUHY0IGRvZXNuJ3Qgc3VwcG9ydCBleHBsb3Npb24gb3IgY29tcHJlc3Npb24sIHRoZSBhc3NvY2lhdGVkIG9iamVjdHMKK3N0aWxsIHByb3ZpZGUgdGhlIHJlbGV2YW50IHByb3BlcnRpZXMgc28gdGhhdCB2ZXJzaW9uIG5ldXRyYWwgY29kZSBjYW4KK2Vhc2lseSBlbnN1cmUgdGhlIG1vc3QgY29uY2lzZSBvciBtb3N0IHZlcmJvc2UgZm9ybSBpcyB1c2VkIGZvciBJUHY2CithZGRyZXNzZXMgd2hpbGUgc3RpbGwgY29ycmVjdGx5IGhhbmRsaW5nIElQdjQgYWRkcmVzc2VzLgorCisKK05ldHdvcmtzIGFzIGxpc3RzIG9mIEFkZHJlc3NlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0l0J3Mgc29tZXRpbWVzIHVzZWZ1bCB0byB0cmVhdCBuZXR3b3JrcyBhcyBsaXN0cy4gIFRoaXMgbWVhbnMgaXQgaXMgcG9zc2libGUKK3RvIGluZGV4IHRoZW0gbGlrZSB0aGlzOjoKKworICAgPj4+IG5ldDRbMV0KKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IG5ldDRbLTFdCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4yNTUnKQorICAgPj4+IG5ldDZbMV0KKyAgIElQdjZBZGRyZXNzKCcyMDAxOjoxJykKKyAgID4+PiBuZXQ2Wy0xXQorICAgSVB2NkFkZHJlc3MoJzIwMDE6OmZmZmY6ZmZmZicpCisKKworSXQgYWxzbyBtZWFucyB0aGF0IG5ldHdvcmsgb2JqZWN0cyBsZW5kIHRoZW1zZWx2ZXMgdG8gdXNpbmcgdGhlIGxpc3QKK21lbWJlcnNoaXAgdGVzdCBzeW50YXggbGlrZSB0aGlzOjoKKworICAgaWYgYWRkcmVzcyBpbiBuZXR3b3JrOgorICAgICAgICMgZG8gc29tZXRoaW5nCisKK0NvbnRhaW5tZW50IHRlc3RpbmcgaXMgZG9uZSBlZmZpY2llbnRseSBiYXNlZCBvbiB0aGUgbmV0d29yayBwcmVmaXg6OgorCisgICA+Pj4gYWRkcjQgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBhZGRyNCBpbiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgIFRydWUKKyAgID4+PiBhZGRyNCBpbiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMy4wLzI0JykKKyAgIEZhbHNlCisKKworQ29tcGFyaXNvbnMKKz09PT09PT09PT09CisKKzptb2Q6YGlwYWRkcmVzc2AgcHJvdmlkZXMgc29tZSBzaW1wbGUsIGhvcGVmdWxseSBpbnR1aXRpdmUgd2F5cyB0byBjb21wYXJlCitvYmplY3RzLCB3aGVyZSBpdCBtYWtlcyBzZW5zZTo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4xJykgPCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4yJykKKyAgIFRydWUKKworQSA6ZXhjOmBUeXBlRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgeW91IHRyeSB0byBjb21wYXJlIG9iamVjdHMgb2YKK2RpZmZlcmVudCB2ZXJzaW9ucyBvciBkaWZmZXJlbnQgdHlwZXMuCisKKworVXNpbmcgSVAgQWRkcmVzc2VzIHdpdGggb3RoZXIgbW9kdWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitPdGhlciBtb2R1bGVzIHRoYXQgdXNlIElQIGFkZHJlc3NlcyAoc3VjaCBhcyA6bW9kOmBzb2NrZXRgKSB1c3VhbGx5IHdvbid0CithY2NlcHQgb2JqZWN0cyBmcm9tIHRoaXMgbW9kdWxlIGRpcmVjdGx5LiBJbnN0ZWFkLCB0aGV5IG11c3QgYmUgY29lcmNlZCB0bworYW4gaW50ZWdlciBvciBzdHJpbmcgdGhhdCB0aGUgb3RoZXIgbW9kdWxlIHdpbGwgYWNjZXB0OjoKKworICAgPj4+IGFkZHI0ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gc3RyKGFkZHI0KQorICAgJzE5Mi4wLjIuMScKKyAgID4+PiBpbnQoYWRkcjQpCisgICAzMjIxMjI1OTg1CisKKworR2V0dGluZyBtb3JlIGRldGFpbCB3aGVuIGluc3RhbmNlIGNyZWF0aW9uIGZhaWxzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiBjcmVhdGluZyBhZGRyZXNzL25ldHdvcmsvaW50ZXJmYWNlIG9iamVjdHMgdXNpbmcgdGhlIHZlcnNpb24tYWdub3N0aWMKK2ZhY3RvcnkgZnVuY3Rpb25zLCBhbnkgZXJyb3JzIHdpbGwgYmUgcmVwb3J0ZWQgYXMgOmV4YzpgVmFsdWVFcnJvcmAgd2l0aAorYSBnZW5lcmljIGVycm9yIG1lc3NhZ2UgdGhhdCBzaW1wbHkgc2F5cyB0aGUgcGFzc2VkIGluIHZhbHVlIHdhcyBub3QKK3JlY29nbml6ZWQgYXMgYW4gb2JqZWN0IG9mIHRoYXQgdHlwZS4gVGhlIGxhY2sgb2YgYSBzcGVjaWZpYyBlcnJvciBpcworYmVjYXVzZSBpdCdzIG5lY2Vzc2FyeSB0byBrbm93IHdoZXRoZXIgdGhlIHZhbHVlIGlzICpzdXBwb3NlZCogdG8gYmUgSVB2NAorb3IgSVB2NiBpbiBvcmRlciB0byBwcm92aWRlIG1vcmUgZGV0YWlsIG9uIHdoeSBpdCBoYXMgYmVlbiByZWplY3RlZC4KKworVG8gc3VwcG9ydCB1c2UgY2FzZXMgd2hlcmUgaXQgaXMgdXNlZnVsIHRvIGhhdmUgYWNjZXNzIHRvIHRoaXMgYWRkaXRpb25hbAorZGV0YWlsLCB0aGUgaW5kaXZpZHVhbCBjbGFzcyBjb25zdHJ1Y3RvcnMgYWN0dWFsbHkgcmFpc2UgdGhlCis6ZXhjOmBWYWx1ZUVycm9yYCBzdWJjbGFzc2VzIDpleGM6YGlwYWRkcmVzcy5BZGRyZXNzVmFsdWVFcnJvcmAgYW5kCis6ZXhjOmBpcGFkZHJlc3MuTmV0bWFza1ZhbHVlRXJyb3JgIHRvIGluZGljYXRlIGV4YWN0bHkgd2hpY2ggcGFydCBvZgordGhlIGRlZmluaXRpb24gZmFpbGVkIHRvIHBhcnNlIGNvcnJlY3RseS4KKworVGhlIGVycm9yIG1lc3NhZ2VzIGFyZSBzaWduaWZpY2FudGx5IG1vcmUgZGV0YWlsZWQgd2hlbiB1c2luZyB0aGUKK2NsYXNzIGNvbnN0cnVjdG9ycyBkaXJlY3RseS4gRm9yIGV4YW1wbGU6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIjE5Mi4xNjguMC4yNTYiKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIFZhbHVlRXJyb3I6ICcxOTIuMTY4LjAuMjU2JyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2IGFkZHJlc3MKKyAgID4+PiBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoIjE5Mi4xNjguMC4yNTYiKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIGlwYWRkcmVzcy5BZGRyZXNzVmFsdWVFcnJvcjogT2N0ZXQgMjU2ICg+IDI1NSkgbm90IHBlcm1pdHRlZCBpbiAnMTkyLjE2OC4wLjI1NicKKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCIxOTIuMTY4LjAuMS82NCIpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgVmFsdWVFcnJvcjogJzE5Mi4xNjguMC4xLzY0JyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2IG5ldHdvcmsKKyAgID4+PiBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoIjE5Mi4xNjguMC4xLzY0IikKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBpcGFkZHJlc3MuTmV0bWFza1ZhbHVlRXJyb3I6ICc2NCcgaXMgbm90IGEgdmFsaWQgbmV0bWFzaworCitIb3dldmVyLCBib3RoIG9mIHRoZSBtb2R1bGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBoYXZlIDpleGM6YFZhbHVlRXJyb3JgIGFzIHRoZWlyCitwYXJlbnQgY2xhc3MsIHNvIGlmIHlvdSdyZSBub3QgY29uY2VybmVkIHdpdGggdGhlIHBhcnRpY3VsYXIgdHlwZSBvZiBlcnJvciwKK3lvdSBjYW4gc3RpbGwgd3JpdGUgY29kZSBsaWtlIHRoZSBmb2xsb3dpbmc6OgorCisgICB0cnk6CisgICAgICAgbmV0d29yayA9IGlwYWRkcmVzcy5JUHY0TmV0d29yayhhZGRyZXNzKQorICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgcHJpbnQoJ2FkZHJlc3MvbmV0bWFzayBpcyBpbnZhbGlkIGZvciBJUHY0OicsIGFkZHJlc3MpCisKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdCBiL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdAppbmRleCAzNzBjNzU3Li45MmFmMGVjIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKKysrIGIvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CkBAIC0xMzE2LDYgKzEzMTYsMzMgQEAKIHNlY3Rpb24gPGh0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjMvdG9waWNzL2xvZ2dpbmcvI2NvbmZpZ3VyaW5nLWxvZ2dpbmc+YF8KIG9mIHRoZSBEamFuZ28gZG9jdW1lbnRhdGlvbi4KIAorLi4gX2Nvb2tib29rLXJvdGF0b3ItbmFtZXI6CisKK1VzaW5nIGEgcm90YXRvciBhbmQgbmFtZXIgdG8gY3VzdG9taXNlIGxvZyByb3RhdGlvbiBwcm9jZXNzaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiBleGFtcGxlIG9mIGhvdyB5b3UgY2FuIGRlZmluZSBhIG5hbWVyIGFuZCByb3RhdG9yIGlzIGdpdmVuIGluIHRoZSBmb2xsb3dpbmcKK3NuaXBwZXQsIHdoaWNoIHNob3dzIHpsaWItYmFzZWQgY29tcHJlc3Npb24gb2YgdGhlIGxvZyBmaWxlOjoKKworICAgIGRlZiBuYW1lcihuYW1lKToKKyAgICAgICAgcmV0dXJuIG5hbWUgKyAiLmd6IgorCisgICAgZGVmIHJvdGF0b3Ioc291cmNlLCBkZXN0KToKKyAgICAgICAgd2l0aCBvcGVuKHNvdXJjZSwgInJiIikgYXMgc2Y6CisgICAgICAgICAgICBkYXRhID0gc2YucmVhZCgpCisgICAgICAgICAgICBjb21wcmVzc2VkID0gemxpYi5jb21wcmVzcyhkYXRhLCA5KQorICAgICAgICAgICAgd2l0aCBvcGVuKGRlc3QsICJ3YiIpIGFzIGRmOgorICAgICAgICAgICAgICAgIGRmLndyaXRlKGNvbXByZXNzZWQpCisgICAgICAgIG9zLnJlbW92ZShzb3VyY2UpCisKKyAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlciguLi4pCisgICAgcmgucm90YXRvciA9IHJvdGF0b3IKKyAgICByaC5uYW1lciA9IG5hbWVyCisKK1RoZXNlIGFyZSBub3QgInRydWUiIC5neiBmaWxlcywgYXMgdGhleSBhcmUgYmFyZSBjb21wcmVzc2VkIGRhdGEsIHdpdGggbm8KKyJjb250YWluZXIiIHN1Y2ggYXMgeW914oCZZCBmaW5kIGluIGFuIGFjdHVhbCBnemlwIGZpbGUuIFRoaXMgc25pcHBldCBpcyBqdXN0Citmb3IgaWxsdXN0cmF0aW9uIHB1cnBvc2VzLgorCiBBIG1vcmUgZWxhYm9yYXRlIG11bHRpcHJvY2Vzc2luZyBleGFtcGxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTE1NzIsNyArMTU5OSw3IEBACiAKICAgICAgICdBU0NJSSBzZWN0aW9uXHVmZWZmVW5pY29kZSBzZWN0aW9uJwogCi0gICBUaGUgVW5pY29kZSBjb2RlIHBvaW50IGBgJ1xmZWZmYGBgLCB3aGVuIGVuY29kZWQgdXNpbmcgVVRGLTgsIHdpbGwgYmUKKyAgIFRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYGAnXGZlZmYnYGAsIHdoZW4gZW5jb2RlZCB1c2luZyBVVEYtOCwgd2lsbCBiZQogICAgZW5jb2RlZCBhcyBhIFVURi04IEJPTSAtLSB0aGUgYnl0ZS1zdHJpbmcgYGBiJ1x4ZWZceGJiXHhiZidgYC4KIAogIy4gUmVwbGFjZSB0aGUgQVNDSUkgc2VjdGlvbiB3aXRoIHdoYXRldmVyIHBsYWNlaG9sZGVycyB5b3UgbGlrZSwgYnV0IG1ha2Ugc3VyZQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL3NvY2tldHMucnN0IGIvRG9jL2hvd3RvL3NvY2tldHMucnN0CmluZGV4IDI3OWJiM2UuLmNhNjUyOGIgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9zb2NrZXRzLnJzdAorKysgYi9Eb2MvaG93dG8vc29ja2V0cy5yc3QKQEAgLTI1LDggKzI1LDggQEAKIHdvcmtpbmcuIEl0IGRvZXNuJ3QgY292ZXIgdGhlIGZpbmUgcG9pbnRzIChhbmQgdGhlcmUgYXJlIGEgbG90IG9mIHRoZW0pLCBidXQgSQogaG9wZSBpdCB3aWxsIGdpdmUgeW91IGVub3VnaCBiYWNrZ3JvdW5kIHRvIGJlZ2luIHVzaW5nIHRoZW0gZGVjZW50bHkuCiAKLUknbSBvbmx5IGdvaW5nIHRvIHRhbGsgYWJvdXQgSU5FVCBzb2NrZXRzLCBidXQgdGhleSBhY2NvdW50IGZvciBhdCBsZWFzdCA5OSUgb2YKLXRoZSBzb2NrZXRzIGluIHVzZS4gQW5kIEknbGwgb25seSB0YWxrIGFib3V0IFNUUkVBTSBzb2NrZXRzIC0gdW5sZXNzIHlvdSByZWFsbHkKK0knbSBvbmx5IGdvaW5nIHRvIHRhbGsgYWJvdXQgSU5FVCAoaS5lLiBJUHY0KSBzb2NrZXRzLCBidXQgdGhleSBhY2NvdW50IGZvciBhdCBsZWFzdCA5OSUgb2YKK3RoZSBzb2NrZXRzIGluIHVzZS4gQW5kIEknbGwgb25seSB0YWxrIGFib3V0IFNUUkVBTSAoaS5lLiBUQ1ApIHNvY2tldHMgLSB1bmxlc3MgeW91IHJlYWxseQoga25vdyB3aGF0IHlvdSdyZSBkb2luZyAoaW4gd2hpY2ggY2FzZSB0aGlzIEhPV1RPIGlzbid0IGZvciB5b3UhKSwgeW91J2xsIGdldAogYmV0dGVyIGJlaGF2aW9yIGFuZCBwZXJmb3JtYW5jZSBmcm9tIGEgU1RSRUFNIHNvY2tldCB0aGFuIGFueXRoaW5nIGVsc2UuIEkgd2lsbAogdHJ5IHRvIGNsZWFyIHVwIHRoZSBteXN0ZXJ5IG9mIHdoYXQgYSBzb2NrZXQgaXMsIGFzIHdlbGwgYXMgc29tZSBoaW50cyBvbiBob3cgdG8KQEAgLTIwOCwxMCArMjA4LDEwIEBACiAgICAgICAgICAgICAgICB0b3RhbHNlbnQgPSB0b3RhbHNlbnQgKyBzZW50CiAKICAgICAgICBkZWYgbXlyZWNlaXZlKHNlbGYpOgotICAgICAgICAgICBtc2cgPSAnJworICAgICAgICAgICBtc2cgPSBiJycKICAgICAgICAgICAgd2hpbGUgbGVuKG1zZykgPCBNU0dMRU46CiAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYuc29jay5yZWN2KE1TR0xFTi1sZW4obXNnKSkKLSAgICAgICAgICAgICAgIGlmIGNodW5rID09ICcnOgorICAgICAgICAgICAgICAgaWYgY2h1bmsgPT0gYicnOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigic29ja2V0IGNvbm5lY3Rpb24gYnJva2VuIikKICAgICAgICAgICAgICAgIG1zZyA9IG1zZyArIGNodW5rCiAgICAgICAgICAgIHJldHVybiBtc2cKQEAgLTM3MSwxMiArMzcxLDYgQEAKIHBvdGVudGlhbF93cml0ZXJzIGxpc3QuIElmIGl0IHNob3dzIHVwIGluIHRoZSB3cml0YWJsZSBsaXN0LCB5b3UgaGF2ZSBhIGRlY2VudAogY2hhbmNlIHRoYXQgaXQgaGFzIGNvbm5lY3RlZC4KIAotT25lIHZlcnkgbmFzdHkgcHJvYmxlbSB3aXRoIGBgc2VsZWN0YGA6IGlmIHNvbWV3aGVyZSBpbiB0aG9zZSBpbnB1dCBsaXN0cyBvZgotc29ja2V0cyBpcyBvbmUgd2hpY2ggaGFzIGRpZWQgYSBuYXN0eSBkZWF0aCwgdGhlIGBgc2VsZWN0YGAgd2lsbCBmYWlsLiBZb3UgdGhlbgotbmVlZCB0byBsb29wIHRocm91Z2ggZXZlcnkgc2luZ2xlIGRhbW4gc29ja2V0IGluIGFsbCB0aG9zZSBsaXN0cyBhbmQgZG8gYQotYGBzZWxlY3QoW3NvY2tdLFtdLFtdLDApYGAgdW50aWwgeW91IGZpbmQgdGhlIGJhZCBvbmUuIFRoYXQgdGltZW91dCBvZiAwIG1lYW5zCi1pdCB3b24ndCB0YWtlIGxvbmcsIGJ1dCBpdCdzIHVnbHkuCi0KIEFjdHVhbGx5LCBgYHNlbGVjdGBgIGNhbiBiZSBoYW5keSBldmVuIHdpdGggYmxvY2tpbmcgc29ja2V0cy4gSXQncyBvbmUgd2F5IG9mCiBkZXRlcm1pbmluZyB3aGV0aGVyIHlvdSB3aWxsIGJsb2NrIC0gdGhlIHNvY2tldCByZXR1cm5zIGFzIHJlYWRhYmxlIHdoZW4gdGhlcmUncwogc29tZXRoaW5nIGluIHRoZSBidWZmZXJzLiAgSG93ZXZlciwgdGhpcyBzdGlsbCBkb2Vzbid0IGhlbHAgd2l0aCB0aGUgcHJvYmxlbSBvZgpAQCAtMzg2LDI2ICszODAsNiBAQAogZmlsZXMuIERvbid0IHRyeSB0aGlzIG9uIFdpbmRvd3MuIE9uIFdpbmRvd3MsIGBgc2VsZWN0YGAgd29ya3Mgd2l0aCBzb2NrZXRzCiBvbmx5LiBBbHNvIG5vdGUgdGhhdCBpbiBDLCBtYW55IG9mIHRoZSBtb3JlIGFkdmFuY2VkIHNvY2tldCBvcHRpb25zIGFyZSBkb25lCiBkaWZmZXJlbnRseSBvbiBXaW5kb3dzLiBJbiBmYWN0LCBvbiBXaW5kb3dzIEkgdXN1YWxseSB1c2UgdGhyZWFkcyAod2hpY2ggd29yawotdmVyeSwgdmVyeSB3ZWxsKSB3aXRoIG15IHNvY2tldHMuIEZhY2UgaXQsIGlmIHlvdSB3YW50IGFueSBraW5kIG9mIHBlcmZvcm1hbmNlLAoteW91ciBjb2RlIHdpbGwgbG9vayB2ZXJ5IGRpZmZlcmVudCBvbiBXaW5kb3dzIHRoYW4gb24gVW5peC4KK3ZlcnksIHZlcnkgd2VsbCkgd2l0aCBteSBzb2NrZXRzLgogCiAKLVBlcmZvcm1hbmNlCi0tLS0tLS0tLS0tLQotCi1UaGVyZSdzIG5vIHF1ZXN0aW9uIHRoYXQgdGhlIGZhc3Rlc3Qgc29ja2V0cyBjb2RlIHVzZXMgbm9uLWJsb2NraW5nIHNvY2tldHMgYW5kCi1zZWxlY3QgdG8gbXVsdGlwbGV4IHRoZW0uIFlvdSBjYW4gcHV0IHRvZ2V0aGVyIHNvbWV0aGluZyB0aGF0IHdpbGwgc2F0dXJhdGUgYQotTEFOIGNvbm5lY3Rpb24gd2l0aG91dCBwdXR0aW5nIGFueSBzdHJhaW4gb24gdGhlIENQVS4KLQotVGhlIHRyb3VibGUgaXMgdGhhdCBhbiBhcHAgd3JpdHRlbiB0aGlzIHdheSBjYW4ndCBkbyBtdWNoIG9mIGFueXRoaW5nIGVsc2UgLQotaXQgbmVlZHMgdG8gYmUgcmVhZHkgdG8gc2h1ZmZsZSBieXRlcyBhcm91bmQgYXQgYWxsIHRpbWVzLiBBc3N1bWluZyB0aGF0IHlvdXIKLWFwcCBpcyBhY3R1YWxseSBzdXBwb3NlZCB0byBkbyBzb21ldGhpbmcgbW9yZSB0aGFuIHRoYXQsIHRocmVhZGluZyBpcyB0aGUKLW9wdGltYWwgc29sdXRpb24sIChhbmQgdXNpbmcgbm9uLWJsb2NraW5nIHNvY2tldHMgd2lsbCBiZSBmYXN0ZXIgdGhhbiB1c2luZwotYmxvY2tpbmcgc29ja2V0cykuCi0KLUZpbmFsbHksIHJlbWVtYmVyIHRoYXQgZXZlbiB0aG91Z2ggYmxvY2tpbmcgc29ja2V0cyBhcmUgc29tZXdoYXQgc2xvd2VyIHRoYW4KLW5vbi1ibG9ja2luZywgaW4gbWFueSBjYXNlcyB0aGV5IGFyZSB0aGUgInJpZ2h0IiBzb2x1dGlvbi4gQWZ0ZXIgYWxsLCBpZiB5b3VyCi1hcHAgaXMgZHJpdmVuIGJ5IHRoZSBkYXRhIGl0IHJlY2VpdmVzIG92ZXIgYSBzb2NrZXQsIHRoZXJlJ3Mgbm90IG11Y2ggc2Vuc2UgaW4KLWNvbXBsaWNhdGluZyB0aGUgbG9naWMganVzdCBzbyB5b3VyIGFwcCBjYW4gd2FpdCBvbiBgYHNlbGVjdGBgIGluc3RlYWQgb2YKLWBgcmVjdmBgLgotCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vdXJsbGliMi5yc3QgYi9Eb2MvaG93dG8vdXJsbGliMi5yc3QKaW5kZXggZmFkZTRhMy4uMjBkY2EyMCAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3VybGxpYjIucnN0CisrKyBiL0RvYy9ob3d0by91cmxsaWIyLnJzdApAQCAtNTYsNiArNTYsMTMgQEAKICAgICByZXNwb25zZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oJ2h0dHA6Ly9weXRob24ub3JnLycpCiAgICAgaHRtbCA9IHJlc3BvbnNlLnJlYWQoKQogCitJZiB5b3Ugd2lzaCB0byByZXRyaWV2ZSBhIHJlc291cmNlIHZpYSBVUkwgYW5kIHN0b3JlIGl0IGluIGEgdGVtcG9yYXJ5IGxvY2F0aW9uLAoreW91IGNhbiBkbyBzbyB2aWEgdGhlIDpmdW5jOmB1cmxyZXRyaWV2ZWAgZnVuY3Rpb246OgorCisgICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0CisgICAgbG9jYWxfZmlsZW5hbWUsIGhlYWRlcnMgPSB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZSgnaHR0cDovL3B5dGhvbi5vcmcvJykKKyAgICBodG1sID0gb3Blbihsb2NhbF9maWxlbmFtZSkKKwogTWFueSB1c2VzIG9mIHVybGxpYiB3aWxsIGJlIHRoYXQgc2ltcGxlIChub3RlIHRoYXQgaW5zdGVhZCBvZiBhbiAnaHR0cDonIFVSTCB3ZQogY291bGQgaGF2ZSB1c2VkIGFuIFVSTCBzdGFydGluZyB3aXRoICdmdHA6JywgJ2ZpbGU6JywgZXRjLikuICBIb3dldmVyLCBpdCdzIHRoZQogcHVycG9zZSBvZiB0aGlzIHR1dG9yaWFsIHRvIGV4cGxhaW4gdGhlIG1vcmUgY29tcGxpY2F0ZWQgY2FzZXMsIGNvbmNlbnRyYXRpbmcgb24KZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9tcF9iZW5jaG1hcmtzLnB5IGIvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKaW5kZXggYWNkZjY0Mi4uMzc2M2VhOSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKKysrIGIvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKQEAgLTYsMTYgKzYsMTIgQEAKICMKIAogaW1wb3J0IHRpbWUKLWltcG9ydCBzeXMKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBxdWV1ZQogaW1wb3J0IGdjCiAKLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgIF90aW1lciA9IHRpbWUuY2xvY2sKLWVsc2U6Ci0gICAgX3RpbWVyID0gdGltZS50aW1lCitfdGltZXIgPSB0aW1lLnBlcmZfY291bnRlcgogCiBkZWx0YSA9IDEKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5Mi5jIGIvRG9jL2luY2x1ZGVzL25vZGR5Mi5jCmluZGV4IDliOGVhZmIuLjk2NDE1NTggMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTIuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHkyLmMKQEAgLTI0LDE4ICsyNCwxNiBAQAogICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgc2VsZi0+bGFzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgfQpAQCAtNTAsMTAgKzQ4LDEwIEBACiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpcnN0IiwgImxhc3QiLCAibnVtYmVyIiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LCAKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5udW1iZXIpKQotICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgdG1wID0gc2VsZi0+Zmlyc3Q7CkBAIC04NiwxNSArODQsNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJmaXJzdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNSwxNCArOTQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUyAlUyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIE5vZGR5X21ldGhvZHNbXSA9IHsKQEAgLTE0NSwxMiArMTI3LDEyIEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAvKiB0cF9mbGFncyAqLwogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBOb2RkeV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgTm9kZHlfbWVtYmVycywgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMTczLDcgKzE1NSw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5Mih2b2lkKSAKK1B5SW5pdF9ub2RkeTIodm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5My5jIGIvRG9jL2luY2x1ZGVzL25vZGR5My5jCmluZGV4IDg5ZjNhNzcuLjhhNWE3NTMgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTMuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHkzLmMKQEAgLTI0LDE4ICsyNCwxNiBAQAogICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgc2VsZi0+bGFzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgfQpAQCAtNTAsMTAgKzQ4LDEwIEBACiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpcnN0IiwgImxhc3QiLCAibnVtYmVyIiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxTU2kiLCBrd2xpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LCAKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxTU2kiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5udW1iZXIpKQotICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgdG1wID0gc2VsZi0+Zmlyc3Q7CkBAIC04OCwyMiArODYsMjIgQEAKIHN0YXRpYyBpbnQKIE5vZGR5X3NldGZpcnN0KE5vZGR5ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGZpcnN0IGF0dHJpYnV0ZSIpOwotICAgIHJldHVybiAtMTsKLSAgfQotICAKLSAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAiVGhlIGZpcnN0IGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gICAgICAKLSAgUHlfREVDUkVGKHNlbGYtPmZpcnN0KTsKLSAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgc2VsZi0+Zmlyc3QgPSB2YWx1ZTsgICAgCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGZpcnN0IGF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gIHJldHVybiAwOworICAgIGlmICghIFB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlyc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihzZWxmLT5maXJzdCk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBzZWxmLT5maXJzdCA9IHZhbHVlOworCisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTYsMzAgKzExNCwzMCBAQAogc3RhdGljIGludAogTm9kZHlfc2V0bGFzdChOb2RkeSAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQogewotICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJDYW5ub3QgZGVsZXRlIHRoZSBsYXN0IGF0dHJpYnV0ZSIpOwotICAgIHJldHVybiAtMTsKLSAgfQotICAKLSAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAiVGhlIGxhc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgICAgIAotICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7Ci0gIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gIHNlbGYtPmxhc3QgPSB2YWx1ZTsgICAgCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGxhc3QgYXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKLSAgcmV0dXJuIDA7CisgICAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBsYXN0IGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBzZWxmLT5sYXN0ID0gdmFsdWU7CisKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5R2V0U2V0RGVmIE5vZGR5X2dldHNldGVyc1tdID0gewotICAgIHsiZmlyc3QiLCAKKyAgICB7ImZpcnN0IiwKICAgICAgKGdldHRlcilOb2RkeV9nZXRmaXJzdCwgKHNldHRlcilOb2RkeV9zZXRmaXJzdCwKICAgICAgImZpcnN0IG5hbWUiLAogICAgICBOVUxMfSwKLSAgICB7Imxhc3QiLCAKKyAgICB7Imxhc3QiLAogICAgICAoZ2V0dGVyKU5vZGR5X2dldGxhc3QsIChzZXR0ZXIpTm9kZHlfc2V0bGFzdCwKICAgICAgImxhc3QgbmFtZSIsCiAgICAgIE5VTEx9LApAQCAtMTQ5LDIzICsxNDcsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUyAlUyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIE5vZGR5X21ldGhvZHNbXSA9IHsKQEAgLTE5OCwxMiArMTgwLDEyIEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAvKiB0cF9mbGFncyAqLwogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBOb2RkeV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgTm9kZHlfbWVtYmVycywgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIE5vZGR5X2dldHNldGVycywgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMjI2LDcgKzIwOCw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5Myh2b2lkKSAKK1B5SW5pdF9ub2RkeTModm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5NC5jIGIvRG9jL2luY2x1ZGVzL25vZGR5NC5jCmluZGV4IDZhOTZmYWMuLmViOTYyMmEgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTQuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHk0LmMKQEAgLTI3LDcgKzI3LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCAKK3N0YXRpYyBpbnQKIE5vZGR5X2NsZWFyKE5vZGR5ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp0bXA7CkBAIC01OCwxOCArNTgsMTYgQEAKICAgICBzZWxmID0gKE5vZGR5ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCkgewogICAgICAgICBzZWxmLT5maXJzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpCi0gICAgICAgICAgeworICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgfQotICAgICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIHNlbGYtPmxhc3QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7Ci0gICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpCi0gICAgICAgICAgeworICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBzZWxmLT5udW1iZXIgPSAwOwogICAgIH0KQEAgLTg0LDEwICs4MiwxMCBAQAogCiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaXJzdCIsICJsYXN0IiwgIm51bWJlciIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T09pIiwga3dsaXN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0LCAmbGFzdCwgCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T09pIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2VsZi0+bnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIC0xOyAKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKGZpcnN0KSB7CiAgICAgICAgIHRtcCA9IHNlbGYtPmZpcnN0OwpAQCAtMTIwLDE1ICsxMTgsNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJmaXJzdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzOSwxNCArMTI4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIk9PIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zvcm1hdChmb3JtYXQsIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMgJVMiLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBOb2RkeV9tZXRob2RzW10gPSB7CkBAIC0xODIsMTAgKzE2NCwxMCBAQAogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpTm9kZHlfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSlOb2RkeV9jbGVhciwgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgTm9kZHlfbWV0aG9kcywgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIE5vZGR5X21lbWJlcnMsICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KQEAgLTIwOCw3ICsxOTAsNyBAQAogfTsKIAogUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF9ub2RkeTQodm9pZCkgCitQeUluaXRfbm9kZHk0KHZvaWQpCiB7CiAgICAgUHlPYmplY3QqIG07CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L190aHJlYWQucnN0IGIvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKaW5kZXggMzY5ZTljZC4uNzUxYzNlOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKQEAgLTM1LDYgKzM1LDkgQEAKIAogICAgUmFpc2VkIG9uIHRocmVhZC1zcGVjaWZpYyBlcnJvcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGlzIG5vdyBhIHN5bm9ueW0gb2YgdGhlIGJ1aWx0LWluIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisKIAogLi4gZGF0YTo6IExvY2tUeXBlCiAKQEAgLTkxLDcgKzk0LDcgQEAKICAgICpzaXplKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIHN0YWNrIHNpemUgdG8gYmUgdXNlZCBmb3Igc3Vic2VxdWVudGx5IGNyZWF0ZWQKICAgIHRocmVhZHMsIGFuZCBtdXN0IGJlIDAgKHVzZSBwbGF0Zm9ybSBvciBjb25maWd1cmVkIGRlZmF1bHQpIG9yIGEgcG9zaXRpdmUKICAgIGludGVnZXIgdmFsdWUgb2YgYXQgbGVhc3QgMzIsNzY4ICgzMmtCKS4gSWYgY2hhbmdpbmcgdGhlIHRocmVhZCBzdGFjayBzaXplIGlzCi0gICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBUaHJlYWRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCisgICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBzcGVjaWZpZWQgc3RhY2sgc2l6ZSBpcwogICAgaW52YWxpZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgYW5kIHRoZSBzdGFjayBzaXplIGlzIHVubW9kaWZpZWQuICAzMmtCCiAgICBpcyBjdXJyZW50bHkgdGhlIG1pbmltdW0gc3VwcG9ydGVkIHN0YWNrIHNpemUgdmFsdWUgdG8gZ3VhcmFudGVlIHN1ZmZpY2llbnQKICAgIHN0YWNrIHNwYWNlIGZvciB0aGUgaW50ZXJwcmV0ZXIgaXRzZWxmLiAgTm90ZSB0aGF0IHNvbWUgcGxhdGZvcm1zIG1heSBoYXZlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hYmMucnN0IGIvRG9jL2xpYnJhcnkvYWJjLnJzdAppbmRleCAxMDQ4YjI0Li5kY2E2OTkzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hYmMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FiYy5yc3QKQEAgLTE4LDcgKzE4LDcgQEAKIAogVGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgaGFzIHNvbWUgY29uY3JldGUgY2xhc3NlcyB0aGF0IGRlcml2ZSBmcm9tCiBBQkNzOyB0aGVzZSBjYW4sIG9mIGNvdXJzZSwgYmUgZnVydGhlciBkZXJpdmVkLiBJbiBhZGRpdGlvbiB0aGUKLTptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgaGFzIHNvbWUgQUJDcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3Qgd2hldGhlcgorOm1vZDpgY29sbGVjdGlvbnMuYWJjYCBzdWJtb2R1bGUgaGFzIHNvbWUgQUJDcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3Qgd2hldGhlcgogYSBjbGFzcyBvciBpbnN0YW5jZSBwcm92aWRlcyBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlLCBmb3IgZXhhbXBsZSwgaXMgaXQKIGhhc2hhYmxlIG9yIGEgbWFwcGluZy4KIApAQCAtNTUsNiArNTUsOSBAQAogICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0dXBsZSwgTXlBQkMpCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKCgpLCBNeUFCQykKIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFJldHVybnMgdGhlIHJlZ2lzdGVyZWQgc3ViY2xhc3MsIHRvIGFsbG93IHVzYWdlIGFzIGEgY2xhc3MgZGVjb3JhdG9yLgorCiAgICBZb3UgY2FuIGFsc28gb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4gYW4gYWJzdHJhY3QgYmFzZSBjbGFzczoKIAogICAgLi4gbWV0aG9kOjogX19zdWJjbGFzc2hvb2tfXyhzdWJjbGFzcykKQEAgLTEyNCwxOSArMTI3LDE4IEBACiAgICBhdmFpbGFibGUgYXMgYSBtZXRob2Qgb2YgYGBGb29gYCwgc28gaXQgaXMgcHJvdmlkZWQgc2VwYXJhdGVseS4KIAogCi1JdCBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZGVjb3JhdG9yczoKK1RoZSA6bW9kOmBhYmNgIG1vZHVsZSBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZGVjb3JhdG9yczoKIAogLi4gZGVjb3JhdG9yOjogYWJzdHJhY3RtZXRob2QoZnVuY3Rpb24pCiAKICAgIEEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgbWV0aG9kcy4KIAotICAgVXNpbmcgdGhpcyBkZWNvcmF0b3IgcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYCBvcgotICAgaXMgZGVyaXZlZCBmcm9tIGl0LgotICAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20gOmNsYXNzOmBBQkNNZXRhYAotICAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzIGFuZAotICAgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4KLSAgIFRoZSBhYnN0cmFjdCBtZXRob2RzIGNhbiBiZSBjYWxsZWQgdXNpbmcgYW55IG9mIHRoZSBub3JtYWwgJ3N1cGVyJyBjYWxsCi0gICBtZWNoYW5pc21zLgorICAgVXNpbmcgdGhpcyBkZWNvcmF0b3IgcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYAorICAgb3IgaXMgZGVyaXZlZCBmcm9tIGl0LiAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20KKyAgIDpjbGFzczpgQUJDTWV0YWAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzCisgICBhbmQgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4gIFRoZSBhYnN0cmFjdCBtZXRob2RzIGNhbiBiZSBjYWxsZWQgdXNpbmcgYW55CisgICBvZiB0aGUgbm9ybWFsICdzdXBlcicgY2FsbCBtZWNoYW5pc21zLiAgOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBtYXkgYmUgdXNlZAorICAgdG8gZGVjbGFyZSBhYnN0cmFjdCBtZXRob2RzIGZvciBwcm9wZXJ0aWVzIGFuZCBkZXNjcmlwdG9ycy4KIAogICAgRHluYW1pY2FsbHkgYWRkaW5nIGFic3RyYWN0IG1ldGhvZHMgdG8gYSBjbGFzcywgb3IgYXR0ZW1wdGluZyB0byBtb2RpZnkgdGhlCiAgICBhYnN0cmFjdGlvbiBzdGF0dXMgb2YgYSBtZXRob2Qgb3IgY2xhc3Mgb25jZSBpdCBpcyBjcmVhdGVkLCBhcmUgbm90CkBAIC0xNDQsMTIgKzE0Niw1MiBAQAogICAgcmVndWxhciBpbmhlcml0YW5jZTsgInZpcnR1YWwgc3ViY2xhc3NlcyIgcmVnaXN0ZXJlZCB3aXRoIHRoZSBBQkMncwogICAgOm1ldGg6YHJlZ2lzdGVyYCBtZXRob2QgYXJlIG5vdCBhZmZlY3RlZC4KIAotICAgVXNhZ2U6OgorICAgV2hlbiA6ZnVuYzpgYWJzdHJhY3RtZXRob2RgIGlzIGFwcGxpZWQgaW4gY29tYmluYXRpb24gd2l0aCBvdGhlciBtZXRob2QKKyAgIGRlc2NyaXB0b3JzLCBpdCBzaG91bGQgYmUgYXBwbGllZCBhcyB0aGUgaW5uZXJtb3N0IGRlY29yYXRvciwgYXMgc2hvd24gaW4KKyAgIHRoZSBmb2xsb3dpbmcgdXNhZ2UgZXhhbXBsZXM6OgogCiAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1BQkNNZXRhKToKICAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfbWV0aG9kKHNlbGYsIC4uLik6CiAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAorICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9jbGFzc21ldGhvZChjbHMsIC4uLik6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICBkZWYgbXlfYWJzdHJhY3Rfc3RhdGljbWV0aG9kKC4uLik6CisgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3Byb3BlcnR5KHNlbGYpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICBAbXlfYWJzdHJhY3RfcHJvcGVydHkuc2V0dGVyCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3Byb3BlcnR5KHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIF9nZXRfeChzZWxmKToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIF9zZXRfeChzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICB4ID0gcHJvcGVydHkoX2dldF94LCBfc2V0X3gpCisKKyAgIEluIG9yZGVyIHRvIGNvcnJlY3RseSBpbnRlcm9wZXJhdGUgd2l0aCB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzcyBtYWNoaW5lcnksCisgICB0aGUgZGVzY3JpcHRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyBhYnN0cmFjdCB1c2luZworICAgOmF0dHI6YF9faXNhYnN0cmFjdG1ldGhvZF9fYC4gSW4gZ2VuZXJhbCwgdGhpcyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGBgVHJ1ZWBgCisgICBpZiBhbnkgb2YgdGhlIG1ldGhvZHMgdXNlZCB0byBjb21wb3NlIHRoZSBkZXNjcmlwdG9yIGFyZSBhYnN0cmFjdC4gRm9yCisgICBleGFtcGxlLCBQeXRob24ncyBidWlsdC1pbiBwcm9wZXJ0eSBkb2VzIHRoZSBlcXVpdmFsZW50IG9mOjoKKworICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAuLi4KKyAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICBkZWYgX19pc2Fic3RyYWN0bWV0aG9kX18oc2VsZik6CisgICAgICAgICAgICAgIHJldHVybiBhbnkoZ2V0YXR0cihmLCAnX19pc2Fic3RyYWN0bWV0aG9kX18nLCBGYWxzZSkgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgZiBpbiAoc2VsZi5fZmdldCwgc2VsZi5fZnNldCwgc2VsZi5fZmRlbCkpCiAKICAgIC4uIG5vdGU6OgogCkBAIC0xNzQsNiArMjE2LDggQEAKICAgICAgICAgICAgICAgLi4uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgIFVzZSA6Y2xhc3M6YGNsYXNzbWV0aG9kYCB3aXRoIDpmdW5jOmBhYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KIAogCiAuLiBkZWNvcmF0b3I6OiBhYnN0cmFjdHN0YXRpY21ldGhvZChmdW5jdGlvbikKQEAgLTE4OSwxOCArMjMzLDE5IEBACiAgICAgICAgICAgICAgIC4uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgICBVc2UgOmNsYXNzOmBzdGF0aWNtZXRob2RgIHdpdGggOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgogCiAKLS4uIGZ1bmN0aW9uOjogYWJzdHJhY3Rwcm9wZXJ0eShmZ2V0PU5vbmUsIGZzZXQ9Tm9uZSwgZmRlbD1Ob25lLCBkb2M9Tm9uZSkKKy4uIGRlY29yYXRvcjo6IGFic3RyYWN0cHJvcGVydHkoZmdldD1Ob25lLCBmc2V0PU5vbmUsIGZkZWw9Tm9uZSwgZG9jPU5vbmUpCiAKICAgIEEgc3ViY2xhc3Mgb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBwcm9wZXJ0eWAsIGluZGljYXRpbmcgYW4gYWJzdHJhY3QgcHJvcGVydHkuCiAKLSAgIFVzaW5nIHRoaXMgZnVuY3Rpb24gcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYCBvcgotICAgaXMgZGVyaXZlZCBmcm9tIGl0LgotICAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20gOmNsYXNzOmBBQkNNZXRhYCBjYW5ub3QgYmUKLSAgIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGFyZSBvdmVycmlkZGVuLgotICAgVGhlIGFic3RyYWN0IHByb3BlcnRpZXMgY2FuIGJlIGNhbGxlZCB1c2luZyBhbnkgb2YgdGhlIG5vcm1hbAotICAgJ3N1cGVyJyBjYWxsIG1lY2hhbmlzbXMuCisgICBVc2luZyB0aGlzIGZ1bmN0aW9uIHJlcXVpcmVzIHRoYXQgdGhlIGNsYXNzJ3MgbWV0YWNsYXNzIGlzIDpjbGFzczpgQUJDTWV0YWAKKyAgIG9yIGlzIGRlcml2ZWQgZnJvbSBpdC4gQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20KKyAgIDpjbGFzczpgQUJDTWV0YWAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzCisgICBhbmQgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4gVGhlIGFic3RyYWN0IHByb3BlcnRpZXMgY2FuIGJlIGNhbGxlZCB1c2luZworICAgYW55IG9mIHRoZSBub3JtYWwgJ3N1cGVyJyBjYWxsIG1lY2hhbmlzbXMuCiAKICAgIFVzYWdlOjoKIApAQCAtMjE3LDYgKzI2Miw5IEBACiAgICAgICAgICAgZGVmIHNldHgoc2VsZiwgdmFsdWUpOiAuLi4KICAgICAgICAgICB4ID0gYWJzdHJhY3Rwcm9wZXJ0eShnZXR4LCBzZXR4KQogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICAgVXNlIDpjbGFzczpgcHJvcGVydHlgIHdpdGggOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkCisKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FyY2hpdmluZy5yc3QgYi9Eb2MvbGlicmFyeS9hcmNoaXZpbmcucnN0CmluZGV4IDc1ZDEzN2MuLmM5Mjg0OTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FyY2hpdmluZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJjaGl2aW5nLnJzdApAQCAtNSw4ICs1LDkgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBUaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHN1cHBvcnQgZGF0YSBjb21wcmVzc2lvbiB3aXRoIHRoZSB6bGliLAotZ3ppcCwgYW5kIGJ6aXAyIGFsZ29yaXRobXMsIGFuZCAgdGhlIGNyZWF0aW9uIG9mIFpJUC0gYW5kIHRhci1mb3JtYXQgYXJjaGl2ZXMuCi1TZWUgYWxzbyA6cmVmOmBhcmNoaXZpbmctb3BlcmF0aW9uc2AgcHJvdmlkZWQgYnkgdGhlIDptb2Q6YHNodXRpbGAgbW9kdWxlLgorZ3ppcCwgYnppcDIgYW5kIGx6bWEgYWxnb3JpdGhtcywgYW5kIHRoZSBjcmVhdGlvbiBvZiBaSVAtIGFuZCB0YXItZm9ybWF0CithcmNoaXZlcy4gIFNlZSBhbHNvIDpyZWY6YGFyY2hpdmluZy1vcGVyYXRpb25zYCBwcm92aWRlZCBieSB0aGUgOm1vZDpgc2h1dGlsYAorbW9kdWxlLgogCiAKIC4uIHRvY3RyZWU6OgpAQCAtMTQsNSArMTUsNiBAQAogICAgemxpYi5yc3QKICAgIGd6aXAucnN0CiAgICBiejIucnN0CisgICBsem1hLnJzdAogICAgemlwZmlsZS5yc3QKICAgIHRhcmZpbGUucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QgYi9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKaW5kZXggNmFhYTM2ZS4uNDIwM2U4YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdApAQCAtMzY4LDE2ICszNjgsMTYgQEAKIF5eXl5eXl5eXl5eXl5eXgogCiA6Y2xhc3M6YEFyZ3VtZW50UGFyc2VyYCBvYmplY3RzIGFsbG93IHRoZSBoZWxwIGZvcm1hdHRpbmcgdG8gYmUgY3VzdG9taXplZCBieQotc3BlY2lmeWluZyBhbiBhbHRlcm5hdGUgZm9ybWF0dGluZyBjbGFzcy4gIEN1cnJlbnRseSwgdGhlcmUgYXJlIHRocmVlIHN1Y2gKK3NwZWNpZnlpbmcgYW4gYWx0ZXJuYXRlIGZvcm1hdHRpbmcgY2xhc3MuICBDdXJyZW50bHksIHRoZXJlIGFyZSBmb3VyIHN1Y2gKIGNsYXNzZXM6CiAKIC4uIGNsYXNzOjogUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyCiAgICAgICAgICAgIFJhd1RleHRIZWxwRm9ybWF0dGVyCiAgICAgICAgICAgIEFyZ3VtZW50RGVmYXVsdHNIZWxwRm9ybWF0dGVyCisgICAgICAgICAgIE1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcgogCi1UaGUgZmlyc3QgdHdvIGFsbG93IG1vcmUgY29udHJvbCBvdmVyIGhvdyB0ZXh0dWFsIGRlc2NyaXB0aW9ucyBhcmUgZGlzcGxheWVkLAotd2hpbGUgdGhlIGxhc3QgYXV0b21hdGljYWxseSBhZGRzIGluZm9ybWF0aW9uIGFib3V0IGFyZ3VtZW50IGRlZmF1bHQgdmFsdWVzLgotCis6Y2xhc3M6YFJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcmAgYW5kIDpjbGFzczpgUmF3VGV4dEhlbHBGb3JtYXR0ZXJgIGdpdmUKK21vcmUgY29udHJvbCBvdmVyIGhvdyB0ZXh0dWFsIGRlc2NyaXB0aW9ucyBhcmUgZGlzcGxheWVkLgogQnkgZGVmYXVsdCwgOmNsYXNzOmBBcmd1bWVudFBhcnNlcmAgb2JqZWN0cyBsaW5lLXdyYXAgdGhlIGRlc2NyaXB0aW9uXyBhbmQKIGVwaWxvZ18gdGV4dHMgaW4gY29tbWFuZC1saW5lIGhlbHAgbWVzc2FnZXM6OgogCkBAIC00MzAsOCArNDMwLDggQEAKIDpjbGFzczpgUmF3VGV4dEhlbHBGb3JtYXR0ZXJgIG1haW50YWlucyB3aGl0ZXNwYWNlIGZvciBhbGwgc29ydHMgb2YgaGVscCB0ZXh0LAogaW5jbHVkaW5nIGFyZ3VtZW50IGRlc2NyaXB0aW9ucy4KIAotVGhlIG90aGVyIGZvcm1hdHRlciBjbGFzcyBhdmFpbGFibGUsIDpjbGFzczpgQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXJgLAotd2lsbCBhZGQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgZWFjaCBvZiB0aGUgYXJndW1lbnRzOjoKKzpjbGFzczpgQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXJgIGF1dG9tYXRpY2FsbHkgYWRkcyBpbmZvcm1hdGlvbiBhYm91dAorZGVmYXVsdCB2YWx1ZXMgdG8gZWFjaCBvZiB0aGUgYXJndW1lbnQgaGVscCBtZXNzYWdlczo6CiAKICAgID4+PiBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKICAgIC4uLiAgICAgcHJvZz0nUFJPRycsCkBAIC00NDgsNiArNDQ4LDI1IEBACiAgICAgLWgsIC0taGVscCAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAogICAgIC0tZm9vIEZPTyAgIEZPTyEgKGRlZmF1bHQ6IDQyKQogCis6Y2xhc3M6YE1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcmAgdXNlcyB0aGUgbmFtZSBvZiB0aGUgdHlwZV8gYXJndW1lbnQgZm9yIGVhY2gKK2FyZ3VtZW50IGFzIHRoZSBkaXNwbGF5IG5hbWUgZm9yIGl0cyB2YWx1ZXMgKHJhdGhlciB0aGFuIHVzaW5nIHRoZSBkZXN0XworYXMgdGhlIHJlZ3VsYXIgZm9ybWF0dGVyIGRvZXMpOjoKKworICAgPj4+IHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgLi4uICAgICBwcm9nPSdQUk9HJywKKyAgIC4uLiAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLk1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcikKKyAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZvbycsIHR5cGU9aW50KQorICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJ2JhcicsIHR5cGU9ZmxvYXQpCisgICA+Pj4gcGFyc2VyLnByaW50X2hlbHAoKQorICAgdXNhZ2U6IFBST0cgWy1oXSBbLS1mb28gaW50XSBmbG9hdAorCisgICBwb3NpdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgZmxvYXQKKworICAgb3B0aW9uYWwgYXJndW1lbnRzOgorICAgICAtaCwgLS1oZWxwICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgIC0tZm9vIGludAorCiAKIGNvbmZsaWN0X2hhbmRsZXIKIF5eXl5eXl5eXl5eXl5eXl4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FycmF5LnJzdCBiL0RvYy9saWJyYXJ5L2FycmF5LnJzdAppbmRleCBkNTYzY2NlLi44ZjY5NDNhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hcnJheS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJyYXkucnN0CkBAIC0xNCwzNiArMTQsNTQgQEAKIDpkZm46YHR5cGUgY29kZWAsIHdoaWNoIGlzIGEgc2luZ2xlIGNoYXJhY3Rlci4gIFRoZSBmb2xsb3dpbmcgdHlwZSBjb2RlcyBhcmUKIGRlZmluZWQ6CiAKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IFR5cGUgY29kZSB8IEMgVHlwZSAgICAgICAgIHwgUHl0aG9uIFR5cGUgICAgICAgfCBNaW5pbXVtIHNpemUgaW4gYnl0ZXMgfAotKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSsKLXwgYGAnYidgYCAgIHwgc2lnbmVkIGNoYXIgICAgfCBpbnQgICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdCJ2BgICAgfCB1bnNpZ25lZCBjaGFyICB8IGludCAgICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ3UnYGAgICB8IFB5X1VOSUNPREUgICAgIHwgVW5pY29kZSBjaGFyYWN0ZXIgfCAyIChzZWUgbm90ZSkgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnaCdgYCAgIHwgc2lnbmVkIHNob3J0ICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdIJ2BgICAgfCB1bnNpZ25lZCBzaG9ydCB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ2knYGAgICB8IHNpZ25lZCBpbnQgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnSSdgYCAgIHwgdW5zaWduZWQgaW50ICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdsJ2BgICAgfCBzaWduZWQgbG9uZyAgICB8IGludCAgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ0wnYGAgICB8IHVuc2lnbmVkIGxvbmcgIHwgaW50ICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnZidgYCAgIHwgZmxvYXQgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdkJ2BgICAgfCBkb3VibGUgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBUeXBlIGNvZGUgfCBDIFR5cGUgICAgICAgICAgICAgfCBQeXRob24gVHlwZSAgICAgICB8IE1pbmltdW0gc2l6ZSBpbiBieXRlcyB8IE5vdGVzIHwKKys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCit8IGBgJ2InYGAgICB8IHNpZ25lZCBjaGFyICAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnQidgYCAgIHwgdW5zaWduZWQgY2hhciAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCd1J2BgICAgfCBQeV9VTklDT0RFICAgICAgICAgfCBVbmljb2RlIGNoYXJhY3RlciB8IDIgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2gnYGAgICB8IHNpZ25lZCBzaG9ydCAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnSCdgYCAgIHwgdW5zaWduZWQgc2hvcnQgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdpJ2BgICAgfCBzaWduZWQgaW50ICAgICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0knYGAgICB8IHVuc2lnbmVkIGludCAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbCdgYCAgIHwgc2lnbmVkIGxvbmcgICAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdMJ2BgICAgfCB1bnNpZ25lZCBsb25nICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3EnYGAgICB8IHNpZ25lZCBsb25nIGxvbmcgICB8IGludCAgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwgXCgyKSAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnUSdgYCAgIHwgdW5zaWduZWQgbG9uZyBsb25nIHwgaW50ICAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgICAgfCBcKDIpICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdmJ2BgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2QnYGAgICB8IGRvdWJsZSAgICAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIAotLi4gbm90ZTo6CitOb3RlczoKIAotICAgVGhlIGBgJ3UnYGAgdHlwZWNvZGUgY29ycmVzcG9uZHMgdG8gUHl0aG9uJ3MgdW5pY29kZSBjaGFyYWN0ZXIuICBPbiBuYXJyb3cKLSAgIFVuaWNvZGUgYnVpbGRzIHRoaXMgaXMgMi1ieXRlcywgb24gd2lkZSBidWlsZHMgdGhpcyBpcyA0LWJ5dGVzLgorKDEpCisgICBUaGUgYGAndSdgYCB0eXBlIGNvZGUgY29ycmVzcG9uZHMgdG8gUHl0aG9uJ3Mgb2Jzb2xldGUgdW5pY29kZSBjaGFyYWN0ZXIKKyAgICg6Yzp0eXBlOmBQeV9VTklDT0RFYCB3aGljaCBpcyA6Yzp0eXBlOmB3Y2hhcl90YCkuIERlcGVuZGluZyBvbiB0aGUKKyAgIHBsYXRmb3JtLCBpdCBjYW4gYmUgMTYgYml0cyBvciAzMiBiaXRzLgorCisgICBgYCd1J2BgIHdpbGwgYmUgcmVtb3ZlZCB0b2dldGhlciB3aXRoIHRoZSByZXN0IG9mIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYAorICAgQVBJLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisKKygyKQorICAgVGhlIGBgJ3EnYGAgYW5kIGBgJ1EnYGAgdHlwZSBjb2RlcyBhcmUgYXZhaWxhYmxlIG9ubHkgaWYKKyAgIHRoZSBwbGF0Zm9ybSBDIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgUHl0aG9uIHN1cHBvcnRzIEMgOmM6dHlwZTpgbG9uZyBsb25nYCwKKyAgIG9yLCBvbiBXaW5kb3dzLCA6Yzp0eXBlOmBfX2ludDY0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIFRoZSBhY3R1YWwgcmVwcmVzZW50YXRpb24gb2YgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG1hY2hpbmUgYXJjaGl0ZWN0dXJlCiAoc3RyaWN0bHkgc3BlYWtpbmcsIGJ5IHRoZSBDIGltcGxlbWVudGF0aW9uKS4gIFRoZSBhY3R1YWwgc2l6ZSBjYW4gYmUgYWNjZXNzZWQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzdC5yc3QgYi9Eb2MvbGlicmFyeS9hc3QucnN0CmluZGV4IGUyYzBiNmQuLjE2ZGUzY2EgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN0LnJzdApAQCAtOTYsOSArOTYsNiBAQAogQWJzdHJhY3QgR3JhbW1hcgogLS0tLS0tLS0tLS0tLS0tLQogCi1UaGUgbW9kdWxlIGRlZmluZXMgYSBzdHJpbmcgY29uc3RhbnQgYGBfX3ZlcnNpb25fX2BgIHdoaWNoIGlzIHRoZSBkZWNpbWFsCi1TdWJ2ZXJzaW9uIHJldmlzaW9uIG51bWJlciBvZiB0aGUgZmlsZSBzaG93biBiZWxvdy4KLQogVGhlIGFic3RyYWN0IGdyYW1tYXIgaXMgY3VycmVudGx5IGRlZmluZWQgYXMgZm9sbG93czoKIAogLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi8uLi9QYXJzZXIvUHl0aG9uLmFzZGwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAppbmRleCA3NWIzY2RhLi41NWM2MWQ3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CkBAIC0xOTcsNiArMTk3LDkgQEAKIG1hcnNoYWxsZWQsIGFmdGVyIHNldHRpbmcgdGhlIGNoYW5uZWwgdGVybWluYXRvciB0byBgYE5vbmVgYCB0byBlbnN1cmUgdGhhdAogYW55IGV4dHJhbmVvdXMgZGF0YSBzZW50IGJ5IHRoZSB3ZWIgY2xpZW50IGFyZSBpZ25vcmVkLiA6OgogCisKKyAgIGltcG9ydCBhc3luY2hhdAorCiAgICBjbGFzcyBodHRwX3JlcXVlc3RfaGFuZGxlcihhc3luY2hhdC5hc3luY19jaGF0KToKIAogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrLCBhZGRyLCBzZXNzaW9ucywgbG9nKToKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdAppbmRleCA2MTliN2JiLi43Y2FjY2ExIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0CkBAIC0xODQsMTIgKzE4NCwxNSBAQAogICAgTW9zdCBvZiB0aGVzZSBhcmUgbmVhcmx5IGlkZW50aWNhbCB0byB0aGVpciBzb2NrZXQgcGFydG5lcnMuCiAKIAotICAgLi4gbWV0aG9kOjogY3JlYXRlX3NvY2tldChmYW1pbHksIHR5cGUpCisgICAuLiBtZXRob2Q6OiBjcmVhdGVfc29ja2V0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgdHlwZT1zb2NrZXQuU09DS19TVFJFQU0pCiAKICAgICAgIFRoaXMgaXMgaWRlbnRpY2FsIHRvIHRoZSBjcmVhdGlvbiBvZiBhIG5vcm1hbCBzb2NrZXQsIGFuZCB3aWxsIHVzZSB0aGUKICAgICAgIHNhbWUgb3B0aW9ucyBmb3IgY3JlYXRpb24uICBSZWZlciB0byB0aGUgOm1vZDpgc29ja2V0YCBkb2N1bWVudGF0aW9uIGZvcgogICAgICAgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgc29ja2V0cy4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgICpmYW1pbHkqIGFuZCAqdHlwZSogYXJndW1lbnRzIGNhbiBiZSBvbWl0dGVkLgorCiAKICAgIC4uIG1ldGhvZDo6IGNvbm5lY3QoYWRkcmVzcykKIApAQCAtMjc0LDEzICsyNzcsMTMgQEAKIEhlcmUgaXMgYSB2ZXJ5IGJhc2ljIEhUVFAgY2xpZW50IHRoYXQgdXNlcyB0aGUgOmNsYXNzOmBkaXNwYXRjaGVyYCBjbGFzcyB0bwogaW1wbGVtZW50IGl0cyBzb2NrZXQgaGFuZGxpbmc6OgogCi0gICBpbXBvcnQgYXN5bmNvcmUsIHNvY2tldAorICAgaW1wb3J0IGFzeW5jb3JlCiAKICAgIGNsYXNzIEhUVFBDbGllbnQoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CiAKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcGF0aCk6CiAgICAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgICAgIHNlbGYuY29ubmVjdCggKGhvc3QsIDgwKSApCiAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gYnl0ZXMoJ0dFVCAlcyBIVFRQLzEuMFxyXG5Ib3N0OiAlc1xyXG5cclxuJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhdGgsIGhvc3QpLCAnYXNjaWknKQpAQCAtMzE0LDcgKzMxNyw2IEBACiBjb25uZWN0aW9ucyBhbmQgZGlzcGF0Y2hlcyB0aGUgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYSBoYW5kbGVyOjoKIAogICAgIGltcG9ydCBhc3luY29yZQotICAgIGltcG9ydCBzb2NrZXQKIAogICAgIGNsYXNzIEVjaG9IYW5kbGVyKGFzeW5jb3JlLmRpc3BhdGNoZXJfd2l0aF9zZW5kKToKIApAQCAtMzI3LDcgKzMyOSw3IEBACiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQpOgogICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQotICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoKQogICAgICAgICAgICAgc2VsZi5zZXRfcmV1c2VfYWRkcigpCiAgICAgICAgICAgICBzZWxmLmJpbmQoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgc2VsZi5saXN0ZW4oNSkKQEAgLTMzOCw0ICszNDAsMyBAQAogCiAgICAgc2VydmVyID0gRWNob1NlcnZlcignbG9jYWxob3N0JywgODA4MCkKICAgICBhc3luY29yZS5sb29wKCkKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXRleGl0LnJzdCBiL0RvYy9saWJyYXJ5L2F0ZXhpdC5yc3QKaW5kZXggN2M3NmJhYi4uMmUyMmNhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXRleGl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9hdGV4aXQucnN0CkBAIC05LDEzICs5LDE0IEBACiAKIFRoZSA6bW9kOmBhdGV4aXRgIG1vZHVsZSBkZWZpbmVzIGZ1bmN0aW9ucyB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBjbGVhbnVwCiBmdW5jdGlvbnMuICBGdW5jdGlvbnMgdGh1cyByZWdpc3RlcmVkIGFyZSBhdXRvbWF0aWNhbGx5IGV4ZWN1dGVkIHVwb24gbm9ybWFsCi1pbnRlcnByZXRlciB0ZXJtaW5hdGlvbi4gIFRoZSBvcmRlciBpbiB3aGljaCB0aGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQgaXMgbm90Ci1kZWZpbmVkOyBpZiB5b3UgaGF2ZSBjbGVhbnVwIG9wZXJhdGlvbnMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciwgeW91IHNob3VsZAotd3JhcCB0aGVtIGluIGEgZnVuY3Rpb24gYW5kIHJlZ2lzdGVyIHRoYXQgb25lLiAgVGhpcyBrZWVwcyA6bW9kOmBhdGV4aXRgIHNpbXBsZS4KK2ludGVycHJldGVyIHRlcm1pbmF0aW9uLiAgOm1vZDpgYXRleGl0YCBydW5zIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgKnJldmVyc2UqCitvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgcmVnaXN0ZXJlZDsgaWYgeW91IHJlZ2lzdGVyIGBgQWBgLCBgYEJgYCwgYW5kIGBgQ2BgLAorYXQgaW50ZXJwcmV0ZXIgdGVybWluYXRpb24gdGltZSB0aGV5IHdpbGwgYmUgcnVuIGluIHRoZSBvcmRlciBgYENgYCwgYGBCYGAsCitgYEFgYC4KIAotTm90ZTogdGhlIGZ1bmN0aW9ucyByZWdpc3RlcmVkIHZpYSB0aGlzIG1vZHVsZSBhcmUgbm90IGNhbGxlZCB3aGVuIHRoZSBwcm9ncmFtCi1pcyBraWxsZWQgYnkgYSBzaWduYWwgbm90IGhhbmRsZWQgYnkgUHl0aG9uLCB3aGVuIGEgUHl0aG9uIGZhdGFsIGludGVybmFsIGVycm9yCi1pcyBkZXRlY3RlZCwgb3Igd2hlbiA6ZnVuYzpgb3MuX2V4aXRgIGlzIGNhbGxlZC4KKyoqTm90ZToqKiBUaGUgZnVuY3Rpb25zIHJlZ2lzdGVyZWQgdmlhIHRoaXMgbW9kdWxlIGFyZSBub3QgY2FsbGVkIHdoZW4gdGhlCitwcm9ncmFtIGlzIGtpbGxlZCBieSBhIHNpZ25hbCBub3QgaGFuZGxlZCBieSBQeXRob24sIHdoZW4gYSBQeXRob24gZmF0YWwKK2ludGVybmFsIGVycm9yIGlzIGRldGVjdGVkLCBvciB3aGVuIDpmdW5jOmBvcy5fZXhpdGAgaXMgY2FsbGVkLgogCiAKIC4uIGZ1bmN0aW9uOjogcmVnaXN0ZXIoZnVuYywgKmFyZ3MsICoqa2FyZ3MpCkBAIC02Nyw4ICs2OCw5IEBACiBtYWtpbmcgYW4gZXhwbGljaXQgY2FsbCBpbnRvIHRoaXMgbW9kdWxlIGF0IHRlcm1pbmF0aW9uLiA6OgogCiAgICB0cnk6Ci0gICAgICAgX2NvdW50ID0gaW50KG9wZW4oIi90bXAvY291bnRlciIpLnJlYWQoKSkKLSAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgIHdpdGggb3BlbigiL3RtcC9jb3VudGVyIikgYXMgaW5maWxlOgorICAgICAgICAgICBfY291bnQgPSBpbnQoaW5maWxlLnJlYWQoKSkKKyAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICBfY291bnQgPSAwCiAKICAgIGRlZiBpbmNyY291bnRlcihuKToKQEAgLTc2LDcgKzc4LDggQEAKICAgICAgICBfY291bnQgPSBfY291bnQgKyBuCiAKICAgIGRlZiBzYXZlY291bnRlcigpOgotICAgICAgIG9wZW4oIi90bXAvY291bnRlciIsICJ3Iikud3JpdGUoIiVkIiAlIF9jb3VudCkKKyAgICAgICB3aXRoIG9wZW4oIi90bXAvY291bnRlciIsICJ3IikgYXMgb3V0ZmlsZToKKyAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgiJWQiICUgX2NvdW50KQogCiAgICBpbXBvcnQgYXRleGl0CiAgICBhdGV4aXQucmVnaXN0ZXIoc2F2ZWNvdW50ZXIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iYXNlNjQucnN0IGIvRG9jL2xpYnJhcnkvYmFzZTY0LnJzdAppbmRleCBjMDhkZjE1Li5hZGUwZjA3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iYXNlNjQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Jhc2U2NC5yc3QKQEAgLTE4LDkgKzE4LDE0IEBACiAKIFRoZXJlIGFyZSB0d28gaW50ZXJmYWNlcyBwcm92aWRlZCBieSB0aGlzIG1vZHVsZS4gIFRoZSBtb2Rlcm4gaW50ZXJmYWNlCiBzdXBwb3J0cyBlbmNvZGluZyBhbmQgZGVjb2RpbmcgQVNDSUkgYnl0ZSBzdHJpbmcgb2JqZWN0cyB1c2luZyBhbGwgdGhyZWUKLWFscGhhYmV0cy4gIFRoZSBsZWdhY3kgaW50ZXJmYWNlIHByb3ZpZGVzIGZvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgdG8gYW5kIGZyb20KLWZpbGUtbGlrZSBvYmplY3RzIGFzIHdlbGwgYXMgYnl0ZSBzdHJpbmdzLCBidXQgb25seSB1c2luZyB0aGUgQmFzZTY0IHN0YW5kYXJkCi1hbHBoYWJldC4KK2FscGhhYmV0cy4gQWRkaXRpb25hbGx5LCB0aGUgZGVjb2RpbmcgZnVuY3Rpb25zIG9mIHRoZSBtb2Rlcm4gaW50ZXJmYWNlIGFsc28KK2FjY2VwdCBVbmljb2RlIHN0cmluZ3MgY29udGFpbmluZyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuIFRoZSBsZWdhY3kgaW50ZXJmYWNlCitwcm92aWRlcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRvIGFuZCBmcm9tIGZpbGUtbGlrZSBvYmplY3RzIGFzIHdlbGwgYXMKK2J5dGUgc3RyaW5ncywgYnV0IG9ubHkgdXNpbmcgdGhlIEJhc2U2NCBzdGFuZGFyZCBhbHBoYWJldC4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEFTQ0lJLW9ubHkgVW5pY29kZSBzdHJpbmdzIGFyZSBub3cgYWNjZXB0ZWQgYnkgdGhlIGRlY29kaW5nIGZ1bmN0aW9ucyBvZgorICAgdGhlIG1vZGVybiBpbnRlcmZhY2UuCiAKIFRoZSBtb2Rlcm4gaW50ZXJmYWNlIHByb3ZpZGVzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iaW5hcnkucnN0IGIvRG9jL2xpYnJhcnkvYmluYXJ5LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWZiZGMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvYmluYXJ5LnJzdApAQCAtMCwwICsxLDIzIEBACisuLiBfYmluYXJ5c2VydmljZXM6CisKKyoqKioqKioqKioqKioqKioqKioqCitCaW5hcnkgRGF0YSBTZXJ2aWNlcworKioqKioqKioqKioqKioqKioqKioKKworVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIHNvbWUgYmFzaWMgc2VydmljZXMgb3BlcmF0aW9ucworZm9yIG1hbmlwdWxhdGlvbiBvZiBiaW5hcnkgZGF0YS4gT3RoZXIgb3BlcmF0aW9ucyBvbiBiaW5hcnkgZGF0YSwgc3BlY2lmaWNhbGx5CitpbiByZWxhdGlvbiB0byBmaWxlIGZvcm1hdHMgYW5kIG5ldHdvcmsgcHJvdG9jb2xzLCBhcmUgZGVzY3JpYmVkIGluIHRoZQorcmVsZXZhbnQgc2VjdGlvbnMuCisKK1NvbWUgbGlicmFyaWVzIGRlc2NyaWJlZCB1bmRlciA6cmVmOmB0ZXh0c2VydmljZXNgIGFsc28gd29yayB3aXRoIGVpdGhlcgorQVNDSUktY29tcGF0aWJsZSBiaW5hcnkgZm9ybWF0cyAoZm9yIGV4YW1wbGUsIDptb2Q6YHJlYCkgb3IgYWxsIGJpbmFyeSBkYXRhCisoZm9yIGV4YW1wbGUsIDptb2Q6YGRpZmZsaWJgKS4KKworSW4gYWRkaXRpb24sIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uJ3MgYnVpbHQtaW4gYmluYXJ5IGRhdGEgdHlwZXMgaW4KKzpyZWY6YGJpbmFyeXNlcWAuCisKKy4uIHRvY3RyZWU6OgorCisgICBzdHJ1Y3QucnN0CisgICBjb2RlY3MucnN0CisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdCBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdAppbmRleCAyYWEzNzAyLi5iYWY0MzBkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CkBAIC0yMCw4ICsyMCwxMyBAQAogCiAuLiBub3RlOjoKIAotICAgRW5jb2RpbmcgYW5kIGRlY29kaW5nIGZ1bmN0aW9ucyBkbyBub3QgYWNjZXB0IFVuaWNvZGUgc3RyaW5ncy4gIE9ubHkgYnl0ZXN0cmluZwotICAgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGNhbiBiZSBwcm9jZXNzZWQuCisgICBgYGEyYl8qYGAgZnVuY3Rpb25zIGFjY2VwdCBVbmljb2RlIHN0cmluZ3MgY29udGFpbmluZyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuCisgICBPdGhlciBmdW5jdGlvbnMgb25seSBhY2NlcHQgYnl0ZXMgYW5kIGJ5dGVzLWNvbXBhdGlibGUgb2JqZWN0cyAoc3VjaCBhcworICAgYnl0ZWFycmF5IG9iamVjdHMgYW5kIG90aGVyIG9iamVjdHMgaW1wbGVtZW50aW5nIHRoZSBidWZmZXIgQVBJKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFTQ0lJLW9ubHkgdW5pY29kZSBzdHJpbmdzIGFyZSBub3cgYWNjZXB0ZWQgYnkgdGhlIGBgYTJiXypgYCBmdW5jdGlvbnMuCisKIAogVGhlIDptb2Q6YGJpbmFzY2lpYCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYnoyLnJzdCBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKaW5kZXggOTMxNDRiNi4uZDA2YTM5YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYnoyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9iejIucnN0CkBAIC0xLDIwMSArMSwyMDIgQEAKLTptb2Q6YGJ6MmAgLS0tIENvbXByZXNzaW9uIGNvbXBhdGlibGUgd2l0aCA6cHJvZ3JhbTpgYnppcDJgCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOm1vZDpgYnoyYCAtLS0gU3VwcG9ydCBmb3IgOnByb2dyYW06YGJ6aXAyYCBjb21wcmVzc2lvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBtb2R1bGU6OiBiejIKLSAgIDpzeW5vcHNpczogSW50ZXJmYWNlIHRvIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIHJvdXRpbmVzCi0gICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCBiemlwMi4KKyAgIDpzeW5vcHNpczogSW50ZXJmYWNlcyBmb3IgYnppcDIgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24uCiAuLiBtb2R1bGVhdXRob3I6OiBHdXN0YXZvIE5pZW1leWVyIDxuaWVtZXllckBjb25lY3RpdmEuY29tPgorLi4gbW9kdWxlYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IEd1c3Rhdm8gTmllbWV5ZXIgPG5pZW1leWVyQGNvbmVjdGl2YS5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgogCiAKLVRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSBpbnRlcmZhY2UgZm9yIHRoZSBiejIgY29tcHJlc3Npb24gbGlicmFyeS4KLUl0IGltcGxlbWVudHMgYSBjb21wbGV0ZSBmaWxlIGludGVyZmFjZSwgb25lLXNob3QgKGRlKWNvbXByZXNzaW9uIGZ1bmN0aW9ucywgYW5kCi10eXBlcyBmb3Igc2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24uCitUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgaW50ZXJmYWNlIGZvciBjb21wcmVzc2luZyBhbmQKK2RlY29tcHJlc3NpbmcgZGF0YSB1c2luZyB0aGUgYnppcDIgY29tcHJlc3Npb24gYWxnb3JpdGhtLgogCi1IZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGUgZmVhdHVyZXMgb2ZmZXJlZCBieSB0aGUgYnoyIG1vZHVsZToKK1RoZSA6bW9kOmBiejJgIG1vZHVsZSBjb250YWluczoKIAotKiA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzIGltcGxlbWVudHMgYSBjb21wbGV0ZSBmaWxlIGludGVyZmFjZSwgaW5jbHVkaW5nCi0gIDptZXRoOmB+QloyRmlsZS5yZWFkbGluZWAsIDptZXRoOmB+QloyRmlsZS5yZWFkbGluZXNgLAotICA6bWV0aDpgfkJaMkZpbGUud3JpdGVsaW5lc2AsIDptZXRoOmB+QloyRmlsZS5zZWVrYCwgZXRjOworKiBUaGUgOmZ1bmM6YC5vcGVuYCBmdW5jdGlvbiBhbmQgOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBmb3IgcmVhZGluZyBhbmQKKyAgd3JpdGluZyBjb21wcmVzc2VkIGZpbGVzLgorKiBUaGUgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgIGNsYXNzZXMgZm9yCisgIGluY3JlbWVudGFsIChkZSljb21wcmVzc2lvbi4KKyogVGhlIDpmdW5jOmBjb21wcmVzc2AgYW5kIDpmdW5jOmBkZWNvbXByZXNzYCBmdW5jdGlvbnMgZm9yIG9uZS1zaG90CisgIChkZSljb21wcmVzc2lvbi4KIAotKiA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzIGltcGxlbWVudHMgZW11bGF0ZWQgOm1ldGg6YH5CWjJGaWxlLnNlZWtgIHN1cHBvcnQ7Ci0KLSogOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBpbXBsZW1lbnRzIHVuaXZlcnNhbCBuZXdsaW5lIHN1cHBvcnQ7Ci0KLSogOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBvZmZlcnMgYW4gb3B0aW1pemVkIGxpbmUgaXRlcmF0aW9uIHVzaW5nIGEgcmVhZGFoZWFkCi0gIGFsZ29yaXRobTsKLQotKiBTZXF1ZW50aWFsIChkZSljb21wcmVzc2lvbiBzdXBwb3J0ZWQgYnkgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQKLSAgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgIGNsYXNzZXM7Ci0KLSogT25lLXNob3QgKGRlKWNvbXByZXNzaW9uIHN1cHBvcnRlZCBieSA6ZnVuYzpgY29tcHJlc3NgIGFuZCA6ZnVuYzpgZGVjb21wcmVzc2AKLSAgZnVuY3Rpb25zOwotCi0qIFRocmVhZCBzYWZldHkgdXNlcyBpbmRpdmlkdWFsIGxvY2tpbmcgbWVjaGFuaXNtLgorQWxsIG9mIHRoZSBjbGFzc2VzIGluIHRoaXMgbW9kdWxlIG1heSBzYWZlbHkgYmUgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgogCiAKIChEZSljb21wcmVzc2lvbiBvZiBmaWxlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhhbmRsaW5nIG9mIGNvbXByZXNzZWQgZmlsZXMgaXMgb2ZmZXJlZCBieSB0aGUgOmNsYXNzOmBCWjJGaWxlYCBjbGFzcy4KKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlbmFtZSwgbW9kZT0ncicsIGNvbXByZXNzbGV2ZWw9OSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSkKKworICAgT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLCByZXR1cm5pbmcgYSA6dGVybTpgZmlsZQorICAgb2JqZWN0YC4KKworICAgQXMgd2l0aCB0aGUgY29uc3RydWN0b3IgZm9yIDpjbGFzczpgQloyRmlsZWAsIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IGNhbiBiZQorICAgYW4gYWN0dWFsIGZpbGVuYW1lIChhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBvciBhbiBleGlzdGluZworICAgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2YgYGAncidgYCwgYGAncmInYGAsIGBgJ3cnYGAsIGBgJ3diJ2BgLAorICAgYGAnYSdgYCwgb3IgYGAnYWInYGAgZm9yIGJpbmFyeSBtb2RlLCBvciBgYCdydCdgYCwgYGAnd3QnYGAsIG9yIGBgJ2F0J2BgIGZvcgorICAgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBpcyBgYCdyYidgYC4KKworICAgVGhlICpjb21wcmVzc2xldmVsKiBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGZyb20gMSB0byA5LCBhcyBmb3IgdGhlCisgICA6Y2xhc3M6YEJaMkZpbGVgIGNvbnN0cnVjdG9yLgorCisgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgOmNsYXNzOmBCWjJGaWxlYAorICAgY29uc3RydWN0b3I6IGBgQloyRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbD1jb21wcmVzc2xldmVsKWBgLiBJbgorICAgdGhpcyBjYXNlLCB0aGUgKmVuY29kaW5nKiwgKmVycm9ycyogYW5kICpuZXdsaW5lKiBhcmd1bWVudHMgbXVzdCBub3QgYmUKKyAgIHByb3ZpZGVkLgorCisgICBGb3IgdGV4dCBtb2RlLCBhIDpjbGFzczpgQloyRmlsZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IKKyAgIGhhbmRsaW5nIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGluZGV4OjoKLSAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBiejIuQloyRmlsZSBjbGFzcworLi4gY2xhc3M6OiBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlPSdyJywgYnVmZmVyaW5nPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSkKIAotLi4gY2xhc3M6OiBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlPSdyJywgYnVmZmVyaW5nPTAsIGNvbXByZXNzbGV2ZWw9OSkKKyAgIE9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG1vZGUuCiAKLSAgIE9wZW4gYSBiejIgZmlsZS4gTW9kZSBjYW4gYmUgZWl0aGVyIGBgJ3InYGAgb3IgYGAndydgYCwgZm9yIHJlYWRpbmcgKGRlZmF1bHQpCi0gICBvciB3cml0aW5nLiBXaGVuIG9wZW5lZCBmb3Igd3JpdGluZywgdGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QKLSAgIGV4aXN0LCBhbmQgdHJ1bmNhdGVkIG90aGVyd2lzZS4gSWYgKmJ1ZmZlcmluZyogaXMgZ2l2ZW4sIGBgMGBgIG1lYW5zCi0gICB1bmJ1ZmZlcmVkLCBhbmQgbGFyZ2VyIG51bWJlcnMgc3BlY2lmeSB0aGUgYnVmZmVyIHNpemU7IHRoZSBkZWZhdWx0IGlzCi0gICBgYDBgYC4gSWYgKmNvbXByZXNzbGV2ZWwqIGlzIGdpdmVuLCBpdCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kCi0gICBgYDlgYDsgdGhlIGRlZmF1bHQgaXMgYGA5YGAuIEFkZCBhIGBgJ1UnYGAgdG8gbW9kZSB0byBvcGVuIHRoZSBmaWxlIGZvciBpbnB1dAotICAgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AgbW9kZS4gIEFueSBsaW5lIGVuZGluZyBpbiB0aGUgaW5wdXQgZmlsZSB3aWxsIGJlCi0gICBzZWVuIGFzIGEgYGAnXG4nYGAgaW4gUHl0aG9uLiAgQWxzbywgYSBmaWxlIHNvIG9wZW5lZCBnYWlucyB0aGUgYXR0cmlidXRlCi0gICA6YXR0cjpgbmV3bGluZXNgOyB0aGUgdmFsdWUgZm9yIHRoaXMgYXR0cmlidXRlIGlzIG9uZSBvZiBgYE5vbmVgYCAobm8gbmV3bGluZQotICAgcmVhZCB5ZXQpLCBgYCdccidgYCwgYGAnXG4nYGAsIGBgJ1xyXG4nYGAgb3IgYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUKLSAgIG5ld2xpbmUgdHlwZXMgc2Vlbi4gVW5pdmVyc2FsIG5ld2xpbmVzIGFyZSBhdmFpbGFibGUgb25seSB3aGVuCi0gICByZWFkaW5nLiBJbnN0YW5jZXMgc3VwcG9ydCBpdGVyYXRpb24gaW4gdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCA6Y2xhc3M6YGZpbGVgCi0gICBpbnN0YW5jZXMuCisgICBJZiAqZmlsZW5hbWUqIGlzIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCwgb3BlbiB0aGUgbmFtZWQgZmlsZQorICAgZGlyZWN0bHkuIE90aGVyd2lzZSwgKmZpbGVuYW1lKiBzaG91bGQgYmUgYSA6dGVybTpgZmlsZSBvYmplY3RgLCB3aGljaCB3aWxsCisgICBiZSB1c2VkIHRvIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KIAotICAgOmNsYXNzOmBCWjJGaWxlYCBzdXBwb3J0cyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBgYCdyJ2BgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgYGAndydgYCBmb3IKKyAgIG92ZXJ3cml0aW5nLCBvciBgYCdhJ2BgIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMKKyAgIGBgJ3JiJ2BgLCBgYCd3YidgYCwgYW5kIGBgJ2FiJ2BgIHJlc3BlY3RpdmVseS4KKworICAgSWYgKmZpbGVuYW1lKiBpcyBhIGZpbGUgb2JqZWN0IChyYXRoZXIgdGhhbiBhbiBhY3R1YWwgZmlsZSBuYW1lKSwgYSBtb2RlIG9mCisgICBgYCd3J2BgIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlLCBhbmQgaXMgaW5zdGVhZCBlcXVpdmFsZW50IHRvIGBgJ2EnYGAuCisKKyAgIFRoZSAqYnVmZmVyaW5nKiBhcmd1bWVudCBpcyBpZ25vcmVkLiBJdHMgdXNlIGlzIGRlcHJlY2F0ZWQuCisKKyAgIElmICptb2RlKiBpcyBgYCd3J2BgIG9yIGBgJ2EnYGAsICpjb21wcmVzc2xldmVsKiBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbgorICAgYGAxYGAgYW5kIGBgOWBgIHNwZWNpZnlpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOiBgYDFgYCBwcm9kdWNlcyB0aGUKKyAgIGxlYXN0IGNvbXByZXNzaW9uLCBhbmQgYGA5YGAgKGRlZmF1bHQpIHByb2R1Y2VzIHRoZSBtb3N0IGNvbXByZXNzaW9uLgorCisgICBJZiAqbW9kZSogaXMgYGAncidgYCwgdGhlIGlucHV0IGZpbGUgbWF5IGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mIG11bHRpcGxlCisgICBjb21wcmVzc2VkIHN0cmVhbXMuCisKKyAgIDpjbGFzczpgQloyRmlsZWAgcHJvdmlkZXMgYWxsIG9mIHRoZSBtZW1iZXJzIHNwZWNpZmllZCBieSB0aGUKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgLCBleGNlcHQgZm9yIDptZXRoOmBkZXRhY2hgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgLgorICAgSXRlcmF0aW9uIGFuZCB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcmUgc3VwcG9ydGVkLgorCisgICA6Y2xhc3M6YEJaMkZpbGVgIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2Q6CisKKyAgIC4uIG1ldGhvZDo6IHBlZWsoW25dKQorCisgICAgICBSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4gQXQgbGVhc3Qgb25lCisgICAgICBieXRlIG9mIGRhdGEgd2lsbCBiZSByZXR1cm5lZCAodW5sZXNzIGF0IEVPRikuIFRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMKKyAgICAgIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSA6bWV0aDpgZmlsZW5vYCwgOm1ldGg6YHJlYWRhYmxlYCwgOm1ldGg6YHNlZWthYmxlYCwgOm1ldGg6YHdyaXRhYmxlYCwKKyAgICAgIDptZXRoOmByZWFkMWAgYW5kIDptZXRoOmByZWFkaW50b2AgbWV0aG9kcyB3ZXJlIGFkZGVkLgogCi0gICAuLiBub3RlOjoKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IHdhcyBhZGRlZCBmb3IgKmZpbGVuYW1lKiBiZWluZyBhIDp0ZXJtOmBmaWxlIG9iamVjdGAgaW5zdGVhZCBvZiBhbgorICAgICAgYWN0dWFsIGZpbGVuYW1lLgogCi0gICAgICBUaGlzIGNsYXNzIGRvZXMgbm90IHN1cHBvcnQgaW5wdXQgZmlsZXMgY29udGFpbmluZyBtdWx0aXBsZSBzdHJlYW1zIChzdWNoCi0gICAgICBhcyB0aG9zZSBwcm9kdWNlZCBieSB0aGUgOnByb2dyYW06YHBiemlwMmAgdG9vbCkuIFdoZW4gcmVhZGluZyBzdWNoIGFuCi0gICAgICBpbnB1dCBmaWxlLCBvbmx5IHRoZSBmaXJzdCBzdHJlYW0gd2lsbCBiZSBhY2Nlc3NpYmxlLiBJZiB5b3UgcmVxdWlyZQotICAgICAgc3VwcG9ydCBmb3IgbXVsdGktc3RyZWFtIGZpbGVzLCBjb25zaWRlciB1c2luZyB0aGUgdGhpcmQtcGFydHkKLSAgICAgIDptb2Q6YGJ6MmZpbGVgIG1vZHVsZSAoYXZhaWxhYmxlIGZyb20KLSAgICAgIGBQeVBJIDxodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYnoyZmlsZT5gXykuIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEKLSAgICAgIGJhY2twb3J0IG9mIFB5dGhvbiAzLjMncyA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzLCB3aGljaCBkb2VzIHN1cHBvcnQKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgYGAnYSdgYCAoYXBwZW5kKSBtb2RlIHdhcyBhZGRlZCwgYWxvbmcgd2l0aCBzdXBwb3J0IGZvciByZWFkaW5nCiAgICAgICBtdWx0aS1zdHJlYW0gZmlsZXMuCiAKIAotICAgLi4gbWV0aG9kOjogY2xvc2UoKQotCi0gICAgICBDbG9zZSB0aGUgZmlsZS4gU2V0cyBkYXRhIGF0dHJpYnV0ZSA6YXR0cjpgY2xvc2VkYCB0byB0cnVlLiBBIGNsb3NlZCBmaWxlCi0gICAgICBjYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gOm1ldGg6YGNsb3NlYCBtYXkgYmUgY2FsbGVkCi0gICAgICBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLgotCi0KLSAgIC4uIG1ldGhvZDo6IHJlYWQoW3NpemVdKQotCi0gICAgICBSZWFkIGF0IG1vc3QgKnNpemUqIHVuY29tcHJlc3NlZCBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlIHN0cmluZy4gSWYgdGhlCi0gICAgICAqc2l6ZSogYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KLQotCi0gICAuLiBtZXRob2Q6OiByZWFkbGluZShbc2l6ZV0pCi0KLSAgICAgIFJldHVybiB0aGUgbmV4dCBsaW5lIGZyb20gdGhlIGZpbGUsIGFzIGEgYnl0ZSBzdHJpbmcsIHJldGFpbmluZyBuZXdsaW5lLgotICAgICAgQSBub24tbmVnYXRpdmUgKnNpemUqIGFyZ3VtZW50IGxpbWl0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8KLSAgICAgIHJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS4gUmV0dXJuIGFuIGVtcHR5IGJ5dGUKLSAgICAgIHN0cmluZyBhdCBFT0YuCi0KLQotICAgLi4gbWV0aG9kOjogcmVhZGxpbmVzKFtzaXplXSkKLQotICAgICAgUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyByZWFkLiBUaGUgb3B0aW9uYWwgKnNpemUqIGFyZ3VtZW50LCBpZiBnaXZlbiwgaXMgYW4KLSAgICAgIGFwcHJveGltYXRlIGJvdW5kIG9uIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLgotCi0KLSAgIC4uIG1ldGhvZDo6IHNlZWsob2Zmc2V0Wywgd2hlbmNlXSkKLQotICAgICAgTW92ZSB0byBuZXcgZmlsZSBwb3NpdGlvbi4gQXJndW1lbnQgKm9mZnNldCogaXMgYSBieXRlIGNvdW50LiBPcHRpb25hbAotICAgICAgYXJndW1lbnQgKndoZW5jZSogZGVmYXVsdHMgdG8gYGBvcy5TRUVLX1NFVGBgIG9yIGBgMGBgIChvZmZzZXQgZnJvbSBzdGFydAotICAgICAgb2YgZmlsZTsgb2Zmc2V0IHNob3VsZCBiZSBgYD49IDBgYCk7IG90aGVyIHZhbHVlcyBhcmUgYGBvcy5TRUVLX0NVUmBgIG9yCi0gICAgICBgYDFgYCAobW92ZSByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uOyBvZmZzZXQgY2FuIGJlIHBvc2l0aXZlIG9yCi0gICAgICBuZWdhdGl2ZSksIGFuZCBgYG9zLlNFRUtfRU5EYGAgb3IgYGAyYGAgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGU7Ci0gICAgICBvZmZzZXQgaXMgdXN1YWxseSBuZWdhdGl2ZSwgYWx0aG91Z2ggbWFueSBwbGF0Zm9ybXMgYWxsb3cgc2Vla2luZyBiZXlvbmQKLSAgICAgIHRoZSBlbmQgb2YgYSBmaWxlKS4KLQotICAgICAgTm90ZSB0aGF0IHNlZWtpbmcgb2YgYnoyIGZpbGVzIGlzIGVtdWxhdGVkLCBhbmQgZGVwZW5kaW5nIG9uIHRoZQotICAgICAgcGFyYW1ldGVycyB0aGUgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy4KLQotCi0gICAuLiBtZXRob2Q6OiB0ZWxsKCkKLQotICAgICAgUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXIuCi0KLQotICAgLi4gbWV0aG9kOjogd3JpdGUoZGF0YSkKLQotICAgICAgV3JpdGUgdGhlIGJ5dGUgc3RyaW5nICpkYXRhKiB0byBmaWxlLiBOb3RlIHRoYXQgZHVlIHRvIGJ1ZmZlcmluZywKLSAgICAgIDptZXRoOmBjbG9zZWAgbWF5IGJlIG5lZWRlZCBiZWZvcmUgdGhlIGZpbGUgb24gZGlzayByZWZsZWN0cyB0aGUgZGF0YQotICAgICAgd3JpdHRlbi4KLQotCi0gICAuLiBtZXRob2Q6OiB3cml0ZWxpbmVzKHNlcXVlbmNlX29mX2J5dGVfc3RyaW5ncykKLQotICAgICAgV3JpdGUgdGhlIHNlcXVlbmNlIG9mIGJ5dGUgc3RyaW5ncyB0byB0aGUgZmlsZS4gTm90ZSB0aGF0IG5ld2xpbmVzIGFyZSBub3QKLSAgICAgIGFkZGVkLiBUaGUgc2VxdWVuY2UgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QgcHJvZHVjaW5nIGJ5dGUgc3RyaW5ncy4KLSAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIHdyaXRlKCkgZm9yIGVhY2ggYnl0ZSBzdHJpbmcuCi0KLQotU2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVNlcXVlbnRpYWwgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gaXMgZG9uZSB1c2luZyB0aGUgY2xhc3NlcwotOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgLgotCitJbmNyZW1lbnRhbCAoZGUpY29tcHJlc3Npb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBjbGFzczo6IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbD05KQogCiAgICBDcmVhdGUgYSBuZXcgY29tcHJlc3NvciBvYmplY3QuIFRoaXMgb2JqZWN0IG1heSBiZSB1c2VkIHRvIGNvbXByZXNzIGRhdGEKLSAgIHNlcXVlbnRpYWxseS4gSWYgeW91IHdhbnQgdG8gY29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdCwgdXNlIHRoZQotICAgOmZ1bmM6YGNvbXByZXNzYCBmdW5jdGlvbiBpbnN0ZWFkLiBUaGUgKmNvbXByZXNzbGV2ZWwqIHBhcmFtZXRlciwgaWYgZ2l2ZW4sCi0gICBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgOyB0aGUgZGVmYXVsdCBpcyBgYDlgYC4KKyAgIGluY3JlbWVudGFsbHkuIEZvciBvbmUtc2hvdCBjb21wcmVzc2lvbiwgdXNlIHRoZSA6ZnVuYzpgY29tcHJlc3NgIGZ1bmN0aW9uCisgICBpbnN0ZWFkLgorCisgICAqY29tcHJlc3NsZXZlbCosIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgLiBUaGUKKyAgIGRlZmF1bHQgaXMgYGA5YGAuCiAKICAgIC4uIG1ldGhvZDo6IGNvbXByZXNzKGRhdGEpCiAKLSAgICAgIFByb3ZpZGUgbW9yZSBkYXRhIHRvIHRoZSBjb21wcmVzc29yIG9iamVjdC4gSXQgd2lsbCByZXR1cm4gY2h1bmtzIG9mCi0gICAgICBjb21wcmVzc2VkIGRhdGEgd2hlbmV2ZXIgcG9zc2libGUuIFdoZW4geW91J3ZlIGZpbmlzaGVkIHByb3ZpZGluZyBkYXRhIHRvCi0gICAgICBjb21wcmVzcywgY2FsbCB0aGUgOm1ldGg6YGZsdXNoYCBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLAotICAgICAgYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gaW50ZXJuYWwgYnVmZmVycy4KKyAgICAgIFByb3ZpZGUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZiBjb21wcmVzc2VkIGRhdGEKKyAgICAgIGlmIHBvc3NpYmxlLCBvciBhbiBlbXB0eSBieXRlIHN0cmluZyBvdGhlcndpc2UuCisKKyAgICAgIFdoZW4geW91IGhhdmUgZmluaXNoZWQgcHJvdmlkaW5nIGRhdGEgdG8gdGhlIGNvbXByZXNzb3IsIGNhbGwgdGhlCisgICAgICA6bWV0aDpgZmx1c2hgIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuCiAKIAogICAgLi4gbWV0aG9kOjogZmx1c2goKQogCi0gICAgICBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MgYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gaW50ZXJuYWwKLSAgICAgIGJ1ZmZlcnMuIFlvdSBtdXN0IG5vdCB1c2UgdGhlIGNvbXByZXNzb3Igb2JqZWN0IGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuCisgICAgICBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuIFJldHVybnMgdGhlIGNvbXByZXNzZWQgZGF0YSBsZWZ0IGluCisgICAgICBpbnRlcm5hbCBidWZmZXJzLgorCisgICAgICBUaGUgY29tcHJlc3NvciBvYmplY3QgbWF5IG5vdCBiZSB1c2VkIGFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KIAogCiAuLiBjbGFzczo6IEJaMkRlY29tcHJlc3NvcigpCiAKICAgIENyZWF0ZSBhIG5ldyBkZWNvbXByZXNzb3Igb2JqZWN0LiBUaGlzIG9iamVjdCBtYXkgYmUgdXNlZCB0byBkZWNvbXByZXNzIGRhdGEKLSAgIHNlcXVlbnRpYWxseS4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LCB1c2UgdGhlCi0gICA6ZnVuYzpgZGVjb21wcmVzc2AgZnVuY3Rpb24gaW5zdGVhZC4KKyAgIGluY3JlbWVudGFsbHkuIEZvciBvbmUtc2hvdCBjb21wcmVzc2lvbiwgdXNlIHRoZSA6ZnVuYzpgZGVjb21wcmVzc2AgZnVuY3Rpb24KKyAgIGluc3RlYWQuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBjbGFzcyBkb2VzIG5vdCB0cmFuc3BhcmVudGx5IGhhbmRsZSBpbnB1dHMgY29udGFpbmluZyBtdWx0aXBsZQorICAgICAgY29tcHJlc3NlZCBzdHJlYW1zLCB1bmxpa2UgOmZ1bmM6YGRlY29tcHJlc3NgIGFuZCA6Y2xhc3M6YEJaMkZpbGVgLiBJZgorICAgICAgeW91IG5lZWQgdG8gZGVjb21wcmVzcyBhIG11bHRpLXN0cmVhbSBpbnB1dCB3aXRoIDpjbGFzczpgQloyRGVjb21wcmVzc29yYCwKKyAgICAgIHlvdSBtdXN0IHVzZSBhIG5ldyBkZWNvbXByZXNzb3IgZm9yIGVhY2ggc3RyZWFtLgogCiAgICAuLiBtZXRob2Q6OiBkZWNvbXByZXNzKGRhdGEpCiAKLSAgICAgIFByb3ZpZGUgbW9yZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBJdCB3aWxsIHJldHVybiBjaHVua3Mgb2YKLSAgICAgIGRlY29tcHJlc3NlZCBkYXRhIHdoZW5ldmVyIHBvc3NpYmxlLiBJZiB5b3UgdHJ5IHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlcgotICAgICAgdGhlIGVuZCBvZiBzdHJlYW0gaXMgZm91bmQsIDpleGM6YEVPRkVycm9yYCB3aWxsIGJlIHJhaXNlZC4gSWYgYW55IGRhdGEKLSAgICAgIHdhcyBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSwgaXQnbGwgYmUgaWdub3JlZCBhbmQgc2F2ZWQgaW4KLSAgICAgIDphdHRyOmB1bnVzZWRfZGF0YWAgYXR0cmlidXRlLgorICAgICAgUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2YgZGVjb21wcmVzc2VkCisgICAgICBkYXRhIGlmIHBvc3NpYmxlLCBvciBhbiBlbXB0eSBieXRlIHN0cmluZyBvdGhlcndpc2UuCisKKyAgICAgIEF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3RyZWFtIGlzCisgICAgICByZWFjaGVkIHJhaXNlcyBhbiA6ZXhjOmBFT0ZFcnJvcmAuIElmIGFueSBkYXRhIGlzIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YKKyAgICAgIHRoZSBzdHJlYW0sIGl0IGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSA6YXR0cjpgdW51c2VkX2RhdGFgIGF0dHJpYnV0ZS4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBlb2YKKworICAgICAgVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworICAgLi4gYXR0cmlidXRlOjogdW51c2VkX2RhdGEKKworICAgICAgRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4KKworICAgICAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBoYXMgYmVlbgorICAgICAgcmVhY2hlZCwgaXRzIHZhbHVlIHdpbGwgYmUgYGBiJydgYC4KIAogCiBPbmUtc2hvdCAoZGUpY29tcHJlc3Npb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1PbmUtc2hvdCBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBpcyBwcm92aWRlZCB0aHJvdWdoIHRoZSA6ZnVuYzpgY29tcHJlc3NgCi1hbmQgOmZ1bmM6YGRlY29tcHJlc3NgIGZ1bmN0aW9ucy4KLQotCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSkKIAotICAgQ29tcHJlc3MgKmRhdGEqIGluIG9uZSBzaG90LiBJZiB5b3Ugd2FudCB0byBjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSwgdXNlCi0gICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YEJaMkNvbXByZXNzb3JgIGluc3RlYWQuIFRoZSAqY29tcHJlc3NsZXZlbCogcGFyYW1ldGVyLAotICAgaWYgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBgYDFgYCBhbmQgYGA5YGA7IHRoZSBkZWZhdWx0IGlzIGBgOWBgLgorICAgQ29tcHJlc3MgKmRhdGEqLgorCisgICAqY29tcHJlc3NsZXZlbCosIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgLiBUaGUKKyAgIGRlZmF1bHQgaXMgYGA5YGAuCisKKyAgIEZvciBpbmNyZW1lbnRhbCBjb21wcmVzc2lvbiwgdXNlIGEgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBpbnN0ZWFkLgogCiAKIC4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhKQogCi0gICBEZWNvbXByZXNzICpkYXRhKiBpbiBvbmUgc2hvdC4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSwKLSAgIHVzZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAgaW5zdGVhZC4KKyAgIERlY29tcHJlc3MgKmRhdGEqLgorCisgICBJZiAqZGF0YSogaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgbXVsdGlwbGUgY29tcHJlc3NlZCBzdHJlYW1zLCBkZWNvbXByZXNzCisgICBhbGwgb2YgdGhlIHN0cmVhbXMuCisKKyAgIEZvciBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uLCB1c2UgYSA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIG11bHRpLXN0cmVhbSBpbnB1dHMgd2FzIGFkZGVkLgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jaHVuay5yc3QgYi9Eb2MvbGlicmFyeS9jaHVuay5yc3QKaW5kZXggZDM1NThhNC4uYzFiYTQ5NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY2h1bmsucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NodW5rLnJzdApAQCAtODQsOCArODQsOSBAQAogICAgICAgQ2xvc2UgYW5kIHNraXAgdG8gdGhlIGVuZCBvZiB0aGUgY2h1bmsuICBUaGlzIGRvZXMgbm90IGNsb3NlIHRoZQogICAgICAgdW5kZXJseWluZyBmaWxlLgogCi0gICBUaGUgcmVtYWluaW5nIG1ldGhvZHMgd2lsbCByYWlzZSA6ZXhjOmBJT0Vycm9yYCBpZiBjYWxsZWQgYWZ0ZXIgdGhlCi0gICA6bWV0aDpgY2xvc2VgIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuCisgICBUaGUgcmVtYWluaW5nIG1ldGhvZHMgd2lsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiBjYWxsZWQgYWZ0ZXIgdGhlCisgICA6bWV0aDpgY2xvc2VgIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuICBCZWZvcmUgUHl0aG9uIDMuMywgdGhleSB1c2VkIHRvCisgICByYWlzZSA6ZXhjOmBJT0Vycm9yYCwgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKICAgIC4uIG1ldGhvZDo6IGlzYXR0eSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jbWQucnN0IGIvRG9jL2xpYnJhcnkvY21kLnJzdAppbmRleCA5NDNjMDRhLi45NzIyOTI4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jbWQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NtZC5yc3QKQEAgLTI4NSw4ICsyODUsOCBAQAogICAgICAgICBkZWYgZG9fcGxheWJhY2soc2VsZiwgYXJnKToKICAgICAgICAgICAgICdQbGF5YmFjayBjb21tYW5kcyBmcm9tIGEgZmlsZTogIFBMQVlCQUNLIHJvc2UuY21kJwogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCi0gICAgICAgICAgICBjbWRzID0gb3BlbihhcmcpLnJlYWQoKS5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgIHNlbGYuY21kcXVldWUuZXh0ZW5kKGNtZHMpCisgICAgICAgICAgICB3aXRoIG9wZW4oYXJnKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuY21kcXVldWUuZXh0ZW5kKGYucmVhZCgpLnNwbGl0bGluZXMoKSkKICAgICAgICAgZGVmIHByZWNtZChzZWxmLCBsaW5lKToKICAgICAgICAgICAgIGxpbmUgPSBsaW5lLmxvd2VyKCkKICAgICAgICAgICAgIGlmIHNlbGYuZmlsZSBhbmQgJ3BsYXliYWNrJyBub3QgaW4gbGluZToKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CmluZGV4IDc2MmJiOTguLjA3MWZjMjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZWNzLnJzdApAQCAtNDU4LDcgKzQ1OCw4IEBACiAKICAgIC4uIG1ldGhvZDo6IHJlc2V0KCkKIAotICAgICAgUmVzZXQgdGhlIGVuY29kZXIgdG8gdGhlIGluaXRpYWwgc3RhdGUuCisgICAgICBSZXNldCB0aGUgZW5jb2RlciB0byB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhlIG91dHB1dCBpcyBkaXNjYXJkZWQ6IGNhbGwKKyAgICAgIGBgLmVuY29kZSgnJywgZmluYWw9VHJ1ZSlgYCB0byByZXNldCB0aGUgZW5jb2RlciBhbmQgdG8gZ2V0IHRoZSBvdXRwdXQuCiAKIAogLi4gbWV0aG9kOjogSW5jcmVtZW50YWxFbmNvZGVyLmdldHN0YXRlKCkKQEAgLTc4NiwxMSArNzg3LDkgQEAKIEVuY29kaW5ncyBhbmQgVW5pY29kZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVN0cmluZ3MgYXJlIHN0b3JlZCBpbnRlcm5hbGx5IGFzIHNlcXVlbmNlcyBvZiBjb2RlcG9pbnRzICh0byBiZSBwcmVjaXNlCi1hcyA6Yzp0eXBlOmBQeV9VTklDT0RFYCBhcnJheXMpLiBEZXBlbmRpbmcgb24gdGhlIHdheSBQeXRob24gaXMgY29tcGlsZWQgKGVpdGhlcgotdmlhIGBgLS13aXRob3V0LXdpZGUtdW5pY29kZWBgIG9yIGBgLS13aXRoLXdpZGUtdW5pY29kZWBgLCB3aXRoIHRoZQotZm9ybWVyIGJlaW5nIHRoZSBkZWZhdWx0KSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBpcyBlaXRoZXIgYSAxNi1iaXQgb3IgMzItYml0IGRhdGEKLXR5cGUuIE9uY2UgYSBzdHJpbmcgb2JqZWN0IGlzIHVzZWQgb3V0c2lkZSBvZiBDUFUgYW5kIG1lbW9yeSwgQ1BVIGVuZGlhbm5lc3MKK1N0cmluZ3MgYXJlIHN0b3JlZCBpbnRlcm5hbGx5IGFzIHNlcXVlbmNlcyBvZiBjb2RlcG9pbnRzIGluIHJhbmdlIGBgMCAtIDEwRkZGRmBgCisoc2VlIDpwZXA6YDM5M2AgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24pLgorT25jZSBhIHN0cmluZyBvYmplY3QgaXMgdXNlZCBvdXRzaWRlIG9mIENQVSBhbmQgbWVtb3J5LCBDUFUgZW5kaWFubmVzcwogYW5kIGhvdyB0aGVzZSBhcnJheXMgYXJlIHN0b3JlZCBhcyBieXRlcyBiZWNvbWUgYW4gaXNzdWUuICBUcmFuc2Zvcm1pbmcgYQogc3RyaW5nIG9iamVjdCBpbnRvIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgaXMgY2FsbGVkIGVuY29kaW5nIGFuZCByZWNyZWF0aW5nIHRoZQogc3RyaW5nIG9iamVjdCBmcm9tIHRoZSBzZXF1ZW5jZSBvZiBieXRlcyBpcyBrbm93biBhcyBkZWNvZGluZy4gIFRoZXJlIGFyZSBtYW55CkBAIC05MDEsNiArOTAwLDE1IEBACiBjYXNlIG9yIHVzZSBhIGh5cGhlbiBpbnN0ZWFkIG9mIGFuIHVuZGVyc2NvcmUgYXJlIGFsc28gdmFsaWQgYWxpYXNlczsgdGhlcmVmb3JlLAogZS5nLiBgYCd1dGYtOCdgYCBpcyBhIHZhbGlkIGFsaWFzIGZvciB0aGUgYGAndXRmXzgnYGAgY29kZWMuCiAKKy4uIGltcGwtZGV0YWlsOjoKKworICAgU29tZSBjb21tb24gZW5jb2RpbmdzIGNhbiBieXBhc3MgdGhlIGNvZGVjcyBsb29rdXAgbWFjaGluZXJ5IHRvCisgICBpbXByb3ZlIHBlcmZvcm1hbmNlLiAgVGhlc2Ugb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgYXJlIG9ubHkKKyAgIHJlY29nbml6ZWQgYnkgQ1B5dGhvbiBmb3IgYSBsaW1pdGVkIHNldCBvZiBhbGlhc2VzOiB1dGYtOCwgdXRmOCwKKyAgIGxhdGluLTEsIGxhdGluMSwgaXNvLTg4NTktMSwgbWJjcyAoV2luZG93cyBvbmx5KSwgYXNjaWksIHV0Zi0xNiwKKyAgIGFuZCB1dGYtMzIuICBVc2luZyBhbHRlcm5hdGl2ZSBzcGVsbGluZ3MgZm9yIHRoZXNlIGVuY29kaW5ncyBtYXkKKyAgIHJlc3VsdCBpbiBzbG93ZXIgZXhlY3V0aW9uLgorCiBNYW55IG9mIHRoZSBjaGFyYWN0ZXIgc2V0cyBzdXBwb3J0IHRoZSBzYW1lIGxhbmd1YWdlcy4gVGhleSB2YXJ5IGluIGluZGl2aWR1YWwKIGNoYXJhY3RlcnMgKGUuZy4gd2hldGhlciB0aGUgRVVSTyBTSUdOIGlzIHN1cHBvcnRlZCBvciBub3QpLCBhbmQgaW4gdGhlCiBhc3NpZ25tZW50IG9mIGNoYXJhY3RlcnMgdG8gY29kZSBwb3NpdGlvbnMuIEZvciB0aGUgRXVyb3BlYW4gbGFuZ3VhZ2VzIGluCkBAIC0xMDAzLDYgKzEwMTEsMTEgQEAKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgY3AxMjU4ICAgICAgICAgIHwgd2luZG93cy0xMjU4ICAgICAgICAgICAgICAgICAgIHwgVmlldG5hbWVzZSAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgY3A2NTAwMSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgV2luZG93cyBvbmx5OiBXaW5kb3dzIFVURi04ICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKGBgQ1BfVVRGOGBgKSAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLi4gdmVyc2lvbmFkZGVkOjogMy4zICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgZXVjX2pwICAgICAgICAgIHwgZXVjanAsIHVqaXMsIHUtamlzICAgICAgICAgICAgIHwgSmFwYW5lc2UgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgZXVjX2ppc18yMDA0ICAgIHwgamlzeDAyMTMsIGV1Y2ppczIwMDQgICAgICAgICAgIHwgSmFwYW5lc2UgICAgICAgICAgICAgICAgICAgICAgIHwKQEAgLTExNjAsNiArMTE3Myw4IEBACiB8IHVuaWNvZGVfaW50ZXJuYWwgICB8ICAgICAgICAgfCBSZXR1cm4gdGhlIGludGVybmFsICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IHJlcHJlc2VudGF0aW9uIG9mIHRoZSAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgb3BlcmFuZCAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IC4uIGRlcHJlY2F0ZWQ6OiAzLjMgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIFRoZSBmb2xsb3dpbmcgY29kZWNzIHByb3ZpZGUgYnl0ZXMtdG8tYnl0ZXMgbWFwcGluZ3MuCkBAIC0xMjcyLDEyICsxMjg3LDEzIEBACiAuLiBtb2R1bGU6OiBlbmNvZGluZ3MubWJjcwogICAgOnN5bm9wc2lzOiBXaW5kb3dzIEFOU0kgY29kZXBhZ2UKIAotRW5jb2RlIG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSBBTlNJIGNvZGVwYWdlIChDUF9BQ1ApLiBUaGlzIGNvZGVjIG9ubHkKLXN1cHBvcnRzIGBgJ3N0cmljdCdgYCBhbmQgYGAncmVwbGFjZSdgYCBlcnJvciBoYW5kbGVycyB0byBlbmNvZGUsIGFuZAotYGAnc3RyaWN0J2BgIGFuZCBgYCdpZ25vcmUnYGAgZXJyb3IgaGFuZGxlcnMgdG8gZGVjb2RlLgorRW5jb2RlIG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSBBTlNJIGNvZGVwYWdlIChDUF9BQ1ApLgogCiBBdmFpbGFiaWxpdHk6IFdpbmRvd3Mgb25seS4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFN1cHBvcnQgYW55IGVycm9yIGhhbmRsZXIuCisKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICBCZWZvcmUgMy4yLCB0aGUgKmVycm9ycyogYXJndW1lbnQgd2FzIGlnbm9yZWQ7IGBgJ3JlcGxhY2UnYGAgd2FzIGFsd2F5cyB1c2VkCiAgICB0byBlbmNvZGUsIGFuZCBgYCdpZ25vcmUnYGAgdG8gZGVjb2RlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg3MzQ4OQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKQEAgLTAsMCArMSwxODIgQEAKKzptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgLS0tIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyBmb3IgQ29udGFpbmVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGNvbGxlY3Rpb25zLmFiYworICAgOnN5bm9wc2lzOiBBYnN0cmFjdCBiYXNlIGNsYXNzZXMgZm9yIGNvbnRhaW5lcnMKKy4uIG1vZHVsZWF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KKy4uIHNlY3Rpb25hdXRob3I6OiBSYXltb25kIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgRm9ybWVybHksIHRoaXMgbW9kdWxlIHdhcyBwYXJ0IG9mIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLgorCisuLiB0ZXN0c2V0dXA6OiAqCisKKyAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0ICoKKyAgIGltcG9ydCBpdGVydG9vbHMKKyAgIF9fbmFtZV9fID0gJzxkb2N0ZXN0PicKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY29sbGVjdGlvbnMvYWJjLnB5YAorCistLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBwcm92aWRlcyA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIDxhYnN0cmFjdCBiYXNlIGNsYXNzPmAgdGhhdAorY2FuIGJlIHVzZWQgdG8gdGVzdCB3aGV0aGVyIGEgY2xhc3MgcHJvdmlkZXMgYSBwYXJ0aWN1bGFyIGludGVyZmFjZTsgZm9yCitleGFtcGxlLCB3aGV0aGVyIGl0IGlzIGhhc2hhYmxlIG9yIHdoZXRoZXIgaXQgaXMgYSBtYXBwaW5nLgorCisKKy4uIF9jb2xsZWN0aW9ucy1hYnN0cmFjdC1iYXNlLWNsYXNzZXM6CisKK0NvbGxlY3Rpb25zIEFic3RyYWN0IEJhc2UgQ2xhc3NlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjb2xsZWN0aW9ucyBtb2R1bGUgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgOnRlcm06YEFCQ3MgPGFic3RyYWN0IGJhc2UgY2xhc3M+YDoKKworPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitBQkMgICAgICAgICAgICAgICAgICAgICAgICBJbmhlcml0cyBmcm9tICAgICAgICAgIEFic3RyYWN0IE1ldGhvZHMgICAgICAgIE1peGluIE1ldGhvZHMKKz09PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgCis6Y2xhc3M6YEhhc2hhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19oYXNoX19gYAorOmNsYXNzOmBJdGVyYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgSXRlcmF0b3JgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgICAgICAgYGBfX25leHRfX2BgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCis6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCis6Y2xhc3M6YENhbGxhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jYWxsX19gYAorCis6Y2xhc3M6YFNlcXVlbmNlYCAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYCwgYGBfX3JldmVyc2VkX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBpbmRleGBgLCBhbmQgYGBjb3VudGBgCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAKKworOmNsYXNzOmBNdXRhYmxlU2VxdWVuY2VgICAgOmNsYXNzOmBTZXF1ZW5jZWAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXF1ZW5jZWAgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2RlbGl0ZW1fX2BgLCAgICAgICAgYGBhcHBlbmRgYCwgYGByZXZlcnNlYGAsIGBgZXh0ZW5kYGAsIGBgcG9wYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgaW5zZXJ0YGAgICAgICAgICAgICAgIGBgcmVtb3ZlYGAsIGBgY2xlYXJgYCwgYW5kIGBgX19pYWRkX19gYAorCis6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAorCis6Y2xhc3M6YE11dGFibGVTZXRgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgIGBgYWRkYGAsICAgICAgICAgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNldGAgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBkaXNjYXJkYGAgICAgICAgICAgICAgYGBjbGVhcmBgLCBgYHBvcGBgLCBgYHJlbW92ZWBgLCBgYF9faW9yX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2lhbmRfX2BgLCBgYF9faXhvcl9fYGAsIGFuZCBgYF9faXN1Yl9fYGAKKworOmNsYXNzOmBNYXBwaW5nYCAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYGtleXNgYCwgYGBpdGVtc2BgLCBgYHZhbHVlc2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGdldGBgLCBgYF9fZXFfX2BgLCBhbmQgYGBfX25lX19gYAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCisKKzpjbGFzczpgTXV0YWJsZU1hcHBpbmdgICAgIDpjbGFzczpgTWFwcGluZ2AgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgTWFwcGluZ2AgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2RlbGl0ZW1fX2BgICAgICAgICAgYGBwb3BgYCwgYGBwb3BpdGVtYGAsIGBgY2xlYXJgYCwgYGB1cGRhdGVgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGBgc2V0ZGVmYXVsdGBgCisKKworOmNsYXNzOmBNYXBwaW5nVmlld2AgICAgICAgOmNsYXNzOmBTaXplZGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAorOmNsYXNzOmBJdGVtc1ZpZXdgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgS2V5c1ZpZXdgICAgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgLCAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCis6Y2xhc3M6YFZhbHVlc1ZpZXdgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYAorPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworLi4gY2xhc3M6OiBDb250YWluZXIKKyAgICAgICAgICAgSGFzaGFibGUKKyAgICAgICAgICAgU2l6ZWQKKyAgICAgICAgICAgQ2FsbGFibGUKKworICAgQUJDcyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgcmVzcGVjdGl2ZWx5IHRoZSBtZXRob2RzIDptZXRoOmBfX2NvbnRhaW5zX19gLAorICAgOm1ldGg6YF9faGFzaF9fYCwgOm1ldGg6YF9fbGVuX19gLCBhbmQgOm1ldGg6YF9fY2FsbF9fYC4KKworLi4gY2xhc3M6OiBJdGVyYWJsZQorCisgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIG1ldGhvZC4KKyAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBpdGVyYWJsZWAuCisKKy4uIGNsYXNzOjogSXRlcmF0b3IKKworICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgOm1ldGg6YF9faXRlcl9fYCBhbmQgOm1ldGg6YG5leHRgIG1ldGhvZHMuCisgICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgaXRlcmF0b3JgLgorCisuLiBjbGFzczo6IFNlcXVlbmNlCisgICAgICAgICAgIE11dGFibGVTZXF1ZW5jZQorCisgICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YHNlcXVlbmNlcyA8c2VxdWVuY2U+YC4KKworLi4gY2xhc3M6OiBTZXQKKyAgICAgICAgICAgTXV0YWJsZVNldAorCisgICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgc2V0cy4KKworLi4gY2xhc3M6OiBNYXBwaW5nCisgICAgICAgICAgIE11dGFibGVNYXBwaW5nCisKKyAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSA6dGVybTpgbWFwcGluZ3MgPG1hcHBpbmc+YC4KKworLi4gY2xhc3M6OiBNYXBwaW5nVmlldworICAgICAgICAgICBJdGVtc1ZpZXcKKyAgICAgICAgICAgS2V5c1ZpZXcKKyAgICAgICAgICAgVmFsdWVzVmlldworCisgICBBQkNzIGZvciBtYXBwaW5nLCBpdGVtcywga2V5cywgYW5kIHZhbHVlcyA6dGVybTpgdmlld3MgPHZpZXc+YC4KKworCitUaGVzZSBBQkNzIGFsbG93IHVzIHRvIGFzayBjbGFzc2VzIG9yIGluc3RhbmNlcyBpZiB0aGV5IHByb3ZpZGUKK3BhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGU6OgorCisgICAgc2l6ZSA9IE5vbmUKKyAgICBpZiBpc2luc3RhbmNlKG15dmFyLCBjb2xsZWN0aW9ucy5TaXplZCk6CisgICAgICAgIHNpemUgPSBsZW4obXl2YXIpCisKK1NldmVyYWwgb2YgdGhlIEFCQ3MgYXJlIGFsc28gdXNlZnVsIGFzIG1peGlucyB0aGF0IG1ha2UgaXQgZWFzaWVyIHRvIGRldmVsb3AKK2NsYXNzZXMgc3VwcG9ydGluZyBjb250YWluZXIgQVBJcy4gIEZvciBleGFtcGxlLCB0byB3cml0ZSBhIGNsYXNzIHN1cHBvcnRpbmcKK3RoZSBmdWxsIDpjbGFzczpgU2V0YCBBUEksIGl0IG9ubHkgbmVjZXNzYXJ5IHRvIHN1cHBseSB0aGUgdGhyZWUgdW5kZXJseWluZworYWJzdHJhY3QgbWV0aG9kczogOm1ldGg6YF9fY29udGFpbnNfX2AsIDptZXRoOmBfX2l0ZXJfX2AsIGFuZCA6bWV0aDpgX19sZW5fX2AuCitUaGUgQUJDIHN1cHBsaWVzIHRoZSByZW1haW5pbmcgbWV0aG9kcyBzdWNoIGFzIDptZXRoOmBfX2FuZF9fYCBhbmQKKzptZXRoOmBpc2Rpc2pvaW50YCA6OgorCisgICAgY2xhc3MgTGlzdEJhc2VkU2V0KGNvbGxlY3Rpb25zLlNldCk6CisgICAgICAgICAnJycgQWx0ZXJuYXRlIHNldCBpbXBsZW1lbnRhdGlvbiBmYXZvcmluZyBzcGFjZSBvdmVyIHNwZWVkCisgICAgICAgICAgICAgYW5kIG5vdCByZXF1aXJpbmcgdGhlIHNldCBlbGVtZW50cyB0byBiZSBoYXNoYWJsZS4gJycnCisgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlcmFibGUpOgorICAgICAgICAgICAgIHNlbGYuZWxlbWVudHMgPSBsc3QgPSBbXQorICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBpdGVyYWJsZToKKyAgICAgICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGxzdDoKKyAgICAgICAgICAgICAgICAgICAgIGxzdC5hcHBlbmQodmFsdWUpCisgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5lbGVtZW50cykKKyAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBzZWxmLmVsZW1lbnRzCisgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYuZWxlbWVudHMpCisKKyAgICBzMSA9IExpc3RCYXNlZFNldCgnYWJjZGVmJykKKyAgICBzMiA9IExpc3RCYXNlZFNldCgnZGVmZ2hpJykKKyAgICBvdmVybGFwID0gczEgJiBzMiAgICAgICAgICAgICMgVGhlIF9fYW5kX18oKSBtZXRob2QgaXMgc3VwcG9ydGVkIGF1dG9tYXRpY2FsbHkKKworTm90ZXMgb24gdXNpbmcgOmNsYXNzOmBTZXRgIGFuZCA6Y2xhc3M6YE11dGFibGVTZXRgIGFzIGEgbWl4aW46CisKKygxKQorICAgU2luY2Ugc29tZSBzZXQgb3BlcmF0aW9ucyBjcmVhdGUgbmV3IHNldHMsIHRoZSBkZWZhdWx0IG1peGluIG1ldGhvZHMgbmVlZAorICAgYSB3YXkgdG8gY3JlYXRlIG5ldyBpbnN0YW5jZXMgZnJvbSBhbiBpdGVyYWJsZS4gVGhlIGNsYXNzIGNvbnN0cnVjdG9yIGlzCisgICBhc3N1bWVkIHRvIGhhdmUgYSBzaWduYXR1cmUgaW4gdGhlIGZvcm0gYGBDbGFzc05hbWUoaXRlcmFibGUpYGAuCisgICBUaGF0IGFzc3VtcHRpb24gaXMgZmFjdG9yZWQtb3V0IHRvIGFuIGludGVybmFsIGNsYXNzbWV0aG9kIGNhbGxlZAorICAgOm1ldGg6YF9mcm9tX2l0ZXJhYmxlYCB3aGljaCBjYWxscyBgYGNscyhpdGVyYWJsZSlgYCB0byBwcm9kdWNlIGEgbmV3IHNldC4KKyAgIElmIHRoZSA6Y2xhc3M6YFNldGAgbWl4aW4gaXMgYmVpbmcgdXNlZCBpbiBhIGNsYXNzIHdpdGggYSBkaWZmZXJlbnQKKyAgIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSwgeW91IHdpbGwgbmVlZCB0byBvdmVycmlkZSA6bWV0aDpgX2Zyb21faXRlcmFibGVgCisgICB3aXRoIGEgY2xhc3NtZXRob2QgdGhhdCBjYW4gY29uc3RydWN0IG5ldyBpbnN0YW5jZXMgZnJvbQorICAgYW4gaXRlcmFibGUgYXJndW1lbnQuCisKKygyKQorICAgVG8gb3ZlcnJpZGUgdGhlIGNvbXBhcmlzb25zIChwcmVzdW1hYmx5IGZvciBzcGVlZCwgYXMgdGhlCisgICBzZW1hbnRpY3MgYXJlIGZpeGVkKSwgcmVkZWZpbmUgOm1ldGg6YF9fbGVfX2AgYW5kCisgICB0aGVuIHRoZSBvdGhlciBvcGVyYXRpb25zIHdpbGwgYXV0b21hdGljYWxseSBmb2xsb3cgc3VpdC4KKworKDMpCisgICBUaGUgOmNsYXNzOmBTZXRgIG1peGluIHByb3ZpZGVzIGEgOm1ldGg6YF9oYXNoYCBtZXRob2QgdG8gY29tcHV0ZSBhIGhhc2ggdmFsdWUKKyAgIGZvciB0aGUgc2V0OyBob3dldmVyLCA6bWV0aDpgX19oYXNoX19gIGlzIG5vdCBkZWZpbmVkIGJlY2F1c2Ugbm90IGFsbCBzZXRzCisgICBhcmUgaGFzaGFibGUgb3IgaW1tdXRhYmxlLiAgVG8gYWRkIHNldCBoYXNoYWJpbHR5IHVzaW5nIG1peGlucywKKyAgIGluaGVyaXQgZnJvbSBib3RoIDptZXRoOmBTZXRgIGFuZCA6bWV0aDpgSGFzaGFibGVgLCB0aGVuIGRlZmluZQorICAgYGBfX2hhc2hfXyA9IFNldC5faGFzaGBgLgorCisuLiBzZWVhbHNvOjoKKworICAgKiBgT3JkZXJlZFNldCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5NC8+YF8gZm9yIGFuCisgICAgIGV4YW1wbGUgYnVpbHQgb24gOmNsYXNzOmBNdXRhYmxlU2V0YC4KKworICAgKiBGb3IgbW9yZSBhYm91dCBBQkNzLCBzZWUgdGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFuZCA6cGVwOmAzMTE5YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAppbmRleCBlOTBiMjVlLi40YzViNjQ5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CkBAIC0yLDE3ICsyLDE3IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gbW9kdWxlOjogY29sbGVjdGlvbnMKLSAgIDpzeW5vcHNpczogQ29udGFpbmVyIGRhdGF0eXBlcworICAgIDpzeW5vcHNpczogQ29udGFpbmVyIGRhdGF0eXBlcwogLi4gbW9kdWxlYXV0aG9yOjogUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbkByY24uY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob25AcmNuLmNvbT4KIAogLi4gdGVzdHNldHVwOjogKgogCi0gICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCAqCi0gICBpbXBvcnQgaXRlcnRvb2xzCi0gICBfX25hbWVfXyA9ICc8ZG9jdGVzdD4nCisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgKgorICAgIGltcG9ydCBpdGVydG9vbHMKKyAgICBfX25hbWVfXyA9ICc8ZG9jdGVzdD4nCiAKLSoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvbGxlY3Rpb25zLnB5YCBhbmQgOnNvdXJjZTpgTGliL19hYmNvbGwucHlgCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weWAKIAogLS0tLS0tLS0tLS0tLS0KIApAQCAtMjMsNiArMjMsNyBAQAogPT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDpmdW5jOmBuYW1lZHR1cGxlYCAgICAgIGZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIHR1cGxlIHN1YmNsYXNzZXMgd2l0aCBuYW1lZCBmaWVsZHMKIDpjbGFzczpgZGVxdWVgICAgICAgICAgIGxpc3QtbGlrZSBjb250YWluZXIgd2l0aCBmYXN0IGFwcGVuZHMgYW5kIHBvcHMgb24gZWl0aGVyIGVuZAorOmNsYXNzOmBDaGFpbk1hcGAgICAgICAgZGljdC1saWtlIGNsYXNzIGZvciBjcmVhdGluZyBhIHNpbmdsZSB2aWV3IG9mIG11bHRpcGxlIG1hcHBpbmdzCiA6Y2xhc3M6YENvdW50ZXJgICAgICAgICBkaWN0IHN1YmNsYXNzIGZvciBjb3VudGluZyBoYXNoYWJsZSBvYmplY3RzCiA6Y2xhc3M6YE9yZGVyZWREaWN0YCAgICBkaWN0IHN1YmNsYXNzIHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciBlbnRyaWVzIHdlcmUgYWRkZWQKIDpjbGFzczpgZGVmYXVsdGRpY3RgICAgIGRpY3Qgc3ViY2xhc3MgdGhhdCBjYWxscyBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gc3VwcGx5IG1pc3NpbmcgdmFsdWVzCkBAIC0zMSwxMCArMzIsMTY3IEBACiA6Y2xhc3M6YFVzZXJTdHJpbmdgICAgICB3cmFwcGVyIGFyb3VuZCBzdHJpbmcgb2JqZWN0cyBmb3IgZWFzaWVyIHN0cmluZyBzdWJjbGFzc2luZwogPT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotSW4gYWRkaXRpb24gdG8gdGhlIGNvbmNyZXRlIGNvbnRhaW5lciBjbGFzc2VzLCB0aGUgY29sbGVjdGlvbnMgbW9kdWxlIHByb3ZpZGVzCi06cmVmOmBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgPGNvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3Nlcz5gIHRoYXQgY2FuIGJlCi11c2VkIHRvIHRlc3Qgd2hldGhlciBhIGNsYXNzIHByb3ZpZGVzIGEgcGFydGljdWxhciBpbnRlcmZhY2UsIGZvciBleGFtcGxlLAotd2hldGhlciBpdCBpcyBoYXNoYWJsZSBvciBhIG1hcHBpbmcuCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgIE1vdmVkIDpyZWY6YGNvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3Nlc2AgdG8gdGhlIDptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgbW9kdWxlLgorICAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhleSBjb250aW51ZSB0byBiZSB2aXNpYmxlIGluIHRoaXMgbW9kdWxlCisgICAgYXMgd2VsbC4KKworCis6Y2xhc3M6YENoYWluTWFwYCBvYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitBIDpjbGFzczpgQ2hhaW5NYXBgIGNsYXNzIGlzIHByb3ZpZGVkIGZvciBxdWlja2x5IGxpbmtpbmcgYSBudW1iZXIgb2YgbWFwcGluZ3MKK3NvIHRoZXkgY2FuIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUgdW5pdC4gIEl0IGlzIG9mdGVuIG11Y2ggZmFzdGVyIHRoYW4gY3JlYXRpbmcKK2EgbmV3IGRpY3Rpb25hcnkgYW5kIHJ1bm5pbmcgbXVsdGlwbGUgOm1ldGg6YH5kaWN0LnVwZGF0ZWAgY2FsbHMuCisKK1RoZSBjbGFzcyBjYW4gYmUgdXNlZCB0byBzaW11bGF0ZSBuZXN0ZWQgc2NvcGVzIGFuZCBpcyB1c2VmdWwgaW4gdGVtcGxhdGluZy4KKworLi4gY2xhc3M6OiBDaGFpbk1hcCgqbWFwcykKKworICAgIEEgOmNsYXNzOmBDaGFpbk1hcGAgZ3JvdXBzIG11bHRpcGxlIGRpY3RzIG9yIG90aGVyIG1hcHBpbmdzIHRvZ2V0aGVyIHRvCisgICAgY3JlYXRlIGEgc2luZ2xlLCB1cGRhdGVhYmxlIHZpZXcuICBJZiBubyAqbWFwcyogYXJlIHNwZWNpZmllZCwgYSBzaW5nbGUgZW1wdHkKKyAgICBkaWN0aW9uYXJ5IGlzIHByb3ZpZGVkIHNvIHRoYXQgYSBuZXcgY2hhaW4gYWx3YXlzIGhhcyBhdCBsZWFzdCBvbmUgbWFwcGluZy4KKworICAgIFRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIGFyZSBzdG9yZWQgaW4gYSBsaXN0LiAgVGhhdCBsaXN0IGlzIHB1YmxpYyBhbmQgY2FuCisgICAgYWNjZXNzZWQgb3IgdXBkYXRlZCB1c2luZyB0aGUgKm1hcHMqIGF0dHJpYnV0ZS4gIFRoZXJlIGlzIG5vIG90aGVyIHN0YXRlLgorCisgICAgTG9va3VwcyBzZWFyY2ggdGhlIHVuZGVybHlpbmcgbWFwcGluZ3Mgc3VjY2Vzc2l2ZWx5IHVudGlsIGEga2V5IGlzIGZvdW5kLiAgSW4KKyAgICBjb250cmFzdCwgd3JpdGVzLCB1cGRhdGVzLCBhbmQgZGVsZXRpb25zIG9ubHkgb3BlcmF0ZSBvbiB0aGUgZmlyc3QgbWFwcGluZy4KKworICAgIEEgOmNsYXNzOmBDaGFpbk1hcGAgaW5jb3Jwb3JhdGVzIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIGJ5IHJlZmVyZW5jZS4gIFNvLCBpZgorICAgIG9uZSBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5ncyBnZXRzIHVwZGF0ZWQsIHRob3NlIGNoYW5nZXMgd2lsbCBiZSByZWZsZWN0ZWQKKyAgICBpbiA6Y2xhc3M6YENoYWluTWFwYC4KKworICAgIEFsbCBvZiB0aGUgdXN1YWwgZGljdGlvbmFyeSBtZXRob2RzIGFyZSBzdXBwb3J0ZWQuICBJbiBhZGRpdGlvbiwgdGhlcmUgaXMgYQorICAgICptYXBzKiBhdHRyaWJ1dGUsIGEgbWV0aG9kIGZvciBjcmVhdGluZyBuZXcgc3ViY29udGV4dHMsIGFuZCBhIHByb3BlcnR5IGZvcgorICAgIGFjY2Vzc2luZyBhbGwgYnV0IHRoZSBmaXJzdCBtYXBwaW5nOgorCisgICAgLi4gYXR0cmlidXRlOjogbWFwcworCisgICAgICAgIEEgdXNlciB1cGRhdGVhYmxlIGxpc3Qgb2YgbWFwcGluZ3MuICBUaGUgbGlzdCBpcyBvcmRlcmVkIGZyb20KKyAgICAgICAgZmlyc3Qtc2VhcmNoZWQgdG8gbGFzdC1zZWFyY2hlZC4gIEl0IGlzIHRoZSBvbmx5IHN0b3JlZCBzdGF0ZSBhbmQgY2FuCisgICAgICAgIGJlIG1vZGlmaWVkIHRvIGNoYW5nZSB3aGljaCBtYXBwaW5ncyBhcmUgc2VhcmNoZWQuICBUaGUgbGlzdCBzaG91bGQKKyAgICAgICAgYWx3YXlzIGNvbnRhaW4gYXQgbGVhc3Qgb25lIG1hcHBpbmcuCisKKyAgICAuLiBtZXRob2Q6OiBuZXdfY2hpbGQoKQorCisgICAgICAgIFJldHVybnMgYSBuZXcgOmNsYXNzOmBDaGFpbk1hcGAgY29udGFpbmluZyBhIG5ldyA6Y2xhc3M6YGRpY3RgIGZvbGxvd2VkIGJ5CisgICAgICAgIGFsbCBvZiB0aGUgbWFwcyBpbiB0aGUgY3VycmVudCBpbnN0YW5jZS4gIEEgY2FsbCB0byBgYGQubmV3X2NoaWxkKClgYCBpcworICAgICAgICBlcXVpdmFsZW50IHRvOiBgYENoYWluTWFwKHt9LCAqZC5tYXBzKWBgLiAgVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IKKyAgICAgICAgY3JlYXRpbmcgc3ViY29udGV4dHMgdGhhdCBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGFsdGVyaW5nIHZhbHVlcyBpbiBhbnkKKyAgICAgICAgb2YgdGhlIHBhcmVudCBtYXBwaW5ncy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHBhcmVudHMKKworICAgICAgICBQcm9wZXJ0eSByZXR1cm5pbmcgYSBuZXcgOmNsYXNzOmBDaGFpbk1hcGAgY29udGFpbmluZyBhbGwgb2YgdGhlIG1hcHMgaW4KKyAgICAgICAgdGhlIGN1cnJlbnQgaW5zdGFuY2UgZXhjZXB0IHRoZSBmaXJzdCBvbmUuICBUaGlzIGlzIHVzZWZ1bCBmb3Igc2tpcHBpbmcKKyAgICAgICAgdGhlIGZpcnN0IG1hcCBpbiB0aGUgc2VhcmNoLiAgVXNlIGNhc2VzIGFyZSBzaW1pbGFyIHRvIHRob3NlIGZvciB0aGUKKyAgICAgICAgOmtleXdvcmQ6YG5vbmxvY2FsYCBrZXl3b3JkIHVzZWQgaW4gOnRlcm06YG5lc3RlZCBzY29wZXMgPG5lc3RlZAorICAgICAgICBzY29wZT5gLiAgVGhlIHVzZSBjYXNlcyBhbHNvIHBhcmFsbGVsIHRob3NlIGZvciB0aGUgYnVpbHQtaW4KKyAgICAgICAgOmZ1bmM6YHN1cGVyYCBmdW5jdGlvbi4gIEEgcmVmZXJlbmNlIHRvIGBgZC5wYXJlbnRzYGAgaXMgZXF1aXZhbGVudCB0bzoKKyAgICAgICAgYGBDaGFpbk1hcCgqZC5tYXBzWzE6XSlgYC4KKworCisuLiBzZWVhbHNvOjoKKworICAgICogVGhlIGBNdWx0aUNvbnRleHQgY2xhc3MKKyAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vZW50aG91Z2h0L2NvZGV0b29scy9ibG9iLzQuMC4wL2NvZGV0b29scy9jb250ZXh0cy9tdWx0aV9jb250ZXh0LnB5PmBfCisgICAgICBpbiB0aGUgRW50aG91Z2h0IGBDb2RlVG9vbHMgcGFja2FnZQorICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9lbnRob3VnaHQvY29kZXRvb2xzPmBfIGhhcyBvcHRpb25zIHRvIHN1cHBvcnQKKyAgICAgIHdyaXRpbmcgdG8gYW55IG1hcHBpbmcgaW4gdGhlIGNoYWluLgorCisgICAgKiBEamFuZ28ncyBgQ29udGV4dCBjbGFzcworICAgICAgPGh0dHA6Ly9jb2RlLmRqYW5nb3Byb2plY3QuY29tL2Jyb3dzZXIvZGphbmdvL3RydW5rL2RqYW5nby90ZW1wbGF0ZS9jb250ZXh0LnB5PmBfCisgICAgICBmb3IgdGVtcGxhdGluZyBpcyBhIHJlYWQtb25seSBjaGFpbiBvZiBtYXBwaW5ncy4gIEl0IGFsc28gZmVhdHVyZXMKKyAgICAgIHB1c2hpbmcgYW5kIHBvcHBpbmcgb2YgY29udGV4dHMgc2ltaWxhciB0byB0aGUKKyAgICAgIDptZXRoOmB+Y29sbGVjdGlvbnMuQ2hhaW5NYXAubmV3X2NoaWxkYCBtZXRob2QgYW5kIHRoZQorICAgICAgOm1ldGg6YH5jb2xsZWN0aW9ucy5DaGFpbk1hcC5wYXJlbnRzYCBwcm9wZXJ0eS4KKworICAgICogVGhlIGBOZXN0ZWQgQ29udGV4dHMgcmVjaXBlCisgICAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc3NDM0Lz5gXyBoYXMgb3B0aW9ucyB0byBjb250cm9sCisgICAgICB3aGV0aGVyIHdyaXRlcyBhbmQgb3RoZXIgbXV0YXRpb25zIGFwcGx5IG9ubHkgdG8gdGhlIGZpcnN0IG1hcHBpbmcgb3IgdG8KKyAgICAgIGFueSBtYXBwaW5nIGluIHRoZSBjaGFpbi4KKworICAgICogQSBgZ3JlYXRseSBzaW1wbGlmaWVkIHJlYWQtb25seSB2ZXJzaW9uIG9mIENoYWlubWFwCisgICAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvMzA1MjY4Lz5gXy4KKworCis6Y2xhc3M6YENoYWluTWFwYCBFeGFtcGxlcyBhbmQgUmVjaXBlcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgYXBwcm9hY2hlcyB0byB3b3JraW5nIHdpdGggY2hhaW5lZCBtYXBzLgorCisKK0V4YW1wbGUgb2Ygc2ltdWxhdGluZyBQeXRob24ncyBpbnRlcm5hbCBsb29rdXAgY2hhaW46OgorCisgICAgICAgIGltcG9ydCBidWlsdGlucworICAgICAgICBweWxvb2t1cCA9IENoYWluTWFwKGxvY2FscygpLCBnbG9iYWxzKCksIHZhcnMoYnVpbHRpbnMpKQorCitFeGFtcGxlIG9mIGxldHRpbmcgdXNlciBzcGVjaWZpZWQgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0YWtlIHByZWNlZGVuY2Ugb3ZlcgorZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoIGluIHR1cm4gdGFrZSBwcmVjZWRlbmNlIG92ZXIgZGVmYXVsdCB2YWx1ZXM6OgorCisgICAgICAgIGltcG9ydCBvcywgYXJncGFyc2UKKworICAgICAgICBkZWZhdWx0cyA9IHsnY29sb3InOiAncmVkJywgJ3VzZXInOiAnZ3Vlc3QnfQorCisgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11c2VyJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jb2xvcicpCisgICAgICAgIG5hbWVzcGFjZSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICAgICAgY29tbWFuZF9saW5lX2FyZ3MgPSB7azp2IGZvciBrLCB2IGluIHZhcnMobmFtZXNwYWNlKS5pdGVtcygpIGlmIHZ9CisKKyAgICAgICAgY29tYmluZWQgPSBDaGFpbk1hcChjb21tYW5kX2xpbmVfYXJncywgb3MuZW52aXJvbiwgZGVmYXVsdHMpCisgICAgICAgIHByaW50KGNvbWJpbmVkWydjb2xvciddKQorICAgICAgICBwcmludChjb21iaW5lZFsndXNlciddKQorCitFeGFtcGxlIHBhdHRlcm5zIGZvciB1c2luZyB0aGUgOmNsYXNzOmBDaGFpbk1hcGAgY2xhc3MgdG8gc2ltdWxhdGUgbmVzdGVkCitjb250ZXh0czo6CisKKyAgICAgICAgYyA9IENoYWluTWFwKCkgICAgICAgICMgQ3JlYXRlIHJvb3QgY29udGV4dAorICAgICAgICBkID0gYy5uZXdfY2hpbGQoKSAgICAgIyBDcmVhdGUgbmVzdGVkIGNoaWxkIGNvbnRleHQKKyAgICAgICAgZSA9IGMubmV3X2NoaWxkKCkgICAgICMgQ2hpbGQgb2YgYywgaW5kZXBlbmRlbnQgZnJvbSBkCisgICAgICAgIGUubWFwc1swXSAgICAgICAgICAgICAjIEN1cnJlbnQgY29udGV4dCBkaWN0aW9uYXJ5IC0tIGxpa2UgUHl0aG9uJ3MgbG9jYWxzKCkKKyAgICAgICAgZS5tYXBzWy0xXSAgICAgICAgICAgICMgUm9vdCBjb250ZXh0IC0tIGxpa2UgUHl0aG9uJ3MgZ2xvYmFscygpCisgICAgICAgIGUucGFyZW50cyAgICAgICAgICAgICAjIEVuY2xvc2luZyBjb250ZXh0IGNoYWluIC0tIGxpa2UgUHl0aG9uJ3Mgbm9ubG9jYWxzCisKKyAgICAgICAgZFsneCddICAgICAgICAgICAgICAgICMgR2V0IGZpcnN0IGtleSBpbiB0aGUgY2hhaW4gb2YgY29udGV4dHMKKyAgICAgICAgZFsneCddID0gMSAgICAgICAgICAgICMgU2V0IHZhbHVlIGluIGN1cnJlbnQgY29udGV4dAorICAgICAgICBkZWxbJ3gnXSAgICAgICAgICAgICAgIyBEZWxldGUgZnJvbSBjdXJyZW50IGNvbnRleHQKKyAgICAgICAgbGlzdChkKSAgICAgICAgICAgICAgICMgQWxsIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgayBpbiBkICAgICAgICAgICAgICAgICMgQ2hlY2sgYWxsIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgbGVuKGQpICAgICAgICAgICAgICAgICMgTnVtYmVyIG9mIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgZC5pdGVtcygpICAgICAgICAgICAgICMgQWxsIG5lc3RlZCBpdGVtcworICAgICAgICBkaWN0KGQpICAgICAgICAgICAgICAgIyBGbGF0dGVuIGludG8gYSByZWd1bGFyIGRpY3Rpb25hcnkKKworVGhlIDpjbGFzczpgQ2hhaW5NYXBgIGNsYXNzIG9ubHkgbWFrZXMgdXBkYXRlcyAod3JpdGVzIGFuZCBkZWxldGlvbnMpIHRvIHRoZQorZmlyc3QgbWFwcGluZyBpbiB0aGUgY2hhaW4gd2hpbGUgbG9va3VwcyB3aWxsIHNlYXJjaCB0aGUgZnVsbCBjaGFpbi4gIEhvd2V2ZXIsCitpZiBkZWVwIHdyaXRlcyBhbmQgZGVsZXRpb25zIGFyZSBkZXNpcmVkLCBpdCBpcyBlYXN5IHRvIG1ha2UgYSBzdWJjbGFzcyB0aGF0Cit1cGRhdGVzIGtleXMgZm91bmQgZGVlcGVyIGluIHRoZSBjaGFpbjo6CisKKyAgICBjbGFzcyBEZWVwQ2hhaW5NYXAoQ2hhaW5NYXApOgorICAgICAgICAnVmFyaWFudCBvZiBDaGFpbk1hcCB0aGF0IGFsbG93cyBkaXJlY3QgdXBkYXRlcyB0byBpbm5lciBzY29wZXMnCisKKyAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICAgICAgZm9yIG1hcHBpbmcgaW4gc2VsZi5tYXBzOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBtYXBwaW5nOgorICAgICAgICAgICAgICAgICAgICBtYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHNlbGYubWFwc1swXVtrZXldID0gdmFsdWUKKworICAgICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgICAgIGZvciBtYXBwaW5nIGluIHNlbGYubWFwczoKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gbWFwcGluZzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG1hcHBpbmdba2V5XQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKKworICAgID4+PiBkID0gRGVlcENoYWluTWFwKHsnemVicmEnOiAnYmxhY2snfSwgeydlbGVwaGFudCcgOiAnYmx1ZSd9LCB7J2xpb24nIDogJ3llbGxvdyd9KQorICAgID4+PiBkWydsaW9uJ10gPSAnb3JhbmdlJyAgICAgICAgICMgdXBkYXRlIGFuIGV4aXN0aW5nIGtleSB0d28gbGV2ZWxzIGRvd24KKyAgICA+Pj4gZFsnc25ha2UnXSA9ICdyZWQnICAgICAgICAgICAjIG5ldyBrZXlzIGdldCBhZGRlZCB0byB0aGUgdG9wbW9zdCBkaWN0CisgICAgPj4+IGRlbCBkWydlbGVwaGFudCddICAgICAgICAgICAgIyByZW1vdmUgYW4gZXhpc3Rpbmcga2V5IG9uZSBsZXZlbCBkb3duCisgICAgRGVlcENoYWluTWFwKHsnemVicmEnOiAnYmxhY2snLCAnc25ha2UnOiAncmVkJ30sIHt9LCB7J2xpb24nOiAnb3JhbmdlJ30pCiAKIAogOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzCkBAIC01OSw4NSArMjE3LDg1IEBACiAKIC4uIGNsYXNzOjogQ291bnRlcihbaXRlcmFibGUtb3ItbWFwcGluZ10pCiAKLSAgIEEgOmNsYXNzOmBDb3VudGVyYCBpcyBhIDpjbGFzczpgZGljdGAgc3ViY2xhc3MgZm9yIGNvdW50aW5nIGhhc2hhYmxlIG9iamVjdHMuCi0gICBJdCBpcyBhbiB1bm9yZGVyZWQgY29sbGVjdGlvbiB3aGVyZSBlbGVtZW50cyBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkga2V5cwotICAgYW5kIHRoZWlyIGNvdW50cyBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkgdmFsdWVzLiAgQ291bnRzIGFyZSBhbGxvd2VkIHRvIGJlCi0gICBhbnkgaW50ZWdlciB2YWx1ZSBpbmNsdWRpbmcgemVybyBvciBuZWdhdGl2ZSBjb3VudHMuICBUaGUgOmNsYXNzOmBDb3VudGVyYAotICAgY2xhc3MgaXMgc2ltaWxhciB0byBiYWdzIG9yIG11bHRpc2V0cyBpbiBvdGhlciBsYW5ndWFnZXMuCisgICAgQSA6Y2xhc3M6YENvdW50ZXJgIGlzIGEgOmNsYXNzOmBkaWN0YCBzdWJjbGFzcyBmb3IgY291bnRpbmcgaGFzaGFibGUgb2JqZWN0cy4KKyAgICBJdCBpcyBhbiB1bm9yZGVyZWQgY29sbGVjdGlvbiB3aGVyZSBlbGVtZW50cyBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkga2V5cworICAgIGFuZCB0aGVpciBjb3VudHMgYXJlIHN0b3JlZCBhcyBkaWN0aW9uYXJ5IHZhbHVlcy4gIENvdW50cyBhcmUgYWxsb3dlZCB0byBiZQorICAgIGFueSBpbnRlZ2VyIHZhbHVlIGluY2x1ZGluZyB6ZXJvIG9yIG5lZ2F0aXZlIGNvdW50cy4gIFRoZSA6Y2xhc3M6YENvdW50ZXJgCisgICAgY2xhc3MgaXMgc2ltaWxhciB0byBiYWdzIG9yIG11bHRpc2V0cyBpbiBvdGhlciBsYW5ndWFnZXMuCiAKLSAgIEVsZW1lbnRzIGFyZSBjb3VudGVkIGZyb20gYW4gKml0ZXJhYmxlKiBvciBpbml0aWFsaXplZCBmcm9tIGFub3RoZXIKLSAgICptYXBwaW5nKiAob3IgY291bnRlcik6CisgICAgRWxlbWVudHMgYXJlIGNvdW50ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGluaXRpYWxpemVkIGZyb20gYW5vdGhlcgorICAgICptYXBwaW5nKiAob3IgY291bnRlcik6CiAKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgbmV3LCBlbXB0eSBjb3VudGVyCiAgICAgICAgID4+PiBjID0gQ291bnRlcignZ2FsbGFoYWQnKSAgICAgICAgICAgICAgICAgIyBhIG5ldyBjb3VudGVyIGZyb20gYW4gaXRlcmFibGUKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKHsncmVkJzogNCwgJ2JsdWUnOiAyfSkgICAgICAjIGEgbmV3IGNvdW50ZXIgZnJvbSBhIG1hcHBpbmcKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKGNhdHM9NCwgZG9ncz04KSAgICAgICAgICAgICAjIGEgbmV3IGNvdW50ZXIgZnJvbSBrZXl3b3JkIGFyZ3MKIAotICAgQ291bnRlciBvYmplY3RzIGhhdmUgYSBkaWN0aW9uYXJ5IGludGVyZmFjZSBleGNlcHQgdGhhdCB0aGV5IHJldHVybiBhIHplcm8KLSAgIGNvdW50IGZvciBtaXNzaW5nIGl0ZW1zIGluc3RlYWQgb2YgcmFpc2luZyBhIDpleGM6YEtleUVycm9yYDoKKyAgICBDb3VudGVyIG9iamVjdHMgaGF2ZSBhIGRpY3Rpb25hcnkgaW50ZXJmYWNlIGV4Y2VwdCB0aGF0IHRoZXkgcmV0dXJuIGEgemVybworICAgIGNvdW50IGZvciBtaXNzaW5nIGl0ZW1zIGluc3RlYWQgb2YgcmFpc2luZyBhIDpleGM6YEtleUVycm9yYDoKIAogICAgICAgICA+Pj4gYyA9IENvdW50ZXIoWydlZ2dzJywgJ2hhbSddKQogICAgICAgICA+Pj4gY1snYmFjb24nXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY291bnQgb2YgYSBtaXNzaW5nIGVsZW1lbnQgaXMgemVybwogICAgICAgICAwCiAKLSAgIFNldHRpbmcgYSBjb3VudCB0byB6ZXJvIGRvZXMgbm90IHJlbW92ZSBhbiBlbGVtZW50IGZyb20gYSBjb3VudGVyLgotICAgVXNlIGBgZGVsYGAgdG8gcmVtb3ZlIGl0IGVudGlyZWx5OgorICAgIFNldHRpbmcgYSBjb3VudCB0byB6ZXJvIGRvZXMgbm90IHJlbW92ZSBhbiBlbGVtZW50IGZyb20gYSBjb3VudGVyLgorICAgIFVzZSBgYGRlbGBgIHRvIHJlbW92ZSBpdCBlbnRpcmVseToKIAogICAgICAgICA+Pj4gY1snc2F1c2FnZSddID0gMCAgICAgICAgICAgICAgICAgICAgICAgICMgY291bnRlciBlbnRyeSB3aXRoIGEgemVybyBjb3VudAogICAgICAgICA+Pj4gZGVsIGNbJ3NhdXNhZ2UnXSAgICAgICAgICAgICAgICAgICAgICAgICMgZGVsIGFjdHVhbGx5IHJlbW92ZXMgdGhlIGVudHJ5CiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKLSAgIENvdW50ZXIgb2JqZWN0cyBzdXBwb3J0IHRocmVlIG1ldGhvZHMgYmV5b25kIHRob3NlIGF2YWlsYWJsZSBmb3IgYWxsCi0gICBkaWN0aW9uYXJpZXM6CisgICAgQ291bnRlciBvYmplY3RzIHN1cHBvcnQgdGhyZWUgbWV0aG9kcyBiZXlvbmQgdGhvc2UgYXZhaWxhYmxlIGZvciBhbGwKKyAgICBkaWN0aW9uYXJpZXM6CiAKLSAgIC4uIG1ldGhvZDo6IGVsZW1lbnRzKCkKKyAgICAuLiBtZXRob2Q6OiBlbGVtZW50cygpCiAKLSAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGVsZW1lbnRzIHJlcGVhdGluZyBlYWNoIGFzIG1hbnkgdGltZXMgYXMgaXRzCi0gICAgICBjb3VudC4gIEVsZW1lbnRzIGFyZSByZXR1cm5lZCBpbiBhcmJpdHJhcnkgb3JkZXIuICBJZiBhbiBlbGVtZW50J3MgY291bnQKLSAgICAgIGlzIGxlc3MgdGhhbiBvbmUsIDptZXRoOmBlbGVtZW50c2Agd2lsbCBpZ25vcmUgaXQuCisgICAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGVsZW1lbnRzIHJlcGVhdGluZyBlYWNoIGFzIG1hbnkgdGltZXMgYXMgaXRzCisgICAgICAgIGNvdW50LiAgRWxlbWVudHMgYXJlIHJldHVybmVkIGluIGFyYml0cmFyeSBvcmRlci4gIElmIGFuIGVsZW1lbnQncyBjb3VudAorICAgICAgICBpcyBsZXNzIHRoYW4gb25lLCA6bWV0aDpgZWxlbWVudHNgIHdpbGwgaWdub3JlIGl0LgogCiAgICAgICAgICAgICA+Pj4gYyA9IENvdW50ZXIoYT00LCBiPTIsIGM9MCwgZD0tMikKICAgICAgICAgICAgID4+PiBsaXN0KGMuZWxlbWVudHMoKSkKICAgICAgICAgICAgIFsnYScsICdhJywgJ2EnLCAnYScsICdiJywgJ2InXQogCi0gICAuLiBtZXRob2Q6OiBtb3N0X2NvbW1vbihbbl0pCisgICAgLi4gbWV0aG9kOjogbW9zdF9jb21tb24oW25dKQogCi0gICAgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSAqbiogbW9zdCBjb21tb24gZWxlbWVudHMgYW5kIHRoZWlyIGNvdW50cyBmcm9tIHRoZQotICAgICAgbW9zdCBjb21tb24gdG8gdGhlIGxlYXN0LiAgSWYgKm4qIGlzIG5vdCBzcGVjaWZpZWQsIDpmdW5jOmBtb3N0X2NvbW1vbmAKLSAgICAgIHJldHVybnMgKmFsbCogZWxlbWVudHMgaW4gdGhlIGNvdW50ZXIuICBFbGVtZW50cyB3aXRoIGVxdWFsIGNvdW50cyBhcmUKLSAgICAgIG9yZGVyZWQgYXJiaXRyYXJpbHk6CisgICAgICAgIFJldHVybiBhIGxpc3Qgb2YgdGhlICpuKiBtb3N0IGNvbW1vbiBlbGVtZW50cyBhbmQgdGhlaXIgY291bnRzIGZyb20gdGhlCisgICAgICAgIG1vc3QgY29tbW9uIHRvIHRoZSBsZWFzdC4gIElmICpuKiBpcyBub3Qgc3BlY2lmaWVkLCA6ZnVuYzpgbW9zdF9jb21tb25gCisgICAgICAgIHJldHVybnMgKmFsbCogZWxlbWVudHMgaW4gdGhlIGNvdW50ZXIuICBFbGVtZW50cyB3aXRoIGVxdWFsIGNvdW50cyBhcmUKKyAgICAgICAgb3JkZXJlZCBhcmJpdHJhcmlseToKIAogICAgICAgICAgICAgPj4+IENvdW50ZXIoJ2FicmFjYWRhYnJhJykubW9zdF9jb21tb24oMykKICAgICAgICAgICAgIFsoJ2EnLCA1KSwgKCdyJywgMiksICgnYicsIDIpXQogCi0gICAuLiBtZXRob2Q6OiBzdWJ0cmFjdChbaXRlcmFibGUtb3ItbWFwcGluZ10pCisgICAgLi4gbWV0aG9kOjogc3VidHJhY3QoW2l0ZXJhYmxlLW9yLW1hcHBpbmddKQogCi0gICAgICBFbGVtZW50cyBhcmUgc3VidHJhY3RlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgZnJvbSBhbm90aGVyICptYXBwaW5nKgotICAgICAgKG9yIGNvdW50ZXIpLiAgTGlrZSA6bWV0aDpgZGljdC51cGRhdGVgIGJ1dCBzdWJ0cmFjdHMgY291bnRzIGluc3RlYWQKLSAgICAgIG9mIHJlcGxhY2luZyB0aGVtLiAgQm90aCBpbnB1dHMgYW5kIG91dHB1dHMgbWF5IGJlIHplcm8gb3IgbmVnYXRpdmUuCisgICAgICAgIEVsZW1lbnRzIGFyZSBzdWJ0cmFjdGVkIGZyb20gYW4gKml0ZXJhYmxlKiBvciBmcm9tIGFub3RoZXIgKm1hcHBpbmcqCisgICAgICAgIChvciBjb3VudGVyKS4gIExpa2UgOm1ldGg6YGRpY3QudXBkYXRlYCBidXQgc3VidHJhY3RzIGNvdW50cyBpbnN0ZWFkCisgICAgICAgIG9mIHJlcGxhY2luZyB0aGVtLiAgQm90aCBpbnB1dHMgYW5kIG91dHB1dHMgbWF5IGJlIHplcm8gb3IgbmVnYXRpdmUuCiAKICAgICAgICAgICAgID4+PiBjID0gQ291bnRlcihhPTQsIGI9MiwgYz0wLCBkPS0yKQogICAgICAgICAgICAgPj4+IGQgPSBDb3VudGVyKGE9MSwgYj0yLCBjPTMsIGQ9NCkKICAgICAgICAgICAgID4+PiBjLnN1YnRyYWN0KGQpCiAgICAgICAgICAgICBDb3VudGVyKHsnYSc6IDMsICdiJzogMCwgJ2MnOiAtMywgJ2QnOiAtNn0pCiAKLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAotICAgVGhlIHVzdWFsIGRpY3Rpb25hcnkgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIGZvciA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHMKLSAgIGV4Y2VwdCBmb3IgdHdvIHdoaWNoIHdvcmsgZGlmZmVyZW50bHkgZm9yIGNvdW50ZXJzLgorICAgIFRoZSB1c3VhbCBkaWN0aW9uYXJ5IG1ldGhvZHMgYXJlIGF2YWlsYWJsZSBmb3IgOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzCisgICAgZXhjZXB0IGZvciB0d28gd2hpY2ggd29yayBkaWZmZXJlbnRseSBmb3IgY291bnRlcnMuCiAKLSAgIC4uIG1ldGhvZDo6IGZyb21rZXlzKGl0ZXJhYmxlKQorICAgIC4uIG1ldGhvZDo6IGZyb21rZXlzKGl0ZXJhYmxlKQogCi0gICAgICBUaGlzIGNsYXNzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIDpjbGFzczpgQ291bnRlcmAgb2JqZWN0cy4KKyAgICAgICAgVGhpcyBjbGFzcyBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkIGZvciA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHMuCiAKLSAgIC4uIG1ldGhvZDo6IHVwZGF0ZShbaXRlcmFibGUtb3ItbWFwcGluZ10pCisgICAgLi4gbWV0aG9kOjogdXBkYXRlKFtpdGVyYWJsZS1vci1tYXBwaW5nXSkKIAotICAgICAgRWxlbWVudHMgYXJlIGNvdW50ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGFkZGVkLWluIGZyb20gYW5vdGhlcgotICAgICAgKm1hcHBpbmcqIChvciBjb3VudGVyKS4gIExpa2UgOm1ldGg6YGRpY3QudXBkYXRlYCBidXQgYWRkcyBjb3VudHMKLSAgICAgIGluc3RlYWQgb2YgcmVwbGFjaW5nIHRoZW0uICBBbHNvLCB0aGUgKml0ZXJhYmxlKiBpcyBleHBlY3RlZCB0byBiZSBhCi0gICAgICBzZXF1ZW5jZSBvZiBlbGVtZW50cywgbm90IGEgc2VxdWVuY2Ugb2YgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycy4KKyAgICAgICAgRWxlbWVudHMgYXJlIGNvdW50ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGFkZGVkLWluIGZyb20gYW5vdGhlcgorICAgICAgICAqbWFwcGluZyogKG9yIGNvdW50ZXIpLiAgTGlrZSA6bWV0aDpgZGljdC51cGRhdGVgIGJ1dCBhZGRzIGNvdW50cworICAgICAgICBpbnN0ZWFkIG9mIHJlcGxhY2luZyB0aGVtLiAgQWxzbywgdGhlICppdGVyYWJsZSogaXMgZXhwZWN0ZWQgdG8gYmUgYQorICAgICAgICBzZXF1ZW5jZSBvZiBlbGVtZW50cywgbm90IGEgc2VxdWVuY2Ugb2YgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycy4KIAogQ29tbW9uIHBhdHRlcm5zIGZvciB3b3JraW5nIHdpdGggOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzOjoKIApAQCAtMTQ5LDcgKzMwNyw3IEBACiAgICAgYy5pdGVtcygpICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgdG8gYSBsaXN0IG9mIChlbGVtLCBjbnQpIHBhaXJzCiAgICAgQ291bnRlcihkaWN0KGxpc3Rfb2ZfcGFpcnMpKSAgICAjIGNvbnZlcnQgZnJvbSBhIGxpc3Qgb2YgKGVsZW0sIGNudCkgcGFpcnMKICAgICBjLm1vc3RfY29tbW9uKClbOi1uOi0xXSAgICAgICAgICMgbiBsZWFzdCBjb21tb24gZWxlbWVudHMKLSAgICBjICs9IENvdW50ZXIoKSAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIHplcm8gYW5kIG5lZ2F0aXZlIGNvdW50cworICAgICtjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZW1vdmUgemVybyBhbmQgbmVnYXRpdmUgY291bnRzCiAKIFNldmVyYWwgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgYXJlIHByb3ZpZGVkIGZvciBjb21iaW5pbmcgOmNsYXNzOmBDb3VudGVyYAogb2JqZWN0cyB0byBwcm9kdWNlIG11bHRpc2V0cyAoY291bnRlcnMgdGhhdCBoYXZlIGNvdW50cyBncmVhdGVyIHRoYW4gemVybykuCkBAIC0xNjksMzIgKzMyNyw0NCBAQAogICAgID4+PiBjIHwgZCAgICAgICAgICAgICAgICAgICAgICAgIyB1bmlvbjogIG1heChjW3hdLCBkW3hdKQogICAgIENvdW50ZXIoeydhJzogMywgJ2InOiAyfSkKIAorVW5hcnkgYWRkaXRpb24gYW5kIHN1YnN0cmFjdGlvbiBhcmUgc2hvcnRjdXRzIGZvciBhZGRpbmcgYW4gZW1wdHkgY291bnRlcgorb3Igc3VidHJhY3RpbmcgZnJvbSBhbiBlbXB0eSBjb3VudGVyLgorCisgICAgPj4+IGMgPSBDb3VudGVyKGE9MiwgYj0tNCkKKyAgICA+Pj4gK2MKKyAgICBDb3VudGVyKHsnYSc6IDJ9KQorICAgID4+PiAtYworICAgIENvdW50ZXIoeydiJzogNH0pCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgIEFkZGVkIHN1cHBvcnQgZm9yIHVuYXJ5IHBsdXMsIHVuYXJ5IG1pbnVzLCBhbmQgaW4tcGxhY2UgbXVsdGlzZXQgb3BlcmF0aW9ucy4KKwogLi4gbm90ZTo6CiAKLSAgIENvdW50ZXJzIHdlcmUgcHJpbWFyaWx5IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBwb3NpdGl2ZSBpbnRlZ2VycyB0byByZXByZXNlbnQKLSAgIHJ1bm5pbmcgY291bnRzOyBob3dldmVyLCBjYXJlIHdhcyB0YWtlbiB0byBub3QgdW5uZWNlc3NhcmlseSBwcmVjbHVkZSB1c2UKLSAgIGNhc2VzIG5lZWRpbmcgb3RoZXIgdHlwZXMgb3IgbmVnYXRpdmUgdmFsdWVzLiAgVG8gaGVscCB3aXRoIHRob3NlIHVzZSBjYXNlcywKLSAgIHRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhlIG1pbmltdW0gcmFuZ2UgYW5kIHR5cGUgcmVzdHJpY3Rpb25zLgorICAgIENvdW50ZXJzIHdlcmUgcHJpbWFyaWx5IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBwb3NpdGl2ZSBpbnRlZ2VycyB0byByZXByZXNlbnQKKyAgICBydW5uaW5nIGNvdW50czsgaG93ZXZlciwgY2FyZSB3YXMgdGFrZW4gdG8gbm90IHVubmVjZXNzYXJpbHkgcHJlY2x1ZGUgdXNlCisgICAgY2FzZXMgbmVlZGluZyBvdGhlciB0eXBlcyBvciBuZWdhdGl2ZSB2YWx1ZXMuICBUbyBoZWxwIHdpdGggdGhvc2UgdXNlIGNhc2VzLAorICAgIHRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhlIG1pbmltdW0gcmFuZ2UgYW5kIHR5cGUgcmVzdHJpY3Rpb25zLgogCi0gICAqIFRoZSA6Y2xhc3M6YENvdW50ZXJgIGNsYXNzIGl0c2VsZiBpcyBhIGRpY3Rpb25hcnkgc3ViY2xhc3Mgd2l0aCBubwotICAgICByZXN0cmljdGlvbnMgb24gaXRzIGtleXMgYW5kIHZhbHVlcy4gIFRoZSB2YWx1ZXMgYXJlIGludGVuZGVkIHRvIGJlIG51bWJlcnMKLSAgICAgcmVwcmVzZW50aW5nIGNvdW50cywgYnV0IHlvdSAqY291bGQqIHN0b3JlIGFueXRoaW5nIGluIHRoZSB2YWx1ZSBmaWVsZC4KKyAgICAqIFRoZSA6Y2xhc3M6YENvdW50ZXJgIGNsYXNzIGl0c2VsZiBpcyBhIGRpY3Rpb25hcnkgc3ViY2xhc3Mgd2l0aCBubworICAgICAgICByZXN0cmljdGlvbnMgb24gaXRzIGtleXMgYW5kIHZhbHVlcy4gIFRoZSB2YWx1ZXMgYXJlIGludGVuZGVkIHRvIGJlIG51bWJlcnMKKyAgICAgICAgcmVwcmVzZW50aW5nIGNvdW50cywgYnV0IHlvdSAqY291bGQqIHN0b3JlIGFueXRoaW5nIGluIHRoZSB2YWx1ZSBmaWVsZC4KIAotICAgKiBUaGUgOm1ldGg6YG1vc3RfY29tbW9uYCBtZXRob2QgcmVxdWlyZXMgb25seSB0aGF0IHRoZSB2YWx1ZXMgYmUgb3JkZXJhYmxlLgorICAgICogVGhlIDptZXRoOmBtb3N0X2NvbW1vbmAgbWV0aG9kIHJlcXVpcmVzIG9ubHkgdGhhdCB0aGUgdmFsdWVzIGJlIG9yZGVyYWJsZS4KIAotICAgKiBGb3IgaW4tcGxhY2Ugb3BlcmF0aW9ucyBzdWNoIGFzIGBgY1trZXldICs9IDFgYCwgdGhlIHZhbHVlIHR5cGUgbmVlZCBvbmx5Ci0gICAgIHN1cHBvcnQgYWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uLiAgU28gZnJhY3Rpb25zLCBmbG9hdHMsIGFuZCBkZWNpbWFscyB3b3VsZAotICAgICB3b3JrIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHN1cHBvcnRlZC4gIFRoZSBzYW1lIGlzIGFsc28gdHJ1ZSBmb3IKLSAgICAgOm1ldGg6YHVwZGF0ZWAgYW5kIDptZXRoOmBzdWJ0cmFjdGAgd2hpY2ggYWxsb3cgbmVnYXRpdmUgYW5kIHplcm8gdmFsdWVzCi0gICAgIGZvciBib3RoIGlucHV0cyBhbmQgb3V0cHV0cy4KKyAgICAqIEZvciBpbi1wbGFjZSBvcGVyYXRpb25zIHN1Y2ggYXMgYGBjW2tleV0gKz0gMWBgLCB0aGUgdmFsdWUgdHlwZSBuZWVkIG9ubHkKKyAgICAgICAgc3VwcG9ydCBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24uICBTbyBmcmFjdGlvbnMsIGZsb2F0cywgYW5kIGRlY2ltYWxzIHdvdWxkCisgICAgICAgIHdvcmsgYW5kIG5lZ2F0aXZlIHZhbHVlcyBhcmUgc3VwcG9ydGVkLiAgVGhlIHNhbWUgaXMgYWxzbyB0cnVlIGZvcgorICAgICAgICA6bWV0aDpgdXBkYXRlYCBhbmQgOm1ldGg6YHN1YnRyYWN0YCB3aGljaCBhbGxvdyBuZWdhdGl2ZSBhbmQgemVybyB2YWx1ZXMKKyAgICAgICAgZm9yIGJvdGggaW5wdXRzIGFuZCBvdXRwdXRzLgogCi0gICAqIFRoZSBtdWx0aXNldCBtZXRob2RzIGFyZSBkZXNpZ25lZCBvbmx5IGZvciB1c2UgY2FzZXMgd2l0aCBwb3NpdGl2ZSB2YWx1ZXMuCi0gICAgIFRoZSBpbnB1dHMgbWF5IGJlIG5lZ2F0aXZlIG9yIHplcm8sIGJ1dCBvbmx5IG91dHB1dHMgd2l0aCBwb3NpdGl2ZSB2YWx1ZXMKLSAgICAgYXJlIGNyZWF0ZWQuICBUaGVyZSBhcmUgbm8gdHlwZSByZXN0cmljdGlvbnMsIGJ1dCB0aGUgdmFsdWUgdHlwZSBuZWVkcyB0bwotICAgICBzdXBwb3J0IGFkZGl0aW9uLCBzdWJ0cmFjdGlvbiwgYW5kIGNvbXBhcmlzb24uCisgICAgKiBUaGUgbXVsdGlzZXQgbWV0aG9kcyBhcmUgZGVzaWduZWQgb25seSBmb3IgdXNlIGNhc2VzIHdpdGggcG9zaXRpdmUgdmFsdWVzLgorICAgICAgICBUaGUgaW5wdXRzIG1heSBiZSBuZWdhdGl2ZSBvciB6ZXJvLCBidXQgb25seSBvdXRwdXRzIHdpdGggcG9zaXRpdmUgdmFsdWVzCisgICAgICAgIGFyZSBjcmVhdGVkLiAgVGhlcmUgYXJlIG5vIHR5cGUgcmVzdHJpY3Rpb25zLCBidXQgdGhlIHZhbHVlIHR5cGUgbmVlZHMgdG8KKyAgICAgICAgc3VwcG9ydCBhZGRpdGlvbiwgc3VidHJhY3Rpb24sIGFuZCBjb21wYXJpc29uLgogCi0gICAqIFRoZSA6bWV0aDpgZWxlbWVudHNgIG1ldGhvZCByZXF1aXJlcyBpbnRlZ2VyIGNvdW50cy4gIEl0IGlnbm9yZXMgemVybyBhbmQKLSAgICAgbmVnYXRpdmUgY291bnRzLgorICAgICogVGhlIDptZXRoOmBlbGVtZW50c2AgbWV0aG9kIHJlcXVpcmVzIGludGVnZXIgY291bnRzLiAgSXQgaWdub3JlcyB6ZXJvIGFuZAorICAgICAgICBuZWdhdGl2ZSBjb3VudHMuCiAKIC4uIHNlZWFsc286OgogCkBAIC0yMTcsNyArMzg3LDcgQEAKICAgICAqIFRvIGVudW1lcmF0ZSBhbGwgZGlzdGluY3QgbXVsdGlzZXRzIG9mIGEgZ2l2ZW4gc2l6ZSBvdmVyIGEgZ2l2ZW4gc2V0IG9mCiAgICAgICBlbGVtZW50cywgc2VlIDpmdW5jOmBpdGVydG9vbHMuY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnRgLgogCi0gICAgICAgICAgbWFwKENvdW50ZXIsIGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCdBQkMnLCAyKSkgLS0+IEFBIEFCIEFDIEJCIEJDIENDCisgICAgICAgICAgICBtYXAoQ291bnRlciwgY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoJ0FCQycsIDIpKSAtLT4gQUEgQUIgQUMgQkIgQkMgQ0MKIAogCiA6Y2xhc3M6YGRlcXVlYCBvYmplY3RzCkBAIC0yMjUsMTA1ICszOTUsMTA1IEBACiAKIC4uIGNsYXNzOjogZGVxdWUoW2l0ZXJhYmxlLCBbbWF4bGVuXV0pCiAKLSAgIFJldHVybnMgYSBuZXcgZGVxdWUgb2JqZWN0IGluaXRpYWxpemVkIGxlZnQtdG8tcmlnaHQgKHVzaW5nIDptZXRoOmBhcHBlbmRgKSB3aXRoCi0gICBkYXRhIGZyb20gKml0ZXJhYmxlKi4gIElmICppdGVyYWJsZSogaXMgbm90IHNwZWNpZmllZCwgdGhlIG5ldyBkZXF1ZSBpcyBlbXB0eS4KKyAgICBSZXR1cm5zIGEgbmV3IGRlcXVlIG9iamVjdCBpbml0aWFsaXplZCBsZWZ0LXRvLXJpZ2h0ICh1c2luZyA6bWV0aDpgYXBwZW5kYCkgd2l0aAorICAgIGRhdGEgZnJvbSAqaXRlcmFibGUqLiAgSWYgKml0ZXJhYmxlKiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbmV3IGRlcXVlIGlzIGVtcHR5LgogCi0gICBEZXF1ZXMgYXJlIGEgZ2VuZXJhbGl6YXRpb24gb2Ygc3RhY2tzIGFuZCBxdWV1ZXMgKHRoZSBuYW1lIGlzIHByb25vdW5jZWQgImRlY2siCi0gICBhbmQgaXMgc2hvcnQgZm9yICJkb3VibGUtZW5kZWQgcXVldWUiKS4gIERlcXVlcyBzdXBwb3J0IHRocmVhZC1zYWZlLCBtZW1vcnkKLSAgIGVmZmljaWVudCBhcHBlbmRzIGFuZCBwb3BzIGZyb20gZWl0aGVyIHNpZGUgb2YgdGhlIGRlcXVlIHdpdGggYXBwcm94aW1hdGVseSB0aGUKLSAgIHNhbWUgTygxKSBwZXJmb3JtYW5jZSBpbiBlaXRoZXIgZGlyZWN0aW9uLgorICAgIERlcXVlcyBhcmUgYSBnZW5lcmFsaXphdGlvbiBvZiBzdGFja3MgYW5kIHF1ZXVlcyAodGhlIG5hbWUgaXMgcHJvbm91bmNlZCAiZGVjayIKKyAgICBhbmQgaXMgc2hvcnQgZm9yICJkb3VibGUtZW5kZWQgcXVldWUiKS4gIERlcXVlcyBzdXBwb3J0IHRocmVhZC1zYWZlLCBtZW1vcnkKKyAgICBlZmZpY2llbnQgYXBwZW5kcyBhbmQgcG9wcyBmcm9tIGVpdGhlciBzaWRlIG9mIHRoZSBkZXF1ZSB3aXRoIGFwcHJveGltYXRlbHkgdGhlCisgICAgc2FtZSBPKDEpIHBlcmZvcm1hbmNlIGluIGVpdGhlciBkaXJlY3Rpb24uCiAKLSAgIFRob3VnaCA6Y2xhc3M6YGxpc3RgIG9iamVjdHMgc3VwcG9ydCBzaW1pbGFyIG9wZXJhdGlvbnMsIHRoZXkgYXJlIG9wdGltaXplZCBmb3IKLSAgIGZhc3QgZml4ZWQtbGVuZ3RoIG9wZXJhdGlvbnMgYW5kIGluY3VyIE8obikgbWVtb3J5IG1vdmVtZW50IGNvc3RzIGZvcgotICAgYGBwb3AoMClgYCBhbmQgYGBpbnNlcnQoMCwgdilgYCBvcGVyYXRpb25zIHdoaWNoIGNoYW5nZSBib3RoIHRoZSBzaXplIGFuZAotICAgcG9zaXRpb24gb2YgdGhlIHVuZGVybHlpbmcgZGF0YSByZXByZXNlbnRhdGlvbi4KKyAgICBUaG91Z2ggOmNsYXNzOmBsaXN0YCBvYmplY3RzIHN1cHBvcnQgc2ltaWxhciBvcGVyYXRpb25zLCB0aGV5IGFyZSBvcHRpbWl6ZWQgZm9yCisgICAgZmFzdCBmaXhlZC1sZW5ndGggb3BlcmF0aW9ucyBhbmQgaW5jdXIgTyhuKSBtZW1vcnkgbW92ZW1lbnQgY29zdHMgZm9yCisgICAgYGBwb3AoMClgYCBhbmQgYGBpbnNlcnQoMCwgdilgYCBvcGVyYXRpb25zIHdoaWNoIGNoYW5nZSBib3RoIHRoZSBzaXplIGFuZAorICAgIHBvc2l0aW9uIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEgcmVwcmVzZW50YXRpb24uCiAKIAotICAgSWYgKm1heGxlbiogaXMgbm90IHNwZWNpZmllZCBvciBpcyAqTm9uZSosIGRlcXVlcyBtYXkgZ3JvdyB0byBhbgotICAgYXJiaXRyYXJ5IGxlbmd0aC4gIE90aGVyd2lzZSwgdGhlIGRlcXVlIGlzIGJvdW5kZWQgdG8gdGhlIHNwZWNpZmllZCBtYXhpbXVtCi0gICBsZW5ndGguICBPbmNlIGEgYm91bmRlZCBsZW5ndGggZGVxdWUgaXMgZnVsbCwgd2hlbiBuZXcgaXRlbXMgYXJlIGFkZGVkLCBhCi0gICBjb3JyZXNwb25kaW5nIG51bWJlciBvZiBpdGVtcyBhcmUgZGlzY2FyZGVkIGZyb20gdGhlIG9wcG9zaXRlIGVuZC4gIEJvdW5kZWQKLSAgIGxlbmd0aCBkZXF1ZXMgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlIGBgdGFpbGBgIGZpbHRlciBpbgotICAgVW5peC4gVGhleSBhcmUgYWxzbyB1c2VmdWwgZm9yIHRyYWNraW5nIHRyYW5zYWN0aW9ucyBhbmQgb3RoZXIgcG9vbHMgb2YgZGF0YQotICAgd2hlcmUgb25seSB0aGUgbW9zdCByZWNlbnQgYWN0aXZpdHkgaXMgb2YgaW50ZXJlc3QuCisgICAgSWYgKm1heGxlbiogaXMgbm90IHNwZWNpZmllZCBvciBpcyAqTm9uZSosIGRlcXVlcyBtYXkgZ3JvdyB0byBhbgorICAgIGFyYml0cmFyeSBsZW5ndGguICBPdGhlcndpc2UsIHRoZSBkZXF1ZSBpcyBib3VuZGVkIHRvIHRoZSBzcGVjaWZpZWQgbWF4aW11bQorICAgIGxlbmd0aC4gIE9uY2UgYSBib3VuZGVkIGxlbmd0aCBkZXF1ZSBpcyBmdWxsLCB3aGVuIG5ldyBpdGVtcyBhcmUgYWRkZWQsIGEKKyAgICBjb3JyZXNwb25kaW5nIG51bWJlciBvZiBpdGVtcyBhcmUgZGlzY2FyZGVkIGZyb20gdGhlIG9wcG9zaXRlIGVuZC4gIEJvdW5kZWQKKyAgICBsZW5ndGggZGVxdWVzIHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZSBgYHRhaWxgYCBmaWx0ZXIgaW4KKyAgICBVbml4LiBUaGV5IGFyZSBhbHNvIHVzZWZ1bCBmb3IgdHJhY2tpbmcgdHJhbnNhY3Rpb25zIGFuZCBvdGhlciBwb29scyBvZiBkYXRhCisgICAgd2hlcmUgb25seSB0aGUgbW9zdCByZWNlbnQgYWN0aXZpdHkgaXMgb2YgaW50ZXJlc3QuCiAKIAotICAgRGVxdWUgb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKyAgICBEZXF1ZSBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogCi0gICAuLiBtZXRob2Q6OiBhcHBlbmQoeCkKKyAgICAuLiBtZXRob2Q6OiBhcHBlbmQoeCkKIAotICAgICAgQWRkICp4KiB0byB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuCisgICAgICAgIEFkZCAqeCogdG8gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLgogCiAKLSAgIC4uIG1ldGhvZDo6IGFwcGVuZGxlZnQoeCkKKyAgICAuLiBtZXRob2Q6OiBhcHBlbmRsZWZ0KHgpCiAKLSAgICAgIEFkZCAqeCogdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuCisgICAgICAgIEFkZCAqeCogdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuCiAKIAotICAgLi4gbWV0aG9kOjogY2xlYXIoKQorICAgIC4uIG1ldGhvZDo6IGNsZWFyKCkKIAotICAgICAgUmVtb3ZlIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBkZXF1ZSBsZWF2aW5nIGl0IHdpdGggbGVuZ3RoIDAuCisgICAgICAgIFJlbW92ZSBhbGwgZWxlbWVudHMgZnJvbSB0aGUgZGVxdWUgbGVhdmluZyBpdCB3aXRoIGxlbmd0aCAwLgogCiAKLSAgIC4uIG1ldGhvZDo6IGNvdW50KHgpCisgICAgLi4gbWV0aG9kOjogY291bnQoeCkKIAotICAgICAgQ291bnQgdGhlIG51bWJlciBvZiBkZXF1ZSBlbGVtZW50cyBlcXVhbCB0byAqeCouCisgICAgICAgIENvdW50IHRoZSBudW1iZXIgb2YgZGVxdWUgZWxlbWVudHMgZXF1YWwgdG8gKngqLgogCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotICAgLi4gbWV0aG9kOjogZXh0ZW5kKGl0ZXJhYmxlKQorICAgIC4uIG1ldGhvZDo6IGV4dGVuZChpdGVyYWJsZSkKIAotICAgICAgRXh0ZW5kIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZSBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUKLSAgICAgIGFyZ3VtZW50LgorICAgICAgICBFeHRlbmQgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlIGJ5IGFwcGVuZGluZyBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYWJsZQorICAgICAgICBhcmd1bWVudC4KIAogCi0gICAuLiBtZXRob2Q6OiBleHRlbmRsZWZ0KGl0ZXJhYmxlKQorICAgIC4uIG1ldGhvZDo6IGV4dGVuZGxlZnQoaXRlcmFibGUpCiAKLSAgICAgIEV4dGVuZCB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZSBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSAqaXRlcmFibGUqLgotICAgICAgTm90ZSwgdGhlIHNlcmllcyBvZiBsZWZ0IGFwcGVuZHMgcmVzdWx0cyBpbiByZXZlcnNpbmcgdGhlIG9yZGVyIG9mCi0gICAgICBlbGVtZW50cyBpbiB0aGUgaXRlcmFibGUgYXJndW1lbnQuCisgICAgICAgIEV4dGVuZCB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZSBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSAqaXRlcmFibGUqLgorICAgICAgICBOb3RlLCB0aGUgc2VyaWVzIG9mIGxlZnQgYXBwZW5kcyByZXN1bHRzIGluIHJldmVyc2luZyB0aGUgb3JkZXIgb2YKKyAgICAgICAgZWxlbWVudHMgaW4gdGhlIGl0ZXJhYmxlIGFyZ3VtZW50LgogCiAKLSAgIC4uIG1ldGhvZDo6IHBvcCgpCisgICAgLi4gbWV0aG9kOjogcG9wKCkKIAotICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gZWxlbWVudCBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZS4gSWYgbm8KLSAgICAgIGVsZW1lbnRzIGFyZSBwcmVzZW50LCByYWlzZXMgYW4gOmV4YzpgSW5kZXhFcnJvcmAuCisgICAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuIElmIG5vCisgICAgICAgIGVsZW1lbnRzIGFyZSBwcmVzZW50LCByYWlzZXMgYW4gOmV4YzpgSW5kZXhFcnJvcmAuCiAKIAotICAgLi4gbWV0aG9kOjogcG9wbGVmdCgpCisgICAgLi4gbWV0aG9kOjogcG9wbGVmdCgpCiAKLSAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZS4gSWYgbm8KLSAgICAgIGVsZW1lbnRzIGFyZSBwcmVzZW50LCByYWlzZXMgYW4gOmV4YzpgSW5kZXhFcnJvcmAuCisgICAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZS4gSWYgbm8KKyAgICAgICAgZWxlbWVudHMgYXJlIHByZXNlbnQsIHJhaXNlcyBhbiA6ZXhjOmBJbmRleEVycm9yYC4KIAogCi0gICAuLiBtZXRob2Q6OiByZW1vdmUodmFsdWUpCisgICAgLi4gbWV0aG9kOjogcmVtb3ZlKHZhbHVlKQogCi0gICAgICBSZW1vdmVkIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICp2YWx1ZSouICBJZiBub3QgZm91bmQsIHJhaXNlcyBhCi0gICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4KKyAgICAgICAgUmVtb3ZlZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqdmFsdWUqLiAgSWYgbm90IGZvdW5kLCByYWlzZXMgYQorICAgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4KIAogCi0gICAuLiBtZXRob2Q6OiByZXZlcnNlKCkKKyAgICAuLiBtZXRob2Q6OiByZXZlcnNlKCkKIAotICAgICAgUmV2ZXJzZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlcXVlIGluLXBsYWNlIGFuZCB0aGVuIHJldHVybiBgYE5vbmVgYC4KKyAgICAgICAgUmV2ZXJzZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlcXVlIGluLXBsYWNlIGFuZCB0aGVuIHJldHVybiBgYE5vbmVgYC4KIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLSAgIC4uIG1ldGhvZDo6IHJvdGF0ZShuKQorICAgIC4uIG1ldGhvZDo6IHJvdGF0ZShuKQogCi0gICAgICBSb3RhdGUgdGhlIGRlcXVlICpuKiBzdGVwcyB0byB0aGUgcmlnaHQuICBJZiAqbiogaXMgbmVnYXRpdmUsIHJvdGF0ZSB0bwotICAgICAgdGhlIGxlZnQuICBSb3RhdGluZyBvbmUgc3RlcCB0byB0aGUgcmlnaHQgaXMgZXF1aXZhbGVudCB0bzoKLSAgICAgIGBgZC5hcHBlbmRsZWZ0KGQucG9wKCkpYGAuCisgICAgICAgIFJvdGF0ZSB0aGUgZGVxdWUgKm4qIHN0ZXBzIHRvIHRoZSByaWdodC4gIElmICpuKiBpcyBuZWdhdGl2ZSwgcm90YXRlIHRvCisgICAgICAgIHRoZSBsZWZ0LiAgUm90YXRpbmcgb25lIHN0ZXAgdG8gdGhlIHJpZ2h0IGlzIGVxdWl2YWxlbnQgdG86CisgICAgICAgIGBgZC5hcHBlbmRsZWZ0KGQucG9wKCkpYGAuCiAKIAotICAgRGVxdWUgb2JqZWN0cyBhbHNvIHByb3ZpZGUgb25lIHJlYWQtb25seSBhdHRyaWJ1dGU6CisgICAgRGVxdWUgb2JqZWN0cyBhbHNvIHByb3ZpZGUgb25lIHJlYWQtb25seSBhdHRyaWJ1dGU6CiAKLSAgIC4uIGF0dHJpYnV0ZTo6IG1heGxlbgorICAgIC4uIGF0dHJpYnV0ZTo6IG1heGxlbgogCi0gICAgICBNYXhpbXVtIHNpemUgb2YgYSBkZXF1ZSBvciAqTm9uZSogaWYgdW5ib3VuZGVkLgorICAgICAgICBNYXhpbXVtIHNpemUgb2YgYSBkZXF1ZSBvciAqTm9uZSogaWYgdW5ib3VuZGVkLgogCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKIAogSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlLCBkZXF1ZXMgc3VwcG9ydCBpdGVyYXRpb24sIHBpY2tsaW5nLCBgYGxlbihkKWBgLApAQCAtMzM2LDU2ICs1MDYsNTYgQEAKIAogLi4gZG9jdGVzdDo6CiAKLSAgID4+PiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQotICAgPj4+IGQgPSBkZXF1ZSgnZ2hpJykgICAgICAgICAgICAgICAgICMgbWFrZSBhIG5ldyBkZXF1ZSB3aXRoIHRocmVlIGl0ZW1zCi0gICA+Pj4gZm9yIGVsZW0gaW4gZDogICAgICAgICAgICAgICAgICAgIyBpdGVyYXRlIG92ZXIgdGhlIGRlcXVlJ3MgZWxlbWVudHMKLSAgIC4uLiAgICAgcHJpbnQoZWxlbS51cHBlcigpKQotICAgRwotICAgSAotICAgSQorICAgID4+PiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorICAgID4+PiBkID0gZGVxdWUoJ2doaScpICAgICAgICAgICAgICAgICAjIG1ha2UgYSBuZXcgZGVxdWUgd2l0aCB0aHJlZSBpdGVtcworICAgID4+PiBmb3IgZWxlbSBpbiBkOiAgICAgICAgICAgICAgICAgICAjIGl0ZXJhdGUgb3ZlciB0aGUgZGVxdWUncyBlbGVtZW50cworICAgIC4uLiAgICAgcHJpbnQoZWxlbS51cHBlcigpKQorICAgIEcKKyAgICBICisgICAgSQogCi0gICA+Pj4gZC5hcHBlbmQoJ2onKSAgICAgICAgICAgICAgICAgICAgIyBhZGQgYSBuZXcgZW50cnkgdG8gdGhlIHJpZ2h0IHNpZGUKLSAgID4+PiBkLmFwcGVuZGxlZnQoJ2YnKSAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbGVmdCBzaWRlCi0gICA+Pj4gZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVxdWUKLSAgIGRlcXVlKFsnZicsICdnJywgJ2gnLCAnaScsICdqJ10pCisgICAgPj4+IGQuYXBwZW5kKCdqJykgICAgICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IGVudHJ5IHRvIHRoZSByaWdodCBzaWRlCisgICAgPj4+IGQuYXBwZW5kbGVmdCgnZicpICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBsZWZ0IHNpZGUKKyAgICA+Pj4gZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVxdWUKKyAgICBkZXF1ZShbJ2YnLCAnZycsICdoJywgJ2knLCAnaiddKQogCi0gICA+Pj4gZC5wb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm4gYW5kIHJlbW92ZSB0aGUgcmlnaHRtb3N0IGl0ZW0KLSAgICdqJwotICAgPj4+IGQucG9wbGVmdCgpICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGFuZCByZW1vdmUgdGhlIGxlZnRtb3N0IGl0ZW0KLSAgICdmJwotICAgPj4+IGxpc3QoZCkgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgY29udGVudHMgb2YgdGhlIGRlcXVlCi0gICBbJ2cnLCAnaCcsICdpJ10KLSAgID4+PiBkWzBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBlZWsgYXQgbGVmdG1vc3QgaXRlbQotICAgJ2cnCi0gICA+Pj4gZFstMV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwZWVrIGF0IHJpZ2h0bW9zdCBpdGVtCi0gICAnaScKKyAgICA+Pj4gZC5wb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm4gYW5kIHJlbW92ZSB0aGUgcmlnaHRtb3N0IGl0ZW0KKyAgICAnaicKKyAgICA+Pj4gZC5wb3BsZWZ0KCkgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm4gYW5kIHJlbW92ZSB0aGUgbGVmdG1vc3QgaXRlbQorICAgICdmJworICAgID4+PiBsaXN0KGQpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxpc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBkZXF1ZQorICAgIFsnZycsICdoJywgJ2knXQorICAgID4+PiBkWzBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBlZWsgYXQgbGVmdG1vc3QgaXRlbQorICAgICdnJworICAgID4+PiBkWy0xXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBlZWsgYXQgcmlnaHRtb3N0IGl0ZW0KKyAgICAnaScKIAotICAgPj4+IGxpc3QocmV2ZXJzZWQoZCkpICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgY29udGVudHMgb2YgYSBkZXF1ZSBpbiByZXZlcnNlCi0gICBbJ2knLCAnaCcsICdnJ10KLSAgID4+PiAnaCcgaW4gZCAgICAgICAgICAgICAgICAgICAgICAgICAjIHNlYXJjaCB0aGUgZGVxdWUKLSAgIFRydWUKLSAgID4+PiBkLmV4dGVuZCgnamtsJykgICAgICAgICAgICAgICAgICAjIGFkZCBtdWx0aXBsZSBlbGVtZW50cyBhdCBvbmNlCi0gICA+Pj4gZAotICAgZGVxdWUoWydnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCddKQotICAgPj4+IGQucm90YXRlKDEpICAgICAgICAgICAgICAgICAgICAgICMgcmlnaHQgcm90YXRpb24KLSAgID4+PiBkCi0gICBkZXF1ZShbJ2wnLCAnZycsICdoJywgJ2knLCAnaicsICdrJ10pCi0gICA+Pj4gZC5yb3RhdGUoLTEpICAgICAgICAgICAgICAgICAgICAgIyBsZWZ0IHJvdGF0aW9uCi0gICA+Pj4gZAotICAgZGVxdWUoWydnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCddKQorICAgID4+PiBsaXN0KHJldmVyc2VkKGQpKSAgICAgICAgICAgICAgICAjIGxpc3QgdGhlIGNvbnRlbnRzIG9mIGEgZGVxdWUgaW4gcmV2ZXJzZQorICAgIFsnaScsICdoJywgJ2cnXQorICAgID4+PiAnaCcgaW4gZCAgICAgICAgICAgICAgICAgICAgICAgICAjIHNlYXJjaCB0aGUgZGVxdWUKKyAgICBUcnVlCisgICAgPj4+IGQuZXh0ZW5kKCdqa2wnKSAgICAgICAgICAgICAgICAgICMgYWRkIG11bHRpcGxlIGVsZW1lbnRzIGF0IG9uY2UKKyAgICA+Pj4gZAorICAgIGRlcXVlKFsnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnXSkKKyAgICA+Pj4gZC5yb3RhdGUoMSkgICAgICAgICAgICAgICAgICAgICAgIyByaWdodCByb3RhdGlvbgorICAgID4+PiBkCisgICAgZGVxdWUoWydsJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnayddKQorICAgID4+PiBkLnJvdGF0ZSgtMSkgICAgICAgICAgICAgICAgICAgICAjIGxlZnQgcm90YXRpb24KKyAgICA+Pj4gZAorICAgIGRlcXVlKFsnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnXSkKIAotICAgPj4+IGRlcXVlKHJldmVyc2VkKGQpKSAgICAgICAgICAgICAgICMgbWFrZSBhIG5ldyBkZXF1ZSBpbiByZXZlcnNlIG9yZGVyCi0gICBkZXF1ZShbJ2wnLCAnaycsICdqJywgJ2knLCAnaCcsICdnJ10pCi0gICA+Pj4gZC5jbGVhcigpICAgICAgICAgICAgICAgICAgICAgICAgIyBlbXB0eSB0aGUgZGVxdWUKLSAgID4+PiBkLnBvcCgpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCBwb3AgZnJvbSBhbiBlbXB0eSBkZXF1ZQotICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICBGaWxlICI8cHlzaGVsbCM2PiIsIGxpbmUgMSwgaW4gLXRvcGxldmVsLQotICAgICAgIGQucG9wKCkKLSAgIEluZGV4RXJyb3I6IHBvcCBmcm9tIGFuIGVtcHR5IGRlcXVlCisgICAgPj4+IGRlcXVlKHJldmVyc2VkKGQpKSAgICAgICAgICAgICAgICMgbWFrZSBhIG5ldyBkZXF1ZSBpbiByZXZlcnNlIG9yZGVyCisgICAgZGVxdWUoWydsJywgJ2snLCAnaicsICdpJywgJ2gnLCAnZyddKQorICAgID4+PiBkLmNsZWFyKCkgICAgICAgICAgICAgICAgICAgICAgICAjIGVtcHR5IHRoZSBkZXF1ZQorICAgID4+PiBkLnBvcCgpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCBwb3AgZnJvbSBhbiBlbXB0eSBkZXF1ZQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgRmlsZSAiPHB5c2hlbGwjNj4iLCBsaW5lIDEsIGluIC10b3BsZXZlbC0KKyAgICAgICAgICAgIGQucG9wKCkKKyAgICBJbmRleEVycm9yOiBwb3AgZnJvbSBhbiBlbXB0eSBkZXF1ZQogCi0gICA+Pj4gZC5leHRlbmRsZWZ0KCdhYmMnKSAgICAgICAgICAgICAgIyBleHRlbmRsZWZ0KCkgcmV2ZXJzZXMgdGhlIGlucHV0IG9yZGVyCi0gICA+Pj4gZAotICAgZGVxdWUoWydjJywgJ2InLCAnYSddKQorICAgID4+PiBkLmV4dGVuZGxlZnQoJ2FiYycpICAgICAgICAgICAgICAjIGV4dGVuZGxlZnQoKSByZXZlcnNlcyB0aGUgaW5wdXQgb3JkZXIKKyAgICA+Pj4gZAorICAgIGRlcXVlKFsnYycsICdiJywgJ2EnXSkKIAogCiA6Y2xhc3M6YGRlcXVlYCBSZWNpcGVzCkBAIC0zOTYsOSArNTY2LDEwIEBACiBCb3VuZGVkIGxlbmd0aCBkZXF1ZXMgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlIGBgdGFpbGBgIGZpbHRlcgogaW4gVW5peDo6CiAKLSAgIGRlZiB0YWlsKGZpbGVuYW1lLCBuPTEwKToKLSAgICAgICAnUmV0dXJuIHRoZSBsYXN0IG4gbGluZXMgb2YgYSBmaWxlJwotICAgICAgIHJldHVybiBkZXF1ZShvcGVuKGZpbGVuYW1lKSwgbikKKyAgICBkZWYgdGFpbChmaWxlbmFtZSwgbj0xMCk6CisgICAgICAgICdSZXR1cm4gdGhlIGxhc3QgbiBsaW5lcyBvZiBhIGZpbGUnCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBkZXF1ZShmLCBuKQogCiBBbm90aGVyIGFwcHJvYWNoIHRvIHVzaW5nIGRlcXVlcyBpcyB0byBtYWludGFpbiBhIHNlcXVlbmNlIG9mIHJlY2VudGx5CiBhZGRlZCBlbGVtZW50cyBieSBhcHBlbmRpbmcgdG8gdGhlIHJpZ2h0IGFuZCBwb3BwaW5nIHRvIHRoZSBsZWZ0OjoKQEAgLTQxOSwxMCArNTkwLDEwIEBACiBkZWxldGlvbi4gIEZvciBleGFtcGxlLCBhIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGBgZGVsIGRbbl1gYCByZWxpZXMgb24KIHRoZSA6bWV0aDpgcm90YXRlYCBtZXRob2QgdG8gcG9zaXRpb24gZWxlbWVudHMgdG8gYmUgcG9wcGVkOjoKIAotICAgZGVmIGRlbGV0ZV9udGgoZCwgbik6Ci0gICAgICAgZC5yb3RhdGUoLW4pCi0gICAgICAgZC5wb3BsZWZ0KCkKLSAgICAgICBkLnJvdGF0ZShuKQorICAgIGRlZiBkZWxldGVfbnRoKGQsIG4pOgorICAgICAgICBkLnJvdGF0ZSgtbikKKyAgICAgICAgZC5wb3BsZWZ0KCkKKyAgICAgICAgZC5yb3RhdGUobikKIAogVG8gaW1wbGVtZW50IDpjbGFzczpgZGVxdWVgIHNsaWNpbmcsIHVzZSBhIHNpbWlsYXIgYXBwcm9hY2ggYXBwbHlpbmcKIDptZXRoOmByb3RhdGVgIHRvIGJyaW5nIGEgdGFyZ2V0IGVsZW1lbnQgdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuIFJlbW92ZQpAQCAtNDM4LDUwICs2MDksNTAgQEAKIAogLi4gY2xhc3M6OiBkZWZhdWx0ZGljdChbZGVmYXVsdF9mYWN0b3J5WywgLi4uXV0pCiAKLSAgIFJldHVybnMgYSBuZXcgZGljdGlvbmFyeS1saWtlIG9iamVjdC4gIDpjbGFzczpgZGVmYXVsdGRpY3RgIGlzIGEgc3ViY2xhc3Mgb2YgdGhlCi0gICBidWlsdC1pbiA6Y2xhc3M6YGRpY3RgIGNsYXNzLiAgSXQgb3ZlcnJpZGVzIG9uZSBtZXRob2QgYW5kIGFkZHMgb25lIHdyaXRhYmxlCi0gICBpbnN0YW5jZSB2YXJpYWJsZS4gIFRoZSByZW1haW5pbmcgZnVuY3Rpb25hbGl0eSBpcyB0aGUgc2FtZSBhcyBmb3IgdGhlCi0gICA6Y2xhc3M6YGRpY3RgIGNsYXNzIGFuZCBpcyBub3QgZG9jdW1lbnRlZCBoZXJlLgorICAgIFJldHVybnMgYSBuZXcgZGljdGlvbmFyeS1saWtlIG9iamVjdC4gIDpjbGFzczpgZGVmYXVsdGRpY3RgIGlzIGEgc3ViY2xhc3Mgb2YgdGhlCisgICAgYnVpbHQtaW4gOmNsYXNzOmBkaWN0YCBjbGFzcy4gIEl0IG92ZXJyaWRlcyBvbmUgbWV0aG9kIGFuZCBhZGRzIG9uZSB3cml0YWJsZQorICAgIGluc3RhbmNlIHZhcmlhYmxlLiAgVGhlIHJlbWFpbmluZyBmdW5jdGlvbmFsaXR5IGlzIHRoZSBzYW1lIGFzIGZvciB0aGUKKyAgICA6Y2xhc3M6YGRpY3RgIGNsYXNzIGFuZCBpcyBub3QgZG9jdW1lbnRlZCBoZXJlLgogCi0gICBUaGUgZmlyc3QgYXJndW1lbnQgcHJvdmlkZXMgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YAotICAgYXR0cmlidXRlOyBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYC4gQWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRyZWF0ZWQgdGhlIHNhbWUKLSAgIGFzIGlmIHRoZXkgd2VyZSBwYXNzZWQgdG8gdGhlIDpjbGFzczpgZGljdGAgY29uc3RydWN0b3IsIGluY2x1ZGluZyBrZXl3b3JkCi0gICBhcmd1bWVudHMuCisgICAgVGhlIGZpcnN0IGFyZ3VtZW50IHByb3ZpZGVzIHRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAKKyAgICBhdHRyaWJ1dGU7IGl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLiBBbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdHJlYXRlZCB0aGUgc2FtZQorICAgIGFzIGlmIHRoZXkgd2VyZSBwYXNzZWQgdG8gdGhlIDpjbGFzczpgZGljdGAgY29uc3RydWN0b3IsIGluY2x1ZGluZyBrZXl3b3JkCisgICAgYXJndW1lbnRzLgogCiAKLSAgIDpjbGFzczpgZGVmYXVsdGRpY3RgIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZCBpbiBhZGRpdGlvbiB0byB0aGUKLSAgIHN0YW5kYXJkIDpjbGFzczpgZGljdGAgb3BlcmF0aW9uczoKKyAgICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2QgaW4gYWRkaXRpb24gdG8gdGhlCisgICAgc3RhbmRhcmQgOmNsYXNzOmBkaWN0YCBvcGVyYXRpb25zOgogCi0gICAuLiBtZXRob2Q6OiBfX21pc3NpbmdfXyhrZXkpCisgICAgLi4gbWV0aG9kOjogX19taXNzaW5nX18oa2V5KQogCi0gICAgICBJZiB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgYXR0cmlidXRlIGlzIGBgTm9uZWBgLCB0aGlzIHJhaXNlcyBhCi0gICAgICA6ZXhjOmBLZXlFcnJvcmAgZXhjZXB0aW9uIHdpdGggdGhlICprZXkqIGFzIGFyZ3VtZW50LgorICAgICAgICBJZiB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgYXR0cmlidXRlIGlzIGBgTm9uZWBgLCB0aGlzIHJhaXNlcyBhCisgICAgICAgIDpleGM6YEtleUVycm9yYCBleGNlcHRpb24gd2l0aCB0aGUgKmtleSogYXMgYXJndW1lbnQuCiAKLSAgICAgIElmIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGlzIG5vdCBgYE5vbmVgYCwgaXQgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzCi0gICAgICB0byBwcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGdpdmVuICprZXkqLCB0aGlzIHZhbHVlIGlzIGluc2VydGVkIGluCi0gICAgICB0aGUgZGljdGlvbmFyeSBmb3IgdGhlICprZXkqLCBhbmQgcmV0dXJuZWQuCisgICAgICAgIElmIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGlzIG5vdCBgYE5vbmVgYCwgaXQgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzCisgICAgICAgIHRvIHByb3ZpZGUgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZ2l2ZW4gKmtleSosIHRoaXMgdmFsdWUgaXMgaW5zZXJ0ZWQgaW4KKyAgICAgICAgdGhlIGRpY3Rpb25hcnkgZm9yIHRoZSAqa2V5KiwgYW5kIHJldHVybmVkLgogCi0gICAgICBJZiBjYWxsaW5nIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIHJhaXNlcyBhbiBleGNlcHRpb24gdGhpcyBleGNlcHRpb24gaXMKLSAgICAgIHByb3BhZ2F0ZWQgdW5jaGFuZ2VkLgorICAgICAgICBJZiBjYWxsaW5nIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIHJhaXNlcyBhbiBleGNlcHRpb24gdGhpcyBleGNlcHRpb24gaXMKKyAgICAgICAgcHJvcGFnYXRlZCB1bmNoYW5nZWQuCiAKLSAgICAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgOm1ldGg6YF9fZ2V0aXRlbV9fYCBtZXRob2Qgb2YgdGhlCi0gICAgICA6Y2xhc3M6YGRpY3RgIGNsYXNzIHdoZW4gdGhlIHJlcXVlc3RlZCBrZXkgaXMgbm90IGZvdW5kOyB3aGF0ZXZlciBpdAotICAgICAgcmV0dXJucyBvciByYWlzZXMgaXMgdGhlbiByZXR1cm5lZCBvciByYWlzZWQgYnkgOm1ldGg6YF9fZ2V0aXRlbV9fYC4KKyAgICAgICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSA6bWV0aDpgX19nZXRpdGVtX19gIG1ldGhvZCBvZiB0aGUKKyAgICAgICAgOmNsYXNzOmBkaWN0YCBjbGFzcyB3aGVuIHRoZSByZXF1ZXN0ZWQga2V5IGlzIG5vdCBmb3VuZDsgd2hhdGV2ZXIgaXQKKyAgICAgICAgcmV0dXJucyBvciByYWlzZXMgaXMgdGhlbiByZXR1cm5lZCBvciByYWlzZWQgYnkgOm1ldGg6YF9fZ2V0aXRlbV9fYC4KIAotICAgICAgTm90ZSB0aGF0IDptZXRoOmBfX21pc3NpbmdfX2AgaXMgKm5vdCogY2FsbGVkIGZvciBhbnkgb3BlcmF0aW9ucyBiZXNpZGVzCi0gICAgICA6bWV0aDpgX19nZXRpdGVtX19gLiBUaGlzIG1lYW5zIHRoYXQgOm1ldGg6YGdldGAgd2lsbCwgbGlrZSBub3JtYWwKLSAgICAgIGRpY3Rpb25hcmllcywgcmV0dXJuIGBgTm9uZWBgIGFzIGEgZGVmYXVsdCByYXRoZXIgdGhhbiB1c2luZwotICAgICAgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAuCisgICAgICAgIE5vdGUgdGhhdCA6bWV0aDpgX19taXNzaW5nX19gIGlzICpub3QqIGNhbGxlZCBmb3IgYW55IG9wZXJhdGlvbnMgYmVzaWRlcworICAgICAgICA6bWV0aDpgX19nZXRpdGVtX19gLiBUaGlzIG1lYW5zIHRoYXQgOm1ldGg6YGdldGAgd2lsbCwgbGlrZSBub3JtYWwKKyAgICAgICAgZGljdGlvbmFyaWVzLCByZXR1cm4gYGBOb25lYGAgYXMgYSBkZWZhdWx0IHJhdGhlciB0aGFuIHVzaW5nCisgICAgICAgIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgLgogCiAKLSAgIDpjbGFzczpgZGVmYXVsdGRpY3RgIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIGluc3RhbmNlIHZhcmlhYmxlOgorICAgIDpjbGFzczpgZGVmYXVsdGRpY3RgIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIGluc3RhbmNlIHZhcmlhYmxlOgogCiAKLSAgIC4uIGF0dHJpYnV0ZTo6IGRlZmF1bHRfZmFjdG9yeQorICAgIC4uIGF0dHJpYnV0ZTo6IGRlZmF1bHRfZmFjdG9yeQogCi0gICAgICBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IHRoZSA6bWV0aDpgX19taXNzaW5nX19gIG1ldGhvZDsgaXQgaXMKLSAgICAgIGluaXRpYWxpemVkIGZyb20gdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciwgaWYgcHJlc2VudCwgb3IgdG8KLSAgICAgIGBgTm9uZWBgLCBpZiBhYnNlbnQuCisgICAgICAgIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgYnkgdGhlIDptZXRoOmBfX21pc3NpbmdfX2AgbWV0aG9kOyBpdCBpcworICAgICAgICBpbml0aWFsaXplZCBmcm9tIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IsIGlmIHByZXNlbnQsIG9yIHRvCisgICAgICAgIGBgTm9uZWBgLCBpZiBhYnNlbnQuCiAKIAogOmNsYXNzOmBkZWZhdWx0ZGljdGAgRXhhbXBsZXMKQEAgLTQ5MCwxMyArNjYxLDEzIEBACiBVc2luZyA6Y2xhc3M6YGxpc3RgIGFzIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCwgaXQgaXMgZWFzeSB0byBncm91cCBhCiBzZXF1ZW5jZSBvZiBrZXktdmFsdWUgcGFpcnMgaW50byBhIGRpY3Rpb25hcnkgb2YgbGlzdHM6CiAKLSAgID4+PiBzID0gWygneWVsbG93JywgMSksICgnYmx1ZScsIDIpLCAoJ3llbGxvdycsIDMpLCAoJ2JsdWUnLCA0KSwgKCdyZWQnLCAxKV0KLSAgID4+PiBkID0gZGVmYXVsdGRpY3QobGlzdCkKLSAgID4+PiBmb3IgaywgdiBpbiBzOgotICAgLi4uICAgICBkW2tdLmFwcGVuZCh2KQotICAgLi4uCi0gICA+Pj4gbGlzdChkLml0ZW1zKCkpCi0gICBbKCdibHVlJywgWzIsIDRdKSwgKCdyZWQnLCBbMV0pLCAoJ3llbGxvdycsIFsxLCAzXSldCisgICAgPj4+IHMgPSBbKCd5ZWxsb3cnLCAxKSwgKCdibHVlJywgMiksICgneWVsbG93JywgMyksICgnYmx1ZScsIDQpLCAoJ3JlZCcsIDEpXQorICAgID4+PiBkID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICA+Pj4gZm9yIGssIHYgaW4gczoKKyAgICAuLi4gICAgIGRba10uYXBwZW5kKHYpCisgICAgLi4uCisgICAgPj4+IGxpc3QoZC5pdGVtcygpKQorICAgIFsoJ2JsdWUnLCBbMiwgNF0pLCAoJ3JlZCcsIFsxXSksICgneWVsbG93JywgWzEsIDNdKV0KIAogV2hlbiBlYWNoIGtleSBpcyBlbmNvdW50ZXJlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIGl0IGlzIG5vdCBhbHJlYWR5IGluIHRoZQogbWFwcGluZzsgc28gYW4gZW50cnkgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHVzaW5nIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YApAQCAtNTA2LDI0ICs2NzcsMjQgQEAKIDptZXRoOmBsaXN0LmFwcGVuZGAgb3BlcmF0aW9uIGFkZHMgYW5vdGhlciB2YWx1ZSB0byB0aGUgbGlzdC4gVGhpcyB0ZWNobmlxdWUgaXMKIHNpbXBsZXIgYW5kIGZhc3RlciB0aGFuIGFuIGVxdWl2YWxlbnQgdGVjaG5pcXVlIHVzaW5nIDptZXRoOmBkaWN0LnNldGRlZmF1bHRgOgogCi0gICA+Pj4gZCA9IHt9Ci0gICA+Pj4gZm9yIGssIHYgaW4gczoKLSAgIC4uLiAgICAgZC5zZXRkZWZhdWx0KGssIFtdKS5hcHBlbmQodikKLSAgIC4uLgotICAgPj4+IGxpc3QoZC5pdGVtcygpKQotICAgWygnYmx1ZScsIFsyLCA0XSksICgncmVkJywgWzFdKSwgKCd5ZWxsb3cnLCBbMSwgM10pXQorICAgID4+PiBkID0ge30KKyAgICA+Pj4gZm9yIGssIHYgaW4gczoKKyAgICAuLi4gICAgIGQuc2V0ZGVmYXVsdChrLCBbXSkuYXBwZW5kKHYpCisgICAgLi4uCisgICAgPj4+IGxpc3QoZC5pdGVtcygpKQorICAgIFsoJ2JsdWUnLCBbMiwgNF0pLCAoJ3JlZCcsIFsxXSksICgneWVsbG93JywgWzEsIDNdKV0KIAogU2V0dGluZyB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgdG8gOmNsYXNzOmBpbnRgIG1ha2VzIHRoZQogOmNsYXNzOmBkZWZhdWx0ZGljdGAgdXNlZnVsIGZvciBjb3VudGluZyAobGlrZSBhIGJhZyBvciBtdWx0aXNldCBpbiBvdGhlcgogbGFuZ3VhZ2VzKToKIAotICAgPj4+IHMgPSAnbWlzc2lzc2lwcGknCi0gICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGludCkKLSAgID4+PiBmb3IgayBpbiBzOgotICAgLi4uICAgICBkW2tdICs9IDEKLSAgIC4uLgotICAgPj4+IGxpc3QoZC5pdGVtcygpKQotICAgWygnaScsIDQpLCAoJ3AnLCAyKSwgKCdzJywgNCksICgnbScsIDEpXQorICAgID4+PiBzID0gJ21pc3Npc3NpcHBpJworICAgID4+PiBkID0gZGVmYXVsdGRpY3QoaW50KQorICAgID4+PiBmb3IgayBpbiBzOgorICAgIC4uLiAgICAgZFtrXSArPSAxCisgICAgLi4uCisgICAgPj4+IGxpc3QoZC5pdGVtcygpKQorICAgIFsoJ2knLCA0KSwgKCdwJywgMiksICgncycsIDQpLCAoJ20nLCAxKV0KIAogV2hlbiBhIGxldHRlciBpcyBmaXJzdCBlbmNvdW50ZXJlZCwgaXQgaXMgbWlzc2luZyBmcm9tIHRoZSBtYXBwaW5nLCBzbyB0aGUKIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGZ1bmN0aW9uIGNhbGxzIDpmdW5jOmBpbnRgIHRvIHN1cHBseSBhIGRlZmF1bHQgY291bnQgb2YKQEAgLTUzNCwyMyArNzA1LDIzIEBACiBpcyB0byB1c2UgYSBsYW1iZGEgZnVuY3Rpb24gd2hpY2ggY2FuIHN1cHBseSBhbnkgY29uc3RhbnQgdmFsdWUgKG5vdCBqdXN0CiB6ZXJvKToKIAotICAgPj4+IGRlZiBjb25zdGFudF9mYWN0b3J5KHZhbHVlKToKLSAgIC4uLiAgICAgcmV0dXJuIGxhbWJkYTogdmFsdWUKLSAgID4+PiBkID0gZGVmYXVsdGRpY3QoY29uc3RhbnRfZmFjdG9yeSgnPG1pc3Npbmc+JykpCi0gICA+Pj4gZC51cGRhdGUobmFtZT0nSm9obicsIGFjdGlvbj0ncmFuJykKLSAgID4+PiAnJShuYW1lKXMgJShhY3Rpb24pcyB0byAlKG9iamVjdClzJyAlIGQKLSAgICdKb2huIHJhbiB0byA8bWlzc2luZz4nCisgICAgPj4+IGRlZiBjb25zdGFudF9mYWN0b3J5KHZhbHVlKToKKyAgICAuLi4gICAgIHJldHVybiBsYW1iZGE6IHZhbHVlCisgICAgPj4+IGQgPSBkZWZhdWx0ZGljdChjb25zdGFudF9mYWN0b3J5KCc8bWlzc2luZz4nKSkKKyAgICA+Pj4gZC51cGRhdGUobmFtZT0nSm9obicsIGFjdGlvbj0ncmFuJykKKyAgICA+Pj4gJyUobmFtZSlzICUoYWN0aW9uKXMgdG8gJShvYmplY3QpcycgJSBkCisgICAgJ0pvaG4gcmFuIHRvIDxtaXNzaW5nPicKIAogU2V0dGluZyB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgdG8gOmNsYXNzOmBzZXRgIG1ha2VzIHRoZQogOmNsYXNzOmBkZWZhdWx0ZGljdGAgdXNlZnVsIGZvciBidWlsZGluZyBhIGRpY3Rpb25hcnkgb2Ygc2V0czoKIAotICAgPj4+IHMgPSBbKCdyZWQnLCAxKSwgKCdibHVlJywgMiksICgncmVkJywgMyksICgnYmx1ZScsIDQpLCAoJ3JlZCcsIDEpLCAoJ2JsdWUnLCA0KV0KLSAgID4+PiBkID0gZGVmYXVsdGRpY3Qoc2V0KQotICAgPj4+IGZvciBrLCB2IGluIHM6Ci0gICAuLi4gICAgIGRba10uYWRkKHYpCi0gICAuLi4KLSAgID4+PiBsaXN0KGQuaXRlbXMoKSkKLSAgIFsoJ2JsdWUnLCBzZXQoWzIsIDRdKSksICgncmVkJywgc2V0KFsxLCAzXSkpXQorICAgID4+PiBzID0gWygncmVkJywgMSksICgnYmx1ZScsIDIpLCAoJ3JlZCcsIDMpLCAoJ2JsdWUnLCA0KSwgKCdyZWQnLCAxKSwgKCdibHVlJywgNCldCisgICAgPj4+IGQgPSBkZWZhdWx0ZGljdChzZXQpCisgICAgPj4+IGZvciBrLCB2IGluIHM6CisgICAgLi4uICAgICBkW2tdLmFkZCh2KQorICAgIC4uLgorICAgID4+PiBsaXN0KGQuaXRlbXMoKSkKKyAgICBbKCdibHVlJywgezIsIDR9KSwgKCdyZWQnLCB7MSwgM30pXQogCiAKIDpmdW5jOmBuYW1lZHR1cGxlYCBGYWN0b3J5IEZ1bmN0aW9uIGZvciBUdXBsZXMgd2l0aCBOYW1lZCBGaWVsZHMKQEAgLTU2MiwxNjggKzczMywxMzEgQEAKIAogLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlKQogCi0gICBSZXR1cm5zIGEgbmV3IHR1cGxlIHN1YmNsYXNzIG5hbWVkICp0eXBlbmFtZSouICBUaGUgbmV3IHN1YmNsYXNzIGlzIHVzZWQgdG8KLSAgIGNyZWF0ZSB0dXBsZS1saWtlIG9iamVjdHMgdGhhdCBoYXZlIGZpZWxkcyBhY2Nlc3NpYmxlIGJ5IGF0dHJpYnV0ZSBsb29rdXAgYXMKLSAgIHdlbGwgYXMgYmVpbmcgaW5kZXhhYmxlIGFuZCBpdGVyYWJsZS4gIEluc3RhbmNlcyBvZiB0aGUgc3ViY2xhc3MgYWxzbyBoYXZlIGEKLSAgIGhlbHBmdWwgZG9jc3RyaW5nICh3aXRoIHR5cGVuYW1lIGFuZCBmaWVsZF9uYW1lcykgYW5kIGEgaGVscGZ1bCA6bWV0aDpgX19yZXByX19gCi0gICBtZXRob2Qgd2hpY2ggbGlzdHMgdGhlIHR1cGxlIGNvbnRlbnRzIGluIGEgYGBuYW1lPXZhbHVlYGAgZm9ybWF0LgorICAgIFJldHVybnMgYSBuZXcgdHVwbGUgc3ViY2xhc3MgbmFtZWQgKnR5cGVuYW1lKi4gIFRoZSBuZXcgc3ViY2xhc3MgaXMgdXNlZCB0bworICAgIGNyZWF0ZSB0dXBsZS1saWtlIG9iamVjdHMgdGhhdCBoYXZlIGZpZWxkcyBhY2Nlc3NpYmxlIGJ5IGF0dHJpYnV0ZSBsb29rdXAgYXMKKyAgICB3ZWxsIGFzIGJlaW5nIGluZGV4YWJsZSBhbmQgaXRlcmFibGUuICBJbnN0YW5jZXMgb2YgdGhlIHN1YmNsYXNzIGFsc28gaGF2ZSBhCisgICAgaGVscGZ1bCBkb2NzdHJpbmcgKHdpdGggdHlwZW5hbWUgYW5kIGZpZWxkX25hbWVzKSBhbmQgYSBoZWxwZnVsIDptZXRoOmBfX3JlcHJfX2AKKyAgICBtZXRob2Qgd2hpY2ggbGlzdHMgdGhlIHR1cGxlIGNvbnRlbnRzIGluIGEgYGBuYW1lPXZhbHVlYGAgZm9ybWF0LgogCi0gICBUaGUgKmZpZWxkX25hbWVzKiBhcmUgYSBzaW5nbGUgc3RyaW5nIHdpdGggZWFjaCBmaWVsZG5hbWUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UKLSAgIGFuZC9vciBjb21tYXMsIGZvciBleGFtcGxlIGBgJ3ggeSdgYCBvciBgYCd4LCB5J2BgLiAgQWx0ZXJuYXRpdmVseSwgKmZpZWxkX25hbWVzKgotICAgY2FuIGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBzdWNoIGFzIGBgWyd4JywgJ3knXWBgLgorICAgIFRoZSAqZmllbGRfbmFtZXMqIGFyZSBhIHNpbmdsZSBzdHJpbmcgd2l0aCBlYWNoIGZpZWxkbmFtZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZQorICAgIGFuZC9vciBjb21tYXMsIGZvciBleGFtcGxlIGBgJ3ggeSdgYCBvciBgYCd4LCB5J2BgLiAgQWx0ZXJuYXRpdmVseSwgKmZpZWxkX25hbWVzKgorICAgIGNhbiBiZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3Mgc3VjaCBhcyBgYFsneCcsICd5J11gYC4KIAotICAgQW55IHZhbGlkIFB5dGhvbiBpZGVudGlmaWVyIG1heSBiZSB1c2VkIGZvciBhIGZpZWxkbmFtZSBleGNlcHQgZm9yIG5hbWVzCi0gICBzdGFydGluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBWYWxpZCBpZGVudGlmaWVycyBjb25zaXN0IG9mIGxldHRlcnMsIGRpZ2l0cywKLSAgIGFuZCB1bmRlcnNjb3JlcyBidXQgZG8gbm90IHN0YXJ0IHdpdGggYSBkaWdpdCBvciB1bmRlcnNjb3JlIGFuZCBjYW5ub3QgYmUKLSAgIGEgOm1vZDpga2V5d29yZGAgc3VjaCBhcyAqY2xhc3MqLCAqZm9yKiwgKnJldHVybiosICpnbG9iYWwqLCAqcGFzcyosCi0gICBvciAqcmFpc2UqLgorICAgIEFueSB2YWxpZCBQeXRob24gaWRlbnRpZmllciBtYXkgYmUgdXNlZCBmb3IgYSBmaWVsZG5hbWUgZXhjZXB0IGZvciBuYW1lcworICAgIHN0YXJ0aW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFZhbGlkIGlkZW50aWZpZXJzIGNvbnNpc3Qgb2YgbGV0dGVycywgZGlnaXRzLAorICAgIGFuZCB1bmRlcnNjb3JlcyBidXQgZG8gbm90IHN0YXJ0IHdpdGggYSBkaWdpdCBvciB1bmRlcnNjb3JlIGFuZCBjYW5ub3QgYmUKKyAgICBhIDptb2Q6YGtleXdvcmRgIHN1Y2ggYXMgKmNsYXNzKiwgKmZvciosICpyZXR1cm4qLCAqZ2xvYmFsKiwgKnBhc3MqLAorICAgIG9yICpyYWlzZSouCiAKLSAgIElmICpyZW5hbWUqIGlzIHRydWUsIGludmFsaWQgZmllbGRuYW1lcyBhcmUgYXV0b21hdGljYWxseSByZXBsYWNlZAotICAgd2l0aCBwb3NpdGlvbmFsIG5hbWVzLiAgRm9yIGV4YW1wbGUsIGBgWydhYmMnLCAnZGVmJywgJ2doaScsICdhYmMnXWBgIGlzCi0gICBjb252ZXJ0ZWQgdG8gYGBbJ2FiYycsICdfMScsICdnaGknLCAnXzMnXWBgLCBlbGltaW5hdGluZyB0aGUga2V5d29yZAotICAgYGBkZWZgYCBhbmQgdGhlIGR1cGxpY2F0ZSBmaWVsZG5hbWUgYGBhYmNgYC4KKyAgICBJZiAqcmVuYW1lKiBpcyB0cnVlLCBpbnZhbGlkIGZpZWxkbmFtZXMgYXJlIGF1dG9tYXRpY2FsbHkgcmVwbGFjZWQKKyAgICB3aXRoIHBvc2l0aW9uYWwgbmFtZXMuICBGb3IgZXhhbXBsZSwgYGBbJ2FiYycsICdkZWYnLCAnZ2hpJywgJ2FiYyddYGAgaXMKKyAgICBjb252ZXJ0ZWQgdG8gYGBbJ2FiYycsICdfMScsICdnaGknLCAnXzMnXWBgLCBlbGltaW5hdGluZyB0aGUga2V5d29yZAorICAgIGBgZGVmYGAgYW5kIHRoZSBkdXBsaWNhdGUgZmllbGRuYW1lIGBgYWJjYGAuCiAKLSAgIElmICp2ZXJib3NlKiBpcyB0cnVlLCB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyBwcmludGVkIGp1c3QgYmVmb3JlIGJlaW5nIGJ1aWx0LgorICAgIElmICp2ZXJib3NlKiBpcyB0cnVlLCB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyBwcmludGVkIGFmdGVyIGl0IGlzCisgICAgYnVpbHQuICBUaGlzIG9wdGlvbiBpcyBvdXRkYXRlZDsgaW5zdGVhZCwgaXQgaXMgc2ltcGxlciB0byBwcmludCB0aGUKKyAgICA6YXR0cjpgX3NvdXJjZWAgYXR0cmlidXRlLgogCi0gICBOYW1lZCB0dXBsZSBpbnN0YW5jZXMgZG8gbm90IGhhdmUgcGVyLWluc3RhbmNlIGRpY3Rpb25hcmllcywgc28gdGhleSBhcmUKLSAgIGxpZ2h0d2VpZ2h0IGFuZCByZXF1aXJlIG5vIG1vcmUgbWVtb3J5IHRoYW4gcmVndWxhciB0dXBsZXMuCisgICAgTmFtZWQgdHVwbGUgaW5zdGFuY2VzIGRvIG5vdCBoYXZlIHBlci1pbnN0YW5jZSBkaWN0aW9uYXJpZXMsIHNvIHRoZXkgYXJlCisgICAgbGlnaHR3ZWlnaHQgYW5kIHJlcXVpcmUgbm8gbW9yZSBtZW1vcnkgdGhhbiByZWd1bGFyIHR1cGxlcy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKLSAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICpyZW5hbWUqLgorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICpyZW5hbWUqLgogCiAKIC4uIGRvY3Rlc3Q6OgotICAgOm9wdGlvbnM6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQorICAgIDpvcHRpb25zOiArTk9STUFMSVpFX1dISVRFU1BBQ0UKIAotICAgPj4+ICMgQmFzaWMgZXhhbXBsZQotICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCBbJ3gnLCAneSddKQotICAgPj4+IHAgPSBQb2ludCh4PTEwLCB5PTExKQotCi0gICA+Pj4gIyBFeGFtcGxlIHVzaW5nIHRoZSB2ZXJib3NlIG9wdGlvbiB0byBwcmludCB0aGUgY2xhc3MgZGVmaW5pdGlvbgotICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JywgdmVyYm9zZT1UcnVlKQotICAgY2xhc3MgUG9pbnQodHVwbGUpOgotICAgICAgICAgICAnUG9pbnQoeCwgeSknCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgX2ZpZWxkcyA9ICgneCcsICd5JykKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIGRlZiBfX25ld19fKF9jbHMsIHgsIHkpOgotICAgICAgICAgICAgICAgJ0NyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQb2ludCh4LCB5KScKLSAgICAgICAgICAgICAgIHJldHVybiBfdHVwbGUuX19uZXdfXyhfY2xzLCAoeCwgeSkpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBAY2xhc3NtZXRob2QKLSAgICAgICAgICAgZGVmIF9tYWtlKGNscywgaXRlcmFibGUsIG5ldz10dXBsZS5fX25ld19fLCBsZW49bGVuKToKLSAgICAgICAgICAgICAgICdNYWtlIGEgbmV3IFBvaW50IG9iamVjdCBmcm9tIGEgc2VxdWVuY2Ugb3IgaXRlcmFibGUnCi0gICAgICAgICAgICAgICByZXN1bHQgPSBuZXcoY2xzLCBpdGVyYWJsZSkKLSAgICAgICAgICAgICAgIGlmIGxlbihyZXN1bHQpICE9IDI6Ci0gICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCAyIGFyZ3VtZW50cywgZ290ICVkJyAlIGxlbihyZXN1bHQpKQotICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAgICAgICAgJ1JldHVybiBhIG5pY2VseSBmb3JtYXR0ZWQgcmVwcmVzZW50YXRpb24gc3RyaW5nJwotICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fICsgJyh4PSVyLCB5PSVyKScgJSBzZWxmCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBkZWYgX2FzZGljdChzZWxmKToKLSAgICAgICAgICAgICAgICdSZXR1cm4gYSBuZXcgT3JkZXJlZERpY3Qgd2hpY2ggbWFwcyBmaWVsZCBuYW1lcyB0byB0aGVpciB2YWx1ZXMnCi0gICAgICAgICAgICAgICByZXR1cm4gT3JkZXJlZERpY3QoemlwKHNlbGYuX2ZpZWxkcywgc2VsZikpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBfX2RpY3RfXyA9IHByb3BlcnR5KF9hc2RpY3QpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBkZWYgX3JlcGxhY2UoX3NlbGYsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAnUmV0dXJuIGEgbmV3IFBvaW50IG9iamVjdCByZXBsYWNpbmcgc3BlY2lmaWVkIGZpZWxkcyB3aXRoIG5ldyB2YWx1ZXMnCi0gICAgICAgICAgICAgICByZXN1bHQgPSBfc2VsZi5fbWFrZShtYXAoa3dkcy5wb3AsICgneCcsICd5JyksIF9zZWxmKSkKLSAgICAgICAgICAgICAgIGlmIGt3ZHM6Ci0gICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignR290IHVuZXhwZWN0ZWQgZmllbGQgbmFtZXM6ICVyJyAlIGxpc3Qoa3dkcy5rZXlzKCkpKQotICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19fKHNlbGYpOgotICAgICAgICAgICAgICAgJ1JldHVybiBzZWxmIGFzIGEgcGxhaW4gdHVwbGUuICAgVXNlZCBieSBjb3B5IGFuZCBwaWNrbGUuJwotICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKHNlbGYpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICB4ID0gX3Byb3BlcnR5KF9pdGVtZ2V0dGVyKDApLCBkb2M9J0FsaWFzIGZvciBmaWVsZCBudW1iZXIgMCcpCi0gICAgICAgICAgIHkgPSBfcHJvcGVydHkoX2l0ZW1nZXR0ZXIoMSksIGRvYz0nQWxpYXMgZm9yIGZpZWxkIG51bWJlciAxJykKLQotICAgPj4+IHAgPSBQb2ludCgxMSwgeT0yMikgICAgICMgaW5zdGFudGlhdGUgd2l0aCBwb3NpdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzCi0gICA+Pj4gcFswXSArIHBbMV0gICAgICAgICAgICAgIyBpbmRleGFibGUgbGlrZSB0aGUgcGxhaW4gdHVwbGUgKDExLCAyMikKLSAgIDMzCi0gICA+Pj4geCwgeSA9IHAgICAgICAgICAgICAgICAgIyB1bnBhY2sgbGlrZSBhIHJlZ3VsYXIgdHVwbGUKLSAgID4+PiB4LCB5Ci0gICAoMTEsIDIyKQotICAgPj4+IHAueCArIHAueSAgICAgICAgICAgICAgICMgZmllbGRzIGFsc28gYWNjZXNzaWJsZSBieSBuYW1lCi0gICAzMwotICAgPj4+IHAgICAgICAgICAgICAgICAgICAgICAgICMgcmVhZGFibGUgX19yZXByX18gd2l0aCBhIG5hbWU9dmFsdWUgc3R5bGUKLSAgIFBvaW50KHg9MTEsIHk9MjIpCisgICAgPj4+ICMgQmFzaWMgZXhhbXBsZQorICAgID4+PiBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgWyd4JywgJ3knXSkKKyAgICA+Pj4gcCA9IFBvaW50KDExLCB5PTIyKSAgICAgIyBpbnN0YW50aWF0ZSB3aXRoIHBvc2l0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMKKyAgICA+Pj4gcFswXSArIHBbMV0gICAgICAgICAgICAgIyBpbmRleGFibGUgbGlrZSB0aGUgcGxhaW4gdHVwbGUgKDExLCAyMikKKyAgICAzMworICAgID4+PiB4LCB5ID0gcCAgICAgICAgICAgICAgICAjIHVucGFjayBsaWtlIGEgcmVndWxhciB0dXBsZQorICAgID4+PiB4LCB5CisgICAgKDExLCAyMikKKyAgICA+Pj4gcC54ICsgcC55ICAgICAgICAgICAgICAgIyBmaWVsZHMgYWxzbyBhY2Nlc3NpYmxlIGJ5IG5hbWUKKyAgICAzMworICAgID4+PiBwICAgICAgICAgICAgICAgICAgICAgICAjIHJlYWRhYmxlIF9fcmVwcl9fIHdpdGggYSBuYW1lPXZhbHVlIHN0eWxlCisgICAgUG9pbnQoeD0xMSwgeT0yMikKIAogTmFtZWQgdHVwbGVzIGFyZSBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgYXNzaWduaW5nIGZpZWxkIG5hbWVzIHRvIHJlc3VsdCB0dXBsZXMgcmV0dXJuZWQKIGJ5IHRoZSA6bW9kOmBjc3ZgIG9yIDptb2Q6YHNxbGl0ZTNgIG1vZHVsZXM6OgogCi0gICBFbXBsb3llZVJlY29yZCA9IG5hbWVkdHVwbGUoJ0VtcGxveWVlUmVjb3JkJywgJ25hbWUsIGFnZSwgdGl0bGUsIGRlcGFydG1lbnQsIHBheWdyYWRlJykKKyAgICBFbXBsb3llZVJlY29yZCA9IG5hbWVkdHVwbGUoJ0VtcGxveWVlUmVjb3JkJywgJ25hbWUsIGFnZSwgdGl0bGUsIGRlcGFydG1lbnQsIHBheWdyYWRlJykKIAotICAgaW1wb3J0IGNzdgotICAgZm9yIGVtcCBpbiBtYXAoRW1wbG95ZWVSZWNvcmQuX21ha2UsIGNzdi5yZWFkZXIob3BlbigiZW1wbG95ZWVzLmNzdiIsICJyYiIpKSk6Ci0gICAgICAgcHJpbnQoZW1wLm5hbWUsIGVtcC50aXRsZSkKKyAgICBpbXBvcnQgY3N2CisgICAgZm9yIGVtcCBpbiBtYXAoRW1wbG95ZWVSZWNvcmQuX21ha2UsIGNzdi5yZWFkZXIob3BlbigiZW1wbG95ZWVzLmNzdiIsICJyYiIpKSk6CisgICAgICAgIHByaW50KGVtcC5uYW1lLCBlbXAudGl0bGUpCiAKLSAgIGltcG9ydCBzcWxpdGUzCi0gICBjb25uID0gc3FsaXRlMy5jb25uZWN0KCcvY29tcGFueWRhdGEnKQotICAgY3Vyc29yID0gY29ubi5jdXJzb3IoKQotICAgY3Vyc29yLmV4ZWN1dGUoJ1NFTEVDVCBuYW1lLCBhZ2UsIHRpdGxlLCBkZXBhcnRtZW50LCBwYXlncmFkZSBGUk9NIGVtcGxveWVlcycpCi0gICBmb3IgZW1wIGluIG1hcChFbXBsb3llZVJlY29yZC5fbWFrZSwgY3Vyc29yLmZldGNoYWxsKCkpOgotICAgICAgIHByaW50KGVtcC5uYW1lLCBlbXAudGl0bGUpCisgICAgaW1wb3J0IHNxbGl0ZTMKKyAgICBjb25uID0gc3FsaXRlMy5jb25uZWN0KCcvY29tcGFueWRhdGEnKQorICAgIGN1cnNvciA9IGNvbm4uY3Vyc29yKCkKKyAgICBjdXJzb3IuZXhlY3V0ZSgnU0VMRUNUIG5hbWUsIGFnZSwgdGl0bGUsIGRlcGFydG1lbnQsIHBheWdyYWRlIEZST00gZW1wbG95ZWVzJykKKyAgICBmb3IgZW1wIGluIG1hcChFbXBsb3llZVJlY29yZC5fbWFrZSwgY3Vyc29yLmZldGNoYWxsKCkpOgorICAgICAgICBwcmludChlbXAubmFtZSwgZW1wLnRpdGxlKQogCiBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBpbmhlcml0ZWQgZnJvbSB0dXBsZXMsIG5hbWVkIHR1cGxlcyBzdXBwb3J0Ci10aHJlZSBhZGRpdGlvbmFsIG1ldGhvZHMgYW5kIG9uZSBhdHRyaWJ1dGUuICBUbyBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoCit0aHJlZSBhZGRpdGlvbmFsIG1ldGhvZHMgYW5kIHR3byBhdHRyaWJ1dGVzLiAgVG8gcHJldmVudCBjb25mbGljdHMgd2l0aAogZmllbGQgbmFtZXMsIHRoZSBtZXRob2QgYW5kIGF0dHJpYnV0ZSBuYW1lcyBzdGFydCB3aXRoIGFuIHVuZGVyc2NvcmUuCiAKIC4uIGNsYXNzbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX21ha2UoaXRlcmFibGUpCiAKLSAgIENsYXNzIG1ldGhvZCB0aGF0IG1ha2VzIGEgbmV3IGluc3RhbmNlIGZyb20gYW4gZXhpc3Rpbmcgc2VxdWVuY2Ugb3IgaXRlcmFibGUuCisgICAgQ2xhc3MgbWV0aG9kIHRoYXQgbWFrZXMgYSBuZXcgaW5zdGFuY2UgZnJvbSBhbiBleGlzdGluZyBzZXF1ZW5jZSBvciBpdGVyYWJsZS4KIAotLi4gZG9jdGVzdDo6CisgICAgLi4gZG9jdGVzdDo6CiAKLSAgICAgID4+PiB0ID0gWzExLCAyMl0KLSAgICAgID4+PiBQb2ludC5fbWFrZSh0KQotICAgICAgUG9pbnQoeD0xMSwgeT0yMikKKyAgICAgICAgPj4+IHQgPSBbMTEsIDIyXQorICAgICAgICA+Pj4gUG9pbnQuX21ha2UodCkKKyAgICAgICAgUG9pbnQoeD0xMSwgeT0yMikKIAogLi4gbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX2FzZGljdCgpCiAKLSAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YE9yZGVyZWREaWN0YCB3aGljaCBtYXBzIGZpZWxkIG5hbWVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcKLSAgIHZhbHVlczo6CisgICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgT3JkZXJlZERpY3RgIHdoaWNoIG1hcHMgZmllbGQgbmFtZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZworICAgIHZhbHVlcy4gIE5vdGUsIHRoaXMgbWV0aG9kIGlzIG5vIGxvbmdlciBuZWVkZWQgbm93IHRoYXQgdGhlIHNhbWUgZWZmZWN0IGNhbgorICAgIGJlIGFjaGlldmVkIGJ5IHVzaW5nIHRoZSBidWlsdC1pbiA6ZnVuYzpgdmFyc2AgZnVuY3Rpb246OgogCi0gICAgICA+Pj4gcC5fYXNkaWN0KCkKLSAgICAgIE9yZGVyZWREaWN0KFsoJ3gnLCAxMSksICgneScsIDIyKV0pCisgICAgICAgID4+PiB2YXJzKHApCisgICAgICAgIE9yZGVyZWREaWN0KFsoJ3gnLCAxMSksICgneScsIDIyKV0pCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCi0gICAgICBSZXR1cm5zIGFuIDpjbGFzczpgT3JkZXJlZERpY3RgIGluc3RlYWQgb2YgYSByZWd1bGFyIDpjbGFzczpgZGljdGAuCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKKyAgICAgICAgUmV0dXJucyBhbiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBpbnN0ZWFkIG9mIGEgcmVndWxhciA6Y2xhc3M6YGRpY3RgLgogCiAuLiBtZXRob2Q6OiBzb21lbmFtZWR0dXBsZS5fcmVwbGFjZShrd2FyZ3MpCiAKLSAgIFJldHVybiBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgbmFtZWQgdHVwbGUgcmVwbGFjaW5nIHNwZWNpZmllZCBmaWVsZHMgd2l0aCBuZXcKLSAgIHZhbHVlczoKKyAgICBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIG5hbWVkIHR1cGxlIHJlcGxhY2luZyBzcGVjaWZpZWQgZmllbGRzIHdpdGggbmV3CisgICAgdmFsdWVzOjoKIAotOjoKKyAgICAgICAgPj4+IHAgPSBQb2ludCh4PTExLCB5PTIyKQorICAgICAgICA+Pj4gcC5fcmVwbGFjZSh4PTMzKQorICAgICAgICBQb2ludCh4PTMzLCB5PTIyKQogCi0gICAgICA+Pj4gcCA9IFBvaW50KHg9MTEsIHk9MjIpCi0gICAgICA+Pj4gcC5fcmVwbGFjZSh4PTMzKQotICAgICAgUG9pbnQoeD0zMywgeT0yMikKKyAgICAgICAgPj4+IGZvciBwYXJ0bnVtLCByZWNvcmQgaW4gaW52ZW50b3J5Lml0ZW1zKCk6CisgICAgICAgIC4uLiAgICAgaW52ZW50b3J5W3BhcnRudW1dID0gcmVjb3JkLl9yZXBsYWNlKHByaWNlPW5ld3ByaWNlc1twYXJ0bnVtXSwgdGltZXN0YW1wPXRpbWUubm93KCkpCiAKLSAgICAgID4+PiBmb3IgcGFydG51bSwgcmVjb3JkIGluIGludmVudG9yeS5pdGVtcygpOgotICAgICAgLi4uICAgICBpbnZlbnRvcnlbcGFydG51bV0gPSByZWNvcmQuX3JlcGxhY2UocHJpY2U9bmV3cHJpY2VzW3BhcnRudW1dLCB0aW1lc3RhbXA9dGltZS5ub3coKSkKKy4uIGF0dHJpYnV0ZTo6IHNvbWVuYW1lZHR1cGxlLl9zb3VyY2UKKworICAgIEEgc3RyaW5nIHdpdGggdGhlIHB1cmUgUHl0aG9uIHNvdXJjZSBjb2RlIHVzZWQgdG8gY3JlYXRlIHRoZSBuYW1lZAorICAgIHR1cGxlIGNsYXNzLiAgVGhlIHNvdXJjZSBtYWtlcyB0aGUgbmFtZWQgdHVwbGUgc2VsZi1kb2N1bWVudGluZy4KKyAgICBJdCBjYW4gYmUgcHJpbnRlZCwgZXhlY3V0ZWQgdXNpbmcgOmZ1bmM6YGV4ZWNgLCBvciBzYXZlZCB0byBhIGZpbGUKKyAgICBhbmQgaW1wb3J0ZWQuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gYXR0cmlidXRlOjogc29tZW5hbWVkdHVwbGUuX2ZpZWxkcwogCi0gICBUdXBsZSBvZiBzdHJpbmdzIGxpc3RpbmcgdGhlIGZpZWxkIG5hbWVzLiAgVXNlZnVsIGZvciBpbnRyb3NwZWN0aW9uCi0gICBhbmQgZm9yIGNyZWF0aW5nIG5ldyBuYW1lZCB0dXBsZSB0eXBlcyBmcm9tIGV4aXN0aW5nIG5hbWVkIHR1cGxlcy4KKyAgICBUdXBsZSBvZiBzdHJpbmdzIGxpc3RpbmcgdGhlIGZpZWxkIG5hbWVzLiAgVXNlZnVsIGZvciBpbnRyb3NwZWN0aW9uCisgICAgYW5kIGZvciBjcmVhdGluZyBuZXcgbmFtZWQgdHVwbGUgdHlwZXMgZnJvbSBleGlzdGluZyBuYW1lZCB0dXBsZXMuCiAKLS4uIGRvY3Rlc3Q6OgorICAgIC4uIGRvY3Rlc3Q6OgogCi0gICAgICA+Pj4gcC5fZmllbGRzICAgICAgICAgICAgIyB2aWV3IHRoZSBmaWVsZCBuYW1lcwotICAgICAgKCd4JywgJ3knKQorICAgICAgICA+Pj4gcC5fZmllbGRzICAgICAgICAgICAgIyB2aWV3IHRoZSBmaWVsZCBuYW1lcworICAgICAgICAoJ3gnLCAneScpCiAKLSAgICAgID4+PiBDb2xvciA9IG5hbWVkdHVwbGUoJ0NvbG9yJywgJ3JlZCBncmVlbiBibHVlJykKLSAgICAgID4+PiBQaXhlbCA9IG5hbWVkdHVwbGUoJ1BpeGVsJywgUG9pbnQuX2ZpZWxkcyArIENvbG9yLl9maWVsZHMpCi0gICAgICA+Pj4gUGl4ZWwoMTEsIDIyLCAxMjgsIDI1NSwgMCkKLSAgICAgIFBpeGVsKHg9MTEsIHk9MjIsIHJlZD0xMjgsIGdyZWVuPTI1NSwgYmx1ZT0wKQorICAgICAgICA+Pj4gQ29sb3IgPSBuYW1lZHR1cGxlKCdDb2xvcicsICdyZWQgZ3JlZW4gYmx1ZScpCisgICAgICAgID4+PiBQaXhlbCA9IG5hbWVkdHVwbGUoJ1BpeGVsJywgUG9pbnQuX2ZpZWxkcyArIENvbG9yLl9maWVsZHMpCisgICAgICAgID4+PiBQaXhlbCgxMSwgMjIsIDEyOCwgMjU1LCAwKQorICAgICAgICBQaXhlbCh4PTExLCB5PTIyLCByZWQ9MTI4LCBncmVlbj0yNTUsIGJsdWU9MCkKIAogVG8gcmV0cmlldmUgYSBmaWVsZCB3aG9zZSBuYW1lIGlzIHN0b3JlZCBpbiBhIHN0cmluZywgdXNlIHRoZSA6ZnVuYzpgZ2V0YXR0cmAKIGZ1bmN0aW9uOgpAQCAtNzM0LDMxICs4NjgsMzAgQEAKIFRvIGNvbnZlcnQgYSBkaWN0aW9uYXJ5IHRvIGEgbmFtZWQgdHVwbGUsIHVzZSB0aGUgZG91YmxlLXN0YXItb3BlcmF0b3IKIChhcyBkZXNjcmliZWQgaW4gOnJlZjpgdHV0LXVucGFja2luZy1hcmd1bWVudHNgKToKIAotICAgPj4+IGQgPSB7J3gnOiAxMSwgJ3knOiAyMn0KLSAgID4+PiBQb2ludCgqKmQpCi0gICBQb2ludCh4PTExLCB5PTIyKQorICAgID4+PiBkID0geyd4JzogMTEsICd5JzogMjJ9CisgICAgPj4+IFBvaW50KCoqZCkKKyAgICBQb2ludCh4PTExLCB5PTIyKQogCiBTaW5jZSBhIG5hbWVkIHR1cGxlIGlzIGEgcmVndWxhciBQeXRob24gY2xhc3MsIGl0IGlzIGVhc3kgdG8gYWRkIG9yIGNoYW5nZQogZnVuY3Rpb25hbGl0eSB3aXRoIGEgc3ViY2xhc3MuICBIZXJlIGlzIGhvdyB0byBhZGQgYSBjYWxjdWxhdGVkIGZpZWxkIGFuZAogYSBmaXhlZC13aWR0aCBwcmludCBmb3JtYXQ6CiAKICAgICA+Pj4gY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgotICAgICAgICAgICAgX19zbG90c19fID0gKCkKLSAgICAgICAgICAgIEBwcm9wZXJ0eQotICAgICAgICAgICAgZGVmIGh5cG90KHNlbGYpOgotICAgICAgICAgICAgICAgIHJldHVybiAoc2VsZi54ICoqIDIgKyBzZWxmLnkgKiogMikgKiogMC41Ci0gICAgICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ1BvaW50OiB4PSU2LjNmICB5PSU2LjNmICBoeXBvdD0lNi4zZicgJSAoc2VsZi54LCBzZWxmLnksIHNlbGYuaHlwb3QpCisgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBkZWYgaHlwb3Qoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gKHNlbGYueCAqKiAyICsgc2VsZi55ICoqIDIpICoqIDAuNQorICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAnUG9pbnQ6IHg9JTYuM2YgIHk9JTYuM2YgIGh5cG90PSU2LjNmJyAlIChzZWxmLngsIHNlbGYueSwgc2VsZi5oeXBvdCkKIAogICAgID4+PiBmb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNyk6Ci0gICAgICAgICAgICBwcmludChwKQorICAgICAgICBwcmludChwKQogICAgIFBvaW50OiB4PSAzLjAwMCAgeT0gNC4wMDAgIGh5cG90PSA1LjAwMAogICAgIFBvaW50OiB4PTE0LjAwMCAgeT0gMC43MTQgIGh5cG90PTE0LjAxOAogCiBUaGUgc3ViY2xhc3Mgc2hvd24gYWJvdmUgc2V0cyBgYF9fc2xvdHNfX2BgIHRvIGFuIGVtcHR5IHR1cGxlLiAgVGhpcyBoZWxwcwoga2VlcCBtZW1vcnkgcmVxdWlyZW1lbnRzIGxvdyBieSBwcmV2ZW50aW5nIHRoZSBjcmVhdGlvbiBvZiBpbnN0YW5jZSBkaWN0aW9uYXJpZXMuCiAKLQogU3ViY2xhc3NpbmcgaXMgbm90IHVzZWZ1bCBmb3IgYWRkaW5nIG5ldywgc3RvcmVkIGZpZWxkcy4gIEluc3RlYWQsIHNpbXBseQogY3JlYXRlIGEgbmV3IG5hbWVkIHR1cGxlIHR5cGUgZnJvbSB0aGUgOmF0dHI6YF9maWVsZHNgIGF0dHJpYnV0ZToKIApAQCAtNzcwLDYgKzkwMyw3IEBACiAgICAgPj4+IEFjY291bnQgPSBuYW1lZHR1cGxlKCdBY2NvdW50JywgJ293bmVyIGJhbGFuY2UgdHJhbnNhY3Rpb25fY291bnQnKQogICAgID4+PiBkZWZhdWx0X2FjY291bnQgPSBBY2NvdW50KCc8b3duZXIgbmFtZT4nLCAwLjAsIDApCiAgICAgPj4+IGpvaG5zX2FjY291bnQgPSBkZWZhdWx0X2FjY291bnQuX3JlcGxhY2Uob3duZXI9J0pvaG4nKQorICAgID4+PiBqYW5lc19hY2NvdW50ID0gZGVmYXVsdF9hY2NvdW50Ll9yZXBsYWNlKG93bmVyPSdKYW5lJykKIAogRW51bWVyYXRlZCBjb25zdGFudHMgY2FuIGJlIGltcGxlbWVudGVkIHdpdGggbmFtZWQgdHVwbGVzLCBidXQgaXQgaXMgc2ltcGxlcgogYW5kIG1vcmUgZWZmaWNpZW50IHRvIHVzZSBhIHNpbXBsZSBjbGFzcyBkZWNsYXJhdGlvbjoKQEAgLTc3OCwxOSArOTEyLDE5IEBACiAgICAgPj4+IFN0YXR1cy5vcGVuLCBTdGF0dXMucGVuZGluZywgU3RhdHVzLmNsb3NlZAogICAgICgwLCAxLCAyKQogICAgID4+PiBjbGFzcyBTdGF0dXM6Ci0gICAgICAgICAgICBvcGVuLCBwZW5kaW5nLCBjbG9zZWQgPSByYW5nZSgzKQorICAgICAgICBvcGVuLCBwZW5kaW5nLCBjbG9zZWQgPSByYW5nZSgzKQogCiAuLiBzZWVhbHNvOjoKIAotICAgKiBgTmFtZWQgdHVwbGUgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81MDAyNjEvPmBfCi0gICAgIGFkYXB0ZWQgZm9yIFB5dGhvbiAyLjQuCisgICAgKiBgTmFtZWQgdHVwbGUgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81MDAyNjEvPmBfCisgICAgICBhZGFwdGVkIGZvciBQeXRob24gMi40LgogCi0gICAqIGBSZWNpcGUgZm9yIG5hbWVkIHR1cGxlIGFic3RyYWN0IGJhc2UgY2xhc3Mgd2l0aCBhIG1ldGFjbGFzcyBtaXgtaW4KLSAgICAgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NzYyOS1uYW1lZHR1cGxlYWJjLWFic3RyYWN0LWJhc2UtY2xhc3MtbWl4LWluLWZvci1uYW1lZC8+YF8KLSAgICAgYnkgSmFuIEthbGlzemV3c2tpLiAgQmVzaWRlcyBwcm92aWRpbmcgYW4gOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIGZvcgotICAgICBuYW1lZCB0dXBsZXMsIGl0IGFsc28gc3VwcG9ydHMgYW4gYWx0ZXJuYXRlIDp0ZXJtOmBtZXRhY2xhc3NgLWJhc2VkCi0gICAgIGNvbnN0cnVjdG9yIHRoYXQgaXMgY29udmVuaWVudCBmb3IgdXNlIGNhc2VzIHdoZXJlIG5hbWVkIHR1cGxlcyBhcmUgYmVpbmcKLSAgICAgc3ViY2xhc3NlZC4KKyAgICAqIGBSZWNpcGUgZm9yIG5hbWVkIHR1cGxlIGFic3RyYWN0IGJhc2UgY2xhc3Mgd2l0aCBhIG1ldGFjbGFzcyBtaXgtaW4KKyAgICAgIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81Nzc2MjktbmFtZWR0dXBsZWFiYy1hYnN0cmFjdC1iYXNlLWNsYXNzLW1peC1pbi1mb3ItbmFtZWQvPmBfCisgICAgICBieSBKYW4gS2FsaXN6ZXdza2kuICBCZXNpZGVzIHByb3ZpZGluZyBhbiA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgZm9yCisgICAgICBuYW1lZCB0dXBsZXMsIGl0IGFsc28gc3VwcG9ydHMgYW4gYWx0ZXJuYXRlIDp0ZXJtOmBtZXRhY2xhc3NgLWJhc2VkCisgICAgICBjb25zdHJ1Y3RvciB0aGF0IGlzIGNvbnZlbmllbnQgZm9yIHVzZSBjYXNlcyB3aGVyZSBuYW1lZCB0dXBsZXMgYXJlIGJlaW5nCisgICAgICBzdWJjbGFzc2VkLgogCiAKIDpjbGFzczpgT3JkZXJlZERpY3RgIG9iamVjdHMKQEAgLTgwMiwzNiArOTM2LDM2IEBACiAKIC4uIGNsYXNzOjogT3JkZXJlZERpY3QoW2l0ZW1zXSkKIAotICAgUmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgZGljdCBzdWJjbGFzcywgc3VwcG9ydGluZyB0aGUgdXN1YWwgOmNsYXNzOmBkaWN0YAotICAgbWV0aG9kcy4gIEFuICpPcmRlcmVkRGljdCogaXMgYSBkaWN0IHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciB0aGF0IGtleXMKLSAgIHdlcmUgZmlyc3QgaW5zZXJ0ZWQuIElmIGEgbmV3IGVudHJ5IG92ZXJ3cml0ZXMgYW4gZXhpc3RpbmcgZW50cnksIHRoZQotICAgb3JpZ2luYWwgaW5zZXJ0aW9uIHBvc2l0aW9uIGlzIGxlZnQgdW5jaGFuZ2VkLiAgRGVsZXRpbmcgYW4gZW50cnkgYW5kCi0gICByZWluc2VydGluZyBpdCB3aWxsIG1vdmUgaXQgdG8gdGhlIGVuZC4KKyAgICBSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBkaWN0IHN1YmNsYXNzLCBzdXBwb3J0aW5nIHRoZSB1c3VhbCA6Y2xhc3M6YGRpY3RgCisgICAgbWV0aG9kcy4gIEFuICpPcmRlcmVkRGljdCogaXMgYSBkaWN0IHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciB0aGF0IGtleXMKKyAgICB3ZXJlIGZpcnN0IGluc2VydGVkLiBJZiBhIG5ldyBlbnRyeSBvdmVyd3JpdGVzIGFuIGV4aXN0aW5nIGVudHJ5LCB0aGUKKyAgICBvcmlnaW5hbCBpbnNlcnRpb24gcG9zaXRpb24gaXMgbGVmdCB1bmNoYW5nZWQuICBEZWxldGluZyBhbiBlbnRyeSBhbmQKKyAgICByZWluc2VydGluZyBpdCB3aWxsIG1vdmUgaXQgdG8gdGhlIGVuZC4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKLSAgIC4uIG1ldGhvZDo6IHBvcGl0ZW0obGFzdD1UcnVlKQorICAgIC4uIG1ldGhvZDo6IHBvcGl0ZW0obGFzdD1UcnVlKQogCi0gICAgICBUaGUgOm1ldGg6YHBvcGl0ZW1gIG1ldGhvZCBmb3Igb3JkZXJlZCBkaWN0aW9uYXJpZXMgcmV0dXJucyBhbmQgcmVtb3ZlcyBhCi0gICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQotICAgICAgb3IgRklGTyBvcmRlciBpZiBmYWxzZS4KKyAgICAgICAgVGhlIDptZXRoOmBwb3BpdGVtYCBtZXRob2QgZm9yIG9yZGVyZWQgZGljdGlvbmFyaWVzIHJldHVybnMgYW5kIHJlbW92ZXMgYQorICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQorICAgICAgICBvciBGSUZPIG9yZGVyIGlmIGZhbHNlLgogCi0gICAuLiBtZXRob2Q6OiBtb3ZlX3RvX2VuZChrZXksIGxhc3Q9VHJ1ZSkKKyAgICAuLiBtZXRob2Q6OiBtb3ZlX3RvX2VuZChrZXksIGxhc3Q9VHJ1ZSkKIAotICAgICAgTW92ZSBhbiBleGlzdGluZyAqa2V5KiB0byBlaXRoZXIgZW5kIG9mIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4gIFRoZSBpdGVtCi0gICAgICBpcyBtb3ZlZCB0byB0aGUgcmlnaHQgZW5kIGlmICpsYXN0KiBpcyB0cnVlICh0aGUgZGVmYXVsdCkgb3IgdG8gdGhlCi0gICAgICBiZWdpbm5pbmcgaWYgKmxhc3QqIGlzIGZhbHNlLiAgUmFpc2VzIDpleGM6YEtleUVycm9yYCBpZiB0aGUgKmtleSogZG9lcwotICAgICAgbm90IGV4aXN0OjoKKyAgICAgICAgTW92ZSBhbiBleGlzdGluZyAqa2V5KiB0byBlaXRoZXIgZW5kIG9mIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4gIFRoZSBpdGVtCisgICAgICAgIGlzIG1vdmVkIHRvIHRoZSByaWdodCBlbmQgaWYgKmxhc3QqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSBvciB0byB0aGUKKyAgICAgICAgYmVnaW5uaW5nIGlmICpsYXN0KiBpcyBmYWxzZS4gIFJhaXNlcyA6ZXhjOmBLZXlFcnJvcmAgaWYgdGhlICprZXkqIGRvZXMKKyAgICAgICAgbm90IGV4aXN0OjoKIAotICAgICAgICAgID4+PiBkID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiY2RlJykKLSAgICAgICAgICA+Pj4gZC5tb3ZlX3RvX2VuZCgnYicpCi0gICAgICAgICAgPj4+ICcnLmpvaW4oZC5rZXlzKCkpCi0gICAgICAgICAgJ2FjZGViJwotICAgICAgICAgID4+PiBkLm1vdmVfdG9fZW5kKCdiJywgbGFzdD1GYWxzZSkKLSAgICAgICAgICA+Pj4gJycuam9pbihkLmtleXMoKSkKLSAgICAgICAgICAnYmFjZGUnCisgICAgICAgICAgICA+Pj4gZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmNkZScpCisgICAgICAgICAgICA+Pj4gZC5tb3ZlX3RvX2VuZCgnYicpCisgICAgICAgICAgICA+Pj4gJycuam9pbihkLmtleXMoKSkKKyAgICAgICAgICAgICdhY2RlYicKKyAgICAgICAgICAgID4+PiBkLm1vdmVfdG9fZW5kKCdiJywgbGFzdD1GYWxzZSkKKyAgICAgICAgICAgID4+PiAnJy5qb2luKGQua2V5cygpKQorICAgICAgICAgICAgJ2JhY2RlJwogCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIEluIGFkZGl0aW9uIHRvIHRoZSB1c3VhbCBtYXBwaW5nIG1ldGhvZHMsIG9yZGVyZWQgZGljdGlvbmFyaWVzIGFsc28gc3VwcG9ydAogcmV2ZXJzZSBpdGVyYXRpb24gdXNpbmcgOmZ1bmM6YHJldmVyc2VkYC4KQEAgLTg0OSw4ICs5ODMsOCBAQAogCiAuLiBzZWVhbHNvOjoKIAotICAgYEVxdWl2YWxlbnQgT3JkZXJlZERpY3QgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81NzY2OTMvPmBfCi0gICB0aGF0IHJ1bnMgb24gUHl0aG9uIDIuNCBvciBsYXRlci4KKyAgICBgRXF1aXZhbGVudCBPcmRlcmVkRGljdCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5My8+YF8KKyAgICB0aGF0IHJ1bnMgb24gUHl0aG9uIDIuNCBvciBsYXRlci4KIAogOmNsYXNzOmBPcmRlcmVkRGljdGAgRXhhbXBsZXMgYW5kIFJlY2lwZXMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCkBAIC04OTMsNyArMTAyNyw3IEBACiBBbiBvcmRlcmVkIGRpY3Rpb25hcnkgY2FuIGJlIGNvbWJpbmVkIHdpdGggdGhlIDpjbGFzczpgQ291bnRlcmAgY2xhc3MKIHNvIHRoYXQgdGhlIGNvdW50ZXIgcmVtZW1iZXJzIHRoZSBvcmRlciBlbGVtZW50cyBhcmUgZmlyc3QgZW5jb3VudGVyZWQ6OgogCi0gICBjbGFzcyBPcmRlcmVkQ291bnRlcihDb3VudGVyLCBPcmRlcmVkRGljdCk6CisgICAgY2xhc3MgT3JkZXJlZENvdW50ZXIoQ291bnRlciwgT3JkZXJlZERpY3QpOgogICAgICAgICAnQ291bnRlciB0aGF0IHJlbWVtYmVycyB0aGUgb3JkZXIgZWxlbWVudHMgYXJlIGZpcnN0IGVuY291bnRlcmVkJwogCiAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTkxNCwxOSArMTA0OCwxOSBAQAogCiAuLiBjbGFzczo6IFVzZXJEaWN0KFtpbml0aWFsZGF0YV0pCiAKLSAgIENsYXNzIHRoYXQgc2ltdWxhdGVzIGEgZGljdGlvbmFyeS4gIFRoZSBpbnN0YW5jZSdzIGNvbnRlbnRzIGFyZSBrZXB0IGluIGEKLSAgIHJlZ3VsYXIgZGljdGlvbmFyeSwgd2hpY2ggaXMgYWNjZXNzaWJsZSB2aWEgdGhlIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YKLSAgIDpjbGFzczpgVXNlckRpY3RgIGluc3RhbmNlcy4gIElmICppbml0aWFsZGF0YSogaXMgcHJvdmlkZWQsIDphdHRyOmBkYXRhYCBpcwotICAgaW5pdGlhbGl6ZWQgd2l0aCBpdHMgY29udGVudHM7IG5vdGUgdGhhdCBhIHJlZmVyZW5jZSB0byAqaW5pdGlhbGRhdGEqIHdpbGwgbm90Ci0gICBiZSBrZXB0LCBhbGxvd2luZyBpdCBiZSB1c2VkIGZvciBvdGhlciBwdXJwb3Nlcy4KKyAgICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIGRpY3Rpb25hcnkuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUga2VwdCBpbiBhCisgICAgcmVndWxhciBkaWN0aW9uYXJ5LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgOmF0dHI6YGRhdGFgIGF0dHJpYnV0ZSBvZgorICAgIDpjbGFzczpgVXNlckRpY3RgIGluc3RhbmNlcy4gIElmICppbml0aWFsZGF0YSogaXMgcHJvdmlkZWQsIDphdHRyOmBkYXRhYCBpcworICAgIGluaXRpYWxpemVkIHdpdGggaXRzIGNvbnRlbnRzOyBub3RlIHRoYXQgYSByZWZlcmVuY2UgdG8gKmluaXRpYWxkYXRhKiB3aWxsIG5vdAorICAgIGJlIGtlcHQsIGFsbG93aW5nIGl0IGJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLgogCi0gICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIHRoZSBtZXRob2RzIGFuZCBvcGVyYXRpb25zIG9mIG1hcHBpbmdzLAotICAgOmNsYXNzOmBVc2VyRGljdGAgaW5zdGFuY2VzIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGU6CisgICAgSW4gYWRkaXRpb24gdG8gc3VwcG9ydGluZyB0aGUgbWV0aG9kcyBhbmQgb3BlcmF0aW9ucyBvZiBtYXBwaW5ncywKKyAgICA6Y2xhc3M6YFVzZXJEaWN0YCBpbnN0YW5jZXMgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZToKIAotICAgLi4gYXR0cmlidXRlOjogZGF0YQorICAgIC4uIGF0dHJpYnV0ZTo6IGRhdGEKIAotICAgICAgQSByZWFsIGRpY3Rpb25hcnkgdXNlZCB0byBzdG9yZSB0aGUgY29udGVudHMgb2YgdGhlIDpjbGFzczpgVXNlckRpY3RgCi0gICAgICBjbGFzcy4KKyAgICAgICAgQSByZWFsIGRpY3Rpb25hcnkgdXNlZCB0byBzdG9yZSB0aGUgY29udGVudHMgb2YgdGhlIDpjbGFzczpgVXNlckRpY3RgCisgICAgICAgIGNsYXNzLgogCiAKIApAQCAtOTQ0LDE5ICsxMDc4LDE5IEBACiAKIC4uIGNsYXNzOjogVXNlckxpc3QoW2xpc3RdKQogCi0gICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIGxpc3QuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUga2VwdCBpbiBhIHJlZ3VsYXIKLSAgIGxpc3QsIHdoaWNoIGlzIGFjY2Vzc2libGUgdmlhIHRoZSA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mIDpjbGFzczpgVXNlckxpc3RgCi0gICBpbnN0YW5jZXMuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUgaW5pdGlhbGx5IHNldCB0byBhIGNvcHkgb2YgKmxpc3QqLAotICAgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgbGlzdCBgYFtdYGAuICAqbGlzdCogY2FuIGJlIGFueSBpdGVyYWJsZSwgZm9yCi0gICBleGFtcGxlIGEgcmVhbCBQeXRob24gbGlzdCBvciBhIDpjbGFzczpgVXNlckxpc3RgIG9iamVjdC4KKyAgICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIGxpc3QuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUga2VwdCBpbiBhIHJlZ3VsYXIKKyAgICBsaXN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgOmF0dHI6YGRhdGFgIGF0dHJpYnV0ZSBvZiA6Y2xhc3M6YFVzZXJMaXN0YAorICAgIGluc3RhbmNlcy4gIFRoZSBpbnN0YW5jZSdzIGNvbnRlbnRzIGFyZSBpbml0aWFsbHkgc2V0IHRvIGEgY29weSBvZiAqbGlzdCosCisgICAgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgbGlzdCBgYFtdYGAuICAqbGlzdCogY2FuIGJlIGFueSBpdGVyYWJsZSwgZm9yCisgICAgZXhhbXBsZSBhIHJlYWwgUHl0aG9uIGxpc3Qgb3IgYSA6Y2xhc3M6YFVzZXJMaXN0YCBvYmplY3QuCiAKLSAgIEluIGFkZGl0aW9uIHRvIHN1cHBvcnRpbmcgdGhlIG1ldGhvZHMgYW5kIG9wZXJhdGlvbnMgb2YgbXV0YWJsZSBzZXF1ZW5jZXMsCi0gICA6Y2xhc3M6YFVzZXJMaXN0YCBpbnN0YW5jZXMgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZToKKyAgICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIHRoZSBtZXRob2RzIGFuZCBvcGVyYXRpb25zIG9mIG11dGFibGUgc2VxdWVuY2VzLAorICAgIDpjbGFzczpgVXNlckxpc3RgIGluc3RhbmNlcyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlOgogCi0gICAuLiBhdHRyaWJ1dGU6OiBkYXRhCisgICAgLi4gYXR0cmlidXRlOjogZGF0YQogCi0gICAgICBBIHJlYWwgOmNsYXNzOmBsaXN0YCBvYmplY3QgdXNlZCB0byBzdG9yZSB0aGUgY29udGVudHMgb2YgdGhlCi0gICAgICA6Y2xhc3M6YFVzZXJMaXN0YCBjbGFzcy4KKyAgICAgICAgQSByZWFsIDpjbGFzczpgbGlzdGAgb2JqZWN0IHVzZWQgdG8gc3RvcmUgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICA6Y2xhc3M6YFVzZXJMaXN0YCBjbGFzcy4KIAogKipTdWJjbGFzc2luZyByZXF1aXJlbWVudHM6KiogU3ViY2xhc3NlcyBvZiA6Y2xhc3M6YFVzZXJMaXN0YCBhcmUgZXhwZWN0IHRvCiBvZmZlciBhIGNvbnN0cnVjdG9yIHdoaWNoIGNhbiBiZSBjYWxsZWQgd2l0aCBlaXRoZXIgbm8gYXJndW1lbnRzIG9yIG9uZQpAQCAtOTgxLDE2OCArMTExNSwxMCBAQAogCiAuLiBjbGFzczo6IFVzZXJTdHJpbmcoW3NlcXVlbmNlXSkKIAotICAgQ2xhc3MgdGhhdCBzaW11bGF0ZXMgYSBzdHJpbmcgb3IgYSBVbmljb2RlIHN0cmluZyBvYmplY3QuICBUaGUgaW5zdGFuY2UncwotICAgY29udGVudCBpcyBrZXB0IGluIGEgcmVndWxhciBzdHJpbmcgb2JqZWN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUKLSAgIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YgOmNsYXNzOmBVc2VyU3RyaW5nYCBpbnN0YW5jZXMuICBUaGUgaW5zdGFuY2UncwotICAgY29udGVudHMgYXJlIGluaXRpYWxseSBzZXQgdG8gYSBjb3B5IG9mICpzZXF1ZW5jZSouICBUaGUgKnNlcXVlbmNlKiBjYW4KLSAgIGJlIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgVXNlclN0cmluZ2AgKG9yIGEKLSAgIHN1YmNsYXNzKSBvciBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCBpbnRvIGEgc3RyaW5nIHVzaW5nCi0gICB0aGUgYnVpbHQtaW4gOmZ1bmM6YHN0cmAgZnVuY3Rpb24uCi0KLQotLi4gX2NvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3NlczoKLQotQUJDcyAtIGFic3RyYWN0IGJhc2UgY2xhc3NlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGUgY29sbGVjdGlvbnMgbW9kdWxlIG9mZmVycyB0aGUgZm9sbG93aW5nIDp0ZXJtOmBBQkNzIDxhYnN0cmFjdCBiYXNlIGNsYXNzPmA6Ci0KLT09PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQUJDICAgICAgICAgICAgICAgICAgICAgICAgSW5oZXJpdHMgZnJvbSAgICAgICAgICBBYnN0cmFjdCBNZXRob2RzICAgICAgICBNaXhpbiBNZXRob2RzCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTpjbGFzczpgQ29udGFpbmVyYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYAotOmNsYXNzOmBIYXNoYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faGFzaF9fYGAKLTpjbGFzczpgSXRlcmFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCi06Y2xhc3M6YEl0ZXJhdG9yYCAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgIGBgX19uZXh0X19gYCAgICAgICAgICAgIGBgX19pdGVyX19gYAotOmNsYXNzOmBTaXplZGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAotOmNsYXNzOmBDYWxsYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY2FsbF9fYGAKLQotOmNsYXNzOmBTZXF1ZW5jZWAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAsIGBgX19yZXZlcnNlZF9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgaW5kZXhgYCwgYW5kIGBgY291bnRgYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCi0KLTpjbGFzczpgTXV0YWJsZVNlcXVlbmNlYCAgIDpjbGFzczpgU2VxdWVuY2VgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2VxdWVuY2VgIG1ldGhvZHMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19kZWxpdGVtX19gYCwgICAgICAgIGBgYXBwZW5kYGAsIGBgcmV2ZXJzZWBgLCBgYGV4dGVuZGBgLCBgYHBvcGBgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGluc2VydGBgICAgICAgICAgICAgICBgYHJlbW92ZWBgLCBhbmQgYGBfX2lhZGRfX2BgCi0KLTpjbGFzczpgU2V0YCAgICAgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlX19gYCwgYGBfX2x0X19gYCwgYGBfX2VxX19gYCwgYGBfX25lX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2d0X19gYCwgYGBfX2dlX19gYCwgYGBfX2FuZF9fYGAsIGBgX19vcl9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19zdWJfX2BgLCBgYF9feG9yX19gYCwgYW5kIGBgaXNkaXNqb2ludGBgCi0KLTpjbGFzczpgTXV0YWJsZVNldGAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgYGBhZGRgYCwgICAgICAgICAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2V0YCBtZXRob2RzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGRpc2NhcmRgYCAgICAgICAgICAgICBgYGNsZWFyYGAsIGBgcG9wYGAsIGBgcmVtb3ZlYGAsIGBgX19pb3JfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faWFuZF9fYGAsIGBgX19peG9yX19gYCwgYW5kIGBgX19pc3ViX19gYAotCi06Y2xhc3M6YE1hcHBpbmdgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBga2V5c2BgLCBgYGl0ZW1zYGAsIGBgdmFsdWVzYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgZ2V0YGAsIGBgX19lcV9fYGAsIGFuZCBgYF9fbmVfX2BgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAKLQotOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AgICAgOmNsYXNzOmBNYXBwaW5nYCAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBNYXBwaW5nYCBtZXRob2RzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fZGVsaXRlbV9fYGAgICAgICAgICBgYHBvcGBgLCBgYHBvcGl0ZW1gYCwgYGBjbGVhcmBgLCBgYHVwZGF0ZWBgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYGBzZXRkZWZhdWx0YGAKLQotCi06Y2xhc3M6YE1hcHBpbmdWaWV3YCAgICAgICA6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCi06Y2xhc3M6YEl0ZW1zVmlld2AgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCwgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAotOmNsYXNzOmBLZXlzVmlld2AgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKLTpjbGFzczpgVmFsdWVzVmlld2AgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotCi0uLiBjbGFzczo6IENvbnRhaW5lcgotICAgICAgICAgICBIYXNoYWJsZQotICAgICAgICAgICBTaXplZAotICAgICAgICAgICBDYWxsYWJsZQotCi0gICBBQkNzIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSByZXNwZWN0aXZlbHkgdGhlIG1ldGhvZHMgOm1ldGg6YF9fY29udGFpbnNfX2AsCi0gICA6bWV0aDpgX19oYXNoX19gLCA6bWV0aDpgX19sZW5fX2AsIGFuZCA6bWV0aDpgX19jYWxsX19gLgotCi0uLiBjbGFzczo6IEl0ZXJhYmxlCi0KLSAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2l0ZXJfX2AgbWV0aG9kLgotICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGl0ZXJhYmxlYC4KLQotLi4gY2xhc3M6OiBJdGVyYXRvcgotCi0gICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIGFuZCA6bWV0aDpgbmV4dGAgbWV0aG9kcy4KLSAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBpdGVyYXRvcmAuCi0KLS4uIGNsYXNzOjogU2VxdWVuY2UKLSAgICAgICAgICAgTXV0YWJsZVNlcXVlbmNlCi0KLSAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSA6dGVybTpgc2VxdWVuY2VzIDxzZXF1ZW5jZT5gLgotCi0uLiBjbGFzczo6IFNldAotICAgICAgICAgICBNdXRhYmxlU2V0Ci0KLSAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSBzZXRzLgotCi0uLiBjbGFzczo6IE1hcHBpbmcKLSAgICAgICAgICAgTXV0YWJsZU1hcHBpbmcKLQotICAgQUJDcyBmb3IgcmVhZC1vbmx5IGFuZCBtdXRhYmxlIDp0ZXJtOmBtYXBwaW5ncyA8bWFwcGluZz5gLgotCi0uLiBjbGFzczo6IE1hcHBpbmdWaWV3Ci0gICAgICAgICAgIEl0ZW1zVmlldwotICAgICAgICAgICBLZXlzVmlldwotICAgICAgICAgICBWYWx1ZXNWaWV3Ci0KLSAgIEFCQ3MgZm9yIG1hcHBpbmcsIGl0ZW1zLCBrZXlzLCBhbmQgdmFsdWVzIDp0ZXJtOmB2aWV3cyA8dmlldz5gLgotCi0KLVRoZXNlIEFCQ3MgYWxsb3cgdXMgdG8gYXNrIGNsYXNzZXMgb3IgaW5zdGFuY2VzIGlmIHRoZXkgcHJvdmlkZQotcGFydGljdWxhciBmdW5jdGlvbmFsaXR5LCBmb3IgZXhhbXBsZTo6Ci0KLSAgICBzaXplID0gTm9uZQotICAgIGlmIGlzaW5zdGFuY2UobXl2YXIsIGNvbGxlY3Rpb25zLlNpemVkKToKLSAgICAgICAgc2l6ZSA9IGxlbihteXZhcikKLQotU2V2ZXJhbCBvZiB0aGUgQUJDcyBhcmUgYWxzbyB1c2VmdWwgYXMgbWl4aW5zIHRoYXQgbWFrZSBpdCBlYXNpZXIgdG8gZGV2ZWxvcAotY2xhc3NlcyBzdXBwb3J0aW5nIGNvbnRhaW5lciBBUElzLiAgRm9yIGV4YW1wbGUsIHRvIHdyaXRlIGEgY2xhc3Mgc3VwcG9ydGluZwotdGhlIGZ1bGwgOmNsYXNzOmBTZXRgIEFQSSwgaXQgb25seSBuZWNlc3NhcnkgdG8gc3VwcGx5IHRoZSB0aHJlZSB1bmRlcmx5aW5nCi1hYnN0cmFjdCBtZXRob2RzOiA6bWV0aDpgX19jb250YWluc19fYCwgOm1ldGg6YF9faXRlcl9fYCwgYW5kIDptZXRoOmBfX2xlbl9fYC4KLVRoZSBBQkMgc3VwcGxpZXMgdGhlIHJlbWFpbmluZyBtZXRob2RzIHN1Y2ggYXMgOm1ldGg6YF9fYW5kX19gIGFuZAotOm1ldGg6YGlzZGlzam9pbnRgIDo6Ci0KLSAgICBjbGFzcyBMaXN0QmFzZWRTZXQoY29sbGVjdGlvbnMuU2V0KToKLSAgICAgICAgICcnJyBBbHRlcm5hdGUgc2V0IGltcGxlbWVudGF0aW9uIGZhdm9yaW5nIHNwYWNlIG92ZXIgc3BlZWQKLSAgICAgICAgICAgICBhbmQgbm90IHJlcXVpcmluZyB0aGUgc2V0IGVsZW1lbnRzIHRvIGJlIGhhc2hhYmxlLiAnJycKLSAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdGVyYWJsZSk6Ci0gICAgICAgICAgICAgc2VsZi5lbGVtZW50cyA9IGxzdCA9IFtdCi0gICAgICAgICAgICAgZm9yIHZhbHVlIGluIGl0ZXJhYmxlOgotICAgICAgICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gbHN0OgotICAgICAgICAgICAgICAgICAgICAgbHN0LmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgICAgICByZXR1cm4gaXRlcihzZWxmLmVsZW1lbnRzKQotICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgICAgICAgcmV0dXJuIHZhbHVlIGluIHNlbGYuZWxlbWVudHMKLSAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICAgICAgIHJldHVybiBsZW4oc2VsZi5lbGVtZW50cykKLQotICAgIHMxID0gTGlzdEJhc2VkU2V0KCdhYmNkZWYnKQotICAgIHMyID0gTGlzdEJhc2VkU2V0KCdkZWZnaGknKQotICAgIG92ZXJsYXAgPSBzMSAmIHMyICAgICAgICAgICAgIyBUaGUgX19hbmRfXygpIG1ldGhvZCBpcyBzdXBwb3J0ZWQgYXV0b21hdGljYWxseQotCi1Ob3RlcyBvbiB1c2luZyA6Y2xhc3M6YFNldGAgYW5kIDpjbGFzczpgTXV0YWJsZVNldGAgYXMgYSBtaXhpbjoKLQotKDEpCi0gICBTaW5jZSBzb21lIHNldCBvcGVyYXRpb25zIGNyZWF0ZSBuZXcgc2V0cywgdGhlIGRlZmF1bHQgbWl4aW4gbWV0aG9kcyBuZWVkCi0gICBhIHdheSB0byBjcmVhdGUgbmV3IGluc3RhbmNlcyBmcm9tIGFuIGl0ZXJhYmxlLiBUaGUgY2xhc3MgY29uc3RydWN0b3IgaXMKLSAgIGFzc3VtZWQgdG8gaGF2ZSBhIHNpZ25hdHVyZSBpbiB0aGUgZm9ybSBgYENsYXNzTmFtZShpdGVyYWJsZSlgYC4KLSAgIFRoYXQgYXNzdW1wdGlvbiBpcyBmYWN0b3JlZC1vdXQgdG8gYW4gaW50ZXJuYWwgY2xhc3NtZXRob2QgY2FsbGVkCi0gICA6bWV0aDpgX2Zyb21faXRlcmFibGVgIHdoaWNoIGNhbGxzIGBgY2xzKGl0ZXJhYmxlKWBgIHRvIHByb2R1Y2UgYSBuZXcgc2V0LgotICAgSWYgdGhlIDpjbGFzczpgU2V0YCBtaXhpbiBpcyBiZWluZyB1c2VkIGluIGEgY2xhc3Mgd2l0aCBhIGRpZmZlcmVudAotICAgY29uc3RydWN0b3Igc2lnbmF0dXJlLCB5b3Ugd2lsbCBuZWVkIHRvIG92ZXJyaWRlIDptZXRoOmBfZnJvbV9pdGVyYWJsZWAKLSAgIHdpdGggYSBjbGFzc21ldGhvZCB0aGF0IGNhbiBjb25zdHJ1Y3QgbmV3IGluc3RhbmNlcyBmcm9tCi0gICBhbiBpdGVyYWJsZSBhcmd1bWVudC4KLQotKDIpCi0gICBUbyBvdmVycmlkZSB0aGUgY29tcGFyaXNvbnMgKHByZXN1bWFibHkgZm9yIHNwZWVkLCBhcyB0aGUKLSAgIHNlbWFudGljcyBhcmUgZml4ZWQpLCByZWRlZmluZSA6bWV0aDpgX19sZV9fYCBhbmQKLSAgIHRoZW4gdGhlIG90aGVyIG9wZXJhdGlvbnMgd2lsbCBhdXRvbWF0aWNhbGx5IGZvbGxvdyBzdWl0LgotCi0oMykKLSAgIFRoZSA6Y2xhc3M6YFNldGAgbWl4aW4gcHJvdmlkZXMgYSA6bWV0aDpgX2hhc2hgIG1ldGhvZCB0byBjb21wdXRlIGEgaGFzaCB2YWx1ZQotICAgZm9yIHRoZSBzZXQ7IGhvd2V2ZXIsIDptZXRoOmBfX2hhc2hfX2AgaXMgbm90IGRlZmluZWQgYmVjYXVzZSBub3QgYWxsIHNldHMKLSAgIGFyZSBoYXNoYWJsZSBvciBpbW11dGFibGUuICBUbyBhZGQgc2V0IGhhc2hhYmlsdHkgdXNpbmcgbWl4aW5zLAotICAgaW5oZXJpdCBmcm9tIGJvdGggOm1ldGg6YFNldGAgYW5kIDptZXRoOmBIYXNoYWJsZWAsIHRoZW4gZGVmaW5lCi0gICBgYF9faGFzaF9fID0gU2V0Ll9oYXNoYGAuCi0KLS4uIHNlZWFsc286OgotCi0gICAqIGBPcmRlcmVkU2V0IHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc2Njk0Lz5gXyBmb3IgYW4KLSAgICAgZXhhbXBsZSBidWlsdCBvbiA6Y2xhc3M6YE11dGFibGVTZXRgLgotCi0gICAqIEZvciBtb3JlIGFib3V0IEFCQ3MsIHNlZSB0aGUgOm1vZDpgYWJjYCBtb2R1bGUgYW5kIDpwZXA6YDMxMTlgLgorICAgIENsYXNzIHRoYXQgc2ltdWxhdGVzIGEgc3RyaW5nIG9yIGEgVW5pY29kZSBzdHJpbmcgb2JqZWN0LiAgVGhlIGluc3RhbmNlJ3MKKyAgICBjb250ZW50IGlzIGtlcHQgaW4gYSByZWd1bGFyIHN0cmluZyBvYmplY3QsIHdoaWNoIGlzIGFjY2Vzc2libGUgdmlhIHRoZQorICAgIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YgOmNsYXNzOmBVc2VyU3RyaW5nYCBpbnN0YW5jZXMuICBUaGUgaW5zdGFuY2UncworICAgIGNvbnRlbnRzIGFyZSBpbml0aWFsbHkgc2V0IHRvIGEgY29weSBvZiAqc2VxdWVuY2UqLiAgVGhlICpzZXF1ZW5jZSogY2FuCisgICAgYmUgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBieXRlc2AsIDpjbGFzczpgc3RyYCwgOmNsYXNzOmBVc2VyU3RyaW5nYCAob3IgYQorICAgIHN1YmNsYXNzKSBvciBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCBpbnRvIGEgc3RyaW5nIHVzaW5nCisgICAgdGhlIGJ1aWx0LWluIDpmdW5jOmBzdHJgIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uY3VycmVuY3kucnN0IGIvRG9jL2xpYnJhcnkvY29uY3VycmVuY3kucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZmUzZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW5jeS5yc3QKQEAgLTAsMCArMSwzMSBAQAorLi4gX2NvbmN1cnJlbmN5OgorCisqKioqKioqKioqKioqKioqKioqKgorQ29uY3VycmVudCBFeGVjdXRpb24KKyoqKioqKioqKioqKioqKioqKioqCisKK1RoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBzdXBwb3J0IGZvciBjb25jdXJyZW50CitleGVjdXRpb24gb2YgY29kZS4gVGhlIGFwcHJvcHJpYXRlIGNob2ljZSBvZiB0b29sIHdpbGwgZGVwZW5kIG9uIHRoZQordGFzayB0byBiZSBleGVjdXRlZCAoQ1BVIGJvdW5kIHZzIElPIGJvdW5kKSBhbmQgcHJlZmVycmVkIHN0eWxlIG9mCitkZXZlbG9wbWVudCAoZXZlbnQgZHJpdmVuIGNvb3BlcmF0aXZlIG11bHRpdGFza2luZyB2cyBwcmVlbXB0aXZlCittdWx0aXRhc2tpbmcpIEhlcmUncyBhbiBvdmVydmlldzoKKworCisuLiB0b2N0cmVlOjoKKworICAgdGhyZWFkaW5nLnJzdAorICAgbXVsdGlwcm9jZXNzaW5nLnJzdAorICAgY29uY3VycmVudC5mdXR1cmVzLnJzdAorICAgc3VicHJvY2Vzcy5yc3QKKyAgIHNjaGVkLnJzdAorICAgcXVldWUucnN0CisgICBzZWxlY3QucnN0CisKKworVGhlIGZvbGxvd2luZyBhcmUgc3VwcG9ydCBtb2R1bGVzIGZvciBzb21lIG9mIHRoZSBhYm92ZSBzZXJ2aWNlczoKKworLi4gdG9jdHJlZTo6CisKKyAgIGR1bW15X3RocmVhZGluZy5yc3QKKyAgIF90aHJlYWQucnN0CisgICBfZHVtbXlfdGhyZWFkLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdCBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKaW5kZXggMjlmZmMwZC4uYTg4ZjEwYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CkBAIC0xNjksNiArMTY5LDEyIEBACiAgICBvZiBhdCBtb3N0ICptYXhfd29ya2VycyogcHJvY2Vzc2VzLiAgSWYgKm1heF93b3JrZXJzKiBpcyBgYE5vbmVgYCBvciBub3QKICAgIGdpdmVuLCBpdCB3aWxsIGRlZmF1bHQgdG8gdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzIG9uIHRoZSBtYWNoaW5lLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgV2hlbiBvbmUgb2YgdGhlIHdvcmtlciBwcm9jZXNzZXMgdGVybWluYXRlcyBhYnJ1cHRseSwgYQorICAgICAgOmV4YzpgQnJva2VuUHJvY2Vzc1Bvb2xgIGVycm9yIGlzIG5vdyByYWlzZWQuICBQcmV2aW91c2x5LCBiZWhhdmlvdXIKKyAgICAgIHdhcyB1bmRlZmluZWQgYnV0IG9wZXJhdGlvbnMgb24gdGhlIGV4ZWN1dG9yIG9yIGl0cyBmdXR1cmVzIHdvdWxkIG9mdGVuCisgICAgICBmcmVlemUgb3IgZGVhZGxvY2suCisKIAogLi4gX3Byb2Nlc3Nwb29sZXhlY3V0b3ItZXhhbXBsZToKIApAQCAtMzY5LDMgKzM3NSwxNiBAQAogICAgOnBlcDpgMzE0OGAgLS0gZnV0dXJlcyAtIGV4ZWN1dGUgY29tcHV0YXRpb25zIGFzeW5jaHJvbm91c2x5CiAgICAgICBUaGUgcHJvcG9zYWwgd2hpY2ggZGVzY3JpYmVkIHRoaXMgZmVhdHVyZSBmb3IgaW5jbHVzaW9uIGluIHRoZSBQeXRob24KICAgICAgIHN0YW5kYXJkIGxpYnJhcnkuCisKKworRXhjZXB0aW9uIGNsYXNzZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGV4Y2VwdGlvbjo6IEJyb2tlblByb2Nlc3NQb29sCisKKyAgIERlcml2ZWQgZnJvbSA6ZXhjOmBSdW50aW1lRXJyb3JgLCB0aGlzIGV4Y2VwdGlvbiBjbGFzcyBpcyByYWlzZWQgd2hlbgorICAgb25lIG9mIHRoZSB3b3JrZXJzIG9mIGEgOmNsYXNzOmBQcm9jZXNzUG9vbEV4ZWN1dG9yYCBoYXMgdGVybWluYXRlZAorICAgaW4gYSBub24tY2xlYW4gZmFzaGlvbiAoZm9yIGV4YW1wbGUsIGlmIGl0IHdhcyBraWxsZWQgZnJvbSB0aGUgb3V0c2lkZSkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CmluZGV4IGU4ZGMxN2YuLmVkOWViYjggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CkBAIC0xMiw4ICsxMiwxMSBAQAogc3RhdGVtZW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxzbyA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgIGFuZAogOnJlZjpgY29udGV4dC1tYW5hZ2Vyc2AuCiAKLUZ1bmN0aW9ucyBwcm92aWRlZDoKIAorVXRpbGl0aWVzCistLS0tLS0tLS0KKworRnVuY3Rpb25zIGFuZCBjbGFzc2VzIHByb3ZpZGVkOgogCiAuLiBkZWNvcmF0b3I6OiBjb250ZXh0bWFuYWdlcgogCkBAIC0xNjgsNiArMTcxLDM0OCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gY2xhc3M6OiBFeGl0U3RhY2soKQorCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IGlzIGRlc2lnbmVkIHRvIG1ha2UgaXQgZWFzeSB0byBwcm9ncmFtbWF0aWNhbGx5CisgICBjb21iaW5lIG90aGVyIGNvbnRleHQgbWFuYWdlcnMgYW5kIGNsZWFudXAgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IHRob3NlCisgICB0aGF0IGFyZSBvcHRpb25hbCBvciBvdGhlcndpc2UgZHJpdmVuIGJ5IGlucHV0IGRhdGEuCisKKyAgIEZvciBleGFtcGxlLCBhIHNldCBvZiBmaWxlcyBtYXkgZWFzaWx5IGJlIGhhbmRsZWQgaW4gYSBzaW5nbGUgd2l0aAorICAgc3RhdGVtZW50IGFzIGZvbGxvd3M6OgorCisgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgIyBBbGwgb3BlbmVkIGZpbGVzIHdpbGwgYXV0b21hdGljYWxseSBiZSBjbG9zZWQgYXQgdGhlIGVuZCBvZgorICAgICAgICAgICMgdGhlIHdpdGggc3RhdGVtZW50LCBldmVuIGlmIGF0dGVtcHRzIHRvIG9wZW4gZmlsZXMgbGF0ZXIKKyAgICAgICAgICAjIGluIHRoZSBsaXN0IHRocm93IGFuIGV4Y2VwdGlvbgorCisgICBFYWNoIGluc3RhbmNlIG1haW50YWlucyBhIHN0YWNrIG9mIHJlZ2lzdGVyZWQgY2FsbGJhY2tzIHRoYXQgYXJlIGNhbGxlZCBpbgorICAgcmV2ZXJzZSBvcmRlciB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjbG9zZWQgKGVpdGhlciBleHBsaWNpdGx5IG9yIGltcGxpY2l0bHkKKyAgIGF0IHRoZSBlbmQgb2YgYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50KS4gTm90ZSB0aGF0IGNhbGxiYWNrcyBhcmUgKm5vdCoKKyAgIGludm9rZWQgaW1wbGljaXRseSB3aGVuIHRoZSBjb250ZXh0IHN0YWNrIGluc3RhbmNlIGlzIGdhcmJhZ2UgY29sbGVjdGVkLgorCisgICBUaGlzIHN0YWNrIG1vZGVsIGlzIHVzZWQgc28gdGhhdCBjb250ZXh0IG1hbmFnZXJzIHRoYXQgYWNxdWlyZSB0aGVpcgorICAgcmVzb3VyY2VzIGluIHRoZWlyIGBgX19pbml0X19gYCBtZXRob2QgKHN1Y2ggYXMgZmlsZSBvYmplY3RzKSBjYW4gYmUKKyAgIGhhbmRsZWQgY29ycmVjdGx5LgorCisgICBTaW5jZSByZWdpc3RlcmVkIGNhbGxiYWNrcyBhcmUgaW52b2tlZCBpbiB0aGUgcmV2ZXJzZSBvcmRlciBvZgorICAgcmVnaXN0cmF0aW9uLCB0aGlzIGVuZHMgdXAgYmVoYXZpbmcgYXMgaWYgbXVsdGlwbGUgbmVzdGVkIDprZXl3b3JkOmB3aXRoYAorICAgc3RhdGVtZW50cyBoYWQgYmVlbiB1c2VkIHdpdGggdGhlIHJlZ2lzdGVyZWQgc2V0IG9mIGNhbGxiYWNrcy4gVGhpcyBldmVuCisgICBleHRlbmRzIHRvIGV4Y2VwdGlvbiBoYW5kbGluZyAtIGlmIGFuIGlubmVyIGNhbGxiYWNrIHN1cHByZXNzZXMgb3IgcmVwbGFjZXMKKyAgIGFuIGV4Y2VwdGlvbiwgdGhlbiBvdXRlciBjYWxsYmFja3Mgd2lsbCBiZSBwYXNzZWQgYXJndW1lbnRzIGJhc2VkIG9uIHRoYXQKKyAgIHVwZGF0ZWQgc3RhdGUuCisKKyAgIFRoaXMgaXMgYSByZWxhdGl2ZWx5IGxvdyBsZXZlbCBBUEkgdGhhdCB0YWtlcyBjYXJlIG9mIHRoZSBkZXRhaWxzIG9mCisgICBjb3JyZWN0bHkgdW53aW5kaW5nIHRoZSBzdGFjayBvZiBleGl0IGNhbGxiYWNrcy4gSXQgcHJvdmlkZXMgYSBzdWl0YWJsZQorICAgZm91bmRhdGlvbiBmb3IgaGlnaGVyIGxldmVsIGNvbnRleHQgbWFuYWdlcnMgdGhhdCBtYW5pcHVsYXRlIHRoZSBleGl0CisgICBzdGFjayBpbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyB3YXlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogZW50ZXJfY29udGV4dChjbSkKKworICAgICAgRW50ZXJzIGEgbmV3IGNvbnRleHQgbWFuYWdlciBhbmQgYWRkcyBpdHMgOm1ldGg6YF9fZXhpdF9fYCBtZXRob2QgdG8KKyAgICAgIHRoZSBjYWxsYmFjayBzdGFjay4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcmVzdWx0IG9mIHRoZSBjb250ZXh0CisgICAgICBtYW5hZ2VyJ3Mgb3duIDptZXRoOmBfX2VudGVyX19gIG1ldGhvZC4KKworICAgICAgVGhlc2UgY29udGV4dCBtYW5hZ2VycyBtYXkgc3VwcHJlc3MgZXhjZXB0aW9ucyBqdXN0IGFzIHRoZXkgbm9ybWFsbHkKKyAgICAgIHdvdWxkIGlmIHVzZWQgZGlyZWN0bHkgYXMgcGFydCBvZiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuCisKKyAgIC4uIG1ldGhvZDo6IHB1c2goZXhpdCkKKworICAgICAgQWRkcyBhIGNvbnRleHQgbWFuYWdlcidzIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kIHRvIHRoZSBjYWxsYmFjayBzdGFjay4KKworICAgICAgQXMgYGBfX2VudGVyX19gYCBpcyAqbm90KiBpbnZva2VkLCB0aGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjb3ZlcgorICAgICAgcGFydCBvZiBhbiA6bWV0aDpgX19lbnRlcl9fYCBpbXBsZW1lbnRhdGlvbiB3aXRoIGEgY29udGV4dCBtYW5hZ2VyJ3Mgb3duCisgICAgICA6bWV0aDpgX19leGl0X19gIG1ldGhvZC4KKworICAgICAgSWYgcGFzc2VkIGFuIG9iamVjdCB0aGF0IGlzIG5vdCBhIGNvbnRleHQgbWFuYWdlciwgdGhpcyBtZXRob2QgYXNzdW1lcworICAgICAgaXQgaXMgYSBjYWxsYmFjayB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyBhIGNvbnRleHQgbWFuYWdlcidzCisgICAgICA6bWV0aDpgX19leGl0X19gIG1ldGhvZCBhbmQgYWRkcyBpdCBkaXJlY3RseSB0byB0aGUgY2FsbGJhY2sgc3RhY2suCisKKyAgICAgIEJ5IHJldHVybmluZyB0cnVlIHZhbHVlcywgdGhlc2UgY2FsbGJhY2tzIGNhbiBzdXBwcmVzcyBleGNlcHRpb25zIHRoZQorICAgICAgc2FtZSB3YXkgY29udGV4dCBtYW5hZ2VyIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kcyBjYW4uCisKKyAgICAgIFRoZSBwYXNzZWQgaW4gb2JqZWN0IGlzIHJldHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uLCBhbGxvd2luZyB0aGlzCisgICAgICBtZXRob2QgdG8gYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvci4KKworICAgLi4gbWV0aG9kOjogY2FsbGJhY2soY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpCisKKyAgICAgIEFjY2VwdHMgYW4gYXJiaXRyYXJ5IGNhbGxiYWNrIGZ1bmN0aW9uIGFuZCBhcmd1bWVudHMgYW5kIGFkZHMgaXQgdG8KKyAgICAgIHRoZSBjYWxsYmFjayBzdGFjay4KKworICAgICAgVW5saWtlIHRoZSBvdGhlciBtZXRob2RzLCBjYWxsYmFja3MgYWRkZWQgdGhpcyB3YXkgY2Fubm90IHN1cHByZXNzCisgICAgICBleGNlcHRpb25zIChhcyB0aGV5IGFyZSBuZXZlciBwYXNzZWQgdGhlIGV4Y2VwdGlvbiBkZXRhaWxzKS4KKworICAgICAgVGhlIHBhc3NlZCBpbiBjYWxsYmFjayBpcyByZXR1cm5lZCBmcm9tIHRoZSBmdW5jdGlvbiwgYWxsb3dpbmcgdGhpcworICAgICAgbWV0aG9kIHRvIGJlIHVzZWQgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IuCisKKyAgIC4uIG1ldGhvZDo6IHBvcF9hbGwoKQorCisgICAgICBUcmFuc2ZlcnMgdGhlIGNhbGxiYWNrIHN0YWNrIHRvIGEgZnJlc2ggOmNsYXNzOmBFeGl0U3RhY2tgIGluc3RhbmNlCisgICAgICBhbmQgcmV0dXJucyBpdC4gTm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIGJ5IHRoaXMgb3BlcmF0aW9uIC0gaW5zdGVhZCwKKyAgICAgIHRoZXkgd2lsbCBub3cgYmUgaW52b2tlZCB3aGVuIHRoZSBuZXcgc3RhY2sgaXMgY2xvc2VkIChlaXRoZXIKKyAgICAgIGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSBhdCB0aGUgZW5kIG9mIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCkuCisKKyAgICAgIEZvciBleGFtcGxlLCBhIGdyb3VwIG9mIGZpbGVzIGNhbiBiZSBvcGVuZWQgYXMgYW4gImFsbCBvciBub3RoaW5nIgorICAgICAgb3BlcmF0aW9uIGFzIGZvbGxvd3M6OgorCisgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgICAgY2xvc2VfZmlsZXMgPSBzdGFjay5wb3BfYWxsKCkuY2xvc2UKKyAgICAgICAgICAgICAjIElmIG9wZW5pbmcgYW55IGZpbGUgZmFpbHMsIGFsbCBwcmV2aW91c2x5IG9wZW5lZCBmaWxlcyB3aWxsIGJlCisgICAgICAgICAgICAgIyBjbG9zZWQgYXV0b21hdGljYWxseS4gSWYgYWxsIGZpbGVzIGFyZSBvcGVuZWQgc3VjY2Vzc2Z1bGx5LAorICAgICAgICAgICAgICMgdGhleSB3aWxsIHJlbWFpbiBvcGVuIGV2ZW4gYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50IGVuZHMuCisgICAgICAgICAgICAgIyBjbG9zZV9maWxlcygpIGNhbiB0aGVuIGJlIGludm9rZWQgZXhwbGljaXRseSB0byBjbG9zZSB0aGVtIGFsbAorCisgICAuLiBtZXRob2Q6OiBjbG9zZSgpCisKKyAgICAgIEltbWVkaWF0ZWx5IHVud2luZHMgdGhlIGNhbGxiYWNrIHN0YWNrLCBpbnZva2luZyBjYWxsYmFja3MgaW4gdGhlCisgICAgICByZXZlcnNlIG9yZGVyIG9mIHJlZ2lzdHJhdGlvbi4gRm9yIGFueSBjb250ZXh0IG1hbmFnZXJzIGFuZCBleGl0CisgICAgICBjYWxsYmFja3MgcmVnaXN0ZXJlZCwgdGhlIGFyZ3VtZW50cyBwYXNzZWQgaW4gd2lsbCBpbmRpY2F0ZSB0aGF0IG5vCisgICAgICBleGNlcHRpb24gb2NjdXJyZWQuCisKKworRXhhbXBsZXMgYW5kIFJlY2lwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgc29tZSBleGFtcGxlcyBhbmQgcmVjaXBlcyBmb3IgbWFraW5nIGVmZmVjdGl2ZSB1c2Ugb2YKK3RoZSB0b29scyBwcm92aWRlZCBieSA6bW9kOmBjb250ZXh0bGliYC4KKworCitTdXBwb3J0aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgcHJpbWFyeSB1c2UgY2FzZSBmb3IgOmNsYXNzOmBFeGl0U3RhY2tgIGlzIHRoZSBvbmUgZ2l2ZW4gaW4gdGhlIGNsYXNzCitkb2N1bWVudGF0aW9uOiBzdXBwb3J0aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMgYW5kIG90aGVyCitjbGVhbnVwIG9wZXJhdGlvbnMgaW4gYSBzaW5nbGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gVGhlIHZhcmlhYmlsaXR5CittYXkgY29tZSBmcm9tIHRoZSBudW1iZXIgb2YgY29udGV4dCBtYW5hZ2VycyBuZWVkZWQgYmVpbmcgZHJpdmVuIGJ5IHVzZXIKK2lucHV0IChzdWNoIGFzIG9wZW5pbmcgYSB1c2VyIHNwZWNpZmllZCBjb2xsZWN0aW9uIG9mIGZpbGVzKSwgb3IgZnJvbQorc29tZSBvZiB0aGUgY29udGV4dCBtYW5hZ2VycyBiZWluZyBvcHRpb25hbDo6CisKKyAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gcmVzb3VyY2VzOgorICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChyZXNvdXJjZSkKKyAgICAgICAgaWYgbmVlZF9zcGVjaWFsIHJlc291cmNlOgorICAgICAgICAgICAgc3BlY2lhbCA9IGFjcXVpcmVfc3BlY2lhbF9yZXNvdXJjZSgpCisgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyZWxlYXNlX3NwZWNpYWxfcmVzb3VyY2UsIHNwZWNpYWwpCisgICAgICAgICMgUGVyZm9ybSBvcGVyYXRpb25zIHRoYXQgdXNlIHRoZSBhY3F1aXJlZCByZXNvdXJjZXMKKworQXMgc2hvd24sIDpjbGFzczpgRXhpdFN0YWNrYCBhbHNvIG1ha2VzIGl0IHF1aXRlIGVhc3kgdG8gdXNlIDprZXl3b3JkOmB3aXRoYAorc3RhdGVtZW50cyB0byBtYW5hZ2UgYXJiaXRyYXJ5IHJlc291cmNlcyB0aGF0IGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgdGhlCitjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuCisKKworU2ltcGxpZnlpbmcgc3VwcG9ydCBmb3Igc2luZ2xlIG9wdGlvbmFsIGNvbnRleHQgbWFuYWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0luIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGEgc2luZ2xlIG9wdGlvbmFsIGNvbnRleHQgbWFuYWdlciwgOmNsYXNzOmBFeGl0U3RhY2tgCitpbnN0YW5jZXMgY2FuIGJlIHVzZWQgYXMgYSAiZG8gbm90aGluZyIgY29udGV4dCBtYW5hZ2VyLCBhbGxvd2luZyBhIGNvbnRleHQKK21hbmFnZXIgdG8gZWFzaWx5IGJlIG9taXR0ZWQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mCit0aGUgc291cmNlIGNvZGU6OgorCisgICBkZWYgZGVidWdfdHJhY2UoZGV0YWlscyk6CisgICAgICAgaWYgX19kZWJ1Z19fOgorICAgICAgICAgICByZXR1cm4gVHJhY2VDb250ZXh0KGRldGFpbHMpCisgICAgICAgIyBEb24ndCBkbyBhbnl0aGluZyBzcGVjaWFsIHdpdGggdGhlIGNvbnRleHQgaW4gcmVsZWFzZSBtb2RlCisgICAgICAgcmV0dXJuIEV4aXRTdGFjaygpCisKKyAgIHdpdGggZGVidWdfdHJhY2UoKToKKyAgICAgICAjIFN1aXRlIGlzIHRyYWNlZCBpbiBkZWJ1ZyBtb2RlLCBidXQgcnVucyBub3JtYWxseSBvdGhlcndpc2UKKworCitDYXRjaGluZyBleGNlcHRpb25zIGZyb20gYGBfX2VudGVyX19gYCBtZXRob2RzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0l0IGlzIG9jY2FzaW9uYWxseSBkZXNpcmFibGUgdG8gY2F0Y2ggZXhjZXB0aW9ucyBmcm9tIGFuIGBgX19lbnRlcl9fYGAKK21ldGhvZCBpbXBsZW1lbnRhdGlvbiwgKndpdGhvdXQqIGluYWR2ZXJ0ZW50bHkgY2F0Y2hpbmcgZXhjZXB0aW9ucyBmcm9tCit0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBib2R5IG9yIHRoZSBjb250ZXh0IG1hbmFnZXIncyBgYF9fZXhpdF9fYGAKK21ldGhvZC4gQnkgdXNpbmcgOmNsYXNzOmBFeGl0U3RhY2tgIHRoZSBzdGVwcyBpbiB0aGUgY29udGV4dCBtYW5hZ2VtZW50Citwcm90b2NvbCBjYW4gYmUgc2VwYXJhdGVkIHNsaWdodGx5IGluIG9yZGVyIHRvIGFsbG93IHRoaXM6OgorCisgICBzdGFjayA9IEV4aXRTdGFjaygpCisgICB0cnk6CisgICAgICAgeCA9IHN0YWNrLmVudGVyX2NvbnRleHQoY20pCisgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICMgaGFuZGxlIF9fZW50ZXJfXyBleGNlcHRpb24KKyAgIGVsc2U6CisgICAgICAgd2l0aCBzdGFjazoKKyAgICAgICAgICAgIyBIYW5kbGUgbm9ybWFsIGNhc2UKKworQWN0dWFsbHkgbmVlZGluZyB0byBkbyB0aGlzIGlzIGxpa2VseSB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1bmRlcmx5aW5nIEFQSQorc2hvdWxkIGJlIHByb3ZpZGluZyBhIGRpcmVjdCByZXNvdXJjZSBtYW5hZ2VtZW50IGludGVyZmFjZSBmb3IgdXNlIHdpdGgKKzprZXl3b3JkOmB0cnlgLzprZXl3b3JkOmBleGNlcHRgLzprZXl3b3JkOmBmaW5hbGx5YCBzdGF0ZW1lbnRzLCBidXQgbm90CithbGwgQVBJcyBhcmUgd2VsbCBkZXNpZ25lZCBpbiB0aGF0IHJlZ2FyZC4gV2hlbiBhIGNvbnRleHQgbWFuYWdlciBpcyB0aGUKK29ubHkgcmVzb3VyY2UgbWFuYWdlbWVudCBBUEkgcHJvdmlkZWQsIHRoZW4gOmNsYXNzOmBFeGl0U3RhY2tgIGNhbiBtYWtlIGl0CitlYXNpZXIgdG8gaGFuZGxlIHZhcmlvdXMgc2l0dWF0aW9ucyB0aGF0IGNhbid0IGJlIGhhbmRsZWQgZGlyZWN0bHkgaW4gYQorOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KKworCitDbGVhbmluZyB1cCBpbiBhbiBgYF9fZW50ZXJfX2BgIGltcGxlbWVudGF0aW9uCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0FzIG5vdGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIDptZXRoOmBFeGl0U3RhY2sucHVzaGAsIHRoaXMKK21ldGhvZCBjYW4gYmUgdXNlZnVsIGluIGNsZWFuaW5nIHVwIGFuIGFscmVhZHkgYWxsb2NhdGVkIHJlc291cmNlIGlmIGxhdGVyCitzdGVwcyBpbiB0aGUgOm1ldGg6YF9fZW50ZXJfX2AgaW1wbGVtZW50YXRpb24gZmFpbC4KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgZG9pbmcgdGhpcyBmb3IgYSBjb250ZXh0IG1hbmFnZXIgdGhhdCBhY2NlcHRzIHJlc291cmNlCithY3F1aXNpdGlvbiBhbmQgcmVsZWFzZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYW4gb3B0aW9uYWwgdmFsaWRhdGlvbiBmdW5jdGlvbiwKK2FuZCBtYXBzIHRoZW0gdG8gdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbDo6CisKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEV4aXRTdGFjaworCisgICBjbGFzcyBSZXNvdXJjZU1hbmFnZXIob2JqZWN0KToKKworICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhY3F1aXJlX3Jlc291cmNlLCByZWxlYXNlX3Jlc291cmNlLCBjaGVja19yZXNvdXJjZV9vaz1Ob25lKToKKyAgICAgICAgICAgc2VsZi5hY3F1aXJlX3Jlc291cmNlID0gYWNxdWlyZV9yZXNvdXJjZQorICAgICAgICAgICBzZWxmLnJlbGVhc2VfcmVzb3VyY2UgPSByZWxlYXNlX3Jlc291cmNlCisgICAgICAgICAgIGlmIGNoZWNrX3Jlc291cmNlX29rIGlzIE5vbmU6CisgICAgICAgICAgICAgICBkZWYgY2hlY2tfcmVzb3VyY2Vfb2socmVzb3VyY2UpOgorICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgIHNlbGYuY2hlY2tfcmVzb3VyY2Vfb2sgPSBjaGVja19yZXNvdXJjZV9vaworCisgICAgICAgQGNvbnRleHRtYW5hZ2VyCisgICAgICAgZGVmIF9jbGVhbnVwX29uX2Vycm9yKHNlbGYpOgorICAgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgICAgc3RhY2sucHVzaChzZWxmKQorICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICMgVGhlIHZhbGlkYXRpb24gY2hlY2sgcGFzc2VkIGFuZCBkaWRuJ3QgcmFpc2UgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAjIEFjY29yZGluZ2x5LCB3ZSB3YW50IHRvIGtlZXAgdGhlIHJlc291cmNlLCBhbmQgcGFzcyBpdAorICAgICAgICAgICAgICAgIyBiYWNrIHRvIG91ciBjYWxsZXIKKyAgICAgICAgICAgICAgIHN0YWNrLnBvcF9hbGwoKQorCisgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgcmVzb3VyY2UgPSBzZWxmLmFjcXVpcmVfcmVzb3VyY2UoKQorICAgICAgICAgICB3aXRoIHNlbGYuX2NsZWFudXBfb25fZXJyb3IoKToKKyAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNoZWNrX3Jlc291cmNlX29rKHJlc291cmNlKToKKyAgICAgICAgICAgICAgICAgICBtc2cgPSAiRmFpbGVkIHZhbGlkYXRpb24gZm9yIHshcn0iCisgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKG1zZy5mb3JtYXQocmVzb3VyY2UpKQorICAgICAgICAgICByZXR1cm4gcmVzb3VyY2UKKworICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAjIFdlIGRvbid0IG5lZWQgdG8gZHVwbGljYXRlIGFueSBvZiBvdXIgcmVzb3VyY2UgcmVsZWFzZSBsb2dpYworICAgICAgICAgICBzZWxmLnJlbGVhc2VfcmVzb3VyY2UoKQorCisKK1JlcGxhY2luZyBhbnkgdXNlIG9mIGBgdHJ5LWZpbmFsbHlgYCBhbmQgZmxhZyB2YXJpYWJsZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworQSBwYXR0ZXJuIHlvdSB3aWxsIHNvbWV0aW1lcyBzZWUgaXMgYSBgYHRyeS1maW5hbGx5YGAgc3RhdGVtZW50IHdpdGggYSBmbGFnCit2YXJpYWJsZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGUgYm9keSBvZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIHNob3VsZAorYmUgZXhlY3V0ZWQuIEluIGl0cyBzaW1wbGVzdCBmb3JtICh0aGF0IGNhbid0IGFscmVhZHkgYmUgaGFuZGxlZCBqdXN0IGJ5Cit1c2luZyBhbiBgYGV4Y2VwdGBgIGNsYXVzZSBpbnN0ZWFkKSwgaXQgbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhpczo6CisKKyAgIGNsZWFudXBfbmVlZGVkID0gVHJ1ZQorICAgdHJ5OgorICAgICAgIHJlc3VsdCA9IHBlcmZvcm1fb3BlcmF0aW9uKCkKKyAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgIGNsZWFudXBfbmVlZGVkID0gRmFsc2UKKyAgIGZpbmFsbHk6CisgICAgICAgaWYgY2xlYW51cF9uZWVkZWQ6CisgICAgICAgICAgIGNsZWFudXBfcmVzb3VyY2VzKCkKKworQXMgd2l0aCBhbnkgYGB0cnlgYCBzdGF0ZW1lbnQgYmFzZWQgY29kZSwgdGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yCitkZXZlbG9wbWVudCBhbmQgcmV2aWV3LCBiZWNhdXNlIHRoZSBzZXR1cCBjb2RlIGFuZCB0aGUgY2xlYW51cCBjb2RlIGNhbiBlbmQKK3VwIGJlaW5nIHNlcGFyYXRlZCBieSBhcmJpdHJhcmlseSBsb25nIHNlY3Rpb25zIG9mIGNvZGUuCisKKzpjbGFzczpgRXhpdFN0YWNrYCBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbnN0ZWFkIHJlZ2lzdGVyIGEgY2FsbGJhY2sgZm9yCitleGVjdXRpb24gYXQgdGhlIGVuZCBvZiBhIGBgd2l0aGBgIHN0YXRlbWVudCwgYW5kIHRoZW4gbGF0ZXIgZGVjaWRlIHRvIHNraXAKK2V4ZWN1dGluZyB0aGF0IGNhbGxiYWNrOjoKKworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKKworICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICBzdGFjay5jYWxsYmFjayhjbGVhbnVwX3Jlc291cmNlcykKKyAgICAgICByZXN1bHQgPSBwZXJmb3JtX29wZXJhdGlvbigpCisgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICBzdGFjay5wb3BfYWxsKCkKKworVGhpcyBhbGxvd3MgdGhlIGludGVuZGVkIGNsZWFudXAgdXAgYmVoYXZpb3VyIHRvIGJlIG1hZGUgZXhwbGljaXQgdXAgZnJvbnQsCityYXRoZXIgdGhhbiByZXF1aXJpbmcgYSBzZXBhcmF0ZSBmbGFnIHZhcmlhYmxlLgorCitJZiBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gdXNlcyB0aGlzIHBhdHRlcm4gYSBsb3QsIGl0IGNhbiBiZSBzaW1wbGlmaWVkCitldmVuIGZ1cnRoZXIgYnkgbWVhbnMgb2YgYSBzbWFsbCBoZWxwZXIgY2xhc3M6OgorCisgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IEV4aXRTdGFjaworCisgICBjbGFzcyBDYWxsYmFjayhFeGl0U3RhY2spOgorICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYWxsYmFjaywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgIHN1cGVyKENhbGxiYWNrLCBzZWxmKS5fX2luaXRfXygpCisgICAgICAgICAgIHNlbGYuY2FsbGJhY2soY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpCisKKyAgICAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICAgICBzZWxmLnBvcF9hbGwoKQorCisgICB3aXRoIENhbGxiYWNrKGNsZWFudXBfcmVzb3VyY2VzKSBhcyBjYjoKKyAgICAgICByZXN1bHQgPSBwZXJmb3JtX29wZXJhdGlvbigpCisgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICBjYi5jYW5jZWwoKQorCitJZiB0aGUgcmVzb3VyY2UgY2xlYW51cCBpc24ndCBhbHJlYWR5IG5lYXRseSBidW5kbGVkIGludG8gYSBzdGFuZGFsb25lCitmdW5jdGlvbiwgdGhlbiBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byB1c2UgdGhlIGRlY29yYXRvciBmb3JtIG9mCis6bWV0aDpgRXhpdFN0YWNrLmNhbGxiYWNrYCB0byBkZWNsYXJlIHRoZSByZXNvdXJjZSBjbGVhbnVwIGluCithZHZhbmNlOjoKKworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKKworICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICBAc3RhY2suY2FsbGJhY2sKKyAgICAgICBkZWYgY2xlYW51cF9yZXNvdXJjZXMoKToKKyAgICAgICAgICAgLi4uCisgICAgICAgcmVzdWx0ID0gcGVyZm9ybV9vcGVyYXRpb24oKQorICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgc3RhY2sucG9wX2FsbCgpCisKK0R1ZSB0byB0aGUgd2F5IHRoZSBkZWNvcmF0b3IgcHJvdG9jb2wgd29ya3MsIGEgY2FsbGJhY2sgZnVuY3Rpb24KK2RlY2xhcmVkIHRoaXMgd2F5IGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXJzLiBJbnN0ZWFkLCBhbnkgcmVzb3VyY2VzIHRvCitiZSByZWxlYXNlZCBtdXN0IGJlIGFjY2Vzc2VkIGFzIGNsb3N1cmUgdmFyaWFibGVzCisKKworVXNpbmcgYSBjb250ZXh0IG1hbmFnZXIgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKzpjbGFzczpgQ29udGV4dERlY29yYXRvcmAgbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIGEgY29udGV4dCBtYW5hZ2VyIGluCitib3RoIGFuIG9yZGluYXJ5IGBgd2l0aGBgIHN0YXRlbWVudCBhbmQgYWxzbyBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvci4KKworRm9yIGV4YW1wbGUsIGl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gd3JhcCBmdW5jdGlvbnMgb3IgZ3JvdXBzIG9mIHN0YXRlbWVudHMKK3dpdGggYSBsb2dnZXIgdGhhdCBjYW4gdHJhY2sgdGhlIHRpbWUgb2YgZW50cnkgYW5kIHRpbWUgb2YgZXhpdC4gIFJhdGhlciB0aGFuCit3cml0aW5nIGJvdGggYSBmdW5jdGlvbiBkZWNvcmF0b3IgYW5kIGEgY29udGV4dCBtYW5hZ2VyIGZvciB0aGUgdGFzaywKK2luaGVyaXRpbmcgZnJvbSA6Y2xhc3M6YENvbnRleHREZWNvcmF0b3JgIHByb3ZpZGVzIGJvdGggY2FwYWJpbGl0aWVzIGluIGEKK3NpbmdsZSBkZWZpbml0aW9uOjoKKworICAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgQ29udGV4dERlY29yYXRvcgorICAgIGltcG9ydCBsb2dnaW5nCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuSU5GTykKKworICAgIGNsYXNzIHRyYWNrX2VudHJ5X2FuZF9leGl0KENvbnRleHREZWNvcmF0b3IpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisKKyAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGMsIGV4Y190Yik6CisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisKK0luc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGNhbiBiZSB1c2VkIGFzIGJvdGggYSBjb250ZXh0IG1hbmFnZXI6OgorCisgICAgd2l0aCB0cmFja19lbnRyeV9hbmRfZXhpdCgnd2lkZ2V0IGxvYWRlcicpOgorICAgICAgICBwcmludCgnU29tZSB0aW1lIGNvbnN1bWluZyBhY3Rpdml0eSBnb2VzIGhlcmUnKQorICAgICAgICBsb2FkX3dpZGdldCgpCisKK0FuZCBhbHNvIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yOjoKKworICAgIEB0cmFja19lbnRyeV9hbmRfZXhpdCgnd2lkZ2V0IGxvYWRlcicpCisgICAgZGVmIGFjdGl2aXR5KCk6CisgICAgICAgIHByaW50KCdTb21lIHRpbWUgY29uc3VtaW5nIGFjdGl2aXR5IGdvZXMgaGVyZScpCisgICAgICAgIGxvYWRfd2lkZ2V0KCkKKworTm90ZSB0aGF0IHRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsIGxpbWl0YXRpb24gd2hlbiB1c2luZyBjb250ZXh0IG1hbmFnZXJzCithcyBmdW5jdGlvbiBkZWNvcmF0b3JzOiB0aGVyZSdzIG5vIHdheSB0byBhY2Nlc3MgdGhlIHJldHVybiB2YWx1ZSBvZgorOm1ldGg6YF9fZW50ZXJfX2AuIElmIHRoYXQgdmFsdWUgaXMgbmVlZGVkLCB0aGVuIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byB1c2UKK2FuIGV4cGxpY2l0IGBgd2l0aGBgIHN0YXRlbWVudC4KKwogLi4gc2VlYWxzbzo6CiAKICAgIDpwZXA6YDAzNDNgIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvcHlyZWcucnN0IGIvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKaW5kZXggYTJkMzE2ZS4uNDEwNjFlNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKQEAgLTMyLDYgKzMyLDggQEAKICAgIHJldHVybmVkIGJ5ICpmdW5jdGlvbiogYXQgcGlja2xpbmcgdGltZS4gIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYKICAgICpvYmplY3QqIGlzIGEgY2xhc3Mgb3IgKmNvbnN0cnVjdG9yKiBpcyBub3QgY2FsbGFibGUuCiAKLSAgIFNlZSB0aGUgOm1vZDpgcGlja2xlYCBtb2R1bGUgZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgaW50ZXJmYWNlIGV4cGVjdGVkIG9mCi0gICAqZnVuY3Rpb24qIGFuZCAqY29uc3RydWN0b3IqLgotCisgICBTZWUgdGhlIDptb2Q6YHBpY2tsZWAgbW9kdWxlIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIGludGVyZmFjZQorICAgZXhwZWN0ZWQgb2YgKmZ1bmN0aW9uKiBhbmQgKmNvbnN0cnVjdG9yKi4gIE5vdGUgdGhhdCB0aGUKKyAgIDphdHRyOmB+cGlja2xlLlBpY2tsZXIuZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSBvZiBhIHBpY2tsZXIKKyAgIG9iamVjdCBvciBzdWJjbGFzcyBvZiA6Y2xhc3M6YHBpY2tsZS5QaWNrbGVyYCBjYW4gYWxzbyBiZSB1c2VkIGZvcgorICAgZGVjbGFyaW5nIHJlZHVjdGlvbiBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jcnlwdC5yc3QgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKaW5kZXggMGJlNTcxZS4uMWJhMmVkMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NyeXB0LnJzdApAQCAtMTUsOSArMTUsOSBAQAogCiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB0byB0aGUgOm1hbnBhZ2U6YGNyeXB0KDMpYCByb3V0aW5lLCB3aGljaCBpcwogYSBvbmUtd2F5IGhhc2ggZnVuY3Rpb24gYmFzZWQgdXBvbiBhIG1vZGlmaWVkIERFUyBhbGdvcml0aG07IHNlZSB0aGUgVW5peCBtYW4KLXBhZ2UgZm9yIGZ1cnRoZXIgZGV0YWlscy4gIFBvc3NpYmxlIHVzZXMgaW5jbHVkZSBhbGxvd2luZyBQeXRob24gc2NyaXB0cyB0bwotYWNjZXB0IHR5cGVkIHBhc3N3b3JkcyBmcm9tIHRoZSB1c2VyLCBvciBhdHRlbXB0aW5nIHRvIGNyYWNrIFVuaXggcGFzc3dvcmRzIHdpdGgKLWEgZGljdGlvbmFyeS4KK3BhZ2UgZm9yIGZ1cnRoZXIgZGV0YWlscy4gIFBvc3NpYmxlIHVzZXMgaW5jbHVkZSBzdG9yaW5nIGhhc2hlZCBwYXNzd29yZHMKK3NvIHlvdSBjYW4gY2hlY2sgcGFzc3dvcmRzIHdpdGhvdXQgc3RvcmluZyB0aGUgYWN0dWFsIHBhc3N3b3JkLCBvciBhdHRlbXB0aW5nCit0byBjcmFjayBVbml4IHBhc3N3b3JkcyB3aXRoIGEgZGljdGlvbmFyeS4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IGNyeXB0KDMpCiAKQEAgLTI2LDE1ICsyNiw3NCBAQAogZXh0ZW5zaW9ucyBhdmFpbGFibGUgb24gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gd2lsbCBhbHNvICBiZSBhdmFpbGFibGUgb24KIHRoaXMgbW9kdWxlLgogCitIYXNoaW5nIE1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IGNyeXB0KHdvcmQsIHNhbHQpCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIDptb2Q6YGNyeXB0YCBtb2R1bGUgZGVmaW5lcyB0aGUgbGlzdCBvZiBoYXNoaW5nIG1ldGhvZHMgKG5vdCBhbGwgbWV0aG9kcworYXJlIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zKToKKworLi4gZGF0YTo6IE1FVEhPRF9TSEE1MTIKKworICAgQSBNb2R1bGFyIENyeXB0IEZvcm1hdCBtZXRob2Qgd2l0aCAxNiBjaGFyYWN0ZXIgc2FsdCBhbmQgODYgY2hhcmFjdGVyCisgICBoYXNoLiAgVGhpcyBpcyB0aGUgc3Ryb25nZXN0IG1ldGhvZC4KKworLi4gZGF0YTo6IE1FVEhPRF9TSEEyNTYKKworICAgQW5vdGhlciBNb2R1bGFyIENyeXB0IEZvcm1hdCBtZXRob2Qgd2l0aCAxNiBjaGFyYWN0ZXIgc2FsdCBhbmQgNDMKKyAgIGNoYXJhY3RlciBoYXNoLgorCisuLiBkYXRhOjogTUVUSE9EX01ENQorCisgICBBbm90aGVyIE1vZHVsYXIgQ3J5cHQgRm9ybWF0IG1ldGhvZCB3aXRoIDggY2hhcmFjdGVyIHNhbHQgYW5kIDIyCisgICBjaGFyYWN0ZXIgaGFzaC4KKworLi4gZGF0YTo6IE1FVEhPRF9DUllQVAorCisgICBUaGUgdHJhZGl0aW9uYWwgbWV0aG9kIHdpdGggYSAyIGNoYXJhY3RlciBzYWx0IGFuZCAxMyBjaGFyYWN0ZXJzIG9mCisgICBoYXNoLiAgVGhpcyBpcyB0aGUgd2Vha2VzdCBtZXRob2QuCisKKworTW9kdWxlIEF0dHJpYnV0ZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBtZXRob2RzCisKKyAgIEEgbGlzdCBvZiBhdmFpbGFibGUgcGFzc3dvcmQgaGFzaGluZyBhbGdvcml0aG1zLCBhcworICAgYGBjcnlwdC5NRVRIT0RfKmBgIG9iamVjdHMuICBUaGlzIGxpc3QgaXMgc29ydGVkIGZyb20gc3Ryb25nZXN0IHRvCisgICB3ZWFrZXN0LCBhbmQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGF0IGxlYXN0IGBgY3J5cHQuTUVUSE9EX0NSWVBUYGAuCisKKworTW9kdWxlIEZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgY3J5cHRgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorCisuLiBmdW5jdGlvbjo6IGNyeXB0KHdvcmQsIHNhbHQ9Tm9uZSkKIAogICAgKndvcmQqIHdpbGwgdXN1YWxseSBiZSBhIHVzZXIncyBwYXNzd29yZCBhcyB0eXBlZCBhdCBhIHByb21wdCBvciAgaW4gYSBncmFwaGljYWwKLSAgIGludGVyZmFjZS4gICpzYWx0KiBpcyB1c3VhbGx5IGEgcmFuZG9tIHR3by1jaGFyYWN0ZXIgc3RyaW5nIHdoaWNoIHdpbGwgYmUgdXNlZAotICAgdG8gcGVydHVyYiB0aGUgREVTIGFsZ29yaXRobSBpbiBvbmUgb2YgNDA5NiB3YXlzLiAgVGhlIGNoYXJhY3RlcnMgaW4gKnNhbHQqIG11c3QKLSAgIGJlIGluIHRoZSBzZXQgYGBbLi9hLXpBLVowLTldYGAuICBSZXR1cm5zIHRoZSBoYXNoZWQgcGFzc3dvcmQgYXMgYSBzdHJpbmcsIHdoaWNoCi0gICB3aWxsIGJlIGNvbXBvc2VkIG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgc2FtZSBhbHBoYWJldCBhcyB0aGUgc2FsdCAodGhlIGZpcnN0IHR3bwotICAgY2hhcmFjdGVycyByZXByZXNlbnQgdGhlIHNhbHQgaXRzZWxmKS4KKyAgIGludGVyZmFjZS4gIFRoZSBvcHRpb25hbCAqc2FsdCogaXMgZWl0aGVyIGEgc3RyaW5nIGFzIHJldHVybmVkIGZyb20KKyAgIDpmdW5jOmBta3NhbHRgLCBvbmUgb2YgdGhlIGBgY3J5cHQuTUVUSE9EXypgYCB2YWx1ZXMgKHRob3VnaCBub3QgYWxsCisgICBtYXkgYmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMpLCBvciBhIGZ1bGwgZW5jcnlwdGVkIHBhc3N3b3JkCisgICBpbmNsdWRpbmcgc2FsdCwgYXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbi4gIElmICpzYWx0KiBpcyBub3QKKyAgIHByb3ZpZGVkLCB0aGUgc3Ryb25nZXN0IG1ldGhvZCB3aWxsIGJlIHVzZWQgKGFzIHJldHVybmVkIGJ5CisgICA6ZnVuYzpgbWV0aG9kc2AuCisKKyAgIENoZWNraW5nIGEgcGFzc3dvcmQgaXMgdXN1YWxseSBkb25lIGJ5IHBhc3NpbmcgdGhlIHBsYWluLXRleHQgcGFzc3dvcmQKKyAgIGFzICp3b3JkKiBhbmQgdGhlIGZ1bGwgcmVzdWx0cyBvZiBhIHByZXZpb3VzIDpmdW5jOmBjcnlwdGAgY2FsbCwKKyAgIHdoaWNoIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcmVzdWx0cyBvZiB0aGlzIGNhbGwuCisKKyAgICpzYWx0KiAoZWl0aGVyIGEgcmFuZG9tIDIgb3IgMTYgY2hhcmFjdGVyIHN0cmluZywgcG9zc2libHkgcHJlZml4ZWQgd2l0aAorICAgYGAkZGlnaXQkYGAgdG8gaW5kaWNhdGUgdGhlIG1ldGhvZCkgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHBlcnR1cmIgdGhlCisgICBlbmNyeXB0aW9uIGFsZ29yaXRobS4gIFRoZSBjaGFyYWN0ZXJzIGluICpzYWx0KiBtdXN0IGJlIGluIHRoZSBzZXQKKyAgIGBgWy4vYS16QS1aMC05XWBgLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgTW9kdWxhciBDcnlwdCBGb3JtYXQgd2hpY2gKKyAgIHByZWZpeGVzIGEgYGAkZGlnaXQkYGAuCisKKyAgIFJldHVybnMgdGhlIGhhc2hlZCBwYXNzd29yZCBhcyBhIHN0cmluZywgd2hpY2ggd2lsbCBiZSBjb21wb3NlZCBvZgorICAgY2hhcmFjdGVycyBmcm9tIHRoZSBzYW1lIGFscGhhYmV0IGFzIHRoZSBzYWx0LgogCiAgICAuLiBpbmRleDo6IHNpbmdsZTogY3J5cHQoMykKIApAQCAtNDIsMTggKzEwMSw0OCBAQAogICAgZGlmZmVyZW50IHNpemVzIGluIHRoZSAqc2FsdCosIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSAgdGhlIGZ1bGwgY3J5cHRlZAogICAgcGFzc3dvcmQgYXMgc2FsdCB3aGVuIGNoZWNraW5nIGZvciBhIHBhc3N3b3JkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWNjZXB0IGBgY3J5cHQuTUVUSE9EXypgYCB2YWx1ZXMgaW4gYWRkaXRpb24gdG8gc3RyaW5ncyBmb3IgKnNhbHQqLgorCisKKy4uIGZ1bmN0aW9uOjogbWtzYWx0KG1ldGhvZD1Ob25lKQorCisgICBSZXR1cm4gYSByYW5kb21seSBnZW5lcmF0ZWQgc2FsdCBvZiB0aGUgc3BlY2lmaWVkIG1ldGhvZC4gIElmIG5vCisgICAqbWV0aG9kKiBpcyBnaXZlbiwgdGhlIHN0cm9uZ2VzdCBtZXRob2QgYXZhaWxhYmxlIGFzIHJldHVybmVkIGJ5CisgICA6ZnVuYzpgbWV0aG9kc2AgaXMgdXNlZC4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cmluZyBlaXRoZXIgb2YgMiBjaGFyYWN0ZXJzIGluIGxlbmd0aCBmb3IKKyAgIGBgY3J5cHQuTUVUSE9EX0NSWVBUYGAsIG9yIDE5IGNoYXJhY3RlcnMgc3RhcnRpbmcgd2l0aCBgYCRkaWdpdCRgYCBhbmQKKyAgIDE2IHJhbmRvbSBjaGFyYWN0ZXJzIGZyb20gdGhlIHNldCBgYFsuL2EtekEtWjAtOV1gYCwgc3VpdGFibGUgZm9yCisgICBwYXNzaW5nIGFzIHRoZSAqc2FsdCogYXJndW1lbnQgdG8gOmZ1bmM6YGNyeXB0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK0V4YW1wbGVzCistLS0tLS0tLQorCiBBIHNpbXBsZSBleGFtcGxlIGlsbHVzdHJhdGluZyB0eXBpY2FsIHVzZTo6CiAKLSAgIGltcG9ydCBjcnlwdCwgZ2V0cGFzcywgcHdkCisgICBpbXBvcnQgcHdkCisgICBpbXBvcnQgY3J5cHQKKyAgIGltcG9ydCBnZXRwYXNzCiAKICAgIGRlZiBsb2dpbigpOgotICAgICAgIHVzZXJuYW1lID0gaW5wdXQoJ1B5dGhvbiBsb2dpbjonKQorICAgICAgIHVzZXJuYW1lID0gaW5wdXQoJ1B5dGhvbiBsb2dpbjogJykKICAgICAgICBjcnlwdGVkcGFzc3dkID0gcHdkLmdldHB3bmFtKHVzZXJuYW1lKVsxXQogICAgICAgIGlmIGNyeXB0ZWRwYXNzd2Q6CiAgICAgICAgICAgIGlmIGNyeXB0ZWRwYXNzd2QgPT0gJ3gnIG9yIGNyeXB0ZWRwYXNzd2QgPT0gJyonOgotICAgICAgICAgICAgICAgcmFpc2UgIlNvcnJ5LCBjdXJyZW50bHkgbm8gc3VwcG9ydCBmb3Igc2hhZG93IHBhc3N3b3JkcyIKKyAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25vIHN1cHBvcnQgZm9yIHNoYWRvdyBwYXNzd29yZHMnKQogICAgICAgICAgICBjbGVhcnRleHQgPSBnZXRwYXNzLmdldHBhc3MoKQogICAgICAgICAgICByZXR1cm4gY3J5cHQuY3J5cHQoY2xlYXJ0ZXh0LCBjcnlwdGVkcGFzc3dkKSA9PSBjcnlwdGVkcGFzc3dkCiAgICAgICAgZWxzZToKLSAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgcmV0dXJuIFRydWUKIAorVG8gZ2VuZXJhdGUgYSBoYXNoIG9mIGEgcGFzc3dvcmQgdXNpbmcgdGhlIHN0cm9uZ2VzdCBhdmFpbGFibGUgbWV0aG9kIGFuZAorY2hlY2sgaXQgYWdhaW5zdCB0aGUgb3JpZ2luYWw6OgorCisgICBpbXBvcnQgY3J5cHQKKworICAgaGFzaGVkID0gY3J5cHQuY3J5cHQocGxhaW50ZXh0KQorICAgaWYgaGFzaGVkICE9IGNyeXB0LmNyeXB0KHBsYWludGV4dCwgaGFzaGVkKToKKyAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImhhc2hlZCB2ZXJzaW9uIGRvZXNuJ3QgdmFsaWRhdGUgYWdhaW5zdCBvcmlnaW5hbCIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jc3YucnN0IGIvRG9jL2xpYnJhcnkvY3N2LnJzdAppbmRleCBlODRlMjE4Li41ZDgzNjhiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jc3YucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKQEAgLTExLDE1ICsxMSwxNSBAQAogICAgcGFpcjogZGF0YTsgdGFidWxhcgogCiBUaGUgc28tY2FsbGVkIENTViAoQ29tbWEgU2VwYXJhdGVkIFZhbHVlcykgZm9ybWF0IGlzIHRoZSBtb3N0IGNvbW1vbiBpbXBvcnQgYW5kCi1leHBvcnQgZm9ybWF0IGZvciBzcHJlYWRzaGVldHMgYW5kIGRhdGFiYXNlcy4gIFRoZXJlIGlzIG5vICJDU1Ygc3RhbmRhcmQiLCBzbwotdGhlIGZvcm1hdCBpcyBvcGVyYXRpb25hbGx5IGRlZmluZWQgYnkgdGhlIG1hbnkgYXBwbGljYXRpb25zIHdoaWNoIHJlYWQgYW5kCi13cml0ZSBpdC4gIFRoZSBsYWNrIG9mIGEgc3RhbmRhcmQgbWVhbnMgdGhhdCBzdWJ0bGUgZGlmZmVyZW5jZXMgb2Z0ZW4gZXhpc3QgaW4KLXRoZSBkYXRhIHByb2R1Y2VkIGFuZCBjb25zdW1lZCBieSBkaWZmZXJlbnQgYXBwbGljYXRpb25zLiAgVGhlc2UgZGlmZmVyZW5jZXMgY2FuCi1tYWtlIGl0IGFubm95aW5nIHRvIHByb2Nlc3MgQ1NWIGZpbGVzIGZyb20gbXVsdGlwbGUgc291cmNlcy4gIFN0aWxsLCB3aGlsZSB0aGUKLWRlbGltaXRlcnMgYW5kIHF1b3RpbmcgY2hhcmFjdGVycyB2YXJ5LCB0aGUgb3ZlcmFsbCBmb3JtYXQgaXMgc2ltaWxhciBlbm91Z2gKLXRoYXQgaXQgaXMgcG9zc2libGUgdG8gd3JpdGUgYSBzaW5nbGUgbW9kdWxlIHdoaWNoIGNhbiBlZmZpY2llbnRseSBtYW5pcHVsYXRlCi1zdWNoIGRhdGEsIGhpZGluZyB0aGUgZGV0YWlscyBvZiByZWFkaW5nIGFuZCB3cml0aW5nIHRoZSBkYXRhIGZyb20gdGhlCi1wcm9ncmFtbWVyLgorZXhwb3J0IGZvcm1hdCBmb3Igc3ByZWFkc2hlZXRzIGFuZCBkYXRhYmFzZXMuICBDU1YgZm9ybWF0IHdhcyB1c2VkIGZvciBtYW55Cit5ZWFycyBwcmlvciB0byBhdHRlbXB0cyB0byBkZXNjcmliZSB0aGUgZm9ybWF0IGluIGEgc3RhbmRhcmRpemVkIHdheSBpbgorOnJmYzpgNDE4MGAuICBUaGUgbGFjayBvZiBhIHdlbGwtZGVmaW5lZCBzdGFuZGFyZCBtZWFucyB0aGF0IHN1YnRsZSBkaWZmZXJlbmNlcworb2Z0ZW4gZXhpc3QgaW4gdGhlIGRhdGEgcHJvZHVjZWQgYW5kIGNvbnN1bWVkIGJ5IGRpZmZlcmVudCBhcHBsaWNhdGlvbnMuICBUaGVzZQorZGlmZmVyZW5jZXMgY2FuIG1ha2UgaXQgYW5ub3lpbmcgdG8gcHJvY2VzcyBDU1YgZmlsZXMgZnJvbSBtdWx0aXBsZSBzb3VyY2VzLgorU3RpbGwsIHdoaWxlIHRoZSBkZWxpbWl0ZXJzIGFuZCBxdW90aW5nIGNoYXJhY3RlcnMgdmFyeSwgdGhlIG92ZXJhbGwgZm9ybWF0IGlzCitzaW1pbGFyIGVub3VnaCB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHdyaXRlIGEgc2luZ2xlIG1vZHVsZSB3aGljaCBjYW4KK2VmZmljaWVudGx5IG1hbmlwdWxhdGUgc3VjaCBkYXRhLCBoaWRpbmcgdGhlIGRldGFpbHMgb2YgcmVhZGluZyBhbmQgd3JpdGluZyB0aGUKK2RhdGEgZnJvbSB0aGUgcHJvZ3JhbW1lci4KIAogVGhlIDptb2Q6YGNzdmAgbW9kdWxlIGltcGxlbWVudHMgY2xhc3NlcyB0byByZWFkIGFuZCB3cml0ZSB0YWJ1bGFyIGRhdGEgaW4gQ1NWCiBmb3JtYXQuICBJdCBhbGxvd3MgcHJvZ3JhbW1lcnMgdG8gc2F5LCAid3JpdGUgdGhpcyBkYXRhIGluIHRoZSBmb3JtYXQgcHJlZmVycmVkCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAppbmRleCAzYzYwMmM4Li4zZTRhZmQxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKQEAgLTM5LDkgKzM5LDE0IEBACiBjb252ZW50aW9uLCB3aGlsZSAqd2luZGxsKiBsaWJyYXJpZXMgY2FsbCBmdW5jdGlvbnMgdXNpbmcgdGhlIGBgc3RkY2FsbGBgCiBjYWxsaW5nIGNvbnZlbnRpb24uICpvbGVkbGwqIGFsc28gdXNlcyB0aGUgYGBzdGRjYWxsYGAgY2FsbGluZyBjb252ZW50aW9uLCBhbmQKIGFzc3VtZXMgdGhlIGZ1bmN0aW9ucyByZXR1cm4gYSBXaW5kb3dzIDpjOnR5cGU6YEhSRVNVTFRgIGVycm9yIGNvZGUuIFRoZSBlcnJvcgotY29kZSBpcyB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgcmFpc2UgYSA6Y2xhc3M6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIHdoZW4gdGhlCitjb2RlIGlzIHVzZWQgdG8gYXV0b21hdGljYWxseSByYWlzZSBhIDpjbGFzczpgT1NFcnJvcmAgZXhjZXB0aW9uIHdoZW4gdGhlCiBmdW5jdGlvbiBjYWxsIGZhaWxzLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgV2luZG93cyBlcnJvcnMgdXNlZCB0byByYWlzZSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4gYWxpYXMKKyAgIG9mIDpleGM6YE9TRXJyb3JgLgorCisKIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgZm9yIFdpbmRvd3MuIE5vdGUgdGhhdCBgYG1zdmNydGBgIGlzIHRoZSBNUyBzdGFuZGFyZCBDCiBsaWJyYXJ5IGNvbnRhaW5pbmcgbW9zdCBzdGFuZGFyZCBDIGZ1bmN0aW9ucywgYW5kIHVzZXMgdGhlIGNkZWNsIGNhbGxpbmcKIGNvbnZlbnRpb246OgpAQCAtMTg5LDcgKzE5NCw3IEBACiAgICA+Pj4gd2luZGxsLmtlcm5lbDMyLkdldE1vZHVsZUhhbmRsZUEoMzIpICMgZG9jdGVzdDogK1dJTkRPV1MKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPwotICAgV2luZG93c0Vycm9yOiBleGNlcHRpb246IGFjY2VzcyB2aW9sYXRpb24gcmVhZGluZyAweDAwMDAwMDIwCisgICBPU0Vycm9yOiBleGNlcHRpb246IGFjY2VzcyB2aW9sYXRpb24gcmVhZGluZyAweDAwMDAwMDIwCiAgICA+Pj4KIAogVGhlcmUgYXJlLCBob3dldmVyLCBlbm91Z2ggd2F5cyB0byBjcmFzaCBQeXRob24gd2l0aCA6bW9kOmBjdHlwZXNgLCBzbyB5b3UKQEAgLTQ5Niw3ICs1MDEsNyBAQAogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDMsIGluIFZhbGlkSGFuZGxlCi0gICBXaW5kb3dzRXJyb3I6IFtFcnJubyAxMjZdIFRoZSBzcGVjaWZpZWQgbW9kdWxlIGNvdWxkIG5vdCBiZSBmb3VuZC4KKyAgIE9TRXJyb3I6IFtFcnJubyAxMjZdIFRoZSBzcGVjaWZpZWQgbW9kdWxlIGNvdWxkIG5vdCBiZSBmb3VuZC4KICAgID4+PgogCiBgYFdpbkVycm9yYGAgaXMgYSBmdW5jdGlvbiB3aGljaCB3aWxsIGNhbGwgV2luZG93cyBgYEZvcm1hdE1lc3NhZ2UoKWBgIGFwaSB0bwpAQCAtOTI2LDIxICs5MzEsMjEgQEAKIDptb2Q6YGN0eXBlc2AgYWxsb3dzIHRvIGNyZWF0ZSBDIGNhbGxhYmxlIGZ1bmN0aW9uIHBvaW50ZXJzIGZyb20gUHl0aG9uIGNhbGxhYmxlcy4KIFRoZXNlIGFyZSBzb21ldGltZXMgY2FsbGVkICpjYWxsYmFjayBmdW5jdGlvbnMqLgogCi1GaXJzdCwgeW91IG11c3QgY3JlYXRlIGEgY2xhc3MgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbiwgdGhlIGNsYXNzIGtub3dzIHRoZQorRmlyc3QsIHlvdSBtdXN0IGNyZWF0ZSBhIGNsYXNzIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uIFRoZSBjbGFzcyBrbm93cyB0aGUKIGNhbGxpbmcgY29udmVudGlvbiwgdGhlIHJldHVybiB0eXBlLCBhbmQgdGhlIG51bWJlciBhbmQgdHlwZXMgb2YgYXJndW1lbnRzIHRoaXMKIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZS4KIAotVGhlIENGVU5DVFlQRSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZXMgdHlwZXMgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucyB1c2luZyB0aGUKLW5vcm1hbCBjZGVjbCBjYWxsaW5nIGNvbnZlbnRpb24sIGFuZCwgb24gV2luZG93cywgdGhlIFdJTkZVTkNUWVBFIGZhY3RvcnkKLWZ1bmN0aW9uIGNyZWF0ZXMgdHlwZXMgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucyB1c2luZyB0aGUgc3RkY2FsbCBjYWxsaW5nCi1jb252ZW50aW9uLgorVGhlIDpmdW5jOmBDRlVOQ1RZUEVgIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlcyB0eXBlcyBmb3IgY2FsbGJhY2sgZnVuY3Rpb25zCit1c2luZyB0aGUgYGBjZGVjbGBgIGNhbGxpbmcgY29udmVudGlvbi4gT24gV2luZG93cywgdGhlIDpmdW5jOmBXSU5GVU5DVFlQRWAKK2ZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlcyB0eXBlcyBmb3IgY2FsbGJhY2sgZnVuY3Rpb25zIHVzaW5nIHRoZSBgYHN0ZGNhbGxgYAorY2FsbGluZyBjb252ZW50aW9uLgogCiBCb3RoIG9mIHRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IHR5cGUgYXMgZmlyc3QKIGFyZ3VtZW50LCBhbmQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9ucyBleHBlY3RlZCBhcmd1bWVudCB0eXBlcyBhcyB0aGUgcmVtYWluaW5nCiBhcmd1bWVudHMuCiAKIEkgd2lsbCBwcmVzZW50IGFuIGV4YW1wbGUgaGVyZSB3aGljaCB1c2VzIHRoZSBzdGFuZGFyZCBDIGxpYnJhcnkncwotOmM6ZnVuYzpgcXNvcnRgIGZ1bmN0aW9uLCB0aGlzIGlzIHVzZWQgdG8gc29ydCBpdGVtcyB3aXRoIHRoZSBoZWxwIG9mIGEgY2FsbGJhY2sKKzpjOmZ1bmM6YHFzb3J0YCBmdW5jdGlvbiwgdGhhdCBpcyB1c2VkIHRvIHNvcnQgaXRlbXMgd2l0aCB0aGUgaGVscCBvZiBhIGNhbGxiYWNrCiBmdW5jdGlvbi4gIDpjOmZ1bmM6YHFzb3J0YCB3aWxsIGJlIHVzZWQgdG8gc29ydCBhbiBhcnJheSBvZiBpbnRlZ2Vyczo6CiAKICAgID4+PiBJbnRBcnJheTUgPSBjX2ludCAqIDUKQEAgLTk1Myw3ICs5NTgsNyBAQAogaXRlbXMgaW4gdGhlIGRhdGEgYXJyYXksIHRoZSBzaXplIG9mIG9uZSBpdGVtLCBhbmQgYSBwb2ludGVyIHRvIHRoZSBjb21wYXJpc29uCiBmdW5jdGlvbiwgdGhlIGNhbGxiYWNrLiBUaGUgY2FsbGJhY2sgd2lsbCB0aGVuIGJlIGNhbGxlZCB3aXRoIHR3byBwb2ludGVycyB0bwogaXRlbXMsIGFuZCBpdCBtdXN0IHJldHVybiBhIG5lZ2F0aXZlIGludGVnZXIgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgc21hbGxlciB0aGFuCi10aGUgc2Vjb25kLCBhIHplcm8gaWYgdGhleSBhcmUgZXF1YWwsIGFuZCBhIHBvc2l0aXZlIGludGVnZXIgZWxzZS4KK3RoZSBzZWNvbmQsIGEgemVybyBpZiB0aGV5IGFyZSBlcXVhbCwgYW5kIGEgcG9zaXRpdmUgaW50ZWdlciBvdGhlcndpc2UuCiAKIFNvIG91ciBjYWxsYmFjayBmdW5jdGlvbiByZWNlaXZlcyBwb2ludGVycyB0byBpbnRlZ2VycywgYW5kIG11c3QgcmV0dXJuIGFuCiBpbnRlZ2VyLiBGaXJzdCB3ZSBjcmVhdGUgdGhlIGBgdHlwZWBgIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb246OgpAQCAtOTYxLDM2ICs5NjYsOCBAQAogICAgPj4+IENNUEZVTkMgPSBDRlVOQ1RZUEUoY19pbnQsIFBPSU5URVIoY19pbnQpLCBQT0lOVEVSKGNfaW50KSkKICAgID4+PgogCi1Gb3IgdGhlIGZpcnN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBjYWxsYmFjayBmdW5jdGlvbiwgd2Ugc2ltcGx5IHByaW50IHRoZQotYXJndW1lbnRzIHdlIGdldCwgYW5kIHJldHVybiAwIChpbmNyZW1lbnRhbCBkZXZlbG9wbWVudCA7LSk6OgotCi0gICA+Pj4gZGVmIHB5X2NtcF9mdW5jKGEsIGIpOgotICAgLi4uICAgICBwcmludCgicHlfY21wX2Z1bmMiLCBhLCBiKQotICAgLi4uICAgICByZXR1cm4gMAotICAgLi4uCi0gICA+Pj4KLQotQ3JlYXRlIHRoZSBDIGNhbGxhYmxlIGNhbGxiYWNrOjoKLQotICAgPj4+IGNtcF9mdW5jID0gQ01QRlVOQyhweV9jbXBfZnVuYykKLSAgID4+PgotCi1BbmQgd2UncmUgcmVhZHkgdG8gZ286OgotCi0gICA+Pj4gcXNvcnQoaWEsIGxlbihpYSksIHNpemVvZihjX2ludCksIGNtcF9mdW5jKSAjIGRvY3Rlc3Q6ICtXSU5ET1dTCi0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICA+Pj4KLQotV2Uga25vdyBob3cgdG8gYWNjZXNzIHRoZSBjb250ZW50cyBvZiBhIHBvaW50ZXIsIHNvIGxldHMgcmVkZWZpbmUgb3VyIGNhbGxiYWNrOjoKK1RvIGdldCBzdGFydGVkLCBoZXJlIGlzIGEgc2ltcGxlIGNhbGxiYWNrIHRoYXQgc2hvd3MgdGhlIHZhbHVlcyBpdCBnZXRzCitwYXNzZWQ6OgogCiAgICA+Pj4gZGVmIHB5X2NtcF9mdW5jKGEsIGIpOgogICAgLi4uICAgICBwcmludCgicHlfY21wX2Z1bmMiLCBhWzBdLCBiWzBdKQpAQCAtOTk5LDIzICs5NzYsNyBAQAogICAgPj4+IGNtcF9mdW5jID0gQ01QRlVOQyhweV9jbXBfZnVuYykKICAgID4+PgogCi1IZXJlIGlzIHdoYXQgd2UgZ2V0IG9uIFdpbmRvd3M6OgotCi0gICA+Pj4gcXNvcnQoaWEsIGxlbihpYSksIHNpemVvZihjX2ludCksIGNtcF9mdW5jKSAjIGRvY3Rlc3Q6ICtXSU5ET1dTCi0gICBweV9jbXBfZnVuYyA3IDEKLSAgIHB5X2NtcF9mdW5jIDMzIDEKLSAgIHB5X2NtcF9mdW5jIDk5IDEKLSAgIHB5X2NtcF9mdW5jIDUgMQotICAgcHlfY21wX2Z1bmMgNyA1Ci0gICBweV9jbXBfZnVuYyAzMyA1Ci0gICBweV9jbXBfZnVuYyA5OSA1Ci0gICBweV9jbXBfZnVuYyA3IDk5Ci0gICBweV9jbXBfZnVuYyAzMyA5OQotICAgcHlfY21wX2Z1bmMgNyAzMwotICAgPj4+Ci0KLUl0IGlzIGZ1bm55IHRvIHNlZSB0aGF0IG9uIGxpbnV4IHRoZSBzb3J0IGZ1bmN0aW9uIHNlZW1zIHRvIHdvcmsgbXVjaCBtb3JlCi1lZmZpY2llbnRseSwgaXQgaXMgZG9pbmcgbGVzcyBjb21wYXJpc29uczo6CitUaGUgcmVzdWx0OjoKIAogICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBjbXBfZnVuYykgIyBkb2N0ZXN0OiArTElOVVgKICAgIHB5X2NtcF9mdW5jIDUgMQpAQCAtMTAyNSwzMiArOTg2LDEzIEBACiAgICBweV9jbXBfZnVuYyAxIDcKICAgID4+PgogCi1BaCwgd2UncmUgbmVhcmx5IGRvbmUhIFRoZSBsYXN0IHN0ZXAgaXMgdG8gYWN0dWFsbHkgY29tcGFyZSB0aGUgdHdvIGl0ZW1zIGFuZAotcmV0dXJuIGEgdXNlZnVsIHJlc3VsdDo6CitOb3cgd2UgY2FuIGFjdHVhbGx5IGNvbXBhcmUgdGhlIHR3byBpdGVtcyBhbmQgcmV0dXJuIGEgdXNlZnVsIHJlc3VsdDo6CiAKICAgID4+PiBkZWYgcHlfY21wX2Z1bmMoYSwgYik6CiAgICAuLi4gICAgIHByaW50KCJweV9jbXBfZnVuYyIsIGFbMF0sIGJbMF0pCiAgICAuLi4gICAgIHJldHVybiBhWzBdIC0gYlswXQogICAgLi4uCiAgICA+Pj4KLQotRmluYWwgcnVuIG9uIFdpbmRvd3M6OgotCi0gICA+Pj4gcXNvcnQoaWEsIGxlbihpYSksIHNpemVvZihjX2ludCksIENNUEZVTkMocHlfY21wX2Z1bmMpKSAjIGRvY3Rlc3Q6ICtXSU5ET1dTCi0gICBweV9jbXBfZnVuYyAzMyA3Ci0gICBweV9jbXBfZnVuYyA5OSAzMwotICAgcHlfY21wX2Z1bmMgNSA5OQotICAgcHlfY21wX2Z1bmMgMSA5OQotICAgcHlfY21wX2Z1bmMgMzMgNwotICAgcHlfY21wX2Z1bmMgMSAzMwotICAgcHlfY21wX2Z1bmMgNSAzMwotICAgcHlfY21wX2Z1bmMgNSA3Ci0gICBweV9jbXBfZnVuYyAxIDcKLSAgIHB5X2NtcF9mdW5jIDUgMQotICAgPj4+Ci0KLWFuZCBvbiBMaW51eDo6Ci0KICAgID4+PiBxc29ydChpYSwgbGVuKGlhKSwgc2l6ZW9mKGNfaW50KSwgQ01QRlVOQyhweV9jbXBfZnVuYykpICMgZG9jdGVzdDogK0xJTlVYCiAgICBweV9jbXBfZnVuYyA1IDEKICAgIHB5X2NtcF9mdW5jIDMzIDk5CkBAIC0xMDU5LDkgKzEwMDEsNiBAQAogICAgcHlfY21wX2Z1bmMgNSA3CiAgICA+Pj4KIAotSXQgaXMgcXVpdGUgaW50ZXJlc3RpbmcgdG8gc2VlIHRoYXQgdGhlIFdpbmRvd3MgOmZ1bmM6YHFzb3J0YCBmdW5jdGlvbiBuZWVkcwotbW9yZSBjb21wYXJpc29ucyB0aGFuIHRoZSBsaW51eCB2ZXJzaW9uIQotCiBBcyB3ZSBjYW4gZWFzaWx5IGNoZWNrLCBvdXIgYXJyYXkgaXMgc29ydGVkIG5vdzo6CiAKICAgID4+PiBmb3IgaSBpbiBpYTogcHJpbnQoaSwgZW5kPSIgIikKQEAgLTEwNzEsOSArMTAxMCw5IEBACiAKICoqSW1wb3J0YW50IG5vdGUgZm9yIGNhbGxiYWNrIGZ1bmN0aW9uczoqKgogCi1NYWtlIHN1cmUgeW91IGtlZXAgcmVmZXJlbmNlcyB0byBDRlVOQ1RZUEUgb2JqZWN0cyBhcyBsb25nIGFzIHRoZXkgYXJlIHVzZWQgZnJvbQotQyBjb2RlLiA6bW9kOmBjdHlwZXNgIGRvZXNuJ3QsIGFuZCBpZiB5b3UgZG9uJ3QsIHRoZXkgbWF5IGJlIGdhcmJhZ2UgY29sbGVjdGVkLAotY3Jhc2hpbmcgeW91ciBwcm9ncmFtIHdoZW4gYSBjYWxsYmFjayBpcyBtYWRlLgorTWFrZSBzdXJlIHlvdSBrZWVwIHJlZmVyZW5jZXMgdG8gOmZ1bmM6YENGVU5DVFlQRWAgb2JqZWN0cyBhcyBsb25nIGFzIHRoZXkgYXJlCit1c2VkIGZyb20gQyBjb2RlLiA6bW9kOmBjdHlwZXNgIGRvZXNuJ3QsIGFuZCBpZiB5b3UgZG9uJ3QsIHRoZXkgbWF5IGJlIGdhcmJhZ2UKK2NvbGxlY3RlZCwgY3Jhc2hpbmcgeW91ciBwcm9ncmFtIHdoZW4gYSBjYWxsYmFjayBpcyBtYWRlLgogCiAKIC4uIF9jdHlwZXMtYWNjZXNzaW5nLXZhbHVlcy1leHBvcnRlZC1mcm9tLWRsbHM6CkBAIC0xMzUwLDcgKzEyODksMTAgQEAKICAgIGFzc3VtZWQgdG8gcmV0dXJuIHRoZSB3aW5kb3dzIHNwZWNpZmljIDpjbGFzczpgSFJFU1VMVGAgY29kZS4gIDpjbGFzczpgSFJFU1VMVGAKICAgIHZhbHVlcyBjb250YWluIGluZm9ybWF0aW9uIHNwZWNpZnlpbmcgd2hldGhlciB0aGUgZnVuY3Rpb24gY2FsbCBmYWlsZWQgb3IKICAgIHN1Y2NlZWRlZCwgdG9nZXRoZXIgd2l0aCBhZGRpdGlvbmFsIGVycm9yIGNvZGUuICBJZiB0aGUgcmV0dXJuIHZhbHVlIHNpZ25hbHMgYQotICAgZmFpbHVyZSwgYW4gOmNsYXNzOmBXaW5kb3dzRXJyb3JgIGlzIGF1dG9tYXRpY2FsbHkgcmFpc2VkLgorICAgZmFpbHVyZSwgYW4gOmNsYXNzOmBPU0Vycm9yYCBpcyBhdXRvbWF0aWNhbGx5IHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YFdpbmRvd3NFcnJvcmAgdXNlZCB0byBiZSByYWlzZWQuCiAKIAogLi4gY2xhc3M6OiBXaW5ETEwobmFtZSwgbW9kZT1ERUZBVUxUX01PREUsIGhhbmRsZT1Ob25lLCB1c2VfZXJybm89RmFsc2UsIHVzZV9sYXN0X2Vycm9yPUZhbHNlKQpAQCAtMTk2NywxMSArMTkwOSwxNCBAQAogLi4gZnVuY3Rpb246OiBXaW5FcnJvcihjb2RlPU5vbmUsIGRlc2NyPU5vbmUpCiAKICAgIFdpbmRvd3Mgb25seTogdGhpcyBmdW5jdGlvbiBpcyBwcm9iYWJseSB0aGUgd29yc3QtbmFtZWQgdGhpbmcgaW4gY3R5cGVzLiBJdAotICAgY3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBXaW5kb3dzRXJyb3IuICBJZiAqY29kZSogaXMgbm90IHNwZWNpZmllZCwKKyAgIGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgT1NFcnJvci4gIElmICpjb2RlKiBpcyBub3Qgc3BlY2lmaWVkLAogICAgYGBHZXRMYXN0RXJyb3JgYCBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIHRoZSBlcnJvciBjb2RlLiBJZiAqZGVzY3IqIGlzIG5vdAogICAgc3BlY2lmaWVkLCA6ZnVuYzpgRm9ybWF0RXJyb3JgIGlzIGNhbGxlZCB0byBnZXQgYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZQogICAgZXJyb3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBbiBpbnN0YW5jZSBvZiA6ZXhjOmBXaW5kb3dzRXJyb3JgIHVzZWQgdG8gYmUgY3JlYXRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IHdzdHJpbmdfYXQoYWRkcmVzcywgc2l6ZT0tMSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdCBiL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QKaW5kZXggZjMxYjljNS4uZmYzYTc5MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdXJzZXMucnN0CkBAIC01OTgsNiArNTk4LDE3IEBACiAgICAgICBPbmx5IG9uZSAqY2gqIGNhbiBiZSBwdXNoZWQgYmVmb3JlIDptZXRoOmBnZXRjaGAgaXMgY2FsbGVkLgogCiAKKy4uIGZ1bmN0aW9uOjogdW5nZXRfd2NoKGNoKQorCisgICBQdXNoICpjaCogc28gdGhlIG5leHQgOm1ldGg6YGdldF93Y2hgIHdpbGwgcmV0dXJuIGl0LgorCisgICAuLiBub3RlOjoKKworICAgICAgT25seSBvbmUgKmNoKiBjYW4gYmUgcHVzaGVkIGJlZm9yZSA6bWV0aDpgZ2V0X3djaGAgaXMgY2FsbGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IHVuZ2V0bW91c2UoaWQsIHgsIHksIHosIGJzdGF0ZSkKIAogICAgUHVzaCBhIDpjb25zdDpgS0VZX01PVVNFYCBldmVudCBvbnRvIHRoZSBpbnB1dCBxdWV1ZSwgYXNzb2NpYXRpbmcgdGhlIGdpdmVuCkBAIC02NDIsNyArNjUzLDcgQEAKIC0tLS0tLS0tLS0tLS0tCiAKIFdpbmRvdyBvYmplY3RzLCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgaW5pdHNjcmAgYW5kIDpmdW5jOmBuZXd3aW5gIGFib3ZlLCBoYXZlCi10aGUgZm9sbG93aW5nIG1ldGhvZHM6Cit0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKIAogLi4gbWV0aG9kOjogd2luZG93LmFkZGNoKFt5LCB4LF0gY2hbLCBhdHRyXSkKQEAgLTgyMyw2ICs4MzQsMTYgQEAKICAgIGV2ZW50LgogCiAKKy4uIGF0dHJpYnV0ZTo6IHdpbmRvdy5lbmNvZGluZworCisgICBFbmNvZGluZyB1c2VkIHRvIGVuY29kZSBtZXRob2QgYXJndW1lbnRzIChVbmljb2RlIHN0cmluZ3MgYW5kIGNoYXJhY3RlcnMpLgorICAgVGhlIGVuY29kaW5nIGF0dHJpYnV0ZSBpcyBpbmhlcml0ZWQgZnJvbSBieSBwYXJlbnQgd2luZG93IHdoZW4gYSBzdWJ3aW5kb3cKKyAgIGlzIGNyZWF0ZWQsIGZvciBleGFtcGxlIHdpdGggOm1ldGg6YHdpbmRvdy5zdWJ3aW5gLiBCeSBkZWZhdWx0LCB0aGUgbG9jYWxlCisgICBlbmNvZGluZyBpcyB1c2VkIChzZWUgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZ2ApLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiB3aW5kb3cuZXJhc2UoKQogCiAgICBDbGVhciB0aGUgd2luZG93LgpAQCAtODQ2LDYgKzg2NywxNCBAQAogICAgdW50aWwgYSBrZXkgaXMgcHJlc3NlZC4KIAogCisuLiBtZXRob2Q6OiB3aW5kb3cuZ2V0X3djaChbeSwgeF0pCisKKyAgIEdldCBhIHdpZGUgY2hhcmFjdGVyLiBMaWtlIDptZXRoOmBnZXRjaGAsIGJ1dCB0aGUgaW50ZWdlciByZXR1cm5lZCBpcyB0aGUKKyAgIFVuaWNvZGUgY29kZSBwb2ludCBmb3IgdGhlIGtleSBwcmVzc2VkLCBzbyBpdCBjYW4gYmUgcGFzc2VkIHRvIDpmdW5jOmBjaHJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiB3aW5kb3cuZ2V0a2V5KFt5LCB4XSkKIAogICAgR2V0IGEgY2hhcmFjdGVyLCByZXR1cm5pbmcgYSBzdHJpbmcgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLCBhcyA6bWV0aDpgZ2V0Y2hgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kYXRhdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvZGF0YXR5cGVzLnJzdAppbmRleCA2YjRhNzFhLi5kMDM4MmUwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYXRhdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RhdGF0eXBlcy5yc3QKQEAgLTIxLDExICsyMSwxMCBAQAogICAgZGF0ZXRpbWUucnN0CiAgICBjYWxlbmRhci5yc3QKICAgIGNvbGxlY3Rpb25zLnJzdAorICAgY29sbGVjdGlvbnMuYWJjLnJzdAogICAgaGVhcHEucnN0CiAgICBiaXNlY3QucnN0CiAgICBhcnJheS5yc3QKLSAgIHNjaGVkLnJzdAotICAgcXVldWUucnN0CiAgICB3ZWFrcmVmLnJzdAogICAgdHlwZXMucnN0CiAgICBjb3B5LnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0IGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CmluZGV4IDg4ZmEwMWMuLjdjMGFhYzMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKQEAgLTQwNCwxMiArNDA0LDE5IEBACiAuLiBjbGFzc21ldGhvZDo6IGRhdGUuZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApCiAKICAgIFJldHVybiB0aGUgbG9jYWwgZGF0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBQT1NJWCB0aW1lc3RhbXAsIHN1Y2ggYXMgaXMgcmV0dXJuZWQKLSAgIGJ5IDpmdW5jOmB0aW1lLnRpbWVgLiAgVGhpcyBtYXkgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMgb3V0Ci0gICBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBsb2NhbHRpbWVgIGZ1bmN0aW9uLgorICAgYnkgOmZ1bmM6YHRpbWUudGltZWAuICBUaGlzIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcyBvdXQKKyAgIG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGxvY2FsdGltZWAgZnVuY3Rpb24sCisgICBhbmQgOmV4YzpgT1NFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBmYWlsdXJlLgogICAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBmcm9tIDE5NzAgdGhyb3VnaCAyMDM4LiAgTm90ZQogICAgdGhhdCBvbiBub24tUE9TSVggc3lzdGVtcyB0aGF0IGluY2x1ZGUgbGVhcCBzZWNvbmRzIGluIHRoZWlyIG5vdGlvbiBvZiBhCiAgICB0aW1lc3RhbXAsIGxlYXAgc2Vjb25kcyBhcmUgaWdub3JlZCBieSA6bWV0aDpgZnJvbXRpbWVzdGFtcGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB0aW1lc3RhbXAKKyAgICAgIGlzIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQworICAgICAgOmM6ZnVuYzpgbG9jYWx0aW1lYCBmdW5jdGlvbi4gUmFpc2UgOmV4YzpgT1NFcnJvcmAgaW5zdGVhZCBvZgorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBmYWlsdXJlLgorCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZS5mcm9tb3JkaW5hbChvcmRpbmFsKQogCkBAIC03MTMsMjMgKzcyMCw0NCBAQAogICAgZXF1aXZhbGVudCB0bwogICAgYGB0ei5mcm9tdXRjKGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKS5yZXBsYWNlKHR6aW5mbz10eikpYGAuCiAKLSAgIDptZXRoOmBmcm9tdGltZXN0YW1wYCBtYXkgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMgb3V0IG9mCisgICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAgbWF5IHJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzIG91dCBvZgogICAgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMgOmM6ZnVuYzpgbG9jYWx0aW1lYCBvcgotICAgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbnMuICBJdCdzIGNvbW1vbiBmb3IgdGhpcyB0byBiZSByZXN0cmljdGVkIHRvIHllYXJzIGluCisgICA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9ucywgYW5kIDpleGM6YE9TRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgb3IKKyAgIDpjOmZ1bmM6YGdtdGltZWAgZmFpbHVyZS4KKyAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgaW4KICAgIDE5NzAgdGhyb3VnaCAyMDM4LiBOb3RlIHRoYXQgb24gbm9uLVBPU0lYIHN5c3RlbXMgdGhhdCBpbmNsdWRlIGxlYXAgc2Vjb25kcyBpbgogICAgdGhlaXIgbm90aW9uIG9mIGEgdGltZXN0YW1wLCBsZWFwIHNlY29uZHMgYXJlIGlnbm9yZWQgYnkgOm1ldGg6YGZyb210aW1lc3RhbXBgLAogICAgYW5kIHRoZW4gaXQncyBwb3NzaWJsZSB0byBoYXZlIHR3byB0aW1lc3RhbXBzIGRpZmZlcmluZyBieSBhIHNlY29uZCB0aGF0IHlpZWxkCiAgICBpZGVudGljYWwgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdHMuIFNlZSBhbHNvIDptZXRoOmB1dGNmcm9tdGltZXN0YW1wYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgaWYgdGhlIHRpbWVzdGFtcAorICAgICAgaXMgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDCisgICAgICA6YzpmdW5jOmBsb2NhbHRpbWVgIG9yIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb25zLiBSYWlzZSA6ZXhjOmBPU0Vycm9yYAorICAgICAgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBvbiA6YzpmdW5jOmBsb2NhbHRpbWVgIG9yIDpjOmZ1bmM6YGdtdGltZWAKKyAgICAgIGZhaWx1cmUuCisKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcCkKIAogICAgUmV0dXJuIHRoZSBVVEMgOmNsYXNzOmAuZGF0ZXRpbWVgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFBPU0lYIHRpbWVzdGFtcCwgd2l0aAotICAgOmF0dHI6YHR6aW5mb2AgYGBOb25lYGAuIFRoaXMgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzCi0gICBvdXQgb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbi4KKyAgIDphdHRyOmB0emluZm9gIGBgTm9uZWBgLiBUaGlzIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcworICAgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb24sCisgICBhbmQgOmV4YzpgT1NFcnJvcmAgb24gOmM6ZnVuYzpgZ210aW1lYCBmYWlsdXJlLgogICAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBpbiAxOTcwIHRocm91Z2ggMjAzOC4gU2VlIGFsc28KICAgIDptZXRoOmBmcm9tdGltZXN0YW1wYC4KIAorICAgT24gdGhlIFBPU0lYIGNvbXBsaWFudCBwbGF0Zm9ybXMsIGBgdXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApYGAKKyAgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uOjoKKworICAgICBkYXRldGltZSgxOTcwLCAxLCAxKSArIHRpbWVkZWx0YShzZWNvbmRzPXRpbWVzdGFtcCkKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgaWYgdGhlIHRpbWVzdGFtcAorICAgICAgaXMgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDCisgICAgICA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9uLiBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpbnN0ZWFkIG9mCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYCBvbiA6YzpmdW5jOmBnbXRpbWVgIGZhaWx1cmUuCisKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS5mcm9tb3JkaW5hbChvcmRpbmFsKQogCkBAIC04NzMsMTMgKzkwMSwyMCBAQAogICAgKmRhdGV0aW1lMSogaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gKmRhdGV0aW1lMiogd2hlbiAqZGF0ZXRpbWUxKiBwcmVjZWRlcwogICAgKmRhdGV0aW1lMiogaW4gdGltZS4KIAotICAgSWYgb25lIGNvbXBhcmFuZCBpcyBuYWl2ZSBhbmQgdGhlIG90aGVyIGlzIGF3YXJlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KKyAgIElmIG9uZSBjb21wYXJhbmQgaXMgbmFpdmUgYW5kIHRoZSBvdGhlciBpcyBhd2FyZSwgOmV4YzpgVHlwZUVycm9yYAorICAgaXMgcmFpc2VkIGlmIGFuIG9yZGVyIGNvbXBhcmlzb24gaXMgYXR0ZW1wdGVkLiAgRm9yIGVxdWFsaXR5CisgICBjb21wYXJpc29ucywgbmFpdmUgaW5zdGFuY2VzIGFyZSBuZXZlciBlcXVhbCB0byBhd2FyZSBpbnN0YW5jZXMuCisKICAgIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUsIGFuZCBoYXZlIHRoZSBzYW1lIDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSwgdGhlCiAgICBjb21tb24gOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlIGlzIGlnbm9yZWQgYW5kIHRoZSBiYXNlIGRhdGV0aW1lcyBhcmUKICAgIGNvbXBhcmVkLiAgSWYgYm90aCBjb21wYXJhbmRzIGFyZSBhd2FyZSBhbmQgaGF2ZSBkaWZmZXJlbnQgOmF0dHI6YHR6aW5mb2AKICAgIGF0dHJpYnV0ZXMsIHRoZSBjb21wYXJhbmRzIGFyZSBmaXJzdCBhZGp1c3RlZCBieSBzdWJ0cmFjdGluZyB0aGVpciBVVEMKICAgIG9mZnNldHMgKG9idGFpbmVkIGZyb20gYGBzZWxmLnV0Y29mZnNldCgpYGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgRXF1YWxpdHkgY29tcGFyaXNvbnMgYmV0d2VlbiBuYWl2ZSBhbmQgYXdhcmUgOmNsYXNzOmBkYXRldGltZWAKKyAgICAgIGluc3RhbmNlcyBkb24ndCByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgLgorCiAgICAuLiBub3RlOjoKIAogICAgICAgSW4gb3JkZXIgdG8gc3RvcCBjb21wYXJpc29uIGZyb20gZmFsbGluZyBiYWNrIHRvIHRoZSBkZWZhdWx0IHNjaGVtZSBvZiBjb21wYXJpbmcKQEAgLTkyMiwxNyArOTU3LDIyIEBACiAgICBkYXRldGltZSB3aXRoIG5vIGNvbnZlcnNpb24gb2YgZGF0ZSBhbmQgdGltZSBkYXRhLgogCiAKLS4uIG1ldGhvZDo6IGRhdGV0aW1lLmFzdGltZXpvbmUodHopCisuLiBtZXRob2Q6OiBkYXRldGltZS5hc3RpbWV6b25lKHR6PU5vbmUpCiAKLSAgIFJldHVybiBhIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3Qgd2l0aCBuZXcgOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlICp0eiosCisgICBSZXR1cm4gYSA6Y2xhc3M6YGRhdGV0aW1lYCBvYmplY3Qgd2l0aCBuZXcgOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlICp0eiosCiAgICBhZGp1c3RpbmcgdGhlIGRhdGUgYW5kIHRpbWUgZGF0YSBzbyB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIFVUQyB0aW1lIGFzCiAgICAqc2VsZiosIGJ1dCBpbiAqdHoqJ3MgbG9jYWwgdGltZS4KIAotICAgKnR6KiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLCBhbmQgaXRzCisgICBJZiBwcm92aWRlZCwgKnR6KiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLCBhbmQgaXRzCiAgICA6bWV0aDpgdXRjb2Zmc2V0YCBhbmQgOm1ldGg6YGRzdGAgbWV0aG9kcyBtdXN0IG5vdCByZXR1cm4gYGBOb25lYGAuICAqc2VsZiogbXVzdAogICAgYmUgYXdhcmUgKGBgc2VsZi50emluZm9gYCBtdXN0IG5vdCBiZSBgYE5vbmVgYCwgYW5kIGBgc2VsZi51dGNvZmZzZXQoKWBgIG11c3QKICAgIG5vdCByZXR1cm4gYGBOb25lYGApLgogCisgICBJZiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMgKG9yIHdpdGggYGB0ej1Ob25lYGApIHRoZSBzeXN0ZW0gbG9jYWwKKyAgIHRpbWV6b25lIGlzIGFzc3VtZWQuICBUaGUgYGB0emluZm9gYCBhdHRyaWJ1dGUgb2YgdGhlIGNvbnZlcnRlZAorICAgZGF0ZXRpbWUgaW5zdGFuY2Ugd2lsbCBiZSBzZXQgdG8gYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmB0aW1lem9uZWAKKyAgIHdpdGggdGhlIHpvbmUgbmFtZSBhbmQgb2Zmc2V0IG9idGFpbmVkIGZyb20gdGhlIE9TLgorCiAgICBJZiBgYHNlbGYudHppbmZvYGAgaXMgKnR6KiwgYGBzZWxmLmFzdGltZXpvbmUodHopYGAgaXMgZXF1YWwgdG8gKnNlbGYqOiAgbm8KICAgIGFkanVzdG1lbnQgb2YgZGF0ZSBvciB0aW1lIGRhdGEgaXMgcGVyZm9ybWVkLiBFbHNlIHRoZSByZXN1bHQgaXMgbG9jYWwKICAgIHRpbWUgaW4gdGltZSB6b25lICp0eiosIHJlcHJlc2VudGluZyB0aGUgc2FtZSBVVEMgdGltZSBhcyAqc2VsZio6ICBhZnRlcgpAQCAtOTU5LDYgKzk5OSw5IEBACiAgICAgICAgICAgIyBDb252ZXJ0IGZyb20gVVRDIHRvIHR6J3MgbG9jYWwgdGltZS4KICAgICAgICAgICByZXR1cm4gdHouZnJvbXV0Yyh1dGMpCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdHoqIG5vdyBjYW4gYmUgb21pdHRlZC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS51dGNvZmZzZXQoKQogCkBAIC0xMDE1LDYgKzEwNTgsMzkgQEAKICAgIFJldHVybiB0aGUgcHJvbGVwdGljIEdyZWdvcmlhbiBvcmRpbmFsIG9mIHRoZSBkYXRlLiAgVGhlIHNhbWUgYXMKICAgIGBgc2VsZi5kYXRlKCkudG9vcmRpbmFsKClgYC4KIAorLi4gbWV0aG9kOjogZGF0ZXRpbWUudGltZXN0YW1wKCkKKworICAgUmV0dXJuIFBPU0lYIHRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIHRoZSA6Y2xhc3M6YGRhdGV0aW1lYAorICAgaW5zdGFuY2UuICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgOmNsYXNzOmBmbG9hdGAgc2ltaWxhciB0byB0aGF0CisgICByZXR1cm5lZCBieSA6ZnVuYzpgdGltZS50aW1lYC4KKworICAgTmFpdmUgOmNsYXNzOmBkYXRldGltZWAgaW5zdGFuY2VzIGFyZSBhc3N1bWVkIHRvIHJlcHJlc2VudCBsb2NhbAorICAgdGltZSBhbmQgdGhpcyBtZXRob2QgcmVsaWVzIG9uIHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YG1rdGltZWAKKyAgIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIGNvbnZlcnNpb24uICBTaW5jZSA6Y2xhc3M6YGRhdGV0aW1lYAorICAgc3VwcG9ydHMgd2lkZXIgcmFuZ2Ugb2YgdmFsdWVzIHRoYW4gOmM6ZnVuYzpgbWt0aW1lYCBvbiBtYW55CisgICBwbGF0Zm9ybXMsIHRoaXMgbWV0aG9kIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBmb3IgdGltZXMgZmFyCisgICBpbiB0aGUgcGFzdCBvciBmYXIgaW4gdGhlIGZ1dHVyZS4KKworICAgRm9yIGF3YXJlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlcywgdGhlIHJldHVybiB2YWx1ZSBpcyBjb21wdXRlZAorICAgYXM6OgorCisgICAgICAoZHQgLSBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89dGltZXpvbmUudXRjKSkudG90YWxfc2Vjb25kcygpCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBub3RlOjoKKworICAgICAgVGhlcmUgaXMgbm8gbWV0aG9kIHRvIG9idGFpbiB0aGUgUE9TSVggdGltZXN0YW1wIGRpcmVjdGx5IGZyb20gYQorICAgICAgbmFpdmUgOmNsYXNzOmBkYXRldGltZWAgaW5zdGFuY2UgcmVwcmVzZW50aW5nIFVUQyB0aW1lLiAgSWYgeW91cgorICAgICAgYXBwbGljYXRpb24gdXNlcyB0aGlzIGNvbnZlbnRpb24gYW5kIHlvdXIgc3lzdGVtIHRpbWV6b25lIGlzIG5vdAorICAgICAgc2V0IHRvIFVUQywgeW91IGNhbiBvYnRhaW4gdGhlIFBPU0lYIHRpbWVzdGFtcCBieSBzdXBwbHlpbmcKKyAgICAgIGBgdHppbmZvPXRpbWV6b25lLnV0Y2BgOjoKKworICAgICAgICAgdGltZXN0YW1wID0gZHQucmVwbGFjZSh0emluZm89dGltZXpvbmUudXRjKS50aW1lc3RhbXAoKQorCisgICAgICBvciBieSBjYWxjdWxhdGluZyB0aGUgdGltZXN0YW1wIGRpcmVjdGx5OjoKKworICAgICAgICAgdGltZXN0YW1wID0gKGR0IC0gZGF0ZXRpbWUoMTk3MCwgMSwgMSkpIC8gdGltZWRlbHRhKHNlY29uZHM9MSkKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUud2Vla2RheSgpCiAKQEAgLTEyNTQsNyArMTMzMCwxMCBAQAogCiAqIGNvbXBhcmlzb24gb2YgOmNsYXNzOmAudGltZWAgdG8gOmNsYXNzOmAudGltZWAsIHdoZXJlICphKiBpcyBjb25zaWRlcmVkIGxlc3MKICAgdGhhbiAqYiogd2hlbiAqYSogcHJlY2VkZXMgKmIqIGluIHRpbWUuICBJZiBvbmUgY29tcGFyYW5kIGlzIG5haXZlIGFuZCB0aGUgb3RoZXIKLSAgaXMgYXdhcmUsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgYm90aCBjb21wYXJhbmRzIGFyZSBhd2FyZSwgYW5kIGhhdmUKKyAgaXMgYXdhcmUsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkIGlmIGFuIG9yZGVyIGNvbXBhcmlzb24gaXMgYXR0ZW1wdGVkLiBGb3IgZXF1YWxpdHkKKyAgY29tcGFyaXNvbnMsIG5haXZlIGluc3RhbmNlcyBhcmUgbmV2ZXIgZXF1YWwgdG8gYXdhcmUgaW5zdGFuY2VzLgorCisgIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUsIGFuZCBoYXZlCiAgIHRoZSBzYW1lIDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSwgdGhlIGNvbW1vbiA6YXR0cjpgdHppbmZvYCBhdHRyaWJ1dGUgaXMKICAgaWdub3JlZCBhbmQgdGhlIGJhc2UgdGltZXMgYXJlIGNvbXBhcmVkLiAgSWYgYm90aCBjb21wYXJhbmRzIGFyZSBhd2FyZSBhbmQKICAgaGF2ZSBkaWZmZXJlbnQgOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlcywgdGhlIGNvbXBhcmFuZHMgYXJlIGZpcnN0IGFkanVzdGVkIGJ5CkBAIC0xMjY0LDYgKzEzNDMsMTAgQEAKICAgZGlmZmVyZW50IHR5cGUsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkIHVubGVzcyB0aGUgY29tcGFyaXNvbiBpcyBgYD09YGAgb3IKICAgYGAhPWBgLiAgVGhlIGxhdHRlciBjYXNlcyByZXR1cm4gOmNvbnN0OmBGYWxzZWAgb3IgOmNvbnN0OmBUcnVlYCwgcmVzcGVjdGl2ZWx5LgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgIEVxdWFsaXR5IGNvbXBhcmlzb25zIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlIDpjbGFzczpgdGltZWAgaW5zdGFuY2VzCisgICAgIGRvbid0IHJhaXNlIDpleGM6YFR5cGVFcnJvcmAuCisKICogaGFzaCwgdXNlIGFzIGRpY3Qga2V5CiAKICogZWZmaWNpZW50IHBpY2tsaW5nCkBAIC0xNTg3LDExICsxNjcwLDEyIEBACiA6Y2xhc3M6YHRpbWV6b25lYCBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1BIDpjbGFzczpgdGltZXpvbmVgIG9iamVjdCByZXByZXNlbnRzIGEgdGltZXpvbmUgdGhhdCBpcyBkZWZpbmVkIGJ5IGEKLWZpeGVkIG9mZnNldCBmcm9tIFVUQy4gIE5vdGUgdGhhdCBvYmplY3RzIG9mIHRoaXMgY2xhc3MgY2Fubm90IGJlIHVzZWQKLXRvIHJlcHJlc2VudCB0aW1lem9uZSBpbmZvcm1hdGlvbiBpbiB0aGUgbG9jYXRpb25zIHdoZXJlIGRpZmZlcmVudAotb2Zmc2V0cyBhcmUgdXNlZCBpbiBkaWZmZXJlbnQgZGF5cyBvZiB0aGUgeWVhciBvciB3aGVyZSBoaXN0b3JpY2FsCi1jaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvIGNpdmlsIHRpbWUuCitUaGUgOmNsYXNzOmB0aW1lem9uZWAgY2xhc3MgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YHR6aW5mb2AsIGVhY2gKK2luc3RhbmNlIG9mIHdoaWNoIHJlcHJlc2VudHMgYSB0aW1lem9uZSBkZWZpbmVkIGJ5IGEgZml4ZWQgb2Zmc2V0IGZyb20KK1VUQy4gIE5vdGUgdGhhdCBvYmplY3RzIG9mIHRoaXMgY2xhc3MgY2Fubm90IGJlIHVzZWQgdG8gcmVwcmVzZW50Cit0aW1lem9uZSBpbmZvcm1hdGlvbiBpbiB0aGUgbG9jYXRpb25zIHdoZXJlIGRpZmZlcmVudCBvZmZzZXRzIGFyZSB1c2VkCitpbiBkaWZmZXJlbnQgZGF5cyBvZiB0aGUgeWVhciBvciB3aGVyZSBoaXN0b3JpY2FsIGNoYW5nZXMgaGF2ZSBiZWVuCittYWRlIHRvIGNpdmlsIHRpbWUuCiAKIAogLi4gY2xhc3M6OiB0aW1lem9uZShvZmZzZXRbLCBuYW1lXSkKQEAgLTE3NjAsOCArMTg0NCw3IEBACiB8ICAgICAgICAgICB8IGRlY2ltYWwgbnVtYmVyIFswMCw5OV0uICAgICAgICB8ICAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogfCBgYCVZYGAgICAgfCBZZWFyIHdpdGggY2VudHVyeSBhcyBhIGRlY2ltYWwgfCBcKDUpICB8Ci18ICAgICAgICAgICB8IG51bWJlciBbMDAwMSw5OTk5XSAoc3RycHRpbWUpLCB8ICAgICAgIHwKLXwgICAgICAgICAgIHwgWzEwMDAsOTk5OV0gKHN0cmZ0aW1lKS4gICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBudW1iZXIgWzAwMDEsOTk5OV0uICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIHwgYGAlemBgICAgIHwgVVRDIG9mZnNldCBpbiB0aGUgZm9ybSArSEhNTSAgIHwgXCg2KSAgfAogfCAgICAgICAgICAgfCBvciAtSEhNTSAoZW1wdHkgc3RyaW5nIGlmIHRoZSAgfCAgICAgICB8CkBAIC0xNzk1LDEwICsxODc4LDcgQEAKICAgIGNhbGN1bGF0aW9ucyB3aGVuIHRoZSBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSB5ZWFyIGFyZSBzcGVjaWZpZWQuCiAKICg1KQotICAgRm9yIHRlY2huaWNhbCByZWFzb25zLCA6bWV0aDpgc3RyZnRpbWVgIG1ldGhvZCBkb2VzIG5vdCBzdXBwb3J0Ci0gICBkYXRlcyBiZWZvcmUgeWVhciAxMDAwOiBgYHQuc3RyZnRpbWUoZm9ybWF0KWBgIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiBgYHQueWVhciA8IDEwMDBgYCBldmVuIGlmIGBgZm9ybWF0YGAgZG9lcwotICAgbm90IGNvbnRhaW4gYGAlWWBgIGRpcmVjdGl2ZS4gIFRoZSA6bWV0aDpgc3RycHRpbWVgIG1ldGhvZCBjYW4KKyAgIFRoZSA6bWV0aDpgc3RycHRpbWVgIG1ldGhvZCBjYW4KICAgIHBhcnNlIHllYXJzIGluIHRoZSBmdWxsIFsxLCA5OTk5XSByYW5nZSwgYnV0IHllYXJzIDwgMTAwMCBtdXN0IGJlCiAgICB6ZXJvLWZpbGxlZCB0byA0LWRpZ2l0IHdpZHRoLgogCkBAIC0xODA2LDYgKzE4ODYsMTAgQEAKICAgICAgIEluIHByZXZpb3VzIHZlcnNpb25zLCA6bWV0aDpgc3RyZnRpbWVgIG1ldGhvZCB3YXMgcmVzdHJpY3RlZCB0bwogICAgICAgeWVhcnMgPj0gMTkwMC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEluIHZlcnNpb24gMy4yLCA6bWV0aDpgc3RyZnRpbWVgIG1ldGhvZCB3YXMgcmVzdHJpY3RlZCB0bworICAgICAgeWVhcnMgPj0gMTAwMC4KKwogKDYpCiAgICBGb3IgZXhhbXBsZSwgaWYgOm1ldGg6YHV0Y29mZnNldGAgcmV0dXJucyBgYHRpbWVkZWx0YShob3Vycz0tMywgbWludXRlcz0tMzApYGAsCiAgICBgYCV6YGAgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIGBgJy0wMzMwJ2BgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGVidWcucnN0IGIvRG9jL2xpYnJhcnkvZGVidWcucnN0CmluZGV4IGIyZWU0ZmEuLmM2OWZiMWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RlYnVnLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZWJ1Zy5yc3QKQEAgLTEwLDcgKzEwLDggQEAKIC4uIHRvY3RyZWU6OgogCiAgICBiZGIucnN0CisgICBmYXVsdGhhbmRsZXIucnN0CiAgICBwZGIucnN0CiAgICBwcm9maWxlLnJzdAogICAgdGltZWl0LnJzdAotICAgdHJhY2UucnN0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgdHJhY2UucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdCBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CmluZGV4IGVmOGI0M2YuLjNmYTAwNmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CkBAIC05LDYgKzksNyBAQAogLi4gbW9kdWxlYXV0aG9yOjogUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgogLi4gbW9kdWxlYXV0aG9yOjogQWFoeiA8YWFoeiBhdCBwb2JveC5jb20+CiAuLiBtb2R1bGVhdXRob3I6OiBUaW0gUGV0ZXJzIDx0aW0ub25lIGF0IGNvbWNhc3QubmV0PgorLi4gbW9kdWxlYXV0aG9yOjogU3RlZmFuIEtyYWggPHNrcmFoIGF0IGJ5dGVyZWVmLm9yZz4KIC4uIHNlY3Rpb25hdXRob3I6OiBSYXltb25kIEQuIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+CiAKIC4uIGltcG9ydCBtb2R1bGVzIGZvciB0ZXN0aW5nIGlubGluZSBkb2N0ZXN0cyB3aXRoIHRoZSBTcGhpbnggZG9jdGVzdCBidWlsZGVyCkBAIC0yMCw4ICsyMSw5IEBACiAgICAjIG1ha2Ugc3VyZSBlYWNoIGdyb3VwIGdldHMgYSBmcmVzaCBjb250ZXh0CiAgICBzZXRjb250ZXh0KENvbnRleHQoKSkKIAotVGhlIDptb2Q6YGRlY2ltYWxgIG1vZHVsZSBwcm92aWRlcyBzdXBwb3J0IGZvciBkZWNpbWFsIGZsb2F0aW5nIHBvaW50Ci1hcml0aG1ldGljLiAgSXQgb2ZmZXJzIHNldmVyYWwgYWR2YW50YWdlcyBvdmVyIHRoZSA6Y2xhc3M6YGZsb2F0YCBkYXRhdHlwZToKK1RoZSA6bW9kOmBkZWNpbWFsYCBtb2R1bGUgcHJvdmlkZXMgc3VwcG9ydCBmb3IgZmFzdCBjb3JyZWN0bHktcm91bmRlZAorZGVjaW1hbCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljLiBJdCBvZmZlcnMgc2V2ZXJhbCBhZHZhbnRhZ2VzIG92ZXIgdGhlCis6Y2xhc3M6YGZsb2F0YCBkYXRhdHlwZToKIAogKiBEZWNpbWFsICJpcyBiYXNlZCBvbiBhIGZsb2F0aW5nLXBvaW50IG1vZGVsIHdoaWNoIHdhcyBkZXNpZ25lZCB3aXRoIHBlb3BsZQogICBpbiBtaW5kLCBhbmQgbmVjZXNzYXJpbHkgaGFzIGEgcGFyYW1vdW50IGd1aWRpbmcgcHJpbmNpcGxlIC0tIGNvbXB1dGVycyBtdXN0CkBAIC05Miw3ICs5NCw3IEBACiBjb25zaWRlcmVkIGFzIGluZm9ybWF0aW9uYWwsIG9yIHRyZWF0ZWQgYXMgZXhjZXB0aW9ucy4gVGhlIHNpZ25hbHMgaW4gdGhlCiBkZWNpbWFsIG1vZHVsZSBhcmU6IDpjb25zdDpgQ2xhbXBlZGAsIDpjb25zdDpgSW52YWxpZE9wZXJhdGlvbmAsCiA6Y29uc3Q6YERpdmlzaW9uQnlaZXJvYCwgOmNvbnN0OmBJbmV4YWN0YCwgOmNvbnN0OmBSb3VuZGVkYCwgOmNvbnN0OmBTdWJub3JtYWxgLAotOmNvbnN0OmBPdmVyZmxvd2AsIGFuZCA6Y29uc3Q6YFVuZGVyZmxvd2AuCis6Y29uc3Q6YE92ZXJmbG93YCwgOmNvbnN0OmBVbmRlcmZsb3dgIGFuZCA6Y29uc3Q6YEZsb2F0T3BlcmF0aW9uYC4KIAogRm9yIGVhY2ggc2lnbmFsIHRoZXJlIGlzIGEgZmxhZyBhbmQgYSB0cmFwIGVuYWJsZXIuICBXaGVuIGEgc2lnbmFsIGlzCiBlbmNvdW50ZXJlZCwgaXRzIGZsYWcgaXMgc2V0IHRvIG9uZSwgdGhlbiwgaWYgdGhlIHRyYXAgZW5hYmxlciBpcwpAQCAtMTIyLDcgKzEyNCw3IEBACiAKICAgID4+PiBmcm9tIGRlY2ltYWwgaW1wb3J0ICoKICAgID4+PiBnZXRjb250ZXh0KCkKLSAgIENvbnRleHQocHJlYz0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTk5OTksIEVtYXg9OTk5OTk5OTk5LAorICAgQ29udGV4dChwcmVjPTI4LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OSwgRW1heD05OTk5OTksCiAgICAgICAgICAgIGNhcGl0YWxzPTEsIGNsYW1wPTAsIGZsYWdzPVtdLCB0cmFwcz1bT3ZlcmZsb3csIERpdmlzaW9uQnlaZXJvLAogICAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uXSkKIApAQCAtMTMyLDcgKzEzNCw3IEBACiBDb25zdHJ1Y3Rpb24gZnJvbSBhbiBpbnRlZ2VyIG9yIGEgZmxvYXQgcGVyZm9ybXMgYW4gZXhhY3QgY29udmVyc2lvbiBvZiB0aGUKIHZhbHVlIG9mIHRoYXQgaW50ZWdlciBvciBmbG9hdC4gIERlY2ltYWwgbnVtYmVycyBpbmNsdWRlIHNwZWNpYWwgdmFsdWVzIHN1Y2ggYXMKIDpjb25zdDpgTmFOYCB3aGljaCBzdGFuZHMgZm9yICJOb3QgYSBudW1iZXIiLCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUKLTpjb25zdDpgSW5maW5pdHlgLCBhbmQgOmNvbnN0OmAtMGAuCis6Y29uc3Q6YEluZmluaXR5YCwgYW5kIDpjb25zdDpgLTBgOjoKIAogICAgPj4+IGdldGNvbnRleHQoKS5wcmVjID0gMjgKICAgID4+PiBEZWNpbWFsKDEwKQpAQCAtMTUyLDYgKzE1NCwyNSBAQAogICAgPj4+IERlY2ltYWwoJy1JbmZpbml0eScpCiAgICBEZWNpbWFsKCctSW5maW5pdHknKQogCitJZiB0aGUgOmV4YzpgRmxvYXRPcGVyYXRpb25gIHNpZ25hbCBpcyB0cmFwcGVkLCBhY2NpZGVudGFsIG1peGluZyBvZgorZGVjaW1hbHMgYW5kIGZsb2F0cyBpbiBjb25zdHJ1Y3RvcnMgb3Igb3JkZXJpbmcgY29tcGFyaXNvbnMgcmFpc2VzCithbiBleGNlcHRpb246OgorCisgICA+Pj4gYyA9IGdldGNvbnRleHQoKQorICAgPj4+IGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgPj4+IERlY2ltYWwoMy4xNCkKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICBkZWNpbWFsLkZsb2F0T3BlcmF0aW9uOiBbPGNsYXNzICdkZWNpbWFsLkZsb2F0T3BlcmF0aW9uJz5dCisgICA+Pj4gRGVjaW1hbCgnMy41JykgPCAzLjcKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgIGRlY2ltYWwuRmxvYXRPcGVyYXRpb246IFs8Y2xhc3MgJ2RlY2ltYWwuRmxvYXRPcGVyYXRpb24nPl0KKyAgID4+PiBEZWNpbWFsKCczLjUnKSA9PSAzLjUKKyAgIFRydWUKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIFRoZSBzaWduaWZpY2FuY2Ugb2YgYSBuZXcgRGVjaW1hbCBpcyBkZXRlcm1pbmVkIHNvbGVseSBieSB0aGUgbnVtYmVyIG9mIGRpZ2l0cwogaW5wdXQuICBDb250ZXh0IHByZWNpc2lvbiBhbmQgcm91bmRpbmcgb25seSBjb21lIGludG8gcGxheSBkdXJpbmcgYXJpdGhtZXRpYwogb3BlcmF0aW9ucy4KQEAgLTE2OSw2ICsxOTAsMTYgQEAKICAgID4+PiBEZWNpbWFsKCczLjE0MTU5MjY1MzUnKSArIERlY2ltYWwoJzIuNzE4MjgxODI4NScpCiAgICBEZWNpbWFsKCc1Ljg1OTg4JykKIAorSWYgdGhlIGludGVybmFsIGxpbWl0cyBvZiB0aGUgQyB2ZXJzaW9uIGFyZSBleGNlZWRlZCwgY29uc3RydWN0aW5nCithIGRlY2ltYWwgcmFpc2VzIDpjbGFzczpgSW52YWxpZE9wZXJhdGlvbmA6OgorCisgICA+Pj4gRGVjaW1hbCgiMWU5OTk5OTk5OTk5OTk5OTk5OTk5IikKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgIGRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbjogWzxjbGFzcyAnZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uJz5dCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisKIERlY2ltYWxzIGludGVyYWN0IHdlbGwgd2l0aCBtdWNoIG9mIHRoZSByZXN0IG9mIFB5dGhvbi4gIEhlcmUgaXMgYSBzbWFsbCBkZWNpbWFsCiBmbG9hdGluZyBwb2ludCBmbHlpbmcgY2lyY3VzOgogCkBAIC0yNDQsNyArMjc1LDcgQEAKICAgIERlY2ltYWwoJzAuMTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3JykKIAogICAgPj4+IEV4dGVuZGVkQ29udGV4dAotICAgQ29udGV4dChwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgRW1pbj0tOTk5OTk5OTk5LCBFbWF4PTk5OTk5OTk5OSwKKyAgIENvbnRleHQocHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OSwgRW1heD05OTk5OTksCiAgICAgICAgICAgIGNhcGl0YWxzPTEsIGNsYW1wPTAsIGZsYWdzPVtdLCB0cmFwcz1bXSkKICAgID4+PiBzZXRjb250ZXh0KEV4dGVuZGVkQ29udGV4dCkKICAgID4+PiBEZWNpbWFsKDEpIC8gRGVjaW1hbCg3KQpAQCAtMjY5LDcgKzMwMCw3IEBACiAgICA+Pj4gRGVjaW1hbCgzNTUpIC8gRGVjaW1hbCgxMTMpCiAgICBEZWNpbWFsKCczLjE0MTU5MjkyJykKICAgID4+PiBnZXRjb250ZXh0KCkKLSAgIENvbnRleHQocHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OTk5OSwgRW1heD05OTk5OTk5OTksCisgICBDb250ZXh0KHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTksIEVtYXg9OTk5OTk5LAogICAgICAgICAgICBjYXBpdGFscz0xLCBjbGFtcD0wLCBmbGFncz1bSW5leGFjdCwgUm91bmRlZF0sIHRyYXBzPVtdKQogCiBUaGUgKmZsYWdzKiBlbnRyeSBzaG93cyB0aGF0IHRoZSByYXRpb25hbCBhcHByb3hpbWF0aW9uIHRvIDpjb25zdDpgUGlgIHdhcwpAQCAtMzU4LDYgKzM4OSwxMCBAQAogICAgICAgVGhlIGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciBpcyBub3cgcGVybWl0dGVkIHRvIGJlIGEgOmNsYXNzOmBmbG9hdGAKICAgICAgIGluc3RhbmNlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmNsYXNzOmBmbG9hdGAgYXJndW1lbnRzIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgOmV4YzpgRmxvYXRPcGVyYXRpb25gCisgICAgICB0cmFwIGlzIHNldC4gQnkgZGVmYXVsdCB0aGUgdHJhcCBpcyBvZmYuCisKICAgIERlY2ltYWwgZmxvYXRpbmcgcG9pbnQgb2JqZWN0cyBzaGFyZSBtYW55IHByb3BlcnRpZXMgd2l0aCB0aGUgb3RoZXIgYnVpbHQtaW4KICAgIG51bWVyaWMgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGZsb2F0YCBhbmQgOmNsYXNzOmBpbnRgLiAgQWxsIG9mIHRoZSB1c3VhbCBtYXRoCiAgICBvcGVyYXRpb25zIGFuZCBzcGVjaWFsIG1ldGhvZHMgYXBwbHkuICBMaWtld2lzZSwgZGVjaW1hbCBvYmplY3RzIGNhbiBiZQpAQCAtODgwLDM5ICs5MTUsMzMgQEAKICAgIEluIHNpbmdsZSB0aHJlYWRlZCBlbnZpcm9ubWVudHMsIGl0IGlzIHByZWZlcmFibGUgdG8gbm90IHVzZSB0aGlzIGNvbnRleHQgYXQKICAgIGFsbC4gIEluc3RlYWQsIHNpbXBseSBjcmVhdGUgY29udGV4dHMgZXhwbGljaXRseSBhcyBkZXNjcmliZWQgYmVsb3cuCiAKLSAgIFRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgcHJlY2lzaW9uPTI4LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIGFuZCBlbmFibGVkIHRyYXBzCi0gICBmb3IgT3ZlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIGFuZCBEaXZpc2lvbkJ5WmVyby4KKyAgIFRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgOmF0dHI6YHByZWNgXCA9XCA6Y29uc3Q6YDI4YCwKKyAgIDphdHRyOmByb3VuZGluZ2BcID1cIDpjb25zdDpgUk9VTkRfSEFMRl9FVkVOYCwKKyAgIGFuZCBlbmFibGVkIHRyYXBzIGZvciA6Y2xhc3M6YE92ZXJmbG93YCwgOmNsYXNzOmBJbnZhbGlkT3BlcmF0aW9uYCwgYW5kCisgICA6Y2xhc3M6YERpdmlzaW9uQnlaZXJvYC4KIAogSW4gYWRkaXRpb24gdG8gdGhlIHRocmVlIHN1cHBsaWVkIGNvbnRleHRzLCBuZXcgY29udGV4dHMgY2FuIGJlIGNyZWF0ZWQgd2l0aCB0aGUKIDpjbGFzczpgQ29udGV4dGAgY29uc3RydWN0b3IuCiAKIAotLi4gY2xhc3M6OiBDb250ZXh0KHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgdHJhcHM9Tm9uZSwgZmxhZ3M9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUpCisuLiBjbGFzczo6IENvbnRleHQocHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwgY2FwaXRhbHM9Tm9uZSwgY2xhbXA9Tm9uZSwgZmxhZ3M9Tm9uZSwgdHJhcHM9Tm9uZSkKIAogICAgQ3JlYXRlcyBhIG5ldyBjb250ZXh0LiAgSWYgYSBmaWVsZCBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIDpjb25zdDpgTm9uZWAsIHRoZQogICAgZGVmYXVsdCB2YWx1ZXMgYXJlIGNvcGllZCBmcm9tIHRoZSA6Y29uc3Q6YERlZmF1bHRDb250ZXh0YC4gIElmIHRoZSAqZmxhZ3MqCiAgICBmaWVsZCBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIDpjb25zdDpgTm9uZWAsIGFsbCBmbGFncyBhcmUgY2xlYXJlZC4KIAotICAgVGhlICpwcmVjKiBmaWVsZCBpcyBhIHBvc2l0aXZlIGludGVnZXIgdGhhdCBzZXRzIHRoZSBwcmVjaXNpb24gZm9yIGFyaXRobWV0aWMKLSAgIG9wZXJhdGlvbnMgaW4gdGhlIGNvbnRleHQuCisgICAqcHJlYyogaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzpjb25zdDpgMWAsIDpjb25zdDpgTUFYX1BSRUNgXSB0aGF0IHNldHMKKyAgIHRoZSBwcmVjaXNpb24gZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBpbiB0aGUgY29udGV4dC4KIAotICAgVGhlICpyb3VuZGluZyogb3B0aW9uIGlzIG9uZSBvZjoKLQotICAgKiA6Y29uc3Q6YFJPVU5EX0NFSUxJTkdgICh0b3dhcmRzIDpjb25zdDpgSW5maW5pdHlgKSwKLSAgICogOmNvbnN0OmBST1VORF9ET1dOYCAodG93YXJkcyB6ZXJvKSwKLSAgICogOmNvbnN0OmBST1VORF9GTE9PUmAgKHRvd2FyZHMgOmNvbnN0OmAtSW5maW5pdHlgKSwKLSAgICogOmNvbnN0OmBST1VORF9IQUxGX0RPV05gICh0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0b3dhcmRzIHplcm8pLAotICAgKiA6Y29uc3Q6YFJPVU5EX0hBTEZfRVZFTmAgKHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyKSwKLSAgICogOmNvbnN0OmBST1VORF9IQUxGX1VQYCAodG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgYXdheSBmcm9tIHplcm8pLCBvcgotICAgKiA6Y29uc3Q6YFJPVU5EX1VQYCAoYXdheSBmcm9tIHplcm8pLgotICAgKiA6Y29uc3Q6YFJPVU5EXzA1VVBgIChhd2F5IGZyb20gemVybyBpZiBsYXN0IGRpZ2l0IGFmdGVyIHJvdW5kaW5nIHRvd2FyZHMgemVybwotICAgICB3b3VsZCBoYXZlIGJlZW4gMCBvciA1OyBvdGhlcndpc2UgdG93YXJkcyB6ZXJvKQorICAgVGhlICpyb3VuZGluZyogb3B0aW9uIGlzIG9uZSBvZiB0aGUgY29uc3RhbnRzIGxpc3RlZCBpbiB0aGUgc2VjdGlvbgorICAgYFJvdW5kaW5nIE1vZGVzYF8uCiAKICAgIFRoZSAqdHJhcHMqIGFuZCAqZmxhZ3MqIGZpZWxkcyBsaXN0IGFueSBzaWduYWxzIHRvIGJlIHNldC4gR2VuZXJhbGx5LCBuZXcKICAgIGNvbnRleHRzIHNob3VsZCBvbmx5IHNldCB0cmFwcyBhbmQgbGVhdmUgdGhlIGZsYWdzIGNsZWFyLgogCiAgICBUaGUgKkVtaW4qIGFuZCAqRW1heCogZmllbGRzIGFyZSBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZSBvdXRlciBsaW1pdHMgYWxsb3dhYmxlCi0gICBmb3IgZXhwb25lbnRzLgorICAgZm9yIGV4cG9uZW50cy4gKkVtaW4qIG11c3QgYmUgaW4gdGhlIHJhbmdlIFs6Y29uc3Q6YE1JTl9FTUlOYCwgOmNvbnN0OmAwYF0sCisgICAqRW1heCogaW4gdGhlIHJhbmdlIFs6Y29uc3Q6YDBgLCA6Y29uc3Q6YE1BWF9FTUFYYF0uCiAKICAgIFRoZSAqY2FwaXRhbHMqIGZpZWxkIGlzIGVpdGhlciA6Y29uc3Q6YDBgIG9yIDpjb25zdDpgMWAgKHRoZSBkZWZhdWx0KS4gSWYgc2V0IHRvCiAgICA6Y29uc3Q6YDFgLCBleHBvbmVudHMgYXJlIHByaW50ZWQgd2l0aCBhIGNhcGl0YWwgOmNvbnN0OmBFYDsgb3RoZXJ3aXNlLCBhCkBAIC05NTEsNiArOTgwLDEyIEBACiAKICAgICAgIFJlc2V0cyBhbGwgb2YgdGhlIGZsYWdzIHRvIDpjb25zdDpgMGAuCiAKKyAgIC4uIG1ldGhvZDo6IGNsZWFyX3RyYXBzKCkKKworICAgICAgUmVzZXRzIGFsbCBvZiB0aGUgdHJhcHMgdG8gOmNvbnN0OmAwYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIG1ldGhvZDo6IGNvcHkoKQogCiAgICAgICBSZXR1cm4gYSBkdXBsaWNhdGUgb2YgdGhlIGNvbnRleHQuCkBAIC0xMjUwLDggKzEyODUsMTMgQEAKICAgICAgIFdpdGggdHdvIGFyZ3VtZW50cywgY29tcHV0ZSBgYHgqKnlgYC4gIElmIGBgeGBgIGlzIG5lZ2F0aXZlIHRoZW4gYGB5YGAKICAgICAgIG11c3QgYmUgaW50ZWdyYWwuICBUaGUgcmVzdWx0IHdpbGwgYmUgaW5leGFjdCB1bmxlc3MgYGB5YGAgaXMgaW50ZWdyYWwgYW5kCiAgICAgICB0aGUgcmVzdWx0IGlzIGZpbml0ZSBhbmQgY2FuIGJlIGV4cHJlc3NlZCBleGFjdGx5IGluICdwcmVjaXNpb24nIGRpZ2l0cy4KLSAgICAgIFRoZSByZXN1bHQgc2hvdWxkIGFsd2F5cyBiZSBjb3JyZWN0bHkgcm91bmRlZCwgdXNpbmcgdGhlIHJvdW5kaW5nIG1vZGUgb2YKLSAgICAgIHRoZSBjdXJyZW50IHRocmVhZCdzIGNvbnRleHQuCisgICAgICBUaGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY29udGV4dCBpcyB1c2VkLiBSZXN1bHRzIGFyZSBhbHdheXMgY29ycmVjdGx5LXJvdW5kZWQKKyAgICAgIGluIHRoZSBQeXRob24gdmVyc2lvbi4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFRoZSBDIG1vZHVsZSBjb21wdXRlcyA6bWV0aDpgcG93ZXJgIGluIHRlcm1zIG9mIHRoZSBjb3JyZWN0bHktcm91bmRlZAorICAgICAgICAgOm1ldGg6YGV4cGAgYW5kIDptZXRoOmBsbmAgZnVuY3Rpb25zLiBUaGUgcmVzdWx0IGlzIHdlbGwtZGVmaW5lZCBidXQKKyAgICAgICAgIG9ubHkgImFsbW9zdCBhbHdheXMgY29ycmVjdGx5LXJvdW5kZWQiLgogCiAgICAgICBXaXRoIHRocmVlIGFyZ3VtZW50cywgY29tcHV0ZSBgYCh4Kip5KSAlIG1vZHVsb2BgLiAgRm9yIHRoZSB0aHJlZSBhcmd1bWVudAogICAgICAgZm9ybSwgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgb24gdGhlIGFyZ3VtZW50cyBob2xkOgpAQCAtMTMzOSw2ICsxMzc5LDY5IEBACiAKIC4uICUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQogCisuLiBfZGVjaW1hbC1yb3VuZGluZy1tb2RlczoKKworQ29uc3RhbnRzCistLS0tLS0tLS0KKworVGhlIGNvbnN0YW50cyBpbiB0aGlzIHNlY3Rpb24gYXJlIG9ubHkgcmVsZXZhbnQgZm9yIHRoZSBDIG1vZHVsZS4gVGhleQorYXJlIGFsc28gaW5jbHVkZWQgaW4gdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24gZm9yIGNvbXBhdGliaWxpdHkuCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAzMi1iaXQgICAgICAgIHwgICAgICAgICAgICA2NC1iaXQgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgLi4gZGF0YTo6IE1BWF9QUkVDICB8IDpjb25zdDpgNDI1MDAwMDAwYCAgfCA6Y29uc3Q6YDk5OTk5OTk5OTk5OTk5OTk5OWAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAuLiBkYXRhOjogTUFYX0VNQVggIHwgOmNvbnN0OmA0MjUwMDAwMDBgICB8IDpjb25zdDpgOTk5OTk5OTk5OTk5OTk5OTk5YCAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IC4uIGRhdGE6OiBNSU5fRU1JTiAgfCA6Y29uc3Q6YC00MjUwMDAwMDBgIHwgOmNvbnN0OmAtOTk5OTk5OTk5OTk5OTk5OTk5YCAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgLi4gZGF0YTo6IE1JTl9FVElOWSB8IDpjb25zdDpgLTg0OTk5OTk5OWAgfCA6Y29uc3Q6YC0xOTk5OTk5OTk5OTk5OTk5OTk3YCB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisKKy4uIGRhdGE6OiBIQVZFX1RIUkVBRFMKKworICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgVHJ1ZS4gSWYgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkcywgdGhlCisgICBDIHZlcnNpb24gYXV0b21hdGljYWxseSBkaXNhYmxlcyB0aGUgZXhwZW5zaXZlIHRocmVhZCBsb2NhbCBjb250ZXh0CisgICBtYWNoaW5lcnkuIEluIHRoaXMgY2FzZSwgdGhlIHZhbHVlIGlzIEZhbHNlLgorCitSb3VuZGluZyBtb2RlcworLS0tLS0tLS0tLS0tLS0KKworLi4gZGF0YTo6IFJPVU5EX0NFSUxJTkcKKworICAgUm91bmQgdG93YXJkcyA6Y29uc3Q6YEluZmluaXR5YC4KKworLi4gZGF0YTo6IFJPVU5EX0RPV04KKworICAgUm91bmQgdG93YXJkcyB6ZXJvLgorCisuLiBkYXRhOjogUk9VTkRfRkxPT1IKKworICAgUm91bmQgdG93YXJkcyA6Y29uc3Q6YC1JbmZpbml0eWAuCisKKy4uIGRhdGE6OiBST1VORF9IQUxGX0RPV04KKworICAgUm91bmQgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG93YXJkcyB6ZXJvLgorCisuLiBkYXRhOjogUk9VTkRfSEFMRl9FVkVOCisKKyAgIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyLgorCisuLiBkYXRhOjogUk9VTkRfSEFMRl9VUAorCisgICBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyBhd2F5IGZyb20gemVyby4KKworLi4gZGF0YTo6IFJPVU5EX1VQCisKKyAgIFJvdW5kIGF3YXkgZnJvbSB6ZXJvLgorCisuLiBkYXRhOjogUk9VTkRfMDVVUAorCisgICBSb3VuZCBhd2F5IGZyb20gemVybyBpZiBsYXN0IGRpZ2l0IGFmdGVyIHJvdW5kaW5nIHRvd2FyZHMgemVybyB3b3VsZCBoYXZlCisgICBiZWVuIDAgb3IgNTsgb3RoZXJ3aXNlIHJvdW5kIHRvd2FyZHMgemVyby4KKwogCiAuLiBfZGVjaW1hbC1zaWduYWxzOgogCkBAIC0xNDAzLDcgKzE1MDYsNiBAQAogICAgICAgSW5maW5pdHkgLyBJbmZpbml0eQogICAgICAgeCAlIDAKICAgICAgIEluZmluaXR5ICUgeAotICAgICAgeC5fcmVzY2FsZSggbm9uLWludGVnZXIgKQogICAgICAgc3FydCgteCkgYW5kIHggPiAwCiAgICAgICAwICoqIDAKICAgICAgIHggKiogKG5vbi1pbnRlZ2VyKQpAQCAtMTQ0Niw2ICsxNTQ4LDIzIEBACiAgICBPY2N1cnMgd2hlbiBhIHN1Ym5vcm1hbCByZXN1bHQgaXMgcHVzaGVkIHRvIHplcm8gYnkgcm91bmRpbmcuIDpjbGFzczpgSW5leGFjdGAKICAgIGFuZCA6Y2xhc3M6YFN1Ym5vcm1hbGAgYXJlIGFsc28gc2lnbmFsZWQuCiAKKworLi4gY2xhc3M6OiBGbG9hdE9wZXJhdGlvbgorCisgICAgRW5hYmxlIHN0cmljdGVyIHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMuCisKKyAgICBJZiB0aGUgc2lnbmFsIGlzIG5vdCB0cmFwcGVkIChkZWZhdWx0KSwgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgaXMKKyAgICBwZXJtaXR0ZWQgaW4gdGhlIDpjbGFzczpgfmRlY2ltYWwuRGVjaW1hbGAgY29uc3RydWN0b3IsCisgICAgOm1ldGg6YH5kZWNpbWFsLkNvbnRleHQuY3JlYXRlX2RlY2ltYWxgIGFuZCBhbGwgY29tcGFyaXNvbiBvcGVyYXRvcnMuCisgICAgQm90aCBjb252ZXJzaW9uIGFuZCBjb21wYXJpc29ucyBhcmUgZXhhY3QuIEFueSBvY2N1cnJlbmNlIG9mIGEgbWl4ZWQKKyAgICBvcGVyYXRpb24gaXMgc2lsZW50bHkgcmVjb3JkZWQgYnkgc2V0dGluZyA6ZXhjOmBGbG9hdE9wZXJhdGlvbmAgaW4gdGhlCisgICAgY29udGV4dCBmbGFncy4gRXhwbGljaXQgY29udmVyc2lvbnMgd2l0aCA6bWV0aDpgfmRlY2ltYWwuRGVjaW1hbC5mcm9tX2Zsb2F0YAorICAgIG9yIDptZXRoOmB+ZGVjaW1hbC5Db250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXRgIGRvIG5vdCBzZXQgdGhlIGZsYWcuCisKKyAgICBPdGhlcndpc2UgKHRoZSBzaWduYWwgaXMgdHJhcHBlZCksIG9ubHkgZXF1YWxpdHkgY29tcGFyaXNvbnMgYW5kIGV4cGxpY2l0CisgICAgY29udmVyc2lvbnMgYXJlIHNpbGVudC4gQWxsIG90aGVyIG1peGVkIG9wZXJhdGlvbnMgcmFpc2UgOmV4YzpgRmxvYXRPcGVyYXRpb25gLgorCisKIFRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgaGllcmFyY2h5IG9mIHNpZ25hbHM6OgogCiAgICBleGNlcHRpb25zLkFyaXRobWV0aWNFcnJvcihleGNlcHRpb25zLkV4Y2VwdGlvbikKQEAgLTE0NTgsMTAgKzE1NzcsMTIgQEAKICAgICAgICAgICAgSW52YWxpZE9wZXJhdGlvbgogICAgICAgICAgICBSb3VuZGVkCiAgICAgICAgICAgIFN1Ym5vcm1hbAorICAgICAgICAgICBGbG9hdE9wZXJhdGlvbihEZWNpbWFsRXhjZXB0aW9uLCBleGNlcHRpb25zLlR5cGVFcnJvcikKIAogLi4gJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlCiAKIAorCiAuLiBfZGVjaW1hbC1ub3RlczoKIAogRmxvYXRpbmcgUG9pbnQgTm90ZXMKQEAgLTE1NzEsNyArMTY5Miw3IEBACiB0aGUgZm9sbG93aW5nIGNhbGN1bGF0aW9uIHJldHVybnMgYSB2YWx1ZSBlcXVhbCB0byB6ZXJvOgogCiAgICA+Pj4gMSAvIERlY2ltYWwoJ0luZmluaXR5JykKLSAgIERlY2ltYWwoJzBFLTEwMDAwMDAwMjYnKQorICAgRGVjaW1hbCgnMEUtMTAwMDAyNicpCiAKIC4uICUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQogCkBAIC0xNTgzLDcgKzE3MDQsNyBAQAogCiBUaGUgOmZ1bmM6YGdldGNvbnRleHRgIGZ1bmN0aW9uIGFjY2Vzc2VzIGEgZGlmZmVyZW50IDpjbGFzczpgQ29udGV4dGAgb2JqZWN0IGZvcgogZWFjaCB0aHJlYWQuICBIYXZpbmcgc2VwYXJhdGUgdGhyZWFkIGNvbnRleHRzIG1lYW5zIHRoYXQgdGhyZWFkcyBtYXkgbWFrZQotY2hhbmdlcyAoc3VjaCBhcyBgYGdldGNvbnRleHQucHJlYz0xMGBgKSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggb3RoZXIgdGhyZWFkcy4KK2NoYW5nZXMgKHN1Y2ggYXMgYGBnZXRjb250ZXh0KCkucHJlYz0xMGBgKSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggb3RoZXIgdGhyZWFkcy4KIAogTGlrZXdpc2UsIHRoZSA6ZnVuYzpgc2V0Y29udGV4dGAgZnVuY3Rpb24gYXV0b21hdGljYWxseSBhc3NpZ25zIGl0cyB0YXJnZXQgdG8KIHRoZSBjdXJyZW50IHRocmVhZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RlcGdyYXBoLW91dHB1dC5wbmcgYi9Eb2MvbGlicmFyeS9kZXBncmFwaC1vdXRwdXQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MGJiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9kZXBncmFwaC1vdXRwdXQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdCBiL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdAppbmRleCBjODIyZTA4Li4yMzY4NzY5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0CkBAIC0xOSw1ICsxOSw4IEBACiAgICBweWRvYy5yc3QKICAgIGRvY3Rlc3QucnN0CiAgICB1bml0dGVzdC5yc3QKKyAgIHVuaXR0ZXN0Lm1vY2sucnN0CisgICB1bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdAogICAgMnRvMy5yc3QKICAgIHRlc3QucnN0CisgICB2ZW52LnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QgYi9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdAppbmRleCBiZGMzN2IzLi44MzZlMjQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdApAQCAtNzUyLDggKzc1Miw4IEBACiAgICAgICAgIyB3ZSdyZSBwYXNzaW5nIHRoZXNlIGFzIGFyZ3VtZW50cyB0byB0aGUgZGlmZiBmdW5jdGlvbgogICAgICAgIGZyb21kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KGZyb21maWxlKS5zdF9tdGltZSkKICAgICAgICB0b2RhdGUgPSB0aW1lLmN0aW1lKG9zLnN0YXQodG9maWxlKS5zdF9tdGltZSkKLSAgICAgICBmcm9tbGluZXMgPSBvcGVuKGZyb21maWxlLCAnVScpLnJlYWRsaW5lcygpCi0gICAgICAgdG9saW5lcyA9IG9wZW4odG9maWxlLCAnVScpLnJlYWRsaW5lcygpCisgICAgICAgd2l0aCBvcGVuKGZyb21saW5lcykgYXMgZnJvbWYsIG9wZW4odG9maWxlKSBhcyB0b2Y6CisgICAgICAgICAgIGZyb21saW5lcywgdG9saW5lcyA9IGxpc3QoZnJvbWYpLCBsaXN0KHRvZikKIAogICAgICAgIGlmIG9wdGlvbnMudToKICAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgZnJvbWZpbGUsIHRvZmlsZSwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QgYi9Eb2MvbGlicmFyeS9kaXMucnN0CmluZGV4IDc5Y2M1ODMuLjZkMDhhMGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlzLnJzdApAQCAtMTcxLDExICsxNzEsNiBAQAogCiAqKkdlbmVyYWwgaW5zdHJ1Y3Rpb25zKioKIAotLi4gb3Bjb2RlOjogU1RPUF9DT0RFCi0KLSAgIEluZGljYXRlcyBlbmQtb2YtY29kZSB0byB0aGUgY29tcGlsZXIsIG5vdCB1c2VkIGJ5IHRoZSBpbnRlcnByZXRlci4KLQotCiAuLiBvcGNvZGU6OiBOT1AKIAogICAgRG8gbm90aGluZyBjb2RlLiAgVXNlZCBhcyBhIHBsYWNlaG9sZGVyIGJ5IHRoZSBieXRlY29kZSBvcHRpbWl6ZXIuCkBAIC00MzYsNiArNDMxLDEzIEBACiAgICBQb3BzIGBgVE9TYGAgYW5kIHlpZWxkcyBpdCBmcm9tIGEgOnRlcm06YGdlbmVyYXRvcmAuCiAKIAorLi4gb3Bjb2RlOjogWUlFTERfRlJPTQorCisgICBQb3BzIGBgVE9TYGAgYW5kIGRlbGVnYXRlcyB0byBpdCBhcyBhIHN1Yml0ZXJhdG9yIGZyb20gYSA6dGVybTpgZ2VuZXJhdG9yYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gb3Bjb2RlOjogSU1QT1JUX1NUQVIKIAogICAgTG9hZHMgYWxsIHN5bWJvbHMgbm90IHN0YXJ0aW5nIHdpdGggYGAnXydgYCBkaXJlY3RseSBmcm9tIHRoZSBtb2R1bGUgVE9TIHRvIHRoZQpAQCAtNzUyLDkgKzc1NCwxMCBAQAogCiAuLiBvcGNvZGU6OiBNQUtFX0ZVTkNUSU9OIChhcmdjKQogCi0gICBQdXNoZXMgYSBuZXcgZnVuY3Rpb24gb2JqZWN0IG9uIHRoZSBzdGFjay4gIFRPUyBpcyB0aGUgY29kZSBhc3NvY2lhdGVkIHdpdGggdGhlCi0gICBmdW5jdGlvbi4gIFRoZSBmdW5jdGlvbiBvYmplY3QgaXMgZGVmaW5lZCB0byBoYXZlICphcmdjKiBkZWZhdWx0IHBhcmFtZXRlcnMsCi0gICB3aGljaCBhcmUgZm91bmQgYmVsb3cgVE9TLgorICAgUHVzaGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCBvbiB0aGUgc3RhY2suICBUT1MgaXMgdGhlCisgICA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBmdW5jdGlvbjsgVE9TMSBpcyB0aGUgY29kZSBhc3NvY2lhdGVkIHdpdGgKKyAgIHRoZSBmdW5jdGlvbi4gIFRoZSBmdW5jdGlvbiBvYmplY3QgaXMgZGVmaW5lZCB0byBoYXZlICphcmdjKiBkZWZhdWx0IHBhcmFtZXRlcnMsCisgICB3aGljaCBhcmUgZm91bmQgYmVsb3cgVE9TMS4KIAogCiAuLiBvcGNvZGU6OiBNQUtFX0NMT1NVUkUgKGFyZ2MpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXN0dXRpbHMucnN0IGIvRG9jL2xpYnJhcnkvZGlzdHV0aWxzLnJzdAppbmRleCAyMzhiNzlkLi4xMWEyOTQ5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXN0dXRpbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpc3R1dGlscy5yc3QKQEAgLTEyLDE4ICsxMiwxNCBAQAogMTAwJS1wdXJlIFB5dGhvbiwgb3IgbWF5IGJlIGV4dGVuc2lvbiBtb2R1bGVzIHdyaXR0ZW4gaW4gQywgb3IgbWF5IGJlCiBjb2xsZWN0aW9ucyBvZiBQeXRob24gcGFja2FnZXMgd2hpY2ggaW5jbHVkZSBtb2R1bGVzIGNvZGVkIGluIGJvdGggUHl0aG9uIGFuZCBDLgogCi1UaGlzIHBhY2thZ2UgaXMgZGlzY3Vzc2VkIGluIHR3byBzZXBhcmF0ZSBjaGFwdGVyczoKIAorVXNlciBkb2N1bWVudGF0aW9uIGFuZCBBUEkgcmVmZXJlbmNlIGFyZSBwcm92aWRlZCBpbiBhbm90aGVyIGRvY3VtZW50OgogCiAuLiBzZWVhbHNvOjoKIAogICAgOnJlZjpgZGlzdHV0aWxzLWluZGV4YAogICAgICAgVGhlIG1hbnVhbCBmb3IgZGV2ZWxvcGVycyBhbmQgcGFja2FnZXJzIG9mIFB5dGhvbiBtb2R1bGVzLiAgVGhpcyBkZXNjcmliZXMKICAgICAgIGhvdyB0byBwcmVwYXJlIDptb2Q6YGRpc3R1dGlsc2BcIC1iYXNlZCBwYWNrYWdlcyBzbyB0aGF0IHRoZXkgbWF5IGJlCi0gICAgICBlYXNpbHkgaW5zdGFsbGVkIGludG8gYW4gZXhpc3RpbmcgUHl0aG9uIGluc3RhbGxhdGlvbi4KLQotICAgOnJlZjpgaW5zdGFsbC1pbmRleGAKLSAgICAgIEFuICJhZG1pbmlzdHJhdG9ycyIgbWFudWFsIHdoaWNoIGluY2x1ZGVzIGluZm9ybWF0aW9uIG9uIGluc3RhbGxpbmcKLSAgICAgIG1vZHVsZXMgaW50byBhbiBleGlzdGluZyBQeXRob24gaW5zdGFsbGF0aW9uLiAgWW91IGRvIG5vdCBuZWVkIHRvIGJlIGEKLSAgICAgIFB5dGhvbiBwcm9ncmFtbWVyIHRvIHJlYWQgdGhpcyBtYW51YWwuCi0KKyAgICAgIGVhc2lseSBpbnN0YWxsZWQgaW50byBhbiBleGlzdGluZyBQeXRob24gaW5zdGFsbGF0aW9uLiAgSWYgYWxzbyBjb250YWlucworICAgICAgaW5zdHJ1Y3Rpb25zIGZvciBlbmQtdXNlcnMgd2FudGluZyB0byBpbnN0YWxsIGEgZGlzdHV0aWxzLWJhc2VkIHBhY2thZ2UsCisgICAgICA6cmVmOmBpbnN0YWxsLWluZGV4YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CmluZGV4IGQ4ZjMzMGYuLjlmMGE5ZTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdApAQCAtNzMsMTcgKzczLDM4IEBACiAqIDpjbGFzczpgU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0YCAtLSBUaGUgc3RhcnQgYm91bmRhcnkgY2xhaW1lZCBpbiB0aGUKICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIHdhcyBuZXZlciBmb3VuZC4KIAorKiA6Y2xhc3M6YENsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdGAgLS0gQSBzdGFydCBib3VuZGFyeSB3YXMgZm91bmQsIGJ1dAorICBubyBjb3JyZXNwb25kaW5nIGNsb3NlIGJvdW5kYXJ5IHdhcyBldmVyIGZvdW5kLgorCisgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAqIDpjbGFzczpgRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3RgIC0tIFRoZSBtZXNzYWdlIGhhZCBhIGNvbnRpbnVhdGlvbgogICBsaW5lIGFzIGl0cyBmaXJzdCBoZWFkZXIgbGluZS4KIAogKiA6Y2xhc3M6YE1pc3BsYWNlZEVudmVsb3BlSGVhZGVyRGVmZWN0YCAtIEEgIlVuaXggRnJvbSIgaGVhZGVyIHdhcyBmb3VuZCBpbiB0aGUKICAgbWlkZGxlIG9mIGEgaGVhZGVyIGJsb2NrLgogCisqIDpjbGFzczpgTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3RgIC0gQSBsaW5lIHdhcyBmb3VuZCB3aGlsZSBwYXJzaW5nCisgIGhlYWRlcnMgdGhhdCBoYWQgbm8gbGVhZGluZyB3aGl0ZSBzcGFjZSBidXQgY29udGFpbmVkIG5vICc6Jy4gIFBhcnNpbmcKKyAgY29udGludWVzIGFzc3VtaW5nIHRoYXQgdGhlIGxpbmUgcmVwcmVzZW50cyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgYm9keS4KKworICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogKiA6Y2xhc3M6YE1hbGZvcm1lZEhlYWRlckRlZmVjdGAgLS0gQSBoZWFkZXIgd2FzIGZvdW5kIHRoYXQgd2FzIG1pc3NpbmcgYSBjb2xvbiwKICAgb3Igd2FzIG90aGVyd2lzZSBtYWxmb3JtZWQuCiAKKyAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICBUaGlzIGRlZmVjdCBoYXMgbm90IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBQeXRob24gdmVyc2lvbnMuCisKICogOmNsYXNzOmBNdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3RgIC0tIEEgbWVzc2FnZSBjbGFpbWVkIHRvIGJlIGEKICAgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCBidXQgbm8gc3VicGFydHMgd2VyZSBmb3VuZC4gIE5vdGUgdGhhdCB3aGVuIGEgbWVzc2FnZSBoYXMKICAgdGhpcyBkZWZlY3QsIGl0cyA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBtZXRob2QgbWF5IHJldHVybiBmYWxzZSBldmVuIHRob3VnaCBpdHMKICAgY29udGVudCB0eXBlIGNsYWltcyB0byBiZSA6bWltZXR5cGU6YG11bHRpcGFydGAuCiAKKyogOmNsYXNzOmBJbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgLS0gV2hlbiBkZWNvZGluZyBhIGJsb2NrIG9mIGJhc2U2NAorICBlbm9jZGVkIGJ5dGVzLCB0aGUgcGFkZGluZyB3YXMgbm90IGNvcnJlY3QuICBFbm91Z2ggcGFkZGluZyBpcyBhZGRlZCB0bworICBwZXJmb3JtIHRoZSBkZWNvZGUsIGJ1dCB0aGUgcmVzdWx0aW5nIGRlY29kZWQgYnl0ZXMgbWF5IGJlIGludmFsaWQuCisKKyogOmNsYXNzOmBJbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAgLS0gV2hlbiBkZWNvZGluZyBhIGJsb2NrIG9mIGJhc2U2NAorICBlbm9jZGVkIGJ5dGVzLCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2U2NCBhbHBoZWJldCB3ZXJlIGVuY291bnRlcmVkLgorICBUaGUgY2hhcmFjdGVycyBhcmUgaWdub3JlZCwgYnV0IHRoZSByZXN1bHRpbmcgZGVjb2RlZCBieXRlcyBtYXkgYmUgaW52YWxpZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CmluZGV4IDg4YzYyYTIuLmMxNzJhY2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdApAQCAtMzIsNyArMzIsNyBAQAogOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGU6CiAKIAotLi4gY2xhc3M6OiBHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgpCisuLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgcG9saWN5PU5vbmUpCiAKICAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YAogICAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0IHN1cHBvcnQgdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kCkBAIC01MywxMCArNTMsMTcgQEAKICAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCiAgICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5IDpyZmM6YDI4MjJgLgogCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCisgICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgSWYgbm8gKnBvbGljeSogaXMgc3BlY2lmaWVkLAorICAgdGhlbiB0aGUgKnBvbGljeSogYXR0YWNoZWQgdG8gdGhlIG1lc3NhZ2Ugb2JqZWN0IHBhc3NlZCB0byA6YXR0cjpgZmxhdHRlbmAKKyAgIGlzIHVzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCiAgICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgR2VuZXJhdG9yYCBtZXRob2RzIGFyZToKIAogCi0gICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9J1xcbicpCisgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKIAogICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQgYXQKICAgICAgICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlCkBAIC03MiwxOSArNzksMjAgQEAKICAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCiAKICAgICAgIE9wdGlvbmFsICpsaW5lc2VwKiBzcGVjaWZpZXMgdGhlIGxpbmUgc2VwYXJhdG9yIGNoYXJhY3RlciB1c2VkIHRvCi0gICAgICB0ZXJtaW5hdGUgbGluZXMgaW4gdGhlIG91dHB1dC4gIEl0IGRlZmF1bHRzIHRvIGBgXG5gYCBiZWNhdXNlIHRoYXQgaXMKLSAgICAgIHRoZSBtb3N0IHVzZWZ1bCB2YWx1ZSBmb3IgUHl0aG9uIGFwcGxpY2F0aW9uIGNvZGUgKG90aGVyIGxpYnJhcnkgcGFja2FnZXMKLSAgICAgIGV4cGVjdCBgYFxuYGAgc2VwYXJhdGVkIGxpbmVzKS4gIGBgbGluZXNlcD1cclxuYGAgY2FuIGJlIHVzZWQgdG8KLSAgICAgIGdlbmVyYXRlIG91dHB1dCB3aXRoIFJGQy1jb21wbGlhbnQgbGluZSBzZXBhcmF0b3JzLgorICAgICAgdGVybWluYXRlIGxpbmVzIGluIHRoZSBvdXRwdXQuICBJZiBzcGVjaWZpZWQgaXQgb3ZlcnJpZGVzIHRoZSB2YWx1ZQorICAgICAgc3BlY2lmaWVkIGJ5IHRoZSAqbXNnKlwncyBvciBgYEdlbmVyYXRvcmBgXCdzIGBgcG9saWN5YGAuCiAKLSAgICAgIE1lc3NhZ2VzIHBhcnNlZCB3aXRoIGEgQnl0ZXMgcGFyc2VyIHRoYXQgaGF2ZSBhCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhCi0gICAgICB1c2UgYSA3Yml0IENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuICBOb24tQVNDSUkgYnl0ZXMgaW4gdGhlIGhlYWRlcnMKLSAgICAgIHdpbGwgYmUgOnJmYzpgMjA0N2AgZW5jb2RlZCB3aXRoIGEgY2hhcnNldCBvZiBgdW5rbm93bi04Yml0YC4KKyAgICAgIEJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgcmVwcmVzZW50IG5vbi1BU0NJSSBieXRlcywgaWYgdGhlIHBvbGljeSB0aGF0CisgICAgICBhcHBsaWVzIHdoZW4gYGBmbGF0dGVuYGAgaXMgcnVuIGhhcyA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgCisgICAgICBzZXQgdG8gYGA4Yml0YGAsIGBgR2VuZXJhdG9yYGAgd2lsbCBvcGVyYXRlIGFzIGlmIGl0IHdlcmUgc2V0IHRvCisgICAgICBgYDdiaXRgYC4gIFRoaXMgbWVhbnMgdGhhdCBtZXNzYWdlcyBwYXJzZWQgd2l0aCBhIEJ5dGVzIHBhcnNlciB0aGF0IGhhdmUKKyAgICAgIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGBgOGJpdGBgIHdpbGwgYmUgY29udmVydGVkCisgICAgICB0byBhIHVzZSBhIGBgN2JpdGBgIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuICBOb24tQVNDSUkgYnl0ZXMgaW4gdGhlCisgICAgICBoZWFkZXJzIHdpbGwgYmUgOnJmYzpgMjA0N2AgZW5jb2RlZCB3aXRoIGEgY2hhcnNldCBvZiBgYHVua25vd24tOGJpdGBgLgogCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgOGJpdCBtZXNzYWdlIGJvZGllcywgYW5kIHRoZSAqbGluZXNlcCoKLSAgICAgICAgIGFyZ3VtZW50LgorICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgYGA4Yml0YGAgbWVzc2FnZSBib2RpZXMsIGFuZCB0aGUKKyAgICAgICAgICpsaW5lc2VwKiBhcmd1bWVudC4KIAogICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCiAKQEAgLTEwMyw3ICsxMTEsOCBAQAogZm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIG1lc3NhZ2Ugb2JqZWN0LiAgRm9yIG1vcmUgZGV0YWlsLCBzZWUKIDptb2Q6YGVtYWlsLm1lc3NhZ2VgLgogCi0uLiBjbGFzczo6IEJ5dGVzR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4KQorLi4gY2xhc3M6OiBCeXRlc0dlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIGNsYXNzIHRha2VzIGEgYmluYXJ5CiAgICA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0CkBAIC0xMjUsMTkgKzEzNCwzMSBAQAogICAgd3JhcHBpbmcuICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5CiAgICA6cmZjOmAyODIyYC4KIAorICAgVGhlICpwb2xpY3kqIGtleXdvcmQgc3BlY2lmaWVzIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAgb2JqZWN0IHRoYXQgY29udHJvbHMgYQorICAgbnVtYmVyIG9mIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRvcidzIG9wZXJhdGlvbi4gIFRoZSBkZWZhdWx0IHBvbGljeQorICAgbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCiAgICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIG1ldGhvZHMgYXJlOgogCiAKLSAgIC4uIG1ldGhvZDo6IGZsYXR0ZW4obXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD0nXG4nKQorICAgLi4gbWV0aG9kOjogZmxhdHRlbihtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPU5vbmUpCiAKICAgICAgIFByaW50IHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgcm9vdGVkCiAgICAgICBhdCAqbXNnKiB0byB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgCiAgICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4gIFN1YnBhcnRzIGFyZSB2aXNpdGVkIGRlcHRoLWZpcnN0IGFuZCB0aGUgcmVzdWx0aW5nCi0gICAgICB0ZXh0IHdpbGwgYmUgcHJvcGVybHkgTUlNRSBlbmNvZGVkLiAgSWYgdGhlIGlucHV0IHRoYXQgY3JlYXRlZCB0aGUgKm1zZyoKLSAgICAgIGNvbnRhaW5lZCBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYW5kIHRob3NlIGJ5dGVzIGhhdmUgbm90IGJlZW4KLSAgICAgIG1vZGlmaWVkLCB0aGV5IHdpbGwgYmUgY29waWVkIGZhaXRoZnVsbHkgdG8gdGhlIG91dHB1dCwgZXZlbiBpZiBkb2luZyBzbwotICAgICAgaXMgbm90IHN0cmljdGx5IFJGQyBjb21wbGlhbnQuICAoVG8gcHJvZHVjZSBzdHJpY3RseSBSRkMgY29tcGxpYW50Ci0gICAgICBvdXRwdXQsIHVzZSB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzLikKKyAgICAgIHRleHQgd2lsbCBiZSBwcm9wZXJseSBNSU1FIGVuY29kZWQuICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uCisgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIGlzIGBgOGJpdGBgICh0aGUgZGVmYXVsdCksCisgICAgICB0aGVuIGFueSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgaW4gdGhlIG9yaWdpbmFsIHBhcnNlZCBtZXNzYWdlIHRoYXQKKyAgICAgIGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgd2lsbCBiZSBjb3BpZWQgZmFpdGhmdWxseSB0byB0aGUgb3V0cHV0LiAgSWYKKyAgICAgIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYCwgdGhlIGJ5dGVzIHdpbGwgYmUgY29udmVydGVkIGFzIG5lZWRlZAorICAgICAgdXNpbmcgYW4gQVNDSUktY29tcGF0aWJsZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLiAgSW4gcGFydGljdWxhciwKKyAgICAgIFJGQy1pbnZhbGlkIG5vbi1BU0NJSSBieXRlcyBpbiBoZWFkZXJzIHdpbGwgYmUgZW5jb2RlZCB1c2luZyB0aGUgTUlNRQorICAgICAgYGB1bmtub3duLThiaXRgYCBjaGFyYWN0ZXIgc2V0LCB0aHVzIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCisKKyAgICAgIC4uIFhYWDogVGhlcmUgc2hvdWxkIGJlIGEgY29tcGxlbWVudGFyeSBvcHRpb24gdGhhdCBqdXN0IGRvZXMgdGhlIFJGQworICAgICAgICAgY29tcGxpYW5jZSB0cmFuc2Zvcm1hdGlvbiBidXQgbGVhdmVzIENURSA4Yml0IHBhcnRzIGFsb25lLgogCiAgICAgICBNZXNzYWdlcyBwYXJzZWQgd2l0aCBhIEJ5dGVzIHBhcnNlciB0aGF0IGhhdmUgYQogICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQgd2lsbCBiZSByZWNvbnN0cnVjdGVkCkBAIC0xNTIsMTAgKzE3Myw4IEBACiAgICAgICBOb3RlIHRoYXQgZm9yIHN1YnBhcnRzLCBubyBlbnZlbG9wZSBoZWFkZXIgaXMgZXZlciBwcmludGVkLgogCiAgICAgICBPcHRpb25hbCAqbGluZXNlcCogc3BlY2lmaWVzIHRoZSBsaW5lIHNlcGFyYXRvciBjaGFyYWN0ZXIgdXNlZCB0bwotICAgICAgdGVybWluYXRlIGxpbmVzIGluIHRoZSBvdXRwdXQuICBJdCBkZWZhdWx0cyB0byBgYFxuYGAgYmVjYXVzZSB0aGF0IGlzCi0gICAgICB0aGUgbW9zdCB1c2VmdWwgdmFsdWUgZm9yIFB5dGhvbiBhcHBsaWNhdGlvbiBjb2RlIChvdGhlciBsaWJyYXJ5IHBhY2thZ2VzCi0gICAgICBleHBlY3QgYGBcbmBgIHNlcGFyYXRlZCBsaW5lcykuICBgYGxpbmVzZXA9XHJcbmBgIGNhbiBiZSB1c2VkIHRvCi0gICAgICBnZW5lcmF0ZSBvdXRwdXQgd2l0aCBSRkMtY29tcGxpYW50IGxpbmUgc2VwYXJhdG9ycy4KKyAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSWYgc3BlY2lmaWVkIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUKKyAgICAgIHNwZWNpZmllZCBieSB0aGUgYGBHZW5lcmF0b3JgYFwgJ3MgYGBwb2xpY3lgYC4KIAogICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CmluZGV4IDdkMmRjMmUuLjM0NmQyM2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdApAQCAtMzEsOCArMzEsOCBAQAogICAgPj4+IG1zZyA9IE1lc3NhZ2UoKQogICAgPj4+IGggPSBIZWFkZXIoJ3BceGY2c3RhbCcsICdpc28tODg1OS0xJykKICAgID4+PiBtc2dbJ1N1YmplY3QnXSA9IGgKLSAgID4+PiBwcmludChtc2cuYXNfc3RyaW5nKCkpCi0gICBTdWJqZWN0OiA9P2lzby04ODU5LTE/cT9wPUY2c3RhbD89CisgICA+Pj4gbXNnLmFzX3N0cmluZygpCisgICAnU3ViamVjdDogPT9pc28tODg1OS0xP3E/cD1GNnN0YWw/PVxuXG4nCiAKIAogCkBAIC0xNzYsNyArMTc2LDcgQEAKIAogICAgICAgPj4+IGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBkZWNvZGVfaGVhZGVyCiAgICAgICA+Pj4gZGVjb2RlX2hlYWRlcignPT9pc28tODg1OS0xP3E/cD1GNnN0YWw/PScpCi0gICAgICBbKCdwXHhmNnN0YWwnLCAnaXNvLTg4NTktMScpXQorICAgICAgWyhiJ3BceGY2c3RhbCcsICdpc28tODg1OS0xJyldCiAKIAogLi4gZnVuY3Rpb246OiBtYWtlX2hlYWRlcihkZWNvZGVkX3NlcSwgbWF4bGluZWxlbj1Ob25lLCBoZWFkZXJfbmFtZT1Ob25lLCBjb250aW51YXRpb25fd3M9JyAnKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ODQxNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKQEAgLTAsMCArMSw0NTIgQEAKKzptb2Q6YGVtYWlsLmhlYWRlcnJlZ2lzdHJ5YDogQ3VzdG9tIEhlYWRlciBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBtb2R1bGU6OiBlbWFpbC5oZWFkZXJyZWdpc3RyeQorICAgOnN5bm9wc2lzOiBBdXRvbWF0aWMgUGFyc2luZyBvZiBoZWFkZXJzIGJhc2VkIG9uIHRoZSBmaWVsZCBuYW1lCisKKy4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorCisKKy4uIG5vdGU6OgorCisgICBUaGUgaGVhZGVycmVnaXN0cnkgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKKyAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCisgICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIG1vZHVsZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAorICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCisKK0hlYWRlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IGN1c3RvbWl6ZWQgc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YHN0cmAuICBUaGUKK3BhcnRpY3VsYXIgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgYSBnaXZlbiBoZWFkZXIgaXMgZGV0ZXJtaW5lZCBieSB0aGUKKzphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5YCBvZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgaW4KK2VmZmVjdCB3aGVuIHRoZSBoZWFkZXJzIGFyZSBjcmVhdGVkLiAgVGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aGUgcGFydGljdWxhcgorYGBoZWFkZXJfZmFjdG9yeWBgIGltcGxlbWVudGVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIGZvciBoYW5kbGluZyA6UkZDOmA1MzIyYAorY29tcGxpYW50IGVtYWlsIG1lc3NhZ2VzLCB3aGljaCBub3Qgb25seSBwcm92aWRlcyBjdXN0b21pemVkIGhlYWRlciBvYmplY3RzIGZvcgordmFyaW91cyBoZWFkZXIgdHlwZXMsIGJ1dCBhbHNvIHByb3ZpZGVzIGFuIGV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIGFwcGxpY2F0aW9ucwordG8gYWRkIHRoZWlyIG93biBjdXN0b20gaGVhZGVyIHR5cGVzLgorCitXaGVuIHVzaW5nIGFueSBvZiB0aGUgcG9saWN5IG9iamVjdHMgZGVyaXZlZCBmcm9tCis6ZGF0YTpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeWAsIGFsbCBoZWFkZXJzIGFyZSBwcm9kdWNlZCBieQorOmNsYXNzOmAuSGVhZGVyUmVnaXN0cnlgIGFuZCBoYXZlIDpjbGFzczpgLkJhc2VIZWFkZXJgIGFzIHRoZWlyIGxhc3QgYmFzZQorY2xhc3MuICBFYWNoIGhlYWRlciBjbGFzcyBoYXMgYW4gYWRkaXRpb25hbCBiYXNlIGNsYXNzIHRoYXQgaXMgZGV0ZXJtaW5lZCBieQordGhlIHR5cGUgb2YgdGhlIGhlYWRlci4gIEZvciBleGFtcGxlLCBtYW55IGhlYWRlcnMgaGF2ZSB0aGUgY2xhc3MKKzpjbGFzczpgLlVuc3RydWN0dXJlZEhlYWRlcmAgYXMgdGhlaXIgb3RoZXIgYmFzZSBjbGFzcy4gIFRoZSBzcGVjaWFsaXplZCBzZWNvbmQKK2NsYXNzIGZvciBhIGhlYWRlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIsIHVzaW5nIGEgbG9va3VwCit0YWJsZSBzdG9yZWQgaW4gdGhlIDpjbGFzczpgLkhlYWRlclJlZ2lzdHJ5YC4gIEFsbCBvZiB0aGlzIGlzIG1hbmFnZWQKK3RyYW5zcGFyZW50bHkgZm9yIHRoZSB0eXBpY2FsIGFwcGxpY2F0aW9uIHByb2dyYW0sIGJ1dCBpbnRlcmZhY2VzIGFyZSBwcm92aWRlZAorZm9yIG1vZGlmeWluZyB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgdXNlIGJ5IG1vcmUgY29tcGxleCBhcHBsaWNhdGlvbnMuCisKK1RoZSBzZWN0aW9ucyBiZWxvdyBmaXJzdCBkb2N1bWVudCB0aGUgaGVhZGVyIGJhc2UgY2xhc3NlcyBhbmQgdGhlaXIgYXR0cmlidXRlcywKK2ZvbGxvd2VkIGJ5IHRoZSBBUEkgZm9yIG1vZGlmeWluZyB0aGUgYmVoYXZpb3Igb2YgOmNsYXNzOmAuSGVhZGVyUmVnaXN0cnlgLCBhbmQKK2ZpbmFsbHkgdGhlIHN1cHBvcnQgY2xhc3NlcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgZGF0YSBwYXJzZWQgZnJvbSBzdHJ1Y3R1cmVkCitoZWFkZXJzLgorCisKKy4uIGNsYXNzOjogQmFzZUhlYWRlcihuYW1lLCB2YWx1ZSkKKworICAgKm5hbWUqIGFuZCAqdmFsdWUqIGFyZSBwYXNzZWQgdG8gYGBCYXNlSGVhZGVyYGAgZnJvbSB0aGUKKyAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5YCBjYWxsLiAgVGhlIHN0cmluZyB2YWx1ZSBvZgorICAgYW55IGhlYWRlciBvYmplY3QgaXMgdGhlICp2YWx1ZSogZnVsbHkgZGVjb2RlZCB0byB1bmljb2RlLgorCisgICBUaGlzIGJhc2UgY2xhc3MgZGVmaW5lcyB0aGUgZm9sbG93aW5nIHJlYWQtb25seSBwcm9wZXJ0aWVzOgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIGhlYWRlciAodGhlIHBvcnRpb24gb2YgdGhlIGZpZWxkIGJlZm9yZSB0aGUgJzonKS4gIFRoaXMKKyAgICAgIGlzIGV4YWN0bHkgdGhlIHZhbHVlIHBhc3NlZCBpbiB0aGUgOmF0dHI6YH5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeWAKKyAgICAgIGNhbGwgZm9yICpuYW1lKjsgdGhhdCBpcywgY2FzZSBpcyBwcmVzZXJ2ZWQuCisKKworICAgLi4gYXR0cmlidXRlOjogZGVmZWN0cworCisgICAgICBBIHR1cGxlIG9mIDpleGM6YH5lbWFpbC5lcnJvcnMuSGVhZGVyRGVmZWN0YCBpbnN0YW5jZXMgcmVwb3J0aW5nIGFueQorICAgICAgUkZDIGNvbXBsaWFuY2UgcHJvYmxlbXMgZm91bmQgZHVyaW5nIHBhcnNpbmcuICBUaGUgZW1haWwgcGFja2FnZSB0cmllcyB0bworICAgICAgYmUgY29tcGxldGUgYWJvdXQgZGV0ZWN0aW5nIGNvbXBsaWFuY2UgaXNzdWVzLiAgU2VlIHRoZSA6bW9kOmBlcnJvcnNgCisgICAgICBtb2R1bGUgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGUgdHlwZXMgb2YgZGVmZWN0cyB0aGF0IG1heSBiZSByZXBvcnRlZC4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBtYXhfY291bnQKKworICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGhlYWRlcnMgb2YgdGhpcyB0eXBlIHRoYXQgY2FuIGhhdmUgdGhlIHNhbWUKKyAgICAgIGBgbmFtZWBgLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBtZWFucyB1bmxpbWl0ZWQuICBUaGUgYGBCYXNlSGVhZGVyYGAgdmFsdWUKKyAgICAgIGZvciB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYDsgaXQgaXMgZXhwZWN0ZWQgdGhhdCBzcGVjaWFsaXplZCBoZWFkZXIKKyAgICAgIGNsYXNzZXMgd2lsbCBvdmVycmlkZSB0aGlzIHZhbHVlIGFzIG5lZWRlZC4KKworICAgYGBCYXNlSGVhZGVyYGAgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZCwgd2hpY2ggaXMgY2FsbGVkIGJ5IHRoZQorICAgZW1haWwgbGlicmFyeSBjb2RlIGFuZCBzaG91bGQgbm90IGluIGdlbmVyYWwgYmUgY2FsbGVkIGJ5IGFwcGxpY2F0aW9uCisgICBwcm9ncmFtczoKKworICAgLi4gbWV0aG9kOjogZm9sZCgqLCBwb2xpY3kpCisKKyAgICAgIFJldHVybiBhIHN0cmluZyBjb250YWluaW5nIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5saW5lc2VwYAorICAgICAgY2hhcmFjdGVycyBhcyByZXF1aXJlZCB0byBjb3JyZWN0bHkgZm9sZCB0aGUgaGVhZGVyIGFjY29yZGluZworICAgICAgdG8gKnBvbGljeSouICBBIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgb2YKKyAgICAgIGBgOGJpdGBgIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIGBgN2JpdGBgLCBzaW5jZSBzdHJpbmdzCisgICAgICBtYXkgbm90IGNvbnRhaW4gYmluYXJ5IGRhdGEuCisKKworICAgYGBCYXNlSGVhZGVyYGAgYnkgaXRzZWxmIGNhbm5vdCBiZSB1c2VkIHRvIGNyZWF0ZSBhIGhlYWRlciBvYmplY3QuICBJdAorICAgZGVmaW5lcyBhIHByb3RvY29sIHRoYXQgZWFjaCBzcGVjaWFsaXplZCBoZWFkZXIgY29vcGVyYXRlcyB3aXRoIGluIG9yZGVyIHRvCisgICBwcm9kdWNlIHRoZSBoZWFkZXIgb2JqZWN0LiAgU3BlY2lmaWNhbGx5LCBgYEJhc2VIZWFkZXJgYCByZXF1aXJlcyB0aGF0CisgICB0aGUgc3BlY2lhbGl6ZWQgY2xhc3MgcHJvdmlkZSBhIDpmdW5jOmBjbGFzc21ldGhvZGAgbmFtZWQgYGBwYXJzZWBgLiAgVGhpcworICAgbWV0aG9kIGlzIGNhbGxlZCBhcyBmb2xsb3dzOjoKKworICAgICAgIHBhcnNlKHN0cmluZywga3dkcykKKworICAgYGBrd2RzYGAgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgb25lIHByZS1pbml0aWFsaXplZCBrZXksIGBgZGVmZWN0c2BgLgorICAgYGBkZWZlY3RzYGAgaXMgYW4gZW1wdHkgbGlzdC4gIFRoZSBwYXJzZSBtZXRob2Qgc2hvdWxkIGFwcGVuZCBhbnkgZGV0ZWN0ZWQKKyAgIGRlZmVjdHMgdG8gdGhpcyBsaXN0LiAgT24gcmV0dXJuLCB0aGUgYGBrd2RzYGAgZGljdGlvbmFyeSAqbXVzdCogY29udGFpbgorICAgdmFsdWVzIGZvciBhdCBsZWFzdCB0aGUga2V5cyBgYGRlY29kZWRgYCBhbmQgYGBkZWZlY3RzYGAuICBgYGRlY29kZWRgYAorICAgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdmFsdWUgZm9yIHRoZSBoZWFkZXIgKHRoYXQgaXMsIHRoZSBoZWFkZXIgdmFsdWUgZnVsbHkKKyAgIGRlY29kZWQgdG8gdW5pY29kZSkuICBUaGUgcGFyc2UgbWV0aG9kIHNob3VsZCBhc3N1bWUgdGhhdCAqc3RyaW5nKiBtYXkKKyAgIGNvbnRhaW4gdHJhbnNwb3J0IGVuY29kZWQgcGFydHMsIGJ1dCBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhbGwgdmFsaWQKKyAgIHVuaWNvZGUgY2hhcmFjdGVycyBhcyB3ZWxsIHNvIHRoYXQgaXQgY2FuIHBhcnNlIHVuLWVuY29kZWQgaGVhZGVyIHZhbHVlcy4KKworICAgYGBCYXNlSGVhZGVyYGAncyBgYF9fbmV3X19gYCB0aGVuIGNyZWF0ZXMgdGhlIGhlYWRlciBpbnN0YW5jZSwgYW5kIGNhbGxzIGl0cworICAgYGBpbml0YGAgbWV0aG9kLiAgVGhlIHNwZWNpYWxpemVkIGNsYXNzIG9ubHkgbmVlZHMgdG8gcHJvdmlkZSBhbiBgYGluaXRgYAorICAgbWV0aG9kIGlmIGl0IHdpc2hlcyB0byBzZXQgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIGJleW9uZCB0aG9zZSBwcm92aWRlZCBieQorICAgYGBCYXNlSGVhZGVyYGAgaXRzZWxmLiAgU3VjaCBhbiBgYGluaXRgYCBtZXRob2Qgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOjoKKworICAgICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgICAgc2VsZi5fbXlhdHRyID0ga3cucG9wKCdteWF0dHInKQorICAgICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgIFRoYXQgaXMsIGFueXRoaW5nIGV4dHJhIHRoYXQgdGhlIHNwZWNpYWxpemVkIGNsYXNzIHB1dHMgaW4gdG8gdGhlIGBga3dkc2BgCisgICBkaWN0aW9uYXJ5IHNob3VsZCBiZSByZW1vdmVkIGFuZCBoYW5kbGVkLCBhbmQgdGhlIHJlbWFpbmluZyBjb250ZW50cyBvZgorICAgYGBrd2BgIChhbmQgYGBhcmdzYGApIHBhc3NlZCB0byB0aGUgYGBCYXNlSGVhZGVyYGAgYGBpbml0YGAgbWV0aG9kLgorCisKKy4uIGNsYXNzOjogVW5zdHJ1Y3R1cmVkSGVhZGVyCisKKyAgIEFuICJ1bnN0cnVjdHVyZWQiIGhlYWRlciBpcyB0aGUgZGVmYXVsdCB0eXBlIG9mIGhlYWRlciBpbiA6cmZjOmA1MzIyYC4KKyAgIEFueSBoZWFkZXIgdGhhdCBkb2VzIG5vdCBoYXZlIGEgc3BlY2lmaWVkIHN5bnRheCBpcyB0cmVhdGVkIGFzCisgICB1bnN0cnVjdHVyZWQuICBUaGUgY2xhc3NpYyBleGFtcGxlIG9mIGFuIHVuc3RydWN0dXJlZCBoZWFkZXIgaXMgdGhlCisgICA6bWFpbGhlYWRlcjpgU3ViamVjdGAgaGVhZGVyLgorCisgICBJbiA6cmZjOmA1MzIyYCwgYW4gdW5zdHJ1Y3R1cmVkIGhlYWRlciBpcyBhIHJ1biBvZiBhcmJpdHJhcnkgdGV4dCBpbiB0aGUKKyAgIEFTQ0lJIGNoYXJhY3RlciBzZXQuICA6cmZjOmAyMDQ3YCwgaG93ZXZlciwgaGFzIGFuIDpyZmM6YDUzMjJgIGNvbXBhdGlibGUKKyAgIG1lY2hhbmlzbSBmb3IgZW5jb2Rpbmcgbm9uLUFTQ0lJIHRleHQgYXMgQVNDSUkgY2hhcmFjdGVycyB3aXRoaW4gYSBoZWFkZXIKKyAgIHZhbHVlLiAgV2hlbiBhICp2YWx1ZSogY29udGFpbmluZyBlbmNvZGVkIHdvcmRzIGlzIHBhc3NlZCB0byB0aGUKKyAgIGNvbnN0cnVjdG9yLCB0aGUgYGBVbnN0cnVjdHVyZWRIZWFkZXJgYCBwYXJzZXIgY29udmVydHMgc3VjaCBlbmNvZGVkIHdvcmRzCisgICBiYWNrIGluIHRvIHRoZSBvcmlnaW5hbCB1bmljb2RlLCBmb2xsb3dpbmcgdGhlIDpyZmM6YDIwNDdgIHJ1bGVzIGZvcgorICAgdW5zdHJ1Y3R1cmVkIHRleHQuICBUaGUgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBhdHRlbXB0IHRvIGRlY29kZSBjZXJ0YWluCisgICBub24tY29tcGxpYW50IGVuY29kZWQgd29yZHMuICBEZWZlY3RzIGFyZSByZWdpc3RlcmVkIGluIHN1Y2ggY2FzZXMsIGFzIHdlbGwKKyAgIGFzIGRlZmVjdHMgZm9yIGlzc3VlcyBzdWNoIGFzIGludmFsaWQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGVuY29kZWQgd29yZHMgb3IKKyAgIHRoZSBub24tZW5jb2RlZCB0ZXh0LgorCisgICBUaGlzIGhlYWRlciB0eXBlIHByb3ZpZGVzIG5vIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KKworCisuLiBjbGFzczo6IERhdGVIZWFkZXIKKworICAgOnJmYzpgNTMyMmAgc3BlY2lmaWVzIGEgdmVyeSBzcGVjaWZpYyBmb3JtYXQgZm9yIGRhdGVzIHdpdGhpbiBlbWFpbCBoZWFkZXJzLgorICAgVGhlIGBgRGF0ZUhlYWRlcmBgIHBhcnNlciByZWNvZ25pemVzIHRoYXQgZGF0ZSBmb3JtYXQsIGFzIHdlbGwgYXMKKyAgIHJlY29nbml6aW5nIGEgbnVtYmVyIG9mIHZhcmlhbnQgZm9ybXMgdGhhdCBhcmUgc29tZXRpbWVzIGZvdW5kICJpbiB0aGUKKyAgIHdpbGQiLgorCisgICBUaGlzIGhlYWRlciB0eXBlIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgorCisgICAuLiBhdHRyaWJ1dGU6OiBkYXRldGltZQorCisgICAgICBJZiB0aGUgaGVhZGVyIHZhbHVlIGNhbiBiZSByZWNvZ25pemVkIGFzIGEgdmFsaWQgZGF0ZSBvZiBvbmUgZm9ybSBvcgorICAgICAgYW5vdGhlciwgdGhpcyBhdHRyaWJ1dGUgd2lsbCBjb250YWluIGEgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgCisgICAgICBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhhdCBkYXRlLiAgSWYgdGhlIHRpbWV6b25lIG9mIHRoZSBpbnB1dCBkYXRlIGlzCisgICAgICBzcGVjaWZpZWQgYXMgYGAtMDAwMGBgIChpbmRpY2F0aW5nIGl0IGlzIGluIFVUQyBidXQgY29udGFpbnMgbm8KKyAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzb3VyY2UgdGltZXpvbmUpLCB0aGVuIDphdHRyOmAuZGF0ZXRpbWVgIHdpbGwgYmUgYQorICAgICAgbmFpdmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgLiAgSWYgYSBzcGVjaWZpYyB0aW1lem9uZSBvZmZzZXQgaXMKKyAgICAgIGZvdW5kIChpbmNsdWRpbmcgYCswMDAwYCksIHRoZW4gOmF0dHI6YC5kYXRldGltZWAgd2lsbCBjb250YWluIGFuIGF3YXJlCisgICAgICBgYGRhdGV0aW1lYGAgdGhhdCB1c2VzIDpjbGFzczpgZGF0ZXRpbWUudGltZXpvbmVgIHRvIHJlY29yZCB0aGUgdGltZXpvbmUKKyAgICAgIG9mZnNldC4KKworICAgVGhlIGBgZGVjb2RlZGBgIHZhbHVlIG9mIHRoZSBoZWFkZXIgaXMgZGV0ZXJtaW5lZCBieSBmb3JtYXR0aW5nIHRoZQorICAgYGBkYXRldGltZWBgIGFjY29yZGluZyB0byB0aGUgOnJmYzpgNTMyMmAgcnVsZXM7IHRoYXQgaXMsIGl0IGlzIHNldCB0bzo6CisKKyAgICAgICBlbWFpbC51dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5kYXRldGltZSkKKworICAgV2hlbiBjcmVhdGluZyBhIGBgRGF0ZUhlYWRlcmBgLCAqdmFsdWUqIG1heSBiZQorICAgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGluc3RhbmNlLiAgVGhpcyBtZWFucywgZm9yIGV4YW1wbGUsIHRoYXQKKyAgIHRoZSBmb2xsb3dpbmcgY29kZSBpcyB2YWxpZCBhbmQgZG9lcyB3aGF0IG9uZSB3b3VsZCBleHBlY3Q6OgorCisgICAgICAgbXNnWydEYXRlJ10gID0gZGF0ZXRpbWUoMjAxMSwgNywgMTUsIDIxKQorCisgICBCZWNhdXNlIHRoaXMgaXMgYSBuYWl2ZSBgYGRhdGV0aW1lYGAgaXQgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhIFVUQworICAgdGltZXN0YW1wLCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZSB3aWxsIGhhdmUgYSB0aW1lem9uZSBvZiBgYC0wMDAwYGAuICBNdWNoCisgICBtb3JlIHVzZWZ1bCBpcyB0byB1c2UgdGhlIDpmdW5jOmB+ZW1haWwudXRpbHMubG9jYWx0aW1lYCBmdW5jdGlvbiBmcm9tIHRoZQorICAgOm1vZDpgfmVtYWlsLnV0aWxzYCBtb2R1bGU6OgorCisgICAgICAgbXNnWydEYXRlJ10gPSB1dGlscy5sb2NhbHRpbWUoKQorCisgICBUaGlzIGV4YW1wbGUgc2V0cyB0aGUgZGF0ZSBoZWFkZXIgdG8gdGhlIGN1cnJlbnQgdGltZSBhbmQgZGF0ZSB1c2luZworICAgdGhlIGN1cnJlbnQgdGltZXpvbmUgb2Zmc2V0LgorCisKKy4uIGNsYXNzOjogQWRkcmVzc0hlYWRlcgorCisgICBBZGRyZXNzIGhlYWRlcnMgYXJlIG9uZSBvZiB0aGUgbW9zdCBjb21wbGV4IHN0cnVjdHVyZWQgaGVhZGVyIHR5cGVzLgorICAgVGhlIGBgQWRkcmVzc0hlYWRlcmBgIGNsYXNzIHByb3ZpZGVzIGEgZ2VuZXJpYyBpbnRlcmZhY2UgdG8gYW55IGFkZHJlc3MKKyAgIGhlYWRlci4KKworICAgVGhpcyBoZWFkZXIgdHlwZSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKKworCisgICAuLiBhdHRyaWJ1dGU6OiBncm91cHMKKworICAgICAgQSB0dXBsZSBvZiA6Y2xhc3M6YC5Hcm91cGAgb2JqZWN0cyBlbmNvZGluZyB0aGUKKyAgICAgIGFkZHJlc3NlcyBhbmQgZ3JvdXBzIGZvdW5kIGluIHRoZSBoZWFkZXIgdmFsdWUuICBBZGRyZXNzZXMgdGhhdCBhcmUKKyAgICAgIG5vdCBwYXJ0IG9mIGEgZ3JvdXAgYXJlIHJlcHJlc2VudGVkIGluIHRoaXMgbGlzdCBhcyBzaW5nbGUtYWRkcmVzcworICAgICAgYGBHcm91cHNgYCB3aG9zZSA6YXR0cjpgfi5Hcm91cC5kaXNwbGF5X25hbWVgIGlzIGBgTm9uZWBgLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGFkZHJlc3NlcworCisgICAgICBBIHR1cGxlIG9mIDpjbGFzczpgLkFkZHJlc3NgIG9iamVjdHMgZW5jb2RpbmcgYWxsCisgICAgICBvZiB0aGUgaW5kaXZpZHVhbCBhZGRyZXNzZXMgZnJvbSB0aGUgaGVhZGVyIHZhbHVlLiAgSWYgdGhlIGhlYWRlciB2YWx1ZQorICAgICAgY29udGFpbnMgYW55IGdyb3VwcywgdGhlIGluZGl2aWR1YWwgYWRkcmVzc2VzIGZyb20gdGhlIGdyb3VwIGFyZSBpbmNsdWRlZAorICAgICAgaW4gdGhlIGxpc3QgYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBncm91cCBvY2N1cnMgaW4gdGhlIHZhbHVlICh0aGF0IGlzLAorICAgICAgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzIGlzICJmbGF0dGVuZWQiIGludG8gYSBvbmUgZGltZW5zaW9uYWwgbGlzdCkuCisKKyAgIFRoZSBgYGRlY29kZWRgYCB2YWx1ZSBvZiB0aGUgaGVhZGVyIHdpbGwgaGF2ZSBhbGwgZW5jb2RlZCB3b3JkcyBkZWNvZGVkIHRvCisgICB1bmljb2RlLiAgOmNsYXNzOmB+ZW5jb2RpbmdzLmlkbmFgIGVuY29kZWQgZG9tYWluIG5hbWVzIGFyZSBhbHNvIGRlY29kZWQgdG8gdW5pY29kZS4gIFRoZQorICAgYGBkZWNvZGVkYGAgdmFsdWUgaXMgc2V0IGJ5IDphdHRyOmB+c3RyLmpvaW5gXCBpbmcgdGhlIDpjbGFzczpgc3RyYCB2YWx1ZSBvZgorICAgdGhlIGVsZW1lbnRzIG9mIHRoZSBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSB3aXRoIGBgJywgJ2BgLgorCisgICBBIGxpc3Qgb2YgOmNsYXNzOmAuQWRkcmVzc2AgYW5kIDpjbGFzczpgLkdyb3VwYCBvYmplY3RzIGluIGFueSBjb21iaW5hdGlvbgorICAgbWF5IGJlIHVzZWQgdG8gc2V0IHRoZSB2YWx1ZSBvZiBhbiBhZGRyZXNzIGhlYWRlci4gIGBgR3JvdXBgYCBvYmplY3RzIHdob3NlCisgICBgYGRpc3BsYXlfbmFtZWBgIGlzIGBgTm9uZWBgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgc2luZ2xlIGFkZHJlc3Nlcywgd2hpY2gKKyAgIGFsbG93cyBhbiBhZGRyZXNzIGxpc3QgdG8gYmUgY29waWVkIHdpdGggZ3JvdXBzIGludGFjdCBieSB1c2luZyB0aGUgbGlzdAorICAgb2J0YWluZWQgYGBncm91cHNgYCBhdHRyaWJ1dGUgb2YgdGhlIHNvdXJjZSBoZWFkZXIuCisKKworLi4gY2xhc3M6OiBTaW5nbGVBZGRyZXNzSGVhZGVyCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmNsYXNzOmAuQWRkcmVzc0hlYWRlcmAgdGhhdCBhZGRzIG9uZQorICAgYWRkaXRpb25hbCBhdHRyaWJ1dGU6CisKKworICAgLi4gYXR0cmlidXRlOjogYWRkcmVzcworCisgICAgICBUaGUgc2luZ2xlIGFkZHJlc3MgZW5jb2RlZCBieSB0aGUgaGVhZGVyIHZhbHVlLiAgSWYgdGhlIGhlYWRlciB2YWx1ZQorICAgICAgYWN0dWFsbHkgY29udGFpbnMgbW9yZSB0aGFuIG9uZSBhZGRyZXNzICh3aGljaCB3b3VsZCBiZSBhIHZpb2xhdGlvbiBvZgorICAgICAgdGhlIFJGQyB1bmRlciB0aGUgZGVmYXVsdCA6bW9kOmBwb2xpY3lgKSwgYWNjZXNzaW5nIHRoaXMgYXR0cmlidXRlIHdpbGwKKyAgICAgIHJlc3VsdCBpbiBhIDpleGM6YFZhbHVlRXJyb3JgLgorCisKK01hbnkgb2YgdGhlIGFib3ZlIGNsYXNzZXMgYWxzbyBoYXZlIGEgYGBVbmlxdWVgYCB2YXJpYW50IChmb3IgZXhhbXBsZSwKK2BgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyYGApLiAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IGluIHRoZSBgYFVuaXF1ZWBgCit2YXJpYW50LCA6YXR0cjpgfi5CYXNlSGVhZGVyLm1heF9jb3VudGAgaXMgc2V0IHRvIDEuCisKKworLi4gY2xhc3M6OiBNSU1FVmVyc2lvbkhlYWRlcgorCisgICBUaGVyZSBpcyByZWFsbHkgb25seSBvbmUgdmFsaWQgdmFsdWUgZm9yIHRoZSA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYAorICAgaGVhZGVyLCBhbmQgdGhhdCBpcyBgYDEuMGBgLiAgRm9yIGZ1dHVyZSBwcm9vZmluZywgdGhpcyBoZWFkZXIgY2xhc3MKKyAgIHN1cHBvcnRzIG90aGVyIHZhbGlkIHZlcnNpb24gbnVtYmVycy4gIElmIGEgdmVyc2lvbiBudW1iZXIgaGFzIGEgdmFsaWQgdmFsdWUKKyAgIHBlciA6cmZjOmAyMDQ1YCwgdGhlbiB0aGUgaGVhZGVyIG9iamVjdCB3aWxsIGhhdmUgbm9uLWBgTm9uZWBgIHZhbHVlcyBmb3IKKyAgIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgorCisgICAgICBUaGUgdmVyc2lvbiBudW1iZXIgYXMgYSBzdHJpbmcsIHdpdGggYW55IHdoaXRlc3BhY2UgYW5kL29yIGNvbW1lbnRzCisgICAgICByZW1vdmVkLgorCisgICAuLiBhdHRyaWJ1dGU6OiBtYWpvcgorCisgICAgICBUaGUgbWFqb3IgdmVyc2lvbiBudW1iZXIgYXMgYW4gaW50ZWdlcgorCisgICAuLiBhdHRyaWJ1dGU6OiBtaW5vcgorCisgICAgICBUaGUgbWlub3IgdmVyc2lvbiBudW1iZXIgYXMgYW4gaW50ZWdlcgorCisKKy4uIGNsYXNzOjogUGFyYW1ldGVyaXplZE1JTUVIZWFkZXIKKworICAgIE1PTUUgaGVhZGVycyBhbGwgc3RhcnQgd2l0aCB0aGUgcHJlZml4ICdDb250ZW50LScuICBFYWNoIHNwZWNpZmljIGhlYWRlciBoYXMKKyAgICBhIGNlcnRhaW4gdmFsdWUsIGRlc2NyaWJlZCB1bmRlciB0aGUgY2xhc3MgZm9yIHRoYXQgaGVhZGVyLiAgU29tZSBjYW4KKyAgICBhbHNvIHRha2UgYSBsaXN0IG9mIHN1cHBsZW1lbnRhbCBwYXJhbWV0ZXJzLCB3aGljaCBoYXZlIGEgY29tbW9uIGZvcm1hdC4KKyAgICBUaGlzIGNsYXNzIHNlcnZlcyBhcyBhIGJhc2UgZm9yIGFsbCB0aGUgTUlNRSBoZWFkZXJzIHRoYXQgdGFrZSBwYXJhbWV0ZXJzLgorCisgICAgLi4gYXR0cmlidXRlOjogcGFyYW1zCisKKyAgICAgICBBIGRpY3Rpb25hcnkgbWFwcGluZyBwYXJhbWV0ZXIgbmFtZXMgdG8gcGFyYW1ldGVyIHZhbHVlcy4KKworCisuLiBjbGFzczo6IENvbnRlbnRUeXBlSGVhZGVyCisKKyAgICBBIDpjbGFzczpgUGFyYW1ldGVyaXplZE1JTUVIaGVhZGVyYCBjbGFzcyB0aGF0IGhhbmRsZXMgdGhlCisgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorCisgICAgLi4gYXR0cmlidXRlOjogY29udGVudF90eXBlCisKKyAgICAgICBUaGUgY29udGVudCB0eXBlIHN0cmluZywgaW4gdGhlIGZvcm0gYGBtYWludHlwZS9zdWJ0eXBlYGAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBtYWludHlwZQorCisgICAgLi4gYXR0cmlidXRlOjogc3VidHlwZQorCisKKy4uIGNsYXNzOjogQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyCisKKyAgICBBIDpjbGFzczpgUGFyYW1ldGVyaXplZE1JTUVIaGVhZGVyYCBjbGFzcyB0aGF0IGhhbmRsZXMgdGhlCisgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlci4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGNvbnRlbnQtZGlzcG9zaXRpb24KKworICAgICAgIGBgaW5saW5lYGAgYW5kIGBgYXR0YWNobWVudGBgIGFyZSB0aGUgb25seSB2YWxpZCB2YWx1ZXMgaW4gY29tbW9uIHVzZS4KKworCisuLiBjbGFzczo6IENvbnRlbnRUcmFuc2ZlckVuY29kaW5nCisKKyAgIEhhbmRsZXMgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGN0ZQorCisgICAgICBWYWxpZCB2YWx1ZXMgYXJlIGBgN2JpdGBgLCBgYDhiaXRgYCwgYGBiYXNlNjRgYCwgYW5kCisgICAgICBgYHF1b3RlZC1wcmludGFibGVgYC4gIFNlZSA6cmZjOmAyMDQ1YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCisKKy4uIGNsYXNzOjogSGVhZGVyUmVnaXN0cnkoYmFzZV9jbGFzcz1CYXNlSGVhZGVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfY2xhc3M9VW5zdHJ1Y3R1cmVkSGVhZGVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9kZWZhdWx0X21hcD1UcnVlKQorCisgICAgVGhpcyBpcyB0aGUgZmFjdG9yeSB1c2VkIGJ5IDpjbGFzczpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeWAgYnkgZGVmYXVsdC4KKyAgICBgYEhlYWRlclJlZ2lzdHJ5YGAgYnVpbGRzIHRoZSBjbGFzcyB1c2VkIHRvIGNyZWF0ZSBhIGhlYWRlciBpbnN0YW5jZQorICAgIGR5bmFtaWNhbGx5LCB1c2luZyAqYmFzZV9jbGFzcyogYW5kIGEgc3BlY2lhbGl6ZWQgY2xhc3MgcmV0cmlldmVkIGZyb20gYQorICAgIHJlZ2lzdHJ5IHRoYXQgaXQgaG9sZHMuICBXaGVuIGEgZ2l2ZW4gaGVhZGVyIG5hbWUgZG9lcyBub3QgYXBwZWFyIGluIHRoZQorICAgIHJlZ2lzdHJ5LCB0aGUgY2xhc3Mgc3BlY2lmaWVkIGJ5ICpkZWZhdWx0X2NsYXNzKiBpcyB1c2VkIGFzIHRoZSBzcGVjaWFsaXplZAorICAgIGNsYXNzLiAgV2hlbiAqdXNlX2RlZmF1bHRfbWFwKiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCB0aGUgc3RhbmRhcmQKKyAgICBtYXBwaW5nIG9mIGhlYWRlciBuYW1lcyB0byBjbGFzc2VzIGlzIGNvcGllZCBpbiB0byB0aGUgcmVnaXN0cnkgZHVyaW5nCisgICAgaW5pdGlhbGl6YXRpb24uICAqYmFzZV9jbGFzcyogaXMgYWx3YXlzIHRoZSBsYXN0IGNsYXNzIGluIHRoZSBnZW5lcmF0ZWQKKyAgICBjbGFzcydzIGBgX19iYXNlc19fYGAgbGlzdC4KKworICAgIFRoZSBkZWZhdWx0IG1hcHBpbmdzIGFyZToKKworICAgICAgOnN1YmplY3Q6ICAgICAgICAgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyCisgICAgICA6ZGF0ZTogICAgICAgICAgICBVbmlxdWVEYXRlSGVhZGVyCisgICAgICA6cmVzZW50LWRhdGU6ICAgICBEYXRlSGVhZGVyCisgICAgICA6b3JpZy1kYXRlOiAgICAgICBVbmlxdWVEYXRlSGVhZGVyCisgICAgICA6c2VuZGVyOiAgICAgICAgICBVbmlxdWVTaW5nbGVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LXNlbmRlcjogICBTaW5nbGVBZGRyZXNzSGVhZGVyCisgICAgICA6dG86ICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LXRvOiAgICAgICBBZGRyZXNzSGVhZGVyCisgICAgICA6Y2M6ICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LWNjOiAgICAgICBBZGRyZXNzSGVhZGVyCisgICAgICA6ZnJvbTogICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LWZyb206ICAgICBBZGRyZXNzSGVhZGVyCisgICAgICA6cmVwbHktdG86ICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisKKyAgICBgYEhlYWRlclJlZ2lzdHJ5YGAgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworCisgICAgLi4gbWV0aG9kOjogbWFwX3RvX3R5cGUoc2VsZiwgbmFtZSwgY2xzKQorCisgICAgICAgKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgdG8gYmUgbWFwcGVkLiAgSXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8KKyAgICAgICBsb3dlciBjYXNlIGluIHRoZSByZWdpc3RyeS4gICpjbHMqIGlzIHRoZSBzcGVjaWFsaXplZCBjbGFzcyB0byBiZSB1c2VkLAorICAgICAgIGFsb25nIHdpdGggKmJhc2VfY2xhc3MqLCB0byBjcmVhdGUgdGhlIGNsYXNzIHVzZWQgdG8gaW5zdGFudGlhdGUgaGVhZGVycworICAgICAgIHRoYXQgbWF0Y2ggKm5hbWUqLgorCisKKyAgICAuLiBtZXRob2Q6OiBfX2dldGl0ZW1fXyhuYW1lKQorCisgICAgICAgQ29uc3RydWN0IGFuZCByZXR1cm4gYSBjbGFzcyB0byBoYW5kbGUgY3JlYXRpbmcgYSAqbmFtZSogaGVhZGVyLgorCisKKyAgICAuLiBtZXRob2Q6OiBfX2NhbGxfXyhuYW1lLCB2YWx1ZSkKKworICAgICAgIFJldHJpZXZlcyB0aGUgc3BlY2lhbGl6ZWQgaGVhZGVyIGFzc29jaWF0ZWQgd2l0aCAqbmFtZSogZnJvbSB0aGUKKyAgICAgICByZWdpc3RyeSAodXNpbmcgKmRlZmF1bHRfY2xhc3MqIGlmICpuYW1lKiBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlCisgICAgICAgcmVnaXN0cnkpIGFuZCBjb21wb3NlcyBpdCB3aXRoICpiYXNlX2NsYXNzKiB0byBwcm9kdWNlIGEgY2xhc3MsCisgICAgICAgY2FsbHMgdGhlIGNvbnN0cnVjdGVkIGNsYXNzJ3MgY29uc3RydWN0b3IsIHBhc3NpbmcgaXQgdGhlIHNhbWUKKyAgICAgICBhcmd1bWVudCBsaXN0LCBhbmQgZmluYWxseSByZXR1cm5zIHRoZSBjbGFzcyBpbnN0YW5jZSBjcmVhdGVkIHRoZXJlYnkuCisKKworVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSB0aGUgY2xhc3NlcyB1c2VkIHRvIHJlcHJlc2VudCBkYXRhIHBhcnNlZCBmcm9tCitzdHJ1Y3R1cmVkIGhlYWRlcnMgYW5kIGNhbiwgaW4gZ2VuZXJhbCwgYmUgdXNlZCBieSBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIHRvCitjb25zdHJ1Y3Qgc3RydWN0dXJlZCB2YWx1ZXMgdG8gYXNzaWduIHRvIHNwZWNpZmljIGhlYWRlcnMuCisKKworLi4gY2xhc3M6OiBBZGRyZXNzKGRpc3BsYXlfbmFtZT0nJywgdXNlcm5hbWU9JycsIGRvbWFpbj0nJywgYWRkcl9zcGVjPU5vbmUpCisKKyAgIFRoZSBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBhbiBlbWFpbCBhZGRyZXNzLiAgVGhlIGdlbmVyYWwgZm9ybSBvZiBhbgorICAgYWRkcmVzcyBpczo6CisKKyAgICAgIFtkaXNwbGF5X25hbWVdIDx1c2VybmFtZUBkb21haW4+CisKKyAgIG9yOjoKKworICAgICAgdXNlcm5hbWVAZG9tYWluCisKKyAgIHdoZXJlIGVhY2ggcGFydCBtdXN0IGNvbmZvcm0gdG8gc3BlY2lmaWMgc3ludGF4IHJ1bGVzIHNwZWxsZWQgb3V0IGluCisgICA6cmZjOmA1MzIyYC4KKworICAgQXMgYSBjb252ZW5pZW5jZSAqYWRkcl9zcGVjKiBjYW4gYmUgc3BlY2lmaWVkIGluc3RlYWQgb2YgKnVzZXJuYW1lKiBhbmQKKyAgICpkb21haW4qLCBpbiB3aGljaCBjYXNlICp1c2VybmFtZSogYW5kICpkb21haW4qIHdpbGwgYmUgcGFyc2VkIGZyb20gdGhlCisgICAqYWRkcl9zcGVjKi4gIEFuICphZGRyX3NwZWMqIG11c3QgYmUgYSBwcm9wZXJseSBSRkMgcXVvdGVkIHN0cmluZzsgaWYgaXQgaXMKKyAgIG5vdCBgYEFkZHJlc3NgYCB3aWxsIHJhaXNlIGFuIGVycm9yLiAgVW5pY29kZSBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkIGFuZAorICAgd2lsbCBiZSBwcm9wZXJ0eSBlbmNvZGVkIHdoZW4gc2VyaWFsaXplZC4gIEhvd2V2ZXIsIHBlciB0aGUgUkZDcywgdW5pY29kZSBpcworICAgKm5vdCogYWxsb3dlZCBpbiB0aGUgdXNlcm5hbWUgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KKworICAgLi4gYXR0cmlidXRlOjogZGlzcGxheV9uYW1lCisKKyAgICAgIFRoZSBkaXNwbGF5IG5hbWUgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcywgaWYgYW55LCB3aXRoIGFsbCBxdW90aW5nCisgICAgICByZW1vdmVkLiAgSWYgdGhlIGFkZHJlc3MgZG9lcyBub3QgaGF2ZSBhIGRpc3BsYXkgbmFtZSwgdGhpcyBhdHRyaWJ1dGUKKyAgICAgIHdpbGwgYmUgYW4gZW1wdHkgc3RyaW5nLgorCisgICAuLiBhdHRyaWJ1dGU6OiB1c2VybmFtZQorCisgICAgICBUaGUgYGB1c2VybmFtZWBgIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MsIHdpdGggYWxsIHF1b3RpbmcgcmVtb3ZlZC4KKworICAgLi4gYXR0cmlidXRlOjogZG9tYWluCisKKyAgICAgIFRoZSBgYGRvbWFpbmBgIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGFkZHJfc3BlYworCisgICAgICBUaGUgYGB1c2VybmFtZUBkb21haW5gYCBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLCBjb3JyZWN0bHkgcXVvdGVkCisgICAgICBmb3IgdXNlIGFzIGEgYmFyZSBhZGRyZXNzICh0aGUgc2Vjb25kIGZvcm0gc2hvd24gYWJvdmUpLiAgVGhpcworICAgICAgYXR0cmlidXRlIGlzIG5vdCBtdXRhYmxlLgorCisgICAuLiBtZXRob2Q6OiBfX3N0cl9fKCkKKworICAgICAgVGhlIGBgc3RyYGAgdmFsdWUgb2YgdGhlIG9iamVjdCBpcyB0aGUgYWRkcmVzcyBxdW90ZWQgYWNjb3JkaW5nIHRvCisgICAgICA6cmZjOmA1MzIyYCBydWxlcywgYnV0IHdpdGggbm8gQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZyBvZiBhbnkgbm9uLUFTQ0lJCisgICAgICBjaGFyYWN0ZXJzLgorCisgICBUbyBzdXBwb3J0IFNNVFAgKDpyZmM6YDUzMjFgKSwgYGBBZGRyZXNzYGAgaGFuZGxlcyBvbmUgc3BlY2lhbCBjYXNlOiBpZgorICAgYGB1c2VybmFtZWBgIGFuZCBgYGRvbWFpbmBgIGFyZSBib3RoIHRoZSBlbXB0eSBzdHJpbmcgKG9yIGBgTm9uZWBgKSwgdGhlbgorICAgdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgYGBBZGRyZXNzYGAgaXMgYGA8PmBgLgorCisKKy4uIGNsYXNzOjogR3JvdXAoZGlzcGxheV9uYW1lPU5vbmUsIGFkZHJlc3Nlcz1Ob25lKQorCisgICBUaGUgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgYW4gYWRkcmVzcyBncm91cC4gIFRoZSBnZW5lcmFsIGZvcm0gb2YgYW4KKyAgIGFkZHJlc3MgZ3JvdXAgaXM6OgorCisgICAgIGRpc3BsYXlfbmFtZTogW2FkZHJlc3MtbGlzdF07CisKKyAgIEFzIGEgY29udmVuaWVuY2UgZm9yIHByb2Nlc3NpbmcgbGlzdHMgb2YgYWRkcmVzc2VzIHRoYXQgY29uc2lzdCBvZiBhIG1peHR1cmUKKyAgIG9mIGdyb3VwcyBhbmQgc2luZ2xlIGFkZHJlc3NlcywgYSBgYEdyb3VwYGAgbWF5IGFsc28gYmUgdXNlZCB0byByZXByZXNlbnQKKyAgIHNpbmdsZSBhZGRyZXNzZXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSBncm91cCBieSBzZXR0aW5nICpkaXNwbGF5X25hbWUqIHRvCisgICBgYE5vbmVgYCBhbmQgcHJvdmlkaW5nIGEgbGlzdCBvZiB0aGUgc2luZ2xlIGFkZHJlc3MgYXMgKmFkZHJlc3NlcyouCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRpc3BsYXlfbmFtZQorCisgICAgICBUaGUgYGBkaXNwbGF5X25hbWVgYCBvZiB0aGUgZ3JvdXAuICBJZiBpdCBpcyBgYE5vbmVgYCBhbmQgdGhlcmUgaXMKKyAgICAgIGV4YWN0bHkgb25lIGBgQWRkcmVzc2BgIGluIGBgYWRkcmVzc2VzYGAsIHRoZW4gdGhlIGBgR3JvdXBgYCByZXByZXNlbnRzIGEKKyAgICAgIHNpbmdsZSBhZGRyZXNzIHRoYXQgaXMgbm90IGluIGEgZ3JvdXAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGFkZHJlc3NlcworCisgICAgICBBIHBvc3NpYmx5IGVtcHR5IHR1cGxlIG9mIDpjbGFzczpgLkFkZHJlc3NgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZQorICAgICAgYWRkcmVzc2VzIGluIHRoZSBncm91cC4KKworICAgLi4gbWV0aG9kOjogX19zdHJfXygpCisKKyAgICAgIFRoZSBgYHN0cmBgIHZhbHVlIG9mIGEgYGBHcm91cGBgIGlzIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gOnJmYzpgNTMyMmAsCisgICAgICBidXQgd2l0aCBubyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIG9mIGFueSBub24tQVNDSUkgY2hhcmFjdGVycy4gIElmCisgICAgICBgYGRpc3BsYXlfbmFtZWBgIGlzIG5vbmUgYW5kIHRoZXJlIGlzIGEgc2luZ2xlIGBgQWRkcmVzc2BgIGluIHRoZQorICAgICAgYGBhZGRyZXNzZXNgYCBsaXN0LCB0aGUgYGBzdHJgYCB2YWx1ZSB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBgYHN0cmBgIG9mCisgICAgICB0aGF0IHNpbmdsZSBgYEFkZHJlc3NgYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKaW5kZXggZjY4NWU1NC4uNTlhYjQ3ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKQEAgLTExMSwxMCArMTExLDE0IEBACiAgICAgICBoZWFkZXIuIFdoZW4gYGBUcnVlYGAgYW5kIHRoZSBtZXNzYWdlIGlzIG5vdCBhIG11bHRpcGFydCwgdGhlIHBheWxvYWQgd2lsbAogICAgICAgYmUgZGVjb2RlZCBpZiB0aGlzIGhlYWRlcidzIHZhbHVlIGlzIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yIGBgYmFzZTY0YGAuCiAgICAgICBJZiBzb21lIG90aGVyIGVuY29kaW5nIGlzIHVzZWQsIG9yIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAotICAgICAgaGVhZGVyIGlzIG1pc3NpbmcsIG9yIGlmIHRoZSBwYXlsb2FkIGhhcyBib2d1cyBiYXNlNjQgZGF0YSwgdGhlIHBheWxvYWQgaXMKKyAgICAgIGhlYWRlciBpcyBtaXNzaW5nLCB0aGUgcGF5bG9hZCBpcwogICAgICAgcmV0dXJuZWQgYXMtaXMgKHVuZGVjb2RlZCkuICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJpbmFyeQogICAgICAgZGF0YS4gIElmIHRoZSBtZXNzYWdlIGlzIGEgbXVsdGlwYXJ0IGFuZCB0aGUgKmRlY29kZSogZmxhZyBpcyBgYFRydWVgYCwKLSAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuCisgICAgICB0aGVuIGBgTm9uZWBgIGlzIHJldHVybmVkLiAgSWYgdGhlIHBheWxvYWQgaXMgYmFzZTY0IGFuZCBpdCB3YXMgbm90CisgICAgICBwZXJmZWN0bHkgZm9ybWVkIChtaXNzaW5nIHBhZGRpbmcsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYmFzZTY0CisgICAgICBhbHBoYWJldCksIHRoZW4gYW4gYXBwcm9wcmlhdGUgZGVmZWN0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UncworICAgICAgZGVmZWN0IHByb3BlcnR5ICg6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RgIG9yCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RgLCByZXNwZWN0aXZlbHkpLgogCiAgICAgICBXaGVuICpkZWNvZGUqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBib2R5IGlzIHJldHVybmVkIGFzIGEgc3RyaW5nCiAgICAgICB3aXRob3V0IGRlY29kaW5nIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AuICBIb3dldmVyLApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAppbmRleCBhZTM0MGY3Li5kYjU1ODRjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdApAQCAtMTc1LDcgKzE3NSw3IEBACiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLnRleHQKIAotLi4gY2xhc3M6OiBNSU1FVGV4dChfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9J3VzLWFzY2lpJykKKy4uIGNsYXNzOjogTUlNRVRleHQoX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS50ZXh0YAogCkBAIC0xODUsNSArMTg1LDUgQEAKICAgIG1pbm9yIHR5cGUgYW5kIGRlZmF1bHRzIHRvIDptaW1ldHlwZTpgcGxhaW5gLiAgKl9jaGFyc2V0KiBpcyB0aGUgY2hhcmFjdGVyCiAgICBzZXQgb2YgdGhlIHRleHQgYW5kIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB0byB0aGUKICAgIDpjbGFzczpgfmVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0Lk1JTUVOb25NdWx0aXBhcnRgIGNvbnN0cnVjdG9yOyBpdCBkZWZhdWx0cwotICAgdG8gYGB1cy1hc2NpaWBgLiAgTm8gZ3Vlc3Npbmcgb3IgZW5jb2RpbmcgaXMgcGVyZm9ybWVkIG9uIHRoZSB0ZXh0IGRhdGEuCi0KKyAgIHRvIGBgdXMtYXNjaWlgYCBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgYGBhc2NpaWBgIGNvZGVwb2ludHMsIGFuZAorICAgYGB1dGYtOGBgIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CmluZGV4IDQ5YTU5YzAuLjZhNDM1NjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdApAQCAtNTgsMTIgKzU4LDE4IEBACiBIZXJlIGlzIHRoZSBBUEkgZm9yIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgOgogCiAKLS4uIGNsYXNzOjogRmVlZFBhcnNlcihfZmFjdG9yeT1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UpCisuLiBjbGFzczo6IEZlZWRQYXJzZXIoX2ZhY3Rvcnk9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIENyZWF0ZSBhIDpjbGFzczpgRmVlZFBhcnNlcmAgaW5zdGFuY2UuICBPcHRpb25hbCAqX2ZhY3RvcnkqIGlzIGEgbm8tYXJndW1lbnQKICAgIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSBvYmplY3QgaXMgbmVlZGVkLiAgSXQKICAgIGRlZmF1bHRzIHRvIHRoZSA6Y2xhc3M6YGVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MuCiAKKyAgIFRoZSAqcG9saWN5KiBrZXl3b3JkIHNwZWNpZmllcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0IGNvbnRyb2xzIGEKKyAgIG51bWJlciBvZiBhc3BlY3RzIG9mIHRoZSBwYXJzZXIncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdCBwb2xpY3kgbWFpbnRhaW5zCisgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKwogICAgLi4gbWV0aG9kOjogZmVlZChkYXRhKQogCiAgICAgICBGZWVkIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIHNvbWUgbW9yZSBkYXRhLiAgKmRhdGEqIHNob3VsZCBiZSBhIHN0cmluZwpAQCAtOTQsMTUgKzEwMCwxOCBAQAogVGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsCiBwcm92aWRlcyBhbiBBUEkgdGhhdCBjYW4gYmUgdXNlZCB0byBwYXJzZSBhIG1lc3NhZ2Ugd2hlbiB0aGUgY29tcGxldGUgY29udGVudHMKIG9mIHRoZSBtZXNzYWdlIGFyZSBhdmFpbGFibGUgaW4gYSBzdHJpbmcgb3IgZmlsZS4gIFRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgCi1tb2R1bGUgYWxzbyBwcm92aWRlcyBhIHNlY29uZCBjbGFzcywgY2FsbGVkIDpjbGFzczpgSGVhZGVyUGFyc2VyYCB3aGljaCBjYW4gYmUKLXVzZWQgaWYgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgaGVhZGVycyBvZiB0aGUgbWVzc2FnZS4KLTpjbGFzczpgSGVhZGVyUGFyc2VyYCBjYW4gYmUgbXVjaCBmYXN0ZXIgaW4gdGhlc2Ugc2l0dWF0aW9ucywgc2luY2UgaXQgZG9lcyBub3QKLWF0dGVtcHQgdG8gcGFyc2UgdGhlIG1lc3NhZ2UgYm9keSwgaW5zdGVhZCBzZXR0aW5nIHRoZSBwYXlsb2FkIHRvIHRoZSByYXcgYm9keQotYXMgYSBzdHJpbmcuIDpjbGFzczpgSGVhZGVyUGFyc2VyYCBoYXMgdGhlIHNhbWUgQVBJIGFzIHRoZSA6Y2xhc3M6YFBhcnNlcmAKLWNsYXNzLgorbW9kdWxlIGFsc28gcHJvdmlkZXMgaGVhZGVyLW9ubHkgcGFyc2VycywgY2FsbGVkIDpjbGFzczpgSGVhZGVyUGFyc2VyYCBhbmQKKzpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgLCB3aGljaCBjYW4gYmUgdXNlZCBpZiB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZQoraGVhZGVycyBvZiB0aGUgbWVzc2FnZS4gIDpjbGFzczpgSGVhZGVyUGFyc2VyYCBhbmQgOmNsYXNzOmBCeXRlc0hlYWRlclBhcnNlcmAKK2NhbiBiZSBtdWNoIGZhc3RlciBpbiB0aGVzZSBzaXR1YXRpb25zLCBzaW5jZSB0aGV5IGRvIG5vdCBhdHRlbXB0IHRvIHBhcnNlIHRoZQorbWVzc2FnZSBib2R5LCBpbnN0ZWFkIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gdGhlIHJhdyBib2R5IGFzIGEgc3RyaW5nLiAgVGhleQoraGF2ZSB0aGUgc2FtZSBBUEkgYXMgdGhlIDpjbGFzczpgUGFyc2VyYCBhbmQgOmNsYXNzOmBCeXRlc1BhcnNlcmAgY2xhc3Nlcy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICBUaGUgQnl0ZXNIZWFkZXJQYXJzZXIgY2xhc3MuCiAKIAotLi4gY2xhc3M6OiBQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgc3RyaWN0PU5vbmUpCisuLiBjbGFzczo6IFBhcnNlcihfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudAogICAgKl9jbGFzcyouICBUaGlzIG11c3QgYmUgYSBjYWxsYWJsZSBmYWN0b3J5IChzdWNoIGFzIGEgZnVuY3Rpb24gb3IgYSBjbGFzcyksIGFuZApAQCAtMTEwLDEzICsxMTksMTMgQEAKICAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgKHNlZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCkuICBUaGUgZmFjdG9yeSB3aWxsCiAgICBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuCiAKLSAgIFRoZSBvcHRpb25hbCAqc3RyaWN0KiBmbGFnIGlzIGlnbm9yZWQuCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCisgICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgcGFyc2VyJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQgcG9saWN5IG1haW50YWlucworICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDIuNAotICAgICAgQmVjYXVzZSB0aGUgOmNsYXNzOmBQYXJzZXJgIGNsYXNzIGlzIGEgYmFja3dhcmQgY29tcGF0aWJsZSBBUEkgd3JhcHBlcgotICAgICAgYXJvdW5kIHRoZSBuZXctaW4tUHl0aG9uIDIuNCA6Y2xhc3M6YEZlZWRQYXJzZXJgLCAqYWxsKiBwYXJzaW5nIGlzCi0gICAgICBlZmZlY3RpdmVseSBub24tc3RyaWN0LiAgWW91IHNob3VsZCBzaW1wbHkgc3RvcCBwYXNzaW5nIGEgKnN0cmljdCogZmxhZyB0bwotICAgICAgdGhlIDpjbGFzczpgUGFyc2VyYCBjb25zdHJ1Y3Rvci4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudCB0aGF0IHdhcyBkZXByZWNhdGVkIGluIDIuNC4gIEFkZGVkIHRoZQorICAgICAgKnBvbGljeSoga2V5d29yZC4KIAogICAgVGhlIG90aGVyIHB1YmxpYyA6Y2xhc3M6YFBhcnNlcmAgbWV0aG9kcyBhcmU6CiAKQEAgLTE0NywxMiArMTU2LDE4IEBACiAgICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGFzIHdpdGggdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLgogCiAKLS4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgc3RyaWN0PU5vbmUpCisuLiBjbGFzczo6IEJ5dGVzUGFyc2VyKF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKIAogICAgVGhpcyBjbGFzcyBpcyBleGFjdGx5IHBhcmFsbGVsIHRvIDpjbGFzczpgUGFyc2VyYCwgYnV0IGhhbmRsZXMgYnl0ZXMgaW5wdXQuCiAgICBUaGUgKl9jbGFzcyogYW5kICpzdHJpY3QqIGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvcgotICAgdGhlIDpjbGFzczpgUGFyc2VyYCBjb25zdHJ1Y3Rvci4gICpzdHJpY3QqIGlzIHN1cHBvcnRlZCBvbmx5IHRvIG1ha2UgcG9ydGluZwotICAgY29kZSBlYXNpZXI7IGl0IGlzIGRlcHJlY2F0ZWQuCisgICB0aGUgOmNsYXNzOmBQYXJzZXJgIGNvbnN0cnVjdG9yLgorCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdAorICAgY29udHJvbHMgYSBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgcGFyc2VyJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQKKyAgIHBvbGljeSBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKICAgIC4uIG1ldGhvZDo6IHBhcnNlKGZwLCBoZWFkZXJvbmx5PUZhbHNlKQogCkBAIC0xOTAsMzkgKzIwNSw1MyBAQAogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwKIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fc3RyaW5nKHMsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsIHN0cmljdD1Ob25lKQorLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fc3RyaW5nKHMsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgc3RyaW5nLiAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8KLSAgIGBgUGFyc2VyKCkucGFyc2VzdHIocylgYC4gIE9wdGlvbmFsICpfY2xhc3MqIGFuZCAqc3RyaWN0KiBhcmUgaW50ZXJwcmV0ZWQgYXMKKyAgIGBgUGFyc2VyKCkucGFyc2VzdHIocylgYC4gICpfY2xhc3MqIGFuZCAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMKICAgIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgc3RyaWN0PU5vbmUpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5kZWZhdWx0KQogCiAgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIGJ5dGUgc3RyaW5nLiAgVGhpcyBpcyBleGFjdGx5CiAgICBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZWJ5dGVzKHMpYGAuICBPcHRpb25hbCAqX2NsYXNzKiBhbmQKICAgICpzdHJpY3QqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsIHN0cmljdD1Ob25lKQorLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fZmlsZShmcCwgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLgotICAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gYGBQYXJzZXIoKS5wYXJzZShmcClgYC4gIE9wdGlvbmFsICpfY2xhc3MqCi0gICBhbmQgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KKyAgIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIGBgUGFyc2VyKCkucGFyc2UoZnApYGAuICAqX2NsYXNzKgorICAgYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCBzdHJpY3Q9Tm9uZSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiBiaW5hcnkgOnRlcm06YGZpbGUKICAgIG9iamVjdGAuICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2UoZnApYGAuCi0gICBPcHRpb25hbCAqX2NsYXNzKiBhbmQgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYAorICAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YFBhcnNlcmAKICAgIGNsYXNzIGNvbnN0cnVjdG9yLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCiBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgeW91IG1pZ2h0IHVzZSB0aGlzIGF0IGFuIGludGVyYWN0aXZlIFB5dGhvbiBwcm9tcHQ6OgogCiAgICA+Pj4gaW1wb3J0IGVtYWlsCi0gICA+Pj4gbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhteVN0cmluZykKKyAgID4+PiBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG15U3RyaW5nKSAgIyBkb2N0ZXN0OiArU0tJUAogCiAKIEFkZGl0aW9uYWwgbm90ZXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYjEzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CkBAIC0wLDAgKzEsNDk3IEBACis6bW9kOmBlbWFpbC5wb2xpY3lgOiBQb2xpY3kgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gbW9kdWxlOjogZW1haWwucG9saWN5CisgICA6c3lub3BzaXM6IENvbnRyb2xsaW5nIHRoZSBwYXJzaW5nIGFuZCBnZW5lcmF0aW5nIG9mIG1lc3NhZ2VzCisKKy4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UncyBwcmltZSBmb2N1cyBpcyB0aGUgaGFuZGxpbmcgb2YgZW1haWwgbWVzc2FnZXMgYXMKK2Rlc2NyaWJlZCBieSB0aGUgdmFyaW91cyBlbWFpbCBhbmQgTUlNRSBSRkNzLiAgSG93ZXZlciwgdGhlIGdlbmVyYWwgZm9ybWF0IG9mCitlbWFpbCBtZXNzYWdlcyAoYSBibG9jayBvZiBoZWFkZXIgZmllbGRzIGVhY2ggY29uc2lzdGluZyBvZiBhIG5hbWUgZm9sbG93ZWQgYnkKK2EgY29sb24gZm9sbG93ZWQgYnkgYSB2YWx1ZSwgdGhlIHdob2xlIGJsb2NrIGZvbGxvd2VkIGJ5IGEgYmxhbmsgbGluZSBhbmQgYW4KK2FyYml0cmFyeSAnYm9keScpLCBpcyBhIGZvcm1hdCB0aGF0IGhhcyBmb3VuZCB1dGlsaXR5IG91dHNpZGUgb2YgdGhlIHJlYWxtIG9mCitlbWFpbC4gIFNvbWUgb2YgdGhlc2UgdXNlcyBjb25mb3JtIGZhaXJseSBjbG9zZWx5IHRvIHRoZSBtYWluIFJGQ3MsIHNvbWUgZG8KK25vdC4gIEFuZCBldmVuIHdoZW4gd29ya2luZyB3aXRoIGVtYWlsLCB0aGVyZSBhcmUgdGltZXMgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8KK2JyZWFrIHN0cmljdCBjb21wbGlhbmNlIHdpdGggdGhlIFJGQ3MuCisKK1BvbGljeSBvYmplY3RzIGdpdmUgdGhlIGVtYWlsIHBhY2thZ2UgdGhlIGZsZXhpYmlsaXR5IHRvIGhhbmRsZSBhbGwgdGhlc2UKK2Rpc3BhcmF0ZSB1c2UgY2FzZXMuCisKK0EgOmNsYXNzOmBQb2xpY3lgIG9iamVjdCBlbmNhcHN1bGF0ZXMgYSBzZXQgb2YgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyB0aGF0Citjb250cm9sIHRoZSBiZWhhdmlvciBvZiB2YXJpb3VzIGNvbXBvbmVudHMgb2YgdGhlIGVtYWlsIHBhY2thZ2UgZHVyaW5nIHVzZS4KKzpjbGFzczpgUG9saWN5YCBpbnN0YW5jZXMgY2FuIGJlIHBhc3NlZCB0byB2YXJpb3VzIGNsYXNzZXMgYW5kIG1ldGhvZHMgaW4gdGhlCitlbWFpbCBwYWNrYWdlIHRvIGFsdGVyIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiAgVGhlIHNldHRhYmxlIHZhbHVlcyBhbmQgdGhlaXIKK2RlZmF1bHRzIGFyZSBkZXNjcmliZWQgYmVsb3cuCisKK1RoZXJlIGlzIGEgZGVmYXVsdCBwb2xpY3kgdXNlZCBieSBhbGwgY2xhc3NlcyBpbiB0aGUgZW1haWwgcGFja2FnZS4gIFRoaXMKK3BvbGljeSBpcyBuYW1lZCA6Y2xhc3M6YENvbXBhdDMyYCwgd2l0aCBhIGNvcnJlc3BvbmRpbmcgcHJlLWRlZmluZWQgaW5zdGFuY2UKK25hbWVkIDpjb25zdDpgY29tcGF0MzJgLiAgSXQgcHJvdmlkZXMgZm9yIGNvbXBsZXRlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGluCitzb21lIGNhc2VzLCBpbmNsdWRpbmcgYnVnIGNvbXBhdGliaWxpdHkpIHdpdGggdGhlIHByZS1QeXRob24zLjMgdmVyc2lvbiBvZiB0aGUKK2VtYWlsIHBhY2thZ2UuCisKK1RoZSBmaXJzdCBwYXJ0IG9mIHRoaXMgZG9jdW1lbnRhdGlvbiBjb3ZlcnMgdGhlIGZlYXR1cmVzIG9mIDpjbGFzczpgUG9saWN5YCwgYW4KKzp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCAgdGhhdCBkZWZpbmVzIHRoZSBmZWF0dXJlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsCitwb2xpY3kgb2JqZWN0cywgaW5jbHVkaW5nIDpjb25zdDpgY29tcGF0MzJgLiAgVGhpcyBpbmNsdWRlcyBjZXJ0YWluIGhvb2sKK21ldGhvZHMgdGhhdCBhcmUgY2FsbGVkIGludGVybmFsbHkgYnkgdGhlIGVtYWlsIHBhY2thZ2UsIHdoaWNoIGEgY3VzdG9tIHBvbGljeQorY291bGQgb3ZlcnJpZGUgdG8gb2J0YWluIGRpZmZlcmVudCBiZWhhdmlvci4KKworV2hlbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGFjcXVpcmVzIGEgcG9saWN5LgorQnkgZGVmYXVsdCB0aGlzIHdpbGwgYmUgOmNvbnN0OmBjb21wYXQzMmAsIGJ1dCBhIGRpZmZlcmVudCBwb2xpY3kgY2FuIGJlCitzcGVjaWZpZWQuICBJZiB0aGUgYGBNZXNzYWdlYGAgaXMgY3JlYXRlZCBieSBhIDptb2Q6YH5lbWFpbC5wYXJzZXJgLCBhIHBvbGljeQorcGFzc2VkIHRvIHRoZSBwYXJzZXIgd2lsbCBiZSB0aGUgcG9saWN5IHVzZWQgYnkgdGhlIGBgTWVzc2FnZWBgIGl0IGNyZWF0ZXMuICBJZgordGhlIGBgTWVzc2FnZWBgIGlzIGNyZWF0ZWQgYnkgdGhlIHByb2dyYW0sIHRoZW4gdGhlIHBvbGljeSBjYW4gYmUgc3BlY2lmaWVkCit3aGVuIGl0IGlzIGNyZWF0ZWQuICBXaGVuIGEgYGBNZXNzYWdlYGAgaXMgcGFzc2VkIHRvIGEgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAsCit0aGUgZ2VuZXJhdG9yIHVzZXMgdGhlIHBvbGljeSBmcm9tIHRoZSBgYE1lc3NhZ2VgYCBieSBkZWZhdWx0LCBidXQgeW91IGNhbiBhbHNvCitwYXNzIGEgc3BlY2lmaWMgcG9saWN5IHRvIHRoZSBnZW5lcmF0b3IgdGhhdCB3aWxsIG92ZXJyaWRlIHRoZSBvbmUgc3RvcmVkIG9uCit0aGUgYGBNZXNzYWdlYGAgb2JqZWN0LgorCis6Y2xhc3M6YFBvbGljeWAgaW5zdGFuY2VzIGFyZSBpbW11dGFibGUsIGJ1dCB0aGV5IGNhbiBiZSBjbG9uZWQsIGFjY2VwdGluZyB0aGUKK3NhbWUga2V5d29yZCBhcmd1bWVudHMgYXMgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGFuZCByZXR1cm5pbmcgYSBuZXcKKzpjbGFzczpgUG9saWN5YCBpbnN0YW5jZSB0aGF0IGlzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgYnV0IHdpdGggdGhlIHNwZWNpZmllZAorYXR0cmlidXRlcyB2YWx1ZXMgY2hhbmdlZC4KKworQXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlIGNvdWxkIGJlIHVzZWQgdG8gcmVhZCBhbiBlbWFpbCBtZXNzYWdlIGZyb20gYQorZmlsZSBvbiBkaXNrIGFuZCBwYXNzIGl0IHRvIHRoZSBzeXN0ZW0gYGBzZW5kbWFpbGBgIHByb2dyYW0gb24gYSBVbml4IHN5c3RlbTo6CisKKyAgID4+PiBmcm9tIGVtYWlsIGltcG9ydCBtc2dfZnJvbV9iaW5hcnlfZmlsZQorICAgPj4+IGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBCeXRlc0dlbmVyYXRvcgorICAgPj4+IGZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUKKyAgID4+PiB3aXRoIG9wZW4oJ215bXNnLnR4dCcsICdiJykgYXMgZjoKKyAgIC4uLiAgICAgbXNnID0gbXNnX2Zyb21fYmluYXJ5X2ZpbGUoZikKKyAgID4+PiBwID0gUG9wZW4oWydzZW5kbWFpbCcsIG1zZ1snVG8nXVswXS5hZGRyZXNzXSwgc3RkaW49UElQRSkKKyAgID4+PiBnID0gQnl0ZXNHZW5lcmF0b3IocC5zdGRpbiwgcG9saWN5PW1zZy5wb2xpY3kuY2xvbmUobGluZXNlcD0nXHJcbicpKQorICAgPj4+IGcuZmxhdHRlbihtc2cpCisgICA+Pj4gcC5zdGRpbi5jbG9zZSgpCisgICA+Pj4gcmMgPSBwLndhaXQoKQorCitIZXJlIHdlIGFyZSB0ZWxsaW5nIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgdG8gdXNlIHRoZSBSRkMKK2NvcnJlY3QgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVycyB3aGVuIGNyZWF0aW5nIHRoZSBiaW5hcnkgc3RyaW5nIHRvIGZlZWQgaW50bworYGBzZW5kbWFpbCdzYGAgYGBzdGRpbmBgLCB3aGVyZSB0aGUgZGVmYXVsdCBwb2xpY3kgd291bGQgdXNlIGBgXG5gYCBsaW5lCitzZXBhcmF0b3JzLgorCitTb21lIGVtYWlsIHBhY2thZ2UgbWV0aG9kcyBhY2NlcHQgYSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50LCBhbGxvd2luZyB0aGUKK3BvbGljeSB0byBiZSBvdmVycmlkZGVuIGZvciB0aGF0IG1ldGhvZC4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgdXNlcwordGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFzX3N0cmluZ2AgbWV0aG9kIG9mIHRoZSAqbXNnKiBvYmplY3QgZnJvbQordGhlIHByZXZpb3VzIGV4YW1wbGUgYW5kIHdyaXRlcyB0aGUgbWVzc2FnZSB0byBhIGZpbGUgdXNpbmcgdGhlIG5hdGl2ZSBsaW5lCitzZXBhcmF0b3JzIGZvciB0aGUgcGxhdGZvcm0gb24gd2hpY2ggaXQgaXMgcnVubmluZzo6CisKKyAgID4+PiBpbXBvcnQgb3MKKyAgID4+PiB3aXRoIG9wZW4oJ2NvbnZlcnRlZC50eHQnLCAnd2InKSBhcyBmOgorICAgLi4uICAgICBmLndyaXRlKG1zZy5hc19zdHJpbmcocG9saWN5PW1zZy5wb2xpY3kuY2xvbmUobGluZXNlcD1vcy5saW5lc2VwKSkKKworUG9saWN5IG9iamVjdHMgY2FuIGFsc28gYmUgY29tYmluZWQgdXNpbmcgdGhlIGFkZGl0aW9uIG9wZXJhdG9yLCBwcm9kdWNpbmcgYQorcG9saWN5IG9iamVjdCB3aG9zZSBzZXR0aW5ncyBhcmUgYSBjb21iaW5hdGlvbiBvZiB0aGUgbm9uLWRlZmF1bHQgdmFsdWVzIG9mIHRoZQorc3VtbWVkIG9iamVjdHM6OgorCisgICA+Pj4gY29tcGF0X1NNVFAgPSBlbWFpbC5wb2xpY3kuY2xvbmUobGluZXNlcD0nXHJcbicpCisgICA+Pj4gY29tcGF0X3N0cmljdCA9IGVtYWlsLnBvbGljeS5jbG9uZShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkKKyAgID4+PiBjb21wYXRfc3RyaWN0X1NNVFAgPSBjb21wYXRfU01UUCArIGNvbXBhdF9zdHJpY3QKKworVGhpcyBvcGVyYXRpb24gaXMgbm90IGNvbW11dGF0aXZlOyB0aGF0IGlzLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIG9iamVjdHMgYXJlCithZGRlZCBtYXR0ZXJzLiAgVG8gaWxsdXN0cmF0ZTo6CisKKyAgID4+PiBwb2xpY3kxMDAgPSBjb21wYXQzMi5jbG9uZShtYXhfbGluZV9sZW5ndGg9MTAwKQorICAgPj4+IHBvbGljeTgwID0gY29tcGF0MzIuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTgwKQorICAgPj4+IGFwb2xpY3kgPSBwb2xpY3kxMDAgKyBQb2xpY3k4MAorICAgPj4+IGFwb2xpY3kubWF4X2xpbmVfbGVuZ3RoCisgICA4MAorICAgPj4+IGFwb2xpY3kgPSBwb2xpY3k4MCArIHBvbGljeTEwMAorICAgPj4+IGFwb2xpY3kubWF4X2xpbmVfbGVuZ3RoCisgICAxMDAKKworCisuLiBjbGFzczo6IFBvbGljeSgqKmt3KQorCisgICBUaGlzIGlzIHRoZSA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgZm9yIGFsbCBwb2xpY3kgY2xhc3Nlcy4gIEl0IHByb3ZpZGVzCisgICBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgYSBjb3VwbGUgb2YgdHJpdmlhbCBtZXRob2RzLCBhcyB3ZWxsIGFzIHRoZQorICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIGltbXV0YWJpbGl0eSBwcm9wZXJ0eSwgdGhlIDptZXRoOmBjbG9uZWAgbWV0aG9kLCBhbmQKKyAgIHRoZSBjb25zdHJ1Y3RvciBzZW1hbnRpY3MuCisKKyAgIFRoZSBjb25zdHJ1Y3RvciBvZiBhIHBvbGljeSBjbGFzcyBjYW4gYmUgcGFzc2VkIHZhcmlvdXMga2V5d29yZCBhcmd1bWVudHMuCisgICBUaGUgYXJndW1lbnRzIHRoYXQgbWF5IGJlIHNwZWNpZmllZCBhcmUgYW55IG5vbi1tZXRob2QgcHJvcGVydGllcyBvbiB0aGlzCisgICBjbGFzcywgcGx1cyBhbnkgYWRkaXRpb25hbCBub24tbWV0aG9kIHByb3BlcnRpZXMgb24gdGhlIGNvbmNyZXRlIGNsYXNzLiAgQQorICAgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSBjb25zdHJ1Y3RvciB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKKyAgIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlLgorCisgICBUaGlzIGNsYXNzIGRlZmluZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzLCBhbmQgdGh1cyB2YWx1ZXMgZm9yIHRoZQorICAgZm9sbG93aW5nIG1heSBiZSBwYXNzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGFueSBwb2xpY3kgY2xhc3M6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9saW5lX2xlbmd0aAorCisgICAgICBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW55IGxpbmUgaW4gdGhlIHNlcmlhbGl6ZWQgb3V0cHV0LCBub3QgY291bnRpbmcgdGhlCisgICAgICBlbmQgb2YgbGluZSBjaGFyYWN0ZXIocykuICBEZWZhdWx0IGlzIDc4LCBwZXIgOnJmYzpgNTMyMmAuICBBIHZhbHVlIG9mCisgICAgICBgYDBgYCBvciA6Y29uc3Q6YE5vbmVgIGluZGljYXRlcyB0aGF0IG5vIGxpbmUgd3JhcHBpbmcgc2hvdWxkIGJlCisgICAgICBkb25lIGF0IGFsbC4KKworICAgLi4gYXR0cmlidXRlOjogbGluZXNlcAorCisgICAgICBUaGUgc3RyaW5nIHRvIGJlIHVzZWQgdG8gdGVybWluYXRlIGxpbmVzIGluIHNlcmlhbGl6ZWQgb3V0cHV0LiAgVGhlCisgICAgICBkZWZhdWx0IGlzIGBgXG5gYCBiZWNhdXNlIHRoYXQncyB0aGUgaW50ZXJuYWwgZW5kLW9mLWxpbmUgZGlzY2lwbGluZSB1c2VkCisgICAgICBieSBQeXRob24sIHRob3VnaCBgYFxyXG5gYCBpcyByZXF1aXJlZCBieSB0aGUgUkZDcy4KKworICAgLi4gYXR0cmlidXRlOjogY3RlX3R5cGUKKworICAgICAgQ29udHJvbHMgdGhlIHR5cGUgb2YgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZ3MgdGhhdCBtYXkgYmUgb3IgYXJlCisgICAgICByZXF1aXJlZCB0byBiZSB1c2VkLiAgVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmU6CisKKyAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgIGBgN2JpdGBgICBhbGwgZGF0YSBtdXN0IGJlICI3IGJpdCBjbGVhbiIgKEFTQ0lJLW9ubHkpLiAgVGhpcyBtZWFucyB0aGF0CisgICAgICAgICAgICAgICAgd2hlcmUgbmVjZXNzYXJ5IGRhdGEgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGVpdGhlcgorICAgICAgICAgICAgICAgIHF1b3RlZC1wcmludGFibGUgb3IgYmFzZTY0IGVuY29kaW5nLgorCisgICAgICBgYDhiaXRgYCAgZGF0YSBpcyBub3QgY29uc3RyYWluZWQgdG8gYmUgNyBiaXQgY2xlYW4uICBEYXRhIGluIGhlYWRlcnMgaXMKKyAgICAgICAgICAgICAgICBzdGlsbCByZXF1aXJlZCB0byBiZSBBU0NJSS1vbmx5IGFuZCBzbyB3aWxsIGJlIGVuY29kZWQgKHNlZQorICAgICAgICAgICAgICAgICdiaW5hcnlfZm9sZCcgYmVsb3cgZm9yIGFuIGV4Y2VwdGlvbiksIGJ1dCBib2R5IHBhcnRzIG1heSB1c2UKKyAgICAgICAgICAgICAgICB0aGUgYGA4Yml0YGAgQ1RFLgorICAgICAgPT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICBBIGBgY3RlX3R5cGVgYCB2YWx1ZSBvZiBgYDhiaXRgYCBvbmx5IHdvcmtzIHdpdGggYGBCeXRlc0dlbmVyYXRvcmBgLCBub3QKKyAgICAgIGBgR2VuZXJhdG9yYGAsIGJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgY29udGFpbiBiaW5hcnkgZGF0YS4gIElmIGEKKyAgICAgIGBgR2VuZXJhdG9yYGAgaXMgb3BlcmF0aW5nIHVuZGVyIGEgcG9saWN5IHRoYXQgc3BlY2lmaWVzCisgICAgICBgYGN0ZV90eXBlPThiaXRgYCwgaXQgd2lsbCBhY3QgYXMgaWYgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLgorCisgICAuLiBhdHRyaWJ1dGU6OiByYWlzZV9vbl9kZWZlY3QKKworICAgICAgSWYgOmNvbnN0OmBUcnVlYCwgYW55IGRlZmVjdHMgZW5jb3VudGVyZWQgd2lsbCBiZSByYWlzZWQgYXMgZXJyb3JzLiAgSWYKKyAgICAgIDpjb25zdDpgRmFsc2VgICh0aGUgZGVmYXVsdCksIGRlZmVjdHMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlCisgICAgICA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YCBtZXRob2QuCisKKyAgIFRoZSBmb2xsb3dpbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgY29kZSB1c2luZworICAgdGhlIGVtYWlsIGxpYnJhcnkgdG8gY3JlYXRlIHBvbGljeSBpbnN0YW5jZXMgd2l0aCBjdXN0b20gc2V0dGluZ3M6CisKKyAgIC4uIG1ldGhvZDo6IGNsb25lKCoqa3cpCisKKyAgICAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YFBvbGljeWAgaW5zdGFuY2Ugd2hvc2UgYXR0cmlidXRlcyBoYXZlIHRoZSBzYW1lCisgICAgICB2YWx1ZXMgYXMgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGV4Y2VwdCB3aGVyZSB0aG9zZSBhdHRyaWJ1dGVzIGFyZQorICAgICAgZ2l2ZW4gbmV3IHZhbHVlcyBieSB0aGUga2V5d29yZCBhcmd1bWVudHMuCisKKyAgIFRoZSByZW1haW5pbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgZW1haWwgcGFja2FnZSBjb2RlLAorICAgYW5kIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGJ5IGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBlbWFpbCBwYWNrYWdlLgorICAgQSBjdXN0b20gcG9saWN5IG11c3QgaW1wbGVtZW50IGFsbCBvZiB0aGVzZSBtZXRob2RzLgorCisgICAuLiBtZXRob2Q6OiBoYW5kbGVfZGVmZWN0KG9iaiwgZGVmZWN0KQorCisgICAgICBIYW5kbGUgYSAqZGVmZWN0KiBmb3VuZCBvbiAqb2JqKi4gIFdoZW4gdGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcworICAgICAgbWV0aG9kLCAqZGVmZWN0KiB3aWxsIGFsd2F5cyBiZSBhIHN1YmNsYXNzIG9mCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuRGVmZWN0YC4KKworICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2hlY2tzIHRoZSA6YXR0cjpgcmFpc2Vfb25fZGVmZWN0YCBmbGFnLiAgSWYKKyAgICAgIGl0IGlzIGBgVHJ1ZWBgLCAqZGVmZWN0KiBpcyByYWlzZWQgYXMgYW4gZXhjZXB0aW9uLiAgSWYgaXQgaXMgYGBGYWxzZWBgCisgICAgICAodGhlIGRlZmF1bHQpLCAqb2JqKiBhbmQgKmRlZmVjdCogYXJlIHBhc3NlZCB0byA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YC4KKworICAgLi4gbWV0aG9kOjogcmVnaXN0ZXJfZGVmZWN0KG9iaiwgZGVmZWN0KQorCisgICAgICBSZWdpc3RlciBhICpkZWZlY3QqIG9uICpvYmoqLiAgSW4gdGhlIGVtYWlsIHBhY2thZ2UsICpkZWZlY3QqIHdpbGwgYWx3YXlzCisgICAgICBiZSBhIHN1YmNsYXNzIG9mIDpjbGFzczpgfmVtYWlsLmVycm9ycy5EZWZlY3RgLgorCisgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgYGBhcHBlbmRgYCBtZXRob2Qgb2YgdGhlIGBgZGVmZWN0c2BgCisgICAgICBhdHRyaWJ1dGUgb2YgKm9iaiouICBXaGVuIHRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIDphdHRyOmBoYW5kbGVfZGVmZWN0YCwKKyAgICAgICpvYmoqIHdpbGwgbm9ybWFsbHkgaGF2ZSBhIGBgZGVmZWN0c2BgIGF0dHJpYnV0ZSB0aGF0IGhhcyBhbiBgYGFwcGVuZGBgCisgICAgICBtZXRob2QuICBDdXN0b20gb2JqZWN0IHR5cGVzIHVzZWQgd2l0aCB0aGUgZW1haWwgcGFja2FnZSAoZm9yIGV4YW1wbGUsCisgICAgICBjdXN0b20gYGBNZXNzYWdlYGAgb2JqZWN0cykgc2hvdWxkIGFsc28gcHJvdmlkZSBzdWNoIGFuIGF0dHJpYnV0ZSwKKyAgICAgIG90aGVyd2lzZSBkZWZlY3RzIGluIHBhcnNlZCBtZXNzYWdlcyB3aWxsIHJhaXNlIHVuZXhwZWN0ZWQgZXJyb3JzLgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfbWF4X2NvdW50KG5hbWUpCisKKyAgICAgIFJldHVybiB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBoZWFkZXJzIG5hbWVkICpuYW1lKi4KKworICAgICAgQ2FsbGVkIHdoZW4gYSBoZWFkZXIgaXMgYWRkZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgCisgICAgICBvYmplY3QuICBJZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgbm90IGBgMGBgIG9yIGBgTm9uZWBgLCBhbmQgdGhlcmUgYXJlCisgICAgICBhbHJlYWR5IGEgbnVtYmVyIG9mIGhlYWRlcnMgd2l0aCB0aGUgbmFtZSAqbmFtZSogZXF1YWwgdG8gdGhlIHZhbHVlCisgICAgICByZXR1cm5lZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisKKyAgICAgIEJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYGBNZXNzYWdlLl9fc2V0aXRlbV9fYGAgaXMgdG8gYXBwZW5kIHRoZQorICAgICAgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgaGVhZGVycywgaXQgaXMgZWFzeSB0byBjcmVhdGUgZHVwbGljYXRlIGhlYWRlcnMKKyAgICAgIHdpdGhvdXQgcmVhbGl6aW5nIGl0LiAgVGhpcyBtZXRob2QgYWxsb3dzIGNlcnRhaW4gaGVhZGVycyB0byBiZSBsaW1pdGVkCisgICAgICBpbiB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyBvZiB0aGF0IGhlYWRlciB0aGF0IG1heSBiZSBhZGRlZCB0byBhCisgICAgICBgYE1lc3NhZ2VgYCBwcm9ncmFtbWF0aWNhbGx5LiAgKFRoZSBsaW1pdCBpcyBub3Qgb2JzZXJ2ZWQgYnkgdGhlIHBhcnNlciwKKyAgICAgIHdoaWNoIHdpbGwgZmFpdGhmdWxseSBwcm9kdWNlIGFzIG1hbnkgaGVhZGVycyBhcyBleGlzdCBpbiB0aGUgbWVzc2FnZQorICAgICAgYmVpbmcgcGFyc2VkLikKKworICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBgYE5vbmVgYCBmb3IgYWxsIGhlYWRlciBuYW1lcy4KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCBhIGxpc3Qgb2Ygc3RyaW5ncywgZWFjaCBzdHJpbmcKKyAgICAgIGVuZGluZyB3aXRoIHRoZSBsaW5lIHNlcGFyYXRpb24gY2hhcmFjdGVycyBmb3VuZCBpbiB0aGUgc291cmNlIGJlaW5nCisgICAgICBwYXJzZWQuICBUaGUgZmlyc3QgbGluZSBpbmNsdWRlcyB0aGUgZmllbGQgaGVhZGVyIG5hbWUgYW5kIHNlcGFyYXRvci4KKyAgICAgIEFsbCB3aGl0ZXNwYWNlIGluIHRoZSBzb3VyY2UgaXMgcHJlc2VydmVkLiAgVGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZQorICAgICAgYGAobmFtZSwgdmFsdWUpYGAgdHVwbGUgdGhhdCBpcyB0byBiZSBzdG9yZWQgaW4gdGhlIGBgTWVzc2FnZWBgIHRvCisgICAgICByZXByZXNlbnQgdGhlIHBhcnNlZCBoZWFkZXIuCisKKyAgICAgIElmIGFuIGltcGxlbWVudGF0aW9uIHdpc2hlcyB0byByZXRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBleGlzdGluZworICAgICAgZW1haWwgcGFja2FnZSBwb2xpY2llcywgKm5hbWUqIHNob3VsZCBiZSB0aGUgY2FzZSBwcmVzZXJ2ZWQgbmFtZSAoYWxsCisgICAgICBjaGFyYWN0ZXJzIHVwIHRvIHRoZSAnYGA6YGAnIHNlcGFyYXRvciksIHdoaWxlICp2YWx1ZSogc2hvdWxkIGJlIHRoZQorICAgICAgdW5mb2xkZWQgdmFsdWUgKGFsbCBsaW5lIHNlcGFyYXRvciBjaGFyYWN0ZXJzIHJlbW92ZWQsIGJ1dCB3aGl0ZXNwYWNlCisgICAgICBrZXB0IGludGFjdCksIHN0cmlwcGVkIG9mIGxlYWRpbmcgd2hpdGVzcGFjZS4KKworICAgICAgKnNvdXJjZWxpbmVzKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLgorCisgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgbmFtZSBhbmQgdmFsdWUgcHJvdmlkZWQgYnkKKyAgICAgIHRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtIHdoZW4gdGhlIGFwcGxpY2F0aW9uIHByb2dyYW0gaXMgbW9kaWZ5aW5nIGEKKyAgICAgIGBgTWVzc2FnZWBgIHByb2dyYW1tYXRpY2FsbHkgKGFzIG9wcG9zZWQgdG8gYSBgYE1lc3NhZ2VgYCBjcmVhdGVkIGJ5IGEKKyAgICAgIHBhcnNlcikuICBUaGUgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIGBgKG5hbWUsIHZhbHVlKWBgIHR1cGxlIHRoYXQgaXMgdG8KKyAgICAgIGJlIHN0b3JlZCBpbiB0aGUgYGBNZXNzYWdlYGAgdG8gcmVwcmVzZW50IHRoZSBoZWFkZXIuCisKKyAgICAgIElmIGFuIGltcGxlbWVudGF0aW9uIHdpc2hlcyB0byByZXRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBleGlzdGluZworICAgICAgZW1haWwgcGFja2FnZSBwb2xpY2llcywgdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBzaG91bGQgYmUgc3RyaW5ncyBvcgorICAgICAgc3RyaW5nIHN1YmNsYXNzZXMgdGhhdCBkbyBub3QgY2hhbmdlIHRoZSBjb250ZW50IG9mIHRoZSBwYXNzZWQgaW4KKyAgICAgIGFyZ3VtZW50cy4KKworICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBjdXJyZW50bHkKKyAgICAgIHN0b3JlZCBpbiB0aGUgYGBNZXNzYWdlYGAgd2hlbiB0aGF0IGhlYWRlciBpcyByZXF1ZXN0ZWQgYnkgdGhlCisgICAgICBhcHBsaWNhdGlvbiBwcm9ncmFtLCBhbmQgd2hhdGV2ZXIgdGhlIG1ldGhvZCByZXR1cm5zIGlzIHdoYXQgaXMgcGFzc2VkCisgICAgICBiYWNrIHRvIHRoZSBhcHBsaWNhdGlvbiBhcyB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBiZWluZyByZXRyaWV2ZWQuCisgICAgICBOb3RlIHRoYXQgdGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgaGVhZGVyIHdpdGggdGhlIHNhbWUgbmFtZSBzdG9yZWQgaW4KKyAgICAgIHRoZSBgYE1lc3NhZ2VgYDsgdGhlIG1ldGhvZCBpcyBwYXNzZWQgdGhlIHNwZWNpZmljIG5hbWUgYW5kIHZhbHVlIG9mIHRoZQorICAgICAgaGVhZGVyIGRlc3RpbmVkIHRvIGJlIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbi4KKworICAgICAgKnZhbHVlKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLiAgVGhlcmUgc2hvdWxkIGJlIG5vCisgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGluIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgbWV0aG9kLgorCisgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisKKyAgIC4uIG1ldGhvZDo6IGZvbGQobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBjdXJyZW50bHkKKyAgICAgIHN0b3JlZCBpbiB0aGUgYGBNZXNzYWdlYGAgZm9yIGEgZ2l2ZW4gaGVhZGVyLiAgVGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEKKyAgICAgIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhhdCBoZWFkZXIgImZvbGRlZCIgY29ycmVjdGx5IChhY2NvcmRpbmcgdG8gdGhlCisgICAgICBwb2xpY3kgc2V0dGluZ3MpIGJ5IGNvbXBvc2luZyB0aGUgKm5hbWUqIHdpdGggdGhlICp2YWx1ZSogYW5kIGluc2VydGluZworICAgICAgOmF0dHI6YGxpbmVzZXBgIGNoYXJhY3RlcnMgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlcy4gIFNlZSA6cmZjOmA1MzIyYAorICAgICAgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGUgcnVsZXMgZm9yIGZvbGRpbmcgZW1haWwgaGVhZGVycy4KKworICAgICAgKnZhbHVlKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLiAgVGhlcmUgc2hvdWxkIGJlIG5vCisgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGluIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgdGhlIG1ldGhvZC4KKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCwgZXhjZXB0IHRoYXQgdGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBiZSBhCisgICAgICBieXRlcyBvYmplY3QgcmF0aGVyIHRoYW4gYSBzdHJpbmcuCisKKyAgICAgICp2YWx1ZSogbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YS4gIFRoZXNlIGNvdWxkIGJlCisgICAgICBjb252ZXJ0ZWQgYmFjayBpbnRvIGJpbmFyeSBkYXRhIGluIHRoZSByZXR1cm5lZCBieXRlcyBvYmplY3QuCisKKworLi4gY2xhc3M6OiBDb21wYXQzMigqKmt3KQorCisgICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBpcyB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBwb2xpY3kuICBJdAorICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4gIFRoZQorICAgOm1vZDpgcG9saWN5YCBtb2R1bGUgYWxzbyBkZWZpbmVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsCisgICA6Y29uc3Q6YGNvbXBhdDMyYCwgdGhhdCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IHBvbGljeS4gIFRodXMgdGhlIGRlZmF1bHQKKyAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGlzIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yLgorCisgICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCisgICBhYnN0cmFjdCBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICdgYDpgYCcgYW5kIHJldHVybmVkCisgICAgICB1bm1vZGlmaWVkLiAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYKKyAgICAgIHRoZSByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsCisgICAgICBhbmQgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBUaGUgbmFtZSBhbmQgdmFsdWUgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGJpbmFyeSBkYXRhLCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhCisgICAgICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3QgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKyAgICAgIE90aGVyd2lzZSBpdCBpcyByZXR1cm5lZCB1bm1vZGlmaWVkLgorCisgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQorCisgICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKKyAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCisgICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgTm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGFyZQorICAgICAgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZworICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKKyAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBJZiBgYGN0ZV90eXBlYGAgaXMKKyAgICAgIGBgN2JpdGBgLCBub24tYXNjaWkgYmluYXJ5IGRhdGEgaXMgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAKKyAgICAgIGNoYXJzZXQuICBPdGhlcndpc2UgdGhlIG9yaWdpbmFsIHNvdXJjZSBoZWFkZXIgaXMgdXNlZCwgd2l0aCBpdHMgZXhpc3RpbmcKKyAgICAgIGxpbmUgYnJlYWtzIGFuZCBhbmQgYW55IChSRkMgaW52YWxpZCkgYmluYXJ5IGRhdGEgaXQgbWF5IGNvbnRhaW4uCisKKworLi4gbm90ZTo6CisKKyAgIFRoZSBkb2N1bWVudGF0aW9uIGJlbG93IGRlc2NyaWJlcyBuZXcgcG9saWNpZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlCisgICBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCisgICBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgZmVhdHVyZSkKKyAgIG1heSBvY2N1ciBpZiBkZWVtZWQgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCisKKworLi4gY2xhc3M6OiBFbWFpbFBvbGljeSgqKmt3KQorCisgICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBwcm92aWRlcyBiZWhhdmlvciB0aGF0IGlzIGludGVuZGVkIHRvIGJlIGZ1bGx5CisgICBjb21wbGlhbnQgd2l0aCB0aGUgY3VycmVudCBlbWFpbCBSRkNzLiAgVGhlc2UgaW5jbHVkZSAoYnV0IGFyZSBub3QgbGltaXRlZAorICAgdG8pIDpyZmM6YDUzMjJgLCA6cmZjOmAyMDQ3YCwgYW5kIHRoZSBjdXJyZW50IE1JTUUgUkZDcy4KKworICAgVGhpcyBwb2xpY3kgYWRkcyBuZXcgaGVhZGVyIHBhcnNpbmcgYW5kIGZvbGRpbmcgYWxnb3JpdGhtcy4gIEluc3RlYWQgb2YKKyAgIHNpbXBsZSBzdHJpbmdzLCBoZWFkZXJzIGFyZSBjdXN0b20gb2JqZWN0cyB3aXRoIGN1c3RvbSBhdHRyaWJ1dGVzIGRlcGVuZGluZworICAgb24gdGhlIHR5cGUgb2YgdGhlIGZpZWxkLiAgVGhlIHBhcnNpbmcgYW5kIGZvbGRpbmcgYWxnb3JpdGhtIGZ1bGx5IGltcGxlbWVudAorICAgOnJmYzpgMjA0N2AgYW5kIDpyZmM6YDUzMjJgLgorCisgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0byBhbGwKKyAgIHBvbGljaWVzLCB0aGlzIHBvbGljeSBhZGRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgorCisgICAuLiBhdHRyaWJ1dGU6OiByZWZvbGRfc291cmNlCisKKyAgICAgIElmIHRoZSB2YWx1ZSBmb3IgYSBoZWFkZXIgaW4gdGhlIGBgTWVzc2FnZWBgIG9iamVjdCBvcmlnaW5hdGVkIGZyb20gYQorICAgICAgOm1vZDpgfmVtYWlsLnBhcnNlcmAgKGFzIG9wcG9zZWQgdG8gYmVpbmcgc2V0IGJ5IGEgcHJvZ3JhbSksIHRoaXMKKyAgICAgIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYSBnZW5lcmF0b3Igc2hvdWxkIHJlZm9sZCB0aGF0IHZhbHVlCisgICAgICB3aGVuIHRyYW5zZm9ybWluZyB0aGUgbWVzc2FnZSBiYWNrIGludG8gc3RyZWFtIGZvcm0uICBUaGUgcG9zc2libGUgdmFsdWVzCisgICAgICBhcmU6CisKKyAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgIGBgbm9uZWBgICBhbGwgc291cmNlIHZhbHVlcyB1c2Ugb3JpZ2luYWwgZm9sZGluZworCisgICAgICBgYGxvbmdgYCAgc291cmNlIHZhbHVlcyB0aGF0IGhhdmUgYW55IGxpbmUgdGhhdCBpcyBsb25nZXIgdGhhbgorICAgICAgICAgICAgICAgIGBgbWF4X2xpbmVfbGVuZ3RoYGAgd2lsbCBiZSByZWZvbGRlZAorCisgICAgICBgYGFsbGBgICAgYWxsIHZhbHVlcyBhcmUgcmVmb2xkZWQuCisgICAgICA9PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgIFRoZSBkZWZhdWx0IGlzIGBgbG9uZ2BgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBoZWFkZXJfZmFjdG9yeQorCisgICAgICBBIGNhbGxhYmxlIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cywgYGBuYW1lYGAgYW5kIGBgdmFsdWVgYCwgd2hlcmUKKyAgICAgIGBgbmFtZWBgIGlzIGEgaGVhZGVyIGZpZWxkIG5hbWUgYW5kIGBgdmFsdWVgYCBpcyBhbiB1bmZvbGRlZCBoZWFkZXIgZmllbGQKKyAgICAgIHZhbHVlLCBhbmQgcmV0dXJucyBhIHN0cmluZyBzdWJjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhhdCBoZWFkZXIuICBBCisgICAgICBkZWZhdWx0IGBgaGVhZGVyX2ZhY3RvcnlgYCAoc2VlIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWApIGlzIHByb3ZpZGVkCisgICAgICB0aGF0IHVuZGVyc3RhbmRzIHNvbWUgb2YgdGhlIDpSRkM6YDUzMjJgIGhlYWRlciBmaWVsZCB0eXBlcy4gIChDdXJyZW50bHkKKyAgICAgIGFkZHJlc3MgZmllbGRzIGFuZCBkYXRlIGZpZWxkcyBoYXZlIHNwZWNpYWwgdHJlYXRtZW50LCB3aGlsZSBhbGwgb3RoZXIKKyAgICAgIGZpZWxkcyBhcmUgdHJlYXRlZCBhcyB1bnN0cnVjdHVyZWQuICBUaGlzIGxpc3Qgd2lsbCBiZSBjb21wbGV0ZWQgYmVmb3JlCisgICAgICB0aGUgZXh0ZW5zaW9uIGlzIG1hcmtlZCBzdGFibGUuKQorCisgICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGFic3RyYWN0CisgICBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX21heF9jb3VudChuYW1lKQorCisgICAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgIDphdHRyOmB+ZW1haWwuaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlci5tYXhfY291bnRgIGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAgIHNwZWNpYWxpemVkIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBoZWFkZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kIGlzIHRoZSBzYW1lIGFzIHRoYXQgZm9yIHRoZQorICAgICAgOmNsYXNzOmBDb21wYXQzMmAgcG9saWN5LgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBuYW1lIGlzIHJldHVybmVkIHVuY2hhbmdlZC4gIElmIHRoZSBpbnB1dCB2YWx1ZSBoYXMgYSBgYG5hbWVgYAorICAgICAgYXR0cmlidXRlIGFuZCBpdCBtYXRjaGVzICpuYW1lKiBpZ25vcmluZyBjYXNlLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQKKyAgICAgIHVuY2hhbmdlZC4gIE90aGVyd2lzZSB0aGUgKm5hbWUqIGFuZCAqdmFsdWUqIGFyZSBwYXNzZWQgdG8KKyAgICAgIGBgaGVhZGVyX2ZhY3RvcnlgYCwgYW5kIHRoZSByZXN1bHRpbmcgY3VzdG9tIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQgYXMKKyAgICAgIHRoZSB2YWx1ZS4gIEluIHRoaXMgY2FzZSBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZCBpZiB0aGUgaW5wdXQgdmFsdWUKKyAgICAgIGNvbnRhaW5zIENSIG9yIExGIGNoYXJhY3RlcnMuCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgSWYgdGhlIHZhbHVlIGhhcyBhIGBgbmFtZWBgIGF0dHJpYnV0ZSwgaXQgaXMgcmV0dXJuZWQgdG8gdW5tb2RpZmllZC4KKyAgICAgIE90aGVyd2lzZSB0aGUgKm5hbWUqLCBhbmQgdGhlICp2YWx1ZSogd2l0aCBhbnkgQ1Igb3IgTEYgY2hhcmFjdGVycworICAgICAgcmVtb3ZlZCwgYXJlIHBhc3NlZCB0byB0aGUgYGBoZWFkZXJfZmFjdG9yeWBgLCBhbmQgdGhlIHJlc3VsdGluZyBjdXN0b20KKyAgICAgIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQuICBBbnkgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBnZXQgdHVybmVkIGludG8KKyAgICAgIHRoZSB1bmljb2RlIHVua25vd24tY2hhcmFjdGVyIGdseXBoLgorCisgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQorCisgICAgICBIZWFkZXIgZm9sZGluZyBpcyBjb250cm9sbGVkIGJ5IHRoZSA6YXR0cjpgcmVmb2xkX3NvdXJjZWAgcG9saWN5IHNldHRpbmcuCisgICAgICBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSAnc291cmNlIHZhbHVlJyBpZiBhbmQgb25seSBpZiBpdCBkb2VzIG5vdAorICAgICAgaGF2ZSBhIGBgbmFtZWBgIGF0dHJpYnV0ZSAoaGF2aW5nIGEgYGBuYW1lYGAgYXR0cmlidXRlIG1lYW5zIGl0IGlzIGEKKyAgICAgIGhlYWRlciBvYmplY3Qgb2Ygc29tZSBzb3J0KS4gIElmIGEgc291cmNlIHZhbHVlIG5lZWRzIHRvIGJlIHJlZm9sZGVkCisgICAgICBhY2NvcmRpbmcgdG8gdGhlIHBvbGljeSwgaXQgaXMgY29udmVydGVkIGludG8gYSBjdXN0b20gaGVhZGVyIG9iamVjdCBieQorICAgICAgcGFzc2luZyB0aGUgKm5hbWUqIGFuZCB0aGUgKnZhbHVlKiB3aXRoIGFueSBDUiBhbmQgTEYgY2hhcmFjdGVycyByZW1vdmVkCisgICAgICB0byB0aGUgYGBoZWFkZXJfZmFjdG9yeWBgLiAgRm9sZGluZyBvZiBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGlzIGRvbmUgYnkKKyAgICAgIGNhbGxpbmcgaXRzIGBgZm9sZGBgIG1ldGhvZCB3aXRoIHRoZSBjdXJyZW50IHBvbGljeS4KKworICAgICAgU291cmNlIHZhbHVlcyBhcmUgc3BsaXQgaW50byBsaW5lcyB1c2luZyA6bWV0aDpgfnN0ci5zcGxpdGxpbmVzYC4gIElmCisgICAgICB0aGUgdmFsdWUgaXMgbm90IHRvIGJlIHJlZm9sZGVkLCB0aGUgbGluZXMgYXJlIHJlam9pbmVkIHVzaW5nIHRoZQorICAgICAgYGBsaW5lc2VwYGAgZnJvbSB0aGUgcG9saWN5IGFuZCByZXR1cm5lZC4gIFRoZSBleGNlcHRpb24gaXMgbGluZXMKKyAgICAgIGNvbnRhaW5pbmcgbm9uLWFzY2lpIGJpbmFyeSBkYXRhLiAgSW4gdGhhdCBjYXNlIHRoZSB2YWx1ZSBpcyByZWZvbGRlZAorICAgICAgcmVnYXJkbGVzcyBvZiB0aGUgYGByZWZvbGRfc291cmNlYGAgc2V0dGluZywgd2hpY2ggY2F1c2VzIHRoZSBiaW5hcnkgZGF0YQorICAgICAgdG8gYmUgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCBpZiA6YXR0cjpgY3RlX3R5cGVgIGlzIGBgN2JpdGBgLCBleGNlcHQgdGhhdAorICAgICAgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJ5dGVzLgorCisgICAgICBJZiA6YXR0cjpgY3RlX3R5cGVgIGlzIGBgOGJpdGBgLCBub24tQVNDSUkgYmluYXJ5IGRhdGEgaXMgY29udmVydGVkIGJhY2sKKyAgICAgIGludG8gYnl0ZXMuICBIZWFkZXJzIHdpdGggYmluYXJ5IGRhdGEgYXJlIG5vdCByZWZvbGRlZCwgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgIGBgcmVmb2xkX2hlYWRlcmBgIHNldHRpbmcsIHNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byBrbm93IHdoZXRoZXIgdGhlCisgICAgICBiaW5hcnkgZGF0YSBjb25zaXN0cyBvZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzIG9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgorCitUaGUgZm9sbG93aW5nIGluc3RhbmNlcyBvZiA6Y2xhc3M6YEVtYWlsUG9saWN5YCBwcm92aWRlIGRlZmF1bHRzIHN1aXRhYmxlIGZvcgorc3BlY2lmaWMgYXBwbGljYXRpb24gZG9tYWlucy4gIE5vdGUgdGhhdCBpbiB0aGUgZnV0dXJlIHRoZSBiZWhhdmlvciBvZiB0aGVzZQoraW5zdGFuY2VzIChpbiBwYXJ0aWN1bGFyIHRoZSBgYEhUVFBgYCBpbnN0YW5jZSkgbWF5IGJlIGFkanVzdGVkIHRvIGNvbmZvcm0gZXZlbgorbW9yZSBjbG9zZWx5IHRvIHRoZSBSRkNzIHJlbGV2YW50IHRvIHRoZWlyIGRvbWFpbnMuCisKKy4uIGRhdGE6OiBkZWZhdWx0CisKKyAgIEFuIGluc3RhbmNlIG9mIGBgRW1haWxQb2xpY3lgYCB3aXRoIGFsbCBkZWZhdWx0cyB1bmNoYW5nZWQuICBUaGlzIHBvbGljeQorICAgdXNlcyB0aGUgc3RhbmRhcmQgUHl0aG9uIGBgXG5gYCBsaW5lIGVuZGluZ3MgcmF0aGVyIHRoYW4gdGhlIFJGQy1jb3JyZWN0CisgICBgYFxyXG5gYC4KKworLi4gZGF0YTo6IFNNVFAKKworICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIG1lc3NhZ2VzIGluIGNvbmZvcm1hbmNlIHdpdGggdGhlIGVtYWlsIFJGQ3MuCisgICBMaWtlIGBgZGVmYXVsdGBgLCBidXQgd2l0aCBgYGxpbmVzZXBgYCBzZXQgdG8gYGBcclxuYGAsIHdoaWNoIGlzIFJGQworICAgY29tcGxpYW50LgorCisuLiBkYXRhOjogSFRUUAorCisgICBTdWl0YWJsZSBmb3Igc2VyaWFsaXppbmcgaGVhZGVycyB3aXRoIGZvciB1c2UgaW4gSFRUUCB0cmFmZmljLiAgTGlrZQorICAgYGBTTVRQYGAgZXhjZXB0IHRoYXQgYGBtYXhfbGluZV9sZW5ndGhgYCBpcyBzZXQgdG8gYGBOb25lYGAgKHVubGltaXRlZCkuCisKKy4uIGRhdGE6OiBzdHJpY3QKKworICAgQ29udmVuaWVuY2UgaW5zdGFuY2UuICBUaGUgc2FtZSBhcyBgYGRlZmF1bHRgYCBleGNlcHQgdGhhdAorICAgYGByYWlzZV9vbl9kZWZlY3RgYCBpcyBzZXQgdG8gYGBUcnVlYGAuICBUaGlzIGFsbG93cyBhbnkgcG9saWN5IHRvIGJlIG1hZGUKKyAgIHN0cmljdCBieSB3cml0aW5nOjoKKworICAgICAgICBzb21lcG9saWN5ICsgcG9saWN5LnN0cmljdAorCitXaXRoIGFsbCBvZiB0aGVzZSA6Y2xhc3M6YEVtYWlsUG9saWNpZXMgPC5FbWFpbFBvbGljeT5gLCB0aGUgZWZmZWN0aXZlIEFQSSBvZgordGhlIGVtYWlsIHBhY2thZ2UgaXMgY2hhbmdlZCBmcm9tIHRoZSBQeXRob24gMy4yIEFQSSBpbiB0aGUgZm9sbG93aW5nIHdheXM6CisKKyAgICogU2V0dGluZyBhIGhlYWRlciBvbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgcmVzdWx0cyBpbiB0aGF0CisgICAgIGhlYWRlciBiZWluZyBwYXJzZWQgYW5kIGEgY3VzdG9tIGhlYWRlciBvYmplY3QgY3JlYXRlZC4KKworICAgKiBGZXRjaGluZyBhIGhlYWRlciB2YWx1ZSBmcm9tIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCByZXN1bHRzCisgICAgIGluIHRoYXQgaGVhZGVyIGJlaW5nIHBhcnNlZCBhbmQgYSBjdXN0b20gaGVhZGVyIG9iamVjdCBjcmVhdGVkIGFuZAorICAgICByZXR1cm5lZC4KKworICAgKiBBbnkgY3VzdG9tIGhlYWRlciBvYmplY3QsIG9yIGFueSBoZWFkZXIgdGhhdCBpcyByZWZvbGRlZCBkdWUgdG8gdGhlCisgICAgIHBvbGljeSBzZXR0aW5ncywgaXMgZm9sZGVkIHVzaW5nIGFuIGFsZ29yaXRobSB0aGF0IGZ1bGx5IGltcGxlbWVudHMgdGhlCisgICAgIFJGQyBmb2xkaW5nIGFsZ29yaXRobXMsIGluY2x1ZGluZyBrbm93aW5nIHdoZXJlIGVuY29kZWQgd29yZHMgYXJlIHJlcXVpcmVkCisgICAgIGFuZCBhbGxvd2VkLgorCitGcm9tIHRoZSBhcHBsaWNhdGlvbiB2aWV3LCB0aGlzIG1lYW5zIHRoYXQgYW55IGhlYWRlciBvYnRhaW5lZCB0aHJvdWdoIHRoZQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpcyBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IHdpdGggY3VzdG9tCithdHRyaWJ1dGVzLCB3aG9zZSBzdHJpbmcgdmFsdWUgaXMgdGhlIGZ1bGx5IGRlY29kZWQgdW5pY29kZSB2YWx1ZSBvZiB0aGUKK2hlYWRlci4gIExpa2V3aXNlLCBhIGhlYWRlciBtYXkgYmUgYXNzaWduZWQgYSBuZXcgdmFsdWUsIG9yIGEgbmV3IGhlYWRlcgorY3JlYXRlZCwgdXNpbmcgYSB1bmljb2RlIHN0cmluZywgYW5kIHRoZSBwb2xpY3kgd2lsbCB0YWtlIGNhcmUgb2YgY29udmVydGluZwordGhlIHVuaWNvZGUgc3RyaW5nIGludG8gdGhlIGNvcnJlY3QgUkZDIGVuY29kZWQgZm9ybS4KKworVGhlIGN1c3RvbSBoZWFkZXIgb2JqZWN0cyBhbmQgdGhlaXIgYXR0cmlidXRlcyBhcmUgZGVzY3JpYmVkIGluCis6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwucnN0CmluZGV4IDQ1MzBiOTUuLmVmNTM1NGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5yc3QKQEAgLTUxLDYgKzUxLDggQEAKICAgIGVtYWlsLm1lc3NhZ2UucnN0CiAgICBlbWFpbC5wYXJzZXIucnN0CiAgICBlbWFpbC5nZW5lcmF0b3IucnN0CisgICBlbWFpbC5wb2xpY3kucnN0CisgICBlbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKICAgIGVtYWlsLm1pbWUucnN0CiAgICBlbWFpbC5oZWFkZXIucnN0CiAgICBlbWFpbC5jaGFyc2V0LnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAppbmRleCAxMWJmM2IyLi5iYWQwYjI0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdApAQCAtMjksMTMgKzI5LDIxIEBACiAgICBmYWlscywgaW4gd2hpY2ggY2FzZSBhIDItdHVwbGUgb2YgYGAoJycsICcnKWBgIGlzIHJldHVybmVkLgogCiAKLS4uIGZ1bmN0aW9uOjogZm9ybWF0YWRkcihwYWlyKQorLi4gZnVuY3Rpb246OiBmb3JtYXRhZGRyKHBhaXIsIGNoYXJzZXQ9J3V0Zi04JykKIAogICAgVGhlIGludmVyc2Ugb2YgOm1ldGg6YHBhcnNlYWRkcmAsIHRoaXMgdGFrZXMgYSAyLXR1cGxlIG9mIHRoZSBmb3JtIGBgKHJlYWxuYW1lLAogICAgZW1haWxfYWRkcmVzcylgYCBhbmQgcmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIHN1aXRhYmxlIGZvciBhIDptYWlsaGVhZGVyOmBUb2Agb3IKICAgIDptYWlsaGVhZGVyOmBDY2AgaGVhZGVyLiAgSWYgdGhlIGZpcnN0IGVsZW1lbnQgb2YgKnBhaXIqIGlzIGZhbHNlLCB0aGVuIHRoZQogICAgc2Vjb25kIGVsZW1lbnQgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC4KIAorICAgT3B0aW9uYWwgKmNoYXJzZXQqIGlzIHRoZSBjaGFyYWN0ZXIgc2V0IHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSA6cmZjOmAyMDQ3YAorICAgZW5jb2Rpbmcgb2YgdGhlIGBgcmVhbG5hbWVgYCBpZiB0aGUgYGByZWFsbmFtZWBgIGNvbnRhaW5zIG5vbi1BU0NJSQorICAgY2hhcmFjdGVycy4gIENhbiBiZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YHN0cmAgb3IgYQorICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YC4gIERlZmF1bHRzIHRvIGBgdXRmLThgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqY2hhcnNldCogb3B0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0YWRkcmVzc2VzKGZpZWxkdmFsdWVzKQogCkBAIC03NCw2ICs4MiwyMCBAQAogICAgaW5kZXhlcyA2LCA3LCBhbmQgOCBvZiB0aGUgcmVzdWx0IHR1cGxlIGFyZSBub3QgdXNhYmxlLgogCiAKKy4uIGZ1bmN0aW9uOjogcGFyc2VkYXRlX3RvX2RhdGV0aW1lKGRhdGUpCisKKyAgIFRoZSBpbnZlcnNlIG9mIDpmdW5jOmBmb3JtYXRfZGF0ZXRpbWVgLiAgUGVyZm9ybXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMKKyAgIDpmdW5jOmBwYXJzZWRhdGVgLCBidXQgb24gc3VjY2VzcyByZXR1cm5zIGEgOm1vZDpgfmRhdGV0aW1lLmRhdGV0aW1lYC4gIElmCisgICB0aGUgaW5wdXQgZGF0ZSBoYXMgYSB0aW1lem9uZSBvZiBgYC0wMDAwYGAsIHRoZSBgYGRhdGV0aW1lYGAgd2lsbCBiZSBhIG5haXZlCisgICBgYGRhdGV0aW1lYGAsIGFuZCBpZiB0aGUgZGF0ZSBpcyBjb25mb3JtaW5nIHRvIHRoZSBSRkNzIGl0IHdpbGwgcmVwcmVzZW50IGEKKyAgIHRpbWUgaW4gVVRDIGJ1dCB3aXRoIG5vIGluZGljYXRpb24gb2YgdGhlIGFjdHVhbCBzb3VyY2UgdGltZXpvbmUgb2YgdGhlCisgICBtZXNzYWdlIHRoZSBkYXRlIGNvbWVzIGZyb20uICBJZiB0aGUgaW5wdXQgZGF0ZSBoYXMgYW55IG90aGVyIHZhbGlkIHRpbWV6b25lCisgICBvZmZzZXQsIHRoZSBgYGRhdGV0aW1lYGAgd2lsbCBiZSBhbiBhd2FyZSBgYGRhdGV0aW1lYGAgd2l0aCB0aGUKKyAgIGNvcnJlc3BvbmRpbmcgYSA6Y2xhc3M6YH5kYXRldGltZS50aW1lem9uZWAgOmNsYXNzOmB+ZGF0ZXRpbWUudHppbmZvYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBta3RpbWVfdHoodHVwbGUpCiAKICAgIFR1cm4gYSAxMC10dXBsZSBhcyByZXR1cm5lZCBieSA6ZnVuYzpgcGFyc2VkYXRlX3R6YCBpbnRvIGEgVVRDIHRpbWVzdGFtcC4gIEl0CkBAIC0xMDUsNiArMTI3LDM2IEBACiAgICBgYEZhbHNlYGAuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCiAKIAorLi4gZnVuY3Rpb246OiBmb3JtYXRfZGF0ZXRpbWUoZHQsIHVzZWdtdD1GYWxzZSkKKworICAgTGlrZSBgYGZvcm1hdGRhdGVgYCwgYnV0IHRoZSBpbnB1dCBpcyBhIDptb2Q6YGRhdGV0aW1lYCBpbnN0YW5jZS4gIElmIGl0IGlzCisgICBhIG5haXZlIGRhdGV0aW1lLCBpdCBpcyBhc3N1bWVkIHRvIGJlICJVVEMgd2l0aCBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgIHNvdXJjZSB0aW1lem9uZSIsIGFuZCB0aGUgY29udmVudGlvbmFsIGBgLTAwMDBgYCBpcyB1c2VkIGZvciB0aGUgdGltZXpvbmUuCisgICBJZiBpdCBpcyBhbiBhd2FyZSBgYGRhdGV0aW1lYGAsIHRoZW4gdGhlIG51bWVyaWMgdGltZXpvbmUgb2Zmc2V0IGlzIHVzZWQuCisgICBJZiBpdCBpcyBhbiBhd2FyZSB0aW1lem9uZSB3aXRoIG9mZnNldCB6ZXJvLCB0aGVuICp1c2VnbXQqIG1heSBiZSBzZXQgdG8KKyAgIGBgVHJ1ZWBgLCBpbiB3aGljaCBjYXNlIHRoZSBzdHJpbmcgYGBHTVRgYCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG51bWVyaWMKKyAgIHRpbWV6b25lIG9mZnNldC4gIFRoaXMgcHJvdmlkZXMgYSB3YXkgdG8gZ2VuZXJhdGUgc3RhbmRhcmRzIGNvbmZvcm1hbnQgSFRUUAorICAgZGF0ZSBoZWFkZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGxvY2FsdGltZShkdD1Ob25lKQorCisgICAgUmV0dXJuIGxvY2FsIHRpbWUgYXMgYW4gYXdhcmUgZGF0ZXRpbWUgb2JqZWN0LiAgSWYgY2FsbGVkIHdpdGhvdXQKKyAgICBhcmd1bWVudHMsIHJldHVybiBjdXJyZW50IHRpbWUuICBPdGhlcndpc2UgKmR0KiBhcmd1bWVudCBzaG91bGQgYmUgYQorICAgIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZSwgYW5kIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUgbG9jYWwgdGltZQorICAgIHpvbmUgYWNjb3JkaW5nIHRvIHRoZSBzeXN0ZW0gdGltZSB6b25lIGRhdGFiYXNlLiAgSWYgKmR0KiBpcyBuYWl2ZSAodGhhdAorICAgIGlzLCBgYGR0LnR6aW5mb2BgIGlzIGBgTm9uZWBgKSwgaXQgaXMgYXNzdW1lZCB0byBiZSBpbiBsb2NhbCB0aW1lLiAgSW4gdGhpcworICAgIGNhc2UsIGEgcG9zaXRpdmUgb3IgemVybyB2YWx1ZSBmb3IgKmlzZHN0KiBjYXVzZXMgYGBsb2NhbHRpbWVgYCB0byBwcmVzdW1lCisgICAgaW5pdGlhbGx5IHRoYXQgc3VtbWVyIHRpbWUgKGZvciBleGFtcGxlLCBEYXlsaWdodCBTYXZpbmcgVGltZSkgaXMgb3IgaXMgbm90CisgICAgKHJlc3BlY3RpdmVseSkgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICBBIG5lZ2F0aXZlIHZhbHVlIGZvcgorICAgICppc2RzdCogY2F1c2VzIHRoZSBgYGxvY2FsdGltZWBgIHRvIGF0dGVtcHQgdG8gZGl2aW5lIHdoZXRoZXIgc3VtbWVyIHRpbWUKKyAgICBpcyBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogbWFrZV9tc2dpZChpZHN0cmluZz1Ob25lLCBkb21haW49Tm9uZSkKIAogICAgUmV0dXJucyBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYW4gOnJmYzpgMjgyMmBcIC1jb21wbGlhbnQKQEAgLTExNSw3ICsxNjcsOCBAQAogICAgbWF5IGJlIHVzZWZ1bCBjZXJ0YWluIGNhc2VzLCBzdWNoIGFzIGEgY29uc3RydWN0aW5nIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0CiAgICB1c2VzIGEgY29uc2lzdGVudCBkb21haW4gbmFtZSBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIGRvbWFpbiBrZXl3b3JkIGFkZGVkCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgQWRkZWQgdGhlICpkb21haW4qIGtleXdvcmQuCiAKIAogLi4gZnVuY3Rpb246OiBkZWNvZGVfcmZjMjIzMShzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAppbmRleCBjYTNhZDNlLi42YmE1OGQ0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdApAQCAtMzQsNiArMzQsMjcgQEAKIGRlZmluaW5nIGV4Y2VwdGlvbnMgaXMgYXZhaWxhYmxlIGluIHRoZSBQeXRob24gVHV0b3JpYWwgdW5kZXIKIDpyZWY6YHR1dC11c2VyZXhjZXB0aW9uc2AuCiAKK1doZW4gcmFpc2luZyAob3IgcmUtcmFpc2luZykgYW4gZXhjZXB0aW9uIGluIGFuIDprZXl3b3JkOmBleGNlcHRgIGNsYXVzZQorOmF0dHI6YF9fY29udGV4dF9fYCBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byB0aGUgbGFzdCBleGNlcHRpb24gY2F1Z2h0OyBpZiB0aGUKK25ldyBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgdGhlIHRyYWNlYmFjayB0aGF0IGlzIGV2ZW50dWFsbHkgZGlzcGxheWVkIHdpbGwKK2luY2x1ZGUgdGhlIG9yaWdpbmF0aW5nIGV4Y2VwdGlvbihzKSBhbmQgdGhlIGZpbmFsIGV4Y2VwdGlvbi4KKworVGhpcyBpbXBsaWNpdCBleGNlcHRpb24gY2hhaW4gY2FuIGJlIG1hZGUgZXhwbGljaXQgYnkgdXNpbmcgOmtleXdvcmQ6YGZyb21gIHdpdGgKKzprZXl3b3JkOmByYWlzZWAuICBUaGUgc2luZ2xlIGFyZ3VtZW50IHRvIDprZXl3b3JkOmBmcm9tYCBtdXN0IGJlIGFuIGV4Y2VwdGlvbgorb3IgYGBOb25lYGAuIEl0IHdpbGwgYmUgc2V0IGFzIDphdHRyOmBfX2NhdXNlX19gIG9uIHRoZSByYWlzZWQgZXhjZXB0aW9uLgorU2V0dGluZyA6YXR0cjpgX19jYXVzZV9fYCBpbXBsaWNpdGx5IHNldHMgdGhlIDphdHRyOmBfX3N1cHByZXNzX2NvbnRleHRfX2AgdG8KK2BgVHJ1ZWBgLiBJZiA6YXR0cjpgX19jYXVzZV9fYCBpcyBhbiBleGNlcHRpb24sIGl0IHdpbGwgYmUgZGlzcGxheWVkLiBJZgorOmF0dHI6YF9fY2F1c2VfX2AgaXMgcHJlc2VudCBvciA6YXR0cjpgX19zdXBwcmVzc19jb250ZXh0X19gIGhhcyBhIHRydWUgdmFsdWUsCis6YXR0cjpgX19jb250ZXh0X19gIHdpbGwgbm90IGJlIGRpc3BsYXllZC4KKworSW4gZWl0aGVyIGNhc2UsIHRoZSBkZWZhdWx0IGV4Y2VwdGlvbiBoYW5kbGluZyBjb2RlIHdpbGwgbm90IGRpc3BsYXkgYW55IG9mIHRoZQorcmVtYWluaW5nIGxpbmtzIGluIHRoZSA6YXR0cjpgX19jb250ZXh0X19gIGNoYWluIGlmIDphdHRyOmBfX2NhdXNlX19gIGhhcyBiZWVuCitzZXQuCisKKworQmFzZSBjbGFzc2VzCistLS0tLS0tLS0tLS0KKwogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSB1c2VkIG1vc3RseSBhcyBiYXNlIGNsYXNzZXMgZm9yIG90aGVyIGV4Y2VwdGlvbnMuCiAKIC4uIGV4Y2VwdGlvbjo6IEJhc2VFeGNlcHRpb24KQEAgLTkwLDI3ICsxMTEsOCBAQAogICAgY2FuIGJlIHJhaXNlZCBkaXJlY3RseSBieSA6ZnVuYzpgY29kZWNzLmxvb2t1cGAuCiAKIAotLi4gZXhjZXB0aW9uOjogRW52aXJvbm1lbnRFcnJvcgotCi0gICBUaGUgYmFzZSBjbGFzcyBmb3IgZXhjZXB0aW9ucyB0aGF0IGNhbiBvY2N1ciBvdXRzaWRlIHRoZSBQeXRob24gc3lzdGVtOgotICAgOmV4YzpgSU9FcnJvcmAsIDpleGM6YE9TRXJyb3JgLiAgV2hlbiBleGNlcHRpb25zIG9mIHRoaXMgdHlwZSBhcmUgY3JlYXRlZCB3aXRoIGEKLSAgIDItdHVwbGUsIHRoZSBmaXJzdCBpdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUgaW5zdGFuY2UncyA6YXR0cjpgZXJybm9gIGF0dHJpYnV0ZQotICAgKGl0IGlzIGFzc3VtZWQgdG8gYmUgYW4gZXJyb3IgbnVtYmVyKSwgYW5kIHRoZSBzZWNvbmQgaXRlbSBpcyBhdmFpbGFibGUgb24gdGhlCi0gICA6YXR0cjpgc3RyZXJyb3JgIGF0dHJpYnV0ZSAoaXQgaXMgdXN1YWxseSB0aGUgYXNzb2NpYXRlZCBlcnJvciBtZXNzYWdlKS4gIFRoZQotICAgdHVwbGUgaXRzZWxmIGlzIGFsc28gYXZhaWxhYmxlIG9uIHRoZSA6YXR0cjpgYXJnc2AgYXR0cmlidXRlLgotCi0gICBXaGVuIGFuIDpleGM6YEVudmlyb25tZW50RXJyb3JgIGV4Y2VwdGlvbiBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIDMtdHVwbGUsIHRoZQotICAgZmlyc3QgdHdvIGl0ZW1zIGFyZSBhdmFpbGFibGUgYXMgYWJvdmUsIHdoaWxlIHRoZSB0aGlyZCBpdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUKLSAgIDphdHRyOmBmaWxlbmFtZWAgYXR0cmlidXRlLiAgSG93ZXZlciwgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUKLSAgIDphdHRyOmBhcmdzYCBhdHRyaWJ1dGUgY29udGFpbnMgb25seSBhIDItdHVwbGUgb2YgdGhlIGZpcnN0IHR3byBjb25zdHJ1Y3RvcgotICAgYXJndW1lbnRzLgotCi0gICBUaGUgOmF0dHI6YGZpbGVuYW1lYCBhdHRyaWJ1dGUgaXMgYGBOb25lYGAgd2hlbiB0aGlzIGV4Y2VwdGlvbiBpcyBjcmVhdGVkIHdpdGgKLSAgIG90aGVyIHRoYW4gMyBhcmd1bWVudHMuICBUaGUgOmF0dHI6YGVycm5vYCBhbmQgOmF0dHI6YHN0cmVycm9yYCBhdHRyaWJ1dGVzIGFyZQotICAgYWxzbyBgYE5vbmVgYCB3aGVuIHRoZSBpbnN0YW5jZSB3YXMgY3JlYXRlZCB3aXRoIG90aGVyIHRoYW4gMiBvciAzIGFyZ3VtZW50cy4KLSAgIEluIHRoaXMgbGFzdCBjYXNlLCA6YXR0cjpgYXJnc2AgY29udGFpbnMgdGhlIHZlcmJhdGltIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBhcyBhCi0gICB0dXBsZS4KLQorQ29uY3JldGUgZXhjZXB0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHRoZSBleGNlcHRpb25zIHRoYXQgYXJlIHVzdWFsbHkgcmFpc2VkLgogCkBAIC0xNTEsMjEgKzE1MywxOSBAQAogICAgaXQgaXMgdGVjaG5pY2FsbHkgbm90IGFuIGVycm9yLgogCiAKLS4uIGV4Y2VwdGlvbjo6IElPRXJyb3IKLQotICAgUmFpc2VkIHdoZW4gYW4gSS9PIG9wZXJhdGlvbiAoc3VjaCBhcyB0aGUgYnVpbHQtaW4gOmZ1bmM6YHByaW50YCBvcgotICAgOmZ1bmM6YG9wZW5gIGZ1bmN0aW9ucyBvciBhIG1ldGhvZCBvZiBhIDp0ZXJtOmBmaWxlIG9iamVjdGApIGZhaWxzIGZvciBhbgotICAgSS9PLXJlbGF0ZWQgcmVhc29uLCBlLmcuLCAiZmlsZSBub3QgZm91bmQiIG9yICJkaXNrIGZ1bGwiLgotCi0gICBUaGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYC4gIFNlZSB0aGUgZGlzY3Vzc2lvbiBhYm92ZQotICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9uIGluc3RhbmNlIGF0dHJpYnV0ZXMuCi0KLQogLi4gZXhjZXB0aW9uOjogSW1wb3J0RXJyb3IKIAogICAgUmFpc2VkIHdoZW4gYW4gOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZhaWxzIHRvIGZpbmQgdGhlIG1vZHVsZSBkZWZpbml0aW9uCiAgICBvciB3aGVuIGEgYGBmcm9tIC4uLiBpbXBvcnRgYCBmYWlscyB0byBmaW5kIGEgbmFtZSB0aGF0IGlzIHRvIGJlIGltcG9ydGVkLgogCisgICBUaGUgOmF0dHI6YG5hbWVgIGFuZCA6YXR0cjpgcGF0aGAgYXR0cmlidXRlcyBjYW4gYmUgc2V0IHVzaW5nIGtleXdvcmQtb25seQorICAgYXJndW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3Rvci4gV2hlbiBzZXQgdGhleSByZXByZXNlbnQgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZQorICAgdGhhdCB3YXMgYXR0ZW1wdGVkIHRvIGJlIGltcG9ydGVkIGFuZCB0aGUgcGF0aCB0byBhbnkgZmlsZSB3aGljaCB0cmlnZ2VyZWQKKyAgIHRoZSBleGNlcHRpb24sIHJlc3BlY3RpdmVseS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSA6YXR0cjpgbmFtZWAgYW5kIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGVzLgorCiAKIC4uIGV4Y2VwdGlvbjo6IEluZGV4RXJyb3IKIApAQCAtMjIxLDE3ICsyMjEsMzAgQEAKIAogICAgLi4gaW5kZXg6OiBtb2R1bGU6IGVycm5vCiAKLSAgIFRoaXMgZXhjZXB0aW9uIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYC4gIEl0IGlzIHJhaXNlZCB3aGVuIGEKLSAgIGZ1bmN0aW9uIHJldHVybnMgYSBzeXN0ZW0tcmVsYXRlZCBlcnJvciAobm90IGZvciBpbGxlZ2FsIGFyZ3VtZW50IHR5cGVzIG9yCi0gICBvdGhlciBpbmNpZGVudGFsIGVycm9ycykuICBUaGUgOmF0dHI6YGVycm5vYCBhdHRyaWJ1dGUgaXMgYSBudW1lcmljIGVycm9yCi0gICBjb2RlIGZyb20gOmM6ZGF0YTpgZXJybm9gLCBhbmQgdGhlIDphdHRyOmBzdHJlcnJvcmAgYXR0cmlidXRlIGlzIHRoZQotICAgY29ycmVzcG9uZGluZyBzdHJpbmcsIGFzIHdvdWxkIGJlIHByaW50ZWQgYnkgdGhlIEMgZnVuY3Rpb24gOmM6ZnVuYzpgcGVycm9yYC4KLSAgIFNlZSB0aGUgbW9kdWxlIDptb2Q6YGVycm5vYCwgd2hpY2ggY29udGFpbnMgbmFtZXMgZm9yIHRoZSBlcnJvciBjb2RlcyBkZWZpbmVkCi0gICBieSB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtLgorICAgVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYSBzeXN0ZW0gZnVuY3Rpb24gcmV0dXJucyBhIHN5c3RlbS1yZWxhdGVkCisgICBlcnJvciwgaW5jbHVkaW5nIEkvTyBmYWlsdXJlcyBzdWNoIGFzICJmaWxlIG5vdCBmb3VuZCIgb3IgImRpc2sgZnVsbCIKKyAgIChub3QgZm9yIGlsbGVnYWwgYXJndW1lbnQgdHlwZXMgb3Igb3RoZXIgaW5jaWRlbnRhbCBlcnJvcnMpLiAgT2Z0ZW4gYQorICAgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAgd2lsbCBhY3R1YWxseSBiZSByYWlzZWQgYXMgZGVzY3JpYmVkIGluCisgICBgT1MgZXhjZXB0aW9uc2BfIGJlbG93LiAgVGhlIDphdHRyOmBlcnJub2AgYXR0cmlidXRlIGlzIGEgbnVtZXJpYyBlcnJvcgorICAgY29kZSBmcm9tIHRoZSBDIHZhcmlhYmxlIDpjOmRhdGE6YGVycm5vYC4KIAotICAgRm9yIGV4Y2VwdGlvbnMgdGhhdCBpbnZvbHZlIGEgZmlsZSBzeXN0ZW0gcGF0aCAoc3VjaCBhcyA6ZnVuYzpgY2hkaXJgIG9yCi0gICA6ZnVuYzpgdW5saW5rYCksIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBjb250YWluIGEgdGhpcmQgYXR0cmlidXRlLAotICAgOmF0dHI6YGZpbGVuYW1lYCwgd2hpY2ggaXMgdGhlIGZpbGUgbmFtZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorICAgVW5kZXIgV2luZG93cywgdGhlIDphdHRyOmB3aW5lcnJvcmAgYXR0cmlidXRlIGdpdmVzIHlvdSB0aGUgbmF0aXZlCisgICBXaW5kb3dzIGVycm9yIGNvZGUuICBUaGUgOmF0dHI6YGVycm5vYCBhdHRyaWJ1dGUgaXMgdGhlbiBhbiBhcHByb3hpbWF0ZQorICAgdHJhbnNsYXRpb24sIGluIFBPU0lYIHRlcm1zLCBvZiB0aGF0IG5hdGl2ZSBlcnJvciBjb2RlLgorCisgICBVbmRlciBhbGwgcGxhdGZvcm1zLCB0aGUgOmF0dHI6YHN0cmVycm9yYCBhdHRyaWJ1dGUgaXMgdGhlIGNvcnJlc3BvbmRpbmcKKyAgIGVycm9yIG1lc3NhZ2UgYXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKGFzIGZvcm1hdHRlZCBieSB0aGUgQworICAgZnVuY3Rpb25zIDpjOmZ1bmM6YHBlcnJvcmAgdW5kZXIgUE9TSVgsIGFuZCA6YzpmdW5jOmBGb3JtYXRNZXNzYWdlYAorICAgV2luZG93cykuCisKKyAgIEZvciBleGNlcHRpb25zIHRoYXQgaW52b2x2ZSBhIGZpbGUgc3lzdGVtIHBhdGggKHN1Y2ggYXMgOmZ1bmM6YG9wZW5gIG9yCisgICA6ZnVuYzpgb3MudW5saW5rYCksIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBjb250YWluIGFuIGFkZGl0aW9uYWwKKyAgIGF0dHJpYnV0ZSwgOmF0dHI6YGZpbGVuYW1lYCwgd2hpY2ggaXMgdGhlIGZpbGUgbmFtZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAsIDpleGM6YElPRXJyb3JgLCA6ZXhjOmBXaW5kb3dzRXJyb3JgLAorICAgICAgOmV4YzpgVk1TRXJyb3JgLCA6ZXhjOmBzb2NrZXQuZXJyb3JgLCA6ZXhjOmBzZWxlY3QuZXJyb3JgIGFuZAorICAgICAgOmV4YzpgbW1hcC5lcnJvcmAgaGF2ZSBiZWVuIG1lcmdlZCBpbnRvIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGV4Y2VwdGlvbjo6IE92ZXJmbG93RXJyb3IKQEAgLTI2Miw4ICsyNzUsMjAgQEAKIC4uIGV4Y2VwdGlvbjo6IFN0b3BJdGVyYXRpb24KIAogICAgUmFpc2VkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBuZXh0YCBhbmQgYW4gOnRlcm06YGl0ZXJhdG9yYFwncwotICAgOm1ldGg6YF9fbmV4dF9fYCBtZXRob2QgdG8gc2lnbmFsIHRoYXQgdGhlcmUgYXJlIG5vIGZ1cnRoZXIgdmFsdWVzLgorICAgOm1ldGg6YF9fbmV4dF9fYCBtZXRob2QgdG8gc2lnbmFsIHRoYXQgdGhlcmUgYXJlIG5vIGZ1cnRoZXIgaXRlbXMgdG8gYmUKKyAgIHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci4KIAorICAgVGhlIGV4Y2VwdGlvbiBvYmplY3QgaGFzIGEgc2luZ2xlIGF0dHJpYnV0ZSA6YXR0cjpgdmFsdWVgLCB3aGljaCBpcworICAgZ2l2ZW4gYXMgYW4gYXJndW1lbnQgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGV4Y2VwdGlvbiwgYW5kIGRlZmF1bHRzCisgICB0byA6Y29uc3Q6YE5vbmVgLgorCisgICBXaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHJldHVybnMsIGEgbmV3IDpleGM6YFN0b3BJdGVyYXRpb25gIGluc3RhbmNlIGlzCisgICByYWlzZWQsIGFuZCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlCisgICA6YXR0cjpgdmFsdWVgIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3Igb2YgdGhlIGV4Y2VwdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIGBgdmFsdWVgYCBhdHRyaWJ1dGUgYW5kIHRoZSBhYmlsaXR5IGZvciBnZW5lcmF0b3IgZnVuY3Rpb25zIHRvCisgICAgICB1c2UgaXQgdG8gcmV0dXJuIGEgdmFsdWUuCiAKIC4uIGV4Y2VwdGlvbjo6IFN5bnRheEVycm9yCiAKQEAgLTM3MiwyMSArMzk3LDYgQEAKICAgIG1vcmUgcHJlY2lzZSBleGNlcHRpb24gc3VjaCBhcyA6ZXhjOmBJbmRleEVycm9yYC4KIAogCi0uLiBleGNlcHRpb246OiBWTVNFcnJvcgotCi0gICBPbmx5IGF2YWlsYWJsZSBvbiBWTVMuICBSYWlzZWQgd2hlbiBhIFZNUy1zcGVjaWZpYyBlcnJvciBvY2N1cnMuCi0KLQotLi4gZXhjZXB0aW9uOjogV2luZG93c0Vycm9yCi0KLSAgIFJhaXNlZCB3aGVuIGEgV2luZG93cy1zcGVjaWZpYyBlcnJvciBvY2N1cnMgb3Igd2hlbiB0aGUgZXJyb3IgbnVtYmVyIGRvZXMgbm90Ci0gICBjb3JyZXNwb25kIHRvIGFuIDpjOmRhdGE6YGVycm5vYCB2YWx1ZS4gIFRoZSA6YXR0cjpgd2luZXJyb3JgIGFuZAotICAgOmF0dHI6YHN0cmVycm9yYCB2YWx1ZXMgYXJlIGNyZWF0ZWQgZnJvbSB0aGUgcmV0dXJuIHZhbHVlcyBvZiB0aGUKLSAgIDpjOmZ1bmM6YEdldExhc3RFcnJvcmAgYW5kIDpjOmZ1bmM6YEZvcm1hdE1lc3NhZ2VgIGZ1bmN0aW9ucyBmcm9tIHRoZSBXaW5kb3dzCi0gICBQbGF0Zm9ybSBBUEkuIFRoZSA6YXR0cjpgZXJybm9gIHZhbHVlIG1hcHMgdGhlIDphdHRyOmB3aW5lcnJvcmAgdmFsdWUgdG8KLSAgIGNvcnJlc3BvbmRpbmcgYGBlcnJuby5oYGAgdmFsdWVzLiBUaGlzIGlzIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCi0KLQogLi4gZXhjZXB0aW9uOjogWmVyb0RpdmlzaW9uRXJyb3IKIAogICAgUmFpc2VkIHdoZW4gdGhlIHNlY29uZCBhcmd1bWVudCBvZiBhIGRpdmlzaW9uIG9yIG1vZHVsbyBvcGVyYXRpb24gaXMgemVyby4gIFRoZQpAQCAtMzk0LDYgKzQwNCwxMzUgQEAKICAgIG9wZXJhdGlvbi4KIAogCitUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9uczsKK3N0YXJ0aW5nIGZyb20gUHl0aG9uIDMuMywgdGhleSBhcmUgYWxpYXNlcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKworLi4gZXhjZXB0aW9uOjogRW52aXJvbm1lbnRFcnJvcgorCisuLiBleGNlcHRpb246OiBJT0Vycm9yCisKKy4uIGV4Y2VwdGlvbjo6IFZNU0Vycm9yCisKKyAgIE9ubHkgYXZhaWxhYmxlIG9uIFZNUy4KKworLi4gZXhjZXB0aW9uOjogV2luZG93c0Vycm9yCisKKyAgIE9ubHkgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKKworT1MgZXhjZXB0aW9ucworXl5eXl5eXl5eXl5eXgorCitUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHN1YmNsYXNzZXMgb2YgOmV4YzpgT1NFcnJvcmAsIHRoZXkgZ2V0IHJhaXNlZAorZGVwZW5kaW5nIG9uIHRoZSBzeXN0ZW0gZXJyb3IgY29kZS4KKworLi4gZXhjZXB0aW9uOjogQmxvY2tpbmdJT0Vycm9yCisKKyAgIFJhaXNlZCB3aGVuIGFuIG9wZXJhdGlvbiB3b3VsZCBibG9jayBvbiBhbiBvYmplY3QgKGUuZy4gc29ja2V0KSBzZXQKKyAgIGZvciBub24tYmxvY2tpbmcgb3BlcmF0aW9uLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUFHQUlOYGAsIGBgRUFMUkVBRFlgYCwKKyAgIGBgRVdPVUxEQkxPQ0tgYCBhbmQgYGBFSU5QUk9HUkVTU2BgLgorCisgICBJbiBhZGRpdGlvbiB0byB0aG9zZSBvZiA6ZXhjOmBPU0Vycm9yYCwgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBjYW4gaGF2ZQorICAgb25lIG1vcmUgYXR0cmlidXRlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBjaGFyYWN0ZXJzX3dyaXR0ZW4KKworICAgICAgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuIHRvIHRoZSBzdHJlYW0KKyAgICAgIGJlZm9yZSBpdCBibG9ja2VkLiAgVGhpcyBhdHRyaWJ1dGUgaXMgYXZhaWxhYmxlIHdoZW4gdXNpbmcgdGhlCisgICAgICBidWZmZXJlZCBJL08gY2xhc3NlcyBmcm9tIHRoZSA6bW9kOmBpb2AgbW9kdWxlLgorCisuLiBleGNlcHRpb246OiBDaGlsZFByb2Nlc3NFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhbiBvcGVyYXRpb24gb24gYSBjaGlsZCBwcm9jZXNzIGZhaWxlZC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVDSElMRGBgLgorCisuLiBleGNlcHRpb246OiBDb25uZWN0aW9uRXJyb3IKKworICAgQSBiYXNlIGNsYXNzIGZvciBjb25uZWN0aW9uLXJlbGF0ZWQgaXNzdWVzLiAgU3ViY2xhc3NlcyBhcmUKKyAgIDpleGM6YEJyb2tlblBpcGVFcnJvcmAsIDpleGM6YENvbm5lY3Rpb25BYm9ydGVkRXJyb3JgLAorICAgOmV4YzpgQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAgYW5kIDpleGM6YENvbm5lY3Rpb25SZXNldEVycm9yYC4KKworICAgLi4gZXhjZXB0aW9uOjogQnJva2VuUGlwZUVycm9yCisKKyAgICAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIG9uIGEKKyAgICAgIHBpcGUgd2hpbGUgdGhlIG90aGVyIGVuZCBoYXMgYmVlbiBjbG9zZWQsIG9yIHRyeWluZyB0byB3cml0ZSBvbiBhIHNvY2tldAorICAgICAgd2hpY2ggaGFzIGJlZW4gc2h1dGRvd24gZm9yIHdyaXRpbmcuCisgICAgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFUElQRWBgIGFuZCBgYEVTSFVURE9XTmBgLgorCisgICAuLiBleGNlcHRpb246OiBDb25uZWN0aW9uQWJvcnRlZEVycm9yCisKKyAgICAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGF0dGVtcHQKKyAgICAgIGlzIGFib3J0ZWQgYnkgdGhlIHBlZXIuCisgICAgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFQ09OTkFCT1JURURgYC4KKworICAgLi4gZXhjZXB0aW9uOjogQ29ubmVjdGlvblJlZnVzZWRFcnJvcgorCisgICAgICBBIHN1YmNsYXNzIG9mIDpleGM6YENvbm5lY3Rpb25FcnJvcmAsIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBhdHRlbXB0CisgICAgICBpcyByZWZ1c2VkIGJ5IHRoZSBwZWVyLgorICAgICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUNPTk5SRUZVU0VEYGAuCisKKyAgIC4uIGV4Y2VwdGlvbjo6IENvbm5lY3Rpb25SZXNldEVycm9yCisKKyAgICAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGlzCisgICAgICByZXNldCBieSB0aGUgcGVlci4KKyAgICAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVDT05OUkVTRVRgYC4KKworLi4gZXhjZXB0aW9uOjogRmlsZUV4aXN0c0Vycm9yCisKKyAgIFJhaXNlZCB3aGVuIHRyeWluZyB0byBjcmVhdGUgYSBmaWxlIG9yIGRpcmVjdG9yeSB3aGljaCBhbHJlYWR5IGV4aXN0cy4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVFWElTVGBgLgorCisuLiBleGNlcHRpb246OiBGaWxlTm90Rm91bmRFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIGZpbGUgb3IgZGlyZWN0b3J5IGlzIHJlcXVlc3RlZCBidXQgZG9lc24ndCBleGlzdC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVOT0VOVGBgLgorCisuLiBleGNlcHRpb246OiBJbnRlcnJ1cHRlZEVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYnkgYW4gaW5jb21pbmcgc2lnbmFsLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUVJTlRSYGAuCisKKy4uIGV4Y2VwdGlvbjo6IElzQURpcmVjdG9yeUVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgZmlsZSBvcGVyYXRpb24gKHN1Y2ggYXMgOmZ1bmM6YG9zLnJlbW92ZWApIGlzIHJlcXVlc3RlZAorICAgb24gYSBkaXJlY3RvcnkuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFSVNESVJgYC4KKworLi4gZXhjZXB0aW9uOjogTm90QURpcmVjdG9yeUVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgZGlyZWN0b3J5IG9wZXJhdGlvbiAoc3VjaCBhcyA6ZnVuYzpgb3MubGlzdGRpcmApIGlzIHJlcXVlc3RlZAorICAgb24gc29tZXRoaW5nIHdoaWNoIGlzIG5vdCBhIGRpcmVjdG9yeS4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVOT1RESVJgYC4KKworLi4gZXhjZXB0aW9uOjogUGVybWlzc2lvbkVycm9yCisKKyAgIFJhaXNlZCB3aGVuIHRyeWluZyB0byBydW4gYW4gb3BlcmF0aW9uIHdpdGhvdXQgdGhlIGFkZXF1YXRlIGFjY2VzcworICAgcmlnaHRzIC0gZm9yIGV4YW1wbGUgZmlsZXN5c3RlbSBwZXJtaXNzaW9ucy4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVBQ0NFU2BgIGFuZCBgYEVQRVJNYGAuCisKKy4uIGV4Y2VwdGlvbjo6IFByb2Nlc3NMb29rdXBFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIGdpdmVuIHByb2Nlc3MgZG9lc24ndCBleGlzdC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVTUkNIYGAuCisKKy4uIGV4Y2VwdGlvbjo6IFRpbWVvdXRFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIHN5c3RlbSBmdW5jdGlvbiB0aW1lZCBvdXQgYXQgdGhlIHN5c3RlbSBsZXZlbC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVUSU1FRE9VVGBgLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIEFsbCB0aGUgYWJvdmUgOmV4YzpgT1NFcnJvcmAgc3ViY2xhc3NlcyB3ZXJlIGFkZGVkLgorCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTUxYCAtIFJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkKKworCitXYXJuaW5ncworLS0tLS0tLS0KKwogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSB1c2VkIGFzIHdhcm5pbmcgY2F0ZWdvcmllczsgc2VlIHRoZSA6bW9kOmB3YXJuaW5nc2AKIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdCBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA3OWIzMAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKQEAgLTAsMCArMSwxMzYgQEAKKzptb2Q6YGZhdWx0aGFuZGxlcmAgLS0tIER1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogZmF1bHRoYW5kbGVyCisgICA6c3lub3BzaXM6IER1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2suCisKK1RoaXMgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBkdW1wIFB5dGhvbiB0cmFjZWJhY2tzIGV4cGxpY2l0bHksIG9uIGEgZmF1bHQsCithZnRlciBhIHRpbWVvdXQsIG9yIG9uIGEgdXNlciBzaWduYWwuIENhbGwgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgIHRvCitpbnN0YWxsIGZhdWx0IGhhbmRsZXJzIGZvciB0aGUgOmNvbnN0OmBTSUdTRUdWYCwgOmNvbnN0OmBTSUdGUEVgLAorOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgLCBhbmQgOmNvbnN0OmBTSUdJTExgIHNpZ25hbHMuIFlvdSBjYW4gYWxzbworZW5hYmxlIHRoZW0gYXQgc3RhcnR1cCBieSBzZXR0aW5nIHRoZSA6ZW52dmFyOmBQWVRIT05GQVVMVEhBTkRMRVJgIGVudmlyb25tZW50Cit2YXJpYWJsZSBvciBieSB1c2luZyA6b3B0aW9uOmAtWGAgYGBmYXVsdGhhbmRsZXJgYCBjb21tYW5kIGxpbmUgb3B0aW9uLgorCitUaGUgZmF1bHQgaGFuZGxlciBpcyBjb21wYXRpYmxlIHdpdGggc3lzdGVtIGZhdWx0IGhhbmRsZXJzIGxpa2UgQXBwb3J0IG9yIHRoZQorV2luZG93cyBmYXVsdCBoYW5kbGVyLiBUaGUgbW9kdWxlIHVzZXMgYW4gYWx0ZXJuYXRpdmUgc3RhY2sgZm9yIHNpZ25hbCBoYW5kbGVycworaWYgdGhlIDpjOmZ1bmM6YHNpZ2FsdHN0YWNrYCBmdW5jdGlvbiBpcyBhdmFpbGFibGUuIFRoaXMgYWxsb3dzIGl0IHRvIGR1bXAgdGhlCit0cmFjZWJhY2sgZXZlbiBvbiBhIHN0YWNrIG92ZXJmbG93LgorCitUaGUgZmF1bHQgaGFuZGxlciBpcyBjYWxsZWQgb24gY2F0YXN0cm9waGljIGNhc2VzIGFuZCB0aGVyZWZvcmUgY2FuIG9ubHkgdXNlCitzaWduYWwtc2FmZSBmdW5jdGlvbnMgKGUuZy4gaXQgY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBvbiB0aGUgaGVhcCkuIEJlY2F1c2Ugb2YKK3RoaXMgbGltaXRhdGlvbiB0cmFjZWJhY2sgZHVtcGluZyBpcyBtaW5pbWFsIGNvbXBhcmVkIHRvIG5vcm1hbCBQeXRob24KK3RyYWNlYmFja3M6CisKKyogT25seSBBU0NJSSBpcyBzdXBwb3J0ZWQuIFRoZSBgYGJhY2tzbGFzaHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyIGlzIHVzZWQgb24KKyAgZW5jb2RpbmcuCisqIEVhY2ggc3RyaW5nIGlzIGxpbWl0ZWQgdG8gNTAwIGNoYXJhY3RlcnMuCisqIE9ubHkgdGhlIGZpbGVuYW1lLCB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIGxpbmUgbnVtYmVyIGFyZQorICBkaXNwbGF5ZWQuIChubyBzb3VyY2UgY29kZSkKKyogSXQgaXMgbGltaXRlZCB0byAxMDAgZnJhbWVzIGFuZCAxMDAgdGhyZWFkcy4KKworQnkgZGVmYXVsdCwgdGhlIFB5dGhvbiB0cmFjZWJhY2sgaXMgd3JpdHRlbiB0byA6ZGF0YTpgc3lzLnN0ZGVycmAuIFRvIHNlZQordHJhY2ViYWNrcywgYXBwbGljYXRpb25zIG11c3QgYmUgcnVuIGluIHRoZSB0ZXJtaW5hbC4gQSBsb2cgZmlsZSBjYW4KK2FsdGVybmF0aXZlbHkgYmUgcGFzc2VkIHRvIDpmdW5jOmBmYXVsdGhhbmRsZXIuZW5hYmxlYC4KKworVGhlIG1vZHVsZSBpcyBpbXBsZW1lbnRlZCBpbiBDLCBzbyB0cmFjZWJhY2tzIGNhbiBiZSBkdW1wZWQgb24gYSBjcmFzaCBvciB3aGVuCitQeXRob24gaXMgZGVhZGxvY2tlZC4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworRHVtcCB0aGUgdHJhY2ViYWNrCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBkdW1wX3RyYWNlYmFjayhmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpCisKKyAgIER1bXAgdGhlIHRyYWNlYmFja3Mgb2YgYWxsIHRocmVhZHMgaW50byAqZmlsZSouIElmICphbGxfdGhyZWFkcyogaXMKKyAgIGBgRmFsc2VgYCwgZHVtcCBvbmx5IHRoZSBjdXJyZW50IHRocmVhZC4KKworCitGYXVsdCBoYW5kbGVyIHN0YXRlCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogZW5hYmxlKGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgRW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyOiBpbnN0YWxsIGhhbmRsZXJzIGZvciB0aGUgOmNvbnN0OmBTSUdTRUdWYCwKKyAgIDpjb25zdDpgU0lHRlBFYCwgOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgIGFuZCA6Y29uc3Q6YFNJR0lMTGAKKyAgIHNpZ25hbHMgdG8gZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjay4gSWYgKmFsbF90aHJlYWRzKiBpcyBgYFRydWVgYCwKKyAgIHByb2R1Y2UgdHJhY2ViYWNrcyBmb3IgZXZlcnkgcnVubmluZyB0aHJlYWQuIE90aGVyd2lzZSwgZHVtcCBvbmx5IHRoZSBjdXJyZW50CisgICB0aHJlYWQuCisKKy4uIGZ1bmN0aW9uOjogZGlzYWJsZSgpCisKKyAgIERpc2FibGUgdGhlIGZhdWx0IGhhbmRsZXI6IHVuaW5zdGFsbCB0aGUgc2lnbmFsIGhhbmRsZXJzIGluc3RhbGxlZCBieQorICAgOmZ1bmM6YGVuYWJsZWAuCisKKy4uIGZ1bmN0aW9uOjogaXNfZW5hYmxlZCgpCisKKyAgIENoZWNrIGlmIHRoZSBmYXVsdCBoYW5kbGVyIGlzIGVuYWJsZWQuCisKKworRHVtcCB0aGUgdHJhY2ViYWNrcyBhZnRlciBhIHRpbWVvdXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogZHVtcF90cmFjZWJhY2tzX2xhdGVyKHRpbWVvdXQsIHJlcGVhdD1GYWxzZSwgZmlsZT1zeXMuc3RkZXJyLCBleGl0PUZhbHNlKQorCisgICBEdW1wIHRoZSB0cmFjZWJhY2tzIG9mIGFsbCB0aHJlYWRzLCBhZnRlciBhIHRpbWVvdXQgb2YgKnRpbWVvdXQqIHNlY29uZHMsIG9yCisgICBldmVyeSAqdGltZW91dCogc2Vjb25kcyBpZiAqcmVwZWF0KiBpcyBgYFRydWVgYC4gIElmICpleGl0KiBpcyBgYFRydWVgYCwgY2FsbAorICAgOmM6ZnVuYzpgX2V4aXRgIHdpdGggc3RhdHVzPTEgYWZ0ZXIgZHVtcGluZyB0aGUgdHJhY2ViYWNrcy4gIChOb3RlCisgICA6YzpmdW5jOmBfZXhpdGAgZXhpdHMgdGhlIHByb2Nlc3MgaW1tZWRpYXRlbHksIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgZG8gYW55CisgICBjbGVhbnVwIGxpa2UgZmx1c2hpbmcgZmlsZSBidWZmZXJzLikgSWYgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB0d2ljZSwgdGhlIG5ldworICAgY2FsbCByZXBsYWNlcyBwcmV2aW91cyBwYXJhbWV0ZXJzIGFuZCByZXNldHMgdGhlIHRpbWVvdXQuIFRoZSB0aW1lciBoYXMgYQorICAgc3ViLXNlY29uZCByZXNvbHV0aW9uLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIHVzaW5nIGEgd2F0Y2hkb2cgdGhyZWFkIGFuZCB0aGVyZWZvcmUgaXMgbm90CisgICBhdmFpbGFibGUgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggdGhyZWFkcyBkaXNhYmxlZC4KKworLi4gZnVuY3Rpb246OiBjYW5jZWxfZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkKKworICAgQ2FuY2VsIHRoZSBsYXN0IGNhbGwgdG8gOmZ1bmM6YGR1bXBfdHJhY2ViYWNrc19sYXRlcmAuCisKKworRHVtcCB0aGUgdHJhY2ViYWNrIG9uIGEgdXNlciBzaWduYWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogcmVnaXN0ZXIoc2lnbnVtLCBmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUsIGNoYWluPUZhbHNlKQorCisgICBSZWdpc3RlciBhIHVzZXIgc2lnbmFsOiBpbnN0YWxsIGEgaGFuZGxlciBmb3IgdGhlICpzaWdudW0qIHNpZ25hbCB0byBkdW1wCisgICB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzLCBvciBvZiB0aGUgY3VycmVudCB0aHJlYWQgaWYgKmFsbF90aHJlYWRzKiBpcworICAgYGBGYWxzZWBgLCBpbnRvICpmaWxlKi4gQ2FsbCB0aGUgcHJldmlvdXMgaGFuZGxlciBpZiBjaGFpbiBpcyBgYFRydWVgYC4KKworICAgTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgorCisuLiBmdW5jdGlvbjo6IHVucmVnaXN0ZXIoc2lnbnVtKQorCisgICBVbnJlZ2lzdGVyIGEgdXNlciBzaWduYWw6IHVuaW5zdGFsbCB0aGUgaGFuZGxlciBvZiB0aGUgKnNpZ251bSogc2lnbmFsCisgICBpbnN0YWxsZWQgYnkgOmZ1bmM6YHJlZ2lzdGVyYC4gUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzaWduYWwgd2FzIHJlZ2lzdGVyZWQsCisgICBgYEZhbHNlYGAgb3RoZXJ3aXNlLgorCisgICBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKKworRmlsZSBkZXNjcmlwdG9yIGlzc3VlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOmZ1bmM6YGVuYWJsZWAsIDpmdW5jOmBkdW1wX3RyYWNlYmFja3NfbGF0ZXJgIGFuZCA6ZnVuYzpgcmVnaXN0ZXJgIGtlZXAgdGhlCitmaWxlIGRlc2NyaXB0b3Igb2YgdGhlaXIgKmZpbGUqIGFyZ3VtZW50LiBJZiB0aGUgZmlsZSBpcyBjbG9zZWQgYW5kIGl0cyBmaWxlCitkZXNjcmlwdG9yIGlzIHJldXNlZCBieSBhIG5ldyBmaWxlLCBvciBpZiA6ZnVuYzpgb3MuZHVwMmAgaXMgdXNlZCB0byByZXBsYWNlCit0aGUgZmlsZSBkZXNjcmlwdG9yLCB0aGUgdHJhY2ViYWNrIHdpbGwgYmUgd3JpdHRlbiBpbnRvIGEgZGlmZmVyZW50IGZpbGUuIENhbGwKK3RoZXNlIGZ1bmN0aW9ucyBhZ2FpbiBlYWNoIHRpbWUgdGhhdCB0aGUgZmlsZSBpcyByZXBsYWNlZC4KKworCitFeGFtcGxlCistLS0tLS0tCisKK0V4YW1wbGUgb2YgYSBzZWdtZW50YXRpb24gZmF1bHQgb24gTGludXg6IDo6CisKKyAgICAkIHB5dGhvbiAtcSAtWCBmYXVsdGhhbmRsZXIKKyAgICA+Pj4gaW1wb3J0IGN0eXBlcworICAgID4+PiBjdHlwZXMuc3RyaW5nX2F0KDApCisgICAgRmF0YWwgUHl0aG9uIGVycm9yOiBTZWdtZW50YXRpb24gZmF1bHQKKworICAgIEN1cnJlbnQgdGhyZWFkIDB4MDAwMDdmYjg5OWYzOTcwMDoKKyAgICAgIEZpbGUgIi9ob21lL3B5dGhvbi9jcHl0aG9uL0xpYi9jdHlwZXMvX19pbml0X18ucHkiLCBsaW5lIDQ4NiBpbiBzdHJpbmdfYXQKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEgaW4gPG1vZHVsZT4KKyAgICBTZWdtZW50YXRpb24gZmF1bHQKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmNudGwucnN0IGIvRG9jL2xpYnJhcnkvZmNudGwucnN0CmluZGV4IDYxOTI0MDAuLjlhOWNkYzEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mY250bC5yc3QKQEAgLTE5LDYgKzE5LDExIEBACiBgYHN5cy5zdGRpbi5maWxlbm8oKWBgLCBvciBhIDpjbGFzczpgaW8uSU9CYXNlYCBvYmplY3QsIHN1Y2ggYXMgYGBzeXMuc3RkaW5gYAogaXRzZWxmLCB3aGljaCBwcm92aWRlcyBhIDptZXRoOmBmaWxlbm9gIHRoYXQgcmV0dXJucyBhIGdlbnVpbmUgZmlsZSBkZXNjcmlwdG9yLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgT3BlcmF0aW9ucyBpbiB0aGlzIG1vZHVsZSB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgSU9FcnJvcmAgd2hlcmUgdGhleSBub3cKKyAgIHJhaXNlIGEgOmV4YzpgT1NFcnJvcmAuCisKKwogVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAKQEAgLTQwLDcgKzQ1LDcgQEAKICAgIGxhcmdlciB0aGFuIDEwMjQgYnl0ZXMsIHRoaXMgaXMgbW9zdCBsaWtlbHkgdG8gcmVzdWx0IGluIGEgc2VnbWVudGF0aW9uCiAgICB2aW9sYXRpb24gb3IgYSBtb3JlIHN1YnRsZSBkYXRhIGNvcnJ1cHRpb24uCiAKLSAgIElmIHRoZSA6YzpmdW5jOmBmY250bGAgZmFpbHMsIGFuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZC4KKyAgIElmIHRoZSA6YzpmdW5jOmBmY250bGAgZmFpbHMsIGFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KIAogCiAuLiBmdW5jdGlvbjo6IGlvY3RsKGZkLCBvcFssIGFyZ1ssIG11dGF0ZV9mbGFnXV0pCkBAIC0xMDcsNyArMTEyLDcgQEAKICAgIFdoZW4gKm9wZXJhdGlvbiogaXMgOmNvbnN0OmBMT0NLX1NIYCBvciA6Y29uc3Q6YExPQ0tfRVhgLCBpdCBjYW4gYWxzbyBiZQogICAgYml0d2lzZSBPUmVkIHdpdGggOmNvbnN0OmBMT0NLX05CYCB0byBhdm9pZCBibG9ja2luZyBvbiBsb2NrIGFjcXVpc2l0aW9uLgogICAgSWYgOmNvbnN0OmBMT0NLX05CYCBpcyB1c2VkIGFuZCB0aGUgbG9jayBjYW5ub3QgYmUgYWNxdWlyZWQsIGFuCi0gICA6ZXhjOmBJT0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsIGhhdmUgYW4gKmVycm5vKgorICAgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQgYW5kIHRoZSBleGNlcHRpb24gd2lsbCBoYXZlIGFuICplcnJubyoKICAgIGF0dHJpYnV0ZSBzZXQgdG8gOmNvbnN0OmBFQUNDRVNgIG9yIDpjb25zdDpgRUFHQUlOYCAoZGVwZW5kaW5nIG9uIHRoZQogICAgb3BlcmF0aW5nIHN5c3RlbTsgZm9yIHBvcnRhYmlsaXR5LCBjaGVjayBmb3IgYm90aCB2YWx1ZXMpLiAgT24gYXQgbGVhc3Qgc29tZQogICAgc3lzdGVtcywgOmNvbnN0OmBMT0NLX0VYYCBjYW4gb25seSBiZSB1c2VkIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJzIHRvIGEKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZpbGVjbXAucnN0IGIvRG9jL2xpYnJhcnkvZmlsZWNtcC5yc3QKaW5kZXggZGUyMGZiMS4uYWRkNjhhMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmlsZWNtcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmlsZWNtcC5yc3QKQEAgLTIxLDExICsyMSw4IEBACiAgICBDb21wYXJlIHRoZSBmaWxlcyBuYW1lZCAqZjEqIGFuZCAqZjIqLCByZXR1cm5pbmcgYGBUcnVlYGAgaWYgdGhleSBzZWVtIGVxdWFsLAogICAgYGBGYWxzZWBgIG90aGVyd2lzZS4KIAotICAgVW5sZXNzICpzaGFsbG93KiBpcyBnaXZlbiBhbmQgaXMgZmFsc2UsIGZpbGVzIHdpdGggaWRlbnRpY2FsIDpmdW5jOmBvcy5zdGF0YAotICAgc2lnbmF0dXJlcyBhcmUgdGFrZW4gdG8gYmUgZXF1YWwuCi0KLSAgIEZpbGVzIHRoYXQgd2VyZSBjb21wYXJlZCB1c2luZyB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IGJlIGNvbXBhcmVkIGFnYWluIHVubGVzcwotICAgdGhlaXIgOmZ1bmM6YG9zLnN0YXRgIHNpZ25hdHVyZSBjaGFuZ2VzLgorICAgSWYgKnNoYWxsb3cqIGlzIHRydWUsIGZpbGVzIHdpdGggaWRlbnRpY2FsIDpmdW5jOmBvcy5zdGF0YCBzaWduYXR1cmVzIGFyZQorICAgdGFrZW4gdG8gYmUgZXF1YWwuICBPdGhlcndpc2UsIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZXMgYXJlIGNvbXBhcmVkLgogCiAgICBOb3RlIHRoYXQgbm8gZXh0ZXJuYWwgcHJvZ3JhbXMgYXJlIGNhbGxlZCBmcm9tIHRoaXMgZnVuY3Rpb24sIGdpdmluZyBpdAogICAgcG9ydGFiaWxpdHkgYW5kIGVmZmljaWVuY3kuCkBAIC01MSwyMyArNDgsMTEgQEAKICAgIG9uZSBvZiB0aGUgdGhyZWUgcmV0dXJuZWQgbGlzdHMuCiAKIAotRXhhbXBsZTo6Ci0KLSAgID4+PiBpbXBvcnQgZmlsZWNtcAotICAgPj4+IGZpbGVjbXAuY21wKCd1bmRvYy5yc3QnLCAndW5kb2MucnN0JykKLSAgIFRydWUKLSAgID4+PiBmaWxlY21wLmNtcCgndW5kb2MucnN0JywgJ2luZGV4LnJzdCcpCi0gICBGYWxzZQotCi0KIC4uIF9kaXJjbXAtb2JqZWN0czoKIAogVGhlIDpjbGFzczpgZGlyY21wYCBjbGFzcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi06Y2xhc3M6YGRpcmNtcGAgaW5zdGFuY2VzIGFyZSBidWlsdCB1c2luZyB0aGlzIGNvbnN0cnVjdG9yOgotCi0KIC4uIGNsYXNzOjogZGlyY21wKGEsIGIsIGlnbm9yZT1Ob25lLCBoaWRlPU5vbmUpCiAKICAgIENvbnN0cnVjdCBhIG5ldyBkaXJlY3RvcnkgY29tcGFyaXNvbiBvYmplY3QsIHRvIGNvbXBhcmUgdGhlIGRpcmVjdG9yaWVzICphKiBhbmQKQEAgLTgzLDcgKzY4LDcgQEAKIAogICAgLi4gbWV0aG9kOjogcmVwb3J0KCkKIAotICAgICAgUHJpbnQgKHRvIGBgc3lzLnN0ZG91dGBgKSBhIGNvbXBhcmlzb24gYmV0d2VlbiAqYSogYW5kICpiKi4KKyAgICAgIFByaW50ICh0byA6ZGF0YTpgc3lzLnN0ZG91dGApIGEgY29tcGFyaXNvbiBiZXR3ZWVuICphKiBhbmQgKmIqLgogCiAKICAgIC4uIG1ldGhvZDo6IHJlcG9ydF9wYXJ0aWFsX2Nsb3N1cmUoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdCBiL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKaW5kZXggYWM0NDMxMS4uZjhlYzQzNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CkBAIC0yOCw3ICsyOCwxMCBAQAogQWxsIGZpbGVzIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIGJ5IGRlZmF1bHQsIGJ1dCB5b3UgY2FuIG92ZXJyaWRlIHRoaXMgYnkKIHNwZWNpZnlpbmcgdGhlICptb2RlKiBwYXJhbWV0ZXIgaW4gdGhlIGNhbGwgdG8gOmZ1bmM6YC5pbnB1dGAgb3IKIDpjbGFzczpgRmlsZUlucHV0YC4gIElmIGFuIEkvTyBlcnJvciBvY2N1cnMgZHVyaW5nIG9wZW5pbmcgb3IgcmVhZGluZyBhIGZpbGUsCi06ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQuCis6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZDsgaXQgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiBJZiBgYHN5cy5zdGRpbmBgIGlzIHVzZWQgbW9yZSB0aGFuIG9uY2UsIHRoZSBzZWNvbmQgYW5kIGZ1cnRoZXIgdXNlIHdpbGwgcmV0dXJuCiBubyBsaW5lcywgZXhjZXB0IHBlcmhhcHMgZm9yIGludGVyYWN0aXZlIHVzZSwgb3IgaWYgaXQgaGFzIGJlZW4gZXhwbGljaXRseSByZXNldApAQCAtMTY4LDEwICsxNzEsNiBAQAogaXQgaXMgZGVsZXRlZCB3aGVuIHRoZSBvdXRwdXQgZmlsZSBpcyBjbG9zZWQuICBJbi1wbGFjZSBmaWx0ZXJpbmcgaXMgZGlzYWJsZWQKIHdoZW4gc3RhbmRhcmQgaW5wdXQgaXMgcmVhZC4KIAotLi4gbm90ZTo6Ci0KLSAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHdvcmsgZm9yIE1TLURPUyA4KzMgZmlsZXN5c3RlbXMuCi0KIAogVGhlIHR3byBmb2xsb3dpbmcgb3BlbmluZyBob29rcyBhcmUgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CmluZGV4IDViYmVmNGYuLjNjYzI5NWEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZnRwbGliLnJzdApAQCAtNDAsNyArNDAsNyBAQAogCiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBpdGVtczoKIAotLi4gY2xhc3M6OiBGVFAoaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnWywgdGltZW91dF0pCisuLiBjbGFzczo6IEZUUChob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsIHRpbWVvdXQ9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YEZUUGAgY2xhc3MuICBXaGVuICpob3N0KiBpcyBnaXZlbiwgdGhlCiAgICBtZXRob2QgY2FsbCBgYGNvbm5lY3QoaG9zdClgYCBpcyBtYWRlLiAgV2hlbiAqdXNlciogaXMgZ2l2ZW4sIGFkZGl0aW9uYWxseQpAQCAtNDgsNyArNDgsOCBAQAogICAgKmFjY3QqIGRlZmF1bHQgdG8gdGhlIGVtcHR5IHN0cmluZyB3aGVuIG5vdCBnaXZlbikuICBUaGUgb3B0aW9uYWwgKnRpbWVvdXQqCiAgICBwYXJhbWV0ZXIgc3BlY2lmaWVzIGEgdGltZW91dCBpbiBzZWNvbmRzIGZvciBibG9ja2luZyBvcGVyYXRpb25zIGxpa2UgdGhlCiAgICBjb25uZWN0aW9uIGF0dGVtcHQgKGlmIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0IHNldHRpbmcKLSAgIHdpbGwgYmUgdXNlZCkuCisgICB3aWxsIGJlIHVzZWQpLiAqc291cmNlX2FkZHJlc3MqIGlzIGEgMi10dXBsZSBgYChob3N0LCBwb3J0KWBgIGZvciB0aGUgc29ja2V0CisgICB0byBiaW5kIHRvIGFzIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUgY29ubmVjdGluZy4KIAogICAgOmNsYXNzOmBGVFBgIGNsYXNzIHN1cHBvcnRzIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiBIZXJlIGlzIGEgc2FtcGxlCiAgICBvbiBob3cgdXNpbmcgaXQ6CkBAIC02OCw4ICs2OSwxMSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpzb3VyY2VfYWRkcmVzcyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAotLi4gY2xhc3M6OiBGVFBfVExTKGhvc3Q9JycsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywgW2tleWZpbGVbLCBjZXJ0ZmlsZVssIGNvbnRleHRbLCB0aW1lb3V0XV1dXSkKKworLi4gY2xhc3M6OiBGVFBfVExTKGhvc3Q9JycsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUsIHRpbWVvdXQ9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgQSA6Y2xhc3M6YEZUUGAgc3ViY2xhc3Mgd2hpY2ggYWRkcyBUTFMgc3VwcG9ydCB0byBGVFAgYXMgZGVzY3JpYmVkIGluCiAgICA6cmZjOmA0MjE3YC4KQEAgLTgwLDEwICs4NCwxNSBAQAogICAgcHJpdmF0ZSBrZXkgYW5kIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgbmFtZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLgogICAgKmNvbnRleHQqIHBhcmFtZXRlciBpcyBhIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIG9iamVjdCB3aGljaCBhbGxvd3MKICAgIGJ1bmRsaW5nIFNTTCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGNlcnRpZmljYXRlcyBhbmQgcHJpdmF0ZSBrZXlzIGludG8gYQotICAgc2luZ2xlIChwb3RlbnRpYWxseSBsb25nLWxpdmVkKSBzdHJ1Y3R1cmUuCisgICBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpIHN0cnVjdHVyZS4gKnNvdXJjZV9hZGRyZXNzKiBpcyBhIDItdHVwbGUKKyAgIGBgKGhvc3QsIHBvcnQpYGAgZm9yIHRoZSBzb2NrZXQgdG8gYmluZCB0byBhcyBpdHMgc291cmNlIGFkZHJlc3MgYmVmb3JlCisgICBjb25uZWN0aW5nLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpzb3VyY2VfYWRkcmVzcyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKwogICAgSGVyZSdzIGEgc2FtcGxlIHNlc3Npb24gdXNpbmcgdGhlIDpjbGFzczpgRlRQX1RMU2AgY2xhc3M6CiAKICAgID4+PiBmcm9tIGZ0cGxpYiBpbXBvcnQgRlRQX1RMUwpAQCAtMTM1LDggKzE0NCw3IEBACiAgICBUaGUgc2V0IG9mIGFsbCBleGNlcHRpb25zIChhcyBhIHR1cGxlKSB0aGF0IG1ldGhvZHMgb2YgOmNsYXNzOmBGVFBgCiAgICBpbnN0YW5jZXMgbWF5IHJhaXNlIGFzIGEgcmVzdWx0IG9mIHByb2JsZW1zIHdpdGggdGhlIEZUUCBjb25uZWN0aW9uIChhcwogICAgb3Bwb3NlZCB0byBwcm9ncmFtbWluZyBlcnJvcnMgbWFkZSBieSB0aGUgY2FsbGVyKS4gIFRoaXMgc2V0IGluY2x1ZGVzIHRoZQotICAgZm91ciBleGNlcHRpb25zIGxpc3RlZCBhYm92ZSBhcyB3ZWxsIGFzIDpleGM6YHNvY2tldC5lcnJvcmAgYW5kCi0gICA6ZXhjOmBJT0Vycm9yYC4KKyAgIGZvdXIgZXhjZXB0aW9ucyBsaXN0ZWQgYWJvdmUgYXMgd2VsbCBhcyA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBzZWVhbHNvOjoKQEAgLTE3NCw3ICsxODIsNyBAQAogICAgZGVidWdnaW5nIG91dHB1dCwgbG9nZ2luZyBlYWNoIGxpbmUgc2VudCBhbmQgcmVjZWl2ZWQgb24gdGhlIGNvbnRyb2wgY29ubmVjdGlvbi4KIAogCi0uLiBtZXRob2Q6OiBGVFAuY29ubmVjdChob3N0PScnLCBwb3J0PTBbLCB0aW1lb3V0XSkKKy4uIG1ldGhvZDo6IEZUUC5jb25uZWN0KGhvc3Q9JycsIHBvcnQ9MCwgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBDb25uZWN0IHRvIHRoZSBnaXZlbiBob3N0IGFuZCBwb3J0LiAgVGhlIGRlZmF1bHQgcG9ydCBudW1iZXIgaXMgYGAyMWBgLCBhcwogICAgc3BlY2lmaWVkIGJ5IHRoZSBGVFAgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbi4gIEl0IGlzIHJhcmVseSBuZWVkZWQgdG8gc3BlY2lmeSBhCkBAIC0xODIsMTAgKzE5MCwxNCBAQAogICAgaW5zdGFuY2U7IGl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGF0IGFsbCBpZiBhIGhvc3Qgd2FzIGdpdmVuIHdoZW4gdGhlIGluc3RhbmNlCiAgICB3YXMgY3JlYXRlZC4gIEFsbCBvdGhlciBtZXRob2RzIGNhbiBvbmx5IGJlIHVzZWQgYWZ0ZXIgYSBjb25uZWN0aW9uIGhhcyBiZWVuCiAgICBtYWRlLgotCiAgICBUaGUgb3B0aW9uYWwgKnRpbWVvdXQqIHBhcmFtZXRlciBzcGVjaWZpZXMgYSB0aW1lb3V0IGluIHNlY29uZHMgZm9yIHRoZQogICAgY29ubmVjdGlvbiBhdHRlbXB0LiBJZiBubyAqdGltZW91dCogaXMgcGFzc2VkLCB0aGUgZ2xvYmFsIGRlZmF1bHQgdGltZW91dAogICAgc2V0dGluZyB3aWxsIGJlIHVzZWQuCisgICAqc291cmNlX2FkZHJlc3MqIGlzIGEgMi10dXBsZSBgYChob3N0LCBwb3J0KWBgIGZvciB0aGUgc29ja2V0IHRvIGJpbmQgdG8gYXMKKyAgIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUgY29ubmVjdGluZy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpzb3VyY2VfYWRkcmVzcyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogCiAuLiBtZXRob2Q6OiBGVFAuZ2V0d2VsY29tZSgpCkBAIC0yNDEsMTMgKzI1MywxMiBAQAogCiAgICBSZXRyaWV2ZSBhIGZpbGUgb3IgZGlyZWN0b3J5IGxpc3RpbmcgaW4gQVNDSUkgdHJhbnNmZXIgbW9kZS4gICpjbWQqIHNob3VsZCBiZQogICAgYW4gYXBwcm9wcmlhdGUgYGBSRVRSYGAgY29tbWFuZCAoc2VlIDptZXRoOmByZXRyYmluYXJ5YCkgb3IgYSBjb21tYW5kIHN1Y2ggYXMKLSAgIGBgTElTVGBgLCBgYE5MU1RgYCBvciBgYE1MU0RgYCAodXN1YWxseSBqdXN0IHRoZSBzdHJpbmcgYGAnTElTVCdgYCkuCisgICBgYExJU1RgYCBvciBgYE5MU1RgYCAodXN1YWxseSBqdXN0IHRoZSBzdHJpbmcgYGAnTElTVCdgYCkuCiAgICBgYExJU1RgYCByZXRyaWV2ZXMgYSBsaXN0IG9mIGZpbGVzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aG9zZSBmaWxlcy4KLSAgIGBgTkxTVGBgIHJldHJpZXZlcyBhIGxpc3Qgb2YgZmlsZSBuYW1lcy4gIE9uIHNvbWUgc2VydmVycywgYGBNTFNEYGAgcmV0cmlldmVzCi0gICBhIG1hY2hpbmUgcmVhZGFibGUgbGlzdCBvZiBmaWxlcyBhbmQgaW5mb3JtYXRpb24gYWJvdXQgdGhvc2UgZmlsZXMuICBUaGUKLSAgICpjYWxsYmFjayogZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBlYWNoIGxpbmUgd2l0aCBhIHN0cmluZyBhcmd1bWVudCBjb250YWluaW5nCi0gICB0aGUgbGluZSB3aXRoIHRoZSB0cmFpbGluZyBDUkxGIHN0cmlwcGVkLiAgVGhlIGRlZmF1bHQgKmNhbGxiYWNrKiBwcmludHMgdGhlCi0gICBsaW5lIHRvIGBgc3lzLnN0ZG91dGBgLgorICAgYGBOTFNUYGAgcmV0cmlldmVzIGEgbGlzdCBvZiBmaWxlIG5hbWVzLgorICAgVGhlICpjYWxsYmFjayogZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBlYWNoIGxpbmUgd2l0aCBhIHN0cmluZyBhcmd1bWVudAorICAgY29udGFpbmluZyB0aGUgbGluZSB3aXRoIHRoZSB0cmFpbGluZyBDUkxGIHN0cmlwcGVkLiAgVGhlIGRlZmF1bHQgKmNhbGxiYWNrKgorICAgcHJpbnRzIHRoZSBsaW5lIHRvIGBgc3lzLnN0ZG91dGBgLgogCiAKIC4uIG1ldGhvZDo6IEZUUC5zZXRfcGFzdihib29sZWFuKQpAQCAtMzA3LDYgKzMxOCwyMCBAQAogICAgaW4gOm1ldGg6YHRyYW5zZmVyY21kYC4KIAogCisuLiBtZXRob2Q6OiBGVFAubWxzZChwYXRoPSIiLCBmYWN0cz1bXSkKKworICAgTGlzdCBhIGRpcmVjdG9yeSBpbiBhIHN0YW5kYXJkaXplZCBmb3JtYXQgYnkgdXNpbmcgTUxTRCBjb21tYW5kCisgICAoOnJmYzpgMzY1OWApLiAgSWYgKnBhdGgqIGlzIG9taXR0ZWQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIGFzc3VtZWQuCisgICAqZmFjdHMqIGlzIGEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiBkZXNpcmVkCisgICAoZS5nLiBgYFsidHlwZSIsICJzaXplIiwgInBlcm0iXWBgKS4gIFJldHVybiBhIGdlbmVyYXRvciBvYmplY3QgeWllbGRpbmcgYQorICAgdHVwbGUgb2YgdHdvIGVsZW1lbnRzIGZvciBldmVyeSBmaWxlIGZvdW5kIGluIHBhdGguICBGaXJzdCBlbGVtZW50IGlzIHRoZQorICAgZmlsZSBuYW1lLCB0aGUgc2Vjb25kIG9uZSBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBmYWN0cyBhYm91dCB0aGUgZmlsZQorICAgbmFtZS4gIENvbnRlbnQgb2YgdGhpcyBkaWN0aW9uYXJ5IG1pZ2h0IGJlIGxpbWl0ZWQgYnkgdGhlICpmYWN0cyogYXJndW1lbnQKKyAgIGJ1dCBzZXJ2ZXIgaXMgbm90IGd1YXJhbnRlZWQgdG8gcmV0dXJuIGFsbCByZXF1ZXN0ZWQgZmFjdHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IEZUUC5ubHN0KGFyZ3VtZW50WywgLi4uXSkKIAogICAgUmV0dXJuIGEgbGlzdCBvZiBmaWxlIG5hbWVzIGFzIHJldHVybmVkIGJ5IHRoZSBgYE5MU1RgYCBjb21tYW5kLiAgVGhlCkBAIC0zMTQsNiArMzM5LDggQEAKICAgIGRpcmVjdG9yeSkuICBNdWx0aXBsZSBhcmd1bWVudHMgY2FuIGJlIHVzZWQgdG8gcGFzcyBub24tc3RhbmRhcmQgb3B0aW9ucyB0bwogICAgdGhlIGBgTkxTVGBgIGNvbW1hbmQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMgdXNlIDptZXRoOmBtbHNkYCBpbnN0ZWFkLgorCiAKIC4uIG1ldGhvZDo6IEZUUC5kaXIoYXJndW1lbnRbLCAuLi5dKQogCkBAIC0zMjQsNiArMzUxLDggQEAKICAgIGFzIGEgKmNhbGxiYWNrKiBmdW5jdGlvbiBhcyBmb3IgOm1ldGg6YHJldHJsaW5lc2A7IHRoZSBkZWZhdWx0IHByaW50cyB0bwogICAgYGBzeXMuc3Rkb3V0YGAuICBUaGlzIG1ldGhvZCByZXR1cm5zIGBgTm9uZWBgLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zIHVzZSA6bWV0aDpgbWxzZGAgaW5zdGVhZC4KKwogCiAuLiBtZXRob2Q6OiBGVFAucmVuYW1lKGZyb21uYW1lLCB0b25hbWUpCiAKQEAgLTM5Niw2ICs0MjUsMTQgQEAKIAogICAgU2V0IHVwIHNlY3VyZSBjb250cm9sIGNvbm5lY3Rpb24gYnkgdXNpbmcgVExTIG9yIFNTTCwgZGVwZW5kaW5nIG9uIHdoYXQgc3BlY2lmaWVkIGluIDptZXRoOmBzc2xfdmVyc2lvbmAgYXR0cmlidXRlLgogCisuLiBtZXRob2Q6OiBGVFBfVExTLmNjYygpCisKKyAgIFJldmVydCBjb250cm9sIGNoYW5uZWwgYmFjayB0byBwbGFpbnRleHQuICBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gdGFrZQorICAgYWR2YW50YWdlIG9mIGZpcmV3YWxscyB0aGF0IGtub3cgaG93IHRvIGhhbmRsZSBOQVQgd2l0aCBub24tc2VjdXJlIEZUUAorICAgd2l0aG91dCBvcGVuaW5nIGZpeGVkIHBvcnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gbWV0aG9kOjogRlRQX1RMUy5wcm90X3AoKQogCiAgICBTZXQgdXAgc2VjdXJlIGRhdGEgY29ubmVjdGlvbi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CmluZGV4IGIzMjM4YjEuLjYxZTQ5MzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdApAQCAtMTcsOSArMTcsOSBAQAogOmZ1bmM6YGJpbmAgICAgICAgICAgOmZ1bmM6YGV2YWxgICAgICAgIDpmdW5jOmBpbnRgICAgICAgICAgOmZ1bmM6YG9wZW5gICAgICAgOmZ1bmM6YHN0cmAKIDpmdW5jOmBib29sYCAgICAgICAgIDpmdW5jOmBleGVjYCAgICAgICA6ZnVuYzpgaXNpbnN0YW5jZWAgIDpmdW5jOmBvcmRgICAgICAgIDpmdW5jOmBzdW1gCiA6ZnVuYzpgYnl0ZWFycmF5YCAgICA6ZnVuYzpgZmlsdGVyYCAgICAgOmZ1bmM6YGlzc3ViY2xhc3NgICA6ZnVuYzpgcG93YCAgICAgICA6ZnVuYzpgc3VwZXJgCi06ZnVuYzpgYnl0ZXNgICAgICAgICA6ZnVuYzpgZmxvYXRgICAgICAgOmZ1bmM6YGl0ZXJgICAgICAgICA6ZnVuYzpgcHJpbnRgICAgICA6ZnVuYzpgdHVwbGVgCis6ZnVuYzpgYnl0ZXNgICAgICAgICA6ZnVuYzpgZmxvYXRgICAgICAgOmZ1bmM6YGl0ZXJgICAgICAgICA6ZnVuYzpgcHJpbnRgICAgICB8ZnVuYy10dXBsZXxfCiA6ZnVuYzpgY2FsbGFibGVgICAgICA6ZnVuYzpgZm9ybWF0YCAgICAgOmZ1bmM6YGxlbmAgICAgICAgICA6ZnVuYzpgcHJvcGVydHlgICA6ZnVuYzpgdHlwZWAKLTpmdW5jOmBjaHJgICAgICAgICAgIHxmdW5jLWZyb3plbnNldHxfICA6ZnVuYzpgbGlzdGAgICAgICAgIDpmdW5jOmByYW5nZWAgICAgIDpmdW5jOmB2YXJzYAorOmZ1bmM6YGNocmAgICAgICAgICAgfGZ1bmMtZnJvemVuc2V0fF8gIHxmdW5jLWxpc3R8XyAgICAgICAgfGZ1bmMtcmFuZ2V8XyAgICAgOmZ1bmM6YHZhcnNgCiA6ZnVuYzpgY2xhc3NtZXRob2RgICA6ZnVuYzpgZ2V0YXR0cmAgICAgOmZ1bmM6YGxvY2Fsc2AgICAgICA6ZnVuYzpgcmVwcmAgICAgICA6ZnVuYzpgemlwYAogOmZ1bmM6YGNvbXBpbGVgICAgICAgOmZ1bmM6YGdsb2JhbHNgICAgIDpmdW5jOmBtYXBgICAgICAgICAgOmZ1bmM6YHJldmVyc2VkYCAgOmZ1bmM6YF9faW1wb3J0X19gCiA6ZnVuYzpgY29tcGxleGAgICAgICA6ZnVuYzpgaGFzYXR0cmAgICAgOmZ1bmM6YG1heGAgICAgICAgICA6ZnVuYzpgcm91bmRgCkBAIC0zMyw2ICszMyw5IEBACiAuLiB8ZnVuYy1mcm96ZW5zZXR8IHJlcGxhY2U6OiBgYGZyb3plbnNldCgpYGAKIC4uIHxmdW5jLW1lbW9yeXZpZXd8IHJlcGxhY2U6OiBgYG1lbW9yeXZpZXcoKWBgCiAuLiB8ZnVuYy1zZXR8IHJlcGxhY2U6OiBgYHNldCgpYGAKKy4uIHxmdW5jLWxpc3R8IHJlcGxhY2U6OiBgYGxpc3QoKWBgCisuLiB8ZnVuYy10dXBsZXwgcmVwbGFjZTo6IGBgdHVwbGUoKWBgCisuLiB8ZnVuYy1yYW5nZXwgcmVwbGFjZTo6IGBgcmFuZ2UoKWBgCiAKIAogLi4gZnVuY3Rpb246OiBhYnMoeCkKQEAgLTkzLDYgKzk2LDcgQEAKICAgIC4uIGluZGV4OjogcGFpcjogQm9vbGVhbjsgdHlwZQogCiAKKy4uIF9mdW5jLWJ5dGVhcnJheToKIC4uIGZ1bmN0aW9uOjogYnl0ZWFycmF5KFtzb3VyY2VbLCBlbmNvZGluZ1ssIGVycm9yc11dXSkKIAogICAgUmV0dXJuIGEgbmV3IGFycmF5IG9mIGJ5dGVzLiAgVGhlIDpjbGFzczpgYnl0ZWFycmF5YCB0eXBlIGlzIGEgbXV0YWJsZQpAQCAtMTE5LDYgKzEyMyw3IEBACiAgICBXaXRob3V0IGFuIGFyZ3VtZW50LCBhbiBhcnJheSBvZiBzaXplIDAgaXMgY3JlYXRlZC4KIAogCisuLiBfZnVuYy1ieXRlczoKIC4uIGZ1bmN0aW9uOjogYnl0ZXMoW3NvdXJjZVssIGVuY29kaW5nWywgZXJyb3JzXV1dKQogCiAgICBSZXR1cm4gYSBuZXcgImJ5dGVzIiBvYmplY3QsIHdoaWNoIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBpbnRlZ2VycyBpbgpAQCAtMTUyLDEwICsxNTcsNiBAQAogICAgMSwxMTQsMTExICgweDEwRkZGRiBpbiBiYXNlIDE2KS4gIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmICppKiBpcwogICAgb3V0c2lkZSB0aGF0IHJhbmdlLgogCi0gICBOb3RlIHRoYXQgb24gbmFycm93IFVuaWNvZGUgYnVpbGRzLCB0aGUgcmVzdWx0IGlzIGEgc3RyaW5nIG9mCi0gICBsZW5ndGggdHdvIGZvciAqaSogZ3JlYXRlciB0aGFuIDY1LDUzNSAoMHhGRkZGIGluIGhleGFkZWNpbWFsKS4KLQotCiAKIC4uIGZ1bmN0aW9uOjogY2xhc3NtZXRob2QoZnVuY3Rpb24pCiAKQEAgLTMwOSwxNyArMzEwLDE4IEBACiAKICAgICAgID4+PiBpbXBvcnQgc3RydWN0CiAgICAgICA+Pj4gZGlyKCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBtb2R1bGUgbmFtZXNwYWNlCi0gICAgICBbJ19fYnVpbHRpbnNfXycsICdfX2RvY19fJywgJ19fbmFtZV9fJywgJ3N0cnVjdCddCi0gICAgICA+Pj4gZGlyKHN0cnVjdCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBzdHJ1Y3QgbW9kdWxlCi0gICAgICBbJ1N0cnVjdCcsICdfX2J1aWx0aW5zX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX25hbWVfXycsCi0gICAgICAgJ19fcGFja2FnZV9fJywgJ19jbGVhcmNhY2hlJywgJ2NhbGNzaXplJywgJ2Vycm9yJywgJ3BhY2snLCAncGFja19pbnRvJywKKyAgICAgIFsnX19idWlsdGluc19fJywgJ19fbmFtZV9fJywgJ3N0cnVjdCddCisgICAgICA+Pj4gZGlyKHN0cnVjdCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBzdHJ1Y3QgbW9kdWxlICMgZG9jdGVzdDogK1NLSVAKKyAgICAgIFsnU3RydWN0JywgJ19fYWxsX18nLCAnX19idWlsdGluc19fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsCisgICAgICAgJ19faW5pdGlhbGl6aW5nX18nLCAnX19sb2FkZXJfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsCisgICAgICAgJ19jbGVhcmNhY2hlJywgJ2NhbGNzaXplJywgJ2Vycm9yJywgJ3BhY2snLCAncGFja19pbnRvJywKICAgICAgICAndW5wYWNrJywgJ3VucGFja19mcm9tJ10KICAgICAgID4+PiBjbGFzcyBTaGFwZShvYmplY3QpOgotICAgICAgICAgICAgICBkZWYgX19kaXJfXyhzZWxmKToKLSAgICAgICAgICAgICAgICAgIHJldHVybiBbJ2FyZWEnLCAncGVyaW1ldGVyJywgJ2xvY2F0aW9uJ10KKyAgICAgIC4uLiAgICAgZGVmIF9fZGlyX18oc2VsZik6CisgICAgICAuLi4gICAgICAgICByZXR1cm4gWydhcmVhJywgJ3BlcmltZXRlcicsICdsb2NhdGlvbiddCiAgICAgICA+Pj4gcyA9IFNoYXBlKCkKICAgICAgID4+PiBkaXIocykKLSAgICAgIFsnYXJlYScsICdwZXJpbWV0ZXInLCAnbG9jYXRpb24nXQorICAgICAgWydhcmVhJywgJ2xvY2F0aW9uJywgJ3BlcmltZXRlciddCiAKICAgIC4uIG5vdGU6OgogCkBAIC02MTgsOSArNjIwLDkgQEAKICAgIHRvIGEgc3RyaW5nIChzdHJpcHBpbmcgYSB0cmFpbGluZyBuZXdsaW5lKSwgYW5kIHJldHVybnMgdGhhdC4gIFdoZW4gRU9GIGlzCiAgICByZWFkLCA6ZXhjOmBFT0ZFcnJvcmAgaXMgcmFpc2VkLiAgRXhhbXBsZTo6CiAKLSAgICAgID4+PiBzID0gaW5wdXQoJy0tPiAnKQorICAgICAgPj4+IHMgPSBpbnB1dCgnLS0+ICcpICAjIGRvY3Rlc3Q6ICtTS0lQCiAgICAgICAtLT4gTW9udHkgUHl0aG9uJ3MgRmx5aW5nIENpcmN1cwotICAgICAgPj4+IHMKKyAgICAgID4+PiBzICAjIGRvY3Rlc3Q6ICtTS0lQCiAgICAgICAiTW9udHkgUHl0aG9uJ3MgRmx5aW5nIENpcmN1cyIKIAogICAgSWYgdGhlIDptb2Q6YHJlYWRsaW5lYCBtb2R1bGUgd2FzIGxvYWRlZCwgdGhlbiA6ZnVuYzpgaW5wdXRgIHdpbGwgdXNlIGl0CkBAIC02OTUsMTYgKzY5NywxMiBAQAogICAgc2VxdWVuY2UgKHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3IgYSBtYXBwaW5nIChkaWN0aW9uYXJ5KS4KIAogCisuLiBfZnVuYy1saXN0OgogLi4gZnVuY3Rpb246OiBsaXN0KFtpdGVyYWJsZV0pCisgICA6bm9pbmRleDoKIAotICAgUmV0dXJuIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZSBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSoncwotICAgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYSBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cwotICAgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSBsaXN0LCBhIGNvcHkgaXMKLSAgIG1hZGUgYW5kIHJldHVybmVkLCBzaW1pbGFyIHRvIGBgaXRlcmFibGVbOl1gYC4gIEZvciBpbnN0YW5jZSwgYGBsaXN0KCdhYmMnKWBgCi0gICByZXR1cm5zIGBgWydhJywgJ2InLCAnYyddYGAgYW5kIGBgbGlzdCggKDEsIDIsIDMpIClgYCByZXR1cm5zIGBgWzEsIDIsIDNdYGAuCi0gICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJucyBhIG5ldyBlbXB0eSBsaXN0LCBgYFtdYGAuCi0KLSAgIDpjbGFzczpgbGlzdGAgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvY3VtZW50ZWQgaW4gOnJlZjpgdHlwZXNzZXFgLgorICAgUmF0aGVyIHRoYW4gYmVpbmcgYSBmdW5jdGlvbiwgOmNsYXNzOmBsaXN0YCBpcyBhY3R1YWxseSBhIG11dGFibGUKKyAgIHNlcXVlbmNlIHR5cGUsIGFzIGRvY3VtZW50ZWQgaW4gOnJlZjpgdHlwZXNzZXFgLgogCiAKIC4uIGZ1bmN0aW9uOjogbG9jYWxzKCkKQEAgLTc5MywxMCArNzkxLDEwIEBACiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IGZpbGUgb2JqZWN0OyBvcGVuKCkgYnVpbHQtaW4gZnVuY3Rpb24KIAotLi4gZnVuY3Rpb246OiBvcGVuKGZpbGUsIG1vZGU9J3InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSkKKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlLCBtb2RlPSdyJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKQogCiAgICBPcGVuICpmaWxlKiBhbmQgcmV0dXJuIGEgY29ycmVzcG9uZGluZyA6dGVybTpgZmlsZSBvYmplY3RgLiAgSWYgdGhlIGZpbGUKLSAgIGNhbm5vdCBiZSBvcGVuZWQsIGFuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZC4KKyAgIGNhbm5vdCBiZSBvcGVuZWQsIGFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgKmZpbGUqIGlzIGVpdGhlciBhIHN0cmluZyBvciBieXRlcyBvYmplY3QgZ2l2aW5nIHRoZSBwYXRobmFtZSAoYWJzb2x1dGUgb3IKICAgIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBvZiB0aGUgZmlsZSB0byBiZSBvcGVuZWQgb3IKQEAgLTgwNywxNyArODA1LDIwIEBACiAgICAqbW9kZSogaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlIGlzCiAgICBvcGVuZWQuICBJdCBkZWZhdWx0cyB0byBgYCdyJ2BgIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dCBtb2RlLgogICAgT3RoZXIgY29tbW9uIHZhbHVlcyBhcmUgYGAndydgYCBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZiBpdAotICAgYWxyZWFkeSBleGlzdHMpLCBhbmQgYGAnYSdgYCBmb3IgYXBwZW5kaW5nICh3aGljaCBvbiAqc29tZSogVW5peCBzeXN0ZW1zLAotICAgbWVhbnMgdGhhdCAqYWxsKiB3cml0ZXMgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGUKLSAgIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuICBJbiB0ZXh0IG1vZGUsIGlmICplbmNvZGluZyogaXMgbm90IHNwZWNpZmllZCB0aGUKLSAgIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm0gZGVwZW5kZW50LiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZQotICAgYmluYXJ5IG1vZGUgYW5kIGxlYXZlICplbmNvZGluZyogdW5zcGVjaWZpZWQuKSAgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6CisgICBhbHJlYWR5IGV4aXN0cyksIGBgJ3gnYGAgZm9yIGV4Y2x1c2l2ZSBjcmVhdGlvbiBhbmQgYGAnYSdgYCBmb3IgYXBwZW5kaW5nCisgICAod2hpY2ggb24gKnNvbWUqIFVuaXggc3lzdGVtcywgbWVhbnMgdGhhdCAqYWxsKiB3cml0ZXMgYXBwZW5kIHRvIHRoZSBlbmQgb2YKKyAgIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuICBJbiB0ZXh0IG1vZGUsIGlmCisgICAqZW5jb2RpbmcqIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm0gZGVwZW5kZW50OgorICAgYGBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpYGAgaXMgY2FsbGVkIHRvIGdldCB0aGUgY3VycmVudCBsb2NhbGUKKyAgIGVuY29kaW5nLiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZSBiaW5hcnkgbW9kZSBhbmQgbGVhdmUKKyAgICplbmNvZGluZyogdW5zcGVjaWZpZWQuKSAgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6CiAKICAgID09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIENoYXJhY3RlciBNZWFuaW5nCiAgICAtLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBgYCdyJ2BgICAgb3BlbiBmb3IgcmVhZGluZyAoZGVmYXVsdCkKICAgIGBgJ3cnYGAgICBvcGVuIGZvciB3cml0aW5nLCB0cnVuY2F0aW5nIHRoZSBmaWxlIGZpcnN0CisgICBgYCd4J2BgICAgb3BlbiBmb3IgZXhjbHVzaXZlIGNyZWF0aW9uLCBmYWlsaW5nIGlmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzCiAgICBgYCdhJ2BgICAgb3BlbiBmb3Igd3JpdGluZywgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgaXQgZXhpc3RzCiAgICBgYCdiJ2BgICAgYmluYXJ5IG1vZGUKICAgIGBgJ3QnYGAgICB0ZXh0IG1vZGUgKGRlZmF1bHQpCkBAIC05MDMsNiArOTA0LDE2IEBACiAgICBjbG9zZWQuICBJZiBhIGZpbGVuYW1lIGlzIGdpdmVuICpjbG9zZWZkKiBoYXMgbm8gZWZmZWN0IGFuZCBtdXN0IGJlIGBgVHJ1ZWBgCiAgICAodGhlIGRlZmF1bHQpLgogCisgICBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUgdW5kZXJseWluZworICAgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nICpvcGVuZXIqIHdpdGgKKyAgICgqZmlsZSosICpmbGFncyopLiAqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciAocGFzc2luZworICAgOm1vZDpgb3Mub3BlbmAgYXMgKm9wZW5lciogcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gcGFzc2luZworICAgYGBOb25lYGApLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlICpvcGVuZXIqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisgICAgICBUaGUgYGAneCdgYCBtb2RlIHdhcyBhZGRlZC4KKwogICAgVGhlIHR5cGUgb2YgOnRlcm06YGZpbGUgb2JqZWN0YCByZXR1cm5lZCBieSB0aGUgOmZ1bmM6YG9wZW5gIGZ1bmN0aW9uCiAgICBkZXBlbmRzIG9uIHRoZSBtb2RlLiAgV2hlbiA6ZnVuYzpgb3BlbmAgaXMgdXNlZCB0byBvcGVuIGEgZmlsZSBpbiBhIHRleHQKICAgIG1vZGUgKGBgJ3cnYGAsIGBgJ3InYGAsIGBgJ3d0J2BgLCBgYCdydCdgYCwgZXRjLiksIGl0IHJldHVybnMgYSBzdWJjbGFzcyBvZgpAQCAtOTI4LDYgKzkzOSwxMSBAQAogICAgKHdoZXJlIDpmdW5jOmBvcGVuYCBpcyBkZWNsYXJlZCksIDptb2Q6YG9zYCwgOm1vZDpgb3MucGF0aGAsIDptb2Q6YHRlbXBmaWxlYCwKICAgIGFuZCA6bW9kOmBzaHV0aWxgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQsIGl0IGlzIG5vdyBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKyAgICAgIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgaXMgbm93IHJhaXNlZCBpZiB0aGUgZmlsZSBvcGVuZWQgaW4gZXhjbHVzaXZlCisgICAgICBjcmVhdGlvbiBtb2RlIChgYCd4J2BgKSBhbHJlYWR5IGV4aXN0cy4KKwogCiAuLiBYWFggd29ya3MgZm9yIGJ5dGVzIHRvbywgYnV0IHNob3VsZCBpdD8KIC4uIGZ1bmN0aW9uOjogb3JkKGMpCkBAIC05MzcsOSArOTUzLDYgQEAKICAgIHBvaW50IG9mIHRoYXQgY2hhcmFjdGVyLiAgRm9yIGV4YW1wbGUsIGBgb3JkKCdhJylgYCByZXR1cm5zIHRoZSBpbnRlZ2VyIGBgOTdgYAogICAgYW5kIGBgb3JkKCdcdTIwMjAnKWBgIHJldHVybnMgYGA4MjI0YGAuICBUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIDpmdW5jOmBjaHJgLgogCi0gICBPbiB3aWRlIFVuaWNvZGUgYnVpbGRzLCBpZiB0aGUgYXJndW1lbnQgbGVuZ3RoIGlzIG5vdCBvbmUsIGEKLSAgIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBPbiBuYXJyb3cgVW5pY29kZSBidWlsZHMsIHN0cmluZ3MKLSAgIG9mIGxlbmd0aCB0d28gYXJlIGFjY2VwdGVkIHdoZW4gdGhleSBmb3JtIGEgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyLgogCiAuLiBmdW5jdGlvbjo6IHBvdyh4LCB5Wywgel0pCiAKQEAgLTk1Nyw3ICs5NzAsNyBAQAogICAgbXVzdCBiZSBvZiBpbnRlZ2VyIHR5cGVzLCBhbmQgKnkqIG11c3QgYmUgbm9uLW5lZ2F0aXZlLgogCiAKLS4uIGZ1bmN0aW9uOjogcHJpbnQoW29iamVjdCwgLi4uXSwgKiwgc2VwPScgJywgZW5kPSdcXG4nLCBmaWxlPXN5cy5zdGRvdXQpCisuLiBmdW5jdGlvbjo6IHByaW50KFtvYmplY3QsIC4uLl0sICosIHNlcD0nICcsIGVuZD0nXFxuJywgZmlsZT1zeXMuc3Rkb3V0LCBmbHVzaD1GYWxzZSkKIAogICAgUHJpbnQgKm9iamVjdCpcKHMpIHRvIHRoZSBzdHJlYW0gKmZpbGUqLCBzZXBhcmF0ZWQgYnkgKnNlcCogYW5kIGZvbGxvd2VkIGJ5CiAgICAqZW5kKi4gICpzZXAqLCAqZW5kKiBhbmQgKmZpbGUqLCBpZiBwcmVzZW50LCBtdXN0IGJlIGdpdmVuIGFzIGtleXdvcmQKQEAgLTk3MCw5ICs5ODMsMTIgQEAKICAgICplbmQqLgogCiAgICBUaGUgKmZpbGUqIGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0IHdpdGggYSBgYHdyaXRlKHN0cmluZylgYCBtZXRob2Q7IGlmIGl0Ci0gICBpcyBub3QgcHJlc2VudCBvciBgYE5vbmVgYCwgOmRhdGE6YHN5cy5zdGRvdXRgIHdpbGwgYmUgdXNlZC4gT3V0cHV0IGJ1ZmZlcmluZwotICAgaXMgZGV0ZXJtaW5lZCBieSAqZmlsZSouIFVzZSBgYGZpbGUuZmx1c2goKWBgIHRvIGVuc3VyZSwgZm9yIGluc3RhbmNlLAotICAgaW1tZWRpYXRlIGFwcGVhcmFuY2Ugb24gYSBzY3JlZW4uCisgICBpcyBub3QgcHJlc2VudCBvciBgYE5vbmVgYCwgOmRhdGE6YHN5cy5zdGRvdXRgIHdpbGwgYmUgdXNlZC4gIFdoZXRoZXIgb3V0cHV0CisgICBpcyBidWZmZXJlZCBpcyB1c3VhbGx5IGRldGVybWluZWQgYnkgKmZpbGUqLCBidXQgaWYgdGhlICAqZmx1c2gqIGtleXdvcmQKKyAgIGFyZ3VtZW50IGlzIHRydWUsIHRoZSBzdHJlYW0gaXMgZm9yY2libHkgZmx1c2hlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZmx1c2gqIGtleXdvcmQgYXJndW1lbnQuCiAKIAogLi4gZnVuY3Rpb246OiBwcm9wZXJ0eShmZ2V0PU5vbmUsIGZzZXQ9Tm9uZSwgZmRlbD1Ob25lLCBkb2M9Tm9uZSkKQEAgLTEwNDQsNjIgKzEwNjAsMTIgQEAKICAgIGBgZmRlbGBgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4KIAogCi0uLiBYWFggZG9lcyBhY2NlcHQgb2JqZWN0cyB3aXRoIF9faW5kZXhfXyB0b28KKy4uIF9mdW5jLXJhbmdlOgogLi4gZnVuY3Rpb246OiByYW5nZShbc3RhcnQsXSBzdG9wWywgc3RlcF0pCisgICA6bm9pbmRleDoKIAotICAgVGhpcyBpcyBhIHZlcnNhdGlsZSBmdW5jdGlvbiB0byBjcmVhdGUgaXRlcmFibGVzIHlpZWxkaW5nIGFyaXRobWV0aWMKLSAgIHByb2dyZXNzaW9ucy4gIEl0IGlzIG1vc3Qgb2Z0ZW4gdXNlZCBpbiA6a2V5d29yZDpgZm9yYCBsb29wcy4gIFRoZSBhcmd1bWVudHMKLSAgIG11c3QgYmUgaW50ZWdlcnMuICBJZiB0aGUgKnN0ZXAqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBgMWBgLgotICAgSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGAwYGAuICBUaGUgZnVsbCBmb3JtCi0gICByZXR1cm5zIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzIGBgW3N0YXJ0LCBzdGFydCArIHN0ZXAsIHN0YXJ0ICsgMiAqIHN0ZXAsCi0gICAuLi5dYGAuICBJZiAqc3RlcCogaXMgcG9zaXRpdmUsIHRoZSBsYXN0IGVsZW1lbnQgaXMgdGhlIGxhcmdlc3QgYGBzdGFydCArIGkgKgotICAgc3RlcGBgIGxlc3MgdGhhbiAqc3RvcCo7IGlmICpzdGVwKiBpcyBuZWdhdGl2ZSwgdGhlIGxhc3QgZWxlbWVudCBpcyB0aGUKLSAgIHNtYWxsZXN0IGBgc3RhcnQgKyBpICogc3RlcGBgIGdyZWF0ZXIgdGhhbiAqc3RvcCouICAqc3RlcCogbXVzdCBub3QgYmUgemVybwotICAgKG9yIGVsc2UgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkKS4gIEV4YW1wbGU6Ci0KLSAgICAgID4+PiBsaXN0KHJhbmdlKDEwKSkKLSAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XQotICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKQotICAgICAgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXQotICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMzAsIDUpKQotICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XQotICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMTAsIDMpKQotICAgICAgWzAsIDMsIDYsIDldCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSkKLSAgICAgIFswLCAtMSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTgsIC05XQotICAgICAgPj4+IGxpc3QocmFuZ2UoMCkpCi0gICAgICBbXQotICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMCkpCi0gICAgICBbXQotCi0gICBSYW5nZSBvYmplY3RzIGltcGxlbWVudCB0aGUgOmNsYXNzOmBjb2xsZWN0aW9ucy5TZXF1ZW5jZWAgQUJDLCBhbmQgcHJvdmlkZQotICAgZmVhdHVyZXMgc3VjaCBhcyBjb250YWlubWVudCB0ZXN0cywgZWxlbWVudCBpbmRleCBsb29rdXAsIHNsaWNpbmcgYW5kCi0gICBzdXBwb3J0IGZvciBuZWdhdGl2ZSBpbmRpY2VzIChzZWUgOnJlZjpgdHlwZXNzZXFgKToKLQotICAgICAgPj4+IHIgPSByYW5nZSgwLCAyMCwgMikKLSAgICAgID4+PiByCi0gICAgICByYW5nZSgwLCAyMCwgMikKLSAgICAgID4+PiAxMSBpbiByCi0gICAgICBGYWxzZQotICAgICAgPj4+IDEwIGluIHIKLSAgICAgIFRydWUKLSAgICAgID4+PiByLmluZGV4KDEwKQotICAgICAgNQotICAgICAgPj4+IHJbNV0KLSAgICAgIDEwCi0gICAgICA+Pj4gcls6NV0KLSAgICAgIHJhbmdlKDAsIDEwLCAyKQotICAgICAgPj4+IHJbLTFdCi0gICAgICAxOAotCi0gICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gOmRhdGE6YHN5cy5tYXhzaXplYCBhcmUgcGVybWl0dGVkCi0gICBidXQgc29tZSBmZWF0dXJlcyAoc3VjaCBhcyA6ZnVuYzpgbGVuYCkgd2lsbCByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYC4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLgotICAgICAgU3VwcG9ydCBzbGljaW5nIGFuZCBuZWdhdGl2ZSBpbmRpY2VzLgotICAgICAgVGVzdCBpbnRlZ2VycyBmb3IgbWVtYmVyc2hpcCBpbiBjb25zdGFudCB0aW1lIGluc3RlYWQgb2YgaXRlcmF0aW5nCi0gICAgICB0aHJvdWdoIGFsbCBpdGVtcy4KKyAgIFJhdGhlciB0aGFuIGJlaW5nIGEgZnVuY3Rpb24sIDpjbGFzczpgcmFuZ2VgIGlzIGFjdHVhbGx5IGFuIGltbXV0YWJsZQorICAgc2VxdWVuY2UgdHlwZSwgYXMgZG9jdW1lbnRlZCBpbiA6cmVmOmB0eXBlc3NlcWAuCiAKIAogLi4gZnVuY3Rpb246OiByZXByKG9iamVjdCkKQEAgLTEyMTksNiArMTE4NSw3IEBACiAgICBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSBpbiA6cmVmOmB0eXBlc2AuCiAKIAorLi4gX2Z1bmMtc3RyOgogLi4gZnVuY3Rpb246OiBzdHIoW29iamVjdFssIGVuY29kaW5nWywgZXJyb3JzXV1dKQogCiAgICBSZXR1cm4gYSBzdHJpbmcgdmVyc2lvbiBvZiBhbiBvYmplY3QsIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nIG1vZGVzOgpAQCAtMTMwOCwyNiArMTI3NSwyNCBAQAogICAgQWNjb3JkaW5nbHksIDpmdW5jOmBzdXBlcmAgaXMgdW5kZWZpbmVkIGZvciBpbXBsaWNpdCBsb29rdXBzIHVzaW5nIHN0YXRlbWVudHMgb3IKICAgIG9wZXJhdG9ycyBzdWNoIGFzIGBgc3VwZXIoKVtuYW1lXWBgLgogCi0gICBBbHNvIG5vdGUgdGhhdCA6ZnVuYzpgc3VwZXJgIGlzIG5vdCBsaW1pdGVkIHRvIHVzZSBpbnNpZGUgbWV0aG9kcy4gIFRoZSB0d28KLSAgIGFyZ3VtZW50IGZvcm0gc3BlY2lmaWVzIHRoZSBhcmd1bWVudHMgZXhhY3RseSBhbmQgbWFrZXMgdGhlIGFwcHJvcHJpYXRlCi0gICByZWZlcmVuY2VzLiAgVGhlIHplcm8gYXJndW1lbnQgZm9ybSBhdXRvbWF0aWNhbGx5IHNlYXJjaGVzIHRoZSBzdGFjayBmcmFtZQotICAgZm9yIHRoZSBjbGFzcyAoYGBfX2NsYXNzX19gYCkgYW5kIHRoZSBmaXJzdCBhcmd1bWVudC4KKyAgIEFsc28gbm90ZSB0aGF0LCBhc2lkZSBmcm9tIHRoZSB6ZXJvIGFyZ3VtZW50IGZvcm0sIDpmdW5jOmBzdXBlcmAgaXMgbm90CisgICBsaW1pdGVkIHRvIHVzZSBpbnNpZGUgbWV0aG9kcy4gIFRoZSB0d28gYXJndW1lbnQgZm9ybSBzcGVjaWZpZXMgdGhlCisgICBhcmd1bWVudHMgZXhhY3RseSBhbmQgbWFrZXMgdGhlIGFwcHJvcHJpYXRlIHJlZmVyZW5jZXMuICBUaGUgemVybworICAgYXJndW1lbnQgZm9ybSBvbmx5IHdvcmtzIGluc2lkZSBhIGNsYXNzIGRlZmluaXRpb24sIGFzIHRoZSBjb21waWxlciBmaWxscworICAgaW4gdGhlIG5lY2Vzc2FyeSBkZXRhaWxzIHRvIGNvcnJlY3RseSByZXRyaWV2ZSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCwKKyAgIGFzIHdlbGwgYXMgYWNjZXNzaW5nIHRoZSBjdXJyZW50IGluc3RhbmNlIGZvciBvcmRpbmFyeSBtZXRob2RzLgogCiAgICBGb3IgcHJhY3RpY2FsIHN1Z2dlc3Rpb25zIG9uIGhvdyB0byBkZXNpZ24gY29vcGVyYXRpdmUgY2xhc3NlcyB1c2luZwogICAgOmZ1bmM6YHN1cGVyYCwgc2VlIGBndWlkZSB0byB1c2luZyBzdXBlcigpCiAgICA8aHR0cDovL3JoZXR0aW5nZXIud29yZHByZXNzLmNvbS8yMDExLzA1LzI2L3N1cGVyLWNvbnNpZGVyZWQtc3VwZXIvPmBfLgogCiAKKy4uIF9mdW5jLXR1cGxlOgogLi4gZnVuY3Rpb246OiB0dXBsZShbaXRlcmFibGVdKQorICAgOm5vaW5kZXg6CiAKLSAgIFJldHVybiBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzCi0gICBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGEgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbgotICAgaXRlcmF0b3Igb2JqZWN0LiBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSB0dXBsZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgotICAgRm9yIGluc3RhbmNlLCBgYHR1cGxlKCdhYmMnKWBgIHJldHVybnMgYGAoJ2EnLCAnYicsICdjJylgYCBhbmQgYGB0dXBsZShbMSwgMiwKLSAgIDNdKWBgIHJldHVybnMgYGAoMSwgMiwgMylgYC4gIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCByZXR1cm5zIGEgbmV3IGVtcHR5Ci0gICB0dXBsZSwgYGAoKWBgLgotCi0gICA6Y2xhc3M6YHR1cGxlYCBpcyBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9jdW1lbnRlZCBpbiA6cmVmOmB0eXBlc3NlcWAuCisgICBSYXRoZXIgdGhhbiBiZWluZyBhIGZ1bmN0aW9uLCA6Y2xhc3M6YHR1cGxlYCBpcyBhY3R1YWxseSBhbiBpbW11dGFibGUKKyAgIHNlcXVlbmNlIHR5cGUsIGFzIGRvY3VtZW50ZWQgaW4gOnJlZjpgdHlwZXNzZXFgLgogCiAKIC4uIGZ1bmN0aW9uOjogdHlwZShvYmplY3QpCkBAIC0xNDE2LDcgKzEzODEsNyBAQAogICAgICAgVHJ1ZQogCiAKLS4uIGZ1bmN0aW9uOjogX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPXt9LCBsb2NhbHM9e30sIGZyb21saXN0PVtdLCBsZXZlbD0tMSkKKy4uIGZ1bmN0aW9uOjogX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCBmcm9tbGlzdD0oKSwgbGV2ZWw9MCkKIAogICAgLi4gaW5kZXg6OgogICAgICAgc3RhdGVtZW50OiBpbXBvcnQKQEAgLTE0MzEsOCArMTM5Niw5IEBACiAgICByZXBsYWNlZCAoYnkgaW1wb3J0aW5nIHRoZSA6bW9kOmBidWlsdGluc2AgbW9kdWxlIGFuZCBhc3NpZ25pbmcgdG8KICAgIGBgYnVpbHRpbnMuX19pbXBvcnRfX2BgKSBpbiBvcmRlciB0byBjaGFuZ2Ugc2VtYW50aWNzIG9mIHRoZQogICAgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LCBidXQgbm93YWRheXMgaXQgaXMgdXN1YWxseSBzaW1wbGVyIHRvIHVzZSBpbXBvcnQKLSAgIGhvb2tzIChzZWUgOnBlcDpgMzAyYCkuICBEaXJlY3QgdXNlIG9mIDpmdW5jOmBfX2ltcG9ydF9fYCBpcyByYXJlLCBleGNlcHQgaW4KLSAgIGNhc2VzIHdoZXJlIHlvdSB3YW50IHRvIGltcG9ydCBhIG1vZHVsZSB3aG9zZSBuYW1lIGlzIG9ubHkga25vd24gYXQgcnVudGltZS4KKyAgIGhvb2tzIChzZWUgOnBlcDpgMzAyYCkgdG8gYXR0YWluIHRoZSBzYW1lIGdvYWxzLiAgRGlyZWN0IHVzZSBvZgorICAgOmZ1bmM6YF9faW1wb3J0X19gIGlzIGVudGlyZWx5IGRpc2NvdXJhZ2VkIGluIGZhdm9yIG9mCisgICA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgLgogCiAgICBUaGUgZnVuY3Rpb24gaW1wb3J0cyB0aGUgbW9kdWxlICpuYW1lKiwgcG90ZW50aWFsbHkgdXNpbmcgdGhlIGdpdmVuICpnbG9iYWxzKgogICAgYW5kICpsb2NhbHMqIHRvIGRldGVybWluZSBob3cgdG8gaW50ZXJwcmV0IHRoZSBuYW1lIGluIGEgcGFja2FnZSBjb250ZXh0LgpAQCAtMTQ0MSwxMyArMTQwNywxMSBAQAogICAgbm90IHVzZSBpdHMgKmxvY2FscyogYXJndW1lbnQgYXQgYWxsLCBhbmQgdXNlcyBpdHMgKmdsb2JhbHMqIG9ubHkgdG8KICAgIGRldGVybWluZSB0aGUgcGFja2FnZSBjb250ZXh0IG9mIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQuCiAKLSAgICpsZXZlbCogc3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIGFic29sdXRlIG9yIHJlbGF0aXZlIGltcG9ydHMuIGBgMGBgCi0gICBtZWFucyBvbmx5IHBlcmZvcm0gYWJzb2x1dGUgaW1wb3J0cy4gUG9zaXRpdmUgdmFsdWVzIGZvciAqbGV2ZWwqIGluZGljYXRlIHRoZQotICAgbnVtYmVyIG9mIHBhcmVudCBkaXJlY3RvcmllcyB0byBzZWFyY2ggcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUKLSAgIG1vZHVsZSBjYWxsaW5nIDpmdW5jOmBfX2ltcG9ydF9fYC4gIE5lZ2F0aXZlIHZhbHVlcyBhdHRlbXB0IGJvdGggYW4gaW1wbGljaXQKLSAgIHJlbGF0aXZlIGltcG9ydCBhbmQgYW4gYWJzb2x1dGUgaW1wb3J0ICh1c2FnZSBvZiBuZWdhdGl2ZSB2YWx1ZXMgZm9yICpsZXZlbCoKLSAgIGFyZSBzdHJvbmdseSBkaXNjb3VyYWdlZCBhcyBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uIGRvIG5vdCBzdXBwb3J0IHN1Y2gKLSAgIHZhbHVlcykuIEltcG9ydCBzdGF0ZW1lbnRzIG9ubHkgdXNlIHZhbHVlcyBvZiAwIG9yIGdyZWF0ZXIuCisgICAqbGV2ZWwqIHNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBhYnNvbHV0ZSBvciByZWxhdGl2ZSBpbXBvcnRzLiBgYDBgYCAodGhlCisgICBkZWZhdWx0KSBtZWFucyBvbmx5IHBlcmZvcm0gYWJzb2x1dGUgaW1wb3J0cy4gIFBvc2l0aXZlIHZhbHVlcyBmb3IKKyAgICpsZXZlbCogaW5kaWNhdGUgdGhlIG51bWJlciBvZiBwYXJlbnQgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIHJlbGF0aXZlIHRvIHRoZQorICAgZGlyZWN0b3J5IG9mIHRoZSBtb2R1bGUgY2FsbGluZyA6ZnVuYzpgX19pbXBvcnRfX2AgKHNlZSA6cGVwOmAzMjhgIGZvciB0aGUKKyAgIGRldGFpbHMpLgogCiAgICBXaGVuIHRoZSAqbmFtZSogdmFyaWFibGUgaXMgb2YgdGhlIGZvcm0gYGBwYWNrYWdlLm1vZHVsZWBgLCBub3JtYWxseSwgdGhlCiAgICB0b3AtbGV2ZWwgcGFja2FnZSAodGhlIG5hbWUgdXAgdGlsbCB0aGUgZmlyc3QgZG90KSBpcyByZXR1cm5lZCwgKm5vdCogdGhlCkBAIC0xNDgwLDYgKzE0NDQsMTAgQEAKICAgIElmIHlvdSBzaW1wbHkgd2FudCB0byBpbXBvcnQgYSBtb2R1bGUgKHBvdGVudGlhbGx5IHdpdGhpbiBhIHBhY2thZ2UpIGJ5IG5hbWUsCiAgICB1c2UgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE5lZ2F0aXZlIHZhbHVlcyBmb3IgKmxldmVsKiBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCAod2hpY2ggYWxzbyBjaGFuZ2VzCisgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSB0byAwKS4KKwogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnVuY3Rvb2xzLnJzdCBiL0RvYy9saWJyYXJ5L2Z1bmN0b29scy5yc3QKaW5kZXggMDQ3NDNkMy4uZjVjNjYwOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnVuY3Rvb2xzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdW5jdG9vbHMucnN0CkBAIC00MCw3ICs0MCw3IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0uLiBkZWNvcmF0b3I6OiBscnVfY2FjaGUobWF4c2l6ZT0xMDApCisuLiBkZWNvcmF0b3I6OiBscnVfY2FjaGUobWF4c2l6ZT0xMjgsIHR5cGVkPUZhbHNlKQogCiAgICBEZWNvcmF0b3IgdG8gd3JhcCBhIGZ1bmN0aW9uIHdpdGggYSBtZW1vaXppbmcgY2FsbGFibGUgdGhhdCBzYXZlcyB1cCB0byB0aGUKICAgICptYXhzaXplKiBtb3N0IHJlY2VudCBjYWxscy4gIEl0IGNhbiBzYXZlIHRpbWUgd2hlbiBhbiBleHBlbnNpdmUgb3IgSS9PIGJvdW5kCkBAIC00OSw4ICs0OSwxMyBAQAogICAgU2luY2UgYSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gY2FjaGUgcmVzdWx0cywgdGhlIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKICAgIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24gbXVzdCBiZSBoYXNoYWJsZS4KIAotICAgSWYgKm1heHNpemUqIGlzIHNldCB0byBOb25lLCB0aGUgTFJVIGZlYXR1cmUgaXMgZGlzYWJsZWQgYW5kIHRoZSBjYWNoZQotICAgY2FuIGdyb3cgd2l0aG91dCBib3VuZC4KKyAgIElmICptYXhzaXplKiBpcyBzZXQgdG8gTm9uZSwgdGhlIExSVSBmZWF0dXJlIGlzIGRpc2FibGVkIGFuZCB0aGUgY2FjaGUgY2FuCisgICBncm93IHdpdGhvdXQgYm91bmQuICBUaGUgTFJVIGZlYXR1cmUgcGVyZm9ybXMgYmVzdCB3aGVuICptYXhzaXplKiBpcyBhCisgICBwb3dlci1vZi10d28uCisKKyAgIElmICp0eXBlZCogaXMgc2V0IHRvIFRydWUsIGZ1bmN0aW9uIGFyZ3VtZW50cyBvZiBkaWZmZXJlbnQgdHlwZXMgd2lsbCBiZQorICAgY2FjaGVkIHNlcGFyYXRlbHkuICBGb3IgZXhhbXBsZSwgYGBmKDMpYGAgYW5kIGBgZigzLjApYGAgd2lsbCBiZSB0cmVhdGVkCisgICBhcyBkaXN0aW5jdCBjYWxscyB3aXRoIGRpc3RpbmN0IHJlc3VsdHMuCiAKICAgIFRvIGhlbHAgbWVhc3VyZSB0aGUgZWZmZWN0aXZlbmVzcyBvZiB0aGUgY2FjaGUgYW5kIHR1bmUgdGhlICptYXhzaXplKgogICAgcGFyYW1ldGVyLCB0aGUgd3JhcHBlZCBmdW5jdGlvbiBpcyBpbnN0cnVtZW50ZWQgd2l0aCBhIDpmdW5jOmBjYWNoZV9pbmZvYApAQCAtNjcsOCArNzIsOCBAQAogCiAgICBBbiBgTFJVIChsZWFzdCByZWNlbnRseSB1c2VkKSBjYWNoZQogICAgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FjaGVfYWxnb3JpdGhtcyNMZWFzdF9SZWNlbnRseV9Vc2VkPmBfIHdvcmtzCi0gICBiZXN0IHdoZW4gbW9yZSByZWNlbnQgY2FsbHMgYXJlIHRoZSBiZXN0IHByZWRpY3RvcnMgb2YgdXBjb21pbmcgY2FsbHMgKGZvcgotICAgZXhhbXBsZSwgdGhlIG1vc3QgcG9wdWxhciBhcnRpY2xlcyBvbiBhIG5ld3Mgc2VydmVyIHRlbmQgdG8gY2hhbmdlIGRhaWx5KS4KKyAgIGJlc3Qgd2hlbiB0aGUgbW9zdCByZWNlbnQgY2FsbHMgYXJlIHRoZSBiZXN0IHByZWRpY3RvcnMgb2YgdXBjb21pbmcgY2FsbHMgKGZvcgorICAgZXhhbXBsZSwgdGhlIG1vc3QgcG9wdWxhciBhcnRpY2xlcyBvbiBhIG5ld3Mgc2VydmVyIHRlbmQgdG8gY2hhbmdlIGVhY2ggZGF5KS4KICAgIFRoZSBjYWNoZSdzIHNpemUgbGltaXQgYXNzdXJlcyB0aGF0IHRoZSBjYWNoZSBkb2VzIG5vdCBncm93IHdpdGhvdXQgYm91bmQgb24KICAgIGxvbmctcnVubmluZyBwcm9jZXNzZXMgc3VjaCBhcyB3ZWIgc2VydmVycy4KIApAQCAtMTExLDYgKzExNiw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICp0eXBlZCogb3B0aW9uLgorCiAuLiBkZWNvcmF0b3I6OiB0b3RhbF9vcmRlcmluZwogCiAgICBHaXZlbiBhIGNsYXNzIGRlZmluaW5nIG9uZSBvciBtb3JlIHJpY2ggY29tcGFyaXNvbiBvcmRlcmluZyBtZXRob2RzLCB0aGlzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nYy5yc3QgYi9Eb2MvbGlicmFyeS9nYy5yc3QKaW5kZXggMDI4MWJiNy4uM2Q3NjQxMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ2MucnN0CisrKyBiL0RvYy9saWJyYXJ5L2djLnJzdApAQCAtMTUzLDggKzE1Myw4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCi1UaGUgZm9sbG93aW5nIHZhcmlhYmxlIGlzIHByb3ZpZGVkIGZvciByZWFkLW9ubHkgYWNjZXNzICh5b3UgY2FuIG11dGF0ZSBpdHMKLXZhbHVlIGJ1dCBzaG91bGQgbm90IHJlYmluZCBpdCk6CitUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgcHJvdmlkZWQgZm9yIHJlYWQtb25seSBhY2Nlc3MgKHlvdSBjYW4gbXV0YXRlIHRoZQordmFsdWVzIGJ1dCBzaG91bGQgbm90IHJlYmluZCB0aGVtKToKIAogLi4gZGF0YTo6IGdhcmJhZ2UKIApAQCAtMTgzLDYgKzE4Myw0MSBAQAogICAgICAgOmNvbnN0OmBERUJVR19VTkNPTExFQ1RBQkxFYCBpcyBzZXQsIGluIGFkZGl0aW9uIGFsbCB1bmNvbGxlY3RhYmxlIG9iamVjdHMKICAgICAgIGFyZSBwcmludGVkLgogCisuLiBkYXRhOjogY2FsbGJhY2tzCisKKyAgIEEgbGlzdCBvZiBjYWxsYmFja3MgdGhhdCB3aWxsIGJlIGludm9rZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGJlZm9yZSBhbmQKKyAgIGFmdGVyIGNvbGxlY3Rpb24uICBUaGUgY2FsbGJhY2tzIHdpbGwgYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50cywKKyAgICpwaGFzZSogYW5kICppbmZvKi4KKworICAgKnBoYXNlKiBjYW4gb25lIG9mIHR3byB2YWx1ZXM6CisKKyAgICAgICJzdGFydCI6IFRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgYWJvdXQgdG8gc3RhcnQuCisKKyAgICAgICJzdG9wIjogVGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBoYXMgZmluaXNoZWQuCisKKyAgICppbmZvKiBwcm92aWRlcyBtb3JlIGluZm9ybWF0aW9uIGZvciB0aGUgY2FsbGJhY2suICBUaGUgZm9sbG93aW5nCisgICBrZXlzIGFyZSBjdXJyZW50bHkgZGVmaW5lZDoKKworICAgICAgImdlbmVyYXRpb24iOiBUaGUgb2xkZXN0IGdlbmVyYXRpb24gYmVpbmcgY29sbGVjdGVkLgorCisgICAgICAiY29sbGVjdGVkIjogV2hlbiAqcGhhc2UqIGlzICJzdG9wIiwgdGhlIG51bWJlciBvZiBvYmplY3RzCisgICAgICBzdWNjZXNzZnVsbHkgY29sbGVjdGVkLgorCisgICAgICAidW5jb2xsZWN0YWJsZSI6IHdoZW4gKnBoYXNlKiBpcyAic3RvcCIsIHRoZSBudW1iZXIgb2Ygb2JqZWN0cworICAgICAgdGhhdCBjb3VsZCBub3QgYmUgY29sbGVjdGVkIGFuZCB3ZXJlIHB1dCBpbiA6ZGF0YTpgZ2FyYmFnZWAuCisKKyAgIEFwcGxpY2F0aW9ucyBjYW4gYWRkIHRoZWlyIG93biBjYWxsYmFja3MgdG8gdGhpcyBsaXN0LiAgVGhlIHByaW1hcnkKKyAgIHVzZSBjYXNlcyBhcmU6CisKKyAgICAgIEdhdGhlcmluZyBzdGF0aXN0aWNzIGFib3V0IGdhcmJhZ2UgY29sbGVjdGlvbiwgc3VjaCBhcyBob3cgb2Z0ZW4KKyAgICAgIHZhcmlvdXMgZ2VuZXJhdGlvbnMgYXJlIGNvbGxlY3RlZCwgYW5kIGhvdyBsb25nIHRoZSBjb2xsZWN0aW9uCisgICAgICB0YWtlcy4KKworICAgICAgQWxsb3dpbmcgYXBwbGljYXRpb25zIHRvIGlkZW50aWZ5IGFuZCBjbGVhciB0aGVpciBvd24gdW5jb2xsZWN0YWJsZQorICAgICAgdHlwZXMgd2hlbiB0aGV5IGFwcGVhciBpbiA6ZGF0YTpgZ2FyYmFnZWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGFyZSBwcm92aWRlZCBmb3IgdXNlIHdpdGggOmZ1bmM6YHNldF9kZWJ1Z2A6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2dldHRleHQucnN0IGIvRG9jL2xpYnJhcnkvZ2V0dGV4dC5yc3QKaW5kZXggMGZhMDIyYy4uODI1MzExYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ2V0dGV4dC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2V0dGV4dC5yc3QKQEAgLTE4NSwxMCArMTg1LDEzIEBACiAgICB0cmFuc2xhdGlvbiBvYmplY3QgZnJvbSB0aGUgY2FjaGU7IHRoZSBhY3R1YWwgaW5zdGFuY2UgZGF0YSBpcyBzdGlsbCBzaGFyZWQgd2l0aAogICAgdGhlIGNhY2hlLgogCi0gICBJZiBubyA6ZmlsZTpgLm1vYCBmaWxlIGlzIGZvdW5kLCB0aGlzIGZ1bmN0aW9uIHJhaXNlcyA6ZXhjOmBJT0Vycm9yYCBpZgorICAgSWYgbm8gOmZpbGU6YC5tb2AgZmlsZSBpcyBmb3VuZCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgOmV4YzpgT1NFcnJvcmAgaWYKICAgICpmYWxsYmFjayogaXMgZmFsc2UgKHdoaWNoIGlzIHRoZSBkZWZhdWx0KSwgYW5kIHJldHVybnMgYQogICAgOmNsYXNzOmBOdWxsVHJhbnNsYXRpb25zYCBpbnN0YW5jZSBpZiAqZmFsbGJhY2sqIGlzIHRydWUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIC4uIGZ1bmN0aW9uOjogaW5zdGFsbChkb21haW4sIGxvY2FsZWRpcj1Ob25lLCBjb2Rlc2V0PU5vbmUsIG5hbWVzPU5vbmUpCiAKQEAgLTM0Miw3ICszNDUsNyBAQAogCiBJZiB0aGUgOmZpbGU6YC5tb2AgZmlsZSdzIG1hZ2ljIG51bWJlciBpcyBpbnZhbGlkLCBvciBpZiBvdGhlciBwcm9ibGVtcyBvY2N1cgogd2hpbGUgcmVhZGluZyB0aGUgZmlsZSwgaW5zdGFudGlhdGluZyBhIDpjbGFzczpgR05VVHJhbnNsYXRpb25zYCBjbGFzcyBjYW4gcmFpc2UKLTpleGM6YElPRXJyb3JgLgorOmV4YzpgT1NFcnJvcmAuCiAKIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgb3ZlcnJpZGRlbiBmcm9tIHRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nemlwLnJzdCBiL0RvYy9saWJyYXJ5L2d6aXAucnN0CmluZGV4IDk0MjJlYTkuLjUwZDA0NjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2d6aXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2d6aXAucnN0CkBAIC0xMyw5ICsxMywxMSBAQAogCiBUaGUgZGF0YSBjb21wcmVzc2lvbiBpcyBwcm92aWRlZCBieSB0aGUgOm1vZDpgemxpYmAgbW9kdWxlLgogCi1UaGUgOm1vZDpgZ3ppcGAgbW9kdWxlIHByb3ZpZGVzIHRoZSA6Y2xhc3M6YEd6aXBGaWxlYCBjbGFzcy4gVGhlIDpjbGFzczpgR3ppcEZpbGVgCi1jbGFzcyByZWFkcyBhbmQgd3JpdGVzIDpwcm9ncmFtOmBnemlwYFwgLWZvcm1hdCBmaWxlcywgYXV0b21hdGljYWxseSBjb21wcmVzc2luZwotb3IgZGVjb21wcmVzc2luZyB0aGUgZGF0YSBzbyB0aGF0IGl0IGxvb2tzIGxpa2UgYW4gb3JkaW5hcnkgOnRlcm06YGZpbGUgb2JqZWN0YC4KK1RoZSA6bW9kOmBnemlwYCBtb2R1bGUgcHJvdmlkZXMgdGhlIDpjbGFzczpgR3ppcEZpbGVgIGNsYXNzLCBhcyB3ZWxsIGFzIHRoZQorOmZ1bmM6YC5vcGVuYCwgOmZ1bmM6YGNvbXByZXNzYCBhbmQgOmZ1bmM6YGRlY29tcHJlc3NgIGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4KK1RoZSA6Y2xhc3M6YEd6aXBGaWxlYCBjbGFzcyByZWFkcyBhbmQgd3JpdGVzIDpwcm9ncmFtOmBnemlwYFwgLWZvcm1hdCBmaWxlcywKK2F1dG9tYXRpY2FsbHkgY29tcHJlc3Npbmcgb3IgZGVjb21wcmVzc2luZyB0aGUgZGF0YSBzbyB0aGF0IGl0IGxvb2tzIGxpa2UgYW4KK29yZGluYXJ5IDp0ZXJtOmBmaWxlIG9iamVjdGAuCiAKIE5vdGUgdGhhdCBhZGRpdGlvbmFsIGZpbGUgZm9ybWF0cyB3aGljaCBjYW4gYmUgZGVjb21wcmVzc2VkIGJ5IHRoZQogOnByb2dyYW06YGd6aXBgIGFuZCA6cHJvZ3JhbTpgZ3VuemlwYCBwcm9ncmFtcywgc3VjaCAgYXMgdGhvc2UgcHJvZHVjZWQgYnkKQEAgLTI0LDYgKzI2LDM0IEBACiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBpdGVtczoKIAogCisuLiBmdW5jdGlvbjo6IG9wZW4oZmlsZW5hbWUsIG1vZGU9J3JiJywgY29tcHJlc3NsZXZlbD05LCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQorCisgICBPcGVuIGEgZ3ppcC1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZSwgcmV0dXJuaW5nIGEgOnRlcm06YGZpbGUKKyAgIG9iamVjdGAuCisKKyAgIFRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgOmNsYXNzOmBzdHJgIG9yCisgICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGFueSBvZiBgYCdyJ2BgLCBgYCdyYidgYCwgYGAnYSdgYCwgYGAnYWInYGAsCisgICBgYCd3J2BgLCBvciBgYCd3YidgYCBmb3IgYmluYXJ5IG1vZGUsIG9yIGBgJ3J0J2BgLCBgYCdhdCdgYCwgb3IgYGAnd3QnYGAgZm9yCisgICB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IGlzIGBgJ3JiJ2BgLgorCisgICBUaGUgKmNvbXByZXNzbGV2ZWwqIGFyZ3VtZW50IGlzIGFuIGludGVnZXIgZnJvbSAxIHRvIDksIGFzIGZvciB0aGUKKyAgIDpjbGFzczpgR3ppcEZpbGVgIGNvbnN0cnVjdG9yLgorCisgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgOmNsYXNzOmBHemlwRmlsZWAKKyAgIGNvbnN0cnVjdG9yOiBgYEd6aXBGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKWBgLiBJbiB0aGlzIGNhc2UsIHRoZQorICAgKmVuY29kaW5nKiwgKmVycm9ycyogYW5kICpuZXdsaW5lKiBhcmd1bWVudHMgbXVzdCBub3QgYmUgcHJvdmlkZWQuCisKKyAgIEZvciB0ZXh0IG1vZGUsIGEgOmNsYXNzOmBHemlwRmlsZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IKKyAgIGhhbmRsaW5nIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqZmlsZW5hbWUqIGJlaW5nIGEgZmlsZSBvYmplY3QsIHN1cHBvcnQgZm9yIHRleHQgbW9kZSwKKyAgICAgIGFuZCB0aGUgKmVuY29kaW5nKiwgKmVycm9ycyogYW5kICpuZXdsaW5lKiBhcmd1bWVudHMuCisKKwogLi4gY2xhc3M6OiBHemlwRmlsZShmaWxlbmFtZT1Ob25lLCBtb2RlPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSwgZmlsZW9iaj1Ob25lLCBtdGltZT1Ob25lKQogCiAgICBDb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgR3ppcEZpbGVgIGNsYXNzLCB3aGljaCBzaW11bGF0ZXMgbW9zdCBvZiB0aGUKQEAgLTQ2LDkgKzc2LDkgQEAKICAgIG9yIGBgJ3diJ2BgLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgZmlsZSB3aWxsIGJlIHJlYWQgb3Igd3JpdHRlbi4gIFRoZSBkZWZhdWx0CiAgICBpcyB0aGUgbW9kZSBvZiAqZmlsZW9iaiogaWYgZGlzY2VybmlibGU7IG90aGVyd2lzZSwgdGhlIGRlZmF1bHQgaXMgYGAncmInYGAuCiAKLSAgIE5vdGUgdGhhdCB0aGUgZmlsZSBpcyBhbHdheXMgb3BlbmVkIGluIGJpbmFyeSBtb2RlOyB0ZXh0IG1vZGUgaXMgbm90Ci0gICBzdXBwb3J0ZWQuIElmIHlvdSBuZWVkIHRvIHJlYWQgYSBjb21wcmVzc2VkIGZpbGUgaW4gdGV4dCBtb2RlLCB3cmFwIHlvdXIKLSAgIDpjbGFzczpgR3ppcEZpbGVgIHdpdGggYW4gOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYC4KKyAgIE5vdGUgdGhhdCB0aGUgZmlsZSBpcyBhbHdheXMgb3BlbmVkIGluIGJpbmFyeSBtb2RlLiBUbyBvcGVuIGEgY29tcHJlc3NlZCBmaWxlCisgICBpbiB0ZXh0IG1vZGUsIHVzZSA6ZnVuYzpgLm9wZW5gIChvciB3cmFwIHlvdXIgOmNsYXNzOmBHemlwRmlsZWAgd2l0aCBhbgorICAgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCkuCiAKICAgIFRoZSAqY29tcHJlc3NsZXZlbCogYXJndW1lbnQgaXMgYW4gaW50ZWdlciBmcm9tIGBgMWBgIHRvIGBgOWBgIGNvbnRyb2xsaW5nIHRoZQogICAgbGV2ZWwgb2YgY29tcHJlc3Npb247IGBgMWBgIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdCBjb21wcmVzc2lvbiwgYW5kCkBAIC03MSw3ICsxMDEsNyBAQAogCiAgICA6Y2xhc3M6YEd6aXBGaWxlYCBzdXBwb3J0cyB0aGUgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgaW50ZXJmYWNlLAogICAgaW5jbHVkaW5nIGl0ZXJhdGlvbiBhbmQgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuICBPbmx5IHRoZQotICAgOm1ldGg6YHJlYWQxYCBhbmQgOm1ldGg6YHRydW5jYXRlYCBtZXRob2RzIGFyZW4ndCBpbXBsZW1lbnRlZC4KKyAgIDptZXRoOmB0cnVuY2F0ZWAgbWV0aG9kIGlzbid0IGltcGxlbWVudGVkLgogCiAgICA6Y2xhc3M6YEd6aXBGaWxlYCBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kOgogCkBAIC05MywxMiArMTIzLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBTdXBwb3J0IGZvciB1bnNlZWthYmxlIGZpbGVzIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSA6bWV0aDpgaW8uQnVmZmVyZWRJT0Jhc2UucmVhZDFgIG1ldGhvZCBpcyBub3cgaW1wbGVtZW50ZWQuCiAKLS4uIGZ1bmN0aW9uOjogb3BlbihmaWxlbmFtZSwgbW9kZT0ncmInLCBjb21wcmVzc2xldmVsPTkpCi0KLSAgIFRoaXMgaXMgYSBzaG9ydGhhbmQgZm9yIGBgR3ppcEZpbGUoZmlsZW5hbWUsYGAgYGBtb2RlLGBgIGBgY29tcHJlc3NsZXZlbClgYC4KLSAgIFRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IGlzIHJlcXVpcmVkOyAqbW9kZSogZGVmYXVsdHMgdG8gYGAncmInYGAgYW5kCi0gICAqY29tcHJlc3NsZXZlbCogZGVmYXVsdHMgdG8gYGA5YGAuCiAKIC4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9obWFjLnJzdCBiL0RvYy9saWJyYXJ5L2htYWMucnN0CmluZGV4IGVmZjI3MjQuLjA3MDZmZjQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2htYWMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2htYWMucnN0CkBAIC0zOCw2ICszOCwxMyBAQAogICAgZ2l2ZW4gdG8gdGhlIGNvbnN0cnVjdG9yLiAgSXQgbWF5IGNvbnRhaW4gbm9uLUFTQ0lJIGJ5dGVzLCBpbmNsdWRpbmcgTlVMCiAgICBieXRlcy4KIAorICAgLi4gd2FybmluZzo6CisKKyAgICAgIFdoZW4gY29tcGFyaW5nIHRoZSBvdXRwdXQgb2YgOm1ldGg6YGRpZ2VzdGAgdG8gYW4gZXh0ZXJuYWxseS1zdXBwbGllZAorICAgICAgZGlnZXN0IGR1cmluZyBhIHZlcmlmaWNhdGlvbiByb3V0aW5lLCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlCisgICAgICA6ZnVuYzpgY29tcGFyZV9kaWdlc3RgIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIGBgPT1gYCBvcGVyYXRvcgorICAgICAgdG8gcmVkdWNlIHRoZSB2dWxuZXJhYmlsaXR5IHRvIHRpbWluZyBhdHRhY2tzLgorCiAKIC4uIG1ldGhvZDo6IEhNQUMuaGV4ZGlnZXN0KCkKIApAQCAtNDUsNiArNTIsMTMgQEAKICAgIGxlbmd0aCBjb250YWluaW5nIG9ubHkgaGV4YWRlY2ltYWwgZGlnaXRzLiAgVGhpcyBtYXkgYmUgdXNlZCB0byBleGNoYW5nZSB0aGUKICAgIHZhbHVlIHNhZmVseSBpbiBlbWFpbCBvciBvdGhlciBub24tYmluYXJ5IGVudmlyb25tZW50cy4KIAorICAgLi4gd2FybmluZzo6CisKKyAgICAgIFdoZW4gY29tcGFyaW5nIHRoZSBvdXRwdXQgb2YgOm1ldGg6YGhleGRpZ2VzdGAgdG8gYW4gZXh0ZXJuYWxseS1zdXBwbGllZAorICAgICAgZGlnZXN0IGR1cmluZyBhIHZlcmlmaWNhdGlvbiByb3V0aW5lLCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlCisgICAgICA6ZnVuYzpgY29tcGFyZV9kaWdlc3RgIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIGBgPT1gYCBvcGVyYXRvcgorICAgICAgdG8gcmVkdWNlIHRoZSB2dWxuZXJhYmlsaXR5IHRvIHRpbWluZyBhdHRhY2tzLgorCiAKIC4uIG1ldGhvZDo6IEhNQUMuY29weSgpCiAKQEAgLTUyLDYgKzY2LDI3IEBACiAgICBjb21wdXRlIHRoZSBkaWdlc3RzIG9mIHN0cmluZ3MgdGhhdCBzaGFyZSBhIGNvbW1vbiBpbml0aWFsIHN1YnN0cmluZy4KIAogCitUaGlzIG1vZHVsZSBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9uOgorCisuLiBmdW5jdGlvbjo6IGNvbXBhcmVfZGlnZXN0KGEsIGIpCisKKyAgIFJldHVybiBgYGEgPT0gYmBgLiAgVGhpcyBmdW5jdGlvbiB1c2VzIGFuIGFwcHJvYWNoIGRlc2lnbmVkIHRvIHByZXZlbnQKKyAgIHRpbWluZyBhbmFseXNpcyBieSBhdm9pZGluZyBjb250ZW50LWJhc2VkIHNob3J0IGNpcmN1aXRpbmcgYmVoYXZpb3VyLAorICAgbWFraW5nIGl0IGFwcHJvcHJpYXRlIGZvciBjcnlwdG9ncmFwaHkuICAqYSogYW5kICpiKiBtdXN0IGJvdGggYmUgb2YgdGhlCisgICBzYW1lIHR5cGU6IGVpdGhlciA6Y2xhc3M6YHN0cmAgKEFTQ0lJIG9ubHksIGFzIGUuZy4gcmV0dXJuZWQgYnkKKyAgIDptZXRoOmBITUFDLmhleGRpZ2VzdGApLCBvciBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBidWZmZXIgcHJvdG9jb2wKKyAgIChlLmcuIDpjbGFzczpgYnl0ZXNgKS4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIElmICphKiBhbmQgKmIqIGFyZSBvZiBkaWZmZXJlbnQgbGVuZ3Rocywgb3IgaWYgYW4gZXJyb3Igb2NjdXJzLAorICAgICAgYSB0aW1pbmcgYXR0YWNrIGNvdWxkIHRoZW9yZXRpY2FsbHkgcmV2ZWFsIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgdHlwZXMgYW5kIGxlbmd0aHMgb2YgKmEqIGFuZCAqYiotLWJ1dCBub3QgdGhlaXIgdmFsdWVzLgorCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIHNlZWFsc286OgogCiAgICBNb2R1bGUgOm1vZDpgaGFzaGxpYmAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0bWwuZW50aXRpZXMucnN0IGIvRG9jL2xpYnJhcnkvaHRtbC5lbnRpdGllcy5yc3QKaW5kZXggYjhiNGFhOC4uNjVjZTgxNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHRtbC5lbnRpdGllcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHRtbC5lbnRpdGllcy5yc3QKQEAgLTksMTEgKzksMTkgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBtb2R1bGUgZGVmaW5lcyB0aHJlZSBkaWN0aW9uYXJpZXMsIGBgbmFtZTJjb2RlcG9pbnRgYCwgYGBjb2RlcG9pbnQybmFtZWBgLAotYW5kIGBgZW50aXR5ZGVmc2BgLiBgYGVudGl0eWRlZnNgYCBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIDphdHRyOmBlbnRpdHlkZWZzYAotYXR0cmlidXRlIG9mIHRoZSA6Y2xhc3M6YGh0bWwucGFyc2VyLkhUTUxQYXJzZXJgIGNsYXNzLiAgVGhlIGRlZmluaXRpb24gcHJvdmlkZWQKLWhlcmUgY29udGFpbnMgYWxsIHRoZSBlbnRpdGllcyBkZWZpbmVkIGJ5IFhIVE1MIDEuMCB0aGF0IGNhbiBiZSBoYW5kbGVkIHVzaW5nCi1zaW1wbGUgdGV4dHVhbCBzdWJzdGl0dXRpb24gaW4gdGhlIExhdGluLTEgY2hhcmFjdGVyIHNldCAoSVNPLTg4NTktMSkuCitUaGlzIG1vZHVsZSBkZWZpbmVzIGZvdXIgZGljdGlvbmFyaWVzLCA6ZGF0YTpgaHRtbDVgLAorOmRhdGE6YG5hbWUyY29kZXBvaW50YCwgOmRhdGE6YGNvZGVwb2ludDJuYW1lYCwgYW5kIDpkYXRhOmBlbnRpdHlkZWZzYC4KKworCisuLiBkYXRhOjogaHRtbDUKKworICAgQSBkaWN0aW9uYXJ5IHRoYXQgbWFwcyBIVE1MNSBuYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBbI11fIHRvIHRoZQorICAgZXF1aXZhbGVudCBVbmljb2RlIGNoYXJhY3RlcihzKSwgZS5nLiBgYGh0bWw1WydndDsnXSA9PSAnPidgYC4KKyAgIE5vdGUgdGhhdCB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uIGlzIGluY2x1ZGVkIGluIHRoZSBuYW1lIChlLmcuIGBgJ2d0OydgYCksCisgICBob3dldmVyIHNvbWUgb2YgdGhlIG5hbWVzIGFyZSBhY2NlcHRlZCBieSB0aGUgc3RhbmRhcmQgZXZlbiB3aXRob3V0IHRoZQorICAgc2VtaWNvbG9uOiBpbiB0aGlzIGNhc2UgdGhlIG5hbWUgaXMgcHJlc2VudCB3aXRoIGFuZCB3aXRob3V0IHRoZSBgYCc7J2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBkYXRhOjogZW50aXR5ZGVmcwpAQCAtMzAsMyArMzgsOCBAQAogLi4gZGF0YTo6IGNvZGVwb2ludDJuYW1lCiAKICAgIEEgZGljdGlvbmFyeSB0aGF0IG1hcHMgVW5pY29kZSBjb2RlcG9pbnRzIHRvIEhUTUwgZW50aXR5IG5hbWVzLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbI10gU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L25hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2VzLmh0bWwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdAppbmRleCBmM2MzNmVjLi5lNDE1NGVmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0CkBAIC0xNiwxMyArMTYsMTQgQEAKIFRoaXMgbW9kdWxlIGRlZmluZXMgYSBjbGFzcyA6Y2xhc3M6YEhUTUxQYXJzZXJgIHdoaWNoIHNlcnZlcyBhcyB0aGUgYmFzaXMgZm9yCiBwYXJzaW5nIHRleHQgZmlsZXMgZm9ybWF0dGVkIGluIEhUTUwgKEh5cGVyVGV4dCBNYXJrLXVwIExhbmd1YWdlKSBhbmQgWEhUTUwuCiAKLS4uIGNsYXNzOjogSFRNTFBhcnNlcihzdHJpY3Q9VHJ1ZSkKKy4uIGNsYXNzOjogSFRNTFBhcnNlcihzdHJpY3Q9RmFsc2UpCiAKLSAgIENyZWF0ZSBhIHBhcnNlciBpbnN0YW5jZS4gIElmICpzdHJpY3QqIGlzIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCksIGludmFsaWQKLSAgIEhUTUwgcmVzdWx0cyBpbiA6ZXhjOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlRXJyb3JgIGV4Y2VwdGlvbnMgWyNdXy4gIElmCi0gICAqc3RyaWN0KiBpcyBgYEZhbHNlYGAsIHRoZSBwYXJzZXIgdXNlcyBoZXVyaXN0aWNzIHRvIG1ha2UgYSBiZXN0IGd1ZXNzIGF0Ci0gICB0aGUgaW50ZW50aW9uIG9mIGFueSBpbnZhbGlkIEhUTUwgaXQgZW5jb3VudGVycywgc2ltaWxhciB0byB0aGUgd2F5IG1vc3QKLSAgIGJyb3dzZXJzIGRvLiAgVXNpbmcgYGBzdHJpY3Q9RmFsc2VgYCBpcyBhZHZpc2VkLgorICAgQ3JlYXRlIGEgcGFyc2VyIGluc3RhbmNlLiAgSWYgKnN0cmljdCogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCksIHRoZSBwYXJzZXIKKyAgIHdpbGwgYWNjZXB0IGFuZCBwYXJzZSBpbnZhbGlkIG1hcmt1cC4gIElmICpzdHJpY3QqIGlzIGBgVHJ1ZWBgIHRoZSBwYXJzZXIKKyAgIHdpbGwgcmFpc2UgYW4gOmV4Yzpgfmh0bWwucGFyc2VyLkhUTUxQYXJzZUVycm9yYCBleGNlcHRpb24gaW5zdGVhZCBbI11fIHdoZW4KKyAgIGl0J3Mgbm90IGFibGUgdG8gcGFyc2UgdGhlIG1hcmt1cC4KKyAgIFRoZSB1c2Ugb2YgYGBzdHJpY3Q9VHJ1ZWBgIGlzIGRpc2NvdXJhZ2VkIGFuZCB0aGUgKnN0cmljdCogYXJndW1lbnQgaXMKKyAgIGRlcHJlY2F0ZWQuCiAKICAgIEFuIDpjbGFzczpgLkhUTUxQYXJzZXJgIGluc3RhbmNlIGlzIGZlZCBIVE1MIGRhdGEgYW5kIGNhbGxzIGhhbmRsZXIgbWV0aG9kcwogICAgd2hlbiBzdGFydCB0YWdzLCBlbmQgdGFncywgdGV4dCwgY29tbWVudHMsIGFuZCBvdGhlciBtYXJrdXAgZWxlbWVudHMgYXJlCkBAIC0zMiw3ICszMywxMiBAQAogICAgVGhpcyBwYXJzZXIgZG9lcyBub3QgY2hlY2sgdGhhdCBlbmQgdGFncyBtYXRjaCBzdGFydCB0YWdzIG9yIGNhbGwgdGhlIGVuZC10YWcKICAgIGhhbmRsZXIgZm9yIGVsZW1lbnRzIHdoaWNoIGFyZSBjbG9zZWQgaW1wbGljaXRseSBieSBjbG9zaW5nIGFuIG91dGVyIGVsZW1lbnQuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yICpzdHJpY3QqIGtleXdvcmQgYWRkZWQKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAqc3RyaWN0KiBrZXl3b3JkIGFkZGVkLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgMy41CisgICAgICBUaGUgKnN0cmljdCogYXJndW1lbnQgYW5kIHRoZSBzdHJpY3QgbW9kZSBoYXZlIGJlZW4gZGVwcmVjYXRlZC4KKyAgICAgIFRoZSBwYXJzZXIgaXMgbm93IGFibGUgdG8gYWNjZXB0IGFuZCBwYXJzZSBpbnZhbGlkIG1hcmt1cCB0b28uCiAKIEFuIGV4Y2VwdGlvbiBpcyBkZWZpbmVkIGFzIHdlbGw6CiAKQEAgLTQ2LDYgKzUyLDEwIEBACiAgICBkZXRlY3RlZCwgYW5kIDphdHRyOmBvZmZzZXRgIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbnRvIHRoZSBsaW5lIGF0CiAgICB3aGljaCB0aGUgY29uc3RydWN0IHN0YXJ0cy4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDMuNQorICAgICAgVGhpcyBleGNlcHRpb24gaGFzIGJlZW4gZGVwcmVjYXRlZCBiZWNhdXNlIGl0J3MgbmV2ZXIgcmFpc2VkIGJ5IHRoZSBwYXJzZXIKKyAgICAgICh3aGVuIHRoZSBkZWZhdWx0IG5vbi1zdHJpY3QgbW9kZSBpcyB1c2VkKS4KKwogCiBFeGFtcGxlIEhUTUwgUGFyc2VyIEFwcGxpY2F0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKaW5kZXggNTJmYmU1Ny4uZWZiNGM0MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdApAQCAtMzM5LDYgKzMzOSwxNSBAQAogfCA6Y29uc3Q6YFVQR1JBREVfUkVRVUlSRURgICAgICAgICAgICAgICAgIHwgYGA0MjZgYCB8IEhUVFAgVXBncmFkZSB0byBUTFMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgMjgxN2AsIFNlY3Rpb24gNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29uc3Q6YFBSRUNPTkRJVElPTl9SRVFVSVJFRGAgICAgICAgICAgIHwgYGA0MjhgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29uc3Q6YFRPT19NQU5ZX1JFUVVFU1RTYCAgICAgICAgICAgICAgIHwgYGA0MjlgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29uc3Q6YFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VgIHwgYGA0MzFgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCA6Y29uc3Q6YElOVEVSTkFMX1NFUlZFUl9FUlJPUmAgICAgICAgICAgIHwgYGA1MDBgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNS4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjUuMT5gXyAgfApAQCAtMzY5LDYgKzM3OCwxMiBAQAogfCA6Y29uc3Q6YE5PVF9FWFRFTkRFRGAgICAgICAgICAgICAgICAgICAgIHwgYGA1MTBgYCB8IEFuIEhUVFAgRXh0ZW5zaW9uIEZyYW1ld29yaywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgMjc3NGAsIFNlY3Rpb24gNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29uc3Q6YE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRURgIHwgYGA1MTFgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQWRkZWQgY29kZXMgYGA0MjhgYCwgYGA0MjlgYCwgYGA0MzFgYCBhbmQgYGA1MTFgYCBmcm9tIDpyZmM6YDY1ODVgLgogCiAKIC4uIGRhdGE6OiByZXNwb25zZXMKQEAgLTUwMiw2ICs1MTcsMTIgQEAKIAogICAgUmVhZHMgYW5kIHJldHVybnMgdGhlIHJlc3BvbnNlIGJvZHksIG9yIHVwIHRvIHRoZSBuZXh0ICphbXQqIGJ5dGVzLgogCisuLiBtZXRob2Q6OiBIVFRQUmVzcG9uc2UucmVhZGludG8oYikKKworICAgUmVhZHMgdXAgdG8gdGhlIG5leHQgbGVuKGIpIGJ5dGVzIG9mIHRoZSByZXNwb25zZSBib2R5IGludG8gdGhlIGJ1ZmZlciAqYiouCisgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIG1ldGhvZDo6IEhUVFBSZXNwb25zZS5nZXRoZWFkZXIobmFtZSwgZGVmYXVsdD1Ob25lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZWphci5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZWphci5yc3QKaW5kZXggY2M4ZjI1MS4uNDBmMjRmMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVqYXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llamFyLnJzdApAQCAtNDAsNyArNDAsMTEgQEAKIC4uIGV4Y2VwdGlvbjo6IExvYWRFcnJvcgogCiAgICBJbnN0YW5jZXMgb2YgOmNsYXNzOmBGaWxlQ29va2llSmFyYCByYWlzZSB0aGlzIGV4Y2VwdGlvbiBvbiBmYWlsdXJlIHRvIGxvYWQKLSAgIGNvb2tpZXMgZnJvbSBhIGZpbGUuICA6ZXhjOmBMb2FkRXJyb3JgIGlzIGEgc3ViY2xhc3Mgb2YgOmV4YzpgSU9FcnJvcmAuCisgICBjb29raWVzIGZyb20gYSBmaWxlLiAgOmV4YzpgTG9hZEVycm9yYCBpcyBhIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgTG9hZEVycm9yIHdhcyBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAgaW5zdGVhZCBvZgorICAgICAgOmV4YzpgSU9FcnJvcmAuCiAKIAogVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBwcm92aWRlZDoKQEAgLTI1Nyw5ICsyNjEsMTIgQEAKICAgIEFyZ3VtZW50cyBhcmUgYXMgZm9yIDptZXRoOmBzYXZlYC4KIAogICAgVGhlIG5hbWVkIGZpbGUgbXVzdCBiZSBpbiB0aGUgZm9ybWF0IHVuZGVyc3Rvb2QgYnkgdGhlIGNsYXNzLCBvcgotICAgOmV4YzpgTG9hZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4gIEFsc28sIDpleGM6YElPRXJyb3JgIG1heSBiZSByYWlzZWQsIGZvcgorICAgOmV4YzpgTG9hZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4gIEFsc28sIDpleGM6YE9TRXJyb3JgIG1heSBiZSByYWlzZWQsIGZvcgogICAgZXhhbXBsZSBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLCBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gbWV0aG9kOjogRmlsZUNvb2tpZUphci5yZXZlcnQoZmlsZW5hbWU9Tm9uZSwgaWdub3JlX2Rpc2NhcmQ9RmFsc2UsIGlnbm9yZV9leHBpcmVzPUZhbHNlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdAppbmRleCA1YWUzZmQ0Li42NDZmMmU4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llcy5yc3QKQEAgLTIyLDkgKzIyLDEyIEBACiBDb29raWUgaGFuZGxpbmcuICBBcyBhIHJlc3VsdCwgdGhlIHBhcnNpbmcgcnVsZXMgdXNlZCBhcmUgYSBiaXQgbGVzcyBzdHJpY3QuCiAKIFRoZSBjaGFyYWN0ZXIgc2V0LCA6ZGF0YTpgc3RyaW5nLmFzY2lpX2xldHRlcnNgLCA6ZGF0YTpgc3RyaW5nLmRpZ2l0c2AgYW5kCi1gYCEjJCUmJyorLS5eX2B8fmBgIGRlbm90ZSB0aGUgc2V0IG9mIHZhbGlkIGNoYXJhY3RlcnMgYWxsb3dlZCBieSB0aGlzIG1vZHVsZQorYGAhIyQlJicqKy0uXl9gfH46YGAgZGVub3RlIHRoZSBzZXQgb2YgdmFsaWQgY2hhcmFjdGVycyBhbGxvd2VkIGJ5IHRoaXMgbW9kdWxlCiBpbiBDb29raWUgbmFtZSAoYXMgOmF0dHI6YH5Nb3JzZWwua2V5YCkuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBbGxvd2VkICc6JyBhcyBhIHZhbGlkIENvb2tpZSBuYW1lIGNoYXJhY3Rlci4KKwogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CmluZGV4IDMwMGUzMzIuLmNiYWQzZWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKQEAgLTE3OSwxOSArMTc5LDMwIEBACiAKICAgIC4uIG1ldGhvZDo6IHNlbmRfcmVzcG9uc2UoY29kZSwgbWVzc2FnZT1Ob25lKQogCi0gICAgICBTZW5kcyBhIHJlc3BvbnNlIGhlYWRlciBhbmQgbG9ncyB0aGUgYWNjZXB0ZWQgcmVxdWVzdC4gVGhlIEhUVFAgcmVzcG9uc2UKLSAgICAgIGxpbmUgaXMgc2VudCwgZm9sbG93ZWQgYnkgKlNlcnZlciogYW5kICpEYXRlKiBoZWFkZXJzLiBUaGUgdmFsdWVzIGZvcgotICAgICAgdGhlc2UgdHdvIGhlYWRlcnMgYXJlIHBpY2tlZCB1cCBmcm9tIHRoZSA6bWV0aDpgdmVyc2lvbl9zdHJpbmdgIGFuZAotICAgICAgOm1ldGg6YGRhdGVfdGltZV9zdHJpbmdgIG1ldGhvZHMsIHJlc3BlY3RpdmVseS4KKyAgICAgIEFkZHMgYSByZXNwb25zZSBoZWFkZXIgdG8gdGhlIGhlYWRlcnMgYnVmZmVyIGFuZCBsb2dzIHRoZSBhY2NlcHRlZAorICAgICAgcmVxdWVzdC4gVGhlIEhUVFAgcmVzcG9uc2UgbGluZSBpcyB3cml0dGVuIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIsCisgICAgICBmb2xsb3dlZCBieSAqU2VydmVyKiBhbmQgKkRhdGUqIGhlYWRlcnMuIFRoZSB2YWx1ZXMgZm9yIHRoZXNlIHR3byBoZWFkZXJzCisgICAgICBhcmUgcGlja2VkIHVwIGZyb20gdGhlIDptZXRoOmB2ZXJzaW9uX3N0cmluZ2AgYW5kCisgICAgICA6bWV0aDpgZGF0ZV90aW1lX3N0cmluZ2AgbWV0aG9kcywgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgc2VydmVyIGRvZXMgbm90CisgICAgICBpbnRlbmQgdG8gc2VuZCBhbnkgb3RoZXIgaGVhZGVycyB1c2luZyB0aGUgOm1ldGg6YHNlbmRfaGVhZGVyYCBtZXRob2QsCisgICAgICB0aGVuIDptZXRoOmBzZW5kX3Jlc3BvbnNlYCBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSA6bWV0aDpgZW5kX2hlYWRlcnNgCisgICAgICBjYWxsLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgSGVhZGVycyBhcmUgc3RvcmVkIHRvIGFuIGludGVybmFsIGJ1ZmZlciBhbmQgOm1ldGg6YGVuZF9oZWFkZXJzYAorICAgICAgICAgbmVlZHMgdG8gYmUgY2FsbGVkIGV4cGxpY2l0bHkuCisKIAogICAgLi4gbWV0aG9kOjogc2VuZF9oZWFkZXIoa2V5d29yZCwgdmFsdWUpCiAKLSAgICAgIFN0b3JlcyB0aGUgSFRUUCBoZWFkZXIgdG8gYW4gaW50ZXJuYWwgYnVmZmVyIHdoaWNoIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUKLSAgICAgIG91dHB1dCBzdHJlYW0gd2hlbiA6bWV0aDpgZW5kX2hlYWRlcnNgIG1ldGhvZCBpcyBpbnZva2VkLgotICAgICAgKmtleXdvcmQqIHNob3VsZCBzcGVjaWZ5IHRoZSBoZWFkZXIga2V5d29yZCwgd2l0aCAqdmFsdWUqCi0gICAgICBzcGVjaWZ5aW5nIGl0cyB2YWx1ZS4KKyAgICAgIEFkZHMgdGhlIEhUVFAgaGVhZGVyIHRvIGFuIGludGVybmFsIGJ1ZmZlciB3aGljaCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlCisgICAgICBvdXRwdXQgc3RyZWFtIHdoZW4gZWl0aGVyIDptZXRoOmBlbmRfaGVhZGVyc2Agb3IgOm1ldGg6YGZsdXNoX2hlYWRlcnNgIGlzCisgICAgICBpbnZva2VkLiAqa2V5d29yZCogc2hvdWxkIHNwZWNpZnkgdGhlIGhlYWRlciBrZXl3b3JkLCB3aXRoICp2YWx1ZSoKKyAgICAgIHNwZWNpZnlpbmcgaXRzIHZhbHVlLiBOb3RlIHRoYXQsIGFmdGVyIHRoZSBzZW5kX2hlYWRlciBjYWxscyBhcmUgZG9uZSwKKyAgICAgIDptZXRoOmBlbmRfaGVhZGVyc2AgTVVTVCBCRSBjYWxsZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIG9wZXJhdGlvbi4KIAotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgU3RvcmluZyB0aGUgaGVhZGVycyBpbiBhbiBpbnRlcm5hbCBidWZmZXIKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAgICBIZWFkZXJzIGFyZSBzdG9yZWQgaW4gYW4gaW50ZXJuYWwgYnVmZmVyLgogCiAKICAgIC4uIG1ldGhvZDo6IHNlbmRfcmVzcG9uc2Vfb25seShjb2RlLCBtZXNzYWdlPU5vbmUpCkBAIC0yMDUsMTAgKzIxNiwxOSBAQAogCiAgICAuLiBtZXRob2Q6OiBlbmRfaGVhZGVycygpCiAKLSAgICAgIFdyaXRlIHRoZSBidWZmZXJlZCBIVFRQIGhlYWRlcnMgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHNlbmQgYSBibGFuawotICAgICAgbGluZSwgaW5kaWNhdGluZyB0aGUgZW5kIG9mIHRoZSBIVFRQIGhlYWRlcnMgaW4gdGhlIHJlc3BvbnNlLgorICAgICAgQWRkcyBhIGJsYW5rIGxpbmUKKyAgICAgIChpbmRpY2F0aW5nIHRoZSBlbmQgb2YgdGhlIEhUVFAgaGVhZGVycyBpbiB0aGUgcmVzcG9uc2UpCisgICAgICB0byB0aGUgaGVhZGVycyBidWZmZXIgYW5kIGNhbGxzIDptZXRoOmBmbHVzaF9oZWFkZXJzKClgLgogCi0gICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMiBXcml0aW5nIHRoZSBidWZmZXJlZCBoZWFkZXJzIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICAgIFRoZSBidWZmZXJlZCBoZWFkZXJzIGFyZSB3cml0dGVuIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgorCisgICAuLiBtZXRob2Q6OiBmbHVzaF9oZWFkZXJzKCkKKworICAgICAgRmluYWxseSBzZW5kIHRoZSBoZWFkZXJzIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCBmbHVzaCB0aGUgaW50ZXJuYWwKKyAgICAgIGhlYWRlcnMgYnVmZmVyLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogICAgLi4gbWV0aG9kOjogbG9nX3JlcXVlc3QoY29kZT0nLScsIHNpemU9Jy0nKQogCkBAIC0yNTAsOCArMjcwLDExIEBACiAKICAgIC4uIG1ldGhvZDo6IGFkZHJlc3Nfc3RyaW5nKCkKIAotICAgICAgUmV0dXJucyB0aGUgY2xpZW50IGFkZHJlc3MsIGZvcm1hdHRlZCBmb3IgbG9nZ2luZy4gQSBuYW1lIGxvb2t1cCBpcwotICAgICAgcGVyZm9ybWVkIG9uIHRoZSBjbGllbnQncyBJUCBhZGRyZXNzLgorICAgICAgUmV0dXJucyB0aGUgY2xpZW50IGFkZHJlc3MuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBQcmV2aW91c2x5LCBhIG5hbWUgbG9va3VwIHdhcyBwZXJmb3JtZWQuIFRvIGF2b2lkIG5hbWUgcmVzb2x1dGlvbgorICAgICAgICAgZGVsYXlzLCBpdCBub3cgYWx3YXlzIHJldHVybnMgdGhlIElQIGFkZHJlc3MuCiAKIAogLi4gY2xhc3M6OiBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MsIHNlcnZlcikKQEAgLTI5OSw3ICszMjIsNyBAQAogICAgICAgcmVzcG9uc2UgaWYgdGhlIDpmdW5jOmBsaXN0ZGlyYCBmYWlscy4KIAogICAgICAgSWYgdGhlIHJlcXVlc3Qgd2FzIG1hcHBlZCB0byBhIGZpbGUsIGl0IGlzIG9wZW5lZCBhbmQgdGhlIGNvbnRlbnRzIGFyZQotICAgICAgcmV0dXJuZWQuICBBbnkgOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9uIGluIG9wZW5pbmcgdGhlIHJlcXVlc3RlZCBmaWxlIGlzCisgICAgICByZXR1cm5lZC4gIEFueSA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaW4gb3BlbmluZyB0aGUgcmVxdWVzdGVkIGZpbGUgaXMKICAgICAgIG1hcHBlZCB0byBhIGBgNDA0YGAsIGBgJ0ZpbGUgbm90IGZvdW5kJ2BgIGVycm9yLiBPdGhlcndpc2UsIHRoZSBjb250ZW50CiAgICAgICB0eXBlIGlzIGd1ZXNzZWQgYnkgY2FsbGluZyB0aGUgOm1ldGg6YGd1ZXNzX3R5cGVgIG1ldGhvZCwgd2hpY2ggaW4gdHVybgogICAgICAgdXNlcyB0aGUgKmV4dGVuc2lvbnNfbWFwKiB2YXJpYWJsZS4KQEAgLTM3OCwzICs0MDEsOSBAQAogCiAgICBOb3RlIHRoYXQgQ0dJIHNjcmlwdHMgd2lsbCBiZSBydW4gd2l0aCBVSUQgb2YgdXNlciBub2JvZHksIGZvciBzZWN1cml0eQogICAgcmVhc29ucy4gIFByb2JsZW1zIHdpdGggdGhlIENHSSBzY3JpcHQgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIGVycm9yIDQwMy4KKworOmNsYXNzOmBDR0lIVFRQUmVxdWVzdEhhbmRsZXJgIGNhbiBiZSBlbmFibGVkIGluIHRoZSBjb21tYW5kIGxpbmUgYnkgcGFzc2luZwordGhlIGBgLS1jZ2lgYCBvcHRpb24uOjoKKworICAgICAgICBweXRob24gLW0gaHR0cC5zZXJ2ZXIgLS1jZ2kgODAwMAorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CmluZGV4IDNmNDVjOTUuLmZlZmIyODQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CkBAIC02NCwxNCArNjQsMjEgQEAKIFRoZXJlJ3MgYWxzbyBhIHN1YmNsYXNzIGZvciBzZWN1cmUgY29ubmVjdGlvbnM6CiAKIAotLi4gY2xhc3M6OiBJTUFQNF9TU0woaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lKQorLi4gY2xhc3M6OiBJTUFQNF9TU0woaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBzc2xfY29udGV4dD1Ob25lKQogCiAgICBUaGlzIGlzIGEgc3ViY2xhc3MgZGVyaXZlZCBmcm9tIDpjbGFzczpgSU1BUDRgIHRoYXQgY29ubmVjdHMgb3ZlciBhbiBTU0wKICAgIGVuY3J5cHRlZCBzb2NrZXQgKHRvIHVzZSB0aGlzIGNsYXNzIHlvdSBuZWVkIGEgc29ja2V0IG1vZHVsZSB0aGF0IHdhcyBjb21waWxlZAogICAgd2l0aCBTU0wgc3VwcG9ydCkuICBJZiAqaG9zdCogaXMgbm90IHNwZWNpZmllZCwgYGAnJ2BgICh0aGUgbG9jYWwgaG9zdCkgaXMgdXNlZC4KICAgIElmICpwb3J0KiBpcyBvbWl0dGVkLCB0aGUgc3RhbmRhcmQgSU1BUDQtb3Zlci1TU0wgcG9ydCAoOTkzKSBpcyB1c2VkLiAgKmtleWZpbGUqCiAgICBhbmQgKmNlcnRmaWxlKiBhcmUgYWxzbyBvcHRpb25hbCAtIHRoZXkgY2FuIGNvbnRhaW4gYSBQRU0gZm9ybWF0dGVkIHByaXZhdGUga2V5Ci0gICBhbmQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLgorICAgYW5kIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgZm9yIHRoZSBTU0wgY29ubmVjdGlvbi4gKnNzbF9jb250ZXh0KiBwYXJhbWV0ZXIgaXMgYQorICAgOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0IHdoaWNoIGFsbG93cyBidW5kbGluZyBTU0wgY29uZmlndXJhdGlvbgorICAgb3B0aW9ucywgY2VydGlmaWNhdGVzIGFuZCBwcml2YXRlIGtleXMgaW50byBhIHNpbmdsZSAocG90ZW50aWFsbHkgbG9uZy1saXZlZCkKKyAgIHN0cnVjdHVyZS4gTm90ZSB0aGF0IHRoZSAqa2V5ZmlsZSovKmNlcnRmaWxlKiBwYXJhbWV0ZXJzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCAqc3NsX2NvbnRleHQqLAorICAgYSA6Y2xhc3M6YFZhbHVlRXJyb3JgIGlzIHRocm93biBpZiAqa2V5ZmlsZSovKmNlcnRmaWxlKiBpcyBwcm92aWRlZCBhbG9uZyB3aXRoICpzc2xfY29udGV4dCouCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqc3NsX2NvbnRleHQqIHBhcmFtZXRlciBhZGRlZC4KIAogCiBUaGUgc2Vjb25kIHN1YmNsYXNzIGFsbG93cyBmb3IgY29ubmVjdGlvbnMgY3JlYXRlZCBieSBhIGNoaWxkIHByb2Nlc3M6CkBAIC0xMDYsMTMgKzExMywxNSBAQAogCiAuLiBmdW5jdGlvbjo6IFRpbWUySW50ZXJuYWxkYXRlKGRhdGVfdGltZSkKIAotICAgQ29udmVydCAqZGF0ZV90aW1lKiB0byBhbiBJTUFQNCBgYElOVEVSTkFMREFURWBgIHJlcHJlc2VudGF0aW9uLiAgVGhlCi0gICByZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcgaW4gdGhlIGZvcm06IGBgIkRELU1tbS1ZWVlZIEhIOk1NOlNTCi0gICArSEhNTSJgYCAoaW5jbHVkaW5nIGRvdWJsZS1xdW90ZXMpLiAgVGhlICpkYXRlX3RpbWUqIGFyZ3VtZW50IGNhbiBiZSBhCi0gICBudW1iZXIgKGludCBvciBmbG9hdCkgcmVwcmVzZW50aW5nIHNlY29uZHMgc2luY2UgZXBvY2ggKGFzIHJldHVybmVkCi0gICBieSA6ZnVuYzpgdGltZS50aW1lYCksIGEgOS10dXBsZSByZXByZXNlbnRpbmcgbG9jYWwgdGltZSAoYXMgcmV0dXJuZWQgYnkKLSAgIDpmdW5jOmB0aW1lLmxvY2FsdGltZWApLCBvciBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLiAgSW4gdGhlIGxhc3QgY2FzZSwgaXQKLSAgIGlzIGFzc3VtZWQgdG8gYWxyZWFkeSBiZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQuCisgICBDb252ZXJ0ICpkYXRlX3RpbWUqIHRvIGFuIElNQVA0IGBgSU5URVJOQUxEQVRFYGAgcmVwcmVzZW50YXRpb24uCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtOiBgYCJERC1NbW0tWVlZWSBISDpNTTpTUworICAgK0hITU0iYGAgKGluY2x1ZGluZyBkb3VibGUtcXVvdGVzKS4gIFRoZSAqZGF0ZV90aW1lKiBhcmd1bWVudCBjYW4KKyAgIGJlIGEgbnVtYmVyIChpbnQgb3IgZmxvYXQpIHJlcHJlc2VudGluZyBzZWNvbmRzIHNpbmNlIGVwb2NoIChhcworICAgcmV0dXJuZWQgYnkgOmZ1bmM6YHRpbWUudGltZWApLCBhIDktdHVwbGUgcmVwcmVzZW50aW5nIGxvY2FsIHRpbWUKKyAgIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgdGltZS5zdHJ1Y3RfdGltZWAgKGFzIHJldHVybmVkIGJ5CisgICA6ZnVuYzpgdGltZS5sb2NhbHRpbWVgKSwgYW4gYXdhcmUgaW5zdGFuY2Ugb2YKKyAgIDpjbGFzczpgZGF0ZXRpbWUuZGF0ZXRpbWVgLCBvciBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLiAgSW4gdGhlIGxhc3QKKyAgIGNhc2UsIGl0IGlzIGFzc3VtZWQgdG8gYWxyZWFkeSBiZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQuCiAKIE5vdGUgdGhhdCBJTUFQNCBtZXNzYWdlIG51bWJlcnMgY2hhbmdlIGFzIHRoZSBtYWlsYm94IGNoYW5nZXM7IGluIHBhcnRpY3VsYXIsCiBhZnRlciBhbiBgYEVYUFVOR0VgYCBjb21tYW5kIHBlcmZvcm1zIGRlbGV0aW9ucyB0aGUgcmVtYWluaW5nIG1lc3NhZ2VzIGFyZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wLnJzdCBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKaW5kZXggMTM0NWIyNS4uNWNhZGRhOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXAucnN0CkBAIC0zMCw2ICszMCw5IEBACiAgICA6Y29uc3Q6YFBZX1NPVVJDRWAsIDpjb25zdDpgUFlfQ09NUElMRURgLCBvciA6Y29uc3Q6YENfRVhURU5TSU9OYCwgZGVzY3JpYmVkCiAgICBiZWxvdy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVXNlIHRoZSBjb25zdGFudHMgZGVmaW5lZCBvbiA6bW9kOmBpbXBvcnRsaWIubWFjaGluZXJ5YCBpbnN0ZWFkLgorCiAKIC4uIGZ1bmN0aW9uOjogZmluZF9tb2R1bGUobmFtZVssIHBhdGhdKQogCkBAIC02OSw2ICs3Miw5IEBACiAgICB0aGVuIHVzZSA6ZnVuYzpgZmluZF9tb2R1bGVgIHdpdGggdGhlICpwYXRoKiBhcmd1bWVudCBzZXQgdG8gYGBQLl9fcGF0aF9fYGAuCiAgICBXaGVuICpQKiBpdHNlbGYgaGFzIGEgZG90dGVkIG5hbWUsIGFwcGx5IHRoaXMgcmVjaXBlIHJlY3Vyc2l2ZWx5LgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAgaW5zdGVhZC4KKwogCiAuLiBmdW5jdGlvbjo6IGxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIHBhdGhuYW1lLCBkZXNjcmlwdGlvbikKIApAQCAtOTAsNiArOTYsMTAgQEAKICAgIGl0IHdhcyBub3QgYGBOb25lYGAsIGV2ZW4gd2hlbiBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAgVGhpcyBpcyBiZXN0IGRvbmUKICAgIHVzaW5nIGEgOmtleXdvcmQ6YHRyeWAgLi4uIDprZXl3b3JkOmBmaW5hbGx5YCBzdGF0ZW1lbnQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFVubmVlZGVkIGFzIGxvYWRlcnMgc2hvdWxkIGJlIHVzZWQgdG8gbG9hZCBtb2R1bGVzIGFuZAorICAgICAgOmZ1bmM6YGZpbmRfbW9kdWxlYCBpcyBkZXByZWNhdGVkLgorCiAKIC4uIGZ1bmN0aW9uOjogbmV3X21vZHVsZShuYW1lKQogCkBAIC05NywzNyArMTA3LDYgQEAKICAgIGluIGBgc3lzLm1vZHVsZXNgYC4KIAogCi0uLiBmdW5jdGlvbjo6IGxvY2tfaGVsZCgpCi0KLSAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgaW1wb3J0IGxvY2sgaXMgY3VycmVudGx5IGhlbGQsIGVsc2UgYGBGYWxzZWBgLiBPbgotICAgcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgYWx3YXlzIHJldHVybiBgYEZhbHNlYGAuCi0KLSAgIE9uIHBsYXRmb3JtcyB3aXRoIHRocmVhZHMsIGEgdGhyZWFkIGV4ZWN1dGluZyBhbiBpbXBvcnQgaG9sZHMgYW4gaW50ZXJuYWwgbG9jawotICAgdW50aWwgdGhlIGltcG9ydCBpcyBjb21wbGV0ZS4gVGhpcyBsb2NrIGJsb2NrcyBvdGhlciB0aHJlYWRzIGZyb20gZG9pbmcgYW4KLSAgIGltcG9ydCB1bnRpbCB0aGUgb3JpZ2luYWwgaW1wb3J0IGNvbXBsZXRlcywgd2hpY2ggaW4gdHVybiBwcmV2ZW50cyBvdGhlciB0aHJlYWRzCi0gICBmcm9tIHNlZWluZyBpbmNvbXBsZXRlIG1vZHVsZSBvYmplY3RzIGNvbnN0cnVjdGVkIGJ5IHRoZSBvcmlnaW5hbCB0aHJlYWQgd2hpbGUKLSAgIGluIHRoZSBwcm9jZXNzIG9mIGNvbXBsZXRpbmcgaXRzIGltcG9ydCAoYW5kIHRoZSBpbXBvcnRzLCBpZiBhbnksIHRyaWdnZXJlZCBieQotICAgdGhhdCkuCi0KLQotLi4gZnVuY3Rpb246OiBhY3F1aXJlX2xvY2soKQotCi0gICBBY3F1aXJlIHRoZSBpbnRlcnByZXRlcidzIGltcG9ydCBsb2NrIGZvciB0aGUgY3VycmVudCB0aHJlYWQuICBUaGlzIGxvY2sgc2hvdWxkCi0gICBiZSB1c2VkIGJ5IGltcG9ydCBob29rcyB0byBlbnN1cmUgdGhyZWFkLXNhZmV0eSB3aGVuIGltcG9ydGluZyBtb2R1bGVzLgotCi0gICBPbmNlIGEgdGhyZWFkIGhhcyBhY3F1aXJlZCB0aGUgaW1wb3J0IGxvY2ssIHRoZSBzYW1lIHRocmVhZCBtYXkgYWNxdWlyZSBpdAotICAgYWdhaW4gd2l0aG91dCBibG9ja2luZzsgdGhlIHRocmVhZCBtdXN0IHJlbGVhc2UgaXQgb25jZSBmb3IgZWFjaCB0aW1lIGl0IGhhcwotICAgYWNxdWlyZWQgaXQuCi0KLSAgIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotCi0KLS4uIGZ1bmN0aW9uOjogcmVsZWFzZV9sb2NrKCkKLQotICAgUmVsZWFzZSB0aGUgaW50ZXJwcmV0ZXIncyBpbXBvcnQgbG9jay4gT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcwotICAgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotCi0KIC4uIGZ1bmN0aW9uOjogcmVsb2FkKG1vZHVsZSkKIAogICAgUmVsb2FkIGEgcHJldmlvdXNseSBpbXBvcnRlZCAqbW9kdWxlKi4gIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgbW9kdWxlIG9iamVjdCwgc28KQEAgLTIwMSwxNCArMTgwLDE5IEBACiAgICBzb3VyY2UgKnBhdGgqLiAgRm9yIGV4YW1wbGUsIGlmICpwYXRoKiBpcyBgYC9mb28vYmFyL2Jhei5weWBgIHRoZSByZXR1cm4KICAgIHZhbHVlIHdvdWxkIGJlIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgZm9yIFB5dGhvbiAzLjIuCiAgICBUaGUgYGBjcHl0aG9uLTMyYGAgc3RyaW5nIGNvbWVzIGZyb20gdGhlIGN1cnJlbnQgbWFnaWMgdGFnIChzZWUKLSAgIDpmdW5jOmBnZXRfdGFnYCkuICBUaGUgcmV0dXJuZWQgcGF0aCB3aWxsIGVuZCBpbiBgYC5weWNgYCB3aGVuCi0gICBgYF9fZGVidWdfX2BgIGlzIFRydWUgb3IgYGAucHlvYGAgZm9yIGFuIG9wdGltaXplZCBQeXRob24KKyAgIDpmdW5jOmBnZXRfdGFnYDsgaWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkIHRoZW4KKyAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkKS4gIFRoZSByZXR1cm5lZCBwYXRoIHdpbGwgZW5kIGluCisgICBgYC5weWNgYCB3aGVuIGBgX19kZWJ1Z19fYGAgaXMgVHJ1ZSBvciBgYC5weW9gYCBmb3IgYW4gb3B0aW1pemVkIFB5dGhvbgogICAgKGkuZS4gYGBfX2RlYnVnX19gYCBpcyBGYWxzZSkuICBCeSBwYXNzaW5nIGluIFRydWUgb3IgRmFsc2UgZm9yCiAgICAqZGVidWdfb3ZlcnJpZGUqIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIHN5c3RlbSdzIHZhbHVlIGZvciBgYF9fZGVidWdfX2BgIGZvcgogICAgZXh0ZW5zaW9uIHNlbGVjdGlvbi4KIAogICAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgSWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIGBgTm9uZWBgLCB0aGVuCisgICAgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpcyByYWlzZWQuCisKIAogLi4gZnVuY3Rpb246OiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCkBAIC0yMTYsNyArMjAwLDEzIEBACiAgICBmaWxlIHBhdGguICBGb3IgZXhhbXBsZSwgaWYgKnBhdGgqIGlzCiAgICBgYC9mb28vYmFyL19fcHljYWNoZV9fL2Jhei5jcHl0aG9uLTMyLnB5Y2BgIHRoZSByZXR1cm5lZCBwYXRoIHdvdWxkIGJlCiAgICBgYC9mb28vYmFyL2Jhei5weWBgLiAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LCBob3dldmVyIGlmIGl0IGRvZXMgbm90IGNvbmZvcm0KLSAgIHRvIDpwZXA6YDMxNDdgIGZvcm1hdCwgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQuCisgICB0byA6cGVwOmAzMTQ3YCBmb3JtYXQsIGEgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLiBJZgorICAgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkLAorICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2hlbgorICAgICAgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3RhZygpCkBAIC0yMjQsNiArMjE0LDY0IEBACiAgICBSZXR1cm4gdGhlIDpwZXA6YDMxNDdgIG1hZ2ljIHRhZyBzdHJpbmcgbWF0Y2hpbmcgdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbidzCiAgICBtYWdpYyBudW1iZXIsIGFzIHJldHVybmVkIGJ5IDpmdW5jOmBnZXRfbWFnaWNgLgogCisgICAuLiBub3RlOjoKKyAgICAgIFlvdSBtYXkgdXNlIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBkaXJlY3RseSBzdGFydGluZworICAgICAgaW4gUHl0aG9uIDMuMy4KKworCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBoZWxwIGludGVyYWN0IHdpdGggdGhlIGltcG9ydCBzeXN0ZW0ncyBpbnRlcm5hbAorbG9ja2luZyBtZWNoYW5pc20uICBMb2NraW5nIHNlbWFudGljcyBvZiBpbXBvcnRzIGFyZSBhbiBpbXBsZW1lbnRhdGlvbgorZGV0YWlsIHdoaWNoIG1heSB2YXJ5IGZyb20gcmVsZWFzZSB0byByZWxlYXNlLiAgSG93ZXZlciwgUHl0aG9uIGVuc3VyZXMKK3RoYXQgY2lyY3VsYXIgaW1wb3J0cyB3b3JrIHdpdGhvdXQgYW55IGRlYWRsb2Nrcy4KKworCisuLiBmdW5jdGlvbjo6IGxvY2tfaGVsZCgpCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgZ2xvYmFsIGltcG9ydCBsb2NrIGlzIGN1cnJlbnRseSBoZWxkLCBlbHNlCisgICBgYEZhbHNlYGAuIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIGFsd2F5cyByZXR1cm4gYGBGYWxzZWBgLgorCisgICBPbiBwbGF0Zm9ybXMgd2l0aCB0aHJlYWRzLCBhIHRocmVhZCBleGVjdXRpbmcgYW4gaW1wb3J0IGZpcnN0IGhvbGRzIGEKKyAgIGdsb2JhbCBpbXBvcnQgbG9jaywgdGhlbiBzZXRzIHVwIGEgcGVyLW1vZHVsZSBsb2NrIGZvciB0aGUgcmVzdCBvZiB0aGUKKyAgIGltcG9ydC4gIFRoaXMgYmxvY2tzIG90aGVyIHRocmVhZHMgZnJvbSBpbXBvcnRpbmcgdGhlIHNhbWUgbW9kdWxlIHVudGlsCisgICB0aGUgb3JpZ2luYWwgaW1wb3J0IGNvbXBsZXRlcywgcHJldmVudGluZyBvdGhlciB0aHJlYWRzIGZyb20gc2VlaW5nCisgICBpbmNvbXBsZXRlIG1vZHVsZSBvYmplY3RzIGNvbnN0cnVjdGVkIGJ5IHRoZSBvcmlnaW5hbCB0aHJlYWQuICBBbgorICAgZXhjZXB0aW9uIGlzIG1hZGUgZm9yIGNpcmN1bGFyIGltcG9ydHMsIHdoaWNoIGJ5IGNvbnN0cnVjdGlvbiBoYXZlIHRvCisgICBleHBvc2UgYW4gaW5jb21wbGV0ZSBtb2R1bGUgb2JqZWN0IGF0IHNvbWUgcG9pbnQuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgbG9ja2luZyBzY2hlbWUgaGFzIGNoYW5nZWQgdG8gcGVyLW1vZHVsZSBsb2NrcyBmb3IKKyAgIHRoZSBtb3N0IHBhcnQuICBBIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBrZXB0IGZvciBzb21lIGNyaXRpY2FsIHRhc2tzLAorICAgc3VjaCBhcyBpbml0aWFsaXppbmcgdGhlIHBlci1tb2R1bGUgbG9ja3MuCisKKworLi4gZnVuY3Rpb246OiBhY3F1aXJlX2xvY2soKQorCisgICBBY3F1aXJlIHRoZSBpbnRlcnByZXRlcidzIGdsb2JhbCBpbXBvcnQgbG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLgorICAgVGhpcyBsb2NrIHNob3VsZCBiZSB1c2VkIGJ5IGltcG9ydCBob29rcyB0byBlbnN1cmUgdGhyZWFkLXNhZmV0eSB3aGVuCisgICBpbXBvcnRpbmcgbW9kdWxlcy4KKworICAgT25jZSBhIHRocmVhZCBoYXMgYWNxdWlyZWQgdGhlIGltcG9ydCBsb2NrLCB0aGUgc2FtZSB0aHJlYWQgbWF5IGFjcXVpcmUgaXQKKyAgIGFnYWluIHdpdGhvdXQgYmxvY2tpbmc7IHRoZSB0aHJlYWQgbXVzdCByZWxlYXNlIGl0IG9uY2UgZm9yIGVhY2ggdGltZSBpdCBoYXMKKyAgIGFjcXVpcmVkIGl0LgorCisgICBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRoZSBsb2NraW5nIHNjaGVtZSBoYXMgY2hhbmdlZCB0byBwZXItbW9kdWxlIGxvY2tzIGZvcgorICAgdGhlIG1vc3QgcGFydC4gIEEgZ2xvYmFsIGltcG9ydCBsb2NrIGlzIGtlcHQgZm9yIHNvbWUgY3JpdGljYWwgdGFza3MsCisgICBzdWNoIGFzIGluaXRpYWxpemluZyB0aGUgcGVyLW1vZHVsZSBsb2Nrcy4KKworCisuLiBmdW5jdGlvbjo6IHJlbGVhc2VfbG9jaygpCisKKyAgIFJlbGVhc2UgdGhlIGludGVycHJldGVyJ3MgZ2xvYmFsIGltcG9ydCBsb2NrLiBPbiBwbGF0Zm9ybXMgd2l0aG91dAorICAgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgbG9ja2luZyBzY2hlbWUgaGFzIGNoYW5nZWQgdG8gcGVyLW1vZHVsZSBsb2NrcyBmb3IKKyAgIHRoZSBtb3N0IHBhcnQuICBBIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBrZXB0IGZvciBzb21lIGNyaXRpY2FsIHRhc2tzLAorICAgc3VjaCBhcyBpbml0aWFsaXppbmcgdGhlIHBlci1tb2R1bGUgbG9ja3MuCisKIAogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgd2l0aCBpbnRlZ2VyIHZhbHVlcywgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSwgYXJlIHVzZWQKIHRvIGluZGljYXRlIHRoZSBzZWFyY2ggcmVzdWx0IG9mIDpmdW5jOmBmaW5kX21vZHVsZWAuCkBAIC0yMzMsMzEgKzI4MSw0MyBAQAogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIHNvdXJjZSBmaWxlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZGF0YTo6IFBZX0NPTVBJTEVECiAKICAgIFRoZSBtb2R1bGUgd2FzIGZvdW5kIGFzIGEgY29tcGlsZWQgY29kZSBvYmplY3QgZmlsZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBDX0VYVEVOU0lPTgogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBkeW5hbWljYWxseSBsb2FkYWJsZSBzaGFyZWQgbGlicmFyeS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQS0dfRElSRUNUT1JZCiAKICAgIFRoZSBtb2R1bGUgd2FzIGZvdW5kIGFzIGEgcGFja2FnZSBkaXJlY3RvcnkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogQ19CVUlMVElOCiAKICAgIFRoZSBtb2R1bGUgd2FzIGZvdW5kIGFzIGEgYnVpbHQtaW4gbW9kdWxlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZGF0YTo6IFBZX0ZST1pFTgogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIGZyb3plbiBtb2R1bGUuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBjbGFzczo6IE51bGxJbXBvcnRlcihwYXRoX3N0cmluZykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKaW5kZXggMTY0OTA2My4uMDQwOTdmMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CkBAIC02Myw3ICs2Myw3IEBACiBGdW5jdGlvbnMKIC0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz17fSwgbG9jYWxzPXt9LCBmcm9tbGlzdD1saXN0KCksIGxldmVsPTApCisuLiBmdW5jdGlvbjo6IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgZnJvbWxpc3Q9KCksIGxldmVsPTApCiAKICAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4gOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uLgogCkBAIC04Niw2ICs4NiwzMCBAQAogICAgIHRoYXQgd2FzIGltcG9ydGVkIChlLmcuIGBgcGtnLm1vZGBgKSwgd2hpbGUgOmZ1bmM6YF9faW1wb3J0X19gIHJldHVybnMgdGhlCiAgICAgdG9wLWxldmVsIHBhY2thZ2Ugb3IgbW9kdWxlIChlLmcuIGBgcGtnYGApLgogCisuLiBmdW5jdGlvbjo6IGZpbmRfbG9hZGVyKG5hbWUsIHBhdGg9Tm9uZSkKKworICAgRmluZCB0aGUgbG9hZGVyIGZvciBhIG1vZHVsZSwgb3B0aW9uYWxseSB3aXRoaW4gdGhlIHNwZWNpZmllZCAqcGF0aCouIElmIHRoZQorICAgbW9kdWxlIGlzIGluIDphdHRyOmBzeXMubW9kdWxlc2AsIHRoZW4gYGBzeXMubW9kdWxlc1tuYW1lXS5fX2xvYWRlcl9fYGAgaXMKKyAgIHJldHVybmVkICh1bmxlc3MgdGhlIGxvYWRlciB3b3VsZCBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkKS4gT3RoZXJ3aXNlIGEgc2VhcmNoIHVzaW5nIDphdHRyOmBzeXMubWV0YV9wYXRoYAorICAgaXMgZG9uZS4gYGBOb25lYGAgaXMgcmV0dXJuZWQgaWYgbm8gbG9hZGVyIGlzIGZvdW5kLgorCisgICBBIGRvdHRlZCBuYW1lIGRvZXMgbm90IGhhdmUgaXRzIHBhcmVudCdzIGltcGxpY2l0bHkgaW1wb3J0ZWQuIElmIHRoYXQgaXMKKyAgIGRlc2lyZWQgKGFsdGhvdWdoIG5vdCBuZXNzYXJpbHkgcmVxdWlyZWQgdG8gZmluZCB0aGUgbG9hZGVyLCBpdCB3aWxsIG1vc3QKKyAgIGxpa2VseSBiZSBuZWVkZWQgaWYgdGhlIGxvYWRlciBhY3R1YWxseSBpcyB1c2VkIHRvIGxvYWQgdGhlIG1vZHVsZSksIHRoZW4KKyAgIHlvdSB3aWxsIGhhdmUgdG8gaW1wb3J0IHRoZSBwYWNrYWdlcyBjb250YWluaW5nIHRoZSBtb2R1bGUgcHJpb3IgdG8gY2FsbGluZworICAgdGhpcyBmdW5jdGlvbi4KKworLi4gZnVuY3Rpb246OiBpbnZhbGlkYXRlX2NhY2hlcygpCisKKyAgIEludmFsaWRhdGUgdGhlIGludGVybmFsIGNhY2hlcyBvZiBmaW5kZXJzIHN0b3JlZCBhdAorICAgOmRhdGE6YHN5cy5tZXRhX3BhdGhgLiBJZiBhIGZpbmRlciBpbXBsZW1lbnRzIGBgaW52YWxpZGF0ZV9jYWNoZXMoKWBgIHRoZW4gaXQKKyAgIHdpbGwgYmUgY2FsbGVkIHRvIHBlcmZvcm0gdGhlIGludmFsaWRhdGlvbi4gIFRoaXMgZnVuY3Rpb24gbWF5IGJlIG5lZWRlZCBpZgorICAgc29tZSBtb2R1bGVzIGFyZSBpbnN0YWxsZWQgd2hpbGUgeW91ciBwcm9ncmFtIGlzIHJ1bm5pbmcgYW5kIHlvdSBleHBlY3QgdGhlCisgICBwcm9ncmFtIHRvIG5vdGljZSB0aGUgY2hhbmdlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogOm1vZDpgaW1wb3J0bGliLmFiY2AgLS0gQWJzdHJhY3QgYmFzZSBjbGFzc2VzIHJlbGF0ZWQgdG8gaW1wb3J0CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTk3LDE5ICsxMjEsOTAgQEAKIHVzZWQgYnkgOmtleXdvcmQ6YGltcG9ydGAuIFNvbWUgc3ViY2xhc3NlcyBvZiB0aGUgY29yZSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMKIGFyZSBhbHNvIHByb3ZpZGVkIHRvIGhlbHAgaW4gaW1wbGVtZW50aW5nIHRoZSBjb3JlIEFCQ3MuCiAKK0FCQyBoaWVyYXJjaHk6OgorCisgICAgb2JqZWN0CisgICAgICstLSBGaW5kZXIgKGRlcHJlY2F0ZWQpCisgICAgIHwgICAgKy0tIE1ldGFQYXRoRmluZGVyCisgICAgIHwgICAgKy0tIFBhdGhFbnRyeUZpbmRlcgorICAgICArLS0gTG9hZGVyCisgICAgICAgICAgKy0tIFJlc291cmNlTG9hZGVyIC0tLS0tLS0tKworICAgICAgICAgICstLSBJbnNwZWN0TG9hZGVyICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICstLSBFeGVjdXRpb25Mb2FkZXIgLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIEZpbGVMb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0gU291cmNlTG9hZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0gUHlMb2FkZXIgKGRlcHJlY2F0ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0gUHlQeWNMb2FkZXIgKGRlcHJlY2F0ZWQpCisKIAogLi4gY2xhc3M6OiBGaW5kZXIKIAotICAgIEFuIGFic3RyYWN0IGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGEgOnRlcm06YGZpbmRlcmAuCi0gICAgU2VlIDpwZXA6YDMwMmAgZm9yIHRoZSBleGFjdCBkZWZpbml0aW9uIGZvciBhIGZpbmRlci4KKyAgIEFuIGFic3RyYWN0IGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGEgOnRlcm06YGZpbmRlcmAuCiAKLSAgICAuLiBtZXRob2Q6OiBmaW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aD1Ob25lKQorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVXNlIDpjbGFzczpgTWV0YVBhdGhGaW5kZXJgIG9yIDpjbGFzczpgUGF0aEVudHJ5RmluZGVyYCBpbnN0ZWFkLgogCi0gICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCBmb3IgZmluZGluZyBhIDp0ZXJtOmBsb2FkZXJgIGZvciB0aGUgc3BlY2lmaWVkCi0gICAgICAgIG1vZHVsZS4gSWYgdGhlIDp0ZXJtOmBmaW5kZXJgIGlzIGZvdW5kIG9uIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBhbmQgdGhlCi0gICAgICAgIG1vZHVsZSB0byBiZSBzZWFyY2hlZCBmb3IgaXMgYSBzdWJwYWNrYWdlIG9yIG1vZHVsZSB0aGVuICpwYXRoKiB3aWxsCi0gICAgICAgIGJlIHRoZSB2YWx1ZSBvZiA6YXR0cjpgX19wYXRoX19gIGZyb20gdGhlIHBhcmVudCBwYWNrYWdlLiBJZiBhIGxvYWRlcgotICAgICAgICBjYW5ub3QgYmUgZm91bmQsIGBgTm9uZWBgIGlzIHJldHVybmVkLgorICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGg9Tm9uZSkKKworICAgICAgQW4gYWJzdGFjdCBtZXRob2QgZm9yIGZpbmRpbmcgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIHNwZWNpZmllZAorICAgICAgbW9kdWxlLiAgT3JpZ2luYWxseSBzcGVjaWZpZWQgaW4gOnBlcDpgMzAyYCwgdGhpcyBtZXRob2Qgd2FzIG1lYW50CisgICAgICBmb3IgdXNlIGluIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBhbmQgaW4gdGhlIHBhdGgtYmFzZWQgaW1wb3J0IHN1YnN5c3RlbS4KKworCisuLiBjbGFzczo6IE1ldGFQYXRoRmluZGVyCisKKyAgIEFuIGFic3RyYWN0IGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGEgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgLiBGb3IKKyAgIGNvbXBhdGliaWxpdHksIHRoaXMgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YEZpbmRlcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBtZXRob2Q6OiBmaW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aCkKKworICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIGZvciBmaW5kaW5nIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBzcGVjaWZpZWQKKyAgICAgIG1vZHVsZS4gIElmIHRoaXMgaXMgYSB0b3AtbGV2ZWwgaW1wb3J0LCAqcGF0aCogd2lsbCBiZSBgYE5vbmVgYC4KKyAgICAgIE90aGVyaXdzZSwgdGhpcyBpcyBhIHNlYXJjaCBmb3IgYSBzdWJwYWNrYWdlIG9yIG1vZHVsZSBhbmQgKnBhdGgqCisgICAgICB3aWxsIGJlIHRoZSB2YWx1ZSBvZiA6YXR0cjpgX19wYXRoX19gIGZyb20gdGhlIHBhcmVudAorICAgICAgcGFja2FnZS4gSWYgYSBsb2FkZXIgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKworICAgLi4gbWV0aG9kOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgICBBbiBvcHRpb25hbCBtZXRob2Qgd2hpY2gsIHdoZW4gY2FsbGVkLCBzaG91bGQgaW52YWxpZGF0ZSBhbnkgaW50ZXJuYWwKKyAgICAgIGNhY2hlIHVzZWQgYnkgdGhlIGZpbmRlci4gVXNlZCBieSA6ZnVuYzpgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzYAorICAgICAgd2hlbiBpbnZhbGlkYXRpbmcgdGhlIGNhY2hlcyBvZiBhbGwgZmluZGVycyBvbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAuCisKKworLi4gY2xhc3M6OiBQYXRoRW50cnlGaW5kZXIKKworICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgLiAgVGhvdWdoCisgICBpdCBiZWFycyBzb21lIHNpbWlsYXJpdGllcyB0byA6Y2xhc3M6YE1ldGFQYXRoRmluZGVyYCwgYGBQYXRoRW50cnlGaW5kZXJgYAorICAgaXMgbWVhbnQgZm9yIHVzZSBvbmx5IHdpdGhpbiB0aGUgcGF0aC1iYXNlZCBpbXBvcnQgc3Vic3lzdGVtIHByb3ZpZGVkCisgICBieSA6Y2xhc3M6YFBhdGhGaW5kZXJgLiBUaGlzIEFCQyBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgRmluZGVyYCBmb3IKKyAgIGNvbXBhdGliaWxpdHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBtZXRob2Q6OiBmaW5kX2xvYWRlcihmdWxsbmFtZSk6CisKKyAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCBmb3IgZmluZGluZyBhIDp0ZXJtOmBsb2FkZXJgIGZvciB0aGUgc3BlY2lmaWVkCisgICAgICBtb2R1bGUuICBSZXR1cm5zIGEgMi10dXBsZSBvZiBgYChsb2FkZXIsIHBvcnRpb24pYGAgd2hlcmUgYGBwb3J0aW9uYGAKKyAgICAgIGlzIGEgc2VxdWVuY2Ugb2YgZmlsZSBzeXN0ZW0gbG9jYXRpb25zIGNvbnRyaWJ1dGluZyB0byBwYXJ0IG9mIGEgbmFtZXNwYWNlCisgICAgICBwYWNrYWdlLiBUaGUgbG9hZGVyIG1heSBiZSBgYE5vbmVgYCB3aGlsZSBzcGVjaWZ5aW5nIGBgcG9ydGlvbmBgIHRvCisgICAgICBzaWduaWZ5IHRoZSBjb250cmlidXRpb24gb2YgdGhlIGZpbGUgc3lzdGVtIGxvY2F0aW9ucyB0byBhIG5hbWVzcGFjZQorICAgICAgcGFja2FnZS4gQW4gZW1wdHkgbGlzdCBjYW4gYmUgdXNlZCBmb3IgYGBwb3J0aW9uYGAgdG8gc2lnbmlmeSB0aGUgbG9hZGVyCisgICAgICBpcyBub3QgcGFydCBvZiBhIHBhY2thZ2UuIElmIGBgbG9hZGVyYGAgaXMgYGBOb25lYGAgYW5kIGBgcG9ydGlvbmBgIGlzCisgICAgICB0aGUgZW1wdHkgbGlzdCB0aGVuIG5vIGxvYWRlciBvciBsb2NhdGlvbiBmb3IgYSBuYW1lc3BhY2UgcGFja2FnZSB3ZXJlCisgICAgICBmb3VuZCAoaS5lLiBmYWlsdXJlIHRvIGZpbmQgYW55dGhpbmcgZm9yIHRoZSBtb2R1bGUpLgorCisgICAuLiBtZXRob2Q6OiBmaW5kX21vZHVsZShmdWxsbmFtZSk6CisKKyAgICAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEZpbmRlci5maW5kX21vZHVsZWAgd2hpY2ggaXMKKyAgICAgIGVxdWl2YWxlbnQgdG8gYGBzZWxmLmZpbmRfbG9hZGVyKGZ1bGxuYW1lKVswXWBgLgorCisgICAuLiBtZXRob2Q6OiBpbnZhbGlkYXRlX2NhY2hlcygpCisKKyAgICAgIEFuIG9wdGlvbmFsIG1ldGhvZCB3aGljaCwgd2hlbiBjYWxsZWQsIHNob3VsZCBpbnZhbGlkYXRlIGFueSBpbnRlcm5hbAorICAgICAgY2FjaGUgdXNlZCBieSB0aGUgZmluZGVyLiBVc2VkIGJ5IDptZXRoOmBQYXRoRmluZGVyLmludmFsaWRhdGVfY2FjaGVzYAorICAgICAgd2hlbiBpbnZhbGlkYXRpbmcgdGhlIGNhY2hlcyBvZiBhbGwgY2FjaGVkIGZpbmRlcnMuCiAKIAogLi4gY2xhc3M6OiBMb2FkZXIKQEAgLTE1OSw2ICsyNTQsMTMgQEAKICAgICAgICAgICAgIChUaGlzIGlzIG5vdCBzZXQgYnkgdGhlIGJ1aWx0LWluIGltcG9ydCBtYWNoaW5lcnksCiAgICAgICAgICAgICBidXQgaXQgc2hvdWxkIGJlIHNldCB3aGVuZXZlciBhIDp0ZXJtOmBsb2FkZXJgIGlzIHVzZWQuKQogCisgICAgLi4gbWV0aG9kOjogbW9kdWxlX3JlcHIobW9kdWxlKQorCisgICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB3aGljaCB3aGVuIGltcGxlbWVudGVkIGNhbGN1bGF0ZXMgYW5kIHJldHVybnMgdGhlCisgICAgICAgIGdpdmVuIG1vZHVsZSdzIHJlcHIsIGFzIGEgc3RyaW5nLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDogMy4zCisKIAogLi4gY2xhc3M6OiBSZXNvdXJjZUxvYWRlcgogCkBAIC0yMjQsNiArMzI2LDM4IEBACiAgICAgICAgIG1vZHVsZS4KIAogCisuLiBjbGFzczo6IEZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisKKyAgIEFuIGFic3RyYWN0IGJhc2UgY2xhc3Mgd2hpY2ggaW5oZXJpdHMgZnJvbSA6Y2xhc3M6YFJlc291cmNlTG9hZGVyYCBhbmQKKyAgIDpjbGFzczpgRXhlY3V0aW9uTG9hZGVyYCwgcHJvdmlkaW5nIGNvbmNyZWF0ZSBpbXBsZW1lbnRhdGlvbnMgb2YKKyAgIDptZXRoOmBSZXNvdXJjZUxvYWRlci5nZXRfZGF0YWAgYW5kIDptZXRoOmBFeGVjdXRpb25Mb2FkZXIuZ2V0X2ZpbGVuYW1lYC4KKworICAgVGhlICpmdWxsbmFtZSogYXJndW1lbnQgaXMgYSBmdWxseSByZXNvbHZlZCBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGxvYWRlciBpcworICAgdG8gaGFuZGxlLiBUaGUgKnBhdGgqIGFyZ3VtZW50IGlzIHRoZSBwYXRoIHRvIHRoZSBmaWxlIGZvciB0aGUgbW9kdWxlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogbmFtZQorCisgICAgICBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBsb2FkZXIgY2FuIGhhbmRsZS4KKworICAgLi4gYXR0cmlidXRlOjogcGF0aAorCisgICAgICBQYXRoIHRvIHRoZSBmaWxlIG9mIHRoZSBtb2R1bGUuCisKKyAgIC4uIG1ldGhvZDo6IGxvYWRfbW9kdWxlKGZ1bGxuYW1lKQorCisgICAgICBDYWxscyBzdXBlcidzIGBgbG9hZF9tb2R1bGUoKWBgLgorCisgICAuLiBtZXRob2Q6OiBnZXRfZmlsZW5hbWUoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgOmF0dHI6YHBhdGhgLgorCisgICAuLiBtZXRob2Q6OiBnZXRfZGF0YShwYXRoKQorCisgICAgICBSZXR1cm5zIHRoZSBvcGVuLCBiaW5hcnkgZmlsZSBmb3IgKnBhdGgqLgorCisKIC4uIGNsYXNzOjogU291cmNlTG9hZGVyCiAKICAgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBsZW1lbnRpbmcgc291cmNlIChhbmQgb3B0aW9uYWxseSBieXRlY29kZSkKQEAgLTI0MywxMiArMzc3LDMxIEBACiAgICAgb3B0aW1pemF0aW9uIHRvIHNwZWVkIHVwIGxvYWRpbmcgYnkgcmVtb3ZpbmcgdGhlIHBhcnNpbmcgc3RlcCBvZiBQeXRob24ncwogICAgIGNvbXBpbGVyLCBhbmQgc28gbm8gYnl0ZWNvZGUtc3BlY2lmaWMgQVBJIGlzIGV4cG9zZWQuCiAKLSAgICAuLiBtZXRob2Q6OiBwYXRoX210aW1lKHNlbGYsIHBhdGgpCisgICAgLi4gbWV0aG9kOjogcGF0aF9zdGF0cyhwYXRoKQorCisgICAgICAgIE9wdGlvbmFsIGFic3RyYWN0IG1ldGhvZCB3aGljaCByZXR1cm5zIGEgOmNsYXNzOmBkaWN0YCBjb250YWluaW5nCisgICAgICAgIG1ldGFkYXRhIGFib3V0IHRoZSBzcGVjaWZlZCBwYXRoLiAgU3VwcG9ydGVkIGRpY3Rpb25hcnkga2V5cyBhcmU6CisKKyAgICAgICAgLSBgYCdtdGltZSdgYCAobWFuZGF0b3J5KTogYW4gaW50ZWdlciBvciBmbG9hdGluZy1wb2ludCBudW1iZXIKKyAgICAgICAgICByZXByZXNlbnRpbmcgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBzb3VyY2UgY29kZTsKKyAgICAgICAgLSBgYCdzaXplJ2BgIChvcHRpb25hbCk6IHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBzb3VyY2UgY29kZS4KKworICAgICAgICBBbnkgb3RoZXIga2V5cyBpbiB0aGUgZGljdGlvbmFyeSBhcmUgaWdub3JlZCwgdG8gYWxsb3cgZm9yIGZ1dHVyZQorICAgICAgICBleHRlbnNpb25zLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAgLi4gbWV0aG9kOjogcGF0aF9tdGltZShwYXRoKQogCiAgICAgICAgIE9wdGlvbmFsIGFic3RyYWN0IG1ldGhvZCB3aGljaCByZXR1cm5zIHRoZSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlCiAgICAgICAgIHNwZWNpZmllZCBwYXRoLgogCi0gICAgLi4gbWV0aG9kOjogc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSkKKyAgICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiA6bWV0aDpgcGF0aF9zdGF0c2AuICBZb3UgZG9uJ3QKKyAgICAgICAgICAgaGF2ZSB0byBpbXBsZW1lbnQgaXQsIGJ1dCBpdCBpcyBzdGlsbCBhdmFpbGFibGUgZm9yIGNvbXBhdGliaWxpdHkKKyAgICAgICAgICAgcHVycG9zZXMuCisKKyAgICAuLiBtZXRob2Q6OiBzZXRfZGF0YShwYXRoLCBkYXRhKQogCiAgICAgICAgIE9wdGlvbmFsIGFic3RyYWN0IG1ldGhvZCB3aGljaCB3cml0ZXMgdGhlIHNwZWNpZmllZCBieXRlcyB0byBhIGZpbGUKICAgICAgICAgcGF0aC4gQW55IGludGVybWVkaWF0ZSBkaXJlY3RvcmllcyB3aGljaCBkbyBub3QgZXhpc3QgYXJlIHRvIGJlIGNyZWF0ZWQKQEAgLTI1NywyMyArNDEwLDI1IEBACiAgICAgICAgIFdoZW4gd3JpdGluZyB0byB0aGUgcGF0aCBmYWlscyBiZWNhdXNlIHRoZSBwYXRoIGlzIHJlYWQtb25seQogICAgICAgICAoOmF0dHI6YGVycm5vLkVBQ0NFU2ApLCBkbyBub3QgcHJvcGFnYXRlIHRoZSBleGNlcHRpb24uCiAKLSAgICAuLiBtZXRob2Q6OiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSkKKyAgICAuLiBtZXRob2Q6OiBnZXRfY29kZShmdWxsbmFtZSkKIAogICAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgSW5zcGVjdExvYWRlci5nZXRfY29kZWAuCiAKLSAgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSkKKyAgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKIAogICAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgTG9hZGVyLmxvYWRfbW9kdWxlYC4KIAotICAgIC4uIG1ldGhvZDo6IGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpCisgICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKIAogICAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgSW5zcGVjdExvYWRlci5nZXRfc291cmNlYC4KIAotICAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpCisgICAgLi4gbWV0aG9kOjogaXNfcGFja2FnZShmdWxsbmFtZSkKIAogICAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgSW5zcGVjdExvYWRlci5pc19wYWNrYWdlYC4gQSBtb2R1bGUKLSAgICAgICAgaXMgZGV0ZXJtaW5lZCB0byBiZSBhIHBhY2thZ2UgaWYgaXRzIGZpbGUgcGF0aCBpcyBhIGZpbGUgbmFtZWQKLSAgICAgICAgYGBfX2luaXRfX2BgIHdoZW4gdGhlIGZpbGUgZXh0ZW5zaW9uIGlzIHJlbW92ZWQuCisgICAgICAgIGlzIGRldGVybWluZWQgdG8gYmUgYSBwYWNrYWdlIGlmIGl0cyBmaWxlIHBhdGggKGFzIHByb3ZpZGVkIGJ5CisgICAgICAgIDptZXRoOmBFeGVjdXRpb25Mb2FkZXIuZ2V0X2ZpbGVuYW1lYCkgaXMgYSBmaWxlIG5hbWVkCisgICAgICAgIGBgX19pbml0X19gYCB3aGVuIHRoZSBmaWxlIGV4dGVuc2lvbiBpcyByZW1vdmVkICoqYW5kKiogdGhlIG1vZHVsZSBuYW1lCisgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBlbmQgaW4gYGBfX2luaXRfX2BgLgogCiAKIC4uIGNsYXNzOjogUHlMb2FkZXIKQEAgLTM3NCw2ICs1MjksMTAgQEAKICAgICAgICAgOmNsYXNzOmBQeUxvYWRlcmAuIERvIG5vdGUgdGhhdCB0aGlzIHNvbHV0aW9uIHdpbGwgbm90IHN1cHBvcnQKICAgICAgICAgc291cmNlbGVzcy9ieXRlY29kZS1vbmx5IGxvYWRpbmc7IG9ubHkgc291cmNlICphbmQqIGJ5dGVjb2RlIGxvYWRpbmcuCiAKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgIFVwZGF0ZWQgdG8gcGFyc2UgKGJ1dCBub3QgdXNlKSB0aGUgbmV3IHNvdXJjZSBzaXplIGZpZWxkIGluIGJ5dGVjb2RlCisgICAgICAgZmlsZXMgd2hlbiByZWFkaW5nIGFuZCB0byB3cml0ZSBvdXQgdGhlIGZpZWxkIHByb3Blcmx5IHdoZW4gd3JpdGluZy4KKwogICAgIC4uIG1ldGhvZDo6IHNvdXJjZV9tdGltZShmdWxsbmFtZSkKIAogICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZSBzb3VyY2UKQEAgLTQxNywxMiArNTc2LDU5IEBACiBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgdmFyaW91cyBvYmplY3RzIHRoYXQgaGVscCA6a2V5d29yZDpgaW1wb3J0YAogZmluZCBhbmQgbG9hZCBtb2R1bGVzLgogCisuLiBhdHRyaWJ1dGU6OiBTT1VSQ0VfU1VGRklYRVMKKworICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSByZWNvZ25pemVkIGZpbGUgc3VmZml4ZXMgZm9yIHNvdXJjZQorICAgbW9kdWxlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGF0dHJpYnV0ZTo6IERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTCisKKyAgIEEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgZmlsZSBzdWZmaXhlcyBmb3Igbm9uLW9wdGltaXplZCBieXRlY29kZQorICAgbW9kdWxlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGF0dHJpYnV0ZTo6IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUworCisgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGZpbGUgc3VmZml4ZXMgZm9yIG9wdGltaXplZCBieXRlY29kZQorICAgbW9kdWxlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGF0dHJpYnV0ZTo6IEJZVEVDT0RFX1NVRkZJWEVTCisKKyAgIEEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgcmVjb2duaXplZCBmaWxlIHN1ZmZpeGVzIGZvciBieXRlY29kZQorICAgbW9kdWxlcy4gU2V0IHRvIGVpdGhlciA6YXR0cjpgREVCVUdfQllURUNPREVfU1VGRklYRVNgIG9yCisgICA6YXR0cjpgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTYCBiYXNlZCBvbiB3aGV0aGVyIGBgX19kZWJ1Z19fYGAgaXMgdHJ1ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGF0dHJpYnV0ZTo6IEVYVEVOU0lPTl9TVUZGSVhFUworCisgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJlY29nbml6ZWQgZmlsZSBzdWZmaXhlcyBmb3IKKyAgIGV4dGVuc2lvbiBtb2R1bGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBhbGxfc3VmZml4ZXMoKQorCisgICBSZXR1cm5zIGEgY29tYmluZWQgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyBhbGwgZmlsZSBzdWZmaXhlcyBmb3IKKyAgIG1vZHVsZXMgcmVjb2duaXplZCBieSB0aGUgc3RhbmRhcmQgaW1wb3J0IG1hY2hpbmVyeS4gVGhpcyBpcyBhCisgICBoZWxwZXIgZm9yIGNvZGUgd2hpY2ggc2ltcGx5IG5lZWRzIHRvIGtub3cgaWYgYSBmaWxlc3lzdGVtIHBhdGgKKyAgIHBvdGVudGlhbGx5IHJlZmVycyB0byBhIG1vZHVsZSB3aXRob3V0IG5lZWRpbmcgYW55IGRldGFpbHMgb24gdGhlIGtpbmQKKyAgIG9mIG1vZHVsZSAoZm9yIGV4YW1wbGUsIDpmdW5jOmBpbnNwZWN0LmdldG1vZHVsZW5hbWVgKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBjbGFzczo6IEJ1aWx0aW5JbXBvcnRlcgogCiAgICAgQW4gOnRlcm06YGltcG9ydGVyYCBmb3IgYnVpbHQtaW4gbW9kdWxlcy4gQWxsIGtub3duIGJ1aWx0LWluIG1vZHVsZXMgYXJlCiAgICAgbGlzdGVkIGluIDpkYXRhOmBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXNgLiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlCi0gICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgYW5kIDpjbGFzczpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyYAotICAgIEFCQ3MuCisgICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyYCBhbmQKKyAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlcmAgQUJDcy4KIAogICAgIE9ubHkgY2xhc3MgbWV0aG9kcyBhcmUgZGVmaW5lZCBieSB0aGlzIGNsYXNzIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCBmb3IKICAgICBpbnN0YW50aWF0aW9uLgpAQCAtNDMxLDQ4ICs2MzcsMjIzIEBACiAuLiBjbGFzczo6IEZyb3plbkltcG9ydGVyCiAKICAgICBBbiA6dGVybTpgaW1wb3J0ZXJgIGZvciBmcm96ZW4gbW9kdWxlcy4gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZQotICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGFuZCA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlcmAKLSAgICBBQkNzLgorICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlcmAgYW5kCisgICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXJgIEFCQ3MuCiAKICAgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCiAgICAgaW5zdGFudGlhdGlvbi4KIAogCisuLiBjbGFzczo6IFdpbmRvd3NSZWdpc3RyeUZpbmRlcgorCisgICA6dGVybTpgRmluZGVyYCBmb3IgbW9kdWxlcyBkZWNsYXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gIFRoaXMgY2xhc3MKKyAgIGltcGxlbWVudHMgdGhlIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIEFCQy4KKworICAgT25seSBjbGFzcyBtZXRob2RzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIGZvcgorICAgaW5zdGFudGlhdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gY2xhc3M6OiBQYXRoRmluZGVyCiAKLSAgICA6dGVybTpgRmluZGVyYCBmb3IgOmRhdGE6YHN5cy5wYXRoYC4gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZQotICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIEFCQy4KKyAgIEEgOnRlcm06YEZpbmRlcmAgZm9yIDpkYXRhOmBzeXMucGF0aGAgYW5kIHBhY2thZ2UgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZXMuCisgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIDpjbGFzczpgaW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlcmAgQUJDLgogCi0gICAgVGhpcyBjbGFzcyBkb2VzIG5vdCBwZXJmZWN0bHkgbWlycm9yIHRoZSBzZW1hbnRpY3Mgb2YgOmtleXdvcmQ6YGltcG9ydGAgaW4KLSAgICB0ZXJtcyBvZiA6ZGF0YTpgc3lzLnBhdGhgLiBObyBpbXBsaWNpdCBwYXRoIGhvb2tzIGFyZSBhc3N1bWVkIGZvcgotICAgIHNpbXBsaWZpY2F0aW9uIG9mIHRoZSBjbGFzcyBhbmQgaXRzIHNlbWFudGljcy4KKyAgIE9ubHkgY2xhc3MgbWV0aG9kcyBhcmUgZGVmaW5lZCBieSB0aGlzIGNsYXNzIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCBmb3IKKyAgIGluc3RhbnRpYXRpb24uCiAKLSAgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCi0gICAgaW5zdGFudGlhdGlvbi4KKyAgIC4uIGNsYXNzbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGg9Tm9uZSkKIAotICAgIC4uIGNsYXNzbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGg9Tm9uZSkKKyAgICAgQ2xhc3MgbWV0aG9kIHRoYXQgYXR0ZW1wdHMgdG8gZmluZCBhIDp0ZXJtOmBsb2FkZXJgIGZvciB0aGUgbW9kdWxlCisgICAgIHNwZWNpZmllZCBieSAqZnVsbG5hbWUqIG9uIDpkYXRhOmBzeXMucGF0aGAgb3IsIGlmIGRlZmluZWQsIG9uCisgICAgICpwYXRoKi4gRm9yIGVhY2ggcGF0aCBlbnRyeSB0aGF0IGlzIHNlYXJjaGVkLAorICAgICA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGlzIGNoZWNrZWQuIElmIGEgbm9uLWZhbHNlIG9iamVjdCBpcworICAgICBmb3VuZCB0aGVuIGl0IGlzIHVzZWQgYXMgdGhlIDp0ZXJtOmBmaW5kZXJgIHRvIGxvb2sgZm9yIHRoZSBtb2R1bGUKKyAgICAgYmVpbmcgc2VhcmNoZWQgZm9yLiBJZiBubyBlbnRyeSBpcyBmb3VuZCBpbgorICAgICA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLCB0aGVuIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXMKKyAgICAgc2VhcmNoZWQgZm9yIGEgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBhbmQsIGlmIGZvdW5kLCBpcyBzdG9yZWQgaW4KKyAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBhbG9uZyB3aXRoIGJlaW5nIHF1ZXJpZWQgYWJvdXQgdGhlCisgICAgIG1vZHVsZS4gSWYgbm8gZmluZGVyIGlzIGV2ZXIgZm91bmQgdGhlbiBgYE5vbmVgYCBpcyBib3RoIHN0b3JlZCBpbgorICAgICB0aGUgY2FjaGUgYW5kIHJldHVybmVkLgogCi0gICAgICAgIENsYXNzIG1ldGhvZCB0aGF0IGF0dGVtcHRzIHRvIGZpbmQgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIG1vZHVsZQotICAgICAgICBzcGVjaWZpZWQgYnkgKmZ1bGxuYW1lKiBvbiA6ZGF0YTpgc3lzLnBhdGhgIG9yLCBpZiBkZWZpbmVkLCBvbgotICAgICAgICAqcGF0aCouIEZvciBlYWNoIHBhdGggZW50cnkgdGhhdCBpcyBzZWFyY2hlZCwKLSAgICAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBpcyBjaGVja2VkLiBJZiBhbiBub24tZmFsc2Ugb2JqZWN0IGlzCi0gICAgICAgIGZvdW5kIHRoZW4gaXQgaXMgdXNlZCBhcyB0aGUgOnRlcm06YGZpbmRlcmAgdG8gbG9vayBmb3IgdGhlIG1vZHVsZQotICAgICAgICBiZWluZyBzZWFyY2hlZCBmb3IuIElmIG5vIGVudHJ5IGlzIGZvdW5kIGluCi0gICAgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAsIHRoZW4gOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCBpcwotICAgICAgICBzZWFyY2hlZCBmb3IgYSBmaW5kZXIgZm9yIHRoZSBwYXRoIGVudHJ5IGFuZCwgaWYgZm91bmQsIGlzIHN0b3JlZCBpbgotICAgICAgICA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGFsb25nIHdpdGggYmVpbmcgcXVlcmllZCBhYm91dCB0aGUKLSAgICAgICAgbW9kdWxlLiBJZiBubyBmaW5kZXIgaXMgZXZlciBmb3VuZCB0aGVuIGBgTm9uZWBgIGlzIHJldHVybmVkLgorICAgLi4gY2xhc3NtZXRob2Q6OiBpbnZhbGlkYXRlX2NhY2hlcygpCisKKyAgICAgQ2FsbHMgOm1ldGg6YGltcG9ydGxpYi5hYmMuUGF0aEVudHJ5RmluZGVyLmludmFsaWRhdGVfY2FjaGVzYCBvbiBhbGwKKyAgICAgZmluZGVycyBzdG9yZWQgaW4gOmF0dHI6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4KKworCisuLiBjbGFzczo6IEZpbGVGaW5kZXIocGF0aCwgXCpsb2FkZXJfZGV0YWlscykKKworICAgQSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuUGF0aEVudHJ5RmluZGVyYCB3aGljaAorICAgY2FjaGVzIHJlc3VsdHMgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uCisKKyAgIFRoZSAqcGF0aCogYXJndW1lbnQgaXMgdGhlIGRpcmVjdG9yeSBmb3Igd2hpY2ggdGhlIGZpbmRlciBpcyBpbiBjaGFyZ2Ugb2YKKyAgIHNlYXJjaGluZy4KKworICAgVGhlICpsb2FkZXJfZGV0YWlscyogYXJndW1lbnQgaXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgMi1pdGVtIHR1cGxlcyBlYWNoCisgICBjb250YWluaW5nIGEgbG9hZGVyIGFuZCBhIHNlcXVlbmNlIG9mIGZpbGUgc3VmZml4ZXMgdGhlIGxvYWRlciByZWNvZ25pemVzLgorCisgICBUaGUgZmluZGVyIHdpbGwgY2FjaGUgdGhlIGRpcmVjdG9yeSBjb250ZW50cyBhcyBuZWNlc3NhcnksIG1ha2luZyBzdGF0IGNhbGxzCisgICBmb3IgZWFjaCBtb2R1bGUgc2VhcmNoIHRvIHZlcmlmeSB0aGUgY2FjaGUgaXMgbm90IG91dGRhdGVkLiBCZWNhdXNlIGNhY2hlCisgICBzdGFsZW5lc3MgcmVsaWVzIHVwb24gdGhlIGdyYW51bGFyaXR5IG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtJ3Mgc3RhdGUKKyAgIGluZm9ybWF0aW9uIG9mIHRoZSBmaWxlIHN5c3RlbSwgdGhlcmUgaXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb2YKKyAgIHNlYXJjaGluZyBmb3IgYSBtb2R1bGUsIGNyZWF0aW5nIGEgbmV3IGZpbGUsIGFuZCB0aGVuIHNlYXJjaGluZyBmb3IgdGhlCisgICBtb2R1bGUgdGhlIG5ldyBmaWxlIHJlcHJlc2VudHMuIElmIHRoZSBvcGVyYXRpb25zIGhhcHBlbiBmYXN0IGVub3VnaCB0byBmaXQKKyAgIHdpdGhpbiB0aGUgZ3JhbnVsYXJpdHkgb2Ygc3RhdCBjYWxscywgdGhlbiB0aGUgbW9kdWxlIHNlYXJjaCB3aWxsIGZhaWwuIFRvCisgICBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmcsIHdoZW4geW91IGNyZWF0ZSBhIG1vZHVsZSBkeW5hbWljYWxseSwgbWFrZSBzdXJlCisgICB0byBjYWxsIDpmdW5jOmBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXNgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogcGF0aAorCisgICAgICBUaGUgcGF0aCB0aGUgZmluZGVyIHdpbGwgc2VhcmNoIGluLgorCisgICAuLiBtZXRob2Q6OiBmaW5kX21vZHVsZShmdWxsbmFtZSkKKworICAgICAgQXR0ZW1wdCB0byBmaW5kIHRoZSBsb2FkZXIgdG8gaGFuZGxlICpmdWxsbmFtZSogd2l0aGluIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgICBDbGVhciBvdXQgdGhlIGludGVybmFsIGNhY2hlLgorCisgICAuLiBjbGFzc21ldGhvZDo6IHBhdGhfaG9vayhcKmxvYWRlcl9kZXRhaWxzKQorCisgICAgICBBIGNsYXNzIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgY2xvc3VyZSBmb3IgdXNlIG9uIDphdHRyOmBzeXMucGF0aF9ob29rc2AuCisgICAgICBBbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YEZpbGVGaW5kZXJgIGlzIHJldHVybmVkIGJ5IHRoZSBjbG9zdXJlIHVzaW5nIHRoZQorICAgICAgcGF0aCBhcmd1bWVudCBnaXZlbiB0byB0aGUgY2xvc3VyZSBkaXJlY3RseSBhbmQgKmxvYWRlcl9kZXRhaWxzKgorICAgICAgaW5kaXJlY3RseS4KKworICAgICAgSWYgdGhlIGFyZ3VtZW50IHRvIHRoZSBjbG9zdXJlIGlzIG5vdCBhbiBleGlzdGluZyBkaXJlY3RvcnksCisgICAgICA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgorCisKKy4uIGNsYXNzOjogU291cmNlRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKKworICAgQSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyYCBieQorICAgc3ViY2xhc3NpbmcgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXJgIGFuZCBwcm92aWRpbmcgc29tZSBjb25jcmV0ZQorICAgaW1wbGVtZW50YXRpb25zIG9mIG90aGVyIG1ldGhvZHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCisKKyAgICAgIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhhdCB0aGlzIGxvYWRlciB3aWxsIGhhbmRsZS4KKworICAgLi4gYXR0cmlidXRlOjogcGF0aAorCisgICAgICBUaGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUuCisKKyAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybiB0cnVlIGlmIDphdHRyOmBwYXRoYCBhcHBlYXJzIHRvIGJlIGZvciBhIHBhY2thZ2UuCisKKyAgIC4uIG1ldGhvZDo6IHBhdGhfc3RhdHMocGF0aCkKKworICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyLnBhdGhfc3RhdHNgLgorCisgICAuLiBtZXRob2Q6OiBzZXRfZGF0YShwYXRoLCBkYXRhKQorCisgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIuc2V0X2RhdGFgLgorCisKKy4uIGNsYXNzOjogU291cmNlbGVzc0ZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisKKyAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXJgIHdoaWNoIGNhbgorICAgaW1wb3J0IGJ5dGVjb2RlIGZpbGVzIChpLmUuIG5vIHNvdXJjZSBjb2RlIGZpbGVzIGV4aXN0KS4KKworICAgUGxlYXNlIG5vdGUgdGhhdCBkaXJlY3QgdXNlIG9mIGJ5dGVjb2RlIGZpbGVzIChhbmQgdGh1cyBub3Qgc291cmNlIGNvZGUKKyAgIGZpbGVzKSBpbmhpYml0cyB5b3VyIG1vZHVsZXMgZnJvbSBiZWluZyB1c2FibGUgYnkgYWxsIFB5dGhvbgorICAgaW1wbGVtZW50YXRpb25zIG9yIG5ldyB2ZXJzaW9ucyBvZiBQeXRob24gd2hpY2ggY2hhbmdlIHRoZSBieXRlY29kZQorICAgZm9ybWF0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogbmFtZQorCisgICAgICBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBsb2FkZXIgd2lsbCBoYW5kbGUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgVGhlIHBhdGggdG8gdGhlIGJ5dGVjb2RlIGZpbGUuCisKKyAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCisKKyAgICAgIERldGVybWluZXMgaWYgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UgYmFzZWQgb24gOmF0dHI6YHBhdGhgLgorCisgICAuLiBtZXRob2Q6OiBnZXRfY29kZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyB0aGUgY29kZSBvYmplY3QgZm9yIDphdHRyOmBuYW1lYCBjcmVhdGVkIGZyb20gOmF0dHI6YHBhdGhgLgorCisgICAuLiBtZXRob2Q6OiBnZXRfc291cmNlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIGBgTm9uZWBgIGFzIGJ5dGVjb2RlIGZpbGVzIGhhdmUgbm8gc291cmNlIHdoZW4gdGhpcyBsb2FkZXIgaXMKKyAgICAgIHVzZWQuCisKKworLi4gY2xhc3M6OiBFeHRlbnNpb25GaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorCisgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDpjbGFzczpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyYCBmb3IKKyAgIGV4dGVuc2lvbiBtb2R1bGVzLgorCisgICBUaGUgKmZ1bGxuYW1lKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIGlzIHRvCisgICBzdXBwb3J0LiBUaGUgKnBhdGgqIGFyZ3VtZW50IGlzIHRoZSBwYXRoIHRvIHRoZSBleHRlbnNpb24gbW9kdWxlJ3MgZmlsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgTmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBsb2FkZXIgc3VwcG9ydHMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgUGF0aCB0byB0aGUgZXh0ZW5zaW9uIG1vZHVsZS4KKworICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoZnVsbG5hbWUpCisKKyAgICAgIExvYWRzIHRoZSBleHRlbnNpb24gbW9kdWxlIGlmIGFuZCBvbmx5IGlmICpmdWxsbmFtZSogaXMgdGhlIHNhbWUgYXMKKyAgICAgIDphdHRyOmBuYW1lYCBvciBpcyBgYE5vbmVgYC4KKworICAgLi4gbWV0aG9kOjogaXNfcGFja2FnZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyBgYFRydWVgYCBpZiB0aGUgZmlsZSBwYXRoIHBvaW50cyB0byBhIHBhY2thZ2UncyBgYF9faW5pdF9fYGAKKyAgICAgIG1vZHVsZSBiYXNlZCBvbiA6YXR0cjpgRVhURU5TSU9OX1NVRkZJWEVTYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgYGBOb25lYGAgYXMgZXh0ZW5zaW9uIG1vZHVsZXMgbGFjayBhIGNvZGUgb2JqZWN0LgorCisgICAuLiBtZXRob2Q6OiBnZXRfc291cmNlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIGBgTm9uZWBgIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGRvIG5vdCBoYXZlIHNvdXJjZSBjb2RlLgogCiAKIDptb2Q6YGltcG9ydGxpYi51dGlsYCAtLSBVdGlsaXR5IGNvZGUgZm9yIGltcG9ydGVycwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIG1vZHVsZTo6IGltcG9ydGxpYi51dGlsCi0gICAgOnN5bm9wc2lzOiBJbXBvcnRlcnMgYW5kIHBhdGggaG9va3MKKyAgICA6c3lub3BzaXM6IFV0aWxpdHkgY29kZSBmb3IgaW1wb3J0ZXJzCiAKIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSB2YXJpb3VzIG9iamVjdHMgdGhhdCBoZWxwIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YKIGFuIDp0ZXJtOmBpbXBvcnRlcmAuCiAKKy4uIGZ1bmN0aW9uOjogcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpCisKKyAgIFJlc29sdmUgYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSB0byBhbiBhYnNvbHV0ZSBvbmUuCisKKyAgIElmICAqKm5hbWUqKiBoYXMgbm8gbGVhZGluZyBkb3RzLCB0aGVuICoqbmFtZSoqIGlzIHNpbXBseSByZXR1cm5lZC4gVGhpcworICAgYWxsb3dzIGZvciB1c2FnZSBzdWNoIGFzCisgICBgYGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZSgnc3lzJywgX19wYWNrYWdlX18pYGAgd2l0aG91dCBkb2luZyBhCisgICBjaGVjayB0byBzZWUgaWYgdGhlICoqcGFja2FnZSoqIGFyZ3VtZW50IGlzIG5lZWRlZC4KKworICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICoqbmFtZSoqIGlzIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgYnV0CisgICBwYWNrYWdlIGlzIGEgZmFsc2UgdmFsdWUgKGUuZy4gYGBOb25lYGAgb3IgdGhlIGVtcHR5IHN0cmluZykuCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyBhbHNvIHJhaXNlZCBhIHJlbGF0aXZlIG5hbWUgd291bGQgZXNjYXBlIGl0cyBjb250YWluaW5nCisgICBwYWNrYWdlIChlLmcuIHJlcXVlc3RpbmcgYGAuLmJhY29uYGAgZnJvbSB3aXRoaW4gdGhlIGBgc3BhbWBgIHBhY2thZ2UpLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gZGVjb3JhdG9yOjogbW9kdWxlX2Zvcl9sb2FkZXIKIAogICAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIGEgOnRlcm06YGxvYWRlcmAgbWV0aG9kLApAQCAtNDgxLDIyICs4NjIsMzAgQEAKICAgICBzaWduYXR1cmUgdGFraW5nIHR3byBwb3NpdGlvbmFsIGFyZ3VtZW50cwogICAgIChlLmcuIGBgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKWBgKSBmb3Igd2hpY2ggdGhlIHNlY29uZCBhcmd1bWVudAogICAgIHdpbGwgYmUgdGhlIG1vZHVsZSAqKm9iamVjdCoqIHRvIGJlIHVzZWQgYnkgdGhlIGxvYWRlci4KLSAgICBOb3RlIHRoYXQgdGhlIGRlY29yYXRvcgotICAgIHdpbGwgbm90IHdvcmsgb24gc3RhdGljIG1ldGhvZHMgYmVjYXVzZSBvZiB0aGUgYXNzdW1wdGlvbiBvZiB0d28KLSAgICBhcmd1bWVudHMuCisgICAgTm90ZSB0aGF0IHRoZSBkZWNvcmF0b3Igd2lsbCBub3Qgd29yayBvbiBzdGF0aWMgbWV0aG9kcyBiZWNhdXNlIG9mIHRoZQorICAgIGFzc3VtcHRpb24gb2YgdHdvIGFyZ3VtZW50cy4KIAogICAgIFRoZSBkZWNvcmF0ZWQgbWV0aG9kIHdpbGwgdGFrZSBpbiB0aGUgKipuYW1lKiogb2YgdGhlIG1vZHVsZSB0byBiZSBsb2FkZWQKICAgICBhcyBleHBlY3RlZCBmb3IgYSA6dGVybTpgbG9hZGVyYC4gSWYgdGhlIG1vZHVsZSBpcyBub3QgZm91bmQgaW4KICAgICA6ZGF0YTpgc3lzLm1vZHVsZXNgIHRoZW4gYSBuZXcgb25lIGlzIGNvbnN0cnVjdGVkIHdpdGggaXRzCi0gICAgOmF0dHI6YF9fbmFtZV9fYCBhdHRyaWJ1dGUgc2V0LiBPdGhlcndpc2UgdGhlIG1vZHVsZSBmb3VuZCBpbgotICAgIDpkYXRhOmBzeXMubW9kdWxlc2Agd2lsbCBiZSBwYXNzZWQgaW50byB0aGUgbWV0aG9kLiBJZiBhbgotICAgIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkgdGhlIGRlY29yYXRlZCBtZXRob2QgYW5kIGEgbW9kdWxlIHdhcyBhZGRlZCB0bworICAgIDphdHRyOmBfX25hbWVfX2AgYXR0cmlidXRlIHNldCB0byAqKm5hbWUqKiwgOmF0dHI6YF9fbG9hZGVyX19gIHNldCB0bworICAgICoqc2VsZioqLCBhbmQgOmF0dHI6YF9fcGFja2FnZV9fYCBzZXQgaWYKKyAgICA6bWV0aDpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyLmlzX3BhY2thZ2VgIGlzIGRlZmluZWQgZm9yICoqc2VsZioqIGFuZAorICAgIGRvZXMgbm90IHJhaXNlIDpleGM6YEltcG9ydEVycm9yYCBmb3IgKipuYW1lKiouIElmIGEgbmV3IG1vZHVsZSBpcyBub3QKKyAgICBuZWVkZWQgdGhlbiB0aGUgbW9kdWxlIGZvdW5kIGluIDpkYXRhOmBzeXMubW9kdWxlc2Agd2lsbCBiZSBwYXNzZWQgaW50byB0aGUKKyAgICBtZXRob2QuCisKKyAgICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGJ5IHRoZSBkZWNvcmF0ZWQgbWV0aG9kIGFuZCBhIG1vZHVsZSB3YXMgYWRkZWQgdG8KICAgICA6ZGF0YTpgc3lzLm1vZHVsZXNgIGl0IHdpbGwgYmUgcmVtb3ZlZCB0byBwcmV2ZW50IGEgcGFydGlhbGx5IGluaXRpYWxpemVkCiAgICAgbW9kdWxlIGZyb20gYmVpbmcgaW4gbGVmdCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLiBJZiB0aGUgbW9kdWxlIHdhcyBhbHJlYWR5CiAgICAgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCB0aGVuIGl0IGlzIGxlZnQgYWxvbmUuCiAKICAgICBVc2Ugb2YgdGhpcyBkZWNvcmF0b3IgaGFuZGxlcyBhbGwgdGhlIGRldGFpbHMgb2Ygd2hpY2ggbW9kdWxlIG9iamVjdCBhCi0gICAgbG9hZGVyIHNob3VsZCBpbml0aWFsaXplIGFzIHNwZWNpZmllZCBieSA6cGVwOmAzMDJgLgorICAgIGxvYWRlciBzaG91bGQgaW5pdGlhbGl6ZSBhcyBzcGVjaWZpZWQgYnkgOnBlcDpgMzAyYCBhcyBiZXN0IGFzIHBvc3NpYmxlLgorCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICA6YXR0cjpgX19sb2FkZXJfX2AgYW5kIDphdHRyOmBfX3BhY2thZ2VfX2AgYXJlIGF1dG9tYXRpY2FsbHkgc2V0CisgICAgICAgKHdoZW4gcG9zc2libGUpLgogCiAuLiBkZWNvcmF0b3I6OiBzZXRfbG9hZGVyCiAKQEAgLTUwNCw3ICs4OTMsMTMgQEAKICAgICB0byBzZXQgdGhlIDphdHRyOmBfX2xvYWRlcl9fYAogICAgIGF0dHJpYnV0ZSBvbiBsb2FkZWQgbW9kdWxlcy4gSWYgdGhlIGF0dHJpYnV0ZSBpcyBhbHJlYWR5IHNldCB0aGUgZGVjb3JhdG9yCiAgICAgZG9lcyBub3RoaW5nLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnQgdG8gdGhlCi0gICAgd3JhcHBlZCBtZXRob2QgaXMgd2hhdCA6YXR0cjpgX19sb2FkZXJfX2Agc2hvdWxkIGJlIHNldCB0by4KKyAgICB3cmFwcGVkIG1ldGhvZCAoaS5lLiBgYHNlbGZgYCkgaXMgd2hhdCA6YXR0cjpgX19sb2FkZXJfX2Agc2hvdWxkIGJlIHNldCB0by4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgOmZ1bmM6YG1vZHVsZV9mb3JfbG9hZGVyYCBiZSB1c2VkIG92ZXIgdGhpcworICAgICAgZGVjb3JhdG9yIGFzIGl0IHN1YnN1bWVzIHRoaXMgZnVuY3Rpb25hbGl0eS4KKwogCiAuLiBkZWNvcmF0b3I6OiBzZXRfcGFja2FnZQogCkBAIC01MTUsOCArOTEwLDEyIEBACiAgICAgc2V0IG9uIGFuZCBub3QgdGhlIG1vZHVsZSBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLgogCiAgICAgUmVsaWFuY2Ugb24gdGhpcyBkZWNvcmF0b3IgaXMgZGlzY291cmFnZWQgd2hlbiBpdCBpcyBwb3NzaWJsZSB0byBzZXQKLSAgICA6YXR0cjpgX19wYWNrYWdlX19gIGJlZm9yZSB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjb2RlIGlzIHBvc3NpYmxlLiBCeQotICAgIHNldHRpbmcgaXQgYmVmb3JlIHRoZSBjb2RlIGZvciB0aGUgbW9kdWxlIGlzIGV4ZWN1dGVkIGl0IGFsbG93cyB0aGUKLSAgICBhdHRyaWJ1dGUgdG8gYmUgdXNlZCBhdCB0aGUgZ2xvYmFsIGxldmVsIG9mIHRoZSBtb2R1bGUgZHVyaW5nCisgICAgOmF0dHI6YF9fcGFja2FnZV9fYCBiZWZvcmUgaW1wb3J0aW5nLiBCeQorICAgIHNldHRpbmcgaXQgYmVmb3JlaGFuZCB0aGUgY29kZSBmb3IgdGhlIG1vZHVsZSBpcyBleGVjdXRlZCB3aXRoIHRoZQorICAgIGF0dHJpYnV0ZSBzZXQgYW5kIHRodXMgY2FuIGJlIHVzZWQgYnkgZ2xvYmFsIGxldmVsIGNvZGUgZHVyaW5nCiAgICAgaW5pdGlhbGl6YXRpb24uCiAKKyAgIC4uIG5vdGU6OgorCisgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IDpmdW5jOmBtb2R1bGVfZm9yX2xvYWRlcmAgYmUgdXNlZCBvdmVyIHRoaXMKKyAgICAgIGRlY29yYXRvciBhcyBpdCBzdWJzdW1lcyB0aGlzIGZ1bmN0aW9uYWxpdHkuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbmRleC5yc3QgYi9Eb2MvbGlicmFyeS9pbmRleC5yc3QKaW5kZXggOWFjNjg4Yy4uYmEyMDM2MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW5kZXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L2luZGV4LnJzdApAQCAtNDYsNyArNDYsOCBAQAogICAgc3RkdHlwZXMucnN0CiAgICBleGNlcHRpb25zLnJzdAogCi0gICBzdHJpbmdzLnJzdAorICAgdGV4dC5yc3QKKyAgIGJpbmFyeS5yc3QKICAgIGRhdGF0eXBlcy5yc3QKICAgIG51bWVyaWMucnN0CiAgICBmdW5jdGlvbmFsLnJzdApAQCAtNTYsNyArNTcsNyBAQAogICAgZmlsZWZvcm1hdHMucnN0CiAgICBjcnlwdG8ucnN0CiAgICBhbGxvcy5yc3QKLSAgIHNvbWVvcy5yc3QKKyAgIGNvbmN1cnJlbmN5LnJzdAogICAgaXBjLnJzdAogICAgbmV0ZGF0YS5yc3QKICAgIG1hcmt1cC5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0IGIvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKaW5kZXggZDEyN2NlOC4uOWI3YWU5YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKQEAgLTE5MCwxMyArMTkwLDI2IEBACiAgICBjb21wYXJlZCB0byB0aGUgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlIDptb2Q6YGltcGAgbW9kdWxlOyBzZWUgdGhlCiAgICBkb2N1bWVudGF0aW9uIGZvciB0aGF0IG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBtb2R1bGUgdHlwZXMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFlvdSBtYXkgY2hlY2sgdGhlIGZpbGUgcGF0aCdzIHN1ZmZpeCBhZ2FpbnN0IHRoZSBzdXBwb3J0ZWQgc3VmZml4ZXMKKyAgICAgIGxpc3RlZCBpbiA6bW9kOmBpbXBvcnRsaWIubWFjaGluZXJ5YCB0byBpbmZlciB0aGUgc2FtZSBpbmZvcm1hdGlvbi4KKwogCiAuLiBmdW5jdGlvbjo6IGdldG1vZHVsZW5hbWUocGF0aCkKIAogICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgbmFtZWQgYnkgdGhlIGZpbGUgKnBhdGgqLCB3aXRob3V0IGluY2x1ZGluZyB0aGUKLSAgIG5hbWVzIG9mIGVuY2xvc2luZyBwYWNrYWdlcy4gIFRoaXMgdXNlcyB0aGUgc2FtZSBhbGdvcml0aG0gYXMgdGhlIGludGVycHJldGVyCi0gICB1c2VzIHdoZW4gc2VhcmNoaW5nIGZvciBtb2R1bGVzLiAgSWYgdGhlIG5hbWUgY2Fubm90IGJlIG1hdGNoZWQgYWNjb3JkaW5nIHRvIHRoZQotICAgaW50ZXJwcmV0ZXIncyBydWxlcywgYGBOb25lYGAgaXMgcmV0dXJuZWQuCisgICBuYW1lcyBvZiBlbmNsb3NpbmcgcGFja2FnZXMuIFRoZSBmaWxlIGV4dGVuc2lvbiBpcyBjaGVja2VkIGFnYWluc3QgYWxsIG9mCisgICB0aGUgZW50cmllcyBpbiA6ZnVuYzpgaW1wb3J0bGliLm1hY2hpbmVyeS5hbGxfc3VmZml4ZXNgLiBJZiBpdCBtYXRjaGVzLAorICAgdGhlIGZpbmFsIHBhdGggY29tcG9uZW50IGlzIHJldHVybmVkIHdpdGggdGhlIGV4dGVuc2lvbiByZW1vdmVkLgorICAgT3RoZXJ3aXNlLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKworICAgTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gKm9ubHkqIHJldHVybnMgYSBtZWFuaW5nZnVsIG5hbWUgZm9yIGFjdHVhbAorICAgUHl0aG9uIG1vZHVsZXMgLSBwYXRocyB0aGF0IHBvdGVudGlhbGx5IHJlZmVyIHRvIFB5dGhvbiBwYWNrYWdlcyB3aWxsCisgICBzdGlsbCByZXR1cm4gYGBOb25lYGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHRoZQorICAgICAgZGVwcmVjYXRlZCA6ZnVuYzpgZ2V0bW9kdWxlaW5mb2AuCiAKIAogLi4gZnVuY3Rpb246OiBpc21vZHVsZShvYmplY3QpCkBAIC0zNTUsMTcgKzM2OCwyNSBAQAogICAgYXJndW1lbnQgbWF5IGJlIGEgbW9kdWxlLCBjbGFzcywgbWV0aG9kLCBmdW5jdGlvbiwgdHJhY2ViYWNrLCBmcmFtZSwgb3IgY29kZQogICAgb2JqZWN0LiAgVGhlIHNvdXJjZSBjb2RlIGlzIHJldHVybmVkIGFzIGEgbGlzdCBvZiB0aGUgbGluZXMgY29ycmVzcG9uZGluZyB0byB0aGUKICAgIG9iamVjdCBhbmQgdGhlIGxpbmUgbnVtYmVyIGluZGljYXRlcyB3aGVyZSBpbiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhlIGZpcnN0Ci0gICBsaW5lIG9mIGNvZGUgd2FzIGZvdW5kLiAgQW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBzb3VyY2UgY29kZSBjYW5ub3QKKyAgIGxpbmUgb2YgY29kZSB3YXMgZm91bmQuICBBbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIHNvdXJjZSBjb2RlIGNhbm5vdAogICAgYmUgcmV0cmlldmVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGluc3RlYWQgb2YgOmV4YzpgSU9FcnJvcmAsIG5vdyBhbiBhbGlhcyBvZiB0aGUKKyAgICAgIGZvcm1lci4KKwogCiAuLiBmdW5jdGlvbjo6IGdldHNvdXJjZShvYmplY3QpCiAKICAgIFJldHVybiB0aGUgdGV4dCBvZiB0aGUgc291cmNlIGNvZGUgZm9yIGFuIG9iamVjdC4gVGhlIGFyZ3VtZW50IG1heSBiZSBhIG1vZHVsZSwKICAgIGNsYXNzLCBtZXRob2QsIGZ1bmN0aW9uLCB0cmFjZWJhY2ssIGZyYW1lLCBvciBjb2RlIG9iamVjdC4gIFRoZSBzb3VyY2UgY29kZSBpcwotICAgcmV0dXJuZWQgYXMgYSBzaW5nbGUgc3RyaW5nLiAgQW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBzb3VyY2UgY29kZQorICAgcmV0dXJuZWQgYXMgYSBzaW5nbGUgc3RyaW5nLiAgQW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBzb3VyY2UgY29kZQogICAgY2Fubm90IGJlIHJldHJpZXZlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YElPRXJyb3JgLCBub3cgYW4gYWxpYXMgb2YgdGhlCisgICAgICBmb3JtZXIuCisKIAogLi4gZnVuY3Rpb246OiBjbGVhbmRvYyhkb2MpCiAKQEAgLTM3NCw2ICszOTUsMjY0IEBACiAgICBvbndhcmRzIGlzIHJlbW92ZWQuICBBbHNvLCBhbGwgdGFicyBhcmUgZXhwYW5kZWQgdG8gc3BhY2VzLgogCiAKKy4uIF9pbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q6CisKK0ludHJvc3BlY3RpbmcgY2FsbGFibGVzIHdpdGggdGhlIFNpZ25hdHVyZSBvYmplY3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSBTaWduYXR1cmUgb2JqZWN0IHJlcHJlc2VudHMgdGhlIGNhbGwgc2lnbmF0dXJlIG9mIGEgY2FsbGFibGUgb2JqZWN0IGFuZCBpdHMKK3JldHVybiBhbm5vdGF0aW9uLiAgVG8gcmV0cmlldmUgYSBTaWduYXR1cmUgb2JqZWN0LCB1c2UgdGhlIDpmdW5jOmBzaWduYXR1cmVgCitmdW5jdGlvbi4KKworLi4gZnVuY3Rpb246OiBzaWduYXR1cmUoY2FsbGFibGUpCisKKyAgIFJldHVybiBhIDpjbGFzczpgU2lnbmF0dXJlYCBvYmplY3QgZm9yIHRoZSBnaXZlbiBgYGNhbGxhYmxlYGA6OgorCisgICAgICA+Pj4gZnJvbSBpbnNwZWN0IGltcG9ydCBzaWduYXR1cmUKKyAgICAgID4+PiBkZWYgZm9vKGEsICosIGI6aW50LCAqKmt3YXJncyk6CisgICAgICAuLi4gICAgIHBhc3MKKworICAgICAgPj4+IHNpZyA9IHNpZ25hdHVyZShmb28pCisKKyAgICAgID4+PiBzdHIoc2lnKQorICAgICAgJyhhLCAqLCBiOmludCwgKiprd2FyZ3MpJworCisgICAgICA+Pj4gc3RyKHNpZy5wYXJhbWV0ZXJzWydiJ10pCisgICAgICAnYjppbnQnCisKKyAgICAgID4+PiBzaWcucGFyYW1ldGVyc1snYiddLmFubm90YXRpb24KKyAgICAgIDxjbGFzcyAnaW50Jz4KKworICAgQWNjZXB0cyBhIHdpZGUgcmFuZ2Ugb2YgcHl0aG9uIGNhbGxhYmxlcywgZnJvbSBwbGFpbiBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgdG8KKyAgIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAgb2JqZWN0cy4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFNvbWUgY2FsbGFibGVzIG1heSBub3QgYmUgaW50cm9zcGVjdGFibGUgaW4gY2VydGFpbiBpbXBsZW1lbnRhdGlvbnMgb2YKKyAgICAgIFB5dGhvbi4gIEZvciBleGFtcGxlLCBpbiBDUHl0aG9uLCBidWlsdC1pbiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBDIHByb3ZpZGUKKyAgICAgIG5vIG1ldGFkYXRhIGFib3V0IHRoZWlyIGFyZ3VtZW50cy4KKworCisuLiBjbGFzczo6IFNpZ25hdHVyZQorCisgICBBIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgY2FsbCBzaWduYXR1cmUgb2YgYSBmdW5jdGlvbiBhbmQgaXRzIHJldHVybgorICAgYW5ub3RhdGlvbi4gIEZvciBlYWNoIHBhcmFtZXRlciBhY2NlcHRlZCBieSB0aGUgZnVuY3Rpb24gaXQgc3RvcmVzIGEKKyAgIDpjbGFzczpgUGFyYW1ldGVyYCBvYmplY3QgaW4gaXRzIDphdHRyOmBwYXJhbWV0ZXJzYCBjb2xsZWN0aW9uLgorCisgICBTaWduYXR1cmUgb2JqZWN0cyBhcmUgKmltbXV0YWJsZSouICBVc2UgOm1ldGg6YFNpZ25hdHVyZS5yZXBsYWNlYCB0byBtYWtlIGEKKyAgIG1vZGlmaWVkIGNvcHkuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFNpZ25hdHVyZS5lbXB0eQorCisgICAgICBBIHNwZWNpYWwgY2xhc3MtbGV2ZWwgbWFya2VyIHRvIHNwZWNpZnkgYWJzZW5jZSBvZiBhIHJldHVybiBhbm5vdGF0aW9uLgorCisgICAuLiBhdHRyaWJ1dGU6OiBTaWduYXR1cmUucGFyYW1ldGVycworCisgICAgICBBbiBvcmRlcmVkIG1hcHBpbmcgb2YgcGFyYW1ldGVycycgbmFtZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgIDpjbGFzczpgUGFyYW1ldGVyYCBvYmplY3RzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBTaWduYXR1cmUucmV0dXJuX2Fubm90YXRpb24KKworICAgICAgVGhlICJyZXR1cm4iIGFubm90YXRpb24gZm9yIHRoZSBjYWxsYWJsZS4gIElmIHRoZSBjYWxsYWJsZSBoYXMgbm8gInJldHVybiIKKyAgICAgIGFubm90YXRpb24sIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byA6YXR0cjpgU2lnbmF0dXJlLmVtcHR5YC4KKworICAgLi4gbWV0aG9kOjogU2lnbmF0dXJlLmJpbmQoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICBDcmVhdGUgYSBtYXBwaW5nIGZyb20gcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMgdG8gcGFyYW1ldGVycy4KKyAgICAgIFJldHVybnMgOmNsYXNzOmBCb3VuZEFyZ3VtZW50c2AgaWYgYGAqYXJnc2BgIGFuZCBgYCoqa3dhcmdzYGAgbWF0Y2ggdGhlCisgICAgICBzaWduYXR1cmUsIG9yIHJhaXNlcyBhIDpleGM6YFR5cGVFcnJvcmAuCisKKyAgIC4uIG1ldGhvZDo6IFNpZ25hdHVyZS5iaW5kX3BhcnRpYWwoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICBXb3JrcyB0aGUgc2FtZSB3YXkgYXMgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCwgYnV0IGFsbG93cyB0aGUgb21pc3Npb24gb2YKKyAgICAgIHNvbWUgcmVxdWlyZWQgYXJndW1lbnRzIChtaW1pY3MgOmZ1bmM6YGZ1bmN0b29scy5wYXJ0aWFsYCBiZWhhdmlvci4pCisgICAgICBSZXR1cm5zIDpjbGFzczpgQm91bmRBcmd1bWVudHNgLCBvciByYWlzZXMgYSA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZQorICAgICAgcGFzc2VkIGFyZ3VtZW50cyBkbyBub3QgbWF0Y2ggdGhlIHNpZ25hdHVyZS4KKworICAgLi4gbWV0aG9kOjogU2lnbmF0dXJlLnJlcGxhY2UoW3BhcmFtZXRlcnNdLCAqLCBbcmV0dXJuX2Fubm90YXRpb25dKQorCisgICAgICBDcmVhdGUgYSBuZXcgU2lnbmF0dXJlIGluc3RhbmNlIGJhc2VkIG9uIHRoZSBpbnN0YW5jZSByZXBsYWNlIHdhcyBpbnZva2VkCisgICAgICBvbi4gIEl0IGlzIHBvc3NpYmxlIHRvIHBhc3MgZGlmZmVyZW50IGBgcGFyYW1ldGVyc2BgIGFuZC9vcgorICAgICAgYGByZXR1cm5fYW5ub3RhdGlvbmBgIHRvIG92ZXJyaWRlIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgb2YgdGhlIGJhc2UKKyAgICAgIHNpZ25hdHVyZS4gIFRvIHJlbW92ZSByZXR1cm5fYW5ub3RhdGlvbiBmcm9tIHRoZSBjb3BpZWQgU2lnbmF0dXJlLCBwYXNzIGluCisgICAgICA6YXR0cjpgU2lnbmF0dXJlLmVtcHR5YC4KKworICAgICAgOjoKKworICAgICAgICAgPj4+IGRlZiB0ZXN0KGEsIGIpOgorICAgICAgICAgLi4uICAgICBwYXNzCisgICAgICAgICA+Pj4gc2lnID0gc2lnbmF0dXJlKHRlc3QpCisgICAgICAgICA+Pj4gbmV3X3NpZyA9IHNpZy5yZXBsYWNlKHJldHVybl9hbm5vdGF0aW9uPSJuZXcgcmV0dXJuIGFubm8iKQorICAgICAgICAgPj4+IHN0cihuZXdfc2lnKQorICAgICAgICAgIihhLCBiKSAtPiAnbmV3IHJldHVybiBhbm5vJyIKKworCisuLiBjbGFzczo6IFBhcmFtZXRlcgorCisgICBQYXJhbWV0ZXIgb2JqZWN0cyBhcmUgKmltbXV0YWJsZSouICBJbnN0ZWFkIG9mIG1vZGlmeWluZyBhIFBhcmFtZXRlciBvYmplY3QsCisgICB5b3UgY2FuIHVzZSA6bWV0aDpgUGFyYW1ldGVyLnJlcGxhY2VgIHRvIGNyZWF0ZSBhIG1vZGlmaWVkIGNvcHkuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5lbXB0eQorCisgICAgICBBIHNwZWNpYWwgY2xhc3MtbGV2ZWwgbWFya2VyIHRvIHNwZWNpZnkgYWJzZW5jZSBvZiBkZWZhdWx0IHZhbHVlcyBhbmQKKyAgICAgIGFubm90YXRpb25zLgorCisgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIubmFtZQorCisgICAgICBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIGFzIGEgc3RyaW5nLiAgTXVzdCBiZSBhIHZhbGlkIHB5dGhvbiBpZGVudGlmaWVyCisgICAgICBuYW1lICh3aXRoIHRoZSBleGNlcHRpb24gb2YgYGBQT1NJVElPTkFMX09OTFlgYCBwYXJhbWV0ZXJzLCB3aGljaCBjYW4gaGF2ZQorICAgICAgaXQgc2V0IHRvIGBgTm9uZWBgKS4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLmRlZmF1bHQKKworICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIuICBJZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBkZWZhdWx0CisgICAgICB2YWx1ZSwgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIDphdHRyOmBQYXJhbWV0ZXIuZW1wdHlgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuYW5ub3RhdGlvbgorCisgICAgICBUaGUgYW5ub3RhdGlvbiBmb3IgdGhlIHBhcmFtZXRlci4gIElmIHRoZSBwYXJhbWV0ZXIgaGFzIG5vIGFubm90YXRpb24sCisgICAgICB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gOmF0dHI6YFBhcmFtZXRlci5lbXB0eWAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5raW5kCisKKyAgICAgIERlc2NyaWJlcyBob3cgYXJndW1lbnQgdmFsdWVzIGFyZSBib3VuZCB0byB0aGUgcGFyYW1ldGVyLiAgUG9zc2libGUgdmFsdWVzCisgICAgICAoYWNjZXNzaWJsZSB2aWEgOmNsYXNzOmBQYXJhbWV0ZXJgLCBsaWtlIGBgUGFyYW1ldGVyLktFWVdPUkRfT05MWWBgKToKKworICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgfCAgICBOYW1lICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICAgICAgfCAqUE9TSVRJT05BTF9PTkxZKiAgICAgIHwgVmFsdWUgbXVzdCBiZSBzdXBwbGllZCBhcyBhIHBvc2l0aW9uYWwgICAgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIGhhcyBubyBleHBsaWNpdCBzeW50YXggZm9yIGRlZmluaW5nICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMsIGJ1dCBtYW55IGJ1aWx0LWlufAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5kIGV4dGVuc2lvbiBtb2R1bGUgZnVuY3Rpb25zIChlc3BlY2lhbGx5ICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhvc2UgdGhhdCBhY2NlcHQgb25seSBvbmUgb3IgdHdvIHBhcmFtZXRlcnMpfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYWNjZXB0IHRoZW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgfCAqUE9TSVRJT05BTF9PUl9LRVlXT1JEKnwgVmFsdWUgbWF5IGJlIHN1cHBsaWVkIGFzIGVpdGhlciBhIGtleXdvcmQgb3IgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgcG9zaXRpb25hbCBhcmd1bWVudCAodGhpcyBpcyB0aGUgc3RhbmRhcmQgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYmluZGluZyBiZWhhdmlvdXIgZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgaW4gUHl0aG9uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgfCAqVkFSX1BPU0lUSU9OQUwqICAgICAgIHwgQSB0dXBsZSBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGFyZW4ndCAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYm91bmQgdG8gYW55IG90aGVyIHBhcmFtZXRlci4gVGhpcyAgICAgICAgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgY29ycmVzcG9uZHMgdG8gYSBgYCphcmdzYGAgcGFyYW1ldGVyIGluIGEgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIGZ1bmN0aW9uIGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAgfAorICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgfCAqS0VZV09SRF9PTkxZKiAgICAgICAgIHwgVmFsdWUgbXVzdCBiZSBzdXBwbGllZCBhcyBhIGtleXdvcmQgYXJndW1lbnQufAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgS2V5d29yZCBvbmx5IHBhcmFtZXRlcnMgYXJlIHRob3NlIHdoaWNoICAgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYXBwZWFyIGFmdGVyIGEgYGAqYGAgb3IgYGAqYXJnc2BgIGVudHJ5IGluIGEgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIGZ1bmN0aW9uIGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAgfAorICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgfCAqVkFSX0tFWVdPUkQqICAgICAgICAgIHwgQSBkaWN0IG9mIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlbid0IGJvdW5kfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgdG8gYW55IG90aGVyIHBhcmFtZXRlci4gVGhpcyBjb3JyZXNwb25kcyB0byBhfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAqKmt3YXJnc2BgIHBhcmFtZXRlciBpbiBhIFB5dGhvbiBmdW5jdGlvbiAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVmaW5pdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgICBFeGFtcGxlOiBwcmludCBhbGwga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3aXRob3V0IGRlZmF1bHQgdmFsdWVzOjoKKworICAgICAgICAgPj4+IGRlZiBmb28oYSwgYiwgKiwgYywgZD0xMCk6CisgICAgICAgICAuLi4gICAgIHBhc3MKKworICAgICAgICAgPj4+IHNpZyA9IHNpZ25hdHVyZShmb28pCisgICAgICAgICA+Pj4gZm9yIHBhcmFtIGluIHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpOgorICAgICAgICAgLi4uICAgICBpZiAocGFyYW0ua2luZCA9PSBwYXJhbS5LRVlXT1JEX09OTFkgYW5kCisgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZhdWx0IGlzIHBhcmFtLmVtcHR5KToKKyAgICAgICAgIC4uLiAgICAgICAgIHByaW50KCdQYXJhbWV0ZXI6JywgcGFyYW0pCisgICAgICAgICBQYXJhbWV0ZXI6IGMKKworICAgLi4gbWV0aG9kOjogUGFyYW1ldGVyLnJlcGxhY2UoKiwgW25hbWVdLCBba2luZF0sIFtkZWZhdWx0XSwgW2Fubm90YXRpb25dKQorCisgICAgICBDcmVhdGUgYSBuZXcgUGFyYW1ldGVyIGluc3RhbmNlIGJhc2VkIG9uIHRoZSBpbnN0YW5jZSByZXBsYWNlZCB3YXMgaW52b2tlZAorICAgICAgb24uICBUbyBvdmVycmlkZSBhIDpjbGFzczpgUGFyYW1ldGVyYCBhdHRyaWJ1dGUsIHBhc3MgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgIGFyZ3VtZW50LiAgVG8gcmVtb3ZlIGEgZGVmYXVsdCB2YWx1ZSBvci9hbmQgYW4gYW5ub3RhdGlvbiBmcm9tIGEKKyAgICAgIFBhcmFtZXRlciwgcGFzcyA6YXR0cjpgUGFyYW1ldGVyLmVtcHR5YC4KKworICAgICAgOjoKKworICAgICAgICAgPj4+IGZyb20gaW5zcGVjdCBpbXBvcnQgUGFyYW1ldGVyCisgICAgICAgICA+Pj4gcGFyYW0gPSBQYXJhbWV0ZXIoJ2ZvbycsIFBhcmFtZXRlci5LRVlXT1JEX09OTFksIGRlZmF1bHQ9NDIpCisgICAgICAgICA+Pj4gc3RyKHBhcmFtKQorICAgICAgICAgJ2Zvbz00MicKKworICAgICAgICAgPj4+IHN0cihwYXJhbS5yZXBsYWNlKCkpICMgV2lsbCBjcmVhdGUgYSBzaGFsbG93IGNvcHkgb2YgJ3BhcmFtJworICAgICAgICAgJ2Zvbz00MicKKworICAgICAgICAgPj4+IHN0cihwYXJhbS5yZXBsYWNlKGRlZmF1bHQ9UGFyYW1ldGVyLmVtcHR5LCBhbm5vdGF0aW9uPSdzcGFtJykpCisgICAgICAgICAiZm9vOidzcGFtJyIKKworCisuLiBjbGFzczo6IEJvdW5kQXJndW1lbnRzCisKKyAgIFJlc3VsdCBvZiBhIDptZXRoOmBTaWduYXR1cmUuYmluZGAgb3IgOm1ldGg6YFNpZ25hdHVyZS5iaW5kX3BhcnRpYWxgIGNhbGwuCisgICBIb2xkcyB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uJ3MgcGFyYW1ldGVycy4KKworICAgLi4gYXR0cmlidXRlOjogQm91bmRBcmd1bWVudHMuYXJndW1lbnRzCisKKyAgICAgIEFuIG9yZGVyZWQsIG11dGFibGUgbWFwcGluZyAoOmNsYXNzOmBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGApIG9mCisgICAgICBwYXJhbWV0ZXJzJyBuYW1lcyB0byBhcmd1bWVudHMnIHZhbHVlcy4gIENvbnRhaW5zIG9ubHkgZXhwbGljaXRseSBib3VuZAorICAgICAgYXJndW1lbnRzLiAgQ2hhbmdlcyBpbiA6YXR0cjpgYXJndW1lbnRzYCB3aWxsIHJlZmxlY3QgaW4gOmF0dHI6YGFyZ3NgIGFuZAorICAgICAgOmF0dHI6YGt3YXJnc2AuCisKKyAgICAgIFNob3VsZCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggOmF0dHI6YFNpZ25hdHVyZS5wYXJhbWV0ZXJzYCBmb3IgYW55CisgICAgICBhcmd1bWVudCBwcm9jZXNzaW5nIHB1cnBvc2VzLgorCisgICAgICAuLiBub3RlOjoKKworICAgICAgICAgQXJndW1lbnRzIGZvciB3aGljaCA6bWV0aDpgU2lnbmF0dXJlLmJpbmRgIG9yCisgICAgICAgICA6bWV0aDpgU2lnbmF0dXJlLmJpbmRfcGFydGlhbGAgcmVsaWVkIG9uIGEgZGVmYXVsdCB2YWx1ZSBhcmUgc2tpcHBlZC4KKyAgICAgICAgIEhvd2V2ZXIsIGlmIG5lZWRlZCwgaXQgaXMgZWFzeSB0byBpbmNsdWRlIHRoZW0uCisKKyAgICAgIDo6CisKKyAgICAgICAgPj4+IGRlZiBmb28oYSwgYj0xMCk6CisgICAgICAgIC4uLiAgICAgcGFzcworCisgICAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQorICAgICAgICA+Pj4gYmEgPSBzaWcuYmluZCg1KQorCisgICAgICAgID4+PiBiYS5hcmdzLCBiYS5rd2FyZ3MKKyAgICAgICAgKCg1LCksIHt9KQorCisgICAgICAgID4+PiBmb3IgcGFyYW0gaW4gc2lnLnBhcmFtZXRlcnMudmFsdWVzKCk6CisgICAgICAgIC4uLiAgICAgaWYgcGFyYW0ubmFtZSBub3QgaW4gYmEuYXJndW1lbnRzOgorICAgICAgICAuLi4gICAgICAgICBiYS5hcmd1bWVudHNbcGFyYW0ubmFtZV0gPSBwYXJhbS5kZWZhdWx0CisKKyAgICAgICAgPj4+IGJhLmFyZ3MsIGJhLmt3YXJncworICAgICAgICAoKDUsIDEwKSwge30pCisKKworICAgLi4gYXR0cmlidXRlOjogQm91bmRBcmd1bWVudHMuYXJncworCisgICAgICBBIHR1cGxlIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIHZhbHVlcy4gIER5bmFtaWNhbGx5IGNvbXB1dGVkIGZyb20gdGhlCisgICAgICA6YXR0cjpgYXJndW1lbnRzYCBhdHRyaWJ1dGUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IEJvdW5kQXJndW1lbnRzLmt3YXJncworCisgICAgICBBIGRpY3Qgb2Yga2V5d29yZCBhcmd1bWVudHMgdmFsdWVzLiAgRHluYW1pY2FsbHkgY29tcHV0ZWQgZnJvbSB0aGUKKyAgICAgIDphdHRyOmBhcmd1bWVudHNgIGF0dHJpYnV0ZS4KKworICAgVGhlIDphdHRyOmBhcmdzYCBhbmQgOmF0dHI6YGt3YXJnc2AgcHJvcGVydGllcyBjYW4gYmUgdXNlZCB0byBpbnZva2UKKyAgIGZ1bmN0aW9uczo6CisKKyAgICAgIGRlZiB0ZXN0KGEsICosIGIpOgorICAgICAgICAgLi4uCisKKyAgICAgIHNpZyA9IHNpZ25hdHVyZSh0ZXN0KQorICAgICAgYmEgPSBzaWcuYmluZCgxMCwgYj0yMCkKKyAgICAgIHRlc3QoKmJhLmFyZ3MsICoqYmEua3dhcmdzKQorCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzNjJgIC0gRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdC4KKyAgICAgIFRoZSBkZXRhaWxlZCBzcGVjaWZpY2F0aW9uLCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBleGFtcGxlcy4KKworCiAuLiBfaW5zcGVjdC1jbGFzc2VzLWZ1bmN0aW9uczoKIAogQ2xhc3NlcyBhbmQgZnVuY3Rpb25zCkBAIC00MjIsNiArNzAxLDEwIEBACiAKICAgIFRoZSBmaXJzdCBmb3VyIGl0ZW1zIGluIHRoZSB0dXBsZSBjb3JyZXNwb25kIHRvIDpmdW5jOmBnZXRhcmdzcGVjYC4KIAorICAgLi4gbm90ZTo6CisgICAgICBDb25zaWRlciB1c2luZyB0aGUgbmV3IDpyZWY6YFNpZ25hdHVyZSBPYmplY3QgPGluc3BlY3Qtc2lnbmF0dXJlLW9iamVjdD5gCisgICAgICBpbnRlcmZhY2UsIHdoaWNoIHByb3ZpZGVzIGEgYmV0dGVyIHdheSBvZiBpbnRyb3NwZWN0aW5nIGZ1bmN0aW9ucy4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGFyZ3ZhbHVlcyhmcmFtZSkKIApAQCAtNDMyLDExICs3MTUsMTYgQEAKICAgIGxvY2FscyBkaWN0aW9uYXJ5IG9mIHRoZSBnaXZlbiBmcmFtZS4KIAogCi0uLiBmdW5jdGlvbjo6IGZvcm1hdGFyZ3NwZWMoYXJnc1ssIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywgZm9ybWF0YXJnLCBmb3JtYXR2YXJhcmdzLCBmb3JtYXR2YXJrdywgZm9ybWF0dmFsdWVdKQorLi4gZnVuY3Rpb246OiBmb3JtYXRhcmdzcGVjKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm5vdGF0aW9ucywgZm9ybWF0YXJnLCBmb3JtYXR2YXJhcmdzLCBmb3JtYXR2YXJrdywgZm9ybWF0dmFsdWUsIGZvcm1hdHJldHVybnMsIGZvcm1hdGFubm90YXRpb25zXSkKIAotICAgRm9ybWF0IGEgcHJldHR5IGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgZm91ciB2YWx1ZXMgcmV0dXJuZWQgYnkKLSAgIDpmdW5jOmBnZXRhcmdzcGVjYC4gIFRoZSBmb3JtYXRcKiBhcmd1bWVudHMgYXJlIHRoZSBjb3JyZXNwb25kaW5nIG9wdGlvbmFsCi0gICBmb3JtYXR0aW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdG8gdHVybiBuYW1lcyBhbmQgdmFsdWVzIGludG8gc3RyaW5ncy4KKyAgIEZvcm1hdCBhIHByZXR0eSBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YGdldGFyZ3NwZWNgIG9yIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AuCisKKyAgIFRoZSBmaXJzdCBzZXZlbiBhcmd1bWVudHMgYXJlIChgYGFyZ3NgYCwgYGB2YXJhcmdzYGAsIGBgdmFya3dgYCwKKyAgIGBgZGVmYXVsdHNgYCwgYGBrd29ubHlhcmdzYGAsIGBga3dvbmx5ZGVmYXVsdHNgYCwgYGBhbm5vdGF0aW9uc2BgKS4gVGhlCisgICBvdGhlciBmaXZlIGFyZ3VtZW50cyBhcmUgdGhlIGNvcnJlc3BvbmRpbmcgb3B0aW9uYWwgZm9ybWF0dGluZyBmdW5jdGlvbnMKKyAgIHRoYXQgYXJlIGNhbGxlZCB0byB0dXJuIG5hbWVzIGFuZCB2YWx1ZXMgaW50byBzdHJpbmdzLiBUaGUgbGFzdCBhcmd1bWVudAorICAgaXMgYW4gb3B0aW9uYWwgZnVuY3Rpb24gdG8gZm9ybWF0IHRoZSBzZXF1ZW5jZSBvZiBhcmd1bWVudHMuCiAKIAogLi4gZnVuY3Rpb246OiBmb3JtYXRhcmd2YWx1ZXMoYXJnc1ssIHZhcmFyZ3MsIHZhcmt3LCBsb2NhbHMsIGZvcm1hdGFyZywgZm9ybWF0dmFyYXJncywgZm9ybWF0dmFya3csIGZvcm1hdHZhbHVlXSkKQEAgLTQ2OCwxNyArNzU2LDM2IEBACiAgICAgPj4+IGZyb20gaW5zcGVjdCBpbXBvcnQgZ2V0Y2FsbGFyZ3MKICAgICA+Pj4gZGVmIGYoYSwgYj0xLCAqcG9zLCAqKm5hbWVkKToKICAgICAuLi4gICAgIHBhc3MKLSAgICA+Pj4gZ2V0Y2FsbGFyZ3MoZiwgMSwgMiwgMykKLSAgICB7J2EnOiAxLCAnbmFtZWQnOiB7fSwgJ2InOiAyLCAncG9zJzogKDMsKX0KLSAgICA+Pj4gZ2V0Y2FsbGFyZ3MoZiwgYT0yLCB4PTQpCi0gICAgeydhJzogMiwgJ25hbWVkJzogeyd4JzogNH0sICdiJzogMSwgJ3Bvcyc6ICgpfQorICAgID4+PiBnZXRjYWxsYXJncyhmLCAxLCAyLCAzKSA9PSB7J2EnOiAxLCAnbmFtZWQnOiB7fSwgJ2InOiAyLCAncG9zJzogKDMsKX0KKyAgICBUcnVlCisgICAgPj4+IGdldGNhbGxhcmdzKGYsIGE9MiwgeD00KSA9PSB7J2EnOiAyLCAnbmFtZWQnOiB7J3gnOiA0fSwgJ2InOiAxLCAncG9zJzogKCl9CisgICAgVHJ1ZQogICAgID4+PiBnZXRjYWxsYXJncyhmKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKQorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAnYScKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIG5vdGU6OgorICAgICAgQ29uc2lkZXIgdXNpbmcgdGhlIG5ldyA6bWV0aDpgU2lnbmF0dXJlLmJpbmRgIGluc3RlYWQuCisKKworLi4gZnVuY3Rpb246OiBnZXRjbG9zdXJldmFycyhmdW5jKQorCisgICBHZXQgdGhlIG1hcHBpbmcgb2YgZXh0ZXJuYWwgbmFtZSByZWZlcmVuY2VzIGluIGEgUHl0aG9uIGZ1bmN0aW9uIG9yCisgICBtZXRob2QgKmZ1bmMqIHRvIHRoZWlyIGN1cnJlbnQgdmFsdWVzLiBBCisgICA6dGVybTpgbmFtZWQgdHVwbGVgIGBgQ2xvc3VyZVZhcnMobm9ubG9jYWxzLCBnbG9iYWxzLCBidWlsdGlucywgdW5ib3VuZClgYAorICAgaXMgcmV0dXJuZWQuICpub25sb2NhbHMqIG1hcHMgcmVmZXJlbmNlZCBuYW1lcyB0byBsZXhpY2FsIGNsb3N1cmUKKyAgIHZhcmlhYmxlcywgKmdsb2JhbHMqIHRvIHRoZSBmdW5jdGlvbidzIG1vZHVsZSBnbG9iYWxzIGFuZCAqYnVpbHRpbnMqIHRvCisgICB0aGUgYnVpbHRpbnMgdmlzaWJsZSBmcm9tIHRoZSBmdW5jdGlvbiBib2R5LiAqdW5ib3VuZCogaXMgdGhlIHNldCBvZiBuYW1lcworICAgcmVmZXJlbmNlZCBpbiB0aGUgZnVuY3Rpb24gdGhhdCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgYXQgYWxsIGdpdmVuIHRoZQorICAgY3VycmVudCBtb2R1bGUgZ2xvYmFscyBhbmQgYnVpbHRpbnMuCisKKyAgIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkIGlmICpmdW5jKiBpcyBub3QgYSBQeXRob24gZnVuY3Rpb24gb3IgbWV0aG9kLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAuLiBfaW5zcGVjdC1zdGFjazoKIApAQCAtNjQzLDMgKzk1MCwyNyBAQAogICAgICogR0VOX0NMT1NFRDogRXhlY3V0aW9uIGhhcyBjb21wbGV0ZWQuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorCitUaGUgY3VycmVudCBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgZ2VuZXJhdG9yIGNhbiBhbHNvIGJlIHF1ZXJpZWQuIFRoaXMgaXMKK21vc3RseSB1c2VmdWwgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHRvIGVuc3VyZSB0aGF0IGludGVybmFsIHN0YXRlIGlzIGJlaW5nCit1cGRhdGVkIGFzIGV4cGVjdGVkOgorCisuLiBmdW5jdGlvbjo6IGdldGdlbmVyYXRvcmxvY2FscyhnZW5lcmF0b3IpCisKKyAgIEdldCB0aGUgbWFwcGluZyBvZiBsaXZlIGxvY2FsIHZhcmlhYmxlcyBpbiAqZ2VuZXJhdG9yKiB0byB0aGVpciBjdXJyZW50CisgICB2YWx1ZXMuICBBIGRpY3Rpb25hcnkgaXMgcmV0dXJuZWQgdGhhdCBtYXBzIGZyb20gdmFyaWFibGUgbmFtZXMgdG8gdmFsdWVzLgorICAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBjYWxsaW5nIDpmdW5jOmBsb2NhbHNgIGluIHRoZSBib2R5IG9mIHRoZQorICAgZ2VuZXJhdG9yLCBhbmQgYWxsIHRoZSBzYW1lIGNhdmVhdHMgYXBwbHkuCisKKyAgIElmICpnZW5lcmF0b3IqIGlzIGEgOnRlcm06YGdlbmVyYXRvcmAgd2l0aCBubyBjdXJyZW50bHkgYXNzb2NpYXRlZCBmcmFtZSwKKyAgIHRoZW4gYW4gZW1wdHkgZGljdGlvbmFyeSBpcyByZXR1cm5lZC4gIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkIGlmCisgICAqZ2VuZXJhdG9yKiBpcyBub3QgYSBQeXRob24gZ2VuZXJhdG9yIG9iamVjdC4KKworICAgLi4gaW1wbC1kZXRhaWw6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIHJlbGllcyBvbiB0aGUgZ2VuZXJhdG9yIGV4cG9zaW5nIGEgUHl0aG9uIHN0YWNrIGZyYW1lCisgICAgICBmb3IgaW50cm9zcGVjdGlvbiwgd2hpY2ggaXNuJ3QgZ3VhcmFudGVlZCB0byBiZSB0aGUgY2FzZSBpbiBhbGwKKyAgICAgIGltcGxlbWVudGF0aW9ucyBvZiBQeXRob24uIEluIHN1Y2ggY2FzZXMsIHRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMKKyAgICAgIHJldHVybiBhbiBlbXB0eSBkaWN0aW9uYXJ5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ludGVybmV0LnJzdCBiL0RvYy9saWJyYXJ5L2ludGVybmV0LnJzdAppbmRleCA2ZmE3ODczLi5jZTkxZGRlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbnRlcm5ldC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW50ZXJuZXQucnN0CkBAIC00MiwzICs0Miw0IEBACiAgICBodHRwLmNvb2tpZWphci5yc3QKICAgIHhtbHJwYy5jbGllbnQucnN0CiAgICB4bWxycGMuc2VydmVyLnJzdAorICAgaXBhZGRyZXNzLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW8ucnN0IGIvRG9jL2xpYnJhcnkvaW8ucnN0CmluZGV4IDYyZWFmNmQuLmU4M2U1NWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2lvLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pby5yc3QKQEAgLTM3LDYgKzM3LDEwIEBACiB3aWxsIHJhaXNlIGEgYGBUeXBlRXJyb3JgYC4gIFNvIHdpbGwgZ2l2aW5nIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IHRvIHRoZQogYGB3cml0ZSgpYGAgbWV0aG9kIG9mIGEgdGV4dCBzdHJlYW0uCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBPcGVyYXRpb25zIHRoYXQgdXNlZCB0byByYWlzZSA6ZXhjOmBJT0Vycm9yYCBub3cgcmFpc2UgOmV4YzpgT1NFcnJvcmAsIHNpbmNlCisgICA6ZXhjOmBJT0Vycm9yYCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogVGV4dCBJL08KIF5eXl5eXl5eCkBAIC01NSw3ICs1OSw3IEBACiAKICAgIGYgPSBpby5TdHJpbmdJTygic29tZSBpbml0aWFsIHRleHQgZGF0YSIpCiAKLVRoZSB0ZXh0IHN0cmVhbSBBUEkgaXMgZGVzY3JpYmVkIGluIGRldGFpbCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlCitUaGUgdGV4dCBzdHJlYW0gQVBJIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YKIDpjbGFzczpgVGV4dElPQmFzZWAuCiAKIApAQCAtMTEzLDIxICsxMTcsMTMgQEAKIAogLi4gZXhjZXB0aW9uOjogQmxvY2tpbmdJT0Vycm9yCiAKLSAgIEVycm9yIHJhaXNlZCB3aGVuIGJsb2NraW5nIHdvdWxkIG9jY3VyIG9uIGEgbm9uLWJsb2NraW5nIHN0cmVhbS4gIEl0IGluaGVyaXRzCi0gICA6ZXhjOmBJT0Vycm9yYC4KLQotICAgSW4gYWRkaXRpb24gdG8gdGhvc2Ugb2YgOmV4YzpgSU9FcnJvcmAsIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaGFzIG9uZQotICAgYXR0cmlidXRlOgotCi0gICAuLiBhdHRyaWJ1dGU6OiBjaGFyYWN0ZXJzX3dyaXR0ZW4KLQotICAgICAgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuIHRvIHRoZSBzdHJlYW0KLSAgICAgIGJlZm9yZSBpdCBibG9ja2VkLgorICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgYWxpYXMgZm9yIHRoZSBidWlsdGluIDpleGM6YEJsb2NraW5nSU9FcnJvcmAKKyAgIGV4Y2VwdGlvbi4KIAogCiAuLiBleGNlcHRpb246OiBVbnN1cHBvcnRlZE9wZXJhdGlvbgogCi0gICBBbiBleGNlcHRpb24gaW5oZXJpdGluZyA6ZXhjOmBJT0Vycm9yYCBhbmQgOmV4YzpgVmFsdWVFcnJvcmAgdGhhdCBpcyByYWlzZWQKKyAgIEFuIGV4Y2VwdGlvbiBpbmhlcml0aW5nIDpleGM6YE9TRXJyb3JgIGFuZCA6ZXhjOmBWYWx1ZUVycm9yYCB0aGF0IGlzIHJhaXNlZAogICAgd2hlbiBhbiB1bnN1cHBvcnRlZCBvcGVyYXRpb24gaXMgY2FsbGVkIG9uIGEgc3RyZWFtLgogCiAKQEAgLTIwNiw4ICsyMDIsOCBAQAogICAgRXZlbiB0aG91Z2ggOmNsYXNzOmBJT0Jhc2VgIGRvZXMgbm90IGRlY2xhcmUgOm1ldGg6YHJlYWRgLCA6bWV0aDpgcmVhZGludG9gLAogICAgb3IgOm1ldGg6YHdyaXRlYCBiZWNhdXNlIHRoZWlyIHNpZ25hdHVyZXMgd2lsbCB2YXJ5LCBpbXBsZW1lbnRhdGlvbnMgYW5kCiAgICBjbGllbnRzIHNob3VsZCBjb25zaWRlciB0aG9zZSBtZXRob2RzIHBhcnQgb2YgdGhlIGludGVyZmFjZS4gIEFsc28sCi0gICBpbXBsZW1lbnRhdGlvbnMgbWF5IHJhaXNlIGEgOmV4YzpgSU9FcnJvcmAgd2hlbiBvcGVyYXRpb25zIHRoZXkgZG8gbm90Ci0gICBzdXBwb3J0IGFyZSBjYWxsZWQuCisgICBpbXBsZW1lbnRhdGlvbnMgbWF5IHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgKG9yIDpleGM6YFVuc3VwcG9ydGVkT3BlcmF0aW9uYCkKKyAgIHdoZW4gb3BlcmF0aW9ucyB0aGV5IGRvIG5vdCBzdXBwb3J0IGFyZSBjYWxsZWQuCiAKICAgIFRoZSBiYXNpYyB0eXBlIHVzZWQgZm9yIGJpbmFyeSBkYXRhIHJlYWQgZnJvbSBvciB3cml0dGVuIHRvIGEgZmlsZSBpcwogICAgOmNsYXNzOmBieXRlc2AuICA6Y2xhc3M6YGJ5dGVhcnJheWBccyBhcmUgYWNjZXB0ZWQgdG9vLCBhbmQgaW4gc29tZSBjYXNlcwpAQCAtMjE1LDE1ICsyMTEsMTUgQEAKICAgIDpjbGFzczpgc3RyYCBkYXRhLgogCiAgICBOb3RlIHRoYXQgY2FsbGluZyBhbnkgbWV0aG9kIChldmVuIGlucXVpcmllcykgb24gYSBjbG9zZWQgc3RyZWFtIGlzCi0gICB1bmRlZmluZWQuICBJbXBsZW1lbnRhdGlvbnMgbWF5IHJhaXNlIDpleGM6YElPRXJyb3JgIGluIHRoaXMgY2FzZS4KKyAgIHVuZGVmaW5lZC4gIEltcGxlbWVudGF0aW9ucyBtYXkgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAgaW4gdGhpcyBjYXNlLgogCi0gICBJT0Jhc2UgKGFuZCBpdHMgc3ViY2xhc3Nlcykgc3VwcG9ydCB0aGUgaXRlcmF0b3IgcHJvdG9jb2wsIG1lYW5pbmcgdGhhdCBhbgotICAgOmNsYXNzOmBJT0Jhc2VgIG9iamVjdCBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB5aWVsZGluZyB0aGUgbGluZXMgaW4gYSBzdHJlYW0uCi0gICBMaW5lcyBhcmUgZGVmaW5lZCBzbGlnaHRseSBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgc3RyZWFtIGlzCi0gICBhIGJpbmFyeSBzdHJlYW0gKHlpZWxkaW5nIGJ5dGVzKSwgb3IgYSB0ZXh0IHN0cmVhbSAoeWllbGRpbmcgY2hhcmFjdGVyCi0gICBzdHJpbmdzKS4gIFNlZSA6bWV0aDpgfklPQmFzZS5yZWFkbGluZWAgYmVsb3cuCisgICA6Y2xhc3M6YElPQmFzZWAgKGFuZCBpdHMgc3ViY2xhc3Nlcykgc3VwcG9ydCB0aGUgaXRlcmF0b3IgcHJvdG9jb2wsIG1lYW5pbmcKKyAgIHRoYXQgYW4gOmNsYXNzOmBJT0Jhc2VgIG9iamVjdCBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB5aWVsZGluZyB0aGUgbGluZXMgaW4gYQorICAgc3RyZWFtLiAgTGluZXMgYXJlIGRlZmluZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlCisgICBzdHJlYW0gaXMgYSBiaW5hcnkgc3RyZWFtICh5aWVsZGluZyBieXRlcyksIG9yIGEgdGV4dCBzdHJlYW0gKHlpZWxkaW5nCisgICBjaGFyYWN0ZXIgc3RyaW5ncykuICBTZWUgOm1ldGg6YH5JT0Jhc2UucmVhZGxpbmVgIGJlbG93LgogCi0gICBJT0Jhc2UgaXMgYWxzbyBhIGNvbnRleHQgbWFuYWdlciBhbmQgdGhlcmVmb3JlIHN1cHBvcnRzIHRoZQorICAgOmNsYXNzOmBJT0Jhc2VgIGlzIGFsc28gYSBjb250ZXh0IG1hbmFnZXIgYW5kIHRoZXJlZm9yZSBzdXBwb3J0cyB0aGUKICAgIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuICBJbiB0aGlzIGV4YW1wbGUsICpmaWxlKiBpcyBjbG9zZWQgYWZ0ZXIgdGhlCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50J3Mgc3VpdGUgaXMgZmluaXNoZWQtLS1ldmVuIGlmIGFuIGV4Y2VwdGlvbiBvY2N1cnM6OgogCkBAIC0yNDMsMTIgKzIzOSwxMiBAQAogCiAgICAuLiBhdHRyaWJ1dGU6OiBjbG9zZWQKIAotICAgICAgVHJ1ZSBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZC4KKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkLgogCiAgICAuLiBtZXRob2Q6OiBmaWxlbm8oKQogCiAgICAgICBSZXR1cm4gdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIChhbiBpbnRlZ2VyKSBvZiB0aGUgc3RyZWFtIGlmIGl0Ci0gICAgICBleGlzdHMuICBBbiA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIElPIG9iamVjdCBkb2VzIG5vdCB1c2UgYSBmaWxlCisgICAgICBleGlzdHMuICBBbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIElPIG9iamVjdCBkb2VzIG5vdCB1c2UgYSBmaWxlCiAgICAgICBkZXNjcmlwdG9yLgogCiAgICAuLiBtZXRob2Q6OiBmbHVzaCgpCkBAIC0yNjQsNyArMjYwLDcgQEAKICAgIC4uIG1ldGhvZDo6IHJlYWRhYmxlKCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJlYW0gY2FuIGJlIHJlYWQgZnJvbS4gIElmIEZhbHNlLCA6bWV0aDpgcmVhZGAKLSAgICAgIHdpbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCisgICAgICB3aWxsIHJhaXNlIDpleGM6YE9TRXJyb3JgLgogCiAgICAuLiBtZXRob2Q6OiByZWFkbGluZShsaW1pdD0tMSkKIApAQCAtMjk5LDEwICsyOTUsMTUgQEAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogICAgICAgICAgVGhlIGBgU0VFS18qYGAgY29uc3RhbnRzLgogCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgICAgIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgY291bGQgc3VwcG9ydCBhZGRpdGlvbmFsIHZhbHVlcywgbGlrZQorICAgICAgICAgOmRhdGE6YG9zLlNFRUtfSE9MRWAgb3IgOmRhdGE6YG9zLlNFRUtfREFUQWAuIFRoZSB2YWxpZCB2YWx1ZXMKKyAgICAgICAgIGZvciBhIGZpbGUgY291bGQgZGVwZW5kIG9uIGl0IGJlaW5nIG9wZW4gaW4gdGV4dCBvciBiaW5hcnkgbW9kZS4KKwogICAgLi4gbWV0aG9kOjogc2Vla2FibGUoKQogCiAgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHN0cmVhbSBzdXBwb3J0cyByYW5kb20gYWNjZXNzLiAgSWYgYGBGYWxzZWBgLAotICAgICAgOm1ldGg6YHNlZWtgLCA6bWV0aDpgdGVsbGAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgd2lsbCByYWlzZSA6ZXhjOmBJT0Vycm9yYC4KKyAgICAgIDptZXRoOmBzZWVrYCwgOm1ldGg6YHRlbGxgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgT1NFcnJvcmAuCiAKICAgIC4uIG1ldGhvZDo6IHRlbGwoKQogCkBAIC0zMjAsNyArMzIxLDcgQEAKICAgIC4uIG1ldGhvZDo6IHdyaXRhYmxlKCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJlYW0gc3VwcG9ydHMgd3JpdGluZy4gIElmIGBgRmFsc2VgYCwKLSAgICAgIDptZXRoOmB3cml0ZWAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgd2lsbCByYWlzZSA6ZXhjOmBJT0Vycm9yYC4KKyAgICAgIDptZXRoOmB3cml0ZWAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgd2lsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYC4KIAogICAgLi4gbWV0aG9kOjogd3JpdGVsaW5lcyhsaW5lcykKIApAQCAtMzM5LDcgKzM0MCw3IEBACiAgICAodGhpcyBpcyBsZWZ0IHRvIEJ1ZmZlcmVkIEkvTyBhbmQgVGV4dCBJL08sIGRlc2NyaWJlZCBsYXRlciBpbiB0aGlzIHBhZ2UpLgogCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyBmcm9tIDpjbGFzczpgSU9CYXNlYCwKLSAgIFJhd0lPQmFzZSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisgICA6Y2xhc3M6YFJhd0lPQmFzZWAgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogCiAgICAuLiBtZXRob2Q6OiByZWFkKG49LTEpCiAKQEAgLTM1OSwxOCArMzYwLDE4IEBACiAKICAgIC4uIG1ldGhvZDo6IHJlYWRpbnRvKGIpCiAKLSAgICAgIFJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gYnl0ZWFycmF5ICpiKiBhbmQgcmV0dXJuIHRoZSBudW1iZXIKLSAgICAgIG9mIGJ5dGVzIHJlYWQuICBJZiB0aGUgb2JqZWN0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlIGFuZCBubworICAgICAgUmVhZCB1cCB0byBgYGxlbihiKWBgIGJ5dGVzIGludG8gOmNsYXNzOmBieXRlYXJyYXlgICpiKiBhbmQgcmV0dXJuIHRoZQorICAgICAgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBJZiB0aGUgb2JqZWN0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlIGFuZCBubwogICAgICAgYnl0ZXMgYXJlIGF2YWlsYWJsZSwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGIpCiAKLSAgICAgIFdyaXRlIHRoZSBnaXZlbiBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LCAqYiosIHRvIHRoZSB1bmRlcmx5aW5nIHJhdwotICAgICAgc3RyZWFtIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAgVGhpcyBjYW4gYmUgbGVzcyB0aGFuCi0gICAgICBgYGxlbihiKWBgLCBkZXBlbmRpbmcgb24gc3BlY2lmaWNzIG9mIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0sIGFuZAotICAgICAgZXNwZWNpYWxseSBpZiBpdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZS4gIGBgTm9uZWBgIGlzIHJldHVybmVkIGlmIHRoZQotICAgICAgcmF3IHN0cmVhbSBpcyBzZXQgbm90IHRvIGJsb2NrIGFuZCBubyBzaW5nbGUgYnl0ZSBjb3VsZCBiZSByZWFkaWx5Ci0gICAgICB3cml0dGVuIHRvIGl0LgorICAgICAgV3JpdGUgdGhlIGdpdmVuIDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3QsICpiKiwgdG8gdGhlCisgICAgICB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uICBUaGlzIGNhbgorICAgICAgYmUgbGVzcyB0aGFuIGBgbGVuKGIpYGAsIGRlcGVuZGluZyBvbiBzcGVjaWZpY3Mgb2YgdGhlIHVuZGVybHlpbmcgcmF3CisgICAgICBzdHJlYW0sIGFuZCBlc3BlY2lhbGx5IGlmIGl0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlLiAgYGBOb25lYGAgaXMKKyAgICAgIHJldHVybmVkIGlmIHRoZSByYXcgc3RyZWFtIGlzIHNldCBub3QgdG8gYmxvY2sgYW5kIG5vIHNpbmdsZSBieXRlIGNvdWxkCisgICAgICBiZSByZWFkaWx5IHdyaXR0ZW4gdG8gaXQuCiAKIAogLi4gY2xhc3M6OiBCdWZmZXJlZElPQmFzZQpAQCAtNDIwLDggKzQyMSw4IEBACiAgICAuLiBtZXRob2Q6OiByZWFkKG49LTEpCiAKICAgICAgIFJlYWQgYW5kIHJldHVybiB1cCB0byAqbiogYnl0ZXMuICBJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCwgYGBOb25lYGAsIG9yCi0gICAgICBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4gIEFuIGVtcHR5IGJ5dGVzCi0gICAgICBvYmplY3QgaXMgcmV0dXJuZWQgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGF0IEVPRi4KKyAgICAgIG5lZ2F0aXZlLCBkYXRhIGlzIHJlYWQgYW5kIHJldHVybmVkIHVudGlsIEVPRiBpcyByZWFjaGVkLiAgQW4gZW1wdHkKKyAgICAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBpcyByZXR1cm5lZCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgYXQgRU9GLgogCiAgICAgICBJZiB0aGUgYXJndW1lbnQgaXMgcG9zaXRpdmUsIGFuZCB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIG5vdAogICAgICAgaW50ZXJhY3RpdmUsIG11bHRpcGxlIHJhdyByZWFkcyBtYXkgYmUgaXNzdWVkIHRvIHNhdGlzZnkgdGhlIGJ5dGUgY291bnQKQEAgLTQ0MSwyMiArNDQyLDIzIEBACiAKICAgIC4uIG1ldGhvZDo6IHJlYWRpbnRvKGIpCiAKLSAgICAgIFJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gYnl0ZWFycmF5ICpiKiBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgICAgIHJlYWQuCisgICAgICBSZWFkIHVwIHRvIGBgbGVuKGIpYGAgYnl0ZXMgaW50byBieXRlYXJyYXkgKmIqIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZgorICAgICAgYnl0ZXMgcmVhZC4KIAogICAgICAgTGlrZSA6bWV0aDpgcmVhZGAsIG11bHRpcGxlIHJlYWRzIG1heSBiZSBpc3N1ZWQgdG8gdGhlIHVuZGVybHlpbmcgcmF3Ci0gICAgICBzdHJlYW0sIHVubGVzcyB0aGUgbGF0dGVyIGlzICdpbnRlcmFjdGl2ZScuCisgICAgICBzdHJlYW0sIHVubGVzcyB0aGUgbGF0dGVyIGlzIGludGVyYWN0aXZlLgogCiAgICAgICBBIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gaXMgaW4KICAgICAgIG5vbiBibG9ja2luZy1tb2RlLCBhbmQgaGFzIG5vIGRhdGEgYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQuCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGIpCiAKLSAgICAgIFdyaXRlIHRoZSBnaXZlbiBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LCAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyCi0gICAgICBvZiBieXRlcyB3cml0dGVuIChuZXZlciBsZXNzIHRoYW4gYGBsZW4oYilgYCwgc2luY2UgaWYgdGhlIHdyaXRlIGZhaWxzCi0gICAgICBhbiA6ZXhjOmBJT0Vycm9yYCB3aWxsIGJlIHJhaXNlZCkuICBEZXBlbmRpbmcgb24gdGhlIGFjdHVhbAotICAgICAgaW1wbGVtZW50YXRpb24sIHRoZXNlIGJ5dGVzIG1heSBiZSByZWFkaWx5IHdyaXR0ZW4gdG8gdGhlIHVuZGVybHlpbmcKLSAgICAgIHN0cmVhbSwgb3IgaGVsZCBpbiBhIGJ1ZmZlciBmb3IgcGVyZm9ybWFuY2UgYW5kIGxhdGVuY3kgcmVhc29ucy4KKyAgICAgIFdyaXRlIHRoZSBnaXZlbiA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LCAqYiogYW5kCisgICAgICByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIChuZXZlciBsZXNzIHRoYW4gYGBsZW4oYilgYCwgc2luY2UgaWYKKyAgICAgIHRoZSB3cml0ZSBmYWlscyBhbiA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZCkuICBEZXBlbmRpbmcgb24gdGhlCisgICAgICBhY3R1YWwgaW1wbGVtZW50YXRpb24sIHRoZXNlIGJ5dGVzIG1heSBiZSByZWFkaWx5IHdyaXR0ZW4gdG8gdGhlCisgICAgICB1bmRlcmx5aW5nIHN0cmVhbSwgb3IgaGVsZCBpbiBhIGJ1ZmZlciBmb3IgcGVyZm9ybWFuY2UgYW5kIGxhdGVuY3kKKyAgICAgIHJlYXNvbnMuCiAKICAgICAgIFdoZW4gaW4gbm9uLWJsb2NraW5nIG1vZGUsIGEgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlCiAgICAgICBkYXRhIG5lZWRlZCB0byBiZSB3cml0dGVuIHRvIHRoZSByYXcgc3RyZWFtIGJ1dCBpdCBjb3VsZG4ndCBhY2NlcHQKQEAgLTQ2Niw3ICs0NjgsNyBAQAogUmF3IEZpbGUgSS9PCiBeXl5eXl5eXl5eXl4KIAotLi4gY2xhc3M6OiBGaWxlSU8obmFtZSwgbW9kZT0ncicsIGNsb3NlZmQ9VHJ1ZSkKKy4uIGNsYXNzOjogRmlsZUlPKG5hbWUsIG1vZGU9J3InLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKQogCiAgICA6Y2xhc3M6YEZpbGVJT2AgcmVwcmVzZW50cyBhbiBPUy1sZXZlbCBmaWxlIGNvbnRhaW5pbmcgYnl0ZXMgZGF0YS4KICAgIEl0IGltcGxlbWVudHMgdGhlIDpjbGFzczpgUmF3SU9CYXNlYCBpbnRlcmZhY2UgKGFuZCB0aGVyZWZvcmUgdGhlCkBAIC00NzQsMjIgKzQ3NiwzNSBAQAogCiAgICBUaGUgKm5hbWUqIGNhbiBiZSBvbmUgb2YgdHdvIHRoaW5nczoKIAotICAgKiBhIGNoYXJhY3RlciBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcGF0aCB0byB0aGUgZmlsZQotICAgICB3aGljaCB3aWxsIGJlIG9wZW5lZDsKKyAgICogYSBjaGFyYWN0ZXIgc3RyaW5nIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gdGhlCisgICAgIGZpbGUgd2hpY2ggd2lsbCBiZSBvcGVuZWQ7CiAgICAqIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgYW4gZXhpc3RpbmcgT1MtbGV2ZWwgZmlsZSBkZXNjcmlwdG9yCiAgICAgIHRvIHdoaWNoIHRoZSByZXN1bHRpbmcgOmNsYXNzOmBGaWxlSU9gIG9iamVjdCB3aWxsIGdpdmUgYWNjZXNzLgogCi0gICBUaGUgKm1vZGUqIGNhbiBiZSBgYCdyJ2BgLCBgYCd3J2BgIG9yIGBgJ2EnYGAgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCB3cml0aW5nLAotICAgb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yCi0gICB3cml0aW5nIG9yIGFwcGVuZGluZzsgaXQgd2lsbCBiZSB0cnVuY2F0ZWQgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcuICBBZGQgYQorICAgVGhlICptb2RlKiBjYW4gYmUgYGAncidgYCwgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIGZvciByZWFkaW5nCisgICAoZGVmYXVsdCksIHdyaXRpbmcsIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvciBhcHBlbmRpbmcuIFRoZSBmaWxlIHdpbGwgYmUKKyAgIGNyZWF0ZWQgaWYgaXQgZG9lc24ndCBleGlzdCB3aGVuIG9wZW5lZCBmb3Igd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUKKyAgIHRydW5jYXRlZCB3aGVuIG9wZW5lZCBmb3Igd3JpdGluZy4gOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBpZgorICAgaXQgYWxyZWFkeSBleGlzdHMgd2hlbiBvcGVuZWQgZm9yIGNyZWF0aW5nLiBPcGVuaW5nIGEgZmlsZSBmb3IgY3JlYXRpbmcKKyAgIGltcGxpZXMgd3JpdGluZywgc28gdGhpcyBtb2RlIGJlaGF2ZXMgaW4gYSBzaW1pbGFyIHdheSB0byBgYCd3J2BgLiBBZGQgYQogICAgYGAnKydgYCB0byB0aGUgbW9kZSB0byBhbGxvdyBzaW11bHRhbmVvdXMgcmVhZGluZyBhbmQgd3JpdGluZy4KIAogICAgVGhlIDptZXRoOmByZWFkYCAod2hlbiBjYWxsZWQgd2l0aCBhIHBvc2l0aXZlIGFyZ3VtZW50KSwgOm1ldGg6YHJlYWRpbnRvYAogICAgYW5kIDptZXRoOmB3cml0ZWAgbWV0aG9kcyBvbiB0aGlzIGNsYXNzIHdpbGwgb25seSBtYWtlIG9uZSBzeXN0ZW0gY2FsbC4KIAorICAgQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlIHVuZGVybHlpbmcKKyAgIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyAqb3BlbmVyKiB3aXRoCisgICAoKm5hbWUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3NpbmcKKyAgIDptb2Q6YG9zLm9wZW5gIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHBhc3NpbmcKKyAgIGBgTm9uZWBgKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorICAgICAgVGhlIGBgJ3gnYGAgbW9kZSB3YXMgYWRkZWQuCisKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzIGZyb20gOmNsYXNzOmBJT0Jhc2VgIGFuZAogICAgOmNsYXNzOmBSYXdJT0Jhc2VgLCA6Y2xhc3M6YEZpbGVJT2AgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBkYXRhCi0gICBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzOgorICAgYXR0cmlidXRlczoKIAogICAgLi4gYXR0cmlidXRlOjogbW9kZQogCkBAIC01MzcsNyArNTUyLDcgQEAKIAogICAgLi4gbWV0aG9kOjogZ2V0dmFsdWUoKQogCi0gICAgICBSZXR1cm4gYGBieXRlc2BgIGNvbnRhaW5pbmcgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyLgorICAgICAgUmV0dXJuIDpjbGFzczpgYnl0ZXNgIGNvbnRhaW5pbmcgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyLgogCiAgICAuLiBtZXRob2Q6OiByZWFkMSgpCiAKQEAgLTU4MSw3ICs1OTYsNyBAQAogCiAgICBBIGJ1ZmZlciBwcm92aWRpbmcgaGlnaGVyLWxldmVsIGFjY2VzcyB0byBhIHdyaXRlYWJsZSwgc2VxdWVudGlhbAogICAgOmNsYXNzOmBSYXdJT0Jhc2VgIG9iamVjdC4gIEl0IGluaGVyaXRzIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgLgotICAgV2hlbiB3cml0aW5nIHRvIHRoaXMgb2JqZWN0LCBkYXRhIGlzIG5vcm1hbGx5IGhlbGQgaW50byBhbiBpbnRlcm5hbAorICAgV2hlbiB3cml0aW5nIHRvIHRoaXMgb2JqZWN0LCBkYXRhIGlzIG5vcm1hbGx5IHBsYWNlZCBpbnRvIGFuIGludGVybmFsCiAgICBidWZmZXIuICBUaGUgYnVmZmVyIHdpbGwgYmUgd3JpdHRlbiBvdXQgdG8gdGhlIHVuZGVybHlpbmcgOmNsYXNzOmBSYXdJT0Jhc2VgCiAgICBvYmplY3QgdW5kZXIgdmFyaW91cyBjb25kaXRpb25zLCBpbmNsdWRpbmc6CiAKQEAgLTU5NCw4ICs2MDksNiBAQAogICAgKnJhdyogc3RyZWFtLiAgSWYgdGhlICpidWZmZXJfc2l6ZSogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0bwogICAgOmRhdGE6YERFRkFVTFRfQlVGRkVSX1NJWkVgLgogCi0gICBBIHRoaXJkIGFyZ3VtZW50LCAqbWF4X2J1ZmZlcl9zaXplKiwgaXMgc3VwcG9ydGVkLCBidXQgdW51c2VkIGFuZCBkZXByZWNhdGVkLgotCiAgICA6Y2xhc3M6YEJ1ZmZlcmVkV3JpdGVyYCBwcm92aWRlcyBvciBvdmVycmlkZXMgdGhlc2UgbWV0aG9kcyBpbiBhZGRpdGlvbiB0bwogICAgdGhvc2UgZnJvbSA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYCBhbmQgOmNsYXNzOmBJT0Jhc2VgOgogCkBAIC02MDYsOSArNjE5LDEwIEBACiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGIpCiAKLSAgICAgIFdyaXRlIHRoZSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LCAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzCi0gICAgICB3cml0dGVuLiAgV2hlbiBpbiBub24tYmxvY2tpbmcgbW9kZSwgYSA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZAotICAgICAgaWYgdGhlIGJ1ZmZlciBuZWVkcyB0byBiZSB3cml0dGVuIG91dCBidXQgdGhlIHJhdyBzdHJlYW0gYmxvY2tzLgorICAgICAgV3JpdGUgdGhlIDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3QsICpiKiBhbmQgcmV0dXJuIHRoZQorICAgICAgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uICBXaGVuIGluIG5vbi1ibG9ja2luZyBtb2RlLCBhCisgICAgICA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgYnVmZmVyIG5lZWRzIHRvIGJlIHdyaXR0ZW4gb3V0IGJ1dAorICAgICAgdGhlIHJhdyBzdHJlYW0gYmxvY2tzLgogCiAKIC4uIGNsYXNzOjogQnVmZmVyZWRSYW5kb20ocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKQpAQCAtNjIxLDggKzYzNSw2IEBACiAgICBpbiB0aGUgZmlyc3QgYXJndW1lbnQuICBJZiB0aGUgKmJ1ZmZlcl9zaXplKiBpcyBvbWl0dGVkIGl0IGRlZmF1bHRzIHRvCiAgICA6ZGF0YTpgREVGQVVMVF9CVUZGRVJfU0laRWAuCiAKLSAgIEEgdGhpcmQgYXJndW1lbnQsICptYXhfYnVmZmVyX3NpemUqLCBpcyBzdXBwb3J0ZWQsIGJ1dCB1bnVzZWQgYW5kIGRlcHJlY2F0ZWQuCi0KICAgIDpjbGFzczpgQnVmZmVyZWRSYW5kb21gIGlzIGNhcGFibGUgb2YgYW55dGhpbmcgOmNsYXNzOmBCdWZmZXJlZFJlYWRlcmAgb3IKICAgIDpjbGFzczpgQnVmZmVyZWRXcml0ZXJgIGNhbiBkby4KIApAQCAtNjM3LDkgKzY0OSw2IEBACiAgICB3cml0ZWFibGUgcmVzcGVjdGl2ZWx5LiAgSWYgdGhlICpidWZmZXJfc2l6ZSogaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0bwogICAgOmRhdGE6YERFRkFVTFRfQlVGRkVSX1NJWkVgLgogCi0gICBBIGZvdXJ0aCBhcmd1bWVudCwgKm1heF9idWZmZXJfc2l6ZSosIGlzIHN1cHBvcnRlZCwgYnV0IHVudXNlZCBhbmQKLSAgIGRlcHJlY2F0ZWQuCi0KICAgIDpjbGFzczpgQnVmZmVyZWRSV1BhaXJgIGltcGxlbWVudHMgYWxsIG9mIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgXCdzIG1ldGhvZHMKICAgIGV4Y2VwdCBmb3IgOm1ldGg6YH5CdWZmZXJlZElPQmFzZS5kZXRhY2hgLCB3aGljaCByYWlzZXMKICAgIDpleGM6YFVuc3VwcG9ydGVkT3BlcmF0aW9uYC4KQEAgLTY4Miw3ICs2OTEsNyBAQAogCiAgICAgICBUaGUgdW5kZXJseWluZyBiaW5hcnkgYnVmZmVyIChhIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgIGluc3RhbmNlKSB0aGF0CiAgICAgICA6Y2xhc3M6YFRleHRJT0Jhc2VgIGRlYWxzIHdpdGguICBUaGlzIGlzIG5vdCBwYXJ0IG9mIHRoZQotICAgICAgOmNsYXNzOmBUZXh0SU9CYXNlYCBBUEkgYW5kIG1heSBub3QgZXhpc3Qgb24gc29tZSBpbXBsZW1lbnRhdGlvbnMuCisgICAgICA6Y2xhc3M6YFRleHRJT0Jhc2VgIEFQSSBhbmQgbWF5IG5vdCBleGlzdCBpbiBzb21lIGltcGxlbWVudGF0aW9ucy4KIAogICAgLi4gbWV0aG9kOjogZGV0YWNoKCkKIApAQCAtNzQyLDEzICs3NTEsMTUgQEAKICAgICAgIHdyaXR0ZW4uCiAKIAotLi4gY2xhc3M6OiBUZXh0SU9XcmFwcGVyKGJ1ZmZlciwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgbGluZV9idWZmZXJpbmc9RmFsc2UpCisuLiBjbGFzczo6IFRleHRJT1dyYXBwZXIoYnVmZmVyLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmc9RmFsc2UsIHdyaXRlX3Rocm91Z2g9RmFsc2UpCiAKICAgIEEgYnVmZmVyZWQgdGV4dCBzdHJlYW0gb3ZlciBhIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgIGJpbmFyeSBzdHJlYW0uCiAgICBJdCBpbmhlcml0cyA6Y2xhc3M6YFRleHRJT0Jhc2VgLgogCiAgICAqZW5jb2RpbmcqIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB0aGF0IHRoZSBzdHJlYW0gd2lsbCBiZSBkZWNvZGVkIG9yCi0gICBlbmNvZGVkIHdpdGguICBJdCBkZWZhdWx0cyB0byA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nYC4KKyAgIGVuY29kZWQgd2l0aC4gIEl0IGRlZmF1bHRzIHRvCisgICA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSA8bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nPmAuCiAKICAgICplcnJvcnMqIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyBob3cgZW5jb2RpbmcgYW5kIGRlY29kaW5nCiAgICBlcnJvcnMgYXJlIHRvIGJlIGhhbmRsZWQuICBQYXNzIGBgJ3N0cmljdCdgYCB0byByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgCkBAIC03ODUsNiArNzk2LDE5IEBACiAgICBJZiAqbGluZV9idWZmZXJpbmcqIGlzIGBgVHJ1ZWBgLCA6bWV0aDpgZmx1c2hgIGlzIGltcGxpZWQgd2hlbiBhIGNhbGwgdG8KICAgIHdyaXRlIGNvbnRhaW5zIGEgbmV3bGluZSBjaGFyYWN0ZXIuCiAKKyAgIElmICp3cml0ZV90aHJvdWdoKiBpcyBgYFRydWVgYCwgY2FsbHMgdG8gOm1ldGg6YHdyaXRlYCBhcmUgZ3VhcmFudGVlZAorICAgbm90IHRvIGJlIGJ1ZmZlcmVkOiBhbnkgZGF0YSB3cml0dGVuIG9uIHRoZSA6Y2xhc3M6YFRleHRJT1dyYXBwZXJgCisgICBvYmplY3QgaXMgaW1tZWRpYXRlbHkgaGFuZGxlZCB0byBpdHMgdW5kZXJseWluZyBiaW5hcnkgKmJ1ZmZlciouCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKndyaXRlX3Rocm91Z2gqIGFyZ3VtZW50IGhhcyBiZWVuIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlIGRlZmF1bHQgKmVuY29kaW5nKiBpcyBub3cgYGBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpYGAKKyAgICAgIGluc3RlYWQgb2YgYGBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKWBgLiBEb24ndCBjaGFuZ2UgdGVtcG9yYXJ5IHRoZQorICAgICAgbG9jYWxlIGVuY29kaW5nIHVzaW5nIDpmdW5jOmBsb2NhbGUuc2V0bG9jYWxlYCwgdXNlIHRoZSBjdXJyZW50IGxvY2FsZQorICAgICAgZW5jb2RpbmcgaW5zdGVhZCBvZiB0aGUgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcuCisKICAgIDpjbGFzczpgVGV4dElPV3JhcHBlcmAgcHJvdmlkZXMgb25lIGF0dHJpYnV0ZSBpbiBhZGRpdGlvbiB0byB0aG9zZSBvZgogICAgOmNsYXNzOmBUZXh0SU9CYXNlYCBhbmQgaXRzIHBhcmVudHM6CiAKQEAgLTg1MSw4ICs4NzUsOCBAQAoga2luZCBvZiBJL08gd2hpY2ggaXMgcGVyZm9ybWVkLiAgRm9yIGV4YW1wbGUsIG9uIHNvbWUgbW9kZXJuIE9TZXMgc3VjaCBhcyBMaW51eCwKIHVuYnVmZmVyZWQgZGlzayBJL08gY2FuIGJlIGFzIGZhc3QgYXMgYnVmZmVyZWQgSS9PLiAgVGhlIGJvdHRvbSBsaW5lLCBob3dldmVyLAogaXMgdGhhdCBidWZmZXJlZCBJL08gb2ZmZXJzIHByZWRpY3RhYmxlIHBlcmZvcm1hbmNlIHJlZ2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtCi1hbmQgdGhlIGJhY2tpbmcgZGV2aWNlLiAgVGhlcmVmb3JlLCBpdCBpcyBtb3N0IGFsd2F5cyBwcmVmZXJhYmxlIHRvIHVzZSBidWZmZXJlZAotSS9PIHJhdGhlciB0aGFuIHVuYnVmZmVyZWQgSS9PIGZvciBiaW5hcnkgZGF0YWwKK2FuZCB0aGUgYmFja2luZyBkZXZpY2UuICBUaGVyZWZvcmUsIGl0IGlzIGFsbW9zdCBhbHdheXMgcHJlZmVyYWJsZSB0byB1c2UKK2J1ZmZlcmVkIEkvTyByYXRoZXIgdGhhbiB1bmJ1ZmZlcmVkIEkvTyBmb3IgYmluYXJ5IGRhdGEuCiAKIFRleHQgSS9PCiBeXl5eXl5eXgpAQCAtODg3LDggKzkxMSw4IEBACiA6Y2xhc3M6YEJ1ZmZlcmVkV3JpdGVyYCwgOmNsYXNzOmBCdWZmZXJlZFJhbmRvbWAgYW5kIDpjbGFzczpgQnVmZmVyZWRSV1BhaXJgKQogYXJlIG5vdCByZWVudHJhbnQuICBXaGlsZSByZWVudHJhbnQgY2FsbHMgd2lsbCBub3QgaGFwcGVuIGluIG5vcm1hbCBzaXR1YXRpb25zLAogdGhleSBjYW4gYXJpc2UgZnJvbSBkb2luZyBJL08gaW4gYSA6bW9kOmBzaWduYWxgIGhhbmRsZXIuICBJZiBhIHRocmVhZCB0cmllcyB0bwotcmVudGVyIGEgYnVmZmVyZWQgb2JqZWN0IHdoaWNoIGl0IGlzIGFscmVhZHkgYWNjZXNzaW5nLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMKLXJhaXNlZC4gIE5vdGUgdGhpcyBkb2Vzbid0IHByb2hpYml0IGEgZGlmZmVyZW50IHRocmVhZCBmcm9tIGVudGVyaW5nIHRoZQorcmUtZW50ZXIgYSBidWZmZXJlZCBvYmplY3Qgd2hpY2ggaXQgaXMgYWxyZWFkeSBhY2Nlc3NpbmcsIGEgOmV4YzpgUnVudGltZUVycm9yYAoraXMgcmFpc2VkLiAgTm90ZSB0aGlzIGRvZXNuJ3QgcHJvaGliaXQgYSBkaWZmZXJlbnQgdGhyZWFkIGZyb20gZW50ZXJpbmcgdGhlCiBidWZmZXJlZCBvYmplY3QuCiAKIFRoZSBhYm92ZSBpbXBsaWNpdGx5IGV4dGVuZHMgdG8gdGV4dCBmaWxlcywgc2luY2UgdGhlIDpmdW5jOmBvcGVuKClgIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pcGFkZHJlc3MucnN0IGIvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDQ2ODI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdApAQCAtMCwwICsxLDc5NyBAQAorOm1vZDpgaXBhZGRyZXNzYCAtLS0gSVB2NC9JUHY2IG1hbmlwdWxhdGlvbiBsaWJyYXJ5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogaXBhZGRyZXNzCisgICA6c3lub3BzaXM6IElQdjQvSVB2NiBtYW5pcHVsYXRpb24gbGlicmFyeS4KKy4uIG1vZHVsZWF1dGhvcjo6IFBldGVyIE1vb2R5CisKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2lwYWRkcmVzcy5weWAKKworLS0tLS0tLS0tLS0tLS0KKworLi4gbm90ZTo6CisKKyAgIFRoZSBgYGlwYWRkcmVzc2BgIG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBvbiBhCisgICA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gQmFja3dhcmRzIGluY29tcGF0aWJsZQorICAgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBwYWNrYWdlKSBtYXkgb2NjdXIgaWYgZGVlbWVkCisgICBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KKworOm1vZDpgaXBhZGRyZXNzYCBwcm92aWRlcyB0aGUgY2FwYWJpbGl0aWVzIHRvIGNyZWF0ZSwgbWFuaXB1bGF0ZSBhbmQKK29wZXJhdGUgb24gSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMgYW5kIG5ldHdvcmtzLgorCitUaGUgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIGluIHRoaXMgbW9kdWxlIG1ha2UgaXQgc3RyYWlnaHRmb3J3YXJkIHRvIGhhbmRsZQordmFyaW91cyB0YXNrcyByZWxhdGVkIHRvIElQIGFkZHJlc3NlcywgaW5jbHVkaW5nIGNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHR3bworaG9zdHMgYXJlIG9uIHRoZSBzYW1lIHN1Ym5ldCwgaXRlcmF0aW5nIG92ZXIgYWxsIGhvc3RzIGluIGEgcGFydGljdWxhcgorc3VibmV0LCBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCBhIHN0cmluZyByZXByZXNlbnRzIGEgdmFsaWQgSVAgYWRkcmVzcyBvcgorbmV0d29yayBkZWZpbml0aW9uLCBhbmQgc28gb24uCisKK1RoaXMgaXMgdGhlIGZ1bGwgbW9kdWxlIEFQSSByZWZlcmVuY2UgLSBmb3IgYW4gb3ZlcnZpZXcgYW5kIGludHJvZHVjdGlvbiwKK3NlZSA6cmVmOmBpcGFkZHJlc3MtaG93dG9gLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitDb252ZW5pZW5jZSBmYWN0b3J5IGZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YGlwYWRkcmVzc2AgbW9kdWxlIHByb3ZpZGVzIGZhY3RvcnkgZnVuY3Rpb25zIHRvIGNvbnZlbmllbnRseSBjcmVhdGUKK0lQIGFkZHJlc3NlcywgbmV0d29ya3MgYW5kIGludGVyZmFjZXM6CisKKy4uIGZ1bmN0aW9uOjogaXBfYWRkcmVzcyhhZGRyZXNzKQorCisgICBSZXR1cm4gYW4gOmNsYXNzOmBJUHY0QWRkcmVzc2Agb3IgOmNsYXNzOmBJUHY2QWRkcmVzc2Agb2JqZWN0IGRlcGVuZGluZyBvbgorICAgdGhlIElQIGFkZHJlc3MgcGFzc2VkIGFzIGFyZ3VtZW50LiAgRWl0aGVyIElQdjQgb3IgSVB2NiBhZGRyZXNzZXMgbWF5IGJlCisgICBzdXBwbGllZDsgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwgYmUgY29uc2lkZXJlZCB0byBiZSBJUHY0IGJ5IGRlZmF1bHQuCisgICBBIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgSVB2NCBvcgorICAgSVB2NiBhZGRyZXNzLgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjguMC4xJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6ZGI4OjonKQorICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKQorCisKKy4uIGZ1bmN0aW9uOjogaXBfbmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9VHJ1ZSkKKworICAgUmV0dXJuIGFuIDpjbGFzczpgSVB2NE5ldHdvcmtgIG9yIDpjbGFzczpgSVB2Nk5ldHdvcmtgIG9iamVjdCBkZXBlbmRpbmcgb24KKyAgIHRoZSBJUCBhZGRyZXNzIHBhc3NlZCBhcyBhcmd1bWVudC4gICphZGRyZXNzKiBpcyBhIHN0cmluZyBvciBpbnRlZ2VyCisgICByZXByZXNlbnRpbmcgdGhlIElQIG5ldHdvcmsuICBFaXRoZXIgSVB2NCBvciBJUHY2IG5ldHdvcmtzIG1heSBiZSBzdXBwbGllZDsKKyAgIGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LiAgKnN0cmljdCoKKyAgIGlzIHBhc3NlZCB0byA6Y2xhc3M6YElQdjROZXR3b3JrYCBvciA6Y2xhc3M6YElQdjZOZXR3b3JrYCBjb25zdHJ1Y3Rvci4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgSVB2NCBvcgorICAgSVB2NiBhZGRyZXNzLCBvciBpZiB0aGUgbmV0d29yayBoYXMgaG9zdCBiaXRzIHNldC4KKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMTY4LjAuMC8yOCcpCisgICBJUHY0TmV0d29yaygnMTkyLjE2OC4wLjAvMjgnKQorCisKKy4uIGZ1bmN0aW9uOjogaXBfaW50ZXJmYWNlKGFkZHJlc3MpCisKKyAgIFJldHVybiBhbiA6Y2xhc3M6YElQdjRJbnRlcmZhY2VgIG9yIDpjbGFzczpgSVB2NkludGVyZmFjZWAgb2JqZWN0IGRlcGVuZGluZworICAgb24gdGhlIElQIGFkZHJlc3MgcGFzc2VkIGFzIGFyZ3VtZW50LiAgKmFkZHJlc3MqIGlzIGEgc3RyaW5nIG9yIGludGVnZXIKKyAgIHJlcHJlc2VudGluZyB0aGUgSVAgYWRkcmVzcy4gIEVpdGhlciBJUHY0IG9yIElQdjYgYWRkcmVzc2VzIG1heSBiZSBzdXBwbGllZDsKKyAgIGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LiAgQQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBJUHY0IG9yCisgICBJUHY2IGFkZHJlc3MuCisKK09uZSBkb3duc2lkZSBvZiB0aGVzZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgaXMgdGhhdCB0aGUgbmVlZCB0byBoYW5kbGUgYm90aAorSVB2NCBhbmQgSVB2NiBmb3JtYXRzIG1lYW5zIHRoYXQgZXJyb3IgbWVzc2FnZXMgcHJvdmlkZSBtaW5pbWFsCitpbmZvcm1hdGlvbiBvbiB0aGUgcHJlY2lzZSBlcnJvciwgYXMgdGhlIGZ1bmN0aW9ucyBkb24ndCBrbm93IHdoZXRoZXIgdGhlCitJUHY0IG9yIElQdjYgZm9ybWF0IHdhcyBpbnRlbmRlZC4gTW9yZSBkZXRhaWxlZCBlcnJvciByZXBvcnRpbmcgY2FuIGJlCitvYnRhaW5lZCBieSBjYWxsaW5nIHRoZSBhcHByb3ByaWF0ZSB2ZXJzaW9uIHNwZWNpZmljIGNsYXNzIGNvbnN0cnVjdG9ycworZGlyZWN0bHkuCisKKworSVAgQWRkcmVzc2VzCistLS0tLS0tLS0tLS0KKworQWRkcmVzcyBvYmplY3RzCiteXl5eXl5eXl5eXl5eXl4KKworVGhlIDpjbGFzczpgSVB2NEFkZHJlc3NgIGFuZCA6Y2xhc3M6YElQdjZBZGRyZXNzYCBvYmplY3RzIHNoYXJlIGEgbG90IG9mIGNvbW1vbgorYXR0cmlidXRlcy4gIFNvbWUgYXR0cmlidXRlcyB0aGF0IGFyZSBvbmx5IG1lYW5pbmdmdWwgZm9yIElQdjYgYWRkcmVzc2VzIGFyZQorYWxzbyBpbXBsZW1lbnRlZCBieSA6Y2xhc3M6YElQdjRBZGRyZXNzYCBvYmplY3RzLCBpbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciB0bword3JpdGUgY29kZSB0aGF0IGhhbmRsZXMgYm90aCBJUCB2ZXJzaW9ucyBjb3JyZWN0bHkuCisKKy4uIGNsYXNzOjogSVB2NEFkZHJlc3MoYWRkcmVzcykKKworICAgQ29uc3RydWN0IGFuIElQdjQgYWRkcmVzcy4gIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYKKyAgICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MuCisKKyAgIFRoZSBmb2xsb3dpbmcgY29uc3RpdHV0ZXMgYSB2YWxpZCBJUHY0IGFkZHJlc3M6CisKKyAgIDEuIEEgc3RyaW5nIGluIGRlY2ltYWwtZG90IG5vdGF0aW9uLCBjb25zaXN0aW5nIG9mIGZvdXIgZGVjaW1hbCBpbnRlZ2VycyBpbgorICAgICAgdGhlIGluY2x1c2l2ZSByYW5nZSAwLTI1NSwgc2VwYXJhdGVkIGJ5IGRvdHMgKGUuZy4gYGAxOTIuMTY4LjAuMWBgKS4gRWFjaAorICAgICAgaW50ZWdlciByZXByZXNlbnRzIGFuIG9jdGV0IChieXRlKSBpbiB0aGUgYWRkcmVzcy4gTGVhZGluZyB6ZXJvZXMgYXJlCisgICAgICB0b2xlcmF0ZWQgb25seSBmb3IgdmFsdWVzIGxlc3MgdGhlbiA4IChhcyB0aGVyZSBpcyBubyBhbWJpZ3VpdHkKKyAgICAgIGJldHdlZW4gdGhlIGRlY2ltYWwgYW5kIG9jdGFsIGludGVycHJldGF0aW9ucyBvZiBzdWNoIHN0cmluZ3MpLgorICAgMi4gQW4gaW50ZWdlciB0aGF0IGZpdHMgaW50byAzMiBiaXRzLgorICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggNCAobW9zdAorICAgICAgc2lnbmlmaWNhbnQgb2N0ZXQgZmlyc3QpLgorCisgICA+Pj4gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKQorICAgPj4+IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygzMjIxMjI1OTg1KQorICAgSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYidceEMwXHhBOFx4MDBceDAxJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KKworICAgICAgVGhlIGFwcHJvcHJpYXRlIHZlcnNpb24gbnVtYmVyOiBgYDRgYCBmb3IgSVB2NCwgYGA2YGAgZm9yIElQdjYuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KKworICAgICAgVGhlIHRvdGFsIG51bWJlciBvZiBiaXRzIGluIHRoZSBhZGRyZXNzIHJlcHJlc2VudGF0aW9uIGZvciB0aGlzCisgICAgICB2ZXJzaW9uOiBgYDMyYGAgZm9yIElQdjQsIGBgMTI4YGAgZm9yIElQdjYuCisKKyAgICAgIFRoZSBwcmVmaXggZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgYml0cyBpbiBhbiAgYWRkcmVzcyB0aGF0CisgICAgICBhcmUgY29tcGFyZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGFuIGFkZHJlc3MgaXMgcGFydCBvZiBhCisgICAgICBuZXR3b3JrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBjb21wcmVzc2VkCisgICAuLiBhdHRyaWJ1dGU6OiBleHBsb2RlZAorCisgICAgICBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGluIGRvdHRlZCBkZWNpbWFsIG5vdGF0aW9uLiBMZWFkaW5nIHplcm9lcworICAgICAgYXJlIG5ldmVyIGluY2x1ZGVkIGluIHRoZSByZXByZXNlbnRhdGlvbi4KKworICAgICAgQXMgSVB2NCBkb2VzIG5vdCBkZWZpbmUgYSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIGFkZHJlc3NlcyB3aXRoIG9jdGV0cworICAgICAgc2V0IHRvIHplcm8sIHRoZXNlIHR3byBhdHRyaWJ1dGVzIGFyZSBhbHdheXMgdGhlIHNhbWUgYXMgYGBzdHIoYWRkcilgYAorICAgICAgZm9yIElQdjQgYWRkcmVzc2VzLiBFeHBvc2luZyB0aGVzZSBhdHRyaWJ1dGVzIG1ha2VzIGl0IGVhc2llciB0bworICAgICAgd3JpdGUgZGlzcGxheSBjb2RlIHRoYXQgY2FuIGhhbmRsZSBib3RoIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYWNrZWQKKworICAgICAgVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGFkZHJlc3MgLSBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZgorICAgICAgdGhlIGFwcHJvcHJpYXRlIGxlbmd0aCAobW9zdCBzaWduaWZpY2FudCBvY3RldCBmaXJzdCkuIFRoaXMgaXMgNCBieXRlcworICAgICAgZm9yIElQdjQgYW5kIDE2IGJ5dGVzIGZvciBJUHY2LgorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19tdWx0aWNhc3QKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIG11bHRpY2FzdCB1c2UuICBTZWUKKyAgICAgIDpSRkM6YDMxNzFgIChmb3IgSVB2NCkgb3IgOlJGQzpgMjM3M2AgKGZvciBJUHY2KS4KKworICAgLi4gYXR0cmlidXRlOjogaXNfcHJpdmF0ZQorCisgICAgICBgYFRydWVgYCBpZiB0aGUgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MuICBTZWUKKyAgICAgIDpSRkM6YDE5MThgIChmb3IgSVB2NCkgb3IgOlJGQzpgNDE5M2AgKGZvciBJUHY2KS4KKworICAgLi4gYXR0cmlidXRlOjogaXNfdW5zcGVjaWZpZWQKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgdW5zcGVjaWZpZWQuICBTZWUgOlJGQzpgNTM3NWAgKGZvciBJUHY0KQorICAgICAgb3IgOlJGQzpgMjM3M2AgKGZvciBJUHY2KS4KKworICAgLi4gYXR0cmlidXRlOjogaXNfcmVzZXJ2ZWQKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgb3RoZXJ3aXNlIElFVEYgcmVzZXJ2ZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xvb3BiYWNrCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoaXMgaXMgYSBsb29wYmFjayBhZGRyZXNzLiAgU2VlIDpSRkM6YDMzMzBgIChmb3IgSVB2NCkKKyAgICAgIG9yIDpSRkM6YDIzNzNgIChmb3IgSVB2NikuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xpbmtfbG9jYWwKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIGxpbmstbG9jYWwgdXNhZ2UuICBTZWUKKyAgICAgIDpSRkM6YDM5MjdgLgorCisKKy4uIGNsYXNzOjogSVB2NkFkZHJlc3MoYWRkcmVzcykKKworICAgQ29uc3RydWN0IGFuIElQdjYgYWRkcmVzcy4gIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYKKyAgICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MuCisKKyAgIFRoZSBmb2xsb3dpbmcgY29uc3RpdHV0ZXMgYSB2YWxpZCBJUHY2IGFkZHJlc3M6CisKKyAgIDEuIEEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgZWlnaHQgZ3JvdXBzIG9mIGZvdXIgaGV4YWRlY2ltYWwgZGlnaXRzLCBlYWNoCisgICAgICBncm91cCByZXByZXNlbnRpbmcgMTYgYml0cy4gIFRoZSBncm91cHMgYXJlIHNlcGFyYXRlZCBieSBjb2xvbnMuCisgICAgICBUaGlzIGRlc2NyaWJlcyBhbiAqZXhwbG9kZWQqIChsb25naGFuZCkgbm90YXRpb24uICBUaGUgc3RyaW5nIGNhbgorICAgICAgYWxzbyBiZSAqY29tcHJlc3NlZCogKHNob3J0aGFuZCBub3RhdGlvbikgYnkgdmFyaW91cyBtZWFucy4gIFNlZQorICAgICAgOlJGQzpgNDI5MWAgZm9yIGRldGFpbHMuICBGb3IgZXhhbXBsZSwKKyAgICAgIGBgIjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowYWJjOjAwMDc6MGRlZiJgYCBjYW4gYmUgY29tcHJlc3NlZCB0bworICAgICAgYGAiOjphYmM6NzpkZWYiYGAuCisgICAyLiBBbiBpbnRlZ2VyIHRoYXQgZml0cyBpbnRvIDEyOCBiaXRzLgorICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggMTYsIGJpZy1lbmRpYW4uCisKKyAgID4+PiBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKKyAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbXByZXNzZWQKKworICAgVGhlIHNob3J0IGZvcm0gb2YgdGhlIGFkZHJlc3MgcmVwcmVzZW50YXRpb24sIHdpdGggbGVhZGluZyB6ZXJvZXMgaW4KKyAgIGdyb3VwcyBvbWl0dGVkIGFuZCB0aGUgbG9uZ2VzdCBzZXF1ZW5jZSBvZiBncm91cHMgY29uc2lzdGluZyBlbnRpcmVseSBvZgorICAgemVyb2VzIGNvbGxhcHNlZCB0byBhIHNpbmdsZSBlbXB0eSBncm91cC4KKworICAgVGhpcyBpcyBhbHNvIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBgYHN0cihhZGRyKWBgIGZvciBJUHY2IGFkZHJlc3Nlcy4KKworICAgLi4gYXR0cmlidXRlOjogZXhwbG9kZWQKKworICAgVGhlIGxvbmcgZm9ybSBvZiB0aGUgYWRkcmVzcyByZXByZXNlbnRhdGlvbiwgd2l0aCBhbGwgbGVhZGluZyB6ZXJvZXMgYW5kCisgICBncm91cHMgY29uc2lzdGluZyBlbnRpcmVseSBvZiB6ZXJvZXMgaW5jbHVkZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhY2tlZAorICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgorICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgorICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CisgICAuLiBhdHRyaWJ1dGU6OiBpc19wcml2YXRlCisgICAuLiBhdHRyaWJ1dGU6OiBpc191bnNwZWNpZmllZAorICAgLi4gYXR0cmlidXRlOjogaXNfcmVzZXJ2ZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xvb3BiYWNrCisgICAuLiBhdHRyaWJ1dGU6OiBpc19saW5rX2xvY2FsCisKKyAgICAgIFJlZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBkb2N1bWVudGF0aW9uIGluCisgICAgICA6Y2xhc3M6YElQdjRBZGRyZXNzYAorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19zaXRlX2xvY2FsCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBzaXRlLWxvY2FsIHVzYWdlLiAgTm90ZSB0aGF0CisgICAgICB0aGUgc2l0ZS1sb2NhbCBhZGRyZXNzIHNwYWNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgOlJGQzpgMzg3OWAuIFVzZQorICAgICAgOmF0dHI6YH5JUHY0QWRkcmVzcy5pc19wcml2YXRlYCB0byB0ZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBpbiB0aGUKKyAgICAgIHNwYWNlIG9mIHVuaXF1ZSBsb2NhbCBhZGRyZXNzZXMgYXMgZGVmaW5lZCBieSA6UkZDOmA0MTkzYC4KKworICAgLi4gYXR0cmlidXRlOjogaXB2NF9tYXBwZWQKKworICAgICAgRm9yIGFkZHJlc3NlcyB0aGF0IGFwcGVhciB0byBiZSBJUHY0IG1hcHBlZCBhZGRyZXNzZXMgKHN0YXJ0aW5nIHdpdGgKKyAgICAgIGBgOjpGRkZGLzk2YGApLCB0aGlzIHByb3BlcnR5IHdpbGwgcmVwb3J0IHRoZSBlbWJlZGRlZCBJUHY0IGFkZHJlc3MuCisgICAgICBGb3IgYW55IG90aGVyIGFkZHJlc3MsIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBgYE5vbmVgYC4KKworICAgLi4gYXR0cmlidXRlOjogc2l4dG9mb3VyCisKKyAgICAgIEZvciBhZGRyZXNzZXMgdGhhdCBhcHBlYXIgdG8gYmUgNnRvNCBhZGRyZXNzZXMgIChzdGFydGluZyB3aXRoCisgICAgICBgYDIwMDI6Oi8xNmBgKSBhcyBkZWZpbmVkIGJ5IDpSRkM6YDMwNTZgLCB0aGlzIHByb3BlcnR5IHdpbGwgcmVwb3J0CisgICAgICB0aGUgZW1iZWRkZWQgSVB2NCBhZGRyZXNzLiAgRm9yIGFueSBvdGhlciBhZGRyZXNzLCB0aGlzIHByb3BlcnR5IHdpbGwKKyAgICAgIGJlIGBgTm9uZWBgLgorCisgICAuLiBhdHRyaWJ1dGU6OiB0ZXJlZG8KKworICAgICAgRm9yIGFkZHJlc3NlcyB0aGF0IGFwcGVhciB0byBiZSBUZXJlZG8gYWRkcmVzc2VzIChzdGFydGluZyB3aXRoCisgICAgICBgYDIwMDE6Oi8zMmBgKSBhcyBkZWZpbmVkIGJ5IDpSRkM6YDQzODBgLCB0aGlzIHByb3BlcnR5IHdpbGwgcmVwb3J0CisgICAgICB0aGUgZW1iZWRkZWQgYGAoc2VydmVyLCBjbGllbnQpYGAgSVAgYWRkcmVzcyBwYWlyLiAgRm9yIGFueSBvdGhlcgorICAgICAgYWRkcmVzcywgdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIGBgTm9uZWBgLgorCisKK0NvbnZlcnNpb24gdG8gU3RyaW5ncyBhbmQgSW50ZWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVG8gaW50ZXJvcGVyYXRlIHdpdGggbmV0d29ya2luZyBpbnRlcmZhY2VzIHN1Y2ggYXMgdGhlIHNvY2tldCBtb2R1bGUsCithZGRyZXNzZXMgbXVzdCBiZSBjb252ZXJ0ZWQgdG8gc3RyaW5ncyBvciBpbnRlZ2Vycy4gVGhpcyBpcyBoYW5kbGVkIHVzaW5nCit0aGUgOmZ1bmM6YHN0cmAgYW5kIDpmdW5jOmBpbnRgIGJ1aWx0aW4gZnVuY3Rpb25zOjoKKworICAgPj4+IHN0cihpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykpCisgICAnMTkyLjE2OC4wLjEnCisgICA+Pj4gaW50KGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKSkKKyAgIDMyMzIyMzU1MjEKKyAgID4+PiBzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKKyAgICc6OjEnCisgICA+Pj4gaW50KGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykpCisgICAxCisKKworT3BlcmF0b3JzCiteXl5eXl5eXl4KKworQWRkcmVzcyBvYmplY3RzIHN1cHBvcnQgc29tZSBvcGVyYXRvcnMuICBVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgb3BlcmF0b3JzIGNhbgorb25seSBiZSBhcHBsaWVkIGJldHdlZW4gY29tcGF0aWJsZSBvYmplY3RzIChpLmUuIElQdjQgd2l0aCBJUHY0LCBJUHY2IHdpdGgKK0lQdjYpLgorCisKK0xvZ2ljYWwgb3BlcmF0b3JzCisiIiIiIiIiIiIiIiIiIiIiIgorCitBZGRyZXNzIG9iamVjdHMgY2FuIGJlIGNvbXBhcmVkIHdpdGggdGhlIHVzdWFsIHNldCBvZiBsb2dpY2FsIG9wZXJhdG9ycy4gIFNvbWUKK2V4YW1wbGVzOjoKKworICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSA+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjEnKQorICAgVHJ1ZQorICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSA9PSBJUHY0QWRkcmVzcygnMTI3LjAuMC4xJykKKyAgIEZhbHNlCisgICA+Pj4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMicpICE9IElQdjRBZGRyZXNzKCcxMjcuMC4wLjEnKQorICAgVHJ1ZQorCisKK0FyaXRobWV0aWMgb3BlcmF0b3JzCisiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitJbnRlZ2VycyBjYW4gYmUgYWRkZWQgdG8gb3Igc3VidHJhY3RlZCBmcm9tIGFkZHJlc3Mgb2JqZWN0cy4gIFNvbWUgZXhhbXBsZXM6OgorCisgICA+Pj4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMicpICsgMworICAgSVB2NEFkZHJlc3MoJzEyNy4wLjAuNScpCisgICA+Pj4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMicpIC0gMworICAgSVB2NEFkZHJlc3MoJzEyNi4yNTUuMjU1LjI1NScpCisgICA+Pj4gSVB2NEFkZHJlc3MoJzI1NS4yNTUuMjU1LjI1NScpICsgMQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yOiA0Mjk0OTY3Mjk2ICg+PSAyKiozMikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY0IGFkZHJlc3MKKworCitJUCBOZXR3b3JrIGRlZmluaXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YElQdjROZXR3b3JrYCBhbmQgOmNsYXNzOmBJUHY2TmV0d29ya2Agb2JqZWN0cyBwcm92aWRlIGEgbWVjaGFuaXNtCitmb3IgZGVmaW5pbmcgYW5kIGluc3BlY3RpbmcgSVAgbmV0d29yayBkZWZpbml0aW9ucy4gIEEgbmV0d29yayBkZWZpbml0aW9uCitjb25zaXN0cyBvZiBhICptYXNrKiBhbmQgYSAqbmV0d29yayBhZGRyZXNzKiwgYW5kIGFzIHN1Y2ggZGVmaW5lcyBhIHJhbmdlIG9mCitJUCBhZGRyZXNzZXMgdGhhdCBlcXVhbCB0aGUgbmV0d29yayBhZGRyZXNzIHdoZW4gbWFza2VkIChiaW5hcnkgQU5EKSB3aXRoIHRoZQorbWFzay4gIEZvciBleGFtcGxlLCBhIG5ldHdvcmsgZGVmaW5pdGlvbiB3aXRoIHRoZSBtYXNrIGBgMjU1LjI1NS4yNTUuMGBgIGFuZAordGhlIG5ldHdvcmsgYWRkcmVzcyBgYDE5Mi4xNjguMS4wYGAgY29uc2lzdHMgb2YgSVAgYWRkcmVzc2VzIGluIHRoZSBpbmNsdXNpdmUKK3JhbmdlIGBgMTkyLjE2OC4xLjBgYCB0byBgYDE5Mi4xNjguMS4yNTVgYC4KKworCitQcmVmaXgsIG5ldCBtYXNrIGFuZCBob3N0IG1hc2sKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGVyZSBhcmUgc2V2ZXJhbCBlcXVpdmFsZW50IHdheXMgdG8gc3BlY2lmeSBJUCBuZXR3b3JrIG1hc2tzLiAgQSAqcHJlZml4KgorYGAvPG5iaXRzPmBgIGlzIGEgbm90YXRpb24gdGhhdCBkZW5vdGVzIGhvdyBtYW55IGhpZ2gtb3JkZXIgYml0cyBhcmUgc2V0IGluCit0aGUgbmV0d29yayBtYXNrLiAgQSAqbmV0IG1hc2sqIGlzIGFuIElQIGFkZHJlc3Mgd2l0aCBzb21lIG51bWJlciBvZgoraGlnaC1vcmRlciBiaXRzIHNldC4gIFRodXMgdGhlIHByZWZpeCBgYC8yNGBgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIG5ldCBtYXNrCitgYDI1NS4yNTUuMjU1LjBgYCBpbiBJUHY0LCBvciBgYGZmZmY6ZmYwMDo6YGAgaW4gSVB2Ni4gIEluIGFkZGl0aW9uLCBhCisqaG9zdCBtYXNrKiBpcyB0aGUgbG9naWNhbCBpbnZlcnNlIG9mIGEgKm5ldCBtYXNrKiwgYW5kIGlzIHNvbWV0aW1lcyB1c2VkCisoZm9yIGV4YW1wbGUgaW4gQ2lzY28gYWNjZXNzIGNvbnRyb2wgbGlzdHMpIHRvIGRlbm90ZSBhIG5ldHdvcmsgbWFzay4gIFRoZQoraG9zdCBtYXNrIGVxdWl2YWxlbnQgdG8gYGAvMjRgYCBpbiBJUHY0IGlzIGBgMC4wLjAuMjU1YGAuCisKKworTmV0d29yayBvYmplY3RzCiteXl5eXl5eXl5eXl5eXl4KKworQWxsIGF0dHJpYnV0ZXMgaW1wbGVtZW50ZWQgYnkgYWRkcmVzcyBvYmplY3RzIGFyZSBpbXBsZW1lbnRlZCBieSBuZXR3b3JrCitvYmplY3RzIGFzIHdlbGwuICBJbiBhZGRpdGlvbiwgbmV0d29yayBvYmplY3RzIGltcGxlbWVudCBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMuCitBbGwgb2YgdGhlc2UgYXJlIGNvbW1vbiBiZXR3ZWVuIDpjbGFzczpgSVB2NE5ldHdvcmtgIGFuZCA6Y2xhc3M6YElQdjZOZXR3b3JrYCwKK3NvIHRvIGF2b2lkIGR1cGxpY2F0aW9uIHRoZXkgYXJlIG9ubHkgZG9jdW1lbnRlZCBmb3IgOmNsYXNzOmBJUHY0TmV0d29ya2AuCisKKy4uIGNsYXNzOjogSVB2NE5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PVRydWUpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY0IG5ldHdvcmsgZGVmaW5pdGlvbi4gICphZGRyZXNzKiBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgIDEuIEEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYW4gSVAgYWRkcmVzcyBhbmQgYW4gb3B0aW9uYWwgbWFzaywgc2VwYXJhdGVkIGJ5CisgICAgICBhIHNsYXNoIChgYC9gYCkuICBUaGUgSVAgYWRkcmVzcyBpcyB0aGUgbmV0d29yayBhZGRyZXNzLCBhbmQgdGhlIG1hc2sKKyAgICAgIGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgbnVtYmVyLCB3aGljaCBtZWFucyBpdCdzIGEgKnByZWZpeCosIG9yIGEgc3RyaW5nCisgICAgICByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY0IGFkZHJlc3MuICBJZiBpdCdzIHRoZSBsYXR0ZXIsIHRoZSBtYXNrIGlzCisgICAgICBpbnRlcnByZXRlZCBhcyBhICpuZXQgbWFzayogaWYgaXQgc3RhcnRzIHdpdGggYSBub24temVybyBmaWVsZCwgb3IgYXMKKyAgICAgIGEgKmhvc3QgbWFzayogaWYgaXQgc3RhcnRzIHdpdGggYSB6ZXJvIGZpZWxkLiAgSWYgbm8gbWFzayBpcyBwcm92aWRlZCwKKyAgICAgIGl0J3MgY29uc2lkZXJlZCB0byBiZSBgYC8zMmBgLgorCisgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyAqYWRkcmVzcyogc3BlY2lmaWNhdGlvbnMgYXJlIGVxdWl2YWxlbnQ6CisgICAgICBgYDE5Mi4xNjguMS4wLzI0YGAsIGBgMTkyLjE2OC4xLjAvMjU1LjI1NS4yNTUuMGBgIGFuZAorICAgICAgYGAxOTIuMTY4LjEuMC8wLjAuMC4yNTVgYC4KKworICAgMi4gQW4gaW50ZWdlciB0aGF0IGZpdHMgaW50byAzMiBiaXRzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEKKyAgICAgIHNpbmdsZS1hZGRyZXNzIG5ldHdvcmssIHdpdGggdGhlIG5ldHdvcmsgYWRkcmVzcyBiZWluZyAqYWRkcmVzcyogYW5kCisgICAgICB0aGUgbWFzayBiZWluZyBgYC8zMmBgLgorCisgICAzLiBBbiBpbnRlZ2VyIHBhY2tlZCBpbnRvIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG9mIGxlbmd0aCA0LCBiaWctZW5kaWFuLgorICAgICAgVGhlIGludGVycHJldGF0aW9uIGlzIHNpbWlsYXIgdG8gYW4gaW50ZWdlciAqYWRkcmVzcyouCisKKyAgIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGlzIG5vdCBhIHZhbGlkIElQdjQKKyAgIGFkZHJlc3MuICBBIDpleGM6YE5ldG1hc2tWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIG1hc2sgaXMgbm90IHZhbGlkIGZvcgorICAgYW4gSVB2NCBhZGRyZXNzLgorCisgICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCBhbmQgaG9zdCBiaXRzIGFyZSBzZXQgaW4gdGhlIHN1cHBsaWVkIGFkZHJlc3MsCisgICB0aGVuIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGhvc3QgYml0cyBhcmUgbWFza2VkIG91dAorICAgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIGFkZHJlc3MuCisKKyAgIFVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLCBhbGwgbmV0d29yayBtZXRob2RzIGFjY2VwdGluZyBvdGhlciBuZXR3b3JrL2FkZHJlc3MKKyAgIG9iamVjdHMgd2lsbCByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZSBhcmd1bWVudCdzIElQIHZlcnNpb24gaXMKKyAgIGluY29tcGF0aWJsZSB0byBgYHNlbGZgYAorCisgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCisgICAuLiBhdHRyaWJ1dGU6OiBtYXhfcHJlZml4bGVuCisKKyAgICAgIFJlZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBkb2N1bWVudGF0aW9uIGluCisgICAgICA6Y2xhc3M6YElQdjRBZGRyZXNzYAorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19tdWx0aWNhc3QKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3ByaXZhdGUKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Vuc3BlY2lmaWVkCisgICAuLiBhdHRyaWJ1dGU6OiBpc19yZXNlcnZlZAorICAgLi4gYXR0cmlidXRlOjogaXNfbG9vcGJhY2sKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xpbmtfbG9jYWwKKworICAgICAgVGhlc2UgYXR0cmlidXRlcyBhcmUgdHJ1ZSBmb3IgdGhlIG5ldHdvcmsgYXMgYSB3aG9sZSBpZiB0aGV5IGFyZSB0cnVlCisgICAgICB0cnVlIGZvciBib3RoIHRoZSBuZXR3b3JrIGFkZHJlc3MgYW5kIHRoZSBicm9hZGNhc3QgYWRkcmVzcworCisgICAuLiBhdHRyaWJ1dGU6OiBuZXR3b3JrX2FkZHJlc3MKKworICAgICAgVGhlIG5ldHdvcmsgYWRkcmVzcyBmb3IgdGhlIG5ldHdvcmsuIFRoZSBuZXR3b3JrIGFkZHJlc3MgYW5kIHRoZQorICAgICAgcHJlZml4IGxlbmd0aCB0b2dldGhlciB1bmlxdWVseSBkZWZpbmUgYSBuZXR3b3JrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBicm9hZGNhc3RfYWRkcmVzcworCisgICAgICBUaGUgYnJvYWRjYXN0IGFkZHJlc3MgZm9yIHRoZSBuZXR3b3JrLiBQYWNrZXRzIHNlbnQgdG8gdGhlIGJyb2FkY2FzdAorICAgICAgYWRkcmVzcyBzaG91bGQgYmUgcmVjZWl2ZWQgYnkgZXZlcnkgaG9zdCBvbiB0aGUgbmV0d29yay4KKworICAgLi4gYXR0cmlidXRlOjogaG9zdCBtYXNrCisKKyAgICAgIFRoZSBob3N0IG1hc2ssIGFzIGEgc3RyaW5nLgorCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX3ByZWZpeGxlbgorICAgLi4gYXR0cmlidXRlOjogY29tcHJlc3NlZAorICAgLi4gYXR0cmlidXRlOjogZXhwbG9kZWQKKworICAgICAgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5ldHdvcmssIHdpdGggdGhlIG1hc2sgaW4gcHJlZml4CisgICAgICBub3RhdGlvbi4KKworICAgICAgYGB3aXRoX3ByZWZpeGxlbmBgIGFuZCBgYGNvbXByZXNzZWRgYCBhcmUgYWx3YXlzIHRoZSBzYW1lIGFzCisgICAgICBgYHN0cihuZXR3b3JrKWBgLgorICAgICAgYGBleHBsb2RlZGBgIHVzZXMgdGhlIGV4cGxvZGVkIGZvcm0gdGhlIG5ldHdvcmsgYWRkcmVzcy4KKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9uZXRtYXNrCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuZXR3b3JrLCB3aXRoIHRoZSBtYXNrIGluIG5ldCBtYXNrCisgICAgICBub3RhdGlvbi4KKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9ob3N0bWFzaworCisgICAgICBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmV0d29yaywgd2l0aCB0aGUgbWFzayBpbiBob3N0IG1hc2sKKyAgICAgIG5vdGF0aW9uLgorCisgICAuLiBhdHRyaWJ1dGU6OiBudW1fYWRkcmVzc2VzCisKKyAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgYWRkcmVzc2VzIGluIHRoZSBuZXR3b3JrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwcmVmaXhsZW4KKworICAgICAgTGVuZ3RoIG9mIHRoZSBuZXR3b3JrIHByZWZpeCwgaW4gYml0cy4KKworICAgLi4gbWV0aG9kOjogaG9zdHMoKQorCisgICAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIHVzYWJsZSBob3N0cyBpbiB0aGUgbmV0d29yay4gIFRoZSB1c2FibGUKKyAgICAgIGhvc3RzIGFyZSBhbGwgdGhlIElQIGFkZHJlc3NlcyB0aGF0IGJlbG9uZyB0byB0aGUgbmV0d29yaywgZXhjZXB0IHRoZQorICAgICAgbmV0d29yayBhZGRyZXNzIGl0c2VsZiBhbmQgdGhlIG5ldHdvcmsgYnJvYWRjYXN0IGFkZHJlc3MuCisKKyAgICAgICAgID4+PiBsaXN0KGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yOScpLmhvc3RzKCkpCisgICAgICAgICBbSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpLCBJUHY0QWRkcmVzcygnMTkyLjAuMi4yJyksCisgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMycpLCBJUHY0QWRkcmVzcygnMTkyLjAuMi40JyksCisgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNScpLCBJUHY0QWRkcmVzcygnMTkyLjAuMi42JyldCisKKyAgIC4uIG1ldGhvZDo6IG92ZXJsYXBzKG90aGVyKQorCisgICAgICBgYFRydWVgYCBpZiB0aGlzIG5ldHdvcmsgaXMgcGFydGx5IG9yIHdob2xseSBjb250YWluZWQgaW4gKm90aGVyKiBvcgorICAgICAgb3IgKm90aGVyKiBpcyB3aG9sbHkgY29udGFpbmVkIGluIHRoaXMgbmV0d29yay4KKworICAgLi4gbWV0aG9kOjogYWRkcmVzc19leGNsdWRlKG5ldHdvcmspCisKKyAgICAgIENvbXB1dGVzIHRoZSBuZXR3b3JrIGRlZmluaXRpb25zIHJlc3VsdGluZyBmcm9tIHJlbW92aW5nIHRoZSBnaXZlbgorICAgICAgKm5ldHdvcmsqIGZyb20gdGhpcyBvbmUuICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG9mIG5ldHdvcmsgb2JqZWN0cy4KKyAgICAgIFJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqbmV0d29yayogaXMgbm90IGNvbXBsZXRlbHkgY29udGFpbmVkIGluCisgICAgICB0aGlzIG5ldHdvcmsuCisKKyAgICAgICAgID4+PiBuMSA9IGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yOCcpCisgICAgICAgICA+Pj4gbjIgPSBpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKQorICAgICAgICAgPj4+IGxpc3QobjEuYWRkcmVzc19leGNsdWRlKG4yKSkKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi44LzI5JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjQvMzAnKSwKKyAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4yLzMxJyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMzInKV0KKworICAgLi4gbWV0aG9kOjogc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpCisKKyAgICAgIFRoZSBzdWJuZXRzIHRoYXQgam9pbiB0byBtYWtlIHRoZSBjdXJyZW50IG5ldHdvcmsgZGVmaW5pdGlvbiwgZGVwZW5kaW5nCisgICAgICBvbiB0aGUgYXJndW1lbnQgdmFsdWVzLiAgKnByZWZpeGxlbl9kaWZmKiBpcyB0aGUgYW1vdW50IG91ciBwcmVmaXgKKyAgICAgIGxlbmd0aCBzaG91bGQgYmUgaW5jcmVhc2VkIGJ5LiAgKm5ld19wcmVmaXgqIGlzIHRoZSBkZXNpcmVkIG5ldworICAgICAgcHJlZml4IG9mIHRoZSBzdWJuZXRzOyBpdCBtdXN0IGJlIGxhcmdlciB0aGFuIG91ciBwcmVmaXguICBPbmUgYW5kCisgICAgICBvbmx5IG9uZSBvZiAqcHJlZml4bGVuX2RpZmYqIGFuZCAqbmV3X3ByZWZpeCogbXVzdCBiZSBzZXQuICBSZXR1cm5zIGFuCisgICAgICBpdGVyYXRvciBvZiBuZXR3b3JrIG9iamVjdHMuCisKKyAgICAgICAgID4+PiBsaXN0KGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1Ym5ldHMoKSkKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpXQorICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0yKSkKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjY0LzI2JyksCisgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjE5Mi8yNicpXQorICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cyhuZXdfcHJlZml4PTI2KSkKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjY0LzI2JyksCisgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjE5Mi8yNicpXQorICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cyhuZXdfcHJlZml4PTIzKSkKKyAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduZXcgcHJlZml4IG11c3QgYmUgbG9uZ2VyJykKKyAgICAgICAgIFZhbHVlRXJyb3I6IG5ldyBwcmVmaXggbXVzdCBiZSBsb25nZXIKKyAgICAgICAgID4+PiBsaXN0KGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1Ym5ldHMobmV3X3ByZWZpeD0yNSkpCisgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKV0KKworICAgLi4gbWV0aG9kOjogc3VwZXJuZXQocHJlZml4bGVuX2RpZmY9MSwgbmV3X3ByZWZpeD1Ob25lKQorCisgICAgICBUaGUgc3VwZXJuZXQgY29udGFpbmluZyB0aGlzIG5ldHdvcmsgZGVmaW5pdGlvbiwgZGVwZW5kaW5nIG9uIHRoZQorICAgICAgYXJndW1lbnQgdmFsdWVzLiAgKnByZWZpeGxlbl9kaWZmKiBpcyB0aGUgYW1vdW50IG91ciBwcmVmaXggbGVuZ3RoCisgICAgICBzaG91bGQgYmUgZGVjcmVhc2VkIGJ5LiAgKm5ld19wcmVmaXgqIGlzIHRoZSBkZXNpcmVkIG5ldyBwcmVmaXggb2YKKyAgICAgIHRoZSBzdXBlcm5ldDsgaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gb3VyIHByZWZpeC4gIE9uZSBhbmQgb25seSBvbmUKKyAgICAgIG9mICpwcmVmaXhsZW5fZGlmZiogYW5kICpuZXdfcHJlZml4KiBtdXN0IGJlIHNldC4gIFJldHVybnMgYSBzaW5nbGUKKyAgICAgIG5ldHdvcmsgb2JqZWN0LgorCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VwZXJuZXQoKQorICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yMycpCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VwZXJuZXQocHJlZml4bGVuX2RpZmY9MikKKyAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4wLjAvMjInKQorICAgICAgICAgPj4+IGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1cGVybmV0KG5ld19wcmVmaXg9MjApCisgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMC4wLzIwJykKKworICAgLi4gbWV0aG9kOjogY29tcGFyZV9uZXR3b3JrcyhvdGhlcikKKworICAgICAgQ29tcGFyZSB0aGlzIG5ldHdvcmsgdG8gKm90aGVyKi4gIEluIHRoaXMgY29tcGFyaXNvbiBvbmx5IHRoZSBuZXR3b3JrCisgICAgICBhZGRyZXNzZXMgYXJlIGNvbnNpZGVyZWQ7IGhvc3QgYml0cyBhcmVuJ3QuICBSZXR1cm5zIGVpdGhlciBgYC0xYGAsCisgICAgICBgYDBgYCBvciBgYDFgYC4KKworICAgICAgICAgPj4+IGlwX25ldHdvcmsoJzE5Mi4wLjIuMS8zMicpLmNvbXBhcmVfbmV0d29ya3MoaXBfbmV0d29yaygnMTkyLjAuMi4yLzMyJykpCisgICAgICAgICAtMQorICAgICAgICAgPj4+IGlwX25ldHdvcmsoJzE5Mi4wLjIuMS8zMicpLmNvbXBhcmVfbmV0d29ya3MoaXBfbmV0d29yaygnMTkyLjAuMi4wLzMyJykpCisgICAgICAgICAxCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4xLzMyJykuY29tcGFyZV9uZXR3b3JrcyhpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKSkKKyAgICAgICAgIDAKKworCisuLiBjbGFzczo6IElQdjZOZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1UcnVlKQorCisgICBDb25zdHJ1Y3QgYW4gSVB2NiBuZXR3b3JrIGRlZmluaXRpb24uICAqYWRkcmVzcyogY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAxLiBBIHN0cmluZyBjb25zaXN0aW5nIG9mIGFuIElQIGFkZHJlc3MgYW5kIGFuIG9wdGlvbmFsIG1hc2ssIHNlcGFyYXRlZCBieQorICAgICAgYSBzbGFzaCAoYGAvYGApLiAgVGhlIElQIGFkZHJlc3MgaXMgdGhlIG5ldHdvcmsgYWRkcmVzcywgYW5kIHRoZSBtYXNrCisgICAgICBjYW4gYmUgZWl0aGVyIGEgc2luZ2xlIG51bWJlciwgd2hpY2ggbWVhbnMgaXQncyBhICpwcmVmaXgqLCBvciBhIHN0cmluZworICAgICAgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NiBhZGRyZXNzLiAgSWYgaXQncyB0aGUgbGF0dGVyLCB0aGUgbWFzayBpcworICAgICAgaW50ZXJwcmV0ZWQgYXMgYSAqbmV0IG1hc2sqLiAgSWYgbm8gbWFzayBpcyBwcm92aWRlZCwgaXQncyBjb25zaWRlcmVkIHRvCisgICAgICBiZSBgYC8xMjhgYC4KKworICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgKmFkZHJlc3MqIHNwZWNpZmljYXRpb25zIGFyZSBlcXVpdmFsZW50OgorICAgICAgYGAyMDAxOmRiMDA6OjAvMjRgYCBhbmQgYGAyMDAxOmRiMDA6OjAvZmZmZjpmZjAwOjpgYC4KKworICAgMi4gQW4gaW50ZWdlciB0aGF0IGZpdHMgaW50byAxMjggYml0cy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhCisgICAgICBzaW5nbGUtYWRkcmVzcyBuZXR3b3JrLCB3aXRoIHRoZSBuZXR3b3JrIGFkZHJlc3MgYmVpbmcgKmFkZHJlc3MqIGFuZAorICAgICAgdGhlIG1hc2sgYmVpbmcgYGAvMTI4YGAuCisKKyAgIDMuIEFuIGludGVnZXIgcGFja2VkIGludG8gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YgbGVuZ3RoIDE2LCBiaXQtZW5kaWFuLgorICAgICAgVGhlIGludGVycHJldGF0aW9uIGlzIHNpbWlsYXIgdG8gYW4gaW50ZWdlciAqYWRkcmVzcyouCisKKyAgIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGlzIG5vdCBhIHZhbGlkIElQdjYKKyAgIGFkZHJlc3MuICBBIDpleGM6YE5ldG1hc2tWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIG1hc2sgaXMgbm90IHZhbGlkIGZvcgorICAgYW4gSVB2NiBhZGRyZXNzLgorCisgICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCBhbmQgaG9zdCBiaXRzIGFyZSBzZXQgaW4gdGhlIHN1cHBsaWVkIGFkZHJlc3MsCisgICB0aGVuIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGhvc3QgYml0cyBhcmUgbWFza2VkIG91dAorICAgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIGFkZHJlc3MuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX211bHRpY2FzdAorICAgLi4gYXR0cmlidXRlOjogaXNfcHJpdmF0ZQorICAgLi4gYXR0cmlidXRlOjogaXNfdW5zcGVjaWZpZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Jlc2VydmVkCisgICAuLiBhdHRyaWJ1dGU6OiBpc19sb29wYmFjaworICAgLi4gYXR0cmlidXRlOjogaXNfbGlua19sb2NhbAorICAgLi4gYXR0cmlidXRlOjogbmV0d29ya19hZGRyZXNzCisgICAuLiBhdHRyaWJ1dGU6OiBicm9hZGNhc3RfYWRkcmVzcworICAgLi4gYXR0cmlidXRlOjogaG9zdCBtYXNrCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX3ByZWZpeGxlbgorICAgLi4gYXR0cmlidXRlOjogY29tcHJlc3NlZAorICAgLi4gYXR0cmlidXRlOjogZXhwbG9kZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfbmV0bWFzaworICAgLi4gYXR0cmlidXRlOjogd2l0aF9ob3N0bWFzaworICAgLi4gYXR0cmlidXRlOjogbnVtX2FkZHJlc3NlcworICAgLi4gYXR0cmlidXRlOjogcHJlZml4bGVuCisgICAuLiBtZXRob2Q6OiBob3N0cygpCisgICAuLiBtZXRob2Q6OiBvdmVybGFwcyhvdGhlcikKKyAgIC4uIG1ldGhvZDo6IGFkZHJlc3NfZXhjbHVkZShuZXR3b3JrKQorICAgLi4gbWV0aG9kOjogc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpCisgICAuLiBtZXRob2Q6OiBzdXBlcm5ldChwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpCisgICAuLiBtZXRob2Q6OiBjb21wYXJlX25ldHdvcmtzKG90aGVyKQorCisgICAgICBSZWZlciB0byB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgZG9jdW1lbnRhdGlvbiBpbgorICAgICAgOmNsYXNzOmBJUHY0TmV0d29ya2AKKworICAgLi4gYXR0cmlidXRlOjogaXNfc2l0ZV9sb2NhbAorCisgICAgICBUaGVzZSBhdHRyaWJ1dGUgaXMgdHJ1ZSBmb3IgdGhlIG5ldHdvcmsgYXMgYSB3aG9sZSBpZiBpdCBpcyB0cnVlCisgICAgICB0cnVlIGZvciBib3RoIHRoZSBuZXR3b3JrIGFkZHJlc3MgYW5kIHRoZSBicm9hZGNhc3QgYWRkcmVzcworCisKK09wZXJhdG9ycworXl5eXl5eXl5eCisKK05ldHdvcmsgb2JqZWN0cyBzdXBwb3J0IHNvbWUgb3BlcmF0b3JzLiAgVW5sZXNzIHN0YXRlZCBvdGhlcndpc2UsIG9wZXJhdG9ycyBjYW4KK29ubHkgYmUgYXBwbGllZCBiZXR3ZWVuIGNvbXBhdGlibGUgb2JqZWN0cyAoaS5lLiBJUHY0IHdpdGggSVB2NCwgSVB2NiB3aXRoCitJUHY2KS4KKworCitMb2dpY2FsIG9wZXJhdG9ycworIiIiIiIiIiIiIiIiIiIiIiIKKworTmV0d29yayBvYmplY3RzIGNhbiBiZSBjb21wYXJlZCB3aXRoIHRoZSB1c3VhbCBzZXQgb2YgbG9naWNhbCBvcGVyYXRvcnMsCitzaW1pbGFybHkgdG8gYWRkcmVzcyBvYmplY3RzLgorCisKK0l0ZXJhdGlvbgorIiIiIiIiIiIiCisKK05ldHdvcmsgb2JqZWN0cyBjYW4gYmUgaXRlcmF0ZWQgdG8gbGlzdCBhbGwgdGhlIGFkZHJlc3NlcyBiZWxvbmdpbmcgdG8gdGhlCituZXR3b3JrLiAgRm9yIGl0ZXJhdGlvbiwgKmFsbCogaG9zdHMgYXJlIHJldHVybmVkLCBpbmNsdWRpbmcgdW51c2FibGUgaG9zdHMKKyhmb3IgdXNhYmxlIGhvc3RzLCB1c2UgdGhlIDptZXRoOmB+SVB2NE5ldHdvcmsuaG9zdHNgIG1ldGhvZCkuICBBbgorZXhhbXBsZTo6CisKKyAgID4+PiBmb3IgYWRkciBpbiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI4Jyk6CisgICAuLi4gICBhZGRyCisgICAuLi4KKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4yJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjMnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNCcpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi41JykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjYnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNycpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi44JykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjknKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTAnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTEnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTInKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTMnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTQnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTUnKQorCisKK05ldHdvcmtzIGFzIGNvbnRhaW5lcnMgb2YgYWRkcmVzc2VzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitOZXR3b3JrIG9iamVjdHMgY2FuIGFjdCBhcyBjb250YWluZXJzIG9mIGFkZHJlc3Nlcy4gIFNvbWUgZXhhbXBsZXM6OgorCisgICA+Pj4gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yOCcpWzBdCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4wJykKKyAgID4+PiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI4JylbMTVdCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xNScpCisgICA+Pj4gSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNicpIGluIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjgnKQorICAgVHJ1ZQorICAgPj4+IElQdjRBZGRyZXNzKCcxOTIuMC4zLjYnKSBpbiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI4JykKKyAgIEZhbHNlCisKKworSW50ZXJmYWNlIG9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGNsYXNzOjogSVB2NEludGVyZmFjZShhZGRyZXNzKQorCisgICBDb25zdHJ1Y3QgYW4gSVB2NCBpbnRlcmZhY2UuICBUaGUgbWVhbmluZyBvZiAqYWRkcmVzcyogaXMgYXMgaW4gdGhlCisgICBjb25zdHJ1Y3RvciBvZiA6Y2xhc3M6YElQdjROZXR3b3JrYCwgZXhjZXB0IHRoYXQgYXJiaXRyYXJ5IGhvc3QgYWRkcmVzc2VzCisgICBhcmUgYWx3YXlzIGFjY2VwdGVkLgorCisgICA6Y2xhc3M6YElQdjRJbnRlcmZhY2VgIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBJUHY0QWRkcmVzc2AsIHNvIGl0IGluaGVyaXRzCisgICBhbGwgdGhlIGF0dHJpYnV0ZXMgZnJvbSB0aGF0IGNsYXNzLiAgSW4gYWRkaXRpb24sIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcworICAgYXJlIGF2YWlsYWJsZToKKworICAgLi4gYXR0cmlidXRlOjogaXAKKworICAgICAgVGhlIGFkZHJlc3MgKDpjbGFzczpgSVB2NEFkZHJlc3NgKSB3aXRob3V0IG5ldHdvcmsgaW5mb3JtYXRpb24uCisKKyAgICAgICAgID4+PiBpbnRlcmZhY2UgPSBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjUvMjQnKQorICAgICAgICAgPj4+IGludGVyZmFjZS5pcAorICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNScpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5ldHdvcmsKKworICAgICAgVGhlIG5ldHdvcmsgKDpjbGFzczpgSVB2NE5ldHdvcmtgKSB0aGlzIGludGVyZmFjZSBiZWxvbmdzIHRvLgorCisgICAgICAgICA+Pj4gaW50ZXJmYWNlID0gSVB2NEludGVyZmFjZSgnMTkyLjAuMi41LzI0JykKKyAgICAgICAgID4+PiBpbnRlcmZhY2UubmV0d29yaworICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfcHJlZml4bGVuCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2Ugd2l0aCB0aGUgbWFzayBpbiBwcmVmaXggbm90YXRpb24uCisKKyAgICAgICAgID4+PiBpbnRlcmZhY2UgPSBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjUvMjQnKQorICAgICAgICAgPj4+IGludGVyZmFjZS53aXRoX3ByZWZpeGxlbgorICAgICAgICAgJzE5Mi4wLjIuNS8yNCcKKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9uZXRtYXNrCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2Ugd2l0aCB0aGUgbmV0d29yayBhcyBhIG5ldCBtYXNrLgorCisgICAgICAgICA+Pj4gaW50ZXJmYWNlID0gSVB2NEludGVyZmFjZSgnMTkyLjAuMi41LzI0JykKKyAgICAgICAgID4+PiBpbnRlcmZhY2Uud2l0aF9uZXRtYXNrCisgICAgICAgICAnMTkyLjAuMi41LzI1NS4yNTUuMjU1LjAnCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfaG9zdG1hc2sKKworICAgICAgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVyZmFjZSB3aXRoIHRoZSBuZXR3b3JrIGFzIGEgaG9zdCBtYXNrLgorCisgICAgICAgICA+Pj4gaW50ZXJmYWNlID0gSVB2NEludGVyZmFjZSgnMTkyLjAuMi41LzI0JykKKyAgICAgICAgID4+PiBpbnRlcmZhY2Uud2l0aF9ob3N0bWFzaworICAgICAgICAgJzE5Mi4wLjIuNS8wLjAuMC4yNTUnCisKKworLi4gY2xhc3M6OiBJUHY2SW50ZXJmYWNlKGFkZHJlc3MpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY2IGludGVyZmFjZS4gIFRoZSBtZWFuaW5nIG9mICphZGRyZXNzKiBpcyBhcyBpbiB0aGUKKyAgIGNvbnN0cnVjdG9yIG9mIDpjbGFzczpgSVB2Nk5ldHdvcmtgLCBleGNlcHQgdGhhdCBhcmJpdHJhcnkgaG9zdCBhZGRyZXNzZXMKKyAgIGFyZSBhbHdheXMgYWNjZXB0ZWQuCisKKyAgIDpjbGFzczpgSVB2NkludGVyZmFjZWAgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YElQdjZBZGRyZXNzYCwgc28gaXQgaW5oZXJpdHMKKyAgIGFsbCB0aGUgYXR0cmlidXRlcyBmcm9tIHRoYXQgY2xhc3MuICBJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzCisgICBhcmUgYXZhaWxhYmxlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBpcAorICAgLi4gYXR0cmlidXRlOjogbmV0d29yaworICAgLi4gYXR0cmlidXRlOjogd2l0aF9wcmVmaXhsZW4KKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfbmV0bWFzaworICAgLi4gYXR0cmlidXRlOjogd2l0aF9ob3N0bWFzaworCisgICAgICBSZWZlciB0byB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgZG9jdW1lbnRhdGlvbiBpbgorICAgICAgOmNsYXNzOmBJUHY0SW50ZXJmYWNlYC4KKworCitPdGhlciBNb2R1bGUgTGV2ZWwgRnVuY3Rpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBtb2R1bGUgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1vZHVsZSBsZXZlbCBmdW5jdGlvbnM6CisKKy4uIGZ1bmN0aW9uOjogdjRfaW50X3RvX3BhY2tlZChhZGRyZXNzKQorCisgICBSZXByZXNlbnQgYW4gYWRkcmVzcyBhcyA0IHBhY2tlZCBieXRlcyBpbiBuZXR3b3JrIChiaWctZW5kaWFuKSBvcmRlci4KKyAgICphZGRyZXNzKiBpcyBhbiBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjQgSVAgYWRkcmVzcy4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgaW50ZWdlciBpcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgdG8gYmUgYW4KKyAgIElQdjQgSVAgYWRkcmVzcy4KKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKDMyMjEyMjU5ODUpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBpcGFkZHJlc3MudjRfaW50X3RvX3BhY2tlZCgzMjIxMjI1OTg1KQorICAgYidceGMwXHgwMFx4MDJceDAxJworCisKKy4uIGZ1bmN0aW9uOjogdjZfaW50X3RvX3BhY2tlZChhZGRyZXNzKQorCisgICBSZXByZXNlbnQgYW4gYWRkcmVzcyBhcyAxNiBwYWNrZWQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisgICAqYWRkcmVzcyogaXMgYW4gaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY2IElQIGFkZHJlc3MuICBBCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIGludGVnZXIgaXMgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIHRvIGJlIGFuCisgICBJUHY2IElQIGFkZHJlc3MuCisKKworLi4gZnVuY3Rpb246OiBzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCkKKworICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG9mIHRoZSBzdW1tYXJpemVkIG5ldHdvcmsgcmFuZ2UgZ2l2ZW4gdGhlIGZpcnN0IGFuZCBsYXN0CisgICBJUCBhZGRyZXNzZXMuICAqZmlyc3QqIGlzIHRoZSBmaXJzdCA6Y2xhc3M6YElQdjRBZGRyZXNzYCBvcgorICAgOmNsYXNzOmBJUHY2QWRkcmVzc2AgaW4gdGhlIHJhbmdlIGFuZCAqbGFzdCogaXMgdGhlIGxhc3QgOmNsYXNzOmBJUHY0QWRkcmVzc2AKKyAgIG9yIDpjbGFzczpgSVB2NkFkZHJlc3NgIGluIHRoZSByYW5nZS4gIEEgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQgaWYKKyAgICpmaXJzdCogb3IgKmxhc3QqIGFyZSBub3QgSVAgYWRkcmVzc2VzIG9yIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbi4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqbGFzdCogaXMgbm90IGdyZWF0ZXIgdGhhbiAqZmlyc3QqIG9yIGlmCisgICAqZmlyc3QqIGFkZHJlc3MgdmVyc2lvbiBpcyBub3QgNCBvciA2LgorCisgICA+Pj4gW2lwYWRkciBmb3IgaXBhZGRyIGluIGlwYWRkcmVzcy5zdW1tYXJpemVfYWRkcmVzc19yYW5nZSgKKyAgIC4uLiAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpLAorICAgLi4uICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjAuMi4xMzAnKSldCisgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMzEnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTMwLzMyJyldCisKKworLi4gZnVuY3Rpb246OiBjb2xsYXBzZV9hZGRyZXNzZXMoYWRkcmVzc2VzKQorCisgICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgdGhlIGNvbGxhcHNlZCA6Y2xhc3M6YElQdjROZXR3b3JrYCBvcgorICAgOmNsYXNzOmBJUHY2TmV0d29ya2Agb2JqZWN0cy4gICphZGRyZXNzZXMqIGlzIGFuIGl0ZXJhdG9yIG9mCisgICA6Y2xhc3M6YElQdjROZXR3b3JrYCBvciA6Y2xhc3M6YElQdjZOZXR3b3JrYCBvYmplY3RzLiAgQSA6ZXhjOmBUeXBlRXJyb3JgIGlzCisgICByYWlzZWQgaWYgKmFkZHJlc3NlcyogY29udGFpbnMgbWl4ZWQgdmVyc2lvbiBvYmplY3RzLgorCisgICA+Pj4gW2lwYWRkciBmb3IgaXBhZGRyIGluCisgICAuLi4gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwKKyAgIC4uLiBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JyldKV0KKyAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JyldCisKKworLi4gZnVuY3Rpb246OiBnZXRfbWl4ZWRfdHlwZV9rZXkob2JqKQorCisgICBSZXR1cm4gYSBrZXkgc3VpdGFibGUgZm9yIHNvcnRpbmcgYmV0d2VlbiBuZXR3b3JrcyBhbmQgYWRkcmVzc2VzLiAgQWRkcmVzcworICAgYW5kIE5ldHdvcmsgb2JqZWN0cyBhcmUgbm90IHNvcnRhYmxlIGJ5IGRlZmF1bHQ7IHRoZXkncmUgZnVuZGFtZW50YWxseQorICAgZGlmZmVyZW50LCBzbyB0aGUgZXhwcmVzc2lvbjo6CisKKyAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpIDw9IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorCisgICBkb2Vzbid0IG1ha2Ugc2Vuc2UuICBUaGVyZSBhcmUgc29tZSB0aW1lcyBob3dldmVyLCB3aGVyZSB5b3UgbWF5IHdpc2ggdG8KKyAgIGhhdmUgOm1vZDpgaXBhZGRyZXNzYCBzb3J0IHRoZXNlIGFueXdheS4gIElmIHlvdSBuZWVkIHRvIGRvIHRoaXMsIHlvdSBjYW4gdXNlCisgICB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBgYGtleWBgIGFyZ3VtZW50IHRvIDpmdW5jOmBzb3J0ZWQoKWAuCisKKyAgICpvYmoqIGlzIGVpdGhlciBhIG5ldHdvcmsgb3IgYWRkcmVzcyBvYmplY3QuCisKKworQ3VzdG9tIEV4Y2VwdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHN1cHBvcnQgbW9yZSBzcGVjaWZpYyBlcnJvciByZXBvcnRpbmcgZnJvbSBjbGFzcyBjb25zdHJ1Y3RvcnMsIHRoZQorbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgorCisuLiBleGNlcHRpb246OiBBZGRyZXNzVmFsdWVFcnJvcihWYWx1ZUVycm9yKQorCisgICBBbnkgdmFsdWUgZXJyb3IgcmVsYXRlZCB0byB0aGUgYWRkcmVzcy4KKworCisuLiBleGNlcHRpb246OiBOZXRtYXNrVmFsdWVFcnJvcihWYWx1ZUVycm9yKQorCisgICBBbnkgdmFsdWUgZXJyb3IgcmVsYXRlZCB0byB0aGUgbmV0bWFzay4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lwYy5yc3QgYi9Eb2MvbGlicmFyeS9pcGMucnN0CmluZGV4IGM4NzMwNjUuLjkxZWM2OTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2lwYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXBjLnJzdApAQCAtOCw3ICs4LDcgQEAKIHRvIGNvbW11bmljYXRlLgogCiBTb21lIG1vZHVsZXMgb25seSB3b3JrIGZvciB0d28gcHJvY2Vzc2VzIHRoYXQgYXJlIG9uIHRoZSBzYW1lIG1hY2hpbmUsIGUuZy4KLTptb2Q6YHNpZ25hbGAgYW5kIDptb2Q6YHN1YnByb2Nlc3NgLiAgT3RoZXIgbW9kdWxlcyBzdXBwb3J0IG5ldHdvcmtpbmcgcHJvdG9jb2xzCis6bW9kOmBzaWduYWxgIGFuZCA6bW9kOmBtbWFwYC4gIE90aGVyIG1vZHVsZXMgc3VwcG9ydCBuZXR3b3JraW5nIHByb3RvY29scwogdGhhdCB0d28gb3IgbW9yZSBwcm9jZXNzZXMgY2FuIHVzZWQgdG8gY29tbXVuaWNhdGUgYWNyb3NzIG1hY2hpbmVzLgogCiBUaGUgbGlzdCBvZiBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgaXM6CkBAIC0xNiw5ICsxNiw5IEBACiAKIC4uIHRvY3RyZWU6OgogCi0gICBzdWJwcm9jZXNzLnJzdAogICAgc29ja2V0LnJzdAogICAgc3NsLnJzdAotICAgc2lnbmFsLnJzdAogICAgYXN5bmNvcmUucnN0CiAgICBhc3luY2hhdC5yc3QKKyAgIHNpZ25hbC5yc3QKKyAgIG1tYXAucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0IGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAppbmRleCBkMWQxMTg4Li5kYTNlNjkwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKQEAgLTQ2LDcgKzQ2LDcgQEAKID09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIEl0ZXJhdG9yICAgICAgICAgICAgICAgIEFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGUKID09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTpmdW5jOmBhY2N1bXVsYXRlYCAgICAgIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAwK3AxLCBwMCtwMStwMiwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1YGAKKzpmdW5jOmBhY2N1bXVsYXRlYCAgICAgIHAgWyxmdW5jXSAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAwK3AxLCBwMCtwMStwMiwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1YGAKIDpmdW5jOmBjaGFpbmAgICAgICAgICAgIHAsIHEsIC4uLiAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAxLCAuLi4gcGxhc3QsIHEwLCBxMSwgLi4uICAgICAgICAgICAgICAgICAgICAgIGBgY2hhaW4oJ0FCQycsICdERUYnKSAtLT4gQSBCIEMgRCBFIEZgYAogOmZ1bmM6YGNvbXByZXNzYCAgICAgICAgZGF0YSwgc2VsZWN0b3JzICAgICAgICAgICAgICAgICAoZFswXSBpZiBzWzBdKSwgKGRbMV0gaWYgc1sxXSksIC4uLiAgICAgICAgICAgICAgICAgYGBjb21wcmVzcygnQUJDREVGJywgWzEsMCwxLDAsMSwxXSkgLS0+IEEgQyBFIEZgYAogOmZ1bmM6YGRyb3B3aGlsZWAgICAgICAgcHJlZCwgc2VxICAgICAgICAgICAgICAgICAgICAgICBzZXFbbl0sIHNlcVtuKzFdLCBzdGFydGluZyB3aGVuIHByZWQgZmFpbHMgICAgICAgICAgYGBkcm9wd2hpbGUobGFtYmRhIHg6IHg8NSwgWzEsNCw2LDQsMV0pIC0tPiA2IDQgMWBgCkBAIC04NCwyMyArODQsNjEgQEAKIHN0cmVhbXMgb2YgaW5maW5pdGUgbGVuZ3RoLCBzbyB0aGV5IHNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIGJ5IGZ1bmN0aW9ucyBvcgogbG9vcHMgdGhhdCB0cnVuY2F0ZSB0aGUgc3RyZWFtLgogCi0uLiBmdW5jdGlvbjo6IGFjY3VtdWxhdGUoaXRlcmFibGUpCisuLiBmdW5jdGlvbjo6IGFjY3VtdWxhdGUoaXRlcmFibGVbLCBmdW5jXSkKIAogICAgIE1ha2UgYW4gaXRlcmF0b3IgdGhhdCByZXR1cm5zIGFjY3VtdWxhdGVkIHN1bXMuIEVsZW1lbnRzIG1heSBiZSBhbnkgYWRkYWJsZQotICAgIHR5cGUgaW5jbHVkaW5nIDpjbGFzczpgRGVjaW1hbGAgb3IgOmNsYXNzOmBGcmFjdGlvbmAuICBFcXVpdmFsZW50IHRvOjoKKyAgICB0eXBlIGluY2x1ZGluZyA6Y2xhc3M6YERlY2ltYWxgIG9yIDpjbGFzczpgRnJhY3Rpb25gLiAgSWYgdGhlIG9wdGlvbmFsCisgICAgKmZ1bmMqIGFyZ3VtZW50IGlzIHN1cHBsaWVkLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiB0d28gYXJndW1lbnRzCisgICAgYW5kIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFkZGl0aW9uLgogCi0gICAgICAgIGRlZiBhY2N1bXVsYXRlKGl0ZXJhYmxlKToKKyAgICBFcXVpdmFsZW50IHRvOjoKKworICAgICAgICBkZWYgYWNjdW11bGF0ZShpdGVyYWJsZSwgZnVuYz1vcGVyYXRvci5hZGQpOgogICAgICAgICAgICAgJ1JldHVybiBydW5uaW5nIHRvdGFscycKICAgICAgICAgICAgICMgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1CisgICAgICAgICAgICAjIGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0sIG9wZXJhdG9yLm11bCkgLS0+IDEgMiA2IDI0IDEyMAogICAgICAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQogICAgICAgICAgICAgdG90YWwgPSBuZXh0KGl0KQogICAgICAgICAgICAgeWllbGQgdG90YWwKICAgICAgICAgICAgIGZvciBlbGVtZW50IGluIGl0OgotICAgICAgICAgICAgICAgIHRvdGFsID0gdG90YWwgKyBlbGVtZW50CisgICAgICAgICAgICAgICAgdG90YWwgPSBmdW5jKHRvdGFsLCBlbGVtZW50KQogICAgICAgICAgICAgICAgIHlpZWxkIHRvdGFsCiAKKyAgICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgdXNlcyBmb3IgdGhlICpmdW5jKiBhcmd1bWVudC4gIEl0IGNhbiBiZSBzZXQgdG8KKyAgICA6ZnVuYzpgbWluYCBmb3IgYSBydW5uaW5nIG1pbmltdW0sIDpmdW5jOmBtYXhgIGZvciBhIHJ1bm5pbmcgbWF4aW11bSwgb3IKKyAgICA6ZnVuYzpgb3BlcmF0b3IubXVsYCBmb3IgYSBydW5uaW5nIHByb2R1Y3QuICBBbW9ydGl6YXRpb24gdGFibGVzIGNhbiBiZQorICAgIGJ1aWx0IGJ5IGFjY3VtdWxhdGluZyBpbnRlcmVzdCBhbmQgYXBwbHlpbmcgcGF5bWVudHMuICBGaXJzdC1vcmRlcgorICAgIGByZWN1cnJlbmNlIHJlbGF0aW9ucyA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWN1cnJlbmNlX3JlbGF0aW9uPmBfCisgICAgY2FuIGJlIG1vZGVsZWQgYnkgc3VwcGx5aW5nIHRoZSBpbml0aWFsIHZhbHVlIGluIHRoZSBpdGVyYWJsZSBhbmQgdXNpbmcgb25seQorICAgIHRoZSBhY2N1bXVsYXRlZCB0b3RhbCBpbiAqZnVuYyogYXJndW1lbnQ6OgorCisgICAgICA+Pj4gZGF0YSA9IFszLCA0LCA2LCAyLCAxLCA5LCAwLCA3LCA1LCA4XQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShkYXRhLCBvcGVyYXRvci5tdWwpKSAgICAgIyBydW5uaW5nIHByb2R1Y3QKKyAgICAgIFszLCAxMiwgNzIsIDE0NCwgMTQ0LCAxMjk2LCAwLCAwLCAwLCAwXQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShkYXRhLCBtYXgpKSAgICAgICAgICAgICAgIyBydW5uaW5nIG1heGltdW0KKyAgICAgIFszLCA0LCA2LCA2LCA2LCA5LCA5LCA5LCA5LCA5XQorCisgICAgICAjIEFtb3J0aXplIGEgNSUgbG9hbiBvZiAxMDAwIHdpdGggNCBhbm51YWwgcGF5bWVudHMgb2YgOTAKKyAgICAgID4+PiBjYXNoZmxvd3MgPSBbMTAwMCwgLTkwLCAtOTAsIC05MCwgLTkwXQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShjYXNoZmxvd3MsIGxhbWJkYSBiYWwsIHBtdDogYmFsKjEuMDUgKyBwbXQpKQorICAgICAgWzEwMDAsIDk2MC4wLCA5MTguMCwgODczLjkwMDAwMDAwMDAwMDEsIDgyNy41OTUwMDAwMDAwMDAxXQorCisgICAgICAjIENoYW90aWMgcmVjdXJyZW5jZSByZWxhdGlvbiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvZ2lzdGljX21hcAorICAgICAgPj4+IGxvZ2lzdGljX21hcCA9IGxhbWJkYSB4LCBfOiAgciAqIHggKiAoMSAtIHgpCisgICAgICA+Pj4gciA9IDMuOAorICAgICAgPj4+IHgwID0gMC40CisgICAgICA+Pj4gaW5wdXRzID0gcmVwZWF0KHgwLCAzNikgICAgICMgb25seSB0aGUgaW5pdGlhbCB2YWx1ZSBpcyB1c2VkCisgICAgICA+Pj4gW2Zvcm1hdCh4LCAnLjJmJykgZm9yIHggaW4gYWNjdW11bGF0ZShpbnB1dHMsIGxvZ2lzdGljX21hcCldCisgICAgICBbJzAuNDAnLCAnMC45MScsICcwLjMwJywgJzAuODEnLCAnMC42MCcsICcwLjkyJywgJzAuMjknLCAnMC43OScsICcwLjYzJywKKyAgICAgICAnMC44OCcgLCcwLjM5JywgJzAuOTAnLCAnMC4zMycsICcwLjg0JywgJzAuNTInLCAnMC45NScsICcwLjE4JywgJzAuNTcnLAorICAgICAgICcwLjkzJywgJzAuMjUnLCAnMC43MScsICcwLjc5JywgJzAuNjMnLCAnMC44OCcsICcwLjM5JywgJzAuOTEnLCAnMC4zMicsCisgICAgICAgJzAuODMnLCAnMC41NCcsICcwLjk1JywgJzAuMjAnLCAnMC42MCcsICcwLjkxJywgJzAuMzAnLCAnMC44MCcsICcwLjYwJ10KKwogICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBBZGRlZCB0aGUgb3B0aW9uYWwgKmZ1bmMqIHBhcmFtZXRlci4KKwogLi4gZnVuY3Rpb246OiBjaGFpbigqaXRlcmFibGVzKQogCiAgICBNYWtlIGFuIGl0ZXJhdG9yIHRoYXQgcmV0dXJucyBlbGVtZW50cyBmcm9tIHRoZSBmaXJzdCBpdGVyYWJsZSB1bnRpbCBpdCBpcwpAQCAtNjY3LDcgKzcwNSw4IEBACiAgICAgICAgcmV0dXJuIHppcChhLCBiKQogCiAgICBkZWYgZ3JvdXBlcihuLCBpdGVyYWJsZSwgZmlsbHZhbHVlPU5vbmUpOgotICAgICAgICJncm91cGVyKDMsICdBQkNERUZHJywgJ3gnKSAtLT4gQUJDIERFRiBHeHgiCisgICAgICAgIkNvbGxlY3QgZGF0YSBpbnRvIGZpeGVkLWxlbmd0aCBjaHVua3Mgb3IgYmxvY2tzIgorICAgICAgICMgZ3JvdXBlcigzLCAnQUJDREVGRycsICd4JykgLS0+IEFCQyBERUYgR3h4IgogICAgICAgIGFyZ3MgPSBbaXRlcihpdGVyYWJsZSldICogbgogICAgICAgIHJldHVybiB6aXBfbG9uZ2VzdCgqYXJncywgZmlsbHZhbHVlPWZpbGx2YWx1ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdCBiL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKaW5kZXggNDVhYmEwYS4uZDQ2ZjFjZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2NhbGUucnN0CkBAIC00NzUsOCArNDc1LDExIEBACiBsb2NhbGUgc29tZXdoYXQgcGFpbmZ1bCB0byB1c2UgY29ycmVjdGx5LgogCiBJbml0aWFsbHksIHdoZW4gYSBwcm9ncmFtIGlzIHN0YXJ0ZWQsIHRoZSBsb2NhbGUgaXMgdGhlIGBgQ2BgIGxvY2FsZSwgbm8gbWF0dGVyCi13aGF0IHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxvY2FsZSBpcy4gIFRoZSBwcm9ncmFtIG11c3QgZXhwbGljaXRseSBzYXkgdGhhdCBpdAotd2FudHMgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIHNldHRpbmdzIGJ5IGNhbGxpbmcgYGBzZXRsb2NhbGUoTENfQUxMLCAnJylgYC4KK3doYXQgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIGlzLiAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdGhlCis6ZGF0YTpgTENfQ1RZUEVgIGNhdGVnb3J5IGlzIGNoYW5nZWQgYXQgc3RhcnR1cCB0byBzZXQgdGhlIGN1cnJlbnQgbG9jYWxlCitlbmNvZGluZyB0byB0aGUgdXNlcidzIHByZWZlcnJlZCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBwcm9ncmFtIG11c3QgZXhwbGljaXRseQorc2F5IHRoYXQgaXQgd2FudHMgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIHNldHRpbmdzIGZvciBvdGhlciBjYXRlZ29yaWVzIGJ5CitjYWxsaW5nIGBgc2V0bG9jYWxlKExDX0FMTCwgJycpYGAuCiAKIEl0IGlzIGdlbmVyYWxseSBhIGJhZCBpZGVhIHRvIGNhbGwgOmZ1bmM6YHNldGxvY2FsZWAgaW4gc29tZSBsaWJyYXJ5IHJvdXRpbmUsCiBzaW5jZSBhcyBhIHNpZGUgZWZmZWN0IGl0IGFmZmVjdHMgdGhlIGVudGlyZSBwcm9ncmFtLiAgU2F2aW5nIGFuZCByZXN0b3JpbmcgaXQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0IGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKaW5kZXggZWY2NWNmYS4uNTM3YjhjNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKQEAgLTE2NCw2ICsxNjQsODcgQEAKICAgICAgIGNoYW5nZWQuICBJZiBpdCBoYXMsIHRoZSBleGlzdGluZyBzdHJlYW0gaXMgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUKICAgICAgIGZpbGUgb3BlbmVkIGFnYWluLCBiZWZvcmUgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgogCisuLiBfYmFzZS1yb3RhdGluZy1oYW5kbGVyOgorCitCYXNlUm90YXRpbmdIYW5kbGVyCiteXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSA6Y2xhc3M6YEJhc2VSb3RhdGluZ0hhbmRsZXJgIGNsYXNzLCBsb2NhdGVkIGluIHRoZSA6bW9kOmBsb2dnaW5nLmhhbmRsZXJzYAorbW9kdWxlLCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgdGhlIHJvdGF0aW5nIGZpbGUgaGFuZGxlcnMsCis6Y2xhc3M6YFJvdGF0aW5nRmlsZUhhbmRsZXJgIGFuZCA6Y2xhc3M6YFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmAuIFlvdSBzaG91bGQKK25vdCBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMgY2xhc3MsIGJ1dCBpdCBoYXMgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyB5b3UgbWF5CituZWVkIHRvIG92ZXJyaWRlLgorCisuLiBjbGFzczo6IEJhc2VSb3RhdGluZ0hhbmRsZXIoZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlKQorCisgICBUaGUgcGFyYW1ldGVycyBhcmUgYXMgZm9yIDpjbGFzczpgRmlsZUhhbmRsZXJgLiBUaGUgYXR0cmlidXRlcyBhcmU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWVyCisKKyAgICAgIElmIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byBhIGNhbGxhYmxlLCB0aGUgOm1ldGg6YHJvdGF0aW9uX2ZpbGVuYW1lYAorICAgICAgbWV0aG9kIGRlbGVnYXRlcyB0byB0aGlzIGNhbGxhYmxlLiBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlCisgICAgICBhcmUgdGhvc2UgcGFzc2VkIHRvIDptZXRoOmByb3RhdGlvbl9maWxlbmFtZWAuCisKKyAgICAgIC4uIG5vdGU6OiBUaGUgbmFtZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHF1aXRlIGEgZmV3IHRpbWVzIGR1cmluZyByb2xsb3ZlciwKKyAgICAgICAgIHNvIGl0IHNob3VsZCBiZSBhcyBzaW1wbGUgYW5kIGFzIGZhc3QgYXMgcG9zc2libGUuIEl0IHNob3VsZCBhbHNvCisgICAgICAgICByZXR1cm4gdGhlIHNhbWUgb3V0cHV0IGV2ZXJ5IHRpbWUgZm9yIGEgZ2l2ZW4gaW5wdXQsIG90aGVyd2lzZSB0aGUKKyAgICAgICAgIHJvbGxvdmVyIGJlaGF2aW91ciBtYXkgbm90IHdvcmsgYXMgZXhwZWN0ZWQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKyAgIC4uIGF0dHJpYnV0ZTo6IEJhc2VSb3RhdGluZ0hhbmRsZXIucm90YXRvcgorCisgICAgICBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYSBjYWxsYWJsZSwgdGhlIDptZXRoOmByb3RhdGVgIG1ldGhvZAorICAgICAgZGVsZWdhdGVzIHRvIHRoaXMgY2FsbGFibGUuICBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlIGFyZQorICAgICAgdGhvc2UgcGFzc2VkIHRvIDptZXRoOmByb3RhdGVgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogQmFzZVJvdGF0aW5nSGFuZGxlci5yb3RhdGlvbl9maWxlbmFtZShkZWZhdWx0X25hbWUpCisKKyAgICAgIE1vZGlmeSB0aGUgZmlsZW5hbWUgb2YgYSBsb2cgZmlsZSB3aGVuIHJvdGF0aW5nLgorCisgICAgICBUaGlzIGlzIHByb3ZpZGVkIHNvIHRoYXQgYSBjdXN0b20gZmlsZW5hbWUgY2FuIGJlIHByb3ZpZGVkLgorCisgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ25hbWVyJyBhdHRyaWJ1dGUgb2YgdGhlIGhhbmRsZXIsCisgICAgICBpZiBpdCdzIGNhbGxhYmxlLCBwYXNzaW5nIHRoZSBkZWZhdWx0IG5hbWUgdG8gaXQuIElmIHRoZSBhdHRyaWJ1dGUgaXNuJ3QKKyAgICAgIGNhbGxhYmxlICh0aGUgZGVmYXVsdCBpcyBgYE5vbmVgYCksIHRoZSBuYW1lIGlzIHJldHVybmVkIHVuY2hhbmdlZC4KKworICAgICAgOnBhcmFtIGRlZmF1bHRfbmFtZTogVGhlIGRlZmF1bHQgbmFtZSBmb3IgdGhlIGxvZyBmaWxlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisgICAuLiBtZXRob2Q6OiBCYXNlUm90YXRpbmdIYW5kbGVyLnJvdGF0ZShzb3VyY2UsIGRlc3QpCisKKyAgICAgIFdoZW4gcm90YXRpbmcsIHJvdGF0ZSB0aGUgY3VycmVudCBsb2cuCisKKyAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSAncm90YXRvcicgYXR0cmlidXRlIG9mIHRoZSBoYW5kbGVyLAorICAgICAgaWYgaXQncyBjYWxsYWJsZSwgcGFzc2luZyB0aGUgc291cmNlIGFuZCBkZXN0IGFyZ3VtZW50cyB0byBpdC4gSWYgdGhlCisgICAgICBhdHRyaWJ1dGUgaXNuJ3QgY2FsbGFibGUgKHRoZSBkZWZhdWx0IGlzIGBgTm9uZWBgKSwgdGhlIHNvdXJjZSBpcyBzaW1wbHkKKyAgICAgIHJlbmFtZWQgdG8gdGhlIGRlc3RpbmF0aW9uLgorCisgICAgICA6cGFyYW0gc291cmNlOiBUaGUgc291cmNlIGZpbGVuYW1lLiBUaGlzIGlzIG5vcm1hbGx5IHRoZSBiYXNlCisgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZS5nLiAndGVzdC5sb2cnCisgICAgICA6cGFyYW0gZGVzdDogICBUaGUgZGVzdGluYXRpb24gZmlsZW5hbWUuIFRoaXMgaXMgbm9ybWFsbHkKKyAgICAgICAgICAgICAgICAgICAgIHdoYXQgdGhlIHNvdXJjZSBpcyByb3RhdGVkIHRvLCBlLmcuICd0ZXN0LmxvZy4xJy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSByZWFzb24gdGhlIGF0dHJpYnV0ZXMgZXhpc3QgaXMgdG8gc2F2ZSB5b3UgaGF2aW5nIHRvIHN1YmNsYXNzIC0geW91IGNhbiB1c2UKK3RoZSBzYW1lIGNhbGxhYmxlcyBmb3IgaW5zdGFuY2VzIG9mIDpjbGFzczpgUm90YXRpbmdGaWxlSGFuZGxlcmAgYW5kCis6Y2xhc3M6YFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmAuIElmIGVpdGhlciB0aGUgbmFtZXIgb3Igcm90YXRvciBjYWxsYWJsZQorcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhpcyB3aWxsIGJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGFueSBvdGhlcgorZXhjZXB0aW9uIGR1cmluZyBhbiA6bWV0aDpgZW1pdGAgY2FsbCwgaS5lLiB2aWEgdGhlIDptZXRoOmBoYW5kbGVFcnJvcmAgbWV0aG9kCitvZiB0aGUgaGFuZGxlci4KKworSWYgeW91IG5lZWQgdG8gbWFrZSBtb3JlIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gcm90YXRpb24gcHJvY2Vzc2luZywgeW91IGNhbgorb3ZlcnJpZGUgdGhlIG1ldGhvZHMuCisKK0ZvciBhbiBleGFtcGxlLCBzZWUgOnJlZjpgY29va2Jvb2stcm90YXRvci1uYW1lcmAuCisKKwogLi4gX3JvdGF0aW5nLWZpbGUtaGFuZGxlcjoKIAogUm90YXRpbmdGaWxlSGFuZGxlcgpAQCAtNDUyLDYgKzUzMywxNSBAQAogICAgICAgICAgYmVoYXZpb3VyKSBidXQgY2FuIGJlIHNldCB0byBgYEZhbHNlYGAgb24gYSBgYFN5c0xvZ0hhbmRsZXJgYCBpbnN0YW5jZQogICAgICAgICAgaW4gb3JkZXIgZm9yIHRoYXQgaW5zdGFuY2UgdG8gKm5vdCogYXBwZW5kIHRoZSBOVUwgdGVybWluYXRvci4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIChTZWU6IDppc3N1ZTpgMTI0MTlgLikgSW4gZWFybGllciB2ZXJzaW9ucywgdGhlcmUgd2FzIG5vIGZhY2lsaXR5IGZvcgorICAgICAgICAgYW4gImlkZW50IiBvciAidGFnIiBwcmVmaXggdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBvZiB0aGUgbWVzc2FnZS4gVGhpcworICAgICAgICAgY2FuIG5vdyBiZSBzcGVjaWZpZWQgdXNpbmcgYSBjbGFzcy1sZXZlbCBhdHRyaWJ1dGUsIGRlZmF1bHRpbmcgdG8KKyAgICAgICAgIGBgIiJgYCB0byBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIsIGJ1dCB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbiBvbgorICAgICAgICAgYSBgYFN5c0xvZ0hhbmRsZXJgYCBpbnN0YW5jZSBpbiBvcmRlciBmb3IgdGhhdCBpbnN0YW5jZSB0byBwcmVwZW5kCisgICAgICAgICB0aGUgaWRlbnQgdG8gZXZlcnkgbWVzc2FnZSBoYW5kbGVkLiBOb3RlIHRoYXQgdGhlIHByb3ZpZGVkIGlkZW50IG11c3QKKyAgICAgICAgIGJlIHRleHQsIG5vdCBieXRlcywgYW5kIGlzIHByZXBlbmRlZCB0byB0aGUgbWVzc2FnZSBleGFjdGx5IGFzIGlzLgorCiAgICAuLiBtZXRob2Q6OiBlbmNvZGVQcmlvcml0eShmYWNpbGl0eSwgcHJpb3JpdHkpCiAKICAgICAgIEVuY29kZXMgdGhlIGZhY2lsaXR5IGFuZCBwcmlvcml0eSBpbnRvIGFuIGludGVnZXIuIFlvdSBjYW4gcGFzcyBpbiBzdHJpbmdzCkBAIC02MTQsNyArNzA0LDcgQEAKIHN1cHBvcnRzIHNlbmRpbmcgbG9nZ2luZyBtZXNzYWdlcyB0byBhbiBlbWFpbCBhZGRyZXNzIHZpYSBTTVRQLgogCiAKLS4uIGNsYXNzOjogU01UUEhhbmRsZXIobWFpbGhvc3QsIGZyb21hZGRyLCB0b2FkZHJzLCBzdWJqZWN0LCBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSkKKy4uIGNsYXNzOjogU01UUEhhbmRsZXIobWFpbGhvc3QsIGZyb21hZGRyLCB0b2FkZHJzLCBzdWJqZWN0LCBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSwgdGltZW91dD0xLjApCiAKICAgIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgU01UUEhhbmRsZXJgIGNsYXNzLiBUaGUgaW5zdGFuY2UgaXMKICAgIGluaXRpYWxpemVkIHdpdGggdGhlIGZyb20gYW5kIHRvIGFkZHJlc3NlcyBhbmQgc3ViamVjdCBsaW5lIG9mIHRoZSBlbWFpbC4gVGhlCkBAIC02MzAsNiArNzIwLDEyIEBACiAgICBhbmQgY2VydGlmaWNhdGUgZmlsZS4gKFRoaXMgdHVwbGUgaXMgcGFzc2VkIHRvIHRoZQogICAgOm1ldGg6YHNtdHBsaWIuU01UUC5zdGFydHRsc2AgbWV0aG9kLikKIAorICAgQSB0aW1lb3V0IGNhbiBiZSBzcGVjaWZpZWQgZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgU01UUCBzZXJ2ZXIgdXNpbmcgdGhlCisgICAqdGltZW91dCogYXJndW1lbnQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCB3YXMgYWRkZWQuCisKICAgIC4uIG1ldGhvZDo6IGVtaXQocmVjb3JkKQogCiAgICAgICBGb3JtYXRzIHRoZSByZWNvcmQgYW5kIHNlbmRzIGl0IHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzc2Vlcy4KQEAgLTY5MCw3ICs3ODYsNyBAQAogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKLSAgICAgIENhbGxzIDptZXRoOmBmbHVzaGAsIHNldHMgdGhlIHRhcmdldCB0byA6Y29uc3Q6YE5vbmVgIGFuZCBjbGVhcnMgdGhlCisgICAgICBDYWxscyA6bWV0aDpgZmx1c2hgLCBzZXRzIHRoZSB0YXJnZXQgdG8gYGBOb25lYGAgYW5kIGNsZWFycyB0aGUKICAgICAgIGJ1ZmZlci4KIAogCkBAIC04NTksNiArOTU1LDE1IEBACiAgICAgICBOb3RlIHRoYXQgaWYgeW91IGRvbid0IGNhbGwgdGhpcyBiZWZvcmUgeW91ciBhcHBsaWNhdGlvbiBleGl0cywgdGhlcmUKICAgICAgIG1heSBiZSBzb21lIHJlY29yZHMgc3RpbGwgbGVmdCBvbiB0aGUgcXVldWUsIHdoaWNoIHdvbid0IGJlIHByb2Nlc3NlZC4KIAorICAgLi4gbWV0aG9kOjogZW5xdWV1ZV9zZW50aW5lbCgpCisKKyAgICAgIFdyaXRlcyBhIHNlbnRpbmVsIHRvIHRoZSBxdWV1ZSB0byB0ZWxsIHRoZSBsaXN0ZW5lciB0byBxdWl0LiBUaGlzCisgICAgICBpbXBsZW1lbnRhdGlvbiB1c2VzIGBgcHV0X25vd2FpdCgpYGAuICBZb3UgbWF5IHdhbnQgdG8gb3ZlcnJpZGUgdGhpcworICAgICAgbWV0aG9kIGlmIHlvdSB3YW50IHRvIHVzZSB0aW1lb3V0cyBvciB3b3JrIHdpdGggY3VzdG9tIHF1ZXVlCisgICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CmluZGV4IGI2NjIyZTMuLjBkOTU2YjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CkBAIC0yMTMsNiArMjEzLDkgQEAKICAgIExvZ3MgYSBtZXNzYWdlIHdpdGggbGV2ZWwgOmNvbnN0OmBXQVJOSU5HYCBvbiB0aGlzIGxvZ2dlci4gVGhlIGFyZ3VtZW50cyBhcmUKICAgIGludGVycHJldGVkIGFzIGZvciA6bWV0aDpgZGVidWdgLgogCisgICAuLiBub3RlOjogVGhlcmUgaXMgYW4gb2Jzb2xldGUgbWV0aG9kIGBgd2FybmBgIHdoaWNoIGlzIGZ1bmN0aW9uYWxseQorICAgICAgaWRlbnRpY2FsIHRvIGBgd2FybmluZ2BgLiBBcyBgYHdhcm5gYCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgZG8gbm90IHVzZQorICAgICAgaXQgLSB1c2UgYGB3YXJuaW5nYGAgaW5zdGVhZC4KIAogLi4gbWV0aG9kOjogTG9nZ2VyLmVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCkBAIC00OTIsNiArNDk1LDE5IEBACiAgICAgICB3YW50IGFsbCBsb2dnaW5nIHRpbWVzIHRvIGJlIHNob3duIGluIEdNVCwgc2V0IHRoZSBgYGNvbnZlcnRlcmBgCiAgICAgICBhdHRyaWJ1dGUgaW4gdGhlIGBgRm9ybWF0dGVyYGAgY2xhc3MuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBQcmV2aW91c2x5LCB0aGUgZGVmYXVsdCBJU08gODYwMSBmb3JtYXQgd2FzIGhhcmQtY29kZWQgYXMgaW4gdGhpcworICAgICAgICAgZXhhbXBsZTogYGAyMDEwLTA5LTA2IDIyOjM4OjE1LDI5MmBgIHdoZXJlIHRoZSBwYXJ0IGJlZm9yZSB0aGUgY29tbWEgaXMKKyAgICAgICAgIGhhbmRsZWQgYnkgYSBzdHJwdGltZSBmb3JtYXQgc3RyaW5nIChgYCclWS0lbS0lZCAlSDolTTolUydgYCksIGFuZCB0aGUKKyAgICAgICAgIHBhcnQgYWZ0ZXIgdGhlIGNvbW1hIGlzIGEgbWlsbGlzZWNvbmQgdmFsdWUuIEJlY2F1c2Ugc3RycHRpbWUgZG9lcyBub3QKKyAgICAgICAgIGhhdmUgYSBmb3JtYXQgcGxhY2Vob2xkZXIgZm9yIG1pbGxpc2Vjb25kcywgdGhlIG1pbGxpc2Vjb25kIHZhbHVlIGlzCisgICAgICAgICBhcHBlbmRlZCB1c2luZyBhbm90aGVyIGZvcm1hdCBzdHJpbmcsIGBgJyVzLCUwM2QnYGAg4oCTIGFuZCBib3RoIG9mIHRoZXNlCisgICAgICAgICBmb3JtYXQgc3RyaW5ncyBoYXZlIGJlZW4gaGFyZGNvZGVkIGludG8gdGhpcyBtZXRob2QuIFdpdGggdGhlIGNoYW5nZSwKKyAgICAgICAgIHRoZXNlIHN0cmluZ3MgYXJlIGRlZmluZWQgYXMgY2xhc3MtbGV2ZWwgYXR0cmlidXRlcyB3aGljaCBjYW4gYmUKKyAgICAgICAgIG92ZXJyaWRkZW4gYXQgdGhlIGluc3RhbmNlIGxldmVsIHdoZW4gZGVzaXJlZC4gVGhlIG5hbWVzIG9mIHRoZQorICAgICAgICAgYXR0cmlidXRlcyBhcmUgYGBkZWZhdWx0X3RpbWVfZm9ybWF0YGAgKGZvciB0aGUgc3RycHRpbWUgZm9ybWF0IHN0cmluZykKKyAgICAgICAgIGFuZCBgYGRlZmF1bHRfbXNlY19mb3JtYXRgYCAoZm9yIGFwcGVuZGluZyB0aGUgbWlsbGlzZWNvbmQgdmFsdWUpLgorCiAgICAuLiBtZXRob2Q6OiBmb3JtYXRFeGNlcHRpb24oZXhjX2luZm8pCiAKICAgICAgIEZvcm1hdHMgdGhlIHNwZWNpZmllZCBleGNlcHRpb24gaW5mb3JtYXRpb24gKGEgc3RhbmRhcmQgZXhjZXB0aW9uIHR1cGxlIGFzCkBAIC05MDEsOCArOTE3LDEyIEBACiAKIC4uIGZ1bmN0aW9uOjogd2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAotICAgTG9ncyBhIG1lc3NhZ2Ugd2l0aCBsZXZlbCA6Y29uc3Q6YFdBUk5JTkdgIG9uIHRoZSByb290IGxvZ2dlci4gVGhlIGFyZ3VtZW50cyBhcmUKLSAgIGludGVycHJldGVkIGFzIGZvciA6ZnVuYzpgZGVidWdgLgorICAgTG9ncyBhIG1lc3NhZ2Ugd2l0aCBsZXZlbCA6Y29uc3Q6YFdBUk5JTkdgIG9uIHRoZSByb290IGxvZ2dlci4gVGhlIGFyZ3VtZW50cworICAgYXJlIGludGVycHJldGVkIGFzIGZvciA6ZnVuYzpgZGVidWdgLgorCisgICAuLiBub3RlOjogVGhlcmUgaXMgYW4gb2Jzb2xldGUgZnVuY3Rpb24gYGB3YXJuYGAgd2hpY2ggaXMgZnVuY3Rpb25hbGx5CisgICAgICBpZGVudGljYWwgdG8gYGB3YXJuaW5nYGAuIEFzIGBgd2FybmBgIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSBkbyBub3QgdXNlCisgICAgICBpdCAtIHVzZSBgYHdhcm5pbmdgYCBpbnN0ZWFkLgogCiAKIC4uIGZ1bmN0aW9uOjogZXJyb3IobXNnLCAqYXJncywgKiprd2FyZ3MpCkBAIC0xMDI4LDEyICsxMDQ4LDI3IEBACiAgICB8IGBgc3RyZWFtYGAgICB8IFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSAgfAogICAgfCAgICAgICAgICAgICAgfCBTdHJlYW1IYW5kbGVyLiBOb3RlIHRoYXQgdGhpcyBhcmd1bWVudCBpcyAgIHwKICAgIHwgICAgICAgICAgICAgIHwgaW5jb21wYXRpYmxlIHdpdGggJ2ZpbGVuYW1lJyAtIGlmIGJvdGggYXJlICB8Ci0gICB8ICAgICAgICAgICAgICB8IHByZXNlbnQsICdzdHJlYW0nIGlzIGlnbm9yZWQuICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgfCBwcmVzZW50LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgaGFuZGxlcnNgYCB8IElmIHNwZWNpZmllZCwgdGhpcyBzaG91bGQgYmUgYW4gaXRlcmFibGUgb2YgfAorICAgfCAgICAgICAgICAgICAgfCBhbHJlYWR5IGNyZWF0ZWQgaGFuZGxlcnMgdG8gYWRkIHRvIHRoZSByb290IHwKKyAgIHwgICAgICAgICAgICAgIHwgbG9nZ2VyLiBBbnkgaGFuZGxlcnMgd2hpY2ggZG9uJ3QgYWxyZWFkeSAgICB8CisgICB8ICAgICAgICAgICAgICB8IGhhdmUgYSBmb3JtYXR0ZXIgc2V0IHdpbGwgYmUgYXNzaWduZWQgdGhlICAgfAorICAgfCAgICAgICAgICAgICAgfCBkZWZhdWx0IGZvcm1hdHRlciBjcmVhdGVkIGluIHRoaXMgZnVuY3Rpb24uIHwKKyAgIHwgICAgICAgICAgICAgIHwgTm90ZSB0aGF0IHRoaXMgYXJndW1lbnQgaXMgaW5jb21wYXRpYmxlICAgICB8CisgICB8ICAgICAgICAgICAgICB8IHdpdGggJ2ZpbGVuYW1lJyBvciAnc3RyZWFtJyAtIGlmIGJvdGggYXJlICAgfAorICAgfCAgICAgICAgICAgICAgfCBwcmVzZW50LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgYGBzdHlsZWBgIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBgYGhhbmRsZXJzYGAgYXJndW1lbnQgd2FzIGFkZGVkLiBBZGRpdGlvbmFsIGNoZWNrcyB3ZXJlIGFkZGVkIHRvCisgICAgICBjYXRjaCBzaXR1YXRpb25zIHdoZXJlIGluY29tcGF0aWJsZSBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCAoZS5nLgorICAgICAgYGBoYW5kbGVyc2BgIHRvZ2V0aGVyIHdpdGggYGBzdHJlYW1gYCBvciBgYGZpbGVuYW1lYGAsIG9yIGBgc3RyZWFtYGAKKyAgICAgIHRvZ2V0aGVyIHdpdGggYGBmaWxlbmFtZWBgKS4KKwogCiAuLiBmdW5jdGlvbjo6IHNodXRkb3duKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbHptYS5yc3QgYi9Eb2MvbGlicmFyeS9sem1hLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDJmYWUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKQEAgLTAsMCArMSwzODIgQEAKKzptb2Q6YGx6bWFgIC0tLSBDb21wcmVzc2lvbiB1c2luZyB0aGUgTFpNQSBhbGdvcml0aG0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogbHptYQorICAgOnN5bm9wc2lzOiBBIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgbGlibHptYSBjb21wcmVzc2lvbiBsaWJyYXJ5LgorLi4gbW9kdWxlYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IE5hZGVlbSBWYXdkYSA8bmFkZWVtLnZhd2RhQGdtYWlsLmNvbT4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBjb21wcmVzc2luZyBhbmQKK2RlY29tcHJlc3NpbmcgZGF0YSB1c2luZyB0aGUgTFpNQSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIEFsc28gaW5jbHVkZWQgaXMgYSBmaWxlCitpbnRlcmZhY2Ugc3VwcG9ydGluZyB0aGUgYGAueHpgYCBhbmQgbGVnYWN5IGBgLmx6bWFgYCBmaWxlIGZvcm1hdHMgdXNlZCBieSB0aGUKKzpwcm9ncmFtOmB4emAgdXRpbGl0eSwgYXMgd2VsbCBhcyByYXcgY29tcHJlc3NlZCBzdHJlYW1zLgorCitUaGUgaW50ZXJmYWNlIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlIGlzIHZlcnkgc2ltaWxhciB0byB0aGF0IG9mIHRoZSA6bW9kOmBiejJgCittb2R1bGUuIEhvd2V2ZXIsIG5vdGUgdGhhdCA6Y2xhc3M6YExaTUFGaWxlYCBpcyAqbm90KiB0aHJlYWQtc2FmZSwgdW5saWtlCis6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCwgc28gaWYgeW91IG5lZWQgdG8gdXNlIGEgc2luZ2xlIDpjbGFzczpgTFpNQUZpbGVgIGluc3RhbmNlCitmcm9tIG11bHRpcGxlIHRocmVhZHMsIGl0IGlzIG5lY2Vzc2FyeSB0byBwcm90ZWN0IGl0IHdpdGggYSBsb2NrLgorCisKKy4uIGV4Y2VwdGlvbjo6IExaTUFFcnJvcgorCisgICBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGNvbXByZXNzaW9uIG9yCisgICBkZWNvbXByZXNzaW9uLCBvciB3aGlsZSBpbml0aWFsaXppbmcgdGhlIGNvbXByZXNzb3IvZGVjb21wcmVzc29yIHN0YXRlLgorCisKK1JlYWRpbmcgYW5kIHdyaXRpbmcgY29tcHJlc3NlZCBmaWxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCBcKiwgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQorCisgICBPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUsIHJldHVybmluZyBhIDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLgorCisgICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEKKyAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzCisgICBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGFueSBvZiBgYCJyImBgLCBgYCJyYiJgYCwgYGAidyJgYCwgYGAid2IiYGAsCisgICBgYCJhImBgIG9yIGBgImFiImBgIGZvciBiaW5hcnkgbW9kZSwgb3IgYGAicnQiYGAsIGBgInd0ImBgLCBvciBgYCJhdCJgYCBmb3IKKyAgIHRleHQgbW9kZS4gVGhlIGRlZmF1bHQgaXMgYGAicmIiYGAuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmcsIHRoZSAqZm9ybWF0KiBhbmQgKmZpbHRlcnMqIGFyZ3VtZW50cyBoYXZlCisgICB0aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYC4gSW4gdGhpcyBjYXNlLCB0aGUgKmNoZWNrKgorICAgYW5kICpwcmVzZXQqIGFyZ3VtZW50cyBzaG91bGQgbm90IGJlIHVzZWQuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHdyaXRpbmcsIHRoZSAqZm9ybWF0KiwgKmNoZWNrKiwgKnByZXNldCogYW5kCisgICAqZmlsdGVycyogYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZ3MgYXMgZm9yIDpjbGFzczpgTFpNQUNvbXByZXNzb3JgLgorCisgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgOmNsYXNzOmBMWk1BRmlsZWAKKyAgIGNvbnN0cnVjdG9yOiBgYExaTUFGaWxlKGZpbGVuYW1lLCBtb2RlLCAuLi4pYGAuIEluIHRoaXMgY2FzZSwgdGhlICplbmNvZGluZyosCisgICAqZXJyb3JzKiBhbmQgKm5ld2xpbmUqIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgRm9yIHRleHQgbW9kZSwgYSA6Y2xhc3M6YExaTUFGaWxlYCBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvcgorICAgaGFuZGxpbmcgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKworCisuLiBjbGFzczo6IExaTUFGaWxlKGZpbGVuYW1lPU5vbmUsIG1vZGU9InIiLCBcKiwgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBtb2RlLgorCisgICBBbiA6Y2xhc3M6YExaTUFGaWxlYCBjYW4gd3JhcCBhbiBhbHJlYWR5LW9wZW4gOnRlcm06YGZpbGUgb2JqZWN0YCwgb3Igb3BlcmF0ZQorICAgZGlyZWN0bHkgb24gYSBuYW1lZCBmaWxlLiBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBzcGVjaWZpZXMgZWl0aGVyIHRoZSBmaWxlCisgICBvYmplY3QgdG8gd3JhcCwgb3IgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gb3BlbiAoYXMgYSA6Y2xhc3M6YHN0cmAgb3IKKyAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCkuIFdoZW4gd3JhcHBpbmcgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QsIHRoZSB3cmFwcGVkCisgICBmaWxlIHdpbGwgbm90IGJlIGNsb3NlZCB3aGVuIHRoZSA6Y2xhc3M6YExaTUFGaWxlYCBpcyBjbG9zZWQuCisKKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBgYCJyImBgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgYGAidyJgYCBmb3IKKyAgIG92ZXJ3cml0aW5nLCBvciBgYCJhImBgIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMKKyAgIGBgInJiImBgLCBgYCJ3YiJgYCwgYW5kIGBgImFiImBgIHJlc3BlY3RpdmVseS4KKworICAgSWYgKmZpbGVuYW1lKiBpcyBhIGZpbGUgb2JqZWN0IChyYXRoZXIgdGhhbiBhbiBhY3R1YWwgZmlsZSBuYW1lKSwgYSBtb2RlIG9mCisgICBgYCJ3ImBgIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlLCBhbmQgaXMgaW5zdGVhZCBlcXVpdmFsZW50IHRvIGBgImEiYGAuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmcsIHRoZSBpbnB1dCBmaWxlIG1heSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZgorICAgbXVsdGlwbGUgc2VwYXJhdGUgY29tcHJlc3NlZCBzdHJlYW1zLiBUaGVzZSBhcmUgdHJhbnNwYXJlbnRseSBkZWNvZGVkIGFzIGEKKyAgIHNpbmdsZSBsb2dpY2FsIHN0cmVhbS4KKworICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZywgdGhlICpmb3JtYXQqIGFuZCAqZmlsdGVycyogYXJndW1lbnRzIGhhdmUKKyAgIHRoZSBzYW1lIG1lYW5pbmdzIGFzIGZvciA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgLiBJbiB0aGlzIGNhc2UsIHRoZSAqY2hlY2sqCisgICBhbmQgKnByZXNldCogYXJndW1lbnRzIHNob3VsZCBub3QgYmUgdXNlZC4KKworICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3Igd3JpdGluZywgdGhlICpmb3JtYXQqLCAqY2hlY2sqLCAqcHJlc2V0KiBhbmQKKyAgICpmaWx0ZXJzKiBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgOmNsYXNzOmBMWk1BQ29tcHJlc3NvcmAuCisKKyAgIDpjbGFzczpgTFpNQUZpbGVgIHN1cHBvcnRzIGFsbCB0aGUgbWVtYmVycyBzcGVjaWZpZWQgYnkKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgLCBleGNlcHQgZm9yIDptZXRoOmBkZXRhY2hgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgLgorICAgSXRlcmF0aW9uIGFuZCB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcmUgc3VwcG9ydGVkLgorCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZCBpcyBhbHNvIHByb3ZpZGVkOgorCisgICAuLiBtZXRob2Q6OiBwZWVrKHNpemU9LTEpCisKKyAgICAgIFJldHVybiBidWZmZXJlZCBkYXRhIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLiBBdCBsZWFzdCBvbmUKKyAgICAgIGJ5dGUgb2YgZGF0YSB3aWxsIGJlIHJldHVybmVkLCB1bmxlc3MgRU9GIGhhcyBiZWVuIHJlYWNoZWQuIFRoZSBleGFjdAorICAgICAgbnVtYmVyIG9mIGJ5dGVzIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkICh0aGUgKnNpemUqIGFyZ3VtZW50IGlzIGlnbm9yZWQpLgorCisKK0NvbXByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBjbGFzczo6IExaTUFDb21wcmVzc29yKGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBDcmVhdGUgYSBjb21wcmVzc29yIG9iamVjdCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29tcHJlc3MgZGF0YSBpbmNyZW1lbnRhbGx5LgorCisgICBGb3IgYSBtb3JlIGNvbnZlbmllbnQgd2F5IG9mIGNvbXByZXNzaW5nIGEgc2luZ2xlIGNodW5rIG9mIGRhdGEsIHNlZQorICAgOmZ1bmM6YGNvbXByZXNzYC4KKworICAgVGhlICpmb3JtYXQqIGFyZ3VtZW50IHNwZWNpZmllcyB3aGF0IGNvbnRhaW5lciBmb3JtYXQgc2hvdWxkIGJlIHVzZWQuCisgICBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCisgICAqIDpjb25zdDpgRk9STUFUX1haYDogVGhlIGBgLnh6YGAgY29udGFpbmVyIGZvcm1hdC4KKyAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9ybWF0LgorCisgICAqIDpjb25zdDpgRk9STUFUX0FMT05FYDogVGhlIGxlZ2FjeSBgYC5sem1hYGAgY29udGFpbmVyIGZvcm1hdC4KKyAgICAgIFRoaXMgZm9ybWF0IGlzIG1vcmUgbGltaXRlZCB0aGFuIGBgLnh6YGAgLS0gaXQgZG9lcyBub3Qgc3VwcG9ydCBpbnRlZ3JpdHkKKyAgICAgIGNoZWNrcyBvciBtdWx0aXBsZSBmaWx0ZXJzLgorCisgICAqIDpjb25zdDpgRk9STUFUX1JBV2A6IEEgcmF3IGRhdGEgc3RyZWFtLCBub3QgdXNpbmcgYW55IGNvbnRhaW5lciBmb3JtYXQuCisgICAgICBUaGlzIGZvcm1hdCBzcGVjaWZpZXIgZG9lcyBub3Qgc3VwcG9ydCBpbnRlZ3JpdHkgY2hlY2tzLCBhbmQgcmVxdWlyZXMgdGhhdAorICAgICAgeW91IGFsd2F5cyBzcGVjaWZ5IGEgY3VzdG9tIGZpbHRlciBjaGFpbiAoZm9yIGJvdGggY29tcHJlc3Npb24gYW5kCisgICAgICBkZWNvbXByZXNzaW9uKS4gQWRkaXRpb25hbGx5LCBkYXRhIGNvbXByZXNzZWQgaW4gdGhpcyBtYW5uZXIgY2Fubm90IGJlCisgICAgICBkZWNvbXByZXNzZWQgdXNpbmcgOmNvbnN0OmBGT1JNQVRfQVVUT2AgKHNlZSA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgKS4KKworICAgVGhlICpjaGVjayogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGludGVncml0eSBjaGVjayB0byBpbmNsdWRlIGluIHRoZQorICAgY29tcHJlc3NlZCBkYXRhLiBUaGlzIGNoZWNrIGlzIHVzZWQgd2hlbiBkZWNvbXByZXNzaW5nLCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgIGRhdGEgaGFzIG5vdCBiZWVuIGNvcnJ1cHRlZC4gUG9zc2libGUgdmFsdWVzIGFyZToKKworICAgKiA6Y29uc3Q6YENIRUNLX05PTkVgOiBObyBpbnRlZ3JpdHkgY2hlY2suCisgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgKGFuZCB0aGUgb25seSBhY2NlcHRhYmxlIHZhbHVlKSBmb3IKKyAgICAgOmNvbnN0OmBGT1JNQVRfQUxPTkVgIGFuZCA6Y29uc3Q6YEZPUk1BVF9SQVdgLgorCisgICAqIDpjb25zdDpgQ0hFQ0tfQ1JDMzJgOiAzMi1iaXQgQ3ljbGljIFJlZHVuZGFuY3kgQ2hlY2suCisKKyAgICogOmNvbnN0OmBDSEVDS19DUkM2NGA6IDY0LWJpdCBDeWNsaWMgUmVkdW5kYW5jeSBDaGVjay4KKyAgICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgOmNvbnN0OmBGT1JNQVRfWFpgLgorCisgICAqIDpjb25zdDpgQ0hFQ0tfU0hBMjU2YDogMjU2LWJpdCBTZWN1cmUgSGFzaCBBbGdvcml0aG0uCisKKyAgIElmIHRoZSBzcGVjaWZpZWQgY2hlY2sgaXMgbm90IHN1cHBvcnRlZCwgYW4gOmNsYXNzOmBMWk1BRXJyb3JgIGlzIHJhaXNlZC4KKworICAgVGhlIGNvbXByZXNzaW9uIHNldHRpbmdzIGNhbiBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgcHJlc2V0IGNvbXByZXNzaW9uCisgICBsZXZlbCAod2l0aCB0aGUgKnByZXNldCogYXJndW1lbnQpLCBvciBpbiBkZXRhaWwgYXMgYSBjdXN0b20gZmlsdGVyIGNoYWluCisgICAod2l0aCB0aGUgKmZpbHRlcnMqIGFyZ3VtZW50KS4KKworICAgVGhlICpwcmVzZXQqIGFyZ3VtZW50IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiBgYDBgYCBhbmQKKyAgIGBgOWBgIChpbmNsdXNpdmUpLCBvcHRpb25hbGx5IE9SLWVkIHdpdGggdGhlIGNvbnN0YW50CisgICA6Y29uc3Q6YFBSRVNFVF9FWFRSRU1FYC4gSWYgbmVpdGhlciAqcHJlc2V0KiBub3IgKmZpbHRlcnMqIGFyZSBnaXZlbiwgdGhlCisgICBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHVzZSA6Y29uc3Q6YFBSRVNFVF9ERUZBVUxUYCAocHJlc2V0IGxldmVsIGBgNmBgKS4KKyAgIEhpZ2hlciBwcmVzZXRzIHByb2R1Y2Ugc21hbGxlciBvdXRwdXQsIGJ1dCBtYWtlIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzCisgICBzbG93ZXIuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJbiBhZGRpdGlvbiB0byBiZWluZyBtb3JlIENQVS1pbnRlbnNpdmUsIGNvbXByZXNzaW9uIHdpdGggaGlnaGVyIHByZXNldHMKKyAgICAgIGFsc28gcmVxdWlyZXMgbXVjaCBtb3JlIG1lbW9yeSAoYW5kIHByb2R1Y2VzIG91dHB1dCB0aGF0IG5lZWRzIG1vcmUgbWVtb3J5CisgICAgICB0byBkZWNvbXByZXNzKS4gV2l0aCBwcmVzZXQgYGA5YGAgZm9yIGV4YW1wbGUsIHRoZSBvdmVyaGVhZCBmb3IgYW4KKyAgICAgIDpjbGFzczpgTFpNQUNvbXByZXNzb3JgIG9iamVjdCBjYW4gYmUgYXMgaGlnaCBhcyA4MDBNaUIuIEZvciB0aGlzIHJlYXNvbiwKKyAgICAgIGl0IGlzIGdlbmVyYWxseSBiZXN0IHRvIHN0aWNrIHdpdGggdGhlIGRlZmF1bHQgcHJlc2V0LgorCisgICBUaGUgKmZpbHRlcnMqIGFyZ3VtZW50IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGEgZmlsdGVyIGNoYWluIHNwZWNpZmllci4KKyAgIFNlZSA6cmVmOmBmaWx0ZXItY2hhaW4tc3BlY3NgIGZvciBkZXRhaWxzLgorCisgICAuLiBtZXRob2Q6OiBjb21wcmVzcyhkYXRhKQorCisgICAgICBDb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIGEgOmNsYXNzOmBieXRlc2AKKyAgICAgIG9iamVjdCBjb250YWluaW5nIGNvbXByZXNzZWQgZGF0YSBmb3IgYXQgbGVhc3QgcGFydCBvZiB0aGUgaW5wdXQuIFNvbWUgb2YKKyAgICAgICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQgaW50ZXJuYWxseSwgZm9yIHVzZSBpbiBsYXRlciBjYWxscyB0bworICAgICAgOm1ldGg6YGNvbXByZXNzYCBhbmQgOm1ldGg6YGZsdXNoYC4gVGhlIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlCisgICAgICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgb3V0cHV0IG9mIGFueSBwcmV2aW91cyBjYWxscyB0byA6bWV0aDpgY29tcHJlc3NgLgorCisgICAuLiBtZXRob2Q6OiBmbHVzaCgpCisKKyAgICAgIEZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2VzcywgcmV0dXJuaW5nIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0CisgICAgICBjb250YWluaW5nIGFueSBkYXRhIHN0b3JlZCBpbiB0aGUgY29tcHJlc3NvcidzIGludGVybmFsIGJ1ZmZlcnMuCisKKyAgICAgIFRoZSBjb21wcmVzc29yIGNhbm5vdCBiZSB1c2VkIGFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KKworCisuLiBjbGFzczo6IExaTUFEZWNvbXByZXNzb3IoZm9ybWF0PUZPUk1BVF9BVVRPLCBtZW1saW1pdD1Ob25lLCBmaWx0ZXJzPU5vbmUpCisKKyAgIENyZWF0ZSBhIGRlY29tcHJlc3NvciBvYmplY3QsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRlY29tcHJlc3MgZGF0YQorICAgaW5jcmVtZW50YWxseS4KKworICAgRm9yIGEgbW9yZSBjb252ZW5pZW50IHdheSBvZiBkZWNvbXByZXNzaW5nIGFuIGVudGlyZSBjb21wcmVzc2VkIHN0cmVhbSBhdAorICAgb25jZSwgc2VlIDpmdW5jOmBkZWNvbXByZXNzYC4KKworICAgVGhlICpmb3JtYXQqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgY29udGFpbmVyIGZvcm1hdCB0aGF0IHNob3VsZCBiZSB1c2VkLiBUaGUKKyAgIGRlZmF1bHQgaXMgOmNvbnN0OmBGT1JNQVRfQVVUT2AsIHdoaWNoIGNhbiBkZWNvbXByZXNzIGJvdGggYGAueHpgYCBhbmQKKyAgIGBgLmx6bWFgYCBmaWxlcy4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSA6Y29uc3Q6YEZPUk1BVF9YWmAsCisgICA6Y29uc3Q6YEZPUk1BVF9BTE9ORWAsIGFuZCA6Y29uc3Q6YEZPUk1BVF9SQVdgLgorCisgICBUaGUgKm1lbWxpbWl0KiBhcmd1bWVudCBzcGVjaWZpZXMgYSBsaW1pdCAoaW4gYnl0ZXMpIG9uIHRoZSBhbW91bnQgb2YgbWVtb3J5CisgICB0aGF0IHRoZSBkZWNvbXByZXNzb3IgY2FuIHVzZS4gV2hlbiB0aGlzIGFyZ3VtZW50IGlzIHVzZWQsIGRlY29tcHJlc3Npb24gd2lsbAorICAgZmFpbCB3aXRoIGFuIDpjbGFzczpgTFpNQUVycm9yYCBpZiBpdCBpcyBub3QgcG9zc2libGUgdG8gZGVjb21wcmVzcyB0aGUgaW5wdXQKKyAgIHdpdGhpbiB0aGUgZ2l2ZW4gbWVtb3J5IGxpbWl0LgorCisgICBUaGUgKmZpbHRlcnMqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgZmlsdGVyIGNoYWluIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlCisgICB0aGUgc3RyZWFtIGJlaW5nIGRlY29tcHJlc3NlZC4gVGhpcyBhcmd1bWVudCBpcyByZXF1aXJlZCBpZiAqZm9ybWF0KiBpcworICAgOmNvbnN0OmBGT1JNQVRfUkFXYCwgYnV0IHNob3VsZCBub3QgYmUgdXNlZCBmb3Igb3RoZXIgZm9ybWF0cy4KKyAgIFNlZSA6cmVmOmBmaWx0ZXItY2hhaW4tc3BlY3NgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGZpbHRlciBjaGFpbnMuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBjbGFzcyBkb2VzIG5vdCB0cmFuc3BhcmVudGx5IGhhbmRsZSBpbnB1dHMgY29udGFpbmluZyBtdWx0aXBsZQorICAgICAgY29tcHJlc3NlZCBzdHJlYW1zLCB1bmxpa2UgOmZ1bmM6YGRlY29tcHJlc3NgIGFuZCA6Y2xhc3M6YExaTUFGaWxlYC4gVG8KKyAgICAgIGRlY29tcHJlc3MgYSBtdWx0aS1zdHJlYW0gaW5wdXQgd2l0aCA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgLCB5b3UgbXVzdAorICAgICAgY3JlYXRlIGEgbmV3IGRlY29tcHJlc3NvciBmb3IgZWFjaCBzdHJlYW0uCisKKyAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSkKKworICAgICAgRGVjb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIGEgOmNsYXNzOmBieXRlc2AKKyAgICAgIG9iamVjdCBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgZGF0YSBmb3IgYXQgbGVhc3QgcGFydCBvZiB0aGUgaW5wdXQuCisgICAgICBTb21lIG9mICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQgaW50ZXJuYWxseSwgZm9yIHVzZSBpbiBsYXRlciBjYWxscyB0bworICAgICAgOm1ldGg6YGRlY29tcHJlc3NgLiBUaGUgcmV0dXJuZWQgZGF0YSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHdpdGggdGhlCisgICAgICBvdXRwdXQgb2YgYW55IHByZXZpb3VzIGNhbGxzIHRvIDptZXRoOmBkZWNvbXByZXNzYC4KKworICAgLi4gYXR0cmlidXRlOjogY2hlY2sKKworICAgICAgVGhlIElEIG9mIHRoZSBpbnRlZ3JpdHkgY2hlY2sgdXNlZCBieSB0aGUgaW5wdXQgc3RyZWFtLiBUaGlzIG1heSBiZQorICAgICAgOmNvbnN0OmBDSEVDS19VTktOT1dOYCB1bnRpbCBlbm91Z2ggb2YgdGhlIGlucHV0IGhhcyBiZWVuIGRlY29kZWQgdG8KKyAgICAgIGRldGVybWluZSB3aGF0IGludGVncml0eSBjaGVjayBpdCB1c2VzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBlb2YKKworICAgICAgVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4KKworICAgLi4gYXR0cmlidXRlOjogdW51c2VkX2RhdGEKKworICAgICAgRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4KKworICAgICAgQmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBpcyByZWFjaGVkLCB0aGlzIHdpbGwgYmUgYGBiIiJgYC4KKworCisuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBDb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIHRoZSBjb21wcmVzc2VkIGRhdGEgYXMgYQorICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgorCisgICBTZWUgOmNsYXNzOmBMWk1BQ29tcHJlc3NvcmAgYWJvdmUgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlICpmb3JtYXQqLCAqY2hlY2sqLAorICAgKnByZXNldCogYW5kICpmaWx0ZXJzKiBhcmd1bWVudHMuCisKKworLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzKGRhdGEsIGZvcm1hdD1GT1JNQVRfQVVUTywgbWVtbGltaXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBEZWNvbXByZXNzICpkYXRhKiAoYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCByZXR1cm5pbmcgdGhlIHVuY29tcHJlc3NlZCBkYXRhCisgICBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KKworICAgSWYgKmRhdGEqIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIG11bHRpcGxlIGRpc3RpbmN0IGNvbXByZXNzZWQgc3RyZWFtcywKKyAgIGRlY29tcHJlc3MgYWxsIG9mIHRoZXNlIHN0cmVhbXMsIGFuZCByZXR1cm4gdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHJlc3VsdHMuCisKKyAgIFNlZSA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgIGFib3ZlIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSAqZm9ybWF0KiwKKyAgICptZW1saW1pdCogYW5kICpmaWx0ZXJzKiBhcmd1bWVudHMuCisKKworTWlzY2VsbGFuZW91cworLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IGlzX2NoZWNrX3N1cHBvcnRlZChjaGVjaykKKworICAgUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBpbnRlZ3JpdHkgY2hlY2sgaXMgc3VwcG9ydGVkIG9uIHRoaXMgc3lzdGVtLgorCisgICA6Y29uc3Q6YENIRUNLX05PTkVgIGFuZCA6Y29uc3Q6YENIRUNLX0NSQzMyYCBhcmUgYWx3YXlzIHN1cHBvcnRlZC4KKyAgIDpjb25zdDpgQ0hFQ0tfQ1JDNjRgIGFuZCA6Y29uc3Q6YENIRUNLX1NIQTI1NmAgbWF5IGJlIHVuYXZhaWxhYmxlIGlmIHlvdSBhcmUKKyAgIHVzaW5nIGEgdmVyc2lvbiBvZiA6cHJvZ3JhbTpgbGlibHptYWAgdGhhdCB3YXMgY29tcGlsZWQgd2l0aCBhIGxpbWl0ZWQKKyAgIGZlYXR1cmUgc2V0LgorCisKKy4uIF9maWx0ZXItY2hhaW4tc3BlY3M6CisKK1NwZWNpZnlpbmcgY3VzdG9tIGZpbHRlciBjaGFpbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBmaWx0ZXIgY2hhaW4gc3BlY2lmaWVyIGlzIGEgc2VxdWVuY2Ugb2YgZGljdGlvbmFyaWVzLCB3aGVyZSBlYWNoIGRpY3Rpb25hcnkKK2NvbnRhaW5zIHRoZSBJRCBhbmQgb3B0aW9ucyBmb3IgYSBzaW5nbGUgZmlsdGVyLiBFYWNoIGRpY3Rpb25hcnkgbXVzdCBjb250YWluCit0aGUga2V5IGBgImlkImBgLCBhbmQgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBrZXlzIHRvIHNwZWNpZnkgZmlsdGVyLWRlcGVuZGVudAorb3B0aW9ucy4gVmFsaWQgZmlsdGVyIElEcyBhcmUgYXMgZm9sbG93czoKKworKiBDb21wcmVzc2lvbiBmaWx0ZXJzOgorICAgKiA6Y29uc3Q6YEZJTFRFUl9MWk1BMWAgKGZvciB1c2Ugd2l0aCA6Y29uc3Q6YEZPUk1BVF9BTE9ORWApCisgICAqIDpjb25zdDpgRklMVEVSX0xaTUEyYCAoZm9yIHVzZSB3aXRoIDpjb25zdDpgRk9STUFUX1haYCBhbmQgOmNvbnN0OmBGT1JNQVRfUkFXYCkKKworKiBEZWx0YSBmaWx0ZXI6CisgICAqIDpjb25zdDpgRklMVEVSX0RFTFRBYAorCisqIEJyYW5jaC1DYWxsLUp1bXAgKEJDSikgZmlsdGVyczoKKyAgICogOmNvbnN0OmBGSUxURVJfWDg2YAorICAgKiA6Y29uc3Q6YEZJTFRFUl9JQTY0YAorICAgKiA6Y29uc3Q6YEZJTFRFUl9BUk1gCisgICAqIDpjb25zdDpgRklMVEVSX0FSTVRIVU1CYAorICAgKiA6Y29uc3Q6YEZJTFRFUl9QT1dFUlBDYAorICAgKiA6Y29uc3Q6YEZJTFRFUl9TUEFSQ2AKKworQSBmaWx0ZXIgY2hhaW4gY2FuIGNvbnNpc3Qgb2YgdXAgdG8gNCBmaWx0ZXJzLCBhbmQgY2Fubm90IGJlIGVtcHR5LiBUaGUgbGFzdAorZmlsdGVyIGluIHRoZSBjaGFpbiBtdXN0IGJlIGEgY29tcHJlc3Npb24gZmlsdGVyLCBhbmQgYW55IG90aGVyIGZpbHRlcnMgbXVzdCBiZQorZGVsdGEgb3IgQkNKIGZpbHRlcnMuCisKK0NvbXByZXNzaW9uIGZpbHRlcnMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgKHNwZWNpZmllZCBhcyBhZGRpdGlvbmFsCitlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5IHJlcHJlc2VudGluZyB0aGUgZmlsdGVyKToKKworICAgKiBgYHByZXNldGBgOiBBIGNvbXByZXNzaW9uIHByZXNldCB0byB1c2UgYXMgYSBzb3VyY2Ugb2YgZGVmYXVsdCB2YWx1ZXMgZm9yCisgICAgIG9wdGlvbnMgdGhhdCBhcmUgbm90IHNwZWNpZmllZCBleHBsaWNpdGx5LgorICAgKiBgYGRpY3Rfc2l6ZWBgOiBEaWN0aW9uYXJ5IHNpemUgaW4gYnl0ZXMuIFRoaXMgc2hvdWxkIGJlIGJldHdlZW4gNEtpQiBhbmQKKyAgICAgMS41R2lCIChpbmNsdXNpdmUpLgorICAgKiBgYGxjYGA6IE51bWJlciBvZiBsaXRlcmFsIGNvbnRleHQgYml0cy4KKyAgICogYGBscGBgOiBOdW1iZXIgb2YgbGl0ZXJhbCBwb3NpdGlvbiBiaXRzLiBUaGUgc3VtIGBgbGMgKyBscGBgIG11c3QgYmUgYXQKKyAgICAgbW9zdCA0LgorICAgKiBgYHBiYGA6IE51bWJlciBvZiBwb3NpdGlvbiBiaXRzOyBtdXN0IGJlIGF0IG1vc3QgNC4KKyAgICogYGBtb2RlYGA6IDpjb25zdDpgTU9ERV9GQVNUYCBvciA6Y29uc3Q6YE1PREVfTk9STUFMYC4KKyAgICogYGBuaWNlX2xlbmBgOiBXaGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgIm5pY2UgbGVuZ3RoIiBmb3IgYSBtYXRjaC4KKyAgICAgVGhpcyBzaG91bGQgYmUgMjczIG9yIGxlc3MuCisgICAqIGBgbWZgYDogV2hhdCBtYXRjaCBmaW5kZXIgdG8gdXNlIC0tIDpjb25zdDpgTUZfSEMzYCwgOmNvbnN0OmBNRl9IQzRgLAorICAgICA6Y29uc3Q6YE1GX0JUMmAsIDpjb25zdDpgTUZfQlQzYCwgb3IgOmNvbnN0OmBNRl9CVDRgLgorICAgKiBgYGRlcHRoYGA6IE1heGltdW0gc2VhcmNoIGRlcHRoIHVzZWQgYnkgbWF0Y2ggZmluZGVyLiAwIChkZWZhdWx0KSBtZWFucyB0bworICAgICBzZWxlY3QgYXV0b21hdGljYWxseSBiYXNlZCBvbiBvdGhlciBmaWx0ZXIgb3B0aW9ucy4KKworVGhlIGRlbHRhIGZpbHRlciBzdG9yZXMgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYnl0ZXMsIHByb2R1Y2luZyBtb3JlIHJlcGV0aXRpdmUKK2lucHV0IGZvciB0aGUgY29tcHJlc3NvciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuIEl0IG9ubHkgc3VwcG9ydHMgYSBzaW5nbGUKK1RoZSBkZWx0YSBmaWx0ZXIgc3VwcG9ydHMgb25seSBvbmUgb3B0aW9uLCBgYGRpc3RgYC4gVGhpcyBpbmRpY2F0ZXMgdGhlIGRpc3RhbmNlCitiZXR3ZWVuIGJ5dGVzIHRvIGJlIHN1YnRyYWN0ZWQuIFRoZSBkZWZhdWx0IGlzIDEsIGkuZS4gdGFrZSB0aGUgZGlmZmVyZW5jZXMKK2JldHdlZW4gYWRqYWNlbnQgYnl0ZXMuCisKK1RoZSBCQ0ogZmlsdGVycyBhcmUgaW50ZW5kZWQgdG8gYmUgYXBwbGllZCB0byBtYWNoaW5lIGNvZGUuIFRoZXkgY29udmVydAorcmVsYXRpdmUgYnJhbmNoZXMsIGNhbGxzIGFuZCBqdW1wcyBpbiB0aGUgY29kZSB0byB1c2UgYWJzb2x1dGUgYWRkcmVzc2luZywgd2l0aAordGhlIGFpbSBvZiBpbmNyZWFzaW5nIHRoZSByZWR1bmRhbmN5IHRoYXQgY2FuIGJlIGV4cGxvaXRlZCBieSB0aGUgY29tcHJlc3Nvci4KK1RoZXNlIGZpbHRlcnMgc3VwcG9ydCBvbmUgb3B0aW9uLCBgYHN0YXJ0X29mZnNldGBgLiBUaGlzIHNwZWNpZmllcyB0aGUgYWRkcmVzcwordGhhdCBzaG91bGQgYmUgbWFwcGVkIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IGRhdGEuIFRoZSBkZWZhdWx0IGlzIDAuCisKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKK1JlYWRpbmcgaW4gYSBjb21wcmVzc2VkIGZpbGU6OgorCisgICBpbXBvcnQgbHptYQorICAgd2l0aCBsem1hLkxaTUFGaWxlKCJmaWxlLnh6IikgYXMgZjoKKyAgICAgIGZpbGVfY29udGVudCA9IGYucmVhZCgpCisKK0NyZWF0aW5nIGEgY29tcHJlc3NlZCBmaWxlOjoKKworICAgaW1wb3J0IGx6bWEKKyAgIGRhdGEgPSBiIkluc2VydCBEYXRhIEhlcmUiCisgICB3aXRoIGx6bWEuTFpNQUZpbGUoImZpbGUueHoiLCAidyIpIGFzIGY6CisgICAgICBmLndyaXRlKGRhdGEpCisKK0NvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5OjoKKworICAgaW1wb3J0IGx6bWEKKyAgIGRhdGFfaW4gPSBiIkluc2VydCBEYXRhIEhlcmUiCisgICBkYXRhX291dCA9IGx6bWEuY29tcHJlc3MoZGF0YV9pbikKKworSW5jcmVtZW50YWwgY29tcHJlc3Npb246OgorCisgICBpbXBvcnQgbHptYQorICAgbHpjID0gbHptYS5MWk1BQ29tcHJlc3NvcigpCisgICBvdXQxID0gbHpjLmNvbXByZXNzKGIiU29tZSBkYXRhXG4iKQorICAgb3V0MiA9IGx6Yy5jb21wcmVzcyhiIkFub3RoZXIgcGllY2Ugb2YgZGF0YVxuIikKKyAgIG91dDMgPSBsemMuY29tcHJlc3MoYiJFdmVuIG1vcmUgZGF0YVxuIikKKyAgIG91dDQgPSBsemMuZmx1c2goKQorICAgIyBDb25jYXRlbmF0ZSBhbGwgdGhlIHBhcnRpYWwgcmVzdWx0czoKKyAgIHJlc3VsdCA9IGIiIi5qb2luKFtvdXQxLCBvdXQyLCBvdXQzLCBvdXQ0XSkKKworV3JpdGluZyBjb21wcmVzc2VkIGRhdGEgdG8gYW4gYWxyZWFkeS1vcGVuIGZpbGU6OgorCisgICBpbXBvcnQgbHptYQorICAgd2l0aCBvcGVuKCJmaWxlLnh6IiwgIndiIikgYXMgZjoKKyAgICAgICBmLndyaXRlKGIiVGhpcyBkYXRhIHdpbGwgbm90IGJlIGNvbXByZXNzZWRcbiIpCisgICAgICAgd2l0aCBsem1hLkxaTUFGaWxlKGYsICJ3IikgYXMgbHpmOgorICAgICAgICAgICBsemYud3JpdGUoYiJUaGlzICp3aWxsKiBiZSBjb21wcmVzc2VkXG4iKQorICAgICAgIGYud3JpdGUoYiJOb3QgY29tcHJlc3NlZFxuIikKKworQ3JlYXRpbmcgYSBjb21wcmVzc2VkIGZpbGUgdXNpbmcgYSBjdXN0b20gZmlsdGVyIGNoYWluOjoKKworICAgaW1wb3J0IGx6bWEKKyAgIG15X2ZpbHRlcnMgPSBbCisgICAgICAgeyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLCAiZGlzdCI6IDV9LAorICAgICAgIHsiaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgInByZXNldCI6IDcgfCBsem1hLlBSRVNFVF9FWFRSRU1FfSwKKyAgIF0KKyAgIHdpdGggbHptYS5MWk1BRmlsZSgiZmlsZS54eiIsICJ3IiwgZmlsdGVycz1teV9maWx0ZXJzKSBhcyBmOgorICAgICAgIGYud3JpdGUoYiJibGFoIGJsYWggYmxhaCIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tYXRoLnJzdCBiL0RvYy9saWJyYXJ5L21hdGgucnN0CmluZGV4IDk4YzViMzMuLjYyYzBmMzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21hdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L21hdGgucnN0CkBAIC0xODQsNiArMTg0LDE5IEBACiAgICByZXN1bHQgaXMgY2FsY3VsYXRlZCBpbiBhIHdheSB3aGljaCBpcyBhY2N1cmF0ZSBmb3IgKngqIG5lYXIgemVyby4KIAogCisuLiBmdW5jdGlvbjo6IGxvZzIoeCkKKworICAgUmV0dXJuIHRoZSBiYXNlLTIgbG9nYXJpdGhtIG9mICp4Ki4gVGhpcyBpcyB1c3VhbGx5IG1vcmUgYWNjdXJhdGUgdGhhbgorICAgYGBsb2coeCwgMilgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIHNlZWFsc286OgorCisgICAgICA6bWV0aDpgaW50LmJpdF9sZW5ndGhgIHJldHVybnMgdGhlIG51bWJlciBvZiBiaXRzIG5lY2Vzc2FyeSB0byByZXByZXNlbnQKKyAgICAgIGFuIGludGVnZXIgaW4gYmluYXJ5LCBleGNsdWRpbmcgdGhlIHNpZ24gYW5kIGxlYWRpbmcgemVyb3MuCisKKwogLi4gZnVuY3Rpb246OiBsb2cxMCh4KQogCiAgICBSZXR1cm4gdGhlIGJhc2UtMTAgbG9nYXJpdGhtIG9mICp4Ki4gIFRoaXMgaXMgdXN1YWxseSBtb3JlIGFjY3VyYXRlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tbWFwLnJzdCBiL0RvYy9saWJyYXJ5L21tYXAucnN0CmluZGV4IDVmMGYwMDQuLjFhMTlhN2UgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21tYXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L21tYXAucnN0CkBAIC0xOTYsMTIgKzE5NiwxNiBAQAogICAgICAgbW92ZSB3aWxsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCBleGNlcHRpb24uCiAKIAotICAgLi4gbWV0aG9kOjogcmVhZChudW0pCisgICAuLiBtZXRob2Q6OiByZWFkKFtuXSkKIAotICAgICAgUmV0dXJuIGEgOmNsYXNzOmBieXRlc2AgY29udGFpbmluZyB1cCB0byAqbnVtKiBieXRlcyBzdGFydGluZyBmcm9tIHRoZQotICAgICAgY3VycmVudCBmaWxlIHBvc2l0aW9uOyB0aGUgZmlsZSBwb3NpdGlvbiBpcyB1cGRhdGVkIHRvIHBvaW50IGFmdGVyIHRoZQotICAgICAgYnl0ZXMgdGhhdCB3ZXJlIHJldHVybmVkLgorICAgICAgUmV0dXJuIGEgOmNsYXNzOmBieXRlc2AgY29udGFpbmluZyB1cCB0byAqbiogYnl0ZXMgc3RhcnRpbmcgZnJvbSB0aGUKKyAgICAgIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4gSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsICpOb25lKiBvciBuZWdhdGl2ZSwKKyAgICAgIHJldHVybiBhbGwgYnl0ZXMgZnJvbSB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIHRvIHRoZSBlbmQgb2YgdGhlCisgICAgICBtYXBwaW5nLiBUaGUgZmlsZSBwb3NpdGlvbiBpcyB1cGRhdGVkIHRvIHBvaW50IGFmdGVyIHRoZSBieXRlcyB0aGF0IHdlcmUKKyAgICAgIHJldHVybmVkLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgQXJndW1lbnQgY2FuIGJlIG9taXR0ZWQgb3IgKk5vbmUqLgogCiAgICAuLiBtZXRob2Q6OiByZWFkX2J5dGUoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tc3ZjcnQucnN0IGIvRG9jL2xpYnJhcnkvbXN2Y3J0LnJzdAppbmRleCA4ODlhMGM1Li45ZDIzNzIwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tc3ZjcnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L21zdmNydC5yc3QKQEAgLTIwLDYgKzIwLDExIEBACiBmb3IgaW50ZXJuYXRpb25hbGl6ZWQgYXBwbGljYXRpb25zLiBUaGUgd2lkZSBjaGFyIEFQSSBzaG91bGQgYmUgdXNlZCB3aGVyZQogZXZlciBwb3NzaWJsZQogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgT3BlcmF0aW9ucyBpbiB0aGlzIG1vZHVsZSBub3cgcmFpc2UgOmV4YzpgT1NFcnJvcmAgd2hlcmUgOmV4YzpgSU9FcnJvcmAKKyAgIHdhcyByYWlzZWQuCisKKwogLi4gX21zdmNydC1maWxlczoKIAogRmlsZSBPcGVyYXRpb25zCkBAIC0yOSw3ICszNCw3IEBACiAuLiBmdW5jdGlvbjo6IGxvY2tpbmcoZmQsIG1vZGUsIG5ieXRlcykKIAogICAgTG9jayBwYXJ0IG9mIGEgZmlsZSBiYXNlZCBvbiBmaWxlIGRlc2NyaXB0b3IgKmZkKiBmcm9tIHRoZSBDIHJ1bnRpbWUuICBSYWlzZXMKLSAgIDpleGM6YElPRXJyb3JgIG9uIGZhaWx1cmUuICBUaGUgbG9ja2VkIHJlZ2lvbiBvZiB0aGUgZmlsZSBleHRlbmRzIGZyb20gdGhlCisgICA6ZXhjOmBPU0Vycm9yYCBvbiBmYWlsdXJlLiAgVGhlIGxvY2tlZCByZWdpb24gb2YgdGhlIGZpbGUgZXh0ZW5kcyBmcm9tIHRoZQogICAgY3VycmVudCBmaWxlIHBvc2l0aW9uIGZvciAqbmJ5dGVzKiBieXRlcywgYW5kIG1heSBjb250aW51ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUKICAgIGZpbGUuICAqbW9kZSogbXVzdCBiZSBvbmUgb2YgdGhlIDpjb25zdDpgTEtfXCpgIGNvbnN0YW50cyBsaXN0ZWQgYmVsb3cuIE11bHRpcGxlCiAgICByZWdpb25zIGluIGEgZmlsZSBtYXkgYmUgbG9ja2VkIGF0IHRoZSBzYW1lIHRpbWUsIGJ1dCBtYXkgbm90IG92ZXJsYXAuICBBZGphY2VudApAQCAtNDEsMTMgKzQ2LDEzIEBACiAKICAgIExvY2tzIHRoZSBzcGVjaWZpZWQgYnl0ZXMuIElmIHRoZSBieXRlcyBjYW5ub3QgYmUgbG9ja2VkLCB0aGUgcHJvZ3JhbQogICAgaW1tZWRpYXRlbHkgdHJpZXMgYWdhaW4gYWZ0ZXIgMSBzZWNvbmQuICBJZiwgYWZ0ZXIgMTAgYXR0ZW1wdHMsIHRoZSBieXRlcyBjYW5ub3QKLSAgIGJlIGxvY2tlZCwgOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkLgorICAgYmUgbG9ja2VkLCA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCiAKIAogLi4gZGF0YTo6IExLX05CTENLCiAgICAgICAgICAgTEtfTkJSTENLCiAKLSAgIExvY2tzIHRoZSBzcGVjaWZpZWQgYnl0ZXMuIElmIHRoZSBieXRlcyBjYW5ub3QgYmUgbG9ja2VkLCA6ZXhjOmBJT0Vycm9yYCBpcworICAgTG9ja3MgdGhlIHNwZWNpZmllZCBieXRlcy4gSWYgdGhlIGJ5dGVzIGNhbm5vdCBiZSBsb2NrZWQsIDpleGM6YE9TRXJyb3JgIGlzCiAgICByYWlzZWQuCiAKIApAQCAtNzMsNyArNzgsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGdldF9vc2ZoYW5kbGUoZmQpCiAKLSAgIFJldHVybiB0aGUgZmlsZSBoYW5kbGUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4gIFJhaXNlcyA6ZXhjOmBJT0Vycm9yYCBpZgorICAgUmV0dXJuIHRoZSBmaWxlIGhhbmRsZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciAqZmQqLiAgUmFpc2VzIDpleGM6YE9TRXJyb3JgIGlmCiAgICAqZmQqIGlzIG5vdCByZWNvZ25pemVkLgogCiAKQEAgLTE0NCw0ICsxNDksNCBAQAogLi4gZnVuY3Rpb246OiBoZWFwbWluKCkKIAogICAgRm9yY2UgdGhlIDpjOmZ1bmM6YG1hbGxvY2AgaGVhcCB0byBjbGVhbiBpdHNlbGYgdXAgYW5kIHJldHVybiB1bnVzZWQgYmxvY2tzIHRvCi0gICB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIE9uIGZhaWx1cmUsIHRoaXMgcmFpc2VzIDpleGM6YElPRXJyb3JgLgorICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBPbiBmYWlsdXJlLCB0aGlzIHJhaXNlcyA6ZXhjOmBPU0Vycm9yYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CmluZGV4IGU5M2QxMjEuLjMzYTM1MTEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdApAQCAtMTIxLDkgKzEyMSw3IEBACiAgICAgICAgICAgcHJpbnQocS5nZXQoKSkgICAgIyBwcmludHMgIls0MiwgTm9uZSwgJ2hlbGxvJ10iCiAgICAgICAgICAgcC5qb2luKCkKIAotICAgUXVldWVzIGFyZSB0aHJlYWQgYW5kIHByb2Nlc3Mgc2FmZSwgYnV0IG5vdGUgdGhhdCB0aGV5IG11c3QgbmV2ZXIKLSAgIGJlIGluc3RhbnRpYXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIGltcG9ydGluZyBhIG1vZHVsZTogdGhpcyBjYW4gbGVhZAotICAgdG8gYSBkZWFkbG9jayEgIChzZWUgOnJlZjpgdGhyZWFkZWQtaW1wb3J0c2ApCisgICBRdWV1ZXMgYXJlIHRocmVhZCBhbmQgcHJvY2VzcyBzYWZlLgogCiAqKlBpcGVzKioKIApAQCAtMjI5LDExICsyMjcsMTEgQEAKICAgIGhvbGRzIFB5dGhvbiBvYmplY3RzIGFuZCBhbGxvd3Mgb3RoZXIgcHJvY2Vzc2VzIHRvIG1hbmlwdWxhdGUgdGhlbSB1c2luZwogICAgcHJveGllcy4KIAotICAgQSBtYW5hZ2VyIHJldHVybmVkIGJ5IDpmdW5jOmBNYW5hZ2VyYCB3aWxsIHN1cHBvcnQgdHlwZXMgOmNsYXNzOmBsaXN0YCwKLSAgIDpjbGFzczpgZGljdGAsIDpjbGFzczpgTmFtZXNwYWNlYCwgOmNsYXNzOmBMb2NrYCwgOmNsYXNzOmBSTG9ja2AsCi0gICA6Y2xhc3M6YFNlbWFwaG9yZWAsIDpjbGFzczpgQm91bmRlZFNlbWFwaG9yZWAsIDpjbGFzczpgQ29uZGl0aW9uYCwKLSAgIDpjbGFzczpgRXZlbnRgLCA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBWYWx1ZWAgYW5kIDpjbGFzczpgQXJyYXlgLiAgRm9yCi0gICBleGFtcGxlLCA6OgorICAgQSBtYW5hZ2VyIHJldHVybmVkIGJ5IDpmdW5jOmBNYW5hZ2VyYCB3aWxsIHN1cHBvcnQgdHlwZXMKKyAgIDpjbGFzczpgbGlzdGAsIDpjbGFzczpgZGljdGAsIDpjbGFzczpgTmFtZXNwYWNlYCwgOmNsYXNzOmBMb2NrYCwKKyAgIDpjbGFzczpgUkxvY2tgLCA6Y2xhc3M6YFNlbWFwaG9yZWAsIDpjbGFzczpgQm91bmRlZFNlbWFwaG9yZWAsCisgICA6Y2xhc3M6YENvbmRpdGlvbmAsIDpjbGFzczpgRXZlbnRgLCA6Y2xhc3M6YEJhcnJpZXJgLAorICAgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgVmFsdWVgIGFuZCA6Y2xhc3M6YEFycmF5YC4gIEZvciBleGFtcGxlLCA6OgogCiAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgTWFuYWdlcgogCkBAIC0yNDQsMTcgKzI0MiwxNiBAQAogICAgICAgICAgIGwucmV2ZXJzZSgpCiAKICAgICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIoKQorICAgICAgICAgIHdpdGggTWFuYWdlcigpIGFzIG1hbmFnZXI6CisgICAgICAgICAgICAgIGQgPSBtYW5hZ2VyLmRpY3QoKQorICAgICAgICAgICAgICBsID0gbWFuYWdlci5saXN0KHJhbmdlKDEwKSkKIAotICAgICAgICAgIGQgPSBtYW5hZ2VyLmRpY3QoKQotICAgICAgICAgIGwgPSBtYW5hZ2VyLmxpc3QocmFuZ2UoMTApKQorICAgICAgICAgICAgICBwID0gUHJvY2Vzcyh0YXJnZXQ9ZiwgYXJncz0oZCwgbCkpCisgICAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgICBwLmpvaW4oKQogCi0gICAgICAgICAgcCA9IFByb2Nlc3ModGFyZ2V0PWYsIGFyZ3M9KGQsIGwpKQotICAgICAgICAgIHAuc3RhcnQoKQotICAgICAgICAgIHAuam9pbigpCi0KLSAgICAgICAgICBwcmludChkKQotICAgICAgICAgIHByaW50KGwpCisgICAgICAgICAgICAgIHByaW50KGQpCisgICAgICAgICAgICAgIHByaW50KGwpCiAKICAgIHdpbGwgcHJpbnQgOjoKIApAQCAtMjgyLDEwICsyNzksMTAgQEAKICAgICAgICByZXR1cm4geCp4CiAKICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgICAgcG9vbCA9IFBvb2wocHJvY2Vzc2VzPTQpICAgICAgICAgICAgICAgIyBzdGFydCA0IHdvcmtlciBwcm9jZXNzZXMKLSAgICAgICByZXN1bHQgPSBwb29sLmFwcGx5X2FzeW5jKGYsIFsxMF0pICAgICAjIGV2YWx1YXRlICJmKDEwKSIgYXN5bmNocm9ub3VzbHkKLSAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAgICAjIHByaW50cyAiMTAwIiB1bmxlc3MgeW91ciBjb21wdXRlciBpcyAqdmVyeSogc2xvdwotICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgICAgICMgcHJpbnRzICJbMCwgMSwgNCwuLi4sIDgxXSIKKyAgICAgICB3aXRoIFBvb2wocHJvY2Vzc2VzPTQpIGFzIHBvb2wgICAgICAgICAjIHN0YXJ0IDQgd29ya2VyIHByb2Nlc3NlcworICAgICAgICAgICByZXN1bHQgPSBwb29sLmFwcGx5X2FzeW5jKGYsIFsxMF0pICMgZXZhbHVhdGUgImYoMTApIiBhc3luY2hyb25vdXNseQorICAgICAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICMgcHJpbnRzICIxMDAiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CisgICAgICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgIyBwcmludHMgIlswLCAxLCA0LC4uLiwgODFdIgogCiAKIFJlZmVyZW5jZQpAQCAtMjk4LDcgKzI5NSw3IEBACiA6Y2xhc3M6YFByb2Nlc3NgIGFuZCBleGNlcHRpb25zCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLS4uIGNsYXNzOjogUHJvY2VzcyhbZ3JvdXBbLCB0YXJnZXRbLCBuYW1lWywgYXJnc1ssIGt3YXJnc11dXV1dKQorLi4gY2xhc3M6OiBQcm9jZXNzKFtncm91cFssIHRhcmdldFssIG5hbWVbLCBhcmdzWywga3dhcmdzXV1dXV0sICosIGRhZW1vbj1Ob25lKQogCiAgICBQcm9jZXNzIG9iamVjdHMgcmVwcmVzZW50IGFjdGl2aXR5IHRoYXQgaXMgcnVuIGluIGEgc2VwYXJhdGUgcHJvY2Vzcy4gVGhlCiAgICA6Y2xhc3M6YFByb2Nlc3NgIGNsYXNzIGhhcyBlcXVpdmFsZW50cyBvZiBhbGwgdGhlIG1ldGhvZHMgb2YKQEAgLTMwOCwxOCArMzA1LDIyIEBACiAgICBzaG91bGQgYWx3YXlzIGJlIGBgTm9uZWBgOyBpdCBleGlzdHMgc29sZWx5IGZvciBjb21wYXRpYmlsaXR5IHdpdGgKICAgIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAuICAqdGFyZ2V0KiBpcyB0aGUgY2FsbGFibGUgb2JqZWN0IHRvIGJlIGludm9rZWQgYnkKICAgIHRoZSA6bWV0aDpgcnVuKClgIG1ldGhvZC4gIEl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLCBtZWFuaW5nIG5vdGhpbmcgaXMKLSAgIGNhbGxlZC4gKm5hbWUqIGlzIHRoZSBwcm9jZXNzIG5hbWUuICBCeSBkZWZhdWx0LCBhIHVuaXF1ZSBuYW1lIGlzIGNvbnN0cnVjdGVkCi0gICBvZiB0aGUgZm9ybSAnUHJvY2Vzcy1OXCA6c3ViOmAxYDpOXCA6c3ViOmAyYDouLi46TlwgOnN1Yjpga2AnIHdoZXJlIE5cCi0gICA6c3ViOmAxYCxOXCA6c3ViOmAyYCwuLi4sTlwgOnN1Yjpga2AgaXMgYSBzZXF1ZW5jZSBvZiBpbnRlZ2VycyB3aG9zZSBsZW5ndGgKLSAgIGlzIGRldGVybWluZWQgYnkgdGhlICpnZW5lcmF0aW9uKiBvZiB0aGUgcHJvY2Vzcy4gICphcmdzKiBpcyB0aGUgYXJndW1lbnQKLSAgIHR1cGxlIGZvciB0aGUgdGFyZ2V0IGludm9jYXRpb24uICAqa3dhcmdzKiBpcyBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZAotICAgYXJndW1lbnRzIGZvciB0aGUgdGFyZ2V0IGludm9jYXRpb24uICBCeSBkZWZhdWx0LCBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0bwotICAgKnRhcmdldCouCisgICBjYWxsZWQuICpuYW1lKiBpcyB0aGUgcHJvY2VzcyBuYW1lIChzZWUgOmF0dHI6YG5hbWVgIGZvciBtb3JlIGRldGFpbHMpLgorICAgKmFyZ3MqIGlzIHRoZSBhcmd1bWVudCB0dXBsZSBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLiAgKmt3YXJncyogaXMgYQorICAgZGljdGlvbmFyeSBvZiBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLiAgSWYgcHJvdmlkZWQsCisgICB0aGUga2V5d29yZC1vbmx5ICpkYWVtb24qIGFyZ3VtZW50IHNldHMgdGhlIHByb2Nlc3MgOmF0dHI6YGRhZW1vbmAgZmxhZworICAgdG8gYGBUcnVlYGAgb3IgYGBGYWxzZWBgLiAgSWYgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgdGhpcyBmbGFnIHdpbGwgYmUKKyAgIGluaGVyaXRlZCBmcm9tIHRoZSBjcmVhdGluZyBwcm9jZXNzLgorCisgICBCeSBkZWZhdWx0LCBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byAqdGFyZ2V0Ki4KIAogICAgSWYgYSBzdWJjbGFzcyBvdmVycmlkZXMgdGhlIGNvbnN0cnVjdG9yLCBpdCBtdXN0IG1ha2Ugc3VyZSBpdCBpbnZva2VzIHRoZQogICAgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciAoOm1ldGg6YFByb2Nlc3MuX19pbml0X19gKSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZQogICAgdG8gdGhlIHByb2Nlc3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRhZW1vbiogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IHJ1bigpCiAKICAgICAgIE1ldGhvZCByZXByZXNlbnRpbmcgdGhlIHByb2Nlc3MncyBhY3Rpdml0eS4KQEAgLTMzOCwxMCArMzM5LDkgQEAKIAogICAgLi4gbWV0aG9kOjogam9pbihbdGltZW91dF0pCiAKLSAgICAgIEJsb2NrIHRoZSBjYWxsaW5nIHRocmVhZCB1bnRpbCB0aGUgcHJvY2VzcyB3aG9zZSA6bWV0aDpgam9pbmAgbWV0aG9kIGlzCi0gICAgICBjYWxsZWQgdGVybWluYXRlcyBvciB1bnRpbCB0aGUgb3B0aW9uYWwgdGltZW91dCBvY2N1cnMuCi0KLSAgICAgIElmICp0aW1lb3V0KiBpcyBgYE5vbmVgYCB0aGVuIHRoZXJlIGlzIG5vIHRpbWVvdXQuCisgICAgICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKnRpbWVvdXQqIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHRoZSBtZXRob2QKKyAgICAgIGJsb2NrcyB1bnRpbCB0aGUgcHJvY2VzcyB3aG9zZSA6bWV0aDpgam9pbmAgbWV0aG9kIGlzIGNhbGxlZCB0ZXJtaW5hdGVzLgorICAgICAgSWYgKnRpbWVvdXQqIGlzIGEgcG9zaXRpdmUgbnVtYmVyLCBpdCBibG9ja3MgYXQgbW9zdCAqdGltZW91dCogc2Vjb25kcy4KIAogICAgICAgQSBwcm9jZXNzIGNhbiBiZSBqb2luZWQgbWFueSB0aW1lcy4KIApAQCAtMzUwLDExICszNTAsMTQgQEAKIAogICAgLi4gYXR0cmlidXRlOjogbmFtZQogCi0gICAgICBUaGUgcHJvY2VzcydzIG5hbWUuCisgICAgICBUaGUgcHJvY2VzcydzIG5hbWUuICBUaGUgbmFtZSBpcyBhIHN0cmluZyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcworICAgICAgb25seS4gIEl0IGhhcyBubyBzZW1hbnRpY3MuICBNdWx0aXBsZSBwcm9jZXNzZXMgbWF5IGJlIGdpdmVuIHRoZSBzYW1lCisgICAgICBuYW1lLgogCi0gICAgICBUaGUgbmFtZSBpcyBhIHN0cmluZyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcyBvbmx5LiAgSXQgaGFzIG5vCi0gICAgICBzZW1hbnRpY3MuICBNdWx0aXBsZSBwcm9jZXNzZXMgbWF5IGJlIGdpdmVuIHRoZSBzYW1lIG5hbWUuICBUaGUgaW5pdGlhbAotICAgICAgbmFtZSBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdG9yLgorICAgICAgVGhlIGluaXRpYWwgbmFtZSBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdG9yLiAgSWYgbm8gZXhwbGljaXQgbmFtZSBpcworICAgICAgcHJvdmlkZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCBhIG5hbWUgb2YgdGhlIGZvcm0KKyAgICAgICdQcm9jZXNzLU5cIDpzdWI6YDFgOk5cIDpzdWI6YDJgOi4uLjpOXCA6c3ViOmBrYCcgaXMgY29uc3RydWN0ZWQsIHdoZXJlCisgICAgICBlYWNoIE5cIDpzdWI6YGtgIGlzIHRoZSBOLXRoIGNoaWxkIG9mIGl0cyBwYXJlbnQuCiAKICAgIC4uIG1ldGhvZDo6IGlzX2FsaXZlCiAKQEAgLTQwNiw2ICs0MDksMjEgQEAKIAogICAgICAgU2VlIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgogCisgICAuLiBhdHRyaWJ1dGU6OiBzZW50aW5lbAorCisgICAgICBBIG51bWVyaWMgaGFuZGxlIG9mIGEgc3lzdGVtIG9iamVjdCB3aGljaCB3aWxsIGJlY29tZSAicmVhZHkiIHdoZW4KKyAgICAgIHRoZSBwcm9jZXNzIGVuZHMuCisKKyAgICAgIFlvdSBjYW4gdXNlIHRoaXMgdmFsdWUgaWYgeW91IHdhbnQgdG8gd2FpdCBvbiBzZXZlcmFsIGV2ZW50cyBhdAorICAgICAgb25jZSB1c2luZyA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAuICBPdGhlcndpc2UKKyAgICAgIGNhbGxpbmcgOm1ldGg6YGpvaW4oKWAgaXMgc2ltcGxlci4KKworICAgICAgT24gV2luZG93cywgdGhpcyBpcyBhbiBPUyBoYW5kbGUgdXNhYmxlIHdpdGggdGhlIGBgV2FpdEZvclNpbmdsZU9iamVjdGBgCisgICAgICBhbmQgYGBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzYGAgZmFtaWx5IG9mIEFQSSBjYWxscy4gIE9uIFVuaXgsIHRoaXMgaXMKKyAgICAgIGEgZmlsZSBkZXNjcmlwdG9yIHVzYWJsZSB3aXRoIHByaW1pdGl2ZXMgZnJvbSB0aGUgOm1vZDpgc2VsZWN0YCBtb2R1bGUuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBtZXRob2Q6OiB0ZXJtaW5hdGUoKQogCiAgICAgICBUZXJtaW5hdGUgdGhlIHByb2Nlc3MuICBPbiBVbml4IHRoaXMgaXMgZG9uZSB1c2luZyB0aGUgYGBTSUdURVJNYGAgc2lnbmFsOwpAQCAtNDQ1LDYgKzQ2Myw5IEBACiAgICAgICAgPj4+IHAuZXhpdGNvZGUgPT0gLXNpZ25hbC5TSUdURVJNCiAgICAgICAgVHJ1ZQogCisuLiBleGNlcHRpb246OiBQcm9jZXNzRXJyb3IKKworICAgVGhlIGJhc2UgY2xhc3Mgb2YgYWxsIDptb2Q6YG11bHRpcHJvY2Vzc2luZ2AgZXhjZXB0aW9ucy4KIAogLi4gZXhjZXB0aW9uOjogQnVmZmVyVG9vU2hvcnQKIApAQCAtNDU0LDYgKzQ3NSwxMyBAQAogICAgSWYgYGBlYGAgaXMgYW4gaW5zdGFuY2Ugb2YgOmV4YzpgQnVmZmVyVG9vU2hvcnRgIHRoZW4gYGBlLmFyZ3NbMF1gYCB3aWxsIGdpdmUKICAgIHRoZSBtZXNzYWdlIGFzIGEgYnl0ZSBzdHJpbmcuCiAKKy4uIGV4Y2VwdGlvbjo6IEF1dGhlbnRpY2F0aW9uRXJyb3IKKworICAgUmFpc2VkIHdoZW4gdGhlcmUgaXMgYW4gYXV0aGVudGljYXRpb24gZXJyb3IuCisKKy4uIGV4Y2VwdGlvbjo6IFRpbWVvdXRFcnJvcgorCisgICBSYWlzZWQgYnkgbWV0aG9kcyB3aXRoIGEgdGltZW91dCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMuCiAKIFBpcGVzIGFuZCBRdWV1ZXMKIH5+fn5+fn5+fn5+fn5+fn4KQEAgLTQ2NSw3ICs0OTMsNyBAQAogRm9yIHBhc3NpbmcgbWVzc2FnZXMgb25lIGNhbiB1c2UgOmZ1bmM6YFBpcGVgIChmb3IgYSBjb25uZWN0aW9uIGJldHdlZW4gdHdvCiBwcm9jZXNzZXMpIG9yIGEgcXVldWUgKHdoaWNoIGFsbG93cyBtdWx0aXBsZSBwcm9kdWNlcnMgYW5kIGNvbnN1bWVycykuCiAKLVRoZSA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBtdWx0aXByb2Nlc3NpbmcucXVldWVzLlNpbXBsZVF1ZXVlYCBhbmQgOmNsYXNzOmBKb2luYWJsZVF1ZXVlYCB0eXBlcyBhcmUgbXVsdGktcHJvZHVjZXIsCitUaGUgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgU2ltcGxlUXVldWVgIGFuZCA6Y2xhc3M6YEpvaW5hYmxlUXVldWVgIHR5cGVzIGFyZSBtdWx0aS1wcm9kdWNlciwKIG11bHRpLWNvbnN1bWVyIEZJRk8gcXVldWVzIG1vZGVsbGVkIG9uIHRoZSA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcyBpbiB0aGUKIHN0YW5kYXJkIGxpYnJhcnkuICBUaGV5IGRpZmZlciBpbiB0aGF0IDpjbGFzczpgUXVldWVgIGxhY2tzIHRoZQogOm1ldGg6YH5xdWV1ZS5RdWV1ZS50YXNrX2RvbmVgIGFuZCA6bWV0aDpgfnF1ZXVlLlF1ZXVlLmpvaW5gIG1ldGhvZHMgaW50cm9kdWNlZApAQCAtNjExLDcgKzYzOSw3IEBACiAgICAgICBleGl0cyAtLSBzZWUgOm1ldGg6YGpvaW5fdGhyZWFkYC4KIAogCi0uLiBjbGFzczo6IG11bHRpcHJvY2Vzc2luZy5xdWV1ZXMuU2ltcGxlUXVldWUoKQorLi4gY2xhc3M6OiBTaW1wbGVRdWV1ZSgpCiAKICAgIEl0IGlzIGEgc2ltcGxpZmllZCA6Y2xhc3M6YFF1ZXVlYCB0eXBlLCB2ZXJ5IGNsb3NlIHRvIGEgbG9ja2VkIDpjbGFzczpgUGlwZWAuCiAKQEAgLTYzNSw4ICs2NjMsOCBAQAogCiAgICAuLiBtZXRob2Q6OiB0YXNrX2RvbmUoKQogCi0gICAgICBJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4gVXNlZCBieSBxdWV1ZSBjb25zdW1lcgotICAgICAgdGhyZWFkcy4gIEZvciBlYWNoIDptZXRoOmB+UXVldWUuZ2V0YCB1c2VkIHRvIGZldGNoIGEgdGFzaywgYSBzdWJzZXF1ZW50CisgICAgICBJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4gVXNlZCBieSBxdWV1ZQorICAgICAgY29uc3VtZXJzLiAgRm9yIGVhY2ggOm1ldGg6YH5RdWV1ZS5nZXRgIHVzZWQgdG8gZmV0Y2ggYSB0YXNrLCBhIHN1YnNlcXVlbnQKICAgICAgIGNhbGwgdG8gOm1ldGg6YHRhc2tfZG9uZWAgdGVsbHMgdGhlIHF1ZXVlIHRoYXQgdGhlIHByb2Nlc3Npbmcgb24gdGhlIHRhc2sKICAgICAgIGlzIGNvbXBsZXRlLgogCkBAIC02NTMsNyArNjgxLDcgQEAKICAgICAgIEJsb2NrIHVudGlsIGFsbCBpdGVtcyBpbiB0aGUgcXVldWUgaGF2ZSBiZWVuIGdvdHRlbiBhbmQgcHJvY2Vzc2VkLgogCiAgICAgICBUaGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBnb2VzIHVwIHdoZW5ldmVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlCi0gICAgICBxdWV1ZS4gIFRoZSBjb3VudCBnb2VzIGRvd24gd2hlbmV2ZXIgYSBjb25zdW1lciB0aHJlYWQgY2FsbHMKKyAgICAgIHF1ZXVlLiAgVGhlIGNvdW50IGdvZXMgZG93biB3aGVuZXZlciBhIGNvbnN1bWVyIGNhbGxzCiAgICAgICA6bWV0aDpgdGFza19kb25lYCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBpdGVtIHdhcyByZXRyaWV2ZWQgYW5kIGFsbCB3b3JrIG9uCiAgICAgICBpdCBpcyBjb21wbGV0ZS4gIFdoZW4gdGhlIGNvdW50IG9mIHVuZmluaXNoZWQgdGFza3MgZHJvcHMgdG8gemVybywKICAgICAgIDptZXRoOmB+UXVldWUuam9pbmAgdW5ibG9ja3MuCkBAIC03NjcsNiArNzk1LDkgQEAKICAgICAgICp0aW1lb3V0KiBpcyBhIG51bWJlciB0aGVuIHRoaXMgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHRpbWUgaW4gc2Vjb25kcyB0bwogICAgICAgYmxvY2suICBJZiAqdGltZW91dCogaXMgYGBOb25lYGAgdGhlbiBhbiBpbmZpbml0ZSB0aW1lb3V0IGlzIHVzZWQuCiAKKyAgICAgIE5vdGUgdGhhdCBtdWx0aXBsZSBjb25uZWN0aW9uIG9iamVjdHMgbWF5IGJlIHBvbGxlZCBhdCBvbmNlIGJ5CisgICAgICB1c2luZyA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAuCisKICAgIC4uIG1ldGhvZDo6IHNlbmRfYnl0ZXMoYnVmZmVyWywgb2Zmc2V0Wywgc2l6ZV1dKQogCiAgICAgICBTZW5kIGJ5dGUgZGF0YSBmcm9tIGFuIG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlIGFzIGEKQEAgLTc4NSw5ICs4MTYsMTQgQEAKICAgICAgIHRvIHJlY2VpdmUgYW5kIHRoZSBvdGhlciBlbmQgaGFzIGNsb3NlZC4KIAogICAgICAgSWYgKm1heGxlbmd0aCogaXMgc3BlY2lmaWVkIGFuZCB0aGUgbWVzc2FnZSBpcyBsb25nZXIgdGhhbiAqbWF4bGVuZ3RoKgotICAgICAgdGhlbiA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQgYW5kIHRoZSBjb25uZWN0aW9uIHdpbGwgbm8gbG9uZ2VyIGJlCisgICAgICB0aGVuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIGNvbm5lY3Rpb24gd2lsbCBubyBsb25nZXIgYmUKICAgICAgIHJlYWRhYmxlLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgSU9FcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKKwogICAgLi4gbWV0aG9kOjogcmVjdl9ieXRlc19pbnRvKGJ1ZmZlclssIG9mZnNldF0pCiAKICAgICAgIFJlYWQgaW50byAqYnVmZmVyKiBhIGNvbXBsZXRlIG1lc3NhZ2Ugb2YgYnl0ZSBkYXRhIHNlbnQgZnJvbSB0aGUgb3RoZXIgZW5kCkBAIC04MDUsNiArODQxLDE0IEBACiAgICAgICByYWlzZWQgYW5kIHRoZSBjb21wbGV0ZSBtZXNzYWdlIGlzIGF2YWlsYWJsZSBhcyBgYGUuYXJnc1swXWBgIHdoZXJlIGBgZWBgCiAgICAgICBpcyB0aGUgZXhjZXB0aW9uIGluc3RhbmNlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQ29ubmVjdGlvbiBvYmplY3RzIHRoZW1zZWx2ZXMgY2FuIG5vdyBiZSB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHByb2Nlc3NlcworICAgICAgdXNpbmcgOm1ldGg6YENvbm5lY3Rpb24uc2VuZGAgYW5kIDptZXRoOmBDb25uZWN0aW9uLnJlY3ZgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIENvbm5lY3Rpb24gb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHJldHVybnMgdGhlCisgICAgICBjb25uZWN0aW9uIG9iamVjdCwgYW5kIDptZXRoOmBfX2V4aXRfX2AgY2FsbHMgOm1ldGg6YGNsb3NlYC4KIAogRm9yIGV4YW1wbGU6CiAKQEAgLTg1Niw2ICs5MDAsMTIgQEAKIE5vdGUgdGhhdCBvbmUgY2FuIGFsc28gY3JlYXRlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGJ5IHVzaW5nIGEgbWFuYWdlcgogb2JqZWN0IC0tIHNlZSA6cmVmOmBtdWx0aXByb2Nlc3NpbmctbWFuYWdlcnNgLgogCisuLiBjbGFzczo6IEJhcnJpZXIocGFydGllc1ssIGFjdGlvblssIHRpbWVvdXRdXSkKKworICAgQSBiYXJyaWVyIG9iamVjdDogYSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5CYXJyaWVyYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGNsYXNzOjogQm91bmRlZFNlbWFwaG9yZShbdmFsdWVdKQogCiAgICBBIGJvdW5kZWQgc2VtYXBob3JlIG9iamVjdDogYSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlYC4KQEAgLTg3MCwxNSArOTIwLDEyIEBACiAgICBJZiAqbG9jayogaXMgc3BlY2lmaWVkIHRoZW4gaXQgc2hvdWxkIGJlIGEgOmNsYXNzOmBMb2NrYCBvciA6Y2xhc3M6YFJMb2NrYAogICAgb2JqZWN0IGZyb20gOm1vZDpgbXVsdGlwcm9jZXNzaW5nYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSA6bWV0aDpgd2FpdF9mb3JgIG1ldGhvZCB3YXMgYWRkZWQuCisKIC4uIGNsYXNzOjogRXZlbnQoKQogCiAgICBBIGNsb25lIG9mIDpjbGFzczpgdGhyZWFkaW5nLkV2ZW50YC4KLSAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHN0YXRlIG9mIHRoZSBpbnRlcm5hbCBzZW1hcGhvcmUgb24gZXhpdCwgc28gaXQKLSAgIHdpbGwgYWx3YXlzIHJldHVybiBgYFRydWVgYCBleGNlcHQgaWYgYSB0aW1lb3V0IGlzIGdpdmVuIGFuZCB0aGUgb3BlcmF0aW9uCi0gICB0aW1lcyBvdXQuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCi0gICAgICBQcmV2aW91c2x5LCB0aGUgbWV0aG9kIGFsd2F5cyByZXR1cm5lZCBgYE5vbmVgYC4KIAogLi4gY2xhc3M6OiBMb2NrKCkKIApAQCAtODk0LDYgKzk0MSwxMiBAQAogCiAuLiBub3RlOjoKIAorICAgVGhlIDptZXRoOmBhY3F1aXJlYCBhbmQgOm1ldGg6YHdhaXRgIG1ldGhvZHMgb2YgZWFjaCBvZiB0aGVzZSB0eXBlcworICAgdHJlYXQgbmVnYXRpdmUgdGltZW91dHMgYXMgemVybyB0aW1lb3V0cy4gIFRoaXMgZGlmZmVycyBmcm9tCisgICA6bW9kOmB0aHJlYWRpbmdgIHdoZXJlLCBzaW5jZSB2ZXJzaW9uIDMuMiwgdGhlIGVxdWl2YWxlbnQKKyAgIDptZXRoOmBhY3F1aXJlYCBtZXRob2RzIHRyZWF0IG5lZ2F0aXZlIHRpbWVvdXRzIGFzIGluZmluaXRlCisgICB0aW1lb3V0cy4KKwogICAgT24gTWFjIE9TIFgsIGBgc2VtX3RpbWVkd2FpdGBgIGlzIHVuc3VwcG9ydGVkLCBzbyBjYWxsaW5nIGBgYWNxdWlyZSgpYGAgd2l0aAogICAgYSB0aW1lb3V0IHdpbGwgZW11bGF0ZSB0aGF0IGZ1bmN0aW9uJ3MgYmVoYXZpb3IgdXNpbmcgYSBzbGVlcGluZyBsb29wLgogCkBAIC05MTUsMTAgKzk2OCwxMSBAQAogSXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIHNoYXJlZCBvYmplY3RzIHVzaW5nIHNoYXJlZCBtZW1vcnkgd2hpY2ggY2FuIGJlCiBpbmhlcml0ZWQgYnkgY2hpbGQgcHJvY2Vzc2VzLgogCi0uLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzWywgbG9ja10pCisuLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpCiAKICAgIFJldHVybiBhIDptb2Q6YGN0eXBlc2Agb2JqZWN0IGFsbG9jYXRlZCBmcm9tIHNoYXJlZCBtZW1vcnkuICBCeSBkZWZhdWx0IHRoZQotICAgcmV0dXJuIHZhbHVlIGlzIGFjdHVhbGx5IGEgc3luY2hyb25pemVkIHdyYXBwZXIgZm9yIHRoZSBvYmplY3QuCisgICByZXR1cm4gdmFsdWUgaXMgYWN0dWFsbHkgYSBzeW5jaHJvbml6ZWQgd3JhcHBlciBmb3IgdGhlIG9iamVjdC4gIFRoZSBvYmplY3QKKyAgIGl0c2VsZiBjYW4gYmUgYWNjZXNzZWQgdmlhIHRoZSAqdmFsdWUqIGF0dHJpYnV0ZSBvZiBhIDpjbGFzczpgVmFsdWVgLgogCiAgICAqdHlwZWNvZGVfb3JfdHlwZSogZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuZWQgb2JqZWN0OiBpdCBpcyBlaXRoZXIgYQogICAgY3R5cGVzIHR5cGUgb3IgYSBvbmUgY2hhcmFjdGVyIHR5cGVjb2RlIG9mIHRoZSBraW5kIHVzZWQgYnkgdGhlIDptb2Q6YGFycmF5YApAQCAtMTAwNyw3ICsxMDYxLDcgQEAKICAgIGF0dHJpYnV0ZXMgd2hpY2ggYWxsb3cgb25lIHRvIHVzZSBpdCB0byBzdG9yZSBhbmQgcmV0cmlldmUgc3RyaW5ncyAtLSBzZWUKICAgIGRvY3VtZW50YXRpb24gZm9yIDptb2Q6YGN0eXBlc2AuCiAKLS4uIGZ1bmN0aW9uOjogQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKmFyZ3NbLCBsb2NrXSkKKy4uIGZ1bmN0aW9uOjogQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiwgbG9jaz1UcnVlKQogCiAgICBUaGUgc2FtZSBhcyA6ZnVuYzpgUmF3QXJyYXlgIGV4Y2VwdCB0aGF0IGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgKmxvY2sqIGEKICAgIHByb2Nlc3Mtc2FmZSBzeW5jaHJvbml6YXRpb24gd3JhcHBlciBtYXkgYmUgcmV0dXJuZWQgaW5zdGVhZCBvZiBhIHJhdyBjdHlwZXMKQEAgLTEwMjIsNyArMTA3Niw3IEBACiAKICAgIE5vdGUgdGhhdCAqbG9jayogaXMgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQuCiAKLS4uIGZ1bmN0aW9uOjogVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3NbLCBsb2NrXSkKKy4uIGZ1bmN0aW9uOjogVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9VHJ1ZSkKIAogICAgVGhlIHNhbWUgYXMgOmZ1bmM6YFJhd1ZhbHVlYCBleGNlcHQgdGhhdCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mICpsb2NrKiBhCiAgICBwcm9jZXNzLXNhZmUgc3luY2hyb25pemF0aW9uIHdyYXBwZXIgbWF5IGJlIHJldHVybmVkIGluc3RlYWQgb2YgYSByYXcgY3R5cGVzCkBAIC0xMTI0LDggKzExNzgsMTAgQEAKIH5+fn5+fn5+CiAKIE1hbmFnZXJzIHByb3ZpZGUgYSB3YXkgdG8gY3JlYXRlIGRhdGEgd2hpY2ggY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGRpZmZlcmVudAotcHJvY2Vzc2VzLiBBIG1hbmFnZXIgb2JqZWN0IGNvbnRyb2xzIGEgc2VydmVyIHByb2Nlc3Mgd2hpY2ggbWFuYWdlcyAqc2hhcmVkCi1vYmplY3RzKi4gIE90aGVyIHByb2Nlc3NlcyBjYW4gYWNjZXNzIHRoZSBzaGFyZWQgb2JqZWN0cyBieSB1c2luZyBwcm94aWVzLgorcHJvY2Vzc2VzLCBpbmNsdWRpbmcgc2hhcmluZyBvdmVyIGEgbmV0d29yayBiZXR3ZWVuIHByb2Nlc3NlcyBydW5uaW5nIG9uCitkaWZmZXJlbnQgbWFjaGluZXMuIEEgbWFuYWdlciBvYmplY3QgY29udHJvbHMgYSBzZXJ2ZXIgcHJvY2VzcyB3aGljaCBtYW5hZ2VzCisqc2hhcmVkIG9iamVjdHMqLiAgT3RoZXIgcHJvY2Vzc2VzIGNhbiBhY2Nlc3MgdGhlIHNoYXJlZCBvYmplY3RzIGJ5IHVzaW5nCitwcm94aWVzLgogCiAuLiBmdW5jdGlvbjo6IG11bHRpcHJvY2Vzc2luZy5NYW5hZ2VyKCkKIApAQCAtMTE5OCw5ICsxMjU0LDEwIEBACiAgICAgICB0eXBlIG9mIHNoYXJlZCBvYmplY3QuICBUaGlzIG11c3QgYmUgYSBzdHJpbmcuCiAKICAgICAgICpjYWxsYWJsZSogaXMgYSBjYWxsYWJsZSB1c2VkIGZvciBjcmVhdGluZyBvYmplY3RzIGZvciB0aGlzIHR5cGUKLSAgICAgIGlkZW50aWZpZXIuICBJZiBhIG1hbmFnZXIgaW5zdGFuY2Ugd2lsbCBiZSBjcmVhdGVkIHVzaW5nIHRoZQotICAgICAgOm1ldGg6YGZyb21fYWRkcmVzc2AgY2xhc3NtZXRob2Qgb3IgaWYgdGhlICpjcmVhdGVfbWV0aG9kKiBhcmd1bWVudCBpcwotICAgICAgYGBGYWxzZWBgIHRoZW4gdGhpcyBjYW4gYmUgbGVmdCBhcyBgYE5vbmVgYC4KKyAgICAgIGlkZW50aWZpZXIuICBJZiBhIG1hbmFnZXIgaW5zdGFuY2Ugd2lsbCBiZSBjb25uZWN0ZWQgdG8gdGhlCisgICAgICBzZXJ2ZXIgdXNpbmcgdGhlIDptZXRoOmBjb25uZWN0YCBtZXRob2QsIG9yIGlmIHRoZQorICAgICAgKmNyZWF0ZV9tZXRob2QqIGFyZ3VtZW50IGlzIGBgRmFsc2VgYCB0aGVuIHRoaXMgY2FuIGJlIGxlZnQgYXMKKyAgICAgIGBgTm9uZWBgLgogCiAgICAgICAqcHJveHl0eXBlKiBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgQmFzZVByb3h5YCB3aGljaCBpcyB1c2VkIHRvIGNyZWF0ZQogICAgICAgcHJveGllcyBmb3Igc2hhcmVkIG9iamVjdHMgd2l0aCB0aGlzICp0eXBlaWQqLiAgSWYgYGBOb25lYGAgdGhlbiBhIHByb3h5CkBAIC0xMjMyLDYgKzEyODksMTQgQEAKIAogICAgICAgVGhlIGFkZHJlc3MgdXNlZCBieSB0aGUgbWFuYWdlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE1hbmFnZXIgb2JqZWN0cyBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgLS0gc2VlCisgICAgICA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgLiAgOm1ldGg6YF9fZW50ZXJfX2Agc3RhcnRzIHRoZSBzZXJ2ZXIKKyAgICAgIHByb2Nlc3MgKGlmIGl0IGhhcyBub3QgYWxyZWFkeSBzdGFydGVkKSBhbmQgdGhlbiByZXR1cm5zIHRoZQorICAgICAgbWFuYWdlciBvYmplY3QuICA6bWV0aDpgX19leGl0X19gIGNhbGxzIDptZXRoOmBzaHV0ZG93bmAuCisKKyAgICAgIEluIHByZXZpb3VzIHZlcnNpb25zIDptZXRoOmBfX2VudGVyX19gIGRpZCBub3Qgc3RhcnQgdGhlCisgICAgICBtYW5hZ2VyJ3Mgc2VydmVyIHByb2Nlc3MgaWYgaXQgd2FzIG5vdCBhbHJlYWR5IHN0YXJ0ZWQuCiAKIC4uIGNsYXNzOjogU3luY01hbmFnZXIKIApAQCAtMTI0MSw2ICsxMzA2LDEzIEBACiAKICAgIEl0IGFsc28gc3VwcG9ydHMgY3JlYXRpb24gb2Ygc2hhcmVkIGxpc3RzIGFuZCBkaWN0aW9uYXJpZXMuCiAKKyAgIC4uIG1ldGhvZDo6IEJhcnJpZXIocGFydGllc1ssIGFjdGlvblssIHRpbWVvdXRdXSkKKworICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgdGhyZWFkaW5nLkJhcnJpZXJgIG9iamVjdCBhbmQgcmV0dXJuIGEKKyAgICAgIHByb3h5IGZvciBpdC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIG1ldGhvZDo6IEJvdW5kZWRTZW1hcGhvcmUoW3ZhbHVlXSkKIAogICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgdGhyZWFkaW5nLkJvdW5kZWRTZW1hcGhvcmVgIG9iamVjdCBhbmQgcmV0dXJuIGEKQEAgLTEyNTQsNiArMTMyNiw5IEBACiAgICAgICBJZiAqbG9jayogaXMgc3VwcGxpZWQgdGhlbiBpdCBzaG91bGQgYmUgYSBwcm94eSBmb3IgYQogICAgICAgOmNsYXNzOmB0aHJlYWRpbmcuTG9ja2Agb3IgOmNsYXNzOmB0aHJlYWRpbmcuUkxvY2tgIG9iamVjdC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFRoZSA6bWV0aDpgd2FpdF9mb3JgIG1ldGhvZCB3YXMgYWRkZWQuCisKICAgIC4uIG1ldGhvZDo6IEV2ZW50KCkKIAogICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgdGhyZWFkaW5nLkV2ZW50YCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KQEAgLTEzNTksMTEgKzE0MzQsMTAgQEAKICAgIE15TWFuYWdlci5yZWdpc3RlcignTWF0aHMnLCBNYXRoc0NsYXNzKQogCiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgIG1hbmFnZXIgPSBNeU1hbmFnZXIoKQotICAgICAgIG1hbmFnZXIuc3RhcnQoKQotICAgICAgIG1hdGhzID0gbWFuYWdlci5NYXRocygpCi0gICAgICAgcHJpbnQobWF0aHMuYWRkKDQsIDMpKSAgICAgICAgICMgcHJpbnRzIDcKLSAgICAgICBwcmludChtYXRocy5tdWwoNywgOCkpICAgICAgICAgIyBwcmludHMgNTYKKyAgICAgICB3aXRoIE15TWFuYWdlcigpIGFzIG1hbmFnZXI6CisgICAgICAgICAgIG1hdGhzID0gbWFuYWdlci5NYXRocygpCisgICAgICAgICAgIHByaW50KG1hdGhzLmFkZCg0LCAzKSkgICAgICAgICAjIHByaW50cyA3CisgICAgICAgICAgIHByaW50KG1hdGhzLm11bCg3LCA4KSkgICAgICAgICAjIHByaW50cyA1NgogCiAKIFVzaW5nIGEgcmVtb3RlIG1hbmFnZXIKQEAgLTE2NTgsNiArMTczMiwyNCBAQAogICAgICAgcmV0dXJuZWQgaXRlcmF0b3Igc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXJiaXRyYXJ5LiAgKE9ubHkgd2hlbiB0aGVyZSBpcwogICAgICAgb25seSBvbmUgd29ya2VyIHByb2Nlc3MgaXMgdGhlIG9yZGVyIGd1YXJhbnRlZWQgdG8gYmUgImNvcnJlY3QiLikKIAorICAgLi4gbWV0aG9kOjogc3Rhcm1hcChmdW5jLCBpdGVyYWJsZVssIGNodW5rc2l6ZV0pCisKKyAgICAgIExpa2UgOm1ldGg6YG1hcGAgZXhjZXB0IHRoYXQgdGhlIGVsZW1lbnRzIG9mIHRoZSBgaXRlcmFibGVgIGFyZSBleHBlY3RlZAorICAgICAgdG8gYmUgaXRlcmFibGVzIHRoYXQgYXJlIHVucGFja2VkIGFzIGFyZ3VtZW50cy4KKworICAgICAgSGVuY2UgYW4gYGl0ZXJhYmxlYCBvZiBgWygxLDIpLCAoMywgNCldYCByZXN1bHRzIGluIGBbZnVuYygxLDIpLAorICAgICAgZnVuYygzLDQpXWAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBtZXRob2Q6OiBzdGFybWFwX2FzeW5jKGZ1bmMsIGl0ZXJhYmxlWywgY2h1bmtzaXplWywgY2FsbGJhY2tbLCBlcnJvcl9iYWNrXV1dKQorCisgICAgICBBIGNvbWJpbmF0aW9uIG9mIDptZXRoOmBzdGFybWFwYCBhbmQgOm1ldGg6YG1hcF9hc3luY2AgdGhhdCBpdGVyYXRlcyBvdmVyCisgICAgICBgaXRlcmFibGVgIG9mIGl0ZXJhYmxlcyBhbmQgY2FsbHMgYGZ1bmNgIHdpdGggdGhlIGl0ZXJhYmxlcyB1bnBhY2tlZC4KKyAgICAgIFJldHVybnMgYSByZXN1bHQgb2JqZWN0LgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCiAgICAgICBQcmV2ZW50cyBhbnkgbW9yZSB0YXNrcyBmcm9tIGJlaW5nIHN1Ym1pdHRlZCB0byB0aGUgcG9vbC4gIE9uY2UgYWxsIHRoZQpAQCAtMTY3NCw2ICsxNzY2LDExIEBACiAgICAgICBXYWl0IGZvciB0aGUgd29ya2VyIHByb2Nlc3NlcyB0byBleGl0LiAgT25lIG11c3QgY2FsbCA6bWV0aDpgY2xvc2VgIG9yCiAgICAgICA6bWV0aDpgdGVybWluYXRlYCBiZWZvcmUgdXNpbmcgOm1ldGg6YGpvaW5gLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFBvb2wgb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHJldHVybnMgdGhlIHBvb2wKKyAgICAgIG9iamVjdCwgYW5kIDptZXRoOmBfX2V4aXRfX2AgY2FsbHMgOm1ldGg6YHRlcm1pbmF0ZWAuCisKIAogLi4gY2xhc3M6OiBBc3luY1Jlc3VsdAogCkBAIC0xNzA4LDIxICsxODA1LDIwIEBACiAgICAgICAgcmV0dXJuIHgqeAogCiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgIHBvb2wgPSBQb29sKHByb2Nlc3Nlcz00KSAgICAgICAgICAgICAgIyBzdGFydCA0IHdvcmtlciBwcm9jZXNzZXMKKyAgICAgICB3aXRoIFBvb2wocHJvY2Vzc2VzPTQpIGFzIHBvb2w6ICAgICAgICAgIyBzdGFydCA0IHdvcmtlciBwcm9jZXNzZXMKKyAgICAgICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCAoMTAsKSkgIyBldmFsdWF0ZSAiZigxMCkiIGFzeW5jaHJvbm91c2x5CisgICAgICAgICAgIHByaW50KHJlc3VsdC5nZXQodGltZW91dD0xKSkgICAgICAgICMgcHJpbnRzICIxMDAiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CiAKLSAgICAgICByZXN1bHQgPSBwb29sLmFwcGx5X2FzeW5jKGYsICgxMCwpKSAgICMgZXZhbHVhdGUgImYoMTApIiBhc3luY2hyb25vdXNseQotICAgICAgIHByaW50KHJlc3VsdC5nZXQodGltZW91dD0xKSkgICAgICAgICAgIyBwcmludHMgIjEwMCIgdW5sZXNzIHlvdXIgY29tcHV0ZXIgaXMgKnZlcnkqIHNsb3cKKyAgICAgICAgICAgcHJpbnQocG9vbC5tYXAoZiwgcmFuZ2UoMTApKSkgICAgICAgIyBwcmludHMgIlswLCAxLCA0LC4uLiwgODFdIgogCi0gICAgICAgcHJpbnQocG9vbC5tYXAoZiwgcmFuZ2UoMTApKSkgICAgICAgICAjIHByaW50cyAiWzAsIDEsIDQsLi4uLCA4MV0iCisgICAgICAgICAgIGl0ID0gcG9vbC5pbWFwKGYsIHJhbmdlKDEwKSkKKyAgICAgICAgICAgcHJpbnQobmV4dChpdCkpICAgICAgICAgICAgICAgICAgICAgIyBwcmludHMgIjAiCisgICAgICAgICAgIHByaW50KG5leHQoaXQpKSAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIxIgorICAgICAgICAgICBwcmludChpdC5uZXh0KHRpbWVvdXQ9MSkpICAgICAgICAgICAjIHByaW50cyAiNCIgdW5sZXNzIHlvdXIgY29tcHV0ZXIgaXMgKnZlcnkqIHNsb3cKIAotICAgICAgIGl0ID0gcG9vbC5pbWFwKGYsIHJhbmdlKDEwKSkKLSAgICAgICBwcmludChuZXh0KGl0KSkgICAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIwIgotICAgICAgIHByaW50KG5leHQoaXQpKSAgICAgICAgICAgICAgICAgICAgICAgIyBwcmludHMgIjEiCi0gICAgICAgcHJpbnQoaXQubmV4dCh0aW1lb3V0PTEpKSAgICAgICAgICAgICAjIHByaW50cyAiNCIgdW5sZXNzIHlvdXIgY29tcHV0ZXIgaXMgKnZlcnkqIHNsb3cKLQotICAgICAgIGltcG9ydCB0aW1lCi0gICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyh0aW1lLnNsZWVwLCAoMTAsKSkKLSAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAgICMgcmFpc2VzIFRpbWVvdXRFcnJvcgorICAgICAgICAgICBpbXBvcnQgdGltZQorICAgICAgICAgICByZXN1bHQgPSBwb29sLmFwcGx5X2FzeW5jKHRpbWUuc2xlZXAsICgxMCwpKQorICAgICAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAjIHJhaXNlcyBUaW1lb3V0RXJyb3IKIAogCiAuLiBfbXVsdGlwcm9jZXNzaW5nLWxpc3RlbmVycy1jbGllbnRzOgpAQCAtMTczOCw4ICsxODM0LDkgQEAKIAogSG93ZXZlciwgdGhlIDptb2Q6YG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uYCBtb2R1bGUgYWxsb3dzIHNvbWUgZXh0cmEKIGZsZXhpYmlsaXR5LiAgSXQgYmFzaWNhbGx5IGdpdmVzIGEgaGlnaCBsZXZlbCBtZXNzYWdlIG9yaWVudGVkIEFQSSBmb3IgZGVhbGluZwotd2l0aCBzb2NrZXRzIG9yIFdpbmRvd3MgbmFtZWQgcGlwZXMsIGFuZCBhbHNvIGhhcyBzdXBwb3J0IGZvciAqZGlnZXN0Ci1hdXRoZW50aWNhdGlvbiogdXNpbmcgdGhlIDptb2Q6YGhtYWNgIG1vZHVsZS4KK3dpdGggc29ja2V0cyBvciBXaW5kb3dzIG5hbWVkIHBpcGVzLiAgSXQgYWxzbyBoYXMgc3VwcG9ydCBmb3IgKmRpZ2VzdAorYXV0aGVudGljYXRpb24qIHVzaW5nIHRoZSA6bW9kOmBobWFjYCBtb2R1bGUsIGFuZCBmb3IgcG9sbGluZworbXVsdGlwbGUgY29ubmVjdGlvbnMgYXQgdGhlIHNhbWUgdGltZS4KIAogCiAuLiBmdW5jdGlvbjo6IGRlbGl2ZXJfY2hhbGxlbmdlKGNvbm5lY3Rpb24sIGF1dGhrZXkpCkBAIC0xNzQ5LDE1ICsxODQ2LDE1IEBACiAKICAgIElmIHRoZSByZXBseSBtYXRjaGVzIHRoZSBkaWdlc3Qgb2YgdGhlIG1lc3NhZ2UgdXNpbmcgKmF1dGhrZXkqIGFzIHRoZSBrZXkKICAgIHRoZW4gYSB3ZWxjb21lIG1lc3NhZ2UgaXMgc2VudCB0byB0aGUgb3RoZXIgZW5kIG9mIHRoZSBjb25uZWN0aW9uLiAgT3RoZXJ3aXNlCi0gICA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCisgICA6ZXhjOmB+bXVsdGlwcm9jZXNzaW5nLkF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4KIAogLi4gZnVuY3Rpb246OiBhbnN3ZXJDaGFsbGVuZ2UoY29ubmVjdGlvbiwgYXV0aGtleSkKIAogICAgUmVjZWl2ZSBhIG1lc3NhZ2UsIGNhbGN1bGF0ZSB0aGUgZGlnZXN0IG9mIHRoZSBtZXNzYWdlIHVzaW5nICphdXRoa2V5KiBhcyB0aGUKICAgIGtleSwgYW5kIHRoZW4gc2VuZCB0aGUgZGlnZXN0IGJhY2suCiAKLSAgIElmIGEgd2VsY29tZSBtZXNzYWdlIGlzIG5vdCByZWNlaXZlZCwgdGhlbiA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcwotICAgcmFpc2VkLgorICAgSWYgYSB3ZWxjb21lIG1lc3NhZ2UgaXMgbm90IHJlY2VpdmVkLCB0aGVuCisgICA6ZXhjOmB+bXVsdGlwcm9jZXNzaW5nLkF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4KIAogLi4gZnVuY3Rpb246OiBDbGllbnQoYWRkcmVzc1ssIGZhbWlseVssIGF1dGhlbnRpY2F0ZVssIGF1dGhrZXldXV0pCiAKQEAgLTE3NzEsNyArMTg2OCw4IEBACiAgICBJZiAqYXV0aGVudGljYXRlKiBpcyBgYFRydWVgYCBvciAqYXV0aGtleSogaXMgYSBieXRlIHN0cmluZyB0aGVuIGRpZ2VzdAogICAgYXV0aGVudGljYXRpb24gaXMgdXNlZC4gIFRoZSBrZXkgdXNlZCBmb3IgYXV0aGVudGljYXRpb24gd2lsbCBiZSBlaXRoZXIKICAgICphdXRoa2V5KiBvciBgYGN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXlgYCBpZiAqYXV0aGtleSogaXMgYGBOb25lYGAuCi0gICBJZiBhdXRoZW50aWNhdGlvbiBmYWlscyB0aGVuIDpleGM6YEF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4gIFNlZQorICAgSWYgYXV0aGVudGljYXRpb24gZmFpbHMgdGhlbgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuICBTZWUKICAgIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgogCiAuLiBjbGFzczo6IExpc3RlbmVyKFthZGRyZXNzWywgZmFtaWx5WywgYmFja2xvZ1ssIGF1dGhlbnRpY2F0ZVssIGF1dGhrZXldXV1dXSkKQEAgLTE4MTIsMTMgKzE5MTAsMTUgQEAKICAgIGBgY3VycmVudF9wcm9jZXNzKCkuYXV0aGtleWBgIGlzIHVzZWQgYXMgdGhlIGF1dGhlbnRpY2F0aW9uIGtleS4gIElmCiAgICAqYXV0aGtleSogaXMgYGBOb25lYGAgYW5kICphdXRoZW50aWNhdGUqIGlzIGBgRmFsc2VgYCB0aGVuIG5vCiAgICBhdXRoZW50aWNhdGlvbiBpcyBkb25lLiAgSWYgYXV0aGVudGljYXRpb24gZmFpbHMgdGhlbgotICAgOmV4YzpgQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLiAgU2VlIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCisgICBTZWUgOnJlZjpgbXVsdGlwcm9jZXNzaW5nLWF1dGgta2V5c2AuCiAKICAgIC4uIG1ldGhvZDo6IGFjY2VwdCgpCiAKICAgICAgIEFjY2VwdCBhIGNvbm5lY3Rpb24gb24gdGhlIGJvdW5kIHNvY2tldCBvciBuYW1lZCBwaXBlIG9mIHRoZSBsaXN0ZW5lcgogICAgICAgb2JqZWN0IGFuZCByZXR1cm4gYSA6Y2xhc3M6YENvbm5lY3Rpb25gIG9iamVjdC4gIElmIGF1dGhlbnRpY2F0aW9uIGlzCi0gICAgICBhdHRlbXB0ZWQgYW5kIGZhaWxzLCB0aGVuIDpleGM6YEF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4KKyAgICAgIGF0dGVtcHRlZCBhbmQgZmFpbHMsIHRoZW4KKyAgICAgIDpleGM6YH5tdWx0aXByb2Nlc3NpbmcuQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLgogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKQEAgLTE4MzcsMTIgKzE5MzcsNDQgQEAKICAgICAgIFRoZSBhZGRyZXNzIGZyb20gd2hpY2ggdGhlIGxhc3QgYWNjZXB0ZWQgY29ubmVjdGlvbiBjYW1lLiAgSWYgdGhpcyBpcwogICAgICAgdW5hdmFpbGFibGUgdGhlbiBpdCBpcyBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBMaXN0ZW5lciBvYmplY3RzIG5vdyBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgLS0gc2VlCisgICAgICA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgLiAgOm1ldGg6YF9fZW50ZXJfX2AgcmV0dXJucyB0aGUKKyAgICAgIGxpc3RlbmVyIG9iamVjdCwgYW5kIDptZXRoOmBfX2V4aXRfX2AgY2FsbHMgOm1ldGg6YGNsb3NlYC4KIAotVGhlIG1vZHVsZSBkZWZpbmVzIHR3byBleGNlcHRpb25zOgorLi4gZnVuY3Rpb246OiB3YWl0KG9iamVjdF9saXN0LCB0aW1lb3V0PU5vbmUpCiAKLS4uIGV4Y2VwdGlvbjo6IEF1dGhlbnRpY2F0aW9uRXJyb3IKKyAgIFdhaXQgdGlsbCBhbiBvYmplY3QgaW4gKm9iamVjdF9saXN0KiBpcyByZWFkeS4gIFJldHVybnMgdGhlIGxpc3Qgb2YKKyAgIHRob3NlIG9iamVjdHMgaW4gKm9iamVjdF9saXN0KiB3aGljaCBhcmUgcmVhZHkuICBJZiAqdGltZW91dCogaXMgYQorICAgZmxvYXQgdGhlbiB0aGUgY2FsbCBibG9ja3MgZm9yIGF0IG1vc3QgdGhhdCBtYW55IHNlY29uZHMuICBJZgorICAgKnRpbWVvdXQqIGlzIGBgTm9uZWBgIHRoZW4gaXQgd2lsbCBibG9jayBmb3IgYW4gdW5saW1pdGVkIHBlcmlvZC4KKyAgIEEgbmVnYXRpdmUgdGltZW91dCBpcyBlcXVpdmFsZW50IHRvIGEgemVybyB0aW1lb3V0LgogCi0gICBFeGNlcHRpb24gcmFpc2VkIHdoZW4gdGhlcmUgaXMgYW4gYXV0aGVudGljYXRpb24gZXJyb3IuCisgICBGb3IgYm90aCBVbml4IGFuZCBXaW5kb3dzLCBhbiBvYmplY3QgY2FuIGFwcGVhciBpbiAqb2JqZWN0X2xpc3QqIGlmCisgICBpdCBpcworCisgICAqIGEgcmVhZGFibGUgOmNsYXNzOmB+bXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb25gIG9iamVjdDsKKyAgICogYSBjb25uZWN0ZWQgYW5kIHJlYWRhYmxlIDpjbGFzczpgc29ja2V0LnNvY2tldGAgb2JqZWN0OyBvcgorICAgKiB0aGUgOmF0dHI6YH5tdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5zZW50aW5lbGAgYXR0cmlidXRlIG9mIGEKKyAgICAgOmNsYXNzOmB+bXVsdGlwcm9jZXNzaW5nLlByb2Nlc3NgIG9iamVjdC4KKworICAgQSBjb25uZWN0aW9uIG9yIHNvY2tldCBvYmplY3QgaXMgcmVhZHkgd2hlbiB0aGVyZSBpcyBkYXRhIGF2YWlsYWJsZQorICAgdG8gYmUgcmVhZCBmcm9tIGl0LCBvciB0aGUgb3RoZXIgZW5kIGhhcyBiZWVuIGNsb3NlZC4KKworICAgKipVbml4Kio6IGBgd2FpdChvYmplY3RfbGlzdCwgdGltZW91dClgYCBhbG1vc3QgZXF1aXZhbGVudAorICAgYGBzZWxlY3Quc2VsZWN0KG9iamVjdF9saXN0LCBbXSwgW10sIHRpbWVvdXQpYGAuICBUaGUgZGlmZmVyZW5jZSBpcworICAgdGhhdCwgaWYgOmZ1bmM6YHNlbGVjdC5zZWxlY3RgIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCBpdCBjYW4KKyAgIHJhaXNlIDpleGM6YE9TRXJyb3JgIHdpdGggYW4gZXJyb3IgbnVtYmVyIG9mIGBgRUlOVFJgYCwgd2hlcmVhcworICAgOmZ1bmM6YHdhaXRgIHdpbGwgbm90LgorCisgICAqKldpbmRvd3MqKjogQW4gaXRlbSBpbiAqb2JqZWN0X2xpc3QqIG11c3QgZWl0aGVyIGJlIGFuIGludGVnZXIKKyAgIGhhbmRsZSB3aGljaCBpcyB3YWl0YWJsZSAoYWNjb3JkaW5nIHRvIHRoZSBkZWZpbml0aW9uIHVzZWQgYnkgdGhlCisgICBkb2N1bWVudGF0aW9uIG9mIHRoZSBXaW4zMiBmdW5jdGlvbiBgYFdhaXRGb3JNdWx0aXBsZU9iamVjdHMoKWBgKQorICAgb3IgaXQgY2FuIGJlIGFuIG9iamVjdCB3aXRoIGEgOm1ldGg6YGZpbGVub2AgbWV0aG9kIHdoaWNoIHJldHVybnMgYQorICAgc29ja2V0IGhhbmRsZSBvciBwaXBlIGhhbmRsZS4gIChOb3RlIHRoYXQgcGlwZSBoYW5kbGVzIGFuZCBzb2NrZXQKKyAgIGhhbmRsZXMgYXJlICoqbm90Kiogd2FpdGFibGUgaGFuZGxlcy4pCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKICoqRXhhbXBsZXMqKgpAQCAtMTg1NSwxOSArMTk4NywxNiBAQAogICAgZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKIAogICAgYWRkcmVzcyA9ICgnbG9jYWxob3N0JywgNjAwMCkgICAgICMgZmFtaWx5IGlzIGRlZHVjZWQgdG8gYmUgJ0FGX0lORVQnCi0gICBsaXN0ZW5lciA9IExpc3RlbmVyKGFkZHJlc3MsIGF1dGhrZXk9YidzZWNyZXQgcGFzc3dvcmQnKQogCi0gICBjb25uID0gbGlzdGVuZXIuYWNjZXB0KCkKLSAgIHByaW50KCdjb25uZWN0aW9uIGFjY2VwdGVkIGZyb20nLCBsaXN0ZW5lci5sYXN0X2FjY2VwdGVkKQorICAgd2l0aCBMaXN0ZW5lcihhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykgYXMgbGlzdGVuZXI6CisgICAgICAgd2l0aCBsaXN0ZW5lci5hY2NlcHQoKSBhcyBjb25uOgorICAgICAgICAgICBwcmludCgnY29ubmVjdGlvbiBhY2NlcHRlZCBmcm9tJywgbGlzdGVuZXIubGFzdF9hY2NlcHRlZCkKIAotICAgY29ubi5zZW5kKFsyLjI1LCBOb25lLCAnanVuaycsIGZsb2F0XSkKKyAgICAgICAgICAgY29ubi5zZW5kKFsyLjI1LCBOb25lLCAnanVuaycsIGZsb2F0XSkKIAotICAgY29ubi5zZW5kX2J5dGVzKGInaGVsbG8nKQorICAgICAgICAgICBjb25uLnNlbmRfYnl0ZXMoYidoZWxsbycpCiAKLSAgIGNvbm4uc2VuZF9ieXRlcyhhcnJheSgnaScsIFs0MiwgMTcyOV0pKQotCi0gICBjb25uLmNsb3NlKCkKLSAgIGxpc3RlbmVyLmNsb3NlKCkKKyAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKGFycmF5KCdpJywgWzQyLCAxNzI5XSkpCiAKIFRoZSBmb2xsb3dpbmcgY29kZSBjb25uZWN0cyB0byB0aGUgc2VydmVyIGFuZCByZWNlaXZlcyBzb21lIGRhdGEgZnJvbSB0aGUKIHNlcnZlcjo6CkBAIC0xODc2LDE3ICsyMDA1LDUwIEBACiAgICBmcm9tIGFycmF5IGltcG9ydCBhcnJheQogCiAgICBhZGRyZXNzID0gKCdsb2NhbGhvc3QnLCA2MDAwKQotICAgY29ubiA9IENsaWVudChhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykKIAotICAgcHJpbnQoY29ubi5yZWN2KCkpICAgICAgICAgICAgICAgICAgIyA9PiBbMi4yNSwgTm9uZSwgJ2p1bmsnLCBmbG9hdF0KKyAgIHdpdGggQ2xpZW50KGFkZHJlc3MsIGF1dGhrZXk9YidzZWNyZXQgcGFzc3dvcmQnKSBhcyBjb25uOgorICAgICAgIHByaW50KGNvbm4ucmVjdigpKSAgICAgICAgICAgICAgICAgICMgPT4gWzIuMjUsIE5vbmUsICdqdW5rJywgZmxvYXRdCiAKLSAgIHByaW50KGNvbm4ucmVjdl9ieXRlcygpKSAgICAgICAgICAgICMgPT4gJ2hlbGxvJworICAgICAgIHByaW50KGNvbm4ucmVjdl9ieXRlcygpKSAgICAgICAgICAgICMgPT4gJ2hlbGxvJwogCi0gICBhcnIgPSBhcnJheSgnaScsIFswLCAwLCAwLCAwLCAwXSkKLSAgIHByaW50KGNvbm4ucmVjdl9ieXRlc19pbnRvKGFycikpICAgICMgPT4gOAotICAgcHJpbnQoYXJyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyA9PiBhcnJheSgnaScsIFs0MiwgMTcyOSwgMCwgMCwgMF0pCisgICAgICAgYXJyID0gYXJyYXkoJ2knLCBbMCwgMCwgMCwgMCwgMF0pCisgICAgICAgcHJpbnQoY29ubi5yZWN2X2J5dGVzX2ludG8oYXJyKSkgICAgIyA9PiA4CisgICAgICAgcHJpbnQoYXJyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyA9PiBhcnJheSgnaScsIFs0MiwgMTcyOSwgMCwgMCwgMF0pCiAKLSAgIGNvbm4uY2xvc2UoKQorVGhlIGZvbGxvd2luZyBjb2RlIHVzZXMgOmZ1bmM6YH5tdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0YCB0bword2FpdCBmb3IgbWVzc2FnZXMgZnJvbSBtdWx0aXBsZSBwcm9jZXNzZXMgYXQgb25jZTo6CisKKyAgIGltcG9ydCB0aW1lLCByYW5kb20KKyAgIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQcm9jZXNzLCBQaXBlLCBjdXJyZW50X3Byb2Nlc3MKKyAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKworICAgZGVmIGZvbyh3KToKKyAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgICAgIHcuc2VuZCgoaSwgY3VycmVudF9wcm9jZXNzKCkubmFtZSkpCisgICAgICAgdy5jbG9zZSgpCisKKyAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgICAgcmVhZGVycyA9IFtdCisKKyAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgciwgdyA9IFBpcGUoZHVwbGV4PUZhbHNlKQorICAgICAgICAgICByZWFkZXJzLmFwcGVuZChyKQorICAgICAgICAgICBwID0gUHJvY2Vzcyh0YXJnZXQ9Zm9vLCBhcmdzPSh3LCkpCisgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAjIFdlIGNsb3NlIHRoZSB3cml0YWJsZSBlbmQgb2YgdGhlIHBpcGUgbm93IHRvIGJlIHN1cmUgdGhhdAorICAgICAgICAgICAjIHAgaXMgdGhlIG9ubHkgcHJvY2VzcyB3aGljaCBvd25zIGEgaGFuZGxlIGZvciBpdC4gIFRoaXMKKyAgICAgICAgICAgIyBlbnN1cmVzIHRoYXQgd2hlbiBwIGNsb3NlcyBpdHMgaGFuZGxlIGZvciB0aGUgd3JpdGFibGUgZW5kLAorICAgICAgICAgICAjIHdhaXQoKSB3aWxsIHByb21wdGx5IHJlcG9ydCB0aGUgcmVhZGFibGUgZW5kIGFzIGJlaW5nIHJlYWR5LgorICAgICAgICAgICB3LmNsb3NlKCkKKworICAgICAgIHdoaWxlIHJlYWRlcnM6CisgICAgICAgICAgIGZvciByIGluIHdhaXQocmVhZGVycyk6CisgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgbXNnID0gci5yZWN2KCkKKyAgICAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKKyAgICAgICAgICAgICAgICAgICByZWFkZXJzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICBwcmludChtc2cpCiAKIAogLi4gX211bHRpcHJvY2Vzc2luZy1hZGRyZXNzLWZvcm1hdHM6CkBAIC0yMDQ3LDcgKzIyMDksNyBAQAogCiAgICAgSXQgaXMgcHJvYmFibHkgYmVzdCB0byBzdGljayB0byB1c2luZyBxdWV1ZXMgb3IgcGlwZXMgZm9yIGNvbW11bmljYXRpb24KICAgICBiZXR3ZWVuIHByb2Nlc3NlcyByYXRoZXIgdGhhbiB1c2luZyB0aGUgbG93ZXIgbGV2ZWwgc3luY2hyb25pemF0aW9uCi0gICAgcHJpbWl0aXZlcyBmcm9tIHRoZSA6bW9kOmB0aHJlYWRpbmdgIG1vZHVsZS4KKyAgICBwcmltaXRpdmVzLgogCiBQaWNrbGFiaWxpdHkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9ubnRwbGliLnJzdAppbmRleCBlZjUwN2UxLi42MmRhNzJjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9ubnRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9ubnRwbGliLnJzdApAQCAtNzAsMTAgKzcwLDIzIEBACiAgICBjb25uZWN0aW5nIHRvIGFuIE5OVFAgc2VydmVyIG9uIHRoZSBsb2NhbCBtYWNoaW5lIGFuZCBpbnRlbmQgdG8gY2FsbAogICAgcmVhZGVyLXNwZWNpZmljIGNvbW1hbmRzLCBzdWNoIGFzIGBgZ3JvdXBgYC4gIElmIHlvdSBnZXQgdW5leHBlY3RlZAogICAgOmV4YzpgTk5UUFBlcm1hbmVudEVycm9yYFwgcywgeW91IG1pZ2h0IG5lZWQgdG8gc2V0ICpyZWFkZXJtb2RlKi4KKyAgIDpjbGFzczpgTk5UUGAgY2xhc3Mgc3VwcG9ydHMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgdG8KKyAgIHVuY29uZGl0aW9uYWxseSBjb25zdW1lIDpleGM6YHNvY2tldC5lcnJvcmAgZXhjZXB0aW9ucyBhbmQgdG8gY2xvc2UgdGhlIE5OVFAKKyAgIGNvbm5lY3Rpb24gd2hlbiBkb25lLiBIZXJlIGlzIGEgc2FtcGxlIG9uIGhvdyB1c2luZyBpdDoKKworICAgID4+PiBmcm9tIG5udHBsaWIgaW1wb3J0IE5OVFAKKyAgICA+Pj4gd2l0aCBOTlRQKCduZXdzLmdtYW5lLm9yZycpIGFzIG46CisgICAgLi4uICAgICBuLmdyb3VwKCdnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJykKKyAgICAuLi4KKyAgICAoJzIxMSAxNzU1IDEgMTc1NSBnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJywgMTc1NSwgMSwgMTc1NSwgJ2dtYW5lLmNvbXAucHl0aG9uLmNvbW1pdHRlcnMnKQorICAgID4+PgorCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICAqdXNlbmV0cmMqIGlzIG5vdyBGYWxzZSBieSBkZWZhdWx0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLgogCiAuLiBjbGFzczo6IE5OVFBfU1NMKGhvc3QsIHBvcnQ9NTYzLCB1c2VyPU5vbmUsIHBhc3N3b3JkPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUsIHJlYWRlcm1vZGU9Tm9uZSwgdXNlbmV0cmM9RmFsc2UsIFt0aW1lb3V0XSkKIApAQCAtNTA0LDYgKzUxNyw5IEBACiAgICBhcnRpY2xlIHdpdGggbWVzc2FnZSBJRCAqaWQqLiAgTW9zdCBvZiB0aGUgdGltZSwgdGhpcyBleHRlbnNpb24gaXMgbm90CiAgICBlbmFibGVkIGJ5IE5OVFAgc2VydmVyIGFkbWluaXN0cmF0b3JzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGUgWFBBVEggZXh0ZW5zaW9uIGlzIG5vdCBhY3RpdmVseSB1c2VkLgorCiAKIC4uIFhYWCBkZXByZWNhdGVkOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9udW1lcmljLnJzdCBiL0RvYy9saWJyYXJ5L251bWVyaWMucnN0CmluZGV4IGJhMjJjYjYuLjI3MzJhODQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L251bWVyaWMucnN0CisrKyBiL0RvYy9saWJyYXJ5L251bWVyaWMucnN0CkBAIC04LDkgKzgsOSBAQAogVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIG51bWVyaWMgYW5kIG1hdGgtcmVsYXRlZCBmdW5jdGlvbnMKIGFuZCBkYXRhIHR5cGVzLiBUaGUgOm1vZDpgbnVtYmVyc2AgbW9kdWxlIGRlZmluZXMgYW4gYWJzdHJhY3QgaGllcmFyY2h5IG9mCiBudW1lcmljIHR5cGVzLiBUaGUgOm1vZDpgbWF0aGAgYW5kIDptb2Q6YGNtYXRoYCBtb2R1bGVzIGNvbnRhaW4gdmFyaW91cwotbWF0aGVtYXRpY2FsIGZ1bmN0aW9ucyBmb3IgZmxvYXRpbmctcG9pbnQgYW5kIGNvbXBsZXggbnVtYmVycy4gRm9yIHVzZXJzIG1vcmUKLWludGVyZXN0ZWQgaW4gZGVjaW1hbCBhY2N1cmFjeSB0aGFuIGluIHNwZWVkLCB0aGUgOm1vZDpgZGVjaW1hbGAgbW9kdWxlIHN1cHBvcnRzCi1leGFjdCByZXByZXNlbnRhdGlvbnMgb2YgZGVjaW1hbCBudW1iZXJzLgorbWF0aGVtYXRpY2FsIGZ1bmN0aW9ucyBmb3IgZmxvYXRpbmctcG9pbnQgYW5kIGNvbXBsZXggbnVtYmVycy4gVGhlIDptb2Q6YGRlY2ltYWxgCittb2R1bGUgc3VwcG9ydHMgZXhhY3QgcmVwcmVzZW50YXRpb25zIG9mIGRlY2ltYWwgbnVtYmVycywgdXNpbmcgYXJiaXRyYXJ5IHByZWNpc2lvbgorYXJpdGhtZXRpYy4KIAogVGhlIGZvbGxvd2luZyBtb2R1bGVzIGFyZSBkb2N1bWVudGVkIGluIHRoaXMgY2hhcHRlcjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAppbmRleCAyMTRlMjdjLi4yMGE4NGI2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdApAQCAtNzAsMTEgKzcwLDE2IEBACiAKIC4uIGZ1bmN0aW9uOjogZXhpc3RzKHBhdGgpCiAKLSAgIFJldHVybiBgYFRydWVgYCBpZiAqcGF0aCogcmVmZXJzIHRvIGFuIGV4aXN0aW5nIHBhdGguICBSZXR1cm5zIGBgRmFsc2VgYCBmb3IKLSAgIGJyb2tlbiBzeW1ib2xpYyBsaW5rcy4gT24gc29tZSBwbGF0Zm9ybXMsIHRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBgYEZhbHNlYGAgaWYKLSAgIHBlcm1pc3Npb24gaXMgbm90IGdyYW50ZWQgdG8gZXhlY3V0ZSA6ZnVuYzpgb3Muc3RhdGAgb24gdGhlIHJlcXVlc3RlZCBmaWxlLCBldmVuCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIHJlZmVycyB0byBhbiBleGlzdGluZyBwYXRoIG9yIGFuIG9wZW4KKyAgIGZpbGUgZGVzY3JpcHRvci4gIFJldHVybnMgYGBGYWxzZWBgIGZvciBicm9rZW4gc3ltYm9saWMgbGlua3MuICBPbgorICAgc29tZSBwbGF0Zm9ybXMsIHRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBgYEZhbHNlYGAgaWYgcGVybWlzc2lvbiBpcworICAgbm90IGdyYW50ZWQgdG8gZXhlY3V0ZSA6ZnVuYzpgb3Muc3RhdGAgb24gdGhlIHJlcXVlc3RlZCBmaWxlLCBldmVuCiAgICBpZiB0aGUgKnBhdGgqIHBoeXNpY2FsbHkgZXhpc3RzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnBhdGgqIGNhbiBub3cgYmUgYW4gaW50ZWdlcjogYGBUcnVlYGAgaXMgcmV0dXJuZWQgaWYgaXQgaXMgYW4KKyAgICAgICBvcGVuIGZpbGUgZGVzY3JpcHRvciwgYGBGYWxzZWBgIG90aGVyd2lzZS4KKwogCiAuLiBmdW5jdGlvbjo6IGxleGlzdHMocGF0aCkKIApAQCAtMjU0LDcgKzI1OSw4IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgQWRkZWQgV2luZG93cyBzdXBwb3J0LgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgIEFkZGVkIFdpbmRvd3Mgc3VwcG9ydC4KIAogCiAuLiBmdW5jdGlvbjo6IHNhbWVzdGF0KHN0YXQxLCBzdGF0MikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnJzdCBiL0RvYy9saWJyYXJ5L29zLnJzdAppbmRleCA1OTkxZTI5Li5hZWM4MDczIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucnN0CkBAIC05Niw2ICs5NiwxMyBAQAogcHJvY2VzcyBhbmQgdXNlci4KIAogCisuLiBmdW5jdGlvbjo6IGN0ZXJtaWQoKQorCisgICBSZXR1cm4gdGhlIGZpbGVuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsIG9mIHRoZSBwcm9jZXNzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKwogLi4gZGF0YTo6IGVudmlyb24KIAogICAgQSBtYXBwaW5nIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHN0cmluZyBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsCkBAIC0xNzcsNiArMTg0LDI4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBmdW5jdGlvbjo6IGdldGVudihrZXksIGRlZmF1bHQ9Tm9uZSkKKworICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgKmtleSogaWYgaXQgZXhpc3RzLCBvcgorICAgKmRlZmF1bHQqIGlmIGl0IGRvZXNuJ3QuICprZXkqLCAqZGVmYXVsdCogYW5kIHRoZSByZXN1bHQgYXJlIHN0ci4KKworICAgT24gVW5peCwga2V5cyBhbmQgdmFsdWVzIGFyZSBkZWNvZGVkIHdpdGggOmZ1bmM6YHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmdgCisgICBhbmQgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIuIFVzZSA6ZnVuYzpgb3MuZ2V0ZW52YmAgaWYgeW91CisgICB3b3VsZCBsaWtlIHRvIHVzZSBhIGRpZmZlcmVudCBlbmNvZGluZy4KKworICAgQXZhaWxhYmlsaXR5OiBtb3N0IGZsYXZvcnMgb2YgVW5peCwgV2luZG93cy4KKworCisuLiBmdW5jdGlvbjo6IGdldGVudmIoa2V5LCBkZWZhdWx0PU5vbmUpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICprZXkqIGlmIGl0IGV4aXN0cywgb3IKKyAgICpkZWZhdWx0KiBpZiBpdCBkb2Vzbid0LiAqa2V5KiwgKmRlZmF1bHQqIGFuZCB0aGUgcmVzdWx0IGFyZSBieXRlcy4KKworICAgQXZhaWxhYmlsaXR5OiBtb3N0IGZsYXZvcnMgb2YgVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisKKwogLi4gZnVuY3Rpb246OiBnZXRfZXhlY19wYXRoKGVudj1Ob25lKQogCiAgICBSZXR1cm5zIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRoYXQgd2lsbCBiZSBzZWFyY2hlZCBmb3IgYSBuYW1lZApAQCAtMTg4LDEzICsyMTcsNiBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotLi4gZnVuY3Rpb246OiBjdGVybWlkKCkKLQotICAgUmV0dXJuIHRoZSBmaWxlbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBvZiB0aGUgcHJvY2Vzcy4KLQotICAgQXZhaWxhYmlsaXR5OiBVbml4LgotCi0KIC4uIGZ1bmN0aW9uOjogZ2V0ZWdpZCgpCiAKICAgIFJldHVybiB0aGUgZWZmZWN0aXZlIGdyb3VwIGlkIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MuICBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZQpAQCAtMjIxLDYgKzI0MywxNyBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKKy4uIGZ1bmN0aW9uOjogZ2V0Z3JvdXBsaXN0KHVzZXIsIGdyb3VwKQorCisgICBSZXR1cm4gbGlzdCBvZiBncm91cCBpZHMgdGhhdCAqdXNlciogYmVsb25ncyB0by4gSWYgKmdyb3VwKiBpcyBub3QgaW4gdGhlCisgICBsaXN0LCBpdCBpcyBpbmNsdWRlZDsgdHlwaWNhbGx5LCAqZ3JvdXAqIGlzIHNwZWNpZmllZCBhcyB0aGUgZ3JvdXAgSUQKKyAgIGZpZWxkIGZyb20gdGhlIHBhc3N3b3JkIHJlY29yZCBmb3IgKnVzZXIqLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogZ2V0Z3JvdXBzKCkKIAogICAgUmV0dXJuIGxpc3Qgb2Ygc3VwcGxlbWVudGFsIGdyb3VwIGlkcyBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgcHJvY2Vzcy4KQEAgLTI0MiwxNyArMjc1LDYgQEAKICAgICAgIG9idGFpbmVkIHdpdGggOmZ1bmM6YHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcmAuCiAKIAotLi4gZnVuY3Rpb246OiBpbml0Z3JvdXBzKHVzZXJuYW1lLCBnaWQpCi0KLSAgIENhbGwgdGhlIHN5c3RlbSBpbml0Z3JvdXBzKCkgdG8gaW5pdGlhbGl6ZSB0aGUgZ3JvdXAgYWNjZXNzIGxpc3Qgd2l0aCBhbGwgb2YKLSAgIHRoZSBncm91cHMgb2Ygd2hpY2ggdGhlIHNwZWNpZmllZCB1c2VybmFtZSBpcyBhIG1lbWJlciwgcGx1cyB0aGUgc3BlY2lmaWVkCi0gICBncm91cCBpZC4KLQotICAgQXZhaWxhYmlsaXR5OiBVbml4LgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQotCiAuLiBmdW5jdGlvbjo6IGdldGxvZ2luKCkKIAogICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSB1c2VyIGxvZ2dlZCBpbiBvbiB0aGUgY29udHJvbGxpbmcgdGVybWluYWwgb2YgdGhlCkBAIC0yOTcsMTEgKzMxOSw0MCBAQAogICAgdGhlIGlkIHJldHVybmVkIGlzIHRoZSBvbmUgb2YgdGhlIGluaXQgcHJvY2VzcyAoMSksIG9uIFdpbmRvd3MgaXQgaXMgc3RpbGwKICAgIHRoZSBzYW1lIGlkLCB3aGljaCBtYXkgYmUgYWxyZWFkeSByZXVzZWQgYnkgYW5vdGhlciBwcm9jZXNzLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFdpbmRvd3MuCiAKKworLi4gZnVuY3Rpb246OiBnZXRwcmlvcml0eSh3aGljaCwgd2hvKQorCisgICAuLiBpbmRleDo6IHNpbmdsZTogcHJvY2Vzczsgc2NoZWR1bGluZyBwcmlvcml0eQorCisgICBHZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiAgVGhlIHZhbHVlICp3aGljaCogaXMgb25lIG9mCisgICA6Y29uc3Q6YFBSSU9fUFJPQ0VTU2AsIDpjb25zdDpgUFJJT19QR1JQYCwgb3IgOmNvbnN0OmBQUklPX1VTRVJgLCBhbmQgKndobyoKKyAgIGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvICp3aGljaCogKGEgcHJvY2VzcyBpZGVudGlmaWVyIGZvcgorICAgOmNvbnN0OmBQUklPX1BST0NFU1NgLCBwcm9jZXNzIGdyb3VwIGlkZW50aWZpZXIgZm9yIDpjb25zdDpgUFJJT19QR1JQYCwgYW5kIGEKKyAgIHVzZXIgSUQgZm9yIDpjb25zdDpgUFJJT19VU0VSYCkuICBBIHplcm8gdmFsdWUgZm9yICp3aG8qIGRlbm90ZXMKKyAgIChyZXNwZWN0aXZlbHkpIHRoZSBjYWxsaW5nIHByb2Nlc3MsIHRoZSBwcm9jZXNzIGdyb3VwIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MsCisgICBvciB0aGUgcmVhbCB1c2VyIElEIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IFBSSU9fUFJPQ0VTUworICAgICAgICAgIFBSSU9fUEdSUAorICAgICAgICAgIFBSSU9fVVNFUgorCisgICBQYXJhbWV0ZXJzIGZvciB0aGUgOmZ1bmM6YGdldHByaW9yaXR5YCBhbmQgOmZ1bmM6YHNldHByaW9yaXR5YCBmdW5jdGlvbnMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBnZXRyZXN1aWQoKQogCiAgICBSZXR1cm4gYSB0dXBsZSAocnVpZCwgZXVpZCwgc3VpZCkgZGVub3RpbmcgdGhlIGN1cnJlbnQgcHJvY2VzcydzCkBAIC0zMzEsMjQgKzM4MiwxMyBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKLS4uIGZ1bmN0aW9uOjogZ2V0ZW52KGtleSwgZGVmYXVsdD1Ob25lKQorLi4gZnVuY3Rpb246OiBpbml0Z3JvdXBzKHVzZXJuYW1lLCBnaWQpCiAKLSAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICprZXkqIGlmIGl0IGV4aXN0cywgb3IKLSAgICpkZWZhdWx0KiBpZiBpdCBkb2Vzbid0LiAqa2V5KiwgKmRlZmF1bHQqIGFuZCB0aGUgcmVzdWx0IGFyZSBzdHIuCisgICBDYWxsIHRoZSBzeXN0ZW0gaW5pdGdyb3VwcygpIHRvIGluaXRpYWxpemUgdGhlIGdyb3VwIGFjY2VzcyBsaXN0IHdpdGggYWxsIG9mCisgICB0aGUgZ3JvdXBzIG9mIHdoaWNoIHRoZSBzcGVjaWZpZWQgdXNlcm5hbWUgaXMgYSBtZW1iZXIsIHBsdXMgdGhlIHNwZWNpZmllZAorICAgZ3JvdXAgaWQuCiAKLSAgIE9uIFVuaXgsIGtleXMgYW5kIHZhbHVlcyBhcmUgZGVjb2RlZCB3aXRoIDpmdW5jOmBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYAotICAgYW5kIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLiBVc2UgOmZ1bmM6YG9zLmdldGVudmJgIGlmIHlvdQotICAgd291bGQgbGlrZSB0byB1c2UgYSBkaWZmZXJlbnQgZW5jb2RpbmcuCi0KLSAgIEF2YWlsYWJpbGl0eTogbW9zdCBmbGF2b3JzIG9mIFVuaXgsIFdpbmRvd3MuCi0KLQotLi4gZnVuY3Rpb246OiBnZXRlbnZiKGtleSwgZGVmYXVsdD1Ob25lKQotCi0gICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAqa2V5KiBpZiBpdCBleGlzdHMsIG9yCi0gICAqZGVmYXVsdCogaWYgaXQgZG9lc24ndC4gKmtleSosICpkZWZhdWx0KiBhbmQgdGhlIHJlc3VsdCBhcmUgYnl0ZXMuCi0KLSAgIEF2YWlsYWJpbGl0eTogbW9zdCBmbGF2b3JzIG9mIFVuaXguCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC00MTAsNyArNDUwLDcgQEAKIAogLi4gZnVuY3Rpb246OiBzZXRwZ3JwKCkKIAotICAgQ2FsbCB0aGUgc3lzdGVtIGNhbGwgOmM6ZnVuYzpgc2V0cGdycGAgb3IgOmM6ZnVuYzpgc2V0cGdycCgwLCAwKWAgZGVwZW5kaW5nIG9uCisgICBDYWxsIHRoZSBzeXN0ZW0gY2FsbCA6YzpmdW5jOmBzZXRwZ3JwYCBvciBgYHNldHBncnAoMCwgMClgYCBkZXBlbmRpbmcgb24KICAgIHdoaWNoIHZlcnNpb24gaXMgaW1wbGVtZW50ZWQgKGlmIGFueSkuICBTZWUgdGhlIFVuaXggbWFudWFsIGZvciB0aGUgc2VtYW50aWNzLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCkBAIC00MjUsNiArNDY1LDI1IEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAorLi4gZnVuY3Rpb246OiBzZXRwcmlvcml0eSh3aGljaCwgd2hvLCBwcmlvcml0eSkKKworICAgLi4gaW5kZXg6OiBzaW5nbGU6IHByb2Nlc3M7IHNjaGVkdWxpbmcgcHJpb3JpdHkKKworICAgU2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4gVGhlIHZhbHVlICp3aGljaCogaXMgb25lIG9mCisgICA6Y29uc3Q6YFBSSU9fUFJPQ0VTU2AsIDpjb25zdDpgUFJJT19QR1JQYCwgb3IgOmNvbnN0OmBQUklPX1VTRVJgLCBhbmQgKndobyoKKyAgIGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvICp3aGljaCogKGEgcHJvY2VzcyBpZGVudGlmaWVyIGZvcgorICAgOmNvbnN0OmBQUklPX1BST0NFU1NgLCBwcm9jZXNzIGdyb3VwIGlkZW50aWZpZXIgZm9yIDpjb25zdDpgUFJJT19QR1JQYCwgYW5kIGEKKyAgIHVzZXIgSUQgZm9yIDpjb25zdDpgUFJJT19VU0VSYCkuIEEgemVybyB2YWx1ZSBmb3IgKndobyogZGVub3RlcworICAgKHJlc3BlY3RpdmVseSkgdGhlIGNhbGxpbmcgcHJvY2VzcywgdGhlIHByb2Nlc3MgZ3JvdXAgb2YgdGhlIGNhbGxpbmcgcHJvY2VzcywKKyAgIG9yIHRoZSByZWFsIHVzZXIgSUQgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KKyAgICpwcmlvcml0eSogaXMgYSB2YWx1ZSBpbiB0aGUgcmFuZ2UgLTIwIHRvIDE5LiBUaGUgZGVmYXVsdCBwcmlvcml0eSBpcyAwOworICAgbG93ZXIgcHJpb3JpdGllcyBjYXVzZSBtb3JlIGZhdm9yYWJsZSBzY2hlZHVsaW5nLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBzZXRyZWdpZChyZ2lkLCBlZ2lkKQogCiAgICBTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwgYW5kIGVmZmVjdGl2ZSBncm91cCBpZHMuCkBAIC01MTEsMTUgKzU3MCwzMSBAQAogICAgICAgc2luZ2xlOiBnZXRob3N0bmFtZSgpIChpbiBtb2R1bGUgc29ja2V0KQogICAgICAgc2luZ2xlOiBnZXRob3N0YnlhZGRyKCkgKGluIG1vZHVsZSBzb2NrZXQpCiAKLSAgIFJldHVybiBhIDUtdHVwbGUgY29udGFpbmluZyBpbmZvcm1hdGlvbiBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcKLSAgIHN5c3RlbS4gIFRoZSB0dXBsZSBjb250YWlucyA1IHN0cmluZ3M6IGBgKHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLAotICAgbWFjaGluZSlgYC4gIFNvbWUgc3lzdGVtcyB0cnVuY2F0ZSB0aGUgbm9kZW5hbWUgdG8gOCBjaGFyYWN0ZXJzIG9yIHRvIHRoZQorICAgUmV0dXJucyBpbmZvcm1hdGlvbiBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBmaXZlIGF0dHJpYnV0ZXM6CisKKyAgICogOmF0dHI6YHN5c25hbWVgIC0gb3BlcmF0aW5nIHN5c3RlbSBuYW1lCisgICAqIDphdHRyOmBub2RlbmFtZWAgLSBuYW1lIG9mIG1hY2hpbmUgb24gbmV0d29yayAoaW1wbGVtZW50YXRpb24tZGVmaW5lZCkKKyAgICogOmF0dHI6YHJlbGVhc2VgIC0gb3BlcmF0aW5nIHN5c3RlbSByZWxlYXNlCisgICAqIDphdHRyOmB2ZXJzaW9uYCAtIG9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbgorICAgKiA6YXR0cjpgbWFjaGluZWAgLSBoYXJkd2FyZSBpZGVudGlmaWVyCisKKyAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhpcyBvYmplY3QgaXMgYWxzbyBpdGVyYWJsZSwgYmVoYXZpbmcKKyAgIGxpa2UgYSBmaXZlLXR1cGxlIGNvbnRhaW5pbmcgOmF0dHI6YHN5c25hbWVgLCA6YXR0cjpgbm9kZW5hbWVgLAorICAgOmF0dHI6YHJlbGVhc2VgLCA6YXR0cjpgdmVyc2lvbmAsIGFuZCA6YXR0cjpgbWFjaGluZWAKKyAgIGluIHRoYXQgb3JkZXIuCisKKyAgIFNvbWUgc3lzdGVtcyB0cnVuY2F0ZSA6YXR0cjpgbm9kZW5hbWVgIHRvIDggY2hhcmFjdGVycyBvciB0byB0aGUKICAgIGxlYWRpbmcgY29tcG9uZW50OyBhIGJldHRlciB3YXkgdG8gZ2V0IHRoZSBob3N0bmFtZSBpcwogICAgOmZ1bmM6YHNvY2tldC5nZXRob3N0bmFtZWAgIG9yIGV2ZW4KICAgIGBgc29ja2V0LmdldGhvc3RieWFkZHIoc29ja2V0LmdldGhvc3RuYW1lKCkpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogcmVjZW50IGZsYXZvcnMgb2YgVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJldHVybiB0eXBlIGNoYW5nZWQgZnJvbSBhIHR1cGxlIHRvIGEgdHVwbGUtbGlrZSBvYmplY3QKKyAgICAgIHdpdGggbmFtZWQgYXR0cmlidXRlcy4KKwogCiAuLiBmdW5jdGlvbjo6IHVuc2V0ZW52KGtleSkKIApAQCAtNTQyLDE1ICs2MTcsMTYgQEAKIEZpbGUgT2JqZWN0IENyZWF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1UaGVzZSBmdW5jdGlvbnMgY3JlYXRlIG5ldyA6dGVybTpgZmlsZSBvYmplY3RzIDxmaWxlIG9iamVjdD5gLiAoU2VlIGFsc28gOmZ1bmM6YG9wZW5gLikKK1RoaXMgZnVuY3Rpb24gY3JlYXRlcyBuZXcgOnRlcm06YGZpbGUgb2JqZWN0cyA8ZmlsZSBvYmplY3Q+YC4gIChTZWUgYWxzbworOmZ1bmM6YH5vcy5vcGVuYCBmb3Igb3BlbmluZyBmaWxlIGRlc2NyaXB0b3JzLikKIAogCiAuLiBmdW5jdGlvbjo6IGZkb3BlbihmZCwgKmFyZ3MsICoqa3dhcmdzKQogCi0gICBSZXR1cm4gYW4gb3BlbiBmaWxlIG9iamVjdCBjb25uZWN0ZWQgdG8gdGhlIGZpbGUgZGVzY3JpcHRvciAqZmQqLgotICAgVGhpcyBpcyBhbiBhbGlhcyBvZiA6ZnVuYzpgb3BlbmAgYW5kIGFjY2VwdHMgdGhlIHNhbWUgYXJndW1lbnRzLgotICAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBvZiA6ZnVuYzpgZmRvcGVuYAotICAgbXVzdCBhbHdheXMgYmUgYW4gaW50ZWdlci4KKyAgIFJldHVybiBhbiBvcGVuIGZpbGUgb2JqZWN0IGNvbm5lY3RlZCB0byB0aGUgZmlsZSBkZXNjcmlwdG9yICpmZCouICBUaGlzIGlzIGFuCisgICBhbGlhcyBvZiB0aGUgOmZ1bmM6YG9wZW5gIGJ1aWx0LWluIGZ1bmN0aW9uIGFuZCBhY2NlcHRzIHRoZSBzYW1lIGFyZ3VtZW50cy4KKyAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgb2YgOmZ1bmM6YGZkb3BlbmAgbXVzdCBhbHdheXMKKyAgIGJlIGFuIGludGVnZXIuCiAKIAogLi4gX29zLWZkLW9wczoKQEAgLTU3Miw2ICs2NDgsNyBAQAogZGVzY3JpcHRvciBkaXJlY3RseSB3aWxsIGJ5cGFzcyB0aGUgZmlsZSBvYmplY3QgbWV0aG9kcywgaWdub3JpbmcgYXNwZWN0cyBzdWNoCiBhcyBpbnRlcm5hbCBidWZmZXJpbmcgb2YgZGF0YS4KIAorCiAuLiBmdW5jdGlvbjo6IGNsb3NlKGZkKQogCiAgICBDbG9zZSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4KQEAgLTU4OSw3ICs2NjYsNyBAQAogLi4gZnVuY3Rpb246OiBjbG9zZXJhbmdlKGZkX2xvdywgZmRfaGlnaCkKIAogICAgQ2xvc2UgYWxsIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSAqZmRfbG93KiAoaW5jbHVzaXZlKSB0byAqZmRfaGlnaCogKGV4Y2x1c2l2ZSksCi0gICBpZ25vcmluZyBlcnJvcnMuIEVxdWl2YWxlbnQgdG86OgorICAgaWdub3JpbmcgZXJyb3JzLiBFcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6OgogCiAgICAgICBmb3IgZmQgaW4gcmFuZ2UoZmRfbG93LCBmZF9oaWdoKToKICAgICAgICAgICB0cnk6CkBAIC02MjIsOCArNjk5LDkgQEAKIAogLi4gZnVuY3Rpb246OiBmY2htb2QoZmQsIG1vZGUpCiAKLSAgIENoYW5nZSB0aGUgbW9kZSBvZiB0aGUgZmlsZSBnaXZlbiBieSAqZmQqIHRvIHRoZSBudW1lcmljICptb2RlKi4gIFNlZSB0aGUgZG9jcwotICAgZm9yIDpmdW5jOmBjaG1vZGAgZm9yIHBvc3NpYmxlIHZhbHVlcyBvZiAqbW9kZSouCisgICBDaGFuZ2UgdGhlIG1vZGUgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgKmZkKiB0byB0aGUgbnVtZXJpYyAqbW9kZSouICBTZWUgdGhlCisgICBkb2NzIGZvciA6ZnVuYzpgY2htb2RgIGZvciBwb3NzaWJsZSB2YWx1ZXMgb2YgKm1vZGUqLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcworICAgaXMgZXF1aXZhbGVudCB0byBgYG9zLmNobW9kKGZkLCBtb2RlKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKQEAgLTYzMSw3ICs3MDksOSBAQAogLi4gZnVuY3Rpb246OiBmY2hvd24oZmQsIHVpZCwgZ2lkKQogCiAgICBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiB0aGUgZmlsZSBnaXZlbiBieSAqZmQqIHRvIHRoZSBudW1lcmljICp1aWQqCi0gICBhbmQgKmdpZCouICBUbyBsZWF2ZSBvbmUgb2YgdGhlIGlkcyB1bmNoYW5nZWQsIHNldCBpdCB0byAtMS4KKyAgIGFuZCAqZ2lkKi4gIFRvIGxlYXZlIG9uZSBvZiB0aGUgaWRzIHVuY2hhbmdlZCwgc2V0IGl0IHRvIC0xLiAgU2VlCisgICA6ZnVuYzpgY2hvd25gLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgb3MuY2hvd24oZmQsIHVpZCwKKyAgIGdpZClgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCkBAIC02NjIsMjAgKzc0MiwyNCBAQAogICAgaW5jbHVkZWQgaW4gYGBwYXRoY29uZl9uYW1lc2BgLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgd2l0aAogICAgOmNvbnN0OmBlcnJuby5FSU5WQUxgIGZvciB0aGUgZXJyb3IgbnVtYmVyLgogCisgICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5wYXRoY29uZihmZCwgbmFtZSlgYC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKIC4uIGZ1bmN0aW9uOjogZnN0YXQoZmQpCiAKLSAgIFJldHVybiBzdGF0dXMgZm9yIGZpbGUgZGVzY3JpcHRvciAqZmQqLCBsaWtlIDpmdW5jOmB+b3Muc3RhdGAuCisgICBSZXR1cm4gc3RhdHVzIGZvciBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgbGlrZSA6ZnVuYzpgfm9zLnN0YXRgLiAgQXMgb2YgUHl0aG9uCisgICAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBgYG9zLnN0YXQoZmQpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogCiAuLiBmdW5jdGlvbjo6IGZzdGF0dmZzKGZkKQogCi0gICBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpbGVzeXN0ZW0gY29udGFpbmluZyB0aGUgZmlsZSBhc3NvY2lhdGVkIHdpdGggZmlsZQotICAgZGVzY3JpcHRvciAqZmQqLCBsaWtlIDpmdW5jOmBzdGF0dmZzYC4KKyAgIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmlsZXN5c3RlbSBjb250YWluaW5nIHRoZSBmaWxlIGFzc29jaWF0ZWQgd2l0aAorICAgZmlsZSBkZXNjcmlwdG9yICpmZCosIGxpa2UgOmZ1bmM6YHN0YXR2ZnNgLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcworICAgZXF1aXZhbGVudCB0byBgYG9zLnN0YXR2ZnMoZmQpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIApAQCAtNjg5LDEzICs3NzMsMTQgQEAKICAgIGBgZi5mbHVzaCgpYGAsIGFuZCB0aGVuIGRvIGBgb3MuZnN5bmMoZi5maWxlbm8oKSlgYCwgdG8gZW5zdXJlIHRoYXQgYWxsIGludGVybmFsCiAgICBidWZmZXJzIGFzc29jaWF0ZWQgd2l0aCAqZiogYXJlIHdyaXR0ZW4gdG8gZGlzay4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBhbmQgV2luZG93cy4KKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogCiAuLiBmdW5jdGlvbjo6IGZ0cnVuY2F0ZShmZCwgbGVuZ3RoKQogCi0gICBUcnVuY2F0ZSB0aGUgZmlsZSBjb3JyZXNwb25kaW5nIHRvIGZpbGUgZGVzY3JpcHRvciAqZmQqLCBzbyB0aGF0IGl0IGlzIGF0IG1vc3QKLSAgICpsZW5ndGgqIGJ5dGVzIGluIHNpemUuCisgICBUcnVuY2F0ZSB0aGUgZmlsZSBjb3JyZXNwb25kaW5nIHRvIGZpbGUgZGVzY3JpcHRvciAqZmQqLCBzbyB0aGF0IGl0IGlzIGF0CisgICBtb3N0ICpsZW5ndGgqIGJ5dGVzIGluIHNpemUuICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgIGBgb3MudHJ1bmNhdGUoZmQsIGxlbmd0aClgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCkBAIC03MDgsNiArNzkzLDMxIEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAorLi4gZnVuY3Rpb246OiBsb2NrZihmZCwgY21kLCBsZW4pCisKKyAgIEFwcGx5LCB0ZXN0IG9yIHJlbW92ZSBhIFBPU0lYIGxvY2sgb24gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgICAqZmQqIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAgKmNtZCogc3BlY2lmaWVzIHRoZSBjb21tYW5kIHRvIHVzZSAtIG9uZSBvZiA6ZGF0YTpgRl9MT0NLYCwgOmRhdGE6YEZfVExPQ0tgLAorICAgOmRhdGE6YEZfVUxPQ0tgIG9yIDpkYXRhOmBGX1RFU1RgLgorICAgKmxlbiogc3BlY2lmaWVzIHRoZSBzZWN0aW9uIG9mIHRoZSBmaWxlIHRvIGxvY2suCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IEZfTE9DSworICAgICAgICAgIEZfVExPQ0sKKyAgICAgICAgICBGX1VMT0NLCisgICAgICAgICAgRl9URVNUCisKKyAgIEZsYWdzIHRoYXQgc3BlY2lmeSB3aGF0IGFjdGlvbiA6ZnVuYzpgbG9ja2ZgIHdpbGwgdGFrZS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGxzZWVrKGZkLCBwb3MsIGhvdykKIAogICAgU2V0IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIGZpbGUgZGVzY3JpcHRvciAqZmQqIHRvIHBvc2l0aW9uICpwb3MqLCBtb2RpZmllZApAQCAtNzI0LDIxICs4MzQsMjkgQEAKICAgICAgICAgICBTRUVLX0VORAogCiAgICBQYXJhbWV0ZXJzIHRvIHRoZSA6ZnVuYzpgbHNlZWtgIGZ1bmN0aW9uLiBUaGVpciB2YWx1ZXMgYXJlIDAsIDEsIGFuZCAyLAotICAgcmVzcGVjdGl2ZWx5LiBBdmFpbGFiaWxpdHk6IFdpbmRvd3MsIFVuaXguCisgICByZXNwZWN0aXZlbHkuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBTb21lIG9wZXJhdGluZyBzeXN0ZW1zIGNvdWxkIHN1cHBvcnQgYWRkaXRpb25hbCB2YWx1ZXMsIGxpa2UKKyAgICAgIDpkYXRhOmBvcy5TRUVLX0hPTEVgIG9yIDpkYXRhOmBvcy5TRUVLX0RBVEFgLgogCiAKLS4uIGZ1bmN0aW9uOjogb3BlbihmaWxlLCBmbGFnc1ssIG1vZGVdKQorLi4gZnVuY3Rpb246OiBvcGVuKGZpbGUsIGZsYWdzLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSkKIAogICAgT3BlbiB0aGUgZmlsZSAqZmlsZSogYW5kIHNldCB2YXJpb3VzIGZsYWdzIGFjY29yZGluZyB0byAqZmxhZ3MqIGFuZCBwb3NzaWJseQotICAgaXRzIG1vZGUgYWNjb3JkaW5nIHRvICptb2RlKi4gIFRoZSBkZWZhdWx0ICptb2RlKiBpcyBgYDBvNzc3YGAgKG9jdGFsKSwgYW5kCi0gICB0aGUgY3VycmVudCB1bWFzayB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQgb3V0LiAgUmV0dXJuIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yCi0gICB0aGUgbmV3bHkgb3BlbmVkIGZpbGUuCisgICBpdHMgbW9kZSBhY2NvcmRpbmcgdG8gKm1vZGUqLiAgV2hlbiBjb21wdXRpbmcgKm1vZGUqLCB0aGUgY3VycmVudCB1bWFzayB2YWx1ZQorICAgaXMgZmlyc3QgbWFza2VkIG91dC4gIFJldHVybiB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgbmV3bHkgb3BlbmVkIGZpbGUuCiAKICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmbGFnIGFuZCBtb2RlIHZhbHVlcywgc2VlIHRoZSBDIHJ1bi10aW1lIGRvY3VtZW50YXRpb247CiAgICBmbGFnIGNvbnN0YW50cyAobGlrZSA6Y29uc3Q6YE9fUkRPTkxZYCBhbmQgOmNvbnN0OmBPX1dST05MWWApIGFyZSBkZWZpbmVkIGluCiAgICB0aGlzIG1vZHVsZSB0b28gKHNlZSA6cmVmOmBvcGVuLWNvbnN0YW50c2ApLiAgSW4gcGFydGljdWxhciwgb24gV2luZG93cyBhZGRpbmcKICAgIDpjb25zdDpgT19CSU5BUllgIGlzIG5lZWRlZCB0byBvcGVuIGZpbGVzIGluIGJpbmFyeSBtb2RlLgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIG5vdGU6OgpAQCAtNzQ4LDYgKzg2Niw5IEBACiAgICAgICA6bWV0aDpgfmZpbGUucmVhZGAgYW5kIDptZXRoOmB+ZmlsZS53cml0ZWAgbWV0aG9kcyAoYW5kIG1hbnkgbW9yZSkuICBUbwogICAgICAgd3JhcCBhIGZpbGUgZGVzY3JpcHRvciBpbiBhIGZpbGUgb2JqZWN0LCB1c2UgOmZ1bmM6YGZkb3BlbmAuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCiAKIC4uIGZ1bmN0aW9uOjogb3BlbnB0eSgpCiAKQEAgLTc2OCw2ICs4ODksNzkgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogCisuLiBmdW5jdGlvbjo6IHBpcGUyKGZsYWdzKQorCisgICBDcmVhdGUgYSBwaXBlIHdpdGggKmZsYWdzKiBzZXQgYXRvbWljYWxseS4KKyAgICpmbGFncyogY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IE9SaW5nIHRvZ2V0aGVyIG9uZSBvciBtb3JlIG9mIHRoZXNlIHZhbHVlczoKKyAgIDpkYXRhOmBPX05PTkJMT0NLYCwgOmRhdGE6YE9fQ0xPRVhFQ2AuCisgICBSZXR1cm4gYSBwYWlyIG9mIGZpbGUgZGVzY3JpcHRvcnMgYGAociwgdylgYCB1c2FibGUgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcsCisgICByZXNwZWN0aXZlbHkuCisKKyAgIEF2YWlsYWJpbGl0eTogc29tZSBmbGF2b3JzIG9mIFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcG9zaXhfZmFsbG9jYXRlKGZkLCBvZmZzZXQsIGxlbikKKworICAgRW5zdXJlcyB0aGF0IGVub3VnaCBkaXNrIHNwYWNlIGlzIGFsbG9jYXRlZCBmb3IgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpmZCoKKyAgIHN0YXJ0aW5nIGZyb20gKm9mZnNldCogYW5kIGNvbnRpbnVpbmcgZm9yICpsZW4qIGJ5dGVzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcG9zaXhfZmFkdmlzZShmZCwgb2Zmc2V0LCBsZW4sIGFkdmljZSkKKworICAgQW5ub3VuY2VzIGFuIGludGVudGlvbiB0byBhY2Nlc3MgZGF0YSBpbiBhIHNwZWNpZmljIHBhdHRlcm4gdGh1cyBhbGxvd2luZworICAgdGhlIGtlcm5lbCB0byBtYWtlIG9wdGltaXphdGlvbnMuCisgICBUaGUgYWR2aWNlIGFwcGxpZXMgdG8gdGhlIHJlZ2lvbiBvZiB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgKmZkKiBzdGFydGluZyBhdAorICAgKm9mZnNldCogYW5kIGNvbnRpbnVpbmcgZm9yICpsZW4qIGJ5dGVzLgorICAgKmFkdmljZSogaXMgb25lIG9mIDpkYXRhOmBQT1NJWF9GQURWX05PUk1BTGAsIDpkYXRhOmBQT1NJWF9GQURWX1NFUVVFTlRJQUxgLAorICAgOmRhdGE6YFBPU0lYX0ZBRFZfUkFORE9NYCwgOmRhdGE6YFBPU0lYX0ZBRFZfTk9SRVVTRWAsCisgICA6ZGF0YTpgUE9TSVhfRkFEVl9XSUxMTkVFRGAgb3IgOmRhdGE6YFBPU0lYX0ZBRFZfRE9OVE5FRURgLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBQT1NJWF9GQURWX05PUk1BTAorICAgICAgICAgIFBPU0lYX0ZBRFZfU0VRVUVOVElBTAorICAgICAgICAgIFBPU0lYX0ZBRFZfUkFORE9NCisgICAgICAgICAgUE9TSVhfRkFEVl9OT1JFVVNFCisgICAgICAgICAgUE9TSVhfRkFEVl9XSUxMTkVFRAorICAgICAgICAgIFBPU0lYX0ZBRFZfRE9OVE5FRUQKKworICAgRmxhZ3MgdGhhdCBjYW4gYmUgdXNlZCBpbiAqYWR2aWNlKiBpbiA6ZnVuYzpgcG9zaXhfZmFkdmlzZWAgdGhhdCBzcGVjaWZ5CisgICB0aGUgYWNjZXNzIHBhdHRlcm4gdGhhdCBpcyBsaWtlbHkgdG8gYmUgdXNlZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHByZWFkKGZkLCBidWZmZXJzaXplLCBvZmZzZXQpCisKKyAgIFJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciwgKmZkKiwgYXQgYSBwb3NpdGlvbiBvZiAqb2Zmc2V0Ki4gSXQgd2lsbCByZWFkIHVwCisgICB0byAqYnVmZmVyc2l6ZSogbnVtYmVyIG9mIGJ5dGVzLiBUaGUgZmlsZSBvZmZzZXQgcmVtYWlucyB1bmNoYW5nZWQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBwd3JpdGUoZmQsIHN0cmluZywgb2Zmc2V0KQorCisgICBXcml0ZSAqc3RyaW5nKiB0byBhIGZpbGUgZGVzY3JpcHRvciwgKmZkKiwgZnJvbSAqb2Zmc2V0KiwgbGVhdmluZyB0aGUgZmlsZQorICAgb2Zmc2V0IHVuY2hhbmdlZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IHJlYWQoZmQsIG4pCiAKICAgIFJlYWQgYXQgbW9zdCAqbiogYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4gUmV0dXJuIGEgYnl0ZXN0cmluZyBjb250YWluaW5nIHRoZQpAQCAtNzc5LDEwICs5NzMsNjIgQEAKICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciBsb3ctbGV2ZWwgSS9PIGFuZCBtdXN0IGJlIGFwcGxpZWQgdG8gYSBmaWxlCi0gICAgICBkZXNjcmlwdG9yIGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcy5vcGVuYCBvciA6ZnVuYzpgcGlwZWAuICBUbyByZWFkIGEgImZpbGUgb2JqZWN0IgotICAgICAgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBvcGVuYCBvciBieSA6ZnVuYzpgcG9wZW5gIG9yCi0gICAgICA6ZnVuYzpgZmRvcGVuYCwgb3IgOmRhdGE6YHN5cy5zdGRpbmAsIHVzZSBpdHMgOm1ldGg6YH5maWxlLnJlYWRgIG9yCi0gICAgICA6bWV0aDpgfmZpbGUucmVhZGxpbmVgIG1ldGhvZHMuCisgICAgICBkZXNjcmlwdG9yIGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcy5vcGVuYCBvciA6ZnVuYzpgcGlwZWAuICBUbyByZWFkIGEKKyAgICAgICJmaWxlIG9iamVjdCIgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBvcGVuYCBvciBieQorICAgICAgOmZ1bmM6YHBvcGVuYCBvciA6ZnVuYzpgZmRvcGVuYCwgb3IgOmRhdGE6YHN5cy5zdGRpbmAsIHVzZSBpdHMKKyAgICAgIDptZXRoOmB+ZmlsZS5yZWFkYCBvciA6bWV0aDpgfmZpbGUucmVhZGxpbmVgIG1ldGhvZHMuCisKKworLi4gZnVuY3Rpb246OiBzZW5kZmlsZShvdXQsIGluLCBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgICAgc2VuZGZpbGUob3V0LCBpbiwgb2Zmc2V0LCBuYnl0ZXMsIGhlYWRlcnM9Tm9uZSwgdHJhaWxlcnM9Tm9uZSwgZmxhZ3M9MCkKKworICAgQ29weSAqbmJ5dGVzKiBieXRlcyBmcm9tIGZpbGUgZGVzY3JpcHRvciAqaW4qIHRvIGZpbGUgZGVzY3JpcHRvciAqb3V0KgorICAgc3RhcnRpbmcgYXQgKm9mZnNldCouCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBzZW50LiBXaGVuIEVPRiBpcyByZWFjaGVkIHJldHVybiAwLgorCisgICBUaGUgZmlyc3QgZnVuY3Rpb24gbm90YXRpb24gaXMgc3VwcG9ydGVkIGJ5IGFsbCBwbGF0Zm9ybXMgdGhhdCBkZWZpbmUKKyAgIDpmdW5jOmBzZW5kZmlsZWAuCisKKyAgIE9uIExpbnV4LCBpZiAqb2Zmc2V0KiBpcyBnaXZlbiBhcyBgYE5vbmVgYCwgdGhlIGJ5dGVzIGFyZSByZWFkIGZyb20gdGhlCisgICBjdXJyZW50IHBvc2l0aW9uIG9mICppbiogYW5kIHRoZSBwb3NpdGlvbiBvZiAqaW4qIGlzIHVwZGF0ZWQuCisKKyAgIFRoZSBzZWNvbmQgY2FzZSBtYXkgYmUgdXNlZCBvbiBNYWMgT1MgWCBhbmQgRnJlZUJTRCB3aGVyZSAqaGVhZGVycyogYW5kCisgICAqdHJhaWxlcnMqIGFyZSBhcmJpdHJhcnkgc2VxdWVuY2VzIG9mIGJ1ZmZlcnMgdGhhdCBhcmUgd3JpdHRlbiBiZWZvcmUgYW5kCisgICBhZnRlciB0aGUgZGF0YSBmcm9tICppbiogaXMgd3JpdHRlbi4gSXQgcmV0dXJucyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgY2FzZS4KKworICAgT24gTWFjIE9TIFggYW5kIEZyZWVCU0QsIGEgdmFsdWUgb2YgMCBmb3IgKm5ieXRlcyogc3BlY2lmaWVzIHRvIHNlbmQgdW50aWwKKyAgIHRoZSBlbmQgb2YgKmluKiBpcyByZWFjaGVkLgorCisgICBPbiBTb2xhcmlzLCAqb3V0KiBtYXkgYmUgdGhlIGZpbGUgZGVzY3JpcHRvciBvZiBhIHJlZ3VsYXIgZmlsZSBvciB0aGUgZmlsZQorICAgZGVzY3JpcHRvciBvZiBhIHNvY2tldC4gT24gYWxsIG90aGVyIHBsYXRmb3JtcywgKm91dCogbXVzdCBiZSB0aGUgZmlsZQorICAgZGVzY3JpcHRvciBvZiBhbiBvcGVuIHNvY2tldC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogU0ZfTk9ESVNLSU8KKyAgICAgICAgICBTRl9NTk9XQUlUCisgICAgICAgICAgU0ZfU1lOQworCisgICBQYXJhbWV0ZXJzIHRvIHRoZSA6ZnVuYzpgc2VuZGZpbGVgIGZ1bmN0aW9uLCBpZiB0aGUgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMKKyAgIHRoZW0uCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiByZWFkdihmZCwgYnVmZmVycykKKworICAgUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGludG8gYSBudW1iZXIgb2Ygd3JpdGFibGUgYnVmZmVycy4gKmJ1ZmZlcnMqIGlzCisgICBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugb2Ygd3JpdGFibGUgYnVmZmVycy4gUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzCisgICByZWFkLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGZ1bmN0aW9uOjogdGNnZXRwZ3JwKGZkKQpAQCAtODI2LDYgKzEwNzIsMTcgQEAKICAgICAgIDptZXRoOmB+ZmlsZS53cml0ZWAgbWV0aG9kLgogCiAKKy4uIGZ1bmN0aW9uOjogd3JpdGV2KGZkLCBidWZmZXJzKQorCisgICBXcml0ZSB0aGUgY29udGVudHMgb2YgKmJ1ZmZlcnMqIHRvIGZpbGUgZGVzY3JpcHRvciAqZmQqLCB3aGVyZSAqYnVmZmVycyoKKyAgIGlzIGFuIGFyYml0cmFyeSBzZXF1ZW5jZSBvZiBidWZmZXJzLgorICAgUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gX29wZW4tY29uc3RhbnRzOgogCiBgYG9wZW4oKWBgIGZsYWcgY29uc3RhbnRzCkBAIC04NTcsOSArMTExNCwxMiBAQAogICAgICAgICAgIE9fTk9DVFRZCiAgICAgICAgICAgT19TSExPQ0sKICAgICAgICAgICBPX0VYTE9DSworICAgICAgICAgIE9fQ0xPRVhFQwogCiAgICBUaGVzZSBjb25zdGFudHMgYXJlIG9ubHkgYXZhaWxhYmxlIG9uIFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGQgOmRhdGE6YE9fQ0xPRVhFQ2AgY29uc3RhbnQuCiAKIC4uIGRhdGE6OiBPX0JJTkFSWQogICAgICAgICAgIE9fTk9JTkhFUklUCkBAIC04ODIsMTIgKzExNDIsMTA2IEBACiAgICB0aGUgQyBsaWJyYXJ5LgogCiAKKy4uIGRhdGE6OiBSVExEX0xBWlkKKyAgICAgICAgICBSVExEX05PVworICAgICAgICAgIFJUTERfR0xPQkFMCisgICAgICAgICAgUlRMRF9MT0NBTAorICAgICAgICAgIFJUTERfTk9ERUxFVEUKKyAgICAgICAgICBSVExEX05PTE9BRAorICAgICAgICAgIFJUTERfREVFUEJJTkQKKworICAgU2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlIDptYW5wYWdlOmBkbG9wZW4oMylgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBfdGVybWluYWwtc2l6ZToKKworUXVlcnlpbmcgdGhlIHNpemUgb2YgYSB0ZXJtaW5hbAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBnZXRfdGVybWluYWxfc2l6ZShmZD1TVERPVVRfRklMRU5PKQorCisgICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBhcyBgYChjb2x1bW5zLCBsaW5lcylgYCwKKyAgIHR1cGxlIG9mIHR5cGUgOmNsYXNzOmB0ZXJtaW5hbF9zaXplYC4KKworICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IGBgZmRgYCAoZGVmYXVsdCBgYFNURE9VVF9GSUxFTk9gYCwgb3Igc3RhbmRhcmQKKyAgIG91dHB1dCkgc3BlY2lmaWVzIHdoaWNoIGZpbGUgZGVzY3JpcHRvciBzaG91bGQgYmUgcXVlcmllZC4KKworICAgSWYgdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBub3QgY29ubmVjdGVkIHRvIGEgdGVybWluYWwsIGFuIDpleGM6YE9TRXJyb3JgCisgICBpcyB0aHJvd24uCisKKyAgIDpmdW5jOmBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemVgIGlzIHRoZSBoaWdoLWxldmVsIGZ1bmN0aW9uIHdoaWNoCisgICBzaG91bGQgbm9ybWFsbHkgYmUgdXNlZCwgYGBvcy5nZXRfdGVybWluYWxfc2l6ZWBgIGlzIHRoZSBsb3ctbGV2ZWwKKyAgIGltcGxlbWVudGF0aW9uLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKy4uIGNsYXNzOjogdGVybWluYWxfc2l6ZQorCisgICBBIHN1YmNsYXNzIG9mIHR1cGxlLCBob2xkaW5nIGBgKGNvbHVtbnMsIGxpbmVzKWBgIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgc2l6ZS4KKworICAgLi4gYXR0cmlidXRlOjogY29sdW1ucworCisgICAgICBXaWR0aCBvZiB0aGUgdGVybWluYWwgd2luZG93IGluIGNoYXJhY3RlcnMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGxpbmVzCisKKyAgICAgIEhlaWdodCBvZiB0aGUgdGVybWluYWwgd2luZG93IGluIGNoYXJhY3RlcnMuCisKKwogLi4gX29zLWZpbGUtZGlyOgogCiBGaWxlcyBhbmQgRGlyZWN0b3JpZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IGFjY2VzcyhwYXRoLCBtb2RlKQorT24gc29tZSBVbml4IHBsYXRmb3JtcywgbWFueSBvZiB0aGVzZSBmdW5jdGlvbnMgc3VwcG9ydCBvbmUgb3IgbW9yZSBvZiB0aGVzZQorZmVhdHVyZXM6CisKKy4uIF9wYXRoX2ZkOgorCisqICoqc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvcjoqKgorICBGb3Igc29tZSBmdW5jdGlvbnMsIHRoZSAqcGF0aCogYXJndW1lbnQgY2FuIGJlIG5vdCBvbmx5IGEgc3RyaW5nIGdpdmluZyBhIHBhdGgKKyAgbmFtZSwgYnV0IGFsc28gYSBmaWxlIGRlc2NyaXB0b3IuICBUaGUgZnVuY3Rpb24gd2lsbCB0aGVuIG9wZXJhdGUgb24gdGhlIGZpbGUKKyAgcmVmZXJyZWQgdG8gYnkgdGhlIGRlc2NyaXB0b3IuICAoRm9yIFBPU0lYIHN5c3RlbXMsIFB5dGhvbiB3aWxsIGNhbGwgdGhlCisgIGBgZi4uLmBgIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uLikKKworICBZb3UgY2FuIGNoZWNrIHdoZXRoZXIgb3Igbm90ICpwYXRoKiBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgZmlsZSBkZXNjcmlwdG9yIG9uCisgIHlvdXIgcGxhdGZvcm0gdXNpbmcgOmRhdGE6YG9zLnN1cHBvcnRzX2ZkYC4gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdAorICB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisKKyAgSWYgdGhlIGZ1bmN0aW9uIGFsc28gc3VwcG9ydHMgKmRpcl9mZCogb3IgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLCBpdCBpcworICBhbiBlcnJvciB0byBzcGVjaWZ5IG9uZSBvZiB0aG9zZSB3aGVuIHN1cHBseWluZyAqcGF0aCogYXMgYSBmaWxlIGRlc2NyaXB0b3IuCisKKy4uIF9kaXJfZmQ6CisKKyogKipwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnM6KiogSWYgKmRpcl9mZCogaXMgbm90IGBgTm9uZWBgLCBpdAorICBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHBhdGggdG8gb3BlcmF0ZQorICBvbiBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LiAgSWYgdGhlCisgIHBhdGggaXMgYWJzb2x1dGUsICpkaXJfZmQqIGlzIGlnbm9yZWQuICAoRm9yIFBPU0lYIHN5c3RlbXMsIFB5dGhvbiB3aWxsIGNhbGwKKyAgdGhlIGBgLi4uYXRgYCBvciBgYGYuLi5hdGBgIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uLikKKworICBZb3UgY2FuIGNoZWNrIHdoZXRoZXIgb3Igbm90ICpkaXJfZmQqIGlzIHN1cHBvcnRlZCBvbiB5b3VyIHBsYXRmb3JtIHVzaW5nCisgIDpkYXRhOmBvcy5zdXBwb3J0c19kaXJfZmRgLiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYQorICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKworLi4gX2ZvbGxvd19zeW1saW5rczoKKworKiAqKm5vdCBmb2xsb3dpbmcgc3ltbGlua3M6KiogSWYgKmZvbGxvd19zeW1saW5rcyogaXMKKyAgYGBGYWxzZWBgLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCB0byBvcGVyYXRlIG9uIGlzIGEgc3ltYm9saWMgbGluaywKKyAgdGhlIGZ1bmN0aW9uIHdpbGwgb3BlcmF0ZSBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGUKKyAgbGluayBwb2ludHMgdG8uICAoRm9yIFBPU0lYIHN5c3RlbXMsIFB5dGhvbiB3aWxsIGNhbGwgdGhlIGBgbC4uLmBgIHZlcnNpb24gb2YKKyAgdGhlIGZ1bmN0aW9uLikKKworICBZb3UgY2FuIGNoZWNrIHdoZXRoZXIgb3Igbm90ICpmb2xsb3dfc3ltbGlua3MqIGlzIHN1cHBvcnRlZCBvbiB5b3VyIHBsYXRmb3JtCisgIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3NgLiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0CisgIHdpbGwgcmFpc2UgYSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKworCisKKy4uIGZ1bmN0aW9uOjogYWNjZXNzKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBlZmZlY3RpdmVfaWRzPUZhbHNlLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgVXNlIHRoZSByZWFsIHVpZC9naWQgdG8gdGVzdCBmb3IgYWNjZXNzIHRvICpwYXRoKi4gIE5vdGUgdGhhdCBtb3N0IG9wZXJhdGlvbnMKICAgIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXMgcm91dGluZSBjYW4gYmUgdXNlZCBpbiBhCkBAIC04OTgsNiArMTI1MiwxNSBAQAogICAgOmNvbnN0OmBGYWxzZWAgaWYgbm90LiBTZWUgdGhlIFVuaXggbWFuIHBhZ2UgOm1hbnBhZ2U6YGFjY2VzcygyKWAgZm9yIG1vcmUKICAgIGluZm9ybWF0aW9uLgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IHNwZWNpZnlpbmcgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5CisgICBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisgICBJZiAqZWZmZWN0aXZlX2lkcyogaXMgYGBUcnVlYGAsIDpmdW5jOmBhY2Nlc3NgIHdpbGwgcGVyZm9ybSBpdHMgYWNjZXNzCisgICBjaGVja3MgdXNpbmcgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIGluc3RlYWQgb2YgdGhlIHJlYWwgdWlkL2dpZC4KKyAgICplZmZlY3RpdmVfaWRzKiBtYXkgbm90IGJlIHN1cHBvcnRlZCBvbiB5b3VyIHBsYXRmb3JtOyB5b3UgY2FuIGNoZWNrIHdoZXRoZXIKKyAgIG9yIG5vdCBpdCBpcyBhdmFpbGFibGUgdXNpbmcgOmRhdGE6YG9zLnN1cHBvcnRzX2VmZmVjdGl2ZV9pZHNgLiAgSWYgaXQgaXMKKyAgIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gbm90ZTo6CkBAIC05MTcsMTEgKzEyODAsOCBAQAogCiAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgZnAgPSBvcGVuKCJteWZpbGUiKQotICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBQ0NFUzoKLSAgICAgICAgICAgICAgICAgcmV0dXJuICJzb21lIGRlZmF1bHQgZGF0YSIKLSAgICAgICAgICAgICAjIE5vdCBhIHBlcm1pc3Npb24gZXJyb3IuCi0gICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CisgICAgICAgICAgICAgcmV0dXJuICJzb21lIGRlZmF1bHQgZGF0YSIKICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgd2l0aCBmcDoKICAgICAgICAgICAgICAgICAgcmV0dXJuIGZwLnJlYWQoKQpAQCAtOTMyLDI5ICsxMjkyLDE4IEBACiAgICAgICBzdWNjZWVkLCBwYXJ0aWN1bGFybHkgZm9yIG9wZXJhdGlvbnMgb24gbmV0d29yayBmaWxlc3lzdGVtcyB3aGljaCBtYXkgaGF2ZQogICAgICAgcGVybWlzc2lvbnMgc2VtYW50aWNzIGJleW9uZCB0aGUgdXN1YWwgUE9TSVggcGVybWlzc2lvbi1iaXQgbW9kZWwuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRpcl9mZCosICplZmZlY3RpdmVfaWRzKiwgYW5kICpmb2xsb3dfc3ltbGlua3MqIHBhcmFtZXRlcnMuCisKIAogLi4gZGF0YTo6IEZfT0sKKyAgICAgICAgICBSX09LCisgICAgICAgICAgV19PSworICAgICAgICAgIFhfT0sKIAotICAgVmFsdWUgdG8gcGFzcyBhcyB0aGUgKm1vZGUqIHBhcmFtZXRlciBvZiA6ZnVuYzpgYWNjZXNzYCB0byB0ZXN0IHRoZSBleGlzdGVuY2Ugb2YKLSAgICpwYXRoKi4KLQotCi0uLiBkYXRhOjogUl9PSwotCi0gICBWYWx1ZSB0byBpbmNsdWRlIGluIHRoZSAqbW9kZSogcGFyYW1ldGVyIG9mIDpmdW5jOmBhY2Nlc3NgIHRvIHRlc3QgdGhlCi0gICByZWFkYWJpbGl0eSBvZiAqcGF0aCouCi0KLQotLi4gZGF0YTo6IFdfT0sKLQotICAgVmFsdWUgdG8gaW5jbHVkZSBpbiB0aGUgKm1vZGUqIHBhcmFtZXRlciBvZiA6ZnVuYzpgYWNjZXNzYCB0byB0ZXN0IHRoZQotICAgd3JpdGFiaWxpdHkgb2YgKnBhdGgqLgotCi0KLS4uIGRhdGE6OiBYX09LCi0KLSAgIFZhbHVlIHRvIGluY2x1ZGUgaW4gdGhlICptb2RlKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YGFjY2Vzc2AgdG8gZGV0ZXJtaW5lIGlmCi0gICAqcGF0aCogY2FuIGJlIGV4ZWN1dGVkLgorICAgVmFsdWVzIHRvIHBhc3MgYXMgdGhlICptb2RlKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YGFjY2Vzc2AgdG8gdGVzdCB0aGUKKyAgIGV4aXN0ZW5jZSwgcmVhZGFiaWxpdHksIHdyaXRhYmlsaXR5IGFuZCBleGVjdXRhYmlsaXR5IG9mICpwYXRoKiwKKyAgIHJlc3BlY3RpdmVseS4KIAogCiAuLiBmdW5jdGlvbjo6IGNoZGlyKHBhdGgpCkBAIC05NjMsMzMgKzEzMTIsMTcgQEAKIAogICAgQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvICpwYXRoKi4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCi0KLS4uIGZ1bmN0aW9uOjogZmNoZGlyKGZkKQotCi0gICBDaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIGRpcmVjdG9yeSByZXByZXNlbnRlZCBieSB0aGUgZmlsZQotICAgZGVzY3JpcHRvciAqZmQqLiAgVGhlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhbiBvcGVuZWQgZGlyZWN0b3J5LCBub3QgYW4gb3BlbgotICAgZmlsZS4KLQotICAgQXZhaWxhYmlsaXR5OiBVbml4LgotCi0KLS4uIGZ1bmN0aW9uOjogZ2V0Y3dkKCkKLQotICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLiAgVGhlCisgICBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYW4gb3BlbmVkIGRpcmVjdG9yeSwgbm90IGFuIG9wZW4gZmlsZS4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCi0KLS4uIGZ1bmN0aW9uOjogZ2V0Y3dkYigpCi0KLSAgIFJldHVybiBhIGJ5dGVzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgKnBhdGgqIGFzIGEgZmlsZSBkZXNjcmlwdG9yCisgICAgICBvbiBzb21lIHBsYXRmb3Jtcy4KIAogCi0uLiBmdW5jdGlvbjo6IGNoZmxhZ3MocGF0aCwgZmxhZ3MpCisuLiBmdW5jdGlvbjo6IGNoZmxhZ3MocGF0aCwgZmxhZ3MsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBTZXQgdGhlIGZsYWdzIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqZmxhZ3MqLiAqZmxhZ3MqIG1heSB0YWtlIGEgY29tYmluYXRpb24KICAgIChiaXR3aXNlIE9SKSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcyAoYXMgZGVmaW5lZCBpbiB0aGUgOm1vZDpgc3RhdGAgbW9kdWxlKToKQEAgLTEwMDcsMTYgKzEzNDAsMTUgQEAKICAgICogOmRhdGE6YHN0YXQuU0ZfTk9VTkxJTktgCiAgICAqIDpkYXRhOmBzdGF0LlNGX1NOQVBTSE9UYAogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKLQotLi4gZnVuY3Rpb246OiBjaHJvb3QocGF0aCkKLQotICAgQ2hhbmdlIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCBwcm9jZXNzIHRvICpwYXRoKi4gQXZhaWxhYmlsaXR5OgotICAgVW5peC4KKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50LgogCiAKLS4uIGZ1bmN0aW9uOjogY2htb2QocGF0aCwgbW9kZSkKKy4uIGZ1bmN0aW9uOjogY2htb2QocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBDaGFuZ2UgdGhlIG1vZGUgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICptb2RlKi4gKm1vZGUqIG1heSB0YWtlIG9uZSBvZiB0aGUKICAgIGZvbGxvd2luZyB2YWx1ZXMgKGFzIGRlZmluZWQgaW4gdGhlIDptb2Q6YHN0YXRgIG1vZHVsZSkgb3IgYml0d2lzZSBPUmVkCkBAIC0xMDQyLDI4ICsxMzc0LDc3IEBACiAgICAqIDpkYXRhOmBzdGF0LlNfSVdPVEhgCiAgICAqIDpkYXRhOmBzdGF0LlNfSVhPVEhgCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLAorICAgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCBhbmQgOnJlZjpgbm90CisgICBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIG5vdGU6OgogCi0gICAgICBBbHRob3VnaCBXaW5kb3dzIHN1cHBvcnRzIDpmdW5jOmBjaG1vZGAsIHlvdSBjYW4gb25seSAgc2V0IHRoZSBmaWxlJ3MgcmVhZC1vbmx5Ci0gICAgICBmbGFnIHdpdGggaXQgKHZpYSB0aGUgYGBzdGF0LlNfSVdSSVRFYGAgIGFuZCBgYHN0YXQuU19JUkVBRGBgCi0gICAgICBjb25zdGFudHMgb3IgYSBjb3JyZXNwb25kaW5nIGludGVnZXIgdmFsdWUpLiAgQWxsIG90aGVyIGJpdHMgYXJlCi0gICAgICBpZ25vcmVkLgorICAgICAgQWx0aG91Z2ggV2luZG93cyBzdXBwb3J0cyA6ZnVuYzpgY2htb2RgLCB5b3UgY2FuIG9ubHkgc2V0IHRoZSBmaWxlJ3MKKyAgICAgIHJlYWQtb25seSBmbGFnIHdpdGggaXQgKHZpYSB0aGUgYGBzdGF0LlNfSVdSSVRFYGAgYW5kIGBgc3RhdC5TX0lSRUFEYGAKKyAgICAgIGNvbnN0YW50cyBvciBhIGNvcnJlc3BvbmRpbmcgaW50ZWdlciB2YWx1ZSkuICBBbGwgb3RoZXIgYml0cyBhcmUgaWdub3JlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nICpwYXRoKiBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciwKKyAgICAgIGFuZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KIAogCi0uLiBmdW5jdGlvbjo6IGNob3duKHBhdGgsIHVpZCwgZ2lkKQorLi4gZnVuY3Rpb246OiBjaG93bihwYXRoLCB1aWQsIGdpZCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCi0gICBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKnVpZCogYW5kICpnaWQqLiBUbyBsZWF2ZQotICAgb25lIG9mIHRoZSBpZHMgdW5jaGFuZ2VkLCBzZXQgaXQgdG8gLTEuCisgICBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKnVpZCogYW5kICpnaWQqLiAgVG8KKyAgIGxlYXZlIG9uZSBvZiB0aGUgaWRzIHVuY2hhbmdlZCwgc2V0IGl0IHRvIC0xLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCwKKyAgIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdAorICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworICAgU2VlIDpmdW5jOmBzaHV0aWwuY2hvd25gIGZvciBhIGhpZ2hlci1sZXZlbCBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgbmFtZXMgaW4KKyAgIGFkZGl0aW9uIHRvIG51bWVyaWMgaWRzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLAorICAgICAgYW5kIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgorCisKKy4uIGZ1bmN0aW9uOjogY2hyb290KHBhdGgpCisKKyAgIENoYW5nZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcyB0byAqcGF0aCouCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCisuLiBmdW5jdGlvbjo6IGZjaGRpcihmZCkKKworICAgQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBkaXJlY3RvcnkgcmVwcmVzZW50ZWQgYnkgdGhlIGZpbGUKKyAgIGRlc2NyaXB0b3IgKmZkKi4gIFRoZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYW4gb3BlbmVkIGRpcmVjdG9yeSwgbm90IGFuCisgICBvcGVuIGZpbGUuICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5jaGRpcihmZClgYC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisKKy4uIGZ1bmN0aW9uOjogZ2V0Y3dkKCkKKworICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisKKy4uIGZ1bmN0aW9uOjogZ2V0Y3dkYigpCisKKyAgIFJldHVybiBhIGJ5dGVzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKwogLi4gZnVuY3Rpb246OiBsY2hmbGFncyhwYXRoLCBmbGFncykKIAotICAgU2V0IHRoZSBmbGFncyBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKmZsYWdzKiwgbGlrZSA6ZnVuYzpgY2hmbGFnc2AsIGJ1dCBkbyBub3QKLSAgIGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4KKyAgIFNldCB0aGUgZmxhZ3Mgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICpmbGFncyosIGxpa2UgOmZ1bmM6YGNoZmxhZ3NgLCBidXQgZG8KKyAgIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgIGBgb3MuY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKQEAgLTEwNzEsMTEwICsxNDUyLDEwMSBAQAogLi4gZnVuY3Rpb246OiBsY2htb2QocGF0aCwgbW9kZSkKIAogICAgQ2hhbmdlIHRoZSBtb2RlIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqbW9kZSouIElmIHBhdGggaXMgYSBzeW1saW5rLCB0aGlzCi0gICBhZmZlY3RzIHRoZSBzeW1saW5rIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQuIFNlZSB0aGUgZG9jcyBmb3IgOmZ1bmM6YGNobW9kYAotICAgZm9yIHBvc3NpYmxlIHZhbHVlcyBvZiAqbW9kZSouCisgICBhZmZlY3RzIHRoZSBzeW1saW5rIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQuICBTZWUgdGhlIGRvY3MgZm9yIDpmdW5jOmBjaG1vZGAKKyAgIGZvciBwb3NzaWJsZSB2YWx1ZXMgb2YgKm1vZGUqLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICBgYG9zLmNobW9kKHBhdGgsIG1vZGUsIGZvbGxvd19zeW1saW5rcz1GYWxzZSlgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKIC4uIGZ1bmN0aW9uOjogbGNob3duKHBhdGgsIHVpZCwgZ2lkKQogCi0gICBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKnVpZCogYW5kICpnaWQqLiBUaGlzCi0gICBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuCisgICBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKnVpZCogYW5kICpnaWQqLiAgVGhpcworICAgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50CisgICB0byBgYG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCi0uLiBmdW5jdGlvbjo6IGxpbmsoc291cmNlLCBsaW5rX25hbWUpCisuLiBmdW5jdGlvbjo6IGxpbmsoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAotICAgQ3JlYXRlIGEgaGFyZCBsaW5rIHBvaW50aW5nIHRvICpzb3VyY2UqIG5hbWVkICpsaW5rX25hbWUqLgorICAgQ3JlYXRlIGEgaGFyZCBsaW5rIHBvaW50aW5nIHRvICpzcmMqIG5hbWVkICpkc3QqLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IHNwZWNpZnlpbmcgKnNyY19kaXJfZmQqIGFuZC9vciAqZHN0X2Rpcl9mZCogdG8KKyAgIHN1cHBseSA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gLCBhbmQgOnJlZjpgbm90CisgICBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpzcmNfZGlyX2ZkKiwgKmRzdF9kaXJfZmQqLCBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgorCiAKIC4uIGZ1bmN0aW9uOjogbGlzdGRpcihwYXRoPScuJykKIAogICAgUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZW50cmllcyBpbiB0aGUgZGlyZWN0b3J5IGdpdmVuIGJ5Ci0gICAqcGF0aCogKGRlZmF1bHQ6IGBgJy4nYGApLiAgVGhlIGxpc3QgaXMgaW4gYXJiaXRyYXJ5IG9yZGVyLiAgSXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgc3BlY2lhbAorICAgKnBhdGgqLiAgVGhlIGxpc3QgaXMgaW4gYXJiaXRyYXJ5IG9yZGVyLCBhbmQgZG9lcyBub3QgaW5jbHVkZSB0aGUgc3BlY2lhbAogICAgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4KIAotICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHdpdGggYSBieXRlcyBvciBzdHJpbmcgYXJndW1lbnQsIGFuZCByZXR1cm5zCi0gICBmaWxlbmFtZXMgb2YgdGhlIHNhbWUgZGF0YXR5cGUuCisgICAqcGF0aCogbWF5IGJlIGVpdGhlciBvZiB0eXBlIGBgc3RyYGAgb3Igb2YgdHlwZSBgYGJ5dGVzYGAuICBJZiAqcGF0aCoKKyAgIGlzIG9mIHR5cGUgYGBieXRlc2BgLCB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBvZiB0eXBlIGBgYnl0ZXNgYDsKKyAgIGluIGFsbCBvdGhlciBjaXJjdW1zdGFuY2VzLCB0aGV5IHdpbGwgYmUgb2YgdHlwZSBgYHN0cmBgLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvcgorICAgPHBhdGhfZmQ+YDsgdGhlIGZpbGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGEgZGlyZWN0b3J5LgorCisgICAuLiBub3RlOjoKKyAgICAgIFRvIGVuY29kZSBgYHN0cmBgIGZpbGVuYW1lcyB0byBgYGJ5dGVzYGAsIHVzZSA6ZnVuYzpgfm9zLmZzZW5jb2RlYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlICpwYXRoKiBwYXJhbWV0ZXIgYmVjYW1lIG9wdGlvbmFsLgogCi0uLiBmdW5jdGlvbjo6IGxzdGF0KHBhdGgpCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KKworCisuLiBmdW5jdGlvbjo6IGxzdGF0KHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBQZXJmb3JtIHRoZSBlcXVpdmFsZW50IG9mIGFuIDpjOmZ1bmM6YGxzdGF0YCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4KICAgIFNpbWlsYXIgdG8gOmZ1bmM6YH5vcy5zdGF0YCwgYnV0IGRvZXMgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4gIE9uCiAgICBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBzeW1ib2xpYyBsaW5rcywgdGhpcyBpcyBhbiBhbGlhcyBmb3IKLSAgIDpmdW5jOmB+b3Muc3RhdGAuCisgICA6ZnVuYzpgfm9zLnN0YXRgLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgb3Muc3RhdChwYXRoLAorICAgZGlyX2ZkPWRpcl9mZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKWBgLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzIDYuMCAoVmlzdGEpIHN5bWJvbGljIGxpbmtzLgogCi0KLS4uIGZ1bmN0aW9uOjogbWtmaWZvKHBhdGhbLCBtb2RlXSkKLQotICAgQ3JlYXRlIGEgRklGTyAoYSBuYW1lZCBwaXBlKSBuYW1lZCAqcGF0aCogd2l0aCBudW1lcmljIG1vZGUgKm1vZGUqLiAgVGhlCi0gICBkZWZhdWx0ICptb2RlKiBpcyBgYDBvNjY2YGAgKG9jdGFsKS4gIFRoZSBjdXJyZW50IHVtYXNrIHZhbHVlIGlzIGZpcnN0IG1hc2tlZAotICAgb3V0IGZyb20gdGhlIG1vZGUuCi0KLSAgIEZJRk9zIGFyZSBwaXBlcyB0aGF0IGNhbiBiZSBhY2Nlc3NlZCBsaWtlIHJlZ3VsYXIgZmlsZXMuICBGSUZPcyBleGlzdCB1bnRpbCB0aGV5Ci0gICBhcmUgZGVsZXRlZCAoZm9yIGV4YW1wbGUgd2l0aCA6ZnVuYzpgb3MudW5saW5rYCkuIEdlbmVyYWxseSwgRklGT3MgYXJlIHVzZWQgYXMKLSAgIHJlbmRlenZvdXMgYmV0d2VlbiAiY2xpZW50IiBhbmQgInNlcnZlciIgdHlwZSBwcm9jZXNzZXM6IHRoZSBzZXJ2ZXIgb3BlbnMgdGhlCi0gICBGSUZPIGZvciByZWFkaW5nLCBhbmQgdGhlIGNsaWVudCBvcGVucyBpdCBmb3Igd3JpdGluZy4gIE5vdGUgdGhhdCA6ZnVuYzpgbWtmaWZvYAotICAgZG9lc24ndCBvcGVuIHRoZSBGSUZPIC0tLSBpdCBqdXN0IGNyZWF0ZXMgdGhlIHJlbmRlenZvdXMgcG9pbnQuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCiAKLS4uIGZ1bmN0aW9uOjogbWtub2QoZmlsZW5hbWVbLCBtb2RlPTBvNjAwWywgZGV2aWNlPTBdXSkKKy4uIGZ1bmN0aW9uOjogbWtkaXIocGF0aCwgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpCiAKLSAgIENyZWF0ZSBhIGZpbGVzeXN0ZW0gbm9kZSAoZmlsZSwgZGV2aWNlIHNwZWNpYWwgZmlsZSBvciBuYW1lZCBwaXBlKSBuYW1lZAotICAgKmZpbGVuYW1lKi4gKm1vZGUqIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZSB0eXBlIG9mIG5vZGUKLSAgIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZiBgYHN0YXQuU19JRlJFR2BgLAotICAgYGBzdGF0LlNfSUZDSFJgYCwgYGBzdGF0LlNfSUZCTEtgYCwgYW5kIGBgc3RhdC5TX0lGSUZPYGAgKHRob3NlIGNvbnN0YW50cyBhcmUKLSAgIGF2YWlsYWJsZSBpbiA6bW9kOmBzdGF0YCkuICBGb3IgYGBzdGF0LlNfSUZDSFJgYCBhbmQgYGBzdGF0LlNfSUZCTEtgYCwKLSAgICpkZXZpY2UqIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmcKLSAgIDpmdW5jOmBvcy5tYWtlZGV2YCksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLgorICAgQ3JlYXRlIGEgZGlyZWN0b3J5IG5hbWVkICpwYXRoKiB3aXRoIG51bWVyaWMgbW9kZSAqbW9kZSouCiAKKyAgIE9uIHNvbWUgc3lzdGVtcywgKm1vZGUqIGlzIGlnbm9yZWQuICBXaGVyZSBpdCBpcyB1c2VkLCB0aGUgY3VycmVudCB1bWFzaworICAgdmFsdWUgaXMgZmlyc3QgbWFza2VkIG91dC4gIElmIHRoZSBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMsIDpleGM6YE9TRXJyb3JgCisgICBpcyByYWlzZWQuCiAKLS4uIGZ1bmN0aW9uOjogbWFqb3IoZGV2aWNlKQotCi0gICBFeHRyYWN0IHRoZSBkZXZpY2UgbWFqb3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlciAodXN1YWxseSB0aGUKLSAgIDphdHRyOmBzdF9kZXZgIG9yIDphdHRyOmBzdF9yZGV2YCBmaWVsZCBmcm9tIDpjOnR5cGU6YHN0YXRgKS4KLQotCi0uLiBmdW5jdGlvbjo6IG1pbm9yKGRldmljZSkKLQotICAgRXh0cmFjdCB0aGUgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIgKHVzdWFsbHkgdGhlCi0gICA6YXR0cjpgc3RfZGV2YCBvciA6YXR0cjpgc3RfcmRldmAgZmllbGQgZnJvbSA6Yzp0eXBlOmBzdGF0YCkuCi0KLQotLi4gZnVuY3Rpb246OiBtYWtlZGV2KG1ham9yLCBtaW5vcikKLQotICAgQ29tcG9zZSBhIHJhdyBkZXZpY2UgbnVtYmVyIGZyb20gdGhlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycy4KLQotCi0uLiBmdW5jdGlvbjo6IG1rZGlyKHBhdGhbLCBtb2RlXSkKLQotICAgQ3JlYXRlIGEgZGlyZWN0b3J5IG5hbWVkICpwYXRoKiB3aXRoIG51bWVyaWMgbW9kZSAqbW9kZSouIFRoZSBkZWZhdWx0ICptb2RlKgotICAgaXMgYGAwbzc3N2BgIChvY3RhbCkuICBPbiBzb21lIHN5c3RlbXMsICptb2RlKiBpcyBpZ25vcmVkLiAgV2hlcmUgaXQgaXMgdXNlZCwKLSAgIHRoZSBjdXJyZW50IHVtYXNrIHZhbHVlIGlzIGZpcnN0IG1hc2tlZCBvdXQuICBJZiB0aGUgZGlyZWN0b3J5IGFscmVhZHkKLSAgIGV4aXN0cywgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgorICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgogCiAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXM7IHNlZSB0aGUKICAgIDptb2Q6YHRlbXBmaWxlYCBtb2R1bGUncyA6ZnVuYzpgdGVtcGZpbGUubWtkdGVtcGAgZnVuY3Rpb24uCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCisKIAogLi4gZnVuY3Rpb246OiBtYWtlZGlycyhwYXRoLCBtb2RlPTBvNzc3LCBleGlzdF9vaz1GYWxzZSkKIApAQCAtMTIwMiw2ICsxNTc0LDYwIEBACiAgICAgICBUaGUgKmV4aXN0X29rKiBwYXJhbWV0ZXIuCiAKIAorLi4gZnVuY3Rpb246OiBta2ZpZm8ocGF0aCwgbW9kZT0wbzY2NiwgKiwgZGlyX2ZkPU5vbmUpCisKKyAgIENyZWF0ZSBhIEZJRk8gKGEgbmFtZWQgcGlwZSkgbmFtZWQgKnBhdGgqIHdpdGggbnVtZXJpYyBtb2RlICptb2RlKi4KKyAgIFRoZSBjdXJyZW50IHVtYXNrIHZhbHVlIGlzIGZpcnN0IG1hc2tlZCBvdXQgZnJvbSB0aGUgbW9kZS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCisgICBGSUZPcyBhcmUgcGlwZXMgdGhhdCBjYW4gYmUgYWNjZXNzZWQgbGlrZSByZWd1bGFyIGZpbGVzLiAgRklGT3MgZXhpc3QgdW50aWwgdGhleQorICAgYXJlIGRlbGV0ZWQgKGZvciBleGFtcGxlIHdpdGggOmZ1bmM6YG9zLnVubGlua2ApLiBHZW5lcmFsbHksIEZJRk9zIGFyZSB1c2VkIGFzCisgICByZW5kZXp2b3VzIGJldHdlZW4gImNsaWVudCIgYW5kICJzZXJ2ZXIiIHR5cGUgcHJvY2Vzc2VzOiB0aGUgc2VydmVyIG9wZW5zIHRoZQorICAgRklGTyBmb3IgcmVhZGluZywgYW5kIHRoZSBjbGllbnQgb3BlbnMgaXQgZm9yIHdyaXRpbmcuICBOb3RlIHRoYXQgOmZ1bmM6YG1rZmlmb2AKKyAgIGRvZXNuJ3Qgb3BlbiB0aGUgRklGTyAtLS0gaXQganVzdCBjcmVhdGVzIHRoZSByZW5kZXp2b3VzIHBvaW50LgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCisKKy4uIGZ1bmN0aW9uOjogbWtub2QoZmlsZW5hbWUsIG1vZGU9MG82MDAsIGRldmljZT0wLCAqLCBkaXJfZmQ9Tm9uZSkKKworICAgQ3JlYXRlIGEgZmlsZXN5c3RlbSBub2RlIChmaWxlLCBkZXZpY2Ugc3BlY2lhbCBmaWxlIG9yIG5hbWVkIHBpcGUpIG5hbWVkCisgICAqZmlsZW5hbWUqLiAqbW9kZSogc3BlY2lmaWVzIGJvdGggdGhlIHBlcm1pc3Npb25zIHRvIHVzZSBhbmQgdGhlIHR5cGUgb2Ygbm9kZQorICAgdG8gYmUgY3JlYXRlZCwgYmVpbmcgY29tYmluZWQgKGJpdHdpc2UgT1IpIHdpdGggb25lIG9mIGBgc3RhdC5TX0lGUkVHYGAsCisgICBgYHN0YXQuU19JRkNIUmBgLCBgYHN0YXQuU19JRkJMS2BgLCBhbmQgYGBzdGF0LlNfSUZJRk9gYCAodGhvc2UgY29uc3RhbnRzIGFyZQorICAgYXZhaWxhYmxlIGluIDptb2Q6YHN0YXRgKS4gIEZvciBgYHN0YXQuU19JRkNIUmBgIGFuZCBgYHN0YXQuU19JRkJMS2BgLAorICAgKmRldmljZSogZGVmaW5lcyB0aGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugc3BlY2lhbCBmaWxlIChwcm9iYWJseSB1c2luZworICAgOmZ1bmM6YG9zLm1ha2VkZXZgKSwgb3RoZXJ3aXNlIGl0IGlzIGlnbm9yZWQuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCisKKworLi4gZnVuY3Rpb246OiBtYWpvcihkZXZpY2UpCisKKyAgIEV4dHJhY3QgdGhlIGRldmljZSBtYWpvciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyICh1c3VhbGx5IHRoZQorICAgOmF0dHI6YHN0X2RldmAgb3IgOmF0dHI6YHN0X3JkZXZgIGZpZWxkIGZyb20gOmM6dHlwZTpgc3RhdGApLgorCisKKy4uIGZ1bmN0aW9uOjogbWlub3IoZGV2aWNlKQorCisgICBFeHRyYWN0IHRoZSBkZXZpY2UgbWlub3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlciAodXN1YWxseSB0aGUKKyAgIDphdHRyOmBzdF9kZXZgIG9yIDphdHRyOmBzdF9yZGV2YCBmaWVsZCBmcm9tIDpjOnR5cGU6YHN0YXRgKS4KKworCisuLiBmdW5jdGlvbjo6IG1ha2VkZXYobWFqb3IsIG1pbm9yKQorCisgICBDb21wb3NlIGEgcmF3IGRldmljZSBudW1iZXIgZnJvbSB0aGUgbWFqb3IgYW5kIG1pbm9yIGRldmljZSBudW1iZXJzLgorCisKIC4uIGZ1bmN0aW9uOjogcGF0aGNvbmYocGF0aCwgbmFtZSkKIAogICAgUmV0dXJuIHN5c3RlbSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIGEgbmFtZWQgZmlsZS4gKm5hbWUqCkBAIC0xMjE3LDYgKzE2NDMsOSBAQAogICAgaW5jbHVkZWQgaW4gYGBwYXRoY29uZl9uYW1lc2BgLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgd2l0aAogICAgOmNvbnN0OmBlcnJuby5FSU5WQUxgIGZvciB0aGUgZXJyb3IgbnVtYmVyLgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IKKyAgIDxwYXRoX2ZkPmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCkBAIC0xMjI0LDM4ICsxNjUzLDUzIEBACiAKICAgIERpY3Rpb25hcnkgbWFwcGluZyBuYW1lcyBhY2NlcHRlZCBieSA6ZnVuYzpgcGF0aGNvbmZgIGFuZCA6ZnVuYzpgZnBhdGhjb25mYCB0bwogICAgdGhlIGludGVnZXIgdmFsdWVzIGRlZmluZWQgZm9yIHRob3NlIG5hbWVzIGJ5IHRoZSBob3N0IG9wZXJhdGluZyBzeXN0ZW0uICBUaGlzCi0gICBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHNldCBvZiBuYW1lcyBrbm93biB0byB0aGUgc3lzdGVtLiBBdmFpbGFiaWxpdHk6Ci0gICBVbml4LgorICAgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzZXQgb2YgbmFtZXMga25vd24gdG8gdGhlIHN5c3RlbS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKLS4uIGZ1bmN0aW9uOjogcmVhZGxpbmsocGF0aCkKKy4uIGZ1bmN0aW9uOjogcmVhZGxpbmsocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gd2hpY2ggdGhlIHN5bWJvbGljIGxpbmsgcG9pbnRzLiAgVGhlCi0gICByZXN1bHQgbWF5IGJlIGVpdGhlciBhbiBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRobmFtZTsgaWYgaXQgaXMgcmVsYXRpdmUsIGl0IG1heQotICAgYmUgY29udmVydGVkIHRvIGFuIGFic29sdXRlIHBhdGhuYW1lIHVzaW5nIGBgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShwYXRoKSwKLSAgIHJlc3VsdClgYC4KKyAgIHJlc3VsdCBtYXkgYmUgZWl0aGVyIGFuIGFic29sdXRlIG9yIHJlbGF0aXZlIHBhdGhuYW1lOyBpZiBpdCBpcyByZWxhdGl2ZSwgaXQKKyAgIG1heSBiZSBjb252ZXJ0ZWQgdG8gYW4gYWJzb2x1dGUgcGF0aG5hbWUgdXNpbmcKKyAgIGBgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShwYXRoKSwgcmVzdWx0KWBgLgogCiAgICBJZiB0aGUgKnBhdGgqIGlzIGEgc3RyaW5nIG9iamVjdCwgdGhlIHJlc3VsdCB3aWxsIGFsc28gYmUgYSBzdHJpbmcgb2JqZWN0LAogICAgYW5kIHRoZSBjYWxsIG1heSByYWlzZSBhbiBVbmljb2RlRGVjb2RlRXJyb3IuIElmIHRoZSAqcGF0aCogaXMgYSBieXRlcwogICAgb2JqZWN0LCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzIDYuMCAoVmlzdGEpIHN5bWJvbGljIGxpbmtzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAotLi4gZnVuY3Rpb246OiByZW1vdmUocGF0aCkKKworLi4gZnVuY3Rpb246OiByZW1vdmUocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIFJlbW92ZSAoZGVsZXRlKSB0aGUgZmlsZSAqcGF0aCouICBJZiAqcGF0aCogaXMgYSBkaXJlY3RvcnksIDpleGM6YE9TRXJyb3JgIGlzCi0gICByYWlzZWQ7IHNlZSA6ZnVuYzpgcm1kaXJgIGJlbG93IHRvIHJlbW92ZSBhIGRpcmVjdG9yeS4gIFRoaXMgaXMgaWRlbnRpY2FsIHRvCi0gICB0aGUgOmZ1bmM6YHVubGlua2AgZnVuY3Rpb24gZG9jdW1lbnRlZCBiZWxvdy4gIE9uIFdpbmRvd3MsIGF0dGVtcHRpbmcgdG8KLSAgIHJlbW92ZSBhIGZpbGUgdGhhdCBpcyBpbiB1c2UgY2F1c2VzIGFuIGV4Y2VwdGlvbiB0byBiZSByYWlzZWQ7IG9uIFVuaXgsIHRoZQotICAgZGlyZWN0b3J5IGVudHJ5IGlzIHJlbW92ZWQgYnV0IHRoZSBzdG9yYWdlIGFsbG9jYXRlZCB0byB0aGUgZmlsZSBpcyBub3QgbWFkZQotICAgYXZhaWxhYmxlIHVudGlsIHRoZSBvcmlnaW5hbCBmaWxlIGlzIG5vIGxvbmdlciBpbiB1c2UuCisgICByYWlzZWQuICBVc2UgOmZ1bmM6YHJtZGlyYCB0byByZW1vdmUgZGlyZWN0b3JpZXMuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKKyAgIE9uIFdpbmRvd3MsIGF0dGVtcHRpbmcgdG8gcmVtb3ZlIGEgZmlsZSB0aGF0IGlzIGluIHVzZSBjYXVzZXMgYW4gZXhjZXB0aW9uIHRvCisgICBiZSByYWlzZWQ7IG9uIFVuaXgsIHRoZSBkaXJlY3RvcnkgZW50cnkgaXMgcmVtb3ZlZCBidXQgdGhlIHN0b3JhZ2UgYWxsb2NhdGVkCisgICB0byB0aGUgZmlsZSBpcyBub3QgbWFkZSBhdmFpbGFibGUgdW50aWwgdGhlIG9yaWdpbmFsIGZpbGUgaXMgbm8gbG9uZ2VyIGluIHVzZS4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gOmZ1bmM6YHVubGlua2AuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmVkaXJzKHBhdGgpCiAKQEAgLTEyNzEsNyArMTcxNSw3IEBACiAgICBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4KIAogCi0uLiBmdW5jdGlvbjo6IHJlbmFtZShzcmMsIGRzdCkKKy4uIGZ1bmN0aW9uOjogcmVuYW1lKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSkKIAogICAgUmVuYW1lIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSAqc3JjKiB0byAqZHN0Ki4gIElmICpkc3QqIGlzIGEgZGlyZWN0b3J5LAogICAgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBPbiBVbml4LCBpZiAqZHN0KiBleGlzdHMgYW5kIGlzIGEgZmlsZSwgaXQgd2lsbApAQCAtMTI3OSwxMSArMTcyMywxOCBAQAogICAgVW5peCBmbGF2b3JzIGlmICpzcmMqIGFuZCAqZHN0KiBhcmUgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW1zLiAgSWYgc3VjY2Vzc2Z1bCwKICAgIHRoZSByZW5hbWluZyB3aWxsIGJlIGFuIGF0b21pYyBvcGVyYXRpb24gKHRoaXMgaXMgYSBQT1NJWCByZXF1aXJlbWVudCkuICBPbgogICAgV2luZG93cywgaWYgKmRzdCogYWxyZWFkeSBleGlzdHMsIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGV2ZW4gaWYgaXQgaXMgYQotICAgZmlsZTsgdGhlcmUgbWF5IGJlIG5vIHdheSB0byBpbXBsZW1lbnQgYW4gYXRvbWljIHJlbmFtZSB3aGVuICpkc3QqIG5hbWVzIGFuCi0gICBleGlzdGluZyBmaWxlLgorICAgZmlsZS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nICpzcmNfZGlyX2ZkKiBhbmQvb3IgKmRzdF9kaXJfZmQqIHRvCisgICBzdXBwbHkgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YC4KKworICAgSWYgeW91IHdhbnQgY3Jvc3MtcGxhdGZvcm0gb3ZlcndyaXRpbmcgb2YgdGhlIGRlc3RpbmF0aW9uLCB1c2UgOmZ1bmM6YHJlcGxhY2VgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpzcmNfZGlyX2ZkKiBhbmQgKmRzdF9kaXJfZmQqIGFyZ3VtZW50cy4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbmFtZXMob2xkLCBuZXcpCiAKQEAgLTEyOTgsMjIgKzE3NDksNDYgQEAKICAgICAgIHBlcm1pc3Npb25zIG5lZWRlZCB0byByZW1vdmUgdGhlIGxlYWYgZGlyZWN0b3J5IG9yIGZpbGUuCiAKIAotLi4gZnVuY3Rpb246OiBybWRpcihwYXRoKQorLi4gZnVuY3Rpb246OiByZXBsYWNlKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSkKKworICAgUmVuYW1lIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSAqc3JjKiB0byAqZHN0Ki4gIElmICpkc3QqIGlzIGEgZGlyZWN0b3J5LAorICAgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBJZiAqZHN0KiBleGlzdHMgYW5kIGlzIGEgZmlsZSwgaXQgd2lsbAorICAgYmUgcmVwbGFjZWQgc2lsZW50bHkgaWYgdGhlIHVzZXIgaGFzIHBlcm1pc3Npb24uICBUaGUgb3BlcmF0aW9uIG1heSBmYWlsCisgICBpZiAqc3JjKiBhbmQgKmRzdCogYXJlIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtcy4gIElmIHN1Y2Nlc3NmdWwsCisgICB0aGUgcmVuYW1pbmcgd2lsbCBiZSBhbiBhdG9taWMgb3BlcmF0aW9uICh0aGlzIGlzIGEgUE9TSVggcmVxdWlyZW1lbnQpLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IHNwZWNpZnlpbmcgKnNyY19kaXJfZmQqIGFuZC9vciAqZHN0X2Rpcl9mZCogdG8KKyAgIHN1cHBseSA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcm1kaXIocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIFJlbW92ZSAoZGVsZXRlKSB0aGUgZGlyZWN0b3J5ICpwYXRoKi4gIE9ubHkgd29ya3Mgd2hlbiB0aGUgZGlyZWN0b3J5IGlzCiAgICBlbXB0eSwgb3RoZXJ3aXNlLCA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuICBJbiBvcmRlciB0byByZW1vdmUgd2hvbGUKICAgIGRpcmVjdG9yeSB0cmVlcywgOmZ1bmM6YHNodXRpbC5ybXRyZWVgIGNhbiBiZSB1c2VkLgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAotLi4gZnVuY3Rpb246OiBzdGF0KHBhdGgpCisKKy4uIGZ1bmN0aW9uOjogc3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgb2YgYSA6YzpmdW5jOmBzdGF0YCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4KLSAgIChUaGlzIGZ1bmN0aW9uIGZvbGxvd3Mgc3ltbGlua3M7IHRvIHN0YXQgYSBzeW1saW5rIHVzZSA6ZnVuYzpgbHN0YXRgLikKKyAgICpwYXRoKiBtYXkgYmUgc3BlY2lmaWVkIGFzIGVpdGhlciBhIHN0cmluZyBvciBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgIChUaGlzIGZ1bmN0aW9uIG5vcm1hbGx5IGZvbGxvd3Mgc3ltbGlua3M7IHRvIHN0YXQgYSBzeW1saW5rIGFkZCB0aGUgYXJndW1lbnQKKyAgIGBgZm9sbG93X3N5bWxpbmtzPUZhbHNlYGAsIG9yIHVzZSA6ZnVuYzpgbHN0YXRgLikKIAotICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3Qgd2hvc2UgYXR0cmlidXRlcyBjb3JyZXNwb25kIHRvIHRoZSBtZW1iZXJzCi0gICBvZiB0aGUgOmM6dHlwZTpgc3RhdGAgc3RydWN0dXJlLCBuYW1lbHk6CisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIG9iamVjdCB3aG9zZSBhdHRyaWJ1dGVzIGNvcnJlc3BvbmQgcm91Z2hseQorICAgdG8gdGhlIG1lbWJlcnMgb2YgdGhlIDpjOnR5cGU6YHN0YXRgIHN0cnVjdHVyZSwgbmFtZWx5OgogCiAgICAqIDphdHRyOmBzdF9tb2RlYCAtIHByb3RlY3Rpb24gYml0cywKICAgICogOmF0dHI6YHN0X2lub2AgLSBpbm9kZSBudW1iZXIsCkBAIC0xMzIyLDEwICsxNzk3LDE4IEBACiAgICAqIDphdHRyOmBzdF91aWRgIC0gdXNlciBpZCBvZiBvd25lciwKICAgICogOmF0dHI6YHN0X2dpZGAgLSBncm91cCBpZCBvZiBvd25lciwKICAgICogOmF0dHI6YHN0X3NpemVgIC0gc2l6ZSBvZiBmaWxlLCBpbiBieXRlcywKLSAgICogOmF0dHI6YHN0X2F0aW1lYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgYWNjZXNzLAotICAgKiA6YXR0cjpgc3RfbXRpbWVgIC0gdGltZSBvZiBtb3N0IHJlY2VudCBjb250ZW50IG1vZGlmaWNhdGlvbiwKLSAgICogOmF0dHI6YHN0X2N0aW1lYCAtIHBsYXRmb3JtIGRlcGVuZGVudDsgdGltZSBvZiBtb3N0IHJlY2VudCBtZXRhZGF0YSBjaGFuZ2Ugb24KLSAgICAgVW5peCwgb3IgdGhlIHRpbWUgb2YgY3JlYXRpb24gb24gV2luZG93cykKKyAgICogOmF0dHI6YHN0X2F0aW1lYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgYWNjZXNzIGV4cHJlc3NlZCBpbiBzZWNvbmRzLAorICAgKiA6YXR0cjpgc3RfbXRpbWVgIC0gdGltZSBvZiBtb3N0IHJlY2VudCBjb250ZW50IG1vZGlmaWNhdGlvbgorICAgICBleHByZXNzZWQgaW4gc2Vjb25kcywKKyAgICogOmF0dHI6YHN0X2N0aW1lYCAtIHBsYXRmb3JtIGRlcGVuZGVudDsgdGltZSBvZiBtb3N0IHJlY2VudCBtZXRhZGF0YQorICAgICBjaGFuZ2Ugb24gVW5peCwgb3IgdGhlIHRpbWUgb2YgY3JlYXRpb24gb24gV2luZG93cywgZXhwcmVzc2VkIGluIHNlY29uZHMKKyAgICogOmF0dHI6YHN0X2F0aW1lX25zYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgYWNjZXNzCisgICAgIGV4cHJlc3NlZCBpbiBuYW5vc2Vjb25kcyBhcyBhbiBpbnRlZ2VyLAorICAgKiA6YXR0cjpgc3RfbXRpbWVfbnNgIC0gdGltZSBvZiBtb3N0IHJlY2VudCBjb250ZW50IG1vZGlmaWNhdGlvbgorICAgICBleHByZXNzZWQgaW4gbmFub3NlY29uZHMgYXMgYW4gaW50ZWdlciwKKyAgICogOmF0dHI6YHN0X2N0aW1lX25zYCAtIHBsYXRmb3JtIGRlcGVuZGVudDsgdGltZSBvZiBtb3N0IHJlY2VudCBtZXRhZGF0YQorICAgICBjaGFuZ2Ugb24gVW5peCwgb3IgdGhlIHRpbWUgb2YgY3JlYXRpb24gb24gV2luZG93cywKKyAgICAgZXhwcmVzc2VkIGluIG5hbm9zZWNvbmRzIGFzIGFuIGludGVnZXIKIAogICAgT24gc29tZSBVbml4IHN5c3RlbXMgKHN1Y2ggYXMgTGludXgpLCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgbWF5IGFsc28gYmUKICAgIGF2YWlsYWJsZToKQEAgLTEzNTUsMTMgKzE4MzgsMjYgQEAKICAgICAgIG9yIEZBVDMyIGZpbGUgc3lzdGVtcywgOmF0dHI6YHN0X210aW1lYCBoYXMgMi1zZWNvbmQgcmVzb2x1dGlvbiwgYW5kCiAgICAgICA6YXR0cjpgc3RfYXRpbWVgIGhhcyBvbmx5IDEtZGF5IHJlc29sdXRpb24uICBTZWUgeW91ciBvcGVyYXRpbmcgc3lzdGVtCiAgICAgICBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgorICAgICAgU2ltaWxhcmx5LCBhbHRob3VnaCA6YXR0cjpgc3RfYXRpbWVfbnNgLCA6YXR0cjpgc3RfbXRpbWVfbnNgLAorICAgICAgYW5kIDphdHRyOmBzdF9jdGltZV9uc2AgYXJlIGFsd2F5cyBleHByZXNzZWQgaW4gbmFub3NlY29uZHMsIG1hbnkKKyAgICAgIHN5c3RlbXMgZG8gbm90IHByb3ZpZGUgbmFub3NlY29uZCBwcmVjaXNpb24uICBPbiBzeXN0ZW1zIHRoYXQgZG8KKyAgICAgIHByb3ZpZGUgbmFub3NlY29uZCBwcmVjaXNpb24sIHRoZSBmbG9hdGluZy1wb2ludCBvYmplY3QgdXNlZCB0bworICAgICAgc3RvcmUgOmF0dHI6YHN0X2F0aW1lYCwgOmF0dHI6YHN0X210aW1lYCwgYW5kIDphdHRyOmBzdF9jdGltZWAKKyAgICAgIGNhbm5vdCBwcmVzZXJ2ZSBhbGwgb2YgaXQsIGFuZCBhcyBzdWNoIHdpbGwgYmUgc2xpZ2h0bHkgaW5leGFjdC4KKyAgICAgIElmIHlvdSBuZWVkIHRoZSBleGFjdCB0aW1lc3RhbXBzIHlvdSBzaG91bGQgYWx3YXlzIHVzZQorICAgICAgOmF0dHI6YHN0X2F0aW1lX25zYCwgOmF0dHI6YHN0X210aW1lX25zYCwgYW5kIDphdHRyOmBzdF9jdGltZV9uc2AuCiAKLSAgIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgcmV0dXJuIHZhbHVlIG9mIDpmdW5jOmB+b3Muc3RhdGAgaXMgYWxzbyBhY2Nlc3NpYmxlCi0gICBhcyBhIHR1cGxlIG9mIGF0IGxlYXN0IDEwIGludGVnZXJzIGdpdmluZyB0aGUgbW9zdCBpbXBvcnRhbnQgKGFuZCBwb3J0YWJsZSkKLSAgIG1lbWJlcnMgb2YgdGhlIDpjOnR5cGU6YHN0YXRgIHN0cnVjdHVyZSwgaW4gdGhlIG9yZGVyIDphdHRyOmBzdF9tb2RlYCwKLSAgIDphdHRyOmBzdF9pbm9gLCA6YXR0cjpgc3RfZGV2YCwgOmF0dHI6YHN0X25saW5rYCwgOmF0dHI6YHN0X3VpZGAsCi0gICA6YXR0cjpgc3RfZ2lkYCwgOmF0dHI6YHN0X3NpemVgLCA6YXR0cjpgc3RfYXRpbWVgLCA6YXR0cjpgc3RfbXRpbWVgLAotICAgOmF0dHI6YHN0X2N0aW1lYC4gTW9yZSBpdGVtcyBtYXkgYmUgYWRkZWQgYXQgdGhlIGVuZCBieSBzb21lIGltcGxlbWVudGF0aW9ucy4KKyAgIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgcmV0dXJuIHZhbHVlIG9mIDpmdW5jOmB+b3Muc3RhdGAgaXMgYWxzbworICAgYWNjZXNzaWJsZSBhcyBhIHR1cGxlIG9mIGF0IGxlYXN0IDEwIGludGVnZXJzIGdpdmluZyB0aGUgbW9zdCBpbXBvcnRhbnQgKGFuZAorICAgcG9ydGFibGUpIG1lbWJlcnMgb2YgdGhlIDpjOnR5cGU6YHN0YXRgIHN0cnVjdHVyZSwgaW4gdGhlIG9yZGVyCisgICA6YXR0cjpgc3RfbW9kZWAsIDphdHRyOmBzdF9pbm9gLCA6YXR0cjpgc3RfZGV2YCwgOmF0dHI6YHN0X25saW5rYCwKKyAgIDphdHRyOmBzdF91aWRgLCA6YXR0cjpgc3RfZ2lkYCwgOmF0dHI6YHN0X3NpemVgLCA6YXR0cjpgc3RfYXRpbWVgLAorICAgOmF0dHI6YHN0X210aW1lYCwgOmF0dHI6YHN0X2N0aW1lYC4gTW9yZSBpdGVtcyBtYXkgYmUgYWRkZWQgYXQgdGhlIGVuZCBieQorICAgc29tZSBpbXBsZW1lbnRhdGlvbnMuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvcgorICAgPHBhdGhfZmQ+YCwgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZCA6cmVmOmBub3QKKyAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCiAKICAgIC4uIGluZGV4OjogbW9kdWxlOiBzdGF0CiAKQEAgLTEzODIsNiArMTg3OCwxMiBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMsCisgICAgICBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIGluc3RlYWQgb2YgYSBwYXRoLAorICAgICAgYW5kIHRoZSA6YXR0cjpgc3RfYXRpbWVfbnNgLCA6YXR0cjpgc3RfbXRpbWVfbnNgLAorICAgICAgYW5kIDphdHRyOmBzdF9jdGltZV9uc2AgbWVtYmVycy4KKwogCiAuLiBmdW5jdGlvbjo6IHN0YXRfZmxvYXRfdGltZXMoW25ld3ZhbHVlXSkKIApAQCAtMTQwNyw2ICsxOTA5LDggQEAKICAgIGFyZSBwcm9jZXNzZWQsIHRoaXMgYXBwbGljYXRpb24gc2hvdWxkIHR1cm4gdGhlIGZlYXR1cmUgb2ZmIHVudGlsIHRoZSBsaWJyYXJ5CiAgICBoYXMgYmVlbiBjb3JyZWN0ZWQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBmdW5jdGlvbjo6IHN0YXR2ZnMocGF0aCkKIApAQCAtMTQyMiwzNCArMTkyNiwxMTggQEAKICAgIHJlYWQtb25seSwgYW5kIGlmIDpjb25zdDpgU1RfTk9TVUlEYCBpcyBzZXQsIHRoZSBzZW1hbnRpY3Mgb2YKICAgIHNldHVpZC9zZXRnaWQgYml0cyBhcmUgZGlzYWJsZWQgb3Igbm90IHN1cHBvcnRlZC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgOmNvbnN0OmBTVF9SRE9OTFlgIGFuZCA6Y29uc3Q6YFNUX05PU1VJRGAgY29uc3RhbnRzIHdlcmUgYWRkZWQuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCouCiAKLS4uIGZ1bmN0aW9uOjogc3ltbGluayhzb3VyY2UsIGxpbmtfbmFtZSkKLSAgICAgICAgICAgICAgc3ltbGluayhzb3VyY2UsIGxpbmtfbmFtZSwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSkKKworLi4gZGF0YTo6IHN1cHBvcnRzX2Rpcl9mZAorCisgICBBIDpjbGFzczpgfmNvbGxlY3Rpb25zLlNldGAgb2JqZWN0IGluZGljYXRpbmcgd2hpY2ggZnVuY3Rpb25zIGluIHRoZQorICAgOm1vZDpgb3NgIG1vZHVsZSBwZXJtaXQgdXNlIG9mIHRoZWlyICpkaXJfZmQqIHBhcmFtZXRlci4gIERpZmZlcmVudCBwbGF0Zm9ybXMKKyAgIHByb3ZpZGUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHksIGFuZCBhbiBvcHRpb24gdGhhdCBtaWdodCB3b3JrIG9uIG9uZSBtaWdodAorICAgYmUgdW5zdXBwb3J0ZWQgb24gYW5vdGhlci4gIEZvciBjb25zaXN0ZW5jeSdzIHNha2VzLCBmdW5jdGlvbnMgdGhhdCBzdXBwb3J0CisgICAqZGlyX2ZkKiBhbHdheXMgYWxsb3cgc3BlY2lmeWluZyB0aGUgcGFyYW1ldGVyLCBidXQgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24KKyAgIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhY3R1YWxseSBhdmFpbGFibGUuCisKKyAgIFRvIGNoZWNrIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHBlcm1pdHMgdXNlIG9mIGl0cyAqZGlyX2ZkKgorICAgcGFyYW1ldGVyLCB1c2UgdGhlIGBgaW5gYCBvcGVyYXRvciBvbiBgYHN1cHBvcnRzX2Rpcl9mZGBgLiAgQXMgYW4gZXhhbXBsZSwKKyAgIHRoaXMgZXhwcmVzc2lvbiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlICpkaXJfZmQqIHBhcmFtZXRlciBvZiA6ZnVuYzpgb3Muc3RhdGAKKyAgIGlzIGxvY2FsbHkgYXZhaWxhYmxlOjoKKworICAgICAgIG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkCisKKyAgIEN1cnJlbnRseSAqZGlyX2ZkKiBwYXJhbWV0ZXJzIG9ubHkgd29yayBvbiBVbml4IHBsYXRmb3Jtczsgbm9uZSBvZiB0aGVtIHdvcmsKKyAgIG9uIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBzdXBwb3J0c19lZmZlY3RpdmVfaWRzCisKKyAgIEEgOmNsYXNzOmB+Y29sbGVjdGlvbnMuU2V0YCBvYmplY3QgaW5kaWNhdGluZyB3aGljaCBmdW5jdGlvbnMgaW4gdGhlCisgICA6bW9kOmBvc2AgbW9kdWxlIHBlcm1pdCB1c2Ugb2YgdGhlICplZmZlY3RpdmVfaWRzKiBwYXJhbWV0ZXIgZm9yCisgICA6ZnVuYzpgb3MuYWNjZXNzYC4gIElmIHRoZSBsb2NhbCBwbGF0Zm9ybSBzdXBwb3J0cyBpdCwgdGhlIGNvbGxlY3Rpb24gd2lsbAorICAgY29udGFpbiA6ZnVuYzpgb3MuYWNjZXNzYCwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgZW1wdHkuCisKKyAgIFRvIGNoZWNrIHdoZXRoZXIgeW91IGNhbiB1c2UgdGhlICplZmZlY3RpdmVfaWRzKiBwYXJhbWV0ZXIgZm9yCisgICA6ZnVuYzpgb3MuYWNjZXNzYCwgdXNlIHRoZSBgYGluYGAgb3BlcmF0b3Igb24gYGBzdXBwb3J0c19kaXJfZmRgYCwgbGlrZSBzbzo6CisKKyAgICAgICBvcy5hY2Nlc3MgaW4gb3Muc3VwcG9ydHNfZWZmZWN0aXZlX2lkcworCisgICBDdXJyZW50bHkgKmVmZmVjdGl2ZV9pZHMqIG9ubHkgd29ya3Mgb24gVW5peCBwbGF0Zm9ybXM7IGl0IGRvZXMgbm90IHdvcmsgb24KKyAgIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBzdXBwb3J0c19mZAorCisgICBBIDpjbGFzczpgfmNvbGxlY3Rpb25zLlNldGAgb2JqZWN0IGluZGljYXRpbmcgd2hpY2ggZnVuY3Rpb25zIGluIHRoZQorICAgOm1vZDpgb3NgIG1vZHVsZSBwZXJtaXQgc3BlY2lmeWluZyB0aGVpciAqcGF0aCogcGFyYW1ldGVyIGFzIGFuIG9wZW4gZmlsZQorICAgZGVzY3JpcHRvci4gIERpZmZlcmVudCBwbGF0Zm9ybXMgcHJvdmlkZSBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSwgYW5kIGFuCisgICBvcHRpb24gdGhhdCBtaWdodCB3b3JrIG9uIG9uZSBtaWdodCBiZSB1bnN1cHBvcnRlZCBvbiBhbm90aGVyLiAgRm9yCisgICBjb25zaXN0ZW5jeSdzIHNha2VzLCBmdW5jdGlvbnMgdGhhdCBzdXBwb3J0ICpmZCogYWx3YXlzIGFsbG93IHNwZWNpZnlpbmcKKyAgIHRoZSBwYXJhbWV0ZXIsIGJ1dCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBub3QKKyAgIGFjdHVhbGx5IGF2YWlsYWJsZS4KKworICAgVG8gY2hlY2sgd2hldGhlciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gcGVybWl0cyBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZQorICAgZGVzY3JpcHRvciBmb3IgaXRzICpwYXRoKiBwYXJhbWV0ZXIsIHVzZSB0aGUgYGBpbmBgIG9wZXJhdG9yIG9uCisgICBgYHN1cHBvcnRzX2ZkYGAuIEFzIGFuIGV4YW1wbGUsIHRoaXMgZXhwcmVzc2lvbiBkZXRlcm1pbmVzIHdoZXRoZXIKKyAgIDpmdW5jOmBvcy5jaGRpcmAgYWNjZXB0cyBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBjYWxsZWQgb24geW91ciBsb2NhbAorICAgcGxhdGZvcm06OgorCisgICAgICAgb3MuY2hkaXIgaW4gb3Muc3VwcG9ydHNfZmQKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IHN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcworCisgICBBIDpjbGFzczpgfmNvbGxlY3Rpb25zLlNldGAgb2JqZWN0IGluZGljYXRpbmcgd2hpY2ggZnVuY3Rpb25zIGluIHRoZQorICAgOm1vZDpgb3NgIG1vZHVsZSBwZXJtaXQgdXNlIG9mIHRoZWlyICpmb2xsb3dfc3ltbGlua3MqIHBhcmFtZXRlci4gIERpZmZlcmVudAorICAgcGxhdGZvcm1zIHByb3ZpZGUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHksIGFuZCBhbiBvcHRpb24gdGhhdCBtaWdodCB3b3JrIG9uCisgICBvbmUgbWlnaHQgYmUgdW5zdXBwb3J0ZWQgb24gYW5vdGhlci4gIEZvciBjb25zaXN0ZW5jeSdzIHNha2VzLCBmdW5jdGlvbnMgdGhhdAorICAgc3VwcG9ydCAqZm9sbG93X3N5bWxpbmtzKiBhbHdheXMgYWxsb3cgc3BlY2lmeWluZyB0aGUgcGFyYW1ldGVyLCBidXQgd2lsbAorICAgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhY3R1YWxseSBhdmFpbGFibGUuCisKKyAgIFRvIGNoZWNrIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHBlcm1pdHMgdXNlIG9mIGl0cyAqZm9sbG93X3N5bWxpbmtzKgorICAgcGFyYW1ldGVyLCB1c2UgdGhlIGBgaW5gYCBvcGVyYXRvciBvbiBgYHN1cHBvcnRzX2ZvbGxvd19zeW1saW5rc2BgLiAgQXMgYW4KKyAgIGV4YW1wbGUsIHRoaXMgZXhwcmVzc2lvbiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlICpmb2xsb3dfc3ltbGlua3MqIHBhcmFtZXRlcgorICAgb2YgOmZ1bmM6YG9zLnN0YXRgIGlzIGxvY2FsbHkgYXZhaWxhYmxlOjoKKworICAgICAgIG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogc3ltbGluayhzb3VyY2UsIGxpbmtfbmFtZSwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSwgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIENyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gKnNvdXJjZSogbmFtZWQgKmxpbmtfbmFtZSouCiAKLSAgIE9uIFdpbmRvd3MsIHN5bWxpbmsgdmVyc2lvbiB0YWtlcyBhbiBhZGRpdGlvbmFsIG9wdGlvbmFsIHBhcmFtZXRlciwKLSAgICp0YXJnZXRfaXNfZGlyZWN0b3J5Kiwgd2hpY2ggZGVmYXVsdHMgdG8gYGBGYWxzZWBgLgotCi0gICBPbiBXaW5kb3dzLCBhIHN5bWxpbmsgcmVwcmVzZW50cyBhIGZpbGUgb3IgYSBkaXJlY3RvcnksIGFuZCBkb2VzIG5vdCBtb3JwaCB0bwotICAgdGhlIHRhcmdldCBkeW5hbWljYWxseS4gIElmICp0YXJnZXRfaXNfZGlyZWN0b3J5KiBpcyBzZXQgdG8gYGBUcnVlYGAsIHRoZQotICAgc3ltbGluayB3aWxsIGJlIGNyZWF0ZWQgYXMgYSBkaXJlY3Rvcnkgc3ltbGluaywgb3RoZXJ3aXNlIGFzIGEgZmlsZSBzeW1saW5rCi0gICAodGhlIGRlZmF1bHQpLgorICAgT24gV2luZG93cywgYSBzeW1saW5rIHJlcHJlc2VudHMgZWl0aGVyIGEgZmlsZSBvciBhIGRpcmVjdG9yeSwgYW5kIGRvZXMgbm90CisgICBtb3JwaCB0byB0aGUgdGFyZ2V0IGR5bmFtaWNhbGx5LiAgSWYgKnRhcmdldF9pc19kaXJlY3RvcnkqIGlzIHNldCB0byBgYFRydWVgYCwKKyAgIHRoZSBzeW1saW5rIHdpbGwgYmUgY3JlYXRlZCBhcyBhIGRpcmVjdG9yeSBzeW1saW5rLCBvdGhlcndpc2UgYXMgYSBmaWxlIHN5bWxpbmsKKyAgICh0aGUgZGVmYXVsdCkuICBPbiBub24tV2luZG93IHBsYXRmb3JtcywgKnRhcmdldF9pc19kaXJlY3RvcnkqIGlzIGlnbm9yZWQuCiAKICAgIFN5bWJvbGljIGxpbmsgc3VwcG9ydCB3YXMgaW50cm9kdWNlZCBpbiBXaW5kb3dzIDYuMCAoVmlzdGEpLiAgOmZ1bmM6YHN5bWxpbmtgCiAgICB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgb24gV2luZG93cyB2ZXJzaW9ucyBlYXJsaWVyIHRoYW4gNi4wLgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCiAgICAuLiBub3RlOjoKIAotICAgICAgVGhlICpTZUNyZWF0ZVN5bWJvbGljTGlua1ByaXZpbGVnZSogaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG8gc3VjY2Vzc2Z1bGx5Ci0gICAgICBjcmVhdGUgc3ltbGlua3MuIFRoaXMgcHJpdmlsZWdlIGlzIG5vdCB0eXBpY2FsbHkgZ3JhbnRlZCB0byByZWd1bGFyCi0gICAgICB1c2VycyBidXQgaXMgYXZhaWxhYmxlIHRvIGFjY291bnRzIHdoaWNoIGNhbiBlc2NhbGF0ZSBwcml2aWxlZ2VzIHRvIHRoZQotICAgICAgYWRtaW5pc3RyYXRvciBsZXZlbC4gRWl0aGVyIG9idGFpbmluZyB0aGUgcHJpdmlsZWdlIG9yIHJ1bm5pbmcgeW91cgorICAgICAgT24gV2luZG93cywgdGhlICpTZUNyZWF0ZVN5bWJvbGljTGlua1ByaXZpbGVnZSogaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG8KKyAgICAgIHN1Y2Nlc3NmdWxseSBjcmVhdGUgc3ltbGlua3MuIFRoaXMgcHJpdmlsZWdlIGlzIG5vdCB0eXBpY2FsbHkgZ3JhbnRlZCB0bworICAgICAgcmVndWxhciB1c2VycyBidXQgaXMgYXZhaWxhYmxlIHRvIGFjY291bnRzIHdoaWNoIGNhbiBlc2NhbGF0ZSBwcml2aWxlZ2VzCisgICAgICB0byB0aGUgYWRtaW5pc3RyYXRvciBsZXZlbC4gRWl0aGVyIG9idGFpbmluZyB0aGUgcHJpdmlsZWdlIG9yIHJ1bm5pbmcgeW91cgogICAgICAgYXBwbGljYXRpb24gYXMgYW4gYWRtaW5pc3RyYXRvciBhcmUgd2F5cyB0byBzdWNjZXNzZnVsbHkgY3JlYXRlIHN5bWxpbmtzLgogCiAgICAgICA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGFuIHVucHJpdmlsZWdlZApAQCAtMTQ2MCwzMSArMjA0OCw4NSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFdpbmRvd3MgNi4wIChWaXN0YSkgc3ltYm9saWMgbGlua3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIGFyZ3VtZW50LCBhbmQgbm93IGFsbG93ICp0YXJnZXRfaXNfZGlyZWN0b3J5KgorICAgICAgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLgogCi0uLiBmdW5jdGlvbjo6IHVubGluayhwYXRoKQogCi0gICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgVGhpcyBpcyB0aGUgc2FtZSBmdW5jdGlvbiBhcwotICAgOmZ1bmM6YHJlbW92ZWA7IHRoZSA6ZnVuYzpgdW5saW5rYCBuYW1lIGlzIGl0cyB0cmFkaXRpb25hbCBVbml4Ci0gICBuYW1lLgorLi4gZnVuY3Rpb246OiBzeW5jKCkKKworICAgRm9yY2Ugd3JpdGUgb2YgZXZlcnl0aGluZyB0byBkaXNrLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogdHJ1bmNhdGUocGF0aCwgbGVuZ3RoKQorCisgICBUcnVuY2F0ZSB0aGUgZmlsZSBjb3JyZXNwb25kaW5nIHRvICpwYXRoKiwgc28gdGhhdCBpdCBpcyBhdCBtb3N0CisgICAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHVubGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKKworICAgUmVtb3ZlIChkZWxldGUpIHRoZSBmaWxlICpwYXRoKi4gIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvCisgICA6ZnVuYzpgcmVtb3ZlYDsgdGhlIGBgdW5saW5rYGAgbmFtZSBpcyBpdHMgdHJhZGl0aW9uYWwgVW5peAorICAgbmFtZS4gIFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIDpmdW5jOmByZW1vdmVgIGZvcgorICAgZnVydGhlciBpbmZvcm1hdGlvbi4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKLS4uIGZ1bmN0aW9uOjogdXRpbWUocGF0aCwgdGltZXMpCiAKLSAgIFNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lcyBvZiB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgKnBhdGgqLiBJZiAqdGltZXMqCi0gICBpcyBgYE5vbmVgYCwgdGhlbiB0aGUgZmlsZSdzIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZXMgYXJlIHNldCB0byB0aGUgY3VycmVudAotICAgdGltZS4gKFRoZSBlZmZlY3QgaXMgc2ltaWxhciB0byBydW5uaW5nIHRoZSBVbml4IHByb2dyYW0gOnByb2dyYW06YHRvdWNoYCBvbgotICAgdGhlIHBhdGguKSAgT3RoZXJ3aXNlLCAqdGltZXMqIG11c3QgYmUgYSAyLXR1cGxlIG9mIG51bWJlcnMsIG9mIHRoZSBmb3JtCi0gICBgYChhdGltZSwgbXRpbWUpYGAgd2hpY2ggaXMgdXNlZCB0byBzZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZXMsCi0gICByZXNwZWN0aXZlbHkuIFdoZXRoZXIgYSBkaXJlY3RvcnkgY2FuIGJlIGdpdmVuIGZvciAqcGF0aCogZGVwZW5kcyBvbiB3aGV0aGVyCi0gICB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpbXBsZW1lbnRzIGRpcmVjdG9yaWVzIGFzIGZpbGVzIChmb3IgZXhhbXBsZSwgV2luZG93cwotICAgZG9lcyBub3QpLiAgTm90ZSB0aGF0IHRoZSBleGFjdCB0aW1lcyB5b3Ugc2V0IGhlcmUgbWF5IG5vdCBiZSByZXR1cm5lZCBieSBhCi0gICBzdWJzZXF1ZW50IDpmdW5jOmB+b3Muc3RhdGAgY2FsbCwgZGVwZW5kaW5nIG9uIHRoZSByZXNvbHV0aW9uIHdpdGggd2hpY2ggeW91cgotICAgb3BlcmF0aW5nIHN5c3RlbSByZWNvcmRzIGFjY2VzcyBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzOyBzZWUgOmZ1bmM6YH5vcy5zdGF0YC4KKy4uIGZ1bmN0aW9uOjogdXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKiwgbnM9Tm9uZSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBTZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZXMgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpwYXRoKi4KKworICAgOmZ1bmM6YHV0aW1lYCB0YWtlcyB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgKnRpbWVzKiBhbmQgKm5zKi4KKyAgIFRoZXNlIHNwZWNpZnkgdGhlIHRpbWVzIHNldCBvbiAqcGF0aCogYW5kIGFyZSB1c2VkIGFzIGZvbGxvd3M6CisKKyAgIC0gSWYgKm5zKiBpcyBub3QgYGBOb25lYGAsCisgICAgIGl0IG11c3QgYmUgYSAyLXR1cGxlIG9mIHRoZSBmb3JtIGBgKGF0aW1lX25zLCBtdGltZV9ucylgYAorICAgICB3aGVyZSBlYWNoIG1lbWJlciBpcyBhbiBpbnQgZXhwcmVzc2luZyBuYW5vc2Vjb25kcy4KKyAgIC0gSWYgKnRpbWVzKiBpcyBub3QgYGBOb25lYGAsCisgICAgIGl0IG11c3QgYmUgYSAyLXR1cGxlIG9mIHRoZSBmb3JtIGBgKGF0aW1lLCBtdGltZSlgYAorICAgICB3aGVyZSBlYWNoIG1lbWJlciBpcyBhbiBpbnQgb3IgZmxvYXQgZXhwcmVzc2luZyBzZWNvbmRzLgorICAgLSBJZiAqdGltZXMqIGFuZCAqbnMqIGFyZSBib3RoIGBgTm9uZWBgLAorICAgICB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gc3BlY2lmeWluZyBgYG5zPShhdGltZV9ucywgbXRpbWVfbnMpYGAKKyAgICAgd2hlcmUgYm90aCB0aW1lcyBhcmUgdGhlIGN1cnJlbnQgdGltZS4KKyAgICAgKFRoZSBlZmZlY3QgaXMgc2ltaWxhciB0byBydW5uaW5nIHRoZSBVbml4IHByb2dyYW0KKyAgICAgOnByb2dyYW06YHRvdWNoYCBvbiAqcGF0aCouKQorCisgICBJdCBpcyBhbiBlcnJvciB0byBzcGVjaWZ5IHR1cGxlcyBmb3IgYm90aCAqdGltZXMqIGFuZCAqbnMqLgorCisgICBXaGV0aGVyIGEgZGlyZWN0b3J5IGNhbiBiZSBnaXZlbiBmb3IgKnBhdGgqCisgICBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaW1wbGVtZW50cyBkaXJlY3RvcmllcyBhcyBmaWxlcworICAgKGZvciBleGFtcGxlLCBXaW5kb3dzIGRvZXMgbm90KS4gIE5vdGUgdGhhdCB0aGUgZXhhY3QgdGltZXMgeW91IHNldCBoZXJlIG1heQorICAgbm90IGJlIHJldHVybmVkIGJ5IGEgc3Vic2VxdWVudCA6ZnVuYzpgfm9zLnN0YXRgIGNhbGwsIGRlcGVuZGluZyBvbiB0aGUKKyAgIHJlc29sdXRpb24gd2l0aCB3aGljaCB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gcmVjb3JkcyBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbgorICAgdGltZXM7IHNlZSA6ZnVuYzpgfm9zLnN0YXRgLiAgVGhlIGJlc3Qgd2F5IHRvIHByZXNlcnZlIGV4YWN0IHRpbWVzIGlzIHRvCisgICB1c2UgdGhlICpzdF9hdGltZV9ucyogYW5kICpzdF9tdGltZV9ucyogZmllbGRzIGZyb20gdGhlIDpmdW5jOmBvcy5zdGF0YAorICAgcmVzdWx0IG9iamVjdCB3aXRoIHRoZSAqbnMqIHBhcmFtZXRlciB0byBgdXRpbWVgLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCwKKyAgIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdAorICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKiwKKyAgICAgIGFuZCB0aGUgKmRpcl9mZCosICpmb2xsb3dfc3ltbGlua3MqLCBhbmQgKm5zKiBwYXJhbWV0ZXJzLgorCiAKIC4uIGZ1bmN0aW9uOjogd2Fsayh0b3AsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCBmb2xsb3dsaW5rcz1GYWxzZSkKIApAQCAtMTUzMSw5ICsyMTczLDkgQEAKIAogICAgLi4gbm90ZTo6CiAKLSAgICAgIEJlIGF3YXJlIHRoYXQgc2V0dGluZyAqZm9sbG93bGlua3MqIHRvIGBgVHJ1ZWBgIGNhbiBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbiBpZiBhCi0gICAgICBsaW5rIHBvaW50cyB0byBhIHBhcmVudCBkaXJlY3Rvcnkgb2YgaXRzZWxmLiA6ZnVuYzpgd2Fsa2AgZG9lcyBub3Qga2VlcCB0cmFjayBvZgotICAgICAgdGhlIGRpcmVjdG9yaWVzIGl0IHZpc2l0ZWQgYWxyZWFkeS4KKyAgICAgIEJlIGF3YXJlIHRoYXQgc2V0dGluZyAqZm9sbG93bGlua3MqIHRvIGBgVHJ1ZWBgIGNhbiBsZWFkIHRvIGluZmluaXRlCisgICAgICByZWN1cnNpb24gaWYgYSBsaW5rIHBvaW50cyB0byBhIHBhcmVudCBkaXJlY3Rvcnkgb2YgaXRzZWxmLiA6ZnVuYzpgd2Fsa2AKKyAgICAgIGRvZXMgbm90IGtlZXAgdHJhY2sgb2YgdGhlIGRpcmVjdG9yaWVzIGl0IHZpc2l0ZWQgYWxyZWFkeS4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTE1NjksNiArMjIxMSwxMzcgQEAKICAgICAgICAgICAgICAgb3Mucm1kaXIob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQogCiAKKy4uIGZ1bmN0aW9uOjogZndhbGsodG9wPScuJywgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPU5vbmUpCisKKyAgIC4uIGluZGV4OjoKKyAgICAgIHNpbmdsZTogZGlyZWN0b3J5OyB3YWxraW5nCisgICAgICBzaW5nbGU6IGRpcmVjdG9yeTsgdHJhdmVyc2FsCisKKyAgIFRoaXMgYmVoYXZlcyBleGFjdGx5IGxpa2UgOmZ1bmM6YHdhbGtgLCBleGNlcHQgdGhhdCBpdCB5aWVsZHMgYSA0LXR1cGxlCisgICBgYChkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzLCBkaXJmZClgYCwgYW5kIGl0IHN1cHBvcnRzIGBgZGlyX2ZkYGAuCisKKyAgICpkaXJwYXRoKiwgKmRpcm5hbWVzKiBhbmQgKmZpbGVuYW1lcyogYXJlIGlkZW50aWNhbCB0byA6ZnVuYzpgd2Fsa2Agb3V0cHV0LAorICAgYW5kICpkaXJmZCogaXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIHRoZSBkaXJlY3RvcnkgKmRpcnBhdGgqLgorCisgICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBzdXBwb3J0cyA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YCBhbmQgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuICBOb3RlIGhvd2V2ZXIKKyAgIHRoYXQsIHVubGlrZSBvdGhlciBmdW5jdGlvbnMsIHRoZSA6ZnVuYzpgZndhbGtgIGRlZmF1bHQgdmFsdWUgZm9yCisgICAqZm9sbG93X3N5bWxpbmtzKiBpcyBgYEZhbHNlYGAuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBTaW5jZSA6ZnVuYzpgZndhbGtgIHlpZWxkcyBmaWxlIGRlc2NyaXB0b3JzLCB0aG9zZSBhcmUgb25seSB2YWxpZCB1bnRpbAorICAgICAgdGhlIG5leHQgaXRlcmF0aW9uIHN0ZXAsIHNvIHlvdSBzaG91bGQgZHVwbGljYXRlIHRoZW0gKGUuZy4gd2l0aAorICAgICAgOmZ1bmM6YGR1cGApIGlmIHlvdSB3YW50IHRvIGtlZXAgdGhlbSBsb25nZXIuCisKKyAgIFRoaXMgZXhhbXBsZSBkaXNwbGF5cyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRha2VuIGJ5IG5vbi1kaXJlY3RvcnkgZmlsZXMgaW4gZWFjaAorICAgZGlyZWN0b3J5IHVuZGVyIHRoZSBzdGFydGluZyBkaXJlY3RvcnksIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgbG9vayB1bmRlciBhbnkKKyAgIENWUyBzdWJkaXJlY3Rvcnk6OgorCisgICAgICBpbXBvcnQgb3MKKyAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKCdweXRob24vTGliL2VtYWlsJyk6CisgICAgICAgICAgcHJpbnQocm9vdCwgImNvbnN1bWVzIiwgZW5kPSIiKQorICAgICAgICAgIHByaW50KHN1bShbb3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkKS5zdF9zaXplIGZvciBuYW1lIGluIGZpbGVzXSksCisgICAgICAgICAgICAgICAgZW5kPSIiKQorICAgICAgICAgIHByaW50KCJieXRlcyBpbiIsIGxlbihmaWxlcyksICJub24tZGlyZWN0b3J5IGZpbGVzIikKKyAgICAgICAgICBpZiAnQ1ZTJyBpbiBkaXJzOgorICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykgICMgZG9uJ3QgdmlzaXQgQ1ZTIGRpcmVjdG9yaWVzCisKKyAgIEluIHRoZSBuZXh0IGV4YW1wbGUsIHdhbGtpbmcgdGhlIHRyZWUgYm90dG9tLXVwIGlzIGVzc2VudGlhbDoKKyAgIDpmdW5jOmBybWRpcmAgZG9lc24ndCBhbGxvdyBkZWxldGluZyBhIGRpcmVjdG9yeSBiZWZvcmUgdGhlIGRpcmVjdG9yeSBpcworICAgZW1wdHk6OgorCisgICAgICAjIERlbGV0ZSBldmVyeXRoaW5nIHJlYWNoYWJsZSBmcm9tIHRoZSBkaXJlY3RvcnkgbmFtZWQgaW4gInRvcCIsCisgICAgICAjIGFzc3VtaW5nIHRoZXJlIGFyZSBubyBzeW1ib2xpYyBsaW5rcy4KKyAgICAgICMgQ0FVVElPTjogIFRoaXMgaXMgZGFuZ2Vyb3VzISAgRm9yIGV4YW1wbGUsIGlmIHRvcCA9PSAnLycsIGl0CisgICAgICAjIGNvdWxkIGRlbGV0ZSBhbGwgeW91ciBkaXNrIGZpbGVzLgorICAgICAgaW1wb3J0IG9zCisgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2Fsayh0b3AsIHRvcGRvd249RmFsc2UpOgorICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgorICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXJvb3RmZCkKKyAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgorICAgICAgICAgICAgICBvcy5ybWRpcihuYW1lLCBkaXJfZmQ9cm9vdGZkKQorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKK0xpbnV4IGV4dGVuZGVkIGF0dHJpYnV0ZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIGF2YWlsYWJsZSBvbiBMaW51eCBvbmx5LgorCisuLiBmdW5jdGlvbjo6IGdldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIGZvcgorICAgKnBhdGgqLiAqYXR0cmlidXRlKiBjYW4gYmUgYnl0ZXMgb3Igc3RyLiBJZiBpdCBpcyBzdHIsIGl0IGlzIGVuY29kZWQKKyAgIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAorICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKworLi4gZnVuY3Rpb246OiBsaXN0eGF0dHIocGF0aD1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGVzIG9uICpwYXRoKi4gIFRoZQorICAgYXR0cmlidXRlcyBpbiB0aGUgbGlzdCBhcmUgcmVwcmVzZW50ZWQgYXMgc3RyaW5ncyBkZWNvZGVkIHdpdGggdGhlIGZpbGVzeXN0ZW0KKyAgIGVuY29kaW5nLiAgSWYgKnBhdGgqIGlzIGBgTm9uZWBgLCA6ZnVuYzpgbGlzdHhhdHRyYCB3aWxsIGV4YW1pbmUgdGhlIGN1cnJlbnQKKyAgIGRpcmVjdG9yeS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCisgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworCisuLiBmdW5jdGlvbjo6IHJlbW92ZXhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIFJlbW92ZXMgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIGZyb20gKnBhdGgqLgorICAgKmF0dHJpYnV0ZSogc2hvdWxkIGJlIGJ5dGVzIG9yIHN0ci4gSWYgaXQgaXMgYSBzdHJpbmcsIGl0IGlzIGVuY29kZWQKKyAgIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAorICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKworLi4gZnVuY3Rpb246OiBzZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgU2V0IHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBvbiAqcGF0aCogdG8gKnZhbHVlKi4KKyAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzLiBJZiBpdCBpcyBhIHN0ciwKKyAgIGl0IGlzIGVuY29kZWQgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4gICpmbGFncyogbWF5IGJlCisgICA6ZGF0YTpgWEFUVFJfUkVQTEFDRWAgb3IgOmRhdGE6YFhBVFRSX0NSRUFURWAuIElmIDpkYXRhOmBYQVRUUl9SRVBMQUNFYCBpcworICAgZ2l2ZW4gYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsIGBgRUVYSVNUU2BgIHdpbGwgYmUgcmFpc2VkLgorICAgSWYgOmRhdGE6YFhBVFRSX0NSRUFURWAgaXMgZ2l2ZW4gYW5kIHRoZSBhdHRyaWJ1dGUgYWxyZWFkeSBleGlzdHMsIHRoZQorICAgYXR0cmlidXRlIHdpbGwgbm90IGJlIGNyZWF0ZWQgYW5kIGBgRU5PREFUQWBgIHdpbGwgYmUgcmFpc2VkLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisgICAuLiBub3RlOjoKKworICAgICAgQSBidWcgaW4gTGludXgga2VybmVsIHZlcnNpb25zIGxlc3MgdGhhbiAyLjYuMzkgY2F1c2VkIHRoZSBmbGFncyBhcmd1bWVudAorICAgICAgdG8gYmUgaWdub3JlZCBvbiBzb21lIGZpbGVzeXN0ZW1zLgorCisKKy4uIGRhdGE6OiBYQVRUUl9TSVpFX01BWAorCisgICBUaGUgbWF4aW11bSBzaXplIHRoZSB2YWx1ZSBvZiBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgY2FuIGJlLiBDdXJyZW50bHksIHRoaXMKKyAgIGlzIDY0IGtpbG9ieXRlcyBvbiBMaW51eC4KKworCisuLiBkYXRhOjogWEFUVFJfQ1JFQVRFCisKKyAgIFRoaXMgaXMgYSBwb3NzaWJsZSB2YWx1ZSBmb3IgdGhlIGZsYWdzIGFyZ3VtZW50IGluIDpmdW5jOmBzZXR4YXR0cmAuIEl0CisgICBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBtdXN0IGNyZWF0ZSBhbiBhdHRyaWJ1dGUuCisKKworLi4gZGF0YTo6IFhBVFRSX1JFUExBQ0UKKworICAgVGhpcyBpcyBhIHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgZmxhZ3MgYXJndW1lbnQgaW4gOmZ1bmM6YHNldHhhdHRyYC4gSXQKKyAgIGluZGljYXRlcyB0aGUgb3BlcmF0aW9uIG11c3QgcmVwbGFjZSBhbiBleGlzdGluZyBhdHRyaWJ1dGUuCisKKwogLi4gX29zLXByb2Nlc3M6CiAKIFByb2Nlc3MgTWFuYWdlbWVudApAQCAtMTY0Miw4ICsyNDE1LDE2IEBACiAgICA6ZnVuYzpgZXhlY2xwYCwgOmZ1bmM6YGV4ZWN2YCwgYW5kIDpmdW5jOmBleGVjdnBgIGFsbCBjYXVzZSB0aGUgbmV3IHByb2Nlc3MgdG8KICAgIGluaGVyaXQgdGhlIGVudmlyb25tZW50IG9mIHRoZSBjdXJyZW50IHByb2Nlc3MuCiAKKyAgIEZvciA6ZnVuYzpgZXhlY3ZlYCBvbiBzb21lIHBsYXRmb3JtcywgKnBhdGgqIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuCisgICBmaWxlIGRlc2NyaXB0b3IuICBUaGlzIGZ1bmN0aW9uYWxpdHkgbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybTsKKyAgIHlvdSBjYW4gY2hlY2sgd2hldGhlciBvciBub3QgaXQgaXMgYXZhaWxhYmxlIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19mZGAuCisgICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqCisgICAgICBmb3IgOmZ1bmM6YGV4ZWN2ZWAuCiAKIC4uIGZ1bmN0aW9uOjogX2V4aXQobikKIApAQCAtMTgzMyw2ICsyNjE0LDggQEAKICAgIHdpbGwgYmUgc2V0IHRvICpzaWcqLiBUaGUgV2luZG93cyB2ZXJzaW9uIG9mIDpmdW5jOmBraWxsYCBhZGRpdGlvbmFsbHkgdGFrZXMKICAgIHByb2Nlc3MgaGFuZGxlcyB0byBiZSBraWxsZWQuCiAKKyAgIFNlZSBhbHNvIDpmdW5jOmBzaWduYWwucHRocmVhZF9raWxsYC4KKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAgICAgICBXaW5kb3dzIHN1cHBvcnQuCiAKQEAgLTIwMjMsMTQgKzI4MDYsMzAgQEAKIAogLi4gZnVuY3Rpb246OiB0aW1lcygpCiAKLSAgIFJldHVybiBhIDUtdHVwbGUgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpbmRpY2F0aW5nIGFjY3VtdWxhdGVkIChwcm9jZXNzb3IKLSAgIG9yIG90aGVyKSB0aW1lcywgaW4gc2Vjb25kcy4gIFRoZSBpdGVtcyBhcmU6IHVzZXIgdGltZSwgc3lzdGVtIHRpbWUsCi0gICBjaGlsZHJlbidzIHVzZXIgdGltZSwgY2hpbGRyZW4ncyBzeXN0ZW0gdGltZSwgYW5kIGVsYXBzZWQgcmVhbCB0aW1lIHNpbmNlIGEKLSAgIGZpeGVkIHBvaW50IGluIHRoZSBwYXN0LCBpbiB0aGF0IG9yZGVyLiAgU2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlCi0gICA6bWFucGFnZTpgdGltZXMoMilgIG9yIHRoZSBjb3JyZXNwb25kaW5nIFdpbmRvd3MgUGxhdGZvcm0gQVBJIGRvY3VtZW50YXRpb24uCi0gICBPbiBXaW5kb3dzLCBvbmx5IHRoZSBmaXJzdCB0d28gaXRlbXMgYXJlIGZpbGxlZCwgdGhlIG90aGVycyBhcmUgemVyby4KKyAgIFJldHVybnMgdGhlIGN1cnJlbnQgZ2xvYmFsIHByb2Nlc3MgdGltZXMuCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGZpdmUgYXR0cmlidXRlczoKIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzCisgICAqIDphdHRyOmB1c2VyYCAtIHVzZXIgdGltZQorICAgKiA6YXR0cjpgc3lzdGVtYCAtIHN5c3RlbSB0aW1lCisgICAqIDphdHRyOmBjaGlsZHJlbl91c2VyYCAtIHVzZXIgdGltZSBvZiBhbGwgY2hpbGQgcHJvY2Vzc2VzCisgICAqIDphdHRyOmBjaGlsZHJlbl9zeXN0ZW1gIC0gc3lzdGVtIHRpbWUgb2YgYWxsIGNoaWxkIHByb2Nlc3NlcworICAgKiA6YXR0cjpgZWxhcHNlZGAgLSBlbGFwc2VkIHJlYWwgdGltZSBzaW5jZSBhIGZpeGVkIHBvaW50IGluIHRoZSBwYXN0CisKKyAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhpcyBvYmplY3QgYWxzbyBiZWhhdmVzIGxpa2UgYSBmaXZlLXR1cGxlCisgICBjb250YWluaW5nIDphdHRyOmB1c2VyYCwgOmF0dHI6YHN5c3RlbWAsIDphdHRyOmBjaGlsZHJlbl91c2VyYCwKKyAgIDphdHRyOmBjaGlsZHJlbl9zeXN0ZW1gLCBhbmQgOmF0dHI6YGVsYXBzZWRgIGluIHRoYXQgb3JkZXIuCisKKyAgIFNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQorICAgOm1hbnBhZ2U6YHRpbWVzKDIpYCBvciB0aGUgY29ycmVzcG9uZGluZyBXaW5kb3dzIFBsYXRmb3JtIEFQSSBkb2N1bWVudGF0aW9uLgorICAgT24gV2luZG93cywgb25seSA6YXR0cjpgdXNlcmAgYW5kIDphdHRyOmBzeXN0ZW1gIGFyZSBrbm93bjsgdGhlIG90aGVyCisgICBhdHRyaWJ1dGVzIGFyZSB6ZXJvLgorICAgT24gT1MvMiwgb25seSA6YXR0cjpgZWxhcHNlZGAgaXMga25vd247IHRoZSBvdGhlciBhdHRyaWJ1dGVzIGFyZSB6ZXJvLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0byBhIHR1cGxlLWxpa2Ugb2JqZWN0CisgICAgICB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMuCiAKIAogLi4gZnVuY3Rpb246OiB3YWl0KCkKQEAgLTIwNDMsNiArMjg0Miw1OCBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKy4uIGZ1bmN0aW9uOjogd2FpdGlkKGlkdHlwZSwgaWQsIG9wdGlvbnMpCisKKyAgIFdhaXQgZm9yIHRoZSBjb21wbGV0aW9uIG9mIG9uZSBvciBtb3JlIGNoaWxkIHByb2Nlc3Nlcy4KKyAgICppZHR5cGUqIGNhbiBiZSA6ZGF0YTpgUF9QSURgLCA6ZGF0YTpgUF9QR0lEYCBvciA6ZGF0YTpgUF9BTExgLgorICAgKmlkKiBzcGVjaWZpZXMgdGhlIHBpZCB0byB3YWl0IG9uLgorICAgKm9wdGlvbnMqIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIE9SaW5nIG9mIG9uZSBvciBtb3JlIG9mIDpkYXRhOmBXRVhJVEVEYCwKKyAgIDpkYXRhOmBXU1RPUFBFRGAgb3IgOmRhdGE6YFdDT05USU5VRURgIGFuZCBhZGRpdGlvbmFsbHkgbWF5IGJlIE9SZWQgd2l0aAorICAgOmRhdGE6YFdOT0hBTkdgIG9yIDpkYXRhOmBXTk9XQUlUYC4gVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3QKKyAgIHJlcHJlc2VudGluZyB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIDpjOnR5cGU6YHNpZ2luZm9fdGAgc3RydWN0dXJlLCBuYW1lbHk6CisgICA6YXR0cjpgc2lfcGlkYCwgOmF0dHI6YHNpX3VpZGAsIDphdHRyOmBzaV9zaWdub2AsIDphdHRyOmBzaV9zdGF0dXNgLAorICAgOmF0dHI6YHNpX2NvZGVgIG9yIGBgTm9uZWBgIGlmIDpkYXRhOmBXTk9IQU5HYCBpcyBzcGVjaWZpZWQgYW5kIHRoZXJlIGFyZSBubworICAgY2hpbGRyZW4gaW4gYSB3YWl0YWJsZSBzdGF0ZS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IFBfUElECisgICAgICAgICAgUF9QR0lECisgICAgICAgICAgUF9BTEwKKworICAgVGhlc2UgYXJlIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yICppZHR5cGUqIGluIDpmdW5jOmB3YWl0aWRgLiBUaGV5IGFmZmVjdAorICAgaG93ICppZCogaXMgaW50ZXJwcmV0ZWQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBXRVhJVEVECisgICAgICAgICAgV1NUT1BQRUQKKyAgICAgICAgICBXTk9XQUlUCisKKyAgIEZsYWdzIHRoYXQgY2FuIGJlIHVzZWQgaW4gKm9wdGlvbnMqIGluIDpmdW5jOmB3YWl0aWRgIHRoYXQgc3BlY2lmeSB3aGF0CisgICBjaGlsZCBzaWduYWwgdG8gd2FpdCBmb3IuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMRF9FWElURUQKKyAgICAgICAgICBDTERfRFVNUEVECisgICAgICAgICAgQ0xEX1RSQVBQRUQKKyAgICAgICAgICBDTERfQ09OVElOVUVECisKKyAgIFRoZXNlIGFyZSB0aGUgcG9zc2libGUgdmFsdWVzIGZvciA6YXR0cjpgc2lfY29kZWAgaW4gdGhlIHJlc3VsdCByZXR1cm5lZCBieQorICAgOmZ1bmM6YHdhaXRpZGAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gZnVuY3Rpb246OiB3YWl0cGlkKHBpZCwgb3B0aW9ucykKIApAQCAtMjEwNyw3ICsyOTU4LDcgQEAKICAgIFRoaXMgb3B0aW9uIGNhdXNlcyBjaGlsZCBwcm9jZXNzZXMgdG8gYmUgcmVwb3J0ZWQgaWYgdGhleSBoYXZlIGJlZW4gY29udGludWVkCiAgICBmcm9tIGEgam9iIGNvbnRyb2wgc3RvcCBzaW5jZSB0aGVpciBzdGF0dXMgd2FzIGxhc3QgcmVwb3J0ZWQuCiAKLSAgIEF2YWlsYWJpbGl0eTogU29tZSBVbml4IHN5c3RlbXMuCisgICBBdmFpbGFiaWxpdHk6IHNvbWUgVW5peCBzeXN0ZW1zLgogCiAKIC4uIGRhdGE6OiBXVU5UUkFDRUQKQEAgLTIxODQsNiArMzAzNSwxMjkgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCitJbnRlcmZhY2UgdG8gdGhlIHNjaGVkdWxlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlc2UgZnVuY3Rpb25zIGNvbnRyb2wgaG93IGEgcHJvY2VzcyBpcyBhbGxvY2F0ZWQgQ1BVIHRpbWUgYnkgdGhlIG9wZXJhdGluZworc3lzdGVtLiBUaGV5IGFyZSBvbmx5IGF2YWlsYWJsZSBvbiBzb21lIFVuaXggcGxhdGZvcm1zLiBGb3IgbW9yZSBkZXRhaWxlZAoraW5mb3JtYXRpb24sIGNvbnN1bHQgeW91ciBVbml4IG1hbnBhZ2VzLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIGZvbGxvd2luZyBzY2hlZHVsaW5nIHBvbGljaWVzIGFyZSBleHBvc2VkIGlmIHRoZXkgYXJlIGEgc3VwcG9ydGVkIGJ5IHRoZQorb3BlcmF0aW5nIHN5c3RlbS4KKworLi4gZGF0YTo6IFNDSEVEX09USEVSCisKKyAgIFRoZSBkZWZhdWx0IHNjaGVkdWxpbmcgcG9saWN5LgorCisuLiBkYXRhOjogU0NIRURfQkFUQ0gKKworICAgU2NoZWR1bGluZyBwb2xpY3kgZm9yIENQVS1pbnRlbnNpdmUgcHJvY2Vzc2VzIHRoYXQgdHJpZXMgdG8gcHJlc2VydmUKKyAgIGludGVyYWN0aXZpdHkgb24gdGhlIHJlc3Qgb2YgdGhlIGNvbXB1dGVyLgorCisuLiBkYXRhOjogU0NIRURfSURMRQorCisgICBTY2hlZHVsaW5nIHBvbGljeSBmb3IgZXh0cmVtZWx5IGxvdyBwcmlvcml0eSBiYWNrZ3JvdW5kIHRhc2tzLgorCisuLiBkYXRhOjogU0NIRURfU1BPUkFESUMKKworICAgU2NoZWR1bGluZyBwb2xpY3kgZm9yIHNwb3JhZGljIHNlcnZlciBwcm9ncmFtcy4KKworLi4gZGF0YTo6IFNDSEVEX0ZJRk8KKworICAgQSBGaXJzdCBJbiBGaXJzdCBPdXQgc2NoZWR1bGluZyBwb2xpY3kuCisKKy4uIGRhdGE6OiBTQ0hFRF9SUgorCisgICBBIHJvdW5kLXJvYmluIHNjaGVkdWxpbmcgcG9saWN5LgorCisuLiBkYXRhOjogU0NIRURfUkVTRVRfT05fRk9SSworCisgICBUaGlzIGZsYWcgY2FuIE9SJ2VkIHdpdGggYW55IG90aGVyIHNjaGVkdWxpbmcgcG9saWN5LiBXaGVuIGEgcHJvY2VzcyB3aXRoCisgICB0aGlzIGZsYWcgc2V0IGZvcmtzLCBpdHMgY2hpbGQncyBzY2hlZHVsaW5nIHBvbGljeSBhbmQgcHJpb3JpdHkgYXJlIHJlc2V0IHRvCisgICB0aGUgZGVmYXVsdC4KKworCisuLiBjbGFzczo6IHNjaGVkX3BhcmFtKHNjaGVkX3ByaW9yaXR5KQorCisgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgdHVuYWJsZSBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgdXNlZCBpbgorICAgOmZ1bmM6YHNjaGVkX3NldHBhcmFtYCwgOmZ1bmM6YHNjaGVkX3NldHNjaGVkdWxlcmAsIGFuZAorICAgOmZ1bmM6YHNjaGVkX2dldHBhcmFtYC4gSXQgaXMgaW1tdXRhYmxlLgorCisgICBBdCB0aGUgbW9tZW50LCB0aGVyZSBpcyBvbmx5IG9uZSBwb3NzaWJsZSBwYXJhbWV0ZXI6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IHNjaGVkX3ByaW9yaXR5CisKKyAgICAgIFRoZSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBhIHNjaGVkdWxpbmcgcG9saWN5LgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihwb2xpY3kpCisKKyAgIEdldCB0aGUgbWluaW11bSBwcmlvcml0eSB2YWx1ZSBmb3IgKnBvbGljeSouICpwb2xpY3kqIGlzIG9uZSBvZiB0aGUKKyAgIHNjaGVkdWxpbmcgcG9saWN5IGNvbnN0YW50cyBhYm92ZS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX2dldF9wcmlvcml0eV9tYXgocG9saWN5KQorCisgICBHZXQgdGhlIG1heGltdW0gcHJpb3JpdHkgdmFsdWUgZm9yICpwb2xpY3kqLiAqcG9saWN5KiBpcyBvbmUgb2YgdGhlCisgICBzY2hlZHVsaW5nIHBvbGljeSBjb25zdGFudHMgYWJvdmUuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9zZXRzY2hlZHVsZXIocGlkLCBwb2xpY3ksIHBhcmFtKQorCisgICBTZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi4gQSAqcGlkKiBvZiAwIG1lYW5zCisgICB0aGUgY2FsbGluZyBwcm9jZXNzLiAqcG9saWN5KiBpcyBvbmUgb2YgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGNvbnN0YW50cworICAgYWJvdmUuICpwYXJhbSogaXMgYSA6Y2xhc3M6YHNjaGVkX3BhcmFtYCBpbnN0YW5jZS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX2dldHNjaGVkdWxlcihwaWQpCisKKyAgIFJldHVybiB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLiBBICpwaWQqIG9mIDAKKyAgIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuIFRoZSByZXN1bHQgaXMgb25lIG9mIHRoZSBzY2hlZHVsaW5nIHBvbGljeQorICAgY29uc3RhbnRzIGFib3ZlLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfc2V0cGFyYW0ocGlkLCBwYXJhbSkKKworICAgU2V0IGEgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi4gQSAqcGlkKiBvZiAwIG1lYW5zCisgICB0aGUgY2FsbGluZyBwcm9jZXNzLiAqcGFyYW0qIGlzIGEgOmNsYXNzOmBzY2hlZF9wYXJhbWAgaW5zdGFuY2UuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRwYXJhbShwaWQpCisKKyAgIFJldHVybiB0aGUgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGFzIGEgOmNsYXNzOmBzY2hlZF9wYXJhbWAgaW5zdGFuY2UgZm9yIHRoZQorICAgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi4gQSAqcGlkKiBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkKQorCisgICBSZXR1cm4gdGhlIHJvdW5kLXJvYmluIHF1YW50dW0gaW4gc2Vjb25kcyBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEKKyAgICpwaWQqIG9mIDAgbWVhbnMgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX3lpZWxkKCkKKworICAgVm9sdW50YXJpbHkgcmVsaW5xdWlzaCB0aGUgQ1BVLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfc2V0YWZmaW5pdHkocGlkLCBtYXNrKQorCisgICBSZXN0cmljdCB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiAob3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBpZiB6ZXJvKSB0byBhCisgICBzZXQgb2YgQ1BVcy4gICptYXNrKiBpcyBhbiBpdGVyYWJsZSBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcgdGhlIHNldCBvZgorICAgQ1BVcyB0byB3aGljaCB0aGUgcHJvY2VzcyBzaG91bGQgYmUgcmVzdHJpY3RlZC4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX2dldGFmZmluaXR5KHBpZCkKKworICAgUmV0dXJuIHRoZSBzZXQgb2YgQ1BVcyB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiAob3IgdGhlIGN1cnJlbnQgcHJvY2VzcworICAgaWYgemVybykgaXMgcmVzdHJpY3RlZCB0by4KKworICAgLi4gc2VlYWxzbzo6CisgICAgICA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlCisgICAgICBzeXN0ZW0uCisKKwogLi4gX29zLXBhdGg6CiAKIE1pc2NlbGxhbmVvdXMgU3lzdGVtIEluZm9ybWF0aW9uCkBAIC0yMjA4LDcgKzMxODIsNyBAQAogICAgaW5jbHVkZWQgaW4gYGBjb25mc3RyX25hbWVzYGAsIGFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCB3aXRoCiAgICA6Y29uc3Q6YGVycm5vLkVJTlZBTGAgZm9yIHRoZSBlcnJvciBudW1iZXIuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peAorICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKIC4uIGRhdGE6OiBjb25mc3RyX25hbWVzCkBAIC0yMzMwLDYgKzMzMDQsNiBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgcmFuZG9tIGJ5dGVzIGZyb20gYW4gT1Mtc3BlY2lmaWMgcmFuZG9tbmVzcyBzb3VyY2UuICBUaGUKICAgIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIHVucHJlZGljdGFibGUgZW5vdWdoIGZvciBjcnlwdG9ncmFwaGljIGFwcGxpY2F0aW9ucywKLSAgIHRob3VnaCBpdHMgZXhhY3QgcXVhbGl0eSBkZXBlbmRzIG9uIHRoZSBPUyBpbXBsZW1lbnRhdGlvbi4gIE9uIGEgVU5JWC1saWtlCisgICB0aG91Z2ggaXRzIGV4YWN0IHF1YWxpdHkgZGVwZW5kcyBvbiB0aGUgT1MgaW1wbGVtZW50YXRpb24uICBPbiBhIFVuaXgtbGlrZQogICAgc3lzdGVtIHRoaXMgd2lsbCBxdWVyeSAvZGV2L3VyYW5kb20sIGFuZCBvbiBXaW5kb3dzIGl0IHdpbGwgdXNlIENyeXB0R2VuUmFuZG9tLgogICAgSWYgYSByYW5kb21uZXNzIHNvdXJjZSBpcyBub3QgZm91bmQsIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0IGIvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0CmluZGV4IGNmMzAyY2MuLjllNWJlYzkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdAorKysgYi9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QKQEAgLTM4LDYgKzM4LDEwIEBACiAgICBUaGlzIHByb2JhYmx5IGFsbCB3YXJyYW50cyBhIGZvb3Rub3RlIG9yIHR3bywgYnV0IEkgZG9uJ3QgdW5kZXJzdGFuZAogICAgdGhpbmdzIHdlbGwgZW5vdWdoIHJpZ2h0IG5vdyB0byB3cml0ZSBpdCEgICAtLUdQVwogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgT3BlcmF0aW9ucyBpbiB0aGlzIG1vZHVsZSBub3cgcmFpc2UgOmV4YzpgT1NFcnJvcmAgd2hlcmUgOmV4YzpgSU9FcnJvcmAKKyAgIHdhcyByYWlzZWQuCisKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTU2LDcgKzYwLDcgQEAKICAgIHdoYXQgd2VudCB3cm9uZy4KIAogICAgKElmIDptb2Q6YG9zc2F1ZGlvZGV2YCByZWNlaXZlcyBhbiBlcnJvciBmcm9tIGEgc3lzdGVtIGNhbGwgc3VjaCBhcwotICAgOmM6ZnVuYzpgb3BlbmAsIDpjOmZ1bmM6YHdyaXRlYCwgb3IgOmM6ZnVuYzpgaW9jdGxgLCBpdCByYWlzZXMgOmV4YzpgSU9FcnJvcmAuCisgICA6YzpmdW5jOmBvcGVuYCwgOmM6ZnVuYzpgd3JpdGVgLCBvciA6YzpmdW5jOmBpb2N0bGAsIGl0IHJhaXNlcyA6ZXhjOmBPU0Vycm9yYC4KICAgIEVycm9ycyBkZXRlY3RlZCBkaXJlY3RseSBieSA6bW9kOmBvc3NhdWRpb2RldmAgcmVzdWx0IGluIDpleGM6YE9TU0F1ZGlvRXJyb3JgLikKIAogICAgKEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhlIGV4Y2VwdGlvbiBjbGFzcyBpcyBhbHNvIGF2YWlsYWJsZSBhcwpAQCAtMTY4LDcgKzE3Miw3IEBACiBjb3JyZXNwb25kZW5jZSBpcyBvYnZpb3VzOiBmb3IgZXhhbXBsZSwgOm1ldGg6YHNldGZtdGAgY29ycmVzcG9uZHMgdG8gdGhlCiBgYFNORENUTF9EU1BfU0VURk1UYGAgaW9jdGwsIGFuZCA6bWV0aDpgc3luY2AgdG8gYGBTTkRDVExfRFNQX1NZTkNgYCAodGhpcyBjYW4KIGJlIHVzZWZ1bCB3aGVuIGNvbnN1bHRpbmcgdGhlIE9TUyBkb2N1bWVudGF0aW9uKS4gIElmIHRoZSB1bmRlcmx5aW5nCi06ZnVuYzpgaW9jdGxgIGZhaWxzLCB0aGV5IGFsbCByYWlzZSA6ZXhjOmBJT0Vycm9yYC4KKzpmdW5jOmBpb2N0bGAgZmFpbHMsIHRoZXkgYWxsIHJhaXNlIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIG1ldGhvZDo6IG9zc19hdWRpb19kZXZpY2Uubm9uYmxvY2soKQpAQCAtMzQ0LDcgKzM0OCw3IEBACiAuLiBtZXRob2Q6OiBvc3NfbWl4ZXJfZGV2aWNlLmNsb3NlKCkKIAogICAgVGhpcyBtZXRob2QgY2xvc2VzIHRoZSBvcGVuIG1peGVyIGRldmljZSBmaWxlLiAgQW55IGZ1cnRoZXIgYXR0ZW1wdHMgdG8gdXNlIHRoZQotICAgbWl4ZXIgYWZ0ZXIgdGhpcyBmaWxlIGlzIGNsb3NlZCB3aWxsIHJhaXNlIGFuIDpleGM6YElPRXJyb3JgLgorICAgbWl4ZXIgYWZ0ZXIgdGhpcyBmaWxlIGlzIGNsb3NlZCB3aWxsIHJhaXNlIGFuIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIG1ldGhvZDo6IG9zc19taXhlcl9kZXZpY2UuZmlsZW5vKCkKQEAgLTQwMyw3ICs0MDcsNyBAQAogICAgcmV0dXJuZWQsIGJ1dCBib3RoIHZvbHVtZXMgYXJlIHRoZSBzYW1lLgogCiAgICBSYWlzZXMgOmV4YzpgT1NTQXVkaW9FcnJvcmAgaWYgYW4gaW52YWxpZCBjb250cm9sIHdhcyBpcyBzcGVjaWZpZWQsIG9yCi0gICA6ZXhjOmBJT0Vycm9yYCBpZiBhbiB1bnN1cHBvcnRlZCBjb250cm9sIGlzIHNwZWNpZmllZC4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIGFuIHVuc3VwcG9ydGVkIGNvbnRyb2wgaXMgc3BlY2lmaWVkLgogCiAKIC4uIG1ldGhvZDo6IG9zc19taXhlcl9kZXZpY2Uuc2V0KGNvbnRyb2wsIChsZWZ0LCByaWdodCkpCkBAIC00MjcsNyArNDMxLDcgQEAKIC4uIG1ldGhvZDo6IG9zc19taXhlcl9kZXZpY2Uuc2V0X3JlY3NyYyhiaXRtYXNrKQogCiAgICBDYWxsIHRoaXMgZnVuY3Rpb24gdG8gc3BlY2lmeSBhIHJlY29yZGluZyBzb3VyY2UuICBSZXR1cm5zIGEgYml0bWFzayBpbmRpY2F0aW5nCi0gICB0aGUgbmV3IHJlY29yZGluZyBzb3VyY2UgKG9yIHNvdXJjZXMpIGlmIHN1Y2Nlc3NmdWw7IHJhaXNlcyA6ZXhjOmBJT0Vycm9yYCBpZiBhbgorICAgdGhlIG5ldyByZWNvcmRpbmcgc291cmNlIChvciBzb3VyY2VzKSBpZiBzdWNjZXNzZnVsOyByYWlzZXMgOmV4YzpgT1NFcnJvcmAgaWYgYW4KICAgIGludmFsaWQgc291cmNlIHdhcyBzcGVjaWZpZWQuICBUbyBzZXQgdGhlIGN1cnJlbnQgcmVjb3JkaW5nIHNvdXJjZSB0byB0aGUKICAgIG1pY3JvcGhvbmUgaW5wdXQ6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wZGIucnN0IGIvRG9jL2xpYnJhcnkvcGRiLnJzdAppbmRleCAxZTlkZTYzLi5mNGUzN2FjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wZGIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BkYi5yc3QKQEAgLTM4LDYgKzM4LDExIEBACiAgICA+IDxzdHJpbmc+KDEpPygpCiAgICAoUGRiKQogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGFiLWNvbXBsZXRpb24gdmlhIHRoZSA6bW9kOmByZWFkbGluZWAgbW9kdWxlIGlzIGF2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kCisgICBjb21tYW5kIGFyZ3VtZW50cywgZS5nLiB0aGUgY3VycmVudCBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzIGFyZSBvZmZlcmVkIGFzCisgICBhcmd1bWVudHMgb2YgdGhlIGBgcHJpbnRgYCBjb21tYW5kLgorCiA6ZmlsZTpgcGRiLnB5YCBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyIHNjcmlwdHMuICBGb3IKIGV4YW1wbGU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0IGIvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAppbmRleCBhMWY5YWYyLi4yODdhMDhiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKQEAgLTI4Nyw2ICsyODcsMjkgQEAKIAogICAgICAgU2VlIDpyZWY6YHBpY2tsZS1wZXJzaXN0ZW50YCBmb3IgZGV0YWlscyBhbmQgZXhhbXBsZXMgb2YgdXNlcy4KIAorICAgLi4gYXR0cmlidXRlOjogZGlzcGF0Y2hfdGFibGUKKworICAgICAgQSBwaWNrbGVyIG9iamVjdCdzIGRpc3BhdGNoIHRhYmxlIGlzIGEgcmVnaXN0cnkgb2YgKnJlZHVjdGlvbgorICAgICAgZnVuY3Rpb25zKiBvZiB0aGUga2luZCB3aGljaCBjYW4gYmUgZGVjbGFyZWQgdXNpbmcKKyAgICAgIDpmdW5jOmBjb3B5cmVnLnBpY2tsZWAuICBJdCBpcyBhIG1hcHBpbmcgd2hvc2Uga2V5cyBhcmUgY2xhc3NlcworICAgICAgYW5kIHdob3NlIHZhbHVlcyBhcmUgcmVkdWN0aW9uIGZ1bmN0aW9ucy4gIEEgcmVkdWN0aW9uIGZ1bmN0aW9uCisgICAgICB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCBvZiB0aGUgYXNzb2NpYXRlZCBjbGFzcyBhbmQgc2hvdWxkCisgICAgICBjb25mb3JtIHRvIHRoZSBzYW1lIGludGVyZmFjZSBhcyBhIDptZXRoOmB+b2JqZWN0Ll9fcmVkdWNlX19gCisgICAgICBtZXRob2QuCisKKyAgICAgIEJ5IGRlZmF1bHQsIGEgcGlja2xlciBvYmplY3Qgd2lsbCBub3QgaGF2ZSBhCisgICAgICA6YXR0cjpgZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSwgYW5kIGl0IHdpbGwgaW5zdGVhZCB1c2UgdGhlCisgICAgICBnbG9iYWwgZGlzcGF0Y2ggdGFibGUgbWFuYWdlZCBieSB0aGUgOm1vZDpgY29weXJlZ2AgbW9kdWxlLgorICAgICAgSG93ZXZlciwgdG8gY3VzdG9taXplIHRoZSBwaWNrbGluZyBmb3IgYSBzcGVjaWZpYyBwaWNrbGVyIG9iamVjdAorICAgICAgb25lIGNhbiBzZXQgdGhlIDphdHRyOmBkaXNwYXRjaF90YWJsZWAgYXR0cmlidXRlIHRvIGEgZGljdC1saWtlCisgICAgICBvYmplY3QuICBBbHRlcm5hdGl2ZWx5LCBpZiBhIHN1YmNsYXNzIG9mIDpjbGFzczpgUGlja2xlcmAgaGFzIGEKKyAgICAgIDphdHRyOmBkaXNwYXRjaF90YWJsZWAgYXR0cmlidXRlIHRoZW4gdGhpcyB3aWxsIGJlIHVzZWQgYXMgdGhlCisgICAgICBkZWZhdWx0IGRpc3BhdGNoIHRhYmxlIGZvciBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcy4KKworICAgICAgU2VlIDpyZWY6YHBpY2tsZS1kaXNwYXRjaGAgZm9yIHVzYWdlIGV4YW1wbGVzLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogICAgLi4gYXR0cmlidXRlOjogZmFzdAogCiAgICAgICBEZXByZWNhdGVkLiBFbmFibGUgZmFzdCBtb2RlIGlmIHNldCB0byBhIHRydWUgdmFsdWUuICBUaGUgZmFzdCBtb2RlCkBAIC01NzcsNiArNjAwLDQ0IEBACiAKIC4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZGJwaWNrbGUucHkKIAorLi4gX3BpY2tsZS1kaXNwYXRjaDoKKworRGlzcGF0Y2ggVGFibGVzCiteXl5eXl5eXl5eXl5eXl4KKworSWYgb25lIHdhbnRzIHRvIGN1c3RvbWl6ZSBwaWNrbGluZyBvZiBzb21lIGNsYXNzZXMgd2l0aG91dCBkaXN0dXJiaW5nCithbnkgb3RoZXIgY29kZSB3aGljaCBkZXBlbmRzIG9uIHBpY2tsaW5nLCB0aGVuIG9uZSBjYW4gY3JlYXRlIGEKK3BpY2tsZXIgd2l0aCBhIHByaXZhdGUgZGlzcGF0Y2ggdGFibGUuCisKK1RoZSBnbG9iYWwgZGlzcGF0Y2ggdGFibGUgbWFuYWdlZCBieSB0aGUgOm1vZDpgY29weXJlZ2AgbW9kdWxlIGlzCithdmFpbGFibGUgYXMgOmRhdGE6YGNvcHlyZWcuZGlzcGF0Y2hfdGFibGVgLiAgVGhlcmVmb3JlLCBvbmUgbWF5CitjaG9vc2UgdG8gdXNlIGEgbW9kaWZpZWQgY29weSBvZiA6ZGF0YTpgY29weXJlZy5kaXNwYXRjaF90YWJsZWAgYXMgYQorcHJpdmF0ZSBkaXNwYXRjaCB0YWJsZS4KKworRm9yIGV4YW1wbGUgOjoKKworICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgcCA9IHBpY2tsZS5QaWNrbGVyKGYpCisgICBwLmRpc3BhdGNoX3RhYmxlID0gY29weXJlZy5kaXNwYXRjaF90YWJsZS5jb3B5KCkKKyAgIHAuZGlzcGF0Y2hfdGFibGVbU29tZUNsYXNzXSA9IHJlZHVjZV9Tb21lQ2xhc3MKKworY3JlYXRlcyBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YHBpY2tsZS5QaWNrbGVyYCB3aXRoIGEgcHJpdmF0ZSBkaXNwYXRjaAordGFibGUgd2hpY2ggaGFuZGxlcyB0aGUgYGBTb21lQ2xhc3NgYCBjbGFzcyBzcGVjaWFsbHkuICBBbHRlcm5hdGl2ZWx5LAordGhlIGNvZGUgOjoKKworICAgY2xhc3MgTXlQaWNrbGVyKHBpY2tsZS5QaWNrbGVyKToKKyAgICAgICBkaXNwYXRjaF90YWJsZSA9IGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICAgICAgZGlzcGF0Y2hfdGFibGVbU29tZUNsYXNzXSA9IHJlZHVjZV9Tb21lQ2xhc3MKKyAgIGYgPSBpby5CeXRlc0lPKCkKKyAgIHAgPSBNeVBpY2tsZXIoZikKKworZG9lcyB0aGUgc2FtZSwgYnV0IGFsbCBpbnN0YW5jZXMgb2YgYGBNeVBpY2tsZXJgYCB3aWxsIGJ5IGRlZmF1bHQKK3NoYXJlIHRoZSBzYW1lIGRpc3BhdGNoIHRhYmxlLiAgVGhlIGVxdWl2YWxlbnQgY29kZSB1c2luZyB0aGUKKzptb2Q6YGNvcHlyZWdgIG1vZHVsZSBpcyA6OgorCisgICBjb3B5cmVnLnBpY2tsZShTb21lQ2xhc3MsIHJlZHVjZV9Tb21lQ2xhc3MpCisgICBmID0gaW8uQnl0ZXNJTygpCisgICBwID0gcGlja2xlLlBpY2tsZXIoZikKIAogLi4gX3BpY2tsZS1zdGF0ZToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAppbmRleCAzMTE4ZmYyLi4yMmQ0NGViIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdApAQCAtNTYsMjEgKzU2LDMyIEBACiAgICBOb3RlIHRoYXQgOmNsYXNzOmBJbXBJbXBvcnRlcmAgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgYmVpbmcgdXNlZCBieQogICAgcGxhY2VtZW50IG9uIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBlbXVsYXRpb24gaXMgbm8gbG9uZ2VyIG5lZWRlZCwgYXMgdGhlIHN0YW5kYXJkIGltcG9ydCBtZWNoYW5pc20KKyAgICAgIGlzIG5vdyBmdWxseSBQRVAgMzAyIGNvbXBsaWFudCBhbmQgYXZhaWxhYmxlIGluIDptb2Q6YGltcG9ydGxpYmAKKwogCiAuLiBjbGFzczo6IEltcExvYWRlcihmdWxsbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGV0YykKIAogICAgOnBlcDpgMzAyYCBMb2FkZXIgdGhhdCB3cmFwcyBQeXRob24ncyAiY2xhc3NpYyIgaW1wb3J0IGFsZ29yaXRobS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBlbXVsYXRpb24gaXMgbm8gbG9uZ2VyIG5lZWRlZCwgYXMgdGhlIHN0YW5kYXJkIGltcG9ydCBtZWNoYW5pc20KKyAgICAgIGlzIG5vdyBmdWxseSBQRVAgMzAyIGNvbXBsaWFudCBhbmQgYXZhaWxhYmxlIGluIDptb2Q6YGltcG9ydGxpYmAKKwogCiAuLiBmdW5jdGlvbjo6IGZpbmRfbG9hZGVyKGZ1bGxuYW1lKQogCi0gICBGaW5kIGEgOnBlcDpgMzAyYCAibG9hZGVyIiBvYmplY3QgZm9yICpmdWxsbmFtZSouCisgICBSZXRyaWV2ZSBhIDpwZXA6YDMwMmAgbW9kdWxlIGxvYWRlciBmb3IgdGhlIGdpdmVuICpmdWxsbmFtZSouCiAKLSAgIElmICpmdWxsbmFtZSogY29udGFpbnMgZG90cywgcGF0aCBtdXN0IGJlIHRoZSBjb250YWluaW5nIHBhY2thZ2UncwotICAgYGBfX3BhdGhfX2BgLiAgUmV0dXJucyBgYE5vbmVgYCBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBvciBpbXBvcnRlZC4KLSAgIFRoaXMgZnVuY3Rpb24gdXNlcyA6ZnVuYzpgaXRlcl9pbXBvcnRlcnNgLCBhbmQgaXMgdGh1cyBzdWJqZWN0IHRvIHRoZSBzYW1lCi0gICBsaW1pdGF0aW9ucyByZWdhcmRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc3BlY2lhbCBpbXBvcnQgbG9jYXRpb25zIHN1Y2ggYXMgdGhlCi0gICBXaW5kb3dzIHJlZ2lzdHJ5LgorICAgVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgIHRoYXQKKyAgIHNldHMgdGhlICpwYXRoKiBhcmd1bWVudCBjb3JyZWN0bHkgd2hlbiBzZWFyY2hpbmcgZm9yIHN1Ym1vZHVsZXMsIGFuZAorICAgYWxzbyBlbnN1cmVzIHBhcmVudCBwYWNrYWdlcyAoaWYgYW55KSBhcmUgaW1wb3J0ZWQgYmVmb3JlIHNlYXJjaGluZyBmb3IKKyAgIHN1Ym1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2ltcG9ydGVyKHBhdGhfaXRlbSkKQEAgLTgwLDEzICs5MSwxMyBAQAogICAgVGhlIHJldHVybmVkIGltcG9ydGVyIGlzIGNhY2hlZCBpbiA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGlmIGl0IHdhcwogICAgbmV3bHkgY3JlYXRlZCBieSBhIHBhdGggaG9vay4KIAotICAgSWYgdGhlcmUgaXMgbm8gaW1wb3J0ZXIsIGEgd3JhcHBlciBhcm91bmQgdGhlIGJhc2ljIGltcG9ydCBtYWNoaW5lcnkgaXMKLSAgIHJldHVybmVkLiAgVGhpcyB3cmFwcGVyIGlzIG5ldmVyIGluc2VydGVkIGludG8gdGhlIGltcG9ydGVyIGNhY2hlIChgYE5vbmVgYAotICAgaXMgaW5zZXJ0ZWQgaW5zdGVhZCkuCi0KICAgIFRoZSBjYWNoZSAob3IgcGFydCBvZiBpdCkgY2FuIGJlIGNsZWFyZWQgbWFudWFsbHkgaWYgYSByZXNjYW4gb2YKICAgIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXMgbmVjZXNzYXJ5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVXBkYXRlZCB0byBiZSBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHJlbHlpbmcKKyAgICAgIG9uIHRoZSBwYWNrYWdlIGludGVybmFsIFBFUCAzMDIgaW1wb3J0IGVtdWxhdGlvbi4KKwogCiAuLiBmdW5jdGlvbjo6IGdldF9sb2FkZXIobW9kdWxlX29yX25hbWUpCiAKQEAgLTEwMiw0NiArMTEzLDUyIEBACiAgICBsaW1pdGF0aW9ucyByZWdhcmRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc3BlY2lhbCBpbXBvcnQgbG9jYXRpb25zIHN1Y2ggYXMgdGhlCiAgICBXaW5kb3dzIHJlZ2lzdHJ5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVXBkYXRlZCB0byBiZSBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHJlbHlpbmcKKyAgICAgIG9uIHRoZSBwYWNrYWdlIGludGVybmFsIFBFUCAzMDIgaW1wb3J0IGVtdWxhdGlvbi4KKwogCiAuLiBmdW5jdGlvbjo6IGl0ZXJfaW1wb3J0ZXJzKGZ1bGxuYW1lPScnKQogCiAgICBZaWVsZCA6cGVwOmAzMDJgIGltcG9ydGVycyBmb3IgdGhlIGdpdmVuIG1vZHVsZSBuYW1lLgogCi0gICBJZiBmdWxsbmFtZSBjb250YWlucyBhICcuJywgdGhlIGltcG9ydGVycyB3aWxsIGJlIGZvciB0aGUgcGFja2FnZSBjb250YWluaW5nCi0gICBmdWxsbmFtZSwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBpbXBvcnRlcnMgZm9yIDpkYXRhOmBzeXMubWV0YV9wYXRoYCwKLSAgIDpkYXRhOmBzeXMucGF0aGAsIGFuZCBQeXRob24ncyAiY2xhc3NpYyIgaW1wb3J0IG1hY2hpbmVyeSwgaW4gdGhhdCBvcmRlci4gIElmCi0gICB0aGUgbmFtZWQgbW9kdWxlIGlzIGluIGEgcGFja2FnZSwgdGhhdCBwYWNrYWdlIGlzIGltcG9ydGVkIGFzIGEgc2lkZSBlZmZlY3QKLSAgIG9mIGludm9raW5nIHRoaXMgZnVuY3Rpb24uCisgICBJZiBmdWxsbmFtZSBjb250YWlucyBhICcuJywgdGhlIGltcG9ydGVycyB3aWxsIGJlIGZvciB0aGUgcGFja2FnZQorICAgY29udGFpbmluZyBmdWxsbmFtZSwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBhbGwgcmVnaXN0ZXJlZCB0b3AgbGV2ZWwKKyAgIGltcG9ydGVycyAoaS5lLiB0aG9zZSBvbiBib3RoIHN5cy5tZXRhX3BhdGggYW5kIHN5cy5wYXRoX2hvb2tzKS4KIAotICAgTm9uLTpwZXA6YDMwMmAgbWVjaGFuaXNtcyAoZS5nLiB0aGUgV2luZG93cyByZWdpc3RyeSkgdXNlZCBieSB0aGUgc3RhbmRhcmQKLSAgIGltcG9ydCBtYWNoaW5lcnkgdG8gZmluZCBmaWxlcyBpbiBhbHRlcm5hdGl2ZSBsb2NhdGlvbnMgYXJlIHBhcnRpYWxseQotICAgc3VwcG9ydGVkLCBidXQgYXJlIHNlYXJjaGVkICphZnRlciogOmRhdGE6YHN5cy5wYXRoYC4gIE5vcm1hbGx5LCB0aGVzZQotICAgbG9jYXRpb25zIGFyZSBzZWFyY2hlZCAqYmVmb3JlKiA6ZGF0YTpgc3lzLnBhdGhgLCBwcmV2ZW50aW5nIDpkYXRhOmBzeXMucGF0aGAKLSAgIGVudHJpZXMgZnJvbSBzaGFkb3dpbmcgdGhlbS4KKyAgIElmIHRoZSBuYW1lZCBtb2R1bGUgaXMgaW4gYSBwYWNrYWdlLCB0aGF0IHBhY2thZ2UgaXMgaW1wb3J0ZWQgYXMgYSBzaWRlCisgICBlZmZlY3Qgb2YgaW52b2tpbmcgdGhpcyBmdW5jdGlvbi4KIAotICAgRm9yIHRoaXMgdG8gY2F1c2UgYSB2aXNpYmxlIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3VyLCB0aGVyZSBtdXN0IGJlIGEgbW9kdWxlCi0gICBvciBwYWNrYWdlIG5hbWUgdGhhdCBpcyBhY2Nlc3NpYmxlIHZpYSBib3RoIDpkYXRhOmBzeXMucGF0aGAgYW5kIG9uZSBvZiB0aGUKLSAgIG5vbi06cGVwOmAzMDJgIGZpbGUgc3lzdGVtIG1lY2hhbmlzbXMuICBJbiB0aGlzIGNhc2UsIHRoZSBlbXVsYXRpb24gd2lsbCBmaW5kCi0gICB0aGUgZm9ybWVyIHZlcnNpb24sIHdoaWxlIHRoZSBidWlsdGluIGltcG9ydCBtZWNoYW5pc20gd2lsbCBmaW5kIHRoZSBsYXR0ZXIuCisgICBJZiBubyBtb2R1bGUgbmFtZSBpcyBzcGVjaWZpZWQsIGFsbCB0b3AgbGV2ZWwgaW1wb3J0ZXJzIGFyZSBwcm9kdWNlZC4KIAotICAgSXRlbXMgb2YgdGhlIGZvbGxvd2luZyB0eXBlcyBjYW4gYmUgYWZmZWN0ZWQgYnkgdGhpcyBkaXNjcmVwYW5jeToKLSAgIGBgaW1wLkNfRVhURU5TSU9OYGAsIGBgaW1wLlBZX1NPVVJDRWBgLCBgYGltcC5QWV9DT01QSUxFRGBgLAotICAgYGBpbXAuUEtHX0RJUkVDVE9SWWBgLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCiAKIAogLi4gZnVuY3Rpb246OiBpdGVyX21vZHVsZXMocGF0aD1Ob25lLCBwcmVmaXg9JycpCiAKLSAgIFlpZWxkcyBgYChtb2R1bGVfbG9hZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIHN1Ym1vZHVsZXMgb24gKnBhdGgqLCBvciwgaWYKKyAgIFlpZWxkcyBgYChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIHN1Ym1vZHVsZXMgb24gKnBhdGgqLCBvciwgaWYKICAgIHBhdGggaXMgYGBOb25lYGAsIGFsbCB0b3AtbGV2ZWwgbW9kdWxlcyBvbiBgYHN5cy5wYXRoYGAuCiAKICAgICpwYXRoKiBzaG91bGQgYmUgZWl0aGVyIGBgTm9uZWBgIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvciBtb2R1bGVzIGluLgogCiAgICAqcHJlZml4KiBpcyBhIHN0cmluZyB0byBvdXRwdXQgb24gdGhlIGZyb250IG9mIGV2ZXJ5IG1vZHVsZSBuYW1lIG9uIG91dHB1dC4KIAorICAgLi4gbm90ZTo6CisgICAgICBPbmx5IHdvcmtzIGZvciBhIDp0ZXJtOmBmaW5kZXJgIHdoaWNoIGRlZmluZXMgYW4gYGBpdGVyX21vZHVsZXMoKWBgCisgICAgICBtZXRob2QuIFRoaXMgaW50ZXJmYWNlIGlzIG5vbi1zdGFuZGFyZCwgc28gdGhlIG1vZHVsZSBhbHNvIHByb3ZpZGVzCisgICAgICBpbXBsZW1lbnRhdGlvbnMgZm9yIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyYCBhbmQKKyAgICAgIDpjbGFzczpgemlwaW1wb3J0LnppcGltcG9ydGVyYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiB3YWxrX3BhY2thZ2VzKHBhdGg9Tm9uZSwgcHJlZml4PScnLCBvbmVycm9yPU5vbmUpCiAKLSAgIFlpZWxkcyBgYChtb2R1bGVfbG9hZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkgb24KKyAgIFlpZWxkcyBgYChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkgb24KICAgICpwYXRoKiwgb3IsIGlmIHBhdGggaXMgYGBOb25lYGAsIGFsbCBhY2Nlc3NpYmxlIG1vZHVsZXMuCiAKICAgICpwYXRoKiBzaG91bGQgYmUgZWl0aGVyIGBgTm9uZWBgIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvciBtb2R1bGVzIGluLgpAQCAtMTY2LDYgKzE4MywxNiBAQAogICAgICAgIyBsaXN0IGFsbCBzdWJtb2R1bGVzIG9mIGN0eXBlcwogICAgICAgd2Fsa19wYWNrYWdlcyhjdHlwZXMuX19wYXRoX18sIGN0eXBlcy5fX25hbWVfXyArICcuJykKIAorICAgLi4gbm90ZTo6CisgICAgICBPbmx5IHdvcmtzIGZvciBhIDp0ZXJtOmBmaW5kZXJgIHdoaWNoIGRlZmluZXMgYW4gYGBpdGVyX21vZHVsZXMoKWBgCisgICAgICBtZXRob2QuIFRoaXMgaW50ZXJmYWNlIGlzIG5vbi1zdGFuZGFyZCwgc28gdGhlIG1vZHVsZSBhbHNvIHByb3ZpZGVzCisgICAgICBpbXBsZW1lbnRhdGlvbnMgZm9yIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyYCBhbmQKKyAgICAgIDpjbGFzczpgemlwaW1wb3J0LnppcGltcG9ydGVyYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBnZXRfZGF0YShwYWNrYWdlLCByZXNvdXJjZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0IGIvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0CmluZGV4IDE1N2FjM2EuLmE2YTk4ZjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QKQEAgLTMwLDggKzMwLDggQEAKICAgIHJldHVybmVkIGFzIHN0cmluZ3MuCiAKICAgIFZhbHVlcyB0aGF0IGNhbm5vdCBiZSBkZXRlcm1pbmVkIGFyZSByZXR1cm5lZCBhcyBnaXZlbiBieSB0aGUgcGFyYW1ldGVyIHByZXNldHMuCi0gICBJZiBiaXRzIGlzIGdpdmVuIGFzIGBgJydgYCwgdGhlIDpjOmZ1bmM6YHNpemVvZihwb2ludGVyKWAgKG9yCi0gICA6YzpmdW5jOmBzaXplb2YobG9uZylgIG9uIFB5dGhvbiB2ZXJzaW9uIDwgMS41LjIpIGlzIHVzZWQgYXMgaW5kaWNhdG9yIGZvciB0aGUKKyAgIElmIGJpdHMgaXMgZ2l2ZW4gYXMgYGAnJ2BgLCB0aGUgYGBzaXplb2YocG9pbnRlcilgYCAob3IKKyAgIGBgc2l6ZW9mKGxvbmcpYGAgb24gUHl0aG9uIHZlcnNpb24gPCAxLjUuMikgaXMgdXNlZCBhcyBpbmRpY2F0b3IgZm9yIHRoZQogICAgc3VwcG9ydGVkIHBvaW50ZXIgc2l6ZS4KIAogICAgVGhlIGZ1bmN0aW9uIHJlbGllcyBvbiB0aGUgc3lzdGVtJ3MgOmZpbGU6YGZpbGVgIGNvbW1hbmQgdG8gZG8gdGhlIGFjdHVhbCB3b3JrLgpAQCAtMTU4LDE0ICsxNTgsMjAgQEAKIAogLi4gZnVuY3Rpb246OiB1bmFtZSgpCiAKLSAgIEZhaXJseSBwb3J0YWJsZSB1bmFtZSBpbnRlcmZhY2UuIFJldHVybnMgYSB0dXBsZSBvZiBzdHJpbmdzIGBgKHN5c3RlbSwgbm9kZSwKLSAgIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUsIHByb2Nlc3NvcilgYCBpZGVudGlmeWluZyB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybS4KKyAgIEZhaXJseSBwb3J0YWJsZSB1bmFtZSBpbnRlcmZhY2UuIFJldHVybnMgYSA6ZnVuYzpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgCisgICBjb250YWluaW5nIHNpeCBhdHRyaWJ1dGVzOiA6YXR0cjpgc3lzdGVtYCwgOmF0dHI6YG5vZGVgLCA6YXR0cjpgcmVsZWFzZWAsCisgICA6YXR0cjpgdmVyc2lvbmAsIDphdHRyOmBtYWNoaW5lYCwgYW5kIDphdHRyOmBwcm9jZXNzb3JgLgogCi0gICBOb3RlIHRoYXQgdW5saWtlIHRoZSA6ZnVuYzpgb3MudW5hbWVgIGZ1bmN0aW9uIHRoaXMgYWxzbyByZXR1cm5zIHBvc3NpYmxlCi0gICBwcm9jZXNzb3IgaW5mb3JtYXRpb24gYXMgYWRkaXRpb25hbCB0dXBsZSBlbnRyeS4KKyAgIE5vdGUgdGhhdCB0aGlzIGFkZHMgYSBzaXh0aCBhdHRyaWJ1dGUgKDphdHRyOmBwcm9jZXNzb3JgKSBub3QgcHJlc2VudAorICAgaW4gdGhlIDpmdW5jOmBvcy51bmFtZWAgcmVzdWx0LiAgQWxzbywgdGhlIGF0dHJpYnV0ZSBuYW1lcyBhcmUgZGlmZmVyZW50CisgICBmb3IgdGhlIGZpcnN0IHR3byBhdHRyaWJ1dGVzOyA6ZnVuYzpgb3MudW5hbWVgIG5hbWVzIHRoZW0KKyAgIDphdHRyOmBzeXNuYW1lYCBhbmQgOmF0dHI6YG5vZGVuYW1lYC4KIAogICAgRW50cmllcyB3aGljaCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBhcmUgc2V0IHRvIGBgJydgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlc3VsdCBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0byBhIG5hbWVkdHVwbGUuCisKIAogSmF2YSBQbGF0Zm9ybQogLS0tLS0tLS0tLS0tLQpAQCAtMjE0LDYgKzIyMCwxMCBAQAogICAgcHJlZmVycmluZyA6ZnVuYzpgd2luMzJwaXBlLnBvcGVuYC4gIE9uIFdpbmRvd3MgTlQsIDpmdW5jOmB3aW4zMnBpcGUucG9wZW5gCiAgICBzaG91bGQgd29yazsgb24gV2luZG93cyA5eCBpdCBoYW5ncyBkdWUgdG8gYnVncyBpbiB0aGUgTVMgQyBsaWJyYXJ5LgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG9ic29sZXRlLiAgVXNlIHRoZSA6bW9kOmBzdWJwcm9jZXNzYCBtb2R1bGUuICBDaGVjaworICAgICAgZXNwZWNpYWxseSB0aGUgOnJlZjpgc3VicHJvY2Vzcy1yZXBsYWNlbWVudHNgIHNlY3Rpb24uCisKIAogTWFjIE9TIFBsYXRmb3JtCiAtLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CmluZGV4IDNhN2YxMzEuLjIzZGJkMWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdApAQCAtNDMsNiArNDMsMTIgQEAKIHVzZXMgdGhlIHN5c3RlbSBmdW5jdGlvbiA6ZnVuYzpgb3MudXJhbmRvbWAgdG8gZ2VuZXJhdGUgcmFuZG9tIG51bWJlcnMKIGZyb20gc291cmNlcyBwcm92aWRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KIAorLi4gd2FybmluZzo6CisKKyAgIFRoZSBnZW5lcmF0b3JzIG9mIHRoZSA6bW9kOmByYW5kb21gIG1vZHVsZSBzaG91bGQgbm90IGJlIHVzZWQgZm9yIHNlY3VyaXR5CisgICBwdXJwb3Nlcy4gVXNlIDpmdW5jOmBzc2wuUkFORF9ieXRlc2AgaWYgeW91IHJlcXVpcmUgYSBjcnlwdG9ncmFwaGljYWxseQorICAgc2VjdXJlIHBzZXVkb3JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgorCiAKIEJvb2trZWVwaW5nIGZ1bmN0aW9uczoKIApAQCAtMTQ0LDYgKzE1MCw5IEBACiAgICBhcmd1bWVudC4gIFRoaXMgaXMgZXNwZWNpYWxseSBmYXN0IGFuZCBzcGFjZSBlZmZpY2llbnQgZm9yIHNhbXBsaW5nIGZyb20gYSBsYXJnZQogICAgcG9wdWxhdGlvbjogIGBgc2FtcGxlKHJhbmdlKDEwMDAwMDAwKSwgNjApYGAuCiAKKyAgIElmIHRoZSBzYW1wbGUgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgcG9wdWxhdGlvbiBzaXplLCBhIDpleGM6YFZhbHVlRXJyb3JgCisgICBpcyByYWlzZWQuCisKIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGdlbmVyYXRlIHNwZWNpZmljIHJlYWwtdmFsdWVkIGRpc3RyaWJ1dGlvbnMuIEZ1bmN0aW9uCiBwYXJhbWV0ZXJzIGFyZSBuYW1lZCBhZnRlciB0aGUgY29ycmVzcG9uZGluZyB2YXJpYWJsZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbidzCiBlcXVhdGlvbiwgYXMgdXNlZCBpbiBjb21tb24gbWF0aGVtYXRpY2FsIHByYWN0aWNlOyBtb3N0IG9mIHRoZXNlIGVxdWF0aW9ucyBjYW4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JlLnJzdCBiL0RvYy9saWJyYXJ5L3JlLnJzdAppbmRleCA4Mzk3YWFkLi4wNzYyM2M5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmUucnN0CkBAIC00MTQsMTcgKzQxNCwyNCBAQAogYWNjZXB0ZWQgYnkgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXJzZXI6OgogCiAgICBcYSAgICAgIFxiICAgICAgXGYgICAgICBcbgotICAgXHIgICAgICBcdCAgICAgIFx2ICAgICAgXHgKLSAgIFxcCisgICBcciAgICAgIFx0ICAgICAgXHUgICAgICBcVQorICAgXHYgICAgICBceCAgICAgIFxcCiAKIChOb3RlIHRoYXQgYGBcYmBgIGlzIHVzZWQgdG8gcmVwcmVzZW50IHdvcmQgYm91bmRhcmllcywgYW5kIG1lYW5zICJiYWNrc3BhY2UiCiBvbmx5IGluc2lkZSBjaGFyYWN0ZXIgY2xhc3Nlcy4pCiAKK2BgJ1x1J2BgIGFuZCBgYCdcVSdgYCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBvbmx5IHJlY29nbml6ZWQgaW4gVW5pY29kZQorcGF0dGVybnMuICBJbiBieXRlcyBwYXR0ZXJucyB0aGV5IGFyZSBub3QgdHJlYXRlZCBzcGVjaWFsbHkuCisKIE9jdGFsIGVzY2FwZXMgYXJlIGluY2x1ZGVkIGluIGEgbGltaXRlZCBmb3JtLiAgSWYgdGhlIGZpcnN0IGRpZ2l0IGlzIGEgMCwgb3IgaWYKIHRoZXJlIGFyZSB0aHJlZSBvY3RhbCBkaWdpdHMsIGl0IGlzIGNvbnNpZGVyZWQgYW4gb2N0YWwgZXNjYXBlLiBPdGhlcndpc2UsIGl0IGlzCiBhIGdyb3VwIHJlZmVyZW5jZS4gIEFzIGZvciBzdHJpbmcgbGl0ZXJhbHMsIG9jdGFsIGVzY2FwZXMgYXJlIGFsd2F5cyBhdCBtb3N0CiB0aHJlZSBkaWdpdHMgaW4gbGVuZ3RoLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlIGBgJ1x1J2BgIGFuZCBgYCdcVSdgYCBlc2NhcGUgc2VxdWVuY2VzIGhhdmUgYmVlbiBhZGRlZC4KKworCiAKIC4uIF9jb250ZW50cy1vZi1tb2R1bGUtcmU6CiAKQEAgLTY4NCw5ICs2OTEsMTIgQEAKIAogLi4gZnVuY3Rpb246OiBlc2NhcGUoc3RyaW5nKQogCi0gICBSZXR1cm4gKnN0cmluZyogd2l0aCBhbGwgbm9uLWFscGhhbnVtZXJpY3MgYmFja3NsYXNoZWQ7IHRoaXMgaXMgdXNlZnVsIGlmIHlvdQotICAgd2FudCB0byBtYXRjaCBhbiBhcmJpdHJhcnkgbGl0ZXJhbCBzdHJpbmcgdGhhdCBtYXkgaGF2ZSByZWd1bGFyIGV4cHJlc3Npb24KLSAgIG1ldGFjaGFyYWN0ZXJzIGluIGl0LgorICAgRXNjYXBlIGFsbCB0aGUgY2hhcmFjdGVycyBpbiBwYXR0ZXJuIGV4Y2VwdCBBU0NJSSBsZXR0ZXJzLCBudW1iZXJzIGFuZCBgYCdfJ2BgLgorICAgVGhpcyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gbWF0Y2ggYW4gYXJiaXRyYXJ5IGxpdGVyYWwgc3RyaW5nIHRoYXQgbWF5CisgICBoYXZlIHJlZ3VsYXIgZXhwcmVzc2lvbiBtZXRhY2hhcmFjdGVycyBpbiBpdC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBgYCdfJ2BgIGNoYXJhY3RlciBpcyBubyBsb25nZXIgZXNjYXBlZC4KIAogCiAuLiBmdW5jdGlvbjo6IHB1cmdlKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdCBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdAppbmRleCBhYjU1MTk3Li4xMTM0NjE5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CkBAIC0xOTksNyArMTk5LDcgQEAKICAgIGhpc3RmaWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZXhwYW5kdXNlcigifiIpLCAiLnB5aGlzdCIpCiAgICB0cnk6CiAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoaGlzdGZpbGUpCi0gICBleGNlcHQgSU9FcnJvcjoKKyAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICBwYXNzCiAgICBpbXBvcnQgYXRleGl0CiAgICBhdGV4aXQucmVnaXN0ZXIocmVhZGxpbmUud3JpdGVfaGlzdG9yeV9maWxlLCBoaXN0ZmlsZSkKQEAgLTIyNCw3ICsyMjQsNyBAQAogICAgICAgICAgICBpZiBoYXNhdHRyKHJlYWRsaW5lLCAicmVhZF9oaXN0b3J5X2ZpbGUiKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICByZWFkbGluZS5yZWFkX2hpc3RvcnlfZmlsZShoaXN0ZmlsZSkKLSAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIGF0ZXhpdC5yZWdpc3RlcihzZWxmLnNhdmVfaGlzdG9yeSwgaGlzdGZpbGUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Jlc291cmNlLnJzdCBiL0RvYy9saWJyYXJ5L3Jlc291cmNlLnJzdAppbmRleCBjMTZiMDEzLi4wM2E3Y2I1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZXNvdXJjZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmVzb3VyY2UucnN0CkBAIC0xNCwxMyArMTQsMTUgQEAKIFN5bWJvbGljIGNvbnN0YW50cyBhcmUgdXNlZCB0byBzcGVjaWZ5IHBhcnRpY3VsYXIgc3lzdGVtIHJlc291cmNlcyBhbmQgdG8KIHJlcXVlc3QgdXNhZ2UgaW5mb3JtYXRpb24gYWJvdXQgZWl0aGVyIHRoZSBjdXJyZW50IHByb2Nlc3Mgb3IgaXRzIGNoaWxkcmVuLgogCi1BIHNpbmdsZSBleGNlcHRpb24gaXMgZGVmaW5lZCBmb3IgZXJyb3JzOgorQW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIG9uIHN5c2NhbGwgZmFpbHVyZS4KIAogCiAuLiBleGNlcHRpb246OiBlcnJvcgogCi0gICBUaGUgZnVuY3Rpb25zIGRlc2NyaWJlZCBiZWxvdyBtYXkgcmFpc2UgdGhpcyBlcnJvciBpZiB0aGUgdW5kZXJseWluZyBzeXN0ZW0gY2FsbAotICAgZmFpbHVyZXMgdW5leHBlY3RlZGx5LgorICAgQSBkZXByZWNhdGVkIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgRm9sbG93aW5nIDpwZXA6YDMxNTFgLCB0aGlzIGNsYXNzIHdhcyBtYWRlIGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIFJlc291cmNlIExpbWl0cwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2NoZWQucnN0IGIvRG9jL2xpYnJhcnkvc2NoZWQucnN0CmluZGV4IDAwMGRiYTAuLmQ2Yzg2YzcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NjaGVkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zY2hlZC5yc3QKQEAgLTE0LDcgKzE0LDcgQEAKIFRoZSA6bW9kOmBzY2hlZGAgbW9kdWxlIGRlZmluZXMgYSBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIGEgZ2VuZXJhbCBwdXJwb3NlIGV2ZW50CiBzY2hlZHVsZXI6CiAKLS4uIGNsYXNzOjogc2NoZWR1bGVyKHRpbWVmdW5jLCBkZWxheWZ1bmMpCisuLiBjbGFzczo6IHNjaGVkdWxlcih0aW1lZnVuYz10aW1lLnRpbWUsIGRlbGF5ZnVuYz10aW1lLnNsZWVwKQogCiAgICBUaGUgOmNsYXNzOmBzY2hlZHVsZXJgIGNsYXNzIGRlZmluZXMgYSBnZW5lcmljIGludGVyZmFjZSB0byBzY2hlZHVsaW5nIGV2ZW50cy4KICAgIEl0IG5lZWRzIHR3byBmdW5jdGlvbnMgdG8gYWN0dWFsbHkgZGVhbCB3aXRoIHRoZSAib3V0c2lkZSB3b3JsZCIgLS0tICp0aW1lZnVuYyoKQEAgLTI1LDYgKzI1LDEyIEBACiAgICBldmVudCBpcyBydW4gdG8gYWxsb3cgb3RoZXIgdGhyZWFkcyBhbiBvcHBvcnR1bml0eSB0byBydW4gaW4gbXVsdGktdGhyZWFkZWQKICAgIGFwcGxpY2F0aW9ucy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lZnVuYyogYW5kICpkZWxheWZ1bmMqIHBhcmFtZXRlcnMgYXJlIG9wdGlvbmFsLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpjbGFzczpgc2NoZWR1bGVyYCBjbGFzcyBjYW4gYmUgc2FmZWx5IHVzZWQgaW4gbXVsdGktdGhyZWFkZWQKKyAgICAgIGVudmlyb25tZW50cy4KKwogRXhhbXBsZTo6CiAKICAgID4+PiBpbXBvcnQgc2NoZWQsIHRpbWUKQEAgLTQ0LDMzICs1MCw2IEBACiAgICBGcm9tIHByaW50X3RpbWUgOTMwMzQzNzAwLjI3MwogICAgOTMwMzQzNzAwLjI3NgogCi1JbiBtdWx0aS10aHJlYWRlZCBlbnZpcm9ubWVudHMsIHRoZSA6Y2xhc3M6YHNjaGVkdWxlcmAgY2xhc3MgaGFzIGxpbWl0YXRpb25zCi13aXRoIHJlc3BlY3QgdG8gdGhyZWFkLXNhZmV0eSwgaW5hYmlsaXR5IHRvIGluc2VydCBhIG5ldyB0YXNrIGJlZm9yZQotdGhlIG9uZSBjdXJyZW50bHkgcGVuZGluZyBpbiBhIHJ1bm5pbmcgc2NoZWR1bGVyLCBhbmQgaG9sZGluZyB1cCB0aGUgbWFpbgotdGhyZWFkIHVudGlsIHRoZSBldmVudCBxdWV1ZSBpcyBlbXB0eS4gIEluc3RlYWQsIHRoZSBwcmVmZXJyZWQgYXBwcm9hY2gKLWlzIHRvIHVzZSB0aGUgOmNsYXNzOmB0aHJlYWRpbmcuVGltZXJgIGNsYXNzIGluc3RlYWQuCi0KLUV4YW1wbGU6OgotCi0gICAgPj4+IGltcG9ydCB0aW1lCi0gICAgPj4+IGZyb20gdGhyZWFkaW5nIGltcG9ydCBUaW1lcgotICAgID4+PiBkZWYgcHJpbnRfdGltZSgpOgotICAgIC4uLiAgICAgcHJpbnQoIkZyb20gcHJpbnRfdGltZSIsIHRpbWUudGltZSgpKQotICAgIC4uLgotICAgID4+PiBkZWYgcHJpbnRfc29tZV90aW1lcygpOgotICAgIC4uLiAgICAgcHJpbnQodGltZS50aW1lKCkpCi0gICAgLi4uICAgICBUaW1lcig1LCBwcmludF90aW1lLCAoKSkuc3RhcnQoKQotICAgIC4uLiAgICAgVGltZXIoMTAsIHByaW50X3RpbWUsICgpKS5zdGFydCgpCi0gICAgLi4uICAgICB0aW1lLnNsZWVwKDExKSAgIyBzbGVlcCB3aGlsZSB0aW1lLWRlbGF5IGV2ZW50cyBleGVjdXRlCi0gICAgLi4uICAgICBwcmludCh0aW1lLnRpbWUoKSkKLSAgICAuLi4KLSAgICA+Pj4gcHJpbnRfc29tZV90aW1lcygpCi0gICAgOTMwMzQzNjkwLjI1NwotICAgIEZyb20gcHJpbnRfdGltZSA5MzAzNDM2OTUuMjc0Ci0gICAgRnJvbSBwcmludF90aW1lIDkzMDM0MzcwMC4yNzMKLSAgICA5MzAzNDM3MDEuMzAxCi0KLQogLi4gX3NjaGVkdWxlci1vYmplY3RzOgogCiBTY2hlZHVsZXIgT2JqZWN0cwpAQCAtNzksMjYgKzU4LDM4IEBACiA6Y2xhc3M6YHNjaGVkdWxlcmAgaW5zdGFuY2VzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCiAKLS4uIG1ldGhvZDo6IHNjaGVkdWxlci5lbnRlcmFicyh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCkKKy4uIG1ldGhvZDo6IHNjaGVkdWxlci5lbnRlcmFicyh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudD1bXSwga3dhcmdzPXt9KQogCiAgICBTY2hlZHVsZSBhIG5ldyBldmVudC4gVGhlICp0aW1lKiBhcmd1bWVudCBzaG91bGQgYmUgYSBudW1lcmljIHR5cGUgY29tcGF0aWJsZQogICAgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSAqdGltZWZ1bmMqIGZ1bmN0aW9uIHBhc3NlZCAgdG8gdGhlIGNvbnN0cnVjdG9yLgogICAgRXZlbnRzIHNjaGVkdWxlZCBmb3IgdGhlIHNhbWUgKnRpbWUqIHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIG9yZGVyIG9mIHRoZWlyCiAgICAqcHJpb3JpdHkqLgogCi0gICBFeGVjdXRpbmcgdGhlIGV2ZW50IG1lYW5zIGV4ZWN1dGluZyBgYGFjdGlvbigqYXJndW1lbnQpYGAuICAqYXJndW1lbnQqIG11c3QgYmUgYQotICAgc2VxdWVuY2UgaG9sZGluZyB0aGUgcGFyYW1ldGVycyBmb3IgKmFjdGlvbiouCisgICBFeGVjdXRpbmcgdGhlIGV2ZW50IG1lYW5zIGV4ZWN1dGluZyBgYGFjdGlvbigqYXJndW1lbnQsICoqa3dhcmdzKWBgLgorICAgKmFyZ3VtZW50KiBtdXN0IGJlIGEgc2VxdWVuY2UgaG9sZGluZyB0aGUgcGFyYW1ldGVycyBmb3IgKmFjdGlvbiouCisgICAqa3dhcmdzKiBtdXN0IGJlIGEgZGljdGlvbmFyeSBob2xkaW5nIHRoZSBrZXl3b3JkIHBhcmFtZXRlcnMgZm9yICphY3Rpb24qLgogCiAgICBSZXR1cm4gdmFsdWUgaXMgYW4gZXZlbnQgd2hpY2ggbWF5IGJlIHVzZWQgZm9yIGxhdGVyIGNhbmNlbGxhdGlvbiBvZiB0aGUgZXZlbnQKICAgIChzZWUgOm1ldGg6YGNhbmNlbGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKmFyZ3VtZW50KiBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuCiAKLS4uIG1ldGhvZDo6IHNjaGVkdWxlci5lbnRlcihkZWxheSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgICprd2FyZ3MqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisKKworLi4gbWV0aG9kOjogc2NoZWR1bGVyLmVudGVyKGRlbGF5LCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudD1bXSwga3dhcmdzPXt9KQogCiAgICBTY2hlZHVsZSBhbiBldmVudCBmb3IgKmRlbGF5KiBtb3JlIHRpbWUgdW5pdHMuIE90aGVyIHRoYW4gdGhlIHJlbGF0aXZlIHRpbWUsIHRoZQogICAgb3RoZXIgYXJndW1lbnRzLCB0aGUgZWZmZWN0IGFuZCB0aGUgcmV0dXJuIHZhbHVlIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBmb3IKICAgIDptZXRoOmBlbnRlcmFic2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqYXJndW1lbnQqIHBhcmFtZXRlciBpcyBvcHRpb25hbC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICAqa3dhcmdzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAuLiBtZXRob2Q6OiBzY2hlZHVsZXIuY2FuY2VsKGV2ZW50KQogCkBAIC0xMTEsMTIgKzEwMiwxNiBAQAogICAgUmV0dXJuIHRydWUgaWYgdGhlIGV2ZW50IHF1ZXVlIGlzIGVtcHR5LgogCiAKLS4uIG1ldGhvZDo6IHNjaGVkdWxlci5ydW4oKQorLi4gbWV0aG9kOjogc2NoZWR1bGVyLnJ1bihibG9ja2luZz1UcnVlKQogCi0gICBSdW4gYWxsIHNjaGVkdWxlZCBldmVudHMuIFRoaXMgZnVuY3Rpb24gd2lsbCB3YWl0ICAodXNpbmcgdGhlIDpmdW5jOmBkZWxheWZ1bmNgCisgICBSdW4gYWxsIHNjaGVkdWxlZCBldmVudHMuIFRoaXMgbWV0aG9kIHdpbGwgd2FpdCAgKHVzaW5nIHRoZSA6ZnVuYzpgZGVsYXlmdW5jYAogICAgZnVuY3Rpb24gcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvcikgZm9yIHRoZSBuZXh0IGV2ZW50LCB0aGVuIGV4ZWN1dGUgaXQgYW5kIHNvCiAgICBvbiB1bnRpbCB0aGVyZSBhcmUgbm8gbW9yZSBzY2hlZHVsZWQgZXZlbnRzLgogCisgICBJZiAqYmxvY2tpbmcqIGlzIEZhbHNlIGV4ZWN1dGVzIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0byBleHBpcmUgc29vbmVzdAorICAgKGlmIGFueSkgYW5kIHRoZW4gcmV0dXJuIHRoZSBkZWFkbGluZSBvZiB0aGUgbmV4dCBzY2hlZHVsZWQgY2FsbCBpbiB0aGUKKyAgIHNjaGVkdWxlciAoaWYgYW55KS4KKwogICAgRWl0aGVyICphY3Rpb24qIG9yICpkZWxheWZ1bmMqIGNhbiByYWlzZSBhbiBleGNlcHRpb24uICBJbiBlaXRoZXIgY2FzZSwgdGhlCiAgICBzY2hlZHVsZXIgd2lsbCBtYWludGFpbiBhIGNvbnNpc3RlbnQgc3RhdGUgYW5kIHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uLiAgSWYgYW4KICAgIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkgKmFjdGlvbiosIHRoZSBldmVudCB3aWxsIG5vdCBiZSBhdHRlbXB0ZWQgaW4gZnV0dXJlIGNhbGxzCkBAIC0xMjcsNiArMTIyLDkgQEAKICAgIHRoZSBjYWxsaW5nIGNvZGUgaXMgcmVzcG9uc2libGUgZm9yIGNhbmNlbGluZyAgZXZlbnRzIHdoaWNoIGFyZSBubyBsb25nZXIKICAgIHBlcnRpbmVudC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICAqYmxvY2tpbmcqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisKIC4uIGF0dHJpYnV0ZTo6IHNjaGVkdWxlci5xdWV1ZQogCiAgICBSZWFkLW9ubHkgYXR0cmlidXRlIHJldHVybmluZyBhIGxpc3Qgb2YgdXBjb21pbmcgZXZlbnRzIGluIHRoZSBvcmRlciB0aGV5CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0IGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAppbmRleCBhNDUwZWMyLi40ZTYwZjRhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKQEAgLTYsNyArNiw4IEBACiAKIAogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSA6YzpmdW5jOmBzZWxlY3RgIGFuZCA6YzpmdW5jOmBwb2xsYCBmdW5jdGlvbnMKLWF2YWlsYWJsZSBpbiBtb3N0IG9wZXJhdGluZyBzeXN0ZW1zLCA6YzpmdW5jOmBlcG9sbGAgYXZhaWxhYmxlIG9uIExpbnV4IDIuNSsgYW5kCithdmFpbGFibGUgaW4gbW9zdCBvcGVyYXRpbmcgc3lzdGVtcywgOmM6ZnVuYzpgZGV2cG9sbGAgYXZhaWxhYmxlIG9uCitTb2xhcmlzIGFuZCBkZXJpdmF0aXZlcywgOmM6ZnVuYzpgZXBvbGxgIGF2YWlsYWJsZSBvbiBMaW51eCAyLjUrIGFuZAogOmM6ZnVuYzpga3F1ZXVlYCBhdmFpbGFibGUgb24gbW9zdCBCU0QuCiBOb3RlIHRoYXQgb24gV2luZG93cywgaXQgb25seSB3b3JrcyBmb3Igc29ja2V0czsgb24gb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMsCiBpdCBhbHNvIHdvcmtzIGZvciBvdGhlciBmaWxlIHR5cGVzIChpbiBwYXJ0aWN1bGFyLCBvbiBVbml4LCBpdCB3b3JrcyBvbiBwaXBlcykuCkBAIC0xOCwxNyArMTksMzggQEAKIAogLi4gZXhjZXB0aW9uOjogZXJyb3IKIAotICAgVGhlIGV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMuICBUaGUgYWNjb21wYW55aW5nIHZhbHVlIGlzIGEgcGFpcgotICAgY29udGFpbmluZyB0aGUgbnVtZXJpYyBlcnJvciBjb2RlIGZyb20gOmM6ZGF0YTpgZXJybm9gIGFuZCB0aGUgY29ycmVzcG9uZGluZwotICAgc3RyaW5nLCBhcyB3b3VsZCBiZSBwcmludGVkIGJ5IHRoZSBDIGZ1bmN0aW9uIDpjOmZ1bmM6YHBlcnJvcmAuCisgICBBIGRlcHJlY2F0ZWQgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBGb2xsb3dpbmcgOnBlcDpgMzE1MWAsIHRoaXMgY2xhc3Mgd2FzIG1hZGUgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIAotLi4gZnVuY3Rpb246OiBlcG9sbChzaXplaGludD0tMSkKKy4uIGZ1bmN0aW9uOjogZGV2cG9sbCgpCiAKLSAgIChPbmx5IHN1cHBvcnRlZCBvbiBMaW51eCAyLjUuNDQgYW5kIG5ld2VyLikgIFJldHVybnMgYW4gZWRnZSBwb2xsaW5nIG9iamVjdCwKLSAgIHdoaWNoIGNhbiBiZSB1c2VkIGFzIEVkZ2Ugb3IgTGV2ZWwgVHJpZ2dlcmVkIGludGVyZmFjZSBmb3IgSS9PIGV2ZW50czsgc2VlCi0gICBzZWN0aW9uIDpyZWY6YGVwb2xsLW9iamVjdHNgIGJlbG93IGZvciB0aGUgbWV0aG9kcyBzdXBwb3J0ZWQgYnkgZXBvbGxpbmcKLSAgIG9iamVjdHMuCisgICAoT25seSBzdXBwb3J0ZWQgb24gU29sYXJpcyBhbmQgZGVyaXZhdGl2ZXMuKSAgUmV0dXJucyBhIGBgL2Rldi9wb2xsYGAKKyAgIHBvbGxpbmcgb2JqZWN0OyBzZWUgc2VjdGlvbiA6cmVmOmBkZXZwb2xsLW9iamVjdHNgIGJlbG93IGZvciB0aGUKKyAgIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IGRldnBvbGwgb2JqZWN0cy4KKworICAgOmM6ZnVuYzpgZGV2cG9sbGAgb2JqZWN0cyBhcmUgbGlua2VkIHRvIHRoZSBudW1iZXIgb2YgZmlsZQorICAgZGVzY3JpcHRvcnMgYWxsb3dlZCBhdCB0aGUgdGltZSBvZiBpbnN0YW50aWF0aW9uLiBJZiB5b3VyIHByb2dyYW0KKyAgIHJlZHVjZXMgdGhpcyB2YWx1ZSwgOmM6ZnVuYzpgZGV2cG9sbGAgd2lsbCBmYWlsLiBJZiB5b3VyIHByb2dyYW0KKyAgIGluY3JlYXNlcyB0aGlzIHZhbHVlLCA6YzpmdW5jOmBkZXZwb2xsYCBtYXkgcmV0dXJuIGFuCisgICBpbmNvbXBsZXRlIGxpc3Qgb2YgYWN0aXZlIGZpbGUgZGVzY3JpcHRvcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IGVwb2xsKHNpemVoaW50PS0xLCBmbGFncz0wKQorCisgICAoT25seSBzdXBwb3J0ZWQgb24gTGludXggMi41LjQ0IGFuZCBuZXdlci4pIFJldHVybiBhbiBlZGdlIHBvbGxpbmcgb2JqZWN0LAorICAgd2hpY2ggY2FuIGJlIHVzZWQgYXMgRWRnZSBvciBMZXZlbCBUcmlnZ2VyZWQgaW50ZXJmYWNlIGZvciBJL08KKyAgIGV2ZW50cy4gKnNpemVoaW50KiBpcyBkZXByZWNhdGVkIGFuZCBjb21wbGV0ZWx5IGlnbm9yZWQuICpmbGFncyogY2FuIGJlIHNldAorICAgdG8gOmNvbnN0OmBFUE9MTF9DTE9FWEVDYCwgd2hpY2ggY2F1c2VzIHRoZSBlcG9sbCBkZXNjcmlwdG9yIHRvIGJlIGNsb3NlZAorICAgYXV0b21hdGljYWxseSB3aGVuIDpmdW5jOmBvcy5leGVjdmVgIGlzIGNhbGxlZC4gU2VlIHNlY3Rpb24KKyAgIDpyZWY6YGVwb2xsLW9iamVjdHNgIGJlbG93IGZvciB0aGUgbWV0aG9kcyBzdXBwb3J0ZWQgYnkgZXBvbGxpbmcgb2JqZWN0cy4KKworCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpmbGFncyogcGFyYW1ldGVyLgogCiAKIC4uIGZ1bmN0aW9uOjogcG9sbCgpCkBAIC0xMDYsNiArMTI4LDc0IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBfZGV2cG9sbC1vYmplY3RzOgorCitgYC9kZXYvcG9sbGBgIFBvbGxpbmcgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICBodHRwOi8vZGV2ZWxvcGVycy5zdW4uY29tL3NvbGFyaXMvYXJ0aWNsZXMvdXNpbmdfZGV2cG9sbC5odG1sCisgICBodHRwOi8vZGV2ZWxvcGVycy5zdW4uY29tL3NvbGFyaXMvYXJ0aWNsZXMvcG9sbGluZ19lZmZpY2llbnQuaHRtbAorCitTb2xhcmlzIGFuZCBkZXJpdmF0aXZlcyBoYXZlIGBgL2Rldi9wb2xsYGAuIFdoaWxlIDpjOmZ1bmM6YHNlbGVjdGAgaXMKK08oaGlnaGVzdCBmaWxlIGRlc2NyaXB0b3IpIGFuZCA6YzpmdW5jOmBwb2xsYCBpcyBPKG51bWJlciBvZiBmaWxlCitkZXNjcmlwdG9ycyksIGBgL2Rldi9wb2xsYGAgaXMgTyhhY3RpdmUgZmlsZSBkZXNjcmlwdG9ycykuCisKK2BgL2Rldi9wb2xsYGAgYmVoYXZpb3VyIGlzIHZlcnkgY2xvc2UgdG8gdGhlIHN0YW5kYXJkIDpjOmZ1bmM6YHBvbGxgCitvYmplY3QuCisKKworLi4gbWV0aG9kOjogZGV2cG9sbC5yZWdpc3RlcihmZFssIGV2ZW50bWFza10pCisKKyAgIFJlZ2lzdGVyIGEgZmlsZSBkZXNjcmlwdG9yIHdpdGggdGhlIHBvbGxpbmcgb2JqZWN0LiAgRnV0dXJlIGNhbGxzIHRvIHRoZQorICAgOm1ldGg6YHBvbGxgIG1ldGhvZCB3aWxsIHRoZW4gY2hlY2sgd2hldGhlciB0aGUgZmlsZSBkZXNjcmlwdG9yIGhhcyBhbnkgcGVuZGluZworICAgSS9PIGV2ZW50cy4gICpmZCogY2FuIGJlIGVpdGhlciBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3Qgd2l0aCBhIDptZXRoOmBmaWxlbm9gCisgICBtZXRob2QgdGhhdCByZXR1cm5zIGFuIGludGVnZXIuICBGaWxlIG9iamVjdHMgaW1wbGVtZW50IDptZXRoOmBmaWxlbm9gLCBzbyB0aGV5CisgICBjYW4gYWxzbyBiZSB1c2VkIGFzIHRoZSBhcmd1bWVudC4KKworICAgKmV2ZW50bWFzayogaXMgYW4gb3B0aW9uYWwgYml0bWFzayBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIGV2ZW50cyB5b3Ugd2FudCB0bworICAgY2hlY2sgZm9yLiBUaGUgY29uc3RhbnRzIGFyZSB0aGUgc2FtZSB0aGF0IHdpdGggOmM6ZnVuYzpgcG9sbGAKKyAgIG9iamVjdC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgY29uc3RhbnRzIDpjb25zdDpgUE9MTElOYCwKKyAgIDpjb25zdDpgUE9MTFBSSWAsIGFuZCA6Y29uc3Q6YFBPTExPVVRgLgorCisgICAuLiB3YXJuaW5nOjoKKworICAgICAgUmVnaXN0ZXJpbmcgYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCdzIGFscmVhZHkgcmVnaXN0ZXJlZCBpcyBub3QgYW4KKyAgICAgIGVycm9yLCBidXQgdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuIFRoZSBhcHByb3BpYXRlIGFjdGlvbiBpcyB0bworICAgICAgdW5yZWdpc3RlciBvciBtb2RpZnkgaXQgZmlyc3QuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRpZmZlcmVuY2UKKyAgICAgIGNvbXBhcmVkIHdpdGggOmM6ZnVuYzpgcG9sbGAuCisKKworLi4gbWV0aG9kOjogZGV2cG9sbC5tb2RpZnkoZmRbLCBldmVudG1hc2tdKQorCisgICBUaGlzIG1ldGhvZCBkb2VzIGFuIDptZXRoOmB1bnJlZ2lzdGVyYCBmb2xsb3dlZCBieSBhCisgICA6bWV0aDpgcmVnaXN0ZXJgLiBJdCBpcyAoYSBiaXQpIG1vcmUgZWZmaWNpZW50IHRoYXQgZG9pbmcgdGhlIHNhbWUKKyAgIGV4cGxpY2l0bHkuCisKKworLi4gbWV0aG9kOjogZGV2cG9sbC51bnJlZ2lzdGVyKGZkKQorCisgICBSZW1vdmUgYSBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdHJhY2tlZCBieSBhIHBvbGxpbmcgb2JqZWN0LiAgSnVzdCBsaWtlIHRoZQorICAgOm1ldGg6YHJlZ2lzdGVyYCBtZXRob2QsICpmZCogY2FuIGJlIGFuIGludGVnZXIgb3IgYW4gb2JqZWN0IHdpdGggYQorICAgOm1ldGg6YGZpbGVub2AgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBpbnRlZ2VyLgorCisgICBBdHRlbXB0aW5nIHRvIHJlbW92ZSBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHdhcyBuZXZlciByZWdpc3RlcmVkIGlzCisgICBzYWZlbHkgaWdub3JlZC4KKworCisuLiBtZXRob2Q6OiBkZXZwb2xsLnBvbGwoW3RpbWVvdXRdKQorCisgICBQb2xscyB0aGUgc2V0IG9mIHJlZ2lzdGVyZWQgZmlsZSBkZXNjcmlwdG9ycywgYW5kIHJldHVybnMgYSBwb3NzaWJseS1lbXB0eSBsaXN0CisgICBjb250YWluaW5nIGBgKGZkLCBldmVudClgYCAyLXR1cGxlcyBmb3IgdGhlIGRlc2NyaXB0b3JzIHRoYXQgaGF2ZSBldmVudHMgb3IKKyAgIGVycm9ycyB0byByZXBvcnQuICpmZCogaXMgdGhlIGZpbGUgZGVzY3JpcHRvciwgYW5kICpldmVudCogaXMgYSBiaXRtYXNrIHdpdGgKKyAgIGJpdHMgc2V0IGZvciB0aGUgcmVwb3J0ZWQgZXZlbnRzIGZvciB0aGF0IGRlc2NyaXB0b3IgLS0tIDpjb25zdDpgUE9MTElOYCBmb3IKKyAgIHdhaXRpbmcgaW5wdXQsIDpjb25zdDpgUE9MTE9VVGAgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZGVzY3JpcHRvciBjYW4gYmUgd3JpdHRlbgorICAgdG8sIGFuZCBzbyBmb3J0aC4gQW4gZW1wdHkgbGlzdCBpbmRpY2F0ZXMgdGhhdCB0aGUgY2FsbCB0aW1lZCBvdXQgYW5kIG5vIGZpbGUKKyAgIGRlc2NyaXB0b3JzIGhhZCBhbnkgZXZlbnRzIHRvIHJlcG9ydC4gSWYgKnRpbWVvdXQqIGlzIGdpdmVuLCBpdCBzcGVjaWZpZXMgdGhlCisgICBsZW5ndGggb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgd2hpY2ggdGhlIHN5c3RlbSB3aWxsIHdhaXQgZm9yIGV2ZW50cyBiZWZvcmUKKyAgIHJldHVybmluZy4gSWYgKnRpbWVvdXQqIGlzIG9taXR0ZWQsIC0xLCBvciA6Y29uc3Q6YE5vbmVgLCB0aGUgY2FsbCB3aWxsCisgICBibG9jayB1bnRpbCB0aGVyZSBpcyBhbiBldmVudCBmb3IgdGhpcyBwb2xsIG9iamVjdC4KKworCiAuLiBfZXBvbGwtb2JqZWN0czoKIAogRWRnZSBhbmQgTGV2ZWwgVHJpZ2dlciBQb2xsaW5nIChlcG9sbCkgT2JqZWN0cwpAQCAtMTY1LDExICsyNTUsNiBAQAogCiAgICBSZWdpc3RlciBhIGZkIGRlc2NyaXB0b3Igd2l0aCB0aGUgZXBvbGwgb2JqZWN0LgogCi0gICAuLiBub3RlOjoKLQotICAgICBSZWdpc3RlcmluZyBhIGZpbGUgZGVzY3JpcHRvciB0aGF0J3MgYWxyZWFkeSByZWdpc3RlcmVkIHJhaXNlcyBhbgotICAgICBJT0Vycm9yIC0tIGNvbnRyYXJ5IHRvIDpyZWY6YHBvbGwtb2JqZWN0c2AncyByZWdpc3Rlci4KLQogCiAuLiBtZXRob2Q6OiBlcG9sbC5tb2RpZnkoZmQsIGV2ZW50bWFzaykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2hsZXgucnN0IGIvRG9jL2xpYnJhcnkvc2hsZXgucnN0CmluZGV4IDAxMTNmYjcuLjk0MWUwOTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NobGV4LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaGxleC5yc3QKQEAgLTM0LDYgKzM0LDQwIEBACiAgICAgICBwYXNzaW5nIGBgTm9uZWBgIGZvciAqcyogd2lsbCByZWFkIHRoZSBzdHJpbmcgdG8gc3BsaXQgZnJvbSBzdGFuZGFyZAogICAgICAgaW5wdXQuCiAKKworLi4gZnVuY3Rpb246OiBxdW90ZShzKQorCisgICBSZXR1cm4gYSBzaGVsbC1lc2NhcGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyAqcyouICBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYQorICAgc3RyaW5nIHRoYXQgY2FuIHNhZmVseSBiZSB1c2VkIGFzIG9uZSB0b2tlbiBpbiBhIHNoZWxsIGNvbW1hbmQgbGluZSwgZm9yCisgICBjYXNlcyB3aGVyZSB5b3UgY2Fubm90IHVzZSBhIGxpc3QuCisKKyAgIFRoaXMgaWRpb20gd291bGQgYmUgdW5zYWZlOjoKKworICAgICAgPj4+IGZpbGVuYW1lID0gJ3NvbWVmaWxlOyBybSAtcmYgficKKyAgICAgID4+PiBjb21tYW5kID0gJ2xzIC1sIHt9Jy5mb3JtYXQoZmlsZW5hbWUpCisgICAgICA+Pj4gcHJpbnQoY29tbWFuZCkgICMgZXhlY3V0ZWQgYnkgYSBzaGVsbDogYm9vbSEKKyAgICAgIGxzIC1sIHNvbWVmaWxlOyBybSAtcmYgfgorCisgICA6ZnVuYzpgcXVvdGVgIGxldHMgeW91IHBsdWcgdGhlIHNlY3VyaXR5IGhvbGU6OgorCisgICAgICA+Pj4gY29tbWFuZCA9ICdscyAtbCB7fScuZm9ybWF0KHF1b3RlKGZpbGVuYW1lKSkKKyAgICAgID4+PiBwcmludChjb21tYW5kKQorICAgICAgbHMgLWwgJ3NvbWVmaWxlOyBybSAtcmYgficKKyAgICAgID4+PiByZW1vdGVfY29tbWFuZCA9ICdzc2ggaG9tZSB7fScuZm9ybWF0KHF1b3RlKGNvbW1hbmQpKQorICAgICAgPj4+IHByaW50KHJlbW90ZV9jb21tYW5kKQorICAgICAgc3NoIGhvbWUgJ2xzIC1sICciJyInc29tZWZpbGU7IHJtIC1yZiB+JyInIicnCisKKyAgIFRoZSBxdW90aW5nIGlzIGNvbXBhdGlibGUgd2l0aCBVTklYIHNoZWxscyBhbmQgd2l0aCA6ZnVuYzpgc3BsaXRgOgorCisgICAgICA+Pj4gcmVtb3RlX2NvbW1hbmQgPSBzcGxpdChyZW1vdGVfY29tbWFuZCkKKyAgICAgID4+PiByZW1vdGVfY29tbWFuZAorICAgICAgWydzc2gnLCAnaG9tZScsICJscyAtbCAnc29tZWZpbGU7IHJtIC1yZiB+JyJdCisgICAgICA+Pj4gY29tbWFuZCA9IHNwbGl0KHJlbW90ZV9jb21tYW5kWy0xXSkKKyAgICAgID4+PiBjb21tYW5kCisgICAgICBbJ2xzJywgJy1sJywgJ3NvbWVmaWxlOyBybSAtcmYgfiddCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiBUaGUgOm1vZDpgc2hsZXhgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3M6CiAKIApAQCAtMjgyLDUgKzMxNiw0IEBACiAKICogRU9GIGlzIHNpZ25hbGVkIHdpdGggYSA6Y29uc3Q6YE5vbmVgIHZhbHVlOwogCi0qIFF1b3RlZCBlbXB0eSBzdHJpbmdzIChgYCcnYGApIGFyZSBhbGxvd2VkOwotCisqIFF1b3RlZCBlbXB0eSBzdHJpbmdzIChgYCcnYGApIGFyZSBhbGxvd2VkLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdCBiL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKaW5kZXggMThmNjQ4NS4uOGVkN2U5ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CkBAIC00Nyw0NSArNDcsNzYgQEAKICAgIGJlIGNvcGllZC4KIAogCi0uLiBmdW5jdGlvbjo6IGNvcHlmaWxlKHNyYywgZHN0KQorLi4gZnVuY3Rpb246OiBjb3B5ZmlsZShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIENvcHkgdGhlIGNvbnRlbnRzIChubyBtZXRhZGF0YSkgb2YgdGhlIGZpbGUgbmFtZWQgKnNyYyogdG8gYSBmaWxlIG5hbWVkCi0gICAqZHN0Ki4gICpkc3QqIG11c3QgYmUgdGhlIGNvbXBsZXRlIHRhcmdldCBmaWxlIG5hbWU7IGxvb2sgYXQKKyAgICpkc3QqIGFuZCByZXR1cm4gKmRzdCouICAqZHN0KiBtdXN0IGJlIHRoZSBjb21wbGV0ZSB0YXJnZXQgZmlsZSBuYW1lOyBsb29rIGF0CiAgICA6ZnVuYzpgc2h1dGlsLmNvcHlgIGZvciBhIGNvcHkgdGhhdCBhY2NlcHRzIGEgdGFyZ2V0IGRpcmVjdG9yeSBwYXRoLiAgSWYKICAgICpzcmMqIGFuZCAqZHN0KiBhcmUgdGhlIHNhbWUgZmlsZXMsIDpleGM6YEVycm9yYCBpcyByYWlzZWQuCi0gICBUaGUgZGVzdGluYXRpb24gbG9jYXRpb24gbXVzdCBiZSB3cml0YWJsZTsgb3RoZXJ3aXNlLCAgYW4gOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9uCisKKyAgIFRoZSBkZXN0aW5hdGlvbiBsb2NhdGlvbiBtdXN0IGJlIHdyaXRhYmxlOyBvdGhlcndpc2UsICBhbiA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24KICAgIHdpbGwgYmUgcmFpc2VkLiBJZiAqZHN0KiBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSByZXBsYWNlZC4gICBTcGVjaWFsIGZpbGVzCiAgICBzdWNoIGFzIGNoYXJhY3RlciBvciBibG9jayBkZXZpY2VzIGFuZCBwaXBlcyBjYW5ub3QgYmUgY29waWVkIHdpdGggdGhpcwogICAgZnVuY3Rpb24uICAqc3JjKiBhbmQgKmRzdCogYXJlIHBhdGggbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KIAorICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgZmFsc2UgYW5kICpzcmMqIGlzIGEgc3ltYm9saWMgbGluaywKKyAgIGEgbmV3IHN5bWJvbGljIGxpbmsgd2lsbCBiZSBjcmVhdGVkIGluc3RlYWQgb2YgY29weWluZyB0aGUKKyAgIGZpbGUgKnNyYyogcG9pbnRzIHRvLgogCi0uLiBmdW5jdGlvbjo6IGNvcHltb2RlKHNyYywgZHN0KQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkIGluc3RlYWQgb2YgOmV4YzpgT1NFcnJvcmAuCisgICAgICBBZGRlZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudC4KKyAgICAgIE5vdyByZXR1cm5zICpkc3QqLgorCisuLiBmdW5jdGlvbjo6IGNvcHltb2RlKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgQ29weSB0aGUgcGVybWlzc2lvbiBiaXRzIGZyb20gKnNyYyogdG8gKmRzdCouICBUaGUgZmlsZSBjb250ZW50cywgb3duZXIsIGFuZAotICAgZ3JvdXAgYXJlIHVuYWZmZWN0ZWQuICAqc3JjKiBhbmQgKmRzdCogYXJlIHBhdGggbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KKyAgIGdyb3VwIGFyZSB1bmFmZmVjdGVkLiAgKnNyYyogYW5kICpkc3QqIGFyZSBwYXRoIG5hbWVzIGdpdmVuIGFzIHN0cmluZ3MuICBJZgorICAgKmZvbGxvd19zeW1saW5rcyogaXMgZmFsc2UsICpzcmMqIGlzIGEgc3ltYm9saWMgbGluaywgYW5kIHRoZSBvcGVyYXRpbmcKKyAgIHN5c3RlbSBzdXBwb3J0cyBtb2RlcyBmb3Igc3ltYm9saWMgbGlua3MgKGZvciBleGFtcGxlIEJTRC1iYXNlZCBvbmVzKSwKKyAgIHRoZSBtb2RlIG9mIHRoZSBsaW5rIHdpbGwgYmUgY29waWVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQuCiAKLS4uIGZ1bmN0aW9uOjogY29weXN0YXQoc3JjLCBkc3QpCisuLiBmdW5jdGlvbjo6IGNvcHlzdGF0KHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgQ29weSB0aGUgcGVybWlzc2lvbiBiaXRzLCBsYXN0IGFjY2VzcyB0aW1lLCBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lLCBhbmQgZmxhZ3MKICAgIGZyb20gKnNyYyogdG8gKmRzdCouICBUaGUgZmlsZSBjb250ZW50cywgb3duZXIsIGFuZCBncm91cCBhcmUgdW5hZmZlY3RlZC4gICpzcmMqCi0gICBhbmQgKmRzdCogYXJlIHBhdGggbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KKyAgIGFuZCAqZHN0KiBhcmUgcGF0aCBuYW1lcyBnaXZlbiBhcyBzdHJpbmdzLiAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgZmFsc2UsIGFuZAorICAgKnNyYyogYW5kICpkc3QqIGFyZSBib3RoIHN5bWJvbGljIGxpbmtzLCB0aGUgc3RhdHMgb2YgdGhlIGxpbmsgd2lsbCBiZSBjb3BpZWQgYXMKKyAgIGZhciBhcyB0aGUgcGxhdGZvcm0gYWxsb3dzLiAgT24gTGludXgsIDpmdW5jOmBjb3B5c3RhdGAgYWxzbyBjb3BpZXMgdGhlCisgICAiZXh0ZW5kZWQgYXR0cmlidXRlcyIgd2hlcmUgcG9zc2libGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudCBhbmQgc3VwcG9ydCBmb3IgTGludXggZXh0ZW5kZWQgYXR0cmlidXRlcy4KIAotLi4gZnVuY3Rpb246OiBjb3B5KHNyYywgZHN0KQorLi4gZnVuY3Rpb246OiBjb3B5KHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAotICAgQ29weSB0aGUgZmlsZSAqc3JjKiB0byB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKmRzdCouICBJZiAqZHN0KiBpcyBhIGRpcmVjdG9yeSwgYQorICAgQ29weSB0aGUgZmlsZSAqc3JjKiB0byB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKmRzdCogYW5kIHJldHVybiB0aGUgZmlsZSdzCisgICBkZXN0aW5hdGlvbi4gIElmICpkc3QqIGlzIGEgZGlyZWN0b3J5LCBhCiAgICBmaWxlIHdpdGggdGhlIHNhbWUgYmFzZW5hbWUgYXMgKnNyYyogIGlzIGNyZWF0ZWQgKG9yIG92ZXJ3cml0dGVuKSBpbiB0aGUKICAgIGRpcmVjdG9yeSBzcGVjaWZpZWQuICBQZXJtaXNzaW9uIGJpdHMgYXJlIGNvcGllZC4gICpzcmMqIGFuZCAqZHN0KiBhcmUgcGF0aAotICAgbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KKyAgIG5hbWVzIGdpdmVuIGFzIHN0cmluZ3MuICBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcyBmYWxzZSwgc3ltYm9saWMKKyAgIGxpbmtzIHdvbid0IGJlIGZvbGxvd2VkIGJ1dCByZWNyZWF0ZWQgaW5zdGVhZCAtLSB0aGlzIHJlc2VtYmxlcyBHTlUncworICAgOnByb2dyYW06YGNwIC1QYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50LgorICAgICAgTm93IHJldHVybnMgKmRzdCouCiAKLS4uIGZ1bmN0aW9uOjogY29weTIoc3JjLCBkc3QpCisuLiBmdW5jdGlvbjo6IGNvcHkyKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAotICAgU2ltaWxhciB0byA6ZnVuYzpgc2h1dGlsLmNvcHlgLCBidXQgbWV0YWRhdGEgaXMgY29waWVkIGFzIHdlbGwgLS0gaW4gZmFjdCwKLSAgIHRoaXMgaXMganVzdCA6ZnVuYzpgc2h1dGlsLmNvcHlgIGZvbGxvd2VkIGJ5IDpmdW5jOmBjb3B5c3RhdGAuICBUaGlzIGlzCi0gICBzaW1pbGFyIHRvIHRoZSBVbml4IGNvbW1hbmQgOnByb2dyYW06YGNwIC1wYC4KKyAgIFNpbWlsYXIgdG8gOmZ1bmM6YHNodXRpbC5jb3B5YCwgaW5jbHVkaW5nIHRoYXQgdGhlIGRlc3RpbmF0aW9uIGlzCisgICByZXR1cm5lZCwgYnV0IG1ldGFkYXRhIGlzIGNvcGllZCBhcyB3ZWxsLiBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIFVuaXgKKyAgIGNvbW1hbmQgOnByb2dyYW06YGNwIC1wYC4gIElmICpmb2xsb3dfc3ltbGlua3MqIGlzIGZhbHNlLAorICAgc3ltYm9saWMgbGlua3Mgd29uJ3QgYmUgZm9sbG93ZWQgYnV0IHJlY3JlYXRlZCBpbnN0ZWFkIC0tIHRoaXMgcmVzZW1ibGVzCisgICBHTlUncyA6cHJvZ3JhbTpgY3AgLVBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQsIHRyeSB0byBjb3B5IGV4dGVuZGVkCisgICAgICBmaWxlIHN5c3RlbSBhdHRyaWJ1dGVzIHRvbyAoY3VycmVudGx5IExpbnV4IG9ubHkpLgorICAgICAgTm93IHJldHVybnMgKmRzdCouCiAKIC4uIGZ1bmN0aW9uOjogaWdub3JlX3BhdHRlcm5zKFwqcGF0dGVybnMpCiAKQEAgLTk2LDE2ICsxMjcsMTcgQEAKIAogLi4gZnVuY3Rpb246OiBjb3B5dHJlZShzcmMsIGRzdCwgc3ltbGlua3M9RmFsc2UsIGlnbm9yZT1Ob25lLCBjb3B5X2Z1bmN0aW9uPWNvcHkyLCBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3M9RmFsc2UpCiAKLSAgIFJlY3Vyc2l2ZWx5IGNvcHkgYW4gZW50aXJlIGRpcmVjdG9yeSB0cmVlIHJvb3RlZCBhdCAqc3JjKi4gIFRoZSBkZXN0aW5hdGlvbgorICAgUmVjdXJzaXZlbHkgY29weSBhbiBlbnRpcmUgZGlyZWN0b3J5IHRyZWUgcm9vdGVkIGF0ICpzcmMqLCByZXR1cm5pbmcgdGhlCisgICBkZXN0aW5hdGlvbiBkaXJlY3RvcnkuICBUaGUgZGVzdGluYXRpb24KICAgIGRpcmVjdG9yeSwgbmFtZWQgYnkgKmRzdCosIG11c3Qgbm90IGFscmVhZHkgZXhpc3Q7IGl0IHdpbGwgYmUgY3JlYXRlZCBhcwogICAgd2VsbCBhcyBtaXNzaW5nIHBhcmVudCBkaXJlY3Rvcmllcy4gIFBlcm1pc3Npb25zIGFuZCB0aW1lcyBvZiBkaXJlY3RvcmllcwogICAgYXJlIGNvcGllZCB3aXRoIDpmdW5jOmBjb3B5c3RhdGAsIGluZGl2aWR1YWwgZmlsZXMgYXJlIGNvcGllZCB1c2luZwogICAgOmZ1bmM6YHNodXRpbC5jb3B5MmAuCiAKICAgIElmICpzeW1saW5rcyogaXMgdHJ1ZSwgc3ltYm9saWMgbGlua3MgaW4gdGhlIHNvdXJjZSB0cmVlIGFyZSByZXByZXNlbnRlZCBhcwotICAgc3ltYm9saWMgbGlua3MgaW4gdGhlIG5ldyB0cmVlLCBidXQgdGhlIG1ldGFkYXRhIG9mIHRoZSBvcmlnaW5hbCBsaW5rcyBpcyBOT1QKLSAgIGNvcGllZDsgaWYgZmFsc2Ugb3Igb21pdHRlZCwgdGhlIGNvbnRlbnRzIGFuZCBtZXRhZGF0YSBvZiB0aGUgbGlua2VkIGZpbGVzCi0gICBhcmUgY29waWVkIHRvIHRoZSBuZXcgdHJlZS4KKyAgIHN5bWJvbGljIGxpbmtzIGluIHRoZSBuZXcgdHJlZSBhbmQgdGhlIG1ldGFkYXRhIG9mIHRoZSBvcmlnaW5hbCBsaW5rcyB3aWxsCisgICBiZSBjb3BpZWQgYXMgZmFyIGFzIHRoZSBwbGF0Zm9ybSBhbGxvd3M7IGlmIGZhbHNlIG9yIG9taXR0ZWQsIHRoZSBjb250ZW50cworICAgYW5kIG1ldGFkYXRhIG9mIHRoZSBsaW5rZWQgZmlsZXMgYXJlIGNvcGllZCB0byB0aGUgbmV3IHRyZWUuCiAKICAgIFdoZW4gKnN5bWxpbmtzKiBpcyBmYWxzZSwgaWYgdGhlIGZpbGUgcG9pbnRlZCBieSB0aGUgc3ltbGluayBkb2Vzbid0CiAgICBleGlzdCwgYSBleGNlcHRpb24gd2lsbCBiZSBhZGRlZCBpbiB0aGUgbGlzdCBvZiBlcnJvcnMgcmFpc2VkIGluCkBAIC0xMjksMTMgKzE2MSwxNSBAQAogICAgSWYgKmNvcHlfZnVuY3Rpb24qIGlzIGdpdmVuLCBpdCBtdXN0IGJlIGEgY2FsbGFibGUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY29weQogICAgZWFjaCBmaWxlLiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBzb3VyY2UgcGF0aCBhbmQgdGhlIGRlc3RpbmF0aW9uIHBhdGgKICAgIGFzIGFyZ3VtZW50cy4gQnkgZGVmYXVsdCwgOmZ1bmM6YHNodXRpbC5jb3B5MmAgaXMgdXNlZCwgYnV0IGFueSBmdW5jdGlvbgotICAgdGhhdCBzdXBwb3J0cyB0aGUgc2FtZSBzaWduYXR1cmUgKGxpa2UgOmZ1bmM6YGNvcHlgKSBjYW4gYmUgdXNlZC4KKyAgIHRoYXQgc3VwcG9ydHMgdGhlIHNhbWUgc2lnbmF0dXJlIChsaWtlIDpmdW5jOmBzaHV0aWwuY29weWApIGNhbiBiZSB1c2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQ29weSBtZXRhZGF0YSB3aGVuICpzeW1saW5rcyogaXMgZmFsc2UuCisgICAgICBOb3cgcmV0dXJucyAqZHN0Ki4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSAqY29weV9mdW5jdGlvbiogYXJndW1lbnQgdG8gYmUgYWJsZSB0byBwcm92aWRlIGEgY3VzdG9tIGNvcHkKICAgICAgIGZ1bmN0aW9uLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgdGhlICppZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3MqIGFyZ3VtZW50IHRvIHNpbGVudCBkYW5nbGluZyBzeW1saW5rcwogICAgICAgZXJyb3JzIHdoZW4gKnN5bWxpbmtzKiBpcyBmYWxzZS4KIApAQCAtMTUwLDE5ICsxODQsNDIgQEAKICAgIGhhbmRsZWQgYnkgY2FsbGluZyBhIGhhbmRsZXIgc3BlY2lmaWVkIGJ5ICpvbmVycm9yKiBvciwgaWYgdGhhdCBpcyBvbWl0dGVkLAogICAgdGhleSByYWlzZSBhbiBleGNlcHRpb24uCiAKKyAgIC4uIG5vdGU6OgorCisgICAgICBPbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHRoZSBuZWNlc3NhcnkgZmQtYmFzZWQgZnVuY3Rpb25zIGEgc3ltbGluaworICAgICAgYXR0YWNrIHJlc2lzdGFudCB2ZXJzaW9uIG9mIDpmdW5jOmBybXRyZWVgIGlzIHVzZWQgYnkgZGVmYXVsdC4gIE9uIG90aGVyCisgICAgICBwbGF0Zm9ybXMsIHRoZSA6ZnVuYzpgcm10cmVlYCBpbXBsZW1lbnRhdGlvbiBpcyBzdXNjZXB0aWJsZSB0byBhIHN5bWxpbmsKKyAgICAgIGF0dGFjazogZ2l2ZW4gcHJvcGVyIHRpbWluZyBhbmQgY2lyY3Vtc3RhbmNlcywgYXR0YWNrZXJzIGNhbiBtYW5pcHVsYXRlCisgICAgICBzeW1saW5rcyBvbiB0aGUgZmlsZXN5c3RlbSB0byBkZWxldGUgZmlsZXMgdGhleSB3b3VsZG4ndCBiZSBhYmxlIHRvIGFjY2VzcworICAgICAgb3RoZXJ3aXNlLiAgQXBwbGljYXRpb25zIGNhbiB1c2UgdGhlIDpkYXRhOmBybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrc2AKKyAgICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZSB0byBkZXRlcm1pbmUgd2hpY2ggY2FzZSBhcHBsaWVzLgorCiAgICBJZiAqb25lcnJvciogaXMgcHJvdmlkZWQsIGl0IG11c3QgYmUgYSBjYWxsYWJsZSB0aGF0IGFjY2VwdHMgdGhyZWUKLSAgIHBhcmFtZXRlcnM6ICpmdW5jdGlvbiosICpwYXRoKiwgYW5kICpleGNpbmZvKi4gVGhlIGZpcnN0IHBhcmFtZXRlciwKLSAgICpmdW5jdGlvbiosIGlzIHRoZSBmdW5jdGlvbiB3aGljaCByYWlzZWQgdGhlIGV4Y2VwdGlvbjsgaXQgd2lsbCBiZQotICAgOmZ1bmM6YG9zLnBhdGguaXNsaW5rYCwgOmZ1bmM6YG9zLmxpc3RkaXJgLCA6ZnVuYzpgb3MucmVtb3ZlYCBvcgotICAgOmZ1bmM6YG9zLnJtZGlyYC4gIFRoZSBzZWNvbmQgcGFyYW1ldGVyLCAqcGF0aCosIHdpbGwgYmUgdGhlIHBhdGggbmFtZSBwYXNzZWQKLSAgIHRvICpmdW5jdGlvbiouICBUaGUgdGhpcmQgcGFyYW1ldGVyLCAqZXhjaW5mbyosIHdpbGwgYmUgdGhlIGV4Y2VwdGlvbgotICAgaW5mb3JtYXRpb24gcmV0dXJuIGJ5IDpmdW5jOmBzeXMuZXhjX2luZm9gLiAgRXhjZXB0aW9ucyByYWlzZWQgYnkgKm9uZXJyb3IqCi0gICB3aWxsIG5vdCBiZSBjYXVnaHQuCisgICBwYXJhbWV0ZXJzOiAqZnVuY3Rpb24qLCAqcGF0aCosIGFuZCAqZXhjaW5mbyouCisKKyAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIsICpmdW5jdGlvbiosIGlzIHRoZSBmdW5jdGlvbiB3aGljaCByYWlzZWQgdGhlIGV4Y2VwdGlvbjsKKyAgIGl0IGRlcGVuZHMgb24gdGhlIHBsYXRmb3JtIGFuZCBpbXBsZW1lbnRhdGlvbi4gIFRoZSBzZWNvbmQgcGFyYW1ldGVyLAorICAgKnBhdGgqLCB3aWxsIGJlIHRoZSBwYXRoIG5hbWUgcGFzc2VkIHRvICpmdW5jdGlvbiouICBUaGUgdGhpcmQgcGFyYW1ldGVyLAorICAgKmV4Y2luZm8qLCB3aWxsIGJlIHRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkKKyAgIDpmdW5jOmBzeXMuZXhjX2luZm9gLiAgRXhjZXB0aW9ucyByYWlzZWQgYnkgKm9uZXJyb3IqIHdpbGwgbm90IGJlIGNhdWdodC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIGEgc3ltbGluayBhdHRhY2sgcmVzaXN0YW50IHZlcnNpb24gdGhhdCBpcyB1c2VkIGF1dG9tYXRpY2FsbHkKKyAgICAgIGlmIHBsYXRmb3JtIHN1cHBvcnRzIGZkLWJhc2VkIGZ1bmN0aW9ucy4KKworICAgLi4gYXR0cmlidXRlOjogcm10cmVlLmF2b2lkc19zeW1saW5rX2F0dGFja3MKKworICAgICAgSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgcGxhdGZvcm0gYW5kIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIGEKKyAgICAgIHN5bWxpbmsgYXR0YWNrIHJlc2lzdGFudCB2ZXJzaW9uIG9mIDpmdW5jOmBybXRyZWVgLiAgQ3VycmVudGx5IHRoaXMgaXMKKyAgICAgIG9ubHkgdHJ1ZSBmb3IgcGxhdGZvcm1zIHN1cHBvcnRpbmcgZmQtYmFzZWQgZGlyZWN0b3J5IGFjY2VzcyBmdW5jdGlvbnMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGZ1bmN0aW9uOjogbW92ZShzcmMsIGRzdCkKIAotICAgUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5ICgqc3JjKikgdG8gYW5vdGhlciBsb2NhdGlvbiAoKmRzdCopLgorICAgUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5ICgqc3JjKikgdG8gYW5vdGhlciBsb2NhdGlvbiAoKmRzdCopCisgICBhbmQgcmV0dXJuIHRoZSBkZXN0aW5hdGlvbi4KIAogICAgSWYgdGhlIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5IG9yIGEgc3ltbGluayB0byBhIGRpcmVjdG9yeSwgdGhlbiAqc3JjKiBpcwogICAgbW92ZWQgaW5zaWRlIHRoYXQgZGlyZWN0b3J5LgpAQCAtMTczLDcgKzIzMCw2MSBAQAogCiAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIGN1cnJlbnQgZmlsZXN5c3RlbSwgdGhlbiA6ZnVuYzpgb3MucmVuYW1lYCBpcwogICAgdXNlZC4gIE90aGVyd2lzZSwgKnNyYyogaXMgY29waWVkICh1c2luZyA6ZnVuYzpgc2h1dGlsLmNvcHkyYCkgdG8gKmRzdCogYW5kCi0gICB0aGVuIHJlbW92ZWQuCisgICB0aGVuIHJlbW92ZWQuIEluIGNhc2Ugb2Ygc3ltbGlua3MsIGEgbmV3IHN5bWxpbmsgcG9pbnRpbmcgdG8gdGhlIHRhcmdldCBvZgorICAgKnNyYyogd2lsbCBiZSBjcmVhdGVkIGluIG9yIGFzICpkc3QqIGFuZCAqc3JjKiB3aWxsIGJlIHJlbW92ZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBleHBsaWNpdCBzeW1saW5rIGhhbmRsaW5nIGZvciBmb3JlaWduIGZpbGVzeXN0ZW1zLCB0aHVzIGFkYXB0aW5nCisgICAgICBpdCB0byB0aGUgYmVoYXZpb3Igb2YgR05VJ3MgOnByb2dyYW06YG12YC4KKyAgICAgIE5vdyByZXR1cm5zICpkc3QqLgorCisuLiBmdW5jdGlvbjo6IGRpc2tfdXNhZ2UocGF0aCkKKworICAgUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aCBhcyBhIDp0ZXJtOmBuYW1lZCB0dXBsZWAKKyAgIHdpdGggdGhlIGF0dHJpYnV0ZXMgKnRvdGFsKiwgKnVzZWQqIGFuZCAqZnJlZSosIHdoaWNoIGFyZSB0aGUgYW1vdW50IG9mCisgICB0b3RhbCwgdXNlZCBhbmQgZnJlZSBzcGFjZSwgaW4gYnl0ZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKy4uIGZ1bmN0aW9uOjogY2hvd24ocGF0aCwgdXNlcj1Ob25lLCBncm91cD1Ob25lKQorCisgICBDaGFuZ2Ugb3duZXIgKnVzZXIqIGFuZC9vciAqZ3JvdXAqIG9mIHRoZSBnaXZlbiAqcGF0aCouCisKKyAgICp1c2VyKiBjYW4gYmUgYSBzeXN0ZW0gdXNlciBuYW1lIG9yIGEgdWlkOyB0aGUgc2FtZSBhcHBsaWVzIHRvICpncm91cCouIEF0CisgICBsZWFzdCBvbmUgYXJndW1lbnQgaXMgcmVxdWlyZWQuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBvcy5jaG93bmAsIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogd2hpY2goY21kLCBtb2RlPW9zLkZfT0sgfCBvcy5YX09LLCBwYXRoPU5vbmUpCisKKyAgIFJldHVybiB0aGUgcGF0aCB0byBhbiBleGVjdXRhYmxlIHdoaWNoIHdvdWxkIGJlIHJ1biBpZiB0aGUgZ2l2ZW4gKmNtZCogd2FzCisgICBjYWxsZWQuICBJZiBubyAqY21kKiB3b3VsZCBiZSBjYWxsZWQsIHJldHVybiBgYE5vbmVgYC4KKworICAgKm1vZGUqIGlzIGEgcGVybWlzc2lvbiBtYXNrIHBhc3NlZCBhIHRvIDpmdW5jOmBvcy5hY2Nlc3NgLCBieSBkZWZhdWx0CisgICBkZXRlcm1pbmluZyBpZiB0aGUgZmlsZSBleGlzdHMgYW5kIGV4ZWN1dGFibGUuCisKKyAgIFdoZW4gbm8gKnBhdGgqIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdHMgb2YgOmZ1bmM6YG9zLmVudmlyb25gIGFyZSB1c2VkLAorICAgcmV0dXJuaW5nIGVpdGhlciB0aGUgIlBBVEgiIHZhbHVlIG9yIGEgZmFsbGJhY2sgb2YgOmF0dHI6YG9zLmRlZnBhdGhgLgorCisgICBPbiBXaW5kb3dzLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgYWx3YXlzIHByZXBlbmRlZCB0byB0aGUgKnBhdGgqIHdoZXRoZXIKKyAgIG9yIG5vdCB5b3UgdXNlIHRoZSBkZWZhdWx0IG9yIHByb3ZpZGUgeW91ciBvd24sIHdoaWNoIGlzIHRoZSBiZWhhdmlvciB0aGUKKyAgIGNvbW1hbmQgc2hlbGwgdXNlcyB3aGVuIGZpbmRpbmcgZXhlY3V0YWJsZXMuICBBZGRpdGlvbmFseSwgd2hlbiBmaW5kaW5nIHRoZQorICAgKmNtZCogaW4gdGhlICpwYXRoKiwgdGhlIGBgUEFUSEVYVGBgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGNoZWNrZWQuICBGb3IKKyAgIGV4YW1wbGUsIGlmIHlvdSBjYWxsIGBgc2h1dGlsLndoaWNoKCJweXRob24iKWBgLCA6ZnVuYzpgd2hpY2hgIHdpbGwgc2VhcmNoCisgICBgYFBBVEhFWFRgYCB0byBrbm93IHRoYXQgaXQgc2hvdWxkIGxvb2sgZm9yIGBgcHl0aG9uLmV4ZWBgIHdpdGhpbiB0aGUgKnBhdGgqCisgICBkaXJlY3Rvcmllcy4gIEZvciBleGFtcGxlLCBvbiBXaW5kb3dzOjoKKworICAgICAgPj4+IHNodXRpbC53aGljaCgicHl0aG9uIikKKyAgICAgICdjOlxccHl0aG9uMzNcXHB5dGhvbi5leGUnCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGV4Y2VwdGlvbjo6IEVycm9yCkBAIC0xODYsNyArMjk3LDcgQEAKIC4uIF9zaHV0aWwtY29weXRyZWUtZXhhbXBsZToKIAogY29weXRyZWUgZXhhbXBsZQotOjo6Ojo6Ojo6Ojo6Ojo6Ogorfn5+fn5+fn5+fn5+fn5+fgogCiBUaGlzIGV4YW1wbGUgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSA6ZnVuYzpgY29weXRyZWVgIGZ1bmN0aW9uLCBkZXNjcmliZWQKIGFib3ZlLCB3aXRoIHRoZSBkb2NzdHJpbmcgb21pdHRlZC4gIEl0IGRlbW9uc3RyYXRlcyBtYW55IG9mIHRoZSBvdGhlciBmdW5jdGlvbnMKQEAgLTI1MCw2ICszNjEsOCBAQAogQXJjaGl2aW5nIG9wZXJhdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuMgorCiBIaWdoLWxldmVsIHV0aWxpdGllcyB0byBjcmVhdGUgYW5kIHJlYWQgY29tcHJlc3NlZCBhbmQgYXJjaGl2ZWQgZmlsZXMgYXJlIGFsc28KIHByb3ZpZGVkLiAgVGhleSByZWx5IG9uIHRoZSA6bW9kOmB6aXBmaWxlYCBhbmQgOm1vZDpgdGFyZmlsZWAgbW9kdWxlcy4KIApAQCAtMjc3LDggKzM5MCw2IEBACiAgICAqbG9nZ2VyKiBtdXN0IGJlIGFuIG9iamVjdCBjb21wYXRpYmxlIHdpdGggOnBlcDpgMjgyYCwgdXN1YWxseSBhbiBpbnN0YW5jZSBvZgogICAgOmNsYXNzOmBsb2dnaW5nLkxvZ2dlcmAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2FyY2hpdmVfZm9ybWF0cygpCiAKQEAgLTI5NSw4ICs0MDYsNiBAQAogICAgWW91IGNhbiByZWdpc3RlciBuZXcgZm9ybWF0cyBvciBwcm92aWRlIHlvdXIgb3duIGFyY2hpdmVyIGZvciBhbnkgZXhpc3RpbmcKICAgIGZvcm1hdHMsIGJ5IHVzaW5nIDpmdW5jOmByZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdGAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogcmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQobmFtZSwgZnVuY3Rpb24sIFtleHRyYV9hcmdzLCBbZGVzY3JpcHRpb25dXSkKIApAQCAtMzA5LDE1ICs0MTgsMTEgQEAKICAgICpkZXNjcmlwdGlvbiogaXMgdXNlZCBieSA6ZnVuYzpgZ2V0X2FyY2hpdmVfZm9ybWF0c2Agd2hpY2ggcmV0dXJucyB0aGUKICAgIGxpc3Qgb2YgYXJjaGl2ZXJzLiBEZWZhdWx0cyB0byBhbiBlbXB0eSBsaXN0LgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQogCiAuLiBmdW5jdGlvbjo6IHVucmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQobmFtZSkKIAogICAgUmVtb3ZlIHRoZSBhcmNoaXZlIGZvcm1hdCAqbmFtZSogZnJvbSB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZm9ybWF0cy4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KIAogLi4gZnVuY3Rpb246OiB1bnBhY2tfYXJjaGl2ZShmaWxlbmFtZVssIGV4dHJhY3RfZGlyWywgZm9ybWF0XV0pCiAKQEAgLTMzMiw4ICs0MzcsNiBAQAogICAgYW5kIHNlZSBpZiBhbiB1bnBhY2tlciB3YXMgcmVnaXN0ZXJlZCBmb3IgdGhhdCBleHRlbnNpb24uIEluIGNhc2Ugbm9uZSBpcwogICAgZm91bmQsIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQogCiAuLiBmdW5jdGlvbjo6IHJlZ2lzdGVyX3VucGFja19mb3JtYXQobmFtZSwgZXh0ZW5zaW9ucywgZnVuY3Rpb25bLCBleHRyYV9hcmdzWywgZGVzY3JpcHRpb25dXSkKIApAQCAtMzUxLDE1ICs0NTQsMTEgQEAKICAgICpkZXNjcmlwdGlvbiogY2FuIGJlIHByb3ZpZGVkIHRvIGRlc2NyaWJlIHRoZSBmb3JtYXQsIGFuZCB3aWxsIGJlIHJldHVybmVkCiAgICBieSB0aGUgOmZ1bmM6YGdldF91bnBhY2tfZm9ybWF0c2AgZnVuY3Rpb24uCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogdW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0KG5hbWUpCiAKICAgIFVucmVnaXN0ZXIgYW4gdW5wYWNrIGZvcm1hdC4gKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBmb3JtYXQuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3VucGFja19mb3JtYXRzKCkKIApAQCAtMzc3LDEzICs0NzYsMTEgQEAKICAgIFlvdSBjYW4gcmVnaXN0ZXIgbmV3IGZvcm1hdHMgb3IgcHJvdmlkZSB5b3VyIG93biB1bnBhY2tlciBmb3IgYW55IGV4aXN0aW5nCiAgICBmb3JtYXRzLCBieSB1c2luZyA6ZnVuYzpgcmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdGAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIF9zaHV0aWwtYXJjaGl2aW5nLWV4YW1wbGU6CiAKIEFyY2hpdmluZyBleGFtcGxlCi06Ojo6Ojo6Ojo6Ojo6Ojo6Ogorfn5+fn5+fn5+fn5+fn5+fn4KIAogSW4gdGhpcyBleGFtcGxlLCB3ZSBjcmVhdGUgYSBnemlwJ2VkIHRhci1maWxlIGFyY2hpdmUgY29udGFpbmluZyBhbGwgZmlsZXMKIGZvdW5kIGluIHRoZSA6ZmlsZTpgLnNzaGAgZGlyZWN0b3J5IG9mIHRoZSB1c2VyOjoKQEAgLTQwNiwzICs1MDMsMzYgQEAKICAgICAtcnctLS0tLS0tIHRhcmVrL3N0YWZmICAgIDE2NzUgMjAwOC0wNi0wOSAxMzoyNjo1NCAuL2lkX3JzYQogICAgIC1ydy1yLS1yLS0gdGFyZWsvc3RhZmYgICAgIDM5NyAyMDA4LTA2LTA5IDEzOjI2OjU0IC4vaWRfcnNhLnB1YgogICAgIC1ydy1yLS1yLS0gdGFyZWsvc3RhZmYgICAzNzE5MiAyMDEwLTAyLTA2IDE4OjIzOjEwIC4va25vd25faG9zdHMKKworCitRdWVyeWluZyB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IHRlcm1pbmFsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IGdldF90ZXJtaW5hbF9zaXplKGZhbGxiYWNrPShjb2x1bW5zLCBsaW5lcykpCisKKyAgIEdldCB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93LgorCisgICBGb3IgZWFjaCBvZiB0aGUgdHdvIGRpbWVuc2lvbnMsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYGBDT0xVTU5TYGAKKyAgIGFuZCBgYExJTkVTYGAgcmVzcGVjdGl2ZWx5LCBpcyBjaGVja2VkLiBJZiB0aGUgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQKKyAgIHRoZSB2YWx1ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsIGl0IGlzIHVzZWQuCisKKyAgIFdoZW4gYGBDT0xVTU5TYGAgb3IgYGBMSU5FU2BgIGlzIG5vdCBkZWZpbmVkLCB3aGljaCBpcyB0aGUgY29tbW9uIGNhc2UsCisgICB0aGUgdGVybWluYWwgY29ubmVjdGVkIHRvIDpkYXRhOmBzeXMuX19zdGRvdXRfX2AgaXMgcXVlcmllZAorICAgYnkgaW52b2tpbmcgOmZ1bmM6YG9zLmdldF90ZXJtaW5hbF9zaXplYC4KKworICAgSWYgdGhlIHRlcm1pbmFsIHNpemUgY2Fubm90IGJlIHN1Y2Nlc3NmdWxseSBxdWVyaWVkLCBlaXRoZXIgYmVjYXVzZQorICAgdGhlIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgcXVlcnlpbmcsIG9yIGJlY2F1c2Ugd2UgYXJlIG5vdAorICAgY29ubmVjdGVkIHRvIGEgdGVybWluYWwsIHRoZSB2YWx1ZSBnaXZlbiBpbiBgYGZhbGxiYWNrYGAgcGFyYW1ldGVyCisgICBpcyB1c2VkLiBgYGZhbGxiYWNrYGAgZGVmYXVsdHMgdG8gYGAoODAsIDI0KWBgIHdoaWNoIGlzIHRoZSBkZWZhdWx0CisgICBzaXplIHVzZWQgYnkgbWFueSB0ZXJtaW5hbCBlbXVsYXRvcnMuCisKKyAgIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyBhIG5hbWVkIHR1cGxlIG9mIHR5cGUgOmNsYXNzOmBvcy50ZXJtaW5hbF9zaXplYC4KKworICAgU2VlIGFsc286IFRoZSBTaW5nbGUgVU5JWCBTcGVjaWZpY2F0aW9uLCBWZXJzaW9uIDIsCisgICBgT3RoZXIgRW52aXJvbm1lbnQgVmFyaWFibGVzYF8uCisKKy4uIF9gT3RoZXIgRW52aXJvbm1lbnQgVmFyaWFibGVzYDoKKyAgIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy83OTA4Nzk5L3hiZC9lbnZ2YXIuaHRtbCN0YWdfMDAyXzAwMworCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaWduYWwucnN0IGIvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdAppbmRleCBkMWNhZTEzLi4yYTQ3MmZlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaWduYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NpZ25hbC5yc3QKQEAgLTQ0LDYgKzQ0LDkgQEAKICAgc2lnbmFsIGhhbmRsZXJzIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGNhbGN1bGF0aW9uIGZpbmlzaGVzLgogCiAKKy4uIF9zaWduYWxzLWFuZC10aHJlYWRzOgorCisKIFNpZ25hbHMgYW5kIHRocmVhZHMKIF5eXl5eXl5eXl5eXl5eXl5eXl4KIApAQCAtMTMxLDYgKzEzNCwyOCBAQAogICAgaW4gdXNlciBhbmQga2VybmVsIHNwYWNlLiBTSUdQUk9GIGlzIGRlbGl2ZXJlZCB1cG9uIGV4cGlyYXRpb24uCiAKIAorLi4gZGF0YTo6IFNJR19CTE9DSworCisgICBBIHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgKmhvdyogcGFyYW1ldGVyIHRvIDpmdW5jOmBwdGhyZWFkX3NpZ21hc2tgCisgICBpbmRpY2F0aW5nIHRoYXQgc2lnbmFscyBhcmUgdG8gYmUgYmxvY2tlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBTSUdfVU5CTE9DSworCisgICBBIHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgKmhvdyogcGFyYW1ldGVyIHRvIDpmdW5jOmBwdGhyZWFkX3NpZ21hc2tgCisgICBpbmRpY2F0aW5nIHRoYXQgc2lnbmFscyBhcmUgdG8gYmUgdW5ibG9ja2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IFNJR19TRVRNQVNLCisKKyAgIEEgcG9zc2libGUgdmFsdWUgZm9yIHRoZSAqaG93KiBwYXJhbWV0ZXIgdG8gOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AKKyAgIGluZGljYXRpbmcgdGhhdCB0aGUgc2lnbmFsIG1hc2sgaXMgdG8gYmUgcmVwbGFjZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIFRoZSA6bW9kOmBzaWduYWxgIG1vZHVsZSBkZWZpbmVzIG9uZSBleGNlcHRpb246CiAKIC4uIGV4Y2VwdGlvbjo6IEl0aW1lckVycm9yCkBAIC0xMzgsNyArMTYzLDExIEBACiAgICBSYWlzZWQgdG8gc2lnbmFsIGFuIGVycm9yIGZyb20gdGhlIHVuZGVybHlpbmcgOmZ1bmM6YHNldGl0aW1lcmAgb3IKICAgIDpmdW5jOmBnZXRpdGltZXJgIGltcGxlbWVudGF0aW9uLiBFeHBlY3QgdGhpcyBlcnJvciBpZiBhbiBpbnZhbGlkCiAgICBpbnRlcnZhbCB0aW1lciBvciBhIG5lZ2F0aXZlIHRpbWUgaXMgcGFzc2VkIHRvIDpmdW5jOmBzZXRpdGltZXJgLgotICAgVGhpcyBlcnJvciBpcyBhIHN1YnR5cGUgb2YgOmV4YzpgSU9FcnJvcmAuCisgICBUaGlzIGVycm9yIGlzIGEgc3VidHlwZSBvZiA6ZXhjOmBPU0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGlzIGVycm9yIHVzZWQgdG8gYmUgYSBzdWJ0eXBlIG9mIDpleGM6YElPRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIFRoZSA6bW9kOmBzaWduYWxgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgpAQCAtMTcyLDYgKzIwMSw2NSBAQAogICAgd2lsbCB0aGVuIGJlIGNhbGxlZC4gIFJldHVybnMgbm90aGluZy4gIE5vdCBvbiBXaW5kb3dzLiAoU2VlIHRoZSBVbml4IG1hbiBwYWdlCiAgICA6bWFucGFnZTpgc2lnbmFsKDIpYC4pCiAKKyAgIFNlZSBhbHNvIDpmdW5jOmBzaWd3YWl0YCwgOmZ1bmM6YHNpZ3dhaXRpbmZvYCwgOmZ1bmM6YHNpZ3RpbWVkd2FpdGAgYW5kCisgICA6ZnVuYzpgc2lncGVuZGluZ2AuCisKKworLi4gZnVuY3Rpb246OiBwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWdudW0pCisKKyAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKKyAgIHNhbWUgcHJvY2VzcyBhcyB0aGUgY2FsbGVyLiAgVGhlIHRhcmdldCB0aHJlYWQgY2FuIGJlIGV4ZWN1dGluZyBhbnkgY29kZQorICAgKFB5dGhvbiBvciBub3QpLiAgSG93ZXZlciwgaWYgdGhlIHRhcmdldCB0aHJlYWQgaXMgZXhlY3V0aW5nIHRoZSBQeXRob24KKyAgIGludGVycHJldGVyLCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVycyB3aWxsIGJlIDpyZWY6YGV4ZWN1dGVkIGJ5IHRoZSBtYWluCisgICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhIHNpZ25hbCB0byBhIHBhcnRpY3VsYXIKKyAgIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsIHRvIGZhaWwgd2l0aAorICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisKKyAgIFVzZSA6ZnVuYzpgdGhyZWFkaW5nLmdldF9pZGVudCgpYCBvciB0aGUgOmF0dHI6YH50aHJlYWRpbmcuVGhyZWFkLmlkZW50YAorICAgYXR0cmlidXRlIG9mIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAgb2JqZWN0cyB0byBnZXQgYSBzdWl0YWJsZSB2YWx1ZQorICAgZm9yICp0aHJlYWRfaWQqLgorCisgICBJZiAqc2lnbnVtKiBpcyAwLCB0aGVuIG5vIHNpZ25hbCBpcyBzZW50LCBidXQgZXJyb3IgY2hlY2tpbmcgaXMgc3RpbGwKKyAgIHBlcmZvcm1lZDsgdGhpcyBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgdGFyZ2V0IHRocmVhZCBpcyBzdGlsbCBydW5uaW5nLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXggKHNlZSB0aGUgbWFuIHBhZ2UgOm1hbnBhZ2U6YHB0aHJlYWRfa2lsbCgzKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YG9zLmtpbGxgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHB0aHJlYWRfc2lnbWFzayhob3csIG1hc2spCisKKyAgIEZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4gIFRoZSBzaWduYWwgbWFzaworICAgaXMgdGhlIHNldCBvZiBzaWduYWxzIHdob3NlIGRlbGl2ZXJ5IGlzIGN1cnJlbnRseSBibG9ja2VkIGZvciB0aGUgY2FsbGVyLgorICAgUmV0dXJuIHRoZSBvbGQgc2lnbmFsIG1hc2sgYXMgYSBzZXQgb2Ygc2lnbmFscy4KKworICAgVGhlIGJlaGF2aW9yIG9mIHRoZSBjYWxsIGlzIGRlcGVuZGVudCBvbiB0aGUgdmFsdWUgb2YgKmhvdyosIGFzIGZvbGxvd3MuCisKKyAgICogOmRhdGE6YFNJR19CTE9DS2A6IFRoZSBzZXQgb2YgYmxvY2tlZCBzaWduYWxzIGlzIHRoZSB1bmlvbiBvZiB0aGUgY3VycmVudAorICAgICBzZXQgYW5kIHRoZSAqbWFzayogYXJndW1lbnQuCisgICAqIDpkYXRhOmBTSUdfVU5CTE9DS2A6IFRoZSBzaWduYWxzIGluICptYXNrKiBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBjdXJyZW50CisgICAgIHNldCBvZiBibG9ja2VkIHNpZ25hbHMuICBJdCBpcyBwZXJtaXNzaWJsZSB0byBhdHRlbXB0IHRvIHVuYmxvY2sgYQorICAgICBzaWduYWwgd2hpY2ggaXMgbm90IGJsb2NrZWQuCisgICAqIDpkYXRhOmBTSUdfU0VUTUFTS2A6IFRoZSBzZXQgb2YgYmxvY2tlZCBzaWduYWxzIGlzIHNldCB0byB0aGUgKm1hc2sqCisgICAgIGFyZ3VtZW50LgorCisgICAqbWFzayogaXMgYSBzZXQgb2Ygc2lnbmFsIG51bWJlcnMgKGUuZy4gezpjb25zdDpgc2lnbmFsLlNJR0lOVGAsCisgICA6Y29uc3Q6YHNpZ25hbC5TSUdURVJNYH0pLiBVc2UgYGByYW5nZSgxLCBzaWduYWwuTlNJRylgYCBmb3IgYSBmdWxsIG1hc2sKKyAgIGluY2x1ZGluZyBhbGwgc2lnbmFscy4KKworICAgRm9yIGV4YW1wbGUsIGBgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbXSlgYCByZWFkcyB0aGUKKyAgIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LiBTZWUgdGhlIG1hbiBwYWdlIDptYW5wYWdlOmBzaWdwcm9jbWFzaygzKWAgYW5kCisgICA6bWFucGFnZTpgcHRocmVhZF9zaWdtYXNrKDMpYCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHNpZ3BlbmRpbmdgIGFuZCA6ZnVuYzpgc2lnd2FpdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGZ1bmN0aW9uOjogc2V0aXRpbWVyKHdoaWNoLCBzZWNvbmRzWywgaW50ZXJ2YWxdKQogCkBAIC0yMDEsMTMgKzI4OSwxNyBAQAogCiAuLiBmdW5jdGlvbjo6IHNldF93YWtldXBfZmQoZmQpCiAKLSAgIFNldCB0aGUgd2FrZXVwIGZkIHRvICpmZCouICBXaGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLCBhIGBgJ1wwJ2BgIGJ5dGUgaXMKLSAgIHdyaXR0ZW4gdG8gdGhlIGZkLiAgVGhpcyBjYW4gYmUgdXNlZCBieSBhIGxpYnJhcnkgdG8gd2FrZXVwIGEgcG9sbCBvciBzZWxlY3QKLSAgIGNhbGwsIGFsbG93aW5nIHRoZSBzaWduYWwgdG8gYmUgZnVsbHkgcHJvY2Vzc2VkLgorICAgU2V0IHRoZSB3YWtldXAgZmlsZSBkZXNjcmlwdG9yIHRvICpmZCouICBXaGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLCB0aGUKKyAgIHNpZ25hbCBudW1iZXIgaXMgd3JpdHRlbiBhcyBhIHNpbmdsZSBieXRlIGludG8gdGhlIGZkLiAgVGhpcyBjYW4gYmUgdXNlZCBieQorICAgYSBsaWJyYXJ5IHRvIHdha2V1cCBhIHBvbGwgb3Igc2VsZWN0IGNhbGwsIGFsbG93aW5nIHRoZSBzaWduYWwgdG8gYmUgZnVsbHkKKyAgIHByb2Nlc3NlZC4KIAogICAgVGhlIG9sZCB3YWtldXAgZmQgaXMgcmV0dXJuZWQuICAqZmQqIG11c3QgYmUgbm9uLWJsb2NraW5nLiAgSXQgaXMgdXAgdG8gdGhlCiAgICBsaWJyYXJ5IHRvIHJlbW92ZSBhbnkgYnl0ZXMgYmVmb3JlIGNhbGxpbmcgcG9sbCBvciBzZWxlY3QgYWdhaW4uCiAKKyAgIFVzZSBmb3IgZXhhbXBsZSBgYHN0cnVjdC51bnBhY2soJyV1QicgJSBsZW4oZGF0YSksIGRhdGEpYGAgdG8gZGVjb2RlIHRoZQorICAgc2lnbmFsIG51bWJlcnMgbGlzdC4KKwogICAgV2hlbiB0aHJlYWRzIGFyZSBlbmFibGVkLCB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZDsKICAgIGF0dGVtcHRpbmcgdG8gY2FsbCBpdCBmcm9tIG90aGVyIHRocmVhZHMgd2lsbCBjYXVzZSBhIDpleGM6YFZhbHVlRXJyb3JgCiAgICBleGNlcHRpb24gdG8gYmUgcmFpc2VkLgpAQCAtMjQ3LDYgKzMzOSw3MyBAQAogICAgOmNvbnN0OmBTSUdURVJNYC4gQSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpbiBhbnkgb3RoZXIgY2FzZS4KIAogCisuLiBmdW5jdGlvbjo6IHNpZ3BlbmRpbmcoKQorCisgICBFeGFtaW5lIHRoZSBzZXQgb2Ygc2lnbmFscyB0aGF0IGFyZSBwZW5kaW5nIGZvciBkZWxpdmVyeSB0byB0aGUgY2FsbGluZworICAgdGhyZWFkIChpLmUuLCB0aGUgc2lnbmFscyB3aGljaCBoYXZlIGJlZW4gcmFpc2VkIHdoaWxlIGJsb2NrZWQpLiAgUmV0dXJuIHRoZQorICAgc2V0IG9mIHRoZSBwZW5kaW5nIHNpZ25hbHMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lncGVuZGluZygyKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AgYW5kIDpmdW5jOmBzaWd3YWl0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBzaWd3YWl0KHNpZ3NldCkKKworICAgU3VzcGVuZCBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSBkZWxpdmVyeSBvZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCAqc2lnc2V0Ki4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZSBzaWduYWwKKyAgIChyZW1vdmVzIGl0IGZyb20gdGhlIHBlbmRpbmcgbGlzdCBvZiBzaWduYWxzKSwgYW5kIHJldHVybnMgdGhlIHNpZ25hbCBudW1iZXIuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lnd2FpdCgzKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AsIDpmdW5jOmBzaWdwZW5kaW5nYCwKKyAgIDpmdW5jOmBzaWd3YWl0aW5mb2AgYW5kIDpmdW5jOmBzaWd0aW1lZHdhaXRgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHNpZ3dhaXRpbmZvKHNpZ3NldCkKKworICAgU3VzcGVuZCBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSBkZWxpdmVyeSBvZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCAqc2lnc2V0Ki4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZQorICAgc2lnbmFsIGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIHBlbmRpbmcgbGlzdCBvZiBzaWduYWxzLiBJZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIGluICpzaWdzZXQqIGlzIGFscmVhZHkgcGVuZGluZyBmb3IgdGhlIGNhbGxpbmcgdGhyZWFkLCB0aGUgZnVuY3Rpb24KKyAgIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhhdCBzaWduYWwuIFRoZSBzaWduYWwKKyAgIGhhbmRsZXIgaXMgbm90IGNhbGxlZCBmb3IgdGhlIGRlbGl2ZXJlZCBzaWduYWwuIFRoZSBmdW5jdGlvbiByYWlzZXMgYW4KKyAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIHRoYXQgaXMgbm90IGluCisgICAqc2lnc2V0Ki4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUKKyAgIDpjOnR5cGU6YHNpZ2luZm9fdGAgc3RydWN0dXJlLCBuYW1lbHk6IDphdHRyOmBzaV9zaWdub2AsIDphdHRyOmBzaV9jb2RlYCwKKyAgIDphdHRyOmBzaV9lcnJub2AsIDphdHRyOmBzaV9waWRgLCA6YXR0cjpgc2lfdWlkYCwgOmF0dHI6YHNpX3N0YXR1c2AsCisgICA6YXR0cjpgc2lfYmFuZGAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lnd2FpdGluZm8oMilgIGZvciBmdXJ0aGVyCisgICBpbmZvcm1hdGlvbikuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBwYXVzZWAsIDpmdW5jOmBzaWd3YWl0YCBhbmQgOmZ1bmM6YHNpZ3RpbWVkd2FpdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogc2lndGltZWR3YWl0KHNpZ3NldCwgdGltZW91dCkKKworICAgTGlrZSA6ZnVuYzpgc2lnd2FpdGluZm9gLCBidXQgdGFrZXMgYW4gYWRkaXRpb25hbCAqdGltZW91dCogYXJndW1lbnQKKyAgIHNwZWNpZnlpbmcgYSB0aW1lb3V0LiBJZiAqdGltZW91dCogaXMgc3BlY2lmaWVkIGFzIDpjb25zdDpgMGAsIGEgcG9sbCBpcworICAgcGVyZm9ybWVkLiBSZXR1cm5zIDpjb25zdDpgTm9uZWAgaWYgYSB0aW1lb3V0IG9jY3Vycy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4IChzZWUgdGhlIG1hbiBwYWdlIDptYW5wYWdlOmBzaWd0aW1lZHdhaXQoMilgIGZvciBmdXJ0aGVyCisgICBpbmZvcm1hdGlvbikuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBwYXVzZWAsIDpmdW5jOmBzaWd3YWl0YCBhbmQgOmZ1bmM6YHNpZ3dhaXRpbmZvYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gX3NpZ25hbC1leGFtcGxlOgogCiBFeGFtcGxlCkBAIC0yNjMsNyArNDIyLDcgQEAKIAogICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgcHJpbnQoJ1NpZ25hbCBoYW5kbGVyIGNhbGxlZCB3aXRoIHNpZ25hbCcsIHNpZ251bSkKLSAgICAgICByYWlzZSBJT0Vycm9yKCJDb3VsZG4ndCBvcGVuIGRldmljZSEiKQorICAgICAgIHJhaXNlIE9TRXJyb3IoIkNvdWxkbid0IG9wZW4gZGV2aWNlISIpCiAKICAgICMgU2V0IHRoZSBzaWduYWwgaGFuZGxlciBhbmQgYSA1LXNlY29uZCBhbGFybQogICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NpdGUucnN0IGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKaW5kZXggZGI5NmFkZC4uM2JmOGE5OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKQEAgLTE2LDcgKzE2LDE0IEBACiAuLiBpbmRleDo6IHRyaXBsZTogbW9kdWxlOyBzZWFyY2g7IHBhdGgKIAogSW1wb3J0aW5nIHRoaXMgbW9kdWxlIHdpbGwgYXBwZW5kIHNpdGUtc3BlY2lmaWMgcGF0aHMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aAotYW5kIGFkZCBhIGZldyBidWlsdGlucy4KK2FuZCBhZGQgYSBmZXcgYnVpbHRpbnMsIHVubGVzcyA6b3B0aW9uOmAtU2Agd2FzIHVzZWQuICBJbiB0aGF0IGNhc2UsIHRoaXMgbW9kdWxlCitjYW4gYmUgc2FmZWx5IGltcG9ydGVkIHdpdGggbm8gYXV0b21hdGljIG1vZGlmaWNhdGlvbnMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aAorb3IgYWRkaXRpb25zIHRvIHRoZSBidWlsdGlucy4gIFRvIGV4cGxpY2l0bHkgdHJpZ2dlciB0aGUgdXN1YWwgc2l0ZS1zcGVjaWZpYworYWRkaXRpb25zLCBjYWxsIHRoZSA6ZnVuYzpgc2l0ZS5tYWluYCBmdW5jdGlvbi4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEltcG9ydGluZyB0aGUgbW9kdWxlIHVzZWQgdG8gdHJpZ2dlciBwYXRocyBtYW5pcHVsYXRpb24gZXZlbiB3aGVuIHVzaW5nCisgICA6b3B0aW9uOmAtU2AuCiAKIC4uIGluZGV4OjoKICAgIHBhaXI6IHNpdGUtcHl0aG9uOyBkaXJlY3RvcnkKQEAgLTMxLDYgKzM4LDE1IEBACiBpZiBpdCByZWZlcnMgdG8gYW4gZXhpc3RpbmcgZGlyZWN0b3J5LCBhbmQgaWYgc28sIGFkZHMgaXQgdG8gYGBzeXMucGF0aGBgIGFuZAogYWxzbyBpbnNwZWN0cyB0aGUgbmV3bHkgYWRkZWQgcGF0aCBmb3IgY29uZmlndXJhdGlvbiBmaWxlcy4KIAorSWYgYSBmaWxlIG5hbWVkICJweXZlbnYuY2ZnIiBleGlzdHMgb25lIGRpcmVjdG9yeSBhYm92ZSBzeXMuZXhlY3V0YWJsZSwKK3N5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBhcmUgc2V0IHRvIHRoYXQgZGlyZWN0b3J5IGFuZAoraXQgaXMgYWxzbyBjaGVja2VkIGZvciBzaXRlLXBhY2thZ2VzIGFuZCBzaXRlLXB5dGhvbiAoc3lzLmJhc2VfcHJlZml4IGFuZAorc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCitpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKK3RoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKKyhjYXNlLWluc2Vuc2l0aXZlKSwgdGhlIHN5c3RlbS1sZXZlbCBwcmVmaXhlcyB3aWxsIHN0aWxsIGFsc28gYmUKK3NlYXJjaGVkIGZvciBzaXRlLXBhY2thZ2VzOyBvdGhlcndpc2UgdGhleSB3b24ndC4KKwogQSBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIGZpbGUgd2hvc2UgbmFtZSBoYXMgdGhlIGZvcm0gOmZpbGU6YHtuYW1lfS5wdGhgCiBhbmQgZXhpc3RzIGluIG9uZSBvZiB0aGUgZm91ciBkaXJlY3RvcmllcyBtZW50aW9uZWQgYWJvdmU7IGl0cyBjb250ZW50cyBhcmUKIGFkZGl0aW9uYWwgaXRlbXMgKG9uZSBwZXIgbGluZSkgdG8gYmUgYWRkZWQgdG8gYGBzeXMucGF0aGBgLiAgTm9uLWV4aXN0aW5nIGl0ZW1zCkBAIC0xMjksOCArMTQ1LDE5IEBACiAgICA6ZmlsZTpgfi9MaWJyYXJ5L1B5dGhvbi97WC5ZfWAgZm9yIE1hYyBmcmFtZXdvcmsgYnVpbGRzLCBhbmQKICAgIDpmaWxlOmB7JUFQUERBVEElfVxcUHl0aG9uYCBmb3IgV2luZG93cy4gIFRoaXMgdmFsdWUgaXMgdXNlZCBieSBEaXN0dXRpbHMgdG8KICAgIGNvbXB1dGUgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllcyBmb3Igc2NyaXB0cywgZGF0YSBmaWxlcywgUHl0aG9uIG1vZHVsZXMsCi0gICBldGMuIGZvciB0aGUgOnJlZjpgdXNlciBpbnN0YWxsYXRpb24gc2NoZW1lIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YC4gIFNlZQotICAgYWxzbyA6ZW52dmFyOmBQWVRIT05VU0VSQkFTRWAuCisgICBldGMuIGZvciB0aGUgOnJlZjpgdXNlciBpbnN0YWxsYXRpb24gc2NoZW1lIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YC4KKyAgIFNlZSBhbHNvIDplbnZ2YXI6YFBZVEhPTlVTRVJCQVNFYC4KKworCisuLiBmdW5jdGlvbjo6IG1haW4oKQorCisgICBBZGRzIGFsbCB0aGUgc3RhbmRhcmQgc2l0ZS1zcGVjaWZpYyBkaXJlY3RvcmllcyB0byB0aGUgbW9kdWxlIHNlYXJjaAorICAgcGF0aC4gIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGlzIG1vZHVsZSBpcyBpbXBvcnRlZCwKKyAgIHVubGVzcyB0aGUgOnByb2dyYW06YHB5dGhvbmAgaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUgOm9wdGlvbjpgLVNgCisgICBmbGFnLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGJlIGNhbGxlZCB1bmNvbmRpdGlvbm5hbGx5LgogCiAKIC4uIGZ1bmN0aW9uOjogYWRkc2l0ZWRpcihzaXRlZGlyLCBrbm93bl9wYXRocz1Ob25lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGQucnN0IGIvRG9jL2xpYnJhcnkvc210cGQucnN0CmluZGV4IDQ4ZGE1ZDAuLjZkZDQ3N2EgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKQEAgLTIwLDE3ICsyMCwyNCBAQAogQWRkaXRpb25hbGx5IHRoZSBTTVRQQ2hhbm5lbCBtYXkgYmUgZXh0ZW5kZWQgdG8gaW1wbGVtZW50IHZlcnkgc3BlY2lmaWMKIGludGVyYWN0aW9uIGJlaGF2aW91ciB3aXRoIFNNVFAgY2xpZW50cy4KIAorVGhlIGNvZGUgc3VwcG9ydHMgOlJGQzpgNTMyMWAsIHBsdXMgdGhlIDpyZmM6YDE4NzBgIFNJWkUgZXh0ZW5zaW9uLgorCisKIFNNVFBTZXJ2ZXIgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAotLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkcikKKy4uIGNsYXNzOjogU01UUFNlcnZlcihsb2NhbGFkZHIsIHJlbW90ZWFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMikKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUFNlcnZlcmAgb2JqZWN0LCB3aGljaCBiaW5kcyB0byBsb2NhbCBhZGRyZXNzCiAgICAqbG9jYWxhZGRyKi4gIEl0IHdpbGwgdHJlYXQgKnJlbW90ZWFkZHIqIGFzIGFuIHVwc3RyZWFtIFNNVFAgcmVsYXllci4gIEl0CiAgICBpbmhlcml0cyBmcm9tIDpjbGFzczpgYXN5bmNvcmUuZGlzcGF0Y2hlcmAsIGFuZCBzbyB3aWxsIGluc2VydCBpdHNlbGYgaW50bwogICAgOm1vZDpgYXN5bmNvcmVgJ3MgZXZlbnQgbG9vcCBvbiBpbnN0YW50aWF0aW9uLgogCisgICAqZGF0YV9zaXplX2xpbWl0KiBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2lsbCBiZQorICAgYWNjZXB0ZWQgaW4gYSBgYERBVEFgYCBjb21tYW5kLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBvciBgYDBgYCBtZWFucyBubworICAgbGltaXQuCisKICAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkKIAogICAgICAgUmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZXhjZXB0aW9uLiBPdmVycmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8KQEAgLTE1NSwxMSArMTYyLDE1IEBACiAgICBDb21tYW5kICBBY3Rpb24gdGFrZW4KICAgID09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIEhFTE8gICAgIEFjY2VwdHMgdGhlIGdyZWV0aW5nIGZyb20gdGhlIGNsaWVudCBhbmQgc3RvcmVzIGl0IGluCi0gICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuCisgICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuICBTZXRzIHNlcnZlciB0byBiYXNlIGNvbW1hbmQgbW9kZS4KKyAgIEVITE8gICAgIEFjY2VwdHMgdGhlIGdyZWV0aW5nIGZyb20gdGhlIGNsaWVudCBhbmQgc3RvcmVzIGl0IGluCisgICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuICBTZXRzIHNlcnZlciB0byBleHRlbmRlZCBjb21tYW5kIG1vZGUuCiAgICBOT09QICAgICBUYWtlcyBubyBhY3Rpb24uCiAgICBRVUlUICAgICBDbG9zZXMgdGhlIGNvbm5lY3Rpb24gY2xlYW5seS4KICAgIE1BSUwgICAgIEFjY2VwdHMgdGhlICJNQUlMIEZST006IiBzeW50YXggYW5kIHN0b3JlcyB0aGUgc3VwcGxpZWQgYWRkcmVzcyBhcwotICAgICAgICAgICAgOmF0dHI6YG1haWxmcm9tYC4KKyAgICAgICAgICAgIDphdHRyOmBtYWlsZnJvbWAuICBJbiBleHRlbmRlZCBjb21tYW5kIG1vZGUsIGFjY2VwdHMgdGhlCisgICAgICAgICAgICA6cmZjOmAxODcwYCBTSVpFIGF0dHJpYnV0ZSBhbmQgcmVzcG9uZHMgYXBwcm9wcmlhdGVseSBiYXNlZCBvbiB0aGUKKyAgICAgICAgICAgIHZhbHVlIG9mIGBgZGF0YV9zaXplX2xpbWl0YGAuCiAgICBSQ1BUICAgICBBY2NlcHRzIHRoZSAiUkNQVCBUTzoiIHN5bnRheCBhbmQgc3RvcmVzIHRoZSBzdXBwbGllZCBhZGRyZXNzZXMgaW4KICAgICAgICAgICAgIHRoZSA6YXR0cjpgcmNwdHRvc2AgbGlzdC4KICAgIFJTRVQgICAgIFJlc2V0cyB0aGUgOmF0dHI6YG1haWxmcm9tYCwgOmF0dHI6YHJjcHR0b3NgLCBhbmQKQEAgLTE2Nyw0ICsxNzgsNyBAQAogICAgREFUQSAgICAgU2V0cyB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gOmF0dHI6YERBVEFgIGFuZCBzdG9yZXMgcmVtYWluaW5nIGxpbmVzCiAgICAgICAgICAgICBmcm9tIHRoZSBjbGllbnQgaW4gOmF0dHI6YHJlY2VpdmVkX2RhdGFgIHVudGlsIHRoZSB0ZXJtaW5hdG9yCiAgICAgICAgICAgICAiXHJcbi5cclxuIiBpcyByZWNlaXZlZC4KKyAgIEhFTFAgICAgIFJldHVybnMgbWluaW1hbCBpbmZvcm1hdGlvbiBvbiBjb21tYW5kIHN5bnRheAorICAgVlJGWSAgICAgUmV0dXJucyBjb2RlIDI1MiAodGhlIHNlcnZlciBkb2Vzbid0IGtub3cgaWYgdGhlIGFkZHJlc3MgaXMgdmFsaWQpCisgICBFWFBOICAgICBSZXBvcnRzIHRoYXQgdGhlIGNvbW1hbmQgaXMgbm90IGltcGxlbWVudGVkLgogICAgPT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAppbmRleCAzMTAxYWI3Li43MTE5ODFmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdApAQCAtMjAsNyArMjAsNyBAQAogUHJvdG9jb2wpIGFuZCA6cmZjOmAxODY5YCAoU01UUCBTZXJ2aWNlIEV4dGVuc2lvbnMpLgogCiAKLS4uIGNsYXNzOjogU01UUChob3N0PScnLCBwb3J0PTAsIGxvY2FsX2hvc3RuYW1lPU5vbmVbLCB0aW1lb3V0XSkKKy4uIGNsYXNzOjogU01UUChob3N0PScnLCBwb3J0PTAsIGxvY2FsX2hvc3RuYW1lPU5vbmVbLCB0aW1lb3V0XSwgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgQSA6Y2xhc3M6YFNNVFBgIGluc3RhbmNlIGVuY2Fwc3VsYXRlcyBhbiBTTVRQIGNvbm5lY3Rpb24uICBJdCBoYXMgbWV0aG9kcwogICAgdGhhdCBzdXBwb3J0IGEgZnVsbCByZXBlcnRvaXJlIG9mIFNNVFAgYW5kIEVTTVRQIG9wZXJhdGlvbnMuIElmIHRoZSBvcHRpb25hbApAQCAtMjksMTMgKzI5LDM0IEBACiAgICByYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBob3N0IGRvZXNuJ3QgcmVzcG9uZCBjb3JyZWN0bHkuIFRoZSBvcHRpb25hbAogICAgKnRpbWVvdXQqIHBhcmFtZXRlciBzcGVjaWZpZXMgYSB0aW1lb3V0IGluIHNlY29uZHMgZm9yIGJsb2NraW5nIG9wZXJhdGlvbnMKICAgIGxpa2UgdGhlIGNvbm5lY3Rpb24gYXR0ZW1wdCAoaWYgbm90IHNwZWNpZmllZCwgdGhlIGdsb2JhbCBkZWZhdWx0IHRpbWVvdXQKLSAgIHNldHRpbmcgd2lsbCBiZSB1c2VkKS4KKyAgIHNldHRpbmcgd2lsbCBiZSB1c2VkKS4gVGhlIG9wdGlvbmFsIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciBhbGxvd3MgdG8gYmluZCB0byBzb21lCisgICBzcGVjaWZpYyBzb3VyY2UgYWRkcmVzcyBpbiBhIG1hY2hpbmUgd2l0aCBtdWx0aXBsZSBuZXR3b3JrIGludGVyZmFjZXMsCisgICBhbmQvb3IgdG8gc29tZSBzcGVjaWZpYyBzb3VyY2UgVENQIHBvcnQuIEl0IHRha2VzIGEgMi10dXBsZSAoaG9zdCwgcG9ydCksCisgICBmb3IgdGhlIHNvY2tldCB0byBiaW5kIHRvIGFzIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUgY29ubmVjdGluZy4gSWYKKyAgIG9taXR0ZWQgKG9yIGlmIGhvc3Qgb3IgcG9ydCBhcmUgYGAnJ2BgIGFuZC9vciAwIHJlc3BlY3RpdmVseSkgdGhlIE9TIGRlZmF1bHQKKyAgIGJlaGF2aW9yIHdpbGwgYmUgdXNlZC4KIAogICAgRm9yIG5vcm1hbCB1c2UsIHlvdSBzaG91bGQgb25seSByZXF1aXJlIHRoZSBpbml0aWFsaXphdGlvbi9jb25uZWN0LAogICAgOm1ldGg6YHNlbmRtYWlsYCwgYW5kIDptZXRoOmBxdWl0YCBtZXRob2RzLiAgQW4gZXhhbXBsZSBpcyBpbmNsdWRlZCBiZWxvdy4KIAorICAgVGhlIDpjbGFzczpgU01UUGAgY2xhc3Mgc3VwcG9ydHMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuICBXaGVuIHVzZWQKKyAgIGxpa2UgdGhpcywgdGhlIFNNVFAgYGBRVUlUYGAgY29tbWFuZCBpcyBpc3N1ZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZQorICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBleGl0cy4gIEUuZy46OgogCi0uLiBjbGFzczo6IFNNVFBfU1NMKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lWywgdGltZW91dF0pCisgICAgPj4+IGZyb20gc210cGxpYiBpbXBvcnQgU01UUAorICAgID4+PiB3aXRoIFNNVFAoImRvbWFpbi5vcmciKSBhcyBzbXRwOgorICAgIC4uLiAgICAgc210cC5ub29wKCkKKyAgICAuLi4KKyAgICAoMjUwLCBiJ09rJykKKyAgICA+Pj4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIHNvdXJjZV9hZGRyZXNzIGFyZ3VtZW50IHdhcyBhZGRlZC4KKworLi4gY2xhc3M6OiBTTVRQX1NTTChob3N0PScnLCBwb3J0PTAsIGxvY2FsX2hvc3RuYW1lPU5vbmUsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZVssIHRpbWVvdXRdLCBjb250ZXh0PU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpCiAKICAgIEEgOmNsYXNzOmBTTVRQX1NTTGAgaW5zdGFuY2UgYmVoYXZlcyBleGFjdGx5IHRoZSBzYW1lIGFzIGluc3RhbmNlcyBvZgogICAgOmNsYXNzOmBTTVRQYC4gOmNsYXNzOmBTTVRQX1NTTGAgc2hvdWxkIGJlIHVzZWQgZm9yIHNpdHVhdGlvbnMgd2hlcmUgU1NMIGlzCkBAIC00MywxOCArNjQsMzMgQEAKICAgIG5vdCBhcHByb3ByaWF0ZS4gSWYgKmhvc3QqIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBsb2NhbCBob3N0IGlzIHVzZWQuIElmCiAgICAqcG9ydCogaXMgemVybywgdGhlIHN0YW5kYXJkIFNNVFAtb3Zlci1TU0wgcG9ydCAoNDY1KSBpcyB1c2VkLiAqa2V5ZmlsZSoKICAgIGFuZCAqY2VydGZpbGUqIGFyZSBhbHNvIG9wdGlvbmFsLCBhbmQgY2FuIGNvbnRhaW4gYSBQRU0gZm9ybWF0dGVkIHByaXZhdGUga2V5Ci0gICBhbmQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLiBUaGUgb3B0aW9uYWwgKnRpbWVvdXQqCisgICBhbmQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLiAqY29udGV4dCogYWxzbyBvcHRpb25hbCwgY2FuIGNvbnRhaW4KKyAgIGEgU1NMQ29udGV4dCwgYW5kIGlzIGFuIGFsdGVybmF0aXZlIHRvIGtleWZpbGUgYW5kIGNlcnRmaWxlOyBJZiBpdCBpcyBzcGVjaWZpZWQgYm90aAorICAga2V5ZmlsZSBhbmQgY2VydGZpbGUgbXVzdCBiZSBOb25lLiAgVGhlIG9wdGlvbmFsICp0aW1lb3V0KgogICAgcGFyYW1ldGVyIHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgYmxvY2tpbmcgb3BlcmF0aW9ucyBsaWtlIHRoZQogICAgY29ubmVjdGlvbiBhdHRlbXB0IChpZiBub3Qgc3BlY2lmaWVkLCB0aGUgZ2xvYmFsIGRlZmF1bHQgdGltZW91dCBzZXR0aW5nCi0gICB3aWxsIGJlIHVzZWQpLgorICAgd2lsbCBiZSB1c2VkKS4gVGhlIG9wdGlvbmFsIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciBhbGxvd3MgdG8gYmluZCB0byBzb21lCisgICBzcGVjaWZpYyBzb3VyY2UgYWRkcmVzcyBpbiBhIG1hY2hpbmUgd2l0aCBtdWx0aXBsZSBuZXR3b3JrIGludGVyZmFjZXMsCisgICBhbmQvb3IgdG8gc29tZSBzcGVjaWZpYyBzb3VyY2UgdGNwIHBvcnQuIEl0IHRha2VzIGEgMi10dXBsZSAoaG9zdCwgcG9ydCksCisgICBmb3IgdGhlIHNvY2tldCB0byBiaW5kIHRvIGFzIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUgY29ubmVjdGluZy4gSWYKKyAgIG9taXR0ZWQgKG9yIGlmIGhvc3Qgb3IgcG9ydCBhcmUgYGAnJ2BgIGFuZC9vciAwIHJlc3BlY3RpdmVseSkgdGhlIE9TIGRlZmF1bHQKKyAgIGJlaGF2aW9yIHdpbGwgYmUgdXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpjb250ZXh0KiB3YXMgYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBzb3VyY2VfYWRkcmVzcyBhcmd1bWVudCB3YXMgYWRkZWQuCiAKIAotLi4gY2xhc3M6OiBMTVRQKGhvc3Q9JycsIHBvcnQ9TE1UUF9QT1JULCBsb2NhbF9ob3N0bmFtZT1Ob25lKQorLi4gY2xhc3M6OiBMTVRQKGhvc3Q9JycsIHBvcnQ9TE1UUF9QT1JULCBsb2NhbF9ob3N0bmFtZT1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBUaGUgTE1UUCBwcm90b2NvbCwgd2hpY2ggaXMgdmVyeSBzaW1pbGFyIHRvIEVTTVRQLCBpcyBoZWF2aWx5IGJhc2VkIG9uIHRoZQotICAgc3RhbmRhcmQgU01UUCBjbGllbnQuIEl0J3MgY29tbW9uIHRvIHVzZSBVbml4IHNvY2tldHMgZm9yIExNVFAsIHNvIG91ciA6bWV0aDpgY29ubmVjdGAKLSAgIG1ldGhvZCBtdXN0IHN1cHBvcnQgdGhhdCBhcyB3ZWxsIGFzIGEgcmVndWxhciBob3N0OnBvcnQgc2VydmVyLiBUbyBzcGVjaWZ5IGEKLSAgIFVuaXggc29ja2V0LCB5b3UgbXVzdCB1c2UgYW4gYWJzb2x1dGUgcGF0aCBmb3IgKmhvc3QqLCBzdGFydGluZyB3aXRoIGEgJy8nLgorICAgc3RhbmRhcmQgU01UUCBjbGllbnQuIEl0J3MgY29tbW9uIHRvIHVzZSBVbml4IHNvY2tldHMgZm9yIExNVFAsIHNvIG91cgorICAgOm1ldGg6YGNvbm5lY3RgIG1ldGhvZCBtdXN0IHN1cHBvcnQgdGhhdCBhcyB3ZWxsIGFzIGEgcmVndWxhciBob3N0OnBvcnQKKyAgIHNlcnZlci4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50cyBsb2NhbF9ob3N0bmFtZSBhbmQgc291cmNlX2FkZHJlc3MgaGF2ZSB0aGUKKyAgIHNhbWUgbWVhbmluZyBhcyB0aGF0IG9mIFNNVFAgY2xpZW50LiBUbyBzcGVjaWZ5IGEgVW5peCBzb2NrZXQsIHlvdSBtdXN0IHVzZQorICAgYW4gYWJzb2x1dGUgcGF0aCBmb3IgKmhvc3QqLCBzdGFydGluZyB3aXRoIGEgJy8nLgogCiAgICBBdXRoZW50aWNhdGlvbiBpcyBzdXBwb3J0ZWQsIHVzaW5nIHRoZSByZWd1bGFyIFNNVFAgbWVjaGFuaXNtLiBXaGVuIHVzaW5nIGEgVW5peAogICAgc29ja2V0LCBMTVRQIGdlbmVyYWxseSBkb24ndCBzdXBwb3J0IG9yIHJlcXVpcmUgYW55IGF1dGhlbnRpY2F0aW9uLCBidXQgeW91cgpAQCAtMjQyLDcgKzI3OCw3IEBACiAgICAgICBObyBzdWl0YWJsZSBhdXRoZW50aWNhdGlvbiBtZXRob2Qgd2FzIGZvdW5kLgogCiAKLS4uIG1ldGhvZDo6IFNNVFAuc3RhcnR0bHMoa2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lKQorLi4gbWV0aG9kOjogU01UUC5zdGFydHRscyhrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSkKIAogICAgUHV0IHRoZSBTTVRQIGNvbm5lY3Rpb24gaW4gVExTIChUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkpIG1vZGUuICBBbGwgU01UUAogICAgY29tbWFuZHMgdGhhdCBmb2xsb3cgd2lsbCBiZSBlbmNyeXB0ZWQuICBZb3Ugc2hvdWxkIHRoZW4gY2FsbCA6bWV0aDpgZWhsb2AKQEAgLTI1MSw2ICsyODcsOSBAQAogICAgSWYgKmtleWZpbGUqIGFuZCAqY2VydGZpbGUqIGFyZSBwcm92aWRlZCwgdGhlc2UgYXJlIHBhc3NlZCB0byB0aGUgOm1vZDpgc29ja2V0YAogICAgbW9kdWxlJ3MgOmZ1bmM6YHNzbGAgZnVuY3Rpb24uCiAKKyAgIE9wdGlvbmFsICpjb250ZXh0KiBwYXJhbWV0ZXIgaXMgYSA6Y2xhc3M6YHNzbC5TU0xDb250ZXh0YCBvYmplY3Q7IFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgdG8KKyAgIHVzaW5nIGEga2V5ZmlsZSBhbmQgYSBjZXJ0ZmlsZSBhbmQgaWYgc3BlY2lmaWVkIGJvdGggKmtleWZpbGUqIGFuZCAqY2VydGZpbGUqIHNob3VsZCBiZSBOb25lLgorCiAgICBJZiB0aGVyZSBoYXMgYmVlbiBubyBwcmV2aW91cyBgYEVITE9gYCBvciBgYEhFTE9gYCBjb21tYW5kIHRoaXMgc2Vzc2lvbiwKICAgIHRoaXMgbWV0aG9kIHRyaWVzIEVTTVRQIGBgRUhMT2BgIGZpcnN0LgogCkBAIC0yNjMsNiArMzAyLDkgQEAKICAgIDpleGM6YFJ1bnRpbWVFcnJvcmAKICAgICAgU1NML1RMUyBzdXBwb3J0IGlzIG5vdCBhdmFpbGFibGUgdG8geW91ciBQeXRob24gaW50ZXJwcmV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqY29udGV4dCogd2FzIGFkZGVkLgorCiAKIC4uIG1ldGhvZDo6IFNNVFAuc2VuZG1haWwoZnJvbV9hZGRyLCB0b19hZGRycywgbXNnLCBtYWlsX29wdGlvbnM9W10sIHJjcHRfb3B0aW9ucz1bXSkKIApAQCAtMzIwLDcgKzM2Miw4IEBACiAgICBVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCB0aGUgY29ubmVjdGlvbiB3aWxsIGJlIG9wZW4gZXZlbiBhZnRlciBhbiBleGNlcHRpb24gaXMKICAgIHJhaXNlZC4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgKm1zZyogbWF5IGJlIGEgYnl0ZSBzdHJpbmcuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgKm1zZyogbWF5IGJlIGEgYnl0ZSBzdHJpbmcuCiAKIAogLi4gbWV0aG9kOjogU01UUC5zZW5kX21lc3NhZ2UobXNnLCBmcm9tX2FkZHI9Tm9uZSwgdG9fYWRkcnM9Tm9uZSwgXApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKaW5kZXggMGFlZjE4My4uMDJhZjljYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CkBAIC00MCw5ICs0MCwyMyBAQAogRGVwZW5kaW5nIG9uIHRoZSBzeXN0ZW0gYW5kIHRoZSBidWlsZCBvcHRpb25zLCB2YXJpb3VzIHNvY2tldCBmYW1pbGllcwogYXJlIHN1cHBvcnRlZCBieSB0aGlzIG1vZHVsZS4KIAotU29ja2V0IGFkZHJlc3NlcyBhcmUgcmVwcmVzZW50ZWQgYXMgZm9sbG93czoKK1RoZSBhZGRyZXNzIGZvcm1hdCByZXF1aXJlZCBieSBhIHBhcnRpY3VsYXIgc29ja2V0IG9iamVjdCBpcyBhdXRvbWF0aWNhbGx5CitzZWxlY3RlZCBiYXNlZCBvbiB0aGUgYWRkcmVzcyBmYW1pbHkgc3BlY2lmaWVkIHdoZW4gdGhlIHNvY2tldCBvYmplY3Qgd2FzCitjcmVhdGVkLiAgU29ja2V0IGFkZHJlc3NlcyBhcmUgcmVwcmVzZW50ZWQgYXMgZm9sbG93czoKIAotLSBBIHNpbmdsZSBzdHJpbmcgaXMgdXNlZCBmb3IgdGhlIDpjb25zdDpgQUZfVU5JWGAgYWRkcmVzcyBmYW1pbHkuCistIFRoZSBhZGRyZXNzIG9mIGFuIDpjb25zdDpgQUZfVU5JWGAgc29ja2V0IGJvdW5kIHRvIGEgZmlsZSBzeXN0ZW0gbm9kZQorICBpcyByZXByZXNlbnRlZCBhcyBhIHN0cmluZywgdXNpbmcgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGFuZCB0aGUKKyAgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgKHNlZSA6cGVwOmAzODNgKS4gIEFuIGFkZHJlc3MgaW4KKyAgTGludXgncyBhYnN0cmFjdCBuYW1lc3BhY2UgaXMgcmV0dXJuZWQgYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgd2l0aAorICBhbiBpbml0aWFsIG51bGwgYnl0ZTsgbm90ZSB0aGF0IHNvY2tldHMgaW4gdGhpcyBuYW1lc3BhY2UgY2FuCisgIGNvbW11bmljYXRlIHdpdGggbm9ybWFsIGZpbGUgc3lzdGVtIHNvY2tldHMsIHNvIHByb2dyYW1zIGludGVuZGVkIHRvCisgIHJ1biBvbiBMaW51eCBtYXkgbmVlZCB0byBkZWFsIHdpdGggYm90aCB0eXBlcyBvZiBhZGRyZXNzLiAgQSBzdHJpbmcgb3IKKyAgOmNsYXNzOmBieXRlc2Agb2JqZWN0IGNhbiBiZSB1c2VkIGZvciBlaXRoZXIgdHlwZSBvZiBhZGRyZXNzIHdoZW4KKyAgcGFzc2luZyBpdCBhcyBhbiBhcmd1bWVudC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFByZXZpb3VzbHksIDpjb25zdDpgQUZfVU5JWGAgc29ja2V0IHBhdGhzIHdlcmUgYXNzdW1lZCB0byB1c2UgVVRGLTgKKyAgICAgIGVuY29kaW5nLgogCiAtIEEgcGFpciBgYChob3N0LCBwb3J0KWBgIGlzIHVzZWQgZm9yIHRoZSA6Y29uc3Q6YEFGX0lORVRgIGFkZHJlc3MgZmFtaWx5LAogICB3aGVyZSAqaG9zdCogaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGVpdGhlciBhIGhvc3RuYW1lIGluIEludGVybmV0IGRvbWFpbgpAQCAtODAsNiArOTQsMTkgQEAKICAgICBJZiAqYWRkcl90eXBlKiBpcyA6Y29uc3Q6YFRJUENfQUREUl9JRGAsIHRoZW4gKnYxKiBpcyB0aGUgbm9kZSwgKnYyKiBpcyB0aGUKICAgICByZWZlcmVuY2UsIGFuZCAqdjMqIHNob3VsZCBiZSBzZXQgdG8gMC4KIAorLSBBIHR1cGxlIGBgKGludGVyZmFjZSwgKWBgIGlzIHVzZWQgZm9yIHRoZSA6Y29uc3Q6YEFGX0NBTmAgYWRkcmVzcyBmYW1pbHksCisgIHdoZXJlICppbnRlcmZhY2UqIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWUgbGlrZQorICBgYCdjYW4wJ2BgLiBUaGUgbmV0d29yayBpbnRlcmZhY2UgbmFtZSBgYCcnYGAgY2FuIGJlIHVzZWQgdG8gcmVjZWl2ZSBwYWNrZXRzCisgIGZyb20gYWxsIG5ldHdvcmsgaW50ZXJmYWNlcyBvZiB0aGlzIGZhbWlseS4KKworLSBBIHN0cmluZyBvciBhIHR1cGxlIGBgKGlkLCB1bml0KWBgIGlzIHVzZWQgZm9yIHRoZSA6Y29uc3Q6YFNZU1BST1RPX0NPTlRST0xgCisgIHByb3RvY29sIG9mIHRoZSA6Y29uc3Q6YFBGX1NZU1RFTWAgZmFtaWx5LiBUaGUgc3RyaW5nIGlzIHRoZSBuYW1lIG9mIGEKKyAga2VybmVsIGNvbnRyb2wgdXNpbmcgYSBkeW5hbWljYWxseS1hc3NpZ25lZCBJRC4gVGhlIHR1cGxlIGNhbiBiZSB1c2VkIGlmIElECisgIGFuZCB1bml0IG51bWJlciBvZiB0aGUga2VybmVsIGNvbnRyb2wgYXJlIGtub3duIG9yIGlmIGEgcmVnaXN0ZXJlZCBJRCBpcworICB1c2VkLgorCisgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAtIENlcnRhaW4gb3RoZXIgYWRkcmVzcyBmYW1pbGllcyAoOmNvbnN0OmBBRl9CTFVFVE9PVEhgLCA6Y29uc3Q6YEFGX1BBQ0tFVGApCiAgIHN1cHBvcnQgc3BlY2lmaWMgcmVwcmVzZW50YXRpb25zLgogCkBAIC05OSw4ICsxMjYsOSBAQAogbnVtZXJpYyBhZGRyZXNzIGluICpob3N0KiBwb3J0aW9uLgogCiBBbGwgZXJyb3JzIHJhaXNlIGV4Y2VwdGlvbnMuICBUaGUgbm9ybWFsIGV4Y2VwdGlvbnMgZm9yIGludmFsaWQgYXJndW1lbnQgdHlwZXMKLWFuZCBvdXQtb2YtbWVtb3J5IGNvbmRpdGlvbnMgY2FuIGJlIHJhaXNlZDsgZXJyb3JzIHJlbGF0ZWQgdG8gc29ja2V0IG9yIGFkZHJlc3MKLXNlbWFudGljcyByYWlzZSA6ZXhjOmBzb2NrZXQuZXJyb3JgIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK2FuZCBvdXQtb2YtbWVtb3J5IGNvbmRpdGlvbnMgY2FuIGJlIHJhaXNlZDsgc3RhcnRpbmcgZnJvbSBQeXRob24gMy4zLCBlcnJvcnMKK3JlbGF0ZWQgdG8gc29ja2V0IG9yIGFkZHJlc3Mgc2VtYW50aWNzIHJhaXNlIDpleGM6YE9TRXJyb3JgIG9yIG9uZSBvZiBpdHMKK3N1YmNsYXNzZXMgKHRoZXkgdXNlZCB0byByYWlzZSA6ZXhjOmBzb2NrZXQuZXJyb3JgKS4KIAogTm9uLWJsb2NraW5nIG1vZGUgaXMgc3VwcG9ydGVkIHRocm91Z2ggOm1ldGg6YH5zb2NrZXQuc2V0YmxvY2tpbmdgLiAgQQogZ2VuZXJhbGl6YXRpb24gb2YgdGhpcyBiYXNlZCBvbiB0aW1lb3V0cyBpcyBzdXBwb3J0ZWQgdGhyb3VnaApAQCAtMTE1LDIwICsxNDMsMTUgQEAKIAogLi4gZXhjZXB0aW9uOjogZXJyb3IKIAotICAgLi4gaW5kZXg6OiBtb2R1bGU6IGVycm5vCisgICBBIGRlcHJlY2F0ZWQgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKLSAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgSU9FcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBmb3Igc29ja2V0LXJlbGF0ZWQKLSAgIGVycm9ycy4gIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGluc3BlY3QgaXRzIGBgZXJybm9gYCBhdHRyaWJ1dGUgdG8KLSAgIGRpc2NyaW1pbmF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBraW5kcyBvZiBlcnJvcnMuCi0KLSAgIC4uIHNlZWFsc286OgotICAgICAgVGhlIDptb2Q6YGVycm5vYCBtb2R1bGUgY29udGFpbnMgc3ltYm9saWMgbmFtZXMgZm9yIHRoZSBlcnJvciBjb2RlcwotICAgICAgZGVmaW5lZCBieSB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEZvbGxvd2luZyA6cGVwOmAzMTUxYCwgdGhpcyBjbGFzcyB3YXMgbWFkZSBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBleGNlcHRpb246OiBoZXJyb3IKIAotICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBzb2NrZXQuZXJyb3JgLCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgZm9yCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgLCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgZm9yCiAgICBhZGRyZXNzLXJlbGF0ZWQgZXJyb3JzLCBpLmUuIGZvciBmdW5jdGlvbnMgdGhhdCB1c2UgKmhfZXJybm8qIGluIHRoZSBQT1NJWAogICAgQyBBUEksIGluY2x1ZGluZyA6ZnVuYzpgZ2V0aG9zdGJ5bmFtZV9leGAgYW5kIDpmdW5jOmBnZXRob3N0YnlhZGRyYC4KICAgIFRoZSBhY2NvbXBhbnlpbmcgdmFsdWUgaXMgYSBwYWlyIGBgKGhfZXJybm8sIHN0cmluZylgYCByZXByZXNlbnRpbmcgYW4KQEAgLTEzNiwxMCArMTU5LDEyIEBACiAgICAqc3RyaW5nKiByZXByZXNlbnRzIHRoZSBkZXNjcmlwdGlvbiBvZiAqaF9lcnJubyosIGFzIHJldHVybmVkIGJ5IHRoZQogICAgOmM6ZnVuYzpgaHN0cmVycm9yYCBDIGZ1bmN0aW9uLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBjbGFzcyB3YXMgbWFkZSBhIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAuLiBleGNlcHRpb246OiBnYWllcnJvcgogCi0gICBBIHN1YmNsYXNzIG9mIDpleGM6YHNvY2tldC5lcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBmb3IKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBmb3IKICAgIGFkZHJlc3MtcmVsYXRlZCBlcnJvcnMgYnkgOmZ1bmM6YGdldGFkZHJpbmZvYCBhbmQgOmZ1bmM6YGdldG5hbWVpbmZvYC4KICAgIFRoZSBhY2NvbXBhbnlpbmcgdmFsdWUgaXMgYSBwYWlyIGBgKGVycm9yLCBzdHJpbmcpYGAgcmVwcmVzZW50aW5nIGFuIGVycm9yCiAgICByZXR1cm5lZCBieSBhIGxpYnJhcnkgY2FsbC4gICpzdHJpbmcqIHJlcHJlc2VudHMgdGhlIGRlc2NyaXB0aW9uIG9mCkBAIC0xNDcsMTUgKzE3MiwxOSBAQAogICAgbnVtZXJpYyAqZXJyb3IqIHZhbHVlIHdpbGwgbWF0Y2ggb25lIG9mIHRoZSA6Y29uc3Q6YEVBSV9cKmAgY29uc3RhbnRzCiAgICBkZWZpbmVkIGluIHRoaXMgbW9kdWxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBjbGFzcyB3YXMgbWFkZSBhIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAuLiBleGNlcHRpb246OiB0aW1lb3V0CiAKLSAgIEEgc3ViY2xhc3Mgb2YgOmV4Yzpgc29ja2V0LmVycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYSB0aW1lb3V0CisgICBBIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgLCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhIHRpbWVvdXQKICAgIG9jY3VycyBvbiBhIHNvY2tldCB3aGljaCBoYXMgaGFkIHRpbWVvdXRzIGVuYWJsZWQgdmlhIGEgcHJpb3IgY2FsbCB0bwogICAgOm1ldGg6YH5zb2NrZXQuc2V0dGltZW91dGAgKG9yIGltcGxpY2l0bHkgdGhyb3VnaAogICAgOmZ1bmM6YH5zb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXRgKS4gIFRoZSBhY2NvbXBhbnlpbmcgdmFsdWUgaXMgYSBzdHJpbmcKICAgIHdob3NlIHZhbHVlIGlzIGN1cnJlbnRseSBhbHdheXMgInRpbWVkIG91dCIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGNsYXNzIHdhcyBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIC4uIGRhdGE6OiBBRl9VTklYCiAgICAgICAgICAgQUZfSU5FVApAQCAtMTk4LDYgKzIyNyw3IEBACiAgICAgICAgICAgU09NQVhDT05OCiAgICAgICAgICAgTVNHXyoKICAgICAgICAgICBTT0xfKgorICAgICAgICAgIFNDTV8qCiAgICAgICAgICAgSVBQUk9UT18qCiAgICAgICAgICAgSVBQT1JUXyoKICAgICAgICAgICBJTkFERFJfKgpAQCAtMjE1LDYgKzI0NSwzMiBAQAogICAgaW4gdGhlIFVuaXggaGVhZGVyIGZpbGVzIGFyZSBkZWZpbmVkOyBmb3IgYSBmZXcgc3ltYm9scywgZGVmYXVsdCB2YWx1ZXMgYXJlCiAgICBwcm92aWRlZC4KIAorLi4gZGF0YTo6IEFGX0NBTgorICAgICAgICAgIFBGX0NBTgorICAgICAgICAgIFNPTF9DQU5fKgorICAgICAgICAgIENBTl8qCisKKyAgIE1hbnkgY29uc3RhbnRzIG9mIHRoZXNlIGZvcm1zLCBkb2N1bWVudGVkIGluIHRoZSBMaW51eCBkb2N1bWVudGF0aW9uLCBhcmUKKyAgIGFsc28gZGVmaW5lZCBpbiB0aGUgc29ja2V0IG1vZHVsZS4KKworICAgQXZhaWxhYmlsaXR5OiBMaW51eCA+PSAyLjYuMjUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBBRl9SRFMKKyAgICAgICAgICBQRl9SRFMKKyAgICAgICAgICBTT0xfUkRTCisgICAgICAgICAgUkRTXyoKKworICAgTWFueSBjb25zdGFudHMgb2YgdGhlc2UgZm9ybXMsIGRvY3VtZW50ZWQgaW4gdGhlIExpbnV4IGRvY3VtZW50YXRpb24sIGFyZQorICAgYWxzbyBkZWZpbmVkIGluIHRoZSBzb2NrZXQgbW9kdWxlLgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4ID49IDIuNi4zMC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZGF0YTo6IFNJT18qCiAgICAgICAgICAgUkNWQUxMXyoKIApAQCAtMzkzLDEwICs0NDksMTUgQEAKIAogICAgQ3JlYXRlIGEgbmV3IHNvY2tldCB1c2luZyB0aGUgZ2l2ZW4gYWRkcmVzcyBmYW1pbHksIHNvY2tldCB0eXBlIGFuZCBwcm90b2NvbAogICAgbnVtYmVyLiAgVGhlIGFkZHJlc3MgZmFtaWx5IHNob3VsZCBiZSA6Y29uc3Q6YEFGX0lORVRgICh0aGUgZGVmYXVsdCksCi0gICA6Y29uc3Q6YEFGX0lORVQ2YCBvciA6Y29uc3Q6YEFGX1VOSVhgLiAgVGhlIHNvY2tldCB0eXBlIHNob3VsZCBiZQotICAgOmNvbnN0OmBTT0NLX1NUUkVBTWAgKHRoZSBkZWZhdWx0KSwgOmNvbnN0OmBTT0NLX0RHUkFNYCBvciBwZXJoYXBzIG9uZSBvZiB0aGUKLSAgIG90aGVyIGBgU09DS19gYCBjb25zdGFudHMuICBUaGUgcHJvdG9jb2wgbnVtYmVyIGlzIHVzdWFsbHkgemVybyBhbmQgbWF5IGJlCi0gICBvbWl0dGVkIGluIHRoYXQgY2FzZS4KKyAgIDpjb25zdDpgQUZfSU5FVDZgLCA6Y29uc3Q6YEFGX1VOSVhgLCA6Y29uc3Q6YEFGX0NBTmAgb3IgOmNvbnN0OmBBRl9SRFNgLiBUaGUKKyAgIHNvY2tldCB0eXBlIHNob3VsZCBiZSA6Y29uc3Q6YFNPQ0tfU1RSRUFNYCAodGhlIGRlZmF1bHQpLAorICAgOmNvbnN0OmBTT0NLX0RHUkFNYCwgOmNvbnN0OmBTT0NLX1JBV2Agb3IgcGVyaGFwcyBvbmUgb2YgdGhlIG90aGVyIGBgU09DS19gYAorICAgY29uc3RhbnRzLiBUaGUgcHJvdG9jb2wgbnVtYmVyIGlzIHVzdWFsbHkgemVybyBhbmQgbWF5IGJlIG9taXR0ZWQgaW4gdGhhdAorICAgY2FzZSBvciA6Y29uc3Q6YENBTl9SQVdgIGluIGNhc2UgdGhlIGFkZHJlc3MgZmFtaWx5IGlzIDpjb25zdDpgQUZfQ0FOYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBBRl9DQU4gZmFtaWx5IHdhcyBhZGRlZC4KKyAgICAgIFRoZSBBRl9SRFMgZmFtaWx5IHdhcyBhZGRlZC4KIAogCiAuLiBmdW5jdGlvbjo6IHNvY2tldHBhaXIoW2ZhbWlseVssIHR5cGVbLCBwcm90b11dXSkKQEAgLTQ2NCw3ICs1MjUsNyBAQAogICAgVW5peCBtYW51YWwgcGFnZSA6bWFucGFnZTpgaW5ldCgzKWAgZm9yIGRldGFpbHMuCiAKICAgIElmIHRoZSBJUHY0IGFkZHJlc3Mgc3RyaW5nIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uIGlzIGludmFsaWQsCi0gICA6ZXhjOmBzb2NrZXQuZXJyb3JgIHdpbGwgYmUgcmFpc2VkLiBOb3RlIHRoYXQgZXhhY3RseSB3aGF0IGlzIHZhbGlkIGRlcGVuZHMgb24KKyAgIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiBOb3RlIHRoYXQgZXhhY3RseSB3aGF0IGlzIHZhbGlkIGRlcGVuZHMgb24KICAgIHRoZSB1bmRlcmx5aW5nIEMgaW1wbGVtZW50YXRpb24gb2YgOmM6ZnVuYzpgaW5ldF9hdG9uYC4KIAogICAgOmZ1bmM6YGluZXRfYXRvbmAgZG9lcyBub3Qgc3VwcG9ydCBJUHY2LCBhbmQgOmZ1bmM6YGluZXRfcHRvbmAgc2hvdWxkIGJlIHVzZWQKQEAgLTQ4MSw3ICs1NDIsNyBAQAogICAgYXJndW1lbnQuCiAKICAgIElmIHRoZSBieXRlIHNlcXVlbmNlIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBleGFjdGx5IDQgYnl0ZXMgaW4KLSAgIGxlbmd0aCwgOmV4Yzpgc29ja2V0LmVycm9yYCB3aWxsIGJlIHJhaXNlZC4gOmZ1bmM6YGluZXRfbnRvYWAgZG9lcyBub3QKKyAgIGxlbmd0aCwgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQuIDpmdW5jOmBpbmV0X250b2FgIGRvZXMgbm90CiAgICBzdXBwb3J0IElQdjYsIGFuZCA6ZnVuYzpgaW5ldF9udG9wYCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIGZvciBJUHY0L3Y2IGR1YWwKICAgIHN0YWNrIHN1cHBvcnQuCiAKQEAgLTQ5NSw3ICs1NTYsNyBAQAogCiAgICBTdXBwb3J0ZWQgdmFsdWVzIGZvciAqYWRkcmVzc19mYW1pbHkqIGFyZSBjdXJyZW50bHkgOmNvbnN0OmBBRl9JTkVUYCBhbmQKICAgIDpjb25zdDpgQUZfSU5FVDZgLiBJZiB0aGUgSVAgYWRkcmVzcyBzdHJpbmcgKmlwX3N0cmluZyogaXMgaW52YWxpZCwKLSAgIDpleGM6YHNvY2tldC5lcnJvcmAgd2lsbCBiZSByYWlzZWQuIE5vdGUgdGhhdCBleGFjdGx5IHdoYXQgaXMgdmFsaWQgZGVwZW5kcyBvbgorICAgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQuIE5vdGUgdGhhdCBleGFjdGx5IHdoYXQgaXMgdmFsaWQgZGVwZW5kcyBvbgogICAgYm90aCB0aGUgdmFsdWUgb2YgKmFkZHJlc3NfZmFtaWx5KiBhbmQgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gb2YKICAgIDpjOmZ1bmM6YGluZXRfcHRvbmAuCiAKQEAgLTUxMywxMSArNTc0LDU0IEBACiAgICBTdXBwb3J0ZWQgdmFsdWVzIGZvciAqYWRkcmVzc19mYW1pbHkqIGFyZSBjdXJyZW50bHkgOmNvbnN0OmBBRl9JTkVUYCBhbmQKICAgIDpjb25zdDpgQUZfSU5FVDZgLiBJZiB0aGUgc3RyaW5nICpwYWNrZWRfaXAqIGlzIG5vdCB0aGUgY29ycmVjdCBsZW5ndGggZm9yIHRoZQogICAgc3BlY2lmaWVkIGFkZHJlc3MgZmFtaWx5LCA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4gIEEKLSAgIDpleGM6YHNvY2tldC5lcnJvcmAgaXMgcmFpc2VkIGZvciBlcnJvcnMgZnJvbSB0aGUgY2FsbCB0byA6ZnVuYzpgaW5ldF9udG9wYC4KKyAgIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBmb3IgZXJyb3JzIGZyb20gdGhlIGNhbGwgdG8gOmZ1bmM6YGluZXRfbnRvcGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCAobWF5YmUgbm90IGFsbCBwbGF0Zm9ybXMpLgogCiAKKy4uCisgICBYWFg6IEFyZSBzZW5kbXNnKCksIHJlY3Ztc2coKSBhbmQgQ01TR18qKCkgYXZhaWxhYmxlIG9uIGFueQorICAgbm9uLVVuaXggcGxhdGZvcm1zPyAgVGhlIG9sZCAob2Jzb2xldGU/KSA0LjJCU0QgZm9ybSBvZiB0aGUKKyAgIGludGVyZmFjZSwgaW4gd2hpY2ggc3RydWN0IG1zZ2hkciBoYXMgbm8gbXNnX2NvbnRyb2wgb3IKKyAgIG1zZ19jb250cm9sbGVuIG1lbWJlcnMsIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorCisuLiBmdW5jdGlvbjo6IENNU0dfTEVOKGxlbmd0aCkKKworICAgUmV0dXJuIHRoZSB0b3RhbCBsZW5ndGgsIHdpdGhvdXQgdHJhaWxpbmcgcGFkZGluZywgb2YgYW4gYW5jaWxsYXJ5CisgICBkYXRhIGl0ZW0gd2l0aCBhc3NvY2lhdGVkIGRhdGEgb2YgdGhlIGdpdmVuICpsZW5ndGgqLiAgVGhpcyB2YWx1ZQorICAgY2FuIG9mdGVuIGJlIHVzZWQgYXMgdGhlIGJ1ZmZlciBzaXplIGZvciA6bWV0aDpgfnNvY2tldC5yZWN2bXNnYCB0bworICAgcmVjZWl2ZSBhIHNpbmdsZSBpdGVtIG9mIGFuY2lsbGFyeSBkYXRhLCBidXQgOnJmYzpgMzU0MmAgcmVxdWlyZXMKKyAgIHBvcnRhYmxlIGFwcGxpY2F0aW9ucyB0byB1c2UgOmZ1bmM6YENNU0dfU1BBQ0VgIGFuZCB0aHVzIGluY2x1ZGUKKyAgIHNwYWNlIGZvciBwYWRkaW5nLCBldmVuIHdoZW4gdGhlIGl0ZW0gd2lsbCBiZSB0aGUgbGFzdCBpbiB0aGUKKyAgIGJ1ZmZlci4gIFJhaXNlcyA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpZiAqbGVuZ3RoKiBpcyBvdXRzaWRlIHRoZQorICAgcGVybWlzc2libGUgcmFuZ2Ugb2YgdmFsdWVzLgorCisgICBBdmFpbGFiaWxpdHk6IG1vc3QgVW5peCBwbGF0Zm9ybXMsIHBvc3NpYmx5IG90aGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBDTVNHX1NQQUNFKGxlbmd0aCkKKworICAgUmV0dXJuIHRoZSBidWZmZXIgc2l6ZSBuZWVkZWQgZm9yIDptZXRoOmB+c29ja2V0LnJlY3Ztc2dgIHRvCisgICByZWNlaXZlIGFuIGFuY2lsbGFyeSBkYXRhIGl0ZW0gd2l0aCBhc3NvY2lhdGVkIGRhdGEgb2YgdGhlIGdpdmVuCisgICAqbGVuZ3RoKiwgYWxvbmcgd2l0aCBhbnkgdHJhaWxpbmcgcGFkZGluZy4gIFRoZSBidWZmZXIgc3BhY2UgbmVlZGVkCisgICB0byByZWNlaXZlIG11bHRpcGxlIGl0ZW1zIGlzIHRoZSBzdW0gb2YgdGhlIDpmdW5jOmBDTVNHX1NQQUNFYAorICAgdmFsdWVzIGZvciB0aGVpciBhc3NvY2lhdGVkIGRhdGEgbGVuZ3Rocy4gIFJhaXNlcworICAgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgaWYgKmxlbmd0aCogaXMgb3V0c2lkZSB0aGUgcGVybWlzc2libGUgcmFuZ2UKKyAgIG9mIHZhbHVlcy4KKworICAgTm90ZSB0aGF0IHNvbWUgc3lzdGVtcyBtaWdodCBzdXBwb3J0IGFuY2lsbGFyeSBkYXRhIHdpdGhvdXQKKyAgIHByb3ZpZGluZyB0aGlzIGZ1bmN0aW9uLiAgQWxzbyBub3RlIHRoYXQgc2V0dGluZyB0aGUgYnVmZmVyIHNpemUKKyAgIHVzaW5nIHRoZSByZXN1bHRzIG9mIHRoaXMgZnVuY3Rpb24gbWF5IG5vdCBwcmVjaXNlbHkgbGltaXQgdGhlCisgICBhbW91bnQgb2YgYW5jaWxsYXJ5IGRhdGEgdGhhdCBjYW4gYmUgcmVjZWl2ZWQsIHNpbmNlIGFkZGl0aW9uYWwKKyAgIGRhdGEgbWF5IGJlIGFibGUgdG8gZml0IGludG8gdGhlIHBhZGRpbmcgYXJlYS4KKworICAgQXZhaWxhYmlsaXR5OiBtb3N0IFVuaXggcGxhdGZvcm1zLCBwb3NzaWJseSBvdGhlcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogZ2V0ZGVmYXVsdHRpbWVvdXQoKQogCiAgICBSZXR1cm4gdGhlIGRlZmF1bHQgdGltZW91dCBpbiBzZWNvbmRzIChmbG9hdCkgZm9yIG5ldyBzb2NrZXQgb2JqZWN0cy4gQSB2YWx1ZQpAQCAtNTMzLDYgKzYzNyw1OSBAQAogICAgbWVhbmluZ3MuCiAKIAorLi4gZnVuY3Rpb246OiBzZXRob3N0bmFtZShuYW1lKQorCisgICBTZXQgdGhlIG1hY2hpbmUncyBob3N0bmFtZSB0byAqbmFtZSouICBUaGlzIHdpbGwgcmFpc2UgYQorICAgOmV4YzpgT1NFcnJvcmAgaWYgeW91IGRvbid0IGhhdmUgZW5vdWdoIHJpZ2h0cy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGlmX25hbWVpbmRleCgpCisKKyAgIFJldHVybiBhIGxpc3Qgb2YgbmV0d29yayBpbnRlcmZhY2UgaW5mb3JtYXRpb24KKyAgIChpbmRleCBpbnQsIG5hbWUgc3RyaW5nKSB0dXBsZXMuCisgICA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUgc3lzdGVtIGNhbGwgZmFpbHMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBpZl9uYW1ldG9pbmRleChpZl9uYW1lKQorCisgICBSZXR1cm4gYSBuZXR3b3JrIGludGVyZmFjZSBpbmRleCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBhbgorICAgaW50ZXJmYWNlIG5hbWUuCisgICA6ZXhjOmBPU0Vycm9yYCBpZiBubyBpbnRlcmZhY2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBpZl9pbmRleHRvbmFtZShpZl9pbmRleCkKKworICAgUmV0dXJuIGEgbmV0d29yayBpbnRlcmZhY2UgbmFtZSBjb3JyZXNwb25kaW5nIHRvIGEKKyAgIGludGVyZmFjZSBpbmRleCBudW1iZXIuCisgICA6ZXhjOmBPU0Vycm9yYCBpZiBubyBpbnRlcmZhY2Ugd2l0aCB0aGUgZ2l2ZW4gaW5kZXggZXhpc3RzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogZnJvbXNoYXJlKGRhdGEpCisKKyAgIEluc3RhbnRpYXRlIGEgc29ja2V0IGZyb20gZGF0YSBvYnRhaW5lZCBmcm9tIDptZXRoOmB+c29ja2V0LnNoYXJlYC4KKyAgIFRoZSBzb2NrZXQgaXMgYXNzdW1lZCB0byBiZSBpbiBibG9ja2luZyBtb2RlLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGRhdGE6OiBTb2NrZXRUeXBlCiAKICAgIFRoaXMgaXMgYSBQeXRob24gdHlwZSBvYmplY3QgdGhhdCByZXByZXNlbnRzIHRoZSBzb2NrZXQgb2JqZWN0IHR5cGUuIEl0IGlzIHRoZQpAQCAtNzA2LDYgKzg2MywxMDkgQEAKICAgIHRvIHplcm8uIChUaGUgZm9ybWF0IG9mICphZGRyZXNzKiBkZXBlbmRzIG9uIHRoZSBhZGRyZXNzIGZhbWlseSAtLS0gc2VlIGFib3ZlLikKIAogCisuLiBtZXRob2Q6OiBzb2NrZXQucmVjdm1zZyhidWZzaXplWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pCisKKyAgIFJlY2VpdmUgbm9ybWFsIGRhdGEgKHVwIHRvICpidWZzaXplKiBieXRlcykgYW5kIGFuY2lsbGFyeSBkYXRhIGZyb20KKyAgIHRoZSBzb2NrZXQuICBUaGUgKmFuY2J1ZnNpemUqIGFyZ3VtZW50IHNldHMgdGhlIHNpemUgaW4gYnl0ZXMgb2YKKyAgIHRoZSBpbnRlcm5hbCBidWZmZXIgdXNlZCB0byByZWNlaXZlIHRoZSBhbmNpbGxhcnkgZGF0YTsgaXQgZGVmYXVsdHMKKyAgIHRvIDAsIG1lYW5pbmcgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSB3aWxsIGJlIHJlY2VpdmVkLiAgQXBwcm9wcmlhdGUKKyAgIGJ1ZmZlciBzaXplcyBmb3IgYW5jaWxsYXJ5IGRhdGEgY2FuIGJlIGNhbGN1bGF0ZWQgdXNpbmcKKyAgIDpmdW5jOmBDTVNHX1NQQUNFYCBvciA6ZnVuYzpgQ01TR19MRU5gLCBhbmQgaXRlbXMgd2hpY2ggZG8gbm90IGZpdAorICAgaW50byB0aGUgYnVmZmVyIG1pZ2h0IGJlIHRydW5jYXRlZCBvciBkaXNjYXJkZWQuICBUaGUgKmZsYWdzKgorICAgYXJndW1lbnQgZGVmYXVsdHMgdG8gMCBhbmQgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCisgICA6bWV0aDpgcmVjdmAuCisKKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSA0LXR1cGxlOiBgYChkYXRhLCBhbmNkYXRhLCBtc2dfZmxhZ3MsCisgICBhZGRyZXNzKWBgLiAgVGhlICpkYXRhKiBpdGVtIGlzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IGhvbGRpbmcgdGhlCisgICBub24tYW5jaWxsYXJ5IGRhdGEgcmVjZWl2ZWQuICBUaGUgKmFuY2RhdGEqIGl0ZW0gaXMgYSBsaXN0IG9mIHplcm8KKyAgIG9yIG1vcmUgdHVwbGVzIGBgKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhKWBgIHJlcHJlc2VudGluZworICAgdGhlIGFuY2lsbGFyeSBkYXRhIChjb250cm9sIG1lc3NhZ2VzKSByZWNlaXZlZDogKmNtc2dfbGV2ZWwqIGFuZAorICAgKmNtc2dfdHlwZSogYXJlIGludGVnZXJzIHNwZWNpZnlpbmcgdGhlIHByb3RvY29sIGxldmVsIGFuZAorICAgcHJvdG9jb2wtc3BlY2lmaWMgdHlwZSByZXNwZWN0aXZlbHksIGFuZCAqY21zZ19kYXRhKiBpcyBhCisgICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgaG9sZGluZyB0aGUgYXNzb2NpYXRlZCBkYXRhLiAgVGhlICptc2dfZmxhZ3MqCisgICBpdGVtIGlzIHRoZSBiaXR3aXNlIE9SIG9mIHZhcmlvdXMgZmxhZ3MgaW5kaWNhdGluZyBjb25kaXRpb25zIG9uCisgICB0aGUgcmVjZWl2ZWQgbWVzc2FnZTsgc2VlIHlvdXIgc3lzdGVtIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCisgICBJZiB0aGUgcmVjZWl2aW5nIHNvY2tldCBpcyB1bmNvbm5lY3RlZCwgKmFkZHJlc3MqIGlzIHRoZSBhZGRyZXNzIG9mCisgICB0aGUgc2VuZGluZyBzb2NrZXQsIGlmIGF2YWlsYWJsZTsgb3RoZXJ3aXNlLCBpdHMgdmFsdWUgaXMKKyAgIHVuc3BlY2lmaWVkLgorCisgICBPbiBzb21lIHN5c3RlbXMsIDptZXRoOmBzZW5kbXNnYCBhbmQgOm1ldGg6YHJlY3Ztc2dgIGNhbiBiZSB1c2VkIHRvCisgICBwYXNzIGZpbGUgZGVzY3JpcHRvcnMgYmV0d2VlbiBwcm9jZXNzZXMgb3ZlciBhbiA6Y29uc3Q6YEFGX1VOSVhgCisgICBzb2NrZXQuICBXaGVuIHRoaXMgZmFjaWxpdHkgaXMgdXNlZCAoaXQgaXMgb2Z0ZW4gcmVzdHJpY3RlZCB0bworICAgOmNvbnN0OmBTT0NLX1NUUkVBTWAgc29ja2V0cyksIDptZXRoOmByZWN2bXNnYCB3aWxsIHJldHVybiwgaW4gaXRzCisgICBhbmNpbGxhcnkgZGF0YSwgaXRlbXMgb2YgdGhlIGZvcm0gYGAoc29ja2V0LlNPTF9TT0NLRVQsCisgICBzb2NrZXQuU0NNX1JJR0hUUywgZmRzKWBgLCB3aGVyZSAqZmRzKiBpcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdAorICAgcmVwcmVzZW50aW5nIHRoZSBuZXcgZmlsZSBkZXNjcmlwdG9ycyBhcyBhIGJpbmFyeSBhcnJheSBvZiB0aGUKKyAgIG5hdGl2ZSBDIDpjOnR5cGU6YGludGAgdHlwZS4gIElmIDptZXRoOmByZWN2bXNnYCByYWlzZXMgYW4KKyAgIGV4Y2VwdGlvbiBhZnRlciB0aGUgc3lzdGVtIGNhbGwgcmV0dXJucywgaXQgd2lsbCBmaXJzdCBhdHRlbXB0IHRvCisgICBjbG9zZSBhbnkgZmlsZSBkZXNjcmlwdG9ycyByZWNlaXZlZCB2aWEgdGhpcyBtZWNoYW5pc20uCisKKyAgIFNvbWUgc3lzdGVtcyBkbyBub3QgaW5kaWNhdGUgdGhlIHRydW5jYXRlZCBsZW5ndGggb2YgYW5jaWxsYXJ5IGRhdGEKKyAgIGl0ZW1zIHdoaWNoIGhhdmUgYmVlbiBvbmx5IHBhcnRpYWxseSByZWNlaXZlZC4gIElmIGFuIGl0ZW0gYXBwZWFycworICAgdG8gZXh0ZW5kIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIDptZXRoOmByZWN2bXNnYCB3aWxsIGlzc3VlCisgICBhIDpleGM6YFJ1bnRpbWVXYXJuaW5nYCwgYW5kIHdpbGwgcmV0dXJuIHRoZSBwYXJ0IG9mIGl0IHdoaWNoIGlzCisgICBpbnNpZGUgdGhlIGJ1ZmZlciBwcm92aWRlZCBpdCBoYXMgbm90IGJlZW4gdHJ1bmNhdGVkIGJlZm9yZSB0aGUKKyAgIHN0YXJ0IG9mIGl0cyBhc3NvY2lhdGVkIGRhdGEuCisKKyAgIE9uIHN5c3RlbXMgd2hpY2ggc3VwcG9ydCB0aGUgOmNvbnN0OmBTQ01fUklHSFRTYCBtZWNoYW5pc20sIHRoZQorICAgZm9sbG93aW5nIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZSB1cCB0byAqbWF4ZmRzKiBmaWxlIGRlc2NyaXB0b3JzLAorICAgcmV0dXJuaW5nIHRoZSBtZXNzYWdlIGRhdGEgYW5kIGEgbGlzdCBjb250YWluaW5nIHRoZSBkZXNjcmlwdG9ycworICAgKHdoaWxlIGlnbm9yaW5nIHVuZXhwZWN0ZWQgY29uZGl0aW9ucyBzdWNoIGFzIHVucmVsYXRlZCBjb250cm9sCisgICBtZXNzYWdlcyBiZWluZyByZWNlaXZlZCkuICBTZWUgYWxzbyA6bWV0aDpgc2VuZG1zZ2AuIDo6CisKKyAgICAgIGltcG9ydCBzb2NrZXQsIGFycmF5CisKKyAgICAgIGRlZiByZWN2X2Zkcyhzb2NrLCBtc2dsZW4sIG1heGZkcyk6CisgICAgICAgICAgZmRzID0gYXJyYXkuYXJyYXkoImkiKSAgICMgQXJyYXkgb2YgaW50cworICAgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzb2NrLnJlY3Ztc2cobXNnbGVuLCBzb2NrZXQuQ01TR19MRU4obWF4ZmRzICogZmRzLml0ZW1zaXplKSkKKyAgICAgICAgICBmb3IgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgaW4gYW5jZGF0YToKKyAgICAgICAgICAgICAgaWYgKGNtc2dfbGV2ZWwgPT0gc29ja2V0LlNPTF9TT0NLRVQgYW5kIGNtc2dfdHlwZSA9PSBzb2NrZXQuU0NNX1JJR0hUUyk6CisgICAgICAgICAgICAgICAgICAjIEFwcGVuZCBkYXRhLCBpZ25vcmluZyBhbnkgdHJ1bmNhdGVkIGludGVnZXJzIGF0IHRoZSBlbmQuCisgICAgICAgICAgICAgICAgICBmZHMuZnJvbXN0cmluZyhjbXNnX2RhdGFbOmxlbihjbXNnX2RhdGEpIC0gKGxlbihjbXNnX2RhdGEpICUgZmRzLml0ZW1zaXplKV0pCisgICAgICAgICAgcmV0dXJuIG1zZywgbGlzdChmZHMpCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBVbml4IHBsYXRmb3JtcywgcG9zc2libHkgb3RoZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBtZXRob2Q6OiBzb2NrZXQucmVjdm1zZ19pbnRvKGJ1ZmZlcnNbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkKKworICAgUmVjZWl2ZSBub3JtYWwgZGF0YSBhbmQgYW5jaWxsYXJ5IGRhdGEgZnJvbSB0aGUgc29ja2V0LCBiZWhhdmluZyBhcworICAgOm1ldGg6YHJlY3Ztc2dgIHdvdWxkLCBidXQgc2NhdHRlciB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhIGludG8gYQorICAgc2VyaWVzIG9mIGJ1ZmZlcnMgaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBuZXcgYnl0ZXMgb2JqZWN0LiAgVGhlCisgICAqYnVmZmVycyogYXJndW1lbnQgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBvYmplY3RzIHRoYXQgZXhwb3J0CisgICB3cml0YWJsZSBidWZmZXJzIChlLmcuIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3RzKTsgdGhlc2Ugd2lsbCBiZQorICAgZmlsbGVkIHdpdGggc3VjY2Vzc2l2ZSBjaHVua3Mgb2YgdGhlIG5vbi1hbmNpbGxhcnkgZGF0YSB1bnRpbCBpdAorICAgaGFzIGFsbCBiZWVuIHdyaXR0ZW4gb3IgdGhlcmUgYXJlIG5vIG1vcmUgYnVmZmVycy4gIFRoZSBvcGVyYXRpbmcKKyAgIHN5c3RlbSBtYXkgc2V0IGEgbGltaXQgKDpmdW5jOmB+b3Muc3lzY29uZmAgdmFsdWUgYGBTQ19JT1ZfTUFYYGApCisgICBvbiB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgdGhhdCBjYW4gYmUgdXNlZC4gIFRoZSAqYW5jYnVmc2l6ZSogYW5kCisgICAqZmxhZ3MqIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIDptZXRoOmByZWN2bXNnYC4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIDQtdHVwbGU6IGBgKG5ieXRlcywgYW5jZGF0YSwgbXNnX2ZsYWdzLAorICAgYWRkcmVzcylgYCwgd2hlcmUgKm5ieXRlcyogaXMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBvZgorICAgbm9uLWFuY2lsbGFyeSBkYXRhIHdyaXR0ZW4gaW50byB0aGUgYnVmZmVycywgYW5kICphbmNkYXRhKiwKKyAgICptc2dfZmxhZ3MqIGFuZCAqYWRkcmVzcyogYXJlIHRoZSBzYW1lIGFzIGZvciA6bWV0aDpgcmVjdm1zZ2AuCisKKyAgIEV4YW1wbGU6OgorCisgICAgICA+Pj4gaW1wb3J0IHNvY2tldAorICAgICAgPj4+IHMxLCBzMiA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgID4+PiBiMSA9IGJ5dGVhcnJheShiJy0tLS0nKQorICAgICAgPj4+IGIyID0gYnl0ZWFycmF5KGInMDEyMzQ1Njc4OScpCisgICAgICA+Pj4gYjMgPSBieXRlYXJyYXkoYictLS0tLS0tLS0tLS0tLScpCisgICAgICA+Pj4gczEuc2VuZChiJ01hcnkgaGFkIGEgbGl0dGxlIGxhbWInKQorICAgICAgMjIKKyAgICAgID4+PiBzMi5yZWN2bXNnX2ludG8oW2IxLCBtZW1vcnl2aWV3KGIyKVsyOjldLCBiM10pCisgICAgICAoMjIsIFtdLCAwLCBOb25lKQorICAgICAgPj4+IFtiMSwgYjIsIGIzXQorICAgICAgW2J5dGVhcnJheShiJ01hcnknKSwgYnl0ZWFycmF5KGInMDEgaGFkIGEgOScpLCBieXRlYXJyYXkoYidsaXR0bGUgbGFtYi0tLScpXQorCisgICBBdmFpbGFiaWxpdHk6IG1vc3QgVW5peCBwbGF0Zm9ybXMsIHBvc3NpYmx5IG90aGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogc29ja2V0LnJlY3Zmcm9tX2ludG8oYnVmZmVyWywgbmJ5dGVzWywgZmxhZ3NdXSkKIAogICAgUmVjZWl2ZSBkYXRhIGZyb20gdGhlIHNvY2tldCwgd3JpdGluZyBpdCBpbnRvICpidWZmZXIqIGluc3RlYWQgb2YgY3JlYXRpbmcgYQpAQCAtNzU0LDYgKzEwMTQsNDEgQEAKICAgIGFib3ZlLikKIAogCisuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZG1zZyhidWZmZXJzWywgYW5jZGF0YVssIGZsYWdzWywgYWRkcmVzc11dXSkKKworICAgU2VuZCBub3JtYWwgYW5kIGFuY2lsbGFyeSBkYXRhIHRvIHRoZSBzb2NrZXQsIGdhdGhlcmluZyB0aGUKKyAgIG5vbi1hbmNpbGxhcnkgZGF0YSBmcm9tIGEgc2VyaWVzIG9mIGJ1ZmZlcnMgYW5kIGNvbmNhdGVuYXRpbmcgaXQKKyAgIGludG8gYSBzaW5nbGUgbWVzc2FnZS4gIFRoZSAqYnVmZmVycyogYXJndW1lbnQgc3BlY2lmaWVzIHRoZQorICAgbm9uLWFuY2lsbGFyeSBkYXRhIGFzIGFuIGl0ZXJhYmxlIG9mIGJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdHMKKyAgIChlLmcuIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMpOyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBtYXkgc2V0IGEgbGltaXQKKyAgICg6ZnVuYzpgfm9zLnN5c2NvbmZgIHZhbHVlIGBgU0NfSU9WX01BWGBgKSBvbiB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMKKyAgIHRoYXQgY2FuIGJlIHVzZWQuICBUaGUgKmFuY2RhdGEqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgYW5jaWxsYXJ5CisgICBkYXRhIChjb250cm9sIG1lc3NhZ2VzKSBhcyBhbiBpdGVyYWJsZSBvZiB6ZXJvIG9yIG1vcmUgdHVwbGVzCisgICBgYChjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSlgYCwgd2hlcmUgKmNtc2dfbGV2ZWwqIGFuZAorICAgKmNtc2dfdHlwZSogYXJlIGludGVnZXJzIHNwZWNpZnlpbmcgdGhlIHByb3RvY29sIGxldmVsIGFuZAorICAgcHJvdG9jb2wtc3BlY2lmaWMgdHlwZSByZXNwZWN0aXZlbHksIGFuZCAqY21zZ19kYXRhKiBpcyBhCisgICBidWZmZXItY29tcGF0aWJsZSBvYmplY3QgaG9sZGluZyB0aGUgYXNzb2NpYXRlZCBkYXRhLiAgTm90ZSB0aGF0CisgICBzb21lIHN5c3RlbXMgKGluIHBhcnRpY3VsYXIsIHN5c3RlbXMgd2l0aG91dCA6ZnVuYzpgQ01TR19TUEFDRWApCisgICBtaWdodCBzdXBwb3J0IHNlbmRpbmcgb25seSBvbmUgY29udHJvbCBtZXNzYWdlIHBlciBjYWxsLiAgVGhlCisgICAqZmxhZ3MqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDAgYW5kIGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgorICAgOm1ldGg6YHNlbmRgLiAgSWYgKmFkZHJlc3MqIGlzIHN1cHBsaWVkIGFuZCBub3QgYGBOb25lYGAsIGl0IHNldHMgYQorICAgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IgdGhlIG1lc3NhZ2UuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZQorICAgbnVtYmVyIG9mIGJ5dGVzIG9mIG5vbi1hbmNpbGxhcnkgZGF0YSBzZW50LgorCisgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIHNlbmRzIHRoZSBsaXN0IG9mIGZpbGUgZGVzY3JpcHRvcnMgKmZkcyoKKyAgIG92ZXIgYW4gOmNvbnN0OmBBRl9VTklYYCBzb2NrZXQsIG9uIHN5c3RlbXMgd2hpY2ggc3VwcG9ydCB0aGUKKyAgIDpjb25zdDpgU0NNX1JJR0hUU2AgbWVjaGFuaXNtLiAgU2VlIGFsc28gOm1ldGg6YHJlY3Ztc2dgLiA6OgorCisgICAgICBpbXBvcnQgc29ja2V0LCBhcnJheQorCisgICAgICBkZWYgc2VuZF9mZHMoc29jaywgbXNnLCBmZHMpOgorICAgICAgICAgIHJldHVybiBzb2NrLnNlbmRtc2coW21zZ10sIFsoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TQ01fUklHSFRTLCBhcnJheS5hcnJheSgiaSIsIGZkcykpXSkKKworICAgQXZhaWxhYmlsaXR5OiBtb3N0IFVuaXggcGxhdGZvcm1zLCBwb3NzaWJseSBvdGhlcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IHNvY2tldC5zZXRibG9ja2luZyhmbGFnKQogCiAgICBTZXQgYmxvY2tpbmcgb3Igbm9uLWJsb2NraW5nIG1vZGUgb2YgdGhlIHNvY2tldDogaWYgKmZsYWcqIGlzIGZhbHNlLCB0aGUKQEAgLTc5NSw5ICsxMDkwLDIyIEBACiAgICBTaHV0IGRvd24gb25lIG9yIGJvdGggaGFsdmVzIG9mIHRoZSBjb25uZWN0aW9uLiAgSWYgKmhvdyogaXMgOmNvbnN0OmBTSFVUX1JEYCwKICAgIGZ1cnRoZXIgcmVjZWl2ZXMgYXJlIGRpc2FsbG93ZWQuICBJZiAqaG93KiBpcyA6Y29uc3Q6YFNIVVRfV1JgLCBmdXJ0aGVyIHNlbmRzCiAgICBhcmUgZGlzYWxsb3dlZC4gIElmICpob3cqIGlzIDpjb25zdDpgU0hVVF9SRFdSYCwgZnVydGhlciBzZW5kcyBhbmQgcmVjZWl2ZXMgYXJlCi0gICBkaXNhbGxvd2VkLiAgRGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSwgc2h1dHRpbmcgZG93biBvbmUgaGFsZiBvZiB0aGUgY29ubmVjdGlvbgotICAgY2FuIGFsc28gY2xvc2UgdGhlIG9wcG9zaXRlIGhhbGYgKGUuZy4gb24gTWFjIE9TIFgsIGBgc2h1dGRvd24oU0hVVF9XUilgYCBkb2VzCi0gICBub3QgYWxsb3cgZnVydGhlciByZWFkcyBvbiB0aGUgb3RoZXIgZW5kIG9mIHRoZSBjb25uZWN0aW9uKS4KKyAgIGRpc2FsbG93ZWQuCisKKworLi4gbWV0aG9kOjogc29ja2V0LnNoYXJlKHByb2Nlc3NfaWQpCisKKyAgICA6cGxhdGZvcm06IFdpbmRvd3MKKworICAgIER1cGxhY2V0IGEgc29ja2V0IGFuZCBwcmVwYXJlIGl0IGZvciBzaGFyaW5nIHdpdGggYSB0YXJnZXQgcHJvY2Vzcy4gIFRoZQorICAgIHRhcmdldCBwcm9jZXNzIG11c3QgYmUgcHJvdmlkZWQgd2l0aCAqcHJvY2Vzc19pZCouICBUaGUgcmVzdWx0aW5nIGJ5dGVzIG9iamVjdAorICAgIGNhbiB0aGVuIGJlIHBhc3NlZCB0byB0aGUgdGFyZ2V0IHByb2Nlc3MgdXNpbmcgc29tZSBmb3JtIG9mIGludGVycHJvY2VzcworICAgIGNvbW11bmljYXRpb24gYW5kIHRoZSBzb2NrZXQgY2FuIGJlIHJlY3JlYXRlZCB0aGVyZSB1c2luZyA6ZnVuYzpgZnJvbXNoYXJlYC4KKyAgICBPbmNlIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZCwgaXQgaXMgc2FmZSB0byBjbG9zZSB0aGUgc29ja2V0IHNpbmNlCisgICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaGFzIGFscmVhZHkgZHVwbGljYXRlZCBpdCBmb3IgdGhlIHRhcmdldCBwcm9jZXNzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiBOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIG1ldGhvZHMgOm1ldGg6YHJlYWRgIG9yIDptZXRoOmB3cml0ZWA7IHVzZQogOm1ldGg6YH5zb2NrZXQucmVjdmAgYW5kIDptZXRoOmB+c29ja2V0LnNlbmRgIHdpdGhvdXQgKmZsYWdzKiBhcmd1bWVudCBpbnN0ZWFkLgpAQCAtOTQyLDEzICsxMjUwLDEzIEBACiAgICAgICAgYWYsIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzYSA9IHJlcwogICAgICAgIHRyeToKICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoYWYsIHNvY2t0eXBlLCBwcm90bykKLSAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKKyAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgIHMgPSBOb25lCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzLmJpbmQoc2EpCiAgICAgICAgICAgIHMubGlzdGVuKDEpCi0gICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CisgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICBzLmNsb3NlKCkKICAgICAgICAgICAgcyA9IE5vbmUKICAgICAgICAgICAgY29udGludWUKQEAgLTk3NywxMiArMTI4NSwxMiBAQAogICAgICAgIGFmLCBzb2NrdHlwZSwgcHJvdG8sIGNhbm9ubmFtZSwgc2EgPSByZXMKICAgICAgICB0cnk6CiAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KGFmLCBzb2NrdHlwZSwgcHJvdG8pCi0gICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CisgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICBzID0gTm9uZQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHRyeToKICAgICAgICAgICAgcy5jb25uZWN0KHNhKQotICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgorICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgICAgIHMgPSBOb25lCiAgICAgICAgICAgIGNvbnRpbnVlCkBAIC05OTYsNyArMTMwNCw3IEBACiAgICBwcmludCgnUmVjZWl2ZWQnLCByZXByKGRhdGEpKQogCiAKLVRoZSBsYXN0IGV4YW1wbGUgc2hvd3MgaG93IHRvIHdyaXRlIGEgdmVyeSBzaW1wbGUgbmV0d29yayBzbmlmZmVyIHdpdGggcmF3CitUaGUgbmV4dCBleGFtcGxlIHNob3dzIGhvdyB0byB3cml0ZSBhIHZlcnkgc2ltcGxlIG5ldHdvcmsgc25pZmZlciB3aXRoIHJhdwogc29ja2V0cyBvbiBXaW5kb3dzLiBUaGUgZXhhbXBsZSByZXF1aXJlcyBhZG1pbmlzdHJhdG9yIHByaXZpbGVnZXMgdG8gbW9kaWZ5CiB0aGUgaW50ZXJmYWNlOjoKIApAQCAtMTAyMSwxMSArMTMyOSw1MSBAQAogICAgIyBkaXNhYmxlZCBwcm9taXNjdW91cyBtb2RlCiAgICBzLmlvY3RsKHNvY2tldC5TSU9fUkNWQUxMLCBzb2NrZXQuUkNWQUxMX09GRikKIAorVGhlIGxhc3QgZXhhbXBsZSBzaG93cyBob3cgdG8gdXNlIHRoZSBzb2NrZXQgaW50ZXJmYWNlIHRvIGNvbW11bmljYXRlIHRvIGEgQ0FOCituZXR3b3JrLiBUaGlzIGV4YW1wbGUgbWlnaHQgcmVxdWlyZSBzcGVjaWFsIHByaXZpbGVkZ2U6OgorCisgICBpbXBvcnQgc29ja2V0CisgICBpbXBvcnQgc3RydWN0CisKKworICAgIyBDQU4gZnJhbWUgcGFja2luZy91bnBhY2tpbmcgKHNlZSAnc3RydWN0IGNhbl9mcmFtZScgaW4gPGxpbnV4L2Nhbi5oPikKKworICAgY2FuX2ZyYW1lX2ZtdCA9ICI9SUIzeDhzIgorICAgY2FuX2ZyYW1lX3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoY2FuX2ZyYW1lX2ZtdCkKKworICAgZGVmIGJ1aWxkX2Nhbl9mcmFtZShjYW5faWQsIGRhdGEpOgorICAgICAgIGNhbl9kbGMgPSBsZW4oZGF0YSkKKyAgICAgICBkYXRhID0gZGF0YS5sanVzdCg4LCBiJ1x4MDAnKQorICAgICAgIHJldHVybiBzdHJ1Y3QucGFjayhjYW5fZnJhbWVfZm10LCBjYW5faWQsIGNhbl9kbGMsIGRhdGEpCisKKyAgIGRlZiBkaXNzZWN0X2Nhbl9mcmFtZShmcmFtZSk6CisgICAgICAgY2FuX2lkLCBjYW5fZGxjLCBkYXRhID0gc3RydWN0LnVucGFjayhjYW5fZnJhbWVfZm10LCBmcmFtZSkKKyAgICAgICByZXR1cm4gKGNhbl9pZCwgY2FuX2RsYywgZGF0YVs6Y2FuX2RsY10pCisKKworICAgIyBjcmVhdGUgYSByYXcgc29ja2V0IGFuZCBiaW5kIGl0IHRvIHRoZSAndmNhbjAnIGludGVyZmFjZQorICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykKKyAgIHMuYmluZCgoJ3ZjYW4wJywpKQorCisgICB3aGlsZSBUcnVlOgorICAgICAgIGNmLCBhZGRyID0gcy5yZWN2ZnJvbShjYW5fZnJhbWVfc2l6ZSkKKworICAgICAgIHByaW50KCdSZWNlaXZlZDogY2FuX2lkPSV4LCBjYW5fZGxjPSV4LCBkYXRhPSVzJyAlIGRpc3NlY3RfY2FuX2ZyYW1lKGNmKSkKKworICAgICAgIHRyeToKKyAgICAgICAgICAgcy5zZW5kKGNmKQorICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICBwcmludCgnRXJyb3Igc2VuZGluZyBDQU4gZnJhbWUnKQorCisgICAgICAgdHJ5OgorICAgICAgICAgICBzLnNlbmQoYnVpbGRfY2FuX2ZyYW1lKDB4MDEsIGInXHgwMVx4MDJceDAzJykpCisgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgIHByaW50KCdFcnJvciBzZW5kaW5nIENBTiBmcmFtZScpCiAKIFJ1bm5pbmcgYW4gZXhhbXBsZSBzZXZlcmFsIHRpbWVzIHdpdGggdG9vIHNtYWxsIGRlbGF5IGJldHdlZW4gZXhlY3V0aW9ucywgY291bGQKIGxlYWQgdG8gdGhpcyBlcnJvcjo6CiAKLSAgIHNvY2tldC5lcnJvcjogW0Vycm5vIDk4XSBBZGRyZXNzIGFscmVhZHkgaW4gdXNlCisgICBPU0Vycm9yOiBbRXJybm8gOThdIEFkZHJlc3MgYWxyZWFkeSBpbiB1c2UKIAogVGhpcyBpcyBiZWNhdXNlIHRoZSBwcmV2aW91cyBleGVjdXRpb24gaGFzIGxlZnQgdGhlIHNvY2tldCBpbiBhIGBgVElNRV9XQUlUYGAKIHN0YXRlLCBhbmQgY2FuJ3QgYmUgaW1tZWRpYXRlbHkgcmV1c2VkLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKaW5kZXggNTI4N2YxNy4uN2RjMGNjNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CkBAIC0xNTQsOSArMTU0LDIxIEBACiAuLiBtZXRob2Q6OiBCYXNlU2VydmVyLnNlcnZlX2ZvcmV2ZXIocG9sbF9pbnRlcnZhbD0wLjUpCiAKICAgIEhhbmRsZSByZXF1ZXN0cyB1bnRpbCBhbiBleHBsaWNpdCA6bWV0aDpgc2h1dGRvd25gIHJlcXVlc3QuCi0gICBQb2xsIGZvciBzaHV0ZG93biBldmVyeSAqcG9sbF9pbnRlcnZhbCogc2Vjb25kcy4gSWdub3JlcyA6YXR0cjpgc2VsZi50aW1lb3V0YC4KLSAgIElmIHlvdSBuZWVkIHRvIGRvIHBlcmlvZGljIHRhc2tzLCBkbyB0aGVtIGluIGFub3RoZXIgdGhyZWFkLgorICAgUG9sbCBmb3Igc2h1dGRvd24gZXZlcnkgKnBvbGxfaW50ZXJ2YWwqIHNlY29uZHMuIElnbm9yZXMgOmF0dHI6YHNlbGYudGltZW91dGAuICBJdCBhbHNvIGNhbGxzCisgICA6bWV0aDpgc2VydmljZV9hY3Rpb25zYCB3aGljaCBtYXkgYmUgdXNlZCBieSBhIHN1YmNsYXNzIG9yIE1peGluIHRvIHByb3ZpZGUKKyAgIHZhcmlvdXMgY2xlYW51cCBhY3Rpb25zLiAgRm9yIGUuZy4gRm9ya2luZ01peGluIGNsYXNzIHVzZXMKKyAgIDptZXRoOmBzZXJ2aWNlX2FjdGlvbnNgIHRvIGNsZWFudXAgdGhlIHpvbWJpZSBjaGlsZCBwcm9jZXNzZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgQWRkZWQgc2VydmljZV9hY3Rpb25zIGNhbGwgdG8gdGhlIHNlcnZlX2ZvcmV2ZXIgbWV0aG9kLgorCisKKy4uIG1ldGhvZDo6IEJhc2VTZXJ2ZXIuc2VydmljZV9hY3Rpb25zKCkKKworICAgVGhpcyBpcyBjYWxsZWQgYnkgdGhlIHNlcnZlX2ZvcmV2ZXIgbG9vcC4gVGhpcyBtZXRob2QgaXMgY2FuIGJlIG92ZXJyaWRkZW4KKyAgIGJ5IE1peGluJ3MgdG8gYWRkIGNsZWFudXAgb3Igc2VydmljZSBzcGVjaWZpYyBhY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gbWV0aG9kOjogQmFzZVNlcnZlci5zaHV0ZG93bigpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvbWVvcy5yc3QgYi9Eb2MvbGlicmFyeS9zb21lb3MucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjAwOWJiLi4wMDAwMDAwCi0tLSBhL0RvYy9saWJyYXJ5L3NvbWVvcy5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0uLiBfc29tZW9zOgotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1PcHRpb25hbCBPcGVyYXRpbmcgU3lzdGVtIFNlcnZpY2VzCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLVRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBpbnRlcmZhY2VzIHRvIG9wZXJhdGluZyBzeXN0ZW0KLWZlYXR1cmVzIHRoYXQgYXJlIGF2YWlsYWJsZSBvbiBzZWxlY3RlZCBvcGVyYXRpbmcgc3lzdGVtcyBvbmx5LiBUaGUgaW50ZXJmYWNlcwotYXJlIGdlbmVyYWxseSBtb2RlbGVkIGFmdGVyIHRoZSBVbml4IG9yIEMgaW50ZXJmYWNlcyBidXQgdGhleSBhcmUgYXZhaWxhYmxlIG9uCi1zb21lIG90aGVyIHN5c3RlbXMgYXMgd2VsbCAoZS5nLiBXaW5kb3dzKS4gIEhlcmUncyBhbiBvdmVydmlldzoKLQotCi0uLiB0b2N0cmVlOjoKLQotICAgc2VsZWN0LnJzdAotICAgdGhyZWFkaW5nLnJzdAotICAgbXVsdGlwcm9jZXNzaW5nLnJzdAotICAgY29uY3VycmVudC5mdXR1cmVzLnJzdAotICAgbW1hcC5yc3QKLSAgIHJlYWRsaW5lLnJzdAotICAgcmxjb21wbGV0ZXIucnN0Ci0gICBkdW1teV90aHJlYWRpbmcucnN0Ci0gICBfdGhyZWFkLnJzdAotICAgX2R1bW15X3RocmVhZC5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0IGIvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKaW5kZXggOTUwZGE5NS4uZTBmZDUwZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKQEAgLTM2OSw2ICszNjksMjIgQEAKICAgIG1ldGhvZCB3aXRoIDpjb25zdDpgTm9uZWAgZm9yICpoYW5kbGVyKi4KIAogCisuLiBtZXRob2Q6OiBDb25uZWN0aW9uLnNldF90cmFjZV9jYWxsYmFjayh0cmFjZV9jYWxsYmFjaykKKworICAgUmVnaXN0ZXJzICp0cmFjZV9jYWxsYmFjayogdG8gYmUgY2FsbGVkIGZvciBlYWNoIFNRTCBzdGF0ZW1lbnQgdGhhdCBpcworICAgYWN0dWFsbHkgZXhlY3V0ZWQgYnkgdGhlIFNRTGl0ZSBiYWNrZW5kLgorCisgICBUaGUgb25seSBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGlzIHRoZSBzdGF0ZW1lbnQgKGFzIHN0cmluZykgdGhhdAorICAgaXMgYmVpbmcgZXhlY3V0ZWQuIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGNhbGxiYWNrIGlzIGlnbm9yZWQuIE5vdGUgdGhhdAorICAgdGhlIGJhY2tlbmQgZG9lcyBub3Qgb25seSBydW4gc3RhdGVtZW50cyBwYXNzZWQgdG8gdGhlIDptZXRoOmBDdXJzb3IuZXhlY3V0ZWAKKyAgIG1ldGhvZHMuICBPdGhlciBzb3VyY2VzIGluY2x1ZGUgdGhlIHRyYW5zYWN0aW9uIG1hbmFnZW1lbnQgb2YgdGhlIFB5dGhvbgorICAgbW9kdWxlIGFuZCB0aGUgZXhlY3V0aW9uIG9mIHRyaWdnZXJzIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgZGF0YWJhc2UuCisKKyAgIFBhc3NpbmcgOmNvbnN0OmBOb25lYCBhcyAqdHJhY2VfY2FsbGJhY2sqIHdpbGwgZGlzYWJsZSB0aGUgdHJhY2UgY2FsbGJhY2suCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IENvbm5lY3Rpb24uZW5hYmxlX2xvYWRfZXh0ZW5zaW9uKGVuYWJsZWQpCiAKICAgIFRoaXMgcm91dGluZSBhbGxvd3MvZGlzYWxsb3dzIHRoZSBTUUxpdGUgZW5naW5lIHRvIGxvYWQgU1FMaXRlIGV4dGVuc2lvbnMKQEAgLTQyMCwxMCArNDM2LDYgQEAKICAgIDptb2Q6YHNxbGl0ZTNgIG1vZHVsZSB3aWxsIHJldHVybiBVbmljb2RlIG9iamVjdHMgZm9yIGBgVEVYVGBgLiBJZiB5b3Ugd2FudCB0bwogICAgcmV0dXJuIGJ5dGVzdHJpbmdzIGluc3RlYWQsIHlvdSBjYW4gc2V0IGl0IHRvIDpjbGFzczpgYnl0ZXNgLgogCi0gICBGb3IgZWZmaWNpZW5jeSByZWFzb25zLCB0aGVyZSdzIGFsc28gYSB3YXkgdG8gcmV0dXJuIDpjbGFzczpgc3RyYCBvYmplY3RzCi0gICBvbmx5IGZvciBub24tQVNDSUkgZGF0YSwgYW5kIDpjbGFzczpgYnl0ZXNgIG90aGVyd2lzZS4gVG8gYWN0aXZhdGUgaXQsIHNldAotICAgdGhpcyBhdHRyaWJ1dGUgdG8gOmNvbnN0OmBzcWxpdGUzLk9wdGltaXplZFVuaWNvZGVgLgotCiAgICBZb3UgY2FuIGFsc28gc2V0IGl0IHRvIGFueSBvdGhlciBjYWxsYWJsZSB0aGF0IGFjY2VwdHMgYSBzaW5nbGUgYnl0ZXN0cmluZwogICAgcGFyYW1ldGVyIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgb2JqZWN0LgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zc2wucnN0IGIvRG9jL2xpYnJhcnkvc3NsLnJzdAppbmRleCAwZjVjZWEyLi43NzE5NmUxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zc2wucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKQEAgLTUzLDkgKzUzLDY5IEBACiAgICAoY3VycmVudGx5IHByb3ZpZGVkIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcnkpLiAgVGhpcyBzaWduaWZpZXMgc29tZQogICAgcHJvYmxlbSBpbiB0aGUgaGlnaGVyLWxldmVsIGVuY3J5cHRpb24gYW5kIGF1dGhlbnRpY2F0aW9uIGxheWVyIHRoYXQncwogICAgc3VwZXJpbXBvc2VkIG9uIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgY29ubmVjdGlvbi4gIFRoaXMgZXJyb3IKLSAgIGlzIGEgc3VidHlwZSBvZiA6ZXhjOmBzb2NrZXQuZXJyb3JgLCB3aGljaCBpbiB0dXJuIGlzIGEgc3VidHlwZSBvZgotICAgOmV4YzpgSU9FcnJvcmAuICBUaGUgZXJyb3IgY29kZSBhbmQgbWVzc2FnZSBvZiA6ZXhjOmBTU0xFcnJvcmAgaW5zdGFuY2VzCi0gICBhcmUgcHJvdmlkZWQgYnkgdGhlIE9wZW5TU0wgbGlicmFyeS4KKyAgIGlzIGEgc3VidHlwZSBvZiA6ZXhjOmBPU0Vycm9yYC4gIFRoZSBlcnJvciBjb2RlIGFuZCBtZXNzYWdlIG9mCisgICA6ZXhjOmBTU0xFcnJvcmAgaW5zdGFuY2VzIGFyZSBwcm92aWRlZCBieSB0aGUgT3BlblNTTCBsaWJyYXJ5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgU1NMRXJyb3JgIHVzZWQgdG8gYmUgYSBzdWJ0eXBlIG9mIDpleGM6YHNvY2tldC5lcnJvcmAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGxpYnJhcnkKKworICAgICAgQSBzdHJpbmcgbW5lbW9uaWMgZGVzaWduYXRpbmcgdGhlIE9wZW5TU0wgc3VibW9kdWxlIGluIHdoaWNoIHRoZSBlcnJvcgorICAgICAgb2NjdXJyZWQsIHN1Y2ggYXMgYGBTU0xgYCwgYGBQRU1gYCBvciBgYFg1MDlgYC4gIFRoZSByYW5nZSBvZiBwb3NzaWJsZQorICAgICAgdmFsdWVzIGRlcGVuZHMgb24gdGhlIE9wZW5TU0wgdmVyc2lvbi4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHJlYXNvbgorCisgICAgICBBIHN0cmluZyBtbmVtb25pYyBkZXNpZ25hdGluZyB0aGUgcmVhc29uIHRoaXMgZXJyb3Igb2NjdXJyZWQsIGZvcgorICAgICAgZXhhbXBsZSBgYENFUlRJRklDQVRFX1ZFUklGWV9GQUlMRURgYC4gIFRoZSByYW5nZSBvZiBwb3NzaWJsZQorICAgICAgdmFsdWVzIGRlcGVuZHMgb24gdGhlIE9wZW5TU0wgdmVyc2lvbi4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGV4Y2VwdGlvbjo6IFNTTFplcm9SZXR1cm5FcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgd2hlbiB0cnlpbmcgdG8gcmVhZCBvciB3cml0ZSBhbmQKKyAgIHRoZSBTU0wgY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQgY2xlYW5seS4gIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QKKyAgIG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQgKHJlYWQgVENQKSBoYXMgYmVlbiBjbG9zZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBleGNlcHRpb246OiBTU0xXYW50UmVhZEVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgU1NMRXJyb3JgIHJhaXNlZCBieSBhIDpyZWY6YG5vbi1ibG9ja2luZyBTU0wgc29ja2V0CisgICA8c3NsLW5vbmJsb2NraW5nPmAgd2hlbiB0cnlpbmcgdG8gcmVhZCBvciB3cml0ZSBkYXRhLCBidXQgbW9yZSBkYXRhIG5lZWRzCisgICB0byBiZSByZWNlaXZlZCBvbiB0aGUgdW5kZXJseWluZyBUQ1AgdHJhbnNwb3J0IGJlZm9yZSB0aGUgcmVxdWVzdCBjYW4gYmUKKyAgIGZ1bGZpbGxlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGV4Y2VwdGlvbjo6IFNTTFdhbnRXcml0ZUVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgU1NMRXJyb3JgIHJhaXNlZCBieSBhIDpyZWY6YG5vbi1ibG9ja2luZyBTU0wgc29ja2V0CisgICA8c3NsLW5vbmJsb2NraW5nPmAgd2hlbiB0cnlpbmcgdG8gcmVhZCBvciB3cml0ZSBkYXRhLCBidXQgbW9yZSBkYXRhIG5lZWRzCisgICB0byBiZSBzZW50IG9uIHRoZSB1bmRlcmx5aW5nIFRDUCB0cmFuc3BvcnQgYmVmb3JlIHRoZSByZXF1ZXN0IGNhbiBiZQorICAgZnVsZmlsbGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZXhjZXB0aW9uOjogU1NMU3lzY2FsbEVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgU1NMRXJyb3JgIHJhaXNlZCB3aGVuIGEgc3lzdGVtIGVycm9yIHdhcyBlbmNvdW50ZXJlZAorICAgd2hpbGUgdHJ5aW5nIHRvIGZ1bGZpbGwgYW4gb3BlcmF0aW9uIG9uIGEgU1NMIHNvY2tldC4gIFVuZm9ydHVuYXRlbHksCisgICB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBpbnNwZWN0IHRoZSBvcmlnaW5hbCBlcnJubyBudW1iZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBleGNlcHRpb246OiBTU0xFT0ZFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgd2hlbiB0aGUgU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4KKyAgIHRlcm1pbmF0ZWQgYWJydXB0bHkuICBHZW5lcmFsbHksIHlvdSBzaG91bGRuJ3QgdHJ5IHRvIHJldXNlIHRoZSB1bmRlcmx5aW5nCisgICB0cmFuc3BvcnQgd2hlbiB0aGlzIGVycm9yIGlzIGVuY291bnRlcmVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gZXhjZXB0aW9uOjogQ2VydGlmaWNhdGVFcnJvcgogCkBAIC0xNjEsNiArMjIxLDM1IEBACiBSYW5kb20gZ2VuZXJhdGlvbgogXl5eXl5eXl5eXl5eXl5eXl4KIAorLi4gZnVuY3Rpb246OiBSQU5EX2J5dGVzKG51bSkKKworICAgUmV0dXJucyAqbnVtKiBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBieXRlcy4gUmFpc2VzIGFuCisgICA6Y2xhc3M6YFNTTEVycm9yYCBpZiB0aGUgUFJORyBoYXMgbm90IGJlZW4gc2VlZGVkIHdpdGggZW5vdWdoIGRhdGEgb3IgaWYgdGhlCisgICBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBSQU5EIG1ldGhvZC4gOmZ1bmM6YFJBTkRfc3RhdHVzYAorICAgY2FuIGJlIHVzZWQgdG8gY2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgUFJORyBhbmQgOmZ1bmM6YFJBTkRfYWRkYCBjYW4gYmUgdXNlZAorICAgdG8gc2VlZCB0aGUgUFJORy4KKworICAgUmVhZCB0aGUgV2lraXBlZGlhIGFydGljbGUsIGBDcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgcHNldWRvcmFuZG9tIG51bWJlcgorICAgZ2VuZXJhdG9yIChDU1BSTkcpCisgICA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DcnlwdG9ncmFwaGljYWxseV9zZWN1cmVfcHNldWRvcmFuZG9tX251bWJlcl9nZW5lcmF0b3I+YF8sCisgICB0byBnZXQgdGhlIHJlcXVpcmVtZW50cyBvZiBhIGNyeXB0b2dyYXBoaWNhbGx5IGdlbmVyYXRvci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogUkFORF9wc2V1ZG9fYnl0ZXMobnVtKQorCisgICBSZXR1cm5zIChieXRlcywgaXNfY3J5cHRvZ3JhcGhpYyk6IGJ5dGVzIGFyZSAqbnVtKiBwc2V1ZG8tcmFuZG9tIGJ5dGVzLAorICAgaXNfY3J5cHRvZ3JhcGhpYyBpcyBUcnVlIGlmIHRoZSBieXRlcyBnZW5lcmF0ZWQgYXJlIGNyeXB0b2dyYXBoaWNhbGx5CisgICBzdHJvbmcuIFJhaXNlcyBhbiA6Y2xhc3M6YFNTTEVycm9yYCBpZiB0aGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCisgICBjdXJyZW50IFJBTkQgbWV0aG9kLgorCisgICBHZW5lcmF0ZWQgcHNldWRvLXJhbmRvbSBieXRlIHNlcXVlbmNlcyB3aWxsIGJlIHVuaXF1ZSBpZiB0aGV5IGFyZSBvZgorICAgc3VmZmljaWVudCBsZW5ndGgsIGJ1dCBhcmUgbm90IG5lY2Vzc2FyaWx5IHVucHJlZGljdGFibGUuIFRoZXkgY2FuIGJlIHVzZWQKKyAgIGZvciBub24tY3J5cHRvZ3JhcGhpYyBwdXJwb3NlcyBhbmQgZm9yIGNlcnRhaW4gcHVycG9zZXMgaW4gY3J5cHRvZ3JhcGhpYworICAgcHJvdG9jb2xzLCBidXQgdXN1YWxseSBub3QgZm9yIGtleSBnZW5lcmF0aW9uIGV0Yy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGZ1bmN0aW9uOjogUkFORF9zdGF0dXMoKQogCiAgICBSZXR1cm5zIFRydWUgaWYgdGhlIFNTTCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgaGFzIGJlZW4gc2VlZGVkIHdpdGgKQEAgLTE3MCw3ICsyNTksNyBAQAogCiAuLiBmdW5jdGlvbjo6IFJBTkRfZWdkKHBhdGgpCiAKLSAgIElmIHlvdSBhcmUgcnVubmluZyBhbiBlbnRyb3B5LWdhdGhlcmluZyBkYWVtb24gKEVHRCkgc29tZXdoZXJlLCBhbmQgYGBwYXRoYGAKKyAgIElmIHlvdSBhcmUgcnVubmluZyBhbiBlbnRyb3B5LWdhdGhlcmluZyBkYWVtb24gKEVHRCkgc29tZXdoZXJlLCBhbmQgKnBhdGgqCiAgICBpcyB0aGUgcGF0aG5hbWUgb2YgYSBzb2NrZXQgY29ubmVjdGlvbiBvcGVuIHRvIGl0LCB0aGlzIHdpbGwgcmVhZCAyNTYgYnl0ZXMKICAgIG9mIHJhbmRvbW5lc3MgZnJvbSB0aGUgc29ja2V0LCBhbmQgYWRkIGl0IHRvIHRoZSBTU0wgcHNldWRvLXJhbmRvbSBudW1iZXIKICAgIGdlbmVyYXRvciB0byBpbmNyZWFzZSB0aGUgc2VjdXJpdHkgb2YgZ2VuZXJhdGVkIHNlY3JldCBrZXlzLiAgVGhpcyBpcwpAQCAtMTgxLDggKzI3MCw4IEBACiAKIC4uIGZ1bmN0aW9uOjogUkFORF9hZGQoYnl0ZXMsIGVudHJvcHkpCiAKLSAgIE1peGVzIHRoZSBnaXZlbiBgYGJ5dGVzYGAgaW50byB0aGUgU1NMIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gIFRoZQotICAgcGFyYW1ldGVyIGBgZW50cm9weWBgIChhIGZsb2F0KSBpcyBhIGxvd2VyIGJvdW5kIG9uIHRoZSBlbnRyb3B5IGNvbnRhaW5lZCBpbgorICAgTWl4ZXMgdGhlIGdpdmVuICpieXRlcyogaW50byB0aGUgU1NMIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gIFRoZQorICAgcGFyYW1ldGVyICplbnRyb3B5KiAoYSBmbG9hdCkgaXMgYSBsb3dlciBib3VuZCBvbiB0aGUgZW50cm9weSBjb250YWluZWQgaW4KICAgIHN0cmluZyAoc28geW91IGNhbiBhbHdheXMgdXNlIDpjb25zdDpgMC4wYCkuICBTZWUgOnJmYzpgMTc1MGAgZm9yIG1vcmUKICAgIGluZm9ybWF0aW9uIG9uIHNvdXJjZXMgb2YgZW50cm9weS4KIApAQCAtMjM4LDYgKzMyNyw5IEBACiAgICB3aWxsIGF0dGVtcHQgdG8gdmFsaWRhdGUgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBhZ2FpbnN0IHRoYXQgc2V0IG9mIHJvb3QKICAgIGNlcnRpZmljYXRlcywgYW5kIHdpbGwgZmFpbCBpZiB0aGUgdmFsaWRhdGlvbiBhdHRlbXB0IGZhaWxzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgSVB2Ni1jb21wYXRpYmxlLgorCiAuLiBmdW5jdGlvbjo6IERFUl9jZXJ0X3RvX1BFTV9jZXJ0KERFUl9jZXJ0X2J5dGVzKQogCiAgICBHaXZlbiBhIGNlcnRpZmljYXRlIGFzIGEgREVSLWVuY29kZWQgYmxvYiBvZiBieXRlcywgcmV0dXJucyBhIFBFTS1lbmNvZGVkCkBAIC0zNDUsNiArNDM3LDQ2IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisuLiBkYXRhOjogT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFCisKKyAgIFVzZSB0aGUgc2VydmVyJ3MgY2lwaGVyIG9yZGVyaW5nIHByZWZlcmVuY2UsIHJhdGhlciB0aGFuIHRoZSBjbGllbnQncy4KKyAgIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gY2xpZW50IHNvY2tldHMgYW5kIFNTTHYyIHNlcnZlciBzb2NrZXRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IE9QX1NJTkdMRV9ESF9VU0UKKworICAgUHJldmVudHMgcmUtdXNlIG9mIHRoZSBzYW1lIERIIGtleSBmb3IgZGlzdGluY3QgU1NMIHNlc3Npb25zLiAgVGhpcworICAgaW1wcm92ZXMgZm9yd2FyZCBzZWNyZWN5IGJ1dCByZXF1aXJlcyBtb3JlIGNvbXB1dGF0aW9uYWwgcmVzb3VyY2VzLgorICAgVGhpcyBvcHRpb24gb25seSBhcHBsaWVzIHRvIHNlcnZlciBzb2NrZXRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IE9QX1NJTkdMRV9FQ0RIX1VTRQorCisgICBQcmV2ZW50cyByZS11c2Ugb2YgdGhlIHNhbWUgRUNESCBrZXkgZm9yIGRpc3RpbmN0IFNTTCBzZXNzaW9ucy4gIFRoaXMKKyAgIGltcHJvdmVzIGZvcndhcmQgc2VjcmVjeSBidXQgcmVxdWlyZXMgbW9yZSBjb21wdXRhdGlvbmFsIHJlc291cmNlcy4KKyAgIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGllcyB0byBzZXJ2ZXIgc29ja2V0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBPUF9OT19DT01QUkVTU0lPTgorCisgICBEaXNhYmxlIGNvbXByZXNzaW9uIG9uIHRoZSBTU0wgY2hhbm5lbC4gIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBhcHBsaWNhdGlvbgorICAgcHJvdG9jb2wgc3VwcG9ydHMgaXRzIG93biBjb21wcmVzc2lvbiBzY2hlbWUuCisKKyAgIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHdpdGggT3BlblNTTCAxLjAuMCBhbmQgbGF0ZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogSEFTX0VDREgKKworICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciBFbGxpcHRpYyBDdXJ2ZS1iYXNlZAorICAgRGlmZmllLUhlbGxtYW4ga2V5IGV4Y2hhbmdlLiAgVGhpcyBzaG91bGQgYmUgdHJ1ZSB1bmxlc3MgdGhlIGZlYXR1cmUgd2FzCisgICBleHBsaWNpdGx5IGRpc2FibGVkIGJ5IHRoZSBkaXN0cmlidXRvci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGRhdGE6OiBIQVNfU05JCiAKICAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgdGhlICpTZXJ2ZXIgTmFtZQpAQCAtMzU0LDYgKzQ4NiwyMyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorLi4gZGF0YTo6IEhBU19OUE4KKworICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciAqTmV4dCBQcm90b2NvbAorICAgTmVnb3RpYXRpb24qIGFzIGRlc2NyaWJlZCBpbiB0aGUgYE5QTiBkcmFmdCBzcGVjaWZpY2F0aW9uCisgICA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtYWdsLXRscy1uZXh0cHJvdG9uZWc+YF8uIFdoZW4gdHJ1ZSwKKyAgIHlvdSBjYW4gdXNlIHRoZSA6bWV0aDpgU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29sc2AgbWV0aG9kIHRvIGFkdmVydGlzZQorICAgd2hpY2ggcHJvdG9jb2xzIHlvdSB3YW50IHRvIHN1cHBvcnQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogQ0hBTk5FTF9CSU5ESU5HX1RZUEVTCisKKyAgIExpc3Qgb2Ygc3VwcG9ydGVkIFRMUyBjaGFubmVsIGJpbmRpbmcgdHlwZXMuICBTdHJpbmdzIGluIHRoaXMgbGlzdAorICAgY2FuIGJlIHVzZWQgYXMgYXJndW1lbnRzIHRvIDptZXRoOmBTU0xTb2NrZXQuZ2V0X2NoYW5uZWxfYmluZGluZ2AuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBkYXRhOjogT1BFTlNTTF9WRVJTSU9OCiAKICAgIFRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgT3BlblNTTCBsaWJyYXJ5IGxvYWRlZCBieSB0aGUgaW50ZXJwcmV0ZXI6OgpAQCAtNDc5LDYgKzYyOCwzNyBAQAogICAgdmVyc2lvbiBvZiB0aGUgU1NMIHByb3RvY29sIHRoYXQgZGVmaW5lcyBpdHMgdXNlLCBhbmQgdGhlIG51bWJlciBvZiBzZWNyZXQKICAgIGJpdHMgYmVpbmcgdXNlZC4gIElmIG5vIGNvbm5lY3Rpb24gaGFzIGJlZW4gZXN0YWJsaXNoZWQsIHJldHVybnMgYGBOb25lYGAuCiAKKy4uIG1ldGhvZDo6IFNTTFNvY2tldC5jb21wcmVzc2lvbigpCisKKyAgIFJldHVybiB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIGJlaW5nIHVzZWQgYXMgYSBzdHJpbmcsIG9yIGBgTm9uZWBgCisgICBpZiB0aGUgY29ubmVjdGlvbiBpc24ndCBjb21wcmVzc2VkLgorCisgICBJZiB0aGUgaGlnaGVyLWxldmVsIHByb3RvY29sIHN1cHBvcnRzIGl0cyBvd24gY29tcHJlc3Npb24gbWVjaGFuaXNtLAorICAgeW91IGNhbiB1c2UgOmRhdGE6YE9QX05PX0NPTVBSRVNTSU9OYCB0byBkaXNhYmxlIFNTTC1sZXZlbCBjb21wcmVzc2lvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIG1ldGhvZDo6IFNTTFNvY2tldC5nZXRfY2hhbm5lbF9iaW5kaW5nKGNiX3R5cGU9InRscy11bmlxdWUiKQorCisgICBHZXQgY2hhbm5lbCBiaW5kaW5nIGRhdGEgZm9yIGN1cnJlbnQgY29ubmVjdGlvbiwgYXMgYSBieXRlcyBvYmplY3QuICBSZXR1cm5zCisgICBgYE5vbmVgYCBpZiBub3QgY29ubmVjdGVkIG9yIHRoZSBoYW5kc2hha2UgaGFzIG5vdCBiZWVuIGNvbXBsZXRlZC4KKworICAgVGhlICpjYl90eXBlKiBwYXJhbWV0ZXIgYWxsb3cgc2VsZWN0aW9uIG9mIHRoZSBkZXNpcmVkIGNoYW5uZWwgYmluZGluZworICAgdHlwZS4gVmFsaWQgY2hhbm5lbCBiaW5kaW5nIHR5cGVzIGFyZSBsaXN0ZWQgaW4gdGhlCisgICA6ZGF0YTpgQ0hBTk5FTF9CSU5ESU5HX1RZUEVTYCBsaXN0LiAgQ3VycmVudGx5IG9ubHkgdGhlICd0bHMtdW5pcXVlJyBjaGFubmVsCisgICBiaW5kaW5nLCBkZWZpbmVkIGJ5IDpyZmM6YDU5MjlgLCBpcyBzdXBwb3J0ZWQuICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlCisgICByYWlzZWQgaWYgYW4gdW5zdXBwb3J0ZWQgY2hhbm5lbCBiaW5kaW5nIHR5cGUgaXMgcmVxdWVzdGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gbWV0aG9kOjogU1NMU29ja2V0LnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCisKKyAgIFJldHVybnMgdGhlIHByb3RvY29sIHRoYXQgd2FzIHNlbGVjdGVkIGR1cmluZyB0aGUgVExTL1NTTCBoYW5kc2hha2UuIElmCisgICA6bWV0aDpgU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29sc2Agd2FzIG5vdCBjYWxsZWQsIG9yIGlmIHRoZSBvdGhlciBwYXJ0eQorICAgZG9lcyBub3Qgc3VwcG9ydCBOUE4sIG9yIGlmIHRoZSBoYW5kc2hha2UgaGFzIG5vdCB5ZXQgaGFwcGVuZWQsIHRoaXMgd2lsbAorICAgcmV0dXJuIGBgTm9uZWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gbWV0aG9kOjogU1NMU29ja2V0LnVud3JhcCgpCiAKQEAgLTQ4OCw3ICs2NjgsNiBAQAogICAgcmV0dXJuZWQgc29ja2V0IHNob3VsZCBhbHdheXMgYmUgdXNlZCBmb3IgZnVydGhlciBjb21tdW5pY2F0aW9uIHdpdGggdGhlCiAgICBvdGhlciBzaWRlIG9mIHRoZSBjb25uZWN0aW9uLCByYXRoZXIgdGhhbiB0aGUgb3JpZ2luYWwgc29ja2V0LgogCi0KIC4uIGF0dHJpYnV0ZTo6IFNTTFNvY2tldC5jb250ZXh0CiAKICAgIFRoZSA6Y2xhc3M6YFNTTENvbnRleHRgIG9iamVjdCB0aGlzIFNTTCBzb2NrZXQgaXMgdGllZCB0by4gIElmIHRoZSBTU0wKQEAgLTUxOCw3ICs2OTcsNyBAQAogCiA6Y2xhc3M6YFNTTENvbnRleHRgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKLS4uIG1ldGhvZDo6IFNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlLCBrZXlmaWxlPU5vbmUpCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZT1Ob25lLCBwYXNzd29yZD1Ob25lKQogCiAgICBMb2FkIGEgcHJpdmF0ZSBrZXkgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGNlcnRpZmljYXRlLiAgVGhlICpjZXJ0ZmlsZSoKICAgIHN0cmluZyBtdXN0IGJlIHRoZSBwYXRoIHRvIGEgc2luZ2xlIGZpbGUgaW4gUEVNIGZvcm1hdCBjb250YWluaW5nIHRoZQpAQCAtNTI5LDkgKzcwOCwyNSBAQAogICAgOnJlZjpgc3NsLWNlcnRpZmljYXRlc2AgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRoZSBjZXJ0aWZpY2F0ZQogICAgaXMgc3RvcmVkIGluIHRoZSAqY2VydGZpbGUqLgogCisgICBUaGUgKnBhc3N3b3JkKiBhcmd1bWVudCBtYXkgYmUgYSBmdW5jdGlvbiB0byBjYWxsIHRvIGdldCB0aGUgcGFzc3dvcmQgZm9yCisgICBkZWNyeXB0aW5nIHRoZSBwcml2YXRlIGtleS4gIEl0IHdpbGwgb25seSBiZSBjYWxsZWQgaWYgdGhlIHByaXZhdGUga2V5IGlzCisgICBlbmNyeXB0ZWQgYW5kIGEgcGFzc3dvcmQgaXMgbmVjZXNzYXJ5LiAgSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMsCisgICBhbmQgaXQgc2hvdWxkIHJldHVybiBhIHN0cmluZywgYnl0ZXMsIG9yIGJ5dGVhcnJheS4gIElmIHRoZSByZXR1cm4gdmFsdWUgaXMKKyAgIGEgc3RyaW5nIGl0IHdpbGwgYmUgZW5jb2RlZCBhcyBVVEYtOCBiZWZvcmUgdXNpbmcgaXQgdG8gZGVjcnlwdCB0aGUga2V5LgorICAgQWx0ZXJuYXRpdmVseSBhIHN0cmluZywgYnl0ZXMsIG9yIGJ5dGVhcnJheSB2YWx1ZSBtYXkgYmUgc3VwcGxpZWQgZGlyZWN0bHkKKyAgIGFzIHRoZSAqcGFzc3dvcmQqIGFyZ3VtZW50LiAgSXQgd2lsbCBiZSBpZ25vcmVkIGlmIHRoZSBwcml2YXRlIGtleSBpcyBub3QKKyAgIGVuY3J5cHRlZCBhbmQgbm8gcGFzc3dvcmQgaXMgbmVlZGVkLgorCisgICBJZiB0aGUgKnBhc3N3b3JkKiBhcmd1bWVudCBpcyBub3Qgc3BlY2lmaWVkIGFuZCBhIHBhc3N3b3JkIGlzIHJlcXVpcmVkLAorICAgT3BlblNTTCdzIGJ1aWx0LWluIHBhc3N3b3JkIHByb21wdGluZyBtZWNoYW5pc20gd2lsbCBiZSB1c2VkIHRvCisgICBpbnRlcmFjdGl2ZWx5IHByb21wdCB0aGUgdXNlciBmb3IgYSBwYXNzd29yZC4KKwogICAgQW4gOmNsYXNzOmBTU0xFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBwcml2YXRlIGtleSBkb2Vzbid0CiAgICBtYXRjaCB3aXRoIHRoZSBjZXJ0aWZpY2F0ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE5ldyBvcHRpb25hbCBhcmd1bWVudCAqcGFzc3dvcmQqLgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUpCiAKICAgIExvYWQgYSBzZXQgb2YgImNlcnRpZmljYXRpb24gYXV0aG9yaXR5IiAoQ0EpIGNlcnRpZmljYXRlcyB1c2VkIHRvIHZhbGlkYXRlCkBAIC01NzAsNiArNzY1LDUzIEBACiAgICAgICB3aGVuIGNvbm5lY3RlZCwgdGhlIDptZXRoOmBTU0xTb2NrZXQuY2lwaGVyYCBtZXRob2Qgb2YgU1NMIHNvY2tldHMgd2lsbAogICAgICAgZ2l2ZSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNpcGhlci4KIAorLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhwcm90b2NvbHMpCisKKyAgIFNwZWNpZnkgd2hpY2ggcHJvdG9jb2xzIHRoZSBzb2NrZXQgc2hvdWxkIGF2ZXJ0aXNlIGR1cmluZyB0aGUgU1NML1RMUworICAgaGFuZHNoYWtlLiBJdCBzaG91bGQgYmUgYSBsaXN0IG9mIHN0cmluZ3MsIGxpa2UgYGBbJ2h0dHAvMS4xJywgJ3NwZHkvMiddYGAsCisgICBvcmRlcmVkIGJ5IHByZWZlcmVuY2UuIFRoZSBzZWxlY3Rpb24gb2YgYSBwcm90b2NvbCB3aWxsIGhhcHBlbiBkdXJpbmcgdGhlCisgICBoYW5kc2hha2UsIGFuZCB3aWxsIHBsYXkgb3V0IGFjY29yZGluZyB0byB0aGUgYE5QTiBkcmFmdCBzcGVjaWZpY2F0aW9uCisgICA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtYWdsLXRscy1uZXh0cHJvdG9uZWc+YF8uIEFmdGVyIGEKKyAgIHN1Y2Nlc3NmdWwgaGFuZHNoYWtlLCB0aGUgOm1ldGg6YFNTTFNvY2tldC5zZWxlY3RlZF9ucG5fcHJvdG9jb2xgIG1ldGhvZCB3aWxsCisgICByZXR1cm4gdGhlIGFncmVlZC11cG9uIHByb3RvY29sLgorCisgICBUaGlzIG1ldGhvZCB3aWxsIHJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlmIDpkYXRhOmBIQVNfTlBOYCBpcworICAgRmFsc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmxvYWRfZGhfcGFyYW1zKGRoZmlsZSkKKworICAgTG9hZCB0aGUga2V5IGdlbmVyYXRpb24gcGFyYW1ldGVycyBmb3IgRGlmZmllLUhlbG1hbiAoREgpIGtleSBleGNoYW5nZS4KKyAgIFVzaW5nIERIIGtleSBleGNoYW5nZSBpbXByb3ZlcyBmb3J3YXJkIHNlY3JlY3kgYXQgdGhlIGV4cGVuc2Ugb2YKKyAgIGNvbXB1dGF0aW9uYWwgcmVzb3VyY2VzIChib3RoIG9uIHRoZSBzZXJ2ZXIgYW5kIG9uIHRoZSBjbGllbnQpLgorICAgVGhlICpkaGZpbGUqIHBhcmFtZXRlciBzaG91bGQgYmUgdGhlIHBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgREgKKyAgIHBhcmFtZXRlcnMgaW4gUEVNIGZvcm1hdC4KKworICAgVGhpcyBzZXR0aW5nIGRvZXNuJ3QgYXBwbHkgdG8gY2xpZW50IHNvY2tldHMuICBZb3UgY2FuIGFsc28gdXNlIHRoZQorICAgOmRhdGE6YE9QX1NJTkdMRV9ESF9VU0VgIG9wdGlvbiB0byBmdXJ0aGVyIGltcHJvdmUgc2VjdXJpdHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNldF9lY2RoX2N1cnZlKGN1cnZlX25hbWUpCisKKyAgIFNldCB0aGUgY3VydmUgbmFtZSBmb3IgRWxsaXB0aWMgQ3VydmUtYmFzZWQgRGlmZmllLUhlbGxtYW4gKEVDREgpIGtleQorICAgZXhjaGFuZ2UuICBFQ0RIIGlzIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gcmVndWxhciBESCB3aGlsZSBhcmd1YWJseQorICAgYXMgc2VjdXJlLiAgVGhlICpjdXJ2ZV9uYW1lKiBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgc3RyaW5nIGRlc2NyaWJpbmcKKyAgIGEgd2VsbC1rbm93biBlbGxpcHRpYyBjdXJ2ZSwgZm9yIGV4YW1wbGUgYGBwcmltZTI1NnYxYGAgZm9yIGEgd2lkZWx5CisgICBzdXBwb3J0ZWQgY3VydmUuCisKKyAgIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIGNsaWVudCBzb2NrZXRzLiAgWW91IGNhbiBhbHNvIHVzZSB0aGUKKyAgIDpkYXRhOmBPUF9TSU5HTEVfRUNESF9VU0VgIG9wdGlvbiB0byBmdXJ0aGVyIGltcHJvdmUgc2VjdXJpdHkuCisKKyAgIFRoaXMgbWV0aG9kIGlzIG5vdCBhdmFpbGFibGUgaWYgOmRhdGE6YEhBU19FQ0RIYCBpcyBGYWxzZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIHNlZWFsc286OgorICAgICAgYFNTTC9UTFMgJiBQZXJmZWN0IEZvcndhcmQgU2VjcmVjeSA8aHR0cDovL3ZpbmNlbnQuYmVybmF0LmltL2VuL2Jsb2cvMjAxMS1zc2wtcGVyZmVjdC1mb3J3YXJkLXNlY3JlY3kuaHRtbD5gXworICAgICAgICAgVmluY2VudCBCZXJuYXQuCisKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQud3JhcF9zb2NrZXQoc29jaywgc2VydmVyX3NpZGU9RmFsc2UsIFwKICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PVRydWUsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIFwKICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKQpAQCAtOTg0LDEzICsxMjI2LDEwIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvY2suZG9faGFuZHNoYWtlKCkKICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQ6Ci0gICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc29ja10sIFtdLCBbXSkKLSAgICAgICAgICAgIGVsaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1dSSVRFOgotICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzb2NrXSwgW10pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKKyAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NvY2tdLCBbXSwgW10pCisgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6CisgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc29ja10sIFtdKQogCiAKIC4uIF9zc2wtc2VjdXJpdHk6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGF0LnJzdCBiL0RvYy9saWJyYXJ5L3N0YXQucnN0CmluZGV4IDdkZTk4YjYuLmY0N2Y0NjQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0YXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0YXQucnN0CkBAIC0xMDQsNiArMTA0LDE2IEBACiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgIHdhbGt0cmVlKHN5cy5hcmd2WzFdLCB2aXNpdGZpbGUpCiAKK0FuIGFkZGl0aW9uYWwgdXRpbGl0eSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBjb3ZlcnQgYSBmaWxlJ3MgbW9kZSBpbiBhIGh1bWFuCityZWFkYWJsZSBzdHJpbmc6CisKKy4uIGZ1bmN0aW9uOjogZmlsZW1vZGUobW9kZSkKKworICAgQ29udmVydCBhIGZpbGUncyBtb2RlIHRvIGEgc3RyaW5nIG9mIHRoZSBmb3JtICctcnd4cnd4cnd4Jy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogQWxsIHRoZSB2YXJpYWJsZXMgYmVsb3cgYXJlIHNpbXBseSBzeW1ib2xpYyBpbmRleGVzIGludG8gdGhlIDEwLXR1cGxlIHJldHVybmVkCiBieSA6ZnVuYzpgb3Muc3RhdGAsIDpmdW5jOmBvcy5mc3RhdGAgb3IgOmZ1bmM6YG9zLmxzdGF0YC4KIApAQCAtMzQ0LDQgKzM1NCwzIEBACiAgICBUaGUgZmlsZSBpcyBhIHNuYXBzaG90IGZpbGUuCiAKIFNlZSB0aGUgXCpCU0Qgb3IgTWFjIE9TIHN5c3RlbXMgbWFuIHBhZ2UgOm1hbnBhZ2U6YGNoZmxhZ3MoMilgIGZvciBtb3JlIGluZm9ybWF0aW9uLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKaW5kZXggOTY4ODM5My4uMzRkNmY4OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdApAQCAtMTUsNiArMTUsMTAgQEAKIFRoZSBwcmluY2lwYWwgYnVpbHQtaW4gdHlwZXMgYXJlIG51bWVyaWNzLCBzZXF1ZW5jZXMsIG1hcHBpbmdzLCBjbGFzc2VzLAogaW5zdGFuY2VzIGFuZCBleGNlcHRpb25zLgogCitTb21lIGNvbGxlY3Rpb24gY2xhc3NlcyBhcmUgbXV0YWJsZS4gIFRoZSBtZXRob2RzIHRoYXQgYWRkLCBzdWJ0cmFjdCwgb3IKK3JlYXJyYW5nZSB0aGVpciBtZW1iZXJzIGluIHBsYWNlLCBhbmQgZG9uJ3QgcmV0dXJuIGEgc3BlY2lmaWMgaXRlbSwgbmV2ZXIgcmV0dXJuCit0aGUgY29sbGVjdGlvbiBpbnN0YW5jZSBpdHNlbGYgYnV0IGBgTm9uZWBgLgorCiBTb21lIG9wZXJhdGlvbnMgYXJlIHN1cHBvcnRlZCBieSBzZXZlcmFsIG9iamVjdCB0eXBlczsgaW4gcGFydGljdWxhciwKIHByYWN0aWNhbGx5IGFsbCBvYmplY3RzIGNhbiBiZSBjb21wYXJlZCwgdGVzdGVkIGZvciB0cnV0aCB2YWx1ZSwgYW5kIGNvbnZlcnRlZAogdG8gYSBzdHJpbmcgKHdpdGggdGhlIDpmdW5jOmByZXByYCBmdW5jdGlvbiBvciB0aGUgc2xpZ2h0bHkgZGlmZmVyZW50CkBAIC02NDEsMzQgKzY0NSwzNCBAQAogCiBIZXJlIGFyZSB0aGUgcnVsZXMgaW4gZGV0YWlsOgogCi0gLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbm9ubmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGFuZCBgYG5gYCBpcyBub3QgZGl2aXNpYmxlCi0gICBieSBgYFBgYCwgZGVmaW5lIGBgaGFzaCh4KWBgIGFzIGBgbSAqIGludm1vZChuLCBQKSAlIFBgYCwgd2hlcmUgYGBpbnZtb2QobiwKLSAgIFApYGAgZ2l2ZXMgdGhlIGludmVyc2Ugb2YgYGBuYGAgbW9kdWxvIGBgUGBgLgorLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbm9ubmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGFuZCBgYG5gYCBpcyBub3QgZGl2aXNpYmxlCisgIGJ5IGBgUGBgLCBkZWZpbmUgYGBoYXNoKHgpYGAgYXMgYGBtICogaW52bW9kKG4sIFApICUgUGBgLCB3aGVyZSBgYGludm1vZChuLAorICBQKWBgIGdpdmVzIHRoZSBpbnZlcnNlIG9mIGBgbmBgIG1vZHVsbyBgYFBgYC4KIAotIC0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMKLSAgIGRpdmlzaWJsZSBieSBgYFBgYCAoYnV0IGBgbWBgIGlzIG5vdCkgdGhlbiBgYG5gYCBoYXMgbm8gaW52ZXJzZQotICAgbW9kdWxvIGBgUGBgIGFuZCB0aGUgcnVsZSBhYm92ZSBkb2Vzbid0IGFwcGx5OyBpbiB0aGlzIGNhc2UgZGVmaW5lCi0gICBgYGhhc2goeClgYCB0byBiZSB0aGUgY29uc3RhbnQgdmFsdWUgYGBzeXMuaGFzaF9pbmZvLmluZmBgLgorLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbm9ubmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGFuZCBgYG5gYCBpcworICBkaXZpc2libGUgYnkgYGBQYGAgKGJ1dCBgYG1gYCBpcyBub3QpIHRoZW4gYGBuYGAgaGFzIG5vIGludmVyc2UKKyAgbW9kdWxvIGBgUGBgIGFuZCB0aGUgcnVsZSBhYm92ZSBkb2Vzbid0IGFwcGx5OyBpbiB0aGlzIGNhc2UgZGVmaW5lCisgIGBgaGFzaCh4KWBgIHRvIGJlIHRoZSBjb25zdGFudCB2YWx1ZSBgYHN5cy5oYXNoX2luZm8uaW5mYGAuCiAKLSAtIElmIGBgeCA9IG0gLyBuYGAgaXMgYSBuZWdhdGl2ZSByYXRpb25hbCBudW1iZXIgZGVmaW5lIGBgaGFzaCh4KWBgCi0gICBhcyBgYC1oYXNoKC14KWBgLiAgSWYgdGhlIHJlc3VsdGluZyBoYXNoIGlzIGBgLTFgYCwgcmVwbGFjZSBpdCB3aXRoCi0gICBgYC0yYGAuCistIElmIGBgeCA9IG0gLyBuYGAgaXMgYSBuZWdhdGl2ZSByYXRpb25hbCBudW1iZXIgZGVmaW5lIGBgaGFzaCh4KWBgCisgIGFzIGBgLWhhc2goLXgpYGAuICBJZiB0aGUgcmVzdWx0aW5nIGhhc2ggaXMgYGAtMWBgLCByZXBsYWNlIGl0IHdpdGgKKyAgYGAtMmBgLgogCi0gLSBUaGUgcGFydGljdWxhciB2YWx1ZXMgYGBzeXMuaGFzaF9pbmZvLmluZmBgLCBgYC1zeXMuaGFzaF9pbmZvLmluZmBgCi0gICBhbmQgYGBzeXMuaGFzaF9pbmZvLm5hbmBgIGFyZSB1c2VkIGFzIGhhc2ggdmFsdWVzIGZvciBwb3NpdGl2ZQotICAgaW5maW5pdHksIG5lZ2F0aXZlIGluZmluaXR5LCBvciBuYW5zIChyZXNwZWN0aXZlbHkpLiAgKEFsbCBoYXNoYWJsZQotICAgbmFucyBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWUuKQorLSBUaGUgcGFydGljdWxhciB2YWx1ZXMgYGBzeXMuaGFzaF9pbmZvLmluZmBgLCBgYC1zeXMuaGFzaF9pbmZvLmluZmBgCisgIGFuZCBgYHN5cy5oYXNoX2luZm8ubmFuYGAgYXJlIHVzZWQgYXMgaGFzaCB2YWx1ZXMgZm9yIHBvc2l0aXZlCisgIGluZmluaXR5LCBuZWdhdGl2ZSBpbmZpbml0eSwgb3IgbmFucyAocmVzcGVjdGl2ZWx5KS4gIChBbGwgaGFzaGFibGUKKyAgbmFucyBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWUuKQogCi0gLSBGb3IgYSA6Y2xhc3M6YGNvbXBsZXhgIG51bWJlciBgYHpgYCwgdGhlIGhhc2ggdmFsdWVzIG9mIHRoZSByZWFsCi0gICBhbmQgaW1hZ2luYXJ5IHBhcnRzIGFyZSBjb21iaW5lZCBieSBjb21wdXRpbmcgYGBoYXNoKHoucmVhbCkgKwotICAgc3lzLmhhc2hfaW5mby5pbWFnICogaGFzaCh6LmltYWcpYGAsIHJlZHVjZWQgbW9kdWxvCi0gICBgYDIqKnN5cy5oYXNoX2luZm8ud2lkdGhgYCBzbyB0aGF0IGl0IGxpZXMgaW4KLSAgIGBgcmFuZ2UoLTIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0gMSksIDIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0KLSAgIDEpKWBgLiAgQWdhaW4sIGlmIHRoZSByZXN1bHQgaXMgYGAtMWBgLCBpdCdzIHJlcGxhY2VkIHdpdGggYGAtMmBgLgorLSBGb3IgYSA6Y2xhc3M6YGNvbXBsZXhgIG51bWJlciBgYHpgYCwgdGhlIGhhc2ggdmFsdWVzIG9mIHRoZSByZWFsCisgIGFuZCBpbWFnaW5hcnkgcGFydHMgYXJlIGNvbWJpbmVkIGJ5IGNvbXB1dGluZyBgYGhhc2goei5yZWFsKSArCisgIHN5cy5oYXNoX2luZm8uaW1hZyAqIGhhc2goei5pbWFnKWBgLCByZWR1Y2VkIG1vZHVsbworICBgYDIqKnN5cy5oYXNoX2luZm8ud2lkdGhgYCBzbyB0aGF0IGl0IGxpZXMgaW4KKyAgYGByYW5nZSgtMioqKHN5cy5oYXNoX2luZm8ud2lkdGggLSAxKSwgMioqKHN5cy5oYXNoX2luZm8ud2lkdGggLQorICAxKSlgYC4gIEFnYWluLCBpZiB0aGUgcmVzdWx0IGlzIGBgLTFgYCwgaXQncyByZXBsYWNlZCB3aXRoIGBgLTJgYC4KIAogCiBUbyBjbGFyaWZ5IHRoZSBhYm92ZSBydWxlcywgaGVyZSdzIHNvbWUgZXhhbXBsZSBQeXRob24gY29kZSwKLWVxdWl2YWxlbnQgdG8gdGhlIGJ1aWx0aW4gaGFzaCwgZm9yIGNvbXB1dGluZyB0aGUgaGFzaCBvZiBhIHJhdGlvbmFsCitlcXVpdmFsZW50IHRvIHRoZSBidWlsdC1pbiBoYXNoLCBmb3IgY29tcHV0aW5nIHRoZSBoYXNoIG9mIGEgcmF0aW9uYWwKIG51bWJlciwgOmNsYXNzOmBmbG9hdGAsIG9yIDpjbGFzczpgY29tcGxleGA6OgogCiAKQEAgLTc5NSwxMTAgKzc5OSwzNSBAQAogCiAuLiBfdHlwZXNzZXE6CiAKLVNlcXVlbmNlIFR5cGVzIC0tLSA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YGJ5dGVhcnJheWAsIDpjbGFzczpgbGlzdGAsIDpjbGFzczpgdHVwbGVgLCA6Y2xhc3M6YHJhbmdlYAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitTZXF1ZW5jZSBUeXBlcyAtLS0gOmNsYXNzOmBsaXN0YCwgOmNsYXNzOmB0dXBsZWAsIDpjbGFzczpgcmFuZ2VgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZXJlIGFyZSBzaXggc2VxdWVuY2UgdHlwZXM6IHN0cmluZ3MsIGJ5dGUgc2VxdWVuY2VzICg6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzKSwKLWJ5dGUgYXJyYXlzICg6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cyksIGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZSBvYmplY3RzLiAgRm9yCi1vdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQgaW4gOmNsYXNzOmBkaWN0YCBhbmQgOmNsYXNzOmBzZXRgIGNsYXNzZXMsIGFuZAotdGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUuCitUaGVyZSBhcmUgdGhyZWUgYmFzaWMgc2VxdWVuY2UgdHlwZXM6IGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZSBvYmplY3RzLgorQWRkaXRpb25hbCBzZXF1ZW5jZSB0eXBlcyB0YWlsb3JlZCBmb3IgcHJvY2Vzc2luZyBvZgorOnJlZjpgYmluYXJ5IGRhdGEgPGJpbmFyeXNlcT5gIGFuZCA6cmVmOmB0ZXh0IHN0cmluZ3MgPHRleHRzZXE+YCBhcmUKK2Rlc2NyaWJlZCBpbiBkZWRpY2F0ZWQgc2VjdGlvbnMuCiAKIAotLi4gaW5kZXg6OgotICAgb2JqZWN0OiBzZXF1ZW5jZQotICAgb2JqZWN0OiBzdHJpbmcKLSAgIG9iamVjdDogYnl0ZXMKLSAgIG9iamVjdDogYnl0ZWFycmF5Ci0gICBvYmplY3Q6IHR1cGxlCi0gICBvYmplY3Q6IGxpc3QKLSAgIG9iamVjdDogcmFuZ2UKKy4uIF90eXBlc3NlcS1jb21tb246CiAKLVN0cmluZ3MgY29udGFpbiBVbmljb2RlIGNoYXJhY3RlcnMuICBUaGVpciBsaXRlcmFscyBhcmUgd3JpdHRlbiBpbiBzaW5nbGUgb3IKLWRvdWJsZSBxdW90ZXM6IGBgJ3h5enp5J2BgLCBgYCJmcm9ib3p6ImBgLiAgU2VlIDpyZWY6YHN0cmluZ3NgIGZvciBtb3JlIGFib3V0Ci1zdHJpbmcgbGl0ZXJhbHMuICBJbiBhZGRpdGlvbiB0byB0aGUgZnVuY3Rpb25hbGl0eSBkZXNjcmliZWQgaGVyZSwgdGhlcmUgYXJlCi1hbHNvIHN0cmluZy1zcGVjaWZpYyBtZXRob2RzIGRlc2NyaWJlZCBpbiB0aGUgOnJlZjpgc3RyaW5nLW1ldGhvZHNgIHNlY3Rpb24uCitDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGNvbnRhaW4gc2luZ2xlIGJ5dGVzIC0tIHRoZSBmb3JtZXIgaXMgaW1tdXRhYmxlCi13aGlsZSB0aGUgbGF0dGVyIGlzIGEgbXV0YWJsZSBzZXF1ZW5jZS4KLUJ5dGVzIG9iamVjdHMgY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IHVzaW5nIHRoZQotY29uc3RydWN0b3IsIDpmdW5jOmBieXRlc2AsIGFuZCBmcm9tIGxpdGVyYWxzOyB1c2UgYSBgYGJgYCBwcmVmaXggd2l0aCBub3JtYWwKLXN0cmluZyBzeW50YXg6IGBgYid4eXp6eSdgYC4gIFRvIGNvbnN0cnVjdCBieXRlIGFycmF5cywgdXNlIHRoZQotOmZ1bmM6YGJ5dGVhcnJheWAgZnVuY3Rpb24uCisuLiBpbmRleDo6IG9iamVjdDogc2VxdWVuY2UKIAotV2hpbGUgc3RyaW5nIG9iamVjdHMgYXJlIHNlcXVlbmNlcyBvZiBjaGFyYWN0ZXJzIChyZXByZXNlbnRlZCBieSBzdHJpbmdzIG9mCi1sZW5ndGggMSksIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mICppbnRlZ2VycyogKGJldHdlZW4gMAotYW5kIDI1NSksIHJlcHJlc2VudGluZyB0aGUgQVNDSUkgdmFsdWUgb2Ygc2luZ2xlIGJ5dGVzLiAgVGhhdCBtZWFucyB0aGF0IGZvcgotYSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0ICpiKiwgYGBiWzBdYGAgd2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZQotYGBiWzA6MV1gYCB3aWxsIGJlIGEgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCBvZiBsZW5ndGggMS4gIFRoZQotcmVwcmVzZW50YXRpb24gb2YgYnl0ZXMgb2JqZWN0cyB1c2VzIHRoZSBsaXRlcmFsIGZvcm1hdCAoYGBiJy4uLidgYCkgc2luY2UgaXQKLWlzIGdlbmVyYWxseSBtb3JlIHVzZWZ1bCB0aGFuIGUuZy4gYGBieXRlcyhbNTAsIDE5LCAxMDBdKWBgLiAgWW91IGNhbiBhbHdheXMKLWNvbnZlcnQgYSBieXRlcyBvYmplY3QgaW50byBhIGxpc3Qgb2YgaW50ZWdlcnMgdXNpbmcgYGBsaXN0KGIpYGAuCi0KLUFsc28sIHdoaWxlIGluIHByZXZpb3VzIFB5dGhvbiB2ZXJzaW9ucywgYnl0ZSBzdHJpbmdzIGFuZCBVbmljb2RlIHN0cmluZ3MKLWNvdWxkIGJlIGV4Y2hhbmdlZCBmb3IgZWFjaCBvdGhlciByYXRoZXIgZnJlZWx5IChiYXJyaW5nIGVuY29kaW5nIGlzc3VlcyksCi1zdHJpbmdzIGFuZCBieXRlcyBhcmUgbm93IGNvbXBsZXRlbHkgc2VwYXJhdGUgY29uY2VwdHMuICBUaGVyZSdzIG5vIGltcGxpY2l0Ci1lbi0vZGVjb2RpbmcgaWYgeW91IHBhc3MgYW4gb2JqZWN0IG9mIHRoZSB3cm9uZyB0eXBlLiAgQSBzdHJpbmcgYWx3YXlzCi1jb21wYXJlcyB1bmVxdWFsIHRvIGEgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdC4KLQotTGlzdHMgYXJlIGNvbnN0cnVjdGVkIHdpdGggc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYFthLAotYiwgY11gYC4gIFR1cGxlcyBhcmUgY29uc3RydWN0ZWQgYnkgdGhlIGNvbW1hIG9wZXJhdG9yIChub3Qgd2l0aGluIHNxdWFyZQotYnJhY2tldHMpLCB3aXRoIG9yIHdpdGhvdXQgZW5jbG9zaW5nIHBhcmVudGhlc2VzLCBidXQgYW4gZW1wdHkgdHVwbGUgbXVzdCBoYXZlCi10aGUgZW5jbG9zaW5nIHBhcmVudGhlc2VzLCBzdWNoIGFzIGBgYSwgYiwgY2BgIG9yIGBgKClgYC4gIEEgc2luZ2xlIGl0ZW0gdHVwbGUKLW11c3QgaGF2ZSBhIHRyYWlsaW5nIGNvbW1hLCBzdWNoIGFzIGBgKGQsKWBgLgotCi1PYmplY3RzIG9mIHR5cGUgcmFuZ2UgYXJlIGNyZWF0ZWQgdXNpbmcgdGhlIDpmdW5jOmByYW5nZWAgZnVuY3Rpb24uICBUaGV5IGRvbid0Ci1zdXBwb3J0IGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbiwgYW5kIHVzaW5nIDpmdW5jOmBtaW5gIG9yIDpmdW5jOmBtYXhgIG9uCi10aGVtIGlzIGluZWZmaWNpZW50LgotCi1Nb3N0IHNlcXVlbmNlIHR5cGVzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25zLiAgVGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYAotb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlIGNvbXBhcmlzb24gb3BlcmF0aW9ucy4gIFRoZSBgYCtgYCBhbmQKLWBgKmBgIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSBhcyB0aGUgY29ycmVzcG9uZGluZyBudW1lcmljIG9wZXJhdGlvbnMuCi1bM11fIEFkZGl0aW9uYWwgbWV0aG9kcyBhcmUgcHJvdmlkZWQgZm9yIDpyZWY6YHR5cGVzc2VxLW11dGFibGVgLgorVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgc3VwcG9ydGVkIGJ5IG1vc3Qgc2VxdWVuY2UgdHlwZXMsCitib3RoIG11dGFibGUgYW5kIGltbXV0YWJsZS4gVGhlIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlYCBBQkMgaXMKK3Byb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbgorY3VzdG9tIHNlcXVlbmNlIHR5cGVzLgogCiBUaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHkKIChvcGVyYXRpb25zIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByaW9yaXR5KS4gIEluIHRoZSB0YWJsZSwgKnMqIGFuZCAqdCoKLWFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZTsgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZSBpbnRlZ2Vycy4KK2FyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZSBpbnRlZ2VycyBhbmQgKngqIGlzCithbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUgYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi4KIAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBPcGVyYXRpb24gICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgfAotKz09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09KwotfCBgYHggaW4gc2BgICAgICAgIHwgYGBUcnVlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgIHwgXCgxKSAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgRmFsc2VgYCAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHggbm90IGluIHNgYCAgIHwgYGBGYWxzZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzIHwgXCgxKSAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgVHJ1ZWBgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHMgKyB0YGAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAgIHwgXCg2KSAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgKnQqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHMgKiBuLCBuICogc2BgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgIHwgXCgyKSAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgY29uY2F0ZW5hdGVkICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHNbaV1gYCAgICAgICAgIHwgKmkqXCB0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgIHwgXCgzKSAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHNbaTpqXWBgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgKDMpKDQpICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHNbaTpqOmtdYGAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgKDMpKDUpICAgfAotfCAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYGxlbihzKWBgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYG1pbihzKWBgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYG1heChzKWBgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHMuaW5kZXgoaSlgYCAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VyZW5jZSAgIHwgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgb2YgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHMuY291bnQoaSlgYCAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgIHwgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotCi1TZXF1ZW5jZSB0eXBlcyBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLCB0dXBsZXMgYW5kIGxpc3RzIGFyZQotY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQKLXRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5IGVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlCi1vZiB0aGUgc2FtZSB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZQotOnJlZjpgY29tcGFyaXNvbnNgIGluIHRoZSBsYW5ndWFnZSByZWZlcmVuY2UuKQorVGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGUKK2NvbXBhcmlzb24gb3BlcmF0aW9ucy4gVGhlIGBgK2BgIChjb25jYXRlbmF0aW9uKSBhbmQgYGAqYGAgKHJlcGV0aXRpb24pCitvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmcgbnVtZXJpYyBvcGVyYXRpb25zLgogCiAuLiBpbmRleDo6CiAgICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IHNlcXVlbmNlOyB0eXBlcwpAQCAtOTExLDE4ICs4NDAsNjcgQEAKICAgIHBhaXI6IHNsaWNlOyBvcGVyYXRpb24KICAgIG9wZXJhdG9yOiBpbgogICAgb3BlcmF0b3I6IG5vdCBpbgorICAgc2luZ2xlOiBjb3VudCgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IGluZGV4KCkgKHNlcXVlbmNlIG1ldGhvZCkKKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09KworfCBgYHggaW4gc2BgICAgICAgICAgICAgICAgfCBgYFRydWVgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgfCBcKDEpICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYEZhbHNlYGAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHggbm90IGluIHNgYCAgICAgICAgICAgfCBgYEZhbHNlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgfCBcKDEpICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYFRydWVgYCAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHMgKyB0YGAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICAgfCAoNikoNykgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHMgKiBuYGAgb3IgICAgICAgICAgICAgfCAqbiogc2hhbGxvdyBjb3BpZXMgb2YgKnMqICAgICAgfCAoMikoNykgICB8Cit8IGBgbiAqIHNgYCAgICAgICAgICAgICAgICB8IGNvbmNhdGVuYXRlZCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHNbaV1gYCAgICAgICAgICAgICAgICAgfCAqaSpcIHRoIGl0ZW0gb2YgKnMqLCBvcmlnaW4gMCAgfCBcKDMpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzW2k6al1gYCAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgKDMpKDQpICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgc1tpOmo6a11gYCAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICgzKSg1KSAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgbGVuKHMpYGAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYG1pbihzKWBgICAgICAgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBtYXgocylgYCAgICAgICAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgcy5pbmRleCh4WywgaVssIGpdXSlgYCB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cmVuY2UgICB8IFwoOCkgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2YgKngqIGluICpzKiAoYXQgb3IgYWZ0ZXIgICAgIHwgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCAqaSogYW5kIGJlZm9yZSBpbmRleCAqaiopfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzLmNvdW50KHgpYGAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgIHwgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKKworU2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhciwgdHVwbGVzCithbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLgorVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5IGVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUKK3R3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZSB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbAorZGV0YWlscyBzZWUgOnJlZjpgY29tcGFyaXNvbnNgIGluIHRoZSBsYW5ndWFnZSByZWZlcmVuY2UuKQogCiBOb3RlczoKIAogKDEpCi0gICBXaGVuICpzKiBpcyBhIHN0cmluZyBvYmplY3QsIHRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBhY3QgbGlrZSBhCi0gICBzdWJzdHJpbmcgdGVzdC4KKyAgIFdoaWxlIHRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciBzaW1wbGUKKyAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCBzZXF1ZW5jZXMKKyAgIChzdWNoIGFzIDpjbGFzczpgc3RyYCwgOmNsYXNzOmBieXRlc2AgYW5kIDpjbGFzczpgYnl0ZWFycmF5YCkgYWxzbyB1c2UKKyAgIHRoZW0gZm9yIHN1YnNlcXVlbmNlIHRlc3Rpbmc6OgorCisgICAgICA+Pj4gImdnIiBpbiAiZWdncyIKKyAgICAgIFRydWUKIAogKDIpCiAgICBWYWx1ZXMgb2YgKm4qIGxlc3MgdGhhbiBgYDBgYCBhcmUgdHJlYXRlZCBhcyBgYDBgYCAod2hpY2ggeWllbGRzIGFuIGVtcHR5CiAgICBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlIGFzICpzKikuICBOb3RlIGFsc28gdGhhdCB0aGUgY29waWVzIGFyZSBzaGFsbG93OwogICAgbmVzdGVkIHN0cnVjdHVyZXMgYXJlIG5vdCBjb3BpZWQuICBUaGlzIG9mdGVuIGhhdW50cyBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOwotICAgY29uc2lkZXI6CisgICBjb25zaWRlcjo6CiAKICAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzCiAgICAgICA+Pj4gbGlzdHMKQEAgLTkzNCw3ICs5MTIsNyBAQAogICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCBgYFtbXV1gYCBpcyBhIG9uZS1lbGVtZW50IGxpc3QgY29udGFpbmluZyBhbiBlbXB0eQogICAgbGlzdCwgc28gYWxsIHRocmVlIGVsZW1lbnRzIG9mIGBgW1tdXSAqIDNgYCBhcmUgKHBvaW50ZXJzIHRvKSB0aGlzIHNpbmdsZSBlbXB0eQogICAgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mIGBgbGlzdHNgYCBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LgotICAgWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheToKKyAgIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZiBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6OgogCiAgICAgICA+Pj4gbGlzdHMgPSBbW10gZm9yIGkgaW4gcmFuZ2UoMyldCiAgICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpCkBAIC05NjUsMzMgKzk0Myw0NzUgQEAKICAgIElmICprKiBpcyBgYE5vbmVgYCwgaXQgaXMgdHJlYXRlZCBsaWtlIGBgMWBgLgogCiAoNikKLSAgIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHN0cmluZ3MgYWx3YXlzIHJlc3VsdHMgaW4gYSBuZXcgb2JqZWN0LiAgVGhpcyBtZWFucwotICAgdGhhdCBidWlsZGluZyB1cCBhIHN0cmluZyBieSByZXBlYXRlZCBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYwotICAgcnVudGltZSBjb3N0IGluIHRoZSB0b3RhbCBzdHJpbmcgbGVuZ3RoLiAgVG8gZ2V0IGEgbGluZWFyIHJ1bnRpbWUgY29zdCwKLSAgIHlvdSBtdXN0IHN3aXRjaCB0byBvbmUgb2YgdGhlIGFsdGVybmF0aXZlcyBiZWxvdzoKKyAgIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHNlcXVlbmNlcyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ldyBvYmplY3QuICBUaGlzCisgICBtZWFucyB0aGF0IGJ1aWxkaW5nIHVwIGEgc2VxdWVuY2UgYnkgcmVwZWF0ZWQgY29uY2F0ZW5hdGlvbiB3aWxsIGhhdmUgYQorICAgcXVhZHJhdGljIHJ1bnRpbWUgY29zdCBpbiB0aGUgdG90YWwgc2VxdWVuY2UgbGVuZ3RoLiAgVG8gZ2V0IGEgbGluZWFyCisgICBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0byBvbmUgb2YgdGhlIGFsdGVybmF0aXZlcyBiZWxvdzoKIAogICAgKiBpZiBjb25jYXRlbmF0aW5nIDpjbGFzczpgc3RyYCBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlCi0gICAgIDptZXRoOmBzdHIuam9pbmAgYXQgdGhlIGVuZDsKKyAgICAgOm1ldGg6YHN0ci5qb2luYCBhdCB0aGUgZW5kIG9yIGVsc2Ugd3JpdGUgdG8gYSA6Y2xhc3M6YGlvLlN0cmluZ0lPYAorICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGUKIAogICAgKiBpZiBjb25jYXRlbmF0aW5nIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMsIHlvdSBjYW4gc2ltaWxhcmx5IHVzZQotICAgICA6bWV0aDpgYnl0ZXMuam9pbmAsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2UgY29uY2F0ZW5hdGlvbiB3aXRoIGEKLSAgICAgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdC4gIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3RzIGFyZSBtdXRhYmxlIGFuZAotICAgICBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc20uCisgICAgIDptZXRoOmBieXRlcy5qb2luYCBvciA6Y2xhc3M6YGlvLkJ5dGVzSU9gLCBvciB5b3UgY2FuIGRvIGluLXBsYWNlCisgICAgIGNvbmNhdGVuYXRpb24gd2l0aCBhIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3QuICA6Y2xhc3M6YGJ5dGVhcnJheWAKKyAgICAgb2JqZWN0cyBhcmUgbXV0YWJsZSBhbmQgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtCiAKKyAgICogaWYgY29uY2F0ZW5hdGluZyA6Y2xhc3M6YHR1cGxlYCBvYmplY3RzLCBleHRlbmQgYSA6Y2xhc3M6YGxpc3RgIGluc3RlYWQKKworICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyBkb2N1bWVudGF0aW9uCisKKworKDcpCisgIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgOmNsYXNzOmByYW5nZWApIG9ubHkgc3VwcG9ydCBpdGVtIHNlcXVlbmNlcworICB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvbid0IHN1cHBvcnQgc2VxdWVuY2UKKyAgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLgorCisoOCkKKyAgIGBgaW5kZXhgYCByYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4KKyAgIFdoZW4gc3VwcG9ydGVkLCB0aGUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGluZGV4IG1ldGhvZCBhbGxvdworICAgZWZmaWNpZW50IHNlYXJjaGluZyBvZiBzdWJzZWN0aW9ucyBvZiB0aGUgc2VxdWVuY2UuIFBhc3NpbmcgdGhlIGV4dHJhCisgICBhcmd1bWVudHMgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgc1tpOmpdLmluZGV4KHgpYGAsIG9ubHkKKyAgIHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggYmVpbmcgcmVsYXRpdmUgdG8KKyAgIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZSBzbGljZS4KKworCisuLiBfdHlwZXNzZXEtaW1tdXRhYmxlOgorCitJbW11dGFibGUgU2VxdWVuY2UgVHlwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICB0cmlwbGU6IGltbXV0YWJsZTsgc2VxdWVuY2U7IHR5cGVzCisgICBvYmplY3Q6IHR1cGxlCisgICBidWlsdGluOiBoYXNoCisKK1RoZSBvbmx5IG9wZXJhdGlvbiB0aGF0IGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBnZW5lcmFsbHkgaW1wbGVtZW50IHRoYXQgaXMKK25vdCBhbHNvIGltcGxlbWVudGVkIGJ5IG11dGFibGUgc2VxdWVuY2UgdHlwZXMgaXMgc3VwcG9ydCBmb3IgdGhlIDpmdW5jOmBoYXNoYAorYnVpbHQtaW4uCisKK1RoaXMgc3VwcG9ydCBhbGxvd3MgaW1tdXRhYmxlIHNlcXVlbmNlcywgc3VjaCBhcyA6Y2xhc3M6YHR1cGxlYCBpbnN0YW5jZXMsIHRvCitiZSB1c2VkIGFzIDpjbGFzczpgZGljdGAga2V5cyBhbmQgc3RvcmVkIGluIDpjbGFzczpgc2V0YCBhbmQgOmNsYXNzOmBmcm96ZW5zZXRgCitpbnN0YW5jZXMuCisKK0F0dGVtcHRpbmcgdG8gaGFzaCBhbiBpbW11dGFibGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB1bmhhc2hhYmxlIHZhbHVlcyB3aWxsCityZXN1bHQgaW4gOmV4YzpgVHlwZUVycm9yYC4KKworCisuLiBfdHlwZXNzZXEtbXV0YWJsZToKKworTXV0YWJsZSBTZXF1ZW5jZSBUeXBlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICB0cmlwbGU6IG11dGFibGU7IHNlcXVlbmNlOyB0eXBlcworICAgb2JqZWN0OiBsaXN0CisgICBvYmplY3Q6IGJ5dGVhcnJheQorCitUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2UgdHlwZXMuCitUaGUgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlYCBBQkMgaXMgcHJvdmlkZWQgdG8gbWFrZSBpdAorZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuCisKK0luIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnkKK2l0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZQorYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsIDpjbGFzczpgYnl0ZWFycmF5YCBvbmx5CithY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gYGAwIDw9IHggPD0gMjU1YGApLgorCisKKy4uIGluZGV4OjoKKyAgIHRyaXBsZTogb3BlcmF0aW9ucyBvbjsgc2VxdWVuY2U7IHR5cGVzCisgICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IGxpc3Q7IHR5cGUKKyAgIHBhaXI6IHN1YnNjcmlwdDsgYXNzaWdubWVudAorICAgcGFpcjogc2xpY2U7IGFzc2lnbm1lbnQKKyAgIHN0YXRlbWVudDogZGVsCisgICBzaW5nbGU6IGFwcGVuZCgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IGNsZWFyKCkgKHNlcXVlbmNlIG1ldGhvZCkKKyAgIHNpbmdsZTogY29weSgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IGV4dGVuZCgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IGluc2VydCgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IHBvcCgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IHJlbW92ZSgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IHJldmVyc2UoKSAoc2VxdWVuY2UgbWV0aG9kKQorCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT0rCit8IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlzIHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgICAgfCBcKDEpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZSByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gW3hdYGApICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLmNsZWFyKClgYCAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gYGBzYGAgICB8IFwoNSkgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBkZWwgc1s6XWBgKSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLmNvcHkoKWBgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgYGBzYGB8IFwoNSkgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBzWzpdYGApICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLmV4dGVuZCh0KWBgICAgICAgICAgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGVudHMgb2YgKnQqIChzYW1lIGFzICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbbGVuKHMpOmxlbihzKV0gPSB0YGApICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzIGBgc1tpOmldID0gW3hdYGApICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgfCBcKDIpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogfCBcKDMpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgfCBcKDQpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKworTm90ZXM6CisKKygxKQorICAgKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy4KKworKDIpCisgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0IHRoZSBsYXN0CisgICBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLgorCisoMykKKyAgIGBgcmVtb3ZlYGAgcmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouCisKKyg0KQorICAgVGhlIDptZXRoOmByZXZlcnNlYCBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215IG9mCisgICBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgb3BlcmF0ZXMgYnkKKyAgIHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkIHNlcXVlbmNlLgorCisoNSkKKyAgIDptZXRoOmBjbGVhcmAgYW5kIDptZXRoOmAhY29weWAgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZQorICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0IHNsaWNpbmcgb3BlcmF0aW9ucworICAgKHN1Y2ggYXMgOmNsYXNzOmBkaWN0YCBhbmQgOmNsYXNzOmBzZXRgKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIDptZXRoOmBjbGVhcmAgYW5kIDptZXRoOmAhY29weWAgbWV0aG9kcy4KKworCisuLiBfdHlwZXNzZXEtbGlzdDoKKworTGlzdHMKKy0tLS0tCisKKy4uIGluZGV4Ojogb2JqZWN0OiBsaXN0CisKK0xpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2YKK2hvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnkKK2FwcGxpY2F0aW9uKS4KKworLi4gY2xhc3M6OiBsaXN0KFtpdGVyYWJsZV0pCisKKyAgIExpc3RzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBzZXZlcmFsIHdheXM6CisKKyAgICogVXNpbmcgYSBwYWlyIG9mIHNxdWFyZSBicmFja2V0cyB0byBkZW5vdGUgdGhlIGVtcHR5IGxpc3Q6IGBgW11gYAorICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgW2FdYGAsIGBgW2EsIGIsIGNdYGAKKyAgICogVXNpbmcgYSBsaXN0IGNvbXByZWhlbnNpb246IGBgW3ggZm9yIHggaW4gaXRlcmFibGVdYGAKKyAgICogVXNpbmcgdGhlIHR5cGUgY29uc3RydWN0b3I6IGBgbGlzdCgpYGAgb3IgYGBsaXN0KGl0ZXJhYmxlKWBgCisKKyAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlIHNhbWUKKyAgIG9yZGVyIGFzICppdGVyYWJsZSoncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciBhIHNlcXVlbmNlLCBhCisgICBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIElmICppdGVyYWJsZSoKKyAgIGlzIGFscmVhZHkgYSBsaXN0LCBhIGNvcHkgaXMgbWFkZSBhbmQgcmV0dXJuZWQsIHNpbWlsYXIgdG8gYGBpdGVyYWJsZVs6XWBgLgorICAgRm9yIGV4YW1wbGUsIGBgbGlzdCgnYWJjJylgYCByZXR1cm5zIGBgWydhJywgJ2InLCAnYyddYGAgYW5kCisgICBgYGxpc3QoICgxLCAyLCAzKSApYGAgcmV0dXJucyBgYFsxLCAyLCAzXWBgLgorICAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IGxpc3QsIGBgW11gYC4KKworCisgICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlIDpmdW5jOmBzb3J0ZWRgCisgICBidWlsdC1pbi4KKworICAgTGlzdHMgaW1wbGVtZW50IGFsbCBvZiB0aGUgOnJlZjpgY29tbW9uIDx0eXBlc3NlcS1jb21tb24+YCBhbmQKKyAgIDpyZWY6YG11dGFibGUgPHR5cGVzc2VxLW11dGFibGU+YCBzZXF1ZW5jZSBvcGVyYXRpb25zLiBMaXN0cyBhbHNvIHByb3ZpZGUgdGhlCisgICBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2Q6CisKKyAgIC4uIG1ldGhvZDo6IGxpc3Quc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKQorCisgICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSBgYDxgYCBjb21wYXJpc29ucworICAgICAgYmV0d2VlbiBpdGVtcy4gRXhjZXB0aW9ucyBhcmUgbm90IHN1cHByZXNzZWQgLSBpZiBhbnkgY29tcGFyaXNvbiBvcGVyYXRpb25zCisgICAgICBmYWlsLCB0aGUgZW50aXJlIHNvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbCAoYW5kIHRoZSBsaXN0IHdpbGwgbGlrZWx5IGJlIGxlZnQKKyAgICAgIGluIGEgcGFydGlhbGx5IG1vZGlmaWVkIHN0YXRlKS4KKworICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0byBleHRyYWN0IGEKKyAgICAgIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLCBgYGtleT1zdHIubG93ZXJgYCkuCisgICAgICBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBpdGVtIGluIHRoZSBsaXN0IGlzIGNhbGN1bGF0ZWQgb25jZSBhbmQKKyAgICAgIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nIHByb2Nlc3MuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIGBgTm9uZWBgCisgICAgICBtZWFucyB0aGF0IGxpc3QgaXRlbXMgYXJlIHNvcnRlZCBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUKKyAgICAgIGtleSB2YWx1ZS4KKworICAgICAgVGhlIDpmdW5jOmBmdW5jdG9vbHMuY21wX3RvX2tleWAgdXRpbGl0eSBpcyBhdmFpbGFibGUgdG8gY29udmVydCBhIDIueAorICAgICAgc3R5bGUgKmNtcCogZnVuY3Rpb24gdG8gYSAqa2V5KiBmdW5jdGlvbi4KKworICAgICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiB0aGUgbGlzdCBlbGVtZW50cworICAgICAgYXJlIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC4KKworICAgICAgVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlIHdoZW4KKyAgICAgIHNvcnRpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUKKyAgICAgIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBzb3J0ZWQgc2VxdWVuY2UgKHVzZSA6ZnVuYzpgc29ydGVkYCB0bworICAgICAgZXhwbGljaXRseSByZXF1ZXN0IGEgbmV3IHNvcnRlZCBsaXN0IGluc3RhbmNlKS4KKworICAgICAgVGhlIDptZXRoOmBzb3J0YCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXMgc3RhYmxlIGlmIGl0CisgICAgICBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbAorICAgICAgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpbiBtdWx0aXBsZSBwYXNzZXMgKGZvciBleGFtcGxlLCBzb3J0IGJ5CisgICAgICBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeSBncmFkZSkuCisKKyAgICAgIC4uIGltcGwtZGV0YWlsOjoKKworICAgICAgICAgV2hpbGUgYSBsaXN0IGlzIGJlaW5nIHNvcnRlZCwgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbgorICAgICAgICAgaW5zcGVjdCwgdGhlIGxpc3QgaXMgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZQorICAgICAgICAgbGlzdCBhcHBlYXIgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCBpZiBpdCBjYW4KKyAgICAgICAgIGRldGVjdCB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC4KKworCisuLiBfdHlwZXNzZXEtdHVwbGU6CisKK1R1cGxlcworLS0tLS0tCisKKy4uIGluZGV4Ojogb2JqZWN0OiB0dXBsZQorCitUdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mCitoZXRlcm9nZW5lb3VzIGRhdGEgKHN1Y2ggYXMgdGhlIDItdHVwbGVzIHByb2R1Y2VkIGJ5IHRoZSA6ZnVuYzpgZW51bWVyYXRlYAorYnVpbHQtaW4pLiBUdXBsZXMgYXJlIGFsc28gdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mCitob21vZ2VuZW91cyBkYXRhIGlzIG5lZWRlZCAoc3VjaCBhcyBhbGxvd2luZyBzdG9yYWdlIGluIGEgOmNsYXNzOmBzZXRgIG9yCis6Y2xhc3M6YGRpY3RgIGluc3RhbmNlKS4KKworLi4gY2xhc3M6OiB0dXBsZShbaXRlcmFibGVdKQorCisgICBUdXBsZXMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIGEgbnVtYmVyIG9mIHdheXM6CisKKyAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6IGBgKClgYAorICAgKiBVc2luZyBhIHRyYWlsaW5nIGNvbW1hIGZvciBhIHNpbmdsZXRvbiB0dXBsZTogYGBhLGBgIG9yIGBgKGEsKWBgCisgICAqIFNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgYSwgYiwgY2BgIG9yIGBgKGEsIGIsIGMpYGAKKyAgICogVXNpbmcgdGhlIDpmdW5jOmB0dXBsZWAgYnVpbHQtaW46IGBgdHVwbGUoKWBgIG9yIGBgdHVwbGUoaXRlcmFibGUpYGAKKworICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlIHNhbWUKKyAgIG9yZGVyIGFzICppdGVyYWJsZSoncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciBhIHNlcXVlbmNlLCBhCisgICBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIElmICppdGVyYWJsZSoKKyAgIGlzIGFscmVhZHkgYSB0dXBsZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwKKyAgIGBgdHVwbGUoJ2FiYycpYGAgcmV0dXJucyBgYCgnYScsICdiJywgJ2MnKWBgIGFuZAorICAgYGB0dXBsZSggWzEsIDIsIDNdIClgYCByZXR1cm5zIGBgKDEsIDIsIDMpYGAuCisgICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdHVwbGUsIGBgKClgYC4KKworICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgdGhlIHBhcmVudGhlc2VzLgorICAgVGhlIHBhcmVudGhlc2VzIGFyZSBvcHRpb25hbCwgZXhjZXB0IGluIHRoZSBlbXB0eSB0dXBsZSBjYXNlLCBvcgorICAgd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljIGFtYmlndWl0eS4gRm9yIGV4YW1wbGUsCisgICBgYGYoYSwgYiwgYylgYCBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCB0aHJlZSBhcmd1bWVudHMsIHdoaWxlCisgICBgYGYoKGEsIGIsIGMpKWBgIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgMy10dXBsZSBhcyB0aGUgc29sZSBhcmd1bWVudC4KKworICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAgc2VxdWVuY2UKKyAgIG9wZXJhdGlvbnMuCisKK0ZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlciB0aGFuCithY2Nlc3MgYnkgaW5kZXgsIDpmdW5jOmBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCBtYXkgYmUgYSBtb3JlIGFwcHJvcHJpYXRlCitjaG9pY2UgdGhhbiBhIHNpbXBsZSB0dXBsZSBvYmplY3QuCisKKworLi4gX3R5cGVzc2VxLXJhbmdlOgorCitSYW5nZXMKKy0tLS0tLQorCisuLiBpbmRleDo6IG9iamVjdDogcmFuZ2UKKworVGhlIDpjbGFzczpgcmFuZ2VgIHR5cGUgcmVwcmVzZW50cyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugb2YgbnVtYmVycyBhbmQgaXMKK2NvbW1vbmx5IHVzZWQgZm9yIGxvb3BpbmcgYSBzcGVjaWZpYyBudW1iZXIgb2YgdGltZXMgaW4gOmtleXdvcmQ6YGZvcmAKK2xvb3BzLgorCisuLiBjbGFzczo6IHJhbmdlKFtzdGFydCwgXXN0b3BbLCBzdGVwXSkKKworICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAoZWl0aGVyIGJ1aWx0LWluCisgICA6Y2xhc3M6YGludGAgb3IgYW55IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIGBgX19pbmRleF9fYGAgc3BlY2lhbAorICAgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGAxYGAuCisgICBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYDBgYC4KKyAgIElmICpzdGVwKiBpcyB6ZXJvLCA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisKKyAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgYGByYGAgYXJlIGRldGVybWluZWQgYnkgdGhlCisgICBmb3JtdWxhIGBgcltpXSA9IHN0YXJ0ICsgc3RlcCppYGAgd2hlcmUgYGBpID49IDBgYCBhbmQKKyAgIGBgcltpXSA8IHN0b3BgYC4KKworICAgRm9yIGEgbmVnYXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgdGhlIHJhbmdlIGFyZSBzdGlsbCBkZXRlcm1pbmVkIGJ5CisgICB0aGUgZm9ybXVsYSBgYHJbaV0gPSBzdGFydCArIHN0ZXAqaWBgLCBidXQgdGhlIGNvbnN0cmFpbnRzIGFyZSBgYGkgPj0gMGBgCisgICBhbmQgYGByW2ldID4gc3RvcGBgLgorCisgICBBIHJhbmdlIG9iamVjdCB3aWxsIGJlIGVtcHR5IGlmIGBgclswXWBgIGRvZXMgbm90IG1lYW50IHRoZSB2YWx1ZQorICAgY29uc3RyYWludC4gUmFuZ2VzIGRvIHN1cHBvcnQgbmVnYXRpdmUgaW5kaWNlcywgYnV0IHRoZXNlIGFyZSBpbnRlcnByZXRlZAorICAgYXMgaW5kZXhpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSBkZXRlcm1pbmVkIGJ5IHRoZSBwb3NpdGl2ZQorICAgaW5kaWNlcy4KKworICAgUmFuZ2VzIGNvbnRhaW5pbmcgYWJzb2x1dGUgdmFsdWVzIGxhcmdlciB0aGFuIDpkYXRhOmBzeXMubWF4c2l6ZWAgYXJlCisgICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgOmZ1bmM6YGxlbmApIG1heSByYWlzZQorICAgOmV4YzpgT3ZlcmZsb3dFcnJvcmAuCisKKyAgIFJhbmdlIGV4YW1wbGVzOjoKKworICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKQorICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldCisgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpCisgICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdCisgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpCisgICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdCisgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpCisgICAgICBbMCwgMywgNiwgOV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKQorICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldCisgICAgICA+Pj4gbGlzdChyYW5nZSgwKSkKKyAgICAgIFtdCisgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSkKKyAgICAgIFtdCisKKyAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIHNlcXVlbmNlIG9wZXJhdGlvbnMKKyAgIGV4Y2VwdCBjb25jYXRlbmF0aW9uIGFuZCByZXBldGl0aW9uIChkdWUgdG8gdGhlIGZhY3QgdGhhdCByYW5nZSBvYmplY3RzIGNhbgorICAgb25seSByZXByZXNlbnQgc2VxdWVuY2VzIHRoYXQgZm9sbG93IGEgc3RyaWN0IHBhdHRlcm4gYW5kIHJlcGV0aXRpb24gYW5kCisgICBjb25jYXRlbmF0aW9uIHdpbGwgdXN1YWxseSB2aW9sYXRlIHRoYXQgcGF0dGVybikuCisKKyAgIC4uIGRhdGE6IHN0YXJ0CisKKyAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0YXJ0KiBwYXJhbWV0ZXIgKG9yIGBgMGBgIGlmIHRoZSBwYXJhbWV0ZXIgd2FzCisgICAgICBub3Qgc3VwcGxpZWQpCisKKyAgIC4uIGRhdGE6IHN0b3AKKworICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RvcCogcGFyYW1ldGVyCisKKyAgIC4uIGRhdGE6IHN0ZXAKKworICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RlcCogcGFyYW1ldGVyIChvciBgYDFgYCBpZiB0aGUgcGFyYW1ldGVyIHdhcworICAgICAgbm90IHN1cHBsaWVkKQorCitUaGUgYWR2YW50YWdlIG9mIHRoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIG92ZXIgYSByZWd1bGFyIDpjbGFzczpgbGlzdGAgb3IKKzpjbGFzczpgdHVwbGVgIGlzIHRoYXQgYSA6Y2xhc3M6YHJhbmdlYCBvYmplY3Qgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZQorKHNtYWxsKSBhbW91bnQgb2YgbWVtb3J5LCBubyBtYXR0ZXIgdGhlIHNpemUgb2YgdGhlIHJhbmdlIGl0IHJlcHJlc2VudHMgKGFzIGl0Citvbmx5IHN0b3JlcyB0aGUgYGBzdGFydGBgLCBgYHN0b3BgYCBhbmQgYGBzdGVwYGAgdmFsdWVzLCBjYWxjdWxhdGluZyBpbmRpdmlkdWFsCitpdGVtcyBhbmQgc3VicmFuZ2VzIGFzIG5lZWRlZCkuCisKK1JhbmdlIG9iamVjdHMgaW1wbGVtZW50IHRoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLlNlcXVlbmNlYCBBQkMsIGFuZCBwcm92aWRlCitmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmQKK3N1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSA6cmVmOmB0eXBlc3NlcWApOgorCisgICA+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKQorICAgPj4+IHIKKyAgIHJhbmdlKDAsIDIwLCAyKQorICAgPj4+IDExIGluIHIKKyAgIEZhbHNlCisgICA+Pj4gMTAgaW4gcgorICAgVHJ1ZQorICAgPj4+IHIuaW5kZXgoMTApCisgICA1CisgICA+Pj4gcls1XQorICAgMTAKKyAgID4+PiByWzo1XQorICAgcmFuZ2UoMCwgMTAsIDIpCisgICA+Pj4gclstMV0KKyAgIDE4CisKK1Rlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCBgYD09YGAgYW5kIGBgIT1gYCBjb21wYXJlcwordGhlbSBhcyBzZXF1ZW5jZXMuICBUaGF0IGlzLCB0d28gcmFuZ2Ugb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZgordGhleSByZXByZXNlbnQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzLiAgKE5vdGUgdGhhdCB0d28gcmFuZ2UKK29iamVjdHMgdGhhdCBjb21wYXJlIGVxdWFsIG1pZ2h0IGhhdmUgZGlmZmVyZW50IDphdHRyOmBzdGFydGAsCis6YXR0cjpgc3RvcGAgYW5kIDphdHRyOmBzdGVwYCBhdHRyaWJ1dGVzLCBmb3IgZXhhbXBsZSBgYHJhbmdlKDApID09CityYW5nZSgyLCAxLCAzKWBgIG9yIGBgcmFuZ2UoMCwgMywgMikgPT0gcmFuZ2UoMCwgNCwgMilgYC4pCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4KKyAgIFN1cHBvcnQgc2xpY2luZyBhbmQgbmVnYXRpdmUgaW5kaWNlcy4KKyAgIFRlc3QgOmNsYXNzOmBpbnRgIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gY29uc3RhbnQgdGltZSBpbnN0ZWFkIG9mCisgICBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHMgYmFzZWQgb24gdGhlCisgICBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nIGJhc2VkIG9uCisgICBvYmplY3QgaWRlbnRpdHkpLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIFRoZSA6YXR0cjpgc3RhcnRgLCA6YXR0cjpgc3RvcGAgYW5kIDphdHRyOmBzdGVwYCBhdHRyaWJ1dGVzLgorCisKKy4uIF90ZXh0c2VxOgorCitUZXh0IFNlcXVlbmNlIFR5cGUgLS0tIDpjbGFzczpgc3RyYAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gaW5kZXg6OgorICAgb2JqZWN0OiBzdHJpbmcKKyAgIG9iamVjdDogYnl0ZXMKKyAgIG9iamVjdDogYnl0ZWFycmF5CisgICBvYmplY3Q6IGlvLlN0cmluZ0lPCisKKworVGV4dHVhbCBkYXRhIGluIFB5dGhvbiBpcyBoYW5kbGVkIHdpdGggOmNsYXNzOmBzdHJgIG9iamVjdHMsIHdoaWNoIGFyZQoraW1tdXRhYmxlIHNlcXVlbmNlcyBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLiAgU3RyaW5nIGxpdGVyYWxzIGFyZQord3JpdHRlbiBpbiBhIHZhcmlldHkgb2Ygd2F5czoKKworKiBTaW5nbGUgcXVvdGVzOiBgYCdhbGxvd3MgZW1iZWRkZWQgImRvdWJsZSIgcXVvdGVzJ2BgCisqIERvdWJsZSBxdW90ZXM6IGBgImFsbG93cyBlbWJlZGRlZCAnc2luZ2xlJyBxdW90ZXMiYGAuCisqIFRyaXBsZSBxdW90ZWQ6IGBgJycnVGhyZWUgc2luZ2xlIHF1b3RlcycnJ2BgLCBgYCIiIlRocmVlIGRvdWJsZSBxdW90ZXMiIiJgYAorCitUcmlwbGUgcXVvdGVkIHN0cmluZ3MgbWF5IHNwYW4gbXVsdGlwbGUgbGluZXMgLSBhbGwgYXNzb2NpYXRlZCB3aGl0ZXNwYWNlIHdpbGwKK2JlIGluY2x1ZGVkIGluIHRoZSBzdHJpbmcgbGl0ZXJhbC4KKworU3RyaW5nIGxpdGVyYWxzIHRoYXQgYXJlIHBhcnQgb2YgYSBzaW5nbGUgZXhwcmVzc2lvbiBhbmQgaGF2ZSBvbmx5IHdoaXRlc3BhY2UKK2JldHdlZW4gdGhlbSB3aWxsIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEgc2luZ2xlIHN0cmluZyBsaXRlcmFsLiBUaGF0CitpcywgYGAoInNwYW0gIiAiZWdncyIpID09ICJzcGFtIGVnZ3MiYGAuCisKK1NlZSA6cmVmOmBzdHJpbmdzYCBmb3IgbW9yZSBhYm91dCB0aGUgdmFyaW91cyBmb3JtcyBvZiBzdHJpbmcgbGl0ZXJhbCwKK2luY2x1ZGluZyBzdXBwb3J0ZWQgZXNjYXBlIHNlcXVlbmNlcywgYW5kIHRoZSBgYHJgYCAoInJhdyIpIHByZWZpeCB0aGF0CitkaXNhYmxlcyBtb3N0IGVzY2FwZSBzZXF1ZW5jZSBwcm9jZXNzaW5nLgorCitTdHJpbmdzIG1heSBhbHNvIGJlIGNyZWF0ZWQgZnJvbSBvdGhlciBvYmplY3RzIHdpdGggdGhlIDpyZWY6YHN0ciA8ZnVuYy1zdHI+YAorYnVpbHQtaW4uCisKK1NpbmNlIHRoZXJlIGlzIG5vIHNlcGFyYXRlICJjaGFyYWN0ZXIiIHR5cGUsIGluZGV4aW5nIGEgc3RyaW5nIHByb2R1Y2VzCitzdHJpbmdzIG9mIGxlbmd0aCAxLiBUaGF0IGlzLCBmb3IgYSBub24tZW1wdHkgc3RyaW5nICpzKiwgYGBzWzBdID09IHNbMDoxXWBgLgorCitUaGVyZSBpcyBhbHNvIG5vIG11dGFibGUgc3RyaW5nIHR5cGUsIGJ1dCA6bWV0aDpgc3RyLmpvaW5gIG9yCis6Y2xhc3M6YGlvLlN0cmluZ0lPYCBjYW4gYmUgdXNlZCB0byBlZmZpY2llbnRseSBjb25zdHJ1Y3Qgc3RyaW5ncyBmcm9tCittdWx0aXBsZSBmcmFnbWVudHMuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgUHl0aG9uIDIgc2VyaWVzLCB0aGUgYGB1YGAgcHJlZml4IGlzCisgICBvbmNlIGFnYWluIHBlcm1pdHRlZCBvbiBzdHJpbmcgbGl0ZXJhbHMuIEl0IGhhcyBubyBlZmZlY3Qgb24gdGhlIG1lYW5pbmcKKyAgIG9mIHN0cmluZyBsaXRlcmFscyBhbmQgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggdGhlIGBgcmBgIHByZWZpeC4KIAogLi4gX3N0cmluZy1tZXRob2RzOgogCiBTdHJpbmcgTWV0aG9kcwogLS0tLS0tLS0tLS0tLS0KIAotLi4gaW5kZXg6OiBwYWlyOiBzdHJpbmc7IG1ldGhvZHMKKy4uIGluZGV4OjoKKyAgIHBhaXI6IHN0cmluZzsgbWV0aG9kcworICAgbW9kdWxlOiByZQogCi1TdHJpbmcgb2JqZWN0cyBzdXBwb3J0IHRoZSBtZXRob2RzIGxpc3RlZCBiZWxvdy4KK1N0cmluZ3MgaW1wbGVtZW50IGFsbCBvZiB0aGUgOnJlZjpgY29tbW9uIDx0eXBlc3NlcS1jb21tb24+YCBzZXF1ZW5jZQorb3BlcmF0aW9ucywgYWxvbmcgd2l0aCB0aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy4KIAotSW4gYWRkaXRpb24sIFB5dGhvbidzIHN0cmluZ3Mgc3VwcG9ydCB0aGUgc2VxdWVuY2UgdHlwZSBtZXRob2RzIGRlc2NyaWJlZCBpbiB0aGUKLTpyZWY6YHR5cGVzc2VxYCBzZWN0aW9uLiBUbyBvdXRwdXQgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUKLTpyZWY6YHN0cmluZy1mb3JtYXR0aW5nYCBzZWN0aW9uLiBBbHNvLCBzZWUgdGhlIDptb2Q6YHJlYCBtb2R1bGUgZm9yIHN0cmluZwotZnVuY3Rpb25zIGJhc2VkIG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCitTdHJpbmdzIGFsc28gc3VwcG9ydCB0d28gc3R5bGVzIG9mIHN0cmluZyBmb3JtYXR0aW5nLCBvbmUgcHJvdmlkaW5nIGEgbGFyZ2UKK2RlZ3JlZSBvZiBmbGV4aWJpbGl0eSBhbmQgY3VzdG9taXphdGlvbiAoc2VlIDptZXRoOmBzdHIuZm9ybWF0YCwKKzpyZWY6YGZvcm1hdHN0cmluZ3NgIGFuZCA6cmVmOmBzdHJpbmctZm9ybWF0dGluZ2ApIGFuZCB0aGUgb3RoZXIgYmFzZWQgb24gQworYGBwcmludGZgYCBzdHlsZSBmb3JtYXR0aW5nIHRoYXQgaGFuZGxlcyBhIG5hcnJvd2VyIHJhbmdlIG9mIHR5cGVzIGFuZCBpcworc2xpZ2h0bHkgaGFyZGVyIHRvIHVzZSBjb3JyZWN0bHksIGJ1dCBpcyBvZnRlbiBmYXN0ZXIgZm9yIHRoZSBjYXNlcyBpdCBjYW4KK2hhbmRsZSAoOnJlZjpgb2xkLXN0cmluZy1mb3JtYXR0aW5nYCkuCisKK1RoZSA6cmVmOmB0ZXh0c2VydmljZXNgIHNlY3Rpb24gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgY292ZXJzIGEgbnVtYmVyIG9mCitvdGhlciBtb2R1bGVzIHRoYXQgcHJvdmlkZSB2YXJpb3VzIHRleHQgcmVsYXRlZCB1dGlsaXRpZXMgKGluY2x1ZGluZyByZWd1bGFyCitleHByZXNzaW9uIHN1cHBvcnQgaW4gdGhlIDptb2Q6YHJlYCBtb2R1bGUpLgogCiAuLiBtZXRob2Q6OiBzdHIuY2FwaXRhbGl6ZSgpCiAKQEAgLTk5OSw2ICsxNDE5LDIzIEBACiAgICByZXN0IGxvd2VyY2FzZWQuCiAKIAorLi4gbWV0aG9kOjogc3RyLmNhc2Vmb2xkKCkKKworICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmUgdXNlZCBmb3IKKyAgIGNhc2VsZXNzIG1hdGNoaW5nLgorCisgICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZSBpdCBpcworICAgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIHRoZSBHZXJtYW4KKyAgIGxvd2VyY2FzZSBsZXR0ZXIgYGAnw58nYGAgaXMgZXF1aXZhbGVudCB0byBgYCJzcyJgYC4gU2luY2UgaXQgaXMgYWxyZWFkeQorICAgbG93ZXJjYXNlLCA6bWV0aDpgbG93ZXJgIHdvdWxkIGRvIG5vdGhpbmcgdG8gYGAnw58nYGA7IDptZXRoOmBjYXNlZm9sZGAKKyAgIGNvbnZlcnRzIGl0IHRvIGBgInNzImBgLgorCisgICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiBzdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKQogCiAgICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUKQEAgLTEyMDYsNiArMTY0Myw5IEBACiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXyBjb252ZXJ0ZWQgdG8KICAgIGxvd2VyY2FzZS4KIAorICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgorCiAKIC4uIG1ldGhvZDo6IHN0ci5sc3RyaXAoW2NoYXJzXSkKIApAQCAtMTI3OCw3ICsxNzE4LDcgQEAKICAgIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieSB0aGUgc3RyaW5nIGl0c2VsZi4KIAogCi0uLiBtZXRob2Q6OiBzdHIucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKQorLi4gbWV0aG9kOjogc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpCiAKICAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZSBkZWxpbWl0ZXIgc3RyaW5nLgogICAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0cyBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqCkBAIC0xMzAwLDcgKzE3NDAsNyBAQAogICAgICAgJ21pc3Npc3MnCiAKIAotLi4gbWV0aG9kOjogc3RyLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKQorLi4gbWV0aG9kOjogc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkKIAogICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlIGRlbGltaXRlcgogICAgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0cyBhcmUgZG9uZSAodGh1cywKQEAgLTEzNjksNyArMTgwOSw4IEBACiAuLiBtZXRob2Q6OiBzdHIuc3dhcGNhc2UoKQogCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGFuZAotICAgdmljZSB2ZXJzYS4KKyAgIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0CisgICBgYHMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHNgYC4KIAogCiAuLiBtZXRob2Q6OiBzdHIudGl0bGUoKQpAQCAtMTQyMCw3ICsxODYxLDExIEBACiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXyBjb252ZXJ0ZWQgdG8KICAgIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCBgYHN0ci51cHBlcigpLmlzdXBwZXIoKWBgIG1pZ2h0IGJlIGBgRmFsc2VgYCBpZiBgYHNgYAogICAgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcKLSAgIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuCisgICBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLAorICAgdGl0bGVjYXNlKS4KKworICAgVGhlIHVwcGVyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgogCiAKIC4uIG1ldGhvZDo6IHN0ci56ZmlsbCh3aWR0aCkKQEAgLTE0MzMsOCArMTg3OCw4IEBACiAKIC4uIF9vbGQtc3RyaW5nLWZvcm1hdHRpbmc6CiAKLU9sZCBTdHJpbmcgRm9ybWF0dGluZyBPcGVyYXRpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGBwcmludGZgYC1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IGZvcm1hdHRpbmcsIHN0cmluZyAoJSkKQEAgLTE0NDYsMjMgKzE4OTEsMTkgQEAKICAgIHNpbmdsZTogJSBmb3JtYXR0aW5nCiAgICBzaW5nbGU6ICUgaW50ZXJwb2xhdGlvbgogCi0uLiBYWFggaXMgdGhlIG5vdGUgZW5vdWdoPwotCiAuLiBub3RlOjoKIAotICAgVGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9ucyBkZXNjcmliZWQgaGVyZSBhcmUgbW9kZWxsZWQgb24gQydzIHByaW50ZigpCi0gICBzeW50YXguICBUaGV5IG9ubHkgc3VwcG9ydCBmb3JtYXR0aW5nIG9mIGNlcnRhaW4gYnVpbHRpbiB0eXBlcy4gIFRoZQotICAgdXNlIG9mIGEgYmluYXJ5IG9wZXJhdG9yIG1lYW5zIHRoYXQgY2FyZSBtYXkgYmUgbmVlZGVkIGluIG9yZGVyIHRvCi0gICBmb3JtYXQgdHVwbGVzIGFuZCBkaWN0aW9uYXJpZXMgY29ycmVjdGx5LiAgQXMgdGhlIG5ldwotICAgOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHN5bnRheCBpcyBtb3JlIGZsZXhpYmxlIGFuZCBoYW5kbGVzIHR1cGxlcyBhbmQKLSAgIGRpY3Rpb25hcmllcyBuYXR1cmFsbHksIGl0IGlzIHJlY29tbWVuZGVkIGZvciBuZXcgY29kZS4gIEhvd2V2ZXIsIHRoZXJlCi0gICBhcmUgbm8gY3VycmVudCBwbGFucyB0byBkZXByZWNhdGUgcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcuCisgICBUaGUgZm9ybWF0dGluZyBvcGVyYXRpb25zIGRlc2NyaWJlZCBoZXJlIGV4aGliaXQgYSB2YXJpZXR5IG9mIHF1aXJrcyB0aGF0CisgICBsZWFkIHRvIGEgbnVtYmVyIG9mIGNvbW1vbiBlcnJvcnMgKHN1Y2ggYXMgZmFpbGluZyB0byBkaXNwbGF5IHR1cGxlcyBhbmQKKyAgIGRpY3Rpb25hcmllcyBjb3JyZWN0bHkpLiAgVXNpbmcgdGhlIG5ld2VyIDptZXRoOmBzdHIuZm9ybWF0YCBpbnRlcmZhY2UKKyAgIGhlbHBzIGF2b2lkIHRoZXNlIGVycm9ycywgYW5kIGFsc28gcHJvdmlkZXMgYSBnZW5lcmFsbHkgbW9yZSBwb3dlcmZ1bCwKKyAgIGZsZXhpYmxlIGFuZCBleHRlbnNpYmxlIGFwcHJvYWNoIHRvIGZvcm1hdHRpbmcgdGV4dC4KIAogU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yIChtb2R1bG8pLgogVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yICppbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4KIEdpdmVuIGBgZm9ybWF0ICUgdmFsdWVzYGAgKHdoZXJlICpmb3JtYXQqIGlzIGEgc3RyaW5nKSwgYGAlYGAgY29udmVyc2lvbgogc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCogYXJlIHJlcGxhY2VkIHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzIG9mICp2YWx1ZXMqLgotVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHRoZSB1c2luZyA6YzpmdW5jOmBzcHJpbnRmYCBpbiB0aGUgQyBsYW5ndWFnZS4KK1RoZSBlZmZlY3QgaXMgc2ltaWxhciB0byB1c2luZyB0aGUgOmM6ZnVuYzpgc3ByaW50ZmAgaW4gdGhlIEMgbGFuZ3VhZ2UuCiAKIElmICpmb3JtYXQqIHJlcXVpcmVzIGEgc2luZ2xlIGFyZ3VtZW50LCAqdmFsdWVzKiBtYXkgYmUgYSBzaW5nbGUgbm9uLXR1cGxlCiBvYmplY3QuIFs1XV8gIE90aGVyd2lzZSwgKnZhbHVlcyogbXVzdCBiZSBhIHR1cGxlIHdpdGggZXhhY3RseSB0aGUgbnVtYmVyIG9mCkBAIC0xNjIwLDIxMSArMjA2MSwxNzggQEAKICAgIGBgJWZgYCBjb252ZXJzaW9ucyBmb3IgbnVtYmVycyB3aG9zZSBhYnNvbHV0ZSB2YWx1ZSBpcyBvdmVyIDFlNTAgYXJlIG5vCiAgICBsb25nZXIgcmVwbGFjZWQgYnkgYGAlZ2BgIGNvbnZlcnNpb25zLgogCi0uLiBpbmRleDo6Ci0gICBtb2R1bGU6IHN0cmluZwotICAgbW9kdWxlOiByZQogCi1BZGRpdGlvbmFsIHN0cmluZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGluIHN0YW5kYXJkIG1vZHVsZXMgOm1vZDpgc3RyaW5nYCBhbmQKLTptb2Q6YHJlYC4KKy4uIF9iaW5hcnlzZXE6CiAKLQotLi4gX3R5cGVzc2VxLXJhbmdlOgotCi1SYW5nZSBUeXBlCi0tLS0tLS0tLS0tCi0KLS4uIGluZGV4Ojogb2JqZWN0OiByYW5nZQotCi1UaGUgOmNsYXNzOmByYW5nZWAgdHlwZSBpcyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBmb3IKLWxvb3BpbmcuICBUaGUgYWR2YW50YWdlIG9mIHRoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIGlzIHRoYXQgYW4gOmNsYXNzOmByYW5nZWAKLW9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIGFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUKLXJhbmdlIGl0IHJlcHJlc2VudHMuCi0KLVJhbmdlIG9iamVjdHMgaGF2ZSByZWxhdGl2ZWx5IGxpdHRsZSBiZWhhdmlvcjogdGhleSBzdXBwb3J0IGluZGV4aW5nLCBjb250YWlucywKLWl0ZXJhdGlvbiwgdGhlIDpmdW5jOmBsZW5gIGZ1bmN0aW9uLCBhbmQgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi0uLiBtZXRob2Q6OiByYW5nZS5jb3VudCh4KQotCi0gICBSZXR1cm4gdGhlIG51bWJlciBvZiAqaSoncyBmb3Igd2hpY2ggYGBzW2ldID09IHhgYC4KLQotICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0uLiBtZXRob2Q6OiByYW5nZS5pbmRleCh4KQotCi0gICBSZXR1cm4gdGhlIHNtYWxsZXN0ICppKiBzdWNoIHRoYXQgYGBzW2ldID09IHhgYC4gIFJhaXNlcwotICAgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiAqeCogaXMgbm90IGluIHRoZSByYW5nZS4KLQotICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0uLiBfdHlwZXNzZXEtbXV0YWJsZToKLQotTXV0YWJsZSBTZXF1ZW5jZSBUeXBlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQmluYXJ5IFNlcXVlbmNlIFR5cGVzIC0tLSA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBieXRlYXJyYXlgLCA6Y2xhc3M6YG1lbW9yeXZpZXdgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gaW5kZXg6OgotICAgdHJpcGxlOiBtdXRhYmxlOyBzZXF1ZW5jZTsgdHlwZXMKLSAgIG9iamVjdDogbGlzdAorICAgb2JqZWN0OiBieXRlcwogICAgb2JqZWN0OiBieXRlYXJyYXkKKyAgIG9iamVjdDogbWVtb3J5dmlldworICAgbW9kdWxlOiBhcnJheQogCi1MaXN0IGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93IGluLXBsYWNlCi1tb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXMgKHdoZW4gYWRkZWQgdG8gdGhlCi1sYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLiAgU3RyaW5ncyBhbmQgdHVwbGVzIGFyZQotaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzOiBzdWNoIG9iamVjdHMgY2Fubm90IGJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlCi1mb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4KLWFyYml0cmFyeSBvYmplY3QpLgorVGhlIGNvcmUgYnVpbHQtaW4gdHlwZXMgZm9yIG1hbmlwdWxhdGluZyBiaW5hcnkgZGF0YSBhcmUgOmNsYXNzOmBieXRlc2AgYW5kCis6Y2xhc3M6YGJ5dGVhcnJheWAuIFRoZXkgYXJlIHN1cHBvcnRlZCBieSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHdoaWNoIHVzZXMKK3RoZSBidWZmZXIgcHJvdG9jb2wgdG8gYWNjZXNzIHRoZSBtZW1vcnkgb2Ygb3RoZXIgYmluYXJ5IG9iamVjdHMgd2l0aG91dAorbmVlZGluZyB0byBtYWtlIGEgY29weS4KIAotTm90ZSB0aGF0IHdoaWxlIGxpc3RzIGFsbG93IHRoZWlyIGl0ZW1zIHRvIGJlIG9mIGFueSB0eXBlLCBieXRlYXJyYXkgb2JqZWN0Ci0iaXRlbXMiIGFyZSBhbGwgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni4KK1RoZSA6bW9kOmBhcnJheWAgbW9kdWxlIHN1cHBvcnRzIGVmZmljaWVudCBzdG9yYWdlIG9mIGJhc2ljIGRhdGEgdHlwZXMgbGlrZQorMzItYml0IGludGVnZXJzIGFuZCBJRUVFNzU0IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgdmFsdWVzLgogCi0uLiBpbmRleDo6Ci0gICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IHNlcXVlbmNlOyB0eXBlcwotICAgdHJpcGxlOiBvcGVyYXRpb25zIG9uOyBsaXN0OyB0eXBlCi0gICBwYWlyOiBzdWJzY3JpcHQ7IGFzc2lnbm1lbnQKLSAgIHBhaXI6IHNsaWNlOyBhc3NpZ25tZW50Ci0gICBzdGF0ZW1lbnQ6IGRlbAotICAgc2luZ2xlOiBhcHBlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBleHRlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBjb3VudCgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IGluZGV4KCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogaW5zZXJ0KCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogcG9wKCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogcmVtb3ZlKCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogcmV2ZXJzZSgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IHNvcnQoKSAoc2VxdWVuY2UgbWV0aG9kKQorLi4gX3R5cGVieXRlczoKIAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgIHwKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09KwotfCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5IHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpcyByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCAgIHwgXCgxKSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmUgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbeF1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuZXh0ZW5kKHgpYGAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgIHwgXCgyKSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuY291bnQoeClgYCAgICAgICAgICAgICAgIHwgcmV0dXJuIG51bWJlciBvZiAqaSoncyBmb3IgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCBgYHNbaV0gPT0geGBgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICAgIHwgcmV0dXJuIHNtYWxsZXN0ICprKiBzdWNoIHRoYXQgIHwgXCgzKSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNba10gPT0geGBgIGFuZCBgYGkgPD0gayA8ICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGpgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5pbnNlcnQoaSwgeClgYCAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmldID0gW3hdYGAgICAgICAgfCBcKDQpICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHggPSBzW2ldOyBkZWwgc1tpXTsgIHwgXCg1KSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXR1cm4geGBgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYGRlbCBzW3MuaW5kZXgoeCldYGAgIHwgXCgzKSAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzLnJldmVyc2UoKWBgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICB8IFwoNikgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzLnNvcnQoW2tleVssIHJldmVyc2VdXSlgYCB8IHNvcnQgdGhlIGl0ZW1zIG9mICpzKiBpbiBwbGFjZSB8ICg2KSwgKDcpLCAoOCkgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCitCeXRlcworLS0tLS0KKworLi4gaW5kZXg6OiBvYmplY3Q6IGJ5dGVzCisKK0J5dGVzIG9iamVjdHMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMgb2Ygc2luZ2xlIGJ5dGVzLiBTaW5jZSBtYW55IG1ham9yCitiaW5hcnkgcHJvdG9jb2xzIGFyZSBiYXNlZCBvbiB0aGUgQVNDSUkgdGV4dCBlbmNvZGluZywgYnl0ZXMgb2JqZWN0cyBvZmZlcgorc2V2ZXJhbCBtZXRob2RzIHRoYXQgYXJlIG9ubHkgdmFsaWQgd2hlbiB3b3JraW5nIHdpdGggQVNDSUkgY29tcGF0aWJsZQorZGF0YSBhbmQgYXJlIGNsb3NlbHkgcmVsYXRlZCB0byBzdHJpbmcgb2JqZWN0cyBpbiBhIHZhcmlldHkgb2Ygb3RoZXIgd2F5cy4KKworRmlyc3RseSwgdGhlIHN5bnRheCBmb3IgYnl0ZXMgbGl0ZXJhbHMgaXMgbGFyZ2VseSB0aGUgc2FtZSBhcyB0aGF0IGZvciBzdHJpbmcKK2xpdGVyYWxzLCBleGNlcHQgdGhhdCBhIGBgYmBgIHByZWZpeCBpcyBhZGRlZDoKKworKiBTaW5nbGUgcXVvdGVzOiBgYGInc3RpbGwgYWxsb3dzIGVtYmVkZGVkICJkb3VibGUiIHF1b3RlcydgYAorKiBEb3VibGUgcXVvdGVzOiBgYGIic3RpbGwgYWxsb3dzIGVtYmVkZGVkICdzaW5nbGUnIHF1b3RlcyJgYC4KKyogVHJpcGxlIHF1b3RlZDogYGBiJycnMyBzaW5nbGUgcXVvdGVzJycnYGAsIGBgYiIiIjMgZG91YmxlIHF1b3RlcyIiImBgCisKK09ubHkgQVNDSUkgY2hhcmFjdGVycyBhcmUgcGVybWl0dGVkIGluIGJ5dGVzIGxpdGVyYWxzIChyZWdhcmRsZXNzIG9mIHRoZQorZGVjbGFyZWQgc291cmNlIGNvZGUgZW5jb2RpbmcpLiBBbnkgYmluYXJ5IHZhbHVlcyBvdmVyIDEyNyBtdXN0IGJlIGVudGVyZWQKK2ludG8gYnl0ZXMgbGl0ZXJhbHMgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGVzY2FwZSBzZXF1ZW5jZS4KKworQXMgd2l0aCBzdHJpbmcgbGl0ZXJhbHMsIGJ5dGVzIGxpdGVyYWxzIG1heSBhbHNvIHVzZSBhIGBgcmBgIHByZWZpeCB0byBkaXNhYmxlCitwcm9jZXNzaW5nIG9mIGVzY2FwZSBzZXF1ZW5jZXMuIFNlZSA6cmVmOmBzdHJpbmdzYCBmb3IgbW9yZSBhYm91dCB0aGUgdmFyaW91cworZm9ybXMgb2YgYnl0ZXMgbGl0ZXJhbCwgaW5jbHVkaW5nIHN1cHBvcnRlZCBlc2NhcGUgc2VxdWVuY2VzLgorCitXaGlsZSBieXRlcyBsaXRlcmFscyBhbmQgcmVwcmVzZW50YXRpb25zIGFyZSBiYXNlZCBvbiBBU0NJSSB0ZXh0LCBieXRlcworb2JqZWN0cyBhY3R1YWxseSBiZWhhdmUgbGlrZSBpbW11dGFibGUgc2VxdWVuY2VzIG9mIGludGVnZXJzLCB3aXRoIGVhY2gKK3ZhbHVlIGluIHRoZSBzZXF1ZW5jZSByZXN0cmljdGVkIHN1Y2ggdGhhdCBgYDAgPD0geCA8IDI1NmBgIChhdHRlbXB0cyB0bwordmlvbGF0ZSB0aGlzIHJlc3RyaWN0aW9uIHdpbGwgdHJpZ2dlciA6ZXhjOmBWYWx1ZUVycm9yYC4gVGhpcyBpcyBkb25lCitkZWxpYmVyYXRlbHkgdG8gZW1waGFzaXNlIHRoYXQgd2hpbGUgbWFueSBiaW5hcnkgZm9ybWF0cyBpbmNsdWRlIEFTQ0lJIGJhc2VkCitlbGVtZW50cyBhbmQgY2FuIGJlIHVzZWZ1bGx5IG1hbmlwdWxhdGVkIHdpdGggc29tZSB0ZXh0LW9yaWVudGVkIGFsZ29yaXRobXMsCit0aGlzIGlzIG5vdCBnZW5lcmFsbHkgdGhlIGNhc2UgZm9yIGFyYml0cmFyeSBiaW5hcnkgZGF0YSAoYmxpbmRseSBhcHBseWluZwordGV4dCBwcm9jZXNzaW5nIGFsZ29yaXRobXMgdG8gYmluYXJ5IGRhdGEgZm9ybWF0cyB0aGF0IGFyZSBub3QgQVNDSUkKK2NvbXBhdGlibGUgd2lsbCB1c3VhbGx5IGxlYWQgdG8gZGF0YSBjb3JydXB0aW9uKS4KKworSW4gYWRkaXRpb24gdG8gdGhlIGxpdGVyYWwgZm9ybXMsIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGNyZWF0ZWQgaW4gYSBudW1iZXIgb2YKK290aGVyIHdheXM6CisKKyogQSB6ZXJvLWZpbGxlZCBieXRlcyBvYmplY3Qgb2YgYSBzcGVjaWZpZWQgbGVuZ3RoOiBgYGJ5dGVzKDEwKWBgCisqIEZyb20gYW4gaXRlcmFibGUgb2YgaW50ZWdlcnM6IGBgYnl0ZXMocmFuZ2UoMjApKWBgCisqIENvcHlpbmcgZXhpc3RpbmcgYmluYXJ5IGRhdGEgdmlhIHRoZSBidWZmZXIgcHJvdG9jb2w6ICBgYGJ5dGVzKG9iailgYAorCitBbHNvIHNlZSB0aGUgOnJlZjpgYnl0ZXMgPGZ1bmMtYnl0ZXM+YCBidWlsdC1pbi4KKworU2luY2UgYnl0ZXMgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mIGludGVnZXJzLCBmb3IgYSBieXRlcyBvYmplY3QgKmIqLAorYGBiWzBdYGAgd2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZSBgYGJbMDoxXWBgIHdpbGwgYmUgYSBieXRlcyBvYmplY3Qgb2YKK2xlbmd0aCAxLiAgKFRoaXMgY29udHJhc3RzIHdpdGggdGV4dCBzdHJpbmdzLCB3aGVyZSBib3RoIGluZGV4aW5nIGFuZAorc2xpY2luZyB3aWxsIHByb2R1Y2UgYSBzdHJpbmcgb2YgbGVuZ3RoIDEpCisKK1RoZSByZXByZXNlbnRhdGlvbiBvZiBieXRlcyBvYmplY3RzIHVzZXMgdGhlIGxpdGVyYWwgZm9ybWF0IChgYGInLi4uJ2BgKQorc2luY2UgaXQgaXMgb2Z0ZW4gbW9yZSB1c2VmdWwgdGhhbiBlLmcuIGBgYnl0ZXMoWzQ2LCA0NiwgNDZdKWBgLiAgWW91IGNhbgorYWx3YXlzIGNvbnZlcnQgYSBieXRlcyBvYmplY3QgaW50byBhIGxpc3Qgb2YgaW50ZWdlcnMgdXNpbmcgYGBsaXN0KGIpYGAuCiAKIAotTm90ZXM6Ci0KLSgxKQotICAgKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy4KLQotKDIpCi0gICAqeCogY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QuCi0KLSgzKQotICAgUmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW4gYSBuZWdhdGl2ZSBpbmRleCBpcwotICAgcGFzc2VkIGFzIHRoZSBzZWNvbmQgb3IgdGhpcmQgcGFyYW1ldGVyIHRvIHRoZSA6bWV0aDpgaW5kZXhgIG1ldGhvZCwgdGhlIHNlcXVlbmNlCi0gICBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXQgaXMgc3RpbGwgbmVnYXRpdmUsIGl0IGlzIHRydW5jYXRlZAotICAgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuCi0KLSg0KQotICAgV2hlbiBhIG5lZ2F0aXZlIGluZGV4IGlzIHBhc3NlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvIHRoZSA6bWV0aDpgaW5zZXJ0YAotICAgbWV0aG9kLCB0aGUgc2VxdWVuY2UgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy4gIElmIGl0IGlzIHN0aWxsCi0gICBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkIHRvIHplcm8sIGFzIGZvciBzbGljZSBpbmRpY2VzLgotCi0oNSkKLSAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gYGAtMWBgLCBzbyB0aGF0IGJ5IGRlZmF1bHQgdGhlIGxhc3QKLSAgIGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuCi0KLSg2KQotICAgVGhlIDptZXRoOmBzb3J0YCBhbmQgOm1ldGg6YHJldmVyc2VgIG1ldGhvZHMgbW9kaWZ5IHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IKLSAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiBzb3J0aW5nIG9yIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHlvdQotICAgdGhhdCB0aGV5IG9wZXJhdGUgYnkgc2lkZSBlZmZlY3QsIHRoZXkgZG9uJ3QgcmV0dXJuIHRoZSBzb3J0ZWQgb3IgcmV2ZXJzZWQKLSAgIHNlcXVlbmNlLgotCi0oNykKLSAgIFRoZSA6bWV0aDpgc29ydGAgbWV0aG9kIHRha2VzIG9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgY29udHJvbGxpbmcgdGhlCi0gICBjb21wYXJpc29ucy4gIEVhY2ggbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LgotCi0gICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvIGV4dHJhY3QgYSBjb21wYXJpc29uCi0gICBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudDogYGBrZXk9c3RyLmxvd2VyYGAuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYE5vbmVgYC4KLSAgIFVzZSA6ZnVuYzpgZnVuY3Rvb2xzLmNtcF90b19rZXlgIHRvIGNvbnZlcnQgYW4KLSAgIG9sZC1zdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLgorLi4gbm90ZTo6CisgICBGb3IgUHl0aG9uIDIueCB1c2VyczogSW4gdGhlIFB5dGhvbiAyLnggc2VyaWVzLCBhIHZhcmlldHkgb2YgaW1wbGljaXQKKyAgIGNvbnZlcnNpb25zIGJldHdlZW4gOC1iaXQgc3RyaW5ncyAodGhlIGNsb3Nlc3QgdGhpbmcgMi54IG9mZmVycyB0byBhCisgICBidWlsdC1pbiBiaW5hcnkgZGF0YSB0eXBlKSBhbmQgVW5pY29kZSBzdHJpbmdzIHdlcmUgcGVybWl0dGVkLiBUaGlzIHdhcyBhCisgICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3b3JrYXJvdW5kIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgUHl0aG9uCisgICBvcmlnaW5hbGx5IG9ubHkgc3VwcG9ydGVkIDgtYml0IHRleHQsIGFuZCBVbmljb2RlIHRleHQgd2FzIGEgbGF0ZXIKKyAgIGFkZGl0aW9uLiBJbiBQeXRob24gMy54LCB0aG9zZSBpbXBsaWNpdCBjb252ZXJzaW9ucyBhcmUgZ29uZSAtIGNvbnZlcnNpb25zCisgICBiZXR3ZWVuIDgtYml0IGJpbmFyeSBkYXRhIGFuZCBVbmljb2RlIHRleHQgbXVzdCBiZSBleHBsaWNpdCwgYW5kIGJ5dGVzIGFuZAorICAgc3RyaW5nIG9iamVjdHMgd2lsbCBhbHdheXMgY29tcGFyZSB1bmVxdWFsLgogCiAKLSAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3QgZWxlbWVudHMgYXJlCi0gICBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuCisuLiBfdHlwZWJ5dGVhcnJheToKIAotICAgVGhlIDptZXRoOmBzb3J0YCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBCi0gICBzb3J0IGlzIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzCi0gICB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpbiBtdWx0aXBsZSBwYXNzZXMgKGZvcgotICAgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeSBncmFkZSkuCitCeXRlYXJyYXkgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgLi4gaW1wbC1kZXRhaWw6OgorLi4gaW5kZXg6OiBvYmplY3Q6IGJ5dGVhcnJheQogCi0gICAgICBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLCB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuCi0gICAgICBpbnNwZWN0LCB0aGUgbGlzdCBpcyB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlCi0gICAgICBsaXN0IGFwcGVhciBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIGlmIGl0IGNhbgotICAgICAgZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LgorOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMgYXJlIGEgbXV0YWJsZSBjb3VudGVycGFydCB0byA6Y2xhc3M6YGJ5dGVzYAorb2JqZWN0cy4gVGhlcmUgaXMgbm8gZGVkaWNhdGVkIGxpdGVyYWwgc3ludGF4IGZvciBieXRlYXJyYXkgb2JqZWN0cywgaW5zdGVhZAordGhleSBhcmUgYWx3YXlzIGNyZWF0ZWQgYnkgY2FsbGluZyB0aGUgY29uc3RydWN0b3I6CiAKLSg4KQotICAgOm1ldGg6YHNvcnRgIGlzIG5vdCBzdXBwb3J0ZWQgYnkgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMuCisqIENyZWF0aW5nIGFuIGVtcHR5IGluc3RhbmNlOiBgYGJ5dGVhcnJheSgpYGAKKyogQ3JlYXRpbmcgYSB6ZXJvLWZpbGxlZCBpbnN0YW5jZSB3aXRoIGEgZ2l2ZW4gbGVuZ3RoOiBgYGJ5dGVhcnJheSgxMClgYAorKiBGcm9tIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzOiBgYGJ5dGVhcnJheShyYW5nZSgyMCkpYGAKKyogQ29weWluZyBleGlzdGluZyBiaW5hcnkgZGF0YSB2aWEgdGhlIGJ1ZmZlciBwcm90b2NvbDogIGBgYnl0ZWFycmF5KGInSGkhKWBgCisKK0FzIGJ5dGVhcnJheSBvYmplY3RzIGFyZSBtdXRhYmxlLCB0aGV5IHN1cHBvcnQgdGhlCis6cmVmOmBtdXRhYmxlIDx0eXBlc3NlcS1tdXRhYmxlPmAgc2VxdWVuY2Ugb3BlcmF0aW9ucyBpbiBhZGRpdGlvbiB0byB0aGUKK2NvbW1vbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9wZXJhdGlvbnMgZGVzY3JpYmVkIGluIDpyZWY6YGJ5dGVzLW1ldGhvZHNgLgorCitBbHNvIHNlZSB0aGUgOnJlZjpgYnl0ZWFycmF5IDxmdW5jLWJ5dGVhcnJheT5gIGJ1aWx0LWluLgogCiAKIC4uIF9ieXRlcy1tZXRob2RzOgogCi1CeXRlcyBhbmQgQnl0ZSBBcnJheSBNZXRob2RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitCeXRlcyBhbmQgQnl0ZWFycmF5IE9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBpbmRleDo6IHBhaXI6IGJ5dGVzOyBtZXRob2RzCiAgICAgICAgICAgIHBhaXI6IGJ5dGVhcnJheTsgbWV0aG9kcwogCi1CeXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMsIGJlaW5nICJzdHJpbmdzIG9mIGJ5dGVzIiwgaGF2ZSBhbGwgbWV0aG9kcyBmb3VuZCBvbgotc3RyaW5ncywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIDpmdW5jOmBlbmNvZGVgLCA6ZnVuYzpgZm9ybWF0YCBhbmQKLTpmdW5jOmBpc2lkZW50aWZpZXJgLCB3aGljaCBkbyBub3QgbWFrZSBzZW5zZSB3aXRoIHRoZXNlIHR5cGVzLiAgRm9yIGNvbnZlcnRpbmcKLXRoZSBvYmplY3RzIHRvIHN0cmluZ3MsIHRoZXkgaGF2ZSBhIDpmdW5jOmBkZWNvZGVgIG1ldGhvZC4KK0JvdGggYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIHN1cHBvcnQgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAKK3NlcXVlbmNlIG9wZXJhdGlvbnMuIFRoZXkgaW50ZXJvcGVyYXRlIG5vdCBqdXN0IHdpdGggb3BlcmFuZHMgb2YgdGhlIHNhbWUKK3R5cGUsIGJ1dCB3aXRoIGFueSBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUKKzpyZWY6YGJ1ZmZlciBwcm90b2NvbCA8YnVmZmVyb2JqZWN0cz5gLiBEdWUgdG8gdGhpcyBmbGV4aWJpbGl0eSwgdGhleSBjYW4gYmUKK2ZyZWVseSBtaXhlZCBpbiBvcGVyYXRpb25zIHdpdGhvdXQgY2F1c2luZyBlcnJvcnMuIEhvd2V2ZXIsIHRoZSByZXR1cm4gdHlwZQorb2YgdGhlIHJlc3VsdCBtYXkgZGVwZW5kIG9uIHRoZSBvcmRlciBvZiBvcGVyYW5kcy4KIAotV2hlcmV2ZXIgb25lIG9mIHRoZXNlIG1ldGhvZHMgbmVlZHMgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBhcyBjaGFyYWN0ZXJzCi0oZS5nLiB0aGUgOmZ1bmM6YGlzLi4uYCBtZXRob2RzKSwgdGhlIEFTQ0lJIGNoYXJhY3RlciBzZXQgaXMgYXNzdW1lZC4KK0R1ZSB0byB0aGUgY29tbW9uIHVzZSBvZiBBU0NJSSB0ZXh0IGFzIHRoZSBiYXNpcyBmb3IgYmluYXJ5IHByb3RvY29scywgYnl0ZXMKK2FuZCBieXRlYXJyYXkgb2JqZWN0cyBwcm92aWRlIGFsbW9zdCBhbGwgbWV0aG9kcyBmb3VuZCBvbiB0ZXh0IHN0cmluZ3MsIHdpdGgKK3RoZSBleGNlcHRpb25zIG9mOgorCisqIDptZXRoOmBzdHIuZW5jb2RlYCAod2hpY2ggY29udmVydHMgdGV4dCBzdHJpbmdzIHRvIGJ5dGVzIG9iamVjdHMpCisqIDptZXRoOmBzdHIuZm9ybWF0YCBhbmQgOm1ldGg6YHN0ci5mb3JtYXRfbWFwYCAod2hpY2ggYXJlIHVzZWQgdG8gZm9ybWF0CisgIHRleHQgZm9yIGRpc3BsYXkgdG8gdXNlcnMpCisqIDptZXRoOmBzdHIuaXNpZGVudGlmaWVyYCwgOm1ldGg6YHN0ci5pc251bWVyaWNgLCA6bWV0aDpgc3RyLmlzZGVjaW1hbGAsCisgIDptZXRoOmBzdHIuaXNwcmludGFibGVgICh3aGljaCBhcmUgdXNlZCB0byBjaGVjayB2YXJpb3VzIHByb3BlcnRpZXMgb2YKKyAgdGV4dCBzdHJpbmdzIHdoaWNoIGFyZSBub3QgdHlwaWNhbGx5IGFwcGxpY2FibGUgdG8gYmluYXJ5IHByb3RvY29scykuCisKK0FsbCBvdGhlciBzdHJpbmcgbWV0aG9kcyBhcmUgc3VwcG9ydGVkLCBhbHRob3VnaCBzb21ldGltZXMgd2l0aCBzbGlnaHQKK2RpZmZlcmVuY2VzIGluIGZ1bmN0aW9uYWxpdHkgYW5kIHNlbWFudGljcyAoYXMgZGVzY3JpYmVkIGJlbG93KS4KIAogLi4gbm90ZTo6CiAKICAgIFRoZSBtZXRob2RzIG9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBkb24ndCBhY2NlcHQgc3RyaW5ncyBhcyB0aGVpcgogICAgYXJndW1lbnRzLCBqdXN0IGFzIHRoZSBtZXRob2RzIG9uIHN0cmluZ3MgZG9uJ3QgYWNjZXB0IGJ5dGVzIGFzIHRoZWlyCi0gICBhcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgeW91IGhhdmUgdG8gd3JpdGUgOjoKKyAgIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCB5b3UgaGF2ZSB0byB3cml0ZTo6CiAKICAgICAgIGEgPSAiYWJjIgogICAgICAgYiA9IGEucmVwbGFjZSgiYSIsICJmIikKIAotICAgYW5kIDo6CisgICBhbmQ6OgogCiAgICAgICBhID0gYiJhYmMiCiAgICAgICBiID0gYS5yZXBsYWNlKGIiYSIsIGIiZiIpCiAKK1doZW5ldmVyIGEgYnl0ZXMgb3IgYnl0ZWFycmF5IG1ldGhvZCBuZWVkcyB0byBpbnRlcnByZXQgdGhlIGJ5dGVzIGFzCitjaGFyYWN0ZXJzIChlLmcuIHRoZSA6bWV0aDpgaXMuLi5gIG1ldGhvZHMsIDptZXRoOmBzcGxpdGAsIDptZXRoOmBzdHJpcGApLAordGhlIEFTQ0lJIGNoYXJhY3RlciBzZXQgaXMgYXNzdW1lZCAodGV4dCBzdHJpbmdzIHVzZSBVbmljb2RlIHNlbWFudGljcykuCisKKy4uIG5vdGU6OgorICAgVXNpbmcgdGhlc2UgQVNDSUkgYmFzZWQgbWV0aG9kcyB0byBtYW5pcHVsYXRlIGJpbmFyeSBkYXRhIHRoYXQgaXMgbm90CisgICBzdG9yZWQgaW4gYW4gQVNDSUkgYmFzZWQgZm9ybWF0IG1heSBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbi4KKworVGhlIHNlYXJjaCBvcGVyYXRpb25zICg6a2V5d29yZDpgaW5gLCA6bWV0aDpgY291bnRgLCA6bWV0aDpgZmluZGAsCis6bWV0aDpgaW5kZXhgLCA6bWV0aDpgcmZpbmRgIGFuZCA6bWV0aDpgcmluZGV4YCkgYWxsIGFjY2VwdCBib3RoIGludGVnZXJzCitpbiB0aGUgcmFuZ2UgMCB0byAyNTUgKGluY2x1c2l2ZSkgYXMgd2VsbCBhcyBieXRlcyBhbmQgYnl0ZSBhcnJheSBzZXF1ZW5jZXMuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBbGwgb2YgdGhlIHNlYXJjaCBtZXRob2RzIGFsc28gYWNjZXB0IGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAgdG8gMjU1CisgICAoaW5jbHVzaXZlKSBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4KKworCitFYWNoIGJ5dGVzIGFuZCBieXRlYXJyYXkgaW5zdGFuY2UgcHJvdmlkZXMgYSA6bWV0aDpgZGVjb2RlYCBjb252ZW5pZW5jZQorbWV0aG9kIHRoYXQgaXMgdGhlIGludmVyc2Ugb2YgOm1ldGg6YHN0ci5lbmNvZGVgOgogCiAuLiBtZXRob2Q6OiBieXRlcy5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKQogICAgICAgICAgICAgYnl0ZWFycmF5LmRlY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpCkBAIC0xODQwLDggKzIyNDgsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cy4KIAotCi1UaGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSB0eXBlcyBoYXZlIGFuIGFkZGl0aW9uYWwgY2xhc3MgbWV0aG9kOgorU2luY2UgMiBoZXhhZGVjaW1hbCBkaWdpdHMgY29ycmVzcG9uZCBwcmVjaXNlbHkgdG8gYSBzaW5nbGUgYnl0ZSwgaGV4YWRlY2ltYWwKK251bWJlcnMgYXJlIGEgY29tbW9ubHkgdXNlZCBmb3JtYXQgZm9yIGRlc2NyaWJpbmcgYmluYXJ5IGRhdGEuIEFjY29yZGluZ2x5LAordGhlIGJ5dGVzIGFuZCBieXRlYXJyYXkgdHlwZXMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNsYXNzIG1ldGhvZCB0byByZWFkIGRhdGEgaW4KK3RoYXQgZm9ybWF0OgogCiAuLiBjbGFzc21ldGhvZDo6IGJ5dGVzLmZyb21oZXgoc3RyaW5nKQogICAgICAgICAgICAgICAgICBieXRlYXJyYXkuZnJvbWhleChzdHJpbmcpCkBAIC0xODUwLDggKzIyNjAsOCBAQAogICAgZGVjb2RpbmcgdGhlIGdpdmVuIHN0cmluZyBvYmplY3QuICBUaGUgc3RyaW5nIG11c3QgY29udGFpbiB0d28gaGV4YWRlY2ltYWwKICAgIGRpZ2l0cyBwZXIgYnl0ZSwgc3BhY2VzIGFyZSBpZ25vcmVkLgogCi0gICA+Pj4gYnl0ZXMuZnJvbWhleCgnZjAgZjFmMiAgJykKLSAgIGInXHhmMFx4ZjFceGYyJworICAgPj4+IGJ5dGVzLmZyb21oZXgoJzJFZjAgRjFmMiAgJykKKyAgIGInLlx4ZjBceGYxXHhmMicKIAogCiBUaGUgbWFrZXRyYW5zIGFuZCB0cmFuc2xhdGUgbWV0aG9kcyBkaWZmZXIgaW4gc2VtYW50aWNzIGZyb20gdGhlIHZlcnNpb25zCkBAIC0xODg1LDYgKzIyOTUsNDI2IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCisuLiBfdHlwZW1lbW9yeXZpZXc6CisKK01lbW9yeSBWaWV3cworLS0tLS0tLS0tLS0tCisKKzpjbGFzczpgbWVtb3J5dmlld2Agb2JqZWN0cyBhbGxvdyBQeXRob24gY29kZSB0byBhY2Nlc3MgdGhlIGludGVybmFsIGRhdGEKK29mIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZSA6cmVmOmBidWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YCB3aXRob3V0Citjb3B5aW5nLgorCisuLiBjbGFzczo6IG1lbW9yeXZpZXcob2JqKQorCisgICBDcmVhdGUgYSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHRoYXQgcmVmZXJlbmNlcyAqb2JqKi4gICpvYmoqIG11c3Qgc3VwcG9ydCB0aGUKKyAgIGJ1ZmZlciBwcm90b2NvbC4gIEJ1aWx0LWluIG9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBidWZmZXIgcHJvdG9jb2wgaW5jbHVkZQorICAgOmNsYXNzOmBieXRlc2AgYW5kIDpjbGFzczpgYnl0ZWFycmF5YC4KKworICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyB0aGUgbm90aW9uIG9mIGFuICplbGVtZW50Kiwgd2hpY2ggaXMgdGhlCisgICBhdG9taWMgbWVtb3J5IHVuaXQgaGFuZGxlZCBieSB0aGUgb3JpZ2luYXRpbmcgb2JqZWN0ICpvYmoqLiAgRm9yIG1hbnkKKyAgIHNpbXBsZSB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAsIGFuIGVsZW1lbnQKKyAgIGlzIGEgc2luZ2xlIGJ5dGUsIGJ1dCBvdGhlciB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYXJyYXkuYXJyYXlgIG1heSBoYXZlCisgICBiaWdnZXIgZWxlbWVudHMuCisKKyAgIGBgbGVuKHZpZXcpYGAgaXMgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiA6Y2xhc3M6YH5tZW1vcnl2aWV3LnRvbGlzdGAuCisgICBJZiBgYHZpZXcubmRpbSA9IDBgYCwgdGhlIGxlbmd0aCBpcyAxLiBJZiBgYHZpZXcubmRpbSA9IDFgYCwgdGhlIGxlbmd0aAorICAgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdmlldy4gRm9yIGhpZ2hlciBkaW1lbnNpb25zLAorICAgdGhlIGxlbmd0aCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBuZXN0ZWQgbGlzdCByZXByZXNlbnRhdGlvbiBvZgorICAgdGhlIHZpZXcuIFRoZSA6Y2xhc3M6YH5tZW1vcnl2aWV3Lml0ZW1zaXplYCBhdHRyaWJ1dGUgd2lsbCBnaXZlIHlvdSB0aGUKKyAgIG51bWJlciBvZiBieXRlcyBpbiBhIHNpbmdsZSBlbGVtZW50LgorCisgICBBIDpjbGFzczpgbWVtb3J5dmlld2Agc3VwcG9ydHMgc2xpY2luZyB0byBleHBvc2UgaXRzIGRhdGEuIElmCisgICA6Y2xhc3M6YH5tZW1vcnl2aWV3LmZvcm1hdGAgaXMgb25lIG9mIHRoZSBuYXRpdmUgZm9ybWF0IHNwZWNpZmllcnMKKyAgIGZyb20gdGhlIDptb2Q6YHN0cnVjdGAgbW9kdWxlLCBpbmRleGluZyB3aWxsIHJldHVybiBhIHNpbmdsZSBlbGVtZW50CisgICB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuIEZ1bGwgc2xpY2luZyB3aWxsIHJlc3VsdCBpbiBhIHN1YnZpZXc6OgorCisgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGInYWJjZWZnJykKKyAgICA+Pj4gdlsxXQorICAgIDk4CisgICAgPj4+IHZbLTFdCisgICAgMTAzCisgICAgPj4+IHZbMTo0XQorICAgIDxtZW1vcnkgYXQgMHg3ZjNkZGM5ZjQzNTA+CisgICAgPj4+IGJ5dGVzKHZbMTo0XSkKKyAgICBiJ2JjZScKKworICAgT3RoZXIgbmF0aXZlIGZvcm1hdHM6OgorCisgICAgICA+Pj4gaW1wb3J0IGFycmF5CisgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdsJywgWy0xMTExMTExMSwgMjIyMjIyMjIsIC0zMzMzMzMzMywgNDQ0NDQ0NDRdKQorICAgICAgPj4+IGFbMF0KKyAgICAgIC0xMTExMTExMQorICAgICAgPj4+IGFbLTFdCisgICAgICA0NDQ0NDQ0NAorICAgICAgPj4+IGFbMjozXS50b2xpc3QoKQorICAgICAgWy0zMzMzMzMzM10KKyAgICAgID4+PiBhWzo6Ml0udG9saXN0KCkKKyAgICAgIFstMTExMTExMTEsIC0zMzMzMzMzM10KKyAgICAgID4+PiBhWzo6LTFdLnRvbGlzdCgpCisgICAgICBbNDQ0NDQ0NDQsIC0zMzMzMzMzMywgMjIyMjIyMjIsIC0xMTExMTExMV0KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIElmIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyB3cml0YWJsZSwgdGhlIG1lbW9yeXZpZXcgc3VwcG9ydHMgc2xpY2UKKyAgIGFzc2lnbm1lbnQuIFJlc2l6aW5nIGlzIG5vdCBhbGxvd2VkOjoKKworICAgICAgPj4+IGRhdGEgPSBieXRlYXJyYXkoYidhYmNlZmcnKQorICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGRhdGEpCisgICAgICA+Pj4gdi5yZWFkb25seQorICAgICAgRmFsc2UKKyAgICAgID4+PiB2WzBdID0gb3JkKGIneicpCisgICAgICA+Pj4gZGF0YQorICAgICAgYnl0ZWFycmF5KGInemJjZWZnJykKKyAgICAgID4+PiB2WzE6NF0gPSBiJzEyMycKKyAgICAgID4+PiBkYXRhCisgICAgICBieXRlYXJyYXkoYid6MTIzZmcnKQorICAgICAgPj4+IHZbMjozXSA9IGInc3BhbScKKyAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgIFZhbHVlRXJyb3I6IG1lbW9yeXZpZXcgYXNzaWdubWVudDogbHZhbHVlIGFuZCBydmFsdWUgaGF2ZSBkaWZmZXJlbnQgc3RydWN0dXJlcworICAgICAgPj4+IHZbMjo2XSA9IGInc3BhbScKKyAgICAgID4+PiBkYXRhCisgICAgICBieXRlYXJyYXkoYid6MXNwYW0nKQorCisgICBNZW1vcnl2aWV3cyBvZiBoYXNoYWJsZSAocmVhZC1vbmx5KSB0eXBlcyBhcmUgYWxzbyBoYXNoYWJsZS4gVGhlIGhhc2gKKyAgIGlzIGRlZmluZWQgYXMgYGBoYXNoKG0pID09IGhhc2gobS50b2J5dGVzKCkpYGA6OgorCisgICAgICA+Pj4gdiA9IG1lbW9yeXZpZXcoYidhYmNlZmcnKQorICAgICAgPj4+IGhhc2godikgPT0gaGFzaChiJ2FiY2VmZycpCisgICAgICBUcnVlCisgICAgICA+Pj4gaGFzaCh2WzI6NF0pID09IGhhc2goYidjZScpCisgICAgICBUcnVlCisgICAgICA+Pj4gaGFzaCh2Wzo6LTJdKSA9PSBoYXNoKGInYWJjZWZnJ1s6Oi0yXSkKKyAgICAgIFRydWUKKworICAgSGFzaGluZyBvZiBtdWx0aS1kaW1lbnNpb25hbCBvYmplY3RzIGlzIHN1cHBvcnRlZDo6CisKKyAgICAgID4+PiBidWYgPSBieXRlcyhsaXN0KHJhbmdlKDEyKSkpCisgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYnVmKQorICAgICAgPj4+IHkgPSB4LmNhc3QoJ0InLCBzaGFwZT1bMiwyLDNdKQorICAgICAgPj4+IHgudG9saXN0KCkKKyAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTFdCisgICAgICA+Pj4geS50b2xpc3QoKQorICAgICAgW1tbMCwgMSwgMl0sIFszLCA0LCA1XV0sIFtbNiwgNywgOF0sIFs5LCAxMCwgMTFdXV0KKyAgICAgID4+PiBoYXNoKHgpID09IGhhc2goeSkgPT0gaGFzaCh5LnRvYnl0ZXMoKSkKKyAgICAgIFRydWUKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE1lbW9yeXZpZXcgb2JqZWN0cyBhcmUgbm93IGhhc2hhYmxlLgorCisKKyAgIDpjbGFzczpgbWVtb3J5dmlld2AgaGFzIHNldmVyYWwgbWV0aG9kczoKKworICAgLi4gbWV0aG9kOjogX19lcV9fKGV4cG9ydGVyKQorCisgICAgICBBIG1lbW9yeXZpZXcgYW5kIGEgOnBlcDpgMzExOGAgZXhwb3J0ZXIgYXJlIGVxdWFsIGlmIHRoZWlyIHNoYXBlcyBhcmUKKyAgICAgIGVxdWl2YWxlbnQgYW5kIGlmIGFsbCBjb3JyZXNwb25kaW5nIHZhbHVlcyBhcmUgZXF1YWwgd2hlbiB0aGUgb3BlcmFuZHMnCisgICAgICByZXNwZWN0aXZlIGZvcm1hdCBjb2RlcyBhcmUgaW50ZXJwcmV0ZWQgdXNpbmcgOm1vZDpgc3RydWN0YCBzeW50YXguCisKKyAgICAgIEZvciB0aGUgc3Vic2V0IG9mIDptb2Q6YHN0cnVjdGAgZm9ybWF0IHN0cmluZ3MgY3VycmVudGx5IHN1cHBvcnRlZCBieQorICAgICAgOm1ldGg6YHRvbGlzdGAsIGBgdmBgIGFuZCBgYHdgYCBhcmUgZXF1YWwgaWYgYGB2LnRvbGlzdCgpID09IHcudG9saXN0KClgYDo6CisKKyAgICAgICAgID4+PiBpbXBvcnQgYXJyYXkKKyAgICAgICAgID4+PiBhID0gYXJyYXkuYXJyYXkoJ0knLCBbMSwgMiwgMywgNCwgNV0pCisgICAgICAgICA+Pj4gYiA9IGFycmF5LmFycmF5KCdkJywgWzEuMCwgMi4wLCAzLjAsIDQuMCwgNS4wXSkKKyAgICAgICAgID4+PiBjID0gYXJyYXkuYXJyYXkoJ2InLCBbNSwgMywgMV0pCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgID4+PiB5ID0gbWVtb3J5dmlldyhiKQorICAgICAgICAgPj4+IHggPT0gYSA9PSB5ID09IGIKKyAgICAgICAgIFRydWUKKyAgICAgICAgID4+PiB4LnRvbGlzdCgpID09IGEudG9saXN0KCkgPT0geS50b2xpc3QoKSA9PSBiLnRvbGlzdCgpCisgICAgICAgICBUcnVlCisgICAgICAgICA+Pj4geiA9IHlbOjotMl0KKyAgICAgICAgID4+PiB6ID09IGMKKyAgICAgICAgIFRydWUKKyAgICAgICAgID4+PiB6LnRvbGlzdCgpID09IGMudG9saXN0KCkKKyAgICAgICAgIFRydWUKKworICAgICAgSWYgZWl0aGVyIGZvcm1hdCBzdHJpbmcgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgOm1vZDpgc3RydWN0YCBtb2R1bGUsCisgICAgICB0aGVuIHRoZSBvYmplY3RzIHdpbGwgYWx3YXlzIGNvbXBhcmUgYXMgdW5lcXVhbCAoZXZlbiBpZiB0aGUgZm9ybWF0CisgICAgICBzdHJpbmdzIGFuZCBidWZmZXIgY29udGVudHMgYXJlIGlkZW50aWNhbCk6OgorCisgICAgICAgICA+Pj4gZnJvbSBjdHlwZXMgaW1wb3J0IEJpZ0VuZGlhblN0cnVjdHVyZSwgY19sb25nCisgICAgICAgICA+Pj4gY2xhc3MgQkVQb2ludChCaWdFbmRpYW5TdHJ1Y3R1cmUpOgorICAgICAgICAgLi4uICAgICBfZmllbGRzXyA9IFsoIngiLCBjX2xvbmcpLCAoInkiLCBjX2xvbmcpXQorICAgICAgICAgLi4uCisgICAgICAgICA+Pj4gcG9pbnQgPSBCRVBvaW50KDEwMCwgMjAwKQorICAgICAgICAgPj4+IGEgPSBtZW1vcnl2aWV3KHBvaW50KQorICAgICAgICAgPj4+IGIgPSBtZW1vcnl2aWV3KHBvaW50KQorICAgICAgICAgPj4+IGEgPT0gcG9pbnQKKyAgICAgICAgIEZhbHNlCisgICAgICAgICA+Pj4gYSA9PSBiCisgICAgICAgICBGYWxzZQorCisgICAgICBOb3RlIHRoYXQsIGFzIHdpdGggZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYGB2IGlzIHdgYCBkb2VzICpub3QqIGltcGx5CisgICAgICBgYHYgPT0gd2BgIGZvciBtZW1vcnl2aWV3IG9iamVjdHMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisKKyAgIC4uIG1ldGhvZDo6IHRvYnl0ZXMoKQorCisgICAgICBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGJ5dGVzdHJpbmcuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgIGNhbGxpbmcgdGhlIDpjbGFzczpgYnl0ZXNgIGNvbnN0cnVjdG9yIG9uIHRoZSBtZW1vcnl2aWV3LiA6OgorCisgICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYiJhYmMiKQorICAgICAgICAgPj4+IG0udG9ieXRlcygpCisgICAgICAgICBiJ2FiYycKKyAgICAgICAgID4+PiBieXRlcyhtKQorICAgICAgICAgYidhYmMnCisKKyAgICAgIEZvciBub24tY29udGlndW91cyBhcnJheXMgdGhlIHJlc3VsdCBpcyBlcXVhbCB0byB0aGUgZmxhdHRlbmVkIGxpc3QKKyAgICAgIHJlcHJlc2VudGF0aW9uIHdpdGggYWxsIGVsZW1lbnRzIGNvbnZlcnRlZCB0byBieXRlcy4gOm1ldGg6YHRvYnl0ZXNgCisgICAgICBzdXBwb3J0cyBhbGwgZm9ybWF0IHN0cmluZ3MsIGluY2x1ZGluZyB0aG9zZSB0aGF0IGFyZSBub3QgaW4KKyAgICAgIDptb2Q6YHN0cnVjdGAgbW9kdWxlIHN5bnRheC4KKworICAgLi4gbWV0aG9kOjogdG9saXN0KCkKKworICAgICAgUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBsaXN0IG9mIGVsZW1lbnRzLiA6OgorCisgICAgICAgICA+Pj4gbWVtb3J5dmlldyhiJ2FiYycpLnRvbGlzdCgpCisgICAgICAgICBbOTcsIDk4LCA5OV0KKyAgICAgICAgID4+PiBpbXBvcnQgYXJyYXkKKyAgICAgICAgID4+PiBhID0gYXJyYXkuYXJyYXkoJ2QnLCBbMS4xLCAyLjIsIDMuM10pCisgICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgID4+PiBtLnRvbGlzdCgpCisgICAgICAgICBbMS4xLCAyLjIsIDMuM10KKworICAgICAgOm1ldGg6YHRvbGlzdGAgaXMgY3VycmVudGx5IHJlc3RyaWN0ZWQgdG8gc2luZ2xlIGNoYXJhY3RlciBuYXRpdmUgZm9ybWF0cworICAgICAgaW4gOm1vZDpgc3RydWN0YCBtb2R1bGUgc3ludGF4LgorCisgICAuLiBtZXRob2Q6OiByZWxlYXNlKCkKKworICAgICAgUmVsZWFzZSB0aGUgdW5kZXJseWluZyBidWZmZXIgZXhwb3NlZCBieSB0aGUgbWVtb3J5dmlldyBvYmplY3QuICBNYW55CisgICAgICBvYmplY3RzIHRha2Ugc3BlY2lhbCBhY3Rpb25zIHdoZW4gYSB2aWV3IGlzIGhlbGQgb24gdGhlbSAoZm9yIGV4YW1wbGUsCisgICAgICBhIDpjbGFzczpgYnl0ZWFycmF5YCB3b3VsZCB0ZW1wb3JhcmlseSBmb3JiaWQgcmVzaXppbmcpOyB0aGVyZWZvcmUsCisgICAgICBjYWxsaW5nIHJlbGVhc2UoKSBpcyBoYW5keSB0byByZW1vdmUgdGhlc2UgcmVzdHJpY3Rpb25zIChhbmQgZnJlZSBhbnkKKyAgICAgIGRhbmdsaW5nIHJlc291cmNlcykgYXMgc29vbiBhcyBwb3NzaWJsZS4KKworICAgICAgQWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLCBhbnkgZnVydGhlciBvcGVyYXRpb24gb24gdGhlIHZpZXcKKyAgICAgIHJhaXNlcyBhIDpjbGFzczpgVmFsdWVFcnJvcmAgKGV4Y2VwdCA6bWV0aDpgcmVsZWFzZSgpYCBpdHNlbGYgd2hpY2ggY2FuCisgICAgICBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMpOjoKKworICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGInYWJjJykKKyAgICAgICAgID4+PiBtLnJlbGVhc2UoKQorICAgICAgICAgPj4+IG1bMF0KKyAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgICAgIFZhbHVlRXJyb3I6IG9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QKKworICAgICAgVGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbCBjYW4gYmUgdXNlZCBmb3IgYSBzaW1pbGFyIGVmZmVjdCwKKyAgICAgIHVzaW5nIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQ6OgorCisgICAgICAgICA+Pj4gd2l0aCBtZW1vcnl2aWV3KGInYWJjJykgYXMgbToKKyAgICAgICAgIC4uLiAgICAgbVswXQorICAgICAgICAgLi4uCisgICAgICAgICA5NworICAgICAgICAgPj4+IG1bMF0KKyAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgICAgIFZhbHVlRXJyb3I6IG9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QKKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisKKyAgIC4uIG1ldGhvZDo6IGNhc3QoZm9ybWF0Wywgc2hhcGVdKQorCisgICAgICBDYXN0IGEgbWVtb3J5dmlldyB0byBhIG5ldyBmb3JtYXQgb3Igc2hhcGUuICpzaGFwZSogZGVmYXVsdHMgdG8KKyAgICAgIGBgW2J5dGVfbGVuZ3RoLy9uZXdfaXRlbXNpemVdYGAsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHJlc3VsdCB2aWV3CisgICAgICB3aWxsIGJlIG9uZS1kaW1lbnNpb25hbC4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIG5ldyBtZW1vcnl2aWV3LCBidXQKKyAgICAgIHRoZSBidWZmZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuIFN1cHBvcnRlZCBjYXN0cyBhcmUgMUQgLT4gQy1jb250aWd1b3VzCisgICAgICBhbmQgQy1jb250aWd1b3VzIC0+IDFELgorCisgICAgICBCb3RoIGZvcm1hdHMgYXJlIHJlc3RyaWN0ZWQgdG8gc2luZ2xlIGVsZW1lbnQgbmF0aXZlIGZvcm1hdHMgaW4KKyAgICAgIDptb2Q6YHN0cnVjdGAgc3ludGF4LiBPbmUgb2YgdGhlIGZvcm1hdHMgbXVzdCBiZSBhIGJ5dGUgZm9ybWF0CisgICAgICAoJ0InLCAnYicgb3IgJ2MnKS4gVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgbXVzdCBiZSB0aGUgc2FtZQorICAgICAgYXMgdGhlIG9yaWdpbmFsIGxlbmd0aC4KKworICAgICAgQ2FzdCAxRC9sb25nIHRvIDFEL3Vuc2lnbmVkIGJ5dGVzOjoKKworICAgICAgICAgPj4+IGltcG9ydCBhcnJheQorICAgICAgICAgPj4+IGEgPSBhcnJheS5hcnJheSgnbCcsIFsxLDIsM10pCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgID4+PiB4LmZvcm1hdAorICAgICAgICAgJ2wnCisgICAgICAgICA+Pj4geC5pdGVtc2l6ZQorICAgICAgICAgOAorICAgICAgICAgPj4+IGxlbih4KQorICAgICAgICAgMworICAgICAgICAgPj4+IHgubmJ5dGVzCisgICAgICAgICAyNAorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ0InKQorICAgICAgICAgPj4+IHkuZm9ybWF0CisgICAgICAgICAnQicKKyAgICAgICAgID4+PiB5Lml0ZW1zaXplCisgICAgICAgICAxCisgICAgICAgICA+Pj4gbGVuKHkpCisgICAgICAgICAyNAorICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICAyNAorCisgICAgICBDYXN0IDFEL3Vuc2lnbmVkIGJ5dGVzIHRvIDFEL2NoYXI6OgorCisgICAgICAgICA+Pj4gYiA9IGJ5dGVhcnJheShiJ3p5eicpCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgID4+PiB4WzBdID0gYidhJworICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgICAgVmFsdWVFcnJvcjogbWVtb3J5dmlldzogaW52YWxpZCB2YWx1ZSBmb3IgZm9ybWF0ICJCIgorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ2MnKQorICAgICAgICAgPj4+IHlbMF0gPSBiJ2EnCisgICAgICAgICA+Pj4gYgorICAgICAgICAgYnl0ZWFycmF5KGInYXl6JykKKworICAgICAgQ2FzdCAxRC9ieXRlcyB0byAzRC9pbnRzIHRvIDFEL3NpZ25lZCBjaGFyOjoKKworICAgICAgICAgPj4+IGltcG9ydCBzdHJ1Y3QKKyAgICAgICAgID4+PiBidWYgPSBzdHJ1Y3QucGFjaygiaSIqMTIsICpsaXN0KHJhbmdlKDEyKSkpCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYnVmKQorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ2knLCBzaGFwZT1bMiwyLDNdKQorICAgICAgICAgPj4+IHkudG9saXN0KCkKKyAgICAgICAgIFtbWzAsIDEsIDJdLCBbMywgNCwgNV1dLCBbWzYsIDcsIDhdLCBbOSwgMTAsIDExXV1dCisgICAgICAgICA+Pj4geS5mb3JtYXQKKyAgICAgICAgICdpJworICAgICAgICAgPj4+IHkuaXRlbXNpemUKKyAgICAgICAgIDQKKyAgICAgICAgID4+PiBsZW4oeSkKKyAgICAgICAgIDIKKyAgICAgICAgID4+PiB5Lm5ieXRlcworICAgICAgICAgNDgKKyAgICAgICAgID4+PiB6ID0geS5jYXN0KCdiJykKKyAgICAgICAgID4+PiB6LmZvcm1hdAorICAgICAgICAgJ2InCisgICAgICAgICA+Pj4gei5pdGVtc2l6ZQorICAgICAgICAgMQorICAgICAgICAgPj4+IGxlbih6KQorICAgICAgICAgNDgKKyAgICAgICAgID4+PiB6Lm5ieXRlcworICAgICAgICAgNDgKKworICAgICAgQ2FzdCAxRC91bnNpZ25lZCBjaGFyIHRvIHRvIDJEL3Vuc2lnbmVkIGxvbmc6OgorCisgICAgICAgICA+Pj4gYnVmID0gc3RydWN0LnBhY2soIkwiKjYsICpsaXN0KHJhbmdlKDYpKSkKKyAgICAgICAgID4+PiB4ID0gbWVtb3J5dmlldyhidWYpCisgICAgICAgICA+Pj4geSA9IHguY2FzdCgnTCcsIHNoYXBlPVsyLDNdKQorICAgICAgICAgPj4+IGxlbih5KQorICAgICAgICAgMgorICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICA0OAorICAgICAgICAgPj4+IHkudG9saXN0KCkKKyAgICAgICAgIFtbMCwgMSwgMl0sIFszLCA0LCA1XV0KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIFRoZXJlIGFyZSBhbHNvIHNldmVyYWwgcmVhZG9ubHkgYXR0cmlidXRlcyBhdmFpbGFibGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG9iagorCisgICAgICBUaGUgdW5kZXJseWluZyBvYmplY3Qgb2YgdGhlIG1lbW9yeXZpZXc6OgorCisgICAgICAgICA+Pj4gYiAgPSBieXRlYXJyYXkoYid4eXonKQorICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGIpCisgICAgICAgICA+Pj4gbS5vYmogaXMgYgorICAgICAgICAgVHJ1ZQorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogbmJ5dGVzCisKKyAgICAgIGBgbmJ5dGVzID09IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPT0gbGVuKG0udG9ieXRlcygpKWBgLiBUaGlzIGlzCisgICAgICB0aGUgYW1vdW50IG9mIHNwYWNlIGluIGJ5dGVzIHRoYXQgdGhlIGFycmF5IHdvdWxkIHVzZSBpbiBhIGNvbnRpZ3VvdXMKKyAgICAgIHJlcHJlc2VudGF0aW9uLiBJdCBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gbGVuKG0pOjoKKworICAgICAgICAgPj4+IGltcG9ydCBhcnJheQorICAgICAgICAgPj4+IGEgPSBhcnJheS5hcnJheSgnaScsIFsxLDIsMyw0LDVdKQorICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgICA+Pj4gbGVuKG0pCisgICAgICAgICA1CisgICAgICAgICA+Pj4gbS5uYnl0ZXMKKyAgICAgICAgIDIwCisgICAgICAgICA+Pj4geSA9IG1bOjoyXQorICAgICAgICAgPj4+IGxlbih5KQorICAgICAgICAgMworICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICAxMgorICAgICAgICAgPj4+IGxlbih5LnRvYnl0ZXMoKSkKKyAgICAgICAgIDEyCisKKyAgICAgIE11bHRpLWRpbWVuc2lvbmFsIGFycmF5czo6CisKKyAgICAgICAgID4+PiBpbXBvcnQgc3RydWN0CisgICAgICAgICA+Pj4gYnVmID0gc3RydWN0LnBhY2soImQiKjEyLCAqWzEuNSp4IGZvciB4IGluIHJhbmdlKDEyKV0pCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYnVmKQorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ2QnLCBzaGFwZT1bMyw0XSkKKyAgICAgICAgID4+PiB5LnRvbGlzdCgpCisgICAgICAgICBbWzAuMCwgMS41LCAzLjAsIDQuNV0sIFs2LjAsIDcuNSwgOS4wLCAxMC41XSwgWzEyLjAsIDEzLjUsIDE1LjAsIDE2LjVdXQorICAgICAgICAgPj4+IGxlbih5KQorICAgICAgICAgMworICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICA5NgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogcmVhZG9ubHkKKworICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIHJlYWQgb25seS4KKworICAgLi4gYXR0cmlidXRlOjogZm9ybWF0CisKKyAgICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdCAoaW4gOm1vZDpgc3RydWN0YCBtb2R1bGUgc3R5bGUpIGZvciBlYWNoCisgICAgICBlbGVtZW50IGluIHRoZSB2aWV3LiBBIG1lbW9yeXZpZXcgY2FuIGJlIGNyZWF0ZWQgZnJvbSBleHBvcnRlcnMgd2l0aAorICAgICAgYXJiaXRyYXJ5IGZvcm1hdCBzdHJpbmdzLCBidXQgc29tZSBtZXRob2RzIChlLmcuIDptZXRoOmB0b2xpc3RgKSBhcmUKKyAgICAgIHJlc3RyaWN0ZWQgdG8gbmF0aXZlIHNpbmdsZSBlbGVtZW50IGZvcm1hdHMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGl0ZW1zaXplCisKKyAgICAgIFRoZSBzaXplIGluIGJ5dGVzIG9mIGVhY2ggZWxlbWVudCBvZiB0aGUgbWVtb3J5dmlldzo6CisKKyAgICAgICAgID4+PiBpbXBvcnQgYXJyYXksIHN0cnVjdAorICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGFycmF5LmFycmF5KCdIJywgWzMyMDAwLCAzMjAwMSwgMzIwMDJdKSkKKyAgICAgICAgID4+PiBtLml0ZW1zaXplCisgICAgICAgICAyCisgICAgICAgICA+Pj4gbVswXQorICAgICAgICAgMzIwMDAKKyAgICAgICAgID4+PiBzdHJ1Y3QuY2FsY3NpemUoJ0gnKSA9PSBtLml0ZW1zaXplCisgICAgICAgICBUcnVlCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5kaW0KKworICAgICAgQW4gaW50ZWdlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpbWVuc2lvbnMgb2YgYSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheSB0aGUKKyAgICAgIG1lbW9yeSByZXByZXNlbnRzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBzaGFwZQorCisgICAgICBBIHR1cGxlIG9mIGludGVnZXJzIHRoZSBsZW5ndGggb2YgOmF0dHI6YG5kaW1gIGdpdmluZyB0aGUgc2hhcGUgb2YgdGhlCisgICAgICBtZW1vcnkgYXMgYSBOLWRpbWVuc2lvbmFsIGFycmF5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBzdHJpZGVzCisKKyAgICAgIEEgdHVwbGUgb2YgaW50ZWdlcnMgdGhlIGxlbmd0aCBvZiA6YXR0cjpgbmRpbWAgZ2l2aW5nIHRoZSBzaXplIGluIGJ5dGVzIHRvCisgICAgICBhY2Nlc3MgZWFjaCBlbGVtZW50IGZvciBlYWNoIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN1Ym9mZnNldHMKKworICAgICAgVXNlZCBpbnRlcm5hbGx5IGZvciBQSUwtc3R5bGUgYXJyYXlzLiBUaGUgdmFsdWUgaXMgaW5mb3JtYXRpb25hbCBvbmx5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBjX2NvbnRpZ3VvdXMKKworICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEMtY29udGlndW91cy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGZfY29udGlndW91cworCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgRm9ydHJhbiBjb250aWd1b3VzLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogY29udGlndW91cworCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgY29udGlndW91cy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gX3R5cGVzLXNldDoKIAogU2V0IFR5cGVzIC0tLSA6Y2xhc3M6YHNldGAsIDpjbGFzczpgZnJvemVuc2V0YApAQCAtMTg5Niw3ICsyNzI2LDcgQEAKIENvbW1vbiB1c2VzIGluY2x1ZGUgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kCiBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLCBkaWZmZXJlbmNlLCBhbmQKIHN5bW1ldHJpYyBkaWZmZXJlbmNlLgotKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQgaW4gOmNsYXNzOmBkaWN0YCwgOmNsYXNzOmBsaXN0YCwKKyhGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LWluIDpjbGFzczpgZGljdGAsIDpjbGFzczpgbGlzdGAsCiBhbmQgOmNsYXNzOmB0dXBsZWAgY2xhc3NlcywgYW5kIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLikKIAogTGlrZSBvdGhlciBjb2xsZWN0aW9ucywgc2V0cyBzdXBwb3J0IGBgeCBpbiBzZXRgYCwgYGBsZW4oc2V0KWBgLCBhbmQgYGBmb3IgeCBpbgpAQCAtMjA5Niw3ICsyOTI2LDcgQEAKIAogQSA6ZGZuOmBtYXBwaW5nYCBvYmplY3QgbWFwcyA6dGVybTpgaGFzaGFibGVgIHZhbHVlcyB0byBhcmJpdHJhcnkgb2JqZWN0cy4KIE1hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3RhbmRhcmQgbWFwcGluZwotdHlwZSwgdGhlIDpkZm46YGRpY3Rpb25hcnlgLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQgaW4KK3R5cGUsIHRoZSA6ZGZuOmBkaWN0aW9uYXJ5YC4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LWluCiA6Y2xhc3M6YGxpc3RgLCA6Y2xhc3M6YHNldGAsIGFuZCA6Y2xhc3M6YHR1cGxlYCBjbGFzc2VzLCBhbmQgdGhlCiA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLikKIApAQCAtMjIyMCwxMyArMzA1MCwxMyBAQAogCiAgICAuLiBtZXRob2Q6OiBpdGVtcygpCiAKLSAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGAgcGFpcnMpLiAgU2VlCi0gICAgICBiZWxvdyBmb3IgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGl0ZW1zIChgYChrZXksIHZhbHVlKWBgIHBhaXJzKS4KKyAgICAgIFNlZSB0aGUgOnJlZjpgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMgPGRpY3Qtdmlld3M+YC4KIAogICAgLi4gbWV0aG9kOjoga2V5cygpCiAKLSAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3Mga2V5cy4gIFNlZSBiZWxvdyBmb3IgZG9jdW1lbnRhdGlvbiBvZgotICAgICAgdmlldyBvYmplY3RzLgorICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyBrZXlzLiAgU2VlIHRoZSA6cmVmOmBkb2N1bWVudGF0aW9uCisgICAgICBvZiB2aWV3IG9iamVjdHMgPGRpY3Qtdmlld3M+YC4KIAogICAgLi4gbWV0aG9kOjogcG9wKGtleVssIGRlZmF1bHRdKQogCkBAIC0yMjYwLDggKzMwOTAsMTIgQEAKIAogICAgLi4gbWV0aG9kOjogdmFsdWVzKCkKIAotICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyB2YWx1ZXMuICBTZWUgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YKLSAgICAgIHZpZXcgb2JqZWN0cy4KKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3MgdmFsdWVzLiAgU2VlIHRoZQorICAgICAgOnJlZjpgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMgPGRpY3Qtdmlld3M+YC4KKworLi4gc2VlYWxzbzo6CisgICA6Y2xhc3M6YHR5cGVzLk1hcHBpbmdQcm94eVR5cGVgIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHJlYWQtb25seSB2aWV3CisgICBvZiBhIDpjbGFzczpgZGljdGAuCiAKIAogLi4gX2RpY3Qtdmlld3M6CkBAIC0yMzA3LDcgKzMxNDEsNyBAQAogdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCBgYChrZXksIHZhbHVlKWBgIHBhaXJzIGFyZSB1bmlxdWUgYW5kIGhhc2hhYmxlLAogdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmUgbm90IHRyZWF0ZWQgYXMgc2V0LWxpa2UKIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pICBGb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUKLW9wZXJhdGlvbnMgZGVmaW5lZCBmb3IgdGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgOmNsYXNzOmBjb2xsZWN0aW9ucy5TZXRgIGFyZQorb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzcyA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXRgIGFyZQogYXZhaWxhYmxlIChmb3IgZXhhbXBsZSwgYGA9PWBgLCBgYDxgYCwgb3IgYGBeYGApLgogCiBBbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTo6CkBAIC0yMzQyLDE1OSArMzE3Niw2IEBACiAgICB7J2p1aWNlJywgJ3NhdXNhZ2UnLCAnYmFjb24nLCAnc3BhbSd9CiAKIAotLi4gX3R5cGVtZW1vcnl2aWV3OgotCi1tZW1vcnl2aWV3IHR5cGUKLT09PT09PT09PT09PT09PQotCi06Y2xhc3M6YG1lbW9yeXZpZXdgIG9iamVjdHMgYWxsb3cgUHl0aG9uIGNvZGUgdG8gYWNjZXNzIHRoZSBpbnRlcm5hbCBkYXRhCi1vZiBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUgOnJlZjpgYnVmZmVyIHByb3RvY29sIDxidWZmZXJvYmplY3RzPmAgd2l0aG91dAotY29weWluZy4gIE1lbW9yeSBpcyBnZW5lcmFsbHkgaW50ZXJwcmV0ZWQgYXMgc2ltcGxlIGJ5dGVzLgotCi0uLiBjbGFzczo6IG1lbW9yeXZpZXcob2JqKQotCi0gICBDcmVhdGUgYSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHRoYXQgcmVmZXJlbmNlcyAqb2JqKi4gICpvYmoqIG11c3Qgc3VwcG9ydCB0aGUKLSAgIGJ1ZmZlciBwcm90b2NvbC4gIEJ1aWx0LWluIG9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBidWZmZXIgcHJvdG9jb2wgaW5jbHVkZQotICAgOmNsYXNzOmBieXRlc2AgYW5kIDpjbGFzczpgYnl0ZWFycmF5YC4KLQotICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyB0aGUgbm90aW9uIG9mIGFuICplbGVtZW50Kiwgd2hpY2ggaXMgdGhlCi0gICBhdG9taWMgbWVtb3J5IHVuaXQgaGFuZGxlZCBieSB0aGUgb3JpZ2luYXRpbmcgb2JqZWN0ICpvYmoqLiAgRm9yIG1hbnkKLSAgIHNpbXBsZSB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAsIGFuIGVsZW1lbnQKLSAgIGlzIGEgc2luZ2xlIGJ5dGUsIGJ1dCBvdGhlciB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYXJyYXkuYXJyYXlgIG1heSBoYXZlCi0gICBiaWdnZXIgZWxlbWVudHMuCi0KLSAgIGBgbGVuKHZpZXcpYGAgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBtZW1vcnl2aWV3LAotICAgKnZpZXcqLiAgVGhlIDpjbGFzczpgfm1lbW9yeXZpZXcuaXRlbXNpemVgIGF0dHJpYnV0ZSB3aWxsIGdpdmUgeW91IHRoZQotICAgbnVtYmVyIG9mIGJ5dGVzIGluIGEgc2luZ2xlIGVsZW1lbnQuCi0KLSAgIEEgOmNsYXNzOmBtZW1vcnl2aWV3YCBzdXBwb3J0cyBzbGljaW5nIHRvIGV4cG9zZSBpdHMgZGF0YS4gIFRha2luZyBhIHNpbmdsZQotICAgaW5kZXggd2lsbCByZXR1cm4gYSBzaW5nbGUgZWxlbWVudCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gIEZ1bGwKLSAgIHNsaWNpbmcgd2lsbCByZXN1bHQgaW4gYSBzdWJ2aWV3OjoKLQotICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGInYWJjZWZnJykKLSAgICAgID4+PiB2WzFdCi0gICAgICBiJ2InCi0gICAgICA+Pj4gdlstMV0KLSAgICAgIGInZycKLSAgICAgID4+PiB2WzE6NF0KLSAgICAgIDxtZW1vcnkgYXQgMHg3N2FiMjg+Ci0gICAgICA+Pj4gYnl0ZXModlsxOjRdKQotICAgICAgYidiY2UnCi0KLSAgIElmIHRoZSBvYmplY3QgdGhlIG1lbW9yeXZpZXcgaXMgb3ZlciBzdXBwb3J0cyBjaGFuZ2luZyBpdHMgZGF0YSwgdGhlCi0gICBtZW1vcnl2aWV3IHN1cHBvcnRzIHNsaWNlIGFzc2lnbm1lbnQ6OgotCi0gICAgICA+Pj4gZGF0YSA9IGJ5dGVhcnJheShiJ2FiY2VmZycpCi0gICAgICA+Pj4gdiA9IG1lbW9yeXZpZXcoZGF0YSkKLSAgICAgID4+PiB2LnJlYWRvbmx5Ci0gICAgICBGYWxzZQotICAgICAgPj4+IHZbMF0gPSBiJ3onCi0gICAgICA+Pj4gZGF0YQotICAgICAgYnl0ZWFycmF5KGInemJjZWZnJykKLSAgICAgID4+PiB2WzE6NF0gPSBiJzEyMycKLSAgICAgID4+PiBkYXRhCi0gICAgICBieXRlYXJyYXkoYid6MTIzZmcnKQotICAgICAgPj4+IHZbMl0gPSBiJ3NwYW0nCi0gICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+Ci0gICAgICBWYWx1ZUVycm9yOiBjYW5ub3QgbW9kaWZ5IHNpemUgb2YgbWVtb3J5dmlldyBvYmplY3QKLQotICAgTm90aWNlIGhvdyB0aGUgc2l6ZSBvZiB0aGUgbWVtb3J5dmlldyBvYmplY3QgY2Fubm90IGJlIGNoYW5nZWQuCi0KLSAgIDpjbGFzczpgbWVtb3J5dmlld2AgaGFzIHNldmVyYWwgbWV0aG9kczoKLQotICAgLi4gbWV0aG9kOjogdG9ieXRlcygpCi0KLSAgICAgIFJldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgYnl0ZXN0cmluZy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bwotICAgICAgY2FsbGluZyB0aGUgOmNsYXNzOmBieXRlc2AgY29uc3RydWN0b3Igb24gdGhlIG1lbW9yeXZpZXcuIDo6Ci0KLSAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhiImFiYyIpCi0gICAgICAgICA+Pj4gbS50b2J5dGVzKCkKLSAgICAgICAgIGInYWJjJwotICAgICAgICAgPj4+IGJ5dGVzKG0pCi0gICAgICAgICBiJ2FiYycKLQotICAgLi4gbWV0aG9kOjogdG9saXN0KCkKLQotICAgICAgUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBsaXN0IG9mIGludGVnZXJzLiA6OgotCi0gICAgICAgICA+Pj4gbWVtb3J5dmlldyhiJ2FiYycpLnRvbGlzdCgpCi0gICAgICAgICBbOTcsIDk4LCA5OV0KLQotICAgLi4gbWV0aG9kOjogcmVsZWFzZSgpCi0KLSAgICAgIFJlbGVhc2UgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGV4cG9zZWQgYnkgdGhlIG1lbW9yeXZpZXcgb2JqZWN0LiAgTWFueQotICAgICAgb2JqZWN0cyB0YWtlIHNwZWNpYWwgYWN0aW9ucyB3aGVuIGEgdmlldyBpcyBoZWxkIG9uIHRoZW0gKGZvciBleGFtcGxlLAotICAgICAgYSA6Y2xhc3M6YGJ5dGVhcnJheWAgd291bGQgdGVtcG9yYXJpbHkgZm9yYmlkIHJlc2l6aW5nKTsgdGhlcmVmb3JlLAotICAgICAgY2FsbGluZyByZWxlYXNlKCkgaXMgaGFuZHkgdG8gcmVtb3ZlIHRoZXNlIHJlc3RyaWN0aW9ucyAoYW5kIGZyZWUgYW55Ci0gICAgICBkYW5nbGluZyByZXNvdXJjZXMpIGFzIHNvb24gYXMgcG9zc2libGUuCi0KLSAgICAgIEFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZCwgYW55IGZ1cnRoZXIgb3BlcmF0aW9uIG9uIHRoZSB2aWV3Ci0gICAgICByYWlzZXMgYSA6Y2xhc3M6YFZhbHVlRXJyb3JgIChleGNlcHQgOm1ldGg6YHJlbGVhc2UoKWAgaXRzZWxmIHdoaWNoIGNhbgotICAgICAgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzKTo6Ci0KLSAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhiJ2FiYycpCi0gICAgICAgICA+Pj4gbS5yZWxlYXNlKCkKLSAgICAgICAgID4+PiBtWzBdCi0gICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+Ci0gICAgICAgICBWYWx1ZUVycm9yOiBvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Ci0KLSAgICAgIFRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wgY2FuIGJlIHVzZWQgZm9yIGEgc2ltaWxhciBlZmZlY3QsCi0gICAgICB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50OjoKLQotICAgICAgICAgPj4+IHdpdGggbWVtb3J5dmlldyhiJ2FiYycpIGFzIG06Ci0gICAgICAgICAuLi4gICAgIG1bMF0KLSAgICAgICAgIC4uLgotICAgICAgICAgYidhJwotICAgICAgICAgPj4+IG1bMF0KLSAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KLSAgICAgICAgIFZhbHVlRXJyb3I6IG9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QKLQotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLSAgIFRoZXJlIGFyZSBhbHNvIHNldmVyYWwgcmVhZG9ubHkgYXR0cmlidXRlcyBhdmFpbGFibGU6Ci0KLSAgIC4uIGF0dHJpYnV0ZTo6IGZvcm1hdAotCi0gICAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSBmb3JtYXQgKGluIDptb2Q6YHN0cnVjdGAgbW9kdWxlIHN0eWxlKSBmb3IgZWFjaAotICAgICAgZWxlbWVudCBpbiB0aGUgdmlldy4gIFRoaXMgZGVmYXVsdHMgdG8gYGAnQidgYCwgYSBzaW1wbGUgYnl0ZXN0cmluZy4KLQotICAgLi4gYXR0cmlidXRlOjogaXRlbXNpemUKLQotICAgICAgVGhlIHNpemUgaW4gYnl0ZXMgb2YgZWFjaCBlbGVtZW50IG9mIHRoZSBtZW1vcnl2aWV3OjoKLQotICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGFycmF5LmFycmF5KCdIJywgWzEsMiwzXSkpCi0gICAgICAgICA+Pj4gbS5pdGVtc2l6ZQotICAgICAgICAgMgotICAgICAgICAgPj4+IG1bMF0KLSAgICAgICAgIGInXHgwMVx4MDAnCi0gICAgICAgICA+Pj4gbGVuKG1bMF0pID09IG0uaXRlbXNpemUKLSAgICAgICAgIFRydWUKLQotICAgLi4gYXR0cmlidXRlOjogc2hhcGUKLQotICAgICAgQSB0dXBsZSBvZiBpbnRlZ2VycyB0aGUgbGVuZ3RoIG9mIDphdHRyOmBuZGltYCBnaXZpbmcgdGhlIHNoYXBlIG9mIHRoZQotICAgICAgbWVtb3J5IGFzIGEgTi1kaW1lbnNpb25hbCBhcnJheS4KLQotICAgLi4gYXR0cmlidXRlOjogbmRpbQotCi0gICAgICBBbiBpbnRlZ2VyIGluZGljYXRpbmcgaG93IG1hbnkgZGltZW5zaW9ucyBvZiBhIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5IHRoZQotICAgICAgbWVtb3J5IHJlcHJlc2VudHMuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IHN0cmlkZXMKLQotICAgICAgQSB0dXBsZSBvZiBpbnRlZ2VycyB0aGUgbGVuZ3RoIG9mIDphdHRyOmBuZGltYCBnaXZpbmcgdGhlIHNpemUgaW4gYnl0ZXMgdG8KLSAgICAgIGFjY2VzcyBlYWNoIGVsZW1lbnQgZm9yIGVhY2ggZGltZW5zaW9uIG9mIHRoZSBhcnJheS4KLQotICAgLi4gYXR0cmlidXRlOjogcmVhZG9ubHkKLQotICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIHJlYWQgb25seS4KLQotICAgLi4gbWVtb3J5dmlldy5zdWJvZmZzZXRzIGlzbid0IGRvY3VtZW50ZWQgYmVjYXVzZSBpdCBvbmx5IHNlZW1zIHVzZWZ1bCBmb3IgQwotCi0KIC4uIF90eXBlY29udGV4dG1hbmFnZXI6CiAKIENvbnRleHQgTWFuYWdlciBUeXBlcwpAQCAtMjcxNiw3ICszMzk3LDcgQEAKIAogVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhwbGljaXRseSByZXR1cm4gYSB2YWx1ZS4gIEl0CiBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBudWxsIG9iamVjdCwgbmFtZWQKLWBgTm9uZWBgIChhIGJ1aWx0LWluIG5hbWUpLgorYGBOb25lYGAgKGEgYnVpbHQtaW4gbmFtZSkuICBgYHR5cGUoTm9uZSkoKWBgIHByb2R1Y2VzIHRoZSBzYW1lIHNpbmdsZXRvbi4KIAogSXQgaXMgd3JpdHRlbiBhcyBgYE5vbmVgYC4KIApAQCAtMjcyOCw3ICszNDA5LDggQEAKIAogVGhpcyBvYmplY3QgaXMgY29tbW9ubHkgdXNlZCBieSBzbGljaW5nIChzZWUgOnJlZjpgc2xpY2luZ3NgKS4gIEl0IHN1cHBvcnRzIG5vCiBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBlbGxpcHNpcyBvYmplY3QsIG5hbWVkCi06Y29uc3Q6YEVsbGlwc2lzYCAoYSBidWlsdC1pbiBuYW1lKS4KKzpjb25zdDpgRWxsaXBzaXNgIChhIGJ1aWx0LWluIG5hbWUpLiAgYGB0eXBlKEVsbGlwc2lzKSgpYGAgcHJvZHVjZXMgdGhlCis6Y29uc3Q6YEVsbGlwc2lzYCBzaW5nbGV0b24uCiAKIEl0IGlzIHdyaXR0ZW4gYXMgYGBFbGxpcHNpc2BgIG9yIGBgLi4uYGAuCiAKQEAgLTI3NDAsNyArMzQyMiw4IEBACiAKIFRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGZyb20gY29tcGFyaXNvbnMgYW5kIGJpbmFyeSBvcGVyYXRpb25zIHdoZW4gdGhleSBhcmUKIGFza2VkIHRvIG9wZXJhdGUgb24gdHlwZXMgdGhleSBkb24ndCBzdXBwb3J0LiBTZWUgOnJlZjpgY29tcGFyaXNvbnNgIGZvciBtb3JlCi1pbmZvcm1hdGlvbi4KK2luZm9ybWF0aW9uLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgYGBOb3RJbXBsZW1lbnRlZGBgIG9iamVjdC4KK2BgdHlwZShOb3RJbXBsZW1lbnRlZCkoKWBgIHByb2R1Y2VzIHRoZSBzaW5nbGV0b24gaW5zdGFuY2UuCiAKIEl0IGlzIHdyaXR0ZW4gYXMgYGBOb3RJbXBsZW1lbnRlZGBgLgogCkBAIC0yODA2LDYgKzM0ODksMTMgQEAKICAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyBvciB0eXBlLgogCiAKKy4uIGF0dHJpYnV0ZTo6IGNsYXNzLl9fcXVhbG5hbWVfXworCisgICBUaGUgOnRlcm06YHF1YWxpZmllZCBuYW1lYCBvZiB0aGUgY2xhc3Mgb3IgdHlwZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYXR0cmlidXRlOjogY2xhc3MuX19tcm9fXwogCiAgICBUaGlzIGF0dHJpYnV0ZSBpcyBhIHR1cGxlIG9mIGNsYXNzZXMgdGhhdCBhcmUgY29uc2lkZXJlZCB3aGVuIGxvb2tpbmcgZm9yCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdHJpbmdzLnJzdCBiL0RvYy9saWJyYXJ5L3N0cmluZ3MucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGYxNjU4Li4wMDAwMDAwCi0tLSBhL0RvYy9saWJyYXJ5L3N0cmluZ3MucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLi4gX3N0cmluZ3NlcnZpY2VzOgotCi0qKioqKioqKioqKioqKioKLVN0cmluZyBTZXJ2aWNlcwotKioqKioqKioqKioqKioqCi0KLVRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBhIHdpZGUgcmFuZ2Ugb2Ygc3RyaW5nCi1tYW5pcHVsYXRpb24gb3BlcmF0aW9ucy4KLQotSW4gYWRkaXRpb24sIFB5dGhvbidzIGJ1aWx0LWluIHN0cmluZyBjbGFzc2VzIHN1cHBvcnQgdGhlIHNlcXVlbmNlIHR5cGUgbWV0aG9kcwotZGVzY3JpYmVkIGluIHRoZSA6cmVmOmB0eXBlc3NlcWAgc2VjdGlvbiwgYW5kIGFsc28gdGhlIHN0cmluZy1zcGVjaWZpYyBtZXRob2RzCi1kZXNjcmliZWQgaW4gdGhlIDpyZWY6YHN0cmluZy1tZXRob2RzYCBzZWN0aW9uLiAgVG8gb3V0cHV0IGZvcm1hdHRlZCBzdHJpbmdzLAotc2VlIHRoZSA6cmVmOmBzdHJpbmctZm9ybWF0dGluZ2Agc2VjdGlvbi4gQWxzbywgc2VlIHRoZSA6bW9kOmByZWAgbW9kdWxlIGZvcgotc3RyaW5nIGZ1bmN0aW9ucyBiYXNlZCBvbiByZWd1bGFyIGV4cHJlc3Npb25zLgotCi0KLS4uIHRvY3RyZWU6OgotCi0gICBzdHJpbmcucnN0Ci0gICByZS5yc3QKLSAgIHN0cnVjdC5yc3QKLSAgIGRpZmZsaWIucnN0Ci0gICB0ZXh0d3JhcC5yc3QKLSAgIGNvZGVjcy5yc3QKLSAgIHVuaWNvZGVkYXRhLnJzdAotICAgc3RyaW5ncHJlcC5yc3QKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdCBiL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKaW5kZXggMTI4MjBlMC4uOTk0NTA2YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CkBAIC0xODcsMTcgKzE4NywyNCBAQAogfCBgYFFgYCAgfCA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICB8IFwoMiksIFwoMykgfAogfCAgICAgICAgfCBsb25nYCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotfCBgYGZgYCAgfCA6Yzp0eXBlOmBmbG9hdGAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAorfCBgYG5gYCAgfCA6Yzp0eXBlOmBzc2l6ZV90YCAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotfCBgYGRgYCAgfCA6Yzp0eXBlOmBkb3VibGVgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAorfCBgYE5gYCAgfCA6Yzp0eXBlOmBzaXplX3RgICAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAorKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCBgYGZgYCAgfCA6Yzp0eXBlOmBmbG9hdGAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfAorKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCBgYGRgYCAgfCA6Yzp0eXBlOmBkb3VibGVgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogfCBgYHNgYCAgfCA6Yzp0eXBlOmBjaGFyW11gICAgICAgICAgfCBieXRlcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogfCBgYHBgYCAgfCA6Yzp0eXBlOmBjaGFyW11gICAgICAgICAgfCBieXRlcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotfCBgYFBgYCAgfCA6Yzp0eXBlOmB2b2lkIFwqYCAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfAorfCBgYFBgYCAgfCA6Yzp0eXBlOmB2b2lkIFwqYCAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNikgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ24nYGAgYW5kIGBgJ04nYGAgZm9ybWF0cy4KKwogTm90ZXM6CiAKICgxKQpAQCAtMjE5LDExICsyMjYsMTcgQEAKICAgICAgIFVzZSBvZiB0aGUgOm1ldGg6YF9faW5kZXhfX2AgbWV0aG9kIGZvciBub24taW50ZWdlcnMgaXMgbmV3IGluIDMuMi4KIAogKDQpCisgICBUaGUgYGAnbidgYCBhbmQgYGAnTidgYCBjb252ZXJzaW9uIGNvZGVzIGFyZSBvbmx5IGF2YWlsYWJsZSBmb3IgdGhlIG5hdGl2ZQorICAgc2l6ZSAoc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgb3Igd2l0aCB0aGUgYGAnQCdgYCBieXRlIG9yZGVyIGNoYXJhY3RlcikuCisgICBGb3IgdGhlIHN0YW5kYXJkIHNpemUsIHlvdSBjYW4gdXNlIHdoaWNoZXZlciBvZiB0aGUgb3RoZXIgaW50ZWdlciBmb3JtYXRzCisgICBmaXRzIHlvdXIgYXBwbGljYXRpb24uCisKKyg1KQogICAgRm9yIHRoZSBgYCdmJ2BgIGFuZCBgYCdkJ2BgIGNvbnZlcnNpb24gY29kZXMsIHRoZSBwYWNrZWQgcmVwcmVzZW50YXRpb24gdXNlcwogICAgdGhlIElFRUUgNzU0IGJpbmFyeTMyIChmb3IgYGAnZidgYCkgb3IgYmluYXJ5NjQgKGZvciBgYCdkJ2BgKSBmb3JtYXQsCiAgICByZWdhcmRsZXNzIG9mIHRoZSBmbG9hdGluZy1wb2ludCBmb3JtYXQgdXNlZCBieSB0aGUgcGxhdGZvcm0uCiAKLSg1KQorKDYpCiAgICBUaGUgYGAnUCdgYCBmb3JtYXQgY2hhcmFjdGVyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgbmF0aXZlIGJ5dGUgb3JkZXJpbmcKICAgIChzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCBvciB3aXRoIHRoZSBgYCdAJ2BgIGJ5dGUgb3JkZXIgY2hhcmFjdGVyKS4gVGhlIGJ5dGUKICAgIG9yZGVyIGNoYXJhY3RlciBgYCc9J2BgIGNob29zZXMgdG8gdXNlIGxpdHRsZS0gb3IgYmlnLWVuZGlhbiBvcmRlcmluZyBiYXNlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAppbmRleCAwMGI3MmZiLi4yZDVmNzYxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdApAQCAtMzAsMTYgKzMwLDIxIEBACiB1c2UgY2FzZXMsIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgUG9wZW5gIGludGVyZmFjZSBjYW4gYmUgdXNlZCBkaXJlY3RseS4KIAogCi0uLiBmdW5jdGlvbjo6IGNhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUpCiAKICAgIFJ1biB0aGUgY29tbWFuZCBkZXNjcmliZWQgYnkgKmFyZ3MqLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZSwgdGhlbgogICAgcmV0dXJuIHRoZSA6YXR0cjpgcmV0dXJuY29kZWAgYXR0cmlidXRlLgogCiAgICBUaGUgYXJndW1lbnRzIHNob3duIGFib3ZlIGFyZSBtZXJlbHkgdGhlIG1vc3QgY29tbW9uIG9uZXMsIGRlc2NyaWJlZCBiZWxvdwotICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSBzbGlnaHRseSBvZGQgbm90YXRpb24gaW4KLSAgIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgdGhlIHNhbWUgYXMKLSAgIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbnMgcGFzc2VzIGFsbAotICAgc3VwcGxpZWQgYXJndW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisgICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KKyAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9uIHBhc3NlcyBhbGwKKyAgIHN1cHBsaWVkIGFyZ3VtZW50cyBvdGhlciB0aGFuICp0aW1lb3V0KiBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorCisgICBUaGUgKnRpbWVvdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4ud2FpdGAuIElmIHRoZSB0aW1lb3V0CisgICBleHBpcmVzLCB0aGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJlIGtpbGxlZCBhbmQgdGhlbiB3YWl0ZWQgZm9yIGFnYWluLiAgVGhlCisgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmUtcmFpc2VkIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzCisgICBoYXMgdGVybWluYXRlZC4KIAogICAgRXhhbXBsZXM6OgogCkBAIC02Miw4ICs2NywxMSBAQAogICAgICAgcHJvY2VzcyBtYXkgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaCBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAKICAgICAgIHRoZSBPUyBwaXBlIGJ1ZmZlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCiAKLS4uIGZ1bmN0aW9uOjogY2hlY2tfY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlKQorCisuLiBmdW5jdGlvbjo6IGNoZWNrX2NhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lKQogCiAgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cy4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUuIElmIHRoZSByZXR1cm4KICAgIGNvZGUgd2FzIHplcm8gdGhlbiByZXR1cm4sIG90aGVyd2lzZSByYWlzZSA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgLiBUaGUKQEAgLTcxLDEwICs3OSwxNSBAQAogICAgOmF0dHI6YHJldHVybmNvZGVgIGF0dHJpYnV0ZS4KIAogICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKLSAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgc2xpZ2h0bHkgb2RkIG5vdGF0aW9uIGluCi0gICB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzCi0gICB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb25zIHBhc3NlcyBhbGwKLSAgIHN1cHBsaWVkIGFyZ3VtZW50cyBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSB1c2Ugb2Yga2V5d29yZC1vbmx5IG5vdGF0aW9uCisgICBpbiB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCisgICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbiBwYXNzZXMgYWxsCisgICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKworICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAorICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJlLXJhaXNlZCBhZnRlciB0aGUgY2hpbGQgcHJvY2VzcworICAgaGFzIHRlcm1pbmF0ZWQuCiAKICAgIEV4YW1wbGVzOjoKIApAQCAtODYsOCArOTksNiBAQAogICAgICAgICAgLi4uCiAgICAgICBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjogQ29tbWFuZCAnZXhpdCAxJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDIuNQotCiAgICAuLiB3YXJuaW5nOjoKIAogICAgICAgSW52b2tpbmcgdGhlIHN5c3RlbSBzaGVsbCB3aXRoIGBgc2hlbGw9VHJ1ZWBgIGNhbiBiZSBhIHNlY3VyaXR5IGhhemFyZApAQCAtMTAxLDggKzExMiwxMSBAQAogICAgICAgcHJvY2VzcyBtYXkgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaCBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAKICAgICAgIHRoZSBPUyBwaXBlIGJ1ZmZlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCiAKLS4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlKQorCisuLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQogCiAgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cyBvdXRwdXQgYXMgYSBieXRlIHN0cmluZy4KIApAQCAtMTEyLDExICsxMjYsMTcgQEAKICAgIGF0dHJpYnV0ZS4KIAogICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKLSAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgc2xpZ2h0bHkgb2RkIG5vdGF0aW9uIGluCi0gICB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCi0gICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yLCBleGNlcHQgdGhhdCAqc3Rkb3V0KiBpcwotICAgbm90IHBlcm1pdHRlZCBhcyBpdCBpcyB1c2VkIGludGVybmFsbHkuIEFsbCBvdGhlciBzdXBwbGllZCBhcmd1bWVudHMgYXJlCi0gICBwYXNzZWQgZGlyZWN0bHkgdGhyb3VnaCB0byB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IuCisgICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KKyAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9ucyBwYXNzZXMgYWxsCisgICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKyAgIEluIGFkZGl0aW9uLCAqc3Rkb3V0KiBpcyBub3QgcGVybWl0dGVkIGFzIGFuIGFyZ3VtZW50LCBhcyBpdCBpcyB1c2VkCisgICBpbnRlcm5hbGx5IHRvIGNvbGxlY3QgdGhlIG91dHB1dCBmcm9tIHRoZSBzdWJwcm9jZXNzLgorCisgICBUaGUgKnRpbWVvdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4ud2FpdGAuIElmIHRoZSB0aW1lb3V0CisgICBleHBpcmVzLCB0aGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJlIGtpbGxlZCBhbmQgdGhlbiB3YWl0ZWQgZm9yIGFnYWluLiAgVGhlCisgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmUtcmFpc2VkIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzCisgICBoYXMgdGVybWluYXRlZC4KIAogICAgRXhhbXBsZXM6OgogCkBAIC0xNDcsNyArMTY3LDcgQEAKICAgICAgIC4uLiAgICAgc2hlbGw9VHJ1ZSkKICAgICAgICdsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMi43CisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogICAgLi4gd2FybmluZzo6CiAKQEAgLTE2MSw2ICsxODEsMTggQEAKICAgICAgIHJlYWQgaW4gdGhlIGN1cnJlbnQgcHJvY2VzcywgdGhlIGNoaWxkIHByb2Nlc3MgbWF5IGJsb2NrIGlmIGl0CiAgICAgICBnZW5lcmF0ZXMgZW5vdWdoIG91dHB1dCB0byB0aGUgcGlwZSB0byBmaWxsIHVwIHRoZSBPUyBwaXBlIGJ1ZmZlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCisKKworLi4gZGF0YTo6IERFVk5VTEwKKworICAgU3BlY2lhbCB2YWx1ZSB0aGF0IGNhbiBiZSB1c2VkIGFzIHRoZSAqc3RkaW4qLCAqc3Rkb3V0KiBvciAqc3RkZXJyKiBhcmd1bWVudAorICAgdG8gOmNsYXNzOmBQb3BlbmAgYW5kIGluZGljYXRlcyB0aGF0IHRoZSBzcGVjaWFsIGZpbGUgOmRhdGE6YG9zLmRldm51bGxgCisgICB3aWxsIGJlIHVzZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQSVBFCiAKQEAgLTE3NiwxMCArMjA4LDM4IEBACiAgICBvdXRwdXQuCiAKIAorLi4gZXhjZXB0aW9uOjogU3VicHJvY2Vzc0Vycm9yCisKKyAgICBCYXNlIGNsYXNzIGZvciBhbGwgb3RoZXIgZXhjZXB0aW9ucyBmcm9tIHRoaXMgbW9kdWxlLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZXhjZXB0aW9uOjogVGltZW91dEV4cGlyZWQKKworICAgIFN1YmNsYXNzIG9mIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAsIHJhaXNlZCB3aGVuIGEgdGltZW91dCBleHBpcmVzCisgICAgd2hpbGUgd2FpdGluZyBmb3IgYSBjaGlsZCBwcm9jZXNzLgorCisgICAgLi4gYXR0cmlidXRlOjogY21kCisKKyAgICAgICAgQ29tbWFuZCB0aGF0IHdhcyB1c2VkIHRvIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzLgorCisgICAgLi4gYXR0cmlidXRlOjogdGltZW91dAorCisgICAgICAgIFRpbWVvdXQgaW4gc2Vjb25kcy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IG91dHB1dAorCisgICAgICAgIE91dHB1dCBvZiB0aGUgY2hpbGQgcHJvY2VzcyBpZiB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkKKyAgICAgICAgOmZ1bmM6YGNoZWNrX291dHB1dGAuICBPdGhlcndpc2UsIGBgTm9uZWBgLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZXhjZXB0aW9uOjogQ2FsbGVkUHJvY2Vzc0Vycm9yCiAKLSAgICBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBwcm9jZXNzIHJ1biBieSA6ZnVuYzpgY2hlY2tfY2FsbGAgb3IKLSAgICA6ZnVuYzpgY2hlY2tfb3V0cHV0YCByZXR1cm5zIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuCisgICAgU3ViY2xhc3Mgb2YgOmV4YzpgU3VicHJvY2Vzc0Vycm9yYCwgcmFpc2VkIHdoZW4gYSBwcm9jZXNzIHJ1biBieQorICAgIDpmdW5jOmBjaGVja19jYWxsYCBvciA6ZnVuYzpgY2hlY2tfb3V0cHV0YCByZXR1cm5zIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuCiAKICAgICAuLiBhdHRyaWJ1dGU6OiByZXR1cm5jb2RlCiAKQEAgLTIxNiwyNSArMjc2LDI3IEBACiAKICAgICpzdGRpbiosICpzdGRvdXQqIGFuZCAqc3RkZXJyKiBzcGVjaWZ5IHRoZSBleGVjdXRlZCBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5wdXQsCiAgICBzdGFuZGFyZCBvdXRwdXQgYW5kIHN0YW5kYXJkIGVycm9yIGZpbGUgaGFuZGxlcywgcmVzcGVjdGl2ZWx5LiAgVmFsaWQgdmFsdWVzCi0gICBhcmUgOmRhdGE6YFBJUEVgLCBhbiBleGlzdGluZyBmaWxlIGRlc2NyaXB0b3IgKGEgcG9zaXRpdmUgaW50ZWdlciksIGFuCi0gICBleGlzdGluZyBmaWxlIG9iamVjdCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgIGluZGljYXRlcyB0aGF0IGEgbmV3IHBpcGUKLSAgIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIFdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YgYGBOb25lYGAsIG5vCi0gICByZWRpcmVjdGlvbiB3aWxsIG9jY3VyOyB0aGUgY2hpbGQncyBmaWxlIGhhbmRsZXMgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSB0aGUKLSAgIHBhcmVudC4gIEFkZGl0aW9uYWxseSwgKnN0ZGVyciogY2FuIGJlIDpkYXRhOmBTVERPVVRgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdAotICAgdGhlIHN0ZGVyciBkYXRhIGZyb20gdGhlIGNoaWxkIHByb2Nlc3Mgc2hvdWxkIGJlIGNhcHR1cmVkIGludG8gdGhlIHNhbWUgZmlsZQotICAgaGFuZGxlIGFzIGZvciBzdGRvdXQuCisgICBhcmUgOmRhdGE6YFBJUEVgLCA6ZGF0YTpgREVWTlVMTGAsIGFuIGV4aXN0aW5nIGZpbGUgZGVzY3JpcHRvciAoYSBwb3NpdGl2ZQorICAgaW50ZWdlciksIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCBhbmQgYGBOb25lYGAuICA6ZGF0YTpgUElQRWAgaW5kaWNhdGVzCisgICB0aGF0IGEgbmV3IHBpcGUgdG8gdGhlIGNoaWxkIHNob3VsZCBiZSBjcmVhdGVkLiAgOmRhdGE6YERFVk5VTExgIGluZGljYXRlcworICAgdGhhdCB0aGUgc3BlY2lhbCBmaWxlIDpkYXRhOmBvcy5kZXZudWxsYCB3aWxsIGJlIHVzZWQuICBXaXRoIHRoZSBkZWZhdWx0CisgICBzZXR0aW5ncyBvZiBgYE5vbmVgYCwgbm8gcmVkaXJlY3Rpb24gd2lsbCBvY2N1cjsgdGhlIGNoaWxkJ3MgZmlsZSBoYW5kbGVzCisgICB3aWxsIGJlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQuICBBZGRpdGlvbmFsbHksICpzdGRlcnIqIGNhbiBiZQorICAgOmRhdGE6YFNURE9VVGAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBzdGRlcnIgZGF0YSBmcm9tIHRoZSBjaGlsZAorICAgcHJvY2VzcyBzaG91bGQgYmUgY2FwdHVyZWQgaW50byB0aGUgc2FtZSBmaWxlIGhhbmRsZSBhcyBmb3IgKnN0ZG91dCouCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBzdWJwcm9jZXNzIG1vZHVsZQogCi0gICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KgotICAgYW5kICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzIHRleHQgc3RyZWFtcyBpbiA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYAotICAgbW9kZSB1c2luZyB0aGUgZW5jb2RpbmcgcmV0dXJuZWQgYnkgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZ2AuCi0gICBGb3IgKnN0ZGluKiwgbGluZSBlbmRpbmcgY2hhcmFjdGVycyBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQKLSAgIHRvIHRoZSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yIDpkYXRhOmBvcy5saW5lc2VwYC4gIEZvciAqc3Rkb3V0KiBhbmQKLSAgICpzdGRlcnIqLCBhbGwgbGluZSBlbmRpbmdzIGluIHRoZSBvdXRwdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYGAnXG4nYGAuCi0gICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAKLSAgIGNsYXNzIHdoZW4gdGhlICpuZXdsaW5lKiBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCisgICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQKKyAgICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzIHRleHQgc3RyZWFtcyBpbiA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBtb2RlCisgICB1c2luZyB0aGUgZW5jb2RpbmcgcmV0dXJuZWQgYnkgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKKyAgIDxsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2Rpbmc+YC4gIEZvciAqc3RkaW4qLCBsaW5lIGVuZGluZyBjaGFyYWN0ZXJzCisgICBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IKKyAgIDpkYXRhOmBvcy5saW5lc2VwYC4gIEZvciAqc3Rkb3V0KiBhbmQgKnN0ZGVyciosIGFsbCBsaW5lIGVuZGluZ3MgaW4gdGhlCisgICBvdXRwdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYGAnXG4nYGAuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICBkb2N1bWVudGF0aW9uIG9mIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGNsYXNzIHdoZW4gdGhlICpuZXdsaW5lKgorICAgYXJndW1lbnQgdG8gaXRzIGNvbnN0cnVjdG9yIGlzIGBgTm9uZWBgLgogCiAgICAuLiBub3RlOjoKIApAQCAtMjUwLDYgKzMxMiwxMiBAQAogICAgYWNjZXNzIHRvIG90aGVyIHNoZWxsIGZlYXR1cmVzIHN1Y2ggYXMgZmlsZW5hbWUgd2lsZGNhcmRzLCBzaGVsbCBwaXBlcyBhbmQKICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGV4cGFuc2lvbi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFdoZW4gKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZSBjbGFzcyB1c2VzIHRoZSBlbmNvZGluZworICAgICAgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgPGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZz5gCisgICAgICBpbnN0ZWFkIG9mIGBgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKClgYC4gIFNlZSB0aGUKKyAgICAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjaGFuZ2UuCisKICAgIC4uIHdhcm5pbmc6OgogCiAgICAgICBFeGVjdXRpbmcgc2hlbGwgY29tbWFuZHMgdGhhdCBpbmNvcnBvcmF0ZSB1bnNhbml0aXplZCBpbnB1dCBmcm9tIGFuCkBAIC0zNjUsMTMgKzQzMywxNCBAQAogCiAgICAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogc3BlY2lmeSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0LAogICAgc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZCBlcnJvciBmaWxlIGhhbmRsZXMsIHJlc3BlY3RpdmVseS4gIFZhbGlkIHZhbHVlcwotICAgYXJlIDpkYXRhOmBQSVBFYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlIGludGVnZXIpLCBhbgotICAgZXhpc3RpbmcgOnRlcm06YGZpbGUgb2JqZWN0YCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgIGluZGljYXRlcyB0aGF0IGEKLSAgIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIFdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YKLSAgIGBgTm9uZWBgLCBubyByZWRpcmVjdGlvbiB3aWxsIG9jY3VyOyB0aGUgY2hpbGQncyBmaWxlIGhhbmRsZXMgd2lsbCBiZQotICAgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudC4gIEFkZGl0aW9uYWxseSwgKnN0ZGVyciogY2FuIGJlIDpkYXRhOmBTVERPVVRgLAotICAgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIHN0ZGVyciBkYXRhIGZyb20gdGhlIGFwcGxpY2F0aW9ucyBzaG91bGQgYmUKLSAgIGNhcHR1cmVkIGludG8gdGhlIHNhbWUgZmlsZSBoYW5kbGUgYXMgZm9yIHN0ZG91dC4KKyAgIGFyZSA6ZGF0YTpgUElQRWAsIDpkYXRhOmBERVZOVUxMYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlCisgICBpbnRlZ2VyKSwgYW4gZXhpc3RpbmcgOnRlcm06YGZpbGUgb2JqZWN0YCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgCisgICBpbmRpY2F0ZXMgdGhhdCBhIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIDpkYXRhOmBERVZOVUxMYAorICAgaW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpYWwgZmlsZSA6ZGF0YTpgb3MuZGV2bnVsbGAgd2lsbCBiZSB1c2VkLiBXaXRoIHRoZQorICAgZGVmYXVsdCBzZXR0aW5ncyBvZiBgYE5vbmVgYCwgbm8gcmVkaXJlY3Rpb24gd2lsbCBvY2N1cjsgdGhlIGNoaWxkJ3MgZmlsZQorICAgaGFuZGxlcyB3aWxsIGJlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQuICBBZGRpdGlvbmFsbHksICpzdGRlcnIqIGNhbiBiZQorICAgOmRhdGE6YFNURE9VVGAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBzdGRlcnIgZGF0YSBmcm9tIHRoZSBhcHBsaWNhdGlvbnMKKyAgIHNob3VsZCBiZSBjYXB0dXJlZCBpbnRvIHRoZSBzYW1lIGZpbGUgaGFuZGxlIGFzIGZvciBzdGRvdXQuCiAKICAgIElmICpwcmVleGVjX2ZuKiBpcyBzZXQgdG8gYSBjYWxsYWJsZSBvYmplY3QsIHRoaXMgb2JqZWN0IHdpbGwgYmUgY2FsbGVkIGluIHRoZQogICAgY2hpbGQgcHJvY2VzcyBqdXN0IGJlZm9yZSB0aGUgY2hpbGQgaXMgZXhlY3V0ZWQuCkBAIC00ODEsNiArNTUwLDE1IEBACiA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIGlmIHRoZSBjYWxsZWQgcHJvY2VzcyByZXR1cm5zIGEgbm9uLXplcm8gcmV0dXJuCiBjb2RlLgogCitBbGwgb2YgdGhlIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB0aGF0IGFjY2VwdCBhICp0aW1lb3V0KiBwYXJhbWV0ZXIsIHN1Y2ggYXMKKzpmdW5jOmBjYWxsYCBhbmQgOm1ldGg6YFBvcGVuLmNvbW11bmljYXRlYCB3aWxsIHJhaXNlIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBpZgordGhlIHRpbWVvdXQgZXhwaXJlcyBiZWZvcmUgdGhlIHByb2Nlc3MgZXhpdHMuCisKK0V4Y2VwdGlvbnMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBhbGwgaW5oZXJpdCBmcm9tIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAgYmFzZSBjbGFzcyB3YXMgYWRkZWQuCisKIAogU2VjdXJpdHkKIF5eXl5eXl5eCkBAIC01MDQsMTEgKzU4MiwxNSBAQAogICAgYXR0cmlidXRlLgogCiAKLS4uIG1ldGhvZDo6IFBvcGVuLndhaXQoKQorLi4gbWV0aG9kOjogUG9wZW4ud2FpdCh0aW1lb3V0PU5vbmUpCiAKICAgIFdhaXQgZm9yIGNoaWxkIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgU2V0IGFuZCByZXR1cm4gOmF0dHI6YHJldHVybmNvZGVgCiAgICBhdHRyaWJ1dGUuCiAKKyAgIElmIHRoZSBwcm9jZXNzIGRvZXMgbm90IHRlcm1pbmF0ZSBhZnRlciAqdGltZW91dCogc2Vjb25kcywgcmFpc2UgYQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbi4gIEl0IGlzIHNhZmUgdG8gY2F0Y2ggdGhpcyBleGNlcHRpb24gYW5kCisgICByZXRyeSB0aGUgd2FpdC4KKwogICAgLi4gd2FybmluZzo6CiAKICAgICAgIFRoaXMgd2lsbCBkZWFkbG9jayB3aGVuIHVzaW5nIGBgc3Rkb3V0PVBJUEVgYCBhbmQvb3IKQEAgLTUxNiwxMyArNTk4LDE3IEBACiAgICAgICBhIHBpcGUgc3VjaCB0aGF0IGl0IGJsb2NrcyB3YWl0aW5nIGZvciB0aGUgT1MgcGlwZSBidWZmZXIgdG8KICAgICAgIGFjY2VwdCBtb3JlIGRhdGEuICBVc2UgOm1ldGg6YGNvbW11bmljYXRlYCB0byBhdm9pZCB0aGF0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KIAotLi4gbWV0aG9kOjogUG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9Tm9uZSkKKworLi4gbWV0aG9kOjogUG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9Tm9uZSwgdGltZW91dD1Ob25lKQogCiAgICBJbnRlcmFjdCB3aXRoIHByb2Nlc3M6IFNlbmQgZGF0YSB0byBzdGRpbi4gIFJlYWQgZGF0YSBmcm9tIHN0ZG91dCBhbmQgc3RkZXJyLAotICAgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yIHByb2Nlc3MgdG8gdGVybWluYXRlLiBUaGUgb3B0aW9uYWwKLSAgICppbnB1dCogYXJndW1lbnQgc2hvdWxkIGJlIGEgYnl0ZSBzdHJpbmcgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IKLSAgIGBgTm9uZWBgLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KKyAgIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbAorICAgKmlucHV0KiBhcmd1bWVudCBzaG91bGQgYmUgZGF0YSB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvcgorICAgYGBOb25lYGAsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGNoaWxkLiAgVGhlIHR5cGUgb2YgKmlucHV0KgorICAgbXVzdCBiZSBieXRlcyBvciwgaWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogd2FzIGBgVHJ1ZWBgLCBhIHN0cmluZy4KIAogICAgOm1ldGg6YGNvbW11bmljYXRlYCByZXR1cm5zIGEgdHVwbGUgYGAoc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSlgYC4KIApAQCAtNTMxLDExICs2MTcsMjkgQEAKICAgIGBgTm9uZWBgIGluIHRoZSByZXN1bHQgdHVwbGUsIHlvdSBuZWVkIHRvIGdpdmUgYGBzdGRvdXQ9UElQRWBgIGFuZC9vcgogICAgYGBzdGRlcnI9UElQRWBgIHRvby4KIAorICAgSWYgdGhlIHByb2Nlc3MgZG9lcyBub3QgdGVybWluYXRlIGFmdGVyICp0aW1lb3V0KiBzZWNvbmRzLCBhCisgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiAgQ2F0Y2hpbmcgdGhpcyBleGNlcHRpb24gYW5kCisgICByZXRyeWluZyBjb21tdW5pY2F0aW9uIHdpbGwgbm90IGxvc2UgYW55IG91dHB1dC4KKworICAgVGhlIGNoaWxkIHByb2Nlc3MgaXMgbm90IGtpbGxlZCBpZiB0aGUgdGltZW91dCBleHBpcmVzLCBzbyBpbiBvcmRlciB0bworICAgY2xlYW51cCBwcm9wZXJseSBhIHdlbGwtYmVoYXZlZCBhcHBsaWNhdGlvbiBzaG91bGQga2lsbCB0aGUgY2hpbGQgcHJvY2VzcyBhbmQKKyAgIGZpbmlzaCBjb21tdW5pY2F0aW9uOjoKKworICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oLi4uKQorICAgICAgdHJ5OgorICAgICAgICAgIG91dHMsIGVycnMgPSBwcm9jLmNvbW11bmljYXRlKHRpbWVvdXQ9MTUpCisgICAgICBleGNlcHQgVGltZW91dEV4cGlyZWQ6CisgICAgICAgICAgcHJvYy5raWxsKCkKKyAgICAgICAgICBvdXRzLCBlcnJzID0gcHJvYy5jb21tdW5pY2F0ZSgpCisKICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGUgZGF0YSByZWFkIGlzIGJ1ZmZlcmVkIGluIG1lbW9yeSwgc28gZG8gbm90IHVzZSB0aGlzIG1ldGhvZCBpZiB0aGUgZGF0YQogICAgICAgc2l6ZSBpcyBsYXJnZSBvciB1bmxpbWl0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCiAKIC4uIG1ldGhvZDo6IFBvcGVuLnNlbmRfc2lnbmFsKHNpZ25hbCkKIApAQCAtOTc3LDMgKzEwODEsOSBAQAogICAgYmFja3NsYXNoLiAgSWYgdGhlIG51bWJlciBvZiBiYWNrc2xhc2hlcyBpcyBvZGQsIHRoZSBsYXN0CiAgICBiYWNrc2xhc2ggZXNjYXBlcyB0aGUgbmV4dCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgYXMKICAgIGRlc2NyaWJlZCBpbiBydWxlIDMuCisKKworLi4gc2VlYWxzbzo6CisKKyAgIDptb2Q6YHNobGV4YAorICAgICAgTW9kdWxlIHdoaWNoIHByb3ZpZGVzIGZ1bmN0aW9uIHRvIHBhcnNlIGFuZCBlc2NhcGUgY29tbWFuZCBsaW5lcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5cy5yc3QgYi9Eb2MvbGlicmFyeS9zeXMucnN0CmluZGV4IDBlNGFkZWMuLmNkNmQ0YmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzLnJzdApAQCAtMjksNiArMjksMzMgQEAKICAgIGNvbW1hbmQgbGluZSwgc2VlIHRoZSA6bW9kOmBmaWxlaW5wdXRgIG1vZHVsZS4KIAogCisuLiBkYXRhOjogYmFzZV9leGVjX3ByZWZpeAorCisgICBTZXQgZHVyaW5nIFB5dGhvbiBzdGFydHVwLCBiZWZvcmUgYGBzaXRlLnB5YGAgaXMgcnVuLCB0byB0aGUgc2FtZSB2YWx1ZSBhcworICAgOmRhdGE6YGV4ZWNfcHJlZml4YC4gSWYgbm90IHJ1bm5pbmcgaW4gYQorICAgOnJlZjpgdmlydHVhbCBlbnZpcm9ubWVudCA8dmVudi1kZWY+YCwgdGhlIHZhbHVlcyB3aWxsIHN0YXkgdGhlIHNhbWU7IGlmCisgICBgYHNpdGUucHlgYCBmaW5kcyB0aGF0IGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBpbiB1c2UsIHRoZSB2YWx1ZXMgb2YKKyAgIDpkYXRhOmBwcmVmaXhgIGFuZCA6ZGF0YTpgZXhlY19wcmVmaXhgIHdpbGwgYmUgY2hhbmdlZCB0byBwb2ludCB0byB0aGUKKyAgIHZpcnR1YWwgZW52aXJvbm1lbnQsIHdoZXJlYXMgOmRhdGE6YGJhc2VfcHJlZml4YCBhbmQKKyAgIDpkYXRhOmBiYXNlX2V4ZWNfcHJlZml4YCB3aWxsIHJlbWFpbiBwb2ludGluZyB0byB0aGUgYmFzZSBQeXRob24KKyAgIGluc3RhbGxhdGlvbiAodGhlIG9uZSB3aGljaCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCB3YXMgY3JlYXRlZCBmcm9tKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IGJhc2VfcHJlZml4CisKKyAgIFNldCBkdXJpbmcgUHl0aG9uIHN0YXJ0dXAsIGJlZm9yZSBgYHNpdGUucHlgYCBpcyBydW4sIHRvIHRoZSBzYW1lIHZhbHVlIGFzCisgICA6ZGF0YTpgcHJlZml4YC4gSWYgbm90IHJ1bm5pbmcgaW4gYSA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50IDx2ZW52LWRlZj5gLCB0aGUgdmFsdWVzCisgICB3aWxsIHN0YXkgdGhlIHNhbWU7IGlmIGBgc2l0ZS5weWBgIGZpbmRzIHRoYXQgYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGluCisgICB1c2UsIHRoZSB2YWx1ZXMgb2YgOmRhdGE6YHByZWZpeGAgYW5kIDpkYXRhOmBleGVjX3ByZWZpeGAgd2lsbCBiZSBjaGFuZ2VkIHRvCisgICBwb2ludCB0byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCwgd2hlcmVhcyA6ZGF0YTpgYmFzZV9wcmVmaXhgIGFuZAorICAgOmRhdGE6YGJhc2VfZXhlY19wcmVmaXhgIHdpbGwgcmVtYWluIHBvaW50aW5nIHRvIHRoZSBiYXNlIFB5dGhvbgorICAgaW5zdGFsbGF0aW9uICh0aGUgb25lIHdoaWNoIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IHdhcyBjcmVhdGVkIGZyb20pLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBkYXRhOjogYnl0ZW9yZGVyCiAKICAgIEFuIGluZGljYXRvciBvZiB0aGUgbmF0aXZlIGJ5dGUgb3JkZXIuICBUaGlzIHdpbGwgaGF2ZSB0aGUgdmFsdWUgYGAnYmlnJ2BgIG9uCkBAIC04MCw2ICsxMDcsMjIgQEAKICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgZm9yIGludGVybmFsIGFuZCBzcGVjaWFsaXplZCBwdXJwb3NlcyBvbmx5LgogCiAKKy4uIGZ1bmN0aW9uOjogX2RlYnVnbWFsbG9jc3RhdHMoKQorCisgICBQcmludCBsb3ctbGV2ZWwgaW5mb3JtYXRpb24gdG8gc3RkZXJyIGFib3V0IHRoZSBzdGF0ZSBvZiBDUHl0aG9uJ3MgbWVtb3J5CisgICBhbGxvY2F0b3IuCisKKyAgIElmIFB5dGhvbiBpcyBjb25maWd1cmVkIC0td2l0aC1weWRlYnVnLCBpdCBhbHNvIHBlcmZvcm1zIHNvbWUgZXhwZW5zaXZlCisgICBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVja3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBpbXBsLWRldGFpbDo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbi4gIFRoZSBleGFjdCBvdXRwdXQgZm9ybWF0IGlzIG5vdAorICAgICAgZGVmaW5lZCBoZXJlLCBhbmQgbWF5IGNoYW5nZS4KKworCiAuLiBkYXRhOjogZGxsaGFuZGxlCiAKICAgIEludGVnZXIgc3BlY2lmeWluZyB0aGUgaGFuZGxlIG9mIHRoZSBQeXRob24gRExMLiBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCkBAIC0xOTksNiArMjQyLDExIEBACiAgICBpbnN0YWxsZWQgaW4gOmZpbGU6YHtleGVjX3ByZWZpeH0vbGliL3B5dGhvbntYLll9L2xpYi1keW5sb2FkYCwgd2hlcmUgKlguWSoKICAgIGlzIHRoZSB2ZXJzaW9uIG51bWJlciBvZiBQeXRob24sIGZvciBleGFtcGxlIGBgMy4yYGAuCiAKKyAgIC4uIG5vdGU6OiBJZiBhIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnQgPHZlbnYtZGVmPmAgaXMgaW4gZWZmZWN0LCB0aGlzCisgICAgICB2YWx1ZSB3aWxsIGJlIGNoYW5nZWQgaW4gYGBzaXRlLnB5YGAgdG8gcG9pbnQgdG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICAgICBUaGUgdmFsdWUgZm9yIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLCB2aWEKKyAgICAgIDpkYXRhOmBiYXNlX2V4ZWNfcHJlZml4YC4KKwogCiAuLiBkYXRhOjogZXhlY3V0YWJsZQogCkBAIC0yMzUsMTQgKzI4MywxMyBAQAogCiAuLiBkYXRhOjogZmxhZ3MKIAotICAgVGhlIHN0cnVjdCBzZXF1ZW5jZSAqZmxhZ3MqIGV4cG9zZXMgdGhlIHN0YXR1cyBvZiBjb21tYW5kIGxpbmUgZmxhZ3MuIFRoZQotICAgYXR0cmlidXRlcyBhcmUgcmVhZCBvbmx5LgorICAgVGhlIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgICpmbGFncyogZXhwb3NlcyB0aGUgc3RhdHVzIG9mIGNvbW1hbmQgbGluZQorICAgZmxhZ3MuIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuCiAKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBhdHRyaWJ1dGUgICAgICAgICAgICAgICAgICAgICBmbGFnCiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgOmNvbnN0OmBkZWJ1Z2AgICAgICAgICAgICAgICAgOm9wdGlvbjpgLWRgCi0gICA6Y29uc3Q6YGRpdmlzaW9uX3dhcm5pbmdgICAgICA6b3B0aW9uOmAtUWAKICAgIDpjb25zdDpgaW5zcGVjdGAgICAgICAgICAgICAgIDpvcHRpb246YC1pYAogICAgOmNvbnN0OmBpbnRlcmFjdGl2ZWAgICAgICAgICAgOm9wdGlvbjpgLWlgCiAgICA6Y29uc3Q6YG9wdGltaXplYCAgICAgICAgICAgICA6b3B0aW9uOmAtT2Agb3IgOm9wdGlvbjpgLU9PYApAQCAtMjYyLDE1ICszMDksMTggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMi4zCiAgICAgICBUaGUgYGBoYXNoX3JhbmRvbWl6YXRpb25gYCBhdHRyaWJ1dGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIG9ic29sZXRlIGBgZGl2aXNpb25fd2FybmluZ2BgIGF0dHJpYnV0ZS4KKwogCiAuLiBkYXRhOjogZmxvYXRfaW5mbwogCi0gICBBIHN0cnVjdHNlcSBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmbG9hdCB0eXBlLiBJdCBjb250YWlucyBsb3cgbGV2ZWwKLSAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmVjaXNpb24gYW5kIGludGVybmFsIHJlcHJlc2VudGF0aW9uLiAgVGhlIHZhbHVlcwotICAgY29ycmVzcG9uZCB0byB0aGUgdmFyaW91cyBmbG9hdGluZy1wb2ludCBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgc3RhbmRhcmQKLSAgIGhlYWRlciBmaWxlIDpmaWxlOmBmbG9hdC5oYCBmb3IgdGhlICdDJyBwcm9ncmFtbWluZyBsYW5ndWFnZTsgc2VlIHNlY3Rpb24KLSAgIDUuMi40LjIuMiBvZiB0aGUgMTk5OSBJU08vSUVDIEMgc3RhbmRhcmQgW0M5OV1fLCAnQ2hhcmFjdGVyaXN0aWNzIG9mCi0gICBmbG9hdGluZyB0eXBlcycsIGZvciBkZXRhaWxzLgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmbG9hdCB0eXBlLiBJdAorICAgY29udGFpbnMgbG93IGxldmVsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmVjaXNpb24gYW5kIGludGVybmFsCisgICByZXByZXNlbnRhdGlvbi4gIFRoZSB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgdmFyaW91cyBmbG9hdGluZy1wb2ludAorICAgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlIHN0YW5kYXJkIGhlYWRlciBmaWxlIDpmaWxlOmBmbG9hdC5oYCBmb3IgdGhlICdDJworICAgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHNlZSBzZWN0aW9uIDUuMi40LjIuMiBvZiB0aGUgMTk5OSBJU08vSUVDIEMgc3RhbmRhcmQKKyAgIFtDOTldXywgJ0NoYXJhY3RlcmlzdGljcyBvZiBmbG9hdGluZyB0eXBlcycsIGZvciBkZXRhaWxzLgogCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGF0dHJpYnV0ZSAgICAgICAgICAgfCBmbG9hdC5oIG1hY3JvICB8IGV4cGxhbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC00MDksNiArNDU5LDkgQEAKICAgIGRvZXMgbm90IGhhdmUgdG8gaG9sZCB0cnVlIGZvciB0aGlyZC1wYXJ0eSBleHRlbnNpb25zIGFzIGl0IGlzIGltcGxlbWVudGF0aW9uCiAgICBzcGVjaWZpYy4KIAorICAgT25seSB0aGUgbWVtb3J5IGNvbnN1bXB0aW9uIGRpcmVjdGx5IGF0dHJpYnV0ZWQgdG8gdGhlIG9iamVjdCBpcworICAgYWNjb3VudGVkIGZvciwgbm90IHRoZSBtZW1vcnkgY29uc3VtcHRpb24gb2Ygb2JqZWN0cyBpdCByZWZlcnMgdG8uCisKICAgIElmIGdpdmVuLCAqZGVmYXVsdCogd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUgb2JqZWN0IGRvZXMgbm90IHByb3ZpZGUgbWVhbnMgdG8KICAgIHJldHJpZXZlIHRoZSBzaXplLiAgT3RoZXJ3aXNlIGEgOmV4YzpgVHlwZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIApAQCAtNTIwLDggKzU3Myw5IEBACiAKIC4uIGRhdGE6OiBoYXNoX2luZm8KIAotICAgQSBzdHJ1Y3RzZXEgZ2l2aW5nIHBhcmFtZXRlcnMgb2YgdGhlIG51bWVyaWMgaGFzaCBpbXBsZW1lbnRhdGlvbi4gIEZvcgotICAgbW9yZSBkZXRhaWxzIGFib3V0IGhhc2hpbmcgb2YgbnVtZXJpYyB0eXBlcywgc2VlIDpyZWY6YG51bWVyaWMtaGFzaGAuCisgICBBIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgIGdpdmluZyBwYXJhbWV0ZXJzIG9mIHRoZSBudW1lcmljIGhhc2gKKyAgIGltcGxlbWVudGF0aW9uLiAgRm9yIG1vcmUgZGV0YWlscyBhYm91dCBoYXNoaW5nIG9mIG51bWVyaWMgdHlwZXMsIHNlZQorICAgOnJlZjpgbnVtZXJpYy1oYXNoYC4KIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYXR0cmlidXRlICAgICAgICAgICB8IGV4cGxhbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC01NTYsOCArNjEwLDggQEAKIAogICAgVGhpcyBpcyBjYWxsZWQgYGBoZXh2ZXJzaW9uYGAgc2luY2UgaXQgb25seSByZWFsbHkgbG9va3MgbWVhbmluZ2Z1bCB3aGVuIHZpZXdlZAogICAgYXMgdGhlIHJlc3VsdCBvZiBwYXNzaW5nIGl0IHRvIHRoZSBidWlsdC1pbiA6ZnVuYzpgaGV4YCBmdW5jdGlvbi4gIFRoZQotICAgc3RydWN0IHNlcXVlbmNlICA6ZGF0YTpgc3lzLnZlcnNpb25faW5mb2AgbWF5IGJlIHVzZWQgZm9yIGEgbW9yZSBodW1hbi1mcmllbmRseQotICAgZW5jb2Rpbmcgb2YgdGhlIHNhbWUgaW5mb3JtYXRpb24uCisgICA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCAgOmRhdGE6YHN5cy52ZXJzaW9uX2luZm9gIG1heSBiZSB1c2VkIGZvciBhIG1vcmUKKyAgIGh1bWFuLWZyaWVuZGx5IGVuY29kaW5nIG9mIHRoZSBzYW1lIGluZm9ybWF0aW9uLgogCiAgICBUaGUgYGBoZXh2ZXJzaW9uYGAgaXMgYSAzMi1iaXQgbnVtYmVyIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAKQEAgLTU4MywxMCArNjM3LDUxIEBACiAKICAgIFRodXMgYGAyLjEuMGEzYGAgaXMgaGV4dmVyc2lvbiBgYDB4MDIwMTAwYTNgYC4KIAorCisuLiBkYXRhOjogaW1wbGVtZW50YXRpb24KKworICAgQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICAgY3VycmVudGx5IHJ1bm5pbmcgUHl0aG9uIGludGVycHJldGVyLiAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZQorICAgcmVxdWlyZWQgdG8gZXhpc3QgaW4gYWxsIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICpuYW1lKiBpcyB0aGUgaW1wbGVtZW50YXRpb24ncyBpZGVudGlmaWVyLCBlLmcuIGBgJ2NweXRob24nYGAuICBUaGUgYWN0dWFsCisgICBzdHJpbmcgaXMgZGVmaW5lZCBieSB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLCBidXQgaXQgaXMgZ3VhcmFudGVlZCB0byBiZQorICAgbG93ZXIgY2FzZS4KKworICAgKnZlcnNpb24qIGlzIGEgbmFtZWQgdHVwbGUsIGluIHRoZSBzYW1lIGZvcm1hdCBhcworICAgOmRhdGE6YHN5cy52ZXJzaW9uX2luZm9gLiAgSXQgcmVwcmVzZW50cyB0aGUgdmVyc2lvbiBvZiB0aGUgUHl0aG9uCisgICAqaW1wbGVtZW50YXRpb24qLiAgVGhpcyBoYXMgYSBkaXN0aW5jdCBtZWFuaW5nIGZyb20gdGhlIHNwZWNpZmljCisgICB2ZXJzaW9uIG9mIHRoZSBQeXRob24gKmxhbmd1YWdlKiB0byB3aGljaCB0aGUgY3VycmVudGx5IHJ1bm5pbmcKKyAgIGludGVycHJldGVyIGNvbmZvcm1zLCB3aGljaCBgYHN5cy52ZXJzaW9uX2luZm9gYCByZXByZXNlbnRzLiAgRm9yCisgICBleGFtcGxlLCBmb3IgUHlQeSAxLjggYGBzeXMuaW1wbGVtZW50YXRpb24udmVyc2lvbmBgIG1pZ2h0IGJlCisgICBgYHN5cy52ZXJzaW9uX2luZm8oMSwgOCwgMCwgJ2ZpbmFsJywgMClgYCwgd2hlcmVhcyBgYHN5cy52ZXJzaW9uX2luZm9gYAorICAgd291bGQgYmUgYGBzeXMudmVyc2lvbl9pbmZvKDIsIDcsIDIsICdmaW5hbCcsIDApYGAuICBGb3IgQ1B5dGhvbiB0aGV5CisgICBhcmUgdGhlIHNhbWUgdmFsdWUsIHNpbmNlIGl0IGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCisKKyAgICpoZXh2ZXJzaW9uKiBpcyB0aGUgaW1wbGVtZW50YXRpb24gdmVyc2lvbiBpbiBoZXhhZGVjaW1hbCBmb3JtYXQsIGxpa2UKKyAgIDpkYXRhOmBzeXMuaGV4dmVyc2lvbmAuCisKKyAgICpjYWNoZV90YWcqIGlzIHRoZSB0YWcgdXNlZCBieSB0aGUgaW1wb3J0IG1hY2hpbmVyeSBpbiB0aGUgZmlsZW5hbWVzIG9mCisgICBjYWNoZWQgbW9kdWxlcy4gIEJ5IGNvbnZlbnRpb24sIGl0IHdvdWxkIGJlIGEgY29tcG9zaXRlIG9mIHRoZQorICAgaW1wbGVtZW50YXRpb24ncyBuYW1lIGFuZCB2ZXJzaW9uLCBsaWtlIGBgJ2NweXRob24tMzMnYGAuICBIb3dldmVyLCBhCisgICBQeXRob24gaW1wbGVtZW50YXRpb24gbWF5IHVzZSBzb21lIG90aGVyIHZhbHVlIGlmIGFwcHJvcHJpYXRlLiAgSWYKKyAgIGBgY2FjaGVfdGFnYGAgaXMgc2V0IHRvIGBgTm9uZWBgLCBpdCBpbmRpY2F0ZXMgdGhhdCBtb2R1bGUgY2FjaGluZyBzaG91bGQKKyAgIGJlIGRpc2FibGVkLgorCisgICA6ZGF0YTpgc3lzLmltcGxlbWVudGF0aW9uYCBtYXkgY29udGFpbiBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgc3BlY2lmaWMgdG8KKyAgIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24uICBUaGVzZSBub24tc3RhbmRhcmQgYXR0cmlidXRlcyBtdXN0IHN0YXJ0IHdpdGgKKyAgIGFuIHVuZGVyc2NvcmUsIGFuZCBhcmUgbm90IGRlc2NyaWJlZCBoZXJlLiAgUmVnYXJkbGVzcyBvZiBpdHMgY29udGVudHMsCisgICA6ZGF0YTpgc3lzLmltcGxlbWVudGF0aW9uYCB3aWxsIG5vdCBjaGFuZ2UgZHVyaW5nIGEgcnVuIG9mIHRoZSBpbnRlcnByZXRlciwKKyAgIG5vciBiZXR3ZWVuIGltcGxlbWVudGF0aW9uIHZlcnNpb25zLiAgKEl0IG1heSBjaGFuZ2UgYmV0d2VlbiBQeXRob24KKyAgIGxhbmd1YWdlIHZlcnNpb25zLCBob3dldmVyLikgIFNlZSBgUEVQIDQyMWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGRhdGE6OiBpbnRfaW5mbwogCi0gICBBIHN0cnVjdCBzZXF1ZW5jZSB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IFB5dGhvbidzCi0gICBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2Vycy4gIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuCisgICBBIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgIHRoYXQgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgUHl0aG9uJ3MgaW50ZXJuYWwKKyAgIHJlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzLiAgVGhlIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4KIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgfCBFeHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC02NDEsOSArNzM2LDEzIEBACiAKIC4uIGRhdGE6OiBtYXh1bmljb2RlCiAKLSAgIEFuIGludGVnZXIgZ2l2aW5nIHRoZSBsYXJnZXN0IHN1cHBvcnRlZCBjb2RlIHBvaW50IGZvciBhIFVuaWNvZGUgY2hhcmFjdGVyLiAgVGhlCi0gICB2YWx1ZSBvZiB0aGlzIGRlcGVuZHMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHdoZXRoZXIgVW5pY29kZQotICAgY2hhcmFjdGVycyBhcmUgc3RvcmVkIGFzIFVDUy0yIG9yIFVDUy00LgorICAgQW4gaW50ZWdlciBnaXZpbmcgdGhlIHZhbHVlIG9mIHRoZSBsYXJnZXN0IFVuaWNvZGUgY29kZSBwb2ludCwKKyAgIGkuZS4gYGAxMTE0MTExYGAgKGBgMHgxMEZGRkZgYCBpbiBoZXhhZGVjaW1hbCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBCZWZvcmUgOnBlcDpgMzkzYCwgYGBzeXMubWF4dW5pY29kZWBgIHVzZWQgdG8gYmUgZWl0aGVyIGBgMHhGRkZGYGAKKyAgICAgIG9yIGBgMHgxMEZGRkZgYCwgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IHNwZWNpZmllZAorICAgICAgd2hldGhlciBVbmljb2RlIGNoYXJhY3RlcnMgd2VyZSBzdG9yZWQgYXMgVUNTLTIgb3IgVUNTLTQuCiAKIAogLi4gZGF0YTo6IG1ldGFfcGF0aApAQCAtNzE4LDM2ICs4MTcsMzUgQEAKICAgIFRoaXMgc3RyaW5nIGNvbnRhaW5zIGEgcGxhdGZvcm0gaWRlbnRpZmllciB0aGF0IGNhbiBiZSB1c2VkIHRvIGFwcGVuZAogICAgcGxhdGZvcm0tc3BlY2lmaWMgY29tcG9uZW50cyB0byA6ZGF0YTpgc3lzLnBhdGhgLCBmb3IgaW5zdGFuY2UuCiAKLSAgIEZvciBtb3N0IFVuaXggc3lzdGVtcywgdGhpcyBpcyB0aGUgbG93ZXJjYXNlZCBPUyBuYW1lIGFzIHJldHVybmVkIGJ5IGBgdW5hbWUKLSAgIC1zYGAgd2l0aCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgdmVyc2lvbiBhcyByZXR1cm5lZCBieSBgYHVuYW1lIC1yYGAgYXBwZW5kZWQsCi0gICBlLmcuIGBgJ3N1bm9zNSdgYCwgKmF0IHRoZSB0aW1lIHdoZW4gUHl0aG9uIHdhcyBidWlsdCouICBVbmxlc3MgeW91IHdhbnQgdG8KLSAgIHRlc3QgZm9yIGEgc3BlY2lmaWMgc3lzdGVtIHZlcnNpb24sIGl0IGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byB1c2UgdGhlCi0gICBmb2xsb3dpbmcgaWRpb206OgorICAgRm9yIFVuaXggc3lzdGVtcywgZXhjZXB0IG9uIExpbnV4LCB0aGlzIGlzIHRoZSBsb3dlcmNhc2VkIE9TIG5hbWUgYXMKKyAgIHJldHVybmVkIGJ5IGBgdW5hbWUgLXNgYCB3aXRoIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSB2ZXJzaW9uIGFzIHJldHVybmVkIGJ5CisgICBgYHVuYW1lIC1yYGAgYXBwZW5kZWQsIGUuZy4gYGAnc3Vub3M1J2BgIG9yIGBgJ2ZyZWVic2Q4J2BgLCAqYXQgdGhlIHRpbWUKKyAgIHdoZW4gUHl0aG9uIHdhcyBidWlsdCouICBVbmxlc3MgeW91IHdhbnQgdG8gdGVzdCBmb3IgYSBzcGVjaWZpYyBzeXN0ZW0KKyAgIHZlcnNpb24sIGl0IGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGZvbGxvd2luZyBpZGlvbTo6CiAKICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJyk6CiAgICAgICAgICAgIyBGcmVlQlNELXNwZWNpZmljIGNvZGUgaGVyZS4uLgogICAgICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKICAgICAgICAgICAjIExpbnV4LXNwZWNpZmljIGNvZGUgaGVyZS4uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMi4yCi0gICAgICBTaW5jZSBsb3RzIG9mIGNvZGUgY2hlY2sgZm9yIGBgc3lzLnBsYXRmb3JtID09ICdsaW51eDInYGAsIGFuZCB0aGVyZSBpcwotICAgICAgbm8gZXNzZW50aWFsIGNoYW5nZSBiZXR3ZWVuIExpbnV4IDIueCBhbmQgMy54LCBgYHN5cy5wbGF0Zm9ybWBgIGlzIGFsd2F5cwotICAgICAgc2V0IHRvIGBgJ2xpbnV4MidgYCwgZXZlbiBvbiBMaW51eCAzLnguICBJbiBQeXRob24gMy4zIGFuZCBsYXRlciwgdGhlCi0gICAgICB2YWx1ZSB3aWxsIGFsd2F5cyBiZSBzZXQgdG8gYGAnbGludXgnYGAsIHNvIGl0IGlzIHJlY29tbWVuZGVkIHRvIGFsd2F5cwotICAgICAgdXNlIHRoZSBgYHN0YXJ0c3dpdGhgYCBpZGlvbSBwcmVzZW50ZWQgYWJvdmUuCi0KICAgIEZvciBvdGhlciBzeXN0ZW1zLCB0aGUgdmFsdWVzIGFyZToKIAotICAgPT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIFN5c3RlbSAgICAgICAgICAgICAgICAgOmRhdGE6YHBsYXRmb3JtYCB2YWx1ZQotICAgPT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIExpbnV4ICgyLnggKmFuZCogMy54KSAgYGAnbGludXgyJ2BgCi0gICBXaW5kb3dzICAgICAgICAgICAgICAgIGBgJ3dpbjMyJ2BgCi0gICBXaW5kb3dzL0N5Z3dpbiAgICAgICAgIGBgJ2N5Z3dpbidgYAotICAgTWFjIE9TIFggICAgICAgICAgICAgICBgYCdkYXJ3aW4nYGAKLSAgIE9TLzIgICAgICAgICAgICAgICAgICAgYGAnb3MyJ2BgCi0gICBPUy8yIEVNWCAgICAgICAgICAgICAgIGBgJ29zMmVteCdgYAotICAgPT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBTeXN0ZW0gICAgICAgICAgIDpkYXRhOmBwbGF0Zm9ybWAgdmFsdWUKKyAgID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBMaW51eCAgICAgICAgICAgIGBgJ2xpbnV4J2BgCisgICBXaW5kb3dzICAgICAgICAgIGBgJ3dpbjMyJ2BgCisgICBXaW5kb3dzL0N5Z3dpbiAgIGBgJ2N5Z3dpbidgYAorICAgTWFjIE9TIFggICAgICAgICBgYCdkYXJ3aW4nYGAKKyAgIE9TLzIgICAgICAgICAgICAgYGAnb3MyJ2BgCisgICBPUy8yIEVNWCAgICAgICAgIGBgJ29zMmVteCdgYAorICAgPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE9uIExpbnV4LCA6YXR0cjpgc3lzLnBsYXRmb3JtYCBkb2Vzbid0IGNvbnRhaW4gdGhlIG1ham9yIHZlcnNpb24gYW55bW9yZS4KKyAgICAgIEl0IGlzIGFsd2F5cyBgYCdsaW51eCdgYCwgaW5zdGVhZCBvZiBgYCdsaW51eDInYGAgb3IgYGAnbGludXgzJ2BgLiAgU2luY2UKKyAgICAgIG9sZGVyIFB5dGhvbiB2ZXJzaW9ucyBpbmNsdWRlIHRoZSB2ZXJzaW9uIG51bWJlciwgaXQgaXMgcmVjb21tZW5kZWQgdG8KKyAgICAgIGFsd2F5cyB1c2UgdGhlIGBgc3RhcnRzd2l0aGBgIGlkaW9tIHByZXNlbnRlZCBhYm92ZS4KIAogICAgLi4gc2VlYWxzbzo6CiAKQEAgLTc2NCwxMSArODYyLDE2IEBACiAgICBpbmRlcGVuZGVudCBQeXRob24gZmlsZXMgYXJlIGluc3RhbGxlZDsgYnkgZGVmYXVsdCwgdGhpcyBpcyB0aGUgc3RyaW5nCiAgICBgYCcvdXNyL2xvY2FsJ2BgLiAgVGhpcyBjYW4gYmUgc2V0IGF0IGJ1aWxkIHRpbWUgd2l0aCB0aGUgYGAtLXByZWZpeGBgCiAgICBhcmd1bWVudCB0byB0aGUgOnByb2dyYW06YGNvbmZpZ3VyZWAgc2NyaXB0LiAgVGhlIG1haW4gY29sbGVjdGlvbiBvZiBQeXRob24KLSAgIGxpYnJhcnkgbW9kdWxlcyBpcyBpbnN0YWxsZWQgaW4gdGhlIGRpcmVjdG9yeSA6ZmlsZTpge3ByZWZpeH0vbGliL3B5dGhvbntYLll9YGAKKyAgIGxpYnJhcnkgbW9kdWxlcyBpcyBpbnN0YWxsZWQgaW4gdGhlIGRpcmVjdG9yeSA6ZmlsZTpge3ByZWZpeH0vbGliL3B5dGhvbntYLll9YAogICAgd2hpbGUgdGhlIHBsYXRmb3JtIGluZGVwZW5kZW50IGhlYWRlciBmaWxlcyAoYWxsIGV4Y2VwdCA6ZmlsZTpgcHljb25maWcuaGApIGFyZQogICAgc3RvcmVkIGluIDpmaWxlOmB7cHJlZml4fS9pbmNsdWRlL3B5dGhvbntYLll9YCwgd2hlcmUgKlguWSogaXMgdGhlIHZlcnNpb24KICAgIG51bWJlciBvZiBQeXRob24sIGZvciBleGFtcGxlIGBgMy4yYGAuCiAKKyAgIC4uIG5vdGU6OiBJZiBhIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnQgPHZlbnYtZGVmPmAgaXMgaW4gZWZmZWN0LCB0aGlzCisgICAgICB2YWx1ZSB3aWxsIGJlIGNoYW5nZWQgaW4gYGBzaXRlLnB5YGAgdG8gcG9pbnQgdG8gdGhlIHZpcnR1YWwKKyAgICAgIGVudmlyb25tZW50LiBUaGUgdmFsdWUgZm9yIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHdpbGwgc3RpbGwgYmUKKyAgICAgIGF2YWlsYWJsZSwgdmlhIDpkYXRhOmBiYXNlX3ByZWZpeGAuCisKIAogLi4gZGF0YTo6IHBzMQogICAgICAgICAgIHBzMgpAQCAtODA2LDExICs5MDksMTEgQEAKICAgIHRoZSBpbnRlcnByZXRlciBsb2FkcyBleHRlbnNpb24gbW9kdWxlcy4gIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyB3aWxsIGVuYWJsZSBhCiAgICBsYXp5IHJlc29sdmluZyBvZiBzeW1ib2xzIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlLCBpZiBjYWxsZWQgYXMKICAgIGBgc3lzLnNldGRsb3BlbmZsYWdzKDApYGAuICBUbyBzaGFyZSBzeW1ib2xzIGFjcm9zcyBleHRlbnNpb24gbW9kdWxlcywgY2FsbCBhcwotICAgYGBzeXMuc2V0ZGxvcGVuZmxhZ3MoY3R5cGVzLlJUTERfR0xPQkFMKWBgLiAgU3ltYm9saWMgbmFtZXMgZm9yIHRoZQotICAgZmxhZyBtb2R1bGVzIGNhbiBiZSBlaXRoZXIgZm91bmQgaW4gdGhlIDptb2Q6YGN0eXBlc2AgbW9kdWxlLCBvciBpbiB0aGUgOm1vZDpgRExGQ05gCi0gICBtb2R1bGUuIElmIDptb2Q6YERMRkNOYCBpcyBub3QgYXZhaWxhYmxlLCBpdCBjYW4gYmUgZ2VuZXJhdGVkIGZyb20KLSAgIDpmaWxlOmAvdXNyL2luY2x1ZGUvZGxmY24uaGAgdXNpbmcgdGhlIDpwcm9ncmFtOmBoMnB5YCBzY3JpcHQuIEF2YWlsYWJpbGl0eToKLSAgIFVuaXguCisgICBgYHN5cy5zZXRkbG9wZW5mbGFncyhvcy5SVExEX0dMT0JBTClgYC4gIFN5bWJvbGljIG5hbWVzIGZvciB0aGUgZmxhZyBtb2R1bGVzCisgICBjYW4gYmUgZm91bmQgaW4gdGhlIDptb2Q6YG9zYCBtb2R1bGUgKGBgUlRMRF94eHhgYCBjb25zdGFudHMsIGUuZy4KKyAgIDpkYXRhOmBvcy5SVExEX0xBWllgKS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAuLiBmdW5jdGlvbjo6IHNldHByb2ZpbGUocHJvZmlsZWZ1bmMpCiAKQEAgLTEwMDMsMjIgKzExMDYsMzMgQEAKICAgICAgICB0byBhIGNvbnNvbGUgYW5kIFB5dGhvbiBhcHBzIHN0YXJ0ZWQgd2l0aCA6cHJvZ3JhbTpgcHl0aG9ud2AuCiAKIAotLi4gZGF0YTo6IHN1YnZlcnNpb24KKy4uIGRhdGE6OiB0aHJlYWRfaW5mbwogCi0gICBBIHRyaXBsZSAocmVwbywgYnJhbmNoLCB2ZXJzaW9uKSByZXByZXNlbnRpbmcgdGhlIFN1YnZlcnNpb24gaW5mb3JtYXRpb24gb2YgdGhlCi0gICBQeXRob24gaW50ZXJwcmV0ZXIuICpyZXBvKiBpcyB0aGUgbmFtZSBvZiB0aGUgcmVwb3NpdG9yeSwgYGAnQ1B5dGhvbidgYC4KLSAgICpicmFuY2gqIGlzIGEgc3RyaW5nIG9mIG9uZSBvZiB0aGUgZm9ybXMgYGAndHJ1bmsnYGAsIGBgJ2JyYW5jaGVzL25hbWUnYGAgb3IKLSAgIGBgJ3RhZ3MvbmFtZSdgYC4gKnZlcnNpb24qIGlzIHRoZSBvdXRwdXQgb2YgYGBzdm52ZXJzaW9uYGAsIGlmIHRoZSBpbnRlcnByZXRlcgotICAgd2FzIGJ1aWx0IGZyb20gYSBTdWJ2ZXJzaW9uIGNoZWNrb3V0OyBpdCBjb250YWlucyB0aGUgcmV2aXNpb24gbnVtYmVyIChyYW5nZSkKLSAgIGFuZCBwb3NzaWJseSBhIHRyYWlsaW5nICdNJyBpZiB0aGVyZSB3ZXJlIGxvY2FsIG1vZGlmaWNhdGlvbnMuIElmIHRoZSB0cmVlIHdhcwotICAgZXhwb3J0ZWQgKG9yIHN2bnZlcnNpb24gd2FzIG5vdCBhdmFpbGFibGUpLCBpdCBpcyB0aGUgcmV2aXNpb24gb2YKLSAgIGBgSW5jbHVkZS9wYXRjaGxldmVsLmhgYCBpZiB0aGUgYnJhbmNoIGlzIGEgdGFnLiBPdGhlcndpc2UsIGl0IGlzIGBgTm9uZWBgLgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aHJlYWQKKyAgIGltcGxlbWVudGF0aW9uLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy4yLjEKLSAgICAgIFB5dGhvbiBpcyBub3cgYGRldmVsb3BlZCA8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8+YF8gdXNpbmcKLSAgICAgIE1lcmN1cmlhbC4gIEluIHJlY2VudCBQeXRob24gMy4yIGJ1Z2ZpeCByZWxlYXNlcywgOmRhdGE6YHN1YnZlcnNpb25gCi0gICAgICB0aGVyZWZvcmUgY29udGFpbnMgcGxhY2Vob2xkZXIgaW5mb3JtYXRpb24uICBJdCBpcyByZW1vdmVkIGluIFB5dGhvbgotICAgICAgMy4zLgorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IEF0dHJpYnV0ZSAgICAgICAgfCBFeHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICs9PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICAgfCA6Y29uc3Q6YG5hbWVgICAgIHwgTmFtZSBvZiB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uOiAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ250J2BgOiBXaW5kb3dzIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAnb3MyJ2BgOiBPUy8yIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdwdGhyZWFkJ2BgOiBQT1NJWCB0aHJlYWRzICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ3NvbGFyaXMnYGA6IFNvbGFyaXMgdGhyZWFkcyAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgbG9ja2AgICAgfCBOYW1lIG9mIHRoZSBsb2NrIGltcGxlbWVudGF0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAnc2VtYXBob3JlJ2BgOiBhIGxvY2sgdXNlcyBhIHNlbWFwaG9yZSAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdtdXRleCtjb25kJ2BgOiBhIGxvY2sgdXNlcyBhIG11dGV4ICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAgIGFuZCBhIGNvbmRpdGlvbiB2YXJpYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGBOb25lYGAgaWYgdGhpcyBpbmZvcm1hdGlvbiBpcyB1bmtub3duICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmB2ZXJzaW9uYCB8IE5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHRocmVhZCBsaWJyYXJ5LiBJdCBpcyBhIHN0cmluZywgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgb3IgYGBOb25lYGAgaWYgdGhlc2UgaW5mb3JtYXRpb25zIGFyZSB1bmtub3duLiAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gZGF0YTo6IHRyYWNlYmFja2xpbWl0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXNsb2cucnN0IGIvRG9jL2xpYnJhcnkvc3lzbG9nLnJzdAppbmRleCA2NDVjMzI2Li5hYTBmNWExIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXNsb2cucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5c2xvZy5yc3QKQEAgLTc4LDEyICs3OCwxNCBAQAogRmFjaWxpdGllczoKICAgIDpjb25zdDpgTE9HX0tFUk5gLCA6Y29uc3Q6YExPR19VU0VSYCwgOmNvbnN0OmBMT0dfTUFJTGAsIDpjb25zdDpgTE9HX0RBRU1PTmAsCiAgICA6Y29uc3Q6YExPR19BVVRIYCwgOmNvbnN0OmBMT0dfTFBSYCwgOmNvbnN0OmBMT0dfTkVXU2AsIDpjb25zdDpgTE9HX1VVQ1BgLAotICAgOmNvbnN0OmBMT0dfQ1JPTmAsIDpjb25zdDpgTE9HX1NZU0xPR2AgYW5kIDpjb25zdDpgTE9HX0xPQ0FMMGAgdG8KLSAgIDpjb25zdDpgTE9HX0xPQ0FMN2AuCisgICA6Y29uc3Q6YExPR19DUk9OYCwgOmNvbnN0OmBMT0dfU1lTTE9HYCwgOmNvbnN0OmBMT0dfTE9DQUwwYCB0bworICAgOmNvbnN0OmBMT0dfTE9DQUw3YCwgYW5kLCBpZiBkZWZpbmVkIGluIGBgPHN5c2xvZy5oPmBgLAorICAgOmNvbnN0OmBMT0dfQVVUSFBSSVZgLgogCiBMb2cgb3B0aW9uczoKLSAgIDpjb25zdDpgTE9HX1BJRGAsIDpjb25zdDpgTE9HX0NPTlNgLCA6Y29uc3Q6YExPR19OREVMQVlgLCA6Y29uc3Q6YExPR19OT1dBSVRgCi0gICBhbmQgOmNvbnN0OmBMT0dfUEVSUk9SYCBpZiBkZWZpbmVkIGluIGBgPHN5c2xvZy5oPmBgLgorICAgOmNvbnN0OmBMT0dfUElEYCwgOmNvbnN0OmBMT0dfQ09OU2AsIDpjb25zdDpgTE9HX05ERUxBWWAsIGFuZCwgaWYgZGVmaW5lZAorICAgaW4gYGA8c3lzbG9nLmg+YGAsIDpjb25zdDpgTE9HX09ERUxBWWAsIDpjb25zdDpgTE9HX05PV0FJVGAsIGFuZAorICAgOmNvbnN0OmBMT0dfUEVSUk9SYC4KIAogCiBFeGFtcGxlcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdAppbmRleCA0NmU0OTAwLi44NmRkMzNkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdApAQCAtMTMsMTMgKzEzLDEzIEBACiAtLS0tLS0tLS0tLS0tLQogCiBUaGUgOm1vZDpgdGFyZmlsZWAgbW9kdWxlIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJlYWQgYW5kIHdyaXRlIHRhcgotYXJjaGl2ZXMsIGluY2x1ZGluZyB0aG9zZSB1c2luZyBnemlwIG9yIGJ6MiBjb21wcmVzc2lvbi4KK2FyY2hpdmVzLCBpbmNsdWRpbmcgdGhvc2UgdXNpbmcgZ3ppcCwgYnoyIGFuZCBsem1hIGNvbXByZXNzaW9uLgogVXNlIHRoZSA6bW9kOmB6aXBmaWxlYCBtb2R1bGUgdG8gcmVhZCBvciB3cml0ZSA6ZmlsZTpgLnppcGAgZmlsZXMsIG9yIHRoZQogaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBpbiA6cmVmOmBzaHV0aWwgPGFyY2hpdmluZy1vcGVyYXRpb25zPmAuCiAKIFNvbWUgZmFjdHMgYW5kIGZpZ3VyZXM6CiAKLSogcmVhZHMgYW5kIHdyaXRlcyA6bW9kOmBnemlwYCBhbmQgOm1vZDpgYnoyYCBjb21wcmVzc2VkIGFyY2hpdmVzLgorKiByZWFkcyBhbmQgd3JpdGVzIDptb2Q6YGd6aXBgLCA6bW9kOmBiejJgIGFuZCA6bW9kOmBsem1hYCBjb21wcmVzc2VkIGFyY2hpdmVzLgogCiAqIHJlYWQvd3JpdGUgc3VwcG9ydCBmb3IgdGhlIFBPU0lYLjEtMTk4OCAodXN0YXIpIGZvcm1hdC4KIApAQCAtMzMsNiArMzMsOSBAQAogICBjaGFyYWN0ZXIgZGV2aWNlcyBhbmQgYmxvY2sgZGV2aWNlcyBhbmQgaXMgYWJsZSB0byBhY3F1aXJlIGFuZCByZXN0b3JlIGZpbGUKICAgaW5mb3JtYXRpb24gbGlrZSB0aW1lc3RhbXAsIGFjY2VzcyBwZXJtaXNzaW9ucyBhbmQgb3duZXIuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBZGRlZCBzdXBwb3J0IGZvciA6bW9kOmBsem1hYCBjb21wcmVzc2lvbi4KKwogCiAuLiBmdW5jdGlvbjo6IG9wZW4obmFtZT1Ob25lLCBtb2RlPSdyJywgZmlsZW9iaj1Ob25lLCBidWZzaXplPTEwMjQwLCBcKlwqa3dhcmdzKQogCkBAIC01Niw2ICs1OSw4IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAncjpiejInYGAgICAgICB8IE9wZW4gZm9yIHJlYWRpbmcgd2l0aCBiemlwMiBjb21wcmVzc2lvbi4gICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3I6eHonYGAgICAgICAgfCBPcGVuIGZvciByZWFkaW5nIHdpdGggbHptYSBjb21wcmVzc2lvbi4gICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYCdhJyBvciAnYTonYGAgIHwgT3BlbiBmb3IgYXBwZW5kaW5nIHdpdGggbm8gY29tcHJlc3Npb24uIFRoZSB8CiAgICB8ICAgICAgICAgICAgICAgICAgfCBmaWxlIGlzIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtNjUsMTEgKzcwLDEzIEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAndzpiejInYGAgICAgICB8IE9wZW4gZm9yIGJ6aXAyIGNvbXByZXNzZWQgd3JpdGluZy4gICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3c6eHonYGAgICAgICAgfCBPcGVuIGZvciBsem1hIGNvbXByZXNzZWQgd3JpdGluZy4gICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBOb3RlIHRoYXQgYGAnYTpneidgYCBvciBgYCdhOmJ6MidgYCBpcyBub3QgcG9zc2libGUuIElmICptb2RlKiBpcyBub3Qgc3VpdGFibGUKLSAgIHRvIG9wZW4gYSBjZXJ0YWluIChjb21wcmVzc2VkKSBmaWxlIGZvciByZWFkaW5nLCA6ZXhjOmBSZWFkRXJyb3JgIGlzIHJhaXNlZC4gVXNlCi0gICAqbW9kZSogYGAncidgYCB0byBhdm9pZCB0aGlzLiAgSWYgYSBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCwKLSAgIDpleGM6YENvbXByZXNzaW9uRXJyb3JgIGlzIHJhaXNlZC4KKyAgIE5vdGUgdGhhdCBgYCdhOmd6J2BgLCBgYCdhOmJ6MidgYCBvciBgYCdhOnh6J2BgIGlzIG5vdCBwb3NzaWJsZS4gSWYgKm1vZGUqCisgICBpcyBub3Qgc3VpdGFibGUgdG8gb3BlbiBhIGNlcnRhaW4gKGNvbXByZXNzZWQpIGZpbGUgZm9yIHJlYWRpbmcsCisgICA6ZXhjOmBSZWFkRXJyb3JgIGlzIHJhaXNlZC4gVXNlICptb2RlKiBgYCdyJ2BgIHRvIGF2b2lkIHRoaXMuICBJZiBhCisgICBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCwgOmV4YzpgQ29tcHJlc3Npb25FcnJvcmAgaXMgcmFpc2VkLgogCiAgICBJZiAqZmlsZW9iaiogaXMgc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIHRvIGEgOnRlcm06YGZpbGUgb2JqZWN0YAogICAgb3BlbmVkIGluIGJpbmFyeSBtb2RlIGZvciAqbmFtZSouIEl0IGlzIHN1cHBvc2VkIHRvIGJlIGF0IHBvc2l0aW9uIDAuCkBAIC0xMDAsNiArMTA3LDkgQEAKICAgIHwgYGAncnxiejInYGAgfCBPcGVuIGEgYnppcDIgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgfAogICAgfCAgICAgICAgICAgICB8IHJlYWRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAncnx4eidgYCAgfCBPcGVuIGEgbHptYSBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICAgfAorICAgfCAgICAgICAgICAgICB8IHJlYWRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAnd3wnYGAgICAgfCBPcGVuIGFuIHVuY29tcHJlc3NlZCAqc3RyZWFtKiBmb3Igd3JpdGluZy4gfAogICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgJ3d8Z3onYGAgIHwgT3BlbiBhIGd6aXAgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgIHwKQEAgLTEwOCw2ICsxMTgsOSBAQAogICAgfCBgYCd3fGJ6MidgYCB8IE9wZW4gYSBiemlwMiBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICB8CiAgICB8ICAgICAgICAgICAgIHwgd3JpdGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCd3fHh6J2BgICB8IE9wZW4gYW4gbHptYSBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICB8CisgICB8ICAgICAgICAgICAgIHwgd3JpdGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAKIC4uIGNsYXNzOjogVGFyRmlsZQpAQCAtMjYzLDkgKzI3Niw5IEBACiAKICAgIElmICplcnJvcmxldmVsKiBpcyBgYDBgYCwgYWxsIGVycm9ycyBhcmUgaWdub3JlZCB3aGVuIHVzaW5nIDptZXRoOmBUYXJGaWxlLmV4dHJhY3RgLgogICAgTmV2ZXJ0aGVsZXNzLCB0aGV5IGFwcGVhciBhcyBlcnJvciBtZXNzYWdlcyBpbiB0aGUgZGVidWcgb3V0cHV0LCB3aGVuIGRlYnVnZ2luZwotICAgaXMgZW5hYmxlZC4gIElmIGBgMWBgLCBhbGwgKmZhdGFsKiBlcnJvcnMgYXJlIHJhaXNlZCBhcyA6ZXhjOmBPU0Vycm9yYCBvcgotICAgOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9ucy4gSWYgYGAyYGAsIGFsbCAqbm9uLWZhdGFsKiBlcnJvcnMgYXJlIHJhaXNlZCBhcwotICAgOmV4YzpgVGFyRXJyb3JgIGV4Y2VwdGlvbnMgYXMgd2VsbC4KKyAgIGlzIGVuYWJsZWQuICBJZiBgYDFgYCwgYWxsICpmYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMgOmV4YzpgT1NFcnJvcmAKKyAgIGV4Y2VwdGlvbnMuIElmIGBgMmBgLCBhbGwgKm5vbi1mYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMgOmV4YzpgVGFyRXJyb3JgCisgICBleGNlcHRpb25zIGFzIHdlbGwuCiAKICAgIFRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBhcmd1bWVudHMgZGVmaW5lIHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgdG8gYmUKICAgIHVzZWQgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyB0aGUgYXJjaGl2ZSBhbmQgaG93IGNvbnZlcnNpb24gZXJyb3JzIGFyZSBnb2luZwpAQCAtMzYzLDE1ICszNzYsMTIgQEAKIC4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdGZpbGUobWVtYmVyKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgYXMgYSBmaWxlIG9iamVjdC4gKm1lbWJlciogbWF5IGJlIGEgZmlsZW5hbWUKLSAgIG9yIGEgOmNsYXNzOmBUYXJJbmZvYCBvYmplY3QuIElmICptZW1iZXIqIGlzIGEgcmVndWxhciBmaWxlLCBhIDp0ZXJtOmBmaWxlLWxpa2UKLSAgIG9iamVjdGAgaXMgcmV0dXJuZWQuIElmICptZW1iZXIqIGlzIGEgbGluaywgYSBmaWxlLWxpa2Ugb2JqZWN0IGlzIGNvbnN0cnVjdGVkIGZyb20KLSAgIHRoZSBsaW5rJ3MgdGFyZ2V0LiBJZiAqbWVtYmVyKiBpcyBub25lIG9mIHRoZSBhYm92ZSwgOmNvbnN0OmBOb25lYCBpcyByZXR1cm5lZC4KKyAgIG9yIGEgOmNsYXNzOmBUYXJJbmZvYCBvYmplY3QuIElmICptZW1iZXIqIGlzIGEgcmVndWxhciBmaWxlIG9yIGEgbGluaywgYW4KKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRSZWFkZXJgIG9iamVjdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCA6Y29uc3Q6YE5vbmVgIGlzCisgICByZXR1cm5lZC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoZSBmaWxlLWxpa2Ugb2JqZWN0IGlzIHJlYWQtb25seS4gIEl0IHByb3ZpZGVzIHRoZSBtZXRob2RzCi0gICAgICA6bWV0aDpgcmVhZGAsIDptZXRoOmByZWFkbGluZWAsIDptZXRoOmByZWFkbGluZXNgLCA6bWV0aDpgc2Vla2AsIDptZXRoOmB0ZWxsYCwKLSAgICAgIGFuZCA6bWV0aDpgY2xvc2VgLCBhbmQgYWxzbyBzdXBwb3J0cyBpdGVyYXRpb24gb3ZlciBpdHMgbGluZXMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmV0dXJuIGFuIDpjbGFzczpgaW8uQnVmZmVyZWRSZWFkZXJgIG9iamVjdC4KIAogCiAuLiBtZXRob2Q6OiBUYXJGaWxlLmFkZChuYW1lLCBhcmNuYW1lPU5vbmUsIHJlY3Vyc2l2ZT1UcnVlLCBleGNsdWRlPU5vbmUsICosIGZpbHRlcj1Ob25lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdCBiL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKaW5kZXggNjQ2NjM0ZC4uOWJjNzljNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CkBAIC0xNjIsOSArMTYyLDEzIEBACiAuLiBtZXRob2Q6OiBUZWxuZXQud3JpdGUoYnVmZmVyKQogCiAgICBXcml0ZSBhIGJ5dGUgc3RyaW5nIHRvIHRoZSBzb2NrZXQsIGRvdWJsaW5nIGFueSBJQUMgY2hhcmFjdGVycy4gVGhpcyBjYW4KLSAgIGJsb2NrIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJsb2NrZWQuICBNYXkgcmFpc2UgOmV4Yzpgc29ja2V0LmVycm9yYCBpZiB0aGUKKyAgIGJsb2NrIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJsb2NrZWQuICBNYXkgcmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlCiAgICBjb25uZWN0aW9uIGlzIGNsb3NlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgbWV0aG9kIHVzZWQgdG8gcmFpc2UgOmV4Yzpgc29ja2V0LmVycm9yYCwgd2hpY2ggaXMgbm93IGFuIGFsaWFzCisgICAgICBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBtZXRob2Q6OiBUZWxuZXQuaW50ZXJhY3QoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QKaW5kZXggZmZmNmM0ZS4uZGZlYjI1MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RlbXBmaWxlLnJzdApAQCAtMjUsNyArMjUsNyBAQAogCiBBbHNvLCBhbGwgdGhlIHVzZXItY2FsbGFibGUgZnVuY3Rpb25zIG5vdyB0YWtlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHdoaWNoCiBhbGxvdyBkaXJlY3QgY29udHJvbCBvdmVyIHRoZSBsb2NhdGlvbiBhbmQgbmFtZSBvZiB0ZW1wb3JhcnkgZmlsZXMuICBJdCBpcwotbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGdsb2JhbCAqdGVtcGRpciogYW5kICp0ZW1wbGF0ZSogdmFyaWFibGVzLgorbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGdsb2JhbCAqdGVtcGRpciogdmFyaWFibGUuCiBUbyBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgYXJndW1lbnQgb3JkZXIgaXMgc29tZXdoYXQgb2RkOyBpdAogaXMgcmVjb21tZW5kZWQgdG8gdXNlIGtleXdvcmQgYXJndW1lbnRzIGZvciBjbGFyaXR5LgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CmluZGV4IDQwZjQxMTUuLjJlOGJhMzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CkBAIC04MCwxNyArODAsMTIgQEAKIAogICAgLi4uIG1vcmUgdGVzdCBjbGFzc2VzIC4uLgogCi0gICBkZWYgdGVzdF9tYWluKCk6Ci0gICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTXlUZXN0Q2FzZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNeVRlc3RDYXNlMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiBsaXN0IG90aGVyIHRlc3RzIC4uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0KICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgICAgdGVzdF9tYWluKCkKKyAgICAgICB1bml0dGVzdC5tYWluKCkKIAotVGhpcyBib2lsZXJwbGF0ZSBjb2RlIGFsbG93cyB0aGUgdGVzdGluZyBzdWl0ZSB0byBiZSBydW4gYnkgOm1vZDpgdGVzdC5yZWdydGVzdGAKLWFzIHdlbGwgYXMgb24gaXRzIG93biBhcyBhIHNjcmlwdC4KK1RoaXMgY29kZSBwYXR0ZXJuIGFsbG93cyB0aGUgdGVzdGluZyBzdWl0ZSB0byBiZSBydW4gYnkgOm1vZDpgdGVzdC5yZWdydGVzdGAsCitvbiBpdHMgb3duIGFzIGEgc2NyaXB0IHRoYXQgc3VwcG9ydHMgdGhlIDptb2Q6YHVuaXR0ZXN0YCBDTEksIG9yIHZpYSB0aGUKK2BweXRob24gLW0gdW5pdHRlc3RgIENMSS4KIAogVGhlIGdvYWwgZm9yIHJlZ3Jlc3Npb24gdGVzdGluZyBpcyB0byB0cnkgdG8gYnJlYWsgY29kZS4gVGhpcyBsZWFkcyB0byBhIGZldwogZ3VpZGVsaW5lcyB0byBiZSBmb2xsb3dlZDoKQEAgLTEyOSwyMiArMTI0LDI3IEBACiAgIGFzIHdoYXQgdHlwZSBvZiBpbnB1dCBpcyB1c2VkLiBNaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJ5IHN1YmNsYXNzaW5nIGEKICAgYmFzaWMgdGVzdCBjbGFzcyB3aXRoIGEgY2xhc3MgdGhhdCBzcGVjaWZpZXMgdGhlIGlucHV0OjoKIAotICAgICBjbGFzcyBUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBjbGFzcyBUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXNNaXhpbjoKIAogICAgICAgICAgZnVuYyA9IG15U3VwZXJXaGFtbXlGdW5jdGlvbgogCiAgICAgICAgICBkZWYgdGVzdF9mdW5jKHNlbGYpOgogICAgICAgICAgICAgIHNlbGYuZnVuYyhzZWxmLmFyZykKIAotICAgICBjbGFzcyBBY2NlcHRMaXN0cyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRMaXN0cyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXNNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgYXJnID0gWzEsIDIsIDNdCiAKLSAgICAgY2xhc3MgQWNjZXB0U3RyaW5ncyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRTdHJpbmdzKFRlc3RGdW5jQWNjZXB0c1NlcXVlbmNlc01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICBhcmcgPSAnYWJjJwogCi0gICAgIGNsYXNzIEFjY2VwdFR1cGxlcyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRUdXBsZXMoVGVzdEZ1bmNBY2NlcHRzU2VxdWVuY2VzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIGFyZyA9ICgxLCAyLCAzKQogCisgIFdoZW4gdXNpbmcgdGhpcyBwYXR0ZXJuLCByZW1lbWJlciB0aGF0IGFsbCBjbGFzc2VzIHRoYXQgaW5oZXJpdCBmcm9tCisgIGB1bml0dGVzdC5UZXN0Q2FzZWAgYXJlIHJ1biBhcyB0ZXN0cy4gIFRoZSBgTWl4aW5gIGNsYXNzIGluIHRoZSBleGFtcGxlIGFib3ZlCisgIGRvZXMgbm90IGhhdmUgYW55IGRhdGEgYW5kIHNvIGNhbid0IGJlIHJ1biBieSBpdHNlbGYsIHRodXMgaXQgZG9lcyBub3QKKyAgaW5oZXJpdCBmcm9tIGB1bml0dGVzdC5UZXN0Q2FzZWAuCisKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTE2MCwxNCArMTYwLDE1IEBACiBUaGUgOm1vZDpgdGVzdGAgcGFja2FnZSBjYW4gYmUgcnVuIGFzIGEgc2NyaXB0IHRvIGRyaXZlIFB5dGhvbidzIHJlZ3Jlc3Npb24KIHRlc3Qgc3VpdGUsIHRoYW5rcyB0byB0aGUgOm9wdGlvbjpgLW1gIG9wdGlvbjogOnByb2dyYW06YHB5dGhvbiAtbSB0ZXN0YC4gVW5kZXIKIHRoZSBob29kLCBpdCB1c2VzIDptb2Q6YHRlc3QucmVncnRlc3RgOyB0aGUgY2FsbCA6cHJvZ3JhbTpgcHl0aG9uIC1tCi10ZXN0LnJlZ3J0ZXN0YCB1c2VkIGluIHByZXZpb3VzIFB5dGhvbiB2ZXJzaW9ucyBzdGlsbCB3b3JrcykuCi1SdW5uaW5nIHRoZSBzY3JpcHQgYnkgaXRzZWxmIGF1dG9tYXRpY2FsbHkgc3RhcnRzIHJ1bm5pbmcgYWxsIHJlZ3Jlc3Npb24KLXRlc3RzIGluIHRoZSA6bW9kOmB0ZXN0YCBwYWNrYWdlLiBJdCBkb2VzIHRoaXMgYnkgZmluZGluZyBhbGwgbW9kdWxlcyBpbiB0aGUKLXBhY2thZ2Ugd2hvc2UgbmFtZSBzdGFydHMgd2l0aCBgYHRlc3RfYGAsIGltcG9ydGluZyB0aGVtLCBhbmQgZXhlY3V0aW5nIHRoZQotZnVuY3Rpb24gOmZ1bmM6YHRlc3RfbWFpbmAgaWYgcHJlc2VudC4gVGhlIG5hbWVzIG9mIHRlc3RzIHRvIGV4ZWN1dGUgbWF5IGFsc28KLWJlIHBhc3NlZCB0byB0aGUgc2NyaXB0LiBTcGVjaWZ5aW5nIGEgc2luZ2xlIHJlZ3Jlc3Npb24gdGVzdCAoOnByb2dyYW06YHB5dGhvbgotLW0gdGVzdCB0ZXN0X3NwYW1gKSB3aWxsIG1pbmltaXplIG91dHB1dCBhbmQgb25seSBwcmludAotd2hldGhlciB0aGUgdGVzdCBwYXNzZWQgb3IgZmFpbGVkIGFuZCB0aHVzIG1pbmltaXplIG91dHB1dC4KK3Rlc3QucmVncnRlc3RgIHVzZWQgaW4gcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zIHN0aWxsIHdvcmtzKS4gIFJ1bm5pbmcgdGhlCitzY3JpcHQgYnkgaXRzZWxmIGF1dG9tYXRpY2FsbHkgc3RhcnRzIHJ1bm5pbmcgYWxsIHJlZ3Jlc3Npb24gdGVzdHMgaW4gdGhlCis6bW9kOmB0ZXN0YCBwYWNrYWdlLiBJdCBkb2VzIHRoaXMgYnkgZmluZGluZyBhbGwgbW9kdWxlcyBpbiB0aGUgcGFja2FnZSB3aG9zZQorbmFtZSBzdGFydHMgd2l0aCBgYHRlc3RfYGAsIGltcG9ydGluZyB0aGVtLCBhbmQgZXhlY3V0aW5nIHRoZSBmdW5jdGlvbgorOmZ1bmM6YHRlc3RfbWFpbmAgaWYgcHJlc2VudCBvciBsb2FkaW5nIHRoZSB0ZXN0cyB2aWEKK3VuaXR0ZXN0LlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSBpZiBgYHRlc3RfbWFpbmBgIGRvZXMgbm90IGV4aXN0LiAgVGhlCituYW1lcyBvZiB0ZXN0cyB0byBleGVjdXRlIG1heSBhbHNvIGJlIHBhc3NlZCB0byB0aGUgc2NyaXB0LiBTcGVjaWZ5aW5nIGEgc2luZ2xlCityZWdyZXNzaW9uIHRlc3QgKDpwcm9ncmFtOmBweXRob24gLW0gdGVzdCB0ZXN0X3NwYW1gKSB3aWxsIG1pbmltaXplIG91dHB1dCBhbmQKK29ubHkgcHJpbnQgd2hldGhlciB0aGUgdGVzdCBwYXNzZWQgb3IgZmFpbGVkLgogCiBSdW5uaW5nIDptb2Q6YHRlc3RgIGRpcmVjdGx5IGFsbG93cyB3aGF0IHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIGZvcgogdGVzdHMgdG8gdXNlIHRvIGJlIHNldC4gWW91IGRvIHRoaXMgYnkgdXNpbmcgdGhlIGBgLXVgYCBjb21tYW5kLWxpbmUKQEAgLTIyMywxNCArMjI0LDE0IEBACiAKIC4uIGRhdGE6OiB2ZXJib3NlCiAKLSAgIDpjb25zdDpgVHJ1ZWAgd2hlbiB2ZXJib3NlIG91dHB1dCBpcyBlbmFibGVkLiBTaG91bGQgYmUgY2hlY2tlZCB3aGVuIG1vcmUKKyAgIGBgVHJ1ZWBgIHdoZW4gdmVyYm9zZSBvdXRwdXQgaXMgZW5hYmxlZC4gU2hvdWxkIGJlIGNoZWNrZWQgd2hlbiBtb3JlCiAgICBkZXRhaWxlZCBpbmZvcm1hdGlvbiBpcyBkZXNpcmVkIGFib3V0IGEgcnVubmluZyB0ZXN0LiAqdmVyYm9zZSogaXMgc2V0IGJ5CiAgICA6bW9kOmB0ZXN0LnJlZ3J0ZXN0YC4KIAogCiAuLiBkYXRhOjogaXNfanl0aG9uCiAKLSAgIDpjb25zdDpgVHJ1ZWAgaWYgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIgaXMgSnl0aG9uLgorICAgYGBUcnVlYGAgaWYgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIgaXMgSnl0aG9uLgogCiAKIC4uIGRhdGE6OiBURVNURk4KQEAgLTI0OSw3ICsyNTAsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGlzX3Jlc291cmNlX2VuYWJsZWQocmVzb3VyY2UpCiAKLSAgIFJldHVybiA6Y29uc3Q6YFRydWVgIGlmICpyZXNvdXJjZSogaXMgZW5hYmxlZCBhbmQgYXZhaWxhYmxlLiBUaGUgbGlzdCBvZgorICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpyZXNvdXJjZSogaXMgZW5hYmxlZCBhbmQgYXZhaWxhYmxlLiBUaGUgbGlzdCBvZgogICAgYXZhaWxhYmxlIHJlc291cmNlcyBpcyBvbmx5IHNldCB3aGVuIDptb2Q6YHRlc3QucmVncnRlc3RgIGlzIGV4ZWN1dGluZyB0aGUKICAgIHRlc3RzLgogCkBAIC0yNTgsNyArMjU5LDcgQEAKIAogICAgUmFpc2UgOmV4YzpgUmVzb3VyY2VEZW5pZWRgIGlmICpyZXNvdXJjZSogaXMgbm90IGF2YWlsYWJsZS4gKm1zZyogaXMgdGhlCiAgICBhcmd1bWVudCB0byA6ZXhjOmBSZXNvdXJjZURlbmllZGAgaWYgaXQgaXMgcmFpc2VkLiBBbHdheXMgcmV0dXJucwotICAgOmNvbnN0OmBUcnVlYCBpZiBjYWxsZWQgYnkgYSBmdW5jdGlvbiB3aG9zZSBgYF9fbmFtZV9fYGAgaXMgYGAnX19tYWluX18nYGAuCisgICBgYFRydWVgYCBpZiBjYWxsZWQgYnkgYSBmdW5jdGlvbiB3aG9zZSBgYF9fbmFtZV9fYGAgaXMgYGAnX19tYWluX18nYGAuCiAgICBVc2VkIHdoZW4gdGVzdHMgYXJlIGV4ZWN1dGVkIGJ5IDptb2Q6YHRlc3QucmVncnRlc3RgLgogCiAKQEAgLTI4Niw2ICsyODcsMTUgQEAKICAgIFRoaXMgd2lsbCBydW4gYWxsIHRlc3RzIGRlZmluZWQgaW4gdGhlIG5hbWVkIG1vZHVsZS4KIAogCisuLiBmdW5jdGlvbjo6IHJ1bl9kb2N0ZXN0KG1vZHVsZSwgdmVyYm9zaXR5PU5vbmUpCisKKyAgIFJ1biA6ZnVuYzpgZG9jdGVzdC50ZXN0bW9kYCBvbiB0aGUgZ2l2ZW4gKm1vZHVsZSouICBSZXR1cm4KKyAgIGBgKGZhaWx1cmVfY291bnQsIHRlc3RfY291bnQpYGAuCisKKyAgIElmICp2ZXJib3NpdHkqIGlzIGBgTm9uZWBgLCA6ZnVuYzpgZG9jdGVzdC50ZXN0bW9kYCBpcyBydW4gd2l0aCB2ZXJib3NpdHkKKyAgIHNldCB0byA6ZGF0YTpgdmVyYm9zZWAuICBPdGhlcndpc2UsIGl0IGlzIHJ1biB3aXRoIHZlcmJvc2l0eSBzZXQgdG8KKyAgIGBgTm9uZWBgLgorCiAuLiBmdW5jdGlvbjo6IGNoZWNrX3dhcm5pbmdzKFwqZmlsdGVycywgcXVpZXQ9VHJ1ZSkKIAogICAgQSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciA6ZnVuYzpgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKWAgdGhhdCBtYWtlcyBpdApAQCAtMjk2LDEyICszMDYsMTIgQEAKIAogICAgYGBjaGVja193YXJuaW5nc2BgIGFjY2VwdHMgMi10dXBsZXMgb2YgdGhlIGZvcm0gYGAoIm1lc3NhZ2UgcmVnZXhwIiwKICAgIFdhcm5pbmdDYXRlZ29yeSlgYCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gSWYgb25lIG9yIG1vcmUgKmZpbHRlcnMqIGFyZQotICAgcHJvdmlkZWQsIG9yIGlmIHRoZSBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICpxdWlldCogaXMgOmNvbnN0OmBGYWxzZWAsCisgICBwcm92aWRlZCwgb3IgaWYgdGhlIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgKnF1aWV0KiBpcyBgYEZhbHNlYGAsCiAgICBpdCBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZSB3YXJuaW5ncyBhcmUgYXMgZXhwZWN0ZWQ6ICBlYWNoIHNwZWNpZmllZCBmaWx0ZXIKICAgIG11c3QgbWF0Y2ggYXQgbGVhc3Qgb25lIG9mIHRoZSB3YXJuaW5ncyByYWlzZWQgYnkgdGhlIGVuY2xvc2VkIGNvZGUgb3IgdGhlCiAgICB0ZXN0IGZhaWxzLCBhbmQgaWYgYW55IHdhcm5pbmdzIGFyZSByYWlzZWQgdGhhdCBkbyBub3QgbWF0Y2ggYW55IG9mIHRoZQogICAgc3BlY2lmaWVkIGZpbHRlcnMgdGhlIHRlc3QgZmFpbHMuICBUbyBkaXNhYmxlIHRoZSBmaXJzdCBvZiB0aGVzZSBjaGVja3MsCi0gICBzZXQgKnF1aWV0KiB0byA6Y29uc3Q6YFRydWVgLgorICAgc2V0ICpxdWlldCogdG8gYGBUcnVlYGAuCiAKICAgIElmIG5vIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0bzo6CiAKQEAgLTMxNiw3ICszMjYsNyBAQAogICAgcmVwcmVzZW50aW5nIHRoZSBtb3N0IHJlY2VudCB3YXJuaW5nIGNhbiBhbHNvIGJlIGFjY2Vzc2VkIGRpcmVjdGx5IHRocm91Z2gKICAgIHRoZSByZWNvcmRlciBvYmplY3QgKHNlZSBleGFtcGxlIGJlbG93KS4gIElmIG5vIHdhcm5pbmcgaGFzIGJlZW4gcmFpc2VkLAogICAgdGhlbiBhbnkgb2YgdGhlIGF0dHJpYnV0ZXMgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgZXhwZWN0ZWQgb24gYW4gb2JqZWN0Ci0gICByZXByZXNlbnRpbmcgYSB3YXJuaW5nIHdpbGwgcmV0dXJuIDpjb25zdDpgTm9uZWAuCisgICByZXByZXNlbnRpbmcgYSB3YXJuaW5nIHdpbGwgcmV0dXJuIGBgTm9uZWBgLgogCiAgICBUaGUgcmVjb3JkZXIgb2JqZWN0IGFsc28gaGFzIGEgOm1ldGg6YHJlc2V0YCBtZXRob2QsIHdoaWNoIGNsZWFycyB0aGUKICAgIHdhcm5pbmdzIGxpc3QuCkBAIC0zNTQsNyArMzY0LDcgQEAKIAogLi4gZnVuY3Rpb246OiBjYXB0dXJlZF9zdGRvdXQoKQogCi0gICBUaGlzIGlzIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgcnVucyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBib2R5IHVzaW5nCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IHJ1bnMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgYm9keSB1c2luZwogICAgYSA6Y2xhc3M6YFN0cmluZ0lPLlN0cmluZ0lPYCBvYmplY3QgYXMgc3lzLnN0ZG91dC4gIFRoYXQgb2JqZWN0IGNhbiBiZQogICAgcmV0cmlldmVkIHVzaW5nIHRoZSBgYGFzYGAgY2xhdXNlIG9mIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LgogCkBAIC0zNjUsNiArMzc1LDU3IEBACiAgICAgICBhc3NlcnQgcy5nZXR2YWx1ZSgpID09ICJoZWxsb1xuIgogCiAKKy4uIGZ1bmN0aW9uOjogdGVtcF9jd2QobmFtZT0ndGVtcGN3ZCcsIHF1aWV0PUZhbHNlLCBwYXRoPU5vbmUpCisKKyAgIEEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgY2hhbmdlcyB0aGUgY3VycmVudCB3b3JraW5nCisgICBkaXJlY3RvcnkgKENXRCkuCisKKyAgIEFuIGV4aXN0aW5nIHBhdGggbWF5IGJlIHByb3ZpZGVkIGFzICpwYXRoKiwgaW4gd2hpY2ggY2FzZSB0aGlzIGZ1bmN0aW9uCisgICBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBmaWxlIHN5c3RlbS4KKworICAgT3RoZXJ3aXNlLCB0aGUgbmV3IENXRCBpcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgaXQncyBuYW1lZAorICAgKm5hbWUqLiAgSWYgKnF1aWV0KiBpcyBgYEZhbHNlYGAgYW5kIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBvcgorICAgY2hhbmdlIHRoZSBDV0QsIGFuIGVycm9yIGlzIHJhaXNlZC4gIElmIGl0J3MgYGBUcnVlYGAsIG9ubHkgYSB3YXJuaW5nCisgICBpcyByYWlzZWQgYW5kIHRoZSBvcmlnaW5hbCBDV0QgaXMgdXNlZC4KKworCisuLiBmdW5jdGlvbjo6IHRlbXBfdW1hc2sodW1hc2spCisKKyAgIEEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgc2V0cyB0aGUgcHJvY2VzcyB1bWFzay4KKworCisuLiBmdW5jdGlvbjo6IGNhbl9zeW1saW5rKCkKKworICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBPUyBzdXBwb3J0cyBzeW1ib2xpYyBsaW5rcywgYGBGYWxzZWBgCisgICBvdGhlcndpc2UuCisKKworLi4gZGVjb3JhdG9yOjogc2tpcF91bmxlc3Nfc3ltbGluaygpCisKKyAgIEEgZGVjb3JhdG9yIGZvciBydW5uaW5nIHRlc3RzIHRoYXQgcmVxdWlyZSBzdXBwb3J0IGZvciBzeW1ib2xpYyBsaW5rcy4KKworCisuLiBkZWNvcmF0b3I6OiBhbnRpY2lwYXRlX2ZhaWx1cmUoY29uZGl0aW9uKQorCisgICBBIGRlY29yYXRvciB0byBjb25kaXRpb25hbGx5IG1hcmsgdGVzdHMgd2l0aAorICAgOmZ1bmM6YHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZWAuIEFueSB1c2Ugb2YgdGhpcyBkZWNvcmF0b3Igc2hvdWxkCisgICBoYXZlIGFuIGFzc29jaWF0ZWQgY29tbWVudCBpZGVudGlmeWluZyB0aGUgcmVsZXZhbnQgdHJhY2tlciBpc3N1ZS4KKworCisuLiBkZWNvcmF0b3I6OiBydW5fd2l0aF9sb2NhbGUoY2F0c3RyLCAqbG9jYWxlcykKKworICAgQSBkZWNvcmF0b3IgZm9yIHJ1bm5pbmcgYSBmdW5jdGlvbiBpbiBhIGRpZmZlcmVudCBsb2NhbGUsIGNvcnJlY3RseQorICAgcmVzZXR0aW5nIGl0IGFmdGVyIGl0IGhhcyBmaW5pc2hlZC4gICpjYXRzdHIqIGlzIHRoZSBsb2NhbGUgY2F0ZWdvcnkgYXMKKyAgIGEgc3RyaW5nIChmb3IgZXhhbXBsZSBgYCJMQ19BTEwiYGApLiAgVGhlICpsb2NhbGVzKiBwYXNzZWQgd2lsbCBiZSB0cmllZAorICAgc2VxdWVudGlhbGx5LCBhbmQgdGhlIGZpcnN0IHZhbGlkIGxvY2FsZSB3aWxsIGJlIHVzZWQuCisKKworLi4gZnVuY3Rpb246OiBtYWtlX2JhZF9mZCgpCisKKyAgIENyZWF0ZSBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvciBieSBvcGVuaW5nIGFuZCBjbG9zaW5nIGEgdGVtcG9yYXJ5IGZpbGUsCisgICBhbmQgcmV0dXJuaW5nIGl0cyBkZXNjcmlwb3IuCisKKwogLi4gZnVuY3Rpb246OiBpbXBvcnRfbW9kdWxlKG5hbWUsIGRlcHJlY2F0ZWQ9RmFsc2UpCiAKICAgIFRoaXMgZnVuY3Rpb24gaW1wb3J0cyBhbmQgcmV0dXJucyB0aGUgbmFtZWQgbW9kdWxlLiBVbmxpa2UgYSBub3JtYWwKQEAgLTM3Miw3ICs0MzMsNyBAQAogICAgY2Fubm90IGJlIGltcG9ydGVkLgogCiAgICBNb2R1bGUgYW5kIHBhY2thZ2UgZGVwcmVjYXRpb24gbWVzc2FnZXMgYXJlIHN1cHByZXNzZWQgZHVyaW5nIHRoaXMgaW1wb3J0Ci0gICBpZiAqZGVwcmVjYXRlZCogaXMgOmNvbnN0OmBUcnVlYC4KKyAgIGlmICpkZXByZWNhdGVkKiBpcyBgYFRydWVgYC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKQEAgLTM5Niw5ICs0NTcsOSBAQAogICAgYGBzeXMubW9kdWxlc2BgIHdoZW4gdGhlIGZyZXNoIGltcG9ydCBpcyBjb21wbGV0ZS4KIAogICAgTW9kdWxlIGFuZCBwYWNrYWdlIGRlcHJlY2F0aW9uIG1lc3NhZ2VzIGFyZSBzdXBwcmVzc2VkIGR1cmluZyB0aGlzIGltcG9ydAotICAgaWYgKmRlcHJlY2F0ZWQqIGlzIDpjb25zdDpgVHJ1ZWAuCisgICBpZiAqZGVwcmVjYXRlZCogaXMgYGBUcnVlYGAuCiAKLSAgIFRoaXMgZnVuY3Rpb24gd2lsbCByYWlzZSA6ZXhjOmB1bml0dGVzdC5Ta2lwVGVzdGAgaXMgdGhlIG5hbWVkIG1vZHVsZQorICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJhaXNlIDpleGM6YHVuaXR0ZXN0LlNraXBUZXN0YCBpZiB0aGUgbmFtZWQgbW9kdWxlCiAgICBjYW5ub3QgYmUgaW1wb3J0ZWQuCiAKICAgIEV4YW1wbGUgdXNlOjoKQEAgLTQxMyw2ICs0NzQsNDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKKy4uIGZ1bmN0aW9uOjogYmluZF9wb3J0KHNvY2ssIGhvc3Q9SE9TVCkKKworICAgQmluZCB0aGUgc29ja2V0IHRvIGEgZnJlZSBwb3J0IGFuZCByZXR1cm4gdGhlIHBvcnQgbnVtYmVyLiAgUmVsaWVzIG9uCisgICBlcGhlbWVyYWwgcG9ydHMgaW4gb3JkZXIgdG8gZW5zdXJlIHdlIGFyZSB1c2luZyBhbiB1bmJvdW5kIHBvcnQuICBUaGlzIGlzCisgICBpbXBvcnRhbnQgYXMgbWFueSB0ZXN0cyBtYXkgYmUgcnVubmluZyBzaW11bHRhbmVvdXNseSwgZXNwZWNpYWxseSBpbiBhCisgICBidWlsZGJvdCBlbnZpcm9ubWVudC4gIFRoaXMgbWV0aG9kIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlCisgICBgYHNvY2suZmFtaWx5YGAgaXMgOmNvbnN0OmB+c29ja2V0LkFGX0lORVRgIGFuZCBgYHNvY2sudHlwZWBgIGlzCisgICA6Y29uc3Q6YH5zb2NrZXQuU09DS19TVFJFQU1gLCBhbmQgdGhlIHNvY2tldCBoYXMKKyAgIDpjb25zdDpgfnNvY2tldC5TT19SRVVTRUFERFJgIG9yIDpjb25zdDpgfnNvY2tldC5TT19SRVVTRVBPUlRgIHNldCBvbiBpdC4KKyAgIFRlc3RzIHNob3VsZCBuZXZlciBzZXQgdGhlc2Ugc29ja2V0IG9wdGlvbnMgZm9yIFRDUC9JUCBzb2NrZXRzLgorICAgVGhlIG9ubHkgY2FzZSBmb3Igc2V0dGluZyB0aGVzZSBvcHRpb25zIGlzIHRlc3RpbmcgbXVsdGljYXN0aW5nIHZpYQorICAgbXVsdGlwbGUgVURQIHNvY2tldHMuCisKKyAgIEFkZGl0aW9uYWxseSwgaWYgdGhlIDpjb25zdDpgfnNvY2tldC5TT19FWENMVVNJVkVBRERSVVNFYCBzb2NrZXQgb3B0aW9uIGlzCisgICBhdmFpbGFibGUgKGkuZS4gb24gV2luZG93cyksIGl0IHdpbGwgYmUgc2V0IG9uIHRoZSBzb2NrZXQuICBUaGlzIHdpbGwKKyAgIHByZXZlbnQgYW55b25lIGVsc2UgZnJvbSBiaW5kaW5nIHRvIG91ciBob3N0L3BvcnQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUKKyAgIHRlc3QuCisKKworLi4gZnVuY3Rpb246OiBmaW5kX3VudXNlZF9wb3J0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgc29ja3R5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKQorCisgICBSZXR1cm5zIGFuIHVudXNlZCBwb3J0IHRoYXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciBiaW5kaW5nLiAgVGhpcyBpcworICAgYWNoaWV2ZWQgYnkgY3JlYXRpbmcgYSB0ZW1wb3Jhcnkgc29ja2V0IHdpdGggdGhlIHNhbWUgZmFtaWx5IGFuZCB0eXBlIGFzCisgICB0aGUgYGBzb2NrYGAgcGFyYW1ldGVyIChkZWZhdWx0IGlzIDpjb25zdDpgfnNvY2tldC5BRl9JTkVUYCwKKyAgIDpjb25zdDpgfnNvY2tldC5TT0NLX1NUUkVBTWApLAorICAgYW5kIGJpbmRpbmcgaXQgdG8gdGhlIHNwZWNpZmllZCBob3N0IGFkZHJlc3MgKGRlZmF1bHRzIHRvIGBgMC4wLjAuMGBgKQorICAgd2l0aCB0aGUgcG9ydCBzZXQgdG8gMCwgZWxpY2l0aW5nIGFuIHVudXNlZCBlcGhlbWVyYWwgcG9ydCBmcm9tIHRoZSBPUy4KKyAgIFRoZSB0ZW1wb3Jhcnkgc29ja2V0IGlzIHRoZW4gY2xvc2VkIGFuZCBkZWxldGVkLCBhbmQgdGhlIGVwaGVtZXJhbCBwb3J0IGlzCisgICByZXR1cm5lZC4KKworICAgRWl0aGVyIHRoaXMgbWV0aG9kIG9yIDpmdW5jOmBiaW5kX3BvcnRgIHNob3VsZCBiZSB1c2VkIGZvciBhbnkgdGVzdHMKKyAgIHdoZXJlIGEgc2VydmVyIHNvY2tldCBuZWVkcyB0byBiZSBib3VuZCB0byBhIHBhcnRpY3VsYXIgcG9ydCBmb3IgdGhlCisgICBkdXJhdGlvbiBvZiB0aGUgdGVzdC4KKyAgIFdoaWNoIG9uZSB0byB1c2UgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBjYWxsaW5nIGNvZGUgaXMgY3JlYXRpbmcgYSBweXRob24KKyAgIHNvY2tldCwgb3IgaWYgYW4gdW51c2VkIHBvcnQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gYSBjb25zdHJ1Y3RvcgorICAgb3IgcGFzc2VkIHRvIGFuIGV4dGVybmFsIHByb2dyYW0gKGkuZS4gdGhlIGBgLWFjY2VwdGBgIGFyZ3VtZW50IHRvCisgICBvcGVuc3NsJ3Mgc19zZXJ2ZXIgbW9kZSkuICBBbHdheXMgcHJlZmVyIDpmdW5jOmBiaW5kX3BvcnRgIG92ZXIKKyAgIDpmdW5jOmBmaW5kX3VudXNlZF9wb3J0YCB3aGVyZSBwb3NzaWJsZS4gIFVzaW5nIGEgaGFyZCBjb2RlZCBwb3J0IGlzCisgICBkaXNjb3VyYWdlZCBzaW5jZSBpdCBjYW4gbWFrZXMgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSB0ZXN0IGltcG9zc2libGUgdG8KKyAgIHJ1biBzaW11bHRhbmVvdXNseSwgd2hpY2ggaXMgYSBwcm9ibGVtIGZvciBidWlsZGJvdHMuCisKKwogVGhlIDptb2Q6YHRlc3Quc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCiAuLiBjbGFzczo6IFRyYW5zaWVudFJlc291cmNlKGV4YywgKiprd2FyZ3MpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXh0LnJzdCBiL0RvYy9saWJyYXJ5L3RleHQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3YjY3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS90ZXh0LnJzdApAQCAtMCwwICsxLDI2IEBACisuLiBfc3RyaW5nc2VydmljZXM6CisuLiBfdGV4dHNlcnZpY2VzOgorCisqKioqKioqKioqKioqKioqKioqKioqKioKK1RleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcworKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBhIHdpZGUgcmFuZ2Ugb2Ygc3RyaW5nCittYW5pcHVsYXRpb24gb3BlcmF0aW9ucyBhbmQgb3RoZXIgdGV4dCBwcm9jZXNzaW5nIHNlcnZpY2VzLgorCitUaGUgOm1vZDpgY29kZWNzYCBtb2R1bGUgZGVzY3JpYmVkIHVuZGVyIDpyZWY6YGJpbmFyeXNlcnZpY2VzYCBpcyBhbHNvCitoaWdobHkgcmVsZXZhbnQgdG8gdGV4dCBwcm9jZXNzaW5nLiBJbiBhZGRpdGlvbiwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgorUHl0aG9uJ3MgYnVpbHQtaW4gc3RyaW5nIHR5cGUgaW4gOnJlZjpgdGV4dHNlcWAuCisKKworLi4gdG9jdHJlZTo6CisKKyAgIHN0cmluZy5yc3QKKyAgIHJlLnJzdAorICAgZGlmZmxpYi5yc3QKKyAgIHRleHR3cmFwLnJzdAorICAgdW5pY29kZWRhdGEucnN0CisgICBzdHJpbmdwcmVwLnJzdAorICAgcmVhZGxpbmUucnN0CisgICBybGNvbXBsZXRlci5yc3QKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGV4dHdyYXAucnN0IGIvRG9jL2xpYnJhcnkvdGV4dHdyYXAucnN0CmluZGV4IDU0N2RiNzkuLjBhYzFjYzYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RleHR3cmFwLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZXh0d3JhcC5yc3QKQEAgLTEyLDcgKzEyLDcgQEAKIAogVGhlIDptb2Q6YHRleHR3cmFwYCBtb2R1bGUgcHJvdmlkZXMgdHdvIGNvbnZlbmllbmNlIGZ1bmN0aW9ucywgOmZ1bmM6YHdyYXBgIGFuZAogOmZ1bmM6YGZpbGxgLCBhcyB3ZWxsIGFzIDpjbGFzczpgVGV4dFdyYXBwZXJgLCB0aGUgY2xhc3MgdGhhdCBkb2VzIGFsbCB0aGUgd29yaywKLWFuZCBhIHV0aWxpdHkgZnVuY3Rpb24gIDpmdW5jOmBkZWRlbnRgLiAgSWYgeW91J3JlIGp1c3Qgd3JhcHBpbmcgb3IgZmlsbGluZyBvbmUKK2FuZCB0d28gdXRpbGl0eSBmdW5jdGlvbnMsIDpmdW5jOmBkZWRlbnRgIGFuZCA6ZnVuYzpgaW5kZW50YC4gIElmIHlvdSdyZSBqdXN0IHdyYXBwaW5nIG9yIGZpbGxpbmcgb25lCiBvciB0d28gIHRleHQgc3RyaW5ncywgdGhlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgZ29vZCBlbm91Z2g7CiBvdGhlcndpc2UsICB5b3Ugc2hvdWxkIHVzZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YFRleHRXcmFwcGVyYCBmb3IgZWZmaWNpZW5jeS4KIApAQCAtNDUsOSArNDUsMTAgQEAKIGh5cGhlbmF0ZWQgd29yZHM7IG9ubHkgdGhlbiB3aWxsIGxvbmcgd29yZHMgYmUgYnJva2VuIGlmIG5lY2Vzc2FyeSwgdW5sZXNzCiA6YXR0cjpgVGV4dFdyYXBwZXIuYnJlYWtfbG9uZ193b3Jkc2AgaXMgc2V0IHRvIGZhbHNlLgogCi1BbiBhZGRpdGlvbmFsIHV0aWxpdHkgZnVuY3Rpb24sIDpmdW5jOmBkZWRlbnRgLCBpcyBwcm92aWRlZCB0byByZW1vdmUKLWluZGVudGF0aW9uIGZyb20gc3RyaW5ncyB0aGF0IGhhdmUgdW53YW50ZWQgd2hpdGVzcGFjZSB0byB0aGUgbGVmdCBvZiB0aGUgdGV4dC4KLQorVHdvIGFkZGl0aW9uYWwgdXRpbGl0eSBmdW5jdGlvbiwgOmZ1bmM6YGRlZGVudGAgYW5kIDpmdW5jOmBpbmRlbnRgLCBhcmUKK3Byb3ZpZGVkIHRvIHJlbW92ZSBpbmRlbnRhdGlvbiBmcm9tIHN0cmluZ3MgdGhhdCBoYXZlIHVud2FudGVkIHdoaXRlc3BhY2UKK3RvIHRoZSBsZWZ0IG9mIHRoZSB0ZXh0IGFuZCB0byBhZGQgYW4gYXJiaXRyYXJ5IHByZWZpeCB0byBzZWxlY3RlZCBsaW5lcworaW4gYSBibG9jayBvZiB0ZXh0LgogCiAuLiBmdW5jdGlvbjo6IGRlZGVudCh0ZXh0KQogCkBAIC03Miw2ICs3MywzMiBAQAogICAgICAgICAgIHByaW50KHJlcHIoZGVkZW50KHMpKSkgICMgcHJpbnRzICdoZWxsb1xuICB3b3JsZFxuJwogCiAKKy4uIGZ1bmN0aW9uOjogaW5kZW50KHRleHQsIHByZWZpeCwgcHJlZGljYXRlPU5vbmUpCisKKyAgIEFkZCAqcHJlZml4KiB0byB0aGUgYmVnaW5uaW5nIG9mIHNlbGVjdGVkIGxpbmVzIGluICp0ZXh0Ki4KKworICAgTGluZXMgYXJlIHNlcGFyYXRlZCBieSBjYWxsaW5nIGBgdGV4dC5zcGxpdGxpbmVzKFRydWUpYGAuCisKKyAgIEJ5IGRlZmF1bHQsICpwcmVmaXgqIGlzIGFkZGVkIHRvIGFsbCBsaW5lcyB0aGF0IGRvIG5vdCBjb25zaXN0CisgICBzb2xlbHkgb2Ygd2hpdGVzcGFjZSAoaW5jbHVkaW5nIGFueSBsaW5lIGVuZGluZ3MpLgorCisgICBGb3IgZXhhbXBsZTo6CisKKyAgICAgID4+PiBzID0gJ2hlbGxvXG5cbiBcbndvcmxkJworICAgICAgPj4+IGluZGVudChzLCAnICAnKQorICAgICAgJyAgaGVsbG9cblxuIFxuICB3b3JsZCcKKworICAgVGhlIG9wdGlvbmFsICpwcmVkaWNhdGUqIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgd2hpY2ggbGluZXMKKyAgIGFyZSBpbmRlbnRlZC4gRm9yIGV4YW1wbGUsIGl0IGlzIGVhc3kgdG8gYWRkICpwcmVmaXgqIHRvIGV2ZW4gZW1wdHkKKyAgIGFuZCB3aGl0ZXNwYWNlLW9ubHkgbGluZXM6OgorCisgICAgICA+Pj4gcHJpbnQoaW5kZW50KHMsICcrICcsIGxhbWJkYSBsaW5lOiBUcnVlKSkKKyAgICAgICsgaGVsbG8KKyAgICAgICsKKyAgICAgICsKKyAgICAgICsgd29ybGQKKworCiAuLiBjbGFzczo6IFRleHRXcmFwcGVyKCoqa3dhcmdzKQogCiAgICBUaGUgOmNsYXNzOmBUZXh0V3JhcHBlcmAgY29uc3RydWN0b3IgYWNjZXB0cyBhIG51bWJlciBvZiBvcHRpb25hbCBrZXl3b3JkCkBAIC0xMDcsNiArMTM0LDE1IEBACiAgICAgICBleHBhbmRlZCB0byBzcGFjZXMgdXNpbmcgdGhlIDptZXRoOmBleHBhbmR0YWJzYCBtZXRob2Qgb2YgKnRleHQqLgogCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IHRhYnNpemUKKworICAgICAgKGRlZmF1bHQ6IGBgOGBgKSBJZiA6YXR0cjpgZXhwYW5kX3RhYnNgIGlzIHRydWUsIHRoZW4gYWxsIHRhYiBjaGFyYWN0ZXJzCisgICAgICBpbiAqdGV4dCogd2lsbCBiZSBleHBhbmRlZCB0byB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICBjdXJyZW50IGNvbHVtbiBhbmQgdGhlIGdpdmVuIHRhYiBzaXplLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAgICAuLiBhdHRyaWJ1dGU6OiByZXBsYWNlX3doaXRlc3BhY2UKIAogICAgICAgKGRlZmF1bHQ6IGBgVHJ1ZWBgKSBJZiB0cnVlLCBhZnRlciB0YWIgZXhwYW5zaW9uIGJ1dCBiZWZvcmUgd3JhcHBpbmcsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aHJlYWRpbmcucnN0IGIvRG9jL2xpYnJhcnkvdGhyZWFkaW5nLnJzdAppbmRleCA0MzA4N2VmLi4yNzVhNTc4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aHJlYWRpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RocmVhZGluZy5yc3QKQEAgLTIwLDE3ICsyMCw2IEBACiAgICBtZXRob2RzIGFuZCBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgaW4gdGhlIFB5dGhvbiAyLnggc2VyaWVzIGFyZSBzdGlsbAogICAgc3VwcG9ydGVkIGJ5IHRoaXMgbW9kdWxlLgogCi0uLiBpbXBsLWRldGFpbDo6Ci0KLSAgIER1ZSB0byB0aGUgOnRlcm06YEdsb2JhbCBJbnRlcnByZXRlciBMb2NrYCwgaW4gQ1B5dGhvbiBvbmx5IG9uZSB0aHJlYWQKLSAgIGNhbiBleGVjdXRlIFB5dGhvbiBjb2RlIGF0IG9uY2UgKGV2ZW4gdGhvdWdoIGNlcnRhaW4gcGVyZm9ybWFuY2Utb3JpZW50ZWQKLSAgIGxpYnJhcmllcyBtaWdodCBvdmVyY29tZSB0aGlzIGxpbWl0YXRpb24pLgotICAgSWYgeW91IHdhbnQgeW91ciBhcHBsaWNhdGlvbiB0byBtYWtlIGJldHRlciBvZiB1c2Ugb2YgdGhlIGNvbXB1dGF0aW9uYWwKLSAgIHJlc291cmNlcyBvZiBtdWx0aS1jb3JlIG1hY2hpbmVzLCB5b3UgYXJlIGFkdmlzZWQgdG8gdXNlCi0gICA6bW9kOmBtdWx0aXByb2Nlc3NpbmdgIG9yIDpjbGFzczpgY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3JgLgotICAgSG93ZXZlciwgdGhyZWFkaW5nIGlzIHN0aWxsIGFuIGFwcHJvcHJpYXRlIG1vZGVsIGlmIHlvdSB3YW50IHRvIHJ1bgotICAgbXVsdGlwbGUgSS9PLWJvdW5kIHRhc2tzIHNpbXVsdGFuZW91c2x5LgotCiAKIFRoaXMgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYW5kIG9iamVjdHM6CiAKQEAgLTU5LDYgKzQ4LDE3IEBACiAgICByZXR1cm5lZC4KIAogCisuLiBmdW5jdGlvbjo6IGdldF9pZGVudCgpCisKKyAgIFJldHVybiB0aGUgJ3RocmVhZCBpZGVudGlmaWVyJyBvZiB0aGUgY3VycmVudCB0aHJlYWQuICBUaGlzIGlzIGEgbm9uemVybworICAgaW50ZWdlci4gIEl0cyB2YWx1ZSBoYXMgbm8gZGlyZWN0IG1lYW5pbmc7IGl0IGlzIGludGVuZGVkIGFzIGEgbWFnaWMgY29va2llCisgICB0byBiZSB1c2VkIGUuZy4gdG8gaW5kZXggYSBkaWN0aW9uYXJ5IG9mIHRocmVhZC1zcGVjaWZpYyBkYXRhLiAgVGhyZWFkCisgICBpZGVudGlmaWVycyBtYXkgYmUgcmVjeWNsZWQgd2hlbiBhIHRocmVhZCBleGl0cyBhbmQgYW5vdGhlciB0aHJlYWQgaXMKKyAgIGNyZWF0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogZW51bWVyYXRlKCkKIAogICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgOmNsYXNzOmBUaHJlYWRgIG9iamVjdHMgY3VycmVudGx5IGFsaXZlLiAgVGhlIGxpc3QKQEAgLTEzNCw3ICsxMzQsNiBAQAogCiAKIC4uIGNsYXNzOjogVGhyZWFkCi0gICA6bm9pbmRleDoKIAogICAgQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSB0aHJlYWQgb2YgY29udHJvbC4gIFRoaXMgY2xhc3MgY2FuIGJlIHNhZmVseQogICAgc3ViY2xhc3NlZCBpbiBhIGxpbWl0ZWQgZmFzaGlvbi4KQEAgLTE3NCw3ICsxNzMsNyBAQAogICAgKnNpemUqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgc3RhY2sgc2l6ZSB0byBiZSB1c2VkIGZvciBzdWJzZXF1ZW50bHkgY3JlYXRlZAogICAgdGhyZWFkcywgYW5kIG11c3QgYmUgMCAodXNlIHBsYXRmb3JtIG9yIGNvbmZpZ3VyZWQgZGVmYXVsdCkgb3IgYSBwb3NpdGl2ZQogICAgaW50ZWdlciB2YWx1ZSBvZiBhdCBsZWFzdCAzMiw3NjggKDMya0IpLiBJZiBjaGFuZ2luZyB0aGUgdGhyZWFkIHN0YWNrIHNpemUgaXMKLSAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFRocmVhZEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgc3BlY2lmaWVkIHN0YWNrIHNpemUgaXMKKyAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCiAgICBpbnZhbGlkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIHN0YWNrIHNpemUgaXMgdW5tb2RpZmllZC4gIDMya0IKICAgIGlzIGN1cnJlbnRseSB0aGUgbWluaW11bSBzdXBwb3J0ZWQgc3RhY2sgc2l6ZSB2YWx1ZSB0byBndWFyYW50ZWUgc3VmZmljaWVudAogICAgc3RhY2sgc3BhY2UgZm9yIHRoZSBpbnRlcnByZXRlciBpdHNlbGYuICBOb3RlIHRoYXQgc29tZSBwbGF0Zm9ybXMgbWF5IGhhdmUKQEAgLTIzOSwxMCArMjM4LDExIEBACiBBIHRocmVhZCBoYXMgYSBuYW1lLiAgVGhlIG5hbWUgY2FuIGJlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IsIGFuZCByZWFkIG9yCiBjaGFuZ2VkIHRocm91Z2ggdGhlIDphdHRyOmB+VGhyZWFkLm5hbWVgIGF0dHJpYnV0ZS4KIAotQSB0aHJlYWQgY2FuIGJlIGZsYWdnZWQgYXMgYSAiZGFlbW9uIHRocmVhZCIuICBUaGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgZmxhZwotaXMgdGhhdCB0aGUgZW50aXJlIFB5dGhvbiBwcm9ncmFtIGV4aXRzIHdoZW4gb25seSBkYWVtb24gdGhyZWFkcyBhcmUgbGVmdC4KLVRoZSBpbml0aWFsIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBjcmVhdGluZyB0aHJlYWQuICBUaGUgZmxhZyBjYW4gYmUKLXNldCB0aHJvdWdoIHRoZSA6YXR0cjpgflRocmVhZC5kYWVtb25gIHByb3BlcnR5LgorQSB0aHJlYWQgY2FuIGJlIGZsYWdnZWQgYXMgYSAiZGFlbW9uIHRocmVhZCIuICBUaGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgZmxhZyBpcwordGhhdCB0aGUgZW50aXJlIFB5dGhvbiBwcm9ncmFtIGV4aXRzIHdoZW4gb25seSBkYWVtb24gdGhyZWFkcyBhcmUgbGVmdC4gIFRoZQoraW5pdGlhbCB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgY3JlYXRpbmcgdGhyZWFkLiAgVGhlIGZsYWcgY2FuIGJlIHNldAordGhyb3VnaCB0aGUgOmF0dHI6YH5UaHJlYWQuZGFlbW9uYCBwcm9wZXJ0eSBvciB0aGUgKmRhZW1vbiogY29uc3RydWN0b3IKK2FyZ3VtZW50LgogCiBUaGVyZSBpcyBhICJtYWluIHRocmVhZCIgb2JqZWN0OyB0aGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBpbml0aWFsIHRocmVhZCBvZgogY29udHJvbCBpbiB0aGUgUHl0aG9uIHByb2dyYW0uICBJdCBpcyBub3QgYSBkYWVtb24gdGhyZWFkLgpAQCAtMjU1LDcgKzI1NSw4IEBACiBzaW5jZSBpdCBpcyBpbXBvc3NpYmxlIHRvIGRldGVjdCB0aGUgdGVybWluYXRpb24gb2YgYWxpZW4gdGhyZWFkcy4KIAogCi0uLiBjbGFzczo6IFRocmVhZChncm91cD1Ob25lLCB0YXJnZXQ9Tm9uZSwgbmFtZT1Ob25lLCBhcmdzPSgpLCBrd2FyZ3M9e30pCisuLiBjbGFzczo6IFRocmVhZChncm91cD1Ob25lLCB0YXJnZXQ9Tm9uZSwgbmFtZT1Ob25lLCBhcmdzPSgpLCBrd2FyZ3M9e30sCisgICAgICAgICAgICAgICAgICB2ZXJib3NlPU5vbmUsICosIGRhZW1vbj1Ob25lKQogCiAgICBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCBhbHdheXMgYmUgY2FsbGVkIHdpdGgga2V5d29yZCBhcmd1bWVudHMuICBBcmd1bWVudHMKICAgIGFyZToKQEAgLTI3NCwxMCArMjc1LDE5IEBACiAgICAqa3dhcmdzKiBpcyBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZCBhcmd1bWVudHMgZm9yIHRoZSB0YXJnZXQgaW52b2NhdGlvbi4KICAgIERlZmF1bHRzIHRvIGBge31gYC4KIAorICAgKnZlcmJvc2UqIGlzIGEgZmxhZyB1c2VkIGZvciBkZWJ1Z2dpbmcgbWVzc2FnZXMuCisKKyAgIElmIG5vdCBgYE5vbmVgYCwgKmRhZW1vbiogZXhwbGljaXRseSBzZXRzIHdoZXRoZXIgdGhlIHRocmVhZCBpcyBkYWVtb25pYy4KKyAgIElmIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHRoZSBkYWVtb25pYyBwcm9wZXJ0eSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUKKyAgIGN1cnJlbnQgdGhyZWFkLgorCiAgICBJZiB0aGUgc3ViY2xhc3Mgb3ZlcnJpZGVzIHRoZSBjb25zdHJ1Y3RvciwgaXQgbXVzdCBtYWtlIHN1cmUgdG8gaW52b2tlIHRoZQogICAgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciAoYGBUaHJlYWQuX19pbml0X18oKWBgKSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZSB0bwogICAgdGhlIHRocmVhZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZGFlbW9uKiBhcmd1bWVudC4KKwogICAgLi4gbWV0aG9kOjogc3RhcnQoKQogCiAgICAgICBTdGFydCB0aGUgdGhyZWFkJ3MgYWN0aXZpdHkuCkBAIC0zNjgsNiArMzc4LDE4IEBACiAgICAgICBwcm9wZXJ0eSBpbnN0ZWFkLgogCiAKKy4uIGltcGwtZGV0YWlsOjoKKworICAgRHVlIHRvIHRoZSA6dGVybTpgR2xvYmFsIEludGVycHJldGVyIExvY2tgLCBpbiBDUHl0aG9uIG9ubHkgb25lIHRocmVhZAorICAgY2FuIGV4ZWN1dGUgUHl0aG9uIGNvZGUgYXQgb25jZSAoZXZlbiB0aG91Z2ggY2VydGFpbiBwZXJmb3JtYW5jZS1vcmllbnRlZAorICAgbGlicmFyaWVzIG1pZ2h0IG92ZXJjb21lIHRoaXMgbGltaXRhdGlvbikuCisgICBJZiB5b3Ugd2FudCB5b3VyIGFwcGxpY2F0aW9uIHRvIG1ha2UgYmV0dGVyIG9mIHVzZSBvZiB0aGUgY29tcHV0YXRpb25hbAorICAgcmVzb3VyY2VzIG9mIG11bHRpLWNvcmUgbWFjaGluZXMsIHlvdSBhcmUgYWR2aXNlZCB0byB1c2UKKyAgIDptb2Q6YG11bHRpcHJvY2Vzc2luZ2Agb3IgOmNsYXNzOmBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvcmAuCisgICBIb3dldmVyLCB0aHJlYWRpbmcgaXMgc3RpbGwgYW4gYXBwcm9wcmlhdGUgbW9kZWwgaWYgeW91IHdhbnQgdG8gcnVuCisgICBtdWx0aXBsZSBJL08tYm91bmQgdGFza3Mgc2ltdWx0YW5lb3VzbHkuCisKKwogLi4gX2xvY2stb2JqZWN0czoKIAogTG9jayBPYmplY3RzCkBAIC00MzUsNyArNDU3LDcgQEAKICAgIGFyZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBsb2NrIHRvIGJlY29tZSB1bmxvY2tlZCwgYWxsb3cgZXhhY3RseSBvbmUgb2YgdGhlbQogICAgdG8gcHJvY2VlZC4KIAotICAgV2hlbiBpbnZva2VkIG9uIGFuIHVubG9ja2VkIGxvY2ssIGEgOmV4YzpgVGhyZWFkRXJyb3JgIGlzIHJhaXNlZC4KKyAgIFdoZW4gaW52b2tlZCBvbiBhbiB1bmxvY2tlZCBsb2NrLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgogCiAgICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUuCiAKQEAgLTk3MywyNyArOTk1LDMgQEAKIEN1cnJlbnRseSwgOmNsYXNzOmBMb2NrYCwgOmNsYXNzOmBSTG9ja2AsIDpjbGFzczpgQ29uZGl0aW9uYCwKIDpjbGFzczpgU2VtYXBob3JlYCwgYW5kIDpjbGFzczpgQm91bmRlZFNlbWFwaG9yZWAgb2JqZWN0cyBtYXkgYmUgdXNlZCBhcwogOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBjb250ZXh0IG1hbmFnZXJzLgotCi0KLS4uIF90aHJlYWRlZC1pbXBvcnRzOgotCi1JbXBvcnRpbmcgaW4gdGhyZWFkZWQgY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotV2hpbGUgdGhlIGltcG9ydCBtYWNoaW5lcnkgaXMgdGhyZWFkLXNhZmUsIHRoZXJlIGFyZSB0d28ga2V5IHJlc3RyaWN0aW9ucyBvbgotdGhyZWFkZWQgaW1wb3J0cyBkdWUgdG8gaW5oZXJlbnQgbGltaXRhdGlvbnMgaW4gdGhlIHdheSB0aGF0IHRocmVhZC1zYWZldHkgaXMKLXByb3ZpZGVkOgotCi0qIEZpcnN0bHksIG90aGVyIHRoYW4gaW4gdGhlIG1haW4gbW9kdWxlLCBhbiBpbXBvcnQgc2hvdWxkIG5vdCBoYXZlIHRoZQotICBzaWRlIGVmZmVjdCBvZiBzcGF3bmluZyBhIG5ldyB0aHJlYWQgYW5kIHRoZW4gd2FpdGluZyBmb3IgdGhhdCB0aHJlYWQgaW4KLSAgYW55IHdheS4gRmFpbGluZyB0byBhYmlkZSBieSB0aGlzIHJlc3RyaWN0aW9uIGNhbiBsZWFkIHRvIGEgZGVhZGxvY2sgaWYKLSAgdGhlIHNwYXduZWQgdGhyZWFkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgYXR0ZW1wdHMgdG8gaW1wb3J0IGEgbW9kdWxlLgotKiBTZWNvbmRseSwgYWxsIGltcG9ydCBhdHRlbXB0cyBtdXN0IGJlIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGludGVycHJldGVyCi0gIHN0YXJ0cyBzaHV0dGluZyBpdHNlbGYgZG93bi4gVGhpcyBjYW4gYmUgbW9zdCBlYXNpbHkgYWNoaWV2ZWQgYnkgb25seQotICBwZXJmb3JtaW5nIGltcG9ydHMgZnJvbSBub24tZGFlbW9uIHRocmVhZHMgY3JlYXRlZCB0aHJvdWdoIHRoZSB0aHJlYWRpbmcKLSAgbW9kdWxlLiBEYWVtb24gdGhyZWFkcyBhbmQgdGhyZWFkcyBjcmVhdGVkIGRpcmVjdGx5IHdpdGggdGhlIHRocmVhZAotICBtb2R1bGUgd2lsbCByZXF1aXJlIHNvbWUgb3RoZXIgZm9ybSBvZiBzeW5jaHJvbml6YXRpb24gdG8gZW5zdXJlIHRoZXkgZG8KLSAgbm90IGF0dGVtcHQgaW1wb3J0cyBhZnRlciBzeXN0ZW0gc2h1dGRvd24gaGFzIGNvbW1lbmNlZC4gRmFpbHVyZSB0bwotICBhYmlkZSBieSB0aGlzIHJlc3RyaWN0aW9uIHdpbGwgbGVhZCB0byBpbnRlcm1pdHRlbnQgZXhjZXB0aW9ucyBhbmQKLSAgY3Jhc2hlcyBkdXJpbmcgaW50ZXJwcmV0ZXIgc2h1dGRvd24gKGFzIHRoZSBsYXRlIGltcG9ydHMgYXR0ZW1wdCB0bwotICBhY2Nlc3MgbWFjaGluZXJ5IHdoaWNoIGlzIG5vIGxvbmdlciBpbiBhIHZhbGlkIHN0YXRlKS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWUucnN0IGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKaW5kZXggZTBjNzAwNy4uNzk5MTQwYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKQEAgLTQxLDI1ICs0MSw2IEBACiAgIHBhcnNlZCwgdGhleSBhcmUgY29udmVydGVkIGFjY29yZGluZyB0byB0aGUgUE9TSVggYW5kIElTTyBDIHN0YW5kYXJkczogdmFsdWVzCiAgIDY5LS05OSBhcmUgbWFwcGVkIHRvIDE5NjktLTE5OTksIGFuZCB2YWx1ZXMgMC0tNjggYXJlIG1hcHBlZCB0byAyMDAwLS0yMDY4LgogCi0gIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB5ZWFycyB3aXRoIGxlc3MgdGhhbiA0IGRpZ2l0cyBhcmUgdHJlYXRlZAotICBzcGVjaWFsbHkgYnkgOmZ1bmM6YGFzY3RpbWVgLCA6ZnVuYzpgbWt0aW1lYCwgYW5kIDpmdW5jOmBzdHJmdGltZWAgZnVuY3Rpb25zCi0gIHRoYXQgb3BlcmF0ZSBvbiBhIDktdHVwbGUgb3IgOmNsYXNzOmBzdHJ1Y3RfdGltZWAgdmFsdWVzLiBJZiB5ZWFyICh0aGUgZmlyc3QKLSAgdmFsdWUgaW4gdGhlIDktdHVwbGUpIGlzIHNwZWNpZmllZCB3aXRoIGxlc3MgdGhhbiA0IGRpZ2l0cywgaXRzIGludGVycHJldGF0aW9uCi0gIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIGBgYWNjZXB0MmR5ZWFyYGAgdmFyaWFibGUuCi0KLSAgSWYgYGBhY2NlcHQyZHllYXJgYCBpcyB0cnVlIChkZWZhdWx0KSwgYSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGJlaGF2aW9yIGlzCi0gIGludm9rZWQgYXMgZm9sbG93czoKLQotICAgIC0gZm9yIDItZGlnaXQgeWVhciwgY2VudHVyeSBpcyBndWVzc2VkIGFjY29yZGluZyB0byBQT1NJWCBydWxlcyBmb3IKLSAgICAgIGBgJXlgYCBzdHJwdGltZSBmb3JtYXQuICBBIGRlcHJlY2F0aW9uIHdhcm5pbmcgaXMgaXNzdWVkIHdoZW4gY2VudHVyeQotICAgICAgaW5mb3JtYXRpb24gaXMgZ3Vlc3NlZCBpbiB0aGlzIHdheS4KLQotICAgIC0gZm9yIDMtZGlnaXQgb3IgbmVnYXRpdmUgeWVhciwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgotCi0gIElmIGBgYWNjZXB0MmR5ZWFyYGAgaXMgZmFsc2UgKHNldCBieSB0aGUgcHJvZ3JhbSBvciBhcyBhIHJlc3VsdCBvZiBhCi0gIG5vbi1lbXB0eSB2YWx1ZSBhc3NpZ25lZCB0byBgYFBZVEhPTlkyS2BgIGVudmlyb25tZW50IHZhcmlhYmxlKSBhbGwgeWVhcgotICB2YWx1ZXMgYXJlIGludGVycHJldGVkIGFzIGdpdmVuLgotCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IFVUQwogICAgc2luZ2xlOiBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZQpAQCAtOTYsNiArNzcsMTEgQEAKIAogICBTZWUgOmNsYXNzOmBzdHJ1Y3RfdGltZWAgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlc2Ugb2JqZWN0cy4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICBUaGUgOmNsYXNzOmBzdHJ1Y3RfdGltZWAgdHlwZSB3YXMgZXh0ZW5kZWQgdG8gcHJvdmlkZSB0aGUgOmF0dHI6YHRtX2dtdG9mZmAKKyAgICAgYW5kIDphdHRyOmB0bV96b25lYCBhdHRyaWJ1dGVzIHdoZW4gcGxhdGZvcm0gc3VwcG9ydHMgY29ycmVzcG9uZGluZworICAgICBgYHN0cnVjdCB0bWBgIG1lbWJlcnMuCisKICogVXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIGNvbnZlcnQgYmV0d2VlbiB0aW1lIHJlcHJlc2VudGF0aW9uczoKIAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC0xMTcsMjQgKzEwMyw2IEBACiAKIFRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhbmQgZGF0YSBpdGVtczoKIAotCi0uLiBkYXRhOjogYWNjZXB0MmR5ZWFyCi0KLSAgIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHR3by1kaWdpdCB5ZWFyIHZhbHVlcyB3aWxsIGJlCi0gICBtYXBwZWQgdG8gMTk2OS0tMjA2OCByYW5nZSBieSA6ZnVuYzpgYXNjdGltZWAsIDpmdW5jOmBta3RpbWVgLCBhbmQKLSAgIDpmdW5jOmBzdHJmdGltZWAgZnVuY3Rpb25zLiAgVGhpcyBpcyB0cnVlIGJ5IGRlZmF1bHQsIGJ1dCB3aWxsIGJlCi0gICBzZXQgdG8gZmFsc2UgaWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTlkyS2AgaGFzCi0gICBiZWVuIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcuICBJdCBtYXkgYWxzbyBiZSBtb2RpZmllZCBhdCBydW4KLSAgIHRpbWUuCi0KLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjIKLSAgICAgIE1hcHBpbmcgb2YgMi1kaWdpdCB5ZWFyIHZhbHVlcyBieSA6ZnVuYzpgYXNjdGltZWAsCi0gICAgICA6ZnVuYzpgbWt0aW1lYCwgYW5kIDpmdW5jOmBzdHJmdGltZWAgZnVuY3Rpb25zIHRvIDE5NjktLTIwNjgKLSAgICAgIHJhbmdlIGlzIGRlcHJlY2F0ZWQuICBQcm9ncmFtcyB0aGF0IG5lZWQgdG8gcHJvY2VzcyAyLWRpZ2l0Ci0gICAgICB5ZWFycyBzaG91bGQgdXNlIGBgJXlgYCBjb2RlIGF2YWlsYWJsZSBpbiA6ZnVuYzpgc3RycHRpbWVgCi0gICAgICBmdW5jdGlvbiBvciBjb252ZXJ0IDItZGlnaXQgeWVhciB2YWx1ZXMgdG8gNC1kaWdpdCB0aGVtc2VsdmVzLgotCi0KIC4uIGRhdGE6OiBhbHR6b25lCiAKICAgIFRoZSBvZmZzZXQgb2YgdGhlIGxvY2FsIERTVCB0aW1lem9uZSwgaW4gc2Vjb25kcyB3ZXN0IG9mIFVUQywgaWYgb25lIGlzIGRlZmluZWQuCkBAIC0xNTIsNyArMTIwLDggQEAKIAogICAgLi4gbm90ZTo6CiAKLSAgICAgIFVubGlrZSB0aGUgQyBmdW5jdGlvbiBvZiB0aGUgc2FtZSBuYW1lLCB0aGVyZSBpcyBubyB0cmFpbGluZyBuZXdsaW5lLgorICAgICAgVW5saWtlIHRoZSBDIGZ1bmN0aW9uIG9mIHRoZSBzYW1lIG5hbWUsIDpmdW5jOmBhc2N0aW1lYCBkb2VzIG5vdCBhZGQgYQorICAgICAgdHJhaWxpbmcgbmV3bGluZS4KIAogCiAuLiBmdW5jdGlvbjo6IGNsb2NrKCkKQEAgLTE3Miw2ICsxNDEsOTcgQEAKICAgIDpjOmZ1bmM6YFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyYC4gVGhlIHJlc29sdXRpb24gaXMgdHlwaWNhbGx5IGJldHRlciB0aGFuIG9uZQogICAgbWljcm9zZWNvbmQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoZSBiZWhhdmlvdXIgb2YgdGhpcyBmdW5jdGlvbiBkZXBlbmRzIG9uIHRoZSBwbGF0Zm9ybTogdXNlCisgICAgICA6ZnVuYzpgcGVyZl9jb3VudGVyYCBvciA6ZnVuYzpgcHJvY2Vzc190aW1lYCBpbnN0ZWFkLCBkZXBlbmRpbmcgb24geW91cgorICAgICAgcmVxdWlyZW1lbnRzLCB0byBoYXZlIGEgd2VsbCBkZWZpbmVkIGJlaGF2aW91ci4KKworCisuLiBmdW5jdGlvbjo6IGNsb2NrX2dldHJlcyhjbGtfaWQpCisKKyAgIFJldHVybiB0aGUgcmVzb2x1dGlvbiAocHJlY2lzaW9uKSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrICpjbGtfaWQqLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogY2xvY2tfZ2V0dGltZShjbGtfaWQpCisKKyAgIFJldHVybiB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrICpjbGtfaWQqLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogY2xvY2tfc2V0dGltZShjbGtfaWQsIHRpbWUpCisKKyAgIFNldCB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrICpjbGtfaWQqLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19ISUdIUkVTCisKKyAgIFRoZSBTb2xhcmlzIE9TIGhhcyBhIENMT0NLX0hJR0hSRVMgdGltZXIgdGhhdCBhdHRlbXB0cyB0byB1c2UgYW4gb3B0aW1hbAorICAgaGFyZHdhcmUgc291cmNlLCBhbmQgbWF5IGdpdmUgY2xvc2UgdG8gbmFub3NlY29uZCByZXNvbHV0aW9uLiAgQ0xPQ0tfSElHSFJFUworICAgaXMgdGhlIG5vbmFkanVzdGFibGUsIGhpZ2gtcmVzb2x1dGlvbiBjbG9jay4KKworICAgQXZhaWxhYmlsaXR5OiBTb2xhcmlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfTU9OT1RPTklDCisKKyAgIENsb2NrIHRoYXQgY2Fubm90IGJlIHNldCBhbmQgcmVwcmVzZW50cyBtb25vdG9uaWMgdGltZSBzaW5jZSBzb21lIHVuc3BlY2lmaWVkCisgICBzdGFydGluZyBwb2ludC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfTU9OT1RPTklDX1JBVworCisgICBTaW1pbGFyIHRvIDpkYXRhOmBDTE9DS19NT05PVE9OSUNgLCBidXQgcHJvdmlkZXMgYWNjZXNzIHRvIGEgcmF3CisgICBoYXJkd2FyZS1iYXNlZCB0aW1lIHRoYXQgaXMgbm90IHN1YmplY3QgdG8gTlRQIGFkanVzdG1lbnRzLgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4IDIuNi4yOCBvciBsYXRlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRAorCisgICBIaWdoLXJlc29sdXRpb24gcGVyLXByb2Nlc3MgdGltZXIgZnJvbSB0aGUgQ1BVLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19SRUFMVElNRQorCisgICBTeXN0ZW0td2lkZSByZWFsLXRpbWUgY2xvY2suICBTZXR0aW5nIHRoaXMgY2xvY2sgcmVxdWlyZXMgYXBwcm9wcmlhdGUKKyAgIHByaXZpbGVnZXMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECisKKyAgIFRocmVhZC1zcGVjaWZpYyBDUFUtdGltZSBjbG9jay4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAuLiBmdW5jdGlvbjo6IGN0aW1lKFtzZWNzXSkKIApAQCAtMTg2LDYgKzI0NiwzMSBAQAogICAgTm9uemVybyBpZiBhIERTVCB0aW1lem9uZSBpcyBkZWZpbmVkLgogCiAKKy4uIGZ1bmN0aW9uOjogZ2V0X2Nsb2NrX2luZm8obmFtZSkKKworICAgR2V0IGluZm9ybWF0aW9uIG9uIHRoZSBzcGVjaWZpZWQgY2xvY2sgYXMgYSBuYW1lc3BhY2Ugb2JqZWN0LgorICAgU3VwcG9ydGVkIGNsb2NrIG5hbWVzIGFuZCB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbnMgdG8gcmVhZCB0aGVpciB2YWx1ZQorICAgYXJlOgorCisgICAqIGBgJ2Nsb2NrJ2BgOiA6ZnVuYzpgdGltZS5jbG9ja2AKKyAgICogYGAnbW9ub3RvbmljJ2BgOiA6ZnVuYzpgdGltZS5tb25vdG9uaWNgCisgICAqIGBgJ3BlcmZfY291bnRlcidgYDogOmZ1bmM6YHRpbWUucGVyZl9jb3VudGVyYAorICAgKiBgYCdwcm9jZXNzX3RpbWUnYGA6IDpmdW5jOmB0aW1lLnByb2Nlc3NfdGltZWAKKyAgICogYGAndGltZSdgYDogOmZ1bmM6YHRpbWUudGltZWAKKworICAgVGhlIHJlc3VsdCBoYXMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorCisgICAtICphZGp1c3RhYmxlKjogYGBUcnVlYGAgaWYgdGhlIGNsb2NrIGNhbiBiZSBjaGFuZ2VkIGF1dG9tYXRpY2FsbHkgKGUuZy4gYnkKKyAgICAgYSBOVFAgZGFlbW9uKSBvciBtYW51YWxseSBieSB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3IsIGBgRmFsc2VgYCBvdGhlcndpc2UKKyAgIC0gKmltcGxlbWVudGF0aW9uKjogVGhlIG5hbWUgb2YgdGhlIHVuZGVybHlpbmcgQyBmdW5jdGlvbiB1c2VkIHRvIGdldAorICAgICB0aGUgY2xvY2sgdmFsdWUKKyAgIC0gKm1vbm90b25pYyo6IGBgVHJ1ZWBgIGlmIHRoZSBjbG9jayBjYW5ub3QgZ28gYmFja3dhcmQsCisgICAgIGBgRmFsc2VgYCBvdGhlcndpc2UKKyAgIC0gKnJlc29sdXRpb24qOiBUaGUgcmVzb2x1dGlvbiBvZiB0aGUgY2xvY2sgaW4gc2Vjb25kcyAoOmNsYXNzOmBmbG9hdGApCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogZ210aW1lKFtzZWNzXSkKIAogICAgQ29udmVydCBhIHRpbWUgZXhwcmVzc2VkIGluIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIHRvIGEgOmNsYXNzOmBzdHJ1Y3RfdGltZWAgaW4KQEAgLTIxNSw2ICszMDAsNDcgQEAKICAgIFRoZSBlYXJsaWVzdCBkYXRlIGZvciB3aGljaCBpdCBjYW4gZ2VuZXJhdGUgYSB0aW1lIGlzIHBsYXRmb3JtLWRlcGVuZGVudC4KIAogCisuLiBmdW5jdGlvbjo6IG1vbm90b25pYygpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgKGluIGZyYWN0aW9uYWwgc2Vjb25kcykgb2YgYSBtb25vdG9uaWMgY2xvY2ssIGkuZS4gYSBjbG9jaworICAgdGhhdCBjYW5ub3QgZ28gYmFja3dhcmRzLiAgVGhlIGNsb2NrIGlzIG5vdCBhZmZlY3RlZCBieSBzeXN0ZW0gY2xvY2sgdXBkYXRlcy4KKyAgIFRoZSByZWZlcmVuY2UgcG9pbnQgb2YgdGhlIHJldHVybmVkIHZhbHVlIGlzIHVuZGVmaW5lZCwgc28gdGhhdCBvbmx5IHRoZQorICAgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSByZXN1bHRzIG9mIGNvbnNlY3V0aXZlIGNhbGxzIGlzIHZhbGlkLgorCisgICBPbiBXaW5kb3dzIHZlcnNpb25zIG9sZGVyIHRoYW4gVmlzdGEsIDpmdW5jOmBtb25vdG9uaWNgIGRldGVjdHMKKyAgIDpjOmZ1bmM6YEdldFRpY2tDb3VudGAgaW50ZWdlciBvdmVyZmxvdyAoMzIgYml0cywgcm9sbC1vdmVyIGFmdGVyIDQ5LjcgZGF5cykuCisgICBJdCBpbmNyZWFzZXMgYW4gaW50ZXJuYWwgZXBvY2ggKHJlZmVyZW5jZSB0aW1lIGJ5KSAyXCA6c3VwOmAzMmAgZWFjaCB0aW1lCisgICB0aGF0IGFuIG92ZXJmbG93IGlzIGRldGVjdGVkLiAgVGhlIGVwb2NoIGlzIHN0b3JlZCBpbiB0aGUgcHJvY2Vzcy1sb2NhbCBzdGF0ZQorICAgYW5kIHNvIHRoZSB2YWx1ZSBvZiA6ZnVuYzpgbW9ub3RvbmljYCBtYXkgYmUgZGlmZmVyZW50IGluIHR3byBQeXRob24KKyAgIHByb2Nlc3NlcyBydW5uaW5nIGZvciBtb3JlIHRoYW4gNDkgZGF5cy4gT24gbW9yZSByZWNlbnQgdmVyc2lvbnMgb2YgV2luZG93cworICAgYW5kIG9uIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLCA6ZnVuYzpgbW9ub3RvbmljYCBpcyBzeXN0ZW0td2lkZS4KKworICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzLCBNYWMgT1MgWCwgTGludXgsIEZyZWVCU0QsIE9wZW5CU0QsIFNvbGFyaXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcGVyZl9jb3VudGVyKCkKKworICAgUmV0dXJuIHRoZSB2YWx1ZSAoaW4gZnJhY3Rpb25hbCBzZWNvbmRzKSBvZiBhIHBlcmZvcm1hbmNlIGNvdW50ZXIsIGkuZS4gYQorICAgY2xvY2sgd2l0aCB0aGUgaGlnaGVzdCBhdmFpbGFibGUgcmVzb2x1dGlvbiB0byBtZWFzdXJlIGEgc2hvcnQgZHVyYXRpb24uICBJdAorICAgZG9lcyBpbmNsdWRlIHRpbWUgZWxhcHNlZCBkdXJpbmcgc2xlZXAgYW5kIGlzIHN5c3RlbS13aWRlLiAgVGhlIHJlZmVyZW5jZQorICAgcG9pbnQgb2YgdGhlIHJldHVybmVkIHZhbHVlIGlzIHVuZGVmaW5lZCwgc28gdGhhdCBvbmx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KKyAgIHRoZSByZXN1bHRzIG9mIGNvbnNlY3V0aXZlIGNhbGxzIGlzIHZhbGlkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHByb2Nlc3NfdGltZSgpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgKGluIGZyYWN0aW9uYWwgc2Vjb25kcykgb2YgdGhlIHN1bSBvZiB0aGUgc3lzdGVtIGFuZCB1c2VyCisgICBDUFUgdGltZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzLiAgSXQgZG9lcyBub3QgaW5jbHVkZSB0aW1lIGVsYXBzZWQgZHVyaW5nCisgICBzbGVlcC4gIEl0IGlzIHByb2Nlc3Mtd2lkZSBieSBkZWZpbml0aW9uLiAgVGhlIHJlZmVyZW5jZSBwb2ludCBvZiB0aGUKKyAgIHJldHVybmVkIHZhbHVlIGlzIHVuZGVmaW5lZCwgc28gdGhhdCBvbmx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHJlc3VsdHMKKyAgIG9mIGNvbnNlY3V0aXZlIGNhbGxzIGlzIHZhbGlkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gZnVuY3Rpb246OiBzbGVlcChzZWNzKQogCiAgICBTdXNwZW5kIGV4ZWN1dGlvbiBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzLiAgVGhlIGFyZ3VtZW50IG1heSBiZSBhCkBAIC0zMDgsOSArNDM0LDE1IEBACiAgICB8IGBgJXlgYCAgICB8IFllYXIgd2l0aG91dCBjZW50dXJ5IGFzIGEgZGVjaW1hbCBudW1iZXIgICAgICAgfCAgICAgICB8CiAgICB8ICAgICAgICAgICB8IFswMCw5OV0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi0gICB8IGBgJVlgYCAgICB8IFllYXIgd2l0aCBjZW50dXJ5IGFzIGEgZGVjaW1hbCBudW1iZXIuICAgICAgICAgfCBcKDQpICB8CisgICB8IGBgJVlgYCAgICB8IFllYXIgd2l0aCBjZW50dXJ5IGFzIGEgZGVjaW1hbCBudW1iZXIuICAgICAgICAgfCAgICAgICB8CiAgICB8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCisgICB8IGBgJXpgYCAgICB8IFRpbWUgem9uZSBvZmZzZXQgaW5kaWNhdGluZyBhIHBvc2l0aXZlIG9yICAgICAgfCAgICAgICB8CisgICB8ICAgICAgICAgICB8IG5lZ2F0aXZlIHRpbWUgZGlmZmVyZW5jZSBmcm9tIFVUQy9HTVQgb2YgdGhlICAgfCAgICAgICB8CisgICB8ICAgICAgICAgICB8IGZvcm0gK0hITU0gb3IgLUhITU0sIHdoZXJlIEggcmVwcmVzZW50cyBkZWNpbWFsfCAgICAgICB8CisgICB8ICAgICAgICAgICB8IGhvdXIgZGlnaXRzIGFuZCBNIHJlcHJlc2VudHMgZGVjaW1hbCBtaW51dGUgICAgfCAgICAgICB8CisgICB8ICAgICAgICAgICB8IGRpZ2l0cyBbLTIzOjU5LCArMjM6NTldLiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiAgICB8IGBgJVpgYCAgICB8IFRpbWUgem9uZSBuYW1lIChubyBjaGFyYWN0ZXJzIGlmIG5vIHRpbWUgem9uZSAgfCAgICAgICB8CiAgICB8ICAgICAgICAgICB8IGV4aXN0cykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCkBAIC0zMzIsMTIgKzQ2NCw2IEBACiAgICAgICBXaGVuIHVzZWQgd2l0aCB0aGUgOmZ1bmM6YHN0cnB0aW1lYCBmdW5jdGlvbiwgYGAlVWBgIGFuZCBgYCVXYGAgYXJlIG9ubHkgdXNlZCBpbgogICAgICAgY2FsY3VsYXRpb25zIHdoZW4gdGhlIGRheSBvZiB0aGUgd2VlayBhbmQgdGhlIHllYXIgYXJlIHNwZWNpZmllZC4KIAotICAgKDQpCi0gICAgICBQcm9kdWNlcyBkaWZmZXJlbnQgcmVzdWx0cyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mCi0gICAgICBgYHRpbWUuYWNjZXB0MmR5ZWFyYGAgdmFyaWFibGUuICBTZWUgOnJlZjpgWWVhciAyMDAwIChZMkspCi0gICAgICBpc3N1ZXMgPHRpbWUteTJraXNzdWVzPmAgZm9yIGRldGFpbHMuCi0KLQogICAgSGVyZSBpcyBhbiBleGFtcGxlLCBhIGZvcm1hdCBmb3IgZGF0ZXMgY29tcGF0aWJsZSB3aXRoIHRoYXQgc3BlY2lmaWVkICBpbiB0aGUKICAgIDpyZmM6YDI4MjJgIEludGVybmV0IGVtYWlsIHN0YW5kYXJkLiAgWyNdXyA6OgogCkBAIC00MTYsMTAgKzU0MiwxMyBAQAogICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDggICAgIHwgOmF0dHI6YHRtX2lzZHN0YCAgfCAwLCAxIG9yIC0xOyBzZWUgYmVsb3cgICAgICAgICAgIHwKICAgICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBOL0EgICB8IDphdHRyOmB0bV96b25lYCAgIHwgYWJicmV2aWF0aW9uIG9mIHRpbWV6b25lIG5hbWUgICB8CisgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgTi9BICAgfCA6YXR0cjpgdG1fZ210b2ZmYCB8IG9mZnNldCBlYXN0IG9mIFVUQyBpbiBzZWNvbmRzICAgfAorICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIE5vdGUgdGhhdCB1bmxpa2UgdGhlIEMgc3RydWN0dXJlLCB0aGUgbW9udGggdmFsdWUgaXMgYSByYW5nZSBvZiBbMSwgMTJdLCBub3QKLSAgIFswLCAxMV0uICBBIHllYXIgdmFsdWUgd2lsbCBiZSBoYW5kbGVkIGFzIGRlc2NyaWJlZCB1bmRlciA6cmVmOmBZZWFyIDIwMDAKLSAgIChZMkspIGlzc3VlcyA8dGltZS15Mmtpc3N1ZXM+YCBhYm92ZS4gIEEgYGAtMWBgIGFyZ3VtZW50IGFzIHRoZSBkYXlsaWdodAorICAgWzAsIDExXS4gIEEgYGAtMWBgIGFyZ3VtZW50IGFzIHRoZSBkYXlsaWdodAogICAgc2F2aW5ncyBmbGFnLCBwYXNzZWQgdG8gOmZ1bmM6YG1rdGltZWAgd2lsbCB1c3VhbGx5IHJlc3VsdCBpbiB0aGUgY29ycmVjdAogICAgZGF5bGlnaHQgc2F2aW5ncyBzdGF0ZSB0byBiZSBmaWxsZWQgaW4uCiAKQEAgLTQyNyw2ICs1NTYsOSBAQAogICAgOmNsYXNzOmBzdHJ1Y3RfdGltZWAsIG9yIGhhdmluZyBlbGVtZW50cyBvZiB0aGUgd3JvbmcgdHlwZSwgYQogICAgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCiAKKyAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgOmF0dHI6YHRtX2dtdG9mZmAgYW5kIDphdHRyOmB0bV96b25lYCBhdHRyaWJ1dGVzIGFyZSBhdmFsaWFibGUgb24gcGxhdGZvcm1zCisgICAgIHdpdGggQyBsaWJyYXJ5IHN1cHBvcnRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzIGluIGBgc3RydWN0IHRtYGAuCiAKIC4uIGZ1bmN0aW9uOjogdGltZSgpCiAKQEAgLTQzNyw3ICs1NjksNiBAQAogICAgbG93ZXIgdmFsdWUgdGhhbiBhIHByZXZpb3VzIGNhbGwgaWYgdGhlIHN5c3RlbSBjbG9jayBoYXMgYmVlbiBzZXQgYmFjayBiZXR3ZWVuCiAgICB0aGUgdHdvIGNhbGxzLgogCi0KIC4uIGRhdGE6OiB0aW1lem9uZQogCiAgICBUaGUgb2Zmc2V0IG9mIHRoZSBsb2NhbCAobm9uLURTVCkgdGltZXpvbmUsIGluIHNlY29uZHMgd2VzdCBvZiBVVEMgKG5lZ2F0aXZlIGluCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aW1laXQucnN0IGIvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAppbmRleCBjZDJkMjA1Li5jNDFlNTlkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aW1laXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKQEAgLTEwNCwxMyArMTA0LDcgQEAKIAogLi4gZnVuY3Rpb246OiBkZWZhdWx0X3RpbWVyKCkKIAotICAgRGVmaW5lIGEgZGVmYXVsdCB0aW1lciwgaW4gYSBwbGF0Zm9ybSBzcGVjaWZpYyBtYW5uZXIuIE9uIFdpbmRvd3MsCi0gICA6ZnVuYzpgdGltZS5jbG9ja2AgaGFzIG1pY3Jvc2Vjb25kIGdyYW51bGFyaXR5IGJ1dCA6ZnVuYzpgdGltZS50aW1lYCdzCi0gICBncmFudWxhcml0eSBpcyAxLzYwdGggb2YgYSBzZWNvbmQ7IG9uIFVuaXgsIDpmdW5jOmB0aW1lLmNsb2NrYCBoYXMgMS8xMDB0aCBvZgotICAgYSBzZWNvbmQgZ3JhbnVsYXJpdHkgYW5kIDpmdW5jOmB0aW1lLnRpbWVgIGlzIG11Y2ggbW9yZSBwcmVjaXNlLiAgT24gZWl0aGVyCi0gICBwbGF0Zm9ybSwgOmZ1bmM6YGRlZmF1bHRfdGltZXJgIG1lYXN1cmVzIHdhbGwgY2xvY2sgdGltZSwgbm90IHRoZSBDUFUKLSAgIHRpbWUuICBUaGlzIG1lYW5zIHRoYXQgb3RoZXIgcHJvY2Vzc2VzIHJ1bm5pbmcgb24gdGhlIHNhbWUgY29tcHV0ZXIgbWF5Ci0gICBpbnRlcmZlcmUgd2l0aCB0aGUgdGltaW5nLgorICAgVGhlIGRlZmF1bHQgdGltZXIsIHdoaWNoIGlzIGFsd2F5cyA6ZnVuYzpgdGltZS5wZXJmX2NvdW50ZXJgLgogCiAKIC4uIGZ1bmN0aW9uOjogcmVwZWF0KHN0bXQ9J3Bhc3MnLCBzZXR1cD0ncGFzcycsIHRpbWVyPTxkZWZhdWx0IHRpbWVyPiwgcmVwZWF0PTMsIG51bWJlcj0xMDAwMDAwKQpAQCAtMTQ5LDEzICsxNDMsMjAgQEAKIAogICAgc3RhdGVtZW50IHRvIGJlIGV4ZWN1dGVkIG9uY2UgaW5pdGlhbGx5IChkZWZhdWx0IGBgcGFzc2BgKQogCisuLiBjbWRvcHRpb246OiAtcCwgLS1wcm9jZXNzCisKKyAgIG1lYXN1cmUgcHJvY2VzcyB0aW1lLCBub3Qgd2FsbGNsb2NrIHRpbWUsIHVzaW5nIDpmdW5jOmB0aW1lLnByb2Nlc3NfdGltZWAKKyAgIGluc3RlYWQgb2YgOmZ1bmM6YHRpbWUucGVyZl9jb3VudGVyYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGNtZG9wdGlvbjo6IC10LCAtLXRpbWUKIAotICAgdXNlIDpmdW5jOmB0aW1lLnRpbWVgIChkZWZhdWx0IG9uIGFsbCBwbGF0Zm9ybXMgYnV0IFdpbmRvd3MpCisgICB1c2UgOmZ1bmM6YHRpbWUudGltZWAgKGRlcHJlY2F0ZWQpCiAKIC4uIGNtZG9wdGlvbjo6IC1jLCAtLWNsb2NrCiAKLSAgIHVzZSA6ZnVuYzpgdGltZS5jbG9ja2AgKGRlZmF1bHQgb24gV2luZG93cykKKyAgIHVzZSA6ZnVuYzpgdGltZS5jbG9ja2AgKGRlcHJlY2F0ZWQpCiAKIC4uIGNtZG9wdGlvbjo6IC12LCAtLXZlcmJvc2UKIApAQCAtMTczLDEyICsxNzQsMTEgQEAKIElmIDpvcHRpb246YC1uYCBpcyBub3QgZ2l2ZW4sIGEgc3VpdGFibGUgbnVtYmVyIG9mIGxvb3BzIGlzIGNhbGN1bGF0ZWQgYnkgdHJ5aW5nCiBzdWNjZXNzaXZlIHBvd2VycyBvZiAxMCB1bnRpbCB0aGUgdG90YWwgdGltZSBpcyBhdCBsZWFzdCAwLjIgc2Vjb25kcy4KIAotOmZ1bmM6YGRlZmF1bHRfdGltZXJgIG1lYXN1cmF0aW9ucyBjYW4gYmUgYWZmZWN0ZWQgYnkgb3RoZXIgcHJvZ3JhbXMgcnVubmluZyBvbgotdGhlIHNhbWUgbWFjaGluZSwgc28KLXRoZSBiZXN0IHRoaW5nIHRvIGRvIHdoZW4gYWNjdXJhdGUgdGltaW5nIGlzIG5lY2Vzc2FyeSBpcyB0byByZXBlYXQKLXRoZSB0aW1pbmcgYSBmZXcgdGltZXMgYW5kIHVzZSB0aGUgYmVzdCB0aW1lLiAgVGhlIDpvcHRpb246YC1yYCBvcHRpb24gaXMgZ29vZAotZm9yIHRoaXM7IHRoZSBkZWZhdWx0IG9mIDMgcmVwZXRpdGlvbnMgaXMgcHJvYmFibHkgZW5vdWdoIGluIG1vc3QgY2FzZXMuICBPbgotVW5peCwgeW91IGNhbiB1c2UgOmZ1bmM6YHRpbWUuY2xvY2tgIHRvIG1lYXN1cmUgQ1BVIHRpbWUuCis6ZnVuYzpgZGVmYXVsdF90aW1lcmAgbWVhc3VyZW1lbnRzIGNhbiBiZSBhZmZlY3RlZCBieSBvdGhlciBwcm9ncmFtcyBydW5uaW5nIG9uCit0aGUgc2FtZSBtYWNoaW5lLCBzbyB0aGUgYmVzdCB0aGluZyB0byBkbyB3aGVuIGFjY3VyYXRlIHRpbWluZyBpcyBuZWNlc3NhcnkgaXMKK3RvIHJlcGVhdCB0aGUgdGltaW5nIGEgZmV3IHRpbWVzIGFuZCB1c2UgdGhlIGJlc3QgdGltZS4gIFRoZSA6b3B0aW9uOmAtcmAKK29wdGlvbiBpcyBnb29kIGZvciB0aGlzOyB0aGUgZGVmYXVsdCBvZiAzIHJlcGV0aXRpb25zIGlzIHByb2JhYmx5IGVub3VnaCBpbgorbW9zdCBjYXNlcy4gIFlvdSBjYW4gdXNlIDpmdW5jOmB0aW1lLnByb2Nlc3NfdGltZWAgdG8gbWVhc3VyZSBDUFUgdGltZS4KIAogLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0IGIvRG9jL2xpYnJhcnkvdGtpbnRlci5yc3QKaW5kZXggZjZlMDk1YS4uODNhNTM3NSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGtpbnRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGtpbnRlci5yc3QKQEAgLTE5NCwzNSArMTk0LDMwIEBACiAKIDo6CiAKLSAgIGZyb20gdGtpbnRlciBpbXBvcnQgKgorICAgIGltcG9ydCB0a2ludGVyIGFzIHRrCiAKLSAgIGNsYXNzIEFwcGxpY2F0aW9uKEZyYW1lKToKLSAgICAgICBkZWYgc2F5X2hpKHNlbGYpOgotICAgICAgICAgICBwcmludCgiaGkgdGhlcmUsIGV2ZXJ5b25lISIpCisgICAgY2xhc3MgQXBwbGljYXRpb24odGsuRnJhbWUpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyPU5vbmUpOgorICAgICAgICAgICAgdGsuRnJhbWUuX19pbml0X18oc2VsZiwgbWFzdGVyKQorICAgICAgICAgICAgc2VsZi5wYWNrKCkKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlV2lkZ2V0cygpCiAKLSAgICAgICBkZWYgY3JlYXRlV2lkZ2V0cyhzZWxmKToKLSAgICAgICAgICAgc2VsZi5RVUlUID0gQnV0dG9uKHNlbGYpCi0gICAgICAgICAgIHNlbGYuUVVJVFsidGV4dCJdID0gIlFVSVQiCi0gICAgICAgICAgIHNlbGYuUVVJVFsiZmciXSA9ICJyZWQiCi0gICAgICAgICAgIHNlbGYuUVVJVFsiY29tbWFuZCJdID0gc2VsZi5xdWl0CisgICAgICAgIGRlZiBjcmVhdGVXaWRnZXRzKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5oaV90aGVyZSA9IHRrLkJ1dHRvbihzZWxmKQorICAgICAgICAgICAgc2VsZi5oaV90aGVyZVsidGV4dCJdID0gIkhlbGxvIFdvcmxkXG4oY2xpY2sgbWUpIgorICAgICAgICAgICAgc2VsZi5oaV90aGVyZVsiY29tbWFuZCJdID0gc2VsZi5zYXlfaGkKKyAgICAgICAgICAgIHNlbGYuaGlfdGhlcmUucGFjayhzaWRlPSJ0b3AiKQogCi0gICAgICAgICAgIHNlbGYuUVVJVC5wYWNrKHsic2lkZSI6ICJsZWZ0In0pCisgICAgICAgICAgICBzZWxmLlFVSVQgPSB0ay5CdXR0b24oc2VsZiwgdGV4dD0iUVVJVCIsIGZnPSJyZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1yb290LmRlc3Ryb3kpCisgICAgICAgICAgICBzZWxmLlFVSVQucGFjayhzaWRlPSJib3R0b20iKQogCi0gICAgICAgICAgIHNlbGYuaGlfdGhlcmUgPSBCdXR0b24oc2VsZikKLSAgICAgICAgICAgc2VsZi5oaV90aGVyZVsidGV4dCJdID0gIkhlbGxvIiwKLSAgICAgICAgICAgc2VsZi5oaV90aGVyZVsiY29tbWFuZCJdID0gc2VsZi5zYXlfaGkKKyAgICAgICAgZGVmIHNheV9oaShzZWxmKToKKyAgICAgICAgICAgIHByaW50KCJoaSB0aGVyZSwgZXZlcnlvbmUhIikKIAotICAgICAgICAgICBzZWxmLmhpX3RoZXJlLnBhY2soeyJzaWRlIjogImxlZnQifSkKLQotICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSk6Ci0gICAgICAgICAgIEZyYW1lLl9faW5pdF9fKHNlbGYsIG1hc3RlcikKLSAgICAgICAgICAgc2VsZi5wYWNrKCkKLSAgICAgICAgICAgc2VsZi5jcmVhdGVXaWRnZXRzKCkKLQotICAgcm9vdCA9IFRrKCkKLSAgIGFwcCA9IEFwcGxpY2F0aW9uKG1hc3Rlcj1yb290KQotICAgYXBwLm1haW5sb29wKCkKLSAgIHJvb3QuZGVzdHJveSgpCisgICAgcm9vdCA9IHRrLlRrKCkKKyAgICBhcHAgPSBBcHBsaWNhdGlvbihtYXN0ZXI9cm9vdCkKKyAgICBhcHAubWFpbmxvb3AoKQogCiAKIEEgKFZlcnkpIFF1aWNrIExvb2sgYXQgVGNsL1RrCkBAIC03NTUsMjIgKzc1MCwzMiBAQAogICAgZGlzcGxheWVkLiAgWW91IGNhbiB1c2UgdGhlc2UgOm1vZDpgdGtpbnRlcmAgZnVuY3Rpb25zIHRvIGFjY2VzcyB0aGVzZSBzcGVjaWFsCiAgICBwb2ludHMgaW4gdGV4dCB3aWRnZXRzOgogCi0gICBBdEVuZCgpCisuLiBmdW5jdGlvbjo6IEF0RW5kKCkKICAgICAgIHJlZmVycyB0byB0aGUgbGFzdCBwb3NpdGlvbiBpbiB0aGUgdGV4dAogCi0gICBBdEluc2VydCgpCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogQXRJbnNlcnQoKQogICAgICAgcmVmZXJzIHRvIHRoZSBwb2ludCB3aGVyZSB0aGUgdGV4dCBjdXJzb3IgaXMKIAotICAgQXRTZWxGaXJzdCgpCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogQXRTZWxGaXJzdCgpCiAgICAgICBpbmRpY2F0ZXMgdGhlIGJlZ2lubmluZyBwb2ludCBvZiB0aGUgc2VsZWN0ZWQgdGV4dAogCi0gICBBdFNlbExhc3QoKQorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IEF0U2VsTGFzdCgpCiAgICAgICBkZW5vdGVzIHRoZSBsYXN0IHBvaW50IG9mIHRoZSBzZWxlY3RlZCB0ZXh0IGFuZCBmaW5hbGx5CiAKLSAgIEF0KHhbLCB5XSkKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBBdCh4WywgeV0pCiAgICAgICByZWZlcnMgdG8gdGhlIGNoYXJhY3RlciBhdCBwaXhlbCBsb2NhdGlvbiAqeCosICp5KiAod2l0aCAqeSogbm90IHVzZWQgaW4gdGhlCiAgICAgICBjYXNlIG9mIGEgdGV4dCBlbnRyeSB3aWRnZXQsIHdoaWNoIGNvbnRhaW5zIGEgc2luZ2xlIGxpbmUgb2YgdGV4dCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogVGV4dCB3aWRnZXQgaW5kZXhlcwogICAgVGhlIGluZGV4IG5vdGF0aW9uIGZvciBUZXh0IHdpZGdldHMgaXMgdmVyeSByaWNoIGFuZCBpcyBiZXN0IGRlc2NyaWJlZCBpbiB0aGUgVGsKICAgIG1hbiBwYWdlcy4KQEAgLTgxOCw0ICs4MjMsMyBAQAogcmVmZXJlbmNlIHRvIHRoZSBpbWFnZS4gV2hlbiB0aGUgbGFzdCBQeXRob24gcmVmZXJlbmNlIHRvIHRoZSBpbWFnZSBvYmplY3QgaXMKIGRlbGV0ZWQsIHRoZSBpbWFnZSBkYXRhIGlzIGRlbGV0ZWQgYXMgd2VsbCwgYW5kIFRrIHdpbGwgZGlzcGxheSBhbiBlbXB0eSBib3gKIHdoZXJldmVyIHRoZSBpbWFnZSB3YXMgdXNlZC4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdG9rZW5pemUucnN0IGIvRG9jL2xpYnJhcnkvdG9rZW5pemUucnN0CmluZGV4IDcwOTE5Y2EuLjM3ZDlmNDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rva2VuaXplLnJzdAorKysgYi9Eb2MvbGlicmFyeS90b2tlbml6ZS5yc3QKQEAgLTE3LDkgKzE3LDExIEBACiAKIFRvIHNpbXBsaWZ5IHRva2VuIHN0cmVhbSBoYW5kbGluZywgYWxsIDpyZWY6YG9wZXJhdG9yc2AgYW5kIDpyZWY6YGRlbGltaXRlcnNgCiB0b2tlbnMgYXJlIHJldHVybmVkIHVzaW5nIHRoZSBnZW5lcmljIDpkYXRhOmB0b2tlbi5PUGAgdG9rZW4gdHlwZS4gIFRoZSBleGFjdAotdHlwZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGUgdG9rZW4gYGBzdHJpbmdgYCBmaWVsZCBvbiB0aGUKLTp0ZXJtOmBuYW1lZCB0dXBsZWAgcmV0dXJuZWQgZnJvbSA6ZnVuYzpgdG9rZW5pemUudG9rZW5pemVgIGZvciB0aGUgY2hhcmFjdGVyCi1zZXF1ZW5jZSB0aGF0IGlkZW50aWZpZXMgYSBzcGVjaWZpYyBvcGVyYXRvciB0b2tlbi4KK3R5cGUgY2FuIGJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlIGBgZXhhY3RfdHlwZWBgIHByb3BlcnR5IG9uIHRoZQorOnRlcm06YG5hbWVkIHR1cGxlYCByZXR1cm5lZCBmcm9tIDpmdW5jOmB0b2tlbml6ZS50b2tlbml6ZWAuCisKK1Rva2VuaXppbmcgSW5wdXQKKy0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIHByaW1hcnkgZW50cnkgcG9pbnQgaXMgYSA6dGVybTpgZ2VuZXJhdG9yYDoKIApAQCAtMzksOSArNDEsMTcgQEAKICAgIHJldHVybmVkIGFzIGEgOnRlcm06YG5hbWVkIHR1cGxlYCB3aXRoIHRoZSBmaWVsZCBuYW1lczoKICAgIGBgdHlwZSBzdHJpbmcgc3RhcnQgZW5kIGxpbmVgYC4KIAorICAgVGhlIHJldHVybmVkIDp0ZXJtOmBuYW1lZCB0dXBsZWAgaGFzIGEgYWRkaXRpb25hbCBwcm9wZXJ0eSBuYW1lZAorICAgYGBleGFjdF90eXBlYGAgdGhhdCBjb250YWlucyB0aGUgZXhhY3Qgb3BlcmF0b3IgdHlwZSBmb3IKKyAgIDpkYXRhOmB0b2tlbi5PUGAgdG9rZW5zLiAgRm9yIGFsbCBvdGhlciB0b2tlbiB0eXBlcyBgYGV4YWN0X3R5cGVgYAorICAgZXF1YWxzIHRoZSBuYW1lZCB0dXBsZSBgYHR5cGVgYCBmaWVsZC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIG5hbWVkIHR1cGxlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGBgZXhhY3RfdHlwZWBgLgorCiAgICA6ZnVuYzpgdG9rZW5pemVgIGRldGVybWluZXMgdGhlIHNvdXJjZSBlbmNvZGluZyBvZiB0aGUgZmlsZSBieSBsb29raW5nIGZvciBhCiAgICBVVEYtOCBCT00gb3IgZW5jb2RpbmcgY29va2llLCBhY2NvcmRpbmcgdG8gOnBlcDpgMjYzYC4KIApAQCAtMTIyLDYgKzEzMiwzOCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gX3Rva2VuaXplLWNsaToKKworQ29tbWFuZC1MaW5lIFVzYWdlCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSA6bW9kOmB0b2tlbml6ZWAgbW9kdWxlIGNhbiBiZSBleGVjdXRlZCBhcyBhIHNjcmlwdCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCitJdCBpcyBhcyBzaW1wbGUgYXM6CisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICBweXRob24gLW0gdG9rZW5pemUgWy1lXSBbZmlsZW5hbWUucHldCisKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYWNjZXB0ZWQ6CisKKy4uIHByb2dyYW06OiB0b2tlbml6ZQorCisuLiBjbWRvcHRpb246OiAtaCwgLS1oZWxwCisKKyAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKworLi4gY21kb3B0aW9uOjogLWUsIC0tZXhhY3QKKworICAgZGlzcGxheSB0b2tlbiBuYW1lcyB1c2luZyB0aGUgZXhhY3QgdHlwZQorCitJZiA6ZmlsZTpgZmlsZW5hbWUucHlgIGlzIHNwZWNpZmllZCBpdHMgY29udGVudHMgYXJlIHRva2VuaXplZCB0byBzdGRvdXQuCitPdGhlcndpc2UsIHRva2VuaXphdGlvbiBpcyBwZXJmb3JtZWQgb24gc3RkaW4uCisKK0V4YW1wbGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKwogRXhhbXBsZSBvZiBhIHNjcmlwdCByZXdyaXRlciB0aGF0IHRyYW5zZm9ybXMgZmxvYXQgbGl0ZXJhbHMgaW50byBEZWNpbWFsCiBvYmplY3RzOjoKIApAQCAtMTY0LDMgKzIwNiw2MyBAQAogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKHRva251bSwgdG9rdmFsKSkKICAgICAgICAgcmV0dXJuIHVudG9rZW5pemUocmVzdWx0KS5kZWNvZGUoJ3V0Zi04JykKIAorRXhhbXBsZSBvZiB0b2tlbml6aW5nIGZyb20gdGhlIGNvbW1hbmQgbGluZS4gIFRoZSBzY3JpcHQ6OgorCisgICAgZGVmIHNheV9oZWxsbygpOgorICAgICAgICBwcmludCgiSGVsbG8sIFdvcmxkISIpCisKKyAgICBzYXlfaGVsbG8oKQorCit3aWxsIGJlIHRva2VuaXplZCB0byB0aGUgZm9sbG93aW5nIG91dHB1dCB3aGVyZSB0aGUgZmlyc3QgY29sdW1uIGlzIHRoZSByYW5nZQorb2YgdGhlIGxpbmUvY29sdW1uIGNvb3JkaW5hdGVzIHdoZXJlIHRoZSB0b2tlbiBpcyBmb3VuZCwgdGhlIHNlY29uZCBjb2x1bW4gaXMKK3RoZSBuYW1lIG9mIHRoZSB0b2tlbiwgYW5kIHRoZSBmaW5hbCBjb2x1bW4gaXMgdGhlIHZhbHVlIG9mIHRoZSB0b2tlbiAoaWYgYW55KQorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgICQgcHl0aG9uIC1tIHRva2VuaXplIGhlbGxvLnB5CisgICAgMCwwLTAsMDogICAgICAgICAgICBFTkNPRElORyAgICAgICAndXRmLTgnCisgICAgMSwwLTEsMzogICAgICAgICAgICBOQU1FICAgICAgICAgICAnZGVmJworICAgIDEsNC0xLDEzOiAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICAxLDEzLTEsMTQ6ICAgICAgICAgIE9QICAgICAgICAgICAgICcoJworICAgIDEsMTQtMSwxNTogICAgICAgICAgT1AgICAgICAgICAgICAgJyknCisgICAgMSwxNS0xLDE2OiAgICAgICAgICBPUCAgICAgICAgICAgICAnOicKKyAgICAxLDE2LTEsMTc6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICAyLDAtMiw0OiAgICAgICAgICAgIElOREVOVCAgICAgICAgICcgICAgJworICAgIDIsNC0yLDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3ByaW50JworICAgIDIsOS0yLDEwOiAgICAgICAgICAgT1AgICAgICAgICAgICAgJygnCisgICAgMiwxMC0yLDI1OiAgICAgICAgICBTVFJJTkcgICAgICAgICAnIkhlbGxvLCBXb3JsZCEiJworICAgIDIsMjUtMiwyNjogICAgICAgICAgT1AgICAgICAgICAgICAgJyknCisgICAgMiwyNi0yLDI3OiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgMywwLTMsMTogICAgICAgICAgICBOTCAgICAgICAgICAgICAnXG4nCisgICAgNCwwLTQsMDogICAgICAgICAgICBERURFTlQgICAgICAgICAnJworICAgIDQsMC00LDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICA0LDktNCwxMDogICAgICAgICAgIE9QICAgICAgICAgICAgICcoJworICAgIDQsMTAtNCwxMTogICAgICAgICAgT1AgICAgICAgICAgICAgJyknCisgICAgNCwxMS00LDEyOiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgNSwwLTUsMDogICAgICAgICAgICBFTkRNQVJLRVIgICAgICAnJworCitUaGUgZXhhY3QgdG9rZW4gdHlwZSBuYW1lcyBjYW4gYmUgZGlzcGxheWVkIHVzaW5nIHRoZSBgYC1lYGAgb3B0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgICQgcHl0aG9uIC1tIHRva2VuaXplIC1lIGhlbGxvLnB5CisgICAgMCwwLTAsMDogICAgICAgICAgICBFTkNPRElORyAgICAgICAndXRmLTgnCisgICAgMSwwLTEsMzogICAgICAgICAgICBOQU1FICAgICAgICAgICAnZGVmJworICAgIDEsNC0xLDEzOiAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICAxLDEzLTEsMTQ6ICAgICAgICAgIExQQVIgICAgICAgICAgICcoJworICAgIDEsMTQtMSwxNTogICAgICAgICAgUlBBUiAgICAgICAgICAgJyknCisgICAgMSwxNS0xLDE2OiAgICAgICAgICBDT0xPTiAgICAgICAgICAnOicKKyAgICAxLDE2LTEsMTc6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICAyLDAtMiw0OiAgICAgICAgICAgIElOREVOVCAgICAgICAgICcgICAgJworICAgIDIsNC0yLDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3ByaW50JworICAgIDIsOS0yLDEwOiAgICAgICAgICAgTFBBUiAgICAgICAgICAgJygnCisgICAgMiwxMC0yLDI1OiAgICAgICAgICBTVFJJTkcgICAgICAgICAnIkhlbGxvLCBXb3JsZCEiJworICAgIDIsMjUtMiwyNjogICAgICAgICAgUlBBUiAgICAgICAgICAgJyknCisgICAgMiwyNi0yLDI3OiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgMywwLTMsMTogICAgICAgICAgICBOTCAgICAgICAgICAgICAnXG4nCisgICAgNCwwLTQsMDogICAgICAgICAgICBERURFTlQgICAgICAgICAnJworICAgIDQsMC00LDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICA0LDktNCwxMDogICAgICAgICAgIExQQVIgICAgICAgICAgICcoJworICAgIDQsMTAtNCwxMTogICAgICAgICAgUlBBUiAgICAgICAgICAgJyknCisgICAgNCwxMS00LDEyOiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgNSwwLTUsMDogICAgICAgICAgICBFTkRNQVJLRVIgICAgICAnJwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CmluZGV4IGQ0YTc2YjYuLjY5NTQ4MGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKQEAgLTEsNSArMSw1IEBACi06bW9kOmB0eXBlc2AgLS0tIE5hbWVzIGZvciBidWlsdC1pbiB0eXBlcwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzptb2Q6YHR5cGVzYCAtLS0gRHluYW1pYyB0eXBlIGNyZWF0aW9uIGFuZCBuYW1lcyBmb3IgYnVpbHQtaW4gdHlwZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gbW9kdWxlOjogdHlwZXMKICAgIDpzeW5vcHNpczogTmFtZXMgZm9yIGJ1aWx0LWluIHR5cGVzLgpAQCAtOCwyMCArOCw3NyBAQAogCiAtLS0tLS0tLS0tLS0tLQogCi1UaGlzIG1vZHVsZSBkZWZpbmVzIG5hbWVzIGZvciBzb21lIG9iamVjdCB0eXBlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZAorVGhpcyBtb2R1bGUgZGVmaW5lcyB1dGlsaXR5IGZ1bmN0aW9uIHRvIGFzc2lzdCBpbiBkeW5hbWljIGNyZWF0aW9uIG9mCituZXcgdHlwZXMuCisKK0l0IGFsc28gZGVmaW5lcyBuYW1lcyBmb3Igc29tZSBvYmplY3QgdHlwZXMgdGhhdCBhcmUgdXNlZCBieSB0aGUgc3RhbmRhcmQKIFB5dGhvbiBpbnRlcnByZXRlciwgYnV0IG5vdCBleHBvc2VkIGFzIGJ1aWx0aW5zIGxpa2UgOmNsYXNzOmBpbnRgIG9yCi06Y2xhc3M6YHN0cmAgYXJlLiAgQWxzbywgaXQgZG9lcyBub3QgaW5jbHVkZSBzb21lIG9mIHRoZSB0eXBlcyB0aGF0IGFyaXNlCi10cmFuc3BhcmVudGx5IGR1cmluZyBwcm9jZXNzaW5nIHN1Y2ggYXMgdGhlIGBgbGlzdGl0ZXJhdG9yYGAgdHlwZS4KKzpjbGFzczpgc3RyYCBhcmUuCiAKLVR5cGljYWwgdXNlIGlzIGZvciA6ZnVuYzpgaXNpbnN0YW5jZWAgb3IgOmZ1bmM6YGlzc3ViY2xhc3NgIGNoZWNrcy4KIAotVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgbmFtZXM6CitEeW5hbWljIFR5cGUgQ3JlYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IG5ld19jbGFzcyhuYW1lLCBiYXNlcz0oKSwga3dkcz1Ob25lLCBleGVjX2JvZHk9Tm9uZSkKKworICAgQ3JlYXRlcyBhIGNsYXNzIG9iamVjdCBkeW5hbWljYWxseSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzLgorCisgICBUaGUgZmlyc3QgdGhyZWUgYXJndW1lbnRzIGFyZSB0aGUgY29tcG9uZW50cyB0aGF0IG1ha2UgdXAgYSBjbGFzcworICAgZGVmaW5pdGlvbiBoZWFkZXI6IHRoZSBjbGFzcyBuYW1lLCB0aGUgYmFzZSBjbGFzc2VzIChpbiBvcmRlciksIHRoZQorICAga2V5d29yZCBhcmd1bWVudHMgKHN1Y2ggYXMgYGBtZXRhY2xhc3NgYCkuCisKKyAgIFRoZSAqZXhlY19ib2R5KiBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMgdXNlZCB0byBwb3B1bGF0ZSB0aGUKKyAgIGZyZXNobHkgY3JlYXRlZCBjbGFzcyBuYW1lc3BhY2UuIEl0IHNob3VsZCBhY2NlcHQgdGhlIGNsYXNzIG5hbWVzcGFjZQorICAgYXMgaXRzIHNvbGUgYXJndW1lbnQgYW5kIHVwZGF0ZSB0aGUgbmFtZXNwYWNlIGRpcmVjdGx5IHdpdGggdGhlIGNsYXNzCisgICBjb250ZW50cy4gSWYgbm8gY2FsbGJhY2sgaXMgcHJvdmlkZWQsIGl0IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgcGFzc2luZworICAgaW4gYGBsYW1iZGEgbnM6IG5zYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IHByZXBhcmVfY2xhc3MobmFtZSwgYmFzZXM9KCksIGt3ZHM9Tm9uZSkKKworICAgQ2FsY3VsYXRlcyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGFuZCBjcmVhdGVzIHRoZSBjbGFzcyBuYW1lc3BhY2UuCisKKyAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBjb21wb25lbnRzIHRoYXQgbWFrZSB1cCBhIGNsYXNzIGRlZmluaXRpb24gaGVhZGVyOgorICAgdGhlIGNsYXNzIG5hbWUsIHRoZSBiYXNlIGNsYXNzZXMgKGluIG9yZGVyKSBhbmQgdGhlIGtleXdvcmQgYXJndW1lbnRzCisgICAoc3VjaCBhcyBgYG1ldGFjbGFzc2BgKS4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIDMtdHVwbGU6IGBgbWV0YWNsYXNzLCBuYW1lc3BhY2UsIGt3ZHNgYAorCisgICAqbWV0YWNsYXNzKiBpcyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzLCAqbmFtZXNwYWNlKiBpcyB0aGUKKyAgIHByZXBhcmVkIGNsYXNzIG5hbWVzcGFjZSBhbmQgKmt3ZHMqIGlzIGFuIHVwZGF0ZWQgY29weSBvZiB0aGUgcGFzc2VkCisgICBpbiAqa3dkcyogYXJndW1lbnQgd2l0aCBhbnkgYGAnbWV0YWNsYXNzJ2BgIGVudHJ5IHJlbW92ZWQuIElmIG5vICprd2RzKgorICAgYXJndW1lbnQgaXMgcGFzc2VkIGluLCB0aGlzIHdpbGwgYmUgYW4gZW1wdHkgZGljdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIHNlZWFsc286OgorCisgICA6cmVmOmBtZXRhY2xhc3Nlc2AKKyAgICAgIEZ1bGwgZGV0YWlscyBvZiB0aGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBzdXBwb3J0ZWQgYnkgdGhlc2UgZnVuY3Rpb25zCisKKyAgIDpwZXA6YDMxMTVgIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMwMDAKKyAgICAgIEludHJvZHVjZWQgdGhlIGBgX19wcmVwYXJlX19gYCBuYW1lc3BhY2UgaG9vaworCisKK1N0YW5kYXJkIEludGVycHJldGVyIFR5cGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBuYW1lcyBmb3IgbWFueSBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8KK2ltcGxlbWVudCBhIFB5dGhvbiBpbnRlcnByZXRlci4gSXQgZGVsaWJlcmF0ZWx5IGF2b2lkcyBpbmNsdWRpbmcgc29tZSBvZgordGhlIHR5cGVzIHRoYXQgYXJpc2Ugb25seSBpbmNpZGVudGFsbHkgZHVyaW5nIHByb2Nlc3Npbmcgc3VjaCBhcyB0aGUKK2BgbGlzdGl0ZXJhdG9yYGAgdHlwZS4KKworVHlwaWNhbCB1c2Ugb2YgdGhlc2UgbmFtZXMgaXMgZm9yIDpmdW5jOmBpc2luc3RhbmNlYCBvcgorOmZ1bmM6YGlzc3ViY2xhc3NgIGNoZWNrcy4KKworU3RhbmRhcmQgbmFtZXMgYXJlIGRlZmluZWQgZm9yIHRoZSBmb2xsb3dpbmcgdHlwZXM6CiAKIC4uIGRhdGE6OiBGdW5jdGlvblR5cGUKICAgICAgICAgICBMYW1iZGFUeXBlCiAKLSAgIFRoZSB0eXBlIG9mIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kIGZ1bmN0aW9ucyBjcmVhdGVkIGJ5IDprZXl3b3JkOmBsYW1iZGFgCi0gICBleHByZXNzaW9ucy4KKyAgIFRoZSB0eXBlIG9mIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kIGZ1bmN0aW9ucyBjcmVhdGVkIGJ5CisgICA6a2V5d29yZDpgbGFtYmRhYCAgZXhwcmVzc2lvbnMuCiAKIAogLi4gZGF0YTo6IEdlbmVyYXRvclR5cGUKQEAgLTg1LDMgKzE0Miw3OSBAQAogCiAgICAgICBJbiBvdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgUHl0aG9uLCB0aGlzIHR5cGUgbWF5IGJlIGlkZW50aWNhbCB0bwogICAgICAgYGBHZXRTZXREZXNjcmlwdG9yVHlwZWBgLgorCisuLiBjbGFzczo6IE1hcHBpbmdQcm94eVR5cGUobWFwcGluZykKKworICAgUmVhZC1vbmx5IHByb3h5IG9mIGEgbWFwcGluZy4gSXQgcHJvdmlkZXMgYSBkeW5hbWljIHZpZXcgb24gdGhlIG1hcHBpbmcncworICAgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBtYXBwaW5nIGNoYW5nZXMsIHRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlCisgICBjaGFuZ2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gZGVzY3JpYmU6OiBrZXkgaW4gcHJveHkKKworICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcgaGFzIGEga2V5ICprZXkqLCBlbHNlCisgICAgICBgYEZhbHNlYGAuCisKKyAgIC4uIGRlc2NyaWJlOjogcHJveHlba2V5XQorCisgICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZyB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhCisgICAgICA6ZXhjOmBLZXlFcnJvcmAgaWYgKmtleSogaXMgbm90IGluIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcuCisKKyAgIC4uIGRlc2NyaWJlOjogaXRlcihwcm94eSkKKworICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZy4gIFRoaXMgaXMgYQorICAgICAgc2hvcnRjdXQgZm9yIGBgaXRlcihwcm94eS5rZXlzKCkpYGAuCisKKyAgIC4uIGRlc2NyaWJlOjogbGVuKHByb3h5KQorCisgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgdW5kZXJseWluZyBtYXBwaW5nLgorCisgICAuLiBtZXRob2Q6OiBjb3B5KCkKKworICAgICAgUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcuCisKKyAgIC4uIG1ldGhvZDo6IGdldChrZXlbLCBkZWZhdWx0XSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlIHVuZGVybHlpbmcgbWFwcGluZywgZWxzZQorICAgICAgKmRlZmF1bHQqLiAgSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gYGBOb25lYGAsIHNvIHRoYXQKKyAgICAgIHRoaXMgbWV0aG9kIG5ldmVyIHJhaXNlcyBhIDpleGM6YEtleUVycm9yYC4KKworICAgLi4gbWV0aG9kOjogaXRlbXMoKQorCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nJ3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGAKKyAgICAgIHBhaXJzKS4KKworICAgLi4gbWV0aG9kOjoga2V5cygpCisKKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcncyBrZXlzLgorCisgICAuLiBtZXRob2Q6OiB2YWx1ZXMoKQorCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nJ3MgdmFsdWVzLgorCisKKy4uIGNsYXNzOjogU2ltcGxlTmFtZXNwYWNlCisKKyAgIEEgc2ltcGxlIDpjbGFzczpgb2JqZWN0YCBzdWJjbGFzcyB0aGF0IHByb3ZpZGVzIGF0dHJpYnV0ZSBhY2Nlc3MgdG8gaXRzCisgICBuYW1lc3BhY2UsIGFzIHdlbGwgYXMgYSBtZWFuaW5nZnVsIHJlcHIuCisKKyAgIFVubGlrZSA6Y2xhc3M6YG9iamVjdGAsIHdpdGggYGBTaW1wbGVOYW1lc3BhY2VgYCB5b3UgY2FuIGFkZCBhbmQgcmVtb3ZlCisgICBhdHRyaWJ1dGVzLiAgSWYgYSBgYFNpbXBsZU5hbWVzcGFjZWBgIG9iamVjdCBpcyBpbml0aWFsaXplZCB3aXRoIGtleXdvcmQKKyAgIGFyZ3VtZW50cywgdGhvc2UgYXJlIGRpcmVjdGx5IGFkZGVkIHRvIHRoZSB1bmRlcmx5aW5nIG5hbWVzcGFjZS4KKworICAgVGhlIHR5cGUgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcgY29kZTo6CisKKyAgICAgICBjbGFzcyBTaW1wbGVOYW1lc3BhY2U6CisgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShrd2FyZ3MpCisgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgIGtleXMgPSBzb3J0ZWQoc2VsZi5fX2RpY3RfXykKKyAgICAgICAgICAgICAgIGl0ZW1zID0gKCJ7fT17IXJ9Ii5mb3JtYXQoaywgc2VsZi5fX2RpY3RfX1trXSkgZm9yIGsgaW4ga2V5cykKKyAgICAgICAgICAgICAgIHJldHVybiAie30oe30pIi5mb3JtYXQodHlwZShzZWxmKS5fX25hbWVfXywgIiwgIi5qb2luKGl0ZW1zKSkKKworICAgYGBTaW1wbGVOYW1lc3BhY2VgYCBtYXkgYmUgdXNlZnVsIGFzIGEgcmVwbGFjZW1lbnQgZm9yIGBgY2xhc3MgTlM6IHBhc3NgYC4KKyAgIEhvd2V2ZXIsIGZvciBhIHN0cnVjdHVyZWQgcmVjb3JkIHR5cGUgdXNlIDpmdW5jOmB+Y29sbGVjdGlvbnMubmFtZWR0dXBsZWAKKyAgIGluc3RlYWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0IGIvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CmluZGV4IDNiMWJiZTAuLjM3ODdjMzYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKQEAgLTE1LDggKzE1LDggQEAKIAogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSAoVUNEKSB3aGljaAogZGVmaW5lcyBjaGFyYWN0ZXIgcHJvcGVydGllcyBmb3IgYWxsIFVuaWNvZGUgY2hhcmFjdGVycy4gVGhlIGRhdGEgY29udGFpbmVkIGluCi10aGlzIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGZyb20gdGhlIGBVQ0QgdmVyc2lvbiA2LjAuMAotPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMC4wL3VjZD5gXy4KK3RoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDYuMS4wCis8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4xLjAvdWNkPmBfLgogCiBUaGUgbW9kdWxlIHVzZXMgdGhlIHNhbWUgbmFtZXMgYW5kIHN5bWJvbHMgYXMgZGVmaW5lZCBieSBVbmljb2RlCiBTdGFuZGFyZCBBbm5leCAjNDQsIGAiVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UiCkBAIC0yOSw2ICsyOSw5IEBACiAgICBMb29rIHVwIGNoYXJhY3RlciBieSBuYW1lLiAgSWYgYSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpcyBmb3VuZCwgcmV0dXJuCiAgICB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuICBJZiBub3QgZm91bmQsIDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWyNdXyBhbmQgbmFtZWQgc2VxdWVuY2VzIFsjXV8gaGFzIGJlZW4gYWRkZWQuCisKIAogLi4gZnVuY3Rpb246OiBuYW1lKGNoclssIGRlZmF1bHRdKQogCkBAIC0xNjAsMyArMTYzLDkgQEAKICAgID4+PiB1bmljb2RlZGF0YS5iaWRpcmVjdGlvbmFsKCdcdTA2NjAnKSAjICdBJ3JhYmljLCAnTid1bWJlcgogICAgJ0FOJwogCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4xLjAvdWNkL05hbWVBbGlhc2VzLnR4dAorCisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4xLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay1leGFtcGxlcy5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTFlODhhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay1leGFtcGxlcy5yc3QKQEAgLTAsMCArMSwxMjQ2IEBACis6bW9kOmB1bml0dGVzdC5tb2NrYCAtLS0gZ2V0dGluZyBzdGFydGVkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZWF1dGhvcjo6IE1pY2hhZWwgRm9vcmQgPG1pY2hhZWxAcHl0aG9uLm9yZz4KKy4uIGN1cnJlbnRtb2R1bGU6OiB1bml0dGVzdC5tb2NrCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIF9nZXR0aW5nLXN0YXJ0ZWQ6CisKK1VzaW5nIE1vY2sKKy0tLS0tLS0tLS0KKworTW9jayBQYXRjaGluZyBNZXRob2RzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworQ29tbW9uIHVzZXMgZm9yIDpjbGFzczpgTW9ja2Agb2JqZWN0cyBpbmNsdWRlOgorCisqIFBhdGNoaW5nIG1ldGhvZHMKKyogUmVjb3JkaW5nIG1ldGhvZCBjYWxscyBvbiBvYmplY3RzCisKK1lvdSBtaWdodCB3YW50IHRvIHJlcGxhY2UgYSBtZXRob2Qgb24gYW4gb2JqZWN0IHRvIGNoZWNrIHRoYXQKK2l0IGlzIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IGFyZ3VtZW50cyBieSBhbm90aGVyIHBhcnQgb2YgdGhlIHN5c3RlbToKKworICAgID4+PiByZWFsID0gU29tZUNsYXNzKCkKKyAgICA+Pj4gcmVhbC5tZXRob2QgPSBNYWdpY01vY2sobmFtZT0nbWV0aG9kJykKKyAgICA+Pj4gcmVhbC5tZXRob2QoMywgNCwgNSwga2V5PSd2YWx1ZScpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtZXRob2QoKScgaWQ9Jy4uLic+CisKK09uY2Ugb3VyIG1vY2sgaGFzIGJlZW4gdXNlZCAoYHJlYWwubWV0aG9kYCBpbiB0aGlzIGV4YW1wbGUpIGl0IGhhcyBtZXRob2RzCithbmQgYXR0cmlidXRlcyB0aGF0IGFsbG93IHlvdSB0byBtYWtlIGFzc2VydGlvbnMgYWJvdXQgaG93IGl0IGhhcyBiZWVuIHVzZWQuCisKKy4uIG5vdGU6OgorCisgICAgSW4gbW9zdCBvZiB0aGVzZSBleGFtcGxlcyB0aGUgOmNsYXNzOmBNb2NrYCBhbmQgOmNsYXNzOmBNYWdpY01vY2tgIGNsYXNzZXMKKyAgICBhcmUgaW50ZXJjaGFuZ2VhYmxlLiBBcyB0aGUgYE1hZ2ljTW9ja2AgaXMgdGhlIG1vcmUgY2FwYWJsZSBjbGFzcyBpdCBtYWtlcworICAgIGEgc2Vuc2libGUgb25lIHRvIHVzZSBieSBkZWZhdWx0LgorCitPbmNlIHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCBpdHMgOmF0dHI6YH5Nb2NrLmNhbGxlZGAgYXR0cmlidXRlIGlzIHNldCB0bworYFRydWVgLiBNb3JlIGltcG9ydGFudGx5IHdlIGNhbiB1c2UgdGhlIDptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgIG9yCis6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhgIG1ldGhvZCB0byBjaGVjayB0aGF0IGl0IHdhcyBjYWxsZWQgd2l0aAordGhlIGNvcnJlY3QgYXJndW1lbnRzLgorCitUaGlzIGV4YW1wbGUgdGVzdHMgdGhhdCBjYWxsaW5nIGBQcm9kdWN0aW9uQ2xhc3MoKS5tZXRob2RgIHJlc3VsdHMgaW4gYSBjYWxsIHRvCit0aGUgYHNvbWV0aGluZ2AgbWV0aG9kOgorCisgICAgPj4+IGNsYXNzIFByb2R1Y3Rpb25DbGFzcyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnNvbWV0aGluZygxLCAyLCAzKQorICAgIC4uLiAgICAgZGVmIHNvbWV0aGluZyhzZWxmLCBhLCBiLCBjKToKKyAgICAuLi4gICAgICAgICBwYXNzCisgICAgLi4uCisgICAgPj4+IHJlYWwgPSBQcm9kdWN0aW9uQ2xhc3MoKQorICAgID4+PiByZWFsLnNvbWV0aGluZyA9IE1hZ2ljTW9jaygpCisgICAgPj4+IHJlYWwubWV0aG9kKCkKKyAgICA+Pj4gcmVhbC5zb21ldGhpbmcuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKworCisKK01vY2sgZm9yIE1ldGhvZCBDYWxscyBvbiBhbiBPYmplY3QKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworSW4gdGhlIGxhc3QgZXhhbXBsZSB3ZSBwYXRjaGVkIGEgbWV0aG9kIGRpcmVjdGx5IG9uIGFuIG9iamVjdCB0byBjaGVjayB0aGF0IGl0Cit3YXMgY2FsbGVkIGNvcnJlY3RseS4gQW5vdGhlciBjb21tb24gdXNlIGNhc2UgaXMgdG8gcGFzcyBhbiBvYmplY3QgaW50byBhCittZXRob2QgKG9yIHNvbWUgcGFydCBvZiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QpIGFuZCB0aGVuIGNoZWNrIHRoYXQgaXQgaXMgdXNlZAoraW4gdGhlIGNvcnJlY3Qgd2F5LgorCitUaGUgc2ltcGxlIGBQcm9kdWN0aW9uQ2xhc3NgIGJlbG93IGhhcyBhIGBjbG9zZXJgIG1ldGhvZC4gSWYgaXQgaXMgY2FsbGVkIHdpdGgKK2FuIG9iamVjdCB0aGVuIGl0IGNhbGxzIGBjbG9zZWAgb24gaXQuCisKKyAgICA+Pj4gY2xhc3MgUHJvZHVjdGlvbkNsYXNzKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgY2xvc2VyKHNlbGYsIHNvbWV0aGluZyk6CisgICAgLi4uICAgICAgICAgc29tZXRoaW5nLmNsb3NlKCkKKyAgICAuLi4KKworU28gdG8gdGVzdCBpdCB3ZSBuZWVkIHRvIHBhc3MgaW4gYW4gb2JqZWN0IHdpdGggYSBgY2xvc2VgIG1ldGhvZCBhbmQgY2hlY2sKK3RoYXQgaXQgd2FzIGNhbGxlZCBjb3JyZWN0bHkuCisKKyAgICA+Pj4gcmVhbCA9IFByb2R1Y3Rpb25DbGFzcygpCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gcmVhbC5jbG9zZXIobW9jaykKKyAgICA+Pj4gbW9jay5jbG9zZS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorCitXZSBkb24ndCBoYXZlIHRvIGRvIGFueSB3b3JrIHRvIHByb3ZpZGUgdGhlICdjbG9zZScgbWV0aG9kIG9uIG91ciBtb2NrLgorQWNjZXNzaW5nIGNsb3NlIGNyZWF0ZXMgaXQuIFNvLCBpZiAnY2xvc2UnIGhhc24ndCBhbHJlYWR5IGJlZW4gY2FsbGVkIHRoZW4KK2FjY2Vzc2luZyBpdCBpbiB0aGUgdGVzdCB3aWxsIGNyZWF0ZSBpdCwgYnV0IDptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgCit3aWxsIHJhaXNlIGEgZmFpbHVyZSBleGNlcHRpb24uCisKKworTW9ja2luZyBDbGFzc2VzCit+fn5+fn5+fn5+fn5+fn4KKworQSBjb21tb24gdXNlIGNhc2UgaXMgdG8gbW9jayBvdXQgY2xhc3NlcyBpbnN0YW50aWF0ZWQgYnkgeW91ciBjb2RlIHVuZGVyIHRlc3QuCitXaGVuIHlvdSBwYXRjaCBhIGNsYXNzLCB0aGVuIHRoYXQgY2xhc3MgaXMgcmVwbGFjZWQgd2l0aCBhIG1vY2suIEluc3RhbmNlcworYXJlIGNyZWF0ZWQgYnkgKmNhbGxpbmcgdGhlIGNsYXNzKi4gVGhpcyBtZWFucyB5b3UgYWNjZXNzIHRoZSAibW9jayBpbnN0YW5jZSIKK2J5IGxvb2tpbmcgYXQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbW9ja2VkIGNsYXNzLgorCitJbiB0aGUgZXhhbXBsZSBiZWxvdyB3ZSBoYXZlIGEgZnVuY3Rpb24gYHNvbWVfZnVuY3Rpb25gIHRoYXQgaW5zdGFudGlhdGVzIGBGb29gCithbmQgY2FsbHMgYSBtZXRob2Qgb24gaXQuIFRoZSBjYWxsIHRvIGBwYXRjaGAgcmVwbGFjZXMgdGhlIGNsYXNzIGBGb29gIHdpdGggYQorbW9jay4gVGhlIGBGb29gIGluc3RhbmNlIGlzIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgbW9jaywgc28gaXQgaXMgY29uZmlndXJlZAorYnkgbW9kaWZ5aW5nIHRoZSBtb2NrIDphdHRyOmB+TW9jay5yZXR1cm5fdmFsdWVgLgorCisgICAgPj4+IGRlZiBzb21lX2Z1bmN0aW9uKCk6CisgICAgLi4uICAgICBpbnN0YW5jZSA9IG1vZHVsZS5Gb28oKQorICAgIC4uLiAgICAgcmV0dXJuIGluc3RhbmNlLm1ldGhvZCgpCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2goJ21vZHVsZS5Gb28nKSBhcyBtb2NrOgorICAgIC4uLiAgICAgaW5zdGFuY2UgPSBtb2NrLnJldHVybl92YWx1ZQorICAgIC4uLiAgICAgaW5zdGFuY2UubWV0aG9kLnJldHVybl92YWx1ZSA9ICd0aGUgcmVzdWx0JworICAgIC4uLiAgICAgcmVzdWx0ID0gc29tZV9mdW5jdGlvbigpCisgICAgLi4uICAgICBhc3NlcnQgcmVzdWx0ID09ICd0aGUgcmVzdWx0JworCisKK05hbWluZyB5b3VyIG1vY2tzCit+fn5+fn5+fn5+fn5+fn5+fgorCitJdCBjYW4gYmUgdXNlZnVsIHRvIGdpdmUgeW91ciBtb2NrcyBhIG5hbWUuIFRoZSBuYW1lIGlzIHNob3duIGluIHRoZSByZXByIG9mCit0aGUgbW9jayBhbmQgY2FuIGJlIGhlbHBmdWwgd2hlbiB0aGUgbW9jayBhcHBlYXJzIGluIHRlc3QgZmFpbHVyZSBtZXNzYWdlcy4gVGhlCituYW1lIGlzIGFsc28gcHJvcGFnYXRlZCB0byBhdHRyaWJ1dGVzIG9yIG1ldGhvZHMgb2YgdGhlIG1vY2s6CisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jayhuYW1lPSdmb28nKQorICAgID4+PiBtb2NrCisgICAgPE1hZ2ljTW9jayBuYW1lPSdmb28nIGlkPScuLi4nPgorICAgID4+PiBtb2NrLm1ldGhvZAorICAgIDxNYWdpY01vY2sgbmFtZT0nZm9vLm1ldGhvZCcgaWQ9Jy4uLic+CisKKworVHJhY2tpbmcgYWxsIENhbGxzCit+fn5+fn5+fn5+fn5+fn5+fn4KKworT2Z0ZW4geW91IHdhbnQgdG8gdHJhY2sgbW9yZSB0aGFuIGEgc2luZ2xlIGNhbGwgdG8gYSBtZXRob2QuIFRoZQorOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIGF0dHJpYnV0ZSByZWNvcmRzIGFsbCBjYWxscwordG8gY2hpbGQgYXR0cmlidXRlcyBvZiB0aGUgbW9jayAtIGFuZCBhbHNvIHRvIHRoZWlyIGNoaWxkcmVuLgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5hdHRyaWJ1dGUubWV0aG9kKDEwLCB4PTUzKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5hdHRyaWJ1dGUubWV0aG9kKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrLm1vY2tfY2FsbHMKKyAgICBbY2FsbC5tZXRob2QoKSwgY2FsbC5hdHRyaWJ1dGUubWV0aG9kKDEwLCB4PTUzKV0KKworSWYgeW91IG1ha2UgYW4gYXNzZXJ0aW9uIGFib3V0IGBtb2NrX2NhbGxzYCBhbmQgYW55IHVuZXhwZWN0ZWQgbWV0aG9kcworaGF2ZSBiZWVuIGNhbGxlZCwgdGhlbiB0aGUgYXNzZXJ0aW9uIHdpbGwgZmFpbC4gVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSBhcyB3ZWxsCithcyBhc3NlcnRpbmcgdGhhdCB0aGUgY2FsbHMgeW91IGV4cGVjdGVkIGhhdmUgYmVlbiBtYWRlLCB5b3UgYXJlIGFsc28gY2hlY2tpbmcKK3RoYXQgdGhleSB3ZXJlIG1hZGUgaW4gdGhlIHJpZ2h0IG9yZGVyIGFuZCB3aXRoIG5vIGFkZGl0aW9uYWwgY2FsbHM6CisKK1lvdSB1c2UgdGhlIDpkYXRhOmBjYWxsYCBvYmplY3QgdG8gY29uc3RydWN0IGxpc3RzIGZvciBjb21wYXJpbmcgd2l0aAorYG1vY2tfY2FsbHNgOgorCisgICAgPj4+IGV4cGVjdGVkID0gW2NhbGwubWV0aG9kKCksIGNhbGwuYXR0cmlidXRlLm1ldGhvZCgxMCwgeD01MyldCisgICAgPj4+IG1vY2subW9ja19jYWxscyA9PSBleHBlY3RlZAorICAgIFRydWUKKworCitTZXR0aW5nIFJldHVybiBWYWx1ZXMgYW5kIEF0dHJpYnV0ZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitTZXR0aW5nIHRoZSByZXR1cm4gdmFsdWVzIG9uIGEgbW9jayBvYmplY3QgaXMgdHJpdmlhbGx5IGVhc3k6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrLnJldHVybl92YWx1ZSA9IDMKKyAgICA+Pj4gbW9jaygpCisgICAgMworCitPZiBjb3Vyc2UgeW91IGNhbiBkbyB0aGUgc2FtZSBmb3IgbWV0aG9kcyBvbiB0aGUgbW9jazoKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vY2subWV0aG9kLnJldHVybl92YWx1ZSA9IDMKKyAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgIDMKKworVGhlIHJldHVybiB2YWx1ZSBjYW4gYWxzbyBiZSBzZXQgaW4gdGhlIGNvbnN0cnVjdG9yOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT0zKQorICAgID4+PiBtb2NrKCkKKyAgICAzCisKK0lmIHlvdSBuZWVkIGFuIGF0dHJpYnV0ZSBzZXR0aW5nIG9uIHlvdXIgbW9jaywganVzdCBkbyBpdDoKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vY2sueCA9IDMKKyAgICA+Pj4gbW9jay54CisgICAgMworCitTb21ldGltZXMgeW91IHdhbnQgdG8gbW9jayB1cCBhIG1vcmUgY29tcGxleCBzaXR1YXRpb24sIGxpa2UgZm9yIGV4YW1wbGUKK2Btb2NrLmNvbm5lY3Rpb24uY3Vyc29yKCkuZXhlY3V0ZSgiU0VMRUNUIDEiKWAuIElmIHdlIHdhbnRlZCB0aGlzIGNhbGwgdG8KK3JldHVybiBhIGxpc3QsIHRoZW4gd2UgaGF2ZSB0byBjb25maWd1cmUgdGhlIHJlc3VsdCBvZiB0aGUgbmVzdGVkIGNhbGwuCisKK1dlIGNhbiB1c2UgOmRhdGE6YGNhbGxgIHRvIGNvbnN0cnVjdCB0aGUgc2V0IG9mIGNhbGxzIGluIGEgImNoYWluZWQgY2FsbCIgbGlrZQordGhpcyBmb3IgZWFzeSBhc3NlcnRpb24gYWZ0ZXJ3YXJkczoKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IGN1cnNvciA9IG1vY2suY29ubmVjdGlvbi5jdXJzb3IucmV0dXJuX3ZhbHVlCisgICAgPj4+IGN1cnNvci5leGVjdXRlLnJldHVybl92YWx1ZSA9IFsnZm9vJ10KKyAgICA+Pj4gbW9jay5jb25uZWN0aW9uLmN1cnNvcigpLmV4ZWN1dGUoIlNFTEVDVCAxIikKKyAgICBbJ2ZvbyddCisgICAgPj4+IGV4cGVjdGVkID0gY2FsbC5jb25uZWN0aW9uLmN1cnNvcigpLmV4ZWN1dGUoIlNFTEVDVCAxIikuY2FsbF9saXN0KCkKKyAgICA+Pj4gbW9jay5tb2NrX2NhbGxzCisgICAgW2NhbGwuY29ubmVjdGlvbi5jdXJzb3IoKSwgY2FsbC5jb25uZWN0aW9uLmN1cnNvcigpLmV4ZWN1dGUoJ1NFTEVDVCAxJyldCisgICAgPj4+IG1vY2subW9ja19jYWxscyA9PSBleHBlY3RlZAorICAgIFRydWUKKworSXQgaXMgdGhlIGNhbGwgdG8gYC5jYWxsX2xpc3QoKWAgdGhhdCB0dXJucyBvdXIgY2FsbCBvYmplY3QgaW50byBhIGxpc3Qgb2YKK2NhbGxzIHJlcHJlc2VudGluZyB0aGUgY2hhaW5lZCBjYWxscy4KKworCitSYWlzaW5nIGV4Y2VwdGlvbnMgd2l0aCBtb2Nrcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworQSB1c2VmdWwgYXR0cmlidXRlIGlzIDphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAuIElmIHlvdSBzZXQgdGhpcyB0byBhbgorZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlIHRoZW4gdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHRoZSBtb2NrCitpcyBjYWxsZWQuCisKKyAgICA+Pj4gbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9RXhjZXB0aW9uKCdCb29tIScpKQorICAgID4+PiBtb2NrKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBFeGNlcHRpb246IEJvb20hCisKKworU2lkZSBlZmZlY3QgZnVuY3Rpb25zIGFuZCBpdGVyYWJsZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK2BzaWRlX2VmZmVjdGAgY2FuIGFsc28gYmUgc2V0IHRvIGEgZnVuY3Rpb24gb3IgYW4gaXRlcmFibGUuIFRoZSB1c2UgY2FzZSBmb3IKK2BzaWRlX2VmZmVjdGAgYXMgYW4gaXRlcmFibGUgaXMgd2hlcmUgeW91ciBtb2NrIGlzIGdvaW5nIHRvIGJlIGNhbGxlZCBzZXZlcmFsCit0aW1lcywgYW5kIHlvdSB3YW50IGVhY2ggY2FsbCB0byByZXR1cm4gYSBkaWZmZXJlbnQgdmFsdWUuIFdoZW4geW91IHNldAorYHNpZGVfZWZmZWN0YCB0byBhbiBpdGVyYWJsZSBldmVyeSBjYWxsIHRvIHRoZSBtb2NrIHJldHVybnMgdGhlIG5leHQgdmFsdWUKK2Zyb20gdGhlIGl0ZXJhYmxlOgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9WzQsIDUsIDZdKQorICAgID4+PiBtb2NrKCkKKyAgICA0CisgICAgPj4+IG1vY2soKQorICAgIDUKKyAgICA+Pj4gbW9jaygpCisgICAgNgorCisKK0ZvciBtb3JlIGFkdmFuY2VkIHVzZSBjYXNlcywgbGlrZSBkeW5hbWljYWxseSB2YXJ5aW5nIHRoZSByZXR1cm4gdmFsdWVzCitkZXBlbmRpbmcgb24gd2hhdCB0aGUgbW9jayBpcyBjYWxsZWQgd2l0aCwgYHNpZGVfZWZmZWN0YCBjYW4gYmUgYSBmdW5jdGlvbi4KK1RoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyB0aGUgbW9jay4gV2hhdGV2ZXIgdGhlCitmdW5jdGlvbiByZXR1cm5zIGlzIHdoYXQgdGhlIGNhbGwgcmV0dXJuczoKKworICAgID4+PiB2YWxzID0geygxLCAyKTogMSwgKDIsIDMpOiAyfQorICAgID4+PiBkZWYgc2lkZV9lZmZlY3QoKmFyZ3MpOgorICAgIC4uLiAgICAgcmV0dXJuIHZhbHNbYXJnc10KKyAgICAuLi4KKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1zaWRlX2VmZmVjdCkKKyAgICA+Pj4gbW9jaygxLCAyKQorICAgIDEKKyAgICA+Pj4gbW9jaygyLCAzKQorICAgIDIKKworCitDcmVhdGluZyBhIE1vY2sgZnJvbSBhbiBFeGlzdGluZyBPYmplY3QKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitPbmUgcHJvYmxlbSB3aXRoIG92ZXIgdXNlIG9mIG1vY2tpbmcgaXMgdGhhdCBpdCBjb3VwbGVzIHlvdXIgdGVzdHMgdG8gdGhlCitpbXBsZW1lbnRhdGlvbiBvZiB5b3VyIG1vY2tzIHJhdGhlciB0aGFuIHlvdXIgcmVhbCBjb2RlLiBTdXBwb3NlIHlvdSBoYXZlIGEKK2NsYXNzIHRoYXQgaW1wbGVtZW50cyBgc29tZV9tZXRob2RgLiBJbiBhIHRlc3QgZm9yIGFub3RoZXIgY2xhc3MsIHlvdQorcHJvdmlkZSBhIG1vY2sgb2YgdGhpcyBvYmplY3QgdGhhdCAqYWxzbyogcHJvdmlkZXMgYHNvbWVfbWV0aG9kYC4gSWYgbGF0ZXIKK3lvdSByZWZhY3RvciB0aGUgZmlyc3QgY2xhc3MsIHNvIHRoYXQgaXQgbm8gbG9uZ2VyIGhhcyBgc29tZV9tZXRob2RgIC0gdGhlbgoreW91ciB0ZXN0cyB3aWxsIGNvbnRpbnVlIHRvIHBhc3MgZXZlbiB0aG91Z2ggeW91ciBjb2RlIGlzIG5vdyBicm9rZW4hCisKK2BNb2NrYCBhbGxvd3MgeW91IHRvIHByb3ZpZGUgYW4gb2JqZWN0IGFzIGEgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIG1vY2ssCit1c2luZyB0aGUgYHNwZWNgIGtleXdvcmQgYXJndW1lbnQuIEFjY2Vzc2luZyBtZXRob2RzIC8gYXR0cmlidXRlcyBvbiB0aGUKK21vY2sgdGhhdCBkb24ndCBleGlzdCBvbiB5b3VyIHNwZWNpZmljYXRpb24gb2JqZWN0IHdpbGwgaW1tZWRpYXRlbHkgcmFpc2UgYW4KK2F0dHJpYnV0ZSBlcnJvci4gSWYgeW91IGNoYW5nZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgeW91ciBzcGVjaWZpY2F0aW9uLCB0aGVuCit0ZXN0cyB0aGF0IHVzZSB0aGF0IGNsYXNzIHdpbGwgc3RhcnQgZmFpbGluZyBpbW1lZGlhdGVseSB3aXRob3V0IHlvdSBoYXZpbmcgdG8KK2luc3RhbnRpYXRlIHRoZSBjbGFzcyBpbiB0aG9zZSB0ZXN0cy4KKworICAgID4+PiBtb2NrID0gTW9jayhzcGVjPVNvbWVDbGFzcykKKyAgICA+Pj4gbW9jay5vbGRfbWV0aG9kKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgLi4uCisgICAgQXR0cmlidXRlRXJyb3I6IG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdvbGRfbWV0aG9kJworCitJZiB5b3Ugd2FudCBhIHN0cm9uZ2VyIGZvcm0gb2Ygc3BlY2lmaWNhdGlvbiB0aGF0IHByZXZlbnRzIHRoZSBzZXR0aW5nCitvZiBhcmJpdHJhcnkgYXR0cmlidXRlcyBhcyB3ZWxsIGFzIHRoZSBnZXR0aW5nIG9mIHRoZW0gdGhlbiB5b3UgY2FuIHVzZQorYHNwZWNfc2V0YCBpbnN0ZWFkIG9mIGBzcGVjYC4KKworCisKK1BhdGNoIERlY29yYXRvcnMKKy0tLS0tLS0tLS0tLS0tLS0KKworLi4gbm90ZTo6CisKKyAgIFdpdGggYHBhdGNoYCBpdCBtYXR0ZXJzIHRoYXQgeW91IHBhdGNoIG9iamVjdHMgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSB0aGV5CisgICBhcmUgbG9va2VkIHVwLiBUaGlzIGlzIG5vcm1hbGx5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGZvciBhIHF1aWNrIGd1aWRlCisgICByZWFkIDpyZWY6YHdoZXJlIHRvIHBhdGNoIDx3aGVyZS10by1wYXRjaD5gLgorCisKK0EgY29tbW9uIG5lZWQgaW4gdGVzdHMgaXMgdG8gcGF0Y2ggYSBjbGFzcyBhdHRyaWJ1dGUgb3IgYSBtb2R1bGUgYXR0cmlidXRlLAorZm9yIGV4YW1wbGUgcGF0Y2hpbmcgYSBidWlsdGluIG9yIHBhdGNoaW5nIGEgY2xhc3MgaW4gYSBtb2R1bGUgdG8gdGVzdCB0aGF0IGl0CitpcyBpbnN0YW50aWF0ZWQuIE1vZHVsZXMgYW5kIGNsYXNzZXMgYXJlIGVmZmVjdGl2ZWx5IGdsb2JhbCwgc28gcGF0Y2hpbmcgb24KK3RoZW0gaGFzIHRvIGJlIHVuZG9uZSBhZnRlciB0aGUgdGVzdCBvciB0aGUgcGF0Y2ggd2lsbCBwZXJzaXN0IGludG8gb3RoZXIKK3Rlc3RzIGFuZCBjYXVzZSBoYXJkIHRvIGRpYWdub3NlIHByb2JsZW1zLgorCittb2NrIHByb3ZpZGVzIHRocmVlIGNvbnZlbmllbnQgZGVjb3JhdG9ycyBmb3IgdGhpczogYHBhdGNoYCwgYHBhdGNoLm9iamVjdGAgYW5kCitgcGF0Y2guZGljdGAuIGBwYXRjaGAgdGFrZXMgYSBzaW5nbGUgc3RyaW5nLCBvZiB0aGUgZm9ybQorYHBhY2thZ2UubW9kdWxlLkNsYXNzLmF0dHJpYnV0ZWAgdG8gc3BlY2lmeSB0aGUgYXR0cmlidXRlIHlvdSBhcmUgcGF0Y2hpbmcuIEl0CithbHNvIG9wdGlvbmFsbHkgdGFrZXMgYSB2YWx1ZSB0aGF0IHlvdSB3YW50IHRoZSBhdHRyaWJ1dGUgKG9yIGNsYXNzIG9yCit3aGF0ZXZlcikgdG8gYmUgcmVwbGFjZWQgd2l0aC4gJ3BhdGNoLm9iamVjdCcgdGFrZXMgYW4gb2JqZWN0IGFuZCB0aGUgbmFtZSBvZgordGhlIGF0dHJpYnV0ZSB5b3Ugd291bGQgbGlrZSBwYXRjaGVkLCBwbHVzIG9wdGlvbmFsbHkgdGhlIHZhbHVlIHRvIHBhdGNoIGl0Cit3aXRoLgorCitgcGF0Y2gub2JqZWN0YDoKKworICAgID4+PiBvcmlnaW5hbCA9IFNvbWVDbGFzcy5hdHRyaWJ1dGUKKyAgICA+Pj4gQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5hdHRyaWJ1dGUpCisgICAgLi4uIGRlZiB0ZXN0KCk6CisgICAgLi4uICAgICBhc3NlcnQgU29tZUNsYXNzLmF0dHJpYnV0ZSA9PSBzZW50aW5lbC5hdHRyaWJ1dGUKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisgICAgPj4+IGFzc2VydCBTb21lQ2xhc3MuYXR0cmlidXRlID09IG9yaWdpbmFsCisKKyAgICA+Pj4gQHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5hdHRyaWJ1dGUnLCBzZW50aW5lbC5hdHRyaWJ1dGUpCisgICAgLi4uIGRlZiB0ZXN0KCk6CisgICAgLi4uICAgICBmcm9tIHBhY2thZ2UubW9kdWxlIGltcG9ydCBhdHRyaWJ1dGUKKyAgICAuLi4gICAgIGFzc2VydCBhdHRyaWJ1dGUgaXMgc2VudGluZWwuYXR0cmlidXRlCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorCitJZiB5b3UgYXJlIHBhdGNoaW5nIGEgbW9kdWxlIChpbmNsdWRpbmcgYF9fYnVpbHRpbl9fYCkgdGhlbiB1c2UgYHBhdGNoYAoraW5zdGVhZCBvZiBgcGF0Y2gub2JqZWN0YDoKKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZSA9IHNlbnRpbmVsLmZpbGVfaGFuZGxlKQorICAgID4+PiB3aXRoIHBhdGNoKCdfX2J1aWx0aW5fXy5vcGVuJywgbW9jayk6CisgICAgLi4uICAgICBoYW5kbGUgPSBvcGVuKCdmaWxlbmFtZScsICdyJykKKyAgICAuLi4KKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoJ2ZpbGVuYW1lJywgJ3InKQorICAgID4+PiBhc3NlcnQgaGFuZGxlID09IHNlbnRpbmVsLmZpbGVfaGFuZGxlLCAiaW5jb3JyZWN0IGZpbGUgaGFuZGxlIHJldHVybmVkIgorCitUaGUgbW9kdWxlIG5hbWUgY2FuIGJlICdkb3R0ZWQnLCBpbiB0aGUgZm9ybSBgcGFja2FnZS5tb2R1bGVgIGlmIG5lZWRlZDoKKworICAgID4+PiBAcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZS5hdHRyaWJ1dGUnLCBzZW50aW5lbC5hdHRyaWJ1dGUpCisgICAgLi4uIGRlZiB0ZXN0KCk6CisgICAgLi4uICAgICBmcm9tIHBhY2thZ2UubW9kdWxlIGltcG9ydCBDbGFzc05hbWUKKyAgICAuLi4gICAgIGFzc2VydCBDbGFzc05hbWUuYXR0cmlidXRlID09IHNlbnRpbmVsLmF0dHJpYnV0ZQorICAgIC4uLgorICAgID4+PiB0ZXN0KCkKKworQSBuaWNlIHBhdHRlcm4gaXMgdG8gYWN0dWFsbHkgZGVjb3JhdGUgdGVzdCBtZXRob2RzIHRoZW1zZWx2ZXM6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KHVuaXR0ZXN0Mi5UZXN0Q2FzZSk6CisgICAgLi4uICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4gICAgIGRlZiB0ZXN0X3NvbWV0aGluZyhzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcy5hdHRyaWJ1dGUsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4KKyAgICA+Pj4gb3JpZ2luYWwgPSBTb21lQ2xhc3MuYXR0cmlidXRlCisgICAgPj4+IE15VGVzdCgndGVzdF9zb21ldGhpbmcnKS50ZXN0X3NvbWV0aGluZygpCisgICAgPj4+IGFzc2VydCBTb21lQ2xhc3MuYXR0cmlidXRlID09IG9yaWdpbmFsCisKK0lmIHlvdSB3YW50IHRvIHBhdGNoIHdpdGggYSBNb2NrLCB5b3UgY2FuIHVzZSBgcGF0Y2hgIHdpdGggb25seSBvbmUgYXJndW1lbnQKKyhvciBgcGF0Y2gub2JqZWN0YCB3aXRoIHR3byBhcmd1bWVudHMpLiBUaGUgbW9jayB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdSBhbmQKK3Bhc3NlZCBpbnRvIHRoZSB0ZXN0IGZ1bmN0aW9uIC8gbWV0aG9kOgorCisgICAgPj4+IGNsYXNzIE15VGVzdCh1bml0dGVzdDIuVGVzdENhc2UpOgorICAgIC4uLiAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdzdGF0aWNfbWV0aG9kJykKKyAgICAuLi4gICAgIGRlZiB0ZXN0X3NvbWV0aGluZyhzZWxmLCBtb2NrX21ldGhvZCk6CisgICAgLi4uICAgICAgICAgU29tZUNsYXNzLnN0YXRpY19tZXRob2QoKQorICAgIC4uLiAgICAgICAgIG1vY2tfbWV0aG9kLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9zb21ldGhpbmcnKS50ZXN0X3NvbWV0aGluZygpCisKK1lvdSBjYW4gc3RhY2sgdXAgbXVsdGlwbGUgcGF0Y2ggZGVjb3JhdG9ycyB1c2luZyB0aGlzIHBhdHRlcm46CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KHVuaXR0ZXN0Mi5UZXN0Q2FzZSk6CisgICAgLi4uICAgICBAcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZTEnKQorICAgIC4uLiAgICAgQHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUyJykKKyAgICAuLi4gICAgIGRlZiB0ZXN0X3NvbWV0aGluZyhzZWxmLCBNb2NrQ2xhc3MyLCBNb2NrQ2xhc3MxKToKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydFRydWUocGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lMSBpcyBNb2NrQ2xhc3MxKQorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUyIGlzIE1vY2tDbGFzczIpCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9zb21ldGhpbmcnKS50ZXN0X3NvbWV0aGluZygpCisKK1doZW4geW91IG5lc3QgcGF0Y2ggZGVjb3JhdG9ycyB0aGUgbW9ja3MgYXJlIHBhc3NlZCBpbiB0byB0aGUgZGVjb3JhdGVkCitmdW5jdGlvbiBpbiB0aGUgc2FtZSBvcmRlciB0aGV5IGFwcGxpZWQgKHRoZSBub3JtYWwgKnB5dGhvbiogb3JkZXIgdGhhdAorZGVjb3JhdG9ycyBhcmUgYXBwbGllZCkuIFRoaXMgbWVhbnMgZnJvbSB0aGUgYm90dG9tIHVwLCBzbyBpbiB0aGUgZXhhbXBsZQorYWJvdmUgdGhlIG1vY2sgZm9yIGB0ZXN0X21vZHVsZS5DbGFzc05hbWUyYCBpcyBwYXNzZWQgaW4gZmlyc3QuCisKK1RoZXJlIGlzIGFsc28gOmZ1bmM6YHBhdGNoLmRpY3RgIGZvciBzZXR0aW5nIHZhbHVlcyBpbiBhIGRpY3Rpb25hcnkganVzdAorZHVyaW5nIGEgc2NvcGUgYW5kIHJlc3RvcmluZyB0aGUgZGljdGlvbmFyeSB0byBpdHMgb3JpZ2luYWwgc3RhdGUgd2hlbiB0aGUgdGVzdAorZW5kczoKKworICAgPj4+IGZvbyA9IHsna2V5JzogJ3ZhbHVlJ30KKyAgID4+PiBvcmlnaW5hbCA9IGZvby5jb3B5KCkKKyAgID4+PiB3aXRoIHBhdGNoLmRpY3QoZm9vLCB7J25ld2tleSc6ICduZXd2YWx1ZSd9LCBjbGVhcj1UcnVlKToKKyAgIC4uLiAgICAgYXNzZXJ0IGZvbyA9PSB7J25ld2tleSc6ICduZXd2YWx1ZSd9CisgICAuLi4KKyAgID4+PiBhc3NlcnQgZm9vID09IG9yaWdpbmFsCisKK2BwYXRjaGAsIGBwYXRjaC5vYmplY3RgIGFuZCBgcGF0Y2guZGljdGAgY2FuIGFsbCBiZSB1c2VkIGFzIGNvbnRleHQgbWFuYWdlcnMuCisKK1doZXJlIHlvdSB1c2UgYHBhdGNoYCB0byBjcmVhdGUgYSBtb2NrIGZvciB5b3UsIHlvdSBjYW4gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZQorbW9jayB1c2luZyB0aGUgImFzIiBmb3JtIG9mIHRoZSB3aXRoIHN0YXRlbWVudDoKKworICAgID4+PiBjbGFzcyBQcm9kdWN0aW9uQ2xhc3Mob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6CisgICAgLi4uICAgICAgICAgcGFzcworICAgIC4uLgorICAgID4+PiB3aXRoIHBhdGNoLm9iamVjdChQcm9kdWN0aW9uQ2xhc3MsICdtZXRob2QnKSBhcyBtb2NrX21ldGhvZDoKKyAgICAuLi4gICAgIG1vY2tfbWV0aG9kLnJldHVybl92YWx1ZSA9IE5vbmUKKyAgICAuLi4gICAgIHJlYWwgPSBQcm9kdWN0aW9uQ2xhc3MoKQorICAgIC4uLiAgICAgcmVhbC5tZXRob2QoMSwgMiwgMykKKyAgICAuLi4KKyAgICA+Pj4gbW9ja19tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIsIDMpCisKKworQXMgYW4gYWx0ZXJuYXRpdmUgYHBhdGNoYCwgYHBhdGNoLm9iamVjdGAgYW5kIGBwYXRjaC5kaWN0YCBjYW4gYmUgdXNlZCBhcworY2xhc3MgZGVjb3JhdG9ycy4gV2hlbiB1c2VkIGluIHRoaXMgd2F5IGl0IGlzIHRoZSBzYW1lIGFzIGFwcGx5aW5nIHRoZQorZGVjb3JhdG9yIGluZHZpZHVhbGx5IHRvIGV2ZXJ5IG1ldGhvZCB3aG9zZSBuYW1lIHN0YXJ0cyB3aXRoICJ0ZXN0Ii4KKworCisuLiBfZnVydGhlci1leGFtcGxlczoKKworRnVydGhlciBFeGFtcGxlcworPT09PT09PT09PT09PT09PQorCisKK0hlcmUgYXJlIHNvbWUgbW9yZSBleGFtcGxlcyBmb3Igc29tZSBzbGlnaHRseSBtb3JlIGFkdmFuY2VkIHNjZW5hcmlvcy4KKworCitNb2NraW5nIGNoYWluZWQgY2FsbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNb2NraW5nIGNoYWluZWQgY2FsbHMgaXMgYWN0dWFsbHkgc3RyYWlnaHRmb3J3YXJkIHdpdGggbW9jayBvbmNlIHlvdQordW5kZXJzdGFuZCB0aGUgOmF0dHI6YH5Nb2NrLnJldHVybl92YWx1ZWAgYXR0cmlidXRlLiBXaGVuIGEgbW9jayBpcyBjYWxsZWQgZm9yCit0aGUgZmlyc3QgdGltZSwgb3IgeW91IGZldGNoIGl0cyBgcmV0dXJuX3ZhbHVlYCBiZWZvcmUgaXQgaGFzIGJlZW4gY2FsbGVkLCBhCituZXcgYE1vY2tgIGlzIGNyZWF0ZWQuCisKK1RoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNlZSBob3cgdGhlIG9iamVjdCByZXR1cm5lZCBmcm9tIGEgY2FsbCB0byBhIG1vY2tlZAorb2JqZWN0IGhhcyBiZWVuIHVzZWQgYnkgaW50ZXJyb2dhdGluZyB0aGUgYHJldHVybl92YWx1ZWAgbW9jazoKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vY2soKS5mb28oYT0yLCBiPTMpCisgICAgPE1vY2sgbmFtZT0nbW9jaygpLmZvbygpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5yZXR1cm5fdmFsdWUuZm9vLmFzc2VydF9jYWxsZWRfd2l0aChhPTIsIGI9MykKKworRnJvbSBoZXJlIGl0IGlzIGEgc2ltcGxlIHN0ZXAgdG8gY29uZmlndXJlIGFuZCB0aGVuIG1ha2UgYXNzZXJ0aW9ucyBhYm91dAorY2hhaW5lZCBjYWxscy4gT2YgY291cnNlIGFub3RoZXIgYWx0ZXJuYXRpdmUgaXMgd3JpdGluZyB5b3VyIGNvZGUgaW4gYSBtb3JlCit0ZXN0YWJsZSB3YXkgaW4gdGhlIGZpcnN0IHBsYWNlLi4uCisKK1NvLCBzdXBwb3NlIHdlIGhhdmUgc29tZSBjb2RlIHRoYXQgbG9va3MgYSBsaXR0bGUgYml0IGxpa2UgdGhpczoKKworICAgID4+PiBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLmJhY2tlbmQgPSBCYWNrZW5kUHJvdmlkZXIoKQorICAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAuLi4gICAgICAgICByZXNwb25zZSA9IHNlbGYuYmFja2VuZC5nZXRfZW5kcG9pbnQoJ2Zvb2JhcicpLmNyZWF0ZV9jYWxsKCdzcGFtJywgJ2VnZ3MnKS5zdGFydF9jYWxsKCkKKyAgICAuLi4gICAgICAgICAjIG1vcmUgY29kZQorCitBc3N1bWluZyB0aGF0IGBCYWNrZW5kUHJvdmlkZXJgIGlzIGFscmVhZHkgd2VsbCB0ZXN0ZWQsIGhvdyBkbyB3ZSB0ZXN0CitgbWV0aG9kKClgPyBTcGVjaWZpY2FsbHksIHdlIHdhbnQgdG8gdGVzdCB0aGF0IHRoZSBjb2RlIHNlY3Rpb24gYCMgbW9yZQorY29kZWAgdXNlcyB0aGUgcmVzcG9uc2Ugb2JqZWN0IGluIHRoZSBjb3JyZWN0IHdheS4KKworQXMgdGhpcyBjaGFpbiBvZiBjYWxscyBpcyBtYWRlIGZyb20gYW4gaW5zdGFuY2UgYXR0cmlidXRlIHdlIGNhbiBtb25rZXkgcGF0Y2gKK3RoZSBgYmFja2VuZGAgYXR0cmlidXRlIG9uIGEgYFNvbWV0aGluZ2AgaW5zdGFuY2UuIEluIHRoaXMgcGFydGljdWxhciBjYXNlCit3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgZmluYWwgY2FsbCB0bworYHN0YXJ0X2NhbGxgIHNvIHdlIGRvbid0IGhhdmUgbXVjaCBjb25maWd1cmF0aW9uIHRvIGRvLiBMZXQncyBhc3N1bWUgdGhlCitvYmplY3QgaXQgcmV0dXJucyBpcyAnZmlsZS1saWtlJywgc28gd2UnbGwgZW5zdXJlIHRoYXQgb3VyIHJlc3BvbnNlIG9iamVjdAordXNlcyB0aGUgYnVpbHRpbiBgZmlsZWAgYXMgaXRzIGBzcGVjYC4KKworVG8gZG8gdGhpcyB3ZSBjcmVhdGUgYSBtb2NrIGluc3RhbmNlIGFzIG91ciBtb2NrIGJhY2tlbmQgYW5kIGNyZWF0ZSBhIG1vY2sKK3Jlc3BvbnNlIG9iamVjdCBmb3IgaXQuIFRvIHNldCB0aGUgcmVzcG9uc2UgYXMgdGhlIHJldHVybiB2YWx1ZSBmb3IgdGhhdCBmaW5hbAorYHN0YXJ0X2NhbGxgIHdlIGNvdWxkIGRvIHRoaXM6CisKKyAgICBgbW9ja19iYWNrZW5kLmdldF9lbmRwb2ludC5yZXR1cm5fdmFsdWUuY3JlYXRlX2NhbGwucmV0dXJuX3ZhbHVlLnN0YXJ0X2NhbGwucmV0dXJuX3ZhbHVlID0gbW9ja19yZXNwb25zZWAuCisKK1dlIGNhbiBkbyB0aGF0IGluIGEgc2xpZ2h0bHkgbmljZXIgd2F5IHVzaW5nIHRoZSA6bWV0aDpgfk1vY2suY29uZmlndXJlX21vY2tgCittZXRob2QgdG8gZGlyZWN0bHkgc2V0IHRoZSByZXR1cm4gdmFsdWUgZm9yIHVzOgorCisgICAgPj4+IHNvbWV0aGluZyA9IFNvbWV0aGluZygpCisgICAgPj4+IG1vY2tfcmVzcG9uc2UgPSBNb2NrKHNwZWM9ZmlsZSkKKyAgICA+Pj4gbW9ja19iYWNrZW5kID0gTW9jaygpCisgICAgPj4+IGNvbmZpZyA9IHsnZ2V0X2VuZHBvaW50LnJldHVybl92YWx1ZS5jcmVhdGVfY2FsbC5yZXR1cm5fdmFsdWUuc3RhcnRfY2FsbC5yZXR1cm5fdmFsdWUnOiBtb2NrX3Jlc3BvbnNlfQorICAgID4+PiBtb2NrX2JhY2tlbmQuY29uZmlndXJlX21vY2soKipjb25maWcpCisKK1dpdGggdGhlc2Ugd2UgbW9ua2V5IHBhdGNoIHRoZSAibW9jayBiYWNrZW5kIiBpbiBwbGFjZSBhbmQgY2FuIG1ha2UgdGhlIHJlYWwKK2NhbGw6CisKKyAgICA+Pj4gc29tZXRoaW5nLmJhY2tlbmQgPSBtb2NrX2JhY2tlbmQKKyAgICA+Pj4gc29tZXRoaW5nLm1ldGhvZCgpCisKK1VzaW5nIDphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCB3ZSBjYW4gY2hlY2sgdGhlIGNoYWluZWQgY2FsbCB3aXRoIGEgc2luZ2xlCithc3NlcnQuIEEgY2hhaW5lZCBjYWxsIGlzIHNldmVyYWwgY2FsbHMgaW4gb25lIGxpbmUgb2YgY29kZSwgc28gdGhlcmUgd2lsbCBiZQorc2V2ZXJhbCBlbnRyaWVzIGluIGBtb2NrX2NhbGxzYC4gV2UgY2FuIHVzZSA6bWV0aDpgY2FsbC5jYWxsX2xpc3RgIHRvIGNyZWF0ZQordGhpcyBsaXN0IG9mIGNhbGxzIGZvciB1czoKKworICAgID4+PiBjaGFpbmVkID0gY2FsbC5nZXRfZW5kcG9pbnQoJ2Zvb2JhcicpLmNyZWF0ZV9jYWxsKCdzcGFtJywgJ2VnZ3MnKS5zdGFydF9jYWxsKCkKKyAgICA+Pj4gY2FsbF9saXN0ID0gY2hhaW5lZC5jYWxsX2xpc3QoKQorICAgID4+PiBhc3NlcnQgbW9ja19iYWNrZW5kLm1vY2tfY2FsbHMgPT0gY2FsbF9saXN0CisKKworUGFydGlhbCBtb2NraW5nCistLS0tLS0tLS0tLS0tLS0KKworSW4gc29tZSB0ZXN0cyBJIHdhbnRlZCB0byBtb2NrIG91dCBhIGNhbGwgdG8gYGRhdGV0aW1lLmRhdGUudG9kYXkoKQorPGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGlicmFyeS9kYXRldGltZS5odG1sI2RhdGV0aW1lLmRhdGUudG9kYXk+YF8gdG8gcmV0dXJuCithIGtub3duIGRhdGUsIGJ1dCBJIGRpZG4ndCB3YW50IHRvIHByZXZlbnQgdGhlIGNvZGUgdW5kZXIgdGVzdCBmcm9tCitjcmVhdGluZyBuZXcgZGF0ZSBvYmplY3RzLiBVbmZvcnR1bmF0ZWx5IGBkYXRldGltZS5kYXRlYCBpcyB3cml0dGVuIGluIEMsIGFuZAorc28gSSBjb3VsZG4ndCBqdXN0IG1vbmtleS1wYXRjaCBvdXQgdGhlIHN0YXRpYyBgZGF0ZS50b2RheWAgbWV0aG9kLgorCitJIGZvdW5kIGEgc2ltcGxlIHdheSBvZiBkb2luZyB0aGlzIHRoYXQgaW52b2x2ZWQgZWZmZWN0aXZlbHkgd3JhcHBpbmcgdGhlIGRhdGUKK2NsYXNzIHdpdGggYSBtb2NrLCBidXQgcGFzc2luZyB0aHJvdWdoIGNhbGxzIHRvIHRoZSBjb25zdHJ1Y3RvciB0byB0aGUgcmVhbAorY2xhc3MgKGFuZCByZXR1cm5pbmcgcmVhbCBpbnN0YW5jZXMpLgorCitUaGUgOmZ1bmM6YHBhdGNoIGRlY29yYXRvciA8cGF0Y2g+YCBpcyB1c2VkIGhlcmUgdG8KK21vY2sgb3V0IHRoZSBgZGF0ZWAgY2xhc3MgaW4gdGhlIG1vZHVsZSB1bmRlciB0ZXN0LiBUaGUgOmF0dHI6YHNpZGVfZWZmZWN0YAorYXR0cmlidXRlIG9uIHRoZSBtb2NrIGRhdGUgY2xhc3MgaXMgdGhlbiBzZXQgdG8gYSBsYW1iZGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zCithIHJlYWwgZGF0ZS4gV2hlbiB0aGUgbW9jayBkYXRlIGNsYXNzIGlzIGNhbGxlZCBhIHJlYWwgZGF0ZSB3aWxsIGJlCitjb25zdHJ1Y3RlZCBhbmQgcmV0dXJuZWQgYnkgYHNpZGVfZWZmZWN0YC4KKworICAgID4+PiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCisgICAgPj4+IHdpdGggcGF0Y2goJ215bW9kdWxlLmRhdGUnKSBhcyBtb2NrX2RhdGU6CisgICAgLi4uICAgICBtb2NrX2RhdGUudG9kYXkucmV0dXJuX3ZhbHVlID0gZGF0ZSgyMDEwLCAxMCwgOCkKKyAgICAuLi4gICAgIG1vY2tfZGF0ZS5zaWRlX2VmZmVjdCA9IGxhbWJkYSAqYXJncywgKiprdzogZGF0ZSgqYXJncywgKiprdykKKyAgICAuLi4KKyAgICAuLi4gICAgIGFzc2VydCBteW1vZHVsZS5kYXRlLnRvZGF5KCkgPT0gZGF0ZSgyMDEwLCAxMCwgOCkKKyAgICAuLi4gICAgIGFzc2VydCBteW1vZHVsZS5kYXRlKDIwMDksIDYsIDgpID09IGRhdGUoMjAwOSwgNiwgOCkKKyAgICAuLi4KKworTm90ZSB0aGF0IHdlIGRvbid0IHBhdGNoIGBkYXRldGltZS5kYXRlYCBnbG9iYWxseSwgd2UgcGF0Y2ggYGRhdGVgIGluIHRoZQorbW9kdWxlIHRoYXQgKnVzZXMqIGl0LiBTZWUgOnJlZjpgd2hlcmUgdG8gcGF0Y2ggPHdoZXJlLXRvLXBhdGNoPmAuCisKK1doZW4gYGRhdGUudG9kYXkoKWAgaXMgY2FsbGVkIGEga25vd24gZGF0ZSBpcyByZXR1cm5lZCwgYnV0IGNhbGxzIHRvIHRoZQorYGRhdGUoLi4uKWAgY29uc3RydWN0b3Igc3RpbGwgcmV0dXJuIG5vcm1hbCBkYXRlcy4gV2l0aG91dCB0aGlzIHlvdSBjYW4gZmluZAoreW91cnNlbGYgaGF2aW5nIHRvIGNhbGN1bGF0ZSBhbiBleHBlY3RlZCByZXN1bHQgdXNpbmcgZXhhY3RseSB0aGUgc2FtZQorYWxnb3JpdGhtIGFzIHRoZSBjb2RlIHVuZGVyIHRlc3QsIHdoaWNoIGlzIGEgY2xhc3NpYyB0ZXN0aW5nIGFudGktcGF0dGVybi4KKworQ2FsbHMgdG8gdGhlIGRhdGUgY29uc3RydWN0b3IgYXJlIHJlY29yZGVkIGluIHRoZSBgbW9ja19kYXRlYCBhdHRyaWJ1dGVzCisoYGNhbGxfY291bnRgIGFuZCBmcmllbmRzKSB3aGljaCBtYXkgYWxzbyBiZSB1c2VmdWwgZm9yIHlvdXIgdGVzdHMuCisKK0FuIGFsdGVybmF0aXZlIHdheSBvZiBkZWFsaW5nIHdpdGggbW9ja2luZyBkYXRlcywgb3Igb3RoZXIgYnVpbHRpbiBjbGFzc2VzLAoraXMgZGlzY3Vzc2VkIGluIGB0aGlzIGJsb2cgZW50cnkKKzxodHRwOi8vd2lsbGlhbWpvaG5iZXJ0LmNvbS8yMDExLzA3L2hvdy10by11bml0LXRlc3RpbmctaW4tZGphbmdvLXdpdGgtbW9ja2luZy1hbmQtcGF0Y2hpbmcvPmBfLgorCisKK01vY2tpbmcgYSBHZW5lcmF0b3IgTWV0aG9kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIFB5dGhvbiBnZW5lcmF0b3IgaXMgYSBmdW5jdGlvbiBvciBtZXRob2QgdGhhdCB1c2VzIHRoZSBgeWllbGQgc3RhdGVtZW50Cis8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLmh0bWwjdGhlLXlpZWxkLXN0YXRlbWVudD5gXyB0bworcmV0dXJuIGEgc2VyaWVzIG9mIHZhbHVlcyB3aGVuIGl0ZXJhdGVkIG92ZXIgWyNdXy4KKworQSBnZW5lcmF0b3IgbWV0aG9kIC8gZnVuY3Rpb24gaXMgY2FsbGVkIHRvIHJldHVybiB0aGUgZ2VuZXJhdG9yIG9iamVjdC4gSXQgaXMKK3RoZSBnZW5lcmF0b3Igb2JqZWN0IHRoYXQgaXMgdGhlbiBpdGVyYXRlZCBvdmVyLiBUaGUgcHJvdG9jb2wgbWV0aG9kIGZvcgoraXRlcmF0aW9uIGlzIGBfX2l0ZXJfXworPGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGlicmFyeS9zdGR0eXBlcy5odG1sI2NvbnRhaW5lci5fX2l0ZXJfXz5gXywgc28gd2UgY2FuCittb2NrIHRoaXMgdXNpbmcgYSBgTWFnaWNNb2NrYC4KKworSGVyZSdzIGFuIGV4YW1wbGUgY2xhc3Mgd2l0aCBhbiAiaXRlciIgbWV0aG9kIGltcGxlbWVudGVkIGFzIGEgZ2VuZXJhdG9yOgorCisgICAgPj4+IGNsYXNzIEZvbyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIGl0ZXIoc2VsZik6CisgICAgLi4uICAgICAgICAgZm9yIGkgaW4gWzEsIDIsIDNdOgorICAgIC4uLiAgICAgICAgICAgICB5aWVsZCBpCisgICAgLi4uCisgICAgPj4+IGZvbyA9IEZvbygpCisgICAgPj4+IGxpc3QoZm9vLml0ZXIoKSkKKyAgICBbMSwgMiwgM10KKworCitIb3cgd291bGQgd2UgbW9jayB0aGlzIGNsYXNzLCBhbmQgaW4gcGFydGljdWxhciBpdHMgIml0ZXIiIG1ldGhvZD8KKworVG8gY29uZmlndXJlIHRoZSB2YWx1ZXMgcmV0dXJuZWQgZnJvbSB0aGUgaXRlcmF0aW9uIChpbXBsaWNpdCBpbiB0aGUgY2FsbCB0bworYGxpc3RgKSwgd2UgbmVlZCB0byBjb25maWd1cmUgdGhlIG9iamVjdCByZXR1cm5lZCBieSB0aGUgY2FsbCB0byBgZm9vLml0ZXIoKWAuCisKKyAgICA+Pj4gbW9ja19mb28gPSBNYWdpY01vY2soKQorICAgID4+PiBtb2NrX2Zvby5pdGVyLnJldHVybl92YWx1ZSA9IGl0ZXIoWzEsIDIsIDNdKQorICAgID4+PiBsaXN0KG1vY2tfZm9vLml0ZXIoKSkKKyAgICBbMSwgMiwgM10KKworLi4gWyNdIFRoZXJlIGFyZSBhbHNvIGdlbmVyYXRvciBleHByZXNzaW9ucyBhbmQgbW9yZSBgYWR2YW5jZWQgdXNlcworICAgIDxodHRwOi8vd3d3LmRhYmVhei5jb20vY29yb3V0aW5lcy9pbmRleC5odG1sPmBfIG9mIGdlbmVyYXRvcnMsIGJ1dCB3ZSBhcmVuJ3QKKyAgICBjb25jZXJuZWQgYWJvdXQgdGhlbSBoZXJlLiBBIHZlcnkgZ29vZCBpbnRyb2R1Y3Rpb24gdG8gZ2VuZXJhdG9ycyBhbmQgaG93CisgICAgcG93ZXJmdWwgdGhleSBhcmUgaXM6IGBHZW5lcmF0b3IgVHJpY2tzIGZvciBTeXN0ZW1zIFByb2dyYW1tZXJzCisgICAgPGh0dHA6Ly93d3cuZGFiZWF6LmNvbS9nZW5lcmF0b3JzLz5gXy4KKworCitBcHBseWluZyB0aGUgc2FtZSBwYXRjaCB0byBldmVyeSB0ZXN0IG1ldGhvZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgeW91IHdhbnQgc2V2ZXJhbCBwYXRjaGVzIGluIHBsYWNlIGZvciBtdWx0aXBsZSB0ZXN0IG1ldGhvZHMgdGhlIG9idmlvdXMgd2F5CitpcyB0byBhcHBseSB0aGUgcGF0Y2ggZGVjb3JhdG9ycyB0byBldmVyeSBtZXRob2QuIFRoaXMgY2FuIGZlZWwgbGlrZSB1bm5lY2Vzc2FyeQorcmVwZXRpdGlvbi4gRm9yIFB5dGhvbiAyLjYgb3IgbW9yZSByZWNlbnQgeW91IGNhbiB1c2UgYHBhdGNoYCAoaW4gYWxsIGl0cwordmFyaW91cyBmb3JtcykgYXMgYSBjbGFzcyBkZWNvcmF0b3IuIFRoaXMgYXBwbGllcyB0aGUgcGF0Y2hlcyB0byBhbGwgdGVzdAorbWV0aG9kcyBvbiB0aGUgY2xhc3MuIEEgdGVzdCBtZXRob2QgaXMgaWRlbnRpZmllZCBieSBtZXRob2RzIHdob3NlIG5hbWVzIHN0YXJ0Cit3aXRoIGB0ZXN0YDoKKworICAgID4+PiBAcGF0Y2goJ215bW9kdWxlLlNvbWVDbGFzcycpCisgICAgLi4uIGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9vbmUoc2VsZiwgTW9ja1NvbWVDbGFzcyk6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG15bW9kdWxlLlNvbWVDbGFzcyBpcyBNb2NrU29tZUNsYXNzKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3RfdHdvKHNlbGYsIE1vY2tTb21lQ2xhc3MpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShteW1vZHVsZS5Tb21lQ2xhc3MgaXMgTW9ja1NvbWVDbGFzcykKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBub3RfYV90ZXN0KHNlbGYpOgorICAgIC4uLiAgICAgICAgIHJldHVybiAnc29tZXRoaW5nJworICAgIC4uLgorICAgID4+PiBNeVRlc3QoJ3Rlc3Rfb25lJykudGVzdF9vbmUoKQorICAgID4+PiBNeVRlc3QoJ3Rlc3RfdHdvJykudGVzdF90d28oKQorICAgID4+PiBNeVRlc3QoJ3Rlc3RfdHdvJykubm90X2FfdGVzdCgpCisgICAgJ3NvbWV0aGluZycKKworQW4gYWx0ZXJuYXRpdmUgd2F5IG9mIG1hbmFnaW5nIHBhdGNoZXMgaXMgdG8gdXNlIHRoZSA6cmVmOmBzdGFydC1hbmQtc3RvcGAuCitUaGVzZSBhbGxvdyB5b3UgdG8gbW92ZSB0aGUgcGF0Y2hpbmcgaW50byB5b3VyIGBzZXRVcGAgYW5kIGB0ZWFyRG93bmAgbWV0aG9kcy4KKworICAgID4+PiBjbGFzcyBNeVRlc3QoVGVzdENhc2UpOgorICAgIC4uLiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYucGF0Y2hlciA9IHBhdGNoKCdteW1vZHVsZS5mb28nKQorICAgIC4uLiAgICAgICAgIHNlbGYubW9ja19mb28gPSBzZWxmLnBhdGNoZXIuc3RhcnQoKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3RfZm9vKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShteW1vZHVsZS5mb28gaXMgc2VsZi5tb2NrX2ZvbykKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnBhdGNoZXIuc3RvcCgpCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9mb28nKS5ydW4oKQorCitJZiB5b3UgdXNlIHRoaXMgdGVjaG5pcXVlIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBwYXRjaGluZyBpcyAidW5kb25lIiBieQorY2FsbGluZyBgc3RvcGAuIFRoaXMgY2FuIGJlIGZpZGRsaWVyIHRoYW4geW91IG1pZ2h0IHRoaW5rLCBiZWNhdXNlIGlmIGFuCitleGNlcHRpb24gaXMgcmFpc2VkIGluIHRoZSBzZXRVcCB0aGVuIHRlYXJEb3duIGlzIG5vdCBjYWxsZWQuCis6bWV0aDpgdW5pdHRlc3QuVGVzdENhc2UuYWRkQ2xlYW51cGAgbWFrZXMgdGhpcyBlYXNpZXI6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4gICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAuLi4gICAgICAgICBwYXRjaGVyID0gcGF0Y2goJ215bW9kdWxlLmZvbycpCisgICAgLi4uICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKyAgICAuLi4gICAgICAgICBzZWxmLm1vY2tfZm9vID0gcGF0Y2hlci5zdGFydCgpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG15bW9kdWxlLmZvbyBpcyBzZWxmLm1vY2tfZm9vKQorICAgIC4uLgorICAgID4+PiBNeVRlc3QoJ3Rlc3RfZm9vJykucnVuKCkKKworCitNb2NraW5nIFVuYm91bmQgTWV0aG9kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hpbHN0IHdyaXRpbmcgdGVzdHMgdG9kYXkgSSBuZWVkZWQgdG8gcGF0Y2ggYW4gKnVuYm91bmQgbWV0aG9kKiAocGF0Y2hpbmcgdGhlCittZXRob2Qgb24gdGhlIGNsYXNzIHJhdGhlciB0aGFuIG9uIHRoZSBpbnN0YW5jZSkuIEkgbmVlZGVkIHNlbGYgdG8gYmUgcGFzc2VkCitpbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgYmVjYXVzZSBJIHdhbnQgdG8gbWFrZSBhc3NlcnRzIGFib3V0IHdoaWNoIG9iamVjdHMKK3dlcmUgY2FsbGluZyB0aGlzIHBhcnRpY3VsYXIgbWV0aG9kLiBUaGUgaXNzdWUgaXMgdGhhdCB5b3UgY2FuJ3QgcGF0Y2ggd2l0aCBhCittb2NrIGZvciB0aGlzLCBiZWNhdXNlIGlmIHlvdSByZXBsYWNlIGFuIHVuYm91bmQgbWV0aG9kIHdpdGggYSBtb2NrIGl0IGRvZXNuJ3QKK2JlY29tZSBhIGJvdW5kIG1ldGhvZCB3aGVuIGZldGNoZWQgZnJvbSB0aGUgaW5zdGFuY2UsIGFuZCBzbyBpdCBkb2Vzbid0IGdldAorc2VsZiBwYXNzZWQgaW4uIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHBhdGNoIHRoZSB1bmJvdW5kIG1ldGhvZCB3aXRoIGEgcmVhbAorZnVuY3Rpb24gaW5zdGVhZC4gVGhlIDpmdW5jOmBwYXRjaGAgZGVjb3JhdG9yIG1ha2VzIGl0IHNvIHNpbXBsZSB0bworcGF0Y2ggb3V0IG1ldGhvZHMgd2l0aCBhIG1vY2sgdGhhdCBoYXZpbmcgdG8gY3JlYXRlIGEgcmVhbCBmdW5jdGlvbiBiZWNvbWVzIGEKK251aXNhbmNlLgorCitJZiB5b3UgcGFzcyBgYXV0b3NwZWM9VHJ1ZWAgdG8gcGF0Y2ggdGhlbiBpdCBkb2VzIHRoZSBwYXRjaGluZyB3aXRoIGEKKypyZWFsKiBmdW5jdGlvbiBvYmplY3QuIFRoaXMgZnVuY3Rpb24gb2JqZWN0IGhhcyB0aGUgc2FtZSBzaWduYXR1cmUgYXMgdGhlIG9uZQoraXQgaXMgcmVwbGFjaW5nLCBidXQgZGVsZWdhdGVzIHRvIGEgbW9jayB1bmRlciB0aGUgaG9vZC4gWW91IHN0aWxsIGdldCB5b3VyCittb2NrIGF1dG8tY3JlYXRlZCBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyBiZWZvcmUuIFdoYXQgaXQgbWVhbnMgdGhvdWdoLCBpcwordGhhdCBpZiB5b3UgdXNlIGl0IHRvIHBhdGNoIG91dCBhbiB1bmJvdW5kIG1ldGhvZCBvbiBhIGNsYXNzIHRoZSBtb2NrZWQKK2Z1bmN0aW9uIHdpbGwgYmUgdHVybmVkIGludG8gYSBib3VuZCBtZXRob2QgaWYgaXQgaXMgZmV0Y2hlZCBmcm9tIGFuIGluc3RhbmNlLgorSXQgd2lsbCBoYXZlIGBzZWxmYCBwYXNzZWQgaW4gYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSQord2FudGVkOgorCisgICAgPj4+IGNsYXNzIEZvbyhvYmplY3QpOgorICAgIC4uLiAgIGRlZiBmb28oc2VsZik6CisgICAgLi4uICAgICBwYXNzCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIGF1dG9zcGVjPVRydWUpIGFzIG1vY2tfZm9vOgorICAgIC4uLiAgIG1vY2tfZm9vLnJldHVybl92YWx1ZSA9ICdmb28nCisgICAgLi4uICAgZm9vID0gRm9vKCkKKyAgICAuLi4gICBmb28uZm9vKCkKKyAgICAuLi4KKyAgICAnZm9vJworICAgID4+PiBtb2NrX2Zvby5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChmb28pCisKK0lmIHdlIGRvbid0IHVzZSBgYXV0b3NwZWM9VHJ1ZWAgdGhlbiB0aGUgdW5ib3VuZCBtZXRob2QgaXMgcGF0Y2hlZCBvdXQKK3dpdGggYSBNb2NrIGluc3RhbmNlIGluc3RlYWQsIGFuZCBpc24ndCBjYWxsZWQgd2l0aCBgc2VsZmAuCisKKworQ2hlY2tpbmcgbXVsdGlwbGUgY2FsbHMgd2l0aCBtb2NrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbW9jayBoYXMgYSBuaWNlIEFQSSBmb3IgbWFraW5nIGFzc2VydGlvbnMgYWJvdXQgaG93IHlvdXIgbW9jayBvYmplY3RzIGFyZSB1c2VkLgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jay5mb29fYmFyLnJldHVybl92YWx1ZSA9IE5vbmUKKyAgICA+Pj4gbW9jay5mb29fYmFyKCdiYXonLCBzcGFtPSdlZ2dzJykKKyAgICA+Pj4gbW9jay5mb29fYmFyLmFzc2VydF9jYWxsZWRfd2l0aCgnYmF6Jywgc3BhbT0nZWdncycpCisKK0lmIHlvdXIgbW9jayBpcyBvbmx5IGJlaW5nIGNhbGxlZCBvbmNlIHlvdSBjYW4gdXNlIHRoZQorOm1ldGg6YGFzc2VydF9jYWxsZWRfb25jZV93aXRoYCBtZXRob2QgdGhhdCBhbHNvIGFzc2VydHMgdGhhdCB0aGUKKzphdHRyOmBjYWxsX2NvdW50YCBpcyBvbmUuCisKKyAgICA+Pj4gbW9jay5mb29fYmFyLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdiYXonLCBzcGFtPSdlZ2dzJykKKyAgICA+Pj4gbW9jay5mb29fYmFyKCkKKyAgICA+Pj4gbW9jay5mb29fYmFyLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdiYXonLCBzcGFtPSdlZ2dzJykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZCB0byBiZSBjYWxsZWQgb25jZS4gQ2FsbGVkIDIgdGltZXMuCisKK0JvdGggYGFzc2VydF9jYWxsZWRfd2l0aGAgYW5kIGBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgbWFrZSBhc3NlcnRpb25zIGFib3V0Cit0aGUgKm1vc3QgcmVjZW50KiBjYWxsLiBJZiB5b3VyIG1vY2sgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIHNldmVyYWwgdGltZXMsIGFuZAoreW91IHdhbnQgdG8gbWFrZSBhc3NlcnRpb25zIGFib3V0ICphbGwqIHRob3NlIGNhbGxzIHlvdSBjYW4gdXNlCis6YXR0cjpgfk1vY2suY2FsbF9hcmdzX2xpc3RgOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKDEsIDIsIDMpCisgICAgPj4+IG1vY2soNCwgNSwgNikKKyAgICA+Pj4gbW9jaygpCisgICAgPj4+IG1vY2suY2FsbF9hcmdzX2xpc3QKKyAgICBbY2FsbCgxLCAyLCAzKSwgY2FsbCg0LCA1LCA2KSwgY2FsbCgpXQorCitUaGUgOmRhdGE6YGNhbGxgIGhlbHBlciBtYWtlcyBpdCBlYXN5IHRvIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCB0aGVzZSBjYWxscy4gWW91CitjYW4gYnVpbGQgdXAgYSBsaXN0IG9mIGV4cGVjdGVkIGNhbGxzIGFuZCBjb21wYXJlIGl0IHRvIGBjYWxsX2FyZ3NfbGlzdGAuIFRoaXMKK2xvb2tzIHJlbWFya2FibHkgc2ltaWxhciB0byB0aGUgcmVwciBvZiB0aGUgYGNhbGxfYXJnc19saXN0YDoKKworICAgID4+PiBleHBlY3RlZCA9IFtjYWxsKDEsIDIsIDMpLCBjYWxsKDQsIDUsIDYpLCBjYWxsKCldCisgICAgPj4+IG1vY2suY2FsbF9hcmdzX2xpc3QgPT0gZXhwZWN0ZWQKKyAgICBUcnVlCisKKworQ29waW5nIHdpdGggbXV0YWJsZSBhcmd1bWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Fub3RoZXIgc2l0dWF0aW9uIGlzIHJhcmUsIGJ1dCBjYW4gYml0ZSB5b3UsIGlzIHdoZW4geW91ciBtb2NrIGlzIGNhbGxlZCB3aXRoCittdXRhYmxlIGFyZ3VtZW50cy4gYGNhbGxfYXJnc2AgYW5kIGBjYWxsX2FyZ3NfbGlzdGAgc3RvcmUgKnJlZmVyZW5jZXMqIHRvIHRoZQorYXJndW1lbnRzLiBJZiB0aGUgYXJndW1lbnRzIGFyZSBtdXRhdGVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QgdGhlbiB5b3UgY2FuIG5vCitsb25nZXIgbWFrZSBhc3NlcnRpb25zIGFib3V0IHdoYXQgdGhlIHZhbHVlcyB3ZXJlIHdoZW4gdGhlIG1vY2sgd2FzIGNhbGxlZC4KKworSGVyZSdzIHNvbWUgZXhhbXBsZSBjb2RlIHRoYXQgc2hvd3MgdGhlIHByb2JsZW0uIEltYWdpbmUgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMKK2RlZmluZWQgaW4gJ215bW9kdWxlJzo6CisKKyAgICBkZWYgZnJvYih2YWwpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgZ3JvYih2YWwpOgorICAgICAgICAiRmlyc3QgZnJvYiBhbmQgdGhlbiBjbGVhciB2YWwiCisgICAgICAgIGZyb2IodmFsKQorICAgICAgICB2YWwuY2xlYXIoKQorCitXaGVuIHdlIHRyeSB0byB0ZXN0IHRoYXQgYGdyb2JgIGNhbGxzIGBmcm9iYCB3aXRoIHRoZSBjb3JyZWN0IGFyZ3VtZW50IGxvb2sKK3doYXQgaGFwcGVuczoKKworICAgID4+PiB3aXRoIHBhdGNoKCdteW1vZHVsZS5mcm9iJykgYXMgbW9ja19mcm9iOgorICAgIC4uLiAgICAgdmFsID0gc2V0KFs2XSkKKyAgICAuLi4gICAgIG15bW9kdWxlLmdyb2IodmFsKQorICAgIC4uLgorICAgID4+PiB2YWwKKyAgICBzZXQoW10pCisgICAgPj4+IG1vY2tfZnJvYi5hc3NlcnRfY2FsbGVkX3dpdGgoc2V0KFs2XSkpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQ6ICgoc2V0KFs2XSksKSwge30pCisgICAgQ2FsbGVkIHdpdGg6ICgoc2V0KFtdKSwpLCB7fSkKKworT25lIHBvc3NpYmlsaXR5IHdvdWxkIGJlIGZvciBtb2NrIHRvIGNvcHkgdGhlIGFyZ3VtZW50cyB5b3UgcGFzcyBpbi4gVGhpcworY291bGQgdGhlbiBjYXVzZSBwcm9ibGVtcyBpZiB5b3UgZG8gYXNzZXJ0aW9ucyB0aGF0IHJlbHkgb24gb2JqZWN0IGlkZW50aXR5Citmb3IgZXF1YWxpdHkuCisKK0hlcmUncyBvbmUgc29sdXRpb24gdGhhdCB1c2VzIHRoZSA6YXR0cjpgc2lkZV9lZmZlY3RgCitmdW5jdGlvbmFsaXR5LiBJZiB5b3UgcHJvdmlkZSBhIGBzaWRlX2VmZmVjdGAgZnVuY3Rpb24gZm9yIGEgbW9jayB0aGVuCitgc2lkZV9lZmZlY3RgIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHNhbWUgYXJncyBhcyB0aGUgbW9jay4gVGhpcyBnaXZlcyB1cyBhbgorb3Bwb3J0dW5pdHkgdG8gY29weSB0aGUgYXJndW1lbnRzIGFuZCBzdG9yZSB0aGVtIGZvciBsYXRlciBhc3NlcnRpb25zLiBJbiB0aGlzCitleGFtcGxlIEknbSB1c2luZyAqYW5vdGhlciogbW9jayB0byBzdG9yZSB0aGUgYXJndW1lbnRzIHNvIHRoYXQgSSBjYW4gdXNlIHRoZQorbW9jayBtZXRob2RzIGZvciBkb2luZyB0aGUgYXNzZXJ0aW9uLiBBZ2FpbiBhIGhlbHBlciBmdW5jdGlvbiBzZXRzIHRoaXMgdXAgZm9yCittZS4KKworICAgID4+PiBmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5CisgICAgPj4+IGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jaywgcGF0Y2gsIERFRkFVTFQKKyAgICA+Pj4gZGVmIGNvcHlfY2FsbF9hcmdzKG1vY2spOgorICAgIC4uLiAgICAgbmV3X21vY2sgPSBNb2NrKCkKKyAgICAuLi4gICAgIGRlZiBzaWRlX2VmZmVjdCgqYXJncywgKiprd2FyZ3MpOgorICAgIC4uLiAgICAgICAgIGFyZ3MgPSBkZWVwY29weShhcmdzKQorICAgIC4uLiAgICAgICAgIGt3YXJncyA9IGRlZXBjb3B5KGt3YXJncykKKyAgICAuLi4gICAgICAgICBuZXdfbW9jaygqYXJncywgKiprd2FyZ3MpCisgICAgLi4uICAgICAgICAgcmV0dXJuIERFRkFVTFQKKyAgICAuLi4gICAgIG1vY2suc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgIC4uLiAgICAgcmV0dXJuIG5ld19tb2NrCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2goJ215bW9kdWxlLmZyb2InKSBhcyBtb2NrX2Zyb2I6CisgICAgLi4uICAgICBuZXdfbW9jayA9IGNvcHlfY2FsbF9hcmdzKG1vY2tfZnJvYikKKyAgICAuLi4gICAgIHZhbCA9IHNldChbNl0pCisgICAgLi4uICAgICBteW1vZHVsZS5ncm9iKHZhbCkKKyAgICAuLi4KKyAgICA+Pj4gbmV3X21vY2suYXNzZXJ0X2NhbGxlZF93aXRoKHNldChbNl0pKQorICAgID4+PiBuZXdfbW9jay5jYWxsX2FyZ3MKKyAgICBjYWxsKHNldChbNl0pKQorCitgY29weV9jYWxsX2FyZ3NgIGlzIGNhbGxlZCB3aXRoIHRoZSBtb2NrIHRoYXQgd2lsbCBiZSBjYWxsZWQuIEl0IHJldHVybnMgYSBuZXcKK21vY2sgdGhhdCB3ZSBkbyB0aGUgYXNzZXJ0aW9uIG9uLiBUaGUgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbiBtYWtlcyBhIGNvcHkgb2YKK3RoZSBhcmdzIGFuZCBjYWxscyBvdXIgYG5ld19tb2NrYCB3aXRoIHRoZSBjb3B5LgorCisuLiBub3RlOjoKKworICAgIElmIHlvdXIgbW9jayBpcyBvbmx5IGdvaW5nIHRvIGJlIHVzZWQgb25jZSB0aGVyZSBpcyBhbiBlYXNpZXIgd2F5IG9mCisgICAgY2hlY2tpbmcgYXJndW1lbnRzIGF0IHRoZSBwb2ludCB0aGV5IGFyZSBjYWxsZWQuIFlvdSBjYW4gc2ltcGx5IGRvIHRoZQorICAgIGNoZWNraW5nIGluc2lkZSBhIGBzaWRlX2VmZmVjdGAgZnVuY3Rpb24uCisKKyAgICAgICAgPj4+IGRlZiBzaWRlX2VmZmVjdChhcmcpOgorICAgICAgICAuLi4gICAgIGFzc2VydCBhcmcgPT0gc2V0KFs2XSkKKyAgICAgICAgLi4uCisgICAgICAgID4+PiBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1zaWRlX2VmZmVjdCkKKyAgICAgICAgPj4+IG1vY2soc2V0KFs2XSkpCisgICAgICAgID4+PiBtb2NrKHNldCgpKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAuLi4KKyAgICAgICAgQXNzZXJ0aW9uRXJyb3IKKworQW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgc3ViY2xhc3Mgb2YgYE1vY2tgIG9yIGBNYWdpY01vY2tgIHRoYXQKK2NvcGllcyAodXNpbmcgOmZ1bmM6YGNvcHkuZGVlcGNvcHlgKSB0aGUgYXJndW1lbnRzLgorSGVyZSdzIGFuIGV4YW1wbGUgaW1wbGVtZW50YXRpb246CisKKyAgICA+Pj4gZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQorICAgID4+PiBjbGFzcyBDb3B5aW5nTW9jayhNYWdpY01vY2spOgorICAgIC4uLiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgLi4uICAgICAgICAgYXJncyA9IGRlZXBjb3B5KGFyZ3MpCisgICAgLi4uICAgICAgICAga3dhcmdzID0gZGVlcGNvcHkoa3dhcmdzKQorICAgIC4uLiAgICAgICAgIHJldHVybiBzdXBlcihDb3B5aW5nTW9jaywgc2VsZikuX19jYWxsX18oKmFyZ3MsICoqa3dhcmdzKQorICAgIC4uLgorICAgID4+PiBjID0gQ29weWluZ01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IGFyZyA9IHNldCgpCisgICAgPj4+IGMoYXJnKQorICAgID4+PiBhcmcuYWRkKDEpCisgICAgPj4+IGMuYXNzZXJ0X2NhbGxlZF93aXRoKHNldCgpKQorICAgID4+PiBjLmFzc2VydF9jYWxsZWRfd2l0aChhcmcpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQgY2FsbDogbW9jayhzZXQoWzFdKSkKKyAgICBBY3R1YWwgY2FsbDogbW9jayhzZXQoW10pKQorICAgID4+PiBjLmZvbworICAgIDxDb3B5aW5nTW9jayBuYW1lPSdtb2NrLmZvbycgaWQ9Jy4uLic+CisKK1doZW4geW91IHN1YmNsYXNzIGBNb2NrYCBvciBgTWFnaWNNb2NrYCBhbGwgZHluYW1pY2FsbHkgY3JlYXRlZCBhdHRyaWJ1dGVzLAorYW5kIHRoZSBgcmV0dXJuX3ZhbHVlYCB3aWxsIHVzZSB5b3VyIHN1YmNsYXNzIGF1dG9tYXRpY2FsbHkuIFRoYXQgbWVhbnMgYWxsCitjaGlsZHJlbiBvZiBhIGBDb3B5aW5nTW9ja2Agd2lsbCBhbHNvIGhhdmUgdGhlIHR5cGUgYENvcHlpbmdNb2NrYC4KKworCitOZXN0aW5nIFBhdGNoZXMKKy0tLS0tLS0tLS0tLS0tLQorCitVc2luZyBwYXRjaCBhcyBhIGNvbnRleHQgbWFuYWdlciBpcyBuaWNlLCBidXQgaWYgeW91IGRvIG11bHRpcGxlIHBhdGNoZXMgeW91CitjYW4gZW5kIHVwIHdpdGggbmVzdGVkIHdpdGggc3RhdGVtZW50cyBpbmRlbnRpbmcgZnVydGhlciBhbmQgZnVydGhlciB0byB0aGUKK3JpZ2h0OgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgLi4uICAgICAgICAgd2l0aCBwYXRjaCgnbXltb2R1bGUuRm9vJykgYXMgbW9ja19mb286CisgICAgLi4uICAgICAgICAgICAgIHdpdGggcGF0Y2goJ215bW9kdWxlLkJhcicpIGFzIG1vY2tfYmFyOgorICAgIC4uLiAgICAgICAgICAgICAgICAgd2l0aCBwYXRjaCgnbXltb2R1bGUuU3BhbScpIGFzIG1vY2tfc3BhbToKKyAgICAuLi4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbXltb2R1bGUuRm9vIGlzIG1vY2tfZm9vCisgICAgLi4uICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLkJhciBpcyBtb2NrX2JhcgorICAgIC4uLiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBteW1vZHVsZS5TcGFtIGlzIG1vY2tfc3BhbQorICAgIC4uLgorICAgID4+PiBvcmlnaW5hbCA9IG15bW9kdWxlLkZvbworICAgID4+PiBNeVRlc3QoJ3Rlc3RfZm9vJykudGVzdF9mb28oKQorICAgID4+PiBhc3NlcnQgbXltb2R1bGUuRm9vIGlzIG9yaWdpbmFsCisKK1dpdGggdW5pdHRlc3QgYGNsZWFudXBgIGZ1bmN0aW9ucyBhbmQgdGhlIDpyZWY6YHN0YXJ0LWFuZC1zdG9wYCB3ZSBjYW4KK2FjaGlldmUgdGhlIHNhbWUgZWZmZWN0IHdpdGhvdXQgdGhlIG5lc3RlZCBpbmRlbnRhdGlvbi4gQSBzaW1wbGUgaGVscGVyCittZXRob2QsIGBjcmVhdGVfcGF0Y2hgLCBwdXRzIHRoZSBwYXRjaCBpbiBwbGFjZSBhbmQgcmV0dXJucyB0aGUgY3JlYXRlZCBtb2NrCitmb3IgdXM6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgbmFtZSk6CisgICAgLi4uICAgICAgICAgcGF0Y2hlciA9IHBhdGNoKG5hbWUpCisgICAgLi4uICAgICAgICAgdGhpbmcgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAuLi4gICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorICAgIC4uLiAgICAgICAgIHJldHVybiB0aGluZworICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3RfZm9vKHNlbGYpOgorICAgIC4uLiAgICAgICAgIG1vY2tfZm9vID0gc2VsZi5jcmVhdGVfcGF0Y2goJ215bW9kdWxlLkZvbycpCisgICAgLi4uICAgICAgICAgbW9ja19iYXIgPSBzZWxmLmNyZWF0ZV9wYXRjaCgnbXltb2R1bGUuQmFyJykKKyAgICAuLi4gICAgICAgICBtb2NrX3NwYW0gPSBzZWxmLmNyZWF0ZV9wYXRjaCgnbXltb2R1bGUuU3BhbScpCisgICAgLi4uCisgICAgLi4uICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLkZvbyBpcyBtb2NrX2ZvbworICAgIC4uLiAgICAgICAgIGFzc2VydCBteW1vZHVsZS5CYXIgaXMgbW9ja19iYXIKKyAgICAuLi4gICAgICAgICBhc3NlcnQgbXltb2R1bGUuU3BhbSBpcyBtb2NrX3NwYW0KKyAgICAuLi4KKyAgICA+Pj4gb3JpZ2luYWwgPSBteW1vZHVsZS5Gb28KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X2ZvbycpLnJ1bigpCisgICAgPj4+IGFzc2VydCBteW1vZHVsZS5Gb28gaXMgb3JpZ2luYWwKKworCitNb2NraW5nIGEgZGljdGlvbmFyeSB3aXRoIE1hZ2ljTW9jaworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWW91IG1heSB3YW50IHRvIG1vY2sgYSBkaWN0aW9uYXJ5LCBvciBvdGhlciBjb250YWluZXIgb2JqZWN0LCByZWNvcmRpbmcgYWxsCithY2Nlc3MgdG8gaXQgd2hpbHN0IGhhdmluZyBpdCBzdGlsbCBiZWhhdmUgbGlrZSBhIGRpY3Rpb25hcnkuCisKK1dlIGNhbiBkbyB0aGlzIHdpdGggOmNsYXNzOmBNYWdpY01vY2tgLCB3aGljaCB3aWxsIGJlaGF2ZSBsaWtlIGEgZGljdGlvbmFyeSwKK2FuZCB1c2luZyA6ZGF0YTpgfk1vY2suc2lkZV9lZmZlY3RgIHRvIGRlbGVnYXRlIGRpY3Rpb25hcnkgYWNjZXNzIHRvIGEgcmVhbAordW5kZXJseWluZyBkaWN0aW9uYXJ5IHRoYXQgaXMgdW5kZXIgb3VyIGNvbnRyb2wuCisKK1doZW4gdGhlIGBfX2dldGl0ZW1fX2AgYW5kIGBfX3NldGl0ZW1fX2AgbWV0aG9kcyBvZiBvdXIgYE1hZ2ljTW9ja2AgYXJlIGNhbGxlZAorKG5vcm1hbCBkaWN0aW9uYXJ5IGFjY2VzcykgdGhlbiBgc2lkZV9lZmZlY3RgIGlzIGNhbGxlZCB3aXRoIHRoZSBrZXkgKGFuZCBpbgordGhlIGNhc2Ugb2YgYF9fc2V0aXRlbV9fYCB0aGUgdmFsdWUgdG9vKS4gV2UgY2FuIGFsc28gY29udHJvbCB3aGF0IGlzIHJldHVybmVkLgorCitBZnRlciB0aGUgYE1hZ2ljTW9ja2AgaGFzIGJlZW4gdXNlZCB3ZSBjYW4gdXNlIGF0dHJpYnV0ZXMgbGlrZQorOmRhdGE6YH5Nb2NrLmNhbGxfYXJnc19saXN0YCB0byBhc3NlcnQgYWJvdXQgaG93IHRoZSBkaWN0aW9uYXJ5IHdhcyB1c2VkOgorCisgICAgPj4+IG15X2RpY3QgPSB7J2EnOiAxLCAnYic6IDIsICdjJzogM30KKyAgICA+Pj4gZGVmIGdldGl0ZW0obmFtZSk6CisgICAgLi4uICAgICAgcmV0dXJuIG15X2RpY3RbbmFtZV0KKyAgICAuLi4KKyAgICA+Pj4gZGVmIHNldGl0ZW0obmFtZSwgdmFsKToKKyAgICAuLi4gICAgIG15X2RpY3RbbmFtZV0gPSB2YWwKKyAgICAuLi4KKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG1vY2suX19nZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBnZXRpdGVtCisgICAgPj4+IG1vY2suX19zZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBzZXRpdGVtCisKKy4uIG5vdGU6OgorCisgICAgQW4gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgYE1hZ2ljTW9ja2AgaXMgdG8gdXNlIGBNb2NrYCBhbmQgKm9ubHkqIHByb3ZpZGUKKyAgICB0aGUgbWFnaWMgbWV0aG9kcyB5b3Ugc3BlY2lmaWNhbGx5IHdhbnQ6CisKKyAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgPj4+IG1vY2suX19zZXRpdGVtX18gPSBNb2NrKHNpZGVfZWZmZWN0PWdldGl0ZW0pCisgICAgICAgID4+PiBtb2NrLl9fZ2V0aXRlbV9fID0gTW9jayhzaWRlX2VmZmVjdD1zZXRpdGVtKQorCisgICAgQSAqdGhpcmQqIG9wdGlvbiBpcyB0byB1c2UgYE1hZ2ljTW9ja2AgYnV0IHBhc3NpbmcgaW4gYGRpY3RgIGFzIHRoZSBgc3BlY2AKKyAgICAob3IgYHNwZWNfc2V0YCkgYXJndW1lbnQgc28gdGhhdCB0aGUgYE1hZ2ljTW9ja2AgY3JlYXRlZCBvbmx5IGhhcworICAgIGRpY3Rpb25hcnkgbWFnaWMgbWV0aG9kcyBhdmFpbGFibGU6CisKKyAgICAgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soc3BlY19zZXQ9ZGljdCkKKyAgICAgICAgPj4+IG1vY2suX19nZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBnZXRpdGVtCisgICAgICAgID4+PiBtb2NrLl9fc2V0aXRlbV9fLnNpZGVfZWZmZWN0ID0gc2V0aXRlbQorCitXaXRoIHRoZXNlIHNpZGUgZWZmZWN0IGZ1bmN0aW9ucyBpbiBwbGFjZSwgdGhlIGBtb2NrYCB3aWxsIGJlaGF2ZSBsaWtlIGEgbm9ybWFsCitkaWN0aW9uYXJ5IGJ1dCByZWNvcmRpbmcgdGhlIGFjY2Vzcy4gSXQgZXZlbiByYWlzZXMgYSBgS2V5RXJyb3JgIGlmIHlvdSB0cnkKK3RvIGFjY2VzcyBhIGtleSB0aGF0IGRvZXNuJ3QgZXhpc3QuCisKKyAgICA+Pj4gbW9ja1snYSddCisgICAgMQorICAgID4+PiBtb2NrWydjJ10KKyAgICAzCisgICAgPj4+IG1vY2tbJ2QnXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgS2V5RXJyb3I6ICdkJworICAgID4+PiBtb2NrWydiJ10gPSAnZmlzaCcKKyAgICA+Pj4gbW9ja1snZCddID0gJ2VnZ3MnCisgICAgPj4+IG1vY2tbJ2InXQorICAgICdmaXNoJworICAgID4+PiBtb2NrWydkJ10KKyAgICAnZWdncycKKworQWZ0ZXIgaXQgaGFzIGJlZW4gdXNlZCB5b3UgY2FuIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCB0aGUgYWNjZXNzIHVzaW5nIHRoZSBub3JtYWwKK21vY2sgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKKworICAgID4+PiBtb2NrLl9fZ2V0aXRlbV9fLmNhbGxfYXJnc19saXN0CisgICAgW2NhbGwoJ2EnKSwgY2FsbCgnYycpLCBjYWxsKCdkJyksIGNhbGwoJ2InKSwgY2FsbCgnZCcpXQorICAgID4+PiBtb2NrLl9fc2V0aXRlbV9fLmNhbGxfYXJnc19saXN0CisgICAgW2NhbGwoJ2InLCAnZmlzaCcpLCBjYWxsKCdkJywgJ2VnZ3MnKV0KKyAgICA+Pj4gbXlfZGljdAorICAgIHsnYSc6IDEsICdjJzogMywgJ2InOiAnZmlzaCcsICdkJzogJ2VnZ3MnfQorCisKK01vY2sgc3ViY2xhc3NlcyBhbmQgdGhlaXIgYXR0cmlidXRlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSB2YXJpb3VzIHJlYXNvbnMgd2h5IHlvdSBtaWdodCB3YW50IHRvIHN1YmNsYXNzIGBNb2NrYC4gT25lIHJlYXNvbgorbWlnaHQgYmUgdG8gYWRkIGhlbHBlciBtZXRob2RzLiBIZXJlJ3MgYSBzaWxseSBleGFtcGxlOgorCisgICAgPj4+IGNsYXNzIE15TW9jayhNYWdpY01vY2spOgorICAgIC4uLiAgICAgZGVmIGhhc19iZWVuX2NhbGxlZChzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gc2VsZi5jYWxsZWQKKyAgICAuLi4KKyAgICA+Pj4gbXltb2NrID0gTXlNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBteW1vY2sKKyAgICA8TXlNb2NrIGlkPScuLi4nPgorICAgID4+PiBteW1vY2suaGFzX2JlZW5fY2FsbGVkKCkKKyAgICBGYWxzZQorICAgID4+PiBteW1vY2soKQorICAgID4+PiBteW1vY2suaGFzX2JlZW5fY2FsbGVkKCkKKyAgICBUcnVlCisKK1RoZSBzdGFuZGFyZCBiZWhhdmlvdXIgZm9yIGBNb2NrYCBpbnN0YW5jZXMgaXMgdGhhdCBhdHRyaWJ1dGVzIGFuZCB0aGUgcmV0dXJuCit2YWx1ZSBtb2NrcyBhcmUgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGUgbW9jayB0aGV5IGFyZSBhY2Nlc3NlZCBvbi4gVGhpcyBlbnN1cmVzCit0aGF0IGBNb2NrYCBhdHRyaWJ1dGVzIGFyZSBgTW9ja3NgIGFuZCBgTWFnaWNNb2NrYCBhdHRyaWJ1dGVzIGFyZSBgTWFnaWNNb2Nrc2AKK1sjXV8uIFNvIGlmIHlvdSdyZSBzdWJjbGFzc2luZyB0byBhZGQgaGVscGVyIG1ldGhvZHMgdGhlbiB0aGV5J2xsIGFsc28gYmUKK2F2YWlsYWJsZSBvbiB0aGUgYXR0cmlidXRlcyBhbmQgcmV0dXJuIHZhbHVlIG1vY2sgb2YgaW5zdGFuY2VzIG9mIHlvdXIKK3N1YmNsYXNzLgorCisgICAgPj4+IG15bW9jay5mb28KKyAgICA8TXlNb2NrIG5hbWU9J21vY2suZm9vJyBpZD0nLi4uJz4KKyAgICA+Pj4gbXltb2NrLmZvby5oYXNfYmVlbl9jYWxsZWQoKQorICAgIEZhbHNlCisgICAgPj4+IG15bW9jay5mb28oKQorICAgIDxNeU1vY2sgbmFtZT0nbW9jay5mb28oKScgaWQ9Jy4uLic+CisgICAgPj4+IG15bW9jay5mb28uaGFzX2JlZW5fY2FsbGVkKCkKKyAgICBUcnVlCisKK1NvbWV0aW1lcyB0aGlzIGlzIGluY29udmVuaWVudC4gRm9yIGV4YW1wbGUsIGBvbmUgdXNlcgorPGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvbW9jay9pc3N1ZXMvZGV0YWlsP2lkPTEwNT5gXyBpcyBzdWJjbGFzc2luZyBtb2NrIHRvCitjcmVhdGVkIGEgYFR3aXN0ZWQgYWRhcHRvcgorPGh0dHA6Ly90d2lzdGVkbWF0cml4LmNvbS9kb2N1bWVudHMvMTEuMC4wL2FwaS90d2lzdGVkLnB5dGhvbi5jb21wb25lbnRzLmh0bWw+YF8uCitIYXZpbmcgdGhpcyBhcHBsaWVkIHRvIGF0dHJpYnV0ZXMgdG9vIGFjdHVhbGx5IGNhdXNlcyBlcnJvcnMuCisKK2BNb2NrYCAoaW4gYWxsIGl0cyBmbGF2b3VycykgdXNlcyBhIG1ldGhvZCBjYWxsZWQgYF9nZXRfY2hpbGRfbW9ja2AgdG8gY3JlYXRlCit0aGVzZSAic3ViLW1vY2tzIiBmb3IgYXR0cmlidXRlcyBhbmQgcmV0dXJuIHZhbHVlcy4gWW91IGNhbiBwcmV2ZW50IHlvdXIKK3N1YmNsYXNzIGJlaW5nIHVzZWQgZm9yIGF0dHJpYnV0ZXMgYnkgb3ZlcnJpZGluZyB0aGlzIG1ldGhvZC4gVGhlIHNpZ25hdHVyZSBpcwordGhhdCBpdCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgKGAqKmt3YXJnc2ApIHdoaWNoIGFyZSB0aGVuIHBhc3NlZAorb250byB0aGUgbW9jayBjb25zdHJ1Y3RvcjoKKworICAgID4+PiBjbGFzcyBTdWJjbGFzcyhNYWdpY01vY2spOgorICAgIC4uLiAgICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAqKmt3YXJncyk6CisgICAgLi4uICAgICAgICAgcmV0dXJuIE1hZ2ljTW9jaygqKmt3YXJncykKKyAgICAuLi4KKyAgICA+Pj4gbXltb2NrID0gU3ViY2xhc3MoKQorICAgID4+PiBteW1vY2suZm9vCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLmZvbycgaWQ9Jy4uLic+CisgICAgPj4+IGFzc2VydCBpc2luc3RhbmNlKG15bW9jaywgU3ViY2xhc3MpCisgICAgPj4+IGFzc2VydCBub3QgaXNpbnN0YW5jZShteW1vY2suZm9vLCBTdWJjbGFzcykKKyAgICA+Pj4gYXNzZXJ0IG5vdCBpc2luc3RhbmNlKG15bW9jaygpLCBTdWJjbGFzcykKKworLi4gWyNdIEFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUgYXJlIHRoZSBub24tY2FsbGFibGUgbW9ja3MuIEF0dHJpYnV0ZXMgdXNlIHRoZQorICAgIGNhbGxhYmxlIHZhcmlhbnQgYmVjYXVzZSBvdGhlcndpc2Ugbm9uLWNhbGxhYmxlIG1vY2tzIGNvdWxkbid0IGhhdmUgY2FsbGFibGUKKyAgICBtZXRob2RzLgorCisKK01vY2tpbmcgaW1wb3J0cyB3aXRoIHBhdGNoLmRpY3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT25lIHNpdHVhdGlvbiB3aGVyZSBtb2NraW5nIGNhbiBiZSBoYXJkIGlzIHdoZXJlIHlvdSBoYXZlIGEgbG9jYWwgaW1wb3J0IGluc2lkZQorYSBmdW5jdGlvbi4gVGhlc2UgYXJlIGhhcmRlciB0byBtb2NrIGJlY2F1c2UgdGhleSBhcmVuJ3QgdXNpbmcgYW4gb2JqZWN0IGZyb20KK3RoZSBtb2R1bGUgbmFtZXNwYWNlIHRoYXQgd2UgY2FuIHBhdGNoIG91dC4KKworR2VuZXJhbGx5IGxvY2FsIGltcG9ydHMgYXJlIHRvIGJlIGF2b2lkZWQuIFRoZXkgYXJlIHNvbWV0aW1lcyBkb25lIHRvIHByZXZlbnQKK2NpcmN1bGFyIGRlcGVuZGVuY2llcywgZm9yIHdoaWNoIHRoZXJlIGlzICp1c3VhbGx5KiBhIG11Y2ggYmV0dGVyIHdheSB0byBzb2x2ZQordGhlIHByb2JsZW0gKHJlZmFjdG9yIHRoZSBjb2RlKSBvciB0byBwcmV2ZW50ICJ1cCBmcm9udCBjb3N0cyIgYnkgZGVsYXlpbmcgdGhlCitpbXBvcnQuIFRoaXMgY2FuIGFsc28gYmUgc29sdmVkIGluIGJldHRlciB3YXlzIHRoYW4gYW4gdW5jb25kaXRpb25hbCBsb2NhbAoraW1wb3J0IChzdG9yZSB0aGUgbW9kdWxlIGFzIGEgY2xhc3Mgb3IgbW9kdWxlIGF0dHJpYnV0ZSBhbmQgb25seSBkbyB0aGUgaW1wb3J0CitvbiBmaXJzdCB1c2UpLgorCitUaGF0IGFzaWRlIHRoZXJlIGlzIGEgd2F5IHRvIHVzZSBgbW9ja2AgdG8gYWZmZWN0IHRoZSByZXN1bHRzIG9mIGFuIGltcG9ydC4KK0ltcG9ydGluZyBmZXRjaGVzIGFuICpvYmplY3QqIGZyb20gdGhlIGBzeXMubW9kdWxlc2AgZGljdGlvbmFyeS4gTm90ZSB0aGF0IGl0CitmZXRjaGVzIGFuICpvYmplY3QqLCB3aGljaCBuZWVkIG5vdCBiZSBhIG1vZHVsZS4gSW1wb3J0aW5nIGEgbW9kdWxlIGZvciB0aGUKK2ZpcnN0IHRpbWUgcmVzdWx0cyBpbiBhIG1vZHVsZSBvYmplY3QgYmVpbmcgcHV0IGluIGBzeXMubW9kdWxlc2AsIHNvIHVzdWFsbHkKK3doZW4geW91IGltcG9ydCBzb21ldGhpbmcgeW91IGdldCBhIG1vZHVsZSBiYWNrLiBUaGlzIG5lZWQgbm90IGJlIHRoZSBjYXNlCitob3dldmVyLgorCitUaGlzIG1lYW5zIHlvdSBjYW4gdXNlIDpmdW5jOmBwYXRjaC5kaWN0YCB0byAqdGVtcG9yYXJpbHkqIHB1dCBhIG1vY2sgaW4gcGxhY2UKK2luIGBzeXMubW9kdWxlc2AuIEFueSBpbXBvcnRzIHdoaWxzdCB0aGlzIHBhdGNoIGlzIGFjdGl2ZSB3aWxsIGZldGNoIHRoZSBtb2NrLgorV2hlbiB0aGUgcGF0Y2ggaXMgY29tcGxldGUgKHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gZXhpdHMsIHRoZSB3aXRoIHN0YXRlbWVudAorYm9keSBpcyBjb21wbGV0ZSBvciBgcGF0Y2hlci5zdG9wKClgIGlzIGNhbGxlZCkgdGhlbiB3aGF0ZXZlciB3YXMgdGhlcmUKK3ByZXZpb3VzbHkgd2lsbCBiZSByZXN0b3JlZCBzYWZlbHkuCisKK0hlcmUncyBhbiBleGFtcGxlIHRoYXQgbW9ja3Mgb3V0IHRoZSAnZm9vYmxlJyBtb2R1bGUuCisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgeydmb29ibGUnOiBtb2NrfSk6CisgICAgLi4uICAgIGltcG9ydCBmb29ibGUKKyAgICAuLi4gICAgZm9vYmxlLmJsb2IoKQorICAgIC4uLgorICAgIDxNb2NrIG5hbWU9J21vY2suYmxvYigpJyBpZD0nLi4uJz4KKyAgICA+Pj4gYXNzZXJ0ICdmb29ibGUnIG5vdCBpbiBzeXMubW9kdWxlcworICAgID4+PiBtb2NrLmJsb2IuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCitBcyB5b3UgY2FuIHNlZSB0aGUgYGltcG9ydCBmb29ibGVgIHN1Y2NlZWRzLCBidXQgb24gZXhpdCB0aGVyZSBpcyBubyAnZm9vYmxlJworbGVmdCBpbiBgc3lzLm1vZHVsZXNgLgorCitUaGlzIGFsc28gd29ya3MgZm9yIHRoZSBgZnJvbSBtb2R1bGUgaW1wb3J0IG5hbWVgIGZvcm06CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgeydmb29ibGUnOiBtb2NrfSk6CisgICAgLi4uICAgIGZyb20gZm9vYmxlIGltcG9ydCBibG9iCisgICAgLi4uICAgIGJsb2IuYmxpcCgpCisgICAgLi4uCisgICAgPE1vY2sgbmFtZT0nbW9jay5ibG9iLmJsaXAoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2suYmxvYi5ibGlwLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworV2l0aCBzbGlnaHRseSBtb3JlIHdvcmsgeW91IGNhbiBhbHNvIG1vY2sgcGFja2FnZSBpbXBvcnRzOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9kdWxlcyA9IHsncGFja2FnZSc6IG1vY2ssICdwYWNrYWdlLm1vZHVsZSc6IG1vY2subW9kdWxlfQorICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgbW9kdWxlcyk6CisgICAgLi4uICAgIGZyb20gcGFja2FnZS5tb2R1bGUgaW1wb3J0IGZvb2JsZQorICAgIC4uLiAgICBmb29ibGUoKQorICAgIC4uLgorICAgIDxNb2NrIG5hbWU9J21vY2subW9kdWxlLmZvb2JsZSgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5tb2R1bGUuZm9vYmxlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworCitUcmFja2luZyBvcmRlciBvZiBjYWxscyBhbmQgbGVzcyB2ZXJib3NlIGNhbGwgYXNzZXJ0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgTW9ja2AgY2xhc3MgYWxsb3dzIHlvdSB0byB0cmFjayB0aGUgKm9yZGVyKiBvZiBtZXRob2QgY2FsbHMgb24KK3lvdXIgbW9jayBvYmplY3RzIHRocm91Z2ggdGhlIDphdHRyOmB+TW9jay5tZXRob2RfY2FsbHNgIGF0dHJpYnV0ZS4gVGhpcworZG9lc24ndCBhbGxvdyB5b3UgdG8gdHJhY2sgdGhlIG9yZGVyIG9mIGNhbGxzIGJldHdlZW4gc2VwYXJhdGUgbW9jayBvYmplY3RzLAoraG93ZXZlciB3ZSBjYW4gdXNlIDphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCB0byBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdC4KKworQmVjYXVzZSBtb2NrcyB0cmFjayBjYWxscyB0byBjaGlsZCBtb2NrcyBpbiBgbW9ja19jYWxsc2AsIGFuZCBhY2Nlc3NpbmcgYW4KK2FyYml0cmFyeSBhdHRyaWJ1dGUgb2YgYSBtb2NrIGNyZWF0ZXMgYSBjaGlsZCBtb2NrLCB3ZSBjYW4gY3JlYXRlIG91ciBzZXBhcmF0ZQorbW9ja3MgZnJvbSBhIHBhcmVudCBvbmUuIENhbGxzIHRvIHRob3NlIGNoaWxkIG1vY2sgd2lsbCB0aGVuIGFsbCBiZSByZWNvcmRlZCwKK2luIG9yZGVyLCBpbiB0aGUgYG1vY2tfY2FsbHNgIG9mIHRoZSBwYXJlbnQ6CisKKyAgICA+Pj4gbWFuYWdlciA9IE1vY2soKQorICAgID4+PiBtb2NrX2ZvbyA9IG1hbmFnZXIuZm9vCisgICAgPj4+IG1vY2tfYmFyID0gbWFuYWdlci5iYXIKKworICAgID4+PiBtb2NrX2Zvby5zb21ldGhpbmcoKQorICAgIDxNb2NrIG5hbWU9J21vY2suZm9vLnNvbWV0aGluZygpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9ja19iYXIub3RoZXIudGhpbmcoKQorICAgIDxNb2NrIG5hbWU9J21vY2suYmFyLm90aGVyLnRoaW5nKCknIGlkPScuLi4nPgorCisgICAgPj4+IG1hbmFnZXIubW9ja19jYWxscworICAgIFtjYWxsLmZvby5zb21ldGhpbmcoKSwgY2FsbC5iYXIub3RoZXIudGhpbmcoKV0KKworV2UgY2FuIHRoZW4gYXNzZXJ0IGFib3V0IHRoZSBjYWxscywgaW5jbHVkaW5nIHRoZSBvcmRlciwgYnkgY29tcGFyaW5nIHdpdGgKK3RoZSBgbW9ja19jYWxsc2AgYXR0cmlidXRlIG9uIHRoZSBtYW5hZ2VyIG1vY2s6CisKKyAgICA+Pj4gZXhwZWN0ZWRfY2FsbHMgPSBbY2FsbC5mb28uc29tZXRoaW5nKCksIGNhbGwuYmFyLm90aGVyLnRoaW5nKCldCisgICAgPj4+IG1hbmFnZXIubW9ja19jYWxscyA9PSBleHBlY3RlZF9jYWxscworICAgIFRydWUKKworSWYgYHBhdGNoYCBpcyBjcmVhdGluZywgYW5kIHB1dHRpbmcgaW4gcGxhY2UsIHlvdXIgbW9ja3MgdGhlbiB5b3UgY2FuIGF0dGFjaAordGhlbSB0byBhIG1hbmFnZXIgbW9jayB1c2luZyB0aGUgOm1ldGg6YH5Nb2NrLmF0dGFjaF9tb2NrYCBtZXRob2QuIEFmdGVyCithdHRhY2hpbmcgY2FsbHMgd2lsbCBiZSByZWNvcmRlZCBpbiBgbW9ja19jYWxsc2Agb2YgdGhlIG1hbmFnZXIuCisKKyAgICA+Pj4gbWFuYWdlciA9IE1hZ2ljTW9jaygpCisgICAgPj4+IHdpdGggcGF0Y2goJ215bW9kdWxlLkNsYXNzMScpIGFzIE1vY2tDbGFzczE6CisgICAgLi4uICAgICB3aXRoIHBhdGNoKCdteW1vZHVsZS5DbGFzczInKSBhcyBNb2NrQ2xhc3MyOgorICAgIC4uLiAgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2soTW9ja0NsYXNzMSwgJ01vY2tDbGFzczEnKQorICAgIC4uLiAgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2soTW9ja0NsYXNzMiwgJ01vY2tDbGFzczInKQorICAgIC4uLiAgICAgICAgIE1vY2tDbGFzczEoKS5mb28oKQorICAgIC4uLiAgICAgICAgIE1vY2tDbGFzczIoKS5iYXIoKQorICAgIC4uLgorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5Nb2NrQ2xhc3MxKCkuZm9vKCknIGlkPScuLi4nPgorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5Nb2NrQ2xhc3MyKCkuYmFyKCknIGlkPScuLi4nPgorICAgID4+PiBtYW5hZ2VyLm1vY2tfY2FsbHMKKyAgICBbY2FsbC5Nb2NrQ2xhc3MxKCksCisgICAgIGNhbGwuTW9ja0NsYXNzMSgpLmZvbygpLAorICAgICBjYWxsLk1vY2tDbGFzczIoKSwKKyAgICAgY2FsbC5Nb2NrQ2xhc3MyKCkuYmFyKCldCisKK0lmIG1hbnkgY2FsbHMgaGF2ZSBiZWVuIG1hZGUsIGJ1dCB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIGEgcGFydGljdWxhcgorc2VxdWVuY2Ugb2YgdGhlbSB0aGVuIGFuIGFsdGVybmF0aXZlIGlzIHRvIHVzZSB0aGUKKzptZXRoOmB+TW9jay5hc3NlcnRfaGFzX2NhbGxzYCBtZXRob2QuIFRoaXMgdGFrZXMgYSBsaXN0IG9mIGNhbGxzIChjb25zdHJ1Y3RlZAord2l0aCB0aGUgOmRhdGE6YGNhbGxgIG9iamVjdCkuIElmIHRoYXQgc2VxdWVuY2Ugb2YgY2FsbHMgYXJlIGluCis6YXR0cjpgfk1vY2subW9ja19jYWxsc2AgdGhlbiB0aGUgYXNzZXJ0IHN1Y2NlZWRzLgorCisgICAgPj4+IG0gPSBNYWdpY01vY2soKQorICAgID4+PiBtKCkuZm9vKCkuYmFyKCkuYmF6KCkKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2soKS5mb28oKS5iYXIoKS5iYXooKScgaWQ9Jy4uLic+CisgICAgPj4+IG0ub25lKCkudHdvKCkudGhyZWUoKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5vbmUoKS50d28oKS50aHJlZSgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gY2FsbHMgPSBjYWxsLm9uZSgpLnR3bygpLnRocmVlKCkuY2FsbF9saXN0KCkKKyAgICA+Pj4gbS5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzKQorCitFdmVuIHRob3VnaCB0aGUgY2hhaW5lZCBjYWxsIGBtLm9uZSgpLnR3bygpLnRocmVlKClgIGFyZW4ndCB0aGUgb25seSBjYWxscyB0aGF0CitoYXZlIGJlZW4gbWFkZSB0byB0aGUgbW9jaywgdGhlIGFzc2VydCBzdGlsbCBzdWNjZWVkcy4KKworU29tZXRpbWVzIGEgbW9jayBtYXkgaGF2ZSBzZXZlcmFsIGNhbGxzIG1hZGUgdG8gaXQsIGFuZCB5b3UgYXJlIG9ubHkgaW50ZXJlc3RlZAoraW4gYXNzZXJ0aW5nIGFib3V0ICpzb21lKiBvZiB0aG9zZSBjYWxscy4gWW91IG1heSBub3QgZXZlbiBjYXJlIGFib3V0IHRoZQorb3JkZXIuIEluIHRoaXMgY2FzZSB5b3UgY2FuIHBhc3MgYGFueV9vcmRlcj1UcnVlYCB0byBgYXNzZXJ0X2hhc19jYWxsc2A6CisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG0oMSksIG0udHdvKDIsIDMpLCBtLnNldmVuKDcpLCBtLmZpZnR5KCc1MCcpCisgICAgKC4uLikKKyAgICA+Pj4gY2FsbHMgPSBbY2FsbC5maWZ0eSgnNTAnKSwgY2FsbCgxKSwgY2FsbC5zZXZlbig3KV0KKyAgICA+Pj4gbS5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzLCBhbnlfb3JkZXI9VHJ1ZSkKKworCitNb3JlIGNvbXBsZXggYXJndW1lbnQgbWF0Y2hpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVc2luZyB0aGUgc2FtZSBiYXNpYyBjb25jZXB0IGFzIDpkYXRhOmBBTllgIHdlIGNhbiBpbXBsZW1lbnQgbWF0Y2hlcnMgdG8gZG8gbW9yZQorY29tcGxleCBhc3NlcnRpb25zIG9uIG9iamVjdHMgdXNlZCBhcyBhcmd1bWVudHMgdG8gbW9ja3MuCisKK1N1cHBvc2Ugd2UgZXhwZWN0IHNvbWUgb2JqZWN0IHRvIGJlIHBhc3NlZCB0byBhIG1vY2sgdGhhdCBieSBkZWZhdWx0Citjb21wYXJlcyBlcXVhbCBiYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkgKHdoaWNoIGlzIHRoZSBQeXRob24gZGVmYXVsdCBmb3IgdXNlcgorZGVmaW5lZCBjbGFzc2VzKS4gVG8gdXNlIDptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgIHdlIHdvdWxkIG5lZWQgdG8gcGFzcworaW4gdGhlIGV4YWN0IHNhbWUgb2JqZWN0LiBJZiB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHNvbWUgb2YgdGhlIGF0dHJpYnV0ZXMKK29mIHRoaXMgb2JqZWN0IHRoZW4gd2UgY2FuIGNyZWF0ZSBhIG1hdGNoZXIgdGhhdCB3aWxsIGNoZWNrIHRoZXNlIGF0dHJpYnV0ZXMKK2ZvciB1cy4KKworWW91IGNhbiBzZWUgaW4gdGhpcyBleGFtcGxlIGhvdyBhICdzdGFuZGFyZCcgY2FsbCB0byBgYXNzZXJ0X2NhbGxlZF93aXRoYCBpc24ndAorc3VmZmljaWVudDoKKworICAgID4+PiBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhLCBiKToKKyAgICAuLi4gICAgICAgICBzZWxmLmEsIHNlbGYuYiA9IGEsIGIKKyAgICAuLi4KKyAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG1vY2soRm9vKDEsIDIpKQorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChGb28oMSwgMikpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQ6IGNhbGwoPF9fbWFpbl9fLkZvbyBvYmplY3QgYXQgMHguLi4+KQorICAgIEFjdHVhbCBjYWxsOiBjYWxsKDxfX21haW5fXy5Gb28gb2JqZWN0IGF0IDB4Li4uPikKKworQSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBvdXIgYEZvb2AgY2xhc3MgbWlnaHQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgorCisgICAgPj4+IGRlZiBjb21wYXJlKHNlbGYsIG90aGVyKToKKyAgICAuLi4gICAgIGlmIG5vdCB0eXBlKHNlbGYpID09IHR5cGUob3RoZXIpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBGYWxzZQorICAgIC4uLiAgICAgaWYgc2VsZi5hICE9IG90aGVyLmE6CisgICAgLi4uICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgLi4uICAgICBpZiBzZWxmLmIgIT0gb3RoZXIuYjoKKyAgICAuLi4gICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAuLi4gICAgIHJldHVybiBUcnVlCisgICAgLi4uCisKK0FuZCBhIG1hdGNoZXIgb2JqZWN0IHRoYXQgY2FuIHVzZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBsaWtlIHRoaXMgZm9yIGl0cworZXF1YWxpdHkgb3BlcmF0aW9uIHdvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKKworICAgID4+PiBjbGFzcyBNYXRjaGVyKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgY29tcGFyZSwgc29tZV9vYmopOgorICAgIC4uLiAgICAgICAgIHNlbGYuY29tcGFyZSA9IGNvbXBhcmUKKyAgICAuLi4gICAgICAgICBzZWxmLnNvbWVfb2JqID0gc29tZV9vYmoKKyAgICAuLi4gICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBzZWxmLmNvbXBhcmUoc2VsZi5zb21lX29iaiwgb3RoZXIpCisgICAgLi4uCisKK1B1dHRpbmcgYWxsIHRoaXMgdG9nZXRoZXI6CisKKyAgICA+Pj4gbWF0Y2hfZm9vID0gTWF0Y2hlcihjb21wYXJlLCBGb28oMSwgMikpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKG1hdGNoX2ZvbykKKworVGhlIGBNYXRjaGVyYCBpcyBpbnN0YW50aWF0ZWQgd2l0aCBvdXIgY29tcGFyZSBmdW5jdGlvbiBhbmQgdGhlIGBGb29gIG9iamVjdAord2Ugd2FudCB0byBjb21wYXJlIGFnYWluc3QuIEluIGBhc3NlcnRfY2FsbGVkX3dpdGhgIHRoZSBgTWF0Y2hlcmAgZXF1YWxpdHkKK21ldGhvZCB3aWxsIGJlIGNhbGxlZCwgd2hpY2ggY29tcGFyZXMgdGhlIG9iamVjdCB0aGUgbW9jayB3YXMgY2FsbGVkIHdpdGgKK2FnYWluc3QgdGhlIG9uZSB3ZSBjcmVhdGVkIG91ciBtYXRjaGVyIHdpdGguIElmIHRoZXkgbWF0Y2ggdGhlbgorYGFzc2VydF9jYWxsZWRfd2l0aGAgcGFzc2VzLCBhbmQgaWYgdGhleSBkb24ndCBhbiBgQXNzZXJ0aW9uRXJyb3JgIGlzIHJhaXNlZDoKKworICAgID4+PiBtYXRjaF93cm9uZyA9IE1hdGNoZXIoY29tcGFyZSwgRm9vKDMsIDQpKQorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChtYXRjaF93cm9uZykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZDogKCg8TWF0Y2hlciBvYmplY3QgYXQgMHguLi4+LCksIHt9KQorICAgIENhbGxlZCB3aXRoOiAoKDxGb28gb2JqZWN0IGF0IDB4Li4uPiwpLCB7fSkKKworV2l0aCBhIGJpdCBvZiB0d2Vha2luZyB5b3UgY291bGQgaGF2ZSB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbiByYWlzZSB0aGUKK2BBc3NlcnRpb25FcnJvcmAgZGlyZWN0bHkgYW5kIHByb3ZpZGUgYSBtb3JlIHVzZWZ1bCBmYWlsdXJlIG1lc3NhZ2UuCisKK0FzIG9mIHZlcnNpb24gMS41LCB0aGUgUHl0aG9uIHRlc3RpbmcgbGlicmFyeSBgUHlIYW1jcmVzdAorPGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9QeUhhbWNyZXN0PmBfIHByb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSwKK3RoYXQgbWF5IGJlIHVzZWZ1bCBoZXJlLCBpbiB0aGUgZm9ybSBvZiBpdHMgZXF1YWxpdHkgbWF0Y2hlcgorKGBoYW1jcmVzdC5saWJyYXJ5LmludGVncmF0aW9uLm1hdGNoX2VxdWFsaXR5Cis8aHR0cDovL3BhY2thZ2VzLnB5dGhvbi5vcmcvUHlIYW1jcmVzdC9pbnRlZ3JhdGlvbi5odG1sI2hhbWNyZXN0LmxpYnJhcnkuaW50ZWdyYXRpb24ubWF0Y2hfZXF1YWxpdHk+YF8pLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWQ2OThhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKQEAgLTAsMCArMSwyMjI1IEBACis6bW9kOmB1bml0dGVzdC5tb2NrYCAtLS0gbW9jayBvYmplY3QgbGlicmFyeQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogdW5pdHRlc3QubW9jaworICAgOnN5bm9wc2lzOiBNb2NrIG9iamVjdCBsaWJyYXJ5LgorLi4gbW9kdWxlYXV0aG9yOjogTWljaGFlbCBGb29yZCA8bWljaGFlbEBweXRob24ub3JnPgorLi4gY3VycmVudG1vZHVsZTo6IHVuaXR0ZXN0Lm1vY2sKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKzptb2Q6YHVuaXR0ZXN0Lm1vY2tgIGlzIGEgbGlicmFyeSBmb3IgdGVzdGluZyBpbiBQeXRob24uIEl0IGFsbG93cyB5b3UgdG8KK3JlcGxhY2UgcGFydHMgb2YgeW91ciBzeXN0ZW0gdW5kZXIgdGVzdCB3aXRoIG1vY2sgb2JqZWN0cyBhbmQgbWFrZSBhc3NlcnRpb25zCithYm91dCBob3cgdGhleSBoYXZlIGJlZW4gdXNlZC4KKworYHVuaXR0ZXN0Lm1vY2tgIHByb3ZpZGVzIGEgY29yZSA6Y2xhc3M6YE1vY2tgIGNsYXNzIHJlbW92aW5nIHRoZSBuZWVkIHRvCitjcmVhdGUgYSBob3N0IG9mIHN0dWJzIHRocm91Z2hvdXQgeW91ciB0ZXN0IHN1aXRlLiBBZnRlciBwZXJmb3JtaW5nIGFuCithY3Rpb24sIHlvdSBjYW4gbWFrZSBhc3NlcnRpb25zIGFib3V0IHdoaWNoIG1ldGhvZHMgLyBhdHRyaWJ1dGVzIHdlcmUgdXNlZAorYW5kIGFyZ3VtZW50cyB0aGV5IHdlcmUgY2FsbGVkIHdpdGguIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IHJldHVybiB2YWx1ZXMgYW5kCitzZXQgbmVlZGVkIGF0dHJpYnV0ZXMgaW4gdGhlIG5vcm1hbCB3YXkuCisKK0FkZGl0aW9uYWxseSwgbW9jayBwcm92aWRlcyBhIDpmdW5jOmBwYXRjaGAgZGVjb3JhdG9yIHRoYXQgaGFuZGxlcyBwYXRjaGluZworbW9kdWxlIGFuZCBjbGFzcyBsZXZlbCBhdHRyaWJ1dGVzIHdpdGhpbiB0aGUgc2NvcGUgb2YgYSB0ZXN0LCBhbG9uZyB3aXRoCis6Y29uc3Q6YHNlbnRpbmVsYCBmb3IgY3JlYXRpbmcgdW5pcXVlIG9iamVjdHMuIFNlZSB0aGUgYHF1aWNrIGd1aWRlYF8gZm9yCitzb21lIGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgOmNsYXNzOmBNb2NrYCwgOmNsYXNzOmBNYWdpY01vY2tgIGFuZAorOmZ1bmM6YHBhdGNoYC4KKworTW9jayBpcyB2ZXJ5IGVhc3kgdG8gdXNlIGFuZCBpcyBkZXNpZ25lZCBmb3IgdXNlIHdpdGggOm1vZDpgdW5pdHRlc3RgLiBNb2NrCitpcyBiYXNlZCBvbiB0aGUgJ2FjdGlvbiAtPiBhc3NlcnRpb24nIHBhdHRlcm4gaW5zdGVhZCBvZiBgJ3JlY29yZCAtPiByZXBsYXknYAordXNlZCBieSBtYW55IG1vY2tpbmcgZnJhbWV3b3Jrcy4KKworVGhlcmUgaXMgYSBiYWNrcG9ydCBvZiBgdW5pdHRlc3QubW9ja2AgZm9yIGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uLAorYXZhaWxhYmxlIGFzIGBtb2NrIG9uIFB5UEkgPGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9tb2NrPmBfLgorCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi91bml0dGVzdC9tb2NrLnB5YAorCisKK1F1aWNrIEd1aWRlCistLS0tLS0tLS0tLQorCis6Y2xhc3M6YE1vY2tgIGFuZCA6Y2xhc3M6YE1hZ2ljTW9ja2Agb2JqZWN0cyBjcmVhdGUgYWxsIGF0dHJpYnV0ZXMgYW5kCittZXRob2RzIGFzIHlvdSBhY2Nlc3MgdGhlbSBhbmQgc3RvcmUgZGV0YWlscyBvZiBob3cgdGhleSBoYXZlIGJlZW4gdXNlZC4gWW91CitjYW4gY29uZmlndXJlIHRoZW0sIHRvIHNwZWNpZnkgcmV0dXJuIHZhbHVlcyBvciBsaW1pdCB3aGF0IGF0dHJpYnV0ZXMgYXJlCithdmFpbGFibGUsIGFuZCB0aGVuIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCBob3cgdGhleSBoYXZlIGJlZW4gdXNlZDoKKworICAgID4+PiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1hZ2ljTW9jaworICAgID4+PiB0aGluZyA9IFByb2R1Y3Rpb25DbGFzcygpCisgICAgPj4+IHRoaW5nLm1ldGhvZCA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICA+Pj4gdGhpbmcubWV0aG9kKDMsIDQsIDUsIGtleT0ndmFsdWUnKQorICAgIDMKKyAgICA+Pj4gdGhpbmcubWV0aG9kLmFzc2VydF9jYWxsZWRfd2l0aCgzLCA0LCA1LCBrZXk9J3ZhbHVlJykKKworOmF0dHI6YHNpZGVfZWZmZWN0YCBhbGxvd3MgeW91IHRvIHBlcmZvcm0gc2lkZSBlZmZlY3RzLCBpbmNsdWRpbmcgcmFpc2luZyBhbgorZXhjZXB0aW9uIHdoZW4gYSBtb2NrIGlzIGNhbGxlZDoKKworICAgPj4+IG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PUtleUVycm9yKCdmb28nKSkKKyAgID4+PiBtb2NrKCkKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgIEtleUVycm9yOiAnZm9vJworCisgICA+Pj4gdmFsdWVzID0geydhJzogMSwgJ2InOiAyLCAnYyc6IDN9CisgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KGFyZyk6CisgICAuLi4gICAgIHJldHVybiB2YWx1ZXNbYXJnXQorICAgLi4uCisgICA+Pj4gbW9jay5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0CisgICA+Pj4gbW9jaygnYScpLCBtb2NrKCdiJyksIG1vY2soJ2MnKQorICAgKDEsIDIsIDMpCisgICA+Pj4gbW9jay5zaWRlX2VmZmVjdCA9IFs1LCA0LCAzLCAyLCAxXQorICAgPj4+IG1vY2soKSwgbW9jaygpLCBtb2NrKCkKKyAgICg1LCA0LCAzKQorCitNb2NrIGhhcyBtYW55IG90aGVyIHdheXMgeW91IGNhbiBjb25maWd1cmUgaXQgYW5kIGNvbnRyb2wgaXRzIGJlaGF2aW91ci4gRm9yCitleGFtcGxlIHRoZSBgc3BlY2AgYXJndW1lbnQgY29uZmlndXJlcyB0aGUgbW9jayB0byB0YWtlIGl0cyBzcGVjaWZpY2F0aW9uCitmcm9tIGFub3RoZXIgb2JqZWN0LiBBdHRlbXB0aW5nIHRvIGFjY2VzcyBhdHRyaWJ1dGVzIG9yIG1ldGhvZHMgb24gdGhlIG1vY2sKK3RoYXQgZG9uJ3QgZXhpc3Qgb24gdGhlIHNwZWMgd2lsbCBmYWlsIHdpdGggYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworVGhlIDpmdW5jOmBwYXRjaGAgZGVjb3JhdG9yIC8gY29udGV4dCBtYW5hZ2VyIG1ha2VzIGl0IGVhc3kgdG8gbW9jayBjbGFzc2VzIG9yCitvYmplY3RzIGluIGEgbW9kdWxlIHVuZGVyIHRlc3QuIFRoZSBvYmplY3QgeW91IHNwZWNpZnkgd2lsbCBiZSByZXBsYWNlZCB3aXRoIGEKK21vY2sgKG9yIG90aGVyIG9iamVjdCkgZHVyaW5nIHRoZSB0ZXN0IGFuZCByZXN0b3JlZCB3aGVuIHRoZSB0ZXN0IGVuZHM6CisKKyAgICA+Pj4gZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorICAgID4+PiBAcGF0Y2goJ21vZHVsZS5DbGFzc05hbWUyJykKKyAgICAuLi4gQHBhdGNoKCdtb2R1bGUuQ2xhc3NOYW1lMScpCisgICAgLi4uIGRlZiB0ZXN0KE1vY2tDbGFzczEsIE1vY2tDbGFzczIpOgorICAgIC4uLiAgICAgbW9kdWxlLkNsYXNzTmFtZTEoKQorICAgIC4uLiAgICAgbW9kdWxlLkNsYXNzTmFtZTIoKQorICAgIC4uLiAgICAgYXNzZXJ0IE1vY2tDbGFzczEgaXMgbW9kdWxlLkNsYXNzTmFtZTEKKyAgICAuLi4gICAgIGFzc2VydCBNb2NrQ2xhc3MyIGlzIG1vZHVsZS5DbGFzc05hbWUyCisgICAgLi4uICAgICBhc3NlcnQgTW9ja0NsYXNzMS5jYWxsZWQKKyAgICAuLi4gICAgIGFzc2VydCBNb2NrQ2xhc3MyLmNhbGxlZAorICAgIC4uLgorICAgID4+PiB0ZXN0KCkKKworLi4gbm90ZTo6CisKKyAgIFdoZW4geW91IG5lc3QgcGF0Y2ggZGVjb3JhdG9ycyB0aGUgbW9ja3MgYXJlIHBhc3NlZCBpbiB0byB0aGUgZGVjb3JhdGVkCisgICBmdW5jdGlvbiBpbiB0aGUgc2FtZSBvcmRlciB0aGV5IGFwcGxpZWQgKHRoZSBub3JtYWwgKnB5dGhvbiogb3JkZXIgdGhhdAorICAgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCkuIFRoaXMgbWVhbnMgZnJvbSB0aGUgYm90dG9tIHVwLCBzbyBpbiB0aGUgZXhhbXBsZQorICAgYWJvdmUgdGhlIG1vY2sgZm9yIGBtb2R1bGUuQ2xhc3NOYW1lMWAgaXMgcGFzc2VkIGluIGZpcnN0LgorCisgICBXaXRoIGBwYXRjaGAgaXQgbWF0dGVycyB0aGF0IHlvdSBwYXRjaCBvYmplY3RzIGluIHRoZSBuYW1lc3BhY2Ugd2hlcmUgdGhleQorICAgYXJlIGxvb2tlZCB1cC4gVGhpcyBpcyBub3JtYWxseSBzdHJhaWdodGZvcndhcmQsIGJ1dCBmb3IgYSBxdWljayBndWlkZQorICAgcmVhZCA6cmVmOmB3aGVyZSB0byBwYXRjaCA8d2hlcmUtdG8tcGF0Y2g+YC4KKworQXMgd2VsbCBhcyBhIGRlY29yYXRvciBgcGF0Y2hgIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIGluIGEgd2l0aAorc3RhdGVtZW50OgorCisgICAgPj4+IHdpdGggcGF0Y2gub2JqZWN0KFByb2R1Y3Rpb25DbGFzcywgJ21ldGhvZCcsIHJldHVybl92YWx1ZT1Ob25lKSBhcyBtb2NrX21ldGhvZDoKKyAgICAuLi4gICAgIHRoaW5nID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICAuLi4gICAgIHRoaW5nLm1ldGhvZCgxLCAyLCAzKQorICAgIC4uLgorICAgID4+PiBtb2NrX21ldGhvZC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorCisKK1RoZXJlIGlzIGFsc28gOmZ1bmM6YHBhdGNoLmRpY3RgIGZvciBzZXR0aW5nIHZhbHVlcyBpbiBhIGRpY3Rpb25hcnkganVzdAorZHVyaW5nIGEgc2NvcGUgYW5kIHJlc3RvcmluZyB0aGUgZGljdGlvbmFyeSB0byBpdHMgb3JpZ2luYWwgc3RhdGUgd2hlbiB0aGUgdGVzdAorZW5kczoKKworICAgPj4+IGZvbyA9IHsna2V5JzogJ3ZhbHVlJ30KKyAgID4+PiBvcmlnaW5hbCA9IGZvby5jb3B5KCkKKyAgID4+PiB3aXRoIHBhdGNoLmRpY3QoZm9vLCB7J25ld2tleSc6ICduZXd2YWx1ZSd9LCBjbGVhcj1UcnVlKToKKyAgIC4uLiAgICAgYXNzZXJ0IGZvbyA9PSB7J25ld2tleSc6ICduZXd2YWx1ZSd9CisgICAuLi4KKyAgID4+PiBhc3NlcnQgZm9vID09IG9yaWdpbmFsCisKK01vY2sgc3VwcG9ydHMgdGhlIG1vY2tpbmcgb2YgUHl0aG9uIDpyZWY6YG1hZ2ljIG1ldGhvZHMgPG1hZ2ljLW1ldGhvZHM+YC4gVGhlCitlYXNpZXN0IHdheSBvZiB1c2luZyBtYWdpYyBtZXRob2RzIGlzIHdpdGggdGhlIDpjbGFzczpgTWFnaWNNb2NrYCBjbGFzcy4gSXQKK2FsbG93cyB5b3UgdG8gZG8gdGhpbmdzIGxpa2U6CisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG1vY2suX19zdHJfXy5yZXR1cm5fdmFsdWUgPSAnZm9vYmFyYmF6JworICAgID4+PiBzdHIobW9jaykKKyAgICAnZm9vYmFyYmF6JworICAgID4+PiBtb2NrLl9fc3RyX18uYXNzZXJ0X2NhbGxlZF93aXRoKCkKKworTW9jayBhbGxvd3MgeW91IHRvIGFzc2lnbiBmdW5jdGlvbnMgKG9yIG90aGVyIE1vY2sgaW5zdGFuY2VzKSB0byBtYWdpYyBtZXRob2RzCithbmQgdGhleSB3aWxsIGJlIGNhbGxlZCBhcHByb3ByaWF0ZWx5LiBUaGUgYE1hZ2ljTW9ja2AgY2xhc3MgaXMganVzdCBhIE1vY2sKK3ZhcmlhbnQgdGhhdCBoYXMgYWxsIG9mIHRoZSBtYWdpYyBtZXRob2RzIHByZS1jcmVhdGVkIGZvciB5b3UgKHdlbGwsIGFsbCB0aGUKK3VzZWZ1bCBvbmVzIGFueXdheSkuCisKK1RoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiB1c2luZyBtYWdpYyBtZXRob2RzIHdpdGggdGhlIG9yZGluYXJ5IE1vY2sKK2NsYXNzOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jay5fX3N0cl9fID0gTW9jayhyZXR1cm5fdmFsdWU9J3doZWVlZWVlJykKKyAgICA+Pj4gc3RyKG1vY2spCisgICAgJ3doZWVlZWVlJworCitGb3IgZW5zdXJpbmcgdGhhdCB0aGUgbW9jayBvYmplY3RzIGluIHlvdXIgdGVzdHMgaGF2ZSB0aGUgc2FtZSBhcGkgYXMgdGhlCitvYmplY3RzIHRoZXkgYXJlIHJlcGxhY2luZywgeW91IGNhbiB1c2UgOnJlZjpgYXV0by1zcGVjY2luZyA8YXV0by1zcGVjY2luZz5gLgorQXV0by1zcGVjY2luZyBjYW4gYmUgZG9uZSB0aHJvdWdoIHRoZSBgYXV0b3NwZWNgIGFyZ3VtZW50IHRvIHBhdGNoLCBvciB0aGUKKzpmdW5jOmBjcmVhdGVfYXV0b3NwZWNgIGZ1bmN0aW9uLiBBdXRvLXNwZWNjaW5nIGNyZWF0ZXMgbW9jayBvYmplY3RzIHRoYXQKK2hhdmUgdGhlIHNhbWUgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyBhcyB0aGUgb2JqZWN0cyB0aGV5IGFyZSByZXBsYWNpbmcsIGFuZAorYW55IGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyAoaW5jbHVkaW5nIGNvbnN0cnVjdG9ycykgaGF2ZSB0aGUgc2FtZSBjYWxsCitzaWduYXR1cmUgYXMgdGhlIHJlYWwgb2JqZWN0LgorCitUaGlzIGVuc3VyZXMgdGhhdCB5b3VyIG1vY2tzIHdpbGwgZmFpbCBpbiB0aGUgc2FtZSB3YXkgYXMgeW91ciBwcm9kdWN0aW9uCitjb2RlIGlmIHRoZXkgYXJlIHVzZWQgaW5jb3JyZWN0bHk6CisKKyAgID4+PiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IGNyZWF0ZV9hdXRvc3BlYworICAgPj4+IGRlZiBmdW5jdGlvbihhLCBiLCBjKToKKyAgIC4uLiAgICAgcGFzcworICAgLi4uCisgICA+Pj4gbW9ja19mdW5jdGlvbiA9IGNyZWF0ZV9hdXRvc3BlYyhmdW5jdGlvbiwgcmV0dXJuX3ZhbHVlPSdmaXNoeScpCisgICA+Pj4gbW9ja19mdW5jdGlvbigxLCAyLCAzKQorICAgJ2Zpc2h5JworICAgPj4+IG1vY2tfZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKyAgID4+PiBtb2NrX2Z1bmN0aW9uKCd3cm9uZyBhcmd1bWVudHMnKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgVHlwZUVycm9yOiA8bGFtYmRhPigpIHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMgKDEgZ2l2ZW4pCisKK2BjcmVhdGVfYXV0b3NwZWNgIGNhbiBhbHNvIGJlIHVzZWQgb24gY2xhc3Nlcywgd2hlcmUgaXQgY29waWVzIHRoZSBzaWduYXR1cmUgb2YKK3RoZSBgX19pbml0X19gIG1ldGhvZCwgYW5kIG9uIGNhbGxhYmxlIG9iamVjdHMgd2hlcmUgaXQgY29waWVzIHRoZSBzaWduYXR1cmUgb2YKK3RoZSBgX19jYWxsX19gIG1ldGhvZC4KKworCisKK1RoZSBNb2NrIENsYXNzCistLS0tLS0tLS0tLS0tLQorCisKK2BNb2NrYCBpcyBhIGZsZXhpYmxlIG1vY2sgb2JqZWN0IGludGVuZGVkIHRvIHJlcGxhY2UgdGhlIHVzZSBvZiBzdHVicyBhbmQKK3Rlc3QgZG91YmxlcyB0aHJvdWdob3V0IHlvdXIgY29kZS4gTW9ja3MgYXJlIGNhbGxhYmxlIGFuZCBjcmVhdGUgYXR0cmlidXRlcyBhcworbmV3IG1vY2tzIHdoZW4geW91IGFjY2VzcyB0aGVtIFsjXV8uIEFjY2Vzc2luZyB0aGUgc2FtZSBhdHRyaWJ1dGUgd2lsbCBhbHdheXMKK3JldHVybiB0aGUgc2FtZSBtb2NrLiBNb2NrcyByZWNvcmQgaG93IHlvdSB1c2UgdGhlbSwgYWxsb3dpbmcgeW91IHRvIG1ha2UKK2Fzc2VydGlvbnMgYWJvdXQgd2hhdCB5b3VyIGNvZGUgaGFzIGRvbmUgdG8gdGhlbS4KKworOmNsYXNzOmBNYWdpY01vY2tgIGlzIGEgc3ViY2xhc3Mgb2YgYE1vY2tgIHdpdGggYWxsIHRoZSBtYWdpYyBtZXRob2RzCitwcmUtY3JlYXRlZCBhbmQgcmVhZHkgdG8gdXNlLiBUaGVyZSBhcmUgYWxzbyBub24tY2FsbGFibGUgdmFyaWFudHMsIHVzZWZ1bAord2hlbiB5b3UgYXJlIG1vY2tpbmcgb3V0IG9iamVjdHMgdGhhdCBhcmVuJ3QgY2FsbGFibGU6Cis6Y2xhc3M6YE5vbkNhbGxhYmxlTW9ja2AgYW5kIDpjbGFzczpgTm9uQ2FsbGFibGVNYWdpY01vY2tgCisKK1RoZSA6ZnVuYzpgcGF0Y2hgIGRlY29yYXRvcnMgbWFrZXMgaXQgZWFzeSB0byB0ZW1wb3JhcmlseSByZXBsYWNlIGNsYXNzZXMKK2luIGEgcGFydGljdWxhciBtb2R1bGUgd2l0aCBhIGBNb2NrYCBvYmplY3QuIEJ5IGRlZmF1bHQgYHBhdGNoYCB3aWxsIGNyZWF0ZQorYSBgTWFnaWNNb2NrYCBmb3IgeW91LiBZb3UgY2FuIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgY2xhc3Mgb2YgYE1vY2tgIHVzaW5nCit0aGUgYG5ld19jYWxsYWJsZWAgYXJndW1lbnQgdG8gYHBhdGNoYC4KKworCisuLiBjbGFzczo6IE1vY2soc3BlYz1Ob25lLCBzaWRlX2VmZmVjdD1Ob25lLCByZXR1cm5fdmFsdWU9REVGQVVMVCwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLCAqKmt3YXJncykKKworICAgIENyZWF0ZSBhIG5ldyBgTW9ja2Agb2JqZWN0LiBgTW9ja2AgdGFrZXMgc2V2ZXJhbCBvcHRpb25hbCBhcmd1bWVudHMKKyAgICB0aGF0IHNwZWNpZnkgdGhlIGJlaGF2aW91ciBvZiB0aGUgTW9jayBvYmplY3Q6CisKKyAgICAqIGBzcGVjYDogVGhpcyBjYW4gYmUgZWl0aGVyIGEgbGlzdCBvZiBzdHJpbmdzIG9yIGFuIGV4aXN0aW5nIG9iamVjdCAoYQorICAgICAgY2xhc3Mgb3IgaW5zdGFuY2UpIHRoYXQgYWN0cyBhcyB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIG1vY2sgb2JqZWN0LiBJZgorICAgICAgeW91IHBhc3MgaW4gYW4gb2JqZWN0IHRoZW4gYSBsaXN0IG9mIHN0cmluZ3MgaXMgZm9ybWVkIGJ5IGNhbGxpbmcgZGlyIG9uCisgICAgICB0aGUgb2JqZWN0IChleGNsdWRpbmcgdW5zdXBwb3J0ZWQgbWFnaWMgYXR0cmlidXRlcyBhbmQgbWV0aG9kcykuCisgICAgICBBY2Nlc3NpbmcgYW55IGF0dHJpYnV0ZSBub3QgaW4gdGhpcyBsaXN0IHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgICAgSWYgYHNwZWNgIGlzIGFuIG9iamVjdCAocmF0aGVyIHRoYW4gYSBsaXN0IG9mIHN0cmluZ3MpIHRoZW4KKyAgICAgIDphdHRyOmBfX2NsYXNzX19gIHJldHVybnMgdGhlIGNsYXNzIG9mIHRoZSBzcGVjIG9iamVjdC4gVGhpcyBhbGxvd3MgbW9ja3MKKyAgICAgIHRvIHBhc3MgYGlzaW5zdGFuY2VgIHRlc3RzLgorCisgICAgKiBgc3BlY19zZXRgOiBBIHN0cmljdGVyIHZhcmlhbnQgb2YgYHNwZWNgLiBJZiB1c2VkLCBhdHRlbXB0aW5nIHRvICpzZXQqCisgICAgICBvciBnZXQgYW4gYXR0cmlidXRlIG9uIHRoZSBtb2NrIHRoYXQgaXNuJ3Qgb24gdGhlIG9iamVjdCBwYXNzZWQgYXMKKyAgICAgIGBzcGVjX3NldGAgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgKiBgc2lkZV9lZmZlY3RgOiBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgTW9jayBpcyBjYWxsZWQuIFNlZQorICAgICAgdGhlIDphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAgYXR0cmlidXRlLiBVc2VmdWwgZm9yIHJhaXNpbmcgZXhjZXB0aW9ucyBvcgorICAgICAgZHluYW1pY2FsbHkgY2hhbmdpbmcgcmV0dXJuIHZhbHVlcy4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBzYW1lCisgICAgICBhcmd1bWVudHMgYXMgdGhlIG1vY2ssIGFuZCB1bmxlc3MgaXQgcmV0dXJucyA6ZGF0YTpgREVGQVVMVGAsIHRoZSByZXR1cm4KKyAgICAgIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlLgorCisgICAgICBBbHRlcm5hdGl2ZWx5IGBzaWRlX2VmZmVjdGAgY2FuIGJlIGFuIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZS4gSW4KKyAgICAgIHRoaXMgY2FzZSB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gdGhlIG1vY2sgaXMgY2FsbGVkLgorCisgICAgICBJZiBgc2lkZV9lZmZlY3RgIGlzIGFuIGl0ZXJhYmxlIHRoZW4gZWFjaCBjYWxsIHRvIHRoZSBtb2NrIHdpbGwgcmV0dXJuCisgICAgICB0aGUgbmV4dCB2YWx1ZSBmcm9tIHRoZSBpdGVyYWJsZS4KKworICAgICAgQSBgc2lkZV9lZmZlY3RgIGNhbiBiZSBjbGVhcmVkIGJ5IHNldHRpbmcgaXQgdG8gYE5vbmVgLgorCisgICAgKiBgcmV0dXJuX3ZhbHVlYDogVGhlIHZhbHVlIHJldHVybmVkIHdoZW4gdGhlIG1vY2sgaXMgY2FsbGVkLiBCeSBkZWZhdWx0CisgICAgICB0aGlzIGlzIGEgbmV3IE1vY2sgKGNyZWF0ZWQgb24gZmlyc3QgYWNjZXNzKS4gU2VlIHRoZQorICAgICAgOmF0dHI6YHJldHVybl92YWx1ZWAgYXR0cmlidXRlLgorCisgICAgKiBgd3JhcHNgOiBJdGVtIGZvciB0aGUgbW9jayBvYmplY3QgdG8gd3JhcC4gSWYgYHdyYXBzYCBpcyBub3QgTm9uZSB0aGVuCisgICAgICBjYWxsaW5nIHRoZSBNb2NrIHdpbGwgcGFzcyB0aGUgY2FsbCB0aHJvdWdoIHRvIHRoZSB3cmFwcGVkIG9iamVjdAorICAgICAgKHJldHVybmluZyB0aGUgcmVhbCByZXN1bHQpLiBBdHRyaWJ1dGUgYWNjZXNzIG9uIHRoZSBtb2NrIHdpbGwgcmV0dXJuIGEKKyAgICAgIE1vY2sgb2JqZWN0IHRoYXQgd3JhcHMgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9mIHRoZSB3cmFwcGVkCisgICAgICBvYmplY3QgKHNvIGF0dGVtcHRpbmcgdG8gYWNjZXNzIGFuIGF0dHJpYnV0ZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgd2lsbAorICAgICAgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYCkuCisKKyAgICAgIElmIHRoZSBtb2NrIGhhcyBhbiBleHBsaWNpdCBgcmV0dXJuX3ZhbHVlYCBzZXQgdGhlbiBjYWxscyBhcmUgbm90IHBhc3NlZAorICAgICAgdG8gdGhlIHdyYXBwZWQgb2JqZWN0IGFuZCB0aGUgYHJldHVybl92YWx1ZWAgaXMgcmV0dXJuZWQgaW5zdGVhZC4KKworICAgICogYG5hbWVgOiBJZiB0aGUgbW9jayBoYXMgYSBuYW1lIHRoZW4gaXQgd2lsbCBiZSB1c2VkIGluIHRoZSByZXByIG9mIHRoZQorICAgICAgbW9jay4gVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuIFRoZSBuYW1lIGlzIHByb3BhZ2F0ZWQgdG8gY2hpbGQKKyAgICAgIG1vY2tzLgorCisgICAgTW9ja3MgY2FuIGFsc28gYmUgY2FsbGVkIHdpdGggYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzLiBUaGVzZSB3aWxsIGJlCisgICAgdXNlZCB0byBzZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhZnRlciBpdCBpcyBjcmVhdGVkLiBTZWUgdGhlCisgICAgOm1ldGg6YGNvbmZpZ3VyZV9tb2NrYCBtZXRob2QgZm9yIGRldGFpbHMuCisKKworICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgYSBjb252ZW5pZW50IHdheSBvZiBhc3NlcnRpbmcgdGhhdCBjYWxscyBhcmUgbWFkZSBpbiBhCisgICAgICAgIHBhcnRpY3VsYXIgd2F5OgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKDEsIDIsIDMsIHRlc3Q9J3dvdycpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZC5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMiwgMywgdGVzdD0nd293JykKKworCisgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgQXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBleGFjdGx5IG9uY2UgYW5kIHdpdGggdGhlIHNwZWNpZmllZAorICAgICAgIGFyZ3VtZW50cy4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICAgICAgPj4+IG1vY2soJ2ZvbycsIGJhcj0nYmF6JykKKyAgICAgICAgICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nLCBiYXI9J2JheicpCisgICAgICAgICAgICA+Pj4gbW9jaygnZm9vJywgYmFyPSdiYXonKQorICAgICAgICAgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycsIGJhcj0nYmF6JykKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQgdG8gYmUgY2FsbGVkIG9uY2UuIENhbGxlZCAyIHRpbWVzLgorCisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfYW55X2NhbGwoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIGFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KKworICAgICAgICBUaGUgYXNzZXJ0IHBhc3NlcyBpZiB0aGUgbW9jayBoYXMgKmV2ZXIqIGJlZW4gY2FsbGVkLCB1bmxpa2UKKyAgICAgICAgOm1ldGg6YGFzc2VydF9jYWxsZWRfd2l0aGAgYW5kIDptZXRoOmBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgdGhhdAorICAgICAgICBvbmx5IHBhc3MgaWYgdGhlIGNhbGwgaXMgdGhlIG1vc3QgcmVjZW50IG9uZS4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICAgICAgPj4+IG1vY2soMSwgMiwgYXJnPSd0aGluZycpCisgICAgICAgICAgICA+Pj4gbW9jaygnc29tZScsICd0aGluZycsICdlbHNlJykKKyAgICAgICAgICAgID4+PiBtb2NrLmFzc2VydF9hbnlfY2FsbCgxLCAyLCBhcmc9J3RoaW5nJykKKworCisgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2hhc19jYWxscyhjYWxscywgYW55X29yZGVyPUZhbHNlKQorCisgICAgICAgIGFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNhbGxzLgorICAgICAgICBUaGUgYG1vY2tfY2FsbHNgIGxpc3QgaXMgY2hlY2tlZCBmb3IgdGhlIGNhbGxzLgorCisgICAgICAgIElmIGBhbnlfb3JkZXJgIGlzIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlbiB0aGUgY2FsbHMgbXVzdCBiZQorICAgICAgICBzZXF1ZW50aWFsLiBUaGVyZSBjYW4gYmUgZXh0cmEgY2FsbHMgYmVmb3JlIG9yIGFmdGVyIHRoZQorICAgICAgICBzcGVjaWZpZWQgY2FsbHMuCisKKyAgICAgICAgSWYgYGFueV9vcmRlcmAgaXMgVHJ1ZSB0aGVuIHRoZSBjYWxscyBjYW4gYmUgaW4gYW55IG9yZGVyLCBidXQKKyAgICAgICAgdGhleSBtdXN0IGFsbCBhcHBlYXIgaW4gOmF0dHI6YG1vY2tfY2FsbHNgLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jaygxKQorICAgICAgICAgICAgPj4+IG1vY2soMikKKyAgICAgICAgICAgID4+PiBtb2NrKDMpCisgICAgICAgICAgICA+Pj4gbW9jayg0KQorICAgICAgICAgICAgPj4+IGNhbGxzID0gW2NhbGwoMiksIGNhbGwoMyldCisgICAgICAgICAgICA+Pj4gbW9jay5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzKQorICAgICAgICAgICAgPj4+IGNhbGxzID0gW2NhbGwoNCksIGNhbGwoMiksIGNhbGwoMyldCisgICAgICAgICAgICA+Pj4gbW9jay5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzLCBhbnlfb3JkZXI9VHJ1ZSkKKworCisgICAgLi4gbWV0aG9kOjogcmVzZXRfbW9jaygpCisKKyAgICAgICAgVGhlIHJlc2V0X21vY2sgbWV0aG9kIHJlc2V0cyBhbGwgdGhlIGNhbGwgYXR0cmlidXRlcyBvbiBhIG1vY2sgb2JqZWN0OgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jaygnaGVsbG8nKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCisgICAgICAgICAgICBUcnVlCisgICAgICAgICAgICA+Pj4gbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxlZAorICAgICAgICAgICAgRmFsc2UKKworICAgICAgICBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlcmUgeW91IHdhbnQgdG8gbWFrZSBhIHNlcmllcyBvZiBhc3NlcnRpb25zIHRoYXQKKyAgICAgICAgcmV1c2UgdGhlIHNhbWUgb2JqZWN0LiBOb3RlIHRoYXQgYHJlc2V0X21vY2tgICpkb2Vzbid0KiBjbGVhciB0aGUKKyAgICAgICAgcmV0dXJuIHZhbHVlLCA6YXR0cjpgc2lkZV9lZmZlY3RgIG9yIGFueSBjaGlsZCBhdHRyaWJ1dGVzIHlvdSBoYXZlCisgICAgICAgIHNldCB1c2luZyBub3JtYWwgYXNzaWdubWVudC4gQ2hpbGQgbW9ja3MgYW5kIHRoZSByZXR1cm4gdmFsdWUgbW9jaworICAgICAgICAoaWYgYW55KSBhcmUgcmVzZXQgYXMgd2VsbC4KKworCisgICAgLi4gbWV0aG9kOjogbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldD1GYWxzZSkKKworICAgICAgICBBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKKyAgICAgICAgbGlzdCBvZiBzdHJpbmdzLiBPbmx5IGF0dHJpYnV0ZXMgb24gdGhlIGBzcGVjYCBjYW4gYmUgZmV0Y2hlZCBhcworICAgICAgICBhdHRyaWJ1dGVzIGZyb20gdGhlIG1vY2suCisKKyAgICAgICAgSWYgYHNwZWNfc2V0YCBpcyBgVHJ1ZWAgdGhlbiBvbmx5IGF0dHJpYnV0ZXMgb24gdGhlIHNwZWMgY2FuIGJlIHNldC4KKworCisgICAgLi4gbWV0aG9kOjogYXR0YWNoX21vY2sobW9jaywgYXR0cmlidXRlKQorCisgICAgICAgIEF0dGFjaCBhIG1vY2sgYXMgYW4gYXR0cmlidXRlIG9mIHRoaXMgb25lLCByZXBsYWNpbmcgaXRzIG5hbWUgYW5kCisgICAgICAgIHBhcmVudC4gQ2FsbHMgdG8gdGhlIGF0dGFjaGVkIG1vY2sgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUKKyAgICAgICAgOmF0dHI6YG1ldGhvZF9jYWxsc2AgYW5kIDphdHRyOmBtb2NrX2NhbGxzYCBhdHRyaWJ1dGVzIG9mIHRoaXMgb25lLgorCisKKyAgICAuLiBtZXRob2Q6OiBjb25maWd1cmVfbW9jaygqKmt3YXJncykKKworICAgICAgICBTZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayB0aHJvdWdoIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgIEF0dHJpYnV0ZXMgcGx1cyByZXR1cm4gdmFsdWVzIGFuZCBzaWRlIGVmZmVjdHMgY2FuIGJlIHNldCBvbiBjaGlsZAorICAgICAgICBtb2NrcyB1c2luZyBzdGFuZGFyZCBkb3Qgbm90YXRpb24gYW5kIHVucGFja2luZyBhIGRpY3Rpb25hcnkgaW4gdGhlCisgICAgICAgIG1ldGhvZCBjYWxsOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IGF0dHJzID0geydtZXRob2QucmV0dXJuX3ZhbHVlJzogMywgJ290aGVyLnNpZGVfZWZmZWN0JzogS2V5RXJyb3J9CisgICAgICAgICAgICA+Pj4gbW9jay5jb25maWd1cmVfbW9jaygqKmF0dHJzKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDMKKyAgICAgICAgICAgID4+PiBtb2NrLm90aGVyKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBLZXlFcnJvcgorCisgICAgICAgIFRoZSBzYW1lIHRoaW5nIGNhbiBiZSBhY2hpZXZlZCBpbiB0aGUgY29uc3RydWN0b3IgY2FsbCB0byBtb2NrczoKKworICAgICAgICAgICAgPj4+IGF0dHJzID0geydtZXRob2QucmV0dXJuX3ZhbHVlJzogMywgJ290aGVyLnNpZGVfZWZmZWN0JzogS2V5RXJyb3J9CisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soc29tZV9hdHRyaWJ1dGU9J2VnZ3MnLCAqKmF0dHJzKQorICAgICAgICAgICAgPj4+IG1vY2suc29tZV9hdHRyaWJ1dGUKKyAgICAgICAgICAgICdlZ2dzJworICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDMKKyAgICAgICAgICAgID4+PiBtb2NrLm90aGVyKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBLZXlFcnJvcgorCisgICAgICAgIGBjb25maWd1cmVfbW9ja2AgZXhpc3RzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRvIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgYWZ0ZXIgdGhlIG1vY2sgaGFzIGJlZW4gY3JlYXRlZC4KKworCisgICAgLi4gbWV0aG9kOjogX19kaXJfXygpCisKKyAgICAgICAgYE1vY2tgIG9iamVjdHMgbGltaXQgdGhlIHJlc3VsdHMgb2YgYGRpcihzb21lX21vY2spYCB0byB1c2VmdWwgcmVzdWx0cy4KKyAgICAgICAgRm9yIG1vY2tzIHdpdGggYSBgc3BlY2AgdGhpcyBpbmNsdWRlcyBhbGwgdGhlIHBlcm1pdHRlZCBhdHRyaWJ1dGVzCisgICAgICAgIGZvciB0aGUgbW9jay4KKworICAgICAgICBTZWUgOmRhdGE6YEZJTFRFUl9ESVJgIGZvciB3aGF0IHRoaXMgZmlsdGVyaW5nIGRvZXMsIGFuZCBob3cgdG8KKyAgICAgICAgc3dpdGNoIGl0IG9mZi4KKworCisgICAgLi4gbWV0aG9kOjogX2dldF9jaGlsZF9tb2NrKCoqa3cpCisKKyAgICAgICAgQ3JlYXRlIHRoZSBjaGlsZCBtb2NrcyBmb3IgYXR0cmlidXRlcyBhbmQgcmV0dXJuIHZhbHVlLgorICAgICAgICBCeSBkZWZhdWx0IGNoaWxkIG1vY2tzIHdpbGwgYmUgdGhlIHNhbWUgdHlwZSBhcyB0aGUgcGFyZW50LgorICAgICAgICBTdWJjbGFzc2VzIG9mIE1vY2sgbWF5IHdhbnQgdG8gb3ZlcnJpZGUgdGhpcyB0byBjdXN0b21pemUgdGhlIHdheQorICAgICAgICBjaGlsZCBtb2NrcyBhcmUgbWFkZS4KKworICAgICAgICBGb3Igbm9uLWNhbGxhYmxlIG1vY2tzIHRoZSBjYWxsYWJsZSB2YXJpYW50IHdpbGwgYmUgdXNlZCAocmF0aGVyIHRoYW4KKyAgICAgICAgYW55IGN1c3RvbSBzdWJjbGFzcykuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IGNhbGxlZAorCisgICAgICAgIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgd2hldGhlciBvciBub3QgdGhlIG1vY2sgb2JqZWN0IGhhcyBiZWVuIGNhbGxlZDoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCisgICAgICAgICAgICBGYWxzZQorICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCisgICAgICAgICAgICBUcnVlCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBjYWxsX2NvdW50CisKKyAgICAgICAgQW4gaW50ZWdlciB0ZWxsaW5nIHlvdSBob3cgbWFueSB0aW1lcyB0aGUgbW9jayBvYmplY3QgaGFzIGJlZW4gY2FsbGVkOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2NvdW50CisgICAgICAgICAgICAwCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2NvdW50CisgICAgICAgICAgICAyCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IHJldHVybl92YWx1ZQorCisgICAgICAgIFNldCB0aGlzIHRvIGNvbmZpZ3VyZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgY2FsbGluZyB0aGUgbW9jazoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLnJldHVybl92YWx1ZSA9ICdmaXNoJworICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgJ2Zpc2gnCisKKyAgICAgICAgVGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlIGlzIGEgbW9jayBvYmplY3QgYW5kIHlvdSBjYW4gY29uZmlndXJlIGl0IGluCisgICAgICAgIHRoZSBub3JtYWwgd2F5OgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlLmF0dHJpYnV0ZSA9IHNlbnRpbmVsLkF0dHJpYnV0ZQorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2soKSgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLnJldHVybl92YWx1ZS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorCisgICAgICAgIGByZXR1cm5fdmFsdWVgIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgY29uc3RydWN0b3I6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICAgICAgICAgID4+PiBtb2NrLnJldHVybl92YWx1ZQorICAgICAgICAgICAgMworICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgMworCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBzaWRlX2VmZmVjdAorCisgICAgICAgIFRoaXMgY2FuIGVpdGhlciBiZSBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZCwKKyAgICAgICAgb3IgYW4gZXhjZXB0aW9uIChjbGFzcyBvciBpbnN0YW5jZSkgdG8gYmUgcmFpc2VkLgorCisgICAgICAgIElmIHlvdSBwYXNzIGluIGEgZnVuY3Rpb24gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBzYW1lIGFyZ3VtZW50cyBhcyB0aGUKKyAgICAgICAgbW9jayBhbmQgdW5sZXNzIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSA6ZGF0YTpgREVGQVVMVGAgc2luZ2xldG9uIHRoZQorICAgICAgICBjYWxsIHRvIHRoZSBtb2NrIHdpbGwgdGhlbiByZXR1cm4gd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIHJldHVybnMuIElmIHRoZQorICAgICAgICBmdW5jdGlvbiByZXR1cm5zIDpkYXRhOmBERUZBVUxUYCB0aGVuIHRoZSBtb2NrIHdpbGwgcmV0dXJuIGl0cyBub3JtYWwKKyAgICAgICAgdmFsdWUgKGZyb20gdGhlIDphdHRyOmByZXR1cm5fdmFsdWVgLgorCisgICAgICAgIEFuIGV4YW1wbGUgb2YgYSBtb2NrIHRoYXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiAodG8gdGVzdCBleGNlcHRpb24KKyAgICAgICAgaGFuZGxpbmcgb2YgYW4gQVBJKToKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gRXhjZXB0aW9uKCdCb29tIScpCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgRXhjZXB0aW9uOiBCb29tIQorCisgICAgICAgIFVzaW5nIGBzaWRlX2VmZmVjdGAgdG8gcmV0dXJuIGEgc2VxdWVuY2Ugb2YgdmFsdWVzOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suc2lkZV9lZmZlY3QgPSBbMywgMiwgMV0KKyAgICAgICAgICAgID4+PiBtb2NrKCksIG1vY2soKSwgbW9jaygpCisgICAgICAgICAgICAoMywgMiwgMSkKKworICAgICAgICBUaGUgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlCisgICAgICAgIG1vY2sgKHNvIGl0IGlzIHdpc2UgZm9yIGl0IHRvIHRha2UgYXJiaXRyYXJ5IGFyZ3MgYW5kIGtleXdvcmQKKyAgICAgICAgYXJndW1lbnRzKSBhbmQgd2hhdGV2ZXIgaXQgcmV0dXJucyBpcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgZm9yCisgICAgICAgIHRoZSBjYWxsLiBUaGUgZXhjZXB0aW9uIGlzIGlmIGBzaWRlX2VmZmVjdGAgcmV0dXJucyA6ZGF0YTpgREVGQVVMVGAsCisgICAgICAgIGluIHdoaWNoIGNhc2UgdGhlIG5vcm1hbCA6YXR0cjpgcmV0dXJuX3ZhbHVlYCBpcyB1c2VkLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgICAgICAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAuLi4gICAgIHJldHVybiBERUZBVUxUCisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgIDMKKworICAgICAgICBgc2lkZV9lZmZlY3RgIGNhbiBiZSBzZXQgaW4gdGhlIGNvbnN0cnVjdG9yLiBIZXJlJ3MgYW4gZXhhbXBsZSB0aGF0CisgICAgICAgIGFkZHMgb25lIHRvIHRoZSB2YWx1ZSB0aGUgbW9jayBpcyBjYWxsZWQgd2l0aCBhbmQgcmV0dXJucyBpdDoKKworICAgICAgICAgICAgPj4+IHNpZGVfZWZmZWN0ID0gbGFtYmRhIHZhbHVlOiB2YWx1ZSArIDEKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1zaWRlX2VmZmVjdCkKKyAgICAgICAgICAgID4+PiBtb2NrKDMpCisgICAgICAgICAgICA0CisgICAgICAgICAgICA+Pj4gbW9jaygtOCkKKyAgICAgICAgICAgIC03CisKKyAgICAgICAgU2V0dGluZyBgc2lkZV9lZmZlY3RgIHRvIGBOb25lYCBjbGVhcnMgaXQ6CisKKyAgICAgICAgICAgID4+PiBtID0gTW9jayhzaWRlX2VmZmVjdD1LZXlFcnJvciwgcmV0dXJuX3ZhbHVlPTMpCisgICAgICAgICAgICA+Pj4gbSgpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBLZXlFcnJvcgorICAgICAgICAgICAgPj4+IG0uc2lkZV9lZmZlY3QgPSBOb25lCisgICAgICAgICAgICA+Pj4gbSgpCisgICAgICAgICAgICAzCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IGNhbGxfYXJncworCisgICAgICAgIFRoaXMgaXMgZWl0aGVyIGBOb25lYCAoaWYgdGhlIG1vY2sgaGFzbid0IGJlZW4gY2FsbGVkKSwgb3IgdGhlCisgICAgICAgIGFyZ3VtZW50cyB0aGF0IHRoZSBtb2NrIHdhcyBsYXN0IGNhbGxlZCB3aXRoLiBUaGlzIHdpbGwgYmUgaW4gdGhlCisgICAgICAgIGZvcm0gb2YgYSB0dXBsZTogdGhlIGZpcnN0IG1lbWJlciBpcyBhbnkgb3JkZXJlZCBhcmd1bWVudHMgdGhlIG1vY2sKKyAgICAgICAgd2FzIGNhbGxlZCB3aXRoIChvciBhbiBlbXB0eSB0dXBsZSkgYW5kIHRoZSBzZWNvbmQgbWVtYmVyIGlzIGFueQorICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cyAob3IgYW4gZW1wdHkgZGljdGlvbmFyeSkuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBwcmludCBtb2NrLmNhbGxfYXJncworICAgICAgICAgICAgTm9uZQorICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzCisgICAgICAgICAgICBjYWxsKCkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfYXJncyA9PSAoKQorICAgICAgICAgICAgVHJ1ZQorICAgICAgICAgICAgPj4+IG1vY2soMywgNCkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfYXJncworICAgICAgICAgICAgY2FsbCgzLCA0KQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzID09ICgoMywgNCksKQorICAgICAgICAgICAgVHJ1ZQorICAgICAgICAgICAgPj4+IG1vY2soMywgNCwgNSwga2V5PSdmaXNoJywgbmV4dD0ndzAwdCEnKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzCisgICAgICAgICAgICBjYWxsKDMsIDQsIDUsIGtleT0nZmlzaCcsIG5leHQ9J3cwMHQhJykKKworICAgICAgICBgY2FsbF9hcmdzYCwgYWxvbmcgd2l0aCBtZW1iZXJzIG9mIHRoZSBsaXN0cyA6YXR0cjpgY2FsbF9hcmdzX2xpc3RgLAorICAgICAgICA6YXR0cjpgbWV0aG9kX2NhbGxzYCBhbmQgOmF0dHI6YG1vY2tfY2FsbHNgIGFyZSA6ZGF0YTpgY2FsbGAgb2JqZWN0cy4KKyAgICAgICAgVGhlc2UgYXJlIHR1cGxlcywgc28gdGhleSBjYW4gYmUgdW5wYWNrZWQgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsCisgICAgICAgIGFyZ3VtZW50cyBhbmQgbWFrZSBtb3JlIGNvbXBsZXggYXNzZXJ0aW9ucy4gU2VlCisgICAgICAgIDpyZWY6YGNhbGxzIGFzIHR1cGxlcyA8Y2FsbHMtYXMtdHVwbGVzPmAuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IGNhbGxfYXJnc19saXN0CisKKyAgICAgICAgVGhpcyBpcyBhIGxpc3Qgb2YgYWxsIHRoZSBjYWxscyBtYWRlIHRvIHRoZSBtb2NrIG9iamVjdCBpbiBzZXF1ZW5jZQorICAgICAgICAoc28gdGhlIGxlbmd0aCBvZiB0aGUgbGlzdCBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGl0IGhhcyBiZWVuCisgICAgICAgIGNhbGxlZCkuIEJlZm9yZSBhbnkgY2FsbHMgaGF2ZSBiZWVuIG1hZGUgaXQgaXMgYW4gZW1wdHkgbGlzdC4gVGhlCisgICAgICAgIDpkYXRhOmBjYWxsYCBvYmplY3QgY2FuIGJlIHVzZWQgZm9yIGNvbnZlbmllbnRseSBjb25zdHJ1Y3RpbmcgbGlzdHMgb2YKKyAgICAgICAgY2FsbHMgdG8gY29tcGFyZSB3aXRoIGBjYWxsX2FyZ3NfbGlzdGAuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrKDMsIDQpCisgICAgICAgICAgICA+Pj4gbW9jayhrZXk9J2Zpc2gnLCBuZXh0PSd3MDB0IScpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2FyZ3NfbGlzdAorICAgICAgICAgICAgW2NhbGwoKSwgY2FsbCgzLCA0KSwgY2FsbChrZXk9J2Zpc2gnLCBuZXh0PSd3MDB0IScpXQorICAgICAgICAgICAgPj4+IGV4cGVjdGVkID0gWygpLCAoKDMsIDQpLCksICh7J2tleSc6ICdmaXNoJywgJ25leHQnOiAndzAwdCEnfSwpXQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzX2xpc3QgPT0gZXhwZWN0ZWQKKyAgICAgICAgICAgIFRydWUKKworICAgICAgICBNZW1iZXJzIG9mIGBjYWxsX2FyZ3NfbGlzdGAgYXJlIDpkYXRhOmBjYWxsYCBvYmplY3RzLiBUaGVzZSBjYW4gYmUKKyAgICAgICAgdW5wYWNrZWQgYXMgdHVwbGVzIHRvIGdldCBhdCB0aGUgaW5kaXZpZHVhbCBhcmd1bWVudHMuIFNlZQorICAgICAgICA6cmVmOmBjYWxscyBhcyB0dXBsZXMgPGNhbGxzLWFzLXR1cGxlcz5gLgorCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBtZXRob2RfY2FsbHMKKworICAgICAgICBBcyB3ZWxsIGFzIHRyYWNraW5nIGNhbGxzIHRvIHRoZW1zZWx2ZXMsIG1vY2tzIGFsc28gdHJhY2sgY2FsbHMgdG8KKyAgICAgICAgbWV0aG9kcyBhbmQgYXR0cmlidXRlcywgYW5kICp0aGVpciogbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLnByb3BlcnR5Lm1ldGhvZC5hdHRyaWJ1dGUoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5wcm9wZXJ0eS5tZXRob2QuYXR0cmlidXRlKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kX2NhbGxzCisgICAgICAgICAgICBbY2FsbC5tZXRob2QoKSwgY2FsbC5wcm9wZXJ0eS5tZXRob2QuYXR0cmlidXRlKCldCisKKyAgICAgICAgTWVtYmVycyBvZiBgbWV0aG9kX2NhbGxzYCBhcmUgOmRhdGE6YGNhbGxgIG9iamVjdHMuIFRoZXNlIGNhbiBiZQorICAgICAgICB1bnBhY2tlZCBhcyB0dXBsZXMgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsIGFyZ3VtZW50cy4gU2VlCisgICAgICAgIDpyZWY6YGNhbGxzIGFzIHR1cGxlcyA8Y2FsbHMtYXMtdHVwbGVzPmAuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IG1vY2tfY2FsbHMKKworICAgICAgICBgbW9ja19jYWxsc2AgcmVjb3JkcyAqYWxsKiBjYWxscyB0byB0aGUgbW9jayBvYmplY3QsIGl0cyBtZXRob2RzLCBtYWdpYworICAgICAgICBtZXRob2RzICphbmQqIHJldHVybiB2YWx1ZSBtb2Nrcy4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICAgICAgPj4+IHJlc3VsdCA9IG1vY2soMSwgMiwgMykKKyAgICAgICAgICAgID4+PiBtb2NrLmZpcnN0KGE9MykKKyAgICAgICAgICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5maXJzdCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLnNlY29uZCgpCisgICAgICAgICAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2suc2Vjb25kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IGludChtb2NrKQorICAgICAgICAgICAgMQorICAgICAgICAgICAgPj4+IHJlc3VsdCgxKQorICAgICAgICAgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrKCkoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gZXhwZWN0ZWQgPSBbY2FsbCgxLCAyLCAzKSwgY2FsbC5maXJzdChhPTMpLCBjYWxsLnNlY29uZCgpLAorICAgICAgICAgICAgLi4uIGNhbGwuX19pbnRfXygpLCBjYWxsKCkoMSldCisgICAgICAgICAgICA+Pj4gbW9jay5tb2NrX2NhbGxzID09IGV4cGVjdGVkCisgICAgICAgICAgICBUcnVlCisKKyAgICAgICAgTWVtYmVycyBvZiBgbW9ja19jYWxsc2AgYXJlIDpkYXRhOmBjYWxsYCBvYmplY3RzLiBUaGVzZSBjYW4gYmUKKyAgICAgICAgdW5wYWNrZWQgYXMgdHVwbGVzIHRvIGdldCBhdCB0aGUgaW5kaXZpZHVhbCBhcmd1bWVudHMuIFNlZQorICAgICAgICA6cmVmOmBjYWxscyBhcyB0dXBsZXMgPGNhbGxzLWFzLXR1cGxlcz5gLgorCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBfX2NsYXNzX18KKworICAgICAgICBOb3JtYWxseSB0aGUgYF9fY2xhc3NfX2AgYXR0cmlidXRlIG9mIGFuIG9iamVjdCB3aWxsIHJldHVybiBpdHMgdHlwZS4KKyAgICAgICAgRm9yIGEgbW9jayBvYmplY3Qgd2l0aCBhIGBzcGVjYCBgX19jbGFzc19fYCByZXR1cm5zIHRoZSBzcGVjIGNsYXNzCisgICAgICAgIGluc3RlYWQuIFRoaXMgYWxsb3dzIG1vY2sgb2JqZWN0cyB0byBwYXNzIGBpc2luc3RhbmNlYCB0ZXN0cyBmb3IgdGhlCisgICAgICAgIG9iamVjdCB0aGV5IGFyZSByZXBsYWNpbmcgLyBtYXNxdWVyYWRpbmcgYXM6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhzcGVjPTMpCisgICAgICAgICAgICA+Pj4gaXNpbnN0YW5jZShtb2NrLCBpbnQpCisgICAgICAgICAgICBUcnVlCisKKyAgICAgICAgYF9fY2xhc3NfX2AgaXMgYXNzaWduYWJsZSB0bywgdGhpcyBhbGxvd3MgYSBtb2NrIHRvIHBhc3MgYW4KKyAgICAgICAgYGlzaW5zdGFuY2VgIGNoZWNrIHdpdGhvdXQgZm9yY2luZyB5b3UgdG8gdXNlIGEgc3BlYzoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLl9fY2xhc3NfXyA9IGRpY3QKKyAgICAgICAgICAgID4+PiBpc2luc3RhbmNlKG1vY2ssIGRpY3QpCisgICAgICAgICAgICBUcnVlCisKKy4uIGNsYXNzOjogTm9uQ2FsbGFibGVNb2NrKHNwZWM9Tm9uZSwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLCAqKmt3YXJncykKKworICAgIEEgbm9uLWNhbGxhYmxlIHZlcnNpb24gb2YgYE1vY2tgLiBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lCisgICAgbWVhbmluZyBvZiBgTW9ja2AsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBgcmV0dXJuX3ZhbHVlYCBhbmQgYHNpZGVfZWZmZWN0YAorICAgIHdoaWNoIGhhdmUgbm8gbWVhbmluZyBvbiBhIG5vbi1jYWxsYWJsZSBtb2NrLgorCitNb2NrIG9iamVjdHMgdGhhdCB1c2UgYSBjbGFzcyBvciBhbiBpbnN0YW5jZSBhcyBhIGBzcGVjYCBvciBgc3BlY19zZXRgIGFyZSBhYmxlCit0byBwYXNzIGBpc2ludGFuY2VgIHRlc3RzOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWM9U29tZUNsYXNzKQorICAgID4+PiBpc2luc3RhbmNlKG1vY2ssIFNvbWVDbGFzcykKKyAgICBUcnVlCisgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWNfc2V0PVNvbWVDbGFzcygpKQorICAgID4+PiBpc2luc3RhbmNlKG1vY2ssIFNvbWVDbGFzcykKKyAgICBUcnVlCisKK1RoZSBgTW9ja2AgY2xhc3NlcyBoYXZlIHN1cHBvcnQgZm9yIG1vY2tpbmcgbWFnaWMgbWV0aG9kcy4gU2VlIDpyZWY6YG1hZ2ljCittZXRob2RzIDxtYWdpYy1tZXRob2RzPmAgZm9yIHRoZSBmdWxsIGRldGFpbHMuCisKK1RoZSBtb2NrIGNsYXNzZXMgYW5kIHRoZSA6ZnVuYzpgcGF0Y2hgIGRlY29yYXRvcnMgYWxsIHRha2UgYXJiaXRyYXJ5IGtleXdvcmQKK2FyZ3VtZW50cyBmb3IgY29uZmlndXJhdGlvbi4gRm9yIHRoZSBgcGF0Y2hgIGRlY29yYXRvcnMgdGhlIGtleXdvcmRzIGFyZQorcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgbW9jayBiZWluZyBjcmVhdGVkLiBUaGUga2V5d29yZCBhcmd1bWVudHMKK2FyZSBmb3IgY29uZmlndXJpbmcgYXR0cmlidXRlcyBvZiB0aGUgbW9jazoKKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhhdHRyaWJ1dGU9Mywgb3RoZXI9J2Zpc2gnKQorICAgICAgICA+Pj4gbS5hdHRyaWJ1dGUKKyAgICAgICAgMworICAgICAgICA+Pj4gbS5vdGhlcgorICAgICAgICAnZmlzaCcKKworVGhlIHJldHVybiB2YWx1ZSBhbmQgc2lkZSBlZmZlY3Qgb2YgY2hpbGQgbW9ja3MgY2FuIGJlIHNldCBpbiB0aGUgc2FtZSB3YXksCit1c2luZyBkb3R0ZWQgbm90YXRpb24uIEFzIHlvdSBjYW4ndCB1c2UgZG90dGVkIG5hbWVzIGRpcmVjdGx5IGluIGEgY2FsbCB5b3UKK2hhdmUgdG8gY3JlYXRlIGEgZGljdGlvbmFyeSBhbmQgdW5wYWNrIGl0IHVzaW5nIGAqKmA6CisKKyAgICA+Pj4gYXR0cnMgPSB7J21ldGhvZC5yZXR1cm5fdmFsdWUnOiAzLCAnb3RoZXIuc2lkZV9lZmZlY3QnOiBLZXlFcnJvcn0KKyAgICA+Pj4gbW9jayA9IE1vY2soc29tZV9hdHRyaWJ1dGU9J2VnZ3MnLCAqKmF0dHJzKQorICAgID4+PiBtb2NrLnNvbWVfYXR0cmlidXRlCisgICAgJ2VnZ3MnCisgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAzCisgICAgPj4+IG1vY2sub3RoZXIoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIEtleUVycm9yCisKKworLi4gY2xhc3M6OiBQcm9wZXJ0eU1vY2soKmFyZ3MsICoqa3dhcmdzKQorCisgICBBIG1vY2sgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIHByb3BlcnR5LCBvciBvdGhlciBkZXNjcmlwdG9yLCBvbiBhIGNsYXNzLgorICAgYFByb3BlcnR5TW9ja2AgcHJvdmlkZXMgYF9fZ2V0X19gIGFuZCBgX19zZXRfX2AgbWV0aG9kcyBzbyB5b3UgY2FuIHNwZWNpZnkKKyAgIGEgcmV0dXJuIHZhbHVlIHdoZW4gaXQgaXMgZmV0Y2hlZC4KKworICAgRmV0Y2hpbmcgYSBgUHJvcGVydHlNb2NrYCBpbnN0YW5jZSBmcm9tIGFuIG9iamVjdCBjYWxscyB0aGUgbW9jaywgd2l0aAorICAgbm8gYXJncy4gU2V0dGluZyBpdCBjYWxscyB0aGUgbW9jayB3aXRoIHRoZSB2YWx1ZSBiZWluZyBzZXQuCisKKyAgICAgICAgPj4+IGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAuLi4gICAgIEBwcm9wZXJ0eQorICAgICAgICAuLi4gICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAnc29tZXRoaW5nJworICAgICAgICAuLi4gICAgIEBmb28uc2V0dGVyCisgICAgICAgIC4uLiAgICAgZGVmIGZvbyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIC4uLiAgICAgICAgIHBhc3MKKyAgICAgICAgLi4uCisgICAgICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5Gb28uZm9vJywgbmV3X2NhbGxhYmxlPVByb3BlcnR5TW9jaykgYXMgbW9ja19mb286CisgICAgICAgIC4uLiAgICAgbW9ja19mb28ucmV0dXJuX3ZhbHVlID0gJ21vY2tpdHktbW9jaycKKyAgICAgICAgLi4uICAgICB0aGlzX2ZvbyA9IEZvbygpCisgICAgICAgIC4uLiAgICAgcHJpbnQgdGhpc19mb28uZm9vCisgICAgICAgIC4uLiAgICAgdGhpc19mb28uZm9vID0gNgorICAgICAgICAuLi4KKyAgICAgICAgbW9ja2l0eS1tb2NrCisgICAgICAgID4+PiBtb2NrX2Zvby5tb2NrX2NhbGxzCisgICAgICAgIFtjYWxsKCksIGNhbGwoNildCisKK0JlY2F1c2Ugb2YgdGhlIHdheSBtb2NrIGF0dHJpYnV0ZXMgYXJlIHN0b3JlZCB5b3UgY2FuJ3QgZGlyZWN0bHkgYXR0YWNoIGEKK2BQcm9wZXJ0eU1vY2tgIHRvIGEgbW9jayBvYmplY3QuIEluc3RlYWQgeW91IGNhbiBhdHRhY2ggaXQgdG8gdGhlIG1vY2sgdHlwZQorb2JqZWN0OjoKKworICAgID4+PiBtID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gcCA9IFByb3BlcnR5TW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICA+Pj4gdHlwZShtKS5mb28gPSBwCisgICAgPj4+IG0uZm9vCisgICAgMworICAgID4+PiBwLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworCitDYWxsaW5nCit+fn5+fn5+CisKK01vY2sgb2JqZWN0cyBhcmUgY2FsbGFibGUuIFRoZSBjYWxsIHdpbGwgcmV0dXJuIHRoZSB2YWx1ZSBzZXQgYXMgdGhlCis6YXR0cjpgfk1vY2sucmV0dXJuX3ZhbHVlYCBhdHRyaWJ1dGUuIFRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSBpcyBhIG5ldyBNb2NrCitvYmplY3Q7IGl0IGlzIGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgdGhlIHJldHVybiB2YWx1ZSBpcyBhY2Nlc3NlZCAoZWl0aGVyCitleHBsaWNpdGx5IG9yIGJ5IGNhbGxpbmcgdGhlIE1vY2spIC0gYnV0IGl0IGlzIHN0b3JlZCBhbmQgdGhlIHNhbWUgb25lCityZXR1cm5lZCBlYWNoIHRpbWUuCisKK0NhbGxzIG1hZGUgdG8gdGhlIG9iamVjdCB3aWxsIGJlIHJlY29yZGVkIGluIHRoZSBhdHRyaWJ1dGVzCitsaWtlIDphdHRyOmB+TW9jay5jYWxsX2FyZ3NgIGFuZCA6YXR0cjpgfk1vY2suY2FsbF9hcmdzX2xpc3RgLgorCitJZiA6YXR0cjpgfk1vY2suc2lkZV9lZmZlY3RgIGlzIHNldCB0aGVuIGl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBjYWxsIGhhcworYmVlbiByZWNvcmRlZCwgc28gaWYgYHNpZGVfZWZmZWN0YCByYWlzZXMgYW4gZXhjZXB0aW9uIHRoZSBjYWxsIGlzIHN0aWxsCityZWNvcmRlZC4KKworVGhlIHNpbXBsZXN0IHdheSB0byBtYWtlIGEgbW9jayByYWlzZSBhbiBleGNlcHRpb24gd2hlbiBjYWxsZWQgaXMgdG8gbWFrZQorOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YCBhbiBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2U6CisKKyAgICAgICAgPj4+IG0gPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9SW5kZXhFcnJvcikKKyAgICAgICAgPj4+IG0oMSwgMiwgMykKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLgorICAgICAgICBJbmRleEVycm9yCisgICAgICAgID4+PiBtLm1vY2tfY2FsbHMKKyAgICAgICAgW2NhbGwoMSwgMiwgMyldCisgICAgICAgID4+PiBtLnNpZGVfZWZmZWN0ID0gS2V5RXJyb3IoJ0JhbmchJykKKyAgICAgICAgPj4+IG0oJ3R3bycsICd0aHJlZScsICdmb3VyJykKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLgorICAgICAgICBLZXlFcnJvcjogJ0JhbmchJworICAgICAgICA+Pj4gbS5tb2NrX2NhbGxzCisgICAgICAgIFtjYWxsKDEsIDIsIDMpLCBjYWxsKCd0d28nLCAndGhyZWUnLCAnZm91cicpXQorCitJZiBgc2lkZV9lZmZlY3RgIGlzIGEgZnVuY3Rpb24gdGhlbiB3aGF0ZXZlciB0aGF0IGZ1bmN0aW9uIHJldHVybnMgaXMgd2hhdAorY2FsbHMgdG8gdGhlIG1vY2sgcmV0dXJuLiBUaGUgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUKK3NhbWUgYXJndW1lbnRzIGFzIHRoZSBtb2NrLiBUaGlzIGFsbG93cyB5b3UgdG8gdmFyeSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZQorY2FsbCBkeW5hbWljYWxseSwgYmFzZWQgb24gdGhlIGlucHV0OgorCisgICAgICAgID4+PiBkZWYgc2lkZV9lZmZlY3QodmFsdWUpOgorICAgICAgICAuLi4gICAgIHJldHVybiB2YWx1ZSArIDEKKyAgICAgICAgLi4uCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0KQorICAgICAgICA+Pj4gbSgxKQorICAgICAgICAyCisgICAgICAgID4+PiBtKDIpCisgICAgICAgIDMKKyAgICAgICAgPj4+IG0ubW9ja19jYWxscworICAgICAgICBbY2FsbCgxKSwgY2FsbCgyKV0KKworSWYgeW91IHdhbnQgdGhlIG1vY2sgdG8gc3RpbGwgcmV0dXJuIHRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSAoYSBuZXcgbW9jayksIG9yCithbnkgc2V0IHJldHVybiB2YWx1ZSwgdGhlbiB0aGVyZSBhcmUgdHdvIHdheXMgb2YgZG9pbmcgdGhpcy4gRWl0aGVyIHJldHVybgorYG1vY2sucmV0dXJuX3ZhbHVlYCBmcm9tIGluc2lkZSBgc2lkZV9lZmZlY3RgLCBvciByZXR1cm4gOmRhdGE6YERFRkFVTFRgOgorCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKCkKKyAgICAgICAgPj4+IGRlZiBzaWRlX2VmZmVjdCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAuLi4gICAgIHJldHVybiBtLnJldHVybl92YWx1ZQorICAgICAgICAuLi4KKyAgICAgICAgPj4+IG0uc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgICAgICA+Pj4gbS5yZXR1cm5fdmFsdWUgPSAzCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMworICAgICAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIC4uLiAgICAgcmV0dXJuIERFRkFVTFQKKyAgICAgICAgLi4uCisgICAgICAgID4+PiBtLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgICAgICAgPj4+IG0oKQorICAgICAgICAzCisKK1RvIHJlbW92ZSBhIGBzaWRlX2VmZmVjdGAsIGFuZCByZXR1cm4gdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3VyLCBzZXQgdGhlCitgc2lkZV9lZmZlY3RgIHRvIGBOb25lYDoKKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9NikKKyAgICAgICAgPj4+IGRlZiBzaWRlX2VmZmVjdCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAuLi4gICAgIHJldHVybiAzCisgICAgICAgIC4uLgorICAgICAgICA+Pj4gbS5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0CisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMworICAgICAgICA+Pj4gbS5zaWRlX2VmZmVjdCA9IE5vbmUKKyAgICAgICAgPj4+IG0oKQorICAgICAgICA2CisKK1RoZSBgc2lkZV9lZmZlY3RgIGNhbiBhbHNvIGJlIGFueSBpdGVyYWJsZSBvYmplY3QuIFJlcGVhdGVkIGNhbGxzIHRvIHRoZSBtb2NrCit3aWxsIHJldHVybiB2YWx1ZXMgZnJvbSB0aGUgaXRlcmFibGUgKHVudGlsIHRoZSBpdGVyYWJsZSBpcyBleGhhdXN0ZWQgYW5kCithIGBTdG9wSXRlcmF0aW9uYCBpcyByYWlzZWQpOgorCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PVsxLCAyLCAzXSkKKyAgICAgICAgPj4+IG0oKQorICAgICAgICAxCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMgorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDMKKyAgICAgICAgPj4+IG0oKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgLi4uCisgICAgICAgIFN0b3BJdGVyYXRpb24KKworSWYgYW55IG1lbWJlcnMgb2YgdGhlIGl0ZXJhYmxlIGFyZSBleGNlcHRpb25zIHRoZXkgd2lsbCBiZSByYWlzZWQgaW5zdGVhZCBvZgorcmV0dXJuZWQ6OgorCisgICAgICAgID4+PiBpdGVyYWJsZSA9ICgzMywgVmFsdWVFcnJvciwgNjYpCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PWl0ZXJhYmxlKQorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDMzCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgLi4uCisgICAgICAgIFZhbHVlRXJyb3IKKyAgICAgICAgPj4+IG0oKQorICAgICAgICA2NgorCisKKy4uIF9kZWxldGluZy1hdHRyaWJ1dGVzOgorCitEZWxldGluZyBBdHRyaWJ1dGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+CisKK01vY2sgb2JqZWN0cyBjcmVhdGUgYXR0cmlidXRlcyBvbiBkZW1hbmQuIFRoaXMgYWxsb3dzIHRoZW0gdG8gcHJldGVuZCB0byBiZQorb2JqZWN0cyBvZiBhbnkgdHlwZS4KKworWW91IG1heSB3YW50IGEgbW9jayBvYmplY3QgdG8gcmV0dXJuIGBGYWxzZWAgdG8gYSBgaGFzYXR0cmAgY2FsbCwgb3IgcmFpc2UgYW4KK2BBdHRyaWJ1dGVFcnJvcmAgd2hlbiBhbiBhdHRyaWJ1dGUgaXMgZmV0Y2hlZC4gWW91IGNhbiBkbyB0aGlzIGJ5IHByb3ZpZGluZworYW4gb2JqZWN0IGFzIGEgYHNwZWNgIGZvciBhIG1vY2ssIGJ1dCB0aGF0IGlzbid0IGFsd2F5cyBjb252ZW5pZW50LgorCitZb3UgImJsb2NrIiBhdHRyaWJ1dGVzIGJ5IGRlbGV0aW5nIHRoZW0uIE9uY2UgZGVsZXRlZCwgYWNjZXNzaW5nIGFuIGF0dHJpYnV0ZQord2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgID4+PiBoYXNhdHRyKG1vY2ssICdtJykKKyAgICBUcnVlCisgICAgPj4+IGRlbCBtb2NrLm0KKyAgICA+Pj4gaGFzYXR0cihtb2NrLCAnbScpCisgICAgRmFsc2UKKyAgICA+Pj4gZGVsIG1vY2suZgorICAgID4+PiBtb2NrLmYKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEF0dHJpYnV0ZUVycm9yOiBmCisKKworQXR0YWNoaW5nIE1vY2tzIGFzIEF0dHJpYnV0ZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1doZW4geW91IGF0dGFjaCBhIG1vY2sgYXMgYW4gYXR0cmlidXRlIG9mIGFub3RoZXIgbW9jayAob3IgYXMgdGhlIHJldHVybgordmFsdWUpIGl0IGJlY29tZXMgYSAiY2hpbGQiIG9mIHRoYXQgbW9jay4gQ2FsbHMgdG8gdGhlIGNoaWxkIGFyZSByZWNvcmRlZCBpbgordGhlIDphdHRyOmB+TW9jay5tZXRob2RfY2FsbHNgIGFuZCA6YXR0cjpgfk1vY2subW9ja19jYWxsc2AgYXR0cmlidXRlcyBvZiB0aGUKK3BhcmVudC4gVGhpcyBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIGNoaWxkIG1vY2tzIGFuZCB0aGVuIGF0dGFjaGluZyB0aGVtIHRvCit0aGUgcGFyZW50LCBvciBmb3IgYXR0YWNoaW5nIG1vY2tzIHRvIGEgcGFyZW50IHRoYXQgcmVjb3JkcyBhbGwgY2FsbHMgdG8gdGhlCitjaGlsZHJlbiBhbmQgYWxsb3dzIHlvdSB0byBtYWtlIGFzc2VydGlvbnMgYWJvdXQgdGhlIG9yZGVyIG9mIGNhbGxzIGJldHdlZW4KK21vY2tzOgorCisgICAgPj4+IHBhcmVudCA9IE1hZ2ljTW9jaygpCisgICAgPj4+IGNoaWxkMSA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gY2hpbGQyID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBwYXJlbnQuY2hpbGQxID0gY2hpbGQxCisgICAgPj4+IHBhcmVudC5jaGlsZDIgPSBjaGlsZDIKKyAgICA+Pj4gY2hpbGQxKDEpCisgICAgPj4+IGNoaWxkMigyKQorICAgID4+PiBwYXJlbnQubW9ja19jYWxscworICAgIFtjYWxsLmNoaWxkMSgxKSwgY2FsbC5jaGlsZDIoMildCisKK1RoZSBleGNlcHRpb24gdG8gdGhpcyBpcyBpZiB0aGUgbW9jayBoYXMgYSBuYW1lLiBUaGlzIGFsbG93cyB5b3UgdG8gcHJldmVudAordGhlICJwYXJlbnRpbmciIGlmIGZvciBzb21lIHJlYXNvbiB5b3UgZG9uJ3Qgd2FudCBpdCB0byBoYXBwZW4uCisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG5vdF9hX2NoaWxkID0gTWFnaWNNb2NrKG5hbWU9J25vdC1hLWNoaWxkJykKKyAgICA+Pj4gbW9jay5hdHRyaWJ1dGUgPSBub3RfYV9jaGlsZAorICAgID4+PiBtb2NrLmF0dHJpYnV0ZSgpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdub3QtYS1jaGlsZCgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5tb2NrX2NhbGxzCisgICAgW10KKworTW9ja3MgY3JlYXRlZCBmb3IgeW91IGJ5IDpmdW5jOmBwYXRjaGAgYXJlIGF1dG9tYXRpY2FsbHkgZ2l2ZW4gbmFtZXMuIFRvCithdHRhY2ggbW9ja3MgdGhhdCBoYXZlIG5hbWVzIHRvIGEgcGFyZW50IHlvdSB1c2UgdGhlIDptZXRoOmB+TW9jay5hdHRhY2hfbW9ja2AKK21ldGhvZDoKKworICAgID4+PiB0aGluZzEgPSBvYmplY3QoKQorICAgID4+PiB0aGluZzIgPSBvYmplY3QoKQorICAgID4+PiBwYXJlbnQgPSBNYWdpY01vY2soKQorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy50aGluZzEnLCByZXR1cm5fdmFsdWU9Tm9uZSkgYXMgY2hpbGQxOgorICAgIC4uLiAgICAgd2l0aCBwYXRjaCgnX19tYWluX18udGhpbmcyJywgcmV0dXJuX3ZhbHVlPU5vbmUpIGFzIGNoaWxkMjoKKyAgICAuLi4gICAgICAgICBwYXJlbnQuYXR0YWNoX21vY2soY2hpbGQxLCAnY2hpbGQxJykKKyAgICAuLi4gICAgICAgICBwYXJlbnQuYXR0YWNoX21vY2soY2hpbGQyLCAnY2hpbGQyJykKKyAgICAuLi4gICAgICAgICBjaGlsZDEoJ29uZScpCisgICAgLi4uICAgICAgICAgY2hpbGQyKCd0d28nKQorICAgIC4uLgorICAgID4+PiBwYXJlbnQubW9ja19jYWxscworICAgIFtjYWxsLmNoaWxkMSgnb25lJyksIGNhbGwuY2hpbGQyKCd0d28nKV0KKworCisuLiBbI10gVGhlIG9ubHkgZXhjZXB0aW9ucyBhcmUgbWFnaWMgbWV0aG9kcyBhbmQgYXR0cmlidXRlcyAodGhvc2UgdGhhdCBoYXZlCisgICAgICAgbGVhZGluZyBhbmQgdHJhaWxpbmcgZG91YmxlIHVuZGVyc2NvcmVzKS4gTW9jayBkb2Vzbid0IGNyZWF0ZSB0aGVzZSBidXQKKyAgICAgICBpbnN0ZWFkIG9mIHJhaXNlcyBhbiBgYEF0dHJpYnV0ZUVycm9yYGAuIFRoaXMgaXMgYmVjYXVzZSB0aGUgaW50ZXJwcmV0ZXIKKyAgICAgICB3aWxsIG9mdGVuIGltcGxpY2l0bHkgcmVxdWVzdCB0aGVzZSBtZXRob2RzLCBhbmQgZ2V0cyAqdmVyeSogY29uZnVzZWQgdG8KKyAgICAgICBnZXQgYSBuZXcgTW9jayBvYmplY3Qgd2hlbiBpdCBleHBlY3RzIGEgbWFnaWMgbWV0aG9kLiBJZiB5b3UgbmVlZCBtYWdpYworICAgICAgIG1ldGhvZCBzdXBwb3J0IHNlZSA6cmVmOmBtYWdpYyBtZXRob2RzIDxtYWdpYy1tZXRob2RzPmAuCisKKworVGhlIHBhdGNoZXJzCis9PT09PT09PT09PT0KKworVGhlIHBhdGNoIGRlY29yYXRvcnMgYXJlIHVzZWQgZm9yIHBhdGNoaW5nIG9iamVjdHMgb25seSB3aXRoaW4gdGhlIHNjb3BlIG9mCit0aGUgZnVuY3Rpb24gdGhleSBkZWNvcmF0ZS4gVGhleSBhdXRvbWF0aWNhbGx5IGhhbmRsZSB0aGUgdW5wYXRjaGluZyBmb3IgeW91LAorZXZlbiBpZiBleGNlcHRpb25zIGFyZSByYWlzZWQuIEFsbCBvZiB0aGVzZSBmdW5jdGlvbnMgY2FuIGFsc28gYmUgdXNlZCBpbiB3aXRoCitzdGF0ZW1lbnRzIG9yIGFzIGNsYXNzIGRlY29yYXRvcnMuCisKKworcGF0Y2gKKy0tLS0tCisKKy4uIG5vdGU6OgorCisgICAgYHBhdGNoYCBpcyBzdHJhaWdodGZvcndhcmQgdG8gdXNlLiBUaGUga2V5IGlzIHRvIGRvIHRoZSBwYXRjaGluZyBpbiB0aGUKKyAgICByaWdodCBuYW1lc3BhY2UuIFNlZSB0aGUgc2VjdGlvbiBgd2hlcmUgdG8gcGF0Y2hgXy4KKworLi4gZnVuY3Rpb246OiBwYXRjaCh0YXJnZXQsIG5ldz1ERUZBVUxULCBzcGVjPU5vbmUsIGNyZWF0ZT1GYWxzZSwgc3BlY19zZXQ9Tm9uZSwgYXV0b3NwZWM9Tm9uZSwgbmV3X2NhbGxhYmxlPU5vbmUsICoqa3dhcmdzKQorCisgICAgYHBhdGNoYCBhY3RzIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gSW5zaWRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiBvciB3aXRoIHN0YXRlbWVudCwgdGhlIGB0YXJnZXRgCisgICAgaXMgcGF0Y2hlZCB3aXRoIGEgYG5ld2Agb2JqZWN0LiBXaGVuIHRoZSBmdW5jdGlvbi93aXRoIHN0YXRlbWVudCBleGl0cworICAgIHRoZSBwYXRjaCBpcyB1bmRvbmUuCisKKyAgICBJZiBgbmV3YCBpcyBvbWl0dGVkLCB0aGVuIHRoZSB0YXJnZXQgaXMgcmVwbGFjZWQgd2l0aCBhCisgICAgOmNsYXNzOmBNYWdpY01vY2tgLiBJZiBgcGF0Y2hgIGlzIHVzZWQgYXMgYSBkZWNvcmF0b3IgYW5kIGBuZXdgIGlzCisgICAgb21pdHRlZCwgdGhlIGNyZWF0ZWQgbW9jayBpcyBwYXNzZWQgaW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgdG8gdGhlCisgICAgZGVjb3JhdGVkIGZ1bmN0aW9uLiBJZiBgcGF0Y2hgIGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgdGhlIGNyZWF0ZWQKKyAgICBtb2NrIGlzIHJldHVybmVkIGJ5IHRoZSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBgdGFyZ2V0YCBzaG91bGQgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gYCdwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUnYC4gVGhlCisgICAgYHRhcmdldGAgaXMgaW1wb3J0ZWQgYW5kIHRoZSBzcGVjaWZpZWQgb2JqZWN0IHJlcGxhY2VkIHdpdGggdGhlIGBuZXdgCisgICAgb2JqZWN0LCBzbyB0aGUgYHRhcmdldGAgbXVzdCBiZSBpbXBvcnRhYmxlIGZyb20gdGhlIGVudmlyb25tZW50IHlvdSBhcmUKKyAgICBjYWxsaW5nIGBwYXRjaGAgZnJvbS4gVGhlIHRhcmdldCBpcyBpbXBvcnRlZCB3aGVuIHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24KKyAgICBpcyBleGVjdXRlZCwgbm90IGF0IGRlY29yYXRpb24gdGltZS4KKworICAgIFRoZSBgc3BlY2AgYW5kIGBzcGVjX3NldGAga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgYE1hZ2ljTW9ja2AKKyAgICBpZiBwYXRjaCBpcyBjcmVhdGluZyBvbmUgZm9yIHlvdS4KKworICAgIEluIGFkZGl0aW9uIHlvdSBjYW4gcGFzcyBgc3BlYz1UcnVlYCBvciBgc3BlY19zZXQ9VHJ1ZWAsIHdoaWNoIGNhdXNlcworICAgIHBhdGNoIHRvIHBhc3MgaW4gdGhlIG9iamVjdCBiZWluZyBtb2NrZWQgYXMgdGhlIHNwZWMvc3BlY19zZXQgb2JqZWN0LgorCisgICAgYG5ld19jYWxsYWJsZWAgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgZGlmZmVyZW50IGNsYXNzLCBvciBjYWxsYWJsZSBvYmplY3QsCisgICAgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjcmVhdGUgdGhlIGBuZXdgIG9iamVjdC4gQnkgZGVmYXVsdCBgTWFnaWNNb2NrYCBpcworICAgIHVzZWQuCisKKyAgICBBIG1vcmUgcG93ZXJmdWwgZm9ybSBvZiBgc3BlY2AgaXMgYGF1dG9zcGVjYC4gSWYgeW91IHNldCBgYXV0b3NwZWM9VHJ1ZWAKKyAgICB0aGVuIHRoZSBtb2NrIHdpdGggYmUgY3JlYXRlZCB3aXRoIGEgc3BlYyBmcm9tIHRoZSBvYmplY3QgYmVpbmcgcmVwbGFjZWQuCisgICAgQWxsIGF0dHJpYnV0ZXMgb2YgdGhlIG1vY2sgd2lsbCBhbHNvIGhhdmUgdGhlIHNwZWMgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICBhdHRyaWJ1dGUgb2YgdGhlIG9iamVjdCBiZWluZyByZXBsYWNlZC4gTWV0aG9kcyBhbmQgZnVuY3Rpb25zIGJlaW5nIG1vY2tlZAorICAgIHdpbGwgaGF2ZSB0aGVpciBhcmd1bWVudHMgY2hlY2tlZCBhbmQgd2lsbCByYWlzZSBhIGBUeXBlRXJyb3JgIGlmIHRoZXkgYXJlCisgICAgY2FsbGVkIHdpdGggdGhlIHdyb25nIHNpZ25hdHVyZS4gRm9yIG1vY2tzCisgICAgcmVwbGFjaW5nIGEgY2xhc3MsIHRoZWlyIHJldHVybiB2YWx1ZSAodGhlICdpbnN0YW5jZScpIHdpbGwgaGF2ZSB0aGUgc2FtZQorICAgIHNwZWMgYXMgdGhlIGNsYXNzLiBTZWUgdGhlIDpmdW5jOmBjcmVhdGVfYXV0b3NwZWNgIGZ1bmN0aW9uIGFuZAorICAgIDpyZWY6YGF1dG8tc3BlY2NpbmdgLgorCisgICAgSW5zdGVhZCBvZiBgYXV0b3NwZWM9VHJ1ZWAgeW91IGNhbiBwYXNzIGBhdXRvc3BlYz1zb21lX29iamVjdGAgdG8gdXNlIGFuCisgICAgYXJiaXRyYXJ5IG9iamVjdCBhcyB0aGUgc3BlYyBpbnN0ZWFkIG9mIHRoZSBvbmUgYmVpbmcgcmVwbGFjZWQuCisKKyAgICBCeSBkZWZhdWx0IGBwYXRjaGAgd2lsbCBmYWlsIHRvIHJlcGxhY2UgYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0LiBJZgorICAgIHlvdSBwYXNzIGluIGBjcmVhdGU9VHJ1ZWAsIGFuZCB0aGUgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QsIHBhdGNoIHdpbGwKKyAgICBjcmVhdGUgdGhlIGF0dHJpYnV0ZSBmb3IgeW91IHdoZW4gdGhlIHBhdGNoZWQgZnVuY3Rpb24gaXMgY2FsbGVkLCBhbmQKKyAgICBkZWxldGUgaXQgYWdhaW4gYWZ0ZXJ3YXJkcy4gVGhpcyBpcyB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdHMgYWdhaW5zdAorICAgIGF0dHJpYnV0ZXMgdGhhdCB5b3VyIHByb2R1Y3Rpb24gY29kZSBjcmVhdGVzIGF0IHJ1bnRpbWUuIEl0IGlzIG9mZiBieSBieQorICAgIGRlZmF1bHQgYmVjYXVzZSBpdCBjYW4gYmUgZGFuZ2Vyb3VzLiBXaXRoIGl0IHN3aXRjaGVkIG9uIHlvdSBjYW4gd3JpdGUKKyAgICBwYXNzaW5nIHRlc3RzIGFnYWluc3QgQVBJcyB0aGF0IGRvbid0IGFjdHVhbGx5IGV4aXN0IQorCisgICAgUGF0Y2ggY2FuIGJlIHVzZWQgYXMgYSBgVGVzdENhc2VgIGNsYXNzIGRlY29yYXRvci4gSXQgd29ya3MgYnkKKyAgICBkZWNvcmF0aW5nIGVhY2ggdGVzdCBtZXRob2QgaW4gdGhlIGNsYXNzLiBUaGlzIHJlZHVjZXMgdGhlIGJvaWxlcnBsYXRlCisgICAgY29kZSB3aGVuIHlvdXIgdGVzdCBtZXRob2RzIHNoYXJlIGEgY29tbW9uIHBhdGNoaW5ncyBzZXQuIGBwYXRjaGAgZmluZHMKKyAgICB0ZXN0cyBieSBsb29raW5nIGZvciBtZXRob2QgbmFtZXMgdGhhdCBzdGFydCB3aXRoIGBwYXRjaC5URVNUX1BSRUZJWGAuCisgICAgQnkgZGVmYXVsdCB0aGlzIGlzIGB0ZXN0YCwgd2hpY2ggbWF0Y2hlcyB0aGUgd2F5IGB1bml0dGVzdGAgZmluZHMgdGVzdHMuCisgICAgWW91IGNhbiBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIHByZWZpeCBieSBzZXR0aW5nIGBwYXRjaC5URVNUX1BSRUZJWGAuCisKKyAgICBQYXRjaCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgd2l0aCB0aGUgd2l0aCBzdGF0ZW1lbnQuIEhlcmUgdGhlCisgICAgcGF0Y2hpbmcgYXBwbGllcyB0byB0aGUgaW5kZW50ZWQgYmxvY2sgYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50LiBJZiB5b3UKKyAgICB1c2UgImFzIiB0aGVuIHRoZSBwYXRjaGVkIG9iamVjdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBuYW1lIGFmdGVyIHRoZQorICAgICJhcyI7IHZlcnkgdXNlZnVsIGlmIGBwYXRjaGAgaXMgY3JlYXRpbmcgYSBtb2NrIG9iamVjdCBmb3IgeW91LgorCisgICAgYHBhdGNoYCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUgcGFzc2VkIHRvCisgICAgdGhlIGBNb2NrYCAob3IgYG5ld19jYWxsYWJsZWApIG9uIGNvbnN0cnVjdGlvbi4KKworICAgIGBwYXRjaC5kaWN0KC4uLilgLCBgcGF0Y2gubXVsdGlwbGUoLi4uKWAgYW5kIGBwYXRjaC5vYmplY3QoLi4uKWAgYXJlCisgICAgYXZhaWxhYmxlIGZvciBhbHRlcm5hdGUgdXNlLWNhc2VzLgorCitgcGF0Y2hgIGFzIGZ1bmN0aW9uIGRlY29yYXRvciwgY3JlYXRpbmcgdGhlIG1vY2sgZm9yIHlvdSBhbmQgcGFzc2luZyBpdCBpbnRvCit0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uOgorCisgICAgPj4+IEBwYXRjaCgnX19tYWluX18uU29tZUNsYXNzJykKKyAgICAuLi4gZGVmIGZ1bmN0aW9uKG5vcm1hbF9hcmd1bWVudCwgbW9ja19jbGFzcyk6CisgICAgLi4uICAgICBwcmludChtb2NrX2NsYXNzIGlzIFNvbWVDbGFzcykKKyAgICAuLi4KKyAgICA+Pj4gZnVuY3Rpb24oTm9uZSkKKyAgICBUcnVlCisKK1BhdGNoaW5nIGEgY2xhc3MgcmVwbGFjZXMgdGhlIGNsYXNzIHdpdGggYSBgTWFnaWNNb2NrYCAqaW5zdGFuY2UqLiBJZiB0aGUKK2NsYXNzIGlzIGluc3RhbnRpYXRlZCBpbiB0aGUgY29kZSB1bmRlciB0ZXN0IHRoZW4gaXQgd2lsbCBiZSB0aGUKKzphdHRyOmB+TW9jay5yZXR1cm5fdmFsdWVgIG9mIHRoZSBtb2NrIHRoYXQgd2lsbCBiZSB1c2VkLgorCitJZiB0aGUgY2xhc3MgaXMgaW5zdGFudGlhdGVkIG11bHRpcGxlIHRpbWVzIHlvdSBjb3VsZCB1c2UKKzphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAgdG8gcmV0dXJuIGEgbmV3IG1vY2sgZWFjaCB0aW1lLiBBbHRlcm5hdGl2ZWx5IHlvdQorY2FuIHNldCB0aGUgYHJldHVybl92YWx1ZWAgdG8gYmUgYW55dGhpbmcgeW91IHdhbnQuCisKK1RvIGNvbmZpZ3VyZSByZXR1cm4gdmFsdWVzIG9uIG1ldGhvZHMgb2YgKmluc3RhbmNlcyogb24gdGhlIHBhdGNoZWQgY2xhc3MKK3lvdSBtdXN0IGRvIHRoaXMgb24gdGhlIGByZXR1cm5fdmFsdWVgLiBGb3IgZXhhbXBsZToKKworICAgID4+PiBjbGFzcyBDbGFzcyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAuLi4gICAgICAgICBwYXNzCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLkNsYXNzJykgYXMgTW9ja0NsYXNzOgorICAgIC4uLiAgICAgaW5zdGFuY2UgPSBNb2NrQ2xhc3MucmV0dXJuX3ZhbHVlCisgICAgLi4uICAgICBpbnN0YW5jZS5tZXRob2QucmV0dXJuX3ZhbHVlID0gJ2ZvbycKKyAgICAuLi4gICAgIGFzc2VydCBDbGFzcygpIGlzIGluc3RhbmNlCisgICAgLi4uICAgICBhc3NlcnQgQ2xhc3MoKS5tZXRob2QoKSA9PSAnZm9vJworICAgIC4uLgorCitJZiB5b3UgdXNlIGBzcGVjYCBvciBgc3BlY19zZXRgIGFuZCBgcGF0Y2hgIGlzIHJlcGxhY2luZyBhICpjbGFzcyosIHRoZW4gdGhlCityZXR1cm4gdmFsdWUgb2YgdGhlIGNyZWF0ZWQgbW9jayB3aWxsIGhhdmUgdGhlIHNhbWUgc3BlYy4KKworICAgID4+PiBPcmlnaW5hbCA9IENsYXNzCisgICAgPj4+IHBhdGNoZXIgPSBwYXRjaCgnX19tYWluX18uQ2xhc3MnLCBzcGVjPVRydWUpCisgICAgPj4+IE1vY2tDbGFzcyA9IHBhdGNoZXIuc3RhcnQoKQorICAgID4+PiBpbnN0YW5jZSA9IE1vY2tDbGFzcygpCisgICAgPj4+IGFzc2VydCBpc2luc3RhbmNlKGluc3RhbmNlLCBPcmlnaW5hbCkKKyAgICA+Pj4gcGF0Y2hlci5zdG9wKCkKKworVGhlIGBuZXdfY2FsbGFibGVgIGFyZ3VtZW50IGlzIHVzZWZ1bCB3aGVyZSB5b3Ugd2FudCB0byB1c2UgYW4gYWx0ZXJuYXRpdmUKK2NsYXNzIHRvIHRoZSBkZWZhdWx0IDpjbGFzczpgTWFnaWNNb2NrYCBmb3IgdGhlIGNyZWF0ZWQgbW9jay4gRm9yIGV4YW1wbGUsIGlmCit5b3Ugd2FudGVkIGEgOmNsYXNzOmBOb25DYWxsYWJsZU1vY2tgIHRvIGJlIHVzZWQ6CisKKyAgICA+Pj4gdGhpbmcgPSBvYmplY3QoKQorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy50aGluZycsIG5ld19jYWxsYWJsZT1Ob25DYWxsYWJsZU1vY2spIGFzIG1vY2tfdGhpbmc6CisgICAgLi4uICAgICBhc3NlcnQgdGhpbmcgaXMgbW9ja190aGluZworICAgIC4uLiAgICAgdGhpbmcoKQorICAgIC4uLgorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogJ05vbkNhbGxhYmxlTW9jaycgb2JqZWN0IGlzIG5vdCBjYWxsYWJsZQorCitBbm90aGVyIHVzZSBjYXNlIG1pZ2h0IGJlIHRvIHJlcGxhY2UgYW4gb2JqZWN0IHdpdGggYSBgU3RyaW5nSU9gIGluc3RhbmNlOgorCisgICAgPj4+IGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCisgICAgPj4+IGRlZiBmb28oKToKKyAgICAuLi4gICAgIHByaW50ICdTb21ldGhpbmcnCisgICAgLi4uCisgICAgPj4+IEBwYXRjaCgnc3lzLnN0ZG91dCcsIG5ld19jYWxsYWJsZT1TdHJpbmdJTykKKyAgICAuLi4gZGVmIHRlc3QobW9ja19zdGRvdXQpOgorICAgIC4uLiAgICAgZm9vKCkKKyAgICAuLi4gICAgIGFzc2VydCBtb2NrX3N0ZG91dC5nZXR2YWx1ZSgpID09ICdTb21ldGhpbmdcbicKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisKK1doZW4gYHBhdGNoYCBpcyBjcmVhdGluZyBhIG1vY2sgZm9yIHlvdSwgaXQgaXMgY29tbW9uIHRoYXQgdGhlIGZpcnN0IHRoaW5nCit5b3UgbmVlZCB0byBkbyBpcyB0byBjb25maWd1cmUgdGhlIG1vY2suIFNvbWUgb2YgdGhhdCBjb25maWd1cmF0aW9uIGNhbiBiZSBkb25lCitpbiB0aGUgY2FsbCB0byBwYXRjaC4gQW55IGFyYml0cmFyeSBrZXl3b3JkcyB5b3UgcGFzcyBpbnRvIHRoZSBjYWxsIHdpbGwgYmUKK3VzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgb24gdGhlIGNyZWF0ZWQgbW9jazoKKworICAgID4+PiBwYXRjaGVyID0gcGF0Y2goJ19fbWFpbl9fLnRoaW5nJywgZmlyc3Q9J29uZScsIHNlY29uZD0ndHdvJykKKyAgICA+Pj4gbW9ja190aGluZyA9IHBhdGNoZXIuc3RhcnQoKQorICAgID4+PiBtb2NrX3RoaW5nLmZpcnN0CisgICAgJ29uZScKKyAgICA+Pj4gbW9ja190aGluZy5zZWNvbmQKKyAgICAndHdvJworCitBcyB3ZWxsIGFzIGF0dHJpYnV0ZXMgb24gdGhlIGNyZWF0ZWQgbW9jayBhdHRyaWJ1dGVzLCBsaWtlIHRoZQorOmF0dHI6YH5Nb2NrLnJldHVybl92YWx1ZWAgYW5kIDphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAsIG9mIGNoaWxkIG1vY2tzIGNhbgorYWxzbyBiZSBjb25maWd1cmVkLiBUaGVzZSBhcmVuJ3Qgc3ludGFjdGljYWxseSB2YWxpZCB0byBwYXNzIGluIGRpcmVjdGx5IGFzCitrZXl3b3JkIGFyZ3VtZW50cywgYnV0IGEgZGljdGlvbmFyeSB3aXRoIHRoZXNlIGFzIGtleXMgY2FuIHN0aWxsIGJlIGV4cGFuZGVkCitpbnRvIGEgYHBhdGNoYCBjYWxsIHVzaW5nIGAqKmA6CisKKyAgICA+Pj4gY29uZmlnID0geydtZXRob2QucmV0dXJuX3ZhbHVlJzogMywgJ290aGVyLnNpZGVfZWZmZWN0JzogS2V5RXJyb3J9CisgICAgPj4+IHBhdGNoZXIgPSBwYXRjaCgnX19tYWluX18udGhpbmcnLCAqKmNvbmZpZykKKyAgICA+Pj4gbW9ja190aGluZyA9IHBhdGNoZXIuc3RhcnQoKQorICAgID4+PiBtb2NrX3RoaW5nLm1ldGhvZCgpCisgICAgMworICAgID4+PiBtb2NrX3RoaW5nLm90aGVyKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBLZXlFcnJvcgorCisKK3BhdGNoLm9iamVjdAorLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogcGF0Y2gub2JqZWN0KHRhcmdldCwgYXR0cmlidXRlLCBuZXc9REVGQVVMVCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncykKKworICAgIHBhdGNoIHRoZSBuYW1lZCBtZW1iZXIgKGBhdHRyaWJ1dGVgKSBvbiBhbiBvYmplY3QgKGB0YXJnZXRgKSB3aXRoIGEgbW9jaworICAgIG9iamVjdC4KKworICAgIGBwYXRjaC5vYmplY3RgIGNhbiBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gQXJndW1lbnRzIGBuZXdgLCBgc3BlY2AsIGBjcmVhdGVgLCBgc3BlY19zZXRgLCBgYXV0b3NwZWNgIGFuZAorICAgIGBuZXdfY2FsbGFibGVgIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgYHBhdGNoYC4gTGlrZSBgcGF0Y2hgLAorICAgIGBwYXRjaC5vYmplY3RgIHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgY29uZmlndXJpbmcgdGhlIG1vY2sKKyAgICBvYmplY3QgaXQgY3JlYXRlcy4KKworICAgIFdoZW4gdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciBgcGF0Y2gub2JqZWN0YCBob25vdXJzIGBwYXRjaC5URVNUX1BSRUZJWGAKKyAgICBmb3IgY2hvb3Npbmcgd2hpY2ggbWV0aG9kcyB0byB3cmFwLgorCitZb3UgY2FuIGVpdGhlciBjYWxsIGBwYXRjaC5vYmplY3RgIHdpdGggdGhyZWUgYXJndW1lbnRzIG9yIHR3byBhcmd1bWVudHMuIFRoZQordGhyZWUgYXJndW1lbnQgZm9ybSB0YWtlcyB0aGUgb2JqZWN0IHRvIGJlIHBhdGNoZWQsIHRoZSBhdHRyaWJ1dGUgbmFtZSBhbmQgdGhlCitvYmplY3QgdG8gcmVwbGFjZSB0aGUgYXR0cmlidXRlIHdpdGguCisKK1doZW4gY2FsbGluZyB3aXRoIHRoZSB0d28gYXJndW1lbnQgZm9ybSB5b3Ugb21pdCB0aGUgcmVwbGFjZW1lbnQgb2JqZWN0LCBhbmQgYQorbW9jayBpcyBjcmVhdGVkIGZvciB5b3UgYW5kIHBhc3NlZCBpbiBhcyBhbiBleHRyYSBhcmd1bWVudCB0byB0aGUgZGVjb3JhdGVkCitmdW5jdGlvbjoKKworICAgID4+PiBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2NsYXNzX21ldGhvZCcpCisgICAgLi4uIGRlZiB0ZXN0KG1vY2tfbWV0aG9kKToKKyAgICAuLi4gICAgIFNvbWVDbGFzcy5jbGFzc19tZXRob2QoMykKKyAgICAuLi4gICAgIG1vY2tfbWV0aG9kLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgIC4uLgorICAgID4+PiB0ZXN0KCkKKworYHNwZWNgLCBgY3JlYXRlYCBhbmQgdGhlIG90aGVyIGFyZ3VtZW50cyB0byBgcGF0Y2gub2JqZWN0YCBoYXZlIHRoZSBzYW1lCittZWFuaW5nIGFzIHRoZXkgZG8gZm9yIGBwYXRjaGAuCisKKworcGF0Y2guZGljdAorLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IHBhdGNoLmRpY3QoaW5fZGljdCwgdmFsdWVzPSgpLCBjbGVhcj1GYWxzZSwgKiprd2FyZ3MpCisKKyAgICBQYXRjaCBhIGRpY3Rpb25hcnksIG9yIGRpY3Rpb25hcnkgbGlrZSBvYmplY3QsIGFuZCByZXN0b3JlIHRoZSBkaWN0aW9uYXJ5CisgICAgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIGFmdGVyIHRoZSB0ZXN0LgorCisgICAgYGluX2RpY3RgIGNhbiBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtYXBwaW5nIGxpa2UgY29udGFpbmVyLiBJZiBpdCBpcyBhCisgICAgbWFwcGluZyB0aGVuIGl0IG11c3QgYXQgbGVhc3Qgc3VwcG9ydCBnZXR0aW5nLCBzZXR0aW5nIGFuZCBkZWxldGluZyBpdGVtcworICAgIHBsdXMgaXRlcmF0aW5nIG92ZXIga2V5cy4KKworICAgIGBpbl9kaWN0YCBjYW4gYWxzbyBiZSBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBkaWN0aW9uYXJ5LCB3aGljaAorICAgIHdpbGwgdGhlbiBiZSBmZXRjaGVkIGJ5IGltcG9ydGluZyBpdC4KKworICAgIGB2YWx1ZXNgIGNhbiBiZSBhIGRpY3Rpb25hcnkgb2YgdmFsdWVzIHRvIHNldCBpbiB0aGUgZGljdGlvbmFyeS4gYHZhbHVlc2AKKyAgICBjYW4gYWxzbyBiZSBhbiBpdGVyYWJsZSBvZiBgKGtleSwgdmFsdWUpYCBwYWlycy4KKworICAgIElmIGBjbGVhcmAgaXMgVHJ1ZSB0aGVuIHRoZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZCBiZWZvcmUgdGhlIG5ldworICAgIHZhbHVlcyBhcmUgc2V0LgorCisgICAgYHBhdGNoLmRpY3RgIGNhbiBhbHNvIGJlIGNhbGxlZCB3aXRoIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyB0byBzZXQKKyAgICB2YWx1ZXMgaW4gdGhlIGRpY3Rpb25hcnkuCisKKyAgICBgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIGRlY29yYXRvciBvciBjbGFzcworICAgIGRlY29yYXRvci4gV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5kaWN0YCBob25vdXJzCisgICAgYHBhdGNoLlRFU1RfUFJFRklYYCBmb3IgY2hvb3Npbmcgd2hpY2ggbWV0aG9kcyB0byB3cmFwLgorCitgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgdG8gYWRkIG1lbWJlcnMgdG8gYSBkaWN0aW9uYXJ5LCBvciBzaW1wbHkgbGV0IGEgdGVzdAorY2hhbmdlIGEgZGljdGlvbmFyeSwgYW5kIGVuc3VyZSB0aGUgZGljdGlvbmFyeSBpcyByZXN0b3JlZCB3aGVuIHRoZSB0ZXN0CitlbmRzLgorCisgICAgPj4+IGZvbyA9IHt9CisgICAgPj4+IHdpdGggcGF0Y2guZGljdChmb28sIHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30pOgorICAgIC4uLiAgICAgYXNzZXJ0IGZvbyA9PSB7J25ld2tleSc6ICduZXd2YWx1ZSd9CisgICAgLi4uCisgICAgPj4+IGFzc2VydCBmb28gPT0ge30KKworICAgID4+PiBpbXBvcnQgb3MKKyAgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KCdvcy5lbnZpcm9uJywgeyduZXdrZXknOiAnbmV3dmFsdWUnfSk6CisgICAgLi4uICAgICBwcmludCBvcy5lbnZpcm9uWyduZXdrZXknXQorICAgIC4uLgorICAgIG5ld3ZhbHVlCisgICAgPj4+IGFzc2VydCAnbmV3a2V5JyBub3QgaW4gb3MuZW52aXJvbgorCitLZXl3b3JkcyBjYW4gYmUgdXNlZCBpbiB0aGUgYHBhdGNoLmRpY3RgIGNhbGwgdG8gc2V0IHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeToKKworICAgID4+PiBteW1vZHVsZSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG15bW9kdWxlLmZ1bmN0aW9uLnJldHVybl92YWx1ZSA9ICdmaXNoJworICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgbXltb2R1bGU9bXltb2R1bGUpOgorICAgIC4uLiAgICAgaW1wb3J0IG15bW9kdWxlCisgICAgLi4uICAgICBteW1vZHVsZS5mdW5jdGlvbignc29tZScsICdhcmdzJykKKyAgICAuLi4KKyAgICAnZmlzaCcKKworYHBhdGNoLmRpY3RgIGNhbiBiZSB1c2VkIHdpdGggZGljdGlvbmFyeSBsaWtlIG9iamVjdHMgdGhhdCBhcmVuJ3QgYWN0dWFsbHkKK2RpY3Rpb25hcmllcy4gQXQgdGhlIHZlcnkgbWluaW11bSB0aGV5IG11c3Qgc3VwcG9ydCBpdGVtIGdldHRpbmcsIHNldHRpbmcsCitkZWxldGluZyBhbmQgZWl0aGVyIGl0ZXJhdGlvbiBvciBtZW1iZXJzaGlwIHRlc3QuIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlCittYWdpYyBtZXRob2RzIGBfX2dldGl0ZW1fX2AsIGBfX3NldGl0ZW1fX2AsIGBfX2RlbGl0ZW1fX2AgYW5kIGVpdGhlcgorYF9faXRlcl9fYCBvciBgX19jb250YWluc19fYC4KKworICAgID4+PiBjbGFzcyBDb250YWluZXIob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnZhbHVlcyA9IHt9CisgICAgLi4uICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CisgICAgLi4uICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWVzW25hbWVdCisgICAgLi4uICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgIC4uLiAgICAgICAgIHNlbGYudmFsdWVzW25hbWVdID0gdmFsdWUKKyAgICAuLi4gICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBuYW1lKToKKyAgICAuLi4gICAgICAgICBkZWwgc2VsZi52YWx1ZXNbbmFtZV0KKyAgICAuLi4gICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gaXRlcihzZWxmLnZhbHVlcykKKyAgICAuLi4KKyAgICA+Pj4gdGhpbmcgPSBDb250YWluZXIoKQorICAgID4+PiB0aGluZ1snb25lJ10gPSAxCisgICAgPj4+IHdpdGggcGF0Y2guZGljdCh0aGluZywgb25lPTIsIHR3bz0zKToKKyAgICAuLi4gICAgIGFzc2VydCB0aGluZ1snb25lJ10gPT0gMgorICAgIC4uLiAgICAgYXNzZXJ0IHRoaW5nWyd0d28nXSA9PSAzCisgICAgLi4uCisgICAgPj4+IGFzc2VydCB0aGluZ1snb25lJ10gPT0gMQorICAgID4+PiBhc3NlcnQgbGlzdCh0aGluZykgPT0gWydvbmUnXQorCisKK3BhdGNoLm11bHRpcGxlCistLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IHBhdGNoLm11bHRpcGxlKHRhcmdldCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncykKKworICAgIFBlcmZvcm0gbXVsdGlwbGUgcGF0Y2hlcyBpbiBhIHNpbmdsZSBjYWxsLiBJdCB0YWtlcyB0aGUgb2JqZWN0IHRvIGJlCisgICAgcGF0Y2hlZCAoZWl0aGVyIGFzIGFuIG9iamVjdCBvciBhIHN0cmluZyB0byBmZXRjaCB0aGUgb2JqZWN0IGJ5IGltcG9ydGluZykKKyAgICBhbmQga2V5d29yZCBhcmd1bWVudHMgZm9yIHRoZSBwYXRjaGVzOjoKKworICAgICAgICB3aXRoIHBhdGNoLm11bHRpcGxlKHNldHRpbmdzLCBGSVJTVF9QQVRDSD0nb25lJywgU0VDT05EX1BBVENIPSd0d28nKToKKyAgICAgICAgICAgIC4uLgorCisgICAgVXNlIDpkYXRhOmBERUZBVUxUYCBhcyB0aGUgdmFsdWUgaWYgeW91IHdhbnQgYHBhdGNoLm11bHRpcGxlYCB0byBjcmVhdGUKKyAgICBtb2NrcyBmb3IgeW91LiBJbiB0aGlzIGNhc2UgdGhlIGNyZWF0ZWQgbW9ja3MgYXJlIHBhc3NlZCBpbnRvIGEgZGVjb3JhdGVkCisgICAgZnVuY3Rpb24gYnkga2V5d29yZCwgYW5kIGEgZGljdGlvbmFyeSBpcyByZXR1cm5lZCB3aGVuIGBwYXRjaC5tdWx0aXBsZWAgaXMKKyAgICB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCisgICAgYHBhdGNoLm11bHRpcGxlYCBjYW4gYmUgdXNlZCBhcyBhIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIFRoZSBhcmd1bWVudHMgYHNwZWNgLCBgc3BlY19zZXRgLCBgY3JlYXRlYCwgYGF1dG9zcGVjYCBhbmQKKyAgICBgbmV3X2NhbGxhYmxlYCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIGBwYXRjaGAuIFRoZXNlIGFyZ3VtZW50cyB3aWxsCisgICAgYmUgYXBwbGllZCB0byAqYWxsKiBwYXRjaGVzIGRvbmUgYnkgYHBhdGNoLm11bHRpcGxlYC4KKworICAgIFdoZW4gdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciBgcGF0Y2gubXVsdGlwbGVgIGhvbm91cnMgYHBhdGNoLlRFU1RfUFJFRklYYAorICAgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisKK0lmIHlvdSB3YW50IGBwYXRjaC5tdWx0aXBsZWAgdG8gY3JlYXRlIG1vY2tzIGZvciB5b3UsIHRoZW4geW91IGNhbiB1c2UKKzpkYXRhOmBERUZBVUxUYCBhcyB0aGUgdmFsdWUuIElmIHlvdSB1c2UgYHBhdGNoLm11bHRpcGxlYCBhcyBhIGRlY29yYXRvcgordGhlbiB0aGUgY3JlYXRlZCBtb2NrcyBhcmUgcGFzc2VkIGludG8gdGhlIGRlY29yYXRlZCBmdW5jdGlvbiBieSBrZXl3b3JkLgorCisgICAgPj4+IHRoaW5nID0gb2JqZWN0KCkKKyAgICA+Pj4gb3RoZXIgPSBvYmplY3QoKQorCisgICAgPj4+IEBwYXRjaC5tdWx0aXBsZSgnX19tYWluX18nLCB0aGluZz1ERUZBVUxULCBvdGhlcj1ERUZBVUxUKQorICAgIC4uLiBkZWYgdGVzdF9mdW5jdGlvbih0aGluZywgb3RoZXIpOgorICAgIC4uLiAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodGhpbmcsIE1hZ2ljTW9jaykKKyAgICAuLi4gICAgIGFzc2VydCBpc2luc3RhbmNlKG90aGVyLCBNYWdpY01vY2spCisgICAgLi4uCisgICAgPj4+IHRlc3RfZnVuY3Rpb24oKQorCitgcGF0Y2gubXVsdGlwbGVgIGNhbiBiZSBuZXN0ZWQgd2l0aCBvdGhlciBgcGF0Y2hgIGRlY29yYXRvcnMsIGJ1dCBwdXQgYXJndW1lbnRzCitwYXNzZWQgYnkga2V5d29yZCAqYWZ0ZXIqIGFueSBvZiB0aGUgc3RhbmRhcmQgYXJndW1lbnRzIGNyZWF0ZWQgYnkgYHBhdGNoYDoKKworICAgID4+PiBAcGF0Y2goJ3N5cy5leGl0JykKKyAgICAuLi4gQHBhdGNoLm11bHRpcGxlKCdfX21haW5fXycsIHRoaW5nPURFRkFVTFQsIG90aGVyPURFRkFVTFQpCisgICAgLi4uIGRlZiB0ZXN0X2Z1bmN0aW9uKG1vY2tfZXhpdCwgb3RoZXIsIHRoaW5nKToKKyAgICAuLi4gICAgIGFzc2VydCAnb3RoZXInIGluIHJlcHIob3RoZXIpCisgICAgLi4uICAgICBhc3NlcnQgJ3RoaW5nJyBpbiByZXByKHRoaW5nKQorICAgIC4uLiAgICAgYXNzZXJ0ICdleGl0JyBpbiByZXByKG1vY2tfZXhpdCkKKyAgICAuLi4KKyAgICA+Pj4gdGVzdF9mdW5jdGlvbigpCisKK0lmIGBwYXRjaC5tdWx0aXBsZWAgaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZQorY29udGV4dCBtYW5nZXIgaXMgYSBkaWN0aW9uYXJ5IHdoZXJlIGNyZWF0ZWQgbW9ja3MgYXJlIGtleWVkIGJ5IG5hbWU6CisKKyAgICA+Pj4gd2l0aCBwYXRjaC5tdWx0aXBsZSgnX19tYWluX18nLCB0aGluZz1ERUZBVUxULCBvdGhlcj1ERUZBVUxUKSBhcyB2YWx1ZXM6CisgICAgLi4uICAgICBhc3NlcnQgJ290aGVyJyBpbiByZXByKHZhbHVlc1snb3RoZXInXSkKKyAgICAuLi4gICAgIGFzc2VydCAndGhpbmcnIGluIHJlcHIodmFsdWVzWyd0aGluZyddKQorICAgIC4uLiAgICAgYXNzZXJ0IHZhbHVlc1sndGhpbmcnXSBpcyB0aGluZworICAgIC4uLiAgICAgYXNzZXJ0IHZhbHVlc1snb3RoZXInXSBpcyBvdGhlcgorICAgIC4uLgorCisKKy4uIF9zdGFydC1hbmQtc3RvcDoKKworcGF0Y2ggbWV0aG9kczogc3RhcnQgYW5kIHN0b3AKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCB0aGUgcGF0Y2hlcnMgaGF2ZSBgc3RhcnRgIGFuZCBgc3RvcGAgbWV0aG9kcy4gVGhlc2UgbWFrZSBpdCBzaW1wbGVyIHRvIGRvCitwYXRjaGluZyBpbiBgc2V0VXBgIG1ldGhvZHMgb3Igd2hlcmUgeW91IHdhbnQgdG8gZG8gbXVsdGlwbGUgcGF0Y2hlcyB3aXRob3V0CituZXN0aW5nIGRlY29yYXRvcnMgb3Igd2l0aCBzdGF0ZW1lbnRzLgorCitUbyB1c2UgdGhlbSBjYWxsIGBwYXRjaGAsIGBwYXRjaC5vYmplY3RgIG9yIGBwYXRjaC5kaWN0YCBhcyBub3JtYWwgYW5kIGtlZXAgYQorcmVmZXJlbmNlIHRvIHRoZSByZXR1cm5lZCBgcGF0Y2hlcmAgb2JqZWN0LiBZb3UgY2FuIHRoZW4gY2FsbCBgc3RhcnRgIHRvIHB1dAordGhlIHBhdGNoIGluIHBsYWNlIGFuZCBgc3RvcGAgdG8gdW5kbyBpdC4KKworSWYgeW91IGFyZSB1c2luZyBgcGF0Y2hgIHRvIGNyZWF0ZSBhIG1vY2sgZm9yIHlvdSB0aGVuIGl0IHdpbGwgYmUgcmV0dXJuZWQgYnkKK3RoZSBjYWxsIHRvIGBwYXRjaGVyLnN0YXJ0YC4KKworICAgID4+PiBwYXRjaGVyID0gcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZScpCisgICAgPj4+IGZyb20gcGFja2FnZSBpbXBvcnQgbW9kdWxlCisgICAgPj4+IG9yaWdpbmFsID0gbW9kdWxlLkNsYXNzTmFtZQorICAgID4+PiBuZXdfbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgID4+PiBhc3NlcnQgbW9kdWxlLkNsYXNzTmFtZSBpcyBub3Qgb3JpZ2luYWwKKyAgICA+Pj4gYXNzZXJ0IG1vZHVsZS5DbGFzc05hbWUgaXMgbmV3X21vY2sKKyAgICA+Pj4gcGF0Y2hlci5zdG9wKCkKKyAgICA+Pj4gYXNzZXJ0IG1vZHVsZS5DbGFzc05hbWUgaXMgb3JpZ2luYWwKKyAgICA+Pj4gYXNzZXJ0IG1vZHVsZS5DbGFzc05hbWUgaXMgbm90IG5ld19tb2NrCisKKworQSB0eXBpY2FsIHVzZSBjYXNlIGZvciB0aGlzIG1pZ2h0IGJlIGZvciBkb2luZyBtdWx0aXBsZSBwYXRjaGVzIGluIHRoZSBgc2V0VXBgCittZXRob2Qgb2YgYSBgVGVzdENhc2VgOgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5wYXRjaGVyMSA9IHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5DbGFzczEnKQorICAgIC4uLiAgICAgICAgIHNlbGYucGF0Y2hlcjIgPSBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3MyJykKKyAgICAuLi4gICAgICAgICBzZWxmLk1vY2tDbGFzczEgPSBzZWxmLnBhdGNoZXIxLnN0YXJ0KCkKKyAgICAuLi4gICAgICAgICBzZWxmLk1vY2tDbGFzczIgPSBzZWxmLnBhdGNoZXIyLnN0YXJ0KCkKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnBhdGNoZXIxLnN0b3AoKQorICAgIC4uLiAgICAgICAgIHNlbGYucGF0Y2hlcjIuc3RvcCgpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9zb21ldGhpbmcoc2VsZik6CisgICAgLi4uICAgICAgICAgYXNzZXJ0IHBhY2thZ2UubW9kdWxlLkNsYXNzMSBpcyBzZWxmLk1vY2tDbGFzczEKKyAgICAuLi4gICAgICAgICBhc3NlcnQgcGFja2FnZS5tb2R1bGUuQ2xhc3MyIGlzIHNlbGYuTW9ja0NsYXNzMgorICAgIC4uLgorICAgID4+PiBNeVRlc3QoJ3Rlc3Rfc29tZXRoaW5nJykucnVuKCkKKworLi4gY2F1dGlvbjo6CisKKyAgICBJZiB5b3UgdXNlIHRoaXMgdGVjaG5pcXVlIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBwYXRjaGluZyBpcyAidW5kb25lIiBieQorICAgIGNhbGxpbmcgYHN0b3BgLiBUaGlzIGNhbiBiZSBmaWRkbGllciB0aGFuIHlvdSBtaWdodCB0aGluaywgYmVjYXVzZSBpZiBhbgorICAgIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gdGhlIGBgc2V0VXBgYCB0aGVuIGBgdGVhckRvd25gYCBpcyBub3QgY2FsbGVkLgorICAgIDptZXRoOmB1bml0dGVzdC5UZXN0Q2FzZS5hZGRDbGVhbnVwYCBtYWtlcyB0aGlzIGVhc2llcjoKKworICAgICAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAgICAgLi4uICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIC4uLiAgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3MnKQorICAgICAgICAuLi4gICAgICAgICBzZWxmLk1vY2tDbGFzcyA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICAuLi4gICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorICAgICAgICAuLi4KKyAgICAgICAgLi4uICAgICBkZWYgdGVzdF9zb21ldGhpbmcoc2VsZik6CisgICAgICAgIC4uLiAgICAgICAgIGFzc2VydCBwYWNrYWdlLm1vZHVsZS5DbGFzcyBpcyBzZWxmLk1vY2tDbGFzcworICAgICAgICAuLi4KKworICAgIEFzIGFuIGFkZGVkIGJvbnVzIHlvdSBubyBsb25nZXIgbmVlZCB0byBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBgcGF0Y2hlcmAKKyAgICBvYmplY3QuCisKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gc3RvcCBhbGwgcGF0Y2hlcyB3aGljaCBoYXZlIGJlZW4gc3RhcnRlZCBieSB1c2luZworYHBhdGNoLnN0b3BhbGxgLgorCisuLiBmdW5jdGlvbjo6IHBhdGNoLnN0b3BhbGwKKworICAgIFN0b3AgYWxsIGFjdGl2ZSBwYXRjaGVzLiBPbmx5IHN0b3BzIHBhdGNoZXMgc3RhcnRlZCB3aXRoIGBzdGFydGAuCisKKworVEVTVF9QUkVGSVgKKy0tLS0tLS0tLS0tCisKK0FsbCBvZiB0aGUgcGF0Y2hlcnMgY2FuIGJlIHVzZWQgYXMgY2xhc3MgZGVjb3JhdG9ycy4gV2hlbiB1c2VkIGluIHRoaXMgd2F5Cit0aGV5IHdyYXAgZXZlcnkgdGVzdCBtZXRob2Qgb24gdGhlIGNsYXNzLiBUaGUgcGF0Y2hlcnMgcmVjb2duaXNlIG1ldGhvZHMgdGhhdAorc3RhcnQgd2l0aCBgdGVzdGAgYXMgYmVpbmcgdGVzdCBtZXRob2RzLiBUaGlzIGlzIHRoZSBzYW1lIHdheSB0aGF0IHRoZQorOmNsYXNzOmB1bml0dGVzdC5UZXN0TG9hZGVyYCBmaW5kcyB0ZXN0IG1ldGhvZHMgYnkgZGVmYXVsdC4KKworSXQgaXMgcG9zc2libGUgdGhhdCB5b3Ugd2FudCB0byB1c2UgYSBkaWZmZXJlbnQgcHJlZml4IGZvciB5b3VyIHRlc3RzLiBZb3UgY2FuCitpbmZvcm0gdGhlIHBhdGNoZXJzIG9mIHRoZSBkaWZmZXJlbnQgcHJlZml4IGJ5IHNldHRpbmcgYHBhdGNoLlRFU1RfUFJFRklYYDoKKworICAgID4+PiBwYXRjaC5URVNUX1BSRUZJWCA9ICdmb28nCisgICAgPj4+IHZhbHVlID0gMworICAgID4+PgorICAgID4+PiBAcGF0Y2goJ19fbWFpbl9fLnZhbHVlJywgJ25vdCB0aHJlZScpCisgICAgLi4uIGNsYXNzIFRoaW5nKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgZm9vX29uZShzZWxmKToKKyAgICAuLi4gICAgICAgICBwcmludCB2YWx1ZQorICAgIC4uLiAgICAgZGVmIGZvb190d28oc2VsZik6CisgICAgLi4uICAgICAgICAgcHJpbnQgdmFsdWUKKyAgICAuLi4KKyAgICA+Pj4KKyAgICA+Pj4gVGhpbmcoKS5mb29fb25lKCkKKyAgICBub3QgdGhyZWUKKyAgICA+Pj4gVGhpbmcoKS5mb29fdHdvKCkKKyAgICBub3QgdGhyZWUKKyAgICA+Pj4gdmFsdWUKKyAgICAzCisKKworTmVzdGluZyBQYXRjaCBEZWNvcmF0b3JzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgeW91IHdhbnQgdG8gcGVyZm9ybSBtdWx0aXBsZSBwYXRjaGVzIHRoZW4geW91IGNhbiBzaW1wbHkgc3RhY2sgdXAgdGhlCitkZWNvcmF0b3JzLgorCitZb3UgY2FuIHN0YWNrIHVwIG11bHRpcGxlIHBhdGNoIGRlY29yYXRvcnMgdXNpbmcgdGhpcyBwYXR0ZXJuOgorCisgICAgPj4+IEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnY2xhc3NfbWV0aG9kJykKKyAgICAuLi4gQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdzdGF0aWNfbWV0aG9kJykKKyAgICAuLi4gZGVmIHRlc3QobW9jazEsIG1vY2syKToKKyAgICAuLi4gICAgIGFzc2VydCBTb21lQ2xhc3Muc3RhdGljX21ldGhvZCBpcyBtb2NrMQorICAgIC4uLiAgICAgYXNzZXJ0IFNvbWVDbGFzcy5jbGFzc19tZXRob2QgaXMgbW9jazIKKyAgICAuLi4gICAgIFNvbWVDbGFzcy5zdGF0aWNfbWV0aG9kKCdmb28nKQorICAgIC4uLiAgICAgU29tZUNsYXNzLmNsYXNzX21ldGhvZCgnYmFyJykKKyAgICAuLi4gICAgIHJldHVybiBtb2NrMSwgbW9jazIKKyAgICAuLi4KKyAgICA+Pj4gbW9jazEsIG1vY2syID0gdGVzdCgpCisgICAgPj4+IG1vY2sxLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nKQorICAgID4+PiBtb2NrMi5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnYmFyJykKKworCitOb3RlIHRoYXQgdGhlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgZnJvbSB0aGUgYm90dG9tIHVwd2FyZHMuIFRoaXMgaXMgdGhlCitzdGFuZGFyZCB3YXkgdGhhdCBQeXRob24gYXBwbGllcyBkZWNvcmF0b3JzLiBUaGUgb3JkZXIgb2YgdGhlIGNyZWF0ZWQgbW9ja3MKK3Bhc3NlZCBpbnRvIHlvdXIgdGVzdCBmdW5jdGlvbiBtYXRjaGVzIHRoaXMgb3JkZXIuCisKKworLi4gX3doZXJlLXRvLXBhdGNoOgorCitXaGVyZSB0byBwYXRjaAorLS0tLS0tLS0tLS0tLS0KKworYHBhdGNoYCB3b3JrcyBieSAodGVtcG9yYXJpbHkpIGNoYW5naW5nIHRoZSBvYmplY3QgdGhhdCBhICpuYW1lKiBwb2ludHMgdG8gd2l0aAorYW5vdGhlciBvbmUuIFRoZXJlIGNhbiBiZSBtYW55IG5hbWVzIHBvaW50aW5nIHRvIGFueSBpbmRpdmlkdWFsIG9iamVjdCwgc28KK2ZvciBwYXRjaGluZyB0byB3b3JrIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHlvdSBwYXRjaCB0aGUgbmFtZSB1c2VkIGJ5IHRoZSBzeXN0ZW0KK3VuZGVyIHRlc3QuCisKK1RoZSBiYXNpYyBwcmluY2lwbGUgaXMgdGhhdCB5b3UgcGF0Y2ggd2hlcmUgYW4gb2JqZWN0IGlzICpsb29rZWQgdXAqLCB3aGljaAoraXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIHBsYWNlIGFzIHdoZXJlIGl0IGlzIGRlZmluZWQuIEEgY291cGxlIG9mCitleGFtcGxlcyB3aWxsIGhlbHAgdG8gY2xhcmlmeSB0aGlzLgorCitJbWFnaW5lIHdlIGhhdmUgYSBwcm9qZWN0IHRoYXQgd2Ugd2FudCB0byB0ZXN0IHdpdGggdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6OgorCisgICAgYS5weQorICAgICAgICAtPiBEZWZpbmVzIFNvbWVDbGFzcworCisgICAgYi5weQorICAgICAgICAtPiBmcm9tIGEgaW1wb3J0IFNvbWVDbGFzcworICAgICAgICAtPiBzb21lX2Z1bmN0aW9uIGluc3RhbnRpYXRlcyBTb21lQ2xhc3MKKworTm93IHdlIHdhbnQgdG8gdGVzdCBgc29tZV9mdW5jdGlvbmAgYnV0IHdlIHdhbnQgdG8gbW9jayBvdXQgYFNvbWVDbGFzc2AgdXNpbmcKK2BwYXRjaGAuIFRoZSBwcm9ibGVtIGlzIHRoYXQgd2hlbiB3ZSBpbXBvcnQgbW9kdWxlIGIsIHdoaWNoIHdlIHdpbGwgaGF2ZSB0bworZG8gdGhlbiBpdCBpbXBvcnRzIGBTb21lQ2xhc3NgIGZyb20gbW9kdWxlIGEuIElmIHdlIHVzZSBgcGF0Y2hgIHRvIG1vY2sgb3V0CitgYS5Tb21lQ2xhc3NgIHRoZW4gaXQgd2lsbCBoYXZlIG5vIGVmZmVjdCBvbiBvdXIgdGVzdDsgbW9kdWxlIGIgYWxyZWFkeSBoYXMgYQorcmVmZXJlbmNlIHRvIHRoZSAqcmVhbCogYFNvbWVDbGFzc2AgYW5kIGl0IGxvb2tzIGxpa2Ugb3VyIHBhdGNoaW5nIGhhZCBubworZWZmZWN0LgorCitUaGUga2V5IGlzIHRvIHBhdGNoIG91dCBgU29tZUNsYXNzYCB3aGVyZSBpdCBpcyB1c2VkIChvciB3aGVyZSBpdCBpcyBsb29rZWQgdXAKKykuIEluIHRoaXMgY2FzZSBgc29tZV9mdW5jdGlvbmAgd2lsbCBhY3R1YWxseSBsb29rIHVwIGBTb21lQ2xhc3NgIGluIG1vZHVsZSBiLAord2hlcmUgd2UgaGF2ZSBpbXBvcnRlZCBpdC4gVGhlIHBhdGNoaW5nIHNob3VsZCBsb29rIGxpa2U6OgorCisgICAgQHBhdGNoKCdiLlNvbWVDbGFzcycpCisKK0hvd2V2ZXIsIGNvbnNpZGVyIHRoZSBhbHRlcm5hdGl2ZSBzY2VuYXJpbyB3aGVyZSBpbnN0ZWFkIG9mIGBmcm9tIGEgaW1wb3J0CitTb21lQ2xhc3NgIG1vZHVsZSBiIGRvZXMgYGltcG9ydCBhYCBhbmQgYHNvbWVfZnVuY3Rpb25gIHVzZXMgYGEuU29tZUNsYXNzYC4gQm90aAorb2YgdGhlc2UgaW1wb3J0IGZvcm1zIGFyZSBjb21tb24uIEluIHRoaXMgY2FzZSB0aGUgY2xhc3Mgd2Ugd2FudCB0byBwYXRjaCBpcworYmVpbmcgbG9va2VkIHVwIG9uIHRoZSBhIG1vZHVsZSBhbmQgc28gd2UgaGF2ZSB0byBwYXRjaCBgYS5Tb21lQ2xhc3NgIGluc3RlYWQ6OgorCisgICAgQHBhdGNoKCdhLlNvbWVDbGFzcycpCisKKworUGF0Y2hpbmcgRGVzY3JpcHRvcnMgYW5kIFByb3h5IE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JvdGggcGF0Y2hfIGFuZCBwYXRjaC5vYmplY3RfIGNvcnJlY3RseSBwYXRjaCBhbmQgcmVzdG9yZSBkZXNjcmlwdG9yczogY2xhc3MKK21ldGhvZHMsIHN0YXRpYyBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzLiBZb3Ugc2hvdWxkIHBhdGNoIHRoZXNlIG9uIHRoZSAqY2xhc3MqCityYXRoZXIgdGhhbiBhbiBpbnN0YW5jZS4gVGhleSBhbHNvIHdvcmsgd2l0aCAqc29tZSogb2JqZWN0cwordGhhdCBwcm94eSBhdHRyaWJ1dGUgYWNjZXNzLCBsaWtlIHRoZSBgZGphbmdvIHNldHR0aW5ncyBvYmplY3QKKzxodHRwOi8vd3d3LnZvaWRzcGFjZS5vcmcudWsvcHl0aG9uL3dlYmxvZy9hcmNoX2Q3XzIwMTBfMTJfMDQuc2h0bWwjZTExOTg+YF8uCisKKworTWFnaWNNb2NrIGFuZCBtYWdpYyBtZXRob2Qgc3VwcG9ydAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBfbWFnaWMtbWV0aG9kczoKKworTW9ja2luZyBNYWdpYyBNZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOmNsYXNzOmBNb2NrYCBzdXBwb3J0cyBtb2NraW5nIHRoZSBQeXRob24gcHJvdG9jb2wgbWV0aG9kcywgYWxzbyBrbm93biBhcworIm1hZ2ljIG1ldGhvZHMiLiBUaGlzIGFsbG93cyBtb2NrIG9iamVjdHMgdG8gcmVwbGFjZSBjb250YWluZXJzIG9yIG90aGVyCitvYmplY3RzIHRoYXQgaW1wbGVtZW50IFB5dGhvbiBwcm90b2NvbHMuCisKK0JlY2F1c2UgbWFnaWMgbWV0aG9kcyBhcmUgbG9va2VkIHVwIGRpZmZlcmVudGx5IGZyb20gbm9ybWFsIG1ldGhvZHMgWyNdXywgdGhpcworc3VwcG9ydCBoYXMgYmVlbiBzcGVjaWFsbHkgaW1wbGVtZW50ZWQuIFRoaXMgbWVhbnMgdGhhdCBvbmx5IHNwZWNpZmljIG1hZ2ljCittZXRob2RzIGFyZSBzdXBwb3J0ZWQuIFRoZSBzdXBwb3J0ZWQgbGlzdCBpbmNsdWRlcyAqYWxtb3N0KiBhbGwgb2YgdGhlbS4gSWYKK3RoZXJlIGFyZSBhbnkgbWlzc2luZyB0aGF0IHlvdSBuZWVkIHBsZWFzZSBsZXQgdXMga25vdy4KKworWW91IG1vY2sgbWFnaWMgbWV0aG9kcyBieSBzZXR0aW5nIHRoZSBtZXRob2QgeW91IGFyZSBpbnRlcmVzdGVkIGluIHRvIGEgZnVuY3Rpb24KK29yIGEgbW9jayBpbnN0YW5jZS4gSWYgeW91IGFyZSB1c2luZyBhIGZ1bmN0aW9uIHRoZW4gaXQgKm11c3QqIHRha2UgYGBzZWxmYGAgYXMKK3RoZSBmaXJzdCBhcmd1bWVudCBbI11fLgorCisgICA+Pj4gZGVmIF9fc3RyX18oc2VsZik6CisgICAuLi4gICAgIHJldHVybiAnZm9vYmxlJworICAgLi4uCisgICA+Pj4gbW9jayA9IE1vY2soKQorICAgPj4+IG1vY2suX19zdHJfXyA9IF9fc3RyX18KKyAgID4+PiBzdHIobW9jaykKKyAgICdmb29ibGUnCisKKyAgID4+PiBtb2NrID0gTW9jaygpCisgICA+Pj4gbW9jay5fX3N0cl9fID0gTW9jaygpCisgICA+Pj4gbW9jay5fX3N0cl9fLnJldHVybl92YWx1ZSA9ICdmb29ibGUnCisgICA+Pj4gc3RyKG1vY2spCisgICAnZm9vYmxlJworCisgICA+Pj4gbW9jayA9IE1vY2soKQorICAgPj4+IG1vY2suX19pdGVyX18gPSBNb2NrKHJldHVybl92YWx1ZT1pdGVyKFtdKSkKKyAgID4+PiBsaXN0KG1vY2spCisgICBbXQorCitPbmUgdXNlIGNhc2UgZm9yIHRoaXMgaXMgZm9yIG1vY2tpbmcgb2JqZWN0cyB1c2VkIGFzIGNvbnRleHQgbWFuYWdlcnMgaW4gYQorYHdpdGhgIHN0YXRlbWVudDoKKworICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgID4+PiBtb2NrLl9fZW50ZXJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPSdmb28nKQorICAgPj4+IG1vY2suX19leGl0X18gPSBNb2NrKHJldHVybl92YWx1ZT1GYWxzZSkKKyAgID4+PiB3aXRoIG1vY2sgYXMgbToKKyAgIC4uLiAgICAgYXNzZXJ0IG0gPT0gJ2ZvbycKKyAgIC4uLgorICAgPj4+IG1vY2suX19lbnRlcl9fLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICA+Pj4gbW9jay5fX2V4aXRfXy5hc3NlcnRfY2FsbGVkX3dpdGgoTm9uZSwgTm9uZSwgTm9uZSkKKworQ2FsbHMgdG8gbWFnaWMgbWV0aG9kcyBkbyBub3QgYXBwZWFyIGluIDphdHRyOmB+TW9jay5tZXRob2RfY2FsbHNgLCBidXQgdGhleQorYXJlIHJlY29yZGVkIGluIDphdHRyOmB+TW9jay5tb2NrX2NhbGxzYC4KKworLi4gbm90ZTo6CisKKyAgIElmIHlvdSB1c2UgdGhlIGBzcGVjYCBrZXl3b3JkIGFyZ3VtZW50IHRvIGNyZWF0ZSBhIG1vY2sgdGhlbiBhdHRlbXB0aW5nIHRvCisgICBzZXQgYSBtYWdpYyBtZXRob2QgdGhhdCBpc24ndCBpbiB0aGUgc3BlYyB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKK1RoZSBmdWxsIGxpc3Qgb2Ygc3VwcG9ydGVkIG1hZ2ljIG1ldGhvZHMgaXM6CisKKyogYGBfX2hhc2hfX2BgLCBgYF9fc2l6ZW9mX19gYCwgYGBfX3JlcHJfX2BgIGFuZCBgYF9fc3RyX19gYAorKiBgYF9fZGlyX19gYCwgYGBfX2Zvcm1hdF9fYGAgYW5kIGBgX19zdWJjbGFzc2VzX19gYAorKiBgYF9fZmxvb3JfX2BgLCBgYF9fdHJ1bmNfX2BgIGFuZCBgYF9fY2VpbF9fYGAKKyogQ29tcGFyaXNvbnM6IGBgX19jbXBfX2BgLCBgYF9fbHRfX2BgLCBgYF9fZ3RfX2BgLCBgYF9fbGVfX2BgLCBgYF9fZ2VfX2BgLAorICBgYF9fZXFfX2BgIGFuZCBgYF9fbmVfX2BgCisqIENvbnRhaW5lciBtZXRob2RzOiBgYF9fZ2V0aXRlbV9fYGAsIGBgX19zZXRpdGVtX19gYCwgYGBfX2RlbGl0ZW1fX2BgLAorICBgYF9fY29udGFpbnNfX2BgLCBgYF9fbGVuX19gYCwgYGBfX2l0ZXJfX2BgLCBgYF9fZ2V0c2xpY2VfX2BgLAorICBgYF9fc2V0c2xpY2VfX2BgLCBgYF9fcmV2ZXJzZWRfX2BgIGFuZCBgYF9fbWlzc2luZ19fYGAKKyogQ29udGV4dCBtYW5hZ2VyOiBgYF9fZW50ZXJfX2BgIGFuZCBgYF9fZXhpdF9fYGAKKyogVW5hcnkgbnVtZXJpYyBtZXRob2RzOiBgYF9fbmVnX19gYCwgYGBfX3Bvc19fYGAgYW5kIGBgX19pbnZlcnRfX2BgCisqIFRoZSBudW1lcmljIG1ldGhvZHMgKGluY2x1ZGluZyByaWdodCBoYW5kIGFuZCBpbi1wbGFjZSB2YXJpYW50cyk6CisgIGBgX19hZGRfX2BgLCBgYF9fc3ViX19gYCwgYGBfX211bF9fYGAsIGBgX19kaXZfX2BgLAorICBgYF9fZmxvb3JkaXZfX2BgLCBgYF9fbW9kX19gYCwgYGBfX2Rpdm1vZF9fYGAsIGBgX19sc2hpZnRfX2BgLAorICBgYF9fcnNoaWZ0X19gYCwgYGBfX2FuZF9fYGAsIGBgX194b3JfX2BgLCBgYF9fb3JfX2BgLCBhbmQgYGBfX3Bvd19fYGAKKyogTnVtZXJpYyBjb252ZXJzaW9uIG1ldGhvZHM6IGBgX19jb21wbGV4X19gYCwgYGBfX2ludF9fYGAsIGBgX19mbG9hdF9fYGAsCisgIGBgX19pbmRleF9fYGAgYW5kIGBgX19jb2VyY2VfX2BgCisqIERlc2NyaXB0b3IgbWV0aG9kczogYGBfX2dldF9fYGAsIGBgX19zZXRfX2BgIGFuZCBgYF9fZGVsZXRlX19gYAorKiBQaWNrbGluZzogYGBfX3JlZHVjZV9fYGAsIGBgX19yZWR1Y2VfZXhfX2BgLCBgYF9fZ2V0aW5pdGFyZ3NfX2BgLAorICBgYF9fZ2V0bmV3YXJnc19fYGAsIGBgX19nZXRzdGF0ZV9fYGAgYW5kIGBgX19zZXRzdGF0ZV9fYGAKKworCitUaGUgZm9sbG93aW5nIG1ldGhvZHMgZXhpc3QgYnV0IGFyZSAqbm90KiBzdXBwb3J0ZWQgYXMgdGhleSBhcmUgZWl0aGVyIGluIHVzZQorYnkgbW9jaywgY2FuJ3QgYmUgc2V0IGR5bmFtaWNhbGx5LCBvciBjYW4gY2F1c2UgcHJvYmxlbXM6CisKKyogYGBfX2dldGF0dHJfX2BgLCBgYF9fc2V0YXR0cl9fYGAsIGBgX19pbml0X19gYCBhbmQgYGBfX25ld19fYGAKKyogYGBfX3ByZXBhcmVfX2BgLCBgYF9faW5zdGFuY2VjaGVja19fYGAsIGBgX19zdWJjbGFzc2NoZWNrX19gYCwgYGBfX2RlbF9fYGAKKworCisKK01hZ2ljIE1vY2sKKy0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHR3byBgTWFnaWNNb2NrYCB2YXJpYW50czogYE1hZ2ljTW9ja2AgYW5kIGBOb25DYWxsYWJsZU1hZ2ljTW9ja2AuCisKKworLi4gY2xhc3M6OiBNYWdpY01vY2soKmFyZ3MsICoqa3cpCisKKyAgIGBgTWFnaWNNb2NrYGAgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YE1vY2tgIHdpdGggZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMKKyAgIG9mIG1vc3Qgb2YgdGhlIG1hZ2ljIG1ldGhvZHMuIFlvdSBjYW4gdXNlIGBgTWFnaWNNb2NrYGAgd2l0aG91dCBoYXZpbmcgdG8KKyAgIGNvbmZpZ3VyZSB0aGUgbWFnaWMgbWV0aG9kcyB5b3Vyc2VsZi4KKworICAgVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciA6Y2xhc3M6YE1vY2tgLgorCisgICBJZiB5b3UgdXNlIHRoZSBgc3BlY2Agb3IgYHNwZWNfc2V0YCBhcmd1bWVudHMgdGhlbiAqb25seSogbWFnaWMgbWV0aG9kcworICAgdGhhdCBleGlzdCBpbiB0aGUgc3BlYyB3aWxsIGJlIGNyZWF0ZWQuCisKKworLi4gY2xhc3M6OiBOb25DYWxsYWJsZU1hZ2ljTW9jaygqYXJncywgKiprdykKKworICAgIEEgbm9uLWNhbGxhYmxlIHZlcnNpb24gb2YgYE1hZ2ljTW9ja2AuCisKKyAgICBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCisgICAgOmNsYXNzOmBNYWdpY01vY2tgLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYHJldHVybl92YWx1ZWAgYW5kCisgICAgYHNpZGVfZWZmZWN0YCB3aGljaCBoYXZlIG5vIG1lYW5pbmcgb24gYSBub24tY2FsbGFibGUgbW9jay4KKworVGhlIG1hZ2ljIG1ldGhvZHMgYXJlIHNldHVwIHdpdGggYE1hZ2ljTW9ja2Agb2JqZWN0cywgc28geW91IGNhbiBjb25maWd1cmUgdGhlbQorYW5kIHVzZSB0aGVtIGluIHRoZSB1c3VhbCB3YXk6CisKKyAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgID4+PiBtb2NrWzNdID0gJ2Zpc2gnCisgICA+Pj4gbW9jay5fX3NldGl0ZW1fXy5hc3NlcnRfY2FsbGVkX3dpdGgoMywgJ2Zpc2gnKQorICAgPj4+IG1vY2suX19nZXRpdGVtX18ucmV0dXJuX3ZhbHVlID0gJ3Jlc3VsdCcKKyAgID4+PiBtb2NrWzJdCisgICAncmVzdWx0JworCitCeSBkZWZhdWx0IG1hbnkgb2YgdGhlIHByb3RvY29sIG1ldGhvZHMgYXJlIHJlcXVpcmVkIHRvIHJldHVybiBvYmplY3RzIG9mIGEKK3NwZWNpZmljIHR5cGUuIFRoZXNlIG1ldGhvZHMgYXJlIHByZWNvbmZpZ3VyZWQgd2l0aCBhIGRlZmF1bHQgcmV0dXJuIHZhbHVlLCBzbwordGhhdCB0aGV5IGNhbiBiZSB1c2VkIHdpdGhvdXQgeW91IGhhdmluZyB0byBkbyBhbnl0aGluZyBpZiB5b3UgYXJlbid0IGludGVyZXN0ZWQKK2luIHRoZSByZXR1cm4gdmFsdWUuIFlvdSBjYW4gc3RpbGwgKnNldCogdGhlIHJldHVybiB2YWx1ZSBtYW51YWxseSBpZiB5b3Ugd2FudAordG8gY2hhbmdlIHRoZSBkZWZhdWx0LgorCitNZXRob2RzIGFuZCB0aGVpciBkZWZhdWx0czoKKworKiBgYF9fbHRfX2BgOiBOb3RJbXBsZW1lbnRlZAorKiBgYF9fZ3RfX2BgOiBOb3RJbXBsZW1lbnRlZAorKiBgYF9fbGVfX2BgOiBOb3RJbXBsZW1lbnRlZAorKiBgYF9fZ2VfX2BgOiBOb3RJbXBsZW1lbnRlZAorKiBgYF9faW50X19gYCA6IDEKKyogYGBfX2NvbnRhaW5zX19gYCA6IEZhbHNlCisqIGBgX19sZW5fX2BgIDogMQorKiBgYF9faXRlcl9fYGAgOiBpdGVyKFtdKQorKiBgYF9fZXhpdF9fYGAgOiBGYWxzZQorKiBgYF9fY29tcGxleF9fYGAgOiAxagorKiBgYF9fZmxvYXRfX2BgIDogMS4wCisqIGBgX19ib29sX19gYCA6IFRydWUKKyogYGBfX2luZGV4X19gYCA6IDEKKyogYGBfX2hhc2hfX2BgIDogZGVmYXVsdCBoYXNoIGZvciB0aGUgbW9jaworKiBgYF9fc3RyX19gYCA6IGRlZmF1bHQgc3RyIGZvciB0aGUgbW9jaworKiBgYF9fc2l6ZW9mX19gYDogZGVmYXVsdCBzaXplb2YgZm9yIHRoZSBtb2NrCisKK0ZvciBleGFtcGxlOgorCisgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICA+Pj4gaW50KG1vY2spCisgICAxCisgICA+Pj4gbGVuKG1vY2spCisgICAwCisgICA+Pj4gbGlzdChtb2NrKQorICAgW10KKyAgID4+PiBvYmplY3QoKSBpbiBtb2NrCisgICBGYWxzZQorCitUaGUgdHdvIGVxdWFsaXR5IG1ldGhvZCwgYF9fZXFfX2AgYW5kIGBfX25lX19gLCBhcmUgc3BlY2lhbC4KK1RoZXkgZG8gdGhlIGRlZmF1bHQgZXF1YWxpdHkgY29tcGFyaXNvbiBvbiBpZGVudGl0eSwgdXNpbmcgYSBzaWRlCitlZmZlY3QsIHVubGVzcyB5b3UgY2hhbmdlIHRoZWlyIHJldHVybiB2YWx1ZSB0byByZXR1cm4gc29tZXRoaW5nIGVsc2U6CisKKyAgID4+PiBNYWdpY01vY2soKSA9PSAzCisgICBGYWxzZQorICAgPj4+IE1hZ2ljTW9jaygpICE9IDMKKyAgIFRydWUKKyAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgID4+PiBtb2NrLl9fZXFfXy5yZXR1cm5fdmFsdWUgPSBUcnVlCisgICA+Pj4gbW9jayA9PSAzCisgICBUcnVlCisKK1RoZSByZXR1cm4gdmFsdWUgb2YgYE1hZ2ljTW9jay5fX2l0ZXJfX2AgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QgYW5kIGlzbid0CityZXF1aXJlZCB0byBiZSBhbiBpdGVyYXRvcjoKKworICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgPj4+IG1vY2suX19pdGVyX18ucmV0dXJuX3ZhbHVlID0gWydhJywgJ2InLCAnYyddCisgICA+Pj4gbGlzdChtb2NrKQorICAgWydhJywgJ2InLCAnYyddCisgICA+Pj4gbGlzdChtb2NrKQorICAgWydhJywgJ2InLCAnYyddCisKK0lmIHRoZSByZXR1cm4gdmFsdWUgKmlzKiBhbiBpdGVyYXRvciwgdGhlbiBpdGVyYXRpbmcgb3ZlciBpdCBvbmNlIHdpbGwgY29uc3VtZQoraXQgYW5kIHN1YnNlcXVlbnQgaXRlcmF0aW9ucyB3aWxsIHJlc3VsdCBpbiBhbiBlbXB0eSBsaXN0OgorCisgICA+Pj4gbW9jay5fX2l0ZXJfXy5yZXR1cm5fdmFsdWUgPSBpdGVyKFsnYScsICdiJywgJ2MnXSkKKyAgID4+PiBsaXN0KG1vY2spCisgICBbJ2EnLCAnYicsICdjJ10KKyAgID4+PiBsaXN0KG1vY2spCisgICBbXQorCitgYE1hZ2ljTW9ja2BgIGhhcyBhbGwgb2YgdGhlIHN1cHBvcnRlZCBtYWdpYyBtZXRob2RzIGNvbmZpZ3VyZWQgZXhjZXB0IGZvciBzb21lCitvZiB0aGUgb2JzY3VyZSBhbmQgb2Jzb2xldGUgb25lcy4gWW91IGNhbiBzdGlsbCBzZXQgdGhlc2UgdXAgaWYgeW91IHdhbnQuCisKK01hZ2ljIG1ldGhvZHMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ1dCBub3Qgc2V0dXAgYnkgZGVmYXVsdCBpbiBgYE1hZ2ljTW9ja2BgIGFyZToKKworKiBgYF9fc3ViY2xhc3Nlc19fYGAKKyogYGBfX2Rpcl9fYGAKKyogYGBfX2Zvcm1hdF9fYGAKKyogYGBfX2dldF9fYGAsIGBgX19zZXRfX2BgIGFuZCBgYF9fZGVsZXRlX19gYAorKiBgYF9fcmV2ZXJzZWRfX2BgIGFuZCBgYF9fbWlzc2luZ19fYGAKKyogYGBfX3JlZHVjZV9fYGAsIGBgX19yZWR1Y2VfZXhfX2BgLCBgYF9fZ2V0aW5pdGFyZ3NfX2BgLCBgYF9fZ2V0bmV3YXJnc19fYGAsCisgIGBgX19nZXRzdGF0ZV9fYGAgYW5kIGBgX19zZXRzdGF0ZV9fYGAKKyogYGBfX2dldGZvcm1hdF9fYGAgYW5kIGBgX19zZXRmb3JtYXRfX2BgCisKKworCisuLiBbI10gTWFnaWMgbWV0aG9kcyAqc2hvdWxkKiBiZSBsb29rZWQgdXAgb24gdGhlIGNsYXNzIHJhdGhlciB0aGFuIHRoZQorICAgaW5zdGFuY2UuIERpZmZlcmVudCB2ZXJzaW9ucyBvZiBQeXRob24gYXJlIGluY29uc2lzdGVudCBhYm91dCBhcHBseWluZyB0aGlzCisgICBydWxlLiBUaGUgc3VwcG9ydGVkIHByb3RvY29sIG1ldGhvZHMgc2hvdWxkIHdvcmsgd2l0aCBhbGwgc3VwcG9ydGVkIHZlcnNpb25zCisgICBvZiBQeXRob24uCisuLiBbI10gVGhlIGZ1bmN0aW9uIGlzIGJhc2ljYWxseSBob29rZWQgdXAgdG8gdGhlIGNsYXNzLCBidXQgZWFjaCBgYE1vY2tgYAorICAgaW5zdGFuY2UgaXMga2VwdCBpc29sYXRlZCBmcm9tIHRoZSBvdGhlcnMuCisKKworSGVscGVycworPT09PT09PQorCitzZW50aW5lbAorLS0tLS0tLS0KKworLi4gZGF0YTo6IHNlbnRpbmVsCisKKyAgICBUaGUgYGBzZW50aW5lbGBgIG9iamVjdCBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IG9mIHByb3ZpZGluZyB1bmlxdWUKKyAgICBvYmplY3RzIGZvciB5b3VyIHRlc3RzLgorCisgICAgQXR0cmlidXRlcyBhcmUgY3JlYXRlZCBvbiBkZW1hbmQgd2hlbiB5b3UgYWNjZXNzIHRoZW0gYnkgbmFtZS4gQWNjZXNzaW5nCisgICAgdGhlIHNhbWUgYXR0cmlidXRlIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBvYmplY3QuIFRoZSBvYmplY3RzCisgICAgcmV0dXJuZWQgaGF2ZSBhIHNlbnNpYmxlIHJlcHIgc28gdGhhdCB0ZXN0IGZhaWx1cmUgbWVzc2FnZXMgYXJlIHJlYWRhYmxlLgorCitTb21ldGltZXMgd2hlbiB0ZXN0aW5nIHlvdSBuZWVkIHRvIHRlc3QgdGhhdCBhIHNwZWNpZmljIG9iamVjdCBpcyBwYXNzZWQgYXMgYW4KK2FyZ3VtZW50IHRvIGFub3RoZXIgbWV0aG9kLCBvciByZXR1cm5lZC4gSXQgY2FuIGJlIGNvbW1vbiB0byBjcmVhdGUgbmFtZWQKK3NlbnRpbmVsIG9iamVjdHMgdG8gdGVzdCB0aGlzLiBgc2VudGluZWxgIHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgb2YKK2NyZWF0aW5nIGFuZCB0ZXN0aW5nIHRoZSBpZGVudGl0eSBvZiBvYmplY3RzIGxpa2UgdGhpcy4KKworSW4gdGhpcyBleGFtcGxlIHdlIG1vbmtleSBwYXRjaCBgbWV0aG9kYCB0byByZXR1cm4gYHNlbnRpbmVsLnNvbWVfb2JqZWN0YDoKKworICAgID4+PiByZWFsID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICA+Pj4gcmVhbC5tZXRob2QgPSBNb2NrKG5hbWU9Im1ldGhvZCIpCisgICAgPj4+IHJlYWwubWV0aG9kLnJldHVybl92YWx1ZSA9IHNlbnRpbmVsLnNvbWVfb2JqZWN0CisgICAgPj4+IHJlc3VsdCA9IHJlYWwubWV0aG9kKCkKKyAgICA+Pj4gYXNzZXJ0IHJlc3VsdCBpcyBzZW50aW5lbC5zb21lX29iamVjdAorICAgID4+PiBzZW50aW5lbC5zb21lX29iamVjdAorICAgIHNlbnRpbmVsLnNvbWVfb2JqZWN0CisKKworREVGQVVMVAorLS0tLS0tLQorCisKKy4uIGRhdGE6OiBERUZBVUxUCisKKyAgICBUaGUgYERFRkFVTFRgIG9iamVjdCBpcyBhIHByZS1jcmVhdGVkIHNlbnRpbmVsIChhY3R1YWxseQorICAgIGBzZW50aW5lbC5ERUZBVUxUYCkuIEl0IGNhbiBiZSB1c2VkIGJ5IDphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAKKyAgICBmdW5jdGlvbnMgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbm9ybWFsIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgdXNlZC4KKworCisKK2NhbGwKKy0tLS0KKworLi4gZnVuY3Rpb246OiBjYWxsKCphcmdzLCAqKmt3YXJncykKKworICAgIGBjYWxsYCBpcyBhIGhlbHBlciBvYmplY3QgZm9yIG1ha2luZyBzaW1wbGVyIGFzc2VydGlvbnMsIGZvciBjb21wYXJpbmcgd2l0aAorICAgIDphdHRyOmB+TW9jay5jYWxsX2FyZ3NgLCA6YXR0cjpgfk1vY2suY2FsbF9hcmdzX2xpc3RgLAorICAgIDphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCBhbmQgOmF0dHI6YH5Nb2NrLm1ldGhvZF9jYWxsc2AuIGBjYWxsYCBjYW4gYWxzbyBiZQorICAgIHVzZWQgd2l0aCA6bWV0aDpgfk1vY2suYXNzZXJ0X2hhc19jYWxsc2AuCisKKyAgICAgICAgPj4+IG0gPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgID4+PiBtKDEsIDIsIGE9J2ZvbycsIGI9J2JhcicpCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgPj4+IG0uY2FsbF9hcmdzX2xpc3QgPT0gW2NhbGwoMSwgMiwgYT0nZm9vJywgYj0nYmFyJyksIGNhbGwoKV0KKyAgICAgICAgVHJ1ZQorCisuLiBtZXRob2Q6OiBjYWxsLmNhbGxfbGlzdCgpCisKKyAgICBGb3IgYSBjYWxsIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgbXVsdGlwbGUgY2FsbHMsIGBjYWxsX2xpc3RgCisgICAgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnRlcm1lZGlhdGUgY2FsbHMgYXMgd2VsbCBhcyB0aGUKKyAgICBmaW5hbCBjYWxsLgorCitgY2FsbF9saXN0YCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBtYWtpbmcgYXNzZXJ0aW9ucyBvbiAiY2hhaW5lZCBjYWxscyIuIEEKK2NoYWluZWQgY2FsbCBpcyBtdWx0aXBsZSBjYWxscyBvbiBhIHNpbmdsZSBsaW5lIG9mIGNvZGUuIFRoaXMgcmVzdWx0cyBpbgorbXVsdGlwbGUgZW50cmllcyBpbiA6YXR0cjpgfk1vY2subW9ja19jYWxsc2Agb24gYSBtb2NrLiBNYW51YWxseSBjb25zdHJ1Y3RpbmcKK3RoZSBzZXF1ZW5jZSBvZiBjYWxscyBjYW4gYmUgdGVkaW91cy4KKworOm1ldGg6YH5jYWxsLmNhbGxfbGlzdGAgY2FuIGNvbnN0cnVjdCB0aGUgc2VxdWVuY2Ugb2YgY2FsbHMgZnJvbSB0aGUgc2FtZQorY2hhaW5lZCBjYWxsOgorCisgICAgPj4+IG0gPSBNYWdpY01vY2soKQorICAgID4+PiBtKDEpLm1ldGhvZChhcmc9J2ZvbycpLm90aGVyKCdiYXInKSgyLjApCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrKCkubWV0aG9kKCkub3RoZXIoKSgpJyBpZD0nLi4uJz4KKyAgICA+Pj4ga2FsbCA9IGNhbGwoMSkubWV0aG9kKGFyZz0nZm9vJykub3RoZXIoJ2JhcicpKDIuMCkKKyAgICA+Pj4ga2FsbC5jYWxsX2xpc3QoKQorICAgIFtjYWxsKDEpLAorICAgICBjYWxsKCkubWV0aG9kKGFyZz0nZm9vJyksCisgICAgIGNhbGwoKS5tZXRob2QoKS5vdGhlcignYmFyJyksCisgICAgIGNhbGwoKS5tZXRob2QoKS5vdGhlcigpKDIuMCldCisgICAgPj4+IG0ubW9ja19jYWxscyA9PSBrYWxsLmNhbGxfbGlzdCgpCisgICAgVHJ1ZQorCisuLiBfY2FsbHMtYXMtdHVwbGVzOgorCitBIGBjYWxsYCBvYmplY3QgaXMgZWl0aGVyIGEgdHVwbGUgb2YgKHBvc2l0aW9uYWwgYXJncywga2V5d29yZCBhcmdzKSBvcgorKG5hbWUsIHBvc2l0aW9uYWwgYXJncywga2V5d29yZCBhcmdzKSBkZXBlbmRpbmcgb24gaG93IGl0IHdhcyBjb25zdHJ1Y3RlZC4gV2hlbgoreW91IGNvbnN0cnVjdCB0aGVtIHlvdXJzZWxmIHRoaXMgaXNuJ3QgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLCBidXQgdGhlIGBjYWxsYAorb2JqZWN0cyB0aGF0IGFyZSBpbiB0aGUgOmF0dHI6YE1vY2suY2FsbF9hcmdzYCwgOmF0dHI6YE1vY2suY2FsbF9hcmdzX2xpc3RgIGFuZAorOmF0dHI6YE1vY2subW9ja19jYWxsc2AgYXR0cmlidXRlcyBjYW4gYmUgaW50cm9zcGVjdGVkIHRvIGdldCBhdCB0aGUgaW5kaXZpZHVhbAorYXJndW1lbnRzIHRoZXkgY29udGFpbi4KKworVGhlIGBjYWxsYCBvYmplY3RzIGluIDphdHRyOmBNb2NrLmNhbGxfYXJnc2AgYW5kIDphdHRyOmBNb2NrLmNhbGxfYXJnc19saXN0YAorYXJlIHR3by10dXBsZXMgb2YgKHBvc2l0aW9uYWwgYXJncywga2V5d29yZCBhcmdzKSB3aGVyZWFzIHRoZSBgY2FsbGAgb2JqZWN0cworaW4gOmF0dHI6YE1vY2subW9ja19jYWxsc2AsIGFsb25nIHdpdGggb25lcyB5b3UgY29uc3RydWN0IHlvdXJzZWxmLCBhcmUKK3RocmVlLXR1cGxlcyBvZiAobmFtZSwgcG9zaXRpb25hbCBhcmdzLCBrZXl3b3JkIGFyZ3MpLgorCitZb3UgY2FuIHVzZSB0aGVpciAidHVwbGVuZXNzIiB0byBwdWxsIG91dCB0aGUgaW5kaXZpZHVhbCBhcmd1bWVudHMgZm9yIG1vcmUKK2NvbXBsZXggaW50cm9zcGVjdGlvbiBhbmQgYXNzZXJ0aW9ucy4gVGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFyZSBhIHR1cGxlCisoYW4gZW1wdHkgdHVwbGUgaWYgdGhlcmUgYXJlIG5vIHBvc2l0aW9uYWwgYXJndW1lbnRzKSBhbmQgdGhlIGtleXdvcmQKK2FyZ3VtZW50cyBhcmUgYSBkaWN0aW9uYXJ5OgorCisgICAgPj4+IG0gPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG0oMSwgMiwgMywgYXJnPSdvbmUnLCBhcmcyPSd0d28nKQorICAgID4+PiBrYWxsID0gbS5jYWxsX2FyZ3MKKyAgICA+Pj4gYXJncywga3dhcmdzID0ga2FsbAorICAgID4+PiBhcmdzCisgICAgKDEsIDIsIDMpCisgICAgPj4+IGt3YXJncworICAgIHsnYXJnMic6ICd0d28nLCAnYXJnJzogJ29uZSd9CisgICAgPj4+IGFyZ3MgaXMga2FsbFswXQorICAgIFRydWUKKyAgICA+Pj4ga3dhcmdzIGlzIGthbGxbMV0KKyAgICBUcnVlCisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG0uZm9vKDQsIDUsIDYsIGFyZz0ndHdvJywgYXJnMj0ndGhyZWUnKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5mb28oKScgaWQ9Jy4uLic+CisgICAgPj4+IGthbGwgPSBtLm1vY2tfY2FsbHNbMF0KKyAgICA+Pj4gbmFtZSwgYXJncywga3dhcmdzID0ga2FsbAorICAgID4+PiBuYW1lCisgICAgJ2ZvbycKKyAgICA+Pj4gYXJncworICAgICg0LCA1LCA2KQorICAgID4+PiBrd2FyZ3MKKyAgICB7J2FyZzInOiAndGhyZWUnLCAnYXJnJzogJ3R3byd9CisgICAgPj4+IG5hbWUgaXMgbS5tb2NrX2NhbGxzWzBdWzBdCisgICAgVHJ1ZQorCisKK2NyZWF0ZV9hdXRvc3BlYworLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogY3JlYXRlX2F1dG9zcGVjKHNwZWMsIHNwZWNfc2V0PUZhbHNlLCBpbnN0YW5jZT1GYWxzZSwgKiprd2FyZ3MpCisKKyAgICBDcmVhdGUgYSBtb2NrIG9iamVjdCB1c2luZyBhbm90aGVyIG9iamVjdCBhcyBhIHNwZWMuIEF0dHJpYnV0ZXMgb24gdGhlCisgICAgbW9jayB3aWxsIHVzZSB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb24gdGhlIGBzcGVjYCBvYmplY3QgYXMgdGhlaXIKKyAgICBzcGVjLgorCisgICAgRnVuY3Rpb25zIG9yIG1ldGhvZHMgYmVpbmcgbW9ja2VkIHdpbGwgaGF2ZSB0aGVpciBhcmd1bWVudHMgY2hlY2tlZCB0bworICAgIGVuc3VyZSB0aGF0IHRoZXkgYXJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHNpZ25hdHVyZS4KKworICAgIElmIGBzcGVjX3NldGAgaXMgYFRydWVgIHRoZW4gYXR0ZW1wdGluZyB0byBzZXQgYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0CisgICAgb24gdGhlIHNwZWMgb2JqZWN0IHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgIElmIGEgY2xhc3MgaXMgdXNlZCBhcyBhIHNwZWMgdGhlbiB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBtb2NrICh0aGUKKyAgICBpbnN0YW5jZSBvZiB0aGUgY2xhc3MpIHdpbGwgaGF2ZSB0aGUgc2FtZSBzcGVjLiBZb3UgY2FuIHVzZSBhIGNsYXNzIGFzIHRoZQorICAgIHNwZWMgZm9yIGFuIGluc3RhbmNlIG9iamVjdCBieSBwYXNzaW5nIGBpbnN0YW5jZT1UcnVlYC4gVGhlIHJldHVybmVkIG1vY2sKKyAgICB3aWxsIG9ubHkgYmUgY2FsbGFibGUgaWYgaW5zdGFuY2VzIG9mIHRoZSBtb2NrIGFyZSBjYWxsYWJsZS4KKworICAgIGBjcmVhdGVfYXV0b3NwZWNgIGFsc28gdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3NlZCB0bworICAgIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgY3JlYXRlZCBtb2NrLgorCitTZWUgOnJlZjpgYXV0by1zcGVjY2luZ2AgZm9yIGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgYXV0by1zcGVjY2luZyB3aXRoCitgY3JlYXRlX2F1dG9zcGVjYCBhbmQgdGhlIGBhdXRvc3BlY2AgYXJndW1lbnQgdG8gOmZ1bmM6YHBhdGNoYC4KKworCitBTlkKKy0tLQorCisuLiBkYXRhOjogQU5ZCisKK1NvbWV0aW1lcyB5b3UgbWF5IG5lZWQgdG8gbWFrZSBhc3NlcnRpb25zIGFib3V0ICpzb21lKiBvZiB0aGUgYXJndW1lbnRzIGluIGEKK2NhbGwgdG8gbW9jaywgYnV0IGVpdGhlciBub3QgY2FyZSBhYm91dCBzb21lIG9mIHRoZSBhcmd1bWVudHMgb3Igd2FudCB0byBwdWxsCit0aGVtIGluZGl2aWR1YWxseSBvdXQgb2YgOmF0dHI6YH5Nb2NrLmNhbGxfYXJnc2AgYW5kIG1ha2UgbW9yZSBjb21wbGV4Cithc3NlcnRpb25zIG9uIHRoZW0uCisKK1RvIGlnbm9yZSBjZXJ0YWluIGFyZ3VtZW50cyB5b3UgY2FuIHBhc3MgaW4gb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgdG8KKypldmVyeXRoaW5nKi4gQ2FsbHMgdG8gOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfd2l0aGAgYW5kCis6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhgIHdpbGwgdGhlbiBzdWNjZWVkIG5vIG1hdHRlciB3aGF0IHdhcworcGFzc2VkIGluLgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKCdmb28nLCBiYXI9b2JqZWN0KCkpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycsIGJhcj1BTlkpCisKK2BBTllgIGNhbiBhbHNvIGJlIHVzZWQgaW4gY29tcGFyaXNvbnMgd2l0aCBjYWxsIGxpc3RzIGxpa2UKKzphdHRyOmB+TW9jay5tb2NrX2NhbGxzYDoKKworICAgID4+PiBtID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtKDEpCisgICAgPj4+IG0oMSwgMikKKyAgICA+Pj4gbShvYmplY3QoKSkKKyAgICA+Pj4gbS5tb2NrX2NhbGxzID09IFtjYWxsKDEpLCBjYWxsKDEsIDIpLCBBTlldCisgICAgVHJ1ZQorCisKKworRklMVEVSX0RJUgorLS0tLS0tLS0tLQorCisuLiBkYXRhOjogRklMVEVSX0RJUgorCitgRklMVEVSX0RJUmAgaXMgYSBtb2R1bGUgbGV2ZWwgdmFyaWFibGUgdGhhdCBjb250cm9scyB0aGUgd2F5IG1vY2sgb2JqZWN0cworcmVzcG9uZCB0byBgZGlyYCAob25seSBmb3IgUHl0aG9uIDIuNiBvciBtb3JlIHJlY2VudCkuIFRoZSBkZWZhdWx0IGlzIGBUcnVlYCwKK3doaWNoIHVzZXMgdGhlIGZpbHRlcmluZyBkZXNjcmliZWQgYmVsb3csIHRvIG9ubHkgc2hvdyB1c2VmdWwgbWVtYmVycy4gSWYgeW91CitkaXNsaWtlIHRoaXMgZmlsdGVyaW5nLCBvciBuZWVkIHRvIHN3aXRjaCBpdCBvZmYgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMsIHRoZW4KK3NldCBgbW9jay5GSUxURVJfRElSID0gRmFsc2VgLgorCitXaXRoIGZpbHRlcmluZyBvbiwgYGRpcihzb21lX21vY2spYCBzaG93cyBvbmx5IHVzZWZ1bCBhdHRyaWJ1dGVzIGFuZCB3aWxsCitpbmNsdWRlIGFueSBkeW5hbWljYWxseSBjcmVhdGVkIGF0dHJpYnV0ZXMgdGhhdCB3b3VsZG4ndCBub3JtYWxseSBiZSBzaG93bi4KK0lmIHRoZSBtb2NrIHdhcyBjcmVhdGVkIHdpdGggYSBgc3BlY2AgKG9yIGBhdXRvc3BlY2Agb2YgY291cnNlKSB0aGVuIGFsbCB0aGUKK2F0dHJpYnV0ZXMgZnJvbSB0aGUgb3JpZ2luYWwgYXJlIHNob3duLCBldmVuIGlmIHRoZXkgaGF2ZW4ndCBiZWVuIGFjY2Vzc2VkCit5ZXQ6CisKKyAgICA+Pj4gZGlyKE1vY2soKSkKKyAgICBbJ2Fzc2VydF9hbnlfY2FsbCcsCisgICAgICdhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCcsCisgICAgICdhc3NlcnRfY2FsbGVkX3dpdGgnLAorICAgICAnYXNzZXJ0X2hhc19jYWxscycsCisgICAgICdhdHRhY2hfbW9jaycsCisgICAgIC4uLgorICAgID4+PiBmcm9tIHVybGxpYiBpbXBvcnQgcmVxdWVzdAorICAgID4+PiBkaXIoTW9jayhzcGVjPXJlcXVlc3QpKQorICAgIFsnQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyJywKKyAgICAgJ0Fic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXInLAorICAgICAnQWJzdHJhY3RIVFRQSGFuZGxlcicsCisgICAgICdCYXNlSGFuZGxlcicsCisgICAgIC4uLgorCitNYW55IG9mIHRoZSBub3QtdmVyeS11c2VmdWwgKHByaXZhdGUgdG8gYE1vY2tgIHJhdGhlciB0aGFuIHRoZSB0aGluZyBiZWluZworbW9ja2VkKSB1bmRlcnNjb3JlIGFuZCBkb3VibGUgdW5kZXJzY29yZSBwcmVmaXhlZCBhdHRyaWJ1dGVzIGhhdmUgYmVlbgorZmlsdGVyZWQgZnJvbSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgYGRpcmAgb24gYSBgTW9ja2AuIElmIHlvdSBkaXNsaWtlIHRoaXMKK2JlaGF2aW91ciB5b3UgY2FuIHN3aXRjaCBpdCBvZmYgYnkgc2V0dGluZyB0aGUgbW9kdWxlIGxldmVsIHN3aXRjaAorYEZJTFRFUl9ESVJgOgorCisgICAgPj4+IGZyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKKyAgICA+Pj4gbW9jay5GSUxURVJfRElSID0gRmFsc2UKKyAgICA+Pj4gZGlyKG1vY2suTW9jaygpKQorICAgIFsnX05vbkNhbGxhYmxlTW9ja19fZ2V0X3JldHVybl92YWx1ZScsCisgICAgICdfTm9uQ2FsbGFibGVNb2NrX19nZXRfc2lkZV9lZmZlY3QnLAorICAgICAnX05vbkNhbGxhYmxlTW9ja19fcmV0dXJuX3ZhbHVlX2RvYycsCisgICAgICdfTm9uQ2FsbGFibGVNb2NrX19zZXRfcmV0dXJuX3ZhbHVlJywKKyAgICAgJ19Ob25DYWxsYWJsZU1vY2tfX3NldF9zaWRlX2VmZmVjdCcsCisgICAgICdfX2NhbGxfXycsCisgICAgICdfX2NsYXNzX18nLAorICAgICAuLi4KKworQWx0ZXJuYXRpdmVseSB5b3UgY2FuIGp1c3QgdXNlIGB2YXJzKG15X21vY2spYCAoaW5zdGFuY2UgbWVtYmVycykgYW5kCitgZGlyKHR5cGUobXlfbW9jaykpYCAodHlwZSBtZW1iZXJzKSB0byBieXBhc3MgdGhlIGZpbHRlcmluZyBpcnJlc3BlY3RpdmUgb2YKK2Btb2NrLkZJTFRFUl9ESVJgLgorCisKK21vY2tfb3BlbgorLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogbW9ja19vcGVuKG1vY2s9Tm9uZSwgcmVhZF9kYXRhPU5vbmUpCisKKyAgICBBIGhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBtb2NrIHRvIHJlcGxhY2UgdGhlIHVzZSBvZiBgb3BlbmAuIEl0IHdvcmtzCisgICAgZm9yIGBvcGVuYCBjYWxsZWQgZGlyZWN0bHkgb3IgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKworICAgIFRoZSBgbW9ja2AgYXJndW1lbnQgaXMgdGhlIG1vY2sgb2JqZWN0IHRvIGNvbmZpZ3VyZS4gSWYgYE5vbmVgICh0aGUKKyAgICBkZWZhdWx0KSB0aGVuIGEgYE1hZ2ljTW9ja2Agd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UsIHdpdGggdGhlIEFQSSBsaW1pdGVkCisgICAgdG8gbWV0aG9kcyBvciBhdHRyaWJ1dGVzIGF2YWlsYWJsZSBvbiBzdGFuZGFyZCBmaWxlIGhhbmRsZXMuCisKKyAgICBgcmVhZF9kYXRhYCBpcyBhIHN0cmluZyBmb3IgdGhlIGByZWFkYCBtZXRob2Qgb2YgdGhlIGZpbGUgaGFuZGxlIHRvIHJldHVybi4KKyAgICBUaGlzIGlzIGFuIGVtcHR5IHN0cmluZyBieSBkZWZhdWx0LgorCitVc2luZyBgb3BlbmAgYXMgYSBjb250ZXh0IG1hbmFnZXIgaXMgYSBncmVhdCB3YXkgdG8gZW5zdXJlIHlvdXIgZmlsZSBoYW5kbGVzCithcmUgY2xvc2VkIHByb3Blcmx5IGFuZCBpcyBiZWNvbWluZyBjb21tb246OgorCisgICAgd2l0aCBvcGVuKCcvc29tZS9wYXRoJywgJ3cnKSBhcyBmOgorICAgICAgICBmLndyaXRlKCdzb21ldGhpbmcnKQorCitUaGUgaXNzdWUgaXMgdGhhdCBldmVuIGlmIHlvdSBtb2NrIG91dCB0aGUgY2FsbCB0byBgb3BlbmAgaXQgaXMgdGhlCisqcmV0dXJuZWQgb2JqZWN0KiB0aGF0IGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgKGFuZCBoYXMgYF9fZW50ZXJfX2AgYW5kCitgX19leGl0X19gIGNhbGxlZCkuCisKK01vY2tpbmcgY29udGV4dCBtYW5hZ2VycyB3aXRoIGEgOmNsYXNzOmBNYWdpY01vY2tgIGlzIGNvbW1vbiBlbm91Z2ggYW5kIGZpZGRseQorZW5vdWdoIHRoYXQgYSBoZWxwZXIgZnVuY3Rpb24gaXMgdXNlZnVsLgorCisgICAgPj4+IG0gPSBtb2NrX29wZW4oKQorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbSwgY3JlYXRlPVRydWUpOgorICAgIC4uLiAgICAgd2l0aCBvcGVuKCdmb28nLCAndycpIGFzIGg6CisgICAgLi4uICAgICAgICAgaC53cml0ZSgnc29tZSBzdHVmZicpCisgICAgLi4uCisgICAgPj4+IG0ubW9ja19jYWxscworICAgIFtjYWxsKCdmb28nLCAndycpLAorICAgICBjYWxsKCkuX19lbnRlcl9fKCksCisgICAgIGNhbGwoKS53cml0ZSgnc29tZSBzdHVmZicpLAorICAgICBjYWxsKCkuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSldCisgICAgPj4+IG0uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycsICd3JykKKyAgICA+Pj4gaGFuZGxlID0gbSgpCisgICAgPj4+IGhhbmRsZS53cml0ZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnc29tZSBzdHVmZicpCisKK0FuZCBmb3IgcmVhZGluZyBmaWxlczoKKworICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbW9ja19vcGVuKHJlYWRfZGF0YT0nYmliYmxlJyksIGNyZWF0ZT1UcnVlKSBhcyBtOgorICAgIC4uLiAgICAgd2l0aCBvcGVuKCdmb28nKSBhcyBoOgorICAgIC4uLiAgICAgICAgIHJlc3VsdCA9IGgucmVhZCgpCisgICAgLi4uCisgICAgPj4+IG0uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycpCisgICAgPj4+IGFzc2VydCByZXN1bHQgPT0gJ2JpYmJsZScKKworCisuLiBfYXV0by1zcGVjY2luZzoKKworQXV0b3NwZWNjaW5nCistLS0tLS0tLS0tLS0KKworQXV0b3NwZWNjaW5nIGlzIGJhc2VkIG9uIHRoZSBleGlzdGluZyBgc3BlY2AgZmVhdHVyZSBvZiBtb2NrLiBJdCBsaW1pdHMgdGhlCithcGkgb2YgbW9ja3MgdG8gdGhlIGFwaSBvZiBhbiBvcmlnaW5hbCBvYmplY3QgKHRoZSBzcGVjKSwgYnV0IGl0IGlzIHJlY3Vyc2l2ZQorKGltcGxlbWVudGVkIGxhemlseSkgc28gdGhhdCBhdHRyaWJ1dGVzIG9mIG1vY2tzIG9ubHkgaGF2ZSB0aGUgc2FtZSBhcGkgYXMKK3RoZSBhdHRyaWJ1dGVzIG9mIHRoZSBzcGVjLiBJbiBhZGRpdGlvbiBtb2NrZWQgZnVuY3Rpb25zIC8gbWV0aG9kcyBoYXZlIHRoZQorc2FtZSBjYWxsIHNpZ25hdHVyZSBhcyB0aGUgb3JpZ2luYWwgc28gdGhleSByYWlzZSBhIGBUeXBlRXJyb3JgIGlmIHRoZXkgYXJlCitjYWxsZWQgaW5jb3JyZWN0bHkuCisKK0JlZm9yZSBJIGV4cGxhaW4gaG93IGF1dG8tc3BlY2Npbmcgd29ya3MsIGhlcmUncyB3aHkgaXQgaXMgbmVlZGVkLgorCitgTW9ja2AgaXMgYSB2ZXJ5IHBvd2VyZnVsIGFuZCBmbGV4aWJsZSBvYmplY3QsIGJ1dCBpdCBzdWZmZXJzIGZyb20gdHdvIGZsYXdzCit3aGVuIHVzZWQgdG8gbW9jayBvdXQgb2JqZWN0cyBmcm9tIGEgc3lzdGVtIHVuZGVyIHRlc3QuIE9uZSBvZiB0aGVzZSBmbGF3cyBpcworc3BlY2lmaWMgdG8gdGhlIGBNb2NrYCBhcGkgYW5kIHRoZSBvdGhlciBpcyBhIG1vcmUgZ2VuZXJhbCBwcm9ibGVtIHdpdGggdXNpbmcKK21vY2sgb2JqZWN0cy4KKworRmlyc3QgdGhlIHByb2JsZW0gc3BlY2lmaWMgdG8gYE1vY2tgLiBgTW9ja2AgaGFzIHR3byBhc3NlcnQgbWV0aG9kcyB0aGF0IGFyZQorZXh0cmVtZWx5IGhhbmR5OiA6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQKKzptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAuCisKKyAgICA+Pj4gbW9jayA9IE1vY2sobmFtZT0nVGhpbmcnLCByZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbW9jaygxLCAyLCAzKQorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisgICAgPj4+IG1vY2soMSwgMiwgMykKKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkIHRvIGJlIGNhbGxlZCBvbmNlLiBDYWxsZWQgMiB0aW1lcy4KKworQmVjYXVzZSBtb2NrcyBhdXRvLWNyZWF0ZSBhdHRyaWJ1dGVzIG9uIGRlbWFuZCwgYW5kIGFsbG93IHlvdSB0byBjYWxsIHRoZW0KK3dpdGggYXJiaXRyYXJ5IGFyZ3VtZW50cywgaWYgeW91IG1pc3NwZWxsIG9uZSBvZiB0aGVzZSBhc3NlcnQgbWV0aG9kcyB0aGVuCit5b3VyIGFzc2VydGlvbiBpcyBnb25lOgorCisuLiBjb2RlLWJsb2NrOjogcHljb24KKworICAgID4+PiBtb2NrID0gTW9jayhuYW1lPSdUaGluZycsIHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKDEsIDIsIDMpCisgICAgPj4+IG1vY2suYXNzcmV0X2NhbGxlZF9vbmNlX3dpdGgoNCwgNSwgNikKKworWW91ciB0ZXN0cyBjYW4gcGFzcyBzaWxlbnRseSBhbmQgaW5jb3JyZWN0bHkgYmVjYXVzZSBvZiB0aGUgdHlwby4KKworVGhlIHNlY29uZCBpc3N1ZSBpcyBtb3JlIGdlbmVyYWwgdG8gbW9ja2luZy4gSWYgeW91IHJlZmFjdG9yIHNvbWUgb2YgeW91cgorY29kZSwgcmVuYW1lIG1lbWJlcnMgYW5kIHNvIG9uLCBhbnkgdGVzdHMgZm9yIGNvZGUgdGhhdCBpcyBzdGlsbCB1c2luZyB0aGUKKypvbGQgYXBpKiBidXQgdXNlcyBtb2NrcyBpbnN0ZWFkIG9mIHRoZSByZWFsIG9iamVjdHMgd2lsbCBzdGlsbCBwYXNzLiBUaGlzCittZWFucyB5b3VyIHRlc3RzIGNhbiBhbGwgcGFzcyBldmVuIHRob3VnaCB5b3VyIGNvZGUgaXMgYnJva2VuLgorCitOb3RlIHRoYXQgdGhpcyBpcyBhbm90aGVyIHJlYXNvbiB3aHkgeW91IG5lZWQgaW50ZWdyYXRpb24gdGVzdHMgYXMgd2VsbCBhcwordW5pdCB0ZXN0cy4gVGVzdGluZyBldmVyeXRoaW5nIGluIGlzb2xhdGlvbiBpcyBhbGwgZmluZSBhbmQgZGFuZHksIGJ1dCBpZiB5b3UKK2Rvbid0IHRlc3QgaG93IHlvdXIgdW5pdHMgYXJlICJ3aXJlZCB0b2dldGhlciIgdGhlcmUgaXMgc3RpbGwgbG90cyBvZiByb29tCitmb3IgYnVncyB0aGF0IHRlc3RzIG1pZ2h0IGhhdmUgY2F1Z2h0LgorCitgbW9ja2AgYWxyZWFkeSBwcm92aWRlcyBhIGZlYXR1cmUgdG8gaGVscCB3aXRoIHRoaXMsIGNhbGxlZCBzcGVjY2luZy4gSWYgeW91Cit1c2UgYSBjbGFzcyBvciBpbnN0YW5jZSBhcyB0aGUgYHNwZWNgIGZvciBhIG1vY2sgdGhlbiB5b3UgY2FuIG9ubHkgYWNjZXNzCithdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIHRoYXQgZXhpc3Qgb24gdGhlIHJlYWwgY2xhc3M6CisKKyAgICA+Pj4gZnJvbSB1cmxsaWIgaW1wb3J0IHJlcXVlc3QKKyAgICA+Pj4gbW9jayA9IE1vY2soc3BlYz1yZXF1ZXN0LlJlcXVlc3QpCisgICAgPj4+IG1vY2suYXNzcmV0X2NhbGxlZF93aXRoCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnYXNzcmV0X2NhbGxlZF93aXRoJworCitUaGUgc3BlYyBvbmx5IGFwcGxpZXMgdG8gdGhlIG1vY2sgaXRzZWxmLCBzbyB3ZSBzdGlsbCBoYXZlIHRoZSBzYW1lIGlzc3VlCit3aXRoIGFueSBtZXRob2RzIG9uIHRoZSBtb2NrOgorCisuLiBjb2RlLWJsb2NrOjogcHljb24KKworICAgID4+PiBtb2NrLmhhc19kYXRhKCkKKyAgICA8bW9jay5Nb2NrIG9iamVjdCBhdCAweC4uLj4KKyAgICA+Pj4gbW9jay5oYXNfZGF0YS5hc3NyZXRfY2FsbGVkX3dpdGgoKQorCitBdXRvLXNwZWNjaW5nIHNvbHZlcyB0aGlzIHByb2JsZW0uIFlvdSBjYW4gZWl0aGVyIHBhc3MgYGF1dG9zcGVjPVRydWVgIHRvCitgcGF0Y2hgIC8gYHBhdGNoLm9iamVjdGAgb3IgdXNlIHRoZSBgY3JlYXRlX2F1dG9zcGVjYCBmdW5jdGlvbiB0byBjcmVhdGUgYQorbW9jayB3aXRoIGEgc3BlYy4gSWYgeW91IHVzZSB0aGUgYGF1dG9zcGVjPVRydWVgIGFyZ3VtZW50IHRvIGBwYXRjaGAgdGhlbiB0aGUKK29iamVjdCB0aGF0IGlzIGJlaW5nIHJlcGxhY2VkIHdpbGwgYmUgdXNlZCBhcyB0aGUgc3BlYyBvYmplY3QuIEJlY2F1c2UgdGhlCitzcGVjY2luZyBpcyBkb25lICJsYXppbHkiICh0aGUgc3BlYyBpcyBjcmVhdGVkIGFzIGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYXJlCithY2Nlc3NlZCkgeW91IGNhbiB1c2UgaXQgd2l0aCB2ZXJ5IGNvbXBsZXggb3IgZGVlcGx5IG5lc3RlZCBvYmplY3RzIChsaWtlCittb2R1bGVzIHRoYXQgaW1wb3J0IG1vZHVsZXMgdGhhdCBpbXBvcnQgbW9kdWxlcykgd2l0aG91dCBhIGJpZyBwZXJmb3JtYW5jZQoraGl0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBpdCBpbiB1c2U6CisKKyAgICA+Pj4gZnJvbSB1cmxsaWIgaW1wb3J0IHJlcXVlc3QKKyAgICA+Pj4gcGF0Y2hlciA9IHBhdGNoKCdfX21haW5fXy5yZXF1ZXN0JywgYXV0b3NwZWM9VHJ1ZSkKKyAgICA+Pj4gbW9ja19yZXF1ZXN0ID0gcGF0Y2hlci5zdGFydCgpCisgICAgPj4+IHJlcXVlc3QgaXMgbW9ja19yZXF1ZXN0CisgICAgVHJ1ZQorICAgID4+PiBtb2NrX3JlcXVlc3QuUmVxdWVzdAorICAgIDxNYWdpY01vY2sgbmFtZT0ncmVxdWVzdC5SZXF1ZXN0JyBzcGVjPSdSZXF1ZXN0JyBpZD0nLi4uJz4KKworWW91IGNhbiBzZWUgdGhhdCBgcmVxdWVzdC5SZXF1ZXN0YCBoYXMgYSBzcGVjLiBgcmVxdWVzdC5SZXF1ZXN0YCB0YWtlcyB0d28KK2FyZ3VtZW50cyBpbiB0aGUgY29uc3RydWN0b3IgKG9uZSBvZiB3aGljaCBpcyBgc2VsZmApLiBIZXJlJ3Mgd2hhdCBoYXBwZW5zIGlmCit3ZSB0cnkgdG8gY2FsbCBpdCBpbmNvcnJlY3RseToKKworICAgID4+PiByZXEgPSByZXF1ZXN0LlJlcXVlc3QoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgVHlwZUVycm9yOiA8bGFtYmRhPigpIHRha2VzIGF0IGxlYXN0IDIgYXJndW1lbnRzICgxIGdpdmVuKQorCitUaGUgc3BlYyBhbHNvIGFwcGxpZXMgdG8gaW5zdGFudGlhdGVkIGNsYXNzZXMgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZgorc3BlY2NlZCBtb2Nrcyk6CisKKyAgICA+Pj4gcmVxID0gcmVxdWVzdC5SZXF1ZXN0KCdmb28nKQorICAgID4+PiByZXEKKyAgICA8Tm9uQ2FsbGFibGVNYWdpY01vY2sgbmFtZT0ncmVxdWVzdC5SZXF1ZXN0KCknIHNwZWM9J1JlcXVlc3QnIGlkPScuLi4nPgorCitgUmVxdWVzdGAgb2JqZWN0cyBhcmUgbm90IGNhbGxhYmxlLCBzbyB0aGUgcmV0dXJuIHZhbHVlIG9mIGluc3RhbnRpYXRpbmcgb3VyCittb2NrZWQgb3V0IGByZXF1ZXN0LlJlcXVlc3RgIGlzIGEgbm9uLWNhbGxhYmxlIG1vY2suIFdpdGggdGhlIHNwZWMgaW4gcGxhY2UKK2FueSB0eXBvcyBpbiBvdXIgYXNzZXJ0cyB3aWxsIHJhaXNlIHRoZSBjb3JyZWN0IGVycm9yOgorCisgICAgPj4+IHJlcS5hZGRfaGVhZGVyKCdzcGFtJywgJ2VnZ3MnKQorICAgIDxNYWdpY01vY2sgbmFtZT0ncmVxdWVzdC5SZXF1ZXN0KCkuYWRkX2hlYWRlcigpJyBpZD0nLi4uJz4KKyAgICA+Pj4gcmVxLmFkZF9oZWFkZXIuYXNzcmV0X2NhbGxlZF93aXRoCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnYXNzcmV0X2NhbGxlZF93aXRoJworICAgID4+PiByZXEuYWRkX2hlYWRlci5hc3NlcnRfY2FsbGVkX3dpdGgoJ3NwYW0nLCAnZWdncycpCisKK0luIG1hbnkgY2FzZXMgeW91IHdpbGwganVzdCBiZSBhYmxlIHRvIGFkZCBgYXV0b3NwZWM9VHJ1ZWAgdG8geW91ciBleGlzdGluZworYHBhdGNoYCBjYWxscyBhbmQgdGhlbiBiZSBwcm90ZWN0ZWQgYWdhaW5zdCBidWdzIGR1ZSB0byB0eXBvcyBhbmQgYXBpCitjaGFuZ2VzLgorCitBcyB3ZWxsIGFzIHVzaW5nIGBhdXRvc3BlY2AgdGhyb3VnaCBgcGF0Y2hgIHRoZXJlIGlzIGEKKzpmdW5jOmBjcmVhdGVfYXV0b3NwZWNgIGZvciBjcmVhdGluZyBhdXRvc3BlY2NlZCBtb2NrcyBkaXJlY3RseToKKworICAgID4+PiBmcm9tIHVybGxpYiBpbXBvcnQgcmVxdWVzdAorICAgID4+PiBtb2NrX3JlcXVlc3QgPSBjcmVhdGVfYXV0b3NwZWMocmVxdWVzdCkKKyAgICA+Pj4gbW9ja19yZXF1ZXN0LlJlcXVlc3QoJ2ZvbycsICdiYXInKQorICAgIDxOb25DYWxsYWJsZU1hZ2ljTW9jayBuYW1lPSdtb2NrLlJlcXVlc3QoKScgc3BlYz0nUmVxdWVzdCcgaWQ9Jy4uLic+CisKK1RoaXMgaXNuJ3Qgd2l0aG91dCBjYXZlYXRzIGFuZCBsaW1pdGF0aW9ucyBob3dldmVyLCB3aGljaCBpcyB3aHkgaXQgaXMgbm90Cit0aGUgZGVmYXVsdCBiZWhhdmlvdXIuIEluIG9yZGVyIHRvIGtub3cgd2hhdCBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgb24gdGhlCitzcGVjIG9iamVjdCwgYXV0b3NwZWMgaGFzIHRvIGludHJvc3BlY3QgKGFjY2VzcyBhdHRyaWJ1dGVzKSB0aGUgc3BlYy4gQXMgeW91Cit0cmF2ZXJzZSBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGEgY29ycmVzcG9uZGluZyB0cmF2ZXJzYWwgb2YgdGhlIG9yaWdpbmFsCitvYmplY3QgaXMgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJZiBhbnkgb2YgeW91ciBzcGVjY2VkIG9iamVjdHMgaGF2ZQorcHJvcGVydGllcyBvciBkZXNjcmlwdG9ycyB0aGF0IGNhbiB0cmlnZ2VyIGNvZGUgZXhlY3V0aW9uIHRoZW4geW91IG1heSBub3QgYmUKK2FibGUgdG8gdXNlIGF1dG9zcGVjLiBPbiB0aGUgb3RoZXIgaGFuZCBpdCBpcyBtdWNoIGJldHRlciB0byBkZXNpZ24geW91cgorb2JqZWN0cyBzbyB0aGF0IGludHJvc3BlY3Rpb24gaXMgc2FmZSBbI11fLgorCitBIG1vcmUgc2VyaW91cyBwcm9ibGVtIGlzIHRoYXQgaXQgaXMgY29tbW9uIGZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzIHRvIGJlCitjcmVhdGVkIGluIHRoZSBgX19pbml0X19gIG1ldGhvZCBhbmQgbm90IHRvIGV4aXN0IG9uIHRoZSBjbGFzcyBhdCBhbGwuCitgYXV0b3NwZWNgIGNhbid0IGtub3cgYWJvdXQgYW55IGR5bmFtaWNhbGx5IGNyZWF0ZWQgYXR0cmlidXRlcyBhbmQgcmVzdHJpY3RzCit0aGUgYXBpIHRvIHZpc2libGUgYXR0cmlidXRlcy4KKworICAgID4+PiBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAuLi4gICBkZWYgX19pbml0X18oc2VsZik6CisgICAgLi4uICAgICBzZWxmLmEgPSAzMworICAgIC4uLgorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5Tb21ldGhpbmcnLCBhdXRvc3BlYz1UcnVlKToKKyAgICAuLi4gICB0aGluZyA9IFNvbWV0aGluZygpCisgICAgLi4uICAgdGhpbmcuYQorICAgIC4uLgorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIEF0dHJpYnV0ZUVycm9yOiBNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdhJworCitUaGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IHdheXMgb2YgcmVzb2x2aW5nIHRoaXMgcHJvYmxlbS4gVGhlIGVhc2llc3QsIGJ1dAorbm90IG5lY2Vzc2FyaWx5IHRoZSBsZWFzdCBhbm5veWluZywgd2F5IGlzIHRvIHNpbXBseSBzZXQgdGhlIHJlcXVpcmVkCithdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGFmdGVyIGNyZWF0aW9uLiBKdXN0IGJlY2F1c2UgYGF1dG9zcGVjYCBkb2Vzbid0IGFsbG93Cit5b3UgdG8gZmV0Y2ggYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0IG9uIHRoZSBzcGVjIGl0IGRvZXNuJ3QgcHJldmVudCB5b3UKK3NldHRpbmcgdGhlbToKKworICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5Tb21ldGhpbmcnLCBhdXRvc3BlYz1UcnVlKToKKyAgICAuLi4gICB0aGluZyA9IFNvbWV0aGluZygpCisgICAgLi4uICAgdGhpbmcuYSA9IDMzCisgICAgLi4uCisKK1RoZXJlIGlzIGEgbW9yZSBhZ2dyZXNzaXZlIHZlcnNpb24gb2YgYm90aCBgc3BlY2AgYW5kIGBhdXRvc3BlY2AgdGhhdCAqZG9lcyoKK3ByZXZlbnQgeW91IHNldHRpbmcgbm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvCitlbnN1cmUgeW91ciBjb2RlIG9ubHkgKnNldHMqIHZhbGlkIGF0dHJpYnV0ZXMgdG9vLCBidXQgb2J2aW91c2x5IGl0IHByZXZlbnRzCit0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW86CisKKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uU29tZXRoaW5nJywgYXV0b3NwZWM9VHJ1ZSwgc3BlY19zZXQ9VHJ1ZSk6CisgICAgLi4uICAgdGhpbmcgPSBTb21ldGhpbmcoKQorICAgIC4uLiAgIHRoaW5nLmEgPSAzMworICAgIC4uLgorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgQXR0cmlidXRlRXJyb3I6IE1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2EnCisKK1Byb2JhYmx5IHRoZSBiZXN0IHdheSBvZiBzb2x2aW5nIHRoZSBwcm9ibGVtIGlzIHRvIGFkZCBjbGFzcyBhdHRyaWJ1dGVzIGFzCitkZWZhdWx0IHZhbHVlcyBmb3IgaW5zdGFuY2UgbWVtYmVycyBpbml0aWFsaXNlZCBpbiBgX19pbml0X19gLiBOb3RlIHRoYXQgaWYKK3lvdSBhcmUgb25seSBzZXR0aW5nIGRlZmF1bHQgYXR0cmlidXRlcyBpbiBgX19pbml0X19gIHRoZW4gcHJvdmlkaW5nIHRoZW0gdmlhCitjbGFzcyBhdHRyaWJ1dGVzIChzaGFyZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgY291cnNlKSBpcyBmYXN0ZXIgdG9vLiBlLmcuCisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICBhID0gMzMKKworVGhpcyBicmluZ3MgdXAgYW5vdGhlciBpc3N1ZS4gSXQgaXMgcmVsYXRpdmVseSBjb21tb24gdG8gcHJvdmlkZSBhIGRlZmF1bHQKK3ZhbHVlIG9mIGBOb25lYCBmb3IgbWVtYmVycyB0aGF0IHdpbGwgbGF0ZXIgYmUgYW4gb2JqZWN0IG9mIGEgZGlmZmVyZW50IHR5cGUuCitgTm9uZWAgd291bGQgYmUgdXNlbGVzcyBhcyBhIHNwZWMgYmVjYXVzZSBpdCB3b3VsZG4ndCBsZXQgeW91IGFjY2VzcyAqYW55KgorYXR0cmlidXRlcyBvciBtZXRob2RzIG9uIGl0LiBBcyBgTm9uZWAgaXMgKm5ldmVyKiBnb2luZyB0byBiZSB1c2VmdWwgYXMgYQorc3BlYywgYW5kIHByb2JhYmx5IGluZGljYXRlcyBhIG1lbWJlciB0aGF0IHdpbGwgbm9ybWFsbHkgb2Ygc29tZSBvdGhlciB0eXBlLAorYGF1dG9zcGVjYCBkb2Vzbid0IHVzZSBhIHNwZWMgZm9yIG1lbWJlcnMgdGhhdCBhcmUgc2V0IHRvIGBOb25lYC4gVGhlc2Ugd2lsbAoranVzdCBiZSBvcmRpbmFyeSBtb2NrcyAod2VsbCAtIGBNYWdpY01vY2tzYCk6CisKKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgLi4uICAgICBtZW1iZXIgPSBOb25lCisgICAgLi4uCisgICAgPj4+IG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoU29tZXRoaW5nKQorICAgID4+PiBtb2NrLm1lbWJlci5mb28uYmFyLmJheigpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLm1lbWJlci5mb28uYmFyLmJheigpJyBpZD0nLi4uJz4KKworSWYgbW9kaWZ5aW5nIHlvdXIgcHJvZHVjdGlvbiBjbGFzc2VzIHRvIGFkZCBkZWZhdWx0cyBpc24ndCB0byB5b3VyIGxpa2luZwordGhlbiB0aGVyZSBhcmUgbW9yZSBvcHRpb25zLiBPbmUgb2YgdGhlc2UgaXMgc2ltcGx5IHRvIHVzZSBhbiBpbnN0YW5jZSBhcyB0aGUKK3NwZWMgcmF0aGVyIHRoYW4gdGhlIGNsYXNzLiBUaGUgb3RoZXIgaXMgdG8gY3JlYXRlIGEgc3ViY2xhc3Mgb2YgdGhlCitwcm9kdWN0aW9uIGNsYXNzIGFuZCBhZGQgdGhlIGRlZmF1bHRzIHRvIHRoZSBzdWJjbGFzcyB3aXRob3V0IGFmZmVjdGluZyB0aGUKK3Byb2R1Y3Rpb24gY2xhc3MuIEJvdGggb2YgdGhlc2UgcmVxdWlyZSB5b3UgdG8gdXNlIGFuIGFsdGVybmF0aXZlIG9iamVjdCBhcwordGhlIHNwZWMuIFRoYW5rZnVsbHkgYHBhdGNoYCBzdXBwb3J0cyB0aGlzIC0geW91IGNhbiBzaW1wbHkgcGFzcyB0aGUKK2FsdGVybmF0aXZlIG9iamVjdCBhcyB0aGUgYGF1dG9zcGVjYCBhcmd1bWVudDoKKworICAgID4+PiBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAuLi4gICBkZWYgX19pbml0X18oc2VsZik6CisgICAgLi4uICAgICBzZWxmLmEgPSAzMworICAgIC4uLgorICAgID4+PiBjbGFzcyBTb21ldGhpbmdGb3JUZXN0KFNvbWV0aGluZyk6CisgICAgLi4uICAgYSA9IDMzCisgICAgLi4uCisgICAgPj4+IHAgPSBwYXRjaCgnX19tYWluX18uU29tZXRoaW5nJywgYXV0b3NwZWM9U29tZXRoaW5nRm9yVGVzdCkKKyAgICA+Pj4gbW9jayA9IHAuc3RhcnQoKQorICAgID4+PiBtb2NrLmEKKyAgICA8Tm9uQ2FsbGFibGVNYWdpY01vY2sgbmFtZT0nU29tZXRoaW5nLmEnIHNwZWM9J2ludCcgaWQ9Jy4uLic+CisKKworLi4gWyNdIFRoaXMgb25seSBhcHBsaWVzIHRvIGNsYXNzZXMgb3IgYWxyZWFkeSBpbnN0YW50aWF0ZWQgb2JqZWN0cy4gQ2FsbGluZworICAgYSBtb2NrZWQgY2xhc3MgdG8gY3JlYXRlIGEgbW9jayBpbnN0YW5jZSAqZG9lcyBub3QqIGNyZWF0ZSBhIHJlYWwgaW5zdGFuY2UuCisgICBJdCBpcyBvbmx5IGF0dHJpYnV0ZSBsb29rdXBzIC0gYWxvbmcgd2l0aCBjYWxscyB0byBgZGlyYCAtIHRoYXQgYXJlIGRvbmUuCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAppbmRleCA0ZDMyMTZiLi4wYWY5MDM4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CkBAIC03OTIsMTEgKzc5MiwxNCBAQAogICAgICAgUnVuIHRoZSB0ZXN0LCBjb2xsZWN0aW5nIHRoZSByZXN1bHQgaW50byB0aGUgdGVzdCByZXN1bHQgb2JqZWN0IHBhc3NlZCBhcwogICAgICAgKnJlc3VsdCouICBJZiAqcmVzdWx0KiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCBhIHRlbXBvcmFyeSByZXN1bHQKICAgICAgIG9iamVjdCBpcyBjcmVhdGVkIChieSBjYWxsaW5nIHRoZSA6bWV0aDpgZGVmYXVsdFRlc3RSZXN1bHRgIG1ldGhvZCkgYW5kCi0gICAgICB1c2VkLiBUaGUgcmVzdWx0IG9iamVjdCBpcyBub3QgcmV0dXJuZWQgdG8gOm1ldGg6YHJ1bmAncyBjYWxsZXIuCisgICAgICB1c2VkLiBUaGUgcmVzdWx0IG9iamVjdCBpcyByZXR1cm5lZCB0byA6bWV0aDpgcnVuYCdzIGNhbGxlci4KIAogICAgICAgVGhlIHNhbWUgZWZmZWN0IG1heSBiZSBoYWQgYnkgc2ltcGx5IGNhbGxpbmcgdGhlIDpjbGFzczpgVGVzdENhc2VgCiAgICAgICBpbnN0YW5jZS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFByZXZpb3VzIHZlcnNpb25zIG9mIGBgcnVuYGAgZGlkIG5vdCByZXR1cm4gdGhlIHJlc3VsdC4gTmVpdGhlciBkaWQKKyAgICAgICAgIGNhbGxpbmcgYW4gaW5zdGFuY2UuCiAKICAgIC4uIG1ldGhvZDo6IHNraXBUZXN0KHJlYXNvbikKIApAQCAtODU3LDEwICs4NjAsMTEgQEAKICAgIHwgPFRlc3RDYXNlLmFzc2VydE5vdElzSW5zdGFuY2U+YCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwogCi0gICBBbGwgdGhlIGFzc2VydCBtZXRob2RzIChleGNlcHQgOm1ldGg6YGFzc2VydFJhaXNlc2AsCi0gICA6bWV0aDpgYXNzZXJ0UmFpc2VzUmVnZXhgLCA6bWV0aDpgYXNzZXJ0V2FybnNgLCA6bWV0aDpgYXNzZXJ0V2FybnNSZWdleGApCi0gICBhY2NlcHQgYSAqbXNnKiBhcmd1bWVudCB0aGF0LCBpZiBzcGVjaWZpZWQsIGlzIHVzZWQgYXMgdGhlIGVycm9yIG1lc3NhZ2Ugb24KLSAgIGZhaWx1cmUgKHNlZSBhbHNvIDpkYXRhOmBsb25nTWVzc2FnZWApLgorICAgQWxsIHRoZSBhc3NlcnQgbWV0aG9kcyBhY2NlcHQgYSAqbXNnKiBhcmd1bWVudCB0aGF0LCBpZiBzcGVjaWZpZWQsIGlzIHVzZWQKKyAgIGFzIHRoZSBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUgKHNlZSBhbHNvIDpkYXRhOmBsb25nTWVzc2FnZWApLgorICAgTm90ZSB0aGF0IHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IGNhbiBiZSBwYXNzZWQgdG8gOm1ldGg6YGFzc2VydFJhaXNlc2AsCisgICA6bWV0aDpgYXNzZXJ0UmFpc2VzUmVnZXhgLCA6bWV0aDpgYXNzZXJ0V2FybnNgLCA6bWV0aDpgYXNzZXJ0V2FybnNSZWdleGAKKyAgIG9ubHkgd2hlbiB0aGV5IGFyZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRFcXVhbChmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSkKIApAQCAtOTU1LDcgKzk1OSw3IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIAogICAgLi4gbWV0aG9kOjogYXNzZXJ0UmFpc2VzKGV4Y2VwdGlvbiwgY2FsbGFibGUsICphcmdzLCAqKmt3ZHMpCi0gICAgICAgICAgICAgICBhc3NlcnRSYWlzZXMoZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgYXNzZXJ0UmFpc2VzKGV4Y2VwdGlvbiwgbXNnPU5vbmUpCiAKICAgICAgIFRlc3QgdGhhdCBhbiBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gKmNhbGxhYmxlKiBpcyBjYWxsZWQgd2l0aCBhbnkKICAgICAgIHBvc2l0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgYWxzbyBwYXNzZWQgdG8KQEAgLTk2NCwxMiArOTY4LDE2IEBACiAgICAgICBUbyBjYXRjaCBhbnkgb2YgYSBncm91cCBvZiBleGNlcHRpb25zLCBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VwdGlvbgogICAgICAgY2xhc3NlcyBtYXkgYmUgcGFzc2VkIGFzICpleGNlcHRpb24qLgogCi0gICAgICBJZiBvbmx5IHRoZSAqZXhjZXB0aW9uKiBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJucyBhIGNvbnRleHQgbWFuYWdlciBzbwotICAgICAgdGhhdCB0aGUgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuIGlubGluZSByYXRoZXIgdGhhbiBhcyBhIGZ1bmN0aW9uOjoKKyAgICAgIElmIG9ubHkgdGhlICpleGNlcHRpb24qIGFuZCBwb3NzaWJseSB0aGUgKm1zZyogYXJndW1lbnRzIGFyZSBnaXZlbiwKKyAgICAgIHJldHVybiBhIGNvbnRleHQgbWFuYWdlciBzbyB0aGF0IHRoZSBjb2RlIHVuZGVyIHRlc3QgY2FuIGJlIHdyaXR0ZW4KKyAgICAgIGlubGluZSByYXRoZXIgdGhhbiBhcyBhIGZ1bmN0aW9uOjoKIAogICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTb21lRXhjZXB0aW9uKToKICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogCisgICAgICBXaGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIDptZXRoOmBhc3NlcnRSYWlzZXNgIGFjY2VwdHMgdGhlCisgICAgICBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgKm1zZyouCisKICAgICAgIFRoZSBjb250ZXh0IG1hbmFnZXIgd2lsbCBzdG9yZSB0aGUgY2F1Z2h0IGV4Y2VwdGlvbiBvYmplY3QgaW4gaXRzCiAgICAgICA6YXR0cjpgZXhjZXB0aW9uYCBhdHRyaWJ1dGUuICBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIGludGVudGlvbgogICAgICAgaXMgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUgZXhjZXB0aW9uIHJhaXNlZDo6CkBAIC05ODYsOSArOTk0LDEyIEBACiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgICAgQWRkZWQgdGhlIDphdHRyOmBleGNlcHRpb25gIGF0dHJpYnV0ZS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKwogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb24sIHJlZ2V4LCBjYWxsYWJsZSwgKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgIGFzc2VydFJhaXNlc1JlZ2V4KGV4Y2VwdGlvbiwgcmVnZXgpCisgICAgICAgICAgICAgICBhc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb24sIHJlZ2V4LCBtc2c9Tm9uZSkKIAogICAgICAgTGlrZSA6bWV0aDpgYXNzZXJ0UmFpc2VzYCBidXQgYWxzbyB0ZXN0cyB0aGF0ICpyZWdleCogbWF0Y2hlcwogICAgICAgb24gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmFpc2VkIGV4Y2VwdGlvbi4gICpyZWdleCogbWF5IGJlCkBAIC0xMDA1LDEyICsxMDE2LDE2IEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogICAgICAgICAgdW5kZXIgdGhlIG5hbWUgYGBhc3NlcnRSYWlzZXNSZWdleHBgYC4KKwogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgICAgIFJlbmFtZWQgdG8gOm1ldGg6YGFzc2VydFJhaXNlc1JlZ2V4YC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKwogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRXYXJucyh3YXJuaW5nLCBjYWxsYWJsZSwgKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgIGFzc2VydFdhcm5zKHdhcm5pbmcpCisgICAgICAgICAgICAgICBhc3NlcnRXYXJucyh3YXJuaW5nLCBtc2c9Tm9uZSkKIAogICAgICAgVGVzdCB0aGF0IGEgd2FybmluZyBpcyB0cmlnZ2VyZWQgd2hlbiAqY2FsbGFibGUqIGlzIGNhbGxlZCB3aXRoIGFueQogICAgICAgcG9zaXRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBhbHNvIHBhc3NlZCB0bwpAQCAtMTAxOSwxMiArMTAzNCwxNiBAQAogICAgICAgVG8gY2F0Y2ggYW55IG9mIGEgZ3JvdXAgb2Ygd2FybmluZ3MsIGEgdHVwbGUgY29udGFpbmluZyB0aGUgd2FybmluZwogICAgICAgY2xhc3NlcyBtYXkgYmUgcGFzc2VkIGFzICp3YXJuaW5ncyouCiAKLSAgICAgIElmIG9ubHkgdGhlICp3YXJuaW5nKiBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJucyBhIGNvbnRleHQgbWFuYWdlciBzbwotICAgICAgdGhhdCB0aGUgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuIGlubGluZSByYXRoZXIgdGhhbiBhcyBhIGZ1bmN0aW9uOjoKKyAgICAgIElmIG9ubHkgdGhlICp3YXJuaW5nKiBhbmQgcG9zc2libHkgdGhlICptc2cqIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sCisgICAgICByZXR1cm5zIGEgY29udGV4dCBtYW5hZ2VyIHNvIHRoYXQgdGhlIGNvZGUgdW5kZXIgdGVzdCBjYW4gYmUgd3JpdHRlbgorICAgICAgaW5saW5lIHJhdGhlciB0aGFuIGFzIGEgZnVuY3Rpb246OgogCiAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoU29tZVdhcm5pbmcpOgogICAgICAgICAgICAgIGRvX3NvbWV0aGluZygpCiAKKyAgICAgIFdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgOm1ldGg6YGFzc2VydFJhaXNlc2AgYWNjZXB0cyB0aGUKKyAgICAgIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudCAqbXNnKi4KKwogICAgICAgVGhlIGNvbnRleHQgbWFuYWdlciB3aWxsIHN0b3JlIHRoZSBjYXVnaHQgd2FybmluZyBvYmplY3QgaW4gaXRzCiAgICAgICA6YXR0cjpgd2FybmluZ2AgYXR0cmlidXRlLCBhbmQgdGhlIHNvdXJjZSBsaW5lIHdoaWNoIHRyaWdnZXJlZCB0aGUKICAgICAgIHdhcm5pbmdzIGluIHRoZSA6YXR0cjpgZmlsZW5hbWVgIGFuZCA6YXR0cjpgbGluZW5vYCBhdHRyaWJ1dGVzLgpAQCAtMTA0Miw5ICsxMDYxLDEyIEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgQWRkZWQgdGhlICptc2cqIGtleXdvcmQgYXJndW1lbnQgd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCiAKICAgIC4uIG1ldGhvZDo6IGFzc2VydFdhcm5zUmVnZXgod2FybmluZywgcmVnZXgsIGNhbGxhYmxlLCAqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgYXNzZXJ0V2FybnNSZWdleCh3YXJuaW5nLCByZWdleCkKKyAgICAgICAgICAgICAgIGFzc2VydFdhcm5zUmVnZXgod2FybmluZywgcmVnZXgsIG1zZz1Ob25lKQogCiAgICAgICBMaWtlIDptZXRoOmBhc3NlcnRXYXJuc2AgYnV0IGFsc28gdGVzdHMgdGhhdCAqcmVnZXgqIG1hdGNoZXMgb24gdGhlCiAgICAgICBtZXNzYWdlIG9mIHRoZSB0cmlnZ2VyZWQgd2FybmluZy4gICpyZWdleCogbWF5IGJlIGEgcmVndWxhciBleHByZXNzaW9uCkBAIC0xMDYyLDYgKzEwODQsOCBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KIAogCiAgICBUaGVyZSBhcmUgYWxzbyBvdGhlciBtZXRob2RzIHVzZWQgdG8gcGVyZm9ybSBtb3JlIHNwZWNpZmljIGNoZWNrcywgc3VjaCBhczoKQEAgLTExNTEsMjEgKzExNzUsNiBAQAogICAgICAgICAgOm1ldGg6YC5hc3NlcnROb3RSZWdleGAuCiAKIAotICAgLi4gbWV0aG9kOjogYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0KHN1YnNldCwgZGljdGlvbmFyeSwgbXNnPU5vbmUpCi0KLSAgICAgIFRlc3RzIHdoZXRoZXIgdGhlIGtleS92YWx1ZSBwYWlycyBpbiAqZGljdGlvbmFyeSogYXJlIGEgc3VwZXJzZXQgb2YKLSAgICAgIHRob3NlIGluICpzdWJzZXQqLiAgSWYgbm90LCBhbiBlcnJvciBtZXNzYWdlIGxpc3RpbmcgdGhlIG1pc3Npbmcga2V5cwotICAgICAgYW5kIG1pc21hdGNoZWQgdmFsdWVzIGlzIGdlbmVyYXRlZC4KLQotICAgICAgTm90ZSwgdGhlIGFyZ3VtZW50cyBhcmUgaW4gdGhlIG9wcG9zaXRlIG9yZGVyIG9mIHdoYXQgdGhlIG1ldGhvZCBuYW1lCi0gICAgICBkaWN0YXRlcy4gIEluc3RlYWQsIGNvbnNpZGVyIHVzaW5nIHRoZSBzZXQtbWV0aG9kcyBvbiA6cmVmOmBkaWN0aW9uYXJ5Ci0gICAgICB2aWV3cyA8ZGljdC12aWV3cz5gLCBmb3IgZXhhbXBsZTogYGBkLmtleXMoKSA8PSBlLmtleXMoKWBgIG9yCi0gICAgICBgYGQuaXRlbXMoKSA8PSBkLml0ZW1zKClgYC4KLQotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCi0gICAgICAuLiBkZXByZWNhdGVkOjogMy4yCi0KLQogICAgLi4gbWV0aG9kOjogYXNzZXJ0Q291bnRFcXVhbChmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSkKIAogICAgICAgVGVzdCB0aGF0IHNlcXVlbmNlICpmaXJzdCogY29udGFpbnMgdGhlIHNhbWUgZWxlbWVudHMgYXMgKnNlY29uZCosCkBAIC0xMTgwLDIxICsxMTg5LDYgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIG1ldGhvZDo6IGFzc2VydFNhbWVFbGVtZW50cyhmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSkKLQotICAgICAgVGVzdCB0aGF0IHNlcXVlbmNlICpmaXJzdCogY29udGFpbnMgdGhlIHNhbWUgZWxlbWVudHMgYXMgKnNlY29uZCosCi0gICAgICByZWdhcmRsZXNzIG9mIHRoZWlyIG9yZGVyLiBXaGVuIHRoZXkgZG9uJ3QsIGFuIGVycm9yIG1lc3NhZ2UgbGlzdGluZwotICAgICAgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHNlcXVlbmNlcyB3aWxsIGJlIGdlbmVyYXRlZC4KLQotICAgICAgRHVwbGljYXRlIGVsZW1lbnRzIGFyZSBpZ25vcmVkIHdoZW4gY29tcGFyaW5nICpmaXJzdCogYW5kICpzZWNvbmQqLgotICAgICAgSXQgaXMgdGhlIGVxdWl2YWxlbnQgb2YgYGBhc3NlcnRFcXVhbChzZXQoZmlyc3QpLCBzZXQoc2Vjb25kKSlgYAotICAgICAgYnV0IGl0IHdvcmtzIHdpdGggc2VxdWVuY2VzIG9mIHVuaGFzaGFibGUgb2JqZWN0cyBhcyB3ZWxsLiBCZWNhdXNlCi0gICAgICBkdXBsaWNhdGVzIGFyZSBpZ25vcmVkLCB0aGlzIG1ldGhvZCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZgotICAgICAgOm1ldGg6YGFzc2VydENvdW50RXF1YWxgLgotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKLSAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjIKLQogCiAgICAuLiBfdHlwZS1zcGVjaWZpYy1tZXRob2RzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIuZXJyb3IucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLmVycm9yLnJzdAppbmRleCAyODIzMjlmLi5lMjBkYjI3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIuZXJyb3IucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5lcnJvci5yc3QKQEAgLTgsMjEgKzgsMjMgQEAKIAogCiBUaGUgOm1vZDpgdXJsbGliLmVycm9yYCBtb2R1bGUgZGVmaW5lcyB0aGUgZXhjZXB0aW9uIGNsYXNzZXMgZm9yIGV4Y2VwdGlvbnMKLXJhaXNlZCBieSA6bW9kOmB1cmxsaWIucmVxdWVzdGAuICBUaGUgYmFzZSBleGNlcHRpb24gY2xhc3MgaXMgOmV4YzpgVVJMRXJyb3JgLAotd2hpY2ggaW5oZXJpdHMgZnJvbSA6ZXhjOmBJT0Vycm9yYC4KK3JhaXNlZCBieSA6bW9kOmB1cmxsaWIucmVxdWVzdGAuICBUaGUgYmFzZSBleGNlcHRpb24gY2xhc3MgaXMgOmV4YzpgVVJMRXJyb3JgLgogCiBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHJhaXNlZCBieSA6bW9kOmB1cmxsaWIuZXJyb3JgIGFzIGFwcHJvcHJpYXRlOgogCiAuLiBleGNlcHRpb246OiBVUkxFcnJvcgogCiAgICBUaGUgaGFuZGxlcnMgcmFpc2UgdGhpcyBleGNlcHRpb24gKG9yIGRlcml2ZWQgZXhjZXB0aW9ucykgd2hlbiB0aGV5IHJ1biBpbnRvCi0gICBhIHByb2JsZW0uICBJdCBpcyBhIHN1YmNsYXNzIG9mIDpleGM6YElPRXJyb3JgLgorICAgYSBwcm9ibGVtLiAgSXQgaXMgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogICAgLi4gYXR0cmlidXRlOjogcmVhc29uCiAKICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgZXJyb3IuICBJdCBjYW4gYmUgYSBtZXNzYWdlIHN0cmluZyBvciBhbm90aGVyCi0gICAgICBleGNlcHRpb24gaW5zdGFuY2UgKDpleGM6YHNvY2tldC5lcnJvcmAgZm9yIHJlbW90ZSBVUkxzLCA6ZXhjOmBPU0Vycm9yYAotICAgICAgZm9yIGxvY2FsIFVSTHMpLgorICAgICAgZXhjZXB0aW9uIGluc3RhbmNlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgVVJMRXJyb3JgIGhhcyBiZWVuIG1hZGUgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYCBpbnN0ZWFkCisgICAgICBvZiA6ZXhjOmBJT0Vycm9yYC4KIAogCiAuLiBleGNlcHRpb246OiBIVFRQRXJyb3IKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAppbmRleCBiNDc2NGNjLi44OThmZTcxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CkBAIC0xNiw3ICsxNiw3IEBACiBUaGUgOm1vZDpgdXJsbGliLnJlcXVlc3RgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAKLS4uIGZ1bmN0aW9uOjogdXJsb3Blbih1cmwsIGRhdGE9Tm9uZVssIHRpbWVvdXRdLCAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUpCisuLiBmdW5jdGlvbjo6IHVybG9wZW4odXJsLCBkYXRhPU5vbmVbLCB0aW1lb3V0XSwgKiwgY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lLCBjYWRlZmF1bHQ9VHJ1ZSkKIAogICAgT3BlbiB0aGUgVVJMICp1cmwqLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEKICAgIDpjbGFzczpgUmVxdWVzdGAgb2JqZWN0LgpAQCAtNTMsOSArNTMsMTUgQEAKICAgIHBvaW50IHRvIGEgZGlyZWN0b3J5IG9mIGhhc2hlZCBjZXJ0aWZpY2F0ZSBmaWxlcy4gIE1vcmUgaW5mb3JtYXRpb24gY2FuCiAgICBiZSBmb3VuZCBpbiA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zYC4KIAorICAgVGhlICpjYWRlZmF1bHQqIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciB0byBmYWxsIGJhY2sgdG8gbG9hZGluZyBhCisgICBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGRlZmluZWQgYnkgdGhlIHVuZGVybHlpbmcgT3BlblNTTCBsaWJyYXJ5IGlmIHRoZQorICAgKmNhZmlsZSogYW5kICpjYXBhdGgqIHBhcmFtZXRlcnMgYXJlIG9taXR0ZWQuICBUaGlzIHdpbGwgb25seSB3b3JrIG9uCisgICBzb21lIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KKwogICAgLi4gd2FybmluZzo6Ci0gICAgICBJZiBuZWl0aGVyICpjYWZpbGUqIG5vciAqY2FwYXRoKiBpcyBzcGVjaWZpZWQsIGFuIEhUVFBTIHJlcXVlc3QKLSAgICAgIHdpbGwgbm90IGRvIGFueSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlLgorICAgICAgSWYgbmVpdGhlciAqY2FmaWxlKiBub3IgKmNhcGF0aCogaXMgc3BlY2lmaWVkLCBhbmQgKmNhZGVmYXVsdCogaXMgRmFsc2UsCisgICAgICBhbiBIVFRQUyByZXF1ZXN0IHdpbGwgbm90IGRvIGFueSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlcnZlcidzCisgICAgICBjZXJ0aWZpY2F0ZS4KIAogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgZmlsZS1saWtlIG9iamVjdCB0aGF0IHdvcmtzIGFzIGEgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAsCiAgICB3aXRoIHR3byBhZGRpdGlvbmFsIG1ldGhvZHMgZnJvbSB0aGUgOm1vZDpgdXJsbGliLnJlc3BvbnNlYCBtb2R1bGUKQEAgLTkyLDYgKzk4LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgKmRhdGEqIGNhbiBiZSBhbiBpdGVyYWJsZSBvYmplY3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqY2FkZWZhdWx0KiB3YXMgYWRkZWQuCisKIC4uIGZ1bmN0aW9uOjogaW5zdGFsbF9vcGVuZXIob3BlbmVyKQogCiAgICBJbnN0YWxsIGFuIDpjbGFzczpgT3BlbmVyRGlyZWN0b3JgIGluc3RhbmNlIGFzIHRoZSBkZWZhdWx0IGdsb2JhbCBvcGVuZXIuCkBAIC0xNDUsNyArMTU0LDcgQEAKIAogVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBwcm92aWRlZDoKIAotLi4gY2xhc3M6OiBSZXF1ZXN0KHVybCwgZGF0YT1Ob25lLCBoZWFkZXJzPXt9LCBvcmlnaW5fcmVxX2hvc3Q9Tm9uZSwgdW52ZXJpZmlhYmxlPUZhbHNlKQorLi4gY2xhc3M6OiBSZXF1ZXN0KHVybCwgZGF0YT1Ob25lLCBoZWFkZXJzPXt9LCBvcmlnaW5fcmVxX2hvc3Q9Tm9uZSwgdW52ZXJpZmlhYmxlPUZhbHNlLCBtZXRob2Q9Tm9uZSkKIAogICAgVGhpcyBjbGFzcyBpcyBhbiBhYnN0cmFjdGlvbiBvZiBhIFVSTCByZXF1ZXN0LgogCkBAIC0xOTgsNiArMjA3LDEzIEBACiAgICBkb2N1bWVudCwgYW5kIHRoZSB1c2VyIGhhZCBubyBvcHRpb24gdG8gYXBwcm92ZSB0aGUgYXV0b21hdGljCiAgICBmZXRjaGluZyBvZiB0aGUgaW1hZ2UsIHRoaXMgc2hvdWxkIGJlIHRydWUuCiAKKyAgICptZXRob2QqIHNob3VsZCBiZSBhIHN0cmluZyB0aGF0IGluZGljYXRlcyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZCB0aGF0CisgICB3aWxsIGJlIHVzZWQgKGUuZy4gYGAnSEVBRCdgYCkuICBJdHMgdmFsdWUgaXMgc3RvcmVkIGluIHRoZQorICAgOmF0dHI6YH5SZXF1ZXN0Lm1ldGhvZGAgYXR0cmlidXRlIGFuZCBpcyB1c2VkIGJ5IDptZXRoOmBnZXRfbWV0aG9kKClgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmF0dHI6YFJlcXVlc3QubWV0aG9kYCBhcmd1bWVudCBpcyBhZGRlZCB0byB0aGUgUmVxdWVzdCBjbGFzcy4KKwogCiAuLiBjbGFzczo6IE9wZW5lckRpcmVjdG9yKCkKIApAQCAtMjYzLDEwICsyNzksMTEgQEAKIAogLi4gY2xhc3M6OiBIVFRQQmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKIAotICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZCBiZQotICAgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8gc2VjdGlvbgotICAgOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdCBiZQotICAgc3VwcG9ydGVkLgorICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZAorICAgYmUgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8KKyAgIHNlY3Rpb24gOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdAorICAgYmUgc3VwcG9ydGVkLiBIVFRQQmFzaWNBdXRoSGFuZGxlciB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbgorICAgcHJlc2VudGVkIHdpdGggYSB3cm9uZyBBdXRoZW50aWNhdGlvbiBzY2hlbWUuCiAKIAogLi4gY2xhc3M6OiBQcm94eUJhc2ljQXV0aEhhbmRsZXIocGFzc3dvcmRfbWdyPU5vbmUpCkBAIC0yODgsMTAgKzMwNSwxOSBAQAogCiAuLiBjbGFzczo6IEhUVFBEaWdlc3RBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKIAotICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZCBiZQotICAgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8gc2VjdGlvbgotICAgOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdCBiZQotICAgc3VwcG9ydGVkLgorICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZAorICAgYmUgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8KKyAgIHNlY3Rpb24gOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdAorICAgYmUgc3VwcG9ydGVkLiBXaGVuIGJvdGggRGlnZXN0IEF1dGhlbnRpY2F0aW9uIEhhbmRsZXIgYW5kIEJhc2ljCisgICBBdXRoZW50aWNhdGlvbiBIYW5kbGVyIGFyZSBib3RoIGFkZGVkLCBEaWdlc3QgQXV0aGVudGljYXRpb24gaXMgYWx3YXlzIHRyaWVkCisgICBmaXJzdC4gSWYgdGhlIERpZ2VzdCBBdXRoZW50aWNhdGlvbiByZXR1cm5zIGEgNDB4IHJlc3BvbnNlIGFnYWluLCBpdCBpcyBzZW50CisgICB0byBCYXNpYyBBdXRoZW50aWNhdGlvbiBoYW5kbGVyIHRvIEhhbmRsZS4gIFRoaXMgSGFuZGxlciBtZXRob2Qgd2lsbCByYWlzZSBhCisgICA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuIHByZXNlbnRlZCB3aXRoIGFuIGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBvdGhlciB0aGFuCisgICBEaWdlc3Qgb3IgQmFzaWMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCBvbiB1bnN1cHBvcnRlZCBBdXRoZW50aWNhdGlvbiBTY2hlbWUuCisKIAogCiAuLiBjbGFzczo6IFByb3h5RGlnZXN0QXV0aEhhbmRsZXIocGFzc3dvcmRfbWdyPU5vbmUpCkBAIC0zODIsMjcgKzQwOCwyNSBAQAogICAgYm9vbGVhbiwgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMgdW52ZXJpZmlhYmxlIGFzIGRlZmluZWQKICAgIGJ5IFJGQyAyOTY1LgogCi0uLiBtZXRob2Q6OiBSZXF1ZXN0LmFkZF9kYXRhKGRhdGEpCisuLiBhdHRyaWJ1dGU6OiBSZXF1ZXN0Lm1ldGhvZAogCi0gICBTZXQgdGhlIDpjbGFzczpgUmVxdWVzdGAgZGF0YSB0byAqZGF0YSouICBUaGlzIGlzIGlnbm9yZWQgYnkgYWxsIGhhbmRsZXJzIGV4Y2VwdAotICAgSFRUUCBoYW5kbGVycyAtLS0gYW5kIHRoZXJlIGl0IHNob3VsZCBiZSBhIGJ5dGUgc3RyaW5nLCBhbmQgd2lsbCBjaGFuZ2UgdGhlCi0gICByZXF1ZXN0IHRvIGJlIGBgUE9TVGBgIHJhdGhlciB0aGFuIGBgR0VUYGAuCisgICBUaGUgSFRUUCByZXF1ZXN0IG1ldGhvZCB0byB1c2UuICBUaGlzIHZhbHVlIGlzIHVzZWQgYnkKKyAgIDptZXRoOmB+UmVxdWVzdC5nZXRfbWV0aG9kYCB0byBvdmVycmlkZSB0aGUgY29tcHV0ZWQgSFRUUCByZXF1ZXN0CisgICBtZXRob2QgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgcmV0dXJuZWQuICBUaGlzIGF0dHJpYnV0ZSBpcyBpbml0aWFsaXplZCB3aXRoCisgICB0aGUgdmFsdWUgb2YgdGhlICptZXRob2QqIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X21ldGhvZCgpCiAKLSAgIFJldHVybiBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kLiAgVGhpcyBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yCi0gICBIVFRQIHJlcXVlc3RzLCBhbmQgY3VycmVudGx5IGFsd2F5cyByZXR1cm5zIGBgJ0dFVCdgYCBvciBgYCdQT1NUJ2BgLgorICAgUmV0dXJuIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QuICBJZgorICAgOmF0dHI6YFJlcXVlc3QubWV0aG9kYCBpcyBub3QgYGBOb25lYGAsIHJldHVybiBpdHMgdmFsdWUsIG90aGVyd2lzZSByZXR1cm4KKyAgIGBgJ0dFVCdgYCBpZiA6YXR0cjpgUmVxdWVzdC5kYXRhYCBpcyBgYE5vbmVgYCwgb3IgYGAnUE9TVCdgYCBpZiBpdCdzIG5vdC4KKyAgIFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZvciBIVFRQIHJlcXVlc3RzLgogCi0KLS4uIG1ldGhvZDo6IFJlcXVlc3QuaGFzX2RhdGEoKQotCi0gICBSZXR1cm4gd2hldGhlciB0aGUgaW5zdGFuY2UgaGFzIGEgbm9uLVwgYGBOb25lYGAgZGF0YS4KLQotCi0uLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9kYXRhKCkKLQotICAgUmV0dXJuIHRoZSBpbnN0YW5jZSdzIGRhdGEuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgZ2V0X21ldGhvZCBub3cgbG9va3MgYXQgdGhlIHZhbHVlIG9mIDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAuCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5hZGRfaGVhZGVyKGtleSwgdmFsKQpAQCAtNDMyLDIwICs0NTYsNjAgQEAKICAgIFJldHVybiB0aGUgVVJMIGdpdmVuIGluIHRoZSBjb25zdHJ1Y3Rvci4KIAogCisuLiBtZXRob2Q6OiBSZXF1ZXN0LnNldF9wcm94eShob3N0LCB0eXBlKQorCisgICBQcmVwYXJlIHRoZSByZXF1ZXN0IGJ5IGNvbm5lY3RpbmcgdG8gYSBwcm94eSBzZXJ2ZXIuIFRoZSAqaG9zdCogYW5kICp0eXBlKiB3aWxsCisgICByZXBsYWNlIHRob3NlIG9mIHRoZSBpbnN0YW5jZSwgYW5kIHRoZSBpbnN0YW5jZSdzIHNlbGVjdG9yIHdpbGwgYmUgdGhlIG9yaWdpbmFsCisgICBVUkwgZ2l2ZW4gaW4gdGhlIGNvbnN0cnVjdG9yLgorCisKKy4uIG1ldGhvZDo6IFJlcXVlc3QuYWRkX2RhdGEoZGF0YSkKKworICAgU2V0IHRoZSA6Y2xhc3M6YFJlcXVlc3RgIGRhdGEgdG8gKmRhdGEqLiAgVGhpcyBpcyBpZ25vcmVkIGJ5IGFsbCBoYW5kbGVycyBleGNlcHQKKyAgIEhUVFAgaGFuZGxlcnMgLS0tIGFuZCB0aGVyZSBpdCBzaG91bGQgYmUgYSBieXRlIHN0cmluZywgYW5kIHdpbGwgY2hhbmdlIHRoZQorICAgcmVxdWVzdCB0byBiZSBgYFBPU1RgYCByYXRoZXIgdGhhbiBgYEdFVGBgLiAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZQorICAgOmF0dHI6YFJlcXVlc3QuZGF0YWAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworCisuLiBtZXRob2Q6OiBSZXF1ZXN0Lmhhc19kYXRhKCkKKworICAgUmV0dXJuIHdoZXRoZXIgdGhlIGluc3RhbmNlIGhhcyBhIG5vbi1cIGBgTm9uZWBgIGRhdGEuIERlcHJlY2F0ZWQgaW4gMy4zLAorICAgdXNlIDphdHRyOmBSZXF1ZXN0LmRhdGFgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKworLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfZGF0YSgpCisKKyAgIFJldHVybiB0aGUgaW5zdGFuY2UncyBkYXRhLiAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZSA6YXR0cjpgUmVxdWVzdC5kYXRhYC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X3R5cGUoKQogCi0gICBSZXR1cm4gdGhlIHR5cGUgb2YgdGhlIFVSTCAtLS0gYWxzbyBrbm93biBhcyB0aGUgc2NoZW1lLgorICAgUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBVUkwgLS0tIGFsc28ga25vd24gYXMgdGhlIHNjaGVtZS4gIERlcHJlY2F0ZWQgaW4gMy4zLAorICAgdXNlIDphdHRyOmBSZXF1ZXN0LnR5cGVgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfaG9zdCgpCiAKLSAgIFJldHVybiB0aGUgaG9zdCB0byB3aGljaCBhIGNvbm5lY3Rpb24gd2lsbCBiZSBtYWRlLgorICAgUmV0dXJuIHRoZSBob3N0IHRvIHdoaWNoIGEgY29ubmVjdGlvbiB3aWxsIGJlIG1hZGUuIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UKKyAgIDphdHRyOmBSZXF1ZXN0Lmhvc3RgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfc2VsZWN0b3IoKQogCiAgICBSZXR1cm4gdGhlIHNlbGVjdG9yIC0tLSB0aGUgcGFydCBvZiB0aGUgVVJMIHRoYXQgaXMgc2VudCB0byB0aGUgc2VydmVyLgorICAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZSA6YXR0cjpgUmVxdWVzdC5zZWxlY3RvcmAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfaGVhZGVyKGhlYWRlcl9uYW1lLCBkZWZhdWx0PU5vbmUpCiAKQEAgLTQ2MCwyMSArNTI0LDIyIEBACiAKIC4uIG1ldGhvZDo6IFJlcXVlc3Quc2V0X3Byb3h5KGhvc3QsIHR5cGUpCiAKLSAgIFByZXBhcmUgdGhlIHJlcXVlc3QgYnkgY29ubmVjdGluZyB0byBhIHByb3h5IHNlcnZlci4gVGhlICpob3N0KiBhbmQgKnR5cGUqIHdpbGwKLSAgIHJlcGxhY2UgdGhvc2Ugb2YgdGhlIGluc3RhbmNlLCBhbmQgdGhlIGluc3RhbmNlJ3Mgc2VsZWN0b3Igd2lsbCBiZSB0aGUgb3JpZ2luYWwKLSAgIFVSTCBnaXZlbiBpbiB0aGUgY29uc3RydWN0b3IuCi0KLQogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfb3JpZ2luX3JlcV9ob3N0KCkKIAotICAgUmV0dXJuIHRoZSByZXF1ZXN0LWhvc3Qgb2YgdGhlIG9yaWdpbiB0cmFuc2FjdGlvbiwgYXMgZGVmaW5lZCBieSA6cmZjOmAyOTY1YC4KLSAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuCisgICBSZXR1cm4gdGhlIHJlcXVlc3QtaG9zdCBvZiB0aGUgb3JpZ2luIHRyYW5zYWN0aW9uLCBhcyBkZWZpbmVkIGJ5CisgICA6cmZjOmAyOTY1YC4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuCisgICBEZXByZWNhdGVkIGluIDMuMywgdXNlIDphdHRyOmBSZXF1ZXN0Lm9yaWdpbl9yZXFfaG9zdGAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmlzX3VudmVyaWZpYWJsZSgpCiAKICAgIFJldHVybiB3aGV0aGVyIHRoZSByZXF1ZXN0IGlzIHVudmVyaWZpYWJsZSwgYXMgZGVmaW5lZCBieSBSRkMgMjk2NS4gU2VlIHRoZQotICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuCisgICBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBjb25zdHJ1Y3Rvci4gIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UKKyAgIDphdHRyOmBSZXF1ZXN0LnVudmVyaWZpYWJsZWAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogCiAuLiBfb3BlbmVyLWRpcmVjdG9yLW9iamVjdHM6CkBAIC0xMTM4LDE2ICsxMjAzLDE0IEBACiBgYHVybGxpYmBgIChhcyBvcHBvc2VkIHRvIGBgdXJsbGliMmBgKS4gIFRoZXkgbWlnaHQgYmVjb21lIGRlcHJlY2F0ZWQgYXQKIHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZS4KIAotCiAuLiBmdW5jdGlvbjo6IHVybHJldHJpZXZlKHVybCwgZmlsZW5hbWU9Tm9uZSwgcmVwb3J0aG9vaz1Ob25lLCBkYXRhPU5vbmUpCiAKLSAgIENvcHkgYSBuZXR3b3JrIG9iamVjdCBkZW5vdGVkIGJ5IGEgVVJMIHRvIGEgbG9jYWwgZmlsZSwgaWYgbmVjZXNzYXJ5LiBJZiB0aGUgVVJMCi0gICBwb2ludHMgdG8gYSBsb2NhbCBmaWxlLCBvciBhIHZhbGlkIGNhY2hlZCBjb3B5IG9mIHRoZSBvYmplY3QgZXhpc3RzLCB0aGUgb2JqZWN0Ci0gICBpcyBub3QgY29waWVkLiAgUmV0dXJuIGEgdHVwbGUgYGAoZmlsZW5hbWUsIGhlYWRlcnMpYGAgd2hlcmUgKmZpbGVuYW1lKiBpcyB0aGUKKyAgIENvcHkgYSBuZXR3b3JrIG9iamVjdCBkZW5vdGVkIGJ5IGEgVVJMIHRvIGEgbG9jYWwgZmlsZS4gSWYgdGhlIFVSTAorICAgcG9pbnRzIHRvIGEgbG9jYWwgZmlsZSwgdGhlIG9iamVjdCB3aWxsIG5vdCBiZSBjb3BpZWQgdW5sZXNzIGZpbGVuYW1lIGlzIHN1cHBsaWVkLgorICAgUmV0dXJuIGEgdHVwbGUgYGAoZmlsZW5hbWUsIGhlYWRlcnMpYGAgd2hlcmUgKmZpbGVuYW1lKiBpcyB0aGUKICAgIGxvY2FsIGZpbGUgbmFtZSB1bmRlciB3aGljaCB0aGUgb2JqZWN0IGNhbiBiZSBmb3VuZCwgYW5kICpoZWFkZXJzKiBpcyB3aGF0ZXZlcgogICAgdGhlIDptZXRoOmBpbmZvYCBtZXRob2Qgb2YgdGhlIG9iamVjdCByZXR1cm5lZCBieSA6ZnVuYzpgdXJsb3BlbmAgcmV0dXJuZWQgKGZvcgotICAgYSByZW1vdGUgb2JqZWN0LCBwb3NzaWJseSBjYWNoZWQpLiBFeGNlcHRpb25zIGFyZSB0aGUgc2FtZSBhcyBmb3IKLSAgIDpmdW5jOmB1cmxvcGVuYC4KKyAgIGEgcmVtb3RlIG9iamVjdCkuIEV4Y2VwdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGZvciA6ZnVuYzpgdXJsb3BlbmAuCiAKICAgIFRoZSBzZWNvbmQgYXJndW1lbnQsIGlmIHByZXNlbnQsIHNwZWNpZmllcyB0aGUgZmlsZSBsb2NhdGlvbiB0byBjb3B5IHRvIChpZgogICAgYWJzZW50LCB0aGUgbG9jYXRpb24gd2lsbCBiZSBhIHRlbXBmaWxlIHdpdGggYSBnZW5lcmF0ZWQgbmFtZSkuIFRoZSB0aGlyZApAQCAtMTE1OCw2ICsxMjIxLDEzIEBACiAgICB0aGlyZCBhcmd1bWVudCBtYXkgYmUgYGAtMWBgIG9uIG9sZGVyIEZUUCBzZXJ2ZXJzIHdoaWNoIGRvIG5vdCByZXR1cm4gYSBmaWxlCiAgICBzaXplIGluIHJlc3BvbnNlIHRvIGEgcmV0cmlldmFsIHJlcXVlc3QuCiAKKyAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpbGx1c3RyYXRlcyB0aGUgbW9zdCBjb21tb24gdXNhZ2Ugc2NlbmFyaW86OgorCisgICAgICA+Pj4gaW1wb3J0IHVybGxpYi5yZXF1ZXN0CisgICAgICA+Pj4gbG9jYWxfZmlsZW5hbWUsIGhlYWRlcnMgPSB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZSgnaHR0cDovL3B5dGhvbi5vcmcvJykKKyAgICAgID4+PiBodG1sID0gb3Blbihsb2NhbF9maWxlbmFtZSkKKyAgICAgID4+PiBodG1sLmNsb3NlKCkKKwogICAgSWYgdGhlICp1cmwqIHVzZXMgdGhlIDpmaWxlOmBodHRwOmAgc2NoZW1lIGlkZW50aWZpZXIsIHRoZSBvcHRpb25hbCAqZGF0YSoKICAgIGFyZ3VtZW50IG1heSBiZSBnaXZlbiB0byBzcGVjaWZ5IGEgYGBQT1NUYGAgcmVxdWVzdCAobm9ybWFsbHkgdGhlIHJlcXVlc3QKICAgIHR5cGUgaXMgYGBHRVRgYCkuICBUaGUgKmRhdGEqIGFyZ3VtZW50IG11c3QgYmUgYSBieXRlcyBvYmplY3QgaW4gc3RhbmRhcmQKQEAgLTExNzAsMjAgKzEyNDAsMjAgQEAKICAgIHRoZSAgZG93bmxvYWQgaXMgaW50ZXJydXB0ZWQuCiAKICAgIFRoZSAqQ29udGVudC1MZW5ndGgqIGlzIHRyZWF0ZWQgYXMgYSBsb3dlciBib3VuZDogaWYgdGhlcmUncyBtb3JlIGRhdGEgIHRvIHJlYWQsCi0gICA6ZnVuYzpgdXJscmV0cmlldmVgIHJlYWRzIG1vcmUgZGF0YSwgYnV0IGlmIGxlc3MgZGF0YSBpcyBhdmFpbGFibGUsICBpdCByYWlzZXMKLSAgIHRoZSBleGNlcHRpb24uCisgICB1cmxyZXRyaWV2ZSByZWFkcyBtb3JlIGRhdGEsIGJ1dCBpZiBsZXNzIGRhdGEgaXMgYXZhaWxhYmxlLCAgaXQgcmFpc2VzIHRoZQorICAgZXhjZXB0aW9uLgogCiAgICBZb3UgY2FuIHN0aWxsIHJldHJpZXZlIHRoZSBkb3dubG9hZGVkIGRhdGEgaW4gdGhpcyBjYXNlLCBpdCBpcyBzdG9yZWQgIGluIHRoZQogICAgOmF0dHI6YGNvbnRlbnRgIGF0dHJpYnV0ZSBvZiB0aGUgZXhjZXB0aW9uIGluc3RhbmNlLgogCi0gICBJZiBubyAqQ29udGVudC1MZW5ndGgqIGhlYWRlciB3YXMgc3VwcGxpZWQsIDpmdW5jOmB1cmxyZXRyaWV2ZWAgY2FuIG5vdCBjaGVjawotICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgaXQgaGFzIGRvd25sb2FkZWQsIGFuZCBqdXN0IHJldHVybnMgaXQuICBJbiB0aGlzIGNhc2UKLSAgIHlvdSBqdXN0IGhhdmUgdG8gYXNzdW1lIHRoYXQgdGhlIGRvd25sb2FkIHdhcyBzdWNjZXNzZnVsLgorICAgSWYgbm8gKkNvbnRlbnQtTGVuZ3RoKiBoZWFkZXIgd2FzIHN1cHBsaWVkLCB1cmxyZXRyaWV2ZSBjYW4gbm90IGNoZWNrIHRoZSBzaXplCisgICBvZiB0aGUgZGF0YSBpdCBoYXMgZG93bmxvYWRlZCwgYW5kIGp1c3QgcmV0dXJucyBpdC4gIEluIHRoaXMgY2FzZSB5b3UganVzdCBoYXZlCisgICB0byBhc3N1bWUgdGhhdCB0aGUgZG93bmxvYWQgd2FzIHN1Y2Nlc3NmdWwuCiAKIC4uIGZ1bmN0aW9uOjogdXJsY2xlYW51cCgpCiAKLSAgIENsZWFyIHRoZSBjYWNoZSB0aGF0IG1heSBoYXZlIGJlZW4gYnVpbHQgdXAgYnkgcHJldmlvdXMgY2FsbHMgdG8KLSAgIDpmdW5jOmB1cmxyZXRyaWV2ZWAuCisgICBDbGVhbnMgdXAgdGVtcG9yYXJ5IGZpbGVzIHRoYXQgbWF5IGhhdmUgYmVlbiBsZWZ0IGJlaGluZCBieSBwcmV2aW91cworICAgY2FsbHMgdG8gOmZ1bmM6YHVybHJldHJpZXZlYC4KIAogLi4gY2xhc3M6OiBVUkxvcGVuZXIocHJveGllcz1Ob25lLCAqKng1MDkpCiAKQEAgLTEyMDcsNyArMTI3Nyw3IEBACiAgICAqa2V5X2ZpbGUqIGFuZCAqY2VydF9maWxlKiBhcmUgc3VwcG9ydGVkIHRvIHByb3ZpZGUgYW4gIFNTTCBrZXkgYW5kIGNlcnRpZmljYXRlOwogICAgYm90aCBhcmUgbmVlZGVkIHRvIHN1cHBvcnQgY2xpZW50IGF1dGhlbnRpY2F0aW9uLgogCi0gICA6Y2xhc3M6YFVSTG9wZW5lcmAgb2JqZWN0cyB3aWxsIHJhaXNlIGFuIDpleGM6YElPRXJyb3JgIGV4Y2VwdGlvbiBpZiB0aGUgc2VydmVyCisgICA6Y2xhc3M6YFVSTG9wZW5lcmAgb2JqZWN0cyB3aWxsIHJhaXNlIGFuIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpZiB0aGUgc2VydmVyCiAgICByZXR1cm5zIGFuIGVycm9yIGNvZGUuCiAKICAgICAuLiBtZXRob2Q6OiBvcGVuKGZ1bGx1cmwsIGRhdGE9Tm9uZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ZlbnYucnN0IGIvRG9jL2xpYnJhcnkvdmVudi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ5OTk2MgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3ZlbnYucnN0CkBAIC0wLDAgKzEsMTgwIEBACis6bW9kOmB2ZW52YCAtLS0gQ3JlYXRpb24gb2YgdmlydHVhbCBlbnZpcm9ubWVudHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiB2ZW52CisgICA6c3lub3BzaXM6IENyZWF0aW9uIG9mIHZpcnR1YWwgZW52aXJvbm1lbnRzLgorLi4gbW9kdWxlYXV0aG9yOjogVmluYXkgU2FqaXAgPHZpbmF5X3NhamlwQHlhaG9vLmNvLnVrPgorLi4gc2VjdGlvbmF1dGhvcjo6IFZpbmF5IFNhamlwIDx2aW5heV9zYWppcEB5YWhvby5jby51az4KKworCisuLiBpbmRleDo6IHBhaXI6IEVudmlyb25tZW50czsgdmlydHVhbAorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvdmVudi5weWAKKworLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBwcm92aWRlcyBzdXBwb3J0IGZvciBjcmVhdGluZyBsaWdodHdlaWdodCAidmlydHVhbAorZW52aXJvbm1lbnRzIiB3aXRoIHRoZWlyIG93biBzaXRlIGRpcmVjdG9yaWVzLCBvcHRpb25hbGx5IGlzb2xhdGVkIGZyb20gc3lzdGVtCitzaXRlIGRpcmVjdG9yaWVzLiAgRWFjaCB2aXJ0dWFsIGVudmlyb25tZW50IGhhcyBpdHMgb3duIFB5dGhvbiBiaW5hcnkgKGFsbG93aW5nCitjcmVhdGlvbiBvZiBlbnZpcm9ubWVudHMgd2l0aCB2YXJpb3VzIFB5dGhvbiB2ZXJzaW9ucykgYW5kIGNhbiBoYXZlIGl0cyBvd24KK2luZGVwZW5kZW50IHNldCBvZiBpbnN0YWxsZWQgUHl0aG9uIHBhY2thZ2VzIGluIGl0cyBzaXRlIGRpcmVjdG9yaWVzLgorCisKK0NyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmNsdWRlOjogL3VzaW5nL3ZlbnYtY3JlYXRlLmluYworCisKKy4uIF92ZW52LWRlZjoKKworLi4gbm90ZTo6IEEgdmlydHVhbCBlbnZpcm9ubWVudCAoYWxzbyBjYWxsZWQgYSBgYHZlbnZgYCkgaXMgYSBQeXRob24KKyAgIGVudmlyb25tZW50IHN1Y2ggdGhhdCB0aGUgUHl0aG9uIGludGVycHJldGVyLCBsaWJyYXJpZXMgYW5kIHNjcmlwdHMKKyAgIGluc3RhbGxlZCBpbnRvIGl0IGFyZSBpc29sYXRlZCBmcm9tIHRob3NlIGluc3RhbGxlZCBpbiBvdGhlciB2aXJ0dWFsCisgICBlbnZpcm9ubWVudHMsIGFuZCAoYnkgZGVmYXVsdCkgYW55IGxpYnJhcmllcyBpbnN0YWxsZWQgaW4gYSAic3lzdGVtIiBQeXRob24sCisgICBpLmUuIG9uZSB3aGljaCBpcyBpbnN0YWxsZWQgYXMgcGFydCBvZiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0uCisKKyAgIEEgdmVudiBpcyBhIGRpcmVjdG9yeSB0cmVlIHdoaWNoIGNvbnRhaW5zIFB5dGhvbiBleGVjdXRhYmxlIGZpbGVzIGFuZAorICAgb3RoZXIgZmlsZXMgd2hpY2ggaW5kaWNhdGUgdGhhdCBpdCBpcyBhIHZlbnYuCisKKyAgIENvbW1vbiBpbnN0YWxsYXRpb24gdG9vbHMgc3VjaCBhcyBgYERpc3RyaWJ1dGVgYCBhbmQgYGBwaXBgYCB3b3JrIGFzCisgICBleHBlY3RlZCB3aXRoIHZlbnZzIC0gaS5lLiB3aGVuIGEgdmVudiBpcyBhY3RpdmUsIHRoZXkgaW5zdGFsbCBQeXRob24KKyAgIHBhY2thZ2VzIGludG8gdGhlIHZlbnYgd2l0aG91dCBuZWVkaW5nIHRvIGJlIHRvbGQgdG8gZG8gc28gZXhwbGljaXRseS4KKyAgIE9mIGNvdXJzZSwgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGVtIGludG8gdGhlIHZlbnYgZmlyc3Q6IHRoaXMgY291bGQgYmUKKyAgIGRvbmUgYnkgcnVubmluZyBgYGRpc3RyaWJ1dGVfc2V0dXAucHlgYCB3aXRoIHRoZSB2ZW52IGFjdGl2YXRlZCwKKyAgIGZvbGxvd2VkIGJ5IHJ1bm5pbmcgYGBlYXN5X2luc3RhbGwgcGlwYGAuIEFsdGVybmF0aXZlbHksIHlvdSBjb3VsZCBkb3dubG9hZAorICAgdGhlIHNvdXJjZSB0YXJiYWxscyBhbmQgcnVuIGBgcHl0aG9uIHNldHVwLnB5IGluc3RhbGxgYCBhZnRlciB1bnBhY2tpbmcsCisgICB3aXRoIHRoZSB2ZW52IGFjdGl2YXRlZC4KKworICAgV2hlbiBhIHZlbnYgaXMgYWN0aXZlIChpLmUuIHRoZSB2ZW52J3MgUHl0aG9uIGludGVycHJldGVyIGlzIHJ1bm5pbmcpLCB0aGUKKyAgIGF0dHJpYnV0ZXMgOmF0dHI6YHN5cy5wcmVmaXhgIGFuZCA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgYmFzZQorICAgZGlyZWN0b3J5IG9mIHRoZSB2ZW52LCB3aGVyZWFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAorICAgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgbm9uLXZlbnYgUHl0aG9uIGluc3RhbGxhdGlvbgorICAgd2hpY2ggd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSB2ZW52LiBJZiBhIHZlbnYgaXMgbm90IGFjdGl2ZSwgdGhlbgorICAgOmF0dHI6YHN5cy5wcmVmaXhgIGlzIHRoZSBzYW1lIGFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAorICAgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgaXMgdGhlIHNhbWUgYXMgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCAodGhleQorICAgYWxsIHBvaW50IHRvIGEgbm9uLXZlbnYgUHl0aG9uIGluc3RhbGxhdGlvbikuCisKKworQVBJCistLS0KKworLi4gaGlnaGxpZ2h0OjogcHl0aG9uCisKK1RoZSBoaWdoLWxldmVsIG1ldGhvZCBkZXNjcmliZWQgYWJvdmUgbWFrZXMgdXNlIG9mIGEgc2ltcGxlIEFQSSB3aGljaCBwcm92aWRlcworbWVjaGFuaXNtcyBmb3IgdGhpcmQtcGFydHkgdmlydHVhbCBlbnZpcm9ubWVudCBjcmVhdG9ycyB0byBjdXN0b21pemUgZW52aXJvbm1lbnQKK2NyZWF0aW9uIGFjY29yZGluZyB0byB0aGVpciBuZWVkcywgdGhlIDpjbGFzczpgRW52QnVpbGRlcmAgY2xhc3MuCisKKy4uIGNsYXNzOjogRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlKQorCisgICAgVGhlIDpjbGFzczpgRW52QnVpbGRlcmAgY2xhc3MgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIG9uCisgICAgaW5zdGFudGlhdGlvbjoKKworICAgICogYGBzeXN0ZW1fc2l0ZV9wYWNrYWdlc2BgIC0tIGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHRoYXQgdGhlIHN5c3RlbSBQeXRob24KKyAgICAgIHNpdGUtcGFja2FnZXMgc2hvdWxkIGJlIGF2YWlsYWJsZSB0byB0aGUgZW52aXJvbm1lbnQgKGRlZmF1bHRzIHRvIGBgRmFsc2VgYCkuCisKKyAgICAqIGBgY2xlYXJgYCAtLSBhIEJvb2xlYW4gdmFsdWUgd2hpY2gsIGlmIFRydWUsIHdpbGwgZGVsZXRlIGFueSBleGlzdGluZyB0YXJnZXQKKyAgICAgIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uIChkZWZhdWx0cyB0byBgYEZhbHNlYGApLgorCisgICAgKiBgYHN5bWxpbmtzYGAgLS0gYSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0byBhdHRlbXB0IHRvIHN5bWxpbmsgdGhlCisgICAgICBQeXRob24gYmluYXJ5IChhbmQgYW55IG5lY2Vzc2FyeSBETExzIG9yIG90aGVyIGJpbmFyaWVzLAorICAgICAgZS5nLiBgYHB5dGhvbncuZXhlYGApLCByYXRoZXIgdGhhbiBjb3B5aW5nLiBEZWZhdWx0cyB0byBgYFRydWVgYCBvbiBMaW51eCBhbmQKKyAgICAgIFVuaXggc3lzdGVtcywgYnV0IGBgRmFsc2VgYCBvbiBXaW5kb3dzLgorCisgICAgKiBgYHVwZ3JhZGVgYCAtLSBhIEJvb2xlYW4gdmFsdWUgd2hpY2gsIGlmIFRydWUsIHdpbGwgdXBncmFkZSBhbiBleGlzdGluZworICAgICAgZW52aXJvbm1lbnQgd2l0aCB0aGUgcnVubmluZyBQeXRob24gLSBmb3IgdXNlIHdoZW4gdGhhdCBQeXRob24gaGFzIGJlZW4KKyAgICAgIHVwZ3JhZGVkIGluLXBsYWNlIChkZWZhdWx0cyB0byBgYEZhbHNlYGApLgorCisKKworICAgIENyZWF0b3JzIG9mIHRoaXJkLXBhcnR5IHZpcnR1YWwgZW52aXJvbm1lbnQgdG9vbHMgd2lsbCBiZSBmcmVlIHRvIHVzZSB0aGUKKyAgICBwcm92aWRlZCBgYEVudkJ1aWxkZXJgYCBjbGFzcyBhcyBhIGJhc2UgY2xhc3MuCisKKyAgICBUaGUgcmV0dXJuZWQgZW52LWJ1aWxkZXIgaXMgYW4gb2JqZWN0IHdoaWNoIGhhcyBhIG1ldGhvZCwgYGBjcmVhdGVgYDoKKworICAgIC4uIG1ldGhvZDo6IGNyZWF0ZShlbnZfZGlyKQorCisgICAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGFzIHJlcXVpcmVkIGFyZ3VtZW50IHRoZSBwYXRoIChhYnNvbHV0ZSBvciByZWxhdGl2ZSB0bworICAgICAgICB0aGUgY3VycmVudCBkaXJlY3RvcnkpIG9mIHRoZSB0YXJnZXQgZGlyZWN0b3J5IHdoaWNoIGlzIHRvIGNvbnRhaW4gdGhlCisgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuICBUaGUgYGBjcmVhdGVgYCBtZXRob2Qgd2lsbCBlaXRoZXIgY3JlYXRlIHRoZQorICAgICAgICBlbnZpcm9ubWVudCBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSwgb3IgcmFpc2UgYW4gYXBwcm9wcmlhdGUKKyAgICAgICAgZXhjZXB0aW9uLgorCisgICAgICAgIFRoZSBgYGNyZWF0ZWBgIG1ldGhvZCBvZiB0aGUgYGBFbnZCdWlsZGVyYGAgY2xhc3MgaWxsdXN0cmF0ZXMgdGhlIGhvb2tzCisgICAgICAgIGF2YWlsYWJsZSBmb3Igc3ViY2xhc3MgY3VzdG9taXphdGlvbjo6CisKKyAgICAgICAgICAgIGRlZiBjcmVhdGUoc2VsZiwgZW52X2Rpcik6CisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgQ3JlYXRlIGEgdmlydHVhbGl6ZWQgUHl0aG9uIGVudmlyb25tZW50IGluIGEgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIGVudl9kaXIgaXMgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IGluLgorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIGVudl9kaXIgPSBvcy5wYXRoLmFic3BhdGgoZW52X2RpcikKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gc2VsZi5jcmVhdGVfZGlyZWN0b3JpZXMoZW52X2RpcikKKyAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9jb25maWd1cmF0aW9uKGNvbnRleHQpCisgICAgICAgICAgICAgICAgc2VsZi5zZXR1cF9weXRob24oY29udGV4dCkKKyAgICAgICAgICAgICAgICBzZWxmLnNldHVwX3NjcmlwdHMoY29udGV4dCkKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3Rfc2V0dXAoY29udGV4dCkKKworICAgICAgICBFYWNoIG9mIHRoZSBtZXRob2RzIDptZXRoOmBjcmVhdGVfZGlyZWN0b3JpZXNgLAorICAgICAgICA6bWV0aDpgY3JlYXRlX2NvbmZpZ3VyYXRpb25gLCA6bWV0aDpgc2V0dXBfcHl0aG9uYCwKKyAgICAgICAgOm1ldGg6YHNldHVwX3NjcmlwdHNgIGFuZCA6bWV0aDpgcG9zdF9zZXR1cGAgY2FuIGJlIG92ZXJyaWRkZW4uCisKKyAgICAuLiBtZXRob2Q6OiBjcmVhdGVfZGlyZWN0b3JpZXMoZW52X2RpcikKKworICAgICAgICBDcmVhdGVzIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgYW5kIGFsbCBuZWNlc3NhcnkgZGlyZWN0b3JpZXMsIGFuZAorICAgICAgICByZXR1cm5zIGEgY29udGV4dCBvYmplY3QuICBUaGlzIGlzIGp1c3QgYSBob2xkZXIgZm9yIGF0dHJpYnV0ZXMgKHN1Y2ggYXMKKyAgICAgICAgcGF0aHMpLCBmb3IgdXNlIGJ5IHRoZSBvdGhlciBtZXRob2RzLgorCisgICAgLi4gbWV0aG9kOjogY3JlYXRlX2NvbmZpZ3VyYXRpb24oY29udGV4dCkKKworICAgICAgICBDcmVhdGVzIHRoZSBgYHB5dmVudi5jZmdgYCBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlIGVudmlyb25tZW50LgorCisgICAgLi4gbWV0aG9kOjogc2V0dXBfcHl0aG9uKGNvbnRleHQpCisKKyAgICAgICAgQ3JlYXRlcyBhIGNvcHkgb2YgdGhlIFB5dGhvbiBleGVjdXRhYmxlIChhbmQsIHVuZGVyIFdpbmRvd3MsIERMTHMpIGluCisgICAgICAgIHRoZSBlbnZpcm9ubWVudC4KKworICAgIC4uIG1ldGhvZDo6IHNldHVwX3NjcmlwdHMoY29udGV4dCkKKworICAgICAgICBJbnN0YWxscyBhY3RpdmF0aW9uIHNjcmlwdHMgYXBwcm9wcmlhdGUgdG8gdGhlIHBsYXRmb3JtIGludG8gdGhlIHZpcnR1YWwKKyAgICAgICAgZW52aXJvbm1lbnQuCisKKyAgICAuLiBtZXRob2Q6OiBwb3N0X3NldHVwKGNvbnRleHQpCisKKyAgICAgICAgQSBwbGFjZWhvbGRlciBtZXRob2Qgd2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhpcmQgcGFydHkKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIHRvIHByZS1pbnN0YWxsIHBhY2thZ2VzIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IG9yCisgICAgICAgIHBlcmZvcm0gb3RoZXIgcG9zdC1jcmVhdGlvbiBzdGVwcy4KKworICAgIEluIGFkZGl0aW9uLCA6Y2xhc3M6YEVudkJ1aWxkZXJgIHByb3ZpZGVzIHRoaXMgdXRpbGl0eSBtZXRob2QgdGhhdCBjYW4gYmUKKyAgICBjYWxsZWQgZnJvbSA6bWV0aDpgc2V0dXBfc2NyaXB0c2Agb3IgOm1ldGg6YHBvc3Rfc2V0dXBgIGluIHN1YmNsYXNzZXMgdG8KKyAgICBhc3Npc3QgaW4gaW5zdGFsbGluZyBjdXN0b20gc2NyaXB0cyBpbnRvIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgorCisgICAgLi4gbWV0aG9kOjogaW5zdGFsbF9zY3JpcHRzKGNvbnRleHQsIHBhdGgpCisKKyAgICAgICAgKnBhdGgqIGlzIHRoZSBwYXRoIHRvIGEgZGlyZWN0b3J5IHRoYXQgc2hvdWxkIGNvbnRhaW4gc3ViZGlyZWN0b3JpZXMKKyAgICAgICAgImNvbW1vbiIsICJwb3NpeCIsICJudCIsIGVhY2ggY29udGFpbmluZyBzY3JpcHRzIGRlc3RpbmVkIGZvciB0aGUgYmluCisgICAgICAgIGRpcmVjdG9yeSBpbiB0aGUgZW52aXJvbm1lbnQuICBUaGUgY29udGVudHMgb2YgImNvbW1vbiIgYW5kIHRoZQorICAgICAgICBkaXJlY3RvcnkgY29ycmVzcG9uZGluZyB0byA6ZGF0YTpgb3MubmFtZWAgYXJlIGNvcGllZCBhZnRlciBzb21lIHRleHQKKyAgICAgICAgcmVwbGFjZW1lbnQgb2YgcGxhY2Vob2xkZXJzOgorCisgICAgICAgICogYGBfX1ZFTlZfRElSX19gYCBpcyByZXBsYWNlZCB3aXRoIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBlbnZpcm9ubWVudAorICAgICAgICAgIGRpcmVjdG9yeS4KKworICAgICAgICAqIGBgX19WRU5WX05BTUVfX2BgIGlzIHJlcGxhY2VkIHdpdGggdGhlIGVudmlyb25tZW50IG5hbWUgKGZpbmFsIHBhdGgKKyAgICAgICAgICBzZWdtZW50IG9mIGVudmlyb25tZW50IGRpcmVjdG9yeSkuCisKKyAgICAgICAgKiBgYF9fVkVOVl9CSU5fTkFNRV9fYGAgaXMgcmVwbGFjZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgYmluIGRpcmVjdG9yeQorICAgICAgICAgIChlaXRoZXIgYGBiaW5gYCBvciBgYFNjcmlwdHNgYCkuCisKKyAgICAgICAgKiBgYF9fVkVOVl9QWVRIT05fX2BgIGlzIHJlcGxhY2VkIHdpdGggdGhlIGFic29sdXRlIHBhdGggb2YgdGhlCisgICAgICAgICAgZW52aXJvbm1lbnQncyBleGVjdXRhYmxlLgorCisKK1RoZXJlIGlzIGFsc28gYSBtb2R1bGUtbGV2ZWwgY29udmVuaWVuY2UgZnVuY3Rpb246CisKKy4uIGZ1bmN0aW9uOjogY3JlYXRlKGVudl9kaXIsIHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwgc3ltbGlua3M9RmFsc2UpCisKKyAgICBDcmVhdGUgYW4gOmNsYXNzOmBFbnZCdWlsZGVyYCB3aXRoIHRoZSBnaXZlbiBrZXl3b3JkIGFyZ3VtZW50cywgYW5kIGNhbGwgaXRzCisgICAgOm1ldGg6YH5FbnZCdWlsZGVyLmNyZWF0ZWAgbWV0aG9kIHdpdGggdGhlICplbnZfZGlyKiBhcmd1bWVudC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdCBiL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdAppbmRleCA4YWYxOWEyLi44Mzg3ZjVhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CkBAIC0zMzksOCArMzM5LDcgQEAKICAgIFdyaXRlIGEgd2FybmluZyB0byBhIGZpbGUuICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscwogICAgYGBmb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lKWBgIGFuZCB3cml0ZXMgdGhlCiAgICByZXN1bHRpbmcgc3RyaW5nIHRvICpmaWxlKiwgd2hpY2ggZGVmYXVsdHMgdG8gYGBzeXMuc3RkZXJyYGAuICBZb3UgbWF5IHJlcGxhY2UKLSAgIHRoaXMgZnVuY3Rpb24gd2l0aCBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBieSBhc3NpZ25pbmcgdG8KLSAgIGBgd2FybmluZ3Muc2hvd3dhcm5pbmdgYC4KKyAgIHRoaXMgZnVuY3Rpb24gd2l0aCBhbnkgY2FsbGFibGUgYnkgYXNzaWduaW5nIHRvIGBgd2FybmluZ3Muc2hvd3dhcm5pbmdgYC4KICAgICpsaW5lKiBpcyBhIGxpbmUgb2Ygc291cmNlIGNvZGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHdhcm5pbmcKICAgIG1lc3NhZ2U7IGlmICpsaW5lKiBpcyBub3Qgc3VwcGxpZWQsIDpmdW5jOmBzaG93d2FybmluZ2Agd2lsbAogICAgdHJ5IHRvIHJlYWQgdGhlIGxpbmUgc3BlY2lmaWVkIGJ5ICpmaWxlbmFtZSogYW5kICpsaW5lbm8qLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2ViYnJvd3Nlci5yc3QgYi9Eb2MvbGlicmFyeS93ZWJicm93c2VyLnJzdAppbmRleCBiMmRjZjhmLi45YzJiM2FiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93ZWJicm93c2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS93ZWJicm93c2VyLnJzdApAQCAtOTgsNDcgKzk4LDU1IEBACiBtYXkgYmUgcGFzc2VkIHRvIHRoZSA6ZnVuYzpgZ2V0YCBmdW5jdGlvbiBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5zdGFudGlhdGlvbnMKIGZvciB0aGUgY29udHJvbGxlciBjbGFzc2VzLCBhbGwgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZS4KIAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IFR5cGUgTmFtZSAgICAgICAgICAgICB8IENsYXNzIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHwKLSs9PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09KwotfCBgYCdtb3ppbGxhJ2BgICAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ21vemlsbGEnKWAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnZmlyZWZveCdgYCAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCdtb3ppbGxhJylgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ25ldHNjYXBlJ2BgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbmV0c2NhcGUnKWAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdnYWxlb24nYGAgICAgICAgICAgfCA6Y2xhc3M6YEdhbGVvbignZ2FsZW9uJylgICAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnZXBpcGhhbnknYGAgICAgICAgIHwgOmNsYXNzOmBHYWxlb24oJ2VwaXBoYW55JylgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ3NraXBzdG9uZSdgYCAgICAgICB8IDpjbGFzczpgQmFja2dyb3VuZEJyb3dzZXIoJ3NraXBzdG9uZScpYCB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdrZm1jbGllbnQnYGAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAna29ucXVlcm9yJ2BgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2tmbSdgYCAgICAgICAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdtb3NhaWMnYGAgICAgICAgICAgfCA6Y2xhc3M6YEJhY2tncm91bmRCcm93c2VyKCdtb3NhaWMnKWAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnb3BlcmEnYGAgICAgICAgICAgIHwgOmNsYXNzOmBPcGVyYSgpYCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2dyYWlsJ2BgICAgICAgICAgICB8IDpjbGFzczpgR3JhaWwoKWAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdsaW5rcydgYCAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCdsaW5rcycpYCAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnZWxpbmtzJ2BgICAgICAgICAgIHwgOmNsYXNzOmBFbGlua3MoJ2VsaW5rcycpYCAgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2x5bngnYGAgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ2x5bngnKWAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCd3M20nYGAgICAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCd3M20nKWAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnd2luZG93cy1kZWZhdWx0J2BgIHwgOmNsYXNzOmBXaW5kb3dzRGVmYXVsdGAgICAgICAgICAgICAgICAgIHwgXCgyKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ21hY29zeCdgYCAgICAgICAgICB8IDpjbGFzczpgTWFjT1NYKCdkZWZhdWx0JylgICAgICAgICAgICAgICB8IFwoMykgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdzYWZhcmknYGAgICAgICAgICAgfCA6Y2xhc3M6YE1hY09TWCgnc2FmYXJpJylgICAgICAgICAgICAgICAgfCBcKDMpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgVHlwZSBOYW1lICAgICAgICAgICAgICB8IENsYXNzIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSsKK3wgYGAnbW96aWxsYSdgYCAgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbW96aWxsYScpYCAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZmlyZWZveCdgYCAgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbW96aWxsYScpYCAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbmV0c2NhcGUnYGAgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbmV0c2NhcGUnKWAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZ2FsZW9uJ2BgICAgICAgICAgICB8IDpjbGFzczpgR2FsZW9uKCdnYWxlb24nKWAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZXBpcGhhbnknYGAgICAgICAgICB8IDpjbGFzczpgR2FsZW9uKCdlcGlwaGFueScpYCAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnc2tpcHN0b25lJ2BgICAgICAgICB8IDpjbGFzczpgQmFja2dyb3VuZEJyb3dzZXIoJ3NraXBzdG9uZScpYCB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAna2ZtY2xpZW50J2BgICAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAna29ucXVlcm9yJ2BgICAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAna2ZtJ2BgICAgICAgICAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbW9zYWljJ2BgICAgICAgICAgICB8IDpjbGFzczpgQmFja2dyb3VuZEJyb3dzZXIoJ21vc2FpYycpYCAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnb3BlcmEnYGAgICAgICAgICAgICB8IDpjbGFzczpgT3BlcmEoKWAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZ3JhaWwnYGAgICAgICAgICAgICB8IDpjbGFzczpgR3JhaWwoKWAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbGlua3MnYGAgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ2xpbmtzJylgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZWxpbmtzJ2BgICAgICAgICAgICB8IDpjbGFzczpgRWxpbmtzKCdlbGlua3MnKWAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbHlueCdgYCAgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ2x5bngnKWAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAndzNtJ2BgICAgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ3czbScpYCAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnd2luZG93cy1kZWZhdWx0J2BgICB8IDpjbGFzczpgV2luZG93c0RlZmF1bHRgICAgICAgICAgICAgICAgICB8IFwoMikgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbWFjb3N4J2BgICAgICAgICAgICB8IDpjbGFzczpgTWFjT1NYKCdkZWZhdWx0JylgICAgICAgICAgICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnc2FmYXJpJ2BgICAgICAgICAgICB8IDpjbGFzczpgTWFjT1NYKCdzYWZhcmknKWAgICAgICAgICAgICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZ29vZ2xlLWNocm9tZSdgYCAgICB8IDpjbGFzczpgQ2hyb21lKCdnb29nbGUtY2hyb21lJylgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnY2hyb21lJ2BgICAgICAgICAgICB8IDpjbGFzczpgQ2hyb21lKCdjaHJvbWUnKWAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnY2hyb21pdW0nYGAgICAgICAgICB8IDpjbGFzczpgQ2hyb21pdW0oJ2Nocm9taXVtJylgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnY2hyb21pdW0tYnJvd3NlcidgYCB8IDpjbGFzczpgQ2hyb21pdW0oJ2Nocm9taXVtLWJyb3dzZXInKWAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIAogTm90ZXM6CiAKQEAgLTE1NSwxMiArMTYzLDE1IEBACiAoMykKICAgIE9ubHkgb24gTWFjIE9TIFggcGxhdGZvcm0uCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgU3VwcG9ydCBmb3IgQ2hyb21lL0Nocm9taXVtIGhhcyBiZWVuIGFkZGVkLgorCiBIZXJlIGFyZSBzb21lIHNpbXBsZSBleGFtcGxlczo6CiAKLSAgIHVybCA9ICdodHRwOi8vd3d3LnB5dGhvbi5vcmcvJworICAgdXJsID0gJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvJwogCiAgICAjIE9wZW4gVVJMIGluIGEgbmV3IHRhYiwgaWYgYSBicm93c2VyIHdpbmRvdyBpcyBhbHJlYWR5IG9wZW4uCi0gICB3ZWJicm93c2VyLm9wZW5fbmV3X3RhYih1cmwgKyAnZG9jLycpCisgICB3ZWJicm93c2VyLm9wZW5fbmV3X3RhYih1cmwpCiAKICAgICMgT3BlbiBVUkwgaW4gbmV3IHdpbmRvdywgcmFpc2luZyB0aGUgd2luZG93IGlmIHBvc3NpYmxlLgogICAgd2ViYnJvd3Nlci5vcGVuX25ldyh1cmwpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93aW5yZWcucnN0IGIvRG9jL2xpYnJhcnkvd2lucmVnLnJzdAppbmRleCBlNDliNTFiLi5hODc4ZGEyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93aW5yZWcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKQEAgLTM4LDcgKzM4LDExIEBACiAgICAqa2V5KiBpcyB0aGUgcHJlZGVmaW5lZCBoYW5kbGUgdG8gY29ubmVjdCB0by4KIAogICAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LiBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGEKLSAgIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGZ1bmN0aW9uOjogQ3JlYXRlS2V5KGtleSwgc3ViX2tleSkKQEAgLTU3LDcgKzYxLDExIEBACiAgICBJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXkuCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4gSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhCi0gICA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBmdW5jdGlvbjo6IENyZWF0ZUtleUV4KGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQ9MCwgYWNjZXNzPUtFWV9BTExfQUNDRVNTKQpAQCAtODIsMTAgKzkwLDE0IEBACiAgICBJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXkuCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4gSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhCi0gICA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gZnVuY3Rpb246OiBEZWxldGVLZXkoa2V5LCBzdWJfa2V5KQogCkBAIC0xMDAsNyArMTEyLDExIEBACiAgICAqVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuKgogCiAgICBJZiB0aGUgbWV0aG9kIHN1Y2NlZWRzLCB0aGUgZW50aXJlIGtleSwgaW5jbHVkaW5nIGFsbCBvZiBpdHMgdmFsdWVzLCBpcyByZW1vdmVkLgotICAgSWYgdGhlIG1ldGhvZCBmYWlscywgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICBJZiB0aGUgbWV0aG9kIGZhaWxzLCBhIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGZ1bmN0aW9uOjogRGVsZXRlS2V5RXgoa2V5LCBzdWJfa2V5LCBhY2Nlc3M9S0VZX0FMTF9BQ0NFU1MsIHJlc2VydmVkPTApCkBAIC0xMjksMTIgKzE0NSwxNiBAQAogICAgKlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLioKIAogICAgSWYgdGhlIG1ldGhvZCBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcywgaXMKLSAgIHJlbW92ZWQuIElmIHRoZSBtZXRob2QgZmFpbHMsIGEgOmV4YzpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorICAgcmVtb3ZlZC4gSWYgdGhlIG1ldGhvZCBmYWlscywgYSA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgogCiAgICBPbiB1bnN1cHBvcnRlZCBXaW5kb3dzIHZlcnNpb25zLCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpcyByYWlzZWQuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBmdW5jdGlvbjo6IERlbGV0ZVZhbHVlKGtleSwgdmFsdWUpCiAKQEAgLTE1Niw5ICsxNzYsMTMgQEAKICAgICppbmRleCogaXMgYW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSBrZXkgdG8gcmV0cmlldmUuCiAKICAgIFRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLiAgSXQgaXMKLSAgIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBhIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzCisgICB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgYSA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMKICAgIHJhaXNlZCwgaW5kaWNhdGluZywgbm8gbW9yZSB2YWx1ZXMgYXJlIGF2YWlsYWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gZnVuY3Rpb246OiBFbnVtVmFsdWUoa2V5LCBpbmRleCkKIApAQCAtMTcwLDcgKzE5NCw3IEBACiAgICAqaW5kZXgqIGlzIGFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUgdmFsdWUgdG8gcmV0cmlldmUuCiAKICAgIFRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLiBJdCBpcwotICAgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5LCB1bnRpbCBhIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzCisgICB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHksIHVudGlsIGEgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzCiAgICByYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMuCiAKICAgIFRoZSByZXN1bHQgaXMgYSB0dXBsZSBvZiAzIGl0ZW1zOgpAQCAtMTg5LDYgKzIxMywxMCBAQAogICAgfCAgICAgICB8IDptZXRoOmBTZXRWYWx1ZUV4YCkgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gZnVuY3Rpb246OiBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3Moc3RyKQogCkBAIC0yNjAsOSArMjg4LDE0IEBACiAKICAgIFRoZSByZXN1bHQgaXMgYSBuZXcgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQga2V5LgogCi0gICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIDpleGM6YFdpbmRvd3NFcnJvcmAgaXMgcmFpc2VkLgorICAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIEFsbG93IHRoZSB1c2Ugb2YgbmFtZWQgYXJndW1lbnRzLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgIEFsbG93IHRoZSB1c2Ugb2YgbmFtZWQgYXJndW1lbnRzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBmdW5jdGlvbjo6IE9wZW5LZXlFeCgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdCBiL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CmluZGV4IDFmZDM0NTEuLjFjZWYyZTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CkBAIC02MDksNiArNjA5LDkgQEAKICAgICAgIGFzIDpjbGFzczpgQmFzZUNHSUhhbmRsZXJgIGFuZCA6Y2xhc3M6YENHSUhhbmRsZXJgKSB0aGF0IGFyZSBub3QgSFRUUCBvcmlnaW4KICAgICAgIHNlcnZlcnMuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBUaGUgdGVybSAiUHl0aG9uIiBpcyByZXBsYWNlZCB3aXRoIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHRlcm0gbGlrZQorICAgICAgICAgIkNQeXRob24iLCAiSnl0aG9uIiBldGMuCiAKICAgIC4uIG1ldGhvZDo6IEJhc2VIYW5kbGVyLmdldF9zY2hlbWUoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuZG9tLm1pbmlkb20ucnN0IGIvRG9jL2xpYnJhcnkveG1sLmRvbS5taW5pZG9tLnJzdAppbmRleCBhZTI4NmIwLi5hNWM2ZmIyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWwuZG9tLm1pbmlkb20ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5kb20ubWluaWRvbS5yc3QKQEAgLTE0NywxMiArMTQ3LDcgQEAKICAgIHRoZSBET00gbm9kZS4KIAogICAgV2l0aCBhbiBleHBsaWNpdCAqZW5jb2RpbmcqIFsxXV8gYXJndW1lbnQsIHRoZSByZXN1bHQgaXMgYSBieXRlCi0gICBzdHJpbmcgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZy4gIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91Ci0gICBhbHdheXMgc3BlY2lmeSBhbiBlbmNvZGluZzsgeW91IG1heSB1c2UgYW55IGVuY29kaW5nIHlvdSBsaWtlLCBidXQKLSAgIGFuIGFyZ3VtZW50IG9mICJ1dGYtOCIgaXMgdGhlIG1vc3QgY29tbW9uIGNob2ljZSwgYXZvaWRpbmcKLSAgIDpleGM6YFVuaWNvZGVFcnJvcmAgZXhjZXB0aW9ucyBpbiBjYXNlIG9mIHVucmVwcmVzZW50YWJsZSB0ZXh0Ci0gICBkYXRhLgotCisgICBzdHJpbmcgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZy4KICAgIFdpdGggbm8gKmVuY29kaW5nKiBhcmd1bWVudCwgdGhlIHJlc3VsdCBpcyBhIFVuaWNvZGUgc3RyaW5nLCBhbmQgdGhlCiAgICBYTUwgZGVjbGFyYXRpb24gaW4gdGhlIHJlc3VsdGluZyBzdHJpbmcgZG9lcyBub3Qgc3BlY2lmeSBhbgogICAgZW5jb2RpbmcuIEVuY29kaW5nIHRoaXMgc3RyaW5nIGluIGFuIGVuY29kaW5nIG90aGVyIHRoYW4gVVRGLTggaXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZS5yc3QgYi9Eb2MvbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0CmluZGV4IGM1Yzg4MDIuLjE2YmIwMGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdApAQCAtNSw0OSArNSwzMjEgQEAKICAgIDpzeW5vcHNpczogSW1wbGVtZW50YXRpb24gb2YgdGhlIEVsZW1lbnRUcmVlIEFQSS4KIC4uIG1vZHVsZWF1dGhvcjo6IEZyZWRyaWsgTHVuZGggPGZyZWRyaWtAcHl0aG9ud2FyZS5jb20+CiAKLSoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weWAKK1RoZSA6bW9kOmB4bWwuZXRyZWUuRWxlbWVudFRyZWVgIG1vZHVsZSBpbXBsZW1lbnRzIGEgc2ltcGxlIGFuZCBlZmZpY2llbnQgQVBJCitmb3IgcGFyc2luZyBhbmQgY3JlYXRpbmcgWE1MIGRhdGEuCiAKLS0tLS0tLS0tLS0tLS0tCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhpcyBtb2R1bGUgd2lsbCB1c2UgYSBmYXN0IGltcGxlbWVudGF0aW9uIHdoZW5ldmVyIGF2YWlsYWJsZS4KKyAgIFRoZSA6bW9kOmB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlYCBtb2R1bGUgaXMgZGVwcmVjYXRlZC4KIAotVGhlIDpjbGFzczpgRWxlbWVudGAgdHlwZSBpcyBhIGZsZXhpYmxlIGNvbnRhaW5lciBvYmplY3QsIGRlc2lnbmVkIHRvIHN0b3JlCi1oaWVyYXJjaGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGluIG1lbW9yeS4gIFRoZSB0eXBlIGNhbiBiZSBkZXNjcmliZWQgYXMgYSBjcm9zcwotYmV0d2VlbiBhIGxpc3QgYW5kIGEgZGljdGlvbmFyeS4KK1R1dG9yaWFsCistLS0tLS0tLQogCi1FYWNoIGVsZW1lbnQgaGFzIGEgbnVtYmVyIG9mIHByb3BlcnRpZXMgYXNzb2NpYXRlZCB3aXRoIGl0OgorVGhpcyBpcyBhIHNob3J0IHR1dG9yaWFsIGZvciB1c2luZyA6bW9kOmB4bWwuZXRyZWUuRWxlbWVudFRyZWVgIChgYEVUYGAgaW4KK3Nob3J0KS4gIFRoZSBnb2FsIGlzIHRvIGRlbW9uc3RyYXRlIHNvbWUgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrcyBhbmQgYmFzaWMKK2NvbmNlcHRzIG9mIHRoZSBtb2R1bGUuCiAKLSogYSB0YWcgd2hpY2ggaXMgYSBzdHJpbmcgaWRlbnRpZnlpbmcgd2hhdCBraW5kIG9mIGRhdGEgdGhpcyBlbGVtZW50IHJlcHJlc2VudHMKLSAgKHRoZSBlbGVtZW50IHR5cGUsIGluIG90aGVyIHdvcmRzKS4KK1hNTCB0cmVlIGFuZCBlbGVtZW50cworXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLSogYSBudW1iZXIgb2YgYXR0cmlidXRlcywgc3RvcmVkIGluIGEgUHl0aG9uIGRpY3Rpb25hcnkuCitYTUwgaXMgYW4gaW5oZXJlbnRseSBoaWVyYXJjaGljYWwgZGF0YSBmb3JtYXQsIGFuZCB0aGUgbW9zdCBuYXR1cmFsIHdheSB0bworcmVwcmVzZW50IGl0IGlzIHdpdGggYSB0cmVlLiAgYGBFVGBgIGhhcyB0d28gY2xhc3NlcyBmb3IgdGhpcyBwdXJwb3NlIC0KKzpjbGFzczpgRWxlbWVudFRyZWVgIHJlcHJlc2VudHMgdGhlIHdob2xlIFhNTCBkb2N1bWVudCBhcyBhIHRyZWUsIGFuZAorOmNsYXNzOmBFbGVtZW50YCByZXByZXNlbnRzIGEgc2luZ2xlIG5vZGUgaW4gdGhpcyB0cmVlLiAgSW50ZXJhY3Rpb25zIHdpdGgKK3RoZSB3aG9sZSBkb2N1bWVudCAocmVhZGluZyBhbmQgd3JpdGluZyB0by9mcm9tIGZpbGVzKSBhcmUgdXN1YWxseSBkb25lCitvbiB0aGUgOmNsYXNzOmBFbGVtZW50VHJlZWAgbGV2ZWwuICBJbnRlcmFjdGlvbnMgd2l0aCBhIHNpbmdsZSBYTUwgZWxlbWVudAorYW5kIGl0cyBzdWItZWxlbWVudHMgYXJlIGRvbmUgb24gdGhlIDpjbGFzczpgRWxlbWVudGAgbGV2ZWwuCiAKLSogYSB0ZXh0IHN0cmluZy4KKy4uIF9lbGVtZW50dHJlZS1wYXJzaW5nLXhtbDoKIAotKiBhbiBvcHRpb25hbCB0YWlsIHN0cmluZy4KK1BhcnNpbmcgWE1MCiteXl5eXl5eXl5eXgogCi0qIGEgbnVtYmVyIG9mIGNoaWxkIGVsZW1lbnRzLCBzdG9yZWQgaW4gYSBQeXRob24gc2VxdWVuY2UKK1dlJ2xsIGJlIHVzaW5nIHRoZSBmb2xsb3dpbmcgWE1MIGRvY3VtZW50IGFzIHRoZSBzYW1wbGUgZGF0YSBmb3IgdGhpcyBzZWN0aW9uOgogCi1UbyBjcmVhdGUgYW4gZWxlbWVudCBpbnN0YW5jZSwgdXNlIHRoZSA6Y2xhc3M6YEVsZW1lbnRgIGNvbnN0cnVjdG9yIG9yIHRoZQotOmZ1bmM6YFN1YkVsZW1lbnRgIGZhY3RvcnkgZnVuY3Rpb24uCisuLiBjb2RlLWJsb2NrOjogeG1sCiAKLVRoZSA6Y2xhc3M6YEVsZW1lbnRUcmVlYCBjbGFzcyBjYW4gYmUgdXNlZCB0byB3cmFwIGFuIGVsZW1lbnQgc3RydWN0dXJlLCBhbmQKLWNvbnZlcnQgaXQgZnJvbSBhbmQgdG8gWE1MLgorICAgPD94bWwgdmVyc2lvbj0iMS4wIj8+CisgICA8ZGF0YT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJMaWVjaHRlbnN0ZWluIj4KKyAgICAgICAgICAgPHJhbms+MTwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAwODwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjE0MTEwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJBdXN0cmlhIiBkaXJlY3Rpb249IkUiLz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IlN3aXR6ZXJsYW5kIiBkaXJlY3Rpb249IlciLz4KKyAgICAgICA8L2NvdW50cnk+CisgICAgICAgPGNvdW50cnkgbmFtZT0iU2luZ2Fwb3JlIj4KKyAgICAgICAgICAgPHJhbms+NDwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAxMTwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjU5OTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9Ik1hbGF5c2lhIiBkaXJlY3Rpb249Ik4iLz4KKyAgICAgICA8L2NvdW50cnk+CisgICAgICAgPGNvdW50cnkgbmFtZT0iUGFuYW1hIj4KKyAgICAgICAgICAgPHJhbms+Njg8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMTE8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz4xMzYwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJDb3N0YSBSaWNhIiBkaXJlY3Rpb249IlciLz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkNvbG9tYmlhIiBkaXJlY3Rpb249IkUiLz4KKyAgICAgICA8L2NvdW50cnk+CisgICA8L2RhdGE+CiAKLUEgQyBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIEFQSSBpcyBhdmFpbGFibGUgYXMgOm1vZDpgeG1sLmV0cmVlLmNFbGVtZW50VHJlZWAuCitXZSBjYW4gaW1wb3J0IHRoaXMgZGF0YSBieSByZWFkaW5nIGZyb20gYSBmaWxlOjoKKworICAgaW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFVAorICAgdHJlZSA9IEVULnBhcnNlKCdjb3VudHJ5X2RhdGEueG1sJykKKyAgIHJvb3QgPSB0cmVlLmdldHJvb3QoKQorCitPciBkaXJlY3RseSBmcm9tIGEgc3RyaW5nOjoKKworICAgcm9vdCA9IEVULmZyb21zdHJpbmcoY291bnRyeV9kYXRhX2FzX3N0cmluZykKKworOmZ1bmM6YGZyb21zdHJpbmdgIHBhcnNlcyBYTUwgZnJvbSBhIHN0cmluZyBkaXJlY3RseSBpbnRvIGFuIDpjbGFzczpgRWxlbWVudGAsCit3aGljaCBpcyB0aGUgcm9vdCBlbGVtZW50IG9mIHRoZSBwYXJzZWQgdHJlZS4gIE90aGVyIHBhcnNpbmcgZnVuY3Rpb25zIG1heQorY3JlYXRlIGFuIDpjbGFzczpgRWxlbWVudFRyZWVgLiAgQ2hlY2sgdGhlIGRvY3VtZW50YXRpb24gdG8gYmUgc3VyZS4KKworQXMgYW4gOmNsYXNzOmBFbGVtZW50YCwgYGByb290YGAgaGFzIGEgdGFnIGFuZCBhIGRpY3Rpb25hcnkgb2YgYXR0cmlidXRlczo6CisKKyAgID4+PiByb290LnRhZworICAgJ2RhdGEnCisgICA+Pj4gcm9vdC5hdHRyaWIKKyAgIHt9CisKK0l0IGFsc28gaGFzIGNoaWxkcmVuIG5vZGVzIG92ZXIgd2hpY2ggd2UgY2FuIGl0ZXJhdGU6OgorCisgICA+Pj4gZm9yIGNoaWxkIGluIHJvb3Q6CisgICAuLi4gICBwcmludChjaGlsZC50YWcsIGNoaWxkLmF0dHJpYikKKyAgIC4uLgorICAgY291bnRyeSB7J25hbWUnOiAnTGllY2h0ZW5zdGVpbid9CisgICBjb3VudHJ5IHsnbmFtZSc6ICdTaW5nYXBvcmUnfQorICAgY291bnRyeSB7J25hbWUnOiAnUGFuYW1hJ30KKworQ2hpbGRyZW4gYXJlIG5lc3RlZCwgYW5kIHdlIGNhbiBhY2Nlc3Mgc3BlY2lmaWMgY2hpbGQgbm9kZXMgYnkgaW5kZXg6OgorCisgICA+Pj4gcm9vdFswXVsxXS50ZXh0CisgICAnMjAwOCcKKworRmluZGluZyBpbnRlcmVzdGluZyBlbGVtZW50cworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCis6Y2xhc3M6YEVsZW1lbnRgIGhhcyBzb21lIHVzZWZ1bCBtZXRob2RzIHRoYXQgaGVscCBpdGVyYXRlIHJlY3Vyc2l2ZWx5IG92ZXIgYWxsCit0aGUgc3ViLXRyZWUgYmVsb3cgaXQgKGl0cyBjaGlsZHJlbiwgdGhlaXIgY2hpbGRyZW4sIGFuZCBzbyBvbikuICBGb3IgZXhhbXBsZSwKKzptZXRoOmBFbGVtZW50Lml0ZXJgOjoKKworICAgPj4+IGZvciBuZWlnaGJvciBpbiByb290Lml0ZXIoJ25laWdoYm9yJyk6CisgICAuLi4gICBwcmludChuZWlnaGJvci5hdHRyaWIpCisgICAuLi4KKyAgIHsnbmFtZSc6ICdBdXN0cmlhJywgJ2RpcmVjdGlvbic6ICdFJ30KKyAgIHsnbmFtZSc6ICdTd2l0emVybGFuZCcsICdkaXJlY3Rpb24nOiAnVyd9CisgICB7J25hbWUnOiAnTWFsYXlzaWEnLCAnZGlyZWN0aW9uJzogJ04nfQorICAgeyduYW1lJzogJ0Nvc3RhIFJpY2EnLCAnZGlyZWN0aW9uJzogJ1cnfQorICAgeyduYW1lJzogJ0NvbG9tYmlhJywgJ2RpcmVjdGlvbic6ICdFJ30KKworOm1ldGg6YEVsZW1lbnQuZmluZGFsbGAgZmluZHMgb25seSBlbGVtZW50cyB3aXRoIGEgdGFnIHdoaWNoIGFyZSBkaXJlY3QKK2NoaWxkcmVuIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQuICA6bWV0aDpgRWxlbWVudC5maW5kYCBmaW5kcyB0aGUgKmZpcnN0KiBjaGlsZAord2l0aCBhIHBhcnRpY3VsYXIgdGFnLCBhbmQgOm1ldGg6YEVsZW1lbnQudGV4dGAgYWNjZXNzZXMgdGhlIGVsZW1lbnQncyB0ZXh0Citjb250ZW50LiAgOm1ldGg6YEVsZW1lbnQuZ2V0YCBhY2Nlc3NlcyB0aGUgZWxlbWVudCdzIGF0dHJpYnV0ZXM6OgorCisgICA+Pj4gZm9yIGNvdW50cnkgaW4gcm9vdC5maW5kYWxsKCdjb3VudHJ5Jyk6CisgICAuLi4gICByYW5rID0gY291bnRyeS5maW5kKCdyYW5rJykudGV4dAorICAgLi4uICAgbmFtZSA9IGNvdW50cnkuZ2V0KCduYW1lJykKKyAgIC4uLiAgIHByaW50KG5hbWUsIHJhbmspCisgICAuLi4KKyAgIExpZWNodGVuc3RlaW4gMQorICAgU2luZ2Fwb3JlIDQKKyAgIFBhbmFtYSA2OAorCitNb3JlIHNvcGhpc3RpY2F0ZWQgc3BlY2lmaWNhdGlvbiBvZiB3aGljaCBlbGVtZW50cyB0byBsb29rIGZvciBpcyBwb3NzaWJsZSBieQordXNpbmcgOnJlZjpgWFBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuCisKK01vZGlmeWluZyBhbiBYTUwgRmlsZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKzpjbGFzczpgRWxlbWVudFRyZWVgIHByb3ZpZGVzIGEgc2ltcGxlIHdheSB0byBidWlsZCBYTUwgZG9jdW1lbnRzIGFuZCB3cml0ZSB0aGVtIHRvIGZpbGVzLgorVGhlIDptZXRoOmBFbGVtZW50VHJlZS53cml0ZWAgbWV0aG9kIHNlcnZlcyB0aGlzIHB1cnBvc2UuCisKK09uY2UgY3JlYXRlZCwgYW4gOmNsYXNzOmBFbGVtZW50YCBvYmplY3QgbWF5IGJlIG1hbmlwdWxhdGVkIGJ5IGRpcmVjdGx5IGNoYW5naW5nCitpdHMgZmllbGRzIChzdWNoIGFzIDphdHRyOmBFbGVtZW50LnRleHRgKSwgYWRkaW5nIGFuZCBtb2RpZnlpbmcgYXR0cmlidXRlcworKDptZXRoOmBFbGVtZW50LnNldGAgbWV0aG9kKSwgYXMgd2VsbCBhcyBhZGRpbmcgbmV3IGNoaWxkcmVuIChmb3IgZXhhbXBsZQord2l0aCA6bWV0aDpgRWxlbWVudC5hcHBlbmRgKS4KKworTGV0J3Mgc2F5IHdlIHdhbnQgdG8gYWRkIG9uZSB0byBlYWNoIGNvdW50cnkncyByYW5rLCBhbmQgYWRkIGFuIGBgdXBkYXRlZGBgCithdHRyaWJ1dGUgdG8gdGhlIHJhbmsgZWxlbWVudDo6CisKKyAgID4+PiBmb3IgcmFuayBpbiByb290Lml0ZXIoJ3JhbmsnKToKKyAgIC4uLiAgIG5ld19yYW5rID0gaW50KHJhbmsudGV4dCkgKyAxCisgICAuLi4gICByYW5rLnRleHQgPSBzdHIobmV3X3JhbmspCisgICAuLi4gICByYW5rLnNldCgndXBkYXRlZCcsICd5ZXMnKQorICAgLi4uCisgICA+Pj4gdHJlZS53cml0ZSgnb3V0cHV0LnhtbCcpCisKK091ciBYTUwgbm93IGxvb2tzIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IHhtbAorCisgICA8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKyAgIDxkYXRhPgorICAgICAgIDxjb3VudHJ5IG5hbWU9IkxpZWNodGVuc3RlaW4iPgorICAgICAgICAgICA8cmFuayB1cGRhdGVkPSJ5ZXMiPjI8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMDg8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz4xNDExMDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQXVzdHJpYSIgZGlyZWN0aW9uPSJFIi8+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJTd2l0emVybGFuZCIgZGlyZWN0aW9uPSJXIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgICAgIDxjb3VudHJ5IG5hbWU9IlNpbmdhcG9yZSI+CisgICAgICAgICAgIDxyYW5rIHVwZGF0ZWQ9InllcyI+NTwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAxMTwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjU5OTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9Ik1hbGF5c2lhIiBkaXJlY3Rpb249Ik4iLz4KKyAgICAgICA8L2NvdW50cnk+CisgICAgICAgPGNvdW50cnkgbmFtZT0iUGFuYW1hIj4KKyAgICAgICAgICAgPHJhbmsgdXBkYXRlZD0ieWVzIj42OTwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAxMTwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjEzNjAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkNvc3RhIFJpY2EiIGRpcmVjdGlvbj0iVyIvPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQ29sb21iaWEiIGRpcmVjdGlvbj0iRSIvPgorICAgICAgIDwvY291bnRyeT4KKyAgIDwvZGF0YT4KKworV2UgY2FuIHJlbW92ZSBlbGVtZW50cyB1c2luZyA6bWV0aDpgRWxlbWVudC5yZW1vdmVgLiAgTGV0J3Mgc2F5IHdlIHdhbnQgdG8KK3JlbW92ZSBhbGwgY291bnRyaWVzIHdpdGggYSByYW5rIGhpZ2hlciB0aGFuIDUwOjoKKworICAgPj4+IGZvciBjb3VudHJ5IGluIHJvb3QuZmluZGFsbCgnY291bnRyeScpOgorICAgLi4uICAgcmFuayA9IGludChjb3VudHJ5LmZpbmQoJ3JhbmsnKS50ZXh0KQorICAgLi4uICAgaWYgcmFuayA+IDUwOgorICAgLi4uICAgICByb290LnJlbW92ZShjb3VudHJ5KQorICAgLi4uCisgICA+Pj4gdHJlZS53cml0ZSgnb3V0cHV0LnhtbCcpCisKK091ciBYTUwgbm93IGxvb2tzIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IHhtbAorCisgICA8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKyAgIDxkYXRhPgorICAgICAgIDxjb3VudHJ5IG5hbWU9IkxpZWNodGVuc3RlaW4iPgorICAgICAgICAgICA8cmFuayB1cGRhdGVkPSJ5ZXMiPjI8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMDg8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz4xNDExMDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQXVzdHJpYSIgZGlyZWN0aW9uPSJFIi8+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJTd2l0emVybGFuZCIgZGlyZWN0aW9uPSJXIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgICAgIDxjb3VudHJ5IG5hbWU9IlNpbmdhcG9yZSI+CisgICAgICAgICAgIDxyYW5rIHVwZGF0ZWQ9InllcyI+NTwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAxMTwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjU5OTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9Ik1hbGF5c2lhIiBkaXJlY3Rpb249Ik4iLz4KKyAgICAgICA8L2NvdW50cnk+CisgICA8L2RhdGE+CisKK0J1aWxkaW5nIFhNTCBkb2N1bWVudHMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlIDpmdW5jOmBTdWJFbGVtZW50YCBmdW5jdGlvbiBhbHNvIHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgdG8gY3JlYXRlIG5ldworc3ViLWVsZW1lbnRzIGZvciBhIGdpdmVuIGVsZW1lbnQ6OgorCisgICA+Pj4gYSA9IEVULkVsZW1lbnQoJ2EnKQorICAgPj4+IGIgPSBFVC5TdWJFbGVtZW50KGEsICdiJykKKyAgID4+PiBjID0gRVQuU3ViRWxlbWVudChhLCAnYycpCisgICA+Pj4gZCA9IEVULlN1YkVsZW1lbnQoYywgJ2QnKQorICAgPj4+IEVULmR1bXAoYSkKKyAgIDxhPjxiIC8+PGM+PGQgLz48L2M+PC9hPgorCitBZGRpdGlvbmFsIHJlc291cmNlcworXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAogU2VlIGh0dHA6Ly9lZmZib3Qub3JnL3pvbmUvZWxlbWVudC1pbmRleC5odG0gZm9yIHR1dG9yaWFscyBhbmQgbGlua3MgdG8gb3RoZXIKLWRvY3MuICBGcmVkcmlrIEx1bmRoJ3MgcGFnZSBpcyBhbHNvIHRoZSBsb2NhdGlvbiBvZiB0aGUgZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZgotdGhlIHhtbC5ldHJlZS5FbGVtZW50VHJlZS4KK2RvY3MuCiAKLS4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICBUaGUgRWxlbWVudFRyZWUgQVBJIGlzIHVwZGF0ZWQgdG8gMS4zLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQotICAgYEludHJvZHVjaW5nIEVsZW1lbnRUcmVlIDEuMwotICAgPGh0dHA6Ly9lZmZib3Qub3JnL3pvbmUvZWxlbWVudHRyZWUtMTMtaW50cm8uaHRtPmBfLgogCisuLiBfZWxlbWVudHRyZWUteHBhdGg6CisKK1hQYXRoIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgbGltaXRlZCBzdXBwb3J0IGZvcgorYFhQYXRoIGV4cHJlc3Npb25zIDxodHRwOi8vd3d3LnczLm9yZy9UUi94cGF0aD5gXyBmb3IgbG9jYXRpbmcgZWxlbWVudHMgaW4gYQordHJlZS4gIFRoZSBnb2FsIGlzIHRvIHN1cHBvcnQgYSBzbWFsbCBzdWJzZXQgb2YgdGhlIGFiYnJldmlhdGVkIHN5bnRheDsgYSBmdWxsCitYUGF0aCBlbmdpbmUgaXMgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhlIG1vZHVsZS4KKworRXhhbXBsZQorXl5eXl5eXgorCitIZXJlJ3MgYW4gZXhhbXBsZSB0aGF0IGRlbW9uc3RyYXRlcyBzb21lIG9mIHRoZSBYUGF0aCBjYXBhYmlsaXRpZXMgb2YgdGhlCittb2R1bGUuICBXZSdsbCBiZSB1c2luZyB0aGUgYGBjb3VudHJ5ZGF0YWBgIFhNTCBkb2N1bWVudCBmcm9tIHRoZQorOnJlZjpgUGFyc2luZyBYTUwgPGVsZW1lbnR0cmVlLXBhcnNpbmcteG1sPmAgc2VjdGlvbjo6CisKKyAgIGltcG9ydCB4bWwuZXRyZWUuRWxlbWVudFRyZWUgYXMgRVQKKworICAgcm9vdCA9IEVULmZyb21zdHJpbmcoY291bnRyeWRhdGEpCisKKyAgICMgVG9wLWxldmVsIGVsZW1lbnRzCisgICByb290LmZpbmRhbGwoIi4iKQorCisgICAjIEFsbCAnbmVpZ2hib3InIGdyYW5kLWNoaWxkcmVuIG9mICdjb3VudHJ5JyBjaGlsZHJlbiBvZiB0aGUgdG9wLWxldmVsCisgICAjIGVsZW1lbnRzCisgICByb290LmZpbmRhbGwoIi4vY291bnRyeS9uZWlnaGJvciIpCisKKyAgICMgTm9kZXMgd2l0aCBuYW1lPSdTaW5nYXBvcmUnIHRoYXQgaGF2ZSBhICd5ZWFyJyBjaGlsZAorICAgcm9vdC5maW5kYWxsKCIuLy95ZWFyLy4uW0BuYW1lPSdTaW5nYXBvcmUnXSIpCisKKyAgICMgJ3llYXInIG5vZGVzIHRoYXQgYXJlIGNoaWxkcmVuIG9mIG5vZGVzIHdpdGggbmFtZT0nU2luZ2Fwb3JlJworICAgcm9vdC5maW5kYWxsKCIuLy8qW0BuYW1lPSdTaW5nYXBvcmUnXS95ZWFyIikKKworICAgIyBBbGwgJ25laWdoYm9yJyBub2RlcyB0aGF0IGFyZSB0aGUgc2Vjb25kIGNoaWxkIG9mIHRoZWlyIHBhcmVudAorICAgcm9vdC5maW5kYWxsKCIuLy9uZWlnaGJvclsyXSIpCisKK1N1cHBvcnRlZCBYUGF0aCBzeW50YXgKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgU3ludGF4ICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworfCBgYHRhZ2BgICAgICAgICAgICAgICAgfCBTZWxlY3RzIGFsbCBjaGlsZCBlbGVtZW50cyB3aXRoIHRoZSBnaXZlbiB0YWcuICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgRm9yIGV4YW1wbGUsIGBgc3BhbWBgIHNlbGVjdHMgYWxsIGNoaWxkIGVsZW1lbnRzICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVkIGBgc3BhbWBgLCBgYHNwYW0vZWdnYGAgc2VsZWN0cyBhbGwgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBncmFuZGNoaWxkcmVuIG5hbWVkIGBgZWdnYGAgaW4gYWxsIGNoaWxkcmVuIG5hbWVkICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzcGFtYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYCpgYCAgICAgICAgICAgICAgICAgfCBTZWxlY3RzIGFsbCBjaGlsZCBlbGVtZW50cy4gIEZvciBleGFtcGxlLCBgYCovZWdnYGAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgc2VsZWN0cyBhbGwgZ3JhbmRjaGlsZHJlbiBuYW1lZCBgYGVnZ2BgLiAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYC5gYCAgICAgICAgICAgICAgICAgfCBTZWxlY3RzIHRoZSBjdXJyZW50IG5vZGUuICBUaGlzIGlzIG1vc3RseSB1c2VmdWwgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGF0aCwgdG8gaW5kaWNhdGUgdGhhdCBpdCdzICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGEgcmVsYXRpdmUgcGF0aC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAvL2BgICAgICAgICAgICAgICAgIHwgU2VsZWN0cyBhbGwgc3ViZWxlbWVudHMsIG9uIGFsbCBsZXZlbHMgYmVuZWF0aCB0aGUgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGN1cnJlbnQgIGVsZW1lbnQuICBGb3IgZXhhbXBsZSwgYGAuLy9lZ2dgYCBzZWxlY3RzICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBhbGwgYGBlZ2dgYCBlbGVtZW50cyBpbiB0aGUgZW50aXJlIHRyZWUuICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgLi5gYCAgICAgICAgICAgICAgICB8IFNlbGVjdHMgdGhlIHBhcmVudCBlbGVtZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbQGF0dHJpYl1gYCAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBoYXZlIHRoZSBnaXZlbiBhdHRyaWJ1dGUuICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYFtAYXR0cmliPSd2YWx1ZSddYGAgfCBTZWxlY3RzIGFsbCBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIGdpdmVuIGF0dHJpYnV0ZSAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgaGFzIHRoZSBnaXZlbiB2YWx1ZS4gIFRoZSB2YWx1ZSBjYW5ub3QgY29udGFpbiAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHF1b3Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbdGFnXWBgICAgICAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBoYXZlIGEgY2hpbGQgbmFtZWQgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGBgdGFnYGAuICBPbmx5IGltbWVkaWF0ZSBjaGlsZHJlbiBhcmUgc3VwcG9ydGVkLiAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbcG9zaXRpb25dYGAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBhcmUgbG9jYXRlZCBhdCB0aGUgZ2l2ZW4gICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uLiAgVGhlIHBvc2l0aW9uIGNhbiBiZSBlaXRoZXIgYW4gaW50ZWdlciAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCAoMSBpcyB0aGUgZmlyc3QgcG9zaXRpb24pLCB0aGUgZXhwcmVzc2lvbiBgYGxhc3QoKWBgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgKGZvciB0aGUgbGFzdCBwb3NpdGlvbiksIG9yIGEgcG9zaXRpb24gcmVsYXRpdmUgdG8gICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBsYXN0IHBvc2l0aW9uIChlLmcuIGBgbGFzdCgpLTFgYCkuICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworUHJlZGljYXRlcyAoZXhwcmVzc2lvbnMgd2l0aGluIHNxdWFyZSBicmFja2V0cykgbXVzdCBiZSBwcmVjZWRlZCBieSBhIHRhZworbmFtZSwgYW4gYXN0ZXJpc2ssIG9yIGFub3RoZXIgcHJlZGljYXRlLiAgYGBwb3NpdGlvbmBgIHByZWRpY2F0ZXMgbXVzdCBiZQorcHJlY2VkZWQgYnkgYSB0YWcgbmFtZS4KKworUmVmZXJlbmNlCistLS0tLS0tLS0KIAogLi4gX2VsZW1lbnR0cmVlLWZ1bmN0aW9uczoKIAogRnVuY3Rpb25zCi0tLS0tLS0tLS0KK15eXl5eXl5eXgogCiAKIC4uIGZ1bmN0aW9uOjogQ29tbWVudCh0ZXh0PU5vbmUpCkBAIC0xOTgsOCArNDcwLDcgQEAKIC4uIF9lbGVtZW50dHJlZS1lbGVtZW50LW9iamVjdHM6CiAKIEVsZW1lbnQgT2JqZWN0cwotLS0tLS0tLS0tLS0tLS0tCi0KK15eXl5eXl5eXl5eXl5eXgogCiAuLiBjbGFzczo6IEVsZW1lbnQodGFnLCBhdHRyaWI9e30sICoqZXh0cmEpCiAKQEAgLTI4MSwzNiArNTUyLDQzIEBACiAKICAgIC4uIG1ldGhvZDo6IGFwcGVuZChzdWJlbGVtZW50KQogCi0gICAgICBBZGRzIHRoZSBlbGVtZW50ICpzdWJlbGVtZW50KiB0byB0aGUgZW5kIG9mIHRoaXMgZWxlbWVudHMgaW50ZXJuYWwgbGlzdAotICAgICAgb2Ygc3ViZWxlbWVudHMuCisgICAgICBBZGRzIHRoZSBlbGVtZW50ICpzdWJlbGVtZW50KiB0byB0aGUgZW5kIG9mIHRoaXMgZWxlbWVudCdzIGludGVybmFsIGxpc3QKKyAgICAgIG9mIHN1YmVsZW1lbnRzLiAgUmFpc2VzIDpleGM6YFR5cGVFcnJvcmAgaWYgKnN1YmVsZW1lbnQqIGlzIG5vdCBhbgorICAgICAgOmNsYXNzOmBFbGVtZW50YC4KIAogCiAgICAuLiBtZXRob2Q6OiBleHRlbmQoc3ViZWxlbWVudHMpCiAKICAgICAgIEFwcGVuZHMgKnN1YmVsZW1lbnRzKiBmcm9tIGEgc2VxdWVuY2Ugb2JqZWN0IHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzLgotICAgICAgUmFpc2VzIDpleGM6YEFzc2VydGlvbkVycm9yYCBpZiBhIHN1YmVsZW1lbnQgaXMgbm90IGEgdmFsaWQgb2JqZWN0LgorICAgICAgUmFpc2VzIDpleGM6YFR5cGVFcnJvcmAgaWYgYSBzdWJlbGVtZW50IGlzIG5vdCBhbiA6Y2xhc3M6YEVsZW1lbnRgLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kKG1hdGNoKQorICAgLi4gbWV0aG9kOjogZmluZChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCiAgICAgICBGaW5kcyB0aGUgZmlyc3Qgc3ViZWxlbWVudCBtYXRjaGluZyAqbWF0Y2gqLiAgKm1hdGNoKiBtYXkgYmUgYSB0YWcgbmFtZQotICAgICAgb3IgcGF0aC4gIFJldHVybnMgYW4gZWxlbWVudCBpbnN0YW5jZSBvciBgYE5vbmVgYC4KKyAgICAgIG9yIGEgOnJlZjpgcGF0aCA8ZWxlbWVudHRyZWUteHBhdGg+YC4gIFJldHVybnMgYW4gZWxlbWVudCBpbnN0YW5jZQorICAgICAgb3IgYGBOb25lYGAuICAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZyBmcm9tIG5hbWVzcGFjZSBwcmVmaXgKKyAgICAgIHRvIGZ1bGwgbmFtZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kYWxsKG1hdGNoKQorICAgLi4gbWV0aG9kOjogZmluZGFsbChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCi0gICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yIHBhdGguICBSZXR1cm5zIGEgbGlzdAotICAgICAgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuCisgICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yCisgICAgICA6cmVmOmBwYXRoIDxlbGVtZW50dHJlZS14cGF0aD5gLiAgUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcKKyAgICAgIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLiAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbQorICAgICAgbmFtZXNwYWNlIHByZWZpeCB0byBmdWxsIG5hbWUuCiAKIAotICAgLi4gbWV0aG9kOjogZmluZHRleHQobWF0Y2gsIGRlZmF1bHQ9Tm9uZSkKKyAgIC4uIG1ldGhvZDo6IGZpbmR0ZXh0KG1hdGNoLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSkKIAogICAgICAgRmluZHMgdGV4dCBmb3IgdGhlIGZpcnN0IHN1YmVsZW1lbnQgbWF0Y2hpbmcgKm1hdGNoKi4gICptYXRjaCogbWF5IGJlCi0gICAgICBhIHRhZyBuYW1lIG9yIHBhdGguICBSZXR1cm5zIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGZpcnN0IG1hdGNoaW5nCi0gICAgICBlbGVtZW50LCBvciAqZGVmYXVsdCogaWYgbm8gZWxlbWVudCB3YXMgZm91bmQuICBOb3RlIHRoYXQgaWYgdGhlIG1hdGNoaW5nCi0gICAgICBlbGVtZW50IGhhcyBubyB0ZXh0IGNvbnRlbnQgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLgorICAgICAgYSB0YWcgbmFtZSBvciBhIDpyZWY6YHBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuICBSZXR1cm5zIHRoZSB0ZXh0IGNvbnRlbnQKKyAgICAgIG9mIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciAqZGVmYXVsdCogaWYgbm8gZWxlbWVudCB3YXMgZm91bmQuCisgICAgICBOb3RlIHRoYXQgaWYgdGhlIG1hdGNoaW5nIGVsZW1lbnQgaGFzIG5vIHRleHQgY29udGVudCBhbiBlbXB0eSBzdHJpbmcKKyAgICAgIGlzIHJldHVybmVkLiAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZyBmcm9tIG5hbWVzcGFjZSBwcmVmaXgKKyAgICAgIHRvIGZ1bGwgbmFtZS4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRjaGlsZHJlbigpCkBAIC0zMjUsOSArNjAzLDEwIEBACiAgICAgICAgICBVc2UgbWV0aG9kIDptZXRoOmBFbGVtZW50Lml0ZXJgIGluc3RlYWQuCiAKIAotICAgLi4gbWV0aG9kOjogaW5zZXJ0KGluZGV4LCBlbGVtZW50KQorICAgLi4gbWV0aG9kOjogaW5zZXJ0KGluZGV4LCBzdWJlbGVtZW50KQogCi0gICAgICBJbnNlcnRzIGEgc3ViZWxlbWVudCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gaW4gdGhpcyBlbGVtZW50LgorICAgICAgSW5zZXJ0cyAqc3ViZWxlbWVudCogYXQgdGhlIGdpdmVuIHBvc2l0aW9uIGluIHRoaXMgZWxlbWVudC4gIFJhaXNlcworICAgICAgOmV4YzpgVHlwZUVycm9yYCBpZiAqc3ViZWxlbWVudCogaXMgbm90IGFuIDpjbGFzczpgRWxlbWVudGAuCiAKIAogICAgLi4gbWV0aG9kOjogaXRlcih0YWc9Tm9uZSkKQEAgLTM0MSwxMCArNjIwLDEzIEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0gICAuLiBtZXRob2Q6OiBpdGVyZmluZChtYXRjaCkKKyAgIC4uIG1ldGhvZDo6IGl0ZXJmaW5kKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKLSAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IgcGF0aC4gIFJldHVybnMgYW4gaXRlcmFibGUKLSAgICAgIHlpZWxkaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4KKyAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IKKyAgICAgIDpyZWY6YHBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuICBSZXR1cm5zIGFuIGl0ZXJhYmxlIHlpZWxkaW5nIGFsbAorICAgICAgbWF0Y2hpbmcgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nCisgICAgICBmcm9tIG5hbWVzcGFjZSBwcmVmaXggdG8gZnVsbCBuYW1lLgorCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC0zODksNyArNjcxLDcgQEAKIC4uIF9lbGVtZW50dHJlZS1lbGVtZW50dHJlZS1vYmplY3RzOgogCiBFbGVtZW50VHJlZSBPYmplY3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBFbGVtZW50VHJlZShlbGVtZW50PU5vbmUsIGZpbGU9Tm9uZSkKQEAgLTQwOSwyOCArNjkxLDE5IEBACiAgICAgICBjYXJlLiAgKmVsZW1lbnQqIGlzIGFuIGVsZW1lbnQgaW5zdGFuY2UuCiAKIAotICAgLi4gbWV0aG9kOjogZmluZChtYXRjaCkKKyAgIC4uIG1ldGhvZDo6IGZpbmQobWF0Y2gsIG5hbWVzcGFjZXM9Tm9uZSkKIAotICAgICAgRmluZHMgdGhlIGZpcnN0IHRvcGxldmVsIGVsZW1lbnQgbWF0Y2hpbmcgKm1hdGNoKi4gICptYXRjaCogbWF5IGJlIGEgdGFnCi0gICAgICBuYW1lIG9yIHBhdGguICBTYW1lIGFzIGdldHJvb3QoKS5maW5kKG1hdGNoKS4gIFJldHVybnMgdGhlIGZpcnN0IG1hdGNoaW5nCi0gICAgICBlbGVtZW50LCBvciBgYE5vbmVgYCBpZiBubyBlbGVtZW50IHdhcyBmb3VuZC4KKyAgICAgIFNhbWUgYXMgOm1ldGg6YEVsZW1lbnQuZmluZGAsIHN0YXJ0aW5nIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLgogCiAKLSAgIC4uIG1ldGhvZDo6IGZpbmRhbGwobWF0Y2gpCisgICAuLiBtZXRob2Q6OiBmaW5kYWxsKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKLSAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IgcGF0aC4gIFNhbWUgYXMKLSAgICAgIGdldHJvb3QoKS5maW5kYWxsKG1hdGNoKS4gICptYXRjaCogbWF5IGJlIGEgdGFnIG5hbWUgb3IgcGF0aC4gIFJldHVybnMgYQotICAgICAgbGlzdCBjb250YWluaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cywgaW4gZG9jdW1lbnQgb3JkZXIuCisgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmRhbGxgLCBzdGFydGluZyBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kdGV4dChtYXRjaCwgZGVmYXVsdD1Ob25lKQorICAgLi4gbWV0aG9kOjogZmluZHRleHQobWF0Y2gsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKQogCi0gICAgICBGaW5kcyB0aGUgZWxlbWVudCB0ZXh0IGZvciB0aGUgZmlyc3QgdG9wbGV2ZWwgZWxlbWVudCB3aXRoIGdpdmVuIHRhZy4KLSAgICAgIFNhbWUgYXMgZ2V0cm9vdCgpLmZpbmR0ZXh0KG1hdGNoKS4gICptYXRjaCogbWF5IGJlIGEgdGFnIG5hbWUgb3IgcGF0aC4KLSAgICAgICpkZWZhdWx0KiBpcyB0aGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBlbGVtZW50IHdhcyBub3QgZm91bmQuICBSZXR1cm5zCi0gICAgICB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciB0aGUgZGVmYXVsdCB2YWx1ZSBubwotICAgICAgZWxlbWVudCB3YXMgZm91bmQuICBOb3RlIHRoYXQgaWYgdGhlIGVsZW1lbnQgaXMgZm91bmQsIGJ1dCBoYXMgbm8gdGV4dAotICAgICAgY29udGVudCwgdGhpcyBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuCisgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmR0ZXh0YCwgc3RhcnRpbmcgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0aXRlcmF0b3IodGFnPU5vbmUpCkBAIC00NTEsMTEgKzcyNCw5IEBACiAgICAgICB0byBsb29rIGZvciAoZGVmYXVsdCBpcyB0byByZXR1cm4gYWxsIGVsZW1lbnRzKQogCiAKLSAgIC4uIG1ldGhvZDo6IGl0ZXJmaW5kKG1hdGNoKQorICAgLi4gbWV0aG9kOjogaXRlcmZpbmQobWF0Y2gsIG5hbWVzcGFjZXM9Tm9uZSkKIAotICAgICAgRmluZHMgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzLCBieSB0YWcgbmFtZSBvciBwYXRoLiAgU2FtZSBhcwotICAgICAgZ2V0cm9vdCgpLml0ZXJmaW5kKG1hdGNoKS4gUmV0dXJucyBhbiBpdGVyYWJsZSB5aWVsZGluZyBhbGwgbWF0Y2hpbmcKLSAgICAgIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLgorICAgICAgU2FtZSBhcyA6bWV0aDpgRWxlbWVudC5pdGVyZmluZGAsIHN0YXJ0aW5nIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtNDY0LDIwICs3MzUsMjkgQEAKIAogICAgICAgTG9hZHMgYW4gZXh0ZXJuYWwgWE1MIHNlY3Rpb24gaW50byB0aGlzIGVsZW1lbnQgdHJlZS4gICpzb3VyY2UqIGlzIGEgZmlsZQogICAgICAgbmFtZSBvciA6dGVybTpgZmlsZSBvYmplY3RgLiAgKnBhcnNlciogaXMgYW4gb3B0aW9uYWwgcGFyc2VyIGluc3RhbmNlLgotICAgICAgSWYgbm90IGdpdmVuLCB0aGUgc3RhbmRhcmQgWE1MUGFyc2VyIHBhcnNlciBpcyB1c2VkLiAgUmV0dXJucyB0aGUgc2VjdGlvbgotICAgICAgcm9vdCBlbGVtZW50LgorICAgICAgSWYgbm90IGdpdmVuLCB0aGUgc3RhbmRhcmQgOmNsYXNzOmBYTUxQYXJzZXJgIHBhcnNlciBpcyB1c2VkLiAgUmV0dXJucyB0aGUKKyAgICAgIHNlY3Rpb24gcm9vdCBlbGVtZW50LgogCiAKLSAgIC4uIG1ldGhvZDo6IHdyaXRlKGZpbGUsIGVuY29kaW5nPSJ1cy1hc2NpaSIsIHhtbF9kZWNsYXJhdGlvbj1Ob25lLCBtZXRob2Q9InhtbCIpCisgICAuLiBtZXRob2Q6OiB3cml0ZShmaWxlLCBlbmNvZGluZz0idXMtYXNjaWkiLCB4bWxfZGVjbGFyYXRpb249Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPSJ4bWwiKQogCiAgICAgICBXcml0ZXMgdGhlIGVsZW1lbnQgdHJlZSB0byBhIGZpbGUsIGFzIFhNTC4gICpmaWxlKiBpcyBhIGZpbGUgbmFtZSwgb3IgYQotICAgICAgOnRlcm06YGZpbGUgb2JqZWN0YCBvcGVuZWQgZm9yIHdyaXRpbmcuICAqZW5jb2RpbmcqIFsxXV8gaXMgdGhlIG91dHB1dCBlbmNvZGluZwotICAgICAgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLiAgVXNlIGBgZW5jb2Rpbmc9InVuaWNvZGUiYGAgdG8gd3JpdGUgYSBVbmljb2RlIHN0cmluZy4KLSAgICAgICp4bWxfZGVjbGFyYXRpb24qIGNvbnRyb2xzIGlmIGFuIFhNTCBkZWNsYXJhdGlvbgotICAgICAgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmaWxlLiAgVXNlIEZhbHNlIGZvciBuZXZlciwgVHJ1ZSBmb3IgYWx3YXlzLCBOb25lCi0gICAgICBmb3Igb25seSBpZiBub3QgVVMtQVNDSUkgb3IgVVRGLTggb3IgVW5pY29kZSAoZGVmYXVsdCBpcyBOb25lKS4gICptZXRob2QqIGlzCi0gICAgICBlaXRoZXIgYGAieG1sImBgLCBgYCJodG1sImBgIG9yIGBgInRleHQiYGAgKGRlZmF1bHQgaXMgYGAieG1sImBgKS4KLSAgICAgIFJldHVybnMgYW4gKG9wdGlvbmFsbHkpIGVuY29kZWQgc3RyaW5nLgorICAgICAgOnRlcm06YGZpbGUgb2JqZWN0YCBvcGVuZWQgZm9yIHdyaXRpbmcuICAqZW5jb2RpbmcqIFsxXV8gaXMgdGhlIG91dHB1dAorICAgICAgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLgorICAgICAgKnhtbF9kZWNsYXJhdGlvbiogY29udHJvbHMgaWYgYW4gWE1MIGRlY2xhcmF0aW9uIHNob3VsZCBiZSBhZGRlZCB0byB0aGUKKyAgICAgIGZpbGUuICBVc2UgYGBGYWxzZWBgIGZvciBuZXZlciwgYGBUcnVlYGAgZm9yIGFsd2F5cywgYGBOb25lYGAKKyAgICAgIGZvciBvbmx5IGlmIG5vdCBVUy1BU0NJSSBvciBVVEYtOCBvciBVbmljb2RlIChkZWZhdWx0IGlzIGBgTm9uZWBgKS4KKyAgICAgICptZXRob2QqIGlzIGVpdGhlciBgYCJ4bWwiYGAsIGBgImh0bWwiYGAgb3IgYGAidGV4dCJgYCAoZGVmYXVsdCBpcworICAgICAgYGAieG1sImBgKS4KKworICAgICAgVGhlIG91dHB1dCBpcyBlaXRoZXIgYSBzdHJpbmcgKDpjbGFzczpgc3RyYCkgb3IgYmluYXJ5ICg6Y2xhc3M6YGJ5dGVzYCkuCisgICAgICBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICplbmNvZGluZyogYXJndW1lbnQuICBJZiAqZW5jb2RpbmcqIGlzCisgICAgICBgYCJ1bmljb2RlImBgLCB0aGUgb3V0cHV0IGlzIGEgc3RyaW5nOyBvdGhlcndpc2UsIGl0J3MgYmluYXJ5LiAgTm90ZSB0aGF0CisgICAgICB0aGlzIG1heSBjb25mbGljdCB3aXRoIHRoZSB0eXBlIG9mICpmaWxlKiBpZiBpdCdzIGFuIG9wZW4KKyAgICAgIDp0ZXJtOmBmaWxlIG9iamVjdGA7IG1ha2Ugc3VyZSB5b3UgZG8gbm90IHRyeSB0byB3cml0ZSBhIHN0cmluZyB0byBhCisgICAgICBiaW5hcnkgc3RyZWFtIGFuZCB2aWNlIHZlcnNhLgorCiAKIFRoaXMgaXMgdGhlIFhNTCBmaWxlIHRoYXQgaXMgZ29pbmcgdG8gYmUgbWFuaXB1bGF0ZWQ6OgogCkBAIC01MTAsNyArNzkwLDcgQEAKIC4uIF9lbGVtZW50dHJlZS1xbmFtZS1vYmplY3RzOgogCiBRTmFtZSBPYmplY3RzCi0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBRTmFtZSh0ZXh0X29yX3VyaSwgdGFnPU5vbmUpCkBAIC01MjYsNyArODA2LDcgQEAKIC4uIF9lbGVtZW50dHJlZS10cmVlYnVpbGRlci1vYmplY3RzOgogCiBUcmVlQnVpbGRlciBPYmplY3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBUcmVlQnVpbGRlcihlbGVtZW50X2ZhY3Rvcnk9Tm9uZSkKQEAgLTUzNCw5ICs4MTQsOSBAQAogICAgR2VuZXJpYyBlbGVtZW50IHN0cnVjdHVyZSBidWlsZGVyLiAgVGhpcyBidWlsZGVyIGNvbnZlcnRzIGEgc2VxdWVuY2Ugb2YKICAgIHN0YXJ0LCBkYXRhLCBhbmQgZW5kIG1ldGhvZCBjYWxscyB0byBhIHdlbGwtZm9ybWVkIGVsZW1lbnQgc3RydWN0dXJlLiAgWW91CiAgICBjYW4gdXNlIHRoaXMgY2xhc3MgdG8gYnVpbGQgYW4gZWxlbWVudCBzdHJ1Y3R1cmUgdXNpbmcgYSBjdXN0b20gWE1MIHBhcnNlciwKLSAgIG9yIGEgcGFyc2VyIGZvciBzb21lIG90aGVyIFhNTC1saWtlIGZvcm1hdC4gIFRoZSAqZWxlbWVudF9mYWN0b3J5KiBpcyBjYWxsZWQKLSAgIHRvIGNyZWF0ZSBuZXcgOmNsYXNzOmBFbGVtZW50YCBpbnN0YW5jZXMgd2hlbiBnaXZlbi4KLQorICAgb3IgYSBwYXJzZXIgZm9yIHNvbWUgb3RoZXIgWE1MLWxpa2UgZm9ybWF0LiAgKmVsZW1lbnRfZmFjdG9yeSosIHdoZW4gZ2l2ZW4sCisgICBtdXN0IGJlIGEgY2FsbGFibGUgYWNjZXB0aW5nIHR3byBwb3NpdGlvbmFsIGFyZ3VtZW50czogYSB0YWcgYW5kCisgICBhIGRpY3Qgb2YgYXR0cmlidXRlcy4gIEl0IGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIG5ldyBlbGVtZW50IGluc3RhbmNlLgogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKQEAgLTU3Nyw3ICs4NTcsNyBAQAogLi4gX2VsZW1lbnR0cmVlLXhtbHBhcnNlci1vYmplY3RzOgogCiBYTUxQYXJzZXIgT2JqZWN0cwotLS0tLS0tLS0tLS0tLS0tLS0KK15eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBYTUxQYXJzZXIoaHRtbD0wLCB0YXJnZXQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSkKQEAgLTU4NSw5ICs4NjUsOSBAQAogICAgOmNsYXNzOmBFbGVtZW50YCBzdHJ1Y3R1cmUgYnVpbGRlciBmb3IgWE1MIHNvdXJjZSBkYXRhLCBiYXNlZCBvbiB0aGUgZXhwYXQKICAgIHBhcnNlci4gICpodG1sKiBhcmUgcHJlZGVmaW5lZCBIVE1MIGVudGl0aWVzLiAgVGhpcyBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgYnkKICAgIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLiAgKnRhcmdldCogaXMgdGhlIHRhcmdldCBvYmplY3QuICBJZiBvbWl0dGVkLCB0aGUKLSAgIGJ1aWxkZXIgdXNlcyBhbiBpbnN0YW5jZSBvZiB0aGUgc3RhbmRhcmQgVHJlZUJ1aWxkZXIgY2xhc3MuICAqZW5jb2RpbmcqIFsxXV8KLSAgIGlzIG9wdGlvbmFsLiAgSWYgZ2l2ZW4sIHRoZSB2YWx1ZSBvdmVycmlkZXMgdGhlIGVuY29kaW5nIHNwZWNpZmllZCBpbiB0aGUKLSAgIFhNTCBmaWxlLgorICAgYnVpbGRlciB1c2VzIGFuIGluc3RhbmNlIG9mIHRoZSBzdGFuZGFyZCA6Y2xhc3M6YFRyZWVCdWlsZGVyYCBjbGFzcy4KKyAgICplbmNvZGluZyogWzFdXyBpcyBvcHRpb25hbC4gIElmIGdpdmVuLCB0aGUgdmFsdWUgb3ZlcnJpZGVzIHRoZSBlbmNvZGluZworICAgc3BlY2lmaWVkIGluIHRoZSBYTUwgZmlsZS4KIAogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCkBAIC02NDUsNiArOTI1LDI0IEBACiAgICAgPj4+IHBhcnNlci5jbG9zZSgpCiAgICAgNAogCitFeGNlcHRpb25zCiteXl5eXl5eXl5eCisKKy4uIGNsYXNzOjogUGFyc2VFcnJvcgorCisgICBYTUwgcGFyc2UgZXJyb3IsIHJhaXNlZCBieSB0aGUgdmFyaW91cyBwYXJzaW5nIG1ldGhvZHMgaW4gdGhpcyBtb2R1bGUgd2hlbgorICAgcGFyc2luZyBmYWlscy4gIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW5zdGFuY2Ugb2YgdGhpcyBleGNlcHRpb24KKyAgIHdpbGwgY29udGFpbiBhIHVzZXItZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gIEluIGFkZGl0aW9uLCBpdCB3aWxsIGhhdmUKKyAgIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhdmFpbGFibGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvZGUKKworICAgICAgQSBudW1lcmljIGVycm9yIGNvZGUgZnJvbSB0aGUgZXhwYXQgcGFyc2VyLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YKKyAgICAgIDptb2Q6YHhtbC5wYXJzZXJzLmV4cGF0YCBmb3IgdGhlIGxpc3Qgb2YgZXJyb3IgY29kZXMgYW5kIHRoZWlyIG1lYW5pbmdzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwb3NpdGlvbgorCisgICAgICBBIHR1cGxlIG9mICpsaW5lKiwgKmNvbHVtbiogbnVtYmVycywgc3BlY2lmeWluZyB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuc2F4LnV0aWxzLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CmluZGV4IGZmMzZmZDguLjBhNDAzOGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CkBAIC02Miw3ICs2Miw3IEBACiAgICB0YWdzLCBpZiBzZXQgdG8gKlRydWUqIHRoZXkgYXJlIGVtaXR0ZWQgYXMgYSBzaW5nbGUgc2VsZi1jbG9zZWQgdGFnLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLSAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzCisgICAgICBUaGUgKnNob3J0X2VtcHR5X2VsZW1lbnRzKiBwYXJhbWV0ZXIuCiAKIAogLi4gY2xhc3M6OiBYTUxGaWx0ZXJCYXNlKGJhc2UpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CmluZGV4IGU3Mjc3MGEuLjE4NzFjOTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CkBAIC04LDcgKzgsNyBAQAogCiAKIC4uIFhYWCBOb3QgZXZlcnl0aGluZyBpcyBkb2N1bWVudGVkIHlldC4gIEl0IG1pZ2h0IGJlIGdvb2QgdG8gZGVzY3JpYmUKLSAgIE1hcnNoYWxsZXIsIFVubWFyc2hhbGxlciwgZ2V0cGFyc2VyLCBkdW1wcywgbG9hZHMsIGFuZCBUcmFuc3BvcnQuCisgICBNYXJzaGFsbGVyLCBVbm1hcnNoYWxsZXIsIGdldHBhcnNlciBhbmQgVHJhbnNwb3J0LgogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi94bWxycGMvY2xpZW50LnB5YAogCkBAIC0yMSw3ICsyMSwxMiBAQAogYmV0d2VlbiBjb25mb3JtYWJsZSBQeXRob24gb2JqZWN0cyBhbmQgWE1MIG9uIHRoZSB3aXJlLgogCiAKLS4uIGNsYXNzOjogU2VydmVyUHJveHkodXJpLCB0cmFuc3BvcnQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgdmVyYm9zZT1GYWxzZSwgYWxsb3dfbm9uZT1GYWxzZSwgdXNlX2RhdGV0aW1lPUZhbHNlKQorLi4gY2xhc3M6OiBTZXJ2ZXJQcm94eSh1cmksIHRyYW5zcG9ydD1Ob25lLCBlbmNvZGluZz1Ob25lLCB2ZXJib3NlPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25vbmU9RmFsc2UsIHVzZV9kYXRldGltZT1GYWxzZSwgXAorICAgICAgICAgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgogCiAgICBBIDpjbGFzczpgU2VydmVyUHJveHlgIGluc3RhbmNlIGlzIGFuIG9iamVjdCB0aGF0IG1hbmFnZXMgY29tbXVuaWNhdGlvbiB3aXRoIGEKICAgIHJlbW90ZSBYTUwtUlBDIHNlcnZlci4gIFRoZSByZXF1aXJlZCBmaXJzdCBhcmd1bWVudCBpcyBhIFVSSSAoVW5pZm9ybSBSZXNvdXJjZQpAQCAtMzQsOSArMzksMTMgQEAKICAgIFhNTDsgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIGZvciBgYE5vbmVgYCB0byByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIFRoaXMgaXMKICAgIGEgY29tbW9ubHktdXNlZCBleHRlbnNpb24gdG8gdGhlIFhNTC1SUEMgc3BlY2lmaWNhdGlvbiwgYnV0IGlzbid0IHN1cHBvcnRlZCBieQogICAgYWxsIGNsaWVudHMgYW5kIHNlcnZlcnM7IHNlZSBodHRwOi8vb250b3N5cy5jb20veG1sLXJwYy9leHRlbnNpb25zLnBocCBmb3IgYQotICAgZGVzY3JpcHRpb24uICBUaGUgKnVzZV9kYXRldGltZSogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvCi0gICBiZSBwcmVzZW50ZWQgYXMgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0czsgdGhpcyBpcyBmYWxzZSBieSBkZWZhdWx0LgotICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0cyBtYXkgYmUgcGFzc2VkIHRvIGNhbGxzLgorICAgZGVzY3JpcHRpb24uICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIGNhbiBiZSB1c2VkIHRvIGNhdXNlIGRhdGUvdGltZSB2YWx1ZXMKKyAgIHRvIGJlIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzIGFuZCBiaW5hcnkgZGF0YSB0byBiZQorICAgcHJlc2VudGVkIGFzIDpjbGFzczpgYnl0ZXNgIG9iamVjdHM7IHRoaXMgZmxhZyBpcyBmYWxzZSBieSBkZWZhdWx0LgorICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgYW5kIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgbWF5IGJlIHBhc3NlZCB0byBjYWxscy4KKworICAgVGhlIG9ic29sZXRlICp1c2VfZGF0ZXRpbWUqIGZsYWcgaXMgc2ltaWxhciB0byAqdXNlX2J1aWx0aW5fdHlwZXMqIGJ1dCBpdAorICAgYXBwbGllcyBvbmx5IHRvIGRhdGUvdGltZSB2YWx1ZXMuCiAKICAgIEJvdGggdGhlIEhUVFAgYW5kIEhUVFBTIHRyYW5zcG9ydHMgc3VwcG9ydCB0aGUgVVJMIHN5bnRheCBleHRlbnNpb24gZm9yIEhUVFAKICAgIEJhc2ljIEF1dGhlbnRpY2F0aW9uOiBgYGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGhgYC4gIFRoZSAgYGB1c2VyOnBhc3NgYApAQCAtNzgsMTIgKzg3LDEyIEBACiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvbmx5IHRoZWlyICpfX2RpY3RfXyogYXR0cmlidXRlIGlzICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgZGF0ZXNgICAgICAgICAgICAgICAgICAgfCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAocGFzcyBpbiBhbiAgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YERhdGVUaW1lYCBjbGFzcykgb3IgfAorICAgfCA6Y29uc3Q6YGRhdGVzYCAgICAgICAgICAgICAgICAgIHwgSW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guICBQYXNzIGluIGFuICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBEYXRlVGltZWAgY2xhc3Mgb3IgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UuICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgYmluYXJ5IGRhdGFgICAgICAgICAgICAgfCBwYXNzIGluIGFuIGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YEJpbmFyeWAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdyYXBwZXIgY2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCA6Y29uc3Q6YGJpbmFyeSBkYXRhYCAgICAgICAgICAgIHwgUGFzcyBpbiBhbiBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBCaW5hcnlgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3cmFwcGVyIGNsYXNzIG9yIGEgOmNsYXNzOmBieXRlc2AgaW5zdGFuY2UuIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAgICBUaGlzIGlzIHRoZSBmdWxsIHNldCBvZiBkYXRhIHR5cGVzIHN1cHBvcnRlZCBieSBYTUwtUlBDLiAgTWV0aG9kIGNhbGxzIG1heSBhbHNvCkBAIC05OCw4ICsxMDcsOSBAQAogICAgZW5zdXJlIHRoYXQgdGhlIHN0cmluZyBpcyBmcmVlIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmVuJ3QgYWxsb3dlZCBpbiBYTUwsIHN1Y2ggYXMKICAgIHRoZSBjb250cm9sIGNoYXJhY3RlcnMgd2l0aCBBU0NJSSB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAzMSAoZXhjZXB0LCBvZiBjb3Vyc2UsCiAgICB0YWIsIG5ld2xpbmUgYW5kIGNhcnJpYWdlIHJldHVybik7IGZhaWxpbmcgdG8gZG8gdGhpcyB3aWxsIHJlc3VsdCBpbiBhbiBYTUwtUlBDCi0gICByZXF1ZXN0IHRoYXQgaXNuJ3Qgd2VsbC1mb3JtZWQgWE1MLiAgSWYgeW91IGhhdmUgdG8gcGFzcyBhcmJpdHJhcnkgc3RyaW5ncyB2aWEKLSAgIFhNTC1SUEMsIHVzZSB0aGUgOmNsYXNzOmBCaW5hcnlgIHdyYXBwZXIgY2xhc3MgZGVzY3JpYmVkIGJlbG93LgorICAgcmVxdWVzdCB0aGF0IGlzbid0IHdlbGwtZm9ybWVkIFhNTC4gIElmIHlvdSBoYXZlIHRvIHBhc3MgYXJiaXRyYXJ5IGJ5dGVzCisgICB2aWEgWE1MLVJQQywgdXNlIHRoZSA6Y2xhc3M6YGJ5dGVzYCBjbGFzcyBvciB0aGUgY2xhc3M6YEJpbmFyeWAgd3JhcHBlciBjbGFzcworICAgZGVzY3JpYmVkIGJlbG93LgogCiAgICA6Y2xhc3M6YFNlcnZlcmAgaXMgcmV0YWluZWQgYXMgYW4gYWxpYXMgZm9yIDpjbGFzczpgU2VydmVyUHJveHlgIGZvciBiYWNrd2FyZHMKICAgIGNvbXBhdGliaWxpdHkuICBOZXcgY29kZSBzaG91bGQgdXNlIDpjbGFzczpgU2VydmVyUHJveHlgLgpAQCAtMjQ5LDcgKzI1OSw3IEBACiBCaW5hcnkgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBjbGFzcyBtYXkgYmUgaW5pdGlhbGl6ZWQgZnJvbSBzdHJpbmcgZGF0YSAod2hpY2ggbWF5IGluY2x1ZGUgTlVMcykuIFRoZQorVGhpcyBjbGFzcyBtYXkgYmUgaW5pdGlhbGl6ZWQgZnJvbSBieXRlcyBkYXRhICh3aGljaCBtYXkgaW5jbHVkZSBOVUxzKS4gVGhlCiBwcmltYXJ5IGFjY2VzcyB0byB0aGUgY29udGVudCBvZiBhIDpjbGFzczpgQmluYXJ5YCBvYmplY3QgaXMgcHJvdmlkZWQgYnkgYW4KIGF0dHJpYnV0ZToKIApAQCAtMjU3LDE1ICsyNjcsMTUgQEAKIC4uIGF0dHJpYnV0ZTo6IEJpbmFyeS5kYXRhCiAKICAgIFRoZSBiaW5hcnkgZGF0YSBlbmNhcHN1bGF0ZWQgYnkgdGhlIDpjbGFzczpgQmluYXJ5YCBpbnN0YW5jZS4gIFRoZSBkYXRhIGlzCi0gICBwcm92aWRlZCBhcyBhbiA4LWJpdCBzdHJpbmcuCisgICBwcm92aWRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KIAogOmNsYXNzOmBCaW5hcnlgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMsIHN1cHBvcnRlZCBtYWlubHkgZm9yCiBpbnRlcm5hbCB1c2UgYnkgdGhlIG1hcnNoYWxsaW5nL3VubWFyc2hhbGxpbmcgY29kZToKIAogCi0uLiBtZXRob2Q6OiBCaW5hcnkuZGVjb2RlKHN0cmluZykKKy4uIG1ldGhvZDo6IEJpbmFyeS5kZWNvZGUoYnl0ZXMpCiAKLSAgIEFjY2VwdCBhIGJhc2U2NCBzdHJpbmcgYW5kIGRlY29kZSBpdCBhcyB0aGUgaW5zdGFuY2UncyBuZXcgZGF0YS4KKyAgIEFjY2VwdCBhIGJhc2U2NCA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgYW5kIGRlY29kZSBpdCBhcyB0aGUgaW5zdGFuY2UncyBuZXcgZGF0YS4KIAogCiAuLiBtZXRob2Q6OiBCaW5hcnkuZW5jb2RlKG91dCkKQEAgLTQ3MSwxNCArNDgxLDIxIEBACiAgICBpdCB2aWEgYW4gZXh0ZW5zaW9uLCAgcHJvdmlkZSBhIHRydWUgdmFsdWUgZm9yICphbGxvd19ub25lKi4KIAogCi0uLiBmdW5jdGlvbjo6IGxvYWRzKGRhdGEsIHVzZV9kYXRldGltZT1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogbG9hZHMoZGF0YSwgdXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKIAogICAgQ29udmVydCBhbiBYTUwtUlBDIHJlcXVlc3Qgb3IgcmVzcG9uc2UgaW50byBQeXRob24gb2JqZWN0cywgYSBgYChwYXJhbXMsCiAgICBtZXRob2RuYW1lKWBgLiAgKnBhcmFtcyogaXMgYSB0dXBsZSBvZiBhcmd1bWVudDsgKm1ldGhvZG5hbWUqIGlzIGEgc3RyaW5nLCBvcgogICAgYGBOb25lYGAgaWYgbm8gbWV0aG9kIG5hbWUgaXMgcHJlc2VudCBpbiB0aGUgcGFja2V0LiBJZiB0aGUgWE1MLVJQQyBwYWNrZXQKICAgIHJlcHJlc2VudHMgYSBmYXVsdCBjb25kaXRpb24sIHRoaXMgZnVuY3Rpb24gd2lsbCByYWlzZSBhIDpleGM6YEZhdWx0YCBleGNlcHRpb24uCi0gICBUaGUgKnVzZV9kYXRldGltZSogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvIGJlIHByZXNlbnRlZCBhcwotICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0czsgdGhpcyBpcyBmYWxzZSBieSBkZWZhdWx0LgorICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvIGJlCisgICBwcmVzZW50ZWQgYXMgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0cyBhbmQgYmluYXJ5IGRhdGEgdG8gYmUKKyAgIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzOyB0aGlzIGZsYWcgaXMgZmFsc2UgYnkgZGVmYXVsdC4KKworICAgVGhlIG9ic29sZXRlICp1c2VfZGF0ZXRpbWUqIGZsYWcgaXMgc2ltaWxhciB0byAqdXNlX2J1aWx0aW5fdHlwZXMqIGJ1dCBpdAorICAgYXBwbGllcyBvbmx5IHRvIGRhdGUvdGltZSB2YWx1ZXMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KIAogCiAuLiBfeG1scnBjLWNsaWVudC1leGFtcGxlOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAppbmRleCA2N2ZlYmE2Li42NDkzZmQ0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdApAQCAtMTYsNyArMTYsOSBAQAogOmNsYXNzOmBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlcmAuCiAKIAotLi4gY2xhc3M6OiBTaW1wbGVYTUxSUENTZXJ2ZXIoYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUpCisuLiBjbGFzczo6IFNpbXBsZVhNTFJQQ1NlcnZlcihhZGRyLCByZXF1ZXN0SGFuZGxlcj1TaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlcixcCisgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLFwKKyAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQogCiAgICBDcmVhdGUgYSBuZXcgc2VydmVyIGluc3RhbmNlLiAgVGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2RzIGZvciByZWdpc3RyYXRpb24gb2YKICAgIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBjYWxsZWQgYnkgdGhlIFhNTC1SUEMgcHJvdG9jb2wuICBUaGUgKnJlcXVlc3RIYW5kbGVyKgpAQCAtMjUsMTggKzI3LDMxIEBACiAgICBhcmUgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXJgIGNvbnN0cnVjdG9yLiAgSWYgKmxvZ1JlcXVlc3RzKgogICAgaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCByZXF1ZXN0cyB3aWxsIGJlIGxvZ2dlZDsgc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byBmYWxzZQogICAgd2lsbCB0dXJuIG9mZiBsb2dnaW5nLiAgIFRoZSAqYWxsb3dfbm9uZSogYW5kICplbmNvZGluZyogcGFyYW1ldGVycyBhcmUgcGFzc2VkCi0gICBvbiB0byAgOm1vZDpgeG1scnBjLmNsaWVudGAgYW5kIGNvbnRyb2wgdGhlIFhNTC1SUEMgcmVzcG9uc2VzIHRoYXQgd2lsbCBiZSByZXR1cm5lZAorICAgb24gdG8gOm1vZDpgeG1scnBjLmNsaWVudGAgYW5kIGNvbnRyb2wgdGhlIFhNTC1SUEMgcmVzcG9uc2VzIHRoYXQgd2lsbCBiZSByZXR1cm5lZAogICAgZnJvbSB0aGUgc2VydmVyLiBUaGUgKmJpbmRfYW5kX2FjdGl2YXRlKiBwYXJhbWV0ZXIgY29udHJvbHMgd2hldGhlcgogICAgOm1ldGg6YHNlcnZlcl9iaW5kYCBhbmQgOm1ldGg6YHNlcnZlcl9hY3RpdmF0ZWAgYXJlIGNhbGxlZCBpbW1lZGlhdGVseSBieSB0aGUKICAgIGNvbnN0cnVjdG9yOyBpdCBkZWZhdWx0cyB0byB0cnVlLiBTZXR0aW5nIGl0IHRvIGZhbHNlIGFsbG93cyBjb2RlIHRvIG1hbmlwdWxhdGUKICAgIHRoZSAqYWxsb3dfcmV1c2VfYWRkcmVzcyogY2xhc3MgdmFyaWFibGUgYmVmb3JlIHRoZSBhZGRyZXNzIGlzIGJvdW5kLgorICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogcGFyYW1ldGVyIGlzIHBhc3NlZCB0byB0aGUKKyAgIDpmdW5jOmB+eG1scnBjLmNsaWVudC5sb2Fkc2AgZnVuY3Rpb24gYW5kIGNvbnRyb2xzIHdoaWNoIHR5cGVzIGFyZSBwcm9jZXNzZWQKKyAgIHdoZW4gZGF0ZS90aW1lcyB2YWx1ZXMgb3IgYmluYXJ5IGRhdGEgYXJlIHJlY2VpdmVkOyBpdCBkZWZhdWx0cyB0byBmYWxzZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgogCiAKLS4uIGNsYXNzOjogQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSkKKy4uIGNsYXNzOjogQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSxcCisgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IGluc3RhbmNlIHRvIGhhbmRsZSBYTUwtUlBDIHJlcXVlc3RzIGluIGEgQ0dJIGVudmlyb25tZW50LiAgVGhlCiAgICAqYWxsb3dfbm9uZSogYW5kICplbmNvZGluZyogcGFyYW1ldGVycyBhcmUgcGFzc2VkIG9uIHRvIDptb2Q6YHhtbHJwYy5jbGllbnRgCiAgICBhbmQgY29udHJvbCB0aGUgWE1MLVJQQyByZXNwb25zZXMgdGhhdCB3aWxsIGJlIHJldHVybmVkIGZyb20gdGhlIHNlcnZlci4KKyAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIHBhcmFtZXRlciBpcyBwYXNzZWQgdG8gdGhlCisgICA6ZnVuYzpgfnhtbHJwYy5jbGllbnQubG9hZHNgIGZ1bmN0aW9uIGFuZCBjb250cm9scyB3aGljaCB0eXBlcyBhcmUgcHJvY2Vzc2VkCisgICB3aGVuIGRhdGUvdGltZXMgdmFsdWVzIG9yIGJpbmFyeSBkYXRhIGFyZSByZWNlaXZlZDsgaXQgZGVmYXVsdHMgdG8gZmFsc2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KIAogCiAuLiBjbGFzczo6IFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyKCkKQEAgLTIzMywxMiArMjQ4LDE3IEBACiA6Y2xhc3M6YERvY0NHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyYC4KIAogCi0uLiBjbGFzczo6IERvY1hNTFJQQ1NlcnZlcihhZGRyLCByZXF1ZXN0SGFuZGxlcj1Eb2NYTUxSUENSZXF1ZXN0SGFuZGxlciwgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSkKKy4uIGNsYXNzOjogRG9jWE1MUlBDU2VydmVyKGFkZHIsIHJlcXVlc3RIYW5kbGVyPURvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyLFwKKyAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsXAorICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKIAogICAgQ3JlYXRlIGEgbmV3IHNlcnZlciBpbnN0YW5jZS4gQWxsIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgogICAgOmNsYXNzOmBTaW1wbGVYTUxSUENTZXJ2ZXJgOyAqcmVxdWVzdEhhbmRsZXIqIGRlZmF1bHRzIHRvCiAgICA6Y2xhc3M6YERvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgorCiAKIC4uIGNsYXNzOjogRG9jQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdCBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CmluZGV4IDQ4ZWRmMWYuLjQ5OGE5Y2QgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CkBAIC04Nyw3ICs4NywzMCBAQAogLi4gZGF0YTo6IFpJUF9ERUZMQVRFRAogCiAgICBUaGUgbnVtZXJpYyBjb25zdGFudCBmb3IgdGhlIHVzdWFsIFpJUCBjb21wcmVzc2lvbiBtZXRob2QuICBUaGlzIHJlcXVpcmVzIHRoZQotICAgemxpYiBtb2R1bGUuICBObyBvdGhlciBjb21wcmVzc2lvbiBtZXRob2RzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLgorICAgemxpYiBtb2R1bGUuCisKKworLi4gZGF0YTo6IFpJUF9CWklQMgorCisgICBUaGUgbnVtZXJpYyBjb25zdGFudCBmb3IgdGhlIEJaSVAyIGNvbXByZXNzaW9uIG1ldGhvZC4gIFRoaXMgcmVxdWlyZXMgdGhlCisgICBiejIgbW9kdWxlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IFpJUF9MWk1BCisKKyAgIFRoZSBudW1lcmljIGNvbnN0YW50IGZvciB0aGUgTFpNQSBjb21wcmVzc2lvbiBtZXRob2QuICBUaGlzIHJlcXVpcmVzIHRoZQorICAgbHptYSBtb2R1bGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBub3RlOjoKKworICAgICAgVGhlIFpJUCBmaWxlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGhhcyBpbmNsdWRlZCBzdXBwb3J0IGZvciBiemlwMiBjb21wcmVzc2lvbgorICAgICAgc2luY2UgMjAwMSwgYW5kIGZvciBMWk1BIGNvbXByZXNzaW9uIHNpbmNlIDIwMDYuIEhvd2V2ZXIsIHNvbWUgdG9vbHMKKyAgICAgIChpbmNsdWRpbmcgb2xkZXIgUHl0aG9uIHJlbGVhc2VzKSBkbyBub3Qgc3VwcG9ydCB0aGVzZSBjb21wcmVzc2lvbgorICAgICAgbWV0aG9kcywgYW5kIG1heSBlaXRoZXIgcmVmdXNlIHRvIHByb2Nlc3MgdGhlIFpJUCBmaWxlIGFsdG9nZXRoZXIsCisgICAgICBvciBmYWlsIHRvIGV4dHJhY3QgaW5kaXZpZHVhbCBmaWxlcy4KIAogCiAuLiBzZWVhbHNvOjoKQEAgLTExOCw5ICsxNDEsMTEgQEAKICAgIGFkZGluZyBhIFpJUCBhcmNoaXZlIHRvIGFub3RoZXIgZmlsZSAoc3VjaCBhcyA6ZmlsZTpgcHl0aG9uLmV4ZWApLiAgSWYKICAgICptb2RlKiBpcyBgYGFgYCBhbmQgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QgYXQgYWxsLCBpdCBpcyBjcmVhdGVkLgogICAgKmNvbXByZXNzaW9uKiBpcyB0aGUgWklQIGNvbXByZXNzaW9uIG1ldGhvZCB0byB1c2Ugd2hlbiB3cml0aW5nIHRoZSBhcmNoaXZlLAotICAgYW5kIHNob3VsZCBiZSA6Y29uc3Q6YFpJUF9TVE9SRURgIG9yIDpjb25zdDpgWklQX0RFRkxBVEVEYDsgdW5yZWNvZ25pemVkCi0gICB2YWx1ZXMgd2lsbCBjYXVzZSA6ZXhjOmBSdW50aW1lRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYAotICAgaXMgc3BlY2lmaWVkIGJ1dCB0aGUgOm1vZDpgemxpYmAgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUsIDpleGM6YFJ1bnRpbWVFcnJvcmAKKyAgIGFuZCBzaG91bGQgYmUgOmNvbnN0OmBaSVBfU1RPUkVEYCwgOmNvbnN0OmBaSVBfREVGTEFURURgLAorICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgOyB1bnJlY29nbml6ZWQKKyAgIHZhbHVlcyB3aWxsIGNhdXNlIDpleGM6YFJ1bnRpbWVFcnJvcmAgdG8gYmUgcmFpc2VkLiAgSWYgOmNvbnN0OmBaSVBfREVGTEFURURgLAorICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgIGlzIHNwZWNpZmllZCBidXQgdGhlIGNvcnJlc3BvbmRlZCBtb2R1bGUKKyAgICg6bW9kOmB6bGliYCwgOm1vZDpgYnoyYCBvciA6bW9kOmBsem1hYCkgaXMgbm90IGF2YWlsYWJsZSwgOmV4YzpgUnVudGltZUVycm9yYAogICAgaXMgYWxzbyByYWlzZWQuIFRoZSBkZWZhdWx0IGlzIDpjb25zdDpgWklQX1NUT1JFRGAuICBJZiAqYWxsb3daaXA2NCogaXMKICAgIGBgVHJ1ZWBgIHppcGZpbGUgd2lsbCBjcmVhdGUgWklQIGZpbGVzIHRoYXQgdXNlIHRoZSBaSVA2NCBleHRlbnNpb25zIHdoZW4KICAgIHRoZSB6aXBmaWxlIGlzIGxhcmdlciB0aGFuIDIgR0IuIElmIGl0IGlzICBmYWxzZSAodGhlIGRlZmF1bHQpIDptb2Q6YHppcGZpbGVgCkBAIC0xNDMsNiArMTY4LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gdXNlIDpjbGFzczpgWmlwRmlsZWAgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciA6bW9kOmBiemlwMmAgYW5kIDptb2Q6YGx6bWFgIGNvbXByZXNzaW9uLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUuY2xvc2UoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0IGIvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdAppbmRleCA0ZjE3MDkyLi5iNDdjMzViIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QKQEAgLTg1LDkgKzg1LDEyIEBACiAKICAgIC4uIG1ldGhvZDo6IGdldF9kYXRhKHBhdGhuYW1lKQogCi0gICAgICBSZXR1cm4gdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoICpwYXRobmFtZSouIFJhaXNlIDpleGM6YElPRXJyb3JgIGlmIHRoZQorICAgICAgUmV0dXJuIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCAqcGF0aG5hbWUqLiBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUKICAgICAgIGZpbGUgd2Fzbid0IGZvdW5kLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAgICAuLiBtZXRob2Q6OiBnZXRfZmlsZW5hbWUoZnVsbG5hbWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3psaWIucnN0IGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKaW5kZXggODk3ZDkxOS4uNDI1MzVhMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKQEAgLTU4LDEyICs1OCwzNyBAQAogICAgZXhjZXB0aW9uIGlmIGFueSBlcnJvciBvY2N1cnMuCiAKIAotLi4gZnVuY3Rpb246OiBjb21wcmVzc29iaihbbGV2ZWxdKQorLi4gZnVuY3Rpb246OiBjb21wcmVzc29iaihsZXZlbD0tMSwgbWV0aG9kPURFRkxBVEVELCB3Yml0cz0xNSwgbWVtbGV2ZWw9OCwgc3RyYXRlZ3k9Wl9ERUZBVUxUX1NUUkFURUdZWywgemRpY3RdKQogCiAgICBSZXR1cm5zIGEgY29tcHJlc3Npb24gb2JqZWN0LCB0byBiZSB1c2VkIGZvciBjb21wcmVzc2luZyBkYXRhIHN0cmVhbXMgdGhhdCB3b24ndAotICAgZml0IGludG8gbWVtb3J5IGF0IG9uY2UuICAqbGV2ZWwqIGlzIGFuIGludGVnZXIgZnJvbSBgYDFgYCB0byBgYDlgYCBjb250cm9sbGluZwotICAgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOyBgYDFgYCBpcyBmYXN0ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbGVhc3QgY29tcHJlc3Npb24sCi0gICBgYDlgYCBpcyBzbG93ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbW9zdC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgNmBgLgorICAgZml0IGludG8gbWVtb3J5IGF0IG9uY2UuCisKKyAgICpsZXZlbCogaXMgdGhlIGNvbXByZXNzaW9uIGxldmVsIC0tIGFuIGludGVnZXIgZnJvbSBgYDFgYCB0byBgYDlgYC4gQSB2YWx1ZQorICAgb2YgYGAxYGAgaXMgZmFzdGVzdCBhbmQgcHJvZHVjZXMgdGhlIGxlYXN0IGNvbXByZXNzaW9uLCB3aGlsZSBhIHZhbHVlIG9mCisgICBgYDlgYCBpcyBzbG93ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbW9zdC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGA2YGAuCisKKyAgICptZXRob2QqIGlzIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIEN1cnJlbnRseSwgdGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlIGlzCisgICBgYERFRkxBVEVEYGAuCisKKyAgICp3Yml0cyogaXMgdGhlIGJhc2UgdHdvIGxvZ2FyaXRobSBvZiB0aGUgc2l6ZSBvZiB0aGUgd2luZG93IGJ1ZmZlci4gVGhpcworICAgc2hvdWxkIGJlIGFuIGludGVnZXIgZnJvbSBgYDhgYCB0byBgYDE1YGAuIEhpZ2hlciB2YWx1ZXMgZ2l2ZSBiZXR0ZXIKKyAgIGNvbXByZXNzaW9uLCBidXQgdXNlIG1vcmUgbWVtb3J5LgorCisgICAqbWVtbGV2ZWwqIGNvbnRyb2xzIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgZm9yIGludGVybmFsIGNvbXByZXNzaW9uIHN0YXRlLgorICAgVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gYGAxYGAgdG8gYGA5YGAuIEhpZ2hlciB2YWx1ZXMgdXNpbmcgbW9yZSBtZW1vcnksCisgICBidXQgYXJlIGZhc3RlciBhbmQgcHJvZHVjZSBzbWFsbGVyIG91dHB1dC4KKworICAgKnN0cmF0ZWd5KiBpcyB1c2VkIHRvIHR1bmUgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gUG9zc2libGUgdmFsdWVzIGFyZQorICAgYGBaX0RFRkFVTFRfU1RSQVRFR1lgYCwgYGBaX0ZJTFRFUkVEYGAsIGFuZCBgYFpfSFVGRk1BTl9PTkxZYGAuCisKKyAgICp6ZGljdCogaXMgYSBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkuIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiBieXRlcworICAgKHN1Y2ggYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpIGNvbnRhaW5pbmcgc3Vic2VxdWVuY2VzIHRoYXQgYXJlIGV4cGVjdGVkCisgICB0byBvY2N1ciBmcmVxdWVudGx5IGluIHRoZSBkYXRhIHRoYXQgaXMgdG8gYmUgY29tcHJlc3NlZC4gVGhvc2Ugc3Vic2VxdWVuY2VzCisgICB0aGF0IGFyZSBleHBlY3RlZCB0byBiZSBtb3N0IGNvbW1vbiBzaG91bGQgY29tZSBhdCB0aGUgZW5kIG9mIHRoZSBkaWN0aW9uYXJ5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICptZXRob2QqLCAqd2JpdHMqLCAqbWVtbGV2ZWwqLCAqc3RyYXRlZ3kqIGFuZCAqemRpY3QqCisgICAgICBwYXJhbWV0ZXJzLgogCiAKIC4uIGZ1bmN0aW9uOjogY3JjMzIoZGF0YVssIHZhbHVlXSkKQEAgLTgyLDEyICsxMDcsMTMgQEAKIAogICAgQWx3YXlzIHJldHVybnMgYW4gdW5zaWduZWQgMzItYml0IGludGVnZXIuCiAKLS4uIG5vdGU6OgotICAgVG8gZ2VuZXJhdGUgdGhlIHNhbWUgbnVtZXJpYyB2YWx1ZSBhY3Jvc3MgYWxsIFB5dGhvbiB2ZXJzaW9ucyBhbmQKLSAgIHBsYXRmb3JtcyB1c2UgY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmLiAgSWYgeW91IGFyZSBvbmx5IHVzaW5nCi0gICB0aGUgY2hlY2tzdW0gaW4gcGFja2VkIGJpbmFyeSBmb3JtYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IGFzIHRoZQotICAgcmV0dXJuIHZhbHVlIGlzIHRoZSBjb3JyZWN0IDMyYml0IGJpbmFyeSByZXByZXNlbnRhdGlvbgotICAgcmVnYXJkbGVzcyBvZiBzaWduLgorICAgLi4gbm90ZTo6CisKKyAgICAgIFRvIGdlbmVyYXRlIHRoZSBzYW1lIG51bWVyaWMgdmFsdWUgYWNyb3NzIGFsbCBQeXRob24gdmVyc2lvbnMgYW5kCisgICAgICBwbGF0Zm9ybXMsIHVzZSBgYGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZmBgLiAgSWYgeW91IGFyZSBvbmx5IHVzaW5nCisgICAgICB0aGUgY2hlY2tzdW0gaW4gcGFja2VkIGJpbmFyeSBmb3JtYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IGFzIHRoZQorICAgICAgcmV0dXJuIHZhbHVlIGlzIHRoZSBjb3JyZWN0IDMyLWJpdCBiaW5hcnkgcmVwcmVzZW50YXRpb24KKyAgICAgIHJlZ2FyZGxlc3Mgb2Ygc2lnbi4KIAogCiAuLiBmdW5jdGlvbjo6IGRlY29tcHJlc3MoZGF0YVssIHdiaXRzWywgYnVmc2l6ZV1dKQpAQCAtMTE0LDExICsxNDAsMjYgQEAKICAgIHRvIDpjOmZ1bmM6YG1hbGxvY2AuICBUaGUgZGVmYXVsdCBzaXplIGlzIDE2Mzg0LgogCiAKLS4uIGZ1bmN0aW9uOjogZGVjb21wcmVzc29iaihbd2JpdHNdKQorLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzb2JqKHdiaXRzPTE1WywgemRpY3RdKQogCiAgICBSZXR1cm5zIGEgZGVjb21wcmVzc2lvbiBvYmplY3QsIHRvIGJlIHVzZWQgZm9yIGRlY29tcHJlc3NpbmcgZGF0YSBzdHJlYW1zIHRoYXQKLSAgIHdvbid0IGZpdCBpbnRvIG1lbW9yeSBhdCBvbmNlLiAgVGhlICp3Yml0cyogcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBzaXplIG9mIHRoZQotICAgd2luZG93IGJ1ZmZlci4KKyAgIHdvbid0IGZpdCBpbnRvIG1lbW9yeSBhdCBvbmNlLgorCisgICBUaGUgKndiaXRzKiBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIHNpemUgb2YgdGhlIHdpbmRvdyBidWZmZXIuCisKKyAgIFRoZSAqemRpY3QqIHBhcmFtZXRlciBzcGVjaWZpZXMgYSBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkuIElmCisgICBwcm92aWRlZCwgdGhpcyBtdXN0IGJlIHRoZSBzYW1lIGRpY3Rpb25hcnkgYXMgd2FzIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IgdGhhdAorICAgcHJvZHVjZWQgdGhlIGRhdGEgdGhhdCBpcyB0byBiZSBkZWNvbXByZXNzZWQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJZiAqemRpY3QqIGlzIGEgbXV0YWJsZSBvYmplY3QgKHN1Y2ggYXMgYSA6Y2xhc3M6YGJ5dGVhcnJheWApLCB5b3UgbXVzdCBub3QKKyAgICAgIG1vZGlmeSBpdHMgY29udGVudHMgYmV0d2VlbiB0aGUgY2FsbCB0byA6ZnVuYzpgZGVjb21wcmVzc29iamAgYW5kIHRoZSBmaXJzdAorICAgICAgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yJ3MgYGBkZWNvbXByZXNzKClgYCBtZXRob2QuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKnpkaWN0KiBwYXJhbWV0ZXIuCisKIAogQ29tcHJlc3Npb24gb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIApAQCAtMTUwLDcgKzE5MSw3IEBACiAgICBjb21wcmVzcyBhIHNldCBvZiBkYXRhIHRoYXQgc2hhcmUgYSBjb21tb24gaW5pdGlhbCBwcmVmaXguCiAKIAotRGVjb21wcmVzc2lvbiBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2RzLCBhbmQgdHdvIGF0dHJpYnV0ZXM6CitEZWNvbXByZXNzaW9uIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKIAogLi4gYXR0cmlidXRlOjogRGVjb21wcmVzcy51bnVzZWRfZGF0YQpAQCAtMTYwLDEzICsyMDEsNiBAQAogICAgYXZhaWxhYmxlLiAgSWYgdGhlIHdob2xlIGJ5dGVzdHJpbmcgdHVybmVkIG91dCB0byBjb250YWluIGNvbXByZXNzZWQgZGF0YSwgdGhpcyBpcwogICAgYGBiIiJgYCwgYW4gZW1wdHkgYnl0ZXMgb2JqZWN0LgogCi0gICBUaGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIHdoZXJlIGEgYnl0ZXN0cmluZyBvZiBjb21wcmVzc2VkIGRhdGEgZW5kcyBpcyBieSBhY3R1YWxseQotICAgZGVjb21wcmVzc2luZyBpdC4gIFRoaXMgbWVhbnMgdGhhdCB3aGVuIGNvbXByZXNzZWQgZGF0YSBpcyBjb250YWluZWQgcGFydCBvZiBhCi0gICBsYXJnZXIgZmlsZSwgeW91IGNhbiBvbmx5IGZpbmQgdGhlIGVuZCBvZiBpdCBieSByZWFkaW5nIGRhdGEgYW5kIGZlZWRpbmcgaXQKLSAgIGZvbGxvd2VkIGJ5IHNvbWUgbm9uLWVtcHR5IGJ5dGVzdHJpbmcgaW50byBhIGRlY29tcHJlc3Npb24gb2JqZWN0J3MKLSAgIDptZXRoOmBkZWNvbXByZXNzYCBtZXRob2QgdW50aWwgdGhlIDphdHRyOmB1bnVzZWRfZGF0YWAgYXR0cmlidXRlIGlzIG5vIGxvbmdlcgotICAgZW1wdHkuCi0KIAogLi4gYXR0cmlidXRlOjogRGVjb21wcmVzcy51bmNvbnN1bWVkX3RhaWwKIApAQCAtMTc3LDYgKzIxMSwxNyBAQAogICAgOm1ldGg6YGRlY29tcHJlc3NgIG1ldGhvZCBjYWxsIGluIG9yZGVyIHRvIGdldCBjb3JyZWN0IG91dHB1dC4KIAogCisuLiBhdHRyaWJ1dGU6OiBEZWNvbXByZXNzLmVvZgorCisgICBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBzdHJlYW0gaGFzIGJlZW4KKyAgIHJlYWNoZWQuCisKKyAgIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIHByb3Blcmx5LWZvcm1lZCBjb21wcmVzc2VkCisgICBzdHJlYW0sIGFuZCBhbiBpbmNvbXBsZXRlIG9yIHRydW5jYXRlZCBvbmUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IERlY29tcHJlc3MuZGVjb21wcmVzcyhkYXRhWywgbWF4X2xlbmd0aF0pCiAKICAgIERlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgdW5jb21wcmVzc2VkIGRhdGEKQEAgLTIxMSw2ICsyNTYsMjQgQEAKICAgIHNlZWtzIGludG8gdGhlIHN0cmVhbSBhdCBhIGZ1dHVyZSBwb2ludC4KIAogCitJbmZvcm1hdGlvbiBhYm91dCB0aGUgdmVyc2lvbiBvZiB0aGUgemxpYiBsaWJyYXJ5IGluIHVzZSBpcyBhdmFpbGFibGUgdGhyb3VnaAordGhlIGZvbGxvd2luZyBjb25zdGFudHM6CisKKworLi4gZGF0YTo6IFpMSUJfVkVSU0lPTgorCisgICBUaGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIHpsaWIgbGlicmFyeSB0aGF0IHdhcyB1c2VkIGZvciBidWlsZGluZyB0aGUgbW9kdWxlLgorICAgVGhpcyBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHpsaWIgbGlicmFyeSBhY3R1YWxseSB1c2VkIGF0IHJ1bnRpbWUsIHdoaWNoCisgICBpcyBhdmFpbGFibGUgYXMgOmNvbnN0OmBaTElCX1JVTlRJTUVfVkVSU0lPTmAuCisKKworLi4gZGF0YTo6IFpMSUJfUlVOVElNRV9WRVJTSU9OCisKKyAgIFRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgemxpYiBsaWJyYXJ5IGFjdHVhbGx5IGxvYWRlZCBieSB0aGUgaW50ZXJwcmV0ZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIHNlZWFsc286OgogCiAgICBNb2R1bGUgOm1vZDpgZ3ppcGAKZGlmZiAtLWdpdCBhL0RvYy9saWNlbnNlLnJzdCBiL0RvYy9saWNlbnNlLnJzdAppbmRleCBjYjIwYzgzLi5iNDdiN2NjIDEwMDY0NAotLS0gYS9Eb2MvbGljZW5zZS5yc3QKKysrIGIvRG9jL2xpY2Vuc2UucnN0CkBAIC0xMjAsNiArMTIwLDggQEAKICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCiB8IDMuMi4zICAgICAgICAgIHwgMy4yLjIgICAgICAgIHwgMjAxMiAgICAgICB8IFBTRiAgICAgICAgfCB5ZXMgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKK3wgMy4zLjAgICAgICAgICAgfCAzLjIgICAgICAgICAgfCAyMDEyICAgICAgIHwgUFNGICAgICAgICB8IHllcyAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0IGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CmluZGV4IDdkY2Q0NTkuLmIyY2U0ZmYgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKQEAgLTM1LDEyICszNSwxOSBAQAogRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0J3MgKmlkZW50aXR5KiBuZXZlcgogY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgb2YgaXQgYXMgdGhlIG9iamVjdCdzIGFkZHJlc3MgaW4KIG1lbW9yeS4gIFRoZSAnOmtleXdvcmQ6YGlzYCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlIGlkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUKLTpmdW5jOmBpZGAgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkgKGN1cnJlbnRseQotaW1wbGVtZW50ZWQgYXMgaXRzIGFkZHJlc3MpLiBBbiBvYmplY3QncyA6ZGZuOmB0eXBlYCBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWyNdXworOmZ1bmM6YGlkYCBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS4KKworLi4gaW1wbC1kZXRhaWw6OgorCisgICBGb3IgQ1B5dGhvbiwgYGBpZCh4KWBgIGlzIHRoZSBtZW1vcnkgYWRkcmVzcyB3aGVyZSBgYHhgYCBpcyBzdG9yZWQuCisKIEFuIG9iamVjdCdzIHR5cGUgZGV0ZXJtaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3Qgc3VwcG9ydHMgKGUuZy4sICJkb2VzCiBpdCBoYXZlIGEgbGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3Igb2JqZWN0cyBvZiB0aGF0CiB0eXBlLiAgVGhlIDpmdW5jOmB0eXBlYCBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdCdzIHR5cGUgKHdoaWNoIGlzIGFuIG9iamVjdAotaXRzZWxmKS4gIFRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW4KK2l0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0J3MgOmRmbjpgdHlwZWAgaXMgYWxzbyB1bmNoYW5nZWFibGUuCitbI11fCisKK1RoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW4KIGNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgdW5jaGFuZ2VhYmxlIG9uY2UgdGhleQogYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZSB2YWx1ZSBvZiBhbiBpbW11dGFibGUgY29udGFpbmVyIG9iamVjdAogdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgb2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyJ3MgdmFsdWUKQEAgLTI3NiwxNiArMjgzLDE2IEBACiAgICAgICAgICAgICBzaW5nbGU6IGludGVnZXIKICAgICAgICAgICAgIHNpbmdsZTogVW5pY29kZQogCi0gICAgICAgICBUaGUgaXRlbXMgb2YgYSBzdHJpbmcgb2JqZWN0IGFyZSBVbmljb2RlIGNvZGUgdW5pdHMuICBBIFVuaWNvZGUgY29kZQotICAgICAgICAgdW5pdCBpcyByZXByZXNlbnRlZCBieSBhIHN0cmluZyBvYmplY3Qgb2Ygb25lIGl0ZW0gYW5kIGNhbiBob2xkIGVpdGhlcgotICAgICAgICAgYSAxNi1iaXQgb3IgMzItYml0IHZhbHVlIHJlcHJlc2VudGluZyBhIFVuaWNvZGUgb3JkaW5hbCAodGhlIG1heGltdW0KLSAgICAgICAgIHZhbHVlIGZvciB0aGUgb3JkaW5hbCBpcyBnaXZlbiBpbiBgYHN5cy5tYXh1bmljb2RlYGAsIGFuZCBkZXBlbmRzIG9uCi0gICAgICAgICBob3cgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lKS4gIFN1cnJvZ2F0ZSBwYWlycyBtYXkgYmUKLSAgICAgICAgIHByZXNlbnQgaW4gdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQgd2lsbCBiZSByZXBvcnRlZCBhcyB0d28gc2VwYXJhdGUKLSAgICAgICAgIGl0ZW1zLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyA6ZnVuYzpgY2hyYCBhbmQgOmZ1bmM6YG9yZGAgY29udmVydAotICAgICAgICAgYmV0d2VlbiBjb2RlIHVuaXRzIGFuZCBub25uZWdhdGl2ZSBpbnRlZ2VycyByZXByZXNlbnRpbmcgdGhlIFVuaWNvZGUKLSAgICAgICAgIG9yZGluYWxzIGFzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgU3RhbmRhcmQgMy4wLiBDb252ZXJzaW9uIGZyb20gYW5kIHRvCi0gICAgICAgICBvdGhlciBlbmNvZGluZ3MgYXJlIHBvc3NpYmxlIHRocm91Z2ggdGhlIHN0cmluZyBtZXRob2QgOm1ldGg6YGVuY29kZWAuCisgICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlIGNvZGVwb2ludHMuCisgICAgICAgICBBbGwgdGhlIGNvZGVwb2ludHMgaW4gcmFuZ2UgYGBVKzAwMDAgLSBVKzEwRkZGRmBgIGNhbiBiZSByZXByZXNlbnRlZAorICAgICAgICAgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc24ndCBoYXZlIGEgOmM6dHlwZTpgY2hyYCB0eXBlLCBhbmQKKyAgICAgICAgIGV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nIGlzIHJlcHJlc2VudGVkIGFzIGEgc3RyaW5nIG9iamVjdAorICAgICAgICAgd2l0aCBsZW5ndGggYGAxYGAuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gOmZ1bmM6YG9yZGAgY29udmVydHMgYQorICAgICAgICAgY2hhcmFjdGVyIHRvIGl0cyBjb2RlcG9pbnQgKGFzIGFuIGludGVnZXIpOyA6ZnVuYzpgY2hyYCBjb252ZXJ0cworICAgICAgICAgYW4gaW50ZWdlciBpbiByYW5nZSBgYDAgLSAxMEZGRkZgYCB0byB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuCisgICAgICAgICA6bWV0aDpgc3RyLmVuY29kZWAgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhIDpjbGFzczpgc3RyYCB0bworICAgICAgICAgOmNsYXNzOmBieXRlc2AgdXNpbmcgdGhlIGdpdmVuIGVuY29kaW5nLCBhbmQgOm1ldGg6YGJ5dGVzLmRlY29kZWAgY2FuCisgICAgICAgICBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIG9wcG9zaXRlLgogCiAgICAgICBUdXBsZXMKICAgICAgICAgIC4uIGluZGV4OjoKQEAgLTQ0OCw2ICs0NTUsMTEgQEAKICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rCiAgICAgICB8IDphdHRyOmBfX25hbWVfX2AgICAgICAgIHwgVGhlIGZ1bmN0aW9uJ3MgbmFtZSAgICAgICAgICAgfCBXcml0YWJsZSAgfAogICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSsKKyAgICAgIHwgOmF0dHI6YF9fcXVhbG5hbWVfX2AgICAgfCBUaGUgZnVuY3Rpb24ncyAgICAgICAgICAgICAgICB8IFdyaXRhYmxlICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgOnRlcm06YHF1YWxpZmllZCBuYW1lYCAgICAgICAgfCAgICAgICAgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMgICAgICAgICB8ICAgICAgICAgICB8CisgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKwogICAgICAgfCA6YXR0cjpgX19tb2R1bGVfX2AgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlICAgIHwgV3JpdGFibGUgIHwKICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiwgb3IgICB8ICAgICAgICAgICB8CiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBOb25lYGAgaWYgdW5hdmFpbGFibGUuICAgICAgfCAgICAgICAgICAgfApAQCAtNjM5LDE3ICs2NTEsMjAgQEAKICAgICAgIHN0YXRlbWVudDogaW1wb3J0CiAgICAgICBvYmplY3Q6IG1vZHVsZQogCi0gICBNb2R1bGVzIGFyZSBpbXBvcnRlZCBieSB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IChzZWUgc2VjdGlvbgotICAgOnJlZjpgaW1wb3J0YCkuIEEgbW9kdWxlIG9iamVjdCBoYXMgYQotICAgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZAotICAgYnkgdGhlIF9fZ2xvYmFsc19fIGF0dHJpYnV0ZSBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZQotICAgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgYGBtLnhgYCBpcwotICAgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXWBgLiBBIG1vZHVsZSBvYmplY3QgZG9lcyBub3QgY29udGFpbiB0aGUgY29kZQotICAgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc24ndCBuZWVkZWQgb25jZSB0aGUKLSAgIGluaXRpYWxpemF0aW9uIGlzIGRvbmUpLgorICAgTW9kdWxlcyBhcmUgYSBiYXNpYyBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLCBhbmQgYXJlIGNyZWF0ZWQgYnkKKyAgIHRoZSA6cmVmOmBpbXBvcnQgc3lzdGVtIDxpbXBvcnRzeXN0ZW0+YCBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUKKyAgIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCAoc2VlIDprZXl3b3JkOmBpbXBvcnRgKSwgb3IgYnkgY2FsbGluZworICAgZnVuY3Rpb25zIHN1Y2ggYXMgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCBhbmQgYnVpbHQtaW4KKyAgIDpmdW5jOmBfX2ltcG9ydF9fYC4gIEEgbW9kdWxlIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYQorICAgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgYGBfX2dsb2JhbHNfX2BgCisgICBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUKKyAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sIGBgbS54YGAgaXMgZXF1aXZhbGVudCB0bworICAgYGBtLl9fZGljdF9fWyJ4Il1gYC4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGUgb2JqZWN0IHVzZWQKKyAgIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuJ3QgbmVlZGVkIG9uY2UgdGhlIGluaXRpYWxpemF0aW9uIGlzCisgICBkb25lKS4KIAotICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksIGUuZy4sIGBgbS54ID0KLSAgIDFgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdID0gMWBgLgorICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksIGUuZy4sCisgICBgYG0ueCA9IDFgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdID0gMWBgLgogCiAgICAuLiBpbmRleDo6IHNpbmdsZTogX19kaWN0X18gKG1vZHVsZSBhdHRyaWJ1dGUpCiAKQEAgLTY3MSwxMSArNjg2LDEyIEBACiAKICAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiA6YXR0cjpgX19uYW1lX19gIGlzIHRoZSBtb2R1bGUncyBuYW1lOwogICAgOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYKLSAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19maWxlX19gIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZSBtb2R1bGUKLSAgIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSA6YXR0cjpgX19maWxlX19gIGF0dHJpYnV0ZSBpcyBub3QKLSAgIHByZXNlbnQgZm9yIEMgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yCi0gICBleHRlbnNpb24gbW9kdWxlcyBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUKLSAgIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlLgorICAgdW5hdmFpbGFibGU7IDphdHRyOmBfX2ZpbGVfX2AgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlCisgICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlIDphdHRyOmBfX2ZpbGVfX2AKKyAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIEMgbW9kdWxlcworICAgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvciBleHRlbnNpb24gbW9kdWxlcworICAgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQKKyAgIGxpYnJhcnkgZmlsZS4KIAogQ3VzdG9tIGNsYXNzZXMKICAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZSBzZWN0aW9uCkBAIC0xMjUwLDEwICsxMjY2LDEwIEBACiAgICBpbW11dGFibGUgKGlmIHRoZSBvYmplY3QncyBoYXNoIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2gKICAgIGJ1Y2tldCkuCiAKLQogICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSA6bWV0aDpgX19lcV9fYCBhbmQgOm1ldGg6YF9faGFzaF9fYCBtZXRob2RzCiAgICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGggdGhlbXNlbHZlcykKLSAgIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYGBpZCh4KWBgLgorICAgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoIHRoYXQgYGB4ID09IHlgYAorICAgaW1wbGllcyBib3RoIHRoYXQgYGB4IGlzIHlgYCBhbmQgYGBoYXNoKHgpID09IGhhc2goeSlgYC4KIAogICAgQ2xhc3NlcyB3aGljaCBpbmhlcml0IGEgOm1ldGg6YF9faGFzaF9fYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzcyBidXQKICAgIGNoYW5nZSB0aGUgbWVhbmluZyBvZiA6bWV0aDpgX19lcV9fYCBzdWNoIHRoYXQgdGhlIGhhc2ggdmFsdWUgcmV0dXJuZWQgaXMgbm8KQEAgLTEyNzIsNyArMTI4OCwyNyBAQAogICAgaW5oZXJpdGFuY2Ugb2YgOm1ldGg6YF9faGFzaF9fYCB3aWxsIGJlIGJsb2NrZWQsIGp1c3QgYXMgaWYgOmF0dHI6YF9faGFzaF9fYAogICAgaGFkIGJlZW4gZXhwbGljaXRseSBzZXQgdG8gOmNvbnN0OmBOb25lYC4KIAotICAgU2VlIGFsc28gdGhlIDpvcHRpb246YC1SYCBjb21tYW5kLWxpbmUgb3B0aW9uLgorCisgICAuLiBub3RlOjoKKworICAgICAgQnkgZGVmYXVsdCwgdGhlIDptZXRoOmBfX2hhc2hfX2AgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lCisgICAgICBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLiAgQWx0aG91Z2ggdGhleQorICAgICAgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvbiBwcm9jZXNzLCB0aGV5IGFyZSBub3QKKyAgICAgIHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2YgUHl0aG9uLgorCisgICAgICBUaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLW9mLXNlcnZpY2UgY2F1c2VkCisgICAgICBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYQorICAgICAgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LiAgU2VlCisgICAgICBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yIGRldGFpbHMuCisKKyAgICAgIENoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZiBkaWN0cywgc2V0cyBhbmQKKyAgICAgIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXMgYWJvdXQgdGhpcyBvcmRlcmluZworICAgICAgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZCA2NC1iaXQgYnVpbGRzKS4KKworICAgICAgU2VlIGFsc28gOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KIAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19ib29sX18oc2VsZikKQEAgLTEzNTMsNyArMTM4OSw4IEBACiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2Rpcl9fKHNlbGYpCiAKLSAgIENhbGxlZCB3aGVuIDpmdW5jOmBkaXJgIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiAgQSBsaXN0IG11c3QgYmUgcmV0dXJuZWQuCisgICBDYWxsZWQgd2hlbiA6ZnVuYzpgZGlyYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlCisgICByZXR1cm5lZC4gOmZ1bmM6YGRpcmAgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmQgc29ydHMgaXQuCiAKIAogLi4gX2Rlc2NyaXB0b3JzOgpAQCAtMTUyNCw1MyArMTU2MSwxMTUgQEAKIEN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1CeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyA6ZnVuYzpgdHlwZWAuIEEgY2xhc3MgZGVmaW5pdGlvbiBpcwotcmVhZCBpbnRvIGEgc2VwYXJhdGUgbmFtZXNwYWNlIGFuZCB0aGUgdmFsdWUgb2YgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGUKLXJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIGRpY3QpYGAuCitCeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyA6ZnVuYzpgdHlwZWAuIFRoZSBjbGFzcyBib2R5IGlzCitleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG8gdGhlCityZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpYGAuCiAKLVdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgcmVhZCwgaWYgYSBjYWxsYWJsZSBgYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQKLWlzIHBhc3NlZCBhZnRlciB0aGUgYmFzZXMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIHRoZSBjYWxsYWJsZSBnaXZlbiB3aWxsIGJlCi1jYWxsZWQgaW5zdGVhZCBvZiA6ZnVuYzpgdHlwZWAuICBJZiBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkLCB0aGV5Ci13aWxsIGFsc28gYmUgcGFzc2VkIHRvIHRoZSBtZXRhY2xhc3MuICBUaGlzIGFsbG93cyBjbGFzc2VzIG9yIGZ1bmN0aW9ucyB0byBiZQotd3JpdHRlbiB3aGljaCBtb25pdG9yIG9yIGFsdGVyIHRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzOgorVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyB0aGUgYGBtZXRhY2xhc3NgYAora2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCBvciBieSBpbmhlcml0aW5nIGZyb20gYW4KK2V4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiBhcmd1bWVudC4gSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLAorYm90aCBgYE15Q2xhc3NgYCBhbmQgYGBNeVN1YmNsYXNzYGAgYXJlIGluc3RhbmNlcyBvZiBgYE1ldGFgYDo6CiAKLSogTW9kaWZ5aW5nIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IHByaW9yIHRvIHRoZSBjbGFzcyBiZWluZyBjcmVhdGVkLgorICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICBwYXNzCiAKLSogUmV0dXJuaW5nIGFuIGluc3RhbmNlIG9mIGFub3RoZXIgY2xhc3MgLS0gZXNzZW50aWFsbHkgcGVyZm9ybWluZyB0aGUgcm9sZSBvZiBhCi0gIGZhY3RvcnkgZnVuY3Rpb24uCisgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICBwYXNzCiAKLVRoZXNlIHN0ZXBzIHdpbGwgaGF2ZSB0byBiZSBwZXJmb3JtZWQgaW4gdGhlIG1ldGFjbGFzcydzIDptZXRoOmBfX25ld19fYCBtZXRob2QKLS0tIDptZXRoOmB0eXBlLl9fbmV3X19gIGNhbiB0aGVuIGJlIGNhbGxlZCBmcm9tIHRoaXMgbWV0aG9kIHRvIGNyZWF0ZSBhIGNsYXNzCi13aXRoIGRpZmZlcmVudCBwcm9wZXJ0aWVzLiAgVGhpcyBleGFtcGxlIGFkZHMgYSBuZXcgZWxlbWVudCB0byB0aGUgY2xhc3MKLWRpY3Rpb25hcnkgYmVmb3JlIGNyZWF0aW5nIHRoZSBjbGFzczo6CisgICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOgorICAgICAgIHBhc3MKIAotICBjbGFzcyBtZXRhY2xzKHR5cGUpOgotICAgICAgZGVmIF9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGljdCk6Ci0gICAgICAgICAgZGljdFsnZm9vJ10gPSAnbWV0YWNscyB3YXMgaGVyZScKLSAgICAgICAgICByZXR1cm4gdHlwZS5fX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRpY3QpCitBbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZQorcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCBiZWxvdy4KIAotWW91IGNhbiBvZiBjb3Vyc2UgYWxzbyBvdmVycmlkZSBvdGhlciBjbGFzcyBtZXRob2RzIChvciBhZGQgbmV3IG1ldGhvZHMpOyBmb3IKLWV4YW1wbGUgZGVmaW5pbmcgYSBjdXN0b20gOm1ldGg6YF9fY2FsbF9fYCBtZXRob2QgaW4gdGhlIG1ldGFjbGFzcyBhbGxvd3MgY3VzdG9tCi1iZWhhdmlvciB3aGVuIHRoZSBjbGFzcyBpcyBjYWxsZWQsIGUuZy4gbm90IGFsd2F5cyBjcmVhdGluZyBhIG5ldyBpbnN0YW5jZS4KK1doZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOgogCi1JZiB0aGUgbWV0YWNsYXNzIGhhcyBhIDptZXRoOmBfX3ByZXBhcmVfX2AgYXR0cmlidXRlICh1c3VhbGx5IGltcGxlbWVudGVkIGFzIGEKLWNsYXNzIG9yIHN0YXRpYyBtZXRob2QpLCBpdCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBjbGFzcyBib2R5IGlzIGV2YWx1YXRlZCB3aXRoCi10aGUgbmFtZSBvZiB0aGUgY2xhc3MgYW5kIGEgdHVwbGUgb2YgaXRzIGJhc2VzIGZvciBhcmd1bWVudHMuICBJdCBzaG91bGQgcmV0dXJuCi1hbiBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUgbWFwcGluZyBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgdGhlCi1uYW1lc3BhY2Ugb2YgdGhlIGNsYXNzLiAgVGhlIGRlZmF1bHQgaXMgYSBwbGFpbiBkaWN0aW9uYXJ5LiAgVGhpcyBjb3VsZCBiZSB1c2VkLAotZm9yIGV4YW1wbGUsIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG9yZGVyIHRoYXQgY2xhc3MgYXR0cmlidXRlcyBhcmUgZGVjbGFyZWQgaW4gYnkKLXJldHVybmluZyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuCisqIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZAorKiB0aGUgY2xhc3MgbmFtZXNwYWNlIGlzIHByZXBhcmVkCisqIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkCisqIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZAogCi1UaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBwcmVjZWRlbmNlIHJ1bGVzOgorRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi0qIElmIHRoZSBgYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQgaXMgcGFzc2VkIHdpdGggdGhlIGJhc2VzLCBpdCBpcyB1c2VkLgorVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXMgZm9sbG93czoKIAotKiBPdGhlcndpc2UsIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBiYXNlIGNsYXNzLCBpdHMgbWV0YWNsYXNzIGlzIHVzZWQuCisqIGlmIG5vIGJhc2VzIGFuZCBubyBleHBsaWNpdCBtZXRhY2xhc3MgYXJlIGdpdmVuLCB0aGVuIDpmdW5jOmB0eXBlYCBpcyB1c2VkCisqIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gaW5zdGFuY2Ugb2YKKyAgOmZ1bmM6YHR5cGVgLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzcworKiBpZiBhbiBpbnN0YW5jZSBvZiA6ZnVuYzpgdHlwZWAgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3IKKyAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZAogCi0qIE90aGVyd2lzZSwgdGhlIGRlZmF1bHQgbWV0YWNsYXNzICg6Y2xhc3M6YHR5cGVgKSBpcyB1c2VkLgorVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWQKK21ldGFjbGFzcyAoaWYgYW55KSBhbmQgdGhlIG1ldGFjbGFzc2VzIChpLmUuIGBgdHlwZShjbHMpYGApIG9mIGFsbCBzcGVjaWZpZWQKK2Jhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lIHdoaWNoIGlzIGEgc3VidHlwZSBvZiAqYWxsKgorb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mIHRoZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMKK3RoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIHdpbGwgZmFpbCB3aXRoIGBgVHlwZUVycm9yYGAuCisKKworUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2UKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK09uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzcyBuYW1lc3BhY2UKK2lzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIGl0IGlzIGNhbGxlZAorYXMgYGBuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSwgYmFzZXMsICoqa3dkcylgYCAod2hlcmUgdGhlCithZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWUgZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbikuCisKK0lmIHRoZSBtZXRhY2xhc3MgaGFzIG5vIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzIG5hbWVzcGFjZQoraXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgOmZ1bmM6YGRpY3RgIGluc3RhbmNlLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzExNWAgLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMAorICAgICAgSW50cm9kdWNlZCB0aGUgYGBfX3ByZXBhcmVfX2BgIG5hbWVzcGFjZSBob29rCisKKworRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzCitgYGV4ZWMoYm9keSwgZ2xvYmFscygpLCBuYW1lc3BhY2UpYGAuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsCitjYWxsIHRvIDpmdW5jOmBleGVjYCBpcyB0aGF0IGxleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZworYW55IG1ldGhvZHMpIHRvIHJlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUKK2NsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLgorCitIb3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgZnVuY3Rpb24sIG1ldGhvZHMKK2RlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzIGRlZmluZWQgYXQgdGhlIGNsYXNzIHNjb3BlLgorQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yCitjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGF0IGFsbCBmcm9tIHN0YXRpYyBtZXRob2RzLgorCisKK0NyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3QKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgdGhlIGNsYXNzIGJvZHksCit0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZworYGBtZXRhY2xhc3MobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKWBgICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcworcGFzc2VkIGhlcmUgYXJlIHRoZSBzYW1lIGFzIHRob3NlIHBhc3NlZCB0byBgYF9fcHJlcGFyZV9fYGApLgorCitUaGlzIGNsYXNzIG9iamVjdCBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSByZWZlcmVuY2VkIGJ5IHRoZSB6ZXJvLWFyZ3VtZW50Citmb3JtIG9mIDpmdW5jOmBzdXBlcmAuIGBgX19jbGFzc19fYGAgaXMgYW4gaW1wbGljaXQgY2xvc3VyZSByZWZlcmVuY2UKK2NyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgYm9keSByZWZlciB0byBlaXRoZXIKK2BgX19jbGFzc19fYGAgb3IgYGBzdXBlcmBgLiBUaGlzIGFsbG93cyB0aGUgemVybyBhcmd1bWVudCBmb3JtIG9mCis6ZnVuYzpgc3VwZXJgIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCBiYXNlZCBvbgorbGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCB0byBtYWtlIHRoZQorY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgbWV0aG9kLgorCitBZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgY2xhc3MgZGVjb3JhdG9ycworaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSByZXN1bHRpbmcgb2JqZWN0IGlzIGJvdW5kCitpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzEzNWAgLSBOZXcgc3VwZXIKKyAgICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgYGBfX2NsYXNzX19gYCBjbG9zdXJlIHJlZmVyZW5jZQorCisKK01ldGFjbGFzcyBleGFtcGxlCiteXl5eXl5eXl5eXl5eXl5eXgogCiBUaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgdGhhdCBoYXZlIGJlZW4KLWV4cGxvcmVkIGluY2x1ZGluZyBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpYyBkZWxlZ2F0aW9uLCBhdXRvbWF0aWMKK2V4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCBhdXRvbWF0aWMgZGVsZWdhdGlvbiwgYXV0b21hdGljCiBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgZnJhbWV3b3JrcywgYW5kIGF1dG9tYXRpYyByZXNvdXJjZQogbG9ja2luZy9zeW5jaHJvbml6YXRpb24uCiAKQEAgLTE1ODMsOSArMTY4Miw5IEBACiAgICAgICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgbmFtZSwgYmFzZXMsICoqa3dkcyk6CiAgICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQogCi0gICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBjbGFzc2RpY3QpOgotICAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QoY2xhc3NkaWN0KSkKLSAgICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUoY2xhc3NkaWN0KQorICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpOgorICAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSkKKyAgICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKToKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0IGIvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKaW5kZXggNzJhZDk1ZS4uYTVmMzc2NiAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKQEAgLTMxOCw3ICszMTgsNyBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICB5aWVsZF9hdG9tOiAiKCIgYHlpZWxkX2V4cHJlc3Npb25gICIpIgotICAgeWllbGRfZXhwcmVzc2lvbjogInlpZWxkIiBbYGV4cHJlc3Npb25fbGlzdGBdCisgICB5aWVsZF9leHByZXNzaW9uOiAieWllbGQiIFtgZXhwcmVzc2lvbl9saXN0YCB8ICJmcm9tIiBgZXhwcmVzc2lvbmBdCiAKIFRoZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gaXMgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24sCiBhbmQgY2FuIG9ubHkgYmUgdXNlZCBpbiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGRlZmluaXRpb24uICBVc2luZyBhCkBAIC0zMzYsNyArMzM2LDEwIEBACiB0aGUgZ2VuZXJhdG9yJ3MgbWV0aG9kcywgdGhlIGZ1bmN0aW9uIGNhbiBwcm9jZWVkIGV4YWN0bHkgYXMgaWYgdGhlCiA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gd2FzIGp1c3QgYW5vdGhlciBleHRlcm5hbCBjYWxsLiAgVGhlIHZhbHVlIG9mIHRoZQogOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uIGFmdGVyIHJlc3VtaW5nIGRlcGVuZHMgb24gdGhlIG1ldGhvZCB3aGljaCByZXN1bWVkCi10aGUgZXhlY3V0aW9uLgordGhlIGV4ZWN1dGlvbi4gSWYgOm1ldGg6YF9fbmV4dF9fYCBpcyB1c2VkICh0eXBpY2FsbHkgdmlhIGVpdGhlciBhCis6a2V5d29yZDpgZm9yYCBvciB0aGUgOmZ1bmM6YG5leHRgIGJ1aWx0aW4pIHRoZW4gdGhlIHJlc3VsdCBpcyA6Y29uc3Q6YE5vbmVgLAorb3RoZXJ3aXNlLCBpZiA6bWV0aDpgc2VuZGAgaXMgdXNlZCwgdGhlbiB0aGUgcmVzdWx0IHdpbGwgYmUgdGhlIHZhbHVlIHBhc3NlZAoraW4gdG8gdGhhdCBtZXRob2QuCiAKIC4uIGluZGV4Ojogc2luZ2xlOiBjb3JvdXRpbmUKIApAQCAtMzQ2LDEyICszNDksMzIgQEAKIHdoZXJlIHNob3VsZCB0aGUgZXhlY3V0aW9uIGNvbnRpbnVlIGFmdGVyIGl0IHlpZWxkczsgdGhlIGNvbnRyb2wgaXMgYWx3YXlzCiB0cmFuc2ZlcnJlZCB0byB0aGUgZ2VuZXJhdG9yJ3MgY2FsbGVyLgogCi1UaGUgOmtleXdvcmQ6YHlpZWxkYCBzdGF0ZW1lbnQgaXMgYWxsb3dlZCBpbiB0aGUgOmtleXdvcmQ6YHRyeWAgY2xhdXNlIG9mIGEKKzprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbnMgYXJlIGFsbG93ZWQgaW4gdGhlIDprZXl3b3JkOmB0cnlgIGNsYXVzZSBvZiBhCiA6a2V5d29yZDpgdHJ5YCAuLi4gIDprZXl3b3JkOmBmaW5hbGx5YCBjb25zdHJ1Y3QuICBJZiB0aGUgZ2VuZXJhdG9yIGlzIG5vdAogcmVzdW1lZCBiZWZvcmUgaXQgaXMgZmluYWxpemVkIChieSByZWFjaGluZyBhIHplcm8gcmVmZXJlbmNlIGNvdW50IG9yIGJ5IGJlaW5nCiBnYXJiYWdlIGNvbGxlY3RlZCksIHRoZSBnZW5lcmF0b3ItaXRlcmF0b3IncyA6bWV0aDpgY2xvc2VgIG1ldGhvZCB3aWxsIGJlCiBjYWxsZWQsIGFsbG93aW5nIGFueSBwZW5kaW5nIDprZXl3b3JkOmBmaW5hbGx5YCBjbGF1c2VzIHRvIGV4ZWN1dGUuCiAKK1doZW4gYGB5aWVsZCBmcm9tIDxleHByPmBgIGlzIHVzZWQsIGl0IHRyZWF0cyB0aGUgc3VwcGxpZWQgZXhwcmVzc2lvbiBhcworYSBzdWJpdGVyYXRvci4gQWxsIHZhbHVlcyBwcm9kdWNlZCBieSB0aGF0IHN1Yml0ZXJhdG9yIGFyZSBwYXNzZWQgZGlyZWN0bHkKK3RvIHRoZSBjYWxsZXIgb2YgdGhlIGN1cnJlbnQgZ2VuZXJhdG9yJ3MgbWV0aG9kcy4gQW55IHZhbHVlcyBwYXNzZWQgaW4gd2l0aAorOm1ldGg6YHNlbmRgIGFuZCBhbnkgZXhjZXB0aW9ucyBwYXNzZWQgaW4gd2l0aCA6bWV0aDpgdGhyb3dgIGFyZSBwYXNzZWQgdG8KK3RoZSB1bmRlcmx5aW5nIGl0ZXJhdG9yIGlmIGl0IGhhcyB0aGUgYXBwcm9wcmlhdGUgbWV0aG9kcy4gSWYgdGhpcyBpcyBub3QgdGhlCitjYXNlLCB0aGVuIDptZXRoOmBzZW5kYCB3aWxsIHJhaXNlIDpleGM6YEF0dHJpYnV0ZUVycm9yYCBvciA6ZXhjOmBUeXBlRXJyb3JgLAord2hpbGUgOm1ldGg6YHRocm93YCB3aWxsIGp1c3QgcmFpc2UgdGhlIHBhc3NlZCBpbiBleGNlcHRpb24gaW1tZWRpYXRlbHkuCisKK1doZW4gdGhlIHVuZGVybHlpbmcgaXRlcmF0b3IgaXMgY29tcGxldGUsIHRoZSA6YXR0cjpgflN0b3BJdGVyYXRpb24udmFsdWVgCithdHRyaWJ1dGUgb2YgdGhlIHJhaXNlZCA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBpbnN0YW5jZSBiZWNvbWVzIHRoZSB2YWx1ZSBvZgordGhlIHlpZWxkIGV4cHJlc3Npb24uIEl0IGNhbiBiZSBlaXRoZXIgc2V0IGV4cGxpY2l0bHkgd2hlbiByYWlzaW5nCis6ZXhjOmBTdG9wSXRlcmF0aW9uYCwgb3IgYXV0b21hdGljYWxseSB3aGVuIHRoZSBzdWItaXRlcmF0b3IgaXMgYSBnZW5lcmF0b3IKKyhieSByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSBzdWItZ2VuZXJhdG9yKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCB0byBkZWxlZ2F0ZSBjb250cm9sIGZsb3cgdG8gYSBzdWJpdGVyYXRvcgorCitUaGUgcGFyZW50aGVzZXMgY2FuIGJlIG9taXR0ZWQgd2hlbiB0aGUgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uIGlzIHRoZQorc29sZSBleHByZXNzaW9uIG9uIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQuCisKIC4uIGluZGV4Ojogb2JqZWN0OiBnZW5lcmF0b3IKIAogCkBAIC00NTEsNiArNDc0LDEwIEBACiAgICAgICBUaGUgcHJvcG9zYWwgdG8gZW5oYW5jZSB0aGUgQVBJIGFuZCBzeW50YXggb2YgZ2VuZXJhdG9ycywgbWFraW5nIHRoZW0KICAgICAgIHVzYWJsZSBhcyBzaW1wbGUgY29yb3V0aW5lcy4KIAorICAgOnBlcDpgMDM4MGAgLSBTeW50YXggZm9yIERlbGVnYXRpbmcgdG8gYSBTdWJnZW5lcmF0b3IKKyAgICAgIFRoZSBwcm9wb3NhbCB0byBpbnRyb2R1Y2UgdGhlIDp0b2tlbjpgeWllbGRfZnJvbWAgc3ludGF4LCBtYWtpbmcgZGVsZWdhdGlvbgorICAgICAgdG8gc3ViLWdlbmVyYXRvcnMgZWFzeS4KKwogCiAuLiBfcHJpbWFyaWVzOgogCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY4OGU3OAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdApAQCAtMCwwICsxLDY5NyBAQAorCisuLiBfaW1wb3J0c3lzdGVtOgorCisqKioqKioqKioqKioqKioqKgorVGhlIGltcG9ydCBzeXN0ZW0KKyoqKioqKioqKioqKioqKioqCisKKy4uIGluZGV4Ojogc2luZ2xlOiBpbXBvcnQgbWFjaGluZXJ5CisKK1B5dGhvbiBjb2RlIGluIG9uZSA6dGVybTpgbW9kdWxlYCBnYWlucyBhY2Nlc3MgdG8gdGhlIGNvZGUgaW4gYW5vdGhlciBtb2R1bGUKK2J5IHRoZSBwcm9jZXNzIG9mIDp0ZXJtOmBpbXBvcnRpbmdgIGl0LiAgVGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBpcwordGhlIG1vc3QgY29tbW9uIHdheSBvZiBpbnZva2luZyB0aGUgaW1wb3J0IG1hY2hpbmVyeSwgYnV0IGl0IGlzIG5vdCB0aGUgb25seQord2F5LiAgRnVuY3Rpb25zIHN1Y2ggYXMgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCBhbmQgYnVpbHQtaW4KKzpmdW5jOmBfX2ltcG9ydF9fYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGludm9rZSB0aGUgaW1wb3J0IG1hY2hpbmVyeS4KKworVGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBjb21iaW5lcyB0d28gb3BlcmF0aW9uczsgaXQgc2VhcmNoZXMgZm9yIHRoZQorbmFtZWQgbW9kdWxlLCB0aGVuIGl0IGJpbmRzIHRoZSByZXN1bHRzIG9mIHRoYXQgc2VhcmNoIHRvIGEgbmFtZSBpbiB0aGUgbG9jYWwKK3Njb3BlLiAgVGhlIHNlYXJjaCBvcGVyYXRpb24gb2YgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBpcyBkZWZpbmVkIGFzCithIGNhbGwgdG8gdGhlIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbiwgd2l0aCB0aGUgYXBwcm9wcmlhdGUgYXJndW1lbnRzLgorVGhlIHJldHVybiB2YWx1ZSBvZiA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgdXNlZCB0byBwZXJmb3JtIHRoZSBuYW1lCitiaW5kaW5nIG9wZXJhdGlvbiBvZiB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LiAgU2VlIHRoZQorOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZvciB0aGUgZXhhY3QgZGV0YWlscyBvZiB0aGF0IG5hbWUgYmluZGluZworb3BlcmF0aW9uLgorCitBIGRpcmVjdCBjYWxsIHRvIDpmdW5jOmBfX2ltcG9ydF9fYCBwZXJmb3JtcyBvbmx5IHRoZSBtb2R1bGUgc2VhcmNoIGFuZCwgaWYKK2ZvdW5kLCB0aGUgbW9kdWxlIGNyZWF0aW9uIG9wZXJhdGlvbi4gIFdoaWxlIGNlcnRhaW4gc2lkZS1lZmZlY3RzIG1heSBvY2N1ciwKK3N1Y2ggYXMgdGhlIGltcG9ydGluZyBvZiBwYXJlbnQgcGFja2FnZXMsIGFuZCB0aGUgdXBkYXRpbmcgb2YgdmFyaW91cyBjYWNoZXMKKyhpbmNsdWRpbmcgOmRhdGE6YHN5cy5tb2R1bGVzYCksIG9ubHkgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBwZXJmb3JtcworYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uLgorCitXaGVuIGNhbGxpbmcgOmZ1bmM6YF9faW1wb3J0X19gIGFzIHBhcnQgb2YgYW4gaW1wb3J0IHN0YXRlbWVudCwgdGhlCitpbXBvcnQgc3lzdGVtIGZpcnN0IGNoZWNrcyB0aGUgbW9kdWxlIGdsb2JhbCBuYW1lc3BhY2UgZm9yIGEgZnVuY3Rpb24gYnkKK3RoYXQgbmFtZS4gSWYgaXQgaXMgbm90IGZvdW5kLCB0aGVuIHRoZSBzdGFuZGFyZCBidWlsdGluIDpmdW5jOmBfX2ltcG9ydF9fYAoraXMgY2FsbGVkLiBPdGhlciBtZWNoYW5pc21zIGZvciBpbnZva2luZyB0aGUgaW1wb3J0IHN5c3RlbSAoc3VjaCBhcworOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCkgZG8gbm90IHBlcmZvcm0gdGhpcyBjaGVjayBhbmQgd2lsbCBhbHdheXMKK3VzZSB0aGUgc3RhbmRhcmQgaW1wb3J0IHN5c3RlbS4KKworV2hlbiBhIG1vZHVsZSBpcyBmaXJzdCBpbXBvcnRlZCwgUHl0aG9uIHNlYXJjaGVzIGZvciB0aGUgbW9kdWxlIGFuZCBpZiBmb3VuZCwKK2l0IGNyZWF0ZXMgYSBtb2R1bGUgb2JqZWN0IFsjZm5tb11fLCBpbml0aWFsaXppbmcgaXQuICBJZiB0aGUgbmFtZWQgbW9kdWxlCitjYW5ub3QgYmUgZm91bmQsIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBQeXRob24gaW1wbGVtZW50cyB2YXJpb3VzCitzdHJhdGVnaWVzIHRvIHNlYXJjaCBmb3IgdGhlIG5hbWVkIG1vZHVsZSB3aGVuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGlzCitpbnZva2VkLiAgVGhlc2Ugc3RyYXRlZ2llcyBjYW4gYmUgbW9kaWZpZWQgYW5kIGV4dGVuZGVkIGJ5IHVzaW5nIHZhcmlvdXMgaG9va3MKK2Rlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbnMgYmVsb3cuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgaW1wb3J0IHN5c3RlbSBoYXMgYmVlbiB1cGRhdGVkIHRvIGZ1bGx5IGltcGxlbWVudCB0aGUgc2Vjb25kIHBoYXNlCisgICBvZiBQRVAgMzAyLiBUaGVyZSBpcyBubyBsb25nZXIgYW55IGltcGxpY2l0IGltcG9ydCBtYWNoaW5lcnkgLSB0aGUgZnVsbAorICAgaW1wb3J0IHN5c3RlbSBpcyBleHBvc2VkIHRocm91Z2ggOmRhdGE6YHN5cy5tZXRhX3BhdGhgLiBJbiBhZGRpdGlvbiwKKyAgIG5hdGl2ZSBuYW1lc3BhY2UgcGFja2FnZSBzdXBwb3J0IGhhcyBiZWVuIGltcGxlbWVudGVkIChzZWUgUEVQIDQyMCkuCisKKworOm1vZDpgaW1wb3J0bGliYAorPT09PT09PT09PT09PT09PQorCitUaGUgOm1vZDpgaW1wb3J0bGliYCBtb2R1bGUgcHJvdmlkZXMgYSByaWNoIEFQSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUKK2ltcG9ydCBzeXN0ZW0uICBGb3IgZXhhbXBsZSA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIHByb3ZpZGVzIGEKK3JlY29tbWVuZGVkLCBzaW1wbGVyIEFQSSB0aGFuIGJ1aWx0LWluIDpmdW5jOmBfX2ltcG9ydF9fYCBmb3IgaW52b2tpbmcgdGhlCitpbXBvcnQgbWFjaGluZXJ5LiAgUmVmZXIgdG8gdGhlIDptb2Q6YGltcG9ydGxpYmAgbGlicmFyeSBkb2N1bWVudGF0aW9uIGZvcgorYWRkaXRpb25hbCBkZXRhaWwuCisKKworCitQYWNrYWdlcworPT09PT09PT0KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogcGFja2FnZQorCitQeXRob24gaGFzIG9ubHkgb25lIHR5cGUgb2YgbW9kdWxlIG9iamVjdCwgYW5kIGFsbCBtb2R1bGVzIGFyZSBvZiB0aGlzIHR5cGUsCityZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIG1vZHVsZSBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIEMsIG9yIHNvbWV0aGluZworZWxzZS4gIFRvIGhlbHAgb3JnYW5pemUgbW9kdWxlcyBhbmQgcHJvdmlkZSBhIG5hbWluZyBoaWVyYXJjaHksIFB5dGhvbiBoYXMgYQorY29uY2VwdCBvZiA6dGVybTpgcGFja2FnZXMgPHBhY2thZ2U+YC4KKworWW91IGNhbiB0aGluayBvZiBwYWNrYWdlcyBhcyB0aGUgZGlyZWN0b3JpZXMgb24gYSBmaWxlIHN5c3RlbSBhbmQgbW9kdWxlcyBhcworZmlsZXMgd2l0aGluIGRpcmVjdG9yaWVzLCBidXQgZG9uJ3QgdGFrZSB0aGlzIGFuYWxvZ3kgdG9vIGxpdGVyYWxseSBzaW5jZQorcGFja2FnZXMgYW5kIG1vZHVsZXMgbmVlZCBub3Qgb3JpZ2luYXRlIGZyb20gdGhlIGZpbGUgc3lzdGVtLiAgRm9yIHRoZQorcHVycG9zZXMgb2YgdGhpcyBkb2N1bWVudGF0aW9uLCB3ZSdsbCB1c2UgdGhpcyBjb252ZW5pZW50IGFuYWxvZ3kgb2YKK2RpcmVjdG9yaWVzIGFuZCBmaWxlcy4gIExpa2UgZmlsZSBzeXN0ZW0gZGlyZWN0b3JpZXMsIHBhY2thZ2VzIGFyZSBvcmdhbml6ZWQKK2hpZXJhcmNoaWNhbGx5LCBhbmQgcGFja2FnZXMgbWF5IHRoZW1zZWx2ZXMgY29udGFpbiBzdWJwYWNrYWdlcywgYXMgd2VsbCBhcworcmVndWxhciBtb2R1bGVzLgorCitJdCdzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQgdGhhdCBhbGwgcGFja2FnZXMgYXJlIG1vZHVsZXMsIGJ1dCBub3QgYWxsCittb2R1bGVzIGFyZSBwYWNrYWdlcy4gIE9yIHB1dCBhbm90aGVyIHdheSwgcGFja2FnZXMgYXJlIGp1c3QgYSBzcGVjaWFsIGtpbmQgb2YKK21vZHVsZS4gIFNwZWNpZmljYWxseSwgYW55IG1vZHVsZSB0aGF0IGNvbnRhaW5zIGEgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSBpcworY29uc2lkZXJlZCBhIHBhY2thZ2UuCisKK0FsbCBtb2R1bGVzIGhhdmUgYSBuYW1lLiAgU3VicGFja2FnZSBuYW1lcyBhcmUgc2VwYXJhdGVkIGZyb20gdGhlaXIgcGFyZW50CitwYWNrYWdlIG5hbWUgYnkgZG90cywgYWtpbiB0byBQeXRob24ncyBzdGFuZGFyZCBhdHRyaWJ1dGUgYWNjZXNzIHN5bnRheC4gIFRodXMKK3lvdSBtaWdodCBoYXZlIGEgbW9kdWxlIGNhbGxlZCA6bW9kOmBzeXNgIGFuZCBhIHBhY2thZ2UgY2FsbGVkIDptb2Q6YGVtYWlsYCwKK3doaWNoIGluIHR1cm4gaGFzIGEgc3VicGFja2FnZSBjYWxsZWQgOm1vZDpgZW1haWwubWltZWAgYW5kIGEgbW9kdWxlIHdpdGhpbgordGhhdCBzdWJwYWNrYWdlIGNhbGxlZCA6bW9kOmBlbWFpbC5taW1lLnRleHRgLgorCisKK1JlZ3VsYXIgcGFja2FnZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgIHBhaXI6IHBhY2thZ2U7IHJlZ3VsYXIKKworUHl0aG9uIGRlZmluZXMgdHdvIHR5cGVzIG9mIHBhY2thZ2VzLCA6dGVybTpgcmVndWxhciBwYWNrYWdlcyA8cmVndWxhcgorcGFja2FnZT5gIGFuZCA6dGVybTpgbmFtZXNwYWNlIHBhY2thZ2VzIDxuYW1lc3BhY2UgcGFja2FnZT5gLiAgUmVndWxhcgorcGFja2FnZXMgYXJlIHRyYWRpdGlvbmFsIHBhY2thZ2VzIGFzIHRoZXkgZXhpc3RlZCBpbiBQeXRob24gMy4yIGFuZCBlYXJsaWVyLgorQSByZWd1bGFyIHBhY2thZ2UgaXMgdHlwaWNhbGx5IGltcGxlbWVudGVkIGFzIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYW4KK2BgX19pbml0X18ucHlgYCBmaWxlLiAgV2hlbiBhIHJlZ3VsYXIgcGFja2FnZSBpcyBpbXBvcnRlZCwgdGhpcworYGBfX2luaXRfXy5weWBgIGZpbGUgaXMgaW1wbGljaXRseSBleGVjdXRlZCwgYW5kIHRoZSBvYmplY3RzIGl0IGRlZmluZXMgYXJlCitib3VuZCB0byBuYW1lcyBpbiB0aGUgcGFja2FnZSdzIG5hbWVzcGFjZS4gIFRoZSBgYF9faW5pdF9fLnB5YGAgZmlsZSBjYW4KK2NvbnRhaW4gdGhlIHNhbWUgUHl0aG9uIGNvZGUgdGhhdCBhbnkgb3RoZXIgbW9kdWxlIGNhbiBjb250YWluLCBhbmQgUHl0aG9uCit3aWxsIGFkZCBzb21lIGFkZGl0aW9uYWwgYXR0cmlidXRlcyB0byB0aGUgbW9kdWxlIHdoZW4gaXQgaXMgaW1wb3J0ZWQuCisKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGZpbGUgc3lzdGVtIGxheW91dCBkZWZpbmVzIGEgdG9wIGxldmVsIGBgcGFyZW50YGAKK3BhY2thZ2Ugd2l0aCB0aHJlZSBzdWJwYWNrYWdlczo6CisKKyAgICBwYXJlbnQvCisgICAgICAgIF9faW5pdF9fLnB5CisgICAgICAgIG9uZS8KKyAgICAgICAgICAgIF9faW5pdF9fLnB5CisgICAgICAgIHR3by8KKyAgICAgICAgICAgIF9faW5pdF9fLnB5CisgICAgICAgIHRocmVlLworICAgICAgICAgICAgX19pbml0X18ucHkKKworSW1wb3J0aW5nIGBgcGFyZW50Lm9uZWBgIHdpbGwgaW1wbGljaXRseSBleGVjdXRlIGBgcGFyZW50L19faW5pdF9fLnB5YGAgYW5kCitgYHBhcmVudC9vbmUvX19pbml0X18ucHlgYC4gIFN1YnNlcXVlbnQgaW1wb3J0cyBvZiBgYHBhcmVudC50d29gYCBvcgorYGBwYXJlbnQudGhyZWVgYCB3aWxsIGV4ZWN1dGUgYGBwYXJlbnQvdHdvL19faW5pdF9fLnB5YGAgYW5kCitgYHBhcmVudC90aHJlZS9fX2luaXRfXy5weWBgIHJlc3BlY3RpdmVseS4KKworCitOYW1lc3BhY2UgcGFja2FnZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgcGFpcjo6IHBhY2thZ2U7IG5hbWVzcGFjZQorICAgIHBhaXI6OiBwYWNrYWdlOyBwb3J0aW9uCisKK0EgbmFtZXNwYWNlIHBhY2thZ2UgaXMgYSBjb21wb3NpdGUgb2YgdmFyaW91cyA6dGVybTpgcG9ydGlvbnMgPHBvcnRpb24+YCwKK3doZXJlIGVhY2ggcG9ydGlvbiBjb250cmlidXRlcyBhIHN1YnBhY2thZ2UgdG8gdGhlIHBhcmVudCBwYWNrYWdlLiAgUG9ydGlvbnMKK21heSByZXNpZGUgaW4gZGlmZmVyZW50IGxvY2F0aW9ucyBvbiB0aGUgZmlsZSBzeXN0ZW0uICBQb3J0aW9ucyBtYXkgYWxzbyBiZQorZm91bmQgaW4gemlwIGZpbGVzLCBvbiB0aGUgbmV0d29yaywgb3IgYW55d2hlcmUgZWxzZSB0aGF0IFB5dGhvbiBzZWFyY2hlcworZHVyaW5nIGltcG9ydC4gIE5hbWVzcGFjZSBwYWNrYWdlcyBtYXkgb3IgbWF5IG5vdCBjb3JyZXNwb25kIGRpcmVjdGx5IHRvCitvYmplY3RzIG9uIHRoZSBmaWxlIHN5c3RlbTsgdGhleSBtYXkgYmUgdmlydHVhbCBtb2R1bGVzIHRoYXQgaGF2ZSBubyBjb25jcmV0ZQorcmVwcmVzZW50YXRpb24uCisKK05hbWVzcGFjZSBwYWNrYWdlcyBkbyBub3QgdXNlIGFuIG9yZGluYXJ5IGxpc3QgZm9yIHRoZWlyIGBgX19wYXRoX19gYAorYXR0cmlidXRlLiBUaGV5IGluc3RlYWQgdXNlIGEgY3VzdG9tIGl0ZXJhYmxlIHR5cGUgd2hpY2ggd2lsbCBhdXRvbWF0aWNhbGx5CitwZXJmb3JtIGEgbmV3IHNlYXJjaCBmb3IgcGFja2FnZSBwb3J0aW9ucyBvbiB0aGUgbmV4dCBpbXBvcnQgYXR0ZW1wdCB3aXRoaW4KK3RoYXQgcGFja2FnZSBpZiB0aGUgcGF0aCBvZiB0aGVpciBwYXJlbnQgcGFja2FnZSAob3IgOmRhdGE6YHN5cy5wYXRoYCBmb3IgYQordG9wIGxldmVsIHBhY2thZ2UpIGNoYW5nZXMuCisKK1dpdGggbmFtZXNwYWNlIHBhY2thZ2VzLCB0aGVyZSBpcyBubyBgYHBhcmVudC9fX2luaXRfXy5weWBgIGZpbGUuICBJbiBmYWN0LAordGhlcmUgbWF5IGJlIG11bHRpcGxlIGBgcGFyZW50YGAgZGlyZWN0b3JpZXMgZm91bmQgZHVyaW5nIGltcG9ydCBzZWFyY2gsIHdoZXJlCitlYWNoIG9uZSBpcyBwcm92aWRlZCBieSBhIGRpZmZlcmVudCBwb3J0aW9uLiAgVGh1cyBgYHBhcmVudC9vbmVgYCBtYXkgbm90IGJlCitwaHlzaWNhbGx5IGxvY2F0ZWQgbmV4dCB0byBgYHBhcmVudC90d29gYC4gIEluIHRoaXMgY2FzZSwgUHl0aG9uIHdpbGwgY3JlYXRlIGEKK25hbWVzcGFjZSBwYWNrYWdlIGZvciB0aGUgdG9wLWxldmVsIGBgcGFyZW50YGAgcGFja2FnZSB3aGVuZXZlciBpdCBvciBvbmUgb2YKK2l0cyBzdWJwYWNrYWdlcyBpcyBpbXBvcnRlZC4KKworU2VlIGFsc28gOnBlcDpgNDIwYCBmb3IgdGhlIG5hbWVzcGFjZSBwYWNrYWdlIHNwZWNpZmljYXRpb24uCisKKworU2VhcmNoaW5nCis9PT09PT09PT0KKworVG8gYmVnaW4gdGhlIHNlYXJjaCwgUHl0aG9uIG5lZWRzIHRoZSA6dGVybTpgZnVsbHkgcXVhbGlmaWVkIDxxdWFsaWZpZWQgbmFtZT5gCituYW1lIG9mIHRoZSBtb2R1bGUgKG9yIHBhY2thZ2UsIGJ1dCBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGlzY3Vzc2lvbiwgdGhlCitkaWZmZXJlbmNlIGlzIGltbWF0ZXJpYWwpIGJlaW5nIGltcG9ydGVkLiAgVGhpcyBuYW1lIG1heSBjb21lIGZyb20gdmFyaW91cworYXJndW1lbnRzIHRvIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQsIG9yIGZyb20gdGhlIHBhcmFtZXRlcnMgdG8gdGhlCis6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIG9yIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbnMuCisKK1RoaXMgbmFtZSB3aWxsIGJlIHVzZWQgaW4gdmFyaW91cyBwaGFzZXMgb2YgdGhlIGltcG9ydCBzZWFyY2gsIGFuZCBpdCBtYXkgYmUKK3RoZSBkb3R0ZWQgcGF0aCB0byBhIHN1Ym1vZHVsZSwgZS5nLiBgYGZvby5iYXIuYmF6YGAuICBJbiB0aGlzIGNhc2UsIFB5dGhvbgorZmlyc3QgdHJpZXMgdG8gaW1wb3J0IGBgZm9vYGAsIHRoZW4gYGBmb28uYmFyYGAsIGFuZCBmaW5hbGx5IGBgZm9vLmJhci5iYXpgYC4KK0lmIGFueSBvZiB0aGUgaW50ZXJtZWRpYXRlIGltcG9ydHMgZmFpbCwgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKworCitUaGUgbW9kdWxlIGNhY2hlCistLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IHN5cy5tb2R1bGVzCisKK1RoZSBmaXJzdCBwbGFjZSBjaGVja2VkIGR1cmluZyBpbXBvcnQgc2VhcmNoIGlzIDpkYXRhOmBzeXMubW9kdWxlc2AuICBUaGlzCittYXBwaW5nIHNlcnZlcyBhcyBhIGNhY2hlIG9mIGFsbCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgaW1wb3J0ZWQsCitpbmNsdWRpbmcgdGhlIGludGVybWVkaWF0ZSBwYXRocy4gIFNvIGlmIGBgZm9vLmJhci5iYXpgYCB3YXMgcHJldmlvdXNseQoraW1wb3J0ZWQsIDpkYXRhOmBzeXMubW9kdWxlc2Agd2lsbCBjb250YWluIGVudHJpZXMgZm9yIGBgZm9vYGAsIGBgZm9vLmJhcmBgLAorYW5kIGBgZm9vLmJhci5iYXpgYC4gIEVhY2gga2V5IHdpbGwgaGF2ZSBhcyBpdHMgdmFsdWUgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlCitvYmplY3QuCisKK0R1cmluZyBpbXBvcnQsIHRoZSBtb2R1bGUgbmFtZSBpcyBsb29rZWQgdXAgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBhbmQgaWYKK3ByZXNlbnQsIHRoZSBhc3NvY2lhdGVkIHZhbHVlIGlzIHRoZSBtb2R1bGUgc2F0aXNmeWluZyB0aGUgaW1wb3J0LCBhbmQgdGhlCitwcm9jZXNzIGNvbXBsZXRlcy4gIEhvd2V2ZXIsIGlmIHRoZSB2YWx1ZSBpcyBgYE5vbmVgYCwgdGhlbiBhbgorOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBtaXNzaW5nLCBQeXRob24gd2lsbAorY29udGludWUgc2VhcmNoaW5nIGZvciB0aGUgbW9kdWxlLgorCis6ZGF0YTpgc3lzLm1vZHVsZXNgIGlzIHdyaXRhYmxlLiAgRGVsZXRpbmcgYSBrZXkgbWF5IG5vdCBkZXN0cm95IHRoZQorYXNzb2NpYXRlZCBtb2R1bGUgKGFzIG90aGVyIG1vZHVsZXMgbWF5IGhvbGQgcmVmZXJlbmNlcyB0byBpdCksCitidXQgaXQgd2lsbCBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlbnRyeSBmb3IgdGhlIG5hbWVkIG1vZHVsZSwgY2F1c2luZworUHl0aG9uIHRvIHNlYXJjaCBhbmV3IGZvciB0aGUgbmFtZWQgbW9kdWxlIHVwb24gaXRzIG5leHQKK2ltcG9ydC4gVGhlIGtleSBjYW4gYWxzbyBiZSBhc3NpZ25lZCB0byBgYE5vbmVgYCwgZm9yY2luZyB0aGUgbmV4dCBpbXBvcnQKK29mIHRoZSBtb2R1bGUgdG8gcmVzdWx0IGluIGFuIDpleGM6YEltcG9ydEVycm9yYC4KKworQmV3YXJlIHRob3VnaCwgYXMgaWYgeW91IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1vZHVsZSBvYmplY3QsCitpbnZhbGlkYXRlIGl0cyBjYWNoZSBlbnRyeSBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBhbmQgdGhlbiByZS1pbXBvcnQgdGhlCituYW1lZCBtb2R1bGUsIHRoZSB0d28gbW9kdWxlIG9iamVjdHMgd2lsbCAqbm90KiBiZSB0aGUgc2FtZS4gQnkgY29udHJhc3QsCis6ZnVuYzpgaW1wLnJlbG9hZGAgd2lsbCByZXVzZSB0aGUgKnNhbWUqIG1vZHVsZSBvYmplY3QsIGFuZCBzaW1wbHkKK3JlaW5pdGlhbGlzZSB0aGUgbW9kdWxlIGNvbnRlbnRzIGJ5IHJlcnVubmluZyB0aGUgbW9kdWxlJ3MgY29kZS4KKworCitGaW5kZXJzIGFuZCBsb2FkZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IGZpbmRlcgorICAgIHNpbmdsZTogbG9hZGVyCisKK0lmIHRoZSBuYW1lZCBtb2R1bGUgaXMgbm90IGZvdW5kIGluIDpkYXRhOmBzeXMubW9kdWxlc2AsIHRoZW4gUHl0aG9uJ3MgaW1wb3J0Citwcm90b2NvbCBpcyBpbnZva2VkIHRvIGZpbmQgYW5kIGxvYWQgdGhlIG1vZHVsZS4gIFRoaXMgcHJvdG9jb2wgY29uc2lzdHMgb2YKK3R3byBjb25jZXB0dWFsIG9iamVjdHMsIDp0ZXJtOmBmaW5kZXJzIDxmaW5kZXI+YCBhbmQgOnRlcm06YGxvYWRlcnMgPGxvYWRlcj5gLgorQSBmaW5kZXIncyBqb2IgaXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgY2FuIGZpbmQgdGhlIG5hbWVkIG1vZHVsZSB1c2luZword2hhdGV2ZXIgc3RyYXRlZ3kgaXQga25vd3MgYWJvdXQuIE9iamVjdHMgdGhhdCBpbXBsZW1lbnQgYm90aCBvZiB0aGVzZQoraW50ZXJmYWNlcyBhcmUgcmVmZXJyZWQgdG8gYXMgOnRlcm06YGltcG9ydGVycyA8aW1wb3J0ZXI+YCAtIHRoZXkgcmV0dXJuCit0aGVtc2VsdmVzIHdoZW4gdGhleSBmaW5kIHRoYXQgdGhleSBjYW4gbG9hZCB0aGUgcmVxdWVzdGVkIG1vZHVsZS4KKworUHl0aG9uIGluY2x1ZGVzIGEgbnVtYmVyIG9mIGRlZmF1bHQgZmluZGVycyBhbmQgaW1wb3J0ZXJzLiAgT25lCitrbm93cyBob3cgdG8gbG9jYXRlIGZyb3plbiBtb2R1bGVzLCBhbmQgYW5vdGhlciBrbm93cyBob3cgdG8gbG9jYXRlCitidWlsdC1pbiBtb2R1bGVzLiAgQSB0aGlyZCBkZWZhdWx0IGZpbmRlciBzZWFyY2hlcyBhbiA6dGVybTpgaW1wb3J0IHBhdGhgCitmb3IgbW9kdWxlcy4gIFRoZSA6dGVybTpgaW1wb3J0IHBhdGhgIGlzIGEgbGlzdCBvZiBsb2NhdGlvbnMgdGhhdCBtYXkKK25hbWUgZmlsZSBzeXN0ZW0gcGF0aHMgb3IgemlwIGZpbGVzLiAgSXQgY2FuIGFsc28gYmUgZXh0ZW5kZWQgdG8gc2VhcmNoCitmb3IgYW55IGxvY2F0YWJsZSByZXNvdXJjZSwgc3VjaCBhcyB0aG9zZSBpZGVudGlmaWVkIGJ5IFVSTHMuCisKK1RoZSBpbXBvcnQgbWFjaGluZXJ5IGlzIGV4dGVuc2libGUsIHNvIG5ldyBmaW5kZXJzIGNhbiBiZSBhZGRlZCB0byBleHRlbmQgdGhlCityYW5nZSBhbmQgc2NvcGUgb2YgbW9kdWxlIHNlYXJjaGluZy4KKworRmluZGVycyBkbyBub3QgYWN0dWFsbHkgbG9hZCBtb2R1bGVzLiAgSWYgdGhleSBjYW4gZmluZCB0aGUgbmFtZWQgbW9kdWxlLCB0aGV5CityZXR1cm4gYSA6dGVybTpgbG9hZGVyYCwgd2hpY2ggdGhlIGltcG9ydCBtYWNoaW5lcnkgdGhlbiBpbnZva2VzIHRvIGxvYWQgdGhlCittb2R1bGUgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBtb2R1bGUgb2JqZWN0LgorCitUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIHRoZSBwcm90b2NvbCBmb3IgZmluZGVycyBhbmQgbG9hZGVycyBpbiBtb3JlCitkZXRhaWwsIGluY2x1ZGluZyBob3cgeW91IGNhbiBjcmVhdGUgYW5kIHJlZ2lzdGVyIG5ldyBvbmVzIHRvIGV4dGVuZCB0aGUKK2ltcG9ydCBtYWNoaW5lcnkuCisKKworSW1wb3J0IGhvb2tzCistLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBpbXBvcnQgaG9va3MKKyAgIHNpbmdsZTogbWV0YSBob29rcworICAgc2luZ2xlOiBwYXRoIGhvb2tzCisgICBwYWlyOiBob29rczsgaW1wb3J0CisgICBwYWlyOiBob29rczsgbWV0YQorICAgcGFpcjogaG9va3M7IHBhdGgKKworVGhlIGltcG9ydCBtYWNoaW5lcnkgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZTsgdGhlIHByaW1hcnkgbWVjaGFuaXNtIGZvcgordGhpcyBhcmUgdGhlICppbXBvcnQgaG9va3MqLiAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBpbXBvcnQgaG9va3M6ICptZXRhCitob29rcyogYW5kICppbXBvcnQgcGF0aCBob29rcyouCisKK01ldGEgaG9va3MgYXJlIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgaW1wb3J0IHByb2Nlc3NpbmcsIGJlZm9yZSBhbnkgb3RoZXIKK2ltcG9ydCBwcm9jZXNzaW5nIGhhcyBvY2N1cnJlZCwgb3RoZXIgdGhhbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIGNhY2hlIGxvb2sgdXAuCitUaGlzIGFsbG93cyBtZXRhIGhvb2tzIHRvIG92ZXJyaWRlIDpkYXRhOmBzeXMucGF0aGAgcHJvY2Vzc2luZywgZnJvemVuCittb2R1bGVzLCBvciBldmVuIGJ1aWx0LWluIG1vZHVsZXMuICBNZXRhIGhvb2tzIGFyZSByZWdpc3RlcmVkIGJ5IGFkZGluZyBuZXcKK2ZpbmRlciBvYmplY3RzIHRvIDpkYXRhOmBzeXMubWV0YV9wYXRoYCwgYXMgZGVzY3JpYmVkIGJlbG93LgorCitJbXBvcnQgcGF0aCBob29rcyBhcmUgY2FsbGVkIGFzIHBhcnQgb2YgOmRhdGE6YHN5cy5wYXRoYCAob3IKK2BgcGFja2FnZS5fX3BhdGhfX2BgKSBwcm9jZXNzaW5nLCBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlaXIgYXNzb2NpYXRlZCBwYXRoCitpdGVtIGlzIGVuY291bnRlcmVkLiAgSW1wb3J0IHBhdGggaG9va3MgYXJlIHJlZ2lzdGVyZWQgYnkgYWRkaW5nIG5ldyBjYWxsYWJsZXMKK3RvIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgYXMgZGVzY3JpYmVkIGJlbG93LgorCisKK1RoZSBtZXRhIHBhdGgKKy0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogc3lzLm1ldGFfcGF0aAorICAgIHBhaXI6IGZpbmRlcjsgZmluZF9tb2R1bGUKKyAgICBwYWlyOiBmaW5kZXI7IGZpbmRfbG9hZGVyCisKK1doZW4gdGhlIG5hbWVkIG1vZHVsZSBpcyBub3QgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCwgUHl0aG9uIG5leHQKK3NlYXJjaGVzIDpkYXRhOmBzeXMubWV0YV9wYXRoYCwgd2hpY2ggY29udGFpbnMgYSBsaXN0IG9mIG1ldGEgcGF0aCBmaW5kZXIKK29iamVjdHMuICBUaGVzZSBmaW5kZXJzIGFyZSBxdWVyaWVkIGluIG9yZGVyIHRvIHNlZSBpZiB0aGV5IGtub3cgaG93IHRvIGhhbmRsZQordGhlIG5hbWVkIG1vZHVsZS4gIE1ldGEgcGF0aCBmaW5kZXJzIG11c3QgaW1wbGVtZW50IGEgbWV0aG9kIGNhbGxlZAorOm1ldGg6YGZpbmRfbW9kdWxlKClgIHdoaWNoIHRha2VzIHR3byBhcmd1bWVudHMsIGEgbmFtZSBhbmQgYW4gaW1wb3J0IHBhdGguCitUaGUgbWV0YSBwYXRoIGZpbmRlciBjYW4gdXNlIGFueSBzdHJhdGVneSBpdCB3YW50cyB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBjYW4KK2hhbmRsZSB0aGUgbmFtZWQgbW9kdWxlIG9yIG5vdC4KKworSWYgdGhlIG1ldGEgcGF0aCBmaW5kZXIga25vd3MgaG93IHRvIGhhbmRsZSB0aGUgbmFtZWQgbW9kdWxlLCBpdCByZXR1cm5zIGEKK2xvYWRlciBvYmplY3QuICBJZiBpdCBjYW5ub3QgaGFuZGxlIHRoZSBuYW1lZCBtb2R1bGUsIGl0IHJldHVybnMgYGBOb25lYGAuICBJZgorOmRhdGE6YHN5cy5tZXRhX3BhdGhgIHByb2Nlc3NpbmcgcmVhY2hlcyB0aGUgZW5kIG9mIGl0cyBsaXN0IHdpdGhvdXQgcmV0dXJuaW5nCithIGxvYWRlciwgdGhlbiBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgQW55IG90aGVyIGV4Y2VwdGlvbnMgcmFpc2VkCithcmUgc2ltcGx5IHByb3BhZ2F0ZWQgdXAsIGFib3J0aW5nIHRoZSBpbXBvcnQgcHJvY2Vzcy4KKworVGhlIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2Qgb2YgbWV0YSBwYXRoIGZpbmRlcnMgaXMgY2FsbGVkIHdpdGggdHdvCithcmd1bWVudHMuICBUaGUgZmlyc3QgaXMgdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBtb2R1bGUgYmVpbmcKK2ltcG9ydGVkLCBmb3IgZXhhbXBsZSBgYGZvby5iYXIuYmF6YGAuICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBwYXRoCitlbnRyaWVzIHRvIHVzZSBmb3IgdGhlIG1vZHVsZSBzZWFyY2guICBGb3IgdG9wLWxldmVsIG1vZHVsZXMsIHRoZSBzZWNvbmQKK2FyZ3VtZW50IGlzIGBgTm9uZWBgLCBidXQgZm9yIHN1Ym1vZHVsZXMgb3Igc3VicGFja2FnZXMsIHRoZSBzZWNvbmQKK2FyZ3VtZW50IGlzIHRoZSB2YWx1ZSBvZiB0aGUgcGFyZW50IHBhY2thZ2UncyBgYF9fcGF0aF9fYGAgYXR0cmlidXRlLiBJZgordGhlIGFwcHJvcHJpYXRlIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUgY2Fubm90IGJlIGFjY2Vzc2VkLCBhbgorOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKworVGhlIG1ldGEgcGF0aCBtYXkgYmUgdHJhdmVyc2VkIG11bHRpcGxlIHRpbWVzIGZvciBhIHNpbmdsZSBpbXBvcnQgcmVxdWVzdC4KK0ZvciBleGFtcGxlLCBhc3N1bWluZyBub25lIG9mIHRoZSBtb2R1bGVzIGludm9sdmVkIGhhcyBhbHJlYWR5IGJlZW4gY2FjaGVkLAoraW1wb3J0aW5nIGBgZm9vLmJhci5iYXpgYCB3aWxsIGZpcnN0IHBlcmZvcm0gYSB0b3AgbGV2ZWwgaW1wb3J0LCBjYWxsaW5nCitgYG1wZi5maW5kX21vZHVsZSgiZm9vIiwgTm9uZSlgYCBvbiBlYWNoIG1ldGEgcGF0aCBmaW5kZXIgKGBgbXBmYGApLiBBZnRlcgorYGBmb29gYCBoYXMgYmVlbiBpbXBvcnRlZCwgYGBmb28uYmFyYGAgd2lsbCBiZSBpbXBvcnRlZCBieSB0cmF2ZXJzaW5nIHRoZQorbWV0YSBwYXRoIGEgc2Vjb25kIHRpbWUsIGNhbGxpbmcKK2BgbXBmLmZpbmRfbW9kdWxlKCJmb28uYmFyIiwgZm9vLl9fcGF0aF9fKWBgLiBPbmNlIGBgZm9vLmJhcmBgIGhhcyBiZWVuCitpbXBvcnRlZCwgdGhlIGZpbmFsIHRyYXZlcnNhbCB3aWxsIGNhbGwKK2BgbXBmLmZpbmRfbW9kdWxlKCJmb28uYmFyLmJheiIsIGZvby5iYXIuX19wYXRoX18pYGAuCisKK1NvbWUgbWV0YSBwYXRoIGZpbmRlcnMgb25seSBzdXBwb3J0IHRvcCBsZXZlbCBpbXBvcnRzLiBUaGVzZSBpbXBvcnRlcnMgd2lsbAorYWx3YXlzIHJldHVybiBgYE5vbmVgYCB3aGVuIGFueXRoaW5nIG90aGVyIHRoYW4gYGBOb25lYGAgaXMgcGFzc2VkIGFzIHRoZQorc2Vjb25kIGFyZ3VtZW50LgorCitQeXRob24ncyBkZWZhdWx0IDpkYXRhOmBzeXMubWV0YV9wYXRoYCBoYXMgdGhyZWUgbWV0YSBwYXRoIGZpbmRlcnMsIG9uZSB0aGF0Citrbm93cyBob3cgdG8gaW1wb3J0IGJ1aWx0LWluIG1vZHVsZXMsIG9uZSB0aGF0IGtub3dzIGhvdyB0byBpbXBvcnQgZnJvemVuCittb2R1bGVzLCBhbmQgb25lIHRoYXQga25vd3MgaG93IHRvIGltcG9ydCBtb2R1bGVzIGZyb20gYW4gOnRlcm06YGltcG9ydCBwYXRoYAorKGkuZS4gdGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmApLgorCisKK0xvYWRlcnMKKz09PT09PT0KKworSWYgYW5kIHdoZW4gYSBtb2R1bGUgbG9hZGVyIGlzIGZvdW5kIGl0cworOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgbWV0aG9kIGlzIGNhbGxlZCwgd2l0aCBhIHNpbmdsZQorYXJndW1lbnQsIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkLiAgVGhpcyBtZXRob2QKK2hhcyBzZXZlcmFsIHJlc3BvbnNpYmlsaXRpZXMsIGFuZCBzaG91bGQgcmV0dXJuIHRoZSBtb2R1bGUgb2JqZWN0IGl0IGhhcworbG9hZGVkIFsjZm5sb11fLiAgSWYgaXQgY2Fubm90IGxvYWQgdGhlIG1vZHVsZSwgaXQgc2hvdWxkIHJhaXNlIGFuCis6ZXhjOmBJbXBvcnRFcnJvcmAsIGFsdGhvdWdoIGFueSBvdGhlciBleGNlcHRpb24gcmFpc2VkIGR1cmluZworOm1ldGg6YGxvYWRfbW9kdWxlKClgIHdpbGwgYmUgcHJvcGFnYXRlZC4KKworSW4gbWFueSBjYXNlcywgdGhlIGZpbmRlciBhbmQgbG9hZGVyIGNhbiBiZSB0aGUgc2FtZSBvYmplY3Q7IGluIHN1Y2ggY2FzZXMgdGhlCis6bWV0aDpgZmluZGVyLmZpbmRfbW9kdWxlKClgIHdvdWxkIGp1c3QgcmV0dXJuIGBgc2VsZmBgLgorCitMb2FkZXJzIG11c3Qgc2F0aXNmeSB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50czoKKworICogSWYgdGhlcmUgaXMgYW4gZXhpc3RpbmcgbW9kdWxlIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBuYW1lIGluCisgICA6ZGF0YTpgc3lzLm1vZHVsZXNgLCB0aGUgbG9hZGVyIG11c3QgdXNlIHRoYXQgZXhpc3RpbmcgbW9kdWxlLiAgKE90aGVyd2lzZSwKKyAgIDpmdW5jOmBpbXAucmVsb2FkYCB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseS4pICBJZiB0aGUgbmFtZWQgbW9kdWxlIGRvZXMKKyAgIG5vdCBleGlzdCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCB0aGUgbG9hZGVyIG11c3QgY3JlYXRlIGEgbmV3IG1vZHVsZQorICAgb2JqZWN0IGFuZCBhZGQgaXQgdG8gOmRhdGE6YHN5cy5tb2R1bGVzYC4KKworICAgTm90ZSB0aGF0IHRoZSBtb2R1bGUgKm11c3QqIGV4aXN0IGluIDpkYXRhOmBzeXMubW9kdWxlc2AgYmVmb3JlIHRoZSBsb2FkZXIKKyAgIGV4ZWN1dGVzIHRoZSBtb2R1bGUgY29kZS4gIFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIHRoZSBtb2R1bGUgY29kZSBtYXkKKyAgIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBpbXBvcnQgaXRzZWxmOyBhZGRpbmcgaXQgdG8gOmRhdGE6YHN5cy5tb2R1bGVzYAorICAgYmVmb3JlaGFuZCBwcmV2ZW50cyB1bmJvdW5kZWQgcmVjdXJzaW9uIGluIHRoZSB3b3JzdCBjYXNlIGFuZCBtdWx0aXBsZQorICAgbG9hZGluZyBpbiB0aGUgYmVzdC4KKworICAgSWYgbG9hZGluZyBmYWlscywgdGhlIGxvYWRlciBtdXN0IHJlbW92ZSBhbnkgbW9kdWxlcyBpdCBoYXMgaW5zZXJ0ZWQgaW50bworICAgOmRhdGE6YHN5cy5tb2R1bGVzYCwgYnV0IGl0IG11c3QgcmVtb3ZlICoqb25seSoqIHRoZSBmYWlsaW5nIG1vZHVsZSwgYW5kCisgICBvbmx5IGlmIHRoZSBsb2FkZXIgaXRzZWxmIGhhcyBsb2FkZWQgaXQgZXhwbGljaXRseS4gIEFueSBtb2R1bGUgYWxyZWFkeSBpbgorICAgdGhlIDpkYXRhOmBzeXMubW9kdWxlc2AgY2FjaGUsIGFuZCBhbnkgbW9kdWxlIHRoYXQgd2FzIHN1Y2Nlc3NmdWxseSBsb2FkZWQKKyAgIGFzIGEgc2lkZS1lZmZlY3QsIG11c3QgcmVtYWluIGluIHRoZSBjYWNoZS4KKworICogVGhlIGxvYWRlciBtYXkgc2V0IHRoZSBgYF9fZmlsZV9fYGAgYXR0cmlidXRlIG9mIHRoZSBtb2R1bGUuICBJZiBzZXQsIHRoaXMKKyAgIGF0dHJpYnV0ZSdzIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcuICBUaGUgbG9hZGVyIG1heSBvcHQgdG8gbGVhdmUKKyAgIGBgX19maWxlX19gYCB1bnNldCBpZiBpdCBoYXMgbm8gc2VtYW50aWMgbWVhbmluZyAoZS5nLiBhIG1vZHVsZSBsb2FkZWQgZnJvbQorICAgYSBkYXRhYmFzZSkuCisKKyAqIFRoZSBsb2FkZXIgbWF5IHNldCB0aGUgYGBfX25hbWVfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgbW9kdWxlLiAgV2hpbGUgbm90CisgICByZXF1aXJlZCwgc2V0dGluZyB0aGlzIGF0dHJpYnV0ZSBpcyBoaWdobHkgcmVjb21tZW5kZWQgc28gdGhhdCB0aGUKKyAgIDptZXRoOmByZXByKClgIG9mIHRoZSBtb2R1bGUgaXMgbW9yZSBpbmZvcm1hdGl2ZS4KKworICogSWYgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UgKGVpdGhlciByZWd1bGFyIG9yIG5hbWVzcGFjZSksIHRoZSBsb2FkZXIgbXVzdAorICAgc2V0IHRoZSBtb2R1bGUgb2JqZWN0J3MgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZS4gIFRoZSB2YWx1ZSBtdXN0IGJlCisgICBpdGVyYWJsZSwgYnV0IG1heSBiZSBlbXB0eSBpZiBgYF9fcGF0aF9fYGAgaGFzIG5vIGZ1cnRoZXIgc2lnbmlmaWNhbmNlCisgICB0byB0aGUgbG9hZGVyLiBJZiBgYF9fcGF0aF9fYGAgaXMgbm90IGVtcHR5LCBpdCBtdXN0IHByb2R1Y2Ugc3RyaW5ncworICAgd2hlbiBpdGVyYXRlZCBvdmVyLiBNb3JlIGRldGFpbHMgb24gdGhlIHNlbWFudGljcyBvZiBgYF9fcGF0aF9fYGAgYXJlCisgICBnaXZlbiA6cmVmOmBiZWxvdyA8cGFja2FnZS1wYXRoLXJ1bGVzPmAuCisKKyAqIFRoZSBgYF9fbG9hZGVyX19gYCBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gdGhlIGxvYWRlciBvYmplY3QgdGhhdCBsb2FkZWQKKyAgIHRoZSBtb2R1bGUuICBUaGlzIGlzIG1vc3RseSBmb3IgaW50cm9zcGVjdGlvbiBhbmQgcmVsb2FkaW5nLCBidXQgY2FuIGJlCisgICB1c2VkIGZvciBhZGRpdGlvbmFsIGxvYWRlci1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5LCBmb3IgZXhhbXBsZSBnZXR0aW5nCisgICBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGxvYWRlci4KKworICogVGhlIG1vZHVsZSdzIGBgX19wYWNrYWdlX19gYCBhdHRyaWJ1dGUgc2hvdWxkIGJlIHNldC4gIEl0cyB2YWx1ZSBtdXN0IGJlIGEKKyAgIHN0cmluZywgYnV0IGl0IGNhbiBiZSB0aGUgc2FtZSB2YWx1ZSBhcyBpdHMgYGBfX25hbWVfX2BgLiAgSWYgdGhlIGF0dHJpYnV0ZQorICAgaXMgc2V0IHRvIGBgTm9uZWBgIG9yIGlzIG1pc3NpbmcsIHRoZSBpbXBvcnQgc3lzdGVtIHdpbGwgZmlsbCBpdCBpbiB3aXRoIGEKKyAgIG1vcmUgYXBwcm9wcmlhdGUgdmFsdWUuICBXaGVuIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlLCBpdHMgYGBfX3BhY2thZ2VfX2BgCisgICB2YWx1ZSBzaG91bGQgYmUgc2V0IHRvIGl0cyBgYF9fbmFtZV9fYGAuICBXaGVuIHRoZSBtb2R1bGUgaXMgbm90IGEgcGFja2FnZSwKKyAgIGBgX19wYWNrYWdlX19gYCBzaG91bGQgYmUgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgZm9yIHRvcC1sZXZlbCBtb2R1bGVzLCBvcgorICAgZm9yIHN1Ym1vZHVsZXMsIHRvIHRoZSBwYXJlbnQgcGFja2FnZSdzIG5hbWUuICBTZWUgOnBlcDpgMzY2YCBmb3IgZnVydGhlcgorICAgZGV0YWlscy4KKworICAgVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBpbnN0ZWFkIG9mIGBgX19uYW1lX19gYCB0byBjYWxjdWxhdGUgZXhwbGljaXQKKyAgIHJlbGF0aXZlIGltcG9ydHMgZm9yIG1haW4gbW9kdWxlcywgYXMgZGVmaW5lZCBpbiA6cGVwOmAzNjZgLgorCisgKiBJZiB0aGUgbW9kdWxlIGlzIGEgUHl0aG9uIG1vZHVsZSAoYXMgb3Bwb3NlZCB0byBhIGJ1aWx0LWluIG1vZHVsZSBvciBhCisgICBkeW5hbWljYWxseSBsb2FkZWQgZXh0ZW5zaW9uKSwgdGhlIGxvYWRlciBzaG91bGQgZXhlY3V0ZSB0aGUgbW9kdWxlJ3MgY29kZQorICAgaW4gdGhlIG1vZHVsZSdzIGdsb2JhbCBuYW1lIHNwYWNlIChgYG1vZHVsZS5fX2RpY3RfX2BgKS4KKworCitNb2R1bGUgcmVwcnMKKy0tLS0tLS0tLS0tLQorCitCeSBkZWZhdWx0LCBhbGwgbW9kdWxlcyBoYXZlIGEgdXNhYmxlIHJlcHIsIGhvd2V2ZXIgZGVwZW5kaW5nIG9uIHRoZQorYXR0cmlidXRlcyBzZXQgYWJvdmUsIGFuZCBob29rcyBpbiB0aGUgbG9hZGVyLCB5b3UgY2FuIG1vcmUgZXhwbGljaXRseSBjb250cm9sCit0aGUgcmVwciBvZiBtb2R1bGUgb2JqZWN0cy4KKworTG9hZGVycyBtYXkgaW1wbGVtZW50IGEgOm1ldGg6YG1vZHVsZV9yZXByKClgIG1ldGhvZCB3aGljaCB0YWtlcyBhIHNpbmdsZQorYXJndW1lbnQsIHRoZSBtb2R1bGUgb2JqZWN0LiAgV2hlbiBgYHJlcHIobW9kdWxlKWBgIGlzIGNhbGxlZCBmb3IgYSBtb2R1bGUKK3dpdGggYSBsb2FkZXIgc3VwcG9ydGluZyB0aGlzIHByb3RvY29sLCB3aGF0ZXZlciBpcyByZXR1cm5lZCBmcm9tCitgYG1vZHVsZS5fX2xvYWRlcl9fLm1vZHVsZV9yZXByKG1vZHVsZSlgYCBpcyByZXR1cm5lZCBhcyB0aGUgbW9kdWxlJ3MgcmVwcgord2l0aG91dCBmdXJ0aGVyIHByb2Nlc3NpbmcuICBUaGlzIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nLgorCitJZiB0aGUgbW9kdWxlIGhhcyBubyBgYF9fbG9hZGVyX19gYCBhdHRyaWJ1dGUsIG9yIHRoZSBsb2FkZXIgaGFzIG5vCis6bWV0aDpgbW9kdWxlX3JlcHIoKWAgbWV0aG9kLCB0aGVuIHRoZSBtb2R1bGUgb2JqZWN0IGltcGxlbWVudGF0aW9uIGl0c2VsZgord2lsbCBjcmFmdCBhIGRlZmF1bHQgcmVwciB1c2luZyB3aGF0ZXZlciBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUuICBJdCB3aWxsCit0cnkgdG8gdXNlIHRoZSBgYG1vZHVsZS5fX25hbWVfX2BgLCBgYG1vZHVsZS5fX2ZpbGVfX2BgLCBhbmQKK2BgbW9kdWxlLl9fbG9hZGVyX19gYCBhcyBpbnB1dCBpbnRvIHRoZSByZXByLCB3aXRoIGRlZmF1bHRzIGZvciB3aGF0ZXZlcgoraW5mb3JtYXRpb24gaXMgbWlzc2luZy4KKworSGVyZSBhcmUgdGhlIGV4YWN0IHJ1bGVzIHVzZWQ6CisKKyAqIElmIHRoZSBtb2R1bGUgaGFzIGEgYGBfX2xvYWRlcl9fYGAgYW5kIHRoYXQgbG9hZGVyIGhhcyBhCisgICA6bWV0aDpgbW9kdWxlX3JlcHIoKWAgbWV0aG9kLCBjYWxsIGl0IHdpdGggYSBzaW5nbGUgYXJndW1lbnQsIHdoaWNoIGlzIHRoZQorICAgbW9kdWxlIG9iamVjdC4gIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyB1c2VkIGFzIHRoZSBtb2R1bGUncyByZXByLgorCisgKiBJZiBhbiBleGNlcHRpb24gb2NjdXJzIGluIDptZXRoOmBtb2R1bGVfcmVwcigpYCwgdGhlIGV4Y2VwdGlvbiBpcyBjYXVnaHQKKyAgIGFuZCBkaXNjYXJkZWQsIGFuZCB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIG1vZHVsZSdzIHJlcHIgY29udGludWVzIGFzIGlmCisgICA6bWV0aDpgbW9kdWxlX3JlcHIoKWAgZGlkIG5vdCBleGlzdC4KKworICogSWYgdGhlIG1vZHVsZSBoYXMgYSBgYF9fZmlsZV9fYGAgYXR0cmlidXRlLCB0aGlzIGlzIHVzZWQgYXMgcGFydCBvZiB0aGUKKyAgIG1vZHVsZSdzIHJlcHIuCisKKyAqIElmIHRoZSBtb2R1bGUgaGFzIG5vIGBgX19maWxlX19gYCBidXQgZG9lcyBoYXZlIGEgYGBfX2xvYWRlcl9fYGAsIHRoZW4gdGhlCisgICBsb2FkZXIncyByZXByIGlzIHVzZWQgYXMgcGFydCBvZiB0aGUgbW9kdWxlJ3MgcmVwci4KKworICogT3RoZXJ3aXNlLCBqdXN0IHVzZSB0aGUgbW9kdWxlJ3MgYGBfX25hbWVfX2BgIGluIHRoZSByZXByLgorCitUaGlzIGV4YW1wbGUsIGZyb20gOnBlcDpgNDIwYCBzaG93cyBob3cgYSBsb2FkZXIgY2FuIGNyYWZ0IGl0cyBvd24gbW9kdWxlCityZXByOjoKKworICAgIGNsYXNzIE5hbWVzcGFjZUxvYWRlcjoKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG1vZHVsZSk6CisgICAgICAgICAgICByZXR1cm4gIjxtb2R1bGUgJ3t9JyAobmFtZXNwYWNlKT4iLmZvcm1hdChtb2R1bGUuX19uYW1lX18pCisKKworLi4gX3BhY2thZ2UtcGF0aC1ydWxlczoKKworbW9kdWxlLl9fcGF0aF9fCistLS0tLS0tLS0tLS0tLS0KKworQnkgZGVmaW5pdGlvbiwgaWYgYSBtb2R1bGUgaGFzIGFuIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUsIGl0IGlzIGEgcGFja2FnZSwKK3JlZ2FyZGxlc3Mgb2YgaXRzIHZhbHVlLgorCitBIHBhY2thZ2UncyBgYF9fcGF0aF9fYGAgYXR0cmlidXRlIGlzIHVzZWQgZHVyaW5nIGltcG9ydHMgb2YgaXRzIHN1YnBhY2thZ2VzLgorV2l0aGluIHRoZSBpbXBvcnQgbWFjaGluZXJ5LCBpdCBmdW5jdGlvbnMgbXVjaCB0aGUgc2FtZSBhcyA6ZGF0YTpgc3lzLnBhdGhgLAoraS5lLiBwcm92aWRpbmcgYSBsaXN0IG9mIGxvY2F0aW9ucyB0byBzZWFyY2ggZm9yIG1vZHVsZXMgZHVyaW5nIGltcG9ydC4KK0hvd2V2ZXIsIGBgX19wYXRoX19gYCBpcyB0eXBpY2FsbHkgbXVjaCBtb3JlIGNvbnN0cmFpbmVkIHRoYW4KKzpkYXRhOmBzeXMucGF0aGAuCisKK2BgX19wYXRoX19gYCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIHN0cmluZ3MsIGJ1dCBpdCBtYXkgYmUgZW1wdHkuCitUaGUgc2FtZSBydWxlcyB1c2VkIGZvciA6ZGF0YTpgc3lzLnBhdGhgIGFsc28gYXBwbHkgdG8gYSBwYWNrYWdlJ3MKK2BgX19wYXRoX19gYCwgYW5kIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgKGRlc2NyaWJlZCBiZWxvdykgYXJlCitjb25zdWx0ZWQgd2hlbiB0cmF2ZXJzaW5nIGEgcGFja2FnZSdzIGBgX19wYXRoX19gYC4KKworQSBwYWNrYWdlJ3MgYGBfX2luaXRfXy5weWBgIGZpbGUgbWF5IHNldCBvciBhbHRlciB0aGUgcGFja2FnZSdzIGBgX19wYXRoX19gYAorYXR0cmlidXRlLCBhbmQgdGhpcyB3YXMgdHlwaWNhbGx5IHRoZSB3YXkgbmFtZXNwYWNlIHBhY2thZ2VzIHdlcmUgaW1wbGVtZW50ZWQKK3ByaW9yIHRvIDpwZXA6YDQyMGAuICBXaXRoIHRoZSBhZG9wdGlvbiBvZiA6cGVwOmA0MjBgLCBuYW1lc3BhY2UgcGFja2FnZXMgbm8KK2xvbmdlciBuZWVkIHRvIHN1cHBseSBgYF9faW5pdF9fLnB5YGAgZmlsZXMgY29udGFpbmluZyBvbmx5IGBgX19wYXRoX19gYAorbWFuaXB1bGF0aW9uIGNvZGU7IHRoZSBuYW1lc3BhY2UgbG9hZGVyIGF1dG9tYXRpY2FsbHkgc2V0cyBgYF9fcGF0aF9fYGAKK2NvcnJlY3RseSBmb3IgdGhlIG5hbWVzcGFjZSBwYWNrYWdlLgorCisKK1RoZSBQYXRoIEJhc2VkIEZpbmRlcgorPT09PT09PT09PT09PT09PT09PT09CisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IHBhdGggYmFzZWQgZmluZGVyCisKK0FzIG1lbnRpb25lZCBwcmV2aW91c2x5LCBQeXRob24gY29tZXMgd2l0aCBzZXZlcmFsIGRlZmF1bHQgbWV0YSBwYXRoIGZpbmRlcnMuCitPbmUgb2YgdGhlc2UsIGNhbGxlZCB0aGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCwgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydAorcGF0aGAsIHdoaWNoIGNvbnRhaW5zIGEgbGlzdCBvZiA6dGVybTpgcGF0aCBlbnRyaWVzIDxwYXRoIGVudHJ5PmAuICBFYWNoIHBhdGgKK2VudHJ5IG5hbWVzIGEgbG9jYXRpb24gdG8gc2VhcmNoIGZvciBtb2R1bGVzLgorCitUaGUgcGF0aCBiYXNlZCBmaW5kZXIgaXRzZWxmIGRvZXNuJ3Qga25vdyBob3cgdG8gaW1wb3J0IGFueXRoaW5nLiBJbnN0ZWFkLCBpdAordHJhdmVyc2VzIHRoZSBpbmRpdmlkdWFsIHBhdGggZW50cmllcywgYXNzb2NpYXRpbmcgZWFjaCBvZiB0aGVtIHdpdGggYQorcGF0aCBlbnRyeSBmaW5kZXIgdGhhdCBrbm93cyBob3cgdG8gaGFuZGxlIHRoYXQgcGFydGljdWxhciBraW5kIG9mIHBhdGguCisKK1RoZSBkZWZhdWx0IHNldCBvZiBwYXRoIGVudHJ5IGZpbmRlcnMgaW1wbGVtZW50IGFsbCB0aGUgc2VtYW50aWNzIGZvciBmaW5kaW5nCittb2R1bGVzIG9uIHRoZSBmaWxlIHN5c3RlbSwgaGFuZGxpbmcgc3BlY2lhbCBmaWxlIHR5cGVzIHN1Y2ggYXMgUHl0aG9uIHNvdXJjZQorY29kZSAoYGAucHlgYCBmaWxlcyksIFB5dGhvbiBieXRlIGNvZGUgKGBgLnB5Y2BgIGFuZCBgYC5weW9gYCBmaWxlcykgYW5kCitzaGFyZWQgbGlicmFyaWVzIChlLmcuIGBgLnNvYGAgZmlsZXMpLiBXaGVuIHN1cHBvcnRlZCBieSB0aGUgOm1vZDpgemlwaW1wb3J0YAorbW9kdWxlIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB0aGUgZGVmYXVsdCBwYXRoIGVudHJ5IGZpbmRlcnMgYWxzbyBoYW5kbGUKK2xvYWRpbmcgYWxsIG9mIHRoZXNlIGZpbGUgdHlwZXMgKG90aGVyIHRoYW4gc2hhcmVkIGxpYnJhcmllcykgZnJvbSB6aXBmaWxlcy4KKworUGF0aCBlbnRyaWVzIG5lZWQgbm90IGJlIGxpbWl0ZWQgdG8gZmlsZSBzeXN0ZW0gbG9jYXRpb25zLiAgVGhleSBjYW4gcmVmZXIgdG8KK1VSTHMsIGRhdGFiYXNlIHF1ZXJpZXMsIG9yIGFueSBvdGhlciBsb2NhdGlvbiB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgYXMgYQorc3RyaW5nLgorCitUaGUgcGF0aCBiYXNlZCBmaW5kZXIgcHJvdmlkZXMgYWRkaXRpb25hbCBob29rcyBhbmQgcHJvdG9jb2xzIHNvIHRoYXQgeW91CitjYW4gZXh0ZW5kIGFuZCBjdXN0b21pemUgdGhlIHR5cGVzIG9mIHNlYXJjaGFibGUgcGF0aCBlbnRyaWVzLiAgRm9yIGV4YW1wbGUsCitpZiB5b3Ugd2FudGVkIHRvIHN1cHBvcnQgcGF0aCBlbnRyaWVzIGFzIG5ldHdvcmsgVVJMcywgeW91IGNvdWxkIHdyaXRlIGEgaG9vawordGhhdCBpbXBsZW1lbnRzIEhUVFAgc2VtYW50aWNzIHRvIGZpbmQgbW9kdWxlcyBvbiB0aGUgd2ViLiAgVGhpcyBob29rIChhCitjYWxsYWJsZSkgd291bGQgcmV0dXJuIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYCBzdXBwb3J0aW5nIHRoZSBwcm90b2NvbAorZGVzY3JpYmVkIGJlbG93LCB3aGljaCB3YXMgdGhlbiB1c2VkIHRvIGdldCBhIGxvYWRlciBmb3IgdGhlIG1vZHVsZSBmcm9tIHRoZQord2ViLgorCitBIHdvcmQgb2Ygd2FybmluZzogdGhpcyBzZWN0aW9uIGFuZCB0aGUgcHJldmlvdXMgYm90aCB1c2UgdGhlIHRlcm0gKmZpbmRlciosCitkaXN0aW5ndWlzaGluZyBiZXR3ZWVuIHRoZW0gYnkgdXNpbmcgdGhlIHRlcm1zIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVyYCBhbmQKKzp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAuICBUaGVzZSB0d28gdHlwZXMgb2YgZmluZGVycyBhcmUgdmVyeSBzaW1pbGFyLAorc3VwcG9ydCBzaW1pbGFyIHByb3RvY29scywgYW5kIGZ1bmN0aW9uIGluIHNpbWlsYXIgd2F5cyBkdXJpbmcgdGhlIGltcG9ydAorcHJvY2VzcywgYnV0IGl0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCB0aGF0IHRoZXkgYXJlIHN1YnRseSBkaWZmZXJlbnQuCitJbiBwYXJ0aWN1bGFyLCBtZXRhIHBhdGggZmluZGVycyBvcGVyYXRlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGltcG9ydAorcHJvY2VzcywgYXMga2V5ZWQgb2ZmIHRoZSA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgdHJhdmVyc2FsLgorCitCeSBjb250cmFzdCwgcGF0aCBlbnRyeSBmaW5kZXJzIGFyZSBpbiBhIHNlbnNlIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbAorb2YgdGhlIHBhdGggYmFzZWQgZmluZGVyLCBhbmQgaW4gZmFjdCwgaWYgdGhlIHBhdGggYmFzZWQgZmluZGVyIHdlcmUgdG8gYmUKK3JlbW92ZWQgZnJvbSA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsIG5vbmUgb2YgdGhlIHBhdGggZW50cnkgZmluZGVyIHNlbWFudGljcword291bGQgYmUgaW52b2tlZC4KKworCitQYXRoIGVudHJ5IGZpbmRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBzeXMucGF0aAorICAgIHNpbmdsZTogc3lzLnBhdGhfaG9va3MKKyAgICBzaW5nbGU6IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlCisgICAgc2luZ2xlOiBQWVRIT05QQVRICisKK1RoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgIGlzIHJlc3BvbnNpYmxlIGZvciBmaW5kaW5nIGFuZCBsb2FkaW5nIFB5dGhvbgorbW9kdWxlcyBhbmQgcGFja2FnZXMgd2hvc2UgbG9jYXRpb24gaXMgc3BlY2lmaWVkIHdpdGggYSBzdHJpbmcgOnRlcm06YHBhdGgKK2VudHJ5YC4gIE1vc3QgcGF0aCBlbnRyaWVzIG5hbWUgbG9jYXRpb25zIGluIHRoZSBmaWxlIHN5c3RlbSwgYnV0IHRoZXkgbmVlZAorbm90IGJlIGxpbWl0ZWQgdG8gdGhpcy4KKworQXMgYSBtZXRhIHBhdGggZmluZGVyLCB0aGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCBpbXBsZW1lbnRzIHRoZQorOm1ldGg6YGZpbmRfbW9kdWxlKClgIHByb3RvY29sIHByZXZpb3VzbHkgZGVzY3JpYmVkLCBob3dldmVyIGl0IGV4cG9zZXMKK2FkZGl0aW9uYWwgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0byBjdXN0b21pemUgaG93IG1vZHVsZXMgYXJlIGZvdW5kIGFuZAorbG9hZGVkIGZyb20gdGhlIDp0ZXJtOmBpbXBvcnQgcGF0aGAuCisKK1RocmVlIHZhcmlhYmxlcyBhcmUgdXNlZCBieSB0aGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCwgOmRhdGE6YHN5cy5wYXRoYCwKKzpkYXRhOmBzeXMucGF0aF9ob29rc2AgYW5kIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuICBUaGUgYGBfX3BhdGhfX2BgCithdHRyaWJ1dGVzIG9uIHBhY2thZ2Ugb2JqZWN0cyBhcmUgYWxzbyB1c2VkLiAgVGhlc2UgcHJvdmlkZSBhZGRpdGlvbmFsIHdheXMKK3RoYXQgdGhlIGltcG9ydCBtYWNoaW5lcnkgY2FuIGJlIGN1c3RvbWl6ZWQuCisKKzpkYXRhOmBzeXMucGF0aGAgY29udGFpbnMgYSBsaXN0IG9mIHN0cmluZ3MgcHJvdmlkaW5nIHNlYXJjaCBsb2NhdGlvbnMgZm9yCittb2R1bGVzIGFuZCBwYWNrYWdlcy4gIEl0IGlzIGluaXRpYWxpemVkIGZyb20gdGhlIDpkYXRhOmBQWVRIT05QQVRIYAorZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIHZhcmlvdXMgb3RoZXIgaW5zdGFsbGF0aW9uLSBhbmQKK2ltcGxlbWVudGF0aW9uLXNwZWNpZmljIGRlZmF1bHRzLiAgRW50cmllcyBpbiA6ZGF0YTpgc3lzLnBhdGhgIGNhbiBuYW1lCitkaXJlY3RvcmllcyBvbiB0aGUgZmlsZSBzeXN0ZW0sIHppcCBmaWxlcywgYW5kIHBvdGVudGlhbGx5IG90aGVyICJsb2NhdGlvbnMiCisoc2VlIHRoZSA6bW9kOmBzaXRlYCBtb2R1bGUpIHRoYXQgc2hvdWxkIGJlIHNlYXJjaGVkIGZvciBtb2R1bGVzLCBzdWNoIGFzCitVUkxzLCBvciBkYXRhYmFzZSBxdWVyaWVzLgorCitUaGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCBpcyBhIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVyYCwgc28gdGhlIGltcG9ydAorbWFjaGluZXJ5IGJlZ2lucyB0aGUgOnRlcm06YGltcG9ydCBwYXRoYCBzZWFyY2ggYnkgY2FsbGluZyB0aGUgcGF0aAorYmFzZWQgZmluZGVyJ3MgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZCBhcyBkZXNjcmliZWQgcHJldmlvdXNseS4gIFdoZW4KK3RoZSBgYHBhdGhgYCBhcmd1bWVudCB0byA6bWV0aDpgZmluZF9tb2R1bGUoKWAgaXMgZ2l2ZW4sIGl0IHdpbGwgYmUgYQorbGlzdCBvZiBzdHJpbmcgcGF0aHMgdG8gdHJhdmVyc2UgLSB0eXBpY2FsbHkgYSBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgCithdHRyaWJ1dGUgZm9yIGFuIGltcG9ydCB3aXRoaW4gdGhhdCBwYWNrYWdlLiAgSWYgdGhlIGBgcGF0aGBgIGFyZ3VtZW50CitpcyBgYE5vbmVgYCwgdGhpcyBpbmRpY2F0ZXMgYSB0b3AgbGV2ZWwgaW1wb3J0IGFuZCA6ZGF0YTpgc3lzLnBhdGhgIGlzIHVzZWQuCisKK1RoZSBwYXRoIGJhc2VkIGZpbmRlciBpdGVyYXRlcyBvdmVyIGV2ZXJ5IGVudHJ5IGluIHRoZSBzZWFyY2ggcGF0aCwgYW5kCitmb3IgZWFjaCBvZiB0aGVzZSwgbG9va3MgZm9yIGFuIGFwcHJvcHJpYXRlIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgZm9yIHRoZQorcGF0aCBlbnRyeS4gIEJlY2F1c2UgdGhpcyBjYW4gYmUgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbiAoZS5nLiB0aGVyZSBtYXkgYmUKK2BzdGF0KClgIGNhbGwgb3ZlcmhlYWRzIGZvciB0aGlzIHNlYXJjaCksIHRoZSBwYXRoIGJhc2VkIGZpbmRlciBtYWludGFpbnMKK2EgY2FjaGUgbWFwcGluZyBwYXRoIGVudHJpZXMgdG8gcGF0aCBlbnRyeSBmaW5kZXJzLiAgVGhpcyBjYWNoZSBpcyBtYWludGFpbmVkCitpbiA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIChkZXNwaXRlIHRoZSBuYW1lLCB0aGlzIGNhY2hlIGFjdHVhbGx5CitzdG9yZXMgZmluZGVyIG9iamVjdHMgcmF0aGVyIHRoYW4gYmVpbmcgbGltaXRlZCB0byA6dGVybTpgaW1wb3J0ZXJgIG9iamVjdHMpLgorSW4gdGhpcyB3YXksIHRoZSBleHBlbnNpdmUgc2VhcmNoIGZvciBhIHBhcnRpY3VsYXIgOnRlcm06YHBhdGggZW50cnlgCitsb2NhdGlvbidzIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgbmVlZCBvbmx5IGJlIGRvbmUgb25jZS4gIFVzZXIgY29kZSBpcworZnJlZSB0byByZW1vdmUgY2FjaGUgZW50cmllcyBmcm9tIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgZm9yY2luZwordGhlIHBhdGggYmFzZWQgZmluZGVyIHRvIHBlcmZvcm0gdGhlIHBhdGggZW50cnkgc2VhcmNoIGFnYWluIFsjZm5waWNdXy4KKworSWYgdGhlIHBhdGggZW50cnkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGNhY2hlLCB0aGUgcGF0aCBiYXNlZCBmaW5kZXIgaXRlcmF0ZXMKK292ZXIgZXZlcnkgY2FsbGFibGUgaW4gOmRhdGE6YHN5cy5wYXRoX2hvb2tzYC4gIEVhY2ggb2YgdGhlCis6dGVybTpgcGF0aCBlbnRyeSBob29rcyA8cGF0aCBlbnRyeSBob29rPmAgaW4gdGhpcyBsaXN0IGlzIGNhbGxlZCB3aXRoIGEKK3NpbmdsZSBhcmd1bWVudCwgdGhlIHBhdGggZW50cnkgdG8gYmUgc2VhcmNoZWQuICBUaGlzIGNhbGxhYmxlIG1heSBlaXRoZXIKK3JldHVybiBhIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgdGhhdCBjYW4gaGFuZGxlIHRoZSBwYXRoIGVudHJ5LCBvciBpdCBtYXkKK3JhaXNlIDpleGM6YEltcG9ydEVycm9yYC4KK0FuIDpleGM6YEltcG9ydEVycm9yYCBpcyB1c2VkIGJ5IHRoZSBwYXRoIGJhc2VkIGZpbmRlciB0byBzaWduYWwgdGhhdCB0aGUgaG9vaworY2Fubm90IGZpbmQgYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgIGZvciB0aGF0IDp0ZXJtOmBwYXRoIGVudHJ5YC4gIFRoZQorZXhjZXB0aW9uIGlzIGlnbm9yZWQgYW5kIDp0ZXJtOmBpbXBvcnQgcGF0aGAgaXRlcmF0aW9uIGNvbnRpbnVlcy4KKworSWYgOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCBpdGVyYXRpb24gZW5kcyB3aXRoIG5vIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAKK2JlaW5nIHJldHVybmVkLCB0aGVuIHRoZSBwYXRoIGJhc2VkIGZpbmRlcidzIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2QKK3dpbGwgc3RvcmUgYGBOb25lYGAgaW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCAodG8gaW5kaWNhdGUgdGhhdAordGhlcmUgaXMgbm8gZmluZGVyIGZvciB0aGlzIHBhdGggZW50cnkpIGFuZCByZXR1cm4gYGBOb25lYGAsIGluZGljYXRpbmcgdGhhdAordGhpcyA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcmAgY291bGQgbm90IGZpbmQgdGhlIG1vZHVsZS4KKworSWYgYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgICppcyogcmV0dXJuZWQgYnkgb25lIG9mIHRoZSA6dGVybTpgcGF0aCBlbnRyeQoraG9va2AgY2FsbGFibGVzIG9uIDpkYXRhOmBzeXMucGF0aF9ob29rc2AsIHRoZW4gdGhlIGZvbGxvd2luZyBwcm90b2NvbCBpcyB1c2VkCit0byBhc2sgdGhlIGZpbmRlciBmb3IgYSBtb2R1bGUgbG9hZGVyLCB3aGljaCBpcyB0aGVuIHVzZWQgdG8gbG9hZCB0aGUgbW9kdWxlLgorCisKK1BhdGggZW50cnkgZmluZGVyIHByb3RvY29sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBvcmRlciB0byBzdXBwb3J0IGltcG9ydHMgb2YgbW9kdWxlcyBhbmQgaW5pdGlhbGl6ZWQgcGFja2FnZXMgYW5kIGFsc28gdG8KK2NvbnRyaWJ1dGUgcG9ydGlvbnMgdG8gbmFtZXNwYWNlIHBhY2thZ2VzLCBwYXRoIGVudHJ5IGZpbmRlcnMgbXVzdCBpbXBsZW1lbnQKK3RoZSA6bWV0aDpgZmluZF9sb2FkZXIoKWAgbWV0aG9kLgorCis6bWV0aDpgZmluZF9sb2FkZXIoKWAgdGFrZXMgb25lIGFyZ3VtZW50LCB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlCittb2R1bGUgYmVpbmcgaW1wb3J0ZWQuICA6bWV0aDpgZmluZF9sb2FkZXIoKWAgcmV0dXJucyBhIDItdHVwbGUgd2hlcmUgdGhlCitmaXJzdCBpdGVtIGlzIHRoZSBsb2FkZXIgYW5kIHRoZSBzZWNvbmQgaXRlbSBpcyBhIG5hbWVzcGFjZSA6dGVybTpgcG9ydGlvbmAuCitXaGVuIHRoZSBmaXJzdCBpdGVtIChpLmUuIHRoZSBsb2FkZXIpIGlzIGBgTm9uZWBgLCB0aGlzIG1lYW5zIHRoYXQgd2hpbGUgdGhlCitwYXRoIGVudHJ5IGZpbmRlciBkb2VzIG5vdCBoYXZlIGEgbG9hZGVyIGZvciB0aGUgbmFtZWQgbW9kdWxlLCBpdCBrbm93cyB0aGF0IHRoZQorcGF0aCBlbnRyeSBjb250cmlidXRlcyB0byBhIG5hbWVzcGFjZSBwb3J0aW9uIGZvciB0aGUgbmFtZWQgbW9kdWxlLiAgVGhpcyB3aWxsCithbG1vc3QgYWx3YXlzIGJlIHRoZSBjYXNlIHdoZXJlIFB5dGhvbiBpcyBhc2tlZCB0byBpbXBvcnQgYSBuYW1lc3BhY2UgcGFja2FnZQordGhhdCBoYXMgbm8gcGh5c2ljYWwgcHJlc2VuY2Ugb24gdGhlIGZpbGUgc3lzdGVtLiAgV2hlbiBhIHBhdGggZW50cnkgZmluZGVyCityZXR1cm5zIGBgTm9uZWBgIGZvciB0aGUgbG9hZGVyLCB0aGUgc2Vjb25kIGl0ZW0gb2YgdGhlIDItdHVwbGUgcmV0dXJuIHZhbHVlCittdXN0IGJlIGEgc2VxdWVuY2UsIGFsdGhvdWdoIGl0IGNhbiBiZSBlbXB0eS4KKworSWYgOm1ldGg6YGZpbmRfbG9hZGVyKClgIHJldHVybnMgYSBub24tYGBOb25lYGAgbG9hZGVyIHZhbHVlLCB0aGUgcG9ydGlvbiBpcworaWdub3JlZCBhbmQgdGhlIGxvYWRlciBpcyByZXR1cm5lZCBmcm9tIHRoZSBwYXRoIGJhc2VkIGZpbmRlciwgdGVybWluYXRpbmcKK3RoZSBzZWFyY2ggdGhyb3VnaCB0aGUgcGF0aCBlbnRyaWVzLgorCitGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGltcG9ydAorcHJvdG9jb2wsIG1hbnkgcGF0aCBlbnRyeSBmaW5kZXJzIGFsc28gc3VwcG9ydCB0aGUgc2FtZSwKK3RyYWRpdGlvbmFsIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2QgdGhhdCBtZXRhIHBhdGggZmluZGVycyBzdXBwb3J0LgorSG93ZXZlciBwYXRoIGVudHJ5IGZpbmRlciA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kcyBhcmUgbmV2ZXIgY2FsbGVkCit3aXRoIGEgYGBwYXRoYGAgYXJndW1lbnQgKHRoZXkgYXJlIGV4cGVjdGVkIHRvIHJlY29yZCB0aGUgYXBwcm9wcmlhdGUKK3BhdGggaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5pdGlhbCBjYWxsIHRvIHRoZSBwYXRoIGhvb2spLgorCitUaGUgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZCBvbiBwYXRoIGVudHJ5IGZpbmRlcnMgaXMgZGVwcmVjYXRlZCwKK2FzIGl0IGRvZXMgbm90IGFsbG93IHRoZSBwYXRoIGVudHJ5IGZpbmRlciB0byBjb250cmlidXRlIHBvcnRpb25zIHRvCituYW1lc3BhY2UgcGFja2FnZXMuIEluc3RlYWQgcGF0aCBlbnRyeSBmaW5kZXJzIHNob3VsZCBpbXBsZW1lbnQgdGhlCis6bWV0aDpgZmluZF9sb2FkZXIoKWAgbWV0aG9kIGFzIGRlc2NyaWJlZCBhYm92ZS4gSWYgaXQgZXhpc3RzIG9uIHRoZSBwYXRoCitlbnRyeSBmaW5kZXIsIHRoZSBpbXBvcnQgc3lzdGVtIHdpbGwgYWx3YXlzIGNhbGwgOm1ldGg6YGZpbmRfbG9hZGVyKClgCitpbiBwcmVmZXJlbmNlIHRvIDptZXRoOmBmaW5kX21vZHVsZSgpYC4KKworCitSZXBsYWNpbmcgdGhlIHN0YW5kYXJkIGltcG9ydCBzeXN0ZW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgbW9zdCByZWxpYWJsZSBtZWNoYW5pc20gZm9yIHJlcGxhY2luZyB0aGUgZW50aXJlIGltcG9ydCBzeXN0ZW0gaXMgdG8KK2RlbGV0ZSB0aGUgZGVmYXVsdCBjb250ZW50cyBvZiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsIHJlcGxhY2luZyB0aGVtCitlbnRpcmVseSB3aXRoIGEgY3VzdG9tIG1ldGEgcGF0aCBob29rLgorCitJZiBpdCBpcyBhY2NlcHRhYmxlIHRvIG9ubHkgYWx0ZXIgdGhlIGJlaGF2aW91ciBvZiBpbXBvcnQgc3RhdGVtZW50cword2l0aG91dCBhZmZlY3Rpbmcgb3RoZXIgQVBJcyB0aGF0IGFjY2VzcyB0aGUgaW1wb3J0IHN5c3RlbSwgdGhlbiByZXBsYWNpbmcKK3RoZSBidWlsdGluIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbiBtYXkgYmUgc3VmZmljaWVudC4gVGhpcyB0ZWNobmlxdWUKK21heSBhbHNvIGJlIGVtcGxveWVkIGF0IHRoZSBtb2R1bGUgbGV2ZWwgdG8gb25seSBhbHRlciB0aGUgYmVoYXZpb3VyIG9mCitpbXBvcnQgc3RhdGVtZW50cyB3aXRoaW4gdGhhdCBtb2R1bGUuCisKK1RvIHNlbGVjdGl2ZWx5IHByZXZlbnQgaW1wb3J0IG9mIHNvbWUgbW9kdWxlcyBmcm9tIGEgaG9vayBlYXJseSBvbiB0aGUKK21ldGEgcGF0aCAocmF0aGVyIHRoYW4gZGlzYWJsaW5nIHRoZSBzdGFuZGFyZCBpbXBvcnQgc3lzdGVtIGVudGlyZWx5KSwKK2l0IGlzIHN1ZmZpY2llbnQgdG8gcmFpc2UgOmV4YzpgSW1wb3J0RXJyb3JgIGRpcmVjdGx5IGZyb20KKzptZXRoOmBmaW5kX21vZHVsZWAgaW5zdGVhZCBvZiByZXR1cm5pbmcgYGBOb25lYGAuIFRoZSBsYXR0ZXIgaW5kaWNhdGVzCit0aGF0IHRoZSBtZXRhIHBhdGggc2VhcmNoIHNob3VsZCBjb250aW51ZS4gd2hpbGUgcmFpc2luZyBhbiBleGNlcHRpb24KK3Rlcm1pbmF0ZXMgaXQgaW1tZWRpYXRlbHkuCisKKworT3BlbiBpc3N1ZXMKKz09PT09PT09PT09CisKK1hYWCBJdCB3b3VsZCBiZSByZWFsbHkgbmljZSB0byBoYXZlIGEgZGlhZ3JhbS4KKworWFhYICogKGltcG9ydF9tYWNoaW5lcnkucnN0KSBob3cgYWJvdXQgYSBzZWN0aW9uIGRldm90ZWQganVzdCB0byB0aGUKK2F0dHJpYnV0ZXMgb2YgbW9kdWxlcyBhbmQgcGFja2FnZXMsIHBlcmhhcHMgZXhwYW5kaW5nIHVwb24gb3Igc3VwcGxhbnRpbmcgdGhlCityZWxhdGVkIGVudHJpZXMgaW4gdGhlIGRhdGEgbW9kZWwgcmVmZXJlbmNlIHBhZ2U/CisKK1hYWCBydW5weSwgcGtndXRpbCwgZXQgYWwgaW4gdGhlIGxpYnJhcnkgbWFudWFsIHNob3VsZCBhbGwgZ2V0ICJTZWUgQWxzbyIKK2xpbmtzIGF0IHRoZSB0b3AgcG9pbnRpbmcgdG8gdGhlIG5ldyBpbXBvcnQgc3lzdGVtIHNlY3Rpb24uCisKKworUmVmZXJlbmNlcworPT09PT09PT09PQorCitUaGUgaW1wb3J0IG1hY2hpbmVyeSBoYXMgZXZvbHZlZCBjb25zaWRlcmFibHkgc2luY2UgUHl0aG9uJ3MgZWFybHkgZGF5cy4gIFRoZQorb3JpZ2luYWwgYHNwZWNpZmljYXRpb24gZm9yIHBhY2thZ2VzCis8aHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9lc3NheXMvcGFja2FnZXMuaHRtbD5gXyBpcyBzdGlsbCBhdmFpbGFibGUgdG8gcmVhZCwKK2FsdGhvdWdoIHNvbWUgZGV0YWlscyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHdyaXRpbmcgb2YgdGhhdCBkb2N1bWVudC4KKworVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIDpkYXRhOmBzeXMubWV0YV9wYXRoYCB3YXMgOnBlcDpgMzAyYCwgd2l0aAorc3Vic2VxdWVudCBleHRlbnNpb24gaW4gOnBlcDpgNDIwYC4KKworOnBlcDpgNDIwYCBpbnRyb2R1Y2VkIDp0ZXJtOmBuYW1lc3BhY2UgcGFja2FnZXMgPG5hbWVzcGFjZSBwYWNrYWdlPmAgZm9yCitQeXRob24gMy4zLiAgOnBlcDpgNDIwYCBhbHNvIGludHJvZHVjZWQgdGhlIDptZXRoOmBmaW5kX2xvYWRlcmAgcHJvdG9jb2wgYXMgYW4KK2FsdGVybmF0aXZlIHRvIDptZXRoOmBmaW5kX21vZHVsZWAuCisKKzpwZXA6YDM2NmAgZGVzY3JpYmVzIHRoZSBhZGRpdGlvbiBvZiB0aGUgYGBfX3BhY2thZ2VfX2BgIGF0dHJpYnV0ZSBmb3IKK2V4cGxpY2l0IHJlbGF0aXZlIGltcG9ydHMgaW4gbWFpbiBtb2R1bGVzLgorCis6cGVwOmAzMjhgIGludHJvZHVjZWQgYWJzb2x1dGUgYW5kIGV4cGxpY2l0IHJlbGF0aXZlIGltcG9ydHMgYW5kIGluaXRpYWxseQorcHJvcG9zZWQgYGBfX25hbWVfX2BgIGZvciBzZW1hbnRpY3MgOnBlcDpgMzY2YCB3b3VsZCBldmVudHVhbGx5IHNwZWNpZnkgZm9yCitgYF9fcGFja2FnZV9fYGAuCisKKzpwZXA6YDMzOGAgZGVmaW5lcyBleGVjdXRpbmcgbW9kdWxlcyBhcyBzY3JpcHRzLgorCisKK0Zvb3Rub3RlcworPT09PT09PT09CisKKy4uIFsjZm5tb10gU2VlIDpjbGFzczpgdHlwZXMuTW9kdWxlVHlwZWAuCisKKy4uIFsjZm5sb10gVGhlIGltcG9ydGxpYiBpbXBsZW1lbnRhdGlvbiBhdm9pZHMgdXNpbmcgdGhlIHJldHVybiB2YWx1ZQorICAgZGlyZWN0bHkuIEluc3RlYWQsIGl0IGdldHMgdGhlIG1vZHVsZSBvYmplY3QgYnkgbG9va2luZyB0aGUgbW9kdWxlIG5hbWUgdXAKKyAgIGluIDpkYXRhOmBzeXMubW9kdWxlc2AuICBUaGUgaW5kaXJlY3QgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCBhbiBpbXBvcnRlZAorICAgbW9kdWxlIG1heSByZXBsYWNlIGl0c2VsZiBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLiAgVGhpcyBpcworICAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgYmVoYXZpb3IgdGhhdCBpcyBub3QgZ3VhcmFudGVlZCB0byB3b3JrIGluIG90aGVyCisgICBQeXRob24gaW1wbGVtZW50YXRpb25zLgorCisuLiBbI2ZucGljXSBJbiBsZWdhY3kgY29kZSwgaXQgaXMgcG9zc2libGUgdG8gZmluZCBpbnN0YW5jZXMgb2YKKyAgIDpjbGFzczpgaW1wLk51bGxJbXBvcnRlcmAgaW4gdGhlIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuICBJdAorICAgaXMgcmVjb21tZW5kZWQgdGhhdCBjb2RlIGJlIGNoYW5nZWQgdG8gdXNlIGBgTm9uZWBgIGluc3RlYWQuICBTZWUKKyAgIDpyZWY6YHBvcnRpbmdweXRob25jb2RlYCBmb3IgbW9yZSBkZXRhaWxzLgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9pbmRleC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2luZGV4LnJzdAppbmRleCBiZDFhMjgxLi41NWY5M2Q3IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2luZGV4LnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2luZGV4LnJzdApAQCAtMjQsNiArMjQsNyBAQAogICAgbGV4aWNhbF9hbmFseXNpcy5yc3QKICAgIGRhdGFtb2RlbC5yc3QKICAgIGV4ZWN1dGlvbm1vZGVsLnJzdAorICAgaW1wb3J0LnJzdAogICAgZXhwcmVzc2lvbnMucnN0CiAgICBzaW1wbGVfc3RtdHMucnN0CiAgICBjb21wb3VuZF9zdG10cy5yc3QKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CmluZGV4IDRiNDk3MzguLmJhYjM5ZjkgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdApAQCAtNDAxLDcgKzQwMSw3IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIHN0cmluZ2xpdGVyYWw6IFtgc3RyaW5ncHJlZml4YF0oYHNob3J0c3RyaW5nYCB8IGBsb25nc3RyaW5nYCkKLSAgIHN0cmluZ3ByZWZpeDogInIiIHwgIlIiCisgICBzdHJpbmdwcmVmaXg6ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIgogICAgc2hvcnRzdHJpbmc6ICInIiBgc2hvcnRzdHJpbmdpdGVtYCogIiciIHwgJyInIGBzaG9ydHN0cmluZ2l0ZW1gKiAnIicKICAgIGxvbmdzdHJpbmc6ICInJyciIGBsb25nc3RyaW5naXRlbWAqICInJyciIHwgJyIiIicgYGxvbmdzdHJpbmdpdGVtYCogJyIiIicKICAgIHNob3J0c3RyaW5naXRlbTogYHNob3J0c3RyaW5nY2hhcmAgfCBgc3RyaW5nZXNjYXBlc2VxYApAQCAtNDEyLDcgKzQxMiw3IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIGJ5dGVzbGl0ZXJhbDogYGJ5dGVzcHJlZml4YChgc2hvcnRieXRlc2AgfCBgbG9uZ2J5dGVzYCkKLSAgIGJ5dGVzcHJlZml4OiAiYiIgfCAiQiIgfCAiYnIiIHwgIkJyIiB8ICJiUiIgfCAiQlIiCisgICBieXRlc3ByZWZpeDogImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiIKICAgIHNob3J0Ynl0ZXM6ICInIiBgc2hvcnRieXRlc2l0ZW1gKiAiJyIgfCAnIicgYHNob3J0Ynl0ZXNpdGVtYCogJyInCiAgICBsb25nYnl0ZXM6ICInJyciIGBsb25nYnl0ZXNpdGVtYCogIicnJyIgfCAnIiIiJyBgbG9uZ2J5dGVzaXRlbWAqICciIiInCiAgICBzaG9ydGJ5dGVzaXRlbTogYHNob3J0Ynl0ZXNjaGFyYCB8IGBieXRlc2VzY2FwZXNlcWAKQEAgLTQ0MSwxMCArNDQxLDI0IEBACiBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mIDEyOCBvciBncmVhdGVyCiBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuCiAKK0FzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHVuaWNvZGUgc3RyaW5ncyB3aXRoIGEKK2BgdWBgIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54IGNvZGViYXNlcy4KKwogQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYSBsZXR0ZXIgYGAncidgYAogb3IgYGAnUidgYDsgc3VjaCBzdHJpbmdzIGFyZSBjYWxsZWQgOmRmbjpgcmF3IHN0cmluZ3NgIGFuZCB0cmVhdCBiYWNrc2xhc2hlcyBhcwogbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZyBsaXRlcmFscywgYGAnXFUnYGAgYW5kIGBgJ1x1J2BgCi1lc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCBzcGVjaWFsbHkuCitlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCBzcGVjaWFsbHkuIEdpdmVuIHRoYXQgUHl0aG9uIDIueCdzIHJhdwordW5pY29kZSBsaXRlcmFscyBiZWhhdmUgZGlmZmVyZW50bHkgdGhhbiBQeXRob24gMy54J3MgdGhlIGBgJ3VyJ2BgIHN5bnRheAoraXMgbm90IHN1cHBvcnRlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgYGAncmInYGAgcHJlZml4IG9mIHJhdyBieXRlcyBsaXRlcmFscyBoYXMgYmVlbiBhZGRlZCBhcyBhIHN5bm9ueW0KKyAgICAgIG9mIGBgJ2JyJ2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSB1bmljb2RlIGxlZ2FjeSBsaXRlcmFsIChgYHUndmFsdWUnYGApIHdhcyByZWludHJvZHVjZWQKKyAgICAgIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsIFB5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuCisgICAgICBTZWUgOnBlcDpgNDE0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogSW4gdHJpcGxlLXF1b3RlZCBzdHJpbmdzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZCAoYW5kIGFyZQogcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93IHRlcm1pbmF0ZSB0aGUgc3RyaW5nLiAgKEEKQEAgLTQ5MiwxMyArNTA2LDEzIEBACiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiB8IEVzY2FwZSBTZXF1ZW5jZSB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8CiArPT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCi18IGBgXE57bmFtZX1gYCAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgfCAgICAgICB8Cit8IGBgXE57bmFtZX1gYCAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgfCBcKDQpICB8CiB8ICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgXHV4eHh4YGAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgfCBcKDQpICB8Cit8IGBgXHV4eHh4YGAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgfCBcKDUpICB8CiB8ICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgXFV4eHh4eHh4eGBgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgfCBcKDUpICB8Cit8IGBgXFV4eHh4eHh4eGBgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgfCBcKDYpICB8CiB8ICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiAKQEAgLTUxNiwxMCArNTMwLDE0IEBACiAgICB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4KIAogKDQpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIFsjXV8gaGFzIGJlZW4gYWRkZWQuCisKKyg1KQogICAgSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmUgZW5jb2RlZCB1c2luZwogICAgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuCiAKLSg1KQorKDYpCiAgICBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXksIGJ1dCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIEJhc2ljCiAgICBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGEgc3Vycm9nYXRlIHBhaXIgaWYgUHl0aG9uIGlzCiAgICBjb21waWxlZCB0byB1c2UgMTYtYml0IGNvZGUgdW5pdHMgKHRoZSBkZWZhdWx0KS4gIEV4YWN0bHkgZWlnaHQgaGV4IGRpZ2l0cwpAQCAtNzA2LDMgKzcyNCw4IEBACiBvY2N1cnJlbmNlIG91dHNpZGUgc3RyaW5nIGxpdGVyYWxzIGFuZCBjb21tZW50cyBpcyBhbiB1bmNvbmRpdGlvbmFsIGVycm9yOjoKIAogICAgJCAgICAgICA/ICAgICAgIGAKKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMS4wL3VjZC9OYW1lQWxpYXNlcy50eHQKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAppbmRleCA3MzE4M2Q1Li44MWRjNzQ4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CkBAIC00MjQsMTAgKzQyNCwxMCBAQAogOmtleXdvcmQ6YGZpbmFsbHlgIGNsYXVzZSwgdGhhdCA6a2V5d29yZDpgZmluYWxseWAgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZQogcmVhbGx5IGxlYXZpbmcgdGhlIGZ1bmN0aW9uLgogCi1JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIDprZXl3b3JkOmByZXR1cm5gIHN0YXRlbWVudCBpcyBub3QgYWxsb3dlZCB0bwotaW5jbHVkZSBhbiA6dG9rZW46YGV4cHJlc3Npb25fbGlzdGAuICBJbiB0aGF0IGNvbnRleHQsIGEgYmFyZSA6a2V5d29yZDpgcmV0dXJuYAotaW5kaWNhdGVzIHRoYXQgdGhlIGdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlIDpleGM6YFN0b3BJdGVyYXRpb25gIHRvIGJlCi1yYWlzZWQuCitJbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIDprZXl3b3JkOmByZXR1cm5gIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGUKK2dlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlIDpleGM6YFN0b3BJdGVyYXRpb25gIHRvIGJlIHJhaXNlZC4gVGhlIHJldHVybmVkCit2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdCA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBhbmQKK2JlY29tZXMgdGhlIDphdHRyOmBTdG9wSXRlcmF0aW9uLnZhbHVlYCBhdHRyaWJ1dGUuCiAKIAogLi4gX3lpZWxkOgpAQCAtNDQ5LDYgKzQ0OSw3IEBACiBhbmQgaXMgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24uIFVzaW5nIGEgOmtleXdvcmQ6YHlpZWxkYAogc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvIGNhdXNlIHRoYXQgZGVmaW5pdGlvbiB0bwogY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBub3JtYWwgZnVuY3Rpb24uCisKIFdoZW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkLCBpdCByZXR1cm5zIGFuIGl0ZXJhdG9yIGtub3duIGFzIGEgZ2VuZXJhdG9yCiBpdGVyYXRvciwgb3IgbW9yZSBjb21tb25seSwgYSBnZW5lcmF0b3IuICBUaGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzCiBleGVjdXRlZCBieSBjYWxsaW5nIHRoZSA6ZnVuYzpgbmV4dGAgZnVuY3Rpb24gb24gdGhlIGdlbmVyYXRvciByZXBlYXRlZGx5IHVudGlsCkBAIC00NjgsMTQgKzQ2OSwyOCBAQAogZ2FyYmFnZSBjb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yJ3MgOm1ldGg6YGNsb3NlYCBtZXRob2Qgd2lsbCBiZQogY2FsbGVkLCBhbGxvd2luZyBhbnkgcGVuZGluZyA6a2V5d29yZDpgZmluYWxseWAgY2xhdXNlcyB0byBleGVjdXRlLgogCitXaGVuIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCBpcyB1c2VkLCBpdCB0cmVhdHMgdGhlIHN1cHBsaWVkIGV4cHJlc3Npb24gYXMKK2Egc3ViaXRlcmF0b3IsIHByb2R1Y2luZyB2YWx1ZXMgZnJvbSBpdCB1bnRpbCB0aGUgdW5kZXJseWluZyBpdGVyYXRvciBpcworZXhoYXVzdGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgYGB5aWVsZCBmcm9tIDxleHByPmBgIHRvIGRlbGVnYXRlIGNvbnRyb2wgZmxvdyB0byBhIHN1Yml0ZXJhdG9yCisKK0ZvciBmdWxsIGRldGFpbHMgb2YgOmtleXdvcmQ6YHlpZWxkYCBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSA6cmVmOmB5aWVsZGV4cHJgCitzZWN0aW9uLgorCiAuLiBzZWVhbHNvOjoKIAogICAgOnBlcDpgMDI1NWAgLSBTaW1wbGUgR2VuZXJhdG9ycwogICAgICAgVGhlIHByb3Bvc2FsIGZvciBhZGRpbmcgZ2VuZXJhdG9ycyBhbmQgdGhlIDprZXl3b3JkOmB5aWVsZGAgc3RhdGVtZW50IHRvIFB5dGhvbi4KIAogICAgOnBlcDpgMDM0MmAgLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzCi0gICAgICBUaGUgcHJvcG9zYWwgdGhhdCwgYW1vbmcgb3RoZXIgZ2VuZXJhdG9yIGVuaGFuY2VtZW50cywgcHJvcG9zZWQgYWxsb3dpbmcKLSAgICAgIDprZXl3b3JkOmB5aWVsZGAgdG8gYXBwZWFyIGluc2lkZSBhIDprZXl3b3JkOmB0cnlgIC4uLiA6a2V5d29yZDpgZmluYWxseWAgYmxvY2suCisgICAgICBUaGUgcHJvcG9zYWwgdG8gZW5oYW5jZSB0aGUgQVBJIGFuZCBzeW50YXggb2YgZ2VuZXJhdG9ycywgbWFraW5nIHRoZW0KKyAgICAgIHVzYWJsZSBhcyBzaW1wbGUgY29yb3V0aW5lcy4KKworICAgOnBlcDpgMDM4MGAgLSBTeW50YXggZm9yIERlbGVnYXRpbmcgdG8gYSBTdWJnZW5lcmF0b3IKKyAgICAgIFRoZSBwcm9wb3NhbCB0byBpbnRyb2R1Y2UgdGhlIDp0b2tlbjpgeWllbGRfZnJvbWAgc3ludGF4LCBtYWtpbmcgZGVsZWdhdGlvbgorICAgICAgdG8gc3ViLWdlbmVyYXRvcnMgZWFzeS4KIAogCiAuLiBfcmFpc2U6CkBAIC02NDUsMTYxICs2NjAsOTggQEAKICAgIHJlbGF0aXZlX21vZHVsZTogIi4iKiBgbW9kdWxlYCB8ICIuIisKICAgIG5hbWU6IGBpZGVudGlmaWVyYAogCi1JbXBvcnQgc3RhdGVtZW50cyBhcmUgZXhlY3V0ZWQgaW4gdHdvIHN0ZXBzOiAoMSkgZmluZCBhIG1vZHVsZSwgYW5kIGluaXRpYWxpemUKLWl0IGlmIG5lY2Vzc2FyeTsgKDIpIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSAob2YgdGhlIHNjb3BlCi13aGVyZSB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IG9jY3VycykuIFRoZSBzdGF0ZW1lbnQgY29tZXMgaW4gdHdvCi1mb3JtcyBkaWZmZXJpbmcgb24gd2hldGhlciBpdCB1c2VzIHRoZSA6a2V5d29yZDpgZnJvbWAga2V5d29yZC4gVGhlIGZpcnN0IGZvcm0KLSh3aXRob3V0IDprZXl3b3JkOmBmcm9tYCkgcmVwZWF0cyB0aGVzZSBzdGVwcyBmb3IgZWFjaCBpZGVudGlmaWVyIGluIHRoZSBsaXN0LgotVGhlIGZvcm0gd2l0aCA6a2V5d29yZDpgZnJvbWAgcGVyZm9ybXMgc3RlcCAoMSkgb25jZSwgYW5kIHRoZW4gcGVyZm9ybXMgc3RlcAotKDIpIHJlcGVhdGVkbHkuIEZvciBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBzdGVwICgxKSwgc2VlIHRoZQotOm1vZDpgaW1wb3J0bGliYCBtb2R1bGUuCitUaGUgYmFzaWMgaW1wb3J0IHN0YXRlbWVudCAobm8gOmtleXdvcmQ6YGZyb21gIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gdHdvCitzdGVwczoKIAotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogcGFja2FnZQorIy4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeQorIy4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGUgd2hlcmUKKyAgIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgb2NjdXJzLgogCi1UbyB1bmRlcnN0YW5kIGhvdyBzdGVwICgxKSBvY2N1cnMsIG9uZSBtdXN0IGZpcnN0IHVuZGVyc3RhbmQgaG93IFB5dGhvbiBoYW5kbGVzCi1oaWVyYXJjaGljYWwgbmFtaW5nIG9mIG1vZHVsZXMuIFRvIGhlbHAgb3JnYW5pemUgbW9kdWxlcyBhbmQgcHJvdmlkZSBhCi1oaWVyYXJjaHkgaW4gbmFtaW5nLCBQeXRob24gaGFzIGEgY29uY2VwdCBvZiBwYWNrYWdlcy4gQSBwYWNrYWdlIGNhbiBjb250YWluCi1vdGhlciBwYWNrYWdlcyBhbmQgbW9kdWxlcyB3aGlsZSBtb2R1bGVzIGNhbm5vdCBjb250YWluIG90aGVyIG1vZHVsZXMgb3IKLXBhY2thZ2VzLiBGcm9tIGEgZmlsZSBzeXN0ZW0gcGVyc3BlY3RpdmUsIHBhY2thZ2VzIGFyZSBkaXJlY3RvcmllcyBhbmQgbW9kdWxlcwotYXJlIGZpbGVzLiBUaGUgb3JpZ2luYWwgYHNwZWNpZmljYXRpb24gZm9yIHBhY2thZ2VzCi08aHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9lc3NheXMvcGFja2FnZXMuaHRtbD5gXyBpcyBzdGlsbCBhdmFpbGFibGUgdG8gcmVhZCwKLWFsdGhvdWdoIG1pbm9yIGRldGFpbHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB3cml0aW5nIG9mIHRoYXQgZG9jdW1lbnQuCitXaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5Citjb21tYXMpIHRoZSB0d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0CithcyB0aG91Z2ggdGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWRpdWFsIGltcG9ydAorc3RhdGVtZW50cy4KIAotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogc3lzLm1vZHVsZXMKK1RoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgaXMgZGVzY3JpYmVkIGluCitncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgOnJlZjpgaW1wb3J0IHN5c3RlbSA8aW1wb3J0c3lzdGVtPmAsCit3aGljaCBhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0IGNhbgorYmUgaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZQordGhlIGltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5IGluZGljYXRlIGVpdGhlcgordGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUKK2luaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb24gb2YgdGhlIG1vZHVsZSdzIGNvZGUuCiAKLU9uY2UgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBpcyBrbm93biAodW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQsIHRoZSB0ZXJtCi0ibW9kdWxlIiB3aWxsIHJlZmVyIHRvIGJvdGggcGFja2FnZXMgYW5kIG1vZHVsZXMpLCBzZWFyY2hpbmcKLWZvciB0aGUgbW9kdWxlIG9yIHBhY2thZ2UgY2FuIGJlZ2luLiBUaGUgZmlyc3QgcGxhY2UgY2hlY2tlZCBpcwotOmRhdGE6YHN5cy5tb2R1bGVzYCwgdGhlIGNhY2hlIG9mIGFsbCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIGltcG9ydGVkCi1wcmV2aW91c2x5LiBJZiB0aGUgbW9kdWxlIGlzIGZvdW5kIHRoZXJlIHRoZW4gaXQgaXMgdXNlZCBpbiBzdGVwICgyKSBvZiBpbXBvcnQKLXVubGVzcyBgYE5vbmVgYCBpcyBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBpbiB3aGljaCBjYXNlCi06ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgorSWYgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseSwgaXQgd2lsbCBiZSBtYWRlCithdmFpbGFibGUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBpbiBvbmUgb2YgdGhyZWUgd2F5czoKIAotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogc3lzLm1ldGFfcGF0aAotICAgIHNpbmdsZTogZmluZGVyCi0gICAgcGFpcjogZmluZGVyOyBmaW5kX21vZHVsZQotICAgIHNpbmdsZTogX19wYXRoX18KKyogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5IDprZXl3b3JkOmBhc2AsIHRoZW4gdGhlIG5hbWUKKyAgZm9sbG93aW5nIDprZXl3b3JkOmBhc2AgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS4KKyogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGEgdG9wCisgIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZSdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhCisgIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlCisqIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZSBuYW1lCisgIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW4gdGhlIGxvY2FsCisgIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZSBpbXBvcnRlZCBtb2R1bGUKKyAgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZSByYXRoZXIgdGhhbiBkaXJlY3RseQogCi1JZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZCBpbiB0aGUgY2FjaGUsIHRoZW4gOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGlzIHNlYXJjaGVkCi0odGhlIHNwZWNpZmljYXRpb24gZm9yIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBjYW4gYmUgZm91bmQgaW4gOnBlcDpgMzAyYCkuCi1UaGUgb2JqZWN0IGlzIGEgbGlzdCBvZiA6dGVybTpgZmluZGVyYCBvYmplY3RzIHdoaWNoIGFyZSBxdWVyaWVkIGluIG9yZGVyIGFzIHRvCi13aGV0aGVyIHRoZXkga25vdyBob3cgdG8gbG9hZCB0aGUgbW9kdWxlIGJ5IGNhbGxpbmcgdGhlaXIgOm1ldGg6YGZpbmRfbW9kdWxlYAotbWV0aG9kIHdpdGggdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4gSWYgdGhlIG1vZHVsZSBoYXBwZW5zIHRvIGJlIGNvbnRhaW5lZAotd2l0aGluIGEgcGFja2FnZSAoYXMgZGVub3RlZCBieSB0aGUgZXhpc3RlbmNlIG9mIGEgZG90IGluIHRoZSBuYW1lKSwgdGhlbiBhCi1zZWNvbmQgYXJndW1lbnQgdG8gOm1ldGg6YGZpbmRfbW9kdWxlYCBpcyBnaXZlbiBhcyB0aGUgdmFsdWUgb2YgdGhlCi06YXR0cjpgX19wYXRoX19gIGF0dHJpYnV0ZSBmcm9tIHRoZSBwYXJlbnQgcGFja2FnZSAoZXZlcnl0aGluZyB1cCB0byB0aGUgbGFzdAotZG90IGluIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQpLiBJZiBhIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlCi1pdCByZXR1cm5zIGEgOnRlcm06YGxvYWRlcmAgKGRpc2N1c3NlZCBsYXRlcikgb3IgcmV0dXJucyBgYE5vbmVgYC4KLQotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogc3lzLnBhdGhfaG9va3MKLSAgICBzaW5nbGU6IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlCi0gICAgc2luZ2xlOiBzeXMucGF0aAotCi1JZiBub25lIG9mIHRoZSBmaW5kZXJzIG9uIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBhcmUgYWJsZSB0byBmaW5kIHRoZSBtb2R1bGUKLXRoZW4gc29tZSBpbXBsaWNpdGx5IGRlZmluZWQgZmluZGVycyBhcmUgcXVlcmllZC4gSW1wbGVtZW50YXRpb25zIG9mIFB5dGhvbgotdmFyeSBpbiB3aGF0IGltcGxpY2l0IG1ldGEgcGF0aCBmaW5kZXJzIGFyZSBkZWZpbmVkLiBUaGUgb25lIHRoZXkgYWxsIGRvCi1kZWZpbmUsIHRob3VnaCwgaXMgb25lIHRoYXQgaGFuZGxlcyA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgLAotOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCwgYW5kIDpkYXRhOmBzeXMucGF0aGAuCi0KLVRoZSBpbXBsaWNpdCBmaW5kZXIgc2VhcmNoZXMgZm9yIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGluIHRoZSAicGF0aHMiIHNwZWNpZmllZAotaW4gb25lIG9mIHR3byBwbGFjZXMgKCJwYXRocyIgZG8gbm90IGhhdmUgdG8gYmUgZmlsZSBzeXN0ZW0gcGF0aHMpLiBJZiB0aGUKLW1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBzdXBwb3NlZCB0byBiZSBjb250YWluZWQgd2l0aGluIGEgcGFja2FnZSB0aGVuIHRoZQotc2Vjb25kIGFyZ3VtZW50IHBhc3NlZCB0byA6bWV0aDpgZmluZF9tb2R1bGVgLCA6YXR0cjpgX19wYXRoX19gIG9uIHRoZSBwYXJlbnQKLXBhY2thZ2UsIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZiBwYXRocy4gSWYgdGhlIG1vZHVsZSBpcyBub3QgY29udGFpbmVkIGluIGEKLXBhY2thZ2UgdGhlbiA6ZGF0YTpgc3lzLnBhdGhgIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZiBwYXRocy4KLQotT25jZSB0aGUgc291cmNlIG9mIHBhdGhzIGlzIGNob3NlbiBpdCBpcyBpdGVyYXRlZCBvdmVyIHRvIGZpbmQgYSBmaW5kZXIgdGhhdAotY2FuIGhhbmRsZSB0aGF0IHBhdGguIFRoZSBkaWN0IGF0IDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgY2FjaGVzCi1maW5kZXJzIGZvciBwYXRocyBhbmQgaXMgY2hlY2tlZCBmb3IgYSBmaW5kZXIuIElmIHRoZSBwYXRoIGRvZXMgbm90IGhhdmUgYQotZmluZGVyIGNhY2hlZCB0aGVuIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXMgc2VhcmNoZWQgYnkgY2FsbGluZyBlYWNoIG9iamVjdCBpbgotdGhlIGxpc3Qgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCBvZiB0aGUgcGF0aCwgcmV0dXJuaW5nIGEgZmluZGVyIG9yIHJhaXNlcwotOmV4YzpgSW1wb3J0RXJyb3JgLiBJZiBhIGZpbmRlciBpcyByZXR1cm5lZCB0aGVuIGl0IGlzIGNhY2hlZCBpbgotOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBhbmQgdGhlbiB1c2VkIGZvciB0aGF0IHBhdGggZW50cnkuIElmIG5vIGZpbmRlcgotY2FuIGJlIGZvdW5kIGJ1dCB0aGUgcGF0aCBleGlzdHMgdGhlbiBhIHZhbHVlIG9mIGBgTm9uZWBgIGlzCi1zdG9yZWQgaW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCB0byBzaWduaWZ5IHRoYXQgYW4gaW1wbGljaXQsCi1maWxlLWJhc2VkIGZpbmRlciB0aGF0IGhhbmRsZXMgbW9kdWxlcyBzdG9yZWQgYXMgaW5kaXZpZHVhbCBmaWxlcyBzaG91bGQgYmUKLXVzZWQgZm9yIHRoYXQgcGF0aC4gSWYgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgdGhlbiBhIGZpbmRlciB3aGljaCBhbHdheXMKLXJldHVybnMgYGBOb25lYGAgaXMgcGxhY2VkIGluIHRoZSBjYWNoZSBmb3IgdGhlIHBhdGguCi0KLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IGxvYWRlcgotICAgIHBhaXI6IGxvYWRlcjsgbG9hZF9tb2R1bGUKLSAgICBleGNlcHRpb246IEltcG9ydEVycm9yCi0KLUlmIG5vIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIHRoZW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gT3RoZXJ3aXNlCi1zb21lIGZpbmRlciByZXR1cm5lZCBhIGxvYWRlciB3aG9zZSA6bWV0aDpgbG9hZF9tb2R1bGVgIG1ldGhvZCBpcyBjYWxsZWQgd2l0aAotdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBsb2FkIChzZWUgOnBlcDpgMzAyYCBmb3IgdGhlIG9yaWdpbmFsIGRlZmluaXRpb24gb2YKLWxvYWRlcnMpLiBBIGxvYWRlciBoYXMgc2V2ZXJhbCByZXNwb25zaWJpbGl0aWVzIHRvIHBlcmZvcm0gb24gYSBtb2R1bGUgaXQKLWxvYWRzLiBGaXJzdCwgaWYgdGhlIG1vZHVsZSBhbHJlYWR5IGV4aXN0cyBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIChhCi1wb3NzaWJpbGl0eSBpZiB0aGUgbG9hZGVyIGlzIGNhbGxlZCBvdXRzaWRlIG9mIHRoZSBpbXBvcnQgbWFjaGluZXJ5KSB0aGVuIGl0Ci1pcyB0byB1c2UgdGhhdCBtb2R1bGUgZm9yIGluaXRpYWxpemF0aW9uIGFuZCBub3QgYSBuZXcgbW9kdWxlLiBCdXQgaWYgdGhlCi1tb2R1bGUgZG9lcyBub3QgZXhpc3QgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCB0aGVuIGl0IGlzIHRvIGJlIGFkZGVkIHRvIHRoYXQKLWRpY3QgYmVmb3JlIGluaXRpYWxpemF0aW9uIGJlZ2lucy4gSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIG9mIHRoZQotbW9kdWxlIGFuZCBpdCB3YXMgYWRkZWQgdG8gOmRhdGE6YHN5cy5tb2R1bGVzYCBpdCBpcyB0byBiZSByZW1vdmVkIGZyb20gdGhlCi1kaWN0LiBJZiBhbiBlcnJvciBvY2N1cnMgYnV0IHRoZSBtb2R1bGUgd2FzIGFscmVhZHkgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBpdAotaXMgbGVmdCBpbiB0aGUgZGljdC4KLQotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogX19uYW1lX18KLSAgICBzaW5nbGU6IF9fZmlsZV9fCi0gICAgc2luZ2xlOiBfX3BhdGhfXwotICAgIHNpbmdsZTogX19wYWNrYWdlX18KLSAgICBzaW5nbGU6IF9fbG9hZGVyX18KLQotVGhlIGxvYWRlciBtdXN0IHNldCBzZXZlcmFsIGF0dHJpYnV0ZXMgb24gdGhlIG1vZHVsZS4gOmRhdGE6YF9fbmFtZV9fYCBpcyB0byBiZQotc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuIDpkYXRhOmBfX2ZpbGVfX2AgaXMgdG8gYmUgdGhlICJwYXRoIiB0byB0aGUgZmlsZQotdW5sZXNzIHRoZSBtb2R1bGUgaXMgYnVpbHQtaW4gKGFuZCB0aHVzIGxpc3RlZCBpbgotOmRhdGE6YHN5cy5idWlsdGluX21vZHVsZV9uYW1lc2ApIGluIHdoaWNoIGNhc2UgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LgotSWYgd2hhdCBpcyBiZWluZyBpbXBvcnRlZCBpcyBhIHBhY2thZ2UgdGhlbiA6ZGF0YTpgX19wYXRoX19gIGlzIHRvIGJlIHNldCB0byBhCi1saXN0IG9mIHBhdGhzIHRvIGJlIHNlYXJjaGVkIHdoZW4gbG9va2luZyBmb3IgbW9kdWxlcyBhbmQgcGFja2FnZXMgY29udGFpbmVkCi13aXRoaW4gdGhlIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQuIDpkYXRhOmBfX3BhY2thZ2VfX2AgaXMgb3B0aW9uYWwgYnV0IHNob3VsZAotYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIG9yIHBhY2thZ2UgKHRoZSBlbXB0eQotc3RyaW5nIGlzIHVzZWQgZm9yIG1vZHVsZSBub3QgY29udGFpbmVkIGluIGEgcGFja2FnZSkuIDpkYXRhOmBfX2xvYWRlcl9fYCBpcwotYWxzbyBvcHRpb25hbCBidXQgc2hvdWxkIGJlIHNldCB0byB0aGUgbG9hZGVyIG9iamVjdCB0aGF0IGlzIGxvYWRpbmcgdGhlCi1tb2R1bGUuCi0KLS4uIGluZGV4OjoKLSAgICBleGNlcHRpb246IEltcG9ydEVycm9yCi0KLUlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbG9hZGluZyB0aGVuIHRoZSBsb2FkZXIgcmFpc2VzIDpleGM6YEltcG9ydEVycm9yYCBpZgotc29tZSBvdGhlciBleGNlcHRpb24gaXMgbm90IGFscmVhZHkgYmVpbmcgcHJvcGFnYXRlZC4gT3RoZXJ3aXNlIHRoZSBsb2FkZXIKLXJldHVybnMgdGhlIG1vZHVsZSB0aGF0IHdhcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkLgotCi1XaGVuIHN0ZXAgKDEpIGZpbmlzaGVzIHdpdGhvdXQgcmFpc2luZyBhbiBleGNlcHRpb24sIHN0ZXAgKDIpIGNhbiBiZWdpbi4KLQotVGhlIGZpcnN0IGZvcm0gb2YgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGJpbmRzIHRoZSBtb2R1bGUgbmFtZSBpbiB0aGUgbG9jYWwKLW5hbWVzcGFjZSB0byB0aGUgbW9kdWxlIG9iamVjdCwgYW5kIHRoZW4gZ29lcyBvbiB0byBpbXBvcnQgdGhlIG5leHQgaWRlbnRpZmllciwKLWlmIGFueS4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSA6a2V5d29yZDpgYXNgLCB0aGUgbmFtZSBmb2xsb3dpbmcKLTprZXl3b3JkOmBhc2AgaXMgdXNlZCBhcyB0aGUgbG9jYWwgbmFtZSBmb3IgdGhlIG1vZHVsZS4KIAogLi4gaW5kZXg6OgogICAgcGFpcjogbmFtZTsgYmluZGluZworICAga2V5d29yZDogZnJvbQogICAgZXhjZXB0aW9uOiBJbXBvcnRFcnJvcgogCi1UaGUgOmtleXdvcmQ6YGZyb21gIGZvcm0gZG9lcyBub3QgYmluZCB0aGUgbW9kdWxlIG5hbWU6IGl0IGdvZXMgdGhyb3VnaCB0aGUgbGlzdAotb2YgaWRlbnRpZmllcnMsIGxvb2tzIGVhY2ggb25lIG9mIHRoZW0gdXAgaW4gdGhlIG1vZHVsZSBmb3VuZCBpbiBzdGVwICgxKSwgYW5kCi1iaW5kcyB0aGUgbmFtZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIHRvIHRoZSBvYmplY3QgdGh1cyBmb3VuZC4gIEFzIHdpdGggdGhlCi1maXJzdCBmb3JtIG9mIDprZXl3b3JkOmBpbXBvcnRgLCBhbiBhbHRlcm5hdGUgbG9jYWwgbmFtZSBjYW4gYmUgc3VwcGxpZWQgYnkKLXNwZWNpZnlpbmcgIjprZXl3b3JkOmBhc2AgbG9jYWxuYW1lIi4gIElmIGEgbmFtZSBpcyBub3QgZm91bmQsCi06ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyCi0oYGAnKidgYCksIGFsbCBwdWJsaWMgbmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwKLW5hbWVzcGFjZSBvZiB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LgorVGhlIDprZXl3b3JkOmBmcm9tYCBmb3JtIHVzZXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsZXggcHJvY2VzczoKKworIy4gZmluZCB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiB0aGUgOmtleXdvcmQ6YGZyb21gIGNsYXVzZSBsb2FkaW5nIGFuZAorICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTsKKyMuIGZvciBlYWNoIG9mIHRoZSBpZGVudGlmaWVycyBzcGVjaWZpZWQgaW4gdGhlIDprZXl3b3JkOmBpbXBvcnRgIGNsYXVzZXM6CisKKyAgICMuIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWUKKyAgICMuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kIHRoZW4KKyAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlCisgICAjLiBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBmb3VuZCwgOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKyAgICMuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlLAorICAgICAgdXNpbmcgdGhlIG5hbWUgaW4gdGhlIDprZXl3b3JkOmBhc2AgY2xhdXNlIGlmIGl0IGlzIHByZXNlbnQsCisgICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lCisKK0V4YW1wbGVzOjoKKworICAgaW1wb3J0IGZvbyAgICAgICAgICAgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGJvdW5kIGxvY2FsbHkKKyAgIGltcG9ydCBmb28uYmFyLmJheiAgICAgICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQsIGZvbyBib3VuZCBsb2NhbGx5CisgICBpbXBvcnQgZm9vLmJhci5iYXogYXMgZmJiICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBmYmIKKyAgIGZyb20gZm9vLmJhciBpbXBvcnQgYmF6ICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGJhegorICAgZnJvbSBmb28gaW1wb3J0IGF0dHIgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGZvby5hdHRyIGJvdW5kIGFzIGF0dHIKKworSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyIChgYCcqJ2BgKSwgYWxsIHB1YmxpYworbmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGUKK3doZXJlIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgb2NjdXJzLgogCiAuLiBpbmRleDo6IHNpbmdsZTogX19hbGxfXyAob3B0aW9uYWwgbW9kdWxlIGF0dHJpYnV0ZSkKIAogVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlIG1vZHVsZSdzCi1uYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0IG11c3QgYmUgYSBzZXF1ZW5jZSBvZgotc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0IG1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbgotYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgYGBfX2FsbF9fYGAKLWlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZSdzCi1uYW1lc3BhY2Ugd2hpY2ggZG8gbm90IGJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKGBgJ18nYGApLgotYGBfX2FsbF9fYGAgc2hvdWxkIGNvbnRhaW4gdGhlIGVudGlyZSBwdWJsaWMgQVBJLiBJdCBpcyBpbnRlbmRlZCB0byBhdm9pZAotYWNjaWRlbnRhbGx5IGV4cG9ydGluZyBpdGVtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIChzdWNoIGFzIGxpYnJhcnkKLW1vZHVsZXMgd2hpY2ggd2VyZSBpbXBvcnRlZCBhbmQgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZSkuCituYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0IG11c3QgYmUgYSBzZXF1ZW5jZQorb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0IG1vZHVsZS4gIFRoZSBuYW1lcworZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYKK2BgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQKK2luIHRoZSBtb2R1bGUncyBuYW1lc3BhY2Ugd2hpY2ggZG8gbm90IGJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIKKyhgYCdfJ2BgKS4gIGBgX19hbGxfX2BgIHNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQKK3RvIGF2b2lkIGFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcworbGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLgorCitUaGUgOmtleXdvcmQ6YGZyb21gIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS4KK0F0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYQorOmV4YzpgU3ludGF4RXJyb3JgLgorCisuLiBpbmRleDo6IHNpbmdsZTogX19hbGxfXyAob3B0aW9uYWwgbW9kdWxlIGF0dHJpYnV0ZSkKKworVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlIG1vZHVsZSdzCituYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0IG11c3QgYmUgYSBzZXF1ZW5jZQorb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0IG1vZHVsZS4gIFRoZSBuYW1lcworZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYKK2BgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQKK2luIHRoZSBtb2R1bGUncyBuYW1lc3BhY2Ugd2hpY2ggZG8gbm90IGJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIKKyhgYCdfJ2BgKS4gIGBgX19hbGxfX2BgIHNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQKK3RvIGF2b2lkIGFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcworbGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLgogCiBUaGUgOmtleXdvcmQ6YGZyb21gIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS4gIFRoZSB3aWxkCiBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSBgYGltcG9ydCAqYGAgLS0tIGlzIG9ubHkgYWxsb3dlZCBhdCB0aGUgbW9kdWxlIGxldmVsLgpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9pbmRleHNpZGViYXIuaHRtbCBiL0RvYy90b29scy9zcGhpbnhleHQvaW5kZXhzaWRlYmFyLmh0bWwKaW5kZXggNzQ4Y2I5MS4uMjAxODAxMSAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9pbmRleHNpZGViYXIuaHRtbAorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L2luZGV4c2lkZWJhci5odG1sCkBAIC0zLDcgKzMsNyBAQAogCSAgICA8aDM+RG9jcyBmb3Igb3RoZXIgdmVyc2lvbnM8L2gzPgogCSAgICA8dWw+CiAJICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMi43LyI+UHl0aG9uIDIuNyAoc3RhYmxlKTwvYT48L2xpPgotCSAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy8iPlB5dGhvbiAzLjMgKGluIGRldmVsb3BtZW50KTwvYT48L2xpPgorCSAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMi8iPlB5dGhvbiAzLjIgKHN0YWJsZSk8L2E+PC9saT4KICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb2MvdmVyc2lvbnMvIj5PbGQgdmVyc2lvbnM8L2E+PC9saT4KICAgICAgICAgICAgIDwvdWw+CiAKZGlmZiAtLWdpdCBhL0RvYy90b29scy9zcGhpbnhleHQvcGF0Y2hsZXZlbC5weSBiL0RvYy90b29scy9zcGhpbnhleHQvcGF0Y2hsZXZlbC5weQppbmRleCBiMDcwZDYwLi5iY2EyZWI4IDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3BhdGNobGV2ZWwucHkKKysrIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9wYXRjaGxldmVsLnB5CkBAIC0zNCw4ICszNCw3IEBACiAKICAgICByZWxlYXNlID0gdmVyc2lvbiA9ICclcy4lcycgJSAoZFsnUFlfTUFKT1JfVkVSU0lPTiddLCBkWydQWV9NSU5PUl9WRVJTSU9OJ10pCiAgICAgbWljcm8gPSBpbnQoZFsnUFlfTUlDUk9fVkVSU0lPTiddKQotICAgIGlmIG1pY3JvICE9IDA6Ci0gICAgICAgIHJlbGVhc2UgKz0gJy4nICsgc3RyKG1pY3JvKQorICAgIHJlbGVhc2UgKz0gJy4nICsgc3RyKG1pY3JvKQogCiAgICAgbGV2ZWwgPSBkWydQWV9SRUxFQVNFX0xFVkVMJ10KICAgICBzdWZmaXhlcyA9IHsKQEAgLTUxLDggKzUwLDcgQEAKIGRlZiBnZXRfc3lzX3ZlcnNpb25faW5mbygpOgogICAgIG1ham9yLCBtaW5vciwgbWljcm8sIGxldmVsLCBzZXJpYWwgPSBzeXMudmVyc2lvbl9pbmZvCiAgICAgcmVsZWFzZSA9IHZlcnNpb24gPSAnJXMuJXMnICUgKG1ham9yLCBtaW5vcikKLSAgICBpZiBtaWNybzoKLSAgICAgICAgcmVsZWFzZSArPSAnLiVzJyAlIG1pY3JvCisgICAgcmVsZWFzZSArPSAnLiVzJyAlIG1pY3JvCiAgICAgaWYgbGV2ZWwgIT0gJ2ZpbmFsJzoKICAgICAgICAgcmVsZWFzZSArPSAnJXMlcycgJSAobGV2ZWxbMF0sIHNlcmlhbCkKICAgICByZXR1cm4gdmVyc2lvbiwgcmVsZWFzZQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9weXNwZWNpZmljLnB5IGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9weXNwZWNpZmljLnB5CmluZGV4IDg5YmI4NmYuLmJmZjEwYWIgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvcHlzcGVjaWZpYy5weQorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3B5c3BlY2lmaWMucHkKQEAgLTUsMTIgKzUsMTIgQEAKIAogICAgIFNwaGlueCBleHRlbnNpb24gd2l0aCBQeXRob24gZG9jLXNwZWNpZmljIG1hcmt1cC4KIAotICAgIDpjb3B5cmlnaHQ6IDIwMDgsIDIwMDksIDIwMTAgYnkgR2VvcmcgQnJhbmRsLgorICAgIDpjb3B5cmlnaHQ6IDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgYnkgR2VvcmcgQnJhbmRsLgogICAgIDpsaWNlbnNlOiBQeXRob24gbGljZW5zZS4KICIiIgogCiBJU1NVRV9VUkkgPSAnaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZSVzJwotU09VUkNFX1VSSSA9ICdodHRwOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvMy4yLyVzJworU09VUkNFX1VSSSA9ICdodHRwOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvZGVmYXVsdC8lcycKIAogZnJvbSBkb2N1dGlscyBpbXBvcnQgbm9kZXMsIHV0aWxzCiBmcm9tIHNwaGlueC51dGlsLm5vZGVzIGltcG9ydCBzcGxpdF9leHBsaWNpdF90aXRsZQpAQCAtMjAxLDExICsyMDEsMTIgQEAKICAgICAgICAgICAgIGRvY3VtZW50LmFwcGVuZChkb2N0cmVlLmlkc1tsYWJlbGlkXSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gU3RyaW5nT3V0cHV0KGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgICAgICB3cml0ZXIud3JpdGUoZG9jdW1lbnQsIGRlc3RpbmF0aW9uKQotICAgICAgICAgICAgc2VsZi50b3BpY3NbbGFiZWxdID0gc3RyKHdyaXRlci5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLnRvcGljc1tsYWJlbF0gPSB3cml0ZXIub3V0cHV0LmVuY29kZSgndXRmLTgnKQogCiAgICAgZGVmIGZpbmlzaChzZWxmKToKICAgICAgICAgZiA9IG9wZW4ocGF0aC5qb2luKHNlbGYub3V0ZGlyLCAndG9waWNzLnB5JyksICd3JykKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgZi53cml0ZSgnIyAtKi0gY29kaW5nOiB1dGYtOCAtKi1cbicpCiAgICAgICAgICAgICBmLndyaXRlKCcjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uICVzXG4nICUgYXNjdGltZSgpKQogICAgICAgICAgICAgZi53cml0ZSgndG9waWNzID0gJyArIHBmb3JtYXQoc2VsZi50b3BpY3MpICsgJ1xuJykKICAgICAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0RvYy90b29scy9zcGhpbnhleHQvc3VzcC1pZ25vcmVkLmNzdiBiL0RvYy90b29scy9zcGhpbnhleHQvc3VzcC1pZ25vcmVkLmNzdgppbmRleCA1MDc2YWVkLi43MzE3Y2EyIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3N1c3AtaWdub3JlZC5jc3YKKysrIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9zdXNwLWlnbm9yZWQuY3N2CkBAIC0xLDE2ICsxLDI0IEBACiBjLWFwaS9hcmcsLDpyZWYsIlB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJPfE86cmVmIiIsICZvYmplY3QsICZjYWxsYmFjaykiCiBjLWFwaS9saXN0LCw6aGlnaCxsaXN0W2xvdzpoaWdoXQogYy1hcGkvbGlzdCwsOmhpZ2gsbGlzdFtsb3c6aGlnaF0gPSBpdGVtbGlzdAorYy1hcGkvc2VxdWVuY2UsLDppMixkZWwgb1tpMTppMl0KIGMtYXBpL3NlcXVlbmNlLCw6aTIsb1tpMTppMl0KIGMtYXBpL3NlcXVlbmNlLCw6aTIsb1tpMTppMl0gPSB2Ci1jLWFwaS9zZXF1ZW5jZSwsOmkyLGRlbCBvW2kxOmkyXQogYy1hcGkvdW5pY29kZSwsOmVuZCxzdHJbc3RhcnQ6ZW5kXQorYy1hcGkvdW5pY29kZSwsOnN0YXJ0LHVuaWNvZGVbc3RhcnQ6c3RhcnQrbGVuZ3RoXQorZGlzdHV0aWxzL2V4YW1wbGVzLDI2NyxgLFRoaXMgaXMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBgYGZvb2JhcmBgIHBhY2thZ2UuCiBkaXN0dXRpbHMvc2V0dXBzY3JpcHQsLDo6LAogZXh0ZW5kaW5nL2VtYmVkZGluZywsOm51bWFyZ3MsImlmKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiOm51bWFyZ3MiIikpIgotZXh0ZW5kaW5nL2V4dGVuZGluZywsOnNldCwiaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJPOnNldF9jYWxsYmFjayIiLCAmdGVtcCkpIHsiCiBleHRlbmRpbmcvZXh0ZW5kaW5nLCw6bXlmdW5jdGlvbiwiUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIkQ6bXlmdW5jdGlvbiIiLCAmYyk7IgorZXh0ZW5kaW5nL2V4dGVuZGluZywsOnNldCwiaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJPOnNldF9jYWxsYmFjayIiLCAmdGVtcCkpIHsiCiBleHRlbmRpbmcvbmV3dHlwZXMsLDpjYWxsLCJpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJzc3M6Y2FsbCIiLCAmYXJnMSwgJmFyZzIsICZhcmczKSkgeyIKIGV4dGVuZGluZy93aW5kb3dzLCw6aW5pdHNwYW0sL2V4cG9ydDppbml0c3BhbQorZmFxL3Byb2dyYW1taW5nLCw6Y2hyLCI+PTQuMCkgb3IgMStmKHhjLHljLHgqeC15KnkreGMsMi4wKngqeSt5YyxrLTEsZik6Zih4Yyx5Yyx4LHksayxmKTpjaHIoIgorZmFxL3Byb2dyYW1taW5nLCw6Oixmb3IgeCBpbiBzZXF1ZW5jZVs6Oi0xXToKK2ZhcS9wcm9ncmFtbWluZywsOnJlZHVjZSwicHJpbnQoKGxhbWJkYSBSdSxSbyxJdSxJbyxJTSxTeCxTeTpyZWR1Y2UobGFtYmRhIHgseTp4K3ksbWFwKGxhbWJkYSB5LCIKK2ZhcS9wcm9ncmFtbWluZywsOnJlZHVjZSwiU3g9U3gsU3k9U3k6cmVkdWNlKGxhbWJkYSB4LHk6eCt5LG1hcChsYW1iZGEgeCx4Yz1SdSx5Yz15YyxSdT1SdSxSbz1SbywiCitmYXEvd2luZG93cywyMjksOkVPRixAc2V0bG9jYWwgZW5hYmxlZXh0ZW5zaW9ucyAmIHB5dGhvbiAteCAlfmYwICUqICYgZ290byA6RU9GCitmYXEvd2luZG93cywzOTMsOlJFRywucHkgOlJFR19TWjogYzpcPHBhdGggdG8gcHl0aG9uPlxweXRob24uZXhlIC11ICVzICVzCiBob3d0by9jcG9ydGluZywsOmFkZCwiaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiaWk6YWRkX2ludHMiIiwgJm9uZSwgJnR3bykpIgogaG93dG8vY3BvcnRpbmcsLDplbmNvZGUsImlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIk86ZW5jb2RlX29iamVjdCIiLCAmbXlvYmopKSIKIGhvd3RvL2Nwb3J0aW5nLCw6c2F5LCJpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJVOnNheV9oZWxsbyIiLCAmbmFtZSkpIgpAQCAtMjIsMTkgKzMwLDkxIEBACiBob3d0by9jdXJzZXMsLDpyZWQsIlRoZXkgYXJlOiAwOmJsYWNrLCAxOnJlZCwgMjpncmVlbiwgMzp5ZWxsb3csIDQ6Ymx1ZSwgNTptYWdlbnRhLCA2OmN5YW4sIGFuZCIKIGhvd3RvL2N1cnNlcywsOndoaXRlLCI3OndoaXRlLiIKIGhvd3RvL2N1cnNlcywsOnllbGxvdywiVGhleSBhcmU6IDA6YmxhY2ssIDE6cmVkLCAyOmdyZWVuLCAzOnllbGxvdywgNDpibHVlLCA1Om1hZ2VudGEsIDY6Y3lhbiwgYW5kIgoraG93dG8vaXBhZGRyZXNzLCw6REI4LD4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpEQjg6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6REI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCxJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCc6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCxJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCxJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi8xMjgnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi8xMjgnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjEvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjoxLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCxJUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCw+Pj4gYWRkcjYgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpkYjg6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gYWRkcjYgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpkYjg6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LD4+PiBob3N0NiA9IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosPj4+IGhvc3Q2ID0gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LD4+PiBuZXQ2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosPj4+IG5ldDYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LD4+PiBuZXQ2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosPj4+IG5ldDYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZmZmZixJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6OicpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCdmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjo6JykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJzo6ZmZmZjpmZmZmJykKK2hvd3RvL2lwYWRkcmVzcywsOmZmZmYsSVB2NkFkZHJlc3MoJzo6ZmZmZjpmZmZmJykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJzIwMDE6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTo6ZmZmZjpmZmZmJykKK2hvd3RvL2lwYWRkcmVzcywsOmZmZmYsSVB2NkFkZHJlc3MoJzIwMDE6OmZmZmY6ZmZmZicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsJzIwMDE6ZGI4OjonCitob3d0by9pcGFkZHJlc3MsLDo6LCcyMDAxOmRiODo6JworaG93dG8vaXBhZGRyZXNzLCw6ZGI4LCcyMDAxOmRiODo6Lzk2JworaG93dG8vaXBhZGRyZXNzLCw6OiwnMjAwMTpkYjg6Oi85NicKK2hvd3RvL2xvZ2dpbmcsLDpBbmQsIldBUk5JTkc6QW5kIHRoaXMsIHRvbyIKK2hvd3RvL2xvZ2dpbmcsLDpBbmQsIldBUk5JTkc6cm9vdDpBbmQgdGhpcywgdG9vIgoraG93dG8vbG9nZ2luZywsOkRvaW5nLElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKK2hvd3RvL2xvZ2dpbmcsLDpGaW5pc2hlZCxJTkZPOnJvb3Q6RmluaXNoZWQKK2hvd3RvL2xvZ2dpbmcsLDpsb2dnZXIsc2V2ZXJpdHk6bG9nZ2VyIG5hbWU6bWVzc2FnZQoraG93dG8vbG9nZ2luZywsOkxvb2ssV0FSTklORzpyb290Okxvb2sgYmVmb3JlIHlvdSBsZWFwIQoraG93dG8vbG9nZ2luZywsOm1lc3NhZ2Usc2V2ZXJpdHk6bG9nZ2VyIG5hbWU6bWVzc2FnZQoraG93dG8vbG9nZ2luZywsOnJvb3QsREVCVUc6cm9vdDpUaGlzIG1lc3NhZ2Ugc2hvdWxkIGdvIHRvIHRoZSBsb2cgZmlsZQoraG93dG8vbG9nZ2luZywsOnJvb3QsSU5GTzpyb290OkRvaW5nIHNvbWV0aGluZworaG93dG8vbG9nZ2luZywsOnJvb3QsSU5GTzpyb290OkZpbmlzaGVkCitob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6U28gc2hvdWxkIHRoaXMKK2hvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpTdGFydGVkCitob3d0by9sb2dnaW5nLCw6cm9vdCwiV0FSTklORzpyb290OkFuZCB0aGlzLCB0b28iCitob3d0by9sb2dnaW5nLCw6cm9vdCxXQVJOSU5HOnJvb3Q6TG9vayBiZWZvcmUgeW91IGxlYXAhCitob3d0by9sb2dnaW5nLCw6cm9vdCxXQVJOSU5HOnJvb3Q6V2F0Y2ggb3V0IQoraG93dG8vbG9nZ2luZywsOlNvLElORk86cm9vdDpTbyBzaG91bGQgdGhpcworaG93dG8vbG9nZ2luZywsOlNvLElORk86U28gc2hvdWxkIHRoaXMKK2hvd3RvL2xvZ2dpbmcsLDpTdGFydGVkLElORk86cm9vdDpTdGFydGVkCitob3d0by9sb2dnaW5nLCw6VGhpcyxERUJVRzpyb290OlRoaXMgbWVzc2FnZSBzaG91bGQgZ28gdG8gdGhlIGxvZyBmaWxlCitob3d0by9sb2dnaW5nLCw6VGhpcyxERUJVRzpUaGlzIG1lc3NhZ2Ugc2hvdWxkIGFwcGVhciBvbiB0aGUgY29uc29sZQoraG93dG8vbG9nZ2luZywsOldhdGNoLFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCitob3d0by9weXBvcnRpbmcsNzUsOjosIyBtYWtlIHN1cmUgdG8gdXNlIDo6IFB5dGhvbiAqYW5kKiA6OiBQeXRob24gOjogMyBzbworaG93dG8vcHlwb3J0aW5nLDc1LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uJywiCitob3d0by9weXBvcnRpbmcsNzUsOjosJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzJwogaG93dG8vcmVnZXgsLDo6LAogaG93dG8vcmVnZXgsLDpmb28sKD86Zm9vKQogaG93dG8vdXJsbGliMiwsOmV4YW1wbGUsImZvciBleGFtcGxlICIiam9lQHBhc3N3b3JkOmV4YW1wbGUuY29tIiIiCiBob3d0by93ZWJzZXJ2ZXJzLCwuLiBpbWFnZTosLi4gaW1hZ2U6OiBodHRwLnBuZwogbGlicmFyeS9hdWRpb29wLCw6aXBvcywiIyBmYWN0b3IgPSBhdWRpb29wLmZpbmRmYWN0b3IoaW5fdGVzdFtpcG9zKjI6aXBvcyoyK2xlbihvdXRfdGVzdCldLCIKK2xpYnJhcnkvYmlzZWN0LDMyLDpoaSxhbGwodmFsID49IHggZm9yIHZhbCBpbiBhW2k6aGldKQorbGlicmFyeS9iaXNlY3QsNDIsOmhpLGFsbCh2YWwgPiB4IGZvciB2YWwgaW4gYVtpOmhpXSkKK2xpYnJhcnkvY29uZmlncGFyc2VyLCw6aG9tZSxteV9kaXI6ICR7Q29tbW9uOmhvbWVfZGlyfS90d29zaGVkcworbGlicmFyeS9jb25maWdwYXJzZXIsLDpvcHRpb24sJHtzZWN0aW9uOm9wdGlvbn0KK2xpYnJhcnkvY29uZmlncGFyc2VyLCw6cGF0aCxweXRob25fZGlyOiAke0ZyYW1ld29ya3M6cGF0aH0vUHl0aG9uL1ZlcnNpb25zLyR7RnJhbWV3b3JrczpQeXRob259CitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsOlB5dGhvbixweXRob25fZGlyOiAke0ZyYW1ld29ya3M6cGF0aH0vUHl0aG9uL1ZlcnNpb25zLyR7RnJhbWV3b3JrczpQeXRob259CitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFNldCB0aGUgb3B0aW9uYWwgYHJhd2AgYXJndW1lbnQgb2YgZ2V0KCkgdG8gVHJ1ZSBpZiB5b3Ugd2lzaCB0byBkaXNhYmxlCitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsOnN5c3RlbSxwYXRoOiAke0NvbW1vbjpzeXN0ZW1fZGlyfS9MaWJyYXJ5L0ZyYW1ld29ya3MvCitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFRoZSBvcHRpb25hbCBgZmFsbGJhY2tgIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgYSBmYWxsYmFjayB2YWx1ZQorbGlicmFyeS9jb25maWdwYXJzZXIsLGAsIyBUaGUgb3B0aW9uYWwgYHZhcnNgIGFyZ3VtZW50IGlzIGEgZGljdCB3aXRoIG1lbWJlcnMgdGhhdCB3aWxsIHRha2UKIGxpYnJhcnkvZGF0ZXRpbWUsLDpNTSwKIGxpYnJhcnkvZGF0ZXRpbWUsLDpTUywKIGxpYnJhcnkvZGVjaW1hbCwsOm9wdGlvbmFsLCJ0cmFpbG5lZzpvcHRpb25hbCB0cmFpbGluZyBtaW51cyBpbmRpY2F0b3IiCiBsaWJyYXJ5L2RpZmZsaWIsLDphaGksYVthbG86YWhpXQogbGlicmFyeS9kaWZmbGliLCw6YmhpLGJbYmxvOmJoaV0KK2xpYnJhcnkvZGlmZmxpYiwsOmkxLAogbGlicmFyeS9kaWZmbGliLCw6aTIsCiBsaWJyYXJ5L2RpZmZsaWIsLDpqMiwKLWxpYnJhcnkvZGlmZmxpYiwsOmkxLAogbGlicmFyeS9kaXMsLDpUT1MsCiBsaWJyYXJ5L2RpcywsYCxUT1MgPSBgVE9TYAogbGlicmFyeS9kb2N0ZXN0LCxgLGBgZmFjdG9yaWFsYGAgZnJvbSB0aGUgYGBleGFtcGxlYGAgbW9kdWxlOgpAQCAtNDQsOTYgKzEyNCwxODcgQEAKIGxpYnJhcnkvZnVuY3Rpb25zLCw6c3RvcCwiYVtzdGFydDpzdG9wLCBpXSIKIGxpYnJhcnkvZnVuY3Rpb25zLCw6c3RvcCxhW3N0YXJ0OnN0b3A6c3RlcF0KIGxpYnJhcnkvaG90c2hvdCwsOmxpbmVubywibmNhbGxzICB0b3R0aW1lICBwZXJjYWxsICBjdW10aW1lICBwZXJjYWxsIGZpbGVuYW1lOmxpbmVubyhmdW5jdGlvbikiCitsaWJyYXJ5L2h0dHAuY2xpZW50LDUyLDpwb3J0LGhvc3Q6cG9ydAorbGlicmFyeS9odHRwLmNvb2tpZXMsLGAsISMkJSYnKistLl5fYHx+OgogbGlicmFyeS9odHRwbGliLCw6cG9ydCxob3N0OnBvcnQKLWxpYnJhcnkvaW1hcGxpYiwsOk1NLCIiIkRELU1tbS1ZWVlZIEhIOk1NOlNTICtISE1NIiIiCi1saWJyYXJ5L2ltYXBsaWIsLDpTUywiIiJERC1NbW0tWVlZWSBISDpNTTpTUyArSEhNTSIiIgotbGlicmFyeS9pdGVydG9vbHMsLDpzdG9wLGVsZW1lbnRzIGZyb20gc2VxW3N0YXJ0OnN0b3A6c3RlcF0KK2xpYnJhcnkvaW1hcGxpYiwsOk1NLCIiIkRELU1tbS1ZWVlZIEhIOk1NOlNTIgorbGlicmFyeS9pbWFwbGliLCw6U1MsIiIiREQtTW1tLVlZWVkgSEg6TU06U1MiCitsaWJyYXJ5L2luc3BlY3QsLDppbnQsIj4+PiBkZWYgZm9vKGEsICosIGI6aW50LCAqKmt3YXJncyk6IgorbGlicmFyeS9pbnNwZWN0LCw6aW50LCInKGEsICosIGI6aW50LCAqKmt3YXJncyknIgorbGlicmFyeS9pbnNwZWN0LCw6aW50LCdiOmludCcKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpkYjg6OicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCw+Pj4gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCxJUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEwMDAvOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpLm5ldHdvcmsKK2xpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxMDAwLzk2JykubmV0d29yaworbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKS5uZXRtYXNrCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpLm5ldG1hc2sKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZmZmZixJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6OicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOjonKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsIj4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzk2Jywgc3RyaWN0PUZhbHNlKSIKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OiwiPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvOTYnLCBzdHJpY3Q9RmFsc2UpIgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LCIiIjo6YWJjOjc6ZGVmIiIiCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRlZiwiIiI6OmFiYzo3OmRlZiIiIgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDo6RkZGRi85NgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDI6Oi8xNgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDE6Oi8zMgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OiwnOjoxJworbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBpbnQoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZmYwMCxmZmZmOmZmMDA6OgorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjAwLDIwMDE6ZGIwMDo6MC8yNAorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDE6ZGIwMDo6MC8yNAorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjAwLDIwMDE6ZGIwMDo6MC9mZmZmOmZmMDA6OgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDE6ZGIwMDo6MC9mZmZmOmZmMDA6OgorbGlicmFyeS9pcGFkZHJlc3MsLDpmZjAwLDIwMDE6ZGIwMDo6MC9mZmZmOmZmMDA6OgogbGlicmFyeS9pdGVydG9vbHMsLDpzdGVwLGVsZW1lbnRzIGZyb20gc2VxW3N0YXJ0OnN0b3A6c3RlcF0KK2xpYnJhcnkvaXRlcnRvb2xzLCw6c3RvcCxlbGVtZW50cyBmcm9tIHNlcVtzdGFydDpzdG9wOnN0ZXBdCiBsaWJyYXJ5L2xpbmVjYWNoZSwsOnN5cywic3lzOng6MzozOnN5czovZGV2Oi9iaW4vc2giCiBsaWJyYXJ5L2xvZ2dpbmcsLDpBbmQsCitsaWJyYXJ5L2xvZ2dpbmcsLDpEb2luZyxJTkZPOnJvb3Q6RG9pbmcgc29tZXRoaW5nCitsaWJyYXJ5L2xvZ2dpbmcsLDpGaW5pc2hlZCxJTkZPOnJvb3Q6RmluaXNoZWQKK2xpYnJhcnkvbG9nZ2luZywsOmxvZ2dlcixzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCitsaWJyYXJ5L2xvZ2dpbmcsLDpMb29rLFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKK2xpYnJhcnkvbG9nZ2luZywsOm1lc3NhZ2Usc2V2ZXJpdHk6bG9nZ2VyIG5hbWU6bWVzc2FnZQogbGlicmFyeS9sb2dnaW5nLCw6cGFja2FnZTEsCiBsaWJyYXJ5L2xvZ2dpbmcsLDpwYWNrYWdlMiwKLWxpYnJhcnkvbG9nZ2luZywsOnJvb3QsCi1saWJyYXJ5L2xvZ2dpbmcsLDpUaGlzLAogbGlicmFyeS9sb2dnaW5nLCw6cG9ydCxob3N0OnBvcnQKK2xpYnJhcnkvbG9nZ2luZywsOnJvb3QsCitsaWJyYXJ5L2xvZ2dpbmcsLDpTbyxJTkZPOnJvb3Q6U28gc2hvdWxkIHRoaXMKK2xpYnJhcnkvbG9nZ2luZywsOlNvLElORk86U28gc2hvdWxkIHRoaXMKK2xpYnJhcnkvbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKK2xpYnJhcnkvbG9nZ2luZywsOlRoaXMsCitsaWJyYXJ5L2xvZ2dpbmcsLDpXYXRjaCxXQVJOSU5HOnJvb3Q6V2F0Y2ggb3V0IQorbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLCw6cG9ydCxob3N0OnBvcnQKIGxpYnJhcnkvbW1hcCwsOmkyLG9ialtpMTppMl0KLWxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCw6cXVldWUsIj4+PiBRdWV1ZU1hbmFnZXIucmVnaXN0ZXIoJ2dldF9xdWV1ZScsIGNhbGxhYmxlPWxhbWJkYTpxdWV1ZSkiCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwiPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0aXRlbV9fJywgKDIwLCkpICAgICAjIGVxdWl2IHRvIGBsWzIwXWAiCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwiPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0c2xpY2VfXycsICgyLCA3KSkgICAjIGVxdWl2IHRvIGBsWzI6N11gIgotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBgQmFzZU1hbmFnZXJgLgotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBgUG9vbC5pbWFwKClgICh3aGljaCB3aWxsIHNhdmUgb24gdGhlIGFtb3VudCBvZiBjb2RlIG5lZWRlZCBhbnl3YXkpLgorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBBZGQgbW9yZSB0YXNrcyB1c2luZyBgcHV0KClgCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIEEgdGVzdCBmaWxlIGZvciB0aGUgYG11bHRpcHJvY2Vzc2luZ2AgcGFja2FnZQogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBBIHRlc3Qgb2YgYG11bHRpcHJvY2Vzc2luZy5Qb29sYCBjbGFzcwotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBBZGQgbW9yZSB0YXNrcyB1c2luZyBgcHV0KClgCitsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIGBCYXNlTWFuYWdlcmAuCitsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgQ2x1c3RlcmAgaXMgYSBzdWJjbGFzcyBvZiBgU3luY01hbmFnZXJgIHNvIGl0IGFsbG93cyBjcmVhdGlvbiBvZgogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBjcmVhdGUgc2VydmVyIGZvciBhIGBIb3N0TWFuYWdlcmAgb2JqZWN0CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIERlcGVuZHMgb24gYG11bHRpcHJvY2Vzc2luZ2AgcGFja2FnZSAtLSB0ZXN0ZWQgd2l0aCBgcHJvY2Vzc2luZy0wLjYwYAorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsYGhvc3RuYW1lYCBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgaG9zdC4gIElmIGhvc3RuYW1lIGlzIG5vdAogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBpbiB0aGUgb3JpZ2luYWwgb3JkZXIgdGhlbiBjb25zaWRlciB1c2luZyBgUG9vbC5tYXAoKWAgb3IKK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoMjAsKSkgICAgICMgZXF1aXYgdG8gYGxbMjBdYCIKK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRzbGljZV9fJywgKDIsIDcpKSAgICMgZXF1aXYgdG8gYGxbMjo3XWAiCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIE5vdCBzdXJlIGlmIHdlIHNob3VsZCBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gYHNvY2tldC5hY2NlcHQoKWAgbWV0aG9kIGJ5CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIG9iamVjdC4gIChXZSBpbXBvcnQgYG11bHRpcHJvY2Vzc2luZy5yZWR1Y3Rpb25gIHRvIGVuYWJsZSB0aGlzIHBpY2tsaW5nLikKK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgYFBvb2wuaW1hcCgpYCAod2hpY2ggd2lsbCBzYXZlIG9uIHRoZSBhbW91bnQgb2YgY29kZSBuZWVkZWQgYW55d2F5KS4KK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCw6cXVldWUsIj4+PiBRdWV1ZU1hbmFnZXIucmVnaXN0ZXIoJ2dldF9xdWV1ZScsIGNhbGxhYmxlPWxhbWJkYTpxdWV1ZSkiCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIHJlZ2lzdGVyIHRoZSBGb28gY2xhc3M7IG1ha2UgYGYoKWAgYW5kIGBnKClgIGFjY2Vzc2libGUgdmlhIHByb3h5CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIHJlZ2lzdGVyIHRoZSBGb28gY2xhc3M7IG1ha2UgYGcoKWAgYW5kIGBfaCgpYCBhY2Nlc3NpYmxlIHZpYSBwcm94eQogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyByZWdpc3RlciB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGJhejsgdXNlIGBHZW5lcmF0b3JQcm94eWAgdG8gbWFrZSBwcm94aWVzCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgQ2x1c3RlcmAgaXMgYSBzdWJjbGFzcyBvZiBgU3luY01hbmFnZXJgIHNvIGl0IGFsbG93cyBjcmVhdGlvbiBvZgotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsYGhvc3RuYW1lYCBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgaG9zdC4gIElmIGhvc3RuYW1lIGlzIG5vdAogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsYHNsb3RzYCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBzbG90cyBmb3IgcHJvY2Vzc2VzIG9uCitsaWJyYXJ5L25udHBsaWIsLDpieXRlcyw6Ynl0ZXMKK2xpYnJhcnkvbm50cGxpYiwsOmJ5dGVzLCJbJ3hyZWYnLCAnZnJvbScsICc6bGluZXMnLCAnOmJ5dGVzJywgJ3JlZmVyZW5jZXMnLCAnZGF0ZScsICdtZXNzYWdlLWlkJywgJ3N1YmplY3QnXSIKK2xpYnJhcnkvbm50cGxpYiwsOmxpbmVzLDpsaW5lcworbGlicmFyeS9ubnRwbGliLCw6bGluZXMsIlsneHJlZicsICdmcm9tJywgJzpsaW5lcycsICc6Ynl0ZXMnLCAncmVmZXJlbmNlcycsICdkYXRlJywgJ21lc3NhZ2UtaWQnLCAnc3ViamVjdCddIgogbGlicmFyeS9vcHRwYXJzZSwsOmxlbiwiZGVsIHBhcnNlci5yYXJnc1s6bGVuKHZhbHVlKV0iCiBsaWJyYXJ5L29zLnBhdGgsLDpmb28sYzpmb28KIGxpYnJhcnkvcGFyc2VyLCxgLCIiIk1ha2UgYSBmdW5jdGlvbiB0aGF0IHJhaXNlcyBhbiBhcmd1bWVudCB0byB0aGUgZXhwb25lbnQgYGV4cGAuIiIiCitsaWJyYXJ5L3BkYiwsOmxpbmVubyxmaWxlbmFtZTpsaW5lbm8KK2xpYnJhcnkvcGRiLCw6bGluZW5vLFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV0KK2xpYnJhcnkvcGlja2xlLCw6bWVtb3J5LCJjb25uID0gc3FsaXRlMy5jb25uZWN0KCIiOm1lbW9yeToiIikiCiBsaWJyYXJ5L3Bvc2l4LCxgLCJDRkxBR1M9IiJgZ2V0Y29uZiBMRlNfQ0ZMQUdTYCIiIE9QVD0iIi1nIC1PMiAkQ0ZMQUdTIiIiCi1saWJyYXJ5L3Byb2ZpbGUsLDpsaW5lbm8sbmNhbGxzICB0b3R0aW1lICBwZXJjYWxsICBjdW10aW1lICBwZXJjYWxsIGZpbGVuYW1lOmxpbmVubyhmdW5jdGlvbikKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ2NsYXNzaWZpZXJzJzogWydEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0ludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0xpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBMaWNlbnNlJywiCitsaWJyYXJ5L3BwcmludCwyMDksOjosIidOYXR1cmFsIExhbmd1YWdlIDo6IEVuZ2xpc2gnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ09wZXJhdGluZyBTeXN0ZW0gOjogT1MgSW5kZXBlbmRlbnQnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbicsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDInLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjYnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcycsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzIDo6IFB5dGhvbiBNb2R1bGVzJ10sIgogbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLGZpbGVuYW1lOmxpbmVubyhmdW5jdGlvbikKK2xpYnJhcnkvcHJvZmlsZSwsOmxpbmVubyxuY2FsbHMgIHRvdHRpbWUgIHBlcmNhbGwgIGN1bXRpbWUgIHBlcmNhbGwgZmlsZW5hbWU6bGluZW5vKGZ1bmN0aW9uKQorbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLCIoc29ydCBieSBmaWxlbmFtZTpsaW5lbm8pLCIKIGxpYnJhcnkvcHlleHBhdCwsOmVsZW0xLDxweTplbGVtMSAvPgogbGlicmFyeS9weWV4cGF0LCw6cHksInhtbG5zOnB5ID0gIiJodHRwOi8vd3d3LnB5dGhvbi5vcmcvbnMvIiI+IgogbGlicmFyeS9yZXByLCxgLCJyZXR1cm4gYG9iamAiCiBsaWJyYXJ5L3NtdHBsaWIsLDpwb3J0LCJhcyB3ZWxsIGFzIGEgcmVndWxhciBob3N0OnBvcnQgc2VydmVyLiIKK2xpYnJhcnkvc210cGxpYiwsOnBvcnQsbWV0aG9kIG11c3Qgc3VwcG9ydCB0aGF0IGFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydAorbGlicmFyeS9zb2NrZXQsLDo6LCIoMTAsIDEsIDYsICcnLCAoJzIwMDE6ODg4OjIwMDA6ZDo6YTInLCA4MCwgMCwgMCkpXSIKIGxpYnJhcnkvc29ja2V0LCw6OiwnNWFlZjoyYjo6OCcKLWxpYnJhcnkvc3FsaXRlMywsOm1lbW9yeSwKK2xpYnJhcnkvc29ja2V0LCw6Y2FuLCJyZXR1cm4gKGNhbl9pZCwgY2FuX2RsYywgZGF0YVs6Y2FuX2RsY10pIgorbGlicmFyeS9zb2NrZXQsLDpsZW4sZmRzLmZyb21zdHJpbmcoY21zZ19kYXRhWzpsZW4oY21zZ19kYXRhKSAtIChsZW4oY21zZ19kYXRhKSAlIGZkcy5pdGVtc2l6ZSldKQorbGlicmFyeS9zcWxpdGUzLCw6YWdlLCJjdXIuZXhlY3V0ZSgiInNlbGVjdCAqIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIiLCB7IiJ3aG8iIjogd2hvLCAiImFnZSIiOiBhZ2V9KSIKIGxpYnJhcnkvc3FsaXRlMywsOmFnZSwic2VsZWN0IG5hbWVfbGFzdCwgYWdlIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIKLWxpYnJhcnkvc3FsaXRlMywsOndobywic2VsZWN0IG5hbWVfbGFzdCwgYWdlIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIKLWxpYnJhcnkvc3NsLCw6TXksIk9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkgW0ludGVybmV0IFdpZGdpdHMgUHR5IEx0ZF06TXkgT3JnYW5pemF0aW9uLCBJbmMuIgorbGlicmFyeS9zcWxpdGUzLCw6bWVtb3J5LAorbGlicmFyeS9zcWxpdGUzLCw6d2hvLCJjdXIuZXhlY3V0ZSgiInNlbGVjdCAqIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIiLCB7IiJ3aG8iIjogd2hvLCAiImFnZSIiOiBhZ2V9KSIKIGxpYnJhcnkvc3NsLCw6TXksIk9yZ2FuaXphdGlvbmFsIFVuaXQgTmFtZSAoZWcsIHNlY3Rpb24pIFtdOk15IEdyb3VwIgorbGlicmFyeS9zc2wsLDpNeSwiT3JnYW5pemF0aW9uIE5hbWUgKGVnLCBjb21wYW55KSBbSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkXTpNeSBPcmdhbml6YXRpb24sIEluYy4iCiBsaWJyYXJ5L3NzbCwsOm15c2VydmVyLCJDb21tb24gTmFtZSAoZWcsIFlPVVIgbmFtZSkgW106bXlzZXJ2ZXIubXlncm91cC5teW9yZ2FuaXphdGlvbi5jb20iCiBsaWJyYXJ5L3NzbCwsOk15U3RhdGUsU3RhdGUgb3IgUHJvdmluY2UgTmFtZSAoZnVsbCBuYW1lKSBbU29tZS1TdGF0ZV06TXlTdGF0ZQogbGlicmFyeS9zc2wsLDpvcHMsRW1haWwgQWRkcmVzcyBbXTpvcHNAbXlzZXJ2ZXIubXlncm91cC5teW9yZ2FuaXphdGlvbi5jb20KIGxpYnJhcnkvc3NsLCw6U29tZSwiTG9jYWxpdHkgTmFtZSAoZWcsIGNpdHkpIFtdOlNvbWUgQ2l0eSIKIGxpYnJhcnkvc3NsLCw6VVMsQ291bnRyeSBOYW1lICgyIGxldHRlciBjb2RlKSBbQVVdOlVTCitsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gYVs6Oi0xXS50b2xpc3QoKQorbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IGFbOjoyXS50b2xpc3QoKQorbGlicmFyeS9zdGR0eXBlcywsOmVuZCxzW3N0YXJ0OmVuZF0KK2xpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBoYXNoKHZbOjotMl0pID09IGhhc2goYidhYmNlZmcnWzo6LTJdKQogbGlicmFyeS9zdGR0eXBlcywsOmxlbixzW2xlbihzKTpsZW4ocyldCi1saWJyYXJ5L3N0ZHR5cGVzLCw6bGVuLHNbbGVuKHMpOmxlbihzKV0KK2xpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiB5ID0gbVs6OjJdCitsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4geiA9IHlbOjotMl0KIGxpYnJhcnkvc3RyaW5nLCw6ZW5kLHNbc3RhcnQ6ZW5kXQotbGlicmFyeS9zdHJpbmcsLDplbmQsc1tzdGFydDplbmRdCi1saWJyYXJ5L3N1YnByb2Nlc3MsLGAsIm91dHB1dD1gbXljbWQgbXlhcmdgIgogbGlicmFyeS9zdWJwcm9jZXNzLCxgLCJvdXRwdXQ9YGRtZXNnIHwgZ3JlcCBoZGFgIgorbGlicmFyeS9zdWJwcm9jZXNzLCxgLCJvdXRwdXQ9YG15Y21kIG15YXJnYCIKK2xpYnJhcnkvdGFyZmlsZSwsOmJ6MiwKIGxpYnJhcnkvdGFyZmlsZSwsOmNvbXByZXNzaW9uLGZpbGVtb2RlWzpjb21wcmVzc2lvbl0KIGxpYnJhcnkvdGFyZmlsZSwsOmd6LAotbGlicmFyeS90YXJmaWxlLCw6YnoyLAorbGlicmFyeS90YXJmaWxlLCw6eHosJ2E6eHonCitsaWJyYXJ5L3RhcmZpbGUsLDp4eiwncjp4eicKK2xpYnJhcnkvdGFyZmlsZSwsOnh6LCd3Onh6JwogbGlicmFyeS90aW1lLCw6bW0sCiBsaWJyYXJ5L3RpbWUsLDpzcywKIGxpYnJhcnkvdHVydGxlLCw6OixFeGFtcGxlOjoKLWxpYnJhcnkvdXJsbGliLCw6cG9ydCw6cG9ydAogbGlicmFyeS91cmxsaWIyLCw6cGFzc3dvcmQsIiIiam9lOnBhc3N3b3JkQHB5dGhvbi5vcmciIiIKK2xpYnJhcnkvdXJsbGliLCw6cG9ydCw6cG9ydAorbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOmNsb3NlLENvbm5lY3Rpb246Y2xvc2UKK2xpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpsYW5nLCJ4bWxucz0iImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIiB4bWw6bGFuZz0iImVuIiIgbGFuZz0iImVuIiI+XG5cbjxoZWFkPlxuIgorbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOnBhc3N3b3JkLCIiImpvZTpwYXNzd29yZEBweXRob24ub3JnIiIiCiBsaWJyYXJ5L3V1aWQsLDp1dWlkLHVybjp1dWlkOjEyMzQ1Njc4LTEyMzQtNTY3OC0xMjM0LTU2NzgxMjM0NTY3OAotbGlicmFyeS94bWxycGNsaWIsLDpwYXNzLGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKLWxpYnJhcnkveG1scnBjbGliLCw6cGFzcyx1c2VyOnBhc3MKLWxpYnJhcnkveG1scnBjbGliLCw6cG9ydCxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCitsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwYXNzLGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKK2xpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsdXNlcjpwYXNzCitsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwb3J0LGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKK2xpY2Vuc2UsLGAsImBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyIKK2xpY2Vuc2UsLGAsIlRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIgorbGljZW5zZSwsYCwqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJQyBZT1VORyBgYEFTIElTJycgQU5ECitsaWNlbnNlLCxgLFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKK2xpY2Vuc2UsLGAsKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKIGxpY2Vuc2UsLGAsVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKIGxpY2Vuc2UsLDp6b29rbyxtYWlsdG86em9va29Aem9va28uY29tCi1saWNlbnNlLCxgLFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLXJlZmVyZW5jZS9kYXRhbW9kZWwsLDpzdGVwLGFbaTpqOnN0ZXBdCiByZWZlcmVuY2UvZGF0YW1vZGVsLCw6bWF4LAotcmVmZXJlbmNlL2V4cHJlc3Npb25zLCw6aW5kZXgseFtpbmRleDppbmRleF0KK3JlZmVyZW5jZS9kYXRhbW9kZWwsLDpzdGVwLGFbaTpqOnN0ZXBdCiByZWZlcmVuY2UvZXhwcmVzc2lvbnMsLDpkYXR1bSx7a2V5OmRhdHVtLi4ufQogcmVmZXJlbmNlL2V4cHJlc3Npb25zLCxgLGBleHByZXNzaW9ucy4uLmAKK3JlZmVyZW5jZS9leHByZXNzaW9ucywsOmluZGV4LHhbaW5kZXg6aW5kZXhdCiByZWZlcmVuY2UvZ3JhbW1hciwsOm91dHB1dCwjZGlhZ3JhbTpvdXRwdXQKIHJlZmVyZW5jZS9ncmFtbWFyLCw6cnVsZXMsI2RpYWdyYW06cnVsZXMKLXJlZmVyZW5jZS9ncmFtbWFyLCw6dG9rZW4sI2RpYWdyYW06dG9rZW4KIHJlZmVyZW5jZS9ncmFtbWFyLCxgLCdgJyB0ZXN0bGlzdDEgJ2AnCi1yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsOmZpbGVlbmNvZGluZywjIHZpbTpmaWxlZW5jb2Rpbmc9PGVuY29kaW5nLW5hbWU+CityZWZlcmVuY2UvZ3JhbW1hciwsOnRva2VuLCNkaWFncmFtOnRva2VuCiByZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsYCwiLCAgICAgICA6ICAgICAgIC4gICAgICAgYCAgICAgICA9ICAgICAgIDsiCi10dXRvcmlhbC9kYXRhc3RydWN0dXJlcywsOnZhbHVlLGtleTp2YWx1ZSBwYWlycyB3aXRoaW4gdGhlIGJyYWNlcyBhZGRzIGluaXRpYWwga2V5OnZhbHVlIHBhaXJzCityZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsYCwkICAgICAgID8gICAgICAgYAorcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMsLDpmaWxlZW5jb2RpbmcsIyB2aW06ZmlsZWVuY29kaW5nPTxlbmNvZGluZy1uYW1lPgogdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMsLDp2YWx1ZSxJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRlbGV0ZSBhIGtleTp2YWx1ZQotdHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LCJmaWVsZHMgPSBzdHJ1Y3QudW5wYWNrKCc8SUlJSEgnLCBkYXRhW3N0YXJ0OnN0YXJ0KzE2XSkiCi10dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsZXh0cmEgPSBkYXRhW3N0YXJ0OnN0YXJ0K2V4dHJhX3NpemVdCi10dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsZmlsZW5hbWUgPSBkYXRhW3N0YXJ0OnN0YXJ0K2ZpbGVuYW1lc2l6ZV0KK3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLCw6dmFsdWUsa2V5OnZhbHVlIHBhaXJzIHdpdGhpbiB0aGUgYnJhY2VzIGFkZHMgaW5pdGlhbCBrZXk6dmFsdWUgcGFpcnMKIHR1dG9yaWFsL3N0ZGxpYjIsLDpjb25maWcsImxvZ2dpbmcud2FybmluZygnV2FybmluZzpjb25maWcgZmlsZSAlcyBub3QgZm91bmQnLCAnc2VydmVyLmNvbmYnKSIKIHR1dG9yaWFsL3N0ZGxpYjIsLDpjb25maWcsV0FSTklORzpyb290Oldhcm5pbmc6Y29uZmlnIGZpbGUgc2VydmVyLmNvbmYgbm90IGZvdW5kCiB0dXRvcmlhbC9zdGRsaWIyLCw6Q3JpdGljYWwsQ1JJVElDQUw6cm9vdDpDcml0aWNhbCBlcnJvciAtLSBzaHV0dGluZyBkb3duCkBAIC0xNDEsMTUgKzMxMiwxNiBAQAogdHV0b3JpYWwvc3RkbGliMiwsOnJvb3QsQ1JJVElDQUw6cm9vdDpDcml0aWNhbCBlcnJvciAtLSBzaHV0dGluZyBkb3duCiB0dXRvcmlhbC9zdGRsaWIyLCw6cm9vdCxFUlJPUjpyb290OkVycm9yIG9jY3VycmVkCiB0dXRvcmlhbC9zdGRsaWIyLCw6cm9vdCxXQVJOSU5HOnJvb3Q6V2FybmluZzpjb25maWcgZmlsZSBzZXJ2ZXIuY29uZiBub3QgZm91bmQKK3R1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCxleHRyYSA9IGRhdGFbc3RhcnQ6c3RhcnQrZXh0cmFfc2l6ZV0KK3R1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCwiZmllbGRzID0gc3RydWN0LnVucGFjaygnPElJSUhIJywgZGF0YVtzdGFydDpzdGFydCsxNl0pIgordHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LGZpbGVuYW1lID0gZGF0YVtzdGFydDpzdGFydCtmaWxlbmFtZXNpemVdCiB0dXRvcmlhbC9zdGRsaWIyLCw6V2FybmluZyxXQVJOSU5HOnJvb3Q6V2FybmluZzpjb25maWcgZmlsZSBzZXJ2ZXIuY29uZiBub3QgZm91bmQKLXVzaW5nL2NtZGxpbmUsLDpsaW5lLGZpbGU6bGluZTogY2F0ZWdvcnk6IG1lc3NhZ2UKIHVzaW5nL2NtZGxpbmUsLDpjYXRlZ29yeSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQordXNpbmcvY21kbGluZSwsOmVycm9yaGFuZGxlciw6ZXJyb3JoYW5kbGVyCiB1c2luZy9jbWRsaW5lLCw6bGluZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQordXNpbmcvY21kbGluZSwsOmxpbmUsZmlsZTpsaW5lOiBjYXRlZ29yeTogbWVzc2FnZQogdXNpbmcvY21kbGluZSwsOm1lc3NhZ2UsYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKIHVzaW5nL2NtZGxpbmUsLDptb2R1bGUsYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKLXVzaW5nL2NtZGxpbmUsLDplcnJvcmhhbmRsZXIsOmVycm9yaGFuZGxlcgotdXNpbmcvd2luZG93cywxNjIsYCxgYCB0aGlzIGZpeGVzIHN5bnRheCBoaWdobGlnaHRpbmcgZXJyb3JzIGluIHNvbWUgZWRpdG9ycyBkdWUgdG8gdGhlIFxcXFwgaGFja2VyeQotdXNpbmcvd2luZG93cywxNzAsYCxgYAogd2hhdHNuZXcvMi4wLDQxOCw6bGVuLAogd2hhdHNuZXcvMi4zLCw6OiwKIHdoYXRzbmV3LzIuMywsOmNvbmZpZywKQEAgLTE2MywxMTMgKzMzNSwyNiBAQAogd2hhdHNuZXcvMi41LCw6bWVtb3J5LDptZW1vcnk6CiB3aGF0c25ldy8yLjUsLDpzdGVwLFtzdGFydDpzdG9wOnN0ZXBdCiB3aGF0c25ldy8yLjUsLDpzdG9wLFtzdGFydDpzdG9wOnN0ZXBdCi1kaXN0dXRpbHMvZXhhbXBsZXMsMjY3LGAsVGhpcyBpcyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGBgZm9vYmFyYGAgcGFja2FnZS4KLWZhcS9wcm9ncmFtbWluZywsOnJlZHVjZSwicHJpbnQoKGxhbWJkYSBSdSxSbyxJdSxJbyxJTSxTeCxTeTpyZWR1Y2UobGFtYmRhIHgseTp4K3ksbWFwKGxhbWJkYSB5LCIKLWZhcS9wcm9ncmFtbWluZywsOnJlZHVjZSwiU3g9U3gsU3k9U3k6cmVkdWNlKGxhbWJkYSB4LHk6eCt5LG1hcChsYW1iZGEgeCx4Yz1SdSx5Yz15YyxSdT1SdSxSbz1SbywiCi1mYXEvcHJvZ3JhbW1pbmcsLDpjaHIsIj49NC4wKSBvciAxK2YoeGMseWMseCp4LXkqeSt4YywyLjAqeCp5K3ljLGstMSxmKTpmKHhjLHljLHgseSxrLGYpOmNocigiCi1mYXEvcHJvZ3JhbW1pbmcsLDo6LGZvciB4IGluIHNlcXVlbmNlWzo6LTFdOgotZmFxL3dpbmRvd3MsMjI5LDpFT0YsQHNldGxvY2FsIGVuYWJsZWV4dGVuc2lvbnMgJiBweXRob24gLXggJX5mMCAlKiAmIGdvdG8gOkVPRgotZmFxL3dpbmRvd3MsMzkzLDpSRUcsLnB5IDpSRUdfU1o6IGM6XDxwYXRoIHRvIHB5dGhvbj5ccHl0aG9uLmV4ZSAtdSAlcyAlcwotbGlicmFyeS9iaXNlY3QsMzIsOmhpLGFsbCh2YWwgPj0geCBmb3IgdmFsIGluIGFbaTpoaV0pCi1saWJyYXJ5L2Jpc2VjdCw0Miw6aGksYWxsKHZhbCA+IHggZm9yIHZhbCBpbiBhW2k6aGldKQotbGlicmFyeS9odHRwLmNsaWVudCw1Miw6cG9ydCxob3N0OnBvcnQKLWxpYnJhcnkvbm50cGxpYiwsOmJ5dGVzLDpieXRlcwotbGlicmFyeS9ubnRwbGliLCw6bGluZXMsOmxpbmVzCi1saWJyYXJ5L25udHBsaWIsLDpsaW5lcywiWyd4cmVmJywgJ2Zyb20nLCAnOmxpbmVzJywgJzpieXRlcycsICdyZWZlcmVuY2VzJywgJ2RhdGUnLCAnbWVzc2FnZS1pZCcsICdzdWJqZWN0J10iCi1saWJyYXJ5L25udHBsaWIsLDpieXRlcywiWyd4cmVmJywgJ2Zyb20nLCAnOmxpbmVzJywgJzpieXRlcycsICdyZWZlcmVuY2VzJywgJ2RhdGUnLCAnbWVzc2FnZS1pZCcsICdzdWJqZWN0J10iCi1saWJyYXJ5L3BpY2tsZSwsOm1lbW9yeSwiY29ubiA9IHNxbGl0ZTMuY29ubmVjdCgiIjptZW1vcnk6IiIpIgotbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLCIoc29ydCBieSBmaWxlbmFtZTpsaW5lbm8pLCIKLWxpYnJhcnkvc29ja2V0LCw6OiwiKDEwLCAxLCA2LCAnJywgKCcyMDAxOjg4ODoyMDAwOmQ6OmEyJywgODAsIDAsIDApKV0iCi1saWJyYXJ5L3N0ZHR5cGVzLCw6ZW5kLHNbc3RhcnQ6ZW5kXQotbGlicmFyeS9zdGR0eXBlcywsOmVuZCxzW3N0YXJ0OmVuZF0KLWxpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpjbG9zZSxDb25uZWN0aW9uOmNsb3NlCi1saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LCw6cGFzc3dvcmQsIiIiam9lOnBhc3N3b3JkQHB5dGhvbi5vcmciIiIKLWxpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpsYW5nLCJ4bWxucz0iImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIiB4bWw6bGFuZz0iImVuIiIgbGFuZz0iImVuIiI+XG5cbjxoZWFkPlxuIgotbGlicmFyeS94bWxycGMuY2xpZW50LDEwMyw6cGFzcyxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCi1saWJyYXJ5L3htbHJwYy5jbGllbnQsMTAzLDpwb3J0LGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKLWxpYnJhcnkveG1scnBjLmNsaWVudCwxMDMsOnBhc3MsdXNlcjpwYXNzCi1saWNlbnNlLCxgLCogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi1saWNlbnNlLCxgLCogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQKLWxpY2Vuc2UsLGAsImBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyIKLWxpY2Vuc2UsLGAsIlRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIgotcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMsNzA0LGAsJCAgICAgICA/ICAgICAgIGAKLXdoYXRzbmV3LzIuNyw3MzUsOlN1bmRheSwnMjAwOTo0OlN1bmRheScKLXdoYXRzbmV3LzIuNyw4NjIsOjosImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKLXdoYXRzbmV3LzIuNyw4NjIsOkNvb2tpZSwiZXhwb3J0IFBZVEhPTldBUk5JTkdTPWFsbCxlcnJvcjo6OkNvb2tpZTowIgotd2hhdHNuZXcvMi43LDE2MTksOjosPj4+IHVybHBhcnNlLnVybHBhcnNlKCdodHRwOi8vWzEwODA6Ojg6ODAwOjIwMEM6NDE3QV0vZm9vJykKIHdoYXRzbmV3LzIuNywxNjE5LDo6LCJQYXJzZVJlc3VsdChzY2hlbWU9J2h0dHAnLCBuZXRsb2M9J1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdJywiCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFNldCB0aGUgb3B0aW9uYWwgYHJhd2AgYXJndW1lbnQgb2YgZ2V0KCkgdG8gVHJ1ZSBpZiB5b3Ugd2lzaCB0byBkaXNhYmxlCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFRoZSBvcHRpb25hbCBgdmFyc2AgYXJndW1lbnQgaXMgYSBkaWN0IHdpdGggbWVtYmVycyB0aGF0IHdpbGwgdGFrZQotbGlicmFyeS9jb25maWdwYXJzZXIsLGAsIyBUaGUgb3B0aW9uYWwgYGZhbGxiYWNrYCBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwcm92aWRlIGEgZmFsbGJhY2sgdmFsdWUKLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6b3B0aW9uLCR7c2VjdGlvbjpvcHRpb259Ci1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOnN5c3RlbSxwYXRoOiAke0NvbW1vbjpzeXN0ZW1fZGlyfS9MaWJyYXJ5L0ZyYW1ld29ya3MvCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOmhvbWUsbXlfZGlyOiAke0NvbW1vbjpob21lX2Rpcn0vdHdvc2hlZHMKLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6cGF0aCxweXRob25fZGlyOiAke0ZyYW1ld29ya3M6cGF0aH0vUHl0aG9uL1ZlcnNpb25zLyR7RnJhbWV3b3JrczpQeXRob259Ci1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOlB5dGhvbixweXRob25fZGlyOiAke0ZyYW1ld29ya3M6cGF0aH0vUHl0aG9uL1ZlcnNpb25zLyR7RnJhbWV3b3JrczpQeXRob259Ci1saWJyYXJ5L3BkYiwsOmxpbmVubyxbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dCi1saWJyYXJ5L3BkYiwsOmxpbmVubyxmaWxlbmFtZTpsaW5lbm8KLWxpYnJhcnkvbG9nZ2luZywsOldhdGNoLFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCi1saWJyYXJ5L2xvZ2dpbmcsLDpTbyxJTkZPOnJvb3Q6U28gc2hvdWxkIHRoaXMKLWxpYnJhcnkvbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKLWxpYnJhcnkvbG9nZ2luZywsOkRvaW5nLElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKLWxpYnJhcnkvbG9nZ2luZywsOkZpbmlzaGVkLElORk86cm9vdDpGaW5pc2hlZAotbGlicmFyeS9sb2dnaW5nLCw6TG9vayxXQVJOSU5HOnJvb3Q6TG9vayBiZWZvcmUgeW91IGxlYXAhCi1saWJyYXJ5L2xvZ2dpbmcsLDpTbyxJTkZPOlNvIHNob3VsZCB0aGlzCi1saWJyYXJ5L2xvZ2dpbmcsLDpsb2dnZXIsc2V2ZXJpdHk6bG9nZ2VyIG5hbWU6bWVzc2FnZQotbGlicmFyeS9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi13aGF0c25ldy8zLjIsLDpkaXJlY3RvcnksLi4uICAgJHtidWlsZG91dDpkaXJlY3Rvcnl9L2Rvd25sb2Fkcy9kaXN0Ci13aGF0c25ldy8zLjIsLDpsb2NhdGlvbiwuLi4gem9wZTktbG9jYXRpb24gPSAke3pvcGU5OmxvY2F0aW9ufQotd2hhdHNuZXcvMy4yLCw6cHJlZml4LC4uLiB6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLWhvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCi1ob3d0by9sb2dnaW5nLCw6V2F0Y2gsV0FSTklORzpyb290OldhdGNoIG91dCEKLWhvd3RvL2xvZ2dpbmcsLDpyb290LERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKLWhvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOlNvLElORk86cm9vdDpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOnJvb3QsIldBUk5JTkc6cm9vdDpBbmQgdGhpcywgdG9vIgotaG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpyb290OkFuZCB0aGlzLCB0b28iCi1ob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6U3RhcnRlZAotaG93dG8vbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKLWhvd3RvL2xvZ2dpbmcsLDpEb2luZyxJTkZPOnJvb3Q6RG9pbmcgc29tZXRoaW5nCi1ob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6RmluaXNoZWQKLWhvd3RvL2xvZ2dpbmcsLDpGaW5pc2hlZCxJTkZPOnJvb3Q6RmluaXNoZWQKLWhvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKLWhvd3RvL2xvZ2dpbmcsLDpMb29rLFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKLWhvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOlRoaXMgbWVzc2FnZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBjb25zb2xlCi1ob3d0by9sb2dnaW5nLCw6U28sSU5GTzpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpBbmQgdGhpcywgdG9vIgotaG93dG8vbG9nZ2luZywsOmxvZ2dlcixzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi1ob3d0by9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi1saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMsLDpwb3J0LGhvc3Q6cG9ydAotbGlicmFyeS9pbWFwbGliLDExNiw6TU0sIiIiREQtTW1tLVlZWVkgSEg6TU06U1MiCi1saWJyYXJ5L2ltYXBsaWIsMTE2LDpTUywiIiJERC1NbW0tWVlZWSBISDpNTTpTUyIKLXdoYXRzbmV3LzMuMiwsOjosIiQgZXhwb3J0IFBZVEhPTldBUk5JTkdTPSdpZ25vcmU6OlJ1bnRpbWVXYXJuaW5nOjosb25jZTo6VW5pY29kZVdhcm5pbmc6OiciCi1ob3d0by9weXBvcnRpbmcsNzUsOjosIyBtYWtlIHN1cmUgdG8gdXNlIDo6IFB5dGhvbiAqYW5kKiA6OiBQeXRob24gOjogMyBzbwotaG93dG8vcHlwb3J0aW5nLDc1LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uJywiCi1ob3d0by9weXBvcnRpbmcsNzUsOjosJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzJwotd2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKLXdoYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKLXdoYXRzbmV3LzMuMiwsOmxvY2F0aW9uLHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KLXdoYXRzbmV3LzMuMiwsOnByZWZpeCx6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLXdoYXRzbmV3LzMuMiwsOmJlZWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQotd2hhdHNuZXcvMy4yLCw6Y2FmZSw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDphZmZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKLXdoYXRzbmV3LzMuMiwsOmRlYWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQotd2hhdHNuZXcvMy4yLCw6ZmVlZCw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDpiZWVmLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCi13aGF0c25ldy8zLjIsLDpjYWZlLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8yLjcsMTYxOSw6Oiw+Pj4gdXJscGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bMTA4MDo6ODo4MDA6MjAwQzo0MTdBXS9mb28nKQord2hhdHNuZXcvMi43LDczNSw6U3VuZGF5LCcyMDA5OjQ6U3VuZGF5Jword2hhdHNuZXcvMi43LDg2Miw6Q29va2llLCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCit3aGF0c25ldy8yLjcsODYyLDo6LCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCiB3aGF0c25ldy8zLjIsLDphZmZlLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8zLjIsLDphZmZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKK3doYXRzbmV3LzMuMiwsOmJlZWYsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKK3doYXRzbmV3LzMuMiwsOmJlZWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6Y2FmZSwibmV0bG9jPSdbZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXScsIgord2hhdHNuZXcvMy4yLCw6Y2FmZSw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCiB3aGF0c25ldy8zLjIsLDpkZWFmLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8zLjIsLDpkZWFmLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKK3doYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwuLi4gICAke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKK3doYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKK3doYXRzbmV3LzMuMiwsOjosIiQgZXhwb3J0IFBZVEhPTldBUk5JTkdTPSdpZ25vcmU6OlJ1bnRpbWVXYXJuaW5nOjosb25jZTo6VW5pY29kZVdhcm5pbmc6OiciCiB3aGF0c25ldy8zLjIsLDpmZWVkLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidjbGFzc2lmaWVycyc6IFsnRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDQgLSBCZXRhJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZScsIgotbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInTmF0dXJhbCBMYW5ndWFnZSA6OiBFbmdsaXNoJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidPcGVyYXRpbmcgU3lzdGVtIDo6IE9TIEluZGVwZW5kZW50JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24nLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi42JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcyA6OiBQeXRob24gTW9kdWxlcyddLCIKK3doYXRzbmV3LzMuMiwsOmZlZWQsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKK3doYXRzbmV3LzMuMiwsOmxvY2F0aW9uLC4uLiB6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259Cit3aGF0c25ldy8zLjIsLDpsb2NhdGlvbix6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259Cit3aGF0c25ldy8zLjIsLDpwcmVmaXgsLi4uIHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgord2hhdHNuZXcvMy4yLCw6cHJlZml4LHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0IGIvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0CmluZGV4IDVjZTM2NjkuLmI0ZjA5YzIgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9jbGFzc2VzLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvY2xhc3Nlcy5yc3QKQEAgLTE4NCw3ICsxODQsNiBAQAogCiAuLiBjb2RlLWJsb2NrOjogbm9uZQogCi0KICAgIEFmdGVyIGxvY2FsIGFzc2lnbm1lbnQ6IHRlc3Qgc3BhbQogICAgQWZ0ZXIgbm9ubG9jYWwgYXNzaWdubWVudDogbm9ubG9jYWwgc3BhbQogICAgQWZ0ZXIgZ2xvYmFsIGFzc2lnbm1lbnQ6IG5vbmxvY2FsIHNwYW0KQEAgLTY5OCw5ICs2OTcsOSBAQAogICAgY2xhc3MgRChDKToKICAgICAgICBwYXNzCiAKLSAgIGZvciBjIGluIFtCLCBDLCBEXToKKyAgIGZvciBjbHMgaW4gW0IsIEMsIERdOgogICAgICAgIHRyeToKLSAgICAgICAgICAgcmFpc2UgYygpCisgICAgICAgICAgIHJhaXNlIGNscygpCiAgICAgICAgZXhjZXB0IEQ6CiAgICAgICAgICAgIHByaW50KCJEIikKICAgICAgICBleGNlcHQgQzoKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CmluZGV4IDdlYzA0NGMuLmVkODFhZGUgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdApAQCAtMTksMTMgKzE5LDEzIEBACiAuLiBtZXRob2Q6OiBsaXN0LmFwcGVuZCh4KQogICAgOm5vaW5kZXg6CiAKLSAgIEFkZCBhbiBpdGVtIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3Q7IGVxdWl2YWxlbnQgdG8gYGBhW2xlbihhKTpdID0gW3hdYGAuCisgICBBZGQgYW4gaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LiAgRXF1aXZhbGVudCB0byBgYGFbbGVuKGEpOl0gPSBbeF1gYC4KIAogCiAuLiBtZXRob2Q6OiBsaXN0LmV4dGVuZChMKQogICAgOm5vaW5kZXg6CiAKLSAgIEV4dGVuZCB0aGUgbGlzdCBieSBhcHBlbmRpbmcgYWxsIHRoZSBpdGVtcyBpbiB0aGUgZ2l2ZW4gbGlzdDsgZXF1aXZhbGVudCB0bworICAgRXh0ZW5kIHRoZSBsaXN0IGJ5IGFwcGVuZGluZyBhbGwgdGhlIGl0ZW1zIGluIHRoZSBnaXZlbiBsaXN0LiAgRXF1aXZhbGVudCB0bwogICAgYGBhW2xlbihhKTpdID0gTGBgLgogCiAKQEAgLTQwLDggKzQwLDggQEAKIC4uIG1ldGhvZDo6IGxpc3QucmVtb3ZlKHgpCiAgICA6bm9pbmRleDoKIAotICAgUmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlIGxpc3Qgd2hvc2UgdmFsdWUgaXMgKngqLiBJdCBpcyBhbiBlcnJvciBpZiB0aGVyZQotICAgaXMgbm8gc3VjaCBpdGVtLgorICAgUmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlIGxpc3Qgd2hvc2UgdmFsdWUgaXMgKngqLiAgSXQgaXMgYW4gZXJyb3IgaWYKKyAgIHRoZXJlIGlzIG5vIHN1Y2ggaXRlbS4KIAogCiAuLiBtZXRob2Q6OiBsaXN0LnBvcChbaV0pCkBAIC03MCwxMyArNzAsMTQgQEAKIC4uIG1ldGhvZDo6IGxpc3Quc29ydCgpCiAgICA6bm9pbmRleDoKIAotICAgU29ydCB0aGUgaXRlbXMgb2YgdGhlIGxpc3QsIGluIHBsYWNlLgorICAgU29ydCB0aGUgaXRlbXMgb2YgdGhlIGxpc3QgaW4gcGxhY2UuCiAKIAogLi4gbWV0aG9kOjogbGlzdC5yZXZlcnNlKCkKICAgIDpub2luZGV4OgogCi0gICBSZXZlcnNlIHRoZSBlbGVtZW50cyBvZiB0aGUgbGlzdCwgaW4gcGxhY2UuCisgICBSZXZlcnNlIHRoZSBlbGVtZW50cyBvZiB0aGUgbGlzdCBpbiBwbGFjZS4KKwogCiBBbiBleGFtcGxlIHRoYXQgdXNlcyBtb3N0IG9mIHRoZSBsaXN0IG1ldGhvZHM6OgogCkBAIC05OSw2ICsxMDAsMTAgQEAKICAgID4+PiBhCiAgICBbLTEsIDEsIDY2LjI1LCAzMzMsIDMzMywgMTIzNC41XQogCitZb3UgbWlnaHQgaGF2ZSBub3RpY2VkIHRoYXQgbWV0aG9kcyBsaWtlIGBgaW5zZXJ0YGAsIGBgcmVtb3ZlYGAgb3IgYGBzb3J0YGAgdGhhdAorbW9kaWZ5IHRoZSBsaXN0IGhhdmUgbm8gcmV0dXJuIHZhbHVlIHByaW50ZWQgLS0gdGhleSByZXR1cm4gYGBOb25lYGAuIFsxXV8gIFRoaXMKK2lzIGEgZGVzaWduIHByaW5jaXBsZSBmb3IgYWxsIG11dGFibGUgZGF0YSBzdHJ1Y3R1cmVzIGluIFB5dGhvbi4KKwogCiAuLiBfdHV0LWxpc3RzLWFzLXN0YWNrczoKIApAQCAtNDgwLDcgKzQ4NSw3IEBACiAKIFBlcmZvcm1pbmcgYGBsaXN0KGQua2V5cygpKWBgIG9uIGEgZGljdGlvbmFyeSByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGtleXMKIHVzZWQgaW4gdGhlIGRpY3Rpb25hcnksIGluIGFyYml0cmFyeSBvcmRlciAoaWYgeW91IHdhbnQgaXQgc29ydGVkLCBqdXN0IHVzZQotYGBzb3J0ZWQoZC5rZXlzKCkpYGAgaW5zdGVhZCkuIFsxXV8gIFRvIGNoZWNrIHdoZXRoZXIgYSBzaW5nbGUga2V5IGlzIGluIHRoZQorYGBzb3J0ZWQoZC5rZXlzKCkpYGAgaW5zdGVhZCkuIFsyXV8gIFRvIGNoZWNrIHdoZXRoZXIgYSBzaW5nbGUga2V5IGlzIGluIHRoZQogZGljdGlvbmFyeSwgdXNlIHRoZSA6a2V5d29yZDpgaW5gIGtleXdvcmQuCiAKIEhlcmUgaXMgYSBzbWFsbCBleGFtcGxlIHVzaW5nIGEgZGljdGlvbmFyeTo6CkBAIC02NjQsNiArNjY5LDkgQEAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKLS4uIFsxXSBDYWxsaW5nIGBgZC5rZXlzKClgYCB3aWxsIHJldHVybiBhIDpkZm46YGRpY3Rpb25hcnkgdmlld2Agb2JqZWN0LiAgSXQKKy4uIFsxXSBPdGhlciBsYW5ndWFnZXMgbWF5IHJldHVybiB0aGUgbXV0YXRlZCBvYmplY3QsIHdoaWNoIGFsbG93cyBtZXRob2QKKyAgICAgICBjaGFpbmluZywgc3VjaCBhcyBgYGQtPmluc2VydCgiYSIpLT5yZW1vdmUoImIiKS0+c29ydCgpO2BgLgorCisuLiBbMl0gQ2FsbGluZyBgYGQua2V5cygpYGAgd2lsbCByZXR1cm4gYSA6ZGZuOmBkaWN0aW9uYXJ5IHZpZXdgIG9iamVjdC4gIEl0CiAgICAgICAgc3VwcG9ydHMgb3BlcmF0aW9ucyBsaWtlIG1lbWJlcnNoaXAgdGVzdCBhbmQgaXRlcmF0aW9uLCBidXQgaXRzIGNvbnRlbnRzCiAgICAgICAgYXJlIG5vdCBpbmRlcGVuZGVudCBvZiB0aGUgb3JpZ2luYWwgZGljdGlvbmFyeSAtLSBpdCBpcyBvbmx5IGEgKnZpZXcqLgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKaW5kZXggMjMzODQ2NS4uOGYwOGNkOCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CkBAIC0xMCwxMSArMTAsMTEgQEAKIEludm9raW5nIHRoZSBJbnRlcnByZXRlcgogPT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuMmAKK1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuM2AKIG9uIHRob3NlIG1hY2hpbmVzIHdoZXJlIGl0IGlzIGF2YWlsYWJsZTsgcHV0dGluZyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW5gIGluIHlvdXIKIFVuaXggc2hlbGwncyBzZWFyY2ggcGF0aCBtYWtlcyBpdCBwb3NzaWJsZSB0byBzdGFydCBpdCBieSB0eXBpbmcgdGhlIGNvbW1hbmQgOjoKIAotICAgcHl0aG9uMy4yCisgICBweXRob24zLjMKIAogdG8gdGhlIHNoZWxsLiBbI11fIFNpbmNlIHRoZSBjaG9pY2Ugb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgaW50ZXJwcmV0ZXIgbGl2ZXMKIGlzIGFuIGluc3RhbGxhdGlvbiBvcHRpb24sIG90aGVyIHBsYWNlcyBhcmUgcG9zc2libGU7IGNoZWNrIHdpdGggeW91ciBsb2NhbApAQCAtMjIsMTEgKzIyLDExIEBACiBwb3B1bGFyIGFsdGVybmF0aXZlIGxvY2F0aW9uLikKIAogT24gV2luZG93cyBtYWNoaW5lcywgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gaXMgdXN1YWxseSBwbGFjZWQgaW4KLTpmaWxlOmBDOlxcUHl0aG9uMzJgLCB0aG91Z2ggeW91IGNhbiBjaGFuZ2UgdGhpcyB3aGVuIHlvdSdyZSBydW5uaW5nIHRoZQorOmZpbGU6YEM6XFxQeXRob24zM2AsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCiBpbnN0YWxsZXIuICBUbyBhZGQgdGhpcyBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCAgeW91IGNhbiB0eXBlIHRoZSBmb2xsb3dpbmcKIGNvbW1hbmQgaW50byB0aGUgY29tbWFuZCBwcm9tcHQgaW4gYSBET1MgYm94OjoKIAotICAgc2V0IHBhdGg9JXBhdGglO0M6XHB5dGhvbjMyCisgICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzMKIAogVHlwaW5nIGFuIGVuZC1vZi1maWxlIGNoYXJhY3RlciAoOmtiZDpgQ29udHJvbC1EYCBvbiBVbml4LCA6a2JkOmBDb250cm9sLVpgIG9uCiBXaW5kb3dzKSBhdCB0aGUgcHJpbWFyeSBwcm9tcHQgY2F1c2VzIHRoZSBpbnRlcnByZXRlciB0byBleGl0IHdpdGggYSB6ZXJvIGV4aXQKQEAgLTkzLDggKzkzLDggQEAKIHByaW50cyBhIHdlbGNvbWUgbWVzc2FnZSBzdGF0aW5nIGl0cyB2ZXJzaW9uIG51bWJlciBhbmQgYSBjb3B5cmlnaHQgbm90aWNlCiBiZWZvcmUgcHJpbnRpbmcgdGhlIGZpcnN0IHByb21wdDo6CiAKLSAgICQgcHl0aG9uMy4yCi0gICBQeXRob24gMy4yIChweTNrLCBTZXAgMTIgMjAwNywgMTI6MjE6MDIpCisgICAkIHB5dGhvbjMuMworICAgUHl0aG9uIDMuMyAocHkzaywgU2VwIDEyIDIwMDcsIDEyOjIxOjAyKQogICAgW0dDQyAzLjQuNiAyMDA2MDQwNCAoUmVkIEhhdCAzLjQuNi04KV0gb24gbGludXgyCiAgICBUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICA+Pj4KQEAgLTE0Nyw3ICsxNDcsNyBAQAogT24gQlNEJ2lzaCBVbml4IHN5c3RlbXMsIFB5dGhvbiBzY3JpcHRzIGNhbiBiZSBtYWRlIGRpcmVjdGx5IGV4ZWN1dGFibGUsIGxpa2UKIHNoZWxsIHNjcmlwdHMsIGJ5IHB1dHRpbmcgdGhlIGxpbmUgOjoKIAotICAgIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMuMgorICAgIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMuMwogCiAoYXNzdW1pbmcgdGhhdCB0aGUgaW50ZXJwcmV0ZXIgaXMgb24gdGhlIHVzZXIncyA6ZW52dmFyOmBQQVRIYCkgYXQgdGhlIGJlZ2lubmluZwogb2YgdGhlIHNjcmlwdCBhbmQgZ2l2aW5nIHRoZSBmaWxlIGFuIGV4ZWN1dGFibGUgbW9kZS4gIFRoZSBgYCMhYGAgbXVzdCBiZSB0aGUKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKaW5kZXggOTcyOTc0My4uNTAwY2E3ZiAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKQEAgLTE1LDcgKzE1LDcgQEAKIAogICAgPj4+IGltcG9ydCBvcwogICAgPj4+IG9zLmdldGN3ZCgpICAgICAgIyBSZXR1cm4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLSAgICdDOlxcUHl0aG9uMzEnCisgICAnQzpcXFB5dGhvbjMzJwogICAgPj4+IG9zLmNoZGlyKCcvc2VydmVyL2FjY2Vzc2xvZ3MnKSAgICMgQ2hhbmdlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKICAgID4+PiBvcy5zeXN0ZW0oJ21rZGlyIHRvZGF5JykgICAjIFJ1biB0aGUgY29tbWFuZCBta2RpciBpbiB0aGUgc3lzdGVtIHNoZWxsCiAgICAwCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKaW5kZXggZmU3ZjAyNy4uODVjODhkYyAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdApAQCAtMTQxLDcgKzE0MSw5IEBACiAKICAgIGltcG9ydCBzdHJ1Y3QKIAotICAgZGF0YSA9IG9wZW4oJ215ZmlsZS56aXAnLCAncmInKS5yZWFkKCkKKyAgIHdpdGggb3BlbignbXlmaWxlLnppcCcsICdyYicpIGFzIGY6CisgICAgICAgZGF0YSA9IGYucmVhZCgpCisKICAgIHN0YXJ0ID0gMAogICAgZm9yIGkgaW4gcmFuZ2UoMyk6ICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgZmlyc3QgMyBmaWxlIGhlYWRlcnMKICAgICAgICBzdGFydCArPSAxNApAQCAtMjcxLDcgKzI3Myw3IEBACiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICAgICAgZFsncHJpbWFyeSddICAgICAgICAgICAgICAgICMgZW50cnkgd2FzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZAotICAgICBGaWxlICJDOi9weXRob24zMS9saWIvd2Vha3JlZi5weSIsIGxpbmUgNDYsIGluIF9fZ2V0aXRlbV9fCisgICAgIEZpbGUgIkM6L3B5dGhvbjMzL2xpYi93ZWFrcmVmLnB5IiwgbGluZSA0NiwgaW4gX19nZXRpdGVtX18KICAgICAgICBvID0gc2VsZi5kYXRhW2tleV0oKQogICAgS2V5RXJyb3I6ICdwcmltYXJ5JwogCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKaW5kZXggMGQxMjEyNi4uODg2NGI3OSAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0CisrKyBiL0RvYy91c2luZy9jbWRsaW5lLnJzdApAQCAtMjQsNyArMjQsNyBAQAogCiBXaGVuIGludm9raW5nIFB5dGhvbiwgeW91IG1heSBzcGVjaWZ5IGFueSBvZiB0aGVzZSBvcHRpb25zOjoKIAotICAgIHB5dGhvbiBbLWJCZEVoaU9ScXNTdXZWV3g/XSBbLWMgY29tbWFuZCB8IC1tIG1vZHVsZS1uYW1lIHwgc2NyaXB0IHwgLSBdIFthcmdzXQorICAgIHB5dGhvbiBbLWJCZEVoaU9xc1N1dlZXeD9dIFstYyBjb21tYW5kIHwgLW0gbW9kdWxlLW5hbWUgfCBzY3JpcHQgfCAtIF0gW2FyZ3NdCiAKIFRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZSBpcywgb2YgY291cnNlLCBhIHNpbXBsZSBpbnZvY2F0aW9uIG9mIGEgc2NyaXB0OjoKIApAQCAtMjI5LDIzICsyMjksMjIgQEAKIAogLi4gY21kb3B0aW9uOjogLVIKIAotICAgVHVybiBvbiBoYXNoIHJhbmRvbWl6YXRpb24sIHNvIHRoYXQgdGhlIDptZXRoOmBfX2hhc2hfX2AgdmFsdWVzIG9mIHN0ciwgYnl0ZXMKLSAgIGFuZCBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLgotICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uIHByb2Nlc3MsIHRoZXkgYXJlCi0gICBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZiBQeXRob24uCisgICBLZXB0IGZvciBjb21wYXRpYmlsaXR5LiAgT24gUHl0aG9uIDMuMyBhbmQgZ3JlYXRlciwgaGFzaCByYW5kb21pemF0aW9uIGlzCisgICB0dXJuZWQgb24gYnkgZGVmYXVsdC4KIAotICAgVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1vZi1zZXJ2aWNlIGNhdXNlZCBieQotICAgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZSB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdAotICAgY29uc3RydWN0aW9uLCBPKG5eMikgY29tcGxleGl0eS4gIFNlZQorICAgT24gcHJldmlvdXMgdmVyc2lvbnMgb2YgUHl0aG9uLCB0aGlzIG9wdGlvbiB0dXJucyBvbiBoYXNoIHJhbmRvbWl6YXRpb24sCisgICBzbyB0aGF0IHRoZSA6bWV0aDpgX19oYXNoX19gIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZQorICAgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuICBBbHRob3VnaCB0aGV5IHJlbWFpbgorICAgY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZQorICAgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZiBQeXRob24uCisKKyAgIEhhc2ggcmFuZG9taXphdGlvbiBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhCisgICBkZW5pYWwtb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZSB3b3JzdAorICAgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgY29uc3RydWN0aW9uLCBPKG5eMikgY29tcGxleGl0eS4gIFNlZQogICAgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvciBkZXRhaWxzLgogCi0gICBDaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBvcmRlciBpbiB3aGljaCBrZXlzIGFyZSByZXRyaWV2ZWQgZnJvbSBhCi0gICBkaWN0LiAgQWx0aG91Z2ggUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXMgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0Ci0gICB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZCA2NC1iaXQgYnVpbGRzKSwgZW5vdWdoIHJlYWwtd29ybGQgY29kZQotICAgaW1wbGljaXRseSByZWxpZXMgb24gdGhpcyBub24tZ3VhcmFudGVlZCBiZWhhdmlvciB0aGF0IHRoZSByYW5kb21pemF0aW9uIGlzCi0gICBkaXNhYmxlZCBieSBkZWZhdWx0LgotCi0gICBTZWUgYWxzbyA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAuCisgICA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAgYWxsb3dzIHlvdSB0byBzZXQgYSBmaXhlZCB2YWx1ZSBmb3IgdGhlIGhhc2gKKyAgIHNlZWQgc2VjcmV0LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIuMwogCkBAIC0yNjMsNyArMjYyLDkgQEAKIC4uIGNtZG9wdGlvbjo6IC1TCiAKICAgIERpc2FibGUgdGhlIGltcG9ydCBvZiB0aGUgbW9kdWxlIDptb2Q6YHNpdGVgIGFuZCB0aGUgc2l0ZS1kZXBlbmRlbnQKLSAgIG1hbmlwdWxhdGlvbnMgb2YgOmRhdGE6YHN5cy5wYXRoYCB0aGF0IGl0IGVudGFpbHMuCisgICBtYW5pcHVsYXRpb25zIG9mIDpkYXRhOmBzeXMucGF0aGAgdGhhdCBpdCBlbnRhaWxzLiAgQWxzbyBkaXNhYmxlIHRoZXNlCisgICBtYW5pcHVsYXRpb25zIGlmIDptb2Q6YHNpdGVgIGlzIGV4cGxpY2l0bHkgaW1wb3J0ZWQgbGF0ZXIgKGNhbGwKKyAgIDpmdW5jOmBzaXRlLm1haW5gIGlmIHlvdSB3YW50IHRoZW0gdG8gYmUgdHJpZ2dlcmVkKS4KIAogCiAuLiBjbWRvcHRpb246OiAtdQpAQCAtNDcyLDcgKzQ3Myw3IEBACiAuLiBlbnZ2YXI6OiBQWVRIT05DQVNFT0sKIAogICAgSWYgdGhpcyBpcyBzZXQsIFB5dGhvbiBpZ25vcmVzIGNhc2UgaW4gOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50cy4gIFRoaXMKLSAgIG9ubHkgd29ya3Mgb24gV2luZG93cywgT1MgWCwgYW5kIE9TLzIuCisgICBvbmx5IHdvcmtzIG9uIFdpbmRvd3MgYW5kIE9TIFguCiAKIAogLi4gZW52dmFyOjogUFlUSE9ORE9OVFdSSVRFQllURUNPREUKQEAgLTQ4NCw5ICs0ODUsOCBAQAogCiAuLiBlbnZ2YXI6OiBQWVRIT05IQVNIU0VFRAogCi0gICBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byBgYHJhbmRvbWBgLCB0aGUgZWZmZWN0IGlzIHRoZSBzYW1lIGFzIHNwZWNpZnlpbmcKLSAgIHRoZSA6b3B0aW9uOmAtUmAgb3B0aW9uOiBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsCi0gICBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4KKyAgIElmIHRoaXMgdmFyaWFibGUgaXMgbm90IHNldCBvciBzZXQgdG8gYGByYW5kb21gYCwgYSByYW5kb20gdmFsdWUgaXMgdXNlZAorICAgdG8gc2VlZCB0aGUgaGFzaGVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuCiAKICAgIElmIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYCBpcyBzZXQgdG8gYW4gaW50ZWdlciB2YWx1ZSwgaXQgaXMgdXNlZCBhcyBhIGZpeGVkCiAgICBzZWVkIGZvciBnZW5lcmF0aW5nIHRoZSBoYXNoKCkgb2YgdGhlIHR5cGVzIGNvdmVyZWQgYnkgdGhlIGhhc2gKQEAgLTQ5Nyw4ICs0OTcsNyBAQAogICAgdmFsdWVzLgogCiAgICBUaGUgaW50ZWdlciBtdXN0IGJlIGEgZGVjaW1hbCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdLiAgU3BlY2lmeWluZwotICAgdGhlIHZhbHVlIDAgd2lsbCBsZWFkIHRvIHRoZSBzYW1lIGhhc2ggdmFsdWVzIGFzIHdoZW4gaGFzaCByYW5kb21pemF0aW9uIGlzCi0gICBkaXNhYmxlZC4KKyAgIHRoZSB2YWx1ZSAwIHdpbGwgZGlzYWJsZSBoYXNoIHJhbmRvbWl6YXRpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMi4zCiAKQEAgLTUyOCw4ICs1MjcsOCBAQAogCiAgICBEZWZpbmVzIHRoZSA6ZGF0YTpgdXNlciBiYXNlIGRpcmVjdG9yeSA8c2l0ZS5VU0VSX0JBU0U+YCwgd2hpY2ggaXMgdXNlZCB0bwogICAgY29tcHV0ZSB0aGUgcGF0aCBvZiB0aGUgOmRhdGE6YHVzZXIgc2l0ZS1wYWNrYWdlcyBkaXJlY3RvcnkgPHNpdGUuVVNFUl9TSVRFPmAKLSAgIGFuZCA6cmVmOmBEaXN0dXRpbHMgaW5zdGFsbGF0aW9uIHBhdGhzIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YCBmb3IgYGBweXRob24KLSAgIHNldHVwLnB5IGluc3RhbGwgLS11c2VyYGAuCisgICBhbmQgOnJlZjpgRGlzdHV0aWxzIGluc3RhbGxhdGlvbiBwYXRocyA8aW5zdC1hbHQtaW5zdGFsbC11c2VyPmAgZm9yCisgICBgYHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsIC0tdXNlcmBgLgogCiAgICAuLiBzZWVhbHNvOjoKIApAQCAtNTQ4LDYgKzU0NywxNCBAQAogICAgc2VwYXJhdGVkIHN0cmluZywgaXQgaXMgZXF1aXZhbGVudCB0byBzcGVjaWZ5aW5nIDpvcHRpb246YC1XYCBtdWx0aXBsZQogICAgdGltZXMuCiAKKy4uIGVudnZhcjo6IFBZVEhPTkZBVUxUSEFORExFUgorCisgICBJZiB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgIGlzIGNhbGxlZAorICAgYXQgc3RhcnR1cDogaW5zdGFsbCBhIGhhbmRsZXIgZm9yIDpjb25zdDpgU0lHU0VHVmAsIDpjb25zdDpgU0lHRlBFYCwKKyAgIDpjb25zdDpgU0lHQUJSVGAsIDpjb25zdDpgU0lHQlVTYCBhbmQgOmNvbnN0OmBTSUdJTExgIHNpZ25hbHMgdG8gZHVtcCB0aGUKKyAgIFB5dGhvbiB0cmFjZWJhY2suICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gOm9wdGlvbjpgLVhgIGBgZmF1bHRoYW5kbGVyYGAKKyAgIG9wdGlvbi4KKwogCiBEZWJ1Zy1tb2RlIHZhcmlhYmxlcwogfn5+fn5+fn5+fn5+fn5+fn5+fn4KZGlmZiAtLWdpdCBhL0RvYy91c2luZy9pbmRleC5yc3QgYi9Eb2MvdXNpbmcvaW5kZXgucnN0CmluZGV4IDEyMDExNTMuLjUwMmFmYTkgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9pbmRleC5yc3QKKysrIGIvRG9jL3VzaW5nL2luZGV4LnJzdApAQCAtMTcsNCArMTcsNCBAQAogICAgdW5peC5yc3QKICAgIHdpbmRvd3MucnN0CiAgICBtYWMucnN0Ci0KKyAgIHNjcmlwdHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QgYi9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM4NzQxNgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy91c2luZy9zY3JpcHRzLnJzdApAQCAtMCwwICsxLDEyIEBACisuLiBfdG9vbHMtYW5kLXNjcmlwdHM6CisKK0FkZGl0aW9uYWwgVG9vbHMgYW5kIFNjcmlwdHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gX3NjcmlwdHMtcHl2ZW52OgorCitweXZlbnYgLSBDcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5jbHVkZTo6IHZlbnYtY3JlYXRlLmluYworCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRiYzliCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwpAQCAtMCwwICsxLDg1IEBACitDcmVhdGlvbiBvZiA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50cyA8dmVudi1kZWY+YCBpcyBkb25lIGJ5IGV4ZWN1dGluZyB0aGUKK2BgcHl2ZW52YGAgc2NyaXB0OjoKKworICAgIHB5dmVudiAvcGF0aC90by9uZXcvdmlydHVhbC9lbnZpcm9ubWVudAorCitSdW5uaW5nIHRoaXMgY29tbWFuZCBjcmVhdGVzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IChjcmVhdGluZyBhbnkgcGFyZW50CitkaXJlY3RvcmllcyB0aGF0IGRvbid0IGV4aXN0IGFscmVhZHkpIGFuZCBwbGFjZXMgYSBgYHB5dmVudi5jZmdgYCBmaWxlIGluIGl0Cit3aXRoIGEgYGBob21lYGAga2V5IHBvaW50aW5nIHRvIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHRoZSBjb21tYW5kIHdhcyBydW4KK2Zyb20uICBJdCBhbHNvIGNyZWF0ZXMgYSBgYGJpbmBgIChvciBgYFNjcmlwdHNgYCBvbiBXaW5kb3dzKSBzdWJkaXJlY3RvcnkKK2NvbnRhaW5pbmcgYSBjb3B5IG9mIHRoZSBgYHB5dGhvbmBgIGJpbmFyeSAob3IgYmluYXJpZXMsIGluIHRoZSBjYXNlIG9mCitXaW5kb3dzKS4gIEl0IGFsc28gY3JlYXRlcyBhbiAoaW5pdGlhbGx5IGVtcHR5KSBgYGxpYi9weXRob25YLlkvc2l0ZS1wYWNrYWdlc2BgCitzdWJkaXJlY3RvcnkgKG9uIFdpbmRvd3MsIHRoaXMgaXMgYGBMaWJcc2l0ZS1wYWNrYWdlc2BgKS4KKworLi4gaGlnaGxpZ2h0Ojogbm9uZQorCitPbiBXaW5kb3dzLCB5b3UgbWF5IGhhdmUgdG8gaW52b2tlIHRoZSBgYHB5dmVudmBgIHNjcmlwdCBhcyBmb2xsb3dzLCBpZiB5b3UKK2Rvbid0IGhhdmUgdGhlIHJlbGV2YW50IFBBVEggYW5kIFBBVEhFWFQgc2V0dGluZ3M6OgorCisgICAgYzpcVGVtcD5jOlxQeXRob24zM1xweXRob24gYzpcUHl0aG9uMzNcVG9vbHNcU2NyaXB0c1xweXZlbnYucHkgbXllbnYKKworb3IgZXF1aXZhbGVudGx5OjoKKworICAgIGM6XFRlbXA+YzpcUHl0aG9uMzNccHl0aG9uIC1tIHZlbnYgbXllbnYKKworVGhlIGNvbW1hbmQsIGlmIHJ1biB3aXRoIGBgLWhgYCwgd2lsbCBzaG93IHRoZSBhdmFpbGFibGUgb3B0aW9uczo6CisKKyAgICB1c2FnZTogcHl2ZW52IFstaF0gWy0tc3lzdGVtLXNpdGUtcGFja2FnZXNdIFstLXN5bWxpbmtzXSBbLS1jbGVhcl0KKyAgICAgICAgICAgICAgICAgIFstLXVwZ3JhZGVdIEVOVl9ESVIgW0VOVl9ESVIgLi4uXQorCisgICAgQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiBlbnZpcm9ubWVudHMgaW4gb25lIG9yIG1vcmUgdGFyZ2V0IGRpcmVjdG9yaWVzLgorCisgICAgcG9zaXRpb25hbCBhcmd1bWVudHM6CisgICAgICBFTlZfRElSICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCisKKyAgICBvcHRpb25hbCBhcmd1bWVudHM6CisgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMgR2l2ZSBhY2Nlc3MgdG8gdGhlIGdsb2JhbCBzaXRlLXBhY2thZ2VzIGRpciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgICAgIC0tc3ltbGlua3MgICAgICAgICAgICAgVHJ5IHRvIHVzZSBzeW1saW5rcyByYXRoZXIgdGhhbiBjb3BpZXMsIHdoZW4gc3ltbGlua3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgorICAgICAgLS1jbGVhciAgICAgICAgICAgICAgICBEZWxldGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90IHNwZWNpZmllZCBhbmQgdGhlIGRpcmVjdG9yeSBleGlzdHMsIGFuIGVycm9yIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlZC4KKyAgICAgIC0tdXBncmFkZSAgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCisKK0lmIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIGFuIGVycm9yIHdpbGwgYmUgcmFpc2VkLCB1bmxlc3MKK3RoZSBgYC0tY2xlYXJgYCBvciBgYC0tdXBncmFkZWBgIG9wdGlvbiB3YXMgcHJvdmlkZWQuCisKK1RoZSBjcmVhdGVkIGBgcHl2ZW52LmNmZ2BgIGZpbGUgYWxzbyBpbmNsdWRlcyB0aGUKK2BgaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlc2BgIGtleSwgc2V0IHRvIGBgdHJ1ZWBgIGlmIGBgdmVudmBgIGlzCitydW4gd2l0aCB0aGUgYGAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzYGAgb3B0aW9uLCBgYGZhbHNlYGAgb3RoZXJ3aXNlLgorCitNdWx0aXBsZSBwYXRocyBjYW4gYmUgZ2l2ZW4gdG8gYGBweXZlbnZgYCwgaW4gd2hpY2ggY2FzZSBhbiBpZGVudGljYWwKK3ZpcnR1YWxlbnYgd2lsbCBiZSBjcmVhdGVkLCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG9wdGlvbnMsIGF0IGVhY2gKK3Byb3ZpZGVkIHBhdGguCisKK09uY2UgYSB2ZW52IGhhcyBiZWVuIGNyZWF0ZWQsIGl0IGNhbiBiZSAiYWN0aXZhdGVkIiB1c2luZyBhIHNjcmlwdCBpbiB0aGUKK3ZlbnYncyBiaW5hcnkgZGlyZWN0b3J5LiBUaGUgaW52b2NhdGlvbiBvZiB0aGUgc2NyaXB0IGlzIHBsYXRmb3JtLXNwZWNpZmljOiBvbgorYSBQb3NpeCBwbGF0Zm9ybSwgeW91IHdvdWxkIHR5cGljYWxseSBkbzo6CisKKyAgICAkIHNvdXJjZSA8dmVudj4vYmluL2FjdGl2YXRlCisKK3doZXJlYXMgb24gV2luZG93cywgeW91IG1pZ2h0IGRvOjoKKworICAgIEM6XD4gPHZlbnY+L1NjcmlwdHMvYWN0aXZhdGUKKworaWYgeW91IGFyZSB1c2luZyB0aGUgYGBjbWQuZXhlYGAgc2hlbGwsIG9yIHBlcmhhcHM6OgorCisgICAgUFMgQzpcPiA8dmVudj4vU2NyaXB0cy9BY3RpdmF0ZS5wczEKKworaWYgeW91IHVzZSBQb3dlclNoZWxsLgorCitZb3UgZG9uJ3Qgc3BlY2lmaWNhbGx5ICpuZWVkKiB0byBhY3RpdmF0ZSBhbiBlbnZpcm9ubWVudDsgYWN0aXZhdGlvbiBqdXN0CitwcmVwZW5kcyB0aGUgdmVudidzIGJpbmFyeSBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCBzbyB0aGF0ICJweXRob24iIGludm9rZXMgdGhlCit2ZW52J3MgUHl0aG9uIGludGVycHJldGVyIGFuZCB5b3UgY2FuIHJ1biBpbnN0YWxsZWQgc2NyaXB0cyB3aXRob3V0IGhhdmluZyB0bwordXNlIHRoZWlyIGZ1bGwgcGF0aC4gSG93ZXZlciwgYWxsIHNjcmlwdHMgaW5zdGFsbGVkIGluIGEgdmVudiBzaG91bGQgYmUKK3J1bm5hYmxlIHdpdGhvdXQgYWN0aXZhdGluZyBpdCwgYW5kIHJ1biB3aXRoIHRoZSB2ZW52J3MgUHl0aG9uIGF1dG9tYXRpY2FsbHkuCisKK1lvdSBjYW4gZGVhY3RpdmF0ZSBhIHZlbnYgYnkgdHlwaW5nICJkZWFjdGl2YXRlIiBpbiB5b3VyIHNoZWxsLiBUaGUgZXhhY3QKK21lY2hhbmlzbSBpcyBwbGF0Zm9ybS1zcGVjaWZpYzogZm9yIGV4YW1wbGUsIHRoZSBCYXNoIGFjdGl2YXRpb24gc2NyaXB0IGRlZmluZXMKK2EgImRlYWN0aXZhdGUiIGZ1bmN0aW9uLCB3aGVyZWFzIG9uIFdpbmRvd3MgdGhlcmUgYXJlIHNlcGFyYXRlIHNjcmlwdHMgY2FsbGVkCitgYGRlYWN0aXZhdGUuYmF0YGAgYW5kIGBgRGVhY3RpdmF0ZS5wczFgYCB3aGljaCBhcmUgaW5zdGFsbGVkIHdoZW4gdGhlIHZlbnYgaXMKK2NyZWF0ZWQuCisKZGlmZiAtLWdpdCBhL0RvYy91c2luZy93aW5kb3dzLnJzdCBiL0RvYy91c2luZy93aW5kb3dzLnJzdAppbmRleCA3NDJhMjkwLi41MTE1MmRmIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QKKysrIGIvRG9jL3VzaW5nL3dpbmRvd3MucnN0CkBAIC04Miw2ICs4Miw4IEBACiBzZXR0aW5ncyBpbiBXaW5kb3dzLgogCiAKKy4uIF9zZXR0aW5nLWVudnZhcnM6CisKIEV4Y3Vyc3VzOiBTZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTEzMywxOCArMTM1LDI4IEBACiBGaW5kaW5nIHRoZSBQeXRob24gZXhlY3V0YWJsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKwogQmVzaWRlcyB1c2luZyB0aGUgYXV0b21hdGljYWxseSBjcmVhdGVkIHN0YXJ0IG1lbnUgZW50cnkgZm9yIHRoZSBQeXRob24KLWludGVycHJldGVyLCB5b3UgbWlnaHQgd2FudCB0byBzdGFydCBQeXRob24gaW4gdGhlIERPUyBwcm9tcHQuICBUbyBtYWtlIHRoaXMKLXdvcmssIHlvdSBuZWVkIHRvIHNldCB5b3VyIDplbnZ2YXI6YCVQQVRIJWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUKLWRpcmVjdG9yeSBvZiB5b3VyIFB5dGhvbiBkaXN0cmlidXRpb24sIGRlbGltaXRlZCBieSBhIHNlbWljb2xvbiBmcm9tIG90aGVyCi1lbnRyaWVzLiAgQW4gZXhhbXBsZSB2YXJpYWJsZSBjb3VsZCBsb29rIGxpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3bwotZW50cmllcyBhcmUgV2luZG93cycgZGVmYXVsdCk6OgoraW50ZXJwcmV0ZXIsIHlvdSBtaWdodCB3YW50IHRvIHN0YXJ0IFB5dGhvbiBpbiB0aGUgY29tbWFuZCBwcm9tcHQuIEFzIG9mCitQeXRob24gMy4zLCB0aGUgaW5zdGFsbGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KIAotICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQeXRob24yNQorQXQgdGhlICJDdXN0b21pemUgUHl0aG9uIDMuMyIgc2NyZWVuLCBhbiBvcHRpb24gY2FsbGVkCisiQWRkIHB5dGhvbi5leGUgdG8gc2VhcmNoIHBhdGgiIGNhbiBiZSBlbmFibGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBwbGFjZQoreW91ciBpbnN0YWxsYXRpb24gaW50byB0aGUgOmVudnZhcjpgJVBBVEglYC4gVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUKKzpjb21tYW5kOmBweXRob25gIHRvIHJ1biB0aGUgaW50ZXJwcmV0ZXIuIFRodXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIHlvdXIKK3NjcmlwdHMgd2l0aCBjb21tYW5kIGxpbmUgb3B0aW9ucywgc2VlIDpyZWY6YHVzaW5nLW9uLWNtZGxpbmVgIGRvY3VtZW50YXRpb24uCiAKLVR5cGluZyA6Y29tbWFuZDpgcHl0aG9uYCBvbiB5b3VyIGNvbW1hbmQgcHJvbXB0IHdpbGwgbm93IGZpcmUgdXAgdGhlIFB5dGhvbgotaW50ZXJwcmV0ZXIuICBUaHVzLCB5b3UgY2FuIGFsc28gZXhlY3V0ZSB5b3VyIHNjcmlwdHMgd2l0aCBjb21tYW5kIGxpbmUgb3B0aW9ucywKLXNlZSA6cmVmOmB1c2luZy1vbi1jbWRsaW5lYCBkb2N1bWVudGF0aW9uLgorSWYgeW91IGRvbid0IGVuYWJsZSB0aGlzIG9wdGlvbiBhdCBpbnN0YWxsIHRpbWUsIHlvdSBjYW4gYWx3YXlzIHJlLXJ1biB0aGUKK2luc3RhbGxlciB0byBjaG9vc2UgaXQuCisKK1RoZSBhbHRlcm5hdGl2ZSBpcyBtYW51YWxseSBtb2RpZnlpbmcgdGhlIDplbnZ2YXI6YCVQQVRIJWAgdXNpbmcgdGhlCitkaXJlY3Rpb25zIGluIDpyZWY6YHNldHRpbmctZW52dmFyc2AuIFlvdSBuZWVkIHRvIHNldCB5b3VyIDplbnZ2YXI6YCVQQVRIJWAKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvIGluY2x1ZGUgdGhlIGRpcmVjdG9yeSBvZiB5b3VyIFB5dGhvbiBkaXN0cmlidXRpb24sCitkZWxpbWl0ZWQgYnkgYSBzZW1pY29sb24gZnJvbSBvdGhlciBlbnRyaWVzLiBBbiBleGFtcGxlIHZhcmlhYmxlIGNvdWxkIGxvb2sKK2xpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3byBlbnRyaWVzIGFyZSBXaW5kb3dzJyBkZWZhdWx0KTo6CisKKyAgICBDOlxXSU5ET1dTXHN5c3RlbTMyO0M6XFdJTkRPV1M7QzpcUHl0aG9uMzMKIAogCiBGaW5kaW5nIG1vZHVsZXMKQEAgLTIwMywxMyArMjE1LDE5IEBACiBFeGVjdXRpbmcgc2NyaXB0cwogLS0tLS0tLS0tLS0tLS0tLS0KIAotUHl0aG9uIHNjcmlwdHMgKGZpbGVzIHdpdGggdGhlIGV4dGVuc2lvbiBgYC5weWBgKSB3aWxsIGJlIGV4ZWN1dGVkIGJ5Ci06cHJvZ3JhbTpgcHl0aG9uLmV4ZWAgYnkgZGVmYXVsdC4gIFRoaXMgZXhlY3V0YWJsZSBvcGVucyBhIHRlcm1pbmFsLCB3aGljaCBzdGF5cwotb3BlbiBldmVuIGlmIHRoZSBwcm9ncmFtIHVzZXMgYSBHVUkuICBJZiB5b3UgZG8gbm90IHdhbnQgdGhpcyB0byBoYXBwZW4sIHVzZSB0aGUKLWV4dGVuc2lvbiBgYC5weXdgYCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzY3JpcHQgdG8gYmUgZXhlY3V0ZWQgYnkKLTpwcm9ncmFtOmBweXRob253LmV4ZWAgYnkgZGVmYXVsdCAoYm90aCBleGVjdXRhYmxlcyBhcmUgbG9jYXRlZCBpbiB0aGUgdG9wLWxldmVsCi1vZiB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24gZGlyZWN0b3J5KS4gIFRoaXMgc3VwcHJlc3NlcyB0aGUgdGVybWluYWwgd2luZG93IG9uCi1zdGFydHVwLgorQXMgb2YgUHl0aG9uIDMuMywgUHl0aG9uIGluY2x1ZGVzIGEgbGF1bmNoZXIgd2hpY2ggZmFjaWxpdGF0ZXMgcnVubmluZyBQeXRob24KK3NjcmlwdHMuIFNlZSA6cmVmOmBsYXVuY2hlcmAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK0V4ZWN1dGluZyBzY3JpcHRzIHdpdGhvdXQgdGhlIFB5dGhvbiBsYXVuY2hlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dpdGhvdXQgdGhlIFB5dGhvbiBsYXVuY2hlciBpbnN0YWxsZWQsIFB5dGhvbiBzY3JpcHRzIChmaWxlcyB3aXRoIHRoZSBleHRlbnNpb24KK2BgLnB5YGApIHdpbGwgYmUgZXhlY3V0ZWQgYnkgOnByb2dyYW06YHB5dGhvbi5leGVgIGJ5IGRlZmF1bHQuICBUaGlzIGV4ZWN1dGFibGUKK29wZW5zIGEgdGVybWluYWwsIHdoaWNoIHN0YXlzIG9wZW4gZXZlbiBpZiB0aGUgcHJvZ3JhbSB1c2VzIGEgR1VJLiAgSWYgeW91IGRvCitub3Qgd2FudCB0aGlzIHRvIGhhcHBlbiwgdXNlIHRoZSBleHRlbnNpb24gYGAucHl3YGAgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2NyaXB0Cit0byBiZSBleGVjdXRlZCBieSA6cHJvZ3JhbTpgcHl0aG9udy5leGVgIGJ5IGRlZmF1bHQgKGJvdGggZXhlY3V0YWJsZXMgYXJlCitsb2NhdGVkIGluIHRoZSB0b3AtbGV2ZWwgb2YgeW91ciBQeXRob24gaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSkuICBUaGlzCitzdXBwcmVzc2VzIHRoZSB0ZXJtaW5hbCB3aW5kb3cgb24gc3RhcnR1cC4KIAogWW91IGNhbiBhbHNvIG1ha2UgYWxsIGBgLnB5YGAgc2NyaXB0cyBleGVjdXRlIHdpdGggOnByb2dyYW06YHB5dGhvbncuZXhlYCwKIHNldHRpbmcgdGhpcyB0aHJvdWdoIHRoZSB1c3VhbCBmYWNpbGl0aWVzLCBmb3IgZXhhbXBsZSAobWlnaHQgcmVxdWlyZQpAQCAtMjI1LDYgKzI0MywyNTAgQEAKICAgICAgIGZ0eXBlIFB5dGhvbi5GaWxlPUM6XFBhdGhcdG9ccHl0aG9udy5leGUgIiUxIiAlKgogCiAKKy4uIF9sYXVuY2hlcjoKKworUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSBQeXRob24gbGF1bmNoZXIgZm9yIFdpbmRvd3MgaXMgYSB1dGlsaXR5IHdoaWNoIGFpZHMgaW4gdGhlIGxvY2F0aW9uIGFuZAorZXhlY3V0aW9uIG9mIGRpZmZlcmVudCBQeXRob24gdmVyc2lvbnMuICBJdCBhbGxvd3Mgc2NyaXB0cyAob3IgdGhlCitjb21tYW5kLWxpbmUpIHRvIGluZGljYXRlIGEgcHJlZmVyZW5jZSBmb3IgYSBzcGVjaWZpYyBQeXRob24gdmVyc2lvbiwgYW5kCit3aWxsIGxvY2F0ZSBhbmQgZXhlY3V0ZSB0aGF0IHZlcnNpb24uCisKK0dldHRpbmcgc3RhcnRlZAorLS0tLS0tLS0tLS0tLS0tCisKK0Zyb20gdGhlIGNvbW1hbmQtbGluZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1lvdSBzaG91bGQgZW5zdXJlIHRoZSBsYXVuY2hlciBpcyBvbiB5b3VyIFBBVEggLSBkZXBlbmRpbmcgb24gaG93IGl0IHdhcworaW5zdGFsbGVkIGl0IG1heSBhbHJlYWR5IGJlIHRoZXJlLCBidXQgY2hlY2sganVzdCBpbiBjYXNlIGl0IGlzIG5vdC4KKworRnJvbSBhIGNvbW1hbmQtcHJvbXB0LCBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworOjoKKworICBweQorCitZb3Ugc2hvdWxkIGZpbmQgdGhhdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCB5b3UgaGF2ZSBpbnN0YWxsZWQgaXMKK3N0YXJ0ZWQgLSBpdCBjYW4gYmUgZXhpdGVkIGFzIG5vcm1hbCwgYW5kIGFueSBhZGRpdGlvbmFsIGNvbW1hbmQtbGluZQorYXJndW1lbnRzIHNwZWNpZmllZCB3aWxsIGJlIHNlbnQgZGlyZWN0bHkgdG8gUHl0aG9uLgorCitJZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gMi54IGluc3RhbGxlZCAoZS5nLiwgMi42IGFuZCAyLjcpIHlvdQord2lsbCBoYXZlIG5vdGljZWQgdGhhdCBQeXRob24gMi43IHdhcyBzdGFydGVkIC0gdG8gbGF1bmNoIFB5dGhvbiAyLjYsIHRyeSB0aGUKK2NvbW1hbmQ6CisKKzo6CisKKyAgcHkgLTIuNgorCitJZiB5b3UgaGF2ZSBhIFB5dGhvbiAzLnggaW5zdGFsbGVkLCB0cnkgdGhlIGNvbW1hbmQ6CisKKzo6CisKKyAgcHkgLTMKKworWW91IHNob3VsZCBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMy54IHN0YXJ0cy4KKworRnJvbSBhIHNjcmlwdAorXl5eXl5eXl5eXl5eXgorCitMZXQncyBjcmVhdGUgYSB0ZXN0IFB5dGhvbiBzY3JpcHQgLSBjcmVhdGUgYSBmaWxlIGNhbGxlZCBgYGhlbGxvLnB5YGAgd2l0aCB0aGUKK2ZvbGxvd2luZyBjb250ZW50cworCis6OgorCisgICAgIyEgcHl0aG9uCisgICAgaW1wb3J0IHN5cworICAgIHN5cy5zdGRvdXQud3JpdGUoImhlbGxvIGZyb20gUHl0aG9uICVzXG4iICUgKHN5cy52ZXJzaW9uLCkpCisKK0Zyb20gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBoZWxsby5weSBsaXZlcywgZXhlY3V0ZSB0aGUgY29tbWFuZDoKKworOjoKKworICAgcHkgaGVsbG8ucHkKKworWW91IHNob3VsZCBub3RpY2UgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHlvdXIgbGF0ZXN0IFB5dGhvbiAyLnggaW5zdGFsbGF0aW9uCitpcyBwcmludGVkLiAgTm93IHRyeSBjaGFuZ2luZyB0aGUgZmlyc3QgbGluZSB0byBiZToKKworOjoKKworICAgICMhIHB5dGhvbjMKKworUmUtZXhlY3V0aW5nIHRoZSBjb21tYW5kIHNob3VsZCBub3cgcHJpbnQgdGhlIGxhdGVzdCBQeXRob24gMy54IGluZm9ybWF0aW9uLgorQXMgd2l0aCB0aGUgYWJvdmUgY29tbWFuZC1saW5lIGV4YW1wbGVzLCB5b3UgY2FuIHNwZWNpZnkgYSBtb3JlIGV4cGxpY2l0Cit2ZXJzaW9uIHF1YWxpZmllci4gIEFzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjYgaW5zdGFsbGVkLCB0cnkgY2hhbmdpbmcgdGhlCitmaXJzdCBsaW5lIHRvIGBgIyEgcHl0aG9uMi42YGAgYW5kIHlvdSBzaG91bGQgZmluZCB0aGUgMi42IHZlcnNpb24KK2luZm9ybWF0aW9uIHByaW50ZWQuCisKK0Zyb20gZmlsZSBhc3NvY2lhdGlvbnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlIGxhdW5jaGVyIHNob3VsZCBoYXZlIGJlZW4gYXNzb2NpYXRlZCB3aXRoIFB5dGhvbiBmaWxlcyAoaS5lLiBgYC5weWBgLAorYGAucHl3YGAsIGBgLnB5Y2BgLCBgYC5weW9gYCBmaWxlcykgd2hlbiBpdCB3YXMgaW5zdGFsbGVkLiAgVGhpcyBtZWFucyB0aGF0Cit3aGVuIHlvdSBkb3VibGUtY2xpY2sgb24gb25lIG9mIHRoZXNlIGZpbGVzIGZyb20gV2luZG93cyBleHBsb3JlciB0aGUgbGF1bmNoZXIKK3dpbGwgYmUgdXNlZCwgYW5kIHRoZXJlZm9yZSB5b3UgY2FuIHVzZSB0aGUgc2FtZSBmYWNpbGl0aWVzIGRlc2NyaWJlZCBhYm92ZSB0bworaGF2ZSB0aGUgc2NyaXB0IHNwZWNpZnkgdGhlIHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuCisKK1RoZSBrZXkgYmVuZWZpdCBvZiB0aGlzIGlzIHRoYXQgYSBzaW5nbGUgbGF1bmNoZXIgY2FuIHN1cHBvcnQgbXVsdGlwbGUgUHl0aG9uCit2ZXJzaW9ucyBhdCB0aGUgc2FtZSB0aW1lIGRlcGVuZGluZyBvbiB0aGUgY29udGVudHMgb2YgdGhlIGZpcnN0IGxpbmUuCisKK1NoZWJhbmcgTGluZXMKKy0tLS0tLS0tLS0tLS0KKworSWYgdGhlIGZpcnN0IGxpbmUgb2YgYSBzY3JpcHQgZmlsZSBzdGFydHMgd2l0aCBgYCMhYGAsIGl0IGlzIGtub3duIGFzIGEKKyJzaGViYW5nIiBsaW5lLiAgTGludXggYW5kIG90aGVyIFVuaXggbGlrZSBvcGVyYXRpbmcgc3lzdGVtcyBoYXZlIG5hdGl2ZQorc3VwcG9ydCBmb3Igc3VjaCBsaW5lcyBhbmQgYXJlIGNvbW1vbmx5IHVzZWQgb24gc3VjaCBzeXN0ZW1zIHRvIGluZGljYXRlIGhvdworYSBzY3JpcHQgc2hvdWxkIGJlIGV4ZWN1dGVkLiAgVGhpcyBsYXVuY2hlciBhbGxvd3MgdGhlIHNhbWUgZmFjaWxpdGllcyB0byBiZQordXNpbmcgd2l0aCBQeXRob24gc2NyaXB0cyBvbiBXaW5kb3dzIGFuZCB0aGUgZXhhbXBsZXMgYWJvdmUgZGVtb25zdHJhdGUgdGhlaXIKK3VzZS4KKworVG8gYWxsb3cgc2hlYmFuZyBsaW5lcyBpbiBQeXRob24gc2NyaXB0cyB0byBiZSBwb3J0YWJsZSBiZXR3ZWVuIFVuaXggYW5kCitXaW5kb3dzLCB0aGlzIGxhdW5jaGVyIHN1cHBvcnRzIGEgbnVtYmVyIG9mICd2aXJ0dWFsJyBjb21tYW5kcyB0byBzcGVjaWZ5Cit3aGljaCBpbnRlcnByZXRlciB0byB1c2UuICBUaGUgc3VwcG9ydGVkIHZpcnR1YWwgY29tbWFuZHMgYXJlOgorCisqIGBgL3Vzci9iaW4vZW52IHB5dGhvbmBgCisqIGBgL3Vzci9iaW4vcHl0aG9uYGAKKyogYGAvdXNyL2xvY2FsL2Jpbi9weXRob25gYAorKiBgYHB5dGhvbmBgCisKK0ZvciBleGFtcGxlLCBpZiB0aGUgZmlyc3QgbGluZSBvZiB5b3VyIHNjcmlwdCBzdGFydHMgd2l0aAorCis6OgorCisgICMhIC91c3IvYmluL3B5dGhvbgorCitUaGUgZGVmYXVsdCBQeXRob24gd2lsbCBiZSBsb2NhdGVkIGFuZCB1c2VkLiAgQXMgbWFueSBQeXRob24gc2NyaXB0cyB3cml0dGVuCit0byB3b3JrIG9uIFVuaXggd2lsbCBhbHJlYWR5IGhhdmUgdGhpcyBsaW5lLCB5b3Ugc2hvdWxkIGZpbmQgdGhlc2Ugc2NyaXB0cyBjYW4KK2JlIHVzZWQgYnkgdGhlIGxhdW5jaGVyIHdpdGhvdXQgbW9kaWZpY2F0aW9uLiAgSWYgeW91IGFyZSB3cml0aW5nIGEgbmV3IHNjcmlwdAorb24gV2luZG93cyB3aGljaCB5b3UgaG9wZSB3aWxsIGJlIHVzZWZ1bCBvbiBVbml4LCB5b3Ugc2hvdWxkIHVzZSBvbmUgb2YgdGhlCitzaGViYW5nIGxpbmVzIHN0YXJ0aW5nIHdpdGggYGAvdXNyYGAuCisKK0FyZ3VtZW50cyBpbiBzaGViYW5nIGxpbmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc2hlYmFuZyBsaW5lcyBjYW4gYWxzbyBzcGVjaWZ5IGFkZGl0aW9uYWwgb3B0aW9ucyB0byBiZSBwYXNzZWQgdG8gdGhlCitQeXRob24gaW50ZXJwcmV0ZXIuICBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgYSBzaGViYW5nIGxpbmU6CisKKzo6CisKKyAgIyEgL3Vzci9iaW4vcHl0aG9uIC12CisKK1RoZW4gUHl0aG9uIHdpbGwgYmUgc3RhcnRlZCB3aXRoIHRoZSBgYC12YGAgb3B0aW9uCisKK0N1c3RvbWl6YXRpb24KKy0tLS0tLS0tLS0tLS0KKworQ3VzdG9taXphdGlvbiB2aWEgSU5JIGZpbGVzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworICAgIFR3byAuaW5pIGZpbGVzIHdpbGwgYmUgc2VhcmNoZWQgYnkgdGhlIGxhdW5jaGVyIC0gYGBweS5pbmlgYCBpbiB0aGUKKyAgICBjdXJyZW50IHVzZXIncyAiYXBwbGljYXRpb24gZGF0YSIgZGlyZWN0b3J5IChpLmUuIHRoZSBkaXJlY3RvcnkgcmV0dXJuZWQKKyAgICBieSBjYWxsaW5nIHRoZSBXaW5kb3dzIGZ1bmN0aW9uIFNIR2V0Rm9sZGVyUGF0aCB3aXRoIENTSURMX0xPQ0FMX0FQUERBVEEpCisgICAgYW5kIGBgcHkuaW5pYGAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBsYXVuY2hlci4gIFRoZSBzYW1lIC5pbmkKKyAgICBmaWxlcyBhcmUgdXNlZCBmb3IgYm90aCB0aGUgJ2NvbnNvbGUnIHZlcnNpb24gb2YgdGhlIGxhdW5jaGVyIChpLmUuCisgICAgcHkuZXhlKSBhbmQgZm9yIHRoZSAnd2luZG93cycgdmVyc2lvbiAoaS5lLiBweXcuZXhlKQorCisgICAgQ3VzdG9taXphdGlvbiBzcGVjaWZpZWQgaW4gdGhlICJhcHBsaWNhdGlvbiBkaXJlY3RvcnkiIHdpbGwgaGF2ZQorICAgIHByZWNlZGVuY2Ugb3ZlciB0aGUgb25lIG5leHQgdG8gdGhlIGV4ZWN1dGFibGUsIHNvIGEgdXNlciwgd2hvIG1heSBub3QKKyAgICBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUgLmluaSBmaWxlIG5leHQgdG8gdGhlIGxhdW5jaGVyLCBjYW4gb3ZlcnJpZGUKKyAgICBjb21tYW5kcyBpbiB0aGF0IGdsb2JhbCAuaW5pIGZpbGUpCisKK0N1c3RvbWl6aW5nIGRlZmF1bHQgUHl0aG9uIHZlcnNpb25zCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitJbiBzb21lIGNhc2VzLCBhIHZlcnNpb24gcXVhbGlmaWVyIGNhbiBiZSBpbmNsdWRlZCBpbiBhIGNvbW1hbmQgdG8gZGljdGF0ZQord2hpY2ggdmVyc2lvbiBvZiBQeXRob24gd2lsbCBiZSB1c2VkIGJ5IHRoZSBjb21tYW5kLiBBIHZlcnNpb24gcXVhbGlmaWVyCitzdGFydHMgd2l0aCBhIG1ham9yIHZlcnNpb24gbnVtYmVyIGFuZCBjYW4gb3B0aW9uYWxseSBiZSBmb2xsb3dlZCBieSBhIHBlcmlvZAorKCcuJykgYW5kIGEgbWlub3IgdmVyc2lvbiBzcGVjaWZpZXIuIElmIHRoZSBtaW5vciBxdWFsaWZpZXIgaXMgc3BlY2lmaWVkLCBpdAorbWF5IG9wdGlvbmFsbHkgYmUgZm9sbG93ZWQgYnkgIi0zMiIgdG8gaW5kaWNhdGUgdGhlIDMyLWJpdCBpbXBsZW1lbnRhdGlvbiBvZgordGhhdCB2ZXJzaW9uIGJlIHVzZWQuCisKK0ZvciBleGFtcGxlLCBhIHNoZWJhbmcgbGluZSBvZiBgYCMhcHl0aG9uYGAgaGFzIG5vIHZlcnNpb24gcXVhbGlmaWVyLCB3aGlsZQorYGAjIXB5dGhvbjNgYCBoYXMgYSB2ZXJzaW9uIHF1YWxpZmllciB3aGljaCBzcGVjaWZpZXMgb25seSBhIG1ham9yIHZlcnNpb24uCisKK0lmIG5vIHZlcnNpb24gcXVhbGlmaWVycyBhcmUgZm91bmQgaW4gYSBjb21tYW5kLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKK2BgUFlfUFlUSE9OYGAgY2FuIGJlIHNldCB0byBzcGVjaWZ5IHRoZSBkZWZhdWx0IHZlcnNpb24gcXVhbGlmaWVyIC0gdGhlIGRlZmF1bHQKK3ZhbHVlIGlzICIyIi4gTm90ZSB0aGlzIHZhbHVlIGNvdWxkIHNwZWNpZnkganVzdCBhIG1ham9yIHZlcnNpb24gKGUuZy4gIjIiKSBvcgorYSBtYWpvci5taW5vciBxdWFsaWZpZXIgKGUuZy4gIjIuNiIpLCBvciBldmVuIG1ham9yLm1pbm9yLTMyLgorCitJZiBubyBtaW5vciB2ZXJzaW9uIHF1YWxpZmllcnMgYXJlIGZvdW5kLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKK2BgUFlfUFlUSE9Oe21ham9yfWBgICh3aGVyZSBgYHttYWpvcn1gYCBpcyB0aGUgY3VycmVudCBtYWpvciB2ZXJzaW9uIHF1YWxpZmllcgorYXMgZGV0ZXJtaW5lZCBhYm92ZSkgY2FuIGJlIHNldCB0byBzcGVjaWZ5IHRoZSBmdWxsIHZlcnNpb24uIElmIG5vIHN1Y2ggb3B0aW9uCitpcyBmb3VuZCwgdGhlIGxhdW5jaGVyIHdpbGwgZW51bWVyYXRlIHRoZSBpbnN0YWxsZWQgUHl0aG9uIHZlcnNpb25zIGFuZCB1c2UKK3RoZSBsYXRlc3QgbWlub3IgcmVsZWFzZSBmb3VuZCBmb3IgdGhlIG1ham9yIHZlcnNpb24sIHdoaWNoIGlzIGxpa2VseSwKK2FsdGhvdWdoIG5vdCBndWFyYW50ZWVkLCB0byBiZSB0aGUgbW9zdCByZWNlbnRseSBpbnN0YWxsZWQgdmVyc2lvbiBpbiB0aGF0CitmYW1pbHkuCisKK09uIDY0LWJpdCBXaW5kb3dzIHdpdGggYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUKKyhtYWpvci5taW5vcikgUHl0aG9uIHZlcnNpb24gaW5zdGFsbGVkLCB0aGUgNjQtYml0IHZlcnNpb24gd2lsbCBhbHdheXMgYmUKK3ByZWZlcnJlZC4gVGhpcyB3aWxsIGJlIHRydWUgZm9yIGJvdGggMzItYml0IGFuZCA2NC1iaXQgaW1wbGVtZW50YXRpb25zIG9mIHRoZQorbGF1bmNoZXIgLSBhIDMyLWJpdCBsYXVuY2hlciB3aWxsIHByZWZlciB0byBleGVjdXRlIGEgNjQtYml0IFB5dGhvbiBpbnN0YWxsYXRpb24KK29mIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBpZiBhdmFpbGFibGUuIFRoaXMgaXMgc28gdGhlIGJlaGF2aW9yIG9mIHRoZSBsYXVuY2hlcgorY2FuIGJlIHByZWRpY3RlZCBrbm93aW5nIG9ubHkgd2hhdCB2ZXJzaW9ucyBhcmUgaW5zdGFsbGVkIG9uIHRoZSBQQyBhbmQKK3dpdGhvdXQgcmVnYXJkIHRvIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgaW5zdGFsbGVkIChpLmUuLCB3aXRob3V0IGtub3dpbmcKK3doZXRoZXIgYSAzMiBvciA2NC1iaXQgdmVyc2lvbiBvZiBQeXRob24gYW5kIGNvcnJlc3BvbmRpbmcgbGF1bmNoZXIgd2FzCitpbnN0YWxsZWQgbGFzdCkuIEFzIG5vdGVkIGFib3ZlLCBhbiBvcHRpb25hbCAiLTMyIiBzdWZmaXggY2FuIGJlIHVzZWQgb24gYQordmVyc2lvbiBzcGVjaWZpZXIgdG8gY2hhbmdlIHRoaXMgYmVoYXZpb3VyLgorCitFeGFtcGxlczoKKworKiBJZiBubyByZWxldmFudCBvcHRpb25zIGFyZSBzZXQsIHRoZSBjb21tYW5kcyBgYHB5dGhvbmBgIGFuZAorICBgYHB5dGhvbjJgYCB3aWxsIHVzZSB0aGUgbGF0ZXN0IFB5dGhvbiAyLnggdmVyc2lvbiBpbnN0YWxsZWQgYW5kCisgIHRoZSBjb21tYW5kIGBgcHl0aG9uM2BgIHdpbGwgdXNlIHRoZSBsYXRlc3QgUHl0aG9uIDMueCBpbnN0YWxsZWQuCisKKyogVGhlIGNvbW1hbmRzIGBgcHl0aG9uMy4xYGAgYW5kIGBgcHl0aG9uMi43YGAgd2lsbCBub3QgY29uc3VsdCBhbnkKKyAgb3B0aW9ucyBhdCBhbGwgYXMgdGhlIHZlcnNpb25zIGFyZSBmdWxseSBzcGVjaWZpZWQuCisKKyogSWYgYGBQWV9QWVRIT049M2BgLCB0aGUgY29tbWFuZHMgYGBweXRob25gYCBhbmQgYGBweXRob24zYGAgd2lsbCBib3RoIHVzZQorICB0aGUgbGF0ZXN0IGluc3RhbGxlZCBQeXRob24gMyB2ZXJzaW9uLgorCisqIElmIGBgUFlfUFlUSE9OPTMuMS0zMmBgLCB0aGUgY29tbWFuZCBgYHB5dGhvbmBgIHdpbGwgdXNlIHRoZSAzMi1iaXQKKyAgaW1wbGVtZW50YXRpb24gb2YgMy4xIHdoZXJlYXMgdGhlIGNvbW1hbmQgYGBweXRob24zYGAgd2lsbCB1c2UgdGhlIGxhdGVzdAorICBpbnN0YWxsZWQgUHl0aG9uIChQWV9QWVRIT04gd2FzIG5vdCBjb25zaWRlcmVkIGF0IGFsbCBhcyBhIG1ham9yCisgIHZlcnNpb24gd2FzIHNwZWNpZmllZC4pCisKKyogSWYgYGBQWV9QWVRIT049M2BgIGFuZCBgYFBZX1BZVEhPTjM9My4xYGAsIHRoZSBjb21tYW5kcworICBgYHB5dGhvbmBgIGFuZCBgYHB5dGhvbjNgYCB3aWxsIGJvdGggdXNlIHNwZWNpZmljYWxseSAzLjEKKworSW4gYWRkaXRpb24gdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzLCB0aGUgc2FtZSBzZXR0aW5ncyBjYW4gYmUgY29uZmlndXJlZAoraW4gdGhlIC5JTkkgZmlsZSB1c2VkIGJ5IHRoZSBsYXVuY2hlci4gIFRoZSBzZWN0aW9uIGluIHRoZSBJTkkgZmlsZSBpcworY2FsbGVkIGBgW2RlZmF1bHRzXWBgIGFuZCB0aGUga2V5IG5hbWUgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUKK2Vudmlyb25tZW50IHZhcmlhYmxlcyB3aXRob3V0IHRoZSBsZWFkaW5nIGBgUFlcX2BgIHByZWZpeCAoYW5kIG5vdGUgdGhhdAordGhlIGtleSBuYW1lcyBpbiB0aGUgSU5JIGZpbGUgYXJlIGNhc2UgaW5zZW5zaXRpdmUuKSAgVGhlIGNvbnRlbnRzIG9mCithbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aWxsIG92ZXJyaWRlIHRoaW5ncyBzcGVjaWZpZWQgaW4gdGhlIElOSSBmaWxlLgorCitGb3IgZXhhbXBsZToKKworKiBTZXR0aW5nIGBgUFlfUFlUSE9OPTMuMWBgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIElOSSBmaWxlIGNvbnRhaW5pbmc6CisKKzo6CisKKyAgW2RlZmF1bHRzXQorICBweXRob249My4xCisKKyogU2V0dGluZyBgYFBZX1BZVEhPTj0zYGAgYW5kIGBgUFlfUFlUSE9OMz0zLjFgYCBpcyBlcXVpdmFsZW50IHRvIHRoZSBJTkkgZmlsZQorICBjb250YWluaW5nOgorCis6OgorCisgIFtkZWZhdWx0c10KKyAgcHl0aG9uPTMKKyAgcHl0aG9uMz0zLjEKKworRGlhZ25vc3RpY3MKKy0tLS0tLS0tLS0tCisKK0lmIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGBgUFlMQVVOQ0hfREVCVUdgYCBpcyBzZXQgKHRvIGFueSB2YWx1ZSksIHRoZQorbGF1bmNoZXIgd2lsbCBwcmludCBkaWFnbm9zdGljIGluZm9ybWF0aW9uIHRvIHN0ZGVyciAoaS5lLiB0byB0aGUgY29uc29sZSkuCitXaGlsZSB0aGlzIGluZm9ybWF0aW9uIG1hbmFnZXMgdG8gYmUgc2ltdWx0YW5lb3VzbHkgdmVyYm9zZSAqYW5kKiB0ZXJzZSwgaXQKK3Nob3VsZCBhbGxvdyB5b3UgdG8gc2VlIHdoYXQgdmVyc2lvbnMgb2YgUHl0aG9uIHdlcmUgbG9jYXRlZCwgd2h5IGEKK3BhcnRpY3VsYXIgdmVyc2lvbiB3YXMgY2hvc2VuIGFuZCB0aGUgZXhhY3QgY29tbWFuZC1saW5lIHVzZWQgdG8gZXhlY3V0ZSB0aGUKK3RhcmdldCBQeXRob24uCisKKwogQWRkaXRpb25hbCBtb2R1bGVzCiA9PT09PT09PT09PT09PT09PT0KIApAQCAtMzQxLDMgKzYwMyw3IEBACiAgICBgQSBQeXRob24gZm9yIFdpbmRvd3MgVHV0b3JpYWwgPGh0dHA6Ly93d3cuaW1sYWRyaXMuY29tL1NjcmlwdHMvUHl0aG9uRm9yV2luZG93cy5odG1sPmBfCiAgICAgICBieSBBbWFuZGEgQmlybWluZ2hhbSwgMjAwNAogCisgICA6cGVwOmAzOTdgIC0gUHl0aG9uIGxhdW5jaGVyIGZvciBXaW5kb3dzCisgICAgICBUaGUgcHJvcG9zYWwgZm9yIHRoZSBsYXVuY2hlciB0byBiZSBpbmNsdWRlZCBpbiB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KKworCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi4wLnJzdCBiL0RvYy93aGF0c25ldy8yLjAucnN0CmluZGV4IDg1MGU1N2QuLjY0YjkwOGIgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjAucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjAucnN0CkBAIC0xNjYsNyArMTY2LDcgQEAKIHJlZ2lzdGVyaW5nIG5ldyBlbmNvZGluZ3MgdGhhdCBhcmUgdGhlbiBhdmFpbGFibGUgdGhyb3VnaG91dCBhIFB5dGhvbiBwcm9ncmFtLgogSWYgYW4gZW5jb2RpbmcgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBlbmNvZGluZyBpcyB1c3VhbGx5IDctYml0IEFTQ0lJLAogdGhvdWdoIGl0IGNhbiBiZSBjaGFuZ2VkIGZvciB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24gYnkgY2FsbGluZyB0aGUKLTpmdW5jOmBzeXMuc2V0ZGVmYXVsdGVuY29kaW5nKGVuY29kaW5nKWAgZnVuY3Rpb24gaW4gYSBjdXN0b21pc2VkIHZlcnNpb24gb2YKK2Bgc3lzLnNldGRlZmF1bHRlbmNvZGluZyhlbmNvZGluZylgYCBmdW5jdGlvbiBpbiBhIGN1c3RvbWlzZWQgdmVyc2lvbiBvZgogOmZpbGU6YHNpdGUucHlgLgogCiBDb21iaW5pbmcgOC1iaXQgYW5kIFVuaWNvZGUgc3RyaW5ncyBhbHdheXMgY29lcmNlcyB0byBVbmljb2RlLCB1c2luZyB0aGUgZGVmYXVsdApAQCAtMjAzLDcgKzIwMyw3IEBACiAKIFRoZSA6bW9kOmBjb2RlY3NgIG1vZHVsZSBjb250YWlucyBmdW5jdGlvbnMgdG8gbG9vayB1cCBleGlzdGluZyBlbmNvZGluZ3MgYW5kCiByZWdpc3RlciBuZXcgb25lcy4gIFVubGVzcyB5b3Ugd2FudCB0byBpbXBsZW1lbnQgYSBuZXcgZW5jb2RpbmcsIHlvdSdsbCBtb3N0Ci1vZnRlbiB1c2UgdGhlIDpmdW5jOmBjb2RlY3MubG9va3VwKGVuY29kaW5nKWAgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgYQorb2Z0ZW4gdXNlIHRoZSBgYGNvZGVjcy5sb29rdXAoZW5jb2RpbmcpYGAgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgYQogNC1lbGVtZW50IHR1cGxlOiBgYChlbmNvZGVfZnVuYywgZGVjb2RlX2Z1bmMsIHN0cmVhbV9yZWFkZXIsIHN0cmVhbV93cml0ZXIpYGAuCiAKICogKmVuY29kZV9mdW5jKiBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBVbmljb2RlIHN0cmluZywgYW5kIHJldHVybnMgYSAyLXR1cGxlCkBAIC02MDAsNyArNjAwLDcgQEAKIENoYW5nZXMgdG8gQnVpbHQtaW4gRnVuY3Rpb25zCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1BIG5ldyBidWlsdC1pbiwgOmZ1bmM6YHppcChzZXExLCBzZXEyLCAuLi4pYCwgaGFzIGJlZW4gYWRkZWQuICA6ZnVuYzpgemlwYAorQSBuZXcgYnVpbHQtaW4sIGBgemlwKHNlcTEsIHNlcTIsIC4uLilgYCwgaGFzIGJlZW4gYWRkZWQuICA6ZnVuYzpgemlwYAogcmV0dXJucyBhIGxpc3Qgb2YgdHVwbGVzIHdoZXJlIGVhY2ggdHVwbGUgY29udGFpbnMgdGhlIGktdGggZWxlbWVudCBmcm9tIGVhY2ggb2YKIHRoZSBhcmd1bWVudCBzZXF1ZW5jZXMuICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIDpmdW5jOmB6aXBgIGFuZCBgYG1hcChOb25lLAogc2VxMSwgc2VxMilgYCBpcyB0aGF0IDpmdW5jOmBtYXBgIHBhZHMgdGhlIHNlcXVlbmNlcyB3aXRoIGBgTm9uZWBgIGlmIHRoZQpAQCAtNjE5LDcgKzYxOSw3IEBACiB3b3VsZCBiZSBgYCgyLCAwLCAxLCAnYmV0YScsIDEpYGAuICpsZXZlbCogaXMgYSBzdHJpbmcgc3VjaCBhcyBgYCJhbHBoYSJgYCwKIGBgImJldGEiYGAsIG9yIGBgImZpbmFsImBgIGZvciBhIGZpbmFsIHJlbGVhc2UuCiAKLURpY3Rpb25hcmllcyBoYXZlIGFuIG9kZCBuZXcgbWV0aG9kLCA6bWV0aDpgc2V0ZGVmYXVsdChrZXksIGRlZmF1bHQpYCwgd2hpY2gKK0RpY3Rpb25hcmllcyBoYXZlIGFuIG9kZCBuZXcgbWV0aG9kLCBgYHNldGRlZmF1bHQoa2V5LCBkZWZhdWx0KWBgLCB3aGljaAogYmVoYXZlcyBzaW1pbGFybHkgdG8gdGhlIGV4aXN0aW5nIDptZXRoOmBnZXRgIG1ldGhvZC4gIEhvd2V2ZXIsIGlmIHRoZSBrZXkgaXMKIG1pc3NpbmcsIDptZXRoOmBzZXRkZWZhdWx0YCBib3RoIHJldHVybnMgdGhlIHZhbHVlIG9mICpkZWZhdWx0KiBhcyA6bWV0aDpgZ2V0YAogd291bGQgZG8sIGFuZCBhbHNvIGluc2VydHMgaXQgaW50byB0aGUgZGljdGlvbmFyeSBhcyB0aGUgdmFsdWUgZm9yICprZXkqLiAgVGh1cywKQEAgLTEwMzgsNyArMTAzOCw3IEBACiBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIFNvY2tldCBMYXllciwgd2hpY2ggZW5jcnlwdHMgdGhlIGRhdGEgYmVpbmcKIHNlbnQgb3ZlciBhIHNvY2tldC4gIFdoZW4gY29tcGlsaW5nIFB5dGhvbiwgeW91IGNhbiBlZGl0IDpmaWxlOmBNb2R1bGVzL1NldHVwYAogdG8gaW5jbHVkZSBTU0wgc3VwcG9ydCwgd2hpY2ggYWRkcyBhbiBhZGRpdGlvbmFsIGZ1bmN0aW9uIHRvIHRoZSA6bW9kOmBzb2NrZXRgCi1tb2R1bGU6IDpmdW5jOmBzb2NrZXQuc3NsKHNvY2tldCwga2V5ZmlsZSwgY2VydGZpbGUpYCwgd2hpY2ggdGFrZXMgYSBzb2NrZXQKK21vZHVsZTogYGBzb2NrZXQuc3NsKHNvY2tldCwga2V5ZmlsZSwgY2VydGZpbGUpYGAsIHdoaWNoIHRha2VzIGEgc29ja2V0CiBvYmplY3QgYW5kIHJldHVybnMgYW4gU1NMIHNvY2tldC4gIFRoZSA6bW9kOmBodHRwbGliYCBhbmQgOm1vZDpgdXJsbGliYCBtb2R1bGVzCiB3ZXJlIGFsc28gY2hhbmdlZCB0byBzdXBwb3J0IGBgaHR0cHM6Ly9gYCBVUkxzLCB0aG91Z2ggbm8gb25lIGhhcyBpbXBsZW1lbnRlZAogRlRQIG9yIFNNVFAgb3ZlciBTU0wuCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi4xLnJzdCBiL0RvYy93aGF0c25ldy8yLjEucnN0CmluZGV4IDExN2FmMTAuLmIxYWI0OGUgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjEucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjEucnN0CkBAIC0yMDQsNyArMjA0LDcgQEAKIGxpc3QsIG9yIGFueSBvdGhlciBQeXRob24gb2JqZWN0LiAgQWx0ZXJuYXRpdmVseSB0aGV5IGNhbiByYWlzZSBhbiBleGNlcHRpb24gaWYKIHRoZSBjb21wYXJpc29uIGlzIGltcG9zc2libGUsIGluY29uc2lzdGVudCwgb3Igb3RoZXJ3aXNlIG1lYW5pbmdsZXNzLgogCi1UaGUgYnVpbHQtaW4gOmZ1bmM6YGNtcChBLEIpYCBmdW5jdGlvbiBjYW4gdXNlIHRoZSByaWNoIGNvbXBhcmlzb24gbWFjaGluZXJ5LAorVGhlIGJ1aWx0LWluIGBgY21wKEEsQilgYCBmdW5jdGlvbiBjYW4gdXNlIHRoZSByaWNoIGNvbXBhcmlzb24gbWFjaGluZXJ5LAogYW5kIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHNwZWNpZnlpbmcgd2hpY2ggY29tcGFyaXNvbiBvcGVyYXRpb24gdG8KIHVzZTsgdGhpcyBpcyBnaXZlbiBhcyBvbmUgb2YgdGhlIHN0cmluZ3MgYGAiPCJgYCwgYGAiPD0iYGAsIGBgIj4iYGAsIGBgIj49ImBgLAogYGAiPT0iYGAsIG9yIGBgIiE9ImBgLiAgSWYgY2FsbGVkIHdpdGhvdXQgdGhlIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50LApAQCAtMzUwLDcgKzM1MCw3IEBACiBhbmQgYW5vdGhlciBiZWluZyBjaXJjdWxhciByZWZlcmVuY2VzIGluIGRhdGEgc3RydWN0dXJlcyBzdWNoIGFzIHRyZWVzLgogCiBGb3IgZXhhbXBsZSwgY29uc2lkZXIgYSBtZW1vaXppbmcgZnVuY3Rpb24gdGhhdCBjYWNoZXMgdGhlIHJlc3VsdHMgb2YgYW5vdGhlcgotZnVuY3Rpb24gOmZ1bmM6YGYoeClgIGJ5IHN0b3JpbmcgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnQgYW5kIGl0cyByZXN1bHQgaW4gYQorZnVuY3Rpb24gYGBmKHgpYGAgYnkgc3RvcmluZyB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudCBhbmQgaXRzIHJlc3VsdCBpbiBhCiBkaWN0aW9uYXJ5OjoKIAogICAgX2NhY2hlID0ge30KQEAgLTY1Niw3ICs2NTYsNyBAQAogICB1c2UgOm1vZDpgZnRwbGliYCB0byByZXRyaWV2ZSBmaWxlcyBhbmQgdGhlbiBkb24ndCB3b3JrIGZyb20gYmVoaW5kIGEgZmlyZXdhbGwuCiAgIEl0J3MgZGVlbWVkIHVubGlrZWx5IHRoYXQgdGhpcyB3aWxsIGNhdXNlIHByb2JsZW1zIGZvciBhbnlvbmUsIGJlY2F1c2UgTmV0c2NhcGUKICAgZGVmYXVsdHMgdG8gcGFzc2l2ZSBtb2RlIGFuZCBmZXcgcGVvcGxlIGNvbXBsYWluLCBidXQgaWYgcGFzc2l2ZSBtb2RlIGlzCi0gIHVuc3VpdGFibGUgZm9yIHlvdXIgYXBwbGljYXRpb24gb3IgbmV0d29yayBzZXR1cCwgY2FsbCA6bWV0aDpgc2V0X3Bhc3YoMClgIG9uCisgIHVuc3VpdGFibGUgZm9yIHlvdXIgYXBwbGljYXRpb24gb3IgbmV0d29yayBzZXR1cCwgY2FsbCBgYHNldF9wYXN2KDApYGAgb24KICAgRlRQIG9iamVjdHMgdG8gZGlzYWJsZSBwYXNzaXZlIG1vZGUuCiAKICogU3VwcG9ydCBmb3IgcmF3IHNvY2tldCBhY2Nlc3MgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIDptb2Q6YHNvY2tldGAgbW9kdWxlLApAQCAtNjY2LDcgKzY2Niw3IEBACiAgIGZvciBkaXNwbGF5aW5nIHRpbWluZyBwcm9maWxlcyBmb3IgUHl0aG9uIHByb2dyYW1zLCBpbnZva2VkIHdoZW4gdGhlIG1vZHVsZSBpcwogICBydW4gYXMgYSBzY3JpcHQuICBDb250cmlidXRlZCBieSAgRXJpYyBTLiBSYXltb25kLgogCi0qIEEgbmV3IGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCBmdW5jdGlvbiwgOmZ1bmM6YHN5cy5fZ2V0ZnJhbWUoW2RlcHRoXSlgLCBoYXMKKyogQSBuZXcgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50IGZ1bmN0aW9uLCBgYHN5cy5fZ2V0ZnJhbWUoW2RlcHRoXSlgYCwgaGFzCiAgIGJlZW4gYWRkZWQgdG8gcmV0dXJuIGEgZ2l2ZW4gZnJhbWUgb2JqZWN0IGZyb20gdGhlIGN1cnJlbnQgY2FsbCBzdGFjay4KICAgOmZ1bmM6YHN5cy5fZ2V0ZnJhbWVgIHJldHVybnMgdGhlIGZyYW1lIGF0IHRoZSB0b3Agb2YgdGhlIGNhbGwgc3RhY2s7ICBpZiB0aGUKICAgb3B0aW9uYWwgaW50ZWdlciBhcmd1bWVudCAqZGVwdGgqIGlzIHN1cHBsaWVkLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgZnJhbWUKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjIucnN0IGIvRG9jL3doYXRzbmV3LzIuMi5yc3QKaW5kZXggMWRiMWVlNy4uMmU3MDY5ZCAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMi5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMi5yc3QKQEAgLTE3MywxMiArMTczLDEyIEBACiAKICogOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBhdHRyaWJ1dGUncyBkb2NzdHJpbmcuCiAKLSogOm1ldGg6YF9fZ2V0X18ob2JqZWN0KWAgaXMgYSBtZXRob2QgdGhhdCByZXRyaWV2ZXMgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBmcm9tCisqIGBgX19nZXRfXyhvYmplY3QpYGAgaXMgYSBtZXRob2QgdGhhdCByZXRyaWV2ZXMgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBmcm9tCiAgICpvYmplY3QqLgogCi0qIDptZXRoOmBfX3NldF9fKG9iamVjdCwgdmFsdWUpYCBzZXRzIHRoZSBhdHRyaWJ1dGUgb24gKm9iamVjdCogdG8gKnZhbHVlKi4KKyogYGBfX3NldF9fKG9iamVjdCwgdmFsdWUpYGAgc2V0cyB0aGUgYXR0cmlidXRlIG9uICpvYmplY3QqIHRvICp2YWx1ZSouCiAKLSogOm1ldGg6YF9fZGVsZXRlX18ob2JqZWN0LCB2YWx1ZSlgIGRlbGV0ZXMgdGhlICp2YWx1ZSogIGF0dHJpYnV0ZSBvZiAqb2JqZWN0Ki4KKyogYGBfX2RlbGV0ZV9fKG9iamVjdCwgdmFsdWUpYGAgZGVsZXRlcyB0aGUgKnZhbHVlKiAgYXR0cmlidXRlIG9mICpvYmplY3QqLgogCiBGb3IgZXhhbXBsZSwgd2hlbiB5b3Ugd3JpdGUgYGBvYmoueGBgLCB0aGUgc3RlcHMgdGhhdCBQeXRob24gYWN0dWFsbHkgcGVyZm9ybXMKIGFyZTo6CkBAIC0yODgsNyArMjg4LDcgQEAKIHdoaWNoIGlzIHRoZSBiZWhhdmlvdXIgd2UncmUgYWZ0ZXIuICBUaGlzIGxvb2t1cCBydWxlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUKIGZvbGxvd2VkIGJ5IENvbW1vbiBMaXNwLiAgQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIDpmdW5jOmBzdXBlcmAsIHByb3ZpZGVzIGEgd2F5CiB0byBnZXQgYXQgYSBjbGFzcydzIHN1cGVyY2xhc3NlcyB3aXRob3V0IGhhdmluZyB0byByZWltcGxlbWVudCBQeXRob24ncwotYWxnb3JpdGhtLiBUaGUgbW9zdCBjb21tb25seSB1c2VkIGZvcm0gd2lsbCBiZSAgOmZ1bmM6YHN1cGVyKGNsYXNzLCBvYmopYCwgd2hpY2gKK2FsZ29yaXRobS4gVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBmb3JtIHdpbGwgYmUgIGBgc3VwZXIoY2xhc3MsIG9iailgYCwgd2hpY2gKIHJldHVybnMgIGEgYm91bmQgc3VwZXJjbGFzcyBvYmplY3QgKG5vdCB0aGUgYWN0dWFsIGNsYXNzIG9iamVjdCkuICBUaGlzIGZvcm0KIHdpbGwgYmUgdXNlZCBpbiBtZXRob2RzIHRvIGNhbGwgYSBtZXRob2QgaW4gdGhlIHN1cGVyY2xhc3M7IGZvciBleGFtcGxlLAogOmNsYXNzOmBEYCdzIDptZXRoOmBzYXZlYCBtZXRob2Qgd291bGQgbG9vayBsaWtlIHRoaXM6OgpAQCAtMzAxLDcgKzMwMSw3IEBACiAgICAgICAgICAgIC4uLgogCiA6ZnVuYzpgc3VwZXJgIGNhbiBhbHNvIHJldHVybiB1bmJvdW5kIHN1cGVyY2xhc3Mgb2JqZWN0cyB3aGVuIGNhbGxlZCBhcwotOmZ1bmM6YHN1cGVyKGNsYXNzKWAgb3IgOmZ1bmM6YHN1cGVyKGNsYXNzMSwgY2xhc3MyKWAsIGJ1dCB0aGlzIHByb2JhYmx5IHdvbid0CitgYHN1cGVyKGNsYXNzKWBgIG9yIGBgc3VwZXIoY2xhc3MxLCBjbGFzczIpYGAsIGJ1dCB0aGlzIHByb2JhYmx5IHdvbid0CiBvZnRlbiBiZSB1c2VmdWwuCiAKIApAQCAtMzE0LDEzICszMTQsMTMgQEAKIGBgb2JqLnBhcmVudGBgIGludG8gYSBtZXRob2QgY2FsbCBzdWNoIGFzIGBgb2JqLmdldF9wYXJlbnRgYC4gIFB5dGhvbiAyLjIgYWRkcwogc29tZSBuZXcgd2F5cyBvZiBjb250cm9sbGluZyBhdHRyaWJ1dGUgYWNjZXNzLgogCi1GaXJzdCwgOm1ldGg6YF9fZ2V0YXR0cl9fKGF0dHJfbmFtZSlgIGlzIHN0aWxsIHN1cHBvcnRlZCBieSBuZXctc3R5bGUgY2xhc3NlcywKK0ZpcnN0LCBgYF9fZ2V0YXR0cl9fKGF0dHJfbmFtZSlgYCBpcyBzdGlsbCBzdXBwb3J0ZWQgYnkgbmV3LXN0eWxlIGNsYXNzZXMsCiBhbmQgbm90aGluZyBhYm91dCBpdCBoYXMgY2hhbmdlZC4gIEFzIGJlZm9yZSwgaXQgd2lsbCBiZSBjYWxsZWQgd2hlbiBhbiBhdHRlbXB0CiBpcyBtYWRlIHRvIGFjY2VzcyBgYG9iai5mb29gYCBhbmQgbm8gYXR0cmlidXRlIG5hbWVkIGBgZm9vYGAgaXMgZm91bmQgaW4gdGhlCiBpbnN0YW5jZSdzIGRpY3Rpb25hcnkuCiAKIE5ldy1zdHlsZSBjbGFzc2VzIGFsc28gc3VwcG9ydCBhIG5ldyBtZXRob2QsCi06bWV0aDpgX19nZXRhdHRyaWJ1dGVfXyhhdHRyX25hbWUpYC4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBtZXRob2RzIGlzCitgYF9fZ2V0YXR0cmlidXRlX18oYXR0cl9uYW1lKWBgLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIG1ldGhvZHMgaXMKIHRoYXQgOm1ldGg6YF9fZ2V0YXR0cmlidXRlX19gIGlzICphbHdheXMqIGNhbGxlZCB3aGVuZXZlciBhbnkgYXR0cmlidXRlIGlzCiBhY2Nlc3NlZCwgd2hpbGUgdGhlIG9sZCA6bWV0aDpgX19nZXRhdHRyX19gIGlzIG9ubHkgY2FsbGVkIGlmIGBgZm9vYGAgaXNuJ3QKIGZvdW5kIGluIHRoZSBpbnN0YW5jZSdzIGRpY3Rpb25hcnkuCkBAIC00NDEsOCArNDQxLDggQEAKIAogSW4gUHl0aG9uIDIuMiwgaXRlcmF0aW9uIGNhbiBiZSBpbXBsZW1lbnRlZCBzZXBhcmF0ZWx5LCBhbmQgOm1ldGg6YF9fZ2V0aXRlbV9fYAogbWV0aG9kcyBjYW4gYmUgbGltaXRlZCB0byBjbGFzc2VzIHRoYXQgcmVhbGx5IGRvIHN1cHBvcnQgcmFuZG9tIGFjY2Vzcy4gIFRoZQotYmFzaWMgaWRlYSBvZiBpdGVyYXRvcnMgaXMgIHNpbXBsZS4gIEEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCA6ZnVuYzpgaXRlcihvYmopYAotb3IgYGBpdGVyKEMsIHNlbnRpbmVsKWBgLCBpcyB1c2VkIHRvIGdldCBhbiBpdGVyYXRvci4gOmZ1bmM6YGl0ZXIob2JqKWAgcmV0dXJucworYmFzaWMgaWRlYSBvZiBpdGVyYXRvcnMgaXMgIHNpbXBsZS4gIEEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCBgYGl0ZXIob2JqKWBgCitvciBgYGl0ZXIoQywgc2VudGluZWwpYGAsIGlzIHVzZWQgdG8gZ2V0IGFuIGl0ZXJhdG9yLiBgYGl0ZXIob2JqKWBgIHJldHVybnMKIGFuIGl0ZXJhdG9yIGZvciB0aGUgb2JqZWN0ICpvYmoqLCB3aGlsZSBgYGl0ZXIoQywgc2VudGluZWwpYGAgcmV0dXJucyBhbgogaXRlcmF0b3IgdGhhdCB3aWxsIGludm9rZSB0aGUgY2FsbGFibGUgb2JqZWN0ICpDKiB1bnRpbCBpdCByZXR1cm5zICpzZW50aW5lbCogdG8KIHNpZ25hbCB0aGF0IHRoZSBpdGVyYXRvciBpcyBkb25lLgpAQCAtNzkzLDcgKzc5Myw3IEBACiAKIEFub3RoZXIgY2hhbmdlIGlzIHNpbXBsZXIgdG8gZXhwbGFpbi4gU2luY2UgdGhlaXIgaW50cm9kdWN0aW9uLCBVbmljb2RlIHN0cmluZ3MKIGhhdmUgc3VwcG9ydGVkIGFuIDptZXRoOmBlbmNvZGVgIG1ldGhvZCB0byBjb252ZXJ0IHRoZSBzdHJpbmcgdG8gYSBzZWxlY3RlZAotZW5jb2Rpbmcgc3VjaCBhcyBVVEYtOCBvciBMYXRpbi0xLiAgQSBzeW1tZXRyaWMgOm1ldGg6YGRlY29kZShbKmVuY29kaW5nKl0pYAorZW5jb2Rpbmcgc3VjaCBhcyBVVEYtOCBvciBMYXRpbi0xLiAgQSBzeW1tZXRyaWMgYGBkZWNvZGUoWyplbmNvZGluZypdKWBgCiBtZXRob2QgaGFzIGJlZW4gYWRkZWQgdG8gOC1iaXQgc3RyaW5ncyAodGhvdWdoIG5vdCB0byBVbmljb2RlIHN0cmluZ3MpIGluIDIuMi4KIDptZXRoOmBkZWNvZGVgIGFzc3VtZXMgdGhhdCB0aGUgc3RyaW5nIGlzIGluIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcgYW5kIGRlY29kZXMKIGl0LCByZXR1cm5pbmcgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgYnkgdGhlIGNvZGVjLgpAQCAtMTIwMyw3ICsxMjAzLDcgQEAKICAgdG8gYW4gTUJDUyBlbmNvZGVkIHN0cmluZywgYXMgdXNlZCBieSB0aGUgTWljcm9zb2Z0IGZpbGUgQVBJcy4gIEFzIE1CQ1MgaXMKICAgZXhwbGljaXRseSB1c2VkIGJ5IHRoZSBmaWxlIEFQSXMsIFB5dGhvbidzIGNob2ljZSBvZiBBU0NJSSBhcyB0aGUgZGVmYXVsdAogICBlbmNvZGluZyB0dXJucyBvdXQgdG8gYmUgYW4gYW5ub3lhbmNlLiAgT24gVW5peCwgdGhlIGxvY2FsZSdzIGNoYXJhY3RlciBzZXQgaXMKLSAgdXNlZCBpZiA6ZnVuYzpgbG9jYWxlLm5sX2xhbmdpbmZvKENPREVTRVQpYCBpcyBhdmFpbGFibGUuICAoV2luZG93cyBzdXBwb3J0IHdhcworICB1c2VkIGlmIGBgbG9jYWxlLm5sX2xhbmdpbmZvKENPREVTRVQpYGAgaXMgYXZhaWxhYmxlLiAgKFdpbmRvd3Mgc3VwcG9ydCB3YXMKICAgY29udHJpYnV0ZWQgYnkgTWFyayBIYW1tb25kIHdpdGggYXNzaXN0YW5jZSBmcm9tIE1hcmMtQW5kcsOpIExlbWJ1cmcuIFVuaXgKICAgc3VwcG9ydCB3YXMgYWRkZWQgYnkgTWFydGluIHZvbiBMw7Z3aXMuKQogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi4zLnJzdCBiL0RvYy93aGF0c25ldy8yLjMucnN0CmluZGV4IGY0Yzc5ZTQuLmYwZTQ4ZDkgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjMucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjMucnN0CkBAIC01MDQsOCArNTA0LDggQEAKICAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnRlZ2VyIGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvCiAKIFNsaWdodGx5IG1vcmUgYWR2YW5jZWQgcHJvZ3JhbXMgd2lsbCB1c2UgYSBsb2dnZXIgb3RoZXIgdGhhbiB0aGUgcm9vdCBsb2dnZXIuCi1UaGUgOmZ1bmM6YGdldExvZ2dlcihuYW1lKWAgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgYSBwYXJ0aWN1bGFyIGxvZywgY3JlYXRpbmcKLWl0IGlmIGl0IGRvZXNuJ3QgZXhpc3QgeWV0LiA6ZnVuYzpgZ2V0TG9nZ2VyKE5vbmUpYCByZXR1cm5zIHRoZSByb290IGxvZ2dlci4gOjoKK1RoZSBgYGdldExvZ2dlcihuYW1lKWBgIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IGEgcGFydGljdWxhciBsb2csIGNyZWF0aW5nCitpdCBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldC4gYGBnZXRMb2dnZXIoTm9uZSlgYCByZXR1cm5zIHRoZSByb290IGxvZ2dlci4gOjoKIAogICAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3NlcnZlcicpCiAgICAgLi4uCkBAIC03MjQsMTAgKzcyNCwxMCBAQAogICBvYmplY3RzIHRvIGl0LiAgQWRkaXRpb25hbCBidWlsdC1pbiBhbmQgZnJvemVuIG1vZHVsZXMgY2FuIGJlIGltcG9ydGVkIGJ5IGFuCiAgIG9iamVjdCBhZGRlZCB0byB0aGlzIGxpc3QuCiAKLUltcG9ydGVyIG9iamVjdHMgbXVzdCBoYXZlIGEgc2luZ2xlIG1ldGhvZCwgOm1ldGg6YGZpbmRfbW9kdWxlKGZ1bGxuYW1lLAotcGF0aD1Ob25lKWAuICAqZnVsbG5hbWUqIHdpbGwgYmUgYSBtb2R1bGUgb3IgcGFja2FnZSBuYW1lLCBlLmcuIGBgc3RyaW5nYGAgb3IKK0ltcG9ydGVyIG9iamVjdHMgbXVzdCBoYXZlIGEgc2luZ2xlIG1ldGhvZCwgYGBmaW5kX21vZHVsZShmdWxsbmFtZSwKK3BhdGg9Tm9uZSlgYC4gICpmdWxsbmFtZSogd2lsbCBiZSBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUsIGUuZy4gYGBzdHJpbmdgYCBvcgogYGBkaXN0dXRpbHMuY29yZWBgLiAgOm1ldGg6YGZpbmRfbW9kdWxlYCBtdXN0IHJldHVybiBhIGxvYWRlciBvYmplY3QgdGhhdCBoYXMgYQotc2luZ2xlIG1ldGhvZCwgOm1ldGg6YGxvYWRfbW9kdWxlKGZ1bGxuYW1lKWAsIHRoYXQgY3JlYXRlcyBhbmQgcmV0dXJucyB0aGUKK3NpbmdsZSBtZXRob2QsIGBgbG9hZF9tb2R1bGUoZnVsbG5hbWUpYGAsIHRoYXQgY3JlYXRlcyBhbmQgcmV0dXJucyB0aGUKIGNvcnJlc3BvbmRpbmcgbW9kdWxlIG9iamVjdC4KIAogUHNldWRvLWNvZGUgZm9yIFB5dGhvbidzIG5ldyBpbXBvcnQgbG9naWMsIHRoZXJlZm9yZSwgbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhpcwpAQCAtOTM1LDcgKzkzNSw3IEBACiAgICBbMCwgMiwgNF0KIAogVG8gc2ltcGxpZnkgaW1wbGVtZW50aW5nIHNlcXVlbmNlcyB0aGF0IHN1cHBvcnQgZXh0ZW5kZWQgc2xpY2luZywgc2xpY2Ugb2JqZWN0cwotbm93IGhhdmUgYSBtZXRob2QgOm1ldGg6YGluZGljZXMobGVuZ3RoKWAgd2hpY2gsIGdpdmVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSwKK25vdyBoYXZlIGEgbWV0aG9kIGBgaW5kaWNlcyhsZW5ndGgpYGAgd2hpY2gsIGdpdmVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSwKIHJldHVybnMgYSBgYChzdGFydCwgc3RvcCwgc3RlcClgYCB0dXBsZSB0aGF0IGNhbiBiZSBwYXNzZWQgZGlyZWN0bHkgdG8KIDpmdW5jOmByYW5nZWAuIDptZXRoOmBpbmRpY2VzYCBoYW5kbGVzIG9taXR0ZWQgYW5kIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBpbiBhCiBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzIChhbmQgdGhpcyBpbm5vY3VvdXMgcGhyYXNlIGhpZGVzIGEgd2VsdGVyCkBAIC05ODQsNyArOTg0LDcgQEAKICogQnVpbHQtaW4gdHlwZXMgbm93IHN1cHBvcnQgdGhlIGV4dGVuZGVkIHNsaWNpbmcgc3ludGF4LCBhcyBkZXNjcmliZWQgaW4KICAgc2VjdGlvbiA6cmVmOmBzZWN0aW9uLXNsaWNlc2Agb2YgdGhpcyBkb2N1bWVudC4KIAotKiBBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgOmZ1bmM6YHN1bShpdGVyYWJsZSwgc3RhcnQ9MClgLCAgYWRkcyB1cCB0aGUgbnVtZXJpYworKiBBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgYGBzdW0oaXRlcmFibGUsIHN0YXJ0PTApYGAsICBhZGRzIHVwIHRoZSBudW1lcmljCiAgIGl0ZW1zIGluIHRoZSBpdGVyYWJsZSBvYmplY3QgYW5kIHJldHVybnMgdGhlaXIgc3VtLiAgOmZ1bmM6YHN1bWAgb25seSBhY2NlcHRzCiAgIG51bWJlcnMsIG1lYW5pbmcgdGhhdCB5b3UgY2FuJ3QgdXNlIGl0IHRvIGNvbmNhdGVuYXRlIGEgYnVuY2ggb2Ygc3RyaW5ncy4KICAgKENvbnRyaWJ1dGVkIGJ5IEFsZXggTWFydGVsbGkuKQpAQCAtOTk4LDcgKzk5OCw3IEBACiAgIGl0cyBpbmRleCwgbm93IHRha2VzIG9wdGlvbmFsICAqc3RhcnQqIGFuZCAqc3RvcCogYXJndW1lbnRzIHRvIGxpbWl0IHRoZSBzZWFyY2gKICAgdG8gIG9ubHkgcGFydCBvZiB0aGUgbGlzdC4KIAotKiBEaWN0aW9uYXJpZXMgaGF2ZSBhIG5ldyBtZXRob2QsIDptZXRoOmBwb3Aoa2V5WywgKmRlZmF1bHQqXSlgLCB0aGF0IHJldHVybnMKKyogRGljdGlvbmFyaWVzIGhhdmUgYSBuZXcgbWV0aG9kLCBgYHBvcChrZXlbLCAqZGVmYXVsdCpdKWBgLCB0aGF0IHJldHVybnMKICAgdGhlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gKmtleSogYW5kIHJlbW92ZXMgdGhhdCBrZXkvdmFsdWUgcGFpciBmcm9tIHRoZQogICBkaWN0aW9uYXJ5LiAgSWYgdGhlIHJlcXVlc3RlZCBrZXkgaXNuJ3QgcHJlc2VudCBpbiB0aGUgZGljdGlvbmFyeSwgKmRlZmF1bHQqIGlzCiAgIHJldHVybmVkIGlmIGl0J3Mgc3BlY2lmaWVkIGFuZCA6ZXhjOmBLZXlFcnJvcmAgcmFpc2VkIGlmIGl0IGlzbid0LiA6OgpAQCAtMTAyMCw3ICsxMDIwLDcgQEAKICAgICAge30KICAgICAgPj4+CiAKLSAgVGhlcmUncyBhbHNvIGEgbmV3IGNsYXNzIG1ldGhvZCwgIDptZXRoOmBkaWN0LmZyb21rZXlzKGl0ZXJhYmxlLCB2YWx1ZSlgLCB0aGF0CisgIFRoZXJlJ3MgYWxzbyBhIG5ldyBjbGFzcyBtZXRob2QsICBgYGRpY3QuZnJvbWtleXMoaXRlcmFibGUsIHZhbHVlKWBgLCB0aGF0CiAgIGNyZWF0ZXMgYSBkaWN0aW9uYXJ5IHdpdGgga2V5cyB0YWtlbiBmcm9tIHRoZSBzdXBwbGllZCBpdGVyYXRvciAqaXRlcmFibGUqIGFuZAogICBhbGwgdmFsdWVzIHNldCB0byAqdmFsdWUqLCBkZWZhdWx0aW5nIHRvIGBgTm9uZWBgLgogCkBAIC0xMDkzLDcgKzEwOTMsNyBAQAogICAxMDAgYnl0ZWNvZGVzLCBzcGVlZGluZyB1cCBzaW5nbGUtdGhyZWFkZWQgYXBwbGljYXRpb25zIGJ5IHJlZHVjaW5nIHRoZQogICBzd2l0Y2hpbmcgb3ZlcmhlYWQuICBTb21lIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb25zIG1heSBzdWZmZXIgc2xvd2VyIHJlc3BvbnNlCiAgIHRpbWUsIGJ1dCB0aGF0J3MgZWFzaWx5IGZpeGVkIGJ5IHNldHRpbmcgdGhlIGxpbWl0IGJhY2sgdG8gYSBsb3dlciBudW1iZXIgdXNpbmcKLSAgOmZ1bmM6YHN5cy5zZXRjaGVja2ludGVydmFsKE4pYC4gVGhlIGxpbWl0IGNhbiBiZSByZXRyaWV2ZWQgd2l0aCB0aGUgbmV3CisgIGBgc3lzLnNldGNoZWNraW50ZXJ2YWwoTilgYC4gVGhlIGxpbWl0IGNhbiBiZSByZXRyaWV2ZWQgd2l0aCB0aGUgbmV3CiAgIDpmdW5jOmBzeXMuZ2V0Y2hlY2tpbnRlcnZhbGAgZnVuY3Rpb24uCiAKICogT25lIG1pbm9yIGJ1dCBmYXItcmVhY2hpbmcgY2hhbmdlIGlzIHRoYXQgdGhlIG5hbWVzIG9mIGV4dGVuc2lvbiB0eXBlcyBkZWZpbmVkCkBAIC0xMjcyLDEwICsxMjcyLDEwIEBACiAKICogUHJldmlvdXNseSB0aGUgOm1vZDpgZG9jdGVzdGAgbW9kdWxlIHdvdWxkIG9ubHkgc2VhcmNoIHRoZSBkb2NzdHJpbmdzIG9mCiAgIHB1YmxpYyBtZXRob2RzIGFuZCBmdW5jdGlvbnMgZm9yIHRlc3QgY2FzZXMsIGJ1dCBpdCBub3cgYWxzbyBleGFtaW5lcyBwcml2YXRlCi0gIG9uZXMgYXMgd2VsbC4gIFRoZSA6ZnVuYzpgRG9jVGVzdFN1aXRlKGAgZnVuY3Rpb24gY3JlYXRlcyBhCisgIG9uZXMgYXMgd2VsbC4gIFRoZSA6ZnVuYzpgRG9jVGVzdFN1aXRlYCBmdW5jdGlvbiBjcmVhdGVzIGEKICAgOmNsYXNzOmB1bml0dGVzdC5UZXN0U3VpdGVgIG9iamVjdCBmcm9tIGEgc2V0IG9mIDptb2Q6YGRvY3Rlc3RgIHRlc3RzLgogCi0qIFRoZSBuZXcgOmZ1bmM6YGdjLmdldF9yZWZlcmVudHMob2JqZWN0KWAgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZQorKiBUaGUgbmV3IGBgZ2MuZ2V0X3JlZmVyZW50cyhvYmplY3QpYGAgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZQogICBvYmplY3RzIHJlZmVyZW5jZWQgYnkgKm9iamVjdCouCiAKICogVGhlIDptb2Q6YGdldG9wdGAgbW9kdWxlIGdhaW5lZCBhIG5ldyBmdW5jdGlvbiwgOmZ1bmM6YGdudV9nZXRvcHRgLCB0aGF0CkBAIC0xMzQ3LDggKzEzNDcsOCBAQAogICBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgogICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCi0qIFR3byBuZXcgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBtYXRoYCBtb2R1bGUsIDpmdW5jOmBkZWdyZWVzKHJhZHMpYCBhbmQKLSAgOmZ1bmM6YHJhZGlhbnMoZGVncylgLCBjb252ZXJ0IGJldHdlZW4gcmFkaWFucyBhbmQgZGVncmVlcy4gIE90aGVyIGZ1bmN0aW9ucyBpbgorKiBUd28gbmV3IGZ1bmN0aW9ucyBpbiB0aGUgOm1vZDpgbWF0aGAgbW9kdWxlLCBgYGRlZ3JlZXMocmFkcylgYCBhbmQKKyAgYGByYWRpYW5zKGRlZ3MpYGAsIGNvbnZlcnQgYmV0d2VlbiByYWRpYW5zIGFuZCBkZWdyZWVzLiAgT3RoZXIgZnVuY3Rpb25zIGluCiAgIHRoZSA6bW9kOmBtYXRoYCBtb2R1bGUgc3VjaCBhcyA6ZnVuYzpgbWF0aC5zaW5gIGFuZCA6ZnVuYzpgbWF0aC5jb3NgIGhhdmUgYWx3YXlzCiAgIHJlcXVpcmVkIGlucHV0IHZhbHVlcyBtZWFzdXJlZCBpbiByYWRpYW5zLiAgQWxzbywgYW4gb3B0aW9uYWwgKmJhc2UqIGFyZ3VtZW50CiAgIHdhcyBhZGRlZCB0byA6ZnVuYzpgbWF0aC5sb2dgIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvbXB1dGUgbG9nYXJpdGhtcyBmb3IgYmFzZXMKQEAgLTE0MDUsNyArMTQwNSw3IEBACiAgIGFuZCB0aGVyZWZvcmUgZmFzdGVyIHBlcmZvcm1hbmNlLiAgU2V0dGluZyB0aGUgcGFyc2VyIG9iamVjdCdzCiAgIDphdHRyOmBidWZmZXJfdGV4dGAgYXR0cmlidXRlIHRvIDpjb25zdDpgVHJ1ZWAgd2lsbCBlbmFibGUgYnVmZmVyaW5nLgogCi0qIFRoZSA6ZnVuYzpgc2FtcGxlKHBvcHVsYXRpb24sIGspYCBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gdGhlIDptb2Q6YHJhbmRvbWAKKyogVGhlIGBgc2FtcGxlKHBvcHVsYXRpb24sIGspYGAgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSA6bW9kOmByYW5kb21gCiAgIG1vZHVsZS4gICpwb3B1bGF0aW9uKiBpcyBhIHNlcXVlbmNlIG9yIDpjbGFzczpgeHJhbmdlYCBvYmplY3QgY29udGFpbmluZyB0aGUKICAgZWxlbWVudHMgb2YgYSBwb3B1bGF0aW9uLCBhbmQgOmZ1bmM6YHNhbXBsZWAgY2hvb3NlcyAqayogZWxlbWVudHMgZnJvbSB0aGUKICAgcG9wdWxhdGlvbiB3aXRob3V0IHJlcGxhY2luZyBjaG9zZW4gZWxlbWVudHMuICAqayogY2FuIGJlIGFueSB2YWx1ZSB1cCB0bwpAQCAtMTQ1MSw3ICsxNDUxLDcgQEAKICAgZW5jcnlwdGlvbiBpcyBub3QgYmVsaWV2ZWQgdG8gYmUgc2VjdXJlLiAgSWYgeW91IG5lZWQgZW5jcnlwdGlvbiwgdXNlIG9uZSBvZiB0aGUKICAgc2V2ZXJhbCBBRVMgUHl0aG9uIG1vZHVsZXMgdGhhdCBhcmUgYXZhaWxhYmxlIHNlcGFyYXRlbHkuCiAKLSogVGhlIDptb2Q6YHNodXRpbGAgbW9kdWxlIGdhaW5lZCBhIDpmdW5jOmBtb3ZlKHNyYywgZGVzdClgIGZ1bmN0aW9uIHRoYXQKKyogVGhlIDptb2Q6YHNodXRpbGAgbW9kdWxlIGdhaW5lZCBhIGBgbW92ZShzcmMsIGRlc3QpYGAgZnVuY3Rpb24gdGhhdAogICByZWN1cnNpdmVseSBtb3ZlcyBhIGZpbGUgb3IgZGlyZWN0b3J5IHRvIGEgbmV3IGxvY2F0aW9uLgogCiAqIFN1cHBvcnQgZm9yIG1vcmUgYWR2YW5jZWQgUE9TSVggc2lnbmFsIGhhbmRsaW5nIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgc2lnbmFsYApAQCAtMTQ1OSw3ICsxNDU5LDcgQEAKICAgcGxhdGZvcm1zLgogCiAqIFRoZSA6bW9kOmBzb2NrZXRgIG1vZHVsZSBub3cgc3VwcG9ydHMgdGltZW91dHMuICBZb3UgY2FuIGNhbGwgdGhlCi0gIDptZXRoOmBzZXR0aW1lb3V0KHQpYCBtZXRob2Qgb24gYSBzb2NrZXQgb2JqZWN0IHRvIHNldCBhIHRpbWVvdXQgb2YgKnQqIHNlY29uZHMuCisgIGBgc2V0dGltZW91dCh0KWBgIG1ldGhvZCBvbiBhIHNvY2tldCBvYmplY3QgdG8gc2V0IGEgdGltZW91dCBvZiAqdCogc2Vjb25kcy4KICAgU3Vic2VxdWVudCBzb2NrZXQgb3BlcmF0aW9ucyB0aGF0IHRha2UgbG9uZ2VyIHRoYW4gKnQqIHNlY29uZHMgdG8gY29tcGxldGUgd2lsbAogICBhYm9ydCBhbmQgcmFpc2UgYSA6ZXhjOmBzb2NrZXQudGltZW91dGAgZXhjZXB0aW9uLgogCkBAIC0xNDgwLDkgKzE0ODAsOSBAQAogICA6cHJvZ3JhbTpgdGFyYFwgLWZvcm1hdCBhcmNoaXZlIGZpbGVzLiAoQ29udHJpYnV0ZWQgYnkgTGFycyBHdXN0w6RiZWwuKQogCiAqIFRoZSBuZXcgOm1vZDpgdGV4dHdyYXBgIG1vZHVsZSBjb250YWlucyBmdW5jdGlvbnMgZm9yIHdyYXBwaW5nIHN0cmluZ3MKLSAgY29udGFpbmluZyBwYXJhZ3JhcGhzIG9mIHRleHQuICBUaGUgOmZ1bmM6YHdyYXAodGV4dCwgd2lkdGgpYCBmdW5jdGlvbiB0YWtlcyBhCisgIGNvbnRhaW5pbmcgcGFyYWdyYXBocyBvZiB0ZXh0LiAgVGhlIGBgd3JhcCh0ZXh0LCB3aWR0aClgYCBmdW5jdGlvbiB0YWtlcyBhCiAgIHN0cmluZyBhbmQgcmV0dXJucyBhIGxpc3QgY29udGFpbmluZyB0aGUgdGV4dCBzcGxpdCBpbnRvIGxpbmVzIG9mIG5vIG1vcmUgdGhhbgotICB0aGUgY2hvc2VuIHdpZHRoLiAgVGhlIDpmdW5jOmBmaWxsKHRleHQsIHdpZHRoKWAgZnVuY3Rpb24gcmV0dXJucyBhIHNpbmdsZQorICB0aGUgY2hvc2VuIHdpZHRoLiAgVGhlIGBgZmlsbCh0ZXh0LCB3aWR0aClgYCBmdW5jdGlvbiByZXR1cm5zIGEgc2luZ2xlCiAgIHN0cmluZywgcmVmb3JtYXR0ZWQgdG8gZml0IGludG8gbGluZXMgbm8gbG9uZ2VyIHRoYW4gdGhlIGNob3NlbiB3aWR0aC4gKEFzIHlvdQogICBjYW4gZ3Vlc3MsIDpmdW5jOmBmaWxsYCBpcyBidWlsdCBvbiB0b3Agb2YgOmZ1bmM6YHdyYXBgLiAgRm9yIGV4YW1wbGU6OgogCkBAIC0xOTAzLDcgKzE5MDMsNyBAQAogICBzaG9ydCBpbnRgLCAgYGBJYGAgZm9yIDpjOnR5cGU6YHVuc2lnbmVkIGludGAsICBhbmQgYGBLYGAgZm9yIDpjOnR5cGU6YHVuc2lnbmVkCiAgIGxvbmcgbG9uZ2AuCiAKLSogQSBuZXcgZnVuY3Rpb24sIDpjOmZ1bmM6YFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcobWFwcGluZywgY2hhciBcKmtleSlgIHdhcyBhZGRlZAorKiBBIG5ldyBmdW5jdGlvbiwgYGBQeU9iamVjdF9EZWxJdGVtU3RyaW5nKG1hcHBpbmcsIGNoYXIgKmtleSlgYCB3YXMgYWRkZWQKICAgYXMgc2hvcnRoYW5kIGZvciBgYFB5T2JqZWN0X0RlbEl0ZW0obWFwcGluZywgUHlTdHJpbmdfTmV3KGtleSkpYGAuCiAKICogRmlsZSBvYmplY3RzIG5vdyBtYW5hZ2UgdGhlaXIgaW50ZXJuYWwgc3RyaW5nIGJ1ZmZlciBkaWZmZXJlbnRseSwgaW5jcmVhc2luZwpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuNC5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi40LnJzdAppbmRleCA5ZDMzOWE1Li41YTI4Zjg5IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi40LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi40LnJzdApAQCAtMzcsNyArMzcsNyBAQAogCiBQeXRob24gMi4zIGludHJvZHVjZWQgdGhlIDptb2Q6YHNldHNgIG1vZHVsZS4gIEMgaW1wbGVtZW50YXRpb25zIG9mIHNldCBkYXRhCiB0eXBlcyBoYXZlIG5vdyBiZWVuIGFkZGVkIHRvIHRoZSBQeXRob24gY29yZSBhcyB0d28gbmV3IGJ1aWx0LWluIHR5cGVzLAotOmZ1bmM6YHNldChpdGVyYWJsZSlgIGFuZCA6ZnVuYzpgZnJvemVuc2V0KGl0ZXJhYmxlKWAuICBUaGV5IHByb3ZpZGUgaGlnaCBzcGVlZAorYGBzZXQoaXRlcmFibGUpYGAgYW5kIGBgZnJvemVuc2V0KGl0ZXJhYmxlKWBgLiAgVGhleSBwcm92aWRlIGhpZ2ggc3BlZWQKIG9wZXJhdGlvbnMgZm9yIG1lbWJlcnNoaXAgdGVzdGluZywgZm9yIGVsaW1pbmF0aW5nIGR1cGxpY2F0ZXMgZnJvbSBzZXF1ZW5jZXMsCiBhbmQgZm9yIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIGxpa2UgdW5pb25zLCBpbnRlcnNlY3Rpb25zLCBkaWZmZXJlbmNlcywgYW5kCiBzeW1tZXRyaWMgZGlmZmVyZW5jZXMuIDo6CkBAIC0zNDYsNyArMzQ2LDcgQEAKIFBFUCAzMjI6IFJldmVyc2UgSXRlcmF0aW9uCiA9PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1BIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgOmZ1bmM6YHJldmVyc2VkKHNlcSlgLCB0YWtlcyBhIHNlcXVlbmNlIGFuZCByZXR1cm5zIGFuCitBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgYGByZXZlcnNlZChzZXEpYGAsIHRha2VzIGEgc2VxdWVuY2UgYW5kIHJldHVybnMgYW4KIGl0ZXJhdG9yIHRoYXQgbG9vcHMgb3ZlciB0aGUgZWxlbWVudHMgb2YgdGhlIHNlcXVlbmNlICBpbiByZXZlcnNlIG9yZGVyLiAgIDo6CiAKICAgID4+PiBmb3IgaSBpbiByZXZlcnNlZCh4cmFuZ2UoMSw0KSk6CkBAIC0zODQsNyArMzg0LDcgQEAKIAogVGhlIHN0YW5kYXJkIGxpYnJhcnkgcHJvdmlkZXMgYSBudW1iZXIgb2Ygd2F5cyB0byBleGVjdXRlIGEgc3VicHJvY2Vzcywgb2ZmZXJpbmcKIGRpZmZlcmVudCBmZWF0dXJlcyBhbmQgZGlmZmVyZW50IGxldmVscyBvZiBjb21wbGV4aXR5LgotOmZ1bmM6YG9zLnN5c3RlbShjb21tYW5kKWAgaXMgZWFzeSB0byB1c2UsIGJ1dCBzbG93IChpdCBydW5zIGEgc2hlbGwgcHJvY2VzcworYGBvcy5zeXN0ZW0oY29tbWFuZClgYCBpcyBlYXN5IHRvIHVzZSwgYnV0IHNsb3cgKGl0IHJ1bnMgYSBzaGVsbCBwcm9jZXNzCiB3aGljaCBleGVjdXRlcyB0aGUgY29tbWFuZCkgYW5kIGRhbmdlcm91cyAoeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBhYm91dCBlc2NhcGluZwogdGhlIHNoZWxsJ3MgbWV0YWNoYXJhY3RlcnMpLiAgVGhlIDptb2Q6YHBvcGVuMmAgbW9kdWxlIG9mZmVycyBjbGFzc2VzIHRoYXQgY2FuCiBjYXB0dXJlIHN0YW5kYXJkIG91dHB1dCBhbmQgc3RhbmRhcmQgZXJyb3IgZnJvbSB0aGUgc3VicHJvY2VzcywgYnV0IHRoZSBuYW1pbmcKQEAgLTQzMSw4ICs0MzEsOCBAQAogCiBPbmNlIHlvdSd2ZSBjcmVhdGVkIHRoZSA6Y2xhc3M6YFBvcGVuYCBpbnN0YW5jZSwgIHlvdSBjYW4gY2FsbCBpdHMgOm1ldGg6YHdhaXRgCiBtZXRob2QgdG8gcGF1c2UgdW50aWwgdGhlIHN1YnByb2Nlc3MgaGFzIGV4aXRlZCwgOm1ldGg6YHBvbGxgIHRvIGNoZWNrIGlmIGl0J3MKLWV4aXRlZCB3aXRob3V0IHBhdXNpbmcsICBvciA6bWV0aDpgY29tbXVuaWNhdGUoZGF0YSlgIHRvIHNlbmQgdGhlIHN0cmluZyAqZGF0YSoKLXRvIHRoZSBzdWJwcm9jZXNzJ3Mgc3RhbmRhcmQgaW5wdXQuICAgOm1ldGg6YGNvbW11bmljYXRlKGRhdGEpYCAgdGhlbiByZWFkcyBhbnkKK2V4aXRlZCB3aXRob3V0IHBhdXNpbmcsICBvciBgYGNvbW11bmljYXRlKGRhdGEpYGAgdG8gc2VuZCB0aGUgc3RyaW5nICpkYXRhKgordG8gdGhlIHN1YnByb2Nlc3MncyBzdGFuZGFyZCBpbnB1dC4gICBgYGNvbW11bmljYXRlKGRhdGEpYGAgIHRoZW4gcmVhZHMgYW55CiBkYXRhIHRoYXQgdGhlIHN1YnByb2Nlc3MgaGFzIHNlbnQgdG8gaXRzIHN0YW5kYXJkIG91dHB1dCAgb3Igc3RhbmRhcmQgZXJyb3IsCiByZXR1cm5pbmcgYSB0dXBsZSBgYChzdGRvdXRfZGF0YSwgc3RkZXJyX2RhdGEpYGAuCiAKQEAgLTc0OSwxMCArNzQ5LDEwIEBACiBUaGUgc29sdXRpb24gZGVzY3JpYmVkIGluIHRoZSBQRVAgaXMgdG8gYWRkIHRocmVlIG5ldyBmdW5jdGlvbnMgdG8gdGhlIFB5dGhvbgogQVBJIHRoYXQgcGVyZm9ybSBBU0NJSS1vbmx5IGNvbnZlcnNpb25zLCBpZ25vcmluZyB0aGUgbG9jYWxlIHNldHRpbmc6CiAKLSogOmM6ZnVuYzpgUHlPU19hc2NpaV9zdHJ0b2Qoc3RyLCBwdHIpYCAgYW5kIDpjOmZ1bmM6YFB5T1NfYXNjaWlfYXRvZihzdHIsIHB0cilgCisqIGBgUHlPU19hc2NpaV9zdHJ0b2Qoc3RyLCBwdHIpYGAgIGFuZCBgYFB5T1NfYXNjaWlfYXRvZihzdHIsIHB0cilgYAogICBib3RoIGNvbnZlcnQgYSBzdHJpbmcgdG8gYSBDIDpjOnR5cGU6YGRvdWJsZWAuCiAKLSogOmM6ZnVuYzpgUHlPU19hc2NpaV9mb3JtYXRkKGJ1ZmZlciwgYnVmX2xlbiwgZm9ybWF0LCBkKWAgY29udmVydHMgYQorKiBgYFB5T1NfYXNjaWlfZm9ybWF0ZChidWZmZXIsIGJ1Zl9sZW4sIGZvcm1hdCwgZClgYCBjb252ZXJ0cyBhCiAgIDpjOnR5cGU6YGRvdWJsZWAgdG8gYW4gQVNDSUkgc3RyaW5nLgogCiBUaGUgY29kZSBmb3IgdGhlc2UgZnVuY3Rpb25zIGNhbWUgZnJvbSB0aGUgR0xpYiBsaWJyYXJ5CkBAIC03NzgsNyArNzc4LDcgQEAKICogRGVjb3JhdG9ycyBmb3IgZnVuY3Rpb25zIGFuZCBtZXRob2RzIHdlcmUgYWRkZWQgKDpwZXA6YDMxOGApLgogCiAqIEJ1aWx0LWluIDpmdW5jOmBzZXRgIGFuZCA6ZnVuYzpgZnJvemVuc2V0YCB0eXBlcyB3ZXJlICBhZGRlZCAoOnBlcDpgMjE4YCkuCi0gIE90aGVyIG5ldyBidWlsdC1pbnMgaW5jbHVkZSB0aGUgOmZ1bmM6YHJldmVyc2VkKHNlcSlgIGZ1bmN0aW9uICg6cGVwOmAzMjJgKS4KKyAgT3RoZXIgbmV3IGJ1aWx0LWlucyBpbmNsdWRlIHRoZSBgYHJldmVyc2VkKHNlcSlgYCBmdW5jdGlvbiAoOnBlcDpgMzIyYCkuCiAKICogR2VuZXJhdG9yIGV4cHJlc3Npb25zIHdlcmUgYWRkZWQgKDpwZXA6YDI4OWApLgogCkBAIC04NTcsNyArODU3LDcgQEAKIAogICAoQWxsIGNoYW5nZXMgdG8gOm1ldGg6YHNvcnRgIGNvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyLikKIAotKiBUaGVyZSBpcyBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiA6ZnVuYzpgc29ydGVkKGl0ZXJhYmxlKWAgdGhhdCB3b3JrcyBsaWtlIHRoZQorKiBUaGVyZSBpcyBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBgYHNvcnRlZChpdGVyYWJsZSlgYCB0aGF0IHdvcmtzIGxpa2UgdGhlCiAgIGluLXBsYWNlIDptZXRoOmBsaXN0LnNvcnRgIG1ldGhvZCBidXQgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbnMuICBUaGUKICAgZGlmZmVyZW5jZXMgYXJlOgogCkBAIC04OTgsOCArODk4LDggQEAKICAgRm9yIGV4YW1wbGUsICB5b3UgY2FuIG5vdyBydW4gdGhlIFB5dGhvbiBwcm9maWxlciB3aXRoIGBgcHl0aG9uIC1tIHByb2ZpbGVgYC4KICAgKENvbnRyaWJ1dGVkIGJ5IE5pY2sgQ29naGxhbi4pCiAKLSogVGhlIDpmdW5jOmBldmFsKGV4cHIsIGdsb2JhbHMsIGxvY2FscylgIGFuZCA6ZnVuYzpgZXhlY2ZpbGUoZmlsZW5hbWUsIGdsb2JhbHMsCi0gIGxvY2FscylgIGZ1bmN0aW9ucyBhbmQgdGhlIGBgZXhlY2BgIHN0YXRlbWVudCBub3cgYWNjZXB0IGFueSBtYXBwaW5nIHR5cGUKKyogVGhlIGBgZXZhbChleHByLCBnbG9iYWxzLCBsb2NhbHMpYGAgYW5kIGBgZXhlY2ZpbGUoZmlsZW5hbWUsIGdsb2JhbHMsCisgIGxvY2FscylgYCBmdW5jdGlvbnMgYW5kIHRoZSBgYGV4ZWNgYCBzdGF0ZW1lbnQgbm93IGFjY2VwdCBhbnkgbWFwcGluZyB0eXBlCiAgIGZvciB0aGUgKmxvY2FscyogcGFyYW1ldGVyLiAgUHJldmlvdXNseSB0aGlzIGhhZCB0byBiZSBhIHJlZ3VsYXIgUHl0aG9uCiAgIGRpY3Rpb25hcnkuICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCkBAIC0xMDkwLDcgKzEwOTAsNyBAQAogICBZdmVzIERpb25uZSkgYW5kIG5ldyA6bWV0aDpgZGVsZXRlYWNsYCBhbmQgOm1ldGg6YG15cmlnaHRzYCBtZXRob2RzIChjb250cmlidXRlZAogICBieSBBcm5hdWQgTWF6aW4pLgogCi0qIFRoZSA6bW9kOmBpdGVydG9vbHNgIG1vZHVsZSBnYWluZWQgYSA6ZnVuYzpgZ3JvdXBieShpdGVyYWJsZVssICpmdW5jKl0pYAorKiBUaGUgOm1vZDpgaXRlcnRvb2xzYCBtb2R1bGUgZ2FpbmVkIGEgYGBncm91cGJ5KGl0ZXJhYmxlWywgKmZ1bmMqXSlgYAogICBmdW5jdGlvbi4gKml0ZXJhYmxlKiBpcyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byByZXR1cm4gYSBzdHJlYW0KICAgb2YgZWxlbWVudHMsIGFuZCB0aGUgb3B0aW9uYWwgKmZ1bmMqIHBhcmFtZXRlciBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4KICAgZWxlbWVudCBhbmQgcmV0dXJucyBhIGtleSB2YWx1ZTsgaWYgb21pdHRlZCwgdGhlIGtleSBpcyBzaW1wbHkgdGhlIGVsZW1lbnQKQEAgLTExMzksNyArMTEzOSw3IEBACiAKICAgKENvbnRyaWJ1dGVkIGJ5IEh5ZS1TaGlrIENoYW5nLikKIAotKiA6bW9kOmBpdGVydG9vbHNgIGFsc28gZ2FpbmVkIGEgZnVuY3Rpb24gbmFtZWQgOmZ1bmM6YHRlZShpdGVyYXRvciwgTilgIHRoYXQKKyogOm1vZDpgaXRlcnRvb2xzYCBhbHNvIGdhaW5lZCBhIGZ1bmN0aW9uIG5hbWVkIGBgdGVlKGl0ZXJhdG9yLCBOKWBgIHRoYXQKICAgcmV0dXJucyAqTiogaW5kZXBlbmRlbnQgaXRlcmF0b3JzIHRoYXQgcmVwbGljYXRlICppdGVyYXRvciouICBJZiAqTiogaXMgb21pdHRlZCwKICAgdGhlIGRlZmF1bHQgaXMgMi4gOjoKIApAQCAtMTE3Nyw3ICsxMTc3LDcgQEAKICAgICAgICAgIGxldmVsPTAsICAjIExvZyBhbGwgbWVzc2FnZXMKICAgICAgICAgIGZvcm1hdD0nJShsZXZlbG5hbWUpOiUocHJvY2Vzcyk6JSh0aHJlYWQpOiUobWVzc2FnZSknKQogCi0gIE90aGVyIGFkZGl0aW9ucyB0byB0aGUgOm1vZDpgbG9nZ2luZ2AgcGFja2FnZSBpbmNsdWRlIGEgOm1ldGg6YGxvZyhsZXZlbCwgbXNnKWAKKyAgT3RoZXIgYWRkaXRpb25zIHRvIHRoZSA6bW9kOmBsb2dnaW5nYCBwYWNrYWdlIGluY2x1ZGUgYSBgYGxvZyhsZXZlbCwgbXNnKWBgCiAgIGNvbnZlbmllbmNlIG1ldGhvZCwgYXMgd2VsbCBhcyBhIDpjbGFzczpgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyYCBjbGFzcyB0aGF0CiAgIHJvdGF0ZXMgaXRzIGxvZyBmaWxlcyBhdCBhIHRpbWVkIGludGVydmFsLiAgVGhlIG1vZHVsZSBhbHJlYWR5IGhhZAogICA6Y2xhc3M6YFJvdGF0aW5nRmlsZUhhbmRsZXJgLCB3aGljaCByb3RhdGVkIGxvZ3Mgb25jZSB0aGUgZmlsZSBleGNlZWRlZCBhCkBAIC0xMTk2LDcgKzExOTYsNyBAQAogICBncm91cCBvciBmb3IgYSByYW5nZSBvZiBncm91cHMuIChDb250cmlidXRlZCBieSBKw7xyZ2VuIEEuIEVyaGFyZC4pCiAKICogVHdvIG5ldyBmdW5jdGlvbnMgd2VyZSBhZGRlZCB0byB0aGUgOm1vZDpgb3BlcmF0b3JgIG1vZHVsZSwKLSAgOmZ1bmM6YGF0dHJnZXR0ZXIoYXR0cilgIGFuZCA6ZnVuYzpgaXRlbWdldHRlcihpbmRleClgLiBCb3RoIGZ1bmN0aW9ucyByZXR1cm4KKyAgYGBhdHRyZ2V0dGVyKGF0dHIpYGAgYW5kIGBgaXRlbWdldHRlcihpbmRleClgYC4gQm90aCBmdW5jdGlvbnMgcmV0dXJuCiAgIGNhbGxhYmxlcyB0aGF0IHRha2UgYSBzaW5nbGUgYXJndW1lbnQgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb3IKICAgaXRlbTsgdGhlc2UgY2FsbGFibGVzIG1ha2UgZXhjZWxsZW50IGRhdGEgZXh0cmFjdG9ycyB3aGVuIHVzZWQgd2l0aCA6ZnVuYzpgbWFwYAogICBvciA6ZnVuYzpgc29ydGVkYC4gIEZvciBleGFtcGxlOjoKQEAgLTEyMjMsMTQgKzEyMjMsMTQgQEAKICAgcmVwbGFjZW1lbnQgZm9yIDpmdW5jOmByZmM4MjIuZm9ybWF0ZGF0ZWAuICBZb3UgbWF5IHdhbnQgdG8gd3JpdGUgbmV3IGUtbWFpbAogICBwcm9jZXNzaW5nIGNvZGUgd2l0aCB0aGlzIGluIG1pbmQuICAoQ2hhbmdlIGltcGxlbWVudGVkIGJ5IEFudGhvbnkgQmF4dGVyLikKIAotKiBBIG5ldyA6ZnVuYzpgdXJhbmRvbShuKWAgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSA6bW9kOmBvc2AgbW9kdWxlLCByZXR1cm5pbmcKKyogQSBuZXcgYGB1cmFuZG9tKG4pYGAgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSA6bW9kOmBvc2AgbW9kdWxlLCByZXR1cm5pbmcKICAgYSBzdHJpbmcgY29udGFpbmluZyAqbiogYnl0ZXMgb2YgcmFuZG9tIGRhdGEuICBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGFjY2VzcyB0bwogICBwbGF0Zm9ybS1zcGVjaWZpYyBzb3VyY2VzIG9mIHJhbmRvbW5lc3Mgc3VjaCBhcyA6ZmlsZTpgL2Rldi91cmFuZG9tYCBvbiBMaW51eCBvcgogICB0aGUgV2luZG93cyBDcnlwdG9BUEkuICAoQ29udHJpYnV0ZWQgYnkgVHJldm9yIFBlcnJpbi4pCiAKLSogQW5vdGhlciBuZXcgZnVuY3Rpb246IDpmdW5jOmBvcy5wYXRoLmxleGlzdHMocGF0aClgICByZXR1cm5zIHRydWUgaWYgdGhlIGZpbGUKKyogQW5vdGhlciBuZXcgZnVuY3Rpb246IGBgb3MucGF0aC5sZXhpc3RzKHBhdGgpYGAgIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsZQogICBzcGVjaWZpZWQgYnkgKnBhdGgqIGV4aXN0cywgd2hldGhlciBvciBub3QgaXQncyBhIHN5bWJvbGljIGxpbmsuICBUaGlzIGRpZmZlcnMKLSAgZnJvbSB0aGUgZXhpc3RpbmcgOmZ1bmM6YG9zLnBhdGguZXhpc3RzKHBhdGgpYCBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBmYWxzZSBpZgorICBmcm9tIHRoZSBleGlzdGluZyBgYG9zLnBhdGguZXhpc3RzKHBhdGgpYGAgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgZmFsc2UgaWYKICAgKnBhdGgqIGlzIGEgc3ltbGluayB0aGF0IHBvaW50cyB0byBhIGRlc3RpbmF0aW9uIHRoYXQgZG9lc24ndCBleGlzdC4KICAgKENvbnRyaWJ1dGVkIGJ5IEJlbmkgQ2hlcm5pYXZza3kuKQogCkBAIC0xMjQzLDcgKzEyNDMsNyBAQAogKiBUaGUgOm1vZDpgcHJvZmlsZWAgbW9kdWxlIGNhbiBub3cgcHJvZmlsZSBDIGV4dGVuc2lvbiBmdW5jdGlvbnMuIChDb250cmlidXRlZAogICBieSBOaWNrIEJhc3Rpbi4pCiAKLSogVGhlIDptb2Q6YHJhbmRvbWAgbW9kdWxlIGhhcyBhIG5ldyBtZXRob2QgY2FsbGVkIDptZXRoOmBnZXRyYW5kYml0cyhOKWAgdGhhdAorKiBUaGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUgaGFzIGEgbmV3IG1ldGhvZCBjYWxsZWQgYGBnZXRyYW5kYml0cyhOKWBgIHRoYXQKICAgcmV0dXJucyBhIGxvbmcgaW50ZWdlciAqTiogYml0cyBpbiBsZW5ndGguICBUaGUgZXhpc3RpbmcgOm1ldGg6YHJhbmRyYW5nZWAKICAgbWV0aG9kIG5vdyB1c2VzIDptZXRoOmBnZXRyYW5kYml0c2Agd2hlcmUgYXBwcm9wcmlhdGUsIG1ha2luZyBnZW5lcmF0aW9uIG9mCiAgIGFyYml0cmFyaWx5IGxhcmdlIHJhbmRvbSBudW1iZXJzIG1vcmUgZWZmaWNpZW50LiAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQKQEAgLTEyNzIsNyArMTI3Miw3IEBACiAgIHRoaXMsIGJ1dCAyLjQgd2lsbCByYWlzZSBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgZXhjZXB0aW9uLgogCiAqIFR3byBuZXcgZnVuY3Rpb25zIHdlcmUgYWRkZWQgdG8gdGhlIDptb2Q6YHNvY2tldGAgbW9kdWxlLiA6ZnVuYzpgc29ja2V0cGFpcmAKLSAgcmV0dXJucyBhIHBhaXIgb2YgY29ubmVjdGVkIHNvY2tldHMgYW5kIDpmdW5jOmBnZXRzZXJ2Ynlwb3J0KHBvcnQpYCBsb29rcyB1cCB0aGUKKyAgcmV0dXJucyBhIHBhaXIgb2YgY29ubmVjdGVkIHNvY2tldHMgYW5kIGBgZ2V0c2VydmJ5cG9ydChwb3J0KWBgIGxvb2tzIHVwIHRoZQogICBzZXJ2aWNlIG5hbWUgZm9yIGEgZ2l2ZW4gcG9ydCBudW1iZXIuIChDb250cmlidXRlZCBieSBEYXZlIENvbGUgYW5kIEJhcnJ5CiAgIFdhcnNhdy4pCiAKQEAgLTE0NTQsMTEgKzE0NTQsMTEgQEAKICogQW5vdGhlciBuZXcgbWFjcm8sIDpjOm1hY3JvOmBQeV9DTEVBUihvYmopYCwgIGRlY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mCiAgICpvYmoqIGFuZCBzZXRzICpvYmoqIHRvIHRoZSBudWxsIHBvaW50ZXIuICAoQ29udHJpYnV0ZWQgYnkgSmltIEZ1bHRvbi4pCiAKLSogQSBuZXcgZnVuY3Rpb24sIDpjOmZ1bmM6YFB5VHVwbGVfUGFjayhOLCBvYmoxLCBvYmoyLCAuLi4sIG9iak4pYCwgY29uc3RydWN0cworKiBBIG5ldyBmdW5jdGlvbiwgYGBQeVR1cGxlX1BhY2soTiwgb2JqMSwgb2JqMiwgLi4uLCBvYmpOKWBgLCBjb25zdHJ1Y3RzCiAgIHR1cGxlcyBmcm9tIGEgdmFyaWFibGUgbGVuZ3RoIGFyZ3VtZW50IGxpc3Qgb2YgUHl0aG9uIG9iamVjdHMuICAoQ29udHJpYnV0ZWQgYnkKICAgUmF5bW9uZCBIZXR0aW5nZXIuKQogCi0qIEEgbmV3IGZ1bmN0aW9uLCA6YzpmdW5jOmBQeURpY3RfQ29udGFpbnMoZCwgaylgLCBpbXBsZW1lbnRzIGZhc3QgZGljdGlvbmFyeQorKiBBIG5ldyBmdW5jdGlvbiwgYGBQeURpY3RfQ29udGFpbnMoZCwgaylgYCwgaW1wbGVtZW50cyBmYXN0IGRpY3Rpb25hcnkKICAgbG9va3VwcyB3aXRob3V0IG1hc2tpbmcgZXhjZXB0aW9ucyByYWlzZWQgZHVyaW5nIHRoZSBsb29rLXVwIHByb2Nlc3MuCiAgIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjUucnN0IGIvRG9jL3doYXRzbmV3LzIuNS5yc3QKaW5kZXggZTA1OWNkNS4uYjkxZTY0NyAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuNS5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuNS5yc3QKQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgICAgICAgICBwb3B1cF9tZW51LmFwcGVuZCggKCJPcGVuIiwgb3Blbl9mdW5jLCAxKSApCiAKIEFub3RoZXIgZnVuY3Rpb24gaW4gdGhlIDptb2Q6YGZ1bmN0b29sc2AgbW9kdWxlIGlzIHRoZQotOmZ1bmM6YHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHdyYXBwZWQpYCBmdW5jdGlvbiB0aGF0IGhlbHBzIHlvdSB3cml0ZSB3ZWxsLQorYGB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCB3cmFwcGVkKWBgIGZ1bmN0aW9uIHRoYXQgaGVscHMgeW91IHdyaXRlIHdlbGwtCiBiZWhhdmVkIGRlY29yYXRvcnMuICA6ZnVuYzpgdXBkYXRlX3dyYXBwZXJgIGNvcGllcyB0aGUgbmFtZSwgbW9kdWxlLCBhbmQKIGRvY3N0cmluZyBhdHRyaWJ1dGUgdG8gYSB3cmFwcGVyIGZ1bmN0aW9uIHNvIHRoYXQgdHJhY2ViYWNrcyBpbnNpZGUgdGhlIHdyYXBwZWQKIGZ1bmN0aW9uIGFyZSBlYXNpZXIgdG8gdW5kZXJzdGFuZC4gIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgd3JpdGU6OgpAQCAtNDU0LDcgKzQ1NCw3IEBACiBgYHZhbCA9IHlpZWxkIGlgYCBidXQgaGF2ZSB0byB1c2UgcGFyZW50aGVzZXMgd2hlbiB0aGVyZSdzIGFuIG9wZXJhdGlvbiwgYXMgaW4KIGBgdmFsID0gKHlpZWxkIGkpICsgMTJgYC4pCiAKLVZhbHVlcyBhcmUgc2VudCBpbnRvIGEgZ2VuZXJhdG9yIGJ5IGNhbGxpbmcgaXRzIDptZXRoOmBzZW5kKHZhbHVlKWAgbWV0aG9kLiAgVGhlCitWYWx1ZXMgYXJlIHNlbnQgaW50byBhIGdlbmVyYXRvciBieSBjYWxsaW5nIGl0cyBgYHNlbmQodmFsdWUpYGAgbWV0aG9kLiAgVGhlCiBnZW5lcmF0b3IncyBjb2RlIGlzIHRoZW4gcmVzdW1lZCBhbmQgdGhlIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbiByZXR1cm5zIHRoZQogc3BlY2lmaWVkICp2YWx1ZSouICBJZiB0aGUgcmVndWxhciA6bWV0aDpgbmV4dGAgbWV0aG9kIGlzIGNhbGxlZCwgdGhlCiA6a2V5d29yZDpgeWllbGRgIHJldHVybnMgOmNvbnN0OmBOb25lYC4KQEAgLTQ5Niw3ICs0OTYsNyBAQAogCiBJbiBhZGRpdGlvbiB0byA6bWV0aDpgc2VuZGAsIHRoZXJlIGFyZSB0d28gb3RoZXIgbmV3IG1ldGhvZHMgb24gZ2VuZXJhdG9yczoKIAotKiA6bWV0aDpgdGhyb3codHlwZSwgdmFsdWU9Tm9uZSwgdHJhY2ViYWNrPU5vbmUpYCBpcyB1c2VkIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbgorKiBgYHRocm93KHR5cGUsIHZhbHVlPU5vbmUsIHRyYWNlYmFjaz1Ob25lKWBgIGlzIHVzZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uCiAgIGluc2lkZSB0aGUgZ2VuZXJhdG9yOyB0aGUgZXhjZXB0aW9uIGlzIHJhaXNlZCBieSB0aGUgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uCiAgIHdoZXJlIHRoZSBnZW5lcmF0b3IncyBleGVjdXRpb24gaXMgcGF1c2VkLgogCkBAIC02NjAsNyArNjYwLDcgQEAKIAogKiBUaGUgY29kZSBpbiAqQkxPQ0sqIGlzIGV4ZWN1dGVkLgogCi0qIElmICpCTE9DSyogcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIDptZXRoOmBfX2V4aXRfXyh0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKWAKKyogSWYgKkJMT0NLKiByYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgYGBfX2V4aXRfXyh0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKWBgCiAgIGlzIGNhbGxlZCB3aXRoIHRoZSBleGNlcHRpb24gZGV0YWlscywgdGhlIHNhbWUgdmFsdWVzIHJldHVybmVkIGJ5CiAgIDpmdW5jOmBzeXMuZXhjX2luZm9gLiAgVGhlIG1ldGhvZCdzIHJldHVybiB2YWx1ZSBjb250cm9scyB3aGV0aGVyIHRoZSBleGNlcHRpb24KICAgaXMgcmUtcmFpc2VkOiBhbnkgZmFsc2UgdmFsdWUgcmUtcmFpc2VzIHRoZSBleGNlcHRpb24sIGFuZCBgYFRydWVgYCB3aWxsIHJlc3VsdApAQCAtNzczLDcgKzc3Myw3IEBACiAgICB3aXRoIGRiX3RyYW5zYWN0aW9uKGRiKSBhcyBjdXJzb3I6CiAgICAgICAgLi4uCiAKLVRoZSA6bW9kOmBjb250ZXh0bGliYCBtb2R1bGUgYWxzbyBoYXMgYSA6ZnVuYzpgbmVzdGVkKG1ncjEsIG1ncjIsIC4uLilgIGZ1bmN0aW9uCitUaGUgOm1vZDpgY29udGV4dGxpYmAgbW9kdWxlIGFsc28gaGFzIGEgYGBuZXN0ZWQobWdyMSwgbWdyMiwgLi4uKWBgIGZ1bmN0aW9uCiB0aGF0IGNvbWJpbmVzIGEgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMgc28geW91IGRvbid0IG5lZWQgdG8gd3JpdGUgbmVzdGVkCiAnOmtleXdvcmQ6YHdpdGhgJyBzdGF0ZW1lbnRzLiAgSW4gdGhpcyBleGFtcGxlLCB0aGUgc2luZ2xlICc6a2V5d29yZDpgd2l0aGAnCiBzdGF0ZW1lbnQgYm90aCBzdGFydHMgYSBkYXRhYmFzZSB0cmFuc2FjdGlvbiBhbmQgYWNxdWlyZXMgYSB0aHJlYWQgbG9jazo6CkBAIC03ODIsNyArNzgyLDcgQEAKICAgIHdpdGggbmVzdGVkIChkYl90cmFuc2FjdGlvbihkYiksIGxvY2spIGFzIChjdXJzb3IsIGxvY2tlZCk6CiAgICAgICAgLi4uCiAKLUZpbmFsbHksIHRoZSA6ZnVuYzpgY2xvc2luZyhvYmplY3QpYCBmdW5jdGlvbiByZXR1cm5zICpvYmplY3QqIHNvIHRoYXQgaXQgY2FuIGJlCitGaW5hbGx5LCB0aGUgYGBjbG9zaW5nKG9iamVjdClgYCBmdW5jdGlvbiByZXR1cm5zICpvYmplY3QqIHNvIHRoYXQgaXQgY2FuIGJlCiBib3VuZCB0byBhIHZhcmlhYmxlLCBhbmQgY2FsbHMgYGBvYmplY3QuY2xvc2VgYCBhdCB0aGUgZW5kIG9mIHRoZSBibG9jay4gOjoKIAogICAgaW1wb3J0IHVybGxpYiwgc3lzCkBAIC05NTUsNyArOTU1LDcgQEAKIAogQSBjb3JyZXNwb25kaW5nIDphdHRyOmBuYl9pbmRleGAgc2xvdCB3YXMgYWRkZWQgdG8gdGhlIEMtbGV2ZWwKIDpjOnR5cGU6YFB5TnVtYmVyTWV0aG9kc2Agc3RydWN0dXJlIHRvIGxldCBDIGV4dGVuc2lvbnMgaW1wbGVtZW50IHRoaXMgcHJvdG9jb2wuCi06YzpmdW5jOmBQeU51bWJlcl9JbmRleChvYmopYCBjYW4gYmUgdXNlZCBpbiBleHRlbnNpb24gY29kZSB0byBjYWxsIHRoZQorYGBQeU51bWJlcl9JbmRleChvYmopYGAgY2FuIGJlIHVzZWQgaW4gZXh0ZW5zaW9uIGNvZGUgdG8gY2FsbCB0aGUKIDptZXRoOmBfX2luZGV4X19gIGZ1bmN0aW9uIGFuZCByZXRyaWV2ZSBpdHMgcmVzdWx0LgogCiAKQEAgLTk3Niw3ICs5NzYsNyBAQAogCiAqIFRoZSA6Y2xhc3M6YGRpY3RgIHR5cGUgaGFzIGEgbmV3IGhvb2sgZm9yIGxldHRpbmcgc3ViY2xhc3NlcyBwcm92aWRlIGEgZGVmYXVsdAogICB2YWx1ZSB3aGVuIGEga2V5IGlzbid0IGNvbnRhaW5lZCBpbiB0aGUgZGljdGlvbmFyeS4gV2hlbiBhIGtleSBpc24ndCBmb3VuZCwgdGhlCi0gIGRpY3Rpb25hcnkncyA6bWV0aDpgX19taXNzaW5nX18oa2V5KWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLiAgVGhpcyBob29rIGlzIHVzZWQKKyAgZGljdGlvbmFyeSdzIGBgX19taXNzaW5nX18oa2V5KWBgIG1ldGhvZCB3aWxsIGJlIGNhbGxlZC4gIFRoaXMgaG9vayBpcyB1c2VkCiAgIHRvIGltcGxlbWVudCB0aGUgbmV3IDpjbGFzczpgZGVmYXVsdGRpY3RgIGNsYXNzIGluIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AKICAgbW9kdWxlLiAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlZmluZXMgYSBkaWN0aW9uYXJ5ICB0aGF0IHJldHVybnMgemVybyBmb3IgYW55CiAgIG1pc3Npbmcga2V5OjoKQEAgLTk4OSwxNiArOTg5LDE2IEBACiAgICAgIHByaW50IGRbMV0sIGRbMl0gICAjIFByaW50cyAxLCAyCiAgICAgIHByaW50IGRbM10sIGRbNF0gICAjIFByaW50cyAwLCAwCiAKLSogQm90aCA4LWJpdCBhbmQgVW5pY29kZSBzdHJpbmdzIGhhdmUgbmV3IDptZXRoOmBwYXJ0aXRpb24oc2VwKWAgIGFuZAotICA6bWV0aDpgcnBhcnRpdGlvbihzZXApYCBtZXRob2RzIHRoYXQgc2ltcGxpZnkgYSBjb21tb24gdXNlIGNhc2UuCisqIEJvdGggOC1iaXQgYW5kIFVuaWNvZGUgc3RyaW5ncyBoYXZlIG5ldyBgYHBhcnRpdGlvbihzZXApYGAgIGFuZAorICBgYHJwYXJ0aXRpb24oc2VwKWBgIG1ldGhvZHMgdGhhdCBzaW1wbGlmeSBhIGNvbW1vbiB1c2UgY2FzZS4KIAotICBUaGUgOm1ldGg6YGZpbmQoUylgIG1ldGhvZCBpcyBvZnRlbiB1c2VkIHRvIGdldCBhbiBpbmRleCB3aGljaCBpcyB0aGVuIHVzZWQgdG8KKyAgVGhlIGBgZmluZChTKWBgIG1ldGhvZCBpcyBvZnRlbiB1c2VkIHRvIGdldCBhbiBpbmRleCB3aGljaCBpcyB0aGVuIHVzZWQgdG8KICAgc2xpY2UgdGhlIHN0cmluZyBhbmQgb2J0YWluIHRoZSBwaWVjZXMgdGhhdCBhcmUgYmVmb3JlIGFuZCBhZnRlciB0aGUgc2VwYXJhdG9yLgotICA6bWV0aDpgcGFydGl0aW9uKHNlcClgIGNvbmRlbnNlcyB0aGlzIHBhdHRlcm4gaW50byBhIHNpbmdsZSBtZXRob2QgY2FsbCB0aGF0CisgIGBgcGFydGl0aW9uKHNlcClgYCBjb25kZW5zZXMgdGhpcyBwYXR0ZXJuIGludG8gYSBzaW5nbGUgbWV0aG9kIGNhbGwgdGhhdAogICByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdWJzdHJpbmcgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IKICAgaXRzZWxmLCBhbmQgdGhlIHN1YnN0cmluZyBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpc24ndCBmb3VuZCwKICAgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGlzIHRoZSBlbnRpcmUgc3RyaW5nIGFuZCB0aGUgb3RoZXIgdHdvIGVsZW1lbnRzCi0gIGFyZSBlbXB0eS4gIDptZXRoOmBycGFydGl0aW9uKHNlcClgIGFsc28gcmV0dXJucyBhIDMtdHVwbGUgYnV0IHN0YXJ0cyBzZWFyY2hpbmcKKyAgYXJlIGVtcHR5LiAgYGBycGFydGl0aW9uKHNlcClgYCBhbHNvIHJldHVybnMgYSAzLXR1cGxlIGJ1dCBzdGFydHMgc2VhcmNoaW5nCiAgIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nOyB0aGUgYGByYGAgc3RhbmRzIGZvciAncmV2ZXJzZScuCiAKICAgU29tZSBleGFtcGxlczo6CkBAIC0xMTU3LDcgKzExNTcsNyBAQAogCiAgIC4uIFBhdGNoIDEzMTM5MzksIDEzNTk2MTgKIAotKiBUaGUgOmZ1bmM6YGxvbmcoc3RyLCBiYXNlKWAgZnVuY3Rpb24gaXMgbm93IGZhc3RlciBvbiBsb25nIGRpZ2l0IHN0cmluZ3MKKyogVGhlIGBgbG9uZyhzdHIsIGJhc2UpYGAgZnVuY3Rpb24gaXMgbm93IGZhc3RlciBvbiBsb25nIGRpZ2l0IHN0cmluZ3MKICAgYmVjYXVzZSBmZXdlciBpbnRlcm1lZGlhdGUgcmVzdWx0cyBhcmUgY2FsY3VsYXRlZC4gIFRoZSBwZWFrIGlzIGZvciBzdHJpbmdzIG9mCiAgIGFyb3VuZCA4MDAtLTEwMDAgZGlnaXRzIHdoZXJlICB0aGUgZnVuY3Rpb24gaXMgNiB0aW1lcyBmYXN0ZXIuIChDb250cmlidXRlZCBieQogICBBbGFuIE1jSW50eXJlIGFuZCBjb21taXR0ZWQgYXQgdGhlIE5lZWRGb3JTcGVlZCBzcHJpbnQuKQpAQCAtMTI2OCw3ICsxMjY4LDcgQEAKICAgKENvbnRyaWJ1dGVkIGJ5IEd1aWRvIHZhbiBSb3NzdW0uKQogCiAqIFRoZSA6Y2xhc3M6YGRlcXVlYCBkb3VibGUtZW5kZWQgcXVldWUgdHlwZSBzdXBwbGllZCBieSB0aGUgOm1vZDpgY29sbGVjdGlvbnNgCi0gIG1vZHVsZSBub3cgaGFzIGEgOm1ldGg6YHJlbW92ZSh2YWx1ZSlgIG1ldGhvZCB0aGF0IHJlbW92ZXMgdGhlIGZpcnN0IG9jY3VycmVuY2UKKyAgbW9kdWxlIG5vdyBoYXMgYSBgYHJlbW92ZSh2YWx1ZSlgYCBtZXRob2QgdGhhdCByZW1vdmVzIHRoZSBmaXJzdCBvY2N1cnJlbmNlCiAgIG9mICp2YWx1ZSogaW4gdGhlIHF1ZXVlLCByYWlzaW5nIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB2YWx1ZSBpc24ndCBmb3VuZC4KICAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyLikKIApAQCAtMTI5MSw3ICsxMjkxLDcgQEAKICogVGhlIDptb2Q6YGNzdmAgbW9kdWxlLCB3aGljaCBwYXJzZXMgZmlsZXMgaW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlIGZvcm1hdCwKICAgcmVjZWl2ZWQgc2V2ZXJhbCBlbmhhbmNlbWVudHMgYW5kIGEgbnVtYmVyIG9mIGJ1Z2ZpeGVzLiAgWW91IGNhbiBub3cgc2V0IHRoZQogICBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgb2YgYSBmaWVsZCBieSBjYWxsaW5nIHRoZQotICA6bWV0aDpgY3N2LmZpZWxkX3NpemVfbGltaXQobmV3X2xpbWl0KWAgZnVuY3Rpb247IG9taXR0aW5nIHRoZSAqbmV3X2xpbWl0KgorICBgYGNzdi5maWVsZF9zaXplX2xpbWl0KG5ld19saW1pdClgYCBmdW5jdGlvbjsgb21pdHRpbmcgdGhlICpuZXdfbGltaXQqCiAgIGFyZ3VtZW50IHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50bHktc2V0IGxpbWl0LiAgVGhlIDpjbGFzczpgcmVhZGVyYCBjbGFzcyBub3cgaGFzCiAgIGEgOmF0dHI6YGxpbmVfbnVtYCBhdHRyaWJ1dGUgdGhhdCBjb3VudHMgdGhlIG51bWJlciBvZiBwaHlzaWNhbCBsaW5lcyByZWFkIGZyb20KICAgdGhlIHNvdXJjZTsgcmVjb3JkcyBjYW4gc3BhbiBtdWx0aXBsZSBwaHlzaWNhbCBsaW5lcywgc28gOmF0dHI6YGxpbmVfbnVtYCBpcyBub3QKQEAgLTEzMDgsNyArMTMwOCw3IEBACiAgIChDb250cmlidXRlZCBieSBTa2lwIE1vbnRhbmFybyBhbmQgQW5kcmV3IE1jTmFtYXJhLikKIAogKiBUaGUgOmNsYXNzOmBkYXRldGltZWAgY2xhc3MgaW4gdGhlIDptb2Q6YGRhdGV0aW1lYCAgbW9kdWxlIG5vdyBoYXMgYQotICA6bWV0aDpgc3RycHRpbWUoc3RyaW5nLCBmb3JtYXQpYCAgbWV0aG9kIGZvciBwYXJzaW5nIGRhdGUgc3RyaW5ncywgY29udHJpYnV0ZWQKKyAgYGBzdHJwdGltZShzdHJpbmcsIGZvcm1hdClgYCAgbWV0aG9kIGZvciBwYXJzaW5nIGRhdGUgc3RyaW5ncywgY29udHJpYnV0ZWQKICAgYnkgSm9zaCBTcG9lcnJpLiBJdCB1c2VzIHRoZSBzYW1lIGZvcm1hdCBjaGFyYWN0ZXJzIGFzIDpmdW5jOmB0aW1lLnN0cnB0aW1lYCBhbmQKICAgOmZ1bmM6YHRpbWUuc3RyZnRpbWVgOjoKIApAQCAtMTQwMyw3ICsxNDAzLDcgQEAKICogVGhlIDptb2Q6YG1haWxib3hgIG1vZHVsZSB1bmRlcndlbnQgYSBtYXNzaXZlIHJld3JpdGUgdG8gYWRkIHRoZSBjYXBhYmlsaXR5IHRvCiAgIG1vZGlmeSBtYWlsYm94ZXMgaW4gYWRkaXRpb24gdG8gcmVhZGluZyB0aGVtLiAgQSBuZXcgc2V0IG9mIGNsYXNzZXMgdGhhdCBpbmNsdWRlCiAgIDpjbGFzczpgbWJveGAsIDpjbGFzczpgTUhgLCBhbmQgOmNsYXNzOmBNYWlsZGlyYCBhcmUgdXNlZCB0byByZWFkIG1haWxib3hlcywgYW5kCi0gIGhhdmUgYW4gOm1ldGg6YGFkZChtZXNzYWdlKWAgbWV0aG9kIHRvIGFkZCBtZXNzYWdlcywgOm1ldGg6YHJlbW92ZShrZXkpYCB0bworICBoYXZlIGFuIGBgYWRkKG1lc3NhZ2UpYGAgbWV0aG9kIHRvIGFkZCBtZXNzYWdlcywgYGByZW1vdmUoa2V5KWBgIHRvCiAgIHJlbW92ZSBtZXNzYWdlcywgYW5kIDptZXRoOmBsb2NrYC86bWV0aDpgdW5sb2NrYCB0byBsb2NrL3VubG9jayB0aGUgbWFpbGJveC4KICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGNvbnZlcnRzIGEgbWFpbGRpci1mb3JtYXQgbWFpbGJveCBpbnRvIGFuIG1ib3gtZm9ybWF0CiAgIG9uZTo6CkBAIC0xNDU4LDcgKzE0NTgsNyBAQAogICA6ZnVuYzpgd2FpdDRgIHJldHVybiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiAgOmZ1bmM6YHdhaXQzYCBkb2Vzbid0IHRha2UgYQogICBwcm9jZXNzIElEIGFzIGlucHV0LCBzbyBpdCB3YWl0cyBmb3IgYW55IGNoaWxkIHByb2Nlc3MgdG8gZXhpdCBhbmQgcmV0dXJucyBhCiAgIDMtdHVwbGUgb2YgKnByb2Nlc3MtaWQqLCAqZXhpdC1zdGF0dXMqLCAqcmVzb3VyY2UtdXNhZ2UqIGFzIHJldHVybmVkIGZyb20gdGhlCi0gIDpmdW5jOmByZXNvdXJjZS5nZXRydXNhZ2VgIGZ1bmN0aW9uLiA6ZnVuYzpgd2FpdDQocGlkKWAgZG9lcyB0YWtlIGEgcHJvY2VzcyBJRC4KKyAgOmZ1bmM6YHJlc291cmNlLmdldHJ1c2FnZWAgZnVuY3Rpb24uIGBgd2FpdDQocGlkKWBgIGRvZXMgdGFrZSBhIHByb2Nlc3MgSUQuCiAgIChDb250cmlidXRlZCBieSBDaGFkIEouIFNjaHJvZWRlci4pCiAKICAgT24gRnJlZUJTRCwgdGhlIDpmdW5jOmBvcy5zdGF0YCBmdW5jdGlvbiBub3cgcmV0dXJucyAgdGltZXMgd2l0aCBuYW5vc2Vjb25kCkBAIC0xNTMyLDggKzE1MzIsOCBAQAogICBJbiBQeXRob24gY29kZSwgbmV0bGluayBhZGRyZXNzZXMgYXJlIHJlcHJlc2VudGVkIGFzIGEgdHVwbGUgb2YgMiBpbnRlZ2VycywKICAgYGAocGlkLCBncm91cF9tYXNrKWBgLgogCi0gIFR3byBuZXcgbWV0aG9kcyBvbiBzb2NrZXQgb2JqZWN0cywgOm1ldGg6YHJlY3ZfaW50byhidWZmZXIpYCBhbmQKLSAgOm1ldGg6YHJlY3Zmcm9tX2ludG8oYnVmZmVyKWAsIHN0b3JlIHRoZSByZWNlaXZlZCBkYXRhIGluIGFuIG9iamVjdCAgdGhhdAorICBUd28gbmV3IG1ldGhvZHMgb24gc29ja2V0IG9iamVjdHMsIGBgcmVjdl9pbnRvKGJ1ZmZlcilgYCBhbmQKKyAgYGByZWN2ZnJvbV9pbnRvKGJ1ZmZlcilgYCwgc3RvcmUgdGhlIHJlY2VpdmVkIGRhdGEgaW4gYW4gb2JqZWN0ICB0aGF0CiAgIHN1cHBvcnRzIHRoZSBidWZmZXIgcHJvdG9jb2wgaW5zdGVhZCBvZiByZXR1cm5pbmcgdGhlIGRhdGEgYXMgYSBzdHJpbmcuICBUaGlzCiAgIG1lYW5zIHlvdSBjYW4gcHV0IHRoZSBkYXRhIGRpcmVjdGx5IGludG8gYW4gYXJyYXkgb3IgYSBtZW1vcnktbWFwcGVkIGZpbGUuCiAKQEAgLTE1NTcsOCArMTU1Nyw4IEBACiAgICAgIHllYXIsIG51bWJlciwgbmFtZSA9IHMudW5wYWNrKGRhdGEpCiAKICAgWW91IGNhbiBhbHNvIHBhY2sgYW5kIHVucGFjayBkYXRhIHRvIGFuZCBmcm9tIGJ1ZmZlciBvYmplY3RzIGRpcmVjdGx5IHVzaW5nIHRoZQotICA6bWV0aDpgcGFja19pbnRvKGJ1ZmZlciwgb2Zmc2V0LCB2MSwgdjIsIC4uLilgIGFuZCA6bWV0aDpgdW5wYWNrX2Zyb20oYnVmZmVyLAotICBvZmZzZXQpYCBtZXRob2RzLiAgVGhpcyBsZXRzIHlvdSBzdG9yZSBkYXRhIGRpcmVjdGx5IGludG8gYW4gYXJyYXkgb3IgYSBtZW1vcnktCisgIGBgcGFja19pbnRvKGJ1ZmZlciwgb2Zmc2V0LCB2MSwgdjIsIC4uLilgYCBhbmQgYGB1bnBhY2tfZnJvbShidWZmZXIsCisgIG9mZnNldClgYCBtZXRob2RzLiAgVGhpcyBsZXRzIHlvdSBzdG9yZSBkYXRhIGRpcmVjdGx5IGludG8gYW4gYXJyYXkgb3IgYSBtZW1vcnktCiAgIG1hcHBlZCBmaWxlLgogCiAgICg6Y2xhc3M6YFN0cnVjdGAgb2JqZWN0cyB3ZXJlIGltcGxlbWVudGVkIGJ5IEJvYiBJcHBvbGl0byBhdCB0aGUgTmVlZEZvclNwZWVkCkBAIC0xNTkyLDcgKzE1OTIsNyBAQAogICAuLiBwYXRjaCA5MTgxMDEKIAogKiBUaGUgOm1vZDpgdGhyZWFkaW5nYCBtb2R1bGUgbm93IGxldHMgeW91IHNldCB0aGUgc3RhY2sgc2l6ZSB1c2VkIHdoZW4gbmV3Ci0gIHRocmVhZHMgYXJlIGNyZWF0ZWQuIFRoZSA6ZnVuYzpgc3RhY2tfc2l6ZShbKnNpemUqXSlgIGZ1bmN0aW9uIHJldHVybnMgdGhlCisgIHRocmVhZHMgYXJlIGNyZWF0ZWQuIFRoZSBgYHN0YWNrX3NpemUoWypzaXplKl0pYGAgZnVuY3Rpb24gcmV0dXJucyB0aGUKICAgY3VycmVudGx5IGNvbmZpZ3VyZWQgc3RhY2sgc2l6ZSwgYW5kIHN1cHBseWluZyB0aGUgb3B0aW9uYWwgKnNpemUqIHBhcmFtZXRlcgogICBzZXRzIGEgbmV3IHZhbHVlLiAgTm90IGFsbCBwbGF0Zm9ybXMgc3VwcG9ydCBjaGFuZ2luZyB0aGUgc3RhY2sgc2l6ZSwgYnV0CiAgIFdpbmRvd3MsIFBPU0lYIHRocmVhZGluZywgYW5kIE9TLzIgYWxsIGRvLiAoQ29udHJpYnV0ZWQgYnkgQW5kcmV3IE1hY0ludHlyZS4pCkBAIC0xOTExLDcgKzE5MTEsNyBAQAogICAgaCA9IGhhc2hsaWIubmV3KCdtZDUnKSAgICAgICAgICAjIFByb3ZpZGUgYWxnb3JpdGhtIGFzIGEgc3RyaW5nCiAKIE9uY2UgYSBoYXNoIG9iamVjdCBoYXMgYmVlbiBjcmVhdGVkLCBpdHMgbWV0aG9kcyBhcmUgdGhlIHNhbWUgYXMgYmVmb3JlOgotOm1ldGg6YHVwZGF0ZShzdHJpbmcpYCBoYXNoZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgaW50byB0aGUgIGN1cnJlbnQgZGlnZXN0CitgYHVwZGF0ZShzdHJpbmcpYGAgaGFzaGVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGludG8gdGhlICBjdXJyZW50IGRpZ2VzdAogc3RhdGUsIDptZXRoOmBkaWdlc3RgIGFuZCA6bWV0aDpgaGV4ZGlnZXN0YCByZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIGJpbmFyeQogc3RyaW5nIG9yIGEgc3RyaW5nIG9mIGhleCBkaWdpdHMsIGFuZCA6bWV0aDpgY29weWAgcmV0dXJucyBhIG5ldyBoYXNoaW5nIG9iamVjdAogd2l0aCB0aGUgc2FtZSBkaWdlc3Qgc3RhdGUuCkBAIC0yMTY4LDIwICsyMTY4LDIwIEBACiAKICogVHdvIG5ldyBtYWNyb3MgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgQyBmdW5jdGlvbnMgdGhhdCBhcmUgbG9jYWwgdG8gdGhlCiAgIGN1cnJlbnQgZmlsZSBzbyB0aGF0IGEgZmFzdGVyIGNhbGxpbmcgY29udmVudGlvbiBjYW4gYmUgdXNlZC4KLSAgOmM6ZnVuYzpgUHlfTE9DQUwodHlwZSlgIGRlY2xhcmVzIHRoZSBmdW5jdGlvbiBhcyByZXR1cm5pbmcgYSB2YWx1ZSBvZiB0aGUKKyAgYGBQeV9MT0NBTCh0eXBlKWBgIGRlY2xhcmVzIHRoZSBmdW5jdGlvbiBhcyByZXR1cm5pbmcgYSB2YWx1ZSBvZiB0aGUKICAgc3BlY2lmaWVkICp0eXBlKiBhbmQgdXNlcyBhIGZhc3QtY2FsbGluZyBxdWFsaWZpZXIuCi0gIDpjOmZ1bmM6YFB5X0xPQ0FMX0lOTElORSh0eXBlKWAgZG9lcyB0aGUgc2FtZSB0aGluZyBhbmQgYWxzbyByZXF1ZXN0cyB0aGUKKyAgYGBQeV9MT0NBTF9JTkxJTkUodHlwZSlgYCBkb2VzIHRoZSBzYW1lIHRoaW5nIGFuZCBhbHNvIHJlcXVlc3RzIHRoZQogICBmdW5jdGlvbiBiZSBpbmxpbmVkLiAgSWYgOmM6ZnVuYzpgUFlfTE9DQUxfQUdHUkVTU0lWRWAgaXMgZGVmaW5lZCBiZWZvcmUKICAgOmZpbGU6YHB5dGhvbi5oYCBpcyBpbmNsdWRlZCwgYSBzZXQgb2YgbW9yZSBhZ2dyZXNzaXZlIG9wdGltaXphdGlvbnMgYXJlIGVuYWJsZWQKICAgZm9yIHRoZSBtb2R1bGU7IHlvdSBzaG91bGQgYmVuY2htYXJrIHRoZSByZXN1bHRzIHRvIGZpbmQgb3V0IGlmIHRoZXNlCiAgIG9wdGltaXphdGlvbnMgYWN0dWFsbHkgbWFrZSB0aGUgY29kZSBmYXN0ZXIuICAoQ29udHJpYnV0ZWQgYnkgRnJlZHJpayBMdW5kaCBhdAogICB0aGUgTmVlZEZvclNwZWVkIHNwcmludC4pCiAKLSogOmM6ZnVuYzpgUHlFcnJfTmV3RXhjZXB0aW9uKG5hbWUsIGJhc2UsIGRpY3QpYCBjYW4gbm93IGFjY2VwdCBhIHR1cGxlIG9mIGJhc2UKKyogYGBQeUVycl9OZXdFeGNlcHRpb24obmFtZSwgYmFzZSwgZGljdClgYCBjYW4gbm93IGFjY2VwdCBhIHR1cGxlIG9mIGJhc2UKICAgY2xhc3NlcyBhcyBpdHMgKmJhc2UqIGFyZ3VtZW50LiAgKENvbnRyaWJ1dGVkIGJ5IEdlb3JnIEJyYW5kbC4pCiAKICogVGhlIDpjOmZ1bmM6YFB5RXJyX1dhcm5gIGZ1bmN0aW9uIGZvciBpc3N1aW5nIHdhcm5pbmdzIGlzIG5vdyBkZXByZWNhdGVkIGluCi0gIGZhdm91ciBvZiA6YzpmdW5jOmBQeUVycl9XYXJuRXgoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrbGV2ZWwpYCB3aGljaCBsZXRzIHlvdQorICBmYXZvdXIgb2YgYGBQeUVycl9XYXJuRXgoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrbGV2ZWwpYGAgd2hpY2ggbGV0cyB5b3UKICAgc3BlY2lmeSB0aGUgbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyBzZXBhcmF0aW5nIHRoaXMgZnVuY3Rpb24gYW5kIHRoZSBjYWxsZXIuICBBCiAgICpzdGFja2xldmVsKiBvZiAxIGlzIHRoZSBmdW5jdGlvbiBjYWxsaW5nIDpjOmZ1bmM6YFB5RXJyX1dhcm5FeGAsIDIgaXMgdGhlCiAgIGZ1bmN0aW9uIGFib3ZlIHRoYXQsIGFuZCBzbyBmb3J0aC4gIChBZGRlZCBieSBOZWFsIE5vcndpdHouKQpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMC5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4wLnJzdAppbmRleCA1NWI2NWJhLi43NjI5NzdjIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy4wLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4wLnJzdApAQCAtODEyLDcgKzgxMiw3IEBACiAqIFRoZSA6ZnVuYzpgcm91bmRgIGZ1bmN0aW9uIHJvdW5kaW5nIHN0cmF0ZWd5IGFuZCByZXR1cm4gdHlwZSBoYXZlCiAgIGNoYW5nZWQuICBFeGFjdCBoYWxmd2F5IGNhc2VzIGFyZSBub3cgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBldmVuCiAgIHJlc3VsdCBpbnN0ZWFkIG9mIGF3YXkgZnJvbSB6ZXJvLiAgKEZvciBleGFtcGxlLCBgYHJvdW5kKDIuNSlgYCBub3cKLSAgcmV0dXJucyBgYDJgYCByYXRoZXIgdGhhbiBgYDNgYC4pICA6ZnVuYzpgcm91bmQoeFssIG5dKWAgbm93CisgIHJldHVybnMgYGAyYGAgcmF0aGVyIHRoYW4gYGAzYGAuKSAgYGByb3VuZCh4Wywgbl0pYGAgbm93CiAgIGRlbGVnYXRlcyB0byBgYHguX19yb3VuZF9fKFtuXSlgYCBpbnN0ZWFkIG9mIGFsd2F5cyByZXR1cm5pbmcgYQogICBmbG9hdC4gIEl0IGdlbmVyYWxseSByZXR1cm5zIGFuIGludGVnZXIgd2hlbiBjYWxsZWQgd2l0aCBhIHNpbmdsZQogICBhcmd1bWVudCBhbmQgYSB2YWx1ZSBvZiB0aGUgc2FtZSB0eXBlIGFzIGBgeGBgIHdoZW4gY2FsbGVkIHdpdGggdHdvCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy4yLnJzdCBiL0RvYy93aGF0c25ldy8zLjIucnN0CmluZGV4IDA1NTNlYzMuLjk5ODI3ZmYgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjIucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjIucnN0CkBAIC0yNzAsNyArMjcwLDcgQEAKICAgICAgIGUuc3VibWl0KHNodXRpbC5jb3B5LCAnc3JjMS50eHQnLCAnZGVzdDEudHh0JykKICAgICAgIGUuc3VibWl0KHNodXRpbC5jb3B5LCAnc3JjMi50eHQnLCAnZGVzdDIudHh0JykKICAgICAgIGUuc3VibWl0KHNodXRpbC5jb3B5LCAnc3JjMy50eHQnLCAnZGVzdDMudHh0JykKLSAgICAgIGUuc3VibWl0KHNodXRpbC5jb3B5LCAnc3JjNC50eHQnLCAnZGVzdDQudHh0JykKKyAgICAgIGUuc3VibWl0KHNodXRpbC5jb3B5LCAnc3JjMy50eHQnLCAnZGVzdDQudHh0JykKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIzNTQsNyArMjM1NCw3IEBACiAgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdTsgOmlzc3VlOmAzMDAxYC4pCiAKICogVGhlIGZhc3Qtc2VhcmNoIGFsZ29yaXRobSBpbiBzdHJpbmdsaWIgaXMgbm93IHVzZWQgYnkgdGhlIDptZXRoOmBzcGxpdGAsCi0gIDptZXRoOmBzcGxpdGxpbmVzYCBhbmQgOm1ldGg6YHJlcGxhY2VgIG1ldGhvZHMgb24KKyAgOm1ldGg6YHJzcGxpdGAsIDptZXRoOmBzcGxpdGxpbmVzYCBhbmQgOm1ldGg6YHJlcGxhY2VgIG1ldGhvZHMgb24KICAgOmNsYXNzOmBieXRlc2AsIDpjbGFzczpgYnl0ZWFycmF5YCBhbmQgOmNsYXNzOmBzdHJgIG9iamVjdHMuIExpa2V3aXNlLCB0aGUKICAgYWxnb3JpdGhtIGlzIGFsc28gdXNlZCBieSA6bWV0aDpgcmZpbmRgLCA6bWV0aDpgcmluZGV4YCwgOm1ldGg6YHJzcGxpdGAgYW5kCiAgIDptZXRoOmBycGFydGl0aW9uYC4KQEAgLTI0NzEsMTQgKzI0NzEsMTQgQEAKIAogSW4gYWRkaXRpb24gdG8gdGhlIGV4aXN0aW5nIFN1YnZlcnNpb24gY29kZSByZXBvc2l0b3J5IGF0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZwogdGhlcmUgaXMgbm93IGEgYE1lcmN1cmlhbCA8aHR0cDovL21lcmN1cmlhbC5zZWxlbmljLmNvbS8+YF8gcmVwb3NpdG9yeSBhdAotaHR0cDovL2hnLnB5dGhvbi5vcmcvXC4KK2h0dHA6Ly9oZy5weXRob24ub3JnLyAuCiAKIEFmdGVyIHRoZSAzLjIgcmVsZWFzZSwgdGhlcmUgYXJlIHBsYW5zIHRvIHN3aXRjaCB0byBNZXJjdXJpYWwgYXMgdGhlIHByaW1hcnkKIHJlcG9zaXRvcnkuICBUaGlzIGRpc3RyaWJ1dGVkIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gc2hvdWxkIG1ha2UgaXQgZWFzaWVyIGZvcgogbWVtYmVycyBvZiB0aGUgY29tbXVuaXR5IHRvIGNyZWF0ZSBhbmQgc2hhcmUgZXh0ZXJuYWwgY2hhbmdlc2V0cy4gIFNlZQogOnBlcDpgMzg1YCBmb3IgZGV0YWlscy4KIAotVG8gbGVhcm4gdGhlIG5ldyB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLCBzZWUgdGhlIGB0dXRvcmlhbCBieSBKb2VsCitUbyBsZWFybiB0byB1c2UgdGhlIG5ldyB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLCBzZWUgdGhlIGB0dXRvcmlhbCBieSBKb2VsCiBTcG9sc2t5IDxodHRwOi8vaGdpbml0LmNvbT5gXyBvciB0aGUgYEd1aWRlIHRvIE1lcmN1cmlhbCBXb3JrZmxvd3MKIDxodHRwOi8vbWVyY3VyaWFsLnNlbGVuaWMuY29tL2d1aWRlLz5gXy4KIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMy5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4zLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2JmMTJkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL3doYXRzbmV3LzMuMy5yc3QKQEAgLTAsMCArMSwxOTkwIEBACisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgIFdoYXQncyBOZXcgSW4gUHl0aG9uIDMuMworKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCis6QXV0aG9yOiBSYXltb25kIEhldHRpbmdlcgorOlJlbGVhc2U6IHxyZWxlYXNlfAorOkRhdGU6IHx0b2RheXwKKworLi4gUnVsZXMgZm9yIG1haW50ZW5hbmNlOgorCisgICAqIEFueW9uZSBjYW4gYWRkIHRleHQgdG8gdGhpcyBkb2N1bWVudC4gIERvIG5vdCBzcGVuZCB2ZXJ5IG11Y2ggdGltZQorICAgb24gdGhlIHdvcmRpbmcgb2YgeW91ciBjaGFuZ2VzLCBiZWNhdXNlIHlvdXIgdGV4dCB3aWxsIHByb2JhYmx5CisgICBnZXQgcmV3cml0dGVuIHRvIHNvbWUgZGVncmVlLgorCisgICAqIFRoZSBtYWludGFpbmVyIHdpbGwgZ28gdGhyb3VnaCBNaXNjL05FV1MgcGVyaW9kaWNhbGx5IGFuZCBhZGQKKyAgIGNoYW5nZXM7IGl0J3MgdGhlcmVmb3JlIG1vcmUgaW1wb3J0YW50IHRvIGFkZCB5b3VyIGNoYW5nZXMgdG8KKyAgIE1pc2MvTkVXUyB0aGFuIHRvIHRoaXMgZmlsZS4KKworICAgKiBUaGlzIGlzIG5vdCBhIGNvbXBsZXRlIGxpc3Qgb2YgZXZlcnkgc2luZ2xlIGNoYW5nZTsgY29tcGxldGVuZXNzCisgICBpcyB0aGUgcHVycG9zZSBvZiBNaXNjL05FV1MuICBTb21lIGNoYW5nZXMgSSBjb25zaWRlciB0b28gc21hbGwKKyAgIG9yIGVzb3RlcmljIHRvIGluY2x1ZGUuICBJZiBzdWNoIGEgY2hhbmdlIGlzIGFkZGVkIHRvIHRoZSB0ZXh0LAorICAgSSdsbCBqdXN0IHJlbW92ZSBpdC4gIChUaGlzIGlzIGFub3RoZXIgcmVhc29uIHlvdSBzaG91bGRuJ3Qgc3BlbmQKKyAgIHRvbyBtdWNoIHRpbWUgb24gd3JpdGluZyB5b3VyIGFkZGl0aW9uLikKKworICAgKiBJZiB5b3Ugd2FudCB0byBkcmF3IHlvdXIgbmV3IHRleHQgdG8gdGhlIGF0dGVudGlvbiBvZiB0aGUKKyAgIG1haW50YWluZXIsIGFkZCAnWFhYJyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJhZ3JhcGggb3IKKyAgIHNlY3Rpb24uCisKKyAgICogSXQncyBPSyB0byBqdXN0IGFkZCBhIGZyYWdtZW50YXJ5IG5vdGUgYWJvdXQgYSBjaGFuZ2UuICBGb3IKKyAgIGV4YW1wbGU6ICJYWFggRGVzY3JpYmUgdGhlIHRyYW5zbW9ncmlmeSgpIGZ1bmN0aW9uIGFkZGVkIHRvIHRoZQorICAgc29ja2V0IG1vZHVsZS4iICBUaGUgbWFpbnRhaW5lciB3aWxsIHJlc2VhcmNoIHRoZSBjaGFuZ2UgYW5kCisgICB3cml0ZSB0aGUgbmVjZXNzYXJ5IHRleHQuCisKKyAgICogWW91IGNhbiBjb21tZW50IG91dCB5b3VyIGFkZGl0aW9ucyBpZiB5b3UgbGlrZSwgYnV0IGl0J3Mgbm90CisgICBuZWNlc3NhcnkgKGVzcGVjaWFsbHkgd2hlbiBhIGZpbmFsIHJlbGVhc2UgaXMgc29tZSBtb250aHMgYXdheSkuCisKKyAgICogQ3JlZGl0IHRoZSBhdXRob3Igb2YgYSBwYXRjaCBvciBidWdmaXguICAgSnVzdCB0aGUgbmFtZSBpcworICAgc3VmZmljaWVudDsgdGhlIGUtbWFpbCBhZGRyZXNzIGlzbid0IG5lY2Vzc2FyeS4KKworICAgKiBJdCdzIGhlbHBmdWwgdG8gYWRkIHRoZSBidWcvcGF0Y2ggbnVtYmVyIGFzIGEgY29tbWVudDoKKworICAgWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUgc29ja2V0CisgICBtb2R1bGUuCisgICAoQ29udHJpYnV0ZWQgYnkgUC5ZLiBEZXZlbG9wZXIgaW4gOmlzc3VlOmAxMjM0NWAuKQorCisgICBUaGlzIHNhdmVzIHRoZSBtYWludGFpbmVyIHRoZSBlZmZvcnQgb2YgZ29pbmcgdGhyb3VnaCB0aGUgTWVyY3VyaWFsIGxvZworICAgd2hlbiByZXNlYXJjaGluZyBhIGNoYW5nZS4KKworVGhpcyBhcnRpY2xlIGV4cGxhaW5zIHRoZSBuZXcgZmVhdHVyZXMgaW4gUHl0aG9uIDMuMywgY29tcGFyZWQgdG8gMy4yLgorCisuLiBub3RlOjogQmV0YSB1c2VycyBzaG91bGQgYmUgYXdhcmUgdGhhdCB0aGlzIGRvY3VtZW50IGlzIGN1cnJlbnRseSBpbgorICAgZHJhZnQgZm9ybS4gSXQgd2lsbCBiZSB1cGRhdGVkIHN1YnN0YW50aWFsbHkgYXMgUHl0aG9uIDMuMyBtb3ZlcyB0b3dhcmRzCisgICByZWxlYXNlLCBzbyBpdCdzIHdvcnRoIGNoZWNraW5nIGJhY2sgZXZlbiBhZnRlciByZWFkaW5nIGVhcmxpZXIgdmVyc2lvbnMuCisKKworU3VtbWFyeSAtLSBSZWxlYXNlIGhpZ2hsaWdodHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIFRoaXMgc2VjdGlvbiBzaW5nbGVzIG91dCB0aGUgbW9zdCBpbXBvcnRhbnQgY2hhbmdlcyBpbiBQeXRob24gMy4zLgorICAgQnJldml0eSBpcyBrZXkuCisKK05ldyBzeW50YXggZmVhdHVyZXM6CisKKyogTmV3IGBgeWllbGQgZnJvbWBgIGV4cHJlc3Npb24gZm9yIDpyZWY6YGdlbmVyYXRvciBkZWxlZ2F0aW9uIDxwZXAtMzgwPmAuCisqIFRoZSBgYHUndW5pY29kZSdgYCBzeW50YXggaXMgYWNjZXB0ZWQgYWdhaW4gZm9yIDpjbGFzczpgc3RyYCBvYmplY3RzLgorCitOZXcgbGlicmFyeSBtb2R1bGVzOgorCisqIDptb2Q6YGZhdWx0aGFuZGxlcmAgKGhlbHBzIGRlYnVnZ2luZyBsb3ctbGV2ZWwgY3Jhc2hlcykKKyogOm1vZDpgaXBhZGRyZXNzYCAoaGlnaC1sZXZlbCBvYmplY3RzIHJlcHJlc2VudGluZyBJUCBhZGRyZXNzZXMgYW5kIG1hc2tzKQorKiA6bW9kOmBsem1hYCAoY29tcHJlc3MgZGF0YSB1c2luZyB0aGUgWFogLyBMWk1BIGFsZ29yaXRobSkKKyogOm1vZDpgdmVudmAgKFB5dGhvbiA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50cyA8cGVwLTQwNT5gLCBhcyBpbiB0aGUKKyAgcG9wdWxhciBgYHZpcnR1YWxlbnZgYCBwYWNrYWdlKQorCitOZXcgYnVpbHQtaW4gZmVhdHVyZXM6CisKKyogUmV3b3JrZWQgOnJlZjpgSS9PIGV4Y2VwdGlvbiBoaWVyYXJjaHkgPHBlcC0zMTUxPmAuCisKK0ltcGxlbWVudGF0aW9uIGltcHJvdmVtZW50czoKKworKiBSZXdyaXR0ZW4gOnJlZjpgaW1wb3J0IG1hY2hpbmVyeSA8aW1wb3J0bGliPmAgYmFzZWQgb24gOm1vZDpgaW1wb3J0bGliYC4KKyogTW9yZSBjb21wYWN0IDpyZWY6YHVuaWNvZGUgc3RyaW5ncyA8cGVwLTM5Mz5gLgorKiBNb3JlIGNvbXBhY3QgOnJlZjpgYXR0cmlidXRlIGRpY3Rpb25hcmllcyA8cGVwLTQxMj5gLgorCitTZWN1cml0eSBpbXByb3ZlbWVudHM6CisKKyogSGFzaCByYW5kb21pemF0aW9uIGlzIHN3aXRjaGVkIG9uIGJ5IGRlZmF1bHQuCisKK1BsZWFzZSByZWFkIG9uIGZvciBhIGNvbXByZWhlbnNpdmUgbGlzdCBvZiB1c2VyLWZhY2luZyBjaGFuZ2VzLgorCisKKy4uIF9wZXAtNDA1OgorCitQRVAgNDA1OiBWaXJ0dWFsIEVudmlyb25tZW50cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOnBlcDpgNDA1YCAtIFB5dGhvbiBWaXJ0dWFsIEVudmlyb25tZW50cworIFBFUCB3cml0dGVuIGJ5IENhcmwgTWV5ZXIsIGltcGxlbWVudGVkIGJ5IENhcmwgTWV5ZXIgYW5kIFZpbmF5IFNhamlwLgorCitWaXJ0dWFsIGVudmlyb25tZW50cyBoZWxwIGNyZWF0ZSBzZXBhcmF0ZSBQeXRob24gc2V0dXBzIHdoaWxlIHNoYXJpbmcgYQorc3lzdGVtLXdpZGUgYmFzZSBpbnN0YWxsLCBmb3IgZWFzZSBvZiBtYWludGVuYW5jZS4gIFZpcnR1YWwgZW52aXJvbm1lbnRzCitoYXZlIHRoZWlyIG93biBzZXQgb2YgcHJpdmF0ZSBzaXRlIHBhY2thZ2VzIChpLmUuIGxvY2FsbHktaW5zdGFsbGVkCitsaWJyYXJpZXMpLCBhbmQgYXJlIG9wdGlvbmFsbHkgc2VncmVnYXRlZCBmcm9tIHRoZSBzeXN0ZW0td2lkZSBzaXRlCitwYWNrYWdlcy4gIFRoZWlyIGNvbmNlcHQgYW5kIGltcGxlbWVudGF0aW9uIGFyZSBpbnNwaXJlZCBieSB0aGUgcG9wdWxhcgorYGB2aXJ0dWFsZW52YGAgdGhpcmQtcGFydHkgcGFja2FnZSwgYnV0IGJlbmVmaXQgZnJvbSB0aWdodGVyIGludGVncmF0aW9uCit3aXRoIHRoZSBpbnRlcnByZXRlciBjb3JlLgorCitUaGlzIFBFUCBhZGRzIHRoZSA6bW9kOmB2ZW52YCBtb2R1bGUgZm9yIHByb2dyYW1tYXRpYyBhY2Nlc3MsIGFuZCB0aGUKKzpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBzY3JpcHQgZm9yIGNvbW1hbmQtbGluZSBhY2Nlc3MgYW5kCithZG1pbmlzdHJhdGlvbi4gIFRoZSBQeXRob24gaW50ZXJwcmV0ZXIgYmVjb21lcyBhd2FyZSBvZiBhIGBgcHZlbnYuY2ZnYGAKK2ZpbGUgd2hvc2UgZXhpc3RlbmNlIHNpZ25hbHMgdGhlIGJhc2Ugb2YgYSB2aXJ0dWFsIGVudmlyb25tZW50J3MgZGlyZWN0b3J5Cit0cmVlLgorCisKK1BFUCA0MjA6IE5hbWVzcGFjZSBQYWNrYWdlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK05hdGl2ZSBzdXBwb3J0IGZvciBwYWNrYWdlIGRpcmVjdG9yaWVzIHRoYXQgZG9uJ3QgcmVxdWlyZSBgYF9faW5pdF9fLnB5YGAKK21hcmtlciBmaWxlcyBhbmQgY2FuIGF1dG9tYXRpY2FsbHkgc3BhbiBtdWx0aXBsZSBwYXRoIHNlZ21lbnRzIChpbnNwaXJlZCBieQordmFyaW91cyB0aGlyZCBwYXJ0eSBhcHByb2FjaGVzIHRvIG5hbWVzcGFjZSBwYWNrYWdlcywgYXMgZGVzY3JpYmVkIGluCis6cGVwOmA0MjBgKQorCisKKy4uIF9wZXAtMzExOC11cGRhdGU6CisKK1BFUCAzMTE4OiBOZXcgbWVtb3J5dmlldyBpbXBsZW1lbnRhdGlvbiBhbmQgYnVmZmVyIHByb3RvY29sIGRvY3VtZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOmlzc3VlOmAxMDE4MWAgLSBtZW1vcnl2aWV3IGJ1ZyBmaXhlcyBhbmQgZmVhdHVyZXMuCisgIFdyaXR0ZW4gYnkgU3RlZmFuIEtyYWguCisKK1RoZSBuZXcgbWVtb3J5dmlldyBpbXBsZW1lbnRhdGlvbiBjb21wcmVoZW5zaXZlbHkgZml4ZXMgYWxsIG93bmVyc2hpcCBhbmQKK2xpZmV0aW1lIGlzc3VlcyBvZiBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZmllbGRzIGluIHRoZSBQeV9idWZmZXIgc3RydWN0Cit0aGF0IGxlZCB0byBtdWx0aXBsZSBjcmFzaCByZXBvcnRzLiBBZGRpdGlvbmFsbHksIHNldmVyYWwgZnVuY3Rpb25zIHRoYXQKK2NyYXNoZWQgb3IgcmV0dXJuZWQgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIG5vbi1jb250aWd1b3VzIG9yIG11bHRpLWRpbWVuc2lvbmFsCitpbnB1dCBoYXZlIGJlZW4gZml4ZWQuCisKK1RoZSBtZW1vcnl2aWV3IG9iamVjdCBub3cgaGFzIGEgUEVQLTMxMTggY29tcGxpYW50IGdldGJ1ZmZlcnByb2MoKQordGhhdCBjaGVja3MgdGhlIGNvbnN1bWVyJ3MgcmVxdWVzdCB0eXBlLiBNYW55IG5ldyBmZWF0dXJlcyBoYXZlIGJlZW4KK2FkZGVkLCBtb3N0IG9mIHRoZW0gd29yayBpbiBmdWxsIGdlbmVyYWxpdHkgZm9yIG5vbi1jb250aWd1b3VzIGFycmF5cworYW5kIGFycmF5cyB3aXRoIHN1Ym9mZnNldHMuCisKK1RoZSBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQsIGNsZWFybHkgc3BlbGxpbmcgb3V0IHJlc3BvbnNpYmlsaXRpZXMKK2ZvciBib3RoIGV4cG9ydGVycyBhbmQgY29uc3VtZXJzLiBCdWZmZXIgcmVxdWVzdCBmbGFncyBhcmUgZ3JvdXBlZCBpbnRvCitiYXNpYyBhbmQgY29tcG91bmQgZmxhZ3MuIFRoZSBtZW1vcnkgbGF5b3V0IG9mIG5vbi1jb250aWd1b3VzIGFuZAorbXVsdGktZGltZW5zaW9uYWwgTnVtUHktc3R5bGUgYXJyYXlzIGlzIGV4cGxhaW5lZC4KKworRmVhdHVyZXMKKy0tLS0tLS0tCisKKyogQWxsIG5hdGl2ZSBzaW5nbGUgY2hhcmFjdGVyIGZvcm1hdCBzcGVjaWZpZXJzIGluIHN0cnVjdCBtb2R1bGUgc3ludGF4CisgIChvcHRpb25hbGx5IHByZWZpeGVkIHdpdGggJ0AnKSBhcmUgbm93IHN1cHBvcnRlZC4KKworKiBXaXRoIHNvbWUgcmVzdHJpY3Rpb25zLCB0aGUgY2FzdCgpIG1ldGhvZCBhbGxvd3MgY2hhbmdpbmcgb2YgZm9ybWF0IGFuZAorICBzaGFwZSBvZiBDLWNvbnRpZ3VvdXMgYXJyYXlzLgorCisqIE11bHRpLWRpbWVuc2lvbmFsIGxpc3QgcmVwcmVzZW50YXRpb25zIGFyZSBzdXBwb3J0ZWQgZm9yIGFueSBhcnJheSB0eXBlLgorCisqIE11bHRpLWRpbWVuc2lvbmFsIGNvbXBhcmlzb25zIGFyZSBzdXBwb3J0ZWQgZm9yIGFueSBhcnJheSB0eXBlLgorCisqIEFsbCBhcnJheSB0eXBlcyBhcmUgaGFzaGFibGUgaWYgdGhlIGV4cG9ydGluZyBvYmplY3QgaXMgaGFzaGFibGUKKyAgYW5kIHRoZSB2aWV3IGlzIHJlYWQtb25seS4gKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluCisgIDppc3N1ZTpgMTM0MTFgKQorCisqIEFyYml0cmFyeSBzbGljaW5nIG9mIGFueSAxLUQgYXJyYXlzIHR5cGUgaXMgc3VwcG9ydGVkLiBGb3IgZXhhbXBsZSwgaXQKKyAgaXMgbm93IHBvc3NpYmxlIHRvIHJldmVyc2UgYSBtZW1vcnl2aWV3IGluIE8oMSkgYnkgdXNpbmcgYSBuZWdhdGl2ZSBzdGVwLgorCitBUEkgY2hhbmdlcworLS0tLS0tLS0tLS0KKworKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGltZW5zaW9ucyBpcyBvZmZpY2lhbGx5IGxpbWl0ZWQgdG8gNjQuCisKKyogVGhlIHJlcHJlc2VudGF0aW9uIG9mIGVtcHR5IHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzIGlzIG5vdworICBhbiBlbXB0eSB0dXBsZSBpbnN0ZWFkIG9mIE5vbmUuCisKKyogQWNjZXNzaW5nIGEgbWVtb3J5dmlldyBlbGVtZW50IHdpdGggZm9ybWF0ICdCJyAodW5zaWduZWQgYnl0ZXMpCisgIG5vdyByZXR1cm5zIGFuIGludGVnZXIgKGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgc3RydWN0IG1vZHVsZSBzeW50YXgpLgorICBGb3IgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IHRoZSB2aWV3IG11c3QgYmUgY2FzdCB0byAnYycgZmlyc3QuCisKKyogbWVtb3J5dmlldyBjb21wYXJpc29ucyBub3cgdXNlIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgb3BlcmFuZHMKKyAgYW5kIGNvbXBhcmUgYWxsIGFycmF5IGVsZW1lbnRzIGJ5IHZhbHVlLiBBbGwgZm9ybWF0IHN0cmluZ3MgaW4gc3RydWN0CisgIG1vZHVsZSBzeW50YXggYXJlIHN1cHBvcnRlZC4gVmlld3Mgd2l0aCB1bnJlY29nbmlzZWQgZm9ybWF0IHN0cmluZ3MKKyAgYXJlIHN0aWxsIHBlcm1pdHRlZCwgYnV0IHdpbGwgYWx3YXlzIGNvbXBhcmUgYXMgdW5lcXVhbCwgcmVnYXJkbGVzcworICBvZiB2aWV3IGNvbnRlbnRzLgorCisqIEZvciBmdXJ0aGVyIGNoYW5nZXMgc2VlIGBCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlc2BfIGFuZCBgUG9ydGluZyBDIGNvZGVgXyAuCisKKy4uIF9wZXAtMzkzOgorCitQRVAgMzkzOiBGbGV4aWJsZSBTdHJpbmcgUmVwcmVzZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgVW5pY29kZSBzdHJpbmcgdHlwZSBpcyBjaGFuZ2VkIHRvIHN1cHBvcnQgbXVsdGlwbGUgaW50ZXJuYWwKK3JlcHJlc2VudGF0aW9ucywgZGVwZW5kaW5nIG9uIHRoZSBjaGFyYWN0ZXIgd2l0aCB0aGUgbGFyZ2VzdCBVbmljb2RlIG9yZGluYWwKKygxLCAyLCBvciA0IGJ5dGVzKSBpbiB0aGUgcmVwcmVzZW50ZWQgc3RyaW5nLiAgVGhpcyBhbGxvd3MgYSBzcGFjZS1lZmZpY2llbnQKK3JlcHJlc2VudGF0aW9uIGluIGNvbW1vbiBjYXNlcywgYnV0IGdpdmVzIGFjY2VzcyB0byBmdWxsIFVDUy00IG9uIGFsbAorc3lzdGVtcy4gIEZvciBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgQVBJcywgc2V2ZXJhbCByZXByZXNlbnRhdGlvbnMgbWF5CitleGlzdCBpbiBwYXJhbGxlbDsgb3ZlciB0aW1lLCB0aGlzIGNvbXBhdGliaWxpdHkgc2hvdWxkIGJlIHBoYXNlZCBvdXQuCisKK09uIHRoZSBQeXRob24gc2lkZSwgdGhlcmUgc2hvdWxkIGJlIG5vIGRvd25zaWRlIHRvIHRoaXMgY2hhbmdlLgorCitPbiB0aGUgQyBBUEkgc2lkZSwgUEVQIDM5MyBpcyBmdWxseSBiYWNrd2FyZCBjb21wYXRpYmxlLiAgVGhlIGxlZ2FjeSBBUEkKK3Nob3VsZCByZW1haW4gYXZhaWxhYmxlIGF0IGxlYXN0IGZpdmUgeWVhcnMuICBBcHBsaWNhdGlvbnMgdXNpbmcgdGhlIGxlZ2FjeQorQVBJIHdpbGwgbm90IGZ1bGx5IGJlbmVmaXQgb2YgdGhlIG1lbW9yeSByZWR1Y3Rpb24sIG9yIC0gd29yc2UgLSBtYXkgdXNlCithIGJpdCBtb3JlIG1lbW9yeSwgYmVjYXVzZSBQeXRob24gbWF5IGhhdmUgdG8gbWFpbnRhaW4gdHdvIHZlcnNpb25zIG9mIGVhY2gKK3N0cmluZyAoaW4gdGhlIGxlZ2FjeSBmb3JtYXQgYW5kIGluIHRoZSBuZXcgZWZmaWNpZW50IHN0b3JhZ2UpLgorCitGdW5jdGlvbmFsaXR5CistLS0tLS0tLS0tLS0tCisKK0NoYW5nZXMgaW50cm9kdWNlZCBieSA6cGVwOmAzOTNgIGFyZSB0aGUgZm9sbG93aW5nOgorCisqIFB5dGhvbiBub3cgYWx3YXlzIHN1cHBvcnRzIHRoZSBmdWxsIHJhbmdlIG9mIFVuaWNvZGUgY29kZXBvaW50cywgaW5jbHVkaW5nCisgIG5vbi1CTVAgb25lcyAoaS5lLiBmcm9tIGBgVSswMDAwYGAgdG8gYGBVKzEwRkZGRmBgKS4gIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuCisgIG5hcnJvdyBhbmQgd2lkZSBidWlsZHMgbm8gbG9uZ2VyIGV4aXN0cyBhbmQgUHl0aG9uIG5vdyBiZWhhdmVzIGxpa2UgYSB3aWRlCisgIGJ1aWxkLCBldmVuIHVuZGVyIFdpbmRvd3MuCisKKyogV2l0aCB0aGUgZGVhdGggb2YgbmFycm93IGJ1aWxkcywgdGhlIHByb2JsZW1zIHNwZWNpZmljIHRvIG5hcnJvdyBidWlsZHMgaGF2ZQorICBhbHNvIGJlZW4gZml4ZWQsIGZvciBleGFtcGxlOgorCisgICogOmZ1bmM6YGxlbmAgbm93IGFsd2F5cyByZXR1cm5zIDEgZm9yIG5vbi1CTVAgY2hhcmFjdGVycywKKyAgICBzbyBgYGxlbignXFUwMDEwRkZGRicpID09IDFgYDsKKworICAqIHN1cnJvZ2F0ZSBwYWlycyBhcmUgbm90IHJlY29tYmluZWQgaW4gc3RyaW5nIGxpdGVyYWxzLAorICAgIHNvIGBgJ1x1REJGRlx1REZGRicgIT0gJ1xVMDAxMEZGRkYnYGA7CisKKyAgKiBpbmRleGluZyBvciBzbGljaW5nIG5vbi1CTVAgY2hhcmFjdGVycyByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSwKKyAgICBzbyBgYCdcVTAwMTBGRkZGJ1swXWBgIG5vdyByZXR1cm5zIGBgJ1xVMDAxMEZGRkYnYGAgYW5kIG5vdCBgYCdcdURCRkYnYGA7CisKKyAgKiBhbGwgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG5vdyBjb3JyZWN0bHkgaGFuZGxlCisgICAgbm9uLUJNUCBjb2RlcG9pbnRzLgorCisqIFRoZSB2YWx1ZSBvZiA6ZGF0YTpgc3lzLm1heHVuaWNvZGVgIGlzIG5vdyBhbHdheXMgYGAxMTE0MTExYGAgKGBgMHgxMEZGRkZgYAorICBpbiBoZXhhZGVjaW1hbCkuICBUaGUgOmM6ZnVuYzpgUHlVbmljb2RlX0dldE1heGAgZnVuY3Rpb24gc3RpbGwgcmV0dXJucworICBlaXRoZXIgYGAweEZGRkZgYCBvciBgYDB4MTBGRkZGYGAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGFuZCBpdCBzaG91bGQKKyAgbm90IGJlIHVzZWQgd2l0aCB0aGUgbmV3IFVuaWNvZGUgQVBJIChzZWUgOmlzc3VlOmAxMzA1NGApLgorCisqIFRoZSA6ZmlsZTpgLi9jb25maWd1cmVgIGZsYWcgYGAtLXdpdGgtd2lkZS11bmljb2RlYGAgaGFzIGJlZW4gcmVtb3ZlZC4KKworUGVyZm9ybWFuY2UgYW5kIHJlc291cmNlIHVzYWdlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHN0b3JhZ2Ugb2YgVW5pY29kZSBzdHJpbmdzIG5vdyBkZXBlbmRzIG9uIHRoZSBoaWdoZXN0IGNvZGVwb2ludCBpbiB0aGUgc3RyaW5nOgorCisqIHB1cmUgQVNDSUkgYW5kIExhdGluMSBzdHJpbmdzIChgYFUrMDAwMC1VKzAwRkZgYCkgdXNlIDEgYnl0ZSBwZXIgY29kZXBvaW50OworCisqIEJNUCBzdHJpbmdzIChgYFUrMDAwMC1VK0ZGRkZgYCkgdXNlIDIgYnl0ZXMgcGVyIGNvZGVwb2ludDsKKworKiBub24tQk1QIHN0cmluZ3MgKGBgVSsxMDAwMC1VKzEwRkZGRmBgKSB1c2UgNCBieXRlcyBwZXIgY29kZXBvaW50LgorCitUaGUgbmV0IGVmZmVjdCBpcyB0aGF0IGZvciBtb3N0IGFwcGxpY2F0aW9ucywgbWVtb3J5IHVzYWdlIG9mIHN0cmluZworc3RvcmFnZSBzaG91bGQgZGVjcmVhc2Ugc2lnbmlmaWNhbnRseSAtIGVzcGVjaWFsbHkgY29tcGFyZWQgdG8gZm9ybWVyCit3aWRlIHVuaWNvZGUgYnVpbGRzIC0gYXMsIGluIG1hbnkgY2FzZXMsIHN0cmluZ3Mgd2lsbCBiZSBwdXJlIEFTQ0lJCitldmVuIGluIGludGVybmF0aW9uYWwgY29udGV4dHMgKGJlY2F1c2UgbWFueSBzdHJpbmdzIHN0b3JlIG5vbi1odW1hbgorbGFuZ3VhZ2UgZGF0YSwgc3VjaCBhcyBYTUwgZnJhZ21lbnRzLCBIVFRQIGhlYWRlcnMsIEpTT04tZW5jb2RlZCBkYXRhLAorZXRjLikuICBXZSBhbHNvIGhvcGUgdGhhdCBpdCB3aWxsLCBmb3IgdGhlIHNhbWUgcmVhc29ucywgaW5jcmVhc2UgQ1BVCitjYWNoZSBlZmZpY2llbmN5IG9uIG5vbi10cml2aWFsIGFwcGxpY2F0aW9ucy4gVGhlIG1lbW9yeSB1c2FnZSBvZgorUHl0aG9uIDMuMyBpcyB0d28gdG8gdGhyZWUgdGltZXMgc21hbGxlciB0aGFuIFB5dGhvbiAzLjIsIGFuZCBhIGxpdHRsZQorYml0IGJldHRlciB0aGFuIFB5dGhvbiAyLjcsIG9uIGEgRGphbmdvIGJlbmNobWFyayAoc2VlIHRoZSBQRVAgZm9yCitkZXRhaWxzKS4KKworCisuLiBfcGVwLTMxNTE6CisKK1BFUCAzMTUxOiBSZXdvcmtpbmcgdGhlIE9TIGFuZCBJTyBleGNlcHRpb24gaGllcmFyY2h5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis6cGVwOmAzMTUxYCAtIFJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkKKyBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgQW50b2luZSBQaXRyb3UuCisKK1RoZSBoaWVyYXJjaHkgb2YgZXhjZXB0aW9ucyByYWlzZWQgYnkgb3BlcmF0aW5nIHN5c3RlbSBlcnJvcnMgaXMgbm93IGJvdGgKK3NpbXBsaWZpZWQgYW5kIGZpbmVyLWdyYWluZWQuCisKK1lvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFueW1vcmUgYWJvdXQgY2hvb3NpbmcgdGhlIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbgordHlwZSBiZXR3ZWVuIDpleGM6YE9TRXJyb3JgLCA6ZXhjOmBJT0Vycm9yYCwgOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAsCis6ZXhjOmBXaW5kb3dzRXJyb3JgLCA6ZXhjOmBtbWFwLmVycm9yYCwgOmV4Yzpgc29ja2V0LmVycm9yYCBvcgorOmV4Yzpgc2VsZWN0LmVycm9yYC4gIEFsbCB0aGVzZSBleGNlcHRpb24gdHlwZXMgYXJlIG5vdyBvbmx5IG9uZToKKzpleGM6YE9TRXJyb3JgLiAgVGhlIG90aGVyIG5hbWVzIGFyZSBrZXB0IGFzIGFsaWFzZXMgZm9yIGNvbXBhdGliaWxpdHkKK3JlYXNvbnMuCisKK0Fsc28sIGl0IGlzIG5vdyBlYXNpZXIgdG8gY2F0Y2ggYSBzcGVjaWZpYyBlcnJvciBjb25kaXRpb24uICBJbnN0ZWFkIG9mCitpbnNwZWN0aW5nIHRoZSBgYGVycm5vYGAgYXR0cmlidXRlIChvciBgYGFyZ3NbMF1gYCkgZm9yIGEgcGFydGljdWxhcgorY29uc3RhbnQgZnJvbSB0aGUgOm1vZDpgZXJybm9gIG1vZHVsZSwgeW91IGNhbiBjYXRjaCB0aGUgYWRlcXVhdGUKKzpleGM6YE9TRXJyb3JgIHN1YmNsYXNzLiAgVGhlIGF2YWlsYWJsZSBzdWJjbGFzc2VzIGFyZSB0aGUgZm9sbG93aW5nOgorCisqIDpleGM6YEJsb2NraW5nSU9FcnJvcmAKKyogOmV4YzpgQ2hpbGRQcm9jZXNzRXJyb3JgCisqIDpleGM6YENvbm5lY3Rpb25FcnJvcmAKKyogOmV4YzpgRmlsZUV4aXN0c0Vycm9yYAorKiA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAKKyogOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAKKyogOmV4YzpgSXNBRGlyZWN0b3J5RXJyb3JgCisqIDpleGM6YE5vdEFEaXJlY3RvcnlFcnJvcmAKKyogOmV4YzpgUGVybWlzc2lvbkVycm9yYAorKiA6ZXhjOmBQcm9jZXNzTG9va3VwRXJyb3JgCisqIDpleGM6YFRpbWVvdXRFcnJvcmAKKworQW5kIHRoZSA6ZXhjOmBDb25uZWN0aW9uRXJyb3JgIGl0c2VsZiBoYXMgZmluZXItZ3JhaW5lZCBzdWJjbGFzc2VzOgorCisqIDpleGM6YEJyb2tlblBpcGVFcnJvcmAKKyogOmV4YzpgQ29ubmVjdGlvbkFib3J0ZWRFcnJvcmAKKyogOmV4YzpgQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAKKyogOmV4YzpgQ29ubmVjdGlvblJlc2V0RXJyb3JgCisKK1RoYW5rcyB0byB0aGUgbmV3IGV4Y2VwdGlvbnMsIGNvbW1vbiB1c2FnZXMgb2YgdGhlIDptb2Q6YGVycm5vYCBjYW4gbm93IGJlCithdm9pZGVkLiAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZSB3cml0dGVuIGZvciBQeXRob24gMy4yOjoKKworICAgIGZyb20gZXJybm8gaW1wb3J0IEVOT0VOVCwgRUFDQ0VTLCBFUEVSTQorCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oImRvY3VtZW50LnR4dCIpIGFzIGY6CisgICAgICAgICAgICBjb250ZW50ID0gZi5yZWFkKCkKKyAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6CisgICAgICAgIGlmIGVyci5lcnJubyA9PSBFTk9FTlQ6CisgICAgICAgICAgICBwcmludCgiZG9jdW1lbnQudHh0IGZpbGUgaXMgbWlzc2luZyIpCisgICAgICAgIGVsaWYgZXJyLmVycm5vIGluIChFQUNDRVMsIEVQRVJNKToKKyAgICAgICAgICAgIHByaW50KCJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHJlYWQgZG9jdW1lbnQudHh0IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlCisKK2NhbiBub3cgYmUgd3JpdHRlbiB3aXRob3V0IHRoZSA6bW9kOmBlcnJub2AgaW1wb3J0IGFuZCB3aXRob3V0IG1hbnVhbAoraW5zcGVjdGlvbiBvZiBleGNlcHRpb24gYXR0cmlidXRlczo6CisKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbigiZG9jdW1lbnQudHh0IikgYXMgZjoKKyAgICAgICAgICAgIGNvbnRlbnQgPSBmLnJlYWQoKQorICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgcHJpbnQoImRvY3VtZW50LnR4dCBmaWxlIGlzIG1pc3NpbmciKQorICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CisgICAgICAgIHByaW50KCJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHJlYWQgZG9jdW1lbnQudHh0IikKKworCisuLiBfcGVwLTM4MDoKKworUEVQIDM4MDogU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOnBlcDpgMzgwYCAtIFN5bnRheCBmb3IgRGVsZWdhdGluZyB0byBhIFN1YmdlbmVyYXRvcgorIFBFUCB3cml0dGVuIGJ5IEdyZWcgRXdpbmcuCisKK1BFUCAzODAgYWRkcyB0aGUgYGB5aWVsZCBmcm9tYGAgZXhwcmVzc2lvbiwgYWxsb3dpbmcgYSBnZW5lcmF0b3IgdG8gZGVsZWdhdGUKK3BhcnQgb2YgaXRzIG9wZXJhdGlvbnMgdG8gYW5vdGhlciBnZW5lcmF0b3IuIFRoaXMgYWxsb3dzIGEgc2VjdGlvbiBvZiBjb2RlCitjb250YWluaW5nICd5aWVsZCcgdG8gYmUgZmFjdG9yZWQgb3V0IGFuZCBwbGFjZWQgaW4gYW5vdGhlciBnZW5lcmF0b3IuCitBZGRpdGlvbmFsbHksIHRoZSBzdWJnZW5lcmF0b3IgaXMgYWxsb3dlZCB0byByZXR1cm4gd2l0aCBhIHZhbHVlLCBhbmQgdGhlCit2YWx1ZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgZGVsZWdhdGluZyBnZW5lcmF0b3IuCisKK1doaWxlIGRlc2lnbmVkIHByaW1hcmlseSBmb3IgdXNlIGluIGRlbGVnYXRpbmcgdG8gYSBzdWJnZW5lcmF0b3IsIHRoZSBgYHlpZWxkCitmcm9tYGAgZXhwcmVzc2lvbiBhY3R1YWxseSBhbGxvd3MgZGVsZWdhdGlvbiB0byBhcmJpdHJhcnkgc3ViaXRlcmF0b3JzLgorCitGb3Igc2ltcGxlIGl0ZXJhdG9ycywgYGB5aWVsZCBmcm9tIGl0ZXJhYmxlYGAgaXMgZXNzZW50aWFsbHkganVzdCBhIHNob3J0ZW5lZAorZm9ybSBvZiBgYGZvciBpdGVtIGluIGl0ZXJhYmxlOiB5aWVsZCBpdGVtYGA6OgorCisgICAgPj4+IGRlZiBnKHgpOgorICAgIC4uLiAgICAgeWllbGQgZnJvbSByYW5nZSh4LCAwLCAtMSkKKyAgICAuLi4gICAgIHlpZWxkIGZyb20gcmFuZ2UoeCkKKyAgICAuLi4KKyAgICA+Pj4gbGlzdChnKDUpKQorICAgIFs1LCA0LCAzLCAyLCAxLCAwLCAxLCAyLCAzLCA0XQorCitIb3dldmVyLCB1bmxpa2UgYW4gb3JkaW5hcnkgbG9vcCwgYGB5aWVsZCBmcm9tYGAgYWxsb3dzIHN1YmdlbmVyYXRvcnMgdG8KK3JlY2VpdmUgc2VudCBhbmQgdGhyb3duIHZhbHVlcyBkaXJlY3RseSBmcm9tIHRoZSBjYWxsaW5nIHNjb3BlLCBhbmQKK3JldHVybiBhIGZpbmFsIHZhbHVlIHRvIHRoZSBvdXRlciBnZW5lcmF0b3I6OgorCisgICAgPj4+IGRlZiBhY2N1bXVsYXRlKHN0YXJ0PTApOgorICAgIC4uLiAgICAgdGFsbHkgPSBzdGFydAorICAgIC4uLiAgICAgd2hpbGUgMToKKyAgICAuLi4gICAgICAgICBuZXh0ID0geWllbGQKKyAgICAuLi4gICAgICAgICBpZiBuZXh0IGlzIE5vbmU6CisgICAgLi4uICAgICAgICAgICAgIHJldHVybiB0YWxseQorICAgIC4uLiAgICAgICAgIHRhbGx5ICs9IG5leHQKKyAgICAuLi4KKyAgICA+Pj4gZGVmIGdhdGhlcl90YWxsaWVzKHRhbGxpZXMsIHN0YXJ0PTApOgorICAgIC4uLiAgICAgd2hpbGUgMToKKyAgICAuLi4gICAgICAgICB0YWxseSA9IHlpZWxkIGZyb20gYWNjdW11bGF0ZSgpCisgICAgLi4uICAgICAgICAgdGFsbGllcy5hcHBlbmQodGFsbHkpCisgICAgLi4uCisgICAgPj4+IHRhbGxpZXMgPSBbXQorICAgID4+PiBhY2MgPSBnYXRoZXJfdGFsbGllcyh0YWxsaWVzKQorICAgID4+PiBuZXh0KGFjYykgIyBFbnN1cmUgdGhlIGFjY3VtdWxhdG9yIGlzIHJlYWR5IHRvIGFjY2VwdCB2YWx1ZXMKKyAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgIC4uLiAgICAgYWNjLnNlbmQoaSkKKyAgICAuLi4KKyAgICA+Pj4gYWNjLnNlbmQoTm9uZSkgIyBGaW5pc2ggdGhlIGZpcnN0IHRhbGx5CisgICAgPj4+IGZvciBpIGluIHJhbmdlKDUpOgorICAgIC4uLiAgICAgYWNjLnNlbmQoaSkKKyAgICAuLi4KKyAgICA+Pj4gYWNjLnNlbmQoTm9uZSkgIyBGaW5pc2ggdGhlIHNlY29uZCB0YWxseQorICAgID4+PiB0YWxsaWVzCisgICAgWzQ1LCAxMF0KKworVGhlIG1haW4gcHJpbmNpcGxlIGRyaXZpbmcgdGhpcyBjaGFuZ2UgaXMgdG8gYWxsb3cgZXZlbiBnZW5lcmF0b3JzIHRoYXQgYXJlCitkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggdGhlIGBgc2VuZGBgIGFuZCBgYHRocm93YGAgbWV0aG9kcyB0byBiZSBzcGxpdCBpbnRvCittdWx0aXBsZSBzdWJnZW5lcmF0b3JzIGFzIGVhc2lseSBhcyBhIHNpbmdsZSBsYXJnZSBmdW5jdGlvbiBjYW4gYmUgc3BsaXQgaW50bworbXVsdGlwbGUgc3ViZnVuY3Rpb25zLgorCisoSW1wbGVtZW50YXRpb24gYnkgR3JlZyBFd2luZywgaW50ZWdyYXRlZCBpbnRvIDMuMyBieSBSZW5hdWQgQmxhbmNoLCBSeWFuCitLZWxseSBhbmQgTmljayBDb2dobGFuLCBkb2N1bWVudGF0aW9uIGJ5IFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsgYW5kCitOaWNrIENvZ2hsYW4pCisKKworUEVQIDQwOTogU3VwcHJlc3NpbmcgZXhjZXB0aW9uIGNvbnRleHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzpwZXA6YDQwOWAgLSBTdXBwcmVzc2luZyBleGNlcHRpb24gY29udGV4dAorIFBFUCB3cml0dGVuIGJ5IEV0aGFuIEZ1cm1hbiwgaW1wbGVtZW50ZWQgYnkgRXRoYW4gRnVybWFuIGFuZCBOaWNrIENvZ2hsYW4uCisKK1BFUCA0MDkgaW50cm9kdWNlcyBuZXcgc3ludGF4IHRoYXQgYWxsb3dzIHRoZSBkaXNwbGF5IG9mIHRoZSBjaGFpbmVkCitleGNlcHRpb24gY29udGV4dCB0byBiZSBkaXNhYmxlZC4gVGhpcyBhbGxvd3MgY2xlYW5lciBlcnJvciBtZXNzYWdlcyBpbgorYXBwbGljYXRpb25zIHRoYXQgY29udmVydCBiZXR3ZWVuIGV4Y2VwdGlvbiB0eXBlczo6CisKKyAgICA+Pj4gY2xhc3MgRDoKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHRyYSk6CisgICAgLi4uICAgICAgICAgc2VsZi5fZXh0cmFfYXR0cmlidXRlcyA9IGV4dHJhCisgICAgLi4uICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisgICAgLi4uICAgICAgICAgdHJ5OgorICAgIC4uLiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFfYXR0cmlidXRlc1thdHRyXQorICAgIC4uLiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAuLi4gICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoYXR0cikgZnJvbSBOb25lCisgICAgLi4uCisgICAgPj4+IEQoe30pLngKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgOCwgaW4gX19nZXRhdHRyX18KKyAgICBBdHRyaWJ1dGVFcnJvcjogeAorCitXaXRob3V0IHRoZSBgYGZyb20gTm9uZWBgIHN1ZmZpeCB0byBzdXBwcmVzcyB0aGUgY2F1c2UsIHRoZSBvcmlnaW5hbAorZXhjZXB0aW9uIHdvdWxkIGJlIGRpc3BsYXllZCBieSBkZWZhdWx0OjoKKworICAgID4+PiBjbGFzcyBDOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4dHJhKToKKyAgICAuLi4gICAgICAgICBzZWxmLl9leHRyYV9hdHRyaWJ1dGVzID0gZXh0cmEKKyAgICAuLi4gICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAuLi4gICAgICAgICB0cnk6CisgICAgLi4uICAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHRyYV9hdHRyaWJ1dGVzW2F0dHJdCisgICAgLi4uICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgIC4uLiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQorICAgIC4uLgorICAgID4+PiBDKHt9KS54CisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNiwgaW4gX19nZXRhdHRyX18KKyAgICBLZXlFcnJvcjogJ3gnCisKKyAgICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6CisKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgOCwgaW4gX19nZXRhdHRyX18KKyAgICBBdHRyaWJ1dGVFcnJvcjogeAorCitObyBkZWJ1Z2dpbmcgY2FwYWJpbGl0eSBpcyBsb3N0LCBhcyB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIGNvbnRleHQgcmVtYWlucworYXZhaWxhYmxlIGlmIG5lZWRlZCAoZm9yIGV4YW1wbGUsIGlmIGFuIGludGVydmVuaW5nIGxpYnJhcnkgaGFzIGluY29ycmVjdGx5CitzdXBwcmVzc2VkIHZhbHVhYmxlIHVuZGVybHlpbmcgZGV0YWlscyk6OgorCisgICAgPj4+IHRyeToKKyAgICAuLi4gICAgIEQoe30pLngKKyAgICAuLi4gZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGV4YzoKKyAgICAuLi4gICAgIHByaW50KHJlcHIoZXhjLl9fY29udGV4dF9fKSkKKyAgICAuLi4KKyAgICBLZXlFcnJvcigneCcsKQorCisKK1BFUCA0MTQ6IEV4cGxpY2l0IFVuaWNvZGUgbGl0ZXJhbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzpwZXA6YDQxNGAgLSBFeHBsaWNpdCBVbmljb2RlIGxpdGVyYWxzCisgUEVQIHdyaXR0ZW4gYnkgQXJtaW4gUm9uYWNoZXIuCisKK1RvIGVhc2UgdGhlIHRyYW5zaXRpb24gZnJvbSBQeXRob24gMiBmb3IgVW5pY29kZSBhd2FyZSBQeXRob24gYXBwbGljYXRpb25zCit0aGF0IG1ha2UgaGVhdnkgdXNlIG9mIFVuaWNvZGUgbGl0ZXJhbHMsIFB5dGhvbiAzLjMgb25jZSBhZ2FpbiBzdXBwb3J0cyB0aGUKKyJgYHVgYCIgcHJlZml4IGZvciBzdHJpbmcgbGl0ZXJhbHMuIFRoaXMgcHJlZml4IGhhcyBubyBzZW1hbnRpYyBzaWduaWZpY2FuY2UKK2luIFB5dGhvbiAzLCBpdCBpcyBwcm92aWRlZCBzb2xlbHkgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgcHVyZWx5IG1lY2hhbmljYWwKK2NoYW5nZXMgaW4gbWlncmF0aW5nIHRvIFB5dGhvbiAzLCBtYWtpbmcgaXQgZWFzaWVyIGZvciBkZXZlbG9wZXJzIHRvIGZvY3VzIG9uCit0aGUgbW9yZSBzaWduaWZpY2FudCBzZW1hbnRpYyBjaGFuZ2VzIChzdWNoIGFzIHRoZSBzdHJpY3RlciBkZWZhdWx0CitzZXBhcmF0aW9uIG9mIGJpbmFyeSBhbmQgdGV4dCBkYXRhKS4KKworCitQRVAgMzE1NTogUXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOnBlcDpgMzE1NWAgLSBRdWFsaWZpZWQgbmFtZSBmb3IgY2xhc3NlcyBhbmQgZnVuY3Rpb25zCisgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEFudG9pbmUgUGl0cm91LgorCitGdW5jdGlvbnMgYW5kIGNsYXNzIG9iamVjdHMgaGF2ZSBhIG5ldyBgYF9fcXVhbG5hbWVfX2BgIGF0dHJpYnV0ZSByZXByZXNlbnRpbmcKK3RoZSAicGF0aCIgZnJvbSB0aGUgbW9kdWxlIHRvcC1sZXZlbCB0byB0aGVpciBkZWZpbml0aW9uLiAgRm9yIGdsb2JhbCBmdW5jdGlvbnMKK2FuZCBjbGFzc2VzLCB0aGlzIGlzIHRoZSBzYW1lIGFzIGBgX19uYW1lX19gYC4gIEZvciBvdGhlciBmdW5jdGlvbnMgYW5kIGNsYXNzZXMsCitpdCBwcm92aWRlcyBiZXR0ZXIgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhleSB3ZXJlIGFjdHVhbGx5IGRlZmluZWQsIGFuZAoraG93IHRoZXkgbWlnaHQgYmUgYWNjZXNzaWJsZSBmcm9tIHRoZSBnbG9iYWwgc2NvcGUuCisKK0V4YW1wbGUgd2l0aCAobm9uLWJvdW5kKSBtZXRob2RzOjoKKworICAgPj4+IGNsYXNzIEM6CisgICAuLi4gICAgIGRlZiBtZXRoKHNlbGYpOgorICAgLi4uICAgICAgICAgcGFzcworICAgPj4+IEMubWV0aC5fX25hbWVfXworICAgJ21ldGgnCisgICA+Pj4gQy5tZXRoLl9fcXVhbG5hbWVfXworICAgJ0MubWV0aCcKKworRXhhbXBsZSB3aXRoIG5lc3RlZCBjbGFzc2VzOjoKKworICAgPj4+IGNsYXNzIEM6CisgICAuLi4gICAgIGNsYXNzIEQ6CisgICAuLi4gICAgICAgICBkZWYgbWV0aChzZWxmKToKKyAgIC4uLiAgICAgICAgICAgICBwYXNzCisgICAuLi4KKyAgID4+PiBDLkQuX19uYW1lX18KKyAgICdEJworICAgPj4+IEMuRC5fX3F1YWxuYW1lX18KKyAgICdDLkQnCisgICA+Pj4gQy5ELm1ldGguX19uYW1lX18KKyAgICdtZXRoJworICAgPj4+IEMuRC5tZXRoLl9fcXVhbG5hbWVfXworICAgJ0MuRC5tZXRoJworCitFeGFtcGxlIHdpdGggbmVzdGVkIGZ1bmN0aW9uczo6CisKKyAgID4+PiBkZWYgb3V0ZXIoKToKKyAgIC4uLiAgICAgZGVmIGlubmVyKCk6CisgICAuLi4gICAgICAgICBwYXNzCisgICAuLi4gICAgIHJldHVybiBpbm5lcgorICAgLi4uCisgICA+Pj4gb3V0ZXIoKS5fX25hbWVfXworICAgJ2lubmVyJworICAgPj4+IG91dGVyKCkuX19xdWFsbmFtZV9fCisgICAnb3V0ZXIuPGxvY2Fscz4uaW5uZXInCisKK1RoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhvc2Ugb2JqZWN0cyBpcyBhbHNvIGNoYW5nZWQgdG8gaW5jbHVkZSB0aGUKK25ldywgbW9yZSBwcmVjaXNlIGluZm9ybWF0aW9uOjoKKworICAgPj4+IHN0cihDLkQpCisgICAiPGNsYXNzICdfX21haW5fXy5DLkQnPiIKKyAgID4+PiBzdHIoQy5ELm1ldGgpCisgICAnPGZ1bmN0aW9uIEMuRC5tZXRoIGF0IDB4N2Y0NmI5ZmUzMWUwPicKKworCisuLiBfcGVwLTQxMjoKKworUEVQIDQxMjogS2V5LVNoYXJpbmcgRGljdGlvbmFyeQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis6cGVwOmA0MTJgIC0gS2V5LVNoYXJpbmcgRGljdGlvbmFyeQorIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBNYXJrIFNoYW5ub24uCisKK0RpY3Rpb25hcmllcyB1c2VkIGZvciB0aGUgc3RvcmFnZSBvZiBvYmplY3RzJyBhdHRyaWJ1dGVzIGFyZSBub3cgYWJsZSB0bworc2hhcmUgcGFydCBvZiB0aGVpciBpbnRlcm5hbCBzdG9yYWdlIGJldHdlZW4gZWFjaCBvdGhlciAobmFtZWx5LCB0aGUgcGFydAord2hpY2ggc3RvcmVzIHRoZSBrZXlzIGFuZCB0aGVpciByZXNwZWN0aXZlIGhhc2hlcykuICBUaGlzIHJlZHVjZXMgdGhlIG1lbW9yeQorY29uc3VtcHRpb24gb2YgcHJvZ3JhbXMgY3JlYXRpbmcgbWFueSBpbnN0YW5jZXMgb2Ygbm9uLWJ1aWx0aW4gdHlwZXMuCisKKworUEVQIDM2MjogRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis6cGVwOmAzNjJgOiAtICBGdW5jdGlvbiBTaWduYXR1cmUgT2JqZWN0CisgUEVQIHdyaXR0ZW4gYnkgQnJldHQgQ2Fubm9uLCBZdXJ5IFNlbGl2YW5vdiwgTGFycnkgSGFzdGluZ3MsIEppd29uIFNlby4KKyBJbXBsZW1lbnRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworQSBuZXcgZnVuY3Rpb24gOmZ1bmM6YGluc3BlY3Quc2lnbmF0dXJlYCBtYWtlcyBpbnRyb3NwZWN0aW9uIG9mIHB5dGhvbgorY2FsbGFibGVzIGVhc3kgYW5kIHN0cmFpZ2h0Zm9yd2FyZC4gIEEgYnJvYWQgcmFuZ2Ugb2YgY2FsbGFibGVzIGlzIHN1cHBvcnRlZDoKK3B5dGhvbiBmdW5jdGlvbnMsIGRlY29yYXRlZCBvciBub3QsIGNsYXNzZXMsIGFuZCA6ZnVuYzpgZnVuY3Rvb2xzLnBhcnRpYWxgCitvYmplY3RzLiAgTmV3IGNsYXNzZXMgOmNsYXNzOmBpbnNwZWN0LlNpZ25hdHVyZWAsIDpjbGFzczpgaW5zcGVjdC5QYXJhbWV0ZXJgCithbmQgOmNsYXNzOmBpbnNwZWN0LkJvdW5kQXJndW1lbnRzYCBob2xkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjYWxsIHNpZ25hdHVyZXMsCitzdWNoIGFzLCBhbm5vdGF0aW9ucywgZGVmYXVsdCB2YWx1ZXMsIHBhcmFtZXRlcnMga2luZHMsIGFuZCBib3VuZCBhcmd1bWVudHMsCit3aGljaCBjb25zaWRlcmFibHkgc2ltcGxpZmllcyB3cml0aW5nIGRlY29yYXRvcnMgYW5kIGFueSBjb2RlIHRoYXQgdmFsaWRhdGVzCitvciBhbWVuZHMgY2FsbGluZyBzaWduYXR1cmVzIG9yIGFyZ3VtZW50cy4KKworCisuLiBfaW1wb3J0bGliOgorCitVc2luZyBpbXBvcnRsaWIgYXMgdGhlIEltcGxlbWVudGF0aW9uIG9mIEltcG9ydAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzppc3N1ZTpgMjM3N2AgLSBSZXBsYWNlIF9faW1wb3J0X18gdy8gaW1wb3J0bGliLl9faW1wb3J0X18KKzppc3N1ZTpgMTM5NTlgIC0gUmUtaW1wbGVtZW50IHBhcnRzIG9mIDptb2Q6YGltcGAgaW4gcHVyZSBQeXRob24KKzppc3N1ZTpgMTQ2MDVgIC0gTWFrZSBpbXBvcnQgbWFjaGluZXJ5IGV4cGxpY2l0Cis6aXNzdWU6YDE0NjQ2YCAtIFJlcXVpcmUgbG9hZGVycyBzZXQgX19sb2FkZXJfXyBhbmQgX19wYWNrYWdlX18KKworKFdyaXR0ZW4gYnkgQnJldHQgQ2Fubm9uKQorCitUaGUgOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uIGlzIG5vdyBwb3dlcmVkIGJ5IDpmdW5jOmBpbXBvcnRsaWIuX19pbXBvcnRfX2AuCitUaGlzIHdvcmsgbGVhZHMgdG8gdGhlIGNvbXBsZXRpb24gb2YgInBoYXNlIDIiIG9mIDpwZXA6YDMwMmAuIFRoZXJlIGFyZQorbXVsdGlwbGUgYmVuZWZpdHMgdG8gdGhpcyBjaGFuZ2UuIEZpcnN0LCBpdCBoYXMgYWxsb3dlZCBmb3IgbW9yZSBvZiB0aGUKK21hY2hpbmVyeSBwb3dlcmluZyBpbXBvcnQgdG8gYmUgZXhwb3NlZCBpbnN0ZWFkIG9mIGJlaW5nIGltcGxpY2l0IGFuZCBoaWRkZW4KK3dpdGhpbiB0aGUgQyBjb2RlLiBJdCBhbHNvIHByb3ZpZGVzIGEgc2luZ2xlIGltcGxlbWVudGF0aW9uIGZvciBhbGwgUHl0aG9uIFZNcworc3VwcG9ydGluZyBQeXRob24gMy4zIHRvIHVzZSwgaGVscGluZyB0byBlbmQgYW55IFZNLXNwZWNpZmljIGRldmlhdGlvbnMgaW4KK2ltcG9ydCBzZW1hbnRpY3MuIEFuZCBmaW5hbGx5IGl0IGVhc2VzIHRoZSBtYWludGVuYW5jZSBvZiBpbXBvcnQsIGFsbG93aW5nIGZvcgorZnV0dXJlIGdyb3d0aCB0byBvY2N1ci4KKworRm9yIHRoZSBjb21tb24gdXNlciwgdGhpcyBjaGFuZ2Ugc2hvdWxkIHJlc3VsdCBpbiBubyB2aXNpYmxlIGNoYW5nZSBpbgorc2VtYW50aWNzLiBBbnkgcG9zc2libGUgY2hhbmdlcyByZXF1aXJlZCBpbiBvbmUncyBjb2RlIHRvIGhhbmRsZSB0aGlzIGNoYW5nZQorc2hvdWxkIHJlYWQgdGhlIGBQb3J0aW5nIFB5dGhvbiBjb2RlYF8gc2VjdGlvbiBvZiB0aGlzIGRvY3VtZW50IHRvIHNlZSB3aGF0CituZWVkcyB0byBiZSBjaGFuZ2VkLCBidXQgaXQgd2lsbCBvbmx5IGFmZmVjdCB0aG9zZSB0aGF0IGN1cnJlbnRseSBtYW5pcHVsYXRlCitpbXBvcnQgb3IgdHJ5IGNhbGxpbmcgaXQgcHJvZ3JhbW1hdGljYWxseS4KKworTmV3IEFQSXMKKy0tLS0tLS0tCitPbmUgb2YgdGhlIGxhcmdlIGJlbmVmaXRzIG9mIHRoaXMgd29yayBpcyB0aGUgZXhwb3N1cmUgb2Ygd2hhdCBnb2VzIGludG8KK21ha2luZyB0aGUgaW1wb3J0IHN0YXRlbWVudCB3b3JrLiBUaGF0IG1lYW5zIHRoZSB2YXJpb3VzIGltcG9ydGVycyB0aGF0IHdlcmUKK29uY2UgaW1wbGljaXQgYXJlIG5vdyBmdWxseSBleHBvc2VkIGFzIHBhcnQgb2YgdGhlIDptb2Q6YGltcG9ydGxpYmAgcGFja2FnZS4KKworVGhlIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBkZWZpbmVkIGluIDptb2Q6YGltcG9ydGxpYi5hYmNgIGhhdmUgYmVlbiBleHBhbmRlZAordG8gcHJvcGVybHkgZGVsaW5lYXRlIGJldHdlZW4gOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJzIDxtZXRhIHBhdGggZmluZGVyPmAKK2FuZCA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJzIDxwYXRoIGVudHJ5IGZpbmRlcj5gIGJ5IGludHJvZHVjaW5nCis6Y2xhc3M6YGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXJgIGFuZAorOmNsYXNzOmBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlcmAsIHJlc3BlY3RpdmVseS4gVGhlIG9sZCBBQkMgb2YKKzpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGlzIG5vdyBvbmx5IHByb3ZpZGVkIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eQorYW5kIGRvZXMgbm90IGVuZm9yY2UgYW55IG1ldGhvZCByZXF1aXJlbWVudHMuCisKK0luIHRlcm1zIG9mIGZpbmRlcnMsIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyYCBleHBvc2VzIHRoZQorbWVjaGFuaXNtIHVzZWQgdG8gc2VhcmNoIGZvciBzb3VyY2UgYW5kIGJ5dGVjb2RlIGZpbGVzIG9mIGEgbW9kdWxlLiBQcmV2aW91c2x5Cit0aGlzIGNsYXNzIHdhcyBhbiBpbXBsaWNpdCBtZW1iZXIgb2YgOmF0dHI6YHN5cy5wYXRoX2hvb2tzYC4KKworRm9yIGxvYWRlcnMsIHRoZSBuZXcgYWJzdHJhY3QgYmFzZSBjbGFzcyA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlcmAgaGVscHMKK3dyaXRlIGEgbG9hZGVyIHRoYXQgdXNlcyB0aGUgZmlsZSBzeXN0ZW0gYXMgdGhlIHN0b3JhZ2UgbWVjaGFuaXNtIGZvciBhIG1vZHVsZSdzCitjb2RlLiBUaGUgbG9hZGVyIGZvciBzb3VyY2UgZmlsZXMKKyg6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcmApLCBzb3VyY2VsZXNzIGJ5dGVjb2RlIGZpbGVzCisoOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyYCksIGFuZCBleHRlbnNpb24gbW9kdWxlcworKDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyYCkgYXJlIG5vdyBhdmFpbGFibGUgZm9yCitkaXJlY3QgdXNlLgorCis6ZXhjOmBJbXBvcnRFcnJvcmAgbm93IGhhcyBgYG5hbWVgYCBhbmQgYGBwYXRoYGAgYXR0cmlidXRlcyB3aGljaCBhcmUgc2V0IHdoZW4KK3RoZXJlIGlzIHJlbGV2YW50IGRhdGEgdG8gcHJvdmlkZS4gVGhlIG1lc3NhZ2UgZm9yIGZhaWxlZCBpbXBvcnRzIHdpbGwgYWxzbworcHJvdmlkZSB0aGUgZnVsbCBuYW1lIG9mIHRoZSBtb2R1bGUgbm93IGluc3RlYWQgb2YganVzdCB0aGUgdGFpbCBlbmQgb2YgdGhlCittb2R1bGUncyBuYW1lLgorCitUaGUgOmZ1bmM6YGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlc2AgZnVuY3Rpb24gd2lsbCBub3cgY2FsbCB0aGUgbWV0aG9kIHdpdGgKK3RoZSBzYW1lIG5hbWUgb24gYWxsIGZpbmRlcnMgY2FjaGVkIGluIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgdG8gaGVscAorY2xlYW4gdXAgYW55IHN0b3JlZCBzdGF0ZSBhcyBuZWNlc3NhcnkuCisKK1Zpc2libGUgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tCitbRm9yIHBvdGVudGlhbCByZXF1aXJlZCBjaGFuZ2VzIHRvIGNvZGUsIHNlZSB0aGUgYFBvcnRpbmcgUHl0aG9uIGNvZGVgXworc2VjdGlvbl0KKworQmV5b25kIHRoZSBleHBhbnNlIG9mIHdoYXQgOm1vZDpgaW1wb3J0bGliYCBub3cgZXhwb3NlcywgdGhlcmUgYXJlIG90aGVyCit2aXNpYmxlIGNoYW5nZXMgdG8gaW1wb3J0LiBUaGUgYmlnZ2VzdCBpcyB0aGF0IDphdHRyOmBzeXMubWV0YV9wYXRoYCBhbmQKKzphdHRyOmBzeXMucGF0aF9ob29rc2Agbm93IHN0b3JlIGFsbCBvZiB0aGUgbWV0YSBwYXRoIGZpbmRlcnMgYW5kIHBhdGggZW50cnkKK2hvb2tzIHVzZWQgYnkgaW1wb3J0LiAgUHJldmlvdXNseSB0aGUgZmluZGVycyB3ZXJlIGltcGxpY2l0IGFuZCBoaWRkZW4gd2l0aGluCit0aGUgQyBjb2RlIG9mIGltcG9ydCBpbnN0ZWFkIG9mIGJlaW5nIGRpcmVjdGx5IGV4cG9zZWQuIFRoaXMgbWVhbnMgdGhhdCBvbmUgY2FuCitub3cgZWFzaWx5IHJlbW92ZSBvciBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSB2YXJpb3VzIGZpbmRlcnMgdG8gZml0IG9uZSdzIG5lZWRzLgorCitBbm90aGVyIGNoYW5nZSBpcyB0aGF0IGFsbCBtb2R1bGVzIGhhdmUgYSBgYF9fbG9hZGVyX19gYCBhdHRyaWJ1dGUsIHN0b3JpbmcgdGhlCitsb2FkZXIgdXNlZCB0byBjcmVhdGUgdGhlIG1vZHVsZS4gOnBlcDpgMzAyYCBoYXMgYmVlbiB1cGRhdGVkIHRvIG1ha2UgdGhpcworYXR0cmlidXRlIG1hbmRhdG9yeSBmb3IgbG9hZGVycyB0byBpbXBsZW1lbnQsIHNvIGluIHRoZSBmdXR1cmUgb25jZSAzcmQtcGFydHkKK2xvYWRlcnMgaGF2ZSBiZWVuIHVwZGF0ZWQgcGVvcGxlIHdpbGwgYmUgYWJsZSB0byByZWx5IG9uIHRoZSBleGlzdGVuY2Ugb2YgdGhlCithdHRyaWJ1dGUuIFVudGlsIHN1Y2ggdGltZSwgdGhvdWdoLCBpbXBvcnQgaXMgc2V0dGluZyB0aGUgbW9kdWxlIHBvc3QtbG9hZC4KKworTG9hZGVycyBhcmUgYWxzbyBub3cgZXhwZWN0ZWQgdG8gc2V0IHRoZSBgYF9fcGFja2FnZV9fYGAgYXR0cmlidXRlIGZyb20KKzpwZXA6YDM2NmAuIE9uY2UgYWdhaW4sIGltcG9ydCBpdHNlbGYgaXMgYWxyZWFkeSBzZXR0aW5nIHRoaXMgb24gYWxsIGxvYWRlcnMKK2Zyb20gOm1vZDpgaW1wb3J0bGliYCBhbmQgaW1wb3J0IGl0c2VsZiBpcyBzZXR0aW5nIHRoZSBhdHRyaWJ1dGUgcG9zdC1sb2FkLgorCitgYE5vbmVgYCBpcyBub3cgaW5zZXJ0ZWQgaW50byA6YXR0cjpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIHdoZW4gbm8gZmluZGVyCitjYW4gYmUgZm91bmQgb24gOmF0dHI6YHN5cy5wYXRoX2hvb2tzYC4gU2luY2UgOmNsYXNzOmBpbXAuTnVsbEltcG9ydGVyYCBpcyBub3QKK2RpcmVjdGx5IGV4cG9zZWQgb24gOmF0dHI6YHN5cy5wYXRoX2hvb2tzYCBpdCBjb3VsZCBubyBsb25nZXIgYmUgcmVsaWVkIHVwb24gdG8KK2Fsd2F5cyBiZSBhdmFpbGFibGUgdG8gdXNlIGFzIGEgdmFsdWUgcmVwcmVzZW50aW5nIG5vIGZpbmRlciBmb3VuZC4KKworQWxsIG90aGVyIGNoYW5nZXMgcmVsYXRlIHRvIHNlbWFudGljIGNoYW5nZXMgd2hpY2ggc2hvdWxkIGJlIHRha2VuIGludG8KK2NvbnNpZGVyYXRpb24gd2hlbiB1cGRhdGluZyBjb2RlIGZvciBQeXRob24gMy4zLCBhbmQgdGh1cyBzaG91bGQgYmUgcmVhZCBhYm91dAoraW4gdGhlIGBQb3J0aW5nIFB5dGhvbiBjb2RlYF8gc2VjdGlvbiBvZiB0aGlzIGRvY3VtZW50LgorCisKK05ldyBFbWFpbCBQYWNrYWdlIEZlYXR1cmVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQb2xpY3kgRnJhbWV3b3JrCistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBlbWFpbCBwYWNrYWdlIG5vdyBoYXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBmcmFtZXdvcmsuICBBCis6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuUG9saWN5YCBpcyBhbiBvYmplY3Qgd2l0aCBzZXZlcmFsIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMKK3RoYXQgY29udHJvbCBob3cgdGhlIGVtYWlsIHBhY2thZ2UgYmVoYXZlcy4gIFRoZSBwcmltYXJ5IHBvbGljeSBmb3IgUHl0aG9uIDMuMworaXMgdGhlIDpjbGFzczpgfmVtYWlsLnBvbGljeS5Db21wYXQzMmAgcG9saWN5LCB3aGljaCBwcm92aWRlcyBiYWNrd2FyZAorY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBlbWFpbCBwYWNrYWdlIGluIFB5dGhvbiAzLjIuICBBIGBgcG9saWN5YGAgY2FuIGJlCitzcGVjaWZpZWQgd2hlbiBhbiBlbWFpbCBtZXNzYWdlIGlzIHBhcnNlZCBieSBhIDptb2Q6YH5lbWFpbC5wYXJzZXJgLCBvciB3aGVuIGEKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIG9yIHdoZW4gYW4gZW1haWwgaXMKK3NlcmlhbGl6ZWQgdXNpbmcgYSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYC4gIFVubGVzcyBvdmVycmlkZGVuLCBhIHBvbGljeSBwYXNzZWQKK3RvIGEgYGBwYXJzZXJgYCBpcyBpbmhlcml0ZWQgYnkgYWxsIHRoZSBgYE1lc3NhZ2VgYCBvYmplY3QgYW5kIHN1Yi1vYmplY3RzCitjcmVhdGVkIGJ5IHRoZSBgYHBhcnNlcmBgLiAgQnkgZGVmYXVsdCBhIGBgZ2VuZXJhdG9yYGAgd2lsbCB1c2UgdGhlIHBvbGljeSBvZgordGhlIGBgTWVzc2FnZWBgIG9iamVjdCBpdCBpcyBzZXJpYWxpemluZy4gIFRoZSBkZWZhdWx0IHBvbGljeSBpcworOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgLgorCitUaGUgbWluaW11bSBzZXQgb2YgY29udHJvbHMgaW1wbGVtZW50ZWQgYnkgYWxsIGBgcG9saWN5YGAgb2JqZWN0cyBhcmU6CisKKyAgICA9PT09PT09PT09PT09PT0gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBtYXhfbGluZV9sZW5ndGggICAgIFRoZSBtYXhpbXVtIGxlbmd0aCwgZXhjbHVkaW5nIHRoZSBsaW5lc2VwIGNoYXJhY3RlcihzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGl2aWR1YWwgbGluZXMgbWF5IGhhdmUgd2hlbiBhIGBgTWVzc2FnZWBgIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkLiAgRGVmYXVsdHMgdG8gNzguCisKKyAgICBsaW5lc2VwICAgICAgICAgICAgIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSBpbmRpdmlkdWFsIGxpbmVzIHdoZW4gYQorICAgICAgICAgICAgICAgICAgICAgICAgYGBNZXNzYWdlYGAgaXMgc2VyaWFsaXplZC4gIERlZmF1bHRzIHRvIGBgXG5gYC4KKworICAgIGN0ZV90eXBlICAgICAgICAgICAgYGA3Yml0YGAgb3IgYGA4Yml0YGAuICBgYDhiaXRgYCBhcHBsaWVzIG9ubHkgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgYGBCeXRlc2BgIGBgZ2VuZXJhdG9yYGAsIGFuZCBtZWFucyB0aGF0IG5vbi1BU0NJSSBtYXkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlIHVzZWQgd2hlcmUgYWxsb3dlZCBieSB0aGUgcHJvdG9jb2wgKG9yIHdoZXJlIGl0CisgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHMgaW4gdGhlIG9yaWdpbmFsIGlucHV0KS4KKworICAgIHJhaXNlX29uX2RlZmVjdCAgICAgQ2F1c2VzIGEgYGBwYXJzZXJgYCB0byByYWlzZSBlcnJvciB3aGVuIGRlZmVjdHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNvdW50ZXJlZCBpbnN0ZWFkIG9mIGFkZGluZyB0aGVtIHRvIHRoZSBgYE1lc3NhZ2VgYAorICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0J3MgYGBkZWZlY3RzYGAgbGlzdC4KKyAgICA9PT09PT09PT09PT09PT0gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBuZXcgcG9saWN5IGluc3RhbmNlLCB3aXRoIG5ldyBzZXR0aW5ncywgaXMgY3JlYXRlZCB1c2luZyB0aGUKKzptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5jbG9uZWAgbWV0aG9kIG9mIHBvbGljeSBvYmplY3RzLiAgYGBjbG9uZWBgIHRha2VzCithbnkgb2YgdGhlIGFib3ZlIGNvbnRyb2xzIGFzIGtleXdvcmQgYXJndW1lbnRzLiAgQW55IGNvbnRyb2wgbm90IHNwZWNpZmllZCBpbgordGhlIGNhbGwgcmV0YWlucyBpdHMgZGVmYXVsdCB2YWx1ZS4gIFRodXMgeW91IGNhbiBjcmVhdGUgYSBwb2xpY3kgdGhhdCB1c2VzCitgYFxyXG5gYCBsaW5lc2VwIGNoYXJhY3RlcnMgbGlrZSB0aGlzOjoKKworICAgIG15cG9saWN5ID0gY29tcGF0MzIuY2xvbmUobGluZXNlcD0nXHJcbicpCisKK1BvbGljaWVzIGNhbiBiZSB1c2VkIHRvIG1ha2UgdGhlIGdlbmVyYXRpb24gb2YgbWVzc2FnZXMgaW4gdGhlIGZvcm1hdCBuZWVkZWQgYnkKK3lvdXIgYXBwbGljYXRpb24gc2ltcGxlci4gIEluc3RlYWQgb2YgaGF2aW5nIHRvIHJlbWVtYmVyIHRvIHNwZWNpZnkKK2BgbGluZXNlcD0nXHJcbidgYCBpbiBhbGwgdGhlIHBsYWNlcyB5b3UgY2FsbCBhIGBgZ2VuZXJhdG9yYGAsIHlvdSBjYW4gc3BlY2lmeQoraXQgb25jZSwgd2hlbiB5b3Ugc2V0IHRoZSBwb2xpY3kgdXNlZCBieSB0aGUgYGBwYXJzZXJgYCBvciB0aGUgYGBNZXNzYWdlYGAsCit3aGljaGV2ZXIgeW91ciBwcm9ncmFtIHVzZXMgdG8gY3JlYXRlIGBgTWVzc2FnZWBgIG9iamVjdHMuICBPbiB0aGUgb3RoZXIgaGFuZCwKK2lmIHlvdSBuZWVkIHRvIGdlbmVyYXRlIG1lc3NhZ2VzIGluIG11bHRpcGxlIGZvcm1zLCB5b3UgY2FuIHN0aWxsIHNwZWNpZnkgdGhlCitwYXJhbWV0ZXJzIGluIHRoZSBhcHByb3ByaWF0ZSBgYGdlbmVyYXRvcmBgIGNhbGwuICBPciB5b3UgY2FuIGhhdmUgY3VzdG9tCitwb2xpY3kgaW5zdGFuY2VzIGZvciB5b3VyIGRpZmZlcmVudCBjYXNlcywgYW5kIHBhc3MgdGhvc2UgaW4gd2hlbiB5b3UgY3JlYXRlCit0aGUgYGBnZW5lcmF0b3JgYC4KKworCitQcm92aXNpb25hbCBQb2xpY3kgd2l0aCBOZXcgSGVhZGVyIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hpbGUgdGhlIHBvbGljeSBmcmFtZXdvcmsgaXMgd29ydGh3aGlsZSBhbGwgYnkgaXRzZWxmLCB0aGUgbWFpbiBtb3RpdmF0aW9uIGZvcgoraW50cm9kdWNpbmcgaXQgaXMgdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIG5ldyBwb2xpY2llcyB0aGF0IGltcGxlbWVudCBuZXcKK2ZlYXR1cmVzIGZvciB0aGUgZW1haWwgcGFja2FnZSBpbiBhIHdheSB0aGF0IG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Citmb3IgdGhvc2Ugd2hvIGRvIG5vdCB1c2UgdGhlIG5ldyBwb2xpY2llcy4gIEJlY2F1c2UgdGhlIG5ldyBwb2xpY2llcyBpbnRyb2R1Y2UgYQorbmV3IEFQSSwgd2UgYXJlIHJlbGVhc2luZyB0aGVtIGluIFB5dGhvbiAzLjMgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgcG9saWN5Cis8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiAgQmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nCityZW1vdmFsIG9mIHRoZSBjb2RlKSBtYXkgb2NjdXIgaWYgZGVlbWVkIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgorCitUaGUgbmV3IHBvbGljaWVzIGFyZSBpbnN0YW5jZXMgb2YgOmNsYXNzOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5YCwKK2FuZCBhZGQgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGNvbnRyb2xzOgorCisgICAgPT09PT09PT09PT09PT09ICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgcmVmb2xkX3NvdXJjZSAgICAgICBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBoZWFkZXJzIHBhcnNlZCBieSBhCisgICAgICAgICAgICAgICAgICAgICAgICA6bW9kOmB+ZW1haWwucGFyc2VyYCBhcmUgcmVmb2xkZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYC4gIEl0IGNhbiBiZSBgYG5vbmVgYCwgYGBsb25nYGAsCisgICAgICAgICAgICAgICAgICAgICAgICBvciBgYGFsbGBgLiAgVGhlIGRlZmF1bHQgaXMgYGBsb25nYGAsIHdoaWNoIG1lYW5zIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBoZWFkZXJzIHdpdGggYSBsaW5lIGxvbmdlciB0aGFuCisgICAgICAgICAgICAgICAgICAgICAgICBgYG1heF9saW5lX2xlbmd0aGBgIGdldCByZWZvbGRlZC4gIGBgbm9uZWBgIG1lYW5zIG5vCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGdldCByZWZvbGRlZCwgYW5kIGBgYWxsYGAgbWVhbnMgdGhhdCBhbGwgbGluZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldCByZWZvbGRlZC4KKworICAgIGhlYWRlcl9mYWN0b3J5ICAgICAgQSBjYWxsYWJsZSB0aGF0IHRha2UgYSBgYG5hbWVgYCBhbmQgYGB2YWx1ZWBgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZXMgYSBjdXN0b20gaGVhZGVyIG9iamVjdC4KKyAgICA9PT09PT09PT09PT09PT0gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGBgaGVhZGVyX2ZhY3RvcnlgYCBpcyB0aGUga2V5IHRvIHRoZSBuZXcgZmVhdHVyZXMgcHJvdmlkZWQgYnkgdGhlIG5ldworcG9saWNpZXMuICBXaGVuIG9uZSBvZiB0aGUgbmV3IHBvbGljaWVzIGlzIHVzZWQsIGFueSBoZWFkZXIgcmV0cmlldmVkIGZyb20KK2EgYGBNZXNzYWdlYGAgb2JqZWN0IGlzIGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgYGBoZWFkZXJfZmFjdG9yeWBgLCBhbmQgYW55Cit0aW1lIHlvdSBzZXQgYSBoZWFkZXIgb24gYSBgYE1lc3NhZ2VgYCBpdCBiZWNvbWVzIGFuIG9iamVjdCBwcm9kdWNlZCBieQorYGBoZWFkZXJfZmFjdG9yeWBgLiAgQWxsIHN1Y2ggaGVhZGVyIG9iamVjdHMgaGF2ZSBhIGBgbmFtZWBgIGF0dHJpYnV0ZSBlcXVhbAordG8gdGhlIGhlYWRlciBuYW1lLiAgQWRkcmVzcyBhbmQgRGF0ZSBoZWFkZXJzIGhhdmUgYWRkaXRpb25hbCBhdHRyaWJ1dGVzCit0aGF0IGdpdmUgeW91IGFjY2VzcyB0byB0aGUgcGFyc2VkIGRhdGEgb2YgdGhlIGhlYWRlci4gIFRoaXMgbWVhbnMgeW91IGNhbiBub3cKK2RvIHRoaW5ncyBsaWtlIHRoaXM6OgorCisgICAgPj4+IG0gPSBNZXNzYWdlKHBvbGljeT1TTVRQKQorICAgID4+PiBtWydUbyddID0gJ8OJcmljIDxmb29AZXhhbXBsZS5jb20+JworICAgID4+PiBtWyd0byddCisgICAgJ8OJcmljIDxmb29AZXhhbXBsZS5jb20+JworICAgID4+PiBtWyd0byddLmFkZHJlc3NlcworICAgIChBZGRyZXNzKGRpc3BsYXlfbmFtZT0nw4lyaWMnLCB1c2VybmFtZT0nZm9vJywgZG9tYWluPSdleGFtcGxlLmNvbScpLCkKKyAgICA+Pj4gbVsndG8nXS5hZGRyZXNzZXNbMF0udXNlcm5hbWUKKyAgICAnZm9vJworICAgID4+PiBtWyd0byddLmFkZHJlc3Nlc1swXS5kaXNwbGF5X25hbWUKKyAgICAnw4lyaWMnCisgICAgPj4+IG1bJ0RhdGUnXSA9IGVtYWlsLnV0aWxzLmxvY2FsdGltZSgpCisgICAgPj4+IG1bJ0RhdGUnXS5kYXRldGltZQorICAgIGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDUsIDI1LCAyMSwgMzksIDI0LCA0NjU0ODQsIHR6aW5mbz1kYXRldGltZS50aW1lem9uZShkYXRldGltZS50aW1lZGVsdGEoLTEsIDcyMDAwKSwgJ0VEVCcpKQorICAgID4+PiBtWydEYXRlJ10KKyAgICAnRnJpLCAyNSBNYXkgMjAxMiAyMTo0NDoyNyAtMDQwMCcKKyAgICA+Pj4gcHJpbnQobSkKKyAgICBUbzogPT91dGYtOD9xPz1DMz04OXJpYz89IDxmb29AZXhhbXBsZS5jb20+CisgICAgRGF0ZTogRnJpLCAyNSBNYXkgMjAxMiAyMTo0NDoyNyAtMDQwMAorCitZb3Ugd2lsbCBub3RlIHRoYXQgdGhlIHVuaWNvZGUgZGlzcGxheSBuYW1lIGlzIGF1dG9tYXRpY2FsbHkgZW5jb2RlZCBhcworYGB1dGYtOGBgIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCwgYnV0IHRoYXQgd2hlbiB0aGUgaGVhZGVyIGlzIGFjY2Vzc2VkCitkaXJlY3RseSwgeW91IGdldCB0aGUgdW5pY29kZSB2ZXJzaW9uLiAgVGhpcyBlbGltaW5hdGVzIGFueSBuZWVkIHRvIGRlYWwgd2l0aAordGhlIDptb2Q6YGVtYWlsLmhlYWRlcmAgOm1ldGg6YH5lbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlcmAgb3IKKzptZXRoOmB+ZW1haWwuaGVhZGVyLm1ha2VfaGVhZGVyYCBmdW5jdGlvbnMuCisKK1lvdSBjYW4gYWxzbyBjcmVhdGUgYWRkcmVzc2VzIGZyb20gcGFydHM6OgorCisgICAgPj4+IG1bJ2NjJ10gPSBbR3JvdXAoJ3BhbHMnLCBbQWRkcmVzcygnQm9iJywgJ2JvYicsICdleGFtcGxlLmNvbScpLAorICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ1NhbGx5JywgJ3NhbGx5JywgJ2V4YW1wbGUuY29tJyldKSwKKyAgICAuLi4gICAgICAgICAgICBBZGRyZXNzKCdCb256bycsIGFkZHJfc3BlYz0nYm9uekBsYXVnaC5jb20nKV0KKyAgICA+Pj4gcHJpbnQobSkKKyAgICBUbzogPT91dGYtOD9xPz1DMz04OXJpYz89IDxmb29AZXhhbXBsZS5jb20+CisgICAgRGF0ZTogRnJpLCAyNSBNYXkgMjAxMiAyMTo0NDoyNyAtMDQwMAorICAgIGNjOiBwYWxzOiBCb2IgPGJvYkBleGFtcGxlLmNvbT4sIFNhbGx5IDxzYWxseUBleGFtcGxlLmNvbT47LCBCb256byA8Ym9uekBsYXVnaC5jb20+CisKK0RlY29kaW5nIHRvIHVuaWNvZGUgaXMgZG9uZSBhdXRvbWF0aWNhbGx5OjoKKworICAgID4+PiBtMiA9IG1lc3NhZ2VfZnJvbV9zdHJpbmcoc3RyKG0pKQorICAgID4+PiBtMlsndG8nXQorICAgICfDiXJpYyA8Zm9vQGV4YW1wbGUuY29tPicKKworV2hlbiB5b3UgcGFyc2UgYSBtZXNzYWdlLCB5b3UgY2FuIHVzZSB0aGUgYGBhZGRyZXNzZXNgYCBhbmQgYGBncm91cHNgYAorYXR0cmlidXRlcyBvZiB0aGUgaGVhZGVyIG9iamVjdHMgdG8gYWNjZXNzIHRoZSBncm91cHMgYW5kIGluZGl2aWR1YWwKK2FkZHJlc3Nlczo6CisKKyAgICA+Pj4gbTJbJ2NjJ10uYWRkcmVzc2VzCisgICAgKEFkZHJlc3MoZGlzcGxheV9uYW1lPSdCb2InLCB1c2VybmFtZT0nYm9iJywgZG9tYWluPSdleGFtcGxlLmNvbScpLCBBZGRyZXNzKGRpc3BsYXlfbmFtZT0nU2FsbHknLCB1c2VybmFtZT0nc2FsbHknLCBkb21haW49J2V4YW1wbGUuY29tJyksIEFkZHJlc3MoZGlzcGxheV9uYW1lPSdCb256bycsIHVzZXJuYW1lPSdib256JywgZG9tYWluPSdsYXVnaC5jb20nKSkKKyAgICA+Pj4gbTJbJ2NjJ10uZ3JvdXBzCisgICAgKEdyb3VwKGRpc3BsYXlfbmFtZT0ncGFscycsIGFkZHJlc3Nlcz0oQWRkcmVzcyhkaXNwbGF5X25hbWU9J0JvYicsIHVzZXJuYW1lPSdib2InLCBkb21haW49J2V4YW1wbGUuY29tJyksIEFkZHJlc3MoZGlzcGxheV9uYW1lPSdTYWxseScsIHVzZXJuYW1lPSdzYWxseScsIGRvbWFpbj0nZXhhbXBsZS5jb20nKSksIEdyb3VwKGRpc3BsYXlfbmFtZT1Ob25lLCBhZGRyZXNzZXM9KEFkZHJlc3MoZGlzcGxheV9uYW1lPSdCb256bycsIHVzZXJuYW1lPSdib256JywgZG9tYWluPSdsYXVnaC5jb20nKSwpKQorCitJbiBzdW1tYXJ5LCBpZiB5b3UgdXNlIG9uZSBvZiB0aGUgbmV3IHBvbGljaWVzLCBoZWFkZXIgbWFuaXB1bGF0aW9uIHdvcmtzIHRoZQord2F5IGl0IG91Z2h0IHRvOiAgeW91ciBhcHBsaWNhdGlvbiB3b3JrcyB3aXRoIHVuaWNvZGUgc3RyaW5ncywgYW5kIHRoZSBlbWFpbAorcGFja2FnZSB0cmFuc3BhcmVudGx5IGVuY29kZXMgYW5kIGRlY29kZXMgdGhlIHVuaWNvZGUgdG8gYW5kIGZyb20gdGhlIFJGQworc3RhbmRhcmQgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZ3MuCisKKworT3RoZXIgTGFuZ3VhZ2UgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIHNtYWxsZXIgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb3JlIFB5dGhvbiBsYW5ndWFnZSBhcmU6CisKKyogQWRkZWQgc3VwcG9ydCBmb3IgVW5pY29kZSBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcy4KKyAgQm90aCA6ZnVuYzpgdW5pY29kZWRhdGEubG9va3VwKClgIGFuZCBgYCdcTnsuLi59J2BgIG5vdyByZXNvbHZlIG5hbWUgYWxpYXNlcywKKyAgYW5kIDpmdW5jOmB1bmljb2RlZGF0YS5sb29rdXAoKWAgcmVzb2x2ZXMgbmFtZWQgc2VxdWVuY2VzIHRvby4KKworICAoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGluIDppc3N1ZTpgMTI3NTNgKQorCisqIEVxdWFsaXR5IGNvbXBhcmlzb25zIG9uIDpmdW5jOmByYW5nZWAgb2JqZWN0cyBub3cgcmV0dXJuIGEgcmVzdWx0IHJlZmxlY3RpbmcKKyAgdGhlIGVxdWFsaXR5IG9mIHRoZSB1bmRlcmx5aW5nIHNlcXVlbmNlcyBnZW5lcmF0ZWQgYnkgdGhvc2UgcmFuZ2Ugb2JqZWN0cy4KKworICAoOmlzc3VlOmAxMzIwMWApCisKKyogVGhlIGBgY291bnQoKWBgLCBgYGZpbmQoKWBgLCBgYHJmaW5kKClgYCwgYGBpbmRleCgpYGAgYW5kIGBgcmluZGV4KClgYAorICBtZXRob2RzIG9mIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cyBub3cgYWNjZXB0IGFuCisgIGludGVnZXIgYmV0d2VlbiAwIGFuZCAyNTUgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IFBldHJpIExlaHRpbmVuIGluIDppc3N1ZTpgMTIxNzBgKQorCisqIE5ldyBtZXRob2RzIGhhdmUgYmVlbiBhZGRlZCB0byA6Y2xhc3M6YGxpc3RgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWA6CisgIGBgY29weSgpYGAgYW5kIGBgY2xlYXIoKWBgLgorCisgICg6aXNzdWU6YDEwNTE2YCkKKworKiBSYXcgYnl0ZXMgbGl0ZXJhbHMgY2FuIG5vdyBiZSB3cml0dGVuIGBgcmIiLi4uImBgIGFzIHdlbGwgYXMgYGBiciIuLi4iYGAuCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDEzNzQ4YC4pCisKKyogOm1ldGg6YGRpY3Quc2V0ZGVmYXVsdGAgbm93IGRvZXMgb25seSBvbmUgbG9va3VwIGZvciB0aGUgZ2l2ZW4ga2V5LCBtYWtpbmcKKyAgaXQgYXRvbWljIHdoZW4gdXNlZCB3aXRoIGJ1aWx0LWluIHR5cGVzLgorICAoQ29udHJpYnV0ZWQgYnkgRmlsaXAgR3J1c3pjennFhHNraSBpbiA6aXNzdWU6YDEzNTIxYC4pCisKKworLi4gWFhYIG1lbnRpb24gbmV3IGVycm9yIG1lc3NhZ2VzIGZvciBwYXNzaW5nIHdyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8gZnVuY3Rpb25zCisKKworQSBGaW5lci1HcmFpbmVkIEltcG9ydCBMb2NrCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUHJldmlvdXMgdmVyc2lvbnMgb2YgQ1B5dGhvbiBoYXZlIGFsd2F5cyByZWxpZWQgb24gYSBnbG9iYWwgaW1wb3J0IGxvY2suCitUaGlzIGxlZCB0byB1bmV4cGVjdGVkIGFubm95YW5jZXMsIHN1Y2ggYXMgZGVhZGxvY2tzIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlCit3b3VsZCB0cmlnZ2VyIGNvZGUgZXhlY3V0aW9uIGluIGEgZGlmZmVyZW50IHRocmVhZCBhcyBhIHNpZGUtZWZmZWN0LgorQ2x1bXN5IHdvcmthcm91bmRzIHdlcmUgc29tZXRpbWVzIGVtcGxveWVkLCBzdWNoIGFzIHRoZQorOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9ja2AgQyBBUEkgZnVuY3Rpb24uCisKK0luIFB5dGhvbiAzLjMsIGltcG9ydGluZyBhIG1vZHVsZSB0YWtlcyBhIHBlci1tb2R1bGUgbG9jay4gIFRoaXMgY29ycmVjdGx5CitzZXJpYWxpemVzIGltcG9ydGF0aW9uIG9mIGEgZ2l2ZW4gbW9kdWxlIGZyb20gbXVsdGlwbGUgdGhyZWFkcyAocHJldmVudGluZwordGhlIGV4cG9zdXJlIG9mIGluY29tcGxldGVseSBpbml0aWFsaXplZCBtb2R1bGVzKSwgd2hpbGUgZWxpbWluYXRpbmcgdGhlCithZm9yZW1lbnRpb25lZCBhbm5veWFuY2VzLgorCisoY29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmA5MjYwYC4pCisKKworQnVpbHRpbiBmdW5jdGlvbnMgYW5kIHR5cGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKiA6ZnVuYzpgb3BlbmAgZ2V0cyBhIG5ldyAqb3BlbmVyKiBwYXJhbWV0ZXI6IHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvcgorICBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyAqb3BlbmVyKiB3aXRoICgqZmlsZSosCisgICpmbGFncyopLiBJdCBjYW4gYmUgdXNlZCB0byB1c2UgY3VzdG9tIGZsYWdzIGxpa2UgOmRhdGE6YG9zLk9fQ0xPRVhFQ2AgZm9yCisgIGV4YW1wbGUuIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkOiBvcGVuIGZvciBleGNsdXNpdmUgY3JlYXRpb24sIGZhaWxpbmcgaWYKKyAgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuCisqIDpmdW5jOmBwcmludGA6IGFkZGVkIHRoZSAqZmx1c2gqIGtleXdvcmQgYXJndW1lbnQuIElmIHRoZSAqZmx1c2gqIGtleXdvcmQKKyAgYXJndW1lbnQgaXMgdHJ1ZSwgdGhlIHN0cmVhbSBpcyBmb3JjaWJseSBmbHVzaGVkLgorKiA6ZnVuYzpgaGFzaGA6IGhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHNlZQorICA6bWV0aDpgb2JqZWN0Ll9faGFzaF9fYCBhbmQgOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgLgorKiBUaGUgOmNsYXNzOmBzdHJgIHR5cGUgZ2V0cyBhIG5ldyA6bWV0aDpgfnN0ci5jYXNlZm9sZGAgbWV0aG9kOiByZXR1cm4gYQorICBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZywgY2FzZWZvbGRlZCBzdHJpbmdzIG1heSBiZSB1c2VkIGZvciBjYXNlbGVzcworICBtYXRjaGluZy4gRm9yIGV4YW1wbGUsIGBgJ8OfJy5jYXNlZm9sZCgpYGAgcmV0dXJucyBgYCdzcydgYC4KKyogVGhlIHNlcXVlbmNlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gc3Vic3RhbnRpYWxseSByZXdyaXR0ZW4gdG8gYmV0dGVyCisgIGV4cGxhaW4gdGhlIGJpbmFyeS90ZXh0IHNlcXVlbmNlIGRpc3RpbmN0aW9uIGFuZCB0byBwcm92aWRlIHNwZWNpZmljCisgIGRvY3VtZW50YXRpb24gc2VjdGlvbnMgZm9yIHRoZSBpbmRpdmlkdWFsIGJ1aWx0aW4gc2VxdWVuY2UgdHlwZXMKKyAgKDppc3N1ZTpgNDk2NmApCisKK05ldyBNb2R1bGVzCis9PT09PT09PT09PQorCitmYXVsdGhhbmRsZXIKKy0tLS0tLS0tLS0tLQorCitUaGlzIG5ldyBkZWJ1ZyBtb2R1bGUgY29udGFpbnMgZnVuY3Rpb25zIHRvIGR1bXAgUHl0aG9uIHRyYWNlYmFja3MgZXhwbGljaXRseSwKK29uIGEgZmF1bHQgKGEgY3Jhc2ggbGlrZSBhIHNlZ21lbnRhdGlvbiBmYXVsdCksIGFmdGVyIGEgdGltZW91dCwgb3Igb24gYSB1c2VyCitzaWduYWwuIENhbGwgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgIHRvIGluc3RhbGwgZmF1bHQgaGFuZGxlcnMgZm9yIHRoZQorOmNvbnN0OmBTSUdTRUdWYCwgOmNvbnN0OmBTSUdGUEVgLCA6Y29uc3Q6YFNJR0FCUlRgLCA6Y29uc3Q6YFNJR0JVU2AsIGFuZAorOmNvbnN0OmBTSUdJTExgIHNpZ25hbHMuIFlvdSBjYW4gYWxzbyBlbmFibGUgdGhlbSBhdCBzdGFydHVwIGJ5IHNldHRpbmcgdGhlCis6ZW52dmFyOmBQWVRIT05GQVVMVEhBTkRMRVJgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIGJ5IHVzaW5nIDpvcHRpb246YC1YYAorYGBmYXVsdGhhbmRsZXJgYCBjb21tYW5kIGxpbmUgb3B0aW9uLgorCitFeGFtcGxlIG9mIGEgc2VnbWVudGF0aW9uIGZhdWx0IG9uIExpbnV4OiA6OgorCisgICAgJCBweXRob24gLXEgLVggZmF1bHRoYW5kbGVyCisgICAgPj4+IGltcG9ydCBjdHlwZXMKKyAgICA+Pj4gY3R5cGVzLnN0cmluZ19hdCgwKQorICAgIEZhdGFsIFB5dGhvbiBlcnJvcjogU2VnbWVudGF0aW9uIGZhdWx0CisKKyAgICBDdXJyZW50IHRocmVhZCAweDAwMDA3ZmI4OTlmMzk3MDA6CisgICAgICBGaWxlICIvaG9tZS9weXRob24vY3B5dGhvbi9MaWIvY3R5cGVzL19faW5pdF9fLnB5IiwgbGluZSA0ODYgaW4gc3RyaW5nX2F0CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxIGluIDxtb2R1bGU+CisgICAgU2VnbWVudGF0aW9uIGZhdWx0CisKKworaXBhZGRyZXNzCistLS0tLS0tLS0KKworVGhlIG5ldyA6bW9kOmBpcGFkZHJlc3NgIG1vZHVsZSBwcm92aWRlcyB0b29scyBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZworb2JqZWN0cyByZXByZXNlbnRpbmcgSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMsIG5ldHdvcmtzIGFuZCBpbnRlcmZhY2VzIChpLmUuCithbiBJUCBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIElQIHN1Ym5ldCkuCisKKyhDb250cmlidXRlZCBieSBHb29nbGUgYW5kIFBldGVyIE1vb2R5IGluIDpwZXA6YDMxNDRgKQorCitsem1hCistLS0tCisKK1RoZSBuZXdseS1hZGRlZCA6bW9kOmBsem1hYCBtb2R1bGUgcHJvdmlkZXMgZGF0YSBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbgordXNpbmcgdGhlIExaTUEgYWxnb3JpdGhtLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgdGhlIGBgLnh6YGAgYW5kIGBgLmx6bWFgYAorZmlsZSBmb3JtYXRzLgorCisoQ29udHJpYnV0ZWQgYnkgTmFkZWVtIFZhd2RhIGFuZCBQZXIgw5h5dmluZCBLYXJsc2VuIGluIDppc3N1ZTpgNjcxNWApCisKKworSW1wcm92ZWQgTW9kdWxlcworPT09PT09PT09PT09PT09PQorCithYmMKKy0tLQorCitJbXByb3ZlZCBzdXBwb3J0IGZvciBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgY29udGFpbmluZyBkZXNjcmlwdG9ycyBjb21wb3NlZCB3aXRoCithYnN0cmFjdCBtZXRob2RzLiBUaGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggdG8gZGVjbGFyaW5nIGFic3RyYWN0IGRlc2NyaXB0b3JzIGlzCitub3cgdG8gcHJvdmlkZSA6YXR0cjpgX19pc2Fic3RyYWN0bWV0aG9kX19gIGFzIGEgZHluYW1pY2FsbHkgdXBkYXRlZAorcHJvcGVydHkuIFRoZSBidWlsdC1pbiBkZXNjcmlwdG9ycyBoYXZlIGJlZW4gdXBkYXRlZCBhY2NvcmRpbmdseS4KKworICAqIDpjbGFzczpgYWJjLmFic3RyYWN0cHJvcGVydHlgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZSA6Y2xhc3M6YHByb3BlcnR5YAorICAgIHdpdGggOmZ1bmM6YGFiYy5hYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kYCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UKKyAgICA6Y2xhc3M6YGNsYXNzbWV0aG9kYCB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3RzdGF0aWNtZXRob2RgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZQorICAgIDpjbGFzczpgc3RhdGljbWV0aG9kYCB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisKKyhDb250cmlidXRlZCBieSBEYXJyZW4gRGFsZSBpbiA6aXNzdWU6YDExNjEwYCkKKworYXJyYXkKKy0tLS0tCisKK1RoZSA6bW9kOmBhcnJheWAgbW9kdWxlIHN1cHBvcnRzIHRoZSA6Yzp0eXBlOmBsb25nIGxvbmdgIHR5cGUgdXNpbmcgYGBxYGAgYW5kCitgYFFgYCB0eXBlIGNvZGVzLgorCisoQ29udHJpYnV0ZWQgYnkgT3JlbiBUaXJvc2ggYW5kIEhpcm9rYXp1IFlhbWFtb3RvIGluIDppc3N1ZTpgMTE3MjcxMWApCisKKworYmFzZTY0LCBiaW5hc2NpaQorLS0tLS0tLS0tLS0tLS0tLQorCitBU0NJSS1vbmx5IFVuaWNvZGUgc3RyaW5ncyBhcmUgbm93IGFjY2VwdGVkIGJ5IHRoZSBkZWNvZGluZyBmdW5jdGlvbnMgb2YgdGhlCittb2Rlcm4gaW50ZXJmYWNlLiBGb3IgZXhhbXBsZSwgYGBiYXNlNjQuYjY0ZGVjb2RlKCdZV0pqJylgYCByZXR1cm5zIGBgYidhYmMnYGAuCisKKworYnoyCistLS0KKworVGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGhhcyBiZWVuIHJld3JpdHRlbiBmcm9tIHNjcmF0Y2guIEluIHRoZSBwcm9jZXNzLCBzZXZlcmFsCituZXcgZmVhdHVyZXMgaGF2ZSBiZWVuIGFkZGVkOgorCisqIE5ldyA6ZnVuYzpgYnoyLm9wZW5gIGZ1bmN0aW9uOiBvcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvcgorICB0ZXh0IG1vZGUuCisKKyogOmNsYXNzOmBiejIuQloyRmlsZWAgY2FuIG5vdyByZWFkIGZyb20gYW5kIHdyaXRlIHRvIGFyYml0cmFyeSBmaWxlLWxpa2UKKyAgb2JqZWN0cywgYnkgbWVhbnMgb2YgaXRzIGNvbnN0cnVjdG9yJ3MgKmZpbGVvYmoqIGFyZ3VtZW50LgorCisgIChDb250cmlidXRlZCBieSBOYWRlZW0gVmF3ZGEgaW4gOmlzc3VlOmA1ODYzYCkKKworKiA6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCBhbmQgOmZ1bmM6YGJ6Mi5kZWNvbXByZXNzYCBjYW4gbm93IGRlY29tcHJlc3MKKyAgbXVsdGktc3RyZWFtIGlucHV0cyAoc3VjaCBhcyB0aG9zZSBwcm9kdWNlZCBieSB0aGUgOnByb2dyYW06YHBiemlwMmAgdG9vbCkuCisgIDpjbGFzczpgYnoyLkJaMkZpbGVgIGNhbiBub3cgYWxzbyBiZSB1c2VkIHRvIGNyZWF0ZSB0aGlzIHR5cGUgb2YgZmlsZSwgdXNpbmcKKyAgdGhlIGBgJ2EnYGAgKGFwcGVuZCkgbW9kZS4KKworICAoQ29udHJpYnV0ZWQgYnkgTmlyIEFpZGVzIGluIDppc3N1ZTpgMTYyNWApCisKKyogOmNsYXNzOmBiejIuQloyRmlsZWAgbm93IGltcGxlbWVudHMgYWxsIG9mIHRoZSA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCBBUEksCisgIGV4Y2VwdCBmb3IgdGhlIDptZXRoOmBkZXRhY2hgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIG1ldGhvZHMuCisKKworY29kZWNzCistLS0tLS0KKworVGhlIDptb2Q6YH5lbmNvZGluZ3MubWJjc2AgY29kZWMgaGFzIGJlZW4gcmV3cml0dGVuIHRvIGhhbmRsZSBjb3JyZWN0bHkKK2BgcmVwbGFjZWBgIGFuZCBgYGlnbm9yZWBgIGVycm9yIGhhbmRsZXJzIG9uIGFsbCBXaW5kb3dzIHZlcnNpb25zLiAgVGhlCis6bW9kOmB+ZW5jb2RpbmdzLm1iY3NgIGNvZGVjIG5vdyBzdXBwb3J0cyBhbGwgZXJyb3IgaGFuZGxlcnMsIGluc3RlYWQgb2Ygb25seQorYGByZXBsYWNlYGAgdG8gZW5jb2RlIGFuZCBgYGlnbm9yZWBgIHRvIGRlY29kZS4KKworQSBuZXcgV2luZG93cy1vbmx5IGNvZGVjIGhhcyBiZWVuIGFkZGVkOiBgYGNwNjUwMDFgYCAoOmlzc3VlOmAxMzIxNmApLiBJdCBpcyB0aGUKK1dpbmRvd3MgY29kZSBwYWdlIDY1MDAxIChXaW5kb3dzIFVURi04LCBgYENQX1VURjhgYCkuICBGb3IgZXhhbXBsZSwgaXQgaXMgdXNlZAorYnkgYGBzeXMuc3Rkb3V0YGAgaWYgdGhlIGNvbnNvbGUgb3V0cHV0IGNvZGUgcGFnZSBpcyBzZXQgdG8gY3A2NTAwMSAoZS5nLiwgdXNpbmcKK2BgY2hjcCA2NTAwMWBgIGNvbW1hbmQpLgorCitNdWx0aWJ5dGUgQ0pLIGRlY29kZXJzIG5vdyByZXN5bmNocm9uaXplIGZhc3Rlci4gIFRoZXkgb25seSBpZ25vcmUgdGhlIGZpcnN0CitieXRlIG9mIGFuIGludmFsaWQgYnl0ZSBzZXF1ZW5jZS4gRm9yIGV4YW1wbGUsIGBgYidceGZmXG4nLmRlY29kZSgnZ2IyMzEyJywKKydyZXBsYWNlJylgYCBub3cgcmV0dXJucyBhIGBgXG5gYCBhZnRlciB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyLgorCisoOmlzc3VlOmAxMjAxNmApCisKK0luY3JlbWVudGFsIENKSyBjb2RlYyBlbmNvZGVycyBhcmUgbm8gbG9uZ2VyIHJlc2V0IGF0IGVhY2ggY2FsbCB0byB0aGVpcgorZW5jb2RlKCkgbWV0aG9kcy4gRm9yIGV4YW1wbGU6OgorCisgICAgJCAuL3B5dGhvbiAtcQorICAgID4+PiBpbXBvcnQgY29kZWNzCisgICAgPj4+IGVuY29kZXIgPSBjb2RlY3MuZ2V0aW5jcmVtZW50YWxlbmNvZGVyKCdoeicpKCdzdHJpY3QnKQorICAgID4+PiBiJycuam9pbihlbmNvZGVyLmVuY29kZSh4KSBmb3IgeCBpbiAnXHU1MmZmXHU2NWJkXHU2NWJjXHU0ZWJhXHUzMDAyIEJ5ZS4nKQorICAgIGInfntOcEopbDZISyEjfn0gQnllLicKKworVGhpcyBleGFtcGxlIGdpdmVzIGBgYid+e05wfn1+e0opfn1+e2w2fn1+e0hLfn1+eyEjfn0gQnllLidgYCB3aXRoIG9sZGVyIFB5dGhvbgordmVyc2lvbnMuCisKKyg6aXNzdWU6YDEyMTAwYCkKKworVGhlIGBgdW5pY29kZV9pbnRlcm5hbGBgIGNvZGVjIGhhcyBiZWVuIGRlcHJlY2F0ZWQuCisKKworY29sbGVjdGlvbnMKKy0tLS0tLS0tLS0tCisKK0FkZGl0aW9uIG9mIGEgbmV3IDpjbGFzczpgfmNvbGxlY3Rpb25zLkNoYWluTWFwYCBjbGFzcyB0byBhbGxvdyB0cmVhdGluZyBhCitudW1iZXIgb2YgbWFwcGluZ3MgYXMgYSBzaW5nbGUgdW5pdC4KKworKFdyaXR0ZW4gYnkgUmF5bW9uZCBIZXR0aW5nZXIgZm9yIDppc3N1ZTpgMTEwODlgLCBtYWRlIHB1YmxpYyBpbgorOmlzc3VlOmAxMTI5N2ApCisKK1RoZSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgaGF2ZSBiZWVuIG1vdmVkIGluIGEgbmV3IDptb2Q6YGNvbGxlY3Rpb25zLmFiY2AKK21vZHVsZSwgdG8gYmV0dGVyIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0aGUgYWJzdHJhY3QgYW5kIHRoZSBjb25jcmV0ZQorY29sbGVjdGlvbnMgY2xhc3Nlcy4gIEFsaWFzZXMgZm9yIEFCQ3MgYXJlIHN0aWxsIHByZXNlbnQgaW4gdGhlCis6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlIHRvIHByZXNlcnZlIGV4aXN0aW5nIGltcG9ydHMuCisKKyg6aXNzdWU6YDExMDg1YCkKKworLi4gWFhYIGFkZGl0aW9uIG9mIF9fc2xvdHNfXyB0byBBQkNzIG5vdCByZWNvcmRlZCBoZXJlOiBpbnRlcm5hbCBkZXRhaWwKKworCitjb250ZXh0bGliCistLS0tLS0tLS0tCisKKzpjbGFzczpgfmNvbGxlY3Rpb25zLkV4aXRTdGFja2Agbm93IHByb3ZpZGVzIGEgc29saWQgZm91bmRhdGlvbiBmb3IKK3Byb2dyYW1tYXRpYyBtYW5pcHVsYXRpb24gb2YgY29udGV4dCBtYW5hZ2VycyBhbmQgc2ltaWxhciBjbGVhbnVwCitmdW5jdGlvbmFsaXR5LiBVbmxpa2UgdGhlIHByZXZpb3VzIGBgY29udGV4dGxpYi5uZXN0ZWRgYCBBUEkgKHdoaWNoIHdhcworZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCksIHRoZSBuZXcgQVBJIGlzIGRlc2lnbmVkIHRvIHdvcmsgY29ycmVjdGx5CityZWdhcmRsZXNzIG9mIHdoZXRoZXIgY29udGV4dCBtYW5hZ2VycyBhY3F1aXJlIHRoZWlyIHJlc291cmNlcyBpbgordGhlaXIgYGBfX2luaXRfX2BgIG1ldGhvZCAoZm9yIGV4YW1wbGUsIGZpbGUgb2JqZWN0cykgb3IgaW4gdGhlaXIKK2BgX19lbnRlcl9fYGAgbWV0aG9kIChmb3IgZXhhbXBsZSwgc3luY2hyb25pc2F0aW9uIG9iamVjdHMgZnJvbSB0aGUKKzptb2Q6YHRocmVhZGluZ2AgbW9kdWxlKS4KKworKDppc3N1ZTpgMTM1ODVgKQorCisKK2NyeXB0CistLS0tLQorCitBZGRpdGlvbiBvZiBzYWx0IGFuZCBtb2R1bGFyIGNyeXB0IGZvcm1hdCAoaGFzaGluZyBtZXRob2QpIGFuZCB0aGUgOmZ1bmM6YH5jcnlwdC5ta3NhbHRgCitmdW5jdGlvbiB0byB0aGUgOm1vZDpgY3J5cHRgIG1vZHVsZS4KKworKDppc3N1ZTpgMTA5MjRgKQorCitjdXJzZXMKKy0tLS0tLQorCisgKiBJZiB0aGUgOm1vZDpgY3Vyc2VzYCBtb2R1bGUgaXMgbGlua2VkIHRvIHRoZSBuY3Vyc2VzdyBsaWJyYXJ5LCB1c2UgVW5pY29kZQorICAgZnVuY3Rpb25zIHdoZW4gVW5pY29kZSBzdHJpbmdzIG9yIGNoYXJhY3RlcnMgYXJlIHBhc3NlZCAoZS5nLgorICAgOmM6ZnVuYzpgd2FkZHdzdHJgKSwgYW5kIGJ5dGVzIGZ1bmN0aW9ucyBvdGhlcndpc2UgKGUuZy4gOmM6ZnVuYzpgd2FkZHN0cmApLgorICogVXNlIHRoZSBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZiBgYHV0Zi04YGAgdG8gZW5jb2RlIFVuaWNvZGUgc3RyaW5ncy4KKyAqIDpjbGFzczpgY3Vyc2VzLndpbmRvd2AgaGFzIGEgbmV3IDphdHRyOmBjdXJzZXMud2luZG93LmVuY29kaW5nYCBhdHRyaWJ1dGUuCisgKiBUaGUgOmNsYXNzOmBjdXJzZXMud2luZG93YCBjbGFzcyBoYXMgYSBuZXcgOm1ldGg6YH5jdXJzZXMud2luZG93LmdldF93Y2hgCisgICBtZXRob2QgdG8gZ2V0IGEgd2lkZSBjaGFyYWN0ZXIKKyAqIFRoZSA6bW9kOmBjdXJzZXNgIG1vZHVsZSBoYXMgYSBuZXcgOm1ldGg6YH5jdXJzZXMudW5nZXRfd2NoYCBmdW5jdGlvbiB0bworICAgcHVzaCBhIHdpZGUgY2hhcmFjdGVyIHNvIHRoZSBuZXh0IDptZXRoOmB+Y3Vyc2VzLndpbmRvdy5nZXRfd2NoYCB3aWxsIHJldHVybgorICAgaXQKKworKENvbnRyaWJ1dGVkIGJ5IEnDsWlnbyBTZXJuYSBpbiA6aXNzdWU6YDY3NTVgKQorCitkYXRldGltZQorLS0tLS0tLS0KKworICogRXF1YWxpdHkgY29tcGFyaXNvbnMgYmV0d2VlbiBuYWl2ZSBhbmQgYXdhcmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgCisgICBpbnN0YW5jZXMgZG9uJ3QgcmFpc2UgOmV4YzpgVHlwZUVycm9yYC4KKyAqIE5ldyA6bWV0aDpgZGF0ZXRpbWUuZGF0ZXRpbWUudGltZXN0YW1wYCBtZXRob2Q6IFJldHVybiBQT1NJWCB0aW1lc3RhbXAKKyAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZS4KKyAqIFRoZSA6bWV0aDpgZGF0ZXRpbWUuZGF0ZXRpbWUuc3RyZnRpbWVgIG1ldGhvZCBzdXBwb3J0cyBmb3JtYXR0aW5nIHllYXJzCisgICBvbGRlciB0aGFuIDEwMDAuCisgKiBYWFggVGhlIDptZXRoOmBkYXRldGltZS5kYXRldGltZS5hc3RpbWV6b25lYCBtZXRob2QgY2FuIG5vdyBiZQorICAgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzIHRvIGNvbnZlcnQgZGF0ZXRpbWUgaW5zdGFuY2UgdG8gdGhlIHN5c3RlbQorICAgdGltZXpvbmUuCisKK2RlY2ltYWwKKy0tLS0tLS0KKworOmlzc3VlOmA3NjUyYCAtIGludGVncmF0ZSBmYXN0IG5hdGl2ZSBkZWNpbWFsIGFyaXRobWV0aWMuCisgICBDLW1vZHVsZSBhbmQgbGlibXBkZWMgd3JpdHRlbiBieSBTdGVmYW4gS3JhaC4KKworVGhlIG5ldyBDIHZlcnNpb24gb2YgdGhlIGRlY2ltYWwgbW9kdWxlIGludGVncmF0ZXMgdGhlIGhpZ2ggc3BlZWQgbGlibXBkZWMKK2xpYnJhcnkgZm9yIGFyYml0cmFyeSBwcmVjaXNpb24gY29ycmVjdGx5LXJvdW5kZWQgZGVjaW1hbCBmbG9hdGluZyBwb2ludAorYXJpdGhtZXRpYy4gbGlibXBkZWMgY29uZm9ybXMgdG8gSUJNJ3MgR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbi4KKworUGVyZm9ybWFuY2UgZ2FpbnMgcmFuZ2UgZnJvbSAxMHggZm9yIGRhdGFiYXNlIGFwcGxpY2F0aW9ucyB0byAxMDB4IGZvcgorbnVtZXJpY2FsbHkgaW50ZW5zaXZlIGFwcGxpY2F0aW9ucy4gVGhlc2UgbnVtYmVycyBhcmUgZXhwZWN0ZWQgZ2FpbnMKK2ZvciBzdGFuZGFyZCBwcmVjaXNpb25zIHVzZWQgaW4gZGVjaW1hbCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljLiBTaW5jZQordGhlIHByZWNpc2lvbiBpcyB1c2VyIGNvbmZpZ3VyYWJsZSwgdGhlIGV4YWN0IGZpZ3VyZXMgbWF5IHZhcnkuIEZvciBleGFtcGxlLAoraW4gaW50ZWdlciBiaWdudW0gYXJpdGhtZXRpYyB0aGUgZGlmZmVyZW5jZXMgY2FuIGJlIHNpZ25pZmljYW50bHkgaGlnaGVyLgorCitUaGUgZm9sbG93aW5nIHRhYmxlIGlzIG1lYW50IGFzIGFuIGlsbHVzdHJhdGlvbi4gQmVuY2htYXJrcyBhcmUgYXZhaWxhYmxlCithdCBodHRwOi8vd3d3LmJ5dGVyZWVmLm9yZy9tcGRlY2ltYWwvcXVpY2tzdGFydC5odG1sLgorCisgICArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgICAgICB8ICBkZWNpbWFsLnB5IHwgICBfZGVjaW1hbCAgIHwgICBzcGVlZHVwICAgfAorICAgKz09PT09PT09PSs9PT09PT09PT09PT09Kz09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rCisgICB8ICAgcGkgICAgfCAgICAzOC44OXMgICB8ICAgIDAuMzhzICAgICB8ICAgIDEwMHggICAgIHwKKyAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKworICAgfCB0ZWxjbyAgIHwgICAxNzIuMTlzICAgfCAgICA1LjY4cyAgICAgfCAgICAgMzB4ICAgICB8CisgICArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKKyAgIHwgcHN5Y29wZyB8ICAgICAzLjU3cyAgIHwgICAgMC4yOXMgICAgIHwgICAgIDEyeCAgICAgfAorICAgKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCisKK0ZlYXR1cmVzCit+fn5+fn5+fgorCisqIFRoZSA6ZXhjOmB+ZGVjaW1hbC5GbG9hdE9wZXJhdGlvbmAgc2lnbmFsIG9wdGlvbmFsbHkgZW5hYmxlcyBzdHJpY3RlcgorICBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgorCisqIElmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHMsIHRoZSBDIHZlcnNpb24gYXV0b21hdGljYWxseQorICBkaXNhYmxlcyB0aGUgZXhwZW5zaXZlIHRocmVhZCBsb2NhbCBjb250ZXh0IG1hY2hpbmVyeS4gSW4gdGhpcyBjYXNlLAorICB0aGUgdmFyaWFibGUgOmRhdGE6YH5kZWNpbWFsLkhBVkVfVEhSRUFEU2AgaXMgc2V0IHRvIEZhbHNlLgorCitBUEkgY2hhbmdlcworfn5+fn5+fn5+fn4KKworKiBUaGUgQyBtb2R1bGUgaGFzIHRoZSBmb2xsb3dpbmcgY29udGV4dCBsaW1pdHMsIGRlcGVuZGluZyBvbiB0aGUgbWFjaGluZQorICBhcmNoaXRlY3R1cmU6CisKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgMzItYml0ICAgICAgICB8ICAgICAgICAgICAgNjQtYml0ICAgICAgICAgICAgfAorICAgKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgOmNvbnN0OmBNQVhfUFJFQ2AgfCA6Y29uc3Q6YDQyNTAwMDAwMGAgIHwgOmNvbnN0OmA5OTk5OTk5OTk5OTk5OTk5OTlgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YE1BWF9FTUFYYCB8IDpjb25zdDpgNDI1MDAwMDAwYCAgfCA6Y29uc3Q6YDk5OTk5OTk5OTk5OTk5OTk5OWAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgTUlOX0VNSU5gIHwgOmNvbnN0OmAtNDI1MDAwMDAwYCB8IDpjb25zdDpgLTk5OTk5OTk5OTk5OTk5OTk5OWAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworKiBJbiB0aGUgY29udGV4dCB0ZW1wbGF0ZXMgKDpjbGFzczpgfmRlY2ltYWwuRGVmYXVsdENvbnRleHRgLAorICA6Y2xhc3M6YH5kZWNpbWFsLkJhc2ljQ29udGV4dGAgYW5kIDpjbGFzczpgfmRlY2ltYWwuRXh0ZW5kZWRDb250ZXh0YCkKKyAgdGhlIG1hZ25pdHVkZSBvZiA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC5FbWF4YCBhbmQKKyAgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQuRW1pbmAgaGFzIGNoYW5nZWQgdG8gOmNvbnN0OmA5OTk5OTlgLgorCisqIFRoZSA6Y2xhc3M6YH5kZWNpbWFsLkRlY2ltYWxgIGNvbnN0cnVjdG9yIGluIGRlY2ltYWwucHkgZG9lcyBub3Qgb2JzZXJ2ZQorICB0aGUgY29udGV4dCBsaW1pdHMgYW5kIGNvbnZlcnRzIHZhbHVlcyB3aXRoIGFyYml0cmFyeSBleHBvbmVudHMgb3IgcHJlY2lzaW9uCisgIGV4YWN0bHkuIFNpbmNlIHRoZSBDIHZlcnNpb24gaGFzIGludGVybmFsIGxpbWl0cywgdGhlIGZvbGxvd2luZyBzY2hlbWUgaXMKKyAgdXNlZDogSWYgcG9zc2libGUsIHZhbHVlcyBhcmUgY29udmVydGVkIGV4YWN0bHksIG90aGVyd2lzZQorICA6ZXhjOmB+ZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uYCBpcyByYWlzZWQgYW5kIHRoZSByZXN1bHQgaXMgTmFOLiBJbiB0aGUKKyAgbGF0dGVyIGNhc2UgaXQgaXMgYWx3YXlzIHBvc3NpYmxlIHRvIHVzZSA6bWV0aDpgfmRlY2ltYWwuQ29udGV4dC5jcmVhdGVfZGVjaW1hbGAKKyAgaW4gb3JkZXIgdG8gb2J0YWluIGEgcm91bmRlZCBvciBpbmV4YWN0IHZhbHVlLgorCisKKyogVGhlIHBvd2VyIGZ1bmN0aW9uIGluIGRlY2ltYWwucHkgaXMgYWx3YXlzIGNvcnJlY3RseS1yb3VuZGVkLiBJbiB0aGUKKyAgQyB2ZXJzaW9uLCBpdCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIHRoZSBjb3JyZWN0bHktcm91bmRlZAorICA6bWV0aDpgfmRlY2ltYWwuRGVjaW1hbC5leHBgIGFuZCA6bWV0aDpgfmRlY2ltYWwuRGVjaW1hbC5sbmAgZnVuY3Rpb25zLAorICBidXQgdGhlIGZpbmFsIHJlc3VsdCBpcyBvbmx5ICJhbG1vc3QgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkIi4KKworCisqIEluIHRoZSBDIHZlcnNpb24sIHRoZSBjb250ZXh0IGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgc2lnbmFscyBpcyBhCisgIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AuICBGb3Igc3BlZWQgcmVhc29ucywKKyAgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQuZmxhZ3NgIGFuZCA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC50cmFwc2AgYWx3YXlzCisgIHJlZmVyIHRvIHRoZSBzYW1lIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AgdGhhdCB0aGUgY29udGV4dAorICB3YXMgaW5pdGlhbGl6ZWQgd2l0aC4gSWYgYSBuZXcgc2lnbmFsIGRpY3Rpb25hcnkgaXMgYXNzaWduZWQsCisgIDphdHRyOmB+ZGVjaW1hbC5Db250ZXh0LmZsYWdzYCBhbmQgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQudHJhcHNgCisgIGFyZSB1cGRhdGVkIHdpdGggdGhlIG5ldyB2YWx1ZXMsIGJ1dCB0aGV5IGRvIG5vdCByZWZlcmVuY2UgdGhlIFJIUworICBkaWN0aW9uYXJ5LgorCisKKyogUGlja2xpbmcgYSA6Y2xhc3M6YH5kZWNpbWFsLkNvbnRleHRgIHByb2R1Y2VzIGEgZGlmZmVyZW50IG91dHB1dCBpbiBvcmRlcgorICB0byBoYXZlIGEgY29tbW9uIGludGVyY2hhbmdlIGZvcm1hdCBmb3IgdGhlIFB5dGhvbiBhbmQgQyB2ZXJzaW9ucy4KKworCisqIFRoZSBvcmRlciBvZiBhcmd1bWVudHMgaW4gdGhlIDpjbGFzczpgfmRlY2ltYWwuQ29udGV4dGAgY29uc3RydWN0b3IgaGFzIGJlZW4KKyAgY2hhbmdlZCB0byBtYXRjaCB0aGUgb3JkZXIgZGlzcGxheWVkIGJ5IDpmdW5jOmByZXByYC4KKworCitmdHBsaWIKKy0tLS0tLQorCitUaGUgOmNsYXNzOmB+ZnRwbGliLkZUUF9UTFNgIGNsYXNzIG5vdyBwcm92aWRlcyBhIG5ldworOmZ1bmM6YH5mdHBsaWIuRlRQX1RMUy5jY2NgIGZ1bmN0aW9uIHRvIHJldmVydCBjb250cm9sIGNoYW5uZWwgYmFjayB0bworcGxhaW50ZXh0LiAgVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHRha2UgYWR2YW50YWdlIG9mIGZpcmV3YWxscyB0aGF0IGtub3cgaG93IHRvCitoYW5kbGUgTkFUIHdpdGggbm9uLXNlY3VyZSBGVFAgd2l0aG91dCBvcGVuaW5nIGZpeGVkIHBvcnRzLgorCisoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMjEzOWApCisKKworZ2MKKy0tCisKK0l0IGlzIG5vdyBwb3NzaWJsZSB0byByZWdpc3RlciBjYWxsYmFja3MgaW52b2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKK2JlZm9yZSBhbmQgYWZ0ZXIgY29sbGVjdGlvbiB1c2luZyB0aGUgbmV3IDpkYXRhOmB+Z2MuY2FsbGJhY2tzYCBsaXN0LgorCisKK2htYWMKKy0tLS0KKworQSBuZXcgOmZ1bmM6YH5obWFjLmNvbXBhcmVfZGlnZXN0YCBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCB0byBwcmV2ZW50CitzaWRlIGNoYW5uZWwgYXR0YWNrcyBvbiBkaWdlc3RzIHRocm91Z2ggdGltaW5nIGFuYWx5c2lzLgorCisoQ29udHJpYnV0ZWQgYnkgTmljayBDb2dobGFuIGFuZCBDaHJpc3RpYW4gSGVpbWVzIGluIGlzc3VlOmAxNTA2MWApCisKKworaW1hcGxpYgorLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+aW1hcGxpYi5JTUFQNF9TU0xgIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIGFuIFNTTENvbnRleHQKK3BhcmFtZXRlciB0byBjb250cm9sIHBhcmFtZXRlcnMgb2YgdGhlIHNlY3VyZSBjaGFubmVsLgorCisoQ29udHJpYnV0ZWQgYnkgU2lqaW4gSm9zZXBoIGluIDppc3N1ZTpgODgwOGApCisKKworaW5zcGVjdAorLS0tLS0tLQorCitBIG5ldyA6ZnVuYzpgfmluc3BlY3QuZ2V0Y2xvc3VyZXZhcnNgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkLiBUaGlzIGZ1bmN0aW9uCityZXBvcnRzIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgYWxsIG5hbWVzIHJlZmVyZW5jZWQgZnJvbSB0aGUgZnVuY3Rpb24gYm9keSBhbmQKK3doZXJlIHRob3NlIG5hbWVzIHdlcmUgcmVzb2x2ZWQsIG1ha2luZyBpdCBlYXNpZXIgdG8gdmVyaWZ5IGNvcnJlY3QgaW50ZXJuYWwKK3N0YXRlIHdoZW4gdGVzdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHN0YXRlZnVsIGNsb3N1cmVzLgorCisoQ29udHJpYnV0ZWQgYnkgTWVhZG9yIEluZ2UgYW5kIE5pY2sgQ29naGxhbiBpbiA6aXNzdWU6YDEzMDYyYCkKKworQSBuZXcgOmZ1bmM6YH5pbnNwZWN0LmdldGdlbmVyYXRvcmxvY2Fsc2AgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQuIFRoaXMKK2Z1bmN0aW9uIHJlcG9ydHMgdGhlIGN1cnJlbnQgYmluZGluZyBvZiBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRvcidzCitzdGFjayBmcmFtZSwgbWFraW5nIGl0IGVhc2llciB0byB2ZXJpZnkgY29ycmVjdCBpbnRlcm5hbCBzdGF0ZSB3aGVuIHRlc3RpbmcKK2dlbmVyYXRvcnMuCisKKyhDb250cmlidXRlZCBieSBNZWFkb3IgSW5nZSBpbiA6aXNzdWU6YDE1MTUzYCkKKworaW8KKy0tCisKK1RoZSA6ZnVuYzpgfmlvLm9wZW5gIGZ1bmN0aW9uIGhhcyBhIG5ldyBgYCd4J2BgIG1vZGUgdGhhdCBjYW4gYmUgdXNlZCB0bworZXhjbHVzaXZlbHkgY3JlYXRlIGEgbmV3IGZpbGUsIGFuZCByYWlzZSBhIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUKK2FscmVhZHkgZXhpc3RzLiBJdCBpcyBiYXNlZCBvbiB0aGUgQzExICd4JyBtb2RlIHRvIGZvcGVuKCkuCisKKyhDb250cmlidXRlZCBieSBEYXZpZCBUb3duc2hlbmQgaW4gOmlzc3VlOmAxMjc2MGApCisKK1RoZSBjb25zdHJ1Y3RvciBvZiB0aGUgOmNsYXNzOmB+aW8uVGV4dElPV3JhcHBlcmAgY2xhc3MgaGFzIGEgbmV3Cisqd3JpdGVfdGhyb3VnaCogb3B0aW9uYWwgYXJndW1lbnQuIElmICp3cml0ZV90aHJvdWdoKiBpcyBgYFRydWVgYCwgY2FsbHMgdG8KKzptZXRoOmB+aW8uVGV4dElPV3JhcHBlci53cml0ZWAgYXJlIGd1YXJhbnRlZWQgbm90IHRvIGJlIGJ1ZmZlcmVkOiBhbnkgZGF0YQord3JpdHRlbiBvbiB0aGUgOmNsYXNzOmB+aW8uVGV4dElPV3JhcHBlcmAgb2JqZWN0IGlzIGltbWVkaWF0ZWx5IGhhbmRsZWQgdG8gaXRzCit1bmRlcmx5aW5nIGJpbmFyeSBidWZmZXIuCisKKworbWF0aAorLS0tLQorCitUaGUgOm1vZDpgbWF0aGAgbW9kdWxlIGhhcyBhIG5ldyBmdW5jdGlvbjoKKworICAqIDpmdW5jOmB+bWF0aC5sb2cyYDogcmV0dXJuIHRoZSBiYXNlLTIgbG9nYXJpdGhtIG9mICp4KgorICAgIChXcml0dGVuIGJ5IE1hcmsgRGlja2luc29uIGluIDppc3N1ZTpgMTE4ODhgKS4KKworCittdWx0aXByb2Nlc3NpbmcKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgbmV3IDpmdW5jOmBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0YCBmdW5jdGlvbiBhbGxvd3MgdG8gcG9sbAorbXVsdGlwbGUgb2JqZWN0cyAoc3VjaCBhcyBjb25uZWN0aW9ucywgc29ja2V0cyBhbmQgcGlwZXMpIHdpdGggYSB0aW1lb3V0LgorKENvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgT3Vka2VyayBpbiA6aXNzdWU6YDEyMzI4YC4pCisKKzpjbGFzczpgbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb25gIG9iamVjdHMgY2FuIG5vdyBiZSB0cmFuc2ZlcnJlZCBvdmVyCittdWx0aXByb2Nlc3NpbmcgY29ubmVjdGlvbnMuCisoQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBPdWRrZXJrIGluIDppc3N1ZTpgNDg5MmAuKQorCisKK25udHBsaWIKKy0tLS0tLS0KKworVGhlIDpjbGFzczpgbm50cGxpYi5OTlRQYCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCB0bwordW5jb25kaXRpb25hbGx5IGNvbnN1bWUgOmV4Yzpgc29ja2V0LmVycm9yYCBleGNlcHRpb25zIGFuZCB0byBjbG9zZSB0aGUgTk5UUAorY29ubmVjdGlvbiB3aGVuIGRvbmU6OgorCisgID4+PiBmcm9tIG5udHBsaWIgaW1wb3J0IE5OVFAKKyAgPj4+IHdpdGggTk5UUCgnbmV3cy5nbWFuZS5vcmcnKSBhcyBuOgorICAuLi4gICAgIG4uZ3JvdXAoJ2dtYW5lLmNvbXAucHl0aG9uLmNvbW1pdHRlcnMnKQorICAuLi4KKyAgKCcyMTEgMTc1NSAxIDE3NTUgZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycsIDE3NTUsIDEsIDE3NTUsICdnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJykKKyAgPj4+CisKKyhDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDk3OTVgKQorCisKK29zCistLQorCisqIFRoZSA6bW9kOmBvc2AgbW9kdWxlIGhhcyBhIG5ldyA6ZnVuYzpgfm9zLnBpcGUyYCBmdW5jdGlvbiB0aGF0IG1ha2VzIGl0CisgIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIHBpcGUgd2l0aCA6ZGF0YTpgfm9zLk9fQ0xPRVhFQ2Agb3IKKyAgOmRhdGE6YH5vcy5PX05PTkJMT0NLYCBmbGFncyBzZXQgYXRvbWljYWxseS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0bworICBhdm9pZCByYWNlIGNvbmRpdGlvbnMgaW4gbXVsdGktdGhyZWFkZWQgcHJvZ3JhbXMuCisKKyogVGhlIDptb2Q6YG9zYCBtb2R1bGUgaGFzIGEgbmV3IDpmdW5jOmB+b3Muc2VuZGZpbGVgIGZ1bmN0aW9uIHdoaWNoIHByb3ZpZGVzCisgIGFuIGVmZmljZW50ICJ6ZXJvLWNvcHkiIHdheSBmb3IgY29weWluZyBkYXRhIGZyb20gb25lIGZpbGUgKG9yIHNvY2tldCkKKyAgZGVzY3JpcHRvciB0byBhbm90aGVyLiBUaGUgcGhyYXNlICJ6ZXJvLWNvcHkiIHJlZmVycyB0byB0aGUgZmFjdCB0aGF0IGFsbCBvZgorICB0aGUgY29weWluZyBvZiBkYXRhIGJldHdlZW4gdGhlIHR3byBkZXNjcmlwdG9ycyBpcyBkb25lIGVudGlyZWx5IGJ5IHRoZQorICBrZXJuZWwsIHdpdGggbm8gY29weWluZyBvZiBkYXRhIGludG8gdXNlcnNwYWNlIGJ1ZmZlcnMuIDpmdW5jOmB+b3Muc2VuZGZpbGVgCisgIGNhbiBiZSB1c2VkIHRvIGVmZmljaWVudGx5IGNvcHkgZGF0YSBmcm9tIGEgZmlsZSBvbiBkaXNrIHRvIGEgbmV0d29yayBzb2NrZXQsCisgIGUuZy4gZm9yIGRvd25sb2FkaW5nIGEgZmlsZS4KKworICAoUGF0Y2ggc3VibWl0dGVkIGJ5IFJvc3MgTGFnZXJ3YWxsIGFuZCBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDEwODgyYC4pCisKKyogVG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIGxpa2Ugc3ltbGluayBhdHRhY2tzIGFuZCBpc3N1ZXMgd2l0aCB0ZW1wb3JhcnkKKyAgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLCBpdCBpcyBtb3JlIHJlbGlhYmxlIChhbmQgYWxzbyBmYXN0ZXIpIHRvIG1hbmlwdWxhdGUKKyAgZmlsZSBkZXNjcmlwdG9ycyBpbnN0ZWFkIG9mIGZpbGUgbmFtZXMuIFB5dGhvbiAzLjMgZW5oYW5jZXMgZXhpc3RpbmcgZnVuY3Rpb25zCisgIGFuZCBpbnRyb2R1Y2VzIG5ldyBmdW5jdGlvbnMgdG8gd29yayBvbiBmaWxlIGRlc2NyaXB0b3JzICg6aXNzdWU6YDQ3NjFgLAorICA6aXNzdWU6YDEwNzU1YCkuCisKKyAgLSBUaGUgOm1vZDpgb3NgIG1vZHVsZSBoYXMgYSBuZXcgOmZ1bmM6YH5vcy5md2Fsa2AgZnVuY3Rpb24gc2ltaWxhciB0bworICAgIDpmdW5jOmB+b3Mud2Fsa2AgZXhjZXB0IHRoYXQgaXQgYWxzbyB5aWVsZHMgZmlsZSBkZXNjcmlwdG9ycyByZWZlcnJpbmcgdG8gdGhlCisgICAgZGlyZWN0b3JpZXMgdmlzaXRlZC4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0byBhdm9pZCBzeW1saW5rIHJhY2VzLgorCisgIC0gVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgZ2V0IG5ldyBvcHRpb25hbCAqZGlyX2ZkKiAoOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8KKyAgICBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gKSBhbmQvb3IgKmZvbGxvd19zeW1saW5rcyogKDpyZWY6YG5vdAorICAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmApOgorICAgIDpmdW5jOmB+b3MuYWNjZXNzYCwgOmZ1bmM6YH5vcy5jaGZsYWdzYCwgOmZ1bmM6YH5vcy5jaG1vZGAsIDpmdW5jOmB+b3MuY2hvd25gLAorICAgIDpmdW5jOmB+b3MubGlua2AsIDpmdW5jOmB+b3MubHN0YXRgLCA6ZnVuYzpgfm9zLm1rZGlyYCwgOmZ1bmM6YH5vcy5ta2ZpZm9gLAorICAgIDpmdW5jOmB+b3MubWtub2RgLCA6ZnVuYzpgfm9zLm9wZW5gLCA6ZnVuYzpgfm9zLnJlYWRsaW5rYCwgOmZ1bmM6YH5vcy5yZW1vdmVgLAorICAgIDpmdW5jOmB+b3MucmVuYW1lYCwgOmZ1bmM6YH5vcy5yZXBsYWNlYCwgOmZ1bmM6YH5vcy5ybWRpcmAsIDpmdW5jOmB+b3Muc3RhdGAsCisgICAgOmZ1bmM6YH5vcy5zeW1saW5rYCwgOmZ1bmM6YH5vcy51bmxpbmtgLCA6ZnVuYzpgfm9zLnV0aW1lYC4KKworICAtIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IGEgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGVpciBwYXRoIGFyZ3VtZW50OgorICAgIDpmdW5jOmB+b3MuY2hkaXJgLCA6ZnVuYzpgfm9zLmNobW9kYCwgOmZ1bmM6YH5vcy5jaG93bmAsCisgICAgOmZ1bmM6YH5vcy5leGVjdmVgLCA6ZnVuYzpgfm9zLmxpc3RkaXJgLCA6ZnVuYzpgfm9zLnBhdGhjb25mYCwgOmZ1bmM6YH5vcy5wYXRoLmV4aXN0c2AsCisgICAgOmZ1bmM6YH5vcy5zdGF0YCwgOmZ1bmM6YH5vcy5zdGF0dmZzYCwgOmZ1bmM6YH5vcy51dGltZWAuCisKKyogVGhlIDptb2Q6YG9zYCBtb2R1bGUgaGFzIHR3byBuZXcgZnVuY3Rpb25zOiA6ZnVuYzpgfm9zLmdldHByaW9yaXR5YCBhbmQKKyAgOmZ1bmM6YH5vcy5zZXRwcmlvcml0eWAuIFRoZXkgY2FuIGJlIHVzZWQgdG8gZ2V0IG9yIHNldCBwcm9jZXNzCisgIG5pY2VuZXNzL3ByaW9yaXR5IGluIGEgZmFzaGlvbiBzaW1pbGFyIHRvIDpmdW5jOmBvcy5uaWNlYCBidXQgZXh0ZW5kZWQgdG8gYWxsCisgIHByb2Nlc3NlcyBpbnN0ZWFkIG9mIGp1c3QgdGhlIGN1cnJlbnQgb25lLgorCisgIChQYXRjaCBzdWJtaXR0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMDc4NGAuKQorCisqIFRoZSBuZXcgOmZ1bmM6YG9zLnJlcGxhY2VgIGZ1bmN0aW9uIGFsbG93cyBjcm9zcy1wbGF0Zm9ybSByZW5hbWluZyBvZiBhCisgIGZpbGUgd2l0aCBvdmVyd3JpdGluZyB0aGUgZGVzdGluYXRpb24uICBXaXRoIDpmdW5jOmBvcy5yZW5hbWVgLCBhbiBleGlzdGluZworICBkZXN0aW5hdGlvbiBmaWxlIGlzIG92ZXJ3cml0dGVuIHVuZGVyIFBPU0lYLCBidXQgcmFpc2VzIGFuIGVycm9yIHVuZGVyCisgIFdpbmRvd3MuCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDg4MjhgLikKKworKiBUaGUgbmV3IDpmdW5jOmBvcy5nZXRfdGVybWluYWxfc2l6ZWAgZnVuY3Rpb24gcXVlcmllcyB0aGUgc2l6ZSBvZiB0aGUKKyAgdGVybWluYWwgYXR0YWNoZWQgdG8gYSBmaWxlIGRlc2NyaXB0b3IuIFNlZSBhbHNvCisgIDpmdW5jOmBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemVgLgorICAoQ29udHJpYnV0ZWQgYnkgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1layBpbiA6aXNzdWU6YDEzNjA5YC4pCisKKy4uIFhYWCBzb3J0IG91dCB0aGlzIG1lc3MgYWZ0ZXIgYmV0YTEKKworKiBOZXcgZnVuY3Rpb25zIHRvIHN1cHBvcnQgTGludXggZXh0ZW5kZWQgYXR0cmlidXRlcyAoOmlzc3VlOmAxMjcyMGApOgorICA6ZnVuYzpgfm9zLmdldHhhdHRyYCwgOmZ1bmM6YH5vcy5saXN0eGF0dHJgLCA6ZnVuYzpgfm9zLnJlbW92ZXhhdHRyYCwKKyAgOmZ1bmM6YH5vcy5zZXR4YXR0cmAuCisKKyogTmV3IGludGVyZmFjZSB0byB0aGUgc2NoZWR1bGVyLiBUaGVzZSBmdW5jdGlvbnMKKyAgY29udHJvbCBob3cgYSBwcm9jZXNzIGlzIGFsbG9jYXRlZCBDUFUgdGltZSBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gTmV3CisgIGZ1bmN0aW9uczoKKyAgOmZ1bmM6YH5vcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWF4YCwgOmZ1bmM6YH5vcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWluYCwKKyAgOmZ1bmM6YH5vcy5zY2hlZF9nZXRhZmZpbml0eWAsIDpmdW5jOmB+b3Muc2NoZWRfZ2V0cGFyYW1gLAorICA6ZnVuYzpgfm9zLnNjaGVkX2dldHNjaGVkdWxlcmAsIDpmdW5jOmB+b3Muc2NoZWRfcnJfZ2V0X2ludGVydmFsYCwKKyAgOmZ1bmM6YH5vcy5zY2hlZF9zZXRhZmZpbml0eWAsIDpmdW5jOmB+b3Muc2NoZWRfc2V0cGFyYW1gLAorICA6ZnVuYzpgfm9zLnNjaGVkX3NldHNjaGVkdWxlcmAsIDpmdW5jOmB+b3Muc2NoZWRfeWllbGRgLAorCisqIE5ldyBmdW5jdGlvbnMgdG8gY29udHJvbCB0aGUgZmlsZSBzeXN0ZW06CisKKyAgKiA6ZnVuYzpgfm9zLnBvc2l4X2ZhZHZpc2VgOiBBbm5vdW5jZXMgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEKKyAgICBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmcgdGhlIGtlcm5lbCB0byBtYWtlIG9wdGltaXphdGlvbnMuCisgICogOmZ1bmM6YH5vcy5wb3NpeF9mYWxsb2NhdGVgOiBFbnN1cmVzIHRoYXQgZW5vdWdoIGRpc2sgc3BhY2UgaXMgYWxsb2NhdGVkCisgICAgZm9yIGEgZmlsZS4KKyAgKiA6ZnVuYzpgfm9zLnN5bmNgOiBGb3JjZSB3cml0ZSBvZiBldmVyeXRoaW5nIHRvIGRpc2suCisKKyogQWRkIHNvbWUgZXh0cmEgcG9zaXggZnVuY3Rpb25zIHRvIHRoZSBvcyBtb2R1bGU6CisKKyAgKiA6ZnVuYzpgfm9zLmxvY2tmYDogQXBwbHksIHRlc3Qgb3IgcmVtb3ZlIGEgUE9TSVggbG9jayBvbiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgKiA6ZnVuYzpgfm9zLnByZWFkYDogUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGF0IGFuIG9mZnNldCwgdGhlIGZpbGUKKyAgICBvZmZzZXQgcmVtYWlucyB1bmNoYW5nZWQuCisgICogOmZ1bmM6YH5vcy5wd3JpdGVgOiBXcml0ZSB0byBhIGZpbGUgZGVzY3JpcHRvciBmcm9tIGFuIG9mZnNldCwgbGVhdmluZworICAgIHRoZSBmaWxlIG9mZnNldCB1bmNoYW5nZWQuCisgICogOmZ1bmM6YH5vcy5yZWFkdmA6IFJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBpbnRvIGEgbnVtYmVyIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuCisgICogOmZ1bmM6YH5vcy50cnVuY2F0ZWA6IFRydW5jYXRlIHRoZSBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gKnBhdGgqLCBzbyB0aGF0CisgICAgaXQgaXMgYXQgbW9zdCAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLgorICAqIDpmdW5jOmB+b3Mud2FpdGlkYDogV2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygb25lIG9yIG1vcmUgY2hpbGQgcHJvY2Vzc2VzLgorICAqIDpmdW5jOmB+b3Mud3JpdGV2YDogV3JpdGUgdGhlIGNvbnRlbnRzIG9mICpidWZmZXJzKiB0byBhIGZpbGUgZGVzY3JpcHRvciwKKyAgICB3aGVyZSAqYnVmZmVycyogaXMgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIG9mIGJ1ZmZlcnMuCisgICogOmZ1bmM6YH5vcy5nZXRncm91cGxpc3RgICg6aXNzdWU6YDkzNDRgKTogUmV0dXJuIGxpc3Qgb2YgZ3JvdXAgaWRzIHRoYXQKKyAgICBzcGVjaWZpZWQgdXNlciBiZWxvbmdzIHRvLgorCisqIDpmdW5jOmB+b3MudGltZXNgIGFuZCA6ZnVuYzpgfm9zLnVuYW1lYDogUmV0dXJuIHR5cGUgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8KKyAgYSB0dXBsZS1saWtlIG9iamVjdCB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMuCisKKworcGRiCistLS0KKworKiBUYWItY29tcGxldGlvbiBpcyBub3cgYXZhaWxhYmxlIG5vdCBvbmx5IGZvciBjb21tYW5kIG5hbWVzLCBidXQgYWxzbyB0aGVpcgorICBhcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgZm9yIHRoZSBgYGJyZWFrYGAgY29tbWFuZCwgZnVuY3Rpb24gYW5kIGZpbGUgbmFtZXMKKyAgYXJlIGNvbXBsZXRlZC4gIChDb250cmlidXRlZCBieSBHZW9yZyBCcmFuZGwgaW4gOmlzc3VlOmAxNDIxMGApCisKKworcGlja2xlCistLS0tLS0KKworOmNsYXNzOmBwaWNrbGUuUGlja2xlcmAgb2JqZWN0cyBub3cgaGF2ZSBhbiBvcHRpb25hbAorOmF0dHI6YH5waWNrbGUuUGlja2xlci5kaXNwYXRjaF90YWJsZWAgYXR0cmlidXRlIGFsbG93aW5nIHRvIHNldCBwZXItcGlja2xlcgorcmVkdWN0aW9uIGZ1bmN0aW9ucy4KKyhDb250cmlidXRlZCBieSBSaWNoYXJkIE91ZGtlcmsgaW4gOmlzc3VlOmAxNDE2NmAuKQorCisKK3B5ZG9jCistLS0tLQorCitUaGUgVGsgR1VJIGFuZCB0aGUgOmZ1bmM6YH5weWRvYy5zZXJ2ZWAgZnVuY3Rpb24gaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUKKzptb2Q6YHB5ZG9jYCBtb2R1bGU6IGBgcHlkb2MgLWdgYCBhbmQgOmZ1bmM6YH5weWRvYy5zZXJ2ZWAgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQKK2luIFB5dGhvbiAzLjIuCisKKworcmUKKy0tCisKKzpjbGFzczpgc3RyYCByZWd1bGFyIGV4cHJlc3Npb25zIG5vdyBzdXBwb3J0IGBgXHVgYCBhbmQgYGBcVWBgIGVzY2FwZXMuCisKKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMzY2NWAuKQorCisKK3NjaGVkCistLS0tLQorCisqIDptZXRoOmB+c2NoZWQuc2NoZWR1bGVyLnJ1bmAgbm93IGFjY2VwdHMgYSAqYmxvY2tpbmcqIHBhcmFtZXRlciB3aGljaCB3aGVuCisgIHNldCB0byBGYWxzZSBtYWtlcyB0aGUgbWV0aG9kIGV4ZWN1dGUgdGhlIHNjaGVkdWxlZCBldmVudHMgZHVlIHRvIGV4cGlyZQorICBzb29uZXN0IChpZiBhbnkpIGFuZCB0aGVuIHJldHVybiBpbW1lZGlhdGVseS4KKyAgVGhpcyBpcyB1c2VmdWwgaW4gY2FzZSB5b3Ugd2FudCB0byB1c2UgdGhlIDpjbGFzczpgfnNjaGVkLnNjaGVkdWxlcmAgaW4KKyAgbm9uLWJsb2NraW5nIGFwcGxpY2F0aW9ucy4gIChDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDEzNDQ5YCkKKworKiA6Y2xhc3M6YH5zY2hlZC5zY2hlZHVsZXJgIGNsYXNzIGNhbiBub3cgYmUgc2FmZWx5IHVzZWQgaW4gbXVsdGktdGhyZWFkZWQKKyAgZW52aXJvbm1lbnRzLiAgKENvbnRyaWJ1dGVkIGJ5IEpvc2lhaCBDYXJsc29uIGFuZCBHaWFtcGFvbG8gUm9kb2zDoCBpbgorICA6aXNzdWU6YDg2ODRgKQorCisqICp0aW1lZnVuYyogYW5kICpkZWxheWZ1bmN0KiBwYXJhbWV0ZXJzIG9mIDpjbGFzczpgfnNjaGVkLnNjaGVkdWxlcmAgY2xhc3MKKyAgY29uc3RydWN0b3IgYXJlIG5vdyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gOmZ1bmM6YHRpbWUudGltZWAgYW5kCisgIDpmdW5jOmB0aW1lLnNsZWVwYCByZXNwZWN0aXZlbHkuICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXMgQ2xhcmsgaW4KKyAgOmlzc3VlOmAxMzI0NWApCisKKyogOm1ldGg6YH5zY2hlZC5zY2hlZHVsZXIuZW50ZXJgIGFuZCA6bWV0aDpgfnNjaGVkLnNjaGVkdWxlci5lbnRlcmFic2AKKyAgKmFyZ3VtZW50KiBwYXJhbWV0ZXIgaXMgbm93IG9wdGlvbmFsLiAgKENvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrIGluCisgIDppc3N1ZTpgMTMyNDVgKQorCisqIDptZXRoOmB+c2NoZWQuc2NoZWR1bGVyLmVudGVyYCBhbmQgOm1ldGg6YH5zY2hlZC5zY2hlZHVsZXIuZW50ZXJhYnNgCisgIG5vdyBhY2NlcHQgYSAqa3dhcmdzKiBwYXJhbWV0ZXIuICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXMgQ2xhcmsgaW4KKyAgOmlzc3VlOmAxMzI0NWApCisKKworc2h1dGlsCistLS0tLS0KKworKiBUaGUgOm1vZDpgc2h1dGlsYCBtb2R1bGUgaGFzIHRoZXNlIG5ldyBmdWN0aW9uczoKKworICAqIDpmdW5jOmB+c2h1dGlsLmRpc2tfdXNhZ2VgOiBwcm92aWRlcyB0b3RhbCwgdXNlZCBhbmQgZnJlZSBkaXNrIHNwYWNlCisgICAgc3RhdGlzdGljcy4gKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTI0NDJgKQorICAqIDpmdW5jOmB+c2h1dGlsLmNob3duYDogYWxsb3dzIG9uZSB0byBjaGFuZ2UgdXNlciBhbmQvb3IgZ3JvdXAgb2YgdGhlIGdpdmVuCisgICAgcGF0aCBhbHNvIHNwZWNpZnlpbmcgdGhlIHVzZXIvZ3JvdXAgbmFtZXMgYW5kIG5vdCBvbmx5IHRoZWlyIG51bWVyaWMKKyAgICBpZHMuIChDb250cmlidXRlZCBieSBTYW5kcm8gVG9zaSBpbiA6aXNzdWU6YDEyMTkxYCkKKworKiBUaGUgbmV3IDpmdW5jOmBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemVgIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNpemUgb2YgdGhlCisgIHRlcm1pbmFsIHdpbmRvdyB0aGUgaW50ZXJwcmV0ZXIgaXMgYXR0YWNoZWQgdG8uCisgIChDb250cmlidXRlZCBieSBaYmlnbmlldyBKxJlkcnplamV3c2tpLVN6bWVrIGluIDppc3N1ZTpgMTM2MDlgLikKKworKiBTZXZlcmFsIGZ1bmN0aW9ucyBub3cgdGFrZSBhbiBvcHRpb25hbCBgYHN5bWxpbmtzYGAgYXJndW1lbnQ6IHdoZW4gdGhhdAorICBwYXJhbWV0ZXIgaXMgdHJ1ZSwgc3ltbGlua3MgYXJlbid0IGRlcmVmZXJlbmNlZCBhbmQgdGhlIG9wZXJhdGlvbiBpbnN0ZWFkCisgIGFjdHMgb24gdGhlIHN5bWxpbmsgaXRzZWxmIChvciBjcmVhdGVzIG9uZSwgaWYgcmVsZXZhbnQpLgorICAoQ29udHJpYnV0ZWQgYnkgSHluZWsgU2NobGF3YWNrIGluIDppc3N1ZTpgMTI3MTVgLikKKworKiA6ZnVuYzpgfnNodXRpbC5ybXRyZWVgIGlzIG5vdyByZXNpc3RhbnQgdG8gc3ltbGluayBhdHRhY2tzIG9uIHBsYXRmb3JtcworICB3aGljaCBzdXBwb3J0IHRoZSBuZXcgYGBkaXJfZmRgYCBwYXJhbWV0ZXIgaW4gOmZ1bmM6YG9zLm9wZW5gIGFuZAorICA6ZnVuYzpgb3MudW5saW5rYC4gKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiB2b24gTMO2d2lzIGFuZCBIeW5layBTY2hsYXdhY2sKKyAgaW4gOmlzc3VlOmA0NDg5YC4pCisKKworCitzaWduYWwKKy0tLS0tLQorCisqIFRoZSA6bW9kOmBzaWduYWxgIG1vZHVsZSBoYXMgbmV3IGZ1bmN0aW9uczoKKworICAqIDpmdW5jOmB+c2lnbmFsLnB0aHJlYWRfc2lnbWFza2A6IGZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZQorICAgIGNhbGxpbmcgdGhyZWFkIChDb250cmlidXRlZCBieSBKZWFuLVBhdWwgQ2FsZGVyb25lIGluIDppc3N1ZTpgODQwN2ApIDsKKyAgKiA6ZnVuYzpgfnNpZ25hbC5wdGhyZWFkX2tpbGxgOiBzZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkIDsKKyAgKiA6ZnVuYzpgfnNpZ25hbC5zaWdwZW5kaW5nYDogZXhhbWluZSBwZW5kaW5nIGZ1bmN0aW9ucyA7CisgICogOmZ1bmM6YH5zaWduYWwuc2lnd2FpdGA6IHdhaXQgYSBzaWduYWwuCisgICogOmZ1bmM6YH5zaWduYWwuc2lnd2FpdGluZm9gOiB3YWl0IGZvciBhIHNpZ25hbCwgcmV0dXJuaW5nIGRldGFpbGVkCisgICAgaW5mb3JtYXRpb24gYWJvdXQgaXQuCisgICogOmZ1bmM6YH5zaWduYWwuc2lndGltZWR3YWl0YDogbGlrZSA6ZnVuYzpgfnNpZ25hbC5zaWd3YWl0aW5mb2AgYnV0IHdpdGggYQorICAgIHRpbWVvdXQuCisKKyogVGhlIHNpZ25hbCBoYW5kbGVyIHdyaXRlcyB0aGUgc2lnbmFsIG51bWJlciBhcyBhIHNpbmdsZSBieXRlIGluc3RlYWQgb2YKKyAgYSBudWwgYnl0ZSBpbnRvIHRoZSB3YWtldXAgZmlsZSBkZXNjcmlwdG9yLiBTbyBpdCBpcyBwb3NzaWJsZSB0byB3YWl0IG1vcmUKKyAgdGhhbiBvbmUgc2lnbmFsIGFuZCBrbm93IHdoaWNoIHNpZ25hbHMgd2VyZSByYWlzZWQuCisKKyogOmZ1bmM6YHNpZ25hbC5zaWduYWxgIGFuZCA6ZnVuYzpgc2lnbmFsLnNpZ2ludGVycnVwdGAgcmFpc2UgYW4gT1NFcnJvciwKKyAgaW5zdGVhZCBvZiBhIFJ1bnRpbWVFcnJvcjogT1NFcnJvciBoYXMgYW4gZXJybm8gYXR0cmlidXRlLgorCitzbXRwbGliCistLS0tLS0tCisKK1RoZSA6Y2xhc3M6YH5zbXRwbGliLlNNVFBfU1NMYCBjb25zdHJ1Y3RvciBhbmQgdGhlIDptZXRoOmB+c210cGxpYi5TTVRQLnN0YXJ0dGxzYAorbWV0aG9kIG5vdyBhY2NlcHQgYW4gU1NMQ29udGV4dCBwYXJhbWV0ZXIgdG8gY29udHJvbCBwYXJhbWV0ZXJzIG9mIHRoZSBzZWN1cmUKK2NoYW5uZWwuCisKKyhDb250cmlidXRlZCBieSBLYXN1biBIZXJhdGggaW4gOmlzc3VlOmA4ODA5YCkKKworCitzb2NrZXQKKy0tLS0tLQorCisqIFRoZSA6Y2xhc3M6YH5zb2NrZXQuc29ja2V0YCBjbGFzcyBub3cgZXhwb3NlcyBhZGRpdGlvbmFsIG1ldGhvZHMgdG8gcHJvY2VzcworICBhbmNpbGxhcnkgZGF0YSB3aGVuIHN1cHBvcnRlZCBieSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybToKKworICAqIDpmdW5jOmB+c29ja2V0LnNvY2tldC5zZW5kbXNnYAorICAqIDpmdW5jOmB+c29ja2V0LnNvY2tldC5yZWN2bXNnYAorICAqIDpmdW5jOmB+c29ja2V0LnNvY2tldC5yZWN2bXNnX2ludG9gCisKKyAgKENvbnRyaWJ1dGVkIGJ5IERhdmlkIFdhdHNvbiBpbiA6aXNzdWU6YDY1NjBgLCBiYXNlZCBvbiBhbiBlYXJsaWVyIHBhdGNoIGJ5CisgIEhlaWtvIFd1bmRyYW0pCisKKyogVGhlIDpjbGFzczpgfnNvY2tldC5zb2NrZXRgIGNsYXNzIG5vdyBzdXBwb3J0cyB0aGUgUEZfQ0FOIHByb3RvY29sIGZhbWlseQorICAoaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2NrZXRjYW4pLCBvbiBMaW51eAorICAoaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjUzNDI1KS4KKworICAoQ29udHJpYnV0ZWQgYnkgTWF0dGhpYXMgRnVjaHMsIHVwZGF0ZWQgYnkgVGlhZ28gR29uw6dhbHZlcyBpbiA6aXNzdWU6YDEwMTQxYCkKKworKiBUaGUgOmNsYXNzOmB+c29ja2V0LnNvY2tldGAgY2xhc3Mgbm93IHN1cHBvcnRzIHRoZSBQRl9SRFMgcHJvdG9jb2wgZmFtaWx5CisgIChodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlbGlhYmxlX0RhdGFncmFtX1NvY2tldHMgYW5kCisgIGh0dHA6Ly9vc3Mub3JhY2xlLmNvbS9wcm9qZWN0cy9yZHMvKS4KKworCitzc2wKKy0tLQorCisqIFRoZSA6bW9kOmBzc2xgIG1vZHVsZSBoYXMgdHdvIG5ldyByYW5kb20gZ2VuZXJhdGlvbiBmdW5jdGlvbnM6CisKKyAgKiA6ZnVuYzpgfnNzbC5SQU5EX2J5dGVzYDogZ2VuZXJhdGUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nCisgICAgcHNldWRvLXJhbmRvbSBieXRlcy4KKyAgKiA6ZnVuYzpgfnNzbC5SQU5EX3BzZXVkb19ieXRlc2A6IGdlbmVyYXRlIHBzZXVkby1yYW5kb20gYnl0ZXMuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMTIwNDlgKQorCisqIFRoZSA6bW9kOmBzc2xgIG1vZHVsZSBub3cgZXhwb3NlcyBhIGZpbmVyLWdyYWluZWQgZXhjZXB0aW9uIGhpZXJhcmNoeQorICBpbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciB0byBpbnNwZWN0IHRoZSB2YXJpb3VzIGtpbmRzIG9mIGVycm9ycy4KKworICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxMTE4M2ApCisKKyogOm1ldGg6YH5zc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIG5vdyBhY2NlcHRzIGEgKnBhc3N3b3JkKiBhcmd1bWVudAorICB0byBiZSB1c2VkIGlmIHRoZSBwcml2YXRlIGtleSBpcyBlbmNyeXB0ZWQuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEFkYW0gU2ltcGtpbnMgaW4gOmlzc3VlOmAxMjgwM2ApCisKKyogRGlmZmllLUhlbGxtYW4ga2V5IGV4Y2hhbmdlLCBib3RoIHJlZ3VsYXIgYW5kIEVsbGlwdGljIEN1cnZlLWJhc2VkLCBpcworICBub3cgc3VwcG9ydGVkIHRocm91Z2ggdGhlIDptZXRoOmB+c3NsLlNTTENvbnRleHQubG9hZF9kaF9wYXJhbXNgIGFuZAorICA6bWV0aDpgfnNzbC5TU0xDb250ZXh0LnNldF9lY2RoX2N1cnZlYCBtZXRob2RzLgorCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDEzNjI2YCBhbmQgOmlzc3VlOmAxMzYyN2ApCisKKyogU1NMIHNvY2tldHMgaGF2ZSBhIG5ldyA6bWV0aDpgfnNzbC5TU0xTb2NrZXQuZ2V0X2NoYW5uZWxfYmluZGluZ2AgbWV0aG9kCisgIGFsbG93aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBjZXJ0YWluIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMgc3VjaCBhcworICBTQ1JBTS1TSEEtMS1QTFVTLgorCisgIChDb250cmlidXRlZCBieSBKYWNlayBLb25pZWN6bnkgaW4gOmlzc3VlOmAxMjU1MWApCisKKyogWW91IGNhbiBxdWVyeSB0aGUgU1NMIGNvbXByZXNzaW9uIGFsZ29yaXRobSB1c2VkIGJ5IGFuIFNTTCBzb2NrZXQsIHRoYW5rcworICB0byBpdHMgbmV3IDptZXRoOmB+c3NsLlNTTFNvY2tldC5jb21wcmVzc2lvbmAgbWV0aG9kLgorCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDEzNjM0YCkKKworKiBTdXBwb3J0IGhhcyBiZWVuIGFkZGVkIGZvciB0aGUgTmV4dCBQcm9jb3RvbCBOZWdvdGlhdGlvbiBleHRlbnNpb24gdXNpbmcKKyAgdGhlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29sc2AgbWV0aG9kLgorCisgIChDb250cmlidXRlZCBieSBDb2xpbiBNYXJjIGluIDppc3N1ZTpgMTQyMDRgKQorCisqIFNTTCBlcnJvcnMgY2FuIG5vdyBiZSBpbnRyb3NwZWN0ZWQgbW9yZSBlYXNpbHkgdGhhbmtzIHRvCisgIDphdHRyOmB+c3NsLlNTTEVycm9yLmxpYnJhcnlgIGFuZCA6YXR0cjpgfnNzbC5TU0xFcnJvci5yZWFzb25gIGF0dHJpYnV0ZXMuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTQ4MzdgKQorCitzdGF0CistLS0tCisKKy0gVGhlIHVuZG9jdW1lbnRlZCB0YXJmaWxlLmZpbGVtb2RlIGZ1bmN0aW9uIGhhcyBiZWVuIG1vdmVkIHRvCisgIDpmdW5jOmBzdGF0LmZpbGVtb2RlYC4gSXQgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhIGZpbGUncyBtb2RlIHRvIGEgc3RyaW5nIG9mCisgIHRoZSBmb3JtICctcnd4cnd4cnd4Jy4KKworICAoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxNDgwN2ApCisKK3N5cworLS0tCisKKyogVGhlIDptb2Q6YHN5c2AgbW9kdWxlIGhhcyBhIG5ldyA6ZGF0YTpgfnN5cy50aHJlYWRfaW5mb2AgOnRlcm06YHN0cnVjdAorICBzZXF1ZW5jZWAgaG9sZGluZyBpbmZvcm1hdGlvbnMgYWJvdXQgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbi4KKworICAoOmlzc3VlOmAxMTIyM2ApCisKK3RleHR3cmFwCistLS0tLS0tLQorCisqIFRoZSA6bW9kOmB0ZXh0d3JhcGAgbW9kdWxlIGhhcyBhIG5ldyA6ZnVuYzpgfnRleHR3cmFwLmluZGVudGAgdGhhdCBtYWtlcworICBpdCBzdHJhaWdodGZvcndhcmQgdG8gYWRkIGEgY29tbW9uIHByZWZpeCB0byBzZWxlY3RlZCBsaW5lcyBpbiBhIGJsb2NrCisgIG9mIHRleHQuCisKKyAgKDppc3N1ZTpgMTM4NTdgKQorCit0aW1lCistLS0tCisKK1RoZSA6cGVwOmA0MThgIGFkZGVkIG5ldyBmdW5jdGlvbnMgdG8gdGhlIDptb2Q6YHRpbWVgIG1vZHVsZToKKworKiA6ZnVuYzpgfnRpbWUuZ2V0X2Nsb2NrX2luZm9gOiBHZXQgaW5mb3JtYXRpb24gb24gYSBjbG9jay4KKyogOmZ1bmM6YH50aW1lLm1vbm90b25pY2A6IE1vbm90b25pYyBjbG9jayAoY2Fubm90IGdvIGJhY2t3YXJkKSwgbm90IGFmZmVjdGVkCisgIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzLgorKiA6ZnVuYzpgfnRpbWUucGVyZl9jb3VudGVyYDogUGVyZm9ybWFuY2UgY291bnRlciB3aXRoIHRoZSBoaWdoZXN0IGF2YWlsYWJsZQorICByZXNvbHV0aW9uIHRvIG1lYXN1cmUgYSBzaG9ydCBkdXJhdGlvbi4KKyogOmZ1bmM6YH50aW1lLnByb2Nlc3NfdGltZWA6IFN1bSBvZiB0aGUgc3lzdGVtIGFuZCB1c2VyIENQVSB0aW1lIG9mIHRoZQorICBjdXJyZW50IHByb2Nlc3MuCisKK090aGVyIG5ldyBmdW5jdGlvbnM6CisKKyogOmZ1bmM6YH50aW1lLmNsb2NrX2dldHJlc2AsIDpmdW5jOmB+dGltZS5jbG9ja19nZXR0aW1lYCBhbmQKKyAgOmZ1bmM6YH50aW1lLmNsb2NrX3NldHRpbWVgIGZ1bmN0aW9ucyB3aXRoIGBgQ0xPQ0tfeHh4YGAgY29uc3RhbnRzLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAxMDI3OGApCisKKwordHlwZXMKKy0tLS0tCisKK0FkZCBhIG5ldyA6Y2xhc3M6YHR5cGVzLk1hcHBpbmdQcm94eVR5cGVgIGNsYXNzOiBSZWFkLW9ubHkgcHJveHkgb2YgYSBtYXBwaW5nLgorKDppc3N1ZTpgMTQzODZgKQorCisKK1RoZSBuZXcgZnVuY3Rpb25zIGB0eXBlcy5uZXdfY2xhc3NgIGFuZCBgdHlwZXMucHJlcGFyZV9jbGFzc2AgcHJvdmlkZSBzdXBwb3J0Citmb3IgUEVQIDMxMTUgY29tcGxpYW50IGR5bmFtaWMgdHlwZSBjcmVhdGlvbi4gKDppc3N1ZTpgMTQ1ODhgKQorCisKK3VybGxpYgorLS0tLS0tCisKK1RoZSA6Y2xhc3M6YH51cmxsaWIucmVxdWVzdC5SZXF1ZXN0YCBjbGFzcywgbm93IGFjY2VwdHMgYSAqbWV0aG9kKiBhcmd1bWVudAordXNlZCBieSA6bWV0aDpgfnVybGxpYi5yZXF1ZXN0LlJlcXVlc3QuZ2V0X21ldGhvZGAgdG8gZGV0ZXJtaW5lIHdoYXQgSFRUUCBtZXRob2QKK3Nob3VsZCBiZSB1c2VkLiAgRm9yIGV4YW1wbGUsIHRoaXMgd2lsbCBzZW5kIGEgYGAnSEVBRCdgYCByZXF1ZXN0OjoKKworICAgPj4+IHVybG9wZW4oUmVxdWVzdCgnaHR0cDovL3d3dy5weXRob24ub3JnJywgbWV0aG9kPSdIRUFEJykpCisKKyg6aXNzdWU6YDE2NzMwMDdgKQorCisKK3dlYmJyb3dzZXIKKy0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHdlYmJyb3dzZXJgIG1vZHVsZSBzdXBwb3J0cyBtb3JlIGJyb3dzZXJzOiBHb29nbGUgQ2hyb21lIChuYW1lZAorOnByb2dyYW06YGNocm9tZWAsIDpwcm9ncmFtOmBjaHJvbWl1bWAsIDpwcm9ncmFtOmBjaHJvbWUtYnJvd3NlcmAgb3IKKzpwcm9ncmFtOmBjaHJvbWl1bS1icm93c2VyYCBkZXBlbmRpbmcgb24gdGhlIHZlcnNpb24gYW5kIG9wZXJhdGluZyBzeXN0ZW0pIGFzCit3ZWxsIGFzIHRoZSB0aGUgZ2VuZXJpYyBsYXVuY2hlcnMgOnByb2dyYW06YHhkZy1vcGVuYCBmcm9tIHRoZSBGcmVlRGVza3RvcC5vcmcKK3Byb2plY3QgYW5kIDpwcm9ncmFtOmBndmZzLW9wZW5gIHdoaWNoIGlzIHRoZSBkZWZhdWx0IFVSSSBoYW5kbGVyIGZvciBHTk9NRSAzLgorCisoOmlzc3VlOmAxMzYyMGAgYW5kIDppc3N1ZTpgMTQ0OTNgKQorCisKK3htbC5ldHJlZS5FbGVtZW50VHJlZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB4bWwuZXRyZWUuRWxlbWVudFRyZWVgIG1vZHVsZSBub3cgaW1wb3J0cyBpdHMgQyBhY2NlbGVyYXRvciBieQorZGVmYXVsdDsgdGhlcmUgaXMgbm8gbG9uZ2VyIGEgbmVlZCB0byBleHBsaWNpdGx5IGltcG9ydAorOm1vZDpgeG1sLmV0cmVlLmNFbGVtZW50VHJlZWAgKHRoaXMgbW9kdWxlIHN0YXlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwKK2J1dCBpcyBub3cgZGVwcmVjYXRlZCkuICBJbiBhZGRpdGlvbiwgIHRoZSBgYGl0ZXJgYCBmYW1pbHkgb2YgbWV0aG9kcyBvZgorOmNsYXNzOmB+eG1sLmV0cmVlLkVsZW1lbnRUcmVlLkVsZW1lbnRgIGhhcyBiZWVuIG9wdGltaXplZCAocmV3cml0dGVuIGluIEMpLgorVGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gaGFzIGFsc28gYmVlbiBncmVhdGx5IGltcHJvdmVkIHdpdGggYWRkZWQgZXhhbXBsZXMKK2FuZCBhIG1vcmUgZGV0YWlsZWQgcmVmZXJlbmNlLgorCisKK09wdGltaXphdGlvbnMKKz09PT09PT09PT09PT0KKworTWFqb3IgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzIGhhdmUgYmVlbiBhZGRlZDoKKworKiBUaGFua3MgdG8gOnBlcDpgMzkzYCwgc29tZSBvcGVyYXRpb25zIG9uIFVuaWNvZGUgc3RyaW5ncyBoYXZlIGJlZW4gb3B0aW1pemVkOgorCisgICogdGhlIG1lbW9yeSBmb290cHJpbnQgaXMgZGl2aWRlZCBieSAyIHRvIDQgZGVwZW5kaW5nIG9uIHRoZSB0ZXh0CisgICogZW5jb2RlIGFuIEFTQ0lJIHN0cmluZyB0byBVVEYtOCBkb2Vzbid0IG5lZWQgdG8gZW5jb2RlIGNoYXJhY3RlcnMgYW55bW9yZSwKKyAgICB0aGUgVVRGLTggcmVwcmVzZW50YXRpb24gaXMgc2hhcmVkIHdpdGggdGhlIEFTQ0lJIHJlcHJlc2VudGF0aW9uCisgICogdGhlIFVURi04IGVuY29kZXIgaGFzIGJlZW4gb3B0aW1pemVkCisgICogcmVwZWF0aW5nIGEgc2luZ2xlIEFTQ0lJIGxldHRlciBhbmQgZ2V0dGluZyBhIHN1YnN0cmluZyBvZiBhIEFTQ0lJIHN0cmluZ3MKKyAgICBpcyA0IHRpbWVzIGZhc3RlcgorCisqIFVURi04IGlzIG5vdyAyeCB0byA0eCBmYXN0ZXIuICBVVEYtMTYgZW5jb2RpbmcgaXMgbm93IHVwIHRvIDEweCBmYXN0ZXIuCisKKyAgKGNvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EsIDppc3N1ZTpgMTQ2MjRgLCA6aXNzdWU6YDE0NzM4YCBhbmQKKyAgOmlzc3VlOmAxNTAyNmAuKQorCisKK0J1aWxkIGFuZCBDIEFQSSBDaGFuZ2VzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitDaGFuZ2VzIHRvIFB5dGhvbidzIGJ1aWxkIHByb2Nlc3MgYW5kIHRvIHRoZSBDIEFQSSBpbmNsdWRlOgorCisqIE5ldyA6cGVwOmAzMTE4YCByZWxhdGVkIGZ1bmN0aW9uOgorCisgICogOmM6ZnVuYzpgUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnlgCisKKyogOnBlcDpgMzkzYCBhZGRlZCBuZXcgVW5pY29kZSB0eXBlcywgbWFjcm9zIGFuZCBmdW5jdGlvbnM6CisKKyAgKiBIaWdoLWxldmVsIEFQSToKKworICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX0ZpbmRDaGFyYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX0dldExlbmd0aGAsIDpjOm1hY3JvOmBQeVVuaWNvZGVfR0VUX0xFTkdUSGAKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9OZXdgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfU3Vic3RyaW5nYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX1JlYWRDaGFyYCwgOmM6ZnVuYzpgUHlVbmljb2RlX1dyaXRlQ2hhcmAKKworICAqIExvdy1sZXZlbCBBUEk6CisKKyAgICAqIDpjOnR5cGU6YFB5X1VDUzFgLCA6Yzp0eXBlOmBQeV9VQ1MyYCwgOmM6dHlwZTpgUHlfVUNTNGAgdHlwZXMKKyAgICAqIDpjOnR5cGU6YFB5QVNDSUlPYmplY3RgIGFuZCA6Yzp0eXBlOmBQeUNvbXBhY3RVbmljb2RlT2JqZWN0YCBzdHJ1Y3R1cmVzCisgICAgKiA6YzptYWNybzpgUHlVbmljb2RlX1JFQURZYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YWAKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VDUzRgLCA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0Q29weWAKKyAgICAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfREFUQWAsIDpjOm1hY3JvOmBQeVVuaWNvZGVfMUJZVEVfREFUQWAsCisgICAgICA6YzptYWNybzpgUHlVbmljb2RlXzJCWVRFX0RBVEFgLCA6YzptYWNybzpgUHlVbmljb2RlXzRCWVRFX0RBVEFgCisgICAgKiA6YzptYWNybzpgUHlVbmljb2RlX0tJTkRgIHdpdGggOmM6dHlwZTpgUHlVbmljb2RlX0tpbmRgIGVudW06CisgICAgICA6YzpkYXRhOmBQeVVuaWNvZGVfV0NIQVJfS0lORGAsIDpjOmRhdGE6YFB5VW5pY29kZV8xQllURV9LSU5EYCwKKyAgICAgIDpjOmRhdGE6YFB5VW5pY29kZV8yQllURV9LSU5EYCwgOmM6ZGF0YTpgUHlVbmljb2RlXzRCWVRFX0tJTkRgCisgICAgKiA6YzptYWNybzpgUHlVbmljb2RlX1JFQURgLCA6YzptYWNybzpgUHlVbmljb2RlX1JFQURfQ0hBUmAsIDpjOm1hY3JvOmBQeVVuaWNvZGVfV1JJVEVgCisgICAgKiA6YzptYWNybzpgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFYAorCisKKworRGVwcmVjYXRlZAorPT09PT09PT09PQorCitVbnN1cHBvcnRlZCBPcGVyYXRpbmcgU3lzdGVtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT1MvMiBhbmQgVk1TIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkIGR1ZSB0byB0aGUgbGFjayBvZiBhIG1haW50YWluZXIuCisKK1dpbmRvd3MgMjAwMCBhbmQgV2luZG93cyBwbGF0Zm9ybXMgd2hpY2ggc2V0IGBgQ09NU1BFQ2BgIHRvIGBgY29tbWFuZC5jb21gYAorYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgZHVlIHRvIG1haW50ZW5hbmNlIGJ1cmRlbi4KKworCitEZXByZWNhdGVkIFB5dGhvbiBtb2R1bGVzLCBmdW5jdGlvbnMgYW5kIG1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSBgYHVuaWNvZGVfaW50ZXJuYWxgYCBjb2RlYyBoYXMgYmVlbiBkZXByZWNhdGVkIGJlY2F1c2Ugb2YgdGhlCisgIDpwZXA6YDM5M2AsIHVzZSBVVEYtOCwgVVRGLTE2IChgYHV0Zi0xNi1sZWBgIG9yIGBgdXRmLTE2LWJlYGApLCBvciBVVEYtMzIKKyAgKGBgdXRmLTMyLWxlYGAgb3IgYGB1dGYtMzItYmVgYCkKKyogOm1ldGg6YGZ0cGxpYi5GVFAubmxzdGAgYW5kIDptZXRoOmBmdHBsaWIuRlRQLmRpcmA6IHVzZQorICA6bWV0aDpgZnRwbGliLkZUUC5tbHNkYAorKiA6ZnVuYzpgcGxhdGZvcm0ucG9wZW5gOiB1c2UgdGhlIDptb2Q6YHN1YnByb2Nlc3NgIG1vZHVsZS4gQ2hlY2sgZXNwZWNpYWxseQorICB0aGUgOnJlZjpgc3VicHJvY2Vzcy1yZXBsYWNlbWVudHNgIHNlY3Rpb24uCisqIDppc3N1ZTpgMTMzNzRgOiBUaGUgV2luZG93cyBieXRlcyBBUEkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiB0aGUgOm1vZDpgb3NgCisgIG1vZHVsZS4gVXNlIFVuaWNvZGUgZmlsZW5hbWVzLCBpbnN0ZWFkIG9mIGJ5dGVzIGZpbGVuYW1lcywgdG8gbm90IGRlcGVuZCBvbgorICB0aGUgQU5TSSBjb2RlIHBhZ2UgYW55bW9yZSBhbmQgdG8gc3VwcG9ydCBhbnkgZmlsZW5hbWUuCisqIDppc3N1ZTpgMTM5ODhgOiBUaGUgOm1vZDpgeG1sLmV0cmVlLmNFbGVtZW50VHJlZWAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQuICBUaGUKKyAgYWNjZWxlcmF0b3IgaXMgdXNlZCBhdXRvbWF0aWNhbGx5IHdoZW5ldmVyIGF2YWlsYWJsZS4KKyogVGhlIGJlaGF2aW91ciBvZiA6ZnVuYzpgdGltZS5jbG9ja2AgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm06IHVzZSB0aGUgbmV3CisgIDpmdW5jOmB0aW1lLnBlcmZfY291bnRlcmAgb3IgOmZ1bmM6YHRpbWUucHJvY2Vzc190aW1lYCBmdW5jdGlvbiBpbnN0ZWFkLAorICBkZXBlbmRpbmcgb24geW91ciByZXF1aXJlbWVudHMsIHRvIGhhdmUgYSB3ZWxsIGRlZmluZWQgYmVoYXZpb3VyLgorKiBUaGUgOmZ1bmM6YG9zLnN0YXRfZmxvYXRfdGltZXNgIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuCisqIDptb2Q6YGFiY2AgbW9kdWxlOgorCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3Rwcm9wZXJ0eWAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgdXNlIDpjbGFzczpgcHJvcGVydHlgCisgICAgd2l0aCA6ZnVuYzpgYWJjLmFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgorICAqIDpjbGFzczpgYWJjLmFic3RyYWN0Y2xhc3NtZXRob2RgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZQorICAgIDpjbGFzczpgY2xhc3NtZXRob2RgIHdpdGggOmZ1bmM6YGFiYy5hYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZGAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgdXNlCisgICAgOmNsYXNzOmBzdGF0aWNtZXRob2RgIHdpdGggOmZ1bmM6YGFiYy5hYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KKworCisKK0RlcHJlY2F0ZWQgZnVuY3Rpb25zIGFuZCB0eXBlcyBvZiB0aGUgQyBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgOnBlcDpgMzkzYCBhbmQgd2lsbCBiZQorcmVtb3ZlZCBpbiBQeXRob24gNC4gQWxsIGZ1bmN0aW9ucyB1c2luZyB0aGlzIHR5cGUgYXJlIGRlcHJlY2F0ZWQ6CisKK1VuaWNvZGUgZnVuY3Rpb25zIGFuZCBtZXRob2RzIHVzaW5nIDpjOnR5cGU6YFB5X1VOSUNPREVgIGFuZAorOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHR5cGVzOgorCisgKiA6YzptYWNybzpgUHlVbmljb2RlX0Zyb21Vbmljb2RlYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tV2lkZUNoYXJgIG9yCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhYAorICogOmM6bWFjcm86YFB5VW5pY29kZV9BU19VTklDT0RFYCwgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZWAsCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZ2AKKyAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfQVNfREFUQWA6IHVzZSA6YzptYWNybzpgUHlVbmljb2RlX0RBVEFgIHdpdGgKKyAgIDpjOm1hY3JvOmBQeVVuaWNvZGVfUkVBRGAgYW5kIDpjOm1hY3JvOmBQeVVuaWNvZGVfV1JJVEVgCisgKiA6YzptYWNybzpgUHlVbmljb2RlX0dFVF9TSVpFYCwgOmM6ZnVuYzpgUHlVbmljb2RlX0dldFNpemVgOiB1c2UKKyAgIDpjOm1hY3JvOmBQeVVuaWNvZGVfR0VUX0xFTkdUSGAgb3IgOmM6ZnVuYzpgUHlVbmljb2RlX0dldExlbmd0aGAKKyAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRWA6IHVzZQorICAgYGBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpICogUHlVbmljb2RlX0tJTkQoc3RyKWBgIChvbmx5IHdvcmsgb24gcmVhZHkKKyAgIHN0cmluZ3MpCisgKiA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlQ29weWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0Q29weWAgb3IKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nYAorICogOmM6ZnVuYzpgUHlVbmljb2RlX0dldE1heGAKKworCitGdW5jdGlvbnMgYW5kIG1hY3JvcyBtYW5pcHVsYXRpbmcgUHlfVU5JQ09ERSogc3RyaW5nczoKKworICogOmM6bWFjcm86YFB5X1VOSUNPREVfc3RybGVuYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRMZW5ndGhgIG9yCisgICA6YzptYWNybzpgUHlVbmljb2RlX0dFVF9MRU5HVEhgCisgKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJjYXRgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzYCBvcgorICAgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21Gb3JtYXRgCisgKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJjcHlgLCA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJuY3B5YCwKKyAgIDpjOm1hY3JvOmBQeV9VTklDT0RFX0NPUFlgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzYCBvcgorICAgOmM6ZnVuYzpgUHlVbmljb2RlX1N1YnN0cmluZ2AKKyAqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cmNtcGA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQ29tcGFyZWAKKyAqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cm5jbXBgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX1RhaWxtYXRjaGAKKyAqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cmNocmAsIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cnJjaHJgOiB1c2UKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9GaW5kQ2hhcmAKKyAqIDpjOm1hY3JvOmBQeV9VTklDT0RFX0ZJTExgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0ZpbGxgCisgKiA6YzptYWNybzpgUHlfVU5JQ09ERV9NQVRDSGAKKworRW5jb2RlcnM6CisKKyAqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdGAKKyAqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVVVEY3YAorICogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZVVURjhgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGOGAgb3IKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjhTdHJpbmdgCisgKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlVVRGMzJgCisgKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlVVRGMTZgCisgKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZTpgIHVzZQorICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZ2AKKyAqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlOmAgdXNlCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nYAorICogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxhdGluMWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmdgCisgKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlQVNDSUlgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmdgCisgKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcGAKKyAqIDpjOmZ1bmM6YFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwYAorICogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZU1CQ1NgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzTUJDU1N0cmluZ2Agb3IKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZWAgKHdpdGggYGBDUF9BQ1BgYCBjb2RlX3BhZ2UpCisgKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbGAsCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUlgCisKKworRGVwcmVjYXRlZCBmZWF0dXJlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgYXJyYXlgIG1vZHVsZSdzIGBgJ3UnYGAgZm9ybWF0IGNvZGUgaXMgbm93IGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUKK3JlbW92ZWQgaW4gUHl0aG9uIDQgdG9nZXRoZXIgd2l0aCB0aGUgcmVzdCBvZiB0aGUgKDpjOnR5cGU6YFB5X1VOSUNPREVgKSBBUEkuCisKKworUG9ydGluZyB0byBQeXRob24gMy4zCis9PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBzZWN0aW9uIGxpc3RzIHByZXZpb3VzbHkgZGVzY3JpYmVkIGNoYW5nZXMgYW5kIG90aGVyIGJ1Z2ZpeGVzCit0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBjb2RlLgorCisuLiBfcG9ydGluZ3B5dGhvbmNvZGU6CisKK1BvcnRpbmcgUHl0aG9uIGNvZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LiBTZXQgdGhlIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYAorICBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgYDBgYCB0byBkaXNhYmxlIGhhc2ggcmFuZG9taXphdGlvbi4gU2VlIGFsc28gdGhlCisgIDptZXRoOmBvYmplY3QuX19oYXNoX19gIG1ldGhvZC4KKworKiA6aXNzdWU6YDEyMzI2YDogT24gTGludXgsIHN5cy5wbGF0Zm9ybSBkb2Vzbid0IGNvbnRhaW4gdGhlIG1ham9yIHZlcnNpb24KKyAgYW55bW9yZS4gSXQgaXMgbm93IGFsd2F5cyAnbGludXgnLCBpbnN0ZWFkIG9mICdsaW51eDInIG9yICdsaW51eDMnIGRlcGVuZGluZworICBvbiB0aGUgTGludXggdmVyc2lvbiB1c2VkIHRvIGJ1aWxkIFB5dGhvbi4gUmVwbGFjZSBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4MicKKyAgd2l0aCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKSwgb3IgZGlyZWN0bHkgc3lzLnBsYXRmb3JtID09ICdsaW51eCcgaWYKKyAgeW91IGRvbid0IG5lZWQgdG8gc3VwcG9ydCBvbGRlciBQeXRob24gdmVyc2lvbnMuCisKKyogOmlzc3VlOmAxMzg0N2AsIDppc3N1ZTpgMTQxODBgOiA6bW9kOmB0aW1lYCBhbmQgOm1vZDpgZGF0ZXRpbWVgOgorICA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpcyBub3cgcmFpc2VkIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgaWYgYQorICB0aW1lc3RhbXAgaXMgb3V0IG9mIHJhbmdlLiA6ZXhjOmBPU0Vycm9yYCBpcyBub3cgcmFpc2VkIGlmIEMgZnVuY3Rpb25zCisgIDpjOmZ1bmM6YGdtdGltZWAgb3IgOmM6ZnVuYzpgbG9jYWx0aW1lYCBmYWlsZWQuCisKKyogVGhlIGRlZmF1bHQgZmluZGVycyB1c2VkIGJ5IGltcG9ydCBub3cgdXRpbGl6ZSBhIGNhY2hlIG9mIHdoYXQgaXMgY29udGFpbmVkCisgIHdpdGhpbiBhIHNwZWNpZmljIGRpcmVjdG9yeS4gSWYgeW91IGNyZWF0ZSBhIFB5dGhvbiBzb3VyY2UgZmlsZSBvciBzb3VyY2VsZXNzCisgIGJ5dGVjb2RlIGZpbGUsIG1ha2Ugc3VyZSB0byBjYWxsIDpmdW5jOmBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXNgIHRvIGNsZWFyCisgIG91dCB0aGUgY2FjaGUgZm9yIHRoZSBmaW5kZXJzIHRvIG5vdGljZSB0aGUgbmV3IGZpbGUuCisKKyogOmV4YzpgSW1wb3J0RXJyb3JgIG5vdyB1c2VzIHRoZSBmdWxsIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IHdhcyBhdHRlbXBlZCB0bworICBiZSBpbXBvcnRlZC4gRG9jdGVzdHMgdGhhdCBjaGVjayBJbXBvcnRFcnJvcnMnIG1lc3NhZ2Ugd2lsbCBuZWVkIHRvIGJlCisgIHVwZGF0ZWQgdG8gdXNlIHRoZSBmdWxsIG5hbWUgb2YgdGhlIG1vZHVsZSBpbnN0ZWFkIG9mIGp1c3QgdGhlIHRhaWwgb2YgdGhlCisgIG5hbWUuCisKKyogVGhlICoqaW5kZXgqKiBhcmd1bWVudCB0byA6ZnVuYzpgX19pbXBvcnRfX2Agbm93IGRlZmF1bHRzIHRvIDAgaW5zdGVhZCBvZiAtMQorICBhbmQgbm8gbG9uZ2VyIHN1cHBvcnQgbmVnYXRpdmUgdmFsdWVzLiBJdCB3YXMgYW4gb3ZlcnNpZ2h0IHdoZW4gOnBlcDpgMzI4YCB3YXMKKyAgaW1wbGVtZW50ZWQgdGhhdCB0aGUgZGVmYXVsdCB2YWx1ZSByZW1haW5lZCAtMS4gSWYgeW91IG5lZWQgdG8gY29udGludWUgdG8KKyAgcGVyZm9ybSBhIHJlbGF0aXZlIGltcG9ydCBmb2xsb3dlZCBieSBhbiBhYnNvbHV0ZSBpbXBvcnQsIHRoZW4gcGVyZm9ybSB0aGUKKyAgcmVsYXRpdmUgaW1wb3J0IHVzaW5nIGFuIGluZGV4IG9mIDEsIGZvbGxvd2VkIGJ5IGFub3RoZXIgaW1wb3J0IHVzaW5nIGFuCisgIGluZGV4IG9mIDAuIEl0IGlzIHByZWZlcnJlZCwgdGhvdWdoLCB0aGF0IHlvdSB1c2UKKyAgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCByYXRoZXIgdGhhbiBjYWxsIDpmdW5jOmBfX2ltcG9ydF9fYCBkaXJlY3RseS4KKworKiA6ZnVuYzpgX19pbXBvcnRfX2Agbm8gbG9uZ2VyIGFsbG93cyBvbmUgdG8gdXNlIGFuIGluZGV4IHZhbHVlIG90aGVyIHRoYW4gMAorICBmb3IgdG9wLWxldmVsIG1vZHVsZXMuIEUuZy4gYGBfX2ltcG9ydF9fKCdzeXMnLCBsZXZlbD0xKWBgIGlzIG5vdyBhbiBlcnJvci4KKworKiBCZWNhdXNlIDphdHRyOmBzeXMubWV0YV9wYXRoYCBhbmQgOmF0dHI6YHN5cy5wYXRoX2hvb2tzYCBub3cgaGF2ZSBmaW5kZXJzIG9uCisgIHRoZW0gYnkgZGVmYXVsdCwgeW91IHdpbGwgbW9zdCBsaWtlbHkgd2FudCB0byB1c2UgOm1ldGg6YGxpc3QuaW5zZXJ0YCBpbnN0ZWFkCisgIG9mIDptZXRoOmBsaXN0LmFwcGVuZGAgdG8gYWRkIHRvIHRob3NlIGxpc3RzLgorCisqIEJlY2F1c2UgYGBOb25lYGAgaXMgbm93IGluc2VydGVkIGludG8gOmF0dHI6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCwgaWYgeW91CisgIGFyZSBjbGVhcmluZyBvdXQgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeSBvZiBwYXRocyB0aGF0IGRvIG5vdCBoYXZlIGEKKyAgZmluZGVyLCB5b3Ugd2lsbCBuZWVkIHRvIHJlbW92ZSBrZXlzIHBhaXJlZCB3aXRoIHZhbHVlcyBvZiBgYE5vbmVgYCAqKmFuZCoqCisgIDpjbGFzczpgaW1wLk51bGxJbXBvcnRlcmAgdG8gYmUgYmFja3dhcmRzLWNvbXBhdGlibGUuIFRoaXMgd2lsbCBsZWFkIHRvIGV4dHJhCisgIG92ZXJoZWFkIG9uIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbiB0aGF0IHJlLWluc2VydCBgYE5vbmVgYCBpbnRvCisgIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgd2hlcmUgaXQgcmVwZXNlbnRzIHRoZSB1c2Ugb2YgaW1wbGljaXQKKyAgZmluZGVycywgYnV0IHNlbWFudGljYWxseSBpdCBzaG91bGQgbm90IGNoYW5nZSBhbnl0aGluZy4KKworKiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIucGF0aF9tdGltZWAgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mCisgIDptZXRoOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlci5wYXRoX3N0YXRzYCBhcyBieXRlY29kZSBmaWxlcyBub3cgc3RvcmUKKyAgYm90aCB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgYW5kIHNpemUgb2YgdGhlIHNvdXJjZSBmaWxlIHRoZSBieXRlY29kZSBmaWxlIHdhcworICBjb21waWxlZCBmcm9tLgorCisqIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIG5vIGxvbmdlciBzcGVjaWZpZXMgYSBgZmluZF9tb2R1bGUoKWAgYWJzdHJhY3QKKyAgbWV0aG9kIHRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZC4gSWYgeW91IHdlcmUgcmVseWluZyBvbiBzdWJjbGFzc2VzIHRvCisgIGltcGxlbWVudCB0aGF0IG1ldGhvZCwgbWFrZSBzdXJlIHRvIGNoZWNrIGZvciB0aGUgbWV0aG9kJ3MgZXhpc3RlbmNlIGZpcnN0LgorICBZb3Ugd2lsbCBwcm9iYWJseSB3YW50IHRvIGNoZWNrIGZvciBgZmluZF9sb2FkZXIoKWAgZmlyc3QsIHRob3VnaCwgaW4gdGhlCisgIGNhc2Ugb2Ygd29ya2luZyB3aXRoIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcnMgPHBhdGggZW50cnkgZmluZGVyPmAuCisKKyogOm1vZDpgcGtndXRpbGAgaGFzIGJlZW4gY29udmVydGVkIHRvIHVzZSA6bW9kOmBpbXBvcnRsaWJgIGludGVybmFsbHkuIFRoaXMKKyAgZWxpbWluYXRlcyBtYW55IGVkZ2UgY2FzZXMgd2hlcmUgdGhlIG9sZCBiZWhhdmlvdXIgb2YgdGhlIFBFUCAzMDIgaW1wb3J0CisgIGVtdWxhdGlvbiBmYWlsZWQgdG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZiB0aGUgcmVhbCBpbXBvcnQgc3lzdGVtLiBUaGUKKyAgaW1wb3J0IGVtdWxhdGlvbiBpdHNlbGYgaXMgc3RpbGwgcHJlc2VudCwgYnV0IGlzIG5vdyBkZXByZWNhdGVkLiBUaGUKKyAgOmZ1bmM6YHBrZ3V0aWwuaXRlcl9pbXBvcnRlcnNgIGFuZCA6ZnVuYzpgcGtndXRpbC53YWxrX3BhY2thZ2VzYCBmdW5jdGlvbnMKKyAgc3BlY2lhbCBjYXNlIHRoZSBzdGFuZGFyZCBpbXBvcnQgaG9va3Mgc28gdGhleSBhcmUgc3RpbGwgc3VwcG9ydGVkIGV2ZW4KKyAgdGhvdWdoIHRoZXkgZG8gbm90IHByb3ZpZGUgdGhlIG5vbi1zdGFuZGFyZCBgYGl0ZXJfbW9kdWxlcygpYGAgbWV0aG9kLgorCisKK1BvcnRpbmcgQyBjb2RlCistLS0tLS0tLS0tLS0tLQorCisqIEluIHRoZSBjb3Vyc2Ugb2YgY2hhbmdlcyB0byB0aGUgYnVmZmVyIEFQSSB0aGUgdW5kb2N1bWVudGVkCisgIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zbWFsbHRhYmxlYCBtZW1iZXIgb2YgdGhlCisgIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIGhhcyBiZWVuIHJlbW92ZWQgYW5kIHRoZQorICBsYXlvdXQgb2YgdGhlIDpjOnR5cGU6YFB5TWVtb3J5Vmlld09iamVjdGAgaGFzIGNoYW5nZWQuCisKKyAgQWxsIGV4dGVuc2lvbnMgcmVseWluZyBvbiB0aGUgcmVsZXZhbnQgcGFydHMgaW4gYGBtZW1vcnlvYmplY3QuaGBgCisgIG9yIGBgb2JqZWN0LmhgYCBtdXN0IGJlIHJlYnVpbHQuCisKKyogRHVlIHRvIDpyZWY6YFBFUCAzOTMgPHBlcC0zOTM+YCwgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIHR5cGUgYW5kIGFsbAorICBmdW5jdGlvbnMgdXNpbmcgdGhpcyB0eXBlIGFyZSBkZXByZWNhdGVkIChidXQgd2lsbCBzdGF5IGF2YWlsYWJsZSBmb3IKKyAgYXQgbGVhc3QgZml2ZSB5ZWFycykuICBJZiB5b3Ugd2VyZSB1c2luZyBsb3ctbGV2ZWwgVW5pY29kZSBBUElzIHRvCisgIGNvbnN0cnVjdCBhbmQgYWNjZXNzIHVuaWNvZGUgb2JqZWN0cyBhbmQgeW91IHdhbnQgdG8gYmVuZWZpdCBvZiB0aGUKKyAgbWVtb3J5IGZvb3RwcmludCByZWR1Y3Rpb24gcHJvdmlkZWQgYnkgUEVQIDM5MywgeW91IGhhdmUgdG8gY29udmVydAorICB5b3VyIGNvZGUgdG8gdGhlIG5ldyA6ZG9jOmBVbmljb2RlIEFQSSA8Li4vYy1hcGkvdW5pY29kZT5gLgorCisgIEhvd2V2ZXIsIGlmIHlvdSBvbmx5IGhhdmUgYmVlbiB1c2luZyBoaWdoLWxldmVsIGZ1bmN0aW9ucyBzdWNoIGFzCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Db25jYXQoKWAsIDpjOmZ1bmM6YFB5VW5pY29kZV9Kb2luYCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpYCwgeW91ciBjb2RlIHdpbGwgYXV0b21hdGljYWxseSB0YWtlCisgIGFkdmFudGFnZSBvZiB0aGUgbmV3IHVuaWNvZGUgcmVwcmVzZW50YXRpb25zLgorCisqIDpjOmZ1bmM6YFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyYCBub3cgcmV0dXJucyAtMSB1cG9uIGZhaWx1cmUuCisKKyogQXMgYSBuZWdhdGl2ZSB2YWx1ZSBmb3IgdGhlICoqbGV2ZWwqKiBhcmd1bWVudCB0byA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgbm8KKyAgbG9uZ2VyIHZhbGlkLCB0aGUgc2FtZSBub3cgaG9sZHMgZm9yIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsYC4KKyAgVGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhlIHZhbHVlIG9mICoqbGV2ZWwqKiB1c2VkIGJ5CisgIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4YCBpcyBub3cgMCBpbnN0ZWFkIG9mIC0xLgorCisKK0J1aWxkaW5nIEMgZXh0ZW5zaW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIHJhbmdlIG9mIHBvc3NpYmxlIGZpbGUgbmFtZXMgZm9yIEMgZXh0ZW5zaW9ucyBoYXMgYmVlbiBuYXJyb3dlZC4KKyAgVmVyeSByYXJlbHkgdXNlZCBzcGVsbGluZ3MgaGF2ZSBiZWVuIHN1cHByZXNzZWQ6IHVuZGVyIFBPU0lYLCBmaWxlcworICBuYW1lZCBgYHh4eG1vZHVsZS5zb2BgLCBgYHh4eG1vZHVsZS5hYmkzLnNvYGAgYW5kCisgIGBgeHh4bW9kdWxlLmNweXRob24tKi5zb2BgIGFyZSBubyBsb25nZXIgcmVjb2duaXplZCBhcyBpbXBsZW1lbnRpbmcKKyAgdGhlIGBgeHh4YGAgbW9kdWxlLiAgSWYgeW91IGhhZCBiZWVuIGdlbmVyYXRpbmcgc3VjaCBmaWxlcywgeW91IGhhdmUKKyAgdG8gc3dpdGNoIHRvIHRoZSBvdGhlciBzcGVsbGluZ3MgKGkuZS4sIHJlbW92ZSB0aGUgYGBtb2R1bGVgYCBzdHJpbmcKKyAgZnJvbSB0aGUgZmlsZSBuYW1lcykuCisKKyAgKGltcGxlbWVudGVkIGluIDppc3N1ZTpgMTQwNDBgLikKKworCitPdGhlciBpc3N1ZXMKKy0tLS0tLS0tLS0tLQorCisuLiBJc3N1ZSAjMTE1OTE6IFdoZW4gOnByb2dyYW06YHB5dGhvbmAgd2FzIHN0YXJ0ZWQgd2l0aCA6b3B0aW9uOmAtU2AsCisgICBgYGltcG9ydCBzaXRlYGAgd2lsbCBub3QgYWRkIHNpdGUtc3BlY2lmaWMgcGF0aHMgdG8gdGhlIG1vZHVsZSBzZWFyY2gKKyAgIHBhdGhzLiAgSW4gcHJldmlvdXMgdmVyc2lvbnMsIGl0IGRpZC4gIFNlZSBjaGFuZ2VzZXQgZm9yIGRvYyBjaGFuZ2VzIGluCisgICB2YXJpb3VzIGZpbGVzLiAgQ29udHJpYnV0ZWQgYnkgQ2FybCBNZXllciB3aXRoIGVkaXRpb25zIGJ5IMOJcmljIEFyYXVqby4KKworLi4gSXNzdWUgIzEwOTk4OiB0aGUgLVEgY29tbWFuZC1saW5lIGZsYWcgYW5kIHJlbGF0ZWQgYXJ0aWZhY3RzIGhhdmUgYmVlbgorICAgcmVtb3ZlZC4gIENvZGUgY2hlY2tpbmcgc3lzLmZsYWdzLmRpdmlzaW9uX3dhcm5pbmcgd2lsbCBuZWVkIHVwZGF0aW5nLgorICAgQ29udHJpYnV0ZWQgYnkgw4lyaWMgQXJhdWpvLgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdCBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKaW5kZXggODIyMGJkMi4uYzYwODE4YSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CkBAIC0xMSw2ICsxMSw3IEBACiAuLiB0b2N0cmVlOjoKICAgIDptYXhkZXB0aDogMgogCisgICAzLjMucnN0CiAgICAzLjIucnN0CiAgICAzLjEucnN0CiAgICAzLjAucnN0CmRpZmYgLS1naXQgYS9HcmFtbWFyL0dyYW1tYXIgYi9HcmFtbWFyL0dyYW1tYXIKaW5kZXggY2VhNjhkZS4uZDdhYWZmZCAxMDA2NDQKLS0tIGEvR3JhbW1hci9HcmFtbWFyCisrKyBiL0dyYW1tYXIvR3JhbW1hcgpAQCAtMTMsNyArMTMsNyBAQAogIyBTdGFydCBzeW1ib2xzIGZvciB0aGUgZ3JhbW1hcjoKICMgICAgICAgc2luZ2xlX2lucHV0IGlzIGEgc2luZ2xlIGludGVyYWN0aXZlIHN0YXRlbWVudDsKICMgICAgICAgZmlsZV9pbnB1dCBpcyBhIG1vZHVsZSBvciBzZXF1ZW5jZSBvZiBjb21tYW5kcyByZWFkIGZyb20gYW4gaW5wdXQgZmlsZTsKLSMgICAgICAgZXZhbF9pbnB1dCBpcyB0aGUgaW5wdXQgZm9yIHRoZSBldmFsKCkgYW5kIGlucHV0KCkgZnVuY3Rpb25zLgorIyAgICAgICBldmFsX2lucHV0IGlzIHRoZSBpbnB1dCBmb3IgdGhlIGV2YWwoKSBmdW5jdGlvbnMuCiAjIE5COiBjb21wb3VuZF9zdG10IGluIHNpbmdsZV9pbnB1dCBpcyBmb2xsb3dlZCBieSBleHRyYSBORVdMSU5FIQogc2luZ2xlX2lucHV0OiBORVdMSU5FIHwgc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10IE5FV0xJTkUKIGZpbGVfaW5wdXQ6IChORVdMSU5FIHwgc3RtdCkqIEVORE1BUktFUgpAQCAtMTI5LDQgKzEyOSw1IEBACiAjIG5vdCB1c2VkIGluIGdyYW1tYXIsIGJ1dCBtYXkgYXBwZWFyIGluICJub2RlIiBwYXNzZWQgZnJvbSBQYXJzZXIgdG8gQ29tcGlsZXIKIGVuY29kaW5nX2RlY2w6IE5BTUUKIAoteWllbGRfZXhwcjogJ3lpZWxkJyBbdGVzdGxpc3RdCit5aWVsZF9leHByOiAneWllbGQnIFt5aWVsZF9hcmddCit5aWVsZF9hcmc6ICdmcm9tJyB0ZXN0IHwgdGVzdGxpc3QKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLWFzdC5oIGIvSW5jbHVkZS9QeXRob24tYXN0LmgKaW5kZXggMGFkNzg4Yi4uN2FkNmNiMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9QeXRob24tYXN0LmgKKysrIGIvSW5jbHVkZS9QeXRob24tYXN0LmgKQEAgLTM2LDYgKzM2LDggQEAKIAogdHlwZWRlZiBzdHJ1Y3QgX2FsaWFzICphbGlhc190eTsKIAordHlwZWRlZiBzdHJ1Y3QgX3dpdGhpdGVtICp3aXRoaXRlbV90eTsKKwogCiBlbnVtIF9tb2Rfa2luZCB7TW9kdWxlX2tpbmQ9MSwgSW50ZXJhY3RpdmVfa2luZD0yLCBFeHByZXNzaW9uX2tpbmQ9MywKICAgICAgICAgICAgICAgICAgU3VpdGVfa2luZD00fTsKQEAgLTY0LDEwICs2Niw5IEBACiBlbnVtIF9zdG10X2tpbmQge0Z1bmN0aW9uRGVmX2tpbmQ9MSwgQ2xhc3NEZWZfa2luZD0yLCBSZXR1cm5fa2luZD0zLAogICAgICAgICAgICAgICAgICAgRGVsZXRlX2tpbmQ9NCwgQXNzaWduX2tpbmQ9NSwgQXVnQXNzaWduX2tpbmQ9NiwgRm9yX2tpbmQ9NywKICAgICAgICAgICAgICAgICAgIFdoaWxlX2tpbmQ9OCwgSWZfa2luZD05LCBXaXRoX2tpbmQ9MTAsIFJhaXNlX2tpbmQ9MTEsCi0gICAgICAgICAgICAgICAgICBUcnlFeGNlcHRfa2luZD0xMiwgVHJ5RmluYWxseV9raW5kPTEzLCBBc3NlcnRfa2luZD0xNCwKLSAgICAgICAgICAgICAgICAgIEltcG9ydF9raW5kPTE1LCBJbXBvcnRGcm9tX2tpbmQ9MTYsIEdsb2JhbF9raW5kPTE3LAotICAgICAgICAgICAgICAgICAgTm9ubG9jYWxfa2luZD0xOCwgRXhwcl9raW5kPTE5LCBQYXNzX2tpbmQ9MjAsIEJyZWFrX2tpbmQ9MjEsCi0gICAgICAgICAgICAgICAgICBDb250aW51ZV9raW5kPTIyfTsKKyAgICAgICAgICAgICAgICAgIFRyeV9raW5kPTEyLCBBc3NlcnRfa2luZD0xMywgSW1wb3J0X2tpbmQ9MTQsCisgICAgICAgICAgICAgICAgICBJbXBvcnRGcm9tX2tpbmQ9MTUsIEdsb2JhbF9raW5kPTE2LCBOb25sb2NhbF9raW5kPTE3LAorICAgICAgICAgICAgICAgICAgRXhwcl9raW5kPTE4LCBQYXNzX2tpbmQ9MTksIEJyZWFrX2tpbmQ9MjAsIENvbnRpbnVlX2tpbmQ9MjF9Owogc3RydWN0IF9zdG10IHsKICAgICAgICAgZW51bSBfc3RtdF9raW5kIGtpbmQ7CiAgICAgICAgIHVuaW9uIHsKQEAgLTEyOCw4ICsxMjksNyBAQAogICAgICAgICAgICAgICAgIH0gSWY7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgY29udGV4dF9leHByOwotICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBvcHRpb25hbF92YXJzOworICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKml0ZW1zOwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgICAgICAgICAgICAgfSBXaXRoOwogICAgICAgICAgICAgICAgIApAQCAtMTQyLDEyICsxNDIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqaGFuZGxlcnM7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqb3JlbHNlOwotICAgICAgICAgICAgICAgIH0gVHJ5RXhjZXB0OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpmaW5hbGJvZHk7Ci0gICAgICAgICAgICAgICAgfSBUcnlGaW5hbGx5OworICAgICAgICAgICAgICAgIH0gVHJ5OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHRlc3Q7CkBAIC0xODQsMTAgKzE4MCwxMCBAQAogZW51bSBfZXhwcl9raW5kIHtCb29sT3Bfa2luZD0xLCBCaW5PcF9raW5kPTIsIFVuYXJ5T3Bfa2luZD0zLCBMYW1iZGFfa2luZD00LAogICAgICAgICAgICAgICAgICAgSWZFeHBfa2luZD01LCBEaWN0X2tpbmQ9NiwgU2V0X2tpbmQ9NywgTGlzdENvbXBfa2luZD04LAogICAgICAgICAgICAgICAgICAgU2V0Q29tcF9raW5kPTksIERpY3RDb21wX2tpbmQ9MTAsIEdlbmVyYXRvckV4cF9raW5kPTExLAotICAgICAgICAgICAgICAgICAgWWllbGRfa2luZD0xMiwgQ29tcGFyZV9raW5kPTEzLCBDYWxsX2tpbmQ9MTQsIE51bV9raW5kPTE1LAotICAgICAgICAgICAgICAgICAgU3RyX2tpbmQ9MTYsIEJ5dGVzX2tpbmQ9MTcsIEVsbGlwc2lzX2tpbmQ9MTgsCi0gICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVfa2luZD0xOSwgU3Vic2NyaXB0X2tpbmQ9MjAsIFN0YXJyZWRfa2luZD0yMSwKLSAgICAgICAgICAgICAgICAgIE5hbWVfa2luZD0yMiwgTGlzdF9raW5kPTIzLCBUdXBsZV9raW5kPTI0fTsKKyAgICAgICAgICAgICAgICAgIFlpZWxkX2tpbmQ9MTIsIFlpZWxkRnJvbV9raW5kPTEzLCBDb21wYXJlX2tpbmQ9MTQsCisgICAgICAgICAgICAgICAgICBDYWxsX2tpbmQ9MTUsIE51bV9raW5kPTE2LCBTdHJfa2luZD0xNywgQnl0ZXNfa2luZD0xOCwKKyAgICAgICAgICAgICAgICAgIEVsbGlwc2lzX2tpbmQ9MTksIEF0dHJpYnV0ZV9raW5kPTIwLCBTdWJzY3JpcHRfa2luZD0yMSwKKyAgICAgICAgICAgICAgICAgIFN0YXJyZWRfa2luZD0yMiwgTmFtZV9raW5kPTIzLCBMaXN0X2tpbmQ9MjQsIFR1cGxlX2tpbmQ9MjV9Owogc3RydWN0IF9leHByIHsKICAgICAgICAgZW51bSBfZXhwcl9raW5kIGtpbmQ7CiAgICAgICAgIHVuaW9uIHsKQEAgLTI1Myw2ICsyNDksMTAgQEAKICAgICAgICAgICAgICAgICB9IFlpZWxkOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICAgICAgICAgIH0gWWllbGRGcm9tOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGxlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX2ludF9zZXEgKm9wczsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpjb21wYXJhdG9yczsKQEAgLTI3NSw3ICsyNzUsNyBAQAogICAgICAgICAgICAgICAgIH0gU3RyOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgczsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzIHM7CiAgICAgICAgICAgICAgICAgfSBCeXRlczsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzdHJ1Y3QgewpAQCAtMzgzLDYgKzM4MywxMSBAQAogICAgICAgICBpZGVudGlmaWVyIGFzbmFtZTsKIH07CiAKK3N0cnVjdCBfd2l0aGl0ZW0geworICAgICAgICBleHByX3R5IGNvbnRleHRfZXhwcjsKKyAgICAgICAgZXhwcl90eSBvcHRpb25hbF92YXJzOworfTsKKwogCiAjZGVmaW5lIE1vZHVsZShhMCwgYTEpIF9QeV9Nb2R1bGUoYTAsIGExKQogbW9kX3R5IF9QeV9Nb2R1bGUoYXNkbF9zZXEgKiBib2R5LCBQeUFyZW5hICphcmVuYSk7CkBAIC00MjEsMTggKzQyNiwxNiBAQAogI2RlZmluZSBJZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfSWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIHN0bXRfdHkgX1B5X0lmKGV4cHJfdHkgdGVzdCwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIG9yZWxzZSwgaW50IGxpbmVubywKICAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7Ci0jZGVmaW5lIFdpdGgoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X1dpdGgoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKLXN0bXRfdHkgX1B5X1dpdGgoZXhwcl90eSBjb250ZXh0X2V4cHIsIGV4cHJfdHkgb3B0aW9uYWxfdmFycywgYXNkbF9zZXEgKiBib2R5LAotICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBXaXRoKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X1dpdGgoYTAsIGExLCBhMiwgYTMsIGE0KQorc3RtdF90eSBfUHlfV2l0aChhc2RsX3NlcSAqIGl0ZW1zLCBhc2RsX3NlcSAqIGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIFJhaXNlKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X1JhaXNlKGEwLCBhMSwgYTIsIGEzLCBhNCkKIHN0bXRfdHkgX1B5X1JhaXNlKGV4cHJfdHkgZXhjLCBleHByX3R5IGNhdXNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgVHJ5RXhjZXB0KGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9UcnlFeGNlcHQoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKLXN0bXRfdHkgX1B5X1RyeUV4Y2VwdChhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogaGFuZGxlcnMsIGFzZGxfc2VxICogb3JlbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7Ci0jZGVmaW5lIFRyeUZpbmFsbHkoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfVHJ5RmluYWxseShhMCwgYTEsIGEyLCBhMywgYTQpCi1zdG10X3R5IF9QeV9UcnlGaW5hbGx5KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBmaW5hbGJvZHksIGludCBsaW5lbm8sIGludAotICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIFRyeShhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgX1B5X1RyeShhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKK3N0bXRfdHkgX1B5X1RyeShhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogaGFuZGxlcnMsIGFzZGxfc2VxICogb3JlbHNlLAorICAgICAgICAgICAgICAgIGFzZGxfc2VxICogZmluYWxib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEFzc2VydChhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9Bc3NlcnQoYTAsIGExLCBhMiwgYTMsIGE0KQogc3RtdF90eSBfUHlfQXNzZXJ0KGV4cHJfdHkgdGVzdCwgZXhwcl90eSBtc2csIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTQ5MCw2ICs0OTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgWWllbGQoYTAsIGExLCBhMiwgYTMpIF9QeV9ZaWVsZChhMCwgYTEsIGEyLCBhMykKIGV4cHJfdHkgX1B5X1lpZWxkKGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIFlpZWxkRnJvbShhMCwgYTEsIGEyLCBhMykgX1B5X1lpZWxkRnJvbShhMCwgYTEsIGEyLCBhMykKK2V4cHJfdHkgX1B5X1lpZWxkRnJvbShleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIENvbXBhcmUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0NvbXBhcmUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIGV4cHJfdHkgX1B5X0NvbXBhcmUoZXhwcl90eSBsZWZ0LCBhc2RsX2ludF9zZXEgKiBvcHMsIGFzZGxfc2VxICogY29tcGFyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CkBAIC01MDIsNyArNTA4LDcgQEAKICNkZWZpbmUgU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfU3RyKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfU3RyKHN0cmluZyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBCeXRlcyhhMCwgYTEsIGEyLCBhMykgX1B5X0J5dGVzKGEwLCBhMSwgYTIsIGEzKQotZXhwcl90eSBfUHlfQnl0ZXMoc3RyaW5nIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CitleHByX3R5IF9QeV9CeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBFbGxpcHNpcyhhMCwgYTEsIGEyKSBfUHlfRWxsaXBzaXMoYTAsIGExLCBhMikKIGV4cHJfdHkgX1B5X0VsbGlwc2lzKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEF0dHJpYnV0ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCkBAIC01NDcsNiArNTUzLDkgQEAKIGtleXdvcmRfdHkgX1B5X2tleXdvcmQoaWRlbnRpZmllciBhcmcsIGV4cHJfdHkgdmFsdWUsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgYWxpYXMoYTAsIGExLCBhMikgX1B5X2FsaWFzKGEwLCBhMSwgYTIpCiBhbGlhc190eSBfUHlfYWxpYXMoaWRlbnRpZmllciBuYW1lLCBpZGVudGlmaWVyIGFzbmFtZSwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSB3aXRoaXRlbShhMCwgYTEsIGEyKSBfUHlfd2l0aGl0ZW0oYTAsIGExLCBhMikKK3dpdGhpdGVtX3R5IF9QeV93aXRoaXRlbShleHByX3R5IGNvbnRleHRfZXhwciwgZXhwcl90eSBvcHRpb25hbF92YXJzLCBQeUFyZW5hCisgICAgICAgICAgICAgICAgICAgICAgICAgKmFyZW5hKTsKIAogUHlPYmplY3QqIFB5QVNUX21vZDJvYmoobW9kX3R5IHQpOwogbW9kX3R5IFB5QVNUX29iajJtb2QoUHlPYmplY3QqIGFzdCwgUHlBcmVuYSogYXJlbmEsIGludCBtb2RlKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLmggYi9JbmNsdWRlL1B5dGhvbi5oCmluZGV4IGQ2ZTQ3YzIuLmE3OGE3MjEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLmgKKysrIGIvSW5jbHVkZS9QeXRob24uaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgogCiAjaW5jbHVkZSAicHlwb3J0LmgiCisjaW5jbHVkZSAicHltYWNyby5oIgogCiAjaW5jbHVkZSAicHlhdG9taWMuaCIKIApAQCAtMTAwLDYgKzEwMSw3IEBACiAjaW5jbHVkZSAid2FybmluZ3MuaCIKICNpbmNsdWRlICJ3ZWFrcmVmb2JqZWN0LmgiCiAjaW5jbHVkZSAic3RydWN0c2VxLmgiCisjaW5jbHVkZSAibmFtZXNwYWNlb2JqZWN0LmgiCiAKICNpbmNsdWRlICJjb2RlY3MuaCIKICNpbmNsdWRlICJweWVycm9ycy5oIgpAQCAtMTI1LDQzICsxMjcsNiBAQAogI2luY2x1ZGUgInB5c3RyY21wLmgiCiAjaW5jbHVkZSAiZHRvYS5oIgogI2luY2x1ZGUgImZpbGV1dGlscy5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qIF9QeV9NYW5nbGUgaXMgZGVmaW5lZCBpbiBjb21waWxlLmMgKi8KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlfTWFuZ2xlKFB5T2JqZWN0ICpwLCBQeU9iamVjdCAqbmFtZSk7Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotLyogQXJndW1lbnQgbXVzdCBiZSBhIGNoYXIgb3IgYW4gaW50IGluIFstMTI4LCAxMjddIG9yIFswLCAyNTVdLiAqLwotI2RlZmluZSBQeV9DSEFSTUFTSyhjKSAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpKChjKSAmIDB4ZmYpKQotCiAjaW5jbHVkZSAicHlmcGUuaCIKIAotLyogVGhlc2UgZGVmaW5pdGlvbnMgbXVzdCBtYXRjaCBjb3JyZXNwb25kaW5nIGRlZmluaXRpb25zIGluIGdyYW1pbml0LmguCi0gICBUaGVyZSdzIGNvZGUgaW4gY29tcGlsZS5jIHRoYXQgY2hlY2tzIHRoYXQgdGhleSBhcmUgdGhlIHNhbWUuICovCi0jZGVmaW5lIFB5X3NpbmdsZV9pbnB1dCAyNTYKLSNkZWZpbmUgUHlfZmlsZV9pbnB1dCAyNTcKLSNkZWZpbmUgUHlfZXZhbF9pbnB1dCAyNTgKLQotI2lmZGVmIEhBVkVfUFRICi0vKiBHTlUgcHRoIHVzZXItc3BhY2UgdGhyZWFkIHN1cHBvcnQgKi8KLSNpbmNsdWRlIDxwdGguaD4KLSNlbmRpZgotCi0vKiBEZWZpbmUgbWFjcm9zIGZvciBpbmxpbmUgZG9jdW1lbnRhdGlvbi4gKi8KLSNkZWZpbmUgUHlEb2NfVkFSKG5hbWUpIHN0YXRpYyBjaGFyIG5hbWVbXQotI2RlZmluZSBQeURvY19TVFJWQVIobmFtZSxzdHIpIFB5RG9jX1ZBUihuYW1lKSA9IFB5RG9jX1NUUihzdHIpCi0jaWZkZWYgV0lUSF9ET0NfU1RSSU5HUwotI2RlZmluZSBQeURvY19TVFIoc3RyKSBzdHIKLSNlbHNlCi0jZGVmaW5lIFB5RG9jX1NUUihzdHIpICIiCi0jZW5kaWYKLQogI2VuZGlmIC8qICFQeV9QWVRIT05fSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hYnN0cmFjdC5oIGIvSW5jbHVkZS9hYnN0cmFjdC5oCmluZGV4IDBmZTA5NTYuLjQ0YjVhZjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYWJzdHJhY3QuaAorKysgYi9JbmNsdWRlL2Fic3RyYWN0LmgKQEAgLTcsNiArNyw3IEBACiAjaWZkZWYgUFlfU1NJWkVfVF9DTEVBTgogI2RlZmluZSBQeU9iamVjdF9DYWxsRnVuY3Rpb24gX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAogI2RlZmluZSBQeU9iamVjdF9DYWxsTWV0aG9kIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisjZGVmaW5lIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVAogI2VuZGlmCiAKIC8qIEFic3RyYWN0IE9iamVjdCBJbnRlcmZhY2UgKG1hbnkgdGhhbmtzIHRvIEppbSBGdWx0b24pICovCkBAIC0zMDcsMTEgKzMwOCwyMiBAQAogICAgICBQeXRob24gZXhwcmVzc2lvbjogby5tZXRob2QoYXJncykuCiAgICAgICAgKi8KIAorICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICptZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKKworICAgICAgIC8qCisgICAgICAgICBMaWtlIFB5T2JqZWN0X0NhbGxNZXRob2QsIGJ1dCBleHBlY3QgYSBfUHlfSWRlbnRpZmllciogYXMgdGhlCisgICAgICAgICBtZXRob2QgbmFtZS4KKyAgICAgICAqLworCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVChQeU9iamVjdCAqY2FsbGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVChQeU9iamVjdCAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfSWRlbnRpZmllciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CkBAIC0zMjcsNiArMzM5LDEwIEBACiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWV0aG9kLCAuLi4pOworICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKFB5T2JqZWN0ICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKwogCiAgICAgICAgLyoKICAgICAgQ2FsbCB0aGUgbWV0aG9kIG5hbWVkIG0gb2Ygb2JqZWN0IG8gd2l0aCBhIHZhcmlhYmxlIG51bWJlciBvZgpAQCAtNTE5LDExICs1MzUsMTIgQEAKIAogCiAKKyAgICAgLyogSW1wbGVtZW50YXRpb24gaW4gbWVtb3J5b2JqZWN0LmMgKi8KICAgICAgUHlBUElfRlVOQyhpbnQpIFB5QnVmZmVyX1RvQ29udGlndW91cyh2b2lkICpidWYsIFB5X2J1ZmZlciAqdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgY2hhciBmb3J0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgY2hhciBvcmRlcik7CiAKICAgICAgUHlBUElfRlVOQyhpbnQpIFB5QnVmZmVyX0Zyb21Db250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgdm9pZCAqYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIGNoYXIgZm9ydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgY2hhciBvcmRlcik7CiAKIAogICAgIC8qIENvcHkgbGVuIGJ5dGVzIG9mIGRhdGEgZnJvbSB0aGUgY29udGlndW91cyBjaHVuayBvZiBtZW1vcnkKQEAgLTU0Nyw3ICs1NjQsNyBAQAogICAgIC8qIENvcHkgdGhlIGRhdGEgZnJvbSB0aGUgc3JjIGJ1ZmZlciB0byB0aGUgYnVmZmVyIG9mIGRlc3RpbmF0aW9uCiAgICAgICovCiAKLSAgICAgUHlBUElfRlVOQyhpbnQpIFB5QnVmZmVyX0lzQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydCk7CisgICAgIFB5QVBJX0ZVTkMoaW50KSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoY29uc3QgUHlfYnVmZmVyICp2aWV3LCBjaGFyIGZvcnQpOwogCiAKICAgICAgUHlBUElfRlVOQyh2b2lkKSBQeUJ1ZmZlcl9GaWxsQ29udGlndW91c1N0cmlkZXMoaW50IG5kaW1zLApAQCAtNzYxLDIxICs3NzgsNiBAQAogICAgICBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5TnVtYmVyX0FzU3NpemVfdChQeU9iamVjdCAqbywgUHlPYmplY3QgKmV4Yyk7CiAKICAgICAgICAvKgotICAgICBSZXR1cm5zIHRoZSBJbnRlZ3JhbCBpbnN0YW5jZSBjb252ZXJ0ZWQgdG8gYW4gaW50LiBUaGUKLSAgICAgaW5zdGFuY2UgaXMgZXhwZWN0ZWQgdG8gYmUgaW50IG9yIGxvbmcgb3IgaGF2ZSBhbiBfX2ludF9fCi0gICAgIG1ldGhvZC4gU3RlYWxzIGludGVncmFsJ3MgcmVmZXJlbmNlLiBlcnJvcl9mb3JtYXQgd2lsbCBiZQotICAgICB1c2VkIHRvIGNyZWF0ZSB0aGUgVHlwZUVycm9yIGlmIGludGVncmFsIGlzbid0IGFjdHVhbGx5IGFuCi0gICAgIEludGVncmFsIGluc3RhbmNlLiBlcnJvcl9mb3JtYXQgc2hvdWxkIGJlIGEgZm9ybWF0IHN0cmluZwotICAgICB0aGF0IGNhbiBhY2NlcHQgYSBjaGFyKiBuYW1pbmcgaW50ZWdyYWwncyB0eXBlLgotICAgICAgICovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLSAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlOdW1iZXJfQ29udmVydEludGVncmFsVG9JbnQoCi0gICAgICAgICBQeU9iamVjdCAqaW50ZWdyYWwsCi0gICAgICAgICBjb25zdCBjaGFyKiBlcnJvcl9mb3JtYXQpOwotI2VuZGlmCi0KLSAgICAgICAvKgogICAgIFJldHVybnMgdGhlIG9iamVjdCBjb252ZXJ0ZWQgdG8gUHlfc3NpemVfdCBieSBnb2luZyB0aHJvdWdoCiAgICAgUHlOdW1iZXJfSW5kZXggZmlyc3QuICBJZiBhbiBvdmVyZmxvdyBlcnJvciBvY2N1cnMgd2hpbGUKICAgICBjb252ZXJ0aW5nIHRoZSBpbnQtb3ItbG9uZyB0byBQeV9zc2l6ZV90LCB0aGVuIHRoZSBzZWNvbmQgYXJndW1lbnQKQEAgLTEwMTQsNyArMTAxNiw3IEBACiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVNlcXVlbmNlX0Zhc3QoUHlPYmplY3QgKm8sIGNvbnN0IGNoYXIqIG0pOwogICAgICAgIC8qCi0gICAgIFJldHVybnMgdGhlIHNlcXVlbmNlLCBvLCBhcyBhIHR1cGxlLCB1bmxlc3MgaXQncyBhbHJlYWR5IGEKKyAgICAgUmV0dXJucyB0aGUgc2VxdWVuY2UsIG8sIGFzIGEgbGlzdCwgdW5sZXNzIGl0J3MgYWxyZWFkeSBhCiAgICAgIHR1cGxlIG9yIGxpc3QuICBVc2UgUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNIHRvIGFjY2VzcyB0aGUKICAgICAgbWVtYmVycyBvZiB0aGlzIGxpc3QsIGFuZCBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUgdG8gZ2V0IGl0cyBsZW5ndGguCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYXNkbC5oIGIvSW5jbHVkZS9hc2RsLmgKaW5kZXggOWJiMDY5Ny4uNmJmNjE4ZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hc2RsLmgKKysrIGIvSW5jbHVkZS9hc2RsLmgKQEAgLTMsNiArMyw3IEBACiAKIHR5cGVkZWYgUHlPYmplY3QgKiBpZGVudGlmaWVyOwogdHlwZWRlZiBQeU9iamVjdCAqIHN0cmluZzsKK3R5cGVkZWYgUHlPYmplY3QgKiBieXRlczsKIHR5cGVkZWYgUHlPYmplY3QgKiBvYmplY3Q7CiAKIC8qIEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGFzZGxfYy5weSB3YXMgY29tcGxldGVseQpAQCAtMTQsMTcgKzE1LDE3IEBACiAvKiBYWFggQSBzZXF1ZW5jZSBzaG91bGQgYmUgdHlwZWQgc28gdGhhdCBpdHMgdXNlIGNhbiBiZSB0eXBlY2hlY2tlZC4gKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludCBzaXplOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICB2b2lkICplbGVtZW50c1sxXTsKIH0gYXNkbF9zZXE7CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBpbnQgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgaW50IGVsZW1lbnRzWzFdOwogfSBhc2RsX2ludF9zZXE7CiAKLWFzZGxfc2VxICphc2RsX3NlcV9uZXcoaW50IHNpemUsIFB5QXJlbmEgKmFyZW5hKTsKLWFzZGxfaW50X3NlcSAqYXNkbF9pbnRfc2VxX25ldyhpbnQgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpOworYXNkbF9zZXEgKmFzZGxfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKTsKK2FzZGxfaW50X3NlcSAqYXNkbF9pbnRfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKTsKIAogI2RlZmluZSBhc2RsX3NlcV9HRVQoUywgSSkgKFMpLT5lbGVtZW50c1soSSldCiAjZGVmaW5lIGFzZGxfc2VxX0xFTihTKSAoKFMpID09IE5VTEwgPyAwIDogKFMpLT5zaXplKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hc3QuaCBiL0luY2x1ZGUvYXN0LmgKaW5kZXggYTAxNTMzNi4uMDU1ZThkYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hc3QuaAorKysgYi9JbmNsdWRlL2FzdC5oCkBAIC00LDYgKzQsNyBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorUHlBUElfRlVOQyhpbnQpIFB5QVNUX1ZhbGlkYXRlKG1vZF90eSk7CiBQeUFQSV9GVU5DKG1vZF90eSkgUHlBU1RfRnJvbU5vZGUoCiAgICAgY29uc3Qgbm9kZSAqbiwKICAgICBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ieXRlc29iamVjdC5oIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCmluZGV4IGUxYWY4OWYuLmQ3YzdmZmQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAorKysgYi9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKQEAgLTYyLDggKzYyLDYgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlCeXRlc19Db25jYXRBbmREZWwoUHlPYmplY3QgKiosIFB5T2JqZWN0ICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeUJ5dGVzX1Jlc2l6ZShQeU9iamVjdCAqKiwgUHlfc3NpemVfdCk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUJ5dGVzX0Zvcm1hdExvbmcoUHlPYmplY3QqLCBpbnQsIGludCwKLQkJCQkJCSAgaW50LCBjaGFyKiosIGludCopOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZS5oIGIvSW5jbHVkZS9jb2RlLmgKaW5kZXggZTc3M2I2YS4uN2M3ZTViZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlLmgKKysrIGIvSW5jbHVkZS9jb2RlLmgKQEAgLTIyLDYgKzIyLDcgQEAKICAgICBQeU9iamVjdCAqY29fZnJlZXZhcnM7CS8qIHR1cGxlIG9mIHN0cmluZ3MgKGZyZWUgdmFyaWFibGUgbmFtZXMpICovCiAgICAgUHlPYmplY3QgKmNvX2NlbGx2YXJzOyAgICAgIC8qIHR1cGxlIG9mIHN0cmluZ3MgKGNlbGwgdmFyaWFibGUgbmFtZXMpICovCiAgICAgLyogVGhlIHJlc3QgZG9lc24ndCBjb3VudCBmb3IgaGFzaCBvciBjb21wYXJpc29ucyAqLworICAgIHVuc2lnbmVkIGNoYXIgKmNvX2NlbGwyYXJnOyAvKiBNYXBzIGNlbGwgdmFycyB3aGljaCBhcmUgYXJndW1lbnRzLiAqLwogICAgIFB5T2JqZWN0ICpjb19maWxlbmFtZTsJLyogdW5pY29kZSAod2hlcmUgaXQgd2FzIGxvYWRlZCBmcm9tKSAqLwogICAgIFB5T2JqZWN0ICpjb19uYW1lOwkJLyogdW5pY29kZSAobmFtZSwgZm9yIHJlZmVyZW5jZSkgKi8KICAgICBpbnQgY29fZmlyc3RsaW5lbm87CQkvKiBmaXJzdCBzb3VyY2UgbGluZSBudW1iZXIgKi8KQEAgLTU3LDYgKzU4LDExIEBACiAKICNkZWZpbmUgQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwgIDB4NDAwMDAKIAorLyogVGhpcyB2YWx1ZSBpcyBmb3VuZCBpbiB0aGUgY29fY2VsbDJhcmcgYXJyYXkgd2hlbiB0aGUgYXNzb2NpYXRlZCBjZWxsCisgICB2YXJpYWJsZSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGFuIGFyZ3VtZW50LiBUaGUgbWF4aW11bSBudW1iZXIgb2YKKyAgIGFyZ3VtZW50cyBpcyAyNTUgKGluZGV4ZWQgdXAgdG8gMjU0KSwgc28gMjU1IHdvcmsgYXMgYSBzcGVjaWFsIGZsYWcuKi8KKyNkZWZpbmUgQ09fQ0VMTF9OT1RfQU5fQVJHIDI1NQorCiAvKiBUaGlzIHNob3VsZCBiZSBkZWZpbmVkIGlmIGEgZnV0dXJlIHN0YXRlbWVudCBtb2RpZmllcyB0aGUgc3ludGF4LgogICAgRm9yIGV4YW1wbGUsIHdoZW4gYSBrZXl3b3JkIGlzIGFkZGVkLgogKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZWNzLmggYi9JbmNsdWRlL2NvZGVjcy5oCmluZGV4IGRmZjA5ZTcuLjBkOWU5YjQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29kZWNzLmgKKysrIGIvSW5jbHVkZS9jb2RlY3MuaApAQCAtMTc0LDYgKzE3NCw4IEBACiAvKiByZXBsYWNlIHRoZSB1bmljb2RlIGVuY29kZSBlcnJvciB3aXRoIGJhY2tzbGFzaCBlc2NhcGVzIChceCwgXHUgYW5kIFxVKSAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4Yyk7CiAKK1B5QVBJX0RBVEEoY29uc3QgY2hhciAqKSBQeV9oZXhkaWdpdHM7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvbXBpbGUuaCBiL0luY2x1ZGUvY29tcGlsZS5oCmluZGV4IGJjNTNiMzkuLmFjMjYzNmQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29tcGlsZS5oCisrKyBiL0luY2x1ZGUvY29tcGlsZS5oCkBAIC0xLDcgKzEsNyBAQAotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2lmbmRlZiBQeV9DT01QSUxFX0gKICNkZWZpbmUgUHlfQ09NUElMRV9ICiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICNpbmNsdWRlICJjb2RlLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtMzgsOSArMzgsMTkgQEAKICAgICBQeUFyZW5hICphcmVuYSk7CiBQeUFQSV9GVU5DKFB5RnV0dXJlRmVhdHVyZXMgKikgUHlGdXR1cmVfRnJvbUFTVChzdHJ1Y3QgX21vZCAqLCBjb25zdCBjaGFyICopOwogCisvKiBfUHlfTWFuZ2xlIGlzIGRlZmluZWQgaW4gY29tcGlsZS5jICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X01hbmdsZShQeU9iamVjdCAqcCwgUHlPYmplY3QgKm5hbWUpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotI2VuZGlmIC8qICFQeV9DT01QSUxFX0ggKi8KKwogI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLworCisvKiBUaGVzZSBkZWZpbml0aW9ucyBtdXN0IG1hdGNoIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbnMgaW4gZ3JhbWluaXQuaC4KKyAgIFRoZXJlJ3MgY29kZSBpbiBjb21waWxlLmMgdGhhdCBjaGVja3MgdGhhdCB0aGV5IGFyZSB0aGUgc2FtZS4gKi8KKyNkZWZpbmUgUHlfc2luZ2xlX2lucHV0IDI1NgorI2RlZmluZSBQeV9maWxlX2lucHV0IDI1NworI2RlZmluZSBQeV9ldmFsX2lucHV0IDI1OAorCisjZW5kaWYgLyogIVB5X0NPTVBJTEVfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmggYi9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaAppbmRleCBjMzc5YjA4Li4xOTM0ZjNiIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaAorKysgYi9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaApAQCAtNjMsOSArNjMsMTIgQEAKIC8qIEZvcm1hdCB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBmb3JtYXRfc3BlYywgYXMgZGVmaW5lZCBpbiBQRVAgMzEwMQogICAgKEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nKS4gKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZChQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGF0ZXRpbWUuaCBiL0luY2x1ZGUvZGF0ZXRpbWUuaAppbmRleCBkYjU3YTE4Li40MWUzYmNmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2RhdGV0aW1lLmgKKysrIGIvSW5jbHVkZS9kYXRldGltZS5oCkBAIC0xMzUsNiArMTM1LDEyIEBACiAgICAgICgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbNF0gPDwgOCkgIHwgICAgICAgICAgIFwKICAgICAgICgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVs1XSkKIAorLyogQXBwbHkgZm9yIHRpbWUgZGVsdGEgaW5zdGFuY2VzICovCisjZGVmaW5lIFB5RGF0ZVRpbWVfREVMVEFfR0VUX0RBWVMobykgICAgICAgICAoKChQeURhdGVUaW1lX0RlbHRhKilvKS0+ZGF5cykKKyNkZWZpbmUgUHlEYXRlVGltZV9ERUxUQV9HRVRfU0VDT05EUyhvKSAgICAgICgoKFB5RGF0ZVRpbWVfRGVsdGEqKW8pLT5zZWNvbmRzKQorI2RlZmluZSBQeURhdGVUaW1lX0RFTFRBX0dFVF9NSUNST1NFQ09ORFMobykgICAgICAgICAgICBcCisgICAgKCgoUHlEYXRlVGltZV9EZWx0YSopbyktPm1pY3Jvc2Vjb25kcykKKwogCiAvKiBEZWZpbmUgc3RydWN0dXJlIGZvciBDIEFQSS4gKi8KIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGVzY3JvYmplY3QuaCBiL0luY2x1ZGUvZGVzY3JvYmplY3QuaAppbmRleCA2NDZiM2NjLi5lMmJhOTdmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9kZXNjcm9iamVjdC5oCkBAIC00Miw2ICs0Miw3IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5VHlwZU9iamVjdCAqZF90eXBlOwogICAgIFB5T2JqZWN0ICpkX25hbWU7CisgICAgUHlPYmplY3QgKmRfcXVhbG5hbWU7CiB9IFB5RGVzY3JPYmplY3Q7CiAKICNkZWZpbmUgUHlEZXNjcl9DT01NT04gUHlEZXNjck9iamVjdCBkX2NvbW1vbgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kaWN0b2JqZWN0LmggYi9JbmNsdWRlL2RpY3RvYmplY3QuaAppbmRleCBiMDI2Nzg1Li5kODlhYWM4IDEwMDY0NAotLS0gYS9JbmNsdWRlL2RpY3RvYmplY3QuaAorKysgYi9JbmNsdWRlL2RpY3RvYmplY3QuaApAQCAtMTMsNzggKzEzLDIwIEBACiAgICB0dW5pbmcgZGljdGlvbmFyaWVzLCBhbmQgc2V2ZXJhbCBpZGVhcyBmb3IgcG9zc2libGUgb3B0aW1pemF0aW9ucy4KICovCiAKLS8qCi1UaGVyZSBhcmUgdGhyZWUga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgotCi0xLiBVbnVzZWQuICBtZV9rZXkgPT0gbWVfdmFsdWUgPT0gTlVMTAotICAgRG9lcyBub3QgaG9sZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIgbm93IGFuZCBuZXZlciBkaWQuICBVbnVzZWQgY2FuCi0gICB0cmFuc2l0aW9uIHRvIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2gKLSAgIG1lX2tleSBpcyBOVUxMLCBhbmQgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KLQotMi4gQWN0aXZlLiAgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX2tleSAhPSBkdW1teSBhbmQgbWVfdmFsdWUgIT0gTlVMTAotICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IHVwb24KLSAgIGtleSBkZWxldGlvbi4gIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaCBtZV92YWx1ZSAhPSBOVUxMLgotCi0zLiBEdW1teS4gIG1lX2tleSA9PSBkdW1teSBhbmQgbWVfdmFsdWUgPT0gTlVMTAotICAgUHJldmlvdXNseSBoZWxkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciwgYnV0IHRoYXQgd2FzIGRlbGV0ZWQgYW5kIGFuCi0gICBhY3RpdmUgcGFpciBoYXMgbm90IHlldCBvdmVyd3JpdHRlbiB0aGUgc2xvdC4gIER1bW15IGNhbiB0cmFuc2l0aW9uIHRvCi0gICBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgRHVtbXkgc2xvdHMgY2Fubm90IGJlIG1hZGUgVW51c2VkIGFnYWluCi0gICAoY2Fubm90IGhhdmUgbWVfa2V5IHNldCB0byBOVUxMKSwgZWxzZSB0aGUgcHJvYmUgc2VxdWVuY2UgaW4gY2FzZSBvZgotICAgY29sbGlzaW9uIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGtub3cgdGhleSB3ZXJlIG9uY2UgYWN0aXZlLgotCi1Ob3RlOiAucG9waXRlbSgpIGFidXNlcyB0aGUgbWVfaGFzaCBmaWVsZCBvZiBhbiBVbnVzZWQgb3IgRHVtbXkgc2xvdCB0bwotaG9sZCBhIHNlYXJjaCBmaW5nZXIuICBUaGUgbWVfaGFzaCBmaWVsZCBvZiBVbnVzZWQgb3IgRHVtbXkgc2xvdHMgaGFzIG5vCi1tZWFuaW5nIG90aGVyd2lzZS4KLSovCi0KLS8qIFB5RGljdF9NSU5TSVpFIGlzIHRoZSBtaW5pbXVtIHNpemUgb2YgYSBkaWN0aW9uYXJ5LiAgVGhpcyBtYW55IHNsb3RzIGFyZQotICogYWxsb2NhdGVkIGRpcmVjdGx5IGluIHRoZSBkaWN0IG9iamVjdCAoaW4gdGhlIG1hX3NtYWxsdGFibGUgbWVtYmVyKS4KLSAqIEl0IG11c3QgYmUgYSBwb3dlciBvZiAyLCBhbmQgYXQgbGVhc3QgNC4gIDggYWxsb3dzIGRpY3RzIHdpdGggbm8gbW9yZQotICogdGhhbiA1IGFjdGl2ZSBlbnRyaWVzIHRvIGxpdmUgaW4gbWFfc21hbGx0YWJsZSAoYW5kIHNvIGF2b2lkIGFuCi0gKiBhZGRpdGlvbmFsIG1hbGxvYyk7IGluc3RydW1lbnRhdGlvbiBzdWdnZXN0ZWQgdGhpcyBzdWZmaWNlcyBmb3IgdGhlCi0gKiBtYWpvcml0eSBvZiBkaWN0cyAoY29uc2lzdGluZyBtb3N0bHkgb2YgdXN1YWxseS1zbWFsbCBpbnN0YW5jZSBkaWN0cyBhbmQKLSAqIHVzdWFsbHktc21hbGwgZGljdHMgY3JlYXRlZCB0byBwYXNzIGtleXdvcmQgYXJndW1lbnRzKS4KLSAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotI2RlZmluZSBQeURpY3RfTUlOU0laRSA4CiAKK3R5cGVkZWYgc3RydWN0IF9kaWN0a2V5c29iamVjdCBQeURpY3RLZXlzT2JqZWN0OworCisvKiBUaGUgbWFfdmFsdWVzIHBvaW50ZXIgaXMgTlVMTCBmb3IgYSBjb21iaW5lZCB0YWJsZQorICogb3IgcG9pbnRzIHRvIGFuIGFycmF5IG9mIFB5T2JqZWN0KiBmb3IgYSBzcGxpdCB0YWJsZQorICovCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiBtZV9rZXkuICovCi0gICAgUHlfaGFzaF90IG1lX2hhc2g7Ci0gICAgUHlPYmplY3QgKm1lX2tleTsKLSAgICBQeU9iamVjdCAqbWVfdmFsdWU7Ci19IFB5RGljdEVudHJ5OwotCi0vKgotVG8gZW5zdXJlIHRoZSBsb29rdXAgYWxnb3JpdGhtIHRlcm1pbmF0ZXMsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIFVudXNlZAotc2xvdCAoTlVMTCBrZXkpIGluIHRoZSB0YWJsZS4KLVRoZSB2YWx1ZSBtYV9maWxsIGlzIHRoZSBudW1iZXIgb2Ygbm9uLU5VTEwga2V5cyAoc3VtIG9mIEFjdGl2ZSBhbmQgRHVtbXkpOwotbWFfdXNlZCBpcyB0aGUgbnVtYmVyIG9mIG5vbi1OVUxMLCBub24tZHVtbXkga2V5cyAoPT0gdGhlIG51bWJlciBvZiBub24tTlVMTAotdmFsdWVzID09IHRoZSBudW1iZXIgb2YgQWN0aXZlIGl0ZW1zKS4KLVRvIGF2b2lkIHNsb3dpbmcgZG93biBsb29rdXBzIG9uIGEgbmVhci1mdWxsIHRhYmxlLCB3ZSByZXNpemUgdGhlIHRhYmxlIHdoZW4KLWl0J3MgdHdvLXRoaXJkcyBmdWxsLgotKi8KLXR5cGVkZWYgc3RydWN0IF9kaWN0b2JqZWN0IFB5RGljdE9iamVjdDsKLXN0cnVjdCBfZGljdG9iamVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5X3NzaXplX3QgbWFfZmlsbDsgIC8qICMgQWN0aXZlICsgIyBEdW1teSAqLwotICAgIFB5X3NzaXplX3QgbWFfdXNlZDsgIC8qICMgQWN0aXZlICovCisgICAgUHlfc3NpemVfdCBtYV91c2VkOworICAgIFB5RGljdEtleXNPYmplY3QgKm1hX2tleXM7CisgICAgUHlPYmplY3QgKiptYV92YWx1ZXM7Cit9IFB5RGljdE9iamVjdDsKIAotICAgIC8qIFRoZSB0YWJsZSBjb250YWlucyBtYV9tYXNrICsgMSBzbG90cywgYW5kIHRoYXQncyBhIHBvd2VyIG9mIDIuCi0gICAgICogV2Ugc3RvcmUgdGhlIG1hc2sgaW5zdGVhZCBvZiB0aGUgc2l6ZSBiZWNhdXNlIHRoZSBtYXNrIGlzIG1vcmUKLSAgICAgKiBmcmVxdWVudGx5IG5lZWRlZC4KLSAgICAgKi8KLSAgICBQeV9zc2l6ZV90IG1hX21hc2s7Ci0KLSAgICAvKiBtYV90YWJsZSBwb2ludHMgdG8gbWFfc21hbGx0YWJsZSBmb3Igc21hbGwgdGFibGVzLCBlbHNlIHRvCi0gICAgICogYWRkaXRpb25hbCBtYWxsb2MnZWQgbWVtb3J5LiAgbWFfdGFibGUgaXMgbmV2ZXIgTlVMTCEgIFRoaXMgcnVsZQotICAgICAqIHNhdmVzIHJlcGVhdGVkIHJ1bnRpbWUgbnVsbC10ZXN0cyBpbiB0aGUgd29ya2hvcnNlIGdldGl0ZW0gYW5kCi0gICAgICogc2V0aXRlbSBjYWxscy4KLSAgICAgKi8KLSAgICBQeURpY3RFbnRyeSAqbWFfdGFibGU7Ci0gICAgUHlEaWN0RW50cnkgKigqbWFfbG9va3VwKShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCk7Ci0gICAgUHlEaWN0RW50cnkgbWFfc21hbGx0YWJsZVtQeURpY3RfTUlOU0laRV07Ci19OwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeURpY3RfVHlwZTsKQEAgLTEwOSwxMiArNTEsMTYgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X05ldyh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IoUHlPYmplY3QgKmRwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlEaWN0X0NsZWFyKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X05leHQoCiAgICAgUHlPYmplY3QgKm1wLCBQeV9zc2l6ZV90ICpwb3MsIFB5T2JqZWN0ICoqa2V5LCBQeU9iamVjdCAqKnZhbHVlKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5RGljdEtleXNPYmplY3QgKl9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKHZvaWQpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9HZW5lcmljR2V0RGljdChQeU9iamVjdCAqLCB2b2lkICopOwogUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfTmV4dCgKICAgICBQeU9iamVjdCAqbXAsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5T2JqZWN0ICoqdmFsdWUsIFB5X2hhc2hfdCAqaGFzaCk7CiAjZW5kaWYKQEAgLTEyOSw2ICs3NSwxMCBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X05ld1ByZXNpemVkKFB5X3NzaXplX3QgbWludXNlZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeURpY3RfTWF5YmVVbnRyYWNrKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKGludCkgX1B5RGljdF9IYXNPbmx5U3RyaW5nS2V5cyhQeU9iamVjdCAqbXApOworUHlfc3NpemVfdCBfUHlEaWN0X0tleXNTaXplKFB5RGljdEtleXNPYmplY3QgKmtleXMpOworI2RlZmluZSBfUHlEaWN0X0hhc1NwbGl0VGFibGUoZCkgKChkKS0+bWFfdmFsdWVzICE9IE5VTEwpCisKK1B5QVBJX0ZVTkMoaW50KSBQeURpY3RfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKICNlbmRpZgogCiAvKiBQeURpY3RfVXBkYXRlKG1wLCBvdGhlcikgaXMgZXF1aXZhbGVudCB0byBQeURpY3RfTWVyZ2UobXAsIG90aGVyLCAxKS4gKi8KQEAgLTE1Myw5ICsxMDMsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcnJpZGUpOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXksIFB5T2JqZWN0ICppdGVtKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X1NldEl0ZW1JZChQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXkpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitpbnQgX1B5T2JqZWN0RGljdF9TZXRJdGVtKFB5VHlwZU9iamVjdCAqdHAsIFB5T2JqZWN0ICoqZGljdHB0ciwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSk7CitQeU9iamVjdCAqX1B5RGljdF9Mb2FkR2xvYmFsKFB5RGljdE9iamVjdCAqLCBQeURpY3RPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKHZvaWQpIF9QeURpY3RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2R0b2EuaCBiL0luY2x1ZGUvZHRvYS5oCmluZGV4IDgxOWJkMGYuLjliZmI2MjUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZHRvYS5oCisrKyBiL0luY2x1ZGUvZHRvYS5oCkBAIC04LDYgKzgsOCBAQAogUHlBUElfRlVOQyhjaGFyICopIF9QeV9kZ19kdG9hKGRvdWJsZSBkLCBpbnQgbW9kZSwgaW50IG5kaWdpdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmRlY3B0LCBpbnQgKnNpZ24sIGNoYXIgKipydmUpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlfZGdfZnJlZWR0b2EoY2hhciAqcyk7CitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5X2RnX3N0ZG5hbihpbnQgc2lnbik7CitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5X2RnX2luZmluaXR5KGludCBzaWduKTsKIAogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZXJyY29kZS5oIGIvSW5jbHVkZS9lcnJjb2RlLmgKaW5kZXggNmJiM2NjMS4uNTk0NjY4NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9lcnJjb2RlLmgKKysrIGIvSW5jbHVkZS9lcnJjb2RlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgRV9FT0xTCQkyNAkvKiBFT0wgaW4gc2luZ2xlLXF1b3RlZCBzdHJpbmcgKi8KICNkZWZpbmUgRV9MSU5FQ09OVAkyNQkvKiBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgYSBsaW5lIGNvbnRpbnVhdGlvbiAqLwogI2RlZmluZSBFX0lERU5USUZJRVIgICAgMjYgICAgICAvKiBJbnZhbGlkIGNoYXJhY3RlcnMgaW4gaWRlbnRpZmllciAqLworI2RlZmluZSBFX0JBRFNJTkdMRQkyNwkvKiBJbGwtZm9ybWVkIHNpbmdsZSBzdGF0ZW1lbnQgaW5wdXQgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZpbGV1dGlscy5oIGIvSW5jbHVkZS9maWxldXRpbHMuaAppbmRleCAyZmFkZTliLi43YzE4Y2YyIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ZpbGV1dGlscy5oCisrKyBiL0luY2x1ZGUvZmlsZXV0aWxzLmgKQEAgLTUsNiArNSw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9kZXZpY2VfZW5jb2RpbmcoaW50KTsKKwogUHlBUElfRlVOQyh3Y2hhcl90ICopIF9QeV9jaGFyMndjaGFyKAogICAgIGNvbnN0IGNoYXIgKmFyZywKICAgICBzaXplX3QgKnNpemUpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9mbG9hdG9iamVjdC5oIGIvSW5jbHVkZS9mbG9hdG9iamVjdC5oCmluZGV4IDkwZjBhNDUuLmUyNDBmZGIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmxvYXRvYmplY3QuaAorKysgYi9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKQEAgLTI3LDEyICsyNywxMiBAQAogI2RlZmluZSBQeV9SRVRVUk5fTkFOIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTkFOKQogI2VuZGlmCiAKLSNkZWZpbmUgUHlfUkVUVVJOX0lORihzaWduKSBkbwkJCQkJXAotCWlmIChjb3B5c2lnbigxLiwgc2lnbikgPT0gMS4pIHsJCQkJXAotCQlyZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKFB5X0hVR0VfVkFMKTsJXAotCX0gZWxzZSB7CQkJCQkJXAotCQlyZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKC1QeV9IVUdFX1ZBTCk7CVwKLQl9IHdoaWxlKDApCisjZGVmaW5lIFB5X1JFVFVSTl9JTkYoc2lnbikgZG8gICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGNvcHlzaWduKDEuLCBzaWduKSA9PSAxLikgeyAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfSFVHRV9WQUwpOyAgICBcCisgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoLVB5X0hVR0VfVkFMKTsgICBcCisgICAgfSB3aGlsZSgwKQogCiBQeUFQSV9GVU5DKGRvdWJsZSkgUHlGbG9hdF9HZXRNYXgodm9pZCk7CiBQeUFQSV9GVU5DKGRvdWJsZSkgUHlGbG9hdF9HZXRNaW4odm9pZCk7CkBAIC0xMTAsMTEgKzExMCwxNiBAQAogLyogZnJlZSBsaXN0IGFwaSAqLwogUHlBUElfRlVOQyhpbnQpIFB5RmxvYXRfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlGbG9hdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUqIG91dCk7CisKIC8qIEZvcm1hdCB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBmb3JtYXRfc3BlYywgYXMgZGVmaW5lZCBpbiBQRVAgMzEwMQogICAgKEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nKS4gKi8KLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWQoUHlPYmplY3QgKm9iaiwKLQkJCQkJICAgICAgIFB5X1VOSUNPREUgKmZvcm1hdF9zcGVjLAotCQkJCQkgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pOworUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZnJhbWVvYmplY3QuaCBiL0luY2x1ZGUvZnJhbWVvYmplY3QuaAppbmRleCAxZmI2NGJiLi5hYzJmNzkwIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ZyYW1lb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mcmFtZW9iamVjdC5oCkBAIC05LDQ1ICs5LDQ1IEBACiAjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludCBiX3R5cGU7CQkJLyogd2hhdCBraW5kIG9mIGJsb2NrIHRoaXMgaXMgKi8KLSAgICBpbnQgYl9oYW5kbGVyOwkJLyogd2hlcmUgdG8ganVtcCB0byBmaW5kIGhhbmRsZXIgKi8KLSAgICBpbnQgYl9sZXZlbDsJCS8qIHZhbHVlIHN0YWNrIGxldmVsIHRvIHBvcCB0byAqLworICAgIGludCBiX3R5cGU7ICAgICAgICAgICAgICAgICAvKiB3aGF0IGtpbmQgb2YgYmxvY2sgdGhpcyBpcyAqLworICAgIGludCBiX2hhbmRsZXI7ICAgICAgICAgICAgICAvKiB3aGVyZSB0byBqdW1wIHRvIGZpbmQgaGFuZGxlciAqLworICAgIGludCBiX2xldmVsOyAgICAgICAgICAgICAgICAvKiB2YWx1ZSBzdGFjayBsZXZlbCB0byBwb3AgdG8gKi8KIH0gUHlUcnlCbG9jazsKIAogdHlwZWRlZiBzdHJ1Y3QgX2ZyYW1lIHsKICAgICBQeU9iamVjdF9WQVJfSEVBRAotICAgIHN0cnVjdCBfZnJhbWUgKmZfYmFjazsJLyogcHJldmlvdXMgZnJhbWUsIG9yIE5VTEwgKi8KLSAgICBQeUNvZGVPYmplY3QgKmZfY29kZTsJLyogY29kZSBzZWdtZW50ICovCi0gICAgUHlPYmplY3QgKmZfYnVpbHRpbnM7CS8qIGJ1aWx0aW4gc3ltYm9sIHRhYmxlIChQeURpY3RPYmplY3QpICovCi0gICAgUHlPYmplY3QgKmZfZ2xvYmFsczsJLyogZ2xvYmFsIHN5bWJvbCB0YWJsZSAoUHlEaWN0T2JqZWN0KSAqLwotICAgIFB5T2JqZWN0ICpmX2xvY2FsczsJCS8qIGxvY2FsIHN5bWJvbCB0YWJsZSAoYW55IG1hcHBpbmcpICovCi0gICAgUHlPYmplY3QgKipmX3ZhbHVlc3RhY2s7CS8qIHBvaW50cyBhZnRlciB0aGUgbGFzdCBsb2NhbCAqLworICAgIHN0cnVjdCBfZnJhbWUgKmZfYmFjazsgICAgICAvKiBwcmV2aW91cyBmcmFtZSwgb3IgTlVMTCAqLworICAgIFB5Q29kZU9iamVjdCAqZl9jb2RlOyAgICAgICAvKiBjb2RlIHNlZ21lbnQgKi8KKyAgICBQeU9iamVjdCAqZl9idWlsdGluczsgICAgICAgLyogYnVpbHRpbiBzeW1ib2wgdGFibGUgKFB5RGljdE9iamVjdCkgKi8KKyAgICBQeU9iamVjdCAqZl9nbG9iYWxzOyAgICAgICAgLyogZ2xvYmFsIHN5bWJvbCB0YWJsZSAoUHlEaWN0T2JqZWN0KSAqLworICAgIFB5T2JqZWN0ICpmX2xvY2FsczsgICAgICAgICAvKiBsb2NhbCBzeW1ib2wgdGFibGUgKGFueSBtYXBwaW5nKSAqLworICAgIFB5T2JqZWN0ICoqZl92YWx1ZXN0YWNrOyAgICAvKiBwb2ludHMgYWZ0ZXIgdGhlIGxhc3QgbG9jYWwgKi8KICAgICAvKiBOZXh0IGZyZWUgc2xvdCBpbiBmX3ZhbHVlc3RhY2suICBGcmFtZSBjcmVhdGlvbiBzZXRzIHRvIGZfdmFsdWVzdGFjay4KICAgICAgICBGcmFtZSBldmFsdWF0aW9uIHVzdWFsbHkgTlVMTHMgaXQsIGJ1dCBhIGZyYW1lIHRoYXQgeWllbGRzIHNldHMgaXQKICAgICAgICB0byB0aGUgY3VycmVudCBzdGFjayB0b3AuICovCiAgICAgUHlPYmplY3QgKipmX3N0YWNrdG9wOwotICAgIFB5T2JqZWN0ICpmX3RyYWNlOwkJLyogVHJhY2UgZnVuY3Rpb24gKi8KKyAgICBQeU9iamVjdCAqZl90cmFjZTsgICAgICAgICAgLyogVHJhY2UgZnVuY3Rpb24gKi8KIAotCS8qIEluIGEgZ2VuZXJhdG9yLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gc3dhcCBiZXR3ZWVuIHRoZSBleGNlcHRpb24KLQkgICBzdGF0ZSBpbnNpZGUgdGhlIGdlbmVyYXRvciBhbmQgdGhlIGV4Y2VwdGlvbiBzdGF0ZSBvZiB0aGUgY2FsbGluZwotCSAgIGZyYW1lICh3aGljaCBzaG91bGRuJ3QgYmUgaW1wYWN0ZWQgd2hlbiB0aGUgZ2VuZXJhdG9yICJ5aWVsZHMiCi0JICAgZnJvbSBhbiBleGNlcHQgaGFuZGxlcikuCi0JICAgVGhlc2UgdGhyZWUgZmllbGRzIGV4aXN0IGV4YWN0bHkgZm9yIHRoYXQsIGFuZCBhcmUgdW51c2VkIGZvcgotCSAgIG5vbi1nZW5lcmF0b3IgZnJhbWVzLiBTZWUgdGhlIFNBVkVfRVhDX1NUQVRFIGFuZCBTV0FQX0VYQ19TVEFURQotCSAgIG1hY3JvcyBpbiBjZXZhbC5jIGZvciBkZXRhaWxzIG9mIHRoZWlyIHVzZS4gKi8KKyAgICAgICAgLyogSW4gYSBnZW5lcmF0b3IsIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBzd2FwIGJldHdlZW4gdGhlIGV4Y2VwdGlvbgorICAgICAgICAgICBzdGF0ZSBpbnNpZGUgdGhlIGdlbmVyYXRvciBhbmQgdGhlIGV4Y2VwdGlvbiBzdGF0ZSBvZiB0aGUgY2FsbGluZworICAgICAgICAgICBmcmFtZSAod2hpY2ggc2hvdWxkbid0IGJlIGltcGFjdGVkIHdoZW4gdGhlIGdlbmVyYXRvciAieWllbGRzIgorICAgICAgICAgICBmcm9tIGFuIGV4Y2VwdCBoYW5kbGVyKS4KKyAgICAgICAgICAgVGhlc2UgdGhyZWUgZmllbGRzIGV4aXN0IGV4YWN0bHkgZm9yIHRoYXQsIGFuZCBhcmUgdW51c2VkIGZvcgorICAgICAgICAgICBub24tZ2VuZXJhdG9yIGZyYW1lcy4gU2VlIHRoZSBTQVZFX0VYQ19TVEFURSBhbmQgU1dBUF9FWENfU1RBVEUKKyAgICAgICAgICAgbWFjcm9zIGluIGNldmFsLmMgZm9yIGRldGFpbHMgb2YgdGhlaXIgdXNlLiAqLwogICAgIFB5T2JqZWN0ICpmX2V4Y190eXBlLCAqZl9leGNfdmFsdWUsICpmX2V4Y190cmFjZWJhY2s7CiAKICAgICBQeVRocmVhZFN0YXRlICpmX3RzdGF0ZTsKLSAgICBpbnQgZl9sYXN0aTsJCS8qIExhc3QgaW5zdHJ1Y3Rpb24gaWYgY2FsbGVkICovCisgICAgaW50IGZfbGFzdGk7ICAgICAgICAgICAgICAgIC8qIExhc3QgaW5zdHJ1Y3Rpb24gaWYgY2FsbGVkICovCiAgICAgLyogQ2FsbCBQeUZyYW1lX0dldExpbmVOdW1iZXIoKSBpbnN0ZWFkIG9mIHJlYWRpbmcgdGhpcyBmaWVsZAogICAgICAgIGRpcmVjdGx5LiAgQXMgb2YgMi4zIGZfbGluZW5vIGlzIG9ubHkgdmFsaWQgd2hlbiB0cmFjaW5nIGlzCiAgICAgICAgYWN0aXZlIChpLmUuIHdoZW4gZl90cmFjZSBpcyBzZXQpLiAgQXQgb3RoZXIgdGltZXMgd2UgdXNlCiAgICAgICAgUHlDb2RlX0FkZHIyTGluZSB0byBjYWxjdWxhdGUgdGhlIGxpbmUgZnJvbSB0aGUgY3VycmVudAogICAgICAgIGJ5dGVjb2RlIGluZGV4LiAqLwotICAgIGludCBmX2xpbmVubzsJCS8qIEN1cnJlbnQgbGluZSBudW1iZXIgKi8KLSAgICBpbnQgZl9pYmxvY2s7CQkvKiBpbmRleCBpbiBmX2Jsb2Nrc3RhY2sgKi8KKyAgICBpbnQgZl9saW5lbm87ICAgICAgICAgICAgICAgLyogQ3VycmVudCBsaW5lIG51bWJlciAqLworICAgIGludCBmX2libG9jazsgICAgICAgICAgICAgICAvKiBpbmRleCBpbiBmX2Jsb2Nrc3RhY2sgKi8KICAgICBQeVRyeUJsb2NrIGZfYmxvY2tzdGFja1tDT19NQVhCTE9DS1NdOyAvKiBmb3IgdHJ5IGFuZCBsb29wIGJsb2NrcyAqLwotICAgIFB5T2JqZWN0ICpmX2xvY2Fsc3BsdXNbMV07CS8qIGxvY2FscytzdGFjaywgZHluYW1pY2FsbHkgc2l6ZWQgKi8KKyAgICBQeU9iamVjdCAqZl9sb2NhbHNwbHVzWzFdOyAgLyogbG9jYWxzK3N0YWNrLCBkeW5hbWljYWxseSBzaXplZCAqLwogfSBQeUZyYW1lT2JqZWN0OwogCiAKQEAgLTc5LDYgKzc5LDggQEAKIAogUHlBUElfRlVOQyhpbnQpIFB5RnJhbWVfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlGcmFtZV9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CisKIC8qIFJldHVybiB0aGUgbGluZSBvZiBjb2RlIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLiAqLwogUHlBUElfRlVOQyhpbnQpIFB5RnJhbWVfR2V0TGluZU51bWJlcihQeUZyYW1lT2JqZWN0ICopOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Z1bmNvYmplY3QuaCBiL0luY2x1ZGUvZnVuY29iamVjdC5oCmluZGV4IDUyMWQ4N2IuLmNjMTQyNmMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZnVuY29iamVjdC5oCisrKyBiL0luY2x1ZGUvZnVuY29iamVjdC5oCkBAIC0zMSw2ICszMSw3IEBACiAgICAgUHlPYmplY3QgKmZ1bmNfd2Vha3JlZmxpc3Q7CS8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2VzICovCiAgICAgUHlPYmplY3QgKmZ1bmNfbW9kdWxlOwkvKiBUaGUgX19tb2R1bGVfXyBhdHRyaWJ1dGUsIGNhbiBiZSBhbnl0aGluZyAqLwogICAgIFB5T2JqZWN0ICpmdW5jX2Fubm90YXRpb25zOwkvKiBBbm5vdGF0aW9ucywgYSBkaWN0IG9yIE5VTEwgKi8KKyAgICBQeU9iamVjdCAqZnVuY19xdWFsbmFtZTsgICAgLyogVGhlIHF1YWxpZmllZCBuYW1lICovCiAKICAgICAvKiBJbnZhcmlhbnQ6CiAgICAgICogICAgIGZ1bmNfY2xvc3VyZSBjb250YWlucyB0aGUgYmluZGluZ3MgZm9yIGZ1bmNfY29kZS0+Y29fZnJlZXZhcnMsIHNvCkBAIC00NCw2ICs0NSw3IEBACiAjZGVmaW5lIFB5RnVuY3Rpb25fQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlGdW5jdGlvbl9UeXBlKQogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fTmV3KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGdW5jdGlvbl9HZXRDb2RlKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX0dldEdsb2JhbHMoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fR2V0TW9kdWxlKFB5T2JqZWN0ICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9nZW5vYmplY3QuaCBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKaW5kZXggZDI5ZmIxZS4uZWQ0NTFiYSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9nZW5vYmplY3QuaAorKysgYi9JbmNsdWRlL2dlbm9iamVjdC5oCkBAIC0xMSwyMCArMTEsMjAgQEAKIHN0cnVjdCBfZnJhbWU7IC8qIEF2b2lkIGluY2x1ZGluZyBmcmFtZW9iamVjdC5oICovCiAKIHR5cGVkZWYgc3RydWN0IHsKLQlQeU9iamVjdF9IRUFECi0JLyogVGhlIGdpXyBwcmVmaXggaXMgaW50ZW5kZWQgdG8gcmVtaW5kIG9mIGdlbmVyYXRvci1pdGVyYXRvci4gKi8KKyAgICBQeU9iamVjdF9IRUFECisgICAgLyogVGhlIGdpXyBwcmVmaXggaXMgaW50ZW5kZWQgdG8gcmVtaW5kIG9mIGdlbmVyYXRvci1pdGVyYXRvci4gKi8KIAotCS8qIE5vdGU6IGdpX2ZyYW1lIGNhbiBiZSBOVUxMIGlmIHRoZSBnZW5lcmF0b3IgaXMgImZpbmlzaGVkIiAqLwotCXN0cnVjdCBfZnJhbWUgKmdpX2ZyYW1lOworICAgIC8qIE5vdGU6IGdpX2ZyYW1lIGNhbiBiZSBOVUxMIGlmIHRoZSBnZW5lcmF0b3IgaXMgImZpbmlzaGVkIiAqLworICAgIHN0cnVjdCBfZnJhbWUgKmdpX2ZyYW1lOwogCi0JLyogVHJ1ZSBpZiBnZW5lcmF0b3IgaXMgYmVpbmcgZXhlY3V0ZWQuICovCi0JaW50IGdpX3J1bm5pbmc7Ci0gICAgCi0JLyogVGhlIGNvZGUgb2JqZWN0IGJhY2tpbmcgdGhlIGdlbmVyYXRvciAqLwotCVB5T2JqZWN0ICpnaV9jb2RlOworICAgIC8qIFRydWUgaWYgZ2VuZXJhdG9yIGlzIGJlaW5nIGV4ZWN1dGVkLiAqLworICAgIGNoYXIgZ2lfcnVubmluZzsKIAotCS8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2UuICovCi0JUHlPYmplY3QgKmdpX3dlYWtyZWZsaXN0OworICAgIC8qIFRoZSBjb2RlIG9iamVjdCBiYWNraW5nIHRoZSBnZW5lcmF0b3IgKi8KKyAgICBQeU9iamVjdCAqZ2lfY29kZTsKKworICAgIC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2UuICovCisgICAgUHlPYmplY3QgKmdpX3dlYWtyZWZsaXN0OwogfSBQeUdlbk9iamVjdDsKIAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5R2VuX1R5cGU7CkBAIC0zNCw2ICszNCw4IEBACiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlHZW5fTmV3KHN0cnVjdCBfZnJhbWUgKik7CiBQeUFQSV9GVU5DKGludCkgUHlHZW5fTmVlZHNGaW5hbGl6aW5nKFB5R2VuT2JqZWN0ICopOworUHlBUElfRlVOQyhpbnQpIF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZShQeU9iamVjdCAqKik7CitQeU9iamVjdCAqX1B5R2VuX1NlbmQoUHlHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ncmFtaW5pdC5oIGIvSW5jbHVkZS9ncmFtaW5pdC5oCmluZGV4IGUwZTI3ZjkuLjNlYzk0OWEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ3JhbWluaXQuaAorKysgYi9JbmNsdWRlL2dyYW1pbml0LmgKQEAgLTgxLDMgKzgxLDQgQEAKICNkZWZpbmUgY29tcF9pZiAzMzQKICNkZWZpbmUgZW5jb2RpbmdfZGVjbCAzMzUKICNkZWZpbmUgeWllbGRfZXhwciAzMzYKKyNkZWZpbmUgeWllbGRfYXJnIDMzNwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbXBvcnQuaCBiL0luY2x1ZGUvaW1wb3J0LmgKaW5kZXggNDAwZTk3Yy4uZmRjMjczMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbXBvcnQuaAorKysgYi9JbmNsdWRlL2ltcG9ydC5oCkBAIC03LDYgKzcsOSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRaaXBfSW5pdCh2b2lkKTsKKworUHlNT0RJTklUX0ZVTkMgUHlJbml0X2ltcCh2b2lkKTsKIFB5QVBJX0ZVTkMobG9uZykgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIodm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlJbXBvcnRfR2V0TWFnaWNUYWcodm9pZCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlKApAQCAtMjQsNyArMjcsMTYgQEAKICAgICBjaGFyICpwYXRobmFtZSwgICAgICAgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCiAgICAgY2hhciAqY3BhdGhuYW1lICAgICAgICAgICAgIC8qIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KAorICAgIFB5T2JqZWN0ICpuYW1lLAorICAgIFB5T2JqZWN0ICpjbywKKyAgICBQeU9iamVjdCAqcGF0aG5hbWUsCisgICAgUHlPYmplY3QgKmNwYXRobmFtZQorICAgICk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0dldE1vZHVsZURpY3Qodm9pZCk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZQorICAgICk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0FkZE1vZHVsZSgKICAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwpAQCAtMzUsNyArNDcsMTQgQEAKICAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbCgKLSAgICBjaGFyICpuYW1lLCAgICAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KKyAgICBjb25zdCBjaGFyICpuYW1lLCAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KKyAgICBQeU9iamVjdCAqZ2xvYmFscywKKyAgICBQeU9iamVjdCAqbG9jYWxzLAorICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwKKyAgICBpbnQgbGV2ZWwKKyAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZSwKICAgICBQeU9iamVjdCAqZ2xvYmFscywKICAgICBQeU9iamVjdCAqbG9jYWxzLAogICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwKQEAgLTQzLDEyICs2MiwxNSBAQAogICAgICk7CiAKICNkZWZpbmUgUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgobiwgZywgbCwgZikgXAotICAgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKG4sIGcsIGwsIGYsIC0xKQorICAgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKG4sIGcsIGwsIGYsIDApCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfR2V0SW1wb3J0ZXIoUHlPYmplY3QgKnBhdGgpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9JbXBvcnQoUHlPYmplY3QgKm5hbWUpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9SZWxvYWRNb2R1bGUoUHlPYmplY3QgKm0pOwogUHlBUElfRlVOQyh2b2lkKSBQeUltcG9ydF9DbGVhbnVwKHZvaWQpOworUHlBUElfRlVOQyhpbnQpIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZQorICAgICk7CiBQeUFQSV9GVU5DKGludCkgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKAogICAgIGNoYXIgKm5hbWUgICAgICAgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CkBAIC02NSwxNyArODcsMTcgQEAKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0X1JlSW5pdExvY2sodm9pZCk7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKilfUHlJbXBvcnRfRmluZEJ1aWx0aW4oCi0gICAgY2hhciAqbmFtZSAgICAgICAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCisgICAgY29uc3QgY2hhciAqbmFtZSAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKilfUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUoY2hhciAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKilfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KV9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oCiAgICAgUHlPYmplY3QgKm1vZCwKICAgICBjaGFyICpuYW1lICAgICAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwotUHlBUElfRlVOQyhpbnQpX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZShQeU9iamVjdCosIGNoYXIgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGludClfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QoUHlPYmplY3QqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogc3RydWN0IF9pbml0dGFiIHsKLSAgICBjaGFyICpuYW1lOworICAgIGNoYXIgKm5hbWU7ICAgICAgICAgICAgICAgICAvKiBBU0NJSSBlbmNvZGVkIHN0cmluZyAqLwogICAgIFB5T2JqZWN0KiAoKmluaXRmdW5jKSh2b2lkKTsKIH07CiBQeUFQSV9EQVRBKHN0cnVjdCBfaW5pdHRhYiAqKSBQeUltcG9ydF9Jbml0dGFiOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbnRyY2hlY2suaCBiL0luY2x1ZGUvaW50cmNoZWNrLmgKaW5kZXggM2I2N2VkMC4uZjUzZmVlMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbnRyY2hlY2suaAorKysgYi9JbmNsdWRlL2ludHJjaGVjay5oCkBAIC04LDYgKzgsMTIgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0FmdGVyRm9yayh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPU19Jc01haW5UaHJlYWQodm9pZCk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisvKiB3aW5kb3dzLmggaXMgbm90IGluY2x1ZGVkIGJ5IFB5dGhvbi5oIHNvIHVzZSB2b2lkKiBpbnN0ZWFkIG9mIEhBTkRMRSAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5T1NfU2lnaW50RXZlbnQodm9pZCk7CisjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2xpc3RvYmplY3QuaCBiL0luY2x1ZGUvbGlzdG9iamVjdC5oCmluZGV4IDk0OWIxYTMuLmRjNjJhZWUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbGlzdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvbGlzdG9iamVjdC5oCkBAIC02Miw2ICs2Miw5IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TGlzdF9Bc1R1cGxlKFB5T2JqZWN0ICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMaXN0X0V4dGVuZChQeUxpc3RPYmplY3QgKiwgUHlPYmplY3QgKik7CisKK1B5QVBJX0ZVTkMoaW50KSBQeUxpc3RfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5TGlzdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CiAjZW5kaWYKIAogLyogTWFjcm8sIHRyYWRpbmcgc2FmZXR5IGZvciBzcGVlZCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25naW50cmVwci5oIGIvSW5jbHVkZS9sb25naW50cmVwci5oCmluZGV4IGI5NGY3YjIuLjNhNDViYWQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ2ludHJlcHIuaAorKysgYi9JbmNsdWRlL2xvbmdpbnRyZXByLmgKQEAgLTYsNyArNiw3IEBACiAjZW5kaWYKIAogCi0vKiBUaGlzIGlzIHB1Ymxpc2hlZCBmb3IgdGhlIGJlbmVmaXQgb2YgImZyaWVuZCIgbWFyc2hhbC5jIG9ubHkuICovCisvKiBUaGlzIGlzIHB1Ymxpc2hlZCBmb3IgdGhlIGJlbmVmaXQgb2YgImZyaWVuZHMiIG1hcnNoYWwuYyBhbmQgX2RlY2ltYWwuYy4gKi8KIAogLyogUGFyYW1ldGVycyBvZiB0aGUgbG9uZyBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uLiAgVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQKICAgIHNldHMgb2YgcGFyYW1ldGVyczogb25lIHNldCBmb3IgMzAtYml0IGRpZ2l0cywgc3RvcmVkIGluIGFuIHVuc2lnbmVkIDMyLWJpdApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25nb2JqZWN0LmggYi9JbmNsdWRlL2xvbmdvYmplY3QuaAppbmRleCBjMDk1NjVhLi5kNzQxZjFiIDEwMDY0NAotLS0gYS9JbmNsdWRlL2xvbmdvYmplY3QuaAorKysgYi9JbmNsdWRlL2xvbmdvYmplY3QuaApAQCAtMTIsNyArMTIsNyBAQAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5TG9uZ19UeXBlOwogCiAjZGVmaW5lIFB5TG9uZ19DaGVjayhvcCkgXAotCQlQeVR5cGVfRmFzdFN1YmNsYXNzKFB5X1RZUEUob3ApLCBQeV9UUEZMQUdTX0xPTkdfU1VCQ0xBU1MpCisgICAgICAgIFB5VHlwZV9GYXN0U3ViY2xhc3MoUHlfVFlQRShvcCksIFB5X1RQRkxBR1NfTE9OR19TVUJDTEFTUykKICNkZWZpbmUgUHlMb25nX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlMb25nX1R5cGUpCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Mb25nKGxvbmcpOwpAQCAtODAsNiArODAsNyBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVN0cmluZyhjaGFyICosIGNoYXIgKiosIGludCk7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tVW5pY29kZShQeV9VTklDT0RFKiwgUHlfc3NpemVfdCwgaW50KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0KFB5T2JqZWN0ICp1LCBpbnQgYmFzZSk7CiAjZW5kaWYKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpAQCAtMTIxLDggKzEyMiw4IEBACiAgICAgIGVub3VnaCBtZW1vcnkgdG8gY3JlYXRlIHRoZSBQeXRob24gbG9uZy4KICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgKLQljb25zdCB1bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IG4sCi0JaW50IGxpdHRsZV9lbmRpYW4sIGludCBpc19zaWduZWQpOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3QgbiwKKyAgICBpbnQgbGl0dGxlX2VuZGlhbiwgaW50IGlzX3NpZ25lZCk7CiAKIC8qIF9QeUxvbmdfQXNCeXRlQXJyYXk6IENvbnZlcnQgdGhlIGxlYXN0LXNpZ25pZmljYW50IDgqbiBiaXRzIG9mIGxvbmcKICAgIHYgdG8gYSBiYXNlLTI1NiBpbnRlZ2VyLCBzdG9yZWQgaW4gYXJyYXkgYnl0ZXMuICBOb3JtYWxseSByZXR1cm4gMCwKQEAgLTE0NCwxOSArMTQ1LDI4IEBACiAgICAgIGNhc2UsIGJ1dCBieXRlcyBob2xkcyB0aGUgbGVhc3Qtc2lnbmZpY2FudCBuIGJ5dGVzIG9mIHRoZSB0cnVlIHZhbHVlLgogKi8KIFB5QVBJX0ZVTkMoaW50KSBfUHlMb25nX0FzQnl0ZUFycmF5KFB5TG9uZ09iamVjdCogdiwKLQl1bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IG4sCi0JaW50IGxpdHRsZV9lbmRpYW4sIGludCBpc19zaWduZWQpOworICAgIHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3QgbiwKKyAgICBpbnQgbGl0dGxlX2VuZGlhbiwgaW50IGlzX3NpZ25lZCk7CiAKIAogLyogX1B5TG9uZ19Gb3JtYXQ6IENvbnZlcnQgdGhlIGxvbmcgdG8gYSBzdHJpbmcgb2JqZWN0IHdpdGggZ2l2ZW4gYmFzZSwKICAgIGFwcGVuZGluZyBhIGJhc2UgcHJlZml4IG9mIDBbYm94XSBpZiBiYXNlIGlzIDIsIDggb3IgMTYuICovCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICphYSwgaW50IGJhc2UpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0Zvcm1hdChQeU9iamVjdCAqb2JqLCBpbnQgYmFzZSk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlMb25nX0Zvcm1hdFdyaXRlcigKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBpbnQgYmFzZSwKKyAgICBpbnQgYWx0ZXJuYXRlKTsKIAogLyogRm9ybWF0IHRoZSBvYmplY3QgYmFzZWQgb24gdGhlIGZvcm1hdF9zcGVjLCBhcyBkZWZpbmVkIGluIFBFUCAzMTAxCiAgICAoQWR2YW5jZWQgU3RyaW5nIEZvcm1hdHRpbmcpLiAqLwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkKFB5T2JqZWN0ICpvYmosCi0JCQkJCSAgICAgIFB5X1VOSUNPREUgKmZvcm1hdF9zcGVjLAotCQkJCQkgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbik7CitQeUFQSV9GVU5DKGludCkgX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcigKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogLyogVGhlc2UgYXJlbid0IHJlYWxseSBwYXJ0IG9mIHRoZSBsb25nIG9iamVjdCwgYnV0IHRoZXkncmUgaGFuZHkuIFRoZQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZW1vcnlvYmplY3QuaCBiL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmgKaW5kZXggNjJlY2JkNi4uYzJlMTE5NCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZW1vcnlvYmplY3QuaAorKysgYi9JbmNsdWRlL21lbW9yeW9iamVjdC5oCkBAIC02LDY5ICs2LDY1IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5TWFuYWdlZEJ1ZmZlcl9UeXBlOworI2VuZGlmCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlNZW1vcnlWaWV3X1R5cGU7CiAKICNkZWZpbmUgUHlNZW1vcnlWaWV3X0NoZWNrKG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5TWVtb3J5Vmlld19UeXBlKQogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi0vKiBHZXQgYSBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIFB5X2J1ZmZlciBvZiBhIG1lbW9yeXZpZXcgb2JqZWN0LiAqLworLyogR2V0IGEgcG9pbnRlciB0byB0aGUgbWVtb3J5dmlldydzIHByaXZhdGUgY29weSBvZiB0aGUgZXhwb3J0ZXIncyBidWZmZXIuICovCiAjZGVmaW5lIFB5TWVtb3J5Vmlld19HRVRfQlVGRkVSKG9wKSAoJigoUHlNZW1vcnlWaWV3T2JqZWN0ICopKG9wKSktPnZpZXcpCi0vKiBHZXQgYSBwb2ludGVyIHRvIHRoZSBQeU9iamVjdCBmcm9tIHdoaWNoIG9yaWdpbmF0ZXMgYSBtZW1vcnl2aWV3IG9iamVjdC4gKi8KKy8qIEdldCBhIHBvaW50ZXIgdG8gdGhlIGV4cG9ydGluZyBvYmplY3QgKHRoaXMgbWF5IGJlIE5VTEwhKS4gKi8KICNkZWZpbmUgUHlNZW1vcnlWaWV3X0dFVF9CQVNFKG9wKSAoKChQeU1lbW9yeVZpZXdPYmplY3QgKikob3ApKS0+dmlldy5vYmopCiAjZW5kaWYKIAotCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpiYXNlLCAKLQkJCQkJCSAgaW50IGJ1ZmZlcnR5cGUsIAotCQkJCQkJICBjaGFyIGZvcnQpOwotCi0gICAgLyogUmV0dXJuIGEgY29udGlndW91cyBjaHVuayBvZiBtZW1vcnkgcmVwcmVzZW50aW5nIHRoZSBidWZmZXIKLSAgICAgICBmcm9tIGFuIG9iamVjdCBpbiBhIG1lbW9yeSB2aWV3IG9iamVjdC4gIElmIGEgY29weSBpcyBtYWRlIHRoZW4gdGhlCi0gICAgICAgYmFzZSBvYmplY3QgZm9yIHRoZSBtZW1vcnkgdmlldyB3aWxsIGJlIGEgKm5ldyogYnl0ZXMgb2JqZWN0LiAKLSAgICAgICAKLSAgICAgICBPdGhlcndpc2UsIHRoZSBiYXNlLW9iamVjdCB3aWxsIGJlIHRoZSBvYmplY3QgaXRzZWxmIGFuZCBubyAKLSAgICAgICBkYXRhLWNvcHlpbmcgd2lsbCBiZSBkb25lLiAKLQotICAgICAgIFRoZSBidWZmZXJ0eXBlIGFyZ3VtZW50IGNhbiBiZSBQeUJVRl9SRUFELCBQeUJVRl9XUklURSwKLSAgICAgICBQeUJVRl9TSEFET1cgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHJldHVybmVkIGJ1ZmZlcgotICAgICAgIHNob3VsZCBiZSBSRUFET05MWSwgV1JJVEFCTEUsIG9yIHNldCB0byB1cGRhdGUgdGhlCi0gICAgICAgb3JpZ2luYWwgYnVmZmVyIGlmIGEgY29weSBtdXN0IGJlIG1hZGUuICBJZiBidWZmZXJ0eXBlIGlzCi0gICAgICAgUHlCVUZfV1JJVEUgYW5kIHRoZSBidWZmZXIgaXMgbm90IGNvbnRpZ3VvdXMgYW4gZXJyb3Igd2lsbAotICAgICAgIGJlIHJhaXNlZC4gIEluIHRoaXMgY2lyY3Vtc3RhbmNlLCB0aGUgdXNlciBjYW4gdXNlCi0gICAgICAgUHlCVUZfU0hBRE9XIHRvIGVuc3VyZSB0aGF0IGEgYSB3cml0YWJsZSB0ZW1wb3JhcnkKLSAgICAgICBjb250aWd1b3VzIGJ1ZmZlciBpcyByZXR1cm5lZC4gIFRoZSBjb250ZW50cyBvZiB0aGlzCi0gICAgICAgY29udGlndW91cyBidWZmZXIgd2lsbCBiZSBjb3BpZWQgYmFjayBpbnRvIHRoZSBvcmlnaW5hbAotICAgICAgIG9iamVjdCBhZnRlciB0aGUgbWVtb3J5dmlldyBvYmplY3QgaXMgZGVsZXRlZCBhcyBsb25nIGFzCi0gICAgICAgdGhlIG9yaWdpbmFsIG9iamVjdCBpcyB3cml0YWJsZSBhbmQgYWxsb3dzIHNldHRpbmcgYW4KLSAgICAgICBleGNsdXNpdmUgd3JpdGUgbG9jay4gSWYgdGhpcyBpcyBub3QgYWxsb3dlZCBieSB0aGUKLSAgICAgICBvcmlnaW5hbCBvYmplY3QsIHRoZW4gYSBCdWZmZXJFcnJvciBpcyByYWlzZWQuCi0gICAgICAgCi0gICAgICAgSWYgdGhlIG9iamVjdCBpcyBtdWx0aS1kaW1lbnNpb25hbCBhbmQgaWYgZm9ydHJhbiBpcyAnRicsCi0gICAgICAgdGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgdW5kZXJseWluZyBhcnJheSB3aWxsIHZhcnkgdGhlCi0gICAgICAgZmFzdGVzdCBpbiB0aGUgYnVmZmVyLiAgSWYgZm9ydHJhbiBpcyAnQycsIHRoZW4gdGhlIGxhc3QKLSAgICAgICBkaW1lbnNpb24gd2lsbCB2YXJ5IHRoZSBmYXN0ZXN0IChDLXN0eWxlIGNvbnRpZ3VvdXMpLiAgSWYKLSAgICAgICBmb3J0cmFuIGlzICdBJywgdGhlbiBpdCBkb2VzIG5vdCBtYXR0ZXIgYW5kIHlvdSB3aWxsIGdldAotICAgICAgIHdoYXRldmVyIHRoZSBvYmplY3QgZGVjaWRlcyBpcyBtb3JlIGVmZmljaWVudC4gIAotCi0gICAgICAgQSBuZXcgcmVmZXJlbmNlIGlzIHJldHVybmVkIHRoYXQgbXVzdCBiZSBERUNSRUYnZCB3aGVuIGZpbmlzaGVkLgotICAgICovCi0KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QoUHlPYmplY3QgKmJhc2UpOwotCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KGNoYXIgKm1lbSwgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcihQeV9idWZmZXIgKmluZm8pOwotICAgIC8qIGNyZWF0ZSBuZXcgaWYgYnVmcHRyIGlzIE5VTEwgCi0gICAgICAgIHdpbGwgYmUgYSBuZXcgYnl0ZXNvYmplY3QgaW4gYmFzZSAqLwogI2VuZGlmCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVydHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBvcmRlcik7CiAKIAotLyogVGhlIHN0cnVjdCBpcyBkZWNsYXJlZCBoZXJlIHNvIHRoYXQgbWFjcm9zIGNhbiB3b3JrLCBidXQgaXQgc2hvdWxkbid0Ci0gICBiZSBjb25zaWRlcmVkIHB1YmxpYy4gRG9uJ3QgYWNjZXNzIHRob3NlIGZpZWxkcyBkaXJlY3RseSwgdXNlIHRoZSBtYWNyb3MKKy8qIFRoZSBzdHJ1Y3RzIGFyZSBkZWNsYXJlZCBoZXJlIHNvIHRoYXQgbWFjcm9zIGNhbiB3b3JrLCBidXQgdGhleSBzaG91bGRuJ3QKKyAgIGJlIGNvbnNpZGVyZWQgcHVibGljLiBEb24ndCBhY2Nlc3MgdGhlaXIgZmllbGRzIGRpcmVjdGx5LCB1c2UgdGhlIG1hY3JvcwogICAgYW5kIGZ1bmN0aW9ucyBpbnN0ZWFkISAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQgICAgMHgwMDEgIC8qIGFjY2VzcyB0byBleHBvcnRlciBibG9ja2VkICovCisjZGVmaW5lIF9QeV9NQU5BR0VEX0JVRkZFUl9GUkVFX0ZPUk1BVCAweDAwMiAgLyogZnJlZSBmb3JtYXQgKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlfYnVmZmVyIHZpZXc7CisgICAgaW50IGZsYWdzOyAgICAgICAgICAvKiBzdGF0ZSBmbGFncyAqLworICAgIFB5X3NzaXplX3QgZXhwb3J0czsgLyogbnVtYmVyIG9mIGRpcmVjdCBtZW1vcnl2aWV3IGV4cG9ydHMgKi8KKyAgICBQeV9idWZmZXIgbWFzdGVyOyAvKiBzbmFwc2hvdCBidWZmZXIgb2J0YWluZWQgZnJvbSB0aGUgb3JpZ2luYWwgZXhwb3J0ZXIgKi8KK30gX1B5TWFuYWdlZEJ1ZmZlck9iamVjdDsKKworCisvKiBzdGF0aWMgc3RvcmFnZSB1c2VkIGZvciBjYXN0aW5nIGJldHdlZW4gZm9ybWF0cyAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19NQVhfRk9STUFUIDMgLyogbXVzdCBiZSA+PSAzICovCisKKy8qIG1lbW9yeXZpZXcgc3RhdGUgZmxhZ3MgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQgICAgMHgwMDEgIC8qIGFjY2VzcyB0byBtYXN0ZXIgYnVmZmVyIGJsb2NrZWQgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfQyAgICAgICAgICAgMHgwMDIgIC8qIEMtY29udGlndW91cyBsYXlvdXQgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfRk9SVFJBTiAgICAgMHgwMDQgIC8qIEZvcnRyYW4gY29udGlndW91cyBsYXlvdXQgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfU0NBTEFSICAgICAgMHgwMDggIC8qIHNjYWxhcjogbmRpbSA9IDAgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfUElMICAgICAgICAgMHgwMTAgIC8qIFBJTC1zdHlsZSBsYXlvdXQgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X1ZBUl9IRUFECisgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsgLyogbWFuYWdlZCBidWZmZXIgKi8KKyAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgICAvKiBoYXNoIHZhbHVlIGZvciByZWFkLW9ubHkgdmlld3MgKi8KKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgICAgICAgICAgICAvKiBzdGF0ZSBmbGFncyAqLworICAgIFB5X3NzaXplX3QgZXhwb3J0czsgICAgICAgICAgIC8qIG51bWJlciBvZiBidWZmZXIgcmUtZXhwb3J0cyAqLworICAgIFB5X2J1ZmZlciB2aWV3OyAgICAgICAgICAgICAgIC8qIHByaXZhdGUgY29weSBvZiB0aGUgZXhwb3J0ZXIncyB2aWV3ICovCisgICAgY2hhciBmb3JtYXRbX1B5X01FTU9SWVZJRVdfTUFYX0ZPUk1BVF07IC8qIHVzZWQgZm9yIGNhc3RpbmcgKi8KKyAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CisgICAgUHlfc3NpemVfdCBvYl9hcnJheVsxXTsgICAgICAgLyogc2hhcGUsIHN0cmlkZXMsIHN1Ym9mZnNldHMgKi8KIH0gUHlNZW1vcnlWaWV3T2JqZWN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmggYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCmluZGV4IDdlNjdjMGIuLjNjYzJlYTkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9tZXRob2RvYmplY3QuaApAQCAtMTcsNyArMTcsNyBAQAogCiB0eXBlZGVmIFB5T2JqZWN0ICooKlB5Q0Z1bmN0aW9uKShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCi0JCQkJCSAgICAgUHlPYmplY3QgKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlOb0FyZ3NGdW5jdGlvbikoUHlPYmplY3QgKik7CiAKIFB5QVBJX0ZVTkMoUHlDRnVuY3Rpb24pIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uKFB5T2JqZWN0ICopOwpAQCAtMzAsMjQgKzMwLDI1IEBACiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKSBcCiAgICAgICAgICgoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gbV9tbCAtPiBtbF9tZXRoKQogI2RlZmluZSBQeUNGdW5jdGlvbl9HRVRfU0VMRihmdW5jKSBcCi0JKCgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX3NlbGYpCisgICAgICAgICgoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gbV9tbCAtPiBtbF9mbGFncyAmIE1FVEhfU1RBVElDID8gXAorICAgICAgICAgTlVMTCA6ICgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX3NlbGYpCiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX0dFVF9GTEFHUyhmdW5jKSBcCi0JKCgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX21sIC0+IG1sX2ZsYWdzKQorICAgICAgICAoKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IG1fbWwgLT4gbWxfZmxhZ3MpCiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDRnVuY3Rpb25fQ2FsbChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogc3RydWN0IFB5TWV0aG9kRGVmIHsKLSAgICBjb25zdCBjaGFyCSptbF9uYW1lOwkvKiBUaGUgbmFtZSBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24vbWV0aG9kICovCi0gICAgUHlDRnVuY3Rpb24gIG1sX21ldGg7CS8qIFRoZSBDIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBpdCAqLwotICAgIGludAkJIG1sX2ZsYWdzOwkvKiBDb21iaW5hdGlvbiBvZiBNRVRIX3h4eCBmbGFncywgd2hpY2ggbW9zdGx5Ci0JCQkJICAgZGVzY3JpYmUgdGhlIGFyZ3MgZXhwZWN0ZWQgYnkgdGhlIEMgZnVuYyAqLwotICAgIGNvbnN0IGNoYXIJKm1sX2RvYzsJLyogVGhlIF9fZG9jX18gYXR0cmlidXRlLCBvciBOVUxMICovCisgICAgY29uc3QgY2hhciAgKm1sX25hbWU7ICAgLyogVGhlIG5hbWUgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uL21ldGhvZCAqLworICAgIFB5Q0Z1bmN0aW9uIG1sX21ldGg7ICAgIC8qIFRoZSBDIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBpdCAqLworICAgIGludCAgICAgICAgIG1sX2ZsYWdzOyAgIC8qIENvbWJpbmF0aW9uIG9mIE1FVEhfeHh4IGZsYWdzLCB3aGljaCBtb3N0bHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZSB0aGUgYXJncyBleHBlY3RlZCBieSB0aGUgQyBmdW5jICovCisgICAgY29uc3QgY2hhciAgKm1sX2RvYzsgICAgLyogVGhlIF9fZG9jX18gYXR0cmlidXRlLCBvciBOVUxMICovCiB9OwogdHlwZWRlZiBzdHJ1Y3QgUHlNZXRob2REZWYgUHlNZXRob2REZWY7CiAKICNkZWZpbmUgUHlDRnVuY3Rpb25fTmV3KE1MLCBTRUxGKSBQeUNGdW5jdGlvbl9OZXdFeCgoTUwpLCAoU0VMRiksIE5VTEwpCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q0Z1bmN0aW9uX05ld0V4KFB5TWV0aG9kRGVmICosIFB5T2JqZWN0ICosIAotCQkJCQkgUHlPYmplY3QgKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwogCiAvKiBGbGFnIHBhc3NlZCB0byBuZXdtZXRob2RvYmplY3QgKi8KIC8qICNkZWZpbmUgTUVUSF9PTERBUkdTICAweDAwMDAgICAtLSB1bnN1cHBvcnRlZCBub3cgKi8KQEAgLTgxLDYgKzgyLDExIEBACiAKIFB5QVBJX0ZVTkMoaW50KSBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0KHZvaWQpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeUNGdW5jdGlvbl9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeU1ldGhvZF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbW9kc3VwcG9ydC5oIGIvSW5jbHVkZS9tb2RzdXBwb3J0LmgKaW5kZXggYmY2NDc4Zi4uZWNmMWRjYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tb2RzdXBwb3J0LmgKKysrIGIvSW5jbHVkZS9tb2RzdXBwb3J0LmgKQEAgLTIzLDYgKzIzLDggQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChjb25zdCBjaGFyICosIHZhX2xpc3QpOwogI2VuZGlmCiAKKy8qIER1ZSB0byBhIGdsaXRjaCBpbiAzLjIsIHRoZSBfU2l6ZVQgdmVyc2lvbnMgd2VyZW4ndCBleHBvcnRlZCBmcm9tIHRoZSBETEwuICovCisjaWYgIWRlZmluZWQoUFlfU1NJWkVfVF9DTEVBTikgfHwgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzAzMDAwMAogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1BhcnNlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19QYXJzZVR1cGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKSBQeV9GT1JNQVRfUEFSU0VUVVBMRShQeUFyZ19QYXJzZVR1cGxlLCAyLCAzKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKQEAgLTMxLDEzICszMywxNCBAQAogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1VucGFja1R1cGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwgUHlfc3NpemVfdCwgLi4uKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlfQnVpbGRWYWx1ZShjb25zdCBjaGFyICosIC4uLik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9CdWlsZFZhbHVlX1NpemVUKGNvbnN0IGNoYXIgKiwgLi4uKTsKKyNlbmRpZgogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19Ob0tleXdvcmRzKGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBQeU9iamVjdCAqa3cpOwotI2VuZGlmCiAKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19WYVBhcnNlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CiBQeUFQSV9GVU5DKGludCkgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCB2YV9saXN0KTsKKyNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeV9WYUJ1aWxkVmFsdWUoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKIAogUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZE9iamVjdChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tb2R1bGVvYmplY3QuaCBiL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmgKaW5kZXggN2IyYmYxYy4uODAxM2RkOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tb2R1bGVvYmplY3QuaAorKysgYi9JbmNsdWRlL21vZHVsZW9iamVjdC5oCkBAIC0xMiwxMCArMTIsMTQgQEAKICNkZWZpbmUgUHlNb2R1bGVfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5TW9kdWxlX1R5cGUpCiAjZGVmaW5lIFB5TW9kdWxlX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlNb2R1bGVfVHlwZSkKIAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9OZXdPYmplY3QoCisgICAgUHlPYmplY3QgKm5hbWUKKyAgICApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9OZXcoCiAgICAgY29uc3QgY2hhciAqbmFtZSAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfR2V0RGljdChQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfR2V0TmFtZU9iamVjdChQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeU1vZHVsZV9HZXROYW1lKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5TW9kdWxlX0dldEZpbGVuYW1lKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdChQeU9iamVjdCAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmggYi9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MTJmMDUKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCkBAIC0wLDAgKzEsMTcgQEAKKworLyogc2ltcGxlIG5hbWVzcGFjZSBvYmplY3QgaW50ZXJmYWNlICovCisKKyNpZm5kZWYgTkFNRVNQQUNFT0JKRUNUX0gKKyNkZWZpbmUgTkFNRVNQQUNFT0JKRUNUX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU5hbWVzcGFjZV9UeXBlOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU5hbWVzcGFjZV9OZXcoUHlPYmplY3QgKmt3ZHMpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFOQU1FU1BBQ0VPQkpFQ1RfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ub2RlLmggYi9JbmNsdWRlL25vZGUuaAppbmRleCA5ZjY3NjBjLi45OWMxM2Y3IDEwMDY0NAotLS0gYS9JbmNsdWRlL25vZGUuaAorKysgYi9JbmNsdWRlL25vZGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBSQ0hJTEQobiwgaSkJKENISUxEKG4sIE5DSChuKSArIGkpKQogI2RlZmluZSBUWVBFKG4pCQkoKG4pLT5uX3R5cGUpCiAjZGVmaW5lIFNUUihuKQkJKChuKS0+bl9zdHIpCisjZGVmaW5lIExJTkVOTyhuKSAgICAgICAoKG4pLT5uX2xpbmVubykKIAogLyogQXNzZXJ0IHRoYXQgdGhlIHR5cGUgb2YgYSBub2RlIGlzIHdoYXQgd2UgZXhwZWN0ICovCiAjZGVmaW5lIFJFUShuLCB0eXBlKSBhc3NlcnQoVFlQRShuKSA9PSAodHlwZSkpCmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamVjdC5oIGIvSW5jbHVkZS9vYmplY3QuaAppbmRleCAzMTU3NjZjLi43MDlhOWZmIDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamVjdC5oCisrKyBiL0luY2x1ZGUvb2JqZWN0LmgKQEAgLTExNyw2ICsxMTcsMzUgQEAKICNkZWZpbmUgUHlfVFlQRShvYikgICAgICAgICAgICAgKCgoUHlPYmplY3QqKShvYikpLT5vYl90eXBlKQogI2RlZmluZSBQeV9TSVpFKG9iKSAgICAgICAgICAgICAoKChQeVZhck9iamVjdCopKG9iKSktPm9iX3NpemUpCiAKKy8qKioqKioqKioqKioqKioqKioqKiogU3RyaW5nIExpdGVyYWxzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBUaGlzIHN0cnVjdHVyZSBoZWxwcyBtYW5hZ2luZyBzdGF0aWMgc3RyaW5ncy4gVGhlIGJhc2ljIHVzYWdlIGdvZXMgbGlrZSB0aGlzOgorICAgSW5zdGVhZCBvZiBkb2luZworCisgICAgICAgciA9IFB5T2JqZWN0X0NhbGxNZXRob2QobywgImZvbyIsICJhcmdzIiwgLi4uKTsKKworICAgZG8KKworICAgICAgIF9QeV9JREVOVElGSUVSKGZvbyk7CisgICAgICAgLi4uCisgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobywgJlB5SWRfZm9vLCAiYXJncyIsIC4uLik7CisKKyAgIFB5SWRfZm9vIGlzIGEgc3RhdGljIHZhcmlhYmxlLCBlaXRoZXIgb24gYmxvY2sgbGV2ZWwgb3IgZmlsZSBsZXZlbC4gT24gZmlyc3QKKyAgIHVzYWdlLCB0aGUgc3RyaW5nICJmb28iIGlzIGludGVybmVkLCBhbmQgdGhlIHN0cnVjdHVyZXMgYXJlIGxpbmtlZC4gT24gaW50ZXJwcmV0ZXIKKyAgIHNodXRkb3duLCBhbGwgc3RyaW5ncyBhcmUgcmVsZWFzZWQgKHRocm91Z2ggX1B5VW5pY29kZV9DbGVhclN0YXRpY1N0cmluZ3MpLgorCisgICBBbHRlcm5hdGl2ZWx5LCBfUHlfc3RhdGljX3N0cmluZyBhbGxvd3MgdG8gY2hvb3NlIHRoZSB2YXJpYWJsZSBuYW1lLgorICAgX1B5VW5pY29kZV9Gcm9tSWQgcmV0dXJucyBhIGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuZWQgc3RyaW5nLgorICAgX1B5T2JqZWN0X3tHZXQsU2V0LEhhc31BdHRySWQgYXJlIF9fZ2V0YXR0cl9fIHZlcnNpb25zIHVzaW5nIF9QeV9JZGVudGlmaWVyKi4KKyovCit0eXBlZGVmIHN0cnVjdCBfUHlfSWRlbnRpZmllciB7CisgICAgc3RydWN0IF9QeV9JZGVudGlmaWVyICpuZXh0OworICAgIGNvbnN0IGNoYXIqIHN0cmluZzsKKyAgICBQeU9iamVjdCAqb2JqZWN0OworfSBfUHlfSWRlbnRpZmllcjsKKworI2RlZmluZSBfUHlfc3RhdGljX3N0cmluZyh2YXJuYW1lLCB2YWx1ZSkgIHN0YXRpYyBfUHlfSWRlbnRpZmllciB2YXJuYW1lID0geyAwLCB2YWx1ZSwgMCB9CisjZGVmaW5lIF9QeV9JREVOVElGSUVSKHZhcm5hbWUpIF9QeV9zdGF0aWNfc3RyaW5nKFB5SWRfIyN2YXJuYW1lLCAjdmFybmFtZSkKKwogLyoKIFR5cGUgb2JqZWN0cyBjb250YWluIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHR5cGUgbmFtZSAodG8gaGVscCBzb21ld2hhdAogaW4gZGVidWdnaW5nKSwgdGhlIGFsbG9jYXRpb24gcGFyYW1ldGVycyAoc2VlIFB5T2JqZWN0X05ldygpIGFuZApAQCAtMTU3LDE1ICsxODYsMTYgQEAKICAgICBQeV9zc2l6ZV90ICpzaGFwZTsKICAgICBQeV9zc2l6ZV90ICpzdHJpZGVzOwogICAgIFB5X3NzaXplX3QgKnN1Ym9mZnNldHM7Ci0gICAgUHlfc3NpemVfdCBzbWFsbHRhYmxlWzJdOyAgLyogc3RhdGljIHN0b3JlIGZvciBzaGFwZSBhbmQgc3RyaWRlcyBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbm8tZGltZW5zaW9uYWwgYnVmZmVycy4gKi8KICAgICB2b2lkICppbnRlcm5hbDsKIH0gUHlfYnVmZmVyOwogCiB0eXBlZGVmIGludCAoKmdldGJ1ZmZlcnByb2MpKFB5T2JqZWN0ICosIFB5X2J1ZmZlciAqLCBpbnQpOwogdHlwZWRlZiB2b2lkICgqcmVsZWFzZWJ1ZmZlcnByb2MpKFB5T2JqZWN0ICosIFB5X2J1ZmZlciAqKTsKIAotICAgIC8qIEZsYWdzIGZvciBnZXR0aW5nIGJ1ZmZlcnMgKi8KKy8qIE1heGltdW0gbnVtYmVyIG9mIGRpbWVuc2lvbnMgKi8KKyNkZWZpbmUgUHlCVUZfTUFYX05ESU0gNjQKKworLyogRmxhZ3MgZm9yIGdldHRpbmcgYnVmZmVycyAqLwogI2RlZmluZSBQeUJVRl9TSU1QTEUgMAogI2RlZmluZSBQeUJVRl9XUklUQUJMRSAweDAwMDEKIC8qICB3ZSB1c2VkIHRvIGluY2x1ZGUgYW4gRSwgYmFja3dhcmRzIGNvbXBhdGlibGUgYWxpYXMgICovCkBAIC00MDMsNiArNDMzLDkgQEAKIH0gUHlUeXBlX1NwZWM7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVR5cGVfRnJvbVNwZWMoUHlUeXBlX1NwZWMqKTsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzKFB5VHlwZV9TcGVjKiwgUHlPYmplY3QqKTsKKyNlbmRpZgogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBUaGUgKnJlYWwqIGxheW91dCBvZiBhIHR5cGUgb2JqZWN0IHdoZW4gYWxsb2NhdGVkIG9uIHRoZSBoZWFwICovCkBAIC00MTgsNyArNDUxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBnaXZlbiBvcGVyYXRvciAoZS5nLiBfX2dldGl0ZW1fXykuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZSBhZGRfb3BlcmF0b3JzKCkgaW4gdHlwZW9iamVjdC5jIC4gKi8KICAgICBQeUJ1ZmZlclByb2NzIGFzX2J1ZmZlcjsKLSAgICBQeU9iamVjdCAqaHRfbmFtZSwgKmh0X3Nsb3RzOworICAgIFB5T2JqZWN0ICpodF9uYW1lLCAqaHRfc2xvdHMsICpodF9xdWFsbmFtZTsKKyAgICBzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0ICpodF9jYWNoZWRfa2V5czsKICAgICAvKiBoZXJlIGFyZSBvcHRpb25hbCB1c2VyIHNsb3RzLCBmb2xsb3dlZCBieSB0aGUgbWVtYmVycy4gKi8KIH0gUHlIZWFwVHlwZU9iamVjdDsKIApAQCAtNDQ4LDEzICs0ODIsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVR5cGVfTG9va3VwKFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoUHlPYmplY3QgKiwgY2hhciAqLCBQeU9iamVjdCAqKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKFB5T2JqZWN0ICosIF9QeV9JZGVudGlmaWVyICopOwogUHlBUElfRlVOQyhQeVR5cGVPYmplY3QgKikgX1B5VHlwZV9DYWxjdWxhdGVNZXRhY2xhc3MoUHlUeXBlT2JqZWN0ICosIFB5T2JqZWN0ICopOwogI2VuZGlmCiBQeUFQSV9GVU5DKHVuc2lnbmVkIGludCkgUHlUeXBlX0NsZWFyQ2FjaGUodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5VHlwZV9Nb2RpZmllZChQeVR5cGVPYmplY3QgKik7CiAKIC8qIEdlbmVyaWMgb3BlcmF0aW9ucyBvbiBvYmplY3RzICovCitzdHJ1Y3QgX1B5X0lkZW50aWZpZXI7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfUHJpbnQoUHlPYmplY3QgKiwgRklMRSAqLCBpbnQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlfQnJlYWtQb2ludCh2b2lkKTsKQEAgLTQ3Miw2ICs1MDcsMTAgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfR2V0QXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9TZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0hhc0F0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X0lzQWJzdHJhY3QoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HZXRBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICopOworUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9TZXRBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9IYXNBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKikgX1B5T2JqZWN0X0dldERpY3RQdHIoUHlPYmplY3QgKik7CiAjZW5kaWYKQEAgLTQ4Miw2ICs1MjEsNyBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9HZW5lcmljR2V0QXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9HZW5lcmljU2V0QXR0cihQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIHZvaWQgKik7CiBQeUFQSV9GVU5DKFB5X2hhc2hfdCkgUHlPYmplY3RfSGFzaChQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlfaGFzaF90KSBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfSXNUcnVlKFB5T2JqZWN0ICopOwpAQCAtNDk4LDYgKzUzOCwxMSBAQAogX1B5T2JqZWN0X0dlbmVyaWNTZXRBdHRyV2l0aERpY3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCisvKiBIZWxwZXIgdG8gbG9vayB1cCBhIGJ1aWx0aW4gb2JqZWN0ICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopCitfUHlPYmplY3RfR2V0QnVpbHRpbihjb25zdCBjaGFyICpuYW1lKTsKKyNlbmRpZgogCiAvKiBQeU9iamVjdF9EaXIob2JqKSBhY3RzIGxpa2UgUHl0aG9uIGJ1aWx0aW5zLmRpcihvYmopLCByZXR1cm5pbmcgYQogICAgbGlzdCBvZiBzdHJpbmdzLiAgUHlPYmplY3RfRGlyKE5VTEwpIGlzIGxpa2UgYnVpbHRpbnMuZGlyKCksCkBAIC01MTUsNiArNTYwLDcgQEAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlfaGFzaF90KSBfUHlfSGFzaERvdWJsZShkb3VibGUpOwogUHlBUElfRlVOQyhQeV9oYXNoX3QpIF9QeV9IYXNoUG9pbnRlcih2b2lkKik7CitQeUFQSV9GVU5DKFB5X2hhc2hfdCkgX1B5X0hhc2hCeXRlcyh1bnNpZ25lZCBjaGFyKiwgUHlfc3NpemVfdCk7CiAjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtODAzLDYgKzg0OSwxMCBAQAogUHlBUElfREFUQShQeU9iamVjdCkgX1B5X05vdEltcGxlbWVudGVkU3RydWN0OyAvKiBEb24ndCB1c2UgdGhpcyBkaXJlY3RseSAqLwogI2RlZmluZSBQeV9Ob3RJbXBsZW1lbnRlZCAoJl9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCkKIAorLyogTWFjcm8gZm9yIHJldHVybmluZyBQeV9Ob3RJbXBsZW1lbnRlZCBmcm9tIGEgZnVuY3Rpb24gKi8KKyNkZWZpbmUgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEIFwKKyAgICByZXR1cm4gUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKSwgUHlfTm90SW1wbGVtZW50ZWQKKwogLyogUmljaCBjb21wYXJpc29uIG9wY29kZXMgKi8KICNkZWZpbmUgUHlfTFQgMAogI2RlZmluZSBQeV9MRSAxCkBAIC05MzAsNiArOTgwLDE0IEBACiAgICAgZWxzZSBcCiAgICAgICAgIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0KChQeU9iamVjdCopb3ApOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpCitfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKEZJTEUgKm91dCwgY29uc3QgY2hhciAqYmxvY2tfbmFtZSwgaW50IG51bV9ibG9ja3MsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplb2ZfYmxvY2spOworUHlBUElfRlVOQyh2b2lkKQorX1B5T2JqZWN0X0RlYnVnVHlwZVN0YXRzKEZJTEUgKm91dCk7CisjZW5kaWYgLyogaWZuZGVmIFB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamltcGwuaCBiL0luY2x1ZGUvb2JqaW1wbC5oCmluZGV4IDhmYzNmYzEuLmIxYTYyNGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqaW1wbC5oCisrKyBiL0luY2x1ZGUvb2JqaW1wbC5oCkBAIC0xMDEsMTMgKzEwMSwxNSBAQAogCiAvKiBNYWNyb3MgKi8KICNpZmRlZiBXSVRIX1BZTUFMTE9DCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CisjZW5kaWYgLyogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSSAqLwogI2lmZGVmIFBZTUFMTE9DX0RFQlVHICAgLyogV0lUSF9QWU1BTExPQyAmJiBQWU1BTExPQ19ERUJVRyAqLwogUHlBUElfRlVOQyh2b2lkICopIF9QeU9iamVjdF9EZWJ1Z01hbGxvYyhzaXplX3QgbmJ5dGVzKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBfUHlPYmplY3RfRGVidWdSZWFsbG9jKHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdGcmVlKHZvaWQgKnApOwogUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdEdW1wQWRkcmVzcyhjb25zdCB2b2lkICpwKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnQ2hlY2tBZGRyZXNzKGNvbnN0IHZvaWQgKnApOwotUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBfUHlPYmplY3RfRGVidWdNYWxsb2NBcGkoY2hhciBhcGksIHNpemVfdCBuYnl0ZXMpOwogUHlBUElfRlVOQyh2b2lkICopIF9QeU9iamVjdF9EZWJ1Z1JlYWxsb2NBcGkoY2hhciBhcGksIHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdGcmVlQXBpKGNoYXIgYXBpLCB2b2lkICpwKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3Bjb2RlLmggYi9JbmNsdWRlL29wY29kZS5oCmluZGV4IDZiMTA5NDQuLmE5MDE4NGQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb3Bjb2RlLmgKKysrIGIvSW5jbHVkZS9vcGNvZGUuaApAQCAtNywxMTcgKzcsMTE3IEBACiAKIC8qIEluc3RydWN0aW9uIG9wY29kZXMgZm9yIGNvbXBpbGVkIGNvZGUgKi8KIAotI2RlZmluZSBTVE9QX0NPREUJMAotI2RlZmluZSBQT1BfVE9QCQkxCi0jZGVmaW5lIFJPVF9UV08JCTIKLSNkZWZpbmUgUk9UX1RIUkVFCTMKLSNkZWZpbmUgRFVQX1RPUAkJNAorI2RlZmluZSBQT1BfVE9QICAgICAgICAgMQorI2RlZmluZSBST1RfVFdPICAgICAgICAgMgorI2RlZmluZSBST1RfVEhSRUUgICAgICAgMworI2RlZmluZSBEVVBfVE9QICAgICAgICAgNAogI2RlZmluZSBEVVBfVE9QX1RXTyAgICAgNQotI2RlZmluZSBOT1AJCTkKKyNkZWZpbmUgTk9QICAgICAgICAgICAgIDkKIAotI2RlZmluZSBVTkFSWV9QT1NJVElWRQkxMAotI2RlZmluZSBVTkFSWV9ORUdBVElWRQkxMQotI2RlZmluZSBVTkFSWV9OT1QJMTIKKyNkZWZpbmUgVU5BUllfUE9TSVRJVkUgIDEwCisjZGVmaW5lIFVOQVJZX05FR0FUSVZFICAxMQorI2RlZmluZSBVTkFSWV9OT1QgICAgICAgMTIKIAotI2RlZmluZSBVTkFSWV9JTlZFUlQJMTUKKyNkZWZpbmUgVU5BUllfSU5WRVJUICAgIDE1CiAKLSNkZWZpbmUgQklOQVJZX1BPV0VSCTE5CisjZGVmaW5lIEJJTkFSWV9QT1dFUiAgICAxOQogCi0jZGVmaW5lIEJJTkFSWV9NVUxUSVBMWQkyMAorI2RlZmluZSBCSU5BUllfTVVMVElQTFkgMjAKIAotI2RlZmluZSBCSU5BUllfTU9EVUxPCTIyCi0jZGVmaW5lIEJJTkFSWV9BREQJMjMKLSNkZWZpbmUgQklOQVJZX1NVQlRSQUNUCTI0Ci0jZGVmaW5lIEJJTkFSWV9TVUJTQ1IJMjUKKyNkZWZpbmUgQklOQVJZX01PRFVMTyAgIDIyCisjZGVmaW5lIEJJTkFSWV9BREQgICAgICAyMworI2RlZmluZSBCSU5BUllfU1VCVFJBQ1QgMjQKKyNkZWZpbmUgQklOQVJZX1NVQlNDUiAgIDI1CiAjZGVmaW5lIEJJTkFSWV9GTE9PUl9ESVZJREUgMjYKICNkZWZpbmUgQklOQVJZX1RSVUVfRElWSURFIDI3CiAjZGVmaW5lIElOUExBQ0VfRkxPT1JfRElWSURFIDI4CiAjZGVmaW5lIElOUExBQ0VfVFJVRV9ESVZJREUgMjkKIAotI2RlZmluZSBTVE9SRV9NQVAJNTQKLSNkZWZpbmUgSU5QTEFDRV9BREQJNTUKLSNkZWZpbmUgSU5QTEFDRV9TVUJUUkFDVAk1NgotI2RlZmluZSBJTlBMQUNFX01VTFRJUExZCTU3CisjZGVmaW5lIFNUT1JFX01BUCAgICAgICA1NAorI2RlZmluZSBJTlBMQUNFX0FERCAgICAgNTUKKyNkZWZpbmUgSU5QTEFDRV9TVUJUUkFDVCAgICAgICAgNTYKKyNkZWZpbmUgSU5QTEFDRV9NVUxUSVBMWSAgICAgICAgNTcKIAotI2RlZmluZSBJTlBMQUNFX01PRFVMTwk1OQotI2RlZmluZSBTVE9SRV9TVUJTQ1IJNjAKLSNkZWZpbmUgREVMRVRFX1NVQlNDUgk2MQorI2RlZmluZSBJTlBMQUNFX01PRFVMTyAgNTkKKyNkZWZpbmUgU1RPUkVfU1VCU0NSICAgIDYwCisjZGVmaW5lIERFTEVURV9TVUJTQ1IgICA2MQogCi0jZGVmaW5lIEJJTkFSWV9MU0hJRlQJNjIKLSNkZWZpbmUgQklOQVJZX1JTSElGVAk2MwotI2RlZmluZSBCSU5BUllfQU5ECTY0Ci0jZGVmaW5lIEJJTkFSWV9YT1IJNjUKLSNkZWZpbmUgQklOQVJZX09SCTY2Ci0jZGVmaW5lIElOUExBQ0VfUE9XRVIJNjcKLSNkZWZpbmUgR0VUX0lURVIJNjgKLSNkZWZpbmUgU1RPUkVfTE9DQUxTCTY5Ci0jZGVmaW5lIFBSSU5UX0VYUFIJNzAKKyNkZWZpbmUgQklOQVJZX0xTSElGVCAgIDYyCisjZGVmaW5lIEJJTkFSWV9SU0hJRlQgICA2MworI2RlZmluZSBCSU5BUllfQU5EICAgICAgNjQKKyNkZWZpbmUgQklOQVJZX1hPUiAgICAgIDY1CisjZGVmaW5lIEJJTkFSWV9PUiAgICAgICA2NgorI2RlZmluZSBJTlBMQUNFX1BPV0VSICAgNjcKKyNkZWZpbmUgR0VUX0lURVIgICAgICAgIDY4CisjZGVmaW5lIFNUT1JFX0xPQ0FMUyAgICA2OQorI2RlZmluZSBQUklOVF9FWFBSICAgICAgNzAKICNkZWZpbmUgTE9BRF9CVUlMRF9DTEFTUyA3MQorI2RlZmluZSBZSUVMRF9GUk9NICAgICAgNzIKIAotI2RlZmluZSBJTlBMQUNFX0xTSElGVAk3NQotI2RlZmluZSBJTlBMQUNFX1JTSElGVAk3NgotI2RlZmluZSBJTlBMQUNFX0FORAk3NwotI2RlZmluZSBJTlBMQUNFX1hPUgk3OAotI2RlZmluZSBJTlBMQUNFX09SCTc5Ci0jZGVmaW5lIEJSRUFLX0xPT1AJODAKKyNkZWZpbmUgSU5QTEFDRV9MU0hJRlQgIDc1CisjZGVmaW5lIElOUExBQ0VfUlNISUZUICA3NgorI2RlZmluZSBJTlBMQUNFX0FORCAgICAgNzcKKyNkZWZpbmUgSU5QTEFDRV9YT1IgICAgIDc4CisjZGVmaW5lIElOUExBQ0VfT1IgICAgICA3OQorI2RlZmluZSBCUkVBS19MT09QICAgICAgODAKICNkZWZpbmUgV0lUSF9DTEVBTlVQICAgIDgxCiAKLSNkZWZpbmUgUkVUVVJOX1ZBTFVFCTgzCi0jZGVmaW5lIElNUE9SVF9TVEFSCTg0CisjZGVmaW5lIFJFVFVSTl9WQUxVRSAgICA4MworI2RlZmluZSBJTVBPUlRfU1RBUiAgICAgODQKIAotI2RlZmluZSBZSUVMRF9WQUxVRQk4NgotI2RlZmluZSBQT1BfQkxPQ0sJODcKLSNkZWZpbmUgRU5EX0ZJTkFMTFkJODgKLSNkZWZpbmUgUE9QX0VYQ0VQVAk4OQorI2RlZmluZSBZSUVMRF9WQUxVRSAgICAgODYKKyNkZWZpbmUgUE9QX0JMT0NLICAgICAgIDg3CisjZGVmaW5lIEVORF9GSU5BTExZICAgICA4OAorI2RlZmluZSBQT1BfRVhDRVBUICAgICAgODkKIAotI2RlZmluZSBIQVZFX0FSR1VNRU5UCTkwCS8qIE9wY29kZXMgZnJvbSBoZXJlIGhhdmUgYW4gYXJndW1lbnQ6ICovCisjZGVmaW5lIEhBVkVfQVJHVU1FTlQgICA5MCAgICAgIC8qIE9wY29kZXMgZnJvbSBoZXJlIGhhdmUgYW4gYXJndW1lbnQ6ICovCiAKLSNkZWZpbmUgU1RPUkVfTkFNRQk5MAkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgREVMRVRFX05BTUUJOTEJLyogIiIgKi8KLSNkZWZpbmUgVU5QQUNLX1NFUVVFTkNFCTkyCS8qIE51bWJlciBvZiBzZXF1ZW5jZSBpdGVtcyAqLwotI2RlZmluZSBGT1JfSVRFUgk5MworI2RlZmluZSBTVE9SRV9OQU1FICAgICAgOTAgICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgREVMRVRFX05BTUUgICAgIDkxICAgICAgLyogIiIgKi8KKyNkZWZpbmUgVU5QQUNLX1NFUVVFTkNFIDkyICAgICAgLyogTnVtYmVyIG9mIHNlcXVlbmNlIGl0ZW1zICovCisjZGVmaW5lIEZPUl9JVEVSICAgICAgICA5MwogI2RlZmluZSBVTlBBQ0tfRVggICAgICAgOTQgICAgICAvKiBOdW0gaXRlbXMgYmVmb3JlIHZhcmlhYmxlIHBhcnQgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTnVtIGl0ZW1zIGFmdGVyIHZhcmlhYmxlIHBhcnQgPDwgOCkgKi8KIAotI2RlZmluZSBTVE9SRV9BVFRSCTk1CS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBERUxFVEVfQVRUUgk5NgkvKiAiIiAqLwotI2RlZmluZSBTVE9SRV9HTE9CQUwJOTcJLyogIiIgKi8KLSNkZWZpbmUgREVMRVRFX0dMT0JBTAk5OAkvKiAiIiAqLworI2RlZmluZSBTVE9SRV9BVFRSICAgICAgOTUgICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgREVMRVRFX0FUVFIgICAgIDk2ICAgICAgLyogIiIgKi8KKyNkZWZpbmUgU1RPUkVfR0xPQkFMICAgIDk3ICAgICAgLyogIiIgKi8KKyNkZWZpbmUgREVMRVRFX0dMT0JBTCAgIDk4ICAgICAgLyogIiIgKi8KIAotI2RlZmluZSBMT0FEX0NPTlNUCTEwMAkvKiBJbmRleCBpbiBjb25zdCBsaXN0ICovCi0jZGVmaW5lIExPQURfTkFNRQkxMDEJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIEJVSUxEX1RVUExFCTEwMgkvKiBOdW1iZXIgb2YgdHVwbGUgaXRlbXMgKi8KLSNkZWZpbmUgQlVJTERfTElTVAkxMDMJLyogTnVtYmVyIG9mIGxpc3QgaXRlbXMgKi8KLSNkZWZpbmUgQlVJTERfU0VUCTEwNCAgICAgLyogTnVtYmVyIG9mIHNldCBpdGVtcyAqLwotI2RlZmluZSBCVUlMRF9NQVAJMTA1CS8qIEFsd2F5cyB6ZXJvIGZvciBub3cgKi8KLSNkZWZpbmUgTE9BRF9BVFRSCTEwNgkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgQ09NUEFSRV9PUAkxMDcJLyogQ29tcGFyaXNvbiBvcGVyYXRvciAqLwotI2RlZmluZSBJTVBPUlRfTkFNRQkxMDgJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIElNUE9SVF9GUk9NCTEwOQkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgTE9BRF9DT05TVCAgICAgIDEwMCAgICAgLyogSW5kZXggaW4gY29uc3QgbGlzdCAqLworI2RlZmluZSBMT0FEX05BTUUgICAgICAgMTAxICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgQlVJTERfVFVQTEUgICAgIDEwMiAgICAgLyogTnVtYmVyIG9mIHR1cGxlIGl0ZW1zICovCisjZGVmaW5lIEJVSUxEX0xJU1QgICAgICAxMDMgICAgIC8qIE51bWJlciBvZiBsaXN0IGl0ZW1zICovCisjZGVmaW5lIEJVSUxEX1NFVCAgICAgICAxMDQgICAgIC8qIE51bWJlciBvZiBzZXQgaXRlbXMgKi8KKyNkZWZpbmUgQlVJTERfTUFQICAgICAgIDEwNSAgICAgLyogQWx3YXlzIHplcm8gZm9yIG5vdyAqLworI2RlZmluZSBMT0FEX0FUVFIgICAgICAgMTA2ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgQ09NUEFSRV9PUCAgICAgIDEwNyAgICAgLyogQ29tcGFyaXNvbiBvcGVyYXRvciAqLworI2RlZmluZSBJTVBPUlRfTkFNRSAgICAgMTA4ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgSU1QT1JUX0ZST00gICAgIDEwOSAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCiAKLSNkZWZpbmUgSlVNUF9GT1JXQVJECTExMAkvKiBOdW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCAqLwotI2RlZmluZSBKVU1QX0lGX0ZBTFNFX09SX1BPUCAxMTEJLyogVGFyZ2V0IGJ5dGUgb2Zmc2V0IGZyb20gYmVnaW5uaW5nIG9mIGNvZGUgKi8KLSNkZWZpbmUgSlVNUF9JRl9UUlVFX09SX1BPUCAxMTIJLyogIiIgKi8KLSNkZWZpbmUgSlVNUF9BQlNPTFVURQkxMTMJLyogIiIgKi8KLSNkZWZpbmUgUE9QX0pVTVBfSUZfRkFMU0UgMTE0CS8qICIiICovCi0jZGVmaW5lIFBPUF9KVU1QX0lGX1RSVUUgMTE1CS8qICIiICovCisjZGVmaW5lIEpVTVBfRk9SV0FSRCAgICAxMTAgICAgIC8qIE51bWJlciBvZiBieXRlcyB0byBza2lwICovCisjZGVmaW5lIEpVTVBfSUZfRkFMU0VfT1JfUE9QIDExMSAgICAgICAgLyogVGFyZ2V0IGJ5dGUgb2Zmc2V0IGZyb20gYmVnaW5uaW5nIG9mIGNvZGUgKi8KKyNkZWZpbmUgSlVNUF9JRl9UUlVFX09SX1BPUCAxMTIgLyogIiIgKi8KKyNkZWZpbmUgSlVNUF9BQlNPTFVURSAgIDExMyAgICAgLyogIiIgKi8KKyNkZWZpbmUgUE9QX0pVTVBfSUZfRkFMU0UgMTE0ICAgLyogIiIgKi8KKyNkZWZpbmUgUE9QX0pVTVBfSUZfVFJVRSAxMTUgICAgLyogIiIgKi8KIAotI2RlZmluZSBMT0FEX0dMT0JBTAkxMTYJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIExPQURfR0xPQkFMICAgICAxMTYgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwogCi0jZGVmaW5lIENPTlRJTlVFX0xPT1AJMTE5CS8qIFN0YXJ0IG9mIGxvb3AgKGFic29sdXRlKSAqLwotI2RlZmluZSBTRVRVUF9MT09QCTEyMAkvKiBUYXJnZXQgYWRkcmVzcyAocmVsYXRpdmUpICovCi0jZGVmaW5lIFNFVFVQX0VYQ0VQVAkxMjEJLyogIiIgKi8KLSNkZWZpbmUgU0VUVVBfRklOQUxMWQkxMjIJLyogIiIgKi8KKyNkZWZpbmUgQ09OVElOVUVfTE9PUCAgIDExOSAgICAgLyogU3RhcnQgb2YgbG9vcCAoYWJzb2x1dGUpICovCisjZGVmaW5lIFNFVFVQX0xPT1AgICAgICAxMjAgICAgIC8qIFRhcmdldCBhZGRyZXNzIChyZWxhdGl2ZSkgKi8KKyNkZWZpbmUgU0VUVVBfRVhDRVBUICAgIDEyMSAgICAgLyogIiIgKi8KKyNkZWZpbmUgU0VUVVBfRklOQUxMWSAgIDEyMiAgICAgLyogIiIgKi8KIAotI2RlZmluZSBMT0FEX0ZBU1QJMTI0CS8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLwotI2RlZmluZSBTVE9SRV9GQVNUCTEyNQkvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KLSNkZWZpbmUgREVMRVRFX0ZBU1QJMTI2CS8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLworI2RlZmluZSBMT0FEX0ZBU1QgICAgICAgMTI0ICAgICAvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KKyNkZWZpbmUgU1RPUkVfRkFTVCAgICAgIDEyNSAgICAgLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCisjZGVmaW5lIERFTEVURV9GQVNUICAgICAxMjYgICAgIC8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLwogCi0jZGVmaW5lIFJBSVNFX1ZBUkFSR1MJMTMwCS8qIE51bWJlciBvZiByYWlzZSBhcmd1bWVudHMgKDEsIDIgb3IgMykgKi8KKyNkZWZpbmUgUkFJU0VfVkFSQVJHUyAgIDEzMCAgICAgLyogTnVtYmVyIG9mIHJhaXNlIGFyZ3VtZW50cyAoMSwgMiBvciAzKSAqLwogLyogQ0FMTF9GVU5DVElPTl9YWFggb3Bjb2RlcyBkZWZpbmVkIGJlbG93IGRlcGVuZCBvbiB0aGlzIGRlZmluaXRpb24gKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTgkxMzEJLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KLSNkZWZpbmUgTUFLRV9GVU5DVElPTgkxMzIJLyogI2RlZmF1bHRzICsgI2t3ZGVmYXVsdHM8PDggKyAjYW5ub3RhdGlvbnM8PDE2ICovCi0jZGVmaW5lIEJVSUxEX1NMSUNFIAkxMzMJLyogTnVtYmVyIG9mIGl0ZW1zICovCisjZGVmaW5lIENBTExfRlVOQ1RJT04gICAxMzEgICAgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCisjZGVmaW5lIE1BS0VfRlVOQ1RJT04gICAxMzIgICAgIC8qICNkZWZhdWx0cyArICNrd2RlZmF1bHRzPDw4ICsgI2Fubm90YXRpb25zPDwxNiAqLworI2RlZmluZSBCVUlMRF9TTElDRSAgICAgMTMzICAgICAvKiBOdW1iZXIgb2YgaXRlbXMgKi8KIAogI2RlZmluZSBNQUtFX0NMT1NVUkUgICAgMTM0ICAgICAvKiBzYW1lIGFzIE1BS0VfRlVOQ1RJT04gKi8KICNkZWZpbmUgTE9BRF9DTE9TVVJFICAgIDEzNSAgICAgLyogTG9hZCBmcmVlIHZhcmlhYmxlIGZyb20gY2xvc3VyZSAqLwpAQCAtMTI3LDkgKzEyNyw5IEBACiAKIC8qIFRoZSBuZXh0IDMgb3Bjb2RlcyBtdXN0IGJlIGNvbnRpZ3VvdXMgYW5kIHNhdGlzZnkKICAgIChDQUxMX0ZVTkNUSU9OX1ZBUiAtIENBTExfRlVOQ1RJT04pICYgMyA9PSAxICAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUiAgICAgICAgICAxNDAJLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9LVyAgICAgICAgICAgMTQxCS8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSX0tXICAgICAgIDE0MgkvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLworI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUiAgICAgICAgICAxNDAgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCisjZGVmaW5lIENBTExfRlVOQ1RJT05fS1cgICAgICAgICAgIDE0MSAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVJfS1cgICAgICAgMTQyICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwogCiAjZGVmaW5lIFNFVFVQX1dJVEggMTQzCiAKQEAgLTE0OSw3ICsxNDksNyBAQAogCiAKIGVudW0gY21wX29wIHtQeUNtcF9MVD1QeV9MVCwgUHlDbXBfTEU9UHlfTEUsIFB5Q21wX0VRPVB5X0VRLCBQeUNtcF9ORT1QeV9ORSwgUHlDbXBfR1Q9UHlfR1QsIFB5Q21wX0dFPVB5X0dFLAotCSAgICAgUHlDbXBfSU4sIFB5Q21wX05PVF9JTiwgUHlDbXBfSVMsIFB5Q21wX0lTX05PVCwgUHlDbXBfRVhDX01BVENILCBQeUNtcF9CQUR9OworICAgICAgICAgICAgIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sIFB5Q21wX0lTLCBQeUNtcF9JU19OT1QsIFB5Q21wX0VYQ19NQVRDSCwgUHlDbXBfQkFEfTsKIAogI2RlZmluZSBIQVNfQVJHKG9wKSAoKG9wKSA+PSBIQVZFX0FSR1VNRU5UKQogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3BhcnNldG9rLmggYi9JbmNsdWRlL3BhcnNldG9rLmgKaW5kZXggNGI3Njk0Zi4uOTExZGZjMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wYXJzZXRvay5oCisrKyBiL0luY2x1ZGUvcGFyc2V0b2suaApAQCAtOSw3ICs5LDEwIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBpbnQgZXJyb3I7Ci0gICAgY29uc3QgY2hhciAqZmlsZW5hbWU7ICAgICAgIC8qIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLworI2lmbmRlZiBQR0VOCisgICAgLyogVGhlIGZpbGVuYW1lIGlzIHVzZWxlc3MgZm9yIHBnZW4sIHNlZSBjb21tZW50IGluIHRva19zdGF0ZSBzdHJ1Y3R1cmUgKi8KKyAgICBQeU9iamVjdCAqZmlsZW5hbWU7CisjZW5kaWYKICAgICBpbnQgbGluZW5vOwogICAgIGludCBvZmZzZXQ7CiAgICAgY2hhciAqdGV4dDsgICAgICAgICAgICAgICAgIC8qIFVURi04LWVuY29kZWQgc3RyaW5nICovCkBAIC02Niw4ICs2OSwxMCBAQAogICAgIHBlcnJkZXRhaWwgKmVycl9yZXQsCiAgICAgaW50ICpmbGFncyk7CiAKLS8qIE5vdGUgdGhhdCBoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiBweXRob25ydW4uYyBub3QgcGFyc2V0b2suYy4gKi8KKy8qIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBpbiBweXRob25ydW4uYywKKyAgIG5vdCBpbiBwYXJzZXRvay5jICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5UGFyc2VyX1NldEVycm9yKHBlcnJkZXRhaWwgKik7CitQeUFQSV9GVU5DKHZvaWQpIFB5UGFyc2VyX0NsZWFyRXJyb3IocGVycmRldGFpbCAqKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3BhdGNobGV2ZWwuaCBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCmluZGV4IDA4MzkwNzEuLjYwMWI0NzIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCisrKyBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCkBAIC0xNywxOSArMTcsMTUgQEAKIC8qIFZlcnNpb24gcGFyc2VkIG91dCBpbnRvIG51bWVyaWMgdmFsdWVzICovCiAvKi0tc3RhcnQgY29uc3RhbnRzLS0qLwogI2RlZmluZSBQWV9NQUpPUl9WRVJTSU9OCTMKLSNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgkyCi0jZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMwotI2RlZmluZSBQWV9SRUxFQVNFX0xFVkVMCVBZX1JFTEVBU0VfTEVWRUxfRklOQUwKLSNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJMAorI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTMKKyNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkwCisjZGVmaW5lIFBZX1JFTEVBU0VfTEVWRUwJUFlfUkVMRUFTRV9MRVZFTF9HQU1NQQorI2RlZmluZSBQWV9SRUxFQVNFX1NFUklBTAkxCiAKIC8qIFZlcnNpb24gYXMgYSBzdHJpbmcgKi8KLSNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy4yLjMrIgorI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIzLjMuMHJjMSsiCiAvKi0tZW5kIGNvbnN0YW50cy0tKi8KIAotLyogU3VidmVyc2lvbiBSZXZpc2lvbiBudW1iZXIgb2YgdGhpcyBmaWxlIChub3Qgb2YgdGhlIHJlcG9zaXRvcnkpLiBFbXB0eQotICAgc2luY2UgTWVyY3VyaWFsIG1pZ3JhdGlvbi4gKi8KLSNkZWZpbmUgUFlfUEFUQ0hMRVZFTF9SRVZJU0lPTiAgIiIKLQogLyogVmVyc2lvbiBhcyBhIHNpbmdsZSA0LWJ5dGUgaGV4IG51bWJlciwgZS5nLiAweDAxMDUwMkIyID09IDEuNS4yYjIuCiAgICBVc2UgdGhpcyBmb3IgbnVtZXJpYyBjb21wYXJpc29ucywgZS5nLiAjaWYgUFlfVkVSU0lPTl9IRVggPj0gLi4uICovCiAjZGVmaW5lIFBZX1ZFUlNJT05fSEVYICgoUFlfTUFKT1JfVkVSU0lPTiA8PCAyNCkgfCBcCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5X2N1cnNlcy5oIGIvSW5jbHVkZS9weV9jdXJzZXMuaAppbmRleCBhODkxYzQyLi5mMmMwOGY2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5X2N1cnNlcy5oCisrKyBiL0luY2x1ZGUvcHlfY3Vyc2VzLmgKQEAgLTc2LDYgKzc2LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKIAlQeU9iamVjdF9IRUFECiAJV0lORE9XICp3aW47CisJY2hhciAqZW5jb2Rpbmc7CiB9IFB5Q3Vyc2VzV2luZG93T2JqZWN0OwogCiAjZGVmaW5lIFB5Q3Vyc2VzV2luZG93X0NoZWNrKHYpCSAoUHlfVFlQRSh2KSA9PSAmUHlDdXJzZXNXaW5kb3dfVHlwZSkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlkZWJ1Zy5oIGIvSW5jbHVkZS9weWRlYnVnLmgKaW5kZXggZTIzY2JkYy4uOTdjMmY4YyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWRlYnVnLmgKKysrIGIvSW5jbHVkZS9weWRlYnVnLmgKQEAgLTE2LDcgKzE2LDYgQEAKIFB5QVBJX0RBVEEoaW50KSBQeV9Vc2VDbGFzc0V4Y2VwdGlvbnNGbGFnOwogUHlBUElfREFUQShpbnQpIFB5X0Zyb3plbkZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnOwotUHlBUElfREFUQShpbnQpIFB5X0RpdmlzaW9uV2FybmluZ0ZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfRG9udFdyaXRlQnl0ZWNvZGVGbGFnOwogUHlBUElfREFUQShpbnQpIFB5X05vVXNlclNpdGVEaXJlY3Rvcnk7CiBQeUFQSV9EQVRBKGludCkgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZzsKQEAgLTI3LDggKzI2LDYgQEAKICAgIFBZVEhPTlBBVEggYW5kIFBZVEhPTkhPTUUgZnJvbSB0aGUgZW52aXJvbm1lbnQgKi8KICNkZWZpbmUgUHlfR0VURU5WKHMpIChQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcgPyBOVUxMIDogZ2V0ZW52KHMpKQogCi1QeUFQSV9GVU5DKHZvaWQpIFB5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSk7Ci0KICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZXJyb3JzLmggYi9JbmNsdWRlL3B5ZXJyb3JzLmgKaW5kZXggNGJiM2MwMS4uYWYzNzQxMCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWVycm9ycy5oCisrKyBiL0luY2x1ZGUvcHllcnJvcnMuaApAQCAtMTAsNyArMTAsOCBAQAogLyogUHlFeGNlcHRpb25fSEVBRCBkZWZpbmVzIHRoZSBpbml0aWFsIHNlZ21lbnQgb2YgZXZlcnkgZXhjZXB0aW9uIGNsYXNzLiAqLwogI2RlZmluZSBQeUV4Y2VwdGlvbl9IRUFEIFB5T2JqZWN0X0hFQUQgUHlPYmplY3QgKmRpY3Q7XAogICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzOyBQeU9iamVjdCAqdHJhY2ViYWNrO1wKLSAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dDsgUHlPYmplY3QgKmNhdXNlOworICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0OyBQeU9iamVjdCAqY2F1c2U7XAorICAgICAgICAgICAgIGNoYXIgc3VwcHJlc3NfY29udGV4dDsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5RXhjZXB0aW9uX0hFQUQKQEAgLTI4LDYgKzI5LDEzIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeUV4Y2VwdGlvbl9IRUFECisgICAgUHlPYmplY3QgKm1zZzsKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBQeU9iamVjdCAqcGF0aDsKK30gUHlJbXBvcnRFcnJvck9iamVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5RXhjZXB0aW9uX0hFQUQKICAgICBQeU9iamVjdCAqZW5jb2Rpbmc7CiAgICAgUHlPYmplY3QgKm9iamVjdDsKICAgICBQeV9zc2l6ZV90IHN0YXJ0OwpAQCAtNDUsMTggKzUzLDIzIEBACiAgICAgUHlPYmplY3QgKm15ZXJybm87CiAgICAgUHlPYmplY3QgKnN0cmVycm9yOwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKLX0gUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0OwotCiAjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICp3aW5lcnJvcjsKKyNlbmRpZgorICAgIFB5X3NzaXplX3Qgd3JpdHRlbjsgICAvKiBvbmx5IGZvciBCbG9ja2luZ0lPRXJyb3IsIC0xIG90aGVyd2lzZSAqLworfSBQeU9TRXJyb3JPYmplY3Q7CisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeUV4Y2VwdGlvbl9IRUFECi0gICAgUHlPYmplY3QgKm15ZXJybm87Ci0gICAgUHlPYmplY3QgKnN0cmVycm9yOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKLSAgICBQeU9iamVjdCAqd2luZXJyb3I7Ci19IFB5V2luZG93c0Vycm9yT2JqZWN0OworICAgIFB5T2JqZWN0ICp2YWx1ZTsKK30gUHlTdG9wSXRlcmF0aW9uT2JqZWN0OworCisvKiBDb21wYXRpYmlsaXR5IHR5cGVkZWZzICovCit0eXBlZGVmIFB5T1NFcnJvck9iamVjdCBQeUVudmlyb25tZW50RXJyb3JPYmplY3Q7CisjaWZkZWYgTVNfV0lORE9XUwordHlwZWRlZiBQeU9TRXJyb3JPYmplY3QgUHlXaW5kb3dzRXJyb3JPYmplY3Q7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBFcnJvciBoYW5kbGluZyBkZWZpbml0aW9ucyAqLwogCkBAIC03MCw3ICs4MywxOSBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUVycl9DbGVhcih2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfRmV0Y2goUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX1Jlc3RvcmUoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSk7CitQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX0dldEV4Y0luZm8oUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CitQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX1NldEV4Y0luZm8oUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisKKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykgfHwgXAorICAgIChkZWZpbmVkKF9fR05VQ19NQUpPUl9fKSAmJiBcCisgICAgICgoX19HTlVDX01BSk9SX18gPj0gMykgfHwgXAorICAgICAgKF9fR05VQ19NQUpPUl9fID09IDIpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA1KSkpCisjZGVmaW5lIF9QeV9OT19SRVRVUk4gX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkKKyNlbHNlCisjZGVmaW5lIF9QeV9OT19SRVRVUk4KKyNlbmRpZgorCitQeUFQSV9GVU5DKHZvaWQpIFB5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSkgX1B5X05PX1JFVFVSTjsKIAogI2lmIGRlZmluZWQoUHlfREVCVUcpIHx8IGRlZmluZWQoUHlfTElNSVRFRF9BUEkpCiAjZGVmaW5lIF9QeUVycl9PQ0NVUlJFRCgpIFB5RXJyX09jY3VycmVkKCkKQEAgLTEyMiwxMCArMTQ3LDkgQEAKIAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Bc3NlcnRpb25FcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQXR0cmlidXRlRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0J1ZmZlckVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19FT0ZFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yOwotUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19FbnZpcm9ubWVudEVycm9yOwotUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JT0Vycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19PU0Vycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbXBvcnRFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW5kZXhFcnJvcjsKQEAgLTE1MCw2ICsxNzQsMjcgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19WYWx1ZUVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcjsKKworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19CbG9ja2luZ0lPRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Jyb2tlblBpcGVFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQ2hpbGRQcm9jZXNzRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Nvbm5lY3Rpb25FcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQ29ubmVjdGlvbkFib3J0ZWRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQ29ubmVjdGlvblJlZnVzZWRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0ZpbGVFeGlzdHNFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmlsZU5vdEZvdW5kRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0ludGVycnVwdGVkRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0lzQURpcmVjdG9yeUVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Ob3RBRGlyZWN0b3J5RXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1Blcm1pc3Npb25FcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfUHJvY2Vzc0xvb2t1cEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19UaW1lb3V0RXJyb3I7CisKKworLyogQ29tcGF0aWJpbGl0eSBhbGlhc2VzICovCitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Vudmlyb25tZW50RXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0lPRXJyb3I7CiAjaWZkZWYgTVNfV0lORE9XUwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19XaW5kb3dzRXJyb3I7CiAjZW5kaWYKQEAgLTE1Nyw4ICsyMDIsNiBAQAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19WTVNFcnJvcjsKICNlbmRpZgogCi1QeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0J1ZmZlckVycm9yOwotCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdDsKIAogLyogUHJlZGVmaW5lZCB3YXJuaW5nIGNhdGVnb3JpZXMgKi8KQEAgLTE5OCw4ICsyNDEsNiBAQAogICAgICk7CiAKICNpZmRlZiBNU19XSU5ET1dTCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KAotICAgIGludCwgY29uc3QgY2hhciAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoCiAgICAgaW50IGllcnIsCiAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUgICAgICAgIC8qIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLwpAQCAtMjI0LDYgKzI2NSwxMSBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeU9iamVjdCAqLCBpbnQpOwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRFeGNXaXRoQXJnc0t3YXJncyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgIFB5T2JqZWN0ICopOworCiAvKiBFeHBvcnQgdGhlIG9sZCBmdW5jdGlvbiBzbyB0aGF0IHRoZSBleGlzdGluZyBBUEkgcmVtYWlucyBhdmFpbGFibGU6ICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX0JhZEludGVybmFsQ2FsbCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5RXJyX0JhZEludGVybmFsQ2FsbChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubyk7CkBAIC0yOTMsNiArMzM5LDEyIEBACiAgICAgUHlfc3NpemVfdCBlbmQsCiAgICAgY29uc3QgY2hhciAqcmVhc29uICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0NyZWF0ZSgKKyAgICBQeU9iamVjdCAqb2JqZWN0LAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQsCisgICAgY29uc3QgY2hhciAqcmVhc29uICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCisgICAgKTsKICNlbmRpZgogCiAvKiBnZXQgdGhlIGVuY29kaW5nIGF0dHJpYnV0ZSAqLwpAQCAtMzQ4LDcgKzQwMCw2IEBACiAgICAgY29uc3QgY2hhciAqcmVhc29uICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKIAotCiAvKiBUaGVzZSBBUElzIGFyZW4ndCByZWFsbHkgcGFydCBvZiB0aGUgZXJyb3IgaW1wbGVtZW50YXRpb24sIGJ1dAogICAgb2Z0ZW4gbmVlZGVkIHRvIGZvcm1hdCBlcnJvciBtZXNzYWdlczsgdGhlIG5hdGl2ZSBDIGxpYiBBUElzIGFyZQogICAgbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLCB3aGljaCBpcyB3aHkgd2UgcHJvdmlkZSBlbXVsYXRpb25zCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZXhwYXQuaCBiL0luY2x1ZGUvcHlleHBhdC5oCmluZGV4IDUzNDBlZjUuLjE2OGI1YjIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlleHBhdC5oCisrKyBiL0luY2x1ZGUvcHlleHBhdC5oCkBAIC00Myw2ICs0Myw4IEBACiAgICAgICAgIFhNTF9QYXJzZXIgcGFyc2VyLCBYTUxfVW5rbm93bkVuY29kaW5nSGFuZGxlciBoYW5kbGVyLAogICAgICAgICB2b2lkICplbmNvZGluZ0hhbmRsZXJEYXRhKTsKICAgICB2b2lkICgqU2V0VXNlckRhdGEpKFhNTF9QYXJzZXIgcGFyc2VyLCB2b2lkICp1c2VyRGF0YSk7CisgICAgdm9pZCAoKlNldFN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKShYTUxfUGFyc2VyIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9TdGFydERvY3R5cGVEZWNsSGFuZGxlciBzdGFydCk7CiAgICAgLyogYWx3YXlzIGFkZCBuZXcgc3R1ZmYgdG8gdGhlIGVuZCEgKi8KIH07CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltYWNyby5oIGIvSW5jbHVkZS9weW1hY3JvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRjMGM2MQotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvcHltYWNyby5oCkBAIC0wLDAgKzEsNTUgQEAKKyNpZm5kZWYgUHlfUFlNQUNST19ICisjZGVmaW5lIFB5X1BZTUFDUk9fSAorCisjZGVmaW5lIFB5X01JTih4LCB5KSAoKCh4KSA+ICh5KSkgPyAoeSkgOiAoeCkpCisjZGVmaW5lIFB5X01BWCh4LCB5KSAoKCh4KSA+ICh5KSkgPyAoeCkgOiAoeSkpCisKKy8qIEFyZ3VtZW50IG11c3QgYmUgYSBjaGFyIG9yIGFuIGludCBpbiBbLTEyOCwgMTI3XSBvciBbMCwgMjU1XS4gKi8KKyNkZWZpbmUgUHlfQ0hBUk1BU0soYykgKCh1bnNpZ25lZCBjaGFyKSgoYykgJiAweGZmKSkKKworCisvKiBBc3NlcnQgYSBidWlsZC10aW1lIGRlcGVuZGVuY3ksIGFzIGFuIGV4cHJlc3Npb24uCisKKyAgIFlvdXIgY29tcGlsZSB3aWxsIGZhaWwgaWYgdGhlIGNvbmRpdGlvbiBpc24ndCB0cnVlLCBvciBjYW4ndCBiZSBldmFsdWF0ZWQKKyAgIGJ5IHRoZSBjb21waWxlci4gVGhpcyBjYW4gYmUgdXNlZCBpbiBhbiBleHByZXNzaW9uOiBpdHMgdmFsdWUgaXMgMC4KKworICAgRXhhbXBsZToKKworICAgI2RlZmluZSBmb29fdG9fY2hhcihmb28pICBcCisgICAgICAgKChjaGFyICopKGZvbykgICAgICAgIFwKKyAgICAgICAgKyBQeV9CVUlMRF9BU1NFUlRfRVhQUihvZmZzZXRvZihzdHJ1Y3QgZm9vLCBzdHJpbmcpID09IDApKQorCisgICBXcml0dGVuIGJ5IFJ1c3R5IFJ1c3NlbGwsIHB1YmxpYyBkb21haW4sIGh0dHA6Ly9jY29kZWFyY2hpdmUubmV0LyAqLworI2RlZmluZSBQeV9CVUlMRF9BU1NFUlRfRVhQUihjb25kKSBcCisgICAgKHNpemVvZihjaGFyIFsxIC0gMiohKGNvbmQpXSkgLSAxKQorCisvKiBHZXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHZpc2libGUgYXJyYXkKKworICAgVGhpcyBkb2VzIG5vdCB3b3JrIG9uIHBvaW50ZXJzLCBvciBhcnJheXMgZGVjbGFyZWQgYXMgW10sIG9yIGZ1bmN0aW9uCisgICBwYXJhbWV0ZXJzLiBXaXRoIGNvcnJlY3QgY29tcGlsZXIgc3VwcG9ydCwgc3VjaCB1c2FnZSB3aWxsIGNhdXNlIGEgYnVpbGQKKyAgIGVycm9yIChzZWUgUHlfQlVJTERfQVNTRVJUX0VYUFIpLgorCisgICBXcml0dGVuIGJ5IFJ1c3R5IFJ1c3NlbGwsIHB1YmxpYyBkb21haW4sIGh0dHA6Ly9jY29kZWFyY2hpdmUubmV0LyAqLworI2lmIGRlZmluZWQoX19HTlVDX18pCisvKiBUd28gZ2NjIGV4dGVuc2lvbnMuCisgICAmYVswXSBkZWdyYWRlcyB0byBhIHBvaW50ZXI6IGEgZGlmZmVyZW50IHR5cGUgZnJvbSBhbiBhcnJheSAqLworI2RlZmluZSBQeV9BUlJBWV9MRU5HVEgoYXJyYXkpIFwKKyAgICAoc2l6ZW9mKGFycmF5KSAvIHNpemVvZigoYXJyYXkpWzBdKSBcCisgICAgICsgUHlfQlVJTERfQVNTRVJUX0VYUFIoIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKGFycmF5KSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZigmKGFycmF5KVswXSkpKSkKKyNlbHNlCisjZGVmaW5lIFB5X0FSUkFZX0xFTkdUSChhcnJheSkgXAorICAgIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKChhcnJheSlbMF0pKQorI2VuZGlmCisKKworLyogRGVmaW5lIG1hY3JvcyBmb3IgaW5saW5lIGRvY3VtZW50YXRpb24uICovCisjZGVmaW5lIFB5RG9jX1ZBUihuYW1lKSBzdGF0aWMgY2hhciBuYW1lW10KKyNkZWZpbmUgUHlEb2NfU1RSVkFSKG5hbWUsc3RyKSBQeURvY19WQVIobmFtZSkgPSBQeURvY19TVFIoc3RyKQorI2lmZGVmIFdJVEhfRE9DX1NUUklOR1MKKyNkZWZpbmUgUHlEb2NfU1RSKHN0cikgc3RyCisjZWxzZQorI2RlZmluZSBQeURvY19TVFIoc3RyKSAiIgorI2VuZGlmCisKKyNlbmRpZiAvKiBQeV9QWU1BQ1JPX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltYXRoLmggYi9JbmNsdWRlL3B5bWF0aC5oCmluZGV4IGI0ZWRhNjYuLjYyYTZjNDIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltYXRoLmgKKysrIGIvSW5jbHVkZS9weW1hdGguaApAQCAtMzcsMTIgKzM3LDYgQEAKICNlbmRpZiAvKiBfX1NURENfXyAqLwogI2VuZGlmIC8qIF9NU0NfVkVSICovCiAKLSNpZmRlZiBfT1NGX1NPVVJDRQotLyogT1NGMSA1LjEgZG9lc24ndCBtYWtlIHRoZXNlIGF2YWlsYWJsZSB3aXRoIFhPUEVOX1NPVVJDRV9FWFRFTkRFRCBkZWZpbmVkICovCi1leHRlcm4gaW50IGZpbml0ZShkb3VibGUpOwotZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbihkb3VibGUsIGRvdWJsZSk7Ci0jZW5kaWYKLQogLyogSGlnaCBwcmVjaXNpb24gZGVmaW50aW9uIG9mIHBpIGFuZCBlIChFdWxlcikKICAqIFRoZSB2YWx1ZXMgYXJlIHRha2VuIGZyb20gbGliYzYncyBtYXRoLmguCiAgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlwb3J0LmggYi9JbmNsdWRlL3B5cG9ydC5oCmluZGV4IDRlZjBkYjIuLmViYTM0ZjkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlwb3J0LmgKKysrIGIvSW5jbHVkZS9weXBvcnQuaApAQCAtMTM1LDcgKzEzNSw3IEBACiAjZGVmaW5lIF9QeUhBU0hfTVVMVElQTElFUiAxMDAwMDAzICAvKiAweGY0MjQzICovCiAKIC8qIFBhcmFtZXRlcnMgdXNlZCBmb3IgdGhlIG51bWVyaWMgaGFzaCBpbXBsZW1lbnRhdGlvbi4gIFNlZSBub3RlcyBmb3IKLSAgIF9QeUhhc2hfRG91YmxlIGluIE9iamVjdHMvb2JqZWN0LmMuICBOdW1lcmljIGhhc2hlcyBhcmUgYmFzZWQgb24KKyAgIF9QeV9IYXNoRG91YmxlIGluIE9iamVjdHMvb2JqZWN0LmMuICBOdW1lcmljIGhhc2hlcyBhcmUgYmFzZWQgb24KICAgIHJlZHVjdGlvbiBtb2R1bG8gdGhlIHByaW1lIDIqKl9QeUhBU0hfQklUUyAtIDEuICovCiAKICNpZiBTSVpFT0ZfVk9JRF9QID49IDgKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlzdGF0ZS5oIGIvSW5jbHVkZS9weXN0YXRlLmgKaW5kZXggYjVmZTFhZC4uMjVjMmZhYSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0YXRlLmgKKysrIGIvSW5jbHVkZS9weXN0YXRlLmgKQEAgLTI1LDcgKzI1LDcgQEAKICAgICBQeU9iamVjdCAqbW9kdWxlc19ieV9pbmRleDsKICAgICBQeU9iamVjdCAqc3lzZGljdDsKICAgICBQeU9iamVjdCAqYnVpbHRpbnM7Ci0gICAgUHlPYmplY3QgKm1vZHVsZXNfcmVsb2FkaW5nOworICAgIFB5T2JqZWN0ICppbXBvcnRsaWI7CiAKICAgICBQeU9iamVjdCAqY29kZWNfc2VhcmNoX3BhdGg7CiAgICAgUHlPYmplY3QgKmNvZGVjX3NlYXJjaF9jYWNoZTsKQEAgLTMzLDYgKzMzLDcgQEAKICAgICBpbnQgY29kZWNzX2luaXRpYWxpemVkOwogICAgIGludCBmc2NvZGVjX2luaXRpYWxpemVkOwogCisKICNpZmRlZiBIQVZFX0RMT1BFTgogICAgIGludCBkbG9wZW5mbGFnczsKICNlbmRpZgpAQCAtNzQsOSArNzUsOSBAQAogICAgIHN0cnVjdCBfZnJhbWUgKmZyYW1lOwogICAgIGludCByZWN1cnNpb25fZGVwdGg7CiAgICAgY2hhciBvdmVyZmxvd2VkOyAvKiBUaGUgc3RhY2sgaGFzIG92ZXJmbG93ZWQuIEFsbG93IDUwIG1vcmUgY2FsbHMKLQkJICAgICAgICB0byBoYW5kbGUgdGhlIHJ1bnRpbWUgZXJyb3IuICovCi0gICAgY2hhciByZWN1cnNpb25fY3JpdGljYWw7IC8qIFRoZSBjdXJyZW50IGNhbGxzIG11c3Qgbm90IGNhdXNlIAotCQkJCWEgc3RhY2sgb3ZlcmZsb3cuICovCisgICAgICAgICAgICAgICAgICAgICAgICB0byBoYW5kbGUgdGhlIHJ1bnRpbWUgZXJyb3IuICovCisgICAgY2hhciByZWN1cnNpb25fY3JpdGljYWw7IC8qIFRoZSBjdXJyZW50IGNhbGxzIG11c3Qgbm90IGNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc3RhY2sgb3ZlcmZsb3cuICovCiAgICAgLyogJ3RyYWNpbmcnIGtlZXBzIHRyYWNrIG9mIHRoZSBleGVjdXRpb24gZGVwdGggd2hlbiB0cmFjaW5nL3Byb2ZpbGluZy4KICAgICAgICBUaGlzIGlzIHRvIHByZXZlbnQgdGhlIGFjdHVhbCB0cmFjZS9wcm9maWxlIGNvZGUgZnJvbSBiZWluZyByZWNvcmRlZCBpbgogICAgICAgIHRoZSB0cmFjZS9wcm9maWxlLiAqLwpAQCAtMTIzLDYgKzEyNCwxMSBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfQ2xlYXIoUHlJbnRlcnByZXRlclN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCisvKiBOZXcgaW4gMy4zICovCitQeUFQSV9GVU5DKGludCkgUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKK1B5QVBJX0ZVTkMoaW50KSBQeVN0YXRlX1JlbW92ZU1vZHVsZShzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKKyNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5U3RhdGVfRmluZE1vZHVsZShzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKIAogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5VGhyZWFkU3RhdGVfTmV3KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKQEAgLTE2MCw2ICsxNjYsOCBAQAogICAgIGVudW0ge1B5R0lMU3RhdGVfTE9DS0VELCBQeUdJTFN0YXRlX1VOTE9DS0VEfQogICAgICAgICBQeUdJTFN0YXRlX1NUQVRFOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKwogLyogRW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIHJlYWR5IHRvIGNhbGwgdGhlIFB5dGhvbgogICAgQyBBUEksIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgUHl0aG9uLCBvciBvZiBpdHMKICAgIHRocmVhZCBsb2NrLiAgVGhpcyBtYXkgYmUgY2FsbGVkIGFzIG1hbnkgdGltZXMgYXMgZGVzaXJlZApAQCAtMjAxLDYgKzIwOSw4IEBACiAqLwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKHZvaWQpOwogCisjZW5kaWYgICAvKiAjaWZkZWYgV0lUSF9USFJFQUQgKi8KKwogLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIHN5cy5fY3VycmVudF9mcmFtZXMoKSAgUmV0dXJucyBhIGRpY3QgbWFwcGluZwogICAgdGhyZWFkIGlkIHRvIHRoYXQgdGhyZWFkJ3MgY3VycmVudCBmcmFtZS4KICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhvbnJ1bi5oIGIvSW5jbHVkZS9weXRob25ydW4uaAppbmRleCBlMjQ0Y2U3Li40ZDI0YjJkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGhvbnJ1bi5oCisrKyBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKQEAgLTMwLDYgKzMwLDkgQEAKIAogUHlBUElfRlVOQyh2b2lkKSBQeV9Jbml0aWFsaXplKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeV9Jbml0aWFsaXplRXgoaW50KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCwgaW50KTsKKyNlbmRpZgogUHlBUElfRlVOQyh2b2lkKSBQeV9GaW5hbGl6ZSh2b2lkKTsKIFB5QVBJX0ZVTkMoaW50KSBQeV9Jc0luaXRpYWxpemVkKHZvaWQpOwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5X05ld0ludGVycHJldGVyKHZvaWQpOwpAQCAtODIsOSArODUsMTIgQEAKICAgICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncyhGUCwgUywgQiwgMCkKICNlbmRpZgogUHlBUElfRlVOQyhzdHJ1Y3QgX25vZGUgKikgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncyhjb25zdCBjaGFyICosIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQpOworUHlBUElfRlVOQyhzdHJ1Y3QgX25vZGUgKikgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFnc0ZpbGVuYW1lKGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQpOwogUHlBUElfRlVOQyhzdHJ1Y3QgX25vZGUgKikgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MoRklMRSAqLCBjb25zdCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgaW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgaW50KTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVJ1bl9TdHJpbmdGbGFncyhjb25zdCBjaGFyICosIGludCwgUHlPYmplY3QgKiwKQEAgLTE3OSw5ICsxODUsNiBAQAogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvbXBpbGVyKHZvaWQpOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldEJ1aWxkSW5mbyh2b2lkKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfc3ZudmVyc2lvbih2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9TdWJ2ZXJzaW9uUmV2aXNpb24odm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfU3VidmVyc2lvblNob3J0QnJhbmNoKHZvaWQpOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9oZ2lkZW50aWZpZXIodm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hndmVyc2lvbih2b2lkKTsKICNlbmRpZgpAQCAtMTkxLDcgKzE5NCw3IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUJ1aWx0aW5fSW5pdCh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5U3lzX0luaXQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydF9Jbml0KHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlFeGNfSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5RXhjX0luaXQoUHlPYmplY3QgKiBibHRpbm1vZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydEhvb2tzX0luaXQodm9pZCk7CiBQeUFQSV9GVU5DKGludCkgX1B5RnJhbWVfSW5pdCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5RmxvYXRfSW5pdCh2b2lkKTsKQEAgLTIxNSw2ICsyMTgsNyBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUZsb2F0X0Zpbmkodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T1NfRmluaUludGVycnVwdHModm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUdDX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5U2xpY2VfRmluaSh2b2lkKTsKIAogUHlBUElfREFUQShQeVRocmVhZFN0YXRlICopIF9QeV9GaW5hbGl6aW5nOwogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhyZWFkLmggYi9JbmNsdWRlL3B5dGhyZWFkLmgKaW5kZXggOTgwNmM2MS4uNmU5ZjMwMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRocmVhZC5oCisrKyBiL0luY2x1ZGUvcHl0aHJlYWQuaApAQCAtMzIsNyArMzIsNyBAQAogICAgb24gYSBsb2NrIChzZWUgUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKCkgYmVsb3cpLgogICAgUFlfVElNRU9VVF9NQVggaXMgdGhlIGhpZ2hlc3QgdXNhYmxlIHZhbHVlIChpbiBtaWNyb3NlY29uZHMpIG9mIHRoYXQKICAgIHR5cGUsIGFuZCBkZXBlbmRzIG9uIHRoZSBzeXN0ZW0gdGhyZWFkaW5nIEFQSS4KLSAgIAorCiAgICBOT1RFOiB0aGlzIGlzbid0IHRoZSBzYW1lIHZhbHVlIGFzIGBfdGhyZWFkLlRJTUVPVVRfTUFYYC4gIFRoZSBfdGhyZWFkCiAgICBtb2R1bGUgZXhwb3NlcyBhIGhpZ2hlci1sZXZlbCBBUEksIHdpdGggdGltZW91dHMgZXhwcmVzc2VkIGluIHNlY29uZHMKICAgIGFuZCBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFsbG93ZWQuCkBAIC03NCw2ICs3NCw4IEBACiBQeUFQSV9GVU5DKHNpemVfdCkgUHlUaHJlYWRfZ2V0X3N0YWNrc2l6ZSh2b2lkKTsKIFB5QVBJX0ZVTkMoaW50KSBQeVRocmVhZF9zZXRfc3RhY2tzaXplKHNpemVfdCk7CiAKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVRocmVhZF9HZXRJbmZvKHZvaWQpOworCiAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSAoVExTKSBBUEkgKi8KIFB5QVBJX0ZVTkMoaW50KSBQeVRocmVhZF9jcmVhdGVfa2V5KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZF9kZWxldGVfa2V5KGludCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGltZS5oIGIvSW5jbHVkZS9weXRpbWUuaAppbmRleCBkNzA3YmRiLi41MjkwMmY1IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGltZS5oCisrKyBiL0luY2x1ZGUvcHl0aW1lLmgKQEAgLTMsNiArMyw3IEBACiAjZGVmaW5lIFB5X1BZVElNRV9ICiAKICNpbmNsdWRlICJweWNvbmZpZy5oIiAvKiBpbmNsdWRlIGZvciBkZWZpbmVzICovCisjaW5jbHVkZSAib2JqZWN0LmgiCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogU3ltYm9scyBhbmQgbWFjcm9zIHRvIHN1cHBseSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBpbnRlcmZhY2VzIHRvIHRpbWUgcmVsYXRlZApAQCAtMjEsMTEgKzIyLDI1IEBACiB9IF9QeVRpbWVfdGltZXZhbDsKICNlbmRpZgogCisvKiBTdHJ1Y3R1cmUgdXNlZCBieSB0aW1lLmdldF9jbG9ja19pbmZvKCkgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjb25zdCBjaGFyICppbXBsZW1lbnRhdGlvbjsKKyAgICBpbnQgbW9ub3RvbmljOworICAgIGludCBhZGp1c3RhYmxlOworICAgIGRvdWJsZSByZXNvbHV0aW9uOworfSBfUHlfY2xvY2tfaW5mb190OworCiAvKiBTaW1pbGFyIHRvIFBPU0lYIGdldHRpbWVvZmRheSBidXQgY2Fubm90IGZhaWwuICBJZiBzeXN0ZW0gZ2V0dGltZW9mZGF5CiAgKiBmYWlscyBvciBpcyBub3QgYXZhaWxhYmxlLCBmYWxsIGJhY2sgdG8gbG93ZXIgcmVzb2x1dGlvbiBjbG9ja3MuCiAgKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9nZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCk7CiAKKy8qIFNpbWlsYXIgdG8gX1B5VGltZV9nZXR0aW1lb2ZkYXkoKSBidXQgcmV0cmlldmUgYWxzbyBpbmZvcm1hdGlvbiBvbiB0aGUKKyAqIGNsb2NrIHVzZWQgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWUuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeVRpbWVfZ2V0dGltZW9mZGF5X2luZm8oCisgICAgX1B5VGltZV90aW1ldmFsICp0cCwKKyAgICBfUHlfY2xvY2tfaW5mb190ICppbmZvKTsKKwogI2RlZmluZSBfUHlUaW1lX0FERF9TRUNPTkRTKHR2LCBpbnRlcnZhbCkgXAogZG8geyBcCiAgICAgdHYudHZfdXNlYyArPSAobG9uZykgKCgobG9uZykgaW50ZXJ2YWwgLSBpbnRlcnZhbCkgKiAxMDAwMDAwKTsgXApAQCAtMzcsNiArNTIsMzcgQEAKICAgICAoKHR2X2VuZC50dl9zZWMgLSB0dl9zdGFydC50dl9zZWMpICsgXAogICAgICAodHZfZW5kLnR2X3VzZWMgLSB0dl9zdGFydC50dl91c2VjKSAqIDAuMDAwMDAxKQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gdGltZV90LiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfT2JqZWN0VG9UaW1lX3QoCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICB0aW1lX3QgKnNlYyk7CisKKy8qIENvbnZlcnQgYSB0aW1lX3QgdG8gYSBQeUxvbmcuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRnJvbVRpbWVfdCgKKyAgICB0aW1lX3Qgc2VjKTsKKworLyogQ29udmVydCBhIFB5TG9uZyB0byBhIHRpbWVfdC4gKi8KK1B5QVBJX0ZVTkModGltZV90KSBfUHlMb25nX0FzVGltZV90KAorICAgIFB5T2JqZWN0ICpvYmopOworCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gYSB0aW1ldmFsIHN0cnVjdHVyZS4KKyAgIHVzZWMgaXMgaW4gdGhlIHJhbmdlIFswOyA5OTk5OTldIGFuZCByb3VuZGVkIHRvd2FyZHMgemVyby4KKyAgIEZvciBleGFtcGxlLCAtMS4yIGlzIGNvbnZlcnRlZCB0byAoLTIsIDgwMDAwMCkuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9PYmplY3RUb1RpbWV2YWwoCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICB0aW1lX3QgKnNlYywKKyAgICBsb25nICp1c2VjKTsKKworLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzLCBpbnQgb3IgZmxvYXQsIHRvIGEgdGltZXNwZWMgc3RydWN0dXJlLgorICAgbnNlYyBpcyBpbiB0aGUgcmFuZ2UgWzA7IDk5OTk5OTk5OV0gYW5kIHJvdW5kZWQgdG93YXJkcyB6ZXJvLgorICAgRm9yIGV4YW1wbGUsIC0xLjIgaXMgY29udmVydGVkIHRvICgtMiwgODAwMDAwMDAwKS4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX09iamVjdFRvVGltZXNwZWMoCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICB0aW1lX3QgKnNlYywKKyAgICBsb25nICpuc2VjKTsKKyNlbmRpZgorCiAvKiBEdW1teSB0byBmb3JjZSBsaW5raW5nLiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUaW1lX0luaXQodm9pZCk7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc2V0b2JqZWN0LmggYi9JbmNsdWRlL3NldG9iamVjdC5oCmluZGV4IDYyMzQxMTEuLmExNDg3NGIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc2V0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9zZXRvYmplY3QuaApAQCAtOTksNiArOTksOSBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVNldF9Qb3AoUHlPYmplY3QgKnNldCk7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5U2V0X1VwZGF0ZShQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqaXRlcmFibGUpOworCitQeUFQSV9GVU5DKGludCkgUHlTZXRfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5U2V0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3RydWN0bWVtYmVyLmggYi9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCmluZGV4IDBiODViMmEuLjk0OGY2OTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKKysrIGIvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaApAQCAtOSwxNiArOSw2IEBACiAKICNpbmNsdWRlIDxzdGRkZWYuaD4gLyogRm9yIG9mZnNldG9mICovCiAKLS8qIFRoZSBvZmZzZXRvZigpIG1hY3JvIGNhbGN1bGF0ZXMgdGhlIG9mZnNldCBvZiBhIHN0cnVjdHVyZSBtZW1iZXIKLSAgIGluIGl0cyBzdHJ1Y3R1cmUuICBVbmZvcnR1bmF0ZWx5IHRoaXMgY2Fubm90IGJlIHdyaXR0ZW4gZG93bgotICAgcG9ydGFibHksIGhlbmNlIGl0IGlzIHByb3ZpZGVkIGJ5IGEgU3RhbmRhcmQgQyBoZWFkZXIgZmlsZS4KLSAgIEZvciBwcmUtU3RhbmRhcmQgQyBjb21waWxlcnMsIGhlcmUgaXMgYSB2ZXJzaW9uIHRoYXQgdXN1YWxseSB3b3JrcwotICAgKGJ1dCB3YXRjaCBvdXQhKTogKi8KLQotI2lmbmRlZiBvZmZzZXRvZgotI2RlZmluZSBvZmZzZXRvZih0eXBlLCBtZW1iZXIpICggKGludCkgJiAoKHR5cGUqKTApIC0+IG1lbWJlciApCi0jZW5kaWYKLQogLyogQW4gYXJyYXkgb2YgUHlNZW1iZXJEZWYgc3RydWN0dXJlcyBkZWZpbmVzIHRoZSBuYW1lLCB0eXBlIGFuZCBvZmZzZXQKICAgIG9mIHNlbGVjdGVkIG1lbWJlcnMgb2YgYSBDIHN0cnVjdHVyZS4gIFRoZXNlIGNhbiBiZSByZWFkIGJ5CiAgICBQeU1lbWJlcl9HZXRPbmUoKSBhbmQgc2V0IGJ5IFB5TWVtYmVyX1NldE9uZSgpIChleGNlcHQgaWYgdGhlaXIgUkVBRE9OTFkKQEAgLTI2LDQyICsxNiw0MSBAQAogICAgcG9pbnRlciBpcyBOVUxMLiAqLwogCiB0eXBlZGVmIHN0cnVjdCBQeU1lbWJlckRlZiB7Ci0JLyogQ3VycmVudCB2ZXJzaW9uLCB1c2UgdGhpcyAqLwotCWNoYXIgKm5hbWU7Ci0JaW50IHR5cGU7Ci0JUHlfc3NpemVfdCBvZmZzZXQ7Ci0JaW50IGZsYWdzOwotCWNoYXIgKmRvYzsKKyAgICBjaGFyICpuYW1lOworICAgIGludCB0eXBlOworICAgIFB5X3NzaXplX3Qgb2Zmc2V0OworICAgIGludCBmbGFnczsKKyAgICBjaGFyICpkb2M7CiB9IFB5TWVtYmVyRGVmOwogCiAvKiBUeXBlcyAqLwotI2RlZmluZSBUX1NIT1JUCQkwCi0jZGVmaW5lIFRfSU5UCQkxCi0jZGVmaW5lIFRfTE9ORwkJMgotI2RlZmluZSBUX0ZMT0FUCQkzCi0jZGVmaW5lIFRfRE9VQkxFCTQKLSNkZWZpbmUgVF9TVFJJTkcJNQotI2RlZmluZSBUX09CSkVDVAk2CisjZGVmaW5lIFRfU0hPUlQgICAgIDAKKyNkZWZpbmUgVF9JTlQgICAgICAgMQorI2RlZmluZSBUX0xPTkcgICAgICAyCisjZGVmaW5lIFRfRkxPQVQgICAgIDMKKyNkZWZpbmUgVF9ET1VCTEUgICAgNAorI2RlZmluZSBUX1NUUklORyAgICA1CisjZGVmaW5lIFRfT0JKRUNUICAgIDYKIC8qIFhYWCB0aGUgb3JkZXJpbmcgaGVyZSBpcyB3ZWlyZCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkgKi8KLSNkZWZpbmUgVF9DSEFSCQk3CS8qIDEtY2hhcmFjdGVyIHN0cmluZyAqLwotI2RlZmluZSBUX0JZVEUJCTgJLyogOC1iaXQgc2lnbmVkIGludCAqLworI2RlZmluZSBUX0NIQVIgICAgICA3ICAgLyogMS1jaGFyYWN0ZXIgc3RyaW5nICovCisjZGVmaW5lIFRfQllURSAgICAgIDggICAvKiA4LWJpdCBzaWduZWQgaW50ICovCiAvKiB1bnNpZ25lZCB2YXJpYW50czogKi8KLSNkZWZpbmUgVF9VQllURQkJOQotI2RlZmluZSBUX1VTSE9SVAkxMAotI2RlZmluZSBUX1VJTlQJCTExCi0jZGVmaW5lIFRfVUxPTkcJCTEyCisjZGVmaW5lIFRfVUJZVEUgICAgIDkKKyNkZWZpbmUgVF9VU0hPUlQgICAgMTAKKyNkZWZpbmUgVF9VSU5UICAgICAgMTEKKyNkZWZpbmUgVF9VTE9ORyAgICAgMTIKIAogLyogQWRkZWQgYnkgSmFjazogc3RyaW5ncyBjb250YWluZWQgaW4gdGhlIHN0cnVjdHVyZSAqLwotI2RlZmluZSBUX1NUUklOR19JTlBMQUNFCTEzCisjZGVmaW5lIFRfU1RSSU5HX0lOUExBQ0UgICAgMTMKIAogLyogQWRkZWQgYnkgTGlsbG86IGJvb2xzIGNvbnRhaW5lZCBpbiB0aGUgc3RydWN0dXJlIChhc3N1bWVkIGNoYXIpICovCi0jZGVmaW5lIFRfQk9PTAkJMTQKKyNkZWZpbmUgVF9CT09MICAgICAgMTQKIAotI2RlZmluZSBUX09CSkVDVF9FWAkxNgkvKiBMaWtlIFRfT0JKRUNULCBidXQgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCi0JCQkJICAgd2hlbiB0aGUgdmFsdWUgaXMgTlVMTCwgaW5zdGVhZCBvZgotCQkJCSAgIGNvbnZlcnRpbmcgdG8gTm9uZS4gKi8KKyNkZWZpbmUgVF9PQkpFQ1RfRVggMTYgIC8qIExpa2UgVF9PQkpFQ1QsIGJ1dCByYWlzZXMgQXR0cmlidXRlRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIHZhbHVlIGlzIE5VTEwsIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRpbmcgdG8gTm9uZS4gKi8KICNpZmRlZiBIQVZFX0xPTkdfTE9ORwotI2RlZmluZSBUX0xPTkdMT05HICAgICAgMTcgIAorI2RlZmluZSBUX0xPTkdMT05HICAgICAgMTcKICNkZWZpbmUgVF9VTE9OR0xPTkcgICAgIDE4CiAjZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KIApAQCAtNzAsMTAgKzU5LDEwIEBACiAKIAogLyogRmxhZ3MgKi8KLSNkZWZpbmUgUkVBRE9OTFkJMQotI2RlZmluZSBSRUFEX1JFU1RSSUNURUQJMgorI2RlZmluZSBSRUFET05MWSAgICAgICAgICAgIDEKKyNkZWZpbmUgUkVBRF9SRVNUUklDVEVEICAgICAyCiAjZGVmaW5lIFBZX1dSSVRFX1JFU1RSSUNURUQgNAotI2RlZmluZSBSRVNUUklDVEVECShSRUFEX1JFU1RSSUNURUQgfCBQWV9XUklURV9SRVNUUklDVEVEKQorI2RlZmluZSBSRVNUUklDVEVEICAgICAgICAgIChSRUFEX1JFU1RSSUNURUQgfCBQWV9XUklURV9SRVNUUklDVEVEKQogCiAKIC8qIEN1cnJlbnQgQVBJLCB1c2UgdGhpcyAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zeW10YWJsZS5oIGIvSW5jbHVkZS9zeW10YWJsZS5oCmluZGV4IGZkN2RlMDQuLjgyZjYyNjkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3ltdGFibGUuaAorKysgYi9JbmNsdWRlL3N5bXRhYmxlLmgKQEAgLTIzLDEwICsyMywxMyBAQAogICAgIFB5T2JqZWN0ICpzdF9ibG9ja3M7ICAgICAgICAgICAgLyogZGljdDogbWFwIEFTVCBub2RlIGFkZHJlc3NlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICAgdG8gc3ltYm9sIHRhYmxlIGVudHJpZXMgKi8KICAgICBQeU9iamVjdCAqc3Rfc3RhY2s7ICAgICAgICAgICAgIC8qIGxpc3Q6IHN0YWNrIG9mIG5hbWVzcGFjZSBpbmZvICovCi0gICAgUHlPYmplY3QgKnN0X2dsb2JhbDsgICAgICAgICAgICAvKiBib3Jyb3dlZCByZWYgdG8gc3RfdG9wLT5zdF9zeW1ib2xzICovCi0gICAgaW50IHN0X25ibG9ja3M7ICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYmxvY2tzIHVzZWQgKi8KKyAgICBQeU9iamVjdCAqc3RfZ2xvYmFsOyAgICAgICAgICAgIC8qIGJvcnJvd2VkIHJlZiB0byBzdF90b3AtPnN0ZV9zeW1ib2xzICovCisgICAgaW50IHN0X25ibG9ja3M7ICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYmxvY2tzIHVzZWQuIGtlcHQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zaXN0ZW5jeSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlciBzdHJ1Y3R1cmUgKi8KICAgICBQeU9iamVjdCAqc3RfcHJpdmF0ZTsgICAgICAgICAgIC8qIG5hbWUgb2YgY3VycmVudCBjbGFzcyBvciBOVUxMICovCi0gICAgUHlGdXR1cmVGZWF0dXJlcyAqc3RfZnV0dXJlOyAgICAvKiBtb2R1bGUncyBmdXR1cmUgZmVhdHVyZXMgKi8KKyAgICBQeUZ1dHVyZUZlYXR1cmVzICpzdF9mdXR1cmU7ICAgIC8qIG1vZHVsZSdzIGZ1dHVyZSBmZWF0dXJlcyB0aGF0IGFmZmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN5bWJvbCB0YWJsZSAqLwogfTsKIAogdHlwZWRlZiBzdHJ1Y3QgX3N5bXRhYmxlX2VudHJ5IHsKQEAgLTM0LDcgKzM3LDcgQEAKICAgICBQeU9iamVjdCAqc3RlX2lkOyAgICAgICAgLyogaW50OiBrZXkgaW4gc3RlX3RhYmxlLT5zdF9ibG9ja3MgKi8KICAgICBQeU9iamVjdCAqc3RlX3N5bWJvbHM7ICAgLyogZGljdDogdmFyaWFibGUgbmFtZXMgdG8gZmxhZ3MgKi8KICAgICBQeU9iamVjdCAqc3RlX25hbWU7ICAgICAgLyogc3RyaW5nOiBuYW1lIG9mIGN1cnJlbnQgYmxvY2sgKi8KLSAgICBQeU9iamVjdCAqc3RlX3Zhcm5hbWVzOyAgLyogbGlzdCBvZiB2YXJpYWJsZSBuYW1lcyAqLworICAgIFB5T2JqZWN0ICpzdGVfdmFybmFtZXM7ICAvKiBsaXN0IG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMgKi8KICAgICBQeU9iamVjdCAqc3RlX2NoaWxkcmVuOyAgLyogbGlzdCBvZiBjaGlsZCBibG9ja3MgKi8KICAgICBfUHlfYmxvY2tfdHkgc3RlX3R5cGU7ICAgLyogbW9kdWxlLCBjbGFzcywgb3IgZnVuY3Rpb24gKi8KICAgICBpbnQgc3RlX3Vub3B0aW1pemVkOyAgICAgLyogZmFsc2UgaWYgbmFtZXNwYWNlIGlzIG9wdGltaXplZCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS90aW1lZnVuY3MuaCBiL0luY2x1ZGUvdGltZWZ1bmNzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNDM1NzUuLjAwMDAwMDAKLS0tIGEvSW5jbHVkZS90aW1lZnVuY3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8qICB0aW1lZnVuY3MuaAotICovCi0KLS8qIFV0aWxpdHkgZnVuY3Rpb24gcmVsYXRlZCB0byB0aW1lbW9kdWxlLmMuICovCi0KLSNpZm5kZWYgVElNRUZVTkNTX0gKLSNkZWZpbmUgVElNRUZVTkNTX0gKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotCi0vKiBDYXN0IGRvdWJsZSB4IHRvIHRpbWVfdCwgYnV0IHJhaXNlIFZhbHVlRXJyb3IgaWYgeCBpcyB0b28gbGFyZ2UKLSAqIHRvIGZpdCBpbiBhIHRpbWVfdC4gIFZhbHVlRXJyb3IgaXMgc2V0IG9uIHJldHVybiBpZmYgdGhlIHJldHVybgotICogdmFsdWUgaXMgKHRpbWVfdCktMSBhbmQgUHlFcnJfT2NjdXJyZWQoKS4KLSAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyh0aW1lX3QpIF9QeVRpbWVfRG91YmxlVG9UaW1ldChkb3VibGUgeCk7Ci0jZW5kaWYKLQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotI2VuZGlmICAvKiBUSU1FRlVOQ1NfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS90cmFjZWJhY2suaCBiL0luY2x1ZGUvdHJhY2ViYWNrLmgKaW5kZXggNjllM2QwNS4uNzczNDcwNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS90cmFjZWJhY2suaAorKysgYi9JbmNsdWRlL3RyYWNlYmFjay5oCkBAIC01LDYgKzUsOCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2luY2x1ZGUgInB5c3RhdGUuaCIKKwogc3RydWN0IF9mcmFtZTsKIAogLyogVHJhY2ViYWNrIGludGVyZmFjZSAqLwpAQCAtMjgsNiArMzAsNDIgQEAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVRyYWNlQmFja19UeXBlOwogI2RlZmluZSBQeVRyYWNlQmFja19DaGVjayh2KSAoUHlfVFlQRSh2KSA9PSAmUHlUcmFjZUJhY2tfVHlwZSkKIAorLyogV3JpdGUgdGhlIFB5dGhvbiB0cmFjZWJhY2sgaW50byB0aGUgZmlsZSAnZmQnLiBGb3IgZXhhbXBsZToKKworICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICAgICBGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiA8eHh4PgorICAgICAgICAgRmlsZSAieHh4IiwgbGluZSB4eHggaW4gPHh4eD4KKyAgICAgICAgIC4uLgorICAgICAgICAgRmlsZSAieHh4IiwgbGluZSB4eHggaW4gPHh4eD4KKworICAgVGhpcyBmdW5jdGlvbiBpcyB3cml0dGVuIGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHksIHRvIGR1bXAgdGhlIHRyYWNlYmFjayBpbgorICAgdGhlIHdvcnN0IGNhc2U6IGFmdGVyIGEgc2VnbWVudGF0aW9uIGZhdWx0LCBhdCBmYXRhbCBlcnJvciwgZXRjLiBUaGF0J3Mgd2h5LAorICAgaXQgaXMgdmVyeSBsaW1pdGVkLiBTdHJpbmdzIGFyZSB0cnVuY2F0ZWQgdG8gMTAwIGNoYXJhY3RlcnMgYW5kIGVuY29kZWQgdG8KKyAgIEFTQ0lJIHdpdGggYmFja3NsYXNocmVwbGFjZS4gSXQgZG9lc24ndCB3cml0ZSB0aGUgc291cmNlIGNvZGUsIG9ubHkgdGhlCisgICBmdW5jdGlvbiBuYW1lLCBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgb2YgZWFjaCBmcmFtZS4gV3JpdGUgb25seSB0aGUgZmlyc3QKKyAgIDEwMCBmcmFtZXM6IGlmIHRoZSB0cmFjZWJhY2sgaXMgdHJ1bmNhdGVkLCB3cml0ZSB0aGUgbGluZSAiIC4uLiIuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK1B5QVBJX0RBVEEodm9pZCkgX1B5X0R1bXBUcmFjZWJhY2soCisgICAgaW50IGZkLAorICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSk7CisKKy8qIFdyaXRlIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgaW50byB0aGUgZmlsZSAnZmQnLiBjdXJyZW50X3RocmVhZCBjYW4gYmUKKyAgIE5VTEwuIFJldHVybiBOVUxMIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgd3JpdHRlbiBmb3IgZGVidWcgcHVycG9zZSBvbmx5LiBJdCBjYWxscworICAgX1B5X0R1bXBUcmFjZWJhY2soKSBmb3IgZWFjaCB0aHJlYWQsIGFuZCBzbyBoYXMgdGhlIHNhbWUgbGltaXRhdGlvbnMuIEl0CisgICBvbmx5IHdyaXRlIHRoZSB0cmFjZWJhY2sgb2YgdGhlIGZpcnN0IDEwMCB0aHJlYWRzOiB3cml0ZSAiLi4uIiBpZiB0aGVyZSBhcmUKKyAgIG1vcmUgdGhyZWFkcy4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworUHlBUElfREFUQShjb25zdCBjaGFyKikgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKAorICAgIGludCBmZCwgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCisgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90aHJlYWQpOworCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3R1cGxlb2JqZWN0LmggYi9JbmNsdWRlL3R1cGxlb2JqZWN0LmgKaW5kZXggZjE3Yjc4OC4uYzI3M2NlNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS90dXBsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvdHVwbGVvYmplY3QuaApAQCAtNjMsNiArNjMsOSBAQAogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoaW50KSBQeVR1cGxlX0NsZWFyRnJlZUxpc3Qodm9pZCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeVR1cGxlX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvdWNuaGFzaC5oIGIvSW5jbHVkZS91Y25oYXNoLmgKaW5kZXggNzBmZGYxMy4uOGRlOWJhMCAxMDA2NDQKLS0tIGEvSW5jbHVkZS91Y25oYXNoLmgKKysrIGIvSW5jbHVkZS91Y25oYXNoLmgKQEAgLTE5LDExICsxOSwxMyBAQAogICAgICAgIHN1Y2Nlc3MsIHplcm8gaWYgbm90LiAgRG9lcyBub3Qgc2V0IFB5dGhvbiBleGNlcHRpb25zLiAKICAgICAgICBJZiBzZWxmIGlzIE5VTEwsIGRhdGEgY29tZSBmcm9tIHRoZSBkZWZhdWx0IHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlLgogICAgICAgIElmIGl0IGlzIG5vdCBOVUxMLCBpdCBzaG91bGQgYmUgYSB1bmljb2RlZGF0YS51Y2RfWF9ZX1ogb2JqZWN0ICovCi0gICAgaW50ICgqZ2V0bmFtZSkoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgY29kZSwgY2hhciogYnVmZmVyLCBpbnQgYnVmbGVuKTsKKyAgICBpbnQgKCpnZXRuYW1lKShQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCBjb2RlLCBjaGFyKiBidWZmZXIsIGludCBidWZsZW4sCisgICAgICAgICAgICAgICAgICAgaW50IHdpdGhfYWxpYXNfYW5kX3NlcSk7CiAKICAgICAvKiBHZXQgY2hhcmFjdGVyIGNvZGUgZm9yIGEgZ2l2ZW4gbmFtZS4gIFNhbWUgZXJyb3IgaGFuZGxpbmcKICAgICAgICBhcyBmb3IgZ2V0bmFtZS4gKi8KLSAgICBpbnQgKCpnZXRjb2RlKShQeU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciogbmFtZSwgaW50IG5hbWVsZW4sIFB5X1VDUzQqIGNvZGUpOworICAgIGludCAoKmdldGNvZGUpKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQgbmFtZWxlbiwgUHlfVUNTNCogY29kZSwKKyAgICAgICAgICAgICAgICAgICBpbnQgd2l0aF9uYW1lZF9zZXEpOwogCiB9IF9QeVVuaWNvZGVfTmFtZV9DQVBJOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaCBiL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCmluZGV4IDM3OWE5MGMuLjEzNWU0NjkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCkBAIC02NCwxNiArNjQsMTUgQEAKIC8qIFB5dGhvbiAzLnggcmVxdWlyZXMgdW5pY29kZSAqLwogI2RlZmluZSBQeV9VU0lOR19VTklDT0RFCiAKLS8qIEZJWE1FOiBNdkwncyBuZXcgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0IFB5X1VOSUNPREVfU0laRSBpcwotICAgcHJvcGVybHkgc2V0LCBidXQgdGhlIGRlZmF1bHQgcnVsZXMgYmVsb3cgZG9lc24ndCBzZXQgaXQuICBJJ2xsCi0gICBzb3J0IHRoaXMgb3V0IHNvbWUgb3RoZXIgZGF5IC0tIGZyZWRyaWtAcHl0aG9ud2FyZS5jb20gKi8KLQotI2lmbmRlZiBQeV9VTklDT0RFX1NJWkUKLSNlcnJvciBNdXN0IGRlZmluZSBQeV9VTklDT0RFX1NJWkUKKyNpZm5kZWYgU0laRU9GX1dDSEFSX1QKKyNlcnJvciBNdXN0IGRlZmluZSBTSVpFT0ZfV0NIQVJfVAogI2VuZGlmCiAKLS8qIFNldHRpbmcgUHlfVU5JQ09ERV9XSURFIGVuYWJsZXMgVUNTLTQgc3RvcmFnZS4gIE90aGVyd2lzZSwgVW5pY29kZQotICAgc3RyaW5ncyBhcmUgc3RvcmVkIGFzIFVDUy0yICh3aXRoIGxpbWl0ZWQgc3VwcG9ydCBmb3IgVVRGLTE2KSAqLworI2RlZmluZSBQeV9VTklDT0RFX1NJWkUgU0laRU9GX1dDSEFSX1QKKworLyogSWYgd2NoYXJfdCBjYW4gYmUgdXNlZCBmb3IgVUNTLTQgc3RvcmFnZSwgc2V0IFB5X1VOSUNPREVfV0lERS4KKyAgIE90aGVyd2lzZSwgVW5pY29kZSBzdHJpbmdzIGFyZSBzdG9yZWQgYXMgVUNTLTIgKHdpdGggbGltaXRlZCBzdXBwb3J0CisgICBmb3IgVVRGLTE2KSAqLwogCiAjaWYgUHlfVU5JQ09ERV9TSVpFID49IDQKICNkZWZpbmUgUHlfVU5JQ09ERV9XSURFCkBAIC04NCwxOSArODMsMTQgQEAKIC8qICNkZWZpbmUgSEFWRV9XQ0hBUl9IICovCiAvKiAjZGVmaW5lIEhBVkVfVVNBQkxFX1dDSEFSX1QgKi8KIAotLyogRGVmYXVsdHMgZm9yIHZhcmlvdXMgcGxhdGZvcm1zICovCi0jaWZuZGVmIFBZX1VOSUNPREVfVFlQRQorLyogUHlfVU5JQ09ERSB3YXMgdGhlIG5hdGl2ZSBVbmljb2RlIHN0b3JhZ2UgZm9ybWF0IChjb2RlIHVuaXQpIHVzZWQgYnkKKyAgIFB5dGhvbiBhbmQgcmVwcmVzZW50cyBhIHNpbmdsZSBVbmljb2RlIGVsZW1lbnQgaW4gdGhlIFVuaWNvZGUgdHlwZS4KKyAgIFdpdGggUEVQIDM5MywgUHlfVU5JQ09ERSBpcyBkZXByZWNhdGVkIGFuZCByZXBsYWNlZCB3aXRoIGEKKyAgIHR5cGVkZWYgdG8gd2NoYXJfdC4gKi8KIAotLyogV2luZG93cyBoYXMgYSB1c2FibGUgd2NoYXJfdCB0eXBlICh1bmxlc3Mgd2UncmUgdXNpbmcgVUNTLTQpICovCi0jIGlmIGRlZmluZWQoTVNfV0lOMzIpICYmIFB5X1VOSUNPREVfU0laRSA9PSAyCi0jICBkZWZpbmUgSEFWRV9VU0FCTEVfV0NIQVJfVAotIyAgZGVmaW5lIFBZX1VOSUNPREVfVFlQRSB3Y2hhcl90Ci0jIGVuZGlmCi0KLSMgaWYgZGVmaW5lZChQeV9VTklDT0RFX1dJREUpCi0jICBkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIFB5X1VDUzQKLSMgZW5kaWYKLQorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBQWV9VTklDT0RFX1RZUEUgd2NoYXJfdAordHlwZWRlZiB3Y2hhcl90IFB5X1VOSUNPREU7CiAjZW5kaWYKIAogLyogSWYgdGhlIGNvbXBpbGVyIHByb3ZpZGVzIGEgd2NoYXJfdCB0eXBlIHdlIHRyeSB0byBzdXBwb3J0IGl0CkBAIC0xMDksNiArMTAzLDEwIEBACiAjIGVuZGlmCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyMgIGRlZmluZSBIQVZFX01CQ1MKKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9XQ0hBUl9ICiAvKiBXb3JrIGFyb3VuZCBhIGNvc21ldGljIGJ1ZyBpbiBCU0RJIDQueCB3Y2hhci5oOyB0aGFua3MgdG8gVGhvbWFzIFdvdXRlcnMgKi8KICMgaWZkZWYgX0hBVkVfQlNESQpAQCAtMTE3LDIwMSArMTE1LDI0IEBACiAjICBpbmNsdWRlIDx3Y2hhci5oPgogI2VuZGlmCiAKLS8qCi0gKiBVc2UgdGhpcyB0eXBlZGVmIHdoZW4geW91IG5lZWQgdG8gcmVwcmVzZW50IGEgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyCi0gKiBhcyBzaW5nbGUgdW5zaWduZWQgaW50ZWdlci4KLSAqLwotI2lmIFNJWkVPRl9JTlQgPj0gNAorLyogUHlfVUNTNCBhbmQgUHlfVUNTMiBhcmUgdHlwZWRlZnMgZm9yIHRoZSByZXNwZWN0aXZlCisgICB1bmljb2RlIHJlcHJlc2VudGF0aW9ucy4gKi8KKyNpZiBTSVpFT0ZfSU5UID09IDQKIHR5cGVkZWYgdW5zaWduZWQgaW50IFB5X1VDUzQ7Ci0jZWxpZiBTSVpFT0ZfTE9ORyA+PSA0CisjZWxpZiBTSVpFT0ZfTE9ORyA9PSA0CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgUHlfVUNTNDsKLSNlbmRpZgotCi0vKiBQeV9VTklDT0RFIGlzIHRoZSBuYXRpdmUgVW5pY29kZSBzdG9yYWdlIGZvcm1hdCAoY29kZSB1bml0KSB1c2VkIGJ5Ci0gICBQeXRob24gYW5kIHJlcHJlc2VudHMgYSBzaW5nbGUgVW5pY29kZSBlbGVtZW50IGluIHRoZSBVbmljb2RlCi0gICB0eXBlLiAqLwotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi10eXBlZGVmIFBZX1VOSUNPREVfVFlQRSBQeV9VTklDT0RFOwotI2VuZGlmCi0KLS8qIC0tLSBVQ1MtMi9VQ1MtNCBOYW1lIE1hbmdsaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKiBVbmljb2RlIEFQSSBuYW1lcyBhcmUgbWFuZ2xlZCB0byBhc3N1cmUgdGhhdCBVQ1MtMiBhbmQgVUNTLTQgYnVpbGRzCi0gICBwcm9kdWNlIGRpZmZlcmVudCBleHRlcm5hbCBuYW1lcyBhbmQgdGh1cyBjYXVzZSBpbXBvcnQgZXJyb3JzIGluCi0gICBjYXNlIFB5dGhvbiBpbnRlcnByZXRlcnMgYW5kIGV4dGVuc2lvbnMgd2l0aCBtaXhlZCBjb21waWxlZCBpbgotICAgVW5pY29kZSB3aWR0aCBhc3N1bXB0aW9ucyBhcmUgY29tYmluZWQuICovCi0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0KLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNBU0NJSVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzQ2hhcm1hcFN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1MyX0FzRGVjb2RlZE9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUgUHlVbmljb2RlVUNTMl9Bc0RlY29kZWRVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzJfQXNFbmNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNFbmNvZGVkU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZSBQeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZFVuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzTGF0aW4xU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzVVRGMzJTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nIFB5VW5pY29kZVVDUzJfQXNVVEYxNlN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGOFN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzVVRGOFN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVW5pY29kZSBQeVVuaWNvZGVVQ1MyX0FzVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzVW5pY29kZUVzY2FwZVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzV2lkZUNoYXIgUHlVbmljb2RlVUNTMl9Bc1dpZGVDaGFyCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzV2lkZUNoYXJTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9DbGVhckZyZWVMaXN0IFB5VW5pY29kZVVDUzJfQ2xlYXJGcmVlbGlzdAotIyBkZWZpbmUgUHlVbmljb2RlX0NvbXBhcmUgUHlVbmljb2RlVUNTMl9Db21wYXJlCi0jIGRlZmluZSBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyBQeVVuaWNvZGVVQ1MyX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Db25jYXQgUHlVbmljb2RlVUNTMl9Db25jYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9BcHBlbmQgUHlVbmljb2RlVUNTMl9BcHBlbmQKLSMgZGVmaW5lIFB5VW5pY29kZV9BcHBlbmRBbmREZWwgUHlVbmljb2RlVUNTMl9BcHBlbmRBbmREZWwKLSMgZGVmaW5lIFB5VW5pY29kZV9Db250YWlucyBQeVVuaWNvZGVVQ1MyX0NvbnRhaW5zCi0jIGRlZmluZSBQeVVuaWNvZGVfQ291bnQgUHlVbmljb2RlVUNTMl9Db3VudAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZSBQeVVuaWNvZGVVQ1MyX0RlY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUFTQ0lJIFB5VW5pY29kZVVDUzJfRGVjb2RlQVNDSUkKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwIFB5VW5pY29kZVVDUzJfRGVjb2RlQ2hhcm1hcAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUxhdGluMSBQeVVuaWNvZGVVQ1MyX0RlY29kZUxhdGluMQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCBQeVVuaWNvZGVVQ1MyX0RlY29kZUZTRGVmYXVsdAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUgUHlVbmljb2RlVUNTMl9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1MyX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYzMiBQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjMyCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bCBQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjMyU3RhdGVmdWwKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYxNiBQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjE2Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bCBQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjE2U3RhdGVmdWwKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEY4IFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bCBQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjhTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTMl9EZWNvZGVVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlIFB5VW5pY29kZVVDUzJfRW5jb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlQVNDSUkgUHlVbmljb2RlVUNTMl9FbmNvZGVBU0NJSQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUNoYXJtYXAgUHlVbmljb2RlVUNTMl9FbmNvZGVDaGFybWFwCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbCBQeVVuaWNvZGVVQ1MyX0VuY29kZURlY2ltYWwKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEgUHlVbmljb2RlVUNTMl9FbmNvZGVMYXRpbjEKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzJfRW5jb2RlUmF3VW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjMyIFB5VW5pY29kZVVDUzJfRW5jb2RlVVRGMzIKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEYxNiBQeVVuaWNvZGVVQ1MyX0VuY29kZVVURjE2Ci0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGOCBQeVVuaWNvZGVVQ1MyX0VuY29kZVVURjgKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzJfRW5jb2RlVW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0ZpbmQgUHlVbmljb2RlVUNTMl9GaW5kCi0jIGRlZmluZSBQeVVuaWNvZGVfRm9ybWF0IFB5VW5pY29kZVVDUzJfRm9ybWF0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QgUHlVbmljb2RlVUNTMl9Gcm9tRW5jb2RlZE9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21Gb3JtYXQgUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYgUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0VgotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21PYmplY3QgUHlVbmljb2RlVUNTMl9Gcm9tT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbU9yZGluYWwgUHlVbmljb2RlVUNTMl9Gcm9tT3JkaW5hbAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21TdHJpbmcgUHlVbmljb2RlVUNTMl9Gcm9tU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUgUHlVbmljb2RlVUNTMl9Gcm9tU3RyaW5nQW5kU2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21Vbmljb2RlIFB5VW5pY29kZVVDUzJfRnJvbVVuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIgUHlVbmljb2RlVUNTMl9Gcm9tV2lkZUNoYXIKLSMgZGVmaW5lIFB5VW5pY29kZV9GU0NvbnZlcnRlciBQeVVuaWNvZGVVQ1MyX0ZTQ29udmVydGVyCi0jIGRlZmluZSBQeVVuaWNvZGVfRlNEZWNvZGVyIFB5VW5pY29kZVVDUzJfRlNEZWNvZGVyCi0jIGRlZmluZSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nIFB5VW5pY29kZVVDUzJfR2V0RGVmYXVsdEVuY29kaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfR2V0TWF4IFB5VW5pY29kZVVDUzJfR2V0TWF4Ci0jIGRlZmluZSBQeVVuaWNvZGVfR2V0U2l6ZSBQeVVuaWNvZGVVQ1MyX0dldFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9Jc0lkZW50aWZpZXIgUHlVbmljb2RlVUNTMl9Jc0lkZW50aWZpZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9Kb2luIFB5VW5pY29kZVVDUzJfSm9pbgotIyBkZWZpbmUgUHlVbmljb2RlX1BhcnRpdGlvbiBQeVVuaWNvZGVVQ1MyX1BhcnRpdGlvbgotIyBkZWZpbmUgUHlVbmljb2RlX1JQYXJ0aXRpb24gUHlVbmljb2RlVUNTMl9SUGFydGl0aW9uCi0jIGRlZmluZSBQeVVuaWNvZGVfUlNwbGl0IFB5VW5pY29kZVVDUzJfUlNwbGl0Ci0jIGRlZmluZSBQeVVuaWNvZGVfUmVwbGFjZSBQeVVuaWNvZGVVQ1MyX1JlcGxhY2UKLSMgZGVmaW5lIFB5VW5pY29kZV9SZXNpemUgUHlVbmljb2RlVUNTMl9SZXNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9SaWNoQ29tcGFyZSBQeVVuaWNvZGVVQ1MyX1JpY2hDb21wYXJlCi0jIGRlZmluZSBQeVVuaWNvZGVfU3BsaXQgUHlVbmljb2RlVUNTMl9TcGxpdAotIyBkZWZpbmUgUHlVbmljb2RlX1NwbGl0bGluZXMgUHlVbmljb2RlVUNTMl9TcGxpdGxpbmVzCi0jIGRlZmluZSBQeVVuaWNvZGVfVGFpbG1hdGNoIFB5VW5pY29kZVVDUzJfVGFpbG1hdGNoCi0jIGRlZmluZSBQeVVuaWNvZGVfVHJhbnNsYXRlIFB5VW5pY29kZVVDUzJfVHJhbnNsYXRlCi0jIGRlZmluZSBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcCBQeVVuaWNvZGVVQ1MyX1RyYW5zbGF0ZUNoYXJtYXAKLSMgZGVmaW5lIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyBfUHlVbmljb2RlVUNTMl9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nCi0jIGRlZmluZSBfUHlVbmljb2RlX0ZpbmkgX1B5VW5pY29kZVVDUzJfRmluaQotIyBkZWZpbmUgX1B5VW5pY29kZV9Jbml0IF9QeVVuaWNvZGVVQ1MyX0luaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9zdHJkdXAgUHlVbmljb2RlVUNTMl9zdHJkdXAKLQogI2Vsc2UKLQotIyBkZWZpbmUgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc0FTQ0lJU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNDaGFybWFwU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzRfQXNEZWNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZSBQeVVuaWNvZGVVQ1M0X0FzRGVjb2RlZFVuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QgUHlVbmljb2RlVUNTNF9Bc0VuY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc0VuY29kZWRTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlIFB5VW5pY29kZVVDUzRfQXNFbmNvZGVkVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNMYXRpbjFTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNVVEYzMlN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1VURjE2U3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nIFB5VW5pY29kZVVDUzRfQXNVVEY4U3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVbmljb2RlIFB5VW5pY29kZVVDUzRfQXNVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNXaWRlQ2hhciBQeVVuaWNvZGVVQ1M0X0FzV2lkZUNoYXIKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNXaWRlQ2hhclN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0NsZWFyRnJlZUxpc3QgUHlVbmljb2RlVUNTNF9DbGVhckZyZWVsaXN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQ29tcGFyZSBQeVVuaWNvZGVVQ1M0X0NvbXBhcmUKLSMgZGVmaW5lIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nIFB5VW5pY29kZVVDUzRfQ29tcGFyZVdpdGhBU0NJSVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0NvbmNhdCBQeVVuaWNvZGVVQ1M0X0NvbmNhdAotIyBkZWZpbmUgUHlVbmljb2RlX0FwcGVuZCBQeVVuaWNvZGVVQ1M0X0FwcGVuZAotIyBkZWZpbmUgUHlVbmljb2RlX0FwcGVuZEFuZERlbCBQeVVuaWNvZGVVQ1M0X0FwcGVuZEFuZERlbAotIyBkZWZpbmUgUHlVbmljb2RlX0NvbnRhaW5zIFB5VW5pY29kZVVDUzRfQ29udGFpbnMKLSMgZGVmaW5lIFB5VW5pY29kZV9Db3VudCBQeVVuaWNvZGVVQ1M0X0NvdW50Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlIFB5VW5pY29kZVVDUzRfRGVjb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkgUHlVbmljb2RlVUNTNF9EZWNvZGVBU0NJSQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUNoYXJtYXAgUHlVbmljb2RlVUNTNF9EZWNvZGVDaGFybWFwCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xIFB5VW5pY29kZVVDUzRfRGVjb2RlTGF0aW4xCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0IFB5VW5pY29kZVVDUzRfRGVjb2RlRlNEZWZhdWx0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSBQeVVuaWNvZGVVQ1M0X0RlY29kZUZTRGVmYXVsdEFuZFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzRfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjMyIFB5VW5pY29kZVVDUzRfRGVjb2RlVVRGMzIKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsIFB5VW5pY29kZVVDUzRfRGVjb2RlVVRGMzJTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjE2IFB5VW5pY29kZVVDUzRfRGVjb2RlVVRGMTYKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsIFB5VW5pY29kZVVDUzRfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjggUHlVbmljb2RlVUNTNF9EZWNvZGVVVEY4Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsIFB5VW5pY29kZVVDUzRfRGVjb2RlVVRGOFN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1M0X0RlY29kZVVuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGUgUHlVbmljb2RlVUNTNF9FbmNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVBU0NJSSBQeVVuaWNvZGVVQ1M0X0VuY29kZUFTQ0lJCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcCBQeVVuaWNvZGVVQ1M0X0VuY29kZUNoYXJtYXAKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsIFB5VW5pY29kZVVDUzRfRW5jb2RlRGVjaW1hbAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUxhdGluMSBQeVVuaWNvZGVVQ1M0X0VuY29kZUxhdGluMQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTNF9FbmNvZGVSYXdVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGMzIgUHlVbmljb2RlVUNTNF9FbmNvZGVVVEYzMgotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjE2IFB5VW5pY29kZVVDUzRfRW5jb2RlVVRGMTYKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEY4IFB5VW5pY29kZVVDUzRfRW5jb2RlVVRGOAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTNF9FbmNvZGVVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRmluZCBQeVVuaWNvZGVVQ1M0X0ZpbmQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gb3JtYXQgUHlVbmljb2RlVUNTNF9Gb3JtYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1M0X0Zyb21FbmNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbUZvcm1hdCBQeVVuaWNvZGVVQ1M0X0Zyb21Gb3JtYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRm9ybWF0ViBQeVVuaWNvZGVVQ1M0X0Zyb21Gb3JtYXRWCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbU9iamVjdCBQeVVuaWNvZGVVQ1M0X0Zyb21PYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCBQeVVuaWNvZGVVQ1M0X0Zyb21PcmRpbmFsCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVN0cmluZyBQeVVuaWNvZGVVQ1M0X0Zyb21TdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSBQeVVuaWNvZGVVQ1M0X0Zyb21TdHJpbmdBbmRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUgUHlVbmljb2RlVUNTNF9Gcm9tVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21XaWRlQ2hhciBQeVVuaWNvZGVVQ1M0X0Zyb21XaWRlQ2hhcgotIyBkZWZpbmUgUHlVbmljb2RlX0ZTQ29udmVydGVyIFB5VW5pY29kZVVDUzRfRlNDb252ZXJ0ZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9GU0RlY29kZXIgUHlVbmljb2RlVUNTNF9GU0RlY29kZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcgUHlVbmljb2RlVUNTNF9HZXREZWZhdWx0RW5jb2RpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXRNYXggUHlVbmljb2RlVUNTNF9HZXRNYXgKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXRTaXplIFB5VW5pY29kZVVDUzRfR2V0U2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0lzSWRlbnRpZmllciBQeVVuaWNvZGVVQ1M0X0lzSWRlbnRpZmllcgotIyBkZWZpbmUgUHlVbmljb2RlX0pvaW4gUHlVbmljb2RlVUNTNF9Kb2luCi0jIGRlZmluZSBQeVVuaWNvZGVfUGFydGl0aW9uIFB5VW5pY29kZVVDUzRfUGFydGl0aW9uCi0jIGRlZmluZSBQeVVuaWNvZGVfUlBhcnRpdGlvbiBQeVVuaWNvZGVVQ1M0X1JQYXJ0aXRpb24KLSMgZGVmaW5lIFB5VW5pY29kZV9SU3BsaXQgUHlVbmljb2RlVUNTNF9SU3BsaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9SZXBsYWNlIFB5VW5pY29kZVVDUzRfUmVwbGFjZQotIyBkZWZpbmUgUHlVbmljb2RlX1Jlc2l6ZSBQeVVuaWNvZGVVQ1M0X1Jlc2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX1JpY2hDb21wYXJlIFB5VW5pY29kZVVDUzRfUmljaENvbXBhcmUKLSMgZGVmaW5lIFB5VW5pY29kZV9TcGxpdCBQeVVuaWNvZGVVQ1M0X1NwbGl0Ci0jIGRlZmluZSBQeVVuaWNvZGVfU3BsaXRsaW5lcyBQeVVuaWNvZGVVQ1M0X1NwbGl0bGluZXMKLSMgZGVmaW5lIFB5VW5pY29kZV9UYWlsbWF0Y2ggUHlVbmljb2RlVUNTNF9UYWlsbWF0Y2gKLSMgZGVmaW5lIFB5VW5pY29kZV9UcmFuc2xhdGUgUHlVbmljb2RlVUNTNF9UcmFuc2xhdGUKLSMgZGVmaW5lIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwIFB5VW5pY29kZVVDUzRfVHJhbnNsYXRlQ2hhcm1hcAotIyBkZWZpbmUgX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nIF9QeVVuaWNvZGVVQ1M0X0FzRGVmYXVsdEVuY29kZWRTdHJpbmcKLSMgZGVmaW5lIF9QeVVuaWNvZGVfRmluaSBfUHlVbmljb2RlVUNTNF9GaW5pCi0jIGRlZmluZSBfUHlVbmljb2RlX0luaXQgX1B5VW5pY29kZVVDUzRfSW5pdAotIyBkZWZpbmUgUHlVbmljb2RlX3N0cmR1cCBQeVVuaWNvZGVVQ1M0X3N0cmR1cAotCisjZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgcHJvcGVyIHR5cGVkZWYgZm9yIFB5X1VDUzQiCiAjZW5kaWYKIAorI2lmIFNJWkVPRl9TSE9SVCA9PSAyCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFB5X1VDUzI7CisjZWxzZQorI2Vycm9yICJDb3VsZCBub3QgZmluZCBhIHByb3BlciB0eXBlZGVmIGZvciBQeV9VQ1MyIgorI2VuZGlmCisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBQeV9VQ1MxOworCiAvKiAtLS0gSW50ZXJuYWwgVW5pY29kZSBPcGVyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogLyogU2luY2Ugc3BsaXR0aW5nIG9uIHdoaXRlc3BhY2UgaXMgYW4gaW1wb3J0YW50IHVzZSBjYXNlLCBhbmQKQEAgLTM1MCw3ICsxNzEsNyBAQAogICAgIFB5X1VOSUNPREVfSVNESUdJVChjaCkgfHwgXAogICAgIFB5X1VOSUNPREVfSVNOVU1FUklDKGNoKSkKIAotI2RlZmluZSBQeV9VTklDT0RFX0NPUFkodGFyZ2V0LCBzb3VyY2UsIGxlbmd0aCkgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBQeV9VTklDT0RFX0NPUFkodGFyZ2V0LCBzb3VyY2UsIGxlbmd0aCkgXAogICAgIFB5X01FTUNQWSgodGFyZ2V0KSwgKHNvdXJjZSksIChsZW5ndGgpKnNpemVvZihQeV9VTklDT0RFKSkKIAogI2RlZmluZSBQeV9VTklDT0RFX0ZJTEwodGFyZ2V0LCB2YWx1ZSwgbGVuZ3RoKSBcCkBAIC0zNTgsMTMgKzE3OSwyNyBAQAogICAgIGZvciAoaV8gPSAwOyBpXyA8IChsZW5ndGgpOyBpXysrKSB0X1tpX10gPSB2XztcCiAgICAgfSB3aGlsZSAoMCkKIAorLyogbWFjcm9zIHRvIHdvcmsgd2l0aCBzdXJyb2dhdGVzICovCisjZGVmaW5lIFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REZGRikKKyNkZWZpbmUgUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERCRkYpCisjZGVmaW5lIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShjaCkgKDB4REMwMCA8PSBjaCAmJiBjaCA8PSAweERGRkYpCisvKiBKb2luIHR3byBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgcmV0dXJuIGEgc2luZ2xlIFB5X1VDUzQgdmFsdWUuICovCisjZGVmaW5lIFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKGhpZ2gsIGxvdykgIFwKKyAgICAoKCgoKFB5X1VDUzQpKGhpZ2gpICYgMHgwM0ZGKSA8PCAxMCkgfCAgICAgIFwKKyAgICAgICgoUHlfVUNTNCkobG93KSAmIDB4MDNGRikpICsgMHgxMDAwMCkKKy8qIGhpZ2ggc3Vycm9nYXRlID0gdG9wIDEwIGJpdHMgYWRkZWQgdG8gRDgwMCAqLworI2RlZmluZSBQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKGNoKSAoMHhEODAwIC0gKDB4MTAwMDAgPj4gMTApICsgKChjaCkgPj4gMTApKQorLyogbG93IHN1cnJvZ2F0ZSA9IGJvdHRvbSAxMCBiaXRzIGFkZGVkIHRvIERDMDAgKi8KKyNkZWZpbmUgUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKGNoKSAoMHhEQzAwICsgKChjaCkgJiAweDNGRikpCisKIC8qIENoZWNrIGlmIHN1YnN0cmluZyBtYXRjaGVzIGF0IGdpdmVuIG9mZnNldC4gIFRoZSBvZmZzZXQgbXVzdCBiZQogICAgdmFsaWQsIGFuZCB0aGUgc3Vic3RyaW5nIG11c3Qgbm90IGJlIGVtcHR5LiAqLwogCiAjZGVmaW5lIFB5X1VOSUNPREVfTUFUQ0goc3RyaW5nLCBvZmZzZXQsIHN1YnN0cmluZykgXAotICAgICgoKigoc3RyaW5nKS0+c3RyICsgKG9mZnNldCkpID09ICooKHN1YnN0cmluZyktPnN0cikpICYmIFwKLSAgICAoKCooKHN0cmluZyktPnN0ciArIChvZmZzZXQpICsgKHN1YnN0cmluZyktPmxlbmd0aC0xKSA9PSAqKChzdWJzdHJpbmcpLT5zdHIgKyAoc3Vic3RyaW5nKS0+bGVuZ3RoLTEpKSkgJiYgXAotICAgICAhbWVtY21wKChzdHJpbmcpLT5zdHIgKyAob2Zmc2V0KSwgKHN1YnN0cmluZyktPnN0ciwgKHN1YnN0cmluZyktPmxlbmd0aCpzaXplb2YoUHlfVU5JQ09ERSkpKQorICAgICgoKigoc3RyaW5nKS0+d3N0ciArIChvZmZzZXQpKSA9PSAqKChzdWJzdHJpbmcpLT53c3RyKSkgJiYgXAorICAgICAoKCooKHN0cmluZyktPndzdHIgKyAob2Zmc2V0KSArIChzdWJzdHJpbmcpLT53c3RyX2xlbmd0aC0xKSA9PSAqKChzdWJzdHJpbmcpLT53c3RyICsgKHN1YnN0cmluZyktPndzdHJfbGVuZ3RoLTEpKSkgJiYgXAorICAgICAhbWVtY21wKChzdHJpbmcpLT53c3RyICsgKG9mZnNldCksIChzdWJzdHJpbmcpLT53c3RyLCAoc3Vic3RyaW5nKS0+d3N0cl9sZW5ndGgqc2l6ZW9mKFB5X1VOSUNPREUpKSkKKwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtMzc0LDQxICsyMDksMzc0IEBACiAvKiAtLS0gVW5pY29kZSBUeXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorCisvKiBBU0NJSS1vbmx5IHN0cmluZ3MgY3JlYXRlZCB0aHJvdWdoIFB5VW5pY29kZV9OZXcgdXNlIHRoZSBQeUFTQ0lJT2JqZWN0CisgICBzdHJ1Y3R1cmUuIHN0YXRlLmFzY2lpIGFuZCBzdGF0ZS5jb21wYWN0IGFyZSBzZXQsIGFuZCB0aGUgZGF0YQorICAgaW1tZWRpYXRlbHkgZm9sbG93IHRoZSBzdHJ1Y3R1cmUuIHV0ZjhfbGVuZ3RoIGFuZCB3c3RyX2xlbmd0aCBjYW4gYmUgZm91bmQKKyAgIGluIHRoZSBsZW5ndGggZmllbGQ7IHRoZSB1dGY4IHBvaW50ZXIgaXMgZXF1YWwgdG8gdGhlIGRhdGEgcG9pbnRlci4gKi8KIHR5cGVkZWYgc3RydWN0IHsKKyAgICAvKiBUaGVyZSBhcmUgNCBmb3JtcyBvZiBVbmljb2RlIHN0cmluZ3M6CisKKyAgICAgICAtIGNvbXBhY3QgYXNjaWk6CisKKyAgICAgICAgICogc3RydWN0dXJlID0gUHlBU0NJSU9iamVjdAorICAgICAgICAgKiB0ZXN0OiBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvcCkKKyAgICAgICAgICoga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5ECisgICAgICAgICAqIGNvbXBhY3QgPSAxCisgICAgICAgICAqIGFzY2lpID0gMQorICAgICAgICAgKiByZWFkeSA9IDEKKyAgICAgICAgICogKGxlbmd0aCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSB1dGY4IGFuZCB3c3RyIHN0cmluZ3MpCisgICAgICAgICAqIChkYXRhIHN0YXJ0cyBqdXN0IGFmdGVyIHRoZSBzdHJ1Y3R1cmUpCisgICAgICAgICAqIChzaW5jZSBBU0NJSSBpcyBkZWNvZGVkIGZyb20gVVRGLTgsIHRoZSB1dGY4IHN0cmluZyBhcmUgdGhlIGRhdGEpCisKKyAgICAgICAtIGNvbXBhY3Q6CisKKyAgICAgICAgICogc3RydWN0dXJlID0gUHlDb21wYWN0VW5pY29kZU9iamVjdAorICAgICAgICAgKiB0ZXN0OiBQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgJiYgIVB5VW5pY29kZV9JU19BU0NJSShvcCkKKyAgICAgICAgICoga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5ELCBQeVVuaWNvZGVfMkJZVEVfS0lORCBvcgorICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfS0lORAorICAgICAgICAgKiBjb21wYWN0ID0gMQorICAgICAgICAgKiByZWFkeSA9IDEKKyAgICAgICAgICogYXNjaWkgPSAwCisgICAgICAgICAqIHV0ZjggaXMgbm90IHNoYXJlZCB3aXRoIGRhdGEKKyAgICAgICAgICogdXRmOF9sZW5ndGggPSAwIGlmIHV0ZjggaXMgTlVMTAorICAgICAgICAgKiB3c3RyIGlzIHNoYXJlZCB3aXRoIGRhdGEgYW5kIHdzdHJfbGVuZ3RoPWxlbmd0aAorICAgICAgICAgICBpZiBraW5kPVB5VW5pY29kZV8yQllURV9LSU5EIGFuZCBzaXplb2Yod2NoYXJfdCk9MgorICAgICAgICAgICBvciBpZiBraW5kPVB5VW5pY29kZV80QllURV9LSU5EIGFuZCBzaXplb2Yod2NoYXJfdCk9NAorICAgICAgICAgKiB3c3RyX2xlbmd0aCA9IDAgaWYgd3N0ciBpcyBOVUxMCisgICAgICAgICAqIChkYXRhIHN0YXJ0cyBqdXN0IGFmdGVyIHRoZSBzdHJ1Y3R1cmUpCisKKyAgICAgICAtIGxlZ2FjeSBzdHJpbmcsIG5vdCByZWFkeToKKworICAgICAgICAgKiBzdHJ1Y3R1cmUgPSBQeVVuaWNvZGVPYmplY3QKKyAgICAgICAgICogdGVzdDoga2luZCA9PSBQeVVuaWNvZGVfV0NIQVJfS0lORAorICAgICAgICAgKiBsZW5ndGggPSAwICh1c2Ugd3N0cl9sZW5ndGgpCisgICAgICAgICAqIGhhc2ggPSAtMQorICAgICAgICAgKiBraW5kID0gUHlVbmljb2RlX1dDSEFSX0tJTkQKKyAgICAgICAgICogY29tcGFjdCA9IDAKKyAgICAgICAgICogYXNjaWkgPSAwCisgICAgICAgICAqIHJlYWR5ID0gMAorICAgICAgICAgKiBpbnRlcm5lZCA9IFNTVEFURV9OT1RfSU5URVJORUQKKyAgICAgICAgICogd3N0ciBpcyBub3QgTlVMTAorICAgICAgICAgKiBkYXRhLmFueSBpcyBOVUxMCisgICAgICAgICAqIHV0ZjggaXMgTlVMTAorICAgICAgICAgKiB1dGY4X2xlbmd0aCA9IDAKKworICAgICAgIC0gbGVnYWN5IHN0cmluZywgcmVhZHk6CisKKyAgICAgICAgICogc3RydWN0dXJlID0gUHlVbmljb2RlT2JqZWN0IHN0cnVjdHVyZQorICAgICAgICAgKiB0ZXN0OiAhUHlVbmljb2RlX0lTX0NPTVBBQ1Qob3ApICYmIGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQKKyAgICAgICAgICoga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5ELCBQeVVuaWNvZGVfMkJZVEVfS0lORCBvcgorICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfS0lORAorICAgICAgICAgKiBjb21wYWN0ID0gMAorICAgICAgICAgKiByZWFkeSA9IDEKKyAgICAgICAgICogZGF0YS5hbnkgaXMgbm90IE5VTEwKKyAgICAgICAgICogdXRmOCBpcyBzaGFyZWQgYW5kIHV0ZjhfbGVuZ3RoID0gbGVuZ3RoIHdpdGggZGF0YS5hbnkgaWYgYXNjaWkgPSAxCisgICAgICAgICAqIHV0ZjhfbGVuZ3RoID0gMCBpZiB1dGY4IGlzIE5VTEwKKyAgICAgICAgICogd3N0ciBpcyBzaGFyZWQgd2l0aCBkYXRhLmFueSBhbmQgd3N0cl9sZW5ndGggPSBsZW5ndGgKKyAgICAgICAgICAgaWYga2luZD1QeVVuaWNvZGVfMkJZVEVfS0lORCBhbmQgc2l6ZW9mKHdjaGFyX3QpPTIKKyAgICAgICAgICAgb3IgaWYga2luZD1QeVVuaWNvZGVfNEJZVEVfS0lORCBhbmQgc2l6ZW9mKHdjaGFyXzQpPTQKKyAgICAgICAgICogd3N0cl9sZW5ndGggPSAwIGlmIHdzdHIgaXMgTlVMTAorCisgICAgICAgQ29tcGFjdCBzdHJpbmdzIHVzZSBvbmx5IG9uZSBtZW1vcnkgYmxvY2sgKHN0cnVjdHVyZSArIGNoYXJhY3RlcnMpLAorICAgICAgIHdoZXJlYXMgbGVnYWN5IHN0cmluZ3MgdXNlIG9uZSBibG9jayBmb3IgdGhlIHN0cnVjdHVyZSBhbmQgb25lIGJsb2NrCisgICAgICAgZm9yIGNoYXJhY3RlcnMuCisKKyAgICAgICBMZWdhY3kgc3RyaW5ncyBhcmUgY3JlYXRlZCBieSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoKSBhbmQKKyAgICAgICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSkgZnVuY3Rpb25zLiBUaGV5IGJlY29tZSByZWFkeQorICAgICAgIHdoZW4gUHlVbmljb2RlX1JFQURZKCkgaXMgY2FsbGVkLgorCisgICAgICAgU2VlIGFsc28gX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KCkuCisgICAgKi8KICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlfc3NpemVfdCBsZW5ndGg7ICAgICAgICAgIC8qIExlbmd0aCBvZiByYXcgVW5pY29kZSBkYXRhIGluIGJ1ZmZlciAqLwotICAgIFB5X1VOSUNPREUgKnN0cjsgICAgICAgICAgICAvKiBSYXcgVW5pY29kZSBidWZmZXIgKi8KKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsgICAgICAgICAgLyogTnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSBzdHJpbmcgKi8KICAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgLyogSGFzaCB2YWx1ZTsgLTEgaWYgbm90IHNldCAqLwotICAgIGludCBzdGF0ZTsgICAgICAgICAgICAgICAgICAvKiAhPSAwIGlmIGludGVybmVkLiBJbiB0aGlzIGNhc2UgdGhlIHR3bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZWZlcmVuY2VzIGZyb20gdGhlIGRpY3Rpb25hcnkgdG8gdGhpcyBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYXJlICpub3QqIGNvdW50ZWQgaW4gb2JfcmVmY250LiAqLwotICAgIFB5T2JqZWN0ICpkZWZlbmM7ICAgICAgICAgICAvKiAoRGVmYXVsdCkgRW5jb2RlZCB2ZXJzaW9uIGFzIFB5dGhvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcsIG9yIE5VTEw7IHRoaXMgaXMgdXNlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50aW5nIHRoZSBidWZmZXIgcHJvdG9jb2wgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICAvKgorICAgICAgICAgICBTU1RBVEVfTk9UX0lOVEVSTkVEICgwKQorICAgICAgICAgICBTU1RBVEVfSU5URVJORURfTU9SVEFMICgxKQorICAgICAgICAgICBTU1RBVEVfSU5URVJORURfSU1NT1JUQUwgKDIpCisKKyAgICAgICAgICAgSWYgaW50ZXJuZWQgIT0gU1NUQVRFX05PVF9JTlRFUk5FRCwgdGhlIHR3byByZWZlcmVuY2VzIGZyb20gdGhlCisgICAgICAgICAgIGRpY3Rpb25hcnkgdG8gdGhpcyBvYmplY3QgYXJlICpub3QqIGNvdW50ZWQgaW4gb2JfcmVmY250LgorICAgICAgICAgKi8KKyAgICAgICAgdW5zaWduZWQgaW50IGludGVybmVkOjI7CisgICAgICAgIC8qIENoYXJhY3RlciBzaXplOgorCisgICAgICAgICAgIC0gUHlVbmljb2RlX1dDSEFSX0tJTkQgKDApOgorCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXIgdHlwZSA9IHdjaGFyX3QgKDE2IG9yIDMyIGJpdHMsIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgICAgICAgIHBsYXRmb3JtKQorCisgICAgICAgICAgIC0gUHlVbmljb2RlXzFCWVRFX0tJTkQgKDEpOgorCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXIgdHlwZSA9IFB5X1VDUzEgKDggYml0cywgdW5zaWduZWQpCisgICAgICAgICAgICAgKiBhbGwgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHJhbmdlIFUrMDAwMC1VKzAwRkYgKGxhdGluMSkKKyAgICAgICAgICAgICAqIGlmIGFzY2lpIGlzIHNldCwgYWxsIGNoYXJhY3RlcnMgYXJlIGluIHRoZSByYW5nZSBVKzAwMDAtVSswMDdGCisgICAgICAgICAgICAgICAoQVNDSUkpLCBvdGhlcndpc2UgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpcyBpbiB0aGUgcmFuZ2UKKyAgICAgICAgICAgICAgIFUrMDA4MC1VKzAwRkYKKworICAgICAgICAgICAtIFB5VW5pY29kZV8yQllURV9LSU5EICgyKToKKworICAgICAgICAgICAgICogY2hhcmFjdGVyIHR5cGUgPSBQeV9VQ1MyICgxNiBiaXRzLCB1bnNpZ25lZCkKKyAgICAgICAgICAgICAqIGFsbCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgcmFuZ2UgVSswMDAwLVUrRkZGRiAoQk1QKQorICAgICAgICAgICAgICogYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpcyBpbiB0aGUgcmFuZ2UgVSswMTAwLVUrRkZGRgorCisgICAgICAgICAgIC0gUHlVbmljb2RlXzRCWVRFX0tJTkQgKDQpOgorCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXIgdHlwZSA9IFB5X1VDUzQgKDMyIGJpdHMsIHVuc2lnbmVkKQorICAgICAgICAgICAgICogYWxsIGNoYXJhY3RlcnMgYXJlIGluIHRoZSByYW5nZSBVKzAwMDAtVSsxMEZGRkYKKyAgICAgICAgICAgICAqIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaXMgaW4gdGhlIHJhbmdlIFUrMTAwMDAtVSsxMEZGRkYKKyAgICAgICAgICovCisgICAgICAgIHVuc2lnbmVkIGludCBraW5kOjM7CisgICAgICAgIC8qIENvbXBhY3QgaXMgd2l0aCByZXNwZWN0IHRvIHRoZSBhbGxvY2F0aW9uIHNjaGVtZS4gQ29tcGFjdCB1bmljb2RlCisgICAgICAgICAgIG9iamVjdHMgb25seSByZXF1aXJlIG9uZSBtZW1vcnkgYmxvY2sgd2hpbGUgbm9uLWNvbXBhY3Qgb2JqZWN0cyB1c2UKKyAgICAgICAgICAgb25lIGJsb2NrIGZvciB0aGUgUHlVbmljb2RlT2JqZWN0IHN0cnVjdCBhbmQgYW5vdGhlciBmb3IgaXRzIGRhdGEKKyAgICAgICAgICAgYnVmZmVyLiAqLworICAgICAgICB1bnNpZ25lZCBpbnQgY29tcGFjdDoxOworICAgICAgICAvKiBUaGUgc3RyaW5nIG9ubHkgY29udGFpbnMgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgVSswMDAwLVUrMDA3RiAoQVNDSUkpCisgICAgICAgICAgIGFuZCB0aGUga2luZCBpcyBQeVVuaWNvZGVfMUJZVEVfS0lORC4gSWYgYXNjaWkgaXMgc2V0IGFuZCBjb21wYWN0IGlzCisgICAgICAgICAgIHNldCwgdXNlIHRoZSBQeUFTQ0lJT2JqZWN0IHN0cnVjdHVyZS4gKi8KKyAgICAgICAgdW5zaWduZWQgaW50IGFzY2lpOjE7CisgICAgICAgIC8qIFRoZSByZWFkeSBmbGFnIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvYmplY3QgbGF5b3V0IGlzIGluaXRpYWxpemVkCisgICAgICAgICAgIGNvbXBsZXRlbHkuIFRoaXMgbWVhbnMgdGhhdCB0aGlzIGlzIGVpdGhlciBhIGNvbXBhY3Qgb2JqZWN0LCBvcgorICAgICAgICAgICB0aGUgZGF0YSBwb2ludGVyIGlzIGZpbGxlZCBvdXQuIFRoZSBiaXQgaXMgcmVkdW5kYW50LCBhbmQgaGVscHMKKyAgICAgICAgICAgdG8gbWluaW1pemUgdGhlIHRlc3QgaW4gUHlVbmljb2RlX0lTX1JFQURZKCkuICovCisgICAgICAgIHVuc2lnbmVkIGludCByZWFkeToxOworICAgIH0gc3RhdGU7CisgICAgd2NoYXJfdCAqd3N0cjsgICAgICAgICAgICAgIC8qIHdjaGFyX3QgcmVwcmVzZW50YXRpb24gKG51bGwtdGVybWluYXRlZCkgKi8KK30gUHlBU0NJSU9iamVjdDsKKworLyogTm9uLUFTQ0lJIHN0cmluZ3MgYWxsb2NhdGVkIHRocm91Z2ggUHlVbmljb2RlX05ldyB1c2UgdGhlCisgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0IHN0cnVjdHVyZS4gc3RhdGUuY29tcGFjdCBpcyBzZXQsIGFuZCB0aGUgZGF0YQorICAgaW1tZWRpYXRlbHkgZm9sbG93IHRoZSBzdHJ1Y3R1cmUuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlBU0NJSU9iamVjdCBfYmFzZTsKKyAgICBQeV9zc2l6ZV90IHV0ZjhfbGVuZ3RoOyAgICAgLyogTnVtYmVyIG9mIGJ5dGVzIGluIHV0ZjgsIGV4Y2x1ZGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGVybWluYXRpbmcgXDAuICovCisgICAgY2hhciAqdXRmODsgICAgICAgICAgICAgICAgIC8qIFVURi04IHJlcHJlc2VudGF0aW9uIChudWxsLXRlcm1pbmF0ZWQpICovCisgICAgUHlfc3NpemVfdCB3c3RyX2xlbmd0aDsgICAgIC8qIE51bWJlciBvZiBjb2RlIHBvaW50cyBpbiB3c3RyLCBwb3NzaWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdXJyb2dhdGVzIGNvdW50IGFzIHR3byBjb2RlIHBvaW50cy4gKi8KK30gUHlDb21wYWN0VW5pY29kZU9iamVjdDsKKworLyogU3RyaW5ncyBhbGxvY2F0ZWQgdGhyb3VnaCBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgbGVuKSB1c2UgdGhlCisgICBQeVVuaWNvZGVPYmplY3Qgc3RydWN0dXJlLiBUaGUgYWN0dWFsIHN0cmluZyBkYXRhIGlzIGluaXRpYWxseSBpbiB0aGUgd3N0cgorICAgYmxvY2ssIGFuZCBjb3BpZWQgaW50byB0aGUgZGF0YSBibG9jayB1c2luZyBfUHlVbmljb2RlX1JlYWR5LiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgX2Jhc2U7CisgICAgdW5pb24geworICAgICAgICB2b2lkICphbnk7CisgICAgICAgIFB5X1VDUzEgKmxhdGluMTsKKyAgICAgICAgUHlfVUNTMiAqdWNzMjsKKyAgICAgICAgUHlfVUNTNCAqdWNzNDsKKyAgICB9IGRhdGE7ICAgICAgICAgICAgICAgICAgICAgLyogQ2Fub25pY2FsLCBzbWFsbGVzdC1mb3JtIFVuaWNvZGUgYnVmZmVyICovCiB9IFB5VW5pY29kZU9iamVjdDsKICNlbmRpZgogCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlVbmljb2RlX1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlVbmljb2RlSXRlcl9UeXBlOwogCi0jZGVmaW5lIFNTVEFURV9OT1RfSU5URVJORUQgMAotI2RlZmluZSBTU1RBVEVfSU5URVJORURfTU9SVEFMIDEKLSNkZWZpbmUgU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMIDIKLQogI2RlZmluZSBQeVVuaWNvZGVfQ2hlY2sob3ApIFwKICAgICAgICAgICAgICAgICAgUHlUeXBlX0Zhc3RTdWJjbGFzcyhQeV9UWVBFKG9wKSwgUHlfVFBGTEFHU19VTklDT0RFX1NVQkNMQVNTKQogI2RlZmluZSBQeVVuaWNvZGVfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeVVuaWNvZGVfVHlwZSkKIAogLyogRmFzdCBhY2Nlc3MgbWFjcm9zICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi0jZGVmaW5lIFB5VW5pY29kZV9HRVRfU0laRShvcCkgXAotICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksKCgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPmxlbmd0aCkpCisKKyNkZWZpbmUgUHlVbmljb2RlX1dTVFJfTEVOR1RIKG9wKSBcCisgICAgKFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSA/ICAgICAgICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QqKW9wKS0+bGVuZ3RoIDogICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0KilvcCktPndzdHJfbGVuZ3RoKQorCisvKiBSZXR1cm5zIHRoZSBkZXByZWNhdGVkIFB5X1VOSUNPREUgcmVwcmVzZW50YXRpb24ncyBzaXplIGluIGNvZGUgdW5pdHMKKyAgICh0aGlzIGluY2x1ZGVzIHN1cnJvZ2F0ZSBwYWlycyBhcyAyIHVuaXRzKS4KKyAgIElmIHRoZSBQeV9VTklDT0RFIHJlcHJlc2VudGF0aW9uIGlzIG5vdCBhdmFpbGFibGUsIGl0IHdpbGwgYmUgY29tcHV0ZWQKKyAgIG9uIHJlcXVlc3QuICBVc2UgUHlVbmljb2RlX0dFVF9MRU5HVEgoKSBmb3IgdGhlIGxlbmd0aCBpbiBjb2RlIHBvaW50cy4gKi8KKworI2RlZmluZSBQeVVuaWNvZGVfR0VUX1NJWkUob3ApICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT53c3RyKSA/ICAgICAgICAgICAgICAgXAorICAgICAgUHlVbmljb2RlX1dTVFJfTEVOR1RIKG9wKSA6ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoKHZvaWQpUHlVbmljb2RlX0FzVW5pY29kZSgoUHlPYmplY3QgKikob3ApKSwgIFwKKyAgICAgICBhc3NlcnQoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPndzdHIpLCAgICAgICAgXAorICAgICAgIFB5VW5pY29kZV9XU1RSX0xFTkdUSChvcCkpKQorCiAjZGVmaW5lIFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKG9wKSBcCi0gICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwoKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+bGVuZ3RoICogc2l6ZW9mKFB5X1VOSUNPREUpKSkKKyAgICAoUHlVbmljb2RlX0dFVF9TSVpFKG9wKSAqIFB5X1VOSUNPREVfU0laRSkKKworLyogQWxpYXMgZm9yIFB5VW5pY29kZV9Bc1VuaWNvZGUoKS4gIFRoaXMgd2lsbCBjcmVhdGUgYSB3Y2hhcl90L1B5X1VOSUNPREUKKyAgIHJlcHJlc2VudGF0aW9uIG9uIGRlbWFuZC4gIFVzaW5nIHRoaXMgbWFjcm8gaXMgdmVyeSBpbmVmZmljaWVudCBub3csCisgICB0cnkgdG8gcG9ydCB5b3VyIGNvZGUgdG8gdXNlIHRoZSBuZXcgUHlVbmljb2RlXypCWVRFX0RBVEEoKSBtYWNyb3Mgb3IKKyAgIHVzZSBQeVVuaWNvZGVfV1JJVEUoKSBhbmQgUHlVbmljb2RlX1JFQUQoKS4gKi8KKwogI2RlZmluZSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvcCkgXAotICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksKCgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPnN0cikpCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgXAorICAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPndzdHIpID8gKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT53c3RyKSA6IFwKKyAgICAgIFB5VW5pY29kZV9Bc1VuaWNvZGUoKFB5T2JqZWN0ICopKG9wKSkpCisKICNkZWZpbmUgUHlVbmljb2RlX0FTX0RBVEEob3ApIFwKLSAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCgoY29uc3QgY2hhciAqKSgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPnN0cikpCisgICAgKChjb25zdCBjaGFyICopKFB5VW5pY29kZV9BU19VTklDT0RFKG9wKSkpCisKKworLyogLS0tIEZsZXhpYmxlIFN0cmluZyBSZXByZXNlbnRhdGlvbiBIZWxwZXIgTWFjcm9zIChQRVAgMzkzKSAtLS0tLS0tLS0tLS0tLSAqLworCisvKiBWYWx1ZXMgZm9yIFB5QVNDSUlPYmplY3Quc3RhdGU6ICovCisKKy8qIEludGVybmluZyBzdGF0ZS4gKi8KKyNkZWZpbmUgU1NUQVRFX05PVF9JTlRFUk5FRCAwCisjZGVmaW5lIFNTVEFURV9JTlRFUk5FRF9NT1JUQUwgMQorI2RlZmluZSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUwgMgorCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycywgb3IgMCBpZiBub3QuIFRoZQorICAgc3RyaW5nIG1heSBiZSBjb21wYWN0IChQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSkgb3Igbm90LCBidXQgbXVzdCBiZQorICAgcmVhZHkuICovCisjZGVmaW5lIFB5VW5pY29kZV9JU19BU0NJSShvcCkgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksICAgICAgICAgICAgICAgIFwKKyAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShvcCkpLCAgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCopb3ApLT5zdGF0ZS5hc2NpaSkKKworLyogUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBjb21wYWN0IG9yIDAgaWYgbm90LgorICAgTm8gdHlwZSBjaGVja3Mgb3IgUmVhZHkgY2FsbHMgYXJlIHBlcmZvcm1lZC4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX0lTX0NPTVBBQ1Qob3ApIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0Kikob3ApKS0+c3RhdGUuY29tcGFjdCkKKworLyogUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIGNvbXBhY3QgQVNDSUkgc3RyaW5nICh1c2UgUHlBU0NJSU9iamVjdAorICAgc3RydWN0dXJlKSwgb3IgMCBpZiBub3QuICBObyB0eXBlIGNoZWNrcyBvciBSZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLiAqLworI2RlZmluZSBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvcCkgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0KilvcCktPnN0YXRlLmFzY2lpICYmIFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSkKKworZW51bSBQeVVuaWNvZGVfS2luZCB7CisvKiBTdHJpbmcgY29udGFpbnMgb25seSB3c3RyIGJ5dGUgY2hhcmFjdGVycy4gIFRoaXMgaXMgb25seSBwb3NzaWJsZQorICAgd2hlbiB0aGUgc3RyaW5nIHdhcyBjcmVhdGVkIHdpdGggYSBsZWdhY3kgQVBJIGFuZCBfUHlVbmljb2RlX1JlYWR5KCkKKyAgIGhhcyBub3QgYmVlbiBjYWxsZWQgeWV0LiAgKi8KKyAgICBQeVVuaWNvZGVfV0NIQVJfS0lORCA9IDAsCisvKiBSZXR1cm4gdmFsdWVzIG9mIHRoZSBQeVVuaWNvZGVfS0lORCgpIG1hY3JvOiAqLworICAgIFB5VW5pY29kZV8xQllURV9LSU5EID0gMSwKKyAgICBQeVVuaWNvZGVfMkJZVEVfS0lORCA9IDIsCisgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQgPSA0Cit9OworCisvKiBSZXR1cm4gcG9pbnRlcnMgdG8gdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBjYXN0IHRvIHVuc2lnbmVkIGNoYXIsCisgICBQeV9VQ1MyLCBvciBQeV9VQ1M0IGZvciBkaXJlY3QgY2hhcmFjdGVyIGFjY2Vzcy4KKyAgIE5vIGNoZWNrcyBhcmUgcGVyZm9ybWVkLCB1c2UgUHlVbmljb2RlX0tJTkQoKSBiZWZvcmUgdG8gZW5zdXJlCisgICB0aGVzZSB3aWxsIHdvcmsgY29ycmVjdGx5LiAqLworCisjZGVmaW5lIFB5VW5pY29kZV8xQllURV9EQVRBKG9wKSAoKFB5X1VDUzEqKVB5VW5pY29kZV9EQVRBKG9wKSkKKyNkZWZpbmUgUHlVbmljb2RlXzJCWVRFX0RBVEEob3ApICgoUHlfVUNTMiopUHlVbmljb2RlX0RBVEEob3ApKQorI2RlZmluZSBQeVVuaWNvZGVfNEJZVEVfREFUQShvcCkgKChQeV9VQ1M0KilQeVVuaWNvZGVfREFUQShvcCkpCisKKy8qIFJldHVybiBvbmUgb2YgdGhlIFB5VW5pY29kZV8qX0tJTkQgdmFsdWVzIGRlZmluZWQgYWJvdmUuICovCisjZGVmaW5lIFB5VW5pY29kZV9LSU5EKG9wKSBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+c3RhdGUua2luZCkKKworLyogUmV0dXJuIGEgdm9pZCBwb2ludGVyIHRvIHRoZSByYXcgdW5pY29kZSBidWZmZXIuICovCisjZGVmaW5lIF9QeVVuaWNvZGVfQ09NUEFDVF9EQVRBKG9wKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoUHlVbmljb2RlX0lTX0FTQ0lJKG9wKSA/ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKCh2b2lkKikoKFB5QVNDSUlPYmplY3QqKShvcCkgKyAxKSkgOiAgICAgICAgICAgICAgXAorICAgICAoKHZvaWQqKSgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKG9wKSArIDEpKSkKKworI2RlZmluZSBfUHlVbmljb2RlX05PTkNPTVBBQ1RfREFUQShvcCkgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydCgoKFB5VW5pY29kZU9iamVjdCopKG9wKSktPmRhdGEuYW55KSwgICAgICAgIFwKKyAgICAgKCgoKFB5VW5pY29kZU9iamVjdCAqKShvcCkpLT5kYXRhLmFueSkpKQorCisjZGVmaW5lIFB5VW5pY29kZV9EQVRBKG9wKSBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgXAorICAgICBQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgPyBfUHlVbmljb2RlX0NPTVBBQ1RfREFUQShvcCkgOiAgIFwKKyAgICAgX1B5VW5pY29kZV9OT05DT01QQUNUX0RBVEEob3ApKQorCisvKiBJbiB0aGUgYWNjZXNzIG1hY3JvcyBiZWxvdywgImtpbmQiIG1heSBiZSBldmFsdWF0ZWQgbW9yZSB0aGFuIG9uY2UuCisgICBBbGwgb3RoZXIgbWFjcm8gcGFyYW1ldGVycyBhcmUgZXZhbHVhdGVkIGV4YWN0bHkgb25jZSwgc28gaXQgaXMgc2FmZQorICAgdG8gcHV0IHNpZGUgZWZmZWN0cyBpbnRvIHRoZW0gKHN1Y2ggYXMgaW5jcmVhc2luZyB0aGUgaW5kZXgpLiAqLworCisvKiBXcml0ZSBpbnRvIHRoZSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24sIHRoaXMgbWFjcm8gZG9lcyBub3QgZG8gYW55IHNhbml0eQorICAgY2hlY2tzIGFuZCBpcyBpbnRlbmRlZCBmb3IgdXNhZ2UgaW4gbG9vcHMuICBUaGUgY2FsbGVyIHNob3VsZCBjYWNoZSB0aGUKKyAgIGtpbmQgYW5kIGRhdGEgcG9pbnRlcnMgb2J0YWluZWQgZnJvbSBvdGhlciBtYWNybyBjYWxscy4KKyAgIGluZGV4IGlzIHRoZSBpbmRleCBpbiB0aGUgc3RyaW5nIChzdGFydHMgYXQgMCkgYW5kIHZhbHVlIGlzIHRoZSBuZXcKKyAgIGNvZGUgcG9pbnQgdmFsdWUgd2hpY2ggc2hvdWxkIGJlIHdyaXR0ZW4gdG8gdGhhdCBsb2NhdGlvbi4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGluZGV4LCB2YWx1ZSkgXAorICAgIGRvIHsgXAorICAgICAgICBzd2l0Y2ggKChraW5kKSkgeyBcCisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IHsgXAorICAgICAgICAgICAgKChQeV9VQ1MxICopKGRhdGEpKVsoaW5kZXgpXSA9IChQeV9VQ1MxKSh2YWx1ZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIH0gXAorICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiB7IFwKKyAgICAgICAgICAgICgoUHlfVUNTMiAqKShkYXRhKSlbKGluZGV4KV0gPSAoUHlfVUNTMikodmFsdWUpOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICB9IFwKKyAgICAgICAgZGVmYXVsdDogeyBcCisgICAgICAgICAgICBhc3NlcnQoKGtpbmQpID09IFB5VW5pY29kZV80QllURV9LSU5EKTsgXAorICAgICAgICAgICAgKChQeV9VQ1M0ICopKGRhdGEpKVsoaW5kZXgpXSA9IChQeV9VQ1M0KSh2YWx1ZSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisKKy8qIFJlYWQgYSBjb2RlIHBvaW50IGZyb20gdGhlIHN0cmluZydzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbi4gIE5vIGNoZWNrcworICAgb3IgcmVhZHkgY2FsbHMgYXJlIHBlcmZvcm1lZC4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaW5kZXgpIFwKKyAgICAoKFB5X1VDUzQpIFwKKyAgICAoKGtpbmQpID09IFB5VW5pY29kZV8xQllURV9LSU5EID8gXAorICAgICAgICAoKGNvbnN0IFB5X1VDUzEgKikoZGF0YSkpWyhpbmRleCldIDogXAorICAgICAgICAoKGtpbmQpID09IFB5VW5pY29kZV8yQllURV9LSU5EID8gXAorICAgICAgICAgICAgKChjb25zdCBQeV9VQ1MyICopKGRhdGEpKVsoaW5kZXgpXSA6IFwKKyAgICAgICAgICAgICgoY29uc3QgUHlfVUNTNCAqKShkYXRhKSlbKGluZGV4KV0gXAorICAgICAgICApIFwKKyAgICApKQorCisvKiBQeVVuaWNvZGVfUkVBRF9DSEFSKCkgaXMgbGVzcyBlZmZpY2llbnQgdGhhbiBQeVVuaWNvZGVfUkVBRCgpIGJlY2F1c2UgaXQKKyAgIGNhbGxzIFB5VW5pY29kZV9LSU5EKCkgYW5kIG1pZ2h0IGNhbGwgaXQgdHdpY2UuICBGb3Igc2luZ2xlIHJlYWRzLCB1c2UKKyAgIFB5VW5pY29kZV9SRUFEX0NIQVIsIGZvciBtdWx0aXBsZSBjb25zZWN1dGl2ZSByZWFkcyBjYWxsZXJzIHNob3VsZAorICAgY2FjaGUga2luZCBhbmQgdXNlIFB5VW5pY29kZV9SRUFEIGluc3RlYWQuICovCisjZGVmaW5lIFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgaW5kZXgpIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayh1bmljb2RlKSksICAgICAgICAgIFwKKyAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSksICAgICAgIFwKKyAgICAgKFB5X1VDUzQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKFB5VW5pY29kZV9LSU5EKCh1bmljb2RlKSkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQgPyBcCisgICAgICAgICAgICAoKGNvbnN0IFB5X1VDUzEgKikoUHlVbmljb2RlX0RBVEEoKHVuaWNvZGUpKSkpWyhpbmRleCldIDogXAorICAgICAgICAgICAgKFB5VW5pY29kZV9LSU5EKCh1bmljb2RlKSkgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQgPyBcCisgICAgICAgICAgICAgICAgKChjb25zdCBQeV9VQ1MyICopKFB5VW5pY29kZV9EQVRBKCh1bmljb2RlKSkpKVsoaW5kZXgpXSA6IFwKKyAgICAgICAgICAgICAgICAoKGNvbnN0IFB5X1VDUzQgKikoUHlVbmljb2RlX0RBVEEoKHVuaWNvZGUpKSkpWyhpbmRleCldIFwKKyAgICAgICAgICAgICkgXAorICAgICAgICApKQorCisvKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIHVuaWNvZGUgc3RyaW5nLiBUaGUgY2FsbGVyIGhhcyB0byBtYWtlIHN1cmUgdGhhdAorICAgdGhlIHN0cmluZyBoYXMgaXQncyBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gc2V0IGJlZm9yZSBjYWxsaW5nCisgICB0aGlzIG1hY3JvLiAgQ2FsbCBQeVVuaWNvZGVfKEZBU1RfKVJlYWR5IHRvIGVuc3VyZSB0aGF0LiAqLworI2RlZmluZSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvcCkgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+bGVuZ3RoKQorCisKKy8qIEZhc3QgY2hlY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gb2JqZWN0IGlzIHJlYWR5LiBFcXVpdmFsZW50IHRvCisgICBQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgfHwgKChQeVVuaWNvZGVPYmplY3QqKShvcCkpLT5kYXRhLmFueSkgKi8KKworI2RlZmluZSBQeVVuaWNvZGVfSVNfUkVBRFkob3ApICgoKFB5QVNDSUlPYmplY3QqKW9wKS0+c3RhdGUucmVhZHkpCisKKy8qIFB5VW5pY29kZV9SRUFEWSgpIGRvZXMgbGVzcyB3b3JrIHRoYW4gX1B5VW5pY29kZV9SZWFkeSgpIGluIHRoZSBiZXN0CisgICBjYXNlLiAgSWYgdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBpcyBub3QgeWV0IHNldCwgaXQgd2lsbCBzdGlsbCBjYWxsCisgICBfUHlVbmljb2RlX1JlYWR5KCkuCisgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgLTEgb24gZXJyb3JzLiAqLworI2RlZmluZSBQeVVuaWNvZGVfUkVBRFkob3ApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChQeVVuaWNvZGVfSVNfUkVBRFkob3ApID8gICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIDAgOiBfUHlVbmljb2RlX1JlYWR5KChQeU9iamVjdCAqKShvcCkpKSkKKworLyogUmV0dXJuIGEgbWF4aW11bSBjaGFyYWN0ZXIgdmFsdWUgd2hpY2ggaXMgc3VpdGFibGUgZm9yIGNyZWF0aW5nIGFub3RoZXIKKyAgIHN0cmluZyBiYXNlZCBvbiBvcC4gIFRoaXMgaXMgYWx3YXlzIGFuIGFwcHJveGltYXRpb24gYnV0IG1vcmUgZWZmaWNpZW50CisgICB0aGFuIGl0ZXJhdGluZyBvdmVyIHRoZSBzdHJpbmcuICovCisjZGVmaW5lIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShvcCkgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoUHlVbmljb2RlX0lTX0FTQ0lJKG9wKSA/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKDB4N2YpIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKFB5VW5pY29kZV9LSU5EKG9wKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCA/ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICgweGZmVSkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIChQeVVuaWNvZGVfS0lORChvcCkgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQgPyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoMHhmZmZmVSkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoMHgxMGZmZmZVKSkpKSkKKwogI2VuZGlmCiAKIC8qIC0tLSBDb25zdGFudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtNDE4LDEyICs1ODYsMTA3IEBACiAgICBVbmljb2RlIGNoYXJhY3RlciBVK0ZGRkQgaXMgdGhlIG9mZmljaWFsIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiBpbgogICAgVW5pY29kZSAzLjAuICovCiAKLSNkZWZpbmUgUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIgKChQeV9VTklDT0RFKSAweEZGRkQpCisjZGVmaW5lIFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSICgoUHlfVUNTNCkgMHhGRkZEKQogCiAvKiA9PT0gUHVibGljIEFQSSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAogLyogLS0tIFBsYWluIFB5X1VOSUNPREUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKKy8qIFdpdGggUEVQIDM5MywgdGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGFsbG9jYXRlIGEgbmV3IHVuaWNvZGUgb2JqZWN0LgorICAgVGhpcyBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlIHRoZSBvYmplY3QgYW5kIGl0cyBidWZmZXIgaW4gYSBzaW5nbGUgbWVtb3J5CisgICBibG9jay4gIE9iamVjdHMgY3JlYXRlZCB1c2luZyB0aGlzIGZ1bmN0aW9uIGFyZSBub3QgcmVzaXphYmxlLiAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9OZXcoCisgICAgUHlfc3NpemVfdCBzaXplLCAgICAgICAgICAgIC8qIE51bWJlciBvZiBjb2RlIHBvaW50cyBpbiB0aGUgbmV3IHN0cmluZyAqLworICAgIFB5X1VDUzQgbWF4Y2hhciAgICAgICAgICAgICAvKiBtYXhpbXVtIGNvZGUgcG9pbnQgdmFsdWUgaW4gdGhlIHN0cmluZyAqLworICAgICk7CisjZW5kaWYKKworLyogSW5pdGlhbGl6ZXMgdGhlIGNhbm9uaWNhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gZnJvbSBhIHRoZSBkZXByZWNhdGVkCisgICB3c3RyL1B5X1VOSUNPREUgcmVwcmVzZW50YXRpb24uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjb252ZXJ0IFVuaWNvZGUKKyAgIG9iamVjdHMgd2hpY2ggd2VyZSBjcmVhdGVkIHVzaW5nIHRoZSBvbGQgQVBJIHRvIHRoZSBuZXcgZmxleGlibGUgZm9ybWF0CisgICBpbnRyb2R1Y2VkIHdpdGggUEVQIDM5My4KKworICAgRG9uJ3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCB1c2UgdGhlIHB1YmxpYyBQeVVuaWNvZGVfUkVBRFkoKSBtYWNybworICAgaW5zdGVhZC4gKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX1JlYWR5KAorICAgIFB5T2JqZWN0ICp1bmljb2RlICAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgICk7CisjZW5kaWYKKworLyogR2V0IGEgY29weSBvZiBhIFVuaWNvZGUgc3RyaW5nLiAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfQ29weSgKKyAgICBQeU9iamVjdCAqdW5pY29kZQorICAgICk7CisjZW5kaWYKKworLyogQ29weSBjaGFyYWN0ZXIgZnJvbSBvbmUgdW5pY29kZSBvYmplY3QgaW50byBhbm90aGVyLCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zCisgICBjaGFyYWN0ZXIgY29udmVyc2lvbiB3aGVuIG5lY2Vzc2FyeSBhbmQgZmFsbHMgYmFjayB0byBtZW1jcHkoKSBpZiBwb3NzaWJsZS4KKworICAgRmFpbCBpZiB0byBpcyB0b28gc21hbGwgKHNtYWxsZXIgdGhhbiAqaG93X21hbnkqIG9yIHNtYWxsZXIgdGhhbgorICAgbGVuKGZyb20pLWZyb21fc3RhcnQpLCBvciBpZiBraW5kKGZyb21bZnJvbV9zdGFydDpmcm9tX3N0YXJ0K2hvd19tYW55XSkgPgorICAga2luZCh0byksIG9yIGlmICp0byogaGFzIG1vcmUgdGhhbiAxIHJlZmVyZW5jZS4KKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXIsIG9yIHJldHVybiAtMSBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uCisgICBvbiBlcnJvci4KKworICAgUHNldWRvLWNvZGU6CisKKyAgICAgICBob3dfbWFueSA9IG1pbihob3dfbWFueSwgbGVuKGZyb20pIC0gZnJvbV9zdGFydCkKKyAgICAgICB0b1t0b19zdGFydDp0b19zdGFydCtob3dfbWFueV0gPSBmcm9tW2Zyb21fc3RhcnQ6ZnJvbV9zdGFydCtob3dfbWFueV0KKyAgICAgICByZXR1cm4gaG93X21hbnkKKworICAgTm90ZTogVGhlIGZ1bmN0aW9uIGRvZXNuJ3Qgd3JpdGUgYSB0ZXJtaW5hdGluZyBudWxsIGNoYXJhY3Rlci4KKyAgICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycygKKyAgICBQeU9iamVjdCAqdG8sCisgICAgUHlfc3NpemVfdCB0b19zdGFydCwKKyAgICBQeU9iamVjdCAqZnJvbSwKKyAgICBQeV9zc2l6ZV90IGZyb21fc3RhcnQsCisgICAgUHlfc3NpemVfdCBob3dfbWFueQorICAgICk7CisKKy8qIFVuc2FmZSB2ZXJzaW9uIG9mIFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycygpOiBkb24ndCBjaGVjayBhcmd1bWVudHMgYW5kIHNvCisgICBtYXkgY3Jhc2ggaWYgcGFyYW1ldGVycyBhcmUgaW52YWxpZCAoZS5nLiBpZiB0aGUgb3V0cHV0IHN0cmluZworICAgaXMgdG9vIHNob3J0KS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoCisgICAgUHlPYmplY3QgKnRvLAorICAgIFB5X3NzaXplX3QgdG9fc3RhcnQsCisgICAgUHlPYmplY3QgKmZyb20sCisgICAgUHlfc3NpemVfdCBmcm9tX3N0YXJ0LAorICAgIFB5X3NzaXplX3QgaG93X21hbnkKKyAgICApOworI2VuZGlmCisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIEZpbGwgYSBzdHJpbmcgd2l0aCBhIGNoYXJhY3Rlcjogd3JpdGUgZmlsbF9jaGFyIGludG8KKyAgIHVuaWNvZGVbc3RhcnQ6c3RhcnQrbGVuZ3RoXS4KKworICAgRmFpbCBpZiBmaWxsX2NoYXIgaXMgYmlnZ2VyIHRoYW4gdGhlIHN0cmluZyBtYXhpbXVtIGNoYXJhY3Rlciwgb3IgaWYgdGhlCisgICBzdHJpbmcgaGFzIG1vcmUgdGhhbiAxIHJlZmVyZW5jZS4KKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXIsIG9yIHJldHVybiAtMSBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uCisgICBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0ZpbGwoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICBQeV9VQ1M0IGZpbGxfY2hhcgorICAgICk7CisKKy8qIFVuc2FmZSB2ZXJzaW9uIG9mIFB5VW5pY29kZV9GaWxsKCk6IGRvbid0IGNoZWNrIGFyZ3VtZW50cyBhbmQgc28gbWF5IGNyYXNoCisgICBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkIChlLmcuIGlmIGxlbmd0aCBpcyBsb25nZXIgdGhhbiB0aGUgc3RyaW5nKS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5VW5pY29kZV9GYXN0RmlsbCgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgIFB5X1VDUzQgZmlsbF9jaGFyCisgICAgKTsKKyNlbmRpZgorCiAvKiBDcmVhdGUgYSBVbmljb2RlIE9iamVjdCBmcm9tIHRoZSBQeV9VTklDT0RFIGJ1ZmZlciB1IG9mIHRoZSBnaXZlbgogICAgc2l6ZS4KIApAQCAtNDQ4LDEzICs3MTEsNjAgQEAKICAgICApOwogCiAvKiBTaW1pbGFyIHRvIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgpLCBidXQgdSBwb2ludHMgdG8gbnVsbC10ZXJtaW5hdGVkCi0gICBVVEYtOCBlbmNvZGVkIGJ5dGVzICovCisgICBVVEYtOCBlbmNvZGVkIGJ5dGVzLiAgVGhlIHNpemUgaXMgZGV0ZXJtaW5lZCB3aXRoIHN0cmxlbigpLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Gcm9tU3RyaW5nKAogICAgIGNvbnN0IGNoYXIgKnUgICAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogQ3JlYXRlIGEgbmV3IHN0cmluZyBmcm9tIGEgYnVmZmVyIG9mIFB5X1VDUzEsIFB5X1VDUzIgb3IgUHlfVUNTNCBjaGFyYWN0ZXJzLgorICAgU2NhbiB0aGUgc3RyaW5nIHRvIGZpbmQgdGhlIG1heGltdW0gY2hhcmFjdGVyLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoCisgICAgaW50IGtpbmQsCisgICAgY29uc3Qgdm9pZCAqYnVmZmVyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgZnJvbSBhIGJ1ZmZlciBvZiBBU0NJSSBjaGFyYWN0ZXJzLgorICAgV0FSTklORzogRG9uJ3QgY2hlY2sgaWYgdGhlIHN0cmluZyBjb250YWlucyBhbnkgbm9uLUFTQ0lJIGNoYXJhY3Rlci4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0Zyb21BU0NJSSgKKyAgICBjb25zdCBjaGFyICpidWZmZXIsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKyNlbmRpZgorCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX1N1YnN0cmluZygKKyAgICBQeU9iamVjdCAqc3RyLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQpOworCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBDb21wdXRlIHRoZSBtYXhpbXVtIGNoYXJhY3RlciBvZiB0aGUgc3Vic3RyaW5nIHVuaWNvZGVbc3RhcnQ6ZW5kXS4KKyAgIFJldHVybiAxMjcgZm9yIGFuIGVtcHR5IHN0cmluZy4gKi8KK1B5QVBJX0ZVTkMoUHlfVUNTNCkgX1B5VW5pY29kZV9GaW5kTWF4Q2hhciAoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CisjZW5kaWYKKworLyogQ29weSB0aGUgc3RyaW5nIGludG8gYSBVQ1M0IGJ1ZmZlciBpbmNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyIGlmIGNvcHlfbnVsbAorICAgaXMgc2V0LiBSZXR1cm4gTlVMTCBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLiBSYWlzZSBhIFZhbHVlRXJyb3IgaWYKKyAgIHRoZSBidWZmZXIgaXMgc21hbGxlciB0aGFuIHRoZSBzdHJpbmcuIFJldHVybiBidWZmZXIgb24gc3VjY2Vzcy4KKworICAgYnVmbGVuIGlzIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiAoUHlfVUNTNCkgY2hhcmFjdGVycy4gKi8KK1B5QVBJX0ZVTkMoUHlfVUNTNCopIFB5VW5pY29kZV9Bc1VDUzQoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfVUNTNCogYnVmZmVyLAorICAgIFB5X3NzaXplX3QgYnVmbGVuLAorICAgIGludCBjb3B5X251bGwpOworCisvKiBDb3B5IHRoZSBzdHJpbmcgaW50byBhIFVDUzQgYnVmZmVyLiBBIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nCisgKiBQeU1lbV9NYWxsb2M7IGlmIHRoaXMgZmFpbHMsIE5VTEwgaXMgcmV0dXJuZWQgd2l0aCBhIG1lbW9yeSBlcnJvcgorICAgZXhjZXB0aW9uIHNldC4gKi8KK1B5QVBJX0ZVTkMoUHlfVUNTNCopIFB5VW5pY29kZV9Bc1VDUzRDb3B5KFB5T2JqZWN0ICp1bmljb2RlKTsKKwogLyogUmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0J3MgaW50ZXJuYWwKLSAgIFB5X1VOSUNPREUgYnVmZmVyLiAqLworICAgUHlfVU5JQ09ERSBidWZmZXIuCisgICBJZiB0aGUgd2NoYXJfdC9QeV9VTklDT0RFIHJlcHJlc2VudGF0aW9uIGlzIG5vdCB5ZXQgYXZhaWxhYmxlLCB0aGlzCisgICBmdW5jdGlvbiB3aWxsIGNhbGN1bGF0ZSBpdC4gKi8KIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeV9VTklDT0RFICopIFB5VW5pY29kZV9Bc1VuaWNvZGUoCkBAIC00NjIsMzAgKzc3Miw2OSBAQAogICAgICk7CiAjZW5kaWYKIAorLyogUmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0J3MgaW50ZXJuYWwKKyAgIFB5X1VOSUNPREUgYnVmZmVyIGFuZCBzYXZlIHRoZSBsZW5ndGggYXQgc2l6ZS4KKyAgIElmIHRoZSB3Y2hhcl90L1B5X1VOSUNPREUgcmVwcmVzZW50YXRpb24gaXMgbm90IHlldCBhdmFpbGFibGUsIHRoaXMKKyAgIGZ1bmN0aW9uIHdpbGwgY2FsY3VsYXRlIGl0LiAqLworCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5X1VOSUNPREUgKikgUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgUHlfc3NpemVfdCAqc2l6ZSAgICAgICAgICAgIC8qIGxvY2F0aW9uIHdoZXJlIHRvIHNhdmUgdGhlIGxlbmd0aCAqLworICAgICk7CisjZW5kaWYKKwogLyogR2V0IHRoZSBsZW5ndGggb2YgdGhlIFVuaWNvZGUgb2JqZWN0LiAqLwogCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5VW5pY29kZV9HZXRMZW5ndGgoCisgICAgUHlPYmplY3QgKnVuaWNvZGUKKyk7CisKKy8qIEdldCB0aGUgbnVtYmVyIG9mIFB5X1VOSUNPREUgdW5pdHMgaW4gdGhlCisgICBzdHJpbmcgcmVwcmVzZW50YXRpb24uICovCisKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0dldFNpemUoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgKTsKIAorLyogUmVhZCBhIGNoYXJhY3RlciBmcm9tIHRoZSBzdHJpbmcuICovCisKK1B5QVBJX0ZVTkMoUHlfVUNTNCkgUHlVbmljb2RlX1JlYWRDaGFyKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3QgaW5kZXgKKyAgICApOworCisvKiBXcml0ZSBhIGNoYXJhY3RlciB0byB0aGUgc3RyaW5nLiBUaGUgc3RyaW5nIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgdGhyb3VnaAorICAgUHlVbmljb2RlX05ldywgbXVzdCBub3QgYmUgc2hhcmVkLCBhbmQgbXVzdCBub3QgaGF2ZSBiZWVuIGhhc2hlZCB5ZXQuCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yLiAqLworCitQeUFQSV9GVU5DKGludCkgUHlVbmljb2RlX1dyaXRlQ2hhcigKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IGluZGV4LAorICAgIFB5X1VDUzQgY2hhcmFjdGVyCisgICAgKTsKKwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogR2V0IHRoZSBtYXhpbXVtIG9yZGluYWwgZm9yIGEgVW5pY29kZSBjaGFyYWN0ZXIuICovCiBQeUFQSV9GVU5DKFB5X1VOSUNPREUpIFB5VW5pY29kZV9HZXRNYXgodm9pZCk7CiAjZW5kaWYKIAotLyogUmVzaXplIGFuIGFscmVhZHkgYWxsb2NhdGVkIFVuaWNvZGUgb2JqZWN0IHRvIHRoZSBuZXcgc2l6ZSBsZW5ndGguCisvKiBSZXNpemUgYW4gVW5pY29kZSBvYmplY3QuIFRoZSBsZW5ndGggaXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzLCBleGNlcHQKKyAgIGlmIHRoZSBraW5kIG9mIHRoZSBzdHJpbmcgaXMgUHlVbmljb2RlX1dDSEFSX0tJTkQ6IGluIHRoaXMgY2FzZSwgdGhlIGxlbmd0aAorICAgaXMgdGhlIG51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJhY3RlcnMuCiAKICAgICp1bmljb2RlIGlzIG1vZGlmaWVkIHRvIHBvaW50IHRvIHRoZSBuZXcgKHJlc2l6ZWQpIG9iamVjdCBhbmQgMAogICAgcmV0dXJuZWQgb24gc3VjY2Vzcy4KIAotICAgVGhpcyBBUEkgbWF5IG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBmdW5jdGlvbiB3aGljaCBhbHNvIGNhbGxlZCB0aGUKLSAgIFVuaWNvZGUgY29uc3RydWN0b3IuIFRoZSByZWZjb3VudCBvbiB0aGUgb2JqZWN0IG11c3QgYmUgMS4gT3RoZXJ3aXNlLAotICAgYW4gZXJyb3IgaXMgcmV0dXJuZWQuCisgICBUcnkgdG8gcmVzaXplIHRoZSBzdHJpbmcgaW4gcGxhY2UgKHdoaWNoIGlzIHVzdWFsbHkgZmFzdGVyIHRoYW4gYWxsb2NhdGluZworICAgYSBuZXcgc3RyaW5nIGFuZCBjb3B5IGNoYXJhY3RlcnMpLCBvciBjcmVhdGUgYSBuZXcgc3RyaW5nLgogCiAgICBFcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZCBhcyBmb2xsb3dzOiBhbiBleGNlcHRpb24gaXMgc2V0LCAtMQogICAgaXMgcmV0dXJuZWQgYW5kICp1bmljb2RlIGxlZnQgdW50b3VjaGVkLgogCi0qLworICAgV0FSTklORzogVGhlIGZ1bmN0aW9uIGRvZXNuJ3QgY2hlY2sgc3RyaW5nIGNvbnRlbnQsIHRoZSByZXN1bHQgbWF5IG5vdCBiZSBhCisgICAgICAgICAgICBzdHJpbmcgaW4gY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uLiAqLwogCiBQeUFQSV9GVU5DKGludCkgUHlVbmljb2RlX1Jlc2l6ZSgKICAgICBQeU9iamVjdCAqKnVuaWNvZGUsICAgICAgICAgLyogUG9pbnRlciB0byB0aGUgVW5pY29kZSBvYmplY3QgKi8KQEAgLTU0MiwxMSArODkxLDY3IEBACiAgICAgKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpidWZmZXI7CisgICAgdm9pZCAqZGF0YTsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHBvczsKKyAgICAvKiBtaW5pbXVtIGxlbmd0aCBvZiB0aGUgYnVmZmVyIHdoZW4gb3ZlcmFsbG9jYXRpb24gaXMgZW5hYmxlZCwKKyAgICAgICBzZWUgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCkgKi8KKyAgICBQeV9zc2l6ZV90IG1pbl9sZW5ndGg7CisgICAgdW5zaWduZWQgY2hhciBvdmVyYWxsb2NhdGU7CisgICAgLyogSWYgcmVhZG9ubHkgaXMgMSwgYnVmZmVyIGlzIGEgc2hhcmVkIHN0cmluZyAoY2Fubm90IGJlIG1vZGlmaWVkKQorICAgICAgIGFuZCBzaXplIGlzIHNldCB0byAwLiAqLworICAgIHVuc2lnbmVkIGNoYXIgcmVhZG9ubHk7Cit9IF9QeVVuaWNvZGVXcml0ZXIgOworCisvKiBJbml0aWFsaXplIGEgVW5pY29kZSB3cml0ZXIuCisKKyAgIElmIG1pbl9sZW5ndGggaXMgZ3JlYXRlciB0aGFuIHplcm8sIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgpCisgICBvdmVyYWxsb2NhdGVzIHRoZSBidWZmZXIgYW5kIG1pbl9sZW5ndGggaXMgdGhlIG1pbmltdW0gbGVuZ3RoIGluIGNoYXJhY3RlcnMKKyAgIG9mIHRoZSBidWZmZXIuICovCitQeUFQSV9GVU5DKHZvaWQpCitfUHlVbmljb2RlV3JpdGVyX0luaXQoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeV9zc2l6ZV90IG1pbl9sZW5ndGgpOworCisvKiBQcmVwYXJlIHRoZSBidWZmZXIgdG8gd3JpdGUgJ2xlbmd0aCcgY2hhcmFjdGVycworICAgd2l0aCB0aGUgc3BlY2lmaWVkIG1heGltdW0gY2hhcmFjdGVyLgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKyNkZWZpbmUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKFdSSVRFUiwgTEVOR1RILCBNQVhDSEFSKSAgICAgICAgICAgICBcCisgICAgKCgoTUFYQ0hBUikgPD0gKFdSSVRFUiktPm1heGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgJiYgKExFTkdUSCkgPD0gKFdSSVRFUiktPnNpemUgLSAoV1JJVEVSKS0+cG9zKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgPyAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIDogKCgoTEVOR1RIKSA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICA/IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgOiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbCgoV1JJVEVSKSwgKExFTkdUSCksIChNQVhDSEFSKSkpKQorCisvKiBEb24ndCBjYWxsIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIHVzZSB0aGUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCkgbWFjcm8KKyAgIGluc3RlYWQuICovCitQeUFQSV9GVU5DKGludCkKK19QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0IG1heGNoYXIpOworCitQeUFQSV9GVU5DKGludCkKK19QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeU9iamVjdCAqc3RyKTsKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKQorX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKTsKKworUHlBUElfRlVOQyh2b2lkKQorX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcik7CisjZW5kaWYKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogRm9ybWF0IHRoZSBvYmplY3QgYmFzZWQgb24gdGhlIGZvcm1hdF9zcGVjLCBhcyBkZWZpbmVkIGluIFBFUCAzMTAxCiAgICAoQWR2YW5jZWQgU3RyaW5nIEZvcm1hdHRpbmcpLiAqLwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlVbmljb2RlX0Zvcm1hdEFkdmFuY2VkKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pOworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCisgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQpOwogI2VuZGlmCiAKIFB5QVBJX0ZVTkModm9pZCkgUHlVbmljb2RlX0ludGVybkluUGxhY2UoUHlPYmplY3QgKiopOwpAQCAtNTU5LDcgKzk2NCw4IEBACiAjZW5kaWYKIAogLyogVXNlIG9ubHkgaWYgeW91IGtub3cgaXQncyBhIHN0cmluZyAqLwotI2RlZmluZSBQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQob3ApICgoKFB5VW5pY29kZU9iamVjdCAqKShvcCkpLT5zdGF0ZSkKKyNkZWZpbmUgUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKG9wKSBcCisgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5zdGF0ZS5pbnRlcm5lZCkKIAogLyogLS0tIHdjaGFyX3Qgc3VwcG9ydCBmb3IgcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgaXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTYwNiw2ICsxMDEyLDEwIEBACiAgICAgUHlfc3NpemVfdCAqc2l6ZSAgICAgICAgICAgIC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzIG9mIHRoZSByZXN1bHQgKi8KICAgICApOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlVbmljb2RlX0FzS2luZChQeU9iamVjdCAqcywgdW5zaWduZWQgaW50IGtpbmQpOworI2VuZGlmCisKICNlbmRpZgogCiAvKiAtLS0gVW5pY29kZSBvcmRpbmFscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTY1MSw1MCArMTA2MSw0MiBAQAogCiAvKiAtLS0gTWFuYWdlIHRoZSBkZWZhdWx0IGVuY29kaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotLyogUmV0dXJuIGEgUHl0aG9uIHN0cmluZyBob2xkaW5nIHRoZSBkZWZhdWx0IGVuY29kZWQgdmFsdWUgb2YgdGhlCi0gICBVbmljb2RlIG9iamVjdC4KLQotICAgU2FtZSBhcyBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKCkgZXhjZXB0Ci0gICB0aGUgcmVzdWx0aW5nIHN0cmluZyBpcyBjYWNoZWQgaW4gdGhlIFVuaWNvZGUgb2JqZWN0IGZvciBzdWJzZXF1ZW50Ci0gICB1c2FnZSBieSB0aGlzIGZ1bmN0aW9uLiBUaGUgY2FjaGVkIHZlcnNpb24gaXMgbmVlZGVkIHRvIGltcGxlbWVudAotICAgdGhlIGNoYXJhY3RlciBidWZmZXIgaW50ZXJmYWNlIGFuZCB3aWxsIGxpdmUgKGF0IGxlYXN0KSBhcyBsb25nIGFzCi0gICB0aGUgVW5pY29kZSBvYmplY3QgaXRzZWxmLgotCi0gICBUaGUgcmVmY291bnQgb2YgdGhlIHN0cmluZyBpcyAqbm90KiBpbmNyZW1lbnRlZC4KLQotICAgKioqIEV4cG9ydGVkIGZvciBpbnRlcm5hbCB1c2UgYnkgdGhlIGludGVycHJldGVyIG9ubHkgISEhICoqKgotCi0qLwotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZygKLSAgICBQeU9iamVjdCAqdW5pY29kZSwKLSAgICBjb25zdCBjaGFyICplcnJvcnMpOwotI2VuZGlmCi0KIC8qIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGVuY29kaW5nIChVVEYtOCkgb2YgdGhlCiAgICBVbmljb2RlIG9iamVjdCB1bmljb2RlIGFuZCB0aGUgc2l6ZSBvZiB0aGUgZW5jb2RlZCByZXByZXNlbnRhdGlvbgogICAgaW4gYnl0ZXMgc3RvcmVkIGluICpzaXplLgogCiAgICBJbiBjYXNlIG9mIGFuIGVycm9yLCBubyAqc2l6ZSBpcyBzZXQuCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FjaGVzIHRoZSBVVEYtOCBlbmNvZGVkIHN0cmluZyBpbiB0aGUgdW5pY29kZW9iamVjdAorICAgYW5kIHN1YnNlcXVlbnQgY2FsbHMgd2lsbCByZXR1cm4gdGhlIHNhbWUgc3RyaW5nLiAgVGhlIG1lbW9yeSBpcyByZWxlYXNlZAorICAgd2hlbiB0aGUgdW5pY29kZW9iamVjdCBpcyBkZWFsbG9jYXRlZC4KKworICAgX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUgaXMgYSAjZGVmaW5lIGZvciBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSB0bworICAgc3VwcG9ydCB0aGUgcHJldmlvdXMgaW50ZXJuYWwgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBiZWhhdmlvdXIuCisKICAgICoqKiBUaGlzIEFQSSBpcyBmb3IgaW50ZXJwcmV0ZXIgSU5URVJOQUwgVVNFIE9OTFkgYW5kIHdpbGwgbGlrZWx5CiAgICAqKiogYmUgcmVtb3ZlZCBvciBjaGFuZ2VkIGluIHRoZSBmdXR1cmUuCiAKICAgICoqKiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIFVuaWNvZGUgb2JqZWN0IGFzIFVURi04IGJ5dGVzIHN0cmluZywKICAgICoqKiBwbGVhc2UgdXNlIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBpbnN0ZWFkLgotCiAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKGNoYXIgKikgX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoCitQeUFQSV9GVU5DKGNoYXIgKikgUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUsCiAgICAgUHlfc3NpemVfdCAqc2l6ZSk7CisjZGVmaW5lIF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplCiAjZW5kaWYKIAogLyogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgZW5jb2RpbmcgKFVURi04KSBvZiB0aGUKICAgIFVuaWNvZGUgb2JqZWN0IHVuaWNvZGUuCiAKKyAgIExpa2UgUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoKSwgdGhpcyBhbHNvIGNhY2hlcyB0aGUgVVRGLTggcmVwcmVzZW50YXRpb24KKyAgIGluIHRoZSB1bmljb2Rlb2JqZWN0LgorCisgICBfUHlVbmljb2RlX0FzU3RyaW5nIGlzIGEgI2RlZmluZSBmb3IgUHlVbmljb2RlX0FzVVRGOCB0bworICAgc3VwcG9ydCB0aGUgcHJldmlvdXMgaW50ZXJuYWwgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBiZWhhdmlvdXIuCisKICAgIFVzZSBvZiB0aGlzIEFQSSBpcyBERVBSRUNBVEVEIHNpbmNlIG5vIHNpemUgaW5mb3JtYXRpb24gY2FuIGJlCiAgICBleHRyYWN0ZWQgZnJvbSB0aGUgcmV0dXJuZWQgZGF0YS4KIApAQCAtNzA3LDcgKzExMDksOCBAQAogKi8KIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhjaGFyICopIF9QeVVuaWNvZGVfQXNTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpOworUHlBUElfRlVOQyhjaGFyICopIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3QgKnVuaWNvZGUpOworI2RlZmluZSBfUHlVbmljb2RlX0FzU3RyaW5nIFB5VW5pY29kZV9Bc1VURjgKICNlbmRpZgogCiAvKiBSZXR1cm5zICJ1dGYtOCIuICAqLwpAQCAtODEyLDYgKzEyMTUsMTIgQEAKICAgICBpbnQgYmFzZTY0V2hpdGVTcGFjZSwgICAgICAgLyogRW5jb2RlIHdoaXRlc3BhY2UgKHNwLCBodCwgbmwsIGNyKSBpbiBiYXNlNjQgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRW5jb2RlVVRGNygKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICBpbnQgYmFzZTY0U2V0TywgICAgICAgICAgICAgLyogRW5jb2RlIFJGQzIxNTIgU2V0IE8gY2hhcmFjdGVycyBpbiBiYXNlNjQgKi8KKyAgICBpbnQgYmFzZTY0V2hpdGVTcGFjZSwgICAgICAgLyogRW5jb2RlIHdoaXRlc3BhY2UgKHNwLCBodCwgbmwsIGNyKSBpbiBiYXNlNjQgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICApOwogI2VuZGlmCiAKIC8qIC0tLSBVVEYtOCBDb2RlY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtODM0LDYgKzEyNDMsMTAgQEAKICAgICApOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKwogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVVVEY4KAogICAgIGNvbnN0IFB5X1VOSUNPREUgKmRhdGEsICAgICAvKiBVbmljb2RlIGNoYXIgYnVmZmVyICovCiAgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIG51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJzIHRvIGVuY29kZSAqLwpAQCAtOTE1LDYgKzEzMjgsMTEgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMsICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICBpbnQgYnl0ZW9yZGVyICAgICAgICAgICAgICAgLyogYnl0ZW9yZGVyIHRvIHVzZSAwPUJPTStuYXRpdmU7LTE9TEUsMT1CRSAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9FbmNvZGVVVEYzMigKKyAgICBQeU9iamVjdCAqb2JqZWN0LCAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMsICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICBpbnQgYnl0ZW9yZGVyICAgICAgICAgICAgICAgLyogYnl0ZW9yZGVyIHRvIHVzZSAwPUJPTStuYXRpdmU7LTE9TEUsMT1CRSAqLworICAgICk7CiAjZW5kaWYKIAogLyogLS0tIFVURi0xNiBDb2RlY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC05OTUsNiArMTQxMywxMSBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgIGludCBieXRlb3JkZXIgICAgICAgICAgICAgICAvKiBieXRlb3JkZXIgdG8gdXNlIDA9Qk9NK25hdGl2ZTstMT1MRSwxPUJFICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0VuY29kZVVURjE2KAorICAgIFB5T2JqZWN0KiB1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgIGludCBieXRlb3JkZXIgICAgICAgICAgICAgICAvKiBieXRlb3JkZXIgdG8gdXNlIDA9Qk9NK25hdGl2ZTstMT1MRSwxPUJFICovCisgICAgKTsKICNlbmRpZgogCiAvKiAtLS0gVW5pY29kZS1Fc2NhcGUgQ29kZWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTEwNjQsNiArMTQ4NywxMCBAQAogICAgICk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKAorICAgIFB5T2JqZWN0KiB1bmljb2RlLAorICAgIGNvbnN0IGNoYXIqIGVycm9ycyk7CisKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKAogICAgIGNvbnN0IFB5X1VOSUNPREUgKmRhdGEsICAgICAvKiBVbmljb2RlIGNoYXIgYnVmZmVyICovCiAgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIE51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJzIHRvIGVuY29kZSAqLwpAQCAtMTA4OCw2ICsxNTE1LDEwIEBACiAgICAgKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZygKKyAgICBQeU9iamVjdCogdW5pY29kZSwKKyAgICBjb25zdCBjaGFyKiBlcnJvcnMpOworCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0VuY29kZUFTQ0lJKAogICAgIGNvbnN0IFB5X1VOSUNPREUgKmRhdGEsICAgICAvKiBVbmljb2RlIGNoYXIgYnVmZmVyICovCiAgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIE51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJzIHRvIGVuY29kZSAqLwpAQCAtMTEzOSw2ICsxNTcwLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmljb2RlIG9yZGluYWwgLT4gY2hhciBvcmRpbmFsKSAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIFB5T2JqZWN0ICptYXBwaW5nLCAgICAgICAgICAvKiBjaGFyYWN0ZXIgbWFwcGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5pY29kZSBvcmRpbmFsIC0+IGNoYXIgb3JkaW5hbCkgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICApOwogI2VuZGlmCiAKIC8qIFRyYW5zbGF0ZSBhIFB5X1VOSUNPREUgYnVmZmVyIG9mIHRoZSBnaXZlbiBsZW5ndGggYnkgYXBwbHlpbmcgYQpAQCAtMTE2Myw3ICsxNjAwLDcgQEAKICAgICApOwogI2VuZGlmCiAKLSNpZmRlZiBNU19XSU4zMgorI2lmZGVmIEhBVkVfTUJDUwogCiAvKiAtLS0gTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTE4MCw2ICsxNjE3LDE0IEBACiAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQgICAgICAgIC8qIGJ5dGVzIGNvbnN1bWVkICovCiAgICAgKTsKIAorUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9EZWNvZGVDb2RlUGFnZVN0YXRlZnVsKAorICAgIGludCBjb2RlX3BhZ2UsICAgICAgICAgICAgICAvKiBjb2RlIHBhZ2UgbnVtYmVyICovCisgICAgY29uc3QgY2hhciAqc3RyaW5nLCAgICAgICAgIC8qIGVuY29kZWQgc3RyaW5nICovCisgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIHNpemUgb2Ygc3RyaW5nICovCisgICAgY29uc3QgY2hhciAqZXJyb3JzLCAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCisgICAgUHlfc3NpemVfdCAqY29uc3VtZWQgICAgICAgIC8qIGJ5dGVzIGNvbnN1bWVkICovCisgICAgKTsKKwogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgKTsKQEAgLTExODcsMTIgKzE2MzIsMTggQEAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlTUJDUygKICAgICBjb25zdCBQeV9VTklDT0RFICpkYXRhLCAgICAgLyogVW5pY29kZSBjaGFyIGJ1ZmZlciAqLwotICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBOdW1iZXIgb2YgUHlfVU5JQ09ERSBjaGFycyB0byBlbmNvZGUgKi8KKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogbnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKICNlbmRpZgogCi0jZW5kaWYgLyogTVNfV0lOMzIgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoCisgICAgaW50IGNvZGVfcGFnZSwgICAgICAgICAgICAgIC8qIGNvZGUgcGFnZSBudW1iZXIgKi8KKyAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICApOworCisjZW5kaWYgLyogSEFWRV9NQkNTICovCiAKIC8qIC0tLSBEZWNpbWFsIEVuY29kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xMjQwLDYgKzE2OTEsNDkgQEAKICAgICApOwogI2VuZGlmCiAKKy8qIFNpbWlsYXIgdG8gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKCksIGJ1dCB0YWtlcyBhIFB5T2JqZWN0CisgICBhcyBhcmd1bWVudCBpbnN0ZWFkIG9mIGEgcmF3IGJ1ZmZlciBhbmQgbGVuZ3RoLiAgVGhpcyBmdW5jdGlvbiBhZGRpdGlvbmFsbHkKKyAgIHRyYW5zZm9ybXMgc3BhY2VzIHRvIEFTQ0lJIGJlY2F1c2UgdGhpcyBpcyB3aGF0IHRoZSBjYWxsZXJzIGluIGxvbmdvYmplY3QsCisgICBmbG9hdG9iamVjdCwgYW5kIGNvbXBsZXhvYmplY3QgZGlkIGFueXdheXMuICovCisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkoCisgICAgUHlPYmplY3QgKnVuaWNvZGUgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgKTsKKyNlbmRpZgorCisvKiAtLS0gTG9jYWxlIGVuY29kaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiBEZWNvZGUgYSBzdHJpbmcgZnJvbSB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBkZWNvZGVyIGlzIHN0cmljdCBpZgorICAgKnN1cnJvZ2F0ZWVzY2FwZSogaXMgZXF1YWwgdG8gemVybywgb3RoZXJ3aXNlIGl0IHVzZXMgdGhlICdzdXJyb2dhdGVlc2NhcGUnCisgICBlcnJvciBoYW5kbGVyIChQRVAgMzgzKSB0byBlc2NhcGUgdW5kZWNvZGFibGUgYnl0ZXMuIElmIGEgYnl0ZSBzZXF1ZW5jZSBjYW4KKyAgIGJlIGRlY29kZWQgYXMgYSBzdXJyb2dhdGUgY2hhcmFjdGVyIGFuZCAqc3Vycm9nYXRlZXNjYXBlKiBpcyBub3QgZXF1YWwgdG8KKyAgIHplcm8sIHRoZSBieXRlIHNlcXVlbmNlIGlzIGVzY2FwZWQgdXNpbmcgdGhlICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIKKyAgIGluc3RlYWQgb2YgYmVpbmcgZGVjb2RlZC4gKnN0ciogbXVzdCBlbmQgd2l0aCBhIG51bGwgY2hhcmFjdGVyIGJ1dCBjYW5ub3QKKyAgIGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLiAqLworCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoCisgICAgY29uc3QgY2hhciAqc3RyLAorICAgIFB5X3NzaXplX3QgbGVuLAorICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKKy8qIFNpbWlsYXIgdG8gUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoKSwgYnV0IGNvbXB1dGUgdGhlIHN0cmluZworICAgbGVuZ3RoIHVzaW5nIHN0cmxlbigpLiAqLworCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0RlY29kZUxvY2FsZSgKKyAgICBjb25zdCBjaGFyICpzdHIsCisgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworLyogRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiBUaGUgZW5jb2RlciBpcworICAgc3RyaWN0IGlzICpzdXJyb2dhdGVlc2NhcGUqIGlzIGVxdWFsIHRvIHplcm8sIG90aGVyd2lzZSB0aGUKKyAgICJzdXJyb2dhdGVlc2NhcGUiIGVycm9yIGhhbmRsZXIgaXMgdXNlZC4gUmV0dXJuIGEgYnl0ZXMgb2JqZWN0LiBUaGUgc3RyaW5nCisgICBjYW5ub3QgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMuLiAqLworCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0VuY29kZUxvY2FsZSgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBjb25zdCBjaGFyICplcnJvcnMKKyAgICApOworCiAvKiAtLS0gRmlsZSBzeXN0ZW0gZW5jb2RpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBQYXJzZVR1cGxlIGNvbnZlcnRlcjogZW5jb2RlIHN0ciBvYmplY3RzIHRvIGJ5dGVzIHVzaW5nCkBAIC0xMjkyLDcgKzE3ODYsNyBAQAogCiAgICBUaGVzZSBhcmUgY2FwYWJsZSBvZiBoYW5kbGluZyBVbmljb2RlIG9iamVjdHMgYW5kIHN0cmluZ3Mgb24gaW5wdXQKICAgICh3ZSByZWZlciB0byB0aGVtIGFzIHN0cmluZ3MgaW4gdGhlIGRlc2NyaXB0aW9ucykgYW5kIHJldHVybgotICAgVW5pY29kZSBvYmplY3RzIG9yIGludGVnZXJzIGFzIGFwcG9ycHJpYXRlLiAqLworICAgVW5pY29kZSBvYmplY3RzIG9yIGludGVnZXJzIGFzIGFwcHJvcHJpYXRlLiAqLwogCiAvKiBDb25jYXQgdHdvIHN0cmluZ3MgZ2l2aW5nIGEgbmV3IFVuaWNvZGUgc3RyaW5nLiAqLwogCkBAIC0xNDI3LDYgKzE5MjEsMTUgQEAKICAgICBpbnQgZGlyZWN0aW9uICAgICAgICAgICAgICAgLyogRmluZCBkaXJlY3Rpb246ICsxIGZvcndhcmQsIC0xIGJhY2t3YXJkICovCiAgICAgKTsKIAorLyogTGlrZSBQeVVuaWNvZGVfRmluZCwgYnV0IHNlYXJjaCBmb3Igc2luZ2xlIGNoYXJhY3RlciBvbmx5LiAqLworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVVuaWNvZGVfRmluZENoYXIoCisgICAgUHlPYmplY3QgKnN0ciwKKyAgICBQeV9VQ1M0IGNoLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQsCisgICAgaW50IGRpcmVjdGlvbgorICAgICk7CisKIC8qIENvdW50IHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2Ygc3Vic3RyIGluIHN0cltzdGFydDplbmRdLiAqLwogCiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5VW5pY29kZV9Db3VudCgKQEAgLTE0NjMsNyArMTk2Niw3IEBACiAvKiBSaWNoIGNvbXBhcmUgdHdvIHN0cmluZ3MgYW5kIHJldHVybiBvbmUgb2YgdGhlIGZvbGxvd2luZzoKIAogICAgLSBOVUxMIGluIGNhc2UgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQKLSAgIC0gUHlfVHJ1ZSBvciBQeV9GYWxzZSBmb3Igc3VjY2Vzc2Z1bHkgY29tcGFyaXNvbnMKKyAgIC0gUHlfVHJ1ZSBvciBQeV9GYWxzZSBmb3Igc3VjY2Vzc2Z1bGx5IGNvbXBhcmlzb25zCiAgICAtIFB5X05vdEltcGxlbWVudGVkIGluIGNhc2UgdGhlIHR5cGUgY29tYmluYXRpb24gaXMgdW5rbm93bgogCiAgICBOb3RlIHRoYXQgUHlfRVEgYW5kIFB5X05FIGNvbXBhcmlzb25zIGNhbiBjYXVzZSBhIFVuaWNvZGVXYXJuaW5nIGluCkBAIC0xNTE0LDM1ICsyMDE3LDI2IEBACiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBFeHRlcm5hbGx5IHZpc2libGUgZm9yIHN0ci5zdHJpcCh1bmljb2RlKSAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlVbmljb2RlX1hTdHJpcCgKLSAgICBQeVVuaWNvZGVPYmplY3QgKnNlbGYsCisgICAgUHlPYmplY3QgKnNlbGYsCiAgICAgaW50IHN0cmlwdHlwZSwKICAgICBQeU9iamVjdCAqc2Vwb2JqCiAgICAgKTsKICNlbmRpZgogCi0vKiBVc2luZyB0aGUgY3VycmVudCBsb2NhbGUsIGluc2VydCB0aGUgdGhvdXNhbmRzIGdyb3VwaW5nCi0gICBpbnRvIHRoZSBzdHJpbmcgcG9pbnRlZCB0byBieSBidWZmZXIuICBGb3IgdGhlIGFyZ3VtZW50IGRlc2NyaXB0aW9ucywKLSAgIHNlZSBPYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggKi8KLQotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nTG9jYWxlKFB5X1VOSUNPREUgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpkaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgpOwotI2VuZGlmCi0KIC8qIFVzaW5nIGV4cGxpY2l0IHBhc3NlZC1pbiB2YWx1ZXMsIGluc2VydCB0aGUgdGhvdXNhbmRzIGdyb3VwaW5nCiAgICBpbnRvIHRoZSBzdHJpbmcgcG9pbnRlZCB0byBieSBidWZmZXIuICBGb3IgdGhlIGFyZ3VtZW50IGRlc2NyaXB0aW9ucywKICAgIHNlZSBPYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyhQeV9VTklDT0RFICpidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWluX3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0aG91c2FuZHNfc2VwKTsKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IGluZGV4LAorICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCisgICAgdm9pZCAqZGlnaXRzLAorICAgIFB5X3NzaXplX3Qgbl9kaWdpdHMsCisgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCisgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcsCisgICAgUHlPYmplY3QgKnRob3VzYW5kc19zZXAsCisgICAgUHlfVUNTNCAqbWF4Y2hhcik7CiAjZW5kaWYKIC8qID09PSBDaGFyYWN0ZXJzIFR5cGUgQVBJcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCkBAIC0xNTk4LDYgKzIwOTIsMzQgQEAKICAgICBQeV9VQ1M0IGNoICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCiAgICAgKTsKIAorUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfVG9Mb3dlckZ1bGwoCisgICAgUHlfVUNTNCBjaCwgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0ICpyZXMKKyAgICApOworCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub1RpdGxlRnVsbCgKKyAgICBQeV9VQ1M0IGNoLCAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLworICAgIFB5X1VDUzQgKnJlcworICAgICk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX1RvVXBwZXJGdWxsKAorICAgIFB5X1VDUzQgY2gsICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgUHlfVUNTNCAqcmVzCisgICAgKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfVG9Gb2xkZWRGdWxsKAorICAgIFB5X1VDUzQgY2gsICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgUHlfVUNTNCAqcmVzCisgICAgKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfSXNDYXNlSWdub3JhYmxlKAorICAgIFB5X1VDUzQgY2ggICAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLworICAgICk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0lzQ2FzZWQoCisgICAgUHlfVUNTNCBjaCAgICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgKTsKKwogUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfVG9EZWNpbWFsRGlnaXQoCiAgICAgUHlfVUNTNCBjaCAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLwogICAgICk7CkBAIC0xNjc2LDYgKzIxOTgsMTcgQEAKICAgICApOwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKKyNpZiBkZWZpbmVkKFB5X0RFQlVHKSAmJiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koCisgICAgUHlPYmplY3QgKm9wLAorICAgIGludCBjaGVja19jb250ZW50KTsKKyNlbmRpZgorCisvKiBSZXR1cm4gYW4gaW50ZXJuZWQgVW5pY29kZSBvYmplY3QgZm9yIGFuIElkZW50aWZpZXI7IG1heSBmYWlsIGlmIHRoZXJlIGlzIG5vIG1lbW9yeS4qLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRnJvbUlkKF9QeV9JZGVudGlmaWVyKik7CisvKiBDbGVhciBhbGwgc3RhdGljIHN0cmluZ3MuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeVVuaWNvZGVfQ2xlYXJTdGF0aWNTdHJpbmdzKHZvaWQpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTElDRU5TRSBiL0xJQ0VOU0UKaW5kZXggNDMzODhlNy4uODhlZWQxZiAxMDA2NDQKLS0tIGEvTElDRU5TRQorKysgYi9MSUNFTlNFCkBAIC03NCw2ICs3NCw3IEBACiAgICAgMy4yLjEgICAgICAgICAgIDMuMiAgICAgICAgIDIwMTEgICAgICAgIFBTRiAgICAgICAgIHllcwogICAgIDMuMi4yICAgICAgICAgICAzLjIuMSAgICAgICAyMDExICAgICAgICBQU0YgICAgICAgICB5ZXMKICAgICAzLjIuMyAgICAgICAgICAgMy4yLjIgICAgICAgMjAxMiAgICAgICAgUFNGICAgICAgICAgeWVzCisgICAgMy4zLjAgICAgICAgICAgIDMuMiAgICAgICAgIDIwMTIgICAgICAgIFBTRiAgICAgICAgIHllcwogCiBGb290bm90ZXM6CiAKZGlmZiAtLWdpdCBhL0xpYi9fZHVtbXlfdGhyZWFkLnB5IGIvTGliL19kdW1teV90aHJlYWQucHkKaW5kZXggZWQ1MDUyMC4uMTNiMWYyNiAxMDA2NDQKLS0tIGEvTGliL19kdW1teV90aHJlYWQucHkKKysrIGIvTGliL19kdW1teV90aHJlYWQucHkKQEAgLTI0LDExICsyNCw3IEBACiAjIGltcG9ydHMgYXJlIGRvbmUgd2hlbiBuZWVkZWQgb24gYSBmdW5jdGlvbi1ieS1mdW5jdGlvbiBiYXNpcy4gIFNpbmNlIHRocmVhZHMKICMgYXJlIGRpc2FibGVkLCB0aGUgaW1wb3J0IGxvY2sgc2hvdWxkIG5vdCBiZSBhbiBpc3N1ZSBhbnl3YXkgKD8/KS4KIAotY2xhc3MgZXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiJEdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBfdGhyZWFkLmVycm9yLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzKToKLSAgICAgICAgc2VsZi5hcmdzID0gYXJncworZXJyb3IgPSBSdW50aW1lRXJyb3IKIAogZGVmIHN0YXJ0X25ld190aHJlYWQoZnVuY3Rpb24sIGFyZ3MsIGt3YXJncz17fSk6CiAgICAgIiIiRHVtbXkgaW1wbGVtZW50YXRpb24gb2YgX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkKCkuCmRpZmYgLS1naXQgYS9MaWIvX29zeF9zdXBwb3J0LnB5IGIvTGliL19vc3hfc3VwcG9ydC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2FhZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL19vc3hfc3VwcG9ydC5weQpAQCAtMCwwICsxLDQ4OCBAQAorIiIiU2hhcmVkIE9TIFggc3VwcG9ydCBmdW5jdGlvbnMuIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK19fYWxsX18gPSBbCisgICAgJ2NvbXBpbGVyX2ZpeHVwJywKKyAgICAnY3VzdG9taXplX2NvbmZpZ192YXJzJywKKyAgICAnY3VzdG9taXplX2NvbXBpbGVyJywKKyAgICAnZ2V0X3BsYXRmb3JtX29zeCcsCitdCisKKyMgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBtYXkgY29udGFpbiB1bml2ZXJzYWwgYnVpbGQgZmxhZ3MsCisjIGxpa2UgIi1hcmNoIiBvciAiLWlzZGtyb290IiwgdGhhdCBtYXkgbmVlZCBjdXN0b21pemF0aW9uIGZvcgorIyB0aGUgdXNlciBlbnZpcm9ubWVudAorX1VOSVZFUlNBTF9DT05GSUdfVkFSUyA9ICgnQ0ZMQUdTJywgJ0xERkxBR1MnLCAnQ1BQRkxBR1MnLCAnQkFTRUNGTEFHUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JMRFNIQVJFRCcsICdMRFNIQVJFRCcsICdDQycsICdDWFgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQWV9DRkxBR1MnLCAnUFlfTERGTEFHUycsICdQWV9DUFBGTEFHUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BZX0NPUkVfQ0ZMQUdTJykKKworIyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IG1heSBjb250YWluIGNvbXBpbGVyIGNhbGxzCitfQ09NUElMRVJfQ09ORklHX1ZBUlMgPSAoJ0JMRFNIQVJFRCcsICdMRFNIQVJFRCcsICdDQycsICdDWFgnKQorCisjIHByZWZpeCBhZGRlZCB0byBvcmlnaW5hbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIG5hbWVzCitfSU5JVFBSRSA9ICdfT1NYX1NVUFBPUlRfSU5JVElBTF8nCisKKworZGVmIF9maW5kX2V4ZWN1dGFibGUoZXhlY3V0YWJsZSwgcGF0aD1Ob25lKToKKyAgICAiIiJUcmllcyB0byBmaW5kICdleGVjdXRhYmxlJyBpbiB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluICdwYXRoJy4KKworICAgIEEgc3RyaW5nIGxpc3RpbmcgZGlyZWN0b3JpZXMgc2VwYXJhdGVkIGJ5ICdvcy5wYXRoc2VwJzsgZGVmYXVsdHMgdG8KKyAgICBvcy5lbnZpcm9uWydQQVRIJ10uICBSZXR1cm5zIHRoZSBjb21wbGV0ZSBmaWxlbmFtZSBvciBOb25lIGlmIG5vdCBmb3VuZC4KKyAgICAiIiIKKyAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgIHBhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KKworICAgIHBhdGhzID0gcGF0aC5zcGxpdChvcy5wYXRoc2VwKQorICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZXhlY3V0YWJsZSkKKworICAgIGlmIChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBvciBvcy5uYW1lID09ICdvczInKSBhbmQgKGV4dCAhPSAnLmV4ZScpOgorICAgICAgICBleGVjdXRhYmxlID0gZXhlY3V0YWJsZSArICcuZXhlJworCisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGV4ZWN1dGFibGUpOgorICAgICAgICBmb3IgcCBpbiBwYXRoczoKKyAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4ocCwgZXhlY3V0YWJsZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGYpOgorICAgICAgICAgICAgICAgICMgdGhlIGZpbGUgZXhpc3RzLCB3ZSBoYXZlIGEgc2hvdCBhdCBzcGF3biB3b3JraW5nCisgICAgICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gZXhlY3V0YWJsZQorCisKK2RlZiBfcmVhZF9vdXRwdXQoY29tbWFuZHN0cmluZyk6CisgICAgIiIiT3V0cHV0IGZyb20gc3VjY2VzZnVsIGNvbW1hbmQgZXhlY3V0aW9uIG9yIE5vbmUiIiIKKyAgICAjIFNpbWlsYXIgdG8gb3MucG9wZW4oY29tbWFuZHN0cmluZywgInIiKS5yZWFkKCksCisgICAgIyBidXQgd2l0aG91dCBhY3R1YWxseSB1c2luZyBvcy5wb3BlbiBiZWNhdXNlIHRoYXQKKyAgICAjIGZ1bmN0aW9uIGlzIG5vdCB1c2FibGUgZHVyaW5nIHB5dGhvbiBib290c3RyYXAuCisgICAgIyB0ZW1wZmlsZSBpcyBhbHNvIG5vdCBhdmFpbGFibGUgdGhlbi4KKyAgICBpbXBvcnQgY29udGV4dGxpYgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHRlbXBmaWxlCisgICAgICAgIGZwID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKCkKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIGZwID0gb3BlbigiL3RtcC9fb3N4X3N1cHBvcnQuJXMiJSgKKyAgICAgICAgICAgIG9zLmdldHBpZCgpLCksICJ3K2IiKQorCisgICAgd2l0aCBjb250ZXh0bGliLmNsb3NpbmcoZnApIGFzIGZwOgorICAgICAgICBjbWQgPSAiJXMgMj4vZGV2L251bGwgPiclcyciICUgKGNvbW1hbmRzdHJpbmcsIGZwLm5hbWUpCisgICAgICAgIHJldHVybiBmcC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpLnN0cmlwKCkgaWYgbm90IG9zLnN5c3RlbShjbWQpIGVsc2UgTm9uZQorCisKK2RlZiBfZmluZF9idWlsZF90b29sKHRvb2xuYW1lKToKKyAgICAiIiJGaW5kIGEgYnVpbGQgdG9vbCBvbiBjdXJyZW50IHBhdGggb3IgdXNpbmcgeGNydW4iIiIKKyAgICByZXR1cm4gKF9maW5kX2V4ZWN1dGFibGUodG9vbG5hbWUpCisgICAgICAgICAgICAgICAgb3IgX3JlYWRfb3V0cHV0KCIvdXNyL2Jpbi94Y3J1biAtZmluZCAlcyIgJSAodG9vbG5hbWUsKSkKKyAgICAgICAgICAgICAgICBvciAnJworICAgICAgICAgICAgKQorCitfU1lTVEVNX1ZFUlNJT04gPSBOb25lCisKK2RlZiBfZ2V0X3N5c3RlbV92ZXJzaW9uKCk6CisgICAgIiIiUmV0dXJuIHRoZSBPUyBYIHN5c3RlbSB2ZXJzaW9uIGFzIGEgc3RyaW5nIiIiCisgICAgIyBSZWFkaW5nIHRoaXMgcGxpc3QgaXMgYSBkb2N1bWVudGVkIHdheSB0byBnZXQgdGhlIHN5c3RlbQorICAgICMgdmVyc2lvbiAoc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgR2VzdGFsdCBNYW5hZ2VyKQorICAgICMgV2UgYXZvaWQgdXNpbmcgcGxhdGZvcm0ubWFjX3ZlciB0byBhdm9pZCBwb3NzaWJsZSBib290c3RyYXAgaXNzdWVzIGR1cmluZworICAgICMgdGhlIGJ1aWxkIG9mIFB5dGhvbiBpdHNlbGYgKGRpc3R1dGlscyBpcyB1c2VkIHRvIGJ1aWxkIHN0YW5kYXJkIGxpYnJhcnkKKyAgICAjIGV4dGVuc2lvbnMpLgorCisgICAgZ2xvYmFsIF9TWVNURU1fVkVSU0lPTgorCisgICAgaWYgX1NZU1RFTV9WRVJTSU9OIGlzIE5vbmU6CisgICAgICAgIF9TWVNURU1fVkVSU0lPTiA9ICcnCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBvcGVuKCcvU3lzdGVtL0xpYnJhcnkvQ29yZVNlcnZpY2VzL1N5c3RlbVZlcnNpb24ucGxpc3QnKQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICMgV2UncmUgb24gYSBwbGFpbiBkYXJ3aW4gYm94LCBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICMgYmVoYXZpb3VyLgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG0gPSByZS5zZWFyY2gocic8a2V5PlByb2R1Y3RVc2VyVmlzaWJsZVZlcnNpb248L2tleT5ccyonCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJzxzdHJpbmc+KC4qPyk8L3N0cmluZz4nLCBmLnJlYWQoKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIF9TWVNURU1fVkVSU0lPTiA9ICcuJy5qb2luKG0uZ3JvdXAoMSkuc3BsaXQoJy4nKVs6Ml0pCisgICAgICAgICAgICAjIGVsc2U6IGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBiZWhhdmlvdXIKKworICAgIHJldHVybiBfU1lTVEVNX1ZFUlNJT04KKworZGVmIF9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKF9jb25maWdfdmFycyk6CisgICAgIiIiUmVtb3ZlIG9yaWdpbmFsIHVubW9kaWZpZWQgdmFsdWVzIGZvciB0ZXN0aW5nIiIiCisgICAgIyBUaGlzIGlzIG5lZWRlZCBmb3IgaGlnaGVyLWxldmVsIGNyb3NzLXBsYXRmb3JtIHRlc3RzIG9mIGdldF9wbGF0Zm9ybS4KKyAgICBmb3IgayBpbiBsaXN0KF9jb25maWdfdmFycyk6CisgICAgICAgIGlmIGsuc3RhcnRzd2l0aChfSU5JVFBSRSk6CisgICAgICAgICAgICBkZWwgX2NvbmZpZ192YXJzW2tdCisKK2RlZiBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBuZXd2YWx1ZSk6CisgICAgIiIiU2F2ZSBtb2RpZmllZCBhbmQgb3JpZ2luYWwgdW5tb2RpZmllZCB2YWx1ZSBvZiBjb25maWd1cmF0aW9uIHZhciIiIgorCisgICAgb2xkdmFsdWUgPSBfY29uZmlnX3ZhcnMuZ2V0KGN2LCAnJykKKyAgICBpZiAob2xkdmFsdWUgIT0gbmV3dmFsdWUpIGFuZCAoX0lOSVRQUkUgKyBjdiBub3QgaW4gX2NvbmZpZ192YXJzKToKKyAgICAgICAgX2NvbmZpZ192YXJzW19JTklUUFJFICsgY3ZdID0gb2xkdmFsdWUKKyAgICBfY29uZmlnX3ZhcnNbY3ZdID0gbmV3dmFsdWUKKworZGVmIF9zdXBwb3J0c191bml2ZXJzYWxfYnVpbGRzKCk6CisgICAgIiIiUmV0dXJucyBUcnVlIGlmIHVuaXZlcnNhbCBidWlsZHMgYXJlIHN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbSIiIgorICAgICMgQXMgYW4gYXBwcm94aW1hdGlvbiwgd2UgYXNzdW1lIHRoYXQgaWYgd2UgYXJlIHJ1bm5pbmcgb24gMTAuNCBvciBhYm92ZSwKKyAgICAjIHRoZW4gd2UgYXJlIHJ1bm5pbmcgd2l0aCBhbiBYY29kZSBlbnZpcm9ubWVudCB0aGF0IHN1cHBvcnRzIHVuaXZlcnNhbAorICAgICMgYnVpbGRzLCBpbiBwYXJ0aWN1bGFyIC1pc3lzcm9vdCBhbmQgLWFyY2ggYXJndW1lbnRzIHRvIHRoZSBjb21waWxlci4gVGhpcworICAgICMgaXMgaW4gc3VwcG9ydCBvZiBhbGxvd2luZyAxMC40IHVuaXZlcnNhbCBidWlsZHMgdG8gcnVuIG9uIDEwLjMueCBzeXN0ZW1zLgorCisgICAgb3N4X3ZlcnNpb24gPSBfZ2V0X3N5c3RlbV92ZXJzaW9uKCkKKyAgICBpZiBvc3hfdmVyc2lvbjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3N4X3ZlcnNpb24gPSB0dXBsZShpbnQoaSkgZm9yIGkgaW4gb3N4X3ZlcnNpb24uc3BsaXQoJy4nKSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBvc3hfdmVyc2lvbiA9ICcnCisgICAgcmV0dXJuIGJvb2wob3N4X3ZlcnNpb24gPj0gKDEwLCA0KSkgaWYgb3N4X3ZlcnNpb24gZWxzZSBGYWxzZQorCisKK2RlZiBfZmluZF9hcHByb3ByaWF0ZV9jb21waWxlcihfY29uZmlnX3ZhcnMpOgorICAgICIiIkZpbmQgYXBwcm9wcmlhdGUgQyBjb21waWxlciBmb3IgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMiIiIKKworICAgICMgSXNzdWUgIzEzNTkwOgorICAgICMgICAgVGhlIE9TWCBsb2NhdGlvbiBmb3IgdGhlIGNvbXBpbGVyIHZhcmllcyBiZXR3ZWVuIE9TWAorICAgICMgICAgKG9yIHJhdGhlciBYY29kZSkgcmVsZWFzZXMuICBXaXRoIG9sZGVyIHJlbGVhc2VzICh1cC10byAxMC41KQorICAgICMgICAgdGhlIGNvbXBpbGVyIGlzIGluIC91c3IvYmluLCB3aXRoIG5ld2VyIHJlbGVhc2VzIHRoZSBjb21waWxlcgorICAgICMgICAgY2FuIG9ubHkgYmUgZm91bmQgaW5zaWRlIFhjb2RlLmFwcCBpZiB0aGUgIkNvbW1hbmQgTGluZSBUb29scyIKKyAgICAjICAgIGFyZSBub3QgaW5zdGFsbGVkLgorICAgICMKKyAgICAjICAgIEZ1dGhlcm1vcmUsIHRoZSBjb21waWxlciB0aGF0IGNhbiBiZSB1c2VkIHZhcmllcyBiZXR3ZWVuCisgICAgIyAgICBYY29kZSByZWxlYXNlcy4gVXB0byBYY29kZSA0IGl0IHdhcyBwb3NzaWJsZSB0byB1c2UgJ2djYy00LjInCisgICAgIyAgICBhcyB0aGUgY29tcGlsZXIsIGFmdGVyIHRoYXQgJ2NsYW5nJyBzaG91bGQgYmUgdXNlZCBiZWNhdXNlCisgICAgIyAgICBnY2MtNC4yIGlzIGVpdGhlciBub3QgcHJlc2VudCwgb3IgYSBjb3B5IG9mICdsbHZtLWdjYycgdGhhdAorICAgICMgICAgbWlzY29tcGlsZXMgUHl0aG9uLgorCisgICAgIyBza2lwIGNoZWNrcyBpZiB0aGUgY29tcGlsZXIgd2FzIG92ZXJyaWRlbiB3aXRoIGEgQ0MgZW52IHZhcmlhYmxlCisgICAgaWYgJ0NDJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKyAgICAjIFRoZSBDQyBjb25maWcgdmFyIG1pZ2h0IGNvbnRhaW4gYWRkaXRpb25hbCBhcmd1bWVudHMuCisgICAgIyBJZ25vcmUgdGhlbSB3aGlsZSBzZWFyY2hpbmcuCisgICAgY2MgPSBvbGRjYyA9IF9jb25maWdfdmFyc1snQ0MnXS5zcGxpdCgpWzBdCisgICAgaWYgbm90IF9maW5kX2V4ZWN1dGFibGUoY2MpOgorICAgICAgICAjIENvbXBpbGVyIGlzIG5vdCBmb3VuZCBvbiB0aGUgc2hlbGwgc2VhcmNoIFBBVEguCisgICAgICAgICMgTm93IHNlYXJjaCBmb3IgY2xhbmcsIGZpcnN0IG9uIFBBVEggKGlmIHRoZSBDb21tYW5kIExJbmUKKyAgICAgICAgIyBUb29scyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluIC8gb3IgaWYgdGhlIHVzZXIgaGFzIHByb3ZpZGVkCisgICAgICAgICMgYW5vdGhlciBsb2NhdGlvbiB2aWEgQ0MpLiAgSWYgbm90IGZvdW5kLCB0cnkgdXNpbmcgeGNydW4KKyAgICAgICAgIyB0byBmaW5kIGFuIHVuaW5zdGFsbGVkIGNsYW5nICh3aXRoaW4gYSBzZWxlY3RlZCBYY29kZSkuCisKKyAgICAgICAgIyBOT1RFOiBDYW5ub3QgdXNlIHN1YnByb2Nlc3MgaGVyZSBiZWNhdXNlIG9mIGJvb3RzdHJhcAorICAgICAgICAjIGlzc3VlcyB3aGVuIGJ1aWxkaW5nIFB5dGhvbiBpdHNlbGYgKGFuZCBvcy5wb3BlbiBpcworICAgICAgICAjIGltcGxlbWVudGVkIG9uIHRvcCBvZiBzdWJwcm9jZXNzIGFuZCBpcyB0aGVyZWZvcmUgbm90CisgICAgICAgICMgdXNhYmxlIGFzIHdlbGwpCisKKyAgICAgICAgY2MgPSBfZmluZF9idWlsZF90b29sKCdjbGFuZycpCisKKyAgICBlbGlmIG9zLnBhdGguYmFzZW5hbWUoY2MpLnN0YXJ0c3dpdGgoJ2djYycpOgorICAgICAgICAjIENvbXBpbGVyIGlzIEdDQywgY2hlY2sgaWYgaXQgaXMgTExWTS1HQ0MKKyAgICAgICAgZGF0YSA9IF9yZWFkX291dHB1dCgiJyVzJyAtLXZlcnNpb24iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNjLnJlcGxhY2UoIiciLCAiJ1wiJ1wiJyIpLCkpCisgICAgICAgIGlmICdsbHZtLWdjYycgaW4gZGF0YToKKyAgICAgICAgICAgICMgRm91bmQgTExWTS1HQ0MsIGZhbGwgYmFjayB0byBjbGFuZworICAgICAgICAgICAgY2MgPSBfZmluZF9idWlsZF90b29sKCdjbGFuZycpCisKKyAgICBpZiBub3QgY2M6CisgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKAorICAgICAgICAgICAgICAgIkNhbm5vdCBsb2NhdGUgd29ya2luZyBjb21waWxlciIpCisKKyAgICBpZiBjYyAhPSBvbGRjYzoKKyAgICAgICAgIyBGb3VuZCBhIHJlcGxhY2VtZW50IGNvbXBpbGVyLgorICAgICAgICAjIE1vZGlmeSBjb25maWcgdmFycyB1c2luZyBuZXcgY29tcGlsZXIsIGlmIG5vdCBhbHJlYWR5IGV4cGxpY3RseQorICAgICAgICAjIG92ZXJyaWRlbiBieSBhbiBlbnYgdmFyaWFibGUsIHByZXNlcnZpbmcgYWRkaXRpb25hbCBhcmd1bWVudHMuCisgICAgICAgIGZvciBjdiBpbiBfQ09NUElMRVJfQ09ORklHX1ZBUlM6CisgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIGN2X3NwbGl0ID0gX2NvbmZpZ192YXJzW2N2XS5zcGxpdCgpCisgICAgICAgICAgICAgICAgY3Zfc3BsaXRbMF0gPSBjYyBpZiBjdiAhPSAnQ1hYJyBlbHNlIGNjICsgJysrJworICAgICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsICcgJy5qb2luKGN2X3NwbGl0KSkKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgX3JlbW92ZV91bml2ZXJzYWxfZmxhZ3MoX2NvbmZpZ192YXJzKToKKyAgICAiIiJSZW1vdmUgYWxsIHVuaXZlcnNhbCBidWlsZCBhcmd1bWVudHMgZnJvbSBjb25maWcgdmFycyIiIgorCisgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CisgICAgICAgICMgRG8gbm90IGFsdGVyIGEgY29uZmlnIHZhciBleHBsaWNpdGx5IG92ZXJyaWRlbiBieSBlbnYgdmFyCisgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CisgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KKyAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncywgcmUuQVNDSUkpCisgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWlzeXNyb290IFteIFx0XSonLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCisKKyAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKworZGVmIF9yZW1vdmVfdW5zdXBwb3J0ZWRfYXJjaHMoX2NvbmZpZ192YXJzKToKKyAgICAiIiJSZW1vdmUgYW55IHVuc3VwcG9ydGVkIGFyY2hzIGZyb20gY29uZmlnIHZhcnMiIiIKKyAgICAjIERpZmZlcmVudCBYY29kZSByZWxlYXNlcyBzdXBwb3J0IGRpZmZlcmVudCBzZXRzIGZvciAnLWFyY2gnCisgICAgIyBmbGFncy4gSW4gcGFydGljdWxhciwgWGNvZGUgNC54IG5vIGxvbmdlciBzdXBwb3J0cyB0aGUKKyAgICAjIFBQQyBhcmNoaXRlY3R1cmVzLgorICAgICMKKyAgICAjIFRoaXMgY29kZSBhdXRvbWF0aWNhbGx5IHJlbW92ZXMgJy1hcmNoIHBwYycgYW5kICctYXJjaCBwcGM2NCcKKyAgICAjIHdoZW4gdGhlc2UgYXJlIG5vdCBzdXBwb3J0ZWQuIFRoYXQgbWFrZXMgaXQgcG9zc2libGUgdG8KKyAgICAjIGJ1aWxkIGV4dGVuc2lvbnMgb24gT1NYIDEwLjcgYW5kIGxhdGVyIHdpdGggdGhlIHByZWJ1aWx0CisgICAgIyAzMi1iaXQgaW5zdGFsbGVyIG9uIHRoZSBweXRob24ub3JnIHdlYnNpdGUuCisKKyAgICAjIHNraXAgY2hlY2tzIGlmIHRoZSBjb21waWxlciB3YXMgb3ZlcnJpZGVuIHdpdGggYSBDQyBlbnYgdmFyaWFibGUKKyAgICBpZiAnQ0MnIGluIG9zLmVudmlyb246CisgICAgICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworICAgIGlmIHJlLnNlYXJjaCgnLWFyY2hccytwcGMnLCBfY29uZmlnX3ZhcnNbJ0NGTEFHUyddKSBpcyBub3QgTm9uZToKKyAgICAgICAgIyBOT1RFOiBDYW5ub3QgdXNlIHN1YnByb2Nlc3MgaGVyZSBiZWNhdXNlIG9mIGJvb3RzdHJhcAorICAgICAgICAjIGlzc3VlcyB3aGVuIGJ1aWxkaW5nIFB5dGhvbiBpdHNlbGYKKyAgICAgICAgc3RhdHVzID0gb3Muc3lzdGVtKCInJXMnIC1hcmNoIHBwYyAteCBjIC9kZXYvbnVsbCAyPi9kZXYvbnVsbCIlKAorICAgICAgICAgICAgX2NvbmZpZ192YXJzWydDQyddLnJlcGxhY2UoIiciLCAiJ1wiJ1wiJyIpLCkpCisgICAgICAgICMgVGhlIEFwcGxlIGNvbXBpbGVyIGRyaXZlcnMgcmV0dXJuIHN0YXR1cyAyNTUgaWYgbm8gUFBDCisgICAgICAgIGlmIChzdGF0dXMgPj4gOCkgPT0gMjU1OgorICAgICAgICAgICAgIyBDb21waWxlciBkb2Vzbid0IHN1cHBvcnQgUFBDLCByZW1vdmUgdGhlIHJlbGF0ZWQKKyAgICAgICAgICAgICMgJy1hcmNoJyBmbGFncyBpZiBub3QgZXhwbGljaXRseSBvdmVycmlkZGVuIGJ5IGFuCisgICAgICAgICAgICAjIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICAgICAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKKyAgICAgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrcHBjXHcqXHMnLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgX292ZXJyaWRlX2FsbF9hcmNocyhfY29uZmlnX3ZhcnMpOgorICAgICIiIkFsbG93IG92ZXJyaWRlIG9mIGFsbCBhcmNocyB3aXRoIEFSQ0hGTEFHUyBlbnYgdmFyIiIiCisgICAgIyBOT1RFOiBUaGlzIG5hbWUgd2FzIGludHJvZHVjZWQgYnkgQXBwbGUgaW4gT1NYIDEwLjUgYW5kCisgICAgIyBpcyB1c2VkIGJ5IHNldmVyYWwgc2NyaXB0aW5nIGxhbmd1YWdlcyBkaXN0cmlidXRlZCB3aXRoCisgICAgIyB0aGF0IE9TIHJlbGVhc2UuCisgICAgaWYgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgYXJjaCA9IG9zLmVudmlyb25bJ0FSQ0hGTEFHUyddCisgICAgICAgIGZvciBjdiBpbiBfVU5JVkVSU0FMX0NPTkZJR19WQVJTOgorICAgICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCAnLWFyY2gnIGluIF9jb25maWdfdmFyc1tjdl06CisgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCisgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgKyAnICcgKyBhcmNoCisgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCisKKyAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKworZGVmIF9jaGVja19mb3JfdW5hdmFpbGFibGVfc2RrKF9jb25maWdfdmFycyk6CisgICAgIiIiUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYW55IFNES3Mgbm90IGF2YWlsYWJsZSIiIgorICAgICMgSWYgd2UncmUgb24gT1NYIDEwLjUgb3IgbGF0ZXIgYW5kIHRoZSB1c2VyIHRyaWVzIHRvCisgICAgIyBjb21waWxlIGFuIGV4dGVuc2lvbiB1c2luZyBhbiBTREsgdGhhdCBpcyBub3QgcHJlc2VudAorICAgICMgb24gdGhlIGN1cnJlbnQgbWFjaGluZSBpdCBpcyBiZXR0ZXIgdG8gbm90IHVzZSBhbiBTREsKKyAgICAjIHRoYW4gdG8gZmFpbC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCB3aXRoCisgICAgIyB0aGUgc3RhbmRhbG9uZyBDb21tYW5kIExpbmUgVG9vbHMgYWx0ZXJuYXRpdmUgdG8gYQorICAgICMgZnVsbC1ibG93biBYY29kZSBpbnN0YWxsIHNpbmNlIHRoZSBDTFQgcGFja2FnZXMgZG8gbm90CisgICAgIyBwcm92aWRlIFNES3MuICBJZiB0aGUgU0RLIGlzIG5vdCBwcmVzZW50LCBpdCBpcyBhc3N1bWVkCisgICAgIyB0aGF0IHRoZSBoZWFkZXIgZmlsZXMgYW5kIGRldiBsaWJzIGhhdmUgYmVlbiBpbnN0YWxsZWQKKyAgICAjIHRvIC91c3IgYW5kIC9TeXN0ZW0vTGlicmFyeSBieSBlaXRoZXIgYSBzdGFuZGFsb25lIENMVAorICAgICMgcGFja2FnZSBvciB0aGUgQ0xUIGNvbXBvbmVudCB3aXRoaW4gWGNvZGUuCisgICAgY2ZsYWdzID0gX2NvbmZpZ192YXJzLmdldCgnQ0ZMQUdTJywgJycpCisgICAgbSA9IHJlLnNlYXJjaChyJy1pc3lzcm9vdFxzKyhcUyspJywgY2ZsYWdzKQorICAgIGlmIG0gaXMgbm90IE5vbmU6CisgICAgICAgIHNkayA9IG0uZ3JvdXAoMSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNkayk6CisgICAgICAgICAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKKyAgICAgICAgICAgICAgICAjIERvIG5vdCBhbHRlciBhIGNvbmZpZyB2YXIgZXhwbGljaXRseSBvdmVycmlkZW4gYnkgZW52IHZhcgorICAgICAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YihyJy1pc3lzcm9vdFxzK1xTKyg/OlxzfCQpJywgJyAnLCBmbGFncykKKyAgICAgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCisKKyAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKworZGVmIGNvbXBpbGVyX2ZpeHVwKGNvbXBpbGVyX3NvLCBjY19hcmdzKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgc3RyaXAgJy1pc3lzcm9vdCBQQVRIJyBhbmQgJy1hcmNoIEFSQ0gnIGZyb20gdGhlCisgICAgY29tcGlsZSBmbGFncyBpZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIG9uZSB0aGVtIGluIGV4dHJhX2NvbXBpbGVfZmxhZ3MuCisKKyAgICBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlICctYXJjaCBBUkNIJyBhZGRzIGFub3RoZXIgYXJjaGl0ZWN0dXJlIHRvIHRoZQorICAgIGJ1aWxkLCB3aXRob3V0IGEgd2F5IHRvIHJlbW92ZSBhbiBhcmNoaXRlY3R1cmUuIEZ1cnRoZXJtb3JlIEdDQyB3aWxsCisgICAgYmFyZiBpZiBtdWx0aXBsZSAnLWlzeXNyb290JyBhcmd1bWVudHMgYXJlIHByZXNlbnQuCisgICAgIiIiCisgICAgc3RyaXBBcmNoID0gc3RyaXBTeXNyb290ID0gRmFsc2UKKworICAgIGNvbXBpbGVyX3NvID0gbGlzdChjb21waWxlcl9zbykKKworICAgIGlmIG5vdCBfc3VwcG9ydHNfdW5pdmVyc2FsX2J1aWxkcygpOgorICAgICAgICAjIE9TWCBiZWZvcmUgMTAuNC4wLCB0aGVzZSBkb24ndCBzdXBwb3J0IC1hcmNoIGFuZCAtaXN5c3Jvb3QgYXQKKyAgICAgICAgIyBhbGwuCisgICAgICAgIHN0cmlwQXJjaCA9IHN0cmlwU3lzcm9vdCA9IFRydWUKKyAgICBlbHNlOgorICAgICAgICBzdHJpcEFyY2ggPSAnLWFyY2gnIGluIGNjX2FyZ3MKKyAgICAgICAgc3RyaXBTeXNyb290ID0gJy1pc3lzcm9vdCcgaW4gY2NfYXJncworCisgICAgaWYgc3RyaXBBcmNoIG9yICdBUkNIRkxBR1MnIGluIG9zLmVudmlyb246CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW5kZXggPSBjb21waWxlcl9zby5pbmRleCgnLWFyY2gnKQorICAgICAgICAgICAgICAgICMgU3RyaXAgdGhpcyBhcmd1bWVudCBhbmQgdGhlIG5leHQgb25lOgorICAgICAgICAgICAgICAgIGRlbCBjb21waWxlcl9zb1tpbmRleDppbmRleCsyXQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGlmICdBUkNIRkxBR1MnIGluIG9zLmVudmlyb24gYW5kIG5vdCBzdHJpcEFyY2g6CisgICAgICAgICMgVXNlciBzcGVjaWZpZWQgZGlmZmVyZW50IC1hcmNoIGZsYWdzIGluIHRoZSBlbnZpcm9uLAorICAgICAgICAjIHNlZSBhbHNvIGRpc3R1dGlscy5zeXNjb25maWcKKyAgICAgICAgY29tcGlsZXJfc28gPSBjb21waWxlcl9zbyArIG9zLmVudmlyb25bJ0FSQ0hGTEFHUyddLnNwbGl0KCkKKworICAgIGlmIHN0cmlwU3lzcm9vdDoKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbmRleCA9IGNvbXBpbGVyX3NvLmluZGV4KCctaXN5c3Jvb3QnKQorICAgICAgICAgICAgICAgICMgU3RyaXAgdGhpcyBhcmd1bWVudCBhbmQgdGhlIG5leHQgb25lOgorICAgICAgICAgICAgICAgIGRlbCBjb21waWxlcl9zb1tpbmRleDppbmRleCsyXQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICMgQ2hlY2sgaWYgdGhlIFNESyB0aGF0IGlzIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIGFjdHVhbGx5IGV4aXN0cywKKyAgICAjIHRoZSB1bml2ZXJzYWwgYnVpbGQgcmVxdWlyZXMgdGhlIHVzYWdlIG9mIGEgdW5pdmVyc2FsIFNESyBhbmQgbm90IGFsbAorICAgICMgdXNlcnMgaGF2ZSB0aGF0IGluc3RhbGxlZCBieSBkZWZhdWx0LgorICAgIHN5c3Jvb3QgPSBOb25lCisgICAgaWYgJy1pc3lzcm9vdCcgaW4gY2NfYXJnczoKKyAgICAgICAgaWR4ID0gY2NfYXJncy5pbmRleCgnLWlzeXNyb290JykKKyAgICAgICAgc3lzcm9vdCA9IGNjX2FyZ3NbaWR4KzFdCisgICAgZWxpZiAnLWlzeXNyb290JyBpbiBjb21waWxlcl9zbzoKKyAgICAgICAgaWR4ID0gY29tcGlsZXJfc28uaW5kZXgoJy1pc3lzcm9vdCcpCisgICAgICAgIHN5c3Jvb3QgPSBjb21waWxlcl9zb1tpZHgrMV0KKworICAgIGlmIHN5c3Jvb3QgYW5kIG5vdCBvcy5wYXRoLmlzZGlyKHN5c3Jvb3QpOgorICAgICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgbG9nCisgICAgICAgIGxvZy53YXJuKCJDb21waWxpbmcgd2l0aCBhbiBTREsgdGhhdCBkb2Vzbid0IHNlZW0gdG8gZXhpc3Q6ICVzIiwKKyAgICAgICAgICAgICAgICBzeXNyb290KQorICAgICAgICBsb2cud2FybigiUGxlYXNlIGNoZWNrIHlvdXIgWGNvZGUgaW5zdGFsbGF0aW9uIikKKworICAgIHJldHVybiBjb21waWxlcl9zbworCisKK2RlZiBjdXN0b21pemVfY29uZmlnX3ZhcnMoX2NvbmZpZ192YXJzKToKKyAgICAiIiJDdXN0b21pemUgUHl0aG9uIGJ1aWxkIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLgorCisgICAgQ2FsbGVkIGludGVybmFsbHkgZnJvbSBzeXNjb25maWcgd2l0aCBhIG11dGFibGUgbWFwcGluZworICAgIGNvbnRhaW5pbmcgbmFtZS92YWx1ZSBwYWlycyBwYXJzZWQgZnJvbSB0aGUgY29uZmlndXJlZAorICAgIG1ha2VmaWxlIHVzZWQgdG8gYnVpbGQgdGhpcyBpbnRlcnByZXRlci4gIFJldHVybnMKKyAgICB0aGUgbWFwcGluZyB1cGRhdGVkIGFzIG5lZWRlZCB0byByZWZsZWN0IHRoZSBlbnZpcm9ubWVudAorICAgIGluIHdoaWNoIHRoZSBpbnRlcnByZXRlciBpcyBydW5uaW5nOyBpbiB0aGUgY2FzZSBvZgorICAgIGEgUHl0aG9uIGZyb20gYSBiaW5hcnkgaW5zdGFsbGVyLCB0aGUgaW5zdGFsbGVkCisgICAgZW52aXJvbm1lbnQgbWF5IGJlIHZlcnkgZGlmZmVyZW50IGZyb20gdGhlIGJ1aWxkCisgICAgZW52aXJvbm1lbnQsIGkuZS4gZGlmZmVyZW50IE9TIGxldmVscywgZGlmZmVyZW50CisgICAgYnVpbHQgdG9vbHMsIGRpZmZlcmVudCBhdmFpbGFibGUgQ1BVIGFyY2hpdGVjdHVyZXMuCisKKyAgICBUaGlzIGN1c3RvbWl6YXRpb24gaXMgcGVyZm9ybWVkIHdoZW5ldmVyCisgICAgZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKSBpcyBmaXJzdAorICAgIGNhbGxlZC4gIEl0IG1heSBiZSB1c2VkIGluIGVudmlyb25tZW50cyB3aGVyZSBubworICAgIGNvbXBpbGVycyBhcmUgcHJlc2VudCwgaS5lLiB3aGVuIGluc3RhbGxpbmcgcHVyZQorICAgIFB5dGhvbiBkaXN0cy4gIEN1c3RvbWl6YXRpb24gb2YgY29tcGlsZXIgcGF0aHMKKyAgICBhbmQgZGV0ZWN0aW9uIG9mIHVuYXZhaWxhYmxlIGFyY2hzIGlzIGRlZmVycmVkCisgICAgdW50aWwgdGhlIGZpcnN0IGV4dGVudGlvbiBtb2R1bGUgYnVpbGQgaXMKKyAgICByZXF1ZXN0ZWQgKGluIGRpc3R1dGlscy5zeXNjb25maWcuY3VzdG9taXplX2NvbXBpbGVyKS4KKworICAgIEN1cnJlbnRseSBjYWxsZWQgZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnCisgICAgIiIiCisKKyAgICBpZiBub3QgX3N1cHBvcnRzX3VuaXZlcnNhbF9idWlsZHMoKToKKyAgICAgICAgIyBPbiBNYWMgT1MgWCBiZWZvcmUgMTAuNCwgY2hlY2sgaWYgLWFyY2ggYW5kIC1pc3lzcm9vdAorICAgICAgICAjIGFyZSBpbiBDRkxBR1Mgb3IgTERGTEFHUyBhbmQgcmVtb3ZlIHRoZW0gaWYgdGhleSBhcmUuCisgICAgICAgICMgVGhpcyBpcyBuZWVkZWQgd2hlbiBidWlsZGluZyBleHRlbnNpb25zIG9uIGEgMTAuMyBzeXN0ZW0KKyAgICAgICAgIyB1c2luZyBhIHVuaXZlcnNhbCBidWlsZCBvZiBweXRob24uCisgICAgICAgIF9yZW1vdmVfdW5pdmVyc2FsX2ZsYWdzKF9jb25maWdfdmFycykKKworICAgICMgQWxsb3cgdXNlciB0byBvdmVycmlkZSBhbGwgYXJjaHMgd2l0aCBBUkNIRkxBR1MgZW52IHZhcgorICAgIF9vdmVycmlkZV9hbGxfYXJjaHMoX2NvbmZpZ192YXJzKQorCisgICAgIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBzZGtzIHRoYXQgYXJlIG5vdCBmb3VuZAorICAgIF9jaGVja19mb3JfdW5hdmFpbGFibGVfc2RrKF9jb25maWdfdmFycykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgY3VzdG9taXplX2NvbXBpbGVyKF9jb25maWdfdmFycyk6CisgICAgIiIiQ3VzdG9taXplIGNvbXBpbGVyIHBhdGggYW5kIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLgorCisgICAgVGhpcyBjdXN0b21pemF0aW9uIGlzIHBlcmZvcm1lZCB3aGVuIHRoZSBmaXJzdAorICAgIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGQgaXMgcmVxdWVzdGVkCisgICAgaW4gZGlzdHV0aWxzLnN5c2NvbmZpZy5jdXN0b21pemVfY29tcGlsZXIpLgorICAgICIiIgorCisgICAgIyBGaW5kIGEgY29tcGlsZXIgdG8gdXNlIGZvciBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcworICAgIF9maW5kX2FwcHJvcHJpYXRlX2NvbXBpbGVyKF9jb25maWdfdmFycykKKworICAgICMgUmVtb3ZlIHBwYyBhcmNoIGZsYWdzIGlmIG5vdCBzdXBwb3J0ZWQgaGVyZQorICAgIF9yZW1vdmVfdW5zdXBwb3J0ZWRfYXJjaHMoX2NvbmZpZ192YXJzKQorCisgICAgIyBBbGxvdyB1c2VyIHRvIG92ZXJyaWRlIGFsbCBhcmNocyB3aXRoIEFSQ0hGTEFHUyBlbnYgdmFyCisgICAgX292ZXJyaWRlX2FsbF9hcmNocyhfY29uZmlnX3ZhcnMpCisKKyAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKworZGVmIGdldF9wbGF0Zm9ybV9vc3goX2NvbmZpZ192YXJzLCBvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUpOgorICAgICIiIkZpbHRlciB2YWx1ZXMgZm9yIGdldF9wbGF0Zm9ybSgpIiIiCisgICAgIyBjYWxsZWQgZnJvbSBnZXRfcGxhdGZvcm0oKSBpbiBzeXNjb25maWcgYW5kIGRpc3R1dGlscy51dGlsCisgICAgIworICAgICMgRm9yIG91ciBwdXJwb3Nlcywgd2UnbGwgYXNzdW1lIHRoYXQgdGhlIHN5c3RlbSB2ZXJzaW9uIGZyb20KKyAgICAjIGRpc3R1dGlscycgcGVyc3BlY3RpdmUgaXMgd2hhdCBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgaXMgc2V0CisgICAgIyB0by4gVGhpcyBtYWtlcyB0aGUgY29tcGF0aWJpbGl0eSBzdG9yeSBhIGJpdCBtb3JlIHNhbmUgYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgaXMgZ29pbmcgdG8gY29tcGlsZSBhbmQgbGluayBhcyBpZiBpdCB3ZXJlCisgICAgIyBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQuCisKKyAgICBtYWN2ZXIgPSBfY29uZmlnX3ZhcnMuZ2V0KCdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnLCAnJykKKyAgICBtYWNyZWxlYXNlID0gX2dldF9zeXN0ZW1fdmVyc2lvbigpIG9yIG1hY3ZlcgorICAgIG1hY3ZlciA9IG1hY3ZlciBvciBtYWNyZWxlYXNlCisKKyAgICBpZiBtYWN2ZXI6CisgICAgICAgIHJlbGVhc2UgPSBtYWN2ZXIKKyAgICAgICAgb3NuYW1lID0gIm1hY29zeCIKKworICAgICAgICAjIFVzZSB0aGUgb3JpZ2luYWwgQ0ZMQUdTIHZhbHVlLCBpZiBhdmFpbGFibGUsIHNvIHRoYXQgd2UKKyAgICAgICAgIyByZXR1cm4gdGhlIHNhbWUgbWFjaGluZSB0eXBlIGZvciB0aGUgcGxhdGZvcm0gc3RyaW5nLgorICAgICAgICAjIE90aGVyd2lzZSwgZGlzdHV0aWxzIG1heSBjb25zaWRlciB0aGlzIGEgY3Jvc3MtY29tcGlsaW5nCisgICAgICAgICMgY2FzZSBhbmQgZGlzYWxsb3cgaW5zdGFsbHMuCisgICAgICAgIGNmbGFncyA9IF9jb25maWdfdmFycy5nZXQoX0lOSVRQUkUrJ0NGTEFHUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29uZmlnX3ZhcnMuZ2V0KCdDRkxBR1MnLCAnJykpCisgICAgICAgIGlmICgobWFjcmVsZWFzZSArICcuJykgPj0gJzEwLjQuJyBhbmQKKyAgICAgICAgICAgICctYXJjaCcgaW4gY2ZsYWdzLnN0cmlwKCkpOgorICAgICAgICAgICAgIyBUaGUgdW5pdmVyc2FsIGJ1aWxkIHdpbGwgYnVpbGQgZmF0IGJpbmFyaWVzLCBidXQgbm90IG9uCisgICAgICAgICAgICAjIHN5c3RlbXMgYmVmb3JlIDEwLjQKKworICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQnCisKKyAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXFMrKScsIGNmbGFncykKKyAgICAgICAgICAgIGFyY2hzID0gdHVwbGUoc29ydGVkKHNldChhcmNocykpKQorCisgICAgICAgICAgICBpZiBsZW4oYXJjaHMpID09IDE6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9IGFyY2hzWzBdCisgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnKToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKKyAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3g4Nl82NCcpOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnaW50ZWwnCisgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAneDg2XzY0Jyk6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQzJworICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ3BwYzY0JywgJ3g4Nl82NCcpOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0NjQnCisgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAncHBjNjQnLCAneDg2XzY0Jyk6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICd1bml2ZXJzYWwnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIkRvbid0IGtub3cgbWFjaGluZSB2YWx1ZSBmb3IgYXJjaHM9JXIiICUgKGFyY2hzLCkpCisKKyAgICAgICAgZWxpZiBtYWNoaW5lID09ICdpMzg2JzoKKyAgICAgICAgICAgICMgT24gT1NYIHRoZSBtYWNoaW5lIHR5cGUgcmV0dXJuZWQgYnkgdW5hbWUgaXMgYWx3YXlzIHRoZQorICAgICAgICAgICAgIyAzMi1iaXQgdmFyaWFudCwgZXZlbiBpZiB0aGUgZXhlY3V0YWJsZSBhcmNoaXRlY3R1cmUgaXMKKyAgICAgICAgICAgICMgdGhlIDY0LWJpdCB2YXJpYW50CisgICAgICAgICAgICBpZiBzeXMubWF4c2l6ZSA+PSAyKiozMjoKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3g4Nl82NCcKKworICAgICAgICBlbGlmIG1hY2hpbmUgaW4gKCdQb3dlclBDJywgJ1Bvd2VyX01hY2ludG9zaCcpOgorICAgICAgICAgICAgIyBQaWNrIGEgc2FuZSBuYW1lIGZvciB0aGUgUFBDIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICMgU2VlICdpMzg2JyBjYXNlCisgICAgICAgICAgICBpZiBzeXMubWF4c2l6ZSA+PSAyKiozMjoKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3BwYzY0JworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3BwYycKKworICAgIHJldHVybiAob3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKQpkaWZmIC0tZ2l0IGEvTGliL19weWlvLnB5IGIvTGliL19weWlvLnB5CmluZGV4IGEyZmFlYjMuLjM4N2M1ODUgMTAwNjQ0Ci0tLSBhL0xpYi9fcHlpby5weQorKysgYi9MaWIvX3B5aW8ucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCBhYmMKIGltcG9ydCBjb2RlY3MKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGVycm5vCiAjIEltcG9ydCBfdGhyZWFkIGluc3RlYWQgb2YgdGhyZWFkaW5nIHRvIHJlZHVjZSBzdGFydHVwIGNvc3QKIHRyeToKQEAgLTE1LDcgKzE0LDExIEBACiAKIGltcG9ydCBpbwogZnJvbSBpbyBpbXBvcnQgKF9fYWxsX18sIFNFRUtfU0VULCBTRUVLX0NVUiwgU0VFS19FTkQpCi1mcm9tIGVycm5vIGltcG9ydCBFSU5UUgorCit2YWxpZF9zZWVrX2ZsYWdzID0gezAsIDEsIDJ9ICAjIEhhcmR3aXJlZCB2YWx1ZXMKK2lmIGhhc2F0dHIob3MsICdTRUVLX0hPTEUnKSA6CisgICAgdmFsaWRfc2Vla19mbGFncy5hZGQob3MuU0VFS19IT0xFKQorICAgIHZhbGlkX3NlZWtfZmxhZ3MuYWRkKG9zLlNFRUtfREFUQSkKIAogIyBvcGVuKCkgdXNlcyBzdF9ibGtzaXplIHdoZW5ldmVyIHdlIGNhbgogREVGQVVMVF9CVUZGRVJfU0laRSA9IDggKiAxMDI0ICAjIGJ5dGVzCkBAIC0yNCwyMCArMjcsMTIgQEAKICMgZGVmaW5lZCBpbiBpby5weS4gV2UgZG9uJ3QgdXNlIHJlYWwgaW5oZXJpdGFuY2UgdGhvdWdoLCBiZWNhdXNlIHdlIGRvbid0CiAjIHdhbnQgdG8gaW5oZXJpdCB0aGUgQyBpbXBsZW1lbnRhdGlvbnMuCiAKLQotY2xhc3MgQmxvY2tpbmdJT0Vycm9yKElPRXJyb3IpOgotCi0gICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIEkvTyB3b3VsZCBibG9jayBvbiBhIG5vbi1ibG9ja2luZyBJL08gc3RyZWFtLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm5vLCBzdHJlcnJvciwgY2hhcmFjdGVyc193cml0dGVuPTApOgotICAgICAgICBzdXBlcigpLl9faW5pdF9fKGVycm5vLCBzdHJlcnJvcikKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2hhcmFjdGVyc193cml0dGVuLCBpbnQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjaGFyYWN0ZXJzX3dyaXR0ZW4gbXVzdCBiZSBhIGludGVnZXIiKQotICAgICAgICBzZWxmLmNoYXJhY3RlcnNfd3JpdHRlbiA9IGNoYXJhY3RlcnNfd3JpdHRlbgorIyBSZWJpbmQgZm9yIGNvbXBhdGliaWxpdHkKK0Jsb2NraW5nSU9FcnJvciA9IEJsb2NraW5nSU9FcnJvcgogCiAKIGRlZiBvcGVuKGZpbGUsIG1vZGU9InIiLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLAotICAgICAgICAgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUpOgorICAgICAgICAgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKToKIAogICAgIHIiIiJPcGVuIGZpbGUgYW5kIHJldHVybiBhIHN0cmVhbS4gIFJhaXNlIElPRXJyb3IgdXBvbiBmYWlsdXJlLgogCkBAIC00NywyMSArNDIsMjIgQEAKICAgICB3cmFwcGVkLiAoSWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMgZ2l2ZW4sIGl0IGlzIGNsb3NlZCB3aGVuIHRoZQogICAgIHJldHVybmVkIEkvTyBvYmplY3QgaXMgY2xvc2VkLCB1bmxlc3MgY2xvc2VmZCBpcyBzZXQgdG8gRmFsc2UuKQogCi0gICAgbW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGUKLSAgICBpcyBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHQKLSAgICBtb2RlLiAgT3RoZXIgY29tbW9uIHZhbHVlcyBhcmUgJ3cnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmCi0gICAgaXQgYWxyZWFkeSBleGlzdHMpLCBhbmQgJ2EnIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLAotICAgIG1lYW5zIHRoYXQgYWxsIHdyaXRlcyBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZQotICAgIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuIEluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZCB0aGUKLSAgICBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudC4gKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhdwotICAgIGJ5dGVzIHVzZSBiaW5hcnkgbW9kZSBhbmQgbGVhdmUgZW5jb2RpbmcgdW5zcGVjaWZpZWQuKSBUaGUgYXZhaWxhYmxlCi0gICAgbW9kZXMgYXJlOgorICAgIG1vZGUgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlIGlzCisgICAgb3BlbmVkLiBJdCBkZWZhdWx0cyB0byAncicgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0IG1vZGUuIE90aGVyCisgICAgY29tbW9uIHZhbHVlcyBhcmUgJ3cnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmIGl0IGFscmVhZHkKKyAgICBleGlzdHMpLCAneCcgZm9yIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvZiBhIG5ldyBmaWxlLCBhbmQgJ2EnIGZvciBhcHBlbmRpbmcKKyAgICAod2hpY2ggb24gc29tZSBVbml4IHN5c3RlbXMsIG1lYW5zIHRoYXQgYWxsIHdyaXRlcyBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUKKyAgICBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuIEluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMKKyAgICBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudC4gKEZvciByZWFkaW5nIGFuZAorICAgIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZSBiaW5hcnkgbW9kZSBhbmQgbGVhdmUgZW5jb2RpbmcgdW5zcGVjaWZpZWQuKSBUaGUKKyAgICBhdmFpbGFibGUgbW9kZXMgYXJlOgogCiAgICAgPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIENoYXJhY3RlciBNZWFuaW5nCiAgICAgLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICdyJyAgICAgICBvcGVuIGZvciByZWFkaW5nIChkZWZhdWx0KQogICAgICd3JyAgICAgICBvcGVuIGZvciB3cml0aW5nLCB0cnVuY2F0aW5nIHRoZSBmaWxlIGZpcnN0CisgICAgJ3gnICAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIGFuZCBvcGVuIGl0IGZvciB3cml0aW5nCiAgICAgJ2EnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIGFwcGVuZGluZyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIGl0IGV4aXN0cwogICAgICdiJyAgICAgICBiaW5hcnkgbW9kZQogICAgICd0JyAgICAgICB0ZXh0IG1vZGUgKGRlZmF1bHQpCkBAIC03Miw3ICs2OCw4IEBACiAKICAgICBUaGUgZGVmYXVsdCBtb2RlIGlzICdydCcgKG9wZW4gZm9yIHJlYWRpbmcgdGV4dCkuIEZvciBiaW5hcnkgcmFuZG9tCiAgICAgYWNjZXNzLCB0aGUgbW9kZSAndytiJyBvcGVucyBhbmQgdHJ1bmNhdGVzIHRoZSBmaWxlIHRvIDAgYnl0ZXMsIHdoaWxlCi0gICAgJ3IrYicgb3BlbnMgdGhlIGZpbGUgd2l0aG91dCB0cnVuY2F0aW9uLgorICAgICdyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlICd4JyBtb2RlIGltcGxpZXMgJ3cnIGFuZAorICAgIHJhaXNlcyBhbiBgRmlsZUV4aXN0c0Vycm9yYCBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cy4KIAogICAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZmlsZXMgb3BlbmVkIGluIGJpbmFyeSBhbmQgdGV4dCBtb2RlcywKICAgICBldmVuIHdoZW4gdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBkb2Vzbid0LiBGaWxlcyBvcGVuZWQgaW4KQEAgLTEzMiw2ICsxMjksMTIgQEAKICAgICBiZSBrZXB0IG9wZW4gd2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuIFRoaXMgZG9lcyBub3Qgd29yayB3aGVuIGEgZmlsZSBuYW1lIGlzCiAgICAgZ2l2ZW4gYW5kIG11c3QgYmUgVHJ1ZSBpbiB0aGF0IGNhc2UuCiAKKyAgICBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUKKyAgICB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZworICAgICpvcGVuZXIqIHdpdGggKCpmaWxlKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZQorICAgIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0bworICAgIHBhc3NpbmcgTm9uZSkuCisKICAgICBvcGVuKCkgcmV0dXJucyBhIGZpbGUgb2JqZWN0IHdob3NlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbW9kZSwgYW5kCiAgICAgdGhyb3VnaCB3aGljaCB0aGUgc3RhbmRhcmQgZmlsZSBvcGVyYXRpb25zIHN1Y2ggYXMgcmVhZGluZyBhbmQgd3JpdGluZwogICAgIGFyZSBwZXJmb3JtZWQuIFdoZW4gb3BlbigpIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0IG1vZGUgKCd3JywKQEAgLTE1Nyw4ICsxNjAsOSBAQAogICAgIGlmIGVycm9ycyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UoZXJyb3JzLCBzdHIpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgZXJyb3JzOiAlciIgJSBlcnJvcnMpCiAgICAgbW9kZXMgPSBzZXQobW9kZSkKLSAgICBpZiBtb2RlcyAtIHNldCgiYXJ3Yit0VSIpIG9yIGxlbihtb2RlKSA+IGxlbihtb2Rlcyk6CisgICAgaWYgbW9kZXMgLSBzZXQoImF4cndiK3RVIikgb3IgbGVuKG1vZGUpID4gbGVuKG1vZGVzKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBtb2RlOiAlciIgJSBtb2RlKQorICAgIGNyZWF0aW5nID0gIngiIGluIG1vZGVzCiAgICAgcmVhZGluZyA9ICJyIiBpbiBtb2RlcwogICAgIHdyaXRpbmcgPSAidyIgaW4gbW9kZXMKICAgICBhcHBlbmRpbmcgPSAiYSIgaW4gbW9kZXMKQEAgLTE2NiwxNCArMTcwLDE0IEBACiAgICAgdGV4dCA9ICJ0IiBpbiBtb2RlcwogICAgIGJpbmFyeSA9ICJiIiBpbiBtb2RlcwogICAgIGlmICJVIiBpbiBtb2RlczoKLSAgICAgICAgaWYgd3JpdGluZyBvciBhcHBlbmRpbmc6CisgICAgICAgIGlmIGNyZWF0aW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgdXNlIFUgYW5kIHdyaXRpbmcgbW9kZSBhdCBvbmNlIikKICAgICAgICAgcmVhZGluZyA9IFRydWUKICAgICBpZiB0ZXh0IGFuZCBiaW5hcnk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IGhhdmUgdGV4dCBhbmQgYmluYXJ5IG1vZGUgYXQgb25jZSIpCi0gICAgaWYgcmVhZGluZyArIHdyaXRpbmcgKyBhcHBlbmRpbmcgPiAxOgorICAgIGlmIGNyZWF0aW5nICsgcmVhZGluZyArIHdyaXRpbmcgKyBhcHBlbmRpbmcgPiAxOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCBoYXZlIHJlYWQvd3JpdGUvYXBwZW5kIG1vZGUgYXQgb25jZSIpCi0gICAgaWYgbm90IChyZWFkaW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nKToKKyAgICBpZiBub3QgKGNyZWF0aW5nIG9yIHJlYWRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmcpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgcmVhZC93cml0ZS9hcHBlbmQgbW9kZSIpCiAgICAgaWYgYmluYXJ5IGFuZCBlbmNvZGluZyBpcyBub3QgTm9uZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYmluYXJ5IG1vZGUgZG9lc24ndCB0YWtlIGFuIGVuY29kaW5nIGFyZ3VtZW50IikKQEAgLTE4MiwxMSArMTg2LDEyIEBACiAgICAgaWYgYmluYXJ5IGFuZCBuZXdsaW5lIGlzIG5vdCBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYSBuZXdsaW5lIGFyZ3VtZW50IikKICAgICByYXcgPSBGaWxlSU8oZmlsZSwKKyAgICAgICAgICAgICAgICAgKGNyZWF0aW5nIGFuZCAieCIgb3IgIiIpICsKICAgICAgICAgICAgICAgICAgKHJlYWRpbmcgYW5kICJyIiBvciAiIikgKwogICAgICAgICAgICAgICAgICAod3JpdGluZyBhbmQgInciIG9yICIiKSArCiAgICAgICAgICAgICAgICAgIChhcHBlbmRpbmcgYW5kICJhIiBvciAiIikgKwogICAgICAgICAgICAgICAgICAodXBkYXRpbmcgYW5kICIrIiBvciAiIiksCi0gICAgICAgICAgICAgICAgIGNsb3NlZmQpCisgICAgICAgICAgICAgICAgIGNsb3NlZmQsIG9wZW5lcj1vcGVuZXIpCiAgICAgbGluZV9idWZmZXJpbmcgPSBGYWxzZQogICAgIGlmIGJ1ZmZlcmluZyA9PSAxIG9yIGJ1ZmZlcmluZyA8IDAgYW5kIHJhdy5pc2F0dHkoKToKICAgICAgICAgYnVmZmVyaW5nID0gLTEKQEAgLTIwOCw3ICsyMTMsNyBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCBoYXZlIHVuYnVmZmVyZWQgdGV4dCBJL08iKQogICAgIGlmIHVwZGF0aW5nOgogICAgICAgICBidWZmZXIgPSBCdWZmZXJlZFJhbmRvbShyYXcsIGJ1ZmZlcmluZykKLSAgICBlbGlmIHdyaXRpbmcgb3IgYXBwZW5kaW5nOgorICAgIGVsaWYgY3JlYXRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmc6CiAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlcmVkV3JpdGVyKHJhdywgYnVmZmVyaW5nKQogICAgIGVsaWYgcmVhZGluZzoKICAgICAgICAgYnVmZmVyID0gQnVmZmVyZWRSZWFkZXIocmF3LCBidWZmZXJpbmcpCkBAIC0zMDUsNiArMzEwLDcgQEAKICAgICAgICAgKiAwIC0tIHN0YXJ0IG9mIHN0cmVhbSAodGhlIGRlZmF1bHQpOyBvZmZzZXQgc2hvdWxkIGJlIHplcm8gb3IgcG9zaXRpdmUKICAgICAgICAgKiAxIC0tIGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uOyBvZmZzZXQgbWF5IGJlIG5lZ2F0aXZlCiAgICAgICAgICogMiAtLSBlbmQgb2Ygc3RyZWFtOyBvZmZzZXQgaXMgdXN1YWxseSBuZWdhdGl2ZQorICAgICAgICBTb21lIG9wZXJhdGluZyBzeXN0ZW1zIC8gZmlsZSBzeXN0ZW1zIGNvdWxkIHByb3ZpZGUgYWRkaXRpb25hbCB2YWx1ZXMuCiAKICAgICAgICAgUmV0dXJuIGFuIGludCBpbmRpY2F0aW5nIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uCiAgICAgICAgICIiIgpAQCAtODY1LDcgKzg3MSw3IEBACiAgICAgICAgIGVsaWYgd2hlbmNlID09IDI6CiAgICAgICAgICAgICBzZWxmLl9wb3MgPSBtYXgoMCwgbGVuKHNlbGYuX2J1ZmZlcikgKyBwb3MpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSB2YWx1ZSIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB3aGVuY2UgdmFsdWUiKQogICAgICAgICByZXR1cm4gc2VsZi5fcG9zCiAKICAgICBkZWYgdGVsbChzZWxmKToKQEAgLTk0OCwxNSArOTU0LDE5IEBACiAgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciB3aGVuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBpcyB1bnNwZWNpZmllZC4KICAgICAgICAgaWYgbiBpcyBOb25lIG9yIG4gPT0gLTE6CiAgICAgICAgICAgICBzZWxmLl9yZXNldF9yZWFkX2J1ZigpCisgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYucmF3LCAncmVhZGFsbCcpOgorICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yYXcucmVhZGFsbCgpCisgICAgICAgICAgICAgICAgaWYgY2h1bmsgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1Zltwb3M6XSBvciBOb25lCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1Zltwb3M6XSArIGNodW5rCiAgICAgICAgICAgICBjaHVua3MgPSBbYnVmW3BvczpdXSAgIyBTdHJpcCB0aGUgY29uc3VtZWQgYnl0ZXMuCiAgICAgICAgICAgICBjdXJyZW50X3NpemUgPSAwCiAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICMgUmVhZCB1bnRpbCBFT0Ygb3IgdW50aWwgcmVhZCgpIHdvdWxkIGJsb2NrLgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBjaHVuayBpbiBlbXB0eV92YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgIG5vZGF0YV92YWwgPSBjaHVuawpAQCAtOTc4LDkgKzk4OCw3IEBACiAgICAgICAgIHdoaWxlIGF2YWlsIDwgbjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWQod2FudGVkKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGNodW5rIGluIGVtcHR5X3ZhbHVlczoKICAgICAgICAgICAgICAgICBub2RhdGFfdmFsID0gY2h1bmsKQEAgLTEwMTMsOSArMTAyMSw3IEBACiAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IHNlbGYucmF3LnJlYWQodG9fcmVhZCkKLSAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaWYgY3VycmVudDoKQEAgLTEwNDAsNyArMTA0Niw3IEBACiAgICAgICAgIHJldHVybiBfQnVmZmVyZWRJT01peGluLnRlbGwoc2VsZikgLSBsZW4oc2VsZi5fcmVhZF9idWYpICsgc2VsZi5fcmVhZF9wb3MKIAogICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPTApOgotICAgICAgICBpZiBub3QgKDAgPD0gd2hlbmNlIDw9IDIpOgorICAgICAgICBpZiB3aGVuY2Ugbm90IGluIHZhbGlkX3NlZWtfZmxhZ3M6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSB2YWx1ZSIpCiAgICAgICAgIHdpdGggc2VsZi5fcmVhZF9sb2NrOgogICAgICAgICAgICAgaWYgd2hlbmNlID09IDE6CkBAIC0xMDU4LDE5ICsxMDY0LDEzIEBACiAgICAgREVGQVVMVF9CVUZGRVJfU0laRS4KICAgICAiIiIKIAotICAgIF93YXJuaW5nX3N0YWNrX29mZnNldCA9IDIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXcsCi0gICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUsIG1heF9idWZmZXJfc2l6ZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKToKICAgICAgICAgaWYgbm90IHJhdy53cml0YWJsZSgpOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignInJhdyIgYXJndW1lbnQgbXVzdCBiZSB3cml0YWJsZS4nKQogCiAgICAgICAgIF9CdWZmZXJlZElPTWl4aW4uX19pbml0X18oc2VsZiwgcmF3KQogICAgICAgICBpZiBidWZmZXJfc2l6ZSA8PSAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBidWZmZXIgc2l6ZSIpCi0gICAgICAgIGlmIG1heF9idWZmZXJfc2l6ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIm1heF9idWZmZXJfc2l6ZSBpcyBkZXByZWNhdGVkIiwgRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93YXJuaW5nX3N0YWNrX29mZnNldCkKICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplCiAgICAgICAgIHNlbGYuX3dyaXRlX2J1ZiA9IGJ5dGVhcnJheSgpCiAgICAgICAgIHNlbGYuX3dyaXRlX2xvY2sgPSBMb2NrKCkKQEAgLTExMjAsMTMgKzExMjAsMTEgQEAKICAgICAgICAgd2hpbGUgc2VsZi5fd3JpdGVfYnVmOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG4gPSBzZWxmLnJhdy53cml0ZShzZWxmLl93cml0ZV9idWYpCisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInNlbGYucmF3IHNob3VsZCBpbXBsZW1lbnQgUmF3SU9CYXNlOiBpdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGQgbm90IHJhaXNlIEJsb2NraW5nSU9FcnJvciIpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIG4gaXMgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBCbG9ja2luZ0lPRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIGVycm5vLkVBR0FJTiwKQEAgLTExMzksOCArMTEzNyw4IEBACiAgICAgICAgIHJldHVybiBfQnVmZmVyZWRJT01peGluLnRlbGwoc2VsZikgKyBsZW4oc2VsZi5fd3JpdGVfYnVmKQogCiAgICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9MCk6Ci0gICAgICAgIGlmIG5vdCAoMCA8PSB3aGVuY2UgPD0gMik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSIpCisgICAgICAgIGlmIHdoZW5jZSBub3QgaW4gdmFsaWRfc2Vla19mbGFnczoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIHZhbHVlIikKICAgICAgICAgd2l0aCBzZWxmLl93cml0ZV9sb2NrOgogICAgICAgICAgICAgc2VsZi5fZmx1c2hfdW5sb2NrZWQoKQogICAgICAgICAgICAgcmV0dXJuIF9CdWZmZXJlZElPTWl4aW4uc2VlayhzZWxmLCBwb3MsIHdoZW5jZSkKQEAgLTExNjIsMTUgKzExNjAsMTEgQEAKICAgICAjIFhYWCBUaGUgdXNlZnVsbmVzcyBvZiB0aGlzIChjb21wYXJlZCB0byBoYXZpbmcgdHdvIHNlcGFyYXRlIElPCiAgICAgIyBvYmplY3RzKSBpcyBxdWVzdGlvbmFibGUuCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZGVyLCB3cml0ZXIsCi0gICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUsIG1heF9idWZmZXJfc2l6ZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZGVyLCB3cml0ZXIsIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUpOgogICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KIAogICAgICAgICBUaGUgYXJndW1lbnRzIGFyZSB0d28gUmF3SU8gaW5zdGFuY2VzLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbWF4X2J1ZmZlcl9zaXplIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigibWF4X2J1ZmZlcl9zaXplIGlzIGRlcHJlY2F0ZWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0KICAgICAgICAgaWYgbm90IHJlYWRlci5yZWFkYWJsZSgpOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignInJlYWRlciIgYXJndW1lbnQgbXVzdCBiZSByZWFkYWJsZS4nKQogCkBAIC0xMjI3LDE3ICsxMjIxLDE0IEBACiAgICAgZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS4KICAgICAiIiIKIAotICAgIF93YXJuaW5nX3N0YWNrX29mZnNldCA9IDMKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXcsCi0gICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUsIG1heF9idWZmZXJfc2l6ZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKToKICAgICAgICAgcmF3Ll9jaGVja1NlZWthYmxlKCkKICAgICAgICAgQnVmZmVyZWRSZWFkZXIuX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSkKLSAgICAgICAgQnVmZmVyZWRXcml0ZXIuX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSwgbWF4X2J1ZmZlcl9zaXplKQorICAgICAgICBCdWZmZXJlZFdyaXRlci5fX2luaXRfXyhzZWxmLCByYXcsIGJ1ZmZlcl9zaXplKQogCiAgICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9MCk6Ci0gICAgICAgIGlmIG5vdCAoMCA8PSB3aGVuY2UgPD0gMik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSIpCisgICAgICAgIGlmIHdoZW5jZSBub3QgaW4gdmFsaWRfc2Vla19mbGFnczoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIHZhbHVlIikKICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgIGlmIHNlbGYuX3JlYWRfYnVmOgogICAgICAgICAgICAgIyBVbmRvIHJlYWQgYWhlYWQuCkBAIC0xNDQ5LDcgKzE0NDAsNyBAQAogICAgIHIiIiJDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLgogCiAgICAgZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlCi0gICAgZGVjb2RlZCBvciBlbmNvZGVkIHdpdGguIEl0IGRlZmF1bHRzIHRvIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZy4KKyAgICBkZWNvZGVkIG9yIGVuY29kZWQgd2l0aC4gSXQgZGVmYXVsdHMgdG8gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKS4KIAogICAgIGVycm9ycyBkZXRlcm1pbmVzIHRoZSBzdHJpY3RuZXNzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc2VlIHRoZQogICAgIGNvZGVjcy5yZWdpc3RlcikgYW5kIGRlZmF1bHRzIHRvICJzdHJpY3QiLgpAQCAtMTQ3MCw2ICsxNDYxLDkgQEAKIAogICAgIF9DSFVOS19TSVpFID0gMjA0OAogCisgICAgIyBUaGUgd3JpdGVfdGhyb3VnaCBhcmd1bWVudCBoYXMgbm8gZWZmZWN0IGhlcmUgc2luY2UgdGhpcworICAgICMgaW1wbGVtZW50YXRpb24gYWx3YXlzIHdyaXRlcyB0aHJvdWdoLiAgVGhlIGFyZ3VtZW50IGlzIHByZXNlbnQgb25seQorICAgICMgc28gdGhhdCB0aGUgc2lnbmF0dXJlIGNhbiBtYXRjaCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBDIHZlcnNpb24uCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJ1ZmZlciwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwKICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmc9RmFsc2UsIHdyaXRlX3Rocm91Z2g9RmFsc2UpOgogICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShuZXdsaW5lLCBzdHIpOgpAQCAtMTQ4OCw3ICsxNDgyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyBJbXBvcnRpbmcgbG9jYWxlIG1heSBmYWlsIGlmIFB5dGhvbiBpcyBiZWluZyBidWlsdAogICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9ICJhc2NpaSIKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQogCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVuY29kaW5nLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBlbmNvZGluZzogJXIiICUgZW5jb2RpbmcpCkBAIC0xNTE1LDYgKzE1MDksNyBAQAogICAgICAgICBzZWxmLl9zbmFwc2hvdCA9IE5vbmUgICMgaW5mbyBmb3IgcmVjb25zdHJ1Y3RpbmcgZGVjb2RlciBzdGF0ZQogICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IHNlbGYuX3RlbGxpbmcgPSBzZWxmLmJ1ZmZlci5zZWVrYWJsZSgpCiAgICAgICAgIHNlbGYuX2hhc19yZWFkMSA9IGhhc2F0dHIoc2VsZi5idWZmZXIsICdyZWFkMScpCisgICAgICAgIHNlbGYuX2IyY3JhdGlvID0gMC4wCiAKICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGUgYW5kIHNlbGYud3JpdGFibGUoKToKICAgICAgICAgICAgIHBvc2l0aW9uID0gc2VsZi5idWZmZXIudGVsbCgpCkBAIC0xNjg1LDcgKzE2ODAsMTIgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlucHV0X2NodW5rID0gc2VsZi5idWZmZXIucmVhZChzZWxmLl9DSFVOS19TSVpFKQogICAgICAgICBlb2YgPSBub3QgaW5wdXRfY2h1bmsKLSAgICAgICAgc2VsZi5fc2V0X2RlY29kZWRfY2hhcnMoc2VsZi5fZGVjb2Rlci5kZWNvZGUoaW5wdXRfY2h1bmssIGVvZikpCisgICAgICAgIGRlY29kZWRfY2hhcnMgPSBzZWxmLl9kZWNvZGVyLmRlY29kZShpbnB1dF9jaHVuaywgZW9mKQorICAgICAgICBzZWxmLl9zZXRfZGVjb2RlZF9jaGFycyhkZWNvZGVkX2NoYXJzKQorICAgICAgICBpZiBkZWNvZGVkX2NoYXJzOgorICAgICAgICAgICAgc2VsZi5fYjJjcmF0aW8gPSBsZW4oaW5wdXRfY2h1bmspIC8gbGVuKHNlbGYuX2RlY29kZWRfY2hhcnMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9iMmNyYXRpbyA9IDAuMAogCiAgICAgICAgIGlmIHNlbGYuX3RlbGxpbmc6CiAgICAgICAgICAgICAjIEF0IHRoZSBzbmFwc2hvdCBwb2ludCwgbGVuKGRlY19idWZmZXIpIGJ5dGVzIGJlZm9yZSB0aGUgcmVhZCwKQEAgLTE3MzksMjAgKzE3MzksNTYgQEAKICAgICAgICAgIyBmb3J3YXJkIHVudGlsIGl0IGdpdmVzIHVzIGVub3VnaCBkZWNvZGVkIGNoYXJhY3RlcnMuCiAgICAgICAgIHNhdmVkX3N0YXRlID0gZGVjb2Rlci5nZXRzdGF0ZSgpCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRmFzdCBzZWFyY2ggZm9yIGFuIGFjY2VwdGFibGUgc3RhcnQgcG9pbnQsIGNsb3NlIHRvIG91cgorICAgICAgICAgICAgIyBjdXJyZW50IHBvcy4KKyAgICAgICAgICAgICMgUmF0aW9uYWxlOiBjYWxsaW5nIGRlY29kZXIuZGVjb2RlKCkgaGFzIGEgbGFyZ2Ugb3ZlcmhlYWQKKyAgICAgICAgICAgICMgcmVnYXJkbGVzcyBvZiBjaHVuayBzaXplOyB3ZSB3YW50IHRoZSBudW1iZXIgb2Ygc3VjaCBjYWxscyB0bworICAgICAgICAgICAgIyBiZSBPKDEpIGluIG1vc3Qgc2l0dWF0aW9ucyAoY29tbW9uIGRlY29kZXJzLCBub24tY3JhenkgaW5wdXQpLgorICAgICAgICAgICAgIyBBY3R1YWxseSwgaXQgd2lsbCBiZSBleGFjdGx5IDEgZm9yIGZpeGVkLXNpemUgY29kZWNzIChhbGwKKyAgICAgICAgICAgICMgOC1iaXQgY29kZWNzLCBhbHNvIFVURi0xNiBhbmQgVVRGLTMyKS4KKyAgICAgICAgICAgIHNraXBfYnl0ZXMgPSBpbnQoc2VsZi5fYjJjcmF0aW8gKiBjaGFyc190b19za2lwKQorICAgICAgICAgICAgc2tpcF9iYWNrID0gMQorICAgICAgICAgICAgYXNzZXJ0IHNraXBfYnl0ZXMgPD0gbGVuKG5leHRfaW5wdXQpCisgICAgICAgICAgICB3aGlsZSBza2lwX2J5dGVzID4gMDoKKyAgICAgICAgICAgICAgICBkZWNvZGVyLnNldHN0YXRlKChiJycsIGRlY19mbGFncykpCisgICAgICAgICAgICAgICAgIyBEZWNvZGUgdXAgdG8gdGVtcHRhdGl2ZSBzdGFydCBwb2ludAorICAgICAgICAgICAgICAgIG4gPSBsZW4oZGVjb2Rlci5kZWNvZGUobmV4dF9pbnB1dFs6c2tpcF9ieXRlc10pKQorICAgICAgICAgICAgICAgIGlmIG4gPD0gY2hhcnNfdG9fc2tpcDoKKyAgICAgICAgICAgICAgICAgICAgYiwgZCA9IGRlY29kZXIuZ2V0c3RhdGUoKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQmVmb3JlIHBvcyBhbmQgbm8gYnl0ZXMgYnVmZmVyZWQgaW4gZGVjb2RlciA9PiBPSworICAgICAgICAgICAgICAgICAgICAgICAgZGVjX2ZsYWdzID0gZAorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNfdG9fc2tpcCAtPSBuCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAjIFNraXAgYmFjayBieSBidWZmZXJlZCBhbW91bnQgYW5kIHJlc2V0IGhldXJpc3RpYworICAgICAgICAgICAgICAgICAgICBza2lwX2J5dGVzIC09IGxlbihiKQorICAgICAgICAgICAgICAgICAgICBza2lwX2JhY2sgPSAxCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSdyZSB0b28gZmFyIGFoZWFkLCBza2lwIGJhY2sgYSBiaXQKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9ieXRlcyAtPSBza2lwX2JhY2sKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9iYWNrID0gc2tpcF9iYWNrICogMgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBza2lwX2J5dGVzID0gMAorICAgICAgICAgICAgICAgIGRlY29kZXIuc2V0c3RhdGUoKGInJywgZGVjX2ZsYWdzKSkKKwogICAgICAgICAgICAgIyBOb3RlIG91ciBpbml0aWFsIHN0YXJ0IHBvaW50LgotICAgICAgICAgICAgZGVjb2Rlci5zZXRzdGF0ZSgoYicnLCBkZWNfZmxhZ3MpKQotICAgICAgICAgICAgc3RhcnRfcG9zID0gcG9zaXRpb24KLSAgICAgICAgICAgIHN0YXJ0X2ZsYWdzLCBieXRlc19mZWQsIGNoYXJzX2RlY29kZWQgPSBkZWNfZmxhZ3MsIDAsIDAKLSAgICAgICAgICAgIG5lZWRfZW9mID0gMAorICAgICAgICAgICAgc3RhcnRfcG9zID0gcG9zaXRpb24gKyBza2lwX2J5dGVzCisgICAgICAgICAgICBzdGFydF9mbGFncyA9IGRlY19mbGFncworICAgICAgICAgICAgaWYgY2hhcnNfdG9fc2tpcCA9PSAwOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZW4ndCBtb3ZlZCBmcm9tIHRoZSBzdGFydCBwb2ludC4KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFja19jb29raWUoc3RhcnRfcG9zLCBzdGFydF9mbGFncykKIAogICAgICAgICAgICAgIyBGZWVkIHRoZSBkZWNvZGVyIG9uZSBieXRlIGF0IGEgdGltZS4gIEFzIHdlIGdvLCBub3RlIHRoZQogICAgICAgICAgICAgIyBuZWFyZXN0ICJzYWZlIHN0YXJ0IHBvaW50IiBiZWZvcmUgdGhlIGN1cnJlbnQgbG9jYXRpb24KICAgICAgICAgICAgICMgKGEgcG9pbnQgd2hlcmUgdGhlIGRlY29kZXIgaGFzIG5vdGhpbmcgYnVmZmVyZWQsIHNvIHNlZWsoKQogICAgICAgICAgICAgIyBjYW4gc2FmZWx5IHN0YXJ0IGZyb20gdGhlcmUgYW5kIGFkdmFuY2UgdG8gdGhpcyBsb2NhdGlvbikuCi0gICAgICAgICAgICBuZXh0X2J5dGUgPSBieXRlYXJyYXkoMSkKLSAgICAgICAgICAgIGZvciBuZXh0X2J5dGVbMF0gaW4gbmV4dF9pbnB1dDoKKyAgICAgICAgICAgIGJ5dGVzX2ZlZCA9IDAKKyAgICAgICAgICAgIG5lZWRfZW9mID0gMAorICAgICAgICAgICAgIyBDaGFycyBkZWNvZGVkIHNpbmNlIGBzdGFydF9wb3NgCisgICAgICAgICAgICBjaGFyc19kZWNvZGVkID0gMAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2tpcF9ieXRlcywgbGVuKG5leHRfaW5wdXQpKToKICAgICAgICAgICAgICAgICBieXRlc19mZWQgKz0gMQotICAgICAgICAgICAgICAgIGNoYXJzX2RlY29kZWQgKz0gbGVuKGRlY29kZXIuZGVjb2RlKG5leHRfYnl0ZSkpCisgICAgICAgICAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBsZW4oZGVjb2Rlci5kZWNvZGUobmV4dF9pbnB1dFtpOmkrMV0pKQogICAgICAgICAgICAgICAgIGRlY19idWZmZXIsIGRlY19mbGFncyA9IGRlY29kZXIuZ2V0c3RhdGUoKQogICAgICAgICAgICAgICAgIGlmIG5vdCBkZWNfYnVmZmVyIGFuZCBjaGFyc19kZWNvZGVkIDw9IGNoYXJzX3RvX3NraXA6CiAgICAgICAgICAgICAgICAgICAgICMgRGVjb2RlciBidWZmZXIgaXMgZW1wdHksIHNvIHRoaXMgaXMgYSBzYWZlIHN0YXJ0IHBvaW50LgpAQCAtMTgxMSw4ICsxODQ3LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9kZWNvZGVyLnJlc2V0KCkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbgogICAgICAgICBpZiB3aGVuY2UgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlICglciwgc2hvdWxkIGJlIDAsIDEgb3IgMikiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW5jZSwpKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQgd2hlbmNlICglcikiICUgKHdoZW5jZSwpKQogICAgICAgICBpZiBjb29raWUgPCAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibmVnYXRpdmUgc2VlayBwb3NpdGlvbiAlciIgJSAoY29va2llLCkpCiAgICAgICAgIHNlbGYuZmx1c2goKQpkaWZmIC0tZ2l0IGEvTGliL19zdHJwdGltZS5weSBiL0xpYi9fc3RycHRpbWUucHkKaW5kZXggZmEwNjM3Ni4uYjBjZDNkNiAxMDA2NDQKLS0tIGEvTGliL19zdHJwdGltZS5weQorKysgYi9MaWIvX3N0cnB0aW1lLnB5CkBAIC00ODYsMTkgKzQ4NiwxOSBAQAogCiAgICAgcmV0dXJuICh5ZWFyLCBtb250aCwgZGF5LAogICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsCi0gICAgICAgICAgICB3ZWVrZGF5LCBqdWxpYW4sIHR6LCBnbXRvZmYsIHR6bmFtZSksIGZyYWN0aW9uCisgICAgICAgICAgICB3ZWVrZGF5LCBqdWxpYW4sIHR6LCB0em5hbWUsIGdtdG9mZiksIGZyYWN0aW9uCiAKIGRlZiBfc3RycHRpbWVfdGltZShkYXRhX3N0cmluZywgZm9ybWF0PSIlYSAlYiAlZCAlSDolTTolUyAlWSIpOgogICAgICIiIlJldHVybiBhIHRpbWUgc3RydWN0IGJhc2VkIG9uIHRoZSBpbnB1dCBzdHJpbmcgYW5kIHRoZQogICAgIGZvcm1hdCBzdHJpbmcuIiIiCiAgICAgdHQgPSBfc3RycHRpbWUoZGF0YV9zdHJpbmcsIGZvcm1hdClbMF0KLSAgICByZXR1cm4gdGltZS5zdHJ1Y3RfdGltZSh0dFs6OV0pCisgICAgcmV0dXJuIHRpbWUuc3RydWN0X3RpbWUodHRbOnRpbWUuX1NUUlVDVF9UTV9JVEVNU10pCiAKIGRlZiBfc3RycHRpbWVfZGF0ZXRpbWUoY2xzLCBkYXRhX3N0cmluZywgZm9ybWF0PSIlYSAlYiAlZCAlSDolTTolUyAlWSIpOgogICAgICIiIlJldHVybiBhIGNsYXNzIGNscyBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5wdXQgc3RyaW5nIGFuZCB0aGUKICAgICBmb3JtYXQgc3RyaW5nLiIiIgogICAgIHR0LCBmcmFjdGlvbiA9IF9zdHJwdGltZShkYXRhX3N0cmluZywgZm9ybWF0KQotICAgIGdtdG9mZiwgdHpuYW1lID0gdHRbLTI6XQorICAgIHR6bmFtZSwgZ210b2ZmID0gdHRbLTI6XQogICAgIGFyZ3MgPSB0dFs6Nl0gKyAoZnJhY3Rpb24sKQogICAgIGlmIGdtdG9mZiBpcyBub3QgTm9uZToKICAgICAgICAgdHpkZWx0YSA9IGRhdGV0aW1lX3RpbWVkZWx0YShzZWNvbmRzPWdtdG9mZikKZGlmZiAtLWdpdCBhL0xpYi9hYmMucHkgYi9MaWIvYWJjLnB5CmluZGV4IGE2YzJkYzQuLjA5Nzc4ZTggMTAwNjQ0Ci0tLSBhL0xpYi9hYmMucHkKKysrIGIvTGliL2FiYy5weQpAQCAtMjYsNyArMjYsOCBAQAogCiAKIGNsYXNzIGFic3RyYWN0Y2xhc3NtZXRob2QoY2xhc3NtZXRob2QpOgotICAgICIiIkEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgY2xhc3NtZXRob2RzLgorICAgICIiIgorICAgIEEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgY2xhc3NtZXRob2RzLgogCiAgICAgU2ltaWxhciB0byBhYnN0cmFjdG1ldGhvZC4KIApAQCAtMzYsNiArMzcsOSBAQAogICAgICAgICAgICAgQGFic3RyYWN0Y2xhc3NtZXRob2QKICAgICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9jbGFzc21ldGhvZChjbHMsIC4uLik6CiAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAnYWJzdHJhY3RjbGFzc21ldGhvZCcgaXMgZGVwcmVjYXRlZC4gVXNlICdjbGFzc21ldGhvZCcgd2l0aAorICAgICdhYnN0cmFjdG1ldGhvZCcgaW5zdGVhZC4KICAgICAiIiIKIAogICAgIF9faXNhYnN0cmFjdG1ldGhvZF9fID0gVHJ1ZQpAQCAtNDYsNyArNTAsOCBAQAogCiAKIGNsYXNzIGFic3RyYWN0c3RhdGljbWV0aG9kKHN0YXRpY21ldGhvZCk6Ci0gICAgIiIiQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBzdGF0aWNtZXRob2RzLgorICAgICIiIgorICAgIEEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3Qgc3RhdGljbWV0aG9kcy4KIAogICAgIFNpbWlsYXIgdG8gYWJzdHJhY3RtZXRob2QuCiAKQEAgLTU2LDYgKzYxLDkgQEAKICAgICAgICAgICAgIEBhYnN0cmFjdHN0YXRpY21ldGhvZAogICAgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3N0YXRpY21ldGhvZCguLi4pOgogICAgICAgICAgICAgICAgIC4uLgorCisgICAgJ2Fic3RyYWN0c3RhdGljbWV0aG9kJyBpcyBkZXByZWNhdGVkLiBVc2UgJ3N0YXRpY21ldGhvZCcgd2l0aAorICAgICdhYnN0cmFjdG1ldGhvZCcgaW5zdGVhZC4KICAgICAiIiIKIAogICAgIF9faXNhYnN0cmFjdG1ldGhvZF9fID0gVHJ1ZQpAQCAtNjYsNyArNzQsOCBAQAogCiAKIGNsYXNzIGFic3RyYWN0cHJvcGVydHkocHJvcGVydHkpOgotICAgICIiIkEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgcHJvcGVydGllcy4KKyAgICAiIiIKKyAgICBBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IHByb3BlcnRpZXMuCiAKICAgICBSZXF1aXJlcyB0aGF0IHRoZSBtZXRhY2xhc3MgaXMgQUJDTWV0YSBvciBkZXJpdmVkIGZyb20gaXQuICBBCiAgICAgY2xhc3MgdGhhdCBoYXMgYSBtZXRhY2xhc3MgZGVyaXZlZCBmcm9tIEFCQ01ldGEgY2Fubm90IGJlCkBAIC04OCw3ICs5NywxMSBAQAogICAgICAgICAgICAgZGVmIGdldHgoc2VsZik6IC4uLgogICAgICAgICAgICAgZGVmIHNldHgoc2VsZiwgdmFsdWUpOiAuLi4KICAgICAgICAgICAgIHggPSBhYnN0cmFjdHByb3BlcnR5KGdldHgsIHNldHgpCisKKyAgICAnYWJzdHJhY3Rwcm9wZXJ0eScgaXMgZGVwcmVjYXRlZC4gVXNlICdwcm9wZXJ0eScgd2l0aCAnYWJzdHJhY3RtZXRob2QnCisgICAgaW5zdGVhZC4KICAgICAiIiIKKwogICAgIF9faXNhYnN0cmFjdG1ldGhvZF9fID0gVHJ1ZQogCiAKQEAgLTEzMywxMSArMTQ2LDE0IEBACiAgICAgICAgIHJldHVybiBjbHMKIAogICAgIGRlZiByZWdpc3RlcihjbHMsIHN1YmNsYXNzKToKLSAgICAgICAgIiIiUmVnaXN0ZXIgYSB2aXJ0dWFsIHN1YmNsYXNzIG9mIGFuIEFCQy4iIiIKKyAgICAgICAgIiIiUmVnaXN0ZXIgYSB2aXJ0dWFsIHN1YmNsYXNzIG9mIGFuIEFCQy4KKworICAgICAgICBSZXR1cm5zIHRoZSBzdWJjbGFzcywgdG8gYWxsb3cgdXNhZ2UgYXMgYSBjbGFzcyBkZWNvcmF0b3IuCisgICAgICAgICIiIgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzdWJjbGFzcywgdHlwZSk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbiBvbmx5IHJlZ2lzdGVyIGNsYXNzZXMiKQogICAgICAgICBpZiBpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbHMpOgotICAgICAgICAgICAgcmV0dXJuICAjIEFscmVhZHkgYSBzdWJjbGFzcworICAgICAgICAgICAgcmV0dXJuIHN1YmNsYXNzICAjIEFscmVhZHkgYSBzdWJjbGFzcwogICAgICAgICAjIFN1YnRsZTogdGVzdCBmb3IgY3ljbGVzICphZnRlciogdGVzdGluZyBmb3IgImFscmVhZHkgYSBzdWJjbGFzcyI7CiAgICAgICAgICMgdGhpcyBtZWFucyB3ZSBhbGxvdyBYLnJlZ2lzdGVyKFgpIGFuZCBpbnRlcnByZXQgaXQgYXMgYSBuby1vcC4KICAgICAgICAgaWYgaXNzdWJjbGFzcyhjbHMsIHN1YmNsYXNzKToKQEAgLTE0NSw2ICsxNjEsNyBAQAogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJSZWZ1c2luZyB0byBjcmVhdGUgYW4gaW5oZXJpdGFuY2UgY3ljbGUiKQogICAgICAgICBjbHMuX2FiY19yZWdpc3RyeS5hZGQoc3ViY2xhc3MpCiAgICAgICAgIEFCQ01ldGEuX2FiY19pbnZhbGlkYXRpb25fY291bnRlciArPSAxICAjIEludmFsaWRhdGUgbmVnYXRpdmUgY2FjaGUKKyAgICAgICAgcmV0dXJuIHN1YmNsYXNzCiAKICAgICBkZWYgX2R1bXBfcmVnaXN0cnkoY2xzLCBmaWxlPU5vbmUpOgogICAgICAgICAiIiJEZWJ1ZyBoZWxwZXIgdG8gcHJpbnQgdGhlIEFCQyByZWdpc3RyeS4iIiIKZGlmZiAtLWdpdCBhL0xpYi9haWZjLnB5IGIvTGliL2FpZmMucHkKaW5kZXggNzc1ZjM5Yy4uZWM0ZjgyMiAxMDA2NDQKLS0tIGEvTGliL2FpZmMucHkKKysrIGIvTGliL2FpZmMucHkKQEAgLTEzNiw2ICsxMzYsNyBAQAogCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCB3YXJuaW5ncwogCiBfX2FsbF9fID0gWyJFcnJvciIsICJvcGVuIiwgIm9wZW5mcCJdCiAKQEAgLTQ0MCw3ICs0NDEsNyBAQAogICAgICAgICAgICAga2x1ZGdlID0gMAogICAgICAgICAgICAgaWYgY2h1bmsuY2h1bmtzaXplID09IDE4OgogICAgICAgICAgICAgICAgIGtsdWRnZSA9IDEKLSAgICAgICAgICAgICAgICBwcmludCgnV2FybmluZzogYmFkIENPTU0gY2h1bmsgc2l6ZScpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignV2FybmluZzogYmFkIENPTU0gY2h1bmsgc2l6ZScpCiAgICAgICAgICAgICAgICAgY2h1bmsuY2h1bmtzaXplID0gMjMKICAgICAgICAgICAgICNERUJVRyBlbmQKICAgICAgICAgICAgIHNlbGYuX2NvbXB0eXBlID0gY2h1bmsucmVhZCg0KQpAQCAtNDg0LDExICs0ODUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgIyBhIHBvc2l0aW9uIDAgYW5kIG5hbWUgJycKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWFya2Vycy5hcHBlbmQoKGlkLCBwb3MsIG5hbWUpKQogICAgICAgICBleGNlcHQgRU9GRXJyb3I6Ci0gICAgICAgICAgICBwcmludCgnV2FybmluZzogTUFSSyBjaHVuayBjb250YWlucyBvbmx5JywgZW5kPScgJykKLSAgICAgICAgICAgIHByaW50KGxlbihzZWxmLl9tYXJrZXJzKSwgZW5kPScgJykKLSAgICAgICAgICAgIGlmIGxlbihzZWxmLl9tYXJrZXJzKSA9PSAxOiBwcmludCgnbWFya2VyJywgZW5kPScgJykKLSAgICAgICAgICAgIGVsc2U6IHByaW50KCdtYXJrZXJzJywgZW5kPScgJykKLSAgICAgICAgICAgIHByaW50KCdpbnN0ZWFkIG9mJywgbm1hcmtlcnMpCisgICAgICAgICAgICB3ID0gKCdXYXJuaW5nOiBNQVJLIGNodW5rIGNvbnRhaW5zIG9ubHkgJXMgbWFya2VyJXMgaW5zdGVhZCBvZiAlcycgJQorICAgICAgICAgICAgICAgICAobGVuKHNlbGYuX21hcmtlcnMpLCAnJyBpZiBsZW4oc2VsZi5fbWFya2VycykgPT0gMSBlbHNlICdzJywKKyAgICAgICAgICAgICAgICAgIG5tYXJrZXJzKSkKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4odykKIAogY2xhc3MgQWlmY193cml0ZToKICAgICAjIFZhcmlhYmxlcyB1c2VkIGluIHRoaXMgY2xhc3M6CmRpZmYgLS1naXQgYS9MaWIvYXJncGFyc2UucHkgYi9MaWIvYXJncGFyc2UucHkKaW5kZXggMGVlOGMwOC4uY2MzZTM3NCAxMDA2NDQKLS0tIGEvTGliL2FyZ3BhcnNlLnB5CisrKyBiL0xpYi9hcmdwYXJzZS5weQpAQCAtNzEsNiArNzEsNyBAQAogICAgICdBcmd1bWVudERlZmF1bHRzSGVscEZvcm1hdHRlcicsCiAgICAgJ1Jhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcicsCiAgICAgJ1Jhd1RleHRIZWxwRm9ybWF0dGVyJywKKyAgICAnTWV0YXZhclR5cGVIZWxwRm9ybWF0dGVyJywKICAgICAnTmFtZXNwYWNlJywKICAgICAnQWN0aW9uJywKICAgICAnT05FX09SX01PUkUnLApAQCAtNDE5LDcgKzQyMCw4IEBACiAKICAgICAgICAgICAgICMgcHJvZHVjZSBhbGwgYXJnIHN0cmluZ3MKICAgICAgICAgICAgIGVsaWYgbm90IGFjdGlvbi5vcHRpb25fc3RyaW5nczoKLSAgICAgICAgICAgICAgICBwYXJ0ID0gc2VsZi5fZm9ybWF0X2FyZ3MoYWN0aW9uLCBhY3Rpb24uZGVzdCkKKyAgICAgICAgICAgICAgICBkZWZhdWx0ID0gc2VsZi5fZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3JfcG9zaXRpb25hbChhY3Rpb24pCisgICAgICAgICAgICAgICAgcGFydCA9IHNlbGYuX2Zvcm1hdF9hcmdzKGFjdGlvbiwgZGVmYXVsdCkKIAogICAgICAgICAgICAgICAgICMgaWYgaXQncyBpbiBhIGdyb3VwLCBzdHJpcCB0aGUgb3V0ZXIgW10KICAgICAgICAgICAgICAgICBpZiBhY3Rpb24gaW4gZ3JvdXBfYWN0aW9uczoKQEAgLTQ0MSw3ICs0NDMsNyBAQAogICAgICAgICAgICAgICAgICMgaWYgdGhlIE9wdGlvbmFsIHRha2VzIGEgdmFsdWUsIGZvcm1hdCBpczoKICAgICAgICAgICAgICAgICAjICAgIC1zIEFSR1Mgb3IgLS1sb25nIEFSR1MKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gYWN0aW9uLmRlc3QudXBwZXIoKQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gc2VsZi5fZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3Jfb3B0aW9uYWwoYWN0aW9uKQogICAgICAgICAgICAgICAgICAgICBhcmdzX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9hcmdzKGFjdGlvbiwgZGVmYXVsdCkKICAgICAgICAgICAgICAgICAgICAgcGFydCA9ICclcyAlcycgJSAob3B0aW9uX3N0cmluZywgYXJnc19zdHJpbmcpCiAKQEAgLTUyNyw3ICs1MjksOCBAQAogCiAgICAgZGVmIF9mb3JtYXRfYWN0aW9uX2ludm9jYXRpb24oc2VsZiwgYWN0aW9uKToKICAgICAgICAgaWYgbm90IGFjdGlvbi5vcHRpb25fc3RyaW5nczoKLSAgICAgICAgICAgIG1ldGF2YXIsID0gc2VsZi5fbWV0YXZhcl9mb3JtYXR0ZXIoYWN0aW9uLCBhY3Rpb24uZGVzdCkoMSkKKyAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9wb3NpdGlvbmFsKGFjdGlvbikKKyAgICAgICAgICAgIG1ldGF2YXIsID0gc2VsZi5fbWV0YXZhcl9mb3JtYXR0ZXIoYWN0aW9uLCBkZWZhdWx0KSgxKQogICAgICAgICAgICAgcmV0dXJuIG1ldGF2YXIKIAogICAgICAgICBlbHNlOgpAQCAtNTQxLDcgKzU0NCw3IEBACiAgICAgICAgICAgICAjIGlmIHRoZSBPcHRpb25hbCB0YWtlcyBhIHZhbHVlLCBmb3JtYXQgaXM6CiAgICAgICAgICAgICAjICAgIC1zIEFSR1MsIC0tbG9uZyBBUkdTCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBhY3Rpb24uZGVzdC51cHBlcigpCisgICAgICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX29wdGlvbmFsKGFjdGlvbikKICAgICAgICAgICAgICAgICBhcmdzX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9hcmdzKGFjdGlvbiwgZGVmYXVsdCkKICAgICAgICAgICAgICAgICBmb3Igb3B0aW9uX3N0cmluZyBpbiBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6CiAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgnJXMgJXMnICUgKG9wdGlvbl9zdHJpbmcsIGFyZ3Nfc3RyaW5nKSkKQEAgLTYxOSw2ICs2MjIsMTIgQEAKICAgICBkZWYgX2dldF9oZWxwX3N0cmluZyhzZWxmLCBhY3Rpb24pOgogICAgICAgICByZXR1cm4gYWN0aW9uLmhlbHAKIAorICAgIGRlZiBfZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3Jfb3B0aW9uYWwoc2VsZiwgYWN0aW9uKToKKyAgICAgICAgcmV0dXJuIGFjdGlvbi5kZXN0LnVwcGVyKCkKKworICAgIGRlZiBfZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3JfcG9zaXRpb25hbChzZWxmLCBhY3Rpb24pOgorICAgICAgICByZXR1cm4gYWN0aW9uLmRlc3QKKwogCiBjbGFzcyBSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIoSGVscEZvcm1hdHRlcik6CiAgICAgIiIiSGVscCBtZXNzYWdlIGZvcm1hdHRlciB3aGljaCByZXRhaW5zIGFueSBmb3JtYXR0aW5nIGluIGRlc2NyaXB0aW9ucy4KQEAgLTYyOCw3ICs2MzcsNyBAQAogICAgICIiIgogCiAgICAgZGVmIF9maWxsX3RleHQoc2VsZiwgdGV4dCwgd2lkdGgsIGluZGVudCk6Ci0gICAgICAgIHJldHVybiAnJy5qb2luKFtpbmRlbnQgKyBsaW5lIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcyhUcnVlKV0pCisgICAgICAgIHJldHVybiAnJy5qb2luKGluZGVudCArIGxpbmUgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogCiAKIGNsYXNzIFJhd1RleHRIZWxwRm9ybWF0dGVyKFJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcik6CkBAIC02NTksNiArNjY4LDIyIEBACiAgICAgICAgIHJldHVybiBoZWxwCiAKIAorY2xhc3MgTWV0YXZhclR5cGVIZWxwRm9ybWF0dGVyKEhlbHBGb3JtYXR0ZXIpOgorICAgICIiIkhlbHAgbWVzc2FnZSBmb3JtYXR0ZXIgd2hpY2ggdXNlcyB0aGUgYXJndW1lbnQgJ3R5cGUnIGFzIHRoZSBkZWZhdWx0CisgICAgbWV0YXZhciB2YWx1ZSAoaW5zdGVhZCBvZiB0aGUgYXJndW1lbnQgJ2Rlc3QnKQorCisgICAgT25seSB0aGUgbmFtZSBvZiB0aGlzIGNsYXNzIGlzIGNvbnNpZGVyZWQgYSBwdWJsaWMgQVBJLiBBbGwgdGhlIG1ldGhvZHMKKyAgICBwcm92aWRlZCBieSB0aGUgY2xhc3MgYXJlIGNvbnNpZGVyZWQgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgorICAgICIiIgorCisgICAgZGVmIF9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9vcHRpb25hbChzZWxmLCBhY3Rpb24pOgorICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUuX19uYW1lX18KKworICAgIGRlZiBfZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3JfcG9zaXRpb25hbChzZWxmLCBhY3Rpb24pOgorICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUuX19uYW1lX18KKworCisKICMgPT09PT09PT09PT09PT09PT09PT09CiAjIE9wdGlvbnMgYW5kIEFyZ3VtZW50cwogIyA9PT09PT09PT09PT09PT09PT09PT0KQEAgLTE1NTQsNyArMTU3OSw2IEBACiAgICAgICAgICAgICAgICAgIHVzYWdlPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPU5vbmUsCiAgICAgICAgICAgICAgICAgIGVwaWxvZz1Ob25lLAotICAgICAgICAgICAgICAgICB2ZXJzaW9uPU5vbmUsCiAgICAgICAgICAgICAgICAgIHBhcmVudHM9W10sCiAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1IZWxwRm9ybWF0dGVyLAogICAgICAgICAgICAgICAgICBwcmVmaXhfY2hhcnM9Jy0nLApAQCAtMTU2MywxNCArMTU4Nyw2IEBACiAgICAgICAgICAgICAgICAgIGNvbmZsaWN0X2hhbmRsZXI9J2Vycm9yJywKICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9VHJ1ZSk6CiAKLSAgICAgICAgaWYgdmVyc2lvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAgICAgICAgICAiIiJUaGUgInZlcnNpb24iIGFyZ3VtZW50IHRvIEFyZ3VtZW50UGFyc2VyIGlzIGRlcHJlY2F0ZWQuICIiIgotICAgICAgICAgICAgICAgICIiIlBsZWFzZSB1c2UgIiIiCi0gICAgICAgICAgICAgICAgIiIiImFkZF9hcmd1bWVudCguLi4sIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249Ik4iLCAuLi4pIiAiIiIKLSAgICAgICAgICAgICAgICAiIiJpbnN0ZWFkIiIiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0KICAgICAgICAgc3VwZXJpbml0ID0gc3VwZXIoQXJndW1lbnRQYXJzZXIsIHNlbGYpLl9faW5pdF9fCiAgICAgICAgIHN1cGVyaW5pdChkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgIHByZWZpeF9jaGFycz1wcmVmaXhfY2hhcnMsCkBAIC0xNTg0LDcgKzE2MDAsNiBAQAogICAgICAgICBzZWxmLnByb2cgPSBwcm9nCiAgICAgICAgIHNlbGYudXNhZ2UgPSB1c2FnZQogICAgICAgICBzZWxmLmVwaWxvZyA9IGVwaWxvZwotICAgICAgICBzZWxmLnZlcnNpb24gPSB2ZXJzaW9uCiAgICAgICAgIHNlbGYuZm9ybWF0dGVyX2NsYXNzID0gZm9ybWF0dGVyX2NsYXNzCiAgICAgICAgIHNlbGYuZnJvbWZpbGVfcHJlZml4X2NoYXJzID0gZnJvbWZpbGVfcHJlZml4X2NoYXJzCiAgICAgICAgIHNlbGYuYWRkX2hlbHAgPSBhZGRfaGVscApAQCAtMTU5OSw3ICsxNjE0LDcgQEAKICAgICAgICAgICAgIHJldHVybiBzdHJpbmcKICAgICAgICAgc2VsZi5yZWdpc3RlcigndHlwZScsIE5vbmUsIGlkZW50aXR5KQogCi0gICAgICAgICMgYWRkIGhlbHAgYW5kIHZlcnNpb24gYXJndW1lbnRzIGlmIG5lY2Vzc2FyeQorICAgICAgICAjIGFkZCBoZWxwIGFyZ3VtZW50IGlmIG5lY2Vzc2FyeQogICAgICAgICAjICh1c2luZyBleHBsaWNpdCBkZWZhdWx0IHRvIG92ZXJyaWRlIGdsb2JhbCBhcmd1bWVudF9kZWZhdWx0KQogICAgICAgICBkZWZhdWx0X3ByZWZpeCA9ICctJyBpZiAnLScgaW4gcHJlZml4X2NoYXJzIGVsc2UgcHJlZml4X2NoYXJzWzBdCiAgICAgICAgIGlmIHNlbGYuYWRkX2hlbHA6CkBAIC0xNjA3LDEyICsxNjIyLDYgQEAKICAgICAgICAgICAgICAgICBkZWZhdWx0X3ByZWZpeCsnaCcsIGRlZmF1bHRfcHJlZml4KjIrJ2hlbHAnLAogICAgICAgICAgICAgICAgIGFjdGlvbj0naGVscCcsIGRlZmF1bHQ9U1VQUFJFU1MsCiAgICAgICAgICAgICAgICAgaGVscD1fKCdzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0JykpCi0gICAgICAgIGlmIHNlbGYudmVyc2lvbjoKLSAgICAgICAgICAgIHNlbGYuYWRkX2FyZ3VtZW50KAotICAgICAgICAgICAgICAgIGRlZmF1bHRfcHJlZml4Kyd2JywgZGVmYXVsdF9wcmVmaXgqMisndmVyc2lvbicsCi0gICAgICAgICAgICAgICAgYWN0aW9uPSd2ZXJzaW9uJywgZGVmYXVsdD1TVVBQUkVTUywKLSAgICAgICAgICAgICAgICB2ZXJzaW9uPXNlbGYudmVyc2lvbiwKLSAgICAgICAgICAgICAgICBoZWxwPV8oInNob3cgcHJvZ3JhbSdzIHZlcnNpb24gbnVtYmVyIGFuZCBleGl0IikpCiAKICAgICAgICAgIyBhZGQgcGFyZW50IGFyZ3VtZW50cyBhbmQgZGVmYXVsdHMKICAgICAgICAgZm9yIHBhcmVudCBpbiBwYXJlbnRzOgpAQCAtMTYzMiw3ICsxNjQxLDYgQEAKICAgICAgICAgICAgICdwcm9nJywKICAgICAgICAgICAgICd1c2FnZScsCiAgICAgICAgICAgICAnZGVzY3JpcHRpb24nLAotICAgICAgICAgICAgJ3ZlcnNpb24nLAogICAgICAgICAgICAgJ2Zvcm1hdHRlcl9jbGFzcycsCiAgICAgICAgICAgICAnY29uZmxpY3RfaGFuZGxlcicsCiAgICAgICAgICAgICAnYWRkX2hlbHAnLApAQCAtMTk0MCwxNyArMTk0OCwxMiBAQAogICAgICAgICAjIGlmIHdlIGRpZG4ndCBjb25zdW1lIGFsbCB0aGUgYXJndW1lbnQgc3RyaW5ncywgdGhlcmUgd2VyZSBleHRyYXMKICAgICAgICAgZXh0cmFzLmV4dGVuZChhcmdfc3RyaW5nc1tzdG9wX2luZGV4Ol0pCiAKLSAgICAgICAgIyBpZiB3ZSBkaWRuJ3QgdXNlIGFsbCB0aGUgUG9zaXRpb25hbCBvYmplY3RzLCB0aGVyZSB3ZXJlIHRvbyBmZXcKLSAgICAgICAgIyBhcmcgc3RyaW5ncyBzdXBwbGllZC4KLSAgICAgICAgaWYgcG9zaXRpb25hbHM6Ci0gICAgICAgICAgICBzZWxmLmVycm9yKF8oJ3RvbyBmZXcgYXJndW1lbnRzJykpCi0KICAgICAgICAgIyBtYWtlIHN1cmUgYWxsIHJlcXVpcmVkIGFjdGlvbnMgd2VyZSBwcmVzZW50Ci0gICAgICAgIGZvciBhY3Rpb24gaW4gc2VsZi5fYWN0aW9uczoKLSAgICAgICAgICAgIGlmIGFjdGlvbi5yZXF1aXJlZDoKLSAgICAgICAgICAgICAgICBpZiBhY3Rpb24gbm90IGluIHNlZW5fYWN0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IF9nZXRfYWN0aW9uX25hbWUoYWN0aW9uKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oJ2FyZ3VtZW50ICVzIGlzIHJlcXVpcmVkJykgJSBuYW1lKQorICAgICAgICByZXF1aXJlZF9hY3Rpb25zID0gW19nZXRfYWN0aW9uX25hbWUoYWN0aW9uKSBmb3IgYWN0aW9uIGluIHNlbGYuX2FjdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhY3Rpb24ucmVxdWlyZWQgYW5kIGFjdGlvbiBub3QgaW4gc2Vlbl9hY3Rpb25zXQorICAgICAgICBpZiByZXF1aXJlZF9hY3Rpb25zOgorICAgICAgICAgICAgc2VsZi5lcnJvcihfKCd0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQ6ICVzJykgJQorICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4ocmVxdWlyZWRfYWN0aW9ucykpCiAKICAgICAgICAgIyBtYWtlIHN1cmUgYWxsIHJlcXVpcmVkIGdyb3VwcyBoYWQgb25lIG9wdGlvbiBwcmVzZW50CiAgICAgICAgIGZvciBncm91cCBpbiBzZWxmLl9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXBzOgpAQCAtMjMwMywxNiArMjMwNiw2IEBACiAgICAgICAgICMgZGV0ZXJtaW5lIGhlbHAgZnJvbSBmb3JtYXQgYWJvdmUKICAgICAgICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXRfaGVscCgpCiAKLSAgICBkZWYgZm9ybWF0X3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgJ1RoZSBmb3JtYXRfdmVyc2lvbiBtZXRob2QgaXMgZGVwcmVjYXRlZCAtLSB0aGUgInZlcnNpb24iICcKLSAgICAgICAgICAgICdhcmd1bWVudCB0byBBcmd1bWVudFBhcnNlciBpcyBubyBsb25nZXIgc3VwcG9ydGVkLicsCi0gICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIGZvcm1hdHRlciA9IHNlbGYuX2dldF9mb3JtYXR0ZXIoKQotICAgICAgICBmb3JtYXR0ZXIuYWRkX3RleHQoc2VsZi52ZXJzaW9uKQotICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdF9oZWxwKCkKLQogICAgIGRlZiBfZ2V0X2Zvcm1hdHRlcihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZm9ybWF0dGVyX2NsYXNzKHByb2c9c2VsZi5wcm9nKQogCkBAIC0yMzI5LDE0ICsyMzIyLDYgQEAKICAgICAgICAgICAgIGZpbGUgPSBfc3lzLnN0ZG91dAogICAgICAgICBzZWxmLl9wcmludF9tZXNzYWdlKHNlbGYuZm9ybWF0X2hlbHAoKSwgZmlsZSkKIAotICAgIGRlZiBwcmludF92ZXJzaW9uKHNlbGYsIGZpbGU9Tm9uZSk6Ci0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgJ1RoZSBwcmludF92ZXJzaW9uIG1ldGhvZCBpcyBkZXByZWNhdGVkIC0tIHRoZSAidmVyc2lvbiIgJwotICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIEFyZ3VtZW50UGFyc2VyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuJywKLSAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgc2VsZi5fcHJpbnRfbWVzc2FnZShzZWxmLmZvcm1hdF92ZXJzaW9uKCksIGZpbGUpCi0KICAgICBkZWYgX3ByaW50X21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZmlsZT1Ob25lKToKICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgIGlmIGZpbGUgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9hc3QucHkgYi9MaWIvYXN0LnB5CmluZGV4IGZiNWFkYWMuLjEzZjU5ZjkgMTAwNjQ0Ci0tLSBhL0xpYi9hc3QucHkKKysrIGIvTGliL2FzdC5weQpAQCAtMjUsNyArMjUsNiBAQAogICAgIDpsaWNlbnNlOiBQeXRob24gTGljZW5zZS4KICIiIgogZnJvbSBfYXN0IGltcG9ydCAqCi1mcm9tIF9hc3QgaW1wb3J0IF9fdmVyc2lvbl9fCiAKIAogZGVmIHBhcnNlKHNvdXJjZSwgZmlsZW5hbWU9Jzx1bmtub3duPicsIG1vZGU9J2V4ZWMnKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2hhdC5weSBiL0xpYi9hc3luY2hhdC5weQppbmRleCA2NTU4NTEyLi40ZTI2YmI1IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNoYXQucHkKKysrIGIvTGliL2FzeW5jaGF0LnB5CkBAIC00OSwxOCArNDksNiBAQAogaW1wb3J0IGFzeW5jb3JlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogCi1kZWYgYnVmZmVyKG9iaiwgc3RhcnQ9Tm9uZSwgc3RvcD1Ob25lKToKLSAgICAjIGlmIG1lbW9yeXZpZXcgb2JqZWN0cyBnYWluIHNsaWNpbmcgc2VtYW50aWNzLAotICAgICMgdGhpcyBmdW5jdGlvbiB3aWxsIGNoYW5nZSBmb3IgdGhlIGJldHRlcgotICAgICMgbWVtb3J5dmlldyB1c2VkIGZvciB0aGUgVHlwZUVycm9yCi0gICAgbWVtb3J5dmlldyhvYmopCi0gICAgaWYgc3RhcnQgPT0gTm9uZToKLSAgICAgICAgc3RhcnQgPSAwCi0gICAgaWYgc3RvcCA9PSBOb25lOgotICAgICAgICBzdG9wID0gbGVuKG9iaikKLSAgICB4ID0gb2JqW3N0YXJ0OnN0b3BdCi0gICAgIyMgcHJpbnQoImJ1ZmZlciB0eXBlIGlzOiAlcyIlKHR5cGUoeCksKSkKLSAgICByZXR1cm4geAogCiBjbGFzcyBhc3luY19jaGF0IChhc3luY29yZS5kaXNwYXRjaGVyKToKICAgICAiIiJUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzLiAgWW91IG11c3QgZGVyaXZlIGZyb20gdGhpcyBjbGFzcywgYW5kIGFkZApAQCAtNzUsNyArNjMsNyBAQAogICAgICMgc2lnbiBvZiBhbiBhcHBsaWNhdGlvbiBidWcgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHBhc3Mgc2lsZW50bHkKIAogICAgIHVzZV9lbmNvZGluZyAgICAgICAgICAgID0gMAotICAgIGVuY29kaW5nICAgICAgICAgICAgICAgID0gJ2xhdGluMScKKyAgICBlbmNvZGluZyAgICAgICAgICAgICAgICA9ICdsYXRpbi0xJwogCiAgICAgZGVmIF9faW5pdF9fIChzZWxmLCBzb2NrPU5vbmUsIG1hcD1Ob25lKToKICAgICAgICAgIyBmb3Igc3RyaW5nIHRlcm1pbmF0b3IgbWF0Y2hpbmcKQEAgLTI0MCw3ICsyMjgsNyBAQAogICAgICAgICAgICAgIyBoYW5kbGUgY2xhc3NpYyBwcm9kdWNlciBiZWhhdmlvcgogICAgICAgICAgICAgb2JzID0gc2VsZi5hY19vdXRfYnVmZmVyX3NpemUKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBkYXRhID0gYnVmZmVyKGZpcnN0LCAwLCBvYnMpCisgICAgICAgICAgICAgICAgZGF0YSA9IGZpcnN0WzpvYnNdCiAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgIGRhdGEgPSBmaXJzdC5tb3JlKCkKICAgICAgICAgICAgICAgICBpZiBkYXRhOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jb3JlLnB5IGIvTGliL2FzeW5jb3JlLnB5CmluZGV4IGIwNjA3N2YuLjJjYWM4OGIgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY29yZS5weQorKysgYi9MaWIvYXN5bmNvcmUucHkKQEAgLTU0LDcgKzU0LDcgQEAKIAogaW1wb3J0IG9zCiBmcm9tIGVycm5vIGltcG9ydCBFQUxSRUFEWSwgRUlOUFJPR1JFU1MsIEVXT1VMREJMT0NLLCBFQ09OTlJFU0VULCBFSU5WQUwsIFwKLSAgICAgRU5PVENPTk4sIEVTSFVURE9XTiwgRUlOVFIsIEVJU0NPTk4sIEVCQURGLCBFQ09OTkFCT1JURUQsIEVQSVBFLCBFQUdBSU4sIFwKKyAgICAgRU5PVENPTk4sIEVTSFVURE9XTiwgRUlTQ09OTiwgRUJBREYsIEVDT05OQUJPUlRFRCwgRVBJUEUsIEVBR0FJTiwgXAogICAgICBlcnJvcmNvZGUKIAogX0RJU0NPTk5FQ1RFRCA9IGZyb3plbnNldCgoRUNPTk5SRVNFVCwgRU5PVENPTk4sIEVTSFVURE9XTiwgRUNPTk5BQk9SVEVELCBFUElQRSwKQEAgLTE0MywxMSArMTQzLDggQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICByLCB3LCBlID0gc2VsZWN0LnNlbGVjdChyLCB3LCBlLCB0aW1lb3V0KQotICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdICE9IEVJTlRSOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGZvciBmZCBpbiByOgogICAgICAgICAgICAgb2JqID0gbWFwLmdldChmZCkKQEAgLTE4NCwxNSArMTgxLDEwIEBACiAgICAgICAgICAgICBpZiBvYmoud3JpdGFibGUoKSBhbmQgbm90IG9iai5hY2NlcHRpbmc6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc2VsZWN0LlBPTExPVVQKICAgICAgICAgICAgIGlmIGZsYWdzOgotICAgICAgICAgICAgICAgICMgT25seSBjaGVjayBmb3IgZXhjZXB0aW9ucyBpZiBvYmplY3Qgd2FzIGVpdGhlciByZWFkYWJsZQotICAgICAgICAgICAgICAgICMgb3Igd3JpdGFibGUuCi0gICAgICAgICAgICAgICAgZmxhZ3MgfD0gc2VsZWN0LlBPTExFUlIgfCBzZWxlY3QuUE9MTEhVUCB8IHNlbGVjdC5QT0xMTlZBTAogICAgICAgICAgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKGZkLCBmbGFncykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgciA9IHBvbGxzdGVyLnBvbGwodGltZW91dCkKLSAgICAgICAgZXhjZXB0IHNlbGVjdC5lcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBpZiBlcnIuYXJnc1swXSAhPSBFSU5UUjoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgIHIgPSBbXQogICAgICAgICBmb3IgZmQsIGZsYWdzIGluIHI6CiAgICAgICAgICAgICBvYmogPSBtYXAuZ2V0KGZkKQpAQCAtMjkyLDcgKzI4NCw3IEBACiAgICAgICAgICAgICBkZWwgbWFwW2ZkXQogICAgICAgICBzZWxmLl9maWxlbm8gPSBOb25lCiAKLSAgICBkZWYgY3JlYXRlX3NvY2tldChzZWxmLCBmYW1pbHksIHR5cGUpOgorICAgIGRlZiBjcmVhdGVfc29ja2V0KHNlbGYsIGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgdHlwZT1zb2NrZXQuU09DS19TVFJFQU0pOgogICAgICAgICBzZWxmLmZhbWlseV9hbmRfdHlwZSA9IGZhbWlseSwgdHlwZQogICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChmYW1pbHksIHR5cGUpCiAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoMCkKZGlmZiAtLWdpdCBhL0xpYi9iYXNlNjQucHkgYi9MaWIvYmFzZTY0LnB5CmluZGV4IDg5NWQ4MTMuLjQwNDJmMDAgMTAwNzU1Ci0tLSBhL0xpYi9iYXNlNjQucHkKKysrIGIvTGliL2Jhc2U2NC5weQpAQCAtMjksMTQgKzI5LDE2IEBACiAKIGJ5dGVzX3R5cGVzID0gKGJ5dGVzLCBieXRlYXJyYXkpICAjIFR5cGVzIGFjY2VwdGFibGUgYXMgYmluYXJ5IGRhdGEKIAotCi1kZWYgX3RyYW5zbGF0ZShzLCBhbHRjaGFycyk6Ci0gICAgaWYgbm90IGlzaW5zdGFuY2UocywgYnl0ZXNfdHlwZXMpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgcy5fX2NsYXNzX18uX19uYW1lX18pCi0gICAgdHJhbnNsYXRpb24gPSBieXRlYXJyYXkocmFuZ2UoMjU2KSkKLSAgICBmb3IgaywgdiBpbiBhbHRjaGFycy5pdGVtcygpOgotICAgICAgICB0cmFuc2xhdGlvbltvcmQoayldID0gdlswXQotICAgIHJldHVybiBzLnRyYW5zbGF0ZSh0cmFuc2xhdGlvbikKK2RlZiBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKToKKyAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzLmVuY29kZSgnYXNjaWknKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3RyaW5nIGFyZ3VtZW50IHNob3VsZCBjb250YWluIG9ubHkgQVNDSUkgY2hhcmFjdGVycycpCisgICAgZWxpZiBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKKyAgICAgICAgcmV0dXJuIHMKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBieXRlcyBvciBBU0NJSSBzdHJpbmcsIG5vdCAlcyIgJSBzLl9fY2xhc3NfXy5fX25hbWVfXykKIAogCiAKQEAgLTYxLDcgKzYzLDcgQEAKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGFsdGNoYXJzLl9fY2xhc3NfXy5fX25hbWVfXykKICAgICAgICAgYXNzZXJ0IGxlbihhbHRjaGFycykgPT0gMiwgcmVwcihhbHRjaGFycykKLSAgICAgICAgcmV0dXJuIF90cmFuc2xhdGUoZW5jb2RlZCwgeycrJzogYWx0Y2hhcnNbMDoxXSwgJy8nOiBhbHRjaGFyc1sxOjJdfSkKKyAgICAgICAgcmV0dXJuIGVuY29kZWQudHJhbnNsYXRlKGJ5dGVzLm1ha2V0cmFucyhiJysvJywgYWx0Y2hhcnMpKQogICAgIHJldHVybiBlbmNvZGVkCiAKIApAQCAtNzksMTQgKzgxLDExIEBACiAgICAgZGlzY2FyZGVkIHByaW9yIHRvIHRoZSBwYWRkaW5nIGNoZWNrLiAgSWYgdmFsaWRhdGUgaXMgVHJ1ZSwKICAgICBub24tYmFzZTY0LWFscGhhYmV0IGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0IHJlc3VsdCBpbiBhIGJpbmFzY2lpLkVycm9yLgogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgIHMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKQogICAgIGlmIGFsdGNoYXJzIGlzIG5vdCBOb25lOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhbHRjaGFycywgYnl0ZXNfdHlwZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWx0Y2hhcnMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgICAgICBhbHRjaGFycyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKGFsdGNoYXJzKQogICAgICAgICBhc3NlcnQgbGVuKGFsdGNoYXJzKSA9PSAyLCByZXByKGFsdGNoYXJzKQotICAgICAgICBzID0gX3RyYW5zbGF0ZShzLCB7Y2hyKGFsdGNoYXJzWzBdKTogYicrJywgY2hyKGFsdGNoYXJzWzFdKTogYicvJ30pCisgICAgICAgIHMgPSBzLnRyYW5zbGF0ZShieXRlcy5tYWtldHJhbnMoYWx0Y2hhcnMsIGInKy8nKSkKICAgICBpZiB2YWxpZGF0ZSBhbmQgbm90IHJlLm1hdGNoKGInXltBLVphLXowLTkrL10qPXswLDJ9JCcsIHMpOgogICAgICAgICByYWlzZSBiaW5hc2NpaS5FcnJvcignTm9uLWJhc2U2NCBkaWdpdCBmb3VuZCcpCiAgICAgcmV0dXJuIGJpbmFzY2lpLmEyYl9iYXNlNjQocykKQEAgLTEwOSw2ICsxMDgsMTAgQEAKICAgICAiIiIKICAgICByZXR1cm4gYjY0ZGVjb2RlKHMpCiAKKworX3VybHNhZmVfZW5jb2RlX3RyYW5zbGF0aW9uID0gYnl0ZXMubWFrZXRyYW5zKGInKy8nLCBiJy1fJykKK191cmxzYWZlX2RlY29kZV90cmFuc2xhdGlvbiA9IGJ5dGVzLm1ha2V0cmFucyhiJy1fJywgYicrLycpCisKIGRlZiB1cmxzYWZlX2I2NGVuY29kZShzKToKICAgICAiIiJFbmNvZGUgYSBieXRlIHN0cmluZyB1c2luZyBhIHVybC1zYWZlIEJhc2U2NCBhbHBoYWJldC4KIApAQCAtMTE2LDcgKzExOSw3IEBACiAgICAgcmV0dXJuZWQuICBUaGUgYWxwaGFiZXQgdXNlcyAnLScgaW5zdGVhZCBvZiAnKycgYW5kICdfJyBpbnN0ZWFkIG9mCiAgICAgJy8nLgogICAgICIiIgotICAgIHJldHVybiBiNjRlbmNvZGUocywgYictXycpCisgICAgcmV0dXJuIGI2NGVuY29kZShzKS50cmFuc2xhdGUoX3VybHNhZmVfZW5jb2RlX3RyYW5zbGF0aW9uKQogCiBkZWYgdXJsc2FmZV9iNjRkZWNvZGUocyk6CiAgICAgIiIiRGVjb2RlIGEgYnl0ZSBzdHJpbmcgZW5jb2RlZCB3aXRoIHRoZSBzdGFuZGFyZCBCYXNlNjQgYWxwaGFiZXQuCkBAIC0xMjgsNyArMTMxLDkgQEAKIAogICAgIFRoZSBhbHBoYWJldCB1c2VzICctJyBpbnN0ZWFkIG9mICcrJyBhbmQgJ18nIGluc3RlYWQgb2YgJy8nLgogICAgICIiIgotICAgIHJldHVybiBiNjRkZWNvZGUocywgYictXycpCisgICAgcyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpCisgICAgcyA9IHMudHJhbnNsYXRlKF91cmxzYWZlX2RlY29kZV90cmFuc2xhdGlvbikKKyAgICByZXR1cm4gYjY0ZGVjb2RlKHMpCiAKIAogCkBAIC0yMTEsOCArMjE2LDcgQEAKICAgICB0aGUgaW5wdXQgaXMgaW5jb3JyZWN0bHkgcGFkZGVkIG9yIGlmIHRoZXJlIGFyZSBub24tYWxwaGFiZXQKICAgICBjaGFyYWN0ZXJzIHByZXNlbnQgaW4gdGhlIGlucHV0LgogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgIHMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKQogICAgIHF1YW50YSwgbGVmdG92ZXIgPSBkaXZtb2QobGVuKHMpLCA4KQogICAgIGlmIGxlZnRvdmVyOgogICAgICAgICByYWlzZSBiaW5hc2NpaS5FcnJvcignSW5jb3JyZWN0IHBhZGRpbmcnKQpAQCAtMjIwLDEwICsyMjQsOSBAQAogICAgICMgRmFsc2UsIG9yIHRoZSBjaGFyYWN0ZXIgdG8gbWFwIHRoZSBkaWdpdCAxIChvbmUpIHRvLiAgSXQgc2hvdWxkIGJlCiAgICAgIyBlaXRoZXIgTCAoZWwpIG9yIEkgKGV5ZSkuCiAgICAgaWYgbWFwMDEgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1hcDAxLCBieXRlc190eXBlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgbWFwMDEuX19jbGFzc19fLl9fbmFtZV9fKQorICAgICAgICBtYXAwMSA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKG1hcDAxKQogICAgICAgICBhc3NlcnQgbGVuKG1hcDAxKSA9PSAxLCByZXByKG1hcDAxKQotICAgICAgICBzID0gX3RyYW5zbGF0ZShzLCB7YicwJzogYidPJywgYicxJzogbWFwMDF9KQorICAgICAgICBzID0gcy50cmFuc2xhdGUoYnl0ZXMubWFrZXRyYW5zKGInMDEnLCBiJ08nICsgbWFwMDEpKQogICAgIGlmIGNhc2Vmb2xkOgogICAgICAgICBzID0gcy51cHBlcigpCiAgICAgIyBTdHJpcCBvZmYgcGFkIGNoYXJhY3RlcnMgZnJvbSB0aGUgcmlnaHQuICBXZSBuZWVkIHRvIGNvdW50IHRoZSBwYWQKQEAgLTI5Miw4ICsyOTUsNyBAQAogICAgIHMgd2VyZSBpbmNvcnJlY3RseSBwYWRkZWQgb3IgaWYgdGhlcmUgYXJlIG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzCiAgICAgcHJlc2VudCBpbiB0aGUgc3RyaW5nLgogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgIHMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKQogICAgIGlmIGNhc2Vmb2xkOgogICAgICAgICBzID0gcy51cHBlcigpCiAgICAgaWYgcmUuc2VhcmNoKGInW14wLTlBLUZdJywgcyk6CmRpZmYgLS1naXQgYS9MaWIvYmluaGV4LnB5IGIvTGliL2JpbmhleC5weQppbmRleCA5OTlhNjc1Li43YmY5Mjc4IDEwMDY0NAotLS0gYS9MaWIvYmluaGV4LnB5CisrKyBiL0xpYi9iaW5oZXgucHkKQEAgLTIzLDcgKzIzLDYgQEAKICMKIGltcG9ydCBpbwogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgYmluYXNjaWkKIApkaWZmIC0tZ2l0IGEvTGliL2J6Mi5weSBiL0xpYi9iejIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUwYWRmNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9iejIucHkKQEAgLTAsMCArMSw0NjkgQEAKKyIiIkludGVyZmFjZSB0byB0aGUgbGliYnppcDIgY29tcHJlc3Npb24gbGlicmFyeS4KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBmaWxlIGludGVyZmFjZSwgY2xhc3NlcyBmb3IgaW5jcmVtZW50YWwKKyhkZSljb21wcmVzc2lvbiwgYW5kIGZ1bmN0aW9ucyBmb3Igb25lLXNob3QgKGRlKWNvbXByZXNzaW9uLgorIiIiCisKK19fYWxsX18gPSBbIkJaMkZpbGUiLCAiQloyQ29tcHJlc3NvciIsICJCWjJEZWNvbXByZXNzb3IiLAorICAgICAgICAgICAib3BlbiIsICJjb21wcmVzcyIsICJkZWNvbXByZXNzIl0KKworX19hdXRob3JfXyA9ICJOYWRlZW0gVmF3ZGEgPG5hZGVlbS52YXdkYUBnbWFpbC5jb20+IgorCitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBpbworaW1wb3J0IHdhcm5pbmdzCisKK3RyeToKKyAgICBmcm9tIHRocmVhZGluZyBpbXBvcnQgUkxvY2sKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIGR1bW15X3RocmVhZGluZyBpbXBvcnQgUkxvY2sKKworZnJvbSBfYnoyIGltcG9ydCBCWjJDb21wcmVzc29yLCBCWjJEZWNvbXByZXNzb3IKKworCitfTU9ERV9DTE9TRUQgICA9IDAKK19NT0RFX1JFQUQgICAgID0gMQorX01PREVfUkVBRF9FT0YgPSAyCitfTU9ERV9XUklURSAgICA9IDMKKworX0JVRkZFUl9TSVpFID0gODE5MgorCisKK2NsYXNzIEJaMkZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorCisgICAgIiIiQSBmaWxlIG9iamVjdCBwcm92aWRpbmcgdHJhbnNwYXJlbnQgYnppcDIgKGRlKWNvbXByZXNzaW9uLgorCisgICAgQSBCWjJGaWxlIGNhbiBhY3QgYXMgYSB3cmFwcGVyIGZvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgb3IgcmVmZXIKKyAgICBkaXJlY3RseSB0byBhIG5hbWVkIGZpbGUgb24gZGlzay4KKworICAgIE5vdGUgdGhhdCBCWjJGaWxlIHByb3ZpZGVzIGEgKmJpbmFyeSogZmlsZSBpbnRlcmZhY2UgLSBkYXRhIHJlYWQgaXMKKyAgICByZXR1cm5lZCBhcyBieXRlcywgYW5kIGRhdGEgdG8gYmUgd3JpdHRlbiBzaG91bGQgYmUgZ2l2ZW4gYXMgYnl0ZXMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9InIiLCBidWZmZXJpbmc9Tm9uZSwgY29tcHJlc3NsZXZlbD05KToKKyAgICAgICAgIiIiT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZS4KKworICAgICAgICBJZiBmaWxlbmFtZSBpcyBhIHN0ciBvciBieXRlcyBvYmplY3QsIGlzIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvCisgICAgICAgIGJlIG9wZW5lZC4gT3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgYSBmaWxlIG9iamVjdCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvCisgICAgICAgIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KKworICAgICAgICBtb2RlIGNhbiBiZSAncicgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAndycgZm9yIChvdmVyKXdyaXRpbmcsIG9yICdhJyBmb3IKKyAgICAgICAgYXBwZW5kaW5nLiBUaGVzZSBjYW4gZXF1aXZhbGVudGx5IGJlIGdpdmVuIGFzICdyYicsICd3YicsIGFuZCAnYWInLgorCisgICAgICAgIGJ1ZmZlcmluZyBpcyBpZ25vcmVkLiBJdHMgdXNlIGlzIGRlcHJlY2F0ZWQuCisKKyAgICAgICAgSWYgbW9kZSBpcyAndycgb3IgJ2EnLCBjb21wcmVzc2xldmVsIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIDEKKyAgICAgICAgYW5kIDkgc3BlY2lmeWluZyB0aGUgbGV2ZWwgb2YgY29tcHJlc3Npb246IDEgcHJvZHVjZXMgdGhlIGxlYXN0CisgICAgICAgIGNvbXByZXNzaW9uLCBhbmQgOSAoZGVmYXVsdCkgcHJvZHVjZXMgdGhlIG1vc3QgY29tcHJlc3Npb24uCisKKyAgICAgICAgSWYgbW9kZSBpcyAncicsIHRoZSBpbnB1dCBmaWxlIG1heSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZgorICAgICAgICBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMuCisgICAgICAgICIiIgorICAgICAgICAjIFRoaXMgbG9jayBtdXN0IGJlIHJlY3Vyc2l2ZSwgc28gdGhhdCBCdWZmZXJlZElPQmFzZSdzCisgICAgICAgICMgcmVhZGxpbmUoKSwgcmVhZGxpbmVzKCkgYW5kIHdyaXRlbGluZXMoKSBkb24ndCBkZWFkbG9jay4KKyAgICAgICAgc2VsZi5fbG9jayA9IFJMb2NrKCkKKyAgICAgICAgc2VsZi5fZnAgPSBOb25lCisgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQorICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECisgICAgICAgIHNlbGYuX3BvcyA9IDAKKyAgICAgICAgc2VsZi5fc2l6ZSA9IC0xCisKKyAgICAgICAgaWYgYnVmZmVyaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVXNlIG9mICdidWZmZXJpbmcnIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisKKyAgICAgICAgaWYgbm90ICgxIDw9IGNvbXByZXNzbGV2ZWwgPD0gOSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5IikKKworICAgICAgICBpZiBtb2RlIGluICgiIiwgInIiLCAicmIiKToKKyAgICAgICAgICAgIG1vZGUgPSAicmIiCisgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9SRUFECisgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBCWjJEZWNvbXByZXNzb3IoKQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorICAgICAgICBlbGlmIG1vZGUgaW4gKCJ3IiwgIndiIik6CisgICAgICAgICAgICBtb2RlID0gIndiIgorICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfV1JJVEUKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWwpCisgICAgICAgIGVsaWYgbW9kZSBpbiAoImEiLCAiYWIiKToKKyAgICAgICAgICAgIG1vZGUgPSAiYWIiCisgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9XUklURQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgICAgICBzZWxmLl9mcCA9IGJ1aWx0aW5zLm9wZW4oZmlsZW5hbWUsIG1vZGUpCisgICAgICAgICAgICBzZWxmLl9jbG9zZWZwID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQorICAgICAgICBlbGlmIGhhc2F0dHIoZmlsZW5hbWUsICJyZWFkIikgb3IgaGFzYXR0cihmaWxlbmFtZSwgIndyaXRlIik6CisgICAgICAgICAgICBzZWxmLl9mcCA9IGZpbGVuYW1lCisgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJGbHVzaCBhbmQgY2xvc2UgdGhlIGZpbGUuCisKKyAgICAgICAgTWF5IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLiBPbmNlIHRoZSBmaWxlIGlzCisgICAgICAgIGNsb3NlZCwgYW55IG90aGVyIG9wZXJhdGlvbiBvbiBpdCB3aWxsIHJhaXNlIGEgVmFsdWVFcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VEOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoc2VsZi5fY29tcHJlc3Nvci5mbHVzaCgpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlZnA6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5jbG9zZSgpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWQoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgdGhpcyBmaWxlIGlzIGNsb3NlZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VECisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIHVuZGVybHlpbmcgZmlsZS4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9mcC5maWxlbm8oKQorCisgICAgZGVmIHNlZWthYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSBzdXBwb3J0cyBzZWVraW5nLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9mcC5zZWVrYWJsZSgpCisKKyAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpCisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURQorCisgICAgIyBNb2RlLWNoZWNraW5nIGhlbHBlciBmdW5jdGlvbnMuCisKKyAgICBkZWYgX2NoZWNrX25vdF9jbG9zZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9yZWFkKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5yZWFkYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHJlYWRpbmciKQorCisgICAgZGVmIF9jaGVja19jYW5fd3JpdGUoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLndyaXRhYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZyIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9zZWVrKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5yZWFkYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlNlZWtpbmcgaXMgb25seSBzdXBwb3J0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGZpbGVzIG9wZW4gZm9yIHJlYWRpbmciKQorICAgICAgICBpZiBub3Qgc2VsZi5fZnAuc2Vla2FibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJUaGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lcyBub3Qgc3VwcG9ydCBzZWVraW5nIikKKworICAgICMgRmlsbCB0aGUgcmVhZGFoZWFkIGJ1ZmZlciBpZiBpdCBpcyBlbXB0eS4gUmV0dXJucyBGYWxzZSBvbiBFT0YuCisgICAgZGVmIF9maWxsX2J1ZmZlcihzZWxmKToKKyAgICAgICAgIyBEZXBlbmRpbmcgb24gdGhlIGlucHV0IGRhdGEsIG91ciBjYWxsIHRvIHRoZSBkZWNvbXByZXNzb3IgbWF5IG5vdAorICAgICAgICAjIHJldHVybiBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCB0cnkgYWdhaW4gYWZ0ZXIgcmVhZGluZyBhbm90aGVyIGJsb2NrLgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgc2VsZi5fYnVmZmVyOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YToKKyAgICAgICAgICAgICAgICByYXdibG9jayA9IHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYXdibG9jayA9IHNlbGYuX2ZwLnJlYWQoX0JVRkZFUl9TSVpFKQorCisgICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQURfRU9GCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpemUgPSBzZWxmLl9wb3MKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKworICAgICAgICAgICAgIyBDb250aW51ZSB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gQloyRGVjb21wcmVzc29yKCkKKworICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2spCisKKyAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCisgICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KKyAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgorICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQorCisgICAgIyBSZWFkIGEgYmxvY2sgb2YgdXAgdG8gbiBieXRlcy4KKyAgICAjIElmIHJldHVybl9kYXRhIGlzIGZhbHNlLCBjb25zdW1lIHRoZSBkYXRhIHdpdGhvdXQgcmV0dXJuaW5nIGl0LgorICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBuLCByZXR1cm5fZGF0YT1UcnVlKToKKyAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbbjpdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXIKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBuIC09IGxlbihkYXRhKQorICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCisKKyAgICBkZWYgcGVlayhzZWxmLCBuPTApOgorICAgICAgICAiIiJSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBBbHdheXMgcmV0dXJucyBhdCBsZWFzdCBvbmUgYnl0ZSBvZiBkYXRhLCB1bmxlc3MgYXQgRU9GLgorICAgICAgICBUaGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRiBvciBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCB1cCB0byBzaXplIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBmaWxlLgorCisgICAgICAgIElmIHNpemUgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KKyAgICAgICAgUmV0dXJucyBiJycgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCisgICAgICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GIG9yIHNpemUgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgICAgICBlbGlmIHNpemUgPCAwOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2FsbCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2Jsb2NrKHNpemUpCisKKyAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMsIHdoaWxlIHRyeWluZyB0byBhdm9pZAorICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uCisKKyAgICAgICAgUmV0dXJucyBiJycgaWYgdGhlIGZpbGUgaXMgYXQgRU9GLgorICAgICAgICAiIiIKKyAgICAgICAgIyBVc3VhbGx5LCByZWFkMSgpIGNhbGxzIF9mcC5yZWFkKCkgYXQgbW9zdCBvbmNlLiBIb3dldmVyLCBzb21ldGltZXMKKyAgICAgICAgIyB0aGlzIGRvZXMgbm90IGdpdmUgZW5vdWdoIGRhdGEgZm9yIHRoZSBkZWNvbXByZXNzb3IgdG8gbWFrZSBwcm9ncmVzcy4KKyAgICAgICAgIyBJbiB0aGlzIGNhc2Ugd2UgbWFrZSBtdWx0aXBsZSByZWFkcywgdG8gYXZvaWQgcmV0dXJuaW5nIGIiIi4KKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgaWYgKHNpemUgPT0gMCBvciBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GIG9yCisgICAgICAgICAgICAgICAgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCkpOgorICAgICAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgICAgIGlmIDAgPCBzaXplIDwgbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6c2l6ZV0KKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2l6ZTpdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXIKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGIuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKDAgZm9yIEVPRikuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGludG8oc2VsZiwgYikKKworICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCBhIGxpbmUgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCisKKyAgICAgICAgVGhlIHRlcm1pbmF0aW5nIG5ld2xpbmUgKGlmIHByZXNlbnQpIGlzIHJldGFpbmVkLiBJZiBzaXplIGlzCisgICAgICAgIG5vbi1uZWdhdGl2ZSwgbm8gbW9yZSB0aGFuIHNpemUgYnl0ZXMgd2lsbCBiZSByZWFkIChpbiB3aGljaAorICAgICAgICBjYXNlIHRoZSBsaW5lIG1heSBiZSBpbmNvbXBsZXRlKS4gUmV0dXJucyBiJycgaWYgYWxyZWFkeSBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaGFzYXR0cihzaXplLCAiX19pbmRleF9fIik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQiKQorICAgICAgICBzaXplID0gc2l6ZS5fX2luZGV4X18oKQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGxpbmUoc2VsZiwgc2l6ZSkKKworICAgIGRlZiByZWFkbGluZXMoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgYSBsaXN0IG9mIGxpbmVzIG9mIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBmaWxlLgorCisgICAgICAgIHNpemUgY2FuIGJlIHNwZWNpZmllZCB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgbGluZXMgcmVhZDogbm8KKyAgICAgICAgZnVydGhlciBsaW5lcyB3aWxsIGJlIHJlYWQgb25jZSB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgbGluZXMgcmVhZAorICAgICAgICBzbyBmYXIgZXF1YWxzIG9yIGV4Y2VlZHMgc2l6ZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNpemUsICJfX2luZGV4X18iKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiSW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCIpCisgICAgICAgIHNpemUgPSBzaXplLl9faW5kZXhfXygpCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZXMoc2VsZiwgc2l6ZSkKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgYSBieXRlIHN0cmluZyB0byB0aGUgZmlsZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIHdyaXR0ZW4sIHdoaWNoIGlzCisgICAgICAgIGFsd2F5cyBsZW4oZGF0YSkuIE5vdGUgdGhhdCBkdWUgdG8gYnVmZmVyaW5nLCB0aGUgZmlsZSBvbiBkaXNrCisgICAgICAgIG1heSBub3QgcmVmbGVjdCB0aGUgZGF0YSB3cml0dGVuIHVudGlsIGNsb3NlKCkgaXMgY2FsbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3dyaXRlKCkKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSBzZWxmLl9jb21wcmVzc29yLmNvbXByZXNzKGRhdGEpCisgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShjb21wcmVzc2VkKQorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICAgICAgcmV0dXJuIGxlbihkYXRhKQorCisgICAgZGVmIHdyaXRlbGluZXMoc2VsZiwgc2VxKToKKyAgICAgICAgIiIiV3JpdGUgYSBzZXF1ZW5jZSBvZiBieXRlIHN0cmluZ3MgdG8gdGhlIGZpbGUuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRlcyB3cml0dGVuLgorICAgICAgICBzZXEgY2FuIGJlIGFueSBpdGVyYWJsZSB5aWVsZGluZyBieXRlIHN0cmluZ3MuCisKKyAgICAgICAgTGluZSBzZXBhcmF0b3JzIGFyZSBub3QgYWRkZWQgYmV0d2VlbiB0aGUgd3JpdHRlbiBieXRlIHN0cmluZ3MuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2Uud3JpdGVsaW5lcyhzZWxmLCBzZXEpCisKKyAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KKyAgICBkZWYgX3Jld2luZChzZWxmKToKKyAgICAgICAgc2VsZi5fZnAuc2VlaygwLCAwKQorICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRAorICAgICAgICBzZWxmLl9wb3MgPSAwCisgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKworICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgorICAgICAgICAiIiJDaGFuZ2UgdGhlIGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgVGhlIG5ldyBwb3NpdGlvbiBpcyBzcGVjaWZpZWQgYnkgb2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUKKyAgICAgICAgcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZS4gVmFsdWVzIGZvciB3aGVuY2UgYXJlOgorCisgICAgICAgICAgICAwOiBzdGFydCBvZiBzdHJlYW0gKGRlZmF1bHQpOyBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUKKyAgICAgICAgICAgIDE6IGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uCisgICAgICAgICAgICAyOiBlbmQgb2Ygc3RyZWFtOyBvZmZzZXQgbXVzdCBub3QgYmUgcG9zaXRpdmUKKworICAgICAgICBSZXR1cm5zIHRoZSBuZXcgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBOb3RlIHRoYXQgc2Vla2luZyBpcyBlbXVsYXRlZCwgc28gZGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXJzLAorICAgICAgICB0aGlzIG9wZXJhdGlvbiBtYXkgYmUgZXh0cmVtZWx5IHNsb3cuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fc2VlaygpCisKKyAgICAgICAgICAgICMgUmVjYWxjdWxhdGUgb2Zmc2V0IGFzIGFuIGFic29sdXRlIGZpbGUgcG9zaXRpb24uCisgICAgICAgICAgICBpZiB3aGVuY2UgPT0gMDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbGlmIHdoZW5jZSA9PSAxOgorICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAorICAgICAgICAgICAgZWxpZiB3aGVuY2UgPT0gMjoKKyAgICAgICAgICAgICAgICAjIFNlZWtpbmcgcmVsYXRpdmUgdG8gRU9GIC0gd2UgbmVlZCB0byBrbm93IHRoZSBmaWxlJ3Mgc2l6ZS4KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9hbGwocmV0dXJuX2RhdGE9RmFsc2UpCisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fc2l6ZSArIG9mZnNldAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB3aGVuY2U6IHt9Ii5mb3JtYXQod2hlbmNlKSkKKworICAgICAgICAgICAgIyBNYWtlIGl0IHNvIHRoYXQgb2Zmc2V0IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCBmb3J3YXJkLgorICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgorICAgICAgICAgICAgICAgIHNlbGYuX3Jld2luZCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKKworICAgICAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCisgICAgICAgICAgICBpZiBzZWxmLl9tb2RlICE9IF9NT0RFX1JFQURfRU9GOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfYmxvY2sob2Zmc2V0LCByZXR1cm5fZGF0YT1GYWxzZSkKKworICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcworCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKKworCitkZWYgb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCBjb21wcmVzc2xldmVsPTksCisgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKKyAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCisKKyAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSBzdHIgb3IgYnl0ZXMgb2JqZWN0KSwgb3IKKyAgICBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiLCAidyIsICJ3YiIsICJhIiBvciAiYWIiIGZvciBiaW5hcnkgbW9kZSwKKyAgICBvciAicnQiLCAid3QiIG9yICJhdCIgZm9yIHRleHQgbW9kZS4gVGhlIGRlZmF1bHQgbW9kZSBpcyAicmIiLCBhbmQgdGhlCisgICAgZGVmYXVsdCBjb21wcmVzc2xldmVsIGlzIDkuCisKKyAgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgQloyRmlsZSBjb25zdHJ1Y3RvcjoKKyAgICBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKS4gSW4gdGhpcyBjYXNlLCB0aGUgZW5jb2RpbmcsIGVycm9ycworICAgIGFuZCBuZXdsaW5lIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgIEZvciB0ZXh0IG1vZGUsIGEgQloyRmlsZSBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgICBpby5UZXh0SU9XcmFwcGVyIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IgaGFuZGxpbmcKKyAgICBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisgICAgIiIiCisgICAgaWYgInQiIGluIG1vZGU6CisgICAgICAgIGlmICJiIiBpbiBtb2RlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQorICAgIGVsc2U6CisgICAgICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2VuY29kaW5nJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgZXJyb3JzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2Vycm9ycycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIG5ld2xpbmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnbmV3bGluZScgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisKKyAgICBiel9tb2RlID0gbW9kZS5yZXBsYWNlKCJ0IiwgIiIpCisgICAgYmluYXJ5X2ZpbGUgPSBCWjJGaWxlKGZpbGVuYW1lLCBiel9tb2RlLCBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCisKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgcmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoYmluYXJ5X2ZpbGUsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGJpbmFyeV9maWxlCisKKworZGVmIGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSk6CisgICAgIiIiQ29tcHJlc3MgYSBibG9jayBvZiBkYXRhLgorCisgICAgY29tcHJlc3NsZXZlbCwgaWYgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5LgorCisgICAgRm9yIGluY3JlbWVudGFsIGNvbXByZXNzaW9uLCB1c2UgYSBCWjJDb21wcmVzc29yIG9iamVjdCBpbnN0ZWFkLgorICAgICIiIgorICAgIGNvbXAgPSBCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWwpCisgICAgcmV0dXJuIGNvbXAuY29tcHJlc3MoZGF0YSkgKyBjb21wLmZsdXNoKCkKKworCitkZWYgZGVjb21wcmVzcyhkYXRhKToKKyAgICAiIiJEZWNvbXByZXNzIGEgYmxvY2sgb2YgZGF0YS4KKworICAgIEZvciBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uLCB1c2UgYSBCWjJEZWNvbXByZXNzb3Igb2JqZWN0IGluc3RlYWQuCisgICAgIiIiCisgICAgaWYgbGVuKGRhdGEpID09IDA6CisgICAgICAgIHJldHVybiBiIiIKKworICAgIHJlc3VsdHMgPSBbXQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGRlY29tcCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIHJlc3VsdHMuYXBwZW5kKGRlY29tcC5kZWNvbXByZXNzKGRhdGEpKQorICAgICAgICBpZiBub3QgZGVjb21wLmVvZjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvbXByZXNzZWQgZGF0YSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKyAgICAgICAgaWYgbm90IGRlY29tcC51bnVzZWRfZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihyZXN1bHRzKQorICAgICAgICAjIFRoZXJlIGlzIHVudXNlZCBkYXRhIGxlZnQgb3Zlci4gUHJvY2VlZCB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgZGF0YSA9IGRlY29tcC51bnVzZWRfZGF0YQpkaWZmIC0tZ2l0IGEvTGliL2NnaS5weSBiL0xpYi9jZ2kucHkKaW5kZXggOTBhMzM0NS4uZTk2NGYwYyAxMDA3NTUKLS0tIGEvTGliL2NnaS5weQorKysgYi9MaWIvY2dpLnB5CkBAIC03Niw3ICs3Niw3IEBACiAgICAgc2VuZCBhbiBlcnJvciBtZXNzYWdlKS4KIAogICAgICIiIgotICAgIGdsb2JhbCBsb2dmcCwgbG9nCisgICAgZ2xvYmFsIGxvZywgbG9nZmlsZSwgbG9nZnAKICAgICBpZiBsb2dmaWxlIGFuZCBub3QgbG9nZnA6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxvZ2ZwID0gb3Blbihsb2dmaWxlLCAiYSIpCkBAIC05Niw2ICs5NiwxNSBAQAogICAgICIiIkR1bW15IGZ1bmN0aW9uLCBhc3NpZ25lZCB0byBsb2cgd2hlbiBsb2dnaW5nIGlzIGRpc2FibGVkLiIiIgogICAgIHBhc3MKIAorZGVmIGNsb3NlbG9nKCk6CisgICAgIiIiQ2xvc2UgdGhlIGxvZyBmaWxlLiIiIgorICAgIGdsb2JhbCBsb2csIGxvZ2ZpbGUsIGxvZ2ZwCisgICAgbG9nZmlsZSA9ICcnCisgICAgaWYgbG9nZnA6CisgICAgICAgIGxvZ2ZwLmNsb3NlKCkKKyAgICAgICAgbG9nZnAgPSBOb25lCisgICAgbG9nID0gaW5pdGxvZworCiBsb2cgPSBpbml0bG9nICAgICAgICAgICAjIFRoZSBjdXJyZW50IGxvZ2dpbmcgZnVuY3Rpb24KIAogCkBAIC0xMDAzLDcgKzEwMTIsNyBAQAogZGVmIGVzY2FwZShzLCBxdW90ZT1Ob25lKToKICAgICAiIiJEZXByZWNhdGVkIEFQSS4iIiIKICAgICB3YXJuKCJjZ2kuZXNjYXBlIGlzIGRlcHJlY2F0ZWQsIHVzZSBodG1sLmVzY2FwZSBpbnN0ZWFkIiwKLSAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIHMgPSBzLnJlcGxhY2UoIiYiLCAiJmFtcDsiKSAjIE11c3QgYmUgZG9uZSBmaXJzdCEKICAgICBzID0gcy5yZXBsYWNlKCI8IiwgIiZsdDsiKQogICAgIHMgPSBzLnJlcGxhY2UoIj4iLCAiJmd0OyIpCmRpZmYgLS1naXQgYS9MaWIvY2dpdGIucHkgYi9MaWIvY2dpdGIucHkKaW5kZXggN2I1MmM4ZS4uZTNjZTJjYiAxMDA2NDQKLS0tIGEvTGliL2NnaXRiLnB5CisrKyBiL0xpYi9jZ2l0Yi5weQpAQCAtMzEsNyArMzEsNiBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB0b2tlbml6ZQogaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHR5cGVzCiAKIGRlZiByZXNldCgpOgogICAgICIiIlJldHVybiBhIHN0cmluZyB0aGF0IHJlc2V0cyB0aGUgQ0dJIGFuZCBicm93c2VyIHRvIGEga25vd24gc3RhdGUuIiIiCmRpZmYgLS1naXQgYS9MaWIvY29kZS5weSBiL0xpYi9jb2RlLnB5CmluZGV4IDYwNWFlZGUuLjkwMjBhYWIgMTAwNjQ0Ci0tLSBhL0xpYi9jb2RlLnB5CisrKyBiL0xpYi9jb2RlLnB5CkBAIC0xMDUsOSArMTA1LDEwIEBACiAgICAgICAgIFRoZSBvdXRwdXQgaXMgd3JpdHRlbiBieSBzZWxmLndyaXRlKCksIGJlbG93LgogCiAgICAgICAgICIiIgotICAgICAgICB0eXBlLCB2YWx1ZSwgc3lzLmxhc3RfdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgdHlwZSwgdmFsdWUsIHRiID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgc3lzLmxhc3RfdHlwZSA9IHR5cGUKICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQorICAgICAgICBzeXMubGFzdF90cmFjZWJhY2sgPSB0YgogICAgICAgICBpZiBmaWxlbmFtZSBhbmQgdHlwZSBpcyBTeW50YXhFcnJvcjoKICAgICAgICAgICAgICMgV29yayBoYXJkIHRvIHN0dWZmIHRoZSBjb3JyZWN0IGZpbGVuYW1lIGluIHRoZSBleGNlcHRpb24KICAgICAgICAgICAgIHRyeToKQEAgLTExOSw4ICsxMjAsMTMgQEAKICAgICAgICAgICAgICAgICAjIFN0dWZmIGluIHRoZSByaWdodCBmaWxlbmFtZQogICAgICAgICAgICAgICAgIHZhbHVlID0gU3ludGF4RXJyb3IobXNnLCAoZmlsZW5hbWUsIGxpbmVubywgb2Zmc2V0LCBsaW5lKSkKICAgICAgICAgICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbHVlCi0gICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSh0eXBlLCB2YWx1ZSkKLSAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgaWYgc3lzLmV4Y2VwdGhvb2sgaXMgc3lzLl9fZXhjZXB0aG9va19fOgorICAgICAgICAgICAgbGluZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKQorICAgICAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgSWYgc29tZW9uZSBoYXMgc2V0IHN5cy5leGNlcHRob29rLCB3ZSBsZXQgdGhhdCB0YWtlIHByZWNlZGVuY2UKKyAgICAgICAgICAgICMgb3ZlciBzZWxmLndyaXRlCisgICAgICAgICAgICBzeXMuZXhjZXB0aG9vayh0eXBlLCB2YWx1ZSwgdGIpCiAKICAgICBkZWYgc2hvd3RyYWNlYmFjayhzZWxmKToKICAgICAgICAgIiIiRGlzcGxheSB0aGUgZXhjZXB0aW9uIHRoYXQganVzdCBvY2N1cnJlZC4KQEAgLTE0Myw3ICsxNDksMTIgQEAKICAgICAgICAgICAgIGxpbmVzLmV4dGVuZCh0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHRibGlzdCA9IHRiID0gTm9uZQotICAgICAgICBzZWxmLndyaXRlKCcnLmpvaW4obGluZXMpKQorICAgICAgICBpZiBzeXMuZXhjZXB0aG9vayBpcyBzeXMuX19leGNlcHRob29rX186CisgICAgICAgICAgICBzZWxmLndyaXRlKCcnLmpvaW4obGluZXMpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiBzb21lb25lIGhhcyBzZXQgc3lzLmV4Y2VwdGhvb2ssIHdlIGxldCB0aGF0IHRha2UgcHJlY2VkZW5jZQorICAgICAgICAgICAgIyBvdmVyIHNlbGYud3JpdGUKKyAgICAgICAgICAgIHN5cy5leGNlcHRob29rKHR5cGUsIHZhbHVlLCB0YikKIAogICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgYSBzdHJpbmcuCmRpZmYgLS1naXQgYS9MaWIvY29kZWNzLnB5IGIvTGliL2NvZGVjcy5weQppbmRleCBiMTUwZDY0Li45OTAxZDVjIDEwMDY0NAotLS0gYS9MaWIvY29kZWNzLnB5CisrKyBiL0xpYi9jb2RlY3MucHkKQEAgLTQ4NCw3ICs0ODQsNyBAQAogICAgICAgICAgICAgICAgIGlmIGZpcnN0bGluZToKICAgICAgICAgICAgICAgICAgICAgbmV3Y2hhcnMsIGRlY29kZWRieXRlcyA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlKGRhdGFbOmV4Yy5zdGFydF0sIHNlbGYuZXJyb3JzKQotICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IG5ld2NoYXJzLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBuZXdjaGFycy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lcyk8PTE6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC01MjYsNyArNTI2LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSBzZWxmLmxpbmVidWZmZXJbMF0KICAgICAgICAgICAgICAgICBzZWxmLmxpbmVidWZmZXIgPSBOb25lCiAgICAgICAgICAgICBpZiBub3Qga2VlcGVuZHM6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXRsaW5lcyhGYWxzZSlbMF0KKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKVswXQogICAgICAgICAgICAgcmV0dXJuIGxpbmUKIAogICAgICAgICByZWFkc2l6ZSA9IHNpemUgb3IgNzIKQEAgLTU0Myw3ICs1NDMsNyBAQAogICAgICAgICAgICAgICAgICAgICBkYXRhICs9IHNlbGYucmVhZChzaXplPTEsIGNoYXJzPTEpCiAKICAgICAgICAgICAgIGxpbmUgKz0gZGF0YQotICAgICAgICAgICAgbGluZXMgPSBsaW5lLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgIGxpbmVzID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICBpZiBsaW5lczoKICAgICAgICAgICAgICAgICBpZiBsZW4obGluZXMpID4gMToKICAgICAgICAgICAgICAgICAgICAgIyBNb3JlIHRoYW4gb25lIGxpbmUgcmVzdWx0OyB0aGUgZmlyc3QgbGluZSBpcyBhIGZ1bGwgbGluZQpAQCAtNTU5LDEwICs1NTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBvbmUgcmVtYWluaW5nIGxpbmUsIHB1dCBpdCBiYWNrIGludG8gY2hhcmJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyID0gbGluZXNbMF0gKyBzZWxmLmNoYXJidWZmZXIKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGtlZXBlbmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXRsaW5lcyhGYWxzZSlbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgbGluZTB3aXRoZW5kID0gbGluZXNbMF0KLSAgICAgICAgICAgICAgICBsaW5lMHdpdGhvdXRlbmQgPSBsaW5lc1swXS5zcGxpdGxpbmVzKEZhbHNlKVswXQorICAgICAgICAgICAgICAgIGxpbmUwd2l0aG91dGVuZCA9IGxpbmVzWzBdLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICAgICAgaWYgbGluZTB3aXRoZW5kICE9IGxpbmUwd2l0aG91dGVuZDogIyBXZSByZWFsbHkgaGF2ZSBhIGxpbmUgZW5kCiAgICAgICAgICAgICAgICAgICAgICMgUHV0IHRoZSByZXN0IGJhY2sgdG9nZXRoZXIgYW5kIGtlZXAgaXQgdW50aWwgdGhlIG5leHQgY2FsbAogICAgICAgICAgICAgICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSBzZWxmLl9lbXB0eV9jaGFyYnVmZmVyLmpvaW4obGluZXNbMTpdKSArIFwKQEAgLTU3NSw3ICs1NzUsNyBAQAogICAgICAgICAgICAgIyB3ZSBkaWRuJ3QgZ2V0IGFueXRoaW5nIG9yIHRoaXMgd2FzIG91ciBvbmx5IHRyeQogICAgICAgICAgICAgaWYgbm90IGRhdGEgb3Igc2l6ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBpZiBsaW5lIGFuZCBub3Qga2VlcGVuZHM6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoRmFsc2UpWzBdCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGlmIHJlYWRzaXplIDwgODAwMDoKICAgICAgICAgICAgICAgICByZWFkc2l6ZSAqPSAyCkBAIC04MDMsNyArODAzLDcgQEAKIAogICAgICAgICBkYXRhID0gc2VsZi5yZWFkZXIucmVhZCgpCiAgICAgICAgIGRhdGEsIGJ5dGVzZW5jb2RlZCA9IHNlbGYuZW5jb2RlKGRhdGEsIHNlbGYuZXJyb3JzKQotICAgICAgICByZXR1cm4gZGF0YS5zcGxpdGxpbmVzKDEpCisgICAgICAgIHJldHVybiBkYXRhLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKIAogICAgIGRlZiBfX25leHRfXyhzZWxmKToKIApAQCAtMTA0MiwxMCArMTA0Miw3IEBACiAgICAgICAgIG1hcHBlZCB0byB0aGVtc2VsdmVzLgogCiAgICAgIiIiCi0gICAgcmVzID0ge30KLSAgICBmb3IgaSBpbiBybmc6Ci0gICAgICAgIHJlc1tpXT1pCi0gICAgcmV0dXJuIHJlcworICAgIHJldHVybiB7aTppIGZvciBpIGluIHJuZ30KIAogZGVmIG1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCk6CiAKZGlmZiAtLWdpdCBhL0xpYi9jb2xsZWN0aW9ucy5weSBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBMaWIvY29sbGVjdGlvbnMucHkKcmVuYW1lIHRvIExpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQppbmRleCBlYjIwMjQzLi5lNWY5NTk5IDEwMDY0NAotLS0gYS9MaWIvY29sbGVjdGlvbnMucHkKKysrIGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CkBAIC0xLDEzICsxLDE0IEBACiBfX2FsbF9fID0gWydkZXF1ZScsICdkZWZhdWx0ZGljdCcsICduYW1lZHR1cGxlJywgJ1VzZXJEaWN0JywgJ1VzZXJMaXN0JywKLSAgICAgICAgICAgICdVc2VyU3RyaW5nJywgJ0NvdW50ZXInLCAnT3JkZXJlZERpY3QnXQotIyBGb3IgYm9vdHN0cmFwcGluZyByZWFzb25zLCB0aGUgY29sbGVjdGlvbiBBQkNzIGFyZSBkZWZpbmVkIGluIF9hYmNvbGwucHkuCi0jIFRoZXkgc2hvdWxkIGhvd2V2ZXIgYmUgY29uc2lkZXJlZCBhbiBpbnRlZ3JhbCBwYXJ0IG9mIGNvbGxlY3Rpb25zLnB5LgotZnJvbSBfYWJjb2xsIGltcG9ydCAqCi1pbXBvcnQgX2FiY29sbAotX19hbGxfXyArPSBfYWJjb2xsLl9fYWxsX18KKyAgICAgICAgICAgICdVc2VyU3RyaW5nJywgJ0NvdW50ZXInLCAnT3JkZXJlZERpY3QnLCAnQ2hhaW5NYXAnXQorCisjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgY29udGludWUgdG8gbWFrZSB0aGUgY29sbGVjdGlvbnMgQUJDcworIyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgY29sbGVjdGlvbnMgbW9kdWxlLgorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0ICoKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKK19fYWxsX18gKz0gY29sbGVjdGlvbnMuYWJjLl9fYWxsX18KIAogZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlLCBkZWZhdWx0ZGljdAotZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlciBhcyBfaXRlbWdldHRlcgorZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlciBhcyBfaXRlbWdldHRlciwgZXEgYXMgX2VxCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZCBhcyBfaXNrZXl3b3JkCiBpbXBvcnQgc3lzIGFzIF9zeXMKIGltcG9ydCBoZWFwcSBhcyBfaGVhcHEKQEAgLTIyOCw3ICsyMjksNyBAQAogICAgICAgICAnJycKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgT3JkZXJlZERpY3QpOgogICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmKT09bGVuKG90aGVyKSBhbmQgXAotICAgICAgICAgICAgICAgICAgIGFsbChwPT1xIGZvciBwLCBxIGluIHppcChzZWxmLml0ZW1zKCksIG90aGVyLml0ZW1zKCkpKQorICAgICAgICAgICAgICAgICAgIGFsbChtYXAoX2VxLCBzZWxmLml0ZW1zKCksIG90aGVyLml0ZW1zKCkpKQogICAgICAgICByZXR1cm4gZGljdC5fX2VxX18oc2VsZiwgb3RoZXIpCiAKIApAQCAtMzE0LDEwICszMTUsMTAgQEAKIAogICAgICIiIgogCi0gICAgIyBQYXJzZSBhbmQgdmFsaWRhdGUgdGhlIGZpZWxkIG5hbWVzLiAgVmFsaWRhdGlvbiBzZXJ2ZXMgdHdvIHB1cnBvc2VzLAotICAgICMgZ2VuZXJhdGluZyBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlcyBhbmQgcHJldmVudGluZyB0ZW1wbGF0ZSBpbmplY3Rpb24gYXR0YWNrcy4KKyAgICAjIFZhbGlkYXRlIHRoZSBmaWVsZCBuYW1lcy4gIEF0IHRoZSB1c2VyJ3Mgb3B0aW9uLCBlaXRoZXIgZ2VuZXJhdGUgYW4gZXJyb3IKKyAgICAjIG1lc3NhZ2Ugb3IgYXV0b21hdGljYWxseSByZXBsYWNlIHRoZSBmaWVsZCBuYW1lIHdpdGggYSB2YWxpZCBuYW1lLgogICAgIGlmIGlzaW5zdGFuY2UoZmllbGRfbmFtZXMsIHN0cik6Ci0gICAgICAgIGZpZWxkX25hbWVzID0gZmllbGRfbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKSAjIG5hbWVzIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlIGFuZC9vciBjb21tYXMKKyAgICAgICAgZmllbGRfbmFtZXMgPSBmaWVsZF9uYW1lcy5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpCiAgICAgZmllbGRfbmFtZXMgPSBsaXN0KG1hcChzdHIsIGZpZWxkX25hbWVzKSkKICAgICBpZiByZW5hbWU6CiAgICAgICAgIHNlZW4gPSBzZXQoKQpAQCAtMzMyLDE1ICszMzMsMTkgQEAKICAgICAgICAgICAgIHNlZW4uYWRkKG5hbWUpCiAgICAgZm9yIG5hbWUgaW4gW3R5cGVuYW1lXSArIGZpZWxkX25hbWVzOgogICAgICAgICBpZiBub3QgYWxsKGMuaXNhbG51bSgpIG9yIGM9PSdfJyBmb3IgYyBpbiBuYW1lKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbiBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzOiAlcicgJSBuYW1lKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgY2FuIG9ubHkgY29udGFpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdW5kZXJzY29yZXM6ICVyJyAlIG5hbWUpCiAgICAgICAgIGlmIF9pc2tleXdvcmQobmFtZSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBjYW5ub3QgYmUgYSBrZXl3b3JkOiAlcicgJSBuYW1lKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgY2Fubm90IGJlIGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2V5d29yZDogJXInICUgbmFtZSkKICAgICAgICAgaWYgbmFtZVswXS5pc2RpZ2l0KCk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBjYW5ub3Qgc3RhcnQgd2l0aCBhIG51bWJlcjogJXInICUgbmFtZSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbm5vdCBzdGFydCB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EgbnVtYmVyOiAlcicgJSBuYW1lKQogICAgIHNlZW4gPSBzZXQoKQogICAgIGZvciBuYW1lIGluIGZpZWxkX25hbWVzOgogICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ18nKSBhbmQgbm90IHJlbmFtZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ZpZWxkIG5hbWVzIGNhbm5vdCBzdGFydCB3aXRoIGFuIHVuZGVyc2NvcmU6ICVyJyAlIG5hbWUpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdGaWVsZCBuYW1lcyBjYW5ub3Qgc3RhcnQgd2l0aCBhbiB1bmRlcnNjb3JlOiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclcicgJSBuYW1lKQogICAgICAgICBpZiBuYW1lIGluIHNlZW46CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFbmNvdW50ZXJlZCBkdXBsaWNhdGUgZmllbGQgbmFtZTogJXInICUgbmFtZSkKICAgICAgICAgc2Vlbi5hZGQobmFtZSkKQEAgLTM1MSwyMSArMzU2LDIzIEBACiAgICAgICAgIGZpZWxkX25hbWVzID0gdHVwbGUoZmllbGRfbmFtZXMpLAogICAgICAgICBudW1fZmllbGRzID0gbGVuKGZpZWxkX25hbWVzKSwKICAgICAgICAgYXJnX2xpc3QgPSByZXByKHR1cGxlKGZpZWxkX25hbWVzKSkucmVwbGFjZSgiJyIsICIiKVsxOi0xXSwKLSAgICAgICAgcmVwcl9mbXQgPSAnLCAnLmpvaW4oX3JlcHJfdGVtcGxhdGUuZm9ybWF0KG5hbWU9bmFtZSkgZm9yIG5hbWUgaW4gZmllbGRfbmFtZXMpLAorICAgICAgICByZXByX2ZtdCA9ICcsICcuam9pbihfcmVwcl90ZW1wbGF0ZS5mb3JtYXQobmFtZT1uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWVsZF9uYW1lcyksCiAgICAgICAgIGZpZWxkX2RlZnMgPSAnXG4nLmpvaW4oX2ZpZWxkX3RlbXBsYXRlLmZvcm1hdChpbmRleD1pbmRleCwgbmFtZT1uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbmRleCwgbmFtZSBpbiBlbnVtZXJhdGUoZmllbGRfbmFtZXMpKQogICAgICkKIAotICAgICMgRXhlY3V0ZSB0aGUgdGVtcGxhdGUgc3RyaW5nIGluIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBhbmQKLSAgICAjIHN1cHBvcnQgdHJhY2luZyB1dGlsaXRpZXMgYnkgc2V0dGluZyBhIHZhbHVlIGZvciBmcmFtZS5mX2dsb2JhbHNbJ19fbmFtZV9fJ10KKyAgICAjIEV4ZWN1dGUgdGhlIHRlbXBsYXRlIHN0cmluZyBpbiBhIHRlbXBvcmFyeSBuYW1lc3BhY2UgYW5kIHN1cHBvcnQKKyAgICAjIHRyYWNpbmcgdXRpbGl0aWVzIGJ5IHNldHRpbmcgYSB2YWx1ZSBmb3IgZnJhbWUuZl9nbG9iYWxzWydfX25hbWVfXyddCiAgICAgbmFtZXNwYWNlID0gZGljdChfX25hbWVfXz0nbmFtZWR0dXBsZV8lcycgJSB0eXBlbmFtZSkKICAgICB0cnk6CiAgICAgICAgIGV4ZWMoY2xhc3NfZGVmaW5pdGlvbiwgbmFtZXNwYWNlKQogICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlOgogICAgICAgICByYWlzZSBTeW50YXhFcnJvcihlLm1zZyArICc6XG5cbicgKyBjbGFzc19kZWZpbml0aW9uKQogICAgIHJlc3VsdCA9IG5hbWVzcGFjZVt0eXBlbmFtZV0KKyAgICByZXN1bHQuX3NvdXJjZSA9IGNsYXNzX2RlZmluaXRpb24KICAgICBpZiB2ZXJib3NlOgotICAgICAgICBwcmludChjbGFzc19kZWZpbml0aW9uKQorICAgICAgICBwcmludChyZXN1bHQuX3NvdXJjZSkKIAogICAgICMgRm9yIHBpY2tsaW5nIHRvIHdvcmssIHRoZSBfX21vZHVsZV9fIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHNldCB0byB0aGUgZnJhbWUKICAgICAjIHdoZXJlIHRoZSBuYW1lZCB0dXBsZSBpcyBjcmVhdGVkLiAgQnlwYXNzIHRoaXMgc3RlcCBpbiBlbnZpcm9tZW50cyB3aGVyZQpAQCAtNjc0LDEyICs2ODEsODYgQEAKICAgICAgICAgICAgICAgICByZXN1bHRbZWxlbV0gPSBuZXdjb3VudAogICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYgX19wb3NfXyhzZWxmKToKKyAgICAgICAgJ0FkZHMgYW4gZW1wdHkgY291bnRlciwgZWZmZWN0aXZlbHkgc3RyaXBwaW5nIG5lZ2F0aXZlIGFuZCB6ZXJvIGNvdW50cycKKyAgICAgICAgcmV0dXJuIHNlbGYgKyBDb3VudGVyKCkKKworICAgIGRlZiBfX25lZ19fKHNlbGYpOgorICAgICAgICAnJydTdWJ0cmFjdHMgZnJvbSBhbiBlbXB0eSBjb3VudGVyLiAgU3RyaXBzIHBvc2l0aXZlIGFuZCB6ZXJvIGNvdW50cywKKyAgICAgICAgYW5kIGZsaXBzIHRoZSBzaWduIG9uIG5lZ2F0aXZlIGNvdW50cy4KKworICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIENvdW50ZXIoKSAtIHNlbGYKKworICAgIGRlZiBfa2VlcF9wb3NpdGl2ZShzZWxmKToKKyAgICAgICAgJycnSW50ZXJuYWwgbWV0aG9kIHRvIHN0cmlwIGVsZW1lbnRzIHdpdGggYSBuZWdhdGl2ZSBvciB6ZXJvIGNvdW50JycnCisgICAgICAgIG5vbnBvc2l0aXZlID0gW2VsZW0gZm9yIGVsZW0sIGNvdW50IGluIHNlbGYuaXRlbXMoKSBpZiBub3QgY291bnQgPiAwXQorICAgICAgICBmb3IgZWxlbSBpbiBub25wb3NpdGl2ZToKKyAgICAgICAgICAgIGRlbCBzZWxmW2VsZW1dCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19pYWRkX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAnJydJbnBsYWNlIGFkZCBmcm9tIGFub3RoZXIgY291bnRlciwga2VlcGluZyBvbmx5IHBvc2l0aXZlIGNvdW50cy4KKworICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2FiYmInKQorICAgICAgICA+Pj4gYyArPSBDb3VudGVyKCdiY2MnKQorICAgICAgICA+Pj4gYworICAgICAgICBDb3VudGVyKHsnYic6IDQsICdjJzogMiwgJ2EnOiAxfSkKKworICAgICAgICAnJycKKyAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIG90aGVyLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmW2VsZW1dICs9IGNvdW50CisgICAgICAgIHJldHVybiBzZWxmLl9rZWVwX3Bvc2l0aXZlKCkKKworICAgIGRlZiBfX2lzdWJfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICcnJ0lucGxhY2Ugc3VidHJhY3QgY291bnRlciwgYnV0IGtlZXAgb25seSByZXN1bHRzIHdpdGggcG9zaXRpdmUgY291bnRzLgorCisgICAgICAgID4+PiBjID0gQ291bnRlcignYWJiYmMnKQorICAgICAgICA+Pj4gYyAtPSBDb3VudGVyKCdiY2NkJykKKyAgICAgICAgPj4+IGMKKyAgICAgICAgQ291bnRlcih7J2InOiAyLCAnYSc6IDF9KQorCisgICAgICAgICcnJworICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gb3RoZXIuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGZbZWxlbV0gLT0gY291bnQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tlZXBfcG9zaXRpdmUoKQorCisgICAgZGVmIF9faW9yX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAnJydJbnBsYWNlIHVuaW9uIGlzIHRoZSBtYXhpbXVtIG9mIHZhbHVlIGZyb20gZWl0aGVyIGNvdW50ZXIuCisKKyAgICAgICAgPj4+IGMgPSBDb3VudGVyKCdhYmJiJykKKyAgICAgICAgPj4+IGMgfD0gQ291bnRlcignYmNjJykKKyAgICAgICAgPj4+IGMKKyAgICAgICAgQ291bnRlcih7J2InOiAzLCAnYyc6IDIsICdhJzogMX0pCisKKyAgICAgICAgJycnCisgICAgICAgIGZvciBlbGVtLCBvdGhlcl9jb3VudCBpbiBvdGhlci5pdGVtcygpOgorICAgICAgICAgICAgY291bnQgPSBzZWxmW2VsZW1dCisgICAgICAgICAgICBpZiBvdGhlcl9jb3VudCA+IGNvdW50OgorICAgICAgICAgICAgICAgIHNlbGZbZWxlbV0gPSBvdGhlcl9jb3VudAorICAgICAgICByZXR1cm4gc2VsZi5fa2VlcF9wb3NpdGl2ZSgpCisKKyAgICBkZWYgX19pYW5kX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAnJydJbnBsYWNlIGludGVyc2VjdGlvbiBpcyB0aGUgbWluaW11bSBvZiBjb3JyZXNwb25kaW5nIGNvdW50cy4KKworICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2FiYmInKQorICAgICAgICA+Pj4gYyAmPSBDb3VudGVyKCdiY2MnKQorICAgICAgICA+Pj4gYworICAgICAgICBDb3VudGVyKHsnYic6IDF9KQorCisgICAgICAgICcnJworICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gc2VsZi5pdGVtcygpOgorICAgICAgICAgICAgb3RoZXJfY291bnQgPSBvdGhlcltlbGVtXQorICAgICAgICAgICAgaWYgb3RoZXJfY291bnQgPCBjb3VudDoKKyAgICAgICAgICAgICAgICBzZWxmW2VsZW1dID0gb3RoZXJfY291bnQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tlZXBfcG9zaXRpdmUoKQorCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjICBDaGFpbk1hcCAoaGVscGVyIGZvciBjb25maWdwYXJzZXIpCisjIyMgIENoYWluTWFwIChoZWxwZXIgZm9yIGNvbmZpZ3BhcnNlciBhbmQgc3RyaW5nLlRlbXBsYXRlKQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWNsYXNzIF9DaGFpbk1hcChNdXRhYmxlTWFwcGluZyk6CitjbGFzcyBDaGFpbk1hcChNdXRhYmxlTWFwcGluZyk6CiAgICAgJycnIEEgQ2hhaW5NYXAgZ3JvdXBzIG11bHRpcGxlIGRpY3RzIChvciBvdGhlciBtYXBwaW5ncykgdG9nZXRoZXIKICAgICB0byBjcmVhdGUgYSBzaW5nbGUsIHVwZGF0ZWFibGUgdmlldy4KIApAQCAtODkwLDYgKzk3MSw4IEBACiAgICAgZGVmIGluc2VydChzZWxmLCBpLCBpdGVtKTogc2VsZi5kYXRhLmluc2VydChpLCBpdGVtKQogICAgIGRlZiBwb3Aoc2VsZiwgaT0tMSk6IHJldHVybiBzZWxmLmRhdGEucG9wKGkpCiAgICAgZGVmIHJlbW92ZShzZWxmLCBpdGVtKTogc2VsZi5kYXRhLnJlbW92ZShpdGVtKQorICAgIGRlZiBjbGVhcihzZWxmKTogc2VsZi5kYXRhLmNsZWFyKCkKKyAgICBkZWYgY29weShzZWxmKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYpCiAgICAgZGVmIGNvdW50KHNlbGYsIGl0ZW0pOiByZXR1cm4gc2VsZi5kYXRhLmNvdW50KGl0ZW0pCiAgICAgZGVmIGluZGV4KHNlbGYsIGl0ZW0sICphcmdzKTogcmV0dXJuIHNlbGYuZGF0YS5pbmRleChpdGVtLCAqYXJncykKICAgICBkZWYgcmV2ZXJzZShzZWxmKTogc2VsZi5kYXRhLnJldmVyc2UoKQpAQCAtMTAzNCw3ICsxMTE3LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5zcGxpdChzZXAsIG1heHNwbGl0KQogICAgIGRlZiByc3BsaXQoc2VsZiwgc2VwPU5vbmUsIG1heHNwbGl0PS0xKToKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5yc3BsaXQoc2VwLCBtYXhzcGxpdCkKLSAgICBkZWYgc3BsaXRsaW5lcyhzZWxmLCBrZWVwZW5kcz0wKTogcmV0dXJuIHNlbGYuZGF0YS5zcGxpdGxpbmVzKGtlZXBlbmRzKQorICAgIGRlZiBzcGxpdGxpbmVzKHNlbGYsIGtlZXBlbmRzPUZhbHNlKTogcmV0dXJuIHNlbGYuZGF0YS5zcGxpdGxpbmVzKGtlZXBlbmRzKQogICAgIGRlZiBzdGFydHN3aXRoKHNlbGYsIHByZWZpeCwgc3RhcnQ9MCwgZW5kPV9zeXMubWF4c2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEuc3RhcnRzd2l0aChwcmVmaXgsIHN0YXJ0LCBlbmQpCiAgICAgZGVmIHN0cmlwKHNlbGYsIGNoYXJzPU5vbmUpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnN0cmlwKGNoYXJzKSkKQEAgLTEwNDQsNDQgKzExMjcsMyBAQAogICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnRyYW5zbGF0ZSgqYXJncykpCiAgICAgZGVmIHVwcGVyKHNlbGYpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnVwcGVyKCkpCiAgICAgZGVmIHpmaWxsKHNlbGYsIHdpZHRoKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS56ZmlsbCh3aWR0aCkpCi0KLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjIFNpbXBsZSB0ZXN0cwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAjIHZlcmlmeSB0aGF0IGluc3RhbmNlcyBjYW4gYmUgcGlja2xlZAotICAgIGZyb20gcGlja2xlIGltcG9ydCBsb2FkcywgZHVtcHMKLSAgICBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3gsIHknLCBUcnVlKQotICAgIHAgPSBQb2ludCh4PTEwLCB5PTIwKQotICAgIGFzc2VydCBwID09IGxvYWRzKGR1bXBzKHApKQotCi0gICAgIyB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIG1ldGhvZHMKLSAgICBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgICAgIF9fc2xvdHNfXyA9ICgpCi0gICAgICAgIEBwcm9wZXJ0eQotICAgICAgICBkZWYgaHlwb3Qoc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gKHNlbGYueCAqKiAyICsgc2VsZi55ICoqIDIpICoqIDAuNQotICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAnUG9pbnQ6IHg9JTYuM2YgIHk9JTYuM2YgIGh5cG90PSU2LjNmJyAlIChzZWxmLngsIHNlbGYueSwgc2VsZi5oeXBvdCkKLQotICAgIGZvciBwIGluIFBvaW50KDMsIDQpLCBQb2ludCgxNCwgNS83Lik6Ci0gICAgICAgIHByaW50IChwKQotCi0gICAgY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgotICAgICAgICAnUG9pbnQgY2xhc3Mgd2l0aCBvcHRpbWl6ZWQgX21ha2UoKSBhbmQgX3JlcGxhY2UoKSB3aXRob3V0IGVycm9yLWNoZWNraW5nJwotICAgICAgICBfX3Nsb3RzX18gPSAoKQotICAgICAgICBfbWFrZSA9IGNsYXNzbWV0aG9kKHR1cGxlLl9fbmV3X18pCi0gICAgICAgIGRlZiBfcmVwbGFjZShzZWxmLCBfbWFwPW1hcCwgKiprd2RzKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9tYWtlKF9tYXAoa3dkcy5nZXQsICgneCcsICd5JyksIHNlbGYpKQotCi0gICAgcHJpbnQoUG9pbnQoMTEsIDIyKS5fcmVwbGFjZSh4PTEwMCkpCi0KLSAgICBQb2ludDNEID0gbmFtZWR0dXBsZSgnUG9pbnQzRCcsIFBvaW50Ll9maWVsZHMgKyAoJ3onLCkpCi0gICAgcHJpbnQoUG9pbnQzRC5fX2RvY19fKQotCi0gICAgaW1wb3J0IGRvY3Rlc3QKLSAgICBUZXN0UmVzdWx0cyA9IG5hbWVkdHVwbGUoJ1Rlc3RSZXN1bHRzJywgJ2ZhaWxlZCBhdHRlbXB0ZWQnKQotICAgIHByaW50KFRlc3RSZXN1bHRzKCpkb2N0ZXN0LnRlc3Rtb2QoKSkpCmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYzZTM4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9jb2xsZWN0aW9ucy9fX21haW5fXy5weQpAQCAtMCwwICsxLDM4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIFNpbXBsZSB0ZXN0cworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyB2ZXJpZnkgdGhhdCBpbnN0YW5jZXMgY2FuIGJlIHBpY2tsZWQKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gcGlja2xlIGltcG9ydCBsb2FkcywgZHVtcHMKK1BvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCwgeScsIFRydWUpCitwID0gUG9pbnQoeD0xMCwgeT0yMCkKK2Fzc2VydCBwID09IGxvYWRzKGR1bXBzKHApKQorCisjIHRlc3QgYW5kIGRlbW9uc3RyYXRlIGFiaWxpdHkgdG8gb3ZlcnJpZGUgbWV0aG9kcworY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgorICAgIF9fc2xvdHNfXyA9ICgpCisgICAgQHByb3BlcnR5CisgICAgZGVmIGh5cG90KHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYueCAqKiAyICsgc2VsZi55ICoqIDIpICoqIDAuNQorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJ1BvaW50OiB4PSU2LjNmICB5PSU2LjNmICBoeXBvdD0lNi4zZicgJSAoc2VsZi54LCBzZWxmLnksIHNlbGYuaHlwb3QpCisKK2ZvciBwIGluIFBvaW50KDMsIDQpLCBQb2ludCgxNCwgNS83Lik6CisgICAgcHJpbnQgKHApCisKK2NsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKKyAgICAnUG9pbnQgY2xhc3Mgd2l0aCBvcHRpbWl6ZWQgX21ha2UoKSBhbmQgX3JlcGxhY2UoKSB3aXRob3V0IGVycm9yLWNoZWNraW5nJworICAgIF9fc2xvdHNfXyA9ICgpCisgICAgX21ha2UgPSBjbGFzc21ldGhvZCh0dXBsZS5fX25ld19fKQorICAgIGRlZiBfcmVwbGFjZShzZWxmLCBfbWFwPW1hcCwgKiprd2RzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21ha2UoX21hcChrd2RzLmdldCwgKCd4JywgJ3knKSwgc2VsZikpCisKK3ByaW50KFBvaW50KDExLCAyMikuX3JlcGxhY2UoeD0xMDApKQorCitQb2ludDNEID0gbmFtZWR0dXBsZSgnUG9pbnQzRCcsIFBvaW50Ll9maWVsZHMgKyAoJ3onLCkpCitwcmludChQb2ludDNELl9fZG9jX18pCisKK2ltcG9ydCBkb2N0ZXN0LCBjb2xsZWN0aW9ucworVGVzdFJlc3VsdHMgPSBuYW1lZHR1cGxlKCdUZXN0UmVzdWx0cycsICdmYWlsZWQgYXR0ZW1wdGVkJykKK3ByaW50KFRlc3RSZXN1bHRzKCpkb2N0ZXN0LnRlc3Rtb2QoY29sbGVjdGlvbnMpKSkKZGlmZiAtLWdpdCBhL0xpYi9fYWJjb2xsLnB5IGIvTGliL2NvbGxlY3Rpb25zL2FiYy5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvX2FiY29sbC5weQpyZW5hbWUgdG8gTGliL2NvbGxlY3Rpb25zL2FiYy5weQppbmRleCAyNDE3ZDE4Li5kMTdjZmRjIDEwMDY0NAotLS0gYS9MaWIvX2FiY29sbC5weQorKysgYi9MaWIvY29sbGVjdGlvbnMvYWJjLnB5CkBAIC0zLDkgKzMsNyBAQAogCiAiIiJBYnN0cmFjdCBCYXNlIENsYXNzZXMgKEFCQ3MpIGZvciBjb2xsZWN0aW9ucywgYWNjb3JkaW5nIHRvIFBFUCAzMTE5LgogCi1ET04nVCBVU0UgVEhJUyBNT0RVTEUgRElSRUNUTFkhICBUaGUgY2xhc3NlcyBoZXJlIHNob3VsZCBiZSBpbXBvcnRlZAotdmlhIGNvbGxlY3Rpb25zOyB0aGV5IGFyZSBkZWZpbmVkIGhlcmUgb25seSB0byBhbGxldmlhdGUgY2VydGFpbgotYm9vdHN0cmFwcGluZyBpc3N1ZXMuICBVbml0IHRlc3RzIGFyZSBpbiB0ZXN0X2NvbGxlY3Rpb25zLgorVW5pdCB0ZXN0cyBhcmUgaW4gdGVzdF9jb2xsZWN0aW9ucy4KICIiIgogCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKQEAgLTIwLDkgKzE4LDEzIEBACiAgICAgICAgICAgICJCeXRlU3RyaW5nIiwKICAgICAgICAgICAgXQogCi0KLSMjIyBjb2xsZWN0aW9uIHJlbGF0ZWQgdHlwZXMgd2hpY2ggYXJlIG5vdCBleHBvc2VkIHRocm91Z2ggYnVpbHRpbiAjIyMKLSMjIGl0ZXJhdG9ycyAjIworIyBQcml2YXRlIGxpc3Qgb2YgdHlwZXMgdGhhdCB3ZSB3YW50IHRvIHJlZ2lzdGVyIHdpdGggdGhlIHZhcmlvdXMgQUJDcworIyBzbyB0aGF0IHRoZXkgd2lsbCBwYXNzIHRlc3RzIGxpa2U6CisjICAgICAgIGl0ID0gaXRlcihzb21lYnl0ZWFycmF5KQorIyAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdCwgSXRlcmFibGUpCisjIE5vdGU6ICBpbiBvdGhlciBpbXBsZW1lbnRhdGlvbnMsIHRoZXNlIHR5cGVzIG1hbnkgbm90IGJlIGRpc3RpbmN0CisjIGFuZCB0aGV5IG1ha2UgaGF2ZSB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdHlwZXMgdGhhdAorIyBhcmUgbm90IGluY2x1ZGVkIG9uIHRoaXMgbGlzdC4KIGJ5dGVzX2l0ZXJhdG9yID0gdHlwZShpdGVyKGInJykpCiBieXRlYXJyYXlfaXRlcmF0b3IgPSB0eXBlKGl0ZXIoYnl0ZWFycmF5KCkpKQogI2NhbGxhYmxlX2l0ZXJhdG9yID0gPz8/CkBAIC00MSwxMyArNDMsMTUgQEAKIGRpY3RfdmFsdWVzID0gdHlwZSh7fS52YWx1ZXMoKSkKIGRpY3RfaXRlbXMgPSB0eXBlKHt9Lml0ZW1zKCkpCiAjIyBtaXNjICMjCi1kaWN0X3Byb3h5ID0gdHlwZSh0eXBlLl9fZGljdF9fKQorbWFwcGluZ3Byb3h5ID0gdHlwZSh0eXBlLl9fZGljdF9fKQogCiAKICMjIyBPTkUtVFJJQ0sgUE9OSUVTICMjIwogCiBjbGFzcyBIYXNoYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gMApAQCAtNjUsNiArNjksOCBAQAogCiBjbGFzcyBJdGVyYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICB3aGlsZSBGYWxzZToKQEAgLTgwLDYgKzg2LDggQEAKIAogY2xhc3MgSXRlcmF0b3IoSXRlcmFibGUpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX25leHRfXyhzZWxmKToKICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgpAQCAtMTExLDYgKzExOSw4IEBACiAKIGNsYXNzIFNpemVkKG1ldGFjbGFzcz1BQkNNZXRhKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICAgcmV0dXJuIDAKQEAgLTEyNSw2ICsxMzUsOCBAQAogCiBjbGFzcyBDb250YWluZXIobWV0YWNsYXNzPUFCQ01ldGEpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgeCk6CiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTM5LDYgKzE1MSw4IEBACiAKIGNsYXNzIENhbGxhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTY2LDYgKzE4MCw4IEBACiAgICAgdGhlbiB0aGUgb3RoZXIgb3BlcmF0aW9ucyB3aWxsIGF1dG9tYXRpY2FsbHkgZm9sbG93IHN1aXQuCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBTZXQpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCkBAIC0yNzcsNiArMjkzLDggQEAKIAogY2xhc3MgTXV0YWJsZVNldChTZXQpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBhZGQoc2VsZiwgdmFsdWUpOgogICAgICAgICAiIiJBZGQgYW4gZWxlbWVudC4iIiIKQEAgLTM1MCw2ICszNjgsOCBAQAogCiBjbGFzcyBNYXBwaW5nKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICAgcmFpc2UgS2V5RXJyb3IKQEAgLTM4NSw2ICs0MDUsOCBAQAogICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICByZXR1cm4gbm90IChzZWxmID09IG90aGVyKQogCitNYXBwaW5nLnJlZ2lzdGVyKG1hcHBpbmdwcm94eSkKKwogCiBjbGFzcyBNYXBwaW5nVmlldyhTaXplZCk6CiAKQEAgLTQ1Myw2ICs0NzUsOCBAQAogCiBjbGFzcyBNdXRhYmxlTWFwcGluZyhNYXBwaW5nKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIHJhaXNlIEtleUVycm9yCkBAIC01MzIsNiArNTU2LDggQEAKICAgICBfX2dldGl0ZW1fXywgYW5kIF9fbGVuX18uCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KToKICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgpAQCAtNTc3LDEyICs2MDMsMTYgQEAKICAgICBYWFggU2hvdWxkIGFkZCBhbGwgdGhlaXIgbWV0aG9kcy4KICAgICAiIiIKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKIEJ5dGVTdHJpbmcucmVnaXN0ZXIoYnl0ZXMpCiBCeXRlU3RyaW5nLnJlZ2lzdGVyKGJ5dGVhcnJheSkKIAogCiBjbGFzcyBNdXRhYmxlU2VxdWVuY2UoU2VxdWVuY2UpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpbmRleCwgdmFsdWUpOgogICAgICAgICByYWlzZSBJbmRleEVycm9yCkBAIC01OTgsNiArNjI4LDEzIEBACiAgICAgZGVmIGFwcGVuZChzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHNlbGYuaW5zZXJ0KGxlbihzZWxmKSwgdmFsdWUpCiAKKyAgICBkZWYgY2xlYXIoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgc2VsZi5wb3AoKQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKwogICAgIGRlZiByZXZlcnNlKHNlbGYpOgogICAgICAgICBuID0gbGVuKHNlbGYpCiAgICAgICAgIGZvciBpIGluIHJhbmdlKG4vLzIpOgpkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weSBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkKaW5kZXggOWYxMWY2OS4uMWUwOThiZSAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5CkBAIC00LDcgKzQsNiBAQAogX19hdXRob3JfXyA9ICdCcmlhbiBRdWlubGFuIChicmlhbkBzd2VldGFwcC5jb20pJwogCiBpbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQpAQCAtNDcxLDggKzQ3MCw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgTE9HR0VSLmNyaXRpY2FsKCdGdXR1cmUgJXMgaW4gdW5leHBlY3RlZCBzdGF0ZTogJXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmLmZ1dHVyZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnV0dXJlLl9zdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRlKQogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRnV0dXJlIGluIHVuZXhwZWN0ZWQgc3RhdGUnKQogCiAgICAgZGVmIHNldF9yZXN1bHQoc2VsZiwgcmVzdWx0KToKQEAgLTUzOCwxNSArNTM3LDE5IEBACiAKICAgICAgICAgZnMgPSBbc2VsZi5zdWJtaXQoZm4sICphcmdzKSBmb3IgYXJncyBpbiB6aXAoKml0ZXJhYmxlcyldCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIGZ1dHVyZSBpbiBmczoKLSAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGZ1dHVyZS5yZXN1bHQoKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGZ1dHVyZS5yZXN1bHQoZW5kX3RpbWUgLSB0aW1lLnRpbWUoKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvciBmdXR1cmUgaW4gZnM6Ci0gICAgICAgICAgICAgICAgZnV0dXJlLmNhbmNlbCgpCisgICAgICAgICMgWWllbGQgbXVzdCBiZSBoaWRkZW4gaW4gY2xvc3VyZSBzbyB0aGF0IHRoZSBmdXR1cmVzIGFyZSBzdWJtaXR0ZWQKKyAgICAgICAgIyBiZWZvcmUgdGhlIGZpcnN0IGl0ZXJhdG9yIHZhbHVlIGlzIHJlcXVpcmVkLgorICAgICAgICBkZWYgcmVzdWx0X2l0ZXJhdG9yKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIGZ1dHVyZSBpbiBmczoKKyAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZnV0dXJlLnJlc3VsdCgpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBmdXR1cmUucmVzdWx0KGVuZF90aW1lIC0gdGltZS50aW1lKCkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZvciBmdXR1cmUgaW4gZnM6CisgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS5jYW5jZWwoKQorICAgICAgICByZXR1cm4gcmVzdWx0X2l0ZXJhdG9yKCkKIAogICAgIGRlZiBzaHV0ZG93bihzZWxmLCB3YWl0PVRydWUpOgogICAgICAgICAiIiJDbGVhbi11cCB0aGUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgRXhlY3V0b3IuCmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkKaW5kZXggZDNiYmUyYy4uMDQyMzhhNyAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weQpAQCAtNDYsOSArNDYsMTIgQEAKIF9fYXV0aG9yX18gPSAnQnJpYW4gUXVpbmxhbiAoYnJpYW5Ac3dlZXRhcHAuY29tKScKIAogaW1wb3J0IGF0ZXhpdAoraW1wb3J0IG9zCiBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgX2Jhc2UKIGltcG9ydCBxdWV1ZQogaW1wb3J0IG11bHRpcHJvY2Vzc2luZworZnJvbSBtdWx0aXByb2Nlc3NpbmcucXVldWVzIGltcG9ydCBTaW1wbGVRdWV1ZSwgRnVsbAorZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHdlYWtyZWYKIApAQCAtMTIxLDcgKzEyNCw3IEBACiAgICAgICAgIGNhbGxfaXRlbSA9IGNhbGxfcXVldWUuZ2V0KGJsb2NrPVRydWUpCiAgICAgICAgIGlmIGNhbGxfaXRlbSBpcyBOb25lOgogICAgICAgICAgICAgIyBXYWtlIHVwIHF1ZXVlIG1hbmFnZW1lbnQgdGhyZWFkCi0gICAgICAgICAgICByZXN1bHRfcXVldWUucHV0KE5vbmUpCisgICAgICAgICAgICByZXN1bHRfcXVldWUucHV0KG9zLmdldHBpZCgpKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHIgPSBjYWxsX2l0ZW0uZm4oKmNhbGxfaXRlbS5hcmdzLCAqKmNhbGxfaXRlbS5rd2FyZ3MpCkBAIC0xOTMsNDYgKzE5Niw5MiBAQAogICAgICAgICByZXN1bHRfcXVldWU6IEEgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlIG9mIF9SZXN1bHRJdGVtcyBnZW5lcmF0ZWQgYnkgdGhlCiAgICAgICAgICAgICBwcm9jZXNzIHdvcmtlcnMuCiAgICAgIiIiCi0gICAgbmJfc2h1dGRvd25fcHJvY2Vzc2VzID0gMAotICAgIGRlZiBzaHV0ZG93bl9vbmVfcHJvY2VzcygpOgotICAgICAgICAiIiJUZWxsIGEgd29ya2VyIHRvIHRlcm1pbmF0ZSwgd2hpY2ggd2lsbCBpbiB0dXJuIHdha2UgdXMgYWdhaW4iIiIKLSAgICAgICAgbm9ubG9jYWwgbmJfc2h1dGRvd25fcHJvY2Vzc2VzCi0gICAgICAgIGNhbGxfcXVldWUucHV0KE5vbmUpCi0gICAgICAgIG5iX3NodXRkb3duX3Byb2Nlc3NlcyArPSAxCisgICAgZXhlY3V0b3IgPSBOb25lCisKKyAgICBkZWYgc2h1dHRpbmdfZG93bigpOgorICAgICAgICByZXR1cm4gX3NodXRkb3duIG9yIGV4ZWN1dG9yIGlzIE5vbmUgb3IgZXhlY3V0b3IuX3NodXRkb3duX3RocmVhZAorCisgICAgZGVmIHNodXRkb3duX3dvcmtlcigpOgorICAgICAgICAjIFRoaXMgaXMgYW4gdXBwZXIgYm91bmQKKyAgICAgICAgbmJfY2hpbGRyZW5fYWxpdmUgPSBzdW0ocC5pc19hbGl2ZSgpIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbmJfY2hpbGRyZW5fYWxpdmUpOgorICAgICAgICAgICAgY2FsbF9xdWV1ZS5wdXRfbm93YWl0KE5vbmUpCisgICAgICAgICMgUmVsZWFzZSB0aGUgcXVldWUncyByZXNvdXJjZXMgYXMgc29vbiBhcyBwb3NzaWJsZS4KKyAgICAgICAgY2FsbF9xdWV1ZS5jbG9zZSgpCisgICAgICAgICMgSWYgLmpvaW4oKSBpcyBub3QgY2FsbGVkIG9uIHRoZSBjcmVhdGVkIHByb2Nlc3NlcyB0aGVuCisgICAgICAgICMgc29tZSBtdWx0aXByb2Nlc3NpbmcuUXVldWUgbWV0aG9kcyBtYXkgZGVhZGxvY2sgb24gTWFjIE9TIFguCisgICAgICAgIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKToKKyAgICAgICAgICAgIHAuam9pbigpCisKKyAgICByZWFkZXIgPSByZXN1bHRfcXVldWUuX3JlYWRlcgorCiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgX2FkZF9jYWxsX2l0ZW1fdG9fcXVldWUocGVuZGluZ193b3JrX2l0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrX2lkc19xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9xdWV1ZSkKIAotICAgICAgICByZXN1bHRfaXRlbSA9IHJlc3VsdF9xdWV1ZS5nZXQoYmxvY2s9VHJ1ZSkKLSAgICAgICAgaWYgcmVzdWx0X2l0ZW0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3b3JrX2l0ZW0gPSBwZW5kaW5nX3dvcmtfaXRlbXNbcmVzdWx0X2l0ZW0ud29ya19pZF0KLSAgICAgICAgICAgIGRlbCBwZW5kaW5nX3dvcmtfaXRlbXNbcmVzdWx0X2l0ZW0ud29ya19pZF0KLQotICAgICAgICAgICAgaWYgcmVzdWx0X2l0ZW0uZXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X2V4Y2VwdGlvbihyZXN1bHRfaXRlbS5leGNlcHRpb24pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X3Jlc3VsdChyZXN1bHRfaXRlbS5yZXN1bHQpCisgICAgICAgIHNlbnRpbmVscyA9IFtwLnNlbnRpbmVsIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKV0KKyAgICAgICAgYXNzZXJ0IHNlbnRpbmVscworICAgICAgICByZWFkeSA9IHdhaXQoW3JlYWRlcl0gKyBzZW50aW5lbHMpCisgICAgICAgIGlmIHJlYWRlciBpbiByZWFkeToKKyAgICAgICAgICAgIHJlc3VsdF9pdGVtID0gcmVhZGVyLnJlY3YoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBNYXJrIHRoZSBwcm9jZXNzIHBvb2wgYnJva2VuIHNvIHRoYXQgc3VibWl0cyBmYWlsIHJpZ2h0IG5vdy4KKyAgICAgICAgICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfcmVmZXJlbmNlKCkKKyAgICAgICAgICAgIGlmIGV4ZWN1dG9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGV4ZWN1dG9yLl9icm9rZW4gPSBUcnVlCisgICAgICAgICAgICAgICAgZXhlY3V0b3IuX3NodXRkb3duX3RocmVhZCA9IFRydWUKKyAgICAgICAgICAgICAgICBleGVjdXRvciA9IE5vbmUKKyAgICAgICAgICAgICMgQWxsIGZ1dHVyZXMgaW4gZmxpZ2h0IG11c3QgYmUgbWFya2VkIGZhaWxlZAorICAgICAgICAgICAgZm9yIHdvcmtfaWQsIHdvcmtfaXRlbSBpbiBwZW5kaW5nX3dvcmtfaXRlbXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9leGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgIEJyb2tlblByb2Nlc3NQb29sKAorICAgICAgICAgICAgICAgICAgICAgICAgIkEgcHJvY2VzcyBpbiB0aGUgcHJvY2VzcyBwb29sIHdhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAidGVybWluYXRlZCBhYnJ1cHRseSB3aGlsZSB0aGUgZnV0dXJlIHdhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAicnVubmluZyBvciBwZW5kaW5nLiIKKyAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHBlbmRpbmdfd29ya19pdGVtcy5jbGVhcigpCisgICAgICAgICAgICAjIFRlcm1pbmF0ZSByZW1haW5pbmcgd29ya2VycyBmb3JjaWJseTogdGhlIHF1ZXVlcyBvciB0aGVpcgorICAgICAgICAgICAgIyBsb2NrcyBtYXkgYmUgaW4gYSBkaXJ0eSBzdGF0ZSBhbmQgYmxvY2sgZm9yZXZlci4KKyAgICAgICAgICAgIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBwLnRlcm1pbmF0ZSgpCisgICAgICAgICAgICBzaHV0ZG93bl93b3JrZXIoKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0X2l0ZW0sIGludCk6CisgICAgICAgICAgICAjIENsZWFuIHNodXRkb3duIG9mIGEgd29ya2VyIHVzaW5nIGl0cyBQSUQKKyAgICAgICAgICAgICMgKGF2b2lkcyBtYXJraW5nIHRoZSBleGVjdXRvciBicm9rZW4pCisgICAgICAgICAgICBhc3NlcnQgc2h1dHRpbmdfZG93bigpCisgICAgICAgICAgICBwID0gcHJvY2Vzc2VzLnBvcChyZXN1bHRfaXRlbSkKKyAgICAgICAgICAgIHAuam9pbigpCisgICAgICAgICAgICBpZiBub3QgcHJvY2Vzc2VzOgorICAgICAgICAgICAgICAgIHNodXRkb3duX3dvcmtlcigpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVsaWYgcmVzdWx0X2l0ZW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3b3JrX2l0ZW0gPSBwZW5kaW5nX3dvcmtfaXRlbXMucG9wKHJlc3VsdF9pdGVtLndvcmtfaWQsIE5vbmUpCisgICAgICAgICAgICAjIHdvcmtfaXRlbSBjYW4gYmUgTm9uZSBpZiBhbm90aGVyIHByb2Nlc3MgdGVybWluYXRlZCAoc2VlIGFib3ZlKQorICAgICAgICAgICAgaWYgd29ya19pdGVtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHJlc3VsdF9pdGVtLmV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgd29ya19pdGVtLmZ1dHVyZS5zZXRfZXhjZXB0aW9uKHJlc3VsdF9pdGVtLmV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9yZXN1bHQocmVzdWx0X2l0ZW0ucmVzdWx0KQogICAgICAgICAjIENoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIHN0YXJ0IHNodXR0aW5nIGRvd24uCiAgICAgICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfcmVmZXJlbmNlKCkKICAgICAgICAgIyBObyBtb3JlIHdvcmsgaXRlbXMgY2FuIGJlIGFkZGVkIGlmOgogICAgICAgICAjICAgLSBUaGUgaW50ZXJwcmV0ZXIgaXMgc2h1dHRpbmcgZG93biBPUgogICAgICAgICAjICAgLSBUaGUgZXhlY3V0b3IgdGhhdCBvd25zIHRoaXMgd29ya2VyIGhhcyBiZWVuIGNvbGxlY3RlZCBPUgogICAgICAgICAjICAgLSBUaGUgZXhlY3V0b3IgdGhhdCBvd25zIHRoaXMgd29ya2VyIGhhcyBiZWVuIHNodXRkb3duLgotICAgICAgICBpZiBfc2h1dGRvd24gb3IgZXhlY3V0b3IgaXMgTm9uZSBvciBleGVjdXRvci5fc2h1dGRvd25fdGhyZWFkOgotICAgICAgICAgICAgIyBTaW5jZSBubyBuZXcgd29yayBpdGVtcyBjYW4gYmUgYWRkZWQsIGl0IGlzIHNhZmUgdG8gc2h1dGRvd24KLSAgICAgICAgICAgICMgdGhpcyB0aHJlYWQgaWYgdGhlcmUgYXJlIG5vIHBlbmRpbmcgd29yayBpdGVtcy4KLSAgICAgICAgICAgIGlmIG5vdCBwZW5kaW5nX3dvcmtfaXRlbXM6Ci0gICAgICAgICAgICAgICAgd2hpbGUgbmJfc2h1dGRvd25fcHJvY2Vzc2VzIDwgbGVuKHByb2Nlc3Nlcyk6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRkb3duX29uZV9wcm9jZXNzKCkKLSAgICAgICAgICAgICAgICAjIElmIC5qb2luKCkgaXMgbm90IGNhbGxlZCBvbiB0aGUgY3JlYXRlZCBwcm9jZXNzZXMgdGhlbgotICAgICAgICAgICAgICAgICMgc29tZSBtdWx0aXByb2Nlc3NpbmcuUXVldWUgbWV0aG9kcyBtYXkgZGVhZGxvY2sgb24gTWFjIE9TCi0gICAgICAgICAgICAgICAgIyBYLgotICAgICAgICAgICAgICAgIGZvciBwIGluIHByb2Nlc3NlczoKLSAgICAgICAgICAgICAgICAgICAgcC5qb2luKCkKLSAgICAgICAgICAgICAgICBjYWxsX3F1ZXVlLmNsb3NlKCkKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZGVsIGV4ZWN1dG9yCisgICAgICAgIGlmIHNodXR0aW5nX2Rvd24oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIFNpbmNlIG5vIG5ldyB3b3JrIGl0ZW1zIGNhbiBiZSBhZGRlZCwgaXQgaXMgc2FmZSB0byBzaHV0ZG93bgorICAgICAgICAgICAgICAgICMgdGhpcyB0aHJlYWQgaWYgdGhlcmUgYXJlIG5vIHBlbmRpbmcgd29yayBpdGVtcy4KKyAgICAgICAgICAgICAgICBpZiBub3QgcGVuZGluZ193b3JrX2l0ZW1zOgorICAgICAgICAgICAgICAgICAgICBzaHV0ZG93bl93b3JrZXIoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGV4Y2VwdCBGdWxsOgorICAgICAgICAgICAgICAgICMgVGhpcyBpcyBub3QgYSBwcm9ibGVtOiB3ZSB3aWxsIGV2ZW50dWFsbHkgYmUgd29rZW4gdXAgKGluCisgICAgICAgICAgICAgICAgIyByZXN1bHRfcXVldWUuZ2V0KCkpIGFuZCBiZSBhYmxlIHRvIHNlbmQgYSBzZW50aW5lbCBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGV4ZWN1dG9yID0gTm9uZQogCiBfc3lzdGVtX2xpbWl0c19jaGVja2VkID0gRmFsc2UKIF9zeXN0ZW1fbGltaXRlZCA9IE5vbmUKQEAgLTI0Myw3ICsyOTIsNiBAQAogICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihfc3lzdGVtX2xpbWl0ZWQpCiAgICAgX3N5c3RlbV9saW1pdHNfY2hlY2tlZCA9IFRydWUKICAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBvcwogICAgICAgICBuc2Vtc19tYXggPSBvcy5zeXNjb25mKCJTQ19TRU1fTlNFTVNfTUFYIikKICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgIyBzeXNjb25mIG5vdCBhdmFpbGFibGUgb3Igc2V0dGluZyBub3QgYXZhaWxhYmxlCkBAIC0yNTksNiArMzA3LDE0IEBACiAgICAgX3N5c3RlbV9saW1pdGVkID0gInN5c3RlbSBwcm92aWRlcyB0b28gZmV3IHNlbWFwaG9yZXMgKCVkIGF2YWlsYWJsZSwgMjU2IG5lY2Vzc2FyeSkiICUgbnNlbXNfbWF4CiAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihfc3lzdGVtX2xpbWl0ZWQpCiAKKworY2xhc3MgQnJva2VuUHJvY2Vzc1Bvb2woUnVudGltZUVycm9yKToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiBhIHByb2Nlc3MgaW4gYSBQcm9jZXNzUG9vbEV4ZWN1dG9yIHRlcm1pbmF0ZWQgYWJydXB0bHkKKyAgICB3aGlsZSBhIGZ1dHVyZSB3YXMgaW4gdGhlIHJ1bm5pbmcgc3RhdGUuCisgICAgIiIiCisKKwogY2xhc3MgUHJvY2Vzc1Bvb2xFeGVjdXRvcihfYmFzZS5FeGVjdXRvcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF93b3JrZXJzPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplcyBhIG5ldyBQcm9jZXNzUG9vbEV4ZWN1dG9yIGluc3RhbmNlLgpAQCAtMjgwLDE0ICszMzYsMjAgQEAKICAgICAgICAgIyBiZWNhdXNlIGZ1dHVyZXMgaW4gdGhlIGNhbGwgcXVldWUgY2Fubm90IGJlIGNhbmNlbGxlZC4KICAgICAgICAgc2VsZi5fY2FsbF9xdWV1ZSA9IG11bHRpcHJvY2Vzc2luZy5RdWV1ZShzZWxmLl9tYXhfd29ya2VycyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhUUkFfUVVFVUVEX0NBTExTKQotICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUgPSBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKQorICAgICAgICAjIEtpbGxlZCB3b3JrZXIgcHJvY2Vzc2VzIGNhbiBwcm9kdWNlIHNwdXJpb3VzICJicm9rZW4gcGlwZSIKKyAgICAgICAgIyB0cmFjZWJhY2tzIGluIHRoZSBxdWV1ZSdzIG93biB3b3JrZXIgdGhyZWFkLiBCdXQgd2UgZGV0ZWN0IGtpbGxlZAorICAgICAgICAjIHByb2Nlc3NlcyBhbnl3YXksIHNvIHNpbGVuY2UgdGhlIHRyYWNlYmFja3MuCisgICAgICAgIHNlbGYuX2NhbGxfcXVldWUuX2lnbm9yZV9lcGlwZSA9IFRydWUKKyAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gU2ltcGxlUXVldWUoKQogICAgICAgICBzZWxmLl93b3JrX2lkcyA9IHF1ZXVlLlF1ZXVlKCkKICAgICAgICAgc2VsZi5fcXVldWVfbWFuYWdlbWVudF90aHJlYWQgPSBOb25lCi0gICAgICAgIHNlbGYuX3Byb2Nlc3NlcyA9IHNldCgpCisgICAgICAgICMgTWFwIG9mIHBpZHMgdG8gcHJvY2Vzc2VzCisgICAgICAgIHNlbGYuX3Byb2Nlc3NlcyA9IHt9CiAKICAgICAgICAgIyBTaHV0ZG93biBpcyBhIHR3by1zdGVwIHByb2Nlc3MuCiAgICAgICAgIHNlbGYuX3NodXRkb3duX3RocmVhZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3NodXRkb3duX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYuX2Jyb2tlbiA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3F1ZXVlX2NvdW50ID0gMAogICAgICAgICBzZWxmLl9wZW5kaW5nX3dvcmtfaXRlbXMgPSB7fQogCkBAIC0yOTcsNiArMzU5LDggQEAKICAgICAgICAgZGVmIHdlYWtyZWZfY2IoXywgcT1zZWxmLl9yZXN1bHRfcXVldWUpOgogICAgICAgICAgICAgcS5wdXQoTm9uZSkKICAgICAgICAgaWYgc2VsZi5fcXVldWVfbWFuYWdlbWVudF90aHJlYWQgaXMgTm9uZToKKyAgICAgICAgICAgICMgU3RhcnQgdGhlIHByb2Nlc3NlcyBzbyB0aGF0IHRoZWlyIHNlbnRpbmVscyBhcmUga25vd24uCisgICAgICAgICAgICBzZWxmLl9hZGp1c3RfcHJvY2Vzc19jb3VudCgpCiAgICAgICAgICAgICBzZWxmLl9xdWV1ZV9tYW5hZ2VtZW50X3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQoCiAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1fcXVldWVfbWFuYWdlbWVudF93b3JrZXIsCiAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHdlYWtyZWYucmVmKHNlbGYsIHdlYWtyZWZfY2IpLApAQCAtMzE2LDEwICszODAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5fY2FsbF9xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlKSkKICAgICAgICAgICAgIHAuc3RhcnQoKQotICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc2VzLmFkZChwKQorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc2VzW3AucGlkXSA9IHAKIAogICAgIGRlZiBzdWJtaXQoc2VsZiwgZm4sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHdpdGggc2VsZi5fc2h1dGRvd25fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX2Jyb2tlbjoKKyAgICAgICAgICAgICAgICByYWlzZSBCcm9rZW5Qcm9jZXNzUG9vbCgnQSBjaGlsZCBwcm9jZXNzIHRlcm1pbmF0ZWQgJworICAgICAgICAgICAgICAgICAgICAnYWJydXB0bHksIHRoZSBwcm9jZXNzIHBvb2wgaXMgbm90IHVzYWJsZSBhbnltb3JlJykKICAgICAgICAgICAgIGlmIHNlbGYuX3NodXRkb3duX3RocmVhZDoKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2Nhbm5vdCBzY2hlZHVsZSBuZXcgZnV0dXJlcyBhZnRlciBzaHV0ZG93bicpCiAKQEAgLTMzMyw3ICs0MDAsNiBAQAogICAgICAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlLnB1dChOb25lKQogCiAgICAgICAgICAgICBzZWxmLl9zdGFydF9xdWV1ZV9tYW5hZ2VtZW50X3RocmVhZCgpCi0gICAgICAgICAgICBzZWxmLl9hZGp1c3RfcHJvY2Vzc19jb3VudCgpCiAgICAgICAgICAgICByZXR1cm4gZgogICAgIHN1Ym1pdC5fX2RvY19fID0gX2Jhc2UuRXhlY3V0b3Iuc3VibWl0Ll9fZG9jX18KIApkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQppbmRleCBmYmFjMDg4Li45NWJiNjgyIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQpAQCAtNzQsNyArNzQsNyBAQAogICAgICAgICAgICAgICAgIHdvcmtfcXVldWUucHV0KE5vbmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBkZWwgZXhlY3V0b3IKLSAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgorICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICBfYmFzZS5MT0dHRVIuY3JpdGljYWwoJ0V4Y2VwdGlvbiBpbiB3b3JrZXInLCBleGNfaW5mbz1UcnVlKQogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3IoX2Jhc2UuRXhlY3V0b3IpOgpkaWZmIC0tZ2l0IGEvTGliL2NvbmZpZ3BhcnNlci5weSBiL0xpYi9jb25maWdwYXJzZXIucHkKaW5kZXggZDE0OGI4OC4uOWQ1Zjc3OSAxMDA2NDQKLS0tIGEvTGliL2NvbmZpZ3BhcnNlci5weQorKysgYi9MaWIvY29uZmlncGFyc2VyLnB5CkBAIC0xMTksNyArMTE5LDggQEAKICAgICAgICAgYmV0d2VlbiBrZXlzIGFuZCB2YWx1ZXMgYXJlIHN1cnJvdW5kZWQgYnkgc3BhY2VzLgogIiIiCiAKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE11dGFibGVNYXBwaW5nLCBPcmRlcmVkRGljdCBhcyBfZGVmYXVsdF9kaWN0LCBfQ2hhaW5NYXAKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNdXRhYmxlTWFwcGluZworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QgYXMgX2RlZmF1bHRfZGljdCwgQ2hhaW5NYXAgYXMgX0NoYWluTWFwCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaW8KIGltcG9ydCBpdGVydG9vbHMKQEAgLTk5MiwxOCArOTkzLDI2IEBACiAgICAgICAgIGluZGVudF9sZXZlbCA9IDAKICAgICAgICAgZSA9IE5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vbmUsIG9yIGFuIGV4Y2VwdGlvbgogICAgICAgICBmb3IgbGluZW5vLCBsaW5lIGluIGVudW1lcmF0ZShmcCwgc3RhcnQ9MSk6Ci0gICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gTm9uZQorICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IHN5cy5tYXhzaXplCiAgICAgICAgICAgICAjIHN0cmlwIGlubGluZSBjb21tZW50cwotICAgICAgICAgICAgZm9yIHByZWZpeCBpbiBzZWxmLl9pbmxpbmVfY29tbWVudF9wcmVmaXhlczoKLSAgICAgICAgICAgICAgICBpbmRleCA9IGxpbmUuZmluZChwcmVmaXgpCi0gICAgICAgICAgICAgICAgaWYgaW5kZXggPT0gMCBvciAoaW5kZXggPiAwIGFuZCBsaW5lW2luZGV4LTFdLmlzc3BhY2UoKSk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSBpbmRleAotICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaW5saW5lX3ByZWZpeGVzID0ge3A6IC0xIGZvciBwIGluIHNlbGYuX2lubGluZV9jb21tZW50X3ByZWZpeGVzfQorICAgICAgICAgICAgd2hpbGUgY29tbWVudF9zdGFydCA9PSBzeXMubWF4c2l6ZSBhbmQgaW5saW5lX3ByZWZpeGVzOgorICAgICAgICAgICAgICAgIG5leHRfcHJlZml4ZXMgPSB7fQorICAgICAgICAgICAgICAgIGZvciBwcmVmaXgsIGluZGV4IGluIGlubGluZV9wcmVmaXhlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGxpbmUuZmluZChwcmVmaXgsIGluZGV4KzEpCisgICAgICAgICAgICAgICAgICAgIGlmIGluZGV4ID09IC0xOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgbmV4dF9wcmVmaXhlc1twcmVmaXhdID0gaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPT0gMCBvciAoaW5kZXggPiAwIGFuZCBsaW5lW2luZGV4LTFdLmlzc3BhY2UoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gbWluKGNvbW1lbnRfc3RhcnQsIGluZGV4KQorICAgICAgICAgICAgICAgIGlubGluZV9wcmVmaXhlcyA9IG5leHRfcHJlZml4ZXMKICAgICAgICAgICAgICMgc3RyaXAgZnVsbCBsaW5lIGNvbW1lbnRzCiAgICAgICAgICAgICBmb3IgcHJlZml4IGluIHNlbGYuX2NvbW1lbnRfcHJlZml4ZXM6CiAgICAgICAgICAgICAgICAgaWYgbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgocHJlZml4KToKICAgICAgICAgICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IDAKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGNvbW1lbnRfc3RhcnQgPT0gc3lzLm1heHNpemU6CisgICAgICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IE5vbmUKICAgICAgICAgICAgIHZhbHVlID0gbGluZVs6Y29tbWVudF9zdGFydF0uc3RyaXAoKQogICAgICAgICAgICAgaWYgbm90IHZhbHVlOgogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2VtcHR5X2xpbmVzX2luX3ZhbHVlczoKZGlmZiAtLWdpdCBhL0xpYi9jb250ZXh0bGliLnB5IGIvTGliL2NvbnRleHRsaWIucHkKaW5kZXggNWViYmJjNi4uYmRlMmZlYiAxMDA2NDQKLS0tIGEvTGliL2NvbnRleHRsaWIucHkKKysrIGIvTGliL2NvbnRleHRsaWIucHkKQEAgLTEsMTAgKzEsMTAgQEAKICIiIlV0aWxpdGllcyBmb3Igd2l0aC1zdGF0ZW1lbnQgY29udGV4dHMuICBTZWUgUEVQIDM0My4iIiIKIAogaW1wb3J0IHN5cworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwotZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogCi1fX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkNvbnRleHREZWNvcmF0b3IiXQorX19hbGxfXyA9IFsiY29udGV4dG1hbmFnZXIiLCAiY2xvc2luZyIsICJDb250ZXh0RGVjb3JhdG9yIiwgIkV4aXRTdGFjayJdCiAKIAogY2xhc3MgQ29udGV4dERlY29yYXRvcihvYmplY3QpOgpAQCAtMTMsMTIgKzEzLDEyIEBACiAgICAgZGVmIF9yZWNyZWF0ZV9jbShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgcmVjcmVhdGVkIGluc3RhbmNlIG9mIHNlbGYuCiAKLSAgICAgICAgQWxsb3dzIG90aGVyd2lzZSBvbmUtc2hvdCBjb250ZXh0IG1hbmFnZXJzIGxpa2UKKyAgICAgICAgQWxsb3dzIGFuIG90aGVyd2lzZSBvbmUtc2hvdCBjb250ZXh0IG1hbmFnZXIgbGlrZQogICAgICAgICBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIgdG8gc3VwcG9ydCB1c2UgYXMKLSAgICAgICAgZGVjb3JhdG9ycyB2aWEgaW1wbGljaXQgcmVjcmVhdGlvbi4KKyAgICAgICAgYSBkZWNvcmF0b3IgdmlhIGltcGxpY2l0IHJlY3JlYXRpb24uCiAKLSAgICAgICAgTm90ZTogdGhpcyBpcyBhIHByaXZhdGUgaW50ZXJmYWNlIGp1c3QgZm9yIF9HQ00gaW4gMy4yIGJ1dCB3aWxsIGJlCi0gICAgICAgIHJlbmFtZWQgYW5kIGRvY3VtZW50ZWQgZm9yIHRoaXJkIHBhcnR5IHVzZSBpbiAzLjMKKyAgICAgICAgVGhpcyBpcyBhIHByaXZhdGUgaW50ZXJmYWNlIGp1c3QgZm9yIF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlci4KKyAgICAgICAgU2VlIGlzc3VlICMxMTY0NyBmb3IgZGV0YWlscy4KICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmCiAKQEAgLTEzOSwzICsxMzksMTE3IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRoaW5nCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfaW5mbyk6CiAgICAgICAgIHNlbGYudGhpbmcuY2xvc2UoKQorCisKKyMgSW5zcGlyZWQgYnkgZGlzY3Vzc2lvbnMgb24gaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzNTg1CitjbGFzcyBFeGl0U3RhY2sob2JqZWN0KToKKyAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIGR5bmFtaWMgbWFuYWdlbWVudCBvZiBhIHN0YWNrIG9mIGV4aXQgY2FsbGJhY2tzCisKKyAgICBGb3IgZXhhbXBsZToKKworICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgZmlsZXMgPSBbc3RhY2suZW50ZXJfY29udGV4dChvcGVuKGZuYW1lKSkgZm9yIGZuYW1lIGluIGZpbGVuYW1lc10KKyAgICAgICAgICAgICMgQWxsIG9wZW5lZCBmaWxlcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY2xvc2VkIGF0IHRoZSBlbmQgb2YKKyAgICAgICAgICAgICMgdGhlIHdpdGggc3RhdGVtZW50LCBldmVuIGlmIGF0dGVtcHRzIHRvIG9wZW4gZmlsZXMgbGF0ZXIKKyAgICAgICAgICAgICMgaW4gdGhlIGxpc3QgdGhyb3cgYW4gZXhjZXB0aW9uCisKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2V4aXRfY2FsbGJhY2tzID0gZGVxdWUoKQorCisgICAgZGVmIHBvcF9hbGwoc2VsZik6CisgICAgICAgICIiIlByZXNlcnZlIHRoZSBjb250ZXh0IHN0YWNrIGJ5IHRyYW5zZmVycmluZyBpdCB0byBhIG5ldyBpbnN0YW5jZSIiIgorICAgICAgICBuZXdfc3RhY2sgPSB0eXBlKHNlbGYpKCkKKyAgICAgICAgbmV3X3N0YWNrLl9leGl0X2NhbGxiYWNrcyA9IHNlbGYuX2V4aXRfY2FsbGJhY2tzCisgICAgICAgIHNlbGYuX2V4aXRfY2FsbGJhY2tzID0gZGVxdWUoKQorICAgICAgICByZXR1cm4gbmV3X3N0YWNrCisKKyAgICBkZWYgX3B1c2hfY21fZXhpdChzZWxmLCBjbSwgY21fZXhpdCk6CisgICAgICAgICIiIkhlbHBlciB0byBjb3JyZWN0bHkgcmVnaXN0ZXIgY2FsbGJhY2tzIHRvIF9fZXhpdF9fIG1ldGhvZHMiIiIKKyAgICAgICAgZGVmIF9leGl0X3dyYXBwZXIoKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgIHJldHVybiBjbV9leGl0KGNtLCAqZXhjX2RldGFpbHMpCisgICAgICAgIF9leGl0X3dyYXBwZXIuX19zZWxmX18gPSBjbQorICAgICAgICBzZWxmLnB1c2goX2V4aXRfd3JhcHBlcikKKworICAgIGRlZiBwdXNoKHNlbGYsIGV4aXQpOgorICAgICAgICAiIiJSZWdpc3RlcnMgYSBjYWxsYmFjayB3aXRoIHRoZSBzdGFuZGFyZCBfX2V4aXRfXyBtZXRob2Qgc2lnbmF0dXJlCisKKyAgICAgICAgQ2FuIHN1cHByZXNzIGV4Y2VwdGlvbnMgdGhlIHNhbWUgd2F5IF9fZXhpdF9fIG1ldGhvZHMgY2FuLgorCisgICAgICAgIEFsc28gYWNjZXB0cyBhbnkgb2JqZWN0IHdpdGggYW4gX19leGl0X18gbWV0aG9kIChyZWdpc3RlcmluZyBhIGNhbGwKKyAgICAgICAgdG8gdGhlIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgaXRzZWxmKQorICAgICAgICAiIiIKKyAgICAgICAgIyBXZSB1c2UgYW4gdW5ib3VuZCBtZXRob2QgcmF0aGVyIHRoYW4gYSBib3VuZCBtZXRob2QgdG8gZm9sbG93CisgICAgICAgICMgdGhlIHN0YW5kYXJkIGxvb2t1cCBiZWhhdmlvdXIgZm9yIHNwZWNpYWwgbWV0aG9kcworICAgICAgICBfY2JfdHlwZSA9IHR5cGUoZXhpdCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZXhpdF9tZXRob2QgPSBfY2JfdHlwZS5fX2V4aXRfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIE5vdCBhIGNvbnRleHQgbWFuYWdlciwgc28gYXNzdW1lIGl0cyBhIGNhbGxhYmxlCisgICAgICAgICAgICBzZWxmLl9leGl0X2NhbGxiYWNrcy5hcHBlbmQoZXhpdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfY21fZXhpdChleGl0LCBleGl0X21ldGhvZCkKKyAgICAgICAgcmV0dXJuIGV4aXQgIyBBbGxvdyB1c2UgYXMgYSBkZWNvcmF0b3IKKworICAgIGRlZiBjYWxsYmFjayhzZWxmLCBjYWxsYmFjaywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICIiIlJlZ2lzdGVycyBhbiBhcmJpdHJhcnkgY2FsbGJhY2sgYW5kIGFyZ3VtZW50cy4KKworICAgICAgICBDYW5ub3Qgc3VwcHJlc3MgZXhjZXB0aW9ucy4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiBfZXhpdF93cmFwcGVyKGV4Y190eXBlLCBleGMsIHRiKToKKyAgICAgICAgICAgIGNhbGxiYWNrKCphcmdzLCAqKmt3ZHMpCisgICAgICAgICMgV2UgY2hhbmdlZCB0aGUgc2lnbmF0dXJlLCBzbyB1c2luZyBAd3JhcHMgaXMgbm90IGFwcHJvcHJpYXRlLCBidXQKKyAgICAgICAgIyBzZXR0aW5nIF9fd3JhcHBlZF9fIG1heSBzdGlsbCBoZWxwIHdpdGggaW50cm9zcGVjdGlvbgorICAgICAgICBfZXhpdF93cmFwcGVyLl9fd3JhcHBlZF9fID0gY2FsbGJhY2sKKyAgICAgICAgc2VsZi5wdXNoKF9leGl0X3dyYXBwZXIpCisgICAgICAgIHJldHVybiBjYWxsYmFjayAjIEFsbG93IHVzZSBhcyBhIGRlY29yYXRvcgorCisgICAgZGVmIGVudGVyX2NvbnRleHQoc2VsZiwgY20pOgorICAgICAgICAiIiJFbnRlcnMgdGhlIHN1cHBsaWVkIGNvbnRleHQgbWFuYWdlcgorCisgICAgICAgIElmIHN1Y2Nlc3NmdWwsIGFsc28gcHVzaGVzIGl0cyBfX2V4aXRfXyBtZXRob2QgYXMgYSBjYWxsYmFjayBhbmQKKyAgICAgICAgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBfX2VudGVyX18gbWV0aG9kLgorICAgICAgICAiIiIKKyAgICAgICAgIyBXZSBsb29rIHVwIHRoZSBzcGVjaWFsIG1ldGhvZHMgb24gdGhlIHR5cGUgdG8gbWF0Y2ggdGhlIHdpdGggc3RhdGVtZW50CisgICAgICAgIF9jbV90eXBlID0gdHlwZShjbSkKKyAgICAgICAgX2V4aXQgPSBfY21fdHlwZS5fX2V4aXRfXworICAgICAgICByZXN1bHQgPSBfY21fdHlwZS5fX2VudGVyX18oY20pCisgICAgICAgIHNlbGYuX3B1c2hfY21fZXhpdChjbSwgX2V4aXQpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiSW1tZWRpYXRlbHkgdW53aW5kIHRoZSBjb250ZXh0IHN0YWNrIiIiCisgICAgICAgIHNlbGYuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgIyBXZSBtYW5pcHVsYXRlIHRoZSBleGNlcHRpb24gc3RhdGUgc28gaXQgYmVoYXZlcyBhcyB0aG91Z2gKKyAgICAgICAgIyB3ZSB3ZXJlIGFjdHVhbGx5IG5lc3RpbmcgbXVsdGlwbGUgd2l0aCBzdGF0ZW1lbnRzCisgICAgICAgIGZyYW1lX2V4YyA9IHN5cy5leGNfaW5mbygpWzFdCisgICAgICAgIGRlZiBfZml4X2V4Y2VwdGlvbl9jb250ZXh0KG5ld19leGMsIG9sZF9leGMpOgorICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICBleGNfY29udGV4dCA9IG5ld19leGMuX19jb250ZXh0X18KKyAgICAgICAgICAgICAgICBpZiBleGNfY29udGV4dCBpbiAoTm9uZSwgZnJhbWVfZXhjKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBuZXdfZXhjID0gZXhjX2NvbnRleHQKKyAgICAgICAgICAgIG5ld19leGMuX19jb250ZXh0X18gPSBvbGRfZXhjCisKKyAgICAgICAgIyBDYWxsYmFja3MgYXJlIGludm9rZWQgaW4gTElGTyBvcmRlciB0byBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mCisgICAgICAgICMgbmVzdGVkIGNvbnRleHQgbWFuYWdlcnMKKyAgICAgICAgc3VwcHJlc3NlZF9leGMgPSBGYWxzZQorICAgICAgICB3aGlsZSBzZWxmLl9leGl0X2NhbGxiYWNrczoKKyAgICAgICAgICAgIGNiID0gc2VsZi5fZXhpdF9jYWxsYmFja3MucG9wKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBjYigqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc2VkX2V4YyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgZXhjX2RldGFpbHMgPSAoTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBuZXdfZXhjX2RldGFpbHMgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgICMgc2ltdWxhdGUgdGhlIHN0YWNrIG9mIGV4Y2VwdGlvbnMgYnkgc2V0dGluZyB0aGUgY29udGV4dAorICAgICAgICAgICAgICAgIF9maXhfZXhjZXB0aW9uX2NvbnRleHQobmV3X2V4Y19kZXRhaWxzWzFdLCBleGNfZGV0YWlsc1sxXSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZXhpdF9jYWxsYmFja3M6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgZXhjX2RldGFpbHMgPSBuZXdfZXhjX2RldGFpbHMKKyAgICAgICAgcmV0dXJuIHN1cHByZXNzZWRfZXhjCmRpZmYgLS1naXQgYS9MaWIvY29weS5weSBiL0xpYi9jb3B5LnB5CmluZGV4IDA4OWQxMDEuLmQ5NjIwMWUgMTAwNjQ0Ci0tLSBhL0xpYi9jb3B5LnB5CisrKyBiL0xpYi9jb3B5LnB5CkBAIC0xNzMsOCArMTczLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bihkZWVwKWNvcHlhYmxlIG9iamVjdCBvZiB0eXBlICVzIiAlIGNscykKICAgICAgICAgICAgICAgICB5ID0gX3JlY29uc3RydWN0KHgsIHJ2LCAxLCBtZW1vKQogCi0gICAgbWVtb1tkXSA9IHkKLSAgICBfa2VlcF9hbGl2ZSh4LCBtZW1vKSAjIE1ha2Ugc3VyZSB4IGxpdmVzIGF0IGxlYXN0IGFzIGxvbmcgYXMgZAorICAgICMgSWYgaXMgaXRzIG93biBjb3B5LCBkb24ndCBtZW1vaXplLgorICAgIGlmIHkgaXMgbm90IHg6CisgICAgICAgIG1lbW9bZF0gPSB5CisgICAgICAgIF9rZWVwX2FsaXZlKHgsIG1lbW8pICMgTWFrZSBzdXJlIHggbGl2ZXMgYXQgbGVhc3QgYXMgbG9uZyBhcyBkCiAgICAgcmV0dXJuIHkKIAogX2RlZXBjb3B5X2Rpc3BhdGNoID0gZCA9IHt9CkBAIC0yMTQsOSArMjE2LDEwIEBACiAgICAgeSA9IFtdCiAgICAgZm9yIGEgaW4geDoKICAgICAgICAgeS5hcHBlbmQoZGVlcGNvcHkoYSwgbWVtbykpCi0gICAgZCA9IGlkKHgpCisgICAgIyBXZSdyZSBub3QgZ29pbmcgdG8gcHV0IHRoZSB0dXBsZSBpbiB0aGUgbWVtbywgYnV0IGl0J3Mgc3RpbGwgaW1wb3J0YW50IHdlCisgICAgIyBjaGVjayBmb3IgaXQsIGluIGNhc2UgdGhlIHR1cGxlIGNvbnRhaW5zIHJlY3Vyc2l2ZSBtdXRhYmxlIHN0cnVjdHVyZXMuCiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gbWVtb1tkXQorICAgICAgICByZXR1cm4gbWVtb1tpZCh4KV0KICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgIHBhc3MKICAgICBmb3IgaSBpbiByYW5nZShsZW4oeCkpOgpAQCAtMjI1LDcgKzIyOCw2IEBACiAgICAgICAgICAgICBicmVhawogICAgIGVsc2U6CiAgICAgICAgIHkgPSB4Ci0gICAgbWVtb1tkXSA9IHkKICAgICByZXR1cm4geQogZFt0dXBsZV0gPSBfZGVlcGNvcHlfdHVwbGUKIApAQCAtMzIxLDY4ICszMjMsMyBAQAogIyBIZWxwZXIgZm9yIGluc3RhbmNlIGNyZWF0aW9uIHdpdGhvdXQgY2FsbGluZyBfX2luaXRfXwogY2xhc3MgX0VtcHR5Q2xhc3M6CiAgICAgcGFzcwotCi1kZWYgX3Rlc3QoKToKLSAgICBsID0gW05vbmUsIDEsIDIsIDMuMTQsICd4eXp6eScsICgxLCAyKSwgWzMuMTQsICdhYmMnXSwKLSAgICAgICAgIHsnYWJjJzogJ0FCQyd9LCAoKSwgW10sIHt9XQotICAgIGwxID0gY29weShsKQotICAgIHByaW50KGwxPT1sKQotICAgIGwxID0gbWFwKGNvcHksIGwpCi0gICAgcHJpbnQobDE9PWwpCi0gICAgbDEgPSBkZWVwY29weShsKQotICAgIHByaW50KGwxPT1sKQotICAgIGNsYXNzIEM6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmc9Tm9uZSk6Ci0gICAgICAgICAgICBzZWxmLmEgPSAxCi0gICAgICAgICAgICBzZWxmLmFyZyA9IGFyZwotICAgICAgICAgICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgICAgICAgICAgZmlsZSA9IHN5cy5hcmd2WzBdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpbGUgPSBfX2ZpbGVfXwotICAgICAgICAgICAgc2VsZi5mcCA9IG9wZW4oZmlsZSkKLSAgICAgICAgICAgIHNlbGYuZnAuY2xvc2UoKQotICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuIHsnYSc6IHNlbGYuYSwgJ2FyZyc6IHNlbGYuYXJnfQotICAgICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHN0YXRlLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBrZXksIHZhbHVlKQotICAgICAgICBkZWYgX19kZWVwY29weV9fKHNlbGYsIG1lbW89Tm9uZSk6Ci0gICAgICAgICAgICBuZXcgPSBzZWxmLl9fY2xhc3NfXyhkZWVwY29weShzZWxmLmFyZywgbWVtbykpCi0gICAgICAgICAgICBuZXcuYSA9IHNlbGYuYQotICAgICAgICAgICAgcmV0dXJuIG5ldwotICAgIGMgPSBDKCdhcmd1bWVudCBza2V0Y2gnKQotICAgIGwuYXBwZW5kKGMpCi0gICAgbDIgPSBjb3B5KGwpCi0gICAgcHJpbnQobCA9PSBsMikKLSAgICBwcmludChsKQotICAgIHByaW50KGwyKQotICAgIGwyID0gZGVlcGNvcHkobCkKLSAgICBwcmludChsID09IGwyKQotICAgIHByaW50KGwpCi0gICAgcHJpbnQobDIpCi0gICAgbC5hcHBlbmQoe2xbMV06IGwsICd4eXonOiBsWzJdfSkKLSAgICBsMyA9IGNvcHkobCkKLSAgICBpbXBvcnQgcmVwcmxpYgotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwxKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMikpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDMpKQotICAgIGwzID0gZGVlcGNvcHkobCkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMSkpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDIpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwzKSkKLSAgICBjbGFzcyBvZGljdChkaWN0KToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQgPSB7fSk6Ci0gICAgICAgICAgICBzZWxmLmEgPSA5OQotICAgICAgICAgICAgZGljdC5fX2luaXRfXyhzZWxmLCBkKQotICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaywgaSk6Ci0gICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGssIGkpCi0gICAgICAgICAgICBzZWxmLmEKLSAgICBvID0gb2RpY3QoeyJBIiA6ICJCIn0pCi0gICAgeCA9IGRlZXBjb3B5KG8pCi0gICAgcHJpbnQobywgeCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBfdGVzdCgpCmRpZmYgLS1naXQgYS9MaWIvY3J5cHQucHkgYi9MaWIvY3J5cHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwYzgxYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9jcnlwdC5weQpAQCAtMCwwICsxLDYyIEBACisiIiJXcmFwcGVyIHRvIHRoZSBQT1NJWCBjcnlwdCBsaWJyYXJ5IGNhbGwgYW5kIGFzc29jaWF0ZWQgZnVuY3Rpb25hbGl0eS4iIiIKKworaW1wb3J0IF9jcnlwdAoraW1wb3J0IHN0cmluZyBhcyBfc3RyaW5nCitmcm9tIHJhbmRvbSBpbXBvcnQgU3lzdGVtUmFuZG9tIGFzIF9TeXN0ZW1SYW5kb20KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUgYXMgX25hbWVkdHVwbGUKKworCitfc2FsdGNoYXJzID0gX3N0cmluZy5hc2NpaV9sZXR0ZXJzICsgX3N0cmluZy5kaWdpdHMgKyAnLi8nCitfc3IgPSBfU3lzdGVtUmFuZG9tKCkKKworCitjbGFzcyBfTWV0aG9kKF9uYW1lZHR1cGxlKCdfTWV0aG9kJywgJ25hbWUgaWRlbnQgc2FsdF9jaGFycyB0b3RhbF9zaXplJykpOgorCisgICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIGEgc2FsdCBtZXRob2QgcGVyIHRoZSBNb2R1bGFyIENyeXB0IEZvcm1hdCBvciB0aGUKKyAgICBsZWdhY3kgMi1jaGFyYWN0ZXIgY3J5cHQgbWV0aG9kLiIiIgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxjcnlwdC5NRVRIT0Rfe30+Jy5mb3JtYXQoc2VsZi5uYW1lKQorCisKK2RlZiBta3NhbHQobWV0aG9kPU5vbmUpOgorICAgICIiIkdlbmVyYXRlIGEgc2FsdCBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2QuCisKKyAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgc3Ryb25nZXN0IGF2YWlsYWJsZSBtZXRob2Qgd2lsbCBiZSB1c2VkLgorCisgICAgIiIiCisgICAgaWYgbWV0aG9kIGlzIE5vbmU6CisgICAgICAgIG1ldGhvZCA9IG1ldGhvZHNbMF0KKyAgICBzID0gJyR7fSQnLmZvcm1hdChtZXRob2QuaWRlbnQpIGlmIG1ldGhvZC5pZGVudCBlbHNlICcnCisgICAgcyArPSAnJy5qb2luKF9zci5zYW1wbGUoX3NhbHRjaGFycywgbWV0aG9kLnNhbHRfY2hhcnMpKQorICAgIHJldHVybiBzCisKKworZGVmIGNyeXB0KHdvcmQsIHNhbHQ9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgb25lLXdheSBoYXNoIG9mIGEgcGFzc3dvcmQsIHdpdGggYSBzYWx0CisgICAgcHJlcGVuZGVkLgorCisgICAgSWYgYGBzYWx0YGAgaXMgbm90IHNwZWNpZmllZCBvciBpcyBgYE5vbmVgYCwgdGhlIHN0cm9uZ2VzdAorICAgIGF2YWlsYWJsZSBtZXRob2Qgd2lsbCBiZSBzZWxlY3RlZCBhbmQgYSBzYWx0IGdlbmVyYXRlZC4gIE90aGVyd2lzZSwKKyAgICBgYHNhbHRgYCBtYXkgYmUgb25lIG9mIHRoZSBgYGNyeXB0Lk1FVEhPRF8qYGAgdmFsdWVzLCBvciBhIHN0cmluZyBhcworICAgIHJldHVybmVkIGJ5IGBgY3J5cHQubWtzYWx0KClgYC4KKworICAgICIiIgorICAgIGlmIHNhbHQgaXMgTm9uZSBvciBpc2luc3RhbmNlKHNhbHQsIF9NZXRob2QpOgorICAgICAgICBzYWx0ID0gbWtzYWx0KHNhbHQpCisgICAgcmV0dXJuIF9jcnlwdC5jcnlwdCh3b3JkLCBzYWx0KQorCisKKyMgIGF2YWlsYWJsZSBzYWx0aW5nL2NyeXB0byBtZXRob2RzCitNRVRIT0RfQ1JZUFQgPSBfTWV0aG9kKCdDUllQVCcsIE5vbmUsIDIsIDEzKQorTUVUSE9EX01ENSA9IF9NZXRob2QoJ01ENScsICcxJywgOCwgMzQpCitNRVRIT0RfU0hBMjU2ID0gX01ldGhvZCgnU0hBMjU2JywgJzUnLCAxNiwgNjMpCitNRVRIT0RfU0hBNTEyID0gX01ldGhvZCgnU0hBNTEyJywgJzYnLCAxNiwgMTA2KQorCittZXRob2RzID0gW10KK2ZvciBfbWV0aG9kIGluIChNRVRIT0RfU0hBNTEyLCBNRVRIT0RfU0hBMjU2LCBNRVRIT0RfTUQ1KToKKyAgICBfcmVzdWx0ID0gY3J5cHQoJycsIF9tZXRob2QpCisgICAgaWYgX3Jlc3VsdCBhbmQgbGVuKF9yZXN1bHQpID09IF9tZXRob2QudG90YWxfc2l6ZToKKyAgICAgICAgbWV0aG9kcy5hcHBlbmQoX21ldGhvZCkKK21ldGhvZHMuYXBwZW5kKE1FVEhPRF9DUllQVCkKK2RlbCBfcmVzdWx0LCBfbWV0aG9kCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5IGIvTGliL2N0eXBlcy9fX2luaXRfXy5weQppbmRleCAxMTEyMDlhLi5mMGJkNjZhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5CisrKyBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAjIGxpYnJhcmllcy4gIE9TIFggMTAuMyBpcyBEYXJ3aW4gNywgc28gd2UgY2hlY2sgZm9yCiAgICAgIyB0aGF0LgogCi0gICAgaWYgaW50KF9vcy51bmFtZSgpWzJdLnNwbGl0KCcuJylbMF0pIDwgODoKKyAgICBpZiBpbnQoX29zLnVuYW1lKCkucmVsZWFzZS5zcGxpdCgnLicpWzBdKSA8IDg6CiAgICAgICAgIERFRkFVTFRfTU9ERSA9IFJUTERfR0xPQkFMCiAKIGZyb20gX2N0eXBlcyBpbXBvcnQgRlVOQ0ZMQUdfQ0RFQ0wgYXMgX0ZVTkNGTEFHX0NERUNMLCBcCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jYWxsYmFja3MucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jYWxsYmFja3MucHkKaW5kZXggYzcyMDdlYS4uNTYwMGI0MyAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfY2FsbGJhY2tzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2NhbGxiYWNrcy5weQpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgQ0ZVTkNUWVBFKE5vbmUpKGxhbWJkYSB4PU5hc3R5KCk6IE5vbmUpCi0gICAgICAgIAorCiAKIHRyeToKICAgICBXSU5GVU5DVFlQRQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbWVtZnVuY3Rpb25zLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbWVtZnVuY3Rpb25zLnB5CmluZGV4IGFhMjExM2IuLmFlYzRhYWEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X21lbWZ1bmN0aW9ucy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9tZW1mdW5jdGlvbnMucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKIApAQCAtNDksNiArNTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhc3QoYSwgUE9JTlRFUihjX2J5dGUpKVs6Nzo3XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzk3XSkKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9zdHJpbmdfYXQoc2VsZik6CiAgICAgICAgIHMgPSBzdHJpbmdfYXQoYiJmb28gYmFyIikKICAgICAgICAgIyBYWFggVGhlIGZvbGxvd2luZyBtYXkgYmUgd3JvbmcsIGRlcGVuZGluZyBvbiBob3cgUHl0aG9uCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQppbmRleCBlODNmZDlhLi45NzYyZmI5IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKQEAgLTczLDEzICs3MywxMCBAQAogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAjIyAgICAgICAgICAgIHByaW50ICIoTm8gY193Y2hhcl9wKSIKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBzID0gIjEyMyIKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY193Y2hhcl9wLmZyb21fcGFyYW0ocykuX29iaiBpcyBzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjX3djaGFyX3AuZnJvbV9wYXJhbSwgNDIpCiAKLSAgICAgICAgICAgICMgbmV3IGluIDAuOS4xOiBjb252ZXJ0IChkZWNvZGUpIGFzY2lpIHRvIHVuaWNvZGUKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY193Y2hhcl9wLmZyb21fcGFyYW0oIjEyMyIpLl9vYmosICIxMjMiKQorICAgICAgICBjX3djaGFyX3AuZnJvbV9wYXJhbSgiMTIzIikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNfd2NoYXJfcC5mcm9tX3BhcmFtLCA0MikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjX3djaGFyX3AuZnJvbV9wYXJhbSwgYiIxMjNcMzc3IikKIAogICAgICAgICBwYSA9IGNfd2NoYXJfcC5mcm9tX3BhcmFtKGNfd2NoYXJfcCgiMTIzIikpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQppbmRleCBmYTY0NjFmLi5hZDEzYjAxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKQEAgLTI1LDE0ICsyNSwxNyBAQAogICAgICAgICAgICAgdiA9IG1lbW9yeXZpZXcob2IpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtYWxpemUodi5mb3JtYXQpLCBub3JtYWxpemUoZm10KSkKLSAgICAgICAgICAgICAgICBpZiBzaGFwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzaGFwZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIHNoYXBlWzBdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHYpICogc2l6ZW9mKGl0ZW10cCksIHNpemVvZihvYikpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lml0ZW1zaXplLCBzaXplb2YoaXRlbXRwKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuc2hhcGUsIHNoYXBlKQotICAgICAgICAgICAgICAgICMgY3R5cGVzIG9iamVjdCBhbHdheXMgaGF2ZSBhIG5vbi1zdHJpZGVkIG1lbW9yeSBibG9jawotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5zdHJpZGVzLCBOb25lKQorICAgICAgICAgICAgICAgICMgWFhYIElzc3VlICMxMjg1MTogUHlDRGF0YV9OZXdHZXRCdWZmZXIoKSBtdXN0IHByb3ZpZGUgc3RyaWRlcworICAgICAgICAgICAgICAgICMgICAgIGlmIHJlcXVlc3RlZC4gbWVtb3J5dmlldyBjdXJyZW50bHkgcmVjb25zdHJ1Y3RzIG1pc3NpbmcKKyAgICAgICAgICAgICAgICAjICAgICBzdHJpZGUgaW5mb3JtYXRpb24sIHNvIHRoaXMgYXNzZXJ0IHdpbGwgZmFpbC4KKyAgICAgICAgICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodi5zdHJpZGVzLCAoKSkKKwogICAgICAgICAgICAgICAgICMgdGhleSBhcmUgYWx3YXlzIHJlYWQvd3JpdGUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYucmVhZG9ubHkpCiAKQEAgLTUyLDE0ICs1NSwxNSBAQAogICAgICAgICAgICAgdiA9IG1lbW9yeXZpZXcob2IpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LmZvcm1hdCwgZm10KQotICAgICAgICAgICAgICAgIGlmIHNoYXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHNoYXBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgc2hhcGVbMF0pCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odikgKiBzaXplb2YoaXRlbXRwKSwgc2l6ZW9mKG9iKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuaXRlbXNpemUsIHNpemVvZihpdGVtdHApKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5zaGFwZSwgc2hhcGUpCi0gICAgICAgICAgICAgICAgIyBjdHlwZXMgb2JqZWN0IGFsd2F5cyBoYXZlIGEgbm9uLXN0cmlkZWQgbWVtb3J5IGJsb2NrCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnN0cmlkZXMsIE5vbmUpCisgICAgICAgICAgICAgICAgIyBYWFggSXNzdWUgIzEyODUxCisgICAgICAgICAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHYuc3RyaWRlcywgKCkpCisKICAgICAgICAgICAgICAgICAjIHRoZXkgYXJlIGFsd2F5cyByZWFkL3dyaXRlCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2LnJlYWRvbmx5KQogCkBAIC0xMTAsMzQgKzExNCwzNCBAQAogCiAgICAgIyMgc2ltcGxlIHR5cGVzCiAKLSAgICAoY19jaGFyLCAgICAgICAgICAgICAgICAgICAgIjxjIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfY2hhciksCi0gICAgKGNfYnl0ZSwgICAgICAgICAgICAgICAgICAgICI8YiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2J5dGUpLAotICAgIChjX3VieXRlLCAgICAgICAgICAgICAgICAgICAiPEIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191Ynl0ZSksCi0gICAgKGNfc2hvcnQsICAgICAgICAgICAgICAgICAgICI8aCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3Nob3J0KSwKLSAgICAoY191c2hvcnQsICAgICAgICAgICAgICAgICAgIjxIIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfdXNob3J0KSwKKyAgICAoY19jaGFyLCAgICAgICAgICAgICAgICAgICAgIjxjIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2NoYXIpLAorICAgIChjX2J5dGUsICAgICAgICAgICAgICAgICAgICAiPGIiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfYnl0ZSksCisgICAgKGNfdWJ5dGUsICAgICAgICAgICAgICAgICAgICI8QiIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY191Ynl0ZSksCisgICAgKGNfc2hvcnQsICAgICAgICAgICAgICAgICAgICI8aCIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY19zaG9ydCksCisgICAgKGNfdXNob3J0LCAgICAgICAgICAgICAgICAgICI8SCIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY191c2hvcnQpLAogCiAgICAgIyBjX2ludCBhbmQgY191aW50IG1heSBiZSBhbGlhc2VzIHRvIGNfbG9uZwotICAgICMoY19pbnQsICAgICAgICAgICAgICAgICAgICAgIjxpIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfaW50KSwKLSAgICAjKGNfdWludCwgICAgICAgICAgICAgICAgICAgICI8SSIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3VpbnQpLAorICAgICMoY19pbnQsICAgICAgICAgICAgICAgICAgICAgIjxpIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2ludCksCisgICAgIyhjX3VpbnQsICAgICAgICAgICAgICAgICAgICAiPEkiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfdWludCksCiAKLSAgICAoY19sb25nLCAgICAgICAgICAgICAgICAgICAgIjxsIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfbG9uZyksCi0gICAgKGNfdWxvbmcsICAgICAgICAgICAgICAgICAgICI8TCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3Vsb25nKSwKKyAgICAoY19sb25nLCAgICAgICAgICAgICAgICAgICAgIjxsIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2xvbmcpLAorICAgIChjX3Vsb25nLCAgICAgICAgICAgICAgICAgICAiPEwiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfdWxvbmcpLAogCiAgICAgIyBjX2xvbmdsb25nIGFuZCBjX3Vsb25nbG9uZyBhcmUgYWxpYXNlcyBvbiA2NC1iaXQgcGxhdGZvcm1zCiAgICAgIyhjX2xvbmdsb25nLCAgICAgICAgICAgICAgICAiPHEiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19sb25nbG9uZyksCiAgICAgIyhjX3Vsb25nbG9uZywgICAgICAgICAgICAgICAiPFEiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191bG9uZ2xvbmcpLAogCi0gICAgKGNfZmxvYXQsICAgICAgICAgICAgICAgICAgICI8ZiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2Zsb2F0KSwKLSAgICAoY19kb3VibGUsICAgICAgICAgICAgICAgICAgIjxkIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfZG91YmxlKSwKKyAgICAoY19mbG9hdCwgICAgICAgICAgICAgICAgICAgIjxmIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2Zsb2F0KSwKKyAgICAoY19kb3VibGUsICAgICAgICAgICAgICAgICAgIjxkIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2RvdWJsZSksCiAgICAgIyBjX2xvbmdkb3VibGUgbWF5IGJlIGFuIGFsaWFzIHRvIGNfZG91YmxlCiAKLSAgICAoY19ib29sLCAgICAgICAgICAgICAgICAgICAgIjw/IiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfYm9vbCksCi0gICAgKHB5X29iamVjdCwgICAgICAgICAgICAgICAgICI8TyIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBweV9vYmplY3QpLAorICAgIChjX2Jvb2wsICAgICAgICAgICAgICAgICAgICAiPD8iLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfYm9vbCksCisgICAgKHB5X29iamVjdCwgICAgICAgICAgICAgICAgICI8TyIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgcHlfb2JqZWN0KSwKIAogICAgICMjIHBvaW50ZXJzCiAKLSAgICAoUE9JTlRFUihjX2J5dGUpLCAgICAgICAgICAgIiY8YiIsICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoY19ieXRlKSksCi0gICAgKFBPSU5URVIoUE9JTlRFUihjX2xvbmcpKSwgICImJjxsIiwgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKFBPSU5URVIoY19sb25nKSkpLAorICAgIChQT0lOVEVSKGNfYnl0ZSksICAgICAgICAgICAiJjxiIiwgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoY19ieXRlKSksCisgICAgKFBPSU5URVIoUE9JTlRFUihjX2xvbmcpKSwgICImJjxsIiwgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihQT0lOVEVSKGNfbG9uZykpKSwKIAogICAgICMjIGFycmF5cyBhbmQgcG9pbnRlcnMKIApAQCAtMTQ1LDMyICsxNDksMzIgQEAKICAgICAoY19mbG9hdCAqIDQgKiAzICogMiwgICAgICAgIigyLDMsNCk8ZiIsICAgICAgICAgICAgKDIsMyw0KSwgICAgICAgIGNfZmxvYXQpLAogICAgIChQT0lOVEVSKGNfc2hvcnQpICogMiwgICAgICAiKDIpJjxoIiwgICAgICAgICAgICAgICAoMiwpLCAgICAgICAgICAgUE9JTlRFUihjX3Nob3J0KSksCiAgICAgKFBPSU5URVIoY19zaG9ydCkgKiAyICogMywgICIoMywyKSY8aCIsICAgICAgICAgICAgICgzLDIsKSwgICAgICAgICBQT0lOVEVSKGNfc2hvcnQpKSwKLSAgICAoUE9JTlRFUihjX3Nob3J0ICogMiksICAgICAgIiYoMik8aCIsICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoY19zaG9ydCkpLAorICAgIChQT0lOVEVSKGNfc2hvcnQgKiAyKSwgICAgICAiJigyKTxoIiwgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoY19zaG9ydCkpLAogCiAgICAgIyMgc3RydWN0dXJlcyBhbmQgdW5pb25zCiAKLSAgICAoUG9pbnQsICAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIFBvaW50KSwKKyAgICAoUG9pbnQsICAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBQb2ludCksCiAgICAgIyBwYWNrZWQgc3RydWN0dXJlcyBkbyBub3QgaW1wbGVtZW50IHRoZSBwZXAKLSAgICAoUGFja2VkUG9pbnQsICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBhY2tlZFBvaW50KSwKLSAgICAoUG9pbnQyLCAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIFBvaW50MiksCi0gICAgKEVtcHR5U3RydWN0LCAgICAgICAgICAgICAgICJUe30iLCAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBFbXB0eVN0cnVjdCksCisgICAgKFBhY2tlZFBvaW50LCAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUGFja2VkUG9pbnQpLAorICAgIChQb2ludDIsICAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIsICAgICAgICAoKSwgICAgICAgICAgIFBvaW50MiksCisgICAgKEVtcHR5U3RydWN0LCAgICAgICAgICAgICAgICJUe30iLCAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgRW1wdHlTdHJ1Y3QpLAogICAgICMgdGhlIHBlcCBkb2VzJ3Qgc3VwcG9ydCB1bmlvbnMKLSAgICAoYVVuaW9uLCAgICAgICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGFVbmlvbiksCisgICAgKGFVbmlvbiwgICAgICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgYVVuaW9uKSwKIAogICAgICMjIHBvaW50ZXIgdG8gaW5jb21wbGV0ZSBzdHJ1Y3R1cmUKLSAgICAoSW5jb21wbGV0ZSwgICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIEluY29tcGxldGUpLAotICAgIChQT0lOVEVSKEluY29tcGxldGUpLCAgICAgICAiJkIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihJbmNvbXBsZXRlKSksCisgICAgKEluY29tcGxldGUsICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgSW5jb21wbGV0ZSksCisgICAgKFBPSU5URVIoSW5jb21wbGV0ZSksICAgICAgICImQiIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihJbmNvbXBsZXRlKSksCiAKICAgICAjICdDb21wbGV0ZScgaXMgYSBzdHJ1Y3R1cmUgdGhhdCBzdGFydHMgaW5jb21wbGV0ZSwgYnV0IGlzIGNvbXBsZXRlZCBhZnRlciB0aGUKICAgICAjIHBvaW50ZXIgdHlwZSB0byBpdCBoYXMgYmVlbiBjcmVhdGVkLgotICAgIChDb21wbGV0ZSwgICAgICAgICAgICAgICAgICAiVHs8bDphOn0iLCAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgQ29tcGxldGUpLAorICAgIChDb21wbGV0ZSwgICAgICAgICAgICAgICAgICAiVHs8bDphOn0iLCAgICAgICAgICAgICAoKSwgICAgICAgICAgIENvbXBsZXRlKSwKICAgICAjIFVuZm9ydHVuYXRlbHkgdGhlIHBvaW50ZXIgZm9ybWF0IHN0cmluZyBpcyBub3QgZml4ZWQuLi4KLSAgICAoUE9JTlRFUihDb21wbGV0ZSksICAgICAgICAgIiZCIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoQ29tcGxldGUpKSwKKyAgICAoUE9JTlRFUihDb21wbGV0ZSksICAgICAgICAgIiZCIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKENvbXBsZXRlKSksCiAKICAgICAjIyBvdGhlcgogCiAgICAgIyBmdW5jdGlvbiBzaWduYXR1cmVzIGFyZSBub3QgaW1wbGVtZW50ZWQKLSAgICAoQ0ZVTkNUWVBFKE5vbmUpLCAgICAgICAgICAgIlh7fSIsICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIENGVU5DVFlQRShOb25lKSksCisgICAgKENGVU5DVFlQRShOb25lKSwgICAgICAgICAgICJYe30iLCAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgQ0ZVTkNUWVBFKE5vbmUpKSwKIAogICAgIF0KIApAQCAtMTg2LDEwICsxOTAsMTAgQEAKICMgYW5kIGxpdHRsZSBlbmRpYW4gbWFjaGluZXMuCiAjCiBlbmRpYW5fdHlwZXMgPSBbCi0gICAgKEJFUG9pbnQsICAgICAgICAgICAgICAgICAgICJUez5sOng6Pmw6eTp9IiwgICAgICAgIE5vbmUsICAgICAgICAgICBCRVBvaW50KSwKLSAgICAoTEVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIExFUG9pbnQpLAotICAgIChQT0lOVEVSKEJFUG9pbnQpLCAgICAgICAgICAiJlR7Pmw6eDo+bDp5On0iLCAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihCRVBvaW50KSksCi0gICAgKFBPSU5URVIoTEVQb2ludCksICAgICAgICAgICImVHs8bDp4OjxsOnk6fSIsICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKExFUG9pbnQpKSwKKyAgICAoQkVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7Pmw6eDo+bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBCRVBvaW50KSwKKyAgICAoTEVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBMRVBvaW50KSwKKyAgICAoUE9JTlRFUihCRVBvaW50KSwgICAgICAgICAgIiZUez5sOng6Pmw6eTp9IiwgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKEJFUG9pbnQpKSwKKyAgICAoUE9JTlRFUihMRVBvaW50KSwgICAgICAgICAgIiZUezxsOng6PGw6eTp9IiwgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKExFUG9pbnQpKSwKICAgICBdCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9weXRob25fYXBpLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcHl0aG9uX2FwaS5weQppbmRleCAxZjRjNjAzLi45ZGUzOTgwIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9weXRob25fYXBpLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3B5dGhvbl9hcGkucHkKQEAgLTEsNSArMSw2IEBACiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogaW1wb3J0IHVuaXR0ZXN0LCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjdHlwZXMudGVzdCBpbXBvcnQgaXNfcmVzb3VyY2VfZW5hYmxlZAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0yNSw2ICsyNiw3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGIiYWJjZGVmZ2hpIiwgMyksIGIiYWJjIikKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9QeVN0cmluZ19Gcm9tU3RyaW5nKHNlbGYpOgogICAgICAgICBweXRob25hcGkuUHlCeXRlc19Gcm9tU3RyaW5nLnJlc3R5cGUgPSBweV9vYmplY3QKICAgICAgICAgcHl0aG9uYXBpLlB5Qnl0ZXNfRnJvbVN0cmluZy5hcmd0eXBlcyA9IChjX2NoYXJfcCwpCkBAIC01Niw2ICs1OCw3IEBACiAgICAgICAgICAgICBkZWwgcmVzCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyYyg0MiksIHJlZjQyKQogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X1B5T2JqX0Zyb21QdHIoc2VsZik6CiAgICAgICAgIHMgPSAiYWJjIGRlZiBnaGkgamtsIgogICAgICAgICByZWYgPSBncmMocykKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JlZmNvdW50cy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JlZmNvdW50cy5weQppbmRleCAzNWE4MWFhLi41NjEzZTdhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZWZjb3VudHMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmVmY291bnRzLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBjdHlwZXMKIGltcG9ydCBnYwogCkBAIC0xMCw2ICsxMSw3IEBACiAKIGNsYXNzIFJlZmNvdW50VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0XzEoc2VsZik6CiAgICAgICAgIGZyb20gc3lzIGltcG9ydCBnZXRyZWZjb3VudCBhcyBncmMKIApAQCAtMzQsNiArMzYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyYyhjYWxsYmFjayksIDIpCiAKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9yZWZjb3VudChzZWxmKToKICAgICAgICAgZnJvbSBzeXMgaW1wb3J0IGdldHJlZmNvdW50IGFzIGdyYwogICAgICAgICBkZWYgZnVuYygqYXJncyk6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJpbmdwdHIucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJpbmdwdHIucHkKaW5kZXggM2QyNWZhNS4uOTVjZDE2MSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RyaW5ncHRyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cmluZ3B0ci5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogCiBpbXBvcnQgX2N0eXBlc190ZXN0CkBAIC03LDYgKzgsNyBAQAogCiBjbGFzcyBTdHJpbmdQdHJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBAc3VwcG9ydC5yZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfX1BPSU5URVJfY19jaGFyKHNlbGYpOgogICAgICAgICBjbGFzcyBYKFN0cnVjdHVyZSk6CiAgICAgICAgICAgICBfZmllbGRzXyA9IFsoInN0ciIsIFBPSU5URVIoY19jaGFyKSldCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3V0aWwucHkgYi9MaWIvY3R5cGVzL3V0aWwucHkKaW5kZXggMWJiN2QxZC4uNTU1NWIyZSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy91dGlsLnB5CisrKyBiL0xpYi9jdHlwZXMvdXRpbC5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCBzeXMsIG9zCiBpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IHN1YnByb2Nlc3MKIAogIyBmaW5kX2xpYnJhcnkobmFtZSkgcmV0dXJucyB0aGUgcGF0aG5hbWUgb2YgYSBsaWJyYXJ5LCBvciBOb25lLgogaWYgb3MubmFtZSA9PSAibnQiOgpAQCAtMzksOCArNDAsOCBAQAogICAgICAgICAgICAgY2xpYm5hbWUgPSAnbXN2Y3IlZCcgJSAodmVyc2lvbiAqIDEwKQogCiAgICAgICAgICMgSWYgcHl0aG9uIHdhcyBidWlsdCB3aXRoIGluIGRlYnVnIG1vZGUKLSAgICAgICAgaW1wb3J0IGltcAotICAgICAgICBpZiBpbXAuZ2V0X3N1ZmZpeGVzKClbMF1bMF0gPT0gJ19kLnB5ZCc6CisgICAgICAgIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CisgICAgICAgIGlmICdfZC5weWQnIGluIGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgogICAgICAgICAgICAgY2xpYm5hbWUgKz0gJ2QnCiAgICAgICAgIHJldHVybiBjbGlibmFtZSsnLmRsbCcKIApAQCAtMTM2LDE2ICsxMzcsMTIgQEAKICAgICAgICAgICAgIHJ2ID0gZi5jbG9zZSgpCiAgICAgICAgICAgICBpZiBydiA9PSAxMDoKICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdvYmpkdW1wIGNvbW1hbmQgbm90IGZvdW5kJykKLSAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKG9zLnBvcGVuKGNtZCkpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICByZXMgPSByZS5zZWFyY2gocidcc1NPTkFNRVxzKyhbXlxzXSspJywgZGF0YSkKKyAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChyJ1xzU09OQU1FXHMrKFteXHNdKyknLCBkdW1wKQogICAgICAgICAgICAgaWYgbm90IHJlczoKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHJlcy5ncm91cCgxKQogCi0gICAgaWYgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJmcmVlYnNkIikKLSAgICAgICAgb3Igc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIm9wZW5ic2QiKQotICAgICAgICBvciBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiZHJhZ29uZmx5IikpOgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCgiZnJlZWJzZCIsICJvcGVuYnNkIiwgImRyYWdvbmZseSIpKToKIAogICAgICAgICBkZWYgX251bV92ZXJzaW9uKGxpYm5hbWUpOgogICAgICAgICAgICAgIyAibGlieHl6LnNvLk1BSk9SLk1JTk9SIiA9PiBbIE1BSk9SLCBNSU5PUiBdCkBAIC0xNzQsOSArMTcxLDkgQEAKICAgICAgICAgZGVmIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpOgogICAgICAgICAgICAgaW1wb3J0IHN0cnVjdAogICAgICAgICAgICAgaWYgc3RydWN0LmNhbGNzaXplKCdsJykgPT0gNDoKLSAgICAgICAgICAgICAgICBtYWNoaW5lID0gb3MudW5hbWUoKVs0XSArICctMzInCisgICAgICAgICAgICAgICAgbWFjaGluZSA9IG9zLnVuYW1lKCkubWFjaGluZSArICctMzInCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpWzRdICsgJy02NCcKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gb3MudW5hbWUoKS5tYWNoaW5lICsgJy02NCcKICAgICAgICAgICAgIG1hY2hfbWFwID0gewogICAgICAgICAgICAgICAgICd4ODZfNjQtNjQnOiAnbGliYzYseDg2LTY0JywKICAgICAgICAgICAgICAgICAncHBjNjQtNjQnOiAnbGliYzYsNjRiaXQnLApAQCAtMTg3LDEzICsxODQsMTkgQEAKICAgICAgICAgICAgIGFiaV90eXBlID0gbWFjaF9tYXAuZ2V0KG1hY2hpbmUsICdsaWJjNicpCiAKICAgICAgICAgICAgICMgWFhYIGFzc3VtaW5nIEdMSUJDJ3MgbGRjb25maWcgKHdpdGggb3B0aW9uIC1wKQotICAgICAgICAgICAgZXhwciA9IHInXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycgJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkKLSAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKG9zLnBvcGVuKCdMQ19BTEw9QyBMQU5HPUMgL3NiaW4vbGRjb25maWcgLXAgMj4vZGV2L251bGwnKSkgYXMgZjoKLSAgICAgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChleHByLCBkYXRhKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgcmV0dXJuIHJlcy5ncm91cCgxKQorICAgICAgICAgICAgcmVnZXggPSBvcy5mc2VuY29kZSgKKyAgICAgICAgICAgICAgICAnXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycgJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKFsnL3NiaW4vbGRjb25maWcnLCAnLXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9eydMQ19BTEwnOiAnQycsICdMQU5HJzogJ0MnfSkgYXMgcDoKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKHJlZ2V4LCBwLnN0ZG91dC5yZWFkKCkpCisgICAgICAgICAgICAgICAgICAgIGlmIHJlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5mc2RlY29kZShyZXMuZ3JvdXAoMSkpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKICAgICAgICAgICAgIHJldHVybiBfZmluZFNvbmFtZV9sZGNvbmZpZyhuYW1lKSBvciBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkpCmRpZmYgLS1naXQgYS9MaWIvY3Vyc2VzL19faW5pdF9fLnB5IGIvTGliL2N1cnNlcy9fX2luaXRfXy5weQppbmRleCBhM2U5ZGVmLi43YmZhNjY3IDEwMDY0NAotLS0gYS9MaWIvY3Vyc2VzL19faW5pdF9fLnB5CisrKyBiL0xpYi9jdXJzZXMvX19pbml0X18ucHkKQEAgLTExLDcgKzExLDYgQEAKICIiIgogCiBmcm9tIF9jdXJzZXMgaW1wb3J0ICoKLWZyb20gY3Vyc2VzLndyYXBwZXIgaW1wb3J0IHdyYXBwZXIKIGltcG9ydCBvcyBhcyBfb3MKIGltcG9ydCBzeXMgYXMgX3N5cwogCkBAIC01NSwzICs1NCw0OCBAQAogICAgIGhhc19rZXkKIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgZnJvbSAuaGFzX2tleSBpbXBvcnQgaGFzX2tleQorCisjIFdyYXBwZXIgZm9yIHRoZSBlbnRpcmUgY3Vyc2VzLWJhc2VkIGFwcGxpY2F0aW9uLiAgUnVucyBhIGZ1bmN0aW9uIHdoaWNoCisjIHNob3VsZCBiZSB0aGUgcmVzdCBvZiB5b3VyIGN1cnNlcy1iYXNlZCBhcHBsaWNhdGlvbi4gIElmIHRoZSBhcHBsaWNhdGlvbgorIyByYWlzZXMgYW4gZXhjZXB0aW9uLCB3cmFwcGVyKCkgd2lsbCByZXN0b3JlIHRoZSB0ZXJtaW5hbCB0byBhIHNhbmUgc3RhdGUgc28KKyMgeW91IGNhbiByZWFkIHRoZSByZXN1bHRpbmcgdHJhY2ViYWNrLgorCitkZWYgd3JhcHBlcihmdW5jLCAqYXJncywgKiprd2RzKToKKyAgICAiIiJXcmFwcGVyIGZ1bmN0aW9uIHRoYXQgaW5pdGlhbGl6ZXMgY3Vyc2VzIGFuZCBjYWxscyBhbm90aGVyIGZ1bmN0aW9uLAorICAgIHJlc3RvcmluZyBub3JtYWwga2V5Ym9hcmQvc2NyZWVuIGJlaGF2aW9yIG9uIGVycm9yLgorICAgIFRoZSBjYWxsYWJsZSBvYmplY3QgJ2Z1bmMnIGlzIHRoZW4gcGFzc2VkIHRoZSBtYWluIHdpbmRvdyAnc3Rkc2NyJworICAgIGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgZm9sbG93ZWQgYnkgYW55IG90aGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8KKyAgICB3cmFwcGVyKCkuCisgICAgIiIiCisKKyAgICB0cnk6CisgICAgICAgICMgSW5pdGlhbGl6ZSBjdXJzZXMKKyAgICAgICAgc3Rkc2NyID0gaW5pdHNjcigpCisKKyAgICAgICAgIyBUdXJuIG9mZiBlY2hvaW5nIG9mIGtleXMsIGFuZCBlbnRlciBjYnJlYWsgbW9kZSwKKyAgICAgICAgIyB3aGVyZSBubyBidWZmZXJpbmcgaXMgcGVyZm9ybWVkIG9uIGtleWJvYXJkIGlucHV0CisgICAgICAgIG5vZWNobygpCisgICAgICAgIGNicmVhaygpCisKKyAgICAgICAgIyBJbiBrZXlwYWQgbW9kZSwgZXNjYXBlIHNlcXVlbmNlcyBmb3Igc3BlY2lhbCBrZXlzCisgICAgICAgICMgKGxpa2UgdGhlIGN1cnNvciBrZXlzKSB3aWxsIGJlIGludGVycHJldGVkIGFuZAorICAgICAgICAjIGEgc3BlY2lhbCB2YWx1ZSBsaWtlIGN1cnNlcy5LRVlfTEVGVCB3aWxsIGJlIHJldHVybmVkCisgICAgICAgIHN0ZHNjci5rZXlwYWQoMSkKKworICAgICAgICAjIFN0YXJ0IGNvbG9yLCB0b28uICBIYXJtbGVzcyBpZiB0aGUgdGVybWluYWwgZG9lc24ndCBoYXZlCisgICAgICAgICMgY29sb3I7IHVzZXIgY2FuIHRlc3Qgd2l0aCBoYXNfY29sb3IoKSBsYXRlciBvbi4gIFRoZSB0cnkvY2F0Y2gKKyAgICAgICAgIyB3b3JrcyBhcm91bmQgYSBtaW5vciBiaXQgb2Ygb3Zlci1jb25zY2llbnRpb3VzbmVzcyBpbiB0aGUgY3Vyc2VzCisgICAgICAgICMgbW9kdWxlIC0tIHRoZSBlcnJvciByZXR1cm4gZnJvbSBDIHN0YXJ0X2NvbG9yKCkgaXMgaWdub3JhYmxlLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdGFydF9jb2xvcigpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICByZXR1cm4gZnVuYyhzdGRzY3IsICphcmdzLCAqKmt3ZHMpCisgICAgZmluYWxseToKKyAgICAgICAgIyBTZXQgZXZlcnl0aGluZyBiYWNrIHRvIG5vcm1hbAorICAgICAgICBpZiAnc3Rkc2NyJyBpbiBsb2NhbHMoKToKKyAgICAgICAgICAgIHN0ZHNjci5rZXlwYWQoMCkKKyAgICAgICAgICAgIGVjaG8oKQorICAgICAgICAgICAgbm9jYnJlYWsoKQorICAgICAgICAgICAgZW5kd2luKCkKZGlmZiAtLWdpdCBhL0xpYi9jdXJzZXMvd3JhcHBlci5weSBiL0xpYi9jdXJzZXMvd3JhcHBlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE4M2NlNy4uMDAwMDAwMAotLS0gYS9MaWIvY3Vyc2VzL3dyYXBwZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0iIiJjdXJzZXMud3JhcHBlcgotCi1Db250YWlucyBvbmUgZnVuY3Rpb24sIHdyYXBwZXIoKSwgd2hpY2ggcnVucyBhbm90aGVyIGZ1bmN0aW9uIHdoaWNoCi1zaG91bGQgYmUgdGhlIHJlc3Qgb2YgeW91ciBjdXJzZXMtYmFzZWQgYXBwbGljYXRpb24uICBJZiB0aGUKLWFwcGxpY2F0aW9uIHJhaXNlcyBhbiBleGNlcHRpb24sIHdyYXBwZXIoKSB3aWxsIHJlc3RvcmUgdGhlIHRlcm1pbmFsCi10byBhIHNhbmUgc3RhdGUgc28geW91IGNhbiByZWFkIHRoZSByZXN1bHRpbmcgdHJhY2ViYWNrLgotCi0iIiIKLQotaW1wb3J0IGN1cnNlcwotCi1kZWYgd3JhcHBlcihmdW5jLCAqYXJncywgKiprd2RzKToKLSAgICAiIiJXcmFwcGVyIGZ1bmN0aW9uIHRoYXQgaW5pdGlhbGl6ZXMgY3Vyc2VzIGFuZCBjYWxscyBhbm90aGVyIGZ1bmN0aW9uLAotICAgIHJlc3RvcmluZyBub3JtYWwga2V5Ym9hcmQvc2NyZWVuIGJlaGF2aW9yIG9uIGVycm9yLgotICAgIFRoZSBjYWxsYWJsZSBvYmplY3QgJ2Z1bmMnIGlzIHRoZW4gcGFzc2VkIHRoZSBtYWluIHdpbmRvdyAnc3Rkc2NyJwotICAgIGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgZm9sbG93ZWQgYnkgYW55IG90aGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8KLSAgICB3cmFwcGVyKCkuCi0gICAgIiIiCi0KLSAgICB0cnk6Ci0gICAgICAgICMgSW5pdGlhbGl6ZSBjdXJzZXMKLSAgICAgICAgc3Rkc2NyID0gY3Vyc2VzLmluaXRzY3IoKQotCi0gICAgICAgICMgVHVybiBvZmYgZWNob2luZyBvZiBrZXlzLCBhbmQgZW50ZXIgY2JyZWFrIG1vZGUsCi0gICAgICAgICMgd2hlcmUgbm8gYnVmZmVyaW5nIGlzIHBlcmZvcm1lZCBvbiBrZXlib2FyZCBpbnB1dAotICAgICAgICBjdXJzZXMubm9lY2hvKCkKLSAgICAgICAgY3Vyc2VzLmNicmVhaygpCi0KLSAgICAgICAgIyBJbiBrZXlwYWQgbW9kZSwgZXNjYXBlIHNlcXVlbmNlcyBmb3Igc3BlY2lhbCBrZXlzCi0gICAgICAgICMgKGxpa2UgdGhlIGN1cnNvciBrZXlzKSB3aWxsIGJlIGludGVycHJldGVkIGFuZAotICAgICAgICAjIGEgc3BlY2lhbCB2YWx1ZSBsaWtlIGN1cnNlcy5LRVlfTEVGVCB3aWxsIGJlIHJldHVybmVkCi0gICAgICAgIHN0ZHNjci5rZXlwYWQoMSkKLQotICAgICAgICAjIFN0YXJ0IGNvbG9yLCB0b28uICBIYXJtbGVzcyBpZiB0aGUgdGVybWluYWwgZG9lc24ndCBoYXZlCi0gICAgICAgICMgY29sb3I7IHVzZXIgY2FuIHRlc3Qgd2l0aCBoYXNfY29sb3IoKSBsYXRlciBvbi4gIFRoZSB0cnkvY2F0Y2gKLSAgICAgICAgIyB3b3JrcyBhcm91bmQgYSBtaW5vciBiaXQgb2Ygb3Zlci1jb25zY2llbnRpb3VzbmVzcyBpbiB0aGUgY3Vyc2VzCi0gICAgICAgICMgbW9kdWxlIC0tIHRoZSBlcnJvciByZXR1cm4gZnJvbSBDIHN0YXJ0X2NvbG9yKCkgaXMgaWdub3JhYmxlLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjdXJzZXMuc3RhcnRfY29sb3IoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcmV0dXJuIGZ1bmMoc3Rkc2NyLCAqYXJncywgKiprd2RzKQotICAgIGZpbmFsbHk6Ci0gICAgICAgICMgU2V0IGV2ZXJ5dGhpbmcgYmFjayB0byBub3JtYWwKLSAgICAgICAgaWYgJ3N0ZHNjcicgaW4gbG9jYWxzKCk6Ci0gICAgICAgICAgICBzdGRzY3Iua2V5cGFkKDApCi0gICAgICAgICAgICBjdXJzZXMuZWNobygpCi0gICAgICAgICAgICBjdXJzZXMubm9jYnJlYWsoKQotICAgICAgICAgICAgY3Vyc2VzLmVuZHdpbigpCmRpZmYgLS1naXQgYS9MaWIvZGF0ZXRpbWUucHkgYi9MaWIvZGF0ZXRpbWUucHkKaW5kZXggNjVmOTVkMi4uYTE1YzZiMCAxMDA2NDQKLS0tIGEvTGliL2RhdGV0aW1lLnB5CisrKyBiL0xpYi9kYXRldGltZS5weQpAQCAtMTcyLDEwICsxNzIsNiBAQAogCiAjIENvcnJlY3RseSBzdWJzdGl0dXRlIGZvciAleiBhbmQgJVogZXNjYXBlcyBpbiBzdHJmdGltZSBmb3JtYXRzLgogZGVmIF93cmFwX3N0cmZ0aW1lKG9iamVjdCwgZm9ybWF0LCB0aW1ldHVwbGUpOgotICAgIHllYXIgPSB0aW1ldHVwbGVbMF0KLSAgICBpZiB5ZWFyIDwgMTAwMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigieWVhcj0lZCBpcyBiZWZvcmUgMTAwMDsgdGhlIGRhdGV0aW1lIHN0cmZ0aW1lKCkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2RzIHJlcXVpcmUgeWVhciA+PSAxMDAwIiAlIHllYXIpCiAgICAgIyBEb24ndCBjYWxsIHV0Y29mZnNldCgpIG9yIHR6bmFtZSgpIHVubGVzcyBhY3R1YWxseSBuZWVkZWQuCiAgICAgZnJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICVmCiAgICAgenJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICV6CkBAIC0xMDY5LDEzICsxMDY1LDEzIEBACiAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgdGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA9PSAwCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSA9PSAwCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpICE9IDAKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIsIGFsbG93X21peGVkPVRydWUpICE9IDAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKQEAgLTExMDMsNyArMTA5OSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBfY21wZXJyb3Ioc2VsZiwgb3RoZXIpCiAKLSAgICBkZWYgX2NtcChzZWxmLCBvdGhlcik6CisgICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIsIGFsbG93X21peGVkPUZhbHNlKToKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpCiAgICAgICAgIG15dHogPSBzZWxmLl90emluZm8KICAgICAgICAgb3R0eiA9IG90aGVyLl90emluZm8KQEAgLTExMjIsNyArMTExOCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5fbWljcm9zZWNvbmQpKQogICAgICAgICBpZiBteW9mZiBpcyBOb25lIG9yIG90b2ZmIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBjb21wYXJlIG5haXZlIGFuZCBhd2FyZSB0aW1lcyIpCisgICAgICAgICAgICBpZiBhbGxvd19taXhlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gMiAjIGFyYml0cmFyeSBub24temVybyB2YWx1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBjb21wYXJlIG5haXZlIGFuZCBhd2FyZSB0aW1lcyIpCiAgICAgICAgIG15aGhtbSA9IHNlbGYuX2hvdXIgKiA2MCArIHNlbGYuX21pbnV0ZSAtIG15b2ZmLy90aW1lZGVsdGEobWludXRlcz0xKQogICAgICAgICBvdGhobW0gPSBvdGhlci5faG91ciAqIDYwICsgb3RoZXIuX21pbnV0ZSAtIG90b2ZmLy90aW1lZGVsdGEobWludXRlcz0xKQogICAgICAgICByZXR1cm4gX2NtcCgobXloaG1tLCBzZWxmLl9zZWNvbmQsIHNlbGYuX21pY3Jvc2Vjb25kKSwKQEAgLTEzNjQsNyArMTM2Myw3IEBACiAgICAgICAgIGNvbnZlcnRlciA9IF90aW1lLmxvY2FsdGltZSBpZiB0eiBpcyBOb25lIGVsc2UgX3RpbWUuZ210aW1lCiAKICAgICAgICAgdCwgZnJhYyA9IGRpdm1vZCh0LCAxLjApCi0gICAgICAgIHVzID0gcm91bmQoZnJhYyAqIDFlNikKKyAgICAgICAgdXMgPSBpbnQoZnJhYyAqIDFlNikKIAogICAgICAgICAjIElmIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gb25lIG1pY3Jvc2Vjb25kIHNtYWxsZXIgdGhhbiBhCiAgICAgICAgICMgZnVsbCBzZWNvbmQsIHVzIGNhbiBiZSByb3VuZGVkIHVwIHRvIDEwMDAwMDAuICBJbiB0aGlzIGNhc2UsCkBAIC0xMzg0LDcgKzEzODMsNyBAQAogICAgIGRlZiB1dGNmcm9tdGltZXN0YW1wKGNscywgdCk6CiAgICAgICAgICJDb25zdHJ1Y3QgYSBVVEMgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAobGlrZSB0aW1lLnRpbWUoKSkuIgogICAgICAgICB0LCBmcmFjID0gZGl2bW9kKHQsIDEuMCkKLSAgICAgICAgdXMgPSByb3VuZChmcmFjICogMWU2KQorICAgICAgICB1cyA9IGludChmcmFjICogMWU2KQogCiAgICAgICAgICMgSWYgdGltZXN0YW1wIGlzIGxlc3MgdGhhbiBvbmUgbWljcm9zZWNvbmQgc21hbGxlciB0aGFuIGEKICAgICAgICAgIyBmdWxsIHNlY29uZCwgdXMgY2FuIGJlIHJvdW5kZWQgdXAgdG8gMTAwMDAwMC4gIEluIHRoaXMgY2FzZSwKQEAgLTE0MzgsNiArMTQzNywxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdCkKIAorICAgIGRlZiB0aW1lc3RhbXAoc2VsZik6CisgICAgICAgICJSZXR1cm4gUE9TSVggdGltZXN0YW1wIGFzIGZsb2F0IgorICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBfdGltZS5ta3RpbWUoKHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEpKSArIHNlbGYubWljcm9zZWNvbmQgLyAxZTYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAoc2VsZiAtIF9FUE9DSCkudG90YWxfc2Vjb25kcygpCisKICAgICBkZWYgdXRjdGltZXR1cGxlKHNlbGYpOgogICAgICAgICAiUmV0dXJuIFVUQyB0aW1lIHR1cGxlIGNvbXBhdGlibGUgd2l0aCB0aW1lLmdtdGltZSgpLiIKICAgICAgICAgb2Zmc2V0ID0gc2VsZi51dGNvZmZzZXQoKQpAQCAtMTQ4NSw4ICsxNDkzLDMyIEBACiAgICAgICAgIHJldHVybiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmQsIHR6aW5mbykKIAotICAgIGRlZiBhc3RpbWV6b25lKHNlbGYsIHR6KToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodHosIHR6aW5mbyk6CisgICAgZGVmIGFzdGltZXpvbmUoc2VsZiwgdHo9Tm9uZSk6CisgICAgICAgIGlmIHR6IGlzIE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLnR6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFzdGltZXpvbmUoKSByZXF1aXJlcyBhbiBhd2FyZSBkYXRldGltZSIpCisgICAgICAgICAgICB0cyA9IChzZWxmIC0gX0VQT0NIKSAvLyB0aW1lZGVsdGEoc2Vjb25kcz0xKQorICAgICAgICAgICAgbG9jYWx0bSA9IF90aW1lLmxvY2FsdGltZSh0cykKKyAgICAgICAgICAgIGxvY2FsID0gZGF0ZXRpbWUoKmxvY2FsdG1bOjZdKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgRXh0cmFjdCBUWiBkYXRhIGlmIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIGdtdG9mZiA9IGxvY2FsdG0udG1fZ210b2ZmCisgICAgICAgICAgICAgICAgem9uZSA9IGxvY2FsdG0udG1fem9uZQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICMgQ29tcHV0ZSBVVEMgb2Zmc2V0IGFuZCBjb21wYXJlIHdpdGggdGhlIHZhbHVlIGltcGxpZWQKKyAgICAgICAgICAgICAgICAjIGJ5IHRtX2lzZHN0LiAgSWYgdGhlIHZhbHVlcyBtYXRjaCwgdXNlIHRoZSB6b25lIG5hbWUKKyAgICAgICAgICAgICAgICAjIGltcGxpZWQgYnkgdG1faXNkc3QuCisgICAgICAgICAgICAgICAgZGVsdGEgPSBsb2NhbCAtIGRhdGV0aW1lKCpfdGltZS5nbXRpbWUodHMpWzo2XSkKKyAgICAgICAgICAgICAgICBkc3QgPSBfdGltZS5kYXlsaWdodCBhbmQgbG9jYWx0bS50bV9pc2RzdCA+IDAKKyAgICAgICAgICAgICAgICBnbXRvZmYgPSAtKF90aW1lLmFsdHpvbmUgaWYgZHN0IGVsc2UgX3RpbWUudGltZXpvbmUpCisgICAgICAgICAgICAgICAgaWYgZGVsdGEgPT0gdGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKToKKyAgICAgICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSwgX3RpbWUudHpuYW1lW2RzdF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZSh0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpLCB6b25lKQorCisgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodHosIHR6aW5mbyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInR6IGFyZ3VtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdHppbmZvIikKIAogICAgICAgICBteXR6ID0gc2VsZi50emluZm8KQEAgLTE2MTAsNyArMTY0Miw3IEBACiAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPT0gMAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlciwgYWxsb3dfbWl4ZWQ9VHJ1ZSkgPT0gMAogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBkYXRlKToKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICBlbHNlOgpAQCAtMTYxOCw3ICsxNjUwLDcgQEAKIAogICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSAhPSAwCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSAhPSAwCiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgIGVsc2U6CkBAIC0xNjU2LDcgKzE2ODgsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgX2NtcGVycm9yKHNlbGYsIG90aGVyKQogCi0gICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIpOgorICAgIGRlZiBfY21wKHNlbGYsIG90aGVyLCBhbGxvd19taXhlZD1GYWxzZSk6CiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSkKICAgICAgICAgbXl0eiA9IHNlbGYuX3R6aW5mbwogICAgICAgICBvdHR6ID0gb3RoZXIuX3R6aW5mbwpAQCAtMTY2NSwxMCArMTY5Nyw4IEBACiAgICAgICAgIGlmIG15dHogaXMgb3R0ejoKICAgICAgICAgICAgIGJhc2VfY29tcGFyZSA9IFRydWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIG15dHogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgbXlvZmYgPSBzZWxmLnV0Y29mZnNldCgpCi0gICAgICAgICAgICBpZiBvdHR6IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIG90b2ZmID0gb3RoZXIudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIG15b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgb3RvZmYgPSBvdGhlci51dGNvZmZzZXQoKQogICAgICAgICAgICAgYmFzZV9jb21wYXJlID0gbXlvZmYgPT0gb3RvZmYKIAogICAgICAgICBpZiBiYXNlX2NvbXBhcmU6CkBAIC0xNjc5LDcgKzE3MDksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9ob3VyLCBvdGhlci5fbWludXRlLCBvdGhlci5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKICAgICAgICAgaWYgbXlvZmYgaXMgTm9uZSBvciBvdG9mZiBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5ub3QgY29tcGFyZSBuYWl2ZSBhbmQgYXdhcmUgZGF0ZXRpbWVzIikKKyAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgorICAgICAgICAgICAgICAgIHJldHVybiAyICMgYXJiaXRyYXJ5IG5vbi16ZXJvIHZhbHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IGNvbXBhcmUgbmFpdmUgYW5kIGF3YXJlIGRhdGV0aW1lcyIpCiAgICAgICAgICMgWFhYIFdoYXQgZm9sbG93cyBjb3VsZCBiZSBkb25lIG1vcmUgZWZmaWNpZW50bHkuLi4KICAgICAgICAgZGlmZiA9IHNlbGYgLSBvdGhlciAgICAgIyB0aGlzIHdpbGwgdGFrZSBvZmZzZXRzIGludG8gYWNjb3VudAogICAgICAgICBpZiBkaWZmLmRheXMgPCAwOgpAQCAtMTg5Myw3ICsxOTI2LDcgQEAKIHRpbWV6b25lLnV0YyA9IHRpbWV6b25lLl9jcmVhdGUodGltZWRlbHRhKDApKQogdGltZXpvbmUubWluID0gdGltZXpvbmUuX2NyZWF0ZSh0aW1lem9uZS5fbWlub2Zmc2V0KQogdGltZXpvbmUubWF4ID0gdGltZXpvbmUuX2NyZWF0ZSh0aW1lem9uZS5fbWF4b2Zmc2V0KQotCitfRVBPQ0ggPSBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89dGltZXpvbmUudXRjKQogIiIiCiBTb21lIHRpbWUgem9uZSBhbGdlYnJhLiAgRm9yIGEgZGF0ZXRpbWUgeCwgbGV0CiAgICAgeC5uID0geCBzdHJpcHBlZCBvZiBpdHMgdGltZXpvbmUgLS0gaXRzIG5haXZlIHRpbWUuCmRpZmYgLS1naXQgYS9MaWIvZGVjaW1hbC5weSBiL0xpYi9kZWNpbWFsLnB5CmluZGV4IDQ5ZGU1MzUuLmI3NGFiMDEgMTAwNjQ0Ci0tLSBhL0xpYi9kZWNpbWFsLnB5CisrKyBiL0xpYi9kZWNpbWFsLnB5CkBAIC00Niw4ICs0Niw4IEBACiBEZWNpbWFsKCctMC4wMTIzJykKID4+PiBEZWNpbWFsKDEyMzQ1NikKIERlY2ltYWwoJzEyMzQ1NicpCi0+Pj4gRGVjaW1hbCgnMTIzLjQ1ZTEyMzQ1Njc4OTAxMjM0NTY3ODkwJykKLURlY2ltYWwoJzEuMjM0NUUrMTIzNDU2Nzg5MDEyMzQ1Njc4OTInKQorPj4+IERlY2ltYWwoJzEyMy40NWUxMjM0NTY3OCcpCitEZWNpbWFsKCcxLjIzNDVFKzEyMzQ1NjgwJykKID4+PiBEZWNpbWFsKCcxLjMzJykgKyBEZWNpbWFsKCcxLjI3JykKIERlY2ltYWwoJzIuNjAnKQogPj4+IERlY2ltYWwoJzEyLjM0JykgKyBEZWNpbWFsKCczLjg3JykgLSBEZWNpbWFsKCcxOC40MScpCkBAIC0xMjIsMTMgKzEyMiwyMCBAQAogICAgICMgRXhjZXB0aW9ucwogICAgICdEZWNpbWFsRXhjZXB0aW9uJywgJ0NsYW1wZWQnLCAnSW52YWxpZE9wZXJhdGlvbicsICdEaXZpc2lvbkJ5WmVybycsCiAgICAgJ0luZXhhY3QnLCAnUm91bmRlZCcsICdTdWJub3JtYWwnLCAnT3ZlcmZsb3cnLCAnVW5kZXJmbG93JywKKyAgICAnRmxvYXRPcGVyYXRpb24nLAogCiAgICAgIyBDb25zdGFudHMgZm9yIHVzZSBpbiBzZXR0aW5nIHVwIGNvbnRleHRzCiAgICAgJ1JPVU5EX0RPV04nLCAnUk9VTkRfSEFMRl9VUCcsICdST1VORF9IQUxGX0VWRU4nLCAnUk9VTkRfQ0VJTElORycsCiAgICAgJ1JPVU5EX0ZMT09SJywgJ1JPVU5EX1VQJywgJ1JPVU5EX0hBTEZfRE9XTicsICdST1VORF8wNVVQJywKIAogICAgICMgRnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgY29udGV4dHMKLSAgICAnc2V0Y29udGV4dCcsICdnZXRjb250ZXh0JywgJ2xvY2FsY29udGV4dCcKKyAgICAnc2V0Y29udGV4dCcsICdnZXRjb250ZXh0JywgJ2xvY2FsY29udGV4dCcsCisKKyAgICAjIExpbWl0cyBmb3IgdGhlIEMgdmVyc2lvbiBmb3IgY29tcGF0aWJpbGl0eQorICAgICdNQVhfUFJFQycsICAnTUFYX0VNQVgnLCAnTUlOX0VNSU4nLCAnTUlOX0VUSU5ZJywKKworICAgICMgQyB2ZXJzaW9uOiBjb21waWxlIHRpbWUgY2hvaWNlIHRoYXQgZW5hYmxlcyB0aGUgdGhyZWFkIGxvY2FsIGNvbnRleHQKKyAgICAnSEFWRV9USFJFQURTJwogXQogCiBfX3ZlcnNpb25fXyA9ICcxLjcwJyAgICAjIEhpZ2hlc3QgdmVyc2lvbiBvZiB0aGUgc3BlYyB0aGlzIGNvbXBsaWVzIHdpdGgKQEAgLTEzNyw2ICsxNDQsNyBAQAogaW1wb3J0IGNvcHkgYXMgX2NvcHkKIGltcG9ydCBtYXRoIGFzIF9tYXRoCiBpbXBvcnQgbnVtYmVycyBhcyBfbnVtYmVycworaW1wb3J0IHN5cwogCiB0cnk6CiAgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSBhcyBfbmFtZWR0dXBsZQpAQCAtMTU0LDYgKzE2MiwxOSBAQAogUk9VTkRfSEFMRl9ET1dOID0gJ1JPVU5EX0hBTEZfRE9XTicKIFJPVU5EXzA1VVAgPSAnUk9VTkRfMDVVUCcKIAorIyBDb21wYXRpYmlsaXR5IHdpdGggdGhlIEMgdmVyc2lvbgorSEFWRV9USFJFQURTID0gVHJ1ZQoraWYgc3lzLm1heHNpemUgPT0gMioqNjMtMToKKyAgICBNQVhfUFJFQyA9IDk5OTk5OTk5OTk5OTk5OTk5OQorICAgIE1BWF9FTUFYID0gOTk5OTk5OTk5OTk5OTk5OTk5CisgICAgTUlOX0VNSU4gPSAtOTk5OTk5OTk5OTk5OTk5OTk5CitlbHNlOgorICAgIE1BWF9QUkVDID0gNDI1MDAwMDAwCisgICAgTUFYX0VNQVggPSA0MjUwMDAwMDAKKyAgICBNSU5fRU1JTiA9IC00MjUwMDAwMDAKKworTUlOX0VUSU5ZID0gTUlOX0VNSU4gLSAoTUFYX1BSRUMtMSkKKwogIyBFcnJvcnMKIAogY2xhc3MgRGVjaW1hbEV4Y2VwdGlvbihBcml0aG1ldGljRXJyb3IpOgpAQCAtMzcwLDkgKzM5MSwyNCBAQAogICAgIEluIGFsbCBjYXNlcywgSW5leGFjdCwgUm91bmRlZCwgYW5kIFN1Ym5vcm1hbCB3aWxsIGFsc28gYmUgcmFpc2VkLgogICAgICIiIgogCitjbGFzcyBGbG9hdE9wZXJhdGlvbihEZWNpbWFsRXhjZXB0aW9uLCBUeXBlRXJyb3IpOgorICAgICIiIkVuYWJsZSBzdHJpY3RlciBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgorCisgICAgSWYgdGhlIHNpZ25hbCBpcyBub3QgdHJhcHBlZCAoZGVmYXVsdCksIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGlzCisgICAgcGVybWl0dGVkIGluIHRoZSBEZWNpbWFsKCkgY29uc3RydWN0b3IsIGNvbnRleHQuY3JlYXRlX2RlY2ltYWwoKSBhbmQKKyAgICBhbGwgY29tcGFyaXNvbiBvcGVyYXRvcnMuIEJvdGggY29udmVyc2lvbiBhbmQgY29tcGFyaXNvbnMgYXJlIGV4YWN0LgorICAgIEFueSBvY2N1cnJlbmNlIG9mIGEgbWl4ZWQgb3BlcmF0aW9uIGlzIHNpbGVudGx5IHJlY29yZGVkIGJ5IHNldHRpbmcKKyAgICBGbG9hdE9wZXJhdGlvbiBpbiB0aGUgY29udGV4dCBmbGFncy4gIEV4cGxpY2l0IGNvbnZlcnNpb25zIHdpdGgKKyAgICBEZWNpbWFsLmZyb21fZmxvYXQoKSBvciBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKSBkbyBub3QKKyAgICBzZXQgdGhlIGZsYWcuCisKKyAgICBPdGhlcndpc2UgKHRoZSBzaWduYWwgaXMgdHJhcHBlZCksIG9ubHkgZXF1YWxpdHkgY29tcGFyaXNvbnMgYW5kIGV4cGxpY2l0CisgICAgY29udmVyc2lvbnMgYXJlIHNpbGVudC4gQWxsIG90aGVyIG1peGVkIG9wZXJhdGlvbnMgcmFpc2UgRmxvYXRPcGVyYXRpb24uCisgICAgIiIiCisKICMgTGlzdCBvZiBwdWJsaWMgdHJhcHMgYW5kIGZsYWdzCiBfc2lnbmFscyA9IFtDbGFtcGVkLCBEaXZpc2lvbkJ5WmVybywgSW5leGFjdCwgT3ZlcmZsb3csIFJvdW5kZWQsCi0gICAgICAgICAgIFVuZGVyZmxvdywgSW52YWxpZE9wZXJhdGlvbiwgU3Vibm9ybWFsXQorICAgICAgICAgICAgVW5kZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBTdWJub3JtYWwsIEZsb2F0T3BlcmF0aW9uXQogCiAjIE1hcCBjb25kaXRpb25zIChwZXIgdGhlIHNwZWMpIHRvIHNpZ25hbHMKIF9jb25kaXRpb25fbWFwID0ge0NvbnZlcnNpb25TeW50YXg6SW52YWxpZE9wZXJhdGlvbiwKQEAgLTM4MCw2ICs0MTYsMTAgQEAKICAgICAgICAgICAgICAgICAgIERpdmlzaW9uVW5kZWZpbmVkOkludmFsaWRPcGVyYXRpb24sCiAgICAgICAgICAgICAgICAgICBJbnZhbGlkQ29udGV4dDpJbnZhbGlkT3BlcmF0aW9ufQogCisjIFZhbGlkIHJvdW5kaW5nIG1vZGVzCitfcm91bmRpbmdfbW9kZXMgPSAoUk9VTkRfRE9XTiwgUk9VTkRfSEFMRl9VUCwgUk9VTkRfSEFMRl9FVkVOLCBST1VORF9DRUlMSU5HLAorICAgICAgICAgICAgICAgICAgIFJPVU5EX0ZMT09SLCBST1VORF9VUCwgUk9VTkRfSEFMRl9ET1dOLCBST1VORF8wNVVQKQorCiAjIyMjIyBDb250ZXh0IEZ1bmN0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIFRoZSBnZXRjb250ZXh0KCkgYW5kIHNldGNvbnRleHQoKSBmdW5jdGlvbiBtYW5hZ2UgYWNjZXNzIHRvIGEgdGhyZWFkLWxvY2FsCkBAIC0zOTIsMTIgKzQzMiwxMSBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAjIFB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWRzOyBjcmVhdGUgYSBtb2NrIG9iamVjdCBpbnN0ZWFkCi0gICAgaW1wb3J0IHN5cwogICAgIGNsYXNzIE1vY2tUaHJlYWRpbmcob2JqZWN0KToKICAgICAgICAgZGVmIGxvY2FsKHNlbGYsIHN5cz1zeXMpOgogICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW19fbmFtZV9fXQogICAgIHRocmVhZGluZyA9IE1vY2tUaHJlYWRpbmcoKQotICAgIGRlbCBzeXMsIE1vY2tUaHJlYWRpbmcKKyAgICBkZWwgTW9ja1RocmVhZGluZwogCiB0cnk6CiAgICAgdGhyZWFkaW5nLmxvY2FsCkBAIC02NTAsNiArNjg5LDExIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGZsb2F0KToKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihGbG9hdE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAic3RyaWN0IHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgYXJlICIKKyAgICAgICAgICAgICAgICAiZW5hYmxlZCIpCiAgICAgICAgICAgICB2YWx1ZSA9IERlY2ltYWwuZnJvbV9mbG9hdCh2YWx1ZSkKICAgICAgICAgICAgIHNlbGYuX2V4cCAgPSB2YWx1ZS5fZXhwCiAgICAgICAgICAgICBzZWxmLl9zaWduID0gdmFsdWUuX3NpZ24KQEAgLTY4NCw3ICs3MjgsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgaWYgaXNpbnN0YW5jZShmLCBpbnQpOiAgICAgICAgICAgICAgICAjIGhhbmRsZSBpbnRlZ2VyIGlucHV0cwogICAgICAgICAgICAgcmV0dXJuIGNscyhmKQotICAgICAgICBpZiBfbWF0aC5pc2luZihmKSBvciBfbWF0aC5pc25hbihmKTogICMgcmFpc2VzIFR5cGVFcnJvciBpZiBub3QgYSBmbG9hdAorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmLCBmbG9hdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IG11c3QgYmUgaW50IG9yIGZsb2F0LiIpCisgICAgICAgIGlmIF9tYXRoLmlzaW5mKGYpIG9yIF9tYXRoLmlzbmFuKGYpOgogICAgICAgICAgICAgcmV0dXJuIGNscyhyZXByKGYpKQogICAgICAgICBpZiBfbWF0aC5jb3B5c2lnbigxLjAsIGYpID09IDEuMDoKICAgICAgICAgICAgIHNpZ24gPSAwCkBAIC0xODc3LDYgKzE5MjMsNyBAQAogICAgICAgICAiIiIKIAogICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisgICAgICAgIHRoaXJkID0gX2NvbnZlcnRfb3RoZXIodGhpcmQsIHJhaXNlaXQ9VHJ1ZSkKIAogICAgICAgICAjIGNvbXB1dGUgcHJvZHVjdDsgcmFpc2UgSW52YWxpZE9wZXJhdGlvbiBpZiBlaXRoZXIgb3BlcmFuZCBpcwogICAgICAgICAjIGEgc2lnbmFsaW5nIE5hTiBvciBpZiB0aGUgcHJvZHVjdCBpcyB6ZXJvIHRpbWVzIGluZmluaXR5LgpAQCAtMTkwNiwxNyArMTk1MywxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGludChzZWxmLl9pbnQpICogaW50KG90aGVyLl9pbnQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCArIG90aGVyLl9leHApCiAKLSAgICAgICAgdGhpcmQgPSBfY29udmVydF9vdGhlcih0aGlyZCwgcmFpc2VpdD1UcnVlKQogICAgICAgICByZXR1cm4gcHJvZHVjdC5fX2FkZF9fKHRoaXJkLCBjb250ZXh0KQogCiAgICAgZGVmIF9wb3dlcl9tb2R1bG8oc2VsZiwgb3RoZXIsIG1vZHVsbywgY29udGV4dD1Ob25lKToKICAgICAgICAgIiIiVGhyZWUgYXJndW1lbnQgdmVyc2lvbiBvZiBfX3Bvd19fIiIiCiAKLSAgICAgICAgIyBpZiBjYW4ndCBjb252ZXJ0IG90aGVyIGFuZCBtb2R1bG8gdG8gRGVjaW1hbCwgcmFpc2UKLSAgICAgICAgIyBUeXBlRXJyb3I7IHRoZXJlJ3Mgbm8gcG9pbnQgcmV0dXJuaW5nIE5vdEltcGxlbWVudGVkIChubwotICAgICAgICAjIGVxdWl2YWxlbnQgb2YgX19ycG93X18gZm9yIHRocmVlIGFyZ3VtZW50IHBvdykKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotICAgICAgICBtb2R1bG8gPSBfY29udmVydF9vdGhlcihtb2R1bG8sIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgbW9kdWxvID0gX2NvbnZlcnRfb3RoZXIobW9kdWxvKQorICAgICAgICBpZiBtb2R1bG8gaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gbW9kdWxvCiAKICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgogICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQpAQCAtMjAwNyw5ICsyMDU0LDkgQEAKICAgICAgICAgbm9uemVyby4gIEZvciBlZmZpY2llbmN5LCBvdGhlci5fZXhwIHNob3VsZCBub3QgYmUgdG9vIGxhcmdlLAogICAgICAgICBzbyB0aGF0IDEwKiphYnMob3RoZXIuX2V4cCkgaXMgYSBmZWFzaWJsZSBjYWxjdWxhdGlvbi4iIiIKIAotICAgICAgICAjIEluIHRoZSBjb21tZW50cyBiZWxvdywgd2Ugd3JpdGUgeCBmb3IgdGhlIHZhbHVlIG9mIHNlbGYgYW5kCi0gICAgICAgICMgeSBmb3IgdGhlIHZhbHVlIG9mIG90aGVyLiAgV3JpdGUgeCA9IHhjKjEwKip4ZSBhbmQgeSA9Ci0gICAgICAgICMgeWMqMTAqKnllLgorICAgICAgICAjIEluIHRoZSBjb21tZW50cyBiZWxvdywgd2Ugd3JpdGUgeCBmb3IgdGhlIHZhbHVlIG9mIHNlbGYgYW5kIHkgZm9yIHRoZQorICAgICAgICAjIHZhbHVlIG9mIG90aGVyLiAgV3JpdGUgeCA9IHhjKjEwKip4ZSBhbmQgYWJzKHkpID0geWMqMTAqKnllLCB3aXRoIHhjCisgICAgICAgICMgYW5kIHljIHBvc2l0aXZlIGludGVnZXJzIG5vdCBkaXZpc2libGUgYnkgMTAuCiAKICAgICAgICAgIyBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIGlkZW50aWZ5IHRoZSAqZmFpbHVyZSoKICAgICAgICAgIyBvZiB4Kip5IHRvIGJlIGV4YWN0bHkgcmVwcmVzZW50YWJsZSB3aXRoIGFzIGxpdHRsZSBlZmZvcnQgYXMKQEAgLTIwMTcsMTMgKzIwNjQsMTIgQEAKICAgICAgICAgIyBlbGltaW5hdGUgdGhlIHBvc3NpYmlsaXR5IG9mIHgqKnkgYmVpbmcgZXhhY3QuICBPbmx5IGlmIGFsbAogICAgICAgICAjIHRoZXNlIHRlc3RzIGFyZSBwYXNzZWQgZG8gd2UgZ28gb24gdG8gYWN0dWFsbHkgY29tcHV0ZSB4Kip5LgogCi0gICAgICAgICMgSGVyZSdzIHRoZSBtYWluIGlkZWEuICBGaXJzdCBub3JtYWxpemUgYm90aCB4IGFuZCB5LiAgV2UKLSAgICAgICAgIyBleHByZXNzIHkgYXMgYSByYXRpb25hbCBtL24sIHdpdGggbSBhbmQgbiByZWxhdGl2ZWx5IHByaW1lCi0gICAgICAgICMgYW5kIG4+MC4gIFRoZW4gZm9yIHgqKnkgdG8gYmUgZXhhY3RseSByZXByZXNlbnRhYmxlIChhdAotICAgICAgICAjICphbnkqIHByZWNpc2lvbiksIHhjIG11c3QgYmUgdGhlIG50aCBwb3dlciBvZiBhIHBvc2l0aXZlCi0gICAgICAgICMgaW50ZWdlciBhbmQgeGUgbXVzdCBiZSBkaXZpc2libGUgYnkgbi4gIElmIG0gaXMgbmVnYXRpdmUKLSAgICAgICAgIyB0aGVuIGFkZGl0aW9uYWxseSB4YyBtdXN0IGJlIGEgcG93ZXIgb2YgZWl0aGVyIDIgb3IgNSwgaGVuY2UKLSAgICAgICAgIyBhIHBvd2VyIG9mIDIqKm4gb3IgNSoqbi4KKyAgICAgICAgIyBIZXJlJ3MgdGhlIG1haW4gaWRlYS4gIEV4cHJlc3MgeSBhcyBhIHJhdGlvbmFsIG51bWJlciBtL24sIHdpdGggbSBhbmQKKyAgICAgICAgIyBuIHJlbGF0aXZlbHkgcHJpbWUgYW5kIG4+MC4gIFRoZW4gZm9yIHgqKnkgdG8gYmUgZXhhY3RseQorICAgICAgICAjIHJlcHJlc2VudGFibGUgKGF0ICphbnkqIHByZWNpc2lvbiksIHhjIG11c3QgYmUgdGhlIG50aCBwb3dlciBvZiBhCisgICAgICAgICMgcG9zaXRpdmUgaW50ZWdlciBhbmQgeGUgbXVzdCBiZSBkaXZpc2libGUgYnkgbi4gIElmIHkgaXMgbmVnYXRpdmUKKyAgICAgICAgIyB0aGVuIGFkZGl0aW9uYWxseSB4YyBtdXN0IGJlIGEgcG93ZXIgb2YgZWl0aGVyIDIgb3IgNSwgaGVuY2UgYSBwb3dlcgorICAgICAgICAjIG9mIDIqKm4gb3IgNSoqbi4KICAgICAgICAgIwogICAgICAgICAjIFRoZXJlJ3MgYSBsaW1pdCB0byBob3cgc21hbGwgfHl8IGNhbiBiZTogaWYgeT1tL24gYXMgYWJvdmUKICAgICAgICAgIyB0aGVuOgpAQCAtMjA5NSwyMSArMjE0MSw0MyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgICMgbm93IHhjIGlzIGEgcG93ZXIgb2YgMjsgZSBpcyBpdHMgZXhwb25lbnQKICAgICAgICAgICAgICAgICBlID0gX25iaXRzKHhjKS0xCi0gICAgICAgICAgICAgICAgIyBmaW5kIGUqeSBhbmQgeGUqeTsgYm90aCBtdXN0IGJlIGludGVnZXJzCi0gICAgICAgICAgICAgICAgaWYgeWUgPj0gMDoKLSAgICAgICAgICAgICAgICAgICAgeV9hc19pbnQgPSB5YyoxMCoqeWUKLSAgICAgICAgICAgICAgICAgICAgZSA9IGUqeV9hc19pbnQKLSAgICAgICAgICAgICAgICAgICAgeGUgPSB4ZSp5X2FzX2ludAotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRlbl9wb3cgPSAxMCoqLXllCi0gICAgICAgICAgICAgICAgICAgIGUsIHJlbWFpbmRlciA9IGRpdm1vZChlKnljLCB0ZW5fcG93KQotICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5kZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgICAgICB4ZSwgcmVtYWluZGVyID0gZGl2bW9kKHhlKnljLCB0ZW5fcG93KQotICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5kZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgICAgICAgICAgICAgaWYgZSo2NSA+PSBwKjkzOiAjIDkzLzY1ID4gbG9nKDEwKS9sb2coNSkKKyAgICAgICAgICAgICAgICAjIFdlIG5vdyBoYXZlOgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgeCA9IDIqKmUgKiAxMCoqeGUsIGUgPiAwLCBhbmQgeSA8IDAuCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgVGhlIGV4YWN0IHJlc3VsdCBpczoKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIHgqKnkgPSA1KiooLWUqeSkgKiAxMCoqKGUqeSArIHhlKnkpCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgcHJvdmlkZWQgdGhhdCBib3RoIGUqeSBhbmQgeGUqeSBhcmUgaW50ZWdlcnMuICBOb3RlIHRoYXQgaWYKKyAgICAgICAgICAgICAgICAjIDUqKigtZSp5KSA+PSAxMCoqcCwgdGhlbiB0aGUgcmVzdWx0IGNhbid0IGJlIGV4cHJlc3NlZAorICAgICAgICAgICAgICAgICMgZXhhY3RseSB3aXRoIHAgZGlnaXRzIG9mIHByZWNpc2lvbi4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBVc2luZyB0aGUgYWJvdmUsIHdlIGNhbiBndWFyZCBhZ2FpbnN0IGxhcmdlIHZhbHVlcyBvZiB5ZS4KKyAgICAgICAgICAgICAgICAjIDkzLzY1IGlzIGFuIHVwcGVyIGJvdW5kIGZvciBsb2coMTApL2xvZyg1KSwgc28gaWYKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIHllID49IGxlbihzdHIoOTMqcC8vNjUpKQorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIHRoZW4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIC1lKnkgPj0gLXkgPj0gMTAqKnllID4gOTMqcC82NSA+IHAqbG9nKDEwKS9sb2coNSksCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgc28gNSoqKC1lKnkpID49IDEwKipwLCBhbmQgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQKKyAgICAgICAgICAgICAgICAjIGNhbid0IGJlIGV4cHJlc3NlZCBpbiBwIGRpZ2l0cy4KKworICAgICAgICAgICAgICAgICMgZW1heCA+PSBsYXJnZXN0IGUgc3VjaCB0aGF0IDUqKmUgPCAxMCoqcC4KKyAgICAgICAgICAgICAgICBlbWF4ID0gcCo5My8vNjUKKyAgICAgICAgICAgICAgICBpZiB5ZSA+PSBsZW4oc3RyKGVtYXgpKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgICMgRmluZCAtZSp5IGFuZCAteGUqeTsgYm90aCBtdXN0IGJlIGludGVnZXJzCisgICAgICAgICAgICAgICAgZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdChlICogeWMsIHllKQorICAgICAgICAgICAgICAgIHhlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KHhlICogeWMsIHllKQorICAgICAgICAgICAgICAgIGlmIGUgaXMgTm9uZSBvciB4ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgaWYgZSA+IGVtYXg6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICAgeGMgPSA1KiplCiAKQEAgLTIxMjMsMTkgKzIxOTEsMjAgQEAKICAgICAgICAgICAgICAgICB3aGlsZSB4YyAlIDUgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgeGMgLy89IDUKICAgICAgICAgICAgICAgICAgICAgZSAtPSAxCi0gICAgICAgICAgICAgICAgaWYgeWUgPj0gMDoKLSAgICAgICAgICAgICAgICAgICAgeV9hc19pbnRlZ2VyID0geWMqMTAqKnllCi0gICAgICAgICAgICAgICAgICAgIGUgPSBlKnlfYXNfaW50ZWdlcgotICAgICAgICAgICAgICAgICAgICB4ZSA9IHhlKnlfYXNfaW50ZWdlcgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRlbl9wb3cgPSAxMCoqLXllCi0gICAgICAgICAgICAgICAgICAgIGUsIHJlbWFpbmRlciA9IGRpdm1vZChlKnljLCB0ZW5fcG93KQotICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5kZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgICAgICB4ZSwgcmVtYWluZGVyID0gZGl2bW9kKHhlKnljLCB0ZW5fcG93KQotICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5kZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgIGlmIGUqMyA+PSBwKjEwOiAjIDEwLzMgPiBsb2coMTApL2xvZygyKQorCisgICAgICAgICAgICAgICAgIyBHdWFyZCBhZ2FpbnN0IGxhcmdlIHZhbHVlcyBvZiB5ZSwgdXNpbmcgdGhlIHNhbWUgbG9naWMgYXMgaW4KKyAgICAgICAgICAgICAgICAjIHRoZSAneGMgaXMgYSBwb3dlciBvZiAyJyBicmFuY2guICAxMC8zIGlzIGFuIHVwcGVyIGJvdW5kIGZvcgorICAgICAgICAgICAgICAgICMgbG9nKDEwKS9sb2coMikuCisgICAgICAgICAgICAgICAgZW1heCA9IHAqMTAvLzMKKyAgICAgICAgICAgICAgICBpZiB5ZSA+PSBsZW4oc3RyKGVtYXgpKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgIGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICB4ZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdCh4ZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICBpZiBlIGlzIE5vbmUgb3IgeGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgIGlmIGUgPiBlbWF4OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgIHhjID0gMioqZQogICAgICAgICAgICAgZWxzZToKQEAgLTM4MTYsMTEgKzM4ODUsOSBAQAogICAgIGNsYW1wIC0gIElmIDEsIGNoYW5nZSBleHBvbmVudHMgaWYgdG9vIGhpZ2ggKERlZmF1bHQgMCkKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsCi0gICAgICAgICAgICAgICAgIHRyYXBzPU5vbmUsIGZsYWdzPU5vbmUsCi0gICAgICAgICAgICAgICAgIEVtaW49Tm9uZSwgRW1heD1Ob25lLAotICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLAotICAgICAgICAgICAgICAgICBfaWdub3JlZF9mbGFncz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Tm9uZSwgY2xhbXA9Tm9uZSwgZmxhZ3M9Tm9uZSwgdHJhcHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgX2lnbm9yZWRfZmxhZ3M9Tm9uZSk6CiAgICAgICAgICMgU2V0IGRlZmF1bHRzOyBmb3IgZXZlcnl0aGluZyBleGNlcHQgZmxhZ3MgYW5kIF9pZ25vcmVkX2ZsYWdzLAogICAgICAgICAjIGluaGVyaXQgZnJvbSBEZWZhdWx0Q29udGV4dC4KICAgICAgICAgdHJ5OgpAQCAtMzg0MywxNyArMzkxMCw3OCBAQAogICAgICAgICBpZiB0cmFwcyBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRjLnRyYXBzLmNvcHkoKQogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHRyYXBzLCBkaWN0KToKLSAgICAgICAgICAgIHNlbGYudHJhcHMgPSBkaWN0KChzLCBpbnQocyBpbiB0cmFwcykpIGZvciBzIGluIF9zaWduYWxzKQorICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRpY3QoKHMsIGludChzIGluIHRyYXBzKSkgZm9yIHMgaW4gX3NpZ25hbHMgKyB0cmFwcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudHJhcHMgPSB0cmFwcwogCiAgICAgICAgIGlmIGZsYWdzIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdC5mcm9ta2V5cyhfc2lnbmFscywgMCkKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmbGFncywgZGljdCk6Ci0gICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdCgocywgaW50KHMgaW4gZmxhZ3MpKSBmb3IgcyBpbiBfc2lnbmFscykKKyAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBkaWN0KChzLCBpbnQocyBpbiBmbGFncykpIGZvciBzIGluIF9zaWduYWxzICsgZmxhZ3MpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZmxhZ3MKIAorICAgIGRlZiBfc2V0X2ludGVnZXJfY2hlY2soc2VsZiwgbmFtZSwgdmFsdWUsIHZtaW4sIHZtYXgpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgbXVzdCBiZSBhbiBpbnRlZ2VyIiAlIG5hbWUpCisgICAgICAgIGlmIHZtaW4gPT0gJy1pbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPiB2bWF4OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVzLCAlZF0uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxpZiB2bWF4ID09ICdpbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPCB2bWluOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVkLCAlc10uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHZhbHVlIDwgdm1pbiBvciB2YWx1ZSA+IHZtYXg6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJWQsICVkXS4gZ290ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisKKyAgICBkZWYgX3NldF9zaWduYWxfZGljdChzZWxmLCBuYW1lLCBkKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZCwgZGljdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIG11c3QgYmUgYSBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIGQ6CisgICAgICAgICAgICBpZiBub3Qga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgaWYgbm90IGtleSBpbiBkOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIGQpCisKKyAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBpZiBuYW1lID09ICdwcmVjJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMSwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnRW1pbic6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsICctaW5mJywgMCkKKyAgICAgICAgZWxpZiBuYW1lID09ICdFbWF4JzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnY2FwaXRhbHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAxKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ2NsYW1wJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgMSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdyb3VuZGluZyc6CisgICAgICAgICAgICBpZiBub3QgdmFsdWUgaW4gX3JvdW5kaW5nX21vZGVzOgorICAgICAgICAgICAgICAgICMgcmFpc2UgVHlwZUVycm9yIGV2ZW4gZm9yIHN0cmluZ3MgdG8gaGF2ZSBjb25zaXN0ZW5jeQorICAgICAgICAgICAgICAgICMgYW1vbmcgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlczogaW52YWxpZCByb3VuZGluZyBtb2RlIiAlIHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdmbGFncycgb3IgbmFtZSA9PSAndHJhcHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9zaWduYWxfZGljdChuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdfaWdub3JlZF9mbGFncyc6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCisgICAgICAgICAgICAgICAgIidkZWNpbWFsLkNvbnRleHQnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKKworICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGNhbm5vdCBiZSBkZWxldGVkIiAlIG5hbWUpCisKKyAgICAjIFN1cHBvcnQgZm9yIHBpY2tsaW5nLCBjb3B5LCBhbmQgZGVlcGNvcHkKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgZmxhZ3MgPSBbc2lnIGZvciBzaWcsIHYgaW4gc2VsZi5mbGFncy5pdGVtcygpIGlmIHZdCisgICAgICAgIHRyYXBzID0gW3NpZyBmb3Igc2lnLCB2IGluIHNlbGYudHJhcHMuaXRlbXMoKSBpZiB2XQorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLAorICAgICAgICAgICAgICAgIChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLCBmbGFncywgdHJhcHMpKQorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAiIiJTaG93IHRoZSBjdXJyZW50IGNvbnRleHQuIiIiCiAgICAgICAgIHMgPSBbXQpAQCAtMzg3Miw0MyArNDAwMCwyNyBAQAogICAgICAgICBmb3IgZmxhZyBpbiBzZWxmLmZsYWdzOgogICAgICAgICAgICAgc2VsZi5mbGFnc1tmbGFnXSA9IDAKIAorICAgIGRlZiBjbGVhcl90cmFwcyhzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgYWxsIHRyYXBzIHRvIHplcm8iIiIKKyAgICAgICAgZm9yIGZsYWcgaW4gc2VsZi50cmFwczoKKyAgICAgICAgICAgIHNlbGYudHJhcHNbZmxhZ10gPSAwCisKICAgICBkZWYgX3NoYWxsb3dfY29weShzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyBhIHNoYWxsb3cgY29weSBmcm9tIHNlbGYuIiIiCi0gICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYudHJhcHMsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCisgICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwgc2VsZi5mbGFncywgc2VsZi50cmFwcywKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCiAgICAgICAgIHJldHVybiBuYwogCiAgICAgZGVmIGNvcHkoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgYSBkZWVwIGNvcHkgZnJvbSBzZWxmLiIiIgotICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLnRyYXBzLmNvcHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuY29weSgpLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCisgICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuY29weSgpLCBzZWxmLnRyYXBzLmNvcHkoKSwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCiAgICAgICAgIHJldHVybiBuYwogICAgIF9fY29weV9fID0gY29weQogCi0gICAgIyBfY2xhbXAgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggdGhpcmQtcGFydHkKLSAgICAjIGNvZGUuICBNYXkgYmUgcmVtb3ZlZCBpbiBQeXRob24gPj0gMy4zLgotICAgIGRlZiBfZ2V0X2NsYW1wKHNlbGYpOgotICAgICAgICAiX2NsYW1wIG1pcnJvcnMgdGhlIGNsYW1wIGF0dHJpYnV0ZS4gIEl0cyB1c2UgaXMgZGVwcmVjYXRlZC4iCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKCdVc2Ugb2YgdGhlIF9jbGFtcCBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZC4gJwotICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgdXNlIGNsYW1wIGluc3RlYWQuJywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIHJldHVybiBzZWxmLmNsYW1wCi0KLSAgICBkZWYgX3NldF9jbGFtcChzZWxmLCBjbGFtcCk6Ci0gICAgICAgICJfY2xhbXAgbWlycm9ycyB0aGUgY2xhbXAgYXR0cmlidXRlLiAgSXRzIHVzZSBpcyBkZXByZWNhdGVkLiIKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ1VzZSBvZiB0aGUgX2NsYW1wIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkLiAnCi0gICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSB1c2UgY2xhbXAgaW5zdGVhZC4nLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgc2VsZi5jbGFtcCA9IGNsYW1wCi0KLSAgICAjIGRvbid0IGJvdGhlciB3aXRoIF9kZWxfY2xhbXA7ICBubyBzYW5lIDNyZCBwYXJ0eSBjb2RlIHNob3VsZAotICAgICMgYmUgZGVsZXRpbmcgdGhlIF9jbGFtcCBhdHRyaWJ1dGUKLSAgICBfY2xhbXAgPSBwcm9wZXJ0eShfZ2V0X2NsYW1wLCBfc2V0X2NsYW1wKQotCiAgICAgZGVmIF9yYWlzZV9lcnJvcihzZWxmLCBjb25kaXRpb24sIGV4cGxhbmF0aW9uID0gTm9uZSwgKmFyZ3MpOgogICAgICAgICAiIiJIYW5kbGVzIGFuIGVycm9yCiAKQEAgLTQwNjgsNiArNDE4MCw4IEBACiAgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKICAgICAgICAgRGVjaW1hbCgnMi41MCcpCiAgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBEZWNpbWFsKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fub25pY2FsIHJlcXVpcmVzIGEgRGVjaW1hbCBhcyBhbiBhcmd1bWVudC4iKQogICAgICAgICByZXR1cm4gYS5jYW5vbmljYWwoY29udGV4dD1zZWxmKQogCiAgICAgZGVmIGNvbXBhcmUoc2VsZiwgYSwgYik6CkBAIC00Mzc4LDYgKzQ0OTIsOCBAQAogICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Nhbm9uaWNhbChEZWNpbWFsKCcyLjUwJykpCiAgICAgICAgIFRydWUKICAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGEsIERlY2ltYWwpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpc19jYW5vbmljYWwgcmVxdWlyZXMgYSBEZWNpbWFsIGFzIGFuIGFyZ3VtZW50LiIpCiAgICAgICAgIHJldHVybiBhLmlzX2Nhbm9uaWNhbCgpCiAKICAgICBkZWYgaXNfZmluaXRlKHNlbGYsIGEpOgpAQCAtNDk3MCw3ICs1MDg2LDcgQEAKICAgICAgICAgICArTm9ybWFsCiAgICAgICAgICAgK0luZmluaXR5CiAKLSAgICAgICAgPj4+IGMgPSBDb250ZXh0KEV4dGVuZGVkQ29udGV4dCkKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCiAgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CiAgICAgICAgID4+PiBjLkVtYXggPSA5OTkKICAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ0luZmluaXR5JykpCkBAIC01NTM1LDYgKzU2NTEsMjcgQEAKIAogX25iaXRzID0gaW50LmJpdF9sZW5ndGgKIAorZGVmIF9kZWNpbWFsX2xzaGlmdF9leGFjdChuLCBlKToKKyAgICAiIiIgR2l2ZW4gaW50ZWdlcnMgbiBhbmQgZSwgcmV0dXJuIG4gKiAxMCoqZSBpZiBpdCdzIGFuIGludGVnZXIsIGVsc2UgTm9uZS4KKworICAgIFRoZSBjb21wdXRhdGlvbiBpcyBkZXNpZ25lZCB0byBhdm9pZCBjb21wdXRpbmcgbGFyZ2UgcG93ZXJzIG9mIDEwCisgICAgdW5uZWNlc3NhcmlseS4KKworICAgID4+PiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoMywgNCkKKyAgICAzMDAwMAorICAgID4+PiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoMzAwLCAtOTk5OTk5OTk5KSAgIyByZXR1cm5zIE5vbmUKKworICAgICIiIgorICAgIGlmIG4gPT0gMDoKKyAgICAgICAgcmV0dXJuIDAKKyAgICBlbGlmIGUgPj0gMDoKKyAgICAgICAgcmV0dXJuIG4gKiAxMCoqZQorICAgIGVsc2U6CisgICAgICAgICMgdmFsX24gPSBsYXJnZXN0IHBvd2VyIG9mIDEwIGRpdmlkaW5nIG4uCisgICAgICAgIHN0cl9uID0gc3RyKGFicyhuKSkKKyAgICAgICAgdmFsX24gPSBsZW4oc3RyX24pIC0gbGVuKHN0cl9uLnJzdHJpcCgnMCcpKQorICAgICAgICByZXR1cm4gTm9uZSBpZiB2YWxfbiA8IC1lIGVsc2UgbiAvLyAxMCoqLWUKKwogZGVmIF9zcXJ0X25lYXJlc3QobiwgYSk6CiAgICAgIiIiQ2xvc2VzdCBpbnRlZ2VyIHRvIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgcG9zaXRpdmUgaW50ZWdlciBuLiAgYSBpcwogICAgIGFuIGluaXRpYWwgYXBwcm94aW1hdGlvbiB0byB0aGUgc3F1YXJlIHJvb3QuICBBbnkgcG9zaXRpdmUgaW50ZWdlcgpAQCAtNTkwMSw2ICs2MDM4LDEyIEBACiAgICAgaWYgZXF1YWxpdHlfb3AgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIF9udW1iZXJzLkNvbXBsZXgpIGFuZCBvdGhlci5pbWFnID09IDA6CiAgICAgICAgIG90aGVyID0gb3RoZXIucmVhbAogICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGZsb2F0KToKKyAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBpZiBlcXVhbGl0eV9vcDoKKyAgICAgICAgICAgIGNvbnRleHQuZmxhZ3NbRmxvYXRPcGVyYXRpb25dID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoRmxvYXRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgInN0cmljdCBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGFyZSBlbmFibGVkIikKICAgICAgICAgcmV0dXJuIHNlbGYsIERlY2ltYWwuZnJvbV9mbG9hdChvdGhlcikKICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQsIE5vdEltcGxlbWVudGVkCiAKQEAgLTU5MTQsOCArNjA1Nyw4IEBACiAgICAgICAgIHByZWM9MjgsIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwKICAgICAgICAgdHJhcHM9W0RpdmlzaW9uQnlaZXJvLCBPdmVyZmxvdywgSW52YWxpZE9wZXJhdGlvbl0sCiAgICAgICAgIGZsYWdzPVtdLAotICAgICAgICBFbWF4PTk5OTk5OTk5OSwKLSAgICAgICAgRW1pbj0tOTk5OTk5OTk5LAorICAgICAgICBFbWF4PTk5OTk5OSwKKyAgICAgICAgRW1pbj0tOTk5OTk5LAogICAgICAgICBjYXBpdGFscz0xLAogICAgICAgICBjbGFtcD0wCiApCkBAIC02MDY1LDcgKzYyMDgsNyBAQAogICAgICMgaWYgZm9ybWF0IHR5cGUgaXMgJ2cnIG9yICdHJyB0aGVuIGEgcHJlY2lzaW9uIG9mIDAgbWFrZXMgbGl0dGxlCiAgICAgIyBzZW5zZTsgY29udmVydCBpdCB0byAxLiAgU2FtZSBpZiBmb3JtYXQgdHlwZSBpcyB1bnNwZWNpZmllZC4KICAgICBpZiBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPT0gMDoKLSAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpcyBOb25lIG9yIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaW4gJ2dHJzoKKyAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpcyBOb25lIG9yIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaW4gJ2dHbic6CiAgICAgICAgICAgICBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPSAxCiAKICAgICAjIGRldGVybWluZSB0aG91c2FuZHMgc2VwYXJhdG9yLCBncm91cGluZywgYW5kIGRlY2ltYWwgc2VwYXJhdG9yLCBhbmQKQEAgLTYyMzksMTYgKzYzODIsMjYgQEAKIAogIyBDb25zdGFudHMgcmVsYXRlZCB0byB0aGUgaGFzaCBpbXBsZW1lbnRhdGlvbjsgIGhhc2goeCkgaXMgYmFzZWQKICMgb24gdGhlIHJlZHVjdGlvbiBvZiB4IG1vZHVsbyBfUHlIQVNIX01PRFVMVVMKLWltcG9ydCBzeXMKIF9QeUhBU0hfTU9EVUxVUyA9IHN5cy5oYXNoX2luZm8ubW9kdWx1cwogIyBoYXNoIHZhbHVlcyB0byB1c2UgZm9yIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBpbmZpbml0aWVzLCBhbmQgbmFucwogX1B5SEFTSF9JTkYgPSBzeXMuaGFzaF9pbmZvLmluZgogX1B5SEFTSF9OQU4gPSBzeXMuaGFzaF9pbmZvLm5hbgotZGVsIHN5cwogCiAjIF9QeUhBU0hfMTBJTlYgaXMgdGhlIGludmVyc2Ugb2YgMTAgbW9kdWxvIHRoZSBwcmltZSBfUHlIQVNIX01PRFVMVVMKIF9QeUhBU0hfMTBJTlYgPSBwb3coMTAsIF9QeUhBU0hfTU9EVUxVUyAtIDIsIF9QeUhBU0hfTU9EVUxVUykKK2RlbCBzeXMKIAordHJ5OgorICAgIGltcG9ydCBfZGVjaW1hbAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgczEgPSBzZXQoZGlyKCkpCisgICAgczIgPSBzZXQoZGlyKF9kZWNpbWFsKSkKKyAgICBmb3IgbmFtZSBpbiBzMSAtIHMyOgorICAgICAgICBkZWwgZ2xvYmFscygpW25hbWVdCisgICAgZGVsIHMxLCBzMiwgbmFtZQorICAgIGZyb20gX2RlY2ltYWwgaW1wb3J0ICoKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgZG9jdGVzdCwgZGVjaW1hbApkaWZmIC0tZ2l0IGEvTGliL2RpZmZsaWIucHkgYi9MaWIvZGlmZmxpYi5weQppbmRleCBlNmNjNmVlLi5hZTM3N2Q3IDEwMDY0NAotLS0gYS9MaWIvZGlmZmxpYi5weQorKysgYi9MaWIvZGlmZmxpYi5weQpAQCAtMjA0LDcgKzIwNCw3IEBACiAgICAgICAgICMgICAgICByZXR1cm5pbmcgdHJ1ZSBpZmYgdGhlIGVsZW1lbnQgaXMgImp1bmsiIC0tIHRoaXMgaGFzCiAgICAgICAgICMgICAgICBzdWJ0bGUgYnV0IGhlbHBmdWwgZWZmZWN0cyBvbiB0aGUgYWxnb3JpdGhtLCB3aGljaCBJJ2xsCiAgICAgICAgICMgICAgICBnZXQgYXJvdW5kIHRvIHdyaXRpbmcgdXAgc29tZWRheSA8MC45IHdpbms+LgotICAgICAgICAjICAgICAgRE9OJ1QgVVNFISAgT25seSBfX2NoYWluX2IgdXNlcyB0aGlzLiAgVXNlIGlzYmp1bmsuCisgICAgICAgICMgICAgICBET04nVCBVU0UhICBPbmx5IF9fY2hhaW5fYiB1c2VzIHRoaXMuICBVc2UgImluIHNlbGYuYmp1bmsiLgogICAgICAgICAjIGJqdW5rCiAgICAgICAgICMgICAgICB0aGUgaXRlbXMgaW4gYiBmb3Igd2hpY2ggaXNqdW5rIGlzIFRydWUuCiAgICAgICAgICMgYnBvcHVsYXIKQEAgLTI4Nyw3ICsyODcsNiBAQAogICAgICMgd2hlbiBzZWxmLmlzanVuayBpcyBkZWZpbmVkLCBqdW5rIGVsZW1lbnRzIGRvbid0IHNob3cgdXAgaW4gdGhpcwogICAgICMgbWFwIGF0IGFsbCwgd2hpY2ggc3RvcHMgdGhlIGNlbnRyYWwgZmluZF9sb25nZXN0X21hdGNoIG1ldGhvZAogICAgICMgZnJvbSBzdGFydGluZyBhbnkgbWF0Y2hpbmcgYmxvY2sgYXQgYSBqdW5rIGVsZW1lbnQgLi4uCi0gICAgIyBhbHNvIGNyZWF0ZXMgdGhlIGZhc3QgaXNianVuayBmdW5jdGlvbiAuLi4KICAgICAjIGIyaiBhbHNvIGRvZXMgbm90IGNvbnRhaW4gZW50cmllcyBmb3IgInBvcHVsYXIiIGVsZW1lbnRzLCBtZWFuaW5nCiAgICAgIyBlbGVtZW50cyB0aGF0IGFjY291bnQgZm9yIG1vcmUgdGhhbiAxICsgMSUgb2YgdGhlIHRvdGFsIGVsZW1lbnRzLCBhbmQKICAgICAjIHdoZW4gdGhlIHNlcXVlbmNlIGlzIHJlYXNvbmFibHkgbGFyZ2UgKD49IDIwMCBlbGVtZW50cyk7IHRoaXMgY2FuCkBAIC04MDAsNyArNzk5LDcgQEAKICAgICAuLi4gICAyLiBFeHBsaWNpdCBpcyBiZXR0ZXIgdGhhbiBpbXBsaWNpdC4KICAgICAuLi4gICAzLiBTaW1wbGUgaXMgYmV0dGVyIHRoYW4gY29tcGxleC4KICAgICAuLi4gICA0LiBDb21wbGV4IGlzIGJldHRlciB0aGFuIGNvbXBsaWNhdGVkLgotICAgIC4uLiAnJycuc3BsaXRsaW5lcygxKQorICAgIC4uLiAnJycuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgID4+PiBsZW4odGV4dDEpCiAgICAgNAogICAgID4+PiB0ZXh0MVswXVstMV0KQEAgLTgwOSw3ICs4MDgsNyBAQAogICAgIC4uLiAgIDMuICAgU2ltcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXguCiAgICAgLi4uICAgNC4gQ29tcGxpY2F0ZWQgaXMgYmV0dGVyIHRoYW4gY29tcGxleC4KICAgICAuLi4gICA1LiBGbGF0IGlzIGJldHRlciB0aGFuIG5lc3RlZC4KLSAgICAuLi4gJycnLnNwbGl0bGluZXMoMSkKKyAgICAuLi4gJycnLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKIAogICAgIE5leHQgd2UgaW5zdGFudGlhdGUgYSBEaWZmZXIgb2JqZWN0OgogCkBAIC04OTYsOCArODk1LDggQEAKIAogICAgICAgICBFeGFtcGxlOgogCi0gICAgICAgID4+PiBwcmludCgnJy5qb2luKERpZmZlcigpLmNvbXBhcmUoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKDEpLAotICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKDEpKSksCisgICAgICAgID4+PiBwcmludCgnJy5qb2luKERpZmZlcigpLmNvbXBhcmUoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKFRydWUpLAorICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKFRydWUpKSksCiAgICAgICAgIC4uLiAgICAgICBlbmQ9IiIpCiAgICAgICAgIC0gb25lCiAgICAgICAgID8gIF4KQEAgLTEyNjksOCArMTI2OCw4IEBACiAKICAgICBFeGFtcGxlOgogCi0gICAgPj4+IHByaW50KCcnLmpvaW4oY29udGV4dF9kaWZmKCdvbmVcbnR3b1xudGhyZWVcbmZvdXJcbicuc3BsaXRsaW5lcygxKSwKLSAgICAuLi4gICAgICAgJ3plcm9cbm9uZVxudHJlZVxuZm91clxuJy5zcGxpdGxpbmVzKDEpLCAnT3JpZ2luYWwnLCAnQ3VycmVudCcpKSwKKyAgICA+Pj4gcHJpbnQoJycuam9pbihjb250ZXh0X2RpZmYoJ29uZVxudHdvXG50aHJlZVxuZm91clxuJy5zcGxpdGxpbmVzKFRydWUpLAorICAgIC4uLiAgICAgICAnemVyb1xub25lXG50cmVlXG5mb3VyXG4nLnNwbGl0bGluZXMoVHJ1ZSksICdPcmlnaW5hbCcsICdDdXJyZW50JykpLAogICAgIC4uLiAgICAgICBlbmQ9IiIpCiAgICAgKioqIE9yaWdpbmFsCiAgICAgLS0tIEN1cnJlbnQKQEAgLTEzMzksOCArMTMzOCw4IEBACiAKICAgICBFeGFtcGxlOgogCi0gICAgPj4+IGRpZmYgPSBuZGlmZignb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoMSksCi0gICAgLi4uICAgICAgICAgICAgICAnb3JlXG50cmVlXG5lbXVcbicuc3BsaXRsaW5lcygxKSkKKyAgICA+Pj4gZGlmZiA9IG5kaWZmKCdvbmVcbnR3b1xudGhyZWVcbicuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSwKKyAgICAuLi4gICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogICAgID4+PiBwcmludCgnJy5qb2luKGRpZmYpLCBlbmQ9IiIpCiAgICAgLSBvbmUKICAgICA/ICBeCkBAIC0yMDM0LDggKzIwMzMsOCBAQAogCiAgICAgRXhhbXBsZXM6CiAKLSAgICA+Pj4gZGlmZiA9IG5kaWZmKCdvbmVcbnR3b1xudGhyZWVcbicuc3BsaXRsaW5lcygxKSwKLSAgICAuLi4gICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKDEpKQorICAgID4+PiBkaWZmID0gbmRpZmYoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpLAorICAgIC4uLiAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpCiAgICAgPj4+IGRpZmYgPSBsaXN0KGRpZmYpCiAgICAgPj4+IHByaW50KCcnLmpvaW4ocmVzdG9yZShkaWZmLCAxKSksIGVuZD0iIikKICAgICBvbmUKZGlmZiAtLWdpdCBhL0xpYi9kaXMucHkgYi9MaWIvZGlzLnB5CmluZGV4IGY2NGJhZTYuLjU0M2ZkYzcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXMucHkKKysrIGIvTGliL2Rpcy5weQpAQCAtMTkwLDYgKzE5MCw5IEBACiAgICAgICAgICAgICAgICAgaWYgZnJlZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBmcmVlID0gY28uY29fY2VsbHZhcnMgKyBjby5jb19mcmVldmFycwogICAgICAgICAgICAgICAgIHByaW50KCcoJyArIGZyZWVbb3BhcmddICsgJyknLCBlbmQ9JyAnKQorICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYXJnczoKKyAgICAgICAgICAgICAgICBwcmludCgnKCVkIHBvc2l0aW9uYWwsICVkIGtleXdvcmQgcGFpciknCisgICAgICAgICAgICAgICAgICAgICAgJSAoY29kZVtpLTJdLCBjb2RlW2ktMV0pLCBlbmQ9JyAnKQogICAgICAgICBwcmludCgpCiAKIGRlZiBfZGlzYXNzZW1ibGVfYnl0ZXMoY29kZSwgbGFzdGk9LTEsIHZhcm5hbWVzPU5vbmUsIG5hbWVzPU5vbmUsCkBAIC0yMjksNiArMjMyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyglZCknICUgb3BhcmcsIGVuZD0nICcpCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2NvbXBhcmU6CiAgICAgICAgICAgICAgICAgcHJpbnQoJygnICsgY21wX29wW29wYXJnXSArICcpJywgZW5kPScgJykKKyAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzbmFyZ3M6CisgICAgICAgICAgICAgICAgcHJpbnQoJyglZCBwb3NpdGlvbmFsLCAlZCBrZXl3b3JkIHBhaXIpJworICAgICAgICAgICAgICAgICAgICAgICUgKGNvZGVbaS0yXSwgY29kZVtpLTFdKSwgZW5kPScgJykKICAgICAgICAgcHJpbnQoKQogCiBkZWYgX2Rpc2Fzc2VtYmxlX3N0cihzb3VyY2UpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9fX2luaXRfXy5weSBiL0xpYi9kaXN0dXRpbHMvX19pbml0X18ucHkKaW5kZXggYjUyYTlmZS4uOGQ3M2I1MSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9fX2luaXRfXy5weQorKysgYi9MaWIvZGlzdHV0aWxzL19faW5pdF9fLnB5CkBAIC0xMyw1ICsxMyw1IEBACiAjIFVwZGF0ZWQgYXV0b21hdGljYWxseSBieSB0aGUgUHl0aG9uIHJlbGVhc2UgcHJvY2Vzcy4KICMKICMtLXN0YXJ0IGNvbnN0YW50cy0tCi1fX3ZlcnNpb25fXyA9ICIzLjIuMyIKK19fdmVyc2lvbl9fID0gIjMuMy4wcmMxIgogIy0tZW5kIGNvbnN0YW50cy0tCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CmluZGV4IGUzZWQzYWQuLjk1OWE4YmYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CkBAIC0yNjUsMTEgKzI2NSwxMSBAQAogICAgICAgICBjZmdkYXRhID0gY2ZnZGF0YSArIGIiXDAiCiAgICAgICAgIGlmIHNlbGYucHJlX2luc3RhbGxfc2NyaXB0OgogICAgICAgICAgICAgIyBXZSBuZWVkIHRvIG5vcm1hbGl6ZSBuZXdsaW5lcywgc28gd2Ugb3BlbiBpbiB0ZXh0IG1vZGUgYW5kCi0gICAgICAgICAgICAjIGNvbnZlcnQgYmFjayB0byBieXRlcy4gImxhdGluMSIgc2ltcGx5IGF2b2lkcyBhbnkgcG9zc2libGUKKyAgICAgICAgICAgICMgY29udmVydCBiYWNrIHRvIGJ5dGVzLiAibGF0aW4tMSIgc2ltcGx5IGF2b2lkcyBhbnkgcG9zc2libGUKICAgICAgICAgICAgICMgZmFpbHVyZXMuCiAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5wcmVfaW5zdGFsbF9zY3JpcHQsICJyIiwKLSAgICAgICAgICAgICAgICBlbmNvZGluZz0ibGF0aW4xIikgYXMgc2NyaXB0OgotICAgICAgICAgICAgICAgIHNjcmlwdF9kYXRhID0gc2NyaXB0LnJlYWQoKS5lbmNvZGUoImxhdGluMSIpCisgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ImxhdGluLTEiKSBhcyBzY3JpcHQ6CisgICAgICAgICAgICAgICAgc2NyaXB0X2RhdGEgPSBzY3JpcHQucmVhZCgpLmVuY29kZSgibGF0aW4tMSIpCiAgICAgICAgICAgICBjZmdkYXRhID0gY2ZnZGF0YSArIHNjcmlwdF9kYXRhICsgYiJcblwwIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBlbXB0eSBwcmUtaW5zdGFsbCBzY3JpcHQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CmluZGV4IDM0YjYxYmQuLmYxNmUyZjEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQpAQCAtOCw2ICs4LDcgQEAKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IENvbW1hbmQKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgKgogZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBjdXN0b21pemVfY29tcGlsZXIsIGdldF9weXRob25fdmVyc2lvbgorZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX2hfZmlsZW5hbWUKIGZyb20gZGlzdHV0aWxzLmRlcF91dGlsIGltcG9ydCBuZXdlcl9ncm91cAogZnJvbSBkaXN0dXRpbHMuZXh0ZW5zaW9uIGltcG9ydCBFeHRlbnNpb24KIGZyb20gZGlzdHV0aWxzLnV0aWwgaW1wb3J0IGdldF9wbGF0Zm9ybQpAQCAtMTk2LDggKzE5NywxMSBAQAogCiAgICAgICAgICAgICAjIEFwcGVuZCB0aGUgc291cmNlIGRpc3RyaWJ1dGlvbiBpbmNsdWRlIGFuZCBsaWJyYXJ5IGRpcmVjdG9yaWVzLAogICAgICAgICAgICAgIyB0aGlzIGFsbG93cyBkaXN0dXRpbHMgb24gd2luZG93cyB0byB3b3JrIGluIHRoZSBzb3VyY2UgdHJlZQotICAgICAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICdQQycpKQotICAgICAgICAgICAgaWYgTVNWQ19WRVJTSU9OID09IDk6CisgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZGlycy5hcHBlbmQob3MucGF0aC5kaXJuYW1lKGdldF9jb25maWdfaF9maWxlbmFtZSgpKSkKKyAgICAgICAgICAgIF9zeXNfaG9tZSA9IGdldGF0dHIoc3lzLCAnX2hvbWUnLCBOb25lKQorICAgICAgICAgICAgaWYgX3N5c19ob21lOgorICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChfc3lzX2hvbWUpCisgICAgICAgICAgICBpZiBNU1ZDX1ZFUlNJT04gPj0gOToKICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgLmxpYiBmaWxlcyBmb3IgdGhlIGNvcnJlY3QgYXJjaGl0ZWN0dXJlCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5wbGF0X25hbWUgPT0gJ3dpbjMyJzoKICAgICAgICAgICAgICAgICAgICAgc3VmZml4ID0gJycKQEAgLTIzOSw4ICsyNDMsNyBAQAogICAgICAgICAjIGZvciBleHRlbnNpb25zIHVuZGVyIExpbnV4IG9yIFNvbGFyaXMgd2l0aCBhIHNoYXJlZCBQeXRob24gbGlicmFyeSwKICAgICAgICAgIyBQeXRob24ncyBsaWJyYXJ5IGRpcmVjdG9yeSBtdXN0IGJlIGFwcGVuZGVkIHRvIGxpYnJhcnlfZGlycwogICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1B5X0VOQUJMRV9TSEFSRUQnKQotICAgICAgICBpZiAoKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdnbnUnKQotICAgICAgICAgICAgIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdzdW5vcycpKQorICAgICAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcsICdnbnUnLCAnc3Vub3MnKSkKICAgICAgICAgICAgIGFuZCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1B5X0VOQUJMRV9TSEFSRUQnKSk6CiAgICAgICAgICAgICBpZiBzeXMuZXhlY3V0YWJsZS5zdGFydHN3aXRoKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJiaW4iKSk6CiAgICAgICAgICAgICAgICAgIyBidWlsZGluZyB0aGlyZCBwYXJ0eSBleHRlbnNpb25zCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CmluZGV4IGVjNDM0NzcuLjRiNWIyMmUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CkBAIC0xMjYsMTAgKzEyNiw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBzaGViYW5nICh7IXJ9KSBpcyBub3QgZGVjb2RhYmxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSB0aGUgc2NyaXB0IGVuY29kaW5nICh7fSkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzaGViYW5nLCBlbmNvZGluZykpCi0gICAgICAgICAgICAgICAgICAgIG91dGYgPSBvcGVuKG91dGZpbGUsICJ3YiIpCi0gICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGUoc2hlYmFuZykKLSAgICAgICAgICAgICAgICAgICAgb3V0Zi53cml0ZWxpbmVzKGYucmVhZGxpbmVzKCkpCi0gICAgICAgICAgICAgICAgICAgIG91dGYuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3V0ZmlsZSwgIndiIikgYXMgb3V0ZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGUoc2hlYmFuZykKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGVsaW5lcyhmLnJlYWRsaW5lcygpKQogICAgICAgICAgICAgICAgIGlmIGY6CiAgICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAtYW1kNjQuZXhlIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC1hbWQ2NC5leGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZhMGRjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAtYW1kNjQuZXhlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAuZXhlIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC5leGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZjM2JjNgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAuZXhlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKaW5kZXggODE5ZTFhOS4uMGJkZDUzOSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKQEAgLTc4LDYgKzc4LDkgQEAKICAgICAgICAgZWxpZiBtc2NfdmVyID09ICcxNTAwJzoKICAgICAgICAgICAgICMgVlMyMDA4IC8gTVNWQyA5LjAKICAgICAgICAgICAgIHJldHVybiBbJ21zdmNyOTAnXQorICAgICAgICBlbGlmIG1zY192ZXIgPT0gJzE2MDAnOgorICAgICAgICAgICAgIyBWUzIwMTAgLyBNU1ZDIDEwLjAKKyAgICAgICAgICAgIHJldHVybiBbJ21zdmNyMTAwJ10KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gTVMgQ29tcGlsZXIgdmVyc2lvbiAlcyAiICUgbXNjX3ZlcikKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQppbmRleCAxNjkwMmNhLi4zMTc2NDBjIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQpAQCAtMTgsNiArMTgsOCBAQAogIyBUaGVzZSBhcmUgbmVlZGVkIGluIGEgY291cGxlIG9mIHNwb3RzLCBzbyBqdXN0IGNvbXB1dGUgdGhlbSBvbmNlLgogUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KQogRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjX3ByZWZpeCkKK0JBU0VfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpCitCQVNFX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9leGVjX3ByZWZpeCkKIAogIyBQYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdC4gT24gV2luZG93cyB0aGUgYmluYXJ5IG1heQogIyBsaXZlIGluIHByb2plY3QvUENCdWlsZDkuICBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYW4geDY0IFdpbmRvd3MgYnVpbGQsCkBAIC0zOSwxMSArNDEsMjEgQEAKICMgZGlmZmVyZW50IChoYXJkLXdpcmVkKSBkaXJlY3Rvcmllcy4KICMgU2V0dXAubG9jYWwgaXMgYXZhaWxhYmxlIGZvciBNYWtlZmlsZSBidWlsZHMgaW5jbHVkaW5nIFZQQVRIIGJ1aWxkcywKICMgU2V0dXAuZGlzdCBpcyBhdmFpbGFibGUgb24gV2luZG93cwotZGVmIF9weXRob25fYnVpbGQoKToKK2RlZiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoZCk6CiAgICAgZm9yIGZuIGluICgiU2V0dXAuZGlzdCIsICJTZXR1cC5sb2NhbCIpOgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCAiTW9kdWxlcyIsIGZuKSk6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkLCAiTW9kdWxlcyIsIGZuKSk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQorX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCitpZiBfc3lzX2hvbWUgYW5kIG9zLm5hbWUgPT0gJ250JyBhbmQgXAorICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgncGNidWlsZCcsICdwY2J1aWxkXFxhbWQ2NCcpKToKKyAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorICAgIGlmIF9zeXNfaG9tZS5lbmRzd2l0aCgncGNidWlsZCcpOiAgICMgbXVzdCBiZSBhbWQ2NAorICAgICAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorZGVmIF9weXRob25fYnVpbGQoKToKKyAgICBpZiBfc3lzX2hvbWU6CisgICAgICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoX3N5c19ob21lKQorICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIocHJvamVjdF9iYXNlKQogcHl0aG9uX2J1aWxkID0gX3B5dGhvbl9idWlsZCgpCiAKICMgQ2FsY3VsYXRlIHRoZSBidWlsZCBxdWFsaWZpZXIgZmxhZ3MgaWYgdGhleSBhcmUgZGVmaW5lZC4gIEFkZGluZyB0aGUgZmxhZ3MKQEAgLTc0LDExICs4NiwxMSBAQAogICAgIG90aGVyd2lzZSwgdGhpcyBpcyB0aGUgcGF0aCB0byBwbGF0Zm9ybS1zcGVjaWZpYyBoZWFkZXIgZmlsZXMKICAgICAobmFtZWx5IHB5Y29uZmlnLmgpLgogCi0gICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5wcmVmaXggb3IKLSAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KKyAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLmJhc2VfcHJlZml4IG9yCisgICAgc3lzLmJhc2VfZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KICAgICAiIiIKICAgICBpZiBwcmVmaXggaXMgTm9uZToKLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCisgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEJBU0VfRVhFQ19QUkVGSVggb3IgQkFTRV9QUkVGSVgKICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6CiAgICAgICAgIGlmIHB5dGhvbl9idWlsZDoKICAgICAgICAgICAgICMgQXNzdW1lIHRoZSBleGVjdXRhYmxlIGlzIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuICBUaGUKQEAgLTg2LDEyICs5OCwxNCBAQAogICAgICAgICAgICAgIyB0aGUgYnVpbGQgZGlyZWN0b3J5IG1heSBub3QgYmUgdGhlIHNvdXJjZSBkaXJlY3RvcnksIHdlCiAgICAgICAgICAgICAjIG11c3QgdXNlICJzcmNkaXIiIGZyb20gdGhlIG1ha2VmaWxlIHRvIGZpbmQgdGhlICJJbmNsdWRlIgogICAgICAgICAgICAgIyBkaXJlY3RvcnkuCi0gICAgICAgICAgICBiYXNlID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuZXhlY3V0YWJsZSkpCisgICAgICAgICAgICBiYXNlID0gX3N5c19ob21lIG9yIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpKQogICAgICAgICAgICAgaWYgcGxhdF9zcGVjaWZpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gYmFzZQorICAgICAgICAgICAgaWYgX3N5c19ob21lOgorICAgICAgICAgICAgICAgIGluY2RpciA9IG9zLnBhdGguam9pbihfc3lzX2hvbWUsIGdldF9jb25maWdfdmFyKCdBU1RfSF9ESVInKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaW5jZGlyID0gb3MucGF0aC5qb2luKGdldF9jb25maWdfdmFyKCdzcmNkaXInKSwgJ0luY2x1ZGUnKQotICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKGluY2RpcikKKyAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKGluY2RpcikKICAgICAgICAgcHl0aG9uX2RpciA9ICdweXRob24nICsgZ2V0X3B5dGhvbl92ZXJzaW9uKCkgKyBidWlsZF9mbGFncwogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHByZWZpeCwgImluY2x1ZGUiLCBweXRob25fZGlyKQogICAgIGVsaWYgb3MubmFtZSA9PSAibnQiOgpAQCAtMTE1LDExICsxMjksMTQgQEAKICAgICBjb250YWluaW5nIHN0YW5kYXJkIFB5dGhvbiBsaWJyYXJ5IG1vZHVsZXM7IG90aGVyd2lzZSwgcmV0dXJuIHRoZQogICAgIGRpcmVjdG9yeSBmb3Igc2l0ZS1zcGVjaWZpYyBtb2R1bGVzLgogCi0gICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5wcmVmaXggb3IKLSAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KKyAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLmJhc2VfcHJlZml4IG9yCisgICAgc3lzLmJhc2VfZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KICAgICAiIiIKICAgICBpZiBwcmVmaXggaXMgTm9uZToKLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCisgICAgICAgIGlmIHN0YW5kYXJkX2xpYjoKKyAgICAgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEJBU0VfRVhFQ19QUkVGSVggb3IgQkFTRV9QUkVGSVgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEVYRUNfUFJFRklYIG9yIFBSRUZJWAogCiAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgogICAgICAgICBsaWJweXRob24gPSBvcy5wYXRoLmpvaW4ocHJlZml4LApAQCAtMTQ2LDcgKzE2Myw3IEBACiAgICAgICAgICAgICAiSSBkb24ndCBrbm93IHdoZXJlIFB5dGhvbiBpbnN0YWxscyBpdHMgbGlicmFyeSAiCiAgICAgICAgICAgICAib24gcGxhdGZvcm0gJyVzJyIgJSBvcy5uYW1lKQogCi1fVVNFX0NMQU5HID0gTm9uZQorCiAKIGRlZiBjdXN0b21pemVfY29tcGlsZXIoY29tcGlsZXIpOgogICAgICIiIkRvIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBjdXN0b21pemF0aW9uIG9mIGEgQ0NvbXBpbGVyIGluc3RhbmNlLgpAQCAtMTU1LDQyICsxNzIsMjggQEAKICAgICB2YXJpZXMgYWNyb3NzIFVuaWNlcyBhbmQgaXMgc3RvcmVkIGluIFB5dGhvbidzIE1ha2VmaWxlLgogICAgICIiIgogICAgIGlmIGNvbXBpbGVyLmNvbXBpbGVyX3R5cGUgPT0gInVuaXgiOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CisgICAgICAgICAgICAjIFBlcmZvcm0gZmlyc3QtdGltZSBjdXN0b21pemF0aW9uIG9mIGNvbXBpbGVyLXJlbGF0ZWQKKyAgICAgICAgICAgICMgY29uZmlnIHZhcnMgb24gT1MgWCBub3cgdGhhdCB3ZSBrbm93IHdlIG5lZWQgYSBjb21waWxlci4KKyAgICAgICAgICAgICMgVGhpcyBpcyBwcmltYXJpbHkgdG8gc3VwcG9ydCBQeXRob25zIGZyb20gYmluYXJ5CisgICAgICAgICAgICAjIGluc3RhbGxlcnMuICBUaGUga2luZCBhbmQgcGF0aHMgdG8gYnVpbGQgdG9vbHMgb24KKyAgICAgICAgICAgICMgdGhlIHVzZXIgc3lzdGVtIG1heSB2YXJ5IHNpZ25pZmljYW50bHkgZnJvbSB0aGUgc3lzdGVtCisgICAgICAgICAgICAjIHRoYXQgUHl0aG9uIGl0c2VsZiB3YXMgYnVpbHQgb24uICBBbHNvIHRoZSB1c2VyIE9TCisgICAgICAgICAgICAjIHZlcnNpb24gYW5kIGJ1aWxkIHRvb2xzIG1heSBub3Qgc3VwcG9ydCB0aGUgc2FtZSBzZXQKKyAgICAgICAgICAgICMgb2YgQ1BVIGFyY2hpdGVjdHVyZXMgZm9yIHVuaXZlcnNhbCBidWlsZHMuCisgICAgICAgICAgICBnbG9iYWwgX2NvbmZpZ192YXJzCisgICAgICAgICAgICBpZiBub3QgX2NvbmZpZ192YXJzLmdldCgnQ1VTVE9NSVpFRF9PU1hfQ09NUElMRVInLCAnJyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5jdXN0b21pemVfY29tcGlsZXIoX2NvbmZpZ192YXJzKQorICAgICAgICAgICAgICAgIF9jb25maWdfdmFyc1snQ1VTVE9NSVpFRF9PU1hfQ09NUElMRVInXSA9ICdUcnVlJworCiAgICAgICAgIChjYywgY3h4LCBvcHQsIGNmbGFncywgY2NzaGFyZWQsIGxkc2hhcmVkLCBzb19leHQsIGFyLCBhcl9mbGFncykgPSBcCiAgICAgICAgICAgICBnZXRfY29uZmlnX3ZhcnMoJ0NDJywgJ0NYWCcsICdPUFQnLCAnQ0ZMQUdTJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ0NTSEFSRUQnLCAnTERTSEFSRUQnLCAnU08nLCAnQVInLCAnQVJGTEFHUycpCiAKICAgICAgICAgbmV3Y2MgPSBOb25lCiAgICAgICAgIGlmICdDQycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgIG5ld2NjID0gb3MuZW52aXJvblsnQ0MnXQotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgY2MgPT0gJ2djYy00LjInOgotICAgICAgICAgICAgIyBJc3N1ZSAjMTM1OTA6Ci0gICAgICAgICAgICAjICAgICAgIFNpbmNlIEFwcGxlIHJlbW92ZWQgZ2NjLTQuMiBpbiBYY29kZSA0LjIsIHdlIGNhbiBubwotICAgICAgICAgICAgIyAgICAgICBsb25nZXIgYXNzdW1lIGl0IGlzIGF2YWlsYWJsZSBmb3IgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMuCi0gICAgICAgICAgICAjICAgICAgIElmIFB5dGhvbiB3YXMgYnVpbHQgd2l0aCBnY2MtNC4yLCBjaGVjayBmaXJzdCB0byBzZWUgaWYKLSAgICAgICAgICAgICMgICAgICAgaXQgaXMgYXZhaWxhYmxlIG9uIHRoaXMgc3lzdGVtOyBpZiBub3QsIHRyeSB0byB1c2UgY2xhbmcKLSAgICAgICAgICAgICMgICAgICAgaW5zdGVhZCB1bmxlc3MgdGhlIGNhbGxlciBleHBsaWNpdGx5IHNldCBDQy4KLSAgICAgICAgICAgIGdsb2JhbCBfVVNFX0NMQU5HCi0gICAgICAgICAgICBpZiBfVVNFX0NMQU5HIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZwotICAgICAgICAgICAgICAgIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUKLSAgICAgICAgICAgICAgICBwID0gUG9wZW4oIiEgdHlwZSBnY2MtNC4yICYmIHR5cGUgY2xhbmcgJiYgZXhpdCAyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSwgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFKQotICAgICAgICAgICAgICAgIHAud2FpdCgpCi0gICAgICAgICAgICAgICAgaWYgcC5yZXR1cm5jb2RlID09IDI6Ci0gICAgICAgICAgICAgICAgICAgIF9VU0VfQ0xBTkcgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGxvZy53YXJuKCJnY2MtNC4yIG5vdCBmb3VuZCwgdXNpbmcgY2xhbmcgaW5zdGVhZCIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgX1VTRV9DTEFORyA9IEZhbHNlCi0gICAgICAgICAgICBpZiBfVVNFX0NMQU5HOgotICAgICAgICAgICAgICAgIG5ld2NjID0gJ2NsYW5nJwotICAgICAgICBpZiBuZXdjYzoKLSAgICAgICAgICAgICMgT24gT1MgWCwgaWYgQ0MgaXMgb3ZlcnJpZGRlbiwgdXNlIHRoYXQgYXMgdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICMgICAgICAgY29tbWFuZCBmb3IgTERTSEFSRUQgYXMgd2VsbAotICAgICAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJwotICAgICAgICAgICAgICAgICAgICBhbmQgJ0xEU0hBUkVEJyBub3QgaW4gb3MuZW52aXJvbgotICAgICAgICAgICAgICAgICAgICBhbmQgbGRzaGFyZWQuc3RhcnRzd2l0aChjYykpOgotICAgICAgICAgICAgICAgIGxkc2hhcmVkID0gbmV3Y2MgKyBsZHNoYXJlZFtsZW4oY2MpOl0KLSAgICAgICAgICAgIGNjID0gbmV3Y2MKKyAgICAgICAgICAgIGNjID0gb3MuZW52aXJvblsnQ0MnXQogICAgICAgICBpZiAnQ1hYJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgY3h4ID0gb3MuZW52aXJvblsnQ1hYJ10KICAgICAgICAgaWYgJ0xEU0hBUkVEJyBpbiBvcy5lbnZpcm9uOgpAQCAtMjMyLDkgKzIzNSw5IEBACiAgICAgIiIiUmV0dXJuIGZ1bGwgcGF0aG5hbWUgb2YgaW5zdGFsbGVkIHB5Y29uZmlnLmggZmlsZS4iIiIKICAgICBpZiBweXRob25fYnVpbGQ6CiAgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgICAgIGluY19kaXIgPSBvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCAiUEMiKQorICAgICAgICAgICAgaW5jX2RpciA9IG9zLnBhdGguam9pbihfc3lzX2hvbWUgb3IgcHJvamVjdF9iYXNlLCAiUEMiKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW5jX2RpciA9IHByb2plY3RfYmFzZQorICAgICAgICAgICAgaW5jX2RpciA9IF9zeXNfaG9tZSBvciBwcm9qZWN0X2Jhc2UKICAgICBlbHNlOgogICAgICAgICBpbmNfZGlyID0gZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz0xKQogICAgIGlmIGdldF9weXRob25fdmVyc2lvbigpIDwgJzIuMic6CkBAIC0yNDgsNyArMjUxLDggQEAKIGRlZiBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKToKICAgICAiIiJSZXR1cm4gZnVsbCBwYXRobmFtZSBvZiBpbnN0YWxsZWQgTWFrZWZpbGUgZnJvbSB0aGUgUHl0aG9uIGJ1aWxkLiIiIgogICAgIGlmIHB5dGhvbl9idWlsZDoKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLCAiTWFrZWZpbGUiKQorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKF9zeXNfaG9tZSBvciBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1ha2VmaWxlIikKICAgICBsaWJfZGlyID0gZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MSkKICAgICBjb25maWdfZmlsZSA9ICdjb25maWcte317fScuZm9ybWF0KGdldF9weXRob25fdmVyc2lvbigpLCBidWlsZF9mbGFncykKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGxpYl9kaXIsIGNvbmZpZ19maWxlLCAnTWFrZWZpbGUnKQpAQCAtNTEwLDcgKzUxNCw3IEBACiAgICAgdmFyaWFibGVzIHJlbGV2YW50IGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybS4gIEdlbmVyYWxseSB0aGlzIGluY2x1ZGVzCiAgICAgZXZlcnl0aGluZyBuZWVkZWQgdG8gYnVpbGQgZXh0ZW5zaW9ucyBhbmQgaW5zdGFsbCBib3RoIHB1cmUgbW9kdWxlcyBhbmQKICAgICBleHRlbnNpb25zLiAgT24gVW5peCwgdGhpcyBtZWFucyBldmVyeSB2YXJpYWJsZSBkZWZpbmVkIGluIFB5dGhvbidzCi0gICAgaW5zdGFsbGVkIE1ha2VmaWxlOyBvbiBXaW5kb3dzIGFuZCBNYWMgT1MgaXQncyBhIG11Y2ggc21hbGxlciBzZXQuCisgICAgaW5zdGFsbGVkIE1ha2VmaWxlOyBvbiBXaW5kb3dzIGl0J3MgYSBtdWNoIHNtYWxsZXIgc2V0LgogCiAgICAgV2l0aCBhcmd1bWVudHMsIHJldHVybiBhIGxpc3Qgb2YgdmFsdWVzIHRoYXQgcmVzdWx0IGZyb20gbG9va2luZyB1cAogICAgIGVhY2ggYXJndW1lbnQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZGljdGlvbmFyeS4KQEAgLTUyOSw2ICs1MzMsMjMgQEAKICAgICAgICAgX2NvbmZpZ192YXJzWydwcmVmaXgnXSA9IFBSRUZJWAogICAgICAgICBfY29uZmlnX3ZhcnNbJ2V4ZWNfcHJlZml4J10gPSBFWEVDX1BSRUZJWAogCisgICAgICAgICMgQWx3YXlzIGNvbnZlcnQgc3JjZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKKyAgICAgICAgc3JjZGlyID0gX2NvbmZpZ192YXJzLmdldCgnc3JjZGlyJywgcHJvamVjdF9iYXNlKQorICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBpZiBweXRob25fYnVpbGQ6CisgICAgICAgICAgICAgICAgIyBJZiBzcmNkaXIgaXMgYSByZWxhdGl2ZSBwYXRoICh0eXBpY2FsbHkgJy4nIG9yICcuLicpCisgICAgICAgICAgICAgICAgIyB0aGVuIGl0IHNob3VsZCBiZSBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgIyBjb250YWluaW5nIE1ha2VmaWxlLgorICAgICAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKGJhc2UsIHNyY2RpcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBzcmNkaXIgaXMgbm90IG1lYW5pbmdmdWwgc2luY2UgdGhlIGluc3RhbGxhdGlvbiBpcworICAgICAgICAgICAgICAgICMgc3ByZWFkIGFib3V0IHRoZSBmaWxlc3lzdGVtLiAgV2UgY2hvb3NlIHRoZQorICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIE1ha2VmaWxlIHNpbmNlIHdlIGtub3cgaXQKKyAgICAgICAgICAgICAgICAjIGV4aXN0cy4KKyAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgIF9jb25maWdfdmFyc1snc3JjZGlyJ10gPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5ub3JtcGF0aChzcmNkaXIpKQorCiAgICAgICAgICMgQ29udmVydCBzcmNkaXIgaW50byBhbiBhYnNvbHV0ZSBwYXRoIGlmIGl0IGFwcGVhcnMgbmVjZXNzYXJ5LgogICAgICAgICAjIE5vcm1hbGx5IGl0IGlzIHJlbGF0aXZlIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuICBIb3dldmVyLCBkdXJpbmcKICAgICAgICAgIyB0ZXN0aW5nLCBmb3IgZXhhbXBsZSwgd2UgbWlnaHQgYmUgcnVubmluZyBhIG5vbi1pbnN0YWxsZWQgcHl0aG9uCkBAIC01NDMsNDMgKzU2NCwxMSBAQAogICAgICAgICAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbihiYXNlLCBfY29uZmlnX3ZhcnNbJ3NyY2RpciddKQogICAgICAgICAgICAgICAgIF9jb25maWdfdmFyc1snc3JjZGlyJ10gPSBvcy5wYXRoLm5vcm1wYXRoKHNyY2RpcikKIAorICAgICAgICAjIE9TIFggcGxhdGZvcm1zIHJlcXVpcmUgc3BlY2lhbCBjdXN0b21pemF0aW9uIHRvIGhhbmRsZQorICAgICAgICAjIG11bHRpLWFyY2hpdGVjdHVyZSwgbXVsdGktb3MtdmVyc2lvbiBpbnN0YWxsZXJzCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgIGtlcm5lbF92ZXJzaW9uID0gb3MudW5hbWUoKVsyXSAjIEtlcm5lbCB2ZXJzaW9uICg4LjQuMykKLSAgICAgICAgICAgIG1ham9yX3ZlcnNpb24gPSBpbnQoa2VybmVsX3ZlcnNpb24uc3BsaXQoJy4nKVswXSkKLQotICAgICAgICAgICAgaWYgbWFqb3JfdmVyc2lvbiA8IDg6Ci0gICAgICAgICAgICAgICAgIyBPbiBNYWMgT1MgWCBiZWZvcmUgMTAuNCwgY2hlY2sgaWYgLWFyY2ggYW5kIC1pc3lzcm9vdAotICAgICAgICAgICAgICAgICMgYXJlIGluIENGTEFHUyBvciBMREZMQUdTIGFuZCByZW1vdmUgdGhlbSBpZiB0aGV5IGFyZS4KLSAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbmVlZGVkIHdoZW4gYnVpbGRpbmcgZXh0ZW5zaW9ucyBvbiBhIDEwLjMgc3lzdGVtCi0gICAgICAgICAgICAgICAgIyB1c2luZyBhIHVuaXZlcnNhbCBidWlsZCBvZiBweXRob24uCi0gICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIG9mIGRlcml2ZWQgdmFyaWFibGVzLiBUaGVzZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICdDRkxBR1MnLCAnUFlfQ0ZMQUdTJywgJ0JMRFNIQVJFRCcpOgotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1trZXldCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncywgcmUuQVNDSUkpCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctaXN5c3Jvb3QgW14gXHRdKicsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgIF9jb25maWdfdmFyc1trZXldID0gZmxhZ3MKLQotICAgICAgICAgICAgZWxzZToKLQotICAgICAgICAgICAgICAgICMgQWxsb3cgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGFyY2hpdGVjdHVyZSBmbGFncyB1c2luZwotICAgICAgICAgICAgICAgICMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgIyBOT1RFOiBUaGlzIG5hbWUgd2FzIGludHJvZHVjZWQgYnkgQXBwbGUgaW4gT1NYIDEwLjUgYW5kCi0gICAgICAgICAgICAgICAgIyBpcyB1c2VkIGJ5IHNldmVyYWwgc2NyaXB0aW5nIGxhbmd1YWdlcyBkaXN0cmlidXRlZCB3aXRoCi0gICAgICAgICAgICAgICAgIyB0aGF0IE9TIHJlbGVhc2UuCi0KLSAgICAgICAgICAgICAgICBpZiAnQVJDSEZMQUdTJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgICAgICBhcmNoID0gb3MuZW52aXJvblsnQVJDSEZMQUdTJ10KLSAgICAgICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIG9mIGRlcml2ZWQgdmFyaWFibGVzLiBUaGVzZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICdDRkxBR1MnLCAnUFlfQ0ZMQUdTJywgJ0JMRFNIQVJFRCcpOgotCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1trZXldCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IGZsYWdzICsgJyAnICsgYXJjaAotICAgICAgICAgICAgICAgICAgICAgICAgX2NvbmZpZ192YXJzW2tleV0gPSBmbGFncworICAgICAgICAgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorICAgICAgICAgICAgX29zeF9zdXBwb3J0LmN1c3RvbWl6ZV9jb25maWdfdmFycyhfY29uZmlnX3ZhcnMpCiAKICAgICBpZiBhcmdzOgogICAgICAgICB2YWxzID0gW10KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5CmluZGV4IDhlZGZhYjQuLjFhZmRkNDYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weQpAQCAtMSw2ICsxLDggQEAKKyMgLSotIGNvZGluZzogdXRmLTggLSotCiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmFyY2hpdmVfdXRpbC4iIiIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBpbXBvcnQgdGFyZmlsZQogZnJvbSBvcy5wYXRoIGltcG9ydCBzcGxpdGRyaXZlCiBpbXBvcnQgd2FybmluZ3MKQEAgLTI1LDYgKzI3LDE4IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgWkxJQl9TVVBQT1JUID0gRmFsc2UKIAorZGVmIGNhbl9mc19lbmNvZGUoZmlsZW5hbWUpOgorICAgICIiIgorICAgIFJldHVybiBUcnVlIGlmIHRoZSBmaWxlbmFtZSBjYW4gYmUgc2F2ZWQgaW4gdGhlIGZpbGUgc3lzdGVtLgorICAgICIiIgorICAgIGlmIG9zLnBhdGguc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXM6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgdHJ5OgorICAgICAgICBmaWxlbmFtZS5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQorICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCisKIAogY2xhc3MgQXJjaGl2ZVV0aWxUZXN0Q2FzZShzdXBwb3J0LlRlbXBkaXJNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LkxvZ2dpbmdTaWxlbmNlciwKQEAgLTMyLDYgKzQ2LDI4IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICdOZWVkIHpsaWIgc3VwcG9ydCB0byBydW4nKQogICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbChzZWxmKToKKyAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKCdhcmNoaXZlJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX2ZzX2VuY29kZSgnw6VyY2hpdicpLAorICAgICAgICAnRmlsZSBzeXN0ZW0gY2Fubm90IGhhbmRsZSB0aGlzIGZpbGVuYW1lJykKKyAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGxfbGF0aW4xKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTWlycm9yIHRlc3RfbWFrZV90YXJiYWxsLCBleGNlcHQgZmlsZW5hbWUgY29udGFpbnMgbGF0aW4gY2hhcmFjdGVycy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgnw6VyY2hpdicpICMgbm90ZSB0aGlzIGlzbid0IGEgcmVhbCB3b3JkCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICdOZWVkIHpsaWIgc3VwcG9ydCB0byBydW4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGNhbl9mc19lbmNvZGUoJ+OBruOCouODvOOCq+OCpOODlicpLAorICAgICAgICAnRmlsZSBzeXN0ZW0gY2Fubm90IGhhbmRsZSB0aGlzIGZpbGVuYW1lJykKKyAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGxfZXh0ZW5kZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBNaXJyb3IgdGVzdF9tYWtlX3RhcmJhbGwsIGV4Y2VwdCBmaWxlbmFtZSBjb250YWlucyBleHRlbmRlZAorICAgICAgICBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGxhdGluIGNoYXJzZXQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwoJ+OBruOCouODvOOCq+OCpOODlicpICMgamFwYW5lc2UgZm9yIGFyY2hpdmUKKworICAgIGRlZiBfbWFrZV90YXJiYWxsKHNlbGYsIHRhcmdldF9uYW1lKToKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTEnXSwgJ3h4eCcpCkBAIC00Myw3ICs3OSw3IEBACiAgICAgICAgIHVuaXR0ZXN0LnNraXBVbmxlc3Moc3BsaXRkcml2ZSh0bXBkaXIpWzBdID09IHNwbGl0ZHJpdmUodG1wZGlyMilbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvdXJjZSBhbmQgdGFyZ2V0IHNob3VsZCBiZSBvbiBzYW1lIGRyaXZlIikKIAotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgdGFyZ2V0X25hbWUpCiAKICAgICAgICAgIyB3b3JraW5nIHdpdGggcmVsYXRpdmUgcGF0aHMgdG8gYXZvaWQgdGFyIHdhcm5pbmdzCiAgICAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQpAQCAtNTgsNyArOTQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModGFyYmFsbCkpCiAKICAgICAgICAgIyB0cnlpbmcgYW4gdW5jb21wcmVzc2VkIG9uZQotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgdGFyZ2V0X25hbWUpCiAgICAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQogICAgICAgICBvcy5jaGRpcih0bXBkaXIpCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CmluZGV4IGFiN2ExYmYuLmIwOTBiNzkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQpAQCAtMjgsNiArMjgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZS5lbmNvZGUoIlVURi04IikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzeXMuZXhlY3V0YWJsZSBpcyBub3QgZW5jb2RhYmxlIHRvIFVURi04IikKKwogICAgICAgICBzdXBlcihCdWlsZFJwbVRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCiAgICAgICAgIHNlbGYub2xkX2xvY2F0aW9uID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgc2VsZi5vbGRfc3lzX2FyZ3YgPSBzeXMuYXJndiwgc3lzLmFyZ3ZbOl0KQEAgLTQyLDcgKzQ3LDcgQEAKIAogICAgICAgICAjIFhYWCBJIGFtIHVuYWJsZSB5ZXQgdG8gbWFrZSB0aGlzIHRlc3Qgd29yayB3aXRob3V0CiAgICAgICAgICMgc3B1cmlvdXMgc2R0b3V0L3N0ZGVyciBvdXRwdXQgdW5kZXIgTWFjIE9TIFgKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICdsaW51eDInOgorICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIHRoaXMgdGVzdCB3aWxsIHJ1biBvbmx5IGlmIHRoZSBycG0gY29tbWFuZHMgYXJlIGZvdW5kCkBAIC04Niw3ICs5MSw3IEBACiAKICAgICAgICAgIyBYWFggSSBhbSB1bmFibGUgeWV0IHRvIG1ha2UgdGhpcyB0ZXN0IHdvcmsgd2l0aG91dAogICAgICAgICAjIHNwdXJpb3VzIHNkdG91dC9zdGRlcnIgb3V0cHV0IHVuZGVyIE1hYyBPUyBYCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnbGludXgyJzoKKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTUzMzE2NApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zeXNjb25maWcucHkKaW5kZXggZmJlMjZiZi4uODI2ZWE0MiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC01Myw2ICs1MywzNSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShjdmFycywgZGljdCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdmFycykKIAorICAgIGRlZiB0ZXN0X3NyY2RpcihzZWxmKToKKyAgICAgICAgIyBTZWUgSXNzdWVzICMxNTMyMiwgIzE1MzY0LgorICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMoc3JjZGlyKSwgc3JjZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihzcmNkaXIpLCBzcmNkaXIpCisKKyAgICAgICAgaWYgc3lzY29uZmlnLnB5dGhvbl9idWlsZDoKKyAgICAgICAgICAgICMgVGhlIHB5dGhvbiBleGVjdXRhYmxlIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgc28gc3JjZGlyCisgICAgICAgICAgICAjIHNob3VsZCBiZSBhIGZ1bGwgc291cmNlIGNoZWNrb3V0LgorICAgICAgICAgICAgUHl0aG9uX2ggPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCAnSW5jbHVkZScsICdQeXRob24uaCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoUHl0aG9uX2gpLCBQeXRob25faCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzeXNjb25maWcuX2lzX3B5dGhvbl9zb3VyY2VfZGlyKHNyY2RpcikpCisgICAgICAgIGVsaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmRpcm5hbWUoc3lzY29uZmlnLmdldF9tYWtlZmlsZV9maWxlbmFtZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2RpcikKKworICAgIGRlZiB0ZXN0X3NyY2Rpcl9pbmRlcGVuZGVudF9vZl9jd2Qoc2VsZik6CisgICAgICAgICMgc3JjZGlyIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAjIFNlZSBJc3N1ZXMgIzE1MzIyLCAjMTUzNjQuCisgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKKyAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIoJy4uJykKKyAgICAgICAgICAgIHNyY2RpcjIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihjd2QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjZGlyLCBzcmNkaXIyKQorCiAgICAgZGVmIHRlc3RfY3VzdG9taXplX2NvbXBpbGVyKHNlbGYpOgogCiAgICAgICAgICMgbm90IHRlc3RpbmcgaWYgZGVmYXVsdCBjb21waWxlciBpcyBub3QgdW5peApAQCAtMTAyLDcgKzEzMSwyNyBAQAogICAgICAgICBpbXBvcnQgc3lzY29uZmlnIGFzIGdsb2JhbF9zeXNjb25maWcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDRkxBR1MnKSwgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDRkxBR1MnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMREZMQUdTJyksIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTERGTEFHUycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9zeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xEU0hBUkVEJyksc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMRFNIQVJFRCcpKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NVU1RPTUlaRURfT1NYX0NPTVBJTEVSJyksJ2NvbXBpbGVyIGZsYWdzIGN1c3RvbWl6ZWQnKQorICAgIGRlZiB0ZXN0X3N5c2NvbmZpZ19jb21waWxlcl92YXJzKHNlbGYpOgorICAgICAgICAjIE9uIE9TIFgsIGJpbmFyeSBpbnN0YWxsZXJzIHN1cHBvcnQgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZGluZyBvbgorICAgICAgICAjIHZhcmlvdXMgbGV2ZWxzIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdpdGggZGlmZmVyaW5nIFhjb2RlCisgICAgICAgICMgY29uZmlndXJhdGlvbnMuICBUaGlzIHJlcXVpcmVzIGN1c3RvbWl6YXRpb24gb2Ygc29tZSBvZiB0aGUKKyAgICAgICAgIyBjb21waWxlciBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMgdG8gc3VpdCB0aGUgZW52aXJvbm1lbnQgb24KKyAgICAgICAgIyB0aGUgaW5zdGFsbGVkIG1hY2hpbmUuICBTb21lIG9mIHRoZXNlIGN1c3RvbWl6YXRpb25zIG1heSByZXF1aXJlCisgICAgICAgICMgcnVubmluZyBleHRlcm5hbCBwcm9ncmFtcyBhbmQsIHNvLCBhcmUgZGVmZXJyZWQgdW50aWwgbmVlZGVkIGJ5CisgICAgICAgICMgdGhlIGZpcnN0IGV4dGVuc2lvbiBtb2R1bGUgYnVpbGQuICBXaXRoIFB5dGhvbiAzLjMsIG9ubHkKKyAgICAgICAgIyB0aGUgRGlzdHV0aWxzIHZlcnNpb24gb2Ygc3lzY29uZmlnIGlzIHVzZWQgZm9yIGV4dGVuc2lvbiBtb2R1bGUKKyAgICAgICAgIyBidWlsZHMsIHdoaWNoIGhhcHBlbnMgZWFybGllciBpbiB0aGUgRGlzdHV0aWxzIHRlc3RzLiAgVGhpcyBtYXkKKyAgICAgICAgIyBjYXVzZSB0aGUgZm9sbG93aW5nIHRlc3RzIHRvIGZhaWwgc2luY2Ugbm8gdGVzdHMgaGF2ZSBjYXVzZWQKKyAgICAgICAgIyB0aGUgZ2xvYmFsIHZlcnNpb24gb2Ygc3lzY29uZmlnIHRvIGNhbGwgdGhlIGN1c3RvbWl6YXRpb24geWV0LgorICAgICAgICAjIFRoZSBzb2x1dGlvbiBmb3Igbm93IGlzIHRvIHNpbXBseSBza2lwIHRoaXMgdGVzdCBpbiB0aGlzIGNhc2UuCisgICAgICAgICMgVGhlIGxvbmdlci10ZXJtIHNvbHV0aW9uIGlzIHRvIG9ubHkgaGF2ZSBvbmUgdmVyc2lvbiBvZiBzeXNjb25maWcuCisKKyAgICAgICAgaW1wb3J0IHN5c2NvbmZpZyBhcyBnbG9iYWxfc3lzY29uZmlnCisgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQ1VTVE9NSVpFRF9PU1hfQ09NUElMRVInKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9zeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xEU0hBUkVEJyksIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTERTSEFSRUQnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDQycpLCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NDJykpCiAKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQppbmRleCAxYTA2ZDRjLi5lYWM5YjUxIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQpAQCAtMTMsNiArMTMsNyBAQAogZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcnMKIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CitpbXBvcnQgX29zeF9zdXBwb3J0CiAKIGNsYXNzIFV0aWxUZXN0Q2FzZShzdXBwb3J0LkVudmlyb25HdWFyZCwgdW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC05Miw2ICs5Myw3IEBACiAgICAgICAgICAgICAgICAgICAgKCdEYXJ3aW4gS2VybmVsIFZlcnNpb24gOC4xMS4xOiAnCiAgICAgICAgICAgICAgICAgICAgICdXZWQgT2N0IDEwIDE4OjIzOjI4IFBEVCAyMDA3OyAnCiAgICAgICAgICAgICAgICAgICAgICdyb290OnhudS03OTIuMjUuMjB+MS9SRUxFQVNFX0kzODYnKSwgJ2kzODYnKSkKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMycKIAogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1ETkRFQlVHIC1nICcKQEAgLTEwNSw2ICsxMDcsNyBAQAogICAgICAgICAgICAgc3lzLm1heHNpemUgPSBjdXJzaXplCiAKICAgICAgICAgIyBtYWNib29rIHdpdGggZmF0IGJpbmFyaWVzIChmYXQsIHVuaXZlcnNhbCBvciBmYXQ2NCkKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuNCcKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCBwcGMgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKQEAgLTExMywxMCArMTE2LDEyIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWZhdCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBvcy5lbnZpcm9uWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4xJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0JykKIAogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCB4ODZfNjQgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCkBAIC0xMjQsMTggKzEyOSwyMSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1pbnRlbCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHg4Nl82NCAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWR5bmFtaWMgLUROREVCVUcgLWcgLU8zJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWZhdDMnKQogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCBwcGM2NCAtYXJjaCB4ODZfNjQgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1keW5hbWljIC1ETkRFQlVHIC1nIC1PMycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC11bml2ZXJzYWwnKQogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCB4ODZfNjQgLWFyY2ggcHBjNjQgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwpAQCAtMTQ0LDYgKzE1Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1mYXQ2NCcpCiAKICAgICAgICAgZm9yIGFyY2ggaW4gKCdwcGMnLCAnaTM4NicsICd4ODZfNjQnLCAncHBjNjQnKToKKyAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggJXMgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkKaW5kZXggYzcwYTNjYy4uMDk0YTJmMCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy91bml4Y2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQpAQCAtMjMsNiArMjMsOSBAQAogICAgICBEaXN0dXRpbHNFeGVjRXJyb3IsIENvbXBpbGVFcnJvciwgTGliRXJyb3IsIExpbmtFcnJvcgogZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZwogCitpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorCiAjIFhYWCBUaGluZ3Mgbm90IGN1cnJlbnRseSBoYW5kbGVkOgogIyAgICogb3B0aW1pemF0aW9uL2RlYnVnL3dhcm5pbmcgZmxhZ3M7IHdlIGp1c3QgdXNlIHdoYXRldmVyJ3MgaW4gUHl0aG9uJ3MKICMgICAgIE1ha2VmaWxlIGFuZCBsaXZlIHdpdGggaXQuICBJcyB0aGlzIGFkZXF1YXRlPyAgSWYgbm90LCB3ZSBtaWdodApAQCAtMzgsNjggKzQxLDYgQEAKICMgICAgIHNob3VsZCBqdXN0IGhhcHBpbHkgc3R1ZmYgdGhlbSBpbnRvIHRoZSBwcmVwcm9jZXNzb3IvY29tcGlsZXIvbGlua2VyCiAjICAgICBvcHRpb25zIGFuZCBjYXJyeSBvbi4KIAotZGVmIF9kYXJ3aW5fY29tcGlsZXJfZml4dXAoY29tcGlsZXJfc28sIGNjX2FyZ3MpOgotICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBzdHJpcCAnLWlzeXNyb290IFBBVEgnIGFuZCAnLWFyY2ggQVJDSCcgZnJvbSB0aGUKLSAgICBjb21waWxlIGZsYWdzIGlmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgb25lIHRoZW0gaW4gZXh0cmFfY29tcGlsZV9mbGFncy4KLQotICAgIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgJy1hcmNoIEFSQ0gnIGFkZHMgYW5vdGhlciBhcmNoaXRlY3R1cmUgdG8gdGhlCi0gICAgYnVpbGQsIHdpdGhvdXQgYSB3YXkgdG8gcmVtb3ZlIGFuIGFyY2hpdGVjdHVyZS4gRnVydGhlcm1vcmUgR0NDIHdpbGwKLSAgICBiYXJmIGlmIG11bHRpcGxlICctaXN5c3Jvb3QnIGFyZ3VtZW50cyBhcmUgcHJlc2VudC4KLSAgICAiIiIKLSAgICBzdHJpcEFyY2ggPSBzdHJpcFN5c3Jvb3QgPSBGYWxzZQotCi0gICAgY29tcGlsZXJfc28gPSBsaXN0KGNvbXBpbGVyX3NvKQotICAgIGtlcm5lbF92ZXJzaW9uID0gb3MudW5hbWUoKVsyXSAjIDguNC4zCi0gICAgbWFqb3JfdmVyc2lvbiA9IGludChrZXJuZWxfdmVyc2lvbi5zcGxpdCgnLicpWzBdKQotCi0gICAgaWYgbWFqb3JfdmVyc2lvbiA8IDg6Ci0gICAgICAgICMgT1NYIGJlZm9yZSAxMC40LjAsIHRoZXNlIGRvbid0IHN1cHBvcnQgLWFyY2ggYW5kIC1pc3lzcm9vdCBhdAotICAgICAgICAjIGFsbC4KLSAgICAgICAgc3RyaXBBcmNoID0gc3RyaXBTeXNyb290ID0gVHJ1ZQotICAgIGVsc2U6Ci0gICAgICAgIHN0cmlwQXJjaCA9ICctYXJjaCcgaW4gY2NfYXJncwotICAgICAgICBzdHJpcFN5c3Jvb3QgPSAnLWlzeXNyb290JyBpbiBjY19hcmdzCi0KLSAgICBpZiBzdHJpcEFyY2ggb3IgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpbmRleCA9IGNvbXBpbGVyX3NvLmluZGV4KCctYXJjaCcpCi0gICAgICAgICAgICAgICAgIyBTdHJpcCB0aGlzIGFyZ3VtZW50IGFuZCB0aGUgbmV4dCBvbmU6Ci0gICAgICAgICAgICAgICAgZGVsIGNvbXBpbGVyX3NvW2luZGV4OmluZGV4KzJdCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgaWYgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbiBhbmQgbm90IHN0cmlwQXJjaDoKLSAgICAgICAgIyBVc2VyIHNwZWNpZmllZCBkaWZmZXJlbnQgLWFyY2ggZmxhZ3MgaW4gdGhlIGVudmlyb24sCi0gICAgICAgICMgc2VlIGFsc28gZGlzdHV0aWxzLnN5c2NvbmZpZwotICAgICAgICBjb21waWxlcl9zbyA9IGNvbXBpbGVyX3NvICsgb3MuZW52aXJvblsnQVJDSEZMQUdTJ10uc3BsaXQoKQotCi0gICAgaWYgc3RyaXBTeXNyb290OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbmRleCA9IGNvbXBpbGVyX3NvLmluZGV4KCctaXN5c3Jvb3QnKQotICAgICAgICAgICAgIyBTdHJpcCB0aGlzIGFyZ3VtZW50IGFuZCB0aGUgbmV4dCBvbmU6Ci0gICAgICAgICAgICBkZWwgY29tcGlsZXJfc29baW5kZXg6aW5kZXgrMl0KLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAjIENoZWNrIGlmIHRoZSBTREsgdGhhdCBpcyB1c2VkIGR1cmluZyBjb21waWxhdGlvbiBhY3R1YWxseSBleGlzdHMsCi0gICAgIyB0aGUgdW5pdmVyc2FsIGJ1aWxkIHJlcXVpcmVzIHRoZSB1c2FnZSBvZiBhIHVuaXZlcnNhbCBTREsgYW5kIG5vdCBhbGwKLSAgICAjIHVzZXJzIGhhdmUgdGhhdCBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KLSAgICBzeXNyb290ID0gTm9uZQotICAgIGlmICctaXN5c3Jvb3QnIGluIGNjX2FyZ3M6Ci0gICAgICAgIGlkeCA9IGNjX2FyZ3MuaW5kZXgoJy1pc3lzcm9vdCcpCi0gICAgICAgIHN5c3Jvb3QgPSBjY19hcmdzW2lkeCsxXQotICAgIGVsaWYgJy1pc3lzcm9vdCcgaW4gY29tcGlsZXJfc286Ci0gICAgICAgIGlkeCA9IGNvbXBpbGVyX3NvLmluZGV4KCctaXN5c3Jvb3QnKQotICAgICAgICBzeXNyb290ID0gY29tcGlsZXJfc29baWR4KzFdCi0KLSAgICBpZiBzeXNyb290IGFuZCBub3Qgb3MucGF0aC5pc2RpcihzeXNyb290KToKLSAgICAgICAgbG9nLndhcm4oIkNvbXBpbGluZyB3aXRoIGFuIFNESyB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBleGlzdDogJXMiLAotICAgICAgICAgICAgICAgIHN5c3Jvb3QpCi0gICAgICAgIGxvZy53YXJuKCJQbGVhc2UgY2hlY2sgeW91ciBYY29kZSBpbnN0YWxsYXRpb24iKQotCi0gICAgcmV0dXJuIGNvbXBpbGVyX3NvCiAKIGNsYXNzIFVuaXhDQ29tcGlsZXIoQ0NvbXBpbGVyKToKIApAQCAtMTY4LDcgKzEwOSw4IEBACiAgICAgZGVmIF9jb21waWxlKHNlbGYsIG9iaiwgc3JjLCBleHQsIGNjX2FyZ3MsIGV4dHJhX3Bvc3RhcmdzLCBwcF9vcHRzKToKICAgICAgICAgY29tcGlsZXJfc28gPSBzZWxmLmNvbXBpbGVyX3NvCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgIGNvbXBpbGVyX3NvID0gX2Rhcndpbl9jb21waWxlcl9maXh1cChjb21waWxlcl9zbywgY2NfYXJncyArIGV4dHJhX3Bvc3RhcmdzKQorICAgICAgICAgICAgY29tcGlsZXJfc28gPSBfb3N4X3N1cHBvcnQuY29tcGlsZXJfZml4dXAoY29tcGlsZXJfc28sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NfYXJncyArIGV4dHJhX3Bvc3RhcmdzKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnNwYXduKGNvbXBpbGVyX3NvICsgY2NfYXJncyArIFtzcmMsICctbycsIG9ial0gKwogICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9wb3N0YXJncykKQEAgLTI0Nyw3ICsxODksNyBAQAogICAgICAgICAgICAgICAgICAgICBsaW5rZXJbaV0gPSBzZWxmLmNvbXBpbGVyX2N4eFtpXQogCiAgICAgICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAgICAgICAgICBsaW5rZXIgPSBfZGFyd2luX2NvbXBpbGVyX2ZpeHVwKGxpbmtlciwgbGRfYXJncykKKyAgICAgICAgICAgICAgICAgICAgbGlua2VyID0gX29zeF9zdXBwb3J0LmNvbXBpbGVyX2ZpeHVwKGxpbmtlciwgbGRfYXJncykKIAogICAgICAgICAgICAgICAgIHNlbGYuc3Bhd24obGlua2VyICsgbGRfYXJncykKICAgICAgICAgICAgIGV4Y2VwdCBEaXN0dXRpbHNFeGVjRXJyb3IgYXMgbXNnOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy91dGlsLnB5CmluZGV4IGJjZTg0MDIuLjY3ZDgxNjYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKQEAgLTUzLDYgKzUzLDEwIEBACiAgICAgICAgICAgICByZXR1cm4gJ3dpbi1pYTY0JwogICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCiAKKyAgICAjIFNldCBmb3IgY3Jvc3MgYnVpbGRzIGV4cGxpY2l0bHkKKyAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gb3MuZW52aXJvblsiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIl0KKwogICAgIGlmIG9zLm5hbWUgIT0gInBvc2l4IiBvciBub3QgaGFzYXR0cihvcywgJ3VuYW1lJyk6CiAgICAgICAgICMgWFhYIHdoYXQgYWJvdXQgdGhlIGFyY2hpdGVjdHVyZT8gTlQgaXMgSW50ZWwgb3IgQWxwaGEsCiAgICAgICAgICMgTWFjIE9TIGlzIE02OGsgb3IgUFBDLCBldGMuCkBAIC05NCw5NCArOTgsMTAgQEAKICAgICAgICAgaWYgbToKICAgICAgICAgICAgIHJlbGVhc2UgPSBtLmdyb3VwKCkKICAgICBlbGlmIG9zbmFtZVs6Nl0gPT0gImRhcndpbiI6Ci0gICAgICAgICMKLSAgICAgICAgIyBGb3Igb3VyIHB1cnBvc2VzLCB3ZSdsbCBhc3N1bWUgdGhhdCB0aGUgc3lzdGVtIHZlcnNpb24gZnJvbQotICAgICAgICAjIGRpc3R1dGlscycgcGVyc3BlY3RpdmUgaXMgd2hhdCBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgaXMgc2V0Ci0gICAgICAgICMgdG8uIFRoaXMgbWFrZXMgdGhlIGNvbXBhdGliaWxpdHkgc3RvcnkgYSBiaXQgbW9yZSBzYW5lIGJlY2F1c2UgdGhlCi0gICAgICAgICMgbWFjaGluZSBpcyBnb2luZyB0byBjb21waWxlIGFuZCBsaW5rIGFzIGlmIGl0IHdlcmUKLSAgICAgICAgIyBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQuCi0gICAgICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXJzCi0gICAgICAgIGNmZ3ZhcnMgPSBnZXRfY29uZmlnX3ZhcnMoKQotCi0gICAgICAgIG1hY3ZlciA9IGNmZ3ZhcnMuZ2V0KCdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnKQotCi0gICAgICAgIGlmIDE6Ci0gICAgICAgICAgICAjIEFsd2F5cyBjYWxjdWxhdGUgdGhlIHJlbGVhc2Ugb2YgdGhlIHJ1bm5pbmcgbWFjaGluZSwKLSAgICAgICAgICAgICMgbmVlZGVkIHRvIGRldGVybWluZSBpZiB3ZSBjYW4gYnVpbGQgZmF0IGJpbmFyaWVzIG9yIG5vdC4KLQotICAgICAgICAgICAgbWFjcmVsZWFzZSA9IG1hY3ZlcgotICAgICAgICAgICAgIyBHZXQgdGhlIHN5c3RlbSB2ZXJzaW9uLiBSZWFkaW5nIHRoaXMgcGxpc3QgaXMgYSBkb2N1bWVudGVkCi0gICAgICAgICAgICAjIHdheSB0byBnZXQgdGhlIHN5c3RlbSB2ZXJzaW9uIChzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCi0gICAgICAgICAgICAjIHRoZSBHZXN0YWx0IE1hbmFnZXIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZiA9IG9wZW4oJy9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvU3lzdGVtVmVyc2lvbi5wbGlzdCcpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgICAgICAjIFdlJ3JlIG9uIGEgcGxhaW4gZGFyd2luIGJveCwgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgIyBiZWhhdmlvdXIuCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG0gPSByZS5zZWFyY2goCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcic8a2V5PlByb2R1Y3RVc2VyVmlzaWJsZVZlcnNpb248L2tleT5ccyonICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJzxzdHJpbmc+KC4qPyk8L3N0cmluZz4nLCBmLnJlYWQoKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hY3JlbGVhc2UgPSAnLicuam9pbihtLmdyb3VwKDEpLnNwbGl0KCcuJylbOjJdKQotICAgICAgICAgICAgICAgICAgICAjIGVsc2U6IGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBiZWhhdmlvdXIKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLQotICAgICAgICBpZiBub3QgbWFjdmVyOgotICAgICAgICAgICAgbWFjdmVyID0gbWFjcmVsZWFzZQotCi0gICAgICAgIGlmIG1hY3ZlcjoKLSAgICAgICAgICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXJzCi0gICAgICAgICAgICByZWxlYXNlID0gbWFjdmVyCi0gICAgICAgICAgICBvc25hbWUgPSAibWFjb3N4IgotCi0gICAgICAgICAgICBpZiAobWFjcmVsZWFzZSArICcuJykgPj0gJzEwLjQuJyBhbmQgXAotICAgICAgICAgICAgICAgICAgICAnLWFyY2gnIGluIGdldF9jb25maWdfdmFycygpLmdldCgnQ0ZMQUdTJywgJycpLnN0cmlwKCk6Ci0gICAgICAgICAgICAgICAgIyBUaGUgdW5pdmVyc2FsIGJ1aWxkIHdpbGwgYnVpbGQgZmF0IGJpbmFyaWVzLCBidXQgbm90IG9uCi0gICAgICAgICAgICAgICAgIyBzeXN0ZW1zIGJlZm9yZSAxMC40Ci0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgVHJ5IHRvIGRldGVjdCA0LXdheSB1bml2ZXJzYWwgYnVpbGRzLCB0aG9zZSBoYXZlIG1hY2hpbmUtdHlwZQotICAgICAgICAgICAgICAgICMgJ3VuaXZlcnNhbCcgaW5zdGVhZCBvZiAnZmF0Jy4KLQotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwotICAgICAgICAgICAgICAgIGNmbGFncyA9IGdldF9jb25maWdfdmFycygpLmdldCgnQ0ZMQUdTJykKLQotICAgICAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXFMrKScsIGNmbGFncykKLSAgICAgICAgICAgICAgICBhcmNocyA9IHR1cGxlKHNvcnRlZChzZXQoYXJjaHMpKSkKLQotICAgICAgICAgICAgICAgIGlmIGxlbihhcmNocykgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9IGFyY2hzWzBdCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ludGVsJwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQzJwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdwcGM2NCcsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQ2NCcKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAncHBjNjQnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAndW5pdmVyc2FsJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICJEb24ndCBrbm93IG1hY2hpbmUgdmFsdWUgZm9yIGFyY2hzPSVyIiUoYXJjaHMsKSkKLQotICAgICAgICAgICAgZWxpZiBtYWNoaW5lID09ICdpMzg2JzoKLSAgICAgICAgICAgICAgICAjIE9uIE9TWCB0aGUgbWFjaGluZSB0eXBlIHJldHVybmVkIGJ5IHVuYW1lIGlzIGFsd2F5cyB0aGUKLSAgICAgICAgICAgICAgICAjIDMyLWJpdCB2YXJpYW50LCBldmVuIGlmIHRoZSBleGVjdXRhYmxlIGFyY2hpdGVjdHVyZSBpcwotICAgICAgICAgICAgICAgICMgdGhlIDY0LWJpdCB2YXJpYW50Ci0gICAgICAgICAgICAgICAgaWYgc3lzLm1heHNpemUgPj0gMioqMzI6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAneDg2XzY0JwotCi0gICAgICAgICAgICBlbGlmIG1hY2hpbmUgaW4gKCdQb3dlclBDJywgJ1Bvd2VyX01hY2ludG9zaCcpOgotICAgICAgICAgICAgICAgICMgUGljayBhIHNhbmUgbmFtZSBmb3IgdGhlIFBQQyBhcmNoaXRlY3R1cmUuCi0gICAgICAgICAgICAgICAgbWFjaGluZSA9ICdwcGMnCi0KLSAgICAgICAgICAgICAgICAjIFNlZSAnaTM4NicgY2FzZQotICAgICAgICAgICAgICAgIGlmIHN5cy5tYXhzaXplID49IDIqKjMyOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3BwYzY0JworICAgICAgICBpbXBvcnQgX29zeF9zdXBwb3J0LCBkaXN0dXRpbHMuc3lzY29uZmlnCisgICAgICAgIG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSA9IF9vc3hfc3VwcG9ydC5nZXRfcGxhdGZvcm1fb3N4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKQogCiAgICAgcmV0dXJuICIlcy0lcy0lcyIgJSAob3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKQogCmRpZmYgLS1naXQgYS9MaWIvZG9jdGVzdC5weSBiL0xpYi9kb2N0ZXN0LnB5CmluZGV4IGNjM2I0MjUuLjYyMDQ1MWYgMTAwNjQ0Ci0tLSBhL0xpYi9kb2N0ZXN0LnB5CisrKyBiL0xpYi9kb2N0ZXN0LnB5CkBAIC00NTgsNyArNDU4LDYgQEAKICAgICAgICAgcmV0dXJuIGhhc2goKHNlbGYuc291cmNlLCBzZWxmLndhbnQsIHNlbGYubGluZW5vLCBzZWxmLmluZGVudCwKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjX21zZykpCiAKLQogY2xhc3MgRG9jVGVzdDoKICAgICAiIiIKICAgICBBIGNvbGxlY3Rpb24gb2YgZG9jdGVzdCBleGFtcGxlcyB0aGF0IHNob3VsZCBiZSBydW4gaW4gYSBzaW5nbGUKQEAgLTEzNjcsNyArMTM2Niw3IEBACiAgICAgICAgIG0gPSBzZWxmLl9fTElORUNBQ0hFX0ZJTEVOQU1FX1JFLm1hdGNoKGZpbGVuYW1lKQogICAgICAgICBpZiBtIGFuZCBtLmdyb3VwKCduYW1lJykgPT0gc2VsZi50ZXN0Lm5hbWU6CiAgICAgICAgICAgICBleGFtcGxlID0gc2VsZi50ZXN0LmV4YW1wbGVzW2ludChtLmdyb3VwKCdleGFtcGxlbnVtJykpXQotICAgICAgICAgICAgcmV0dXJuIGV4YW1wbGUuc291cmNlLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgIHJldHVybiBleGFtcGxlLnNvdXJjZS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5zYXZlX2xpbmVjYWNoZV9nZXRsaW5lcyhmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpCiAKQEAgLTE0MTMsNiArMTQxMiw3IEBACiAgICAgICAgICMgTm90ZSB0aGF0IHRoZSBpbnRlcmFjdGl2ZSBvdXRwdXQgd2lsbCBnbyB0byAqb3VyKgogICAgICAgICAjIHNhdmVfc3Rkb3V0LCBldmVuIGlmIHRoYXQncyBub3QgdGhlIHJlYWwgc3lzLnN0ZG91dDsgdGhpcwogICAgICAgICAjIGFsbG93cyB1cyB0byB3cml0ZSB0ZXN0IGNhc2VzIGZvciB0aGUgc2V0X3RyYWNlIGJlaGF2aW9yLgorICAgICAgICBzYXZlX3RyYWNlID0gc3lzLmdldHRyYWNlKCkKICAgICAgICAgc2F2ZV9zZXRfdHJhY2UgPSBwZGIuc2V0X3RyYWNlCiAgICAgICAgIHNlbGYuZGVidWdnZXIgPSBfT3V0cHV0UmVkaXJlY3RpbmdQZGIoc2F2ZV9zdGRvdXQpCiAgICAgICAgIHNlbGYuZGVidWdnZXIucmVzZXQoKQpAQCAtMTQzMiw2ICsxNDMyLDcgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogICAgICAgICAgICAgcGRiLnNldF90cmFjZSA9IHNhdmVfc2V0X3RyYWNlCisgICAgICAgICAgICBzeXMuc2V0dHJhY2Uoc2F2ZV90cmFjZSkKICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcyA9IHNlbGYuc2F2ZV9saW5lY2FjaGVfZ2V0bGluZXMKICAgICAgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHNhdmVfZGlzcGxheWhvb2sKICAgICAgICAgICAgIGlmIGNsZWFyX2dsb2JzOgpAQCAtMTYyOCw4ICsxNjI5LDggQEAKICAgICAgICAgIyBDaGVjayBpZiB3ZSBzaG91bGQgdXNlIGRpZmYuCiAgICAgICAgIGlmIHNlbGYuX2RvX2FfZmFuY3lfZGlmZih3YW50LCBnb3QsIG9wdGlvbmZsYWdzKToKICAgICAgICAgICAgICMgU3BsaXQgd2FudCAmIGdvdCBpbnRvIGxpbmVzLgotICAgICAgICAgICAgd2FudF9saW5lcyA9IHdhbnQuc3BsaXRsaW5lcyhUcnVlKSAgIyBUcnVlID09IGtlZXAgbGluZSBlbmRzCi0gICAgICAgICAgICBnb3RfbGluZXMgPSBnb3Quc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgd2FudF9saW5lcyA9IHdhbnQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQorICAgICAgICAgICAgZ290X2xpbmVzID0gZ290LnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgICMgVXNlIGRpZmZsaWIgdG8gZmluZCB0aGVpciBkaWZmZXJlbmNlcy4KICAgICAgICAgICAgIGlmIG9wdGlvbmZsYWdzICYgUkVQT1JUX1VESUZGOgogICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZih3YW50X2xpbmVzLCBnb3RfbGluZXMsIG49MikKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9fZW5jb2RlZF93b3Jkcy5weSBiL0xpYi9lbWFpbC9fZW5jb2RlZF93b3Jkcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWY2ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VtYWlsL19lbmNvZGVkX3dvcmRzLnB5CkBAIC0wLDAgKzEsMjIxIEBACisiIiIgUm91dGluZXMgZm9yIG1hbmlwdWxhdGluZyBSRkMyMDQ3IGVuY29kZWQgd29yZHMuCisKK1RoaXMgaXMgY3VycmVudGx5IGEgcGFja2FnZS1wcml2YXRlIEFQSSwgYnV0IHdpbGwgYmUgY29uc2lkZXJlZCBmb3IgcHJvbW90aW9uCit0byBhIHB1YmxpYyBBUEkgaWYgdGhlcmUgaXMgZGVtYW5kLgorCisiIiIKKworIyBBbiBlY29kZWQgd29yZCBsb29rcyBsaWtlIHRoaXM6CisjCisjICAgICAgICA9P2NoYXJzZXRbKmxhbmddP2N0ZT9lbmNvZGVkX3N0cmluZz89CisjCisjIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNoYXJzZXQgc2VlIHRoZSBjaGFyc2V0IG1vZHVsZS4gIEhlcmUgaXQgaXMgb25lCisjIG9mIHRoZSBwcmVmZXJyZWQgTUlNRSBjaGFyc2V0IG5hbWVzIChob3BlZnVsbHk7IHlvdSBuZXZlciBrbm93IHdoZW4gcGFyc2luZykuCisjIGN0ZSAoQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZykgaXMgZWl0aGVyICdxJyBvciAnYicgKGlnbm9yaW5nIGNhc2UpLiAgSW4KKyMgdGhlb3J5IG90aGVyIGxldHRlcnMgY291bGQgYmUgdXNlZCBmb3Igb3RoZXIgZW5jb2RpbmdzLCBidXQgaW4gcHJhY3RpY2UgdGhpcworIyAoYWxtb3N0PykgbmV2ZXIgaGFwcGVucy4gIFRoZXJlIGNvdWxkIGJlIGEgcHVibGljIEFQSSBmb3IgYWRkaW5nIGVudHJpZXMKKyMgdG8gdG8gdGhlIENURSB0YWJsZXMsIGJ1dCBZQUdOSSBmb3Igbm93LiAgJ3EnIGlzIFF1b3RlZCBQcmludGFibGUsICdiJyBpcworIyBCYXNlNjQuICBUaGUgbWVhbmluZyBvZiBlbmNvZGVkX3N0cmluZyBzaG91bGQgYmUgb2J2aW91cy4gICdsYW5nJyBpcyBvcHRpb25hbAorIyBhcyBpbmRpY2F0ZWQgYnkgdGhlIGJyYWNrZXRzICh0aGV5IGFyZSBub3QgcGFydCBvZiB0aGUgc3ludGF4KSBidXQgaXMgYWxtb3N0CisjIG5ldmVyIGVuY291bnRlcmVkIGluIHByYWN0aWNlLgorIworIyBUaGUgZ2VuZXJhbCBpbnRlcmZhY2UgZm9yIGEgQ1RFIGRlY29kZXIgaXMgdGhhdCBpdCB0YWtlcyB0aGUgZW5jb2RlZF9zdHJpbmcKKyMgYXMgaXRzIGFyZ3VtZW50LCBhbmQgcmV0dXJucyBhIHR1cGxlIChjdGVfZGVjb2RlZF9zdHJpbmcsIGRlZmVjdHMpLiAgVGhlCisjIGN0ZV9kZWNvZGVkX3N0cmluZyBpcyB0aGUgb3JpZ2luYWwgYmluYXJ5IHRoYXQgd2FzIGVuY29kZWQgdXNpbmcgdGhlCisjIHNwZWNpZmllZCBjdGUuICAnZGVmZWN0cycgaXMgYSBsaXN0IG9mIE1lc3NhZ2VEZWZlY3QgaW5zdGFuY2VzIGluZGljYXRpbmcgYW55CisjIHByb2JsZW1zIGVuY291bnRlcmVkIGR1cmluZyBjb252ZXJzaW9uLiAgJ2NoYXJzZXQnIGFuZCAnbGFuZycgYXJlIHRoZQorIyBjb3JyZXNwb25kaW5nIHN0cmluZ3MgZXh0cmFjdGVkIGZyb20gdGhlIEVXLCBjYXNlIHByZXNlcnZlZC4KKyMKKyMgVGhlIGdlbmVyYWwgaW50ZXJmYWNlIGZvciBhIENURSBlbmNvZGVyIGlzIHRoYXQgaXQgdGFrZXMgYSBiaW5hcnkgc2VxdWVuY2UKKyMgYXMgaW5wdXQgYW5kIHJldHVybnMgdGhlIGN0ZV9lbmNvZGVkX3N0cmluZywgd2hpY2ggaXMgYW4gYXNjaWktb25seSBzdHJpbmcuCisjCisjIEVhY2ggZGVjb2RlciBtdXN0IGFsc28gc3VwcGx5IGEgbGVuZ3RoIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIGJpbmFyeQorIyBzZXF1ZW5jZSBhcyBpdHMgYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIGVuY29kZWQKKyMgc3RyaW5nLgorIworIyBUaGUgbWFpbiBBUEkgZnVuY3Rpb25zIGZvciB0aGUgbW9kdWxlIGFyZSBkZWNvZGUsIHdoaWNoIGNhbGxzIHRoZSBkZWNvZGVyCisjIHJlZmVyZW5jZWQgYnkgdGhlIGN0ZSBzcGVjaWZpZXIsIGFuZCBlbmNvZGUsIHdoaWNoIGFkZHMgdGhlIGFwcHJvcHJpYXRlCisjIFJGQyAyMDQ3ICJjaHJvbWUiIHRvIHRoZSBlbmNvZGVkIHN0cmluZywgYW5kIGNhbiBvcHRpb25hbGx5IGF1dG9tYXRpY2FsbHkKKyMgc2VsZWN0IHRoZSBzaG9ydGVzdCBwb3NzaWJsZSBlbmNvZGluZy4gIFNlZSB0aGVpciBkb2NzdHJpbmdzIGJlbG93IGZvcgorIyBkZXRhaWxzLgorCitpbXBvcnQgcmUKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IGZ1bmN0b29scworZnJvbSBzdHJpbmcgaW1wb3J0IGFzY2lpX2xldHRlcnMsIGRpZ2l0cworZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCisKK19fYWxsX18gPSBbJ2RlY29kZV9xJywKKyAgICAgICAgICAgJ2VuY29kZV9xJywKKyAgICAgICAgICAgJ2RlY29kZV9iJywKKyAgICAgICAgICAgJ2VuY29kZV9iJywKKyAgICAgICAgICAgJ2xlbl9xJywKKyAgICAgICAgICAgJ2xlbl9iJywKKyAgICAgICAgICAgJ2RlY29kZScsCisgICAgICAgICAgICdlbmNvZGUnLAorICAgICAgICAgICBdCisKKyMKKyMgUXVvdGVkIFByaW50YWJsZQorIworCisjIHJlZ2V4IGJhc2VkIGRlY29kZXIuCitfcV9ieXRlX3N1YmJlciA9IGZ1bmN0b29scy5wYXJ0aWFsKHJlLmNvbXBpbGUoYnInPShbYS1mQS1GMC05XXsyfSknKS5zdWIsCisgICAgICAgIGxhbWJkYSBtOiBieXRlcyhbaW50KG0uZ3JvdXAoMSksIDE2KV0pKQorCitkZWYgZGVjb2RlX3EoZW5jb2RlZCk6CisgICAgZW5jb2RlZCA9IGVuY29kZWQucmVwbGFjZShiJ18nLCBiJyAnKQorICAgIHJldHVybiBfcV9ieXRlX3N1YmJlcihlbmNvZGVkKSwgW10KKworCisjIGRpY3QgbWFwcGluZyBieXRlcyB0byB0aGVpciBlbmNvZGVkIGZvcm0KK2NsYXNzIF9RQnl0ZU1hcChkaWN0KToKKworICAgIHNhZmUgPSBiJy0hKisvJyArIGFzY2lpX2xldHRlcnMuZW5jb2RlKCdhc2NpaScpICsgZGlnaXRzLmVuY29kZSgnYXNjaWknKQorCisgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6CisgICAgICAgIGlmIGtleSBpbiBzZWxmLnNhZmU6CisgICAgICAgICAgICBzZWxmW2tleV0gPSBjaHIoa2V5KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZltrZXldID0gIj17OjAyWH0iLmZvcm1hdChrZXkpCisgICAgICAgIHJldHVybiBzZWxmW2tleV0KKworX3FfYnl0ZV9tYXAgPSBfUUJ5dGVNYXAoKQorCisjIEluIGhlYWRlcnMgc3BhY2VzIGFyZSBtYXBwZWQgdG8gJ18nLgorX3FfYnl0ZV9tYXBbb3JkKCcgJyldID0gJ18nCisKK2RlZiBlbmNvZGVfcShic3RyaW5nKToKKyAgICByZXR1cm4gJycuam9pbihfcV9ieXRlX21hcFt4XSBmb3IgeCBpbiBic3RyaW5nKQorCitkZWYgbGVuX3EoYnN0cmluZyk6CisgICAgcmV0dXJuIHN1bShsZW4oX3FfYnl0ZV9tYXBbeF0pIGZvciB4IGluIGJzdHJpbmcpCisKKworIworIyBCYXNlNjQKKyMKKworZGVmIGRlY29kZV9iKGVuY29kZWQpOgorICAgIGRlZmVjdHMgPSBbXQorICAgIHBhZF9lcnIgPSBsZW4oZW5jb2RlZCkgJSA0CisgICAgaWYgcGFkX2VycjoKKyAgICAgICAgZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0KCkpCisgICAgICAgIHBhZGRlZF9lbmNvZGVkID0gZW5jb2RlZCArIGInPT09J1s6NC1wYWRfZXJyXQorICAgIGVsc2U6CisgICAgICAgIHBhZGRlZF9lbmNvZGVkID0gZW5jb2RlZAorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRkZWNvZGUocGFkZGVkX2VuY29kZWQsIHZhbGlkYXRlPVRydWUpLCBkZWZlY3RzCisgICAgZXhjZXB0IGJpbmFzY2lpLkVycm9yOgorICAgICAgICAjIFNpbmNlIHdlIGhhZCBjb3JyZWN0IHBhZGRpbmcsIHRoaXMgbXVzdCBhbiBpbnZhbGlkIGNoYXIgZXJyb3IuCisgICAgICAgIGRlZmVjdHMgPSBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0KCldCisgICAgICAgICMgVGhlIG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzIGFyZSBpZ25vcmVkIGFzIGZhciBhcyBwYWRkaW5nCisgICAgICAgICMgZ29lcywgYnV0IHdlIGRvbid0IGtub3cgaG93IG1hbnkgdGhlcmUgYXJlLiAgU28gd2UnbGwganVzdAorICAgICAgICAjIHRyeSB2YXJpb3VzIHBhZGRpbmcgbGVuZ3RocyB1bnRpbCBzb21ldGhpbmcgd29ya3MuCisgICAgICAgIGZvciBpIGluIDAsIDEsIDIsIDM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRkZWNvZGUoZW5jb2RlZCtiJz0nKmksIHZhbGlkYXRlPUZhbHNlKSwgZGVmZWN0cworICAgICAgICAgICAgZXhjZXB0IGJpbmFzY2lpLkVycm9yOgorICAgICAgICAgICAgICAgIGlmIGk9PTA6CisgICAgICAgICAgICAgICAgICAgIGRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdCgpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigidW5leHBlY3RlZCBiaW5hc2NpaS5FcnJvciIpCisKK2RlZiBlbmNvZGVfYihic3RyaW5nKToKKyAgICByZXR1cm4gYmFzZTY0LmI2NGVuY29kZShic3RyaW5nKS5kZWNvZGUoJ2FzY2lpJykKKworZGVmIGxlbl9iKGJzdHJpbmcpOgorICAgIGdyb3Vwc19vZl8zLCBsZWZ0b3ZlciA9IGRpdm1vZChsZW4oYnN0cmluZyksIDMpCisgICAgIyA0IGJ5dGVzIG91dCBmb3IgZWFjaCAzIGJ5dGVzIChvciBub256ZXJvIGZyYWN0aW9uIHRoZXJlb2YpIGluLgorICAgIHJldHVybiBncm91cHNfb2ZfMyAqIDQgKyAoNCBpZiBsZWZ0b3ZlciBlbHNlIDApCisKKworX2N0ZV9kZWNvZGVycyA9IHsKKyAgICAncSc6IGRlY29kZV9xLAorICAgICdiJzogZGVjb2RlX2IsCisgICAgfQorCitkZWYgZGVjb2RlKGV3KToKKyAgICAiIiJEZWNvZGUgZW5jb2RlZCB3b3JkIGFuZCByZXR1cm4gKHN0cmluZywgY2hhcnNldCwgbGFuZywgZGVmZWN0cykgdHVwbGUuCisKKyAgICBBbiBSRkMgMjA0Ny8yMjQzIGVuY29kZWQgd29yZCBoYXMgdGhlIGZvcm06CisKKyAgICAgICAgPT9jaGFyc2V0Kmxhbmc/Y3RlP2VuY29kZWRfc3RyaW5nPz0KKworICAgIHdoZXJlICcqbGFuZycgbWF5IGJlIG9taXR0ZWQgYnV0IHRoZSBvdGhlciBwYXJ0cyBtYXkgbm90IGJlLgorCisgICAgVGhpcyBmdW5jdGlvbiBleHBlY3RzIGV4YWN0bHkgc3VjaCBhIHN0cmluZyAodGhhdCBpcywgaXQgZG9lcyBub3QgY2hlY2sgdGhlCisgICAgc3ludGF4IGFuZCBtYXkgcmFpc2UgZXJyb3JzIGlmIHRoZSBzdHJpbmcgaXMgbm90IHdlbGwgZm9ybWVkKSwgYW5kIHJldHVybnMKKyAgICB0aGUgZW5jb2RlZF9zdHJpbmcgZGVjb2RlZCBmaXJzdCBmcm9tIGl0cyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIGFuZAorICAgIHRoZW4gZnJvbSB0aGUgcmVzdWx0aW5nIGJ5dGVzIGludG8gdW5pY29kZSB1c2luZyB0aGUgc3BlY2lmaWVkIGNoYXJzZXQuICBJZgorICAgIHRoZSBjdGUtZGVjb2RlZCBzdHJpbmcgZG9lcyBub3Qgc3VjY2Vzc2Z1bGx5IGRlY29kZSB1c2luZyB0aGUgc3BlY2lmaWVkCisgICAgY2hhcmFjdGVyIHNldCwgYSBkZWZlY3QgaXMgYWRkZWQgdG8gdGhlIGRlZmVjdHMgbGlzdCBhbmQgdGhlIHVua25vd24gb2N0ZXRzCisgICAgYXJlIHJlcGxhY2VkIGJ5IHRoZSB1bmljb2RlICd1bmtub3duJyBjaGFyYWN0ZXIgXHVGREZGLgorCisgICAgVGhlIHNwZWNpZmllZCBjaGFyc2V0IGFuZCBsYW5ndWFnZSBhcmUgcmV0dXJuZWQuICBUaGUgZGVmYXVsdCBmb3IgbGFuZ3VhZ2UsCisgICAgd2hpY2ggaXMgcmFyZWx5IGlmIGV2ZXIgZW5jb3VudGVyZWQsIGlzIHRoZSBlbXB0eSBzdHJpbmcuCisKKyAgICAiIiIKKyAgICBfLCBjaGFyc2V0LCBjdGUsIGN0ZV9zdHJpbmcsIF8gPSBldy5zcGxpdCgnPycpCisgICAgY2hhcnNldCwgXywgbGFuZyA9IGNoYXJzZXQucGFydGl0aW9uKCcqJykKKyAgICBjdGUgPSBjdGUubG93ZXIoKQorICAgICMgUmVjb3ZlciB0aGUgb3JpZ2luYWwgYnl0ZXMgYW5kIGRvIENURSBkZWNvZGluZy4KKyAgICBic3RyaW5nID0gY3RlX3N0cmluZy5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgYnN0cmluZywgZGVmZWN0cyA9IF9jdGVfZGVjb2RlcnNbY3RlXShic3RyaW5nKQorICAgICMgVHVybiB0aGUgQ1RFIGRlY29kZWQgYnl0ZXMgaW50byB1bmljb2RlLgorICAgIHRyeToKKyAgICAgICAgc3RyaW5nID0gYnN0cmluZy5kZWNvZGUoY2hhcnNldCkKKyAgICBleGNlcHQgVW5pY29kZUVycm9yOgorICAgICAgICBkZWZlY3RzLmFwcGVuZChlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCgiRW5jb2RlZCB3b3JkICIKKyAgICAgICAgICAgICJjb250YWlucyBieXRlcyBub3QgZGVjb2RhYmxlIHVzaW5nIHt9IGNoYXJzZXQiLmZvcm1hdChjaGFyc2V0KSkpCisgICAgICAgIHN0cmluZyA9IGJzdHJpbmcuZGVjb2RlKGNoYXJzZXQsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKKyAgICAgICAgc3RyaW5nID0gYnN0cmluZy5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgIGlmIGNoYXJzZXQubG93ZXIoKSAhPSAndW5rbm93bi04Yml0JzoKKyAgICAgICAgICAgIGRlZmVjdHMuYXBwZW5kKGVycm9ycy5DaGFyc2V0RXJyb3IoIlVua25vd24gY2hhcnNldCB7fSAiCisgICAgICAgICAgICAgICAgImluIGVuY29kZWQgd29yZDsgZGVjb2RlZCBhcyB1bmtub3duIGJ5dGVzIi5mb3JtYXQoY2hhcnNldCkpKQorICAgIHJldHVybiBzdHJpbmcsIGNoYXJzZXQsIGxhbmcsIGRlZmVjdHMKKworCitfY3RlX2VuY29kZXJzID0geworICAgICdxJzogZW5jb2RlX3EsCisgICAgJ2InOiBlbmNvZGVfYiwKKyAgICB9CisKK19jdGVfZW5jb2RlX2xlbmd0aCA9IHsKKyAgICAncSc6IGxlbl9xLAorICAgICdiJzogbGVuX2IsCisgICAgfQorCitkZWYgZW5jb2RlKHN0cmluZywgY2hhcnNldD0ndXRmLTgnLCBlbmNvZGluZz1Ob25lLCBsYW5nPScnKToKKyAgICAiIiJFbmNvZGUgc3RyaW5nIHVzaW5nIHRoZSBDVEUgZW5jb2RpbmcgdGhhdCBwcm9kdWNlcyB0aGUgc2hvcnRlciByZXN1bHQuCisKKyAgICBQcm9kdWNlcyBhbiBSRkMgMjA0Ny8yMjQzIGVuY29kZWQgd29yZCBvZiB0aGUgZm9ybToKKworICAgICAgICA9P2NoYXJzZXQqbGFuZz9jdGU/ZW5jb2RlZF9zdHJpbmc/PQorCisgICAgd2hlcmUgJypsYW5nJyBpcyBvbWl0dGVkIHVubGVzcyB0aGUgJ2xhbmcnIHBhcmFtZXRlciBpcyBnaXZlbiBhIHZhbHVlLgorICAgIE9wdGlvbmFsIGFyZ3VtZW50IGNoYXJzZXQgKGRlZmF1bHRzIHRvIHV0Zi04KSBzcGVjaWZpZXMgdGhlIGNoYXJzZXQgdG8gdXNlCisgICAgdG8gZW5jb2RlIHRoZSBzdHJpbmcgdG8gYmluYXJ5IGJlZm9yZSBDVEUgZW5jb2RpbmcgaXQuICBPcHRpb25hbCBhcmd1bWVudAorICAgICdlbmNvZGluZycgaXMgdGhlIGN0ZSBzcGVjaWZpZXIgZm9yIHRoZSBlbmNvZGluZyB0aGF0IHNob3VsZCBiZSB1c2VkICgncScKKyAgICBvciAnYicpOyBpZiBpdCBpcyBOb25lICh0aGUgZGVmYXVsdCkgdGhlIGVuY29kaW5nIHdoaWNoIHByb2R1Y2VzIHRoZQorICAgIHNob3J0ZXN0IGVuY29kZWQgc2VxdWVuY2UgaXMgdXNlZCwgZXhjZXB0IHRoYXQgJ3EnIGlzIHByZWZlcnJlZCBpZiBpdCBpcyB1cAorICAgIHRvIGZpdmUgY2hhcmFjdGVycyBsb25nZXIuICBPcHRpb25hbCBhcmd1bWVudCAnbGFuZycgKGRlZmF1bHQgJycpIGdpdmVzIHRoZQorICAgIFJGQyAyMjQzIGxhbmd1YWdlIHN0cmluZyB0byBzcGVjaWZ5IGluIHRoZSBlbmNvZGVkIHdvcmQuCisKKyAgICAiIiIKKyAgICBpZiBjaGFyc2V0ID09ICd1bmtub3duLThiaXQnOgorICAgICAgICBic3RyaW5nID0gc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICBlbHNlOgorICAgICAgICBic3RyaW5nID0gc3RyaW5nLmVuY29kZShjaGFyc2V0KQorICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CisgICAgICAgIHFsZW4gPSBfY3RlX2VuY29kZV9sZW5ndGhbJ3EnXShic3RyaW5nKQorICAgICAgICBibGVuID0gX2N0ZV9lbmNvZGVfbGVuZ3RoWydiJ10oYnN0cmluZykKKyAgICAgICAgIyBCaWFzIHRvd2FyZCBxLiAgNSBpcyBhcmJpdHJhcnkuCisgICAgICAgIGVuY29kaW5nID0gJ3EnIGlmIHFsZW4gLSBibGVuIDwgNSBlbHNlICdiJworICAgIGVuY29kZWQgPSBfY3RlX2VuY29kZXJzW2VuY29kaW5nXShic3RyaW5nKQorICAgIGlmIGxhbmc6CisgICAgICAgIGxhbmcgPSAnKicgKyBsYW5nCisgICAgcmV0dXJuICI9P3t9e30/e30/e30/PSIuZm9ybWF0KGNoYXJzZXQsIGxhbmcsIGVuY29kaW5nLCBlbmNvZGVkKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MjRlZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTAsMCArMSwyOTUzIEBACisiIiJIZWFkZXIgdmFsdWUgcGFyc2VyIGltcGxlbWVudGluZyB2YXJpb3VzIGVtYWlsLXJlbGF0ZWQgUkZDIHBhcnNpbmcgcnVsZXMuCisKK1RoZSBwYXJzaW5nIG1ldGhvZHMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBpbXBsZW1lbnQgdmFyaW91cyBlbWFpbCByZWxhdGVkCitwYXJzaW5nIHJ1bGVzLiAgUHJpbmNpcGFsIGFtb25nIHRoZW0gaXMgUkZDIDUzMjIsIHdoaWNoIGlzIHRoZSBmb2xsb3dvbgordG8gUkZDIDI4MjIgYW5kIHByaW1hcmlseSBhIGNsYXJpZmljYXRpb24gb2YgdGhlIGZvcm1lci4gIEl0IGFsc28gaW1wbGVtZW50cworUkZDIDIwNDcgZW5jb2RlZCB3b3JkIGRlY29kaW5nLgorCitSRkMgNTMyMiBnb2VzIHRvIGNvbnNpZGVyYWJsZSB0cm91YmxlIHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAorUkZDIDgyMiBpbiB0aGUgcGFyc2UgcGhhc2UsIHdoaWxlIGNsZWFuaW5nIHVwIHRoZSBzdHJ1Y3R1cmUgb24gdGhlIGdlbmVyYXRpb24KK3BoYXNlLiAgVGhpcyBwYXJzZXIgc3VwcG9ydHMgY29ycmVjdCBSRkMgNTMyMiBnZW5lcmF0aW9uIGJ5IHRhZ2dpbmcgd2hpdGUgc3BhY2UKK2FzIGZvbGRpbmcgd2hpdGUgc3BhY2Ugb25seSB3aGVuIGZvbGRpbmcgaXMgYWxsb3dlZCBpbiB0aGUgbm9uLW9ic29sZXRlIHJ1bGUKK3NldHMuICBBY3R1YWxseSwgdGhlIHBhcnNlciBpcyBldmVuIG1vcmUgZ2VuZXJvdXMgd2hlbiBhY2NlcHRpbmcgaW5wdXQgdGhhbiBSRkMKKzUzMjIgbWFuZGF0ZXMsIGZvbGxvd2luZyB0aGUgc3Bpcml0IG9mIFBvc3RlbCdzIExhdywgd2hpY2ggUkZDIDUzMjIgZW5jb3VyYWdlcy4KK1doZXJlIHBvc3NpYmxlIGRldmlhdGlvbnMgZnJvbSB0aGUgc3RhbmRhcmQgYXJlIGFubm90YXRlZCBvbiB0aGUgJ2RlZmVjdHMnCithdHRyaWJ1dGUgb2YgdG9rZW5zIHRoYXQgZGV2aWF0ZS4KKworVGhlIGdlbmVyYWwgc3RydWN0dXJlIG9mIHRoZSBwYXJzZXIgZm9sbG93cyBSRkMgNTMyMiwgYW5kIHVzZXMgaXRzIHRlcm1pbm9sb2d5Cit3aGVyZSB0aGVyZSBpcyBhIGRpcmVjdCBjb3JyZXNwb25kZW5jZS4gIFdoZXJlIHRoZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyBhCitzb21ld2hhdCBkaWZmZXJlbnQgc3RydWN0dXJlIHRoYW4gdGhhdCB1c2VkIGJ5IHRoZSBmb3JtYWwgZ3JhbW1hciwgbmV3IHRlcm1zCit0aGF0IG1pbWljIHRoZSBjbG9zZXN0IGV4aXN0aW5nIHRlcm1zIGFyZSB1c2VkLiAgVGh1cywgaXQgcmVhbGx5IGhlbHBzIHRvIGhhdmUKK2EgY29weSBvZiBSRkMgNTMyMiBoYW5keSB3aGVuIHN0dWR5aW5nIHRoaXMgY29kZS4KKworSW5wdXQgdG8gdGhlIHBhcnNlciBpcyBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdW5mb2xkZWQgYWNjb3JkaW5nIHRvCitSRkMgNTMyMiBydWxlcy4gIEFjY29yZGluZyB0byB0aGUgUkZDIHRoaXMgdW5mb2xkaW5nIGlzIHRoZSB2ZXJ5IGZpcnN0IHN0ZXAsIGFuZAordGhpcyBwYXJzZXIgbGVhdmVzIHRoZSB1bmZvbGRpbmcgc3RlcCB0byBhIGhpZ2hlciBsZXZlbCBtZXNzYWdlIHBhcnNlciwgd2hpY2gKK3dpbGwgaGF2ZSBhbHJlYWR5IGRldGVjdGVkIHRoZSBsaW5lIGJyZWFrcyB0aGF0IG5lZWQgdW5mb2xkaW5nIHdoaWxlCitkZXRlcm1pbmluZyB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgZWFjaCBoZWFkZXIuCisKK1RoZSBvdXRwdXQgb2YgdGhlIHBhcnNlciBpcyBhIFRva2VuTGlzdCBvYmplY3QsIHdoaWNoIGlzIGEgbGlzdCBzdWJjbGFzcy4gIEEKK1Rva2VuTGlzdCBpcyBhIHJlY3Vyc2l2ZSBkYXRhIHN0cnVjdHVyZS4gIFRoZSB0ZXJtaW5hbCBub2RlcyBvZiB0aGUgc3RydWN0dXJlCithcmUgVGVybWluYWwgb2JqZWN0cywgd2hpY2ggYXJlIHN1YmNsYXNzZXMgb2Ygc3RyLiAgVGhlc2UgZG8gbm90IGNvcnJlc3BvbmQKK2RpcmVjdGx5IHRvIHRlcm1pbmFsIG9iamVjdHMgaW4gdGhlIGZvcm1hbCBncmFtbWFyLCBidXQgYXJlIGluc3RlYWQgbW9yZQorcHJhY3RpY2FsIGhpZ2hlciBsZXZlbCBjb21iaW5hdGlvbnMgb2YgdHJ1ZSB0ZXJtaW5hbHMuCisKK0FsbCBUb2tlbkxpc3QgYW5kIFRlcm1pbmFsIG9iamVjdHMgaGF2ZSBhICd2YWx1ZScgYXR0cmlidXRlLCB3aGljaCBwcm9kdWNlcyB0aGUKK3NlbWFudGljYWxseSBtZWFuaW5nZnVsIHZhbHVlIG9mIHRoYXQgcGFydCBvZiB0aGUgcGFyc2Ugc3VidHJlZS4gIFRoZSB2YWx1ZSBvZgorYWxsIHdoaXRlc3BhY2UgdG9rZW5zIChubyBtYXR0ZXIgaG93IG1hbnkgc3ViLXRva2VucyB0aGV5IG1heSBjb250YWluKSBpcyBhCitzaW5nbGUgc3BhY2UsIGFzIHBlciB0aGUgUkZDIHJ1bGVzLiAgVGhpcyBpbmNsdWRlcyAnQ0ZXUycsIHdoaWNoIGlzIGhlcmVpbgoraW5jbHVkZWQgaW4gdGhlIGdlbmVyYWwgY2xhc3Mgb2Ygd2hpdGVzcGFjZSB0b2tlbnMuICBUaGVyZSBpcyBvbmUgZXhjZXB0aW9uIHRvCit0aGUgcnVsZSB0aGF0IHdoaXRlc3BhY2UgdG9rZW5zIGFyZSBjb2xsYXBzZWQgaW50byBzaW5nbGUgc3BhY2VzIGluIHZhbHVlczogaW4KK3RoZSB2YWx1ZSBvZiBhICdiYXJlLXF1b3RlZC1zdHJpbmcnIChhIHF1b3RlZC1zdHJpbmcgd2l0aCBubyBsZWFkaW5nIG9yCit0cmFpbGluZyB3aGl0ZXNwYWNlKSwgYW55IHdoaXRlc3BhY2UgdGhhdCBhcHBlYXJlZCBiZXR3ZWVuIHRoZSBxdW90YXRpb24gbWFya3MKK2lzIHByZXNlcnZlZCBpbiB0aGUgcmV0dXJuZWQgdmFsdWUuICBOb3RlIHRoYXQgaW4gYWxsIFRlcm1pbmFsIHN0cmluZ3MgcXVvdGVkCitwYWlycyBhcmUgdHVybmVkIGludG8gdGhlaXIgdW5xdW90ZWQgdmFsdWVzLgorCitBbGwgVG9rZW5MaXN0IGFuZCBUZXJtaW5hbCBvYmplY3RzIGFsc28gaGF2ZSBhIHN0cmluZyB2YWx1ZSwgd2hpY2ggYXR0ZW1wdHMgdG8KK2JlIGEgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24gb2YgdGhlIFJGQy1jb21wbGlhbnQgZm9ybSBvZiB0aGUgc3Vic3RyaW5nIHRoYXQKK3Byb2R1Y2VkIHRoZSBwYXJzZWQgc3VidHJlZSwgaW5jbHVkaW5nIG1pbmltYWwgdXNlIG9mIHF1b3RlZCBwYWlyIHF1b3RpbmcuCitXaGl0ZXNwYWNlIHJ1bnMgYXJlIG5vdCBjb2xsYXBzZWQuCisKK0NvbW1lbnQgdG9rZW5zIGFsc28gaGF2ZSBhICdjb250ZW50JyBhdHRyaWJ1dGUgcHJvdmlkaW5nIHRoZSBzdHJpbmcgZm91bmQKK2JldHdlZW4gdGhlIHBhcmVucyAoaW5jbHVkaW5nIGFueSBuZXN0ZWQgY29tbWVudHMpIHdpdGggd2hpdGVzcGFjZSBwcmVzZXJ2ZWQuCisKK0FsbCBUb2tlbkxpc3QgYW5kIFRlcm1pbmFsIG9iamVjdHMgaGF2ZSBhICdkZWZlY3RzJyBhdHRyaWJ1dGUgd2hpY2ggaXMgYQorcG9zc2libHkgZW1wdHkgbGlzdCBhbGwgb2YgdGhlIGRlZmVjdHMgZm91bmQgd2hpbGUgY3JlYXRpbmcgdGhlIHRva2VuLiAgRGVmZWN0cworbWF5IGFwcGVhciBvbiBhbnkgdG9rZW4gaW4gdGhlIHRyZWUsIGFuZCBhIGNvbXBvc2l0ZSBsaXN0IG9mIGFsbCBkZWZlY3RzIGluIHRoZQorc3VidHJlZSBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgJ2FsbF9kZWZlY3RzJyBhdHRyaWJ1dGUgb2YgYW55IG5vZGUuICAoRm9yCitUZXJtaW5hbCBub3RlcyB4LmRlZmVjdHMgPT0geC5hbGxfZGVmZWN0cy4pCisKK0VhY2ggb2JqZWN0IGluIGEgcGFyc2UgdHJlZSBpcyBjYWxsZWQgYSAndG9rZW4nLCBhbmQgZWFjaCBoYXMgYSAndG9rZW5fdHlwZScKK2F0dHJpYnV0ZSB0aGF0IGdpdmVzIHRoZSBuYW1lIGZyb20gdGhlIFJGQyA1MzIyIGdyYW1tYXIgdGhhdCBpdCByZXByZXNlbnRzLgorTm90IGFsbCBSRkMgNTMyMiBub2RlcyBhcmUgcHJvZHVjZWQsIGFuZCB0aGVyZSBpcyBvbmUgbm9uLVJGQyA1MzIyIG5vZGUgdGhhdAorbWF5IGJlIHByb2R1Y2VkOiAncHRleHQnLiAgQSAncHRleHQnIGlzIGEgc3RyaW5nIG9mIHByaW50YWJsZSBhc2NpaSBjaGFyYWN0ZXJzLgorSXQgaXMgcmV0dXJuZWQgaW4gcGxhY2Ugb2YgbGlzdHMgb2YgKGN0ZXh0L3F1b3RlZC1wYWlyKSBhbmQKKyhxdGV4dC9xdW90ZWQtcGFpcikuCisKK1hYWDogcHJvdmlkZSBjb21wbGV0ZSBsaXN0IG9mIHRva2VuIHR5cGVzLgorIiIiCisKK2ltcG9ydCByZQoraW1wb3J0IHVybGxpYiAgICMgRm9yIHVybGxpYi5wYXJzZS51bnF1b3RlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlLCBPcmRlcmVkRGljdAorZnJvbSBlbWFpbCBpbXBvcnQgX2VuY29kZWRfd29yZHMgYXMgX2V3Citmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gZW1haWwgaW1wb3J0IHV0aWxzCisKKyMKKyMgVXNlZnVsIGNvbnN0YW50cyBhbmQgZnVuY3Rpb25zCisjCisKK1dTUCA9IHNldCgnIFx0JykKK0NGV1NfTEVBREVSID0gV1NQIHwgc2V0KCcoJykKK1NQRUNJQUxTID0gc2V0KHInKCk8PkAsOjsuXCJbXScpCitBVE9NX0VORFMgPSBTUEVDSUFMUyB8IFdTUAorRE9UX0FUT01fRU5EUyA9IEFUT01fRU5EUyAtIHNldCgnLicpCisjICcuJywgJyInLCBhbmQgJygnIGRvIG5vdCBlbmQgcGhyYXNlcyBpbiBvcmRlciB0byBzdXBwb3J0IG9icy1waHJhc2UKK1BIUkFTRV9FTkRTID0gU1BFQ0lBTFMgLSBzZXQoJy4iKCcpCitUU1BFQ0lBTFMgPSAoU1BFQ0lBTFMgfCBzZXQoJy8/PScpKSAtIHNldCgnLicpCitUT0tFTl9FTkRTID0gVFNQRUNJQUxTIHwgV1NQCitBU1BFQ0lBTFMgPSBUU1BFQ0lBTFMgfCBzZXQoIionJSIpCitBVFRSSUJVVEVfRU5EUyA9IEFTUEVDSUFMUyB8IFdTUAorRVhURU5ERURfQVRUUklCVVRFX0VORFMgPSBBVFRSSUJVVEVfRU5EUyAtIHNldCgnJScpCisKK2RlZiBxdW90ZV9zdHJpbmcodmFsdWUpOgorICAgIHJldHVybiAnIicrc3RyKHZhbHVlKS5yZXBsYWNlKCdcXCcsICdcXFxcJykucmVwbGFjZSgnIicsIHInXCInKSsnIicKKworIworIyBBY2N1bXVsYXRvciBmb3IgaGVhZGVyIGZvbGRpbmcKKyMKKworY2xhc3MgX0ZvbGRlZDoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhsZW4sIHBvbGljeSk6CisgICAgICAgIHNlbGYubWF4bGVuID0gbWF4bGVuCisgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CisgICAgICAgIHNlbGYubGFzdGxlbiA9IDAKKyAgICAgICAgc2VsZi5zdGlja3lzcGFjZSA9IE5vbmUKKyAgICAgICAgc2VsZi5maXJzdGxpbmUgPSBUcnVlCisgICAgICAgIHNlbGYuZG9uZSA9IFtdCisgICAgICAgIHNlbGYuY3VycmVudCA9IFtdCisKKyAgICBkZWYgbmV3bGluZShzZWxmKToKKyAgICAgICAgc2VsZi5kb25lLmV4dGVuZChzZWxmLmN1cnJlbnQpCisgICAgICAgIHNlbGYuZG9uZS5hcHBlbmQoc2VsZi5wb2xpY3kubGluZXNlcCkKKyAgICAgICAgc2VsZi5jdXJyZW50LmNsZWFyKCkKKyAgICAgICAgc2VsZi5sYXN0bGVuID0gMAorCisgICAgZGVmIGZpbmFsaXplKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmN1cnJlbnQ6CisgICAgICAgICAgICBzZWxmLm5ld2xpbmUoKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHNlbGYuZG9uZSkKKworICAgIGRlZiBhcHBlbmQoc2VsZiwgc3Rva2VuKToKKyAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisKKyAgICBkZWYgYXBwZW5kX2lmX2ZpdHMoc2VsZiwgdG9rZW4sIHN0b2tlbj1Ob25lKToKKyAgICAgICAgaWYgc3Rva2VuIGlzIE5vbmU6CisgICAgICAgICAgICBzdG9rZW4gPSBzdHIodG9rZW4pCisgICAgICAgIGwgPSBsZW4oc3Rva2VuKQorICAgICAgICBpZiBzZWxmLnN0aWNreXNwYWNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3RpY2t5c3BhY2VfbGVuID0gbGVuKHNlbGYuc3RpY2t5c3BhY2UpCisgICAgICAgICAgICBpZiBzZWxmLmxhc3RsZW4gKyBzdGlja3lzcGFjZV9sZW4gKyBsIDw9IHNlbGYubWF4bGVuOgorICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc2VsZi5zdGlja3lzcGFjZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxhc3RsZW4gKz0gc3RpY2t5c3BhY2VfbGVuCisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisgICAgICAgICAgICAgICAgc2VsZi5sYXN0bGVuICs9IGwKKyAgICAgICAgICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuZmlyc3RsaW5lID0gRmFsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgdG9rZW4uaGFzX2Z3czoKKyAgICAgICAgICAgICAgICB3cyA9IHRva2VuLnBvcF9sZWFkaW5nX2Z3cygpCisgICAgICAgICAgICAgICAgaWYgd3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgKz0gc3RyKHdzKQorICAgICAgICAgICAgICAgICAgICBzdGlja3lzcGFjZV9sZW4gKz0gbGVuKHdzKQorICAgICAgICAgICAgICAgIHRva2VuLl9mb2xkKHNlbGYpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGlmIHN0aWNreXNwYWNlX2xlbiBhbmQgbCArIDEgPD0gc2VsZi5tYXhsZW46CisgICAgICAgICAgICAgICAgbWFyZ2luID0gc2VsZi5tYXhsZW4gLSBsCisgICAgICAgICAgICAgICAgaWYgMCA8IG1hcmdpbiA8IHN0aWNreXNwYWNlX2xlbjoKKyAgICAgICAgICAgICAgICAgICAgdHJpbSA9IHN0aWNreXNwYWNlX2xlbiAtIG1hcmdpbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHNlbGYuc3RpY2t5c3BhY2VbOnRyaW1dKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gc2VsZi5zdGlja3lzcGFjZVt0cmltOl0KKyAgICAgICAgICAgICAgICAgICAgc3RpY2t5c3BhY2VfbGVuID0gdHJpbQorICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZSgpCisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzZWxmLnN0aWNreXNwYWNlKQorICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc3Rva2VuKQorICAgICAgICAgICAgICAgIHNlbGYubGFzdGxlbiA9IGwgKyBzdGlja3lzcGFjZV9sZW4KKyAgICAgICAgICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuZmlyc3RsaW5lID0gRmFsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuZmlyc3RsaW5lOgorICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZSgpCisgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHNlbGYuc3RpY2t5c3BhY2UpCisgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHN0b2tlbikKKyAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgPSBOb25lCisgICAgICAgICAgICBzZWxmLmZpcnN0bGluZSA9IEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBzZWxmLmxhc3RsZW4gKyBsIDw9IHNlbGYubWF4bGVuOgorICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisgICAgICAgICAgICBzZWxmLmxhc3RsZW4gKz0gbAorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgbCA8IHNlbGYubWF4bGVuOgorICAgICAgICAgICAgc2VsZi5uZXdsaW5lKCkKKyAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc3Rva2VuKQorICAgICAgICAgICAgc2VsZi5sYXN0bGVuID0gbAorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyMKKyMgVG9rZW5MaXN0IGFuZCBpdHMgc3ViY2xhc3NlcworIworCitjbGFzcyBUb2tlbkxpc3QobGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gTm9uZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5kZWZlY3RzID0gW10KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdHIoeCkgZm9yIHggaW4gc2VsZikKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICd7fSh7fSknLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIoKS5fX3JlcHJfXygpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbih4LnZhbHVlIGZvciB4IGluIHNlbGYgaWYgeC52YWx1ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfZGVmZWN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1bSgoeC5hbGxfZGVmZWN0cyBmb3IgeCBpbiBzZWxmKSwgc2VsZi5kZWZlY3RzKQorCisgICAgIworICAgICMgRm9sZGluZyBBUEkKKyAgICAjCisgICAgIyBwYXJ0cygpOgorICAgICMKKyAgICAjIHJldHVybiBhIGxpc3Qgb2Ygb2JqZWN0cyB0aGF0IGNvbnN0aXR1dGUgdGhlICJoaWdoZXIgbGV2ZWwgc3ludGFjdGljCisgICAgIyBvYmplY3RzIiBzcGVjaWZpZWQgYnkgdGhlIFJGQyBhcyB0aGUgYmVzdCBwbGFjZXMgdG8gZm9sZCBhIGhlYWRlciBsaW5lLgorICAgICMgVGhlIHJldHVybmVkIG9iamVjdHMgbXVzdCBpbmNsdWRlIGxlYWRpbmcgZm9sZGluZyB3aGl0ZSBzcGFjZSwgZXZlbiBpZgorICAgICMgdGhpcyBtZWFucyBtdXRhdGluZyB0aGUgdW5kZXJseWluZyBwYXJzZSB0cmVlIG9mIHRoZSBvYmplY3QuICBFYWNoIG9iamVjdAorICAgICMgaXMgb25seSByZXNwb25zaWJsZSBmb3IgcmV0dXJuaW5nICppdHMqIHBhcnRzLCBhbmQgc2hvdWxkIG5vdCBkcmlsbCBkb3duCisgICAgIyB0byBhbnkgbG93ZXIgbGV2ZWwgZXhjZXB0IGFzIHJlcXVpcmVkIHRvIG1lZXQgdGhlIGxlYWRpbmcgZm9sZGluZyB3aGl0ZQorICAgICMgc3BhY2UgY29uc3RyYWludC4KKyAgICAjCisgICAgIyBfZm9sZChmb2xkZWQpOgorICAgICMKKyAgICAjICAgZm9sZGVkOiB0aGUgcmVzdWx0IGFjY3VtdWxhdG9yLiAgVGhpcyBpcyBhbiBpbnN0YW5jZSBvZiBfRm9sZGVkLgorICAgICMgICAgICAgKFhYWDogSSBoYXZlbid0IGZpbmlzaGVkIGZhY3RvcmluZyB0aGlzIG91dCB5ZXQsIHRoZSBmb2xkaW5nIGNvZGUKKyAgICAjICAgICAgIHByZXR0eSBtdWNoIHVzZXMgdGhpcyBhcyBhIHN0YXRlIG9iamVjdC4pIFdoZW4gdGhlIGZvbGRlZC5jdXJyZW50CisgICAgIyAgICAgICBjb250YWlucyBhcyBtdWNoIHRleHQgYXMgd2lsbCBmaXQsIHRoZSBfZm9sZCBtZXRob2Qgc2hvdWxkIGNhbGwKKyAgICAjICAgICAgIGZvbGRlZC5uZXdsaW5lLgorICAgICMgIGZvbGRlZC5sYXN0bGVuOiB0aGUgY3VycmVudCBsZW5ndGggb2YgdGhlIHRlc3Qgc3RvcmVkIGluIGZvbGRlZC5jdXJyZW50LgorICAgICMgIGZvbGRlZC5tYXhsZW46IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgbWF5IGFwcGVhciBvbiBhCisgICAgIyAgICAgICBmb2xkZWQgbGluZS4gIERpZmZlcnMgZnJvbSB0aGUgcG9saWN5IHNldHRpbmcgaW4gdGhhdCAibm8gbGltaXQiIGlzCisgICAgIyAgICAgICByZXByZXNlbnRlZCBieSAraW5mLCB3aGljaCBtZWFucyBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgdHJpdmlhbGx5CisgICAgIyAgICAgICBsb2dpY2FsIGZhc2hpb24gaW4gY29tcGFyaXNvbnMuCisgICAgIworICAgICMgQ3VycmVudGx5IG5vIHN1YmNsYXNzZXMgaW1wbGVtZW50IHBhcnRzLCBhbmQgSSB0aGluayB0aGlzIHdpbGwgcmVtYWluCisgICAgIyB0cnVlLiAgQSBzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIGltcGxlbWVudCBfZm9sZCB3aGVuIHRoZSBnZW5lcmljIHZlcnNpb24KKyAgICAjIGlzbid0IHN1ZmZpY2llbnQuICBfZm9sZCB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgcHJpbWFyaWx5IHdoZW4gaXQgaXMKKyAgICAjIHBvc3NpYmxlIGZvciBlbmNvZGVkIHdvcmRzIHRvIGFwcGVhciBpbiB0aGUgc3BlY2lhbGl6ZWQgdG9rZW4tbGlzdCwgc2luY2UKKyAgICAjIHRoZXJlIGlzIG5vIGdlbmVyaWMgYWxnb3JpdGhtIHRoYXQgY2FuIGtub3cgd2hlcmUgZXhhY3RseSB0aGUgZW5jb2RlZAorICAgICMgd29yZHMgYXJlIGFsbG93ZWQuICBBIF9mb2xkIGltcGxlbWVudGF0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBmaWxsaW5nCisgICAgIyBsaW5lcyBpbiB0aGUgc2FtZSBnZW5lcmFsIHdheSB0aGF0IHRoZSB0b3AgbGV2ZWwgX2ZvbGQgZG9lcy4gSXQgbWF5LCBhbmQKKyAgICAjIHNob3VsZCwgY2FsbCB0aGUgX2ZvbGQgbWV0aG9kIG9mIHN1Yi1vYmplY3RzIGluIGEgc2ltaWxhciBmYXNoaW9uIHRvIHRoYXQKKyAgICAjIG9mIHRoZSB0b3AgbGV2ZWwgX2ZvbGQuCisgICAgIworICAgICMgWFhYOiBJJ20gaG9waW5nIGl0IHdpbGwgYmUgcG9zc2libGUgdG8gZmFjdG9yIHRoZSBleGlzdGluZyBjb2RlIGZ1cnRoZXIKKyAgICAjIHRvIHJlZHVjZSByZWR1bmRhbmN5IGFuZCBtYWtlIHRoZSBsb2dpYyBjbGVhcmVyLgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcnRzKHNlbGYpOgorICAgICAgICBrbGFzcyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIHRoaXMgPSBbXQorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHRva2VuLnN0YXJ0c3dpdGhfZndzKCk6CisgICAgICAgICAgICAgICAgaWYgdGhpczoKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhpc1swXSBpZiBsZW4odGhpcyk9PTEgZWxzZSBrbGFzcyh0aGlzKQorICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCkKKyAgICAgICAgICAgIGVuZF93cyA9IHRva2VuLnBvcF90cmFpbGluZ193cygpCisgICAgICAgICAgICB0aGlzLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgIGlmIGVuZF93czoKKyAgICAgICAgICAgICAgICB5aWVsZCBrbGFzcyh0aGlzKQorICAgICAgICAgICAgICAgIHRoaXMgPSBbZW5kX3dzXQorICAgICAgICBpZiB0aGlzOgorICAgICAgICAgICAgeWllbGQgdGhpc1swXSBpZiBsZW4odGhpcyk9PTEgZWxzZSBrbGFzcyh0aGlzKQorCisgICAgZGVmIHN0YXJ0c3dpdGhfZndzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5zdGFydHN3aXRoX2Z3cygpCisKKyAgICBkZWYgcG9wX2xlYWRpbmdfZndzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ2Z3cyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wb3AoMCkKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0ucG9wX2xlYWRpbmdfZndzKCkKKworICAgIGRlZiBwb3BfdHJhaWxpbmdfd3Moc2VsZik6CisgICAgICAgIGlmIHNlbGZbLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9wKC0xKQorICAgICAgICByZXR1cm4gc2VsZlstMV0ucG9wX3RyYWlsaW5nX3dzKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBoYXNfZndzKHNlbGYpOgorICAgICAgICBmb3IgcGFydCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgcGFydC5oYXNfZndzOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGhhc19sZWFkaW5nX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmhhc19sZWFkaW5nX2NvbW1lbnQoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbW1lbnRzKHNlbGYpOgorICAgICAgICBjb21tZW50cyA9IFtdCisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmOgorICAgICAgICAgICAgY29tbWVudHMuZXh0ZW5kKHRva2VuLmNvbW1lbnRzKQorICAgICAgICByZXR1cm4gY29tbWVudHMKKworICAgIGRlZiBmb2xkKHNlbGYsICosIHBvbGljeSk6CisgICAgICAgICMgbWF4X2xpbmVfbGVuZ3RoIDAvTm9uZSBtZWFucyBubyBsaW1pdCwgaWU6IGluZmluaXRlbHkgbG9uZy4KKyAgICAgICAgbWF4bGVuID0gcG9saWN5Lm1heF9saW5lX2xlbmd0aCBvciBmbG9hdCgiK2luZiIpCisgICAgICAgIGZvbGRlZCA9IF9Gb2xkZWQobWF4bGVuLCBwb2xpY3kpCisgICAgICAgIHNlbGYuX2ZvbGQoZm9sZGVkKQorICAgICAgICBmb2xkZWQuZmluYWxpemUoKQorICAgICAgICByZXR1cm4gc3RyKGZvbGRlZCkKKworICAgIGRlZiBhc19lbmNvZGVkX3dvcmQoc2VsZiwgY2hhcnNldCk6CisgICAgICAgICMgVGhpcyB3b3JrcyBvbmx5IGZvciB0aGluZ3MgcmV0dXJuZWQgYnkgJ3BhcnRzJywgd2hpY2ggaW5jbHVkZQorICAgICAgICAjIHRoZSBsZWFkaW5nIGZ3cywgaWYgYW55LCB0aGF0IHNob3VsZCBiZSB1c2VkLgorICAgICAgICByZXMgPSBbXQorICAgICAgICB3cyA9IHNlbGYucG9wX2xlYWRpbmdfZndzKCkKKyAgICAgICAgaWYgd3M6CisgICAgICAgICAgICByZXMuYXBwZW5kKHdzKQorICAgICAgICB0cmFpbGVyID0gc2VsZi5wb3AoLTEpIGlmIHNlbGZbLTFdLnRva2VuX3R5cGU9PSdmd3MnIGVsc2UgJycKKyAgICAgICAgcmVzLmFwcGVuZChfZXcuZW5jb2RlKHN0cihzZWxmKSwgY2hhcnNldCkpCisgICAgICAgIHJlcy5hcHBlbmQodHJhaWxlcikKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKQorCisgICAgZGVmIGN0ZV9lbmNvZGUoc2VsZiwgY2hhcnNldCwgcG9saWN5KToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZjoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQocGFydC5jdGVfZW5jb2RlKGNoYXJzZXQsIHBvbGljeSkpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRzOgorICAgICAgICAgICAgdHN0ciA9IHN0cihwYXJ0KQorICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0cihwYXJ0KS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1bmtub3duLThiaXQnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBYWFg6IHRoaXMgc2hvdWxkIGJlIGEgcG9saWN5IHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1dGYtOCcKKyAgICAgICAgICAgICAgICB0c3RyID0gcGFydC5jdGVfZW5jb2RlKGNoYXJzZXQsIGZvbGRlZC5wb2xpY3kpCisgICAgICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQorICAgICAgICAgICAgaWYgZm9sZGVkLmFwcGVuZF9pZl9maXRzKHBhcnQsIHRzdHIpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIFBlZWwgb2ZmIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2UgaWYgYW55IGFuZCBtYWtlIGl0IHN0aWNreSwgdG8KKyAgICAgICAgICAgICMgYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgICAgICAgICAgd3MgPSBwYXJ0LnBvcF9sZWFkaW5nX2Z3cygpCisgICAgICAgICAgICBpZiB3cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIFBlZWwgb2ZmIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIG1ha2UgaXQgc3RpY2t5LCB0bworICAgICAgICAgICAgICAgICMgYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgICAgICAgICAgICAgIGZvbGRlZC5zdGlja3lzcGFjZSA9IHN0cihwYXJ0LnBvcCgwKSkKKyAgICAgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBwYXJ0Lmhhc19md3M6CisgICAgICAgICAgICAgICAgcGFydC5fZm9sZChmb2xkZWQpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgVGhlcmUgYXJlIG5vIGZvbGQgcG9pbnRzIGluIHRoaXMgb25lOyBpdCBpcyB0b28gbG9uZyBmb3IgYSBzaW5nbGUKKyAgICAgICAgICAgICMgbGluZSBhbmQgY2FuJ3QgYmUgc3BsaXQuLi53ZSBqdXN0IGhhdmUgdG8gcHV0IGl0IG9uIGl0cyBvd24gbGluZS4KKyAgICAgICAgICAgIGZvbGRlZC5hcHBlbmQodHN0cikKKyAgICAgICAgICAgIGZvbGRlZC5uZXdsaW5lKCkKKworICAgIGRlZiBwcHJpbnQoc2VsZiwgaW5kZW50PScnKToKKyAgICAgICAgcHJpbnQoJ1xuJy5qb2luKHNlbGYuX3BwKGluZGVudD0nJykpKQorCisgICAgZGVmIHBwc3RyKHNlbGYsIGluZGVudD0nJyk6CisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5fcHAoaW5kZW50PScnKSkKKworICAgIGRlZiBfcHAoc2VsZiwgaW5kZW50PScnKToKKyAgICAgICAgeWllbGQgJ3t9e30ve30oJy5mb3JtYXQoCisgICAgICAgICAgICBpbmRlbnQsCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgIHNlbGYudG9rZW5fdHlwZSkKKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cih0b2tlbiwgJ19wcCcpOgorICAgICAgICAgICAgICAgIHlpZWxkIChpbmRlbnQgKyAnICAgICEhIGludmFsaWQgZWxlbWVudCBpbiB0b2tlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpc3Q6IHshcn0nLmZvcm1hdCh0b2tlbikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHRva2VuLl9wcChpbmRlbnQrJyAgICAnKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgbGluZQorICAgICAgICBpZiBzZWxmLmRlZmVjdHM6CisgICAgICAgICAgICBleHRyYSA9ICcgRGVmZWN0czoge30nLmZvcm1hdChzZWxmLmRlZmVjdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleHRyYSA9ICcnCisgICAgICAgIHlpZWxkICd7fSl7fScuZm9ybWF0KGluZGVudCwgZXh0cmEpCisKKworY2xhc3MgV2hpdGVTcGFjZVRva2VuTGlzdChUb2tlbkxpc3QpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gJyAnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29tbWVudHMoc2VsZik6CisgICAgICAgIHJldHVybiBbeC5jb250ZW50IGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlPT0nY29tbWVudCddCisKKworY2xhc3MgVW5zdHJ1Y3R1cmVkVG9rZW5MaXN0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3Vuc3RydWN0dXJlZCcKKworICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICBpZiBhbnkoeC50b2tlbl90eXBlPT0nZW5jb2RlZC13b3JkJyBmb3IgeCBpbiBzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9mb2xkX2VuY29kZWQoZm9sZGVkKQorICAgICAgICAjIEhlcmUgd2UgY2FuIGhhdmUgZWl0aGVyIGEgcHVyZSBBU0NJSSBzdHJpbmcgdGhhdCBtYXkgb3IgbWF5IG5vdAorICAgICAgICAjIGhhdmUgc3Vycm9nYXRlZXNjYXBlIGVuY29kZWQgYnl0ZXMsIG9yIGEgdW5pY29kZSBzdHJpbmcuCisgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CisgICAgICAgICAgICB0c3RyID0gc3RyKHBhcnQpCisgICAgICAgICAgICBpc19ldyA9IEZhbHNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBhbnkoaXNpbnN0YW5jZSh4LCBlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gcGFydC5hbGxfZGVmZWN0cyk6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndW5rbm93bi04Yml0JworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndXRmLTgnCisgICAgICAgICAgICAgICAgaWYgbGFzdF9ldyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSd2ZSBhbHJlYWR5IGRvbmUgYW4gRVcsIGNvbWJpbmUgdGhpcyBvbmUgd2l0aCBpdAorICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZXJlJ3Mgcm9vbS4KKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBnZXRfdW5zdHJ1Y3R1cmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgJycuam9pbihmb2xkZWQuY3VycmVudFtsYXN0X2V3Ol0rW3RzdHJdKSkuYXNfZW5jb2RlZF93b3JkKGNoYXJzZXQpCisgICAgICAgICAgICAgICAgICAgIG9sZGxhc3RsZW4gPSBzdW0obGVuKHgpIGZvciB4IGluIGZvbGRlZC5jdXJyZW50WzpsYXN0X2V3XSkKKyAgICAgICAgICAgICAgICAgICAgc2NodW5rID0gc3RyKGNodW5rKQorICAgICAgICAgICAgICAgICAgICBsY2h1bmsgPSBsZW4oc2NodW5rKQorICAgICAgICAgICAgICAgICAgICBpZiBvbGRsYXN0bGVuICsgbGNodW5rIDw9IGZvbGRlZC5tYXhsZW46CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgZm9sZGVkLmN1cnJlbnRbbGFzdF9ldzpdCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZWQuYXBwZW5kKHNjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlZC5sYXN0bGVuID0gb2xkbGFzdGxlbiArIGxjaHVuaworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICB0c3RyID0gcGFydC5hc19lbmNvZGVkX3dvcmQoY2hhcnNldCkKKyAgICAgICAgICAgICAgICBpc19ldyA9IFRydWUKKyAgICAgICAgICAgIGlmIGZvbGRlZC5hcHBlbmRfaWZfZml0cyhwYXJ0LCB0c3RyKToKKyAgICAgICAgICAgICAgICBpZiBpc19ldzoKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IGxlbihmb2xkZWQuY3VycmVudCkgLSAxCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGlzX2V3IG9yIGxhc3RfZXc6CisgICAgICAgICAgICAgICAgIyBJdCdzIHRvbyBiaWcgdG8gZml0IG9uIHRoZSBsaW5lLCBidXQgc2luY2Ugd2UndmUKKyAgICAgICAgICAgICAgICAjIGdvdCBlbmNvZGVkIHdvcmRzIHdlIGNhbiB1c2UgZW5jb2RlZCB3b3JkIGZvbGRpbmcuCisgICAgICAgICAgICAgICAgcGFydC5fZm9sZF9hc19ldyhmb2xkZWQpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgUGVlbCBvZmYgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSBpZiBhbnkgYW5kIG1ha2UgaXQgc3RpY2t5LCB0bworICAgICAgICAgICAgIyBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgICAgICB3cyA9IHBhcnQucG9wX2xlYWRpbmdfZndzKCkKKyAgICAgICAgICAgIGlmIHdzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGZvbGRlZC5zdGlja3lzcGFjZSA9IHN0cih3cykKKyAgICAgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBwYXJ0Lmhhc19md3M6CisgICAgICAgICAgICAgICAgcGFydC5mb2xkKGZvbGRlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBJdCBjYW4ndCBiZSBzcGxpdC4uLndlIGp1c3QgaGF2ZSB0byBwdXQgaXQgb24gaXRzIG93biBsaW5lLgorICAgICAgICAgICAgZm9sZGVkLmFwcGVuZCh0c3RyKQorICAgICAgICAgICAgZm9sZGVkLm5ld2xpbmUoKQorICAgICAgICAgICAgbGFzdF9ldyA9IE5vbmUKKworICAgIGRlZiBjdGVfZW5jb2RlKHNlbGYsIGNoYXJzZXQsIHBvbGljeSk6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGY6CisgICAgICAgICAgICBzcGFydCA9IHN0cihwYXJ0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNwYXJ0LmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3BhcnQpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGlmIGxhc3RfZXcgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChwYXJ0LmN0ZV9lbmNvZGUoY2hhcnNldCwgcG9saWN5KSkKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IGxlbihyZXMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGwgPSBnZXRfdW5zdHJ1Y3R1cmVkKCcnLmpvaW4ocmVzW2xhc3RfZXc6XSArIFtzcGFydF0pKQorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHRsLmFzX2VuY29kZWRfd29yZCgpKQorICAgICAgICByZXR1cm4gJycuam9pbihyZXMpCisKKworY2xhc3MgUGhyYXNlKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3BocmFzZScKKworICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICAjIEFzIHdpdGggVW5zdHJ1Y3R1cmVkLCB3ZSBjYW4gaGF2ZSBwdXJlIEFTQ0lJIHdpdGggb3Igd2l0aG91dAorICAgICAgICAjIHN1cnJvZ2F0ZWVzY2FwZSBlbmNvZGVkIGJ5dGVzLCBvciB3ZSBjb3VsZCBoYXZlIHVuaWNvZGUuICBCdXQgdGhpcworICAgICAgICAjIGNhc2UgaXMgbW9yZSBjb21wbGljYXRlZCwgc2luY2Ugd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhlIHZhcmlvdXMKKyAgICAgICAgIyBzdWItdG9rZW4gdHlwZXMgYW5kIGhvdyB0aGV5IGNhbiBiZSBjb21wb3NlZCBpbiB0aGUgZmFjZSBvZgorICAgICAgICAjIHVuaWNvZGUtdGhhdC1uZWVkcy1DVEUtZW5jb2RpbmcsIGFuZCB0aGUgZmFjdCB0aGF0IGlmIGEgdG9rZW4gYQorICAgICAgICAjIGNvbW1lbnQgdGhhdCBiZWNvbWVzIGEgYmFycmllciBhY3Jvc3Mgd2hpY2ggd2UgY2FuJ3QgY29tcG9zZSBlbmNvZGVkCisgICAgICAgICMgd29yZHMuCisgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CisgICAgICAgICAgICB0c3RyID0gc3RyKHBhcnQpCisgICAgICAgICAgICB0bGVuID0gbGVuKHRzdHIpCisgICAgICAgICAgICBoYXNfZXcgPSBGYWxzZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0cihwYXJ0KS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1bmtub3duLThiaXQnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1dGYtOCcKKyAgICAgICAgICAgICAgICBpZiBsYXN0X2V3IGlzIG5vdCBOb25lIGFuZCBub3QgcGFydC5oYXNfbGVhZGluZ19jb21tZW50KCk6CisgICAgICAgICAgICAgICAgICAgICMgV2UndmUgYWxyZWFkeSBkb25lIGFuIEVXLCBsZXQncyBzZWUgaWYgd2UgY2FuIGNvbWJpbmUKKyAgICAgICAgICAgICAgICAgICAgIyB0aGlzIG9uZSB3aXRoIGl0LiAgVGhlIGxhc3RfZXcgbG9naWMgZW5zdXJlcyB0aGF0IGFsbCB3ZQorICAgICAgICAgICAgICAgICAgICAjIGhhdmUgYXQgdGhpcyBwb2ludCBpcyBhdG9tcywgbm8gY29tbWVudHMgb3IgcXVvdGVkCisgICAgICAgICAgICAgICAgICAgICMgc3RyaW5ncy4gIFNvIHdlIGNhbiB0cmVhdCB0aGUgdGV4dCBiZXR3ZWVuIHRoZSBsYXN0CisgICAgICAgICAgICAgICAgICAgICMgZW5jb2RlZCB3b3JkIGFuZCB0aGUgY29udGVudCBvZiB0aGlzIHRva2VuIGFzCisgICAgICAgICAgICAgICAgICAgICMgdW5zdHJ1Y3R1cmVkIHRleHQsIGFuZCB0aGluZ3Mgd2lsbCB3b3JrIGNvcnJlY3RseS4gIEJ1dAorICAgICAgICAgICAgICAgICAgICAjIHdlIGhhdmUgdG8gc3RyaXAgb2ZmIGFueSB0cmFpbGluZyBjb21tZW50IG9uIHRoaXMgdG9rZW4KKyAgICAgICAgICAgICAgICAgICAgIyBmaXJzdCwgYW5kIGlmIGl0IGlzIGEgcXVvdGVkIHN0cmluZyB3ZSBoYXZlIHRvIHB1bGwgb3V0CisgICAgICAgICAgICAgICAgICAgICMgdGhlIGNvbnRlbnQgKHdlJ3JlIGVuY29kaW5nIGl0LCBzbyBpdCBubyBsb25nZXIgbmVlZHMgdG8KKyAgICAgICAgICAgICAgICAgICAgIyBiZSBxdW90ZWQpLgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJ0Wy0xXS50b2tlbl90eXBlID09ICdjZndzJyBhbmQgcGFydC5jb21tZW50czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IHBhcnQucG9wKC0xKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyID0gJycKKyAgICAgICAgICAgICAgICAgICAgZm9yIGksIHRva2VuIGluIGVudW1lcmF0ZShwYXJ0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydFtpXSA9IFVuc3RydWN0dXJlZFRva2VuTGlzdCh0b2tlbls6XSkKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBnZXRfdW5zdHJ1Y3R1cmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgJycuam9pbihmb2xkZWQuY3VycmVudFtsYXN0X2V3Ol0rW3RzdHJdKSkuYXNfZW5jb2RlZF93b3JkKGNoYXJzZXQpCisgICAgICAgICAgICAgICAgICAgIHNjaHVuayA9IHN0cihjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgbGNodW5rID0gbGVuKHNjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgaWYgbGFzdF9ldyArIGxjaHVuayA8PSBmb2xkZWQubWF4bGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGZvbGRlZC5jdXJyZW50W2xhc3RfZXc6XQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVkLmFwcGVuZChzY2h1bmspCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZWQubGFzdGxlbiA9IHN1bShsZW4oeCkgZm9yIHggaW4gZm9sZGVkLmN1cnJlbnQpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHRzdHIgPSBwYXJ0LmFzX2VuY29kZWRfd29yZChjaGFyc2V0KQorICAgICAgICAgICAgICAgIHRsZW4gPSBsZW4odHN0cikKKyAgICAgICAgICAgICAgICBoYXNfZXcgPSBUcnVlCisgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCwgdHN0cik6CisgICAgICAgICAgICAgICAgaWYgaGFzX2V3IGFuZCBub3QgcGFydC5jb21tZW50czoKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IGxlbihmb2xkZWQuY3VycmVudCkgLSAxCisgICAgICAgICAgICAgICAgZWxpZiBwYXJ0LmNvbW1lbnRzIG9yIHBhcnQudG9rZW5fdHlwZSA9PSAncXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgICMgSWYgYSBjb21tZW50IGlzIGludm9sdmVkIHdlIGNhbid0IGNvbWJpbmUgRVdzLiAgQW5kIGlmIGEKKyAgICAgICAgICAgICAgICAgICAgIyBxdW90ZWQgc3RyaW5nIGlzIGludm9sdmVkLCBpdCdzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IHRvCisgICAgICAgICAgICAgICAgICAgICMgdHJ5IHRvIGNvbWJpbmUgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcGFydC5fZm9sZChmb2xkZWQpCisKKyAgICBkZWYgY3RlX2VuY29kZShzZWxmLCBjaGFyc2V0LCBwb2xpY3kpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBsYXN0X2V3ID0gTm9uZQorICAgICAgICBpc19ldyA9IEZhbHNlCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGY6CisgICAgICAgICAgICBzcGFydCA9IHN0cihwYXJ0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNwYXJ0LmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3BhcnQpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGlzX2V3ID0gVHJ1ZQorICAgICAgICAgICAgICAgIGlmIGxhc3RfZXcgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHBhcnQuY29tbWVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2V3ID0gbGVuKHJlcykKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChwYXJ0LmN0ZV9lbmNvZGUoY2hhcnNldCwgcG9saWN5KSkKKyAgICAgICAgICAgICAgICBlbGlmIG5vdCBwYXJ0Lmhhc19sZWFkaW5nX2NvbW1lbnQoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgcGFydFstMV0udG9rZW5fdHlwZSA9PSAnY2Z3cycgYW5kIHBhcnQuY29tbWVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5kZXIgPSBwYXJ0LnBvcCgtMSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9ICcnCisgICAgICAgICAgICAgICAgICAgIGZvciBpLCB0b2tlbiBpbiBlbnVtZXJhdGUocGFydCk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRbaV0gPSBVbnN0cnVjdHVyZWRUb2tlbkxpc3QodG9rZW5bOl0pCisgICAgICAgICAgICAgICAgICAgIHRsID0gZ2V0X3Vuc3RydWN0dXJlZCgnJy5qb2luKHJlc1tsYXN0X2V3Ol0gKyBbc3BhcnRdKSkKKyAgICAgICAgICAgICAgICAgICAgcmVzW2xhc3RfZXc6XSA9IFt0bC5hc19lbmNvZGVkX3dvcmQoY2hhcnNldCldCisgICAgICAgICAgICBpZiBwYXJ0LmNvbW1lbnRzIG9yIChub3QgaXNfZXcgYW5kIHBhcnQudG9rZW5fdHlwZSA9PSAncXVvdGVkLXN0cmluZycpOgorICAgICAgICAgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworY2xhc3MgV29yZChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICd3b3JkJworCisKK2NsYXNzIENGV1NMaXN0KFdoaXRlU3BhY2VUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdjZndzJworCisgICAgZGVmIGhhc19sZWFkaW5nX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHJldHVybiBib29sKHNlbGYuY29tbWVudHMpCisKKworY2xhc3MgQXRvbShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhdG9tJworCisKK2NsYXNzIFRva2VuKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3Rva2VuJworCisKK2NsYXNzIEVuY29kZWRXb3JkKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2VuY29kZWQtd29yZCcKKyAgICBjdGUgPSBOb25lCisgICAgY2hhcnNldCA9IE5vbmUKKyAgICBsYW5nID0gTm9uZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGVuY29kZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY3RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY3RlCisgICAgICAgIF9ldy5lbmNvZGUoc3RyKHNlbGYpLCBzZWxmLmNoYXJzZXQpCisKKworCitjbGFzcyBRdW90ZWRTdHJpbmcoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAncXVvdGVkLXN0cmluZycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZW50KHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LnZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcXVvdGVkX3ZhbHVlKHNlbGYpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyKHgpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHgudmFsdWUpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzdHJpcHBlZF92YWx1ZShzZWxmKToKKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi52YWx1ZQorCisKK2NsYXNzIEJhcmVRdW90ZWRTdHJpbmcoUXVvdGVkU3RyaW5nKToKKworICAgIHRva2VuX3R5cGUgPSAnYmFyZS1xdW90ZWQtc3RyaW5nJworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBxdW90ZV9zdHJpbmcoJycuam9pbihzdHIoeCkgZm9yIHggaW4gc2VsZikpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmKQorCisKK2NsYXNzIENvbW1lbnQoV2hpdGVTcGFjZVRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2NvbW1lbnQnCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3VtKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIigiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5xdW90ZSh4KSBmb3IgeCBpbiBzZWxmXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIikiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBbXSkpCisKKyAgICBkZWYgcXVvdGUoc2VsZiwgdmFsdWUpOgorICAgICAgICBpZiB2YWx1ZS50b2tlbl90eXBlID09ICdjb21tZW50JzoKKyAgICAgICAgICAgIHJldHVybiBzdHIodmFsdWUpCisgICAgICAgIHJldHVybiBzdHIodmFsdWUpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKS5yZXBsYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJywgJ1woJykucmVwbGFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsICdcKScpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udGVudChzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29tbWVudHMoc2VsZik6CisgICAgICAgIHJldHVybiBbc2VsZi5jb250ZW50XQorCitjbGFzcyBBZGRyZXNzTGlzdChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhZGRyZXNzLWxpc3QnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcmVzc2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdhZGRyZXNzJ10KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzdW0oKHgubWFpbGJveGVzCisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlPT0nYWRkcmVzcycpLCBbXSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VtKCh4LmFsbF9tYWlsYm94ZXMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdhZGRyZXNzJyksIFtdKQorCisKK2NsYXNzIEFkZHJlc3MoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYWRkcmVzcycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnZ3JvdXAnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0uZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ21haWxib3gnOgorICAgICAgICAgICAgcmV0dXJuIFtzZWxmWzBdXQorICAgICAgICBlbGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnaW52YWxpZC1tYWlsYm94JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlswXS5tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ21haWxib3gnOgorICAgICAgICAgICAgcmV0dXJuIFtzZWxmWzBdXQorICAgICAgICBlbGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnaW52YWxpZC1tYWlsYm94JzoKKyAgICAgICAgICAgIHJldHVybiBbc2VsZlswXV0KKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWxsX21haWxib3hlcworCitjbGFzcyBNYWlsYm94TGlzdChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdtYWlsYm94LWxpc3QnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbGJveGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdtYWlsYm94J10KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlIGluICgnbWFpbGJveCcsICdpbnZhbGlkLW1haWxib3gnKV0KKworCitjbGFzcyBHcm91cExpc3QoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnZ3JvdXAtbGlzdCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmIG9yIHNlbGZbMF0udG9rZW5fdHlwZSAhPSAnbWFpbGJveC1saXN0JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlswXS5tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZiBvciBzZWxmWzBdLnRva2VuX3R5cGUgIT0gJ21haWxib3gtbGlzdCc6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWxsX21haWxib3hlcworCisKK2NsYXNzIEdyb3VwKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gImdyb3VwIgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1haWxib3hlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZlsyXS50b2tlbl90eXBlICE9ICdncm91cC1saXN0JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlsyXS5tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzJdLnRva2VuX3R5cGUgIT0gJ2dyb3VwLWxpc3QnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHJldHVybiBzZWxmWzJdLmFsbF9tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmRpc3BsYXlfbmFtZQorCisKK2NsYXNzIE5hbWVBZGRyKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ25hbWUtYWRkcicKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLmxvY2FsX3BhcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWy0xXS5kb21haW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByb3V0ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLnJvdXRlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlstMV0uYWRkcl9zcGVjCisKKworY2xhc3MgQW5nbGVBZGRyKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2FuZ2xlLWFkZHInCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAnYWRkci1zcGVjJzoKKyAgICAgICAgICAgICAgICByZXR1cm4geC5sb2NhbF9wYXJ0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdhZGRyLXNwZWMnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LmRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJvdXRlKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdvYnMtcm91dGUnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LmRvbWFpbnMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2FkZHItc3BlYyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHguYWRkcl9zcGVjCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJzw+JworCisKK2NsYXNzIE9ic1JvdXRlKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ29icy1yb3V0ZScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW5zKHNlbGYpOgorICAgICAgICByZXR1cm4gW3guZG9tYWluIGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlID09ICdkb21haW4nXQorCisKK2NsYXNzIE1haWxib3goVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbWFpbGJveCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnbmFtZS1hZGRyJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLmRpc3BsYXlfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxvY2FsX3BhcnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmxvY2FsX3BhcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJvdXRlKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ25hbWUtYWRkcic6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS5yb3V0ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWRkcl9zcGVjCisKKworY2xhc3MgSW52YWxpZE1haWxib3goVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnaW52YWxpZC1tYWlsYm94JworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGxvY2FsX3BhcnQgPSBkb21haW4gPSByb3V0ZSA9IGFkZHJfc3BlYyA9IGRpc3BsYXlfbmFtZQorCisKK2NsYXNzIERvbWFpbihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb21haW4nCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdXBlcigpLnZhbHVlLnNwbGl0KCkpCisKKworY2xhc3MgRG90QXRvbShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb3QtYXRvbScKKworCitjbGFzcyBEb3RBdG9tVGV4dChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb3QtYXRvbS10ZXh0JworCisKK2NsYXNzIEFkZHJTcGVjKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2FkZHItc3BlYycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5sb2NhbF9wYXJ0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2VsZikgPCAzOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLmRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2VsZikgPCAzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0udmFsdWUKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0udmFsdWUucnN0cmlwKCkrc2VsZlsxXS52YWx1ZStzZWxmWzJdLnZhbHVlLmxzdHJpcCgpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICBuYW1lc2V0ID0gc2V0KHNlbGYubG9jYWxfcGFydCkKKyAgICAgICAgaWYgbGVuKG5hbWVzZXQpID4gbGVuKG5hbWVzZXQtRE9UX0FUT01fRU5EUyk6CisgICAgICAgICAgICBscCA9IHF1b3RlX3N0cmluZyhzZWxmLmxvY2FsX3BhcnQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBscCA9IHNlbGYubG9jYWxfcGFydAorICAgICAgICBpZiBzZWxmLmRvbWFpbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBscCArICdAJyArIHNlbGYuZG9tYWluCisgICAgICAgIHJldHVybiBscAorCisKK2NsYXNzIE9ic0xvY2FsUGFydChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdvYnMtbG9jYWwtcGFydCcKKworCitjbGFzcyBEaXNwbGF5TmFtZShQaHJhc2UpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkaXNwbGF5LW5hbWUnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXMgPSBUb2tlbkxpc3Qoc2VsZikKKyAgICAgICAgaWYgcmVzWzBdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgcmVzLnBvcCgwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgcmVzWzBdWzBdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgICAgIHJlc1swXSA9IFRva2VuTGlzdChyZXNbMF1bMTpdKQorICAgICAgICBpZiByZXNbLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgcmVzLnBvcCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiByZXNbLTFdWy0xXS50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgICAgICByZXNbLTFdID0gVG9rZW5MaXN0KHJlc1stMV1bOi0xXSkKKyAgICAgICAgcmV0dXJuIHJlcy52YWx1ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICBxdW90ZSA9IEZhbHNlCisgICAgICAgIGlmIHNlbGYuZGVmZWN0czoKKyAgICAgICAgICAgIHF1b3RlID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ3F1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICBxdW90ZSA9IFRydWUKKyAgICAgICAgaWYgcXVvdGU6CisgICAgICAgICAgICBwcmUgPSBwb3N0ID0gJycKKyAgICAgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZT09J2Nmd3MnIG9yIHNlbGZbMF1bMF0udG9rZW5fdHlwZT09J2Nmd3MnOgorICAgICAgICAgICAgICAgIHByZSA9ICcgJworICAgICAgICAgICAgaWYgc2VsZlstMV0udG9rZW5fdHlwZT09J2Nmd3MnIG9yIHNlbGZbLTFdWy0xXS50b2tlbl90eXBlPT0nY2Z3cyc6CisgICAgICAgICAgICAgICAgcG9zdCA9ICcgJworICAgICAgICAgICAgcmV0dXJuIHByZStxdW90ZV9zdHJpbmcoc2VsZi5kaXNwbGF5X25hbWUpK3Bvc3QKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnZhbHVlCisKKworY2xhc3MgTG9jYWxQYXJ0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2xvY2FsLXBhcnQnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAicXVvdGVkLXN0cmluZyI6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS5xdW90ZWRfdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLnZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgIyBTdHJpcCB3aGl0ZXNwYWNlIGZyb20gZnJvbnQsIGJhY2ssIGFuZCBhcm91bmQgZG90cy4KKyAgICAgICAgcmVzID0gW0RPVF0KKyAgICAgICAgbGFzdCA9IERPVAorICAgICAgICBsYXN0X2lzX3RsID0gRmFsc2UKKyAgICAgICAgZm9yIHRvayBpbiBzZWxmWzBdICsgW0RPVF06CisgICAgICAgICAgICBpZiB0b2sudG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIChsYXN0X2lzX3RsIGFuZCB0b2sudG9rZW5fdHlwZSA9PSAnZG90JyBhbmQKKyAgICAgICAgICAgICAgICAgICAgbGFzdFstMV0udG9rZW5fdHlwZSA9PSAnY2Z3cycpOgorICAgICAgICAgICAgICAgIHJlc1stMV0gPSBUb2tlbkxpc3QobGFzdFs6LTFdKQorICAgICAgICAgICAgaXNfdGwgPSBpc2luc3RhbmNlKHRvaywgVG9rZW5MaXN0KQorICAgICAgICAgICAgaWYgKGlzX3RsIGFuZCBsYXN0LnRva2VuX3R5cGUgPT0gJ2RvdCcgYW5kCisgICAgICAgICAgICAgICAgICAgIHRva1swXS50b2tlbl90eXBlID09ICdjZndzJyk6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChUb2tlbkxpc3QodG9rWzE6XSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQodG9rKQorICAgICAgICAgICAgbGFzdCA9IHJlc1stMV0KKyAgICAgICAgICAgIGxhc3RfaXNfdGwgPSBpc190bAorICAgICAgICByZXMgPSBUb2tlbkxpc3QocmVzWzE6LTFdKQorICAgICAgICByZXR1cm4gcmVzLnZhbHVlCisKKworY2xhc3MgRG9tYWluTGl0ZXJhbChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb21haW4tbGl0ZXJhbCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN1cGVyKCkudmFsdWUuc3BsaXQoKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpcChzZWxmKToKKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAncHRleHQnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LnZhbHVlCisKKworY2xhc3MgTUlNRVZlcnNpb24oVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbWltZS12ZXJzaW9uJworICAgIG1ham9yID0gTm9uZQorICAgIG1pbm9yID0gTm9uZQorCisKK2NsYXNzIFBhcmFtZXRlcihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdwYXJhbWV0ZXInCisgICAgc2VjdGlvbmVkID0gRmFsc2UKKyAgICBleHRlbmRlZCA9IEZhbHNlCisgICAgY2hhcnNldCA9ICd1cy1hc2NpaScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZWN0aW9uX251bWJlcihzZWxmKToKKyAgICAgICAgIyBCZWNhdXNlIHRoZSBmaXJzdCB0b2tlbiwgdGhlIGF0dHJpYnV0ZSAobmFtZSkgZWF0cyBDRldTLCB0aGUgc2Vjb25kCisgICAgICAgICMgdG9rZW4gaXMgYWx3YXlzIHRoZSBzZWN0aW9uIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAgICAgcmV0dXJuIHNlbGZbMV0ubnVtYmVyIGlmIHNlbGYuc2VjdGlvbmVkIGVsc2UgMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtX3ZhbHVlKHNlbGYpOgorICAgICAgICAjIFRoaXMgaXMgcGFydCBvZiB0aGUgImhhbmRsZSBxdW90ZWQgZXh0ZW5kZWQgcGFyYW1ldGVycyIgaGFjay4KKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICd2YWx1ZSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnN0cmlwcGVkX3ZhbHVlCisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdxdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW46CisgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAndmFsdWUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4uc3RyaXBwZWRfdmFsdWUKKyAgICAgICAgcmV0dXJuICcnCisKKworY2xhc3MgSW52YWxpZFBhcmFtZXRlcihQYXJhbWV0ZXIpOgorCisgICAgdG9rZW5fdHlwZSA9ICdpbnZhbGlkLXBhcmFtZXRlcicKKworCitjbGFzcyBBdHRyaWJ1dGUoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYXR0cmlidXRlJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN0cmlwcGVkX3ZhbHVlKHNlbGYpOgorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUuZW5kc3dpdGgoJ2F0dHJ0ZXh0Jyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnZhbHVlCisKK2NsYXNzIFNlY3Rpb24oVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnc2VjdGlvbicKKyAgICBudW1iZXIgPSBOb25lCisKKworY2xhc3MgVmFsdWUoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAndmFsdWUnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3RyaXBwZWRfdmFsdWUoc2VsZik6CisgICAgICAgIHRva2VuID0gc2VsZlswXQorICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgIHRva2VuID0gc2VsZlsxXQorICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlLmVuZHN3aXRoKAorICAgICAgICAgICAgICAgICgncXVvdGVkLXN0cmluZycsICdhdHRyaWJ1dGUnLCAnZXh0ZW5kZWQtYXR0cmlidXRlJykpOgorICAgICAgICAgICAgcmV0dXJuIHRva2VuLnN0cmlwcGVkX3ZhbHVlCisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisKKworY2xhc3MgTWltZVBhcmFtZXRlcnMoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbWltZS1wYXJhbWV0ZXJzJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtcyhzZWxmKToKKyAgICAgICAgIyBUaGUgUkZDIHNwZWNpZmljYWxseSBzdGF0ZXMgdGhhdCB0aGUgb3JkZXJpbmcgb2YgcGFyYW1ldGVycyBpcyBub3QKKyAgICAgICAgIyBndWFyYW50ZWVkIGFuZCBtYXkgYmUgcmVvcmRlcmVkIGJ5IHRoZSB0cmFuc3BvcnQgbGF5ZXIuICBTbyB3ZSBoYXZlCisgICAgICAgICMgdG8gYXNzdW1lIHRoZSBSRkMgMjIzMSBwaWVjZXMgY2FuIGNvbWUgaW4gYW55IG9yZGVyLiAgSG93ZXZlciwgd2UKKyAgICAgICAgIyBvdXRwdXQgdGhlbSBpbiB0aGUgb3JkZXIgdGhhdCB3ZSBmaXJzdCBzZWUgYSBnaXZlbiBuYW1lLCB3aGljaCBnaXZlcworICAgICAgICAjIHVzIGEgc3RhYmxlIF9fc3RyX18uCisgICAgICAgIHBhcmFtcyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiBub3QgdG9rZW4udG9rZW5fdHlwZS5lbmRzd2l0aCgncGFyYW1ldGVyJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHRva2VuWzBdLnRva2VuX3R5cGUgIT0gJ2F0dHJpYnV0ZSc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG5hbWUgPSB0b2tlblswXS52YWx1ZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBwYXJhbXM6CisgICAgICAgICAgICAgICAgcGFyYW1zW25hbWVdID0gW10KKyAgICAgICAgICAgIHBhcmFtc1tuYW1lXS5hcHBlbmQoKHRva2VuLnNlY3Rpb25fbnVtYmVyLCB0b2tlbikpCisgICAgICAgIGZvciBuYW1lLCBwYXJ0cyBpbiBwYXJhbXMuaXRlbXMoKToKKyAgICAgICAgICAgIHBhcnRzID0gc29ydGVkKHBhcnRzKQorICAgICAgICAgICAgIyBYWFg6IHRoZXJlIG1pZ2h0IGJlIG1vcmUgcmVjb3Zlcnkgd2UgY291bGQgZG8gaGVyZSBpZiwgZm9yCisgICAgICAgICAgICAjIGV4YW1wbGUsIHRoaXMgaXMgcmVhbGx5IGEgY2FzZSBvZiBhIGR1cGxpY2F0ZSBhdHRyaWJ1dGUgbmFtZS4KKyAgICAgICAgICAgIHZhbHVlX3BhcnRzID0gW10KKyAgICAgICAgICAgIGNoYXJzZXQgPSBwYXJ0c1swXVsxXS5jaGFyc2V0CisgICAgICAgICAgICBmb3IgaSwgKHNlY3Rpb25fbnVtYmVyLCBwYXJhbSkgaW4gZW51bWVyYXRlKHBhcnRzKToKKyAgICAgICAgICAgICAgICBpZiBzZWN0aW9uX251bWJlciAhPSBpOgorICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbnNpc3RlbnQgbXVsdGlwYXJ0IHBhcmFtZXRlciBudW1iZXJpbmciKSkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcmFtLnBhcmFtX3ZhbHVlCisgICAgICAgICAgICAgICAgaWYgcGFyYW0uZXh0ZW5kZWQ6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdXJsbGliLnBhcnNlLnVucXVvdGVfdG9fYnl0ZXModmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHNvdXJjZSBoYWQgc3Vycm9nYXRlIGVzY2FwZWQgYnl0ZXMuICBXaGF0IHdlIGRvIG5vdworICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyBhIGJpdCBvZiBhbiBvcGVuIHF1ZXN0aW9uLiAgSSdtIG5vdCBzdXJlIHRoaXMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGJlc3QgY2hvaWNlLCBidXQgaXQgaXMgd2hhdCB0aGUgb2xkIGFsZ29yaXRobSBkaWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdXJsbGliLnBhcnNlLnVucXVvdGUodmFsdWUsIGVuY29kaW5nPSdsYXRpbi0xJykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmRlY29kZShjaGFyc2V0LCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFhYWDogdGhlcmUgc2hvdWxkIHJlYWxseSBiZSBhIGN1c3RvbSBkZWZlY3QgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmtub3duIGNoYXJhY3RlciBzZXQgdG8gbWFrZSBpdCBlYXN5IHRvIGZpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIG90aGVyd2lzZSB1bmtub3duIGNoYXJzZXQgaXMgYSBzaWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZhaWx1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5kZWNvZGUoJ3VzLWFzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXModmFsdWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KCkpCisgICAgICAgICAgICAgICAgdmFsdWVfcGFydHMuYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSAnJy5qb2luKHZhbHVlX3BhcnRzKQorICAgICAgICAgICAgeWllbGQgbmFtZSwgdmFsdWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBwYXJhbXMgPSBbXQorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5wYXJhbXM6CisgICAgICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCd7fT17fScuZm9ybWF0KG5hbWUsIHF1b3RlX3N0cmluZyh2YWx1ZSkpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKG5hbWUpCisgICAgICAgIHBhcmFtcyA9ICc7ICcuam9pbihwYXJhbXMpCisgICAgICAgIHJldHVybiAnICcgKyBwYXJhbXMgaWYgcGFyYW1zIGVsc2UgJycKKworCitjbGFzcyBQYXJhbWV0ZXJpemVkSGVhZGVyVmFsdWUoVG9rZW5MaXN0KToKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJhbXMoc2VsZik6CisgICAgICAgIGZvciB0b2tlbiBpbiByZXZlcnNlZChzZWxmKToKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ21pbWUtcGFyYW1ldGVycyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnBhcmFtcworICAgICAgICByZXR1cm4ge30KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJ0cyhzZWxmKToKKyAgICAgICAgaWYgc2VsZiBhbmQgc2VsZlstMV0udG9rZW5fdHlwZSA9PSAnbWltZS1wYXJhbWV0ZXJzJzoKKyAgICAgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0byBzdGFydCBhIG5ldyBsaW5lIGlmIGFsbCBvZiB0aGUgcGFyYW1zIGRvbid0IGZpdAorICAgICAgICAgICAgIyBhZnRlciB0aGUgdmFsdWUsIHNvIHVud3JhcCB0aGUgcGFyYW1ldGVyIGxpc3QuCisgICAgICAgICAgICByZXR1cm4gVG9rZW5MaXN0KHNlbGZbOi0xXSArIHNlbGZbLTFdKQorICAgICAgICByZXR1cm4gVG9rZW5MaXN0KHNlbGYpLnBhcnRzCisKKworY2xhc3MgQ29udGVudFR5cGUoUGFyYW1ldGVyaXplZEhlYWRlclZhbHVlKToKKworICAgIHRva2VuX3R5cGUgPSAnY29udGVudC10eXBlJworICAgIG1haW50eXBlID0gJ3RleHQnCisgICAgc3VidHlwZSA9ICdwbGFpbicKKworCitjbGFzcyBDb250ZW50RGlzcG9zaXRpb24oUGFyYW1ldGVyaXplZEhlYWRlclZhbHVlKToKKworICAgIHRva2VuX3R5cGUgPSAnY29udGVudC1kaXNwb3NpdGlvbicKKyAgICBjb250ZW50X2Rpc3Bvc2l0aW9uID0gTm9uZQorCisKK2NsYXNzIENvbnRlbnRUcmFuc2ZlckVuY29kaW5nKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnCisgICAgY3RlID0gJzdiaXQnCisKKworY2xhc3MgSGVhZGVyTGFiZWwoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnaGVhZGVyLWxhYmVsJworCisKK2NsYXNzIEhlYWRlcihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdoZWFkZXInCisKKyAgICBkZWYgX2ZvbGQoc2VsZiwgZm9sZGVkKToKKyAgICAgICAgZm9sZGVkLmFwcGVuZChzdHIoc2VsZi5wb3AoMCkpKQorICAgICAgICBmb2xkZWQubGFzdGxlbiA9IGxlbihmb2xkZWQuY3VycmVudFswXSkKKyAgICAgICAgIyBUaGUgZmlyc3QgbGluZSBvZiB0aGUgaGVhZGVyIGlzIGRpZmZlcmVudCBmcm9tIGFsbCBvdGhlcnM6IHdlIGRvbid0CisgICAgICAgICMgd2FudCB0byBzdGFydCBhIG5ldyBvYmplY3Qgb24gYSBuZXcgbGluZSBpZiBpdCBoYXMgYW55IGZvbGQgcG9pbnRzIGluCisgICAgICAgICMgaXQgdGhhdCB3b3VsZCBhbGxvdyBwYXJ0IG9mIGl0IHRvIGJlIG9uIHRoZSBmaXJzdCBoZWFkZXIgbGluZS4KKyAgICAgICAgIyBGdXJ0aGVyLCBpZiB0aGUgZmlyc3QgZm9sZCBwb2ludCB3b3VsZCBmaXQgb24gdGhlIG5ldyBsaW5lLCB3ZSB3YW50CisgICAgICAgICMgdG8gZG8gdGhhdCwgYnV0IGlmIGl0IGRvZXNuJ3Qgd2Ugd2FudCB0byBwdXQgaXQgb24gdGhlIGZpcnN0IGxpbmUuCisgICAgICAgICMgRm9sZGVkIHN1cHBvcnRzIHRoaXMgdmlhIHRoZSBzdGlja3lzcGFjZSBhdHRyaWJ1dGUuICBJZiB0aGlzCisgICAgICAgICMgYXR0cmlidXRlIGlzIG5vdCBOb25lLCBpdCBkb2VzIHRoZSBzcGVjaWFsIGhhbmRsaW5nLgorICAgICAgICBmb2xkZWQuc3RpY2t5c3BhY2UgPSBzdHIoc2VsZi5wb3AoMCkpIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnY2Z3cycgZWxzZSAnJworICAgICAgICByZXN0ID0gc2VsZi5wb3AoMCkKKyAgICAgICAgaWYgc2VsZjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk1hbGZvcm1lZCBIZWFkZXIgdG9rZW4gbGlzdCIpCisgICAgICAgIHJlc3QuX2ZvbGQoZm9sZGVkKQorCisKKyMKKyMgVGVybWluYWwgY2xhc3NlcyBhbmQgaW5zdGFuY2VzCisjCisKK2NsYXNzIFRlcm1pbmFsKHN0cik6CisKKyAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlLCB0b2tlbl90eXBlKToKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIHZhbHVlKQorICAgICAgICBzZWxmLnRva2VuX3R5cGUgPSB0b2tlbl90eXBlCisgICAgICAgIHNlbGYuZGVmZWN0cyA9IFtdCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAie30oe30pIi5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN1cGVyKCkuX19yZXByX18oKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfZGVmZWN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5kZWZlY3RzKQorCisgICAgZGVmIF9wcChzZWxmLCBpbmRlbnQ9JycpOgorICAgICAgICByZXR1cm4gWyJ7fXt9L3t9KHt9KXt9Ii5mb3JtYXQoCisgICAgICAgICAgICBpbmRlbnQsCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgIHNlbGYudG9rZW5fdHlwZSwKKyAgICAgICAgICAgIHN1cGVyKCkuX19yZXByX18oKSwKKyAgICAgICAgICAgICcnIGlmIG5vdCBzZWxmLmRlZmVjdHMgZWxzZSAnIHt9Jy5mb3JtYXQoc2VsZi5kZWZlY3RzKSwKKyAgICAgICAgICAgICldCisKKyAgICBkZWYgY3RlX2VuY29kZShzZWxmLCBjaGFyc2V0LCBwb2xpY3kpOgorICAgICAgICB2YWx1ZSA9IHN0cihzZWxmKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB2YWx1ZS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIF9ldy5lbmNvZGUodmFsdWUsIGNoYXJzZXQpCisKKyAgICBkZWYgcG9wX3RyYWlsaW5nX3dzKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVybWluYXRlcyB0aGUgcmVjdXJzaW9uLgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHBvcF9sZWFkaW5nX2Z3cyhzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlcm1pbmF0ZXMgdGhlIHJlY3Vyc2lvbi4KKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb21tZW50cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBkZWYgaGFzX2xlYWRpbmdfY29tbWVudChzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CisgICAgICAgIHJldHVybihzdHIoc2VsZiksIHNlbGYudG9rZW5fdHlwZSkKKworCitjbGFzcyBXaGl0ZVNwYWNlVGVybWluYWwoVGVybWluYWwpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gJyAnCisKKyAgICBkZWYgc3RhcnRzd2l0aF9md3Moc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBoYXNfZndzID0gVHJ1ZQorCisKK2NsYXNzIFZhbHVlVGVybWluYWwoVGVybWluYWwpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIHN0YXJ0c3dpdGhfZndzKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGhhc19md3MgPSBGYWxzZQorCisgICAgZGVmIGFzX2VuY29kZWRfd29yZChzZWxmLCBjaGFyc2V0KToKKyAgICAgICAgcmV0dXJuIF9ldy5lbmNvZGUoc3RyKHNlbGYpLCBjaGFyc2V0KQorCisKK2NsYXNzIEVXV2hpdGVTcGFjZVRlcm1pbmFsKFdoaXRlU3BhY2VUZXJtaW5hbCk6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGVuY29kZWQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzpdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICcnCisKKyAgICBoYXNfZndzID0gVHJ1ZQorCisKKyMgWFhYIHRoZXNlIG5lZWQgdG8gYmVjb21lIGNsYXNzZXMgYW5kIHVzZWQgYXMgaW5zdGFuY2VzIHNvCisjIHRoYXQgYSBwcm9ncmFtIGNhbid0IGNoYW5nZSB0aGVtIGluIGEgcGFyc2UgdHJlZSBhbmQgc2NyZXcKKyMgdXAgb3RoZXIgcGFyc2UgdHJlZXMuICBNYXliZSBzaG91bGQgaGF2ZSAgdGVzdHMgZm9yIHRoYXQsIHRvby4KK0RPVCA9IFZhbHVlVGVybWluYWwoJy4nLCAnZG90JykKK0xpc3RTZXBhcmF0b3IgPSBWYWx1ZVRlcm1pbmFsKCcsJywgJ2xpc3Qtc2VwYXJhdG9yJykKK1JvdXRlQ29tcG9uZW50TWFya2VyID0gVmFsdWVUZXJtaW5hbCgnQCcsICdyb3V0ZS1jb21wb25lbnQtbWFya2VyJykKKworIworIyBQYXJzZXIKKyMKKworIiIiUGFyc2Ugc3RyaW5ncyBhY2NvcmRpbmcgdG8gUkZDODIyLzIwNDcvMjgyMi81MzIyIHJ1bGVzLgorCitUaGlzIGlzIGEgc3RhdGVsZXNzIHBhcnNlci4gIEVhY2ggZ2V0X1hYWCBmdW5jdGlvbiBhY2NlcHRzIGEgc3RyaW5nIGFuZAorcmV0dXJucyBlaXRoZXIgYSBUZXJtaW5hbCBvciBhIFRva2VuTGlzdCByZXByZXNlbnRpbmcgdGhlIFJGQyBvYmplY3QgbmFtZWQKK2J5IHRoZSBtZXRob2QgYW5kIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHJlbWFpbmluZyB1bnBhcnNlZCBjaGFyYWN0ZXJzCitmcm9tIHRoZSBpbnB1dC4gIFRodXMgYSBwYXJzZXIgbWV0aG9kIGNvbnN1bWVzIHRoZSBuZXh0IHN5bnRhY3RpYyBjb25zdHJ1Y3QKK29mIGEgZ2l2ZW4gdHlwZSBhbmQgcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgY29uc3RydWN0IHBsdXMgdGhlCit1bnBhcnNlZCByZW1haW5kZXIgb2YgdGhlIGlucHV0IHN0cmluZy4KKworRm9yIGV4YW1wbGUsIGlmIHRoZSBmaXJzdCBlbGVtZW50IG9mIGEgc3RydWN0dXJlZCBoZWFkZXIgaXMgYSAncGhyYXNlJywKK3RoZW46CisKKyAgICBwaHJhc2UsIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKworcmV0dXJucyB0aGUgY29tcGxldGUgcGhyYXNlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcgdmFsdWUsIHBsdXMgYW55CitjaGFyYWN0ZXJzIGxlZnQgaW4gdGhlIHN0cmluZyBhZnRlciB0aGUgcGhyYXNlIGlzIHJlbW92ZWQuCisKKyIiIgorCitfd3NwX3NwbGl0dGVyID0gcmUuY29tcGlsZShyJyhbe31dKyknLmZvcm1hdCgnJy5qb2luKFdTUCkpKS5zcGxpdAorX25vbl9hdG9tX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAorICAgICcnLmpvaW4oQVRPTV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCitfbm9uX3ByaW50YWJsZV9maW5kZXIgPSByZS5jb21waWxlKHIiW1x4MDAtXHgyMFx4N0ZdIikuZmluZGFsbAorX25vbl90b2tlbl9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKKyAgICAnJy5qb2luKFRPS0VOX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKK19ub25fYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAorICAgICcnLmpvaW4oQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKK19ub25fZXh0ZW5kZWRfYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAorICAgICcnLmpvaW4oRVhURU5ERURfQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorCitkZWYgX3ZhbGlkYXRlX3h0ZXh0KHh0ZXh0KToKKyAgICAiIiJJZiBpbnB1dCB0b2tlbiBjb250YWlucyBBU0NJSSBub24tcHJpbnRhYmxlcywgcmVnaXN0ZXIgYSBkZWZlY3QuIiIiCisKKyAgICBub25fcHJpbnRhYmxlcyA9IF9ub25fcHJpbnRhYmxlX2ZpbmRlcih4dGV4dCkKKyAgICBpZiBub25fcHJpbnRhYmxlczoKKyAgICAgICAgeHRleHQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk5vblByaW50YWJsZURlZmVjdChub25fcHJpbnRhYmxlcykpCisgICAgaWYgdXRpbHMuX2hhc19zdXJyb2dhdGVzKHh0ZXh0KToKKyAgICAgICAgeHRleHQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QoCisgICAgICAgICAgICAiTm9uLUFTQ0lJIGNoYXJhY3RlcnMgZm91bmQgaW4gaGVhZGVyIHRva2VuIikpCisKK2RlZiBfZ2V0X3B0ZXh0X3RvX2VuZGNoYXJzKHZhbHVlLCBlbmRjaGFycyk6CisgICAgIiIiU2NhbiBwcmludGFibGVzL3F1b3RlZC1wYWlycyB1bnRpbCBlbmRjaGFycyBhbmQgcmV0dXJuIHVucXVvdGVkIHB0ZXh0LgorCisgICAgVGhpcyBmdW5jdGlvbiB0dXJucyBhIHJ1biBvZiBxY29udGVudCwgY2NvbnRlbnQtd2l0aG91dC1jb21tZW50cywgb3IKKyAgICBkdGV4dC13aXRoLXF1b3RlZC1wcmludGFibGVzIGludG8gYSBzaW5nbGUgc3RyaW5nIGJ5IHVucXVvdGluZyBhbnkKKyAgICBxdW90ZWQgcHJpbnRhYmxlcy4gIEl0IHJldHVybnMgdGhlIHN0cmluZywgdGhlIHJlbWFpbmluZyB2YWx1ZSwgYW5kCisgICAgYSBmbGFnIHRoYXQgaXMgVHJ1ZSBpZmYgdGhlcmUgd2VyZSBhbnkgcXVvdGVkIHByaW50YWJsZXMgZGVjb2RlZC4KKworICAgICIiIgorICAgIGZyYWdtZW50LCAqcmVtYWluZGVyID0gX3dzcF9zcGxpdHRlcih2YWx1ZSwgMSkKKyAgICB2Y2hhcnMgPSBbXQorICAgIGVzY2FwZSA9IEZhbHNlCisgICAgaGFkX3FwID0gRmFsc2UKKyAgICBmb3IgcG9zIGluIHJhbmdlKGxlbihmcmFnbWVudCkpOgorICAgICAgICBpZiBmcmFnbWVudFtwb3NdID09ICdcXCc6CisgICAgICAgICAgICBpZiBlc2NhcGU6CisgICAgICAgICAgICAgICAgZXNjYXBlID0gRmFsc2UKKyAgICAgICAgICAgICAgICBoYWRfcXAgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVzY2FwZSA9IFRydWUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBlc2NhcGU6CisgICAgICAgICAgICBlc2NhcGUgPSBGYWxzZQorICAgICAgICBlbGlmIGZyYWdtZW50W3Bvc10gaW4gZW5kY2hhcnM6CisgICAgICAgICAgICBicmVhaworICAgICAgICB2Y2hhcnMuYXBwZW5kKGZyYWdtZW50W3Bvc10pCisgICAgZWxzZToKKyAgICAgICAgcG9zID0gcG9zICsgMQorICAgIHJldHVybiAnJy5qb2luKHZjaGFycyksICcnLmpvaW4oW2ZyYWdtZW50W3BvczpdXSArIHJlbWFpbmRlciksIGhhZF9xcAorCitkZWYgX2RlY29kZV9ld19ydW4odmFsdWUpOgorICAgICIiIiBEZWNvZGUgYSBydW4gb2YgUkZDMjA0NyBlbmNvZGVkIHdvcmRzLgorCisgICAgICAgIF9kZWNvZGVfZXdfcnVuKHZhbHVlKSAtPiAodGV4dCwgdmFsdWUsIGRlZmVjdHMpCisKKyAgICBTY2FucyB0aGUgc3VwcGxpZWQgdmFsdWUgZm9yIGEgcnVuIG9mIHRva2VucyB0aGF0IGxvb2sgbGlrZSB0aGV5IGFyZSBSRkMKKyAgICAyMDQ3IGVuY29kZWQgd29yZHMsIGRlY29kZXMgdGhvc2Ugd29yZHMgaW50byB0ZXh0IGFjY29yZGluZyB0byBSRkMgMjA0NworICAgIHJ1bGVzICh3aGl0ZXNwYWNlIGJldHdlZW4gZW5jb2RlZCB3b3JkcyBpcyBkaXNjYXJkZWQpLCBhbmQgcmV0dXJucyB0aGUgdGV4dAorICAgIGFuZCB0aGUgcmVtYWluaW5nIHZhbHVlIChpbmNsdWRpbmcgYW55IGxlYWRpbmcgd2hpdGVzcGFjZSBvbiB0aGUgcmVtYWluaW5nCisgICAgdmFsdWUpLCBhcyB3ZWxsIGFzIGEgbGlzdCBvZiBhbnkgZGVmZWN0cyBlbmNvdW50ZXJlZCB3aGlsZSBkZWNvZGluZy4gIFRoZQorICAgIGlucHV0IHZhbHVlIG1heSBub3QgaGF2ZSBhbnkgbGVhZGluZyB3aGl0ZXNwYWNlLgorCisgICAgIiIiCisgICAgcmVzID0gW10KKyAgICBkZWZlY3RzID0gW10KKyAgICBsYXN0X3dzID0gJycKKyAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rLCB3cywgdmFsdWUgPSBfd3NwX3NwbGl0dGVyKHZhbHVlLCAxKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHRvaywgd3MsIHZhbHVlID0gdmFsdWUsICcnLCAnJworICAgICAgICBpZiBub3QgKHRvay5zdGFydHN3aXRoKCc9PycpIGFuZCB0b2suZW5kc3dpdGgoJz89JykpOgorICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKSwgbGFzdF93cyArIHRvayArIHdzICsgdmFsdWUsIGRlZmVjdHMKKyAgICAgICAgdGV4dCwgY2hhcnNldCwgbGFuZywgbmV3X2RlZmVjdHMgPSBfZXcuZGVjb2RlKHRvaykKKyAgICAgICAgcmVzLmFwcGVuZCh0ZXh0KQorICAgICAgICBkZWZlY3RzLmV4dGVuZChuZXdfZGVmZWN0cykKKyAgICAgICAgbGFzdF93cyA9IHdzCisgICAgcmV0dXJuICcnLmpvaW4ocmVzKSwgbGFzdF93cywgZGVmZWN0cworCitkZWYgZ2V0X2Z3cyh2YWx1ZSk6CisgICAgIiIiRldTID0gMSpXU1AKKworICAgIFRoaXMgaXNuJ3QgdGhlIFJGQyBkZWZpbml0aW9uLiAgV2UncmUgdXNpbmcgZndzIHRvIHJlcHJlc2VudCB0b2tlbnMgd2hlcmUKKyAgICBmb2xkaW5nIGNhbiBiZSBkb25lLCBidXQgd2hlbiB3ZSBhcmUgcGFyc2luZyB0aGUgKnVuKmZvbGRpbmcgaGFzIGFscmVhZHkKKyAgICBiZWVuIGRvbmUgc28gd2UgZG9uJ3QgbmVlZCB0byB3YXRjaCBvdXQgZm9yIENSTEYuCisKKyAgICAiIiIKKyAgICBuZXd2YWx1ZSA9IHZhbHVlLmxzdHJpcCgpCisgICAgZndzID0gV2hpdGVTcGFjZVRlcm1pbmFsKHZhbHVlWzpsZW4odmFsdWUpLWxlbihuZXd2YWx1ZSldLCAnZndzJykKKyAgICByZXR1cm4gZndzLCBuZXd2YWx1ZQorCitkZWYgZ2V0X2VuY29kZWRfd29yZCh2YWx1ZSk6CisgICAgIiIiIGVuY29kZWQtd29yZCA9ICI9PyIgY2hhcnNldCAiPyIgZW5jb2RpbmcgIj8iIGVuY29kZWQtdGV4dCAiPz0iCisKKyAgICAiIiIKKyAgICBldyA9IEVuY29kZWRXb3JkKCkKKyAgICBpZiBub3QgdmFsdWUuc3RhcnRzd2l0aCgnPT8nKToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgZW5jb2RlZCB3b3JkIGJ1dCBmb3VuZCB7fSIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2ssICpyZW1haW5kZXIgPSB2YWx1ZVsyOl0uc3BsaXQoJz89JywgMSkKKyAgICBpZiB0b2sgPT0gdmFsdWVbMjpdOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBlbmNvZGVkIHdvcmQgYnV0IGZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQorICAgIHJlbXN0ciA9ICcnLmpvaW4ocmVtYWluZGVyKQorICAgIGlmIHJlbXN0cls6Ml0uaXNkaWdpdCgpOgorICAgICAgICByZXN0LCAqcmVtYWluZGVyID0gcmVtc3RyLnNwbGl0KCc/PScsIDEpCisgICAgICAgIHRvayA9IHRvayArICc/PScgKyByZXN0CisgICAgaWYgbGVuKHRvay5zcGxpdCgpKSA+IDE6CisgICAgICAgIGV3LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIndoaXRlc3BhY2UgaW5zaWRlIGVuY29kZWQgd29yZCIpKQorICAgIGV3LmN0ZSA9IHZhbHVlCisgICAgdmFsdWUgPSAnJy5qb2luKHJlbWFpbmRlcikKKyAgICB0cnk6CisgICAgICAgIHRleHQsIGNoYXJzZXQsIGxhbmcsIGRlZmVjdHMgPSBfZXcuZGVjb2RlKCc9PycgKyB0b2sgKyAnPz0nKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJlbmNvZGVkIHdvcmQgZm9ybWF0IGludmFsaWQ6ICd7fSciLmZvcm1hdChldy5jdGUpKQorICAgIGV3LmNoYXJzZXQgPSBjaGFyc2V0CisgICAgZXcubGFuZyA9IGxhbmcKKyAgICBldy5kZWZlY3RzLmV4dGVuZChkZWZlY3RzKQorICAgIHdoaWxlIHRleHQ6CisgICAgICAgIGlmIHRleHRbMF0gaW4gV1NQOgorICAgICAgICAgICAgdG9rZW4sIHRleHQgPSBnZXRfZndzKHRleHQpCisgICAgICAgICAgICBldy5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBjaGFycywgKnJlbWFpbmRlciA9IF93c3Bfc3BsaXR0ZXIodGV4dCwgMSkKKyAgICAgICAgdnRleHQgPSBWYWx1ZVRlcm1pbmFsKGNoYXJzLCAndnRleHQnKQorICAgICAgICBfdmFsaWRhdGVfeHRleHQodnRleHQpCisgICAgICAgIGV3LmFwcGVuZCh2dGV4dCkKKyAgICAgICAgdGV4dCA9ICcnLmpvaW4ocmVtYWluZGVyKQorICAgIHJldHVybiBldywgdmFsdWUKKworZGVmIGdldF91bnN0cnVjdHVyZWQodmFsdWUpOgorICAgICIiInVuc3RydWN0dXJlZCA9ICgqKFtGV1NdIHZjaGFyKSAqV1NQKSAvIG9icy11bnN0cnVjdAorICAgICAgIG9icy11bnN0cnVjdCA9ICooKCpMRiAqQ1IgKihvYnMtdXRleHQpICpMRiAqQ1IpKSAvIEZXUykKKyAgICAgICBvYnMtdXRleHQgPSAlZDAgLyBvYnMtTk8tV1MtQ1RMIC8gTEYgLyBDUgorCisgICAgICAgb2JzLU5PLVdTLUNUTCBpcyBjb250cm9sIGNoYXJhY3RlcnMgZXhjZXB0IFdTUC9DUi9MRi4KKworICAgIFNvLCBiYXNpY2FsbHksIHdlIGhhdmUgcHJpbnRhYmxlIHJ1bnMsIHBsdXMgY29udHJvbCBjaGFyYWN0ZXJzIG9yIG51bGxzIGluCisgICAgdGhlIG9ic29sZXRlIHN5bnRheCwgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UuICBTaW5jZSBSRkMgMjA0NyB1c2VzIHRoZQorICAgIG9ic29sZXRlIHN5bnRheCBpbiBpdHMgc3BlY2lmaWNhdGlvbiwgYnV0IHJlcXVpcmVzIHdoaXRlc3BhY2Ugb24gZWl0aGVyCisgICAgc2lkZSBvZiB0aGUgZW5jb2RlZCB3b3JkcywgSSBjYW4gc2VlIG5vIHJlYXNvbiB0byBuZWVkIHRvIHNlcGFyYXRlIHRoZQorICAgIG5vbi1wcmludGFibGUtbm9uLXdoaXRlc3BhY2UgZnJvbSB0aGUgcHJpbnRhYmxlIHJ1bnMgaWYgdGhleSBvY2N1ciwgc28gd2UKKyAgICBwYXJzZSB0aGlzIGludG8geHRleHQgdG9rZW5zIHNlcGFyYXRlZCBieSBXU1AgdG9rZW5zLgorCisgICAgQmVjYXVzZSBhbiAndW5zdHJ1Y3R1cmVkJyB2YWx1ZSBtdXN0IGJ5IGRlZmluaXRpb24gY29uc3RpdHV0ZSB0aGUgZW50aXJlCisgICAgdmFsdWUsIHRoaXMgJ2dldCcgcm91dGluZSBkb2VzIG5vdCByZXR1cm4gYSByZW1haW5pbmcgdmFsdWUsIG9ubHkgdGhlCisgICAgcGFyc2VkIFRva2VuTGlzdC4KKworICAgICIiIgorICAgICMgWFhYOiBidXQgd2hhdCBhYm91dCBiYXJlIENSIGFuZCBMRj8gIFRoZXkgbWlnaHQgc2lnbmFsIHRoZSBzdGFydCBvcgorICAgICMgZW5kIG9mIGFuIGVuY29kZWQgd29yZC4gIFlBR05JIGZvciBub3csIHNpbmNlIG91dCBjdXJyZW50IHBhcnNlcnMKKyAgICAjIHdpbGwgbmV2ZXIgc2VuZCB1cyBzdHJpbmdzIHdpdGggYmFyZCBDUiBvciBMRi4KKworICAgIHVuc3RydWN0dXJlZCA9IFVuc3RydWN0dXJlZFRva2VuTGlzdCgpCisgICAgd2hpbGUgdmFsdWU6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgICAgICB1bnN0cnVjdHVyZWQuYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgdmFsdWUuc3RhcnRzd2l0aCgnPT8nKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZW5jb2RlZF93b3JkKHZhbHVlKQorICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaGF2ZV93cyA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBsZW4odW5zdHJ1Y3R1cmVkKSA+IDA6CisgICAgICAgICAgICAgICAgICAgIGlmIHVuc3RydWN0dXJlZFstMV0udG9rZW5fdHlwZSAhPSAnZndzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RydWN0dXJlZC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyB3aGl0ZXNwYWNlIGJlZm9yZSBlbmNvZGVkIHdvcmQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfd3MgPSBGYWxzZQorICAgICAgICAgICAgICAgIGlmIGhhdmVfd3MgYW5kIGxlbih1bnN0cnVjdHVyZWQpID4gMToKKyAgICAgICAgICAgICAgICAgICAgaWYgdW5zdHJ1Y3R1cmVkWy0yXS50b2tlbl90eXBlID09ICdlbmNvZGVkLXdvcmQnOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5zdHJ1Y3R1cmVkWy0xXSA9IEVXV2hpdGVTcGFjZVRlcm1pbmFsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RydWN0dXJlZFstMV0sICdmd3MnKQorICAgICAgICAgICAgICAgIHVuc3RydWN0dXJlZC5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgdG9rLCAqcmVtYWluZGVyID0gX3dzcF9zcGxpdHRlcih2YWx1ZSwgMSkKKyAgICAgICAgdnRleHQgPSBWYWx1ZVRlcm1pbmFsKHRvaywgJ3Z0ZXh0JykKKyAgICAgICAgX3ZhbGlkYXRlX3h0ZXh0KHZ0ZXh0KQorICAgICAgICB1bnN0cnVjdHVyZWQuYXBwZW5kKHZ0ZXh0KQorICAgICAgICB2YWx1ZSA9ICcnLmpvaW4ocmVtYWluZGVyKQorICAgIHJldHVybiB1bnN0cnVjdHVyZWQKKworZGVmIGdldF9xcF9jdGV4dCh2YWx1ZSk6CisgICAgIiIiY3RleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcICggKT4KKworICAgIFRoaXMgaXMgbm90IHRoZSBSRkMgY3RleHQsIHNpbmNlIHdlIGFyZSBoYW5kbGluZyBuZXN0ZWQgY29tbWVudHMgaW4gY29tbWVudAorICAgIGFuZCB1bnF1b3RpbmcgcXVvdGVkLXBhaXJzIGhlcmUuICBXZSBhbGxvdyBhbnl0aGluZyBleGNlcHQgdGhlICcoKScKKyAgICBjaGFyYWN0ZXJzLCBidXQgaWYgd2UgZmluZCBhbnkgQVNDSUkgb3RoZXIgdGhhbiB0aGUgUkZDIGRlZmluZWQgcHJpbnRhYmxlCisgICAgQVNDSUkgYW4gTm9uUHJpbnRhYmxlRGVmZWN0IGlzIGFkZGVkIHRvIHRoZSB0b2tlbidzIGRlZmVjdHMgbGlzdC4gIFNpbmNlCisgICAgcXVvdGVkIHBhaXJzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlaXIgdW5xdW90ZWQgdmFsdWVzLCB3aGF0IGlzIHJldHVybmVkIGlzCisgICAgYSAncHRleHQnIHRva2VuLiAgSW4gdGhpcyBjYXNlIGl0IGlzIGEgV2hpdGVTcGFjZVRlcm1pbmFsLCBzbyBpdCdzIHZhbHVlCisgICAgaXMgJyAnLgorCisgICAgIiIiCisgICAgcHRleHQsIHZhbHVlLCBfID0gX2dldF9wdGV4dF90b19lbmRjaGFycyh2YWx1ZSwgJygpJykKKyAgICBwdGV4dCA9IFdoaXRlU3BhY2VUZXJtaW5hbChwdGV4dCwgJ3B0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQocHRleHQpCisgICAgcmV0dXJuIHB0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X3Fjb250ZW50KHZhbHVlKToKKyAgICAiIiJxY29udGVudCA9IHF0ZXh0IC8gcXVvdGVkLXBhaXIKKworICAgIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgRFFVT1RFIGNoYXJhY3RlciwgYnV0IGlmIHdlIGZpbmQgYW55IEFTQ0lJCisgICAgb3RoZXIgdGhhbiB0aGUgUkZDIGRlZmluZWQgcHJpbnRhYmxlIEFTQ0lJIGFuIE5vblByaW50YWJsZURlZmVjdCBpcworICAgIGFkZGVkIHRvIHRoZSB0b2tlbidzIGRlZmVjdHMgbGlzdC4gIEFueSBxdW90ZWQgcGFpcnMgYXJlIGNvbnZlcnRlZCB0byB0aGVpcgorICAgIHVucXVvdGVkIHZhbHVlcywgc28gd2hhdCBpcyByZXR1cm5lZCBpcyBhICdwdGV4dCcgdG9rZW4uICBJbiB0aGlzIGNhc2UgaXQKKyAgICBpcyBhIFZhbHVlVGVybWluYWwuCisKKyAgICAiIiIKKyAgICBwdGV4dCwgdmFsdWUsIF8gPSBfZ2V0X3B0ZXh0X3RvX2VuZGNoYXJzKHZhbHVlLCAnIicpCisgICAgcHRleHQgPSBWYWx1ZVRlcm1pbmFsKHB0ZXh0LCAncHRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChwdGV4dCkKKyAgICByZXR1cm4gcHRleHQsIHZhbHVlCisKK2RlZiBnZXRfYXRleHQodmFsdWUpOgorICAgICIiImF0ZXh0ID0gPG1hdGNoZXMgX2F0ZXh0X21hdGNoZXI+CisKKyAgICBXZSBhbGxvdyBhbnkgbm9uLUFUT01fRU5EUyBpbiBhdGV4dCwgYnV0IGFkZCBhbiBJbnZhbGlkQVRleHREZWZlY3QgdG8KKyAgICB0aGUgdG9rZW4ncyBkZWZlY3RzIGxpc3QgaWYgd2UgZmluZCBub24tYXRleHQgY2hhcmFjdGVycy4KKyAgICAiIiIKKyAgICBtID0gX25vbl9hdG9tX2VuZF9tYXRjaGVyKHZhbHVlKQorICAgIGlmIG5vdCBtOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBhdGV4dCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBhdGV4dCA9IG0uZ3JvdXAoKQorICAgIHZhbHVlID0gdmFsdWVbbGVuKGF0ZXh0KTpdCisgICAgYXRleHQgPSBWYWx1ZVRlcm1pbmFsKGF0ZXh0LCAnYXRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChhdGV4dCkKKyAgICByZXR1cm4gYXRleHQsIHZhbHVlCisKK2RlZiBnZXRfYmFyZV9xdW90ZWRfc3RyaW5nKHZhbHVlKToKKyAgICAiIiJiYXJlLXF1b3RlZC1zdHJpbmcgPSBEUVVPVEUgKihbRldTXSBxY29udGVudCkgW0ZXU10gRFFVT1RFCisKKyAgICBBIHF1b3RlZC1zdHJpbmcgd2l0aG91dCB0aGUgbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZSBzcGFjZS4gIEl0cworICAgIHZhbHVlIGlzIHRoZSB0ZXh0IGJldHdlZW4gdGhlIHF1b3RlIG1hcmtzLCB3aXRoIHdoaXRlc3BhY2UKKyAgICBwcmVzZXJ2ZWQgYW5kIHF1b3RlZCBwYWlycyBkZWNvZGVkLgorICAgICIiIgorICAgIGlmIHZhbHVlWzBdICE9ICciJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgJ1wiJyBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBiYXJlX3F1b3RlZF9zdHJpbmcgPSBCYXJlUXVvdGVkU3RyaW5nKCkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnIic6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcWNvbnRlbnQodmFsdWUpCisgICAgICAgIGJhcmVfcXVvdGVkX3N0cmluZy5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBiYXJlX3F1b3RlZF9zdHJpbmcuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBpbnNpZGUgcXVvdGVkIHN0cmluZyIpKQorICAgICAgICByZXR1cm4gYmFyZV9xdW90ZWRfc3RyaW5nLCB2YWx1ZQorICAgIHJldHVybiBiYXJlX3F1b3RlZF9zdHJpbmcsIHZhbHVlWzE6XQorCitkZWYgZ2V0X2NvbW1lbnQodmFsdWUpOgorICAgICIiImNvbW1lbnQgPSAiKCIgKihbRldTXSBjY29udGVudCkgW0ZXU10gIikiCisgICAgICAgY2NvbnRlbnQgPSBjdGV4dCAvIHF1b3RlZC1wYWlyIC8gY29tbWVudAorCisgICAgV2UgaGFuZGxlIG5lc3RlZCBjb21tZW50cyBoZXJlLCBhbmQgcXVvdGVkLXBhaXIgaW4gb3VyIHFwLWN0ZXh0IHJvdXRpbmUuCisgICAgIiIiCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICcoJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgJygnIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGNvbW1lbnQgPSBDb21tZW50KCkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAiKSI6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJygnOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2NvbW1lbnQodmFsdWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcXBfY3RleHQodmFsdWUpCisgICAgICAgIGNvbW1lbnQuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgY29tbWVudC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGluc2lkZSBjb21tZW50IikpCisgICAgICAgIHJldHVybiBjb21tZW50LCB2YWx1ZQorICAgIHJldHVybiBjb21tZW50LCB2YWx1ZVsxOl0KKworZGVmIGdldF9jZndzKHZhbHVlKToKKyAgICAiIiJDRldTID0gKDEqKFtGV1NdIGNvbW1lbnQpIFtGV1NdKSAvIEZXUworCisgICAgIiIiCisgICAgY2Z3cyA9IENGV1NMaXN0KCkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY29tbWVudCh2YWx1ZSkKKyAgICAgICAgY2Z3cy5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGNmd3MsIHZhbHVlCisKK2RlZiBnZXRfcXVvdGVkX3N0cmluZyh2YWx1ZSk6CisgICAgIiIicXVvdGVkLXN0cmluZyA9IFtDRldTXSA8YmFyZS1xdW90ZWQtc3RyaW5nPiBbQ0ZXU10KKworICAgICdiYXJlLXF1b3RlZC1zdHJpbmcnIGlzIGFuIGludGVybWVkaWF0ZSBjbGFzcyBkZWZpbmVkIGJ5IHRoaXMKKyAgICBwYXJzZXIgYW5kIG5vdCBieSB0aGUgUkZDIGdyYW1tYXIuICBJdCBpcyB0aGUgcXVvdGVkIHN0cmluZworICAgIHdpdGhvdXQgYW55IGF0dGFjaGVkIENGV1MuCisgICAgIiIiCisgICAgcXVvdGVkX3N0cmluZyA9IFF1b3RlZFN0cmluZygpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgcXVvdGVkX3N0cmluZy5hcHBlbmQodG9rZW4pCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2JhcmVfcXVvdGVkX3N0cmluZyh2YWx1ZSkKKyAgICBxdW90ZWRfc3RyaW5nLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBxdW90ZWRfc3RyaW5nLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gcXVvdGVkX3N0cmluZywgdmFsdWUKKworZGVmIGdldF9hdG9tKHZhbHVlKToKKyAgICAiIiJhdG9tID0gW0NGV1NdIDEqYXRleHQgW0NGV1NdCisKKyAgICAiIiIKKyAgICBhdG9tID0gQXRvbSgpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXRvbS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIEFUT01fRU5EUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgYXRvbSBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRleHQodmFsdWUpCisgICAgYXRvbS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXRvbS5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGF0b20sIHZhbHVlCisKK2RlZiBnZXRfZG90X2F0b21fdGV4dCh2YWx1ZSk6CisgICAgIiIiIGRvdC10ZXh0ID0gMSphdGV4dCAqKCIuIiAxKmF0ZXh0KQorCisgICAgIiIiCisgICAgZG90X2F0b21fdGV4dCA9IERvdEF0b21UZXh0KCkKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gaW4gQVRPTV9FTkRTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgYXRvbSBhdCBhIHN0YXJ0IG9mICIKKyAgICAgICAgICAgICJkb3QtYXRvbS10ZXh0IGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gQVRPTV9FTkRTOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRleHQodmFsdWUpCisgICAgICAgIGRvdF9hdG9tX3RleHQuYXBwZW5kKHRva2VuKQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJy4nOgorICAgICAgICAgICAgZG90X2F0b21fdGV4dC5hcHBlbmQoRE9UKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBkb3RfYXRvbV90ZXh0Wy0xXSBpcyBET1Q6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCBhdG9tIGF0IGVuZCBvZiBkb3QtYXRvbS10ZXh0ICIKKyAgICAgICAgICAgICJidXQgZm91bmQgJ3t9JyIuZm9ybWF0KCcuJyt2YWx1ZSkpCisgICAgcmV0dXJuIGRvdF9hdG9tX3RleHQsIHZhbHVlCisKK2RlZiBnZXRfZG90X2F0b20odmFsdWUpOgorICAgICIiIiBkb3QtYXRvbSA9IFtDRldTXSBkb3QtYXRvbS10ZXh0IFtDRldTXQorCisgICAgIiIiCisgICAgZG90X2F0b20gPSBEb3RBdG9tKCkKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGRvdF9hdG9tLmFwcGVuZCh0b2tlbikKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG90X2F0b21fdGV4dCh2YWx1ZSkKKyAgICBkb3RfYXRvbS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZG90X2F0b20uYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBkb3RfYXRvbSwgdmFsdWUKKworZGVmIGdldF93b3JkKHZhbHVlKToKKyAgICAiIiJ3b3JkID0gYXRvbSAvIHF1b3RlZC1zdHJpbmcKKworICAgIEVpdGhlciBhdG9tIG9yIHF1b3RlZC1zdHJpbmcgbWF5IHN0YXJ0IHdpdGggQ0ZXUy4gIFdlIGhhdmUgdG8gcGVlbCBvZmYgdGhpcworICAgIENGV1MgZmlyc3QgdG8gZGV0ZXJtaW5lIHdoaWNoIHR5cGUgb2Ygd29yZCB0byBwYXJzZS4gIEFmdGVyd2FyZCB3ZSBzcGxpY2UKKyAgICB0aGUgbGVhZGluZyBDRldTLCBpZiBhbnksIGludG8gdGhlIHBhcnNlZCBzdWItdG9rZW4uCisKKyAgICBJZiBuZWl0aGVyIGFuIGF0b20gb3IgYSBxdW90ZWQtc3RyaW5nIGlzIGZvdW5kIGJlZm9yZSB0aGUgbmV4dCBzcGVjaWFsLCBhCisgICAgSGVhZGVyUGFyc2VFcnJvciBpcyByYWlzZWQuCisKKyAgICBUaGUgdG9rZW4gcmV0dXJuZWQgaXMgZWl0aGVyIGFuIEF0b20gb3IgYSBRdW90ZWRTdHJpbmcsIGFzIGFwcHJvcHJpYXRlLgorICAgIFRoaXMgbWVhbnMgdGhlICd3b3JkJyBsZXZlbCBvZiB0aGUgZm9ybWFsIGdyYW1tYXIgaXMgbm90IHJlcHJlc2VudGVkIGluIHRoZQorICAgIHBhcnNlIHRyZWU7IHRoaXMgaXMgYmVjYXVzZSBoYXZpbmcgdGhhdCBleHRyYSBsYXllciB3aGVuIG1hbmlwdWxhdGluZyB0aGUKKyAgICBwYXJzZSB0cmVlIGlzIG1vcmUgY29uZnVzaW5nIHRoYW4gaXQgaXMgaGVscGZ1bC4KKworICAgICIiIgorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgZWxzZToKKyAgICAgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlWzBdPT0nIic6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xdW90ZWRfc3RyaW5nKHZhbHVlKQorICAgIGVsaWYgdmFsdWVbMF0gaW4gU1BFQ0lBTFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCAnYXRvbScgb3IgJ3F1b3RlZC1zdHJpbmcnICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGVsc2U6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdG9tKHZhbHVlKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICByZXR1cm4gdG9rZW4sIHZhbHVlCisKK2RlZiBnZXRfcGhyYXNlKHZhbHVlKToKKyAgICAiIiIgcGhyYXNlID0gMSp3b3JkIC8gb2JzLXBocmFzZQorICAgICAgICBvYnMtcGhyYXNlID0gd29yZCAqKHdvcmQgLyAiLiIgLyBDRldTKQorCisgICAgVGhpcyBtZWFucyBhIHBocmFzZSBjYW4gYmUgYSBzZXF1ZW5jZSBvZiB3b3JkcywgcGVyaW9kcywgYW5kIENGV1MgaW4gYW55CisgICAgb3JkZXIgYXMgbG9uZyBhcyBpdCBzdGFydHMgd2l0aCBhdCBsZWFzdCBvbmUgd29yZC4gIElmIGFueXRoaW5nIG90aGVyIHRoYW4KKyAgICB3b3JkcyBpcyBkZXRlY3RlZCwgYW4gT2Jzb2xldGVIZWFkZXJEZWZlY3QgaXMgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0CisgICAgbGlzdC4gIFdlIGFsc28gYWNjZXB0IGEgcGhyYXNlIHRoYXQgc3RhcnRzIHdpdGggQ0ZXUyBmb2xsb3dlZCBieSBhIGRvdDsKKyAgICB0aGlzIGlzIHJlZ2lzdGVyZWQgYXMgYW4gSW52YWxpZEhlYWRlckRlZmVjdCwgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCBieQorICAgIGV2ZW4gdGhlIG9ic29sZXRlIGdyYW1tYXIuCisKKyAgICAiIiIKKyAgICBwaHJhc2UgPSBQaHJhc2UoKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3dvcmQodmFsdWUpCisgICAgICAgIHBocmFzZS5hcHBlbmQodG9rZW4pCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICBwaHJhc2UuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAicGhyYXNlIGRvZXMgbm90IHN0YXJ0IHdpdGggd29yZCIpKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gUEhSQVNFX0VORFM6CisgICAgICAgIGlmIHZhbHVlWzBdPT0nLic6CisgICAgICAgICAgICBwaHJhc2UuYXBwZW5kKERPVCkKKyAgICAgICAgICAgIHBocmFzZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgInBlcmlvZCBpbiAncGhyYXNlJyIpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfd29yZCh2YWx1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHBocmFzZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWVudCBmb3VuZCB3aXRob3V0IGF0b20iKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcGhyYXNlLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gcGhyYXNlLCB2YWx1ZQorCitkZWYgZ2V0X2xvY2FsX3BhcnQodmFsdWUpOgorICAgICIiIiBsb2NhbC1wYXJ0ID0gZG90LWF0b20gLyBxdW90ZWQtc3RyaW5nIC8gb2JzLWxvY2FsLXBhcnQKKworICAgICIiIgorICAgIGxvY2FsX3BhcnQgPSBMb2NhbFBhcnQoKQorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgbG9jYWwtcGFydCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb3RfYXRvbSh2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF93b3JkKHZhbHVlKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICBpZiB2YWx1ZVswXSAhPSAnXFwnIGFuZCB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgdG9rZW4gPSBUb2tlbkxpc3QoKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICBsb2NhbF9wYXJ0LmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgKHZhbHVlWzBdPT0nXFwnIG9yIHZhbHVlWzBdIG5vdCBpbiBQSFJBU0VfRU5EUyk6CisgICAgICAgIG9ic19sb2NhbF9wYXJ0LCB2YWx1ZSA9IGdldF9vYnNfbG9jYWxfcGFydChzdHIobG9jYWxfcGFydCkgKyB2YWx1ZSkKKyAgICAgICAgaWYgb2JzX2xvY2FsX3BhcnQudG9rZW5fdHlwZSA9PSAnaW52YWxpZC1vYnMtbG9jYWwtcGFydCc6CisgICAgICAgICAgICBsb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJsb2NhbC1wYXJ0IGlzIG5vdCBkb3QtYXRvbSwgcXVvdGVkLXN0cmluZywgb3Igb2JzLWxvY2FsLXBhcnQiKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJsb2NhbC1wYXJ0IGlzIG5vdCBhIGRvdC1hdG9tIChjb250YWlucyBDRldTKSIpKQorICAgICAgICBsb2NhbF9wYXJ0WzBdID0gb2JzX2xvY2FsX3BhcnQKKyAgICB0cnk6CisgICAgICAgIGxvY2FsX3BhcnQudmFsdWUuZW5jb2RlKCdhc2NpaScpCisgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuTm9uQVNDSUlMb2NhbFBhcnREZWZlY3QoCisgICAgICAgICAgICAgICAgImxvY2FsLXBhcnQgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMpIikpCisgICAgcmV0dXJuIGxvY2FsX3BhcnQsIHZhbHVlCisKK2RlZiBnZXRfb2JzX2xvY2FsX3BhcnQodmFsdWUpOgorICAgICIiIiBvYnMtbG9jYWwtcGFydCA9IHdvcmQgKigiLiIgd29yZCkKKyAgICAiIiIKKyAgICBvYnNfbG9jYWxfcGFydCA9IE9ic0xvY2FsUGFydCgpCisgICAgbGFzdF9ub25fd3Nfd2FzX2RvdCA9IEZhbHNlCisgICAgd2hpbGUgdmFsdWUgYW5kICh2YWx1ZVswXT09J1xcJyBvciB2YWx1ZVswXSBub3QgaW4gUEhSQVNFX0VORFMpOgorICAgICAgICBpZiB2YWx1ZVswXSA9PSAnLic6CisgICAgICAgICAgICBpZiBsYXN0X25vbl93c193YXNfZG90OgorICAgICAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCByZXBlYXRlZCAnLiciKSkKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmFwcGVuZChET1QpCisgICAgICAgICAgICBsYXN0X25vbl93c193YXNfZG90ID0gVHJ1ZQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVsaWYgdmFsdWVbMF09PSdcXCc6CisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydC5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNwbGFjZWQtc3BlY2lhbCcpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICInXFwnIGNoYXJhY3RlciBvdXRzaWRlIG9mIHF1b3RlZC1zdHJpbmcvY2NvbnRlbnQiKSkKKyAgICAgICAgICAgIGxhc3Rfbm9uX3dzX3dhc19kb3QgPSBGYWxzZQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgb2JzX2xvY2FsX3BhcnQgYW5kIG9ic19sb2NhbF9wYXJ0Wy0xXS50b2tlbl90eXBlICE9ICdkb3QnOgorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIm1pc3NpbmcgJy4nIGJldHdlZW4gd29yZHMiKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3dvcmQodmFsdWUpCisgICAgICAgICAgICBsYXN0X25vbl93c193YXNfZG90ID0gRmFsc2UKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgaWYgdmFsdWVbMF0gbm90IGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgb2JzX2xvY2FsX3BhcnQuYXBwZW5kKHRva2VuKQorICAgIGlmIChvYnNfbG9jYWxfcGFydFswXS50b2tlbl90eXBlID09ICdkb3QnIG9yCisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydFswXS50b2tlbl90eXBlPT0nY2Z3cycgYW5kCisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydFsxXS50b2tlbl90eXBlPT0nZG90Jyk6CisgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkludmFsaWQgbGVhZGluZyAnLicgaW4gbG9jYWwgcGFydCIpKQorICAgIGlmIChvYnNfbG9jYWxfcGFydFstMV0udG9rZW5fdHlwZSA9PSAnZG90JyBvcgorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnRbLTFdLnRva2VuX3R5cGU9PSdjZndzJyBhbmQKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0Wy0yXS50b2tlbl90eXBlPT0nZG90Jyk6CisgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkludmFsaWQgdHJhaWxpbmcgJy4nIGluIGxvY2FsIHBhcnQiKSkKKyAgICBpZiBvYnNfbG9jYWxfcGFydC5kZWZlY3RzOgorICAgICAgICBvYnNfbG9jYWxfcGFydC50b2tlbl90eXBlID0gJ2ludmFsaWQtb2JzLWxvY2FsLXBhcnQnCisgICAgcmV0dXJuIG9ic19sb2NhbF9wYXJ0LCB2YWx1ZQorCitkZWYgZ2V0X2R0ZXh0KHZhbHVlKToKKyAgICAiIiIgZHRleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcIFsgXT4gLyBvYnMtZHRleHQKKyAgICAgICAgb2JzLWR0ZXh0ID0gb2JzLU5PLVdTLUNUTCAvIHF1b3RlZC1wYWlyCisKKyAgICBXZSBhbGxvdyBhbnl0aGluZyBleGNlcHQgdGhlIGV4Y2x1ZGVkIGNoYXJhY3RlcnMsIGJ1dCBidXQgaWYgd2UgZmluZCBhbnkKKyAgICBBU0NJSSBvdGhlciB0aGFuIHRoZSBSRkMgZGVmaW5lZCBwcmludGFibGUgQVNDSUkgYW4gTm9uUHJpbnRhYmxlRGVmZWN0IGlzCisgICAgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0cyBsaXN0LiAgUXVvdGVkIHBhaXJzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlaXIKKyAgICB1bnF1b3RlZCB2YWx1ZXMsIHNvIHdoYXQgaXMgcmV0dXJuZWQgaXMgYSBwdGV4dCB0b2tlbiwgaW4gdGhpcyBjYXNlIGEKKyAgICBWYWx1ZVRlcm1pbmFsLiAgSWYgdGhlcmUgd2VyZSBxdW90ZWQtcHJpbnRhYmxlcywgYW4gT2Jzb2xldGVIZWFkZXJEZWZlY3QgaXMKKyAgICBhZGRlZCB0byB0aGUgcmV0dXJuZWQgdG9rZW4ncyBkZWZlY3QgbGlzdC4KKworICAgICIiIgorICAgIHB0ZXh0LCB2YWx1ZSwgaGFkX3FwID0gX2dldF9wdGV4dF90b19lbmRjaGFycyh2YWx1ZSwgJ1tdJykKKyAgICBwdGV4dCA9IFZhbHVlVGVybWluYWwocHRleHQsICdwdGV4dCcpCisgICAgaWYgaGFkX3FwOgorICAgICAgICBwdGV4dC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAicXVvdGVkIHByaW50YWJsZSBmb3VuZCBpbiBkb21haW4tbGl0ZXJhbCIpKQorICAgIF92YWxpZGF0ZV94dGV4dChwdGV4dCkKKyAgICByZXR1cm4gcHRleHQsIHZhbHVlCisKK2RlZiBfY2hlY2tfZm9yX2Vhcmx5X2RsX2VuZCh2YWx1ZSwgZG9tYWluX2xpdGVyYWwpOgorICAgIGlmIHZhbHVlOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICJlbmQgb2YgaW5wdXQgaW5zaWRlIGRvbWFpbi1saXRlcmFsIikpCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKFZhbHVlVGVybWluYWwoJ10nLCAnZG9tYWluLWxpdGVyYWwtZW5kJykpCisgICAgcmV0dXJuIFRydWUKKworZGVmIGdldF9kb21haW5fbGl0ZXJhbCh2YWx1ZSk6CisgICAgIiIiIGRvbWFpbi1saXRlcmFsID0gW0NGV1NdICJbIiAqKFtGV1NdIGR0ZXh0KSBbRldTXSAiXSIgW0NGV1NdCisKKyAgICAiIiIKKyAgICBkb21haW5fbGl0ZXJhbCA9IERvbWFpbkxpdGVyYWwoKQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImV4cGVjdGVkIGRvbWFpbi1saXRlcmFsIikKKyAgICBpZiB2YWx1ZVswXSAhPSAnWyc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCAnWycgYXQgc3RhcnQgb2YgZG9tYWluLWxpdGVyYWwgIgorICAgICAgICAgICAgICAgICJidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIF9jaGVja19mb3JfZWFybHlfZGxfZW5kKHZhbHVlLCBkb21haW5fbGl0ZXJhbCk6CisgICAgICAgIHJldHVybiBkb21haW5fbGl0ZXJhbCwgdmFsdWUKKyAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnWycsICdkb21haW4tbGl0ZXJhbC1zdGFydCcpKQorICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kdGV4dCh2YWx1ZSkKKyAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQodG9rZW4pCisgICAgaWYgX2NoZWNrX2Zvcl9lYXJseV9kbF9lbmQodmFsdWUsIGRvbWFpbl9saXRlcmFsKToKKyAgICAgICAgcmV0dXJuIGRvbWFpbl9saXRlcmFsLCB2YWx1ZQorICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIGlmIF9jaGVja19mb3JfZWFybHlfZGxfZW5kKHZhbHVlLCBkb21haW5fbGl0ZXJhbCk6CisgICAgICAgIHJldHVybiBkb21haW5fbGl0ZXJhbCwgdmFsdWUKKyAgICBpZiB2YWx1ZVswXSAhPSAnXSc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCAnXScgYXQgZW5kIG9mIGRvbWFpbi1saXRlcmFsICIKKyAgICAgICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKFZhbHVlVGVybWluYWwoJ10nLCAnZG9tYWluLWxpdGVyYWwtZW5kJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGRvbWFpbl9saXRlcmFsLCB2YWx1ZQorCitkZWYgZ2V0X2RvbWFpbih2YWx1ZSk6CisgICAgIiIiIGRvbWFpbiA9IGRvdC1hdG9tIC8gZG9tYWluLWxpdGVyYWwgLyBvYnMtZG9tYWluCisgICAgICAgIG9icy1kb21haW4gPSBhdG9tICooIi4iIGF0b20pKQorCisgICAgIiIiCisgICAgZG9tYWluID0gRG9tYWluKCkKKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGRvbWFpbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBpZiB2YWx1ZVswXSA9PSAnWyc6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW5fbGl0ZXJhbCh2YWx1ZSkKKyAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgZG9tYWluLmFwcGVuZCh0b2tlbikKKyAgICAgICAgcmV0dXJuIGRvbWFpbiwgdmFsdWUKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb3RfYXRvbSh2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdG9tKHZhbHVlKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICBkb21haW4uYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnLic6CisgICAgICAgIGRvbWFpbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZG9tYWluIGlzIG5vdCBhIGRvdC1hdG9tIChjb250YWlucyBDRldTKSIpKQorICAgICAgICBpZiBkb21haW5bMF0udG9rZW5fdHlwZSA9PSAnZG90LWF0b20nOgorICAgICAgICAgICAgZG9tYWluWzpdID0gZG9tYWluWzBdCisgICAgICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnLic6CisgICAgICAgICAgICBkb21haW4uYXBwZW5kKERPVCkKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdG9tKHZhbHVlWzE6XSkKKyAgICAgICAgICAgIGRvbWFpbi5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGRvbWFpbiwgdmFsdWUKKworZGVmIGdldF9hZGRyX3NwZWModmFsdWUpOgorICAgICIiIiBhZGRyLXNwZWMgPSBsb2NhbC1wYXJ0ICJAIiBkb21haW4KKworICAgICIiIgorICAgIGFkZHJfc3BlYyA9IEFkZHJTcGVjKCkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbG9jYWxfcGFydCh2YWx1ZSkKKyAgICBhZGRyX3NwZWMuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnQCc6CisgICAgICAgIGFkZHJfc3BlYy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJhZGQtc3BlYyBsb2NhbCBwYXJ0IHdpdGggbm8gZG9tYWluIikpCisgICAgICAgIHJldHVybiBhZGRyX3NwZWMsIHZhbHVlCisgICAgYWRkcl9zcGVjLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCdAJywgJ2FkZHJlc3MtYXQtc3ltYm9sJykpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvbWFpbih2YWx1ZVsxOl0pCisgICAgYWRkcl9zcGVjLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYWRkcl9zcGVjLCB2YWx1ZQorCitkZWYgZ2V0X29ic19yb3V0ZSh2YWx1ZSk6CisgICAgIiIiIG9icy1yb3V0ZSA9IG9icy1kb21haW4tbGlzdCAiOiIKKyAgICAgICAgb2JzLWRvbWFpbi1saXN0ID0gKihDRldTIC8gIiwiKSAiQCIgZG9tYWluICooIiwiIFtDRldTXSBbIkAiIGRvbWFpbl0pCisKKyAgICAgICAgUmV0dXJucyBhbiBvYnMtcm91dGUgdG9rZW4gd2l0aCB0aGUgYXBwcm9wcmlhdGUgc3ViLXRva2VucyAodGhhdCBpcywKKyAgICAgICAgdGhlcmUgaXMgbm8gb2JzLWRvbWFpbi1saXN0IGluIHRoZSBwYXJzZSB0cmVlKS4KKyAgICAiIiIKKyAgICBvYnNfcm91dGUgPSBPYnNSb3V0ZSgpCisgICAgd2hpbGUgdmFsdWUgYW5kICh2YWx1ZVswXT09JywnIG9yIHZhbHVlWzBdIGluIENGV1NfTEVBREVSKToKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQodG9rZW4pCisgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZChMaXN0U2VwYXJhdG9yKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJ0AnOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBvYnMtcm91dGUgZG9tYWluIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIG9ic19yb3V0ZS5hcHBlbmQoUm91dGVDb21wb25lbnRNYXJrZXIpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvbWFpbih2YWx1ZVsxOl0pCisgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF09PScsJzoKKyAgICAgICAgb2JzX3JvdXRlLmFwcGVuZChMaXN0U2VwYXJhdG9yKQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICBicmVhaworICAgICAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKKyAgICAgICAgaWYgdmFsdWVbMF0gPT0gJ0AnOgorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZChSb3V0ZUNvbXBvbmVudE1hcmtlcikKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW4odmFsdWVbMTpdKQorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJlbmQgb2YgaGVhZGVyIHdoaWxlIHBhcnNpbmcgb2JzLXJvdXRlIikKKyAgICBpZiB2YWx1ZVswXSAhPSAnOic6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCAiZXhwZWN0ZWQgJzonIG1hcmtpbmcgZW5kIG9mICIKKyAgICAgICAgICAgICJvYnMtcm91dGUgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgb2JzX3JvdXRlLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc6JywgJ2VuZC1vZi1vYnMtcm91dGUtbWFya2VyJykpCisgICAgcmV0dXJuIG9ic19yb3V0ZSwgdmFsdWVbMTpdCisKK2RlZiBnZXRfYW5nbGVfYWRkcih2YWx1ZSk6CisgICAgIiIiIGFuZ2xlLWFkZHIgPSBbQ0ZXU10gIjwiIGFkZHItc3BlYyAiPiIgW0NGV1NdIC8gb2JzLWFuZ2xlLWFkZHIKKyAgICAgICAgb2JzLWFuZ2xlLWFkZHIgPSBbQ0ZXU10gIjwiIG9icy1yb3V0ZSBhZGRyLXNwZWMgIj4iIFtDRldTXQorCisgICAgIiIiCisgICAgYW5nbGVfYWRkciA9IEFuZ2xlQWRkcigpCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhbmdsZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJzwnOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBhbmdsZS1hZGRyIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGFuZ2xlX2FkZHIuYXBwZW5kKFZhbHVlVGVybWluYWwoJzwnLCAnYW5nbGUtYWRkci1zdGFydCcpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgIyBBbHRob3VnaCBpdCBpcyBub3QgbGVnYWwgcGVyIFJGQzUzMjIsIFNNVFAgdXNlcyAnPD4nIGluIGNlcnRhaW4KKyAgICAjIGNpcmN1bXN0YW5jZXMuCisgICAgaWYgdmFsdWVbMF0gPT0gJz4nOgorICAgICAgICBhbmdsZV9hZGRyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc+JywgJ2FuZ2xlLWFkZHItZW5kJykpCisgICAgICAgIGFuZ2xlX2FkZHIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAibnVsbCBhZGRyLXNwZWMgaW4gYW5nbGUtYWRkciIpKQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICByZXR1cm4gYW5nbGVfYWRkciwgdmFsdWUKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hZGRyX3NwZWModmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfb2JzX3JvdXRlKHZhbHVlKQorICAgICAgICAgICAgYW5nbGVfYWRkci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIm9ic29sZXRlIHJvdXRlIHNwZWNpZmljYXRpb24gaW4gYW5nbGUtYWRkciIpKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYWRkci1zcGVjIG9yIG9icy1yb3V0ZSBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICAgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hZGRyX3NwZWModmFsdWUpCisgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICc+JzoKKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBlbHNlOgorICAgICAgICBhbmdsZV9hZGRyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIm1pc3NpbmcgdHJhaWxpbmcgJz4nIG9uIGFuZ2xlLWFkZHIiKSkKKyAgICBhbmdsZV9hZGRyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc+JywgJ2FuZ2xlLWFkZHItZW5kJykpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGFuZ2xlX2FkZHIsIHZhbHVlCisKK2RlZiBnZXRfZGlzcGxheV9uYW1lKHZhbHVlKToKKyAgICAiIiIgZGlzcGxheS1uYW1lID0gcGhyYXNlCisKKyAgICBCZWNhdXNlIHRoaXMgaXMgc2ltcGx5IGEgbmFtZS1ydWxlLCB3ZSBkb24ndCByZXR1cm4gYSBkaXNwbGF5LW5hbWUKKyAgICB0b2tlbiBjb250YWluaW5nIGEgcGhyYXNlLCBidXQgcmF0aGVyIGEgZGlzcGxheS1uYW1lIHRva2VuIHdpdGgKKyAgICB0aGUgY29udGVudCBvZiB0aGUgcGhyYXNlLgorCisgICAgIiIiCisgICAgZGlzcGxheV9uYW1lID0gRGlzcGxheU5hbWUoKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisgICAgZGlzcGxheV9uYW1lLmV4dGVuZCh0b2tlbls6XSkKKyAgICBkaXNwbGF5X25hbWUuZGVmZWN0cyA9IHRva2VuLmRlZmVjdHNbOl0KKyAgICByZXR1cm4gZGlzcGxheV9uYW1lLCB2YWx1ZQorCisKK2RlZiBnZXRfbmFtZV9hZGRyKHZhbHVlKToKKyAgICAiIiIgbmFtZS1hZGRyID0gW2Rpc3BsYXktbmFtZV0gYW5nbGUtYWRkcgorCisgICAgIiIiCisgICAgbmFtZV9hZGRyID0gTmFtZUFkZHIoKQorICAgICMgQm90aCB0aGUgb3B0aW9uYWwgZGlzcGxheSBuYW1lIGFuZCB0aGUgYW5nbGUtYWRkciBjYW4gc3RhcnQgd2l0aCBjZndzLgorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbmFtZS1hZGRyIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQobGVhZGVyKSkKKyAgICBpZiB2YWx1ZVswXSAhPSAnPCc6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIG5hbWUtYWRkciBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Rpc3BsYXlfbmFtZSh2YWx1ZSkKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIG5hbWUtYWRkciBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHRva2VuKSkKKyAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdG9rZW5bMF1bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKKyAgICAgICAgbmFtZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYW5nbGVfYWRkcih2YWx1ZSkKKyAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgbmFtZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gbmFtZV9hZGRyLCB2YWx1ZQorCitkZWYgZ2V0X21haWxib3godmFsdWUpOgorICAgICIiIiBtYWlsYm94ID0gbmFtZS1hZGRyIC8gYWRkci1zcGVjCisKKyAgICAiIiIKKyAgICAjIFRoZSBvbmx5IHdheSB0byBmaWd1cmUgb3V0IGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBuYW1lLWFkZHIgb3IgYW4KKyAgICAjIGFkZHItc3BlYyBpcyB0byB0cnkgcGFyc2luZyBlYWNoIG9uZS4KKyAgICBtYWlsYm94ID0gTWFpbGJveCgpCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbmFtZV9hZGRyKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FkZHJfc3BlYyh2YWx1ZSkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIG1haWxib3ggYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QpCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHRva2VuLmFsbF9kZWZlY3RzKToKKyAgICAgICAgbWFpbGJveC50b2tlbl90eXBlID0gJ2ludmFsaWQtbWFpbGJveCcKKyAgICBtYWlsYm94LmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gbWFpbGJveCwgdmFsdWUKKworZGVmIGdldF9pbnZhbGlkX21haWxib3godmFsdWUsIGVuZGNoYXJzKToKKyAgICAiIiIgUmVhZCBldmVyeXRoaW5nIHVwIHRvIG9uZSBvZiB0aGUgY2hhcnMgaW4gZW5kY2hhcnMuCisKKyAgICBUaGlzIGlzIG91dHNpZGUgdGhlIGZvcm1hbCBncmFtbWFyLiAgVGhlIEludmFsaWRNYWlsYm94IFRva2VuTGlzdCB0aGF0IGlzCisgICAgcmV0dXJuZWQgYWN0cyBsaWtlIGEgTWFpbGJveCwgYnV0IHRoZSBkYXRhIGF0dHJpYnV0ZXMgYXJlIE5vbmUuCisKKyAgICAiIiIKKyAgICBpbnZhbGlkX21haWxib3ggPSBJbnZhbGlkTWFpbGJveCgpCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdIG5vdCBpbiBlbmRjaGFyczoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CisgICAgICAgICAgICBpbnZhbGlkX21haWxib3guYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIGludmFsaWRfbWFpbGJveC5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGludmFsaWRfbWFpbGJveCwgdmFsdWUKKworZGVmIGdldF9tYWlsYm94X2xpc3QodmFsdWUpOgorICAgICIiIiBtYWlsYm94LWxpc3QgPSAobWFpbGJveCAqKCIsIiBtYWlsYm94KSkgLyBvYnMtbWJveC1saXN0CisgICAgICAgIG9icy1tYm94LWxpc3QgPSAqKFtDRldTXSAiLCIpIG1haWxib3ggKigiLCIgW21haWxib3ggLyBDRldTXSkKKworICAgIEZvciB0aGlzIHJvdXRpbmUgd2UgZ28gb3V0c2lkZSB0aGUgZm9ybWFsIGdyYW1tYXIgaW4gb3JkZXIgdG8gaW1wcm92ZSBlcnJvcgorICAgIGhhbmRsaW5nLiAgV2UgcmVjb2duaXplIHRoZSBlbmQgb2YgdGhlIG1haWxib3ggbGlzdCBvbmx5IGF0IHRoZSBlbmQgb2YgdGhlCisgICAgdmFsdWUgb3IgYXQgYSAnOycgKHRoZSBncm91cCB0ZXJtaW5hdG9yKS4gIFRoaXMgaXMgc28gdGhhdCB3ZSBjYW4gdHVybgorICAgIGludmFsaWQgbWFpbGJveGVzIGludG8gSW52YWxpZE1haWxib3ggdG9rZW5zIGFuZCBjb250aW51ZSBwYXJzaW5nIGFueQorICAgIHJlbWFpbmluZyB2YWxpZCBtYWlsYm94ZXMuICBXZSBhbHNvIGFsbG93IGFsbCBtYWlsYm94IGVudHJpZXMgdG8gYmUgbnVsbCwKKyAgICBhbmQgdGhpcyBjb25kaXRpb24gaXMgaGFuZGxlZCBhcHByb3ByaWF0ZWx5IGF0IGEgaGlnaGVyIGxldmVsLgorCisgICAgIiIiCisgICAgbWFpbGJveF9saXN0ID0gTWFpbGJveExpc3QoKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9tYWlsYm94KHZhbHVlKQorICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZCh0b2tlbikKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgbGVhZGVyID0gTm9uZQorICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSBpbiAnLDsnOgorICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJlbXB0eSBlbGVtZW50IGluIG1haWxib3gtbGlzdCIpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsOycpCisgICAgICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1haWxib3ggaW4gbWFpbGJveC1saXN0IikpCisgICAgICAgICAgICBlbGlmIHZhbHVlWzBdID09ICcsJzoKKyAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiZW1wdHkgZWxlbWVudCBpbiBtYWlsYm94LWxpc3QiKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJyw7JykKKyAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1haWxib3ggaW4gbWFpbGJveC1saXN0IikpCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gJyw7JzoKKyAgICAgICAgICAgICMgQ3JhcCBhZnRlciBtYWlsYm94OyB0cmVhdCBpdCBhcyBhbiBpbnZhbGlkIG1haWxib3guCisgICAgICAgICAgICAjIFRoZSBtYWlsYm94IGluZm8gd2lsbCBzdGlsbCBiZSBhdmFpbGFibGUuCisgICAgICAgICAgICBtYWlsYm94ID0gbWFpbGJveF9saXN0Wy0xXQorICAgICAgICAgICAgbWFpbGJveC50b2tlbl90eXBlID0gJ2ludmFsaWQtbWFpbGJveCcKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsOycpCisgICAgICAgICAgICBtYWlsYm94LmV4dGVuZCh0b2tlbikKKyAgICAgICAgICAgIG1haWxib3hfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBtYWlsYm94IGluIG1haWxib3gtbGlzdCIpKQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZChMaXN0U2VwYXJhdG9yKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICByZXR1cm4gbWFpbGJveF9saXN0LCB2YWx1ZQorCisKK2RlZiBnZXRfZ3JvdXBfbGlzdCh2YWx1ZSk6CisgICAgIiIiIGdyb3VwLWxpc3QgPSBtYWlsYm94LWxpc3QgLyBDRldTIC8gb2JzLWdyb3VwLWxpc3QKKyAgICAgICAgb2JzLWdyb3VwLWxpc3QgPSAxKihbQ0ZXU10gIiwiKSBbQ0ZXU10KKworICAgICIiIgorICAgIGdyb3VwX2xpc3QgPSBHcm91cExpc3QoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgZ3JvdXBfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGJlZm9yZSBncm91cC1saXN0IikpCisgICAgICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gZW1haWwgcGFyc2luZywgc2luY2UgQ0ZXUy1vbmx5IGlzIGEKKyAgICAgICAgICAgICMgbGVnYWwgYWx0ZXJuYXRpdmUgdG8gZ3JvdXAtbGlzdCBpbiBhIGdyb3VwLCB3aGljaCBpcyB0aGUgb25seQorICAgICAgICAgICAgIyBwbGFjZSBncm91cC1saXN0IGFwcGVhcnMuCisgICAgICAgICAgICBncm91cF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGluIGdyb3VwLWxpc3QiKSkKKyAgICAgICAgICAgIGdyb3VwX2xpc3QuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorICAgICAgICBpZiB2YWx1ZVswXSA9PSAnOyc6CisgICAgICAgICAgICBncm91cF9saXN0LmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICByZXR1cm4gZ3JvdXBfbGlzdCwgdmFsdWUKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbWFpbGJveF9saXN0KHZhbHVlKQorICAgIGlmIGxlbih0b2tlbi5hbGxfbWFpbGJveGVzKT09MDoKKyAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZ3JvdXBfbGlzdC5hcHBlbmQobGVhZGVyKQorICAgICAgICBncm91cF9saXN0LmV4dGVuZCh0b2tlbikKKyAgICAgICAgZ3JvdXBfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZ3JvdXAtbGlzdCB3aXRoIGVtcHR5IGVudHJpZXMiKSkKKyAgICAgICAgcmV0dXJuIGdyb3VwX2xpc3QsIHZhbHVlCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIGdyb3VwX2xpc3QuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorCitkZWYgZ2V0X2dyb3VwKHZhbHVlKToKKyAgICAiIiIgZ3JvdXAgPSBkaXNwbGF5LW5hbWUgIjoiIFtncm91cC1saXN0XSAiOyIgW0NGV1NdCisKKyAgICAiIiIKKyAgICBncm91cCA9IEdyb3VwKCkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZGlzcGxheV9uYW1lKHZhbHVlKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnOic6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCAnOicgYXQgZW5kIG9mIGdyb3VwICIKKyAgICAgICAgICAgICJkaXNwbGF5IG5hbWUgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgZ3JvdXAuYXBwZW5kKHRva2VuKQorICAgIGdyb3VwLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc6JywgJ2dyb3VwLWRpc3BsYXktbmFtZS10ZXJtaW5hdG9yJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJzsnOgorICAgICAgICBncm91cC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOycsICdncm91cC10ZXJtaW5hdG9yJykpCisgICAgICAgIHJldHVybiBncm91cCwgdmFsdWVbMTpdCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2dyb3VwX2xpc3QodmFsdWUpCisgICAgZ3JvdXAuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgZ3JvdXAuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBpbiBncm91cCIpKQorICAgIGlmIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgJzsnIGF0IGVuZCBvZiBncm91cCBidXQgZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCisgICAgZ3JvdXAuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAnZ3JvdXAtdGVybWluYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZ3JvdXAuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBncm91cCwgdmFsdWUKKworZGVmIGdldF9hZGRyZXNzKHZhbHVlKToKKyAgICAiIiIgYWRkcmVzcyA9IG1haWxib3ggLyBncm91cAorCisgICAgTm90ZSB0aGF0IGNvdW50ZXItaW50dWl0aXZlbHksIGFuIGFkZHJlc3MgY2FuIGJlIGVpdGhlciBhIHNpbmdsZSBhZGRyZXNzIG9yCisgICAgYSBsaXN0IG9mIGFkZHJlc3NlcyAoYSBncm91cCkuICBUaGlzIGlzIHdoeSB0aGUgcmV0dXJuZWQgQWRkcmVzcyBvYmplY3QgaGFzCisgICAgYSAnbWFpbGJveGVzJyBhdHRyaWJ1dGUgd2hpY2ggdHJlYXRzIGEgc2luZ2xlIGFkZHJlc3MgYXMgYSBsaXN0IG9mIGxlbmd0aAorICAgIG9uZS4gIFdoZW4geW91IG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRvIHR3byBjYXNlcywgZXh0cmFjdCB0aGUgc2luZ2xlCisgICAgZWxlbWVudCwgd2hpY2ggaXMgZWl0aGVyIGEgbWFpbGJveCBvciBhIGdyb3VwIHRva2VuLgorCisgICAgIiIiCisgICAgIyBUaGUgZm9ybWFsIGdyYW1tYXIgaXNuJ3QgdmVyeSBoZWxwZnVsIHdoZW4gcGFyc2luZyBhbiBhZGRyZXNzLiAgbWFpbGJveAorICAgICMgYW5kIGdyb3VwLCBlc3BlY2lhbGx5IHdoZW4gYWxsb3dpbmcgZm9yIG9ic29sZXRlIGZvcm1zLCBzdGFydCBvZmYgdmVyeQorICAgICMgc2ltaWxhcmx5LiAgSXQgaXMgb25seSB3aGVuIHlvdSByZWFjaCBvbmUgb2YgQCwgPCwgb3IgOiB0aGF0IHlvdSBrbm93CisgICAgIyB3aGF0IHlvdSd2ZSBnb3QuICBTbywgd2UgdHJ5IGVhY2ggb25lIGluIHR1cm4sIHN0YXJ0aW5nIHdpdGggdGhlIG1vcmUKKyAgICAjIGxpa2VseSBvZiB0aGUgdHdvLiAgV2UgY291bGQgcGVyaGFwcyBtYWtlIHRoaXMgbW9yZSBlZmZpY2llbnQgYnkgbG9va2luZworICAgICMgZm9yIGEgcGhyYXNlIGFuZCB0aGVuIGJyYW5jaGluZyBiYXNlZCBvbiB0aGUgbmV4dCBjaGFyYWN0ZXIsIGJ1dCB0aGF0CisgICAgIyB3b3VsZCBiZSBhIHByZW1hdHVyZSBvcHRpbWl6YXRpb24uCisgICAgYWRkcmVzcyA9IEFkZHJlc3MoKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2dyb3VwKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X21haWxib3godmFsdWUpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBhZGRyZXNzIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGFkZHJlc3MuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBhZGRyZXNzLCB2YWx1ZQorCitkZWYgZ2V0X2FkZHJlc3NfbGlzdCh2YWx1ZSk6CisgICAgIiIiIGFkZHJlc3NfbGlzdCA9IChhZGRyZXNzICooIiwiIGFkZHJlc3MpKSAvIG9icy1hZGRyLWxpc3QKKyAgICAgICAgb2JzLWFkZHItbGlzdCA9ICooW0NGV1NdICIsIikgYWRkcmVzcyAqKCIsIiBbYWRkcmVzcyAvIENGV1NdKQorCisgICAgV2UgZGVwYXJ0IGZyb20gdGhlIGZvcm1hbCBncmFtbWFyIGhlcmUgYnkgY29udGludWluZyB0byBwYXJzZSB1bnRpbCB0aGUgZW5kCisgICAgb2YgdGhlIGlucHV0LCBhc3N1bWluZyB0aGUgaW5wdXQgdG8gYmUgZW50aXJlbHkgY29tcG9zZWQgb2YgYW4KKyAgICBhZGRyZXNzLWxpc3QuICBUaGlzIGlzIGFsd2F5cyB0cnVlIGluIGVtYWlsIHBhcnNpbmcsIGFuZCBhbGxvd3MgdXMKKyAgICB0byBza2lwIGludmFsaWQgYWRkcmVzc2VzIHRvIHBhcnNlIGFkZGl0aW9uYWwgdmFsaWQgb25lcy4KKworICAgICIiIgorICAgIGFkZHJlc3NfbGlzdCA9IEFkZHJlc3NMaXN0KCkKKyAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FkZHJlc3ModmFsdWUpCisgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKHRva2VuKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbGVhZGVyID0gTm9uZQorICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSA9PSAnLCc6CisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQobGVhZGVyKQorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgImFkZHJlc3MtbGlzdCBlbnRyeSB3aXRoIG5vIGNvbnRlbnQiKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLCcpCisgICAgICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQoQWRkcmVzcyhbdG9rZW5dKSkKKyAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgYWRkcmVzcyBpbiBhZGRyZXNzLWxpc3QiKSkKKyAgICAgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJlbXB0eSBlbGVtZW50IGluIGFkZHJlc3MtbGlzdCIpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLCcpCisgICAgICAgICAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQoQWRkcmVzcyhbdG9rZW5dKSkKKyAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGFkZHJlc3MgaW4gYWRkcmVzcy1saXN0IikpCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnLCc6CisgICAgICAgICAgICAjIENyYXAgYWZ0ZXIgYWRkcmVzczsgdHJlYXQgaXQgYXMgYW4gaW52YWxpZCBtYWlsYm94LgorICAgICAgICAgICAgIyBUaGUgbWFpbGJveCBpbmZvIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLgorICAgICAgICAgICAgbWFpbGJveCA9IGFkZHJlc3NfbGlzdFstMV1bMF0KKyAgICAgICAgICAgIG1haWxib3gudG9rZW5fdHlwZSA9ICdpbnZhbGlkLW1haWxib3gnCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLCcpCisgICAgICAgICAgICBtYWlsYm94LmV4dGVuZCh0b2tlbikKKyAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBhZGRyZXNzIGluIGFkZHJlc3MtbGlzdCIpKQorICAgICAgICBpZiB2YWx1ZTogICMgTXVzdCBiZSBhICwgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnLCcsICdsaXN0LXNlcGFyYXRvcicpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICByZXR1cm4gYWRkcmVzc19saXN0LCB2YWx1ZQorCisjCisjIFhYWDogQXMgSSBiZWdpbiB0byBhZGQgYWRkaXRpb25hbCBoZWFkZXIgcGFyc2VycywgSSdtIHJlYWxpemluZyB3ZSBwcm9iYWJseQorIyBoYXZlIHR3byBsZXZlbCBvZiBwYXJzZXIgcm91dGluZXM6IHRoZSBnZXRfWFhYIG1ldGhvZHMgdGhhdCBnZXQgYSB0b2tlbiBpbgorIyB0aGUgZ3JhbW1hciwgYW5kIHBhcnNlX1hYWCBtZXRob2RzIHRoYXQgcGFyc2UgYW4gZW50aXJlIGZpZWxkIHZhbHVlLiAgU28KKyMgZ2V0X2FkZHJlc3NfbGlzdCBhYm92ZSBzaG91bGQgcmVhbGx5IGJlIGEgcGFyc2VfIG1ldGhvZCwgYXMgcHJvYmFibHkgc2hvdWxkCisjIGJlIGdldF91bnN0cnVjdHVyZWQuCisjCisKK2RlZiBwYXJzZV9taW1lX3ZlcnNpb24odmFsdWUpOgorICAgICIiIiBtaW1lLXZlcnNpb24gPSBbQ0ZXU10gMSpkaWdpdCBbQ0ZXU10gIi4iIFtDRldTXSAxKmRpZ2l0IFtDRldTXQorCisgICAgIiIiCisgICAgIyBUaGUgW0NGV1NdIGlzIGltcGxpY2l0IGluIHRoZSBSRkMgMjA0NSBCTkYuCisgICAgIyBYWFg6IFRoaXMgcm91dGluZSBpcyBhIGJpdCB2ZXJib3NlLCBzaG91bGQgZmFjdG9yIG91dCBhIGdldF9pbnQgbWV0aG9kLgorICAgIG1pbWVfdmVyc2lvbiA9IE1JTUVWZXJzaW9uKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBNSU1FIHZlcnNpb24gbnVtYmVyIChlZzogMS4wKSIpKQorICAgICAgICByZXR1cm4gbWltZV92ZXJzaW9uCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKHRva2VuKQorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAorICAgICAgICAgICAgICAgICJFeHBlY3RlZCBNSU1FIHZlcnNpb24gbnVtYmVyIGJ1dCBmb3VuZCBvbmx5IENGV1MiKSkKKyAgICBkaWdpdHMgPSAnJworICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnLicgYW5kIHZhbHVlWzBdIG5vdCBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgZGlnaXRzICs9IHZhbHVlWzBdCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgbm90IGRpZ2l0cy5pc2RpZ2l0KCk6CisgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBNSU1FIG1ham9yIHZlcnNpb24gbnVtYmVyIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQoZGlnaXRzKSkpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbChkaWdpdHMsICd4dGV4dCcpKQorICAgIGVsc2U6CisgICAgICAgIG1pbWVfdmVyc2lvbi5tYWpvciA9IGludChkaWdpdHMpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbChkaWdpdHMsICdkaWdpdHMnKSkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnLic6CisgICAgICAgIGlmIG1pbWVfdmVyc2lvbi5tYWpvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiSW5jb21wbGV0ZSBNSU1FIHZlcnNpb247IGZvdW5kIG9ubHkgbWFqb3IgbnVtYmVyIikpCisgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlLCAneHRleHQnKSkKKyAgICAgICAgcmV0dXJuIG1pbWVfdmVyc2lvbgorICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnLicsICd2ZXJzaW9uLXNlcGFyYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGlmIG1pbWVfdmVyc2lvbi5tYWpvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiSW5jb21wbGV0ZSBNSU1FIHZlcnNpb247IGZvdW5kIG9ubHkgbWFqb3IgbnVtYmVyIikpCisgICAgICAgIHJldHVybiBtaW1lX3ZlcnNpb24KKyAgICBkaWdpdHMgPSAnJworICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGRpZ2l0cyArPSB2YWx1ZVswXQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIG5vdCBkaWdpdHMuaXNkaWdpdCgpOgorICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgTUlNRSBtaW5vciB2ZXJzaW9uIG51bWJlciBidXQgZm91bmQgeyFyfSIuZm9ybWF0KGRpZ2l0cykpKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAneHRleHQnKSkKKyAgICBlbHNlOgorICAgICAgICBtaW1lX3ZlcnNpb24ubWlub3IgPSBpbnQoZGlnaXRzKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAnZGlnaXRzJykpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZToKKyAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4Y2VzcyBub24tQ0ZXUyB0ZXh0IGFmdGVyIE1JTUUgdmVyc2lvbiIpKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWUsICd4dGV4dCcpKQorICAgIHJldHVybiBtaW1lX3ZlcnNpb24KKworZGVmIGdldF9pbnZhbGlkX3BhcmFtZXRlcih2YWx1ZSk6CisgICAgIiIiIFJlYWQgZXZlcnl0aGluZyB1cCB0byB0aGUgbmV4dCAnOycuCisKKyAgICBUaGlzIGlzIG91dHNpZGUgdGhlIGZvcm1hbCBncmFtbWFyLiAgVGhlIEludmFsaWRQYXJhbWV0ZXIgVG9rZW5MaXN0IHRoYXQgaXMKKyAgICByZXR1cm5lZCBhY3RzIGxpa2UgYSBQYXJhbWV0ZXIsIGJ1dCB0aGUgZGF0YSBhdHRyaWJ1dGVzIGFyZSBOb25lLgorCisgICAgIiIiCisgICAgaW52YWxpZF9wYXJhbWV0ZXIgPSBJbnZhbGlkUGFyYW1ldGVyKCkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgIGludmFsaWRfcGFyYW1ldGVyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIGludmFsaWRfcGFyYW1ldGVyLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gaW52YWxpZF9wYXJhbWV0ZXIsIHZhbHVlCisKK2RlZiBnZXRfdHRleHQodmFsdWUpOgorICAgICIiInR0ZXh0ID0gPG1hdGNoZXMgX3R0ZXh0X21hdGNoZXI+CisKKyAgICBXZSBhbGxvdyBhbnkgbm9uLVRPS0VOX0VORFMgaW4gdHRleHQsIGJ1dCBhZGQgZGVmZWN0cyB0byB0aGUgdG9rZW4ncworICAgIGRlZmVjdHMgbGlzdCBpZiB3ZSBmaW5kIG5vbi10dGV4dCBjaGFyYWN0ZXJzLiAgV2UgYWxzbyByZWdpc3RlciBkZWZlY3RzIGZvcgorICAgICphbnkqIG5vbi1wcmludGFibGVzIGV2ZW4gdGhvdWdoIHRoZSBSRkMgZG9lc24ndCBleGNsdWRlIGFsbCBvZiB0aGVtLAorICAgIGJlY2F1c2Ugd2UgZm9sbG93IHRoZSBzcGlyaXQgb2YgUkZDIDUzMjIuCisKKyAgICAiIiIKKyAgICBtID0gX25vbl90b2tlbl9lbmRfbWF0Y2hlcih2YWx1ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgdHRleHQgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdHRleHQgPSBtLmdyb3VwKCkKKyAgICB2YWx1ZSA9IHZhbHVlW2xlbih0dGV4dCk6XQorICAgIHR0ZXh0ID0gVmFsdWVUZXJtaW5hbCh0dGV4dCwgJ3R0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQodHRleHQpCisgICAgcmV0dXJuIHR0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X3Rva2VuKHZhbHVlKToKKyAgICAiIiJ0b2tlbiA9IFtDRldTXSAxKnR0ZXh0IFtDRldTXQorCisgICAgVGhlIFJGQyBlcXVpdmFsZW50IG9mIHR0ZXh0IGlzIGFueSBVUy1BU0NJSSBjaGFycyBleGNlcHQgc3BhY2UsIGN0bHMsIG9yCisgICAgdHNwZWNpYWxzLiAgV2UgYWxzbyBleGNsdWRlIHRhYnMgZXZlbiB0aG91Z2ggdGhlIFJGQyBkb2Vzbid0LgorCisgICAgVGhlIFJGQyBpbXBsaWVzIHRoZSBDRldTIGJ1dCBpcyBub3QgZXhwbGljaXQgYWJvdXQgaXQgaW4gdGhlIEJORi4KKworICAgICIiIgorICAgIG10b2tlbiA9IFRva2VuKCkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtdG9rZW4uYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBUT0tFTl9FTkRTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCB0b2tlbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdHRleHQodmFsdWUpCisgICAgbXRva2VuLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtdG9rZW4uYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBtdG9rZW4sIHZhbHVlCisKK2RlZiBnZXRfYXR0cnRleHQodmFsdWUpOgorICAgICIiImF0dHJ0ZXh0ID0gMSooYW55IG5vbi1BVFRSSUJVVEVfRU5EUyBjaGFyYWN0ZXIpCisKKyAgICBXZSBhbGxvdyBhbnkgbm9uLUFUVFJJQlVURV9FTkRTIGluIGF0dHJ0ZXh0LCBidXQgYWRkIGRlZmVjdHMgdG8gdGhlCisgICAgdG9rZW4ncyBkZWZlY3RzIGxpc3QgaWYgd2UgZmluZCBub24tYXR0cnRleHQgY2hhcmFjdGVycy4gIFdlIGFsc28gcmVnaXN0ZXIKKyAgICBkZWZlY3RzIGZvciAqYW55KiBub24tcHJpbnRhYmxlcyBldmVuIHRob3VnaCB0aGUgUkZDIGRvZXNuJ3QgZXhjbHVkZSBhbGwgb2YKKyAgICB0aGVtLCBiZWNhdXNlIHdlIGZvbGxvdyB0aGUgc3Bpcml0IG9mIFJGQyA1MzIyLgorCisgICAgIiIiCisgICAgbSA9IF9ub25fYXR0cmlidXRlX2VuZF9tYXRjaGVyKHZhbHVlKQorICAgIGlmIG5vdCBtOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBhdHRydGV4dCBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkKKyAgICBhdHRydGV4dCA9IG0uZ3JvdXAoKQorICAgIHZhbHVlID0gdmFsdWVbbGVuKGF0dHJ0ZXh0KTpdCisgICAgYXR0cnRleHQgPSBWYWx1ZVRlcm1pbmFsKGF0dHJ0ZXh0LCAnYXR0cnRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChhdHRydGV4dCkKKyAgICByZXR1cm4gYXR0cnRleHQsIHZhbHVlCisKK2RlZiBnZXRfYXR0cmlidXRlKHZhbHVlKToKKyAgICAiIiIgW0NGV1NdIDEqYXR0cnRleHQgW0NGV1NdCisKKyAgICBUaGlzIHZlcnNpb24gb2YgdGhlIEJORiBtYWtlcyB0aGUgQ0ZXUyBleHBsaWNpdCwgYW5kIGFzIHVzdWFsIHdlIHVzZSBhCisgICAgdmFsdWUgdGVybWluYWwgZm9yIHRoZSBhY3R1YWwgcnVuIG9mIGNoYXJhY3RlcnMuICBUaGUgUkZDIGVxdWl2YWxlbnQgb2YKKyAgICBhdHRydGV4dCBpcyB0aGUgdG9rZW4gY2hhcmFjdGVycywgd2l0aCB0aGUgc3VidHJhY3Rpb24gb2YgJyonLCAiJyIsIGFuZCAnJScuCisgICAgV2UgaW5jbHVkZSB0YWIgaW4gdGhlIGV4Y2x1ZGVkIHNldCBqdXN0IGFzIHdlIGRvIGZvciB0b2tlbi4KKworICAgICIiIgorICAgIGF0dHJpYnV0ZSA9IEF0dHJpYnV0ZSgpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQVRUUklCVVRFX0VORFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIHRva2VuIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdHRydGV4dCh2YWx1ZSkKKyAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGF0dHJpYnV0ZSwgdmFsdWUKKworZGVmIGdldF9leHRlbmRlZF9hdHRydGV4dCh2YWx1ZSk6CisgICAgIiIiYXR0cnRleHQgPSAxKihhbnkgbm9uLUFUVFJJQlVURV9FTkRTIGNoYXJhY3RlciBwbHVzICclJykKKworICAgIFRoaXMgaXMgYSBzcGVjaWFsIHBhcnNpbmcgcm91dGluZSBzbyB0aGF0IHdlIGdldCBhIHZhbHVlIHRoYXQKKyAgICBpbmNsdWRlcyAlIGVzY2FwZXMgYXMgYSBzaW5nbGUgc3RyaW5nICh3aGljaCB3ZSBkZWNvZGUgYXMgYSBzaW5nbGUKKyAgICBzdHJpbmcgbGF0ZXIpLgorCisgICAgIiIiCisgICAgbSA9IF9ub25fZXh0ZW5kZWRfYXR0cmlidXRlX2VuZF9tYXRjaGVyKHZhbHVlKQorICAgIGlmIG5vdCBtOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBleHRlbmRlZCBhdHRydGV4dCBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkKKyAgICBhdHRydGV4dCA9IG0uZ3JvdXAoKQorICAgIHZhbHVlID0gdmFsdWVbbGVuKGF0dHJ0ZXh0KTpdCisgICAgYXR0cnRleHQgPSBWYWx1ZVRlcm1pbmFsKGF0dHJ0ZXh0LCAnZXh0ZW5kZWQtYXR0cnRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChhdHRydGV4dCkKKyAgICByZXR1cm4gYXR0cnRleHQsIHZhbHVlCisKK2RlZiBnZXRfZXh0ZW5kZWRfYXR0cmlidXRlKHZhbHVlKToKKyAgICAiIiIgW0NGV1NdIDEqZXh0ZW5kZWRfYXR0cnRleHQgW0NGV1NdCisKKyAgICBUaGlzIGlzIGxpa2UgdGhlIG5vbi1leHRlbmRlZCB2ZXJzaW9uIGV4Y2VwdCB3ZSBhbGxvdyAlIGNoYXJhY3RlcnMsIHNvIHRoYXQKKyAgICB3ZSBjYW4gcGljayB1cCBhbiBlbmNvZGVkIHZhbHVlIGFzIGEgc2luZ2xlIHN0cmluZy4KKworICAgICIiIgorICAgICMgWFhYOiBzaG91bGQgd2UgaGF2ZSBhbiBFeHRlbmRlZEF0dHJpYnV0ZSBUb2tlbkxpc3Q/CisgICAgYXR0cmlidXRlID0gQXR0cmlidXRlKCkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgdG9rZW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2V4dGVuZGVkX2F0dHJ0ZXh0KHZhbHVlKQorICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYXR0cmlidXRlLCB2YWx1ZQorCitkZWYgZ2V0X3NlY3Rpb24odmFsdWUpOgorICAgICIiIiAnKicgZGlnaXRzCisKKyAgICBUaGUgZm9ybWFsIEJORiBpcyBtb3JlIGNvbXBsaWNhdGVkIGJlY2F1c2UgbGVhZGluZyAwcyBhcmUgbm90IGFsbG93ZWQuICBXZQorICAgIGNoZWNrIGZvciB0aGF0IGFuZCBhZGQgYSBkZWZlY3QuICBXZSBhbHNvIGFzc3VtZSBubyBDRldTIGlzIGFsbG93ZWQgYmV0d2VlbgorICAgIHRoZSAnKicgYW5kIHRoZSBkaWdpdHMsIHRob3VnaCB0aGUgUkZDIGlzIG5vdCBjcnlzdGFsIGNsZWFyIG9uIHRoYXQuCisgICAgVGhlIGNhbGxlciBzaG91bGQgYWxyZWFkeSBoYXZlIGRlYWx0IHdpdGggbGVhZGluZyBDRldTLgorCisgICAgIiIiCisgICAgc2VjdGlvbiA9IFNlY3Rpb24oKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnKic6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCBzZWN0aW9uIGJ1dCBmb3VuZCB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKSkKKyAgICBzZWN0aW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCcqJywgJ3NlY3Rpb24tbWFya2VyJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBub3QgdmFsdWUgb3Igbm90IHZhbHVlWzBdLmlzZGlnaXQoKToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHNlY3Rpb24gbnVtYmVyIGJ1dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3VuZCB7fSIuZm9ybWF0KHZhbHVlKSkKKyAgICBkaWdpdHMgPSAnJworICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXS5pc2RpZ2l0KCk6CisgICAgICAgIGRpZ2l0cyArPSB2YWx1ZVswXQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIGRpZ2l0c1swXSA9PSAnMCcgYW5kIGRpZ2l0cyAhPSAnMCc6CisgICAgICAgIHNlY3Rpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJFcnJvcigic2VjdGlvbiBudW1iZXIiCisgICAgICAgICAgICAiaGFzIGFuIGludmFsaWQgbGVhZGluZyAwIikpCisgICAgc2VjdGlvbi5udW1iZXIgPSBpbnQoZGlnaXRzKQorICAgIHNlY3Rpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAnZGlnaXRzJykpCisgICAgcmV0dXJuIHNlY3Rpb24sIHZhbHVlCisKKworZGVmIGdldF92YWx1ZSh2YWx1ZSk6CisgICAgIiIiIHF1b3RlZC1zdHJpbmcgLyBhdHRyaWJ1dGUKKworICAgICIiIgorICAgIHYgPSBWYWx1ZSgpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgdmFsdWUgYnV0IGZvdW5kIGVuZCBvZiBzdHJpbmciKQorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHZhbHVlIGJ1dCBmb3VuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IHt9Ii5mb3JtYXQobGVhZGVyKSkKKyAgICBpZiB2YWx1ZVswXSA9PSAnIic6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xdW90ZWRfc3RyaW5nKHZhbHVlKQorICAgIGVsc2U6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9leHRlbmRlZF9hdHRyaWJ1dGUodmFsdWUpCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIHYuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiB2LCB2YWx1ZQorCitkZWYgZ2V0X3BhcmFtZXRlcih2YWx1ZSk6CisgICAgIiIiIGF0dHJpYnV0ZSBbc2VjdGlvbl0gWyIqIl0gW0NGV1NdICI9IiB2YWx1ZQorCisgICAgVGhlIENGV1MgaXMgaW1wbGllZCBieSB0aGUgUkZDIGJ1dCBub3QgbWFkZSBleHBsaWNpdCBpbiB0aGUgQk5GLiAgVGhpcworICAgIHNpbXBsaWZpZWQgZm9ybSBvZiB0aGUgQk5GIGZyb20gdGhlIFJGQyBpcyBtYWRlIHRvIGNvbmZvcm0gd2l0aCB0aGUgUkZDIEJORgorICAgIHRocm91Z2ggc29tZSBleHRyYSBjaGVja3MuICBXZSBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIGl0IG1ha2VzIGJvdGggZXJyb3IKKyAgICByZWNvdmVyeSBhbmQgd29ya2luZyB3aXRoIHRoZSByZXN1bHRpbmcgcGFyc2UgdHJlZSBlYXNpZXIuCisgICAgIiIiCisgICAgIyBJdCBpcyBwb3NzaWJsZSBDRldTIHdvdWxkIGFsc28gYmUgaW1wbGljaXRseSBhbGxvd2VkIGJldHdlZW4gdGhlIHNlY3Rpb24KKyAgICAjIGFuZCB0aGUgJ2V4dGVuZGVkLWF0dHJpYnV0ZScgbWFya2VyICh0aGUgJyonKSAsIGJ1dCB3ZSd2ZSBuZXZlciBzZWVuIHRoYXQKKyAgICAjIGluIHRoZSB3aWxkIGFuZCB3ZSB3aWxsIHRoZXJlZm9yZSBpZ25vcmUgdGhlIHBvc3NpYmlsaXR5LgorICAgIHBhcmFtID0gUGFyYW1ldGVyKCkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXR0cmlidXRlKHZhbHVlKQorICAgIHBhcmFtLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gPT0gJzsnOgorICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgiUGFyYW1ldGVyIGNvbnRhaW5zICIKKyAgICAgICAgICAgICJuYW1lICh7fSkgYnV0IG5vIHZhbHVlIi5mb3JtYXQodG9rZW4pKSkKKyAgICAgICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQorICAgIGlmIHZhbHVlWzBdID09ICcqJzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3NlY3Rpb24odmFsdWUpCisgICAgICAgICAgICBwYXJhbS5zZWN0aW9uZWQgPSBUcnVlCisgICAgICAgICAgICBwYXJhbS5hcHBlbmQodG9rZW4pCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkluY29tcGxldGUgcGFyYW1ldGVyIikKKyAgICAgICAgaWYgdmFsdWVbMF0gPT0gJyonOgorICAgICAgICAgICAgcGFyYW0uYXBwZW5kKFZhbHVlVGVybWluYWwoJyonLCAnZXh0ZW5kZWQtcGFyYW1ldGVyLW1hcmtlcicpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgICAgIHBhcmFtLmV4dGVuZGVkID0gVHJ1ZQorICAgIGlmIHZhbHVlWzBdICE9ICc9JzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIlBhcmFtZXRlciBub3QgZm9sbG93ZWQgYnkgJz0nIikKKyAgICBwYXJhbS5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPScsICdwYXJhbWV0ZXItc2VwYXJhdG9yJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgcGFyYW0uYXBwZW5kKHRva2VuKQorICAgIHJlbWFpbmRlciA9IE5vbmUKKyAgICBhcHBlbmR0byA9IHBhcmFtCisgICAgaWYgcGFyYW0uZXh0ZW5kZWQgYW5kIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnIic6CisgICAgICAgICMgTm93IGZvciBzb21lIHNlcmlvdXMgaGFja2VyeSB0byBoYW5kbGUgdGhlIGNvbW1vbiBpbnZhbGlkIGNhc2Ugb2YKKyAgICAgICAgIyBkb3VibGUgcXVvdGVzIGFyb3VuZCBhbiBleHRlbmRlZCB2YWx1ZS4gIFdlIGFsc28gYWNjZXB0ICh3aXRoIGRlZmVjdCkKKyAgICAgICAgIyBhIHZhbHVlIG1hcmtlZCBhcyBlbmNvZGVkIHRoYXQgaXNuJ3QgcmVhbGx5LgorICAgICAgICBxc3RyaW5nLCByZW1haW5kZXIgPSBnZXRfcXVvdGVkX3N0cmluZyh2YWx1ZSkKKyAgICAgICAgaW5uZXJfdmFsdWUgPSBxc3RyaW5nLnN0cmlwcGVkX3ZhbHVlCisgICAgICAgIHNlbWlfdmFsaWQgPSBGYWxzZQorICAgICAgICBpZiBwYXJhbS5zZWN0aW9uX251bWJlciA9PSAwOgorICAgICAgICAgICAgaWYgaW5uZXJfdmFsdWUgYW5kIGlubmVyX3ZhbHVlWzBdID09ICInIjoKKyAgICAgICAgICAgICAgICBzZW1pX3ZhbGlkID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgcmVzdCA9IGdldF9hdHRydGV4dChpbm5lcl92YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiByZXN0IGFuZCByZXN0WzBdID09ICInIjoKKyAgICAgICAgICAgICAgICAgICAgc2VtaV92YWxpZCA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b2tlbiwgcmVzdCA9IGdldF9leHRlbmRlZF9hdHRydGV4dChpbm5lcl92YWx1ZSkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN0OgorICAgICAgICAgICAgICAgICAgICBzZW1pX3ZhbGlkID0gVHJ1ZQorICAgICAgICBpZiBzZW1pX3ZhbGlkOgorICAgICAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIlF1b3RlZCBzdHJpbmcgdmFsdWUgZm9yIGV4dGVuZGVkIHBhcmFtZXRlciBpcyBpbnZhbGlkIikpCisgICAgICAgICAgICBwYXJhbS5hcHBlbmQocXN0cmluZykKKyAgICAgICAgICAgIGZvciB0IGluIHFzdHJpbmc6CisgICAgICAgICAgICAgICAgaWYgdC50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICB0WzpdID0gW10KKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kdG8gPSB0CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB2YWx1ZSA9IGlubmVyX3ZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZW1haW5kZXIgPSBOb25lCisgICAgICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiUGFyYW1ldGVyIG1hcmtlZCBhcyBleHRlbmRlZCBidXQgYXBwZWFycyB0byBoYXZlIGEgIgorICAgICAgICAgICAgICAgICJxdW90ZWQgc3RyaW5nIHZhbHVlIHRoYXQgaXMgbm9uLWVuY29kZWQiKSkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gIiciOgorICAgICAgICB0b2tlbiA9IE5vbmUKKyAgICBlbHNlOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdmFsdWUodmFsdWUpCisgICAgaWYgbm90IHBhcmFtLmV4dGVuZGVkIG9yIHBhcmFtLnNlY3Rpb25fbnVtYmVyID4gMDoKKyAgICAgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICInIjoKKyAgICAgICAgICAgIGFwcGVuZHRvLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgIGlmIHJlbWFpbmRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHZhbHVlLCB2YWx1ZQorICAgICAgICAgICAgICAgIHZhbHVlID0gcmVtYWluZGVyCisgICAgICAgICAgICByZXR1cm4gcGFyYW0sIHZhbHVlCisgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkFwcGFyZW50IGluaXRpYWwtZXh0ZW5kZWQtdmFsdWUgYnV0IGF0dHJpYnV0ZSAiCisgICAgICAgICAgICAid2FzIG5vdCBtYXJrZWQgYXMgZXh0ZW5kZWQgb3Igd2FzIG5vdCBpbml0aWFsIHNlY3Rpb24iKSkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICMgQXNzdW1lIHRoZSBjaGFyc2V0L2xhbmcgaXMgbWlzc2luZyBhbmQgdGhlIHRva2VuIGlzIHRoZSB2YWx1ZS4KKyAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiTWlzc2luZyByZXF1aXJlZCBjaGFyc2V0L2xhbmcgZGVsaW1pdGVycyIpKQorICAgICAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCisgICAgICAgIGlmIHJlbWFpbmRlciBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQorICAgIGVsc2U6CisgICAgICAgIGlmIHRva2VuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZm9yIHQgaW4gdG9rZW46CisgICAgICAgICAgICAgICAgaWYgdC50b2tlbl90eXBlID09ICdleHRlbmRlZC1hdHRydGV4dCc6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB0LnRva2VuX3R5cGUgPT0gJ2F0dHJ0ZXh0JworICAgICAgICAgICAgYXBwZW5kdG8uYXBwZW5kKHQpCisgICAgICAgICAgICBwYXJhbS5jaGFyc2V0ID0gdC52YWx1ZQorICAgICAgICBpZiB2YWx1ZVswXSAhPSAiJyI6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgUkZDMjIzMSBjaGFyL2xhbmcgZW5jb2RpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGltaXRlciwgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpCisgICAgICAgIGFwcGVuZHRvLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCInIiwgJ1JGQzIyMzEgZGVsaW1pdGVyJykpCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAiJyI6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXR0cnRleHQodmFsdWUpCisgICAgICAgICAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICBwYXJhbS5sYW5nID0gdG9rZW4udmFsdWUKKyAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAiJyI6CisgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIFJGQzIyMzEgY2hhci9sYW5nIGVuY29kaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsaW1pdGVyLCBidXQgZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCisgICAgICAgIGFwcGVuZHRvLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCInIiwgJ1JGQzIyMzEgZGVsaW1pdGVyJykpCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgcmVtYWluZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAjIFRyZWF0IHRoZSByZXN0IG9mIHZhbHVlIGFzIGJhcmUgcXVvdGVkIHN0cmluZyBjb250ZW50LgorICAgICAgICB2ID0gVmFsdWUoKQorICAgICAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZndzKHZhbHVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcWNvbnRlbnQodmFsdWUpCisgICAgICAgICAgICB2LmFwcGVuZCh0b2tlbikKKyAgICAgICAgdG9rZW4gPSB2CisgICAgZWxzZToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3ZhbHVlKHZhbHVlKQorICAgIGFwcGVuZHRvLmFwcGVuZCh0b2tlbikKKyAgICBpZiByZW1haW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgIGFzc2VydCBub3QgdmFsdWUsIHZhbHVlCisgICAgICAgIHZhbHVlID0gcmVtYWluZGVyCisgICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQorCitkZWYgcGFyc2VfbWltZV9wYXJhbWV0ZXJzKHZhbHVlKToKKyAgICAiIiIgcGFyYW1ldGVyICooICI7IiBwYXJhbWV0ZXIgKQorCisgICAgVGhhdCBCTkYgaXMgbWVhbnQgdG8gaW5kaWNhdGUgdGhpcyByb3V0aW5lIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlcgorICAgIGZpbmRpbmcgYW5kIGhhbmRsaW5nIHRoZSBsZWFkaW5nICc7Jy4gIFRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgcnVsZSBpbgorICAgIHRoZSBmb3JtYWwgUkZDIGdyYW1tYXIsIGJ1dCBpdCBpcyBtb3JlIGNvbnZlbmllbnQgZm9yIHVzIGZvciB0aGUgc2V0IG9mCisgICAgcGFyYW1ldGVycyB0byBiZSB0cmVhdGVkIGFzIGl0cyBvd24gVG9rZW5MaXN0LgorCisgICAgVGhpcyBpcyAncGFyc2UnIHJvdXRpbmUgYmVjYXVzZSBpdCBjb25zdW1lcyB0aGUgcmVtaW5haW5nIHZhbHVlLCBidXQgaXQKKyAgICB3b3VsZCBuZXZlciBiZSBjYWxsZWQgdG8gcGFyc2UgYSBmdWxsIGhlYWRlci4gIEluc3RlYWQgaXQgaXMgY2FsbGVkIHRvCisgICAgcGFyc2UgZXZlcnl0aGluZyBhZnRlciB0aGUgbm9uLXBhcmFtZXRlciB2YWx1ZSBvZiBhIHNwZWNpZmljIE1JTUUgaGVhZGVyLgorCisgICAgIiIiCisgICAgbWltZV9wYXJhbWV0ZXJzID0gTWltZVBhcmFtZXRlcnMoKQorICAgIHdoaWxlIHZhbHVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGFyYW1ldGVyKHZhbHVlKQorICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZCh0b2tlbikKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWltZV9wYXJhbWV0ZXJzCisgICAgICAgICAgICBpZiB2YWx1ZVswXSA9PSAnOyc6CisgICAgICAgICAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIgZW50cnkgd2l0aCBubyBjb250ZW50IikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX3BhcmFtZXRlcih2YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiBsZWFkZXI6CisgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHBhcmFtZXRlciB7IXJ9Ii5mb3JtYXQodG9rZW4pKSkKKyAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgICAgICMgSnVuayBhZnRlciB0aGUgb3RoZXJ3aXNlIHZhbGlkIHBhcmFtZXRlci4gIE1hcmsgaXQgYXMKKyAgICAgICAgICAgICMgaW52YWxpZCwgYnV0IGl0IHdpbGwgaGF2ZSBhIHZhbHVlLgorICAgICAgICAgICAgcGFyYW0gPSBtaW1lX3BhcmFtZXRlcnNbLTFdCisgICAgICAgICAgICBwYXJhbS50b2tlbl90eXBlID0gJ2ludmFsaWQtcGFyYW1ldGVyJworICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfcGFyYW1ldGVyKHZhbHVlKQorICAgICAgICAgICAgcGFyYW0uZXh0ZW5kKHRva2VuKQorICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIgd2l0aCBpbnZhbGlkIHRyYWlsaW5nIHRleHQgeyFyfSIuZm9ybWF0KHRva2VuKSkpCisgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgIyBNdXN0IGJlIGEgJzsnIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICByZXR1cm4gbWltZV9wYXJhbWV0ZXJzCisKK2RlZiBfZmluZF9taW1lX3BhcmFtZXRlcnModG9rZW5saXN0LCB2YWx1ZSk6CisgICAgIiIiRG8gb3VyIGJlc3QgdG8gZmluZCB0aGUgcGFyYW1ldGVycyBpbiBhbiBpbnZhbGlkIE1JTUUgaGVhZGVyCisKKyAgICAiIiIKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgIHRva2VubGlzdC5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIHRva2VubGlzdC5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByZXR1cm4KKyAgICB0b2tlbmxpc3QuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgIHRva2VubGlzdC5hcHBlbmQocGFyc2VfbWltZV9wYXJhbWV0ZXJzKHZhbHVlWzE6XSkpCisKK2RlZiBwYXJzZV9jb250ZW50X3R5cGVfaGVhZGVyKHZhbHVlKToKKyAgICAiIiIgbWFpbnR5cGUgIi8iIHN1YnR5cGUgKiggIjsiIHBhcmFtZXRlciApCisKKyAgICBUaGUgbWFpbnR5cGUgYW5kIHN1YnN0eXBlIGFyZSB0b2tlbnMuICBUaGVvcmV0aWNhbGx5IHRoZXkgY291bGQKKyAgICBiZSBjaGVja2VkIGFnYWluc3QgdGhlIG9mZmljaWFsIElBTkEgbGlzdCArIHgtdG9rZW4sIGJ1dCB3ZQorICAgIGRvbid0IGRvIHRoYXQuCisgICAgIiIiCisgICAgY3R5cGUgPSBDb250ZW50VHlwZSgpCisgICAgcmVjb3ZlciA9IEZhbHNlCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBjb250ZW50IHR5cGUgc3BlY2lmaWNhdGlvbiIpKQorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF90b2tlbih2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgbWFpbnR5cGUgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoY3R5cGUsIHZhbHVlKQorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICBjdHlwZS5hcHBlbmQodG9rZW4pCisgICAgIyBYWFg6IElmIHdlIHJlYWxseSB3YW50IHRvIGZvbGxvdyB0aGUgZm9ybWFsIGdyYW1tZXIgd2Ugc2hvdWxkIG1ha2UKKyAgICAjIG1hbnR5cGUgYW5kIHN1YnR5cGUgc3BlY2lhbGl6ZWQgVG9rZW5MaXN0cyBoZXJlLiAgUHJvYmFibHkgbm90IHdvcnRoIGl0LgorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnLyc6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkludmFsaWQgY29udGVudCB0eXBlIikpCisgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGN0eXBlLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGN0eXBlCisgICAgY3R5cGUubWFpbnR5cGUgPSB0b2tlbi52YWx1ZS5zdHJpcCgpLmxvd2VyKCkKKyAgICBjdHlwZS5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnLycsICdjb250ZW50LXR5cGUtc2VwYXJhdG9yJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF90b2tlbih2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgc3VidHlwZSBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhjdHlwZSwgdmFsdWUpCisgICAgICAgIHJldHVybiBjdHlwZQorICAgIGN0eXBlLmFwcGVuZCh0b2tlbikKKyAgICBjdHlwZS5zdWJ0eXBlID0gdG9rZW4udmFsdWUuc3RyaXAoKS5sb3dlcigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICBpZiB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIk9ubHkgcGFyYW1ldGVycyBhcmUgdmFsaWQgYWZ0ZXIgY29udGVudCB0eXBlLCBidXQgIgorICAgICAgICAgICAgImZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgICAgICAjIFRoZSBSRkMgcmVxdWlyZXMgdGhhdCBhIHN5bnRhY3RpY2FsbHkgaW52YWxpZCBjb250ZW50LXR5cGUgYmUgdHJlYXRlZAorICAgICAgICAjIGFzIHRleHQvcGxhaW4uICBQZXJoYXBzIHdlIHNob3VsZCBwb3N0ZWwgdGhpcywgYnV0IHdlIHNob3VsZCBwcm9iYWJseQorICAgICAgICAjIG9ubHkgZG8gdGhhdCBpZiB3ZSB3ZXJlIGNoZWNraW5nIHRoZSBzdWJ0eXBlIHZhbHVlIGFnYWluc3QgSUFOQS4KKyAgICAgICAgZGVsIGN0eXBlLm1haW50eXBlLCBjdHlwZS5zdWJ0eXBlCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhjdHlwZSwgdmFsdWUpCisgICAgICAgIHJldHVybiBjdHlwZQorICAgIGN0eXBlLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKKyAgICBjdHlwZS5hcHBlbmQocGFyc2VfbWltZV9wYXJhbWV0ZXJzKHZhbHVlWzE6XSkpCisgICAgcmV0dXJuIGN0eXBlCisKK2RlZiBwYXJzZV9jb250ZW50X2Rpc3Bvc2l0aW9uX2hlYWRlcih2YWx1ZSk6CisgICAgIiIiIGRpc3Bvc2l0aW9uLXR5cGUgKiggIjsiIHBhcmFtZXRlciApCisKKyAgICAiIiIKKyAgICBkaXNwX2hlYWRlciA9IENvbnRlbnREaXNwb3NpdGlvbigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBkaXNwX2hlYWRlci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBjb250ZW50IGRpc3Bvc2l0aW9uIikpCisgICAgICAgIHJldHVybiBkaXNwX2hlYWRlcgorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Rva2VuKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgY29udGVudCBkaXNwb3NpdGlvbiBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhkaXNwX2hlYWRlciwgdmFsdWUpCisgICAgICAgIHJldHVybiBkaXNwX2hlYWRlcgorICAgIGRpc3BfaGVhZGVyLmFwcGVuZCh0b2tlbikKKyAgICBkaXNwX2hlYWRlci5jb250ZW50X2Rpc3Bvc2l0aW9uID0gdG9rZW4udmFsdWUuc3RyaXAoKS5sb3dlcigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByZXR1cm4gZGlzcF9oZWFkZXIKKyAgICBpZiB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIGRpc3BfaGVhZGVyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIk9ubHkgcGFyYW1ldGVycyBhcmUgdmFsaWQgYWZ0ZXIgY29udGVudCBkaXNwb3NpdGlvbiwgYnV0ICIKKyAgICAgICAgICAgICJmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGRpc3BfaGVhZGVyLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGRpc3BfaGVhZGVyCisgICAgZGlzcF9oZWFkZXIuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgIGRpc3BfaGVhZGVyLmFwcGVuZChwYXJzZV9taW1lX3BhcmFtZXRlcnModmFsdWVbMTpdKSkKKyAgICByZXR1cm4gZGlzcF9oZWFkZXIKKworZGVmIHBhcnNlX2NvbnRlbnRfdHJhbnNmZXJfZW5jb2RpbmdfaGVhZGVyKHZhbHVlKToKKyAgICAiIiIgbWVjaGFuaXNtCisKKyAgICAiIiIKKyAgICAjIFdlIHNob3VsZCBwcm9iYWJseSB2YWxpZGF0ZSB0aGUgdmFsdWVzLCBzaW5jZSB0aGUgbGlzdCBpcyBmaXhlZC4KKyAgICBjdGVfaGVhZGVyID0gQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgY3RlX2hlYWRlci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIikpCisgICAgICAgIHJldHVybiBjdGVfaGVhZGVyCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdG9rZW4odmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBjb250ZW50IHRybmFzZmVyIGVuY29kaW5nIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICBlbHNlOgorICAgICAgICBjdGVfaGVhZGVyLmFwcGVuZCh0b2tlbikKKyAgICAgICAgY3RlX2hlYWRlci5jdGUgPSB0b2tlbi52YWx1ZS5zdHJpcCgpLmxvd2VyKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJldHVybiBjdGVfaGVhZGVyCisgICAgd2hpbGUgdmFsdWU6CisgICAgICAgIGN0ZV9oZWFkZXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXh0cmEgdGV4dCBhZnRlciBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIikpCisgICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgY3RlX2hlYWRlci5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIGN0ZV9oZWFkZXIuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBjdGVfaGVhZGVyCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX3BhcnNlYWRkci5weSBiL0xpYi9lbWFpbC9fcGFyc2VhZGRyLnB5CmluZGV4IDc5NTczYzYuLjM1MjhkMDIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9fcGFyc2VhZGRyLnB5CisrKyBiL0xpYi9lbWFpbC9fcGFyc2VhZGRyLnB5CkBAIC00Nyw2ICs0NywyMSBAQAogCiAgICAgQWNjb3VudHMgZm9yIG1pbGl0YXJ5IHRpbWV6b25lcy4KICAgICAiIiIKKyAgICByZXMgPSBfcGFyc2VkYXRlX3R6KGRhdGEpCisgICAgaWYgcmVzWzldIGlzIE5vbmU6CisgICAgICAgIHJlc1s5XSA9IDAKKyAgICByZXR1cm4gdHVwbGUocmVzKQorCitkZWYgX3BhcnNlZGF0ZV90eihkYXRhKToKKyAgICAiIiJDb252ZXJ0IGRhdGUgdG8gZXh0ZW5kZWQgdGltZSB0dXBsZS4KKworICAgIFRoZSBsYXN0IChhZGRpdGlvbmFsKSBlbGVtZW50IGlzIHRoZSB0aW1lIHpvbmUgb2Zmc2V0IGluIHNlY29uZHMsIGV4Y2VwdCBpZgorICAgIHRoZSB0aW1lem9uZSB3YXMgc3BlY2lmaWVkIGFzIC0wMDAwLiAgSW4gdGhhdCBjYXNlIHRoZSBsYXN0IGVsZW1lbnQgaXMKKyAgICBOb25lLiAgVGhpcyBpbmRpY2F0ZXMgYSBVVEMgdGltZXN0YW1wIHRoYXQgZXhwbGljaXRseSBkZWNsYWltcyBrbm93bGVkZ2Ugb2YKKyAgICB0aGUgc291cmNlIHRpbWV6b25lLCBhcyBvcHBvc2VkIHRvIGEgKzAwMDAgdGltZXN0YW1wIHRoYXQgaW5kaWNhdGVzIHRoZQorICAgIHNvdXJjZSB0aW1lem9uZSByZWFsbHkgd2FzIFVUQy4KKworICAgICIiIgogICAgIGRhdGEgPSBkYXRhLnNwbGl0KCkKICAgICAjIFRoZSBGV1MgYWZ0ZXIgdGhlIGNvbW1hIGFmdGVyIHRoZSBkYXktb2Ytd2VlayBpcyBvcHRpb25hbCwgc28gc2VhcmNoIGFuZAogICAgICMgYWRqdXN0IGZvciB0aGlzLgpAQCAtOTksNiArMTE0LDE0IEBACiAgICAgICAgIHRzcyA9ICcwJwogICAgIGVsaWYgbGVuKHRtKSA9PSAzOgogICAgICAgICBbdGhoLCB0bW0sIHRzc10gPSB0bQorICAgIGVsaWYgbGVuKHRtKSA9PSAxIGFuZCAnLicgaW4gdG1bMF06CisgICAgICAgICMgU29tZSBub24tY29tcGxpYW50IE1VQXMgdXNlICcuJyB0byBzZXBhcmF0ZSB0aW1lIGVsZW1lbnRzLgorICAgICAgICB0bSA9IHRtWzBdLnNwbGl0KCcuJykKKyAgICAgICAgaWYgbGVuKHRtKSA9PSAyOgorICAgICAgICAgICAgW3RoaCwgdG1tXSA9IHRtCisgICAgICAgICAgICB0c3MgPSAwCisgICAgICAgIGVsaWYgbGVuKHRtKSA9PSAzOgorICAgICAgICAgICAgW3RoaCwgdG1tLCB0c3NdID0gdG0KICAgICBlbHNlOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIHRyeToKQEAgLTEzMCw2ICsxNTMsOCBAQAogICAgICAgICAgICAgdHpvZmZzZXQgPSBpbnQodHopCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcGFzcworICAgICAgICBpZiB0em9mZnNldD09MCBhbmQgdHouc3RhcnRzd2l0aCgnLScpOgorICAgICAgICAgICAgdHpvZmZzZXQgPSBOb25lCiAgICAgIyBDb252ZXJ0IGEgdGltZXpvbmUgb2Zmc2V0IGludG8gc2Vjb25kcyA7IC0wNTAwIC0+IC0xODAwMAogICAgIGlmIHR6b2Zmc2V0OgogICAgICAgICBpZiB0em9mZnNldCA8IDA6CkBAIC0xMzksNyArMTY0LDcgQEAKICAgICAgICAgICAgIHR6c2lnbiA9IDEKICAgICAgICAgdHpvZmZzZXQgPSB0enNpZ24gKiAoICh0em9mZnNldC8vMTAwKSozNjAwICsgKHR6b2Zmc2V0ICUgMTAwKSo2MCkKICAgICAjIERheWxpZ2h0IFNhdmluZyBUaW1lIGZsYWcgaXMgc2V0IHRvIC0xLCBzaW5jZSBEU1QgaXMgdW5rbm93bi4KLSAgICByZXR1cm4geXksIG1tLCBkZCwgdGhoLCB0bW0sIHRzcywgMCwgMSwgLTEsIHR6b2Zmc2V0CisgICAgcmV0dXJuIFt5eSwgbW0sIGRkLCB0aGgsIHRtbSwgdHNzLCAwLCAxLCAtMSwgdHpvZmZzZXRdCiAKIAogZGVmIHBhcnNlZGF0ZShkYXRhKToKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weSBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTA2MTE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CkBAIC0wLDAgKzEsMzU4IEBACisiIiJQb2xpY3kgZnJhbWV3b3JrIGZvciB0aGUgZW1haWwgcGFja2FnZS4KKworQWxsb3dzIGZpbmUgZ3JhaW5lZCBmZWF0dXJlIGNvbnRyb2wgb2YgaG93IHRoZSBwYWNrYWdlIHBhcnNlcyBhbmQgZW1pdHMgZGF0YS4KKyIiIgorCitpbXBvcnQgYWJjCitmcm9tIGVtYWlsIGltcG9ydCBoZWFkZXIKK2Zyb20gZW1haWwgaW1wb3J0IGNoYXJzZXQgYXMgX2NoYXJzZXQKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IF9oYXNfc3Vycm9nYXRlcworCitfX2FsbF9fID0gWworICAgICdQb2xpY3knLAorICAgICdDb21wYXQzMicsCisgICAgJ2NvbXBhdDMyJywKKyAgICBdCisKKworY2xhc3MgX1BvbGljeUJhc2U6CisKKyAgICAiIiJQb2xpY3kgT2JqZWN0IGJhc2ljIGZyYW1ld29yay4KKworICAgIFRoaXMgY2xhc3MgaXMgdXNlbGVzcyB1bmxlc3Mgc3ViY2xhc3NlZC4gIEEgc3ViY2xhc3Mgc2hvdWxkIGRlZmluZQorICAgIGNsYXNzIGF0dHJpYnV0ZXMgd2l0aCBkZWZhdWx0cyBmb3IgYW55IHZhbHVlcyB0aGF0IGFyZSB0byBiZQorICAgIG1hbmFnZWQgYnkgdGhlIFBvbGljeSBvYmplY3QuICBUaGUgY29uc3RydWN0b3Igd2lsbCB0aGVuIGFsbG93CisgICAgbm9uLWRlZmF1bHQgdmFsdWVzIHRvIGJlIHNldCBmb3IgdGhlc2UgYXR0cmlidXRlcyBhdCBpbnN0YW5jZQorICAgIGNyZWF0aW9uIHRpbWUuICBUaGUgaW5zdGFuY2Ugd2lsbCBiZSBjYWxsYWJsZSwgdGFraW5nIHRoZXNlIHNhbWUKKyAgICBhdHRyaWJ1dGVzIGtleXdvcmQgYXJndW1lbnRzLCBhbmQgcmV0dXJuaW5nIGEgbmV3IGluc3RhbmNlCisgICAgaWRlbnRpY2FsIHRvIHRoZSBjYWxsZWQgaW5zdGFuY2UgZXhjZXB0IGZvciB0aG9zZSB2YWx1ZXMgY2hhbmdlZAorICAgIGJ5IHRoZSBrZXl3b3JkIGFyZ3VtZW50cy4gIEluc3RhbmNlcyBtYXkgYmUgYWRkZWQsIHlpZWxkaW5nIG5ldworICAgIGluc3RhbmNlcyB3aXRoIGFueSBub24tZGVmYXVsdCB2YWx1ZXMgZnJvbSB0aGUgcmlnaHQgaGFuZAorICAgIG9wZXJhbmQgb3ZlcnJpZGluZyB0aG9zZSBpbiB0aGUgbGVmdCBoYW5kIG9wZXJhbmQuICBUaGF0IGlzLAorCisgICAgICAgIEEgKyBCID09IEEoPG5vbi1kZWZhdWx0IHZhbHVlcyBvZiBCPikKKworICAgIFRoZSByZXByIG9mIGFuIGluc3RhbmNlIGNhbiBiZSB1c2VkIHRvIHJlY29uc3RydWN0IHRoZSBvYmplY3QKKyAgICBpZiBhbmQgb25seSBpZiB0aGUgcmVwciBvZiB0aGUgdmFsdWVzIGNhbiBiZSB1c2VkIHRvIHJlY29uc3RydWN0CisgICAgdGhvc2UgdmFsdWVzLgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprdyk6CisgICAgICAgICIiIkNyZWF0ZSBuZXcgUG9saWN5LCBwb3NzaWJseSBvdmVycmlkaW5nIHNvbWUgZGVmYXVsdHMuCisKKyAgICAgICAgU2VlIGNsYXNzIGRvY3N0cmluZyBmb3IgYSBsaXN0IG9mIG92ZXJyaWRhYmxlIGF0dHJpYnV0ZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBrdy5pdGVtcygpOgorICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzdXBlcihfUG9saWN5QmFzZSxzZWxmKS5fX3NldGF0dHJfXyhuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAieyFyfSBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHt9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGFyZ3MgPSBbICJ7fT17IXJ9Ii5mb3JtYXQobmFtZSwgdmFsdWUpCisgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9fZGljdF9fLml0ZW1zKCkgXQorICAgICAgICByZXR1cm4gInt9KHt9KSIuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAnLCAnLmpvaW4oYXJncykpCisKKyAgICBkZWYgY2xvbmUoc2VsZiwgKiprdyk6CisgICAgICAgICIiIlJldHVybiBhIG5ldyBpbnN0YW5jZSB3aXRoIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGNoYW5nZWQuCisKKyAgICAgICAgVGhlIG5ldyBpbnN0YW5jZSBoYXMgdGhlIHNhbWUgYXR0cmlidXRlIHZhbHVlcyBhcyB0aGUgY3VycmVudCBvYmplY3QsCisgICAgICAgIGV4Y2VwdCBmb3IgdGhlIGNoYW5nZXMgcGFzc2VkIGluIGFzIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgICIiIgorICAgICAgICBuZXdwb2xpY3kgPSBzZWxmLl9fY2xhc3NfXy5fX25ld19fKHNlbGYuX19jbGFzc19fKQorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gc2VsZi5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICAgICAgb2JqZWN0Ll9fc2V0YXR0cl9fKG5ld3BvbGljeSwgYXR0ciwgdmFsdWUpCisgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBrdy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgYXR0cik6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAieyFyfSBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHt9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykpCisgICAgICAgICAgICBvYmplY3QuX19zZXRhdHRyX18obmV3cG9saWN5LCBhdHRyLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG5ld3BvbGljeQorCisgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCBuYW1lKToKKyAgICAgICAgICAgIG1zZyA9ICJ7IXJ9IG9iamVjdCBhdHRyaWJ1dGUgeyFyfSBpcyByZWFkLW9ubHkiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtc2cgPSAieyFyfSBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSB7IXJ9IgorICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihtc2cuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBuYW1lKSkKKworICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIiIiTm9uLWRlZmF1bHQgdmFsdWVzIGZyb20gcmlnaHQgb3BlcmFuZCBvdmVycmlkZSB0aG9zZSBmcm9tIGxlZnQuCisKKyAgICAgICAgVGhlIG9iamVjdCByZXR1cm5lZCBpcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgc3ViY2xhc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLmNsb25lKCoqb3RoZXIuX19kaWN0X18pCisKKworZGVmIF9hcHBlbmRfZG9jKGRvYywgYWRkZWRfZG9jKToKKyAgICBkb2MgPSBkb2MucnNwbGl0KCdcbicsIDEpWzBdCisgICAgYWRkZWRfZG9jID0gYWRkZWRfZG9jLnNwbGl0KCdcbicsIDEpWzFdCisgICAgcmV0dXJuIGRvYyArICdcbicgKyBhZGRlZF9kb2MKKworZGVmIF9leHRlbmRfZG9jc3RyaW5ncyhjbHMpOgorICAgIGlmIGNscy5fX2RvY19fIGFuZCBjbHMuX19kb2NfXy5zdGFydHN3aXRoKCcrJyk6CisgICAgICAgIGNscy5fX2RvY19fID0gX2FwcGVuZF9kb2MoY2xzLl9fYmFzZXNfX1swXS5fX2RvY19fLCBjbHMuX19kb2NfXykKKyAgICBmb3IgbmFtZSwgYXR0ciBpbiBjbHMuX19kaWN0X18uaXRlbXMoKToKKyAgICAgICAgaWYgYXR0ci5fX2RvY19fIGFuZCBhdHRyLl9fZG9jX18uc3RhcnRzd2l0aCgnKycpOgorICAgICAgICAgICAgZm9yIGMgaW4gKGMgZm9yIGJhc2UgaW4gY2xzLl9fYmFzZXNfXyBmb3IgYyBpbiBiYXNlLm1ybygpKToKKyAgICAgICAgICAgICAgICBkb2MgPSBnZXRhdHRyKGdldGF0dHIoYywgbmFtZSksICdfX2RvY19fJykKKyAgICAgICAgICAgICAgICBpZiBkb2M6CisgICAgICAgICAgICAgICAgICAgIGF0dHIuX19kb2NfXyA9IF9hcHBlbmRfZG9jKGRvYywgYXR0ci5fX2RvY19fKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgIHJldHVybiBjbHMKKworCitjbGFzcyBQb2xpY3koX1BvbGljeUJhc2UsIG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisKKyAgICByIiIiQ29udHJvbHMgZm9yIGhvdyBtZXNzYWdlcyBhcmUgaW50ZXJwcmV0ZWQgYW5kIGZvcm1hdHRlZC4KKworICAgIE1vc3Qgb2YgdGhlIGNsYXNzZXMgYW5kIG1hbnkgb2YgdGhlIG1ldGhvZHMgaW4gdGhlIGVtYWlsIHBhY2thZ2UgYWNjZXB0CisgICAgUG9saWN5IG9iamVjdHMgYXMgcGFyYW1ldGVycy4gIEEgUG9saWN5IG9iamVjdCBjb250YWlucyBhIHNldCBvZiB2YWx1ZXMgYW5kCisgICAgZnVuY3Rpb25zIHRoYXQgY29udHJvbCBob3cgaW5wdXQgaXMgaW50ZXJwcmV0ZWQgYW5kIGhvdyBvdXRwdXQgaXMgcmVuZGVyZWQuCisgICAgRm9yIGV4YW1wbGUsIHRoZSBwYXJhbWV0ZXIgJ3JhaXNlX29uX2RlZmVjdCcgY29udHJvbHMgd2hldGhlciBvciBub3QgYW4gUkZDCisgICAgdmlvbGF0aW9uIHJlc3VsdHMgaW4gYW4gZXJyb3IgYmVpbmcgcmFpc2VkIG9yIG5vdCwgd2hpbGUgJ21heF9saW5lX2xlbmd0aCcKKyAgICBjb250cm9scyB0aGUgbWF4aW11bSBsZW5ndGggb2Ygb3V0cHV0IGxpbmVzIHdoZW4gYSBNZXNzYWdlIGlzIHNlcmlhbGl6ZWQuCisKKyAgICBBbnkgdmFsaWQgYXR0cmlidXRlIG1heSBiZSBvdmVycmlkZGVuIHdoZW4gYSBQb2xpY3kgaXMgY3JlYXRlZCBieSBwYXNzaW5nCisgICAgaXQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3Rvci4gIFBvbGljeSBvYmplY3RzIGFyZSBpbW11dGFibGUsCisgICAgYnV0IGEgbmV3IFBvbGljeSBvYmplY3QgY2FuIGJlIGNyZWF0ZWQgd2l0aCBvbmx5IGNlcnRhaW4gdmFsdWVzIGNoYW5nZWQgYnkKKyAgICBjYWxsaW5nIHRoZSBQb2xpY3kgaW5zdGFuY2Ugd2l0aCBrZXl3b3JkIGFyZ3VtZW50cy4gIFBvbGljeSBvYmplY3RzIGNhbgorICAgIGFsc28gYmUgYWRkZWQsIHByb2R1Y2luZyBhIG5ldyBQb2xpY3kgb2JqZWN0IGluIHdoaWNoIHRoZSBub24tZGVmYXVsdAorICAgIGF0dHJpYnV0ZXMgc2V0IGluIHRoZSByaWdodCBoYW5kIG9wZXJhbmQgb3ZlcndyaXRlIHRob3NlIHNwZWNpZmllZCBpbiB0aGUKKyAgICBsZWZ0IG9wZXJhbmQuCisKKyAgICBTZXR0YWJsZSBhdHRyaWJ1dGVzOgorCisgICAgcmFpc2Vfb25fZGVmZWN0ICAgICAtLSBJZiB0cnVlLCB0aGVuIGRlZmVjdHMgc2hvdWxkIGJlIHJhaXNlZCBhcyBlcnJvcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0OiBGYWxzZS4KKworICAgIGxpbmVzZXAgICAgICAgICAgICAgLS0gc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIHVzZSBhcyBzZXBhcmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIG91dHB1dCBsaW5lcy4gIERlZmF1bHQgJ1xuJy4KKworICAgIGN0ZV90eXBlICAgICAgICAgICAgLS0gVHlwZSBvZiBhbGxvd2VkIGNvbnRlbnQgdHJhbnNmZXIgZW5jb2RpbmdzCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDdiaXQgIC0tIEFTQ0lJIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDhiaXQgIC0tIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQgaXMgYWxsb3dlZAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0OiA4Yml0LiAgQWxzbyBjb250cm9scyB0aGUgZGlzcG9zaXRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChSRkMgaW52YWxpZCkgYmluYXJ5IGRhdGEgaW4gaGVhZGVyczsgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgYmluYXJ5X2ZvbGQgbWV0aG9kLgorCisgICAgbWF4X2xpbmVfbGVuZ3RoICAgICAtLSBtYXhpbXVtIGxlbmd0aCBvZiBsaW5lcywgZXhjbHVkaW5nICdsaW5lc2VwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBzZXJpYWxpemF0aW9uLiAgTm9uZSBvciAwIG1lYW5zIG5vIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwaW5nIGlzIGRvbmUuICBEZWZhdWx0IGlzIDc4LgorCisgICAgIiIiCisKKyAgICByYWlzZV9vbl9kZWZlY3QgPSBGYWxzZQorICAgIGxpbmVzZXAgPSAnXG4nCisgICAgY3RlX3R5cGUgPSAnOGJpdCcKKyAgICBtYXhfbGluZV9sZW5ndGggPSA3OAorCisgICAgZGVmIGhhbmRsZV9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgorICAgICAgICAiIiJCYXNlZCBvbiBwb2xpY3ksIGVpdGhlciByYWlzZSBkZWZlY3Qgb3IgY2FsbCByZWdpc3Rlcl9kZWZlY3QuCisKKyAgICAgICAgICAgIGhhbmRsZV9kZWZlY3Qob2JqLCBkZWZlY3QpCisKKyAgICAgICAgZGVmZWN0IHNob3VsZCBiZSBhIERlZmVjdCBzdWJjbGFzcywgYnV0IGluIGFueSBjYXNlIG11c3QgYmUgYW4KKyAgICAgICAgRXhjZXB0aW9uIHN1YmNsYXNzLiAgb2JqIGlzIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIGRlZmVjdCBzaG91bGQgYmUKKyAgICAgICAgcmVnaXN0ZXJlZCBpZiBpdCBpcyBub3QgcmFpc2VkLiAgSWYgdGhlIHJhaXNlX29uX2RlZmVjdCBpcyBUcnVlLCB0aGUKKyAgICAgICAgZGVmZWN0IGlzIHJhaXNlZCBhcyBhbiBlcnJvciwgb3RoZXJ3aXNlIHRoZSBvYmplY3QgYW5kIHRoZSBkZWZlY3QgYXJlCisgICAgICAgIHBhc3NlZCB0byByZWdpc3Rlcl9kZWZlY3QuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGJ5IHBhcnNlcnMgdGhhdCBkaXNjb3ZlciBkZWZlY3RzLgorICAgICAgICBUaGUgZW1haWwgcGFja2FnZSBwYXJzZXJzIGFsd2F5cyBjYWxsIGl0IHdpdGggRGVmZWN0IGluc3RhbmNlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9vbl9kZWZlY3Q6CisgICAgICAgICAgICByYWlzZSBkZWZlY3QKKyAgICAgICAgc2VsZi5yZWdpc3Rlcl9kZWZlY3Qob2JqLCBkZWZlY3QpCisKKyAgICBkZWYgcmVnaXN0ZXJfZGVmZWN0KHNlbGYsIG9iaiwgZGVmZWN0KToKKyAgICAgICAgIiIiUmVjb3JkICdkZWZlY3QnIG9uICdvYmonLgorCisgICAgICAgIENhbGxlZCBieSBoYW5kbGVfZGVmZWN0IGlmIHJhaXNlX29uX2RlZmVjdCBpcyBGYWxzZS4gIFRoaXMgbWV0aG9kIGlzCisgICAgICAgIHBhcnQgb2YgdGhlIFBvbGljeSBBUEkgc28gdGhhdCBQb2xpY3kgc3ViY2xhc3NlcyBjYW4gaW1wbGVtZW50IGN1c3RvbQorICAgICAgICBkZWZlY3QgaGFuZGxpbmcuICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgYXBwZW5kIG1ldGhvZCBvZgorICAgICAgICB0aGUgZGVmZWN0cyBhdHRyaWJ1dGUgb2Ygb2JqLiAgVGhlIG9iamVjdHMgdXNlZCBieSB0aGUgZW1haWwgcGFja2FnZSBieQorICAgICAgICBkZWZhdWx0IHRoYXQgZ2V0IHBhc3NlZCB0byB0aGlzIG1ldGhvZCB3aWxsIGFsd2F5cyBoYXZlIGEgZGVmZWN0cworICAgICAgICBhdHRyaWJ1dGUgd2l0aCBhbiBhcHBlbmQgbWV0aG9kLgorCisgICAgICAgICIiIgorICAgICAgICBvYmouZGVmZWN0cy5hcHBlbmQoZGVmZWN0KQorCisgICAgZGVmIGhlYWRlcl9tYXhfY291bnQoc2VsZiwgbmFtZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBoZWFkZXJzIG5hbWVkICduYW1lJy4KKworICAgICAgICBDYWxsZWQgd2hlbiBhIGhlYWRlciBpcyBhZGRlZCB0byBhIE1lc3NhZ2Ugb2JqZWN0LiAgSWYgdGhlIHJldHVybmVkCisgICAgICAgIHZhbHVlIGlzIG5vdCAwIG9yIE5vbmUsIGFuZCB0aGVyZSBhcmUgYWxyZWFkeSBhIG51bWJlciBvZiBoZWFkZXJzIHdpdGgKKyAgICAgICAgdGhlIG5hbWUgJ25hbWUnIGVxdWFsIHRvIHRoZSB2YWx1ZSByZXR1cm5lZCwgYSBWYWx1ZUVycm9yIGlzIHJhaXNlZC4KKworICAgICAgICBCZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIE1lc3NhZ2UncyBfX3NldGl0ZW1fXyBpcyB0byBhcHBlbmQgdGhlCisgICAgICAgIHZhbHVlIHRvIHRoZSBsaXN0IG9mIGhlYWRlcnMsIGl0IGlzIGVhc3kgdG8gY3JlYXRlIGR1cGxpY2F0ZSBoZWFkZXJzCisgICAgICAgIHdpdGhvdXQgcmVhbGl6aW5nIGl0LiAgVGhpcyBtZXRob2QgYWxsb3dzIGNlcnRhaW4gaGVhZGVycyB0byBiZSBsaW1pdGVkCisgICAgICAgIGluIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIG9mIHRoYXQgaGVhZGVyIHRoYXQgbWF5IGJlIGFkZGVkIHRvIGEKKyAgICAgICAgTWVzc2FnZSBwcm9ncmFtbWF0aWNhbGx5LiAgKFRoZSBsaW1pdCBpcyBub3Qgb2JzZXJ2ZWQgYnkgdGhlIHBhcnNlciwKKyAgICAgICAgd2hpY2ggd2lsbCBmYWl0aGZ1bGx5IHByb2R1Y2UgYXMgbWFueSBoZWFkZXJzIGFzIGV4aXN0IGluIHRoZSBtZXNzYWdlCisgICAgICAgIGJlaW5nIHBhcnNlZC4pCisKKyAgICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBOb25lIGZvciBhbGwgaGVhZGVyIG5hbWVzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgaGVhZGVyX3NvdXJjZV9wYXJzZShzZWxmLCBzb3VyY2VsaW5lcyk6CisgICAgICAgICIiIkdpdmVuIGEgbGlzdCBvZiBsaW5lc2VwIHRlcm1pbmF0ZWQgc3RyaW5ncyBjb25zdGl0dXRpbmcgdGhlIGxpbmVzIG9mCisgICAgICAgIGEgc2luZ2xlIGhlYWRlciwgcmV0dXJuIHRoZSAobmFtZSwgdmFsdWUpIHR1cGxlIHRoYXQgc2hvdWxkIGJlIHN0b3JlZAorICAgICAgICBpbiB0aGUgbW9kZWwuICBUaGUgaW5wdXQgbGluZXMgc2hvdWxkIHJldGFpbiB0aGVpciB0ZXJtaW5hdGluZyBsaW5lc2VwCisgICAgICAgIGNoYXJhY3RlcnMuICBUaGUgbGluZXMgcGFzc2VkIGluIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIG1heSBjb250YWluCisgICAgICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGhlYWRlcl9zdG9yZV9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIkdpdmVuIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbgorICAgICAgICBwcm9ncmFtLCByZXR1cm4gdGhlIChuYW1lLCB2YWx1ZSkgdGhhdCBzaG91bGQgYmUgc3RvcmVkIGluIHRoZSBtb2RlbC4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgaGVhZGVyX2ZldGNoX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiR2l2ZW4gdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgdmFsdWUgZnJvbSB0aGUgbW9kZWwsIHJldHVybiB0aGUgdmFsdWUKKyAgICAgICAgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIGFwcGxpY2F0aW9uIHByb2dyYW0gdGhhdCBpcyByZXF1ZXN0aW5nIHRoYXQKKyAgICAgICAgaGVhZGVyLiAgVGhlIHZhbHVlIHBhc3NlZCBpbiBieSB0aGUgZW1haWwgcGFja2FnZSBtYXkgY29udGFpbgorICAgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGlmIHRoZSBsaW5lcyB3ZXJlIHBhcnNlZCBieSBhIEJ5dGVzUGFyc2VyLgorICAgICAgICBUaGUgcmV0dXJuZWQgdmFsdWUgc2hvdWxkIG5vdCBjb250YWluIGFueSBzdXJyb2dhdGVlc2NhcGVkIGRhdGEuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIkdpdmVuIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGZyb20gdGhlIG1vZGVsLCByZXR1cm4gYSBzdHJpbmcKKyAgICAgICAgY29udGFpbmluZyBsaW5lc2VwIGNoYXJhY3RlcnMgdGhhdCBpbXBsZW1lbnQgdGhlIGZvbGRpbmcgb2YgdGhlIGhlYWRlcgorICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIHBvbGljeSBjb250cm9scy4gIFRoZSB2YWx1ZSBwYXNzZWQgaW4gYnkgdGhlIGVtYWlsCisgICAgICAgIHBhY2thZ2UgbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YSBpZiB0aGUgbGluZXMgd2VyZQorICAgICAgICBwYXJzZWQgYnkgYSBCeXRlc1BhcnNlci4gIFRoZSByZXR1cm5lZCB2YWx1ZSBzaG91bGQgbm90IGNvbnRhaW4gYW55CisgICAgICAgIHN1cnJvZ2F0ZWVzY2FwZWQgZGF0YS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmb2xkX2JpbmFyeShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIkdpdmVuIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGZyb20gdGhlIG1vZGVsLCByZXR1cm4gYmluYXJ5CisgICAgICAgIGRhdGEgY29udGFpbmluZyBsaW5lc2VwIGNoYXJhY3RlcnMgdGhhdCBpbXBsZW1lbnQgdGhlIGZvbGRpbmcgb2YgdGhlCisgICAgICAgIGhlYWRlciBhY2NvcmRpbmcgdG8gdGhlIHBvbGljeSBjb250cm9scy4gIFRoZSB2YWx1ZSBwYXNzZWQgaW4gYnkgdGhlCisgICAgICAgIGVtYWlsIHBhY2thZ2UgbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisKK0BfZXh0ZW5kX2RvY3N0cmluZ3MKK2NsYXNzIENvbXBhdDMyKFBvbGljeSk6CisKKyAgICAiIiIrCisgICAgVGhpcyBwYXJ0aWN1bGFyIHBvbGljeSBpcyB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBQb2xpY3kuICBJdAorICAgIHJlcGxpY2F0ZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIHZlcnNpb24gNS4xLgorICAgICIiIgorCisgICAgZGVmIF9zYW5pdGl6ZV9oZWFkZXIoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAjIElmIHRoZSBoZWFkZXIgdmFsdWUgY29udGFpbnMgc3Vycm9nYXRlcywgcmV0dXJuIGEgSGVhZGVyIHVzaW5nCisgICAgICAgICMgdGhlIHVua25vd24tOGJpdCBjaGFyc2V0IHRvIGVuY29kZSB0aGUgYnl0ZXMgYXMgZW5jb2RlZCB3b3Jkcy4KKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAjIEFzc3VtZSBpdCBpcyBhbHJlYWR5IGEgaGVhZGVyIG9iamVjdAorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgIGlmIF9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6CisgICAgICAgICAgICByZXR1cm4gaGVhZGVyLkhlYWRlcih2YWx1ZSwgY2hhcnNldD1fY2hhcnNldC5VTktOT1dOOEJJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9uYW1lPW5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKworICAgIGRlZiBoZWFkZXJfc291cmNlX3BhcnNlKHNlbGYsIHNvdXJjZWxpbmVzKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgbmFtZSBpcyBwYXJzZWQgYXMgZXZlcnl0aGluZyB1cCB0byB0aGUgJzonIGFuZCByZXR1cm5lZCB1bm1vZGlmaWVkLgorICAgICAgICBUaGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSBzdHJpcHBpbmcgbGVhZGluZyB3aGl0ZXNwYWNlIG9mZiB0aGUKKyAgICAgICAgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLCBhbmQKKyAgICAgICAgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KKworICAgICAgICAiIiIKKyAgICAgICAgbmFtZSwgdmFsdWUgPSBzb3VyY2VsaW5lc1swXS5zcGxpdCgnOicsIDEpCisgICAgICAgIHZhbHVlID0gdmFsdWUubHN0cmlwKCcgXHQnKSArICcnLmpvaW4oc291cmNlbGluZXNbMTpdKQorICAgICAgICByZXR1cm4gKG5hbWUsIHZhbHVlLnJzdHJpcCgnXHJcbicpKQorCisgICAgZGVmIGhlYWRlcl9zdG9yZV9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgVGhlIG5hbWUgYW5kIHZhbHVlIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChuYW1lLCB2YWx1ZSkKKworICAgIGRlZiBoZWFkZXJfZmV0Y2hfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBiaW5hcnkgZGF0YSwgaXQgaXMgY29udmVydGVkIGludG8gYSBIZWFkZXIgb2JqZWN0CisgICAgICAgIHVzaW5nIHRoZSB1bmtub3duLThiaXQgY2hhcnNldC4gIE90aGVyd2lzZSBpdCBpcyByZXR1cm5lZCB1bm1vZGlmaWVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Nhbml0aXplX2hlYWRlcihuYW1lLCB2YWx1ZSkKKworICAgIGRlZiBmb2xkKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIEhlYWRlciBmb2xkaW5nIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzCisgICAgICAgIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlCisgICAgICAgIG1heF9saW5lX2xlbmd0aC4gIE5vbi1BU0NJSSBiaW5hcnkgZGF0YSBhcmUgQ1RFIGVuY29kZWQgdXNpbmcgdGhlCisgICAgICAgIHVua25vd24tOGJpdCBjaGFyc2V0LgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZm9sZChuYW1lLCB2YWx1ZSwgc2FuaXRpemU9VHJ1ZSkKKworICAgIGRlZiBmb2xkX2JpbmFyeShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSBIZWFkZXIgZm9sZGluZyBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcworICAgICAgICBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcyBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZQorICAgICAgICBtYXhfbGluZV9sZW5ndGguICBJZiBjdGVfdHlwZSBpcyA3Yml0LCBub24tYXNjaWkgYmluYXJ5IGRhdGEgaXMgQ1RFCisgICAgICAgIGVuY29kZWQgdXNpbmcgdGhlIHVua25vd24tOGJpdCBjaGFyc2V0LiAgT3RoZXJ3aXNlIHRoZSBvcmlnaW5hbCBzb3VyY2UKKyAgICAgICAgaGVhZGVyIGlzIHVzZWQsIHdpdGggaXRzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGFuZC9vciBiaW5hcnkgZGF0YS4KKworICAgICAgICAiIiIKKyAgICAgICAgZm9sZGVkID0gc2VsZi5fZm9sZChuYW1lLCB2YWx1ZSwgc2FuaXRpemU9c2VsZi5jdGVfdHlwZT09JzdiaXQnKQorICAgICAgICByZXR1cm4gZm9sZGVkLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKworICAgIGRlZiBfZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSwgc2FuaXRpemUpOgorICAgICAgICBwYXJ0cyA9IFtdCisgICAgICAgIHBhcnRzLmFwcGVuZCgnJXM6ICcgJSBuYW1lKQorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKHZhbHVlKToKKyAgICAgICAgICAgICAgICBpZiBzYW5pdGl6ZToKKyAgICAgICAgICAgICAgICAgICAgaCA9IGhlYWRlci5IZWFkZXIodmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9X2NoYXJzZXQuVU5LTk9XTjhCSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9uYW1lPW5hbWUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIHJhdyA4Yml0IGRhdGEgaW4gYSBieXRlIHN0cmluZywgd2UgaGF2ZSBubyBpZGVhCisgICAgICAgICAgICAgICAgICAgICMgd2hhdCB0aGUgZW5jb2RpbmcgaXMuICBUaGVyZSBpcyBubyBzYWZlIHdheSB0byBzcGxpdCB0aGlzCisgICAgICAgICAgICAgICAgICAgICMgc3RyaW5nLiAgSWYgaXQncyBhc2NpaS1zdWJzZXQsIHRoZW4gd2UgY291bGQgZG8gYSBub3JtYWwKKyAgICAgICAgICAgICAgICAgICAgIyBhc2NpaSBzcGxpdCwgYnV0IGlmIGl0J3MgbXVsdGlieXRlIHRoZW4gd2UgY291bGQgYnJlYWsgdGhlCisgICAgICAgICAgICAgICAgICAgICMgc3RyaW5nLiAgVGhlcmUncyBubyB3YXkgdG8ga25vdyBzbyB0aGUgbGVhc3QgaGFybSBzZWVtcyB0bworICAgICAgICAgICAgICAgICAgICAjIGJlIHRvIG5vdCBzcGxpdCB0aGUgc3RyaW5nIGFuZCByaXNrIGl0IGJlaW5nIHRvbyBsb25nLgorICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGggPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGggPSBoZWFkZXIuSGVhZGVyKHZhbHVlLCBoZWFkZXJfbmFtZT1uYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBBc3N1bWUgaXQgaXMgYSBIZWFkZXItbGlrZSBvYmplY3QuCisgICAgICAgICAgICBoID0gdmFsdWUKKyAgICAgICAgaWYgaCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBhcnRzLmFwcGVuZChoLmVuY29kZShsaW5lc2VwPXNlbGYubGluZXNlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsaW5lbGVuPXNlbGYubWF4X2xpbmVfbGVuZ3RoKSkKKyAgICAgICAgcGFydHMuYXBwZW5kKHNlbGYubGluZXNlcCkKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocGFydHMpCisKKworY29tcGF0MzIgPSBDb21wYXQzMigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvYXJjaGl0ZWN0dXJlLnJzdCBiL0xpYi9lbWFpbC9hcmNoaXRlY3R1cmUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZDI0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvYXJjaGl0ZWN0dXJlLnJzdApAQCAtMCwwICsxLDIxNiBAQAorOm1vZDpgZW1haWxgIFBhY2thZ2UgQXJjaGl0ZWN0dXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT3ZlcnZpZXcKKy0tLS0tLS0tCisKK1RoZSBlbWFpbCBwYWNrYWdlIGNvbnNpc3RzIG9mIHRocmVlIG1ham9yIGNvbXBvbmVudHM6CisKKyAgICBNb2RlbAorICAgICAgICBBbiBvYmplY3Qgc3RydWN0dXJlIHRoYXQgcmVwcmVzZW50cyBhbiBlbWFpbCBtZXNzYWdlLCBhbmQgcHJvdmlkZXMgYW4KKyAgICAgICAgQVBJIGZvciBjcmVhdGluZywgcXVlcnlpbmcsIGFuZCBtb2RpZnlpbmcgYSBtZXNzYWdlLgorCisgICAgUGFyc2VyCisgICAgICAgIFRha2VzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBvciBieXRlcyBhbmQgcHJvZHVjZXMgYSBtb2RlbCBvZiB0aGUKKyAgICAgICAgZW1haWwgbWVzc2FnZSByZXByZXNlbnRlZCBieSB0aG9zZSBjaGFyYWN0ZXJzIG9yIGJ5dGVzLgorCisgICAgR2VuZXJhdG9yCisgICAgICAgIFRha2VzIGEgbW9kZWwgYW5kIHR1cm5zIGl0IGludG8gYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIG9yIGJ5dGVzLiAgVGhlCisgICAgICAgIHNlcXVlbmNlIGNhbiBlaXRoZXIgYmUgaW50ZW5kZWQgZm9yIGh1bWFuIGNvbnN1bXB0aW9uIChhIHByaW50YWJsZQorICAgICAgICB1bmljb2RlIHN0cmluZykgb3IgYnl0ZXMgc3VpdGFibGUgZm9yIHRyYW5zbWlzc2lvbiBvdmVyIHRoZSB3aXJlLiAgSW4KKyAgICAgICAgdGhlIGxhdHRlciBjYXNlIGFsbCBkYXRhIGlzIHByb3Blcmx5IGVuY29kZWQgdXNpbmcgdGhlIGNvbnRlbnQgdHJhbnNmZXIKKyAgICAgICAgZW5jb2RpbmdzIHNwZWNpZmllZCBieSB0aGUgcmVsZXZhbnQgUkZDcy4KKworQ29uY2VwdHVhbGx5IHRoZSBwYWNrYWdlIGlzIG9yZ2FuaXplZCBhcm91bmQgdGhlIG1vZGVsLiAgVGhlIG1vZGVsIHByb3ZpZGVzIGJvdGgKKyJleHRlcm5hbCIgQVBJcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IGFwcGxpY2F0aW9uIHByb2dyYW1zIHVzaW5nIHRoZSBsaWJyYXJ5LAorYW5kICJpbnRlcm5hbCIgQVBJcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IHRoZSBQYXJzZXIgYW5kIEdlbmVyYXRvciBjb21wb25lbnRzLgorVGhpcyBkaXZpc2lvbiBpcyBpbnRlbnRpb25hbGx5IGEgYml0IGZ1enk7IHRoZSBBUEkgZGVzY3JpYmVkIGJ5IHRoaXMgZG9jdW1lbnRhdGlvbgoraXMgYWxsIGEgcHVibGljLCBzdGFibGUgQVBJLiAgVGhpcyBhbGxvd3MgZm9yIGFuIGFwcGxpY2F0aW9uIHdpdGggc3BlY2lhbCBuZWVkcwordG8gaW1wbGVtZW50IGl0cyBvd24gcGFyc2VyIGFuZC9vciBnZW5lcmF0b3IuCisKK0luIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBtYWpvciBmdW5jdGlvbmFsIGNvbXBvbmVudHMsIHRoZXJlIGlzIGEgdGhpcmQga2V5Citjb21wb25lbnQgdG8gdGhlIGFyY2hpdGVjdHVyZToKKworICAgIFBvbGljeQorICAgICAgICBBbiBvYmplY3QgdGhhdCBzcGVjaWZpZXMgdmFyaW91cyBiZWhhdmlvcmFsIHNldHRpbmdzIGFuZCBjYXJyaWVzCisgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiB2YXJpb3VzIGJlaGF2aW9yLWNvbnRyb2xsaW5nIG1ldGhvZHMuCisKK1RoZSBQb2xpY3kgZnJhbWV3b3JrIHByb3ZpZGVzIGEgc2ltcGxlIGFuZCBjb252ZW5pZW50IHdheSB0byBjb250cm9sIHRoZQorYmVoYXZpb3Igb2YgdGhlIGxpYnJhcnksIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgdGhlIGxpYnJhcnkgdG8gYmUgdXNlZCBpbiBhCit2ZXJ5IGZsZXhpYmxlIGZhc2hpb24gd2hpbGUgbGV2ZXJhZ2luZyB0aGUgY29tbW9uIGNvZGUgcmVxdWlyZWQgdG8gcGFyc2UsCityZXByZXNlbnQsIGFuZCBnZW5lcmF0ZSBtZXNzYWdlLWxpa2Ugb2JqZWN0cy4gIEZvciBleGFtcGxlLCBpbiBhZGRpdGlvbiB0byB0aGUKK2RlZmF1bHQgOnJmYzpgNTMyMmAgZW1haWwgbWVzc2FnZSBwb2xpY3ksIHdlIGFsc28gaGF2ZSBhIHBvbGljeSB0aGF0IG1hbmFnZXMKK0hUVFAgaGVhZGVycyBpbiBhIGZhc2hpb24gY29tcGxpYW50IHdpdGggOnJmYzpgMjYxNmAuICBJbmRpdmlkdWFsIHBvbGljeQorY29udHJvbHMsIHN1Y2ggYXMgdGhlIG1heGltdW0gbGluZSBsZW5ndGggcHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvciwgY2FuIGFsc28KK2JlIGNvbnRyb2xsZWQgaW5kaXZpZHVhbGx5IHRvIG1lZXQgc3BlY2lhbGl6ZWQgYXBwbGljYXRpb24gcmVxdWlyZW1lbnRzLgorCisKK1RoZSBNb2RlbAorLS0tLS0tLS0tCisKK1RoZSBtZXNzYWdlIG1vZGVsIGlzIGltcGxlbWVudGVkIGJ5IHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzLgorVGhlIG1vZGVsIGRpdmlkZXMgYSBtZXNzYWdlIGludG8gdGhlIHR3byBmdW5kYW1lbnRhbCBwYXJ0cyBkaXNjdXNzZWQgYnkgdGhlCitSRkM6IHRoZSBoZWFkZXIgc2VjdGlvbiBhbmQgdGhlIGJvZHkuICBUaGUgYE1lc3NhZ2VgIG9iamVjdCBhY3RzIGFzIGEKK3BzZXVkby1kaWN0aW9uYXJ5IG9mIG5hbWVkIGhlYWRlcnMuICBJdHMgZGljdGlvbmFyeSBpbnRlcmZhY2UgcHJvdmlkZXMKK2NvbnZlbmllbnQgYWNjZXNzIHRvIGluZGl2aWR1YWwgaGVhZGVycyBieSBuYW1lLiAgSG93ZXZlciwgYWxsIGhlYWRlcnMgYXJlIGtlcHQKK2ludGVybmFsbHkgaW4gYW4gb3JkZXJlZCBsaXN0LCBzbyB0aGF0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JkZXIgb2YgdGhlCitoZWFkZXJzIGluIHRoZSBvcmlnaW5hbCBtZXNzYWdlIGlzIHByZXNlcnZlZC4KKworVGhlIGBNZXNzYWdlYCBvYmplY3QgYWxzbyBoYXMgYSBgcGF5bG9hZGAgdGhhdCBob2xkcyB0aGUgYm9keS4gIEEgYHBheWxvYWRgIGNhbgorYmUgb25lIG9mIHR3byB0aGluZ3M6IGRhdGEsIG9yIGEgbGlzdCBvZiBgTWVzc2FnZWAgb2JqZWN0cy4gIFRoZSBsYXR0ZXIgaXMgdXNlZAordG8gcmVwcmVzZW50IGEgbXVsdGlwYXJ0IE1JTUUgbWVzc2FnZS4gIExpc3RzIGNhbiBiZSBuZXN0ZWQgYXJiaXRyYXJpbHkgZGVlcGx5CitpbiBvcmRlciB0byByZXByZXNlbnQgdGhlIG1lc3NhZ2UsIHdpdGggYWxsIHRlcm1pbmFsIGxlYXZlcyBoYXZpbmcgbm9uLWxpc3QKK2RhdGEgcGF5bG9hZHMuCisKKworTWVzc2FnZSBMaWZlY3ljbGUKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBnZW5lcmFsIGxpZmVjeWxlIG9mIGEgbWVzc2FnZSBpczoKKworICAgIENyZWF0aW9uCisgICAgICAgIEEgYE1lc3NhZ2VgIG9iamVjdCBjYW4gYmUgY3JlYXRlZCBieSBhIFBhcnNlciwgb3IgaXQgY2FuIGJlCisgICAgICAgIGluc3RhbnRpYXRlZCBhcyBhbiBlbXB0eSBtZXNzYWdlIGJ5IGFuIGFwcGxpY2F0aW9uLgorCisgICAgTWFuaXB1bGF0aW9uCisgICAgICAgIFRoZSBhcHBsaWNhdGlvbiBtYXkgZXhhbWluZSBvbmUgb3IgbW9yZSBoZWFkZXJzLCBhbmQvb3IgdGhlCisgICAgICAgIHBheWxvYWQsIGFuZCBpdCBtYXkgbW9kaWZ5IG9uZSBvciBtb3JlIGhlYWRlcnMgYW5kL29yCisgICAgICAgIHRoZSBwYXlsb2FkLiAgVGhpcyBtYXkgYmUgZG9uZSBvbiB0aGUgdG9wIGxldmVsIGBNZXNzYWdlYAorICAgICAgICBvYmplY3QsIG9yIG9uIGFueSBzdWItb2JqZWN0LgorCisgICAgRmluYWxpemF0aW9uCisgICAgICAgIFRoZSBNb2RlbCBpcyBjb252ZXJ0ZWQgaW50byBhIHVuaWNvZGUgb3IgYmluYXJ5IHN0cmVhbSwKKyAgICAgICAgb3IgdGhlIG1vZGVsIGlzIGRpc2NhcmRlZC4KKworCisKK0hlYWRlciBQb2xpY3kgQ29udHJvbCBEdXJpbmcgTGlmZWN5Y2xlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmUgb2YgdGhlIG1ham9yIGNvbnRyb2xzIGV4ZXJ0ZWQgYnkgdGhlIFBvbGljeSBpcyB0aGUgbWFuYWdlbWVudCBvZiBoZWFkZXJzCitkdXJpbmcgdGhlIGBNZXNzYWdlYCBsaWZlY3ljbGUuICBNb3N0IGFwcGxpY2F0aW9ucyBkb24ndCBuZWVkIHRvIGJlIGF3YXJlIG9mCit0aGlzLgorCitBIGhlYWRlciBlbnRlcnMgdGhlIG1vZGVsIGluIG9uZSBvZiB0d28gd2F5czogdmlhIGEgUGFyc2VyLCBvciBieSBiZWluZyBzZXQgdG8KK2Egc3BlY2lmaWMgdmFsdWUgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSBhZnRlciB0aGUgTW9kZWwgYWxyZWFkeSBleGlzdHMuCitTaW1pbGFybHksIGEgaGVhZGVyIGV4aXRzIHRoZSBtb2RlbCBpbiBvbmUgb2YgdHdvIHdheXM6IGJ5IGJlaW5nIHNlcmlhbGl6ZWQgYnkKK2EgR2VuZXJhdG9yLCBvciBieSBiZWluZyByZXRyaWV2ZWQgZnJvbSBhIE1vZGVsIGJ5IGFuIGFwcGxpY2F0aW9uIHByb2dyYW0uICBUaGUKK1BvbGljeSBvYmplY3QgcHJvdmlkZXMgaG9va3MgZm9yIGFsbCBmb3VyIG9mIHRoZXNlIHBhdGh3YXlzLgorCitUaGUgbW9kZWwgc3RvcmFnZSBmb3IgaGVhZGVycyBpcyBhIGxpc3Qgb2YgKG5hbWUsIHZhbHVlKSB0dXBsZXMuCisKK1RoZSBQYXJzZXIgaWRlbnRpZmllcyBoZWFkZXJzIGR1cmluZyBwYXJzaW5nLCBhbmQgcGFzc2VzIHRoZW0gdG8gdGhlCis6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuaGVhZGVyX3NvdXJjZV9wYXJzZWAgbWV0aG9kIG9mIHRoZSBQb2xpY3kuICBUaGUKK3Jlc3VsdCBvZiB0aGF0IG1ldGhvZCBpcyB0aGUgKG5hbWUsIHZhbHVlKSB0dXBsZSB0byBiZSBzdG9yZWQgaW4gdGhlIG1vZGVsLgorCitXaGVuIGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gc3VwcGxpZXMgYSBoZWFkZXIgdmFsdWUgKGZvciBleGFtcGxlLCB0aHJvdWdoIHRoZQorYE1lc3NhZ2VgIG9iamVjdCBgX19zZXRpdGVtX19gIGludGVyZmFjZSksIHRoZSBuYW1lIGFuZCB0aGUgdmFsdWUgYXJlIHBhc3NlZCB0bwordGhlIDptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5oZWFkZXJfc3RvcmVfcGFyc2VgIG1ldGhvZCBvZiB0aGUgUG9saWN5LCB3aGljaAorcmV0dXJucyB0aGUgKG5hbWUsIHZhbHVlKSB0dXBsZSB0byBiZSBzdG9yZWQgaW4gdGhlIG1vZGVsLgorCitXaGVuIGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gcmV0cmlldmVzIGEgaGVhZGVyICh0aHJvdWdoIGFueSBvZiB0aGUgZGljdCBvciBsaXN0CitpbnRlcmZhY2VzIG9mIGBNZXNzYWdlYCksIHRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcGFzc2VkIHRvIHRoZQorOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZWAgbWV0aG9kIG9mIHRoZSBQb2xpY3kgdG8KK29idGFpbiB0aGUgdmFsdWUgcmV0dXJuZWQgdG8gdGhlIGFwcGxpY2F0aW9uLgorCitXaGVuIGEgR2VuZXJhdG9yIHJlcXVlc3RzIGEgaGVhZGVyIGR1cmluZyBzZXJpYWxpemF0aW9uLCB0aGUgbmFtZSBhbmQgdmFsdWUgYXJlCitwYXNzZWQgdG8gdGhlIDptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5mb2xkYCBtZXRob2Qgb2YgdGhlIFBvbGljeSwgd2hpY2gKK3JldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyBsaW5lIGJyZWFrcyBpbiB0aGUgYXBwcm9wcmlhdGUgcGxhY2VzLiAgVGhlCis6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIFBvbGljeSBjb250cm9sIGRldGVybWluZXMgd2hldGhlciBvcgorbm90IENvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcgaXMgcGVyZm9ybWVkIG9uIHRoZSBkYXRhIGluIHRoZSBoZWFkZXIuICBUaGVyZSBpcworYWxzbyBhIDptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5iaW5hcnlfZm9sZGAgbWV0aG9kIGZvciB1c2UgYnkgZ2VuZXJhdG9ycwordGhhdCBwcm9kdWNlIGJpbmFyeSBvdXRwdXQsIHdoaWNoIHJldHVybnMgdGhlIGZvbGRlZCBoZWFkZXIgYXMgYmluYXJ5IGRhdGEsCitwb3NzaWJseSBmb2xkZWQgYXQgZGlmZmVyZW50IHBsYWNlcyB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIHN0cmluZyB3b3VsZCBiZS4KKworCitIYW5kbGluZyBCaW5hcnkgRGF0YQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gYW4gaWRlYWwgd29ybGQgYWxsIG1lc3NhZ2UgZGF0YSB3b3VsZCBjb25mb3JtIHRvIHRoZSBSRkNzLCBtZWFuaW5nIHRoYXQgdGhlCitwYXJzZXIgY291bGQgZGVjb2RlIHRoZSBtZXNzYWdlIGludG8gdGhlIGlkZWFsaXplZCB1bmljb2RlIG1lc3NhZ2UgdGhhdCB0aGUKK3NlbmRlciBvcmlnaW5hbGx5IHdyb3RlLiAgSW4gdGhlIHJlYWwgd29ybGQsIHRoZSBlbWFpbCBwYWNrYWdlIG11c3QgYWxzbyBiZQorYWJsZSB0byBkZWFsIHdpdGggYmFkbHkgZm9ybWF0dGVkIG1lc3NhZ2VzLCBpbmNsdWRpbmcgbWVzc2FnZXMgY29udGFpbmluZworbm9uLUFTQ0lJIGNoYXJhY3RlcnMgdGhhdCBlaXRoZXIgaGF2ZSBubyBpbmRpY2F0ZWQgY2hhcmFjdGVyIHNldCBvciBhcmUgbm90Cit2YWxpZCBjaGFyYWN0ZXJzIGluIHRoZSBpbmRpY2F0ZWQgY2hhcmFjdGVyIHNldC4KKworU2luY2UgZW1haWwgbWVzc2FnZXMgYXJlICpwcmltYXJpbHkqIHRleHQgZGF0YSwgYW5kIG9wZXJhdGlvbnMgb24gbWVzc2FnZSBkYXRhCithcmUgcHJpbWFyaWx5IHRleHQgb3BlcmF0aW9ucyAoZXhjZXB0IGZvciBiaW5hcnkgcGF5bG9hZHMgb2YgY291cnNlKSwgdGhlIG1vZGVsCitzdG9yZXMgYWxsIHRleHQgZGF0YSBhcyB1bmljb2RlIHN0cmluZ3MuICBVbi1kZWNvZGFibGUgYmluYXJ5IGluc2lkZSB0ZXh0CitkYXRhIGlzIGhhbmRsZWQgYnkgdXNpbmcgdGhlIGBzdXJyb2dhdGVlc2NhcGVgIGVycm9yIGhhbmRsZXIgb2YgdGhlIEFTQ0lJCitjb2RlYy4gIEFzIHdpdGggdGhlIGJpbmFyeSBmaWxlbmFtZXMgdGhlIGVycm9yIGhhbmRsZXIgd2FzIGludHJvZHVjZWQgdG8KK2hhbmRsZSwgdGhpcyBhbGxvd3MgdGhlIGVtYWlsIHBhY2thZ2UgdG8gImNhcnJ5IiB0aGUgYmluYXJ5IGRhdGEgcmVjZWl2ZWQKK2R1cmluZyBwYXJzaW5nIGFsb25nIHVudGlsIHRoZSBvdXRwdXQgc3RhZ2UsIGF0IHdoaWNoIHRpbWUgaXQgaXMgcmVnZW5lcmF0ZWQKK2luIGl0cyBvcmlnaW5hbCBmb3JtLgorCitUaGlzIGNhcnJpZWQgYmluYXJ5IGRhdGEgaXMgYWxtb3N0IGVudGlyZWx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFRoZSBvbmUKK3BsYWNlIHdoZXJlIGl0IGlzIHZpc2libGUgaW4gdGhlIEFQSSBpcyBpbiB0aGUgImludGVybmFsIiBBUEkuICBBIFBhcnNlciBtdXN0CitkbyB0aGUgYHN1cnJvZ2F0ZWVzY2FwZWAgZW5jb2Rpbmcgb2YgYmluYXJ5IGlucHV0IGRhdGEsIGFuZCBwYXNzIHRoYXQgZGF0YSB0bwordGhlIGFwcHJvcHJpYXRlIFBvbGljeSBtZXRob2QuICBUaGUgImludGVybmFsIiBpbnRlcmZhY2UgdXNlZCBieSB0aGUgR2VuZXJhdG9yCit0byBhY2Nlc3MgaGVhZGVyIHZhbHVlcyBwcmVzZXJ2ZXMgdGhlIGBzdXJyb2dhdGVlc2NhcGVkYCBieXRlcy4gIEFsbCBvdGhlcgoraW50ZXJmYWNlcyBjb252ZXJ0IHRoZSBiaW5hcnkgZGF0YSBlaXRoZXIgYmFjayBpbnRvIGJ5dGVzIG9yIGludG8gYSBzYWZlIGZvcm0KKyhsb3NpbmcgaW5mb3JtYXRpb24gaW4gc29tZSBjYXNlcykuCisKKworQmFja3dhcmQgQ29tcGF0aWJpbGl0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+ZW1haWwucG9saWN5LlBvbGljeS5Db21wYXQzMmAgUG9saWN5IHByb3ZpZGVzIGJhY2t3YXJkCitjb21wYXRpYmlsaXR5IHdpdGggdmVyc2lvbiA1LjEgb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBJdCBkb2VzIHRoaXMgdmlhIHRoZQorZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIG9mIHRoZSBmb3VyKzEgUG9saWN5IG1ldGhvZHMgZGVzY3JpYmVkIGFib3ZlOgorCitoZWFkZXJfc291cmNlX3BhcnNlCisgICAgU3BsaXRzIHRoZSBmaXJzdCBsaW5lIG9uIHRoZSBjb2xvbiB0byBvYnRhaW4gdGhlIG5hbWUsIGRpc2NhcmRzIGFueSBzcGFjZXMKKyAgICBhZnRlciB0aGUgY29sb24sIGFuZCBqb2lucyB0aGUgcmVtYWluZGVyIG9mIHRoZSBsaW5lIHdpdGggYWxsIG9mIHRoZQorICAgIHJlbWFpbmluZyBsaW5lcywgcHJlc2VydmluZyB0aGUgbGluZXNlcCBjaGFyYWN0ZXJzIHRvIG9idGFpbiB0aGUgdmFsdWUuCisgICAgVHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIGFuZC9vciBsaW5lZmVlZCBjaGFyYWN0ZXJzIGFyZSBzdHJpcHBlZCBmcm9tIHRoZQorICAgIHJlc3VsdGluZyB2YWx1ZSBzdHJpbmcuCisKK2hlYWRlcl9zdG9yZV9wYXJzZQorICAgIFJldHVybnMgdGhlIG5hbWUgYW5kIHZhbHVlIGV4YWN0bHkgYXMgcmVjZWl2ZWQgZnJvbSB0aGUgYXBwbGljYXRpb24uCisKK2hlYWRlcl9mZXRjaF9wYXJzZQorICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBhbnkgYHN1cnJvZ2F0ZWVzY2FwZWRgIGJpbmFyeSBkYXRhLCByZXR1cm4gdGhlIHZhbHVlCisgICAgYXMgYSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3QsIHVzaW5nIHRoZSBjaGFyYWN0ZXIgc2V0CisgICAgYHVua25vd24tOGJpdGAuICBPdGhlcndpc2UganVzdCByZXR1cm5zIHRoZSB2YWx1ZS4KKworZm9sZAorICAgIFVzZXMgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAncyBmb2xkaW5nIHRvIGZvbGQgaGVhZGVycyBpbiB0aGUKKyAgICBzYW1lIHdheSB0aGUgZW1haWw1LjEgZ2VuZXJhdG9yIGRpZC4KKworYmluYXJ5X2ZvbGQKKyAgICBTYW1lIGFzIGZvbGQsIGJ1dCBlbmNvZGVzIHRvICdhc2NpaScuCisKKworTmV3IEFsZ29yaXRobQorLS0tLS0tLS0tLS0tLQorCitoZWFkZXJfc291cmNlX3BhcnNlCisgICAgU2FtZSBhcyBsZWdhY3kgYmVoYXZpb3IuCisKK2hlYWRlcl9zdG9yZV9wYXJzZQorICAgIFNhbWUgYXMgbGVnYWN5IGJlaGF2aW9yLgorCitoZWFkZXJfZmV0Y2hfcGFyc2UKKyAgICBJZiB0aGUgdmFsdWUgaXMgYWxyZWFkeSBhIGhlYWRlciBvYmplY3QsIHJldHVybnMgaXQuICBPdGhlcndpc2UsIHBhcnNlcyB0aGUKKyAgICB2YWx1ZSB1c2luZyB0aGUgbmV3IHBhcnNlciwgYW5kIHJldHVybnMgdGhlIHJlc3VsdGluZyBvYmplY3QgYXMgdGhlIHZhbHVlLgorICAgIGBzdXJyb2dhdGVlc2NhcGVkYCBieXRlcyBnZXQgdHVybmVkIGludG8gdW5pY29kZSB1bmtub3duIGNoYXJhY3RlciBjb2RlCisgICAgcG9pbnRzLgorCitmb2xkCisgICAgVXNlcyB0aGUgbmV3IGhlYWRlciBmb2xkaW5nIGFsZ29yaXRobSwgcmVzcGVjdGluZyB0aGUgcG9saWN5IHNldHRpbmdzLgorICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgYXJlIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldCBmb3IKKyAgICBgYGN0ZV90eXBlPTdiaXRgYCBvciBgYDhiaXRgYC4gIFJldHVybnMgYSBzdHJpbmcuCisKKyAgICBBdCBzb21lIHBvaW50IHRoZXJlIHdpbGwgYWxzbyBiZSBhIGBgY3RlX3R5cGU9dW5pY29kZWBgLCBhbmQgZm9yIHRoYXQKKyAgICBwb2xpY3kgZm9sZCB3aWxsIHNlcmlhbGl6ZSB0aGUgaWRlYWxpemVkIHVuaWNvZGUgbWVzc2FnZSB3aXRoIFJGQy1saWtlCisgICAgZm9sZGluZywgY29udmVydGluZyBhbnkgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBpbnRvIHRoZSB1bmljb2RlCisgICAgdW5rbm93biBjaGFyYWN0ZXIgZ2x5cGguCisKK2JpbmFyeV9mb2xkCisgICAgVXNlcyB0aGUgbmV3IGhlYWRlciBmb2xkaW5nIGFsZ29yaXRobSwgcmVzcGVjdGluZyB0aGUgcG9saWN5IHNldHRpbmdzLgorICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgYXJlIGVuY29kZWQgdXNpbmcgdGhlIGB1bmtub3duLThiaXRgIGNoYXJzZXQgZm9yCisgICAgYGBjdGVfdHlwZT03Yml0YGAsIGFuZCBnZXQgdHVybmVkIGJhY2sgaW50byBieXRlcyBmb3IgYGBjdGVfdHlwZT04Yml0YGAuCisgICAgUmV0dXJucyBieXRlcy4KKworICAgIEF0IHNvbWUgcG9pbnQgdGhlcmUgd2lsbCBhbHNvIGJlIGEgYGBjdGVfdHlwZT11bmljb2RlYGAsIGFuZCBmb3IgdGhhdAorICAgIHBvbGljeSBiaW5hcnlfZm9sZCB3aWxsIHNlcmlhbGl6ZSB0aGUgbWVzc2FnZSBhY2NvcmRpbmcgdG8gOnJmYzpgYDUzMzVgYC4KZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9lcnJvcnMucHkgYi9MaWIvZW1haWwvZXJyb3JzLnB5CmluZGV4IGQ1MmE2MjQuLjc5MTIzOWYgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9lcnJvcnMucHkKKysrIGIvTGliL2VtYWlsL2Vycm9ycy5weQpAQCAtNSw3ICs1LDYgQEAKICIiImVtYWlsIHBhY2thZ2UgZXhjZXB0aW9uIGNsYXNzZXMuIiIiCiAKIAotDAogY2xhc3MgTWVzc2FnZUVycm9yKEV4Y2VwdGlvbik6CiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgZXJyb3JzIGluIHRoZSBlbWFpbCBwYWNrYWdlLiIiIgogCkBAIC0zMCwxMiArMjksMTMgQEAKICAgICAiIiJBbiBpbGxlZ2FsIGNoYXJzZXQgd2FzIGdpdmVuLiIiIgogCiAKLQwKICMgVGhlc2UgYXJlIHBhcnNpbmcgZGVmZWN0cyB3aGljaCB0aGUgcGFyc2VyIHdhcyBhYmxlIHRvIHdvcmsgYXJvdW5kLgotY2xhc3MgTWVzc2FnZURlZmVjdDoKK2NsYXNzIE1lc3NhZ2VEZWZlY3QoVmFsdWVFcnJvcik6CiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgYSBtZXNzYWdlIGRlZmVjdC4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lPU5vbmUpOgorICAgICAgICBpZiBsaW5lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhsaW5lKQogICAgICAgICBzZWxmLmxpbmUgPSBsaW5lCiAKIGNsYXNzIE5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdChNZXNzYWdlRGVmZWN0KToKQEAgLTQ0LDE0ICs0NCw2NCBAQAogY2xhc3MgU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgogICAgICIiIlRoZSBjbGFpbWVkIHN0YXJ0IGJvdW5kYXJ5IHdhcyBuZXZlciBmb3VuZC4iIiIKIAorY2xhc3MgQ2xvc2VCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiIkEgc3RhcnQgYm91bmRhcnkgd2FzIGZvdW5kLCBidXQgbm90IHRoZSBjb3JyZXNwb25kaW5nIGNsb3NlIGJvdW5kYXJ5LiIiIgorCiBjbGFzcyBGaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICAiIiJBIG1lc3NhZ2UgaGFkIGEgY29udGludWF0aW9uIGxpbmUgYXMgaXRzIGZpcnN0IGhlYWRlciBsaW5lLiIiIgogCiBjbGFzcyBNaXNwbGFjZWRFbnZlbG9wZUhlYWRlckRlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICAiIiJBICdVbml4LWZyb20nIGhlYWRlciB3YXMgZm91bmQgaW4gdGhlIG1pZGRsZSBvZiBhIGhlYWRlciBibG9jay4iIiIKIAotY2xhc3MgTWFsZm9ybWVkSGVhZGVyRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgotICAgICIiIkZvdW5kIGEgaGVhZGVyIHRoYXQgd2FzIG1pc3NpbmcgYSBjb2xvbiwgb3Igd2FzIG90aGVyd2lzZSBtYWxmb3JtZWQuIiIiCitjbGFzcyBNaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJGb3VuZCBsaW5lIHdpdGggbm8gbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBubyBjb2xvbiBiZWZvcmUgYmxhbmsgbGluZS4iIiIKKyMgWFhYOiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBqdXN0IGluIGNhc2UgKGl0IHdhcyBuZXZlciBlbWl0dGVkKS4KK01hbGZvcm1lZEhlYWRlckRlZmVjdCA9IE1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0CiAKIGNsYXNzIE11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICAiIiJBIG1lc3NhZ2UgY2xhaW1lZCB0byBiZSBhIG11bHRpcGFydCBidXQgbm8gc3VicGFydHMgd2VyZSBmb3VuZC4iIiIKKworY2xhc3MgSW52YWxpZE11bHRpcGFydENvbnRlbnRUcmFuc2ZlckVuY29kaW5nRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiIkFuIGludmFsaWQgY29udGVudCB0cmFuc2ZlciBlbmNvZGluZyB3YXMgc2V0IG9uIHRoZSBtdWx0aXBhcnQgaXRzZWxmLiIiIgorCitjbGFzcyBVbmRlY29kYWJsZUJ5dGVzRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiIkhlYWRlciBjb250YWluZWQgYnl0ZXMgdGhhdCBjb3VsZCBub3QgYmUgZGVjb2RlZCIiIgorCitjbGFzcyBJbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJiYXNlNjQgZW5jb2RlZCBzZXF1ZW5jZSBoYWQgYW4gaW5jb3JyZWN0IGxlbmd0aCIiIgorCitjbGFzcyBJbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJiYXNlNjQgZW5jb2RlZCBzZXF1ZW5jZSBoYWQgY2hhcmFjdGVycyBub3QgaW4gYmFzZTY0IGFscGhhYmV0IiIiCisKKyMgVGhlc2UgZXJyb3JzIGFyZSBzcGVjaWZpYyB0byBoZWFkZXIgcGFyc2luZy4KKworY2xhc3MgSGVhZGVyRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIGEgaGVhZGVyIGRlZmVjdC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3cpCisKK2NsYXNzIEludmFsaWRIZWFkZXJEZWZlY3QoSGVhZGVyRGVmZWN0KToKKyAgICAiIiJIZWFkZXIgaXMgbm90IHZhbGlkLCBtZXNzYWdlIGdpdmVzIGRldGFpbHMuIiIiCisKK2NsYXNzIEhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKEhlYWRlckRlZmVjdCk6CisgICAgIiIiQSBoZWFkZXIgdGhhdCBtdXN0IGhhdmUgYSB2YWx1ZSBoYWQgbm9uZSIiIgorCitjbGFzcyBOb25QcmludGFibGVEZWZlY3QoSGVhZGVyRGVmZWN0KToKKyAgICAiIiJBU0NJSSBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGFzY2lpLXByaW50YWJsZSByYW5nZSBmb3VuZCIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5vbl9wcmludGFibGVzKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhub25fcHJpbnRhYmxlcykKKyAgICAgICAgc2VsZi5ub25fcHJpbnRhYmxlcyA9IG5vbl9wcmludGFibGVzCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgidGhlIGZvbGxvd2luZyBBU0NJSSBub24tcHJpbnRhYmxlcyBmb3VuZCBpbiBoZWFkZXI6ICIKKyAgICAgICAgICAgICJ7fSIuZm9ybWF0KHNlbGYubm9uX3ByaW50YWJsZXMpKQorCitjbGFzcyBPYnNvbGV0ZUhlYWRlckRlZmVjdChIZWFkZXJEZWZlY3QpOgorICAgICIiIkhlYWRlciB1c2VzIHN5bnRheCBkZWNsYXJlZCBvYnNvbGV0ZSBieSBSRkMgNTMyMiIiIgorCitjbGFzcyBOb25BU0NJSUxvY2FsUGFydERlZmVjdChIZWFkZXJEZWZlY3QpOgorICAgICIiImxvY2FsX3BhcnQgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMiIiIKKyAgICAjIFRoaXMgZGVmZWN0IG9ubHkgb2NjdXJzIGR1cmluZyB1bmljb2RlIHBhcnNpbmcsIG5vdCB3aGVuCisgICAgIyBwYXJzaW5nIG1lc3NhZ2VzIGRlY29kZWQgZnJvbSBiaW5hcnkuCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weSBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CmluZGV4IGFhOGEyZmYuLjU2ZjUwZGYgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CkBAIC0yNSw2ICsyNSw3IEBACiAKIGZyb20gZW1haWwgaW1wb3J0IGVycm9ycwogZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZQorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKIAogTkxDUkUgPSByZS5jb21waWxlKCdcclxufFxyfFxuJykKIE5MQ1JFX2JvbCA9IHJlLmNvbXBpbGUoJyhcclxufFxyfFxuKScpCkBAIC0xMjAsOSArMTIxLDYgQEAKICAgICAgICAgIyBSZXZlcnNlIGFuZCBpbnNlcnQgYXQgdGhlIGZyb250IG9mIHRoZSBsaW5lcy4KICAgICAgICAgc2VsZi5fbGluZXNbOjBdID0gbGluZXNbOjotMV0KIAotICAgIGRlZiBpc19jbG9zZWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jbG9zZWQKLQogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYKIApAQCAtMTM3LDkgKzEzNSwyMiBAQAogY2xhc3MgRmVlZFBhcnNlcjoKICAgICAiIiJBIGZlZWQtc3R5bGUgcGFyc2VyIG9mIGVtYWlsLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF9mYWN0b3J5PW1lc3NhZ2UuTWVzc2FnZSk6Ci0gICAgICAgICIiIl9mYWN0b3J5IGlzIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cyB0byBjcmVhdGUgYSBuZXcgbWVzc2FnZSBvYmoiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX2ZhY3Rvcnk9bWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9Y29tcGF0MzIpOgorICAgICAgICAiIiJfZmFjdG9yeSBpcyBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMgdG8gY3JlYXRlIGEgbmV3IG1lc3NhZ2Ugb2JqCisKKyAgICAgICAgVGhlIHBvbGljeSBrZXl3b3JkIHNwZWNpZmllcyBhIHBvbGljeSBvYmplY3QgdGhhdCBjb250cm9scyBhIG51bWJlciBvZgorICAgICAgICBhc3BlY3RzIG9mIHRoZSBwYXJzZXIncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdCBwb2xpY3kgbWFpbnRhaW5zCisgICAgICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBfZmFjdG9yeQorICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQorICAgICAgICB0cnk6CisgICAgICAgICAgICBfZmFjdG9yeShwb2xpY3k9c2VsZi5wb2xpY3kpCisgICAgICAgICAgICBzZWxmLl9mYWN0b3J5X2t3ZHMgPSBsYW1iZGE6IHsncG9saWN5Jzogc2VsZi5wb2xpY3l9CisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAjIEFzc3VtZSB0aGlzIGlzIGFuIG9sZC1zdHlsZSBmYWN0b3J5CisgICAgICAgICAgICBzZWxmLl9mYWN0b3J5X2t3ZHMgPSBsYW1iZGE6IHt9CiAgICAgICAgIHNlbGYuX2lucHV0ID0gQnVmZmVyZWRTdWJGaWxlKCkKICAgICAgICAgc2VsZi5fbXNnc3RhY2sgPSBbXQogICAgICAgICBzZWxmLl9wYXJzZSA9IHNlbGYuX3BhcnNlZ2VuKCkuX19uZXh0X18KQEAgLTE3MSwxMSArMTgyLDEyIEBACiAgICAgICAgICMgTG9vayBmb3IgZmluYWwgc2V0IG9mIGRlZmVjdHMKICAgICAgICAgaWYgcm9vdC5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnIFwKICAgICAgICAgICAgICAgIGFuZCBub3Qgcm9vdC5pc19tdWx0aXBhcnQoKToKLSAgICAgICAgICAgIHJvb3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdCgpKQorICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdCgpCisgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHJvb3QsIGRlZmVjdCkKICAgICAgICAgcmV0dXJuIHJvb3QKIAogICAgIGRlZiBfbmV3X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoKQorICAgICAgICBtc2cgPSBzZWxmLl9mYWN0b3J5KCoqc2VsZi5fZmFjdG9yeV9rd2RzKCkpCiAgICAgICAgIGlmIHNlbGYuX2N1ciBhbmQgc2VsZi5fY3VyLmdldF9jb250ZW50X3R5cGUoKSA9PSAnbXVsdGlwYXJ0L2RpZ2VzdCc6CiAgICAgICAgICAgICBtc2cuc2V0X2RlZmF1bHRfdHlwZSgnbWVzc2FnZS9yZmM4MjInKQogICAgICAgICBpZiBzZWxmLl9tc2dzdGFjazoKQEAgLTIwNyw2ICsyMTksOCBAQAogICAgICAgICAgICAgICAgICMgKGkuZS4gbmV3bGluZSksIGp1c3QgdGhyb3cgaXQgYXdheS4gT3RoZXJ3aXNlIHRoZSBsaW5lIGlzCiAgICAgICAgICAgICAgICAgIyBwYXJ0IG9mIHRoZSBib2R5IHNvIHB1c2ggaXQgYmFjay4KICAgICAgICAgICAgICAgICBpZiBub3QgTkxDUkUubWF0Y2gobGluZSk6CisgICAgICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5NaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0LnVucmVhZGxpbmUobGluZSkKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQobGluZSkKQEAgLTI4NCw3ICsyOTgsOCBAQAogICAgICAgICAgICAgICAgICMgZGVmaW5lZCBhIGJvdW5kYXJ5LiAgVGhhdCdzIGEgcHJvYmxlbSB3aGljaCB3ZSdsbCBoYW5kbGUgYnkKICAgICAgICAgICAgICAgICAjIHJlYWRpbmcgZXZlcnl0aGluZyB1bnRpbCB0aGUgRU9GIGFuZCBtYXJraW5nIHRoZSBtZXNzYWdlIGFzCiAgICAgICAgICAgICAgICAgIyBkZWZlY3RpdmUuCi0gICAgICAgICAgICAgICAgc2VsZi5fY3VyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QoKSkKKyAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQogICAgICAgICAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9pbnB1dDoKICAgICAgICAgICAgICAgICAgICAgaWYgbGluZSBpcyBOZWVkTW9yZURhdGE6CkBAIC0yOTMsNiArMzA4LDExIEBACiAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQogICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5zZXRfcGF5bG9hZChFTVBUWVNUUklORy5qb2luKGxpbmVzKSkKICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICMgTWFrZSBzdXJlIGEgdmFsaWQgY29udGVudCB0eXBlIHdhcyBzcGVjaWZpZWQgcGVyIFJGQyAyMDQ1OjYuNC4KKyAgICAgICAgICAgIGlmIChzZWxmLl9jdXIuZ2V0KCdjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJywgJzhiaXQnKS5sb3dlcigpCisgICAgICAgICAgICAgICAgICAgIG5vdCBpbiAoJzdiaXQnLCAnOGJpdCcsICdiaW5hcnknKSk6CisgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICMgQ3JlYXRlIGEgbGluZSBtYXRjaCBwcmVkaWNhdGUgd2hpY2ggbWF0Y2hlcyB0aGUgaW50ZXItcGFydAogICAgICAgICAgICAgIyBib3VuZGFyeSBhcyB3ZWxsIGFzIHRoZSBlbmQtb2YtbXVsdGlwYXJ0IGJvdW5kYXJ5LiAgRG9uJ3QgcHVzaAogICAgICAgICAgICAgIyB0aGlzIG9udG8gdGhlIGlucHV0IHN0cmVhbSB1bnRpbCB3ZSd2ZSBzY2FubmVkIHBhc3QgdGhlCkBAIC0zMDQsNiArMzI0LDcgQEAKICAgICAgICAgICAgIGNhcHR1cmluZ19wcmVhbWJsZSA9IFRydWUKICAgICAgICAgICAgIHByZWFtYmxlID0gW10KICAgICAgICAgICAgIGxpbmVzZXAgPSBGYWxzZQorICAgICAgICAgICAgY2xvc2VfYm91bmRhcnlfc2VlbiA9IEZhbHNlCiAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9pbnB1dC5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICAgaWYgbGluZSBpcyBOZWVkTW9yZURhdGE6CkBAIC0zMTgsNiArMzM5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyB0aGUgY2xvc2luZyBib3VuZGFyeSwgdGhlbiB3ZSBuZWVkIHRvIGluaXRpYWxpemUgdGhlCiAgICAgICAgICAgICAgICAgICAgICMgZXBpbG9ndWUgd2l0aCB0aGUgZW1wdHkgc3RyaW5nIChzZWUgYmVsb3cpLgogICAgICAgICAgICAgICAgICAgICBpZiBtby5ncm91cCgnZW5kJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9ib3VuZGFyeV9zZWVuID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNlcCA9IG1vLmdyb3VwKCdsaW5lc2VwJykKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICMgV2Ugc2F3IGFuIGludGVyLXBhcnQgYm91bmRhcnkuICBXZXJlIHdlIGluIHRoZSBwcmVhbWJsZT8KQEAgLTM4Niw5ICs0MDgsOSBAQAogICAgICAgICAgICAgIyBXZSd2ZSBzZWVuIGVpdGhlciB0aGUgRU9GIG9yIHRoZSBlbmQgYm91bmRhcnkuICBJZiB3ZSdyZSBzdGlsbAogICAgICAgICAgICAgIyBjYXB0dXJpbmcgdGhlIHByZWFtYmxlLCB3ZSBuZXZlciBzYXcgdGhlIHN0YXJ0IGJvdW5kYXJ5LiAgTm90ZQogICAgICAgICAgICAgIyB0aGF0IGFzIGEgZGVmZWN0IGFuZCBzdG9yZSB0aGUgY2FwdHVyZWQgdGV4dCBhcyB0aGUgcGF5bG9hZC4KLSAgICAgICAgICAgICMgRXZlcnl0aGluZyBmcm9tIGhlcmUgdG8gdGhlIEVPRiBpcyBlcGlsb2d1ZS4KICAgICAgICAgICAgIGlmIGNhcHR1cmluZ19wcmVhbWJsZToKLSAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCgpKQorICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoKQorICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCiAgICAgICAgICAgICAgICAgc2VsZi5fY3VyLnNldF9wYXlsb2FkKEVNUFRZU1RSSU5HLmpvaW4ocHJlYW1ibGUpKQogICAgICAgICAgICAgICAgIGVwaWxvZ3VlID0gW10KICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9pbnB1dDoKQEAgLTM5Nyw4ICs0MTksMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgc2VsZi5fY3VyLmVwaWxvZ3VlID0gRU1QVFlTVFJJTkcuam9pbihlcGlsb2d1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICMgSWYgdGhlIGVuZCBib3VuZGFyeSBlbmRlZCBpbiBhIG5ld2xpbmUsIHdlJ2xsIG5lZWQgdG8gbWFrZSBzdXJlCi0gICAgICAgICAgICAjIHRoZSBlcGlsb2d1ZSBpc24ndCBOb25lCisgICAgICAgICAgICAjIElmIHdlJ3JlIG5vdCBwcm9jZXNzaW5nIHRoZSBwcmVhbWJsZSwgdGhlbiB3ZSBtaWdodCBoYXZlIHNlZW4KKyAgICAgICAgICAgICMgRU9GIHdpdGhvdXQgc2VlaW5nIHRoYXQgZW5kIGJvdW5kYXJ5Li4udGhhdCBpcyBhbHNvIGEgZGVmZWN0LgorICAgICAgICAgICAgaWYgbm90IGNsb3NlX2JvdW5kYXJ5X3NlZW46CisgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLkNsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICMgRXZlcnl0aGluZyBmcm9tIGhlcmUgdG8gdGhlIEVPRiBpcyBlcGlsb2d1ZS4gIElmIHRoZSBlbmQgYm91bmRhcnkKKyAgICAgICAgICAgICMgZW5kZWQgaW4gYSBuZXdsaW5lLCB3ZSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZXBpbG9ndWUgaXNuJ3QKKyAgICAgICAgICAgICMgTm9uZQogICAgICAgICAgICAgaWYgbGluZXNlcDoKICAgICAgICAgICAgICAgICBlcGlsb2d1ZSA9IFsnJ10KICAgICAgICAgICAgIGVsc2U6CkBAIC00NDAsMTQgKzQ2OSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAjIGlzIGlsbGVnYWwsIHNvIGxldCdzIG5vdGUgdGhlIGRlZmVjdCwgc3RvcmUgdGhlIGlsbGVnYWwKICAgICAgICAgICAgICAgICAgICAgIyBsaW5lLCBhbmQgaWdub3JlIGl0IGZvciBwdXJwb3NlcyBvZiBoZWFkZXJzLgogICAgICAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QobGluZSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3VyLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBsYXN0dmFsdWUuYXBwZW5kKGxpbmUpCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGxhc3RoZWFkZXI6Ci0gICAgICAgICAgICAgICAgIyBYWFggcmVjb25zaWRlciB0aGUgam9pbmluZyBvZiBmb2xkZWQgbGluZXMKLSAgICAgICAgICAgICAgICBsaGRyID0gRU1QVFlTVFJJTkcuam9pbihsYXN0dmFsdWUpWzotMV0ucnN0cmlwKCdcclxuJykKLSAgICAgICAgICAgICAgICBzZWxmLl9jdXJbbGFzdGhlYWRlcl0gPSBsaGRyCisgICAgICAgICAgICAgICAgc2VsZi5fY3VyLnNldF9yYXcoKnNlbGYucG9saWN5LmhlYWRlcl9zb3VyY2VfcGFyc2UobGFzdHZhbHVlKSkKICAgICAgICAgICAgICAgICBsYXN0aGVhZGVyLCBsYXN0dmFsdWUgPSAnJywgW10KICAgICAgICAgICAgICMgQ2hlY2sgZm9yIGVudmVsb3BlIGhlYWRlciwgaS5lLiB1bml4LWZyb20KICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnRnJvbSAnKToKQEAgLTQ3MSwxOSArNDk4LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5kZWZlY3RzLmFwcGVuZChkZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAjIFNwbGl0IHRoZSBsaW5lIG9uIHRoZSBjb2xvbiBzZXBhcmF0aW5nIGZpZWxkIG5hbWUgZnJvbSB2YWx1ZS4KKyAgICAgICAgICAgICMgVGhlcmUgd2lsbCBhbHdheXMgYmUgYSBjb2xvbiwgYmVjYXVzZSBpZiB0aGVyZSB3YXNuJ3QgdGhlIHBhcnQgb2YKKyAgICAgICAgICAgICMgdGhlIHBhcnNlciB0aGF0IGNhbGxzIHVzIHdvdWxkIGhhdmUgc3RhcnRlZCBwYXJzaW5nIHRoZSBib2R5LgogICAgICAgICAgICAgaSA9IGxpbmUuZmluZCgnOicpCi0gICAgICAgICAgICBpZiBpIDwgMDoKLSAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuTWFsZm9ybWVkSGVhZGVyRGVmZWN0KGxpbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5fY3VyLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgYXNzZXJ0IGk+MCwgIl9wYXJzZV9oZWFkZXJzIGZlZCBsaW5lIHdpdGggbm8gOiBhbmQgbm8gbGVhZGluZyBXUyIKICAgICAgICAgICAgIGxhc3RoZWFkZXIgPSBsaW5lWzppXQotICAgICAgICAgICAgbGFzdHZhbHVlID0gW2xpbmVbaSsxOl0ubHN0cmlwKCldCisgICAgICAgICAgICBsYXN0dmFsdWUgPSBbbGluZV0KICAgICAgICAgIyBEb25lIHdpdGggYWxsIHRoZSBsaW5lcywgc28gaGFuZGxlIHRoZSBsYXN0IGhlYWRlci4KICAgICAgICAgaWYgbGFzdGhlYWRlcjoKLSAgICAgICAgICAgICMgWFhYIHJlY29uc2lkZXIgdGhlIGpvaW5pbmcgb2YgZm9sZGVkIGxpbmVzCi0gICAgICAgICAgICBzZWxmLl9jdXJbbGFzdGhlYWRlcl0gPSBFTVBUWVNUUklORy5qb2luKGxhc3R2YWx1ZSkucnN0cmlwKCdcclxuJykKKyAgICAgICAgICAgIHNlbGYuX2N1ci5zZXRfcmF3KCpzZWxmLnBvbGljeS5oZWFkZXJfc291cmNlX3BhcnNlKGxhc3R2YWx1ZSkpCiAKLQwKKwogY2xhc3MgQnl0ZXNGZWVkUGFyc2VyKEZlZWRQYXJzZXIpOgogICAgICIiIkxpa2UgRmVlZFBhcnNlciwgYnV0IGZlZWQgYWNjZXB0cyBieXRlcy4iIiIKIApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2dlbmVyYXRvci5weSBiL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKaW5kZXggYzZiZmI3MC4uODk5YWRiYyAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2dlbmVyYXRvci5weQorKysgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CkBAIC0xMyw4ICsxMywxMCBAQAogaW1wb3J0IHdhcm5pbmdzCiAKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBCeXRlc0lPCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgogZnJvbSBlbWFpbC5oZWFkZXIgaW1wb3J0IEhlYWRlcgotZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IF9oYXNfc3Vycm9nYXRlcworaW1wb3J0IGVtYWlsLmNoYXJzZXQgYXMgX2NoYXJzZXQKIAogVU5ERVJTQ09SRSA9ICdfJwogTkwgPSAnXG4nICAjIFhYWDogbm8gbG9uZ2VyIHVzZWQgYnkgdGhlIGNvZGUgYmVsb3cuCkBAIC0zMyw3ICszNSw4IEBACiAgICAgIyBQdWJsaWMgaW50ZXJmYWNlCiAgICAgIwogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49Tm9uZSwgKiwKKyAgICAgICAgICAgICAgICAgcG9saWN5PU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgdGhlIGdlbmVyYXRvciBmb3IgbWVzc2FnZSBmbGF0dGVuaW5nLgogCiAgICAgICAgIG91dGZwIGlzIHRoZSBvdXRwdXQgZmlsZS1saWtlIG9iamVjdCBmb3Igd3JpdGluZyB0aGUgbWVzc2FnZSB0by4gIEl0CkBAIC00OSwxNiArNTIsMjIgQEAKICAgICAgICAgZGVmaW5lZCBpbiB0aGUgSGVhZGVyIGNsYXNzLiAgU2V0IG1heGhlYWRlcmxlbiB0byB6ZXJvIHRvIGRpc2FibGUKICAgICAgICAgaGVhZGVyIHdyYXBwaW5nLiAgVGhlIGRlZmF1bHQgaXMgNzgsIGFzIHJlY29tbWVuZGVkIChidXQgbm90IHJlcXVpcmVkKQogICAgICAgICBieSBSRkMgMjgyMi4KKworICAgICAgICBUaGUgcG9saWN5IGtleXdvcmQgc3BlY2lmaWVzIGEgcG9saWN5IG9iamVjdCB0aGF0IGNvbnRyb2xzIGEgbnVtYmVyIG9mCisgICAgICAgIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRvcidzIG9wZXJhdGlvbi4gIFRoZSBkZWZhdWx0IHBvbGljeSBtYWludGFpbnMKKyAgICAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKwogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fZnAgPSBvdXRmcAogICAgICAgICBzZWxmLl9tYW5nbGVfZnJvbV8gPSBtYW5nbGVfZnJvbV8KLSAgICAgICAgc2VsZi5fbWF4aGVhZGVybGVuID0gbWF4aGVhZGVybGVuCisgICAgICAgIHNlbGYubWF4aGVhZGVybGVuID0gbWF4aGVhZGVybGVuCisgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CiAKICAgICBkZWYgd3JpdGUoc2VsZiwgcyk6CiAgICAgICAgICMgSnVzdCBkZWxlZ2F0ZSB0byB0aGUgZmlsZSBvYmplY3QKICAgICAgICAgc2VsZi5fZnAud3JpdGUocykKIAotICAgIGRlZiBmbGF0dGVuKHNlbGYsIG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9J1xuJyk6CisgICAgZGVmIGZsYXR0ZW4oc2VsZiwgbXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD1Ob25lKToKICAgICAgICAgciIiIlByaW50IHRoZSBtZXNzYWdlIG9iamVjdCB0cmVlIHJvb3RlZCBhdCBtc2cgdG8gdGhlIG91dHB1dCBmaWxlCiAgICAgICAgIHNwZWNpZmllZCB3aGVuIHRoZSBHZW5lcmF0b3IgaW5zdGFuY2Ugd2FzIGNyZWF0ZWQuCiAKQEAgLTcwLDI5ICs3OSw0NyBAQAogICAgICAgICBOb3RlIHRoYXQgZm9yIHN1Ym9iamVjdHMsIG5vIEZyb21fIGxpbmUgaXMgcHJpbnRlZC4KIAogICAgICAgICBsaW5lc2VwIHNwZWNpZmllcyB0aGUgY2hhcmFjdGVycyB1c2VkIHRvIGluZGljYXRlIGEgbmV3IGxpbmUgaW4KLSAgICAgICAgdGhlIG91dHB1dC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBtb3N0IHVzZWZ1bCBmb3IgdHlwaWNhbAotICAgICAgICBQeXRob24gYXBwbGljYXRpb25zLCBidXQgaXQgY2FuIGJlIHNldCB0byBcclxuIHRvIHByb2R1Y2UgUkZDLWNvbXBsaWFudAotICAgICAgICBsaW5lIHNlcGFyYXRvcnMgd2hlbiBuZWVkZWQuCisgICAgICAgIHRoZSBvdXRwdXQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBwb2xpY3kuCiAKICAgICAgICAgIiIiCiAgICAgICAgICMgV2UgdXNlIHRoZSBfWFhYIGNvbnN0YW50cyBmb3Igb3BlcmF0aW5nIG9uIGRhdGEgdGhhdCBjb21lcyBkaXJlY3RseQogICAgICAgICAjIGZyb20gdGhlIG1zZywgYW5kIF9lbmNvZGVkX1hYWCBjb25zdGFudHMgZm9yIG9wZXJhdGluZyBvbiBkYXRhIHRoYXQKICAgICAgICAgIyBoYXMgYWxyZWFkeSBiZWVuIGNvbnZlcnRlZCAodG8gYnl0ZXMgaW4gdGhlIEJ5dGVzR2VuZXJhdG9yKSBhbmQKICAgICAgICAgIyBpbnNlcnRlZCBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KLSAgICAgICAgc2VsZi5fTkwgPSBsaW5lc2VwCi0gICAgICAgIHNlbGYuX2VuY29kZWRfTkwgPSBzZWxmLl9lbmNvZGUobGluZXNlcCkKKyAgICAgICAgcG9saWN5ID0gbXNnLnBvbGljeSBpZiBzZWxmLnBvbGljeSBpcyBOb25lIGVsc2Ugc2VsZi5wb2xpY3kKKyAgICAgICAgaWYgbGluZXNlcCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBvbGljeSA9IHBvbGljeS5jbG9uZShsaW5lc2VwPWxpbmVzZXApCisgICAgICAgIGlmIHNlbGYubWF4aGVhZGVybGVuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gcG9saWN5LmNsb25lKG1heF9saW5lX2xlbmd0aD1zZWxmLm1heGhlYWRlcmxlbikKKyAgICAgICAgc2VsZi5fTkwgPSBwb2xpY3kubGluZXNlcAorICAgICAgICBzZWxmLl9lbmNvZGVkX05MID0gc2VsZi5fZW5jb2RlKHNlbGYuX05MKQogICAgICAgICBzZWxmLl9FTVBUWSA9ICcnCiAgICAgICAgIHNlbGYuX2VuY29kZWRfRU1UUFkgPSBzZWxmLl9lbmNvZGUoJycpCi0gICAgICAgIGlmIHVuaXhmcm9tOgotICAgICAgICAgICAgdWZyb20gPSBtc2cuZ2V0X3VuaXhmcm9tKCkKLSAgICAgICAgICAgIGlmIG5vdCB1ZnJvbToKLSAgICAgICAgICAgICAgICB1ZnJvbSA9ICdGcm9tIG5vYm9keSAnICsgdGltZS5jdGltZSh0aW1lLnRpbWUoKSkKLSAgICAgICAgICAgIHNlbGYud3JpdGUodWZyb20gKyBzZWxmLl9OTCkKLSAgICAgICAgc2VsZi5fd3JpdGUobXNnKQorICAgICAgICAjIEJlY2F1c2Ugd2UgdXNlIGNsb25lIChiZWxvdykgd2hlbiB3ZSByZWN1cnNpdmVseSBwcm9jZXNzIG1lc3NhZ2UKKyAgICAgICAgIyBzdWJwYXJ0cywgYW5kIGJlY2F1c2UgY2xvbmUgdXNlcyB0aGUgY29tcHV0ZWQgcG9saWN5IChub3QgTm9uZSksCisgICAgICAgICMgc3VibWVzc2FnZXMgd2lsbCBhdXRvbWF0aWNhbGx5IGdldCBzZXQgdG8gdGhlIGNvbXB1dGVkIHBvbGljeSB3aGVuCisgICAgICAgICMgdGhleSBhcmUgcHJvY2Vzc2VkIGJ5IHRoaXMgY29kZS4KKyAgICAgICAgb2xkX2dlbl9wb2xpY3kgPSBzZWxmLnBvbGljeQorICAgICAgICBvbGRfbXNnX3BvbGljeSA9IG1zZy5wb2xpY3kKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKKyAgICAgICAgICAgIG1zZy5wb2xpY3kgPSBwb2xpY3kKKyAgICAgICAgICAgIGlmIHVuaXhmcm9tOgorICAgICAgICAgICAgICAgIHVmcm9tID0gbXNnLmdldF91bml4ZnJvbSgpCisgICAgICAgICAgICAgICAgaWYgbm90IHVmcm9tOgorICAgICAgICAgICAgICAgICAgICB1ZnJvbSA9ICdGcm9tIG5vYm9keSAnICsgdGltZS5jdGltZSh0aW1lLnRpbWUoKSkKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHVmcm9tICsgc2VsZi5fTkwpCisgICAgICAgICAgICBzZWxmLl93cml0ZShtc2cpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnBvbGljeSA9IG9sZF9nZW5fcG9saWN5CisgICAgICAgICAgICBtc2cucG9saWN5ID0gb2xkX21zZ19wb2xpY3kKIAogICAgIGRlZiBjbG9uZShzZWxmLCBmcCk6CiAgICAgICAgICIiIkNsb25lIHRoaXMgZ2VuZXJhdG9yIHdpdGggdGhlIGV4YWN0IHNhbWUgb3B0aW9ucy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGZwLCBzZWxmLl9tYW5nbGVfZnJvbV8sIHNlbGYuX21heGhlYWRlcmxlbikKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGZwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWFuZ2xlX2Zyb21fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgIyBVc2UgcG9saWN5IHNldHRpbmcsIHdoaWNoIHdlJ3ZlIGFkanVzdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5wb2xpY3kpCiAKICAgICAjCiAgICAgIyBQcm90ZWN0ZWQgaW50ZXJmYWNlIC0gdW5kb2N1bWVudGVkIDsvCkBAIC0xNjcsMTYgKzE5NCw4IEBACiAgICAgIwogCiAgICAgZGVmIF93cml0ZV9oZWFkZXJzKHNlbGYsIG1zZyk6Ci0gICAgICAgIGZvciBoLCB2IGluIG1zZy5pdGVtcygpOgotICAgICAgICAgICAgc2VsZi53cml0ZSgnJXM6ICcgJSBoKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCBIZWFkZXIpOgotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUodi5lbmNvZGUoCi0gICAgICAgICAgICAgICAgICAgIG1heGxpbmVsZW49c2VsZi5fbWF4aGVhZGVybGVuLCBsaW5lc2VwPXNlbGYuX05MKStzZWxmLl9OTCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBIZWFkZXIncyBnb3QgbG90cyBvZiBzbWFydHMsIHNvIHVzZSBpdC4KLSAgICAgICAgICAgICAgICBoZWFkZXIgPSBIZWFkZXIodiwgbWF4bGluZWxlbj1zZWxmLl9tYXhoZWFkZXJsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9uYW1lPWgpCi0gICAgICAgICAgICAgICAgc2VsZi53cml0ZShoZWFkZXIuZW5jb2RlKGxpbmVzZXA9c2VsZi5fTkwpK3NlbGYuX05MKQorICAgICAgICBmb3IgaCwgdiBpbiBtc2cucmF3X2l0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLndyaXRlKHNlbGYucG9saWN5LmZvbGQoaCwgdikpCiAgICAgICAgICMgQSBibGFuayBsaW5lIGFsd2F5cyBzZXBhcmF0ZXMgaGVhZGVycyBmcm9tIGJvZHkKICAgICAgICAgc2VsZi53cml0ZShzZWxmLl9OTCkKIApAQCAtMjY1LDEyICsyODQsMTIgQEAKICAgICAgICAgIyBUaGUgY29udGVudHMgb2Ygc2lnbmVkIHBhcnRzIGhhcyB0byBzdGF5IHVubW9kaWZpZWQgaW4gb3JkZXIgdG8ga2VlcAogICAgICAgICAjIHRoZSBzaWduYXR1cmUgaW50YWN0IHBlciBSRkMxODQ3IDIuMSwgc28gd2UgZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCiAgICAgICAgICMgUkRNOiBUaGlzIGlzbid0IGVub3VnaCB0byBjb21wbGV0ZWx5IHByZXNlcnZlIHRoZSBwYXJ0LCBidXQgaXQgaGVscHMuCi0gICAgICAgIG9sZF9tYXhoZWFkZXJsZW4gPSBzZWxmLl9tYXhoZWFkZXJsZW4KKyAgICAgICAgcCA9IHNlbGYucG9saWN5CisgICAgICAgIHNlbGYucG9saWN5ID0gcC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbWF4aGVhZGVybGVuID0gMAogICAgICAgICAgICAgc2VsZi5faGFuZGxlX211bHRpcGFydChtc2cpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9tYXhoZWFkZXJsZW4gPSBvbGRfbWF4aGVhZGVybGVuCisgICAgICAgICAgICBzZWxmLnBvbGljeSA9IHAKIAogICAgIGRlZiBfaGFuZGxlX21lc3NhZ2VfZGVsaXZlcnlfc3RhdHVzKHNlbGYsIG1zZyk6CiAgICAgICAgICMgV2UgY2FuJ3QganVzdCB3cml0ZSB0aGUgaGVhZGVycyBkaXJlY3RseSB0byBzZWxmJ3MgZmlsZSBvYmplY3QKQEAgLTMwNSwxMCArMzI0LDEyIEBACiAgICAgICAgICMgbWVzc2FnZS9yZmM4MjIuICBTdWNoIG1lc3NhZ2VzIGFyZSBnZW5lcmF0ZWQgYnksIGZvciBleGFtcGxlLAogICAgICAgICAjIEdyb3Vwd2lzZSB3aGVuIGZvcndhcmRpbmcgdW5hZG9ybmVkIG1lc3NhZ2VzLiAgKElzc3VlIDc5NzAuKSAgU28KICAgICAgICAgIyBpbiB0aGF0IGNhc2Ugd2UganVzdCBlbWl0IHRoZSBzdHJpbmcgYm9keS4KLSAgICAgICAgcGF5bG9hZCA9IG1zZy5nZXRfcGF5bG9hZCgpCisgICAgICAgIHBheWxvYWQgPSBtc2cuX3BheWxvYWQKICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBsaXN0KToKICAgICAgICAgICAgIGcuZmxhdHRlbihtc2cuZ2V0X3BheWxvYWQoMCksIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPXNlbGYuX05MKQogICAgICAgICAgICAgcGF5bG9hZCA9IHMuZ2V0dmFsdWUoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX2VuY29kZShwYXlsb2FkKQogICAgICAgICBzZWxmLl9mcC53cml0ZShwYXlsb2FkKQogCiAgICAgIyBUaGlzIHVzZWQgdG8gYmUgYSBtb2R1bGUgbGV2ZWwgZnVuY3Rpb247IHdlIHVzZSBhIGNsYXNzbWV0aG9kIGZvciB0aGlzCkBAIC0zNDQsNyArMzY1LDEwIEBACiAKICAgICBGdW5jdGlvbmFsbHkgaWRlbnRpY2FsIHRvIHRoZSBiYXNlIEdlbmVyYXRvciBleGNlcHQgdGhhdCB0aGUgb3V0cHV0IGlzCiAgICAgYnl0ZXMgYW5kIG5vdCBzdHJpbmcuICBXaGVuIHN1cnJvZ2F0ZXMgd2VyZSB1c2VkIGluIHRoZSBpbnB1dCB0byBlbmNvZGUKLSAgICBieXRlcywgdGhlc2UgYXJlIGRlY29kZWQgYmFjayB0byBieXRlcyBmb3Igb3V0cHV0LgorICAgIGJ5dGVzLCB0aGVzZSBhcmUgZGVjb2RlZCBiYWNrIHRvIGJ5dGVzIGZvciBvdXRwdXQuICBJZiB0aGUgcG9saWN5IGhhcworICAgIGN0ZV90eXBlIHNldCB0byA3Yml0LCB0aGVuIHRoZSBtZXNzYWdlIGlzIHRyYW5zZm9ybWVkIHN1Y2ggdGhhdCB0aGUKKyAgICBub24tQVNDSUkgYnl0ZXMgYXJlIHByb3Blcmx5IGNvbnRlbnQgdHJhbnNmZXIgZW5jb2RlZCwgdXNpbmcgdGhlIGNoYXJzZXQKKyAgICB1bmtub3duLThiaXQuCiAKICAgICBUaGUgb3V0ZnAgb2JqZWN0IG11c3QgYWNjZXB0IGJ5dGVzIGluIGl0cyB3cml0ZSBtZXRob2QuCiAgICAgIiIiCkBAIC0zNjUsMjMgKzM4OSw4IEBACiAgICAgZGVmIF93cml0ZV9oZWFkZXJzKHNlbGYsIG1zZyk6CiAgICAgICAgICMgVGhpcyBpcyBhbG1vc3QgdGhlIHNhbWUgYXMgdGhlIHN0cmluZyB2ZXJzaW9uLCBleGNlcHQgZm9yIGhhbmRsaW5nCiAgICAgICAgICMgc3RyaW5ncyB3aXRoIDhiaXQgYnl0ZXMuCi0gICAgICAgIGZvciBoLCB2IGluIG1zZy5faGVhZGVyczoKLSAgICAgICAgICAgIHNlbGYud3JpdGUoJyVzOiAnICUgaCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgSGVhZGVyKToKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHYuZW5jb2RlKG1heGxpbmVsZW49c2VsZi5fbWF4aGVhZGVybGVuKStzZWxmLl9OTCkKLSAgICAgICAgICAgIGVsaWYgX2hhc19zdXJyb2dhdGVzKHYpOgotICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSByYXcgOGJpdCBkYXRhIGluIGEgYnl0ZSBzdHJpbmcsIHdlIGhhdmUgbm8gaWRlYQotICAgICAgICAgICAgICAgICMgd2hhdCB0aGUgZW5jb2RpbmcgaXMuICBUaGVyZSBpcyBubyBzYWZlIHdheSB0byBzcGxpdCB0aGlzCi0gICAgICAgICAgICAgICAgIyBzdHJpbmcuICBJZiBpdCdzIGFzY2lpLXN1YnNldCwgdGhlbiB3ZSBjb3VsZCBkbyBhIG5vcm1hbAotICAgICAgICAgICAgICAgICMgYXNjaWkgc3BsaXQsIGJ1dCBpZiBpdCdzIG11bHRpYnl0ZSB0aGVuIHdlIGNvdWxkIGJyZWFrIHRoZQotICAgICAgICAgICAgICAgICMgc3RyaW5nLiAgVGhlcmUncyBubyB3YXkgdG8ga25vdyBzbyB0aGUgbGVhc3QgaGFybSBzZWVtcyB0bwotICAgICAgICAgICAgICAgICMgYmUgdG8gbm90IHNwbGl0IHRoZSBzdHJpbmcgYW5kIHJpc2sgaXQgYmVpbmcgdG9vIGxvbmcuCi0gICAgICAgICAgICAgICAgc2VsZi53cml0ZSh2K05MKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIEhlYWRlcidzIGdvdCBsb3RzIG9mIHNtYXJ0cyBhbmQgdGhpcyBzdHJpbmcgaXMgc2FmZS4uLgotICAgICAgICAgICAgICAgIGhlYWRlciA9IEhlYWRlcih2LCBtYXhsaW5lbGVuPXNlbGYuX21heGhlYWRlcmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9aCkKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGhlYWRlci5lbmNvZGUobGluZXNlcD1zZWxmLl9OTCkrc2VsZi5fTkwpCisgICAgICAgIGZvciBoLCB2IGluIG1zZy5yYXdfaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHNlbGYucG9saWN5LmZvbGRfYmluYXJ5KGgsIHYpKQogICAgICAgICAjIEEgYmxhbmsgbGluZSBhbHdheXMgc2VwYXJhdGVzIGhlYWRlcnMgZnJvbSBib2R5CiAgICAgICAgIHNlbGYud3JpdGUoc2VsZi5fTkwpCiAKQEAgLTM5MCw3ICszOTksNyBAQAogICAgICAgICAjIGp1c3Qgd3JpdGUgaXQgYmFjayBvdXQuCiAgICAgICAgIGlmIG1zZy5fcGF5bG9hZCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIF9oYXNfc3Vycm9nYXRlcyhtc2cuX3BheWxvYWQpOgorICAgICAgICBpZiBfaGFzX3N1cnJvZ2F0ZXMobXNnLl9wYXlsb2FkKSBhbmQgbm90IHNlbGYucG9saWN5LmN0ZV90eXBlPT0nN2JpdCc6CiAgICAgICAgICAgICBpZiBzZWxmLl9tYW5nbGVfZnJvbV86CiAgICAgICAgICAgICAgICAgbXNnLl9wYXlsb2FkID0gZmNyZS5zdWIoIj5Gcm9tICIsIG1zZy5fcGF5bG9hZCkKICAgICAgICAgICAgIHNlbGYud3JpdGUobXNnLl9wYXlsb2FkKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2hlYWRlci5weSBiL0xpYi9lbWFpbC9oZWFkZXIucHkKaW5kZXggMzI1MGQzNi4uYTg5MjE5ZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2hlYWRlci5weQorKysgYi9MaWIvZW1haWwvaGVhZGVyLnB5CkBAIC00MCw3ICs0MCw2IEBACiAgIFw/ICAgICAgICAgICAgICAgICAgICAjIGxpdGVyYWwgPwogICAoP1A8ZW5jb2RlZD4uKj8pICAgICAgIyBub24tZ3JlZWR5IHVwIHRvIHRoZSBuZXh0ID89IGlzIHRoZSBlbmNvZGVkIHN0cmluZwogICBcPz0gICAgICAgICAgICAgICAgICAgIyBsaXRlcmFsID89Ci0gICg/PVsgXHRdfCQpICAgICAgICAgICAjIHdoaXRlc3BhY2Ugb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nCiAgICcnJywgcmUuVkVSQk9TRSB8IHJlLklHTk9SRUNBU0UgfCByZS5NVUxUSUxJTkUpCiAKICMgRmllbGQgbmFtZSByZWdleHAsIGluY2x1ZGluZyB0cmFpbGluZyBjb2xvbiwgYnV0IG5vdCBzZXBhcmF0aW5nIHdoaXRlc3BhY2UsCkBAIC04Niw4ICs4NSwxMiBAQAogICAgIHdvcmRzID0gW10KICAgICBmb3IgbGluZSBpbiBoZWFkZXIuc3BsaXRsaW5lcygpOgogICAgICAgICBwYXJ0cyA9IGVjcmUuc3BsaXQobGluZSkKKyAgICAgICAgZmlyc3QgPSBUcnVlCiAgICAgICAgIHdoaWxlIHBhcnRzOgotICAgICAgICAgICAgdW5lbmNvZGVkID0gcGFydHMucG9wKDApLnN0cmlwKCkKKyAgICAgICAgICAgIHVuZW5jb2RlZCA9IHBhcnRzLnBvcCgwKQorICAgICAgICAgICAgaWYgZmlyc3Q6CisgICAgICAgICAgICAgICAgdW5lbmNvZGVkID0gdW5lbmNvZGVkLmxzdHJpcCgpCisgICAgICAgICAgICAgICAgZmlyc3QgPSBGYWxzZQogICAgICAgICAgICAgaWYgdW5lbmNvZGVkOgogICAgICAgICAgICAgICAgIHdvcmRzLmFwcGVuZCgodW5lbmNvZGVkLCBOb25lLCBOb25lKSkKICAgICAgICAgICAgIGlmIHBhcnRzOgpAQCAtOTUsNiArOTgsMTYgQEAKICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHBhcnRzLnBvcCgwKS5sb3dlcigpCiAgICAgICAgICAgICAgICAgZW5jb2RlZCA9IHBhcnRzLnBvcCgwKQogICAgICAgICAgICAgICAgIHdvcmRzLmFwcGVuZCgoZW5jb2RlZCwgZW5jb2RpbmcsIGNoYXJzZXQpKQorICAgICMgTm93IGxvb3Agb3ZlciB3b3JkcyBhbmQgcmVtb3ZlIHdvcmRzIHRoYXQgY29uc2lzdCBvZiB3aGl0ZXNwYWNlCisgICAgIyBiZXR3ZWVuIHR3byBlbmNvZGVkIHN0cmluZ3MuCisgICAgaW1wb3J0IHN5cworICAgIGRyb3BsaXN0ID0gW10KKyAgICBmb3IgbiwgdyBpbiBlbnVtZXJhdGUod29yZHMpOgorICAgICAgICBpZiBuPjEgYW5kIHdbMV0gYW5kIHdvcmRzW24tMl1bMV0gYW5kIHdvcmRzW24tMV1bMF0uaXNzcGFjZSgpOgorICAgICAgICAgICAgZHJvcGxpc3QuYXBwZW5kKG4tMSkKKyAgICBmb3IgZCBpbiByZXZlcnNlZChkcm9wbGlzdCk6CisgICAgICAgIGRlbCB3b3Jkc1tkXQorCiAgICAgIyBUaGUgbmV4dCBzdGVwIGlzIHRvIGRlY29kZSBlYWNoIGVuY29kZWQgd29yZCBieSBhcHBseWluZyB0aGUgcmV2ZXJzZQogICAgICMgYmFzZTY0IG9yIHF1b3ByaSB0cmFuc2Zvcm1hdGlvbi4gIGRlY29kZWRfd29yZHMgaXMgbm93IGEgbGlzdCBvZiB0aGUKICAgICAjIGZvcm0gKGRlY29kZWRfd29yZCwgY2hhcnNldCkuCkBAIC0yMTcsMjIgKzIzMCwyNyBAQAogICAgICAgICBzZWxmLl9ub3JtYWxpemUoKQogICAgICAgICB1Y2h1bmtzID0gW10KICAgICAgICAgbGFzdGNzID0gTm9uZQorICAgICAgICBsYXN0c3BhY2UgPSBOb25lCiAgICAgICAgIGZvciBzdHJpbmcsIGNoYXJzZXQgaW4gc2VsZi5fY2h1bmtzOgogICAgICAgICAgICAgIyBXZSBtdXN0IHByZXNlcnZlIHNwYWNlcyBiZXR3ZWVuIGVuY29kZWQgYW5kIG5vbi1lbmNvZGVkIHdvcmQKICAgICAgICAgICAgICMgYm91bmRhcmllcywgd2hpY2ggbWVhbnMgZm9yIHVzIHdlIG5lZWQgdG8gYWRkIGEgc3BhY2Ugd2hlbiB3ZSBnbwogICAgICAgICAgICAgIyBmcm9tIGEgY2hhcnNldCB0byBOb25lL3VzLWFzY2lpLCBvciBmcm9tIE5vbmUvdXMtYXNjaWkgdG8gYQogICAgICAgICAgICAgIyBjaGFyc2V0LiAgT25seSBkbyB0aGlzIGZvciB0aGUgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IGNodW5rcy4KKyAgICAgICAgICAgICMgRG9uJ3QgYWRkIGEgc3BhY2UgaWYgdGhlIE5vbmUvdXMtYXNjaWkgc3RyaW5nIGFscmVhZHkgaGFzCisgICAgICAgICAgICAjIGEgc3BhY2UgKHRyYWlsaW5nIG9yIGxlYWRpbmcgZGVwZW5kaW5nIG9uIHRyYW5zaXRpb24pCiAgICAgICAgICAgICBuZXh0Y3MgPSBjaGFyc2V0CiAgICAgICAgICAgICBpZiBuZXh0Y3MgPT0gX2NoYXJzZXQuVU5LTk9XTjhCSVQ6CiAgICAgICAgICAgICAgICAgb3JpZ2luYWxfYnl0ZXMgPSBzdHJpbmcuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICAgICAgICAgIHN0cmluZyA9IG9yaWdpbmFsX2J5dGVzLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCiAgICAgICAgICAgICBpZiB1Y2h1bmtzOgorICAgICAgICAgICAgICAgIGhhc3NwYWNlID0gc3RyaW5nIGFuZCBzZWxmLl9ub25jdGV4dChzdHJpbmdbMF0pCiAgICAgICAgICAgICAgICAgaWYgbGFzdGNzIG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5leHRjcyBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5leHRjcyBpbiAoTm9uZSwgJ3VzLWFzY2lpJykgYW5kIG5vdCBoYXNzcGFjZToKICAgICAgICAgICAgICAgICAgICAgICAgIHVjaHVua3MuYXBwZW5kKFNQQUNFKQogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGNzID0gTm9uZQotICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNzIG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6CisgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y3Mgbm90IGluIChOb25lLCAndXMtYXNjaWknKSBhbmQgbm90IGxhc3RzcGFjZToKICAgICAgICAgICAgICAgICAgICAgdWNodW5rcy5hcHBlbmQoU1BBQ0UpCisgICAgICAgICAgICBsYXN0c3BhY2UgPSBzdHJpbmcgYW5kIHNlbGYuX25vbmN0ZXh0KHN0cmluZ1stMV0pCiAgICAgICAgICAgICBsYXN0Y3MgPSBuZXh0Y3MKICAgICAgICAgICAgIHVjaHVua3MuYXBwZW5kKHN0cmluZykKICAgICAgICAgcmV0dXJuIEVNUFRZU1RSSU5HLmpvaW4odWNodW5rcykKQEAgLTI5MSw2ICszMDksMTEgQEAKICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gVVRGOAogICAgICAgICBzZWxmLl9jaHVua3MuYXBwZW5kKChzLCBjaGFyc2V0KSkKIAorICAgIGRlZiBfbm9uY3RleHQoc2VsZiwgcyk6CisgICAgICAgICIiIlRydWUgaWYgc3RyaW5nIHMgaXMgbm90IGEgY3RleHQgY2hhcmFjdGVyIG9mIFJGQzgyMi4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzLmlzc3BhY2UoKSBvciBzIGluICgnKCcsICcpJywgJ1xcJykKKwogICAgIGRlZiBlbmNvZGUoc2VsZiwgc3BsaXRjaGFycz0nOywgXHQnLCBtYXhsaW5lbGVuPU5vbmUsIGxpbmVzZXA9J1xuJyk6CiAgICAgICAgIHIiIiJFbmNvZGUgYSBtZXNzYWdlIGhlYWRlciBpbnRvIGFuIFJGQy1jb21wbGlhbnQgZm9ybWF0LgogCkBAIC0zMzQsNyArMzU3LDIwIEBACiAgICAgICAgICAgICBtYXhsaW5lbGVuID0gMTAwMDAwMAogICAgICAgICBmb3JtYXR0ZXIgPSBfVmFsdWVGb3JtYXR0ZXIoc2VsZi5faGVhZGVybGVuLCBtYXhsaW5lbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29udGludWF0aW9uX3dzLCBzcGxpdGNoYXJzKQorICAgICAgICBsYXN0Y3MgPSBOb25lCisgICAgICAgIGhhc3NwYWNlID0gbGFzdHNwYWNlID0gTm9uZQogICAgICAgICBmb3Igc3RyaW5nLCBjaGFyc2V0IGluIHNlbGYuX2NodW5rczoKKyAgICAgICAgICAgIGlmIGhhc3NwYWNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGhhc3NwYWNlID0gc3RyaW5nIGFuZCBzZWxmLl9ub25jdGV4dChzdHJpbmdbMF0pCisgICAgICAgICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICAgICAgICAgIGlmIGxhc3RjcyBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgaGFzc3BhY2Ugb3IgY2hhcnNldCBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXJzZXQgbm90IGluIChOb25lLCAndXMtYXNjaWknKSBhbmQgbm90IGxhc3RzcGFjZToKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKKyAgICAgICAgICAgIGxhc3RzcGFjZSA9IHN0cmluZyBhbmQgc2VsZi5fbm9uY3RleHQoc3RyaW5nWy0xXSkKKyAgICAgICAgICAgIGxhc3RjcyA9IGNoYXJzZXQKKyAgICAgICAgICAgIGhhc3NwYWNlID0gRmFsc2UKICAgICAgICAgICAgIGxpbmVzID0gc3RyaW5nLnNwbGl0bGluZXMoKQogICAgICAgICAgICAgaWYgbGluZXM6CiAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmZlZWQoJycsIGxpbmVzWzBdLCBjaGFyc2V0KQpAQCAtMzUxLDYgKzM4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mZWVkKGZ3cywgc2xpbmUsIGNoYXJzZXQpCiAgICAgICAgICAgICBpZiBsZW4obGluZXMpID4gMToKICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIubmV3bGluZSgpCisgICAgICAgIGlmIHNlbGYuX2NodW5rczoKICAgICAgICAgICAgIGZvcm1hdHRlci5hZGRfdHJhbnNpdGlvbigpCiAgICAgICAgIHZhbHVlID0gZm9ybWF0dGVyLl9zdHIobGluZXNlcCkKICAgICAgICAgaWYgX2VtYmVkZWRfaGVhZGVyLnNlYXJjaCh2YWx1ZSk6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkgYi9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZhZTk1MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weQpAQCAtMCwwICsxLDU4MyBAQAorIiIiUmVwcmVzZW50aW5nIGFuZCBtYW5pcHVsYXRpbmcgZW1haWwgaGVhZGVycyB2aWEgY3VzdG9tIG9iamVjdHMuCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIZWFkZXJSZWdpc3RyeSBBUEkuCitUaGUgaW1wbGVtZW50YXRpb24gaXMgZGVzaWduZWQgdG8gZmxleGlibHkgZm9sbG93IFJGQzUzMjIgcnVsZXMuCisKK0V2ZW50dWFsbHkgSGVhZGVyUmVnaXN0cnkgd2lsbCBiZSBhIHB1YmxpYyBBUEksIGJ1dCBpdCBpc24ndCB5ZXQsCithbmQgd2lsbCBwcm9iYWJseSBjaGFuZ2Ugc29tZSBiZWZvcmUgdGhhdCBoYXBwZW5zLgorCisiIiIKKworZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworZnJvbSBlbWFpbCBpbXBvcnQgX2hlYWRlcl92YWx1ZV9wYXJzZXIgYXMgcGFyc2VyCisKK2NsYXNzIEFkZHJlc3M6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGlzcGxheV9uYW1lPScnLCB1c2VybmFtZT0nJywgZG9tYWluPScnLCBhZGRyX3NwZWM9Tm9uZSk6CisgICAgICAgICIiIkNyZWF0ZSBhbiBvYmplY3QgcmVwcmVzZXRpbmcgYSBmdWxsIGVtYWlsIGFkZHJlc3MuCisKKyAgICAgICAgQW4gYWRkcmVzcyBjYW4gaGF2ZSBhICdkaXNwbGF5X25hbWUnLCBhICd1c2VybmFtZScsIGFuZCBhICdkb21haW4nLiAgSW4KKyAgICAgICAgYWRkaXRpb24gdG8gc3BlY2lmeWluZyB0aGUgdXNlcm5hbWUgYW5kIGRvbWFpbiBzZXBhcmF0ZWx5LCB0aGV5IG1heSBiZQorICAgICAgICBzcGVjaWZpZWQgdG9nZXRoZXIgYnkgdXNpbmcgdGhlIGFkZHJfc3BlYyBrZXl3b3JkICppbnN0ZWFkIG9mKiB0aGUKKyAgICAgICAgdXNlcm5hbWUgYW5kIGRvbWFpbiBrZXl3b3Jkcy4gIElmIGFuIGFkZHJfc3BlYyBzdHJpbmcgaXMgc3BlY2lmaWVkIGl0CisgICAgICAgIG11c3QgYmUgcHJvcGVybHkgcXVvdGVkIGFjY29yZGluZyB0byBSRkMgNTMyMiBydWxlczsgYW4gZXJyb3Igd2lsbCBiZQorICAgICAgICByYWlzZWQgaWYgaXQgaXMgbm90LgorCisgICAgICAgIEFuIEFkZHJlc3Mgb2JqZWN0IGhhcyBkaXNwbGF5X25hbWUsIHVzZXJuYW1lLCBkb21haW4sIGFuZCBhZGRyX3NwZWMKKyAgICAgICAgYXR0cmlidXRlcywgYWxsIG9mIHdoaWNoIGFyZSByZWFkLW9ubHkuICBUaGUgYWRkcl9zcGVjIGFuZCB0aGUgc3RyaW5nCisgICAgICAgIHZhbHVlIG9mIHRoZSBvYmplY3QgYXJlIGJvdGggcXVvdGVkIGFjY29yZGluZyB0byBSRkM1MzIyIHJ1bGVzLCBidXQKKyAgICAgICAgd2l0aG91dCBhbnkgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZy4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBUaGlzIGNsYXVzZSB3aXRoIGl0cyBwb3RlbnRpYWwgJ3JhaXNlJyBtYXkgb25seSBoYXBwZW4gd2hlbiBhbgorICAgICAgICAjIGFwcGxpY2F0aW9uIHByb2dyYW0gY3JlYXRlcyBhbiBBZGRyZXNzIG9iamVjdCB1c2luZyBhbiBhZGRyX3NwZWMKKyAgICAgICAgIyBrZXl3b3JkLiAgVGhlIGVtYWlsIGxpYnJhcnkgY29kZSBpdHNlbGYgbXVzdCBhbHdheXMgc3VwcGx5IHVzZXJuYW1lCisgICAgICAgICMgYW5kIGRvbWFpbi4KKyAgICAgICAgaWYgYWRkcl9zcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgdXNlcm5hbWUgb3IgZG9tYWluOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYWRkcnNwZWMgc3BlY2lmaWVkIHdoZW4gdXNlcm5hbWUgYW5kL29yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbWFpbiBhbHNvIHNwZWNpZmllZCIpCisgICAgICAgICAgICBhX3MsIHJlc3QgPSBwYXJzZXIuZ2V0X2FkZHJfc3BlYyhhZGRyX3NwZWMpCisgICAgICAgICAgICBpZiByZXN0OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgYWRkcl9zcGVjOyBvbmx5ICd7fScgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIGJlIHBhcnNlZCBmcm9tICd7fSciLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfcywgYWRkcl9zcGVjKSkKKyAgICAgICAgICAgIGlmIGFfcy5hbGxfZGVmZWN0czoKKyAgICAgICAgICAgICAgICByYWlzZSBhX3MuYWxsX2RlZmVjdHNbMF0KKyAgICAgICAgICAgIHVzZXJuYW1lID0gYV9zLmxvY2FsX3BhcnQKKyAgICAgICAgICAgIGRvbWFpbiA9IGFfcy5kb21haW4KKyAgICAgICAgc2VsZi5fZGlzcGxheV9uYW1lID0gZGlzcGxheV9uYW1lCisgICAgICAgIHNlbGYuX3VzZXJuYW1lID0gdXNlcm5hbWUKKyAgICAgICAgc2VsZi5fZG9tYWluID0gZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdXNlcm5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl91c2VybmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgIiIiVGhlIGFkZHJfc3BlYyAodXNlcm5hbWVAZG9tYWluKSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLCBxdW90ZWQKKyAgICAgICAgYWNjb3JkaW5nIHRvIFJGQyA1MzIyIHJ1bGVzLCBidXQgd2l0aCBubyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nLgorICAgICAgICAiIiIKKyAgICAgICAgbmFtZXNldCA9IHNldChzZWxmLnVzZXJuYW1lKQorICAgICAgICBpZiBsZW4obmFtZXNldCkgPiBsZW4obmFtZXNldC1wYXJzZXIuRE9UX0FUT01fRU5EUyk6CisgICAgICAgICAgICBscCA9IHBhcnNlci5xdW90ZV9zdHJpbmcoc2VsZi51c2VybmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxwID0gc2VsZi51c2VybmFtZQorICAgICAgICBpZiBzZWxmLmRvbWFpbjoKKyAgICAgICAgICAgIHJldHVybiBscCArICdAJyArIHNlbGYuZG9tYWluCisgICAgICAgIGlmIG5vdCBscDoKKyAgICAgICAgICAgIHJldHVybiAnPD4nCisgICAgICAgIHJldHVybiBscAorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkFkZHJlc3MoZGlzcGxheV9uYW1lPXshcn0sIHVzZXJuYW1lPXshcn0sIGRvbWFpbj17IXJ9KSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaXNwbGF5X25hbWUsIHNlbGYudXNlcm5hbWUsIHNlbGYuZG9tYWluKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5hbWVzZXQgPSBzZXQoc2VsZi5kaXNwbGF5X25hbWUpCisgICAgICAgIGlmIGxlbihuYW1lc2V0KSA+IGxlbihuYW1lc2V0LXBhcnNlci5TUEVDSUFMUyk6CisgICAgICAgICAgICBkaXNwID0gcGFyc2VyLnF1b3RlX3N0cmluZyhzZWxmLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRpc3AgPSBzZWxmLmRpc3BsYXlfbmFtZQorICAgICAgICBpZiBkaXNwOgorICAgICAgICAgICAgYWRkcl9zcGVjID0gJycgaWYgc2VsZi5hZGRyX3NwZWM9PSc8PicgZWxzZSBzZWxmLmFkZHJfc3BlYworICAgICAgICAgICAgcmV0dXJuICJ7fSA8e30+Ii5mb3JtYXQoZGlzcCwgYWRkcl9zcGVjKQorICAgICAgICByZXR1cm4gc2VsZi5hZGRyX3NwZWMKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiB0eXBlKG90aGVyKSAhPSB0eXBlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAoc2VsZi5kaXNwbGF5X25hbWUgPT0gb3RoZXIuZGlzcGxheV9uYW1lIGFuZAorICAgICAgICAgICAgICAgIHNlbGYudXNlcm5hbWUgPT0gb3RoZXIudXNlcm5hbWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5kb21haW4gPT0gb3RoZXIuZG9tYWluKQorCisKK2NsYXNzIEdyb3VwOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpc3BsYXlfbmFtZT1Ob25lLCBhZGRyZXNzZXM9Tm9uZSk6CisgICAgICAgICIiIkNyZWF0ZSBhbiBvYmplY3QgcmVwcmVzZW50aW5nIGFuIGFkZHJlc3MgZ3JvdXAuCisKKyAgICAgICAgQW4gYWRkcmVzcyBncm91cCBjb25zaXN0cyBvZiBhIGRpc3BsYXlfbmFtZSBmb2xsb3dlZCBieSBjb2xvbiBhbmQgYW4KKyAgICAgICAgbGlzdCBvZiBhZGRyZXNzZXMgKHNlZSBBZGRyZXNzKSB0ZXJtaW5hdGVkIGJ5IGEgc2VtaS1jb2xvbi4gIFRoZSBHcm91cAorICAgICAgICBpcyBjcmVhdGVkIGJ5IHNwZWNpZnlpbmcgYSBkaXNwbGF5X25hbWUgYW5kIGEgcG9zc2libHkgZW1wdHkgbGlzdCBvZgorICAgICAgICBBZGRyZXNzIG9iamVjdHMuICBBIEdyb3VwIGNhbiBhbHNvIGJlIHVzZWQgdG8gcmVwcmVzZW50IGEgc2luZ2xlCisgICAgICAgIGFkZHJlc3MgdGhhdCBpcyBub3QgaW4gYSBncm91cCwgd2hpY2ggaXMgY29udmVuaWVudCB3aGVuIG1hbmlwdWxhdGluZworICAgICAgICBsaXN0cyB0aGF0IGFyZSBhIGNvbWJpbmF0aW9uIG9mIEdyb3VwcyBhbmQgaW5kaXZpZHVhbCBBZGRyZXNzZXMuICBJbgorICAgICAgICB0aGlzIGNhc2UgdGhlIGRpc3BsYXlfbmFtZSBzaG91bGQgYmUgc2V0IHRvIE5vbmUuICBJbiBwYXJ0aWN1bGFyLCB0aGUKKyAgICAgICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgR3JvdXAgd2hvc2UgZGlzcGxheV9uYW1lIGlzIE5vbmUgaXMgdGhlIHNhbWUKKyAgICAgICAgYXMgdGhlIEFkZHJlc3Mgb2JqZWN0LCBpZiB0aGVyZSBpcyBvbmUgYW5kIG9ubHkgb25lIEFkZHJlc3Mgb2JqZWN0IGluCisgICAgICAgIHRoZSBhZGRyZXNzZXMgbGlzdC4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZGlzcGxheV9uYW1lID0gZGlzcGxheV9uYW1lCisgICAgICAgIHNlbGYuX2FkZHJlc3NlcyA9IHR1cGxlKGFkZHJlc3NlcykgaWYgYWRkcmVzc2VzIGVsc2UgdHVwbGUoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Rpc3BsYXlfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NlcworCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkdyb3VwKGRpc3BsYXlfbmFtZT17IXJ9LCBhZGRyZXNzZXM9eyFyfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICBzZWxmLmRpc3BsYXlfbmFtZSwgc2VsZi5hZGRyZXNzZXMpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5kaXNwbGF5X25hbWUgaXMgTm9uZSBhbmQgbGVuKHNlbGYuYWRkcmVzc2VzKT09MToKKyAgICAgICAgICAgIHJldHVybiBzdHIoc2VsZi5hZGRyZXNzZXNbMF0pCisgICAgICAgIGRpc3AgPSBzZWxmLmRpc3BsYXlfbmFtZQorICAgICAgICBpZiBkaXNwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbmFtZXNldCA9IHNldChkaXNwKQorICAgICAgICAgICAgaWYgbGVuKG5hbWVzZXQpID4gbGVuKG5hbWVzZXQtcGFyc2VyLlNQRUNJQUxTKToKKyAgICAgICAgICAgICAgICBkaXNwID0gcGFyc2VyLnF1b3RlX3N0cmluZyhkaXNwKQorICAgICAgICBhZHJzdHIgPSAiLCAiLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYuYWRkcmVzc2VzKQorICAgICAgICBhZHJzdHIgPSAnICcgKyBhZHJzdHIgaWYgYWRyc3RyIGVsc2UgYWRyc3RyCisgICAgICAgIHJldHVybiAie306e307Ii5mb3JtYXQoZGlzcCwgYWRyc3RyKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHR5cGUob3RoZXIpICE9IHR5cGUoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIChzZWxmLmRpc3BsYXlfbmFtZSA9PSBvdGhlci5kaXNwbGF5X25hbWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzZXMgPT0gb3RoZXIuYWRkcmVzc2VzKQorCisKKyMgSGVhZGVyIENsYXNzZXMgIworCitjbGFzcyBCYXNlSGVhZGVyKHN0cik6CisKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBtZXNzYWdlIGhlYWRlcnMuCisKKyAgICBJbXBsZW1lbnRzIGdlbmVyaWMgYmVoYXZpb3IgYW5kIHByb3ZpZGVzIHRvb2xzIGZvciBzdWJjbGFzc2VzLgorCisgICAgQSBzdWJjbGFzcyBtdXN0IGRlZmluZSBhIGNsYXNzbWV0aG9kIG5hbWVkICdwYXJzZScgdGhhdCB0YWtlcyBhbiB1bmZvbGRlZAorICAgIHZhbHVlIHN0cmluZyBhbmQgYSBkaWN0aW9uYXJ5IGFzIGl0cyBhcmd1bWVudHMuICBUaGUgZGljdGlvbmFyeSB3aWxsCisgICAgY29udGFpbiBvbmUga2V5LCAnZGVmZWN0cycsIGluaXRpYWxpemVkIHRvIGFuIGVtcHR5IGxpc3QuICBBZnRlciB0aGUgY2FsbAorICAgIHRoZSBkaWN0aW9uYXJ5IG11c3QgY29udGFpbiB0d28gYWRkaXRpb25hbCBrZXlzOiBwYXJzZV90cmVlLCBzZXQgdG8gdGhlCisgICAgcGFyc2UgdHJlZSBvYnRhaW5lZCBmcm9tIHBhcnNpbmcgdGhlIGhlYWRlciwgYW5kICdkZWNvZGVkJywgc2V0IHRvIHRoZQorICAgIHN0cmluZyB2YWx1ZSBvZiB0aGUgaWRlYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRhIGZyb20gdGhlIHZhbHVlLgorICAgIChUaGF0IGlzLCBlbmNvZGVkIHdvcmRzIGFyZSBkZWNvZGVkLCBhbmQgdmFsdWVzIHRoYXQgaGF2ZSBjYW5vbmljYWwKKyAgICByZXByZXNlbnRhdGlvbnMgYXJlIHNvIHJlcHJlc2VudGVkLikKKworICAgIFRoZSBkZWZlY3RzIGtleSBpcyBpbnRlbmRlZCB0byBjb2xsZWN0IHBhcnNpbmcgZGVmZWN0cywgd2hpY2ggdGhlIG1lc3NhZ2UKKyAgICBwYXJzZXIgd2lsbCBzdWJzZXF1ZW50bHkgZGlzcG9zZSBvZiBhcyBhcHByb3ByaWF0ZS4gIFRoZSBwYXJzZXIgc2hvdWxkIG5vdCwKKyAgICBpbnNvZmFyIGFzIHByYWN0aWNhbCwgcmFpc2UgYW55IGVycm9ycy4gIERlZmVjdHMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZQorICAgIGxpc3QgaW5zdGVhZC4gIFRoZSBzdGFuZGFyZCBoZWFkZXIgcGFyc2VycyByZWdpc3RlciBkZWZlY3RzIGZvciBSRkMKKyAgICBjb21wbGlhbmNlIGlzc3VlcywgZm9yIG9ic29sZXRlIFJGQyBzeW50YXgsIGFuZCBmb3IgdW5yZWNvdmVyYWJsZSBwYXJzaW5nCisgICAgZXJyb3JzLgorCisgICAgVGhlIHBhcnNlIG1ldGhvZCBtYXkgYWRkIGFkZGl0aW9uYWwga2V5cyB0byB0aGUgZGljdGlvbmFyeS4gIEluIHRoaXMgY2FzZQorICAgIHRoZSBzdWJjbGFzcyBtdXN0IGRlZmluZSBhbiAnaW5pdCcgbWV0aG9kLCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0aGUKKyAgICBkaWN0aW9uYXJ5IGFzIGl0cyBrZXl3b3JkIGFyZ3VtZW50cy4gIFRoZSBtZXRob2Qgc2hvdWxkIHVzZSAodXN1YWxseSBieQorICAgIHNldHRpbmcgdGhlbSBhcyB0aGUgdmFsdWUgb2Ygc2ltaWxhcmx5IG5hbWVkIGF0dHJpYnV0ZXMpIGFuZCByZW1vdmUgYWxsIHRoZQorICAgIGV4dHJhIGtleXMgYWRkZWQgYnkgaXRzIHBhcnNlIG1ldGhvZCwgYW5kIHRoZW4gdXNlIHN1cGVyIHRvIGNhbGwgaXRzIHBhcmVudAorICAgIGNsYXNzIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYW5kIGtleXdvcmRzLgorCisgICAgVGhlIHN1YmNsYXNzIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0aGF0IGEgJ21heF9jb3VudCcgYXR0cmlidXRlIGlzIGRlZmluZWQKKyAgICB0aGF0IGlzIGVpdGhlciBOb25lIG9yIDEuIFhYWDogbmVlZCB0byBiZXR0ZXIgZGVmaW5lIHRoaXMgQVBJLgorCisgICAgIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIHZhbHVlKToKKyAgICAgICAga3dkcyA9IHsnZGVmZWN0cyc6IFtdfQorICAgICAgICBjbHMucGFyc2UodmFsdWUsIGt3ZHMpCisgICAgICAgIGlmIHV0aWxzLl9oYXNfc3Vycm9nYXRlcyhrd2RzWydkZWNvZGVkJ10pOgorICAgICAgICAgICAga3dkc1snZGVjb2RlZCddID0gdXRpbHMuX3Nhbml0aXplKGt3ZHNbJ2RlY29kZWQnXSkKKyAgICAgICAgc2VsZiA9IHN0ci5fX25ld19fKGNscywga3dkc1snZGVjb2RlZCddKQorICAgICAgICBkZWwga3dkc1snZGVjb2RlZCddCisgICAgICAgIHNlbGYuaW5pdChuYW1lLCAqKmt3ZHMpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgaW5pdChzZWxmLCBuYW1lLCAqLCBwYXJzZV90cmVlLCBkZWZlY3RzKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5fcGFyc2VfdHJlZSA9IHBhcnNlX3RyZWUKKyAgICAgICAgc2VsZi5fZGVmZWN0cyA9IGRlZmVjdHMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRlZmVjdHMoc2VsZik6CisgICAgICAgIHJldHVybiB0dXBsZShzZWxmLl9kZWZlY3RzKQorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBfcmVjb25zdHJ1Y3RfaGVhZGVyLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fYmFzZXNfXywKKyAgICAgICAgICAgICAgICBzdHIoc2VsZiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgc2VsZi5fX2RpY3RfXykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVjb25zdHJ1Y3QoY2xzLCB2YWx1ZSk6CisgICAgICAgIHJldHVybiBzdHIuX19uZXdfXyhjbHMsIHZhbHVlKQorCisgICAgZGVmIGZvbGQoc2VsZiwgKiwgcG9saWN5KToKKyAgICAgICAgIiIiRm9sZCBoZWFkZXIgYWNjb3JkaW5nIHRvIHBvbGljeS4KKworICAgICAgICBUaGUgcGFyc2VkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBoZWFkZXIgaXMgZm9sZGVkIGFjY29yZGluZyB0bworICAgICAgICBSRkM1MzIyIHJ1bGVzLCBhcyBtb2RpZmllZCBieSB0aGUgcG9saWN5LiAgSWYgdGhlIHBhcnNlIHRyZWUKKyAgICAgICAgY29udGFpbnMgc3Vycm9nYXRlZXNjYXBlZCBieXRlcywgdGhlIGJ5dGVzIGFyZSBDVEUgZW5jb2RlZCB1c2luZworICAgICAgICB0aGUgY2hhcnNldCAndW5rbm93bi04Yml0Ii4KKworICAgICAgICBBbnkgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlIHBhcnNlIHRyZWUgYXJlIENURSBlbmNvZGVkIHVzaW5nCisgICAgICAgIGNoYXJzZXQgdXRmLTguIFhYWDogbWFrZSB0aGlzIGEgcG9saWN5IHNldHRpbmcuCisKKyAgICAgICAgVGhlIHJldHVybmVkIHZhbHVlIGlzIGFuIEFTQ0lJLW9ubHkgc3RyaW5nIHBvc3NpYmx5IGNvbnRhaW5pbmcgbGluZXNlcAorICAgICAgICBjaGFyYWN0ZXJzLCBhbmQgZW5kaW5nIHdpdGggYSBsaW5lc2VwIGNoYXJhY3Rlci4gIFRoZSBzdHJpbmcgaW5jbHVkZXMKKyAgICAgICAgdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgJzogJyBzZXBhcmF0b3IuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgQXQgc29tZSBwb2ludCB3ZSBuZWVkIHRvIG9ubHkgcHV0IGZ3cyBoZXJlIGlmIGl0IHdhcyBpbiB0aGUgc291cmNlLgorICAgICAgICBoZWFkZXIgPSBwYXJzZXIuSGVhZGVyKFsKKyAgICAgICAgICAgIHBhcnNlci5IZWFkZXJMYWJlbChbCisgICAgICAgICAgICAgICAgcGFyc2VyLlZhbHVlVGVybWluYWwoc2VsZi5uYW1lLCAnaGVhZGVyLW5hbWUnKSwKKyAgICAgICAgICAgICAgICBwYXJzZXIuVmFsdWVUZXJtaW5hbCgnOicsICdoZWFkZXItc2VwJyldKSwKKyAgICAgICAgICAgIHBhcnNlci5DRldTTGlzdChbcGFyc2VyLldoaXRlU3BhY2VUZXJtaW5hbCgnICcsICdmd3MnKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV90cmVlXSkKKyAgICAgICAgcmV0dXJuIGhlYWRlci5mb2xkKHBvbGljeT1wb2xpY3kpCisKKworZGVmIF9yZWNvbnN0cnVjdF9oZWFkZXIoY2xzX25hbWUsIGJhc2VzLCB2YWx1ZSk6CisgICAgcmV0dXJuIHR5cGUoY2xzX25hbWUsIGJhc2VzLCB7fSkuX3JlY29uc3RydWN0KHZhbHVlKQorCisKK2NsYXNzIFVuc3RydWN0dXJlZEhlYWRlcjoKKworICAgIG1heF9jb3VudCA9IE5vbmUKKyAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCisgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHN0cihrd2RzWydwYXJzZV90cmVlJ10pCisKKworY2xhc3MgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyKFVuc3RydWN0dXJlZEhlYWRlcik6CisKKyAgICBtYXhfY291bnQgPSAxCisKKworY2xhc3MgRGF0ZUhlYWRlcjoKKworICAgICIiIkhlYWRlciB3aG9zZSB2YWx1ZSBjb25zaXN0cyBvZiBhIHNpbmdsZSB0aW1lc3RhbXAuCisKKyAgICBQcm92aWRlcyBhbiBhZGRpdGlvbmFsIGF0dHJpYnV0ZSwgZGF0ZXRpbWUsIHdoaWNoIGlzIGVpdGhlciBhbiBhd2FyZQorICAgIGRhdGV0aW1lIHVzaW5nIGEgdGltZXpvbmUsIG9yIGEgbmFpdmUgZGF0ZXRpbWUgaWYgdGhlIHRpbWV6b25lCisgICAgaW4gdGhlIGlucHV0IHN0cmluZyBpcyAtMDAwMC4gIEFsc28gYWNjZXB0cyBhIGRhdGV0aW1lIGFzIGlucHV0LgorICAgIFRoZSAndmFsdWUnIGF0dHJpYnV0ZSBpcyB0aGUgbm9ybWFsaXplZCBmb3JtIG9mIHRoZSB0aW1lc3RhbXAsCisgICAgd2hpY2ggbWVhbnMgaXQgaXMgdGhlIG91dHB1dCBvZiBmb3JtYXRfZGF0ZXRpbWUgb24gdGhlIGRhdGV0aW1lLgorICAgICIiIgorCisgICAgbWF4X2NvdW50ID0gTm9uZQorCisgICAgIyBUaGlzIGlzIHVzZWQgb25seSBmb3IgZm9sZGluZywgbm90IGZvciBjcmVhdGluZyAnZGVjb2RlZCcuCisgICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICBrd2RzWydkZWZlY3RzJ10uYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgpKQorICAgICAgICAgICAga3dkc1snZGF0ZXRpbWUnXSA9IE5vbmUKKyAgICAgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9ICcnCisgICAgICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZXIuVG9rZW5MaXN0KCkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgdmFsdWUgPSB1dGlscy5wYXJzZWRhdGVfdG9fZGF0ZXRpbWUodmFsdWUpCisgICAgICAgIGt3ZHNbJ2RhdGV0aW1lJ10gPSB2YWx1ZQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSB1dGlscy5mb3JtYXRfZGF0ZXRpbWUoa3dkc1snZGF0ZXRpbWUnXSkKKyAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gY2xzLnZhbHVlX3BhcnNlcihrd2RzWydkZWNvZGVkJ10pCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHNlbGYuX2RhdGV0aW1lID0ga3cucG9wKCdkYXRldGltZScpCisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkYXRldGltZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGV0aW1lCisKKworY2xhc3MgVW5pcXVlRGF0ZUhlYWRlcihEYXRlSGVhZGVyKToKKworICAgIG1heF9jb3VudCA9IDEKKworCitjbGFzcyBBZGRyZXNzSGVhZGVyOgorCisgICAgbWF4X2NvdW50ID0gTm9uZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiB2YWx1ZV9wYXJzZXIodmFsdWUpOgorICAgICAgICBhZGRyZXNzX2xpc3QsIHZhbHVlID0gcGFyc2VyLmdldF9hZGRyZXNzX2xpc3QodmFsdWUpCisgICAgICAgIGFzc2VydCBub3QgdmFsdWUsICd0aGlzIHNob3VsZCBub3QgaGFwcGVuJworICAgICAgICByZXR1cm4gYWRkcmVzc19saXN0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAjIFdlIGFyZSB0cmFuc2xhdGluZyBoZXJlIGZyb20gdGhlIFJGQyBsYW5ndWFnZSAoYWRkcmVzcy9tYWlsYm94KQorICAgICAgICAgICAgIyB0byBvdXIgQVBJIGxhbmd1YWdlIChncm91cC9hZGRyZXNzKS4KKyAgICAgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IGFkZHJlc3NfbGlzdCA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCisgICAgICAgICAgICBncm91cHMgPSBbXQorICAgICAgICAgICAgZm9yIGFkZHIgaW4gYWRkcmVzc19saXN0LmFkZHJlc3NlczoKKyAgICAgICAgICAgICAgICBncm91cHMuYXBwZW5kKEdyb3VwKGFkZHIuZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FkZHJlc3MobWIuZGlzcGxheV9uYW1lIG9yICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWIubG9jYWxfcGFydCBvciAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iLmRvbWFpbiBvciAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbWIgaW4gYWRkci5hbGxfbWFpbGJveGVzXSkpCisgICAgICAgICAgICBkZWZlY3RzID0gbGlzdChhZGRyZXNzX2xpc3QuYWxsX2RlZmVjdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFzc3VtZSBpdCBpcyBBZGRyZXNzL0dyb3VwIHN0dWZmCisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cih2YWx1ZSwgJ19faXRlcl9fJyk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBbdmFsdWVdCisgICAgICAgICAgICBncm91cHMgPSBbR3JvdXAoTm9uZSwgW2l0ZW1dKSBpZiBub3QgaGFzYXR0cihpdGVtLCAnYWRkcmVzc2VzJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaXRlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gdmFsdWVdCisgICAgICAgICAgICBkZWZlY3RzID0gW10KKyAgICAgICAga3dkc1snZ3JvdXBzJ10gPSBncm91cHMKKyAgICAgICAga3dkc1snZGVmZWN0cyddID0gZGVmZWN0cworICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSAnLCAnLmpvaW4oW3N0cihpdGVtKSBmb3IgaXRlbSBpbiBncm91cHNdKQorICAgICAgICBpZiAncGFyc2VfdHJlZScgbm90IGluIGt3ZHM6CisgICAgICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBjbHMudmFsdWVfcGFyc2VyKGt3ZHNbJ2RlY29kZWQnXSkKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc2VsZi5fZ3JvdXBzID0gdHVwbGUoa3cucG9wKCdncm91cHMnKSkKKyAgICAgICAgc2VsZi5fYWRkcmVzc2VzID0gTm9uZQorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZ3JvdXBzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZ3JvdXBzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcmVzc2VzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9hZGRyZXNzZXMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2FkZHJlc3NlcyA9IHR1cGxlKFthZGRyZXNzIGZvciBncm91cCBpbiBzZWxmLl9ncm91cHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhZGRyZXNzIGluIGdyb3VwLmFkZHJlc3Nlc10pCisgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzZXMKKworCitjbGFzcyBVbmlxdWVBZGRyZXNzSGVhZGVyKEFkZHJlc3NIZWFkZXIpOgorCisgICAgbWF4X2NvdW50ID0gMQorCisKK2NsYXNzIFNpbmdsZUFkZHJlc3NIZWFkZXIoQWRkcmVzc0hlYWRlcik6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcmVzcyhzZWxmKToKKyAgICAgICAgaWYgbGVuKHNlbGYuYWRkcmVzc2VzKSE9MToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKCJ2YWx1ZSBvZiBzaW5nbGUgYWRkcmVzcyBoZWFkZXIge30gaXMgbm90ICIKKyAgICAgICAgICAgICAgICAiYSBzaW5nbGUgYWRkcmVzcyIpLmZvcm1hdChzZWxmLm5hbWUpKQorICAgICAgICByZXR1cm4gc2VsZi5hZGRyZXNzZXNbMF0KKworCitjbGFzcyBVbmlxdWVTaW5nbGVBZGRyZXNzSGVhZGVyKFNpbmdsZUFkZHJlc3NIZWFkZXIpOgorCisgICAgbWF4X2NvdW50ID0gMQorCisKK2NsYXNzIE1JTUVWZXJzaW9uSGVhZGVyOgorCisgICAgbWF4X2NvdW50ID0gMQorCisgICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5wYXJzZV9taW1lX3ZlcnNpb24pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IHBhcnNlX3RyZWUgPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSBzdHIocGFyc2VfdHJlZSkKKyAgICAgICAga3dkc1snZGVmZWN0cyddLmV4dGVuZChwYXJzZV90cmVlLmFsbF9kZWZlY3RzKQorICAgICAgICBrd2RzWydtYWpvciddID0gTm9uZSBpZiBwYXJzZV90cmVlLm1pbm9yIGlzIE5vbmUgZWxzZSBwYXJzZV90cmVlLm1ham9yCisgICAgICAgIGt3ZHNbJ21pbm9yJ10gPSBwYXJzZV90cmVlLm1pbm9yCisgICAgICAgIGlmIHBhcnNlX3RyZWUubWlub3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBrd2RzWyd2ZXJzaW9uJ10gPSAne30ue30nLmZvcm1hdChrd2RzWydtYWpvciddLCBrd2RzWydtaW5vciddKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAga3dkc1sndmVyc2lvbiddID0gTm9uZQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzZWxmLl92ZXJzaW9uID0ga3cucG9wKCd2ZXJzaW9uJykKKyAgICAgICAgc2VsZi5fbWFqb3IgPSBrdy5wb3AoJ21ham9yJykKKyAgICAgICAgc2VsZi5fbWlub3IgPSBrdy5wb3AoJ21pbm9yJykKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1ham9yKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbWFqb3IKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtaW5vcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21pbm9yCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KKworCitjbGFzcyBQYXJhbWV0ZXJpemVkTUlNRUhlYWRlcjoKKworICAgICMgTWl4aW4gdGhhdCBoYW5kbGVzIHRoZSBwYXJhbXMgZGljdC4gIE11c3QgYmUgc3ViY2xhc3NlZCBhbmQKKyAgICAjIGEgcHJvcGVydHkgdmFsdWVfcGFyc2VyIGZvciB0aGUgc3BlY2lmaWMgaGVhZGVyIHByb3ZpZGVkLgorCisgICAgbWF4X2NvdW50ID0gMQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZV90cmVlID0gY2xzLnZhbHVlX3BhcnNlcih2YWx1ZSkKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gc3RyKHBhcnNlX3RyZWUpCisgICAgICAgIGt3ZHNbJ2RlZmVjdHMnXS5leHRlbmQocGFyc2VfdHJlZS5hbGxfZGVmZWN0cykKKyAgICAgICAgaWYgcGFyc2VfdHJlZS5wYXJhbXMgaXMgTm9uZToKKyAgICAgICAgICAgIGt3ZHNbJ3BhcmFtcyddID0ge30KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgVGhlIE1JTUUgUkZDcyBzcGVjaWZ5IHRoYXQgcGFyYW1ldGVyIG9yZGVyaW5nIGlzIGFyYml0cmFyeS4KKyAgICAgICAgICAgIGt3ZHNbJ3BhcmFtcyddID0ge3V0aWxzLl9zYW5pdGl6ZShuYW1lKS5sb3dlcigpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbHMuX3Nhbml0aXplKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBwYXJzZV90cmVlLnBhcmFtc30KKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc2VsZi5fcGFyYW1zID0ga3cucG9wKCdwYXJhbXMnKQorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcGFyYW1zLmNvcHkoKQorCisKK2NsYXNzIENvbnRlbnRUeXBlSGVhZGVyKFBhcmFtZXRlcml6ZWRNSU1FSGVhZGVyKToKKworICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfY29udGVudF90eXBlX2hlYWRlcikKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLl9tYWludHlwZSA9IHV0aWxzLl9zYW5pdGl6ZShzZWxmLl9wYXJzZV90cmVlLm1haW50eXBlKQorICAgICAgICBzZWxmLl9zdWJ0eXBlID0gdXRpbHMuX3Nhbml0aXplKHNlbGYuX3BhcnNlX3RyZWUuc3VidHlwZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWludHlwZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21haW50eXBlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3VidHlwZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N1YnR5cGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZW50X3R5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm1haW50eXBlICsgJy8nICsgc2VsZi5zdWJ0eXBlCisKKworY2xhc3MgQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyKFBhcmFtZXRlcml6ZWRNSU1FSGVhZGVyKToKKworICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfY29udGVudF9kaXNwb3NpdGlvbl9oZWFkZXIpCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKyAgICAgICAgY2QgPSBzZWxmLl9wYXJzZV90cmVlLmNvbnRlbnRfZGlzcG9zaXRpb24KKyAgICAgICAgc2VsZi5fY29udGVudF9kaXNwb3NpdGlvbiA9IGNkIGlmIGNkIGlzIE5vbmUgZWxzZSB1dGlscy5fc2FuaXRpemUoY2QpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udGVudF9kaXNwb3NpdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRlbnRfZGlzcG9zaXRpb24KKworCitjbGFzcyBDb250ZW50VHJhbnNmZXJFbmNvZGluZ0hlYWRlcjoKKworICAgIG1heF9jb3VudCA9IDEKKworICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfY29udGVudF90cmFuc2Zlcl9lbmNvZGluZ19oZWFkZXIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IHBhcnNlX3RyZWUgPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSBzdHIocGFyc2VfdHJlZSkKKyAgICAgICAga3dkc1snZGVmZWN0cyddLmV4dGVuZChwYXJzZV90cmVlLmFsbF9kZWZlY3RzKQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuX2N0ZSA9IHV0aWxzLl9zYW5pdGl6ZShzZWxmLl9wYXJzZV90cmVlLmN0ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjdGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jdGUKKworCisjIFRoZSBoZWFkZXIgZmFjdG9yeSAjCisKK19kZWZhdWx0X2hlYWRlcl9tYXAgPSB7CisgICAgJ3N1YmplY3QnOiAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXIsCisgICAgJ2RhdGUnOiAgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVEYXRlSGVhZGVyLAorICAgICdyZXNlbnQtZGF0ZSc6ICAgICAgICAgICAgICAgICAgRGF0ZUhlYWRlciwKKyAgICAnb3JpZy1kYXRlJzogICAgICAgICAgICAgICAgICAgIFVuaXF1ZURhdGVIZWFkZXIsCisgICAgJ3NlbmRlcic6ICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVTaW5nbGVBZGRyZXNzSGVhZGVyLAorICAgICdyZXNlbnQtc2VuZGVyJzogICAgICAgICAgICAgICAgU2luZ2xlQWRkcmVzc0hlYWRlciwKKyAgICAndG8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIsCisgICAgJ3Jlc2VudC10byc6ICAgICAgICAgICAgICAgICAgICBBZGRyZXNzSGVhZGVyLAorICAgICdjYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKKyAgICAncmVzZW50LWNjJzogICAgICAgICAgICAgICAgICAgIEFkZHJlc3NIZWFkZXIsCisgICAgJ2JjYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyLAorICAgICdyZXNlbnQtYmNjJzogICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKKyAgICAnZnJvbSc6ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIsCisgICAgJ3Jlc2VudC1mcm9tJzogICAgICAgICAgICAgICAgICBBZGRyZXNzSGVhZGVyLAorICAgICdyZXBseS10byc6ICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKKyAgICAnbWltZS12ZXJzaW9uJzogICAgICAgICAgICAgICAgIE1JTUVWZXJzaW9uSGVhZGVyLAorICAgICdjb250ZW50LXR5cGUnOiAgICAgICAgICAgICAgICAgQ29udGVudFR5cGVIZWFkZXIsCisgICAgJ2NvbnRlbnQtZGlzcG9zaXRpb24nOiAgICAgICAgICBDb250ZW50RGlzcG9zaXRpb25IZWFkZXIsCisgICAgJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnOiAgICBDb250ZW50VHJhbnNmZXJFbmNvZGluZ0hlYWRlciwKKyAgICB9CisKK2NsYXNzIEhlYWRlclJlZ2lzdHJ5OgorCisgICAgIiIiQSBoZWFkZXJfZmFjdG9yeSBhbmQgaGVhZGVyIHJlZ2lzdHJ5LiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhc2VfY2xhc3M9QmFzZUhlYWRlciwgZGVmYXVsdF9jbGFzcz1VbnN0cnVjdHVyZWRIZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHVzZV9kZWZhdWx0X21hcD1UcnVlKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgaGVhZGVyX2ZhY3RvcnkgdGhhdCB3b3JrcyB3aXRoIHRoZSBQb2xpY3kgQVBJLgorCisgICAgICAgIGJhc2VfY2xhc3MgaXMgdGhlIGNsYXNzIHRoYXQgd2lsbCBiZSB0aGUgbGFzdCBjbGFzcyBpbiB0aGUgY3JlYXRlZAorICAgICAgICBoZWFkZXIgY2xhc3MncyBfX2Jhc2VzX18gbGlzdC4gIGRlZmF1bHRfY2xhc3MgaXMgdGhlIGNsYXNzIHRoYXQgd2lsbCBiZQorICAgICAgICB1c2VkIGlmICJuYW1lIiAoc2VlIF9fY2FsbF9fKSBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIHJlZ2lzdHJ5LgorICAgICAgICB1c2VfZGVmYXVsdF9tYXAgY29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIGRlZmF1bHQgbWFwcGluZyBvZiBuYW1lcyB0bworICAgICAgICBzcGVjaWFsaXplZCBjbGFzc2VzIGlzIGNvcGllZCBpbiB0byB0aGUgcmVnaXN0cnkgd2hlbiB0aGUgZmFjdG9yeSBpcworICAgICAgICBjcmVhdGVkLiAgVGhlIGRlZmF1bHQgaXMgVHJ1ZS4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5yZWdpc3RyeSA9IHt9CisgICAgICAgIHNlbGYuYmFzZV9jbGFzcyA9IGJhc2VfY2xhc3MKKyAgICAgICAgc2VsZi5kZWZhdWx0X2NsYXNzID0gZGVmYXVsdF9jbGFzcworICAgICAgICBpZiB1c2VfZGVmYXVsdF9tYXA6CisgICAgICAgICAgICBzZWxmLnJlZ2lzdHJ5LnVwZGF0ZShfZGVmYXVsdF9oZWFkZXJfbWFwKQorCisgICAgZGVmIG1hcF90b190eXBlKHNlbGYsIG5hbWUsIGNscyk6CisgICAgICAgICIiIlJlZ2lzdGVyIGNscyBhcyB0aGUgc3BlY2lhbGl6ZWQgY2xhc3MgZm9yIGhhbmRsaW5nICJuYW1lIiBoZWFkZXJzLgorCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnJlZ2lzdHJ5W25hbWUubG93ZXIoKV0gPSBjbHMKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKKyAgICAgICAgY2xzID0gc2VsZi5yZWdpc3RyeS5nZXQobmFtZS5sb3dlcigpLCBzZWxmLmRlZmF1bHRfY2xhc3MpCisgICAgICAgIHJldHVybiB0eXBlKCdfJytjbHMuX19uYW1lX18sIChjbHMsIHNlbGYuYmFzZV9jbGFzcyksIHt9KQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgaGVhZGVyIGluc3RhbmNlIGZvciBoZWFkZXIgJ25hbWUnIGZyb20gJ3ZhbHVlJy4KKworICAgICAgICBDcmVhdGVzIGEgaGVhZGVyIGluc3RhbmNlIGJ5IGNyZWF0aW5nIGEgc3BlY2lhbGl6ZWQgY2xhc3MgZm9yIHBhcnNpbmcKKyAgICAgICAgYW5kIHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWVkIGhlYWRlciBieSBjb21iaW5pbmcgdGhlIGZhY3RvcnkKKyAgICAgICAgYmFzZV9jbGFzcyB3aXRoIGEgc3BlY2lhbGl6ZWQgY2xhc3MgZnJvbSB0aGUgcmVnaXN0cnkgb3IgdGhlCisgICAgICAgIGRlZmF1bHRfY2xhc3MsIGFuZCBwYXNzaW5nIHRoZSBuYW1lIGFuZCB2YWx1ZSB0byB0aGUgY29uc3RydWN0ZWQKKyAgICAgICAgY2xhc3MncyBjb25zdHJ1Y3Rvci4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGZbbmFtZV0obmFtZSwgdmFsdWUpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CmluZGV4IGYxZmZjZGIuLjNmZWFiNTIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CkBAIC0xMCwxNCArMTAsMTQgQEAKIGltcG9ydCB1dQogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGJpbmFzY2lpCi1pbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiAKICMgSW50cmFwYWNrYWdlIGltcG9ydHMKIGZyb20gZW1haWwgaW1wb3J0IHV0aWxzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKLWZyb20gZW1haWwgaW1wb3J0IGhlYWRlcgorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKIGZyb20gZW1haWwgaW1wb3J0IGNoYXJzZXQgYXMgX2NoYXJzZXQKK2Zyb20gZW1haWwuX2VuY29kZWRfd29yZHMgaW1wb3J0IGRlY29kZV9iCiBDaGFyc2V0ID0gX2NoYXJzZXQuQ2hhcnNldAogCiBTRU1JU1BBQ0UgPSAnOyAnCkBAIC0yNiwyNCArMjYsNiBAQAogIyBleGlzdGVuY2Ugb2Ygd2hpY2ggZm9yY2UgcXVvdGluZyBvZiB0aGUgcGFyYW1ldGVyIHZhbHVlLgogdHNwZWNpYWxzID0gcmUuY29tcGlsZShyJ1sgXChcKTw+QCw7OlxcIi9cW1xdXD89XScpCiAKLSMgSG93IHRvIGZpZ3VyZSBvdXQgaWYgd2UgYXJlIHByb2Nlc3Npbmcgc3RyaW5ncyB0aGF0IGNvbWUgZnJvbSBhIGJ5dGUKLSMgc291cmNlIHdpdGggdW5kZWNvZGFibGUgY2hhcmFjdGVycy4KLV9oYXNfc3Vycm9nYXRlcyA9IHJlLmNvbXBpbGUoCi0gICAgJyhbXlx1ZDgwMC1cdWRiZmZdfFxBKVtcdWRjMDAtXHVkZmZmXShbXlx1ZGMwMC1cdWRmZmZdfFxaKScpLnNlYXJjaAotCi0KLSMgSGVscGVyIGZ1bmN0aW9ucwotZGVmIF9zYW5pdGl6ZV9oZWFkZXIobmFtZSwgdmFsdWUpOgotICAgICMgSWYgdGhlIGhlYWRlciB2YWx1ZSBjb250YWlucyBzdXJyb2dhdGVzLCByZXR1cm4gYSBIZWFkZXIgdXNpbmcKLSAgICAjIHRoZSB1bmtub3duLThiaXQgY2hhcnNldCB0byBlbmNvZGUgdGhlIGJ5dGVzIGFzIGVuY29kZWQgd29yZHMuCi0gICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6Ci0gICAgICAgICMgQXNzdW1lIGl0IGlzIGFscmVhZHkgYSBoZWFkZXIgb2JqZWN0Ci0gICAgICAgIHJldHVybiB2YWx1ZQotICAgIGlmIF9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6Ci0gICAgICAgIHJldHVybiBoZWFkZXIuSGVhZGVyKHZhbHVlLCBjaGFyc2V0PV9jaGFyc2V0LlVOS05PV044QklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1uYW1lKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiB2YWx1ZQogCiBkZWYgX3NwbGl0cGFyYW0ocGFyYW0pOgogICAgICMgU3BsaXQgaGVhZGVyIHBhcmFtZXRlcnMuICBCQVc6IHRoaXMgbWF5IGJlIHRvbyBzaW1wbGUuICBJdCBpc24ndApAQCAtMTM2LDcgKzExOCw4IEBACiAgICAgeW91IG11c3QgdXNlIHRoZSBleHBsaWNpdCBBUEkgdG8gc2V0IG9yIGdldCBhbGwgdGhlIGhlYWRlcnMuICBOb3QgYWxsIG9mCiAgICAgdGhlIG1hcHBpbmcgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb2xpY3k9Y29tcGF0MzIpOgorICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQogICAgICAgICBzZWxmLl9oZWFkZXJzID0gW10KICAgICAgICAgc2VsZi5fdW5peGZyb20gPSBOb25lCiAgICAgICAgIHNlbGYuX3BheWxvYWQgPSBOb25lCkBAIC0yNDYsNyArMjI5LDcgQEAKICAgICAgICAgY3RlID0gc3RyKHNlbGYuZ2V0KCdjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJywgJycpKS5sb3dlcigpCiAgICAgICAgICMgcGF5bG9hZCBtYXkgYmUgYnl0ZXMgaGVyZS4KICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBzdHIpOgotICAgICAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKHBheWxvYWQpOgorICAgICAgICAgICAgaWYgdXRpbHMuX2hhc19zdXJyb2dhdGVzKHBheWxvYWQpOgogICAgICAgICAgICAgICAgIGJwYXlsb2FkID0gcGF5bG9hZC5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgICAgICAgaWYgbm90IGRlY29kZToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtMjY3LDExICsyNTAsMTIgQEAKICAgICAgICAgaWYgY3RlID09ICdxdW90ZWQtcHJpbnRhYmxlJzoKICAgICAgICAgICAgIHJldHVybiB1dGlscy5fcWRlY29kZShicGF5bG9hZCkKICAgICAgICAgZWxpZiBjdGUgPT0gJ2Jhc2U2NCc6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRkZWNvZGUoYnBheWxvYWQpCi0gICAgICAgICAgICBleGNlcHQgYmluYXNjaWkuRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBJbmNvcnJlY3QgcGFkZGluZwotICAgICAgICAgICAgICAgIHJldHVybiBicGF5bG9hZAorICAgICAgICAgICAgIyBYWFg6IHRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrOyBkZWNvZGVfYiBzaG91bGQgcHJvYmFibHkgYmUgZmFjdG9yZWQKKyAgICAgICAgICAgICMgb3V0IHNvbWV3aGVyZSwgYnV0IEkgaGF2ZW4ndCBmaWd1cmVkIG91dCB3aGVyZSB5ZXQuCisgICAgICAgICAgICB2YWx1ZSwgZGVmZWN0cyA9IGRlY29kZV9iKGInJy5qb2luKGJwYXlsb2FkLnNwbGl0bGluZXMoKSkpCisgICAgICAgICAgICBmb3IgZGVmZWN0IGluIGRlZmVjdHM6CisgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLCBkZWZlY3QpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICAgZWxpZiBjdGUgaW4gKCd4LXV1ZW5jb2RlJywgJ3V1ZW5jb2RlJywgJ3V1ZScsICd4LXV1ZScpOgogICAgICAgICAgICAgaW5fZmlsZSA9IEJ5dGVzSU8oYnBheWxvYWQpCiAgICAgICAgICAgICBvdXRfZmlsZSA9IEJ5dGVzSU8oKQpAQCAtMzYyLDcgKzM0NiwxNyBAQAogICAgICAgICBOb3RlOiB0aGlzIGRvZXMgbm90IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBoZWFkZXIgd2l0aCB0aGUgc2FtZSBmaWVsZAogICAgICAgICBuYW1lLiAgVXNlIF9fZGVsaXRlbV9fKCkgZmlyc3QgdG8gZGVsZXRlIGFueSBleGlzdGluZyBoZWFkZXJzLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoKG5hbWUsIHZhbCkpCisgICAgICAgIG1heF9jb3VudCA9IHNlbGYucG9saWN5LmhlYWRlcl9tYXhfY291bnQobmFtZSkKKyAgICAgICAgaWYgbWF4X2NvdW50OgorICAgICAgICAgICAgbG5hbWUgPSBuYW1lLmxvd2VyKCkKKyAgICAgICAgICAgIGZvdW5kID0gMAorICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyczoKKyAgICAgICAgICAgICAgICBpZiBrLmxvd2VyKCkgPT0gbG5hbWU6CisgICAgICAgICAgICAgICAgICAgIGZvdW5kICs9IDEKKyAgICAgICAgICAgICAgICAgICAgaWYgZm91bmQgPj0gbWF4X2NvdW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlcmUgbWF5IGJlIGF0IG1vc3Qge30ge30gaGVhZGVycyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBhIG1lc3NhZ2UiLmZvcm1hdChtYXhfY291bnQsIG5hbWUpKQorICAgICAgICBzZWxmLl9oZWFkZXJzLmFwcGVuZChzZWxmLnBvbGljeS5oZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsKSkKIAogICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBuYW1lKToKICAgICAgICAgIiIiRGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiBhIGhlYWRlciwgaWYgcHJlc2VudC4KQEAgLTQwMSw3ICszOTUsOCBAQAogICAgICAgICBBbnkgZmllbGRzIGRlbGV0ZWQgYW5kIHJlLWluc2VydGVkIGFyZSBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGhlYWRlcgogICAgICAgICBsaXN0LgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIFtfc2FuaXRpemVfaGVhZGVyKGssIHYpIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCisgICAgICAgIHJldHVybiBbc2VsZi5wb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlKGssIHYpCisgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KIAogICAgIGRlZiBpdGVtcyhzZWxmKToKICAgICAgICAgIiIiR2V0IGFsbCB0aGUgbWVzc2FnZSdzIGhlYWRlciBmaWVsZHMgYW5kIHZhbHVlcy4KQEAgLTQxMSw3ICs0MDYsOCBAQAogICAgICAgICBBbnkgZmllbGRzIGRlbGV0ZWQgYW5kIHJlLWluc2VydGVkIGFyZSBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGhlYWRlcgogICAgICAgICBsaXN0LgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIFsoaywgX3Nhbml0aXplX2hlYWRlcihrLCB2KSkgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KKyAgICAgICAgcmV0dXJuIFsoaywgc2VsZi5wb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlKGssIHYpKQorICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCiAKICAgICBkZWYgZ2V0KHNlbGYsIG5hbWUsIGZhaWxvYmo9Tm9uZSk6CiAgICAgICAgICIiIkdldCBhIGhlYWRlciB2YWx1ZS4KQEAgLTQyMiwxMCArNDE4LDI5IEBACiAgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyczoKICAgICAgICAgICAgIGlmIGsubG93ZXIoKSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBfc2FuaXRpemVfaGVhZGVyKGssIHYpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZShrLCB2KQogICAgICAgICByZXR1cm4gZmFpbG9iagogCiAgICAgIworICAgICMgIkludGVybmFsIiBtZXRob2RzIChwdWJsaWMgQVBJLCBidXQgb25seSBpbnRlbmRlZCBmb3IgdXNlIGJ5IGEgcGFyc2VyCisgICAgIyBvciBnZW5lcmF0b3IsIG5vdCBub3JtYWwgYXBwbGljYXRpb24gY29kZS4KKyAgICAjCisKKyAgICBkZWYgc2V0X3JhdyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIlN0b3JlIG5hbWUgYW5kIHZhbHVlIGluIHRoZSBtb2RlbCB3aXRob3V0IG1vZGlmaWNhdGlvbi4KKworICAgICAgICBUaGlzIGlzIGFuICJpbnRlcm5hbCIgQVBJLCBpbnRlbmRlZCBvbmx5IGZvciB1c2UgYnkgYSBwYXJzZXIuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9oZWFkZXJzLmFwcGVuZCgobmFtZSwgdmFsdWUpKQorCisgICAgZGVmIHJhd19pdGVtcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSAobmFtZSwgdmFsdWUpIGhlYWRlciBwYWlycyB3aXRob3V0IG1vZGlmaWNhdGlvbi4KKworICAgICAgICBUaGlzIGlzIGFuICJpbnRlcm5hbCIgQVBJLCBpbnRlbmRlZCBvbmx5IGZvciB1c2UgYnkgYSBnZW5lcmF0b3IuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9oZWFkZXJzLmNvcHkoKSkKKworICAgICMKICAgICAjIEFkZGl0aW9uYWwgdXNlZnVsIHN0dWZmCiAgICAgIwogCkBAIC00NDIsNyArNDU3LDcgQEAKICAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKQogICAgICAgICBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzOgogICAgICAgICAgICAgaWYgay5sb3dlcigpID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChfc2FuaXRpemVfaGVhZGVyKGssIHYpKQorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoc2VsZi5wb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlKGssIHYpKQogICAgICAgICBpZiBub3QgdmFsdWVzOgogICAgICAgICAgICAgcmV0dXJuIGZhaWxvYmoKICAgICAgICAgcmV0dXJuIHZhbHVlcwpAQCAtNDc1LDcgKzQ5MCw3IEBACiAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKF9mb3JtYXRwYXJhbShrLnJlcGxhY2UoJ18nLCAnLScpLCB2KSkKICAgICAgICAgaWYgX3ZhbHVlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcGFydHMuaW5zZXJ0KDAsIF92YWx1ZSkKLSAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoKF9uYW1lLCBTRU1JU1BBQ0Uuam9pbihwYXJ0cykpKQorICAgICAgICBzZWxmW19uYW1lXSA9IFNFTUlTUEFDRS5qb2luKHBhcnRzKQogCiAgICAgZGVmIHJlcGxhY2VfaGVhZGVyKHNlbGYsIF9uYW1lLCBfdmFsdWUpOgogICAgICAgICAiIiJSZXBsYWNlIGEgaGVhZGVyLgpAQCAtNDg3LDcgKzUwMiw3IEBACiAgICAgICAgIF9uYW1lID0gX25hbWUubG93ZXIoKQogICAgICAgICBmb3IgaSwgKGssIHYpIGluIHppcChyYW5nZShsZW4oc2VsZi5faGVhZGVycykpLCBzZWxmLl9oZWFkZXJzKToKICAgICAgICAgICAgIGlmIGsubG93ZXIoKSA9PSBfbmFtZToKLSAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzW2ldID0gKGssIF92YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzW2ldID0gc2VsZi5wb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlKGssIF92YWx1ZSkKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoX25hbWUpCkBAIC04MDMsNyArODE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChrKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKCclcz0lcycgJSAoaywgdikpCi0gICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoKGgsIFNFTUlTUEFDRS5qb2luKHBhcnRzKSkpCisgICAgICAgICAgICAgICAgdmFsID0gU0VNSVNQQUNFLmpvaW4ocGFydHMpCisgICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoc2VsZi5wb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlKGgsIHZhbCkpCiAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoKGgsIHYpKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvdGV4dC5weSBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKaW5kZXggNTc0N2RiNS4uODBmZjk1MCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvdGV4dC5weQorKysgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CkBAIC0xNCw3ICsxNCw3IEBACiBjbGFzcyBNSU1FVGV4dChNSU1FTm9uTXVsdGlwYXJ0KToKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyB0ZXh0LyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9J3VzLWFzY2lpJyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgdGV4dC8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfdGV4dCBpcyB0aGUgc3RyaW5nIGZvciB0aGlzIG1lc3NhZ2Ugb2JqZWN0LgpAQCAtMjUsNiArMjUsMTggQEAKICAgICAgICAgaGVhZGVyLiAgVGhpcyBkZWZhdWx0cyB0byAidXMtYXNjaWkiLiAgTm90ZSB0aGF0IGFzIGEgc2lkZS1lZmZlY3QsIHRoZQogICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIGhlYWRlciB3aWxsIGFsc28gYmUgc2V0LgogICAgICAgICAiIiIKKworICAgICAgICAjIElmIG5vIF9jaGFyc2V0IHdhcyBzcGVjaWZpZWQsIGNoZWNrIHRvIHNlZSBzZWUgaWYgdGhlcmUgYXJlIG5vbi1hc2NpaQorICAgICAgICAjIGNoYXJhY3RlcnMgcHJlc2VudC4gSWYgbm90LCB1c2UgJ3VzLWFzY2lpJywgb3RoZXJ3aXNlIHVzZSB1dGYtOC4KKyAgICAgICAgIyBYWFg6IFRoaXMgY2FuIGJlIHJlbW92ZWQgb25jZSAjNzMwNCBpcyBmaXhlZC4KKyAgICAgICAgaWYgX2NoYXJzZXQgaXMgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfdGV4dC5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgICAgICBfY2hhcnNldCA9ICd1cy1hc2NpaScKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgX2NoYXJzZXQgPSAndXRmLTgnCisKICAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAndGV4dCcsIF9zdWJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqeydjaGFyc2V0JzogX2NoYXJzZXR9KQorCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX3RleHQsIF9jaGFyc2V0KQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3BhcnNlci5weSBiL0xpYi9lbWFpbC9wYXJzZXIucHkKaW5kZXggMWM5MzFlYS4uMWFhYjAxMiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3BhcnNlci5weQorKysgYi9MaWIvZW1haWwvcGFyc2VyLnB5CkBAIC00LDE4ICs0LDE5IEBACiAKICIiIkEgcGFyc2VyIG9mIFJGQyAyODIyIGFuZCBNSU1FIGVtYWlsIG1lc3NhZ2VzLiIiIgogCi1fX2FsbF9fID0gWydQYXJzZXInLCAnSGVhZGVyUGFyc2VyJywgJ0J5dGVzUGFyc2VyJ10KK19fYWxsX18gPSBbJ1BhcnNlcicsICdIZWFkZXJQYXJzZXInLCAnQnl0ZXNQYXJzZXInLCAnQnl0ZXNIZWFkZXJQYXJzZXInXQogCiBpbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBUZXh0SU9XcmFwcGVyCiAKIGZyb20gZW1haWwuZmVlZHBhcnNlciBpbXBvcnQgRmVlZFBhcnNlcgogZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgogCiAKIAwKIGNsYXNzIFBhcnNlcjoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX2NsYXNzPU1lc3NhZ2UsICosIHBvbGljeT1jb21wYXQzMik6CiAgICAgICAgICIiIlBhcnNlciBvZiBSRkMgMjgyMiBhbmQgTUlNRSBlbWFpbCBtZXNzYWdlcy4KIAogICAgICAgICBDcmVhdGVzIGFuIGluLW1lbW9yeSBvYmplY3QgdHJlZSByZXByZXNlbnRpbmcgdGhlIGVtYWlsIG1lc3NhZ2UsIHdoaWNoCkBAIC0zMCwyOCArMzEsMTQgQEAKICAgICAgICAgX2NsYXNzIGlzIHRoZSBjbGFzcyB0byBpbnN0YW50aWF0ZSBmb3IgbmV3IG1lc3NhZ2Ugb2JqZWN0cyB3aGVuIHRoZXkKICAgICAgICAgbXVzdCBiZSBjcmVhdGVkLiAgVGhpcyBjbGFzcyBtdXN0IGhhdmUgYSBjb25zdHJ1Y3RvciB0aGF0IGNhbiB0YWtlCiAgICAgICAgIHplcm8gYXJndW1lbnRzLiAgRGVmYXVsdCBpcyBNZXNzYWdlLk1lc3NhZ2UuCisKKyAgICAgICAgVGhlIHBvbGljeSBrZXl3b3JkIHNwZWNpZmllcyBhIHBvbGljeSBvYmplY3QgdGhhdCBjb250cm9scyBhIG51bWJlciBvZgorICAgICAgICBhc3BlY3RzIG9mIHRoZSBwYXJzZXIncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdCBwb2xpY3kgbWFpbnRhaW5zCisgICAgICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisKICAgICAgICAgIiIiCi0gICAgICAgIGlmIGxlbihhcmdzKSA+PSAxOgotICAgICAgICAgICAgaWYgJ19jbGFzcycgaW4ga3dzOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiTXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZyAnX2NsYXNzJyIpCi0gICAgICAgICAgICBrd3NbJ19jbGFzcyddID0gYXJnc1swXQotICAgICAgICBpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIGlmICdzdHJpY3QnIGluIGt3czoKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIk11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmcgJ3N0cmljdCciKQotICAgICAgICAgICAga3dzWydzdHJpY3QnXSA9IGFyZ3NbMV0KLSAgICAgICAgaWYgbGVuKGFyZ3MpID4gMjoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignVG9vIG1hbnkgYXJndW1lbnRzJykKLSAgICAgICAgaWYgJ19jbGFzcycgaW4ga3dzOgotICAgICAgICAgICAgc2VsZi5fY2xhc3MgPSBrd3NbJ19jbGFzcyddCi0gICAgICAgICAgICBkZWwga3dzWydfY2xhc3MnXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fY2xhc3MgPSBNZXNzYWdlCi0gICAgICAgIGlmICdzdHJpY3QnIGluIGt3czoKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIidzdHJpY3QnIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQgKGFuZCBpZ25vcmVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgICAgIGRlbCBrd3NbJ3N0cmljdCddCi0gICAgICAgIGlmIGt3czoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignVW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50cycpCisgICAgICAgIHNlbGYuX2NsYXNzID0gX2NsYXNzCisgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CiAKICAgICBkZWYgcGFyc2Uoc2VsZiwgZnAsIGhlYWRlcnNvbmx5PUZhbHNlKToKICAgICAgICAgIiIiQ3JlYXRlIGEgbWVzc2FnZSBzdHJ1Y3R1cmUgZnJvbSB0aGUgZGF0YSBpbiBhIGZpbGUuCkBAIC02MSw3ICs0OCw3IEBACiAgICAgICAgIHBhcnNpbmcgYWZ0ZXIgcmVhZGluZyB0aGUgaGVhZGVycyBvciBub3QuICBUaGUgZGVmYXVsdCBpcyBGYWxzZSwKICAgICAgICAgbWVhbmluZyBpdCBwYXJzZXMgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZmlsZS4KICAgICAgICAgIiIiCi0gICAgICAgIGZlZWRwYXJzZXIgPSBGZWVkUGFyc2VyKHNlbGYuX2NsYXNzKQorICAgICAgICBmZWVkcGFyc2VyID0gRmVlZFBhcnNlcihzZWxmLl9jbGFzcywgcG9saWN5PXNlbGYucG9saWN5KQogICAgICAgICBpZiBoZWFkZXJzb25seToKICAgICAgICAgICAgIGZlZWRwYXJzZXIuX3NldF9oZWFkZXJzb25seSgpCiAgICAgICAgIHdoaWxlIFRydWU6CkBAIC0xMzQsMyArMTIxLDExIEBACiAgICAgICAgICIiIgogICAgICAgICB0ZXh0ID0gdGV4dC5kZWNvZGUoJ0FTQ0lJJywgZXJyb3JzPSdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICByZXR1cm4gc2VsZi5wYXJzZXIucGFyc2VzdHIodGV4dCwgaGVhZGVyc29ubHkpCisKKworY2xhc3MgQnl0ZXNIZWFkZXJQYXJzZXIoQnl0ZXNQYXJzZXIpOgorICAgIGRlZiBwYXJzZShzZWxmLCBmcCwgaGVhZGVyc29ubHk9VHJ1ZSk6CisgICAgICAgIHJldHVybiBCeXRlc1BhcnNlci5wYXJzZShzZWxmLCBmcCwgaGVhZGVyc29ubHk9VHJ1ZSkKKworICAgIGRlZiBwYXJzZWJ5dGVzKHNlbGYsIHRleHQsIGhlYWRlcnNvbmx5PVRydWUpOgorICAgICAgICByZXR1cm4gQnl0ZXNQYXJzZXIucGFyc2VieXRlcyhzZWxmLCB0ZXh0LCBoZWFkZXJzb25seT1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3BvbGljeS5weSBiL0xpYi9lbWFpbC9wb2xpY3kucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJjYWQwZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9wb2xpY3kucHkKQEAgLTAsMCArMSwxODggQEAKKyIiIlRoaXMgd2lsbCBiZSB0aGUgaG9tZSBmb3IgdGhlIHBvbGljeSB0aGF0IGhvb2tzIGluIHRoZSBuZXcKK2NvZGUgdGhhdCBhZGRzIGFsbCB0aGUgZW1haWw2IGZlYXR1cmVzLgorIiIiCisKK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IFBvbGljeSwgQ29tcGF0MzIsIGNvbXBhdDMyLCBfZXh0ZW5kX2RvY3N0cmluZ3MKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IF9oYXNfc3Vycm9nYXRlcworZnJvbSBlbWFpbC5oZWFkZXJyZWdpc3RyeSBpbXBvcnQgSGVhZGVyUmVnaXN0cnkgYXMgSGVhZGVyUmVnaXN0cnkKKworX19hbGxfXyA9IFsKKyAgICAnQ29tcGF0MzInLAorICAgICdjb21wYXQzMicsCisgICAgJ1BvbGljeScsCisgICAgJ0VtYWlsUG9saWN5JywKKyAgICAnZGVmYXVsdCcsCisgICAgJ3N0cmljdCcsCisgICAgJ1NNVFAnLAorICAgICdIVFRQJywKKyAgICBdCisKK0BfZXh0ZW5kX2RvY3N0cmluZ3MKK2NsYXNzIEVtYWlsUG9saWN5KFBvbGljeSk6CisKKyAgICAiIiIrCisgICAgUFJPVklTSU9OQUwKKworICAgIFRoZSBBUEkgZXh0ZW5zaW9ucyBlbmFibGVkIGJ5IHRoaXMgdGhpcyBwb2xpY3kgYXJlIGN1cnJlbnRseSBwcm92aXNpb25hbC4KKyAgICBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKworICAgIFRoaXMgcG9saWN5IGFkZHMgbmV3IGhlYWRlciBwYXJzaW5nIGFuZCBmb2xkaW5nIGFsZ29yaXRobXMuICBJbnN0ZWFkIG9mCisgICAgc2ltcGxlIHN0cmluZ3MsIGhlYWRlcnMgYXJlIGN1c3RvbSBvYmplY3RzIHdpdGggY3VzdG9tIGF0dHJpYnV0ZXMKKyAgICBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlIGZpZWxkLiAgVGhlIGZvbGRpbmcgYWxnb3JpdGhtIGZ1bGx5CisgICAgaW1wbGVtZW50cyBSRkNzIDIwNDcgYW5kIDUzMjIuCisKKyAgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0bworICAgIGFsbCBQb2xpY2llcywgdGhpcyBwb2xpY3kgYWRkcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKKworICAgIHJlZm9sZF9zb3VyY2UgICAgICAgLS0gaWYgdGhlIHZhbHVlIGZvciBhIGhlYWRlciBpbiB0aGUgTWVzc2FnZSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWUgZnJvbSB0aGUgcGFyc2luZyBvZiBzb21lIHNvdXJjZSwgdGhpcyBhdHRyaWJ1dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIGdlbmVyYXRvciBzaG91bGQgcmVmb2xkCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHZhbHVlIHdoZW4gdHJhbnNmb3JtaW5nIHRoZSBtZXNzYWdlIGJhY2sgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtIGZvcm0uICBUaGUgcG9zc2libGUgdmFsdWVzIGFyZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSAgLS0gYWxsIHNvdXJjZSB2YWx1ZXMgdXNlIG9yaWdpbmFsIGZvbGRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgIC0tIHNvdXJjZSB2YWx1ZXMgdGhhdCBoYXZlIGFueSBsaW5lIHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdlciB0aGFuIG1heF9saW5lX2xlbmd0aCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZvbGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsICAtLSBhbGwgdmFsdWVzIGFyZSByZWZvbGRlZC4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgJ2xvbmcnLgorCisgICAgaGVhZGVyX2ZhY3RvcnkgICAgICAtLSBhIGNhbGxhYmxlIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cywgJ25hbWUnIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJywgd2hlcmUgJ25hbWUnIGlzIGEgaGVhZGVyIGZpZWxkIG5hbWUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnIGlzIGFuIHVuZm9sZGVkIGhlYWRlciBmaWVsZCB2YWx1ZSwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zIGEgc3RyaW5nLWxpa2Ugb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuICBBIGRlZmF1bHQgaGVhZGVyX2ZhY3RvcnkgaXMgcHJvdmlkZWQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJzdGFuZHMgc29tZSBvZiB0aGUgUkZDNTMyMiBoZWFkZXIgZmllbGQgdHlwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ3VycmVudGx5IGFkZHJlc3MgZmllbGRzIGFuZCBkYXRlIGZpZWxkcyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsIHRyZWF0bWVudCwgd2hpbGUgYWxsIG90aGVyIGZpZWxkcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWF0ZWQgYXMgdW5zdHJ1Y3R1cmVkLiAgVGhpcyBsaXN0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGV4dGVuc2lvbiBpcyBtYXJrZWQgc3RhYmxlLikKKyAgICAiIiIKKworICAgIHJlZm9sZF9zb3VyY2UgPSAnbG9uZycKKyAgICBoZWFkZXJfZmFjdG9yeSA9IEhlYWRlclJlZ2lzdHJ5KCkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3KToKKyAgICAgICAgIyBFbnN1cmUgdGhhdCBlYWNoIG5ldyBpbnN0YW5jZSBnZXRzIGEgdW5pcXVlIGhlYWRlciBmYWN0b3J5CisgICAgICAgICMgKGFzIG9wcG9zZWQgdG8gY2xvbmVzLCB3aGljaCBzaGFyZSB0aGUgZmFjdG9yeSkuCisgICAgICAgIGlmICdoZWFkZXJfZmFjdG9yeScgbm90IGluIGt3OgorICAgICAgICAgICAgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsICdoZWFkZXJfZmFjdG9yeScsIEhlYWRlclJlZ2lzdHJ5KCkpCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprdykKKworICAgIGRlZiBoZWFkZXJfbWF4X2NvdW50KHNlbGYsIG5hbWUpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyByZXR1cm5zIHRoZSBtYXhfY291bnQgYXR0cmlidXRlIGZyb20KKyAgICAgICAgdGhlIHNwZWNpYWxpemVkIGhlYWRlciBjbGFzcyB0aGF0IHdvdWxkIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgaGVhZGVyCisgICAgICAgIG9mIHR5cGUgJ25hbWUnLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuaGVhZGVyX2ZhY3RvcnlbbmFtZV0ubWF4X2NvdW50CisKKyAgICAjIFRoZSBsb2dpYyBvZiB0aGUgbmV4dCB0aHJlZSBtZXRob2RzIGlzIGNob3NlbiBzdWNoIHRoYXQgaXQgaXMgcG9zc2libGUgdG8KKyAgICAjIHN3aXRjaCBhIE1lc3NhZ2Ugb2JqZWN0IGJldHdlZW4gYSBDb21wYXQzMiBwb2xpY3kgYW5kIGEgcG9saWN5IGRlcml2ZWQKKyAgICAjIGZyb20gdGhpcyBjbGFzcyBhbmQgaGF2ZSB0aGUgcmVzdWx0cyBzdGF5IGNvbnNpc3RlbnQuICBUaGlzIGFsbG93cyBhCisgICAgIyBNZXNzYWdlIG9iamVjdCBjb25zdHJ1Y3RlZCB3aXRoIHRoaXMgcG9saWN5IHRvIGJlIHBhc3NlZCB0byBhIGxpYnJhcnkKKyAgICAjIHRoYXQgb25seSBoYW5kbGVzIENvbXBhdDMyIG9iamVjdHMsIG9yIHRvIHJlY2VpdmUgc3VjaCBhbiBvYmplY3QgYW5kCisgICAgIyBjb252ZXJ0IGl0IHRvIHVzZSB0aGUgbmV3ZXIgc3R5bGUgYnkganVzdCBjaGFuZ2luZyBpdHMgcG9saWN5LiAgSXQgaXMKKyAgICAjIGFsc28gY2hvc2VuIGJlY2F1c2UgaXQgcG9zdHBvbmVzIHRoZSByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBmdWxsIHJmYzUzMjIKKyAgICAjIHBhcnNlIHVudGlsIGFzIGxhdGUgYXMgcG9zc2libGUgd2hlbiBwYXJzaW5nIGZyb20gc291cmNlLCBzaW5jZSBpbiBtYW55CisgICAgIyBhcHBsaWNhdGlvbnMgb25seSBhIGZldyBoZWFkZXJzIHdpbGwgYWN0dWFsbHkgYmUgaW5zcGVjdGVkLgorCisgICAgZGVmIGhlYWRlcl9zb3VyY2VfcGFyc2Uoc2VsZiwgc291cmNlbGluZXMpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnOicgYW5kIHJldHVybmVkIHVubW9kaWZpZWQuCisgICAgICAgIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmIHRoZQorICAgICAgICByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsIGFuZAorICAgICAgICBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLiAgKFRoaXMKKyAgICAgICAgaXMgdGhlIHNhbWUgYXMgQ29tcGF0MzIpLgorCisgICAgICAgICIiIgorICAgICAgICBuYW1lLCB2YWx1ZSA9IHNvdXJjZWxpbmVzWzBdLnNwbGl0KCc6JywgMSkKKyAgICAgICAgdmFsdWUgPSB2YWx1ZS5sc3RyaXAoJyBcdCcpICsgJycuam9pbihzb3VyY2VsaW5lc1sxOl0pCisgICAgICAgIHJldHVybiAobmFtZSwgdmFsdWUucnN0cmlwKCdcclxuJykpCisKKyAgICBkZWYgaGVhZGVyX3N0b3JlX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgbmFtZSBpcyByZXR1cm5lZCB1bmNoYW5nZWQuICBJZiB0aGUgaW5wdXQgdmFsdWUgaGFzIGEgJ25hbWUnCisgICAgICAgIGF0dHJpYnV0ZSBhbmQgaXQgbWF0Y2hlcyB0aGUgbmFtZSBpZ25vcmluZyBjYXNlLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQKKyAgICAgICAgdW5jaGFuZ2VkLiAgT3RoZXJ3aXNlIHRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcGFzc2VkIHRvIGhlYWRlcl9mYWN0b3J5CisgICAgICAgIG1ldGhvZCwgYW5kIHRoZSByZXN1bHRpbmcgY3VzdG9tIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQgYXMgdGhlCisgICAgICAgIHZhbHVlLiAgSW4gdGhpcyBjYXNlIGEgVmFsdWVFcnJvciBpcyByYWlzZWQgaWYgdGhlIGlucHV0IHZhbHVlIGNvbnRhaW5zCisgICAgICAgIENSIG9yIExGIGNoYXJhY3RlcnMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICduYW1lJykgYW5kIHZhbHVlLm5hbWUubG93ZXIoKSA9PSBuYW1lLmxvd2VyKCk6CisgICAgICAgICAgICByZXR1cm4gKG5hbWUsIHZhbHVlKQorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpIGFuZCBsZW4odmFsdWUuc3BsaXRsaW5lcygpKT4xOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSGVhZGVyIHZhbHVlcyBtYXkgbm90IGNvbnRhaW4gbGluZWZlZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3IgY2FycmlhZ2UgcmV0dXJuIGNoYXJhY3RlcnMiKQorICAgICAgICByZXR1cm4gKG5hbWUsIHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgdmFsdWUpKQorCisgICAgZGVmIGhlYWRlcl9mZXRjaF9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgSWYgdGhlIHZhbHVlIGhhcyBhICduYW1lJyBhdHRyaWJ1dGUsIGl0IGlzIHJldHVybmVkIHRvIHVubW9kaWZpZWQuCisgICAgICAgIE90aGVyd2lzZSB0aGUgbmFtZSBhbmQgdGhlIHZhbHVlIHdpdGggYW55IGxpbmVzZXAgY2hhcmFjdGVycyByZW1vdmVkCisgICAgICAgIGFyZSBwYXNzZWQgdG8gdGhlIGhlYWRlcl9mYWN0b3J5IG1ldGhvZCwgYW5kIHRoZSByZXN1bHRpbmcgY3VzdG9tCisgICAgICAgIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQuICBBbnkgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBnZXQgdHVybmVkCisgICAgICAgIGludG8gdGhlIHVuaWNvZGUgdW5rbm93bi1jaGFyYWN0ZXIgZ2x5cGguCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICduYW1lJyk6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgcmV0dXJuIHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgJycuam9pbih2YWx1ZS5zcGxpdGxpbmVzKCkpKQorCisgICAgZGVmIGZvbGQoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIEhlYWRlciBmb2xkaW5nIGlzIGNvbnRyb2xsZWQgYnkgdGhlIHJlZm9sZF9zb3VyY2UgcG9saWN5IHNldHRpbmcuICBBCisgICAgICAgIHZhbHVlIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSAnc291cmNlIHZhbHVlJyBpZiBhbmQgb25seSBpZiBpdCBkb2VzIG5vdAorICAgICAgICBoYXZlIGEgJ25hbWUnIGF0dHJpYnV0ZSAoaGF2aW5nIGEgJ25hbWUnIGF0dHJpYnV0ZSBtZWFucyBpdCBpcyBhIGhlYWRlcgorICAgICAgICBvYmplY3Qgb2Ygc29tZSBzb3J0KS4gIElmIGEgc291cmNlIHZhbHVlIG5lZWRzIHRvIGJlIHJlZm9sZGVkIGFjY29yZGluZworICAgICAgICB0byB0aGUgcG9saWN5LCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGJ5IHBhc3NpbmcKKyAgICAgICAgdGhlIG5hbWUgYW5kIHRoZSB2YWx1ZSB3aXRoIGFueSBsaW5lc2VwIGNoYXJhY3RlcnMgcmVtb3ZlZCB0byB0aGUKKyAgICAgICAgaGVhZGVyX2ZhY3RvcnkgbWV0aG9kLiAgRm9sZGluZyBvZiBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGlzIGRvbmUgYnkKKyAgICAgICAgY2FsbGluZyBpdHMgZm9sZCBtZXRob2Qgd2l0aCB0aGUgY3VycmVudCBwb2xpY3kuCisKKyAgICAgICAgU291cmNlIHZhbHVlcyBhcmUgc3BsaXQgaW50byBsaW5lcyB1c2luZyBzcGxpdGxpbmVzLiAgSWYgdGhlIHZhbHVlIGlzCisgICAgICAgIG5vdCB0byBiZSByZWZvbGRlZCwgdGhlIGxpbmVzIGFyZSByZWpvaW5lZCB1c2luZyB0aGUgbGluZXNlcCBmcm9tIHRoZQorICAgICAgICBwb2xpY3kgYW5kIHJldHVybmVkLiAgVGhlIGV4Y2VwdGlvbiBpcyBsaW5lcyBjb250YWluaW5nIG5vbi1hc2NpaQorICAgICAgICBiaW5hcnkgZGF0YS4gIEluIHRoYXQgY2FzZSB0aGUgdmFsdWUgaXMgcmVmb2xkZWQgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICAgcmVmb2xkX3NvdXJjZSBzZXR0aW5nLCB3aGljaCBjYXVzZXMgdGhlIGJpbmFyeSBkYXRhIHRvIGJlIENURSBlbmNvZGVkCisgICAgICAgIHVzaW5nIHRoZSB1bmtub3duLThiaXQgY2hhcnNldC4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQobmFtZSwgdmFsdWUsIHJlZm9sZF9iaW5hcnk9VHJ1ZSkKKworICAgIGRlZiBmb2xkX2JpbmFyeShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgVGhlIHNhbWUgYXMgZm9sZCBpZiBjdGVfdHlwZSBpcyA3Yml0LCBleGNlcHQgdGhhdCB0aGUgcmV0dXJuZWQgdmFsdWUgaXMKKyAgICAgICAgYnl0ZXMuCisKKyAgICAgICAgSWYgY3RlX3R5cGUgaXMgOGJpdCwgbm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGlzIGNvbnZlcnRlZCBiYWNrIGludG8KKyAgICAgICAgYnl0ZXMuICBIZWFkZXJzIHdpdGggYmluYXJ5IGRhdGEgYXJlIG5vdCByZWZvbGRlZCwgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICAgcmVmb2xkX2hlYWRlciBzZXR0aW5nLCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGV0aGVyIHRoZSBiaW5hcnkKKyAgICAgICAgZGF0YSBjb25zaXN0cyBvZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzIG9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgorCisgICAgICAgICIiIgorICAgICAgICBmb2xkZWQgPSBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCByZWZvbGRfYmluYXJ5PXNlbGYuY3RlX3R5cGU9PSc3Yml0JykKKyAgICAgICAgcmV0dXJuIGZvbGRlZC5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisKKyAgICBkZWYgX2ZvbGQoc2VsZiwgbmFtZSwgdmFsdWUsIHJlZm9sZF9iaW5hcnk9RmFsc2UpOgorICAgICAgICBpZiBoYXNhdHRyKHZhbHVlLCAnbmFtZScpOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZvbGQocG9saWN5PXNlbGYpCisgICAgICAgIG1heGxlbiA9IHNlbGYubWF4X2xpbmVfbGVuZ3RoIGlmIHNlbGYubWF4X2xpbmVfbGVuZ3RoIGVsc2UgZmxvYXQoJ2luZicpCisgICAgICAgIGxpbmVzID0gdmFsdWUuc3BsaXRsaW5lcygpCisgICAgICAgIHJlZm9sZCA9IChzZWxmLnJlZm9sZF9zb3VyY2UgPT0gJ2FsbCcgb3IKKyAgICAgICAgICAgICAgICAgIHNlbGYucmVmb2xkX3NvdXJjZSA9PSAnbG9uZycgYW5kCisgICAgICAgICAgICAgICAgICAgIChsZW4obGluZXNbMF0pK2xlbihuYW1lKSsyID4gbWF4bGVuIG9yCisgICAgICAgICAgICAgICAgICAgICBhbnkobGVuKHgpID4gbWF4bGVuIGZvciB4IGluIGxpbmVzWzE6XSkpKQorICAgICAgICBpZiByZWZvbGQgb3IgcmVmb2xkX2JpbmFyeSBhbmQgX2hhc19zdXJyb2dhdGVzKHZhbHVlKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsICcnLmpvaW4obGluZXMpKS5mb2xkKHBvbGljeT1zZWxmKQorICAgICAgICByZXR1cm4gbmFtZSArICc6ICcgKyBzZWxmLmxpbmVzZXAuam9pbihsaW5lcykgKyBzZWxmLmxpbmVzZXAKKworCitkZWZhdWx0ID0gRW1haWxQb2xpY3koKQorIyBNYWtlIHRoZSBkZWZhdWx0IHBvbGljeSB1c2UgdGhlIGNsYXNzIGRlZmF1bHQgaGVhZGVyX2ZhY3RvcnkKK2RlbCBkZWZhdWx0LmhlYWRlcl9mYWN0b3J5CitzdHJpY3QgPSBkZWZhdWx0LmNsb25lKHJhaXNlX29uX2RlZmVjdD1UcnVlKQorU01UUCA9IGRlZmF1bHQuY2xvbmUobGluZXNlcD0nXHJcbicpCitIVFRQID0gZGVmYXVsdC5jbG9uZShsaW5lc2VwPSdcclxuJywgbWF4X2xpbmVfbGVuZ3RoPU5vbmUpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdXRpbHMucHkgYi9MaWIvZW1haWwvdXRpbHMucHkKaW5kZXggYWM0ZGEzNy4uNzNiYzM0OCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3V0aWxzLnB5CisrKyBiL0xpYi9lbWFpbC91dGlscy5weQpAQCAtMTEsMTIgKzExLDE0IEBACiAgICAgJ2VuY29kZV9yZmMyMjMxJywKICAgICAnZm9ybWF0YWRkcicsCiAgICAgJ2Zvcm1hdGRhdGUnLAorICAgICdmb3JtYXRfZGF0ZXRpbWUnLAogICAgICdnZXRhZGRyZXNzZXMnLAogICAgICdtYWtlX21zZ2lkJywKICAgICAnbWt0aW1lX3R6JywKICAgICAncGFyc2VhZGRyJywKICAgICAncGFyc2VkYXRlJywKICAgICAncGFyc2VkYXRlX3R6JywKKyAgICAncGFyc2VkYXRlX3RvX2RhdGV0aW1lJywKICAgICAndW5xdW90ZScsCiAgICAgXQogCkBAIC0yNiw2ICsyOCw3IEBACiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc29ja2V0CitpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB1cmxsaWIucGFyc2UKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KQEAgLTM3LDExICs0MCwxMyBAQAogIyBXZSBuZWVkIHdvcm1hcm91bmRzIGZvciBidWdzIGluIHRoZXNlIG1ldGhvZHMgaW4gb2xkZXIgUHl0aG9ucyAoc2VlIGJlbG93KQogZnJvbSBlbWFpbC5fcGFyc2VhZGRyIGltcG9ydCBwYXJzZWRhdGUgYXMgX3BhcnNlZGF0ZQogZnJvbSBlbWFpbC5fcGFyc2VhZGRyIGltcG9ydCBwYXJzZWRhdGVfdHogYXMgX3BhcnNlZGF0ZV90egorZnJvbSBlbWFpbC5fcGFyc2VhZGRyIGltcG9ydCBfcGFyc2VkYXRlX3R6IGFzIF9fcGFyc2VkYXRlX3R6CiAKIGZyb20gcXVvcHJpIGltcG9ydCBkZWNvZGVzdHJpbmcgYXMgX3FkZWNvZGUKIAogIyBJbnRyYXBhY2thZ2UgaW1wb3J0cwogZnJvbSBlbWFpbC5lbmNvZGVycyBpbXBvcnQgX2JlbmNvZGUsIF9xZW5jb2RlCitmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIAogQ09NTUFTUEFDRSA9ICcsICcKIEVNUFRZU1RSSU5HID0gJycKQEAgLTUwLDI3ICs1NSw1MyBAQAogVElDSyA9ICInIgogCiBzcGVjaWFsc3JlID0gcmUuY29tcGlsZShyJ1tdW1xcKCk8PkAsOjsiLl0nKQotZXNjYXBlc3JlID0gcmUuY29tcGlsZShyJ1tdW1xcKCkiXScpCitlc2NhcGVzcmUgPSByZS5jb21waWxlKHInW1xcIl0nKQogCisjIEhvdyB0byBmaWd1cmUgb3V0IGlmIHdlIGFyZSBwcm9jZXNzaW5nIHN0cmluZ3MgdGhhdCBjb21lIGZyb20gYSBieXRlCisjIHNvdXJjZSB3aXRoIHVuZGVjb2RhYmxlIGNoYXJhY3RlcnMuCitfaGFzX3N1cnJvZ2F0ZXMgPSByZS5jb21waWxlKAorICAgICcoW15cdWQ4MDAtXHVkYmZmXXxcQSlbXHVkYzAwLVx1ZGZmZl0oW15cdWRjMDAtXHVkZmZmXXxcWiknKS5zZWFyY2gKKworIyBIb3cgdG8gZGVhbCB3aXRoIGEgc3RyaW5nIGNvbnRhaW5pbmcgYnl0ZXMgYmVmb3JlIGhhbmRpbmcgaXQgdG8gdGhlCisjIGFwcGxpY2F0aW9uIHRocm91Z2ggdGhlICdub3JtYWwnIGludGVyZmFjZS4KK2RlZiBfc2FuaXRpemUoc3RyaW5nKToKKyAgICAjIFR1cm4gYW55IGVzY2FwZWQgYnl0ZXMgaW50byB1bmljb2RlICd1bmtub3duJyBjaGFyLgorICAgIG9yaWdpbmFsX2J5dGVzID0gc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICByZXR1cm4gb3JpZ2luYWxfYnl0ZXMuZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykKIAogCiAjIEhlbHBlcnMKIAotZGVmIGZvcm1hdGFkZHIocGFpcik6CitkZWYgZm9ybWF0YWRkcihwYWlyLCBjaGFyc2V0PSd1dGYtOCcpOgogICAgICIiIlRoZSBpbnZlcnNlIG9mIHBhcnNlYWRkcigpLCB0aGlzIHRha2VzIGEgMi10dXBsZSBvZiB0aGUgZm9ybQogICAgIChyZWFsbmFtZSwgZW1haWxfYWRkcmVzcykgYW5kIHJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBzdWl0YWJsZQogICAgIGZvciBhbiBSRkMgMjgyMiBGcm9tLCBUbyBvciBDYyBoZWFkZXIuCiAKICAgICBJZiB0aGUgZmlyc3QgZWxlbWVudCBvZiBwYWlyIGlzIGZhbHNlLCB0aGVuIHRoZSBzZWNvbmQgZWxlbWVudCBpcwogICAgIHJldHVybmVkIHVubW9kaWZpZWQuCisKKyAgICBPcHRpb25hbCBjaGFyc2V0IGlmIGdpdmVuIGlzIHRoZSBjaGFyYWN0ZXIgc2V0IHRoYXQgaXMgdXNlZCB0byBlbmNvZGUKKyAgICByZWFsbmFtZSBpbiBjYXNlIHJlYWxuYW1lIGlzIG5vdCBBU0NJSSBzYWZlLiAgQ2FuIGJlIGFuIGluc3RhbmNlIG9mIHN0ciBvcgorICAgIGEgQ2hhcnNldC1saWtlIG9iamVjdCB3aGljaCBoYXMgYSBoZWFkZXJfZW5jb2RlIG1ldGhvZC4gIERlZmF1bHQgaXMKKyAgICAndXRmLTgnLgogICAgICIiIgogICAgIG5hbWUsIGFkZHJlc3MgPSBwYWlyCisgICAgIyBUaGUgYWRkcmVzcyBNVVNUIChwZXIgUkZDKSBiZSBhc2NpaSwgc28gdGhyb3cgYSBVbmljb2RlRXJyb3IgaWYgaXQgaXNuJ3QuCisgICAgYWRkcmVzcy5lbmNvZGUoJ2FzY2lpJykKICAgICBpZiBuYW1lOgotICAgICAgICBxdW90ZXMgPSAnJwotICAgICAgICBpZiBzcGVjaWFsc3JlLnNlYXJjaChuYW1lKToKLSAgICAgICAgICAgIHF1b3RlcyA9ICciJwotICAgICAgICBuYW1lID0gZXNjYXBlc3JlLnN1YihyJ1xcXGc8MD4nLCBuYW1lKQotICAgICAgICByZXR1cm4gJyVzJXMlcyA8JXM+JyAlIChxdW90ZXMsIG5hbWUsIHF1b3RlcywgYWRkcmVzcykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmFtZS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2hhcnNldCwgc3RyKToKKyAgICAgICAgICAgICAgICBjaGFyc2V0ID0gQ2hhcnNldChjaGFyc2V0KQorICAgICAgICAgICAgZW5jb2RlZF9uYW1lID0gY2hhcnNldC5oZWFkZXJfZW5jb2RlKG5hbWUpCisgICAgICAgICAgICByZXR1cm4gIiVzIDwlcz4iICUgKGVuY29kZWRfbmFtZSwgYWRkcmVzcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHF1b3RlcyA9ICcnCisgICAgICAgICAgICBpZiBzcGVjaWFsc3JlLnNlYXJjaChuYW1lKToKKyAgICAgICAgICAgICAgICBxdW90ZXMgPSAnIicKKyAgICAgICAgICAgIG5hbWUgPSBlc2NhcGVzcmUuc3ViKHInXFxcZzwwPicsIG5hbWUpCisgICAgICAgICAgICByZXR1cm4gJyVzJXMlcyA8JXM+JyAlIChxdW90ZXMsIG5hbWUsIHF1b3RlcywgYWRkcmVzcykKICAgICByZXR1cm4gYWRkcmVzcwogCiAKQEAgLTk0LDYgKzEyNSwxNCBAQAogICAnJycsIHJlLlZFUkJPU0UgfCByZS5JR05PUkVDQVNFKQogCiAKK2RlZiBfZm9ybWF0X3RpbWV0dXBsZV9hbmRfem9uZSh0aW1ldHVwbGUsIHpvbmUpOgorICAgIHJldHVybiAnJXMsICUwMmQgJXMgJTA0ZCAlMDJkOiUwMmQ6JTAyZCAlcycgJSAoCisgICAgICAgIFsnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJ11bdGltZXR1cGxlWzZdXSwKKyAgICAgICAgdGltZXR1cGxlWzJdLAorICAgICAgICBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywKKyAgICAgICAgICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddW3RpbWV0dXBsZVsxXSAtIDFdLAorICAgICAgICB0aW1ldHVwbGVbMF0sIHRpbWV0dXBsZVszXSwgdGltZXR1cGxlWzRdLCB0aW1ldHVwbGVbNV0sCisgICAgICAgIHpvbmUpCiAKIGRlZiBmb3JtYXRkYXRlKHRpbWV2YWw9Tm9uZSwgbG9jYWx0aW1lPUZhbHNlLCB1c2VnbXQ9RmFsc2UpOgogICAgICIiIlJldHVybnMgYSBkYXRlIHN0cmluZyBhcyBzcGVjaWZpZWQgYnkgUkZDIDI4MjIsIGUuZy46CkBAIC0xMzgsMTQgKzE3NywyNSBAQAogICAgICAgICAgICAgem9uZSA9ICdHTVQnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB6b25lID0gJy0wMDAwJwotICAgIHJldHVybiAnJXMsICUwMmQgJXMgJTA0ZCAlMDJkOiUwMmQ6JTAyZCAlcycgJSAoCi0gICAgICAgIFsnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJ11bbm93WzZdXSwKLSAgICAgICAgbm93WzJdLAotICAgICAgICBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywKLSAgICAgICAgICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddW25vd1sxXSAtIDFdLAotICAgICAgICBub3dbMF0sIG5vd1szXSwgbm93WzRdLCBub3dbNV0sCi0gICAgICAgIHpvbmUpCisgICAgcmV0dXJuIF9mb3JtYXRfdGltZXR1cGxlX2FuZF96b25lKG5vdywgem9uZSkKIAorZGVmIGZvcm1hdF9kYXRldGltZShkdCwgdXNlZ210PUZhbHNlKToKKyAgICAiIiJUdXJuIGEgZGF0ZXRpbWUgaW50byBhIGRhdGUgc3RyaW5nIGFzIHNwZWNpZmllZCBpbiBSRkMgMjgyMi4KKworICAgIElmIHVzZWdtdCBpcyBUcnVlLCBkdCBtdXN0IGJlIGFuIGF3YXJlIGRhdGV0aW1lIHdpdGggYW4gb2Zmc2V0IG9mIHplcm8uICBJbgorICAgIHRoaXMgY2FzZSAnR01UJyB3aWxsIGJlIHJlbmRlcmVkIGluc3RlYWQgb2YgdGhlIG5vcm1hbCArMDAwMCByZXF1aXJlZCBieQorICAgIFJGQzI4MjIuICBUaGlzIGlzIHRvIHN1cHBvcnQgSFRUUCBoZWFkZXJzIGludm9sdmluZyBkYXRlIHN0YW1wcy4KKyAgICAiIiIKKyAgICBub3cgPSBkdC50aW1ldHVwbGUoKQorICAgIGlmIHVzZWdtdDoKKyAgICAgICAgaWYgZHQudHppbmZvIGlzIE5vbmUgb3IgZHQudHppbmZvICE9IGRhdGV0aW1lLnRpbWV6b25lLnV0YzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVzZWdtdCBvcHRpb24gcmVxdWlyZXMgYSBVVEMgZGF0ZXRpbWUiKQorICAgICAgICB6b25lID0gJ0dNVCcKKyAgICBlbGlmIGR0LnR6aW5mbyBpcyBOb25lOgorICAgICAgICB6b25lID0gJy0wMDAwJworICAgIGVsc2U6CisgICAgICAgIHpvbmUgPSBkdC5zdHJmdGltZSgiJXoiKQorICAgIHJldHVybiBfZm9ybWF0X3RpbWV0dXBsZV9hbmRfem9uZShub3csIHpvbmUpCiAKIAogZGVmIG1ha2VfbXNnaWQoaWRzdHJpbmc9Tm9uZSwgZG9tYWluPU5vbmUpOgpAQCAtMTg3LDYgKzIzNywxNSBAQAogICAgICAgICByZXR1cm4gTm9uZQogICAgIHJldHVybiBfcGFyc2VkYXRlX3R6KGRhdGEpCiAKK2RlZiBwYXJzZWRhdGVfdG9fZGF0ZXRpbWUoZGF0YSk6CisgICAgaWYgbm90IGRhdGE6CisgICAgICAgIHJldHVybiBOb25lCisgICAgKmR0dXBsZSwgdHogPSBfX3BhcnNlZGF0ZV90eihkYXRhKQorICAgIGlmIHR6IGlzIE5vbmU6CisgICAgICAgIHJldHVybiBkYXRldGltZS5kYXRldGltZSgqZHR1cGxlWzo2XSkKKyAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUoKmR0dXBsZVs6Nl0sCisgICAgICAgICAgICB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUoZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9dHopKSkKKwogCiBkZWYgcGFyc2VhZGRyKGFkZHIpOgogICAgIGFkZHJzID0gX0FkZHJlc3NMaXN0KGFkZHIpLmFkZHJlc3NsaXN0CkBAIC0zMDQsMyArMzYzLDQ5IEBACiAgICAgZXhjZXB0IExvb2t1cEVycm9yOgogICAgICAgICAjIGNoYXJzZXQgaXMgbm90IGEga25vd24gY29kZWMuCiAgICAgICAgIHJldHVybiB1bnF1b3RlKHRleHQpCisKKworIworIyBkYXRldGltZSBkb2Vzbid0IHByb3ZpZGUgYSBsb2NhbHRpbWUgZnVuY3Rpb24geWV0LCBzbyBwcm92aWRlIG9uZS4gIENvZGUKKyMgYWRhcHRlZCBmcm9tIHRoZSBwYXRjaCBpbiBpc3N1ZSA5NTI3LiAgVGhpcyBtYXkgbm90IGJlIHBlcmZlY3QsIGJ1dCBpdCBpcworIyBiZXR0ZXIgdGhhbiBub3QgaGF2aW5nIGl0LgorIworCitkZWYgbG9jYWx0aW1lKGR0PU5vbmUsIGlzZHN0PS0xKToKKyAgICAiIiJSZXR1cm4gbG9jYWwgdGltZSBhcyBhbiBhd2FyZSBkYXRldGltZSBvYmplY3QuCisKKyAgICBJZiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMsIHJldHVybiBjdXJyZW50IHRpbWUuICBPdGhlcndpc2UgKmR0KgorICAgIGFyZ3VtZW50IHNob3VsZCBiZSBhIGRhdGV0aW1lIGluc3RhbmNlLCBhbmQgaXQgaXMgY29udmVydGVkIHRvIHRoZQorICAgIGxvY2FsIHRpbWUgem9uZSBhY2NvcmRpbmcgdG8gdGhlIHN5c3RlbSB0aW1lIHpvbmUgZGF0YWJhc2UuICBJZiAqZHQqIGlzCisgICAgbmFpdmUgKHRoYXQgaXMsIGR0LnR6aW5mbyBpcyBOb25lKSwgaXQgaXMgYXNzdW1lZCB0byBiZSBpbiBsb2NhbCB0aW1lLgorICAgIEluIHRoaXMgY2FzZSwgYSBwb3NpdGl2ZSBvciB6ZXJvIHZhbHVlIGZvciAqaXNkc3QqIGNhdXNlcyBsb2NhbHRpbWUgdG8KKyAgICBwcmVzdW1lIGluaXRpYWxseSB0aGF0IHN1bW1lciB0aW1lIChmb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5nIFRpbWUpCisgICAgaXMgb3IgaXMgbm90IChyZXNwZWN0aXZlbHkpIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLiAgQQorICAgIG5lZ2F0aXZlIHZhbHVlIGZvciAqaXNkc3QqIGNhdXNlcyB0aGUgbG9jYWx0aW1lKCkgZnVuY3Rpb24gdG8gYXR0ZW1wdAorICAgIHRvIGRpdmluZSB3aGV0aGVyIHN1bW1lciB0aW1lIGlzIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLgorCisgICAgIiIiCisgICAgaWYgZHQgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lLm5vdyhkYXRldGltZS50aW1lem9uZS51dGMpLmFzdGltZXpvbmUoKQorICAgIGlmIGR0LnR6aW5mbyBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGR0LmFzdGltZXpvbmUoKQorICAgICMgV2UgaGF2ZSBhIG5haXZlIGRhdGV0aW1lLiAgQ29udmVydCB0byBhIChsb2NhbHRpbWUpIHRpbWV0dXBsZSBhbmQgcGFzcyB0bworICAgICMgc3lzdGVtIG1rdGltZSB0b2dldGhlciB3aXRoIHRoZSBpc2RzdCBoaW50LiAgU3lzdGVtIG1rdGltZSB3aWxsIHJldHVybgorICAgICMgc2Vjb25kcyBzaW5jZSBlcG9jaC4KKyAgICB0bSA9IGR0LnRpbWV0dXBsZSgpWzotMV0gKyAoaXNkc3QsKQorICAgIHNlY29uZHMgPSB0aW1lLm1rdGltZSh0bSkKKyAgICBsb2NhbHRtID0gdGltZS5sb2NhbHRpbWUoc2Vjb25kcykKKyAgICB0cnk6CisgICAgICAgIGRlbHRhID0gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9bG9jYWx0bS50bV9nbXRvZmYpCisgICAgICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUoZGVsdGEsIGxvY2FsdG0udG1fem9uZSkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICMgQ29tcHV0ZSBVVEMgb2Zmc2V0IGFuZCBjb21wYXJlIHdpdGggdGhlIHZhbHVlIGltcGxpZWQgYnkgdG1faXNkc3QuCisgICAgICAgICMgSWYgdGhlIHZhbHVlcyBtYXRjaCwgdXNlIHRoZSB6b25lIG5hbWUgaW1wbGllZCBieSB0bV9pc2RzdC4KKyAgICAgICAgZGVsdGEgPSBkdCAtIGRhdGV0aW1lLmRhdGV0aW1lKCp0aW1lLmdtdGltZShzZWNvbmRzKVs6Nl0pCisgICAgICAgIGRzdCA9IHRpbWUuZGF5bGlnaHQgYW5kIGxvY2FsdG0udG1faXNkc3QgPiAwCisgICAgICAgIGdtdG9mZiA9IC0odGltZS5hbHR6b25lIGlmIGRzdCBlbHNlIHRpbWUudGltZXpvbmUpCisgICAgICAgIGlmIGRlbHRhID09IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZik6CisgICAgICAgICAgICB0eiA9IGRhdGV0aW1lLnRpbWV6b25lKGRlbHRhLCB0aW1lLnR6bmFtZVtkc3RdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHogPSBkYXRldGltZS50aW1lem9uZShkZWx0YSkKKyAgICByZXR1cm4gZHQucmVwbGFjZSh0emluZm89dHopCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2NwMDM3LnB5IGIvTGliL2VuY29kaW5ncy9jcDAzNy5weQppbmRleCA0ZWRkNzA4Li5iZmUyYzFlIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2NwMDM3LnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvY3AwMzcucHkKQEAgLTMwMSw2ICszMDEsNyBAQAogICAgICdceGQ5JyAgICAgIyAgMHhGRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICAnXHhkYScgICAgICMgIDB4RkUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAgJ1x4OWYnICAgICAjICAweEZGIC0+IENPTlRST0wKKyAgICAnXHVmZmZlJyAgICMjIFdpZGVuIHRvIFVDUzIgZm9yIG9wdGltaXphdGlvbgogKQogCiAjIyMgRW5jb2RpbmcgdGFibGUKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvY3A1MDAucHkgYi9MaWIvZW5jb2RpbmdzL2NwNTAwLnB5CmluZGV4IDVmNjE1MzUuLmE5NzViZTcgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvY3A1MDAucHkKKysrIGIvTGliL2VuY29kaW5ncy9jcDUwMC5weQpAQCAtMzAxLDYgKzMwMSw3IEBACiAgICAgJ1x4ZDknICAgICAjICAweEZEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgICdceGRhJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICAnXHg5ZicgICAgICMgIDB4RkYgLT4gQ09OVFJPTAorICAgICdcdWZmZmUnICAgIyMgV2lkZW4gdG8gVUNTMiBmb3Igb3B0aW1pemF0aW9uCiApCiAKICMjIyBFbmNvZGluZyB0YWJsZQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9jcDY1MDAxLnB5IGIvTGliL2VuY29kaW5ncy9jcDY1MDAxLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4N2ViODcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkKQEAgLTAsMCArMSw0MCBAQAorIiIiCitDb2RlIHBhZ2UgNjUwMDE6IFdpbmRvd3MgVVRGLTggKENQX1VURjgpLgorIiIiCisKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBmdW5jdG9vbHMKKworaWYgbm90IGhhc2F0dHIoY29kZWNzLCAnY29kZV9wYWdlX2VuY29kZScpOgorICAgIHJhaXNlIExvb2t1cEVycm9yKCJjcDY1MDAxIGVuY29kaW5nIGlzIG9ubHkgYXZhaWxhYmxlIG9uIFdpbmRvd3MiKQorCisjIyMgQ29kZWMgQVBJcworCitlbmNvZGUgPSBmdW5jdG9vbHMucGFydGlhbChjb2RlY3MuY29kZV9wYWdlX2VuY29kZSwgNjUwMDEpCitkZWNvZGUgPSBmdW5jdG9vbHMucGFydGlhbChjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgNjUwMDEpCisKK2NsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKKyAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CisgICAgICAgIHJldHVybiBlbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQorCitjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKKyAgICBfYnVmZmVyX2RlY29kZSA9IGRlY29kZQorCitjbGFzcyBTdHJlYW1Xcml0ZXIoY29kZWNzLlN0cmVhbVdyaXRlcik6CisgICAgZW5jb2RlID0gZW5jb2RlCisKK2NsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKKyAgICBkZWNvZGUgPSBkZWNvZGUKKworIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCisKK2RlZiBnZXRyZWdlbnRyeSgpOgorICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAorICAgICAgICBuYW1lPSdjcDY1MDAxJywKKyAgICAgICAgZW5jb2RlPWVuY29kZSwKKyAgICAgICAgZGVjb2RlPWRlY29kZSwKKyAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKKyAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKKyAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKKyAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKKyAgICApCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2hwX3JvbWFuOC5weSBiL0xpYi9lbmNvZGluZ3MvaHBfcm9tYW44LnB5CmluZGV4IGRiYWFhNzIuLjIzMzQyMDggMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvaHBfcm9tYW44LnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvaHBfcm9tYW44LnB5CkBAIC0xNCwxOCArMTQsMTggQEAKIGNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAKICAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKIAogICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQogCiBjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBwYXNzCkBAIC00NiwxMDcgKzQ2LDI2NyBAQAogICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICkKIAotIyMjIERlY29kaW5nIE1hcAogCi1kZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCi1kZWNvZGluZ19tYXAudXBkYXRlKHsKLSAgICAgICAgMHgwMGExOiAweDAwYzAsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBhMjogMHgwMGMyLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBhMzogMHgwMGM4LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQotICAgICAgICAweDAwYTQ6IDB4MDBjYSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYTU6IDB4MDBjYiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBhNjogMHgwMGNlLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBhNzogMHgwMGNmLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGE4OiAweDAwYjQsICMgICAgICAgQUNVVEUgQUNDRU5UCi0gICAgICAgIDB4MDBhOTogMHgwMmNiLCAjICAgICAgIE1PRElGSUVSIExFVFRFUiBHUkFWRSBBQ0NFTlQgKE1hbmRhcmluIENoaW5lc2UgZm91cnRoIHRvbmUpCi0gICAgICAgIDB4MDBhYTogMHgwMmM2LCAjICAgICAgIE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAotICAgICAgICAweDAwYWI6IDB4MDBhOCwgIyAgICAgICBESUFFUkVTSVMKLSAgICAgICAgMHgwMGFjOiAweDAyZGMsICMgICAgICAgU01BTEwgVElMREUKLSAgICAgICAgMHgwMGFkOiAweDAwZDksICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBhZTogMHgwMGRiLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBhZjogMHgyMGE0LCAjICAgICAgIExJUkEgU0lHTgotICAgICAgICAweDAwYjA6IDB4MDBhZiwgIyAgICAgICBNQUNST04KLSAgICAgICAgMHgwMGIxOiAweDAwZGQsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBiMjogMHgwMGZkLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGIzOiAweDAwYjAsICMgICAgICAgREVHUkVFIFNJR04KLSAgICAgICAgMHgwMGI0OiAweDAwYzcsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGI1OiAweDAwZTcsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBiNjogMHgwMGQxLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQotICAgICAgICAweDAwYjc6IDB4MDBmMSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBiODogMHgwMGExLCAjICAgICAgIElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKLSAgICAgICAgMHgwMGI5OiAweDAwYmYsICMgICAgICAgSU5WRVJURUQgUVVFU1RJT04gTUFSSwotICAgICAgICAweDAwYmE6IDB4MDBhNCwgIyAgICAgICBDVVJSRU5DWSBTSUdOCi0gICAgICAgIDB4MDBiYjogMHgwMGEzLCAjICAgICAgIFBPVU5EIFNJR04KLSAgICAgICAgMHgwMGJjOiAweDAwYTUsICMgICAgICAgWUVOIFNJR04KLSAgICAgICAgMHgwMGJkOiAweDAwYTcsICMgICAgICAgU0VDVElPTiBTSUdOCi0gICAgICAgIDB4MDBiZTogMHgwMTkyLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwotICAgICAgICAweDAwYmY6IDB4MDBhMiwgIyAgICAgICBDRU5UIFNJR04KLSAgICAgICAgMHgwMGMwOiAweDAwZTIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBjMTogMHgwMGVhLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYzI6IDB4MDBmNCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGMzOiAweDAwZmIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBjNDogMHgwMGUxLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGM1OiAweDAwZTksICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQotICAgICAgICAweDAwYzY6IDB4MDBmMywgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBjNzogMHgwMGZhLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGM4OiAweDAwZTAsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQotICAgICAgICAweDAwYzk6IDB4MDBlOCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBjYTogMHgwMGYyLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGNiOiAweDAwZjksICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQotICAgICAgICAweDAwY2M6IDB4MDBlNCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwY2Q6IDB4MDBlYiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwY2U6IDB4MDBmNiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwY2Y6IDB4MDBmYywgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZDA6IDB4MDBjNSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQotICAgICAgICAweDAwZDE6IDB4MDBlZSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGQyOiAweDAwZDgsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQotICAgICAgICAweDAwZDM6IDB4MDBjNiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQotICAgICAgICAweDAwZDQ6IDB4MDBlNSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKLSAgICAgICAgMHgwMGQ1OiAweDAwZWQsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQotICAgICAgICAweDAwZDY6IDB4MDBmOCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQotICAgICAgICAweDAwZDc6IDB4MDBlNiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQUUKLSAgICAgICAgMHgwMGQ4OiAweDAwYzQsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZDk6IDB4MDBlYywgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBkYTogMHgwMGQ2LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGRiOiAweDAwZGMsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZGM6IDB4MDBjOSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGRkOiAweDAwZWYsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGRlOiAweDAwZGYsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMgKEdlcm1hbikKLSAgICAgICAgMHgwMGRmOiAweDAwZDQsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGUwOiAweDAwYzEsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlMTogMHgwMGMzLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQotICAgICAgICAweDAwZTI6IDB4MDBlMywgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBlMzogMHgwMGQwLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQotICAgICAgICAweDAwZTQ6IDB4MDBmMCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCi0gICAgICAgIDB4MDBlNTogMHgwMGNkLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQotICAgICAgICAweDAwZTY6IDB4MDBjYywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGU3OiAweDAwZDMsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlODogMHgwMGQyLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQotICAgICAgICAweDAwZTk6IDB4MDBkNSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKLSAgICAgICAgMHgwMGVhOiAweDAwZjUsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQotICAgICAgICAweDAwZWI6IDB4MDE2MCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGVjOiAweDAxNjEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwZWQ6IDB4MDBkYSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGVlOiAweDAxNzgsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZWY6IDB4MDBmZiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZjA6IDB4MDBkZSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQotICAgICAgICAweDAwZjE6IDB4MDBmZSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKLSAgICAgICAgMHgwMGYyOiAweDAwYjcsICMgICAgICAgTUlERExFIERPVAotICAgICAgICAweDAwZjM6IDB4MDBiNSwgIyAgICAgICBNSUNSTyBTSUdOCi0gICAgICAgIDB4MDBmNDogMHgwMGI2LCAjICAgICAgIFBJTENST1cgU0lHTgotICAgICAgICAweDAwZjU6IDB4MDBiZSwgIyAgICAgICBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKLSAgICAgICAgMHgwMGY2OiAweDIwMTQsICMgICAgICAgRU0gREFTSAotICAgICAgICAweDAwZjc6IDB4MDBiYywgIyAgICAgICBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKLSAgICAgICAgMHgwMGY4OiAweDAwYmQsICMgICAgICAgVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCi0gICAgICAgIDB4MDBmOTogMHgwMGFhLCAjICAgICAgIEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCi0gICAgICAgIDB4MDBmYTogMHgwMGJhLCAjICAgICAgIE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgotICAgICAgICAweDAwZmI6IDB4MDBhYiwgIyAgICAgICBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZmM6IDB4MjVhMCwgIyAgICAgICBCTEFDSyBTUVVBUkUKLSAgICAgICAgMHgwMGZkOiAweDAwYmIsICMgICAgICAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBmZTogMHgwMGIxLCAjICAgICAgIFBMVVMtTUlOVVMgU0lHTgotICAgICAgICAweDAwZmY6IE5vbmUsCi19KQorIyMjIERlY29kaW5nIFRhYmxlCiAKLSMjIyBFbmNvZGluZyBNYXAKK2RlY29kaW5nX3RhYmxlID0gKAorICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCisgICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKKyAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAorICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAorICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCisgICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKKyAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKKyAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAorICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKKyAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCisgICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAorICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCisgICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAorICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KKyAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCisgICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCisgICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKKyAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCisgICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTworICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQorICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCisgICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCisgICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKKyAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSworICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKKyAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQorICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCisgICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQorICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgorICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKKyAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgorICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgorICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQorICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCisgICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCisgICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCisgICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCisgICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgorICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKKyAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQorICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCisgICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCisgICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCisgICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgorICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQorICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKKyAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCisgICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKKyAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTworICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKKyAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCisgICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCisgICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKKyAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQorICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKKyAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KKyAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKKyAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQorICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgorICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KKyAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KKyAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KKyAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KKyAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSworICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCisgICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKKyAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCisgICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKKyAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCisgICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKKyAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKKyAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCisgICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KKyAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKKyAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCisgICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKKyAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKKyAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCisgICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKKyAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCisgICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUworICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAorICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQorICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKKyAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKKyAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKKyAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKKyAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKKyAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKKyAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKKyAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKKyAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKKyAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKKyAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKKyAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKKyAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKKyAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KKyAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KKyAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KKyAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKKyAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKKyAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKKyAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKKyAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKKyAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKKyAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKKyAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKKyAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKKyAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKKyAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKKyAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCisgICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKKyAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAorICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQorICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKKyAgICAnXHg4MCcgICAgICMgIDB4ODAgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODEnICAgICAjICAweDgxIC0+IDxjb250cm9sPgorICAgICdceDgyJyAgICAgIyAgMHg4MiAtPiA8Y29udHJvbD4KKyAgICAnXHg4MycgICAgICMgIDB4ODMgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODQnICAgICAjICAweDg0IC0+IDxjb250cm9sPgorICAgICdceDg1JyAgICAgIyAgMHg4NSAtPiA8Y29udHJvbD4KKyAgICAnXHg4NicgICAgICMgIDB4ODYgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODcnICAgICAjICAweDg3IC0+IDxjb250cm9sPgorICAgICdceDg4JyAgICAgIyAgMHg4OCAtPiA8Y29udHJvbD4KKyAgICAnXHg4OScgICAgICMgIDB4ODkgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGEnICAgICAjICAweDhBIC0+IDxjb250cm9sPgorICAgICdceDhiJyAgICAgIyAgMHg4QiAtPiA8Y29udHJvbD4KKyAgICAnXHg4YycgICAgICMgIDB4OEMgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGQnICAgICAjICAweDhEIC0+IDxjb250cm9sPgorICAgICdceDhlJyAgICAgIyAgMHg4RSAtPiA8Y29udHJvbD4KKyAgICAnXHg4ZicgICAgICMgIDB4OEYgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTAnICAgICAjICAweDkwIC0+IDxjb250cm9sPgorICAgICdceDkxJyAgICAgIyAgMHg5MSAtPiA8Y29udHJvbD4KKyAgICAnXHg5MicgICAgICMgIDB4OTIgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTMnICAgICAjICAweDkzIC0+IDxjb250cm9sPgorICAgICdceDk0JyAgICAgIyAgMHg5NCAtPiA8Y29udHJvbD4KKyAgICAnXHg5NScgICAgICMgIDB4OTUgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTYnICAgICAjICAweDk2IC0+IDxjb250cm9sPgorICAgICdceDk3JyAgICAgIyAgMHg5NyAtPiA8Y29udHJvbD4KKyAgICAnXHg5OCcgICAgICMgIDB4OTggLT4gPGNvbnRyb2w+CisgICAgJ1x4OTknICAgICAjICAweDk5IC0+IDxjb250cm9sPgorICAgICdceDlhJyAgICAgIyAgMHg5QSAtPiA8Y29udHJvbD4KKyAgICAnXHg5YicgICAgICMgIDB4OUIgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWMnICAgICAjICAweDlDIC0+IDxjb250cm9sPgorICAgICdceDlkJyAgICAgIyAgMHg5RCAtPiA8Y29udHJvbD4KKyAgICAnXHg5ZScgICAgICMgIDB4OUUgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWYnICAgICAjICAweDlGIC0+IDxjb250cm9sPgorICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdceGMwJyAgICAgIyAgMHhBMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKKyAgICAnXHhjMicgICAgICMgIDB4QTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjOCcgICAgICMgIDB4QTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCisgICAgJ1x4Y2EnICAgICAjICAweEE0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4Y2InICAgICAjICAweEE1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhjZScgICAgICMgIDB4QTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjZicgICAgICMgIDB4QTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworICAgICdceGI0JyAgICAgIyAgMHhBOCAtPiBBQ1VURSBBQ0NFTlQKKyAgICAnXHUwMmNiJyAgICMgIDB4QTkgLT4gTU9ESUZJRVIgTEVUVEVSIEdSQVZFIEFDQ0VOVCAoTUFOREFSSU4gQ0hJTkVTRSBGT1VSVEggVE9ORSkKKyAgICAnXHUwMmM2JyAgICMgIDB4QUEgLT4gTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCisgICAgJ1x4YTgnICAgICAjICAweEFCIC0+IERJQUVSRVNJUworICAgICdcdTAyZGMnICAgIyAgMHhBQyAtPiBTTUFMTCBUSUxERQorICAgICdceGQ5JyAgICAgIyAgMHhBRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKKyAgICAnXHhkYicgICAgICMgIDB4QUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHUyMGE0JyAgICMgIDB4QUYgLT4gTElSQSBTSUdOCisgICAgJ1x4YWYnICAgICAjICAweEIwIC0+IE1BQ1JPTgorICAgICdceGRkJyAgICAgIyAgMHhCMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKKyAgICAnXHhmZCcgICAgICMgIDB4QjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGIwJyAgICAgIyAgMHhCMyAtPiBERUdSRUUgU0lHTgorICAgICdceGM3JyAgICAgIyAgMHhCNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorICAgICdceGU3JyAgICAgIyAgMHhCNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKKyAgICAnXHhkMScgICAgICMgIDB4QjYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCisgICAgJ1x4ZjEnICAgICAjICAweEI3IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKKyAgICAnXHhhMScgICAgICMgIDB4QjggLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSworICAgICdceGJmJyAgICAgIyAgMHhCOSAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCisgICAgJ1x4YTQnICAgICAjICAweEJBIC0+IENVUlJFTkNZIFNJR04KKyAgICAnXHhhMycgICAgICMgIDB4QkIgLT4gUE9VTkQgU0lHTgorICAgICdceGE1JyAgICAgIyAgMHhCQyAtPiBZRU4gU0lHTgorICAgICdceGE3JyAgICAgIyAgMHhCRCAtPiBTRUNUSU9OIFNJR04KKyAgICAnXHUwMTkyJyAgICMgIDB4QkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCisgICAgJ1x4YTInICAgICAjICAweEJGIC0+IENFTlQgU0lHTgorICAgICdceGUyJyAgICAgIyAgMHhDMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhlYScgICAgICMgIDB4QzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZjQnICAgICAjICAweEMyIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGZiJyAgICAgIyAgMHhDMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhlMScgICAgICMgIDB4QzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdceGU5JyAgICAgIyAgMHhDNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x4ZjMnICAgICAjICAweEM2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKKyAgICAnXHhmYScgICAgICMgIDB4QzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdceGUwJyAgICAgIyAgMHhDOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCisgICAgJ1x4ZTgnICAgICAjICAweEM5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKKyAgICAnXHhmMicgICAgICMgIDB4Q0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQorICAgICdceGY5JyAgICAgIyAgMHhDQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCisgICAgJ1x4ZTQnICAgICAjICAweENDIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZWInICAgICAjICAweENEIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZjYnICAgICAjICAweENFIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZmMnICAgICAjICAweENGIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YzUnICAgICAjICAweEQwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4ZWUnICAgICAjICAweEQxIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGQ4JyAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCisgICAgJ1x4YzYnICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEFFCisgICAgJ1x4ZTUnICAgICAjICAweEQ0IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQorICAgICdceGVkJyAgICAgIyAgMHhENSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x4ZjgnICAgICAjICAweEQ2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCisgICAgJ1x4ZTYnICAgICAjICAweEQ3IC0+IExBVElOIFNNQUxMIExFVFRFUiBBRQorICAgICdceGM0JyAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZWMnICAgICAjICAweEQ5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKKyAgICAnXHhkNicgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGRjJyAgICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YzknICAgICAjICAweERDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQorICAgICdceGVmJyAgICAgIyAgMHhERCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworICAgICdceGRmJyAgICAgIyAgMHhERSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR0VSTUFOKQorICAgICdceGQ0JyAgICAgIyAgMHhERiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGMxJyAgICAgIyAgMHhFMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKKyAgICAnXHhjMycgICAgICMgIDB4RTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCisgICAgJ1x4ZTMnICAgICAjICAweEUyIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKKyAgICAnXHhkMCcgICAgICMgIDB4RTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIIChJQ0VMQU5ESUMpCisgICAgJ1x4ZjAnICAgICAjICAweEU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBFVEggKElDRUxBTkRJQykKKyAgICAnXHhjZCcgICAgICMgIDB4RTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x4Y2MnICAgICAjICAweEU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQorICAgICdceGQzJyAgICAgIyAgMHhFNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKKyAgICAnXHhkMicgICAgICMgIDB4RTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCisgICAgJ1x4ZDUnICAgICAjICAweEU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdceGY1JyAgICAgIyAgMHhFQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x1MDE2MCcgICAjICAweEVCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdcdTAxNjEnICAgIyAgMHhFQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCisgICAgJ1x4ZGEnICAgICAjICAweEVEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdcdTAxNzgnICAgIyAgMHhFRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZmYnICAgICAjICAweEVGIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGUnICAgICAjICAweEYwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOIChJQ0VMQU5ESUMpCisgICAgJ1x4ZmUnICAgICAjICAweEYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSUNFTEFORElDKQorICAgICdceGI3JyAgICAgIyAgMHhGMiAtPiBNSURETEUgRE9UCisgICAgJ1x4YjUnICAgICAjICAweEYzIC0+IE1JQ1JPIFNJR04KKyAgICAnXHhiNicgICAgICMgIDB4RjQgLT4gUElMQ1JPVyBTSUdOCisgICAgJ1x4YmUnICAgICAjICAweEY1IC0+IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUworICAgICdcdTIwMTQnICAgIyAgMHhGNiAtPiBFTSBEQVNICisgICAgJ1x4YmMnICAgICAjICAweEY3IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgorICAgICdceGJkJyAgICAgIyAgMHhGOCAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKKyAgICAnXHhhYScgICAgICMgIDB4RjkgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKKyAgICAnXHhiYScgICAgICMgIDB4RkEgLT4gTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCisgICAgJ1x4YWInICAgICAjICAweEZCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjVhMCcgICAjICAweEZDIC0+IEJMQUNLIFNRVUFSRQorICAgICdceGJiJyAgICAgIyAgMHhGRCAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhiMScgICAgICMgIDB4RkUgLT4gUExVUy1NSU5VUyBTSUdOCisgICAgJ1x1ZmZmZScKKykKIAotZW5jb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCkKKyMjIyBFbmNvZGluZyB0YWJsZQorZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2lkbmEucHkgYi9MaWIvZW5jb2RpbmdzL2lkbmEucHkKaW5kZXggNTgzYmRmMS4uZWE0MDU4NSAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9pZG5hLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvaWRuYS5weQpAQCAtMTUzLDYgKzE1MywyMCBAQAogICAgICAgICBpZiBub3QgaW5wdXQ6CiAgICAgICAgICAgICByZXR1cm4gYicnLCAwCiAKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzdWx0ID0gaW5wdXQuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFTQ0lJIG5hbWU6IGZhc3QgcGF0aAorICAgICAgICAgICAgbGFiZWxzID0gcmVzdWx0LnNwbGl0KGInLicpCisgICAgICAgICAgICBmb3IgbGFiZWwgaW4gbGFiZWxzWzotMV06CisgICAgICAgICAgICAgICAgaWYgbm90ICgwIDwgbGVuKGxhYmVsKSA8IDY0KToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJsYWJlbCBlbXB0eSBvciB0b28gbG9uZyIpCisgICAgICAgICAgICBpZiBsZW4obGFiZWxzWy0xXSkgPj0gNjQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJsYWJlbCB0b28gbG9uZyIpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LCBsZW4oaW5wdXQpCisKICAgICAgICAgcmVzdWx0ID0gYnl0ZWFycmF5KCkKICAgICAgICAgbGFiZWxzID0gZG90cy5zcGxpdChpbnB1dCkKICAgICAgICAgaWYgbGFiZWxzIGFuZCBub3QgbGFiZWxzWy0xXToKQEAgLTE3OSw2ICsxOTMsMTQgQEAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaW5wdXQsIGJ5dGVzKToKICAgICAgICAgICAgICMgWFhYIG9idmlvdXNseSB3cm9uZywgc2VlICMzMjMyCiAgICAgICAgICAgICBpbnB1dCA9IGJ5dGVzKGlucHV0KQorCisgICAgICAgIGlmIGFjZV9wcmVmaXggbm90IGluIGlucHV0OgorICAgICAgICAgICAgIyBGYXN0IHBhdGgKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXQuZGVjb2RlKCdhc2NpaScpLCBsZW4oaW5wdXQpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKwogICAgICAgICBsYWJlbHMgPSBpbnB1dC5zcGxpdChiIi4iKQogCiAgICAgICAgIGlmIGxhYmVscyBhbmQgbGVuKGxhYmVsc1stMV0pID09IDA6CmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2lzbzg4NTlfMS5weSBiL0xpYi9lbmNvZGluZ3MvaXNvODg1OV8xLnB5CmluZGV4IDhjZmMwMWYuLmQ5Y2M1MTYgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvaXNvODg1OV8xLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvaXNvODg1OV8xLnB5CkBAIC0zMDEsNiArMzAxLDcgQEAKICAgICAnXHhmZCcgICAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgICdceGZlJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKICAgICAnXHhmZicgICAgICMgIDB4RkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHVmZmZlJyAgICMjIFdpZGVuIHRvIFVDUzIgZm9yIG9wdGltaXphdGlvbgogKQogCiAjIyMgRW5jb2RpbmcgdGFibGUKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvbWFjX2xhdGluMi5weSBiL0xpYi9lbmNvZGluZ3MvbWFjX2xhdGluMi5weQppbmRleCBlMzIyYmUyLi5kYTlkNGIxIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL21hY19sYXRpbjIucHkKKysrIGIvTGliL2VuY29kaW5ncy9tYWNfbGF0aW4yLnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBnZW5lcmF0ZWQgZnJvbSAnTEFUSU4yLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KKyIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgbWFjX2xhdGluMiBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9NSUNTRlQvTUFDL0xBVElOMi5UWFQnIHdpdGggZ2VuY29kZWMucHkuCiAKIFdyaXR0ZW4gYnkgTWFyYy1BbmRyZSBMZW1idXJnIChtYWxAbGVtYnVyZy5jb20pLgogCkBAIC0xNCwxOCArMTQsMTggQEAKIGNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAKICAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKIAogICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQogCiBjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBwYXNzCkBAIC00NiwxMzggKzQ2LDI2NyBAQAogICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgICkKIAotIyMjIERlY29kaW5nIE1hcAogCi1kZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCi1kZWNvZGluZ19tYXAudXBkYXRlKHsKLSAgICAgICAgMHgwMDgwOiAweDAwYzQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwODE6IDB4MDEwMCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA4MjogMHgwMTAxLCAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA4MzogMHgwMGM5LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQotICAgICAgICAweDAwODQ6IDB4MDEwNCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDA4NTogMHgwMGQ2LCAjIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMDg2OiAweDAwZGMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwODc6IDB4MDBlMSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA4ODogMHgwMTA1LCAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDA4OTogMHgwMTBjLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTgotICAgICAgICAweDAwOGE6IDB4MDBlNCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwOGI6IDB4MDEwZCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA4YzogMHgwMTA2LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBBQ1VURQotICAgICAgICAweDAwOGQ6IDB4MDEwNywgIyBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA4ZTogMHgwMGU5LCAjIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDhmOiAweDAxNzksICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA5MDogMHgwMTdhLCAjIExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDkxOiAweDAxMGUsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA5MjogMHgwMGVkLCAjIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDkzOiAweDAxMGYsICMgTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDQVJPTgotICAgICAgICAweDAwOTQ6IDB4MDExMiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA5NTogMHgwMTEzLCAjIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA5NjogMHgwMTE2LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKLSAgICAgICAgMHgwMDk3OiAweDAwZjMsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQotICAgICAgICAweDAwOTg6IDB4MDExNywgIyBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQotICAgICAgICAweDAwOTk6IDB4MDBmNCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMDlhOiAweDAwZjYsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMDliOiAweDAwZjUsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQotICAgICAgICAweDAwOWM6IDB4MDBmYSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA5ZDogMHgwMTFhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDQVJPTgotICAgICAgICAweDAwOWU6IDB4MDExYiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA5ZjogMHgwMGZjLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBhMDogMHgyMDIwLCAjIERBR0dFUgotICAgICAgICAweDAwYTE6IDB4MDBiMCwgIyBERUdSRUUgU0lHTgotICAgICAgICAweDAwYTI6IDB4MDExOCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBhNDogMHgwMGE3LCAjIFNFQ1RJT04gU0lHTgotICAgICAgICAweDAwYTU6IDB4MjAyMiwgIyBCVUxMRVQKLSAgICAgICAgMHgwMGE2OiAweDAwYjYsICMgUElMQ1JPVyBTSUdOCi0gICAgICAgIDB4MDBhNzogMHgwMGRmLCAjIExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCi0gICAgICAgIDB4MDBhODogMHgwMGFlLCAjIFJFR0lTVEVSRUQgU0lHTgotICAgICAgICAweDAwYWE6IDB4MjEyMiwgIyBUUkFERSBNQVJLIFNJR04KLSAgICAgICAgMHgwMGFiOiAweDAxMTksICMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGFjOiAweDAwYTgsICMgRElBRVJFU0lTCi0gICAgICAgIDB4MDBhZDogMHgyMjYwLCAjIE5PVCBFUVVBTCBUTwotICAgICAgICAweDAwYWU6IDB4MDEyMywgIyBMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGFmOiAweDAxMmUsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE9HT05FSwotICAgICAgICAweDAwYjA6IDB4MDEyZiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE9HT05FSwotICAgICAgICAweDAwYjE6IDB4MDEyYSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDBiMjogMHgyMjY0LCAjIExFU1MtVEhBTiBPUiBFUVVBTCBUTwotICAgICAgICAweDAwYjM6IDB4MjI2NSwgIyBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KLSAgICAgICAgMHgwMGI0OiAweDAxMmIsICMgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGI1OiAweDAxMzYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGI2OiAweDIyMDIsICMgUEFSVElBTCBESUZGRVJFTlRJQUwKLSAgICAgICAgMHgwMGI3OiAweDIyMTEsICMgTi1BUlkgU1VNTUFUSU9OCi0gICAgICAgIDB4MDBiODogMHgwMTQyLCAjIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBiOTogMHgwMTNiLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBiYTogMHgwMTNjLCAjIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYmI6IDB4MDEzZCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGJjOiAweDAxM2UsICMgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDQVJPTgotICAgICAgICAweDAwYmQ6IDB4MDEzOSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGJlOiAweDAxM2EsICMgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBBQ1VURQotICAgICAgICAweDAwYmY6IDB4MDE0NSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYzA6IDB4MDE0NiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGMxOiAweDAxNDMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBjMjogMHgwMGFjLCAjIE5PVCBTSUdOCi0gICAgICAgIDB4MDBjMzogMHgyMjFhLCAjIFNRVUFSRSBST09UCi0gICAgICAgIDB4MDBjNDogMHgwMTQ0LCAjIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGM1OiAweDAxNDcsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBjNjogMHgyMjA2LCAjIElOQ1JFTUVOVAotICAgICAgICAweDAwYzc6IDB4MDBhYiwgIyBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwYzg6IDB4MDBiYiwgIyBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGM5OiAweDIwMjYsICMgSE9SSVpPTlRBTCBFTExJUFNJUwotICAgICAgICAweDAwY2E6IDB4MDBhMCwgIyBOTy1CUkVBSyBTUEFDRQotICAgICAgICAweDAwY2I6IDB4MDE0OCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBjYzogMHgwMTUwLCAjIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKLSAgICAgICAgMHgwMGNkOiAweDAwZDUsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBjZTogMHgwMTUxLCAjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFCi0gICAgICAgIDB4MDBjZjogMHgwMTRjLCAjIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGQwOiAweDIwMTMsICMgRU4gREFTSAotICAgICAgICAweDAwZDE6IDB4MjAxNCwgIyBFTSBEQVNICi0gICAgICAgIDB4MDBkMjogMHgyMDFjLCAjIExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkMzogMHgyMDFkLCAjIFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZDQ6IDB4MjAxOCwgIyBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZDU6IDB4MjAxOSwgIyBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGQ2OiAweDAwZjcsICMgRElWSVNJT04gU0lHTgotICAgICAgICAweDAwZDc6IDB4MjVjYSwgIyBMT1pFTkdFCi0gICAgICAgIDB4MDBkODogMHgwMTRkLCAjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDBkOTogMHgwMTU0LCAjIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURQotICAgICAgICAweDAwZGE6IDB4MDE1NSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBkYjogMHgwMTU4LCAjIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDQVJPTgotICAgICAgICAweDAwZGM6IDB4MjAzOSwgIyBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZGQ6IDB4MjAzYSwgIyBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGRlOiAweDAxNTksICMgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDQVJPTgotICAgICAgICAweDAwZGY6IDB4MDE1NiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwZTA6IDB4MDE1NywgIyBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGUxOiAweDAxNjAsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlMjogMHgyMDFhLCAjIFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZTM6IDB4MjAxZSwgIyBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGU0OiAweDAxNjEsICMgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwZTU6IDB4MDE1YSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGU2OiAweDAxNWIsICMgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURQotICAgICAgICAweDAwZTc6IDB4MDBjMSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGU4OiAweDAxNjQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlOTogMHgwMTY1LCAjIExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGVhOiAweDAwY2QsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlYjogMHgwMTdkLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgotICAgICAgICAweDAwZWM6IDB4MDE3ZSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlZDogMHgwMTZhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGVlOiAweDAwZDMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlZjogMHgwMGQ0LCAjIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBmMDogMHgwMTZiLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDBmMTogMHgwMTZlLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCi0gICAgICAgIDB4MDBmMjogMHgwMGRhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQotICAgICAgICAweDAwZjM6IDB4MDE2ZiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkUKLSAgICAgICAgMHgwMGY0OiAweDAxNzAsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQotICAgICAgICAweDAwZjU6IDB4MDE3MSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQotICAgICAgICAweDAwZjY6IDB4MDE3MiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBmNzogMHgwMTczLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBmODogMHgwMGRkLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQotICAgICAgICAweDAwZjk6IDB4MDBmZCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBmYTogMHgwMTM3LCAjIExBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwZmI6IDB4MDE3YiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCi0gICAgICAgIDB4MDBmYzogMHgwMTQxLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMGZkOiAweDAxN2MsICMgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKLSAgICAgICAgMHgwMGZlOiAweDAxMjIsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGZmOiAweDAyYzcsICMgQ0FST04KLX0pCisjIyMgRGVjb2RpbmcgVGFibGUKIAotIyMjIEVuY29kaW5nIE1hcAorZGVjb2RpbmdfdGFibGUgPSAoCisgICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKKyAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORworICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCisgICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCisgICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KKyAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQorICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQorICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCisgICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQorICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KKyAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECisgICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KKyAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECisgICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgorICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKKyAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KKyAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQorICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKKyAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCisgICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCisgICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKKyAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKKyAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQorICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCisgICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAorICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCisgICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKKyAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCisgICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCisgICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgorICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCisgICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCisgICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCisgICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKKyAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KKyAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KKyAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCisgICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAorICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCisgICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKKyAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKKyAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKKyAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCisgICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCisgICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUworICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKKyAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUworICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCisgICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQorICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KKyAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKKyAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgorICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCisgICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAorICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgorICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAorICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCisgICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCisgICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgorICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgorICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgorICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgorICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCisgICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKKyAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCisgICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKKyAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCisgICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKKyAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRworICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICisgICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKKyAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCisgICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKKyAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQorICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCisgICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KKyAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAorICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCisgICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKKyAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUworICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCisgICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKKyAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgorICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCisgICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKKyAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQorICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCisgICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKKyAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCisgICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCisgICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCisgICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCisgICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAorICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQorICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgorICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQworICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAorICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQorICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgorICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRworICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAorICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQorICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgorICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSworICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAorICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQorICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgorICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTworICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAorICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQorICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgorICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUworICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAorICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQorICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgorICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVworICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAorICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQorICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgorICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKKyAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQorICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCisgICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCisgICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQorICAgICdceGM0JyAgICAgIyAgMHg4MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x1MDEwMCcgICAjICAweDgxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KKyAgICAnXHUwMTAxJyAgICMgIDB4ODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBNQUNST04KKyAgICAnXHhjOScgICAgICMgIDB4ODMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x1MDEwNCcgICAjICAweDg0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUsKKyAgICAnXHhkNicgICAgICMgIDB4ODUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGRjJyAgICAgIyAgMHg4NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZTEnICAgICAjICAweDg3IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKKyAgICAnXHUwMTA1JyAgICMgIDB4ODggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKKyAgICAnXHUwMTBjJyAgICMgIDB4ODkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OCisgICAgJ1x4ZTQnICAgICAjICAweDhBIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x1MDEwZCcgICAjICAweDhCIC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KKyAgICAnXHUwMTA2JyAgICMgIDB4OEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEFDVVRFCisgICAgJ1x1MDEwNycgICAjICAweDhEIC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEUKKyAgICAnXHhlOScgICAgICMgIDB4OEUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQorICAgICdcdTAxNzknICAgIyAgMHg4RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQUNVVEUKKyAgICAnXHUwMTdhJyAgICMgIDB4OTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBBQ1VURQorICAgICdcdTAxMGUnICAgIyAgMHg5MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0FST04KKyAgICAnXHhlZCcgICAgICMgIDB4OTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQorICAgICdcdTAxMGYnICAgIyAgMHg5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENBUk9OCisgICAgJ1x1MDExMicgICAjICAweDk0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04KKyAgICAnXHUwMTEzJyAgICMgIDB4OTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04KKyAgICAnXHUwMTE2JyAgICMgIDB4OTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQorICAgICdceGYzJyAgICAgIyAgMHg5NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCisgICAgJ1x1MDExNycgICAjICAweDk4IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCisgICAgJ1x4ZjQnICAgICAjICAweDk5IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGY2JyAgICAgIyAgMHg5QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGY1JyAgICAgIyAgMHg5QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x4ZmEnICAgICAjICAweDlDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKKyAgICAnXHUwMTFhJyAgICMgIDB4OUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENBUk9OCisgICAgJ1x1MDExYicgICAjICAweDlFIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0FST04KKyAgICAnXHhmYycgICAgICMgIDB4OUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHUyMDIwJyAgICMgIDB4QTAgLT4gREFHR0VSCisgICAgJ1x4YjAnICAgICAjICAweEExIC0+IERFR1JFRSBTSUdOCisgICAgJ1x1MDExOCcgICAjICAweEEyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUsKKyAgICAnXHhhMycgICAgICMgIDB4QTMgLT4gUE9VTkQgU0lHTgorICAgICdceGE3JyAgICAgIyAgMHhBNCAtPiBTRUNUSU9OIFNJR04KKyAgICAnXHUyMDIyJyAgICMgIDB4QTUgLT4gQlVMTEVUCisgICAgJ1x4YjYnICAgICAjICAweEE2IC0+IFBJTENST1cgU0lHTgorICAgICdceGRmJyAgICAgIyAgMHhBNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUworICAgICdceGFlJyAgICAgIyAgMHhBOCAtPiBSRUdJU1RFUkVEIFNJR04KKyAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KKyAgICAnXHUyMTIyJyAgICMgIDB4QUEgLT4gVFJBREUgTUFSSyBTSUdOCisgICAgJ1x1MDExOScgICAjICAweEFCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggT0dPTkVLCisgICAgJ1x4YTgnICAgICAjICAweEFDIC0+IERJQUVSRVNJUworICAgICdcdTIyNjAnICAgIyAgMHhBRCAtPiBOT1QgRVFVQUwgVE8KKyAgICAnXHUwMTIzJyAgICMgIDB4QUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDRURJTExBCisgICAgJ1x1MDEyZScgICAjICAweEFGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBPR09ORUsKKyAgICAnXHUwMTJmJyAgICMgIDB4QjAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBPR09ORUsKKyAgICAnXHUwMTJhJyAgICMgIDB4QjEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgorICAgICdcdTIyNjQnICAgIyAgMHhCMiAtPiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KKyAgICAnXHUyMjY1JyAgICMgIDB4QjMgLT4gR1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPCisgICAgJ1x1MDEyYicgICAjICAweEI0IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x1MDEzNicgICAjICAweEI1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDRURJTExBCisgICAgJ1x1MjIwMicgICAjICAweEI2IC0+IFBBUlRJQUwgRElGRkVSRU5USUFMCisgICAgJ1x1MjIxMScgICAjICAweEI3IC0+IE4tQVJZIFNVTU1BVElPTgorICAgICdcdTAxNDInICAgIyAgMHhCOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQorICAgICdcdTAxM2InICAgIyAgMHhCOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0VESUxMQQorICAgICdcdTAxM2MnICAgIyAgMHhCQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENFRElMTEEKKyAgICAnXHUwMTNkJyAgICMgIDB4QkIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENBUk9OCisgICAgJ1x1MDEzZScgICAjICAweEJDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0FST04KKyAgICAnXHUwMTM5JyAgICMgIDB4QkQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIEFDVVRFCisgICAgJ1x1MDEzYScgICAjICAweEJFIC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQUNVVEUKKyAgICAnXHUwMTQ1JyAgICMgIDB4QkYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENFRElMTEEKKyAgICAnXHUwMTQ2JyAgICMgIDB4QzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDRURJTExBCisgICAgJ1x1MDE0MycgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBBQ1VURQorICAgICdceGFjJyAgICAgIyAgMHhDMiAtPiBOT1QgU0lHTgorICAgICdcdTIyMWEnICAgIyAgMHhDMyAtPiBTUVVBUkUgUk9PVAorICAgICdcdTAxNDQnICAgIyAgMHhDNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIEFDVVRFCisgICAgJ1x1MDE0NycgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDQVJPTgorICAgICdcdTIyMDYnICAgIyAgMHhDNiAtPiBJTkNSRU1FTlQKKyAgICAnXHhhYicgICAgICMgIDB4QzcgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhiYicgICAgICMgIDB4QzggLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyNicgICAjICAweEM5IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKKyAgICAnXHhhMCcgICAgICMgIDB4Q0EgLT4gTk8tQlJFQUsgU1BBQ0UKKyAgICAnXHUwMTQ4JyAgICMgIDB4Q0IgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDQVJPTgorICAgICdcdTAxNTAnICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFCisgICAgJ1x4ZDUnICAgICAjICAweENEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdcdTAxNTEnICAgIyAgMHhDRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQorICAgICdcdTAxNGMnICAgIyAgMHhDRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OCisgICAgJ1x1MjAxMycgICAjICAweEQwIC0+IEVOIERBU0gKKyAgICAnXHUyMDE0JyAgICMgIDB4RDEgLT4gRU0gREFTSAorICAgICdcdTIwMWMnICAgIyAgMHhEMiAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWQnICAgIyAgMHhEMyAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDE4JyAgICMgIDB4RDQgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDE5JyAgICMgIDB4RDUgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4ZjcnICAgICAjICAweEQ2IC0+IERJVklTSU9OIFNJR04KKyAgICAnXHUyNWNhJyAgICMgIDB4RDcgLT4gTE9aRU5HRQorICAgICdcdTAxNGQnICAgIyAgMHhEOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgorICAgICdcdTAxNTQnICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQUNVVEUKKyAgICAnXHUwMTU1JyAgICMgIDB4REEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURQorICAgICdcdTAxNTgnICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0FST04KKyAgICAnXHUyMDM5JyAgICMgIDB4REMgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDNhJyAgICMgIDB4REQgLT4gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDE1OScgICAjICAweERFIC0+IExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0FST04KKyAgICAnXHUwMTU2JyAgICMgIDB4REYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENFRElMTEEKKyAgICAnXHUwMTU3JyAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDRURJTExBCisgICAgJ1x1MDE2MCcgICAjICAweEUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdcdTIwMWEnICAgIyAgMHhFMiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFlJyAgICMgIDB4RTMgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDE2MScgICAjICAweEU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KKyAgICAnXHUwMTVhJyAgICMgIDB4RTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFCisgICAgJ1x1MDE1YicgICAjICAweEU2IC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEUKKyAgICAnXHhjMScgICAgICMgIDB4RTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgICAgJ1x1MDE2NCcgICAjICAweEU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDQVJPTgorICAgICdcdTAxNjUnICAgIyAgMHhFOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENBUk9OCisgICAgJ1x4Y2QnICAgICAjICAweEVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQorICAgICdcdTAxN2QnICAgIyAgMHhFQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQ0FST04KKyAgICAnXHUwMTdlJyAgICMgIDB4RUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBDQVJPTgorICAgICdcdTAxNmEnICAgIyAgMHhFRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x4ZDMnICAgICAjICAweEVFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGQ0JyAgICAgIyAgMHhFRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorICAgICdcdTAxNmInICAgIyAgMHhGMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgorICAgICdcdTAxNmUnICAgIyAgMHhGMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQorICAgICdceGRhJyAgICAgIyAgMHhGMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKKyAgICAnXHUwMTZmJyAgICMgIDB4RjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x1MDE3MCcgICAjICAweEY0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKKyAgICAnXHUwMTcxJyAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKKyAgICAnXHUwMTcyJyAgICMgIDB4RjYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE9HT05FSworICAgICdcdTAxNzMnICAgIyAgMHhGNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSworICAgICdceGRkJyAgICAgIyAgMHhGOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKKyAgICAnXHhmZCcgICAgICMgIDB4RjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdcdTAxMzcnICAgIyAgMHhGQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENFRElMTEEKKyAgICAnXHUwMTdiJyAgICMgIDB4RkIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQorICAgICdcdTAxNDEnICAgIyAgMHhGQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU1RST0tFCisgICAgJ1x1MDE3YycgICAjICAweEZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCisgICAgJ1x1MDEyMicgICAjICAweEZFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDRURJTExBCisgICAgJ1x1MDJjNycgICAjICAweEZGIC0+IENBUk9OCispCiAKLWVuY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2VuY29kaW5nX21hcChkZWNvZGluZ19tYXApCisjIyMgRW5jb2RpbmcgdGFibGUKK2VuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9wYWxtb3MucHkgYi9MaWIvZW5jb2RpbmdzL3BhbG1vcy5weQppbmRleCA0Yjc3ZTJiLi5jNTA2ZDY1IDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL3BhbG1vcy5weQorKysgYi9MaWIvZW5jb2RpbmdzL3BhbG1vcy5weQpAQCAtMTAsMTggKzEwLDE4IEBACiAKIGNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAgICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCiAKICAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKIAogY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICAgcGFzcwpAQCAtNDIsNDIgKzQyLDI2NyBAQAogICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgICkKIAotIyMjIERlY29kaW5nIE1hcAogCi1kZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCisjIyMgRGVjb2RpbmcgVGFibGUKIAotIyBUaGUgUGFsbU9TIGNoYXJhY3RlciBzZXQgaXMgbW9zdGx5IGlzby04ODU5LTEgd2l0aCBzb21lIGRpZmZlcmVuY2VzLgotZGVjb2RpbmdfbWFwLnVwZGF0ZSh7Ci0gICAgICAgIDB4MDA4MDogMHgyMGFjLCAjICAgICAgIEVVUk8gU0lHTgotICAgICAgICAweDAwODI6IDB4MjAxYSwgIyAgICAgICBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDgzOiAweDAxOTIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCi0gICAgICAgIDB4MDA4NDogMHgyMDFlLCAjICAgICAgIERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwODU6IDB4MjAyNiwgIyAgICAgICBIT1JJWk9OVEFMIEVMTElQU0lTCi0gICAgICAgIDB4MDA4NjogMHgyMDIwLCAjICAgICAgIERBR0dFUgotICAgICAgICAweDAwODc6IDB4MjAyMSwgIyAgICAgICBET1VCTEUgREFHR0VSCi0gICAgICAgIDB4MDA4ODogMHgwMmM2LCAjICAgICAgIE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAotICAgICAgICAweDAwODk6IDB4MjAzMCwgIyAgICAgICBQRVIgTUlMTEUgU0lHTgotICAgICAgICAweDAwOGE6IDB4MDE2MCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDhiOiAweDIwMzksICMgICAgICAgU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDhjOiAweDAxNTIsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBPRQotICAgICAgICAweDAwOGQ6IDB4MjY2NiwgIyAgICAgICBCTEFDSyBESUFNT05EIFNVSVQKLSAgICAgICAgMHgwMDhlOiAweDI2NjMsICMgICAgICAgQkxBQ0sgQ0xVQiBTVUlUCi0gICAgICAgIDB4MDA4ZjogMHgyNjY1LCAjICAgICAgIEJMQUNLIEhFQVJUIFNVSVQKLSAgICAgICAgMHgwMDkwOiAweDI2NjAsICMgICAgICAgQkxBQ0sgU1BBREUgU1VJVAotICAgICAgICAweDAwOTE6IDB4MjAxOCwgIyAgICAgICBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTI6IDB4MjAxOSwgIyAgICAgICBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDkzOiAweDIwMWMsICMgICAgICAgTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDk0OiAweDIwMWQsICMgICAgICAgUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5NTogMHgyMDIyLCAjICAgICAgIEJVTExFVAotICAgICAgICAweDAwOTY6IDB4MjAxMywgIyAgICAgICBFTiBEQVNICi0gICAgICAgIDB4MDA5NzogMHgyMDE0LCAjICAgICAgIEVNIERBU0gKLSAgICAgICAgMHgwMDk4OiAweDAyZGMsICMgICAgICAgU01BTEwgVElMREUKLSAgICAgICAgMHgwMDk5OiAweDIxMjIsICMgICAgICAgVFJBREUgTUFSSyBTSUdOCi0gICAgICAgIDB4MDA5YTogMHgwMTYxLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDljOiAweDAxNTMsICMgICAgICAgTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKLSAgICAgICAgMHgwMDlmOiAweDAxNzgsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwotfSkKK2RlY29kaW5nX3RhYmxlID0gKAorICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCisgICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKKyAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAorICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAorICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCisgICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKKyAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKKyAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAorICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKKyAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCisgICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAorICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCisgICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAorICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KKyAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCisgICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCisgICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKKyAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCisgICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTworICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQorICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCisgICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCisgICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKKyAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSworICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKKyAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQorICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCisgICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQorICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgorICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKKyAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgorICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgorICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQorICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCisgICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCisgICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCisgICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCisgICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgorICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKKyAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQorICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCisgICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCisgICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCisgICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgorICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQorICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKKyAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCisgICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKKyAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTworICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKKyAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCisgICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCisgICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKKyAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQorICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKKyAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KKyAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKKyAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQorICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgorICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KKyAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KKyAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KKyAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KKyAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSworICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCisgICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKKyAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCisgICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKKyAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCisgICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKKyAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKKyAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCisgICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KKyAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKKyAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCisgICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKKyAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKKyAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCisgICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKKyAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCisgICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUworICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAorICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQorICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKKyAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKKyAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKKyAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKKyAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKKyAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKKyAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKKyAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKKyAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKKyAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKKyAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKKyAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKKyAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKKyAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KKyAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KKyAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KKyAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKKyAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKKyAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKKyAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKKyAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKKyAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKKyAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKKyAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKKyAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKKyAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKKyAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKKyAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCisgICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKKyAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAorICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQorICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKKyAgICAnXHUyMGFjJyAgICMgIDB4ODAgLT4gRVVSTyBTSUdOCisgICAgJ1x4ODEnICAgICAjICAweDgxIC0+IDxjb250cm9sPgorICAgICdcdTIwMWEnICAgIyAgMHg4MiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwMTkyJyAgICMgIDB4ODMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCisgICAgJ1x1MjAxZScgICAjICAweDg0IC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjYnICAgIyAgMHg4NSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCisgICAgJ1x1MjAyMCcgICAjICAweDg2IC0+IERBR0dFUgorICAgICdcdTIwMjEnICAgIyAgMHg4NyAtPiBET1VCTEUgREFHR0VSCisgICAgJ1x1MDJjNicgICAjICAweDg4IC0+IE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdcdTIwMzAnICAgIyAgMHg4OSAtPiBQRVIgTUlMTEUgU0lHTgorICAgICdcdTAxNjAnICAgIyAgMHg4QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KKyAgICAnXHUyMDM5JyAgICMgIDB4OEIgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwMTUyJyAgICMgIDB4OEMgLT4gTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBPRQorICAgICdcdTI2NjYnICAgIyAgMHg4RCAtPiBCTEFDSyBESUFNT05EIFNVSVQKKyAgICAnXHUyNjYzJyAgICMgIDB4OEUgLT4gQkxBQ0sgQ0xVQiBTVUlUCisgICAgJ1x1MjY2NScgICAjICAweDhGIC0+IEJMQUNLIEhFQVJUIFNVSVQKKyAgICAnXHUyNjYwJyAgICMgIDB4OTAgLT4gQkxBQ0sgU1BBREUgU1VJVAorICAgICdcdTIwMTgnICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFjJyAgICMgIDB4OTMgLT4gTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFkJyAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAorICAgICdcdTIwMTMnICAgIyAgMHg5NiAtPiBFTiBEQVNICisgICAgJ1x1MjAxNCcgICAjICAweDk3IC0+IEVNIERBU0gKKyAgICAnXHUwMmRjJyAgICMgIDB4OTggLT4gU01BTEwgVElMREUKKyAgICAnXHUyMTIyJyAgICMgIDB4OTkgLT4gVFJBREUgTUFSSyBTSUdOCisgICAgJ1x1MDE2MScgICAjICAweDlBIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KKyAgICAnXHg5YicgICAgICMgIDB4OUIgLT4gPGNvbnRyb2w+CisgICAgJ1x1MDE1MycgICAjICAweDlDIC0+IExBVElOIFNNQUxMIExJR0FUVVJFIE9FCisgICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgorICAgICdceDllJyAgICAgIyAgMHg5RSAtPiA8Y29udHJvbD4KKyAgICAnXHUwMTc4JyAgICMgIDB4OUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUworICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdceGExJyAgICAgIyAgMHhBMSAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCisgICAgJ1x4YTInICAgICAjICAweEEyIC0+IENFTlQgU0lHTgorICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCisgICAgJ1x4YTQnICAgICAjICAweEE0IC0+IENVUlJFTkNZIFNJR04KKyAgICAnXHhhNScgICAgICMgIDB4QTUgLT4gWUVOIFNJR04KKyAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgorICAgICdceGE3JyAgICAgIyAgMHhBNyAtPiBTRUNUSU9OIFNJR04KKyAgICAnXHhhOCcgICAgICMgIDB4QTggLT4gRElBRVJFU0lTCisgICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCisgICAgJ1x4YWEnICAgICAjICAweEFBIC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCisgICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4YWMnICAgICAjICAweEFDIC0+IE5PVCBTSUdOCisgICAgJ1x4YWQnICAgICAjICAweEFEIC0+IFNPRlQgSFlQSEVOCisgICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgorICAgICdceGFmJyAgICAgIyAgMHhBRiAtPiBNQUNST04KKyAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KKyAgICAnXHhiMScgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCisgICAgJ1x4YjInICAgICAjICAweEIyIC0+IFNVUEVSU0NSSVBUIFRXTworICAgICdceGIzJyAgICAgIyAgMHhCMyAtPiBTVVBFUlNDUklQVCBUSFJFRQorICAgICdceGI0JyAgICAgIyAgMHhCNCAtPiBBQ1VURSBBQ0NFTlQKKyAgICAnXHhiNScgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgorICAgICdceGI2JyAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KKyAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAorICAgICdceGI4JyAgICAgIyAgMHhCOCAtPiBDRURJTExBCisgICAgJ1x4YjknICAgICAjICAweEI5IC0+IFNVUEVSU0NSSVBUIE9ORQorICAgICdceGJhJyAgICAgIyAgMHhCQSAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKKyAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4YmMnICAgICAjICAweEJDIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgorICAgICdceGJkJyAgICAgIyAgMHhCRCAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKKyAgICAnXHhiZScgICAgICMgIDB4QkUgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCisgICAgJ1x4YmYnICAgICAjICAweEJGIC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKKyAgICAnXHhjMCcgICAgICMgIDB4QzAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCisgICAgJ1x4YzEnICAgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdceGMyJyAgICAgIyAgMHhDMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGMzJyAgICAgIyAgMHhDMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKKyAgICAnXHhjNCcgICAgICMgIDB4QzQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworICAgICdceGM1JyAgICAgIyAgMHhDNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQorICAgICdceGM2JyAgICAgIyAgMHhDNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQorICAgICdceGM3JyAgICAgIyAgMHhDNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorICAgICdceGM4JyAgICAgIyAgMHhDOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKKyAgICAnXHhjOScgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x4Y2EnICAgICAjICAweENBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4Y2InICAgICAjICAweENCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhjYycgICAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCisgICAgJ1x4Y2QnICAgICAjICAweENEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQorICAgICdceGNlJyAgICAgIyAgMHhDRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGNmJyAgICAgIyAgMHhDRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZDAnICAgICAjICAweEQwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQorICAgICdceGQxJyAgICAgIyAgMHhEMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKKyAgICAnXHhkMicgICAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCisgICAgJ1x4ZDMnICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGQ0JyAgICAgIyAgMHhENCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGQ1JyAgICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHhkNicgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGQ3JyAgICAgIyAgMHhENyAtPiBNVUxUSVBMSUNBVElPTiBTSUdOCisgICAgJ1x4ZDgnICAgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKyAgICAnXHhkOScgICAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCisgICAgJ1x4ZGEnICAgICAjICAweERBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdceGRiJyAgICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGRjJyAgICAgIyAgMHhEQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGQnICAgICAjICAweEREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGRlJyAgICAgIyAgMHhERSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQorICAgICdceGRmJyAgICAgIyAgMHhERiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR2VybWFuKQorICAgICdceGUwJyAgICAgIyAgMHhFMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCisgICAgJ1x4ZTEnICAgICAjICAweEUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKKyAgICAnXHhlMicgICAgICMgIDB4RTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZTMnICAgICAjICAweEUzIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKKyAgICAnXHhlNCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlNScgICAgICMgIDB4RTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4ZTYnICAgICAjICAweEU2IC0+IExBVElOIFNNQUxMIExFVFRFUiBBRQorICAgICdceGU3JyAgICAgIyAgMHhFNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKKyAgICAnXHhlOCcgICAgICMgIDB4RTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQorICAgICdceGU5JyAgICAgIyAgMHhFOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x4ZWEnICAgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGViJyAgICAgIyAgMHhFQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworICAgICdceGVjJyAgICAgIyAgMHhFQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCisgICAgJ1x4ZWQnICAgICAjICAweEVEIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAnXHhlZScgICAgICMgIDB4RUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZWYnICAgICAjICAweEVGIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZjAnICAgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBFVEggKEljZWxhbmRpYykKKyAgICAnXHhmMScgICAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQorICAgICdceGYyJyAgICAgIyAgMHhGMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCisgICAgJ1x4ZjMnICAgICAjICAweEYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKKyAgICAnXHhmNCcgICAgICMgIDB4RjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZjUnICAgICAjICAweEY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHhmNicgICAgICMgIDB4RjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmNycgICAgICMgIDB4RjcgLT4gRElWSVNJT04gU0lHTgorICAgICdceGY4JyAgICAgIyAgMHhGOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQorICAgICdceGY5JyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCisgICAgJ1x4ZmEnICAgICAjICAweEZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKKyAgICAnXHhmYicgICAgICMgIDB4RkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZmMnICAgICAjICAweEZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZmQnICAgICAjICAweEZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKKyAgICAnXHhmZScgICAgICMgIDB4RkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCisgICAgJ1x4ZmYnICAgICAjICAweEZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCispCiAKLSMjIyBFbmNvZGluZyBNYXAKLQotZW5jb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCkKKyMjIyBFbmNvZGluZyB0YWJsZQorZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL3B0Y3AxNTQucHkgYi9MaWIvZW5jb2RpbmdzL3B0Y3AxNTQucHkKaW5kZXggYWVmODk3NS4uNjU2Yjc5ZCAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9wdGNwMTU0LnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvcHRjcDE1NC5weQpAQCAtMTQsMTggKzE0LDE4IEBACiBjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogCiAgICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCiAKICAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKIAogY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICAgcGFzcwpAQCAtNDYsMTMwICs0NiwyNjcgQEAKICAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICApCiAKLSMjIyBEZWNvZGluZyBNYXAKIAotZGVjb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfaWRlbnRpdHlfZGljdChyYW5nZSgyNTYpKQotZGVjb2RpbmdfbWFwLnVwZGF0ZSh7Ci0gICAgICAgIDB4MDA4MDogMHgwNDk2LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDgxOiAweDA0OTIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQotICAgICAgICAweDAwODI6IDB4MDRlZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwODM6IDB4MDQ5MywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQotICAgICAgICAweDAwODQ6IDB4MjAxZSwgIyAgICAgICAgRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA4NTogMHgyMDI2LCAjICAgICAgICBIT1JJWk9OVEFMIEVMTElQU0lTCi0gICAgICAgIDB4MDA4NjogMHgwNGI2LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDg3OiAweDA0YWUsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUKLSAgICAgICAgMHgwMDg4OiAweDA0YjIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA4OTogMHgwNGFmLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVQotICAgICAgICAweDAwOGE6IDB4MDRhMCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFTSEtJUiBLQQotICAgICAgICAweDAwOGI6IDB4MDRlMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwOGM6IDB4MDRhMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDhkOiAweDA0OWEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA4ZTogMHgwNGJhLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEhBCi0gICAgICAgIDB4MDA4ZjogMHgwNGI4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0UKLSAgICAgICAgMHgwMDkwOiAweDA0OTcsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDkxOiAweDIwMTgsICMgICAgICAgIExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5MjogMHgyMDE5LCAjICAgICAgICBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDkzOiAweDIwMWMsICMgICAgICAgIExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5NDogMHgyMDFkLCAjICAgICAgICBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDk1OiAweDIwMjIsICMgICAgICAgIEJVTExFVAotICAgICAgICAweDAwOTY6IDB4MjAxMywgIyAgICAgICAgRU4gREFTSAotICAgICAgICAweDAwOTc6IDB4MjAxNCwgIyAgICAgICAgRU0gREFTSAotICAgICAgICAweDAwOTg6IDB4MDRiMywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA5OTogMHgwNGI3LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA5YTogMHgwNGExLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFTSEtJUiBLQQotICAgICAgICAweDAwOWI6IDB4MDRlMywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDljOiAweDA0YTMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOWQ6IDB4MDQ5YiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA5ZTogMHgwNGJiLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hIQQotICAgICAgICAweDAwOWY6IDB4MDRiOSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQotICAgICAgICAweDAwYTE6IDB4MDQwZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgVSAoQnllbG9ydXNzaWFuKQotICAgICAgICAweDAwYTI6IDB4MDQ1ZSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIFUgKEJ5ZWxvcnVzc2lhbikKLSAgICAgICAgMHgwMGEzOiAweDA0MDgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEpFCi0gICAgICAgIDB4MDBhNDogMHgwNGU4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTwotICAgICAgICAweDAwYTU6IDB4MDQ5OCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMGE2OiAweDA0YjAsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMGE4OiAweDA0MDEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCi0gICAgICAgIDB4MDBhYTogMHgwNGQ4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQQotICAgICAgICAweDAwYWQ6IDB4MDRlZiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGFmOiAweDA0OWMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCi0gICAgICAgIDB4MDBiMTogMHgwNGIxLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQotICAgICAgICAweDAwYjI6IDB4MDQwNiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCi0gICAgICAgIDB4MDBiMzogMHgwNDU2LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCi0gICAgICAgIDB4MDBiNDogMHgwNDk5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMGI1OiAweDA0ZTksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTwotICAgICAgICAweDAwYjg6IDB4MDQ1MSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCi0gICAgICAgIDB4MDBiOTogMHgyMTE2LCAjICAgICAgICBOVU1FUk8gU0lHTgotICAgICAgICAweDAwYmE6IDB4MDRkOSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBCi0gICAgICAgIDB4MDBiYzogMHgwNDU4LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSkUKLSAgICAgICAgMHgwMGJkOiAweDA0YWEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDBiZTogMHgwNGFiLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMGJmOiAweDA0OWQsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQotICAgICAgICAweDAwYzA6IDB4MDQxMCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQQotICAgICAgICAweDAwYzE6IDB4MDQxMSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkUKLSAgICAgICAgMHgwMGMyOiAweDA0MTIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCi0gICAgICAgIDB4MDBjMzogMHgwNDEzLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUKLSAgICAgICAgMHgwMGM0OiAweDA0MTQsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCi0gICAgICAgIDB4MDBjNTogMHgwNDE1LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQotICAgICAgICAweDAwYzY6IDB4MDQxNiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFCi0gICAgICAgIDB4MDBjNzogMHgwNDE3LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQotICAgICAgICAweDAwYzg6IDB4MDQxOCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQotICAgICAgICAweDAwYzk6IDB4MDQxOSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSQotICAgICAgICAweDAwY2E6IDB4MDQxYSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKLSAgICAgICAgMHgwMGNiOiAweDA0MWIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCi0gICAgICAgIDB4MDBjYzogMHgwNDFjLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTQotICAgICAgICAweDAwY2Q6IDB4MDQxZCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KLSAgICAgICAgMHgwMGNlOiAweDA0MWUsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KLSAgICAgICAgMHgwMGNmOiAweDA0MWYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFBFCi0gICAgICAgIDB4MDBkMDogMHgwNDIwLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgotICAgICAgICAweDAwZDE6IDB4MDQyMSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKLSAgICAgICAgMHgwMGQyOiAweDA0MjIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCi0gICAgICAgIDB4MDBkMzogMHgwNDIzLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCi0gICAgICAgIDB4MDBkNDogMHgwNDI0LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgotICAgICAgICAweDAwZDU6IDB4MDQyNSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEKLSAgICAgICAgMHgwMGQ2OiAweDA0MjYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQotICAgICAgICAweDAwZDc6IDB4MDQyNywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCi0gICAgICAgIDB4MDBkODogMHgwNDI4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEEKLSAgICAgICAgMHgwMGQ5OiAweDA0MjksICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCi0gICAgICAgIDB4MDBkYTogMHgwNDJhLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KLSAgICAgICAgMHgwMGRiOiAweDA0MmIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUKLSAgICAgICAgMHgwMGRjOiAweDA0MmMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgotICAgICAgICAweDAwZGQ6IDB4MDQyZCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQotICAgICAgICAweDAwZGU6IDB4MDQyZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVUKLSAgICAgICAgMHgwMGRmOiAweDA0MmYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCi0gICAgICAgIDB4MDBlMDogMHgwNDMwLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQotICAgICAgICAweDAwZTE6IDB4MDQzMSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCi0gICAgICAgIDB4MDBlMjogMHgwNDMyLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKLSAgICAgICAgMHgwMGUzOiAweDA0MzMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKLSAgICAgICAgMHgwMGU0OiAweDA0MzQsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBERQotICAgICAgICAweDAwZTU6IDB4MDQzNSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCi0gICAgICAgIDB4MDBlNjogMHgwNDM2LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCi0gICAgICAgIDB4MDBlNzogMHgwNDM3LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUKLSAgICAgICAgMHgwMGU4OiAweDA0MzgsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBJCi0gICAgICAgIDB4MDBlOTogMHgwNDM5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQotICAgICAgICAweDAwZWE6IDB4MDQzYSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDBlYjogMHgwNDNiLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKLSAgICAgICAgMHgwMGVjOiAweDA0M2MsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDAwZWQ6IDB4MDQzZCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCi0gICAgICAgIDB4MDBlZTogMHgwNDNlLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDAwZWY6IDB4MDQzZiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCi0gICAgICAgIDB4MDBmMDogMHgwNDQwLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKLSAgICAgICAgMHgwMGYxOiAweDA0NDEsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUwotICAgICAgICAweDAwZjI6IDB4MDQ0MiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCi0gICAgICAgIDB4MDBmMzogMHgwNDQzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQotICAgICAgICAweDAwZjQ6IDB4MDQ0NCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCi0gICAgICAgIDB4MDBmNTogMHgwNDQ1LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKLSAgICAgICAgMHgwMGY2OiAweDA0NDYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBUU0UKLSAgICAgICAgMHgwMGY3OiAweDA0NDcsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKLSAgICAgICAgMHgwMGY4OiAweDA0NDgsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKLSAgICAgICAgMHgwMGY5OiAweDA0NDksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSENIQQotICAgICAgICAweDAwZmE6IDB4MDQ0YSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgotICAgICAgICAweDAwZmI6IDB4MDQ0YiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKLSAgICAgICAgMHgwMGZjOiAweDA0NGMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR04KLSAgICAgICAgMHgwMGZkOiAweDA0NGQsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFCi0gICAgICAgIDB4MDBmZTogMHgwNDRlLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKLSAgICAgICAgMHgwMGZmOiAweDA0NGYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBZQQotfSkKKyMjIyBEZWNvZGluZyBUYWJsZQogCi0jIyMgRW5jb2RpbmcgTWFwCitkZWNvZGluZ190YWJsZSA9ICgKKyAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAorICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCisgICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKKyAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKKyAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgorICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCisgICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCisgICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKKyAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCisgICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgorICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKKyAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgorICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKKyAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCisgICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAorICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgorICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCisgICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQorICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KKyAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKKyAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgorICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQorICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCisgICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKKyAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCisgICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KKyAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQorICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKKyAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKKyAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCisgICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKKyAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKKyAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKKyAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSworICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSworICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgorICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgorICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KKyAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECisgICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKKyAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUworICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUworICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSworICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KKyAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKKyAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCisgICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAorICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCisgICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KKyAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCisgICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTworICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQorICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCisgICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKKyAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCisgICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCisgICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCisgICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKKyAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KKyAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCisgICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCisgICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCisgICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCisgICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKKyAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAorICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCisgICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKKyAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQworICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECisgICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKKyAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgorICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCisgICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKKyAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCisgICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKKyAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAorICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCisgICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KKyAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTworICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCisgICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKKyAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgorICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCisgICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKKyAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQorICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCisgICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKKyAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAorICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCisgICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKKyAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAorICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKKyAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKKyAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKKyAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKKyAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCisgICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCisgICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCisgICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCisgICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECisgICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCisgICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCisgICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCisgICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICisgICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCisgICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCisgICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCisgICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCisgICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCisgICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCisgICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCisgICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCisgICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCisgICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCisgICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCisgICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCisgICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCisgICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCisgICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCisgICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCisgICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCisgICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCisgICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAorICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCisgICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKKyAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKKyAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFIChERUwpCisgICAgJ1x1MDQ5NicgICAjICAweDgwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0OTInICAgIyAgMHg4MSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKKyAgICAnXHUwNGVlJyAgICMgIDB4ODIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgorICAgICdcdTA0OTMnICAgIyAgMHg4MyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCisgICAgJ1x1MjAxZScgICAjICAweDg0IC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjYnICAgIyAgMHg4NSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCisgICAgJ1x1MDRiNicgICAjICAweDg2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YWUnICAgIyAgMHg4NyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVCisgICAgJ1x1MDRiMicgICAjICAweDg4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRhZicgICAjICAweDg5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVCisgICAgJ1x1MDRhMCcgICAjICAweDhBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJBU0hLSVIgS0EKKyAgICAnXHUwNGUyJyAgICMgIDB4OEIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgorICAgICdcdTA0YTInICAgIyAgMHg4QyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0OWEnICAgIyAgMHg4RCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YmEnICAgIyAgMHg4RSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEhBCisgICAgJ1x1MDRiOCcgICAjICAweDhGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorICAgICdcdTA0OTcnICAgIyAgMHg5MCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MjAxOCcgICAjICAweDkxIC0+IExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxOScgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWQnICAgIyAgMHg5NCAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDIyJyAgICMgIDB4OTUgLT4gQlVMTEVUCisgICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKKyAgICAnXHUyMDE0JyAgICMgIDB4OTcgLT4gRU0gREFTSAorICAgICdcdTA0YjMnICAgIyAgMHg5OCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGI3JyAgICMgIDB4OTkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YTEnICAgIyAgMHg5QSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFTSEtJUiBLQQorICAgICdcdTA0ZTMnICAgIyAgMHg5QiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgorICAgICdcdTA0YTMnICAgIyAgMHg5QyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNDliJyAgICMgIDB4OUQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiYicgICAjICAweDlFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSEhBCisgICAgJ1x1MDRiOScgICAjICAweDlGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0UKKyAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKKyAgICAnXHUwNDBlJyAgICMgIDB4QTEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgVSAoQnllbG9ydXNzaWFuKQorICAgICdcdTA0NWUnICAgIyAgMHhBMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgVSAoQnllbG9ydXNzaWFuKQorICAgICdcdTA0MDgnICAgIyAgMHhBMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBKRQorICAgICdcdTA0ZTgnICAgIyAgMHhBNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTworICAgICdcdTA0OTgnICAgIyAgMHhBNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YjAnICAgIyAgMHhBNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFCisgICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgorICAgICdcdTA0MDEnICAgIyAgMHhBOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTworICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgorICAgICdcdTA0ZDgnICAgIyAgMHhBQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQQorICAgICdceGFiJyAgICAgIyAgMHhBQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGFjJyAgICAgIyAgMHhBQyAtPiBOT1QgU0lHTgorICAgICdcdTA0ZWYnICAgIyAgMHhBRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgorICAgICdceGFlJyAgICAgIyAgMHhBRSAtPiBSRUdJU1RFUkVEIFNJR04KKyAgICAnXHUwNDljJyAgICMgIDB4QUYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0UKKyAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KKyAgICAnXHUwNGIxJyAgICMgIDB4QjEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKKyAgICAnXHUwNDA2JyAgICMgIDB4QjIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCisgICAgJ1x1MDQ1NicgICAjICAweEIzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKKyAgICAnXHUwNDk5JyAgICMgIDB4QjQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRlOScgICAjICAweEI1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTworICAgICdceGI2JyAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KKyAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAorICAgICdcdTA0NTEnICAgIyAgMHhCOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSU8KKyAgICAnXHUyMTE2JyAgICMgIDB4QjkgLT4gTlVNRVJPIFNJR04KKyAgICAnXHUwNGQ5JyAgICMgIDB4QkEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBCisgICAgJ1x4YmInICAgICAjICAweEJCIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTA0NTgnICAgIyAgMHhCQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSkUKKyAgICAnXHUwNGFhJyAgICMgIDB4QkQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGFiJyAgICMgIDB4QkUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDQ5ZCcgICAjICAweEJGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorICAgICdcdTA0MTAnICAgIyAgMHhDMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCisgICAgJ1x1MDQxMScgICAjICAweEMxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJFCisgICAgJ1x1MDQxMicgICAjICAweEMyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCisgICAgJ1x1MDQxMycgICAjICAweEMzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQorICAgICdcdTA0MTQnICAgIyAgMHhDNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERQorICAgICdcdTA0MTUnICAgIyAgMHhDNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQorICAgICdcdTA0MTYnICAgIyAgMHhDNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKKyAgICAnXHUwNDE3JyAgICMgIDB4QzcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUKKyAgICAnXHUwNDE4JyAgICMgIDB4QzggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQorICAgICdcdTA0MTknICAgIyAgMHhDOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJCisgICAgJ1x1MDQxYScgICAjICAweENBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCisgICAgJ1x1MDQxYicgICAjICAweENCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCisgICAgJ1x1MDQxYycgICAjICAweENDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVNCisgICAgJ1x1MDQxZCcgICAjICAweENEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCisgICAgJ1x1MDQxZScgICAjICAweENFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KKyAgICAnXHUwNDFmJyAgICMgIDB4Q0YgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUKKyAgICAnXHUwNDIwJyAgICMgIDB4RDAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKKyAgICAnXHUwNDIxJyAgICMgIDB4RDEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKKyAgICAnXHUwNDIyJyAgICMgIDB4RDIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUKKyAgICAnXHUwNDIzJyAgICMgIDB4RDMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQorICAgICdcdTA0MjQnICAgIyAgMHhENCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgorICAgICdcdTA0MjUnICAgIyAgMHhENSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQQorICAgICdcdTA0MjYnICAgIyAgMHhENiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0UKKyAgICAnXHUwNDI3JyAgICMgIDB4RDcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCisgICAgJ1x1MDQyOCcgICAjICAweEQ4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQQorICAgICdcdTA0MjknICAgIyAgMHhEOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQQorICAgICdcdTA0MmEnICAgIyAgMHhEQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KKyAgICAnXHUwNDJiJyAgICMgIDB4REIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVQorICAgICdcdTA0MmMnICAgIyAgMHhEQyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIFNJR04KKyAgICAnXHUwNDJkJyAgICMgIDB4REQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQorICAgICdcdTA0MmUnICAgIyAgMHhERSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQorICAgICdcdTA0MmYnICAgIyAgMHhERiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQQorICAgICdcdTA0MzAnICAgIyAgMHhFMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorICAgICdcdTA0MzEnICAgIyAgMHhFMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICAnXHUwNDMyJyAgICMgIDB4RTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCisgICAgJ1x1MDQzMycgICAjICAweEUzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyAgICAnXHUwNDM0JyAgICMgIDB4RTQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCisgICAgJ1x1MDQzNScgICAjICAweEU1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJRQorICAgICdcdTA0MzYnICAgIyAgMHhFNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCisgICAgJ1x1MDQzNycgICAjICAweEU3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaRQorICAgICdcdTA0MzgnICAgIyAgMHhFOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQorICAgICdcdTA0MzknICAgIyAgMHhFOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQorICAgICdcdTA0M2EnICAgIyAgMHhFQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICAnXHUwNDNiJyAgICMgIDB4RUIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCisgICAgJ1x1MDQzYycgICAjICAweEVDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAgICdcdTA0M2QnICAgIyAgMHhFRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICAnXHUwNDNlJyAgICMgIDB4RUUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAnXHUwNDNmJyAgICMgIDB4RUYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCisgICAgJ1x1MDQ0MCcgICAjICAweEYwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICdcdTA0NDEnICAgIyAgMHhGMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAnXHUwNDQyJyAgICMgIDB4RjIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgJ1x1MDQ0MycgICAjICAweEYzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgJ1x1MDQ0NCcgICAjICAweEY0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgICdcdTA0NDUnICAgIyAgMHhGNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKKyAgICAnXHUwNDQ2JyAgICMgIDB4RjYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQorICAgICdcdTA0NDcnICAgIyAgMHhGNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCisgICAgJ1x1MDQ0OCcgICAjICAweEY4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKKyAgICAnXHUwNDQ5JyAgICMgIDB4RjkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCisgICAgJ1x1MDQ0YScgICAjICAweEZBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KKyAgICAnXHUwNDRiJyAgICMgIDB4RkIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKKyAgICAnXHUwNDRjJyAgICMgIDB4RkMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgorICAgICdcdTA0NGQnICAgIyAgMHhGRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRQorICAgICdcdTA0NGUnICAgIyAgMHhGRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKKyAgICAnXHUwNDRmJyAgICMgIDB4RkYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCispCiAKLWVuY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2VuY29kaW5nX21hcChkZWNvZGluZ19tYXApCisjIyMgRW5jb2RpbmcgdGFibGUKK2VuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2ZpbGVpbnB1dC5weSBiL0xpYi9maWxlaW5wdXQucHkKaW5kZXggNTU0YmViMi4uZGJiYmIyMSAxMDA2NDQKLS0tIGEvTGliL2ZpbGVpbnB1dC5weQorKysgYi9MaWIvZmlsZWlucHV0LnB5CkBAIC0zOTgsOSArMzk4LDggQEAKIAogCiBkZWYgaG9va19lbmNvZGVkKGVuY29kaW5nKToKLSAgICBpbXBvcnQgY29kZWNzCiAgICAgZGVmIG9wZW5ob29rKGZpbGVuYW1lLCBtb2RlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5vcGVuKGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZykKKyAgICAgICAgcmV0dXJuIG9wZW4oZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPWVuY29kaW5nKQogICAgIHJldHVybiBvcGVuaG9vawogCiAKZGlmZiAtLWdpdCBhL0xpYi9mbm1hdGNoLnB5IGIvTGliL2ZubWF0Y2gucHkKaW5kZXggNzI2ZmJlNS4uZjQ0Njc2OSAxMDA2NDQKLS0tIGEvTGliL2ZubWF0Y2gucHkKKysrIGIvTGliL2ZubWF0Y2gucHkKQEAgLTM1LDkgKzM1LDkgQEAKICAgICBwYXQgPSBvcy5wYXRoLm5vcm1jYXNlKHBhdCkKICAgICByZXR1cm4gZm5tYXRjaGNhc2UobmFtZSwgcGF0KQogCi1AZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPTI1MCkKLWRlZiBfY29tcGlsZV9wYXR0ZXJuKHBhdCwgaXNfYnl0ZXM9RmFsc2UpOgotICAgIGlmIGlzX2J5dGVzOgorQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT0yNTAsIHR5cGVkPVRydWUpCitkZWYgX2NvbXBpbGVfcGF0dGVybihwYXQpOgorICAgIGlmIGlzaW5zdGFuY2UocGF0LCBieXRlcyk6CiAgICAgICAgIHBhdF9zdHIgPSBzdHIocGF0LCAnSVNPLTg4NTktMScpCiAgICAgICAgIHJlc19zdHIgPSB0cmFuc2xhdGUocGF0X3N0cikKICAgICAgICAgcmVzID0gYnl0ZXMocmVzX3N0ciwgJ0lTTy04ODU5LTEnKQpAQCAtNDksNyArNDksNyBAQAogICAgICIiIlJldHVybiB0aGUgc3Vic2V0IG9mIHRoZSBsaXN0IE5BTUVTIHRoYXQgbWF0Y2ggUEFULiIiIgogICAgIHJlc3VsdCA9IFtdCiAgICAgcGF0ID0gb3MucGF0aC5ub3JtY2FzZShwYXQpCi0gICAgbWF0Y2ggPSBfY29tcGlsZV9wYXR0ZXJuKHBhdCwgaXNpbnN0YW5jZShwYXQsIGJ5dGVzKSkKKyAgICBtYXRjaCA9IF9jb21waWxlX3BhdHRlcm4ocGF0KQogICAgIGlmIG9zLnBhdGggaXMgcG9zaXhwYXRoOgogICAgICAgICAjIG5vcm1jYXNlIG9uIHBvc2l4IGlzIE5PUC4gT3B0aW1pemUgaXQgYXdheSBmcm9tIHRoZSBsb29wLgogICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKQEAgLTY3LDcgKzY3LDcgQEAKICAgICBUaGlzIGlzIGEgdmVyc2lvbiBvZiBmbm1hdGNoKCkgd2hpY2ggZG9lc24ndCBjYXNlLW5vcm1hbGl6ZQogICAgIGl0cyBhcmd1bWVudHMuCiAgICAgIiIiCi0gICAgbWF0Y2ggPSBfY29tcGlsZV9wYXR0ZXJuKHBhdCwgaXNpbnN0YW5jZShwYXQsIGJ5dGVzKSkKKyAgICBtYXRjaCA9IF9jb21waWxlX3BhdHRlcm4ocGF0KQogICAgIHJldHVybiBtYXRjaChuYW1lKSBpcyBub3QgTm9uZQogCiAKZGlmZiAtLWdpdCBhL0xpYi9mdHBsaWIucHkgYi9MaWIvZnRwbGliLnB5CmluZGV4IDhlNTMwMjMuLjE4ODg3YTYgMTAwNjQ0Ci0tLSBhL0xpYi9mdHBsaWIucHkKKysrIGIvTGliL2Z0cGxpYi5weQpAQCAtMTAwLDE0ICsxMDAsMTUgQEAKICAgICBmaWxlID0gTm9uZQogICAgIHdlbGNvbWUgPSBOb25lCiAgICAgcGFzc2l2ZXNlcnZlciA9IDEKLSAgICBlbmNvZGluZyA9ICJsYXRpbjEiCisgICAgZW5jb2RpbmcgPSAibGF0aW4tMSIKIAogICAgICMgSW5pdGlhbGl6YXRpb24gbWV0aG9kIChjYWxsZWQgYnkgY2xhc3MgaW5zdGFudGlhdGlvbikuCiAgICAgIyBJbml0aWFsaXplIGhvc3QgdG8gbG9jYWxob3N0LCBwb3J0IHRvIHN0YW5kYXJkIGZ0cCBwb3J0CiAgICAgIyBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGhvc3QgKGZvciBjb25uZWN0KCkpLAogICAgICMgYW5kIHVzZXIsIHBhc3N3ZCwgYWNjdCAoZm9yIGxvZ2luKCkpCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywKLSAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CisgICAgICAgICAgICAgICAgIHRpbWVvdXQ9X0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgorICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzID0gc291cmNlX2FkZHJlc3MKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogICAgICAgICBpZiBob3N0OgogICAgICAgICAgICAgc2VsZi5jb25uZWN0KGhvc3QpCkBAIC0xMjgsMTAgKzEyOSwxMiBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc29jayBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKLSAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PScnLCBwb3J0PTAsIHRpbWVvdXQ9LTk5OSk6CisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgaG9zdD0nJywgcG9ydD0wLCB0aW1lb3V0PS05OTksIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICAnJydDb25uZWN0IHRvIGhvc3QuICBBcmd1bWVudHMgYXJlOgogICAgICAgICAgLSBob3N0OiBob3N0bmFtZSB0byBjb25uZWN0IHRvIChzdHJpbmcsIGRlZmF1bHQgcHJldmlvdXMgaG9zdCkKICAgICAgICAgIC0gcG9ydDogcG9ydCB0byBjb25uZWN0IHRvIChpbnRlZ2VyLCBkZWZhdWx0IHByZXZpb3VzIHBvcnQpCisgICAgICAgICAtIHNvdXJjZV9hZGRyZXNzOiBhIDItdHVwbGUgKGhvc3QsIHBvcnQpIGZvciB0aGUgc29ja2V0IHRvIGJpbmQKKyAgICAgICAgICAgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLgogICAgICAgICAnJycKICAgICAgICAgaWYgaG9zdCAhPSAnJzoKICAgICAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKQEAgLTEzOSw3ICsxNDIsMTAgQEAKICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKICAgICAgICAgaWYgdGltZW91dCAhPSAtOTk5OgogICAgICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAotICAgICAgICBzZWxmLnNvY2sgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgc2VsZi50aW1lb3V0KQorICAgICAgICBpZiBzb3VyY2VfYWRkcmVzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcworICAgICAgICBzZWxmLnNvY2sgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgc2VsZi50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9c2VsZi5zb3VyY2VfYWRkcmVzcykKICAgICAgICAgc2VsZi5hZiA9IHNlbGYuc29jay5mYW1pbHkKICAgICAgICAgc2VsZi5maWxlID0gc2VsZi5zb2NrLm1ha2VmaWxlKCdyJywgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykKICAgICAgICAgc2VsZi53ZWxjb21lID0gc2VsZi5nZXRyZXNwKCkKQEAgLTE2OSwxMCArMTc1LDggQEAKIAogICAgICMgSW50ZXJuYWw6ICJzYW5pdGl6ZSIgYSBzdHJpbmcgZm9yIHByaW50aW5nCiAgICAgZGVmIHNhbml0aXplKHNlbGYsIHMpOgotICAgICAgICBpZiBzWzo1XSA9PSAncGFzcyAnIG9yIHNbOjVdID09ICdQQVNTICc6Ci0gICAgICAgICAgICBpID0gbGVuKHMpCi0gICAgICAgICAgICB3aGlsZSBpID4gNSBhbmQgc1tpLTFdIGluIHsnXHInLCAnXG4nfToKLSAgICAgICAgICAgICAgICBpID0gaS0xCisgICAgICAgIGlmIHNbOjVdIGluIHsncGFzcyAnLCAnUEFTUyAnfToKKyAgICAgICAgICAgIGkgPSBsZW4ocy5yc3RyaXAoJ1xyXG4nKSkKICAgICAgICAgICAgIHMgPSBzWzo1XSArICcqJyooaS01KSArIHNbaTpdCiAgICAgICAgIHJldHVybiByZXByKHMpCiAKQEAgLTMzNSw3ICszMzksOCBAQAogICAgICAgICBzaXplID0gTm9uZQogICAgICAgICBpZiBzZWxmLnBhc3NpdmVzZXJ2ZXI6CiAgICAgICAgICAgICBob3N0LCBwb3J0ID0gc2VsZi5tYWtlcGFzdigpCi0gICAgICAgICAgICBjb25uID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgc2VsZi50aW1lb3V0KQorICAgICAgICAgICAgY29ubiA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHNlbGYudGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9c2VsZi5zb3VyY2VfYWRkcmVzcykKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpZiByZXN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRjbWQoIlJFU1QgJXMiICUgcmVzdCkKQEAgLTM1NCw4ICszNTksNyBAQAogICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzb2NrID0gc2VsZi5tYWtlcG9ydCgpCi0gICAgICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYubWFrZXBvcnQoKSBhcyBzb2NrOgogICAgICAgICAgICAgICAgIGlmIHJlc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZGNtZCgiUkVTVCAlcyIgJSByZXN0KQogICAgICAgICAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoY21kKQpAQCAtMzY3LDggKzM3MSw2IEBACiAgICAgICAgICAgICAgICAgY29ubiwgc29ja2FkZHIgPSBzb2NrLmFjY2VwdCgpCiAgICAgICAgICAgICAgICAgaWYgc2VsZi50aW1lb3V0IGlzIG5vdCBfR0xPQkFMX0RFRkFVTFRfVElNRU9VVDoKICAgICAgICAgICAgICAgICAgICAgY29ubi5zZXR0aW1lb3V0KHNlbGYudGltZW91dCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgIGlmIHJlc3BbOjNdID09ICcxNTAnOgogICAgICAgICAgICAgIyB0aGlzIGlzIGNvbmRpdGlvbmFsIGluIGNhc2Ugd2UgcmVjZWl2ZWQgYSAxMjUKICAgICAgICAgICAgIHNpemUgPSBwYXJzZTE1MChyZXNwKQpAQCAtNDI2LDcgKzQyOCw3IEBACiAgICAgICAgICIiIlJldHJpZXZlIGRhdGEgaW4gbGluZSBtb2RlLiAgQSBuZXcgcG9ydCBpcyBjcmVhdGVkIGZvciB5b3UuCiAKICAgICAgICAgQXJnczoKLSAgICAgICAgICBjbWQ6IEEgUkVUUiwgTElTVCwgTkxTVCwgb3IgTUxTRCBjb21tYW5kLgorICAgICAgICAgIGNtZDogQSBSRVRSLCBMSVNULCBvciBOTFNUIGNvbW1hbmQuCiAgICAgICAgICAgY2FsbGJhY2s6IEFuIG9wdGlvbmFsIHNpbmdsZSBwYXJhbWV0ZXIgY2FsbGFibGUgdGhhdCBpcyBjYWxsZWQKICAgICAgICAgICAgICAgICAgICAgZm9yIGVhY2ggbGluZSB3aXRoIHRoZSB0cmFpbGluZyBDUkxGIHN0cmlwcGVkLgogICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdDogcHJpbnRfbGluZSgpXQpAQCAtNTI3LDYgKzUyOSwzNCBAQAogICAgICAgICAgICAgICAgIGNtZCA9IGNtZCArICgnICcgKyBhcmcpCiAgICAgICAgIHNlbGYucmV0cmxpbmVzKGNtZCwgZnVuYykKIAorICAgIGRlZiBtbHNkKHNlbGYsIHBhdGg9IiIsIGZhY3RzPVtdKToKKyAgICAgICAgJycnTGlzdCBhIGRpcmVjdG9yeSBpbiBhIHN0YW5kYXJkaXplZCBmb3JtYXQgYnkgdXNpbmcgTUxTRAorICAgICAgICBjb21tYW5kIChSRkMtMzY1OSkuIElmIHBhdGggaXMgb21pdHRlZCB0aGUgY3VycmVudCBkaXJlY3RvcnkKKyAgICAgICAgaXMgYXNzdW1lZC4gImZhY3RzIiBpcyBhIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHR5cGUKKyAgICAgICAgb2YgaW5mb3JtYXRpb24gZGVzaXJlZCAoZS5nLiBbInR5cGUiLCAic2l6ZSIsICJwZXJtIl0pLgorCisgICAgICAgIFJldHVybiBhIGdlbmVyYXRvciBvYmplY3QgeWllbGRpbmcgYSB0dXBsZSBvZiB0d28gZWxlbWVudHMKKyAgICAgICAgZm9yIGV2ZXJ5IGZpbGUgZm91bmQgaW4gcGF0aC4KKyAgICAgICAgRmlyc3QgZWxlbWVudCBpcyB0aGUgZmlsZSBuYW1lLCB0aGUgc2Vjb25kIG9uZSBpcyBhIGRpY3Rpb25hcnkKKyAgICAgICAgaW5jbHVkaW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mICJmYWN0cyIgZGVwZW5kaW5nIG9uIHRoZSBzZXJ2ZXIKKyAgICAgICAgYW5kIHdoZXRoZXIgImZhY3RzIiBhcmd1bWVudCBoYXMgYmVlbiBwcm92aWRlZC4KKyAgICAgICAgJycnCisgICAgICAgIGlmIGZhY3RzOgorICAgICAgICAgICAgc2VsZi5zZW5kY21kKCJPUFRTIE1MU1QgIiArICI7Ii5qb2luKGZhY3RzKSArICI7IikKKyAgICAgICAgaWYgcGF0aDoKKyAgICAgICAgICAgIGNtZCA9ICJNTFNEICVzIiAlIHBhdGgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNtZCA9ICJNTFNEIgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIHNlbGYucmV0cmxpbmVzKGNtZCwgbGluZXMuYXBwZW5kKQorICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgIGZhY3RzX2ZvdW5kLCBfLCBuYW1lID0gbGluZS5yc3RyaXAoQ1JMRikucGFydGl0aW9uKCcgJykKKyAgICAgICAgICAgIGVudHJ5ID0ge30KKyAgICAgICAgICAgIGZvciBmYWN0IGluIGZhY3RzX2ZvdW5kWzotMV0uc3BsaXQoIjsiKToKKyAgICAgICAgICAgICAgICBrZXksIF8sIHZhbHVlID0gZmFjdC5wYXJ0aXRpb24oIj0iKQorICAgICAgICAgICAgICAgIGVudHJ5W2tleS5sb3dlcigpXSA9IHZhbHVlCisgICAgICAgICAgICB5aWVsZCAobmFtZSwgZW50cnkpCisKICAgICBkZWYgcmVuYW1lKHNlbGYsIGZyb21uYW1lLCB0b25hbWUpOgogICAgICAgICAnJydSZW5hbWUgYSBmaWxlLicnJwogICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdSTkZSICcgKyBmcm9tbmFtZSkKQEAgLTU2MSwxMCArNTkxLDcgQEAKICAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGNtZCgnU0laRSAnICsgZmlsZW5hbWUpCiAgICAgICAgIGlmIHJlc3BbOjNdID09ICcyMTMnOgogICAgICAgICAgICAgcyA9IHJlc3BbMzpdLnN0cmlwKCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50KHMpCi0gICAgICAgICAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnQocykKKyAgICAgICAgICAgIHJldHVybiBpbnQocykKIAogICAgIGRlZiBta2Qoc2VsZiwgZGlybmFtZSk6CiAgICAgICAgICcnJ01ha2UgYSBkaXJlY3RvcnksIHJldHVybiBpdHMgZnVsbCBwYXRobmFtZS4nJycKQEAgLTU5NiwxMSArNjIzLDExIEBACiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICcnJ0Nsb3NlIHRoZSBjb25uZWN0aW9uIHdpdGhvdXQgYXNzdW1pbmcgYW55dGhpbmcgYWJvdXQgaXQuJycnCi0gICAgICAgIGlmIHNlbGYuZmlsZToKKyAgICAgICAgaWYgc2VsZi5maWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5zb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jayA9IE5vbmUKLQorICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2sgPSBOb25lCiAKIHRyeToKICAgICBpbXBvcnQgc3NsCkBAIC02NDQsNyArNjcxLDcgQEAKIAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBrZXlmaWxlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PV9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKKyAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9X0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQga2V5ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBrZXlmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCkBAIC02NTUsNyArNjgyLDcgQEAKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQogICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAogICAgICAgICAgICAgc2VsZi5fcHJvdF9wID0gRmFsc2UKLSAgICAgICAgICAgIEZUUC5fX2luaXRfXyhzZWxmLCBob3N0LCB1c2VyLCBwYXNzd2QsIGFjY3QsIHRpbWVvdXQpCisgICAgICAgICAgICBGVFAuX19pbml0X18oc2VsZiwgaG9zdCwgdXNlciwgcGFzc3dkLCBhY2N0LCB0aW1lb3V0LCBzb3VyY2VfYWRkcmVzcykKIAogICAgICAgICBkZWYgbG9naW4oc2VsZiwgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBzZWN1cmU9VHJ1ZSk6CiAgICAgICAgICAgICBpZiBzZWN1cmUgYW5kIG5vdCBpc2luc3RhbmNlKHNlbGYuc29jaywgc3NsLlNTTFNvY2tldCk6CkBAIC02NzksNiArNzA2LDE0IEBACiAgICAgICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2subWFrZWZpbGUobW9kZT0ncicsIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcpCiAgICAgICAgICAgICByZXR1cm4gcmVzcAogCisgICAgICAgIGRlZiBjY2Moc2VsZik6CisgICAgICAgICAgICAnJydTd2l0Y2ggYmFjayB0byBhIGNsZWFyLXRleHQgY29udHJvbCBjb25uZWN0aW9uLicnJworICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi5zb2NrLCBzc2wuU1NMU29ja2V0KToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgdXNpbmcgVExTIikKKyAgICAgICAgICAgIHJlc3AgPSBzZWxmLnZvaWRjbWQoJ0NDQycpCisgICAgICAgICAgICBzZWxmLnNvY2sgPSBzZWxmLnNvY2sudW53cmFwKCkKKyAgICAgICAgICAgIHJldHVybiByZXNwCisKICAgICAgICAgZGVmIHByb3RfcChzZWxmKToKICAgICAgICAgICAgICcnJ1NldCB1cCBzZWN1cmUgZGF0YSBjb25uZWN0aW9uLicnJwogICAgICAgICAgICAgIyBQUk9UIGRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGRhdGEgY2hhbm5lbCBpcyB0byBiZSBwcm90ZWN0ZWQuCkBAIC03MTUsOCArNzUwLDcgQEAKIAogICAgICAgICBkZWYgcmV0cmJpbmFyeShzZWxmLCBjbWQsIGNhbGxiYWNrLCBibG9ja3NpemU9ODE5MiwgcmVzdD1Ob25lKToKICAgICAgICAgICAgIHNlbGYudm9pZGNtZCgnVFlQRSBJJykKLSAgICAgICAgICAgIGNvbm4gPSBzZWxmLnRyYW5zZmVyY21kKGNtZCwgcmVzdCkKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi50cmFuc2ZlcmNtZChjbWQsIHJlc3QpIGFzIGNvbm46CiAgICAgICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGNvbm4ucmVjdihibG9ja3NpemUpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgpAQCAtNzI1LDggKzc1OSw2IEBACiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93biBzc2wgbGF5ZXIKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNzbC5TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQogCiAgICAgICAgIGRlZiByZXRybGluZXMoc2VsZiwgY21kLCBjYWxsYmFjayA9IE5vbmUpOgpAQCAtNzM0LDcgKzc2Niw3IEBACiAgICAgICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdUWVBFIEEnKQogICAgICAgICAgICAgY29ubiA9IHNlbGYudHJhbnNmZXJjbWQoY21kKQogICAgICAgICAgICAgZnAgPSBjb25uLm1ha2VmaWxlKCdyJywgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggZnAsIGNvbm46CiAgICAgICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2dpbmcgPiAyOiBwcmludCgnKnJldHIqJywgcmVwcihsaW5lKSkKQEAgLTc0OCwxNSArNzgwLDExIEBACiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93biBzc2wgbGF5ZXIKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNzbC5TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgICAgICBkZWYgc3RvcmJpbmFyeShzZWxmLCBjbWQsIGZwLCBibG9ja3NpemU9ODE5MiwgY2FsbGJhY2s9Tm9uZSwgcmVzdD1Ob25lKToKICAgICAgICAgICAgIHNlbGYudm9pZGNtZCgnVFlQRSBJJykKLSAgICAgICAgICAgIGNvbm4gPSBzZWxmLnRyYW5zZmVyY21kKGNtZCwgcmVzdCkKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi50cmFuc2ZlcmNtZChjbWQsIHJlc3QpIGFzIGNvbm46CiAgICAgICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZChibG9ja3NpemUpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6IGJyZWFrCkBAIC03NjUsMTQgKzc5MywxMSBAQAogICAgICAgICAgICAgICAgICMgc2h1dGRvd24gc3NsIGxheWVyCiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25uLCBzc2wuU1NMU29ja2V0KToKICAgICAgICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgICAgICBkZWYgc3RvcmxpbmVzKHNlbGYsIGNtZCwgZnAsIGNhbGxiYWNrPU5vbmUpOgogICAgICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEEnKQotICAgICAgICAgICAgY29ubiA9IHNlbGYudHJhbnNmZXJjbWQoY21kKQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLnRyYW5zZmVyY21kKGNtZCkgYXMgY29ubjoKICAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6IGJyZWFrCkBAIC03ODQsOCArODA5LDYgQEAKICAgICAgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29ubiwgc3NsLlNTTFNvY2tldCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4udW53cmFwKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi52b2lkcmVzcCgpCiAKICAgICAgICAgZGVmIGFib3J0KHNlbGYpOgpAQCAtODE4LDExICs4NDEsNyBAQAogICAgIG0gPSBfMTUwX3JlLm1hdGNoKHJlc3ApCiAgICAgaWYgbm90IG06CiAgICAgICAgIHJldHVybiBOb25lCi0gICAgcyA9IG0uZ3JvdXAoMSkKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBpbnQocykKLSAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICByZXR1cm4gaW50KHMpCisgICAgcmV0dXJuIGludChtLmdyb3VwKDEpKQogCiAKIF8yMjdfcmUgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvZnVuY3Rvb2xzLnB5IGIvTGliL2Z1bmN0b29scy5weQppbmRleCA4NWVhMjU3Li4yMjZhNDZlIDEwMDY0NAotLS0gYS9MaWIvZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi9mdW5jdG9vbHMucHkKQEAgLTEyLDE2ICsxMiwyMiBAQAogICAgICAgICAgICAndG90YWxfb3JkZXJpbmcnLCAnY21wX3RvX2tleScsICdscnVfY2FjaGUnLCAncmVkdWNlJywgJ3BhcnRpYWwnXQogCiBmcm9tIF9mdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwsIHJlZHVjZQotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIG5hbWVkdHVwbGUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIHRyeToKICAgICBmcm9tIF90aHJlYWQgaW1wb3J0IGFsbG9jYXRlX2xvY2sgYXMgTG9jawogZXhjZXB0OgogICAgIGZyb20gX2R1bW15X3RocmVhZCBpbXBvcnQgYWxsb2NhdGVfbG9jayBhcyBMb2NrCiAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyB1cGRhdGVfd3JhcHBlcigpIGFuZCB3cmFwcygpIGRlY29yYXRvcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwogIyB1cGRhdGVfd3JhcHBlcigpIGFuZCB3cmFwcygpIGFyZSB0b29scyB0byBoZWxwIHdyaXRlCiAjIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY2FuIGhhbmRsZSBuYWl2ZSBpbnRyb3NwZWN0aW9uCiAKLVdSQVBQRVJfQVNTSUdOTUVOVFMgPSAoJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19kb2NfXycsICdfX2Fubm90YXRpb25zX18nKQorV1JBUFBFUl9BU1NJR05NRU5UUyA9ICgnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3F1YWxuYW1lX18nLCAnX19kb2NfXycsCisgICAgICAgICAgICAgICAgICAgICAgICdfX2Fubm90YXRpb25zX18nKQogV1JBUFBFUl9VUERBVEVTID0gKCdfX2RpY3RfXycsKQogZGVmIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgd3JhcHBlZCwKQEAgLTY1LDYgKzcxLDExIEBACiAgICAgcmV0dXJuIHBhcnRpYWwodXBkYXRlX3dyYXBwZXIsIHdyYXBwZWQ9d3JhcHBlZCwKICAgICAgICAgICAgICAgICAgICBhc3NpZ25lZD1hc3NpZ25lZCwgdXBkYXRlZD11cGRhdGVkKQogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgdG90YWxfb3JkZXJpbmcgY2xhc3MgZGVjb3JhdG9yCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiBkZWYgdG90YWxfb3JkZXJpbmcoY2xzKToKICAgICAiIiJDbGFzcyBkZWNvcmF0b3IgdGhhdCBmaWxscyBpbiBtaXNzaW5nIG9yZGVyaW5nIG1ldGhvZHMiIiIKICAgICBjb252ZXJ0ID0gewpAQCAtOTMsNiArMTA0LDExIEBACiAgICAgICAgICAgICBzZXRhdHRyKGNscywgb3BuYW1lLCBvcGZ1bmMpCiAgICAgcmV0dXJuIGNscwogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgY21wX3RvX2tleSgpIGZ1bmN0aW9uIGNvbnZlcnRlcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwogZGVmIGNtcF90b19rZXkobXljbXApOgogICAgICIiIkNvbnZlcnQgYSBjbXA9IGZ1bmN0aW9uIGludG8gYSBrZXk9IGZ1bmN0aW9uIiIiCiAgICAgY2xhc3MgSyhvYmplY3QpOgpAQCAtMTE0LDk1ICsxMzAsMTc0IEBACiAgICAgICAgIF9faGFzaF9fID0gTm9uZQogICAgIHJldHVybiBLCiAKLV9DYWNoZUluZm8gPSBuYW1lZHR1cGxlKCJDYWNoZUluZm8iLCAiaGl0cyBtaXNzZXMgbWF4c2l6ZSBjdXJyc2l6ZSIpCit0cnk6CisgICAgZnJvbSBfZnVuY3Rvb2xzIGltcG9ydCBjbXBfdG9fa2V5CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcwogCi1kZWYgbHJ1X2NhY2hlKG1heHNpemU9MTAwKToKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyBMUlUgQ2FjaGUgZnVuY3Rpb24gZGVjb3JhdG9yCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitfQ2FjaGVJbmZvID0gbmFtZWR0dXBsZSgiQ2FjaGVJbmZvIiwgWyJoaXRzIiwgIm1pc3NlcyIsICJtYXhzaXplIiwgImN1cnJzaXplIl0pCisKK2NsYXNzIF9IYXNoZWRTZXEobGlzdCk6CisgICAgX19zbG90c19fID0gJ2hhc2h2YWx1ZScKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0dXAsIGhhc2g9aGFzaCk6CisgICAgICAgIHNlbGZbOl0gPSB0dXAKKyAgICAgICAgc2VsZi5oYXNodmFsdWUgPSBoYXNoKHR1cCkKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaGFzaHZhbHVlCisKK2RlZiBfbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQsCisgICAgICAgICAgICAga3dkX21hcmsgPSAob2JqZWN0KCksKSwKKyAgICAgICAgICAgICBmYXN0dHlwZXMgPSB7aW50LCBzdHIsIGZyb3plbnNldCwgdHlwZShOb25lKX0sCisgICAgICAgICAgICAgc29ydGVkPXNvcnRlZCwgdHVwbGU9dHVwbGUsIHR5cGU9dHlwZSwgbGVuPWxlbik6CisgICAgJ01ha2UgYSBjYWNoZSBrZXkgZnJvbSBvcHRpb25hbGx5IHR5cGVkIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzJworICAgIGtleSA9IGFyZ3MKKyAgICBpZiBrd2RzOgorICAgICAgICBzb3J0ZWRfaXRlbXMgPSBzb3J0ZWQoa3dkcy5pdGVtcygpKQorICAgICAgICBrZXkgKz0ga3dkX21hcmsKKyAgICAgICAgZm9yIGl0ZW0gaW4gc29ydGVkX2l0ZW1zOgorICAgICAgICAgICAga2V5ICs9IGl0ZW0KKyAgICBpZiB0eXBlZDoKKyAgICAgICAga2V5ICs9IHR1cGxlKHR5cGUodikgZm9yIHYgaW4gYXJncykKKyAgICAgICAgaWYga3dkczoKKyAgICAgICAgICAgIGtleSArPSB0dXBsZSh0eXBlKHYpIGZvciBrLCB2IGluIHNvcnRlZF9pdGVtcykKKyAgICBlbGlmIGxlbihrZXkpID09IDEgYW5kIHR5cGUoa2V5WzBdKSBpbiBmYXN0dHlwZXM6CisgICAgICAgIHJldHVybiBrZXlbMF0KKyAgICByZXR1cm4gX0hhc2hlZFNlcShrZXkpCisKK2RlZiBscnVfY2FjaGUobWF4c2l6ZT0xMjgsIHR5cGVkPUZhbHNlKToKICAgICAiIiJMZWFzdC1yZWNlbnRseS11c2VkIGNhY2hlIGRlY29yYXRvci4KIAogICAgIElmICptYXhzaXplKiBpcyBzZXQgdG8gTm9uZSwgdGhlIExSVSBmZWF0dXJlcyBhcmUgZGlzYWJsZWQgYW5kIHRoZSBjYWNoZQogICAgIGNhbiBncm93IHdpdGhvdXQgYm91bmQuCiAKKyAgICBJZiAqdHlwZWQqIGlzIFRydWUsIGFyZ3VtZW50cyBvZiBkaWZmZXJlbnQgdHlwZXMgd2lsbCBiZSBjYWNoZWQgc2VwYXJhdGVseS4KKyAgICBGb3IgZXhhbXBsZSwgZigzLjApIGFuZCBmKDMpIHdpbGwgYmUgdHJlYXRlZCBhcyBkaXN0aW5jdCBjYWxscyB3aXRoCisgICAgZGlzdGluY3QgcmVzdWx0cy4KKwogICAgIEFyZ3VtZW50cyB0byB0aGUgY2FjaGVkIGZ1bmN0aW9uIG11c3QgYmUgaGFzaGFibGUuCiAKLSAgICBWaWV3IHRoZSBjYWNoZSBzdGF0aXN0aWNzIG5hbWVkIHR1cGxlIChoaXRzLCBtaXNzZXMsIG1heHNpemUsIGN1cnJzaXplKSB3aXRoCi0gICAgZi5jYWNoZV9pbmZvKCkuICBDbGVhciB0aGUgY2FjaGUgYW5kIHN0YXRpc3RpY3Mgd2l0aCBmLmNhY2hlX2NsZWFyKCkuCisgICAgVmlldyB0aGUgY2FjaGUgc3RhdGlzdGljcyBuYW1lZCB0dXBsZSAoaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSkKKyAgICB3aXRoIGYuY2FjaGVfaW5mbygpLiAgQ2xlYXIgdGhlIGNhY2hlIGFuZCBzdGF0aXN0aWNzIHdpdGggZi5jYWNoZV9jbGVhcigpLgogICAgIEFjY2VzcyB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiB3aXRoIGYuX193cmFwcGVkX18uCiAKICAgICBTZWU6ICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhY2hlX2FsZ29yaXRobXMjTGVhc3RfUmVjZW50bHlfVXNlZAogCiAgICAgIiIiCisKICAgICAjIFVzZXJzIHNob3VsZCBvbmx5IGFjY2VzcyB0aGUgbHJ1X2NhY2hlIHRocm91Z2ggaXRzIHB1YmxpYyBBUEk6CiAgICAgIyAgICAgICBjYWNoZV9pbmZvLCBjYWNoZV9jbGVhciwgYW5kIGYuX193cmFwcGVkX18KICAgICAjIFRoZSBpbnRlcm5hbHMgb2YgdGhlIGxydV9jYWNoZSBhcmUgZW5jYXBzdWxhdGVkIGZvciB0aHJlYWQgc2FmZXR5IGFuZAogICAgICMgdG8gYWxsb3cgdGhlIGltcGxlbWVudGF0aW9uIHRvIGNoYW5nZSAoaW5jbHVkaW5nIGEgcG9zc2libGUgQyB2ZXJzaW9uKS4KIAotICAgIGRlZiBkZWNvcmF0aW5nX2Z1bmN0aW9uKHVzZXJfZnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgdHVwbGU9dHVwbGUsIHNvcnRlZD1zb3J0ZWQsIGxlbj1sZW4sIEtleUVycm9yPUtleUVycm9yKToKKyAgICAjIENvbnN0YW50cyBzaGFyZWQgYnkgYWxsIGxydSBjYWNoZSBpbnN0YW5jZXM6CisgICAgc2VudGluZWwgPSBvYmplY3QoKSAgICAgICAgICAjIHVuaXF1ZSBvYmplY3QgdXNlZCB0byBzaWduYWwgY2FjaGUgbWlzc2VzCisgICAgbWFrZV9rZXkgPSBfbWFrZV9rZXkgICAgICAgICAjIGJ1aWxkIGEga2V5IGZyb20gdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cworICAgIFBSRVYsIE5FWFQsIEtFWSwgUkVTVUxUID0gMCwgMSwgMiwgMyAgICMgbmFtZXMgZm9yIHRoZSBsaW5rIGZpZWxkcwogCi0gICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCi0gICAgICAgIGt3ZF9tYXJrID0gKG9iamVjdCgpLCkgICAgICAgICAgIyBzZXBhcmF0ZXMgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmdzCi0gICAgICAgIGxvY2sgPSBMb2NrKCkgICAgICAgICAgICAgICAgICAgIyBuZWVkZWQgYmVjYXVzZSBPcmRlcmVkRGljdCBpc24ndCB0aHJlYWRzYWZlCisgICAgZGVmIGRlY29yYXRpbmdfZnVuY3Rpb24odXNlcl9mdW5jdGlvbik6CiAKLSAgICAgICAgaWYgbWF4c2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgY2FjaGUgPSBkaWN0KCkgICAgICAgICAgICAgICMgc2ltcGxlIGNhY2hlIHdpdGhvdXQgb3JkZXJpbmcgb3Igc2l6ZSBsaW1pdAorICAgICAgICBjYWNoZSA9IHt9CisgICAgICAgIGhpdHMgPSBtaXNzZXMgPSBjdXJyc2l6ZSA9IDAKKyAgICAgICAgZnVsbCA9IEZhbHNlCisgICAgICAgIGNhY2hlX2dldCA9IGNhY2hlLmdldCAgICAjIGJvdW5kIG1ldGhvZCB0byBsb29rdXAgYSBrZXkgb3IgcmV0dXJuIE5vbmUKKyAgICAgICAgbG9jayA9IExvY2soKSAgICAgICAgICAgICMgYmVjYXVzZSBsaW5rZWRsaXN0IHVwZGF0ZXMgYXJlbid0IHRocmVhZHNhZmUKKyAgICAgICAgcm9vdCA9IFtdICAgICAgICAgICAgICAgICMgcm9vdCBvZiB0aGUgY2lyY3VsYXIgZG91Ymx5IGxpbmtlZCBsaXN0CisgICAgICAgIHJvb3RbOl0gPSBbcm9vdCwgcm9vdCwgTm9uZSwgTm9uZV0gICAgICMgaW5pdGlhbGl6ZSBieSBwb2ludGluZyB0byBzZWxmCiAKLSAgICAgICAgICAgIEB3cmFwcyh1c2VyX2Z1bmN0aW9uKQorICAgICAgICBpZiBtYXhzaXplID09IDA6CisKICAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgotICAgICAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcwotICAgICAgICAgICAgICAgIGtleSA9IGFyZ3MKLSAgICAgICAgICAgICAgICBpZiBrd2RzOgotICAgICAgICAgICAgICAgICAgICBrZXkgKz0ga3dkX21hcmsgKyB0dXBsZShzb3J0ZWQoa3dkcy5pdGVtcygpKSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhY2hlW2tleV0KKyAgICAgICAgICAgICAgICAjIG5vIGNhY2hpbmcsIGp1c3QgYSBzdGF0aXN0aWNzIHVwZGF0ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbAorICAgICAgICAgICAgICAgIG5vbmxvY2FsIG1pc3NlcworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKKyAgICAgICAgICAgICAgICBtaXNzZXMgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICAgICBlbGlmIG1heHNpemUgaXMgTm9uZToKKworICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAgICAgIyBzaW1wbGUgY2FjaGluZyB3aXRob3V0IG9yZGVyaW5nIG9yIHNpemUgbGltaXQKKyAgICAgICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMsIGN1cnJzaXplCisgICAgICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FjaGVfZ2V0KGtleSwgc2VudGluZWwpCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBzZW50aW5lbDoKICAgICAgICAgICAgICAgICAgICAgaGl0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCiAgICAgICAgICAgICAgICAgY2FjaGVba2V5XSA9IHJlc3VsdAogICAgICAgICAgICAgICAgIG1pc3NlcyArPSAxCisgICAgICAgICAgICAgICAgY3VycnNpemUgKz0gMQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNhY2hlID0gT3JkZXJlZERpY3QoKSAgICAgICAgICAgIyBvcmRlcmVkIGxlYXN0IHJlY2VudCB0byBtb3N0IHJlY2VudAotICAgICAgICAgICAgY2FjaGVfcG9waXRlbSA9IGNhY2hlLnBvcGl0ZW0KLSAgICAgICAgICAgIGNhY2hlX3JlbmV3ID0gY2FjaGUubW92ZV90b19lbmQKIAotICAgICAgICAgICAgQHdyYXBzKHVzZXJfZnVuY3Rpb24pCisgICAgICAgIGVsc2U6CisKICAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgotICAgICAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcwotICAgICAgICAgICAgICAgIGtleSA9IGFyZ3MKLSAgICAgICAgICAgICAgICBpZiBrd2RzOgotICAgICAgICAgICAgICAgICAgICBrZXkgKz0ga3dkX21hcmsgKyB0dXBsZShzb3J0ZWQoa3dkcy5pdGVtcygpKSkKKyAgICAgICAgICAgICAgICAjIHNpemUgbGltaXRlZCBjYWNoaW5nIHRoYXQgdHJhY2tzIGFjY2Vzc2VzIGJ5IHJlY2VuY3kKKyAgICAgICAgICAgICAgICBub25sb2NhbCByb290LCBoaXRzLCBtaXNzZXMsIGN1cnJzaXplLCBmdWxsCisgICAgICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCiAgICAgICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjYWNoZVtrZXldCi0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9yZW5ldyhrZXkpICAgICMgcmVjb3JkIHJlY2VudCB1c2Ugb2YgdGhpcyBrZXkKKyAgICAgICAgICAgICAgICAgICAgbGluayA9IGNhY2hlX2dldChrZXkpCisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmsgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIG1vdmUgdGhlIGxpbmsgdG8gdGhlIGZyb250IG9mIHRoZSBjaXJjdWxhciBxdWV1ZQorICAgICAgICAgICAgICAgICAgICAgICAgbGlua19wcmV2LCBsaW5rX25leHQsIGtleSwgcmVzdWx0ID0gbGluaworICAgICAgICAgICAgICAgICAgICAgICAgbGlua19wcmV2W05FWFRdID0gbGlua19uZXh0CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rX25leHRbUFJFVl0gPSBsaW5rX3ByZXYKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSByb290W1BSRVZdCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtbUFJFVl0gPSBsYXN0CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rW05FWFRdID0gcm9vdAogICAgICAgICAgICAgICAgICAgICAgICAgaGl0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCiAgICAgICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gcmVzdWx0ICAgICAjIHJlY29yZCByZWNlbnQgdXNlIG9mIHRoaXMga2V5CisgICAgICAgICAgICAgICAgICAgIGlmIGtleSBpbiBjYWNoZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0dGluZyBoZXJlIG1lYW5zIHRoYXQgdGhpcyBzYW1lIGtleSB3YXMgYWRkZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGNhY2hlIHdoaWxlIHRoZSBsb2NrIHdhcyByZWxlYXNlZC4gIHNpbmNlIHRoZSBsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZSBpcyBhbHJlYWR5IGRvbmUsIHdlIG5lZWQgb25seSByZXR1cm4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbXB1dGVkIHJlc3VsdCBhbmQgdXBkYXRlIHRoZSBjb3VudCBvZiBtaXNzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGVsaWYgZnVsbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlIHJvb3QgdG8gc3RvcmUgdGhlIG5ldyBrZXkgYW5kIHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdFtLRVldID0ga2V5CisgICAgICAgICAgICAgICAgICAgICAgICByb290W1JFU1VMVF0gPSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSByb290CisgICAgICAgICAgICAgICAgICAgICAgICAjIGVtcHR5IHRoZSBvbGRlc3QgbGluayBhbmQgbWFrZSBpdCB0aGUgbmV3IHJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QgPSByb290W05FWFRdCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgY2FjaGVbcm9vdFtLRVldXQorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdFtLRVldID0gcm9vdFtSRVNVTFRdID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBwdXQgcmVzdWx0IGluIGEgbmV3IGxpbmsgYXQgdGhlIGZyb250IG9mIHRoZSBxdWV1ZQorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBbbGFzdCwgcm9vdCwga2V5LCByZXN1bHRdCisgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gbGFzdFtORVhUXSA9IHJvb3RbUFJFVl0gPSBsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyc2l6ZSArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBmdWxsID0gKGN1cnJzaXplID09IG1heHNpemUpCiAgICAgICAgICAgICAgICAgICAgIG1pc3NlcyArPSAxCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihjYWNoZSkgPiBtYXhzaXplOgotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfcG9waXRlbSgwKSAgICAjIHB1cmdlIGxlYXN0IHJlY2VudGx5IHVzZWQgY2FjaGUgZW50cnkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICAgICAgZGVmIGNhY2hlX2luZm8oKToKICAgICAgICAgICAgICIiIlJlcG9ydCBjYWNoZSBzdGF0aXN0aWNzIiIiCiAgICAgICAgICAgICB3aXRoIGxvY2s6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9DYWNoZUluZm8oaGl0cywgbWlzc2VzLCBtYXhzaXplLCBsZW4oY2FjaGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBfQ2FjaGVJbmZvKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgY3VycnNpemUpCiAKICAgICAgICAgZGVmIGNhY2hlX2NsZWFyKCk6CiAgICAgICAgICAgICAiIiJDbGVhciB0aGUgY2FjaGUgYW5kIGNhY2hlIHN0YXRpc3RpY3MiIiIKLSAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcworICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzLCBjdXJyc2l6ZSwgZnVsbAogICAgICAgICAgICAgd2l0aCBsb2NrOgogICAgICAgICAgICAgICAgIGNhY2hlLmNsZWFyKCkKLSAgICAgICAgICAgICAgICBoaXRzID0gbWlzc2VzID0gMAorICAgICAgICAgICAgICAgIHJvb3RbOl0gPSBbcm9vdCwgcm9vdCwgTm9uZSwgTm9uZV0KKyAgICAgICAgICAgICAgICBoaXRzID0gbWlzc2VzID0gY3VycnNpemUgPSAwCisgICAgICAgICAgICAgICAgZnVsbCA9IEZhbHNlCiAKICAgICAgICAgd3JhcHBlci5jYWNoZV9pbmZvID0gY2FjaGVfaW5mbwogICAgICAgICB3cmFwcGVyLmNhY2hlX2NsZWFyID0gY2FjaGVfY2xlYXIKLSAgICAgICAgcmV0dXJuIHdyYXBwZXIKKyAgICAgICAgcmV0dXJuIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHVzZXJfZnVuY3Rpb24pCiAKICAgICByZXR1cm4gZGVjb3JhdGluZ19mdW5jdGlvbgpkaWZmIC0tZ2l0IGEvTGliL2dldG9wdC5weSBiL0xpYi9nZXRvcHQucHkKaW5kZXggOTgwODYxZC4uM2Q2ZWNiZCAxMDA2NDQKLS0tIGEvTGliL2dldG9wdC5weQorKysgYi9MaWIvZ2V0b3B0LnB5CkBAIC0xOSw3ICsxOSw3IEBACiAjIEdlcnJpdCBIb2xsIDxnZXJyaXRAbmwubGludXgub3JnPiBtb3ZlZCB0aGUgc3RyaW5nLWJhc2VkIGV4Y2VwdGlvbnMKICMgdG8gY2xhc3MtYmFzZWQgZXhjZXB0aW9ucy4KICMKLSMgUGV0ZXIgw4PChXN0cmFuZCA8YXN0cmFuZEBseXNhdG9yLmxpdS5zZT4gYWRkZWQgZ251X2dldG9wdCgpLgorIyBQZXRlciDDhXN0cmFuZCA8YXN0cmFuZEBseXNhdG9yLmxpdS5zZT4gYWRkZWQgZ251X2dldG9wdCgpLgogIwogIyBUT0RPIGZvciBnbnVfZ2V0b3B0KCk6CiAjCkBAIC0zNCw2ICszNCwxMSBAQAogX19hbGxfXyA9IFsiR2V0b3B0RXJyb3IiLCJlcnJvciIsImdldG9wdCIsImdudV9nZXRvcHQiXQogCiBpbXBvcnQgb3MKK3RyeToKKyAgICBmcm9tIGdldHRleHQgaW1wb3J0IGdldHRleHQgYXMgXworZXhjZXB0IEltcG9ydEVycm9yOgorICAgICMgQm9vdHN0cmFwcGluZyBQeXRob246IGdldHRleHQncyBkZXBlbmRlbmNpZXMgbm90IGJ1aWx0IHlldAorICAgIGRlZiBfKHMpOiByZXR1cm4gcwogCiBjbGFzcyBHZXRvcHRFcnJvcihFeGNlcHRpb24pOgogICAgIG9wdCA9ICcnCkBAIC0xNTMsMTAgKzE1OCwxMCBAQAogICAgIGlmIGhhc19hcmc6CiAgICAgICAgIGlmIG9wdGFyZyBpcyBOb25lOgogICAgICAgICAgICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgICAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtLSVzIHJlcXVpcmVzIGFyZ3VtZW50JyAlIG9wdCwgb3B0KQorICAgICAgICAgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIHJlcXVpcmVzIGFyZ3VtZW50JykgJSBvcHQsIG9wdCkKICAgICAgICAgICAgIG9wdGFyZywgYXJncyA9IGFyZ3NbMF0sIGFyZ3NbMTpdCiAgICAgZWxpZiBvcHRhcmcgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLS0lcyBtdXN0IG5vdCBoYXZlIGFuIGFyZ3VtZW50JyAlIG9wdCwgb3B0KQorICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLS0lcyBtdXN0IG5vdCBoYXZlIGFuIGFyZ3VtZW50JykgJSBvcHQsIG9wdCkKICAgICBvcHRzLmFwcGVuZCgoJy0tJyArIG9wdCwgb3B0YXJnIG9yICcnKSkKICAgICByZXR1cm4gb3B0cywgYXJncwogCkBAIC0xNjYsNyArMTcxLDcgQEAKIGRlZiBsb25nX2hhc19hcmdzKG9wdCwgbG9uZ29wdHMpOgogICAgIHBvc3NpYmlsaXRpZXMgPSBbbyBmb3IgbyBpbiBsb25nb3B0cyBpZiBvLnN0YXJ0c3dpdGgob3B0KV0KICAgICBpZiBub3QgcG9zc2liaWxpdGllczoKLSAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtLSVzIG5vdCByZWNvZ25pemVkJyAlIG9wdCwgb3B0KQorICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLS0lcyBub3QgcmVjb2duaXplZCcpICUgb3B0LCBvcHQpCiAgICAgIyBJcyB0aGVyZSBhbiBleGFjdCBtYXRjaD8KICAgICBpZiBvcHQgaW4gcG9zc2liaWxpdGllczoKICAgICAgICAgcmV0dXJuIEZhbHNlLCBvcHQKQEAgLTE3Niw3ICsxODEsNyBAQAogICAgIGlmIGxlbihwb3NzaWJpbGl0aWVzKSA+IDE6CiAgICAgICAgICMgWFhYIHNpbmNlIHBvc3NpYmlsaXRpZXMgY29udGFpbnMgYWxsIHZhbGlkIGNvbnRpbnVhdGlvbnMsIG1pZ2h0IGJlCiAgICAgICAgICMgbmljZSB0byB3b3JrIHRoZW0gaW50byB0aGUgZXJyb3IgbXNnCi0gICAgICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLS0lcyBub3QgYSB1bmlxdWUgcHJlZml4JyAlIG9wdCwgb3B0KQorICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLS0lcyBub3QgYSB1bmlxdWUgcHJlZml4JykgJSBvcHQsIG9wdCkKICAgICBhc3NlcnQgbGVuKHBvc3NpYmlsaXRpZXMpID09IDEKICAgICB1bmlxdWVfbWF0Y2ggPSBwb3NzaWJpbGl0aWVzWzBdCiAgICAgaGFzX2FyZyA9IHVuaXF1ZV9tYXRjaC5lbmRzd2l0aCgnPScpCkBAIC0xOTAsNyArMTk1LDcgQEAKICAgICAgICAgaWYgc2hvcnRfaGFzX2FyZyhvcHQsIHNob3J0b3B0cyk6CiAgICAgICAgICAgICBpZiBvcHRzdHJpbmcgPT0gJyc6CiAgICAgICAgICAgICAgICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLSVzIHJlcXVpcmVzIGFyZ3VtZW50JyAlIG9wdCwKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoXygnb3B0aW9uIC0lcyByZXF1aXJlcyBhcmd1bWVudCcpICUgb3B0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHQpCiAgICAgICAgICAgICAgICAgb3B0c3RyaW5nLCBhcmdzID0gYXJnc1swXSwgYXJnc1sxOl0KICAgICAgICAgICAgIG9wdGFyZywgb3B0c3RyaW5nID0gb3B0c3RyaW5nLCAnJwpAQCAtMjAzLDcgKzIwOCw3IEBACiAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHNob3J0b3B0cykpOgogICAgICAgICBpZiBvcHQgPT0gc2hvcnRvcHRzW2ldICE9ICc6JzoKICAgICAgICAgICAgIHJldHVybiBzaG9ydG9wdHMuc3RhcnRzd2l0aCgnOicsIGkrMSkKLSAgICByYWlzZSBHZXRvcHRFcnJvcignb3B0aW9uIC0lcyBub3QgcmVjb2duaXplZCcgJSBvcHQsIG9wdCkKKyAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLSVzIG5vdCByZWNvZ25pemVkJykgJSBvcHQsIG9wdCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9MaWIvZ2V0cGFzcy5weSBiL0xpYi9nZXRwYXNzLnB5CmluZGV4IGRjMDJiZDEuLjAwNDQ3NDIgMTAwNjQ0Ci0tLSBhL0xpYi9nZXRwYXNzLnB5CisrKyBiL0xpYi9nZXRwYXNzLnB5CkBAIC03Miw3ICs3Miw3IEBACiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHRlcm1pb3MudGNzZXRhdHRyKGZkLCB0Y3NldGF0dHJfZmxhZ3MsIG9sZCkKICAgICAgICAgICAgICAgICBzdHJlYW0uZmx1c2goKSAgIyBpc3N1ZTcyMDgKLSAgICAgICAgZXhjZXB0IHRlcm1pb3MuZXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IHRlcm1pb3MuZXJyb3I6CiAgICAgICAgICAgICBpZiBwYXNzd2QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgIyBfcmF3X2lucHV0IHN1Y2NlZWRlZC4gIFRoZSBmaW5hbCB0Y3NldGF0dHIgZmFpbGVkLiAgUmVyYWlzZQogICAgICAgICAgICAgICAgICMgaW5zdGVhZCBvZiBsZWF2aW5nIHRoZSB0ZXJtaW5hbCBpbiBhbiB1bmtub3duIHN0YXRlLgpAQCAtMTQ1LDggKzE0NSw2IEBACiAKICAgICAiIiIKIAotICAgIGltcG9ydCBvcwotCiAgICAgZm9yIG5hbWUgaW4gKCdMT0dOQU1FJywgJ1VTRVInLCAnTE5BTUUnLCAnVVNFUk5BTUUnKToKICAgICAgICAgdXNlciA9IG9zLmVudmlyb24uZ2V0KG5hbWUpCiAgICAgICAgIGlmIHVzZXI6CmRpZmYgLS1naXQgYS9MaWIvZ2V0dGV4dC5weSBiL0xpYi9nZXR0ZXh0LnB5CmluZGV4IDI1NmUzMzEuLmU0M2YwNDQgMTAwNjQ0Ci0tLSBhL0xpYi9nZXR0ZXh0LnB5CisrKyBiL0xpYi9nZXR0ZXh0LnB5CkBAIC01NSw3ICs1NSw3IEBACiAgICAgICAgICAgICdkZ2V0dGV4dCcsICdkbmdldHRleHQnLCAnZ2V0dGV4dCcsICduZ2V0dGV4dCcsCiAgICAgICAgICAgIF0KIAotX2RlZmF1bHRfbG9jYWxlZGlyID0gb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICdzaGFyZScsICdsb2NhbGUnKQorX2RlZmF1bHRfbG9jYWxlZGlyID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgJ3NoYXJlJywgJ2xvY2FsZScpCiAKIAogZGVmIGMycHkocGx1cmFsKToKZGlmZiAtLWdpdCBhL0xpYi9nemlwLnB5IGIvTGliL2d6aXAucHkKaW5kZXggZWU0NWU1MC4uYjY2NTZhOSAxMDA2NDQKLS0tIGEvTGliL2d6aXAucHkKKysrIGIvTGliL2d6aXAucHkKQEAgLTE2LDE3ICsxNiw0OSBAQAogCiBSRUFELCBXUklURSA9IDEsIDIKIAotZGVmIFUzMihpKToKLSAgICAiIiJSZXR1cm4gaSBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyLCBhc3N1bWluZyBpdCBmaXRzIGluIDMyIGJpdHMuCi0gICAgSWYgaXQncyA+PSAyR0Igd2hlbiB2aWV3ZWQgYXMgYSAzMi1iaXQgdW5zaWduZWQgaW50LCByZXR1cm4gYSBsb25nLgotICAgICIiIgotICAgIGlmIGkgPCAwOgotICAgICAgICBpICs9IDEgPDwgMzIKLSAgICByZXR1cm4gaQorZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgY29tcHJlc3NsZXZlbD05LAorICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CisgICAgIiIiT3BlbiBhIGd6aXAtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCiAKLWRlZiBMT1dVMzIoaSk6Ci0gICAgIiIiUmV0dXJuIHRoZSBsb3ctb3JkZXIgMzIgYml0cywgYXMgYSBub24tbmVnYXRpdmUgaW50IiIiCi0gICAgcmV0dXJuIGkgJiAweEZGRkZGRkZGCisgICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyIG9yIGJ5dGVzIG9iamVjdCksIG9yCisgICAgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICAgVGhlIG1vZGUgYXJndW1lbnQgY2FuIGJlICJyIiwgInJiIiwgInciLCAid2IiLCAiYSIgb3IgImFiIiBmb3IgYmluYXJ5IG1vZGUsCisgICAgb3IgInJ0IiwgInd0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IG1vZGUgaXMgInJiIiwgYW5kIHRoZQorICAgIGRlZmF1bHQgY29tcHJlc3NsZXZlbCBpcyA5LgorCisgICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIEd6aXBGaWxlIGNvbnN0cnVjdG9yOgorICAgIEd6aXBGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKS4gSW4gdGhpcyBjYXNlLCB0aGUgZW5jb2RpbmcsIGVycm9ycworICAgIGFuZCBuZXdsaW5lIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgIEZvciB0ZXh0IG1vZGUsIGEgR3ppcEZpbGUgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICAgaW8uVGV4dElPV3JhcHBlciBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yIGhhbmRsaW5nCisgICAgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKworICAgICIiIgorICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICBpZiAiYiIgaW4gbW9kZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogJXIiICUgKG1vZGUsKSkKKyAgICBlbHNlOgorICAgICAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICdlbmNvZGluZycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIGVycm9ycyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICdlcnJvcnMnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ25ld2xpbmUnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorCisgICAgZ3pfbW9kZSA9IG1vZGUucmVwbGFjZSgidCIsICIiKQorICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIGJpbmFyeV9maWxlID0gR3ppcEZpbGUoZmlsZW5hbWUsIGd6X21vZGUsIGNvbXByZXNzbGV2ZWwpCisgICAgZWxpZiBoYXNhdHRyKGZpbGVuYW1lLCAicmVhZCIpIG9yIGhhc2F0dHIoZmlsZW5hbWUsICJ3cml0ZSIpOgorICAgICAgICBiaW5hcnlfZmlsZSA9IEd6aXBGaWxlKE5vbmUsIGd6X21vZGUsIGNvbXByZXNzbGV2ZWwsIGZpbGVuYW1lKQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciBvciBieXRlcyBvYmplY3QsIG9yIGEgZmlsZSIpCisKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgcmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoYmluYXJ5X2ZpbGUsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGJpbmFyeV9maWxlCiAKIGRlZiB3cml0ZTMydShvdXRwdXQsIHZhbHVlKToKICAgICAjIFRoZSBMIGZvcm1hdCB3cml0ZXMgdGhlIGJpdCBwYXR0ZXJuIGNvcnJlY3RseSB3aGV0aGVyIHNpZ25lZApAQCAtMzYsMTUgKzY4LDYgQEAKIGRlZiByZWFkMzIoaW5wdXQpOgogICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKCI8SSIsIGlucHV0LnJlYWQoNCkpWzBdCiAKLWRlZiBvcGVuKGZpbGVuYW1lLCBtb2RlPSJyYiIsIGNvbXByZXNzbGV2ZWw9OSk6Ci0gICAgIiIiU2hvcnRoYW5kIGZvciBHemlwRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbCkuCi0KLSAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgaXMgcmVxdWlyZWQ7IG1vZGUgZGVmYXVsdHMgdG8gJ3JiJwotICAgIGFuZCBjb21wcmVzc2xldmVsIGRlZmF1bHRzIHRvIDkuCi0KLSAgICAiIiIKLSAgICByZXR1cm4gR3ppcEZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpCi0KIGNsYXNzIF9QYWRkZWRGaWxlOgogICAgICIiIk1pbmltYWwgcmVhZC1vbmx5IGZpbGUgb2JqZWN0IHRoYXQgcHJlcGVuZHMgYSBzdHJpbmcgdG8gdGhlIGNvbnRlbnRzCiAgICAgb2YgYW4gYWN0dWFsIGZpbGUuIFNob3VsZG4ndCBiZSB1c2VkIG91dHNpZGUgb2YgZ3ppcC5weSwgYXMgaXQgbGFja3MKQEAgLTEwNiw3ICsxMjksNyBAQAogICAgIHRoZSBleGNlcHRpb24gb2YgdGhlIHJlYWRpbnRvKCkgYW5kIHRydW5jYXRlKCkgbWV0aG9kcy4KIAogICAgIFRoaXMgY2xhc3Mgb25seSBzdXBwb3J0cyBvcGVuaW5nIGZpbGVzIGluIGJpbmFyeSBtb2RlLiBJZiB5b3UgbmVlZCB0byBvcGVuIGEKLSAgICBjb21wcmVzc2VkIGZpbGUgaW4gdGV4dCBtb2RlLCB3cmFwIHlvdXIgR3ppcEZpbGUgd2l0aCBhbiBpby5UZXh0SU9XcmFwcGVyLgorICAgIGNvbXByZXNzZWQgZmlsZSBpbiB0ZXh0IG1vZGUsIHVzZSB0aGUgZ3ppcC5vcGVuKCkgZnVuY3Rpb24uCiAKICAgICAiIiIKIApAQCAtMTUzLDcgKzE3Niw3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIGlmIG1vZGUgYW5kICgndCcgaW4gbW9kZSBvciAnVScgaW4gbW9kZSk6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJNb2RlICIgKyBtb2RlICsgIiBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQogICAgICAgICBpZiBtb2RlIGFuZCAnYicgbm90IGluIG1vZGU6CiAgICAgICAgICAgICBtb2RlICs9ICdiJwogICAgICAgICBpZiBmaWxlb2JqIGlzIE5vbmU6CkBAIC0xNjMsMTAgKzE4Niw5IEBACiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICcnCiAgICAgICAgIGlmIG1vZGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoZmlsZW9iaiwgJ21vZGUnKTogbW9kZSA9IGZpbGVvYmoubW9kZQotICAgICAgICAgICAgZWxzZTogbW9kZSA9ICdyYicKKyAgICAgICAgICAgIG1vZGUgPSBnZXRhdHRyKGZpbGVvYmosICdtb2RlJywgJ3JiJykKIAotICAgICAgICBpZiBtb2RlWzA6MV0gPT0gJ3InOgorICAgICAgICBpZiBtb2RlLnN0YXJ0c3dpdGgoJ3InKToKICAgICAgICAgICAgIHNlbGYubW9kZSA9IFJFQUQKICAgICAgICAgICAgICMgU2V0IGZsYWcgaW5kaWNhdGluZyBzdGFydCBvZiBhIG5ldyBtZW1iZXIKICAgICAgICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCkBAIC0xODEsNyArMjAzLDcgQEAKICAgICAgICAgICAgIHNlbGYubWluX3JlYWRzaXplID0gMTAwCiAgICAgICAgICAgICBmaWxlb2JqID0gX1BhZGRlZEZpbGUoZmlsZW9iaikKIAotICAgICAgICBlbGlmIG1vZGVbMDoxXSA9PSAndycgb3IgbW9kZVswOjFdID09ICdhJzoKKyAgICAgICAgZWxpZiBtb2RlLnN0YXJ0c3dpdGgoKCd3JywgJ2EnKSk6CiAgICAgICAgICAgICBzZWxmLm1vZGUgPSBXUklURQogICAgICAgICAgICAgc2VsZi5faW5pdF93cml0ZShmaWxlbmFtZSkKICAgICAgICAgICAgIHNlbGYuY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKGNvbXByZXNzbGV2ZWwsCkBAIC0xOTAsNyArMjEyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVGX01FTV9MRVZFTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJNb2RlICIgKyBtb2RlICsgIiBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQogCiAgICAgICAgIHNlbGYuZmlsZW9iaiA9IGZpbGVvYmoKICAgICAgICAgc2VsZi5vZmZzZXQgPSAwCkBAIC0zNTMsNiArMzc1LDMxIEBACiAgICAgICAgIHNlbGYub2Zmc2V0ICs9IHNpemUKICAgICAgICAgcmV0dXJuIGNodW5rCiAKKyAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIGlmIHNlbGYubW9kZSAhPSBSRUFEOgorICAgICAgICAgICAgaW1wb3J0IGVycm5vCisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVCQURGLCAicmVhZDEoKSBvbiB3cml0ZS1vbmx5IEd6aXBGaWxlIG9iamVjdCIpCisKKyAgICAgICAgaWYgc2VsZi5leHRyYXNpemUgPD0gMCBhbmQgc2VsZi5maWxlb2JqIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gYicnCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGb3IgY2VydGFpbiBpbnB1dCBkYXRhLCBhIHNpbmdsZSBjYWxsIHRvIF9yZWFkKCkgbWF5IG5vdCByZXR1cm4KKyAgICAgICAgICAgICMgYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgcmV0cnkgdW50aWwgd2UgZ2V0IHNvbWUgZGF0YSBvciByZWFjaCBFT0YuCisgICAgICAgICAgICB3aGlsZSBzZWxmLmV4dHJhc2l6ZSA8PSAwOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWQoKQorICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGlmIHNpemUgPCAwIG9yIHNpemUgPiBzZWxmLmV4dHJhc2l6ZToKKyAgICAgICAgICAgIHNpemUgPSBzZWxmLmV4dHJhc2l6ZQorCisgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0IC0gc2VsZi5leHRyYXN0YXJ0CisgICAgICAgIGNodW5rID0gc2VsZi5leHRyYWJ1ZltvZmZzZXQ6IG9mZnNldCArIHNpemVdCisgICAgICAgIHNlbGYuZXh0cmFzaXplIC09IHNpemUKKyAgICAgICAgc2VsZi5vZmZzZXQgKz0gc2l6ZQorICAgICAgICByZXR1cm4gY2h1bmsKKwogICAgIGRlZiBwZWVrKHNlbGYsIG4pOgogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKICAgICAgICAgICAgIGltcG9ydCBlcnJubwpAQCAtMzY2LDggKzQxMywxMCBAQAogICAgICAgICAgICAgaWYgc2VsZi5maWxlb2JqIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGInJwogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgMTAyNCBpcyB0aGUgc2FtZSBidWZmZXJpbmcgaGV1cmlzdGljIHVzZWQgaW4gcmVhZCgpCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZChtYXgobiwgMTAyNCkpCisgICAgICAgICAgICAgICAgIyBFbnN1cmUgdGhhdCB3ZSBkb24ndCByZXR1cm4gYiIiIGlmIHdlIGhhdmVuJ3QgcmVhY2hlZCBFT0YuCisgICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5leHRyYXNpemUgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgIyAxMDI0IGlzIHRoZSBzYW1lIGJ1ZmZlcmluZyBoZXVyaXN0aWMgdXNlZCBpbiByZWFkKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZChtYXgobiwgMTAyNCkpCiAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydApkaWZmIC0tZ2l0IGEvTGliL2htYWMucHkgYi9MaWIvaG1hYy5weQppbmRleCA5NTZmYzY1Li40Mjk3YTcxIDEwMDY0NAotLS0gYS9MaWIvaG1hYy5weQorKysgYi9MaWIvaG1hYy5weQpAQCAtNCw2ICs0LDcgQEAKICIiIgogCiBpbXBvcnQgd2FybmluZ3MgYXMgX3dhcm5pbmdzCitmcm9tIG9wZXJhdG9yIGltcG9ydCBfY29tcGFyZV9kaWdlc3QgYXMgY29tcGFyZV9kaWdlc3QKIAogdHJhbnNfNUMgPSBieXRlcygoeCBeIDB4NUMpIGZvciB4IGluIHJhbmdlKDI1NikpCiB0cmFuc18zNiA9IGJ5dGVzKCh4IF4gMHgzNikgZm9yIHggaW4gcmFuZ2UoMjU2KSkKQEAgLTEzLDYgKzE0LDcgQEAKIGRpZ2VzdF9zaXplID0gTm9uZQogCiAKKwogY2xhc3MgSE1BQzoKICAgICAiIiJSRkMgMjEwNCBITUFDIGNsYXNzLiAgQWxzbyBjb21wbGllcyB3aXRoIFJGQyA0MjMxLgogCkBAIC0zMyw3ICszNSw3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGtleSwgYnl0ZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgYnV0IGdvdCAlciIgJSB0eXBlKGtleSkuX19uYW1lX18pCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleTogZXhwZWN0ZWQgYnl0ZXMsIGJ1dCBnb3QgJXIiICUgdHlwZShrZXkpLl9fbmFtZV9fKQogCiAgICAgICAgIGlmIGRpZ2VzdG1vZCBpcyBOb25lOgogICAgICAgICAgICAgaW1wb3J0IGhhc2hsaWIKZGlmZiAtLWdpdCBhL0xpYi9odG1sL2VudGl0aWVzLnB5IGIvTGliL2h0bWwvZW50aXRpZXMucHkKaW5kZXggZTJiN2JmMS4uZmY3MmNmNCAxMDA2NDQKLS0tIGEvTGliL2h0bWwvZW50aXRpZXMucHkKKysrIGIvTGliL2h0bWwvZW50aXRpZXMucHkKQEAgLTI1Niw2ICsyNTYsMjI0MiBAQAogICAgICd6d25qJzogICAgIDB4MjAwYywgIyB6ZXJvIHdpZHRoIG5vbi1qb2luZXIsIFUrMjAwQyBORVcgUkZDIDIwNzAKIH0KIAorCisjIG1hcHMgdGhlIEhUTUw1IG5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIHRvIHRoZSBlcXVpdmFsZW50IFVuaWNvZGUgY2hhcmFjdGVyKHMpCitodG1sNSA9IHsKKyAgICAnQWFjdXRlOyc6ICdceGMxJywKKyAgICAnQWFjdXRlJzogJ1x4YzEnLAorICAgICdhYWN1dGU7JzogJ1x4ZTEnLAorICAgICdhYWN1dGUnOiAnXHhlMScsCisgICAgJ0FicmV2ZTsnOiAnXHUwMTAyJywKKyAgICAnYWJyZXZlOyc6ICdcdTAxMDMnLAorICAgICdhYzsnOiAnXHUyMjNlJywKKyAgICAnYWNkOyc6ICdcdTIyM2YnLAorICAgICdhY0U7JzogJ1x1MjIzZVx1MDMzMycsCisgICAgJ0FjaXJjOyc6ICdceGMyJywKKyAgICAnQWNpcmMnOiAnXHhjMicsCisgICAgJ2FjaXJjOyc6ICdceGUyJywKKyAgICAnYWNpcmMnOiAnXHhlMicsCisgICAgJ2FjdXRlOyc6ICdceGI0JywKKyAgICAnYWN1dGUnOiAnXHhiNCcsCisgICAgJ0FjeTsnOiAnXHUwNDEwJywKKyAgICAnYWN5Oyc6ICdcdTA0MzAnLAorICAgICdBRWxpZzsnOiAnXHhjNicsCisgICAgJ0FFbGlnJzogJ1x4YzYnLAorICAgICdhZWxpZzsnOiAnXHhlNicsCisgICAgJ2FlbGlnJzogJ1x4ZTYnLAorICAgICdhZjsnOiAnXHUyMDYxJywKKyAgICAnQWZyOyc6ICdcVTAwMDFkNTA0JywKKyAgICAnYWZyOyc6ICdcVTAwMDFkNTFlJywKKyAgICAnQWdyYXZlOyc6ICdceGMwJywKKyAgICAnQWdyYXZlJzogJ1x4YzAnLAorICAgICdhZ3JhdmU7JzogJ1x4ZTAnLAorICAgICdhZ3JhdmUnOiAnXHhlMCcsCisgICAgJ2FsZWZzeW07JzogJ1x1MjEzNScsCisgICAgJ2FsZXBoOyc6ICdcdTIxMzUnLAorICAgICdBbHBoYTsnOiAnXHUwMzkxJywKKyAgICAnYWxwaGE7JzogJ1x1MDNiMScsCisgICAgJ0FtYWNyOyc6ICdcdTAxMDAnLAorICAgICdhbWFjcjsnOiAnXHUwMTAxJywKKyAgICAnYW1hbGc7JzogJ1x1MmEzZicsCisgICAgJ0FNUDsnOiAnJicsCisgICAgJ0FNUCc6ICcmJywKKyAgICAnYW1wOyc6ICcmJywKKyAgICAnYW1wJzogJyYnLAorICAgICdBbmQ7JzogJ1x1MmE1MycsCisgICAgJ2FuZDsnOiAnXHUyMjI3JywKKyAgICAnYW5kYW5kOyc6ICdcdTJhNTUnLAorICAgICdhbmRkOyc6ICdcdTJhNWMnLAorICAgICdhbmRzbG9wZTsnOiAnXHUyYTU4JywKKyAgICAnYW5kdjsnOiAnXHUyYTVhJywKKyAgICAnYW5nOyc6ICdcdTIyMjAnLAorICAgICdhbmdlOyc6ICdcdTI5YTQnLAorICAgICdhbmdsZTsnOiAnXHUyMjIwJywKKyAgICAnYW5nbXNkOyc6ICdcdTIyMjEnLAorICAgICdhbmdtc2RhYTsnOiAnXHUyOWE4JywKKyAgICAnYW5nbXNkYWI7JzogJ1x1MjlhOScsCisgICAgJ2FuZ21zZGFjOyc6ICdcdTI5YWEnLAorICAgICdhbmdtc2RhZDsnOiAnXHUyOWFiJywKKyAgICAnYW5nbXNkYWU7JzogJ1x1MjlhYycsCisgICAgJ2FuZ21zZGFmOyc6ICdcdTI5YWQnLAorICAgICdhbmdtc2RhZzsnOiAnXHUyOWFlJywKKyAgICAnYW5nbXNkYWg7JzogJ1x1MjlhZicsCisgICAgJ2FuZ3J0Oyc6ICdcdTIyMWYnLAorICAgICdhbmdydHZiOyc6ICdcdTIyYmUnLAorICAgICdhbmdydHZiZDsnOiAnXHUyOTlkJywKKyAgICAnYW5nc3BoOyc6ICdcdTIyMjInLAorICAgICdhbmdzdDsnOiAnXHhjNScsCisgICAgJ2FuZ3phcnI7JzogJ1x1MjM3YycsCisgICAgJ0FvZ29uOyc6ICdcdTAxMDQnLAorICAgICdhb2dvbjsnOiAnXHUwMTA1JywKKyAgICAnQW9wZjsnOiAnXFUwMDAxZDUzOCcsCisgICAgJ2FvcGY7JzogJ1xVMDAwMWQ1NTInLAorICAgICdhcDsnOiAnXHUyMjQ4JywKKyAgICAnYXBhY2lyOyc6ICdcdTJhNmYnLAorICAgICdhcEU7JzogJ1x1MmE3MCcsCisgICAgJ2FwZTsnOiAnXHUyMjRhJywKKyAgICAnYXBpZDsnOiAnXHUyMjRiJywKKyAgICAnYXBvczsnOiAiJyIsCisgICAgJ0FwcGx5RnVuY3Rpb247JzogJ1x1MjA2MScsCisgICAgJ2FwcHJveDsnOiAnXHUyMjQ4JywKKyAgICAnYXBwcm94ZXE7JzogJ1x1MjI0YScsCisgICAgJ0FyaW5nOyc6ICdceGM1JywKKyAgICAnQXJpbmcnOiAnXHhjNScsCisgICAgJ2FyaW5nOyc6ICdceGU1JywKKyAgICAnYXJpbmcnOiAnXHhlNScsCisgICAgJ0FzY3I7JzogJ1xVMDAwMWQ0OWMnLAorICAgICdhc2NyOyc6ICdcVTAwMDFkNGI2JywKKyAgICAnQXNzaWduOyc6ICdcdTIyNTQnLAorICAgICdhc3Q7JzogJyonLAorICAgICdhc3ltcDsnOiAnXHUyMjQ4JywKKyAgICAnYXN5bXBlcTsnOiAnXHUyMjRkJywKKyAgICAnQXRpbGRlOyc6ICdceGMzJywKKyAgICAnQXRpbGRlJzogJ1x4YzMnLAorICAgICdhdGlsZGU7JzogJ1x4ZTMnLAorICAgICdhdGlsZGUnOiAnXHhlMycsCisgICAgJ0F1bWw7JzogJ1x4YzQnLAorICAgICdBdW1sJzogJ1x4YzQnLAorICAgICdhdW1sOyc6ICdceGU0JywKKyAgICAnYXVtbCc6ICdceGU0JywKKyAgICAnYXdjb25pbnQ7JzogJ1x1MjIzMycsCisgICAgJ2F3aW50Oyc6ICdcdTJhMTEnLAorICAgICdiYWNrY29uZzsnOiAnXHUyMjRjJywKKyAgICAnYmFja2Vwc2lsb247JzogJ1x1MDNmNicsCisgICAgJ2JhY2twcmltZTsnOiAnXHUyMDM1JywKKyAgICAnYmFja3NpbTsnOiAnXHUyMjNkJywKKyAgICAnYmFja3NpbWVxOyc6ICdcdTIyY2QnLAorICAgICdCYWNrc2xhc2g7JzogJ1x1MjIxNicsCisgICAgJ0JhcnY7JzogJ1x1MmFlNycsCisgICAgJ2JhcnZlZTsnOiAnXHUyMmJkJywKKyAgICAnQmFyd2VkOyc6ICdcdTIzMDYnLAorICAgICdiYXJ3ZWQ7JzogJ1x1MjMwNScsCisgICAgJ2JhcndlZGdlOyc6ICdcdTIzMDUnLAorICAgICdiYnJrOyc6ICdcdTIzYjUnLAorICAgICdiYnJrdGJyazsnOiAnXHUyM2I2JywKKyAgICAnYmNvbmc7JzogJ1x1MjI0YycsCisgICAgJ0JjeTsnOiAnXHUwNDExJywKKyAgICAnYmN5Oyc6ICdcdTA0MzEnLAorICAgICdiZHF1bzsnOiAnXHUyMDFlJywKKyAgICAnYmVjYXVzOyc6ICdcdTIyMzUnLAorICAgICdCZWNhdXNlOyc6ICdcdTIyMzUnLAorICAgICdiZWNhdXNlOyc6ICdcdTIyMzUnLAorICAgICdiZW1wdHl2Oyc6ICdcdTI5YjAnLAorICAgICdiZXBzaTsnOiAnXHUwM2Y2JywKKyAgICAnYmVybm91Oyc6ICdcdTIxMmMnLAorICAgICdCZXJub3VsbGlzOyc6ICdcdTIxMmMnLAorICAgICdCZXRhOyc6ICdcdTAzOTInLAorICAgICdiZXRhOyc6ICdcdTAzYjInLAorICAgICdiZXRoOyc6ICdcdTIxMzYnLAorICAgICdiZXR3ZWVuOyc6ICdcdTIyNmMnLAorICAgICdCZnI7JzogJ1xVMDAwMWQ1MDUnLAorICAgICdiZnI7JzogJ1xVMDAwMWQ1MWYnLAorICAgICdiaWdjYXA7JzogJ1x1MjJjMicsCisgICAgJ2JpZ2NpcmM7JzogJ1x1MjVlZicsCisgICAgJ2JpZ2N1cDsnOiAnXHUyMmMzJywKKyAgICAnYmlnb2RvdDsnOiAnXHUyYTAwJywKKyAgICAnYmlnb3BsdXM7JzogJ1x1MmEwMScsCisgICAgJ2JpZ290aW1lczsnOiAnXHUyYTAyJywKKyAgICAnYmlnc3FjdXA7JzogJ1x1MmEwNicsCisgICAgJ2JpZ3N0YXI7JzogJ1x1MjYwNScsCisgICAgJ2JpZ3RyaWFuZ2xlZG93bjsnOiAnXHUyNWJkJywKKyAgICAnYmlndHJpYW5nbGV1cDsnOiAnXHUyNWIzJywKKyAgICAnYmlndXBsdXM7JzogJ1x1MmEwNCcsCisgICAgJ2JpZ3ZlZTsnOiAnXHUyMmMxJywKKyAgICAnYmlnd2VkZ2U7JzogJ1x1MjJjMCcsCisgICAgJ2JrYXJvdzsnOiAnXHUyOTBkJywKKyAgICAnYmxhY2tsb3plbmdlOyc6ICdcdTI5ZWInLAorICAgICdibGFja3NxdWFyZTsnOiAnXHUyNWFhJywKKyAgICAnYmxhY2t0cmlhbmdsZTsnOiAnXHUyNWI0JywKKyAgICAnYmxhY2t0cmlhbmdsZWRvd247JzogJ1x1MjViZScsCisgICAgJ2JsYWNrdHJpYW5nbGVsZWZ0Oyc6ICdcdTI1YzInLAorICAgICdibGFja3RyaWFuZ2xlcmlnaHQ7JzogJ1x1MjViOCcsCisgICAgJ2JsYW5rOyc6ICdcdTI0MjMnLAorICAgICdibGsxMjsnOiAnXHUyNTkyJywKKyAgICAnYmxrMTQ7JzogJ1x1MjU5MScsCisgICAgJ2JsazM0Oyc6ICdcdTI1OTMnLAorICAgICdibG9jazsnOiAnXHUyNTg4JywKKyAgICAnYm5lOyc6ICc9XHUyMGU1JywKKyAgICAnYm5lcXVpdjsnOiAnXHUyMjYxXHUyMGU1JywKKyAgICAnYk5vdDsnOiAnXHUyYWVkJywKKyAgICAnYm5vdDsnOiAnXHUyMzEwJywKKyAgICAnQm9wZjsnOiAnXFUwMDAxZDUzOScsCisgICAgJ2JvcGY7JzogJ1xVMDAwMWQ1NTMnLAorICAgICdib3Q7JzogJ1x1MjJhNScsCisgICAgJ2JvdHRvbTsnOiAnXHUyMmE1JywKKyAgICAnYm93dGllOyc6ICdcdTIyYzgnLAorICAgICdib3hib3g7JzogJ1x1MjljOScsCisgICAgJ2JveERMOyc6ICdcdTI1NTcnLAorICAgICdib3hEbDsnOiAnXHUyNTU2JywKKyAgICAnYm94ZEw7JzogJ1x1MjU1NScsCisgICAgJ2JveGRsOyc6ICdcdTI1MTAnLAorICAgICdib3hEUjsnOiAnXHUyNTU0JywKKyAgICAnYm94RHI7JzogJ1x1MjU1MycsCisgICAgJ2JveGRSOyc6ICdcdTI1NTInLAorICAgICdib3hkcjsnOiAnXHUyNTBjJywKKyAgICAnYm94SDsnOiAnXHUyNTUwJywKKyAgICAnYm94aDsnOiAnXHUyNTAwJywKKyAgICAnYm94SEQ7JzogJ1x1MjU2NicsCisgICAgJ2JveEhkOyc6ICdcdTI1NjQnLAorICAgICdib3hoRDsnOiAnXHUyNTY1JywKKyAgICAnYm94aGQ7JzogJ1x1MjUyYycsCisgICAgJ2JveEhVOyc6ICdcdTI1NjknLAorICAgICdib3hIdTsnOiAnXHUyNTY3JywKKyAgICAnYm94aFU7JzogJ1x1MjU2OCcsCisgICAgJ2JveGh1Oyc6ICdcdTI1MzQnLAorICAgICdib3htaW51czsnOiAnXHUyMjlmJywKKyAgICAnYm94cGx1czsnOiAnXHUyMjllJywKKyAgICAnYm94dGltZXM7JzogJ1x1MjJhMCcsCisgICAgJ2JveFVMOyc6ICdcdTI1NWQnLAorICAgICdib3hVbDsnOiAnXHUyNTVjJywKKyAgICAnYm94dUw7JzogJ1x1MjU1YicsCisgICAgJ2JveHVsOyc6ICdcdTI1MTgnLAorICAgICdib3hVUjsnOiAnXHUyNTVhJywKKyAgICAnYm94VXI7JzogJ1x1MjU1OScsCisgICAgJ2JveHVSOyc6ICdcdTI1NTgnLAorICAgICdib3h1cjsnOiAnXHUyNTE0JywKKyAgICAnYm94VjsnOiAnXHUyNTUxJywKKyAgICAnYm94djsnOiAnXHUyNTAyJywKKyAgICAnYm94Vkg7JzogJ1x1MjU2YycsCisgICAgJ2JveFZoOyc6ICdcdTI1NmInLAorICAgICdib3h2SDsnOiAnXHUyNTZhJywKKyAgICAnYm94dmg7JzogJ1x1MjUzYycsCisgICAgJ2JveFZMOyc6ICdcdTI1NjMnLAorICAgICdib3hWbDsnOiAnXHUyNTYyJywKKyAgICAnYm94dkw7JzogJ1x1MjU2MScsCisgICAgJ2JveHZsOyc6ICdcdTI1MjQnLAorICAgICdib3hWUjsnOiAnXHUyNTYwJywKKyAgICAnYm94VnI7JzogJ1x1MjU1ZicsCisgICAgJ2JveHZSOyc6ICdcdTI1NWUnLAorICAgICdib3h2cjsnOiAnXHUyNTFjJywKKyAgICAnYnByaW1lOyc6ICdcdTIwMzUnLAorICAgICdCcmV2ZTsnOiAnXHUwMmQ4JywKKyAgICAnYnJldmU7JzogJ1x1MDJkOCcsCisgICAgJ2JydmJhcjsnOiAnXHhhNicsCisgICAgJ2JydmJhcic6ICdceGE2JywKKyAgICAnQnNjcjsnOiAnXHUyMTJjJywKKyAgICAnYnNjcjsnOiAnXFUwMDAxZDRiNycsCisgICAgJ2JzZW1pOyc6ICdcdTIwNGYnLAorICAgICdic2ltOyc6ICdcdTIyM2QnLAorICAgICdic2ltZTsnOiAnXHUyMmNkJywKKyAgICAnYnNvbDsnOiAnXFwnLAorICAgICdic29sYjsnOiAnXHUyOWM1JywKKyAgICAnYnNvbGhzdWI7JzogJ1x1MjdjOCcsCisgICAgJ2J1bGw7JzogJ1x1MjAyMicsCisgICAgJ2J1bGxldDsnOiAnXHUyMDIyJywKKyAgICAnYnVtcDsnOiAnXHUyMjRlJywKKyAgICAnYnVtcEU7JzogJ1x1MmFhZScsCisgICAgJ2J1bXBlOyc6ICdcdTIyNGYnLAorICAgICdCdW1wZXE7JzogJ1x1MjI0ZScsCisgICAgJ2J1bXBlcTsnOiAnXHUyMjRmJywKKyAgICAnQ2FjdXRlOyc6ICdcdTAxMDYnLAorICAgICdjYWN1dGU7JzogJ1x1MDEwNycsCisgICAgJ0NhcDsnOiAnXHUyMmQyJywKKyAgICAnY2FwOyc6ICdcdTIyMjknLAorICAgICdjYXBhbmQ7JzogJ1x1MmE0NCcsCisgICAgJ2NhcGJyY3VwOyc6ICdcdTJhNDknLAorICAgICdjYXBjYXA7JzogJ1x1MmE0YicsCisgICAgJ2NhcGN1cDsnOiAnXHUyYTQ3JywKKyAgICAnY2FwZG90Oyc6ICdcdTJhNDAnLAorICAgICdDYXBpdGFsRGlmZmVyZW50aWFsRDsnOiAnXHUyMTQ1JywKKyAgICAnY2FwczsnOiAnXHUyMjI5XHVmZTAwJywKKyAgICAnY2FyZXQ7JzogJ1x1MjA0MScsCisgICAgJ2Nhcm9uOyc6ICdcdTAyYzcnLAorICAgICdDYXlsZXlzOyc6ICdcdTIxMmQnLAorICAgICdjY2FwczsnOiAnXHUyYTRkJywKKyAgICAnQ2Nhcm9uOyc6ICdcdTAxMGMnLAorICAgICdjY2Fyb247JzogJ1x1MDEwZCcsCisgICAgJ0NjZWRpbDsnOiAnXHhjNycsCisgICAgJ0NjZWRpbCc6ICdceGM3JywKKyAgICAnY2NlZGlsOyc6ICdceGU3JywKKyAgICAnY2NlZGlsJzogJ1x4ZTcnLAorICAgICdDY2lyYzsnOiAnXHUwMTA4JywKKyAgICAnY2NpcmM7JzogJ1x1MDEwOScsCisgICAgJ0Njb25pbnQ7JzogJ1x1MjIzMCcsCisgICAgJ2NjdXBzOyc6ICdcdTJhNGMnLAorICAgICdjY3Vwc3NtOyc6ICdcdTJhNTAnLAorICAgICdDZG90Oyc6ICdcdTAxMGEnLAorICAgICdjZG90Oyc6ICdcdTAxMGInLAorICAgICdjZWRpbDsnOiAnXHhiOCcsCisgICAgJ2NlZGlsJzogJ1x4YjgnLAorICAgICdDZWRpbGxhOyc6ICdceGI4JywKKyAgICAnY2VtcHR5djsnOiAnXHUyOWIyJywKKyAgICAnY2VudDsnOiAnXHhhMicsCisgICAgJ2NlbnQnOiAnXHhhMicsCisgICAgJ0NlbnRlckRvdDsnOiAnXHhiNycsCisgICAgJ2NlbnRlcmRvdDsnOiAnXHhiNycsCisgICAgJ0NmcjsnOiAnXHUyMTJkJywKKyAgICAnY2ZyOyc6ICdcVTAwMDFkNTIwJywKKyAgICAnQ0hjeTsnOiAnXHUwNDI3JywKKyAgICAnY2hjeTsnOiAnXHUwNDQ3JywKKyAgICAnY2hlY2s7JzogJ1x1MjcxMycsCisgICAgJ2NoZWNrbWFyazsnOiAnXHUyNzEzJywKKyAgICAnQ2hpOyc6ICdcdTAzYTcnLAorICAgICdjaGk7JzogJ1x1MDNjNycsCisgICAgJ2NpcjsnOiAnXHUyNWNiJywKKyAgICAnY2lyYzsnOiAnXHUwMmM2JywKKyAgICAnY2lyY2VxOyc6ICdcdTIyNTcnLAorICAgICdjaXJjbGVhcnJvd2xlZnQ7JzogJ1x1MjFiYScsCisgICAgJ2NpcmNsZWFycm93cmlnaHQ7JzogJ1x1MjFiYicsCisgICAgJ2NpcmNsZWRhc3Q7JzogJ1x1MjI5YicsCisgICAgJ2NpcmNsZWRjaXJjOyc6ICdcdTIyOWEnLAorICAgICdjaXJjbGVkZGFzaDsnOiAnXHUyMjlkJywKKyAgICAnQ2lyY2xlRG90Oyc6ICdcdTIyOTknLAorICAgICdjaXJjbGVkUjsnOiAnXHhhZScsCisgICAgJ2NpcmNsZWRTOyc6ICdcdTI0YzgnLAorICAgICdDaXJjbGVNaW51czsnOiAnXHUyMjk2JywKKyAgICAnQ2lyY2xlUGx1czsnOiAnXHUyMjk1JywKKyAgICAnQ2lyY2xlVGltZXM7JzogJ1x1MjI5NycsCisgICAgJ2NpckU7JzogJ1x1MjljMycsCisgICAgJ2NpcmU7JzogJ1x1MjI1NycsCisgICAgJ2NpcmZuaW50Oyc6ICdcdTJhMTAnLAorICAgICdjaXJtaWQ7JzogJ1x1MmFlZicsCisgICAgJ2NpcnNjaXI7JzogJ1x1MjljMicsCisgICAgJ0Nsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDsnOiAnXHUyMjMyJywKKyAgICAnQ2xvc2VDdXJseURvdWJsZVF1b3RlOyc6ICdcdTIwMWQnLAorICAgICdDbG9zZUN1cmx5UXVvdGU7JzogJ1x1MjAxOScsCisgICAgJ2NsdWJzOyc6ICdcdTI2NjMnLAorICAgICdjbHVic3VpdDsnOiAnXHUyNjYzJywKKyAgICAnQ29sb247JzogJ1x1MjIzNycsCisgICAgJ2NvbG9uOyc6ICc6JywKKyAgICAnQ29sb25lOyc6ICdcdTJhNzQnLAorICAgICdjb2xvbmU7JzogJ1x1MjI1NCcsCisgICAgJ2NvbG9uZXE7JzogJ1x1MjI1NCcsCisgICAgJ2NvbW1hOyc6ICcsJywKKyAgICAnY29tbWF0Oyc6ICdAJywKKyAgICAnY29tcDsnOiAnXHUyMjAxJywKKyAgICAnY29tcGZuOyc6ICdcdTIyMTgnLAorICAgICdjb21wbGVtZW50Oyc6ICdcdTIyMDEnLAorICAgICdjb21wbGV4ZXM7JzogJ1x1MjEwMicsCisgICAgJ2Nvbmc7JzogJ1x1MjI0NScsCisgICAgJ2Nvbmdkb3Q7JzogJ1x1MmE2ZCcsCisgICAgJ0NvbmdydWVudDsnOiAnXHUyMjYxJywKKyAgICAnQ29uaW50Oyc6ICdcdTIyMmYnLAorICAgICdjb25pbnQ7JzogJ1x1MjIyZScsCisgICAgJ0NvbnRvdXJJbnRlZ3JhbDsnOiAnXHUyMjJlJywKKyAgICAnQ29wZjsnOiAnXHUyMTAyJywKKyAgICAnY29wZjsnOiAnXFUwMDAxZDU1NCcsCisgICAgJ2NvcHJvZDsnOiAnXHUyMjEwJywKKyAgICAnQ29wcm9kdWN0Oyc6ICdcdTIyMTAnLAorICAgICdDT1BZOyc6ICdceGE5JywKKyAgICAnQ09QWSc6ICdceGE5JywKKyAgICAnY29weTsnOiAnXHhhOScsCisgICAgJ2NvcHknOiAnXHhhOScsCisgICAgJ2NvcHlzcjsnOiAnXHUyMTE3JywKKyAgICAnQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDsnOiAnXHUyMjMzJywKKyAgICAnY3JhcnI7JzogJ1x1MjFiNScsCisgICAgJ0Nyb3NzOyc6ICdcdTJhMmYnLAorICAgICdjcm9zczsnOiAnXHUyNzE3JywKKyAgICAnQ3NjcjsnOiAnXFUwMDAxZDQ5ZScsCisgICAgJ2NzY3I7JzogJ1xVMDAwMWQ0YjgnLAorICAgICdjc3ViOyc6ICdcdTJhY2YnLAorICAgICdjc3ViZTsnOiAnXHUyYWQxJywKKyAgICAnY3N1cDsnOiAnXHUyYWQwJywKKyAgICAnY3N1cGU7JzogJ1x1MmFkMicsCisgICAgJ2N0ZG90Oyc6ICdcdTIyZWYnLAorICAgICdjdWRhcnJsOyc6ICdcdTI5MzgnLAorICAgICdjdWRhcnJyOyc6ICdcdTI5MzUnLAorICAgICdjdWVwcjsnOiAnXHUyMmRlJywKKyAgICAnY3Vlc2M7JzogJ1x1MjJkZicsCisgICAgJ2N1bGFycjsnOiAnXHUyMWI2JywKKyAgICAnY3VsYXJycDsnOiAnXHUyOTNkJywKKyAgICAnQ3VwOyc6ICdcdTIyZDMnLAorICAgICdjdXA7JzogJ1x1MjIyYScsCisgICAgJ2N1cGJyY2FwOyc6ICdcdTJhNDgnLAorICAgICdDdXBDYXA7JzogJ1x1MjI0ZCcsCisgICAgJ2N1cGNhcDsnOiAnXHUyYTQ2JywKKyAgICAnY3VwY3VwOyc6ICdcdTJhNGEnLAorICAgICdjdXBkb3Q7JzogJ1x1MjI4ZCcsCisgICAgJ2N1cG9yOyc6ICdcdTJhNDUnLAorICAgICdjdXBzOyc6ICdcdTIyMmFcdWZlMDAnLAorICAgICdjdXJhcnI7JzogJ1x1MjFiNycsCisgICAgJ2N1cmFycm07JzogJ1x1MjkzYycsCisgICAgJ2N1cmx5ZXFwcmVjOyc6ICdcdTIyZGUnLAorICAgICdjdXJseWVxc3VjYzsnOiAnXHUyMmRmJywKKyAgICAnY3VybHl2ZWU7JzogJ1x1MjJjZScsCisgICAgJ2N1cmx5d2VkZ2U7JzogJ1x1MjJjZicsCisgICAgJ2N1cnJlbjsnOiAnXHhhNCcsCisgICAgJ2N1cnJlbic6ICdceGE0JywKKyAgICAnY3VydmVhcnJvd2xlZnQ7JzogJ1x1MjFiNicsCisgICAgJ2N1cnZlYXJyb3dyaWdodDsnOiAnXHUyMWI3JywKKyAgICAnY3V2ZWU7JzogJ1x1MjJjZScsCisgICAgJ2N1d2VkOyc6ICdcdTIyY2YnLAorICAgICdjd2NvbmludDsnOiAnXHUyMjMyJywKKyAgICAnY3dpbnQ7JzogJ1x1MjIzMScsCisgICAgJ2N5bGN0eTsnOiAnXHUyMzJkJywKKyAgICAnRGFnZ2VyOyc6ICdcdTIwMjEnLAorICAgICdkYWdnZXI7JzogJ1x1MjAyMCcsCisgICAgJ2RhbGV0aDsnOiAnXHUyMTM4JywKKyAgICAnRGFycjsnOiAnXHUyMWExJywKKyAgICAnZEFycjsnOiAnXHUyMWQzJywKKyAgICAnZGFycjsnOiAnXHUyMTkzJywKKyAgICAnZGFzaDsnOiAnXHUyMDEwJywKKyAgICAnRGFzaHY7JzogJ1x1MmFlNCcsCisgICAgJ2Rhc2h2Oyc6ICdcdTIyYTMnLAorICAgICdkYmthcm93Oyc6ICdcdTI5MGYnLAorICAgICdkYmxhYzsnOiAnXHUwMmRkJywKKyAgICAnRGNhcm9uOyc6ICdcdTAxMGUnLAorICAgICdkY2Fyb247JzogJ1x1MDEwZicsCisgICAgJ0RjeTsnOiAnXHUwNDE0JywKKyAgICAnZGN5Oyc6ICdcdTA0MzQnLAorICAgICdERDsnOiAnXHUyMTQ1JywKKyAgICAnZGQ7JzogJ1x1MjE0NicsCisgICAgJ2RkYWdnZXI7JzogJ1x1MjAyMScsCisgICAgJ2RkYXJyOyc6ICdcdTIxY2EnLAorICAgICdERG90cmFoZDsnOiAnXHUyOTExJywKKyAgICAnZGRvdHNlcTsnOiAnXHUyYTc3JywKKyAgICAnZGVnOyc6ICdceGIwJywKKyAgICAnZGVnJzogJ1x4YjAnLAorICAgICdEZWw7JzogJ1x1MjIwNycsCisgICAgJ0RlbHRhOyc6ICdcdTAzOTQnLAorICAgICdkZWx0YTsnOiAnXHUwM2I0JywKKyAgICAnZGVtcHR5djsnOiAnXHUyOWIxJywKKyAgICAnZGZpc2h0Oyc6ICdcdTI5N2YnLAorICAgICdEZnI7JzogJ1xVMDAwMWQ1MDcnLAorICAgICdkZnI7JzogJ1xVMDAwMWQ1MjEnLAorICAgICdkSGFyOyc6ICdcdTI5NjUnLAorICAgICdkaGFybDsnOiAnXHUyMWMzJywKKyAgICAnZGhhcnI7JzogJ1x1MjFjMicsCisgICAgJ0RpYWNyaXRpY2FsQWN1dGU7JzogJ1x4YjQnLAorICAgICdEaWFjcml0aWNhbERvdDsnOiAnXHUwMmQ5JywKKyAgICAnRGlhY3JpdGljYWxEb3VibGVBY3V0ZTsnOiAnXHUwMmRkJywKKyAgICAnRGlhY3JpdGljYWxHcmF2ZTsnOiAnYCcsCisgICAgJ0RpYWNyaXRpY2FsVGlsZGU7JzogJ1x1MDJkYycsCisgICAgJ2RpYW07JzogJ1x1MjJjNCcsCisgICAgJ0RpYW1vbmQ7JzogJ1x1MjJjNCcsCisgICAgJ2RpYW1vbmQ7JzogJ1x1MjJjNCcsCisgICAgJ2RpYW1vbmRzdWl0Oyc6ICdcdTI2NjYnLAorICAgICdkaWFtczsnOiAnXHUyNjY2JywKKyAgICAnZGllOyc6ICdceGE4JywKKyAgICAnRGlmZmVyZW50aWFsRDsnOiAnXHUyMTQ2JywKKyAgICAnZGlnYW1tYTsnOiAnXHUwM2RkJywKKyAgICAnZGlzaW47JzogJ1x1MjJmMicsCisgICAgJ2RpdjsnOiAnXHhmNycsCisgICAgJ2RpdmlkZTsnOiAnXHhmNycsCisgICAgJ2RpdmlkZSc6ICdceGY3JywKKyAgICAnZGl2aWRlb250aW1lczsnOiAnXHUyMmM3JywKKyAgICAnZGl2b254Oyc6ICdcdTIyYzcnLAorICAgICdESmN5Oyc6ICdcdTA0MDInLAorICAgICdkamN5Oyc6ICdcdTA0NTInLAorICAgICdkbGNvcm47JzogJ1x1MjMxZScsCisgICAgJ2RsY3JvcDsnOiAnXHUyMzBkJywKKyAgICAnZG9sbGFyOyc6ICckJywKKyAgICAnRG9wZjsnOiAnXFUwMDAxZDUzYicsCisgICAgJ2RvcGY7JzogJ1xVMDAwMWQ1NTUnLAorICAgICdEb3Q7JzogJ1x4YTgnLAorICAgICdkb3Q7JzogJ1x1MDJkOScsCisgICAgJ0RvdERvdDsnOiAnXHUyNWNjXHUyMGRjJywKKyAgICAnZG90ZXE7JzogJ1x1MjI1MCcsCisgICAgJ2RvdGVxZG90Oyc6ICdcdTIyNTEnLAorICAgICdEb3RFcXVhbDsnOiAnXHUyMjUwJywKKyAgICAnZG90bWludXM7JzogJ1x1MjIzOCcsCisgICAgJ2RvdHBsdXM7JzogJ1x1MjIxNCcsCisgICAgJ2RvdHNxdWFyZTsnOiAnXHUyMmExJywKKyAgICAnZG91YmxlYmFyd2VkZ2U7JzogJ1x1MjMwNicsCisgICAgJ0RvdWJsZUNvbnRvdXJJbnRlZ3JhbDsnOiAnXHUyMjJmJywKKyAgICAnRG91YmxlRG90Oyc6ICdceGE4JywKKyAgICAnRG91YmxlRG93bkFycm93Oyc6ICdcdTIxZDMnLAorICAgICdEb3VibGVMZWZ0QXJyb3c7JzogJ1x1MjFkMCcsCisgICAgJ0RvdWJsZUxlZnRSaWdodEFycm93Oyc6ICdcdTIxZDQnLAorICAgICdEb3VibGVMZWZ0VGVlOyc6ICdcdTJhZTQnLAorICAgICdEb3VibGVMb25nTGVmdEFycm93Oyc6ICdcdTI3ZjgnLAorICAgICdEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3c7JzogJ1x1MjdmYScsCisgICAgJ0RvdWJsZUxvbmdSaWdodEFycm93Oyc6ICdcdTI3ZjknLAorICAgICdEb3VibGVSaWdodEFycm93Oyc6ICdcdTIxZDInLAorICAgICdEb3VibGVSaWdodFRlZTsnOiAnXHUyMmE4JywKKyAgICAnRG91YmxlVXBBcnJvdzsnOiAnXHUyMWQxJywKKyAgICAnRG91YmxlVXBEb3duQXJyb3c7JzogJ1x1MjFkNScsCisgICAgJ0RvdWJsZVZlcnRpY2FsQmFyOyc6ICdcdTIyMjUnLAorICAgICdEb3duQXJyb3c7JzogJ1x1MjE5MycsCisgICAgJ0Rvd25hcnJvdzsnOiAnXHUyMWQzJywKKyAgICAnZG93bmFycm93Oyc6ICdcdTIxOTMnLAorICAgICdEb3duQXJyb3dCYXI7JzogJ1x1MjkxMycsCisgICAgJ0Rvd25BcnJvd1VwQXJyb3c7JzogJ1x1MjFmNScsCisgICAgJ0Rvd25CcmV2ZTsnOiAnXHUyNWNjXHUwMzExJywKKyAgICAnZG93bmRvd25hcnJvd3M7JzogJ1x1MjFjYScsCisgICAgJ2Rvd25oYXJwb29ubGVmdDsnOiAnXHUyMWMzJywKKyAgICAnZG93bmhhcnBvb25yaWdodDsnOiAnXHUyMWMyJywKKyAgICAnRG93bkxlZnRSaWdodFZlY3RvcjsnOiAnXHUyOTUwJywKKyAgICAnRG93bkxlZnRUZWVWZWN0b3I7JzogJ1x1Mjk1ZScsCisgICAgJ0Rvd25MZWZ0VmVjdG9yOyc6ICdcdTIxYmQnLAorICAgICdEb3duTGVmdFZlY3RvckJhcjsnOiAnXHUyOTU2JywKKyAgICAnRG93blJpZ2h0VGVlVmVjdG9yOyc6ICdcdTI5NWYnLAorICAgICdEb3duUmlnaHRWZWN0b3I7JzogJ1x1MjFjMScsCisgICAgJ0Rvd25SaWdodFZlY3RvckJhcjsnOiAnXHUyOTU3JywKKyAgICAnRG93blRlZTsnOiAnXHUyMmE0JywKKyAgICAnRG93blRlZUFycm93Oyc6ICdcdTIxYTcnLAorICAgICdkcmJrYXJvdzsnOiAnXHUyOTEwJywKKyAgICAnZHJjb3JuOyc6ICdcdTIzMWYnLAorICAgICdkcmNyb3A7JzogJ1x1MjMwYycsCisgICAgJ0RzY3I7JzogJ1xVMDAwMWQ0OWYnLAorICAgICdkc2NyOyc6ICdcVTAwMDFkNGI5JywKKyAgICAnRFNjeTsnOiAnXHUwNDA1JywKKyAgICAnZHNjeTsnOiAnXHUwNDU1JywKKyAgICAnZHNvbDsnOiAnXHUyOWY2JywKKyAgICAnRHN0cm9rOyc6ICdcdTAxMTAnLAorICAgICdkc3Ryb2s7JzogJ1x1MDExMScsCisgICAgJ2R0ZG90Oyc6ICdcdTIyZjEnLAorICAgICdkdHJpOyc6ICdcdTI1YmYnLAorICAgICdkdHJpZjsnOiAnXHUyNWJlJywKKyAgICAnZHVhcnI7JzogJ1x1MjFmNScsCisgICAgJ2R1aGFyOyc6ICdcdTI5NmYnLAorICAgICdkd2FuZ2xlOyc6ICdcdTI5YTYnLAorICAgICdEWmN5Oyc6ICdcdTA0MGYnLAorICAgICdkemN5Oyc6ICdcdTA0NWYnLAorICAgICdkemlncmFycjsnOiAnXHUyN2ZmJywKKyAgICAnRWFjdXRlOyc6ICdceGM5JywKKyAgICAnRWFjdXRlJzogJ1x4YzknLAorICAgICdlYWN1dGU7JzogJ1x4ZTknLAorICAgICdlYWN1dGUnOiAnXHhlOScsCisgICAgJ2Vhc3RlcjsnOiAnXHUyYTZlJywKKyAgICAnRWNhcm9uOyc6ICdcdTAxMWEnLAorICAgICdlY2Fyb247JzogJ1x1MDExYicsCisgICAgJ2VjaXI7JzogJ1x1MjI1NicsCisgICAgJ0VjaXJjOyc6ICdceGNhJywKKyAgICAnRWNpcmMnOiAnXHhjYScsCisgICAgJ2VjaXJjOyc6ICdceGVhJywKKyAgICAnZWNpcmMnOiAnXHhlYScsCisgICAgJ2Vjb2xvbjsnOiAnXHUyMjU1JywKKyAgICAnRWN5Oyc6ICdcdTA0MmQnLAorICAgICdlY3k7JzogJ1x1MDQ0ZCcsCisgICAgJ2VERG90Oyc6ICdcdTJhNzcnLAorICAgICdFZG90Oyc6ICdcdTAxMTYnLAorICAgICdlRG90Oyc6ICdcdTIyNTEnLAorICAgICdlZG90Oyc6ICdcdTAxMTcnLAorICAgICdlZTsnOiAnXHUyMTQ3JywKKyAgICAnZWZEb3Q7JzogJ1x1MjI1MicsCisgICAgJ0VmcjsnOiAnXFUwMDAxZDUwOCcsCisgICAgJ2VmcjsnOiAnXFUwMDAxZDUyMicsCisgICAgJ2VnOyc6ICdcdTJhOWEnLAorICAgICdFZ3JhdmU7JzogJ1x4YzgnLAorICAgICdFZ3JhdmUnOiAnXHhjOCcsCisgICAgJ2VncmF2ZTsnOiAnXHhlOCcsCisgICAgJ2VncmF2ZSc6ICdceGU4JywKKyAgICAnZWdzOyc6ICdcdTJhOTYnLAorICAgICdlZ3Nkb3Q7JzogJ1x1MmE5OCcsCisgICAgJ2VsOyc6ICdcdTJhOTknLAorICAgICdFbGVtZW50Oyc6ICdcdTIyMDgnLAorICAgICdlbGludGVyczsnOiAnXHUyM2U3JywKKyAgICAnZWxsOyc6ICdcdTIxMTMnLAorICAgICdlbHM7JzogJ1x1MmE5NScsCisgICAgJ2Vsc2RvdDsnOiAnXHUyYTk3JywKKyAgICAnRW1hY3I7JzogJ1x1MDExMicsCisgICAgJ2VtYWNyOyc6ICdcdTAxMTMnLAorICAgICdlbXB0eTsnOiAnXHUyMjA1JywKKyAgICAnZW1wdHlzZXQ7JzogJ1x1MjIwNScsCisgICAgJ0VtcHR5U21hbGxTcXVhcmU7JzogJ1x1MjVmYicsCisgICAgJ2VtcHR5djsnOiAnXHUyMjA1JywKKyAgICAnRW1wdHlWZXJ5U21hbGxTcXVhcmU7JzogJ1x1MjVhYicsCisgICAgJ2Vtc3A7JzogJ1x1MjAwMycsCisgICAgJ2Vtc3AxMzsnOiAnXHUyMDA0JywKKyAgICAnZW1zcDE0Oyc6ICdcdTIwMDUnLAorICAgICdFTkc7JzogJ1x1MDE0YScsCisgICAgJ2VuZzsnOiAnXHUwMTRiJywKKyAgICAnZW5zcDsnOiAnXHUyMDAyJywKKyAgICAnRW9nb247JzogJ1x1MDExOCcsCisgICAgJ2VvZ29uOyc6ICdcdTAxMTknLAorICAgICdFb3BmOyc6ICdcVTAwMDFkNTNjJywKKyAgICAnZW9wZjsnOiAnXFUwMDAxZDU1NicsCisgICAgJ2VwYXI7JzogJ1x1MjJkNScsCisgICAgJ2VwYXJzbDsnOiAnXHUyOWUzJywKKyAgICAnZXBsdXM7JzogJ1x1MmE3MScsCisgICAgJ2Vwc2k7JzogJ1x1MDNiNScsCisgICAgJ0Vwc2lsb247JzogJ1x1MDM5NScsCisgICAgJ2Vwc2lsb247JzogJ1x1MDNiNScsCisgICAgJ2Vwc2l2Oyc6ICdcdTAzZjUnLAorICAgICdlcWNpcmM7JzogJ1x1MjI1NicsCisgICAgJ2VxY29sb247JzogJ1x1MjI1NScsCisgICAgJ2Vxc2ltOyc6ICdcdTIyNDInLAorICAgICdlcXNsYW50Z3RyOyc6ICdcdTJhOTYnLAorICAgICdlcXNsYW50bGVzczsnOiAnXHUyYTk1JywKKyAgICAnRXF1YWw7JzogJ1x1MmE3NScsCisgICAgJ2VxdWFsczsnOiAnPScsCisgICAgJ0VxdWFsVGlsZGU7JzogJ1x1MjI0MicsCisgICAgJ2VxdWVzdDsnOiAnXHUyMjVmJywKKyAgICAnRXF1aWxpYnJpdW07JzogJ1x1MjFjYycsCisgICAgJ2VxdWl2Oyc6ICdcdTIyNjEnLAorICAgICdlcXVpdkREOyc6ICdcdTJhNzgnLAorICAgICdlcXZwYXJzbDsnOiAnXHUyOWU1JywKKyAgICAnZXJhcnI7JzogJ1x1Mjk3MScsCisgICAgJ2VyRG90Oyc6ICdcdTIyNTMnLAorICAgICdFc2NyOyc6ICdcdTIxMzAnLAorICAgICdlc2NyOyc6ICdcdTIxMmYnLAorICAgICdlc2RvdDsnOiAnXHUyMjUwJywKKyAgICAnRXNpbTsnOiAnXHUyYTczJywKKyAgICAnZXNpbTsnOiAnXHUyMjQyJywKKyAgICAnRXRhOyc6ICdcdTAzOTcnLAorICAgICdldGE7JzogJ1x1MDNiNycsCisgICAgJ0VUSDsnOiAnXHhkMCcsCisgICAgJ0VUSCc6ICdceGQwJywKKyAgICAnZXRoOyc6ICdceGYwJywKKyAgICAnZXRoJzogJ1x4ZjAnLAorICAgICdFdW1sOyc6ICdceGNiJywKKyAgICAnRXVtbCc6ICdceGNiJywKKyAgICAnZXVtbDsnOiAnXHhlYicsCisgICAgJ2V1bWwnOiAnXHhlYicsCisgICAgJ2V1cm87JzogJ1x1MjBhYycsCisgICAgJ2V4Y2w7JzogJyEnLAorICAgICdleGlzdDsnOiAnXHUyMjAzJywKKyAgICAnRXhpc3RzOyc6ICdcdTIyMDMnLAorICAgICdleHBlY3RhdGlvbjsnOiAnXHUyMTMwJywKKyAgICAnRXhwb25lbnRpYWxFOyc6ICdcdTIxNDcnLAorICAgICdleHBvbmVudGlhbGU7JzogJ1x1MjE0NycsCisgICAgJ2ZhbGxpbmdkb3RzZXE7JzogJ1x1MjI1MicsCisgICAgJ0ZjeTsnOiAnXHUwNDI0JywKKyAgICAnZmN5Oyc6ICdcdTA0NDQnLAorICAgICdmZW1hbGU7JzogJ1x1MjY0MCcsCisgICAgJ2ZmaWxpZzsnOiAnXHVmYjAzJywKKyAgICAnZmZsaWc7JzogJ1x1ZmIwMCcsCisgICAgJ2ZmbGxpZzsnOiAnXHVmYjA0JywKKyAgICAnRmZyOyc6ICdcVTAwMDFkNTA5JywKKyAgICAnZmZyOyc6ICdcVTAwMDFkNTIzJywKKyAgICAnZmlsaWc7JzogJ1x1ZmIwMScsCisgICAgJ0ZpbGxlZFNtYWxsU3F1YXJlOyc6ICdcdTI1ZmMnLAorICAgICdGaWxsZWRWZXJ5U21hbGxTcXVhcmU7JzogJ1x1MjVhYScsCisgICAgJ2ZqbGlnOyc6ICdmaicsCisgICAgJ2ZsYXQ7JzogJ1x1MjY2ZCcsCisgICAgJ2ZsbGlnOyc6ICdcdWZiMDInLAorICAgICdmbHRuczsnOiAnXHUyNWIxJywKKyAgICAnZm5vZjsnOiAnXHUwMTkyJywKKyAgICAnRm9wZjsnOiAnXFUwMDAxZDUzZCcsCisgICAgJ2ZvcGY7JzogJ1xVMDAwMWQ1NTcnLAorICAgICdGb3JBbGw7JzogJ1x1MjIwMCcsCisgICAgJ2ZvcmFsbDsnOiAnXHUyMjAwJywKKyAgICAnZm9yazsnOiAnXHUyMmQ0JywKKyAgICAnZm9ya3Y7JzogJ1x1MmFkOScsCisgICAgJ0ZvdXJpZXJ0cmY7JzogJ1x1MjEzMScsCisgICAgJ2ZwYXJ0aW50Oyc6ICdcdTJhMGQnLAorICAgICdmcmFjMTI7JzogJ1x4YmQnLAorICAgICdmcmFjMTInOiAnXHhiZCcsCisgICAgJ2ZyYWMxMzsnOiAnXHUyMTUzJywKKyAgICAnZnJhYzE0Oyc6ICdceGJjJywKKyAgICAnZnJhYzE0JzogJ1x4YmMnLAorICAgICdmcmFjMTU7JzogJ1x1MjE1NScsCisgICAgJ2ZyYWMxNjsnOiAnXHUyMTU5JywKKyAgICAnZnJhYzE4Oyc6ICdcdTIxNWInLAorICAgICdmcmFjMjM7JzogJ1x1MjE1NCcsCisgICAgJ2ZyYWMyNTsnOiAnXHUyMTU2JywKKyAgICAnZnJhYzM0Oyc6ICdceGJlJywKKyAgICAnZnJhYzM0JzogJ1x4YmUnLAorICAgICdmcmFjMzU7JzogJ1x1MjE1NycsCisgICAgJ2ZyYWMzODsnOiAnXHUyMTVjJywKKyAgICAnZnJhYzQ1Oyc6ICdcdTIxNTgnLAorICAgICdmcmFjNTY7JzogJ1x1MjE1YScsCisgICAgJ2ZyYWM1ODsnOiAnXHUyMTVkJywKKyAgICAnZnJhYzc4Oyc6ICdcdTIxNWUnLAorICAgICdmcmFzbDsnOiAnXHUyMDQ0JywKKyAgICAnZnJvd247JzogJ1x1MjMyMicsCisgICAgJ0ZzY3I7JzogJ1x1MjEzMScsCisgICAgJ2ZzY3I7JzogJ1xVMDAwMWQ0YmInLAorICAgICdnYWN1dGU7JzogJ1x1MDFmNScsCisgICAgJ0dhbW1hOyc6ICdcdTAzOTMnLAorICAgICdnYW1tYTsnOiAnXHUwM2IzJywKKyAgICAnR2FtbWFkOyc6ICdcdTAzZGMnLAorICAgICdnYW1tYWQ7JzogJ1x1MDNkZCcsCisgICAgJ2dhcDsnOiAnXHUyYTg2JywKKyAgICAnR2JyZXZlOyc6ICdcdTAxMWUnLAorICAgICdnYnJldmU7JzogJ1x1MDExZicsCisgICAgJ0djZWRpbDsnOiAnXHUwMTIyJywKKyAgICAnR2NpcmM7JzogJ1x1MDExYycsCisgICAgJ2djaXJjOyc6ICdcdTAxMWQnLAorICAgICdHY3k7JzogJ1x1MDQxMycsCisgICAgJ2djeTsnOiAnXHUwNDMzJywKKyAgICAnR2RvdDsnOiAnXHUwMTIwJywKKyAgICAnZ2RvdDsnOiAnXHUwMTIxJywKKyAgICAnZ0U7JzogJ1x1MjI2NycsCisgICAgJ2dlOyc6ICdcdTIyNjUnLAorICAgICdnRWw7JzogJ1x1MmE4YycsCisgICAgJ2dlbDsnOiAnXHUyMmRiJywKKyAgICAnZ2VxOyc6ICdcdTIyNjUnLAorICAgICdnZXFxOyc6ICdcdTIyNjcnLAorICAgICdnZXFzbGFudDsnOiAnXHUyYTdlJywKKyAgICAnZ2VzOyc6ICdcdTJhN2UnLAorICAgICdnZXNjYzsnOiAnXHUyYWE5JywKKyAgICAnZ2VzZG90Oyc6ICdcdTJhODAnLAorICAgICdnZXNkb3RvOyc6ICdcdTJhODInLAorICAgICdnZXNkb3RvbDsnOiAnXHUyYTg0JywKKyAgICAnZ2VzbDsnOiAnXHUyMmRiXHVmZTAwJywKKyAgICAnZ2VzbGVzOyc6ICdcdTJhOTQnLAorICAgICdHZnI7JzogJ1xVMDAwMWQ1MGEnLAorICAgICdnZnI7JzogJ1xVMDAwMWQ1MjQnLAorICAgICdHZzsnOiAnXHUyMmQ5JywKKyAgICAnZ2c7JzogJ1x1MjI2YicsCisgICAgJ2dnZzsnOiAnXHUyMmQ5JywKKyAgICAnZ2ltZWw7JzogJ1x1MjEzNycsCisgICAgJ0dKY3k7JzogJ1x1MDQwMycsCisgICAgJ2dqY3k7JzogJ1x1MDQ1MycsCisgICAgJ2dsOyc6ICdcdTIyNzcnLAorICAgICdnbGE7JzogJ1x1MmFhNScsCisgICAgJ2dsRTsnOiAnXHUyYTkyJywKKyAgICAnZ2xqOyc6ICdcdTJhYTQnLAorICAgICdnbmFwOyc6ICdcdTJhOGEnLAorICAgICdnbmFwcHJveDsnOiAnXHUyYThhJywKKyAgICAnZ25FOyc6ICdcdTIyNjknLAorICAgICdnbmU7JzogJ1x1MmE4OCcsCisgICAgJ2duZXE7JzogJ1x1MmE4OCcsCisgICAgJ2duZXFxOyc6ICdcdTIyNjknLAorICAgICdnbnNpbTsnOiAnXHUyMmU3JywKKyAgICAnR29wZjsnOiAnXFUwMDAxZDUzZScsCisgICAgJ2dvcGY7JzogJ1xVMDAwMWQ1NTgnLAorICAgICdncmF2ZTsnOiAnYCcsCisgICAgJ0dyZWF0ZXJFcXVhbDsnOiAnXHUyMjY1JywKKyAgICAnR3JlYXRlckVxdWFsTGVzczsnOiAnXHUyMmRiJywKKyAgICAnR3JlYXRlckZ1bGxFcXVhbDsnOiAnXHUyMjY3JywKKyAgICAnR3JlYXRlckdyZWF0ZXI7JzogJ1x1MmFhMicsCisgICAgJ0dyZWF0ZXJMZXNzOyc6ICdcdTIyNzcnLAorICAgICdHcmVhdGVyU2xhbnRFcXVhbDsnOiAnXHUyYTdlJywKKyAgICAnR3JlYXRlclRpbGRlOyc6ICdcdTIyNzMnLAorICAgICdHc2NyOyc6ICdcVTAwMDFkNGEyJywKKyAgICAnZ3NjcjsnOiAnXHUyMTBhJywKKyAgICAnZ3NpbTsnOiAnXHUyMjczJywKKyAgICAnZ3NpbWU7JzogJ1x1MmE4ZScsCisgICAgJ2dzaW1sOyc6ICdcdTJhOTAnLAorICAgICdHVDsnOiAnPicsCisgICAgJ0dUJzogJz4nLAorICAgICdHdDsnOiAnXHUyMjZiJywKKyAgICAnZ3Q7JzogJz4nLAorICAgICdndCc6ICc+JywKKyAgICAnZ3RjYzsnOiAnXHUyYWE3JywKKyAgICAnZ3RjaXI7JzogJ1x1MmE3YScsCisgICAgJ2d0ZG90Oyc6ICdcdTIyZDcnLAorICAgICdndGxQYXI7JzogJ1x1Mjk5NScsCisgICAgJ2d0cXVlc3Q7JzogJ1x1MmE3YycsCisgICAgJ2d0cmFwcHJveDsnOiAnXHUyYTg2JywKKyAgICAnZ3RyYXJyOyc6ICdcdTI5NzgnLAorICAgICdndHJkb3Q7JzogJ1x1MjJkNycsCisgICAgJ2d0cmVxbGVzczsnOiAnXHUyMmRiJywKKyAgICAnZ3RyZXFxbGVzczsnOiAnXHUyYThjJywKKyAgICAnZ3RybGVzczsnOiAnXHUyMjc3JywKKyAgICAnZ3Ryc2ltOyc6ICdcdTIyNzMnLAorICAgICdndmVydG5lcXE7JzogJ1x1MjI2OVx1ZmUwMCcsCisgICAgJ2d2bkU7JzogJ1x1MjI2OVx1ZmUwMCcsCisgICAgJ0hhY2VrOyc6ICdcdTAyYzcnLAorICAgICdoYWlyc3A7JzogJ1x1MjAwYScsCisgICAgJ2hhbGY7JzogJ1x4YmQnLAorICAgICdoYW1pbHQ7JzogJ1x1MjEwYicsCisgICAgJ0hBUkRjeTsnOiAnXHUwNDJhJywKKyAgICAnaGFyZGN5Oyc6ICdcdTA0NGEnLAorICAgICdoQXJyOyc6ICdcdTIxZDQnLAorICAgICdoYXJyOyc6ICdcdTIxOTQnLAorICAgICdoYXJyY2lyOyc6ICdcdTI5NDgnLAorICAgICdoYXJydzsnOiAnXHUyMWFkJywKKyAgICAnSGF0Oyc6ICdeJywKKyAgICAnaGJhcjsnOiAnXHUyMTBmJywKKyAgICAnSGNpcmM7JzogJ1x1MDEyNCcsCisgICAgJ2hjaXJjOyc6ICdcdTAxMjUnLAorICAgICdoZWFydHM7JzogJ1x1MjY2NScsCisgICAgJ2hlYXJ0c3VpdDsnOiAnXHUyNjY1JywKKyAgICAnaGVsbGlwOyc6ICdcdTIwMjYnLAorICAgICdoZXJjb247JzogJ1x1MjJiOScsCisgICAgJ0hmcjsnOiAnXHUyMTBjJywKKyAgICAnaGZyOyc6ICdcVTAwMDFkNTI1JywKKyAgICAnSGlsYmVydFNwYWNlOyc6ICdcdTIxMGInLAorICAgICdoa3NlYXJvdzsnOiAnXHUyOTI1JywKKyAgICAnaGtzd2Fyb3c7JzogJ1x1MjkyNicsCisgICAgJ2hvYXJyOyc6ICdcdTIxZmYnLAorICAgICdob210aHQ7JzogJ1x1MjIzYicsCisgICAgJ2hvb2tsZWZ0YXJyb3c7JzogJ1x1MjFhOScsCisgICAgJ2hvb2tyaWdodGFycm93Oyc6ICdcdTIxYWEnLAorICAgICdIb3BmOyc6ICdcdTIxMGQnLAorICAgICdob3BmOyc6ICdcVTAwMDFkNTU5JywKKyAgICAnaG9yYmFyOyc6ICdcdTIwMTUnLAorICAgICdIb3Jpem9udGFsTGluZTsnOiAnXHUyNTAwJywKKyAgICAnSHNjcjsnOiAnXHUyMTBiJywKKyAgICAnaHNjcjsnOiAnXFUwMDAxZDRiZCcsCisgICAgJ2hzbGFzaDsnOiAnXHUyMTBmJywKKyAgICAnSHN0cm9rOyc6ICdcdTAxMjYnLAorICAgICdoc3Ryb2s7JzogJ1x1MDEyNycsCisgICAgJ0h1bXBEb3duSHVtcDsnOiAnXHUyMjRlJywKKyAgICAnSHVtcEVxdWFsOyc6ICdcdTIyNGYnLAorICAgICdoeWJ1bGw7JzogJ1x1MjA0MycsCisgICAgJ2h5cGhlbjsnOiAnXHUyMDEwJywKKyAgICAnSWFjdXRlOyc6ICdceGNkJywKKyAgICAnSWFjdXRlJzogJ1x4Y2QnLAorICAgICdpYWN1dGU7JzogJ1x4ZWQnLAorICAgICdpYWN1dGUnOiAnXHhlZCcsCisgICAgJ2ljOyc6ICdcdTIwNjMnLAorICAgICdJY2lyYzsnOiAnXHhjZScsCisgICAgJ0ljaXJjJzogJ1x4Y2UnLAorICAgICdpY2lyYzsnOiAnXHhlZScsCisgICAgJ2ljaXJjJzogJ1x4ZWUnLAorICAgICdJY3k7JzogJ1x1MDQxOCcsCisgICAgJ2ljeTsnOiAnXHUwNDM4JywKKyAgICAnSWRvdDsnOiAnXHUwMTMwJywKKyAgICAnSUVjeTsnOiAnXHUwNDE1JywKKyAgICAnaWVjeTsnOiAnXHUwNDM1JywKKyAgICAnaWV4Y2w7JzogJ1x4YTEnLAorICAgICdpZXhjbCc6ICdceGExJywKKyAgICAnaWZmOyc6ICdcdTIxZDQnLAorICAgICdJZnI7JzogJ1x1MjExMScsCisgICAgJ2lmcjsnOiAnXFUwMDAxZDUyNicsCisgICAgJ0lncmF2ZTsnOiAnXHhjYycsCisgICAgJ0lncmF2ZSc6ICdceGNjJywKKyAgICAnaWdyYXZlOyc6ICdceGVjJywKKyAgICAnaWdyYXZlJzogJ1x4ZWMnLAorICAgICdpaTsnOiAnXHUyMTQ4JywKKyAgICAnaWlpaW50Oyc6ICdcdTJhMGMnLAorICAgICdpaWludDsnOiAnXHUyMjJkJywKKyAgICAnaWluZmluOyc6ICdcdTI5ZGMnLAorICAgICdpaW90YTsnOiAnXHUyMTI5JywKKyAgICAnSUpsaWc7JzogJ1x1MDEzMicsCisgICAgJ2lqbGlnOyc6ICdcdTAxMzMnLAorICAgICdJbTsnOiAnXHUyMTExJywKKyAgICAnSW1hY3I7JzogJ1x1MDEyYScsCisgICAgJ2ltYWNyOyc6ICdcdTAxMmInLAorICAgICdpbWFnZTsnOiAnXHUyMTExJywKKyAgICAnSW1hZ2luYXJ5STsnOiAnXHUyMTQ4JywKKyAgICAnaW1hZ2xpbmU7JzogJ1x1MjExMCcsCisgICAgJ2ltYWdwYXJ0Oyc6ICdcdTIxMTEnLAorICAgICdpbWF0aDsnOiAnXHUwMTMxJywKKyAgICAnaW1vZjsnOiAnXHUyMmI3JywKKyAgICAnaW1wZWQ7JzogJ1x1MDFiNScsCisgICAgJ0ltcGxpZXM7JzogJ1x1MjFkMicsCisgICAgJ2luOyc6ICdcdTIyMDgnLAorICAgICdpbmNhcmU7JzogJ1x1MjEwNScsCisgICAgJ2luZmluOyc6ICdcdTIyMWUnLAorICAgICdpbmZpbnRpZTsnOiAnXHUyOWRkJywKKyAgICAnaW5vZG90Oyc6ICdcdTAxMzEnLAorICAgICdJbnQ7JzogJ1x1MjIyYycsCisgICAgJ2ludDsnOiAnXHUyMjJiJywKKyAgICAnaW50Y2FsOyc6ICdcdTIyYmEnLAorICAgICdpbnRlZ2VyczsnOiAnXHUyMTI0JywKKyAgICAnSW50ZWdyYWw7JzogJ1x1MjIyYicsCisgICAgJ2ludGVyY2FsOyc6ICdcdTIyYmEnLAorICAgICdJbnRlcnNlY3Rpb247JzogJ1x1MjJjMicsCisgICAgJ2ludGxhcmhrOyc6ICdcdTJhMTcnLAorICAgICdpbnRwcm9kOyc6ICdcdTJhM2MnLAorICAgICdJbnZpc2libGVDb21tYTsnOiAnXHUyMDYzJywKKyAgICAnSW52aXNpYmxlVGltZXM7JzogJ1x1MjA2MicsCisgICAgJ0lPY3k7JzogJ1x1MDQwMScsCisgICAgJ2lvY3k7JzogJ1x1MDQ1MScsCisgICAgJ0lvZ29uOyc6ICdcdTAxMmUnLAorICAgICdpb2dvbjsnOiAnXHUwMTJmJywKKyAgICAnSW9wZjsnOiAnXFUwMDAxZDU0MCcsCisgICAgJ2lvcGY7JzogJ1xVMDAwMWQ1NWEnLAorICAgICdJb3RhOyc6ICdcdTAzOTknLAorICAgICdpb3RhOyc6ICdcdTAzYjknLAorICAgICdpcHJvZDsnOiAnXHUyYTNjJywKKyAgICAnaXF1ZXN0Oyc6ICdceGJmJywKKyAgICAnaXF1ZXN0JzogJ1x4YmYnLAorICAgICdJc2NyOyc6ICdcdTIxMTAnLAorICAgICdpc2NyOyc6ICdcVTAwMDFkNGJlJywKKyAgICAnaXNpbjsnOiAnXHUyMjA4JywKKyAgICAnaXNpbmRvdDsnOiAnXHUyMmY1JywKKyAgICAnaXNpbkU7JzogJ1x1MjJmOScsCisgICAgJ2lzaW5zOyc6ICdcdTIyZjQnLAorICAgICdpc2luc3Y7JzogJ1x1MjJmMycsCisgICAgJ2lzaW52Oyc6ICdcdTIyMDgnLAorICAgICdpdDsnOiAnXHUyMDYyJywKKyAgICAnSXRpbGRlOyc6ICdcdTAxMjgnLAorICAgICdpdGlsZGU7JzogJ1x1MDEyOScsCisgICAgJ0l1a2N5Oyc6ICdcdTA0MDYnLAorICAgICdpdWtjeTsnOiAnXHUwNDU2JywKKyAgICAnSXVtbDsnOiAnXHhjZicsCisgICAgJ0l1bWwnOiAnXHhjZicsCisgICAgJ2l1bWw7JzogJ1x4ZWYnLAorICAgICdpdW1sJzogJ1x4ZWYnLAorICAgICdKY2lyYzsnOiAnXHUwMTM0JywKKyAgICAnamNpcmM7JzogJ1x1MDEzNScsCisgICAgJ0pjeTsnOiAnXHUwNDE5JywKKyAgICAnamN5Oyc6ICdcdTA0MzknLAorICAgICdKZnI7JzogJ1xVMDAwMWQ1MGQnLAorICAgICdqZnI7JzogJ1xVMDAwMWQ1MjcnLAorICAgICdqbWF0aDsnOiAnXHUwMjM3JywKKyAgICAnSm9wZjsnOiAnXFUwMDAxZDU0MScsCisgICAgJ2pvcGY7JzogJ1xVMDAwMWQ1NWInLAorICAgICdKc2NyOyc6ICdcVTAwMDFkNGE1JywKKyAgICAnanNjcjsnOiAnXFUwMDAxZDRiZicsCisgICAgJ0pzZXJjeTsnOiAnXHUwNDA4JywKKyAgICAnanNlcmN5Oyc6ICdcdTA0NTgnLAorICAgICdKdWtjeTsnOiAnXHUwNDA0JywKKyAgICAnanVrY3k7JzogJ1x1MDQ1NCcsCisgICAgJ0thcHBhOyc6ICdcdTAzOWEnLAorICAgICdrYXBwYTsnOiAnXHUwM2JhJywKKyAgICAna2FwcGF2Oyc6ICdcdTAzZjAnLAorICAgICdLY2VkaWw7JzogJ1x1MDEzNicsCisgICAgJ2tjZWRpbDsnOiAnXHUwMTM3JywKKyAgICAnS2N5Oyc6ICdcdTA0MWEnLAorICAgICdrY3k7JzogJ1x1MDQzYScsCisgICAgJ0tmcjsnOiAnXFUwMDAxZDUwZScsCisgICAgJ2tmcjsnOiAnXFUwMDAxZDUyOCcsCisgICAgJ2tncmVlbjsnOiAnXHUwMTM4JywKKyAgICAnS0hjeTsnOiAnXHUwNDI1JywKKyAgICAna2hjeTsnOiAnXHUwNDQ1JywKKyAgICAnS0pjeTsnOiAnXHUwNDBjJywKKyAgICAna2pjeTsnOiAnXHUwNDVjJywKKyAgICAnS29wZjsnOiAnXFUwMDAxZDU0MicsCisgICAgJ2tvcGY7JzogJ1xVMDAwMWQ1NWMnLAorICAgICdLc2NyOyc6ICdcVTAwMDFkNGE2JywKKyAgICAna3NjcjsnOiAnXFUwMDAxZDRjMCcsCisgICAgJ2xBYXJyOyc6ICdcdTIxZGEnLAorICAgICdMYWN1dGU7JzogJ1x1MDEzOScsCisgICAgJ2xhY3V0ZTsnOiAnXHUwMTNhJywKKyAgICAnbGFlbXB0eXY7JzogJ1x1MjliNCcsCisgICAgJ2xhZ3JhbjsnOiAnXHUyMTEyJywKKyAgICAnTGFtYmRhOyc6ICdcdTAzOWInLAorICAgICdsYW1iZGE7JzogJ1x1MDNiYicsCisgICAgJ0xhbmc7JzogJ1x1MjdlYScsCisgICAgJ2xhbmc7JzogJ1x1MjMyOScsCisgICAgJ2xhbmdkOyc6ICdcdTI5OTEnLAorICAgICdsYW5nbGU7JzogJ1x1MjMyOScsCisgICAgJ2xhcDsnOiAnXHUyYTg1JywKKyAgICAnTGFwbGFjZXRyZjsnOiAnXHUyMTEyJywKKyAgICAnbGFxdW87JzogJ1x4YWInLAorICAgICdsYXF1byc6ICdceGFiJywKKyAgICAnTGFycjsnOiAnXHUyMTllJywKKyAgICAnbEFycjsnOiAnXHUyMWQwJywKKyAgICAnbGFycjsnOiAnXHUyMTkwJywKKyAgICAnbGFycmI7JzogJ1x1MjFlNCcsCisgICAgJ2xhcnJiZnM7JzogJ1x1MjkxZicsCisgICAgJ2xhcnJmczsnOiAnXHUyOTFkJywKKyAgICAnbGFycmhrOyc6ICdcdTIxYTknLAorICAgICdsYXJybHA7JzogJ1x1MjFhYicsCisgICAgJ2xhcnJwbDsnOiAnXHUyOTM5JywKKyAgICAnbGFycnNpbTsnOiAnXHUyOTczJywKKyAgICAnbGFycnRsOyc6ICdcdTIxYTInLAorICAgICdsYXQ7JzogJ1x1MmFhYicsCisgICAgJ2xBdGFpbDsnOiAnXHUyOTFiJywKKyAgICAnbGF0YWlsOyc6ICdcdTI5MTknLAorICAgICdsYXRlOyc6ICdcdTJhYWQnLAorICAgICdsYXRlczsnOiAnXHUyYWFkXHVmZTAwJywKKyAgICAnbEJhcnI7JzogJ1x1MjkwZScsCisgICAgJ2xiYXJyOyc6ICdcdTI5MGMnLAorICAgICdsYmJyazsnOiAnXHUyNzcyJywKKyAgICAnbGJyYWNlOyc6ICd7JywKKyAgICAnbGJyYWNrOyc6ICdbJywKKyAgICAnbGJya2U7JzogJ1x1Mjk4YicsCisgICAgJ2xicmtzbGQ7JzogJ1x1Mjk4ZicsCisgICAgJ2xicmtzbHU7JzogJ1x1Mjk4ZCcsCisgICAgJ0xjYXJvbjsnOiAnXHUwMTNkJywKKyAgICAnbGNhcm9uOyc6ICdcdTAxM2UnLAorICAgICdMY2VkaWw7JzogJ1x1MDEzYicsCisgICAgJ2xjZWRpbDsnOiAnXHUwMTNjJywKKyAgICAnbGNlaWw7JzogJ1x1MjMwOCcsCisgICAgJ2xjdWI7JzogJ3snLAorICAgICdMY3k7JzogJ1x1MDQxYicsCisgICAgJ2xjeTsnOiAnXHUwNDNiJywKKyAgICAnbGRjYTsnOiAnXHUyOTM2JywKKyAgICAnbGRxdW87JzogJ1x1MjAxYycsCisgICAgJ2xkcXVvcjsnOiAnXHUyMDFlJywKKyAgICAnbGRyZGhhcjsnOiAnXHUyOTY3JywKKyAgICAnbGRydXNoYXI7JzogJ1x1Mjk0YicsCisgICAgJ2xkc2g7JzogJ1x1MjFiMicsCisgICAgJ2xFOyc6ICdcdTIyNjYnLAorICAgICdsZTsnOiAnXHUyMjY0JywKKyAgICAnTGVmdEFuZ2xlQnJhY2tldDsnOiAnXHUyMzI5JywKKyAgICAnTGVmdEFycm93Oyc6ICdcdTIxOTAnLAorICAgICdMZWZ0YXJyb3c7JzogJ1x1MjFkMCcsCisgICAgJ2xlZnRhcnJvdzsnOiAnXHUyMTkwJywKKyAgICAnTGVmdEFycm93QmFyOyc6ICdcdTIxZTQnLAorICAgICdMZWZ0QXJyb3dSaWdodEFycm93Oyc6ICdcdTIxYzYnLAorICAgICdsZWZ0YXJyb3d0YWlsOyc6ICdcdTIxYTInLAorICAgICdMZWZ0Q2VpbGluZzsnOiAnXHUyMzA4JywKKyAgICAnTGVmdERvdWJsZUJyYWNrZXQ7JzogJ1x1MjdlNicsCisgICAgJ0xlZnREb3duVGVlVmVjdG9yOyc6ICdcdTI5NjEnLAorICAgICdMZWZ0RG93blZlY3RvcjsnOiAnXHUyMWMzJywKKyAgICAnTGVmdERvd25WZWN0b3JCYXI7JzogJ1x1Mjk1OScsCisgICAgJ0xlZnRGbG9vcjsnOiAnXHUyMzBhJywKKyAgICAnbGVmdGhhcnBvb25kb3duOyc6ICdcdTIxYmQnLAorICAgICdsZWZ0aGFycG9vbnVwOyc6ICdcdTIxYmMnLAorICAgICdsZWZ0bGVmdGFycm93czsnOiAnXHUyMWM3JywKKyAgICAnTGVmdFJpZ2h0QXJyb3c7JzogJ1x1MjE5NCcsCisgICAgJ0xlZnRyaWdodGFycm93Oyc6ICdcdTIxZDQnLAorICAgICdsZWZ0cmlnaHRhcnJvdzsnOiAnXHUyMTk0JywKKyAgICAnbGVmdHJpZ2h0YXJyb3dzOyc6ICdcdTIxYzYnLAorICAgICdsZWZ0cmlnaHRoYXJwb29uczsnOiAnXHUyMWNiJywKKyAgICAnbGVmdHJpZ2h0c3F1aWdhcnJvdzsnOiAnXHUyMWFkJywKKyAgICAnTGVmdFJpZ2h0VmVjdG9yOyc6ICdcdTI5NGUnLAorICAgICdMZWZ0VGVlOyc6ICdcdTIyYTMnLAorICAgICdMZWZ0VGVlQXJyb3c7JzogJ1x1MjFhNCcsCisgICAgJ0xlZnRUZWVWZWN0b3I7JzogJ1x1Mjk1YScsCisgICAgJ2xlZnR0aHJlZXRpbWVzOyc6ICdcdTIyY2InLAorICAgICdMZWZ0VHJpYW5nbGU7JzogJ1x1MjJiMicsCisgICAgJ0xlZnRUcmlhbmdsZUJhcjsnOiAnXHUyOWNmJywKKyAgICAnTGVmdFRyaWFuZ2xlRXF1YWw7JzogJ1x1MjJiNCcsCisgICAgJ0xlZnRVcERvd25WZWN0b3I7JzogJ1x1Mjk1MScsCisgICAgJ0xlZnRVcFRlZVZlY3RvcjsnOiAnXHUyOTYwJywKKyAgICAnTGVmdFVwVmVjdG9yOyc6ICdcdTIxYmYnLAorICAgICdMZWZ0VXBWZWN0b3JCYXI7JzogJ1x1Mjk1OCcsCisgICAgJ0xlZnRWZWN0b3I7JzogJ1x1MjFiYycsCisgICAgJ0xlZnRWZWN0b3JCYXI7JzogJ1x1Mjk1MicsCisgICAgJ2xFZzsnOiAnXHUyYThiJywKKyAgICAnbGVnOyc6ICdcdTIyZGEnLAorICAgICdsZXE7JzogJ1x1MjI2NCcsCisgICAgJ2xlcXE7JzogJ1x1MjI2NicsCisgICAgJ2xlcXNsYW50Oyc6ICdcdTJhN2QnLAorICAgICdsZXM7JzogJ1x1MmE3ZCcsCisgICAgJ2xlc2NjOyc6ICdcdTJhYTgnLAorICAgICdsZXNkb3Q7JzogJ1x1MmE3ZicsCisgICAgJ2xlc2RvdG87JzogJ1x1MmE4MScsCisgICAgJ2xlc2RvdG9yOyc6ICdcdTJhODMnLAorICAgICdsZXNnOyc6ICdcdTIyZGFcdWZlMDAnLAorICAgICdsZXNnZXM7JzogJ1x1MmE5MycsCisgICAgJ2xlc3NhcHByb3g7JzogJ1x1MmE4NScsCisgICAgJ2xlc3Nkb3Q7JzogJ1x1MjJkNicsCisgICAgJ2xlc3NlcWd0cjsnOiAnXHUyMmRhJywKKyAgICAnbGVzc2VxcWd0cjsnOiAnXHUyYThiJywKKyAgICAnTGVzc0VxdWFsR3JlYXRlcjsnOiAnXHUyMmRhJywKKyAgICAnTGVzc0Z1bGxFcXVhbDsnOiAnXHUyMjY2JywKKyAgICAnTGVzc0dyZWF0ZXI7JzogJ1x1MjI3NicsCisgICAgJ2xlc3NndHI7JzogJ1x1MjI3NicsCisgICAgJ0xlc3NMZXNzOyc6ICdcdTJhYTEnLAorICAgICdsZXNzc2ltOyc6ICdcdTIyNzInLAorICAgICdMZXNzU2xhbnRFcXVhbDsnOiAnXHUyYTdkJywKKyAgICAnTGVzc1RpbGRlOyc6ICdcdTIyNzInLAorICAgICdsZmlzaHQ7JzogJ1x1Mjk3YycsCisgICAgJ2xmbG9vcjsnOiAnXHUyMzBhJywKKyAgICAnTGZyOyc6ICdcVTAwMDFkNTBmJywKKyAgICAnbGZyOyc6ICdcVTAwMDFkNTI5JywKKyAgICAnbGc7JzogJ1x1MjI3NicsCisgICAgJ2xnRTsnOiAnXHUyYTkxJywKKyAgICAnbEhhcjsnOiAnXHUyOTYyJywKKyAgICAnbGhhcmQ7JzogJ1x1MjFiZCcsCisgICAgJ2xoYXJ1Oyc6ICdcdTIxYmMnLAorICAgICdsaGFydWw7JzogJ1x1Mjk2YScsCisgICAgJ2xoYmxrOyc6ICdcdTI1ODQnLAorICAgICdMSmN5Oyc6ICdcdTA0MDknLAorICAgICdsamN5Oyc6ICdcdTA0NTknLAorICAgICdMbDsnOiAnXHUyMmQ4JywKKyAgICAnbGw7JzogJ1x1MjI2YScsCisgICAgJ2xsYXJyOyc6ICdcdTIxYzcnLAorICAgICdsbGNvcm5lcjsnOiAnXHUyMzFlJywKKyAgICAnTGxlZnRhcnJvdzsnOiAnXHUyMWRhJywKKyAgICAnbGxoYXJkOyc6ICdcdTI5NmInLAorICAgICdsbHRyaTsnOiAnXHUyNWZhJywKKyAgICAnTG1pZG90Oyc6ICdcdTAxM2YnLAorICAgICdsbWlkb3Q7JzogJ1x1MDE0MCcsCisgICAgJ2xtb3VzdDsnOiAnXHUyM2IwJywKKyAgICAnbG1vdXN0YWNoZTsnOiAnXHUyM2IwJywKKyAgICAnbG5hcDsnOiAnXHUyYTg5JywKKyAgICAnbG5hcHByb3g7JzogJ1x1MmE4OScsCisgICAgJ2xuRTsnOiAnXHUyMjY4JywKKyAgICAnbG5lOyc6ICdcdTJhODcnLAorICAgICdsbmVxOyc6ICdcdTJhODcnLAorICAgICdsbmVxcTsnOiAnXHUyMjY4JywKKyAgICAnbG5zaW07JzogJ1x1MjJlNicsCisgICAgJ2xvYW5nOyc6ICdcdTI3ZWMnLAorICAgICdsb2FycjsnOiAnXHUyMWZkJywKKyAgICAnbG9icms7JzogJ1x1MjdlNicsCisgICAgJ0xvbmdMZWZ0QXJyb3c7JzogJ1x1MjdmNScsCisgICAgJ0xvbmdsZWZ0YXJyb3c7JzogJ1x1MjdmOCcsCisgICAgJ2xvbmdsZWZ0YXJyb3c7JzogJ1x1MjdmNScsCisgICAgJ0xvbmdMZWZ0UmlnaHRBcnJvdzsnOiAnXHUyN2Y3JywKKyAgICAnTG9uZ2xlZnRyaWdodGFycm93Oyc6ICdcdTI3ZmEnLAorICAgICdsb25nbGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjdmNycsCisgICAgJ2xvbmdtYXBzdG87JzogJ1x1MjdmYycsCisgICAgJ0xvbmdSaWdodEFycm93Oyc6ICdcdTI3ZjYnLAorICAgICdMb25ncmlnaHRhcnJvdzsnOiAnXHUyN2Y5JywKKyAgICAnbG9uZ3JpZ2h0YXJyb3c7JzogJ1x1MjdmNicsCisgICAgJ2xvb3BhcnJvd2xlZnQ7JzogJ1x1MjFhYicsCisgICAgJ2xvb3BhcnJvd3JpZ2h0Oyc6ICdcdTIxYWMnLAorICAgICdsb3BhcjsnOiAnXHUyOTg1JywKKyAgICAnTG9wZjsnOiAnXFUwMDAxZDU0MycsCisgICAgJ2xvcGY7JzogJ1xVMDAwMWQ1NWQnLAorICAgICdsb3BsdXM7JzogJ1x1MmEyZCcsCisgICAgJ2xvdGltZXM7JzogJ1x1MmEzNCcsCisgICAgJ2xvd2FzdDsnOiAnXHUyMjE3JywKKyAgICAnbG93YmFyOyc6ICdfJywKKyAgICAnTG93ZXJMZWZ0QXJyb3c7JzogJ1x1MjE5OScsCisgICAgJ0xvd2VyUmlnaHRBcnJvdzsnOiAnXHUyMTk4JywKKyAgICAnbG96Oyc6ICdcdTI1Y2EnLAorICAgICdsb3plbmdlOyc6ICdcdTI1Y2EnLAorICAgICdsb3pmOyc6ICdcdTI5ZWInLAorICAgICdscGFyOyc6ICcoJywKKyAgICAnbHBhcmx0Oyc6ICdcdTI5OTMnLAorICAgICdscmFycjsnOiAnXHUyMWM2JywKKyAgICAnbHJjb3JuZXI7JzogJ1x1MjMxZicsCisgICAgJ2xyaGFyOyc6ICdcdTIxY2InLAorICAgICdscmhhcmQ7JzogJ1x1Mjk2ZCcsCisgICAgJ2xybTsnOiAnXHUyMDBlJywKKyAgICAnbHJ0cmk7JzogJ1x1MjJiZicsCisgICAgJ2xzYXF1bzsnOiAnXHUyMDM5JywKKyAgICAnTHNjcjsnOiAnXHUyMTEyJywKKyAgICAnbHNjcjsnOiAnXFUwMDAxZDRjMScsCisgICAgJ0xzaDsnOiAnXHUyMWIwJywKKyAgICAnbHNoOyc6ICdcdTIxYjAnLAorICAgICdsc2ltOyc6ICdcdTIyNzInLAorICAgICdsc2ltZTsnOiAnXHUyYThkJywKKyAgICAnbHNpbWc7JzogJ1x1MmE4ZicsCisgICAgJ2xzcWI7JzogJ1snLAorICAgICdsc3F1bzsnOiAnXHUyMDE4JywKKyAgICAnbHNxdW9yOyc6ICdcdTIwMWEnLAorICAgICdMc3Ryb2s7JzogJ1x1MDE0MScsCisgICAgJ2xzdHJvazsnOiAnXHUwMTQyJywKKyAgICAnTFQ7JzogJzwnLAorICAgICdMVCc6ICc8JywKKyAgICAnTHQ7JzogJ1x1MjI2YScsCisgICAgJ2x0Oyc6ICc8JywKKyAgICAnbHQnOiAnPCcsCisgICAgJ2x0Y2M7JzogJ1x1MmFhNicsCisgICAgJ2x0Y2lyOyc6ICdcdTJhNzknLAorICAgICdsdGRvdDsnOiAnXHUyMmQ2JywKKyAgICAnbHRocmVlOyc6ICdcdTIyY2InLAorICAgICdsdGltZXM7JzogJ1x1MjJjOScsCisgICAgJ2x0bGFycjsnOiAnXHUyOTc2JywKKyAgICAnbHRxdWVzdDsnOiAnXHUyYTdiJywKKyAgICAnbHRyaTsnOiAnXHUyNWMzJywKKyAgICAnbHRyaWU7JzogJ1x1MjJiNCcsCisgICAgJ2x0cmlmOyc6ICdcdTI1YzInLAorICAgICdsdHJQYXI7JzogJ1x1Mjk5NicsCisgICAgJ2x1cmRzaGFyOyc6ICdcdTI5NGEnLAorICAgICdsdXJ1aGFyOyc6ICdcdTI5NjYnLAorICAgICdsdmVydG5lcXE7JzogJ1x1MjI2OFx1ZmUwMCcsCisgICAgJ2x2bkU7JzogJ1x1MjI2OFx1ZmUwMCcsCisgICAgJ21hY3I7JzogJ1x4YWYnLAorICAgICdtYWNyJzogJ1x4YWYnLAorICAgICdtYWxlOyc6ICdcdTI2NDInLAorICAgICdtYWx0Oyc6ICdcdTI3MjAnLAorICAgICdtYWx0ZXNlOyc6ICdcdTI3MjAnLAorICAgICdNYXA7JzogJ1x1MjkwNScsCisgICAgJ21hcDsnOiAnXHUyMWE2JywKKyAgICAnbWFwc3RvOyc6ICdcdTIxYTYnLAorICAgICdtYXBzdG9kb3duOyc6ICdcdTIxYTcnLAorICAgICdtYXBzdG9sZWZ0Oyc6ICdcdTIxYTQnLAorICAgICdtYXBzdG91cDsnOiAnXHUyMWE1JywKKyAgICAnbWFya2VyOyc6ICdcdTI1YWUnLAorICAgICdtY29tbWE7JzogJ1x1MmEyOScsCisgICAgJ01jeTsnOiAnXHUwNDFjJywKKyAgICAnbWN5Oyc6ICdcdTA0M2MnLAorICAgICdtZGFzaDsnOiAnXHUyMDE0JywKKyAgICAnbUREb3Q7JzogJ1x1MjIzYScsCisgICAgJ21lYXN1cmVkYW5nbGU7JzogJ1x1MjIyMScsCisgICAgJ01lZGl1bVNwYWNlOyc6ICdcdTIwNWYnLAorICAgICdNZWxsaW50cmY7JzogJ1x1MjEzMycsCisgICAgJ01mcjsnOiAnXFUwMDAxZDUxMCcsCisgICAgJ21mcjsnOiAnXFUwMDAxZDUyYScsCisgICAgJ21obzsnOiAnXHUyMTI3JywKKyAgICAnbWljcm87JzogJ1x4YjUnLAorICAgICdtaWNybyc6ICdceGI1JywKKyAgICAnbWlkOyc6ICdcdTIyMjMnLAorICAgICdtaWRhc3Q7JzogJyonLAorICAgICdtaWRjaXI7JzogJ1x1MmFmMCcsCisgICAgJ21pZGRvdDsnOiAnXHhiNycsCisgICAgJ21pZGRvdCc6ICdceGI3JywKKyAgICAnbWludXM7JzogJ1x1MjIxMicsCisgICAgJ21pbnVzYjsnOiAnXHUyMjlmJywKKyAgICAnbWludXNkOyc6ICdcdTIyMzgnLAorICAgICdtaW51c2R1Oyc6ICdcdTJhMmEnLAorICAgICdNaW51c1BsdXM7JzogJ1x1MjIxMycsCisgICAgJ21sY3A7JzogJ1x1MmFkYicsCisgICAgJ21sZHI7JzogJ1x1MjAyNicsCisgICAgJ21ucGx1czsnOiAnXHUyMjEzJywKKyAgICAnbW9kZWxzOyc6ICdcdTIyYTcnLAorICAgICdNb3BmOyc6ICdcVTAwMDFkNTQ0JywKKyAgICAnbW9wZjsnOiAnXFUwMDAxZDU1ZScsCisgICAgJ21wOyc6ICdcdTIyMTMnLAorICAgICdNc2NyOyc6ICdcdTIxMzMnLAorICAgICdtc2NyOyc6ICdcVTAwMDFkNGMyJywKKyAgICAnbXN0cG9zOyc6ICdcdTIyM2UnLAorICAgICdNdTsnOiAnXHUwMzljJywKKyAgICAnbXU7JzogJ1x1MDNiYycsCisgICAgJ211bHRpbWFwOyc6ICdcdTIyYjgnLAorICAgICdtdW1hcDsnOiAnXHUyMmI4JywKKyAgICAnbmFibGE7JzogJ1x1MjIwNycsCisgICAgJ05hY3V0ZTsnOiAnXHUwMTQzJywKKyAgICAnbmFjdXRlOyc6ICdcdTAxNDQnLAorICAgICduYW5nOyc6ICdcdTIyMjBcdTIwZDInLAorICAgICduYXA7JzogJ1x1MjI0OScsCisgICAgJ25hcEU7JzogJ1x1MmE3MFx1MDMzOCcsCisgICAgJ25hcGlkOyc6ICdcdTIyNGJcdTAzMzgnLAorICAgICduYXBvczsnOiAnXHUwMTQ5JywKKyAgICAnbmFwcHJveDsnOiAnXHUyMjQ5JywKKyAgICAnbmF0dXI7JzogJ1x1MjY2ZScsCisgICAgJ25hdHVyYWw7JzogJ1x1MjY2ZScsCisgICAgJ25hdHVyYWxzOyc6ICdcdTIxMTUnLAorICAgICduYnNwOyc6ICdceGEwJywKKyAgICAnbmJzcCc6ICdceGEwJywKKyAgICAnbmJ1bXA7JzogJ1x1MjI0ZVx1MDMzOCcsCisgICAgJ25idW1wZTsnOiAnXHUyMjRmXHUwMzM4JywKKyAgICAnbmNhcDsnOiAnXHUyYTQzJywKKyAgICAnTmNhcm9uOyc6ICdcdTAxNDcnLAorICAgICduY2Fyb247JzogJ1x1MDE0OCcsCisgICAgJ05jZWRpbDsnOiAnXHUwMTQ1JywKKyAgICAnbmNlZGlsOyc6ICdcdTAxNDYnLAorICAgICduY29uZzsnOiAnXHUyMjQ3JywKKyAgICAnbmNvbmdkb3Q7JzogJ1x1MmE2ZFx1MDMzOCcsCisgICAgJ25jdXA7JzogJ1x1MmE0MicsCisgICAgJ05jeTsnOiAnXHUwNDFkJywKKyAgICAnbmN5Oyc6ICdcdTA0M2QnLAorICAgICduZGFzaDsnOiAnXHUyMDEzJywKKyAgICAnbmU7JzogJ1x1MjI2MCcsCisgICAgJ25lYXJoazsnOiAnXHUyOTI0JywKKyAgICAnbmVBcnI7JzogJ1x1MjFkNycsCisgICAgJ25lYXJyOyc6ICdcdTIxOTcnLAorICAgICduZWFycm93Oyc6ICdcdTIxOTcnLAorICAgICduZWRvdDsnOiAnXHUyMjUwXHUwMzM4JywKKyAgICAnTmVnYXRpdmVNZWRpdW1TcGFjZTsnOiAnXHUyMDBiJywKKyAgICAnTmVnYXRpdmVUaGlja1NwYWNlOyc6ICdcdTIwMGInLAorICAgICdOZWdhdGl2ZVRoaW5TcGFjZTsnOiAnXHUyMDBiJywKKyAgICAnTmVnYXRpdmVWZXJ5VGhpblNwYWNlOyc6ICdcdTIwMGInLAorICAgICduZXF1aXY7JzogJ1x1MjI2MicsCisgICAgJ25lc2VhcjsnOiAnXHUyOTI4JywKKyAgICAnbmVzaW07JzogJ1x1MjI0Mlx1MDMzOCcsCisgICAgJ05lc3RlZEdyZWF0ZXJHcmVhdGVyOyc6ICdcdTIyNmInLAorICAgICdOZXN0ZWRMZXNzTGVzczsnOiAnXHUyMjZhJywKKyAgICAnTmV3TGluZTsnOiAnXHUyNDBhJywKKyAgICAnbmV4aXN0Oyc6ICdcdTIyMDQnLAorICAgICduZXhpc3RzOyc6ICdcdTIyMDQnLAorICAgICdOZnI7JzogJ1xVMDAwMWQ1MTEnLAorICAgICduZnI7JzogJ1xVMDAwMWQ1MmInLAorICAgICduZ0U7JzogJ1x1MjI2N1x1MDMzOCcsCisgICAgJ25nZTsnOiAnXHUyMjcxJywKKyAgICAnbmdlcTsnOiAnXHUyMjcxJywKKyAgICAnbmdlcXE7JzogJ1x1MjI2N1x1MDMzOCcsCisgICAgJ25nZXFzbGFudDsnOiAnXHUyYTdlXHUwMzM4JywKKyAgICAnbmdlczsnOiAnXHUyYTdlXHUwMzM4JywKKyAgICAnbkdnOyc6ICdcdTIyZDlcdTAzMzgnLAorICAgICduZ3NpbTsnOiAnXHUyMjc1JywKKyAgICAnbkd0Oyc6ICdcdTIyNmJcdTIwZDInLAorICAgICduZ3Q7JzogJ1x1MjI2ZicsCisgICAgJ25ndHI7JzogJ1x1MjI2ZicsCisgICAgJ25HdHY7JzogJ1x1MjI2Ylx1MDMzOCcsCisgICAgJ25oQXJyOyc6ICdcdTIxY2UnLAorICAgICduaGFycjsnOiAnXHUyMWFlJywKKyAgICAnbmhwYXI7JzogJ1x1MmFmMicsCisgICAgJ25pOyc6ICdcdTIyMGInLAorICAgICduaXM7JzogJ1x1MjJmYycsCisgICAgJ25pc2Q7JzogJ1x1MjJmYScsCisgICAgJ25pdjsnOiAnXHUyMjBiJywKKyAgICAnTkpjeTsnOiAnXHUwNDBhJywKKyAgICAnbmpjeTsnOiAnXHUwNDVhJywKKyAgICAnbmxBcnI7JzogJ1x1MjFjZCcsCisgICAgJ25sYXJyOyc6ICdcdTIxOWEnLAorICAgICdubGRyOyc6ICdcdTIwMjUnLAorICAgICdubEU7JzogJ1x1MjI2Nlx1MDMzOCcsCisgICAgJ25sZTsnOiAnXHUyMjcwJywKKyAgICAnbkxlZnRhcnJvdzsnOiAnXHUyMWNkJywKKyAgICAnbmxlZnRhcnJvdzsnOiAnXHUyMTlhJywKKyAgICAnbkxlZnRyaWdodGFycm93Oyc6ICdcdTIxY2UnLAorICAgICdubGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjFhZScsCisgICAgJ25sZXE7JzogJ1x1MjI3MCcsCisgICAgJ25sZXFxOyc6ICdcdTIyNjZcdTAzMzgnLAorICAgICdubGVxc2xhbnQ7JzogJ1x1MmE3ZFx1MDMzOCcsCisgICAgJ25sZXM7JzogJ1x1MmE3ZFx1MDMzOCcsCisgICAgJ25sZXNzOyc6ICdcdTIyNmUnLAorICAgICduTGw7JzogJ1x1MjJkOFx1MDMzOCcsCisgICAgJ25sc2ltOyc6ICdcdTIyNzQnLAorICAgICduTHQ7JzogJ1x1MjI2YVx1MjBkMicsCisgICAgJ25sdDsnOiAnXHUyMjZlJywKKyAgICAnbmx0cmk7JzogJ1x1MjJlYScsCisgICAgJ25sdHJpZTsnOiAnXHUyMmVjJywKKyAgICAnbkx0djsnOiAnXHUyMjZhXHUwMzM4JywKKyAgICAnbm1pZDsnOiAnXHUyMjI0JywKKyAgICAnTm9CcmVhazsnOiAnXHUyMDYwJywKKyAgICAnTm9uQnJlYWtpbmdTcGFjZTsnOiAnXHhhMCcsCisgICAgJ05vcGY7JzogJ1x1MjExNScsCisgICAgJ25vcGY7JzogJ1xVMDAwMWQ1NWYnLAorICAgICdOb3Q7JzogJ1x1MmFlYycsCisgICAgJ25vdDsnOiAnXHhhYycsCisgICAgJ25vdCc6ICdceGFjJywKKyAgICAnTm90Q29uZ3J1ZW50Oyc6ICdcdTIyNjInLAorICAgICdOb3RDdXBDYXA7JzogJ1x1MjI2ZCcsCisgICAgJ05vdERvdWJsZVZlcnRpY2FsQmFyOyc6ICdcdTIyMjYnLAorICAgICdOb3RFbGVtZW50Oyc6ICdcdTIyMDknLAorICAgICdOb3RFcXVhbDsnOiAnXHUyMjYwJywKKyAgICAnTm90RXF1YWxUaWxkZTsnOiAnXHUyMjQyXHUwMzM4JywKKyAgICAnTm90RXhpc3RzOyc6ICdcdTIyMDQnLAorICAgICdOb3RHcmVhdGVyOyc6ICdcdTIyNmYnLAorICAgICdOb3RHcmVhdGVyRXF1YWw7JzogJ1x1MjI3MScsCisgICAgJ05vdEdyZWF0ZXJGdWxsRXF1YWw7JzogJ1x1MjI2N1x1MDMzOCcsCisgICAgJ05vdEdyZWF0ZXJHcmVhdGVyOyc6ICdcdTIyNmJcdTAzMzgnLAorICAgICdOb3RHcmVhdGVyTGVzczsnOiAnXHUyMjc5JywKKyAgICAnTm90R3JlYXRlclNsYW50RXF1YWw7JzogJ1x1MmE3ZVx1MDMzOCcsCisgICAgJ05vdEdyZWF0ZXJUaWxkZTsnOiAnXHUyMjc1JywKKyAgICAnTm90SHVtcERvd25IdW1wOyc6ICdcdTIyNGVcdTAzMzgnLAorICAgICdOb3RIdW1wRXF1YWw7JzogJ1x1MjI0Zlx1MDMzOCcsCisgICAgJ25vdGluOyc6ICdcdTIyMDknLAorICAgICdub3RpbmRvdDsnOiAnXHUyMmY1XHUwMzM4JywKKyAgICAnbm90aW5FOyc6ICdcdTIyZjlcdTAzMzgnLAorICAgICdub3RpbnZhOyc6ICdcdTIyMDknLAorICAgICdub3RpbnZiOyc6ICdcdTIyZjcnLAorICAgICdub3RpbnZjOyc6ICdcdTIyZjYnLAorICAgICdOb3RMZWZ0VHJpYW5nbGU7JzogJ1x1MjJlYScsCisgICAgJ05vdExlZnRUcmlhbmdsZUJhcjsnOiAnXHUyOWNmXHUwMzM4JywKKyAgICAnTm90TGVmdFRyaWFuZ2xlRXF1YWw7JzogJ1x1MjJlYycsCisgICAgJ05vdExlc3M7JzogJ1x1MjI2ZScsCisgICAgJ05vdExlc3NFcXVhbDsnOiAnXHUyMjcwJywKKyAgICAnTm90TGVzc0dyZWF0ZXI7JzogJ1x1MjI3OCcsCisgICAgJ05vdExlc3NMZXNzOyc6ICdcdTIyNmFcdTAzMzgnLAorICAgICdOb3RMZXNzU2xhbnRFcXVhbDsnOiAnXHUyYTdkXHUwMzM4JywKKyAgICAnTm90TGVzc1RpbGRlOyc6ICdcdTIyNzQnLAorICAgICdOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjsnOiAnXHUyYWEyXHUwMzM4JywKKyAgICAnTm90TmVzdGVkTGVzc0xlc3M7JzogJ1x1MmFhMVx1MDMzOCcsCisgICAgJ25vdG5pOyc6ICdcdTIyMGMnLAorICAgICdub3RuaXZhOyc6ICdcdTIyMGMnLAorICAgICdub3RuaXZiOyc6ICdcdTIyZmUnLAorICAgICdub3RuaXZjOyc6ICdcdTIyZmQnLAorICAgICdOb3RQcmVjZWRlczsnOiAnXHUyMjgwJywKKyAgICAnTm90UHJlY2VkZXNFcXVhbDsnOiAnXHUyYWFmXHUwMzM4JywKKyAgICAnTm90UHJlY2VkZXNTbGFudEVxdWFsOyc6ICdcdTIyZTAnLAorICAgICdOb3RSZXZlcnNlRWxlbWVudDsnOiAnXHUyMjBjJywKKyAgICAnTm90UmlnaHRUcmlhbmdsZTsnOiAnXHUyMmViJywKKyAgICAnTm90UmlnaHRUcmlhbmdsZUJhcjsnOiAnXHUyOWQwXHUwMzM4JywKKyAgICAnTm90UmlnaHRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyZWQnLAorICAgICdOb3RTcXVhcmVTdWJzZXQ7JzogJ1x1MjI4Zlx1MDMzOCcsCisgICAgJ05vdFNxdWFyZVN1YnNldEVxdWFsOyc6ICdcdTIyZTInLAorICAgICdOb3RTcXVhcmVTdXBlcnNldDsnOiAnXHUyMjkwXHUwMzM4JywKKyAgICAnTm90U3F1YXJlU3VwZXJzZXRFcXVhbDsnOiAnXHUyMmUzJywKKyAgICAnTm90U3Vic2V0Oyc6ICdcdTIyODJcdTIwZDInLAorICAgICdOb3RTdWJzZXRFcXVhbDsnOiAnXHUyMjg4JywKKyAgICAnTm90U3VjY2VlZHM7JzogJ1x1MjI4MScsCisgICAgJ05vdFN1Y2NlZWRzRXF1YWw7JzogJ1x1MmFiMFx1MDMzOCcsCisgICAgJ05vdFN1Y2NlZWRzU2xhbnRFcXVhbDsnOiAnXHUyMmUxJywKKyAgICAnTm90U3VjY2VlZHNUaWxkZTsnOiAnXHUyMjdmXHUwMzM4JywKKyAgICAnTm90U3VwZXJzZXQ7JzogJ1x1MjI4M1x1MjBkMicsCisgICAgJ05vdFN1cGVyc2V0RXF1YWw7JzogJ1x1MjI4OScsCisgICAgJ05vdFRpbGRlOyc6ICdcdTIyNDEnLAorICAgICdOb3RUaWxkZUVxdWFsOyc6ICdcdTIyNDQnLAorICAgICdOb3RUaWxkZUZ1bGxFcXVhbDsnOiAnXHUyMjQ3JywKKyAgICAnTm90VGlsZGVUaWxkZTsnOiAnXHUyMjQ5JywKKyAgICAnTm90VmVydGljYWxCYXI7JzogJ1x1MjIyNCcsCisgICAgJ25wYXI7JzogJ1x1MjIyNicsCisgICAgJ25wYXJhbGxlbDsnOiAnXHUyMjI2JywKKyAgICAnbnBhcnNsOyc6ICdcdTJhZmRcdTIwZTUnLAorICAgICducGFydDsnOiAnXHUyMjAyXHUwMzM4JywKKyAgICAnbnBvbGludDsnOiAnXHUyYTE0JywKKyAgICAnbnByOyc6ICdcdTIyODAnLAorICAgICducHJjdWU7JzogJ1x1MjJlMCcsCisgICAgJ25wcmU7JzogJ1x1MmFhZlx1MDMzOCcsCisgICAgJ25wcmVjOyc6ICdcdTIyODAnLAorICAgICducHJlY2VxOyc6ICdcdTJhYWZcdTAzMzgnLAorICAgICduckFycjsnOiAnXHUyMWNmJywKKyAgICAnbnJhcnI7JzogJ1x1MjE5YicsCisgICAgJ25yYXJyYzsnOiAnXHUyOTMzXHUwMzM4JywKKyAgICAnbnJhcnJ3Oyc6ICdcdTIxOWRcdTAzMzgnLAorICAgICduUmlnaHRhcnJvdzsnOiAnXHUyMWNmJywKKyAgICAnbnJpZ2h0YXJyb3c7JzogJ1x1MjE5YicsCisgICAgJ25ydHJpOyc6ICdcdTIyZWInLAorICAgICducnRyaWU7JzogJ1x1MjJlZCcsCisgICAgJ25zYzsnOiAnXHUyMjgxJywKKyAgICAnbnNjY3VlOyc6ICdcdTIyZTEnLAorICAgICduc2NlOyc6ICdcdTJhYjBcdTAzMzgnLAorICAgICdOc2NyOyc6ICdcVTAwMDFkNGE5JywKKyAgICAnbnNjcjsnOiAnXFUwMDAxZDRjMycsCisgICAgJ25zaG9ydG1pZDsnOiAnXHUyMjI0JywKKyAgICAnbnNob3J0cGFyYWxsZWw7JzogJ1x1MjIyNicsCisgICAgJ25zaW07JzogJ1x1MjI0MScsCisgICAgJ25zaW1lOyc6ICdcdTIyNDQnLAorICAgICduc2ltZXE7JzogJ1x1MjI0NCcsCisgICAgJ25zbWlkOyc6ICdcdTIyMjQnLAorICAgICduc3BhcjsnOiAnXHUyMjI2JywKKyAgICAnbnNxc3ViZTsnOiAnXHUyMmUyJywKKyAgICAnbnNxc3VwZTsnOiAnXHUyMmUzJywKKyAgICAnbnN1YjsnOiAnXHUyMjg0JywKKyAgICAnbnN1YkU7JzogJ1x1MmFjNVx1MDMzOCcsCisgICAgJ25zdWJlOyc6ICdcdTIyODgnLAorICAgICduc3Vic2V0Oyc6ICdcdTIyODJcdTIwZDInLAorICAgICduc3Vic2V0ZXE7JzogJ1x1MjI4OCcsCisgICAgJ25zdWJzZXRlcXE7JzogJ1x1MmFjNVx1MDMzOCcsCisgICAgJ25zdWNjOyc6ICdcdTIyODEnLAorICAgICduc3VjY2VxOyc6ICdcdTJhYjBcdTAzMzgnLAorICAgICduc3VwOyc6ICdcdTIyODUnLAorICAgICduc3VwRTsnOiAnXHUyYWM2XHUwMzM4JywKKyAgICAnbnN1cGU7JzogJ1x1MjI4OScsCisgICAgJ25zdXBzZXQ7JzogJ1x1MjI4M1x1MjBkMicsCisgICAgJ25zdXBzZXRlcTsnOiAnXHUyMjg5JywKKyAgICAnbnN1cHNldGVxcTsnOiAnXHUyYWM2XHUwMzM4JywKKyAgICAnbnRnbDsnOiAnXHUyMjc5JywKKyAgICAnTnRpbGRlOyc6ICdceGQxJywKKyAgICAnTnRpbGRlJzogJ1x4ZDEnLAorICAgICdudGlsZGU7JzogJ1x4ZjEnLAorICAgICdudGlsZGUnOiAnXHhmMScsCisgICAgJ250bGc7JzogJ1x1MjI3OCcsCisgICAgJ250cmlhbmdsZWxlZnQ7JzogJ1x1MjJlYScsCisgICAgJ250cmlhbmdsZWxlZnRlcTsnOiAnXHUyMmVjJywKKyAgICAnbnRyaWFuZ2xlcmlnaHQ7JzogJ1x1MjJlYicsCisgICAgJ250cmlhbmdsZXJpZ2h0ZXE7JzogJ1x1MjJlZCcsCisgICAgJ051Oyc6ICdcdTAzOWQnLAorICAgICdudTsnOiAnXHUwM2JkJywKKyAgICAnbnVtOyc6ICcjJywKKyAgICAnbnVtZXJvOyc6ICdcdTIxMTYnLAorICAgICdudW1zcDsnOiAnXHUyMDA3JywKKyAgICAnbnZhcDsnOiAnXHUyMjRkXHUyMGQyJywKKyAgICAnblZEYXNoOyc6ICdcdTIyYWYnLAorICAgICduVmRhc2g7JzogJ1x1MjJhZScsCisgICAgJ252RGFzaDsnOiAnXHUyMmFkJywKKyAgICAnbnZkYXNoOyc6ICdcdTIyYWMnLAorICAgICdudmdlOyc6ICdcdTIyNjVcdTIwZDInLAorICAgICdudmd0Oyc6ICc+XHUyMGQyJywKKyAgICAnbnZIYXJyOyc6ICdcdTI5MDQnLAorICAgICdudmluZmluOyc6ICdcdTI5ZGUnLAorICAgICdudmxBcnI7JzogJ1x1MjkwMicsCisgICAgJ252bGU7JzogJ1x1MjI2NFx1MjBkMicsCisgICAgJ252bHQ7JzogJzxcdTIwZDInLAorICAgICdudmx0cmllOyc6ICdcdTIyYjRcdTIwZDInLAorICAgICdudnJBcnI7JzogJ1x1MjkwMycsCisgICAgJ252cnRyaWU7JzogJ1x1MjJiNVx1MjBkMicsCisgICAgJ252c2ltOyc6ICdcdTIyM2NcdTIwZDInLAorICAgICdud2FyaGs7JzogJ1x1MjkyMycsCisgICAgJ253QXJyOyc6ICdcdTIxZDYnLAorICAgICdud2FycjsnOiAnXHUyMTk2JywKKyAgICAnbndhcnJvdzsnOiAnXHUyMTk2JywKKyAgICAnbnduZWFyOyc6ICdcdTI5MjcnLAorICAgICdPYWN1dGU7JzogJ1x4ZDMnLAorICAgICdPYWN1dGUnOiAnXHhkMycsCisgICAgJ29hY3V0ZTsnOiAnXHhmMycsCisgICAgJ29hY3V0ZSc6ICdceGYzJywKKyAgICAnb2FzdDsnOiAnXHUyMjliJywKKyAgICAnb2NpcjsnOiAnXHUyMjlhJywKKyAgICAnT2NpcmM7JzogJ1x4ZDQnLAorICAgICdPY2lyYyc6ICdceGQ0JywKKyAgICAnb2NpcmM7JzogJ1x4ZjQnLAorICAgICdvY2lyYyc6ICdceGY0JywKKyAgICAnT2N5Oyc6ICdcdTA0MWUnLAorICAgICdvY3k7JzogJ1x1MDQzZScsCisgICAgJ29kYXNoOyc6ICdcdTIyOWQnLAorICAgICdPZGJsYWM7JzogJ1x1MDE1MCcsCisgICAgJ29kYmxhYzsnOiAnXHUwMTUxJywKKyAgICAnb2RpdjsnOiAnXHUyYTM4JywKKyAgICAnb2RvdDsnOiAnXHUyMjk5JywKKyAgICAnb2Rzb2xkOyc6ICdcdTI5YmMnLAorICAgICdPRWxpZzsnOiAnXHUwMTUyJywKKyAgICAnb2VsaWc7JzogJ1x1MDE1MycsCisgICAgJ29mY2lyOyc6ICdcdTI5YmYnLAorICAgICdPZnI7JzogJ1xVMDAwMWQ1MTInLAorICAgICdvZnI7JzogJ1xVMDAwMWQ1MmMnLAorICAgICdvZ29uOyc6ICdcdTAyZGInLAorICAgICdPZ3JhdmU7JzogJ1x4ZDInLAorICAgICdPZ3JhdmUnOiAnXHhkMicsCisgICAgJ29ncmF2ZTsnOiAnXHhmMicsCisgICAgJ29ncmF2ZSc6ICdceGYyJywKKyAgICAnb2d0Oyc6ICdcdTI5YzEnLAorICAgICdvaGJhcjsnOiAnXHUyOWI1JywKKyAgICAnb2htOyc6ICdcdTAzYTknLAorICAgICdvaW50Oyc6ICdcdTIyMmUnLAorICAgICdvbGFycjsnOiAnXHUyMWJhJywKKyAgICAnb2xjaXI7JzogJ1x1MjliZScsCisgICAgJ29sY3Jvc3M7JzogJ1x1MjliYicsCisgICAgJ29saW5lOyc6ICdcdTIwM2UnLAorICAgICdvbHQ7JzogJ1x1MjljMCcsCisgICAgJ09tYWNyOyc6ICdcdTAxNGMnLAorICAgICdvbWFjcjsnOiAnXHUwMTRkJywKKyAgICAnT21lZ2E7JzogJ1x1MDNhOScsCisgICAgJ29tZWdhOyc6ICdcdTAzYzknLAorICAgICdPbWljcm9uOyc6ICdcdTAzOWYnLAorICAgICdvbWljcm9uOyc6ICdcdTAzYmYnLAorICAgICdvbWlkOyc6ICdcdTI5YjYnLAorICAgICdvbWludXM7JzogJ1x1MjI5NicsCisgICAgJ09vcGY7JzogJ1xVMDAwMWQ1NDYnLAorICAgICdvb3BmOyc6ICdcVTAwMDFkNTYwJywKKyAgICAnb3BhcjsnOiAnXHUyOWI3JywKKyAgICAnT3BlbkN1cmx5RG91YmxlUXVvdGU7JzogJ1x1MjAxYycsCisgICAgJ09wZW5DdXJseVF1b3RlOyc6ICdcdTIwMTgnLAorICAgICdvcGVycDsnOiAnXHUyOWI5JywKKyAgICAnb3BsdXM7JzogJ1x1MjI5NScsCisgICAgJ09yOyc6ICdcdTJhNTQnLAorICAgICdvcjsnOiAnXHUyMjI4JywKKyAgICAnb3JhcnI7JzogJ1x1MjFiYicsCisgICAgJ29yZDsnOiAnXHUyYTVkJywKKyAgICAnb3JkZXI7JzogJ1x1MjEzNCcsCisgICAgJ29yZGVyb2Y7JzogJ1x1MjEzNCcsCisgICAgJ29yZGY7JzogJ1x4YWEnLAorICAgICdvcmRmJzogJ1x4YWEnLAorICAgICdvcmRtOyc6ICdceGJhJywKKyAgICAnb3JkbSc6ICdceGJhJywKKyAgICAnb3JpZ29mOyc6ICdcdTIyYjYnLAorICAgICdvcm9yOyc6ICdcdTJhNTYnLAorICAgICdvcnNsb3BlOyc6ICdcdTJhNTcnLAorICAgICdvcnY7JzogJ1x1MmE1YicsCisgICAgJ29TOyc6ICdcdTI0YzgnLAorICAgICdPc2NyOyc6ICdcVTAwMDFkNGFhJywKKyAgICAnb3NjcjsnOiAnXHUyMTM0JywKKyAgICAnT3NsYXNoOyc6ICdceGQ4JywKKyAgICAnT3NsYXNoJzogJ1x4ZDgnLAorICAgICdvc2xhc2g7JzogJ1x4ZjgnLAorICAgICdvc2xhc2gnOiAnXHhmOCcsCisgICAgJ29zb2w7JzogJ1x1MjI5OCcsCisgICAgJ090aWxkZTsnOiAnXHhkNScsCisgICAgJ090aWxkZSc6ICdceGQ1JywKKyAgICAnb3RpbGRlOyc6ICdceGY1JywKKyAgICAnb3RpbGRlJzogJ1x4ZjUnLAorICAgICdPdGltZXM7JzogJ1x1MmEzNycsCisgICAgJ290aW1lczsnOiAnXHUyMjk3JywKKyAgICAnb3RpbWVzYXM7JzogJ1x1MmEzNicsCisgICAgJ091bWw7JzogJ1x4ZDYnLAorICAgICdPdW1sJzogJ1x4ZDYnLAorICAgICdvdW1sOyc6ICdceGY2JywKKyAgICAnb3VtbCc6ICdceGY2JywKKyAgICAnb3ZiYXI7JzogJ1x1MjMzZCcsCisgICAgJ092ZXJCYXI7JzogJ1x1MjAzZScsCisgICAgJ092ZXJCcmFjZTsnOiAnXHUyM2RlJywKKyAgICAnT3ZlckJyYWNrZXQ7JzogJ1x1MjNiNCcsCisgICAgJ092ZXJQYXJlbnRoZXNpczsnOiAnXHUyM2RjJywKKyAgICAncGFyOyc6ICdcdTIyMjUnLAorICAgICdwYXJhOyc6ICdceGI2JywKKyAgICAncGFyYSc6ICdceGI2JywKKyAgICAncGFyYWxsZWw7JzogJ1x1MjIyNScsCisgICAgJ3BhcnNpbTsnOiAnXHUyYWYzJywKKyAgICAncGFyc2w7JzogJ1x1MmFmZCcsCisgICAgJ3BhcnQ7JzogJ1x1MjIwMicsCisgICAgJ1BhcnRpYWxEOyc6ICdcdTIyMDInLAorICAgICdQY3k7JzogJ1x1MDQxZicsCisgICAgJ3BjeTsnOiAnXHUwNDNmJywKKyAgICAncGVyY250Oyc6ICclJywKKyAgICAncGVyaW9kOyc6ICcuJywKKyAgICAncGVybWlsOyc6ICdcdTIwMzAnLAorICAgICdwZXJwOyc6ICdcdTIyYTUnLAorICAgICdwZXJ0ZW5rOyc6ICdcdTIwMzEnLAorICAgICdQZnI7JzogJ1xVMDAwMWQ1MTMnLAorICAgICdwZnI7JzogJ1xVMDAwMWQ1MmQnLAorICAgICdQaGk7JzogJ1x1MDNhNicsCisgICAgJ3BoaTsnOiAnXHUwM2M2JywKKyAgICAncGhpdjsnOiAnXHUwM2Q1JywKKyAgICAncGhtbWF0Oyc6ICdcdTIxMzMnLAorICAgICdwaG9uZTsnOiAnXHUyNjBlJywKKyAgICAnUGk7JzogJ1x1MDNhMCcsCisgICAgJ3BpOyc6ICdcdTAzYzAnLAorICAgICdwaXRjaGZvcms7JzogJ1x1MjJkNCcsCisgICAgJ3BpdjsnOiAnXHUwM2Q2JywKKyAgICAncGxhbmNrOyc6ICdcdTIxMGYnLAorICAgICdwbGFuY2toOyc6ICdcdTIxMGUnLAorICAgICdwbGFua3Y7JzogJ1x1MjEwZicsCisgICAgJ3BsdXM7JzogJysnLAorICAgICdwbHVzYWNpcjsnOiAnXHUyYTIzJywKKyAgICAncGx1c2I7JzogJ1x1MjI5ZScsCisgICAgJ3BsdXNjaXI7JzogJ1x1MmEyMicsCisgICAgJ3BsdXNkbzsnOiAnXHUyMjE0JywKKyAgICAncGx1c2R1Oyc6ICdcdTJhMjUnLAorICAgICdwbHVzZTsnOiAnXHUyYTcyJywKKyAgICAnUGx1c01pbnVzOyc6ICdceGIxJywKKyAgICAncGx1c21uOyc6ICdceGIxJywKKyAgICAncGx1c21uJzogJ1x4YjEnLAorICAgICdwbHVzc2ltOyc6ICdcdTJhMjYnLAorICAgICdwbHVzdHdvOyc6ICdcdTJhMjcnLAorICAgICdwbTsnOiAnXHhiMScsCisgICAgJ1BvaW5jYXJlcGxhbmU7JzogJ1x1MjEwYycsCisgICAgJ3BvaW50aW50Oyc6ICdcdTJhMTUnLAorICAgICdQb3BmOyc6ICdcdTIxMTknLAorICAgICdwb3BmOyc6ICdcVTAwMDFkNTYxJywKKyAgICAncG91bmQ7JzogJ1x4YTMnLAorICAgICdwb3VuZCc6ICdceGEzJywKKyAgICAnUHI7JzogJ1x1MmFiYicsCisgICAgJ3ByOyc6ICdcdTIyN2EnLAorICAgICdwcmFwOyc6ICdcdTJhYjcnLAorICAgICdwcmN1ZTsnOiAnXHUyMjdjJywKKyAgICAncHJFOyc6ICdcdTJhYjMnLAorICAgICdwcmU7JzogJ1x1MmFhZicsCisgICAgJ3ByZWM7JzogJ1x1MjI3YScsCisgICAgJ3ByZWNhcHByb3g7JzogJ1x1MmFiNycsCisgICAgJ3ByZWNjdXJseWVxOyc6ICdcdTIyN2MnLAorICAgICdQcmVjZWRlczsnOiAnXHUyMjdhJywKKyAgICAnUHJlY2VkZXNFcXVhbDsnOiAnXHUyYWFmJywKKyAgICAnUHJlY2VkZXNTbGFudEVxdWFsOyc6ICdcdTIyN2MnLAorICAgICdQcmVjZWRlc1RpbGRlOyc6ICdcdTIyN2UnLAorICAgICdwcmVjZXE7JzogJ1x1MmFhZicsCisgICAgJ3ByZWNuYXBwcm94Oyc6ICdcdTJhYjknLAorICAgICdwcmVjbmVxcTsnOiAnXHUyYWI1JywKKyAgICAncHJlY25zaW07JzogJ1x1MjJlOCcsCisgICAgJ3ByZWNzaW07JzogJ1x1MjI3ZScsCisgICAgJ1ByaW1lOyc6ICdcdTIwMzMnLAorICAgICdwcmltZTsnOiAnXHUyMDMyJywKKyAgICAncHJpbWVzOyc6ICdcdTIxMTknLAorICAgICdwcm5hcDsnOiAnXHUyYWI5JywKKyAgICAncHJuRTsnOiAnXHUyYWI1JywKKyAgICAncHJuc2ltOyc6ICdcdTIyZTgnLAorICAgICdwcm9kOyc6ICdcdTIyMGYnLAorICAgICdQcm9kdWN0Oyc6ICdcdTIyMGYnLAorICAgICdwcm9mYWxhcjsnOiAnXHUyMzJlJywKKyAgICAncHJvZmxpbmU7JzogJ1x1MjMxMicsCisgICAgJ3Byb2ZzdXJmOyc6ICdcdTIzMTMnLAorICAgICdwcm9wOyc6ICdcdTIyMWQnLAorICAgICdQcm9wb3J0aW9uOyc6ICdcdTIyMzcnLAorICAgICdQcm9wb3J0aW9uYWw7JzogJ1x1MjIxZCcsCisgICAgJ3Byb3B0bzsnOiAnXHUyMjFkJywKKyAgICAncHJzaW07JzogJ1x1MjI3ZScsCisgICAgJ3BydXJlbDsnOiAnXHUyMmIwJywKKyAgICAnUHNjcjsnOiAnXFUwMDAxZDRhYicsCisgICAgJ3BzY3I7JzogJ1xVMDAwMWQ0YzUnLAorICAgICdQc2k7JzogJ1x1MDNhOCcsCisgICAgJ3BzaTsnOiAnXHUwM2M4JywKKyAgICAncHVuY3NwOyc6ICdcdTIwMDgnLAorICAgICdRZnI7JzogJ1xVMDAwMWQ1MTQnLAorICAgICdxZnI7JzogJ1xVMDAwMWQ1MmUnLAorICAgICdxaW50Oyc6ICdcdTJhMGMnLAorICAgICdRb3BmOyc6ICdcdTIxMWEnLAorICAgICdxb3BmOyc6ICdcVTAwMDFkNTYyJywKKyAgICAncXByaW1lOyc6ICdcdTIwNTcnLAorICAgICdRc2NyOyc6ICdcVTAwMDFkNGFjJywKKyAgICAncXNjcjsnOiAnXFUwMDAxZDRjNicsCisgICAgJ3F1YXRlcm5pb25zOyc6ICdcdTIxMGQnLAorICAgICdxdWF0aW50Oyc6ICdcdTJhMTYnLAorICAgICdxdWVzdDsnOiAnPycsCisgICAgJ3F1ZXN0ZXE7JzogJ1x1MjI1ZicsCisgICAgJ1FVT1Q7JzogJyInLAorICAgICdRVU9UJzogJyInLAorICAgICdxdW90Oyc6ICciJywKKyAgICAncXVvdCc6ICciJywKKyAgICAnckFhcnI7JzogJ1x1MjFkYicsCisgICAgJ3JhY2U7JzogJ1x1MjIzZFx1MDMzMScsCisgICAgJ1JhY3V0ZTsnOiAnXHUwMTU0JywKKyAgICAncmFjdXRlOyc6ICdcdTAxNTUnLAorICAgICdyYWRpYzsnOiAnXHUyMjFhJywKKyAgICAncmFlbXB0eXY7JzogJ1x1MjliMycsCisgICAgJ1Jhbmc7JzogJ1x1MjdlYicsCisgICAgJ3Jhbmc7JzogJ1x1MjMyYScsCisgICAgJ3JhbmdkOyc6ICdcdTI5OTInLAorICAgICdyYW5nZTsnOiAnXHUyOWE1JywKKyAgICAncmFuZ2xlOyc6ICdcdTIzMmEnLAorICAgICdyYXF1bzsnOiAnXHhiYicsCisgICAgJ3JhcXVvJzogJ1x4YmInLAorICAgICdSYXJyOyc6ICdcdTIxYTAnLAorICAgICdyQXJyOyc6ICdcdTIxZDInLAorICAgICdyYXJyOyc6ICdcdTIxOTInLAorICAgICdyYXJyYXA7JzogJ1x1Mjk3NScsCisgICAgJ3JhcnJiOyc6ICdcdTIxZTUnLAorICAgICdyYXJyYmZzOyc6ICdcdTI5MjAnLAorICAgICdyYXJyYzsnOiAnXHUyOTMzJywKKyAgICAncmFycmZzOyc6ICdcdTI5MWUnLAorICAgICdyYXJyaGs7JzogJ1x1MjFhYScsCisgICAgJ3JhcnJscDsnOiAnXHUyMWFjJywKKyAgICAncmFycnBsOyc6ICdcdTI5NDUnLAorICAgICdyYXJyc2ltOyc6ICdcdTI5NzQnLAorICAgICdSYXJydGw7JzogJ1x1MjkxNicsCisgICAgJ3JhcnJ0bDsnOiAnXHUyMWEzJywKKyAgICAncmFycnc7JzogJ1x1MjE5ZCcsCisgICAgJ3JBdGFpbDsnOiAnXHUyOTFjJywKKyAgICAncmF0YWlsOyc6ICdcdTI5MWEnLAorICAgICdyYXRpbzsnOiAnXHUyMjM2JywKKyAgICAncmF0aW9uYWxzOyc6ICdcdTIxMWEnLAorICAgICdSQmFycjsnOiAnXHUyOTEwJywKKyAgICAnckJhcnI7JzogJ1x1MjkwZicsCisgICAgJ3JiYXJyOyc6ICdcdTI5MGQnLAorICAgICdyYmJyazsnOiAnXHUyNzczJywKKyAgICAncmJyYWNlOyc6ICd9JywKKyAgICAncmJyYWNrOyc6ICddJywKKyAgICAncmJya2U7JzogJ1x1Mjk4YycsCisgICAgJ3JicmtzbGQ7JzogJ1x1Mjk4ZScsCisgICAgJ3JicmtzbHU7JzogJ1x1Mjk5MCcsCisgICAgJ1JjYXJvbjsnOiAnXHUwMTU4JywKKyAgICAncmNhcm9uOyc6ICdcdTAxNTknLAorICAgICdSY2VkaWw7JzogJ1x1MDE1NicsCisgICAgJ3JjZWRpbDsnOiAnXHUwMTU3JywKKyAgICAncmNlaWw7JzogJ1x1MjMwOScsCisgICAgJ3JjdWI7JzogJ30nLAorICAgICdSY3k7JzogJ1x1MDQyMCcsCisgICAgJ3JjeTsnOiAnXHUwNDQwJywKKyAgICAncmRjYTsnOiAnXHUyOTM3JywKKyAgICAncmRsZGhhcjsnOiAnXHUyOTY5JywKKyAgICAncmRxdW87JzogJ1x1MjAxZCcsCisgICAgJ3JkcXVvcjsnOiAnXHUyMDFkJywKKyAgICAncmRzaDsnOiAnXHUyMWIzJywKKyAgICAnUmU7JzogJ1x1MjExYycsCisgICAgJ3JlYWw7JzogJ1x1MjExYycsCisgICAgJ3JlYWxpbmU7JzogJ1x1MjExYicsCisgICAgJ3JlYWxwYXJ0Oyc6ICdcdTIxMWMnLAorICAgICdyZWFsczsnOiAnXHUyMTFkJywKKyAgICAncmVjdDsnOiAnXHUyNWFkJywKKyAgICAnUkVHOyc6ICdceGFlJywKKyAgICAnUkVHJzogJ1x4YWUnLAorICAgICdyZWc7JzogJ1x4YWUnLAorICAgICdyZWcnOiAnXHhhZScsCisgICAgJ1JldmVyc2VFbGVtZW50Oyc6ICdcdTIyMGInLAorICAgICdSZXZlcnNlRXF1aWxpYnJpdW07JzogJ1x1MjFjYicsCisgICAgJ1JldmVyc2VVcEVxdWlsaWJyaXVtOyc6ICdcdTI5NmYnLAorICAgICdyZmlzaHQ7JzogJ1x1Mjk3ZCcsCisgICAgJ3JmbG9vcjsnOiAnXHUyMzBiJywKKyAgICAnUmZyOyc6ICdcdTIxMWMnLAorICAgICdyZnI7JzogJ1xVMDAwMWQ1MmYnLAorICAgICdySGFyOyc6ICdcdTI5NjQnLAorICAgICdyaGFyZDsnOiAnXHUyMWMxJywKKyAgICAncmhhcnU7JzogJ1x1MjFjMCcsCisgICAgJ3JoYXJ1bDsnOiAnXHUyOTZjJywKKyAgICAnUmhvOyc6ICdcdTAzYTEnLAorICAgICdyaG87JzogJ1x1MDNjMScsCisgICAgJ3Job3Y7JzogJ1x1MDNmMScsCisgICAgJ1JpZ2h0QW5nbGVCcmFja2V0Oyc6ICdcdTIzMmEnLAorICAgICdSaWdodEFycm93Oyc6ICdcdTIxOTInLAorICAgICdSaWdodGFycm93Oyc6ICdcdTIxZDInLAorICAgICdyaWdodGFycm93Oyc6ICdcdTIxOTInLAorICAgICdSaWdodEFycm93QmFyOyc6ICdcdTIxZTUnLAorICAgICdSaWdodEFycm93TGVmdEFycm93Oyc6ICdcdTIxYzQnLAorICAgICdyaWdodGFycm93dGFpbDsnOiAnXHUyMWEzJywKKyAgICAnUmlnaHRDZWlsaW5nOyc6ICdcdTIzMDknLAorICAgICdSaWdodERvdWJsZUJyYWNrZXQ7JzogJ1x1MjdlNycsCisgICAgJ1JpZ2h0RG93blRlZVZlY3RvcjsnOiAnXHUyOTVkJywKKyAgICAnUmlnaHREb3duVmVjdG9yOyc6ICdcdTIxYzInLAorICAgICdSaWdodERvd25WZWN0b3JCYXI7JzogJ1x1Mjk1NScsCisgICAgJ1JpZ2h0Rmxvb3I7JzogJ1x1MjMwYicsCisgICAgJ3JpZ2h0aGFycG9vbmRvd247JzogJ1x1MjFjMScsCisgICAgJ3JpZ2h0aGFycG9vbnVwOyc6ICdcdTIxYzAnLAorICAgICdyaWdodGxlZnRhcnJvd3M7JzogJ1x1MjFjNCcsCisgICAgJ3JpZ2h0bGVmdGhhcnBvb25zOyc6ICdcdTIxY2MnLAorICAgICdyaWdodHJpZ2h0YXJyb3dzOyc6ICdcdTIxYzknLAorICAgICdyaWdodHNxdWlnYXJyb3c7JzogJ1x1MjE5ZCcsCisgICAgJ1JpZ2h0VGVlOyc6ICdcdTIyYTInLAorICAgICdSaWdodFRlZUFycm93Oyc6ICdcdTIxYTYnLAorICAgICdSaWdodFRlZVZlY3RvcjsnOiAnXHUyOTViJywKKyAgICAncmlnaHR0aHJlZXRpbWVzOyc6ICdcdTIyY2MnLAorICAgICdSaWdodFRyaWFuZ2xlOyc6ICdcdTIyYjMnLAorICAgICdSaWdodFRyaWFuZ2xlQmFyOyc6ICdcdTI5ZDAnLAorICAgICdSaWdodFRyaWFuZ2xlRXF1YWw7JzogJ1x1MjJiNScsCisgICAgJ1JpZ2h0VXBEb3duVmVjdG9yOyc6ICdcdTI5NGYnLAorICAgICdSaWdodFVwVGVlVmVjdG9yOyc6ICdcdTI5NWMnLAorICAgICdSaWdodFVwVmVjdG9yOyc6ICdcdTIxYmUnLAorICAgICdSaWdodFVwVmVjdG9yQmFyOyc6ICdcdTI5NTQnLAorICAgICdSaWdodFZlY3RvcjsnOiAnXHUyMWMwJywKKyAgICAnUmlnaHRWZWN0b3JCYXI7JzogJ1x1Mjk1MycsCisgICAgJ3Jpbmc7JzogJ1x1MDJkYScsCisgICAgJ3Jpc2luZ2RvdHNlcTsnOiAnXHUyMjUzJywKKyAgICAncmxhcnI7JzogJ1x1MjFjNCcsCisgICAgJ3JsaGFyOyc6ICdcdTIxY2MnLAorICAgICdybG07JzogJ1x1MjAwZicsCisgICAgJ3Jtb3VzdDsnOiAnXHUyM2IxJywKKyAgICAncm1vdXN0YWNoZTsnOiAnXHUyM2IxJywKKyAgICAncm5taWQ7JzogJ1x1MmFlZScsCisgICAgJ3JvYW5nOyc6ICdcdTI3ZWQnLAorICAgICdyb2FycjsnOiAnXHUyMWZlJywKKyAgICAncm9icms7JzogJ1x1MjdlNycsCisgICAgJ3JvcGFyOyc6ICdcdTI5ODYnLAorICAgICdSb3BmOyc6ICdcdTIxMWQnLAorICAgICdyb3BmOyc6ICdcVTAwMDFkNTYzJywKKyAgICAncm9wbHVzOyc6ICdcdTJhMmUnLAorICAgICdyb3RpbWVzOyc6ICdcdTJhMzUnLAorICAgICdSb3VuZEltcGxpZXM7JzogJ1x1Mjk3MCcsCisgICAgJ3JwYXI7JzogJyknLAorICAgICdycGFyZ3Q7JzogJ1x1Mjk5NCcsCisgICAgJ3JwcG9saW50Oyc6ICdcdTJhMTInLAorICAgICdycmFycjsnOiAnXHUyMWM5JywKKyAgICAnUnJpZ2h0YXJyb3c7JzogJ1x1MjFkYicsCisgICAgJ3JzYXF1bzsnOiAnXHUyMDNhJywKKyAgICAnUnNjcjsnOiAnXHUyMTFiJywKKyAgICAncnNjcjsnOiAnXFUwMDAxZDRjNycsCisgICAgJ1JzaDsnOiAnXHUyMWIxJywKKyAgICAncnNoOyc6ICdcdTIxYjEnLAorICAgICdyc3FiOyc6ICddJywKKyAgICAncnNxdW87JzogJ1x1MjAxOScsCisgICAgJ3JzcXVvcjsnOiAnXHUyMDE5JywKKyAgICAncnRocmVlOyc6ICdcdTIyY2MnLAorICAgICdydGltZXM7JzogJ1x1MjJjYScsCisgICAgJ3J0cmk7JzogJ1x1MjViOScsCisgICAgJ3J0cmllOyc6ICdcdTIyYjUnLAorICAgICdydHJpZjsnOiAnXHUyNWI4JywKKyAgICAncnRyaWx0cmk7JzogJ1x1MjljZScsCisgICAgJ1J1bGVEZWxheWVkOyc6ICdcdTI5ZjQnLAorICAgICdydWx1aGFyOyc6ICdcdTI5NjgnLAorICAgICdyeDsnOiAnXHUyMTFlJywKKyAgICAnU2FjdXRlOyc6ICdcdTAxNWEnLAorICAgICdzYWN1dGU7JzogJ1x1MDE1YicsCisgICAgJ3NicXVvOyc6ICdcdTIwMWEnLAorICAgICdTYzsnOiAnXHUyYWJjJywKKyAgICAnc2M7JzogJ1x1MjI3YicsCisgICAgJ3NjYXA7JzogJ1x1MmFiOCcsCisgICAgJ1NjYXJvbjsnOiAnXHUwMTYwJywKKyAgICAnc2Nhcm9uOyc6ICdcdTAxNjEnLAorICAgICdzY2N1ZTsnOiAnXHUyMjdkJywKKyAgICAnc2NFOyc6ICdcdTJhYjQnLAorICAgICdzY2U7JzogJ1x1MmFiMCcsCisgICAgJ1NjZWRpbDsnOiAnXHUwMTVlJywKKyAgICAnc2NlZGlsOyc6ICdcdTAxNWYnLAorICAgICdTY2lyYzsnOiAnXHUwMTVjJywKKyAgICAnc2NpcmM7JzogJ1x1MDE1ZCcsCisgICAgJ3NjbmFwOyc6ICdcdTJhYmEnLAorICAgICdzY25FOyc6ICdcdTJhYjYnLAorICAgICdzY25zaW07JzogJ1x1MjJlOScsCisgICAgJ3NjcG9saW50Oyc6ICdcdTJhMTMnLAorICAgICdzY3NpbTsnOiAnXHUyMjdmJywKKyAgICAnU2N5Oyc6ICdcdTA0MjEnLAorICAgICdzY3k7JzogJ1x1MDQ0MScsCisgICAgJ3Nkb3Q7JzogJ1x1MjJjNScsCisgICAgJ3Nkb3RiOyc6ICdcdTIyYTEnLAorICAgICdzZG90ZTsnOiAnXHUyYTY2JywKKyAgICAnc2VhcmhrOyc6ICdcdTI5MjUnLAorICAgICdzZUFycjsnOiAnXHUyMWQ4JywKKyAgICAnc2VhcnI7JzogJ1x1MjE5OCcsCisgICAgJ3NlYXJyb3c7JzogJ1x1MjE5OCcsCisgICAgJ3NlY3Q7JzogJ1x4YTcnLAorICAgICdzZWN0JzogJ1x4YTcnLAorICAgICdzZW1pOyc6ICc7JywKKyAgICAnc2Vzd2FyOyc6ICdcdTI5MjknLAorICAgICdzZXRtaW51czsnOiAnXHUyMjE2JywKKyAgICAnc2V0bW47JzogJ1x1MjIxNicsCisgICAgJ3NleHQ7JzogJ1x1MjczNicsCisgICAgJ1NmcjsnOiAnXFUwMDAxZDUxNicsCisgICAgJ3NmcjsnOiAnXFUwMDAxZDUzMCcsCisgICAgJ3Nmcm93bjsnOiAnXHUyMzIyJywKKyAgICAnc2hhcnA7JzogJ1x1MjY2ZicsCisgICAgJ1NIQ0hjeTsnOiAnXHUwNDI5JywKKyAgICAnc2hjaGN5Oyc6ICdcdTA0NDknLAorICAgICdTSGN5Oyc6ICdcdTA0MjgnLAorICAgICdzaGN5Oyc6ICdcdTA0NDgnLAorICAgICdTaG9ydERvd25BcnJvdzsnOiAnXHUyMTkzJywKKyAgICAnU2hvcnRMZWZ0QXJyb3c7JzogJ1x1MjE5MCcsCisgICAgJ3Nob3J0bWlkOyc6ICdcdTIyMjMnLAorICAgICdzaG9ydHBhcmFsbGVsOyc6ICdcdTIyMjUnLAorICAgICdTaG9ydFJpZ2h0QXJyb3c7JzogJ1x1MjE5MicsCisgICAgJ1Nob3J0VXBBcnJvdzsnOiAnXHUyMTkxJywKKyAgICAnc2h5Oyc6ICdceGFkJywKKyAgICAnc2h5JzogJ1x4YWQnLAorICAgICdTaWdtYTsnOiAnXHUwM2EzJywKKyAgICAnc2lnbWE7JzogJ1x1MDNjMycsCisgICAgJ3NpZ21hZjsnOiAnXHUwM2MyJywKKyAgICAnc2lnbWF2Oyc6ICdcdTAzYzInLAorICAgICdzaW07JzogJ1x1MjIzYycsCisgICAgJ3NpbWRvdDsnOiAnXHUyYTZhJywKKyAgICAnc2ltZTsnOiAnXHUyMjQzJywKKyAgICAnc2ltZXE7JzogJ1x1MjI0MycsCisgICAgJ3NpbWc7JzogJ1x1MmE5ZScsCisgICAgJ3NpbWdFOyc6ICdcdTJhYTAnLAorICAgICdzaW1sOyc6ICdcdTJhOWQnLAorICAgICdzaW1sRTsnOiAnXHUyYTlmJywKKyAgICAnc2ltbmU7JzogJ1x1MjI0NicsCisgICAgJ3NpbXBsdXM7JzogJ1x1MmEyNCcsCisgICAgJ3NpbXJhcnI7JzogJ1x1Mjk3MicsCisgICAgJ3NsYXJyOyc6ICdcdTIxOTAnLAorICAgICdTbWFsbENpcmNsZTsnOiAnXHUyMjE4JywKKyAgICAnc21hbGxzZXRtaW51czsnOiAnXHUyMjE2JywKKyAgICAnc21hc2hwOyc6ICdcdTJhMzMnLAorICAgICdzbWVwYXJzbDsnOiAnXHUyOWU0JywKKyAgICAnc21pZDsnOiAnXHUyMjIzJywKKyAgICAnc21pbGU7JzogJ1x1MjMyMycsCisgICAgJ3NtdDsnOiAnXHUyYWFhJywKKyAgICAnc210ZTsnOiAnXHUyYWFjJywKKyAgICAnc210ZXM7JzogJ1x1MmFhY1x1ZmUwMCcsCisgICAgJ1NPRlRjeTsnOiAnXHUwNDJjJywKKyAgICAnc29mdGN5Oyc6ICdcdTA0NGMnLAorICAgICdzb2w7JzogJy8nLAorICAgICdzb2xiOyc6ICdcdTI5YzQnLAorICAgICdzb2xiYXI7JzogJ1x1MjMzZicsCisgICAgJ1NvcGY7JzogJ1xVMDAwMWQ1NGEnLAorICAgICdzb3BmOyc6ICdcVTAwMDFkNTY0JywKKyAgICAnc3BhZGVzOyc6ICdcdTI2NjAnLAorICAgICdzcGFkZXN1aXQ7JzogJ1x1MjY2MCcsCisgICAgJ3NwYXI7JzogJ1x1MjIyNScsCisgICAgJ3NxY2FwOyc6ICdcdTIyOTMnLAorICAgICdzcWNhcHM7JzogJ1x1MjI5M1x1ZmUwMCcsCisgICAgJ3NxY3VwOyc6ICdcdTIyOTQnLAorICAgICdzcWN1cHM7JzogJ1x1MjI5NFx1ZmUwMCcsCisgICAgJ1NxcnQ7JzogJ1x1MjIxYScsCisgICAgJ3Nxc3ViOyc6ICdcdTIyOGYnLAorICAgICdzcXN1YmU7JzogJ1x1MjI5MScsCisgICAgJ3Nxc3Vic2V0Oyc6ICdcdTIyOGYnLAorICAgICdzcXN1YnNldGVxOyc6ICdcdTIyOTEnLAorICAgICdzcXN1cDsnOiAnXHUyMjkwJywKKyAgICAnc3FzdXBlOyc6ICdcdTIyOTInLAorICAgICdzcXN1cHNldDsnOiAnXHUyMjkwJywKKyAgICAnc3FzdXBzZXRlcTsnOiAnXHUyMjkyJywKKyAgICAnc3F1Oyc6ICdcdTI1YTEnLAorICAgICdTcXVhcmU7JzogJ1x1MjVhMScsCisgICAgJ3NxdWFyZTsnOiAnXHUyNWExJywKKyAgICAnU3F1YXJlSW50ZXJzZWN0aW9uOyc6ICdcdTIyOTMnLAorICAgICdTcXVhcmVTdWJzZXQ7JzogJ1x1MjI4ZicsCisgICAgJ1NxdWFyZVN1YnNldEVxdWFsOyc6ICdcdTIyOTEnLAorICAgICdTcXVhcmVTdXBlcnNldDsnOiAnXHUyMjkwJywKKyAgICAnU3F1YXJlU3VwZXJzZXRFcXVhbDsnOiAnXHUyMjkyJywKKyAgICAnU3F1YXJlVW5pb247JzogJ1x1MjI5NCcsCisgICAgJ3NxdWFyZjsnOiAnXHUyNWFhJywKKyAgICAnc3F1ZjsnOiAnXHUyNWFhJywKKyAgICAnc3JhcnI7JzogJ1x1MjE5MicsCisgICAgJ1NzY3I7JzogJ1xVMDAwMWQ0YWUnLAorICAgICdzc2NyOyc6ICdcVTAwMDFkNGM4JywKKyAgICAnc3NldG1uOyc6ICdcdTIyMTYnLAorICAgICdzc21pbGU7JzogJ1x1MjMyMycsCisgICAgJ3NzdGFyZjsnOiAnXHUyMmM2JywKKyAgICAnU3RhcjsnOiAnXHUyMmM2JywKKyAgICAnc3RhcjsnOiAnXHUyNjA2JywKKyAgICAnc3RhcmY7JzogJ1x1MjYwNScsCisgICAgJ3N0cmFpZ2h0ZXBzaWxvbjsnOiAnXHUwM2Y1JywKKyAgICAnc3RyYWlnaHRwaGk7JzogJ1x1MDNkNScsCisgICAgJ3N0cm5zOyc6ICdceGFmJywKKyAgICAnU3ViOyc6ICdcdTIyZDAnLAorICAgICdzdWI7JzogJ1x1MjI4MicsCisgICAgJ3N1YmRvdDsnOiAnXHUyYWJkJywKKyAgICAnc3ViRTsnOiAnXHUyYWM1JywKKyAgICAnc3ViZTsnOiAnXHUyMjg2JywKKyAgICAnc3ViZWRvdDsnOiAnXHUyYWMzJywKKyAgICAnc3VibXVsdDsnOiAnXHUyYWMxJywKKyAgICAnc3VibkU7JzogJ1x1MmFjYicsCisgICAgJ3N1Ym5lOyc6ICdcdTIyOGEnLAorICAgICdzdWJwbHVzOyc6ICdcdTJhYmYnLAorICAgICdzdWJyYXJyOyc6ICdcdTI5NzknLAorICAgICdTdWJzZXQ7JzogJ1x1MjJkMCcsCisgICAgJ3N1YnNldDsnOiAnXHUyMjgyJywKKyAgICAnc3Vic2V0ZXE7JzogJ1x1MjI4NicsCisgICAgJ3N1YnNldGVxcTsnOiAnXHUyYWM1JywKKyAgICAnU3Vic2V0RXF1YWw7JzogJ1x1MjI4NicsCisgICAgJ3N1YnNldG5lcTsnOiAnXHUyMjhhJywKKyAgICAnc3Vic2V0bmVxcTsnOiAnXHUyYWNiJywKKyAgICAnc3Vic2ltOyc6ICdcdTJhYzcnLAorICAgICdzdWJzdWI7JzogJ1x1MmFkNScsCisgICAgJ3N1YnN1cDsnOiAnXHUyYWQzJywKKyAgICAnc3VjYzsnOiAnXHUyMjdiJywKKyAgICAnc3VjY2FwcHJveDsnOiAnXHUyYWI4JywKKyAgICAnc3VjY2N1cmx5ZXE7JzogJ1x1MjI3ZCcsCisgICAgJ1N1Y2NlZWRzOyc6ICdcdTIyN2InLAorICAgICdTdWNjZWVkc0VxdWFsOyc6ICdcdTJhYjAnLAorICAgICdTdWNjZWVkc1NsYW50RXF1YWw7JzogJ1x1MjI3ZCcsCisgICAgJ1N1Y2NlZWRzVGlsZGU7JzogJ1x1MjI3ZicsCisgICAgJ3N1Y2NlcTsnOiAnXHUyYWIwJywKKyAgICAnc3VjY25hcHByb3g7JzogJ1x1MmFiYScsCisgICAgJ3N1Y2NuZXFxOyc6ICdcdTJhYjYnLAorICAgICdzdWNjbnNpbTsnOiAnXHUyMmU5JywKKyAgICAnc3VjY3NpbTsnOiAnXHUyMjdmJywKKyAgICAnU3VjaFRoYXQ7JzogJ1x1MjIwYicsCisgICAgJ1N1bTsnOiAnXHUyMjExJywKKyAgICAnc3VtOyc6ICdcdTIyMTEnLAorICAgICdzdW5nOyc6ICdcdTI2NmEnLAorICAgICdTdXA7JzogJ1x1MjJkMScsCisgICAgJ3N1cDsnOiAnXHUyMjgzJywKKyAgICAnc3VwMTsnOiAnXHhiOScsCisgICAgJ3N1cDEnOiAnXHhiOScsCisgICAgJ3N1cDI7JzogJ1x4YjInLAorICAgICdzdXAyJzogJ1x4YjInLAorICAgICdzdXAzOyc6ICdceGIzJywKKyAgICAnc3VwMyc6ICdceGIzJywKKyAgICAnc3VwZG90Oyc6ICdcdTJhYmUnLAorICAgICdzdXBkc3ViOyc6ICdcdTJhZDgnLAorICAgICdzdXBFOyc6ICdcdTJhYzYnLAorICAgICdzdXBlOyc6ICdcdTIyODcnLAorICAgICdzdXBlZG90Oyc6ICdcdTJhYzQnLAorICAgICdTdXBlcnNldDsnOiAnXHUyMjgzJywKKyAgICAnU3VwZXJzZXRFcXVhbDsnOiAnXHUyMjg3JywKKyAgICAnc3VwaHNvbDsnOiAnXHUyN2M5JywKKyAgICAnc3VwaHN1YjsnOiAnXHUyYWQ3JywKKyAgICAnc3VwbGFycjsnOiAnXHUyOTdiJywKKyAgICAnc3VwbXVsdDsnOiAnXHUyYWMyJywKKyAgICAnc3VwbkU7JzogJ1x1MmFjYycsCisgICAgJ3N1cG5lOyc6ICdcdTIyOGInLAorICAgICdzdXBwbHVzOyc6ICdcdTJhYzAnLAorICAgICdTdXBzZXQ7JzogJ1x1MjJkMScsCisgICAgJ3N1cHNldDsnOiAnXHUyMjgzJywKKyAgICAnc3Vwc2V0ZXE7JzogJ1x1MjI4NycsCisgICAgJ3N1cHNldGVxcTsnOiAnXHUyYWM2JywKKyAgICAnc3Vwc2V0bmVxOyc6ICdcdTIyOGInLAorICAgICdzdXBzZXRuZXFxOyc6ICdcdTJhY2MnLAorICAgICdzdXBzaW07JzogJ1x1MmFjOCcsCisgICAgJ3N1cHN1YjsnOiAnXHUyYWQ0JywKKyAgICAnc3Vwc3VwOyc6ICdcdTJhZDYnLAorICAgICdzd2FyaGs7JzogJ1x1MjkyNicsCisgICAgJ3N3QXJyOyc6ICdcdTIxZDknLAorICAgICdzd2FycjsnOiAnXHUyMTk5JywKKyAgICAnc3dhcnJvdzsnOiAnXHUyMTk5JywKKyAgICAnc3dud2FyOyc6ICdcdTI5MmEnLAorICAgICdzemxpZzsnOiAnXHhkZicsCisgICAgJ3N6bGlnJzogJ1x4ZGYnLAorICAgICdUYWI7JzogJ1x1MjQwOScsCisgICAgJ3RhcmdldDsnOiAnXHUyMzE2JywKKyAgICAnVGF1Oyc6ICdcdTAzYTQnLAorICAgICd0YXU7JzogJ1x1MDNjNCcsCisgICAgJ3Ricms7JzogJ1x1MjNiNCcsCisgICAgJ1RjYXJvbjsnOiAnXHUwMTY0JywKKyAgICAndGNhcm9uOyc6ICdcdTAxNjUnLAorICAgICdUY2VkaWw7JzogJ1x1MDE2MicsCisgICAgJ3RjZWRpbDsnOiAnXHUwMTYzJywKKyAgICAnVGN5Oyc6ICdcdTA0MjInLAorICAgICd0Y3k7JzogJ1x1MDQ0MicsCisgICAgJ3Rkb3Q7JzogJ1x1MjVjY1x1MjBkYicsCisgICAgJ3RlbHJlYzsnOiAnXHUyMzE1JywKKyAgICAnVGZyOyc6ICdcVTAwMDFkNTE3JywKKyAgICAndGZyOyc6ICdcVTAwMDFkNTMxJywKKyAgICAndGhlcmU0Oyc6ICdcdTIyMzQnLAorICAgICdUaGVyZWZvcmU7JzogJ1x1MjIzNCcsCisgICAgJ3RoZXJlZm9yZTsnOiAnXHUyMjM0JywKKyAgICAnVGhldGE7JzogJ1x1MDM5OCcsCisgICAgJ3RoZXRhOyc6ICdcdTAzYjgnLAorICAgICd0aGV0YXN5bTsnOiAnXHUwM2QxJywKKyAgICAndGhldGF2Oyc6ICdcdTAzZDEnLAorICAgICd0aGlja2FwcHJveDsnOiAnXHUyMjQ4JywKKyAgICAndGhpY2tzaW07JzogJ1x1MjIzYycsCisgICAgJ1RoaWNrU3BhY2U7JzogJ1x1MjA1Zlx1MjAwYScsCisgICAgJ3RoaW5zcDsnOiAnXHUyMDA5JywKKyAgICAnVGhpblNwYWNlOyc6ICdcdTIwMDknLAorICAgICd0aGthcDsnOiAnXHUyMjQ4JywKKyAgICAndGhrc2ltOyc6ICdcdTIyM2MnLAorICAgICdUSE9STjsnOiAnXHhkZScsCisgICAgJ1RIT1JOJzogJ1x4ZGUnLAorICAgICd0aG9ybjsnOiAnXHhmZScsCisgICAgJ3Rob3JuJzogJ1x4ZmUnLAorICAgICdUaWxkZTsnOiAnXHUyMjNjJywKKyAgICAndGlsZGU7JzogJ1x1MDJkYycsCisgICAgJ1RpbGRlRXF1YWw7JzogJ1x1MjI0MycsCisgICAgJ1RpbGRlRnVsbEVxdWFsOyc6ICdcdTIyNDUnLAorICAgICdUaWxkZVRpbGRlOyc6ICdcdTIyNDgnLAorICAgICd0aW1lczsnOiAnXHhkNycsCisgICAgJ3RpbWVzJzogJ1x4ZDcnLAorICAgICd0aW1lc2I7JzogJ1x1MjJhMCcsCisgICAgJ3RpbWVzYmFyOyc6ICdcdTJhMzEnLAorICAgICd0aW1lc2Q7JzogJ1x1MmEzMCcsCisgICAgJ3RpbnQ7JzogJ1x1MjIyZCcsCisgICAgJ3RvZWE7JzogJ1x1MjkyOCcsCisgICAgJ3RvcDsnOiAnXHUyMmE0JywKKyAgICAndG9wYm90Oyc6ICdcdTIzMzYnLAorICAgICd0b3BjaXI7JzogJ1x1MmFmMScsCisgICAgJ1RvcGY7JzogJ1xVMDAwMWQ1NGInLAorICAgICd0b3BmOyc6ICdcVTAwMDFkNTY1JywKKyAgICAndG9wZm9yazsnOiAnXHUyYWRhJywKKyAgICAndG9zYTsnOiAnXHUyOTI5JywKKyAgICAndHByaW1lOyc6ICdcdTIwMzQnLAorICAgICdUUkFERTsnOiAnXHUyMTIyJywKKyAgICAndHJhZGU7JzogJ1x1MjEyMicsCisgICAgJ3RyaWFuZ2xlOyc6ICdcdTI1YjUnLAorICAgICd0cmlhbmdsZWRvd247JzogJ1x1MjViZicsCisgICAgJ3RyaWFuZ2xlbGVmdDsnOiAnXHUyNWMzJywKKyAgICAndHJpYW5nbGVsZWZ0ZXE7JzogJ1x1MjJiNCcsCisgICAgJ3RyaWFuZ2xlcTsnOiAnXHUyMjVjJywKKyAgICAndHJpYW5nbGVyaWdodDsnOiAnXHUyNWI5JywKKyAgICAndHJpYW5nbGVyaWdodGVxOyc6ICdcdTIyYjUnLAorICAgICd0cmlkb3Q7JzogJ1x1MjVlYycsCisgICAgJ3RyaWU7JzogJ1x1MjI1YycsCisgICAgJ3RyaW1pbnVzOyc6ICdcdTJhM2EnLAorICAgICdUcmlwbGVEb3Q7JzogJ1x1MjVjY1x1MjBkYicsCisgICAgJ3RyaXBsdXM7JzogJ1x1MmEzOScsCisgICAgJ3RyaXNiOyc6ICdcdTI5Y2QnLAorICAgICd0cml0aW1lOyc6ICdcdTJhM2InLAorICAgICd0cnBleml1bTsnOiAnXHUyM2UyJywKKyAgICAnVHNjcjsnOiAnXFUwMDAxZDRhZicsCisgICAgJ3RzY3I7JzogJ1xVMDAwMWQ0YzknLAorICAgICdUU2N5Oyc6ICdcdTA0MjYnLAorICAgICd0c2N5Oyc6ICdcdTA0NDYnLAorICAgICdUU0hjeTsnOiAnXHUwNDBiJywKKyAgICAndHNoY3k7JzogJ1x1MDQ1YicsCisgICAgJ1RzdHJvazsnOiAnXHUwMTY2JywKKyAgICAndHN0cm9rOyc6ICdcdTAxNjcnLAorICAgICd0d2l4dDsnOiAnXHUyMjZjJywKKyAgICAndHdvaGVhZGxlZnRhcnJvdzsnOiAnXHUyMTllJywKKyAgICAndHdvaGVhZHJpZ2h0YXJyb3c7JzogJ1x1MjFhMCcsCisgICAgJ1VhY3V0ZTsnOiAnXHhkYScsCisgICAgJ1VhY3V0ZSc6ICdceGRhJywKKyAgICAndWFjdXRlOyc6ICdceGZhJywKKyAgICAndWFjdXRlJzogJ1x4ZmEnLAorICAgICdVYXJyOyc6ICdcdTIxOWYnLAorICAgICd1QXJyOyc6ICdcdTIxZDEnLAorICAgICd1YXJyOyc6ICdcdTIxOTEnLAorICAgICdVYXJyb2NpcjsnOiAnXHUyOTQ5JywKKyAgICAnVWJyY3k7JzogJ1x1MDQwZScsCisgICAgJ3VicmN5Oyc6ICdcdTA0NWUnLAorICAgICdVYnJldmU7JzogJ1x1MDE2YycsCisgICAgJ3VicmV2ZTsnOiAnXHUwMTZkJywKKyAgICAnVWNpcmM7JzogJ1x4ZGInLAorICAgICdVY2lyYyc6ICdceGRiJywKKyAgICAndWNpcmM7JzogJ1x4ZmInLAorICAgICd1Y2lyYyc6ICdceGZiJywKKyAgICAnVWN5Oyc6ICdcdTA0MjMnLAorICAgICd1Y3k7JzogJ1x1MDQ0MycsCisgICAgJ3VkYXJyOyc6ICdcdTIxYzUnLAorICAgICdVZGJsYWM7JzogJ1x1MDE3MCcsCisgICAgJ3VkYmxhYzsnOiAnXHUwMTcxJywKKyAgICAndWRoYXI7JzogJ1x1Mjk2ZScsCisgICAgJ3VmaXNodDsnOiAnXHUyOTdlJywKKyAgICAnVWZyOyc6ICdcVTAwMDFkNTE4JywKKyAgICAndWZyOyc6ICdcVTAwMDFkNTMyJywKKyAgICAnVWdyYXZlOyc6ICdceGQ5JywKKyAgICAnVWdyYXZlJzogJ1x4ZDknLAorICAgICd1Z3JhdmU7JzogJ1x4ZjknLAorICAgICd1Z3JhdmUnOiAnXHhmOScsCisgICAgJ3VIYXI7JzogJ1x1Mjk2MycsCisgICAgJ3VoYXJsOyc6ICdcdTIxYmYnLAorICAgICd1aGFycjsnOiAnXHUyMWJlJywKKyAgICAndWhibGs7JzogJ1x1MjU4MCcsCisgICAgJ3VsY29ybjsnOiAnXHUyMzFjJywKKyAgICAndWxjb3JuZXI7JzogJ1x1MjMxYycsCisgICAgJ3VsY3JvcDsnOiAnXHUyMzBmJywKKyAgICAndWx0cmk7JzogJ1x1MjVmOCcsCisgICAgJ1VtYWNyOyc6ICdcdTAxNmEnLAorICAgICd1bWFjcjsnOiAnXHUwMTZiJywKKyAgICAndW1sOyc6ICdceGE4JywKKyAgICAndW1sJzogJ1x4YTgnLAorICAgICdVbmRlckJhcjsnOiAnXycsCisgICAgJ1VuZGVyQnJhY2U7JzogJ1x1MjNkZicsCisgICAgJ1VuZGVyQnJhY2tldDsnOiAnXHUyM2I1JywKKyAgICAnVW5kZXJQYXJlbnRoZXNpczsnOiAnXHUyM2RkJywKKyAgICAnVW5pb247JzogJ1x1MjJjMycsCisgICAgJ1VuaW9uUGx1czsnOiAnXHUyMjhlJywKKyAgICAnVW9nb247JzogJ1x1MDE3MicsCisgICAgJ3VvZ29uOyc6ICdcdTAxNzMnLAorICAgICdVb3BmOyc6ICdcVTAwMDFkNTRjJywKKyAgICAndW9wZjsnOiAnXFUwMDAxZDU2NicsCisgICAgJ1VwQXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ1VwYXJyb3c7JzogJ1x1MjFkMScsCisgICAgJ3VwYXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ1VwQXJyb3dCYXI7JzogJ1x1MjkxMicsCisgICAgJ1VwQXJyb3dEb3duQXJyb3c7JzogJ1x1MjFjNScsCisgICAgJ1VwRG93bkFycm93Oyc6ICdcdTIxOTUnLAorICAgICdVcGRvd25hcnJvdzsnOiAnXHUyMWQ1JywKKyAgICAndXBkb3duYXJyb3c7JzogJ1x1MjE5NScsCisgICAgJ1VwRXF1aWxpYnJpdW07JzogJ1x1Mjk2ZScsCisgICAgJ3VwaGFycG9vbmxlZnQ7JzogJ1x1MjFiZicsCisgICAgJ3VwaGFycG9vbnJpZ2h0Oyc6ICdcdTIxYmUnLAorICAgICd1cGx1czsnOiAnXHUyMjhlJywKKyAgICAnVXBwZXJMZWZ0QXJyb3c7JzogJ1x1MjE5NicsCisgICAgJ1VwcGVyUmlnaHRBcnJvdzsnOiAnXHUyMTk3JywKKyAgICAnVXBzaTsnOiAnXHUwM2QyJywKKyAgICAndXBzaTsnOiAnXHUwM2M1JywKKyAgICAndXBzaWg7JzogJ1x1MDNkMicsCisgICAgJ1Vwc2lsb247JzogJ1x1MDNhNScsCisgICAgJ3Vwc2lsb247JzogJ1x1MDNjNScsCisgICAgJ1VwVGVlOyc6ICdcdTIyYTUnLAorICAgICdVcFRlZUFycm93Oyc6ICdcdTIxYTUnLAorICAgICd1cHVwYXJyb3dzOyc6ICdcdTIxYzgnLAorICAgICd1cmNvcm47JzogJ1x1MjMxZCcsCisgICAgJ3VyY29ybmVyOyc6ICdcdTIzMWQnLAorICAgICd1cmNyb3A7JzogJ1x1MjMwZScsCisgICAgJ1VyaW5nOyc6ICdcdTAxNmUnLAorICAgICd1cmluZzsnOiAnXHUwMTZmJywKKyAgICAndXJ0cmk7JzogJ1x1MjVmOScsCisgICAgJ1VzY3I7JzogJ1xVMDAwMWQ0YjAnLAorICAgICd1c2NyOyc6ICdcVTAwMDFkNGNhJywKKyAgICAndXRkb3Q7JzogJ1x1MjJmMCcsCisgICAgJ1V0aWxkZTsnOiAnXHUwMTY4JywKKyAgICAndXRpbGRlOyc6ICdcdTAxNjknLAorICAgICd1dHJpOyc6ICdcdTI1YjUnLAorICAgICd1dHJpZjsnOiAnXHUyNWI0JywKKyAgICAndXVhcnI7JzogJ1x1MjFjOCcsCisgICAgJ1V1bWw7JzogJ1x4ZGMnLAorICAgICdVdW1sJzogJ1x4ZGMnLAorICAgICd1dW1sOyc6ICdceGZjJywKKyAgICAndXVtbCc6ICdceGZjJywKKyAgICAndXdhbmdsZTsnOiAnXHUyOWE3JywKKyAgICAndmFuZ3J0Oyc6ICdcdTI5OWMnLAorICAgICd2YXJlcHNpbG9uOyc6ICdcdTAzZjUnLAorICAgICd2YXJrYXBwYTsnOiAnXHUwM2YwJywKKyAgICAndmFybm90aGluZzsnOiAnXHUyMjA1JywKKyAgICAndmFycGhpOyc6ICdcdTAzZDUnLAorICAgICd2YXJwaTsnOiAnXHUwM2Q2JywKKyAgICAndmFycHJvcHRvOyc6ICdcdTIyMWQnLAorICAgICd2QXJyOyc6ICdcdTIxZDUnLAorICAgICd2YXJyOyc6ICdcdTIxOTUnLAorICAgICd2YXJyaG87JzogJ1x1MDNmMScsCisgICAgJ3ZhcnNpZ21hOyc6ICdcdTAzYzInLAorICAgICd2YXJzdWJzZXRuZXE7JzogJ1x1MjI4YVx1ZmUwMCcsCisgICAgJ3ZhcnN1YnNldG5lcXE7JzogJ1x1MmFjYlx1ZmUwMCcsCisgICAgJ3ZhcnN1cHNldG5lcTsnOiAnXHUyMjhiXHVmZTAwJywKKyAgICAndmFyc3Vwc2V0bmVxcTsnOiAnXHUyYWNjXHVmZTAwJywKKyAgICAndmFydGhldGE7JzogJ1x1MDNkMScsCisgICAgJ3ZhcnRyaWFuZ2xlbGVmdDsnOiAnXHUyMmIyJywKKyAgICAndmFydHJpYW5nbGVyaWdodDsnOiAnXHUyMmIzJywKKyAgICAnVmJhcjsnOiAnXHUyYWViJywKKyAgICAndkJhcjsnOiAnXHUyYWU4JywKKyAgICAndkJhcnY7JzogJ1x1MmFlOScsCisgICAgJ1ZjeTsnOiAnXHUwNDEyJywKKyAgICAndmN5Oyc6ICdcdTA0MzInLAorICAgICdWRGFzaDsnOiAnXHUyMmFiJywKKyAgICAnVmRhc2g7JzogJ1x1MjJhOScsCisgICAgJ3ZEYXNoOyc6ICdcdTIyYTgnLAorICAgICd2ZGFzaDsnOiAnXHUyMmEyJywKKyAgICAnVmRhc2hsOyc6ICdcdTJhZTYnLAorICAgICdWZWU7JzogJ1x1MjJjMScsCisgICAgJ3ZlZTsnOiAnXHUyMjI4JywKKyAgICAndmVlYmFyOyc6ICdcdTIyYmInLAorICAgICd2ZWVlcTsnOiAnXHUyMjVhJywKKyAgICAndmVsbGlwOyc6ICdcdTIyZWUnLAorICAgICdWZXJiYXI7JzogJ1x1MjAxNicsCisgICAgJ3ZlcmJhcjsnOiAnfCcsCisgICAgJ1ZlcnQ7JzogJ1x1MjAxNicsCisgICAgJ3ZlcnQ7JzogJ3wnLAorICAgICdWZXJ0aWNhbEJhcjsnOiAnXHUyMjIzJywKKyAgICAnVmVydGljYWxMaW5lOyc6ICd8JywKKyAgICAnVmVydGljYWxTZXBhcmF0b3I7JzogJ1x1Mjc1OCcsCisgICAgJ1ZlcnRpY2FsVGlsZGU7JzogJ1x1MjI0MCcsCisgICAgJ1ZlcnlUaGluU3BhY2U7JzogJ1x1MjAwYScsCisgICAgJ1ZmcjsnOiAnXFUwMDAxZDUxOScsCisgICAgJ3ZmcjsnOiAnXFUwMDAxZDUzMycsCisgICAgJ3ZsdHJpOyc6ICdcdTIyYjInLAorICAgICd2bnN1YjsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAndm5zdXA7JzogJ1x1MjI4M1x1MjBkMicsCisgICAgJ1ZvcGY7JzogJ1xVMDAwMWQ1NGQnLAorICAgICd2b3BmOyc6ICdcVTAwMDFkNTY3JywKKyAgICAndnByb3A7JzogJ1x1MjIxZCcsCisgICAgJ3ZydHJpOyc6ICdcdTIyYjMnLAorICAgICdWc2NyOyc6ICdcVTAwMDFkNGIxJywKKyAgICAndnNjcjsnOiAnXFUwMDAxZDRjYicsCisgICAgJ3ZzdWJuRTsnOiAnXHUyYWNiXHVmZTAwJywKKyAgICAndnN1Ym5lOyc6ICdcdTIyOGFcdWZlMDAnLAorICAgICd2c3VwbkU7JzogJ1x1MmFjY1x1ZmUwMCcsCisgICAgJ3ZzdXBuZTsnOiAnXHUyMjhiXHVmZTAwJywKKyAgICAnVnZkYXNoOyc6ICdcdTIyYWEnLAorICAgICd2emlnemFnOyc6ICdcdTI5OWEnLAorICAgICdXY2lyYzsnOiAnXHUwMTc0JywKKyAgICAnd2NpcmM7JzogJ1x1MDE3NScsCisgICAgJ3dlZGJhcjsnOiAnXHUyYTVmJywKKyAgICAnV2VkZ2U7JzogJ1x1MjJjMCcsCisgICAgJ3dlZGdlOyc6ICdcdTIyMjcnLAorICAgICd3ZWRnZXE7JzogJ1x1MjI1OScsCisgICAgJ3dlaWVycDsnOiAnXHUyMTE4JywKKyAgICAnV2ZyOyc6ICdcVTAwMDFkNTFhJywKKyAgICAnd2ZyOyc6ICdcVTAwMDFkNTM0JywKKyAgICAnV29wZjsnOiAnXFUwMDAxZDU0ZScsCisgICAgJ3dvcGY7JzogJ1xVMDAwMWQ1NjgnLAorICAgICd3cDsnOiAnXHUyMTE4JywKKyAgICAnd3I7JzogJ1x1MjI0MCcsCisgICAgJ3dyZWF0aDsnOiAnXHUyMjQwJywKKyAgICAnV3NjcjsnOiAnXFUwMDAxZDRiMicsCisgICAgJ3dzY3I7JzogJ1xVMDAwMWQ0Y2MnLAorICAgICd4Y2FwOyc6ICdcdTIyYzInLAorICAgICd4Y2lyYzsnOiAnXHUyNWVmJywKKyAgICAneGN1cDsnOiAnXHUyMmMzJywKKyAgICAneGR0cmk7JzogJ1x1MjViZCcsCisgICAgJ1hmcjsnOiAnXFUwMDAxZDUxYicsCisgICAgJ3hmcjsnOiAnXFUwMDAxZDUzNScsCisgICAgJ3hoQXJyOyc6ICdcdTI3ZmEnLAorICAgICd4aGFycjsnOiAnXHUyN2Y3JywKKyAgICAnWGk7JzogJ1x1MDM5ZScsCisgICAgJ3hpOyc6ICdcdTAzYmUnLAorICAgICd4bEFycjsnOiAnXHUyN2Y4JywKKyAgICAneGxhcnI7JzogJ1x1MjdmNScsCisgICAgJ3htYXA7JzogJ1x1MjdmYycsCisgICAgJ3huaXM7JzogJ1x1MjJmYicsCisgICAgJ3hvZG90Oyc6ICdcdTJhMDAnLAorICAgICdYb3BmOyc6ICdcVTAwMDFkNTRmJywKKyAgICAneG9wZjsnOiAnXFUwMDAxZDU2OScsCisgICAgJ3hvcGx1czsnOiAnXHUyYTAxJywKKyAgICAneG90aW1lOyc6ICdcdTJhMDInLAorICAgICd4ckFycjsnOiAnXHUyN2Y5JywKKyAgICAneHJhcnI7JzogJ1x1MjdmNicsCisgICAgJ1hzY3I7JzogJ1xVMDAwMWQ0YjMnLAorICAgICd4c2NyOyc6ICdcVTAwMDFkNGNkJywKKyAgICAneHNxY3VwOyc6ICdcdTJhMDYnLAorICAgICd4dXBsdXM7JzogJ1x1MmEwNCcsCisgICAgJ3h1dHJpOyc6ICdcdTI1YjMnLAorICAgICd4dmVlOyc6ICdcdTIyYzEnLAorICAgICd4d2VkZ2U7JzogJ1x1MjJjMCcsCisgICAgJ1lhY3V0ZTsnOiAnXHhkZCcsCisgICAgJ1lhY3V0ZSc6ICdceGRkJywKKyAgICAneWFjdXRlOyc6ICdceGZkJywKKyAgICAneWFjdXRlJzogJ1x4ZmQnLAorICAgICdZQWN5Oyc6ICdcdTA0MmYnLAorICAgICd5YWN5Oyc6ICdcdTA0NGYnLAorICAgICdZY2lyYzsnOiAnXHUwMTc2JywKKyAgICAneWNpcmM7JzogJ1x1MDE3NycsCisgICAgJ1ljeTsnOiAnXHUwNDJiJywKKyAgICAneWN5Oyc6ICdcdTA0NGInLAorICAgICd5ZW47JzogJ1x4YTUnLAorICAgICd5ZW4nOiAnXHhhNScsCisgICAgJ1lmcjsnOiAnXFUwMDAxZDUxYycsCisgICAgJ3lmcjsnOiAnXFUwMDAxZDUzNicsCisgICAgJ1lJY3k7JzogJ1x1MDQwNycsCisgICAgJ3lpY3k7JzogJ1x1MDQ1NycsCisgICAgJ1lvcGY7JzogJ1xVMDAwMWQ1NTAnLAorICAgICd5b3BmOyc6ICdcVTAwMDFkNTZhJywKKyAgICAnWXNjcjsnOiAnXFUwMDAxZDRiNCcsCisgICAgJ3lzY3I7JzogJ1xVMDAwMWQ0Y2UnLAorICAgICdZVWN5Oyc6ICdcdTA0MmUnLAorICAgICd5dWN5Oyc6ICdcdTA0NGUnLAorICAgICdZdW1sOyc6ICdcdTAxNzgnLAorICAgICd5dW1sOyc6ICdceGZmJywKKyAgICAneXVtbCc6ICdceGZmJywKKyAgICAnWmFjdXRlOyc6ICdcdTAxNzknLAorICAgICd6YWN1dGU7JzogJ1x1MDE3YScsCisgICAgJ1pjYXJvbjsnOiAnXHUwMTdkJywKKyAgICAnemNhcm9uOyc6ICdcdTAxN2UnLAorICAgICdaY3k7JzogJ1x1MDQxNycsCisgICAgJ3pjeTsnOiAnXHUwNDM3JywKKyAgICAnWmRvdDsnOiAnXHUwMTdiJywKKyAgICAnemRvdDsnOiAnXHUwMTdjJywKKyAgICAnemVldHJmOyc6ICdcdTIxMjgnLAorICAgICdaZXJvV2lkdGhTcGFjZTsnOiAnXHUyMDBiJywKKyAgICAnWmV0YTsnOiAnXHUwMzk2JywKKyAgICAnemV0YTsnOiAnXHUwM2I2JywKKyAgICAnWmZyOyc6ICdcdTIxMjgnLAorICAgICd6ZnI7JzogJ1xVMDAwMWQ1MzcnLAorICAgICdaSGN5Oyc6ICdcdTA0MTYnLAorICAgICd6aGN5Oyc6ICdcdTA0MzYnLAorICAgICd6aWdyYXJyOyc6ICdcdTIxZGQnLAorICAgICdab3BmOyc6ICdcdTIxMjQnLAorICAgICd6b3BmOyc6ICdcVTAwMDFkNTZiJywKKyAgICAnWnNjcjsnOiAnXFUwMDAxZDRiNScsCisgICAgJ3pzY3I7JzogJ1xVMDAwMWQ0Y2YnLAorICAgICd6d2o7JzogJ1x1MjAwZCcsCisgICAgJ3p3bmo7JzogJ1x1MjAwYycsCit9CisKICMgbWFwcyB0aGUgVW5pY29kZSBjb2RlcG9pbnQgdG8gdGhlIEhUTUwgZW50aXR5IG5hbWUKIGNvZGVwb2ludDJuYW1lID0ge30KIApkaWZmIC0tZ2l0IGEvTGliL2h0bWwvcGFyc2VyLnB5IGIvTGliL2h0bWwvcGFyc2VyLnB5CmluZGV4IGRlNTA0YWIuLmY4YWM4MjggMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL3BhcnNlci5weQorKysgYi9MaWIvaHRtbC9wYXJzZXIucHkKQEAgLTEwLDYgKzEwLDcgQEAKIAogaW1wb3J0IF9tYXJrdXBiYXNlCiBpbXBvcnQgcmUKK2ltcG9ydCB3YXJuaW5ncwogCiAjIFJlZ3VsYXIgZXhwcmVzc2lvbnMgdXNlZCBmb3IgcGFyc2luZwogCkBAIC0xMTMsMTQgKzExNCwxNiBAQAogCiAgICAgQ0RBVEFfQ09OVEVOVF9FTEVNRU5UUyA9ICgic2NyaXB0IiwgInN0eWxlIikKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpY3Q9VHJ1ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmljdD1GYWxzZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW5kIHJlc2V0IHRoaXMgaW5zdGFuY2UuCiAKLSAgICAgICAgSWYgc3RyaWN0IGlzIHNldCB0byBUcnVlICh0aGUgZGVmYXVsdCksIGVycm9ycyBhcmUgcmFpc2VkIHdoZW4gaW52YWxpZAotICAgICAgICBIVE1MIGlzIGVuY291bnRlcmVkLiAgSWYgc2V0IHRvIEZhbHNlLCBhbiBhdHRlbXB0IGlzIGluc3RlYWQgbWFkZSB0bwotICAgICAgICBjb250aW51ZSBwYXJzaW5nLCBtYWtpbmcgImJlc3QgZ3Vlc3NlcyIgYWJvdXQgdGhlIGludGVuZGVkIG1lYW5pbmcsIGluCi0gICAgICAgIGEgZmFzaGlvbiBzaW1pbGFyIHRvIHdoYXQgYnJvd3NlcnMgdHlwaWNhbGx5IGRvLgorICAgICAgICBJZiBzdHJpY3QgaXMgc2V0IHRvIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlIHBhcnNlciB3aWxsIHBhcnNlIGludmFsaWQKKyAgICAgICAgbWFya3VwLCBvdGhlcndpc2UgaXQgd2lsbCByYWlzZSBhbiBlcnJvci4gIE5vdGUgdGhhdCB0aGUgc3RyaWN0IG1vZGUKKyAgICAgICAgaXMgZGVwcmVjYXRlZC4KICAgICAgICAgIiIiCisgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBzdHJpY3QgbW9kZSBpcyBkZXByZWNhdGVkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBzZWxmLnN0cmljdCA9IHN0cmljdAogICAgICAgICBzZWxmLnJlc2V0KCkKIApAQCAtMjcxLDggKzI3NCw4IEBACiAgICAgIyBTZWUgYWxzbyBwYXJzZV9kZWNsYXJhdGlvbiBpbiBfbWFya3VwYmFzZQogICAgIGRlZiBwYXJzZV9odG1sX2RlY2xhcmF0aW9uKHNlbGYsIGkpOgogICAgICAgICByYXdkYXRhID0gc2VsZi5yYXdkYXRhCi0gICAgICAgIGlmIHJhd2RhdGFbaTppKzJdICE9ICc8ISc6Ci0gICAgICAgICAgICBzZWxmLmVycm9yKCd1bmV4cGVjdGVkIGNhbGwgdG8gcGFyc2VfaHRtbF9kZWNsYXJhdGlvbigpJykKKyAgICAgICAgYXNzZXJ0IHJhd2RhdGFbaTppKzJdID09ICc8IScsICgndW5leHBlY3RlZCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyc2VfaHRtbF9kZWNsYXJhdGlvbigpJykKICAgICAgICAgaWYgcmF3ZGF0YVtpOmkrNF0gPT0gJzwhLS0nOgogICAgICAgICAgICAgIyB0aGlzIGNhc2UgaXMgYWN0dWFsbHkgYWxyZWFkeSBoYW5kbGVkIGluIGdvYWhlYWQoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyc2VfY29tbWVudChpKQpAQCAtMjkyLDggKzI5NSw4IEBACiAgICAgIyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjYm9ndXMtY29tbWVudC1zdGF0ZQogICAgIGRlZiBwYXJzZV9ib2d1c19jb21tZW50KHNlbGYsIGksIHJlcG9ydD0xKToKICAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQotICAgICAgICBpZiByYXdkYXRhW2k6aSsyXSBub3QgaW4gKCc8IScsICc8LycpOgotICAgICAgICAgICAgc2VsZi5lcnJvcigndW5leHBlY3RlZCBjYWxsIHRvIHBhcnNlX2NvbW1lbnQoKScpCisgICAgICAgIGFzc2VydCByYXdkYXRhW2k6aSsyXSBpbiAoJzwhJywgJzwvJyksICgndW5leHBlY3RlZCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJzZV9jb21tZW50KCknKQogICAgICAgICBwb3MgPSByYXdkYXRhLmZpbmQoJz4nLCBpKzIpCiAgICAgICAgIGlmIHBvcyA9PSAtMToKICAgICAgICAgICAgIHJldHVybiAtMQpAQCAtNDk3LDcgKzUwMCw2IEBACiAgICAgICAgICAgICBzZWxmLmVycm9yKCJ1bmtub3duIGRlY2xhcmF0aW9uOiAlciIgJSAoZGF0YSwpKQogCiAgICAgIyBJbnRlcm5hbCAtLSBoZWxwZXIgdG8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVyIHF1b3RpbmcKLSAgICBlbnRpdHlkZWZzID0gTm9uZQogICAgIGRlZiB1bmVzY2FwZShzZWxmLCBzKToKICAgICAgICAgaWYgJyYnIG5vdCBpbiBzOgogICAgICAgICAgICAgcmV0dXJuIHMKQEAgLTUwNywyNCArNTA5LDIzIEBACiAgICAgICAgICAgICAgICAgaWYgc1swXSA9PSAiIyI6CiAgICAgICAgICAgICAgICAgICAgIHMgPSBzWzE6XQogICAgICAgICAgICAgICAgICAgICBpZiBzWzBdIGluIFsneCcsJ1gnXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpbnQoc1sxOl0sIDE2KQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGludChzWzE6XS5yc3RyaXAoJzsnKSwgMTYpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHMpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHMucnN0cmlwKCc7JykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaHIoYykKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIHJldHVybiAnJiMnKyBzICsnOycKKyAgICAgICAgICAgICAgICByZXR1cm4gJyYjJyArIHMKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBDYW5ub3QgdXNlIG5hbWUyY29kZXBvaW50IGRpcmVjdGx5LCBiZWNhdXNlIEhUTUxQYXJzZXIKLSAgICAgICAgICAgICAgICAjIHN1cHBvcnRzIGFwb3MsIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIEhUTUwgNAotICAgICAgICAgICAgICAgIGltcG9ydCBodG1sLmVudGl0aWVzCi0gICAgICAgICAgICAgICAgaWYgSFRNTFBhcnNlci5lbnRpdHlkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGVudGl0eWRlZnMgPSBIVE1MUGFyc2VyLmVudGl0eWRlZnMgPSB7J2Fwb3MnOiInIn0KLSAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gaHRtbC5lbnRpdGllcy5uYW1lMmNvZGVwb2ludC5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5ZGVmc1trXSA9IGNocih2KQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZW50aXR5ZGVmc1tzXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcmJytzKyc7JworICAgICAgICAgICAgICAgIGZyb20gaHRtbC5lbnRpdGllcyBpbXBvcnQgaHRtbDUKKyAgICAgICAgICAgICAgICBpZiBzIGluIGh0bWw1OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbDVbc10KKyAgICAgICAgICAgICAgICBlbGlmIHMuZW5kc3dpdGgoJzsnKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcmJyArIHMKKyAgICAgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgyLCBsZW4ocykpOgorICAgICAgICAgICAgICAgICAgICBpZiBzWzp4XSBpbiBodG1sNToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBodG1sNVtzWzp4XV0gKyBzW3g6XQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJicgKyBzCiAKLSAgICAgICAgcmV0dXJuIHJlLnN1YihyIiYoIz9beFhdPyg/OlswLTlhLWZBLUZdK3xcd3sxLDh9KSk7IiwKKyAgICAgICAgcmV0dXJuIHJlLnN1YihyIiYoIz9beFhdPyg/OlswLTlhLWZBLUZdKzt8XHd7MSwzMn07PykpIiwKICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlRW50aXRpZXMsIHMsIGZsYWdzPXJlLkFTQ0lJKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY2xpZW50LnB5IGIvTGliL2h0dHAvY2xpZW50LnB5CmluZGV4IDk3YTcxNTUuLjliMDE3MDQgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2NsaWVudC5weQorKysgYi9MaWIvaHR0cC9jbGllbnQucHkKQEAgLTE0MSw2ICsxNDEsOSBAQAogTE9DS0VEID0gNDIzCiBGQUlMRURfREVQRU5ERU5DWSA9IDQyNAogVVBHUkFERV9SRVFVSVJFRCA9IDQyNgorUFJFQ09ORElUSU9OX1JFUVVJUkVEID0gNDI4CitUT09fTUFOWV9SRVFVRVNUUyA9IDQyOQorUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRSA9IDQzMQogCiAjIHNlcnZlciBlcnJvcgogSU5URVJOQUxfU0VSVkVSX0VSUk9SID0gNTAwCkBAIC0xNTEsNiArMTU0LDcgQEAKIEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEID0gNTA1CiBJTlNVRkZJQ0lFTlRfU1RPUkFHRSA9IDUwNwogTk9UX0VYVEVOREVEID0gNTEwCitORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEID0gNTExCiAKICMgTWFwcGluZyBzdGF0dXMgY29kZXMgdG8gb2ZmaWNpYWwgVzNDIG5hbWVzCiByZXNwb25zZXMgPSB7CkBAIC0xOTIsNiArMTk2LDkgQEAKICAgICA0MTU6ICdVbnN1cHBvcnRlZCBNZWRpYSBUeXBlJywKICAgICA0MTY6ICdSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlJywKICAgICA0MTc6ICdFeHBlY3RhdGlvbiBGYWlsZWQnLAorICAgIDQyODogJ1ByZWNvbmRpdGlvbiBSZXF1aXJlZCcsCisgICAgNDI5OiAnVG9vIE1hbnkgUmVxdWVzdHMnLAorICAgIDQzMTogJ1JlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2UnLAogCiAgICAgNTAwOiAnSW50ZXJuYWwgU2VydmVyIEVycm9yJywKICAgICA1MDE6ICdOb3QgSW1wbGVtZW50ZWQnLApAQCAtMTk5LDYgKzIwNiw3IEBACiAgICAgNTAzOiAnU2VydmljZSBVbmF2YWlsYWJsZScsCiAgICAgNTA0OiAnR2F0ZXdheSBUaW1lb3V0JywKICAgICA1MDU6ICdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsCisgICAgNTExOiAnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCiB9CiAKICMgbWF4aW1hbCBhbW91bnQgb2YgZGF0YSB0byByZWFkIGF0IG9uZSB0aW1lIGluIF9zYWZlX3JlYWQKQEAgLTQ4NSwxMSArNDkzLDE3IEBACiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiBiIiIKIAotICAgICAgICBpZiBzZWxmLmNodW5rZWQ6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9jaHVua2VkKGFtdCkKKyAgICAgICAgaWYgYW10IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBBbW91bnQgaXMgZ2l2ZW4sIHNvIGNhbGwgYmFzZSBjbGFzcyB2ZXJzaW9uCisgICAgICAgICAgICAjICh3aGljaCBpcyBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBzZWxmLnJlYWRpbnRvKQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKEhUVFBSZXNwb25zZSwgc2VsZikucmVhZChhbXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFtb3VudCBpcyBub3QgZ2l2ZW4gKHVuYm91bmRlZCByZWFkKSBzbyB3ZSBtdXN0IGNoZWNrIHNlbGYubGVuZ3RoCisgICAgICAgICAgICAjIGFuZCBzZWxmLmNodW5rZWQKIAotICAgICAgICBpZiBhbXQgaXMgTm9uZToKLSAgICAgICAgICAgICMgdW5ib3VuZGVkIHJlYWQKKyAgICAgICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGFsbF9jaHVua2VkKCkKKwogICAgICAgICAgICAgaWYgc2VsZi5sZW5ndGggaXMgTm9uZToKICAgICAgICAgICAgICAgICBzID0gc2VsZi5mcC5yZWFkKCkKICAgICAgICAgICAgIGVsc2U6CkBAIC00OTgsNjEgKzUxMiw0OSBAQAogICAgICAgICAgICAgc2VsZi5jbG9zZSgpICAgICAgICAjIHdlIHJlYWQgZXZlcnl0aGluZwogICAgICAgICAgICAgcmV0dXJuIHMKIAorICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBpZiBzZWxmLl9tZXRob2QgPT0gIkhFQUQiOgorICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkaW50b19jaHVua2VkKGIpCisKICAgICAgICAgaWYgc2VsZi5sZW5ndGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBhbXQgPiBzZWxmLmxlbmd0aDoKKyAgICAgICAgICAgIGlmIGxlbihiKSA+IHNlbGYubGVuZ3RoOgogICAgICAgICAgICAgICAgICMgY2xpcCB0aGUgcmVhZCB0byB0aGUgImVuZCBvZiByZXNwb25zZSIKLSAgICAgICAgICAgICAgICBhbXQgPSBzZWxmLmxlbmd0aAorICAgICAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KGIpWzA6c2VsZi5sZW5ndGhdCiAKICAgICAgICAgIyB3ZSBkbyBub3QgdXNlIF9zYWZlX3JlYWQoKSBoZXJlIGJlY2F1c2UgdGhpcyBtYXkgYmUgYSAud2lsbF9jbG9zZQogICAgICAgICAjIGNvbm5lY3Rpb24sIGFuZCB0aGUgdXNlciBpcyByZWFkaW5nIG1vcmUgYnl0ZXMgdGhhbiB3aWxsIGJlIHByb3ZpZGVkCiAgICAgICAgICMgKGZvciBleGFtcGxlLCByZWFkaW5nIGluIDFrIGNodW5rcykKLSAgICAgICAgcyA9IHNlbGYuZnAucmVhZChhbXQpCisgICAgICAgIG4gPSBzZWxmLmZwLnJlYWRpbnRvKGIpCiAgICAgICAgIGlmIHNlbGYubGVuZ3RoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5sZW5ndGggLT0gbGVuKHMpCisgICAgICAgICAgICBzZWxmLmxlbmd0aCAtPSBuCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5sZW5ndGg6CiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCi0gICAgICAgIHJldHVybiBzCisgICAgICAgIHJldHVybiBuCiAKLSAgICBkZWYgX3JlYWRfY2h1bmtlZChzZWxmLCBhbXQpOgotICAgICAgICBhc3NlcnQgc2VsZi5jaHVua2VkICE9IF9VTktOT1dOCi0gICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKLSAgICAgICAgdmFsdWUgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLmZwLnJlYWRsaW5lKF9NQVhMSU5FICsgMSkKLSAgICAgICAgICAgICAgICBpZiBsZW4obGluZSkgPiBfTUFYTElORToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgTGluZVRvb0xvbmcoImNodW5rIHNpemUiKQotICAgICAgICAgICAgICAgIGkgPSBsaW5lLmZpbmQoYiI7IikKLSAgICAgICAgICAgICAgICBpZiBpID49IDA6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzppXSAjIHN0cmlwIGNodW5rLWV4dGVuc2lvbnMKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBpbnQobGluZSwgMTYpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICMgY2xvc2UgdGhlIGNvbm5lY3Rpb24gYXMgcHJvdG9jb2wgc3luY2hyb25pc2F0aW9uIGlzCi0gICAgICAgICAgICAgICAgICAgICMgcHJvYmFibHkgbG9zdAotICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnLmpvaW4odmFsdWUpKQotICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIGFtdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoY2h1bmtfbGVmdCkpCi0gICAgICAgICAgICBlbGlmIGFtdCA8IGNodW5rX2xlZnQ6Ci0gICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKHNlbGYuX3NhZmVfcmVhZChhbXQpKQotICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBhbXQKLSAgICAgICAgICAgICAgICByZXR1cm4gYicnLmpvaW4odmFsdWUpCi0gICAgICAgICAgICBlbGlmIGFtdCA9PSBjaHVua19sZWZ0OgotICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoYW10KSkKLSAgICAgICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuawotICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IE5vbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gYicnLmpvaW4odmFsdWUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoY2h1bmtfbGVmdCkpCi0gICAgICAgICAgICAgICAgYW10IC09IGNodW5rX2xlZnQKKyAgICBkZWYgX3JlYWRfbmV4dF9jaHVua19zaXplKHNlbGYpOgorICAgICAgICAjIFJlYWQgdGhlIG5leHQgY2h1bmsgc2l6ZSBmcm9tIHRoZSBmaWxlCisgICAgICAgIGxpbmUgPSBzZWxmLmZwLnJlYWRsaW5lKF9NQVhMSU5FICsgMSkKKyAgICAgICAgaWYgbGVuKGxpbmUpID4gX01BWExJTkU6CisgICAgICAgICAgICByYWlzZSBMaW5lVG9vTG9uZygiY2h1bmsgc2l6ZSIpCisgICAgICAgIGkgPSBsaW5lLmZpbmQoYiI7IikKKyAgICAgICAgaWYgaSA+PSAwOgorICAgICAgICAgICAgbGluZSA9IGxpbmVbOmldICMgc3RyaXAgY2h1bmstZXh0ZW5zaW9ucworICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gaW50KGxpbmUsIDE2KQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgY2xvc2UgdGhlIGNvbm5lY3Rpb24gYXMgcHJvdG9jb2wgc3luY2hyb25pc2F0aW9uIGlzCisgICAgICAgICAgICAjIHByb2JhYmx5IGxvc3QKKyAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgcmFpc2UKIAotICAgICAgICAgICAgIyB3ZSByZWFkIHRoZSB3aG9sZSBjaHVuaywgZ2V0IGFub3RoZXIKLSAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgICAgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuawotICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKLQorICAgIGRlZiBfcmVhZF9hbmRfZGlzY2FyZF90cmFpbGVyKHNlbGYpOgogICAgICAgICAjIHJlYWQgYW5kIGRpc2NhcmQgdHJhaWxlciB1cCB0byB0aGUgQ1JMRiB0ZXJtaW5hdG9yCiAgICAgICAgICMjIyBub3RlOiB3ZSBzaG91bGRuJ3QgaGF2ZSBhbnkgdHJhaWxlcnMhCiAgICAgICAgIHdoaWxlIFRydWU6CkBAIC01NjYsMTEgKzU2OCw3MiBAQAogICAgICAgICAgICAgaWYgbGluZSBpbiAoYidcclxuJywgYidcbicsIGInJyk6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAorICAgIGRlZiBfcmVhZGFsbF9jaHVua2VkKHNlbGYpOgorICAgICAgICBhc3NlcnQgc2VsZi5jaHVua2VkICE9IF9VTktOT1dOCisgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKKyAgICAgICAgdmFsdWUgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX3JlYWRfbmV4dF9jaHVua19zaXplKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnLmpvaW4odmFsdWUpKQorICAgICAgICAgICAgdmFsdWUuYXBwZW5kKHNlbGYuX3NhZmVfcmVhZChjaHVua19sZWZ0KSkKKworICAgICAgICAgICAgIyB3ZSByZWFkIHRoZSB3aG9sZSBjaHVuaywgZ2V0IGFub3RoZXIKKyAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgICAgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuaworICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKKworICAgICAgICBzZWxmLl9yZWFkX2FuZF9kaXNjYXJkX3RyYWlsZXIoKQorCiAgICAgICAgICMgd2UgcmVhZCBldmVyeXRoaW5nOyBjbG9zZSB0aGUgImZpbGUiCiAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgICAgIHJldHVybiBiJycuam9pbih2YWx1ZSkKIAorICAgIGRlZiBfcmVhZGludG9fY2h1bmtlZChzZWxmLCBiKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuY2h1bmtlZCAhPSBfVU5LTk9XTgorICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5jaHVua19sZWZ0CisKKyAgICAgICAgdG90YWxfYnl0ZXMgPSAwCisgICAgICAgIG12YiA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9yZWFkX25leHRfY2h1bmtfc2l6ZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGJ5dGVzKGJbMDp0b3RhbF9ieXRlc10pKQorCisgICAgICAgICAgICBpZiBsZW4obXZiKSA8IGNodW5rX2xlZnQ6CisgICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8obXZiKQorICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBuCisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzICsgbgorICAgICAgICAgICAgZWxpZiBsZW4obXZiKSA9PSBjaHVua19sZWZ0OgorICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zYWZlX3JlYWRpbnRvKG12YikKKyAgICAgICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuaworICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IE5vbmUKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMgKyBuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRlbXBfbXZiID0gbXZiWzA6Y2h1bmtfbGVmdF0KKyAgICAgICAgICAgICAgICBuID0gc2VsZi5fc2FmZV9yZWFkaW50byh0ZW1wX212YikKKyAgICAgICAgICAgICAgICBtdmIgPSBtdmJbbjpdCisgICAgICAgICAgICAgICAgdG90YWxfYnl0ZXMgKz0gbgorCisgICAgICAgICAgICAjIHdlIHJlYWQgdGhlIHdob2xlIGNodW5rLCBnZXQgYW5vdGhlcgorICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAgICAgIyB0b3NzIHRoZSBDUkxGIGF0IHRoZSBlbmQgb2YgdGhlIGNodW5rCisgICAgICAgICAgICBjaHVua19sZWZ0ID0gTm9uZQorCisgICAgICAgIHNlbGYuX3JlYWRfYW5kX2Rpc2NhcmRfdHJhaWxlcigpCisKKyAgICAgICAgIyB3ZSByZWFkIGV2ZXJ5dGhpbmc7IGNsb3NlIHRoZSAiZmlsZSIKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzCisKICAgICBkZWYgX3NhZmVfcmVhZChzZWxmLCBhbXQpOgogICAgICAgICAiIiJSZWFkIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWVzdGVkLCBjb21wZW5zYXRpbmcgZm9yIHBhcnRpYWwgcmVhZHMuCiAKQEAgLTU5NCw2ICs2NTcsMjIgQEAKICAgICAgICAgICAgIGFtdCAtPSBsZW4oY2h1bmspCiAgICAgICAgIHJldHVybiBiIiIuam9pbihzKQogCisgICAgZGVmIF9zYWZlX3JlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICAiIiJTYW1lIGFzIF9zYWZlX3JlYWQsIGJ1dCBmb3IgcmVhZGluZyBpbnRvIGEgYnVmZmVyLiIiIgorICAgICAgICB0b3RhbF9ieXRlcyA9IDAKKyAgICAgICAgbXZiID0gbWVtb3J5dmlldyhiKQorICAgICAgICB3aGlsZSB0b3RhbF9ieXRlcyA8IGxlbihiKToKKyAgICAgICAgICAgIGlmIE1BWEFNT1VOVCA8IGxlbihtdmIpOgorICAgICAgICAgICAgICAgIHRlbXBfbXZiID0gbXZiWzA6TUFYQU1PVU5UXQorICAgICAgICAgICAgICAgIG4gPSBzZWxmLmZwLnJlYWRpbnRvKHRlbXBfbXZiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuID0gc2VsZi5mcC5yZWFkaW50byhtdmIpCisgICAgICAgICAgICBpZiBub3QgbjoKKyAgICAgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChieXRlcyhtdmJbMDp0b3RhbF9ieXRlc10pLCBsZW4oYikpCisgICAgICAgICAgICBtdmIgPSBtdmJbbjpdCisgICAgICAgICAgICB0b3RhbF9ieXRlcyArPSBuCisgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcworCiAgICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZnAuZmlsZW5vKCkKIApAQCAtNzAwLDcgKzc3OSw3IEBACiAgICAgICAgIHNlbGYuc2VuZChjb25uZWN0X2J5dGVzKQogICAgICAgICBmb3IgaGVhZGVyLCB2YWx1ZSBpbiBzZWxmLl90dW5uZWxfaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgaGVhZGVyX3N0ciA9ICIlczogJXNcclxuIiAlIChoZWFkZXIsIHZhbHVlKQotICAgICAgICAgICAgaGVhZGVyX2J5dGVzID0gaGVhZGVyX3N0ci5lbmNvZGUoImxhdGluMSIpCisgICAgICAgICAgICBoZWFkZXJfYnl0ZXMgPSBoZWFkZXJfc3RyLmVuY29kZSgibGF0aW4tMSIpCiAgICAgICAgICAgICBzZWxmLnNlbmQoaGVhZGVyX2J5dGVzKQogICAgICAgICBzZWxmLnNlbmQoYidcclxuJykKIApAQCAtOTQzLDcgKzEwMjIsNyBAQAogICAgICAgICB2YWx1ZXMgPSBsaXN0KHZhbHVlcykKICAgICAgICAgZm9yIGksIG9uZV92YWx1ZSBpbiBlbnVtZXJhdGUodmFsdWVzKToKICAgICAgICAgICAgIGlmIGhhc2F0dHIob25lX3ZhbHVlLCAnZW5jb2RlJyk6Ci0gICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gb25lX3ZhbHVlLmVuY29kZSgnbGF0aW4xJykKKyAgICAgICAgICAgICAgICB2YWx1ZXNbaV0gPSBvbmVfdmFsdWUuZW5jb2RlKCdsYXRpbi0xJykKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvbmVfdmFsdWUsIGludCk6CiAgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gc3RyKG9uZV92YWx1ZSkuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgIHZhbHVlID0gYidcclxuXHQnLmpvaW4odmFsdWVzKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llamFyLnB5IGIvTGliL2h0dHAvY29va2llamFyLnB5CmluZGV4IGE1MTZkNzMuLjhmM2Y2ZGMgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZWphci5weQorKysgYi9MaWIvaHR0cC9jb29raWVqYXIucHkKQEAgLTYyNSw3ICs2MjUsNyBAQAogICAgIHJldHVybiBwYXRoCiAKIGRlZiByZXF1ZXN0X3BvcnQocmVxdWVzdCk6Ci0gICAgaG9zdCA9IHJlcXVlc3QuZ2V0X2hvc3QoKQorICAgIGhvc3QgPSByZXF1ZXN0Lmhvc3QKICAgICBpID0gaG9zdC5maW5kKCc6JykKICAgICBpZiBpID49IDA6CiAgICAgICAgIHBvcnQgPSBob3N0W2krMTpdCkBAIC05NDksNyArOTQ5LDcgQEAKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBzZXRfb2tfdmVyaWZpYWJpbGl0eShzZWxmLCBjb29raWUsIHJlcXVlc3QpOgotICAgICAgICBpZiByZXF1ZXN0LmlzX3VudmVyaWZpYWJsZSgpIGFuZCBpc190aGlyZF9wYXJ0eShyZXF1ZXN0KToKKyAgICAgICAgaWYgcmVxdWVzdC51bnZlcmlmaWFibGUgYW5kIGlzX3RoaXJkX3BhcnR5KHJlcXVlc3QpOgogICAgICAgICAgICAgaWYgY29va2llLnZlcnNpb24gPiAwIGFuZCBzZWxmLnN0cmljdF9yZmMyOTY1X3VudmVyaWZpYWJsZToKICAgICAgICAgICAgICAgICBfZGVidWcoIiAgIHRoaXJkLXBhcnR5IFJGQyAyOTY1IGNvb2tpZSBkdXJpbmcgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW52ZXJpZmlhYmxlIHRyYW5zYWN0aW9uIikKQEAgLTEwODgsNyArMTA4OCw3IEBACiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgcmV0dXJuX29rX3ZlcmlmaWFiaWxpdHkoc2VsZiwgY29va2llLCByZXF1ZXN0KToKLSAgICAgICAgaWYgcmVxdWVzdC5pc191bnZlcmlmaWFibGUoKSBhbmQgaXNfdGhpcmRfcGFydHkocmVxdWVzdCk6CisgICAgICAgIGlmIHJlcXVlc3QudW52ZXJpZmlhYmxlIGFuZCBpc190aGlyZF9wYXJ0eShyZXF1ZXN0KToKICAgICAgICAgICAgIGlmIGNvb2tpZS52ZXJzaW9uID4gMCBhbmQgc2VsZi5zdHJpY3RfcmZjMjk2NV91bnZlcmlmaWFibGU6CiAgICAgICAgICAgICAgICAgX2RlYnVnKCIgICB0aGlyZC1wYXJ0eSBSRkMgMjk2NSBjb29raWUgZHVyaW5nIHVudmVyaWZpYWJsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc2FjdGlvbiIpCkBAIC0xMTAwLDcgKzExMDAsNyBAQAogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHJldHVybl9va19zZWN1cmUoc2VsZiwgY29va2llLCByZXF1ZXN0KToKLSAgICAgICAgaWYgY29va2llLnNlY3VyZSBhbmQgcmVxdWVzdC5nZXRfdHlwZSgpICE9ICJodHRwcyI6CisgICAgICAgIGlmIGNvb2tpZS5zZWN1cmUgYW5kIHJlcXVlc3QudHlwZSAhPSAiaHR0cHMiOgogICAgICAgICAgICAgX2RlYnVnKCIgICBzZWN1cmUgY29va2llIHdpdGggbm9uLXNlY3VyZSByZXF1ZXN0IikKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llcy5weSBiL0xpYi9odHRwL2Nvb2tpZXMucHkKaW5kZXggZGRiY2JmOC4uZDI5MTY3OCAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY29va2llcy5weQorKysgYi9MaWIvaHR0cC9jb29raWVzLnB5CkBAIC0xNTksNyArMTU5LDcgQEAKICMgICAgICAgX0xlZ2FsQ2hhcnMgICAgICAgaXMgdGhlIGxpc3Qgb2YgY2hhcnMgd2hpY2ggZG9uJ3QgcmVxdWlyZSAiJ3MKICMgICAgICAgX1RyYW5zbGF0b3IgICAgICAgaGFzaC10YWJsZSBmb3IgZmFzdCBxdW90aW5nCiAjCi1fTGVnYWxDaGFycyAgICAgICA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICIhIyQlJicqKy0uXl9gfH4iCitfTGVnYWxDaGFycyAgICAgICA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICIhIyQlJicqKy0uXl9gfH46IgogX1RyYW5zbGF0b3IgICAgICAgPSB7CiAgICAgJ1wwMDAnIDogJ1xcMDAwJywgICdcMDAxJyA6ICdcXDAwMScsICAnXDAwMicgOiAnXFwwMDInLAogICAgICdcMDAzJyA6ICdcXDAwMycsICAnXDAwNCcgOiAnXFwwMDQnLCAgJ1wwMDUnIDogJ1xcMDA1JywKZGlmZiAtLWdpdCBhL0xpYi9odHRwL3NlcnZlci5weSBiL0xpYi9odHRwL3NlcnZlci5weQppbmRleCA1NTY5MDM3Li5jNGFjNzAzIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9zZXJ2ZXIucHkKKysrIGIvTGliL2h0dHAvc2VydmVyLnB5CkBAIC0xMDAsMTEgKzEwMCwxNCBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB1cmxsaWIucGFyc2UKIGltcG9ydCBjb3B5CitpbXBvcnQgYXJncGFyc2UKKwogCiAjIERlZmF1bHQgZXJyb3IgbWVzc2FnZSB0ZW1wbGF0ZQogREVGQVVMVF9FUlJPUl9NRVNTQUdFID0gIiIiXAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgogICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Cis8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+CiAgICAgICAgIDx0aXRsZT5FcnJvciByZXNwb25zZTwvdGl0bGU+CkBAIC0zNTIsNiArMzU1LDcgQEAKIAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlX29ubHkoMTAwKQorICAgICAgICBzZWxmLmZsdXNoX2hlYWRlcnMoKQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIGhhbmRsZV9vbmVfcmVxdWVzdChzZWxmKToKQEAgLTQyOSw3ICs0MzMsOCBAQAogICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShjb250ZW50LmVuY29kZSgnVVRGLTgnLCAncmVwbGFjZScpKQogCiAgICAgZGVmIHNlbmRfcmVzcG9uc2Uoc2VsZiwgY29kZSwgbWVzc2FnZT1Ob25lKToKLSAgICAgICAgIiIiU2VuZCB0aGUgcmVzcG9uc2UgaGVhZGVyIGFuZCBsb2cgdGhlIHJlc3BvbnNlIGNvZGUuCisgICAgICAgICIiIkFkZCB0aGUgcmVzcG9uc2UgaGVhZGVyIHRvIHRoZSBoZWFkZXJzIGJ1ZmZlciBhbmQgbG9nIHRoZQorICAgICAgICByZXNwb25zZSBjb2RlLgogCiAgICAgICAgIEFsc28gc2VuZCB0d28gc3RhbmRhcmQgaGVhZGVycyB3aXRoIHRoZSBzZXJ2ZXIgc29mdHdhcmUKICAgICAgICAgdmVyc2lvbiBhbmQgdGhlIGN1cnJlbnQgZGF0ZS4KQEAgLTQ0OCwxNiArNDUzLDE5IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJwogICAgICAgICBpZiBzZWxmLnJlcXVlc3RfdmVyc2lvbiAhPSAnSFRUUC8wLjknOgotICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZSgoIiVzICVkICVzXHJcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYucHJvdG9jb2xfdmVyc2lvbiwgY29kZSwgbWVzc2FnZSkpLmVuY29kZSgnbGF0aW4xJywgJ3N0cmljdCcpKQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19oZWFkZXJzX2J1ZmZlcicpOgorICAgICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyID0gW10KKyAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyLmFwcGVuZCgoIiVzICVkICVzXHJcbiIgJQorICAgICAgICAgICAgICAgICAgICAoc2VsZi5wcm90b2NvbF92ZXJzaW9uLCBjb2RlLCBtZXNzYWdlKSkuZW5jb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGluLTEnLCAnc3RyaWN0JykpCiAKICAgICBkZWYgc2VuZF9oZWFkZXIoc2VsZiwga2V5d29yZCwgdmFsdWUpOgotICAgICAgICAiIiJTZW5kIGEgTUlNRSBoZWFkZXIuIiIiCisgICAgICAgICIiIlNlbmQgYSBNSU1FIGhlYWRlciB0byB0aGUgaGVhZGVycyBidWZmZXIuIiIiCiAgICAgICAgIGlmIHNlbGYucmVxdWVzdF92ZXJzaW9uICE9ICdIVFRQLzAuOSc6CiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIgPSBbXQogICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICgiJXM6ICVzXHJcbiIgJSAoa2V5d29yZCwgdmFsdWUpKS5lbmNvZGUoJ2xhdGluMScsICdzdHJpY3QnKSkKKyAgICAgICAgICAgICAgICAoIiVzOiAlc1xyXG4iICUgKGtleXdvcmQsIHZhbHVlKSkuZW5jb2RlKCdsYXRpbi0xJywgJ3N0cmljdCcpKQogCiAgICAgICAgIGlmIGtleXdvcmQubG93ZXIoKSA9PSAnY29ubmVjdGlvbic6CiAgICAgICAgICAgICBpZiB2YWx1ZS5sb3dlcigpID09ICdjbG9zZSc6CkBAIC00NjksNiArNDc3LDEwIEBACiAgICAgICAgICIiIlNlbmQgdGhlIGJsYW5rIGxpbmUgZW5kaW5nIHRoZSBNSU1FIGhlYWRlcnMuIiIiCiAgICAgICAgIGlmIHNlbGYucmVxdWVzdF92ZXJzaW9uICE9ICdIVFRQLzAuOSc6CiAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlci5hcHBlbmQoYiJcclxuIikKKyAgICAgICAgICAgIHNlbGYuZmx1c2hfaGVhZGVycygpCisKKyAgICBkZWYgZmx1c2hfaGVhZGVycyhzZWxmKToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKGIiIi5qb2luKHNlbGYuX2hlYWRlcnNfYnVmZmVyKSkKICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyID0gW10KIApAQCAtNTE0LDcgKzUyNiw3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzIC0gLSBbJXNdICVzXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5jbGllbnRfYWRkcmVzc1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5hZGRyZXNzX3N0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ19kYXRlX3RpbWVfc3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCVhcmdzKSkKIApAQCAtNTQ4LDE1ICs1NjAsOSBAQAogICAgICAgICAgICAgICAgICAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXQogCiAgICAgZGVmIGFkZHJlc3Nfc3RyaW5nKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGNsaWVudCBhZGRyZXNzIGZvcm1hdHRlZCBmb3IgbG9nZ2luZy4KKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjbGllbnQgYWRkcmVzcy4iIiIKIAotICAgICAgICBUaGlzIHZlcnNpb24gbG9va3MgdXAgdGhlIGZ1bGwgaG9zdG5hbWUgdXNpbmcgZ2V0aG9zdGJ5YWRkcigpLAotICAgICAgICBhbmQgdHJpZXMgdG8gZmluZCBhIG5hbWUgdGhhdCBjb250YWlucyBhdCBsZWFzdCBvbmUgZG90LgotCi0gICAgICAgICIiIgotCi0gICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLmNsaWVudF9hZGRyZXNzWzoyXQotICAgICAgICByZXR1cm4gc29ja2V0LmdldGZxZG4oaG9zdCkKKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpZW50X2FkZHJlc3NbMF0KIAogICAgICMgRXNzZW50aWFsbHkgc3RhdGljIGNsYXNzIHZhcmlhYmxlcwogCkBAIC01NjksNyArNTc1LDcgQEAKIAogICAgICMgVGFibGUgbWFwcGluZyByZXNwb25zZSBjb2RlcyB0byBtZXNzYWdlczsgZW50cmllcyBoYXZlIHRoZQogICAgICMgZm9ybSB7Y29kZTogKHNob3J0bWVzc2FnZSwgbG9uZ21lc3NhZ2UpfS4KLSAgICAjIFNlZSBSRkMgMjYxNi4KKyAgICAjIFNlZSBSRkMgMjYxNiBhbmQgNjU4NS4KICAgICByZXNwb25zZXMgPSB7CiAgICAgICAgIDEwMDogKCdDb250aW51ZScsICdSZXF1ZXN0IHJlY2VpdmVkLCBwbGVhc2UgY29udGludWUnKSwKICAgICAgICAgMTAxOiAoJ1N3aXRjaGluZyBQcm90b2NvbHMnLApAQCAtNjI0LDYgKzYzMCwxMiBAQAogICAgICAgICAgICAgICAnQ2Fubm90IHNhdGlzZnkgcmVxdWVzdCByYW5nZS4nKSwKICAgICAgICAgNDE3OiAoJ0V4cGVjdGF0aW9uIEZhaWxlZCcsCiAgICAgICAgICAgICAgICdFeHBlY3QgY29uZGl0aW9uIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQuJyksCisgICAgICAgIDQyODogKCdQcmVjb25kaXRpb24gUmVxdWlyZWQnLAorICAgICAgICAgICAgICAnVGhlIG9yaWdpbiBzZXJ2ZXIgcmVxdWlyZXMgdGhlIHJlcXVlc3QgdG8gYmUgY29uZGl0aW9uYWwuJyksCisgICAgICAgIDQyOTogKCdUb28gTWFueSBSZXF1ZXN0cycsICdUaGUgdXNlciBoYXMgc2VudCB0b28gbWFueSByZXF1ZXN0cyAnCisgICAgICAgICAgICAgICdpbiBhIGdpdmVuIGFtb3VudCBvZiB0aW1lICgicmF0ZSBsaW1pdGluZyIpLicpLAorICAgICAgICA0MzE6ICgnUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZScsICdUaGUgc2VydmVyIGlzIHVud2lsbGluZyB0byAnCisgICAgICAgICAgICAgICdwcm9jZXNzIHRoZSByZXF1ZXN0IGJlY2F1c2UgaXRzIGhlYWRlciBmaWVsZHMgYXJlIHRvbyBsYXJnZS4nKSwKIAogICAgICAgICA1MDA6ICgnSW50ZXJuYWwgU2VydmVyIEVycm9yJywgJ1NlcnZlciBnb3QgaXRzZWxmIGluIHRyb3VibGUnKSwKICAgICAgICAgNTAxOiAoJ05vdCBJbXBsZW1lbnRlZCcsCkBAIC02MzQsNiArNjQ2LDggQEAKICAgICAgICAgNTA0OiAoJ0dhdGV3YXkgVGltZW91dCcsCiAgICAgICAgICAgICAgICdUaGUgZ2F0ZXdheSBzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIGEgdGltZWx5IHJlc3BvbnNlJyksCiAgICAgICAgIDUwNTogKCdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsICdDYW5ub3QgZnVsZmlsbCByZXF1ZXN0LicpLAorICAgICAgICA1MTE6ICgnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCisgICAgICAgICAgICAgICdUaGUgY2xpZW50IG5lZWRzIHRvIGF1dGhlbnRpY2F0ZSB0byBnYWluIG5ldHdvcmsgYWNjZXNzLicpLAogICAgICAgICB9CiAKIApAQCAtNzIyLDEwICs3MzYsMTYgQEAKICAgICAgICAgbGlzdC5zb3J0KGtleT1sYW1iZGEgYTogYS5sb3dlcigpKQogICAgICAgICByID0gW10KICAgICAgICAgZGlzcGxheXBhdGggPSBodG1sLmVzY2FwZSh1cmxsaWIucGFyc2UudW5xdW90ZShzZWxmLnBhdGgpKQotICAgICAgICByLmFwcGVuZCgnPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPicpCi0gICAgICAgIHIuYXBwZW5kKCI8aHRtbD5cbjx0aXRsZT5EaXJlY3RvcnkgbGlzdGluZyBmb3IgJXM8L3RpdGxlPlxuIiAlIGRpc3BsYXlwYXRoKQotICAgICAgICByLmFwcGVuZCgiPGJvZHk+XG48aDI+RGlyZWN0b3J5IGxpc3RpbmcgZm9yICVzPC9oMj5cbiIgJSBkaXNwbGF5cGF0aCkKLSAgICAgICAgci5hcHBlbmQoIjxocj5cbjx1bD5cbiIpCisgICAgICAgIGVuYyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQorICAgICAgICB0aXRsZSA9ICdEaXJlY3RvcnkgbGlzdGluZyBmb3IgJXMnICUgZGlzcGxheXBhdGgKKyAgICAgICAgci5hcHBlbmQoJzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgJworICAgICAgICAgICAgICAgICAnImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPicpCisgICAgICAgIHIuYXBwZW5kKCc8aHRtbD5cbjxoZWFkPicpCisgICAgICAgIHIuYXBwZW5kKCc8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0lcyI+JyAlIGVuYykKKyAgICAgICAgci5hcHBlbmQoJzx0aXRsZT4lczwvdGl0bGU+XG48L2hlYWQ+JyAlIHRpdGxlKQorICAgICAgICByLmFwcGVuZCgnPGJvZHk+XG48aDE+JXM8L2gxPicgJSB0aXRsZSkKKyAgICAgICAgci5hcHBlbmQoJzxocj5cbjx1bD4nKQogICAgICAgICBmb3IgbmFtZSBpbiBsaXN0OgogICAgICAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKICAgICAgICAgICAgIGRpc3BsYXluYW1lID0gbGlua25hbWUgPSBuYW1lCkBAIC03MzYsMTEgKzc1NiwxMCBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoZnVsbG5hbWUpOgogICAgICAgICAgICAgICAgIGRpc3BsYXluYW1lID0gbmFtZSArICJAIgogICAgICAgICAgICAgICAgICMgTm90ZTogYSBsaW5rIHRvIGEgZGlyZWN0b3J5IGRpc3BsYXlzIHdpdGggQCBhbmQgbGlua3Mgd2l0aCAvCi0gICAgICAgICAgICByLmFwcGVuZCgnPGxpPjxhIGhyZWY9IiVzIj4lczwvYT5cbicKKyAgICAgICAgICAgIHIuYXBwZW5kKCc8bGk+PGEgaHJlZj0iJXMiPiVzPC9hPjwvbGk+JwogICAgICAgICAgICAgICAgICAgICAlICh1cmxsaWIucGFyc2UucXVvdGUobGlua25hbWUpLCBodG1sLmVzY2FwZShkaXNwbGF5bmFtZSkpKQotICAgICAgICByLmFwcGVuZCgiPC91bD5cbjxocj5cbjwvYm9keT5cbjwvaHRtbD5cbiIpCi0gICAgICAgIGVuYyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQotICAgICAgICBlbmNvZGVkID0gJycuam9pbihyKS5lbmNvZGUoZW5jKQorICAgICAgICByLmFwcGVuZCgnPC91bD5cbjxocj5cbjwvYm9keT5cbjwvaHRtbD5cbicpCisgICAgICAgIGVuY29kZWQgPSAnXG4nLmpvaW4ocikuZW5jb2RlKGVuYykKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQogICAgICAgICBmLndyaXRlKGVuY29kZWQpCiAgICAgICAgIGYuc2VlaygwKQpAQCAtODg4LDExICs5MDcsNyBAQAogCiBkZWYgZXhlY3V0YWJsZShwYXRoKToKICAgICAiIiJUZXN0IGZvciBleGVjdXRhYmxlIGZpbGUuIiIiCi0gICAgdHJ5OgotICAgICAgICBzdCA9IG9zLnN0YXQocGF0aCkKLSAgICBleGNlcHQgb3MuZXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBzdC5zdF9tb2RlICYgMG8xMTEgIT0gMAorICAgIHJldHVybiBvcy5hY2Nlc3MocGF0aCwgb3MuWF9PSykKIAogCiBjbGFzcyBDR0lIVFRQUmVxdWVzdEhhbmRsZXIoU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKToKQEAgLTEwMDgsNyArMTAyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0bmFtZSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpc3B5ID0gc2VsZi5pc19weXRob24oc2NyaXB0bmFtZSkKLSAgICAgICAgaWYgbm90IGlzcHk6CisgICAgICAgIGlmIHNlbGYuaGF2ZV9mb3JrIG9yIG5vdCBpc3B5OgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaXNfZXhlY3V0YWJsZShzY3JpcHRmaWxlKToKICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAzLCAiQ0dJIHNjcmlwdCBpcyBub3QgZXhlY3V0YWJsZSAoJXIpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdG5hbWUpCkBAIC0xMDI5LDkgKzEwNDQsNiBAQAogICAgICAgICBlbnZbJ1NDUklQVF9OQU1FJ10gPSBzY3JpcHRuYW1lCiAgICAgICAgIGlmIHF1ZXJ5OgogICAgICAgICAgICAgZW52WydRVUVSWV9TVFJJTkcnXSA9IHF1ZXJ5Ci0gICAgICAgIGhvc3QgPSBzZWxmLmFkZHJlc3Nfc3RyaW5nKCkKLSAgICAgICAgaWYgaG9zdCAhPSBzZWxmLmNsaWVudF9hZGRyZXNzWzBdOgotICAgICAgICAgICAgZW52WydSRU1PVEVfSE9TVCddID0gaG9zdAogICAgICAgICBlbnZbJ1JFTU9URV9BRERSJ10gPSBzZWxmLmNsaWVudF9hZGRyZXNzWzBdCiAgICAgICAgIGF1dGhvcml6YXRpb24gPSBzZWxmLmhlYWRlcnMuZ2V0KCJhdXRob3JpemF0aW9uIikKICAgICAgICAgaWYgYXV0aG9yaXphdGlvbjoKQEAgLTEwODMsNiArMTA5NSw3IEBACiAgICAgICAgICAgICBlbnYuc2V0ZGVmYXVsdChrLCAiIikKIAogICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwLCAiU2NyaXB0IG91dHB1dCBmb2xsb3dzIikKKyAgICAgICAgc2VsZi5mbHVzaF9oZWFkZXJzKCkKIAogICAgICAgICBkZWNvZGVkX3F1ZXJ5ID0gcXVlcnkucmVwbGFjZSgnKycsICcgJykKIApAQCAtMTE2MiwxOCArMTE3NSwxMyBAQAogCiAKIGRlZiB0ZXN0KEhhbmRsZXJDbGFzcyA9IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICBTZXJ2ZXJDbGFzcyA9IEhUVFBTZXJ2ZXIsIHByb3RvY29sPSJIVFRQLzEuMCIpOgorICAgICAgICAgU2VydmVyQ2xhc3MgPSBIVFRQU2VydmVyLCBwcm90b2NvbD0iSFRUUC8xLjAiLCBwb3J0PTgwMDApOgogICAgICIiIlRlc3QgdGhlIEhUVFAgcmVxdWVzdCBoYW5kbGVyIGNsYXNzLgogCiAgICAgVGhpcyBydW5zIGFuIEhUVFAgc2VydmVyIG9uIHBvcnQgODAwMCAob3IgdGhlIGZpcnN0IGNvbW1hbmQgbGluZQogICAgIGFyZ3VtZW50KS4KIAogICAgICIiIgotCi0gICAgaWYgc3lzLmFyZ3ZbMTpdOgotICAgICAgICBwb3J0ID0gaW50KHN5cy5hcmd2WzFdKQotICAgIGVsc2U6Ci0gICAgICAgIHBvcnQgPSA4MDAwCiAgICAgc2VydmVyX2FkZHJlc3MgPSAoJycsIHBvcnQpCiAKICAgICBIYW5kbGVyQ2xhc3MucHJvdG9jb2xfdmVyc2lvbiA9IHByb3RvY29sCkBAIC0xMTg5LDQgKzExOTcsMTUgQEAKICAgICAgICAgc3lzLmV4aXQoMCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0KEhhbmRsZXJDbGFzcz1TaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIpCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2dpJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUnVuIGFzIENHSSBTZXJ2ZXInKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3BvcnQnLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ODAwMCwgdHlwZT1pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBuYXJncz0nPycsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZ5IGFsdGVybmF0ZSBwb3J0IFtkZWZhdWx0OiA4MDAwXScpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBhcmdzLmNnaToKKyAgICAgICAgdGVzdChIYW5kbGVyQ2xhc3M9Q0dJSFRUUFJlcXVlc3RIYW5kbGVyLCBwb3J0PWFyZ3MucG9ydCkKKyAgICBlbHNlOgorICAgICAgICB0ZXN0KEhhbmRsZXJDbGFzcz1TaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIsIHBvcnQ9YXJncy5wb3J0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5IGIvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5CmluZGV4IGU0YzFhZmYuLjkyOWQzNTggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weQorKysgYi9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGUucHkKQEAgLTksOSArOSw2IEBACiAKIGZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgogCi0jIFRoaXMgc3RyaW5nIGluY2x1ZGVzIGFsbCBjaGFycyB0aGF0IG1heSBiZSBpbiBhIGZpbGUgbmFtZSAod2l0aG91dCBhIHBhdGgKLSMgc2VwYXJhdG9yKQotRklMRU5BTUVfQ0hBUlMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyBvcy5jdXJkaXIgKyAiLl9+IyQ6LSIKICMgVGhpcyBzdHJpbmcgaW5jbHVkZXMgYWxsIGNoYXJzIHRoYXQgbWF5IGJlIGluIGFuIGlkZW50aWZpZXIKIElEX0NIQVJTID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKaW5kZXggZTE4ODE5Mi4uZTRjY2I0MiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKQEAgLTIxLDEwICsyMSwxMSBAQAogICAgICMgMXN0ICdmaWxlJyBjb2xvcml6ZWQgbm9ybWFsLCAybmQgYXMgYnVpbHRpbiwgM3JkIGFzIHN0cmluZwogICAgIGJ1aWx0aW4gPSByIihbXi4nXCJcXCNdXGJ8XikiICsgYW55KCJCVUlMVElOIiwgYnVpbHRpbmxpc3QpICsgciJcYiIKICAgICBjb21tZW50ID0gYW55KCJDT01NRU5UIiwgW3IiI1teXG5dKiJdKQotICAgIHNxc3RyaW5nID0gciIoXGJbclJiQl0pPydbXidcXFxuXSooXFwuW14nXFxcbl0qKSonPyIKLSAgICBkcXN0cmluZyA9IHInKFxiW3JSYkJdKT8iW14iXFxcbl0qKFxcLlteIlxcXG5dKikqIj8nCi0gICAgc3Ezc3RyaW5nID0gciIoXGJbclJiQl0pPycnJ1teJ1xcXSooKFxcLnwnKD8hJycpKVteJ1xcXSopKignJycpPyIKLSAgICBkcTNzdHJpbmcgPSByJyhcYltyUmJCXSk/IiIiW14iXFxdKigoXFwufCIoPyEiIikpW14iXFxdKikqKCIiIik/JworICAgIHN0cmluZ3ByZWZpeCA9IHIiKFxicnx1fHVyfFJ8VXxVUnxVcnx1UnxifEJ8YnJ8QnJ8YlJ8QlJ8cmJ8ckJ8UmJ8UkIpPyIKKyAgICBzcXN0cmluZyA9IHN0cmluZ3ByZWZpeCArIHIiJ1teJ1xcXG5dKihcXC5bXidcXFxuXSopKic/IgorICAgIGRxc3RyaW5nID0gc3RyaW5ncHJlZml4ICsgciciW14iXFxcbl0qKFxcLlteIlxcXG5dKikqIj8nCisgICAgc3Ezc3RyaW5nID0gc3RyaW5ncHJlZml4ICsgciInJydbXidcXF0qKChcXC58Jyg/IScnKSlbXidcXF0qKSooJycnKT8iCisgICAgZHEzc3RyaW5nID0gc3RyaW5ncHJlZml4ICsgciciIiJbXiJcXF0qKChcXC58Iig/ISIiKSlbXiJcXF0qKSooIiIiKT8nCiAgICAgc3RyaW5nID0gYW55KCJTVFJJTkciLCBbc3Ezc3RyaW5nLCBkcTNzdHJpbmcsIHNxc3RyaW5nLCBkcXN0cmluZ10pCiAgICAgcmV0dXJuIGt3ICsgInwiICsgYnVpbHRpbiArICJ8IiArIGNvbW1lbnQgKyAifCIgKyBzdHJpbmcgK1wKICAgICAgICAgICAgInwiICsgYW55KCJTWU5DIiwgW3IiXG4iXSkKQEAgLTE0OSw5ICsxNTAsOSBAQAogICAgICAgICAgICAgc2VsZi5zdG9wX2NvbG9yaXppbmcgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5jb2xvcml6aW5nID0gVHJ1ZQogICAgICAgICAgICAgaWYgREVCVUc6IHByaW50KCJjb2xvcml6aW5nLi4uIikKLSAgICAgICAgICAgIHQwID0gdGltZS5jbG9jaygpCisgICAgICAgICAgICB0MCA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICAgICAgICAgIHNlbGYucmVjb2xvcml6ZV9tYWluKCkKLSAgICAgICAgICAgIHQxID0gdGltZS5jbG9jaygpCisgICAgICAgICAgICB0MSA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICAgICAgICAgIGlmIERFQlVHOiBwcmludCgiJS4zZiBzZWNvbmRzIiAlICh0MS10MCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLmNvbG9yaXppbmcgPSBGYWxzZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5IGIvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5CmluZGV4IGJlYzIxOTEuLjZiZGNlY2MgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9FZGl0b3JXaW5kb3cucHkKQEAgLTEsOCArMSw5IEBACi1pbXBvcnQgc3lzCitpbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwotaW1wb3J0IGltcAoraW1wb3J0IHN5cwogZnJvbSB0a2ludGVyIGltcG9ydCAqCiBpbXBvcnQgdGtpbnRlci5zaW1wbGVkaWFsb2cgYXMgdGtTaW1wbGVEaWFsb2cKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CkBAIC0yNyw4ICsyOCw3IEBACiAgICAgIkZvcm1hdCBzeXMudmVyc2lvbl9pbmZvIHRvIHByb2R1Y2UgdGhlIFNwaGlueCB2ZXJzaW9uIHN0cmluZyB1c2VkIHRvIGluc3RhbGwgdGhlIGNobSBkb2NzIgogICAgIG1ham9yLCBtaW5vciwgbWljcm8sIGxldmVsLCBzZXJpYWwgPSBzeXMudmVyc2lvbl9pbmZvCiAgICAgcmVsZWFzZSA9ICclcyVzJyAlIChtYWpvciwgbWlub3IpCi0gICAgaWYgbWljcm86Ci0gICAgICAgIHJlbGVhc2UgKz0gJyVzJyAlIChtaWNybywpCisgICAgcmVsZWFzZSArPSAnJXMnICUgKG1pY3JvLCkKICAgICBpZiBsZXZlbCA9PSAnY2FuZGlkYXRlJzoKICAgICAgICAgcmVsZWFzZSArPSAncmMlcycgJSAoc2VyaWFsLCkKICAgICBlbGlmIGxldmVsICE9ICdmaW5hbCc6CkBAIC0xMjAsNyArMTIwLDcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lLCBmaWxlbmFtZT1Ob25lLCBrZXk9Tm9uZSwgcm9vdD1Ob25lKToKICAgICAgICAgaWYgRWRpdG9yV2luZG93LmhlbHBfdXJsIGlzIE5vbmU6Ci0gICAgICAgICAgICBkb2Nob21lID0gIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnRG9jJywgJ2luZGV4Lmh0bWwnKQorICAgICAgICAgICAgZG9jaG9tZSA9ICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAnRG9jJywgJ2luZGV4Lmh0bWwnKQogICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLmNvdW50KCdsaW51eCcpOgogICAgICAgICAgICAgICAgICMgbG9vayBmb3IgaHRtbCBkb2NzIGluIGEgY291cGxlIG9mIHN0YW5kYXJkIHBsYWNlcwogICAgICAgICAgICAgICAgIHB5dmVyID0gJ3B5dGhvbi1kb2NzLScgKyAnJXMuJXMuJXMnICUgc3lzLnZlcnNpb25faW5mb1s6M10KQEAgLTEzMSwxMyArMTMxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGRvY2hvbWUgPSBvcy5wYXRoLmpvaW4oYmFzZXBhdGgsIHB5dmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEb2MnLCAnaW5kZXguaHRtbCcpCiAgICAgICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6Ci0gICAgICAgICAgICAgICAgY2htZmlsZSA9IG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnRG9jJywKKyAgICAgICAgICAgICAgICBjaG1maWxlID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgJ0RvYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uJXMuY2htJyAlIF9zcGhpbnhfdmVyc2lvbigpKQogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGNobWZpbGUpOgogICAgICAgICAgICAgICAgICAgICBkb2Nob21lID0gY2htZmlsZQogICAgICAgICAgICAgZWxpZiBtYWNvc3hTdXBwb3J0LnJ1bm5pbmdBc09TWEFwcCgpOgogICAgICAgICAgICAgICAgICMgZG9jdW1lbnRhdGlvbiBpcyBzdG9yZWQgaW5zaWRlIHRoZSBweXRob24gZnJhbWV3b3JrCi0gICAgICAgICAgICAgICAgZG9jaG9tZSA9IG9zLnBhdGguam9pbihzeXMucHJlZml4LAorICAgICAgICAgICAgICAgIGRvY2hvbWUgPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgJ1Jlc291cmNlcy9FbmdsaXNoLmxwcm9qL0RvY3VtZW50YXRpb24vaW5kZXguaHRtbCcpCiAgICAgICAgICAgICBkb2Nob21lID0gb3MucGF0aC5ub3JtcGF0aChkb2Nob21lKQogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZG9jaG9tZSk6CkBAIC0xMDA1LDcgKzEwMDUsMTAgQEAKIAogICAgIGRlZiBsb2FkX2V4dGVuc2lvbihzZWxmLCBuYW1lKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbXSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLicgKyBuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHByaW50KCJcbkZhaWxlZCB0byBpbXBvcnQgZXh0ZW5zaW9uOiAiLCBuYW1lKQogICAgICAgICAgICAgcmFpc2UKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0lPQmluZGluZy5weSBiL0xpYi9pZGxlbGliL0lPQmluZGluZy5weQppbmRleCA5NTI4YzlhLi5lYzUwZWIyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5CkBAIC00ODUsNiArNDg1LDggQEAKICAgICAgICAgKCJBbGwgZmlsZXMiLCAiKiIpLAogICAgICAgICBdCiAKKyAgICBkZWZhdWx0ZXh0ZW5zaW9uID0gJy5weScgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGVsc2UgJycKKwogICAgIGRlZiBhc2tvcGVuZmlsZShzZWxmKToKICAgICAgICAgZGlyLCBiYXNlID0gc2VsZi5kZWZhdWx0ZmlsZW5hbWUoIm9wZW4iKQogICAgICAgICBpZiBub3Qgc2VsZi5vcGVuZGlhbG9nOgpAQCAtNTA4LDggKzUxMCwxMCBAQAogICAgIGRlZiBhc2tzYXZlZmlsZShzZWxmKToKICAgICAgICAgZGlyLCBiYXNlID0gc2VsZi5kZWZhdWx0ZmlsZW5hbWUoInNhdmUiKQogICAgICAgICBpZiBub3Qgc2VsZi5zYXZlZGlhbG9nOgotICAgICAgICAgICAgc2VsZi5zYXZlZGlhbG9nID0gdGtGaWxlRGlhbG9nLlNhdmVBcyhtYXN0ZXI9c2VsZi50ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxldHlwZXM9c2VsZi5maWxldHlwZXMpCisgICAgICAgICAgICBzZWxmLnNhdmVkaWFsb2cgPSB0a0ZpbGVEaWFsb2cuU2F2ZUFzKAorICAgICAgICAgICAgICAgICAgICBtYXN0ZXI9c2VsZi50ZXh0LAorICAgICAgICAgICAgICAgICAgICBmaWxldHlwZXM9c2VsZi5maWxldHlwZXMsCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRleHRlbnNpb249c2VsZi5kZWZhdWx0ZXh0ZW5zaW9uKQogICAgICAgICBmaWxlbmFtZSA9IHNlbGYuc2F2ZWRpYWxvZy5zaG93KGluaXRpYWxkaXI9ZGlyLCBpbml0aWFsZmlsZT1iYXNlKQogICAgICAgICByZXR1cm4gZmlsZW5hbWUKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTkVXUy50eHQgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dAppbmRleCAzMTYwYzc0Li5hMGM5NTdlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ORVdTLnR4dAorKysgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dApAQCAtMSwxMCArMSwxMyBAQAotV2hhdCdzIE5ldyBpbiBJRExFIDMuMi40PworV2hhdCdzIE5ldyBpbiBJRExFIDMuMy4wPwogPT09PT09PT09PT09PT09PT09PT09PT09PQogCiAtIElzc3VlICM3MTYzOiBQcm9wYWdhdGUgcmV0dXJuIHZhbHVlIG9mIHN5cy5zdGRvdXQud3JpdGUuCiAKIC0gSXNzdWUgIzE1MzE4OiBQcmV2ZW50IHdyaXRpbmcgdG8gc3lzLnN0ZGluLgogCistIElzc3VlICM0ODMyOiBNb2RpZnkgSURMRSB0byBzYXZlIGZpbGVzIHdpdGggLnB5IGV4dGVuc2lvbiBieQorICBkZWZhdWx0IG9uIFdpbmRvd3MgYW5kIE9TIFggKFRrIDguNSkgYXMgaXQgYWxyZWFkeSBkb2VzIHdpdGggWDExIFRrLgorCiAtIElzc3VlICMxMzUzMiwgIzE1MzE5OiBDaGVjayB0aGF0IGFyZ3VtZW50cyB0byBzeXMuc3Rkb3V0LndyaXRlIGFyZSBzdHJpbmdzLgogCiAtIElzc3VlICMgMTI1MTA6IEF0dGVtcHQgdG8gZ2V0IGNlcnRhaW4gdG9vbCB0aXBzIG5vIGxvbmdlciBjcmFzaGVzIElETEUuCkBAIC0xOCwxMiArMjEsMTAgQEAKIC0gSXNzdWUgIzE0OTM3OiBQZXJmb3JtIGF1dG8tY29tcGxldGlvbiBvZiBmaWxlbmFtZXMgaW4gc3RyaW5ncyBldmVuIGZvcgogICBub24tQVNDSUkgZmlsZW5hbWVzLiBMaWtld2lzZSBmb3IgaWRlbnRpZmllcnMuCiAKLS0gSXNzdWUgIzE0MDE4OiBVcGRhdGUgY2hlY2tzIGZvciB1bnN0YWJsZSBzeXN0ZW0gVGNsL1RrIHZlcnNpb25zIG9uIE9TIFgKLSAgdG8gaW5jbHVkZSB2ZXJzaW9ucyBzaGlwcGVkIHdpdGggT1MgWCAxMC43IGFuZCAxMC44IGluIGFkZGl0aW9uIHRvIDEwLjYuCistIElzc3VlICM4NTE1OiBTZXQgX19maWxlX18gd2hlbiBydW4gZmlsZSBpbiBJRExFLgorICBJbml0aWFsIHBhdGNoIGJ5IEJydWNlIEZyZWRlcmlrc2VuLgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjIuMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0gSURMRSBjYW4gYmUgbGF1bmNoZWQgYXMgYHB5dGhvbiAtbSBpZGxlbGliYAogCiAtIElzc3VlICMxNDQwOTogSURMRSBub3cgcHJvcGVybHkgZXhlY3V0ZXMgY29tbWFuZHMgaW4gdGhlIFNoZWxsIHdpbmRvdwogICB3aGVuIGl0IGNhbm5vdCByZWFkIHRoZSBub3JtYWwgY29uZmlnIGZpbGVzIG9uIHN0YXJ0dXAgYW5kCkBAIC0zMyw2ICszNCw5IEBACiAtIElzc3VlICMzNTczOiBJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzCiAgIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mIGZpbGUocykpLgogCistIElzc3VlICMxNDAxODogVXBkYXRlIGNoZWNrcyBmb3IgdW5zdGFibGUgc3lzdGVtIFRjbC9UayB2ZXJzaW9ucyBvbiBPUyBYCisgIHRvIGluY2x1ZGUgdmVyc2lvbnMgc2hpcHBlZCB3aXRoIE9TIFggMTAuNyBhbmQgMTAuOCBpbiBhZGRpdGlvbiB0byAxMC42LgorCiAKIFdoYXQncyBOZXcgaW4gSURMRSAzLjIuMT8KID09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5IGIvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKaW5kZXggZDg4YTQ4ZS4uOTk1NGYwNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiAKIGZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlSXRlbQogZnJvbSBpZGxlbGliLkNsYXNzQnJvd3NlciBpbXBvcnQgQ2xhc3NCcm93c2VyLCBNb2R1bGVCcm93c2VyVHJlZUl0ZW0KQEAgLTcwLDcgKzcxLDkgQEAKIAogICAgIGRlZiBsaXN0bW9kdWxlcyhzZWxmLCBhbGxuYW1lcyk6CiAgICAgICAgIG1vZHVsZXMgPSB7fQotICAgICAgICBzdWZmaXhlcyA9IGltcC5nZXRfc3VmZml4ZXMoKQorICAgICAgICBzdWZmaXhlcyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTWzpdCisgICAgICAgIHN1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTWzpdCisgICAgICAgIHN1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbOl0KICAgICAgICAgc29ydGVkID0gW10KICAgICAgICAgZm9yIHN1ZmYsIG1vZGUsIGZsYWcgaW4gc3VmZml4ZXM6CiAgICAgICAgICAgICBpID0gLWxlbihzdWZmKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weSBiL0xpYi9pZGxlbGliL1B5U2hlbGwucHkKaW5kZXggODhjMDM5MC4uNTBkNjE4MiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weQorKysgYi9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CkBAIC00NzcsNiArNDc3LDEwIEBACiAKICAgICBkZWYga2lsbF9zdWJwcm9jZXNzKHNlbGYpOgogICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnJwY2NsdC5saXN0ZW5pbmdfc29jay5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjogICMgbm8gc29ja2V0CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYucnBjY2x0LmNsb3NlKCkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAgIyBubyBzb2NrZXQKICAgICAgICAgICAgIHBhc3MKQEAgLTEwMDUsNiArMTAwOSw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBub3N1YiA9ICI9PT09IE5vIFN1YnByb2Nlc3MgPT09PSIKKyAgICAgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHJwYy5kaXNwbGF5aG9vaworCiAgICAgICAgIHNlbGYud3JpdGUoIlB5dGhvbiAlcyBvbiAlc1xuJXNcbiVzIiAlCiAgICAgICAgICAgICAgICAgICAgKHN5cy52ZXJzaW9uLCBzeXMucGxhdGZvcm0sIHNlbGYuQ09QWVJJR0hULCBub3N1YikpCiAgICAgICAgIHNlbGYuc2hvd3Byb21wdCgpCkBAIC0xMjI3LDYgKzEyMzMsMTYgQEAKICAgICAgICAgc2VsZi5zZXRfbGluZV9hbmRfY29sdW1uKCkKIAogICAgIGRlZiB3cml0ZShzZWxmLCBzLCB0YWdzPSgpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpIGFuZCBsZW4ocykgYW5kIG1heChzKSA+ICdcdWZmZmYnOgorICAgICAgICAgICAgIyBUayBkb2Vzbid0IHN1cHBvcnQgb3V0cHV0dGluZyBub24tQk1QIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICMgTGV0J3MgYXNzdW1lIHdoYXQgcHJpbnRlZCBzdHJpbmcgaXMgbm90IHZlcnkgbG9uZywKKyAgICAgICAgICAgICMgZmluZCBmaXJzdCBub24tQk1QIGNoYXJhY3RlciBhbmQgY29uc3RydWN0IGluZm9ybWF0aXZlCisgICAgICAgICAgICAjIFVuaWNvZGVFbmNvZGVFcnJvciBleGNlcHRpb24uCisgICAgICAgICAgICBmb3Igc3RhcnQsIGNoYXIgaW4gZW51bWVyYXRlKHMpOgorICAgICAgICAgICAgICAgIGlmIGNoYXIgPiAnXHVmZmZmJzoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJhaXNlIFVuaWNvZGVFbmNvZGVFcnJvcigiVUNTLTIiLCBjaGFyLCBzdGFydCwgc3RhcnQrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uLUJNUCBjaGFyYWN0ZXIgbm90IHN1cHBvcnRlZCBpbiBUaycpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYudGV4dC5tYXJrX2dyYXZpdHkoImlvbWFyayIsICJyaWdodCIpCiAgICAgICAgICAgICBjb3VudCA9IE91dHB1dFdpbmRvdy53cml0ZShzZWxmLCBzLCB0YWdzLCAiaW9tYXJrIikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkgYi9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5CmluZGV4IDE4Y2U5NjUuLjUyOGFkZjYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQpAQCAtMTUwLDE2ICsxNTAsMTYgQEAKICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKICAgICAgICAgIyBYWFggVG9vIG9mdGVuIHRoaXMgZGlzY2FyZHMgYXJndW1lbnRzIHRoZSB1c2VyIGp1c3Qgc2V0Li4uCiAgICAgICAgIGludGVycC5ydW5jb21tYW5kKCIiImlmIDE6Ci0gICAgICAgICAgICBfZmlsZW5hbWUgPSAlcgorICAgICAgICAgICAgX19maWxlX18gPSB7ZmlsZW5hbWUhcn0KICAgICAgICAgICAgIGltcG9ydCBzeXMgYXMgX3N5cwogICAgICAgICAgICAgZnJvbSBvcy5wYXRoIGltcG9ydCBiYXNlbmFtZSBhcyBfYmFzZW5hbWUKICAgICAgICAgICAgIGlmIChub3QgX3N5cy5hcmd2IG9yCi0gICAgICAgICAgICAgICAgX2Jhc2VuYW1lKF9zeXMuYXJndlswXSkgIT0gX2Jhc2VuYW1lKF9maWxlbmFtZSkpOgotICAgICAgICAgICAgICAgIF9zeXMuYXJndiA9IFtfZmlsZW5hbWVdCisgICAgICAgICAgICAgICAgX2Jhc2VuYW1lKF9zeXMuYXJndlswXSkgIT0gX2Jhc2VuYW1lKF9fZmlsZV9fKSk6CisgICAgICAgICAgICAgICAgX3N5cy5hcmd2ID0gW19fZmlsZV9fXQogICAgICAgICAgICAgaW1wb3J0IG9zIGFzIF9vcwotICAgICAgICAgICAgX29zLmNoZGlyKCVyKQotICAgICAgICAgICAgZGVsIF9maWxlbmFtZSwgX3N5cywgX2Jhc2VuYW1lLCBfb3MKLSAgICAgICAgICAgIFxuIiIiICUgKGZpbGVuYW1lLCBkaXJuYW1lKSkKKyAgICAgICAgICAgIF9vcy5jaGRpcih7ZGlybmFtZSFyfSkKKyAgICAgICAgICAgIGRlbCBfc3lzLCBfYmFzZW5hbWUsIF9vcworICAgICAgICAgICAgXG4iIiIuZm9ybWF0KGZpbGVuYW1lPWZpbGVuYW1lLCBkaXJuYW1lPWRpcm5hbWUpKQogICAgICAgICBpbnRlcnAucHJlcGVuZF9zeXNwYXRoKGZpbGVuYW1lKQogICAgICAgICAjIFhYWCBLQksgMDNKdWwwNCBXaGVuIHJ1biB3L28gc3VicHJvY2VzcywgcnVudGltZSB3YXJuaW5ncyBzdGlsbAogICAgICAgICAjICAgICAgICAgZ28gdG8gX19zdGRlcnJfXy4gIFdpdGggc3VicHJvY2VzcywgdGhleSBnbyB0byB0aGUgc2hlbGwuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9fX21haW5fXy5weSBiL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NjZmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9fX21haW5fXy5weQpAQCAtMCwwICsxLDkgQEAKKyIiIgorSURMRSBtYWluIGVudHJ5IHBvaW50CisKK1J1biBJRExFIGFzIHB5dGhvbiAtbSBpZGxlbGliCisiIiIKKworCitpbXBvcnQgaWRsZWxpYi5QeVNoZWxsCitpZGxlbGliLlB5U2hlbGwubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQppbmRleCBkYTkyNzI2Li40MDQ5MDA0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKQEAgLTE0NSw3ICsxNDUsOCBAQAogICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuYW1lKQogICAgICAgICAgICAgICAgIGNmZ0ZpbGUgPSBvcGVuKGZuYW1lLCAndycpCi0gICAgICAgICAgICBzZWxmLndyaXRlKGNmZ0ZpbGUpCisgICAgICAgICAgICB3aXRoIGNmZ0ZpbGU6CisgICAgICAgICAgICAgICAgc2VsZi53cml0ZShjZmdGaWxlKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5SZW1vdmVGaWxlKCkKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZXZlci5weSBiL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKaW5kZXggMTc0NTVkYi4uNGE2NWE4OCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZXZlci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CkBAIC0xICsxIEBACi1JRExFX1ZFUlNJT04gPSAiMy4yLjMiCitJRExFX1ZFUlNJT04gPSAiMy4zLjByYzEiCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5IGIvTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weQppbmRleCA5NjkwNDQyLi42NzA2OWZhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5CisrKyBiL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKQEAgLTEyLDEyICsxMiwyMiBAQAogZGVmIHJ1bm5pbmdBc09TWEFwcCgpOgogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBQeXRob24gaXMgcnVubmluZyBmcm9tIHdpdGhpbiBhbiBhcHAgb24gT1NYLgotICAgIElmIHNvLCBhc3N1bWUgdGhhdCBQeXRob24gd2FzIGJ1aWx0IHdpdGggQXF1YSBUY2wvVGsgcmF0aGVyIHRoYW4KLSAgICBYMTEgVGNsL1RrLgorICAgIElmIHNvLCB0aGUgdmFyaW91cyBPUyBYIGN1c3RvbWl6YXRpb25zIHdpbGwgYmUgdHJpZ2dlcmVkIGxhdGVyIChtZW51CisgICAgZml4dXAsIGV0IGFsKS4gIChPcmlnaW5hbGx5LCB0aGlzIHRlc3Qgd2FzIHN1cHBvc2VkIHRvIGNvbmRpdGlvbgorICAgIGJlaGF2aW9yIG9uIHdoZXRoZXIgSURMRSB3YXMgcnVubmluZyB1bmRlciBBcXVhIFRrIHJhdGhlciB0aGFuCisgICAgdW5kZXIgWDExIFRrIGJ1dCB0aGF0IGRvZXMgbm90IHdvcmsgc2luY2UgYSBmcmFtZXdvcmsgYnVpbGQKKyAgICBjb3VsZCBiZSBsaW5rZWQgd2l0aCBYMTEuICBGb3Igc2V2ZXJhbCByZWxlYXNlcywgdGhpcyB0ZXN0IGFjdHVhbGx5CisgICAgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiB3aGV0aGVyIElETEUgaXMgcnVubmluZyBmcm9tIGEgZnJhbWV3b3JrIG9yCisgICAgbm90LiAgQXMgYSBmdXR1cmUgZW5oYW5jZW1lbnQsIGl0IHNob3VsZCBiZSBjb25zaWRlcmVkIHdoZXRoZXIgdGhlcmUKKyAgICBzaG91bGQgYmUgYSBkaWZmZXJlbmNlIGJhc2VkIG9uIGZyYW1ld29yayBhbmQgYW55IG5lZWRlZCBYMTEgYWRhcHRpb25zCisgICAgc2hvdWxkIGJlIG1hZGUgZGVwZW5kZW50IG9uIGEgbmV3IGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgdGVzdHMgZm9yIFgxMS4pCiAgICAgIiIiCiAgICAgZ2xvYmFsIF9hcHBidW5kbGUKICAgICBpZiBfYXBwYnVuZGxlIGlzIE5vbmU6Ci0gICAgICAgIF9hcHBidW5kbGUgPSAoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAnLmFwcCcgaW4gc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIF9hcHBidW5kbGUgPSBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicKKyAgICAgICAgaWYgX2FwcGJ1bmRsZToKKyAgICAgICAgICAgIGltcG9ydCBzeXNjb25maWcKKyAgICAgICAgICAgIF9hcHBidW5kbGUgPSBib29sKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUFlUSE9ORlJBTUVXT1JLJykpCiAgICAgcmV0dXJuIF9hcHBidW5kbGUKIAogX2NhcmJvbmFxdWF0ayA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3JwYy5weSBiL0xpYi9pZGxlbGliL3JwYy5weQppbmRleCBkZWY0Mzk0Li43N2NiM2FjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ycGMucHkKKysrIGIvTGliL2lkbGVsaWIvcnBjLnB5CkBAIC00MCw2ICs0MCw3IEBACiBpbXBvcnQgY29weXJlZwogaW1wb3J0IHR5cGVzCiBpbXBvcnQgbWFyc2hhbAoraW1wb3J0IGJ1aWx0aW5zCiAKIAogZGVmIHVucGlja2xlX2NvZGUobXMpOgpAQCAtMTk2LDggKzE5NywxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiAoIkVSUk9SIiwgIlVuc3VwcG9ydGVkIG1lc3NhZ2UgdHlwZTogJXMiICUgaG93KQogICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CiAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmV0dXJuICgiQ0FMTEVYQyIsIGV4KQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBtc2cgPSAiKioqIEludGVybmFsIEVycm9yOiBycGMucHk6U29ja2V0SU8ubG9jYWxjYWxsKClcblxuIlwKICAgICAgICAgICAgICAgICAgICIgT2JqZWN0OiAlcyBcbiBNZXRob2Q6ICVzIFxuIEFyZ3M6ICVzXG4iCkBAIC0yNTcsNiArMjYyLDkgQEAKICAgICAgICAgaWYgaG93ID09ICJFUlJPUiI6CiAgICAgICAgICAgICBzZWxmLmRlYnVnKCJkZWNvZGVyZXNwb25zZTogSW50ZXJuYWwgRVJST1I6Iiwgd2hhdCkKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcih3aGF0KQorICAgICAgICBpZiBob3cgPT0gIkNBTExFWEMiOgorICAgICAgICAgICAgc2VsZi5kZWJ1ZygiZGVjb2RlcmVzcG9uc2U6IENhbGwgRXhjZXB0aW9uOiIsIHdoYXQpCisgICAgICAgICAgICByYWlzZSB3aGF0CiAgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKGhvdywgd2hhdCkKIAogICAgIGRlZiBkZWNvZGVfaW50ZXJydXB0aG9vayhzZWxmKToKQEAgLTU5NiwzICs2MDQsMjEgQEAKIAogIyBYWFggS0JLIDA5U2VwMDMgIFdlIG5lZWQgYSBwcm9wZXIgdW5pdCB0ZXN0IGZvciB0aGlzIG1vZHVsZS4gIFByZXZpb3VzbHkKICMgICAgICAgICAgICAgICAgICBleGlzdGluZyB0ZXN0IGNvZGUgd2FzIHJlbW92ZWQgYXQgUmV2IDEuMjcgKHIzNDA5OCkuCisKK2RlZiBkaXNwbGF5aG9vayh2YWx1ZSk6CisgICAgIiIiT3ZlcnJpZGUgc3RhbmRhcmQgZGlzcGxheSBob29rIHRvIHVzZSBub24tbG9jYWxlIGVuY29kaW5nIiIiCisgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisgICAgIyBTZXQgJ18nIHRvIE5vbmUgdG8gYXZvaWQgcmVjdXJzaW9uCisgICAgYnVpbHRpbnMuXyA9IE5vbmUKKyAgICB0ZXh0ID0gcmVwcih2YWx1ZSkKKyAgICB0cnk6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUodGV4dCkKKyAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAjIGxldCdzIHVzZSBhc2NpaSB3aGlsZSB1dGY4LWJtcCBjb2RlYyBkb2Vzbid0IHByZXNlbnQKKyAgICAgICAgZW5jb2RpbmcgPSAnYXNjaWknCisgICAgICAgIGJ5dGVzID0gdGV4dC5lbmNvZGUoZW5jb2RpbmcsICdiYWNrc2xhc2hyZXBsYWNlJykKKyAgICAgICAgdGV4dCA9IGJ5dGVzLmRlY29kZShlbmNvZGluZywgJ3N0cmljdCcpCisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUodGV4dCkKKyAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCisgICAgYnVpbHRpbnMuXyA9IHZhbHVlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ydW4ucHkgYi9MaWIvaWRsZWxpYi9ydW4ucHkKaW5kZXggNTM2NTY4MC4uOTg3MmFmNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvcnVuLnB5CisrKyBiL0xpYi9pZGxlbGliL3J1bi5weQpAQCAtNyw2ICs3LDcgQEAKIGltcG9ydCBfdGhyZWFkIGFzIHRocmVhZAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHF1ZXVlCitpbXBvcnQgdGtpbnRlcgogCiBmcm9tIGlkbGVsaWIgaW1wb3J0IENhbGxUaXBzCiBmcm9tIGlkbGVsaWIgaW1wb3J0IEF1dG9Db21wbGV0ZQpAQCAtMzksNiArNDAsMTcgQEAKICAgICAgICAgcmV0dXJuIHMKICAgICB3YXJuaW5ncy5mb3JtYXR3YXJuaW5nID0gaWRsZV9mb3JtYXR3YXJuaW5nX3N1YnByb2MKIAorCit0Y2wgPSB0a2ludGVyLlRjbCgpCisKKworZGVmIGhhbmRsZV90a19ldmVudHModGNsPXRjbCk6CisgICAgIiIiUHJvY2VzcyBhbnkgdGsgZXZlbnRzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIGRpc3BhdGNoZWQgaWYgdGtpbnRlcgorICAgIGhhcyBiZWVuIGltcG9ydGVkLCBhIHRjbCBpbnRlcnByZXRlciBoYXMgYmVlbiBjcmVhdGVkIGFuZCB0ayBoYXMgYmVlbgorICAgIGxvYWRlZC4iIiIKKyAgICB0Y2wuZXZhbCgidXBkYXRlIikKKworCiAjIFRocmVhZCBzaGFyZWQgZ2xvYmFsczogRXN0YWJsaXNoIGEgcXVldWUgYmV0d2VlbiBhIHN1YnRocmVhZCAod2hpY2ggaGFuZGxlcwogIyB0aGUgc29ja2V0KSBhbmQgdGhlIG1haW4gdGhyZWFkICh3aGljaCBydW5zIHVzZXIgY29kZSksIHBsdXMgZ2xvYmFsCiAjIGNvbXBsZXRpb24sIGV4aXQgYW5kIGludGVycnVwdGFibGUgKHRoZSBtYWluIHRocmVhZCkgZmxhZ3M6CkBAIC05NCw2ICsxMDYsNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlcSwgcmVxdWVzdCA9IHJwYy5yZXF1ZXN0X3F1ZXVlLmdldChibG9jaz1UcnVlLCB0aW1lb3V0PTAuMDUpCiAgICAgICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6CisgICAgICAgICAgICAgICAgaGFuZGxlX3RrX2V2ZW50cygpCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIG1ldGhvZCwgYXJncywga3dhcmdzID0gcmVxdWVzdAogICAgICAgICAgICAgcmV0ID0gbWV0aG9kKCphcmdzLCAqKmt3YXJncykKQEAgLTI5NSw2ICszMDgsNyBAQAogICAgICAgICBzeXMuc3RkaW4gPSBfUlBDSW5wdXRGaWxlKHNlbGYuY29uc29sZSkKICAgICAgICAgc3lzLnN0ZG91dCA9IF9SUENPdXRwdXRGaWxlKHNlbGYuZ2V0X3JlbW90ZV9wcm94eSgic3Rkb3V0IikpCiAgICAgICAgIHN5cy5zdGRlcnIgPSBfUlBDT3V0cHV0RmlsZShzZWxmLmdldF9yZW1vdGVfcHJveHkoInN0ZGVyciIpKQorICAgICAgICBzeXMuZGlzcGxheWhvb2sgPSBycGMuZGlzcGxheWhvb2sKICAgICAgICAgIyBwYWdlIGhlbHAoKSB0ZXh0IHRvIHNoZWxsLgogICAgICAgICBpbXBvcnQgcHlkb2MgIyBpbXBvcnQgbXVzdCBiZSBkb25lIGhlcmUgdG8gY2FwdHVyZSBpL28gYmluZGluZwogICAgICAgICBweWRvYy5wYWdlciA9IHB5ZG9jLnBsYWlucGFnZXIKZGlmZiAtLWdpdCBhL0xpYi9pbWFwbGliLnB5IGIvTGliL2ltYXBsaWIucHkKaW5kZXggYzAzMzRkOC4uZTE2ZmI5NSAxMDA2NDQKLS0tIGEvTGliL2ltYXBsaWIucHkKKysrIGIvTGliL2ltYXBsaWIucHkKQEAgLTIzLDcgKzIzLDcgQEAKIF9fdmVyc2lvbl9fID0gIjIuNTgiCiAKIGltcG9ydCBiaW5hc2NpaSwgZXJybm8sIHJhbmRvbSwgcmUsIHNvY2tldCwgc3VicHJvY2Vzcywgc3lzLCB0aW1lLCBjYWxlbmRhcgotCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUsIHRpbWVkZWx0YQogdHJ5OgogICAgIGltcG9ydCBzc2wKICAgICBIQVZFX1NTTCA9IFRydWUKQEAgLTI0OSwxNSArMjQ5LDcgQEAKIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemUpOgogICAgICAgICAiIiJSZWFkICdzaXplJyBieXRlcyBmcm9tIHJlbW90ZS4iIiIKLSAgICAgICAgY2h1bmtzID0gW10KLSAgICAgICAgcmVhZCA9IDAKLSAgICAgICAgd2hpbGUgcmVhZCA8IHNpemU6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5maWxlLnJlYWQobWluKHNpemUtcmVhZCwgNDA5NikpCi0gICAgICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcmVhZCArPSBsZW4oZGF0YSkKLSAgICAgICAgICAgIGNodW5rcy5hcHBlbmQoZGF0YSkKLSAgICAgICAgcmV0dXJuIGInJy5qb2luKGNodW5rcykKKyAgICAgICAgcmV0dXJuIHNlbGYuZmlsZS5yZWFkKHNpemUpCiAKIAogICAgIGRlZiByZWFkbGluZShzZWxmKToKQEAgLTExNzcsMjUgKzExNjksNDAgQEAKIAogICAgICAgICAiIiJJTUFQNCBjbGllbnQgY2xhc3Mgb3ZlciBTU0wgY29ubmVjdGlvbgogCi0gICAgICAgIEluc3RhbnRpYXRlIHdpdGg6IElNQVA0X1NTTChbaG9zdFssIHBvcnRbLCBrZXlmaWxlWywgY2VydGZpbGVdXV1dKQorICAgICAgICBJbnN0YW50aWF0ZSB3aXRoOiBJTUFQNF9TU0woW2hvc3RbLCBwb3J0Wywga2V5ZmlsZVssIGNlcnRmaWxlWywgc3NsX2NvbnRleHRdXV1dXSkKIAogICAgICAgICAgICAgICAgIGhvc3QgLSBob3N0J3MgbmFtZSAoZGVmYXVsdDogbG9jYWxob3N0KTsKLSAgICAgICAgICAgICAgICBwb3J0IC0gcG9ydCBudW1iZXIgKGRlZmF1bHQ6IHN0YW5kYXJkIElNQVA0IFNTTCBwb3J0KS4KKyAgICAgICAgICAgICAgICBwb3J0IC0gcG9ydCBudW1iZXIgKGRlZmF1bHQ6IHN0YW5kYXJkIElNQVA0IFNTTCBwb3J0KTsKICAgICAgICAgICAgICAgICBrZXlmaWxlIC0gUEVNIGZvcm1hdHRlZCBmaWxlIHRoYXQgY29udGFpbnMgeW91ciBwcml2YXRlIGtleSAoZGVmYXVsdDogTm9uZSk7CiAgICAgICAgICAgICAgICAgY2VydGZpbGUgLSBQRU0gZm9ybWF0dGVkIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgKGRlZmF1bHQ6IE5vbmUpOworICAgICAgICAgICAgICAgIHNzbF9jb250ZXh0IC0gYSBTU0xDb250ZXh0IG9iamVjdCB0aGF0IGNvbnRhaW5zIHlvdXIgY2VydGlmaWNhdGUgY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwcml2YXRlIGtleSAoZGVmYXVsdDogTm9uZSkKKyAgICAgICAgICAgICAgICBOb3RlOiBpZiBzc2xfY29udGV4dCBpcyBwcm92aWRlZCwgdGhlbiBwYXJhbWV0ZXJzIGtleWZpbGUgb3IKKyAgICAgICAgICAgICAgICBjZXJ0ZmlsZSBzaG91bGQgbm90IGJlIHNldCBvdGhlcndpc2UgVmFsdWVFcnJvciBpcyB0aHJvd24uCiAKICAgICAgICAgZm9yIG1vcmUgZG9jdW1lbnRhdGlvbiBzZWUgdGhlIGRvY3N0cmluZyBvZiB0aGUgcGFyZW50IGNsYXNzIElNQVA0LgogICAgICAgICAiIiIKIAogCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0ID0gJycsIHBvcnQgPSBJTUFQNF9TU0xfUE9SVCwga2V5ZmlsZSA9IE5vbmUsIGNlcnRmaWxlID0gTm9uZSk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1NTTF9QT1JULCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUpOgorICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgbm90IE5vbmUgYW5kIGtleWZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3NsX2NvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIHNzbF9jb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzc2xfY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKwogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCisgICAgICAgICAgICBzZWxmLnNzbF9jb250ZXh0ID0gc3NsX2NvbnRleHQKICAgICAgICAgICAgIElNQVA0Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQpCiAKICAgICAgICAgZGVmIF9jcmVhdGVfc29ja2V0KHNlbGYpOgogICAgICAgICAgICAgc29jayA9IElNQVA0Ll9jcmVhdGVfc29ja2V0KHNlbGYpCi0gICAgICAgICAgICByZXR1cm4gc3NsLndyYXBfc29ja2V0KHNvY2ssIHNlbGYua2V5ZmlsZSwgc2VsZi5jZXJ0ZmlsZSkKKyAgICAgICAgICAgIGlmIHNlbGYuc3NsX2NvbnRleHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3NsX2NvbnRleHQud3JhcF9zb2NrZXQoc29jaykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNzbC53cmFwX3NvY2tldChzb2NrLCBzZWxmLmtleWZpbGUsIHNlbGYuY2VydGZpbGUpCiAKICAgICAgICAgZGVmIG9wZW4oc2VsZiwgaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCk6CiAgICAgICAgICAgICAiIiJTZXR1cCBjb25uZWN0aW9uIHRvIHJlbW90ZSBzZXJ2ZXIgb24gImhvc3Q6cG9ydCIuCkBAIC0xMzA2LDEwICsxMzEzLDggQEAKICAgICAgICAgICAgIHJldHVybiAnJwogICAgICAgICByZXR1cm4gYmluYXNjaWkuYTJiX2Jhc2U2NChpbnApCiAKLQotCi1Nb24ybnVtID0ge2InSmFuJzogMSwgYidGZWInOiAyLCBiJ01hcic6IDMsIGInQXByJzogNCwgYidNYXknOiA1LCBiJ0p1bic6IDYsCi0gICAgICAgICAgIGInSnVsJzogNywgYidBdWcnOiA4LCBiJ1NlcCc6IDksIGInT2N0JzogMTAsIGInTm92JzogMTEsIGInRGVjJzogMTJ9CitNb250aHMgPSAnIEphbiBGZWIgTWFyIEFwciBNYXkgSnVuIEp1bCBBdWcgU2VwIE9jdCBOb3YgRGVjJy5zcGxpdCgnICcpCitNb24ybnVtID0ge3MuZW5jb2RlKCk6bisxIGZvciBuLCBzIGluIGVudW1lcmF0ZShNb250aHNbMTpdKX0KIAogZGVmIEludGVybmFsZGF0ZTJ0dXBsZShyZXNwKToKICAgICAiIiJQYXJzZSBhbiBJTUFQNCBJTlRFUk5BTERBVEUgc3RyaW5nLgpAQCAtMTM3NywyOCArMTM4MiwzNyBAQAogICAgIFJldHVybiBzdHJpbmcgaW4gZm9ybTogJyJERC1NbW0tWVlZWSBISDpNTTpTUyArSEhNTSInLiAgVGhlCiAgICAgZGF0ZV90aW1lIGFyZ3VtZW50IGNhbiBiZSBhIG51bWJlciAoaW50IG9yIGZsb2F0KSByZXByZXNlbnRpbmcKICAgICBzZWNvbmRzIHNpbmNlIGVwb2NoIChhcyByZXR1cm5lZCBieSB0aW1lLnRpbWUoKSksIGEgOS10dXBsZQotICAgIHJlcHJlc2VudGluZyBsb2NhbCB0aW1lIChhcyByZXR1cm5lZCBieSB0aW1lLmxvY2FsdGltZSgpKSwgb3IgYQorICAgIHJlcHJlc2VudGluZyBsb2NhbCB0aW1lLCBhbiBpbnN0YW5jZSBvZiB0aW1lLnN0cnVjdF90aW1lIChhcworICAgIHJldHVybmVkIGJ5IHRpbWUubG9jYWx0aW1lKCkpLCBhbiBhd2FyZSBkYXRldGltZSBpbnN0YW5jZSBvciBhCiAgICAgZG91YmxlLXF1b3RlZCBzdHJpbmcuICBJbiB0aGUgbGFzdCBjYXNlLCBpdCBpcyBhc3N1bWVkIHRvIGFscmVhZHkKICAgICBiZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQuCiAgICAgIiIiCi0KICAgICBpZiBpc2luc3RhbmNlKGRhdGVfdGltZSwgKGludCwgZmxvYXQpKToKLSAgICAgICAgdHQgPSB0aW1lLmxvY2FsdGltZShkYXRlX3RpbWUpCi0gICAgZWxpZiBpc2luc3RhbmNlKGRhdGVfdGltZSwgKHR1cGxlLCB0aW1lLnN0cnVjdF90aW1lKSk6Ci0gICAgICAgIHR0ID0gZGF0ZV90aW1lCisgICAgICAgIGR0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChkYXRlX3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZS51dGMpLmFzdGltZXpvbmUoKQorICAgIGVsaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsIHR1cGxlKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ210b2ZmID0gZGF0ZV90aW1lLnRtX2dtdG9mZgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBpZiB0aW1lLmRheWxpZ2h0OgorICAgICAgICAgICAgICAgIGRzdCA9IGRhdGVfdGltZVs4XQorICAgICAgICAgICAgICAgIGlmIGRzdCA9PSAtMToKKyAgICAgICAgICAgICAgICAgICAgZHN0ID0gdGltZS5sb2NhbHRpbWUodGltZS5ta3RpbWUoZGF0ZV90aW1lKSlbOF0KKyAgICAgICAgICAgICAgICBnbXRvZmYgPSAtKHRpbWUudGltZXpvbmUsIHRpbWUuYWx0em9uZSlbZHN0XQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBnbXRvZmYgPSAtdGltZS50aW1lem9uZQorICAgICAgICBkZWx0YSA9IHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZikKKyAgICAgICAgZHQgPSBkYXRldGltZSgqZGF0ZV90aW1lWzo2XSwgdHppbmZvPXRpbWV6b25lKGRlbHRhKSkKKyAgICBlbGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCBkYXRldGltZSk6CisgICAgICAgIGlmIGRhdGVfdGltZS50emluZm8gaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRhdGVfdGltZSBtdXN0IGJlIGF3YXJlIikKKyAgICAgICAgZHQgPSBkYXRlX3RpbWUKICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCBzdHIpIGFuZCAoZGF0ZV90aW1lWzBdLGRhdGVfdGltZVstMV0pID09ICgnIicsJyInKToKICAgICAgICAgcmV0dXJuIGRhdGVfdGltZSAgICAgICAgIyBBc3N1bWUgaW4gY29ycmVjdCBmb3JtYXQKICAgICBlbHNlOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkYXRlX3RpbWUgbm90IG9mIGEga25vd24gdHlwZSIpCi0KLSAgICBkdCA9IHRpbWUuc3RyZnRpbWUoIiVkLSViLSVZICVIOiVNOiVTIiwgdHQpCi0gICAgaWYgZHRbMF0gPT0gJzAnOgotICAgICAgICBkdCA9ICcgJyArIGR0WzE6XQotICAgIGlmIHRpbWUuZGF5bGlnaHQgYW5kIHR0Wy0xXToKLSAgICAgICAgem9uZSA9IC10aW1lLmFsdHpvbmUKLSAgICBlbHNlOgotICAgICAgICB6b25lID0gLXRpbWUudGltZXpvbmUKLSAgICByZXR1cm4gJyInICsgZHQgKyAiICUrMDNkJTAyZCIgJSBkaXZtb2Qoem9uZS8vNjAsIDYwKSArICciJworICAgIGZtdCA9ICciJWQte30tJVkgJUg6JU06JVMgJXoiJy5mb3JtYXQoTW9udGhzW2R0Lm1vbnRoXSkKKyAgICByZXR1cm4gZHQuc3RyZnRpbWUoZm10KQogCiAKIApkaWZmIC0tZ2l0IGEvTGliL2ltcC5weSBiL0xpYi9pbXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBiMDRjOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pbXAucHkKQEAgLTAsMCArMSwyNTUgQEAKKyIiIlRoaXMgbW9kdWxlIHByb3ZpZGVzIHRoZSBjb21wb25lbnRzIG5lZWRlZCB0byBidWlsZCB5b3VyIG93biBfX2ltcG9ydF9fCitmdW5jdGlvbi4gIFVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgYXJlIG9ic29sZXRlLgorCitJbiBtb3N0IGNhc2VzIGl0IGlzIHByZWZlcnJlZCB5b3UgY29uc2lkZXIgdXNpbmcgdGhlIGltcG9ydGxpYiBtb2R1bGUncworZnVuY3Rpb25hbGl0eSBvdmVyIHRoaXMgbW9kdWxlLgorCisiIiIKKyMgKFByb2JhYmx5KSBuZWVkIHRvIHN0YXkgaW4gX2ltcAorZnJvbSBfaW1wIGltcG9ydCAobG9ja19oZWxkLCBhY3F1aXJlX2xvY2ssIHJlbGVhc2VfbG9jaywKKyAgICAgICAgICAgICAgICAgIGxvYWRfZHluYW1pYywgZ2V0X2Zyb3plbl9vYmplY3QsIGlzX2Zyb3plbl9wYWNrYWdlLAorICAgICAgICAgICAgICAgICAgaW5pdF9idWlsdGluLCBpbml0X2Zyb3plbiwgaXNfYnVpbHRpbiwgaXNfZnJvemVuLAorICAgICAgICAgICAgICAgICAgX2ZpeF9jb19maWxlbmFtZSkKKworIyBEaXJlY3RseSBleHBvc2VkIGJ5IHRoaXMgbW9kdWxlCitmcm9tIGltcG9ydGxpYi5fYm9vdHN0cmFwIGltcG9ydCBuZXdfbW9kdWxlCitmcm9tIGltcG9ydGxpYi5fYm9vdHN0cmFwIGltcG9ydCBjYWNoZV9mcm9tX3NvdXJjZSwgc291cmNlX2Zyb21fY2FjaGUKKworCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdG9rZW5pemUKK2ltcG9ydCB3YXJuaW5ncworCisKKyMgREVQUkVDQVRFRAorU0VBUkNIX0VSUk9SID0gMAorUFlfU09VUkNFID0gMQorUFlfQ09NUElMRUQgPSAyCitDX0VYVEVOU0lPTiA9IDMKK1BZX1JFU09VUkNFID0gNAorUEtHX0RJUkVDVE9SWSA9IDUKK0NfQlVJTFRJTiA9IDYKK1BZX0ZST1pFTiA9IDcKK1BZX0NPREVSRVNPVVJDRSA9IDgKK0lNUF9IT09LID0gOQorCisKK2RlZiBnZXRfbWFnaWMoKToKKyAgICAiIiJSZXR1cm4gdGhlIG1hZ2ljIG51bWJlciBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIiIgorICAgIHJldHVybiBfYm9vdHN0cmFwLl9NQUdJQ19CWVRFUworCisKK2RlZiBnZXRfdGFnKCk6CisgICAgIiIiUmV0dXJuIHRoZSBtYWdpYyB0YWcgZm9yIC5weWMgb3IgLnB5byBmaWxlcy4iIiIKKyAgICByZXR1cm4gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZworCisKK2RlZiBnZXRfc3VmZml4ZXMoKToKKyAgICB3YXJuaW5ncy53YXJuKCdpbXAuZ2V0X3N1ZmZpeGVzKCkgaXMgZGVwcmVjYXRlZDsgdXNlIHRoZSBjb25zdGFudHMgJworICAgICAgICAgICAgICAgICAgJ2RlZmluZWQgb24gaW1wb3J0bGliLm1hY2hpbmVyeSBpbnN0ZWFkJywKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICBleHRlbnNpb25zID0gWyhzLCAncmInLCBDX0VYVEVOU0lPTikgZm9yIHMgaW4gbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFU10KKyAgICBzb3VyY2UgPSBbKHMsICdVJywgUFlfU09VUkNFKSBmb3IgcyBpbiBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTXQorICAgIGJ5dGVjb2RlID0gWyhzLCAncmInLCBQWV9DT01QSUxFRCkgZm9yIHMgaW4gbWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTXQorCisgICAgcmV0dXJuIGV4dGVuc2lvbnMgKyBzb3VyY2UgKyBieXRlY29kZQorCisKK2NsYXNzIE51bGxJbXBvcnRlcjoKKworICAgICIiIk51bGwgaW1wb3J0IG9iamVjdC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgcGF0aCA9PSAnJzoKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdlbXB0eSBwYXRobmFtZScsIHBhdGg9JycpCisgICAgICAgIGVsaWYgb3MucGF0aC5pc2RpcihwYXRoKToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdleGlzdGluZyBkaXJlY3RvcnknLCBwYXRoPXBhdGgpCisKKyAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJBbHdheXMgcmV0dXJucyBOb25lLiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2NsYXNzIF9IYWNrZWRHZXREYXRhOgorCisgICAgIiIiQ29tcGF0aWJpaWx0eSBzdXBwb3J0IGZvciAnZmlsZScgYXJndW1lbnRzIG9mIHZhcmlvdXMgbG9hZF8qKCkKKyAgICBmdW5jdGlvbnMuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVsbG5hbWUsIHBhdGgsIGZpbGU9Tm9uZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oZnVsbG5hbWUsIHBhdGgpCisgICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKKworICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiR3Jvc3MgaGFjayB0byBjb250b3J0IGxvYWRlciB0byBkZWFsIHcvIGxvYWRfKigpJ3MgYmFkIEFQSS4iIiIKKyAgICAgICAgaWYgc2VsZi5maWxlIGFuZCBwYXRoID09IHNlbGYucGF0aDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5maWxlOgorICAgICAgICAgICAgICAgICMgVGVjaG5pY2FsbHkgc2hvdWxkIGJlIHJldHVybmluZyBieXRlcywgYnV0CisgICAgICAgICAgICAgICAgIyBTb3VyY2VMb2FkZXIuZ2V0X2NvZGUoKSBqdXN0IHBhc3NlZCB3aGF0IGlzIHJldHVybmVkIHRvCisgICAgICAgICAgICAgICAgIyBjb21waWxlKCkgd2hpY2ggY2FuIGhhbmRsZSBzdHIuIEFuZCBjb252ZXJ0aW5nIHRvIGJ5dGVzIHdvdWxkCisgICAgICAgICAgICAgICAgIyByZXF1aXJlIGZpZ3VyaW5nIG91dCB0aGUgZW5jb2RpbmcgdG8gZGVjb2RlIHRvIGFuZAorICAgICAgICAgICAgICAgICMgdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKCkgb25seSBhY2NlcHRzIGJ5dGVzLgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbGUucmVhZCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfZGF0YShwYXRoKQorCisKK2NsYXNzIF9Mb2FkU291cmNlQ29tcGF0aWJpbGl0eShfSGFja2VkR2V0RGF0YSwgX2Jvb3RzdHJhcC5Tb3VyY2VGaWxlTG9hZGVyKToKKworICAgICIiIkNvbXBhdGliaWxpdHkgc3VwcG9ydCBmb3IgaW1wbGVtZW50aW5nIGxvYWRfc291cmNlKCkuIiIiCisKKworZGVmIGxvYWRfc291cmNlKG5hbWUsIHBhdGhuYW1lLCBmaWxlPU5vbmUpOgorICAgIG1zZyA9ICgnaW1wLmxvYWRfc291cmNlKCkgaXMgZGVwcmVjYXRlZDsgdXNlICcKKyAgICAgICAgICAgJ2ltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkubG9hZF9tb2R1bGUoKScKKyAgICAgICAgICAgJyBpbnN0ZWFkJykKKyAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIHJldHVybiBfTG9hZFNvdXJjZUNvbXBhdGliaWxpdHkobmFtZSwgcGF0aG5hbWUsIGZpbGUpLmxvYWRfbW9kdWxlKG5hbWUpCisKKworY2xhc3MgX0xvYWRDb21waWxlZENvbXBhdGliaWxpdHkoX0hhY2tlZEdldERhdGEsCisgICAgICAgIF9ib290c3RyYXAuU291cmNlbGVzc0ZpbGVMb2FkZXIpOgorCisgICAgIiIiQ29tcGF0aWJpbGl0eSBzdXBwb3J0IGZvciBpbXBsZW1lbnRpbmcgbG9hZF9jb21waWxlZCgpLiIiIgorCisKK2RlZiBsb2FkX2NvbXBpbGVkKG5hbWUsIHBhdGhuYW1lLCBmaWxlPU5vbmUpOgorICAgIG1zZyA9ICgnaW1wLmxvYWRfY29tcGlsZWQoKSBpcyBkZXByZWNhdGVkOyB1c2UgJworICAgICAgICAgICAnaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkuJworICAgICAgICAgICAnbG9hZF9tb2R1bGUoKSBpbnN0ZWFkICcpCisgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICByZXR1cm4gX0xvYWRDb21waWxlZENvbXBhdGliaWxpdHkobmFtZSwgcGF0aG5hbWUsIGZpbGUpLmxvYWRfbW9kdWxlKG5hbWUpCisKKworZGVmIGxvYWRfcGFja2FnZShuYW1lLCBwYXRoKToKKyAgICBtc2cgPSAoJ2ltcC5sb2FkX3BhY2thZ2UoKSBpcyBkZXByZWNhdGVkOyB1c2UgZWl0aGVyICcKKyAgICAgICAgICAgJ2ltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcigpIG9yICcKKyAgICAgICAgICAgJ2ltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIoKSBpbnN0ZWFkJykKKyAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgIGV4dGVuc2lvbnMgPSAobWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1s6XSArCisgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTWzpdKQorICAgICAgICBmb3IgZXh0ZW5zaW9uIGluIGV4dGVuc2lvbnM6CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHBhdGgsICdfX2luaXRfXycrZXh0ZW5zaW9uKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgcGFja2FnZScuZm9ybWF0KHBhdGgpKQorICAgIHJldHVybiBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aCkubG9hZF9tb2R1bGUobmFtZSkKKworCitkZWYgbG9hZF9tb2R1bGUobmFtZSwgZmlsZSwgZmlsZW5hbWUsIGRldGFpbHMpOgorICAgICIiIioqREVQUkVDQVRFRCoqCisKKyAgICBMb2FkIGEgbW9kdWxlLCBnaXZlbiBpbmZvcm1hdGlvbiByZXR1cm5lZCBieSBmaW5kX21vZHVsZSgpLgorCisgICAgVGhlIG1vZHVsZSBuYW1lIG11c3QgaW5jbHVkZSB0aGUgZnVsbCBwYWNrYWdlIG5hbWUsIGlmIGFueS4KKworICAgICIiIgorICAgIHN1ZmZpeCwgbW9kZSwgdHlwZV8gPSBkZXRhaWxzCisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgIGlmIG1vZGUgYW5kIChub3QgbW9kZS5zdGFydHN3aXRoKCgncicsICdVJykpIG9yICcrJyBpbiBtb2RlKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgZmlsZSBvcGVuIG1vZGUgeyFyfScuZm9ybWF0KG1vZGUpKQorICAgICAgICBlbGlmIGZpbGUgaXMgTm9uZSBhbmQgdHlwZV8gaW4ge1BZX1NPVVJDRSwgUFlfQ09NUElMRUR9OgorICAgICAgICAgICAgbXNnID0gJ2ZpbGUgb2JqZWN0IHJlcXVpcmVkIGZvciBpbXBvcnQgKHR5cGUgY29kZSB7fSknLmZvcm1hdCh0eXBlXykKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICBlbGlmIHR5cGVfID09IFBZX1NPVVJDRToKKyAgICAgICAgICAgIHJldHVybiBsb2FkX3NvdXJjZShuYW1lLCBmaWxlbmFtZSwgZmlsZSkKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBQWV9DT01QSUxFRDoKKyAgICAgICAgICAgIHJldHVybiBsb2FkX2NvbXBpbGVkKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQorICAgICAgICBlbGlmIHR5cGVfID09IFBLR19ESVJFQ1RPUlk6CisgICAgICAgICAgICByZXR1cm4gbG9hZF9wYWNrYWdlKG5hbWUsIGZpbGVuYW1lKQorICAgICAgICBlbGlmIHR5cGVfID09IENfQlVJTFRJTjoKKyAgICAgICAgICAgIHJldHVybiBpbml0X2J1aWx0aW4obmFtZSkKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBQWV9GUk9aRU46CisgICAgICAgICAgICByZXR1cm4gaW5pdF9mcm96ZW4obmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICAiRG9uJ3Qga25vdyBob3cgdG8gaW1wb3J0IHt9ICh0eXBlIGNvZGUge30iLmZvcm1hdChuYW1lLCB0eXBlXykKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1uYW1lKQorCisKK2RlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOgorICAgICIiIioqREVQUkVDQVRFRCoqCisKKyAgICBTZWFyY2ggZm9yIGEgbW9kdWxlLgorCisgICAgSWYgcGF0aCBpcyBvbWl0dGVkIG9yIE5vbmUsIHNlYXJjaCBmb3IgYSBidWlsdC1pbiwgZnJvemVuIG9yIHNwZWNpYWwKKyAgICBtb2R1bGUgYW5kIGNvbnRpbnVlIHNlYXJjaCBpbiBzeXMucGF0aC4gVGhlIG1vZHVsZSBuYW1lIGNhbm5vdAorICAgIGNvbnRhaW4gJy4nOyB0byBzZWFyY2ggZm9yIGEgc3VibW9kdWxlIG9mIGEgcGFja2FnZSwgcGFzcyB0aGUKKyAgICBzdWJtb2R1bGUgbmFtZSBhbmQgdGhlIHBhY2thZ2UncyBfX3BhdGhfXy4KKworICAgICIiIgorICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJ25hbWUnIG11c3QgYmUgYSBzdHIsIG5vdCB7fSIuZm9ybWF0KHR5cGUobmFtZSkpKQorICAgIGVsaWYgbm90IGlzaW5zdGFuY2UocGF0aCwgKHR5cGUoTm9uZSksIGxpc3QpKToKKyAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eQorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIidsaXN0JyBtdXN0IGJlIE5vbmUgb3IgYSBsaXN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCisKKyAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgIGlmIGlzX2J1aWx0aW4obmFtZSk6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgKCcnLCAnJywgQ19CVUlMVElOKQorICAgICAgICBlbGlmIGlzX2Zyb3plbihuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCAoJycsICcnLCBQWV9GUk9aRU4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXRoID0gc3lzLnBhdGgKKworICAgIGZvciBlbnRyeSBpbiBwYXRoOgorICAgICAgICBwYWNrYWdlX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihlbnRyeSwgbmFtZSkKKyAgICAgICAgZm9yIHN1ZmZpeCBpbiBbJy5weScsIG1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1swXV06CisgICAgICAgICAgICBwYWNrYWdlX2ZpbGVfbmFtZSA9ICdfX2luaXRfXycgKyBzdWZmaXgKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihwYWNrYWdlX2RpcmVjdG9yeSwgcGFja2FnZV9maWxlX25hbWUpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX3BhdGgpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBwYWNrYWdlX2RpcmVjdG9yeSwgKCcnLCAnJywgUEtHX0RJUkVDVE9SWSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbW9kZSwgdHlwZV8gaW4gZ2V0X3N1ZmZpeGVzKCk6CisgICAgICAgICAgICAgICAgZmlsZV9uYW1lID0gbmFtZSArIHN1ZmZpeAorICAgICAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihlbnRyeSwgZmlsZV9uYW1lKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBicmVhayAgIyBCcmVhayBvdXQgb2Ygb3V0ZXIgbG9vcCB3aGVuIGJyZWFraW5nIG91dCBvZiBpbm5lciBsb29wLgorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9ib290c3RyYXAuX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCisKKyAgICBlbmNvZGluZyA9IE5vbmUKKyAgICBpZiBtb2RlID09ICdVJzoKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgJ3JiJykgYXMgZmlsZToKKyAgICAgICAgICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKGZpbGUucmVhZGxpbmUpWzBdCisgICAgZmlsZSA9IG9wZW4oZmlsZV9wYXRoLCBtb2RlLCBlbmNvZGluZz1lbmNvZGluZykKKyAgICByZXR1cm4gZmlsZSwgZmlsZV9wYXRoLCAoc3VmZml4LCBtb2RlLCB0eXBlXykKKworCitfUkVMT0FESU5HID0ge30KKworZGVmIHJlbG9hZChtb2R1bGUpOgorICAgICIiIlJlbG9hZCB0aGUgbW9kdWxlIGFuZCByZXR1cm4gaXQuCisKKyAgICBUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBiZWZvcmUuCisKKyAgICAiIiIKKyAgICBpZiBub3QgbW9kdWxlIG9yIHR5cGUobW9kdWxlKSAhPSB0eXBlKHN5cyk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigicmVsb2FkKCkgYXJndW1lbnQgbXVzdCBiZSBtb2R1bGUiKQorICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KKyAgICBpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgbXNnID0gIm1vZHVsZSB7fSBub3QgaW4gc3lzLm1vZHVsZXMiCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKKyAgICBpZiBuYW1lIGluIF9SRUxPQURJTkc6CisgICAgICAgIHJldHVybiBfUkVMT0FESU5HW25hbWVdCisgICAgX1JFTE9BRElOR1tuYW1lXSA9IG1vZHVsZQorICAgIHRyeToKKyAgICAgICAgcGFyZW50X25hbWUgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQorICAgICAgICBpZiBwYXJlbnRfbmFtZSBhbmQgcGFyZW50X25hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgbXNnID0gInBhcmVudCB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcyIKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQocGFyZW50bmFtZSksIG5hbWU9cGFyZW50X25hbWUpCisgICAgICAgIHJldHVybiBtb2R1bGUuX19sb2FkZXJfXy5sb2FkX21vZHVsZShuYW1lKQorICAgIGZpbmFsbHk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRlbCBfUkVMT0FESU5HW25hbWVdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkgYi9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5CmluZGV4IDJiYWFmOTMuLjZmNDBkYWMgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkKKysrIGIvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weQpAQCAtMSwxMTAgKzEsNzQgQEAKLSIiIkEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LgotCi1SZWZlcmVuY2VzIG9uIGltcG9ydDoKLQotICAgICogTGFuZ3VhZ2UgcmVmZXJlbmNlCi0gICAgICAgICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9yZWYvaW1wb3J0Lmh0bWwKLSAgICAqIF9faW1wb3J0X18gZnVuY3Rpb24KLSAgICAgICAgICBodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYi9idWlsdC1pbi1mdW5jcy5odG1sCi0gICAgKiBQYWNrYWdlcwotICAgICAgICAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb2MvZXNzYXlzL3BhY2thZ2VzLmh0bWwKLSAgICAqIFBFUCAyMzU6IEltcG9ydCBvbiBDYXNlLUluc2Vuc2l0aXZlIFBsYXRmb3JtcwotICAgICAgICAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDIzNQotICAgICogUEVQIDI3NTogSW1wb3J0IE1vZHVsZXMgZnJvbSBaaXAgQXJjaGl2ZXMKLSAgICAgICAgICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAyNzMKLSAgICAqIFBFUCAzMDI6IE5ldyBJbXBvcnQgSG9va3MKLSAgICAgICAgICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzMDIvCi0gICAgKiBQRVAgMzI4OiBJbXBvcnRzOiBNdWx0aS1saW5lIGFuZCBBYnNvbHV0ZS9SZWxhdGl2ZQotICAgICAgICAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDMyOAotCi0iIiIKLV9fYWxsX18gPSBbJ19faW1wb3J0X18nLCAnaW1wb3J0X21vZHVsZSddCi0KLWZyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcAotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHRva2VuaXplCisiIiJBIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4iIiIKK19fYWxsX18gPSBbJ19faW1wb3J0X18nLCAnaW1wb3J0X21vZHVsZScsICdpbnZhbGlkYXRlX2NhY2hlcyddCiAKICMgQm9vdHN0cmFwIGhlbHAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotZGVmIF9jYXNlX29rKGRpcmVjdG9yeSwgY2hlY2spOgotICAgICIiIkNoZWNrIGlmIHRoZSBkaXJlY3RvcnkgY29udGFpbnMgc29tZXRoaW5nIG1hdGNoaW5nICdjaGVjaycuCisjIFVudGlsIGJvb3RzdHJhcHBpbmcgaXMgY29tcGxldGUsIERPIE5PVCBpbXBvcnQgYW55IG1vZHVsZXMgdGhhdCBhdHRlbXB0CisjIHRvIGltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkuIFNpbmNlIHRoaXMKKyMgcGFydGlhbGx5IGluaXRpYWxpc2VkIHBhY2thZ2Ugd291bGQgYmUgcHJlc2VudCBpbiBzeXMubW9kdWxlcywgdGhvc2UKKyMgbW9kdWxlcyB3b3VsZCBnZXQgYW4gdW5pbml0aWFsaXNlZCBjb3B5IG9mIHRoZSBzb3VyY2UgdmVyc2lvbiwgaW5zdGVhZAorIyBvZiBhIGZ1bGx5IGluaXRpYWxpc2VkIHZlcnNpb24gKGVpdGhlciB0aGUgZnJvemVuIG9uZSBvciB0aGUgb25lCisjIGluaXRpYWxpc2VkIGJlbG93IGlmIHRoZSBmcm96ZW4gb25lIGlzIG5vdCBhdmFpbGFibGUpLgoraW1wb3J0IF9pbXAgICMgSnVzdCB0aGUgYnVpbHRpbiBjb21wb25lbnQsIE5PVCB0aGUgZnVsbCBQeXRob24gbW9kdWxlCitpbXBvcnQgc3lzCiAKLSAgICBObyBjaGVjayBpcyBkb25lIGlmIHRoZSBmaWxlL2RpcmVjdG9yeSBleGlzdHMgb3Igbm90LgotCi0gICAgIiIiCi0gICAgaWYgJ1BZVEhPTkNBU0VPSycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBlbGlmIGNoZWNrIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5IGlmIGRpcmVjdG9yeSBlbHNlIG9zLmdldGN3ZCgpKToKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgX3dfbG9uZyh4KToKLSAgICAiIiJDb252ZXJ0IGEgMzItYml0IGludGVnZXIgdG8gbGl0dGxlLWVuZGlhbi4KLQotICAgIFhYWCBUZW1wb3JhcnkgdW50aWwgbWFyc2hhbCdzIGxvbmcgZnVuY3Rpb25zIGFyZSBleHBvc2VkLgotCi0gICAgIiIiCi0gICAgeCA9IGludCh4KQotICAgIGludF9ieXRlcyA9IFtdCi0gICAgaW50X2J5dGVzLmFwcGVuZCh4ICYgMHhGRikKLSAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDgpICYgMHhGRikKLSAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDE2KSAmIDB4RkYpCi0gICAgaW50X2J5dGVzLmFwcGVuZCgoeCA+PiAyNCkgJiAweEZGKQotICAgIHJldHVybiBieXRlYXJyYXkoaW50X2J5dGVzKQotCi0KLWRlZiBfcl9sb25nKGludF9ieXRlcyk6Ci0gICAgIiIiQ29udmVydCA0IGJ5dGVzIGluIGxpdHRsZS1lbmRpYW4gdG8gYW4gaW50ZWdlci4KLQotICAgIFhYWCBUZW1wb3JhcnkgdW50aWwgbWFyc2hhbCdzIGxvbmcgZnVuY3Rpb24gYXJlIGV4cG9zZWQuCi0KLSAgICAiIiIKLSAgICB4ID0gaW50X2J5dGVzWzBdCi0gICAgeCB8PSBpbnRfYnl0ZXNbMV0gPDwgOAotICAgIHggfD0gaW50X2J5dGVzWzJdIDw8IDE2Ci0gICAgeCB8PSBpbnRfYnl0ZXNbM10gPDwgMjQKLSAgICByZXR1cm4geAotCi0KLSMgUmVxdWlyZWQgYnVpbHQtaW4gbW9kdWxlcy4KIHRyeToKLSAgICBpbXBvcnQgcG9zaXggYXMgX29zCisgICAgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliIGFzIF9ib290c3RyYXAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBudCBhcyBfb3MKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCBvczIgYXMgX29zCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdwb3NpeCwgbnQsIG9yIG9zMiBtb2R1bGUgcmVxdWlyZWQgZm9yIGltcG9ydGxpYicpCi1fYm9vdHN0cmFwLl9vcyA9IF9vcwotaW1wb3J0IGltcCwgc3lzLCBtYXJzaGFsLCBlcnJubywgX2lvCi1fYm9vdHN0cmFwLmltcCA9IGltcAotX2Jvb3RzdHJhcC5zeXMgPSBzeXMKLV9ib290c3RyYXAubWFyc2hhbCA9IG1hcnNoYWwKLV9ib290c3RyYXAuZXJybm8gPSBlcnJubwotX2Jvb3RzdHJhcC5faW8gPSBfaW8KLWltcG9ydCBfd2FybmluZ3MKLV9ib290c3RyYXAuX3dhcm5pbmdzID0gX3dhcm5pbmdzCisgICAgZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCisgICAgX2Jvb3RzdHJhcC5fc2V0dXAoc3lzLCBfaW1wKQorZWxzZToKKyAgICAjIGltcG9ydGxpYi5fYm9vdHN0cmFwIGlzIHRoZSBidWlsdC1pbiBpbXBvcnQsIGVuc3VyZSB3ZSBkb24ndCBjcmVhdGUKKyAgICAjIGEgc2Vjb25kIGNvcHkgb2YgdGhlIG1vZHVsZS4KKyAgICBfYm9vdHN0cmFwLl9fbmFtZV9fID0gJ2ltcG9ydGxpYi5fYm9vdHN0cmFwJworICAgIF9ib290c3RyYXAuX19wYWNrYWdlX18gPSAnaW1wb3J0bGliJworICAgIF9ib290c3RyYXAuX19maWxlX18gPSBfX2ZpbGVfXy5yZXBsYWNlKCdfX2luaXRfXy5weScsICdfYm9vdHN0cmFwLnB5JykKKyAgICBzeXMubW9kdWxlc1snaW1wb3J0bGliLl9ib290c3RyYXAnXSA9IF9ib290c3RyYXAKIAorIyBUbyBzaW1wbGlmeSBpbXBvcnRzIGluIHRlc3QgY29kZQorX3dfbG9uZyA9IF9ib290c3RyYXAuX3dfbG9uZworX3JfbG9uZyA9IF9ib290c3RyYXAuX3JfbG9uZwogCi1mcm9tIG9zIGltcG9ydCBzZXAKLSMgRm9yIG9zLnBhdGguam9pbiByZXBsYWNlbWVudDsgcHVsbCBmcm9tIEluY2x1ZGUvb3NkZWZzLmg6U0VQIC4KLV9ib290c3RyYXAucGF0aF9zZXAgPSBzZXAKLQotX2Jvb3RzdHJhcC5fY2FzZV9vayA9IF9jYXNlX29rCi1tYXJzaGFsLl93X2xvbmcgPSBfd19sb25nCi1tYXJzaGFsLl9yX2xvbmcgPSBfcl9sb25nCi0KKyMgRnVsbHkgYm9vdHN0cmFwcGVkIGF0IHRoaXMgcG9pbnQsIGltcG9ydCB3aGF0ZXZlciB5b3UgbGlrZSwgY2lyY3VsYXIKKyMgZGVwZW5kZW5jaWVzIGFuZCBzdGFydHVwIG92ZXJoZWFkIG1pbmltaXNhdGlvbiBwZXJtaXR0aW5nIDopCiAKICMgUHVibGljIEFQSSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgX19pbXBvcnRfXwogCiAKK2RlZiBpbnZhbGlkYXRlX2NhY2hlcygpOgorICAgICIiIkNhbGwgdGhlIGludmFsaWRhdGVfY2FjaGVzKCkgbWV0aG9kIG9uIGFsbCBtZXRhIHBhdGggZmluZGVycyBzdG9yZWQgaW4KKyAgICBzeXMubWV0YV9wYXRoICh3aGVyZSBpbXBsZW1lbnRlZCkuIiIiCisgICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ludmFsaWRhdGVfY2FjaGVzJyk6CisgICAgICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCisKK2RlZiBmaW5kX2xvYWRlcihuYW1lLCBwYXRoPU5vbmUpOgorICAgICIiIkZpbmQgdGhlIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUuCisKKyAgICBGaXJzdCwgc3lzLm1vZHVsZXMgaXMgY2hlY2tlZCB0byBzZWUgaWYgdGhlIG1vZHVsZSB3YXMgYWxyZWFkeSBpbXBvcnRlZC4gSWYKKyAgICBzbywgdGhlbiBzeXMubW9kdWxlc1tuYW1lXS5fX2xvYWRlcl9fIGlzIHJldHVybmVkLiBJZiB0aGF0IGhhcHBlbnMgdG8gYmUKKyAgICBzZXQgdG8gTm9uZSwgdGhlbiBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gSWYgdGhlIG1vZHVsZSBpcyBub3QgaW4KKyAgICBzeXMubW9kdWxlcywgdGhlbiBzeXMubWV0YV9wYXRoIGlzIHNlYXJjaGVkIGZvciBhIHN1aXRhYmxlIGxvYWRlciB3aXRoIHRoZQorICAgIHZhbHVlIG9mICdwYXRoJyBnaXZlbiB0byB0aGUgZmluZGVycy4gTm9uZSBpcyByZXR1cm5lZCBpZiBubyBsb2FkZXIgY291bGQKKyAgICBiZSBmb3VuZC4KKworICAgIERvdHRlZCBuYW1lcyBkbyBub3QgaGF2ZSB0aGVpciBwYXJlbnQgcGFja2FnZXMgaW1wbGljaXRseSBpbXBvcnRlZC4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgbG9hZGVyID0gc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfXworICAgICAgICBpZiBsb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fbG9hZGVyX18gaXMgTm9uZScuZm9ybWF0KG5hbWUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRlcgorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIHJldHVybiBfYm9vdHN0cmFwLl9maW5kX21vZHVsZShuYW1lLCBwYXRoKQorCisKIGRlZiBpbXBvcnRfbW9kdWxlKG5hbWUsIHBhY2thZ2U9Tm9uZSk6CiAgICAgIiIiSW1wb3J0IGEgbW9kdWxlLgogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKaW5kZXggOTBlYjFhNy4uNjY5N2IyYiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQpAQCAtNiwzMyArNiw5MyBAQAogd29yay4gT25lIHNob3VsZCB1c2UgaW1wb3J0bGliIGFzIHRoZSBwdWJsaWMtZmFjaW5nIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUuCiAKICIiIgotCi0jIEluamVjdGVkIG1vZHVsZXMgYXJlICdfd2FybmluZ3MnLCAnaW1wJywgJ3N5cycsICdtYXJzaGFsJywgJ2Vycm5vJywgJ19pbycsCi0jIGFuZCAnX29zJyAoYS5rLmEuICdwb3NpeCcsICdudCcgb3IgJ29zMicpLgotIyBJbmplY3RlZCBhdHRyaWJ1dGUgaXMgcGF0aF9zZXAuCiAjCisjIElNUE9SVEFOVDogV2hlbmV2ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhpcyBtb2R1bGUsIGJlIHN1cmUgdG8gcnVuCisjIGEgdG9wLWxldmVsIG1ha2UgaW4gb3JkZXIgdG8gZ2V0IHRoZSBmcm96ZW4gdmVyc2lvbiBvZiB0aGUgbW9kdWxlCisjIHVwZGF0ZS4gTm90IGRvaW5nIHNvLCB3aWxsIHJlc3VsdCBpbiB0aGUgTWFrZWZpbGUgdG8gZmFpbCBmb3IKKyMgYWxsIG90aGVycyB3aG8gZG9uJ3QgaGF2ZSBhIC4vcHl0aG9uIGFyb3VuZCB0byBmcmVlemUgdGhlIG1vZHVsZQorIyBpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIGNvbXBpbGF0aW9uLgorIworCisjIFNlZSBpbXBvcnRsaWIuX3NldHVwKCkgZm9yIHdoYXQgaXMgaW5qZWN0ZWQgaW50byB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKwogIyBXaGVuIGVkaXRpbmcgdGhpcyBjb2RlIGJlIGF3YXJlIHRoYXQgY29kZSBleGVjdXRlZCBhdCBpbXBvcnQgdGltZSBDQU5OT1QKICMgcmVmZXJlbmNlIGFueSBpbmplY3RlZCBvYmplY3RzISBUaGlzIGluY2x1ZGVzIG5vdCBvbmx5IGdsb2JhbCBjb2RlIGJ1dCBhbHNvCiAjIGFueXRoaW5nIHNwZWNpZmllZCBhdCB0aGUgY2xhc3MgbGV2ZWwuCiAKKyMgWFhYIE1ha2Ugc3VyZSBhbGwgcHVibGljIG5hbWVzIGhhdmUgbm8gc2luZ2xlIGxlYWRpbmcgdW5kZXJzY29yZSBhbmQgYWxsCisjICAgICBvdGhlcnMgZG8uCisKIAogIyBCb290c3RyYXAtcmVsYXRlZCBjb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0jIFhYWCBDb3VsZCBhbHNvIGV4cG9zZSBNb2R1bGVzL2dldHBhdGguYzpqb2lucGF0aCgpCi1kZWYgX3BhdGhfam9pbigqYXJncyk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguam9pbi4iIiIKLSAgICByZXR1cm4gcGF0aF9zZXAuam9pbih4WzotbGVuKHBhdGhfc2VwKV0gaWYgeC5lbmRzd2l0aChwYXRoX3NlcCkgZWxzZSB4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gYXJncyBpZiB4KQorX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TID0gJ3dpbicsICdjeWd3aW4nLCAnZGFyd2luJwogCiAKLWRlZiBfcGF0aF9leGlzdHMocGF0aCk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguZXhpc3RzLiIiIgotICAgIHRyeToKLSAgICAgICAgX29zLnN0YXQocGF0aCkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCitkZWYgX21ha2VfcmVsYXhfY2FzZSgpOgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKF9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyk6CisgICAgICAgIGRlZiBfcmVsYXhfY2FzZSgpOgorICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKKyAgICAgICAgICAgIHJldHVybiBiJ1BZVEhPTkNBU0VPSycgaW4gX29zLmVudmlyb24KICAgICBlbHNlOgotICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBkZWYgX3JlbGF4X2Nhc2UoKToKKyAgICAgICAgICAgICIiIlRydWUgaWYgZmlsZW5hbWVzIG11c3QgYmUgY2hlY2tlZCBjYXNlLWluc2Vuc2l0aXZlbHkuIiIiCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gX3JlbGF4X2Nhc2UKKworCisjIFRPRE86IEV4cG9zZSBmcm9tIG1hcnNoYWwKK2RlZiBfd19sb25nKHgpOgorICAgICIiIkNvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLgorCisgICAgWFhYIFRlbXBvcmFyeSB1bnRpbCBtYXJzaGFsJ3MgbG9uZyBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuCisKKyAgICAiIiIKKyAgICB4ID0gaW50KHgpCisgICAgaW50X2J5dGVzID0gW10KKyAgICBpbnRfYnl0ZXMuYXBwZW5kKHggJiAweEZGKQorICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gOCkgJiAweEZGKQorICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gMTYpICYgMHhGRikKKyAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDI0KSAmIDB4RkYpCisgICAgcmV0dXJuIGJ5dGVhcnJheShpbnRfYnl0ZXMpCisKKworIyBUT0RPOiBFeHBvc2UgZnJvbSBtYXJzaGFsCitkZWYgX3JfbG9uZyhpbnRfYnl0ZXMpOgorICAgICIiIkNvbnZlcnQgNCBieXRlcyBpbiBsaXR0bGUtZW5kaWFuIHRvIGFuIGludGVnZXIuCisKKyAgICBYWFggVGVtcG9yYXJ5IHVudGlsIG1hcnNoYWwncyBsb25nIGZ1bmN0aW9uIGFyZSBleHBvc2VkLgorCisgICAgIiIiCisgICAgeCA9IGludF9ieXRlc1swXQorICAgIHggfD0gaW50X2J5dGVzWzFdIDw8IDgKKyAgICB4IHw9IGludF9ieXRlc1syXSA8PCAxNgorICAgIHggfD0gaW50X2J5dGVzWzNdIDw8IDI0CisgICAgcmV0dXJuIHgKKworCitkZWYgX3BhdGhfam9pbigqcGF0aF9wYXJ0cyk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguam9pbigpLiIiIgorICAgIG5ld19wYXJ0cyA9IFtdCisgICAgZm9yIHBhcnQgaW4gcGF0aF9wYXJ0czoKKyAgICAgICAgaWYgbm90IHBhcnQ6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBuZXdfcGFydHMuYXBwZW5kKHBhcnQpCisgICAgICAgIGlmIHBhcnRbLTFdIG5vdCBpbiBwYXRoX3NlcGFyYXRvcnM6CisgICAgICAgICAgICBuZXdfcGFydHMuYXBwZW5kKHBhdGhfc2VwKQorICAgIHJldHVybiAnJy5qb2luKG5ld19wYXJ0c1s6LTFdKSAgIyBEcm9wIHN1cGVyZmx1b3VzIHBhdGggc2VwYXJhdG9yLgorCisKK2RlZiBfcGF0aF9zcGxpdChwYXRoKToKKyAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5zcGxpdCgpLiIiIgorICAgIGZvciB4IGluIHJldmVyc2VkKHBhdGgpOgorICAgICAgICBpZiB4IGluIHBhdGhfc2VwYXJhdG9yczoKKyAgICAgICAgICAgIHNlcCA9IHgKKyAgICAgICAgICAgIGJyZWFrCisgICAgZWxzZToKKyAgICAgICAgc2VwID0gcGF0aF9zZXAKKyAgICBmcm9udCwgXywgdGFpbCA9IHBhdGgucnBhcnRpdGlvbihzZXApCisgICAgcmV0dXJuIGZyb250LCB0YWlsCiAKIAogZGVmIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCBtb2RlKToKQEAgLTU4LDYxICsxMTgsNDA1IEBACiAgICAgcmV0dXJuIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCAwbzA0MDAwMCkKIAogCi1kZWYgX3BhdGhfd2l0aG91dF9leHQocGF0aCwgZXh0X3R5cGUpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLnNwbGl0ZXh0KClbMF0uIiIiCi0gICAgZm9yIHN1ZmZpeCBpbiBfc3VmZml4X2xpc3QoZXh0X3R5cGUpOgotICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKHN1ZmZpeCk6Ci0gICAgICAgICAgICByZXR1cm4gcGF0aFs6LWxlbihzdWZmaXgpXQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBhdGggaXMgbm90IG9mIHRoZSBzcGVjaWZpZWQgdHlwZSIpCi0KLQotZGVmIF9wYXRoX2Fic29sdXRlKHBhdGgpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmFic3BhdGguIiIiCi0gICAgaWYgbm90IHBhdGg6Ci0gICAgICAgIHBhdGggPSBfb3MuZ2V0Y3dkKCkKK2RlZiBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIG1vZGU9MG82NjYpOgorICAgICIiIkJlc3QtZWZmb3J0IGZ1bmN0aW9uIHRvIHdyaXRlIGRhdGEgdG8gYSBwYXRoIGF0b21pY2FsbHkuCisgICAgQmUgcHJlcGFyZWQgdG8gaGFuZGxlIGEgRmlsZUV4aXN0c0Vycm9yIGlmIGNvbmN1cnJlbnQgd3JpdGluZyBvZiB0aGUKKyAgICB0ZW1wb3JhcnkgZmlsZSBpcyBhdHRlbXB0ZWQuIiIiCisgICAgIyBpZCgpIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBwc2V1ZG8tcmFuZG9tIGZpbGVuYW1lLgorICAgIHBhdGhfdG1wID0gJ3t9Lnt9Jy5mb3JtYXQocGF0aCwgaWQocGF0aCkpCisgICAgZmQgPSBfb3Mub3BlbihwYXRoX3RtcCwKKyAgICAgICAgICAgICAgICAgIF9vcy5PX0VYQ0wgfCBfb3MuT19DUkVBVCB8IF9vcy5PX1dST05MWSwgbW9kZSAmIDBvNjY2KQogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9vcy5fZ2V0ZnVsbHBhdGhuYW1lKHBhdGgpCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoJy8nKToKLSAgICAgICAgICAgIHJldHVybiBwYXRoCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX3BhdGhfam9pbihfb3MuZ2V0Y3dkKCksIHBhdGgpCisgICAgICAgICMgV2UgZmlyc3Qgd3JpdGUgZGF0YSB0byBhIHRlbXBvcmFyeSBmaWxlLCBhbmQgdGhlbiB1c2Ugb3MucmVwbGFjZSgpIHRvCisgICAgICAgICMgcGVyZm9ybSBhbiBhdG9taWMgcmVuYW1lLgorICAgICAgICB3aXRoIF9pby5GaWxlSU8oZmQsICd3YicpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGRhdGEpCisgICAgICAgIF9vcy5yZXBsYWNlKHBhdGhfdG1wLCBwYXRoKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfb3MudW5saW5rKHBhdGhfdG1wKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmFpc2UKIAogCiBkZWYgX3dyYXAobmV3LCBvbGQpOgotICAgICIiIlNpbXBsZSBzdWJzdGl0dXRlIGZvciBmdW5jdG9vbHMud3JhcHMuIiIiCi0gICAgZm9yIHJlcGxhY2UgaW4gWydfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fZG9jX18nXToKLSAgICAgICAgc2V0YXR0cihuZXcsIHJlcGxhY2UsIGdldGF0dHIob2xkLCByZXBsYWNlKSkKKyAgICAiIiJTaW1wbGUgc3Vic3RpdHV0ZSBmb3IgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyLiIiIgorICAgIGZvciByZXBsYWNlIGluIFsnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3F1YWxuYW1lX18nLCAnX19kb2NfXyddOgorICAgICAgICBpZiBoYXNhdHRyKG9sZCwgcmVwbGFjZSk6CisgICAgICAgICAgICBzZXRhdHRyKG5ldywgcmVwbGFjZSwgZ2V0YXR0cihvbGQsIHJlcGxhY2UpKQogICAgIG5ldy5fX2RpY3RfXy51cGRhdGUob2xkLl9fZGljdF9fKQogCiAKLWNvZGVfdHlwZSA9IHR5cGUoX3dyYXAuX19jb2RlX18pCitfY29kZV90eXBlID0gdHlwZShfd3JhcC5fX2NvZGVfXykKIAotIyBGaW5kZXIvbG9hZGVyIHV0aWxpdHkgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgbmV3X21vZHVsZShuYW1lKToKKyAgICAiIiJDcmVhdGUgYSBuZXcgbW9kdWxlLgorCisgICAgVGhlIG1vZHVsZSBpcyBub3QgZW50ZXJlZCBpbnRvIHN5cy5tb2R1bGVzLgorCisgICAgIiIiCisgICAgcmV0dXJuIHR5cGUoX2lvKShuYW1lKQorCisKKyMgTW9kdWxlLWxldmVsIGxvY2tpbmcgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBBIGRpY3QgbWFwcGluZyBtb2R1bGUgbmFtZXMgdG8gd2Vha3JlZnMgb2YgX01vZHVsZUxvY2sgaW5zdGFuY2VzCitfbW9kdWxlX2xvY2tzID0ge30KKyMgQSBkaWN0IG1hcHBpbmcgdGhyZWFkIGlkcyB0byBfTW9kdWxlTG9jayBpbnN0YW5jZXMKK19ibG9ja2luZ19vbiA9IHt9CisKKworY2xhc3MgX0RlYWRsb2NrRXJyb3IoUnVudGltZUVycm9yKToKKyAgICBwYXNzCisKKworY2xhc3MgX01vZHVsZUxvY2s6CisgICAgIiIiQSByZWN1cnNpdmUgbG9jayBpbXBsZW1lbnRhdGlvbiB3aGljaCBpcyBhYmxlIHRvIGRldGVjdCBkZWFkbG9ja3MKKyAgICAoZS5nLiB0aHJlYWQgMSB0cnlpbmcgdG8gdGFrZSBsb2NrcyBBIHRoZW4gQiwgYW5kIHRocmVhZCAyIHRyeWluZyB0bworICAgIHRha2UgbG9ja3MgQiB0aGVuIEEpLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzZWxmLmxvY2sgPSBfdGhyZWFkLmFsbG9jYXRlX2xvY2soKQorICAgICAgICBzZWxmLndha2V1cCA9IF90aHJlYWQuYWxsb2NhdGVfbG9jaygpCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5vd25lciA9IE5vbmUKKyAgICAgICAgc2VsZi5jb3VudCA9IDAKKyAgICAgICAgc2VsZi53YWl0ZXJzID0gMAorCisgICAgZGVmIGhhc19kZWFkbG9jayhzZWxmKToKKyAgICAgICAgIyBEZWFkbG9jayBhdm9pZGFuY2UgZm9yIGNvbmN1cnJlbnQgY2lyY3VsYXIgaW1wb3J0cy4KKyAgICAgICAgbWUgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIHRpZCA9IHNlbGYub3duZXIKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGxvY2sgPSBfYmxvY2tpbmdfb24uZ2V0KHRpZCkKKyAgICAgICAgICAgIGlmIGxvY2sgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHRpZCA9IGxvY2sub3duZXIKKyAgICAgICAgICAgIGlmIHRpZCA9PSBtZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGFjcXVpcmUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBBY3F1aXJlIHRoZSBtb2R1bGUgbG9jay4gIElmIGEgcG90ZW50aWFsIGRlYWRsb2NrIGlzIGRldGVjdGVkLAorICAgICAgICBhIF9EZWFkbG9ja0Vycm9yIGlzIHJhaXNlZC4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgbG9jayBpcyBhbHdheXMgYWNxdWlyZWQgYW5kIFRydWUgaXMgcmV0dXJuZWQuCisgICAgICAgICIiIgorICAgICAgICB0aWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIF9ibG9ja2luZ19vblt0aWRdID0gc2VsZgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5sb2NrOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmNvdW50ID09IDAgb3Igc2VsZi5vd25lciA9PSB0aWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gdGlkCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuaGFzX2RlYWRsb2NrKCk6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBfRGVhZGxvY2tFcnJvcigiZGVhZGxvY2sgZGV0ZWN0ZWQgYnkgJXIiICUgc2VsZikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi53YWtldXAuYWNxdWlyZShGYWxzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndhaXRlcnMgKz0gMQorICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgYSByZWxlYXNlKCkgY2FsbAorICAgICAgICAgICAgICAgIHNlbGYud2FrZXVwLmFjcXVpcmUoKQorICAgICAgICAgICAgICAgIHNlbGYud2FrZXVwLnJlbGVhc2UoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIF9ibG9ja2luZ19vblt0aWRdCisKKyAgICBkZWYgcmVsZWFzZShzZWxmKToKKyAgICAgICAgdGlkID0gX3RocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICB3aXRoIHNlbGYubG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYub3duZXIgIT0gdGlkOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jayIpCisgICAgICAgICAgICBhc3NlcnQgc2VsZi5jb3VudCA+IDAKKyAgICAgICAgICAgIHNlbGYuY291bnQgLT0gMQorICAgICAgICAgICAgaWYgc2VsZi5jb3VudCA9PSAwOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBOb25lCisgICAgICAgICAgICAgICAgaWYgc2VsZi53YWl0ZXJzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLndhaXRlcnMgLT0gMQorICAgICAgICAgICAgICAgICAgICBzZWxmLndha2V1cC5yZWxlYXNlKCkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJfTW9kdWxlTG9jayglcikgYXQgJWQiICUgKHNlbGYubmFtZSwgaWQoc2VsZikpCisKKworY2xhc3MgX0R1bW15TW9kdWxlTG9jazoKKyAgICAiIiJBIHNpbXBsZSBfTW9kdWxlTG9jayBlcXVpdmFsZW50IGZvciBQeXRob24gYnVpbGRzIHdpdGhvdXQKKyAgICBtdWx0aS10aHJlYWRpbmcgc3VwcG9ydC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmNvdW50ID0gMAorCisgICAgZGVmIGFjcXVpcmUoc2VsZik6CisgICAgICAgIHNlbGYuY291bnQgKz0gMQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHJlbGVhc2Uoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY291bnQgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jayIpCisgICAgICAgIHNlbGYuY291bnQgLT0gMQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIl9EdW1teU1vZHVsZUxvY2soJXIpIGF0ICVkIiAlIChzZWxmLm5hbWUsIGlkKHNlbGYpKQorCisKKyMgVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFyZSBmb3IgY29uc3VtcHRpb24gYnkgUHl0aG9uL2ltcG9ydC5jLgorCitkZWYgX2dldF9tb2R1bGVfbG9jayhuYW1lKToKKyAgICAiIiJHZXQgb3IgY3JlYXRlIHRoZSBtb2R1bGUgbG9jayBmb3IgYSBnaXZlbiBtb2R1bGUgbmFtZS4KKworICAgIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIHRoZSBpbXBvcnQgbG9jayB0YWtlbi4iIiIKKyAgICBsb2NrID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgbG9jayA9IF9tb2R1bGVfbG9ja3NbbmFtZV0oKQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGlmIGxvY2sgaXMgTm9uZToKKyAgICAgICAgaWYgX3RocmVhZCBpcyBOb25lOgorICAgICAgICAgICAgbG9jayA9IF9EdW1teU1vZHVsZUxvY2sobmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvY2sgPSBfTW9kdWxlTG9jayhuYW1lKQorICAgICAgICBkZWYgY2IoXyk6CisgICAgICAgICAgICBkZWwgX21vZHVsZV9sb2Nrc1tuYW1lXQorICAgICAgICBfbW9kdWxlX2xvY2tzW25hbWVdID0gX3dlYWtyZWYucmVmKGxvY2ssIGNiKQorICAgIHJldHVybiBsb2NrCisKK2RlZiBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpOgorICAgICIiIlJlbGVhc2UgdGhlIGdsb2JhbCBpbXBvcnQgbG9jaywgYW5kIGFjcXVpcmVzIHRoZW4gcmVsZWFzZSB0aGUKKyAgICBtb2R1bGUgbG9jayBmb3IgYSBnaXZlbiBtb2R1bGUgbmFtZS4KKyAgICBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlIGEgbW9kdWxlIGlzIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQsIGluIHRoZQorICAgIGV2ZW50IGl0IGlzIGJlaW5nIGltcG9ydGVkIGJ5IGFub3RoZXIgdGhyZWFkLgorCisgICAgU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggdGhlIGltcG9ydCBsb2NrIHRha2VuLiIiIgorICAgIGxvY2sgPSBfZ2V0X21vZHVsZV9sb2NrKG5hbWUpCisgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgIHRyeToKKyAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICBleGNlcHQgX0RlYWRsb2NrRXJyb3I6CisgICAgICAgICMgQ29uY3VycmVudCBjaXJjdWxhciBpbXBvcnQsIHdlJ2xsIGFjY2VwdCBhIHBhcnRpYWxseSBpbml0aWFsaXplZAorICAgICAgICAjIG1vZHVsZSBvYmplY3QuCisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBsb2NrLnJlbGVhc2UoKQorCisjIEZyYW1lIHN0cmlwcGluZyBtYWdpYyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChmLCAqYXJncywgKiprd2RzKToKKyAgICAiIiJyZW1vdmVfaW1wb3J0bGliX2ZyYW1lcyBpbiBpbXBvcnQuYyB3aWxsIGFsd2F5cyByZW1vdmUgc2VxdWVuY2VzCisgICAgb2YgaW1wb3J0bGliIGZyYW1lcyB0aGF0IGVuZCB3aXRoIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uCisKKyAgICBVc2UgaXQgaW5zdGVhZCBvZiBhIG5vcm1hbCBjYWxsIGluIHBsYWNlcyB3aGVyZSBpbmNsdWRpbmcgdGhlIGltcG9ydGxpYgorICAgIGZyYW1lcyBpbnRyb2R1Y2VzIHVud2FudGVkIG5vaXNlIGludG8gdGhlIHRyYWNlYmFjayAoZS5nLiB3aGVuIGV4ZWN1dGluZworICAgIG1vZHVsZSBjb2RlKQorICAgICIiIgorICAgIHJldHVybiBmKCphcmdzLCAqKmt3ZHMpCisKKworIyBGaW5kZXIvbG9hZGVyIHV0aWxpdHkgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiJNYWdpYyB3b3JkIHRvIHJlamVjdCAucHljIGZpbGVzIGdlbmVyYXRlZCBieSBvdGhlciBQeXRob24gdmVyc2lvbnMuCitJdCBzaG91bGQgY2hhbmdlIGZvciBlYWNoIGluY29tcGF0aWJsZSBjaGFuZ2UgdG8gdGhlIGJ5dGVjb2RlLgorCitUaGUgdmFsdWUgb2YgQ1IgYW5kIExGIGlzIGluY29ycG9yYXRlZCBzbyBpZiB5b3UgZXZlciByZWFkIG9yIHdyaXRlCithIC5weWMgZmlsZSBpbiB0ZXh0IG1vZGUgdGhlIG1hZ2ljIG51bWJlciB3aWxsIGJlIHdyb25nOyBhbHNvLCB0aGUKK0FwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCisKK1RoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKKy1VIGludGVycGV0ZXIgZmxhZyB3aWxsIGNhdXNlIE1BR0lDKzEgYmVpbmcgdXNlZC4gVGhleSBoYXZlIGJlZW4KK29kZCBudW1iZXJzIGZvciBzb21lIHRpbWUgbm93LgorCitUaGVyZSB3ZXJlIGEgdmFyaWV0eSBvZiBvbGQgc2NoZW1lcyBmb3Igc2V0dGluZyB0aGUgbWFnaWMgbnVtYmVyLgorVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQorMTAuCisKK1N0YXJ0aW5nIHdpdGggdGhlIGFkb3B0aW9uIG9mIFBFUCAzMTQ3IGluIFB5dGhvbiAzLjIsIGV2ZXJ5IGJ1bXAgaW4gbWFnaWMKK251bWJlciBhbHNvIGluY2x1ZGVzIGEgbmV3ICJtYWdpYyB0YWciLCBpLmUuIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nIHVzZWQKK3RvIHJlcHJlc2VudCB0aGUgbWFnaWMgbnVtYmVyIGluIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLiAgV2hlbiB5b3UgY2hhbmdlCit0aGUgbWFnaWMgbnVtYmVyLCB5b3UgbXVzdCBhbHNvIHNldCBhIG5ldyB1bmlxdWUgbWFnaWMgdGFnLiAgR2VuZXJhbGx5IHRoaXMKK2NhbiBiZSBuYW1lZCBhZnRlciB0aGUgUHl0aG9uIG1ham9yIHZlcnNpb24gb2YgdGhlIG1hZ2ljIG51bWJlciBidW1wLCBidXQKK2l0IGNhbiByZWFsbHkgYmUgYW55dGhpbmcsIGFzIGxvbmcgYXMgaXQncyBkaWZmZXJlbnQgdGhhbiBhbnl0aGluZyBlbHNlCit0aGF0J3MgY29tZSBiZWZvcmUuICBUaGUgdGFncyBhcmUgaW5jbHVkZWQgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSwgc3RhcnRpbmcKK3dpdGggUHl0aG9uIDMuMmEwLgorCitLbm93biB2YWx1ZXM6CisgUHl0aG9uIDEuNTogICAyMDEyMQorIFB5dGhvbiAxLjUuMTogMjAxMjEKKyAgICBQeXRob24gMS41LjI6IDIwMTIxCisgICAgUHl0aG9uIDEuNjogICA1MDQyOAorICAgIFB5dGhvbiAyLjA6ICAgNTA4MjMKKyAgICBQeXRob24gMi4wLjE6IDUwODIzCisgICAgUHl0aG9uIDIuMTogICA2MDIwMgorICAgIFB5dGhvbiAyLjEuMTogNjAyMDIKKyAgICBQeXRob24gMi4xLjI6IDYwMjAyCisgICAgUHl0aG9uIDIuMjogICA2MDcxNworICAgIFB5dGhvbiAyLjNhMDogNjIwMTEKKyAgICBQeXRob24gMi4zYTA6IDYyMDIxCisgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKKyAgICBQeXRob24gMi40YTA6IDYyMDQxCisgICAgUHl0aG9uIDIuNGEzOiA2MjA1MQorICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKKyAgICBQeXRob24gMi41YTA6IDYyMDcxCisgICAgUHl0aG9uIDIuNWEwOiA2MjA4MSAoYXN0LWJyYW5jaCkKKyAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQorICAgIFB5dGhvbiAyLjVhMDogNjIwOTIgKGNoYW5nZWQgV0lUSF9DTEVBTlVQIG9wY29kZSkKKyAgICBQeXRob24gMi41YjM6IDYyMTAxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLikKKyAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKKyAgICBQeXRob24gMi41YzE6IDYyMTIxIChmaXggd3JvbmcgbG5vdGFiIHdpdGggZm9yIGxvb3BzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JpbmcgY29uc3RhbnRzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkKQorICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKKyAgICBQeXRob24gMi42YTA6IDYyMTUxIChwZWVwaG9sZSBvcHRpbWl6YXRpb25zIGFuZCBTVE9SRV9NQVAgb3Bjb2RlKQorICAgIFB5dGhvbiAyLjZhMTogNjIxNjEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pCisgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAorICAgICAgICAgICAgICAgICAgIDMwMTAgKHJlbW92ZWQgVU5BUllfQ09OVkVSVCkKKyAgICAgICAgICAgICAgICAgICAzMDIwIChhZGRlZCBCVUlMRF9TRVQpCisgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgICAgMzA0MCAoYWRkZWQgc2lnbmF0dXJlIGFubm90YXRpb25zKQorICAgICAgICAgICAgICAgICAgIDMwNTAgKHByaW50IGJlY29tZXMgYSBmdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQorICAgICAgICAgICAgICAgICAgIDMwNjEgKHN0cmluZyBsaXRlcmFscyBiZWNvbWUgdW5pY29kZSkKKyAgICAgICAgICAgICAgICAgICAzMDcxIChQRVAgMzEwOSByYWlzZSBjaGFuZ2VzKQorICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCisgICAgICAgICAgICAgICAgICAgMzA5MSAoa2lsbCBzdHI4IGludGVybmluZykKKyAgICAgICAgICAgICAgICAgICAzMTAxIChtZXJnZSBmcm9tIDIuNmEwLCBzZWUgNjIxNTEpCisgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQorICAgIFB5dGhvbiAzLjBhNDogMzExMSAoV0lUSF9DTEVBTlVQIG9wdGltaXphdGlvbikuCisgICAgUHl0aG9uIDMuMGE1OiAzMTMxIChsZXhpY2FsIGV4Y2VwdGlvbiBzdGFja2luZywgaW5jbHVkaW5nIFBPUF9FWENFUFQpCisgICAgUHl0aG9uIDMuMWEwOiAzMTQxIChvcHRpbWl6ZSBsaXN0LCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnM6CisgICAgICAgICAgICBjaGFuZ2UgTElTVF9BUFBFTkQgYW5kIFNFVF9BREQsIGFkZCBNQVBfQUREKQorICAgIFB5dGhvbiAzLjFhMDogMzE1MSAob3B0aW1pemUgY29uZGl0aW9uYWwgYnJhbmNoZXM6CisgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCisgICAgUHl0aG9uIDMuMmEwOiAzMTYwIChhZGQgU0VUVVBfV0lUSCkKKyAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgorICAgIFB5dGhvbiAzLjJhMTogMzE3MCAoYWRkIERVUF9UT1BfVFdPLCByZW1vdmUgRFVQX1RPUFggYW5kIFJPVF9GT1VSKQorICAgICAgICAgICAgICAgICAgdGFnOiBjcHl0aG9uLTMyCisgICAgUHl0aG9uIDMuMmEyICAzMTgwIChhZGQgREVMRVRFX0RFUkVGKQorICAgIFB5dGhvbiAzLjNhMCAgMzE5MCBfX2NsYXNzX18gc3VwZXIgY2xvc3VyZSBjaGFuZ2VkCisgICAgUHl0aG9uIDMuM2EwICAzMjAwIChfX3F1YWxuYW1lX18gYWRkZWQpCisgICAgICAgICAgICAgICAgICAgICAzMjEwIChhZGRlZCBzaXplIG1vZHVsbyAyKiozMiB0byB0aGUgcHljIGhlYWRlcikKKyAgICBQeXRob24gMy4zYTEgIDMyMjAgKGNoYW5nZWQgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbikKKyAgICBQeXRob24gMy4zYTQgIDMyMzAgKHJldmVydCBjaGFuZ2VzIHRvIGltcGxpY2l0IF9fY2xhc3NfXyBjbG9zdXJlKQorCitNQUdJQyBtdXN0IGNoYW5nZSB3aGVuZXZlciB0aGUgYnl0ZWNvZGUgZW1pdHRlZCBieSB0aGUgY29tcGlsZXIgbWF5IG5vCitsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQorZHVlIHRvIHRoZSBhZGRpdGlvbiBvZiBuZXcgb3Bjb2RlcykuCisKKyIiIgorX1JBV19NQUdJQ19OVU1CRVIgPSAzMjMwIHwgb3JkKCdccicpIDw8IDE2IHwgb3JkKCdcbicpIDw8IDI0CitfTUFHSUNfQllURVMgPSBieXRlcyhfUkFXX01BR0lDX05VTUJFUiA+PiBuICYgMHhmZiBmb3IgbiBpbiByYW5nZSgwLCAyNSwgOCkpCisKK19QWUNBQ0hFID0gJ19fcHljYWNoZV9fJworCitTT1VSQ0VfU1VGRklYRVMgPSBbJy5weSddICAjIF9zZXR1cCgpIGFkZHMgLnB5dyBhcyBuZWVkZWQuCisKK0RFQlVHX0JZVEVDT0RFX1NVRkZJWEVTID0gWycucHljJ10KK09QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUyA9IFsnLnB5byddCitpZiBfX2RlYnVnX186CisgICAgQllURUNPREVfU1VGRklYRVMgPSBERUJVR19CWVRFQ09ERV9TVUZGSVhFUworZWxzZToKKyAgICBCWVRFQ09ERV9TVUZGSVhFUyA9IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUworCitkZWYgY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGU9Tm9uZSk6CisgICAgIiIiR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHljLy5weW8gZmlsZS4KKworICAgIFRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZQorICAgIC5weWMvLnB5byBmaWxlIGNhbGN1bGF0ZWQgYXMgaWYgdGhlIC5weSBmaWxlIHdlcmUgaW1wb3J0ZWQuICBUaGUgZXh0ZW5zaW9uCisgICAgd2lsbCBiZSAucHljIHVubGVzcyBfX2RlYnVnX18gaXMgbm90IGRlZmluZWQsIHRoZW4gaXQgd2lsbCBiZSAucHlvLgorCisgICAgSWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIHRoZW4gaXQgbXVzdCBiZSBhIGJvb2xlYW4gYW5kIGlzIHRha2VuIGFzCisgICAgdGhlIHZhbHVlIG9mIF9fZGVidWdfXyBpbnN0ZWFkLgorCisgICAgSWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBkZWJ1ZyA9IF9fZGVidWdfXyBpZiBkZWJ1Z19vdmVycmlkZSBpcyBOb25lIGVsc2UgZGVidWdfb3ZlcnJpZGUKKyAgICBpZiBkZWJ1ZzoKKyAgICAgICAgc3VmZml4ZXMgPSBERUJVR19CWVRFQ09ERV9TVUZGSVhFUworICAgIGVsc2U6CisgICAgICAgIHN1ZmZpeGVzID0gT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTCisgICAgaGVhZCwgdGFpbCA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgYmFzZV9maWxlbmFtZSwgc2VwLCBfID0gdGFpbC5wYXJ0aXRpb24oJy4nKQorICAgIHRhZyA9IHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKKyAgICBpZiB0YWcgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBmaWxlbmFtZSA9ICcnLmpvaW4oW2Jhc2VfZmlsZW5hbWUsIHNlcCwgdGFnLCBzdWZmaXhlc1swXV0pCisgICAgcmV0dXJuIF9wYXRoX2pvaW4oaGVhZCwgX1BZQ0FDSEUsIGZpbGVuYW1lKQorCisKK2RlZiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKToKKyAgICAiIiJHaXZlbiB0aGUgcGF0aCB0byBhIC5weWMuLy5weW8gZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHkgZmlsZS4KKworICAgIFRoZSAucHljLy5weW8gZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvCisgICAgdGhlIC5weSBmaWxlIGNhbGN1bGF0ZWQgdG8gY29ycmVzcG9uZCB0byB0aGUgLnB5Yy8ucHlvIGZpbGUuICBJZiBwYXRoIGRvZXMKKyAgICBub3QgY29uZm9ybSB0byBQRVAgMzE0NyBmb3JtYXQsIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmCisgICAgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBpZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCisgICAgaGVhZCwgcHljYWNoZV9maWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgaGVhZCwgcHljYWNoZSA9IF9wYXRoX3NwbGl0KGhlYWQpCisgICAgaWYgcHljYWNoZSAhPSBfUFlDQUNIRToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30gbm90IGJvdHRvbS1sZXZlbCBkaXJlY3RvcnkgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQoX1BZQ0FDSEUsIHBhdGgpKQorICAgIGlmIHB5Y2FjaGVfZmlsZW5hbWUuY291bnQoJy4nKSAhPSAyOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdleHBlY3RlZCBvbmx5IDIgZG90cyBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3shcn0nLmZvcm1hdChweWNhY2hlX2ZpbGVuYW1lKSkKKyAgICBiYXNlX2ZpbGVuYW1lID0gcHljYWNoZV9maWxlbmFtZS5wYXJ0aXRpb24oJy4nKVswXQorICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIGJhc2VfZmlsZW5hbWUgKyBTT1VSQ0VfU1VGRklYRVNbMF0pCisKKworZGVmIF9nZXRfc291cmNlZmlsZShieXRlY29kZV9wYXRoKToKKyAgICAiIiJDb252ZXJ0IGEgYnl0ZWNvZGUgZmlsZSBwYXRoIHRvIGEgc291cmNlIHBhdGggKGlmIHBvc3NpYmxlKS4KKworICAgIFRoaXMgZnVuY3Rpb24gZXhpc3RzIHB1cmVseSBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yCisgICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoRmlsZW5hbWVzKCkgaW4gdGhlIEMgQVBJLgorCisgICAgIiIiCisgICAgaWYgbGVuKGJ5dGVjb2RlX3BhdGgpID09IDA6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmVzdCwgXywgZXh0ZW5zaW9uID0gYnl0ZWNvZGVfcGF0aC5ycGFyaXRpb24oJy4nKQorICAgIGlmIG5vdCByZXN0IG9yIGV4dGVuc2lvbi5sb3dlcigpWy0zOi0xXSAhPSAnLnB5JzoKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlX3BhdGgKKworICAgIHRyeToKKyAgICAgICAgc291cmNlX3BhdGggPSBzb3VyY2VfZnJvbV9jYWNoZShieXRlY29kZV9wYXRoKQorICAgIGV4Y2VwdCAoTm90SW1wbGVtZW50ZWRFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHNvdXJjZV9wYXRoID0gYnl0Y29kZV9wYXRoWy0xOl0KKworICAgIHJldHVybiBzb3VyY2VfcGF0aCBpZiBfcGF0aF9pc2ZpbGUoc291cmNlX3N0YXRzKSBlbHNlIGJ5dGVjb2RlX3BhdGgKKworCitkZWYgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlLCAqYXJncyk6CisgICAgIiIiUHJpbnQgdGhlIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIC12L1BZVEhPTlZFUkJPU0UgaXMgdHVybmVkIG9uLiIiIgorICAgIGlmIHN5cy5mbGFncy52ZXJib3NlOgorICAgICAgICBpZiBub3QgbWVzc2FnZS5zdGFydHN3aXRoKCgnIycsICdpbXBvcnQgJykpOgorICAgICAgICAgICAgbWVzc2FnZSA9ICcjICcgKyBtZXNzYWdlCisgICAgICAgIHByaW50KG1lc3NhZ2UuZm9ybWF0KCphcmdzKSwgZmlsZT1zeXMuc3RkZXJyKQorCiAKIGRlZiBzZXRfcGFja2FnZShmeG4pOgogICAgICIiIlNldCBfX3BhY2thZ2VfXyBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLiIiIgotICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIHNldF9wYWNrYWdlX3dyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgbW9kdWxlID0gZnhuKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSBvciBtb2R1bGUuX19wYWNrYWdlX18gaXMgTm9uZToKKyAgICAgICAgaWYgZ2V0YXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CiAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fcGFja2FnZV9fLnJwYXJ0aXRpb24oJy4nKVswXQogICAgICAgICByZXR1cm4gbW9kdWxlCi0gICAgX3dyYXAod3JhcHBlciwgZnhuKQotICAgIHJldHVybiB3cmFwcGVyCisgICAgX3dyYXAoc2V0X3BhY2thZ2Vfd3JhcHBlciwgZnhuKQorICAgIHJldHVybiBzZXRfcGFja2FnZV93cmFwcGVyCiAKIAogZGVmIHNldF9sb2FkZXIoZnhuKToKICAgICAiIiJTZXQgX19sb2FkZXJfXyBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLiIiIgotICAgIGRlZiB3cmFwcGVyKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIHNldF9sb2FkZXJfd3JhcHBlcihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBtb2R1bGUgPSBmeG4oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJyk6CiAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYKICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgIF93cmFwKHdyYXBwZXIsIGZ4bikKLSAgICByZXR1cm4gd3JhcHBlcgorICAgIF93cmFwKHNldF9sb2FkZXJfd3JhcHBlciwgZnhuKQorICAgIHJldHVybiBzZXRfbG9hZGVyX3dyYXBwZXIKIAogCiBkZWYgbW9kdWxlX2Zvcl9sb2FkZXIoZnhuKToKQEAgLTEyMCwzMSArNTI0LDU0IEBACiAKICAgICBUaGUgZGVjb3JhdGVkIGZ1bmN0aW9uIGlzIHBhc3NlZCB0aGUgbW9kdWxlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBtb2R1bGUKICAgICBuYW1lLiBUaGUgbW9kdWxlIHBhc3NlZCBpbiB0byB0aGUgZnVuY3Rpb24gaXMgZWl0aGVyIGZyb20gc3lzLm1vZHVsZXMgaWYKLSAgICBpdCBhbHJlYWR5IGV4aXN0cyBvciBpcyBhIG5ldyBtb2R1bGUgd2hpY2ggaGFzIF9fbmFtZV9fIHNldCBhbmQgaXMgaW5zZXJ0ZWQKLSAgICBpbnRvIHN5cy5tb2R1bGVzLiBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGUgZGVjb3JhdG9yIGNyZWF0ZWQgdGhlCi0gICAgbW9kdWxlIGl0IGlzIHN1YnNlcXVlbnRseSByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMuCisgICAgaXQgYWxyZWFkeSBleGlzdHMgb3IgaXMgYSBuZXcgbW9kdWxlLiBJZiB0aGUgbW9kdWxlIGlzIG5ldywgdGhlbiBfX25hbWVfXworICAgIGlzIHNldCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIG1ldGhvZCwgX19sb2FkZXJfXyBpcyBzZXQgdG8gc2VsZiwgYW5kCisgICAgX19wYWNrYWdlX18gaXMgc2V0IGFjY29yZGluZ2x5IChpZiBzZWxmLmlzX3BhY2thZ2UoKSBpcyBkZWZpbmVkKSB3aWxsIGJlIHNldAorICAgIGJlZm9yZSBpdCBpcyBwYXNzZWQgdG8gdGhlIGRlY29yYXRlZCBmdW5jdGlvbiAoaWYgc2VsZi5pc19wYWNrYWdlKCkgZG9lcworICAgIG5vdCB3b3JrIGZvciB0aGUgbW9kdWxlIGl0IHdpbGwgYmUgc2V0IHBvc3QtbG9hZCkuCisKKyAgICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGUgZGVjb3JhdG9yIGNyZWF0ZWQgdGhlIG1vZHVsZSBpdCBpcworICAgIHN1YnNlcXVlbnRseSByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMuCiAKICAgICBUaGUgZGVjb3JhdG9yIGFzc3VtZXMgdGhhdCB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uIHRha2VzIHRoZSBtb2R1bGUgbmFtZSBhcwogICAgIHRoZSBzZWNvbmQgYXJndW1lbnQuCiAKICAgICAiIiIKLSAgICBkZWYgZGVjb3JhdGVkKHNlbGYsIGZ1bGxuYW1lLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyKHNlbGYsIGZ1bGxuYW1lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlcy5nZXQoZnVsbG5hbWUpCi0gICAgICAgIGlzX3JlbG9hZCA9IGJvb2wobW9kdWxlKQorICAgICAgICBpc19yZWxvYWQgPSBtb2R1bGUgaXMgbm90IE5vbmUKICAgICAgICAgaWYgbm90IGlzX3JlbG9hZDoKICAgICAgICAgICAgICMgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIG9wZW4oKSBpcyBjYWxsZWQgYXMgdGhlICdpbycgbW9kdWxlCiAgICAgICAgICAgICAjIGltcGxpY2l0bHkgaW1wb3J0cyAnbG9jYWxlJyBhbmQgd291bGQgb3RoZXJ3aXNlIHRyaWdnZXIgYW4KICAgICAgICAgICAgICMgaW5maW5pdGUgbG9vcC4KLSAgICAgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKGZ1bGxuYW1lKQorICAgICAgICAgICAgbW9kdWxlID0gbmV3X21vZHVsZShmdWxsbmFtZSkKKyAgICAgICAgICAgICMgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIHB1dHRpbmcgdGhlIG1vZHVsZSBpbiBzeXMubW9kdWxlcworICAgICAgICAgICAgIyAob3RoZXJ3aXNlIGFuIG9wdGltaXphdGlvbiBzaG9ydGN1dCBpbiBpbXBvcnQuYyBiZWNvbWVzIHdyb25nKQorICAgICAgICAgICAgbW9kdWxlLl9faW5pdGlhbGl6aW5nX18gPSBUcnVlCiAgICAgICAgICAgICBzeXMubW9kdWxlc1tmdWxsbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlzX3BhY2thZ2UgPSBzZWxmLmlzX3BhY2thZ2UoZnVsbG5hbWUpCisgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBpc19wYWNrYWdlOgorICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBmdWxsbmFtZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IGZ1bGxuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbW9kdWxlLl9faW5pdGlhbGl6aW5nX18gPSBUcnVlCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgSWYgX19wYWNrYWdlX18gd2FzIG5vdCBzZXQgYWJvdmUsIF9faW1wb3J0X18oKSB3aWxsIGRvIGl0IGxhdGVyLgogICAgICAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBtb2R1bGUsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgaWYgbm90IGlzX3JlbG9hZDoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCiAgICAgICAgICAgICByYWlzZQotICAgIF93cmFwKGRlY29yYXRlZCwgZnhuKQotICAgIHJldHVybiBkZWNvcmF0ZWQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG1vZHVsZS5fX2luaXRpYWxpemluZ19fID0gRmFsc2UKKyAgICBfd3JhcChtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIKIAogCiBkZWYgX2NoZWNrX25hbWUobWV0aG9kKToKQEAgLTE1NSwzOCArNTgyLDUxIEBACiAgICAgY29tcGFyZWQgYWdhaW5zdC4gSWYgdGhlIGNvbXBhcmlzb24gZmFpbHMgdGhlbiBJbXBvcnRFcnJvciBpcyByYWlzZWQuCiAKICAgICAiIiIKLSAgICBkZWYgaW5uZXIoc2VsZiwgbmFtZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgaWYgc2VsZi5fbmFtZSAhPSBuYW1lOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImxvYWRlciBjYW5ub3QgaGFuZGxlICVzIiAlIG5hbWUpCisgICAgZGVmIF9jaGVja19uYW1lX3dyYXBwZXIoc2VsZiwgbmFtZT1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lCisgICAgICAgIGVsaWYgc2VsZi5uYW1lICE9IG5hbWU6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibG9hZGVyIGNhbm5vdCBoYW5kbGUgJXMiICUgbmFtZSwgbmFtZT1uYW1lKQogICAgICAgICByZXR1cm4gbWV0aG9kKHNlbGYsIG5hbWUsICphcmdzLCAqKmt3YXJncykKLSAgICBfd3JhcChpbm5lciwgbWV0aG9kKQotICAgIHJldHVybiBpbm5lcgorICAgIF93cmFwKF9jaGVja19uYW1lX3dyYXBwZXIsIG1ldGhvZCkKKyAgICByZXR1cm4gX2NoZWNrX25hbWVfd3JhcHBlcgogCiAKIGRlZiBfcmVxdWlyZXNfYnVpbHRpbihmeG4pOgogICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhlIG5hbWVkIG1vZHVsZSBpcyBidWlsdC1pbi4iIiIKLSAgICBkZWYgd3JhcHBlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgZGVmIF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICBpZiBmdWxsbmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInswfSBpcyBub3QgYSBidWlsdC1pbiBtb2R1bGUiLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigie30gaXMgbm90IGEgYnVpbHQtaW4gbW9kdWxlIi5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkKICAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBmdWxsbmFtZSkKLSAgICBfd3JhcCh3cmFwcGVyLCBmeG4pCi0gICAgcmV0dXJuIHdyYXBwZXIKKyAgICBfd3JhcChfcmVxdWlyZXNfYnVpbHRpbl93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIKIAogCiBkZWYgX3JlcXVpcmVzX2Zyb3plbihmeG4pOgogICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhlIG5hbWVkIG1vZHVsZSBpcyBmcm96ZW4uIiIiCi0gICAgZGVmIHdyYXBwZXIoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICBpZiBub3QgaW1wLmlzX2Zyb3plbihmdWxsbmFtZSk6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiezB9IGlzIG5vdCBhIGZyb3plbiBtb2R1bGUiLmZvcm1hdChmdWxsbmFtZSkpCisgICAgZGVmIF9yZXF1aXJlc19mcm96ZW5fd3JhcHBlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIGlmIG5vdCBfaW1wLmlzX2Zyb3plbihmdWxsbmFtZSk6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigie30gaXMgbm90IGEgZnJvemVuIG1vZHVsZSIuZm9ybWF0KGZ1bGxuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpCiAgICAgICAgIHJldHVybiBmeG4oc2VsZiwgZnVsbG5hbWUpCi0gICAgX3dyYXAod3JhcHBlciwgZnhuKQotICAgIHJldHVybiB3cmFwcGVyCisgICAgX3dyYXAoX3JlcXVpcmVzX2Zyb3plbl93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIF9yZXF1aXJlc19mcm96ZW5fd3JhcHBlcgogCiAKLWRlZiBfc3VmZml4X2xpc3Qoc3VmZml4X3R5cGUpOgotICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZmlsZSBzdWZmaXhlcyBiYXNlZCBvbiB0aGUgaW1wIGZpbGUgdHlwZS4iIiIKLSAgICByZXR1cm4gW3N1ZmZpeFswXSBmb3Igc3VmZml4IGluIGltcC5nZXRfc3VmZml4ZXMoKQotICAgICAgICAgICAgaWYgc3VmZml4WzJdID09IHN1ZmZpeF90eXBlXQorZGVmIF9maW5kX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUgYnkgZGVsZWdhdGluZyB0bworICAgIHNlbGYuZmluZF9sb2FkZXIoKS4iIiIKKyAgICAjIENhbGwgZmluZF9sb2FkZXIoKS4gSWYgaXQgcmV0dXJucyBhIHN0cmluZyAoaW5kaWNhdGluZyB0aGlzCisgICAgIyBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlIHBvcnRpb24pLCBnZW5lcmF0ZSBhIHdhcm5pbmcgYW5kCisgICAgIyByZXR1cm4gTm9uZS4KKyAgICBsb2FkZXIsIHBvcnRpb25zID0gc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICBpZiBsb2FkZXIgaXMgTm9uZSBhbmQgbGVuKHBvcnRpb25zKToKKyAgICAgICAgbXNnID0gIk5vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fIgorICAgICAgICBfd2FybmluZ3Mud2Fybihtc2cuZm9ybWF0KHBvcnRpb25zWzBdKSwgSW1wb3J0V2FybmluZykKKyAgICByZXR1cm4gbG9hZGVyCisKKwogCiAKICMgTG9hZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTIwMSw2ICs2NDEsMTAgQEAKICAgICAiIiIKIAogICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG1vZHVsZSk6CisgICAgICAgIHJldHVybiAiPG1vZHVsZSAne30nIChidWlsdC1pbik+Ii5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorCisgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIkZpbmQgdGhlIGJ1aWx0LWluIG1vZHVsZS4KIApAQCAtMjA5LDcgKzY1Myw3IEBACiAgICAgICAgICIiIgogICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGNscyBpZiBpbXAuaXNfYnVpbHRpbihmdWxsbmFtZSkgZWxzZSBOb25lCisgICAgICAgIHJldHVybiBjbHMgaWYgX2ltcC5pc19idWlsdGluKGZ1bGxuYW1lKSBlbHNlIE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIEBzZXRfcGFja2FnZQpAQCAtMjE5LDcgKzY2Myw3IEBACiAgICAgICAgICIiIkxvYWQgYSBidWlsdC1pbiBtb2R1bGUuIiIiCiAgICAgICAgIGlzX3JlbG9hZCA9IGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbXAuaW5pdF9idWlsdGluKGZ1bGxuYW1lKQorICAgICAgICAgICAgcmV0dXJuIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoX2ltcC5pbml0X2J1aWx0aW4sIGZ1bGxuYW1lKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBpZiBub3QgaXNfcmVsb2FkIGFuZCBmdWxsbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCkBAIC0yNDAsNyArNjg0LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBAX3JlcXVpcmVzX2J1aWx0aW4KICAgICBkZWYgaXNfcGFja2FnZShjbHMsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgYnVpbHQtaW4gbW9kdWxlIGFyZSBuZXZlciBwYWNrYWdlcy4iIiIKKyAgICAgICAgIiIiUmV0dXJuIEZhbHNlIGFzIGJ1aWx0LWluIG1vZHVsZXMgYXJlIG5ldmVyIHBhY2thZ2VzLiIiIgogICAgICAgICByZXR1cm4gRmFsc2UKIAogCkBAIC0yNTQsOSArNjk4LDEzIEBACiAgICAgIiIiCiAKICAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbW9kdWxlX3JlcHIoY2xzLCBtKToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlICd7fScgKGZyb3plbik+Ii5mb3JtYXQobS5fX25hbWVfXykKKworICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICAiIiJGaW5kIGEgZnJvemVuIG1vZHVsZS4iIiIKLSAgICAgICAgcmV0dXJuIGNscyBpZiBpbXAuaXNfZnJvemVuKGZ1bGxuYW1lKSBlbHNlIE5vbmUKKyAgICAgICAgcmV0dXJuIGNscyBpZiBfaW1wLmlzX2Zyb3plbihmdWxsbmFtZSkgZWxzZSBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBAc2V0X3BhY2thZ2UKQEAgLTI2Niw3ICs3MTQsMTAgQEAKICAgICAgICAgIiIiTG9hZCBhIGZyb3plbiBtb2R1bGUuIiIiCiAgICAgICAgIGlzX3JlbG9hZCA9IGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbXAuaW5pdF9mcm96ZW4oZnVsbG5hbWUpCisgICAgICAgICAgICBtID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmluaXRfZnJvemVuLCBmdWxsbmFtZSkKKyAgICAgICAgICAgICMgTGV0IG91ciBvd24gbW9kdWxlX3JlcHIoKSBtZXRob2QgcHJvZHVjZSBhIHN1aXRhYmxlIHJlcHIuCisgICAgICAgICAgICBkZWwgbS5fX2ZpbGVfXworICAgICAgICAgICAgcmV0dXJuIG0KICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgaWYgbm90IGlzX3JlbG9hZCBhbmQgZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXQpAQCAtMjc2LDcgKzcyNyw3IEBACiAgICAgQF9yZXF1aXJlc19mcm96ZW4KICAgICBkZWYgZ2V0X2NvZGUoY2xzLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgY29kZSBvYmplY3QgZm9yIHRoZSBmcm96ZW4gbW9kdWxlLiIiIgotICAgICAgICByZXR1cm4gaW1wLmdldF9mcm96ZW5fb2JqZWN0KGZ1bGxuYW1lKQorICAgICAgICByZXR1cm4gX2ltcC5nZXRfZnJvemVuX29iamVjdChmdWxsbmFtZSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIEBfcmVxdWlyZXNfZnJvemVuCkBAIC0yODcsNDAgKzczOCwxMTcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBAX3JlcXVpcmVzX2Zyb3plbgogICAgIGRlZiBpc19wYWNrYWdlKGNscywgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gaWYgdGhlIGZyb3plbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgotICAgICAgICByZXR1cm4gaW1wLmlzX2Zyb3plbl9wYWNrYWdlKGZ1bGxuYW1lKQorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZnJvemVuIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCisgICAgICAgIHJldHVybiBfaW1wLmlzX2Zyb3plbl9wYWNrYWdlKGZ1bGxuYW1lKQorCisKK2NsYXNzIFdpbmRvd3NSZWdpc3RyeUZpbmRlcjoKKworICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIG1vZHVsZXMgZGVjbGFyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuCisgICAgIiIiCisKKyAgICBSRUdJU1RSWV9LRVkgPSAoCisgICAgICAgICJTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259IgorICAgICAgICAiXFxNb2R1bGVzXFx7ZnVsbG5hbWV9IikKKyAgICBSRUdJU1RSWV9LRVlfREVCVUcgPSAoCisgICAgICAgICJTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259IgorICAgICAgICAiXFxNb2R1bGVzXFx7ZnVsbG5hbWV9XFxEZWJ1ZyIpCisgICAgREVCVUdfQlVJTEQgPSBGYWxzZSAgIyBDaGFuZ2VkIGluIF9zZXR1cCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX29wZW5fcmVnaXN0cnkoY2xzLCBrZXkpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKKyAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfc2VhcmNoX3JlZ2lzdHJ5KGNscywgZnVsbG5hbWUpOgorICAgICAgICBpZiBjbHMuREVCVUdfQlVJTEQ6CisgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZX0RFQlVHCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZCisgICAgICAgIGtleSA9IHJlZ2lzdHJ5X2tleS5mb3JtYXQoZnVsbG5hbWU9ZnVsbG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIGNscy5fb3Blbl9yZWdpc3RyeShrZXkpIGFzIGhrZXk6CisgICAgICAgICAgICAgICAgZmlsZXBhdGggPSBfd2lucmVnLlF1ZXJ5VmFsdWUoaGtleSwgIiIpCisgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gZmlsZXBhdGgKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgorICAgICAgICAiIiJGaW5kIG1vZHVsZSBuYW1lZCBpbiB0aGUgcmVnaXN0cnkuIiIiCisgICAgICAgIGZpbGVwYXRoID0gY2xzLl9zZWFyY2hfcmVnaXN0cnkoZnVsbG5hbWUpCisgICAgICAgIGlmIGZpbGVwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBfb3Muc3RhdChmaWxlcGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcywgXyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKKyAgICAgICAgICAgIGlmIGZpbGVwYXRoLmVuZHN3aXRoKHR1cGxlKHN1ZmZpeGVzKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlcihmdWxsbmFtZSwgZmlsZXBhdGgpCiAKIAogY2xhc3MgX0xvYWRlckJhc2ljczoKIAogICAgICIiIkJhc2UgY2xhc3Mgb2YgY29tbW9uIGNvZGUgbmVlZGVkIGJ5IGJvdGggU291cmNlTG9hZGVyIGFuZAotICAgIF9Tb3VyY2VsZXNzRmlsZUxvYWRlci4iIiIKKyAgICBTb3VyY2VsZXNzRmlsZUxvYWRlci4iIiIKIAogICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgSW5zcGVjdExvYWRlci5pc19wYWNrYWdlIGJ5IGNoZWNraW5nIGlmCiAgICAgICAgIHRoZSBwYXRoIHJldHVybmVkIGJ5IGdldF9maWxlbmFtZSBoYXMgYSBmaWxlbmFtZSBvZiAnX19pbml0X18ucHknLiIiIgotICAgICAgICBmaWxlbmFtZSA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKS5ycGFydGl0aW9uKHBhdGhfc2VwKVsyXQotICAgICAgICByZXR1cm4gZmlsZW5hbWUucnNwbGl0KCcuJywgMSlbMF0gPT0gJ19faW5pdF9fJworICAgICAgICBmaWxlbmFtZSA9IF9wYXRoX3NwbGl0KHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKSlbMV0KKyAgICAgICAgZmlsZW5hbWVfYmFzZSA9IGZpbGVuYW1lLnJzcGxpdCgnLicsIDEpWzBdCisgICAgICAgIHRhaWxfbmFtZSA9IGZ1bGxuYW1lLnJwYXJ0aXRpb24oJy4nKVsyXQorICAgICAgICByZXR1cm4gZmlsZW5hbWVfYmFzZSA9PSAnX19pbml0X18nIGFuZCB0YWlsX25hbWUgIT0gJ19faW5pdF9fJwogCi0gICAgZGVmIF9ieXRlc19mcm9tX2J5dGVjb2RlKHNlbGYsIGZ1bGxuYW1lLCBkYXRhLCBzb3VyY2VfbXRpbWUpOgorICAgIGRlZiBfYnl0ZXNfZnJvbV9ieXRlY29kZShzZWxmLCBmdWxsbmFtZSwgZGF0YSwgYnl0ZWNvZGVfcGF0aCwgc291cmNlX3N0YXRzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBtYXJzaGFsbGVkIGJ5dGVzIGZyb20gYnl0ZWNvZGUsIHZlcmlmeWluZyB0aGUgbWFnaWMKLSAgICAgICAgbnVtYmVyIGFuZCB0aW1lc3RhbXAgYWxvbmcgdGhlIHdheS4KKyAgICAgICAgbnVtYmVyLCB0aW1lc3RhbXAgYW5kIHNvdXJjZSBzaXplIGFsb25nIHRoZSB3YXkuCiAKLSAgICAgICAgSWYgc291cmNlX210aW1lIGlzIE5vbmUgdGhlbiBza2lwIHRoZSB0aW1lc3RhbXAgY2hlY2suCisgICAgICAgIElmIHNvdXJjZV9zdGF0cyBpcyBOb25lIHRoZW4gc2tpcCB0aGUgdGltZXN0YW1wIGNoZWNrLgogCiAgICAgICAgICIiIgogICAgICAgICBtYWdpYyA9IGRhdGFbOjRdCiAgICAgICAgIHJhd190aW1lc3RhbXAgPSBkYXRhWzQ6OF0KLSAgICAgICAgaWYgbGVuKG1hZ2ljKSAhPSA0IG9yIG1hZ2ljICE9IGltcC5nZXRfbWFnaWMoKToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICByYXdfc2l6ZSA9IGRhdGFbODoxMl0KKyAgICAgICAgaWYgbWFnaWMgIT0gX01BR0lDX0JZVEVTOgorICAgICAgICAgICAgbXNnID0gJ2JhZCBtYWdpYyBudW1iZXIgaW4geyFyfTogeyFyfScuZm9ybWF0KGZ1bGxuYW1lLCBtYWdpYykKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICBlbGlmIGxlbihyYXdfdGltZXN0YW1wKSAhPSA0OgotICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoImJhZCB0aW1lc3RhbXAgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCi0gICAgICAgIGVsaWYgc291cmNlX210aW1lIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgbWFyc2hhbC5fcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgbWVzc2FnZSA9ICdiYWQgdGltZXN0YW1wIGluIHt9Jy5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQorICAgICAgICBlbGlmIGxlbihyYXdfc2l6ZSkgIT0gNDoKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnYmFkIHNpemUgaW4ge30nLmZvcm1hdChmdWxsbmFtZSkKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCisgICAgICAgIGlmIHNvdXJjZV9zdGF0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc291cmNlX3N0YXRzWydtdGltZSddKQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfdGltZXN0YW1wKSAhPSBzb3VyY2VfbXRpbWU6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHt9Jy5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgbmFtZT1mdWxsbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvdXJjZV9zaXplID0gc291cmNlX3N0YXRzWydzaXplJ10gJiAweEZGRkZGRkZGCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBfcl9sb25nKHJhd19zaXplKSAhPSBzb3VyY2Vfc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHt9Ii5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAjIENhbid0IHJldHVybiB0aGUgY29kZSBvYmplY3QgYXMgZXJyb3JzIGZyb20gbWFyc2hhbCBsb2FkaW5nIG5lZWQgdG8KICAgICAgICAgIyBwcm9wYWdhdGUgZXZlbiB3aGVuIHNvdXJjZSBpcyBhdmFpbGFibGUuCi0gICAgICAgIHJldHVybiBkYXRhWzg6XQorICAgICAgICByZXR1cm4gZGF0YVsxMjpdCiAKICAgICBAbW9kdWxlX2Zvcl9sb2FkZXIKICAgICBkZWYgX2xvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSwgKiwgc291cmNlbGVzcz1GYWxzZSk6CkBAIC0zMzAsMTYgKzg1OCwxOSBAQAogICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYuZ2V0X2NvZGUobmFtZSkKICAgICAgICAgbW9kdWxlLl9fZmlsZV9fID0gc2VsZi5nZXRfZmlsZW5hbWUobmFtZSkKICAgICAgICAgaWYgbm90IHNvdXJjZWxlc3M6Ci0gICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShtb2R1bGUuX19maWxlX18pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBjYWNoZV9mcm9tX3NvdXJjZShtb2R1bGUuX19maWxlX18pCisgICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IG1vZHVsZS5fX2ZpbGVfXwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBtb2R1bGUuX19maWxlX18KICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbmFtZQogICAgICAgICBpZiBzZWxmLmlzX3BhY2thZ2UobmFtZSk6Ci0gICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbbW9kdWxlLl9fZmlsZV9fLnJzcGxpdChwYXRoX3NlcCwgMSlbMF1dCisgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbX3BhdGhfc3BsaXQobW9kdWxlLl9fZmlsZV9fKVswXV0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX3BhY2thZ2VfXy5ycGFydGl0aW9uKCcuJylbMF0KICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzZWxmCi0gICAgICAgIGV4ZWMoY29kZV9vYmplY3QsIG1vZHVsZS5fX2RpY3RfXykKKyAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlX29iamVjdCwgbW9kdWxlLl9fZGljdF9fKQogICAgICAgICByZXR1cm4gbW9kdWxlCiAKIApAQCAtMzQ4LDEyICs4NzksMzEgQEAKICAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKICAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHRoYXQgcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgKGFuIGludCkgZm9yIHRoZQogICAgICAgICBzcGVjaWZpZWQgcGF0aCwgd2hlcmUgcGF0aCBpcyBhIHN0ci4KLQotICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIHRoZSBsb2FkZXIgdG8gcmVhZCBieXRlY29kZSBmaWxlcy4KLQogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCByZXR1cm5pbmcgYSBtZXRhZGF0YSBkaWN0IGZvciB0aGUgc3BlY2lmaWVkIHBhdGgKKyAgICAgICAgdG8gYnkgdGhlIHBhdGggKHN0cikuCisgICAgICAgIFBvc3NpYmxlIGtleXM6CisgICAgICAgIC0gJ210aW1lJyAobWFuZGF0b3J5KSBpcyB0aGUgbnVtZXJpYyB0aW1lc3RhbXAgb2YgbGFzdCBzb3VyY2UKKyAgICAgICAgICBjb2RlIG1vZGlmaWNhdGlvbjsKKyAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyB0aGUgbG9hZGVyIHRvIHJlYWQgYnl0ZWNvZGUgZmlsZXMuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYucGF0aF9tdGltZShwYXRoKX0KKworICAgIGRlZiBfY2FjaGVfYnl0ZWNvZGUoc2VsZiwgc291cmNlX3BhdGgsIGNhY2hlX3BhdGgsIGRhdGEpOgorICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgZm9yIHRoZSB3cml0aW5nIG9mIGJ5dGVjb2RlIGZpbGVzLgorCisgICAgICAgIFRoZSBzb3VyY2UgcGF0aCBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gY29ycmVjdGx5IHRyYW5zZmVyIHBlcm1pc3Npb25zCisgICAgICAgICIiIgorICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgd2UgZGVsZWdhdGUgdG8gc2V0X2RhdGEoKQorICAgICAgICByZXR1cm4gc2VsZi5zZXRfZGF0YShjYWNoZV9wYXRoLCBkYXRhKQorCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgogICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgogCkBAIC0zNjksMjggKzkxOSw0MiBAQAogICAgICAgICBwYXRoID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvdXJjZV9ieXRlcyA9IHNlbGYuZ2V0X2RhdGEocGF0aCkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigic291cmNlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBnZXRfZGF0YSgpIikKLSAgICAgICAgZW5jb2RpbmcgPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoX2lvLkJ5dGVzSU8oc291cmNlX2J5dGVzKS5yZWFkbGluZSkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInNvdXJjZSBub3QgYXZhaWxhYmxlIHRocm91Z2ggZ2V0X2RhdGEoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKSBmcm9tIGV4YworICAgICAgICByZWFkc291cmNlID0gX2lvLkJ5dGVzSU8oc291cmNlX2J5dGVzKS5yZWFkbGluZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhyZWFkc291cmNlKQorICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIkZhaWxlZCB0byBkZXRlY3QgZW5jb2RpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKICAgICAgICAgbmV3bGluZV9kZWNvZGVyID0gX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoTm9uZSwgVHJ1ZSkKLSAgICAgICAgcmV0dXJuIG5ld2xpbmVfZGVjb2Rlci5kZWNvZGUoc291cmNlX2J5dGVzLmRlY29kZShlbmNvZGluZ1swXSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBuZXdsaW5lX2RlY29kZXIuZGVjb2RlKHNvdXJjZV9ieXRlcy5kZWNvZGUoZW5jb2RpbmdbMF0pKQorICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJGYWlsZWQgdG8gZGVjb2RlIHNvdXJjZSBmaWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpIGZyb20gZXhjCiAKICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9jb2RlLgogCi0gICAgICAgIFJlYWRpbmcgb2YgYnl0ZWNvZGUgcmVxdWlyZXMgcGF0aF9tdGltZSB0byBiZSBpbXBsZW1lbnRlZC4gVG8gd3JpdGUKKyAgICAgICAgUmVhZGluZyBvZiBieXRlY29kZSByZXF1aXJlcyBwYXRoX3N0YXRzIHRvIGJlIGltcGxlbWVudGVkLiBUbyB3cml0ZQogICAgICAgICBieXRlY29kZSwgc2V0X2RhdGEgbXVzdCBhbHNvIGJlIGltcGxlbWVudGVkLgogCiAgICAgICAgICIiIgogICAgICAgICBzb3VyY2VfcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotICAgICAgICBieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZV9wYXRoKQogICAgICAgICBzb3VyY2VfbXRpbWUgPSBOb25lCi0gICAgICAgIGlmIGJ5dGVjb2RlX3BhdGggaXMgbm90IE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBjYWNoZV9mcm9tX3NvdXJjZShzb3VyY2VfcGF0aCkKKyAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gTm9uZQorICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSA9IHNlbGYucGF0aF9tdGltZShzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICBzdCA9IHNlbGYucGF0aF9zdGF0cyhzb3VyY2VfcGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHN0WydtdGltZSddKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKQEAgLTM5OCwyOSArOTYyLDM3IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfZGF0YSA9IHNlbGYuX2J5dGVzX2Zyb21fYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVPRkVycm9yKToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBtYXJzaGFsLmxvYWRzKGJ5dGVzX2RhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBjb2RlX3R5cGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmb3VuZCwgX2NvZGVfdHlwZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ltcC5fZml4X2NvX2ZpbGVuYW1lKGZvdW5kLCBzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHt9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gIk5vbi1jb2RlIG9iamVjdCBpbiB7fSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KGJ5dGVjb2RlX3BhdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQoYnl0ZWNvZGVfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQotICAgICAgICBjb2RlX29iamVjdCA9IGNvbXBpbGUoc291cmNlX2J5dGVzLCBzb3VyY2VfcGF0aCwgJ2V4ZWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X2luaGVyaXQ9VHJ1ZSkKKyAgICAgICAgY29kZV9vYmplY3QgPSBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGNvbXBpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgsICdleGVjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKICAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgIyBJZiBlLmcuIEp5dGhvbiBldmVyIGltcGxlbWVudHMgaW1wLmNhY2hlX2Zyb21fc291cmNlIHRvIGhhdmUKLSAgICAgICAgICAgICMgdGhlaXIgb3duIGNhY2hlZCBmaWxlIGZvcm1hdCwgdGhpcyBibG9jayBvZiBjb2RlIHdpbGwgbW9zdCBsaWtlbHkKLSAgICAgICAgICAgICMgdGhyb3cgYW4gZXhjZXB0aW9uLgotICAgICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShpbXAuZ2V0X21hZ2ljKCkpCi0gICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLl93X2xvbmcoc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KF9NQUdJQ19CWVRFUykKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcoc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcobGVuKHNvdXJjZV9ieXRlcykpKQogICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlX29iamVjdCkpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXRfZGF0YShieXRlY29kZV9wYXRoLCBkYXRhKQorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKQEAgLTQzNiw3ICsxMDA4LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2xvYWRfbW9kdWxlKGZ1bGxuYW1lKQogCiAKLWNsYXNzIF9GaWxlTG9hZGVyOgorY2xhc3MgRmlsZUxvYWRlcjoKIAogICAgICIiIkJhc2UgZmlsZSBsb2FkZXIgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyB0aGUgbG9hZGVyIHByb3RvY29sIG1ldGhvZHMgdGhhdAogICAgIHJlcXVpcmUgZmlsZSBzeXN0ZW0gdXNhZ2UuIiIiCkBAIC00NDQsMTMgKzEwMTYsMjAgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgogICAgICAgICAiIiJDYWNoZSB0aGUgbW9kdWxlIG5hbWUgYW5kIHRoZSBwYXRoIHRvIHRoZSBmaWxlIGZvdW5kIGJ5IHRoZQogICAgICAgICBmaW5kZXIuIiIiCi0gICAgICAgIHNlbGYuX25hbWUgPSBmdWxsbmFtZQotICAgICAgICBzZWxmLl9wYXRoID0gcGF0aAorICAgICAgICBzZWxmLm5hbWUgPSBmdWxsbmFtZQorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisKKyAgICBAX2NoZWNrX25hbWUKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJMb2FkIGEgbW9kdWxlIGZyb20gYSBmaWxlLiIiIgorICAgICAgICAjIElzc3VlICMxNDg1NzogQXZvaWQgdGhlIHplcm8tYXJndW1lbnQgZm9ybSBzbyB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgIyBvZiB0aGF0IGZvcm0gY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBicmVha2luZyB0aGUgZnJvemVuIG1vZHVsZQorICAgICAgICByZXR1cm4gc3VwZXIoRmlsZUxvYWRlciwgc2VsZikubG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBwYXRoIHRvIHRoZSBzb3VyY2UgZmlsZSBhcyBmb3VuZCBieSB0aGUgZmluZGVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcGF0aAorICAgICAgICByZXR1cm4gc2VsZi5wYXRoCiAKICAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgZGF0YSBmcm9tIHBhdGggYXMgcmF3IGJ5dGVzLiIiIgpAQCAtNDU4LDUyICsxMDM3LDUzIEBACiAgICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKIAogCi1jbGFzcyBfU291cmNlRmlsZUxvYWRlcihfRmlsZUxvYWRlciwgU291cmNlTG9hZGVyKToKK2NsYXNzIFNvdXJjZUZpbGVMb2FkZXIoRmlsZUxvYWRlciwgU291cmNlTG9hZGVyKToKIAogICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIFNvdXJjZUxvYWRlciB1c2luZyB0aGUgZmlsZSBzeXN0ZW0uIiIiCiAKLSAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBhdGguIiIiCi0gICAgICAgIHJldHVybiBpbnQoX29zLnN0YXQocGF0aCkuc3RfbXRpbWUpCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIlJldHVybiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBwYXRoLiIiIgorICAgICAgICBzdCA9IF9vcy5zdGF0KHBhdGgpCisgICAgICAgIHJldHVybiB7J210aW1lJzogc3Quc3RfbXRpbWUsICdzaXplJzogc3Quc3Rfc2l6ZX0KIAotICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhKToKKyAgICBkZWYgX2NhY2hlX2J5dGVjb2RlKHNlbGYsIHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKToKKyAgICAgICAgIyBBZGFwdCBiZXR3ZWVuIHRoZSB0d28gQVBJcworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2RlID0gX29zLnN0YXQoc291cmNlX3BhdGgpLnN0X21vZGUKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBtb2RlID0gMG82NjYKKyAgICAgICAgcmV0dXJuIHNlbGYuc2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCwgZGF0YSwgX21vZGU9bW9kZSkKKworICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhLCAqLCBfbW9kZT0wbzY2Nik6CiAgICAgICAgICIiIldyaXRlIGJ5dGVzIGRhdGEgdG8gYSBmaWxlLiIiIgotICAgICAgICBwYXJlbnQsIF8sIGZpbGVuYW1lID0gcGF0aC5ycGFydGl0aW9uKHBhdGhfc2VwKQorICAgICAgICBwYXJlbnQsIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQocGF0aCkKICAgICAgICAgcGF0aF9wYXJ0cyA9IFtdCiAgICAgICAgICMgRmlndXJlIG91dCB3aGF0IGRpcmVjdG9yaWVzIGFyZSBtaXNzaW5nLgogICAgICAgICB3aGlsZSBwYXJlbnQgYW5kIG5vdCBfcGF0aF9pc2RpcihwYXJlbnQpOgotICAgICAgICAgICAgcGFyZW50LCBfLCBwYXJ0ID0gcGFyZW50LnJwYXJ0aXRpb24ocGF0aF9zZXApCisgICAgICAgICAgICBwYXJlbnQsIHBhcnQgPSBfcGF0aF9zcGxpdChwYXJlbnQpCiAgICAgICAgICAgICBwYXRoX3BhcnRzLmFwcGVuZChwYXJ0KQogICAgICAgICAjIENyZWF0ZSBuZWVkZWQgZGlyZWN0b3JpZXMuCiAgICAgICAgIGZvciBwYXJ0IGluIHJldmVyc2VkKHBhdGhfcGFydHMpOgogICAgICAgICAgICAgcGFyZW50ID0gX3BhdGhfam9pbihwYXJlbnQsIHBhcnQpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgX29zLm1rZGlyKHBhcmVudCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgICAgICAgICAgIyBQcm9iYWJseSBhbm90aGVyIFB5dGhvbiBwcm9jZXNzIGFscmVhZHkgY3JlYXRlZCB0aGUgZGlyLgotICAgICAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKICAgICAgICAgICAgICAgICAjIElmIGNhbid0IGdldCBwcm9wZXIgYWNjZXNzLCB0aGVuIGp1c3QgZm9yZ2V0IGFib3V0IHdyaXRpbmcKICAgICAgICAgICAgICAgICAjIHRoZSBkYXRhLgotICAgICAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FQUNDRVM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggX2lvLkZpbGVJTyhwYXRoLCAnd2InKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZGF0YSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgIyBEb24ndCB3b3JyeSBpZiB5b3UgY2FuJ3Qgd3JpdGUgYnl0ZWNvZGUuCi0gICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRUFDQ0VTOgogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKKyAgICAgICAgZXhjZXB0IChQZXJtaXNzaW9uRXJyb3IsIEZpbGVFeGlzdHNFcnJvcik6CisgICAgICAgICAgICAjIERvbid0IHdvcnJ5IGlmIHlvdSBjYW4ndCB3cml0ZSBieXRlY29kZSBvciBzb21lb25lIGlzIHdyaXRpbmcKKyAgICAgICAgICAgICMgaXQgYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgICAgIHBhc3MKIAogCi1jbGFzcyBfU291cmNlbGVzc0ZpbGVMb2FkZXIoX0ZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgorY2xhc3MgU291cmNlbGVzc0ZpbGVMb2FkZXIoRmlsZUxvYWRlciwgX0xvYWRlckJhc2ljcyk6CiAKICAgICAiIiJMb2FkZXIgd2hpY2ggaGFuZGxlcyBzb3VyY2VsZXNzIGZpbGUgaW1wb3J0cy4iIiIKIApAQCAtNTEzLDE5ICsxMDkzLDI1IEBACiAgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShwYXRoKQotICAgICAgICBieXRlc19kYXRhID0gc2VsZi5fYnl0ZXNfZnJvbV9ieXRlY29kZShmdWxsbmFtZSwgZGF0YSwgTm9uZSkKKyAgICAgICAgYnl0ZXNfZGF0YSA9IHNlbGYuX2J5dGVzX2Zyb21fYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEsIHBhdGgsIE5vbmUpCiAgICAgICAgIGZvdW5kID0gbWFyc2hhbC5sb2FkcyhieXRlc19kYXRhKQotICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBjb2RlX3R5cGUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBfY29kZV90eXBlKToKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gZm91bmQKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJOb24tY29kZSBvYmplY3QgaW4ge30iLmZvcm1hdChwYXRoKSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJOb24tY29kZSBvYmplY3QgaW4ge30iLmZvcm1hdChwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUsIHBhdGg9cGF0aCkKIAogICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgdGhlcmUgaXMgbm8gc291cmNlIGNvZGUuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKIAotY2xhc3MgX0V4dGVuc2lvbkZpbGVMb2FkZXI6CisjIEZpbGxlZCBpbiBieSBfc2V0dXAoKS4KK0VYVEVOU0lPTl9TVUZGSVhFUyA9IFtdCisKKworY2xhc3MgRXh0ZW5zaW9uRmlsZUxvYWRlcjoKIAogICAgICIiIkxvYWRlciBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuCiAKQEAgLTUzNCwxNCArMTEyMCw4IEBACiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCk6Ci0gICAgICAgICIiIkluaXRpYWxpemUgdGhlIGxvYWRlci4KLQotICAgICAgICBJZiBpc19wa2cgaXMgVHJ1ZSB0aGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgZXh0ZW5zaW9uIG1vZHVsZXMKLSAgICAgICAgY2Fubm90IGJlIHRoZSBfX2luaXRfXyBtb2R1bGUgZm9yIGFuIGV4dGVuc2lvbiBtb2R1bGUuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAogCiAgICAgQF9jaGVja19uYW1lCiAgICAgQHNldF9wYWNrYWdlCkBAIC01NTAsMjk3ICsxMTMwLDUyNSBAQAogICAgICAgICAiIiJMb2FkIGFuIGV4dGVuc2lvbiBtb2R1bGUuIiIiCiAgICAgICAgIGlzX3JlbG9hZCA9IGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbXAubG9hZF9keW5hbWljKGZ1bGxuYW1lLCBzZWxmLl9wYXRoKQorICAgICAgICAgICAgbW9kdWxlID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmxvYWRfZHluYW1pYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUsIHNlbGYucGF0aCkKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgbG9hZGVkIGZyb20geyFyfScsIHNlbGYucGF0aCkKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfcGFja2FnZShmdWxsbmFtZSkgYW5kIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW19wYXRoX3NwbGl0KHNlbGYucGF0aClbMF1dCisgICAgICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBpc19yZWxvYWQgYW5kIGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KICAgICAgICAgICAgIHJhaXNlCiAKLSAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBGYWxzZSBhcyBhbiBleHRlbnNpb24gbW9kdWxlIGNhbiBuZXZlciBiZSBhIHBhY2thZ2UuIiIiCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCisgICAgICAgIGZpbGVfbmFtZSA9IF9wYXRoX3NwbGl0KHNlbGYucGF0aClbMV0KKyAgICAgICAgcmV0dXJuIGFueShmaWxlX25hbWUgPT0gJ19faW5pdF9fJyArIHN1ZmZpeAorICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXggaW4gRVhURU5TSU9OX1NVRkZJWEVTKQogCi0gICAgQF9jaGVja19uYW1lCiAgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgYW4gZXh0ZW5zaW9uIG1vZHVsZSBjYW5ub3QgY3JlYXRlIGEgY29kZSBvYmplY3QuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIlJldHVybiBOb25lIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGhhdmUgbm8gc291cmNlIGNvZGUuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKIAorY2xhc3MgX05hbWVzcGFjZVBhdGg6CisgICAgIiIiUmVwcmVzZW50cyBhIG5hbWVzcGFjZSBwYWNrYWdlJ3MgcGF0aC4gIEl0IHVzZXMgdGhlIG1vZHVsZSBuYW1lCisgICAgdG8gZmluZCBpdHMgcGFyZW50IG1vZHVsZSwgYW5kIGZyb20gdGhlcmUgaXQgbG9va3MgdXAgdGhlIHBhcmVudCdzCisgICAgX19wYXRoX18uICBXaGVuIHRoaXMgY2hhbmdlcywgdGhlIG1vZHVsZSdzIG93biBwYXRoIGlzIHJlY29tcHV0ZWQsCisgICAgdXNpbmcgcGF0aF9maW5kZXIuICBGb3IgdG9wLWxldmUgbW9kdWxlcywgdGhlIHBhcmVudCBtb2R1bGUncyBwYXRoCisgICAgaXMgc3lzLnBhdGguIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCwgcGF0aF9maW5kZXIpOgorICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQorICAgICAgICBzZWxmLl9wYXRoID0gcGF0aAorICAgICAgICBzZWxmLl9sYXN0X3BhcmVudF9wYXRoID0gdHVwbGUoc2VsZi5fZ2V0X3BhcmVudF9wYXRoKCkpCisgICAgICAgIHNlbGYuX3BhdGhfZmluZGVyID0gcGF0aF9maW5kZXIKKworICAgIGRlZiBfZmluZF9wYXJlbnRfcGF0aF9uYW1lcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHR1cGxlIG9mIChwYXJlbnQtbW9kdWxlLW5hbWUsIHBhcmVudC1wYXRoLWF0dHItbmFtZSkiIiIKKyAgICAgICAgcGFyZW50LCBkb3QsIG1lID0gc2VsZi5fbmFtZS5ycGFydGl0aW9uKCcuJykKKyAgICAgICAgaWYgZG90ID09ICcnOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgdG9wLWxldmVsIG1vZHVsZS4gc3lzLnBhdGggY29udGFpbnMgdGhlIHBhcmVudCBwYXRoLgorICAgICAgICAgICAgcmV0dXJuICdzeXMnLCAncGF0aCcKKyAgICAgICAgIyBOb3QgYSB0b3AtbGV2ZWwgbW9kdWxlLiBwYXJlbnQtbW9kdWxlLl9fcGF0aF9fIGNvbnRhaW5zIHRoZQorICAgICAgICAjICBwYXJlbnQgcGF0aC4KKyAgICAgICAgcmV0dXJuIHBhcmVudCwgJ19fcGF0aF9fJworCisgICAgZGVmIF9nZXRfcGFyZW50X3BhdGgoc2VsZik6CisgICAgICAgIHBhcmVudF9tb2R1bGVfbmFtZSwgcGF0aF9hdHRyX25hbWUgPSBzZWxmLl9maW5kX3BhcmVudF9wYXRoX25hbWVzKCkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoc3lzLm1vZHVsZXNbcGFyZW50X21vZHVsZV9uYW1lXSwgcGF0aF9hdHRyX25hbWUpCisKKyAgICBkZWYgX3JlY2FsY3VsYXRlKHNlbGYpOgorICAgICAgICAjIElmIHRoZSBwYXJlbnQncyBwYXRoIGhhcyBjaGFuZ2VkLCByZWNhbGN1bGF0ZSBfcGF0aAorICAgICAgICBwYXJlbnRfcGF0aCA9IHR1cGxlKHNlbGYuX2dldF9wYXJlbnRfcGF0aCgpKSAjIE1ha2UgYSBjb3B5CisgICAgICAgIGlmIHBhcmVudF9wYXRoICE9IHNlbGYuX2xhc3RfcGFyZW50X3BhdGg6CisgICAgICAgICAgICBsb2FkZXIsIG5ld19wYXRoID0gc2VsZi5fcGF0aF9maW5kZXIoc2VsZi5fbmFtZSwgcGFyZW50X3BhdGgpCisgICAgICAgICAgICAjIE5vdGUgdGhhdCBubyBjaGFuZ2VzIGFyZSBtYWRlIGlmIGEgbG9hZGVyIGlzIHJldHVybmVkLCBidXQgd2UKKyAgICAgICAgICAgICMgIGRvIHJlbWVtYmVyIHRoZSBuZXcgcGFyZW50IHBhdGgKKyAgICAgICAgICAgIGlmIGxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3BhdGggPSBuZXdfcGF0aAorICAgICAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHBhcmVudF9wYXRoICAgICAjIFNhdmUgdGhlIGNvcHkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fcmVjYWxjdWxhdGUoKSkKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiX05hbWVzcGFjZVBhdGgoeyFyfSkiLmZvcm1hdChzZWxmLl9wYXRoKQorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgcmV0dXJuIGl0ZW0gaW4gc2VsZi5fcmVjYWxjdWxhdGUoKQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBpdGVtKToKKyAgICAgICAgc2VsZi5fcGF0aC5hcHBlbmQoaXRlbSkKKworCitjbGFzcyBOYW1lc3BhY2VMb2FkZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKToKKyAgICAgICAgc2VsZi5fcGF0aCA9IF9OYW1lc3BhY2VQYXRoKG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbW9kdWxlKToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlICd7fScgKG5hbWVzcGFjZSk+Ii5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorCisgICAgQG1vZHVsZV9mb3JfbG9hZGVyCisgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICIiIkxvYWQgYSBuYW1lc3BhY2UgbW9kdWxlLiIiIgorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsIHNlbGYuX3BhdGgpCisgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IHNlbGYuX3BhdGgKKyAgICAgICAgcmV0dXJuIG1vZHVsZQorCisKICMgRmluZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogY2xhc3MgUGF0aEZpbmRlcjoKIAotICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIHN5cy4ocGF0aHxwYXRoX2hvb2tzfHBhdGhfaW1wb3J0ZXJfY2FjaGUpLiIiIgorICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIHN5cy5wYXRoIGFuZCBwYWNrYWdlIF9fcGF0aF9fIGF0dHJpYnV0ZXMuIiIiCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX3BhdGhfaG9va3MoY2xzLCBwYXRoLCBob29rcz1Ob25lKToKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoY2xzKToKKyAgICAgICAgIiIiQ2FsbCB0aGUgaW52YWxpZGF0ZV9jYWNoZXMoKSBtZXRob2Qgb24gYWxsIHBhdGggZW50cnkgZmluZGVycworICAgICAgICBzdG9yZWQgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVzICh3aGVyZSBpbXBsZW1lbnRlZCkuIiIiCisgICAgICAgIGZvciBmaW5kZXIgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudmFsdWVzKCk6CisgICAgICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ludmFsaWRhdGVfY2FjaGVzJyk6CisgICAgICAgICAgICAgICAgZmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgogICAgICAgICAiIiJTZWFyY2ggc2VxdWVuY2Ugb2YgaG9va3MgZm9yIGEgZmluZGVyIGZvciAncGF0aCcuCiAKICAgICAgICAgSWYgJ2hvb2tzJyBpcyBmYWxzZSB0aGVuIHVzZSBzeXMucGF0aF9ob29rcy4KIAogICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IGhvb2tzOgotICAgICAgICAgICAgaG9va3MgPSBzeXMucGF0aF9ob29rcwotICAgICAgICBmb3IgaG9vayBpbiBob29rczoKKyAgICAgICAgaWYgbm90IHN5cy5wYXRoX2hvb2tzOgorICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5wYXRoX2hvb2tzIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKKyAgICAgICAgZm9yIGhvb2sgaW4gc3lzLnBhdGhfaG9va3M6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGhvb2socGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm5vIHBhdGggaG9vayBmb3VuZCBmb3IgezB9Ii5mb3JtYXQocGF0aCkpCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2ltcG9ydGVyX2NhY2hlKGNscywgcGF0aCwgZGVmYXVsdD1Ob25lKToKLSAgICAgICAgIiIiR2V0IHRoZSBmaW5kZXIgZm9yIHRoZSBwYXRoIGZyb20gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisgICAgZGVmIF9wYXRoX2ltcG9ydGVyX2NhY2hlKGNscywgcGF0aCk6CisgICAgICAgICIiIkdldCB0aGUgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBmcm9tIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgogCi0gICAgICAgIElmIHRoZSBwYXRoIGlzIG5vdCBpbiB0aGUgY2FjaGUsIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGZpbmRlciBhbmQgY2FjaGUKLSAgICAgICAgaXQuIElmIE5vbmUgaXMgY2FjaGVkLCBnZXQgdGhlIGRlZmF1bHQgZmluZGVyIGFuZCBjYWNoZSB0aGF0Ci0gICAgICAgIChpZiBhcHBsaWNhYmxlKS4KLQotICAgICAgICBCZWNhdXNlIG9mIE51bGxJbXBvcnRlciwgc29tZSBmaW5kZXIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgb25seQotICAgICAgICBleHBsaWNpdCBmYWlsIGNhc2UgaXMgaWYgTm9uZSBpcyBjYWNoZWQgYnV0IHRoZSBwYXRoIGNhbm5vdCBiZSB1c2VkIGZvcgotICAgICAgICB0aGUgZGVmYXVsdCBob29rLCBmb3Igd2hpY2ggSW1wb3J0RXJyb3IgaXMgcmFpc2VkLgorICAgICAgICBJZiB0aGUgcGF0aCBlbnRyeSBpcyBub3QgaW4gdGhlIGNhY2hlLCBmaW5kIHRoZSBhcHByb3ByaWF0ZSBmaW5kZXIKKyAgICAgICAgYW5kIGNhY2hlIGl0LiBJZiBubyBmaW5kZXIgaXMgYXZhaWxhYmxlLCBzdG9yZSBOb25lLgogCiAgICAgICAgICIiIgorICAgICAgICBpZiBwYXRoID09ICcnOgorICAgICAgICAgICAgcGF0aCA9ICcuJwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmaW5kZXIgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaG9va3MocGF0aCkKICAgICAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdID0gZmluZGVyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBmaW5kZXIgaXMgTm9uZSBhbmQgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAjIFJhaXNlcyBJbXBvcnRFcnJvciBvbiBmYWlsdXJlLgotICAgICAgICAgICAgICAgIGZpbmRlciA9IGRlZmF1bHQocGF0aCkKLSAgICAgICAgICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXSA9IGZpbmRlcgogICAgICAgICByZXR1cm4gZmluZGVyCiAKICAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2dldF9sb2FkZXIoY2xzLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICIiIkZpbmQgdGhlIGxvYWRlciBvciBuYW1lc3BhY2VfcGF0aCBmb3IgdGhpcyBtb2R1bGUvcGFja2FnZSBuYW1lLiIiIgorICAgICAgICAjIElmIHRoaXMgZW5kcyB1cCBiZWluZyBhIG5hbWVzcGFjZSBwYWNrYWdlLCBuYW1lc3BhY2VfcGF0aCBpcworICAgICAgICAjICB0aGUgbGlzdCBvZiBwYXRocyB0aGF0IHdpbGwgYmVjb21lIGl0cyBfX3BhdGhfXworICAgICAgICBuYW1lc3BhY2VfcGF0aCA9IFtdCisgICAgICAgIGZvciBlbnRyeSBpbiBwYXRoOgorICAgICAgICAgICAgZmluZGVyID0gY2xzLl9wYXRoX2ltcG9ydGVyX2NhY2hlKGVudHJ5KQorICAgICAgICAgICAgaWYgZmluZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnZmluZF9sb2FkZXInKToKKyAgICAgICAgICAgICAgICAgICAgbG9hZGVyLCBwb3J0aW9ucyA9IGZpbmRlci5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsb2FkZXIgPSBmaW5kZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHBvcnRpb25zID0gW10KKyAgICAgICAgICAgICAgICBpZiBsb2FkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgV2UgZm91bmQgYSBsb2FkZXI6IHJldHVybiBpdCBpbW1lZGlhdGVseS4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlciwgbmFtZXNwYWNlX3BhdGgKKyAgICAgICAgICAgICAgICAjIFRoaXMgaXMgcG9zc2libHkgcGFydCBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICMgIFJlbWVtYmVyIHRoZXNlIHBhdGggZW50cmllcyAoaWYgYW55KSBmb3Igd2hlbiB3ZQorICAgICAgICAgICAgICAgICMgIGNyZWF0ZSBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhbmQgY29udGludWUgaXRlcmF0aW5nCisgICAgICAgICAgICAgICAgIyAgb24gcGF0aC4KKyAgICAgICAgICAgICAgICBuYW1lc3BhY2VfcGF0aC5leHRlbmQocG9ydGlvbnMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgbmFtZXNwYWNlX3BhdGgKKworICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICAiIiJGaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAogICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4iIiIKLSAgICAgICAgaWYgbm90IHBhdGg6CisgICAgICAgIGlmIHBhdGggaXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzeXMucGF0aAotICAgICAgICBmb3IgZW50cnkgaW4gcGF0aDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaW1wb3J0ZXJfY2FjaGUoZW50cnkpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGZpbmRlcjoKLSAgICAgICAgICAgICAgICBsb2FkZXIgPSBmaW5kZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgbG9hZGVyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyCisgICAgICAgIGxvYWRlciwgbmFtZXNwYWNlX3BhdGggPSBjbHMuX2dldF9sb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisgICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBsb2FkZXIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBpZiBuYW1lc3BhY2VfcGF0aDoKKyAgICAgICAgICAgICAgICAjIFdlIGZvdW5kIGF0IGxlYXN0IG9uZSBuYW1lc3BhY2UgcGF0aC4gIFJldHVybiBhCisgICAgICAgICAgICAgICAgIyAgbG9hZGVyIHdoaWNoIGNhbiBjcmVhdGUgdGhlIG5hbWVzcGFjZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIHJldHVybiBOYW1lc3BhY2VMb2FkZXIoZnVsbG5hbWUsIG5hbWVzcGFjZV9wYXRoLCBjbHMuX2dldF9sb2FkZXIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKIAotY2xhc3MgX0ZpbGVGaW5kZXI6CitjbGFzcyBGaWxlRmluZGVyOgogCiAgICAgIiIiRmlsZS1iYXNlZCBmaW5kZXIuCiAKLSAgICBDb25zdHJ1Y3RvciB0YWtlcyBhIGxpc3Qgb2Ygb2JqZWN0cyBkZXRhaWxpbmcgd2hhdCBmaWxlIGV4dGVuc2lvbnMgdGhlaXIKLSAgICBsb2FkZXIgc3VwcG9ydHMgYWxvbmcgd2l0aCB3aGV0aGVyIGl0IGNhbiBiZSB1c2VkIGZvciBhIHBhY2thZ2UuCisgICAgSW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpbGUgc3lzdGVtIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLCBiZWluZworICAgIHJlZnJlc2hlZCB3aGVuIHRoZSBkaXJlY3RvcnkgdGhlIGZpbmRlciBpcyBoYW5kbGluZyBoYXMgYmVlbiBtb2RpZmllZC4KIAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsICpkZXRhaWxzKToKLSAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIGZpbmRlciBkZXRhaWxzLiIiIgotICAgICAgICBwYWNrYWdlcyA9IFtdCi0gICAgICAgIG1vZHVsZXMgPSBbXQotICAgICAgICBmb3IgZGV0YWlsIGluIGRldGFpbHM6Ci0gICAgICAgICAgICBtb2R1bGVzLmV4dGVuZCgoc3VmZml4LCBkZXRhaWwubG9hZGVyKSBmb3Igc3VmZml4IGluIGRldGFpbC5zdWZmaXhlcykKLSAgICAgICAgICAgIGlmIGRldGFpbC5zdXBwb3J0c19wYWNrYWdlczoKLSAgICAgICAgICAgICAgICBwYWNrYWdlcy5leHRlbmQoKHN1ZmZpeCwgZGV0YWlsLmxvYWRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiBkZXRhaWwuc3VmZml4ZXMpCi0gICAgICAgIHNlbGYucGFja2FnZXMgPSBwYWNrYWdlcwotICAgICAgICBzZWxmLm1vZHVsZXMgPSBtb2R1bGVzCi0gICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIHRoZSBwYXRoIHRvIHNlYXJjaCBvbiBhbmQgYSB2YXJpYWJsZSBudW1iZXIgb2YKKyAgICAgICAgMy10dXBsZXMgY29udGFpbmluZyB0aGUgbG9hZGVyLCBmaWxlIHN1ZmZpeGVzIHRoZSBsb2FkZXIgcmVjb2duaXplcywKKyAgICAgICAgYW5kIGEgYm9vbGVhbiBvZiB3aGV0aGVyIHRoZSBsb2FkZXIgaGFuZGxlcyBwYWNrYWdlcy4iIiIKKyAgICAgICAgbG9hZGVycyA9IFtdCisgICAgICAgIGZvciBsb2FkZXIsIHN1ZmZpeGVzIGluIGRldGFpbHM6CisgICAgICAgICAgICBsb2FkZXJzLmV4dGVuZCgoc3VmZml4LCBsb2FkZXIpIGZvciBzdWZmaXggaW4gc3VmZml4ZXMpCisgICAgICAgIHNlbGYuX2xvYWRlcnMgPSBsb2FkZXJzCisgICAgICAgICMgQmFzZSAoZGlyZWN0b3J5KSBwYXRoCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGggb3IgJy4nCisgICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQorICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gc2V0KCkKKyAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KCkKIAotICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4iIiIKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIkludmFsaWRhdGUgdGhlIGRpcmVjdG9yeSBtdGltZS4iIiIKKyAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCisKKyAgICBmaW5kX21vZHVsZSA9IF9maW5kX21vZHVsZV9zaGltCisKKyAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUsIG9yIHRoZSBuYW1lc3BhY2UKKyAgICAgICAgcGFja2FnZSBwb3J0aW9ucy4gUmV0dXJucyAobG9hZGVyLCBsaXN0LW9mLXBvcnRpb25zKS4iIiIKKyAgICAgICAgaXNfbmFtZXNwYWNlID0gRmFsc2UKICAgICAgICAgdGFpbF9tb2R1bGUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KLSAgICAgICAgYmFzZV9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKQotICAgICAgICBpZiBfcGF0aF9pc2RpcihiYXNlX3BhdGgpIGFuZCBfY2FzZV9vayhzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKToKLSAgICAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlciBpbiBzZWxmLnBhY2thZ2VzOgotICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4Ci0gICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihiYXNlX3BhdGgsIGluaXRfZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgaWYgKF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgX2Nhc2Vfb2soYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIoZnVsbG5hbWUsIGZ1bGxfcGF0aCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbXNnID0gIk5vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fIgotICAgICAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKG1zZy5mb3JtYXQoYmFzZV9wYXRoKSwgSW1wb3J0V2FybmluZykKLSAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYubW9kdWxlczoKLSAgICAgICAgICAgIG1vZF9maWxlbmFtZSA9IHRhaWxfbW9kdWxlICsgc3VmZml4Ci0gICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgbW9kX2ZpbGVuYW1lKQotICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCkgYW5kIF9jYXNlX29rKHNlbGYucGF0aCwgbW9kX2ZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyKGZ1bGxuYW1lLCBmdWxsX3BhdGgpCi0gICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG10aW1lID0gX29zLnN0YXQoc2VsZi5wYXRoKS5zdF9tdGltZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIG10aW1lID0gLTEKKyAgICAgICAgaWYgbXRpbWUgIT0gc2VsZi5fcGF0aF9tdGltZToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGxfY2FjaGUoKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IG10aW1lCisgICAgICAgICMgdGFpbF9tb2R1bGUga2VlcHMgdGhlIG9yaWdpbmFsIGNhc2luZywgZm9yIF9fZmlsZV9fIGFuZCBmcmllbmRzCisgICAgICAgIGlmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3JlbGF4ZWRfcGF0aF9jYWNoZQorICAgICAgICAgICAgY2FjaGVfbW9kdWxlID0gdGFpbF9tb2R1bGUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCisgICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZQorICAgICAgICAjIENoZWNrIGlmIHRoZSBtb2R1bGUgaXMgdGhlIG5hbWUgb2YgYSBkaXJlY3RvcnkgKGFuZCB0aHVzIGEgcGFja2FnZSkuCisgICAgICAgIGlmIGNhY2hlX21vZHVsZSBpbiBjYWNoZToKKyAgICAgICAgICAgIGJhc2VfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSkKKyAgICAgICAgICAgIGlmIF9wYXRoX2lzZGlyKGJhc2VfcGF0aCk6CisgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4CisgICAgICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9hZGVyKGZ1bGxuYW1lLCBmdWxsX3BhdGgpLCBbYmFzZV9wYXRoXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEEgbmFtZXNwYWNlIHBhY2thZ2UsIHJldHVybiB0aGUgcGF0aCBpZiB3ZSBkb24ndCBhbHNvCisgICAgICAgICAgICAgICAgICAgICMgIGZpbmQgYSBtb2R1bGUgaW4gdGhlIG5leHQgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaXNfbmFtZXNwYWNlID0gVHJ1ZQorICAgICAgICAjIENoZWNrIGZvciBhIGZpbGUgdy8gYSBwcm9wZXIgc3VmZml4IGV4aXN0cy4KKyAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICBpZiBjYWNoZV9tb2R1bGUgKyBzdWZmaXggaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlICsgc3VmZml4KQorICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvYWRlcihmdWxsbmFtZSwgZnVsbF9wYXRoKSwgW10pCisgICAgICAgIGlmIGlzX25hbWVzcGFjZToKKyAgICAgICAgICAgIHJldHVybiAoTm9uZSwgW2Jhc2VfcGF0aF0pCisgICAgICAgIHJldHVybiAoTm9uZSwgW10pCiAKLWNsYXNzIF9Tb3VyY2VGaW5kZXJEZXRhaWxzOgorICAgIGRlZiBfZmlsbF9jYWNoZShzZWxmKToKKyAgICAgICAgIiIiRmlsbCB0aGUgY2FjaGUgb2YgcG90ZW50aWFsIG1vZHVsZXMgYW5kIHBhY2thZ2VzIGZvciB0aGlzIGRpcmVjdG9yeS4iIiIKKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aAorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb250ZW50cyA9IF9vcy5saXN0ZGlyKHBhdGgpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgICMgRGlyZWN0b3J5IGhhcyBiZWVuIHJlbW92ZWQgc2luY2UgbGFzdCBpbXBvcnQKKyAgICAgICAgICAgIGNvbnRlbnRzID0gW10KKyAgICAgICAgIyBXZSBzdG9yZSB0d28gY2FjaGVkIHZlcnNpb25zLCB0byBoYW5kbGUgcnVudGltZSBjaGFuZ2VzIG9mIHRoZQorICAgICAgICAjIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoY29udGVudHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCisgICAgICAgICAgICAjIHN1ZmZpeGVzIChmb3IgbGVnYWN5IHJlYXNvbnMpLiBNYWtlIHRoZSBzdWZmaXggbG93ZXJjYXNlIGhlcmUKKyAgICAgICAgICAgICMgc28gaXQncyBkb25lIG9uY2UgaW5zdGVhZCBvZiBmb3IgZXZlcnkgaW1wb3J0LiBUaGlzIGlzIHNhZmUgYXMKKyAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKKyAgICAgICAgICAgICMgY2FzZS1zZW5zaXRpdmUgbWFubmVyLgorICAgICAgICAgICAgbG93ZXJfc3VmZml4X2NvbnRlbnRzID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgICAgIG5hbWUsIGRvdCwgc3VmZml4ID0gaXRlbS5wYXJ0aXRpb24oJy4nKQorICAgICAgICAgICAgICAgIGlmIGRvdDoKKyAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cworICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgorICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KGZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzKQogCi0gICAgbG9hZGVyID0gX1NvdXJjZUZpbGVMb2FkZXIKLSAgICBzdXBwb3J0c19wYWNrYWdlcyA9IFRydWUKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGF0aF9ob29rKGNscywgKmxvYWRlcl9kZXRhaWxzKToKKyAgICAgICAgIiIiQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgdG8gdXNlIG9uIHN5cy5wYXRoX2hvb2sKKyAgICAgICAgd2hpY2ggd2lsbCByZXR1cm4gYW4gaW5zdGFuY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBsb2FkZXJzIGFuZCB0aGUgcGF0aAorICAgICAgICBjYWxsZWQgb24gdGhlIGNsb3N1cmUuCiAKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuc3VmZml4ZXMgPSBfc3VmZml4X2xpc3QoaW1wLlBZX1NPVVJDRSkKKyAgICAgICAgSWYgdGhlIHBhdGggY2FsbGVkIG9uIHRoZSBjbG9zdXJlIGlzIG5vdCBhIGRpcmVjdG9yeSwgSW1wb3J0RXJyb3IgaXMKKyAgICAgICAgcmFpc2VkLgogCi1jbGFzcyBfU291cmNlbGVzc0ZpbmRlckRldGFpbHM6CisgICAgICAgICIiIgorICAgICAgICBkZWYgcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyKHBhdGgpOgorICAgICAgICAgICAgIiIiUGF0aCBob29rIGZvciBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIuIiIiCisgICAgICAgICAgICBpZiBub3QgX3BhdGhfaXNkaXIocGF0aCk6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm9ubHkgZGlyZWN0b3JpZXMgYXJlIHN1cHBvcnRlZCIsIHBhdGg9cGF0aCkKKyAgICAgICAgICAgIHJldHVybiBjbHMocGF0aCwgKmxvYWRlcl9kZXRhaWxzKQogCi0gICAgbG9hZGVyID0gX1NvdXJjZWxlc3NGaWxlTG9hZGVyCi0gICAgc3VwcG9ydHNfcGFja2FnZXMgPSBUcnVlCisgICAgICAgIHJldHVybiBwYXRoX2hvb2tfZm9yX0ZpbGVGaW5kZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdWZmaXhlcyA9IF9zdWZmaXhfbGlzdChpbXAuUFlfQ09NUElMRUQpCi0KLQotY2xhc3MgX0V4dGVuc2lvbkZpbmRlckRldGFpbHM6Ci0KLSAgICBsb2FkZXIgPSBfRXh0ZW5zaW9uRmlsZUxvYWRlcgotICAgIHN1cHBvcnRzX3BhY2thZ2VzID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdWZmaXhlcyA9IF9zdWZmaXhfbGlzdChpbXAuQ19FWFRFTlNJT04pCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkZpbGVGaW5kZXIoJXIpIiAlIChzZWxmLnBhdGgsKQogCiAKICMgSW1wb3J0IGl0c2VsZiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotZGVmIF9maWxlX3BhdGhfaG9vayhwYXRoKToKLSAgICAiIiJJZiB0aGUgcGF0aCBpcyBhIGRpcmVjdG9yeSwgcmV0dXJuIGEgZmlsZS1iYXNlZCBmaW5kZXIuIiIiCi0gICAgaWYgX3BhdGhfaXNkaXIocGF0aCk6Ci0gICAgICAgIHJldHVybiBfRmlsZUZpbmRlcihwYXRoLCBfRXh0ZW5zaW9uRmluZGVyRGV0YWlscygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1NvdXJjZUZpbmRlckRldGFpbHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Tb3VyY2VsZXNzRmluZGVyRGV0YWlscygpKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQiKQotCi0KLV9ERUZBVUxUX1BBVEhfSE9PSyA9IF9maWxlX3BhdGhfaG9vawotCi1jbGFzcyBfRGVmYXVsdFBhdGhGaW5kZXIoUGF0aEZpbmRlcik6Ci0KLSAgICAiIiJTdWJjbGFzcyBvZiBQYXRoRmluZGVyIHRoYXQgaW1wbGVtZW50cyBpbXBsaWNpdCBzZW1hbnRpY3MgZm9yCi0gICAgX19pbXBvcnRfXy4iIiIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgotICAgICAgICAiIiJTZWFyY2ggc3lzLnBhdGhfaG9va3MgYXMgd2VsbCBhcyBpbXBsaWNpdCBwYXRoIGhvb2tzLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fcGF0aF9ob29rcyhwYXRoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBpbXBsaWNpdF9ob29rcyA9IFtfREVGQVVMVF9QQVRIX0hPT0ssIGltcC5OdWxsSW1wb3J0ZXJdCi0gICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fcGF0aF9ob29rcyhwYXRoLCBpbXBsaWNpdF9ob29rcykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9pbXBvcnRlcl9jYWNoZShjbHMsIHBhdGgpOgotICAgICAgICAiIiJVc2UgdGhlIGRlZmF1bHQgcGF0aCBob29rIHdoZW4gTm9uZSBpcyBzdG9yZWQgaW4KLSAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuIiIiCi0gICAgICAgIHJldHVybiBzdXBlcigpLl9wYXRoX2ltcG9ydGVyX2NhY2hlKHBhdGgsIF9ERUZBVUxUX1BBVEhfSE9PSykKLQotCiBjbGFzcyBfSW1wb3J0TG9ja0NvbnRleHQ6CiAKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIHRoZSBpbXBvcnQgbG9jay4iIiIKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgICIiIkFjcXVpcmUgdGhlIGltcG9ydCBsb2NrLiIiIgotICAgICAgICBpbXAuYWNxdWlyZV9sb2NrKCkKKyAgICAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2spOgogICAgICAgICAiIiJSZWxlYXNlIHRoZSBpbXBvcnQgbG9jayByZWdhcmRsZXNzIG9mIGFueSByYWlzZWQgZXhjZXB0aW9ucy4iIiIKLSAgICAgICAgaW1wLnJlbGVhc2VfbG9jaygpCisgICAgICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKIAogCi1fSU1QTElDSVRfTUVUQV9QQVRIID0gW0J1aWx0aW5JbXBvcnRlciwgRnJvemVuSW1wb3J0ZXIsIF9EZWZhdWx0UGF0aEZpbmRlcl0KK2RlZiBfcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UsIGxldmVsKToKKyAgICAiIiJSZXNvbHZlIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgdG8gYW4gYWJzb2x1dGUgb25lLiIiIgorICAgIGJpdHMgPSBwYWNrYWdlLnJzcGxpdCgnLicsIGxldmVsIC0gMSkKKyAgICBpZiBsZW4oYml0cykgPCBsZXZlbDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsIHBhY2thZ2UnKQorICAgIGJhc2UgPSBiaXRzWzBdCisgICAgcmV0dXJuICd7fS57fScuZm9ybWF0KGJhc2UsIG5hbWUpIGlmIG5hbWUgZWxzZSBiYXNlCiAKLV9FUlJfTVNHID0gJ05vIG1vZHVsZSBuYW1lZCB7fScKKworZGVmIF9maW5kX21vZHVsZShuYW1lLCBwYXRoKToKKyAgICAiIiJGaW5kIGEgbW9kdWxlJ3MgbG9hZGVyLiIiIgorICAgIGlmIG5vdCBzeXMubWV0YV9wYXRoOgorICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLm1ldGFfcGF0aCBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisgICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgICAgICB3aXRoIF9JbXBvcnRMb2NrQ29udGV4dCgpOgorICAgICAgICAgICAgbG9hZGVyID0gZmluZGVyLmZpbmRfbW9kdWxlKG5hbWUsIHBhdGgpCisgICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgVGhlIHBhcmVudCBpbXBvcnQgbWF5IGhhdmUgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIG1vZHVsZS4KKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfc2FuaXR5X2NoZWNrKG5hbWUsIHBhY2thZ2UsIGxldmVsKToKKyAgICAiIiJWZXJpZnkgYXJndW1lbnRzIGFyZSAic2FuZSIuIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtb2R1bGUgbmFtZSBtdXN0IGJlIHN0ciwgbm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCisgICAgaWYgbGV2ZWwgPCAwOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsZXZlbCBtdXN0IGJlID49IDAnKQorICAgIGlmIHBhY2thZ2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhY2thZ2UsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIl9fcGFja2FnZV9fIG5vdCBzZXQgdG8gYSBzdHJpbmciKQorICAgICAgICBlbGlmIHBhY2thZ2Ugbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgbXNnID0gKCJQYXJlbnQgbW9kdWxlIHshcn0gbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgorICAgICAgICAgICAgICAgICAgICJpbXBvcnQiKQorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IobXNnLmZvcm1hdChwYWNrYWdlKSkKKyAgICBpZiBub3QgbmFtZSBhbmQgbGV2ZWwgPT0gMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRW1wdHkgbW9kdWxlIG5hbWUiKQorCisKK19FUlJfTVNHID0gJ05vIG1vZHVsZSBuYW1lZCB7IXJ9JworCitkZWYgX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0Xyk6CisgICAgcGF0aCA9IE5vbmUKKyAgICBwYXJlbnQgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQorICAgIGlmIHBhcmVudDoKKyAgICAgICAgaWYgcGFyZW50IG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgcGFyZW50KQorICAgICAgICAjIENyYXp5IHNpZGUtZWZmZWN0cyEKKyAgICAgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQorICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5OyBiZSBuaWNlciB0byBza2lwIHRoZSBkaWN0IGxvb2t1cC4KKyAgICAgICAgcGFyZW50X21vZHVsZSA9IHN5cy5tb2R1bGVzW3BhcmVudF0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9tb2R1bGUuX19wYXRoX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsge30gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKyAgICBsb2FkZXIgPSBfZmluZF9tb2R1bGUobmFtZSwgcGF0aCkKKyAgICBpZiBsb2FkZXIgaXMgTm9uZToKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCisgICAgICAgICMgVE9ETyhicmV0dCk6IHN3aXRjaCB0byBhIHByb3BlciBNb2R1bGVOb3RGb3VuZCBleGNlcHRpb24gaW4gUHl0aG9uCisgICAgICAgICMgMy40LgorICAgICAgICBleGMuX25vdF9mb3VuZCA9IFRydWUKKyAgICAgICAgcmFpc2UgZXhjCisgICAgZWxpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgIyBUaGUgcGFyZW50IGltcG9ydCBtYXkgaGF2ZSBhbHJlYWR5IGltcG9ydGVkIHRoaXMgbW9kdWxlLgorICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnaW1wb3J0IHshcn0gIyB7IXJ9JywgbmFtZSwgbG9hZGVyKQorICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHk7IGJlIG5pY2VyIHRvIHNraXAgdGhlIGRpY3QgbG9va3VwLgorICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgaWYgcGFyZW50OgorICAgICAgICAjIFNldCB0aGUgbW9kdWxlIGFzIGFuIGF0dHJpYnV0ZSBvbiBpdHMgcGFyZW50LgorICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQorICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIG5hbWUucnBhcnRpdGlvbignLicpWzJdLCBtb2R1bGUpCisgICAgIyBTZXQgX19wYWNrYWdlX18gaWYgdGhlIGxvYWRlciBkaWQgbm90LgorICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fcGFja2FnZV9fLnJwYXJ0aXRpb24oJy4nKVswXQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBTZXQgbG9hZGVyIGlmIG5lZWQgYmUuCisgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19sb2FkZXJfXycpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgcmV0dXJuIG1vZHVsZQorCisKK2RlZiBfZmluZF9hbmRfbG9hZChuYW1lLCBpbXBvcnRfKToKKyAgICAiIiJGaW5kIGFuZCBsb2FkIHRoZSBtb2R1bGUsIGFuZCByZWxlYXNlIHRoZSBpbXBvcnQgbG9jay4iIiIKKyAgICB0cnk6CisgICAgICAgIGxvY2sgPSBfZ2V0X21vZHVsZV9sb2NrKG5hbWUpCisgICAgZmluYWxseToKKyAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgIGxvY2suYWNxdWlyZSgpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0XykKKyAgICBmaW5hbGx5OgorICAgICAgICBsb2NrLnJlbGVhc2UoKQorCiAKIGRlZiBfZ2NkX2ltcG9ydChuYW1lLCBwYWNrYWdlPU5vbmUsIGxldmVsPTApOgogICAgICIiIkltcG9ydCBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgYmFzZWQgb24gaXRzIG5hbWUsIHRoZSBwYWNrYWdlIHRoZSBjYWxsIGlzCiAgICAgYmVpbmcgbWFkZSBmcm9tLCBhbmQgdGhlIGxldmVsIGFkanVzdG1lbnQuCiAKICAgICBUaGlzIGZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBvZiBmdW5jdGlvbmFsaXR5Ci0gICAgYmV0d2VlbiBpbXBvcnRfbW9kdWxlIGFuZCBfX2ltcG9ydF9fLiBUaGlzIGluY2x1ZGVzIHNldHR0aW5nIF9fcGFja2FnZV9fIGlmCisgICAgYmV0d2VlbiBpbXBvcnRfbW9kdWxlIGFuZCBfX2ltcG9ydF9fLiBUaGlzIGluY2x1ZGVzIHNldHRpbmcgX19wYWNrYWdlX18gaWYKICAgICB0aGUgbG9hZGVyIGRpZCBub3QuCiAKICAgICAiIiIKLSAgICBpZiBwYWNrYWdlOgotICAgICAgICBpZiBub3QgaGFzYXR0cihwYWNrYWdlLCAncmluZGV4Jyk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJfX3BhY2thZ2VfXyBub3Qgc2V0IHRvIGEgc3RyaW5nIikKLSAgICAgICAgZWxpZiBwYWNrYWdlIG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgIG1zZyA9ICgiUGFyZW50IG1vZHVsZSB7MCFyfSBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAiCi0gICAgICAgICAgICAgICAgICAgImltcG9ydCIpCi0gICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcihtc2cuZm9ybWF0KHBhY2thZ2UpKQotICAgIGlmIG5vdCBuYW1lIGFuZCBsZXZlbCA9PSAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFbXB0eSBtb2R1bGUgbmFtZSIpCisgICAgX3Nhbml0eV9jaGVjayhuYW1lLCBwYWNrYWdlLCBsZXZlbCkKICAgICBpZiBsZXZlbCA+IDA6Ci0gICAgICAgIGRvdCA9IGxlbihwYWNrYWdlKQotICAgICAgICBmb3IgeCBpbiByYW5nZShsZXZlbCwgMSwgLTEpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRvdCA9IHBhY2thZ2UucmluZGV4KCcuJywgMCwgZG90KQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvcC1sZXZlbCBwYWNrYWdlIikKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIG5hbWUgPSAiezB9LnsxfSIuZm9ybWF0KHBhY2thZ2VbOmRvdF0sIG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lID0gcGFja2FnZVs6ZG90XQotICAgIHdpdGggX0ltcG9ydExvY2tDb250ZXh0KCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCJpbXBvcnQgb2Yge30gaGFsdGVkOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgaW4gc3lzLm1vZHVsZXMiLmZvcm1hdChuYW1lKSkKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlKQotICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHBhcmVudCA9IG5hbWUucnBhcnRpdGlvbignLicpWzBdCi0gICAgICAgIHBhdGggPSBOb25lCi0gICAgICAgIGlmIHBhcmVudDoKLSAgICAgICAgICAgIGlmIHBhcmVudCBub3QgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgX2djZF9pbXBvcnQocGFyZW50KQotICAgICAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eTsgYmUgbmljZXIgdG8gc2tpcCB0aGUgZGljdCBsb29rdXAuCi0gICAgICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLl9fcGF0aF9fCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsge30gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCi0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnKQotICAgICAgICBtZXRhX3BhdGggPSBzeXMubWV0YV9wYXRoICsgX0lNUExJQ0lUX01FVEFfUEFUSAotICAgICAgICBmb3IgZmluZGVyIGluIG1ldGFfcGF0aDoKLSAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShuYW1lLCBwYXRoKQotICAgICAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICMgVGhlIHBhcmVudCBpbXBvcnQgbWF5IGhhdmUgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIG1vZHVsZS4KLSAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSkKLSAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eTsgYmUgbmljZXIgdG8gc2tpcCB0aGUgZGljdCBsb29rdXAuCi0gICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgIGlmIHBhcmVudDoKLSAgICAgICAgICAgICMgU2V0IHRoZSBtb2R1bGUgYXMgYW4gYXR0cmlidXRlIG9uIGl0cyBwYXJlbnQuCi0gICAgICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIG5hbWUucnBhcnRpdGlvbignLicpWzJdLCBtb2R1bGUpCi0gICAgICAgICMgU2V0IF9fcGFja2FnZV9fIGlmIHRoZSBsb2FkZXIgZGlkIG5vdC4KLSAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSBvciBtb2R1bGUuX19wYWNrYWdlX18gaXMgTm9uZToKLSAgICAgICAgICAgICMgV2F0Y2ggb3V0IGZvciB3aGF0IGNvbWVzIG91dCBvZiBzeXMubW9kdWxlcyB0byBub3QgYmUgYSBtb2R1bGUsCi0gICAgICAgICAgICAjIGUuZy4gYW4gaW50LgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXwotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX3BhY2thZ2VfXy5ycGFydGl0aW9uKCcuJylbMF0KLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgbmFtZSA9IF9yZXNvbHZlX25hbWUobmFtZSwgcGFja2FnZSwgbGV2ZWwpCisgICAgX2ltcC5hY3F1aXJlX2xvY2soKQorICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICByZXR1cm4gX2ZpbmRfYW5kX2xvYWQobmFtZSwgX2djZF9pbXBvcnQpCisgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgICAgICBtZXNzYWdlID0gKCJpbXBvcnQgb2Yge30gaGFsdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIi5mb3JtYXQobmFtZSkpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9bmFtZSkKKyAgICBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpCisgICAgcmV0dXJuIG1vZHVsZQorCitkZWYgX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBpbXBvcnRfKToKKyAgICAiIiJGaWd1cmUgb3V0IHdoYXQgX19pbXBvcnRfXyBzaG91bGQgcmV0dXJuLgorCisgICAgVGhlIGltcG9ydF8gcGFyYW1ldGVyIGlzIGEgY2FsbGFibGUgd2hpY2ggdGFrZXMgdGhlIG5hbWUgb2YgbW9kdWxlIHRvCisgICAgaW1wb3J0LiBJdCBpcyByZXF1aXJlZCB0byBkZWNvdXBsZSB0aGUgZnVuY3Rpb24gZnJvbSBhc3N1bWluZyBpbXBvcnRsaWIncworICAgIGltcG9ydCBpbXBsZW1lbnRhdGlvbiBpcyBkZXNpcmVkLgorCisgICAgIiIiCisgICAgIyBUaGUgaGVsbCB0aGF0IGlzIGZyb21saXN0IC4uLgorICAgICMgSWYgYSBwYWNrYWdlIHdhcyBpbXBvcnRlZCwgdHJ5IHRvIGltcG9ydCBzdHVmZiBmcm9tIGZyb21saXN0LgorICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgaWYgJyonIGluIGZyb21saXN0OgorICAgICAgICAgICAgZnJvbWxpc3QgPSBsaXN0KGZyb21saXN0KQorICAgICAgICAgICAgZnJvbWxpc3QucmVtb3ZlKCcqJykKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19hbGxfXycpOgorICAgICAgICAgICAgICAgIGZyb21saXN0LmV4dGVuZChtb2R1bGUuX19hbGxfXykKKyAgICAgICAgZm9yIHggaW4gZnJvbWxpc3Q6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsIHgpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChpbXBvcnRfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne30ue30nLmZvcm1hdChtb2R1bGUuX19uYW1lX18sIHgpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZGljdGF0ZXMgd2UgaWdub3JlIGZhaWxlZAorICAgICAgICAgICAgICAgICAgICAjIGltcG9ydHMgdHJpZ2dlcmVkIGJ5IGZyb21saXN0IGZvciBtb2R1bGVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgIyBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPKGJyZXR0KTogSW4gUHl0aG9uIDMuNCwgaGF2ZSBpbXBvcnQgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgIyAgIE1vZHVsZU5vdEZvdW5kIGFuZCBjYXRjaCB0aGF0LgorICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGV4YywgJ19ub3RfZm91bmQnKSBhbmQgZXhjLl9ub3RfZm91bmQ6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgIHJldHVybiBtb2R1bGUKIAogCi1kZWYgX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPXt9LCBsb2NhbHM9e30sIGZyb21saXN0PVtdLCBsZXZlbD0wKToKK2RlZiBfY2FsY19fX3BhY2thZ2VfXyhnbG9iYWxzKToKKyAgICAiIiJDYWxjdWxhdGUgd2hhdCBfX3BhY2thZ2VfXyBzaG91bGQgYmUuCisKKyAgICBfX3BhY2thZ2VfXyBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBkZWZpbmVkIG9yIGNvdWxkIGJlIHNldCB0byBOb25lCisgICAgdG8gcmVwcmVzZW50IHRoYXQgaXRzIHByb3BlciB2YWx1ZSBpcyB1bmtub3duLgorCisgICAgIiIiCisgICAgcGFja2FnZSA9IGdsb2JhbHMuZ2V0KCdfX3BhY2thZ2VfXycpCisgICAgaWYgcGFja2FnZSBpcyBOb25lOgorICAgICAgICBwYWNrYWdlID0gZ2xvYmFsc1snX19uYW1lX18nXQorICAgICAgICBpZiAnX19wYXRoX18nIG5vdCBpbiBnbG9iYWxzOgorICAgICAgICAgICAgcGFja2FnZSA9IHBhY2thZ2UucnBhcnRpdGlvbignLicpWzBdCisgICAgcmV0dXJuIHBhY2thZ2UKKworCitkZWYgX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6CisgICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgZmlsZS1iYXNlZCBtb2R1bGUgbG9hZGVycy4KKworICAgIEVhY2ggaXRlbSBpcyBhIHR1cGxlIChsb2FkZXIsIHN1ZmZpeGVzLCBhbGxvd19wYWNrYWdlcykuCisgICAgIiIiCisgICAgZXh0ZW5zaW9ucyA9IEV4dGVuc2lvbkZpbGVMb2FkZXIsIF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKCkKKyAgICBzb3VyY2UgPSBTb3VyY2VGaWxlTG9hZGVyLCBTT1VSQ0VfU1VGRklYRVMKKyAgICBieXRlY29kZSA9IFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBCWVRFQ09ERV9TVUZGSVhFUworICAgIHJldHVybiBbZXh0ZW5zaW9ucywgc291cmNlLCBieXRlY29kZV0KKworCitkZWYgX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCBmcm9tbGlzdD0oKSwgbGV2ZWw9MCk6CiAgICAgIiIiSW1wb3J0IGEgbW9kdWxlLgogCiAgICAgVGhlICdnbG9iYWxzJyBhcmd1bWVudCBpcyB1c2VkIHRvIGluZmVyIHdoZXJlIHRoZSBpbXBvcnQgaXMgb2NjdXJpbmcgZnJvbQpAQCAtODUxLDQwICsxNjU5LDEwMyBAQAogICAgIGltcG9ydCAoZS5nLiBgYGZyb20gLi5wa2cgaW1wb3J0IG1vZGBgIHdvdWxkIGhhdmUgYSAnbGV2ZWwnIG9mIDIpLgogCiAgICAgIiIiCi0gICAgaWYgbm90IGhhc2F0dHIobmFtZSwgJ3JwYXJ0aXRpb24nKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtb2R1bGUgbmFtZSBtdXN0IGJlIHN0ciwgbm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCiAgICAgaWYgbGV2ZWwgPT0gMDoKICAgICAgICAgbW9kdWxlID0gX2djZF9pbXBvcnQobmFtZSkKICAgICBlbHNlOgotICAgICAgICAjIF9fcGFja2FnZV9fIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIGRlZmluZWQgb3IgY291bGQgYmUgc2V0IHRvIE5vbmUKLSAgICAgICAgIyB0byByZXByZXNlbnQgdGhhdCBpdCdzIHByb3BlciB2YWx1ZSBpcyB1bmtub3duCi0gICAgICAgIHBhY2thZ2UgPSBnbG9iYWxzLmdldCgnX19wYWNrYWdlX18nKQotICAgICAgICBpZiBwYWNrYWdlIGlzIE5vbmU6Ci0gICAgICAgICAgICBwYWNrYWdlID0gZ2xvYmFsc1snX19uYW1lX18nXQotICAgICAgICAgICAgaWYgJ19fcGF0aF9fJyBub3QgaW4gZ2xvYmFsczoKLSAgICAgICAgICAgICAgICBwYWNrYWdlID0gcGFja2FnZS5ycGFydGl0aW9uKCcuJylbMF0KKyAgICAgICAgZ2xvYmFsc18gPSBnbG9iYWxzIGlmIGdsb2JhbHMgaXMgbm90IE5vbmUgZWxzZSB7fQorICAgICAgICBwYWNrYWdlID0gX2NhbGNfX19wYWNrYWdlX18oZ2xvYmFsc18pCiAgICAgICAgIG1vZHVsZSA9IF9nY2RfaW1wb3J0KG5hbWUsIHBhY2thZ2UsIGxldmVsKQotICAgICMgVGhlIGhlbGwgdGhhdCBpcyBmcm9tbGlzdCAuLi4KICAgICBpZiBub3QgZnJvbWxpc3Q6CiAgICAgICAgICMgUmV0dXJuIHVwIHRvIHRoZSBmaXJzdCBkb3QgaW4gJ25hbWUnLiBUaGlzIGlzIGNvbXBsaWNhdGVkIGJ5IHRoZSBmYWN0CiAgICAgICAgICMgdGhhdCAnbmFtZScgbWF5IGJlIHJlbGF0aXZlLgogICAgICAgICBpZiBsZXZlbCA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWUucGFydGl0aW9uKCcuJylbMF1dCisgICAgICAgICAgICByZXR1cm4gX2djZF9pbXBvcnQobmFtZS5wYXJ0aXRpb24oJy4nKVswXSkKICAgICAgICAgZWxpZiBub3QgbmFtZToKICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGN1dF9vZmYgPSBsZW4obmFtZSkgLSBsZW4obmFtZS5wYXJ0aXRpb24oJy4nKVswXSkKLSAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1ttb2R1bGUuX19uYW1lX19bOi1jdXRfb2ZmXV0KKyAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1ttb2R1bGUuX19uYW1lX19bOmxlbihtb2R1bGUuX19uYW1lX18pLWN1dF9vZmZdXQogICAgIGVsc2U6Ci0gICAgICAgICMgSWYgYSBwYWNrYWdlIHdhcyBpbXBvcnRlZCwgdHJ5IHRvIGltcG9ydCBzdHVmZiBmcm9tIGZyb21saXN0LgotICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgICAgICBpZiAnKicgaW4gZnJvbWxpc3QgYW5kIGhhc2F0dHIobW9kdWxlLCAnX19hbGxfXycpOgotICAgICAgICAgICAgICAgIGZyb21saXN0ID0gbGlzdChmcm9tbGlzdCkKLSAgICAgICAgICAgICAgICBmcm9tbGlzdC5yZW1vdmUoJyonKQotICAgICAgICAgICAgICAgIGZyb21saXN0LmV4dGVuZChtb2R1bGUuX19hbGxfXykKLSAgICAgICAgICAgIGZvciB4IGluICh5IGZvciB5IGluIGZyb21saXN0IGlmIG5vdCBoYXNhdHRyKG1vZHVsZSx5KSk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBfZ2NkX2ltcG9ydCgnezB9LnsxfScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXywgeCkpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgcmV0dXJuIF9oYW5kbGVfZnJvbWxpc3QobW9kdWxlLCBmcm9tbGlzdCwgX2djZF9pbXBvcnQpCisKKworCitkZWYgX3NldHVwKHN5c19tb2R1bGUsIF9pbXBfbW9kdWxlKToKKyAgICAiIiJTZXR1cCBpbXBvcnRsaWIgYnkgaW1wb3J0aW5nIG5lZWRlZCBidWlsdC1pbiBtb2R1bGVzIGFuZCBpbmplY3RpbmcgdGhlbQorICAgIGludG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisKKyAgICBBcyBzeXMgaXMgbmVlZGVkIGZvciBzeXMubW9kdWxlcyBhY2Nlc3MgYW5kIF9pbXAgaXMgbmVlZGVkIHRvIGxvYWQgYnVpbHQtaW4KKyAgICBtb2R1bGVzLCB0aG9zZSB0d28gbW9kdWxlcyBtdXN0IGJlIGV4cGxpY2l0bHkgcGFzc2VkIGluLgorCisgICAgIiIiCisgICAgZ2xvYmFsIF9pbXAsIHN5cworICAgIF9pbXAgPSBfaW1wX21vZHVsZQorICAgIHN5cyA9IHN5c19tb2R1bGUKKworICAgIGZvciBtb2R1bGUgaW4gKF9pbXAsIHN5cyk6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nKToKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gQnVpbHRpbkltcG9ydGVyCisKKyAgICBzZWxmX21vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQorICAgIGZvciBidWlsdGluX25hbWUgaW4gKCdfaW8nLCAnX3dhcm5pbmdzJywgJ2J1aWx0aW5zJywgJ21hcnNoYWwnKToKKyAgICAgICAgaWYgYnVpbHRpbl9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gQnVpbHRpbkltcG9ydGVyLmxvYWRfbW9kdWxlKGJ1aWx0aW5fbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9uYW1lXQorICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCBidWlsdGluX25hbWUsIGJ1aWx0aW5fbW9kdWxlKQorCisgICAgb3NfZGV0YWlscyA9ICgncG9zaXgnLCBbJy8nXSksICgnbnQnLCBbJ1xcJywgJy8nXSksICgnb3MyJywgWydcXCcsICcvJ10pCisgICAgZm9yIGJ1aWx0aW5fb3MsIHBhdGhfc2VwYXJhdG9ycyBpbiBvc19kZXRhaWxzOgorICAgICAgICAjIEFzc3VtcHRpb24gbWFkZSBpbiBfcGF0aF9qb2luKCkKKyAgICAgICAgYXNzZXJ0IGFsbChsZW4oc2VwKSA9PSAxIGZvciBzZXAgaW4gcGF0aF9zZXBhcmF0b3JzKQorICAgICAgICBwYXRoX3NlcCA9IHBhdGhfc2VwYXJhdG9yc1swXQorICAgICAgICBpZiBidWlsdGluX29zIGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgb3NfbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9vc10KKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3NfbW9kdWxlID0gQnVpbHRpbkltcG9ydGVyLmxvYWRfbW9kdWxlKGJ1aWx0aW5fb3MpCisgICAgICAgICAgICAgICAgIyBUT0RPOiByaXAgb3V0IG9zMiBjb2RlIGFmdGVyIDMuMyBpcyByZWxlYXNlZCBhcyBwZXIgUEVQIDExCisgICAgICAgICAgICAgICAgaWYgYnVpbHRpbl9vcyA9PSAnb3MyJyBhbmQgJ0VNWCBHQ0MnIGluIHN5cy52ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICBwYXRoX3NlcCA9IHBhdGhfc2VwYXJhdG9yc1sxXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignaW1wb3J0bGliIHJlcXVpcmVzIHBvc2l4IG9yIG50JykKKworICAgIHRyeToKKyAgICAgICAgdGhyZWFkX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX3RocmVhZCcpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAjIFB5dGhvbiB3YXMgYnVpbHQgd2l0aG91dCB0aHJlYWRzCisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBOb25lCisgICAgd2Vha3JlZl9tb2R1bGUgPSBCdWlsdGluSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ193ZWFrcmVmJykKKworICAgIGlmIGJ1aWx0aW5fb3MgPT0gJ250JzoKKyAgICAgICAgd2lucmVnX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZSgnd2lucmVnJykKKyAgICAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193aW5yZWcnLCB3aW5yZWdfbW9kdWxlKQorCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ19vcycsIG9zX21vZHVsZSkKKyAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3RocmVhZCcsIHRocmVhZF9tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193ZWFrcmVmJywgd2Vha3JlZl9tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwJywgcGF0aF9zZXApCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwYXJhdG9ycycsIHNldChwYXRoX3NlcGFyYXRvcnMpKQorICAgICMgQ29uc3RhbnRzCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ19yZWxheF9jYXNlJywgX21ha2VfcmVsYXhfY2FzZSgpKQorICAgIEVYVEVOU0lPTl9TVUZGSVhFUy5leHRlbmQoX2ltcC5leHRlbnNpb25fc3VmZml4ZXMoKSkKKyAgICBpZiBidWlsdGluX29zID09ICdudCc6CisgICAgICAgIFNPVVJDRV9TVUZGSVhFUy5hcHBlbmQoJy5weXcnKQorICAgICAgICBpZiAnX2QucHlkJyBpbiBFWFRFTlNJT05fU1VGRklYRVM6CisgICAgICAgICAgICBXaW5kb3dzUmVnaXN0cnlGaW5kZXIuREVCVUdfQlVJTEQgPSBUcnVlCisKKworZGVmIF9pbnN0YWxsKHN5c19tb2R1bGUsIF9pbXBfbW9kdWxlKToKKyAgICAiIiJJbnN0YWxsIGltcG9ydGxpYiBhcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LiIiIgorICAgIF9zZXR1cChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSkKKyAgICBzdXBwb3J0ZWRfbG9hZGVycyA9IF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpCisgICAgc3lzLnBhdGhfaG9va3MuZXh0ZW5kKFtGaWxlRmluZGVyLnBhdGhfaG9vaygqc3VwcG9ydGVkX2xvYWRlcnMpXSkKKyAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChCdWlsdGluSW1wb3J0ZXIpCisgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoRnJvemVuSW1wb3J0ZXIpCisgICAgaWYgX29zLl9fbmFtZV9fID09ICdudCc6CisgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFdpbmRvd3NSZWdpc3RyeUZpbmRlcikKKyAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChQYXRoRmluZGVyKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9hYmMucHkgYi9MaWIvaW1wb3J0bGliL2FiYy5weQppbmRleCBmYTM0M2Y4Li4zODc1NjdhIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL2FiYy5weQorKysgYi9MaWIvaW1wb3J0bGliL2FiYy5weQpAQCAtMSwxOCArMSw5NCBAQAogIiIiQWJzdHJhY3QgYmFzZSBjbGFzc2VzIHJlbGF0ZWQgdG8gaW1wb3J0LiIiIgogZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIC4gaW1wb3J0IG1hY2hpbmVyeQotZnJvbSAuIGltcG9ydCB1dGlsCit0cnk6CisgICAgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliCitleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgIGlmIGV4Yy5uYW1lICE9ICdfZnJvemVuX2ltcG9ydGxpYic6CisgICAgICAgIHJhaXNlCisgICAgX2Zyb3plbl9pbXBvcnRsaWIgPSBOb25lCiBpbXBvcnQgYWJjCiBpbXBvcnQgaW1wCi1pbXBvcnQgaW8KIGltcG9ydCBtYXJzaGFsCi1pbXBvcnQgb3MucGF0aAogaW1wb3J0IHN5cwogaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgdHlwZXMKIGltcG9ydCB3YXJuaW5ncwogCiAKK2RlZiBfcmVnaXN0ZXIoYWJzdHJhY3RfY2xzLCAqY2xhc3Nlcyk6CisgICAgZm9yIGNscyBpbiBjbGFzc2VzOgorICAgICAgICBhYnN0cmFjdF9jbHMucmVnaXN0ZXIoY2xzKQorICAgICAgICBpZiBfZnJvemVuX2ltcG9ydGxpYiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZyb3plbl9jbHMgPSBnZXRhdHRyKF9mcm96ZW5faW1wb3J0bGliLCBjbHMuX19uYW1lX18pCisgICAgICAgICAgICBhYnN0cmFjdF9jbHMucmVnaXN0ZXIoZnJvemVuX2NscykKKworCitjbGFzcyBGaW5kZXIobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKworICAgICIiIkxlZ2FjeSBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgZmluZGVycy4KKworICAgIEl0IG1heSBiZSBzdWJjbGFzc2VkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IHRoaXJkIHBhcnR5CisgICAgcmVpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGltcG9ydCBzeXN0ZW0uICBPdGhlcndpc2UsIGZpbmRlcgorICAgIGltcGxlbWVudGF0aW9ucyBzaG91bGQgZGVyaXZlIGZyb20gdGhlIG1vcmUgc3BlY2lmaWMgTWV0YVBhdGhGaW5kZXIKKyAgICBvciBQYXRoRW50cnlGaW5kZXIgQUJDcy4KKyAgICAiIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgICAgICIiIkFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IHNob3VsZCBmaW5kIGEgbW9kdWxlLgorICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kIHRoZSBvcHRpb25hbCBwYXRoIGlzIGEgc3RyIG9yIE5vbmUuCisgICAgICAgIFJldHVybnMgYSBMb2FkZXIgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisKK2NsYXNzIE1ldGFQYXRoRmluZGVyKEZpbmRlcik6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgZmluZGVycyBvbiBzeXMubWV0YV9wYXRoLiIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCwgd2hlbiBpbXBsZW1lbnRlZCwgc2hvdWxkIGZpbmQgYSBtb2R1bGUuCisgICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ciBhbmQgdGhlIHBhdGggaXMgYSBzdHIgb3IgTm9uZS4KKyAgICAgICAgUmV0dXJucyBhIExvYWRlciBvYmplY3QuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIkFuIG9wdGlvbmFsIG1ldGhvZCBmb3IgY2xlYXJpbmcgdGhlIGZpbmRlcidzIGNhY2hlLCBpZiBhbnkuCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworX3JlZ2lzdGVyKE1ldGFQYXRoRmluZGVyLCBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgbWFjaGluZXJ5LlBhdGhGaW5kZXIsIG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIpCisKKworY2xhc3MgUGF0aEVudHJ5RmluZGVyKEZpbmRlcik6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBwYXRoIGVudHJ5IGZpbmRlcnMgdXNlZCBieSBQYXRoRmluZGVyLiIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCwgd2hlbiBpbXBsZW1lbnRlZCwgcmV0dXJucyBhIG1vZHVsZSBsb2FkZXIuCisgICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ci4gIFJldHVybnMgYSAyLXR1cGxlIG9mIChMb2FkZXIsIHBvcnRpb24pIHdoZXJlCisgICAgICAgIHBvcnRpb24gaXMgYSBzZXF1ZW5jZSBvZiBmaWxlIHN5c3RlbSBsb2NhdGlvbnMgY29udHJpYnV0aW5nIHRvIHBhcnQgb2YKKyAgICAgICAgYSBuYW1lc3BhY2UgcGFja2FnZS4gIFRoZSBzZXF1ZW5jZSBtYXkgYmUgZW1wdHkgYW5kIHRoZSBsb2FkZXIgbWF5IGJlCisgICAgICAgIE5vbmUuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBmaW5kX21vZHVsZSA9IF9ib290c3RyYXAuX2ZpbmRfbW9kdWxlX3NoaW0KKworICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKKyAgICAgICAgIiIiQW4gb3B0aW9uYWwgbWV0aG9kIGZvciBjbGVhcmluZyB0aGUgZmluZGVyJ3MgY2FjaGUsIGlmIGFueS4KKyAgICAgICAgVGhpcyBtZXRob2QgaXMgdXNlZCBieSBQYXRoRmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworX3JlZ2lzdGVyKFBhdGhFbnRyeUZpbmRlciwgbWFjaGluZXJ5LkZpbGVGaW5kZXIpCisKKwogY2xhc3MgTG9hZGVyKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAKICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgbG9hZGVycy4iIiIKQEAgLTIzLDIzICs5OSwxMiBAQAogICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotCi1jbGFzcyBGaW5kZXIobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKLQotICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGltcG9ydCBmaW5kZXJzLiIiIgotCiAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAotICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAgIiIiQWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdoZW4gaW1wbGVtZW50ZWQgc2hvdWxkIGZpbmQgYSBtb2R1bGUuCi0gICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ciBhbmQgdGhlIG9wdGlvbmFsIHBhdGggaXMgYSBzdHIgb3IgTm9uZS4KLSAgICAgICAgUmV0dXJucyBhIExvYWRlciBvYmplY3QuCi0gICAgICAgICIiIgorICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmLCBtb2R1bGUpOgorICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2ggd2hlbiBpbXBsZW1lbnRlZCBjYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZQorICAgICAgICBnaXZlbiBtb2R1bGUncyByZXByLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLUZpbmRlci5yZWdpc3RlcihtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyKQotRmluZGVyLnJlZ2lzdGVyKG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcikKLUZpbmRlci5yZWdpc3RlcihtYWNoaW5lcnkuUGF0aEZpbmRlcikKLQogCiBjbGFzcyBSZXNvdXJjZUxvYWRlcihMb2FkZXIpOgogCkBAIC04NCw4ICsxNDksOCBAQAogICAgICAgICBtb2R1bGUuICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuICBSZXR1cm5zIGEgc3RyLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLUluc3BlY3RMb2FkZXIucmVnaXN0ZXIobWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikKLUluc3BlY3RMb2FkZXIucmVnaXN0ZXIobWFjaGluZXJ5LkZyb3plbkltcG9ydGVyKQorX3JlZ2lzdGVyKEluc3BlY3RMb2FkZXIsIG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQogCiAKIGNsYXNzIEV4ZWN1dGlvbkxvYWRlcihJbnNwZWN0TG9hZGVyKToKQEAgLTEwNCw2ICsxNjksMTUgQEAKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAKK2NsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKKworICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgcGFydGlhbGx5IGltcGxlbWVudGluZyB0aGUgUmVzb3VyY2VMb2FkZXIgYW5kCisgICAgRXhlY3V0aW9uTG9hZGVyIEFCQ3MuIiIiCisKK19yZWdpc3RlcihGaWxlTG9hZGVyLCBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKKworCiBjbGFzcyBTb3VyY2VMb2FkZXIoX2Jvb3RzdHJhcC5Tb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZGVyLCBFeGVjdXRpb25Mb2FkZXIpOgogCiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgbG9hZGluZyBzb3VyY2UgY29kZSAoYW5kIG9wdGlvbmFsbHkgYW55CkBAIC0xMjMsNyArMTk3LDIwIEBACiAKICAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSAoaW50KSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBhdGggKHN0cikuIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgaWYgc2VsZi5wYXRoX3N0YXRzLl9fZnVuY19fIGlzIFNvdXJjZUxvYWRlci5wYXRoX3N0YXRzOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICByZXR1cm4gaW50KHNlbGYucGF0aF9zdGF0cyhwYXRoKVsnbXRpbWUnXSkKKworICAgIGRlZiBwYXRoX3N0YXRzKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gYSBtZXRhZGF0YSBkaWN0IGZvciB0aGUgc291cmNlIHBvaW50ZWQgdG8gYnkgdGhlIHBhdGggKHN0cikuCisgICAgICAgIFBvc3NpYmxlIGtleXM6CisgICAgICAgIC0gJ210aW1lJyAobWFuZGF0b3J5KSBpcyB0aGUgbnVtZXJpYyB0aW1lc3RhbXAgb2YgbGFzdCBzb3VyY2UKKyAgICAgICAgICBjb2RlIG1vZGlmaWNhdGlvbjsKKyAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnBhdGhfbXRpbWUuX19mdW5jX18gaXMgU291cmNlTG9hZGVyLnBhdGhfbXRpbWU6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgIHJldHVybiB7J210aW1lJzogc2VsZi5wYXRoX210aW1lKHBhdGgpfQogCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgogICAgICAgICAiIiJXcml0ZSB0aGUgYnl0ZXMgdG8gdGhlIHBhdGggKGlmIHBvc3NpYmxlKS4KQEAgLTEzNyw2ICsyMjQsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCitfcmVnaXN0ZXIoU291cmNlTG9hZGVyLCBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogY2xhc3MgUHlMb2FkZXIoU291cmNlTG9hZGVyKToKIApAQCAtMTk1LDEwICsyODMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIFNvdXJjZUxvYWRlciBpbnN0ZWFkLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlZSB0aGUgaW1wb3J0bGliIGRvY3VtZW50YXRpb24gb24gaG93IHRvIGJlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAzLjEgb253YXJkcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgcGF0aCA9IHNlbGYuc291cmNlX3BhdGgoZnVsbG5hbWUpCiAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihuYW1lPWZ1bGxuYW1lKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKIApAQCAtMjI2LDcgKzMxNCw3IEBACiAgICAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gc291cmNlIG9yIGJ5dGVjb2RlIHBhdGggYXZhaWxhYmxlIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInswIXJ9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MCFyfSIuZm9ybWF0KGZ1bGxuYW1lKSwgbmFtZT1mdWxsbmFtZSkKIAogICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIkdldCBhIGNvZGUgb2JqZWN0IGZyb20gc291cmNlIG9yIGJ5dGVjb2RlLiIiIgpAQCAtMjM0LDcgKzMyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlbW92YWwgaW4gUHl0aG9uIDMuNDsgdXNlIFNvdXJjZUxvYWRlciBpbnN0ZWFkLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklmIFB5dGhvbiAzLjEgY29tcGF0aWJpbGl0eSBpcyByZXF1aXJlZCwgc2VlIHRoZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhdGVzdCBkb2N1bWVudGF0aW9uIGZvciBQeUxvYWRlci4iLAotICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgc291cmNlX3RpbWVzdGFtcCA9IHNlbGYuc291cmNlX210aW1lKGZ1bGxuYW1lKQogICAgICAgICAjIFRyeSB0byB1c2UgYnl0ZWNvZGUgaWYgaXQgaXMgYXZhaWxhYmxlLgogICAgICAgICBieXRlY29kZV9wYXRoID0gc2VsZi5ieXRlY29kZV9wYXRoKGZ1bGxuYW1lKQpAQCAtMjQzLDIwICszMzEsMzAgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBtYWdpYyA9IGRhdGFbOjRdCiAgICAgICAgICAgICAgICAgaWYgbGVuKG1hZ2ljKSA8IDQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgICAgIHJhd190aW1lc3RhbXAgPSBkYXRhWzQ6OF0KICAgICAgICAgICAgICAgICBpZiBsZW4ocmF3X3RpbWVzdGFtcCkgPCA0OgogICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiYmFkIHRpbWVzdGFtcCBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSkKLSAgICAgICAgICAgICAgICBweWNfdGltZXN0YW1wID0gbWFyc2hhbC5fcl9sb25nKHJhd190aW1lc3RhbXApCi0gICAgICAgICAgICAgICAgYnl0ZWNvZGUgPSBkYXRhWzg6XQorICAgICAgICAgICAgICAgIHB5Y190aW1lc3RhbXAgPSBfYm9vdHN0cmFwLl9yX2xvbmcocmF3X3RpbWVzdGFtcCkKKyAgICAgICAgICAgICAgICByYXdfc291cmNlX3NpemUgPSBkYXRhWzg6MTJdCisgICAgICAgICAgICAgICAgaWYgbGVuKHJhd19zb3VyY2Vfc2l6ZSkgIT0gNDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoImJhZCBmaWxlIHNpemUgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICAgICAgIyBTb3VyY2Ugc2l6ZSBpcyB1bnVzZWQgYXMgdGhlIEFCQyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvCisgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHNpemUgb2YgdGhlIHNvdXJjZSBhaGVhZCBvZiByZWFkaW5nIGl0LgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlID0gZGF0YVsxMjpdCiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbWFnaWMgbnVtYmVyIGlzIHZhbGlkLgogICAgICAgICAgICAgICAgIGlmIGltcC5nZXRfbWFnaWMoKSAhPSBtYWdpYzoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImJhZCBtYWdpYyBudW1iZXIgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBtYWdpYyBudW1iZXIgaW4ge30iLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgYnl0ZWNvZGUgaXMgbm90IHN0YWxlIChvbmx5IG1hdHRlcnMgd2hlbgogICAgICAgICAgICAgICAgICMgdGhlcmUgaXMgc291cmNlIHRvIGZhbGwgYmFjayBvbi4KICAgICAgICAgICAgICAgICBpZiBzb3VyY2VfdGltZXN0YW1wOgogICAgICAgICAgICAgICAgICAgICBpZiBweWNfdGltZXN0YW1wIDwgc291cmNlX3RpbWVzdGFtcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJieXRlY29kZSBpcyBzdGFsZSIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYnl0ZWNvZGUgaXMgc3RhbGUiLCBuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgICMgSWYgc291cmNlIGlzIGF2YWlsYWJsZSBnaXZlIGl0IGEgc2hvdC4KICAgICAgICAgICAgICAgICBpZiBzb3VyY2VfdGltZXN0YW1wIGlzIG5vdCBOb25lOgpAQCAtMjY4LDE4ICszNjYsMjAgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gbWFyc2hhbC5sb2FkcyhieXRlY29kZSkKICAgICAgICAgZWxpZiBzb3VyY2VfdGltZXN0YW1wIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gc291cmNlIG9yIGJ5dGVjb2RlIGF2YWlsYWJsZSB0byBjcmVhdGUgY29kZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgZm9yIHswIXJ9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCBmb3IgezAhcn0iLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKQogICAgICAgICAjIFVzZSB0aGUgc291cmNlLgogICAgICAgICBzb3VyY2VfcGF0aCA9IHNlbGYuc291cmNlX3BhdGgoZnVsbG5hbWUpCiAgICAgICAgIGlmIHNvdXJjZV9wYXRoIGlzIE5vbmU6CiAgICAgICAgICAgICBtZXNzYWdlID0gImEgc291cmNlIHBhdGggbXVzdCBleGlzdCB0byBsb2FkIHswfSIuZm9ybWF0KGZ1bGxuYW1lKQotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9ZnVsbG5hbWUpCiAgICAgICAgIHNvdXJjZSA9IHNlbGYuZ2V0X2RhdGEoc291cmNlX3BhdGgpCiAgICAgICAgIGNvZGVfb2JqZWN0ID0gY29tcGlsZShzb3VyY2UsIHNvdXJjZV9wYXRoLCAnZXhlYycsIGRvbnRfaW5oZXJpdD1UcnVlKQogICAgICAgICAjIEdlbmVyYXRlIGJ5dGVjb2RlIGFuZCB3cml0ZSBpdCBvdXQuCiAgICAgICAgIGlmIG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZToKICAgICAgICAgICAgIGRhdGEgPSBieXRlYXJyYXkoaW1wLmdldF9tYWdpYygpKQotICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5fd19sb25nKHNvdXJjZV90aW1lc3RhbXApKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX2Jvb3RzdHJhcC5fd19sb25nKHNvdXJjZV90aW1lc3RhbXApKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX2Jvb3RzdHJhcC5fd19sb25nKGxlbihzb3VyY2UpICYgMHhGRkZGRkZGRikpCiAgICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGVfb2JqZWN0KSkKICAgICAgICAgICAgIHNlbGYud3JpdGVfYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEpCiAgICAgICAgIHJldHVybiBjb2RlX29iamVjdApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQppbmRleCA1MTk3NzQ0Li5mZjgyNmU0IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQorKysgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQpAQCAtMSw1ICsxLDIwIEBACiAiIiJUaGUgbWFjaGluZXJ5IG9mIGltcG9ydGxpYjogZmluZGVycywgbG9hZGVycywgaG9va3MsIGV0Yy4iIiIKIAoraW1wb3J0IF9pbXAKKworZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgKFNPVVJDRV9TVUZGSVhFUywgREVCVUdfQllURUNPREVfU1VGRklYRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTLCBCWVRFQ09ERV9TVUZGSVhFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICBFWFRFTlNJT05fU1VGRklYRVMpCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBCdWlsdGluSW1wb3J0ZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IEZyb3plbkltcG9ydGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBXaW5kb3dzUmVnaXN0cnlGaW5kZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IFBhdGhGaW5kZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IEZpbGVGaW5kZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IFNvdXJjZUZpbGVMb2FkZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IFNvdXJjZWxlc3NGaWxlTG9hZGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBFeHRlbnNpb25GaWxlTG9hZGVyCisKKworZGVmIGFsbF9zdWZmaXhlcygpOgorICAgICIiIlJldHVybnMgYSBsaXN0IG9mIGFsbCByZWNvZ25pemVkIG1vZHVsZSBzdWZmaXhlcyBmb3IgdGhpcyBwcm9jZXNzIiIiCisgICAgcmV0dXJuIFNPVVJDRV9TVUZGSVhFUyArIEJZVEVDT0RFX1NVRkZJWEVTICsgRVhURU5TSU9OX1NVRkZJWEVTCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvX19pbml0X18ucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9fX21haW5fXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9fX21haW5fXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVjYzUzZC4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvX19tYWluX18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0iIiJSdW4gaW1wb3J0bGliJ3MgdGVzdCBzdWl0ZS4KLQotU3BlY2lmeWluZyB0aGUgYGAtLWJ1aWx0aW5gYCBmbGFnIHdpbGwgcnVuIHRlc3RzLCB3aGVyZSBhcHBsaWNhYmxlLCB3aXRoCi1idWlsdGlucy5fX2ltcG9ydF9fIGluc3RlYWQgb2YgaW1wb3J0bGliLl9faW1wb3J0X18uCi0KLSIiIgotaW1wb3J0IGltcG9ydGxpYgotZnJvbSBpbXBvcnRsaWIudGVzdC5pbXBvcnRfIGltcG9ydCB1dGlsCi1pbXBvcnQgb3MucGF0aAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGlmICdfX3B5Y2FjaGVfXycgaW4gX19maWxlX186Ci0gICAgICAgIHBhcnRzID0gX19maWxlX18uc3BsaXQob3MucGF0aC5zZXApCi0gICAgICAgIHN0YXJ0X2RpciA9IHNlcC5qb2luKHBhcnRzWzotMl0pCi0gICAgZWxzZToKLSAgICAgICAgc3RhcnRfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHRvcF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHN0YXJ0X2RpcikpCi0gICAgdGVzdF9sb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICBpZiAnLS1idWlsdGluJyBpbiBzeXMuYXJndjoKLSAgICAgICAgdXRpbC51c2luZ19fX2ltcG9ydF9fID0gVHJ1ZQotICAgIHJ1bl91bml0dGVzdCh0ZXN0X2xvYWRlci5kaXNjb3ZlcihzdGFydF9kaXIsIHRvcF9sZXZlbF9kaXI9dG9wX2RpcikpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2JlbmNobWFyay5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9iZW5jaG1hcmsucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZGU2YzYuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2JlbmNobWFyay5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0iIiJCZW5jaG1hcmsgc29tZSBiYXNpYyBpbXBvcnQgdXNlLWNhc2VzLgotCi1UaGUgYXNzdW1wdGlvbiBpcyBtYWRlIHRoYXQgdGhpcyBiZW5jaG1hcmsgaXMgcnVuIGluIGEgZnJlc2ggaW50ZXJwcmV0ZXIgYW5kCi10aHVzIGhhcyBubyBleHRlcm5hbCBjaGFuZ2VzIG1hZGUgdG8gaW1wb3J0LXJlbGF0ZWQgYXR0cmlidXRlcyBpbiBzeXMuCi0KLSIiIgotZnJvbSAuIGltcG9ydCB1dGlsCi1mcm9tIC5zb3VyY2UgaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKLWltcG9ydCBkZWNpbWFsCi1pbXBvcnQgaW1wCi1pbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgb3MKLWltcG9ydCBweV9jb21waWxlCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZWl0Ci0KLQotZGVmIGJlbmNoKG5hbWUsIGNsZWFudXA9bGFtYmRhOiBOb25lLCAqLCBzZWNvbmRzPTEsIHJlcGVhdD0zKToKLSAgICAiIiJCZW5jaCB0aGUgZ2l2ZW4gc3RhdGVtZW50IGFzIG1hbnkgdGltZXMgYXMgbmVjZXNzYXJ5IHVudGlsIHRvdGFsCi0gICAgZXhlY3V0aW9ucyB0YWtlIG9uZSBzZWNvbmQuIiIiCi0gICAgc3RtdCA9ICJfX2ltcG9ydF9fKHshcn0pIi5mb3JtYXQobmFtZSkKLSAgICB0aW1lciA9IHRpbWVpdC5UaW1lcihzdG10KQotICAgIGZvciB4IGluIHJhbmdlKHJlcGVhdCk6Ci0gICAgICAgIHRvdGFsX3RpbWUgPSAwCi0gICAgICAgIGNvdW50ID0gMAotICAgICAgICB3aGlsZSB0b3RhbF90aW1lIDwgc2Vjb25kczoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0b3RhbF90aW1lICs9IHRpbWVyLnRpbWVpdCgxKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjbGVhbnVwKCkKLSAgICAgICAgICAgIGNvdW50ICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgT25lIGV4ZWN1dGlvbiB0b28gZmFyCi0gICAgICAgICAgICBpZiB0b3RhbF90aW1lID4gc2Vjb25kczoKLSAgICAgICAgICAgICAgICBjb3VudCAtPSAxCi0gICAgICAgIHlpZWxkIGNvdW50IC8vIHNlY29uZHMKLQotZGVmIGZyb21fY2FjaGUoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJzeXMubW9kdWxlcyIiIgotICAgIG5hbWUgPSAnPGJlbmNobWFyayBpbXBvcnQ+JwotICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCi0gICAgbW9kdWxlLl9fZmlsZV9fID0gJzx0ZXN0PicKLSAgICBtb2R1bGUuX19wYWNrYWdlX18gPSAnJwotICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQotICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgYnVpbHRpbl9tb2Qoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJCdWlsdC1pbiBtb2R1bGUiIiIKLSAgICBuYW1lID0gJ2Vycm5vJwotICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQotICAgICMgUmVseWluZyBvbiBidWlsdC1pbiBpbXBvcnRlciBiZWluZyBpbXBsaWNpdC4KLSAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIHNvdXJjZV93b19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3L28gYnl0ZWNvZGU6IHNpbXBsZSIiIgotICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQotICAgIHRyeToKLSAgICAgICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgICAgICAjIENsZWFycyBvdXQgc3lzLm1vZHVsZXMgYW5kIHB1dHMgYW4gZW50cnkgYXQgdGhlIGZyb250IG9mIHN5cy5wYXRoLgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKLSAgICAgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0gICAgZmluYWxseToKLSAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQotCi0KLWRlZiBkZWNpbWFsX3dvX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiU291cmNlIHcvbyBieXRlY29kZTogZGVjaW1hbCIiIgotICAgIG5hbWUgPSAnZGVjaW1hbCcKLSAgICBkZWNpbWFsX2J5dGVjb2RlID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKGRlY2ltYWwuX19maWxlX18pCi0gICAgaWYgb3MucGF0aC5leGlzdHMoZGVjaW1hbF9ieXRlY29kZSk6Ci0gICAgICAgIG9zLnVubGluayhkZWNpbWFsX2J5dGVjb2RlKQotICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQotICAgIHRyeToKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0gICAgZmluYWxseToKLSAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQotCi0KLWRlZiBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiBzaW1wbGUiIiIKLSAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKLSAgICAgICAgZGVmIGNsZWFudXAoKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQotICAgICAgICAgICAgb3MudW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBjbGVhbnVwLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgZGVjaW1hbF93cml0aW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiU291cmNlIHdyaXRpbmcgYnl0ZWNvZGU6IGRlY2ltYWwiIiIKLSAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgbmFtZSA9ICdkZWNpbWFsJwotICAgIGRlZiBjbGVhbnVwKCk6Ci0gICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQotICAgICAgICBvcy51bmxpbmsoaW1wLmNhY2hlX2Zyb21fc291cmNlKGRlY2ltYWwuX19maWxlX18pKQotICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgY2xlYW51cCwgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIHNvdXJjZV91c2luZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIkJ5dGVjb2RlIHcvIHNvdXJjZTogc2ltcGxlIiIiCi0gICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKLSAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1hcHBpbmdbbmFtZV0pCi0gICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgIHlpZWxkIHJlc3VsdAotCi0KLWRlZiBkZWNpbWFsX3VzaW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiQnl0ZWNvZGUgdy8gc291cmNlOiBkZWNpbWFsIiIiCi0gICAgbmFtZSA9ICdkZWNpbWFsJwotICAgIHB5X2NvbXBpbGUuY29tcGlsZShkZWNpbWFsLl9fZmlsZV9fKQotICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgbWFpbihpbXBvcnRfKToKLSAgICBfX2J1aWx0aW5zX18uX19pbXBvcnRfXyA9IGltcG9ydF8KLSAgICBiZW5jaG1hcmtzID0gKGZyb21fY2FjaGUsIGJ1aWx0aW5fbW9kLAotICAgICAgICAgICAgICAgICAgc291cmNlX3VzaW5nX2J5dGVjb2RlLCBzb3VyY2Vfd29fYnl0ZWNvZGUsCi0gICAgICAgICAgICAgICAgICBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZSwKLSAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdXNpbmdfYnl0ZWNvZGUsIGRlY2ltYWxfd3JpdGluZ19ieXRlY29kZSwKLSAgICAgICAgICAgICAgICAgIGRlY2ltYWxfd29fYnl0ZWNvZGUsKQotICAgIHNlY29uZHMgPSAxCi0gICAgc2Vjb25kc19wbHVyYWwgPSAncycgaWYgc2Vjb25kcyA+IDEgZWxzZSAnJwotICAgIHJlcGVhdCA9IDMKLSAgICBoZWFkZXIgPSAiTWVhc3VyaW5nIGltcG9ydHMvc2Vjb25kIG92ZXIge30gc2Vjb25ke30sIGJlc3Qgb3V0IG9mIHt9XG4iCi0gICAgcHJpbnQoaGVhZGVyLmZvcm1hdChzZWNvbmRzLCBzZWNvbmRzX3BsdXJhbCwgcmVwZWF0KSkKLSAgICBmb3IgYmVuY2htYXJrIGluIGJlbmNobWFya3M6Ci0gICAgICAgIHByaW50KGJlbmNobWFyay5fX2RvY19fLCAiWyIsIGVuZD0nICcpCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaG1hcmsoc2Vjb25kcz1zZWNvbmRzLCByZXBlYXQ9cmVwZWF0KToKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCkKLSAgICAgICAgICAgIHByaW50KHJlc3VsdCwgZW5kPScgJykKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgICAgIHByaW50KCJdIiwgImJlc3QgaXMiLCBmb3JtYXQobWF4KHJlc3VsdHMpLCAnLGQnKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCBvcHRwYXJzZQotCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWInLCAnLS1idWlsdGluJywgZGVzdD0nYnVpbHRpbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSJ1c2UgdGhlIGJ1aWx0LWluIF9faW1wb3J0X18iKQotICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0gICAgaWYgYXJnczoKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ1bnJlY29nbml6ZWQgYXJnczoge30iLmZvcm1hdChhcmdzKSkKLSAgICBpbXBvcnRfID0gX19pbXBvcnRfXwotICAgIGlmIG5vdCBvcHRpb25zLmJ1aWx0aW46Ci0gICAgICAgIGltcG9ydF8gPSBpbXBvcnRsaWIuX19pbXBvcnRfXwotCi0gICAgbWFpbihpbXBvcnRfKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYzU4NDAuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCB1bml0dGVzdAotCi0KLWRlZiB0ZXN0X3N1aXRlKCk6Ci0gICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5leHRlbnNpb24nLCBkaXJlY3RvcnkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTc4M2RiLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGV4dF91dGlsCi1mcm9tIC4uIGltcG9ydCBhYmMKLWZyb20gLi4gaW1wb3J0IHV0aWwKLQotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKLQotICAgICIiIlRlc3QgbG9hZF9tb2R1bGUoKSBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuIiIiCi0KLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9FeHRlbnNpb25GaWxlTG9hZGVyKGV4dF91dGlsLk5BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfdXRpbC5GSUxFUEFUSCkKLSAgICAgICAgcmV0dXJuIGxvYWRlci5sb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCBleHRfdXRpbC5OQU1FKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2ZpbGVfXycsIGV4dF91dGlsLkZJTEVQQVRIKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4dF91dGlsLk5BTUUgaW4gc3lzLm1vZHVsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX0V4dGVuc2lvbkZpbGVMb2FkZXIpKQotCi0gICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBFeHRlbnNpb25zIGFyZSBub3QgZm91bmQgaW4gcGFja2FnZXMuCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0X2xhY2tpbmdfcGFyZW50KHNlbGYpOgotICAgICAgICAjIEV4dGVuc2lvbnMgYXJlIG5vdCBmb3VuZCBpbiBwYWNrYWdlcy4KLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZTEgaXMgbW9kdWxlMikKLQotICAgIGRlZiB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgICMgTm8gZWFzeSB3YXkgdG8gdHJpZ2dlciBhIGZhaWx1cmUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGltcG9ydC4KLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3RfdW5sb2FkYWJsZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6Ci0gICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdhc2RmamtsOycpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoTG9hZGVyVGVzdHMpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NDVlZWIuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCB1bml0dGVzdAotCi0KLWRlZiB0ZXN0X3N1aXRlKCk6Ci0gICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5mcm96ZW4nLCBkaXJlY3RvcnkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL19faW5pdF9fLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZjc2NjEuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1kZWYgdGVzdF9zdWl0ZSgpOgotICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuaW1wb3J0XycsIGRpcmVjdG9yeSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QodGVzdF9zdWl0ZSgpKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9hcGkucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2FwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA3NWQ0Mi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2FwaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLWZyb20gLiBpbXBvcnQgdXRpbAotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgQVBJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IEFQSS1zcGVjaWZpYyBkZXRhaWxzIGZvciBfX2ltcG9ydF9fIChlLmcuIHJhaXNpbmcgdGhlIHJpZ2h0Ci0gICAgZXhjZXB0aW9uIHdoZW4gcGFzc2luZyBpbiBhbiBpbnQgZm9yIHRoZSBtb2R1bGUgbmFtZSkuIiIiCi0KLSAgICBkZWYgdGVzdF9uYW1lX3JlcXVpcmVzX3JwYXJpdGlvbihzZWxmKToKLSAgICAgICAgIyBSYWlzZSBUeXBlRXJyb3IgaWYgYSBub24tc3RyaW5nIGlzIHBhc3NlZCBpbiBmb3IgdGhlIG1vZHVsZSBuYW1lLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICB1dGlsLmltcG9ydF8oNDIpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoQVBJVGVzdCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFhZGMzMi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpbXBvcnRsaWIKLQotCi1jbGFzcyBQYXJlbnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJJbXBvcnRpbmcgYSBzdWJtb2R1bGUgc2hvdWxkIGltcG9ydCB0aGUgcGFyZW50IG1vZHVsZXMuIiIiCi0KLSAgICBkZWYgdGVzdF9pbXBvcnRfcGFyZW50KHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZHVsZScpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncGtnJyBpbiBzeXMubW9kdWxlcykKLQotICAgIGRlZiB0ZXN0X2JhZF9wYXJlbnQoc2VsZik6Ci0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5tb2R1bGUnKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLm1vZHVsZScpCi0KLSAgICBkZWYgdGVzdF9tb2R1bGVfbm90X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgVHJ5IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSBmcm9tIGEgbm9uLXBhY2thZ2Ugc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yLgotICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIoc3lzLCAnX19wYXRoX18nKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKLSAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3N5cy5ub19zdWJtb2R1bGVzX2hlcmUnKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KFBhcmVudE1vZHVsZVRlc3RzKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcGF0aC5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcGF0aC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZhYTIzMS4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhdGgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKLWZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAotaW1wb3J0IGltcAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0eXBlcyBpbXBvcnQgTWV0aG9kVHlwZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgRmluZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdHMgZm9yIFBhdGhGaW5kZXIuIiIiCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICAjIFRlc3QgTm9uZSByZXR1cm5lZCB1cG9uIG5vdCBmaW5kaW5nIGEgc3VpdGFibGUgZmluZGVyLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZSgpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkgaXMgTm9uZSkKLQotICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCi0gICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCi0gICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwotICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JwotICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKLSAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgotICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBpbXBvcnRlcikKLQotICAgIGRlZiB0ZXN0X3BhdGgoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0ICdwYXRoJyBpcyB1c2VkIHdoZW4gc2V0LgotICAgICAgICAjIEltcGxpY2l0bHkgdGVzdHMgdGhhdCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBpcyB1c2VkLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKLSAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9KToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBpbXBvcnRlcikKLQotICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCi0gICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHNldC4KLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICBob29rID0gaW1wb3J0X3V0aWwubW9ja19wYXRoX2hvb2socGF0aCwgaW1wb3J0ZXI9aW1wb3J0ZXIpCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9ob29rcz1baG9va10pOgotICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIGltcG9ydGVyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGggaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gaXMgaW1wb3J0ZXIpCi0KLSAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2hhc19Ob25lKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBpZiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBoYXMgTm9uZSB0aGF0IE5vbmUgaXMgcmV0dXJuZWQuCi0gICAgICAgIGNsZWFyX2NhY2hlID0ge3BhdGg6IE5vbmUgZm9yIHBhdGggaW4gc3lzLnBhdGh9Ci0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT1jbGVhcl9jYWNoZSk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiAoJ2FzeW5jaGF0JywgJ3N5cycsICc8dGVzdCBtb2R1bGU+Jyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG5hbWUpIGlzIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2hhc19Ob25lX2NvbnRpbnVlcyhzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgaGF2aW5nIE5vbmUgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgY2F1c2VzIHRoZSBzZWFyY2ggdG8KLSAgICAgICAgIyBjb250aW51ZS4KLSAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9WycxJywgJzInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2ltcG9ydGVyX2NhY2hlPXsnMSc6IE5vbmUsICcyJzogaW1wb3J0ZXJ9KToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0KLQotCi1jbGFzcyBEZWZhdWx0UGF0aEZpbmRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgaW1wb3J0bGliLl9ib290c3RyYXAuX0RlZmF1bHRQYXRoRmluZGVyLiIiIgotCi0gICAgZGVmIHRlc3RfaW1wbGljaXRfaG9va3Moc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHRoZSBpbXBsaWNpdCBwYXRoIGhvb2tzIGFyZSB1c2VkLgotICAgICAgICBiYWRfcGF0aCA9ICc8cGF0aD4nCi0gICAgICAgIG1vZHVsZSA9ICc8bW9kdWxlPicKLSAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhiYWRfcGF0aCkKLSAgICAgICAgZXhpc3RpbmdfcGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKCk6Ci0gICAgICAgICAgICAgICAgbm90aGluZyA9IF9ib290c3RyYXAuX0RlZmF1bHRQYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bZXhpc3RpbmdfcGF0aF0pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdGhpbmcgaXMgTm9uZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhpc3RpbmdfcGF0aCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBpc2luc3RhbmNlKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2V4aXN0aW5nX3BhdGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wLk51bGxJbXBvcnRlcikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3VsdCkKLSAgICAgICAgICAgICAgICBub3RoaW5nID0gX2Jvb3RzdHJhcC5fRGVmYXVsdFBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bYmFkX3BhdGhdKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RoaW5nIGlzIE5vbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJhZF9wYXRoIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2JhZF9wYXRoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXAuTnVsbEltcG9ydGVyKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJtZGlyKGV4aXN0aW5nX3BhdGgpCi0KLQotICAgIGRlZiB0ZXN0X3BhdGhfaW1wb3J0ZXJfY2FjaGVfaGFzX05vbmUoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHRoZSBkZWZhdWx0IGhvb2sgaXMgdXNlZCB3aGVuIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlCi0gICAgICAgICMgY29udGFpbnMgTm9uZSBmb3IgYSBwYXRoLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgICMgWFhYIE5vdCBibGFja2JveC4KLSAgICAgICAgb3JpZ2luYWxfaG9vayA9IF9ib290c3RyYXAuX0RFRkFVTFRfUEFUSF9IT09LCi0gICAgICAgIG1vY2tfaG9vayA9IGltcG9ydF91dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQotICAgICAgICBfYm9vdHN0cmFwLl9ERUZBVUxUX1BBVEhfSE9PSyA9IG1vY2tfaG9vawotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IE5vbmV9KToKLSAgICAgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9EZWZhdWx0UGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfYm9vdHN0cmFwLl9ERUZBVUxUX1BBVEhfSE9PSyA9IG9yaWdpbmFsX2hvb2sKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdChGaW5kZXJUZXN0cywgRGVmYXVsdFBhdGhGaW5kZXJUZXN0cykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3JlZ3J0ZXN0LnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L3JlZ3J0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTAzYWU3Li4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9yZWdydGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSIiIlJ1biBQeXRob24ncyBzdGFuZGFyZCB0ZXN0IHN1aXRlIHVzaW5nIGltcG9ydGxpYi5fX2ltcG9ydF9fLgotCi1UZXN0cyBrbm93biB0byBmYWlsIGJlY2F1c2Ugb2YgYXNzdW1wdGlvbnMgdGhhdCBpbXBvcnRsaWIgKHByb3Blcmx5KQotaW52YWxpZGF0ZXMgYXJlIGF1dG9tYXRpY2FsbHkgc2tpcHBlZCBpZiB0aGUgZW50aXJlIHRlc3Qgc3VpdGUgaXMgcnVuLgotT3RoZXJ3aXNlIGFsbCBjb21tYW5kLWxpbmUgb3B0aW9ucyB2YWxpZCBmb3IgdGVzdC5yZWdydGVzdCBhcmUgYWxzbyB2YWxpZCBmb3IKLXRoaXMgc2NyaXB0LgotCi1YWFggRkFJTElORwotICAqIHRlc3RfaW1wb3J0Ci0gICAgLSB0ZXN0X2luY29ycmVjdF9jb2RlX25hbWUKLSAgICAgICAgZmlsZSBuYW1lIGRpZmZlcmluZyBiZXR3ZWVuIF9fZmlsZV9fIGFuZCBjb19maWxlbmFtZSAocjY4MzYwIG9uIHRydW5rKQotICAgIC0gdGVzdF9pbXBvcnRfYnlfZmlsZW5hbWUKLSAgICAgICAgZXhjZXB0aW9uIGZvciB0cnlpbmcgdG8gaW1wb3J0IGJ5IGZpbGUgbmFtZSBkb2VzIG5vdCBtYXRjaAotCi0iIiIKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBfX2J1aWx0aW5zX18uX19pbXBvcnRfXyA9IGltcG9ydGxpYi5fX2ltcG9ydF9fCi0KLSAgICBleGNsdWRlID0gWyctLWV4Y2x1ZGUnLAotICAgICAgICAgICAgICAgICd0ZXN0X2Zyb3plbicsICMgRG9lcyBub3QgZXhwZWN0IF9fbG9hZGVyX18gYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgJ3Rlc3RfcGtnJywgICMgRG9lcyBub3QgZXhwZWN0IF9fbG9hZGVyX18gYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgJ3Rlc3RfcHlkb2MnLCAjIERvZXMgbm90IGV4cGVjdCBfX2xvYWRlcl9fIGF0dHJpYnV0ZQotICAgICAgICAgICAgICBdCi0KLSAgICAjIFN3aXRjaGluZyBvbiAtLWV4Y2x1ZGUgaW1wbGllcyBydW5uaW5nIGFsbCB0ZXN0IGJ1dCB0aGUgb25lcyBsaXN0ZWQsIHNvCi0gICAgIyBvbmx5IHVzZSBpdCB3aGVuIG9uZSBpcyBub3QgcnVubmluZyBhbiBleHBsaWNpdCB0ZXN0Ci0gICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAxOgotICAgICAgICAjIE5vIHByb2dyYW1tYXRpYyB3YXkgdG8gc3BlY2lmeSB0ZXN0cyB0byBleGNsdWRlCi0gICAgICAgIHN5cy5hcmd2LmV4dGVuZChleGNsdWRlKQotCi0gICAgcmVncnRlc3QubWFpbihxdWlldD1UcnVlLCB2ZXJib3NlMj1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NGY3YjYuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIFBhdGhIb29rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IHRoZSBwYXRoIGhvb2sgZm9yIHNvdXJjZS4iIiIKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKG1hcHBpbmdbJy5yb290J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbmRfbW9kdWxlJykpCi0KLSAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6Ci0gICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIHRoZSBjd2QuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKCcnKSwgJ2ZpbmRfbW9kdWxlJykpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoUGF0aEhvb2tUZXN0KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FwaS5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE1MTYyNi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hcGkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi1mcm9tIC4gaW1wb3J0IHV0aWwKLWltcG9ydCBpbXAKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIEltcG9ydE1vZHVsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUuIiIiCi0KLSAgICBkZWYgdGVzdF9tb2R1bGVfaW1wb3J0KHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgdG9wLWxldmVsIG1vZHVsZS4KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygndG9wX2xldmVsJykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ3RvcF9sZXZlbCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICd0b3BfbGV2ZWwnKQotCi0gICAgZGVmIHRlc3RfYWJzb2x1dGVfcGFja2FnZV9pbXBvcnQoc2VsZik6Ci0gICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2Ugd2l0aCBhbiBhYnNvbHV0ZSBuYW1lLgotICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCi0gICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCi0gICAgICAgIG5hbWUgPSAnezB9Lm1vZCcuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCi0KLSAgICBkZWYgdGVzdF9zaGFsbG93X3JlbGF0aXZlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHRocm91Z2ggYSByZWxhdGl2ZSBpbXBvcnQuCi0gICAgICAgIHBrZ19uYW1lID0gJ3BrZycKLSAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgbW9kdWxlX25hbWUgPSAnbW9kJwotICAgICAgICBhYnNvbHV0ZV9uYW1lID0gJ3swfS57MX0nLmZvcm1hdChwa2dfbmFtZSwgbW9kdWxlX25hbWUpCi0gICAgICAgIHJlbGF0aXZlX25hbWUgPSAnLnswfScuZm9ybWF0KG1vZHVsZV9uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIGFic29sdXRlX25hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHJlbGF0aXZlX25hbWUsIHBrZ19uYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBhYnNvbHV0ZV9uYW1lKQotCi0gICAgZGVmIHRlc3RfZGVlcF9yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKLSAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmIuX19pbml0X18nLCAnYS5jJ10KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EnKQotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuLmMnLCAnYS5iJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ2EuYycpCi0KLSAgICBkZWYgdGVzdF9hYnNvbHV0ZV9pbXBvcnRfd2l0aF9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHdpdGggYW4gYWJzb2x1dGUgbmFtZSB3aXRoCi0gICAgICAgICMgdGhlICdwYWNrYWdlJyBhcmd1bWVudCBnaXZlbi4KLSAgICAgICAgcGtnX25hbWUgPSAncGtnJwotICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lLCBwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKLQotICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF93b19wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFJlbGF0aXZlIGltcG9ydHMgY2Fubm90IGhhcHBlbiB3aXRob3V0IHRoZSAncGFja2FnZScgYXJndW1lbnQgYmVpbmcKLSAgICAgICAgIyBzZXQuCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuc3VwcG9ydCcpCi0KLQotICAgIGRlZiB0ZXN0X2xvYWRlZF9vbmNlKHNlbGYpOgotICAgICAgICAjIElzc3VlICMxMzU5MTogTW9kdWxlcyBzaG91bGQgb25seSBiZSBsb2FkZWQgb25jZSB3aGVuCi0gICAgICAgICMgaW5pdGlhbGl6aW5nIHRoZSBwYXJlbnQgcGFja2FnZSBhdHRlbXB0cyB0byBpbXBvcnQgdGhlCi0gICAgICAgICMgbW9kdWxlIGN1cnJlbnRseSBiZWluZyBpbXBvcnRlZC4KLSAgICAgICAgYl9sb2FkX2NvdW50ID0gMAotICAgICAgICBkZWYgbG9hZF9hKCk6Ci0gICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKLSAgICAgICAgZGVmIGxvYWRfYigpOgotICAgICAgICAgICAgbm9ubG9jYWwgYl9sb2FkX2NvdW50Ci0gICAgICAgICAgICBiX2xvYWRfY291bnQgKz0gMQotICAgICAgICBjb2RlID0geydhJzogbG9hZF9hLCAnYS5iJzogbG9hZF9ifQotICAgICAgICBtb2R1bGVzID0gWydhLl9faW5pdF9fJywgJ2EuYiddCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMsIG1vZHVsZV9jb2RlPWNvZGUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJfbG9hZF9jb3VudCwgMSkKLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoSW1wb3J0TW9kdWxlVGVzdHMpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfdXRpbC5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMjQ0N2YuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotaW1wb3J0IGltcAotaW1wb3J0IHN5cwotaW1wb3J0IHR5cGVzCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1jbGFzcyBNb2R1bGVGb3JMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIuIiIiCi0KLSAgICBkZWYgcmV0dXJuX21vZHVsZShzZWxmLCBuYW1lKToKLSAgICAgICAgZnhuID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcihsYW1iZGEgc2VsZiwgbW9kdWxlOiBtb2R1bGUpCi0gICAgICAgIHJldHVybiBmeG4oc2VsZiwgbmFtZSkKLQotICAgIGRlZiByYWlzZV9leGNlcHRpb24oc2VsZiwgbmFtZSk6Ci0gICAgICAgIGRlZiB0b193cmFwKHNlbGYsIG1vZHVsZSk6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgotICAgICAgICBmeG4gPSB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyKHRvX3dyYXApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZ4bihzZWxmLCBuYW1lKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9uZXdfbW9kdWxlKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCB3aGVuIG5vIG1vZHVsZSBleGlzdHMgaW4gc3lzLm1vZHVsZXMgYSBuZXcgbW9kdWxlIGlzCi0gICAgICAgICMgY3JlYXRlZC4KLSAgICAgICAgbW9kdWxlX25hbWUgPSAnYS5iLmMnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobW9kdWxlX25hbWUpOgotICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5yZXR1cm5fbW9kdWxlKG1vZHVsZV9uYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZV9uYW1lIGluIHN5cy5tb2R1bGVzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbW9kdWxlX25hbWUpCi0KLSAgICBkZWYgdGVzdF9yZWxvYWQoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IGEgbW9kdWxlIGlzIHJldXNlZCBpZiBhbHJlYWR5IGluIHN5cy5tb2R1bGVzLgotICAgICAgICBuYW1lID0gJ2EuYi5jJwotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnYS5iLmMnKQotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKLSAgICAgICAgICAgIHJldHVybmVkX21vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR1cm5lZF9tb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQotCi0gICAgZGVmIHRlc3RfbmV3X21vZHVsZV9mYWlsdXJlKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMgaWYgYWRkZWQgYnV0IGFuCi0gICAgICAgICMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KLSAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobmFtZSBub3QgaW4gc3lzLm1vZHVsZXMpCi0KLSAgICBkZWYgdGVzdF9yZWxvYWRfZmFpbHVyZShzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgYSBmYWlsdXJlIG9uIHJlbG9hZCBsZWF2ZXMgdGhlIG1vZHVsZSBpbi1wbGFjZS4KLSAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCi0gICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQotCi0KLWNsYXNzIFNldFBhY2thZ2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLQotICAgICIiIlRlc3RzIGZvciBpbXBvcnRsaWIudXRpbC5zZXRfcGFja2FnZS4iIiIKLQotICAgIGRlZiB2ZXJpZnkoc2VsZiwgbW9kdWxlLCBleHBlY3QpOgotICAgICAgICAiIiJWZXJpZnkgdGhlIG1vZHVsZSBoYXMgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBfX3BhY2thZ2VfXyBhZnRlcgotICAgICAgICBwYXNzaW5nIHRocm91Z2ggc2V0X3BhY2thZ2UuIiIiCi0gICAgICAgIGZ4biA9IGxhbWJkYTogbW9kdWxlCi0gICAgICAgIHdyYXBwZWQgPSB1dGlsLnNldF9wYWNrYWdlKGZ4bikKLSAgICAgICAgd3JhcHBlZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0LCBtb2R1bGUuX19wYWNrYWdlX18pCi0KLSAgICBkZWYgdGVzdF90b3BfbGV2ZWwoc2VsZik6Ci0gICAgICAgICMgX19wYWNrYWdlX18gc2hvdWxkIGJlIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIGEgdG9wLWxldmVsIG1vZHVsZS4KLSAgICAgICAgIyBJbXBsaWNpdGx5IHRlc3RzIHdoZW4gcGFja2FnZSBpcyBzZXQgdG8gTm9uZS4KLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZHVsZScpCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAnJykKLQotICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgVGVzdCBzZXR0aW5nIF9fcGFja2FnZV9fIGZvciBhIHBhY2thZ2UuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdwa2cnKQotICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbJzxwYXRoPiddCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAncGtnJykKLQotICAgIGRlZiB0ZXN0X3N1Ym1vZHVsZShzZWxmKToKLSAgICAgICAgIyBUZXN0IF9fcGFja2FnZV9fIGZvciBhIG1vZHVsZSBpbiBhIHBhY2thZ2UuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdwa2cubW9kJykKLSAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQotICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICdwa2cnKQotCi0gICAgZGVmIHRlc3Rfc2V0dGluZ19pZl9taXNzaW5nKHNlbGYpOgotICAgICAgICAjIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgaWYgaXQgaXMgbWlzc2luZy4KLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCi0gICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKToKLSAgICAgICAgICAgIGRlbGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKQotICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICcnKQotCi0gICAgZGVmIHRlc3RfbGVhdmluZ19hbG9uZShzZWxmKToKLSAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyBpcyBzZXQgYW5kIG5vdCBOb25lIHRoZW4gbGVhdmUgaXQgYWxvbmUuCi0gICAgICAgIGZvciB2YWx1ZSBpbiAoVHJ1ZSwgRmFsc2UpOgotICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCi0gICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSB2YWx1ZQotICAgICAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCB2YWx1ZSkKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTW9kdWxlRm9yTG9hZGVyVGVzdHMsIFNldFBhY2thZ2VUZXN0cykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKaW5kZXggN2I0NGZhMS4uMTMxNjQzNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQpAQCAtMywzICszLDE5IEBACiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBtb2R1bGVfZm9yX2xvYWRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc2V0X2xvYWRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc2V0X3BhY2thZ2UKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IF9yZXNvbHZlX25hbWUKKworCitkZWYgcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpOgorICAgICIiIlJlc29sdmUgYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSB0byBhbiBhYnNvbHV0ZSBvbmUuIiIiCisgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnLicpOgorICAgICAgICByZXR1cm4gbmFtZQorICAgIGVsaWYgbm90IHBhY2thZ2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgcmVsYXRpdmUgbmFtZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyhubyBsZWFkaW5nIGRvdCknLmZvcm1hdChuYW1lKSkKKyAgICBsZXZlbCA9IDAKKyAgICBmb3IgY2hhcmFjdGVyIGluIG5hbWU6CisgICAgICAgIGlmIGNoYXJhY3RlciAhPSAnLic6CisgICAgICAgICAgICBicmVhaworICAgICAgICBsZXZlbCArPSAxCisgICAgcmV0dXJuIF9yZXNvbHZlX25hbWUobmFtZVtsZXZlbDpdLCBwYWNrYWdlLCBsZXZlbCkKZGlmZiAtLWdpdCBhL0xpYi9pbnNwZWN0LnB5IGIvTGliL2luc3BlY3QucHkKaW5kZXggMjAzMTc1NS4uODhmMGVlMiAxMDA2NDQKLS0tIGEvTGliL2luc3BlY3QucHkKKysrIGIvTGliL2luc3BlY3QucHkKQEAgLTIyLDI0ICsyMiwyOSBAQAogICAgIGdldG91dGVyZnJhbWVzKCksIGdldGlubmVyZnJhbWVzKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMKICAgICBjdXJyZW50ZnJhbWUoKSAtIGdldCB0aGUgY3VycmVudCBzdGFjayBmcmFtZQogICAgIHN0YWNrKCksIHRyYWNlKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMgb24gdGhlIHN0YWNrIG9yIGluIGEgdHJhY2ViYWNrCisKKyAgICBzaWduYXR1cmUoKSAtIGdldCBhIFNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBjYWxsYWJsZQogIiIiCiAKICMgVGhpcyBtb2R1bGUgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4uICBObyB3YXJyYW50aWVzLgogCi1fX2F1dGhvcl9fID0gJ0thLVBpbmcgWWVlIDxwaW5nQGxmdy5vcmc+JwotX19kYXRlX18gPSAnMSBKYW4gMjAwMScKK19fYXV0aG9yX18gPSAoJ0thLVBpbmcgWWVlIDxwaW5nQGxmdy5vcmc+JywKKyAgICAgICAgICAgICAgJ1l1cnkgU2VsaXZhbm92IDx5c2VsaXZhbm92QHNwcnltaXguY29tPicpCiAKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IHR5cGVzCi1pbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQgc3RyaW5nCi1pbXBvcnQgcmUKIGltcG9ydCBpbXAKLWltcG9ydCB0b2tlbml6ZQoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgdG9rZW5pemUKK2ltcG9ydCB0eXBlcworaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgYnVpbHRpbnMKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGF0dHJnZXR0ZXIKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIE9yZGVyZWREaWN0CiAKICMgQ3JlYXRlIGNvbnN0YW50cyBmb3IgdGhlIGNvbXBpbGVyIGZsYWdzIGluIEluY2x1ZGUvY29kZS5oCiAjIFdlIHRyeSB0byBnZXQgdGhlbSBmcm9tIGRpcyB0byBhdm9pZCBkdXBsaWNhdGlvbiwgYnV0IGZhbGwKQEAgLTQzMyw2ICs0MzgsOCBAQAogCiBkZWYgZ2V0bW9kdWxlaW5mbyhwYXRoKToKICAgICAiIiJHZXQgdGhlIG1vZHVsZSBuYW1lLCBzdWZmaXgsIG1vZGUsIGFuZCBtb2R1bGUgdHlwZSBmb3IgYSBnaXZlbiBmaWxlLiIiIgorICAgIHdhcm5pbmdzLndhcm4oJ2luc3BlY3QuZ2V0bW9kdWxlaW5mbygpIGlzIGRlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAyKQogICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQogICAgIHN1ZmZpeGVzID0gWygtbGVuKHN1ZmZpeCksIHN1ZmZpeCwgbW9kZSwgbXR5cGUpCiAgICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIG1vZGUsIG10eXBlIGluIGltcC5nZXRfc3VmZml4ZXMoKV0KQEAgLTQ0MywyMCArNDUwLDI5IEBACiAKIGRlZiBnZXRtb2R1bGVuYW1lKHBhdGgpOgogICAgICIiIlJldHVybiB0aGUgbW9kdWxlIG5hbWUgZm9yIGEgZ2l2ZW4gZmlsZSwgb3IgTm9uZS4iIiIKLSAgICBpbmZvID0gZ2V0bW9kdWxlaW5mbyhwYXRoKQotICAgIGlmIGluZm86IHJldHVybiBpbmZvWzBdCisgICAgZm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCisgICAgIyBDaGVjayBmb3IgcGF0aHMgdGhhdCBsb29rIGxpa2UgYW4gYWN0dWFsIG1vZHVsZSBmaWxlCisgICAgc3VmZml4ZXMgPSBbKC1sZW4oc3VmZml4KSwgc3VmZml4KQorICAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzKCldCisgICAgc3VmZml4ZXMuc29ydCgpICMgdHJ5IGxvbmdlc3Qgc3VmZml4ZXMgZmlyc3QsIGluIGNhc2UgdGhleSBvdmVybGFwCisgICAgZm9yIG5lZ2xlbiwgc3VmZml4IGluIHN1ZmZpeGVzOgorICAgICAgICBpZiBmbmFtZS5lbmRzd2l0aChzdWZmaXgpOgorICAgICAgICAgICAgcmV0dXJuIGZuYW1lWzpuZWdsZW5dCisgICAgcmV0dXJuIE5vbmUKIAogZGVmIGdldHNvdXJjZWZpbGUob2JqZWN0KToKICAgICAiIiJSZXR1cm4gdGhlIGZpbGVuYW1lIHRoYXQgY2FuIGJlIHVzZWQgdG8gbG9jYXRlIGFuIG9iamVjdCdzIHNvdXJjZS4KICAgICBSZXR1cm4gTm9uZSBpZiBubyB3YXkgY2FuIGJlIGlkZW50aWZpZWQgdG8gZ2V0IHRoZSBzb3VyY2UuCiAgICAgIiIiCiAgICAgZmlsZW5hbWUgPSBnZXRmaWxlKG9iamVjdCkKLSAgICBpZiBmaWxlbmFtZVstNDpdLmxvd2VyKCkgaW4gKCcucHljJywgJy5weW8nKToKLSAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTRdICsgJy5weScKLSAgICBmb3Igc3VmZml4LCBtb2RlLCBraW5kIGluIGltcC5nZXRfc3VmZml4ZXMoKToKLSAgICAgICAgaWYgJ2InIGluIG1vZGUgYW5kIGZpbGVuYW1lWy1sZW4oc3VmZml4KTpdLmxvd2VyKCkgPT0gc3VmZml4OgotICAgICAgICAgICAgIyBMb29rcyBsaWtlIGEgYmluYXJ5IGZpbGUuICBXZSB3YW50IHRvIG9ubHkgcmV0dXJuIGEgdGV4dCBmaWxlLgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBhbGxfYnl0ZWNvZGVfc3VmZml4ZXMgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkRFQlVHX0JZVEVDT0RFX1NVRkZJWEVTWzpdCisgICAgYWxsX2J5dGVjb2RlX3N1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTWzpdCisgICAgaWYgYW55KGZpbGVuYW1lLmVuZHN3aXRoKHMpIGZvciBzIGluIGFsbF9ieXRlY29kZV9zdWZmaXhlcyk6CisgICAgICAgIGZpbGVuYW1lID0gKG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbMF0pCisgICAgZWxpZiBhbnkoZmlsZW5hbWUuZW5kc3dpdGgocykgZm9yIHMgaW4KKyAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpOgorICAgICAgICByZXR1cm4gTm9uZQogICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAgICAgIyBvbmx5IHJldHVybiBhIG5vbi1leGlzdGVudCBmaWxlbmFtZSBpZiB0aGUgbW9kdWxlIGhhcyBhIFBFUCAzMDIgbG9hZGVyCkBAIC05MzEsNiArOTQ3LDQzIEBACiAgICAgICAgIHNwZWNzLmFwcGVuZChmb3JtYXR2YXJrdyh2YXJrdykgKyBmb3JtYXR2YWx1ZShsb2NhbHNbdmFya3ddKSkKICAgICByZXR1cm4gJygnICsgJywgJy5qb2luKHNwZWNzKSArICcpJwogCitkZWYgX21pc3NpbmdfYXJndW1lbnRzKGZfbmFtZSwgYXJnbmFtZXMsIHBvcywgdmFsdWVzKToKKyAgICBuYW1lcyA9IFtyZXByKG5hbWUpIGZvciBuYW1lIGluIGFyZ25hbWVzIGlmIG5hbWUgbm90IGluIHZhbHVlc10KKyAgICBtaXNzaW5nID0gbGVuKG5hbWVzKQorICAgIGlmIG1pc3NpbmcgPT0gMToKKyAgICAgICAgcyA9IG5hbWVzWzBdCisgICAgZWxpZiBtaXNzaW5nID09IDI6CisgICAgICAgIHMgPSAie30gYW5kIHt9Ii5mb3JtYXQoKm5hbWVzKQorICAgIGVsc2U6CisgICAgICAgIHRhaWwgPSAiLCB7fSBhbmQge30iLmZvcm1hdChuYW1lc1stMjpdKQorICAgICAgICBkZWwgbmFtZXNbLTI6XQorICAgICAgICBzID0gIiwgIi5qb2luKG5hbWVzKSArIHRhaWwKKyAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgbWlzc2luZyAlaSByZXF1aXJlZCAlcyBhcmd1bWVudCVzOiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBtaXNzaW5nLAorICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIiBpZiBwb3MgZWxzZSAia2V5d29yZC1vbmx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAiIiBpZiBtaXNzaW5nID09IDEgZWxzZSAicyIsIHMpKQorCitkZWYgX3Rvb19tYW55KGZfbmFtZSwgYXJncywga3dvbmx5LCB2YXJhcmdzLCBkZWZjb3VudCwgZ2l2ZW4sIHZhbHVlcyk6CisgICAgYXRsZWFzdCA9IGxlbihhcmdzKSAtIGRlZmNvdW50CisgICAga3dvbmx5X2dpdmVuID0gbGVuKFthcmcgZm9yIGFyZyBpbiBrd29ubHkgaWYgYXJnIGluIHZhbHVlc10pCisgICAgaWYgdmFyYXJnczoKKyAgICAgICAgcGx1cmFsID0gYXRsZWFzdCAhPSAxCisgICAgICAgIHNpZyA9ICJhdCBsZWFzdCAlZCIgJSAoYXRsZWFzdCwpCisgICAgZWxpZiBkZWZjb3VudDoKKyAgICAgICAgcGx1cmFsID0gVHJ1ZQorICAgICAgICBzaWcgPSAiZnJvbSAlZCB0byAlZCIgJSAoYXRsZWFzdCwgbGVuKGFyZ3MpKQorICAgIGVsc2U6CisgICAgICAgIHBsdXJhbCA9IGxlbihhcmdzKSAhPSAxCisgICAgICAgIHNpZyA9IHN0cihsZW4oYXJncykpCisgICAga3dvbmx5X3NpZyA9ICIiCisgICAgaWYga3dvbmx5X2dpdmVuOgorICAgICAgICBtc2cgPSAiIHBvc2l0aW9uYWwgYXJndW1lbnQlcyAoYW5kICVkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKSIKKyAgICAgICAga3dvbmx5X3NpZyA9IChtc2cgJSAoInMiIGlmIGdpdmVuICE9IDEgZWxzZSAiIiwga3dvbmx5X2dpdmVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgaWYga3dvbmx5X2dpdmVuICE9IDEgZWxzZSAiIikpCisgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIHRha2VzICVzIHBvc2l0aW9uYWwgYXJndW1lbnQlcyBidXQgJWQlcyAlcyBnaXZlbiIgJQorICAgICAgICAgICAgKGZfbmFtZSwgc2lnLCAicyIgaWYgcGx1cmFsIGVsc2UgIiIsIGdpdmVuLCBrd29ubHlfc2lnLAorICAgICAgICAgICAgICJ3YXMiIGlmIGdpdmVuID09IDEgYW5kIG5vdCBrd29ubHlfZ2l2ZW4gZWxzZSAid2VyZSIpKQorCiBkZWYgZ2V0Y2FsbGFyZ3MoZnVuYywgKnBvc2l0aW9uYWwsICoqbmFtZWQpOgogICAgICIiIkdldCB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMgdG8gdmFsdWVzLgogCkBAIC05NDIsNjYgKzk5NSwxMDggQEAKICAgICBmX25hbWUgPSBmdW5jLl9fbmFtZV9fCiAgICAgYXJnMnZhbHVlID0ge30KIAorCiAgICAgaWYgaXNtZXRob2QoZnVuYykgYW5kIGZ1bmMuX19zZWxmX18gaXMgbm90IE5vbmU6CiAgICAgICAgICMgaW1wbGljaXQgJ3NlbGYnIChvciAnY2xzJyBmb3IgY2xhc3NtZXRob2RzKSBhcmd1bWVudAogICAgICAgICBwb3NpdGlvbmFsID0gKGZ1bmMuX19zZWxmX18sKSArIHBvc2l0aW9uYWwKICAgICBudW1fcG9zID0gbGVuKHBvc2l0aW9uYWwpCi0gICAgbnVtX3RvdGFsID0gbnVtX3BvcyArIGxlbihuYW1lZCkKICAgICBudW1fYXJncyA9IGxlbihhcmdzKQogICAgIG51bV9kZWZhdWx0cyA9IGxlbihkZWZhdWx0cykgaWYgZGVmYXVsdHMgZWxzZSAwCi0gICAgZm9yIGFyZywgdmFsdWUgaW4gemlwKGFyZ3MsIHBvc2l0aW9uYWwpOgotICAgICAgICBhcmcydmFsdWVbYXJnXSA9IHZhbHVlCi0gICAgaWYgdmFyYXJnczoKLSAgICAgICAgaWYgbnVtX3BvcyA+IG51bV9hcmdzOgotICAgICAgICAgICAgYXJnMnZhbHVlW3ZhcmFyZ3NdID0gcG9zaXRpb25hbFstKG51bV9wb3MtbnVtX2FyZ3MpOl0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFyZzJ2YWx1ZVt2YXJhcmdzXSA9ICgpCi0gICAgZWxpZiAwIDwgbnVtX2FyZ3MgPCBudW1fcG9zOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgJXMgJWQgcG9zaXRpb25hbCAlcyAoJWQgZ2l2ZW4pJyAlICgKLSAgICAgICAgICAgIGZfbmFtZSwgJ2F0IG1vc3QnIGlmIGRlZmF1bHRzIGVsc2UgJ2V4YWN0bHknLCBudW1fYXJncywKLSAgICAgICAgICAgICdhcmd1bWVudHMnIGlmIG51bV9hcmdzID4gMSBlbHNlICdhcmd1bWVudCcsIG51bV90b3RhbCkpCi0gICAgZWxpZiBudW1fYXJncyA9PSAwIGFuZCBudW1fdG90YWw6Ci0gICAgICAgIGlmIHZhcmt3IG9yIGt3b25seWFyZ3M6Ci0gICAgICAgICAgICBpZiBudW1fcG9zOgotICAgICAgICAgICAgICAgICMgWFhYOiBXZSBzaG91bGQgdXNlIG51bV9wb3MsIGJ1dCBQeXRob24gYWxzbyB1c2VzIG51bV90b3RhbDoKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgZXhhY3RseSAwIHBvc2l0aW9uYWwgYXJndW1lbnRzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyglZCBnaXZlbiknICUgKGZfbmFtZSwgbnVtX3RvdGFsKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCVkIGdpdmVuKScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmX25hbWUsIG51bV90b3RhbCkpCiAKLSAgICBmb3IgYXJnIGluIGl0ZXJ0b29scy5jaGFpbihhcmdzLCBrd29ubHlhcmdzKToKLSAgICAgICAgaWYgYXJnIGluIG5hbWVkOgotICAgICAgICAgICAgaWYgYXJnIGluIGFyZzJ2YWx1ZToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAnJXMnIiAlIChmX25hbWUsIGFyZykpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gbmFtZWQucG9wKGFyZykKLSAgICBmb3Iga3dvbmx5YXJnIGluIGt3b25seWFyZ3M6Ci0gICAgICAgIGlmIGt3b25seWFyZyBub3QgaW4gYXJnMnZhbHVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVtrd29ubHlhcmddID0ga3dvbmx5ZGVmYXVsdHNba3dvbmx5YXJnXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMoKSBuZWVkcyBrZXl3b3JkLW9ubHkgYXJndW1lbnQgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwga3dvbmx5YXJnKSkKLSAgICBpZiBkZWZhdWx0czogICAgIyBmaWxsIGluIGFueSBtaXNzaW5nIHZhbHVlcyB3aXRoIHRoZSBkZWZhdWx0cwotICAgICAgICBmb3IgYXJnLCB2YWx1ZSBpbiB6aXAoYXJnc1stbnVtX2RlZmF1bHRzOl0sIGRlZmF1bHRzKToKLSAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gYXJnMnZhbHVlOgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gdmFsdWUKKyAgICBuID0gbWluKG51bV9wb3MsIG51bV9hcmdzKQorICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICBhcmcydmFsdWVbYXJnc1tpXV0gPSBwb3NpdGlvbmFsW2ldCisgICAgaWYgdmFyYXJnczoKKyAgICAgICAgYXJnMnZhbHVlW3ZhcmFyZ3NdID0gdHVwbGUocG9zaXRpb25hbFtuOl0pCisgICAgcG9zc2libGVfa3dhcmdzID0gc2V0KGFyZ3MgKyBrd29ubHlhcmdzKQogICAgIGlmIHZhcmt3OgotICAgICAgICBhcmcydmFsdWVbdmFya3ddID0gbmFtZWQKLSAgICBlbGlmIG5hbWVkOgotICAgICAgICB1bmV4cGVjdGVkID0gbmV4dChpdGVyKG5hbWVkKSkKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJyVzJyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwgdW5leHBlY3RlZCkpCi0gICAgdW5hc3NpZ25lZCA9IG51bV9hcmdzIC0gbGVuKFthcmcgZm9yIGFyZyBpbiBhcmdzIGlmIGFyZyBpbiBhcmcydmFsdWVdKQotICAgIGlmIHVuYXNzaWduZWQ6Ci0gICAgICAgIG51bV9yZXF1aXJlZCA9IG51bV9hcmdzIC0gbnVtX2RlZmF1bHRzCi0gICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSB0YWtlcyAlcyAlZCAlcyAoJWQgZ2l2ZW4pJyAlICgKLSAgICAgICAgICAgIGZfbmFtZSwgJ2F0IGxlYXN0JyBpZiBkZWZhdWx0cyBlbHNlICdleGFjdGx5JywgbnVtX3JlcXVpcmVkLAotICAgICAgICAgICAgJ2FyZ3VtZW50cycgaWYgbnVtX3JlcXVpcmVkID4gMSBlbHNlICdhcmd1bWVudCcsIG51bV90b3RhbCkpCisgICAgICAgIGFyZzJ2YWx1ZVt2YXJrd10gPSB7fQorICAgIGZvciBrdywgdmFsdWUgaW4gbmFtZWQuaXRlbXMoKToKKyAgICAgICAgaWYga3cgbm90IGluIHBvc3NpYmxlX2t3YXJnczoKKyAgICAgICAgICAgIGlmIG5vdCB2YXJrdzoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBrdykpCisgICAgICAgICAgICBhcmcydmFsdWVbdmFya3ddW2t3XSA9IHZhbHVlCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBrdyBpbiBhcmcydmFsdWU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBrdykpCisgICAgICAgIGFyZzJ2YWx1ZVtrd10gPSB2YWx1ZQorICAgIGlmIG51bV9wb3MgPiBudW1fYXJncyBhbmQgbm90IHZhcmFyZ3M6CisgICAgICAgIF90b29fbWFueShmX25hbWUsIGFyZ3MsIGt3b25seWFyZ3MsIHZhcmFyZ3MsIG51bV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICBudW1fcG9zLCBhcmcydmFsdWUpCisgICAgaWYgbnVtX3BvcyA8IG51bV9hcmdzOgorICAgICAgICByZXEgPSBhcmdzWzpudW1fYXJncyAtIG51bV9kZWZhdWx0c10KKyAgICAgICAgZm9yIGFyZyBpbiByZXE6CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGFyZzJ2YWx1ZToKKyAgICAgICAgICAgICAgICBfbWlzc2luZ19hcmd1bWVudHMoZl9uYW1lLCByZXEsIFRydWUsIGFyZzJ2YWx1ZSkKKyAgICAgICAgZm9yIGksIGFyZyBpbiBlbnVtZXJhdGUoYXJnc1tudW1fYXJncyAtIG51bV9kZWZhdWx0czpdKToKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gYXJnMnZhbHVlOgorICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gZGVmYXVsdHNbaV0KKyAgICBtaXNzaW5nID0gMAorICAgIGZvciBrd2FyZyBpbiBrd29ubHlhcmdzOgorICAgICAgICBpZiBrd2FyZyBub3QgaW4gYXJnMnZhbHVlOgorICAgICAgICAgICAgaWYga3dhcmcgaW4ga3dvbmx5ZGVmYXVsdHM6CisgICAgICAgICAgICAgICAgYXJnMnZhbHVlW2t3YXJnXSA9IGt3b25seWRlZmF1bHRzW2t3YXJnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtaXNzaW5nICs9IDEKKyAgICBpZiBtaXNzaW5nOgorICAgICAgICBfbWlzc2luZ19hcmd1bWVudHMoZl9uYW1lLCBrd29ubHlhcmdzLCBGYWxzZSwgYXJnMnZhbHVlKQogICAgIHJldHVybiBhcmcydmFsdWUKIAorQ2xvc3VyZVZhcnMgPSBuYW1lZHR1cGxlKCdDbG9zdXJlVmFycycsICdub25sb2NhbHMgZ2xvYmFscyBidWlsdGlucyB1bmJvdW5kJykKKworZGVmIGdldGNsb3N1cmV2YXJzKGZ1bmMpOgorICAgICIiIgorICAgIEdldCB0aGUgbWFwcGluZyBvZiBmcmVlIHZhcmlhYmxlcyB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4KKworICAgIFJldHVybnMgYSBuYW1lZCB0dXBsZSBvZiBkaWN0cyBtYXBwaW5nIHRoZSBjdXJyZW50IG5vbmxvY2FsLCBnbG9iYWwKKyAgICBhbmQgYnVpbHRpbiByZWZlcmVuY2VzIGFzIHNlZW4gYnkgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLiBBIGZpbmFsCisgICAgc2V0IG9mIHVuYm91bmQgbmFtZXMgdGhhdCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgaXMgYWxzbyBwcm92aWRlZC4KKyAgICAiIiIKKworICAgIGlmIGlzbWV0aG9kKGZ1bmMpOgorICAgICAgICBmdW5jID0gZnVuYy5fX2Z1bmNfXworCisgICAgaWYgbm90IGlzZnVuY3Rpb24oZnVuYyk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJ3shcn0nIGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbiIuZm9ybWF0KGZ1bmMpKQorCisgICAgY29kZSA9IGZ1bmMuX19jb2RlX18KKyAgICAjIE5vbmxvY2FsIHJlZmVyZW5jZXMgYXJlIG5hbWVkIGluIGNvX2ZyZWV2YXJzIGFuZCByZXNvbHZlZAorICAgICMgYnkgbG9va2luZyB0aGVtIHVwIGluIF9fY2xvc3VyZV9fIGJ5IHBvc2l0aW9uYWwgaW5kZXgKKyAgICBpZiBmdW5jLl9fY2xvc3VyZV9fIGlzIE5vbmU6CisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7fQorICAgIGVsc2U6CisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7CisgICAgICAgICAgICB2YXIgOiBjZWxsLmNlbGxfY29udGVudHMKKyAgICAgICAgICAgIGZvciB2YXIsIGNlbGwgaW4gemlwKGNvZGUuY29fZnJlZXZhcnMsIGZ1bmMuX19jbG9zdXJlX18pCisgICAgICAgfQorCisgICAgIyBHbG9iYWwgYW5kIGJ1aWx0aW4gcmVmZXJlbmNlcyBhcmUgbmFtZWQgaW4gY29fbmFtZXMgYW5kIHJlc29sdmVkCisgICAgIyBieSBsb29raW5nIHRoZW0gdXAgaW4gX19nbG9iYWxzX18gb3IgX19idWlsdGluc19fCisgICAgZ2xvYmFsX25zID0gZnVuYy5fX2dsb2JhbHNfXworICAgIGJ1aWx0aW5fbnMgPSBnbG9iYWxfbnMuZ2V0KCJfX2J1aWx0aW5zX18iLCBidWlsdGlucy5fX2RpY3RfXykKKyAgICBpZiBpc21vZHVsZShidWlsdGluX25zKToKKyAgICAgICAgYnVpbHRpbl9ucyA9IGJ1aWx0aW5fbnMuX19kaWN0X18KKyAgICBnbG9iYWxfdmFycyA9IHt9CisgICAgYnVpbHRpbl92YXJzID0ge30KKyAgICB1bmJvdW5kX25hbWVzID0gc2V0KCkKKyAgICBmb3IgbmFtZSBpbiBjb2RlLmNvX25hbWVzOgorICAgICAgICBpZiBuYW1lIGluICgiTm9uZSIsICJUcnVlIiwgIkZhbHNlIik6CisgICAgICAgICAgICAjIEJlY2F1c2UgdGhlc2UgdXNlZCB0byBiZSBidWlsdGlucyBpbnN0ZWFkIG9mIGtleXdvcmRzLCB0aGV5CisgICAgICAgICAgICAjIG1heSBzdGlsbCBzaG93IHVwIGFzIG5hbWUgcmVmZXJlbmNlcy4gV2UgaWdub3JlIHRoZW0uCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnbG9iYWxfdmFyc1tuYW1lXSA9IGdsb2JhbF9uc1tuYW1lXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYnVpbHRpbl92YXJzW25hbWVdID0gYnVpbHRpbl9uc1tuYW1lXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHVuYm91bmRfbmFtZXMuYWRkKG5hbWUpCisKKyAgICByZXR1cm4gQ2xvc3VyZVZhcnMobm9ubG9jYWxfdmFycywgZ2xvYmFsX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGFjayBmcmFtZSBleHRyYWN0aW9uCiAKIFRyYWNlYmFjayA9IG5hbWVkdHVwbGUoJ1RyYWNlYmFjaycsICdmaWxlbmFtZSBsaW5lbm8gZnVuY3Rpb24gY29kZV9jb250ZXh0IGluZGV4JykKQEAgLTExNzEsNiArMTI2Niw4IEBACiAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoYXR0cikKIAogCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBnZW5lcmF0b3IgaW50cm9zcGVjdGlvbgorCiBHRU5fQ1JFQVRFRCA9ICdHRU5fQ1JFQVRFRCcKIEdFTl9SVU5OSU5HID0gJ0dFTl9SVU5OSU5HJwogR0VOX1NVU1BFTkRFRCA9ICdHRU5fU1VTUEVOREVEJwpAQCAtMTE5MiwzICsxMjg5LDc4NSBAQAogICAgIGlmIGdlbmVyYXRvci5naV9mcmFtZS5mX2xhc3RpID09IC0xOgogICAgICAgICByZXR1cm4gR0VOX0NSRUFURUQKICAgICByZXR1cm4gR0VOX1NVU1BFTkRFRAorCisKK2RlZiBnZXRnZW5lcmF0b3Jsb2NhbHMoZ2VuZXJhdG9yKToKKyAgICAiIiIKKyAgICBHZXQgdGhlIG1hcHBpbmcgb2YgZ2VuZXJhdG9yIGxvY2FsIHZhcmlhYmxlcyB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4KKworICAgIEEgZGljdCBpcyByZXR1cm5lZCwgd2l0aCB0aGUga2V5cyB0aGUgbG9jYWwgdmFyaWFibGUgbmFtZXMgYW5kIHZhbHVlcyB0aGUKKyAgICBib3VuZCB2YWx1ZXMuIiIiCisKKyAgICBpZiBub3QgaXNnZW5lcmF0b3IoZ2VuZXJhdG9yKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIneyFyfScgaXMgbm90IGEgUHl0aG9uIGdlbmVyYXRvciIuZm9ybWF0KGdlbmVyYXRvcikpCisKKyAgICBmcmFtZSA9IGdldGF0dHIoZ2VuZXJhdG9yLCAiZ2lfZnJhbWUiLCBOb25lKQorICAgIGlmIGZyYW1lIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmdpX2ZyYW1lLmZfbG9jYWxzCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHt9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyBGdW5jdGlvbiBTaWduYXR1cmUgT2JqZWN0IChQRVAgMzYyKQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKK19XcmFwcGVyRGVzY3JpcHRvciA9IHR5cGUodHlwZS5fX2NhbGxfXykKK19NZXRob2RXcmFwcGVyID0gdHlwZShhbGwuX19jYWxsX18pCisKK19Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyA9IChfV3JhcHBlckRlc2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01ldGhvZFdyYXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSkKKworCitkZWYgX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKGNscywgbWV0aG9kX25hbWUpOgorICAgIHRyeToKKyAgICAgICAgbWV0aCA9IGdldGF0dHIoY2xzLCBtZXRob2RfbmFtZSkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIHJldHVybgorICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1ldGgsIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyk6CisgICAgICAgICAgICAjIE9uY2UgJ19fc2lnbmF0dXJlX18nIHdpbGwgYmUgYWRkZWQgdG8gJ0MnLWxldmVsCisgICAgICAgICAgICAjIGNhbGxhYmxlcywgdGhpcyBjaGVjayB3b24ndCBiZSBuZWNlc3NhcnkKKyAgICAgICAgICAgIHJldHVybiBtZXRoCisKKworZGVmIHNpZ25hdHVyZShvYmopOgorICAgICcnJ0dldCBhIHNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBwYXNzZWQgY2FsbGFibGUuJycnCisKKyAgICBpZiBub3QgY2FsbGFibGUob2JqKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCcuZm9ybWF0KG9iaikpCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTWV0aG9kVHlwZSk6CisgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIHNraXAgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUgdW5kZXJseWluZworICAgICAgICAjIGZ1bmN0aW9uICh1c3VhbGx5IGBzZWxmYCBvciBgY2xzYCkuCisgICAgICAgIHNpZyA9IHNpZ25hdHVyZShvYmouX19mdW5jX18pCisgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPXR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKVsxOl0pCisKKyAgICB0cnk6CisgICAgICAgIHNpZyA9IG9iai5fX3NpZ25hdHVyZV9fCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgaWYgc2lnIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNpZworCisgICAgdHJ5OgorICAgICAgICAjIFdhcyB0aGlzIGZ1bmN0aW9uIHdyYXBwZWQgYnkgYSBkZWNvcmF0b3I/CisgICAgICAgIHdyYXBwZWQgPSBvYmouX193cmFwcGVkX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gc2lnbmF0dXJlKHdyYXBwZWQpCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuRnVuY3Rpb25UeXBlKToKKyAgICAgICAgcmV0dXJuIFNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKG9iaikKKworICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBmdW5jdG9vbHMucGFydGlhbCk6CisgICAgICAgIHNpZyA9IHNpZ25hdHVyZShvYmouZnVuYykKKworICAgICAgICBuZXdfcGFyYW1zID0gT3JkZXJlZERpY3Qoc2lnLnBhcmFtZXRlcnMuaXRlbXMoKSkKKworICAgICAgICBwYXJ0aWFsX2FyZ3MgPSBvYmouYXJncyBvciAoKQorICAgICAgICBwYXJ0aWFsX2tleXdvcmRzID0gb2JqLmtleXdvcmRzIG9yIHt9CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJhID0gc2lnLmJpbmRfcGFydGlhbCgqcGFydGlhbF9hcmdzLCAqKnBhcnRpYWxfa2V5d29yZHMpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZXg6CisgICAgICAgICAgICBtc2cgPSAncGFydGlhbCBvYmplY3QgeyFyfSBoYXMgaW5jb3JyZWN0IGFyZ3VtZW50cycuZm9ybWF0KG9iaikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKSBmcm9tIGV4CisKKyAgICAgICAgZm9yIGFyZ19uYW1lLCBhcmdfdmFsdWUgaW4gYmEuYXJndW1lbnRzLml0ZW1zKCk6CisgICAgICAgICAgICBwYXJhbSA9IG5ld19wYXJhbXNbYXJnX25hbWVdCisgICAgICAgICAgICBpZiBhcmdfbmFtZSBpbiBwYXJ0aWFsX2tleXdvcmRzOgorICAgICAgICAgICAgICAgICMgV2Ugc2V0IGEgbmV3IGRlZmF1bHQgdmFsdWUsIGJlY2F1c2UgdGhlIGZvbGxvd2luZyBjb2RlCisgICAgICAgICAgICAgICAgIyBpcyBjb3JyZWN0OgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgPj4+IGRlZiBmb28oYSk6IHByaW50KGEpCisgICAgICAgICAgICAgICAgIyAgID4+PiBwcmludChwYXJ0aWFsKHBhcnRpYWwoZm9vLCBhPTEwKSwgYT0yMCkoKSkKKyAgICAgICAgICAgICAgICAjICAgMjAKKyAgICAgICAgICAgICAgICAjICAgPj4+IHByaW50KHBhcnRpYWwocGFydGlhbChmb28sIGE9MTApLCBhPTIwKShhPTMwKSkKKyAgICAgICAgICAgICAgICAjICAgMzAKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBTbywgd2l0aCAncGFydGlhbCcgb2JqZWN0cywgcGFzc2luZyBhIGtleXdvcmQgYXJndW1lbnQgaXMKKyAgICAgICAgICAgICAgICAjIGxpa2Ugc2V0dGluZyBhIG5ldyBkZWZhdWx0IHZhbHVlIGZvciB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgV2UgYWxzbyBtYXJrIHRoaXMgcGFyYW1ldGVyIHdpdGggJ19wYXJ0aWFsX2t3YXJnJworICAgICAgICAgICAgICAgICMgZmxhZy4gIExhdGVyLCBpbiAnX2JpbmQnLCB0aGUgJ2RlZmF1bHQnIHZhbHVlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAjIHBhcmFtZXRlciB3aWxsIGJlIGFkZGVkIHRvICdrd2FyZ3MnLCB0byBzaW11bGF0ZQorICAgICAgICAgICAgICAgICMgdGhlICdmdW5jdG9vbHMucGFydGlhbCcgcmVhbCBjYWxsLgorICAgICAgICAgICAgICAgIG5ld19wYXJhbXNbYXJnX25hbWVdID0gcGFyYW0ucmVwbGFjZShkZWZhdWx0PWFyZ192YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnRpYWxfa3dhcmc9VHJ1ZSkKKworICAgICAgICAgICAgZWxpZiAocGFyYW0ua2luZCBub3QgaW4gKF9WQVJfS0VZV09SRCwgX1ZBUl9QT1NJVElPTkFMKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgcGFyYW0uX3BhcnRpYWxfa3dhcmcpOgorICAgICAgICAgICAgICAgIG5ld19wYXJhbXMucG9wKGFyZ19uYW1lKQorCisgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMudmFsdWVzKCkpCisKKyAgICBzaWcgPSBOb25lCisgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpOgorICAgICAgICAjIG9iaiBpcyBhIGNsYXNzIG9yIGEgbWV0YWNsYXNzCisKKyAgICAgICAgIyBGaXJzdCwgbGV0J3Mgc2VlIGlmIGl0IGhhcyBhbiBvdmVybG9hZGVkIF9fY2FsbF9fIGRlZmluZWQKKyAgICAgICAgIyBpbiBpdHMgbWV0YWNsYXNzCisgICAgICAgIGNhbGwgPSBfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQorICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2lnID0gc2lnbmF0dXJlKGNhbGwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE5vdyB3ZSBjaGVjayBpZiB0aGUgJ29iaicgY2xhc3MgaGFzIGEgJ19fbmV3X18nIG1ldGhvZAorICAgICAgICAgICAgbmV3ID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKG9iaiwgJ19fbmV3X18nKQorICAgICAgICAgICAgaWYgbmV3IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNpZyA9IHNpZ25hdHVyZShuZXcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgRmluYWxseSwgd2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgX19pbml0X18gaW1wbGVtZW50ZWQKKyAgICAgICAgICAgICAgICBpbml0ID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKG9iaiwgJ19faW5pdF9fJykKKyAgICAgICAgICAgICAgICBpZiBpbml0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzaWcgPSBzaWduYXR1cmUoaW5pdCkKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG9iaiwgX05vblVzZXJEZWZpbmVkQ2FsbGFibGVzKToKKyAgICAgICAgIyBBbiBvYmplY3Qgd2l0aCBfX2NhbGxfXworICAgICAgICAjIFdlIGFsc28gY2hlY2sgdGhhdCB0aGUgJ29iaicgaXMgbm90IGFuIGluc3RhbmNlIG9mCisgICAgICAgICMgX1dyYXBwZXJEZXNjcmlwdG9yIG9yIF9NZXRob2RXcmFwcGVyIHRvIGF2b2lkCisgICAgICAgICMgaW5maW5pdGUgcmVjdXJzaW9uIChhbmQgZXZlbiBwb3RlbnRpYWwgc2VnZmF1bHQpCisgICAgICAgIGNhbGwgPSBfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQorICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2lnID0gc2lnbmF0dXJlKGNhbGwpCisKKyAgICBpZiBzaWcgaXMgbm90IE5vbmU6CisgICAgICAgICMgRm9yIGNsYXNzZXMgYW5kIG9iamVjdHMgd2Ugc2tpcCB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIHRoZWlyCisgICAgICAgICMgX19jYWxsX18sIF9fbmV3X18sIG9yIF9faW5pdF9fIG1ldGhvZHMKKyAgICAgICAgcmV0dXJuIHNpZy5yZXBsYWNlKHBhcmFtZXRlcnM9dHVwbGUoc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpWzE6XSkKKworICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlKToKKyAgICAgICAgIyBSYWlzZSBhIG5pY2VyIGVycm9yIG1lc3NhZ2UgZm9yIGJ1aWx0aW5zCisgICAgICAgIG1zZyA9ICdubyBzaWduYXR1cmUgZm91bmQgZm9yIGJ1aWx0aW4gZnVuY3Rpb24geyFyfScuZm9ybWF0KG9iaikKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisKKyAgICByYWlzZSBWYWx1ZUVycm9yKCdjYWxsYWJsZSB7IXJ9IGlzIG5vdCBzdXBwb3J0ZWQgYnkgc2lnbmF0dXJlJy5mb3JtYXQob2JqKSkKKworCitjbGFzcyBfdm9pZDoKKyAgICAnJydBIHByaXZhdGUgbWFya2VyIC0gdXNlZCBpbiBQYXJhbWV0ZXIgJiBTaWduYXR1cmUnJycKKworCitjbGFzcyBfZW1wdHk6CisgICAgcGFzcworCisKK2NsYXNzIF9QYXJhbWV0ZXJLaW5kKGludCk6CisgICAgZGVmIF9fbmV3X18oc2VsZiwgKmFyZ3MsIG5hbWUpOgorICAgICAgICBvYmogPSBpbnQuX19uZXdfXyhzZWxmLCAqYXJncykKKyAgICAgICAgb2JqLl9uYW1lID0gbmFtZQorICAgICAgICByZXR1cm4gb2JqCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8X1BhcmFtZXRlcktpbmQ6IHshcn0+Jy5mb3JtYXQoc2VsZi5fbmFtZSkKKworCitfUE9TSVRJT05BTF9PTkxZICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDAsIG5hbWU9J1BPU0lUSU9OQUxfT05MWScpCitfUE9TSVRJT05BTF9PUl9LRVlXT1JEICA9IF9QYXJhbWV0ZXJLaW5kKDEsIG5hbWU9J1BPU0lUSU9OQUxfT1JfS0VZV09SRCcpCitfVkFSX1BPU0lUSU9OQUwgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDIsIG5hbWU9J1ZBUl9QT1NJVElPTkFMJykKK19LRVlXT1JEX09OTFkgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQoMywgbmFtZT0nS0VZV09SRF9PTkxZJykKK19WQVJfS0VZV09SRCAgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQoNCwgbmFtZT0nVkFSX0tFWVdPUkQnKQorCisKK2NsYXNzIFBhcmFtZXRlcjoKKyAgICAnJydSZXByZXNlbnRzIGEgcGFyYW1ldGVyIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlLgorCisgICAgSGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXM6CisKKyAgICAqIG5hbWUgOiBzdHIKKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4KKyAgICAqIGRlZmF1bHQgOiBvYmplY3QKKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgaWYgc3BlY2lmaWVkLiAgSWYgdGhlCisgICAgICAgIHBhcmFtZXRlciBoYXMgbm8gZGVmYXVsdCB2YWx1ZSwgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGFubm90YXRpb24KKyAgICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIgaWYgc3BlY2lmaWVkLiAgSWYgdGhlCisgICAgICAgIHBhcmFtZXRlciBoYXMgbm8gYW5ub3RhdGlvbiwgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGtpbmQgOiBzdHIKKyAgICAgICAgRGVzY3JpYmVzIGhvdyBhcmd1bWVudCB2YWx1ZXMgYXJlIGJvdW5kIHRvIHRoZSBwYXJhbWV0ZXIuCisgICAgICAgIFBvc3NpYmxlIHZhbHVlczogYFBhcmFtZXRlci5QT1NJVElPTkFMX09OTFlgLAorICAgICAgICBgUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRGAsIGBQYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUxgLAorICAgICAgICBgUGFyYW1ldGVyLktFWVdPUkRfT05MWWAsIGBQYXJhbWV0ZXIuVkFSX0tFWVdPUkRgLgorICAgICcnJworCisgICAgX19zbG90c19fID0gKCdfbmFtZScsICdfa2luZCcsICdfZGVmYXVsdCcsICdfYW5ub3RhdGlvbicsICdfcGFydGlhbF9rd2FyZycpCisKKyAgICBQT1NJVElPTkFMX09OTFkgICAgICAgICA9IF9QT1NJVElPTkFMX09OTFkKKyAgICBQT1NJVElPTkFMX09SX0tFWVdPUkQgICA9IF9QT1NJVElPTkFMX09SX0tFWVdPUkQKKyAgICBWQVJfUE9TSVRJT05BTCAgICAgICAgICA9IF9WQVJfUE9TSVRJT05BTAorICAgIEtFWVdPUkRfT05MWSAgICAgICAgICAgID0gX0tFWVdPUkRfT05MWQorICAgIFZBUl9LRVlXT1JEICAgICAgICAgICAgID0gX1ZBUl9LRVlXT1JECisKKyAgICBlbXB0eSA9IF9lbXB0eQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGtpbmQsICosIGRlZmF1bHQ9X2VtcHR5LCBhbm5vdGF0aW9uPV9lbXB0eSwKKyAgICAgICAgICAgICAgICAgX3BhcnRpYWxfa3dhcmc9RmFsc2UpOgorCisgICAgICAgIGlmIGtpbmQgbm90IGluIChfUE9TSVRJT05BTF9PTkxZLCBfUE9TSVRJT05BTF9PUl9LRVlXT1JELAorICAgICAgICAgICAgICAgICAgICAgICAgX1ZBUl9QT1NJVElPTkFMLCBfS0VZV09SRF9PTkxZLCBfVkFSX0tFWVdPUkQpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB2YWx1ZSBmb3IgJ1BhcmFtZXRlci5raW5kJyBhdHRyaWJ1dGUiKQorICAgICAgICBzZWxmLl9raW5kID0ga2luZAorCisgICAgICAgIGlmIGRlZmF1bHQgaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgIGlmIGtpbmQgaW4gKF9WQVJfUE9TSVRJT05BTCwgX1ZBUl9LRVlXT1JEKToKKyAgICAgICAgICAgICAgICBtc2cgPSAne30gcGFyYW1ldGVycyBjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlcycuZm9ybWF0KGtpbmQpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgICAgIHNlbGYuX2RlZmF1bHQgPSBkZWZhdWx0CisgICAgICAgIHNlbGYuX2Fubm90YXRpb24gPSBhbm5vdGF0aW9uCisKKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgaWYga2luZCAhPSBfUE9TSVRJT05BTF9PTkxZOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vbmUgaXMgbm90IGEgdmFsaWQgbmFtZSBmb3IgYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLXBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXIiKQorICAgICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5hbWUgPSBzdHIobmFtZSkKKyAgICAgICAgICAgIGlmIGtpbmQgIT0gX1BPU0lUSU9OQUxfT05MWSBhbmQgbm90IG5hbWUuaXNpZGVudGlmaWVyKCk6CisgICAgICAgICAgICAgICAgbXNnID0gJ3shcn0gaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnLmZvcm1hdChuYW1lKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKworICAgICAgICBzZWxmLl9wYXJ0aWFsX2t3YXJnID0gX3BhcnRpYWxfa3dhcmcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRlZmF1bHQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kZWZhdWx0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYW5ub3RhdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Fubm90YXRpb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBraW5kKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fa2luZAorCisgICAgZGVmIHJlcGxhY2Uoc2VsZiwgKiwgbmFtZT1fdm9pZCwga2luZD1fdm9pZCwgYW5ub3RhdGlvbj1fdm9pZCwKKyAgICAgICAgICAgICAgICBkZWZhdWx0PV92b2lkLCBfcGFydGlhbF9rd2FyZz1fdm9pZCk6CisgICAgICAgICcnJ0NyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFBhcmFtZXRlci4nJycKKworICAgICAgICBpZiBuYW1lIGlzIF92b2lkOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX25hbWUKKworICAgICAgICBpZiBraW5kIGlzIF92b2lkOgorICAgICAgICAgICAga2luZCA9IHNlbGYuX2tpbmQKKworICAgICAgICBpZiBhbm5vdGF0aW9uIGlzIF92b2lkOgorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IHNlbGYuX2Fubm90YXRpb24KKworICAgICAgICBpZiBkZWZhdWx0IGlzIF92b2lkOgorICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2RlZmF1bHQKKworICAgICAgICBpZiBfcGFydGlhbF9rd2FyZyBpcyBfdm9pZDoKKyAgICAgICAgICAgIF9wYXJ0aWFsX2t3YXJnID0gc2VsZi5fcGFydGlhbF9rd2FyZworCisgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKG5hbWUsIGtpbmQsIGRlZmF1bHQ9ZGVmYXVsdCwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFydGlhbF9rd2FyZz1fcGFydGlhbF9rd2FyZykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBraW5kID0gc2VsZi5raW5kCisKKyAgICAgICAgZm9ybWF0dGVkID0gc2VsZi5fbmFtZQorICAgICAgICBpZiBraW5kID09IF9QT1NJVElPTkFMX09OTFk6CisgICAgICAgICAgICBpZiBmb3JtYXR0ZWQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgPSAnJworICAgICAgICAgICAgZm9ybWF0dGVkID0gJzx7fT4nLmZvcm1hdChmb3JtYXR0ZWQpCisKKyAgICAgICAgIyBBZGQgYW5ub3RhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZQorICAgICAgICBpZiBzZWxmLl9hbm5vdGF0aW9uIGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSAne306e30nLmZvcm1hdChmb3JtYXR0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRhbm5vdGF0aW9uKHNlbGYuX2Fubm90YXRpb24pKQorCisgICAgICAgIGlmIHNlbGYuX2RlZmF1bHQgaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICd7fT17fScuZm9ybWF0KGZvcm1hdHRlZCwgcmVwcihzZWxmLl9kZWZhdWx0KSkKKworICAgICAgICBpZiBraW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICcqJyArIGZvcm1hdHRlZAorICAgICAgICBlbGlmIGtpbmQgPT0gX1ZBUl9LRVlXT1JEOgorICAgICAgICAgICAgZm9ybWF0dGVkID0gJyoqJyArIGZvcm1hdHRlZAorCisgICAgICAgIHJldHVybiBmb3JtYXR0ZWQKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8e30gYXQgezojeH0geyFyfT4nLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmKSwgc2VsZi5uYW1lKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoaXNzdWJjbGFzcyhvdGhlci5fX2NsYXNzX18sIFBhcmFtZXRlcikgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSA9PSBvdGhlci5fbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9raW5kID09IG90aGVyLl9raW5kIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX2RlZmF1bHQgPT0gb3RoZXIuX2RlZmF1bHQgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fYW5ub3RhdGlvbiA9PSBvdGhlci5fYW5ub3RhdGlvbikKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQorCisKK2NsYXNzIEJvdW5kQXJndW1lbnRzOgorICAgICcnJ1Jlc3VsdCBvZiBgU2lnbmF0dXJlLmJpbmRgIGNhbGwuICBIb2xkcyB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMKKyAgICB0byB0aGUgZnVuY3Rpb24ncyBwYXJhbWV0ZXJzLgorCisgICAgSGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXM6CisKKyAgICAqIGFyZ3VtZW50cyA6IE9yZGVyZWREaWN0CisgICAgICAgIEFuIG9yZGVyZWQgbXV0YWJsZSBtYXBwaW5nIG9mIHBhcmFtZXRlcnMnIG5hbWVzIHRvIGFyZ3VtZW50cycgdmFsdWVzLgorICAgICAgICBEb2VzIG5vdCBjb250YWluIGFyZ3VtZW50cycgZGVmYXVsdCB2YWx1ZXMuCisgICAgKiBzaWduYXR1cmUgOiBTaWduYXR1cmUKKyAgICAgICAgVGhlIFNpZ25hdHVyZSBvYmplY3QgdGhhdCBjcmVhdGVkIHRoaXMgaW5zdGFuY2UuCisgICAgKiBhcmdzIDogdHVwbGUKKyAgICAgICAgVHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdmFsdWVzLgorICAgICoga3dhcmdzIDogZGljdAorICAgICAgICBEaWN0IG9mIGtleXdvcmQgYXJndW1lbnRzIHZhbHVlcy4KKyAgICAnJycKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaWduYXR1cmUsIGFyZ3VtZW50cyk6CisgICAgICAgIHNlbGYuYXJndW1lbnRzID0gYXJndW1lbnRzCisgICAgICAgIHNlbGYuX3NpZ25hdHVyZSA9IHNpZ25hdHVyZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNpZ25hdHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NpZ25hdHVyZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW0gaW4gc2VsZi5fc2lnbmF0dXJlLnBhcmFtZXRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIChwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uX3BhcnRpYWxfa3dhcmcpOgorICAgICAgICAgICAgICAgICMgS2V5d29yZCBhcmd1bWVudHMgbWFwcGVkIGJ5ICdmdW5jdG9vbHMucGFydGlhbCcKKyAgICAgICAgICAgICAgICAjIChQYXJhbWV0ZXIuX3BhcnRpYWxfa3dhcmcgaXMgVHJ1ZSkgYXJlIG1hcHBlZAorICAgICAgICAgICAgICAgICMgaW4gJ0JvdW5kQXJndW1lbnRzLmt3YXJncycsIGFsb25nIHdpdGggVkFSX0tFWVdPUkQgJgorICAgICAgICAgICAgICAgICMgS0VZV09SRF9PTkxZCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZyA9IHNlbGYuYXJndW1lbnRzW3BhcmFtX25hbWVdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgIyBXZSdyZSBkb25lIGhlcmUuIE90aGVyIGFyZ3VtZW50cworICAgICAgICAgICAgICAgICMgd2lsbCBiZSBtYXBwZWQgaW4gJ0JvdW5kQXJndW1lbnRzLmt3YXJncycKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAgICAgIyAqYXJncworICAgICAgICAgICAgICAgICAgICBhcmdzLmV4dGVuZChhcmcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBwbGFpbiBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChhcmcpCisKKyAgICAgICAgcmV0dXJuIHR1cGxlKGFyZ3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYga3dhcmdzKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICBrd2FyZ3Nfc3RhcnRlZCA9IEZhbHNlCisgICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbSBpbiBzZWxmLl9zaWduYXR1cmUucGFyYW1ldGVycy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IGt3YXJnc19zdGFydGVkOgorICAgICAgICAgICAgICAgIGlmIChwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5fcGFydGlhbF9rd2FyZyk6CisgICAgICAgICAgICAgICAgICAgIGt3YXJnc19zdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgbm90IGluIHNlbGYuYXJndW1lbnRzOgorICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzX3N0YXJ0ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBub3Qga3dhcmdzX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZyA9IHNlbGYuYXJndW1lbnRzW3BhcmFtX25hbWVdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfS0VZV09SRDoKKyAgICAgICAgICAgICAgICAgICAgIyAqKmt3YXJncworICAgICAgICAgICAgICAgICAgICBrd2FyZ3MudXBkYXRlKGFyZykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIHBsYWluIGtleXdvcmQgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzW3BhcmFtX25hbWVdID0gYXJnCisKKyAgICAgICAgcmV0dXJuIGt3YXJncworCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoaXNzdWJjbGFzcyhvdGhlci5fX2NsYXNzX18sIEJvdW5kQXJndW1lbnRzKSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLnNpZ25hdHVyZSA9PSBvdGhlci5zaWduYXR1cmUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5hcmd1bWVudHMgPT0gb3RoZXIuYXJndW1lbnRzKQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKworY2xhc3MgU2lnbmF0dXJlOgorICAgICcnJ0EgU2lnbmF0dXJlIG9iamVjdCByZXByZXNlbnRzIHRoZSBvdmVyYWxsIHNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uLgorICAgIEl0IHN0b3JlcyBhIFBhcmFtZXRlciBvYmplY3QgZm9yIGVhY2ggcGFyYW1ldGVyIGFjY2VwdGVkIGJ5IHRoZQorICAgIGZ1bmN0aW9uLCBhcyB3ZWxsIGFzIGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuCisKKyAgICBBIFNpZ25hdHVyZSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHM6CisKKyAgICAqIHBhcmFtZXRlcnMgOiBPcmRlcmVkRGljdAorICAgICAgICBBbiBvcmRlcmVkIG1hcHBpbmcgb2YgcGFyYW1ldGVycycgbmFtZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgUGFyYW1ldGVyIG9iamVjdHMgKGtleXdvcmQtb25seSBhcmd1bWVudHMgYXJlIGluIHRoZSBzYW1lIG9yZGVyCisgICAgICAgIGFzIGxpc3RlZCBpbiBgY29kZS5jb192YXJuYW1lc2ApLgorICAgICogcmV0dXJuX2Fubm90YXRpb24gOiBvYmplY3QKKyAgICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gaWYgc3BlY2lmaWVkLgorICAgICAgICBJZiB0aGUgZnVuY3Rpb24gaGFzIG5vIGFubm90YXRpb24gZm9yIGl0cyByZXR1cm4gdHlwZSwgdGhpcworICAgICAgICBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGJpbmQoKmFyZ3MsICoqa3dhcmdzKSAtPiBCb3VuZEFyZ3VtZW50cworICAgICAgICBDcmVhdGVzIGEgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIHRvCisgICAgICAgIHBhcmFtZXRlcnMuCisgICAgKiBiaW5kX3BhcnRpYWwoKmFyZ3MsICoqa3dhcmdzKSAtPiBCb3VuZEFyZ3VtZW50cworICAgICAgICBDcmVhdGVzIGEgcGFydGlhbCBtYXBwaW5nIGZyb20gcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAgdG8gcGFyYW1ldGVycyAoc2ltdWxhdGluZyAnZnVuY3Rvb2xzLnBhcnRpYWwnIGJlaGF2aW9yLikKKyAgICAnJycKKworICAgIF9fc2xvdHNfXyA9ICgnX3JldHVybl9hbm5vdGF0aW9uJywgJ19wYXJhbWV0ZXJzJykKKworICAgIF9wYXJhbWV0ZXJfY2xzID0gUGFyYW1ldGVyCisgICAgX2JvdW5kX2FyZ3VtZW50c19jbHMgPSBCb3VuZEFyZ3VtZW50cworCisgICAgZW1wdHkgPSBfZW1wdHkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJhbWV0ZXJzPU5vbmUsICosIHJldHVybl9hbm5vdGF0aW9uPV9lbXB0eSwKKyAgICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189VHJ1ZSk6CisgICAgICAgICcnJ0NvbnN0cnVjdHMgU2lnbmF0dXJlIGZyb20gdGhlIGdpdmVuIGxpc3Qgb2YgUGFyYW1ldGVyCisgICAgICAgIG9iamVjdHMgYW5kICdyZXR1cm5fYW5ub3RhdGlvbicuICBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4KKyAgICAgICAgJycnCisKKyAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBOb25lOgorICAgICAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX186CisgICAgICAgICAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKQorICAgICAgICAgICAgICAgIHRvcF9raW5kID0gX1BPU0lUSU9OQUxfT05MWQorCisgICAgICAgICAgICAgICAgZm9yIGlkeCwgcGFyYW0gaW4gZW51bWVyYXRlKHBhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAgICAgICBraW5kID0gcGFyYW0ua2luZAorICAgICAgICAgICAgICAgICAgICBpZiBraW5kIDwgdG9wX2tpbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyOiB7fSBiZWZvcmUge30nCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KHRvcF9raW5kLCBwYXJhbS5raW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB0b3Bfa2luZCA9IGtpbmQKKworICAgICAgICAgICAgICAgICAgICBuYW1lID0gcGFyYW0ubmFtZQorICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gc3RyKGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gcGFyYW0ucmVwbGFjZShuYW1lPW5hbWUpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBpbiBwYXJhbXM6CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lOiB7IXJ9Jy5mb3JtYXQobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgICAgICAgICBwYXJhbXNbbmFtZV0gPSBwYXJhbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbXMgPSBPcmRlcmVkRGljdCgoKHBhcmFtLm5hbWUsIHBhcmFtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcmFtIGluIHBhcmFtZXRlcnMpKQorCisgICAgICAgIHNlbGYuX3BhcmFtZXRlcnMgPSB0eXBlcy5NYXBwaW5nUHJveHlUeXBlKHBhcmFtcykKKyAgICAgICAgc2VsZi5fcmV0dXJuX2Fubm90YXRpb24gPSByZXR1cm5fYW5ub3RhdGlvbgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fZnVuY3Rpb24oY2xzLCBmdW5jKToKKyAgICAgICAgJycnQ29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBweXRob24gZnVuY3Rpb24nJycKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmdW5jLCB0eXBlcy5GdW5jdGlvblR5cGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicuZm9ybWF0KGZ1bmMpKQorCisgICAgICAgIFBhcmFtZXRlciA9IGNscy5fcGFyYW1ldGVyX2NscworCisgICAgICAgICMgUGFyYW1ldGVyIGluZm9ybWF0aW9uLgorICAgICAgICBmdW5jX2NvZGUgPSBmdW5jLl9fY29kZV9fCisgICAgICAgIHBvc19jb3VudCA9IGZ1bmNfY29kZS5jb19hcmdjb3VudAorICAgICAgICBhcmdfbmFtZXMgPSBmdW5jX2NvZGUuY29fdmFybmFtZXMKKyAgICAgICAgcG9zaXRpb25hbCA9IHR1cGxlKGFyZ19uYW1lc1s6cG9zX2NvdW50XSkKKyAgICAgICAga2V5d29yZF9vbmx5X2NvdW50ID0gZnVuY19jb2RlLmNvX2t3b25seWFyZ2NvdW50CisgICAgICAgIGtleXdvcmRfb25seSA9IGFyZ19uYW1lc1twb3NfY291bnQ6KHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudCldCisgICAgICAgIGFubm90YXRpb25zID0gZnVuYy5fX2Fubm90YXRpb25zX18KKyAgICAgICAgZGVmYXVsdHMgPSBmdW5jLl9fZGVmYXVsdHNfXworICAgICAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworCisgICAgICAgIGlmIGRlZmF1bHRzOgorICAgICAgICAgICAgcG9zX2RlZmF1bHRfY291bnQgPSBsZW4oZGVmYXVsdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwb3NfZGVmYXVsdF9jb3VudCA9IDAKKworICAgICAgICBwYXJhbWV0ZXJzID0gW10KKworICAgICAgICAjIE5vbi1rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyB3L28gZGVmYXVsdHMuCisgICAgICAgIG5vbl9kZWZhdWx0X2NvdW50ID0gcG9zX2NvdW50IC0gcG9zX2RlZmF1bHRfY291bnQKKyAgICAgICAgZm9yIG5hbWUgaW4gcG9zaXRpb25hbFs6bm9uX2RlZmF1bHRfY291bnRdOgorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1BPU0lUSU9OQUxfT1JfS0VZV09SRCkpCisKKyAgICAgICAgIyAuLi4gdy8gZGVmYXVsdHMuCisgICAgICAgIGZvciBvZmZzZXQsIG5hbWUgaW4gZW51bWVyYXRlKHBvc2l0aW9uYWxbbm9uX2RlZmF1bHRfY291bnQ6XSk6CisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fUE9TSVRJT05BTF9PUl9LRVlXT1JELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdHNbb2Zmc2V0XSkpCisKKyAgICAgICAgIyAqYXJncworICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiAweDA0OgorICAgICAgICAgICAgbmFtZSA9IGFyZ19uYW1lc1twb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnRdCisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX1BPU0lUSU9OQUwpKQorCisgICAgICAgICMgS2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuCisgICAgICAgIGZvciBuYW1lIGluIGtleXdvcmRfb25seToKKyAgICAgICAgICAgIGRlZmF1bHQgPSBfZW1wdHkKKyAgICAgICAgICAgIGlmIGt3ZGVmYXVsdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZGVmYXVsdCA9IGt3ZGVmYXVsdHMuZ2V0KG5hbWUsIF9lbXB0eSkKKworICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X0tFWVdPUkRfT05MWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQpKQorICAgICAgICAjICoqa3dhcmdzCisgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIDB4MDg6CisgICAgICAgICAgICBpbmRleCA9IHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudAorICAgICAgICAgICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgMHgwNDoKKyAgICAgICAgICAgICAgICBpbmRleCArPSAxCisKKyAgICAgICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbaW5kZXhdCisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX0tFWVdPUkQpKQorCisgICAgICAgIHJldHVybiBjbHMocGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1hbm5vdGF0aW9ucy5nZXQoJ3JldHVybicsIF9lbXB0eSksCisgICAgICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189RmFsc2UpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmFtZXRlcnMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZXR1cm5fYW5ub3RhdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JldHVybl9hbm5vdGF0aW9uCisKKyAgICBkZWYgcmVwbGFjZShzZWxmLCAqLCBwYXJhbWV0ZXJzPV92b2lkLCByZXR1cm5fYW5ub3RhdGlvbj1fdm9pZCk6CisgICAgICAgICcnJ0NyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFNpZ25hdHVyZS4KKyAgICAgICAgUGFzcyAncGFyYW1ldGVycycgYW5kL29yICdyZXR1cm5fYW5ub3RhdGlvbicgYXJndW1lbnRzCisgICAgICAgIHRvIG92ZXJyaWRlIHRoZW0gaW4gdGhlIG5ldyBjb3B5LgorICAgICAgICAnJycKKworICAgICAgICBpZiBwYXJhbWV0ZXJzIGlzIF92b2lkOgorICAgICAgICAgICAgcGFyYW1ldGVycyA9IHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKQorCisgICAgICAgIGlmIHJldHVybl9hbm5vdGF0aW9uIGlzIF92b2lkOgorICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb24gPSBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbgorCisgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9hbm5vdGF0aW9uPXJldHVybl9hbm5vdGF0aW9uKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIChub3QgaXNzdWJjbGFzcyh0eXBlKG90aGVyKSwgU2lnbmF0dXJlKSBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybl9hbm5vdGF0aW9uICE9IG90aGVyLnJldHVybl9hbm5vdGF0aW9uIG9yCisgICAgICAgICAgICAgICAgICAgIGxlbihzZWxmLnBhcmFtZXRlcnMpICE9IGxlbihvdGhlci5wYXJhbWV0ZXJzKSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBvdGhlcl9wb3NpdGlvbnMgPSB7cGFyYW06IGlkeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGlkeCwgcGFyYW0gaW4gZW51bWVyYXRlKG90aGVyLnBhcmFtZXRlcnMua2V5cygpKX0KKworICAgICAgICBmb3IgaWR4LCAocGFyYW1fbmFtZSwgcGFyYW0pIGluIGVudW1lcmF0ZShzZWxmLnBhcmFtZXRlcnMuaXRlbXMoKSk6CisgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9LRVlXT1JEX09OTFk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvdGhlcl9wYXJhbSA9IG90aGVyLnBhcmFtZXRlcnNbcGFyYW1fbmFtZV0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtICE9IG90aGVyX3BhcmFtOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3RoZXJfaWR4ID0gb3RoZXJfcG9zaXRpb25zW3BhcmFtX25hbWVdCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IG90aGVyX2lkeCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0gIT0gb3RoZXIucGFyYW1ldGVyc1twYXJhbV9uYW1lXSk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKyAgICBkZWYgX2JpbmQoc2VsZiwgYXJncywga3dhcmdzLCAqLCBwYXJ0aWFsPUZhbHNlKToKKyAgICAgICAgJycnUHJpdmF0ZSBtZXRob2QuICBEb24ndCB1c2UgZGlyZWN0bHkuJycnCisKKyAgICAgICAgYXJndW1lbnRzID0gT3JkZXJlZERpY3QoKQorCisgICAgICAgIHBhcmFtZXRlcnMgPSBpdGVyKHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKSkKKyAgICAgICAgcGFyYW1ldGVyc19leCA9ICgpCisgICAgICAgIGFyZ192YWxzID0gaXRlcihhcmdzKQorCisgICAgICAgIGlmIHBhcnRpYWw6CisgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGJpbmRpbmcgYXJndW1lbnRzIHRvICdmdW5jdG9vbHMucGFydGlhbCcgb2JqZWN0cy4KKyAgICAgICAgICAgICMgU2VlICdmdW5jdG9vbHMucGFydGlhbCcgY2FzZSBpbiAnc2lnbmF0dXJlKCknIGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICAjIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtIGluIHNlbGYucGFyYW1ldGVycy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmIChwYXJhbS5fcGFydGlhbF9rd2FyZyBhbmQgcGFyYW1fbmFtZSBub3QgaW4ga3dhcmdzKToKKyAgICAgICAgICAgICAgICAgICAgIyBTaW11bGF0aW5nICdmdW5jdG9vbHMucGFydGlhbCcgYmVoYXZpb3IKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzW3BhcmFtX25hbWVdID0gcGFyYW0uZGVmYXVsdAorCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIExldCdzIGl0ZXJhdGUgdGhyb3VnaCB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgYW5kIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICMgcGFyYW1ldGVycworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZ192YWwgPSBuZXh0KGFyZ192YWxzKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgIyBObyBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwYXJhbSA9IG5leHQocGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgIyBObyBtb3JlIHBhcmFtZXRlcnMuIFRoYXQncyBpdC4gSnVzdCBuZWVkIHRvIGNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBoYXZlIG5vIGBrd2FyZ3NgIGFmdGVyIHRoaXMgd2hpbGUgbG9vcAorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGF0J3MgT0ssIGp1c3QgZW1wdHkgKmFyZ3MuICBMZXQncyBzdGFydCBwYXJzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAjIGt3YXJncworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBwYXJhbS5uYW1lIGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1BPU0lUSU9OQUxfT05MWToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAne2FyZyFyfSBwYXJhbWV0ZXIgaXMgcG9zaXRpb25hbCBvbmx5LCAnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnV0IHdhcyBwYXNzZWQgYXMgYSBrZXl3b3JkJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG1zZy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKHBhcmFtLCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsaWYgKHBhcmFtLmtpbmQgPT0gX1ZBUl9LRVlXT1JEIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZhdWx0IGlzIG5vdCBfZW1wdHkpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGF0J3MgZmluZSB0b28gLSB3ZSBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIuICBTbywgbGV0cyBzdGFydCBwYXJzaW5nIGBrd2FyZ3NgLCBzdGFydGluZworICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoIHRoZSBjdXJyZW50IHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyc19leCA9IChwYXJhbSwpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFydGlhbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKHBhcmFtLCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAne2FyZyFyfSBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG1zZy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBhIHBvc2l0aW9uYWwgYXJndW1lbnQgdG8gcHJvY2VzcworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBuZXh0KHBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKSBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBMb29rcyBsaWtlIHdlIGhhdmUgbm8gcGFyYW1ldGVyIGZvciB0aGlzIHBvc2l0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKQorCisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGFuICcqYXJncyctbGlrZSBhcmd1bWVudCwgbGV0J3MgZmlsbCBpdCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBwb3NpdGlvbmFsIGFyZ3VtZW50cyB3ZSBoYXZlIGxlZnQgYW5kIG1vdmUgb24gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIG5leHQgcGhhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IFthcmdfdmFsXQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmV4dGVuZChhcmdfdmFscykKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IHR1cGxlKHZhbHVlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ubmFtZSBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7YXJnIXJ9Jy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpKQorCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IGFyZ192YWwKKworICAgICAgICAjIE5vdywgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSByZW1haW5pbmcgcGFyYW1ldGVycyB0byBwcm9jZXNzCisgICAgICAgICMga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAga3dhcmdzX3BhcmFtID0gTm9uZQorICAgICAgICBmb3IgcGFyYW0gaW4gaXRlcnRvb2xzLmNoYWluKHBhcmFtZXRlcnNfZXgsIHBhcmFtZXRlcnMpOgorICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfUE9TSVRJT05BTF9PTkxZOgorICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIGNhc2Ugb2YgYSBwcm9wZXJseSBidWlsdAorICAgICAgICAgICAgICAgICMgU2lnbmF0dXJlIG9iamVjdCAoYnV0IGxldCdzIGhhdmUgdGhpcyBjaGVjayBoZXJlCisgICAgICAgICAgICAgICAgIyB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvdXIganVzdCBpbiBjYXNlKQorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigne2FyZyFyfSBwYXJhbWV0ZXIgaXMgcG9zaXRpb25hbCBvbmx5LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidXQgd2FzIHBhc3NlZCBhcyBhIGtleXdvcmQnLiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChhcmc9cGFyYW0ubmFtZSkpCisKKyAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9LRVlXT1JEOgorICAgICAgICAgICAgICAgICMgTWVtb3JpemUgdGhhdCB3ZSBoYXZlIGEgJyoqa3dhcmdzJy1saWtlIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIGt3YXJnc19wYXJhbSA9IHBhcmFtCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcGFyYW1fbmFtZSA9IHBhcmFtLm5hbWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhcmdfdmFsID0ga3dhcmdzLnBvcChwYXJhbV9uYW1lKQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBubyB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIuICBJdCdzIGZpbmUgdGhvdWdoLAorICAgICAgICAgICAgICAgICMgaWYgaXQgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgb3IgaXQgaXMgYW4gJyphcmdzJy1saWtlCisgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIsIGxlZnQgYWxvbmUgYnkgdGhlIHByb2Nlc3Npbmcgb2YgcG9zaXRpb25hbAorICAgICAgICAgICAgICAgICMgYXJndW1lbnRzLgorICAgICAgICAgICAgICAgIGlmIChub3QgcGFydGlhbCBhbmQgcGFyYW0ua2luZCAhPSBfVkFSX1BPU0lUSU9OQUwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBfZW1wdHkpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3thcmchcn0gcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZScuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChhcmc9cGFyYW1fbmFtZSkpIGZyb20gTm9uZQorCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbV9uYW1lXSA9IGFyZ192YWwKKworICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAgICAgICBpZiBrd2FyZ3NfcGFyYW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBQcm9jZXNzIG91ciAnKiprd2FyZ3MnLWxpa2UgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgYXJndW1lbnRzW2t3YXJnc19wYXJhbS5uYW1lXSA9IGt3YXJncworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJykKKworICAgICAgICByZXR1cm4gc2VsZi5fYm91bmRfYXJndW1lbnRzX2NscyhzZWxmLCBhcmd1bWVudHMpCisKKyAgICBkZWYgYmluZChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAnJydHZXQgYSBCb3VuZEFyZ3VtZW50cyBvYmplY3QsIHRoYXQgbWFwcyB0aGUgcGFzc2VkIGBhcmdzYAorICAgICAgICBhbmQgYGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLiAgUmFpc2VzIGBUeXBlRXJyb3JgCisgICAgICAgIGlmIHRoZSBwYXNzZWQgYXJndW1lbnRzIGNhbiBub3QgYmUgYm91bmQuCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5fYmluZChhcmdzLCBrd2FyZ3MpCisKKyAgICBkZWYgYmluZF9wYXJ0aWFsKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICcnJ0dldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBwYXJ0aWFsbHkgbWFwcyB0aGUKKyAgICAgICAgcGFzc2VkIGBhcmdzYCBhbmQgYGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLgorICAgICAgICBSYWlzZXMgYFR5cGVFcnJvcmAgaWYgdGhlIHBhc3NlZCBhcmd1bWVudHMgY2FuIG5vdCBiZSBib3VuZC4KKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBzZWxmLl9iaW5kKGFyZ3MsIGt3YXJncywgcGFydGlhbD1UcnVlKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIHJlbmRlcl9rd19vbmx5X3NlcGFyYXRvciA9IFRydWUKKyAgICAgICAgZm9yIGlkeCwgcGFyYW0gaW4gZW51bWVyYXRlKHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKSk6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSBzdHIocGFyYW0pCisKKyAgICAgICAgICAgIGtpbmQgPSBwYXJhbS5raW5kCisgICAgICAgICAgICBpZiBraW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAjIE9LLCB3ZSBoYXZlIGFuICcqYXJncyctbGlrZSBwYXJhbWV0ZXIsIHNvIHdlIHdvbid0IG5lZWQKKyAgICAgICAgICAgICAgICAjIGEgJyonIHRvIHNlcGFyYXRlIGtleXdvcmQtb25seSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICByZW5kZXJfa3dfb25seV9zZXBhcmF0b3IgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiBraW5kID09IF9LRVlXT1JEX09OTFkgYW5kIHJlbmRlcl9rd19vbmx5X3NlcGFyYXRvcjoKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyIHRvIHJlbmRlciBhbmQgd2UgaGF2ZW4ndAorICAgICAgICAgICAgICAgICMgcmVuZGVyZWQgYW4gJyphcmdzJy1saWtlIHBhcmFtZXRlciBiZWZvcmUsIHNvIGFkZCBhICcqJworICAgICAgICAgICAgICAgICMgc2VwYXJhdG9yIHRvIHRoZSBwYXJhbWV0ZXJzIGxpc3QgKCJmb28oYXJnMSwgKiwgYXJnMikiIGNhc2UpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKicpCisgICAgICAgICAgICAgICAgIyBUaGlzIGNvbmRpdGlvbiBzaG91bGQgYmUgb25seSB0cmlnZ2VyZWQgb25jZSwgc28KKyAgICAgICAgICAgICAgICAjIHJlc2V0IHRoZSBmbGFnCisgICAgICAgICAgICAgICAgcmVuZGVyX2t3X29ubHlfc2VwYXJhdG9yID0gRmFsc2UKKworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmb3JtYXR0ZWQpCisKKyAgICAgICAgcmVuZGVyZWQgPSAnKHt9KScuZm9ybWF0KCcsICcuam9pbihyZXN1bHQpKQorCisgICAgICAgIGlmIHNlbGYucmV0dXJuX2Fubm90YXRpb24gaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgIGFubm8gPSBmb3JtYXRhbm5vdGF0aW9uKHNlbGYucmV0dXJuX2Fubm90YXRpb24pCisgICAgICAgICAgICByZW5kZXJlZCArPSAnIC0+IHt9Jy5mb3JtYXQoYW5ubykKKworICAgICAgICByZXR1cm4gcmVuZGVyZWQKZGlmZiAtLWdpdCBhL0xpYi9pby5weSBiL0xpYi9pby5weQppbmRleCBhNTlhNzVhLi5jZmI3MGFjIDEwMDY0NAotLS0gYS9MaWIvaW8ucHkKKysrIGIvTGliL2lvLnB5CkBAIC01OCw2ICs1OCw5IEBACiAKIE9wZW5XcmFwcGVyID0gX2lvLm9wZW4gIyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIF9weWlvCiAKKyMgUHJldGVuZCB0aGlzIGV4Y2VwdGlvbiB3YXMgY3JlYXRlZCBoZXJlLgorVW5zdXBwb3J0ZWRPcGVyYXRpb24uX19tb2R1bGVfXyA9ICJpbyIKKwogIyBmb3Igc2VlaygpCiBTRUVLX1NFVCA9IDAKIFNFRUtfQ1VSID0gMQpkaWZmIC0tZ2l0IGEvTGliL2lwYWRkcmVzcy5weSBiL0xpYi9pcGFkZHJlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJlZmIwOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pcGFkZHJlc3MucHkKQEAgLTAsMCArMSwyMDkzIEBACisjIENvcHlyaWdodCAyMDA3IEdvb2dsZSBJbmMuCisjICBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisKKyIiIkEgZmFzdCwgbGlnaHR3ZWlnaHQgSVB2NC9JUHY2IG1hbmlwdWxhdGlvbiBsaWJyYXJ5IGluIFB5dGhvbi4KKworVGhpcyBsaWJyYXJ5IGlzIHVzZWQgdG8gY3JlYXRlL3Bva2UvbWFuaXB1bGF0ZSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcworYW5kIG5ldHdvcmtzLgorCisiIiIKKworX192ZXJzaW9uX18gPSAnMS4wJworCisKK2ltcG9ydCBmdW5jdG9vbHMKKworSVBWNExFTkdUSCA9IDMyCitJUFY2TEVOR1RIID0gMTI4CisKK2NsYXNzIEFkZHJlc3NWYWx1ZUVycm9yKFZhbHVlRXJyb3IpOgorICAgICIiIkEgVmFsdWUgRXJyb3IgcmVsYXRlZCB0byB0aGUgYWRkcmVzcy4iIiIKKworCitjbGFzcyBOZXRtYXNrVmFsdWVFcnJvcihWYWx1ZUVycm9yKToKKyAgICAiIiJBIFZhbHVlIEVycm9yIHJlbGF0ZWQgdG8gdGhlIG5ldG1hc2suIiIiCisKKworZGVmIGlwX2FkZHJlc3MoYWRkcmVzcyk6CisgICAgIiIiVGFrZSBhbiBJUCBzdHJpbmcvaW50IGFuZCByZXR1cm4gYW4gb2JqZWN0IG9mIHRoZSBjb3JyZWN0IHR5cGUuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4gIEVpdGhlciBJUHY0IG9yCisgICAgICAgICAgSVB2NiBhZGRyZXNzZXMgbWF5IGJlIHN1cHBsaWVkOyBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbAorICAgICAgICAgIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gSVB2NEFkZHJlc3Mgb3IgSVB2NkFkZHJlc3Mgb2JqZWN0LgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgKmFkZHJlc3MqIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CisgICAgICAgICAgYWRkcmVzcworCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3MoYWRkcmVzcykKKyAgICBleGNlcHQgKEFkZHJlc3NWYWx1ZUVycm9yLCBOZXRtYXNrVmFsdWVFcnJvcik6CisgICAgICAgIHBhc3MKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjZBZGRyZXNzKGFkZHJlc3MpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICByYWlzZSBWYWx1ZUVycm9yKCclciBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2IGFkZHJlc3MnICUKKyAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MpCisKKworZGVmIGlwX25ldHdvcmsoYWRkcmVzcywgc3RyaWN0PVRydWUpOgorICAgICIiIlRha2UgYW4gSVAgc3RyaW5nL2ludCBhbmQgcmV0dXJuIGFuIG9iamVjdCBvZiB0aGUgY29ycmVjdCB0eXBlLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciwgdGhlIElQIG5ldHdvcmsuICBFaXRoZXIgSVB2NCBvcgorICAgICAgICAgIElQdjYgbmV0d29ya3MgbWF5IGJlIHN1cHBsaWVkOyBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbAorICAgICAgICAgIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gSVB2NE5ldHdvcmsgb3IgSVB2Nk5ldHdvcmsgb2JqZWN0LgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgc3RyaW5nIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CisgICAgICAgICAgYWRkcmVzcy4gT3IgaWYgdGhlIG5ldHdvcmsgaGFzIGhvc3QgYml0cyBzZXQuCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBJUHY0TmV0d29yayhhZGRyZXNzLCBzdHJpY3QpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBJUHY2TmV0d29yayhhZGRyZXNzLCBzdHJpY3QpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICByYWlzZSBWYWx1ZUVycm9yKCclciBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2IG5ldHdvcmsnICUKKyAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MpCisKKworZGVmIGlwX2ludGVyZmFjZShhZGRyZXNzKToKKyAgICAiIiJUYWtlIGFuIElQIHN0cmluZy9pbnQgYW5kIHJldHVybiBhbiBvYmplY3Qgb2YgdGhlIGNvcnJlY3QgdHlwZS4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLiAgRWl0aGVyIElQdjQgb3IKKyAgICAgICAgICBJUHY2IGFkZHJlc3NlcyBtYXkgYmUgc3VwcGxpZWQ7IGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsCisgICAgICAgICAgYmUgY29uc2lkZXJlZCB0byBiZSBJUHY0IGJ5IGRlZmF1bHQuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBbiBJUHY0SW50ZXJmYWNlIG9yIElQdjZJbnRlcmZhY2Ugb2JqZWN0LgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgc3RyaW5nIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CisgICAgICAgICAgYWRkcmVzcy4KKworICAgIE5vdGVzOgorICAgICAgICBUaGUgSVB2P0ludGVyZmFjZSBjbGFzc2VzIGRlc2NyaWJlIGFuIEFkZHJlc3Mgb24gYSBwYXJ0aWN1bGFyCisgICAgICAgIE5ldHdvcmssIHNvIHRoZXkncmUgYmFzaWNhbGx5IGEgY29tYmluYXRpb24gb2YgYm90aCB0aGUgQWRkcmVzcworICAgICAgICBhbmQgTmV0d29yayBjbGFzc2VzLgorCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NEludGVyZmFjZShhZGRyZXNzKQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NkludGVyZmFjZShhZGRyZXNzKQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgcmFpc2UgVmFsdWVFcnJvcignJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBpbnRlcmZhY2UnICUKKyAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MpCisKKworZGVmIHY0X2ludF90b19wYWNrZWQoYWRkcmVzcyk6CisgICAgIiIiUmVwcmVzZW50IGFuIGFkZHJlc3MgYXMgNCBwYWNrZWQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzOiBBbiBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjQgSVAgYWRkcmVzcy4KKworICAgIFJldHVybnM6CisgICAgICAgIFRoZSBpbnRlZ2VyIGFkZHJlc3MgcGFja2VkIGFzIDQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisKKyAgICBSYWlzZXM6CisgICAgICAgIFZhbHVlRXJyb3I6IElmIHRoZSBpbnRlZ2VyIGlzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSB0byBiZSBhbgorICAgICAgICAgIElQdjQgSVAgYWRkcmVzcy4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MudG9fYnl0ZXMoNCwgJ2JpZycpCisgICAgZXhjZXB0OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBZGRyZXNzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSBmb3IgSVB2NCIpCisKKworZGVmIHY2X2ludF90b19wYWNrZWQoYWRkcmVzcyk6CisgICAgIiIiUmVwcmVzZW50IGFuIGFkZHJlc3MgYXMgMTYgcGFja2VkIGJ5dGVzIGluIG5ldHdvcmsgKGJpZy1lbmRpYW4pIG9yZGVyLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQW4gaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY2IElQIGFkZHJlc3MuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBUaGUgaW50ZWdlciBhZGRyZXNzIHBhY2tlZCBhcyAxNiBieXRlcyBpbiBuZXR3b3JrIChiaWctZW5kaWFuKSBvcmRlci4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MudG9fYnl0ZXMoMTYsICdiaWcnKQorICAgIGV4Y2VwdDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWRkcmVzcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgZm9yIElQdjYiKQorCisKK2RlZiBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKToKKyAgICAiIiJIZWxwZXIgdG8gc3BsaXQgdGhlIG5ldG1hc2sgYW5kIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yIGlmIG5lZWRlZCIiIgorICAgIGFkZHIgPSBzdHIoYWRkcmVzcykuc3BsaXQoJy8nKQorICAgIGlmIGxlbihhZGRyKSA+IDI6CisgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCJPbmx5IG9uZSAnLycgcGVybWl0dGVkIGluICVyIiAlIGFkZHJlc3MpCisgICAgcmV0dXJuIGFkZHIKKworCitkZWYgX2ZpbmRfYWRkcmVzc19yYW5nZShhZGRyZXNzZXMpOgorICAgICIiIkZpbmQgYSBzZXF1ZW5jZSBvZiBJUHYjQWRkcmVzcy4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3NlczogYSBsaXN0IG9mIElQdiNBZGRyZXNzIG9iamVjdHMuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGZpcnN0IGFuZCBsYXN0IElQIGFkZHJlc3NlcyBpbiB0aGUgc2VxdWVuY2UuCisKKyAgICAiIiIKKyAgICBmaXJzdCA9IGxhc3QgPSBhZGRyZXNzZXNbMF0KKyAgICBmb3IgaXAgaW4gYWRkcmVzc2VzWzE6XToKKyAgICAgICAgaWYgaXAuX2lwID09IGxhc3QuX2lwICsgMToKKyAgICAgICAgICAgIGxhc3QgPSBpcAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJlYWsKKyAgICByZXR1cm4gKGZpcnN0LCBsYXN0KQorCisKK2RlZiBfY291bnRfcmlnaHRoYW5kX3plcm9fYml0cyhudW1iZXIsIGJpdHMpOgorICAgICIiIkNvdW50IHRoZSBudW1iZXIgb2YgemVybyBiaXRzIG9uIHRoZSByaWdodCBoYW5kIHNpZGUuCisKKyAgICBBcmdzOgorICAgICAgICBudW1iZXI6IGFuIGludGVnZXIuCisgICAgICAgIGJpdHM6IG1heGltdW0gbnVtYmVyIG9mIGJpdHMgdG8gY291bnQuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBUaGUgbnVtYmVyIG9mIHplcm8gYml0cyBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIHRoZSBudW1iZXIuCisKKyAgICAiIiIKKyAgICBpZiBudW1iZXIgPT0gMDoKKyAgICAgICAgcmV0dXJuIGJpdHMKKyAgICBmb3IgaSBpbiByYW5nZShiaXRzKToKKyAgICAgICAgaWYgKG51bWJlciA+PiBpKSAmIDE6CisgICAgICAgICAgICByZXR1cm4gaQorICAgICMgQWxsIGJpdHMgb2YgaW50ZXJlc3Qgd2VyZSB6ZXJvLCBldmVuIGlmIHRoZXJlIGFyZSBtb3JlIGluIHRoZSBudW1iZXIKKyAgICByZXR1cm4gYml0cworCisKK2RlZiBzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCk6CisgICAgIiIiU3VtbWFyaXplIGEgbmV0d29yayByYW5nZSBnaXZlbiB0aGUgZmlyc3QgYW5kIGxhc3QgSVAgYWRkcmVzc2VzLgorCisgICAgRXhhbXBsZToKKyAgICAgICAgPj4+IHN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKSwKKyAgICAgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEzMCcpKQorICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMzEnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTMwLzMyJyldCisKKyAgICBBcmdzOgorICAgICAgICBmaXJzdDogdGhlIGZpcnN0IElQdjRBZGRyZXNzIG9yIElQdjZBZGRyZXNzIGluIHRoZSByYW5nZS4KKyAgICAgICAgbGFzdDogdGhlIGxhc3QgSVB2NEFkZHJlc3Mgb3IgSVB2NkFkZHJlc3MgaW4gdGhlIHJhbmdlLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gaXRlcmF0b3Igb2YgdGhlIHN1bW1hcml6ZWQgSVB2KDR8NikgbmV0d29yayBvYmplY3RzLgorCisgICAgUmFpc2U6CisgICAgICAgIFR5cGVFcnJvcjoKKyAgICAgICAgICAgIElmIHRoZSBmaXJzdCBhbmQgbGFzdCBvYmplY3RzIGFyZSBub3QgSVAgYWRkcmVzc2VzLgorICAgICAgICAgICAgSWYgdGhlIGZpcnN0IGFuZCBsYXN0IG9iamVjdHMgYXJlIG5vdCB0aGUgc2FtZSB2ZXJzaW9uLgorICAgICAgICBWYWx1ZUVycm9yOgorICAgICAgICAgICAgSWYgdGhlIGxhc3Qgb2JqZWN0IGlzIG5vdCBncmVhdGVyIHRoYW4gdGhlIGZpcnN0LgorICAgICAgICAgICAgSWYgdGhlIHZlcnNpb24gb2YgdGhlIGZpcnN0IGFkZHJlc3MgaXMgbm90IDQgb3IgNi4KKworICAgICIiIgorICAgIGlmIChub3QgKGlzaW5zdGFuY2UoZmlyc3QsIF9CYXNlQWRkcmVzcykgYW5kCisgICAgICAgICAgICAgaXNpbnN0YW5jZShsYXN0LCBfQmFzZUFkZHJlc3MpKSk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZmlyc3QgYW5kIGxhc3QgbXVzdCBiZSBJUCBhZGRyZXNzZXMsIG5vdCBuZXR3b3JrcycpCisgICAgaWYgZmlyc3QudmVyc2lvbiAhPSBsYXN0LnZlcnNpb246CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QpKQorICAgIGlmIGZpcnN0ID4gbGFzdDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbGFzdCBJUCBhZGRyZXNzIG11c3QgYmUgZ3JlYXRlciB0aGFuIGZpcnN0JykKKworICAgIGlmIGZpcnN0LnZlcnNpb24gPT0gNDoKKyAgICAgICAgaXAgPSBJUHY0TmV0d29yaworICAgIGVsaWYgZmlyc3QudmVyc2lvbiA9PSA2OgorICAgICAgICBpcCA9IElQdjZOZXR3b3JrCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndW5rbm93biBJUCB2ZXJzaW9uJykKKworICAgIGlwX2JpdHMgPSBmaXJzdC5fbWF4X3ByZWZpeGxlbgorICAgIGZpcnN0X2ludCA9IGZpcnN0Ll9pcAorICAgIGxhc3RfaW50ID0gbGFzdC5faXAKKyAgICB3aGlsZSBmaXJzdF9pbnQgPD0gbGFzdF9pbnQ6CisgICAgICAgIG5iaXRzID0gbWluKF9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKGZpcnN0X2ludCwgaXBfYml0cyksCisgICAgICAgICAgICAgICAgICAgIChsYXN0X2ludCAtIGZpcnN0X2ludCArIDEpLmJpdF9sZW5ndGgoKSAtIDEpCisgICAgICAgIG5ldCA9IGlwKCclcy8lZCcgJSAoZmlyc3QsIGlwX2JpdHMgLSBuYml0cykpCisgICAgICAgIHlpZWxkIG5ldAorICAgICAgICBmaXJzdF9pbnQgKz0gMSA8PCBuYml0cworICAgICAgICBpZiBmaXJzdF9pbnQgLSAxID09IGlwLl9BTExfT05FUzoKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpcnN0ID0gZmlyc3QuX19jbGFzc19fKGZpcnN0X2ludCkKKworCitkZWYgX2NvbGxhcHNlX2FkZHJlc3Nlc19yZWN1cnNpdmUoYWRkcmVzc2VzKToKKyAgICAiIiJMb29wcyB0aHJvdWdoIHRoZSBhZGRyZXNzZXMsIGNvbGxhcHNpbmcgY29uY3VycmVudCBuZXRibG9ja3MuCisKKyAgICBFeGFtcGxlOgorCisgICAgICAgIGlwMSA9IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjYnKQorICAgICAgICBpcDIgPSBJUHY0TmV0d29yaygnMTkyLjAuMi42NC8yNicpCisgICAgICAgIGlwMyA9IElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNicpCisgICAgICAgIGlwNCA9IElQdjROZXR3b3JrKCcxOTIuMC4yLjE5Mi8yNicpCisKKyAgICAgICAgX2NvbGxhcHNlX2FkZHJlc3Nlc19yZWN1cnNpdmUoW2lwMSwgaXAyLCBpcDMsIGlwNF0pIC0+CisgICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKV0KKworICAgICAgICBUaGlzIHNob3VsZG4ndCBiZSBjYWxsZWQgZGlyZWN0bHk7IGl0IGlzIGNhbGxlZCB2aWEKKyAgICAgICAgICBjb2xsYXBzZV9hZGRyZXNzZXMoW10pLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzc2VzOiBBIGxpc3Qgb2YgSVB2NE5ldHdvcmsncyBvciBJUHY2TmV0d29yaydzCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBIGxpc3Qgb2YgSVB2NE5ldHdvcmsncyBvciBJUHY2TmV0d29yaydzIGRlcGVuZGluZyBvbiB3aGF0IHdlIHdlcmUKKyAgICAgICAgcGFzc2VkLgorCisgICAgIiIiCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGFzdF9hZGRyID0gTm9uZQorICAgICAgICByZXRfYXJyYXkgPSBbXQorICAgICAgICBvcHRpbWl6ZWQgPSBGYWxzZQorCisgICAgICAgIGZvciBjdXJfYWRkciBpbiBhZGRyZXNzZXM6CisgICAgICAgICAgICBpZiBub3QgcmV0X2FycmF5OgorICAgICAgICAgICAgICAgIGxhc3RfYWRkciA9IGN1cl9hZGRyCisgICAgICAgICAgICAgICAgcmV0X2FycmF5LmFwcGVuZChjdXJfYWRkcikKKyAgICAgICAgICAgIGVsaWYgKGN1cl9hZGRyLm5ldHdvcmtfYWRkcmVzcyA+PSBsYXN0X2FkZHIubmV0d29ya19hZGRyZXNzIGFuZAorICAgICAgICAgICAgICAgIGN1cl9hZGRyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IGxhc3RfYWRkci5icm9hZGNhc3RfYWRkcmVzcyk6CisgICAgICAgICAgICAgICAgb3B0aW1pemVkID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBjdXJfYWRkciA9PSBsaXN0KGxhc3RfYWRkci5zdXBlcm5ldCgpLnN1Ym5ldHMoKSlbMV06CisgICAgICAgICAgICAgICAgcmV0X2FycmF5Wy0xXSA9IGxhc3RfYWRkciA9IGxhc3RfYWRkci5zdXBlcm5ldCgpCisgICAgICAgICAgICAgICAgb3B0aW1pemVkID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsYXN0X2FkZHIgPSBjdXJfYWRkcgorICAgICAgICAgICAgICAgIHJldF9hcnJheS5hcHBlbmQoY3VyX2FkZHIpCisKKyAgICAgICAgYWRkcmVzc2VzID0gcmV0X2FycmF5CisgICAgICAgIGlmIG5vdCBvcHRpbWl6ZWQ6CisgICAgICAgICAgICByZXR1cm4gYWRkcmVzc2VzCisKKworZGVmIGNvbGxhcHNlX2FkZHJlc3NlcyhhZGRyZXNzZXMpOgorICAgICIiIkNvbGxhcHNlIGEgbGlzdCBvZiBJUCBvYmplY3RzLgorCisgICAgRXhhbXBsZToKKyAgICAgICAgY29sbGFwc2VfYWRkcmVzc2VzKFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JyldKSAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKV0KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3NlczogQW4gaXRlcmF0b3Igb2YgSVB2NE5ldHdvcmsgb3IgSVB2Nk5ldHdvcmsgb2JqZWN0cy4KKworICAgIFJldHVybnM6CisgICAgICAgIEFuIGl0ZXJhdG9yIG9mIHRoZSBjb2xsYXBzZWQgSVB2KDR8NilOZXR3b3JrIG9iamVjdHMuCisKKyAgICBSYWlzZXM6CisgICAgICAgIFR5cGVFcnJvcjogSWYgcGFzc2VkIGEgbGlzdCBvZiBtaXhlZCB2ZXJzaW9uIG9iamVjdHMuCisKKyAgICAiIiIKKyAgICBpID0gMAorICAgIGFkZHJzID0gW10KKyAgICBpcHMgPSBbXQorICAgIG5ldHMgPSBbXQorCisgICAgIyBzcGxpdCBJUCBhZGRyZXNzZXMgYW5kIG5ldHdvcmtzCisgICAgZm9yIGlwIGluIGFkZHJlc3NlczoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShpcCwgX0Jhc2VBZGRyZXNzKToKKyAgICAgICAgICAgIGlmIGlwcyBhbmQgaXBzWy0xXS5fdmVyc2lvbiAhPSBpcC5fdmVyc2lvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAsIGlwc1stMV0pKQorICAgICAgICAgICAgaXBzLmFwcGVuZChpcCkKKyAgICAgICAgZWxpZiBpcC5fcHJlZml4bGVuID09IGlwLl9tYXhfcHJlZml4bGVuOgorICAgICAgICAgICAgaWYgaXBzIGFuZCBpcHNbLTFdLl92ZXJzaW9uICE9IGlwLl92ZXJzaW9uOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcCwgaXBzWy0xXSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXBzLmFwcGVuZChpcC5pcCkKKyAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICBpcHMuYXBwZW5kKGlwLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5ldHMgYW5kIG5ldHNbLTFdLl92ZXJzaW9uICE9IGlwLl92ZXJzaW9uOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcCwgbmV0c1stMV0pKQorICAgICAgICAgICAgbmV0cy5hcHBlbmQoaXApCisKKyAgICAjIHNvcnQgYW5kIGRlZHVwCisgICAgaXBzID0gc29ydGVkKHNldChpcHMpKQorICAgIG5ldHMgPSBzb3J0ZWQoc2V0KG5ldHMpKQorCisgICAgd2hpbGUgaSA8IGxlbihpcHMpOgorICAgICAgICAoZmlyc3QsIGxhc3QpID0gX2ZpbmRfYWRkcmVzc19yYW5nZShpcHNbaTpdKQorICAgICAgICBpID0gaXBzLmluZGV4KGxhc3QpICsgMQorICAgICAgICBhZGRycy5leHRlbmQoc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpKQorCisgICAgcmV0dXJuIGl0ZXIoX2NvbGxhcHNlX2FkZHJlc3Nlc19yZWN1cnNpdmUoc29ydGVkKAorICAgICAgICBhZGRycyArIG5ldHMsIGtleT1fQmFzZU5ldHdvcmsuX2dldF9uZXR3b3Jrc19rZXkpKSkKKworCitkZWYgZ2V0X21peGVkX3R5cGVfa2V5KG9iaik6CisgICAgIiIiUmV0dXJuIGEga2V5IHN1aXRhYmxlIGZvciBzb3J0aW5nIGJldHdlZW4gbmV0d29ya3MgYW5kIGFkZHJlc3Nlcy4KKworICAgIEFkZHJlc3MgYW5kIE5ldHdvcmsgb2JqZWN0cyBhcmUgbm90IHNvcnRhYmxlIGJ5IGRlZmF1bHQ7IHRoZXkncmUKKyAgICBmdW5kYW1lbnRhbGx5IGRpZmZlcmVudCBzbyB0aGUgZXhwcmVzc2lvbgorCisgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKSA8PSBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKworICAgIGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuICBUaGVyZSBhcmUgc29tZSB0aW1lcyBob3dldmVyLCB3aGVyZSB5b3UgbWF5IHdpc2gKKyAgICB0byBoYXZlIGlwYWRkcmVzcyBzb3J0IHRoZXNlIGZvciB5b3UgYW55d2F5LiBJZiB5b3UgbmVlZCB0byBkbyB0aGlzLCB5b3UKKyAgICBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGtleT0gYXJndW1lbnQgdG8gc29ydGVkKCkuCisKKyAgICBBcmdzOgorICAgICAgb2JqOiBlaXRoZXIgYSBOZXR3b3JrIG9yIEFkZHJlc3Mgb2JqZWN0LgorICAgIFJldHVybnM6CisgICAgICBhcHByb3ByaWF0ZSBrZXkuCisKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgcmV0dXJuIG9iai5fZ2V0X25ldHdvcmtzX2tleSgpCisgICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgX0Jhc2VBZGRyZXNzKToKKyAgICAgICAgcmV0dXJuIG9iai5fZ2V0X2FkZHJlc3Nfa2V5KCkKKyAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworCitjbGFzcyBfVG90YWxPcmRlcmluZ01peGluOgorICAgICMgSGVscGVyIHRoYXQgZGVyaXZlcyB0aGUgb3RoZXIgY29tcGFyaXNvbiBvcGVyYXRpb25zIGZyb20KKyAgICAjIF9fbHRfXyBhbmQgX19lcV9fCisgICAgIyBXZSBhdm9pZCBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcgYmVjYXVzZSBpdCBkb2Vzbid0IGhhbmRsZQorICAgICMgTm90SW1wbGVtZW50ZWQgY29ycmVjdGx5IHlldCAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEwMDQyKQorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGVxdWFsID0gc2VsZi5fX2VxX18ob3RoZXIpCisgICAgICAgIGlmIGVxdWFsIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBub3QgZXF1YWwKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBsZXNzID0gc2VsZi5fX2x0X18ob3RoZXIpCisgICAgICAgIGlmIGxlc3MgaXMgTm90SW1wbGVtZW50ZWQgb3Igbm90IGxlc3M6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2VxX18ob3RoZXIpCisgICAgICAgIHJldHVybiBsZXNzCisgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGxlc3MgPSBzZWxmLl9fbHRfXyhvdGhlcikKKyAgICAgICAgaWYgbGVzcyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICBlcXVhbCA9IHNlbGYuX19lcV9fKG90aGVyKQorICAgICAgICBpZiBlcXVhbCBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gbm90IChsZXNzIG9yIGVxdWFsKQorICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBsZXNzID0gc2VsZi5fX2x0X18ob3RoZXIpCisgICAgICAgIGlmIGxlc3MgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG5vdCBsZXNzCisKK2NsYXNzIF9JUEFkZHJlc3NCYXNlKF9Ub3RhbE9yZGVyaW5nTWl4aW4pOgorCisgICAgIiIiVGhlIG1vdGhlciBjbGFzcy4iIiIKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBleHBsb2RlZChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBsb25naGFuZCB2ZXJzaW9uIG9mIHRoZSBJUCBhZGRyZXNzIGFzIGEgc3RyaW5nLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb21wcmVzc2VkKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHNob3J0aGFuZCB2ZXJzaW9uIG9mIHRoZSBJUCBhZGRyZXNzIGFzIGEgc3RyaW5nLiIiIgorICAgICAgICByZXR1cm4gc3RyKHNlbGYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgbXNnID0gJyUyMDBzIGhhcyBubyB2ZXJzaW9uIHNwZWNpZmllZCcgJSAodHlwZShzZWxmKSwpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IobXNnKQorCisgICAgZGVmIF9jaGVja19pbnRfYWRkcmVzcyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgaWYgYWRkcmVzcyA8IDA6CisgICAgICAgICAgICBtc2cgPSAiJWQgKDwgMCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHYlZCBhZGRyZXNzIgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGFkZHJlc3MsIHNlbGYuX3ZlcnNpb24pKQorICAgICAgICBpZiBhZGRyZXNzID4gc2VsZi5fQUxMX09ORVM6CisgICAgICAgICAgICBtc2cgPSAiJWQgKD49IDIqKiVkKSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdiVkIGFkZHJlc3MiCisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoYWRkcmVzcywgc2VsZi5fbWF4X3ByZWZpeGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl92ZXJzaW9uKSkKKworICAgIGRlZiBfY2hlY2tfcGFja2VkX2FkZHJlc3Moc2VsZiwgYWRkcmVzcywgZXhwZWN0ZWRfbGVuKToKKyAgICAgICAgYWRkcmVzc19sZW4gPSBsZW4oYWRkcmVzcykKKyAgICAgICAgaWYgYWRkcmVzc19sZW4gIT0gZXhwZWN0ZWRfbGVuOgorICAgICAgICAgICAgbXNnID0gIiVyIChsZW4gJWQgIT0gJWQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2JWQgYWRkcmVzcyIKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChhZGRyZXNzLCBhZGRyZXNzX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9sZW4sIHNlbGYuX3ZlcnNpb24pKQorCisgICAgZGVmIF9pcF9pbnRfZnJvbV9wcmVmaXgoc2VsZiwgcHJlZml4bGVuPU5vbmUpOgorICAgICAgICAiIiJUdXJuIHRoZSBwcmVmaXggbGVuZ3RoIG5ldG1hc2sgaW50byBhIGludCBmb3IgY29tcGFyaXNvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcHJlZml4bGVuOiBBbiBpbnRlZ2VyLCB0aGUgcHJlZml4IGxlbmd0aC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gaW50ZWdlci4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgcHJlZml4bGVuIGlzIE5vbmU6CisgICAgICAgICAgICBwcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhsZW4KKyAgICAgICAgcmV0dXJuIHNlbGYuX0FMTF9PTkVTIF4gKHNlbGYuX0FMTF9PTkVTID4+IHByZWZpeGxlbikKKworICAgIGRlZiBfcHJlZml4X2Zyb21faXBfaW50KHNlbGYsIGlwX2ludCwgbWFzaz0zMik6CisgICAgICAgICIiIlJldHVybiBwcmVmaXggbGVuZ3RoIGZyb20gdGhlIGRlY2ltYWwgbmV0bWFzay4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfaW50OiBBbiBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4KKyAgICAgICAgICAgIG1hc2s6IFRoZSBuZXRtYXNrLiAgRGVmYXVsdHMgdG8gMzIuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGludGVnZXIsIHRoZSBwcmVmaXggbGVuZ3RoLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFzayAtIF9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKGlwX2ludCwgbWFzaykKKworICAgIGRlZiBfaXBfc3RyaW5nX2Zyb21fcHJlZml4KHNlbGYsIHByZWZpeGxlbj1Ob25lKToKKyAgICAgICAgIiIiVHVybiBhIHByZWZpeCBsZW5ndGggaW50byBhIGRvdHRlZCBkZWNpbWFsIHN0cmluZy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcHJlZml4bGVuOiBBbiBpbnRlZ2VyLCB0aGUgbmV0bWFzayBwcmVmaXggbGVuZ3RoLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIHN0cmluZywgdGhlIGRvdHRlZCBkZWNpbWFsIG5ldG1hc2sgc3RyaW5nLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgcHJlZml4bGVuOgorICAgICAgICAgICAgcHJlZml4bGVuID0gc2VsZi5fcHJlZml4bGVuCisgICAgICAgIHJldHVybiBzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KHByZWZpeGxlbikpCisKKworY2xhc3MgX0Jhc2VBZGRyZXNzKF9JUEFkZHJlc3NCYXNlKToKKworICAgICIiIkEgZ2VuZXJpYyBJUCBvYmplY3QuCisKKyAgICBUaGlzIElQIGNsYXNzIGNvbnRhaW5zIHRoZSB2ZXJzaW9uIGluZGVwZW5kZW50IG1ldGhvZHMgd2hpY2ggYXJlCisgICAgdXNlZCBieSBzaW5nbGUgSVAgYWRkcmVzc2VzLgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIGlmIChub3QgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcykKKyAgICAgICAgICAgIGFuZCAnLycgaW4gc3RyKGFkZHJlc3MpKToKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCJVbmV4cGVjdGVkICcvJyBpbiAlciIgJSBhZGRyZXNzKQorCisgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pcAorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiAoc2VsZi5faXAgPT0gb3RoZXIuX2lwCisgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLl92ZXJzaW9uID09IG90aGVyLl92ZXJzaW9uKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBzZWxmLl92ZXJzaW9uICE9IG90aGVyLl92ZXJzaW9uOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VBZGRyZXNzKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdHlwZScgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIG90aGVyKSkKKyAgICAgICAgaWYgc2VsZi5faXAgIT0gb3RoZXIuX2lwOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lwIDwgb3RoZXIuX2lwCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgIyBTaG9ydGhhbmQgZm9yIEludGVnZXIgYWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uLiBUaGlzIGlzIG5vdAorICAgICMgbWVhbnQgdG8gZXZlciBzdXBwb3J0IGFkZGl0aW9uL3N1YnRyYWN0aW9uIG9mIGFkZHJlc3Nlcy4KKyAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBpbnQpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhpbnQoc2VsZikgKyBvdGhlcikKKworICAgIGRlZiBfX3N1Yl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGludCk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGludChzZWxmKSAtIG90aGVyKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzKCVyKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN0cihzZWxmKSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCkpCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKGhleChpbnQoc2VsZi5faXApKSkKKworICAgIGRlZiBfZ2V0X2FkZHJlc3Nfa2V5KHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYuX3ZlcnNpb24sIHNlbGYpCisKKworY2xhc3MgX0Jhc2VOZXR3b3JrKF9JUEFkZHJlc3NCYXNlKToKKworICAgICIiIkEgZ2VuZXJpYyBJUCBuZXR3b3JrIG9iamVjdC4KKworICAgIFRoaXMgSVAgY2xhc3MgY29udGFpbnMgdGhlIHZlcnNpb24gaW5kZXBlbmRlbnQgbWV0aG9kcyB3aGljaCBhcmUKKyAgICB1c2VkIGJ5IG5ldHdvcmtzLgorCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBzZWxmLl9jYWNoZSA9IHt9CisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLnByZWZpeGxlbikKKworICAgIGRlZiBob3N0cyhzZWxmKToKKyAgICAgICAgIiIiR2VuZXJhdGUgSXRlcmF0b3Igb3ZlciB1c2FibGUgaG9zdHMgaW4gYSBuZXR3b3JrLgorCisgICAgICAgIFRoaXMgaXMgbGlrZSBfX2l0ZXJfXyBleGNlcHQgaXQgZG9lc24ndCByZXR1cm4gdGhlIG5ldHdvcmsKKyAgICAgICAgb3IgYnJvYWRjYXN0IGFkZHJlc3Nlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgbmV0d29yayA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgYnJvYWRjYXN0ID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCisgICAgICAgIGZvciB4IGluIHJhbmdlKG5ldHdvcmsgKyAxLCBicm9hZGNhc3QpOgorICAgICAgICAgICAgeWllbGQgc2VsZi5fYWRkcmVzc19jbGFzcyh4KQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICBuZXR3b3JrID0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKQorICAgICAgICBicm9hZGNhc3QgPSBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UobmV0d29yaywgYnJvYWRjYXN0ICsgMSk6CisgICAgICAgICAgICB5aWVsZCBzZWxmLl9hZGRyZXNzX2NsYXNzKHgpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbik6CisgICAgICAgIG5ldHdvcmsgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgIGJyb2FkY2FzdCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQorICAgICAgICBpZiBuID49IDA6CisgICAgICAgICAgICBpZiBuZXR3b3JrICsgbiA+IGJyb2FkY2FzdDoKKyAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhuZXR3b3JrICsgbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG4gKz0gMQorICAgICAgICAgICAgaWYgYnJvYWRjYXN0ICsgbiA8IG5ldHdvcms6CisgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NfY2xhc3MoYnJvYWRjYXN0ICsgbikKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBzZWxmLl92ZXJzaW9uICE9IG90aGVyLl92ZXJzaW9uOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdHlwZScgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIG90aGVyKSkKKyAgICAgICAgaWYgc2VsZi5uZXR3b3JrX2FkZHJlc3MgIT0gb3RoZXIubmV0d29ya19hZGRyZXNzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0d29ya19hZGRyZXNzIDwgb3RoZXIubmV0d29ya19hZGRyZXNzCisgICAgICAgIGlmIHNlbGYubmV0bWFzayAhPSBvdGhlci5uZXRtYXNrOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0bWFzayA8IG90aGVyLm5ldG1hc2sKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIChzZWxmLl92ZXJzaW9uID09IG90aGVyLl92ZXJzaW9uIGFuZAorICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9PSBvdGhlci5uZXR3b3JrX2FkZHJlc3MgYW5kCisgICAgICAgICAgICAgICAgICAgIGludChzZWxmLm5ldG1hc2spID09IGludChvdGhlci5uZXRtYXNrKSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgXiBpbnQoc2VsZi5uZXRtYXNrKSkKKworICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIGFsd2F5cyBmYWxzZSBpZiBvbmUgaXMgdjQgYW5kIHRoZSBvdGhlciBpcyB2Ni4KKyAgICAgICAgaWYgc2VsZi5fdmVyc2lvbiAhPSBvdGhlci5fdmVyc2lvbjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAjIGRlYWxpbmcgd2l0aCBhbm90aGVyIG5ldHdvcmsuCisgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlTmV0d29yayk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgIyBkZWFsaW5nIHdpdGggYW5vdGhlciBhZGRyZXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGFkZHJlc3MKKyAgICAgICAgICAgIHJldHVybiAoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSA8PSBpbnQob3RoZXIuX2lwKSA8PQorICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykpCisKKyAgICBkZWYgb3ZlcmxhcHMoc2VsZiwgb3RoZXIpOgorICAgICAgICAiIiJUZWxsIGlmIHNlbGYgaXMgcGFydGx5IGNvbnRhaW5lZCBpbiBvdGhlci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYubmV0d29ya19hZGRyZXNzIGluIG90aGVyIG9yICgKKyAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MgaW4gb3RoZXIgb3IgKAorICAgICAgICAgICAgICAgIG90aGVyLm5ldHdvcmtfYWRkcmVzcyBpbiBzZWxmIG9yICgKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIuYnJvYWRjYXN0X2FkZHJlc3MgaW4gc2VsZikpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJyb2FkY2FzdF9hZGRyZXNzKHNlbGYpOgorICAgICAgICB4ID0gc2VsZi5fY2FjaGUuZ2V0KCdicm9hZGNhc3RfYWRkcmVzcycpCisgICAgICAgIGlmIHggaXMgTm9uZToKKyAgICAgICAgICAgIHggPSBzZWxmLl9hZGRyZXNzX2NsYXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuaG9zdG1hc2spKQorICAgICAgICAgICAgc2VsZi5fY2FjaGVbJ2Jyb2FkY2FzdF9hZGRyZXNzJ10gPSB4CisgICAgICAgIHJldHVybiB4CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaG9zdG1hc2soc2VsZik6CisgICAgICAgIHggPSBzZWxmLl9jYWNoZS5nZXQoJ2hvc3RtYXNrJykKKyAgICAgICAgaWYgeCBpcyBOb25lOgorICAgICAgICAgICAgeCA9IHNlbGYuX2FkZHJlc3NfY2xhc3MoaW50KHNlbGYubmV0bWFzaykgXiBzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgIHNlbGYuX2NhY2hlWydob3N0bWFzayddID0geAorICAgICAgICByZXR1cm4geAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVkJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywgc2VsZi5fcHJlZml4bGVuKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfbmV0bWFzayhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsIHNlbGYubmV0bWFzaykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX2hvc3RtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywgc2VsZi5ob3N0bWFzaykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBudW1fYWRkcmVzc2VzKHNlbGYpOgorICAgICAgICAiIiJOdW1iZXIgb2YgaG9zdHMgaW4gdGhlIGN1cnJlbnQgc3VibmV0LiIiIgorICAgICAgICByZXR1cm4gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpIC0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSArIDEKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfYWRkcmVzc19jbGFzcyhzZWxmKToKKyAgICAgICAgIyBSZXR1cm5pbmcgYmFyZSBhZGRyZXNzIG9iamVjdHMgKHJhdGhlciB0aGFuIGludGVyZmFjZXMpIGFsbG93cyBmb3IKKyAgICAgICAgIyBtb3JlIGNvbnNpc3RlbnQgYmVoYXZpb3VyIGFjcm9zcyB0aGUgbmV0d29yayBhZGRyZXNzLCBicm9hZGNhc3QKKyAgICAgICAgIyBhZGRyZXNzIGFuZCBpbmRpdmlkdWFsIGhvc3QgYWRkcmVzc2VzLgorICAgICAgICBtc2cgPSAnJTIwMHMgaGFzIG5vIGFzc29jaWF0ZWQgYWRkcmVzcyBjbGFzcycgJSAodHlwZShzZWxmKSwpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IobXNnKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHByZWZpeGxlbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ByZWZpeGxlbgorCisgICAgZGVmIGFkZHJlc3NfZXhjbHVkZShzZWxmLCBvdGhlcik6CisgICAgICAgICIiIlJlbW92ZSBhbiBhZGRyZXNzIGZyb20gYSBsYXJnZXIgYmxvY2suCisKKyAgICAgICAgRm9yIGV4YW1wbGU6CisKKyAgICAgICAgICAgIGFkZHIxID0gaXBfbmV0d29yaygnMTkyLjAuMi4wLzI4JykKKyAgICAgICAgICAgIGFkZHIyID0gaXBfbmV0d29yaygnMTkyLjAuMi4xLzMyJykKKyAgICAgICAgICAgIGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyMikgPQorICAgICAgICAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzMyJyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjIvMzEnKSwKKyAgICAgICAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi40LzMwJyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjgvMjknKV0KKworICAgICAgICBvciBJUHY2OgorCisgICAgICAgICAgICBhZGRyMSA9IGlwX25ldHdvcmsoJzIwMDE6ZGI4OjoxLzMyJykKKyAgICAgICAgICAgIGFkZHIyID0gaXBfbmV0d29yaygnMjAwMTpkYjg6OjEvMTI4JykKKyAgICAgICAgICAgIGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyMikgPQorICAgICAgICAgICAgICAgIFtpcF9uZXR3b3JrKCcyMDAxOmRiODo6MS8xMjgnKSwKKyAgICAgICAgICAgICAgICBpcF9uZXR3b3JrKCcyMDAxOmRiODo6Mi8xMjcnKSwKKyAgICAgICAgICAgICAgICBpcF9uZXR3b3JrKCcyMDAxOmRiODo6NC8xMjYnKSwKKyAgICAgICAgICAgICAgICBpcF9uZXR3b3JrKCcyMDAxOmRiODo6OC8xMjUnKSwKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICBpcF9uZXR3b3JrKCcyMDAxOmRiODo4MDAwOjovMzMnKV0KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgb3RoZXI6IEFuIElQdjROZXR3b3JrIG9yIElQdjZOZXR3b3JrIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBpdGVyYXRvciBvZiB0aGUgdGhlIElQdig0fDYpTmV0d29yayBvYmplY3RzIHdoaWNoIGlzIHNlbGYKKyAgICAgICAgICAgIG1pbnVzIG90aGVyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFR5cGVFcnJvcjogSWYgc2VsZiBhbmQgb3RoZXIgYXJlIG9mIGRpZmZmZXJpbmcgYWRkcmVzcworICAgICAgICAgICAgICB2ZXJzaW9ucywgb3IgaWYgb3RoZXIgaXMgbm90IGEgbmV0d29yayBvYmplY3QuCisgICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiBvdGhlciBpcyBub3QgY29tcGxldGVseSBjb250YWluZWQgYnkgc2VsZi4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX3ZlcnNpb24gPT0gb3RoZXIuX3ZlcnNpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlTmV0d29yayk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGlzIG5vdCBhIG5ldHdvcmsgb2JqZWN0IiAlIG90aGVyKQorCisgICAgICAgIGlmIG5vdCAob3RoZXIubmV0d29ya19hZGRyZXNzID49IHNlbGYubmV0d29ya19hZGRyZXNzIGFuZAorICAgICAgICAgICAgICAgIG90aGVyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXMgbm90IGNvbnRhaW5lZCBpbiAlcycgJSAob3RoZXIsIHNlbGYpKQorICAgICAgICBpZiBvdGhlciA9PSBzZWxmOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgICMgTWFrZSBzdXJlIHdlJ3JlIGNvbXBhcmluZyB0aGUgbmV0d29yayBvZiBvdGhlci4KKyAgICAgICAgb3RoZXIgPSBvdGhlci5fX2NsYXNzX18oJyVzLyVzJyAlIChvdGhlci5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIucHJlZml4bGVuKSkKKworICAgICAgICBzMSwgczIgPSBzZWxmLnN1Ym5ldHMoKQorICAgICAgICB3aGlsZSBzMSAhPSBvdGhlciBhbmQgczIgIT0gb3RoZXI6CisgICAgICAgICAgICBpZiAob3RoZXIubmV0d29ya19hZGRyZXNzID49IHMxLm5ldHdvcmtfYWRkcmVzcyBhbmQKKyAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyA8PSBzMS5icm9hZGNhc3RfYWRkcmVzcyk6CisgICAgICAgICAgICAgICAgeWllbGQgczIKKyAgICAgICAgICAgICAgICBzMSwgczIgPSBzMS5zdWJuZXRzKCkKKyAgICAgICAgICAgIGVsaWYgKG90aGVyLm5ldHdvcmtfYWRkcmVzcyA+PSBzMi5uZXR3b3JrX2FkZHJlc3MgYW5kCisgICAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyA8PSBzMi5icm9hZGNhc3RfYWRkcmVzcyk6CisgICAgICAgICAgICAgICAgeWllbGQgczEKKyAgICAgICAgICAgICAgICBzMSwgczIgPSBzMi5zdWJuZXRzKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZiB3ZSBnb3QgaGVyZSwgdGhlcmUncyBhIGJ1ZyBzb21ld2hlcmUuCisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ0Vycm9yIHBlcmZvcm1pbmcgZXhjbHVzaW9uOiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3MxOiAlcyBzMjogJXMgb3RoZXI6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMxLCBzMiwgb3RoZXIpKQorICAgICAgICBpZiBzMSA9PSBvdGhlcjoKKyAgICAgICAgICAgIHlpZWxkIHMyCisgICAgICAgIGVsaWYgczIgPT0gb3RoZXI6CisgICAgICAgICAgICB5aWVsZCBzMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiB3ZSBnb3QgaGVyZSwgdGhlcmUncyBhIGJ1ZyBzb21ld2hlcmUuCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignRXJyb3IgcGVyZm9ybWluZyBleGNsdXNpb246ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzMTogJXMgczI6ICVzIG90aGVyOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMxLCBzMiwgb3RoZXIpKQorCisgICAgZGVmIGNvbXBhcmVfbmV0d29ya3Moc2VsZiwgb3RoZXIpOgorICAgICAgICAiIiJDb21wYXJlIHR3byBJUCBvYmplY3RzLgorCisgICAgICAgIFRoaXMgaXMgb25seSBjb25jZXJuZWQgYWJvdXQgdGhlIGNvbXBhcmlzb24gb2YgdGhlIGludGVnZXIKKyAgICAgICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5ldHdvcmsgYWRkcmVzc2VzLiAgVGhpcyBtZWFucyB0aGF0IHRoZQorICAgICAgICBob3N0IGJpdHMgYXJlbid0IGNvbnNpZGVyZWQgYXQgYWxsIGluIHRoaXMgbWV0aG9kLiAgSWYgeW91IHdhbnQKKyAgICAgICAgdG8gY29tcGFyZSBob3N0IGJpdHMsIHlvdSBjYW4gZWFzaWx5IGVub3VnaCBkbyBhCisgICAgICAgICdIb3N0QS5faXAgPCBIb3N0Qi5faXAnCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG90aGVyOiBBbiBJUCBvYmplY3QuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIElmIHRoZSBJUCB2ZXJzaW9ucyBvZiBzZWxmIGFuZCBvdGhlciBhcmUgdGhlIHNhbWUsIHJldHVybnM6CisKKyAgICAgICAgICAgIC0xIGlmIHNlbGYgPCBvdGhlcjoKKyAgICAgICAgICAgICAgZWc6IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSA8IElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpCisgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MTAwMC8xMjQnKSA8CisgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjIwMDAvMTI0JykKKyAgICAgICAgICAgIDAgaWYgc2VsZiA9PSBvdGhlcgorICAgICAgICAgICAgICBlZzogSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpID09IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvMTI0JykgPT0KKyAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MTAwMC8xMjQnKQorICAgICAgICAgICAgMSBpZiBzZWxmID4gb3RoZXIKKyAgICAgICAgICAgICAgZWc6IElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpID4gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpCisgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjIwMDAvMTI0JykgPgorICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MTAwMC8xMjQnKQorCisgICAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgICBUeXBlRXJyb3IgaWYgdGhlIElQIHZlcnNpb25zIGFyZSBkaWZmZXJlbnQuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgZG9lcyB0aGlzIG5lZWQgdG8gcmFpc2UgYSBWYWx1ZUVycm9yPworICAgICAgICBpZiBzZWxmLl92ZXJzaW9uICE9IG90aGVyLl92ZXJzaW9uOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB0eXBlJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICAjIHNlbGYuX3ZlcnNpb24gPT0gb3RoZXIuX3ZlcnNpb24gYmVsb3cgaGVyZToKKyAgICAgICAgaWYgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPCBvdGhlci5uZXR3b3JrX2FkZHJlc3M6CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgaWYgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPiBvdGhlci5uZXR3b3JrX2FkZHJlc3M6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAjIHNlbGYubmV0d29ya19hZGRyZXNzID09IG90aGVyLm5ldHdvcmtfYWRkcmVzcyBiZWxvdyBoZXJlOgorICAgICAgICBpZiBzZWxmLm5ldG1hc2sgPCBvdGhlci5uZXRtYXNrOgorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIGlmIHNlbGYubmV0bWFzayA+IG90aGVyLm5ldG1hc2s6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF9nZXRfbmV0d29ya3Nfa2V5KHNlbGYpOgorICAgICAgICAiIiJOZXR3b3JrLW9ubHkga2V5IGZ1bmN0aW9uLgorCisgICAgICAgIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgaWRlbnRpZmllcyB0aGlzIGFkZHJlc3MnIG5ldHdvcmsgYW5kCisgICAgICAgIG5ldG1hc2suIFRoaXMgZnVuY3Rpb24gaXMgYSBzdWl0YWJsZSAia2V5IiBhcmd1bWVudCBmb3Igc29ydGVkKCkKKyAgICAgICAgYW5kIGxpc3Quc29ydCgpLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYuX3ZlcnNpb24sIHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLm5ldG1hc2spCisKKyAgICBkZWYgc3VibmV0cyhzZWxmLCBwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpOgorICAgICAgICAiIiJUaGUgc3VibmV0cyB3aGljaCBqb2luIHRvIG1ha2UgdGhlIGN1cnJlbnQgc3VibmV0LgorCisgICAgICAgIEluIHRoZSBjYXNlIHRoYXQgc2VsZiBjb250YWlucyBvbmx5IG9uZSBJUAorICAgICAgICAoc2VsZi5fcHJlZml4bGVuID09IDMyIGZvciBJUHY0IG9yIHNlbGYuX3ByZWZpeGxlbiA9PSAxMjgKKyAgICAgICAgZm9yIElQdjYpLCB5aWVsZCBhbiBpdGVyYXRvciB3aXRoIGp1c3Qgb3Vyc2VsZi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcHJlZml4bGVuX2RpZmY6IEFuIGludGVnZXIsIHRoZSBhbW91bnQgdGhlIHByZWZpeCBsZW5ndGgKKyAgICAgICAgICAgICAgc2hvdWxkIGJlIGluY3JlYXNlZCBieS4gVGhpcyBzaG91bGQgbm90IGJlIHNldCBpZgorICAgICAgICAgICAgICBuZXdfcHJlZml4IGlzIGFsc28gc2V0LgorICAgICAgICAgICAgbmV3X3ByZWZpeDogVGhlIGRlc2lyZWQgbmV3IHByZWZpeCBsZW5ndGguIFRoaXMgbXVzdCBiZSBhCisgICAgICAgICAgICAgIGxhcmdlciBudW1iZXIgKHNtYWxsZXIgcHJlZml4KSB0aGFuIHRoZSBleGlzdGluZyBwcmVmaXguCisgICAgICAgICAgICAgIFRoaXMgc2hvdWxkIG5vdCBiZSBzZXQgaWYgcHJlZml4bGVuX2RpZmYgaXMgYWxzbyBzZXQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGl0ZXJhdG9yIG9mIElQdig0fDYpIG9iamVjdHMuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVmFsdWVFcnJvcjogVGhlIHByZWZpeGxlbl9kaWZmIGlzIHRvbyBzbWFsbCBvciB0b28gbGFyZ2UuCisgICAgICAgICAgICAgICAgT1IKKyAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmIGFuZCBuZXdfcHJlZml4IGFyZSBib3RoIHNldCBvciBuZXdfcHJlZml4CisgICAgICAgICAgICAgIGlzIGEgc21hbGxlciBudW1iZXIgdGhhbiB0aGUgY3VycmVudCBwcmVmaXggKHNtYWxsZXIKKyAgICAgICAgICAgICAgbnVtYmVyIG1lYW5zIGEgbGFyZ2VyIG5ldHdvcmspCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3ByZWZpeGxlbiA9PSBzZWxmLl9tYXhfcHJlZml4bGVuOgorICAgICAgICAgICAgeWllbGQgc2VsZgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbmV3X3ByZWZpeCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5ld19wcmVmaXggPCBzZWxmLl9wcmVmaXhsZW46CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbmV3IHByZWZpeCBtdXN0IGJlIGxvbmdlcicpCisgICAgICAgICAgICBpZiBwcmVmaXhsZW5fZGlmZiAhPSAxOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2Nhbm5vdCBzZXQgcHJlZml4bGVuX2RpZmYgYW5kIG5ld19wcmVmaXgnKQorICAgICAgICAgICAgcHJlZml4bGVuX2RpZmYgPSBuZXdfcHJlZml4IC0gc2VsZi5fcHJlZml4bGVuCisKKyAgICAgICAgaWYgcHJlZml4bGVuX2RpZmYgPCAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigncHJlZml4IGxlbmd0aCBkaWZmIG11c3QgYmUgPiAwJykKKyAgICAgICAgbmV3X3ByZWZpeGxlbiA9IHNlbGYuX3ByZWZpeGxlbiArIHByZWZpeGxlbl9kaWZmCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzX3ZhbGlkX25ldG1hc2soc3RyKG5ld19wcmVmaXhsZW4pKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgJ3ByZWZpeCBsZW5ndGggZGlmZiAlZCBpcyBpbnZhbGlkIGZvciBuZXRibG9jayAlcycgJSAoCisgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXhsZW4sIHNlbGYpKQorCisgICAgICAgIGZpcnN0ID0gc2VsZi5fX2NsYXNzX18oJyVzLyVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuICsgcHJlZml4bGVuX2RpZmYpKQorCisgICAgICAgIHlpZWxkIGZpcnN0CisgICAgICAgIGN1cnJlbnQgPSBmaXJzdAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgYnJvYWRjYXN0ID0gY3VycmVudC5icm9hZGNhc3RfYWRkcmVzcworICAgICAgICAgICAgaWYgYnJvYWRjYXN0ID09IHNlbGYuYnJvYWRjYXN0X2FkZHJlc3M6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBuZXdfYWRkciA9IHNlbGYuX2FkZHJlc3NfY2xhc3MoaW50KGJyb2FkY2FzdCkgKyAxKQorICAgICAgICAgICAgY3VycmVudCA9IHNlbGYuX19jbGFzc19fKCclcy8lcycgJSAobmV3X2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4bGVuKSkKKworICAgICAgICAgICAgeWllbGQgY3VycmVudAorCisgICAgZGVmIHN1cGVybmV0KHNlbGYsIHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSk6CisgICAgICAgICIiIlRoZSBzdXBlcm5ldCBjb250YWluaW5nIHRoZSBjdXJyZW50IG5ldHdvcmsuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmOiBBbiBpbnRlZ2VyLCB0aGUgYW1vdW50IHRoZSBwcmVmaXggbGVuZ3RoIG9mCisgICAgICAgICAgICAgIHRoZSBuZXR3b3JrIHNob3VsZCBiZSBkZWNyZWFzZWQgYnkuICBGb3IgZXhhbXBsZSwgZ2l2ZW4gYQorICAgICAgICAgICAgICAvMjQgbmV0d29yayBhbmQgYSBwcmVmaXhsZW5fZGlmZiBvZiAzLCBhIHN1cGVybmV0IHdpdGggYQorICAgICAgICAgICAgICAvMjEgbmV0bWFzayBpcyByZXR1cm5lZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gSVB2NCBuZXR3b3JrIG9iamVjdC4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmIDwgMC4gSS5lLiwgeW91IGhhdmUKKyAgICAgICAgICAgICAgYSBuZWdhdGl2ZSBwcmVmaXggbGVuZ3RoLgorICAgICAgICAgICAgICAgIE9SCisgICAgICAgICAgICBJZiBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCBhcmUgYm90aCBzZXQgb3IgbmV3X3ByZWZpeCBpcyBhCisgICAgICAgICAgICAgIGxhcmdlciBudW1iZXIgdGhhbiB0aGUgY3VycmVudCBwcmVmaXggKGxhcmdlciBudW1iZXIgbWVhbnMgYQorICAgICAgICAgICAgICBzbWFsbGVyIG5ldHdvcmspCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3ByZWZpeGxlbiA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBpZiBuZXdfcHJlZml4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbmV3X3ByZWZpeCA+IHNlbGYuX3ByZWZpeGxlbjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduZXcgcHJlZml4IG11c3QgYmUgc2hvcnRlcicpCisgICAgICAgICAgICBpZiBwcmVmaXhsZW5fZGlmZiAhPSAxOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2Nhbm5vdCBzZXQgcHJlZml4bGVuX2RpZmYgYW5kIG5ld19wcmVmaXgnKQorICAgICAgICAgICAgcHJlZml4bGVuX2RpZmYgPSBzZWxmLl9wcmVmaXhsZW4gLSBuZXdfcHJlZml4CisKKyAgICAgICAgaWYgc2VsZi5wcmVmaXhsZW4gLSBwcmVmaXhsZW5fZGlmZiA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICdjdXJyZW50IHByZWZpeGxlbiBpcyAlZCwgY2Fubm90IGhhdmUgYSBwcmVmaXhsZW5fZGlmZiBvZiAlZCcgJQorICAgICAgICAgICAgICAgIChzZWxmLnByZWZpeGxlbiwgcHJlZml4bGVuX2RpZmYpKQorICAgICAgICAjIFRPRE8gKHBtb29keSk6IG9wdGltaXplIHRoaXMuCisgICAgICAgIHQgPSBzZWxmLl9fY2xhc3NfXygnJXMvJWQnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpCisgICAgICAgIHJldHVybiB0Ll9fY2xhc3NfXygnJXMvJWQnICUgKHQubmV0d29ya19hZGRyZXNzLCB0LnByZWZpeGxlbikpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbXVsdGljYXN0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBtdWx0aWNhc3QgdXNlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBtdWx0aWNhc3QgYWRkcmVzcy4KKyAgICAgICAgICAgIFNlZSBSRkMgMjM3MyAyLjcgZm9yIGRldGFpbHMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfbXVsdGljYXN0IGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfbXVsdGljYXN0KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Jlc2VydmVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIG90aGVyd2lzZSBJRVRGIHJlc2VydmVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgd2l0aGluIG9uZSBvZiB0aGUKKyAgICAgICAgICAgIHJlc2VydmVkIElQdjYgTmV0d29yayByYW5nZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfcmVzZXJ2ZWQgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19yZXNlcnZlZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19saW5rX2xvY2FsKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBsaW5rLWxvY2FsLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyA0MjkxLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX2xpbmtfbG9jYWwgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19saW5rX2xvY2FsKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3ByaXZhdGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGFsbG9jYXRlZCBmb3IgcHJpdmF0ZSBuZXR3b3Jrcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgNDE5My4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19wcml2YXRlIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfcHJpdmF0ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc191bnNwZWNpZmllZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyB1bnNwZWNpZmllZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoaXMgaXMgdGhlIHVuc3BlY2lmaWVkIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgUkZDIDIzNzMgMi41LjIuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfdW5zcGVjaWZpZWQgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc191bnNwZWNpZmllZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19sb29wYmFjayhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgUkZDIDIzNzMgMi41LjMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfbG9vcGJhY2sgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19sb29wYmFjaykKKworCitjbGFzcyBfQmFzZVY0OgorCisgICAgIiIiQmFzZSBJUHY0IG9iamVjdC4KKworICAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCBieSBJUHY0IG9iamVjdHMgaW4gYm90aCBzaW5nbGUgSVAKKyAgICBhZGRyZXNzZXMgYW5kIG5ldHdvcmtzLgorCisgICAgIiIiCisKKyAgICAjIEVxdWl2YWxlbnQgdG8gMjU1LjI1NS4yNTUuMjU1IG9yIDMyIGJpdHMgb2YgMSdzLgorICAgIF9BTExfT05FUyA9ICgyKipJUFY0TEVOR1RIKSAtIDEKKyAgICBfREVDSU1BTF9ESUdJVFMgPSBmcm96ZW5zZXQoJzAxMjM0NTY3ODknKQorCisgICAgIyB0aGUgdmFsaWQgb2N0ZXRzIGZvciBob3N0IGFuZCBuZXRtYXNrcy4gb25seSB1c2VmdWwgZm9yIElQdjQuCisgICAgX3ZhbGlkX21hc2tfb2N0ZXRzID0gZnJvemVuc2V0KCgyNTUsIDI1NCwgMjUyLCAyNDgsIDI0MCwgMjI0LCAxOTIsIDEyOCwgMCkpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSA0CisgICAgICAgIHNlbGYuX21heF9wcmVmaXhsZW4gPSBJUFY0TEVOR1RICisKKyAgICBkZWYgX2V4cGxvZGVfc2hvcnRoYW5kX2lwX3N0cmluZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmKQorCisgICAgZGVmIF9pcF9pbnRfZnJvbV9zdHJpbmcoc2VsZiwgaXBfc3RyKToKKyAgICAgICAgIiIiVHVybiB0aGUgZ2l2ZW4gSVAgc3RyaW5nIGludG8gYW4gaW50ZWdlciBmb3IgY29tcGFyaXNvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfc3RyOiBBIHN0cmluZywgdGhlIElQIGlwX3N0ci4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhlIElQIGlwX3N0ciBhcyBhbiBpbnRlZ2VyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBpZiBpcF9zdHIgaXNuJ3QgYSB2YWxpZCBJUHY0IEFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpcF9zdHI6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcignQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHknKQorCisgICAgICAgIG9jdGV0cyA9IGlwX3N0ci5zcGxpdCgnLicpCisgICAgICAgIGlmIGxlbihvY3RldHMpICE9IDQ6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJXIiICUgaXBfc3RyKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhtYXAoc2VsZi5fcGFyc2Vfb2N0ZXQsIG9jdGV0cyksICdiaWcnKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiJXMgaW4gJXIiICUgKGV4YywgaXBfc3RyKSkgZnJvbSBOb25lCisKKyAgICBkZWYgX3BhcnNlX29jdGV0KHNlbGYsIG9jdGV0X3N0cik6CisgICAgICAgICIiIkNvbnZlcnQgYSBkZWNpbWFsIG9jdGV0IGludG8gYW4gaW50ZWdlci4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgb2N0ZXRfc3RyOiBBIHN0cmluZywgdGhlIG51bWJlciB0byBwYXJzZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhlIG9jdGV0IGFzIGFuIGludGVnZXIuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlIG9jdGV0IGlzbid0IHN0cmljdGx5IGEgZGVjaW1hbCBmcm9tIFswLi4yNTVdLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qgb2N0ZXRfc3RyOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRW1wdHkgb2N0ZXQgbm90IHBlcm1pdHRlZCIpCisgICAgICAgICMgV2hpdGVsaXN0IHRoZSBjaGFyYWN0ZXJzLCBzaW5jZSBpbnQoKSBhbGxvd3MgYSBsb3Qgb2YgYml6YXJyZSBzdHVmZi4KKyAgICAgICAgaWYgbm90IHNlbGYuX0RFQ0lNQUxfRElHSVRTLmlzc3VwZXJzZXQob2N0ZXRfc3RyKToKKyAgICAgICAgICAgIG1zZyA9ICJPbmx5IGRlY2ltYWwgZGlnaXRzIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnICUgb2N0ZXRfc3RyKQorICAgICAgICAjIFdlIGRvIHRoZSBsZW5ndGggY2hlY2sgc2Vjb25kLCBzaW5jZSB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgZXJyb3IKKyAgICAgICAgIyBpcyBsaWtlbHkgdG8gYmUgbW9yZSBpbmZvcm1hdGl2ZSBmb3IgdGhlIHVzZXIKKyAgICAgICAgaWYgbGVuKG9jdGV0X3N0cikgPiAzOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgMyBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnICUgb2N0ZXRfc3RyKQorICAgICAgICAjIENvbnZlcnQgdG8gaW50ZWdlciAod2Uga25vdyBkaWdpdHMgYXJlIGxlZ2FsKQorICAgICAgICBvY3RldF9pbnQgPSBpbnQob2N0ZXRfc3RyLCAxMCkKKyAgICAgICAgIyBBbnkgb2N0ZXRzIHRoYXQgbG9vayBsaWtlIHRoZXkgKm1pZ2h0KiBiZSB3cml0dGVuIGluIG9jdGFsLAorICAgICAgICAjIGFuZCB3aGljaCBkb24ndCBsb29rIGV4YWN0bHkgdGhlIHNhbWUgaW4gYm90aCBvY3RhbCBhbmQKKyAgICAgICAgIyBkZWNpbWFsIGFyZSByZWplY3RlZCBhcyBhbWJpZ3VvdXMKKyAgICAgICAgaWYgb2N0ZXRfaW50ID4gNyBhbmQgb2N0ZXRfc3RyWzBdID09ICcwJzoKKyAgICAgICAgICAgIG1zZyA9ICJBbWJpZ3VvdXMgKG9jdGFsL2RlY2ltYWwpIHZhbHVlIGluICVyIG5vdCBwZXJtaXR0ZWQiCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIG9jdGV0X3N0cikKKyAgICAgICAgaWYgb2N0ZXRfaW50ID4gMjU1OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT2N0ZXQgJWQgKD4gMjU1KSBub3QgcGVybWl0dGVkIiAlIG9jdGV0X2ludCkKKyAgICAgICAgcmV0dXJuIG9jdGV0X2ludAorCisgICAgZGVmIF9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50KToKKyAgICAgICAgIiIiVHVybnMgYSAzMi1iaXQgaW50ZWdlciBpbnRvIGRvdHRlZCBkZWNpbWFsIG5vdGF0aW9uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9pbnQ6IEFuIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUaGUgSVAgYWRkcmVzcyBhcyBhIHN0cmluZyBpbiBkb3R0ZWQgZGVjaW1hbCBub3RhdGlvbi4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICcuJy5qb2luKG1hcChzdHIsIGlwX2ludC50b19ieXRlcyg0LCAnYmlnJykpKQorCisgICAgZGVmIF9pc192YWxpZF9uZXRtYXNrKHNlbGYsIG5ldG1hc2spOgorICAgICAgICAiIiJWZXJpZnkgdGhhdCB0aGUgbmV0bWFzayBpcyB2YWxpZC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgbmV0bWFzazogQSBzdHJpbmcsIGVpdGhlciBhIHByZWZpeCBvciBkb3R0ZWQgZGVjaW1hbAorICAgICAgICAgICAgICBuZXRtYXNrLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIHByZWZpeCByZXByZXNlbnRzIGEgdmFsaWQgSVB2NAorICAgICAgICAgICAgbmV0bWFzay4KKworICAgICAgICAiIiIKKyAgICAgICAgbWFzayA9IG5ldG1hc2suc3BsaXQoJy4nKQorICAgICAgICBpZiBsZW4obWFzaykgPT0gNDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgeCBpbiBtYXNrOgorICAgICAgICAgICAgICAgICAgICBpZiBpbnQoeCkgbm90IGluIHNlbGYuX3ZhbGlkX21hc2tfb2N0ZXRzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAjIEZvdW5kIHNvbWV0aGluZyB0aGF0IGlzbid0IGFuIGludGVnZXIgb3IgaXNuJ3QgdmFsaWQKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGZvciBpZHgsIHkgaW4gZW51bWVyYXRlKG1hc2spOgorICAgICAgICAgICAgICAgIGlmIGlkeCA+IDAgYW5kIHkgPiBtYXNrW2lkeCAtIDFdOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5ldG1hc2sgPSBpbnQobmV0bWFzaykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIDAgPD0gbmV0bWFzayA8PSBzZWxmLl9tYXhfcHJlZml4bGVuCisKKyAgICBkZWYgX2lzX2hvc3RtYXNrKHNlbGYsIGlwX3N0cik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIElQIHN0cmluZyBpcyBhIGhvc3RtYXNrIChyYXRoZXIgdGhhbiBhIG5ldG1hc2spLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9zdHI6IEEgc3RyaW5nLCB0aGUgcG90ZW50aWFsIGhvc3RtYXNrLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIElQIHN0cmluZyBpcyBhIGhvc3RtYXNrLgorCisgICAgICAgICIiIgorICAgICAgICBiaXRzID0gaXBfc3RyLnNwbGl0KCcuJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGFydHMgPSBbeCBmb3IgeCBpbiBtYXAoaW50LCBiaXRzKSBpZiB4IGluIHNlbGYuX3ZhbGlkX21hc2tfb2N0ZXRzXQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBsZW4ocGFydHMpICE9IGxlbihiaXRzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBwYXJ0c1swXSA8IHBhcnRzWy0xXToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1heF9wcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tYXhfcHJlZml4bGVuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KKworCitjbGFzcyBJUHY0QWRkcmVzcyhfQmFzZVY0LCBfQmFzZUFkZHJlc3MpOgorCisgICAgIiIiUmVwcmVzZW50IGFuZCBtYW5pcHVsYXRlIHNpbmdsZSBJUHY0IEFkZHJlc3Nlcy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKworICAgICAgICAiIiIKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUAorCisgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgYW4gaW50ZWdlciBjYW4gYmUgcGFzc2VkLCBzbworICAgICAgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykgPT0gSVB2NEFkZHJlc3MoMzIyMTIyNTk4NSkuCisgICAgICAgICAgICAgIG9yLCBtb3JlIGdlbmVyYWxseQorICAgICAgICAgICAgICBJUHY0QWRkcmVzcyhpbnQoSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpKSkgPT0KKyAgICAgICAgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgaXBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NCBhZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBfQmFzZUFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgX0Jhc2VWNC5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorCisgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW50X2FkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX2lwID0gYWRkcmVzcworICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcGFja2VkX2FkZHJlc3MoYWRkcmVzcywgNCkKKyAgICAgICAgICAgIHNlbGYuX2lwID0gaW50LmZyb21fYnl0ZXMoYWRkcmVzcywgJ2JpZycpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgorICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgc3RyaW5nLgorICAgICAgICBhZGRyX3N0ciA9IHN0cihhZGRyZXNzKQorICAgICAgICBzZWxmLl9pcCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyX3N0cikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYWNrZWQoc2VsZik6CisgICAgICAgICIiIlRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBhZGRyZXNzLiIiIgorICAgICAgICByZXR1cm4gdjRfaW50X3RvX3BhY2tlZChzZWxmLl9pcCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19yZXNlcnZlZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBvdGhlcndpc2UgSUVURiByZXNlcnZlZC4KKworICAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgd2l0aGluIHRoZQorICAgICAgICAgICAgIHJlc2VydmVkIElQdjQgTmV0d29yayByYW5nZS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmVzZXJ2ZWRfbmV0d29yayA9IElQdjROZXR3b3JrKCcyNDAuMC4wLjAvNCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIHJlc2VydmVkX25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19wcml2YXRlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDE5MTguCisKKyAgICAgICAgIiIiCisgICAgICAgIHByaXZhdGVfMTAgPSBJUHY0TmV0d29yaygnMTAuMC4wLjAvOCcpCisgICAgICAgIHByaXZhdGVfMTcyID0gSVB2NE5ldHdvcmsoJzE3Mi4xNi4wLjAvMTInKQorICAgICAgICBwcml2YXRlXzE5MiA9IElQdjROZXR3b3JrKCcxOTIuMTY4LjAuMC8xNicpCisgICAgICAgIHJldHVybiAoc2VsZiBpbiBwcml2YXRlXzEwIG9yCisgICAgICAgICAgICAgICAgc2VsZiBpbiBwcml2YXRlXzE3MiBvcgorICAgICAgICAgICAgICAgIHNlbGYgaW4gcHJpdmF0ZV8xOTIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbXVsdGljYXN0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBtdWx0aWNhc3QgdXNlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgbXVsdGljYXN0LgorICAgICAgICAgICAgU2VlIFJGQyAzMTcxIGZvciBkZXRhaWxzLgorCisgICAgICAgICIiIgorICAgICAgICBtdWx0aWNhc3RfbmV0d29yayA9IElQdjROZXR3b3JrKCcyMjQuMC4wLjAvNCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIG11bHRpY2FzdF9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgdW5zcGVjaWZpZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGlzIGlzIHRoZSB1bnNwZWNpZmllZCBhZGRyZXNzIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICAgIFJGQyA1NzM1IDMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHVuc3BlY2lmaWVkX2FkZHJlc3MgPSBJUHY0QWRkcmVzcygnMC4wLjAuMCcpCisgICAgICAgIHJldHVybiBzZWxmID09IHVuc3BlY2lmaWVkX2FkZHJlc3MKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19sb29wYmFjayhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIHBlciBSRkMgMzMzMC4KKworICAgICAgICAiIiIKKyAgICAgICAgbG9vcGJhY2tfbmV0d29yayA9IElQdjROZXR3b3JrKCcxMjcuMC4wLjAvOCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIGxvb3BiYWNrX25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19saW5rX2xvY2FsKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBsaW5rLWxvY2FsLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgbGluay1sb2NhbCBwZXIgUkZDIDM5MjcuCisKKyAgICAgICAgIiIiCisgICAgICAgIGxpbmtsb2NhbF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzE2OS4yNTQuMC4wLzE2JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gbGlua2xvY2FsX25ldHdvcmsKKworCitjbGFzcyBJUHY0SW50ZXJmYWNlKElQdjRBZGRyZXNzKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCAoYnl0ZXMsIGludCkpOgorICAgICAgICAgICAgSVB2NEFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYubmV0d29yayA9IElQdjROZXR3b3JrKHNlbGYuX2lwKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCisgICAgICAgIElQdjRBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJbMF0pCisKKyAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2NE5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PUZhbHNlKQorICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLm5ldHdvcmsuX3ByZWZpeGxlbgorCisgICAgICAgIHNlbGYubmV0bWFzayA9IHNlbGYubmV0d29yay5uZXRtYXNrCisgICAgICAgIHNlbGYuaG9zdG1hc2sgPSBzZWxmLm5ldHdvcmsuaG9zdG1hc2sKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVkJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmsucHJlZml4bGVuKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGFkZHJlc3NfZXF1YWwgPSBJUHY0QWRkcmVzcy5fX2VxX18oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIG5vdCBhZGRyZXNzX2VxdWFsIG9yIGFkZHJlc3NfZXF1YWwgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gYWRkcmVzc19lcXVhbAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrID09IG90aGVyLm5ldHdvcmsKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBBbiBpbnRlcmZhY2Ugd2l0aCBhbiBhc3NvY2lhdGVkIG5ldHdvcmsgaXMgTk9UIHRoZQorICAgICAgICAgICAgIyBzYW1lIGFzIGFuIHVuYXNzb2NpYXRlZCBhZGRyZXNzLiBUaGF0J3Mgd2h5IHRoZSBoYXNoCisgICAgICAgICAgICAjIHRha2VzIHRoZSBleHRyYSBpbmZvIGludG8gYWNjb3VudC4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGFkZHJlc3NfbGVzcyA9IElQdjRBZGRyZXNzLl9fbHRfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgYWRkcmVzc19sZXNzIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmsgPCBvdGhlci5uZXR3b3JrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgV2UgKmRvKiBhbGxvdyBhZGRyZXNzZXMgYW5kIGludGVyZmFjZXMgdG8gYmUgc29ydGVkLiBUaGUKKyAgICAgICAgICAgICMgdW5hc3NvY2lhdGVkIGFkZHJlc3MgaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gYWxsIGludGVyZmFjZXMuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwIF4gc2VsZi5fcHJlZml4bGVuIF4gaW50KHNlbGYubmV0d29yay5uZXR3b3JrX2FkZHJlc3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXAoc2VsZik6CisgICAgICAgIHJldHVybiBJUHY0QWRkcmVzcyhzZWxmLl9pcCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX3ByZWZpeGxlbihzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfbmV0bWFzayhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXRtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfaG9zdG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG9zdG1hc2spCisKKworY2xhc3MgSVB2NE5ldHdvcmsoX0Jhc2VWNCwgX0Jhc2VOZXR3b3JrKToKKworICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbmQgbWFuaXB1bGF0ZXMgMzItYml0IElQdjQgbmV0d29yayArIGFkZHJlc3Nlcy4uCisKKyAgICBBdHRyaWJ1dGVzOiBbZXhhbXBsZXMgZm9yIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjcnKV0KKyAgICAgICAgLm5ldHdvcmtfYWRkcmVzczogSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpCisgICAgICAgIC5ob3N0bWFzazogSVB2NEFkZHJlc3MoJzAuMC4wLjMxJykKKyAgICAgICAgLmJyb2FkY2FzdF9hZGRyZXNzOiBJUHY0QWRkcmVzcygnMTkyLjAuMi4zMicpCisgICAgICAgIC5uZXRtYXNrOiBJUHY0QWRkcmVzcygnMjU1LjI1NS4yNTUuMjI0JykKKyAgICAgICAgLnByZWZpeGxlbjogMjcKKworICAgICIiIgorICAgICMgQ2xhc3MgdG8gdXNlIHdoZW4gY3JlYXRpbmcgYWRkcmVzcyBvYmplY3RzCisgICAgX2FkZHJlc3NfY2xhc3MgPSBJUHY0QWRkcmVzcworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIHN0cmljdD1UcnVlKToKKworICAgICAgICAiIiJJbnN0YW50aWF0ZSBhIG5ldyBJUHY0IG5ldHdvcmsgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgSVAgWyYgbmV0d29ya10uCisgICAgICAgICAgICAgICcxOTIuMC4yLjAvMjQnCisgICAgICAgICAgICAgICcxOTIuMC4yLjAvMjU1LjI1NS4yNTUuMCcKKyAgICAgICAgICAgICAgJzE5Mi4wLjAuMi8wLjAuMC4yNTUnCisgICAgICAgICAgICAgIGFyZSBhbGwgZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGluIElQdjQuIFNpbWlsYXJseSwKKyAgICAgICAgICAgICAgJzE5Mi4wLjIuMScKKyAgICAgICAgICAgICAgJzE5Mi4wLjIuMS8yNTUuMjU1LjI1NS4yNTUnCisgICAgICAgICAgICAgICcxOTIuMC4yLjEvMzInCisgICAgICAgICAgICAgIGFyZSBhbHNvIGZ1bmN0aW9uYWx5IGVxdWl2YWxlbnQuIFRoYXQgaXMgdG8gc2F5LCBmYWlsaW5nIHRvCisgICAgICAgICAgICAgIHByb3ZpZGUgYSBzdWJuZXRtYXNrIHdpbGwgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgbWFzayBvZiAvMzIuCisKKyAgICAgICAgICAgICAgSWYgdGhlIG1hc2sgKHBvcnRpb24gYWZ0ZXIgdGhlIC8gaW4gdGhlIGFyZ3VtZW50KSBpcyBnaXZlbiBpbgorICAgICAgICAgICAgICBkb3R0ZWQgcXVhZCBmb3JtLCBpdCBpcyB0cmVhdGVkIGFzIGEgbmV0bWFzayBpZiBpdCBzdGFydHMgd2l0aCBhCisgICAgICAgICAgICAgIG5vbi16ZXJvIGZpZWxkIChlLmcuIC8yNTUuMC4wLjAgPT0gLzgpIGFuZCBhcyBhIGhvc3RtYXNrIGlmIGl0CisgICAgICAgICAgICAgIHN0YXJ0cyB3aXRoIGEgemVybyBmaWVsZCAoZS5nLiAwLjI1NS4yNTUuMjU1ID09IC84KSwgd2l0aCB0aGUKKyAgICAgICAgICAgICAgc2luZ2xlIGV4Y2VwdGlvbiBvZiBhbiBhbGwtemVybyBtYXNrIHdoaWNoIGlzIHRyZWF0ZWQgYXMgYQorICAgICAgICAgICAgICBuZXRtYXNrID09IC8wLiBJZiBubyBtYXNrIGlzIGdpdmVuLCBhIGRlZmF1bHQgb2YgLzMyIGlzIHVzZWQuCisKKyAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBhbiBpbnRlZ2VyIGNhbiBiZSBwYXNzZWQsIHNvCisgICAgICAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjEnKSA9PSBJUHY0TmV0d29yaygzMjIxMjI1OTg1KQorICAgICAgICAgICAgICBvciwgbW9yZSBnZW5lcmFsbHkKKyAgICAgICAgICAgICAgSVB2NEludGVyZmFjZShpbnQoSVB2NEludGVyZmFjZSgnMTkyLjAuMi4xJykpKSA9PQorICAgICAgICAgICAgICAgIElQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuMScpCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGlwYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjQgYWRkcmVzcy4KKyAgICAgICAgICAgIE5ldG1hc2tWYWx1ZUVycm9yOiBJZiB0aGUgbmV0bWFzayBpc24ndCB2YWxpZCBmb3IKKyAgICAgICAgICAgICAgYW4gSVB2NCBhZGRyZXNzLgorICAgICAgICAgICAgVmFsdWVFcnJvcjogSWYgc3RyaWN0IGlzIFRydWUgYW5kIGEgbmV0d29yayBhZGRyZXNzIGlzIG5vdAorICAgICAgICAgICAgICBzdXBwbGllZC4KKworICAgICAgICAiIiIKKworICAgICAgICBfQmFzZVY0Ll9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgIF9CYXNlTmV0d29yay5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorCisgICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcworICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKToKKyAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgI2ZpeG1lOiBhZGRyZXNzL25ldHdvcmsgdGVzdCBoZXJlCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKKyAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgI2ZpeG1lOiBhZGRyZXNzL25ldHdvcmsgdGVzdCBoZXJlLgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBBc3N1bWUgaW5wdXQgYXJndW1lbnQgdG8gYmUgc3RyaW5nIG9yIGFueSBvYmplY3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgIyB3aGljaCBjb252ZXJ0cyBpbnRvIGEgZm9ybWF0dGVkIElQIHByZWZpeCBzdHJpbmcuCisgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQorICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyWzBdKSkKKworICAgICAgICBpZiBsZW4oYWRkcikgPT0gMjoKKyAgICAgICAgICAgIG1hc2sgPSBhZGRyWzFdLnNwbGl0KCcuJykKKworICAgICAgICAgICAgaWYgbGVuKG1hc2spID09IDQ6CisgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGRvdHRlZCBkZWNpbWFsIG5ldG1hc2suCisgICAgICAgICAgICAgICAgaWYgc2VsZi5faXNfdmFsaWRfbmV0bWFzayhhZGRyWzFdKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJbMV0pKQorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5faXNfaG9zdG1hc2soYWRkclsxXSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJbMV0pIF4gc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTmV0bWFza1ZhbHVlRXJyb3IoJyVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2snCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWRkclsxXSkKKworICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX3ByZWZpeF9mcm9tX2lwX2ludChpbnQoc2VsZi5uZXRtYXNrKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGEgbmV0bWFzayBpbiBwcmVmaXggbGVuZ3RoIGZvcm0uCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX3ZhbGlkX25ldG1hc2soYWRkclsxXSk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yKCclciBpcyBub3QgYSB2YWxpZCBuZXRtYXNrJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGFkZHJbMV0pCisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gaW50KGFkZHJbMV0pCisgICAgICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4pKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KAorICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbikpCisKKyAgICAgICAgaWYgc3RyaWN0OgorICAgICAgICAgICAgaWYgKElQdjRBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJiBpbnQoc2VsZi5uZXRtYXNrKSkgIT0KKyAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXMgaGFzIGhvc3QgYml0cyBzZXQnICUgc2VsZikKKyAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5uZXRtYXNrKSkKKworICAgICAgICBpZiBzZWxmLl9wcmVmaXhsZW4gPT0gKHNlbGYuX21heF9wcmVmaXhsZW4gLSAxKToKKyAgICAgICAgICAgIHNlbGYuaG9zdHMgPSBzZWxmLl9faXRlcl9fCisKKworY2xhc3MgX0Jhc2VWNjoKKworICAgICIiIkJhc2UgSVB2NiBvYmplY3QuCisKKyAgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgYnkgSVB2NiBvYmplY3RzIGluIGJvdGggc2luZ2xlIElQCisgICAgYWRkcmVzc2VzIGFuZCBuZXR3b3Jrcy4KKworICAgICIiIgorCisgICAgX0FMTF9PTkVTID0gKDIqKklQVjZMRU5HVEgpIC0gMQorICAgIF9IRVhURVRfQ09VTlQgPSA4CisgICAgX0hFWF9ESUdJVFMgPSBmcm96ZW5zZXQoJzAxMjM0NTY3ODlBQkNERUZhYmNkZWYnKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBzZWxmLl92ZXJzaW9uID0gNgorICAgICAgICBzZWxmLl9tYXhfcHJlZml4bGVuID0gSVBWNkxFTkdUSAorCisgICAgZGVmIF9pcF9pbnRfZnJvbV9zdHJpbmcoc2VsZiwgaXBfc3RyKToKKyAgICAgICAgIiIiVHVybiBhbiBJUHY2IGlwX3N0ciBpbnRvIGFuIGludGVnZXIuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX3N0cjogQSBzdHJpbmcsIHRoZSBJUHY2IGlwX3N0ci4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gaW50LCB0aGUgSVB2NiBhZGRyZXNzCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IGlmIGlwX3N0ciBpc24ndCBhIHZhbGlkIElQdjYgQWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlwX3N0cjoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCdBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eScpCisKKyAgICAgICAgcGFydHMgPSBpcF9zdHIuc3BsaXQoJzonKQorCisgICAgICAgICMgQW4gSVB2NiBhZGRyZXNzIG5lZWRzIGF0IGxlYXN0IDIgY29sb25zICgzIHBhcnRzKS4KKyAgICAgICAgX21pbl9wYXJ0cyA9IDMKKyAgICAgICAgaWYgbGVuKHBhcnRzKSA8IF9taW5fcGFydHM6CisgICAgICAgICAgICBtc2cgPSAiQXQgbGVhc3QgJWQgcGFydHMgZXhwZWN0ZWQgaW4gJXIiICUgKF9taW5fcGFydHMsIGlwX3N0cikKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZykKKworICAgICAgICAjIElmIHRoZSBhZGRyZXNzIGhhcyBhbiBJUHY0LXN0eWxlIHN1ZmZpeCwgY29udmVydCBpdCB0byBoZXhhZGVjaW1hbC4KKyAgICAgICAgaWYgJy4nIGluIHBhcnRzWy0xXToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpcHY0X2ludCA9IElQdjRBZGRyZXNzKHBhcnRzLnBvcCgpKS5faXAKKyAgICAgICAgICAgIGV4Y2VwdCBBZGRyZXNzVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIiVzIGluICVyIiAlIChleGMsIGlwX3N0cikpIGZyb20gTm9uZQorICAgICAgICAgICAgcGFydHMuYXBwZW5kKCcleCcgJSAoKGlwdjRfaW50ID4+IDE2KSAmIDB4RkZGRikpCisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoJyV4JyAlIChpcHY0X2ludCAmIDB4RkZGRikpCisKKyAgICAgICAgIyBBbiBJUHY2IGFkZHJlc3MgY2FuJ3QgaGF2ZSBtb3JlIHRoYW4gOCBjb2xvbnMgKDkgcGFydHMpLgorICAgICAgICAjIFRoZSBleHRyYSBjb2xvbiBjb21lcyBmcm9tIHVzaW5nIHRoZSAiOjoiIG5vdGF0aW9uIGZvciBhIHNpbmdsZQorICAgICAgICAjIGxlYWRpbmcgb3IgdHJhaWxpbmcgemVybyBwYXJ0LgorICAgICAgICBfbWF4X3BhcnRzID0gc2VsZi5fSEVYVEVUX0NPVU5UICsgMQorICAgICAgICBpZiBsZW4ocGFydHMpID4gX21heF9wYXJ0czoKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0ICVkIGNvbG9ucyBwZXJtaXR0ZWQgaW4gJXIiICUgKF9tYXhfcGFydHMtMSwgaXBfc3RyKQorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnKQorCisgICAgICAgICMgRGlzcmVnYXJkaW5nIHRoZSBlbmRwb2ludHMsIGZpbmQgJzo6JyB3aXRoIG5vdGhpbmcgaW4gYmV0d2Vlbi4KKyAgICAgICAgIyBUaGlzIGluZGljYXRlcyB0aGF0IGEgcnVuIG9mIHplcm9lcyBoYXMgYmVlbiBza2lwcGVkLgorICAgICAgICBza2lwX2luZGV4ID0gTm9uZQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBsZW4ocGFydHMpIC0gMSk6CisgICAgICAgICAgICBpZiBub3QgcGFydHNbaV06CisgICAgICAgICAgICAgICAgaWYgc2tpcF9pbmRleCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBDYW4ndCBoYXZlIG1vcmUgdGhhbiBvbmUgJzo6JworICAgICAgICAgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCBvbmUgJzo6JyBwZXJtaXR0ZWQgaW4gJXIiICUgaXBfc3RyCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZykKKyAgICAgICAgICAgICAgICBza2lwX2luZGV4ID0gaQorCisgICAgICAgICMgcGFydHNfaGkgaXMgdGhlIG51bWJlciBvZiBwYXJ0cyB0byBjb3B5IGZyb20gYWJvdmUvYmVmb3JlIHRoZSAnOjonCisgICAgICAgICMgcGFydHNfbG8gaXMgdGhlIG51bWJlciBvZiBwYXJ0cyB0byBjb3B5IGZyb20gYmVsb3cvYWZ0ZXIgdGhlICc6OicKKyAgICAgICAgaWYgc2tpcF9pbmRleCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgSWYgd2UgZm91bmQgYSAnOjonLCB0aGVuIGNoZWNrIGlmIGl0IGFsc28gY292ZXJzIHRoZSBlbmRwb2ludHMuCisgICAgICAgICAgICBwYXJ0c19oaSA9IHNraXBfaW5kZXgKKyAgICAgICAgICAgIHBhcnRzX2xvID0gbGVuKHBhcnRzKSAtIHNraXBfaW5kZXggLSAxCisgICAgICAgICAgICBpZiBub3QgcGFydHNbMF06CisgICAgICAgICAgICAgICAgcGFydHNfaGkgLT0gMQorICAgICAgICAgICAgICAgIGlmIHBhcnRzX2hpOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAiTGVhZGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSBpcF9zdHIpICAjIF46IHJlcXVpcmVzIF46OgorICAgICAgICAgICAgaWYgbm90IHBhcnRzWy0xXToKKyAgICAgICAgICAgICAgICBwYXJ0c19sbyAtPSAxCisgICAgICAgICAgICAgICAgaWYgcGFydHNfbG86CisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJUcmFpbGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSBpcF9zdHIpICAjIDokIHJlcXVpcmVzIDo6JAorICAgICAgICAgICAgcGFydHNfc2tpcHBlZCA9IHNlbGYuX0hFWFRFVF9DT1VOVCAtIChwYXJ0c19oaSArIHBhcnRzX2xvKQorICAgICAgICAgICAgaWYgcGFydHNfc2tpcHBlZCA8IDE6CisgICAgICAgICAgICAgICAgbXNnID0gIkV4cGVjdGVkIGF0IG1vc3QgJWQgb3RoZXIgcGFydHMgd2l0aCAnOjonIGluICVyIgorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChzZWxmLl9IRVhURVRfQ09VTlQtMSwgaXBfc3RyKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT3RoZXJ3aXNlLCBhbGxvY2F0ZSB0aGUgZW50aXJlIGFkZHJlc3MgdG8gcGFydHNfaGkuICBUaGUKKyAgICAgICAgICAgICMgZW5kcG9pbnRzIGNvdWxkIHN0aWxsIGJlIGVtcHR5LCBidXQgX3BhcnNlX2hleHRldCgpIHdpbGwgY2hlY2sKKyAgICAgICAgICAgICMgZm9yIHRoYXQuCisgICAgICAgICAgICBpZiBsZW4ocGFydHMpICE9IHNlbGYuX0hFWFRFVF9DT1VOVDoKKyAgICAgICAgICAgICAgICBtc2cgPSAiRXhhY3RseSAlZCBwYXJ0cyBleHBlY3RlZCB3aXRob3V0ICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKHNlbGYuX0hFWFRFVF9DT1VOVCwgaXBfc3RyKSkKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1swXToKKyAgICAgICAgICAgICAgICBtc2cgPSAiTGVhZGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgXjogcmVxdWlyZXMgXjo6CisgICAgICAgICAgICBpZiBub3QgcGFydHNbLTFdOgorICAgICAgICAgICAgICAgIG1zZyA9ICJUcmFpbGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgOiQgcmVxdWlyZXMgOjokCisgICAgICAgICAgICBwYXJ0c19oaSA9IGxlbihwYXJ0cykKKyAgICAgICAgICAgIHBhcnRzX2xvID0gMAorICAgICAgICAgICAgcGFydHNfc2tpcHBlZCA9IDAKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIE5vdywgcGFyc2UgdGhlIGhleHRldHMgaW50byBhIDEyOC1iaXQgaW50ZWdlci4KKyAgICAgICAgICAgIGlwX2ludCA9IDAKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHBhcnRzX2hpKToKKyAgICAgICAgICAgICAgICBpcF9pbnQgPDw9IDE2CisgICAgICAgICAgICAgICAgaXBfaW50IHw9IHNlbGYuX3BhcnNlX2hleHRldChwYXJ0c1tpXSkKKyAgICAgICAgICAgIGlwX2ludCA8PD0gMTYgKiBwYXJ0c19za2lwcGVkCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtcGFydHNfbG8sIDApOgorICAgICAgICAgICAgICAgIGlwX2ludCA8PD0gMTYKKyAgICAgICAgICAgICAgICBpcF9pbnQgfD0gc2VsZi5fcGFyc2VfaGV4dGV0KHBhcnRzW2ldKQorICAgICAgICAgICAgcmV0dXJuIGlwX2ludAorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiJXMgaW4gJXIiICUgKGV4YywgaXBfc3RyKSkgZnJvbSBOb25lCisKKyAgICBkZWYgX3BhcnNlX2hleHRldChzZWxmLCBoZXh0ZXRfc3RyKToKKyAgICAgICAgIiIiQ29udmVydCBhbiBJUHY2IGhleHRldCBzdHJpbmcgaW50byBhbiBpbnRlZ2VyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBoZXh0ZXRfc3RyOiBBIHN0cmluZywgdGhlIG51bWJlciB0byBwYXJzZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhlIGhleHRldCBhcyBhbiBpbnRlZ2VyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IGlmIHRoZSBpbnB1dCBpc24ndCBzdHJpY3RseSBhIGhleCBudW1iZXIgZnJvbQorICAgICAgICAgICAgICBbMC4uRkZGRl0uCisKKyAgICAgICAgIiIiCisgICAgICAgICMgV2hpdGVsaXN0IHRoZSBjaGFyYWN0ZXJzLCBzaW5jZSBpbnQoKSBhbGxvd3MgYSBsb3Qgb2YgYml6YXJyZSBzdHVmZi4KKyAgICAgICAgaWYgbm90IHNlbGYuX0hFWF9ESUdJVFMuaXNzdXBlcnNldChoZXh0ZXRfc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk9ubHkgaGV4IGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJXIiICUgaGV4dGV0X3N0cikKKyAgICAgICAgIyBXZSBkbyB0aGUgbGVuZ3RoIGNoZWNrIHNlY29uZCwgc2luY2UgdGhlIGludmFsaWQgY2hhcmFjdGVyIGVycm9yCisgICAgICAgICMgaXMgbGlrZWx5IHRvIGJlIG1vcmUgaW5mb3JtYXRpdmUgZm9yIHRoZSB1c2VyCisgICAgICAgIGlmIGxlbihoZXh0ZXRfc3RyKSA+IDQ6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCA0IGNoYXJhY3RlcnMgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBoZXh0ZXRfc3RyKQorICAgICAgICAjIExlbmd0aCBjaGVjayBtZWFucyB3ZSBjYW4gc2tpcCBjaGVja2luZyB0aGUgaW50ZWdlciB2YWx1ZQorICAgICAgICByZXR1cm4gaW50KGhleHRldF9zdHIsIDE2KQorCisgICAgZGVmIF9jb21wcmVzc19oZXh0ZXRzKHNlbGYsIGhleHRldHMpOgorICAgICAgICAiIiJDb21wcmVzc2VzIGEgbGlzdCBvZiBoZXh0ZXRzLgorCisgICAgICAgIENvbXByZXNzZXMgYSBsaXN0IG9mIHN0cmluZ3MsIHJlcGxhY2luZyB0aGUgbG9uZ2VzdCBjb250aW51b3VzCisgICAgICAgIHNlcXVlbmNlIG9mICIwIiBpbiB0aGUgbGlzdCB3aXRoICIiIGFuZCBhZGRpbmcgZW1wdHkgc3RyaW5ncyBhdAorICAgICAgICB0aGUgYmVnaW5uaW5nIG9yIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBzdWNoIHRoYXQgc3Vic2VxdWVudGx5CisgICAgICAgIGNhbGxpbmcgIjoiLmpvaW4oaGV4dGV0cykgd2lsbCBwcm9kdWNlIHRoZSBjb21wcmVzc2VkIHZlcnNpb24gb2YKKyAgICAgICAgdGhlIElQdjYgYWRkcmVzcy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaGV4dGV0czogQSBsaXN0IG9mIHN0cmluZ3MsIHRoZSBoZXh0ZXRzIHRvIGNvbXByZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGxpc3Qgb2Ygc3RyaW5ncy4KKworICAgICAgICAiIiIKKyAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9zdGFydCA9IC0xCisgICAgICAgIGJlc3RfZG91YmxlY29sb25fbGVuID0gMAorICAgICAgICBkb3VibGVjb2xvbl9zdGFydCA9IC0xCisgICAgICAgIGRvdWJsZWNvbG9uX2xlbiA9IDAKKyAgICAgICAgZm9yIGluZGV4LCBoZXh0ZXQgaW4gZW51bWVyYXRlKGhleHRldHMpOgorICAgICAgICAgICAgaWYgaGV4dGV0ID09ICcwJzoKKyAgICAgICAgICAgICAgICBkb3VibGVjb2xvbl9sZW4gKz0gMQorICAgICAgICAgICAgICAgIGlmIGRvdWJsZWNvbG9uX3N0YXJ0ID09IC0xOgorICAgICAgICAgICAgICAgICAgICAjIFN0YXJ0IG9mIGEgc2VxdWVuY2Ugb2YgemVyb3MuCisgICAgICAgICAgICAgICAgICAgIGRvdWJsZWNvbG9uX3N0YXJ0ID0gaW5kZXgKKyAgICAgICAgICAgICAgICBpZiBkb3VibGVjb2xvbl9sZW4gPiBiZXN0X2RvdWJsZWNvbG9uX2xlbjoKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBsb25nZXN0IHNlcXVlbmNlIG9mIHplcm9zIHNvIGZhci4KKyAgICAgICAgICAgICAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9sZW4gPSBkb3VibGVjb2xvbl9sZW4KKyAgICAgICAgICAgICAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9zdGFydCA9IGRvdWJsZWNvbG9uX3N0YXJ0CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRvdWJsZWNvbG9uX2xlbiA9IDAKKyAgICAgICAgICAgICAgICBkb3VibGVjb2xvbl9zdGFydCA9IC0xCisKKyAgICAgICAgaWYgYmVzdF9kb3VibGVjb2xvbl9sZW4gPiAxOgorICAgICAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9lbmQgPSAoYmVzdF9kb3VibGVjb2xvbl9zdGFydCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX2xlbikKKyAgICAgICAgICAgICMgRm9yIHplcm9zIGF0IHRoZSBlbmQgb2YgdGhlIGFkZHJlc3MuCisgICAgICAgICAgICBpZiBiZXN0X2RvdWJsZWNvbG9uX2VuZCA9PSBsZW4oaGV4dGV0cyk6CisgICAgICAgICAgICAgICAgaGV4dGV0cyArPSBbJyddCisgICAgICAgICAgICBoZXh0ZXRzW2Jlc3RfZG91YmxlY29sb25fc3RhcnQ6YmVzdF9kb3VibGVjb2xvbl9lbmRdID0gWycnXQorICAgICAgICAgICAgIyBGb3IgemVyb3MgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYWRkcmVzcy4KKyAgICAgICAgICAgIGlmIGJlc3RfZG91YmxlY29sb25fc3RhcnQgPT0gMDoKKyAgICAgICAgICAgICAgICBoZXh0ZXRzID0gWycnXSArIGhleHRldHMKKworICAgICAgICByZXR1cm4gaGV4dGV0cworCisgICAgZGVmIF9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50PU5vbmUpOgorICAgICAgICAiIiJUdXJucyBhIDEyOC1iaXQgaW50ZWdlciBpbnRvIGhleGFkZWNpbWFsIG5vdGF0aW9uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9pbnQ6IEFuIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIHN0cmluZywgdGhlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhZGRyZXNzLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IFRoZSBhZGRyZXNzIGlzIGJpZ2dlciB0aGFuIDEyOCBiaXRzIG9mIGFsbCBvbmVzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBpcF9pbnQgaXMgTm9uZToKKyAgICAgICAgICAgIGlwX2ludCA9IGludChzZWxmLl9pcCkKKworICAgICAgICBpZiBpcF9pbnQgPiBzZWxmLl9BTExfT05FUzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0lQdjYgYWRkcmVzcyBpcyB0b28gbGFyZ2UnKQorCisgICAgICAgIGhleF9zdHIgPSAnJTAzMngnICUgaXBfaW50CisgICAgICAgIGhleHRldHMgPSBbJyV4JyAlIGludChoZXhfc3RyW3g6eCs0XSwgMTYpIGZvciB4IGluIHJhbmdlKDAsIDMyLCA0KV0KKworICAgICAgICBoZXh0ZXRzID0gc2VsZi5fY29tcHJlc3NfaGV4dGV0cyhoZXh0ZXRzKQorICAgICAgICByZXR1cm4gJzonLmpvaW4oaGV4dGV0cykKKworICAgIGRlZiBfZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKHNlbGYpOgorICAgICAgICAiIiJFeHBhbmQgYSBzaG9ydGVuZWQgSVB2NiBhZGRyZXNzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9zdHI6IEEgc3RyaW5nLCB0aGUgSVB2NiBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIHN0cmluZywgdGhlIGV4cGFuZGVkIElQdjYgYWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLCBJUHY2TmV0d29yayk6CisgICAgICAgICAgICBpcF9zdHIgPSBzdHIoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzZWxmLCBJUHY2SW50ZXJmYWNlKToKKyAgICAgICAgICAgIGlwX3N0ciA9IHN0cihzZWxmLmlwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaXBfc3RyID0gc3RyKHNlbGYpCisKKyAgICAgICAgaXBfaW50ID0gc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGlwX3N0cikKKyAgICAgICAgaGV4X3N0ciA9ICclMDMyeCcgJSBpcF9pbnQKKyAgICAgICAgcGFydHMgPSBbaGV4X3N0clt4OngrNF0gZm9yIHggaW4gcmFuZ2UoMCwgMzIsIDQpXQorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIChfQmFzZU5ldHdvcmssIElQdjZJbnRlcmZhY2UpKToKKyAgICAgICAgICAgIHJldHVybiAnJXMvJWQnICUgKCc6Jy5qb2luKHBhcnRzKSwgc2VsZi5fcHJlZml4bGVuKQorICAgICAgICByZXR1cm4gJzonLmpvaW4ocGFydHMpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWF4X3ByZWZpeGxlbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbgorCisKK2NsYXNzIElQdjZBZGRyZXNzKF9CYXNlVjYsIF9CYXNlQWRkcmVzcyk6CisKKyAgICAiIiJSZXByZXNlbnQgYW5kIG1hbmlwdWxhdGUgc2luZ2xlIElQdjYgQWRkcmVzc2VzLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICAiIiJJbnN0YW50aWF0ZSBhIG5ldyBJUHY2IGFkZHJlc3Mgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgSVAKKworICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGludGVnZXIgY2FuIGJlIHBhc3NlZCwgc28KKyAgICAgICAgICAgICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKSA9PQorICAgICAgICAgICAgICAgIElQdjZBZGRyZXNzKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYwKQorICAgICAgICAgICAgICBvciwgbW9yZSBnZW5lcmFsbHkKKyAgICAgICAgICAgICAgSVB2NkFkZHJlc3MoaW50KElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykpKSA9PQorICAgICAgICAgICAgICAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykKKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjYgYWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgX0Jhc2VBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgIF9CYXNlVjYuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKworICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ludF9hZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9pcCA9IGFkZHJlc3MKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcworICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3BhY2tlZF9hZGRyZXNzKGFkZHJlc3MsIDE2KQorICAgICAgICAgICAgc2VsZi5faXAgPSBpbnQuZnJvbV9ieXRlcyhhZGRyZXNzLCAnYmlnJykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCisgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBzdHJpbmcuCisgICAgICAgIGFkZHJfc3RyID0gc3RyKGFkZHJlc3MpCisgICAgICAgIHNlbGYuX2lwID0gc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJfc3RyKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhY2tlZChzZWxmKToKKyAgICAgICAgIiIiVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGFkZHJlc3MuIiIiCisgICAgICAgIHJldHVybiB2Nl9pbnRfdG9fcGFja2VkKHNlbGYuX2lwKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX211bHRpY2FzdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbXVsdGljYXN0IHVzZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbXVsdGljYXN0IGFkZHJlc3MuCisgICAgICAgICAgICBTZWUgUkZDIDIzNzMgMi43IGZvciBkZXRhaWxzLgorCisgICAgICAgICIiIgorICAgICAgICBtdWx0aWNhc3RfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZjAwOjovOCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIG11bHRpY2FzdF9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgb3RoZXJ3aXNlIElFVEYgcmVzZXJ2ZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyB3aXRoaW4gb25lIG9mIHRoZQorICAgICAgICAgICAgcmVzZXJ2ZWQgSVB2NiBOZXR3b3JrIHJhbmdlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmVzZXJ2ZWRfbmV0d29ya3MgPSBbSVB2Nk5ldHdvcmsoJzo6LzgnKSwgSVB2Nk5ldHdvcmsoJzEwMDo6LzgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDo6LzcnKSwgSVB2Nk5ldHdvcmsoJzQwMDo6LzYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzgwMDo6LzUnKSwgSVB2Nk5ldHdvcmsoJzEwMDA6Oi80JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCc0MDAwOjovMycpLCBJUHY2TmV0d29yaygnNjAwMDo6LzMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzgwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCdBMDAwOjovMycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnQzAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJ0UwMDA6Oi80JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCdGMDAwOjovNScpLCBJUHY2TmV0d29yaygnRjgwMDo6LzYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJ0ZFMDA6Oi85JyldCisKKyAgICAgICAgcmV0dXJuIGFueShzZWxmIGluIHggZm9yIHggaW4gcmVzZXJ2ZWRfbmV0d29ya3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbGlua19sb2NhbChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbGluay1sb2NhbC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgNDI5MS4KKworICAgICAgICAiIiIKKyAgICAgICAgbGlua2xvY2FsX25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmU4MDo6LzEwJykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gbGlua2xvY2FsX25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19zaXRlX2xvY2FsKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBzaXRlLWxvY2FsLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgc2l0ZS1sb2NhbCBhZGRyZXNzIHNwYWNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgUkZDIDM4NzkuCisgICAgICAgIFVzZSBpc19wcml2YXRlIHRvIHRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGluIHRoZSBzcGFjZSBvZiB1bmlxdWUgbG9jYWwKKyAgICAgICAgYWRkcmVzc2VzIGFzIGRlZmluZWQgYnkgUkZDIDQxOTMuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDM1MTMgMi41LjYuCisKKyAgICAgICAgIiIiCisgICAgICAgIHNpdGVsb2NhbF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZlYzA6Oi8xMCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIHNpdGVsb2NhbF9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcHJpdmF0ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgYWxsb2NhdGVkIGZvciBwcml2YXRlIG5ldHdvcmtzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyA0MTkzLgorCisgICAgICAgICIiIgorICAgICAgICBwcml2YXRlX25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmMwMDo6LzcnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBwcml2YXRlX25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc191bnNwZWNpZmllZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyB1bnNwZWNpZmllZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoaXMgaXMgdGhlIHVuc3BlY2lmaWVkIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgUkZDIDIzNzMgMi41LjIuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9pcCA9PSAwCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICAgIFJGQyAyMzczIDIuNS4zLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5faXAgPT0gMQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlwdjRfbWFwcGVkKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIElQdjQgbWFwcGVkIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIElmIHRoZSBJUHY2IGFkZHJlc3MgaXMgYSB2NCBtYXBwZWQgYWRkcmVzcywgcmV0dXJuIHRoZQorICAgICAgICAgICAgSVB2NCBtYXBwZWQgYWRkcmVzcy4gUmV0dXJuIE5vbmUgb3RoZXJ3aXNlLgorCisgICAgICAgICIiIgorICAgICAgICBpZiAoc2VsZi5faXAgPj4gMzIpICE9IDB4RkZGRjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBJUHY0QWRkcmVzcyhzZWxmLl9pcCAmIDB4RkZGRkZGRkYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdGVyZWRvKHNlbGYpOgorICAgICAgICAiIiJUdXBsZSBvZiBlbWJlZGRlZCB0ZXJlZG8gSVBzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUdXBsZSBvZiB0aGUgKHNlcnZlciwgY2xpZW50KSBJUHMgb3IgTm9uZSBpZiB0aGUgYWRkcmVzcworICAgICAgICAgICAgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB0ZXJlZG8gYWRkcmVzcyAoZG9lc24ndCBzdGFydCB3aXRoCisgICAgICAgICAgICAyMDAxOjovMzIpCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIChzZWxmLl9pcCA+PiA5NikgIT0gMHgyMDAxMDAwMDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiAoSVB2NEFkZHJlc3MoKHNlbGYuX2lwID4+IDY0KSAmIDB4RkZGRkZGRkYpLAorICAgICAgICAgICAgICAgIElQdjRBZGRyZXNzKH5zZWxmLl9pcCAmIDB4RkZGRkZGRkYpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNpeHRvZm91cihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBJUHY0IDZ0bzQgZW1iZWRkZWQgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhlIElQdjQgNnRvNC1lbWJlZGRlZCBhZGRyZXNzIGlmIHByZXNlbnQgb3IgTm9uZSBpZiB0aGUKKyAgICAgICAgICAgIGFkZHJlc3MgZG9lc24ndCBhcHBlYXIgdG8gY29udGFpbiBhIDZ0bzQgZW1iZWRkZWQgYWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgKHNlbGYuX2lwID4+IDExMikgIT0gMHgyMDAyOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKChzZWxmLl9pcCA+PiA4MCkgJiAweEZGRkZGRkZGKQorCisKK2NsYXNzIElQdjZJbnRlcmZhY2UoSVB2NkFkZHJlc3MpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIChieXRlcywgaW50KSk6CisgICAgICAgICAgICBJUHY2QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2Nk5ldHdvcmsoc2VsZi5faXApCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBhZGRyID0gX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcykKKyAgICAgICAgSVB2NkFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkclswXSkKKyAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2Nk5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PUZhbHNlKQorICAgICAgICBzZWxmLm5ldG1hc2sgPSBzZWxmLm5ldHdvcmsubmV0bWFzaworICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLm5ldHdvcmsuX3ByZWZpeGxlbgorICAgICAgICBzZWxmLmhvc3RtYXNrID0gc2VsZi5uZXR3b3JrLmhvc3RtYXNrCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrLnByZWZpeGxlbikKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBhZGRyZXNzX2VxdWFsID0gSVB2NkFkZHJlc3MuX19lcV9fKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBub3QgYWRkcmVzc19lcXVhbCBvciBhZGRyZXNzX2VxdWFsIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3NfZXF1YWwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0d29yayA9PSBvdGhlci5uZXR3b3JrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgQW4gaW50ZXJmYWNlIHdpdGggYW4gYXNzb2NpYXRlZCBuZXR3b3JrIGlzIE5PVCB0aGUKKyAgICAgICAgICAgICMgc2FtZSBhcyBhbiB1bmFzc29jaWF0ZWQgYWRkcmVzcy4gVGhhdCdzIHdoeSB0aGUgaGFzaAorICAgICAgICAgICAgIyB0YWtlcyB0aGUgZXh0cmEgaW5mbyBpbnRvIGFjY291bnQuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICBhZGRyZXNzX2xlc3MgPSBJUHY2QWRkcmVzcy5fX2x0X18oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIGFkZHJlc3NfbGVzcyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrIDwgb3RoZXIubmV0d29yaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIFdlICpkbyogYWxsb3cgYWRkcmVzc2VzIGFuZCBpbnRlcmZhY2VzIHRvIGJlIHNvcnRlZC4gVGhlCisgICAgICAgICAgICAjIHVuYXNzb2NpYXRlZCBhZGRyZXNzIGlzIGNvbnNpZGVyZWQgbGVzcyB0aGFuIGFsbCBpbnRlcmZhY2VzLgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pcCBeIHNlbGYuX3ByZWZpeGxlbiBeIGludChzZWxmLm5ldHdvcmsubmV0d29ya19hZGRyZXNzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlwKHNlbGYpOgorICAgICAgICByZXR1cm4gSVB2NkFkZHJlc3Moc2VsZi5faXApCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9wcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX25ldG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0bWFzaykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX2hvc3RtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvc3RtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Vuc3BlY2lmaWVkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faXAgPT0gMCBhbmQgc2VsZi5uZXR3b3JrLmlzX3Vuc3BlY2lmaWVkCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pcCA9PSAxIGFuZCBzZWxmLm5ldHdvcmsuaXNfbG9vcGJhY2sKKworCitjbGFzcyBJUHY2TmV0d29yayhfQmFzZVY2LCBfQmFzZU5ldHdvcmspOgorCisgICAgIiIiVGhpcyBjbGFzcyByZXByZXNlbnRzIGFuZCBtYW5pcHVsYXRlcyAxMjgtYml0IElQdjYgbmV0d29ya3MuCisKKyAgICBBdHRyaWJ1dGVzOiBbZXhhbXBsZXMgZm9yIElQdjYoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpXQorICAgICAgICAubmV0d29ya19hZGRyZXNzOiBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorICAgICAgICAuaG9zdG1hc2s6IElQdjZBZGRyZXNzKCc6OmYnKQorICAgICAgICAuYnJvYWRjYXN0X2FkZHJlc3M6IElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwZicpCisgICAgICAgIC5uZXRtYXNrOiBJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmYwJykKKyAgICAgICAgLnByZWZpeGxlbjogMTI0CisKKyAgICAiIiIKKworICAgICMgQ2xhc3MgdG8gdXNlIHdoZW4gY3JlYXRpbmcgYWRkcmVzcyBvYmplY3RzCisgICAgX2FkZHJlc3NfY2xhc3MgPSBJUHY2QWRkcmVzcworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIHN0cmljdD1UcnVlKToKKyAgICAgICAgIiIiSW5zdGFudGlhdGUgYSBuZXcgSVB2NiBOZXR3b3JrIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIElQdjYgbmV0d29yayBvciB0aGUKKyAgICAgICAgICAgICAgSVAgYW5kIHByZWZpeC9uZXRtYXNrLgorICAgICAgICAgICAgICAnMjAwMTpkYjg6Oi8xMjgnCisgICAgICAgICAgICAgICcyMDAxOmRiODowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMC8xMjgnCisgICAgICAgICAgICAgICcyMDAxOmRiODo6JworICAgICAgICAgICAgICBhcmUgYWxsIGZ1bmN0aW9uYWxseSB0aGUgc2FtZSBpbiBJUHY2LiAgVGhhdCBpcyB0byBzYXksCisgICAgICAgICAgICAgIGZhaWxpbmcgdG8gcHJvdmlkZSBhIHN1Ym5ldG1hc2sgd2lsbCBjcmVhdGUgYW4gb2JqZWN0IHdpdGgKKyAgICAgICAgICAgICAgYSBtYXNrIG9mIC8xMjguCisKKyAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBhbiBpbnRlZ2VyIGNhbiBiZSBwYXNzZWQsIHNvCisgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6JykgPT0KKyAgICAgICAgICAgICAgICBJUHY2TmV0d29yayg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCkKKyAgICAgICAgICAgICAgb3IsIG1vcmUgZ2VuZXJhbGx5CisgICAgICAgICAgICAgIElQdjZOZXR3b3JrKGludChJUHY2TmV0d29yaygnMjAwMTpkYjg6OicpKSkgPT0KKyAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OicpCisKKyAgICAgICAgICAgIHN0cmljdDogQSBib29sZWFuLiBJZiB0cnVlLCBlbnN1cmUgdGhhdCB3ZSBoYXZlIGJlZW4gcGFzc2VkCisgICAgICAgICAgICAgIEEgdHJ1ZSBuZXR3b3JrIGFkZHJlc3MsIGVnLCAyMDAxOmRiODo6MTAwMC8xMjQgYW5kIG5vdCBhbgorICAgICAgICAgICAgICBJUCBhZGRyZXNzIG9uIGEgbmV0d29yaywgZWcsIDIwMDE6ZGI4OjoxLzEyNC4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjYgYWRkcmVzcy4KKyAgICAgICAgICAgIE5ldG1hc2tWYWx1ZUVycm9yOiBJZiB0aGUgbmV0bWFzayBpc24ndCB2YWxpZCBmb3IKKyAgICAgICAgICAgICAgYW4gSVB2NiBhZGRyZXNzLgorICAgICAgICAgICAgVmFsdWVFcnJvcjogSWYgc3RyaWN0IHdhcyBUcnVlIGFuZCBhIG5ldHdvcmsgYWRkcmVzcyB3YXMgbm90CisgICAgICAgICAgICAgIHN1cHBsaWVkLgorCisgICAgICAgICIiIgorICAgICAgICBfQmFzZVY2Ll9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgIF9CYXNlTmV0d29yay5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorCisgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3MKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcyk6CisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjZBZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY2QWRkcmVzcyhzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCisgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBwcmVmaXggc3RyaW5nLgorICAgICAgICBhZGRyID0gX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcykKKworICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjZBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyWzBdKSkKKworICAgICAgICBpZiBsZW4oYWRkcikgPT0gMjoKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzX3ZhbGlkX25ldG1hc2soYWRkclsxXSk6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gaW50KGFkZHJbMV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yKCclciBpcyBub3QgYSB2YWxpZCBuZXRtYXNrJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGFkZHJbMV0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisKKyAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KHNlbGYuX3ByZWZpeGxlbikpCisgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgIGlmIChJUHY2QWRkcmVzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYgaW50KHNlbGYubmV0bWFzaykpICE9CisgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIGhhcyBob3N0IGJpdHMgc2V0JyAlIHNlbGYpCisgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYubmV0bWFzaykpCisKKyAgICAgICAgaWYgc2VsZi5fcHJlZml4bGVuID09IChzZWxmLl9tYXhfcHJlZml4bGVuIC0gMSk6CisgICAgICAgICAgICBzZWxmLmhvc3RzID0gc2VsZi5fX2l0ZXJfXworCisgICAgZGVmIF9pc192YWxpZF9uZXRtYXNrKHNlbGYsIHByZWZpeGxlbik6CisgICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSBuZXRtYXNrL3ByZWZpeGxlbiBpcyB2YWxpZC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcHJlZml4bGVuOiBBIHN0cmluZywgdGhlIG5ldG1hc2sgaW4gcHJlZml4IGxlbmd0aCBmb3JtYXQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgcHJlZml4IHJlcHJlc2VudHMgYSB2YWxpZCBJUHY2CisgICAgICAgICAgICBuZXRtYXNrLgorCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwcmVmaXhsZW4gPSBpbnQocHJlZml4bGVuKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gMCA8PSBwcmVmaXhsZW4gPD0gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3NpdGVfbG9jYWwoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIHNpdGUtbG9jYWwuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoZSBzaXRlLWxvY2FsIGFkZHJlc3Mgc3BhY2UgaGFzIGJlZW4gZGVwcmVjYXRlZCBieSBSRkMgMzg3OS4KKyAgICAgICAgVXNlIGlzX3ByaXZhdGUgdG8gdGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgaW4gdGhlIHNwYWNlIG9mIHVuaXF1ZSBsb2NhbAorICAgICAgICBhZGRyZXNzZXMgYXMgZGVmaW5lZCBieSBSRkMgNDE5My4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgMzUxMyAyLjUuNi4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19zaXRlX2xvY2FsIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfc2l0ZV9sb2NhbCkKZGlmZiAtLWdpdCBhL0xpYi9qc29uL2RlY29kZXIucHkgYi9MaWIvanNvbi9kZWNvZGVyLnB5CmluZGV4IGRjMTE1NWIuLjA3ZmQ2OTYgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL2RlY29kZXIucHkKKysrIGIvTGliL2pzb24vZGVjb2Rlci5weQpAQCAtMTIxLDggKzEyMSw3IEBACiAgICAgICAgICAgICAgICAgbXNnID0gIkludmFsaWQgXFx1WFhYWCBlc2NhcGUiCiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2cobXNnLCBzLCBlbmQpKQogICAgICAgICAgICAgdW5pID0gaW50KGVzYywgMTYpCi0gICAgICAgICAgICAjIENoZWNrIGZvciBzdXJyb2dhdGUgcGFpciBvbiBVQ1MtNCBzeXN0ZW1zCi0gICAgICAgICAgICBpZiAweGQ4MDAgPD0gdW5pIDw9IDB4ZGJmZiBhbmQgc3lzLm1heHVuaWNvZGUgPiA2NTUzNToKKyAgICAgICAgICAgIGlmIDB4ZDgwMCA8PSB1bmkgPD0gMHhkYmZmOgogICAgICAgICAgICAgICAgIG1zZyA9ICJJbnZhbGlkIFxcdVhYWFhcXHVYWFhYIHN1cnJvZ2F0ZSBwYWlyIgogICAgICAgICAgICAgICAgIGlmIG5vdCBzW2VuZCArIDU6ZW5kICsgN10gPT0gJ1xcdSc6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKG1zZywgcywgZW5kKSkKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL19fbWFpbl9fLnB5IGIvTGliL2xpYjJ0bzMvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA2ODhiYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9saWIydG8zL19fbWFpbl9fLnB5CkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0IHN5cworZnJvbSAubWFpbiBpbXBvcnQgbWFpbgorCitzeXMuZXhpdChtYWluKCJsaWIydG8zLmZpeGVzIikpCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcl9iYXNlLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXJfYmFzZS5weQppbmRleCBhZmMwNDY3Li5iMTc2MDU2IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcl9iYXNlLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVyX2Jhc2UucHkKQEAgLTI3LDcgKzI3LDYgQEAKICAgICBwYXR0ZXJuX3RyZWUgPSBOb25lICMgVHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0dGVybgogICAgIG9wdGlvbnMgPSBOb25lICAjIE9wdGlvbnMgb2JqZWN0IHBhc3NlZCB0byBpbml0aWFsaXplcgogICAgIGZpbGVuYW1lID0gTm9uZSAjIFRoZSBmaWxlbmFtZSAoc2V0IGJ5IHNldF9maWxlbmFtZSkKLSAgICBsb2dnZXIgPSBOb25lICAgIyBBIGxvZ2dlciAoc2V0IGJ5IHNldF9maWxlbmFtZSkKICAgICBudW1iZXJzID0gaXRlcnRvb2xzLmNvdW50KDEpICMgRm9yIG5ld19uYW1lKCkKICAgICB1c2VkX25hbWVzID0gc2V0KCkgIyBBIHNldCBvZiBhbGwgdXNlZCBOQU1FcwogICAgIG9yZGVyID0gInBvc3QiICMgRG9lcyB0aGUgZml4ZXIgcHJlZmVyIHByZS0gb3IgcG9zdC1vcmRlciB0cmF2ZXJzYWwKQEAgLTcwLDEyICs2OSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoX3RyZWU9VHJ1ZSkKIAogICAgIGRlZiBzZXRfZmlsZW5hbWUoc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICAiIiJTZXQgdGhlIGZpbGVuYW1lLCBhbmQgYSBsb2dnZXIgZGVyaXZlZCBmcm9tIGl0LgorICAgICAgICAiIiJTZXQgdGhlIGZpbGVuYW1lLgogCiAgICAgICAgIFRoZSBtYWluIHJlZmFjdG9yaW5nIHRvb2wgc2hvdWxkIGNhbGwgdGhpcy4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKGZpbGVuYW1lKQogCiAgICAgZGVmIG1hdGNoKHNlbGYsIG5vZGUpOgogICAgICAgICAiIiJSZXR1cm5zIG1hdGNoIGZvciBhIGdpdmVuIHBhcnNlIHRyZWUgbm9kZS4KZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3B5dHJlZS5weSBiL0xpYi9saWIydG8zL3B5dHJlZS5weQppbmRleCBmYTQ5NDJmMy4uMTdjYmYwYSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcHl0cmVlLnB5CisrKyBiL0xpYi9saWIydG8zL3B5dHJlZS5weQpAQCAtMTA5LDI2ICsxMDksNiBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgZGVmIHNldF9wcmVmaXgoc2VsZiwgcHJlZml4KToKLSAgICAgICAgIiIiCi0gICAgICAgIFNldCB0aGUgcHJlZml4IGZvciB0aGUgbm9kZSAoc2VlIExlYWYgY2xhc3MpLgotCi0gICAgICAgIERFUFJFQ0FURUQ7IHVzZSB0aGUgcHJlZml4IHByb3BlcnR5IGRpcmVjdGx5LgotICAgICAgICAiIiIKLSAgICAgICAgd2FybmluZ3Mud2Fybigic2V0X3ByZWZpeCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgcHJlZml4IHByb3BlcnR5IiwKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgc2VsZi5wcmVmaXggPSBwcmVmaXgKLQotICAgIGRlZiBnZXRfcHJlZml4KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRoZSBwcmVmaXggZm9yIHRoZSBub2RlIChzZWUgTGVhZiBjbGFzcykuCi0KLSAgICAgICAgREVQUkVDQVRFRDsgdXNlIHRoZSBwcmVmaXggcHJvcGVydHkgZGlyZWN0bHkuCi0gICAgICAgICIiIgotICAgICAgICB3YXJuaW5ncy53YXJuKCJnZXRfcHJlZml4KCkgaXMgZGVwcmVjYXRlZDsgdXNlIHRoZSBwcmVmaXggcHJvcGVydHkiLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICByZXR1cm4gc2VsZi5wcmVmaXgKLQogICAgIGRlZiByZXBsYWNlKHNlbGYsIG5ldyk6CiAgICAgICAgICIiIlJlcGxhY2UgdGhpcyBub2RlIHdpdGggYSBuZXcgb25lIGluIHRoZSBwYXJlbnQuIiIiCiAgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudCBpcyBub3QgTm9uZSwgc3RyKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9yZWZhY3Rvci5weSBiL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CmluZGV4IDdjZDAzNGEuLjFlODU4MTAgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CisrKyBiL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CkBAIC01NjYsNyArNTY2LDcgQEAKICAgICAgICAgYmxvY2tfbGluZW5vID0gTm9uZQogICAgICAgICBpbmRlbnQgPSBOb25lCiAgICAgICAgIGxpbmVubyA9IDAKLSAgICAgICAgZm9yIGxpbmUgaW4gaW5wdXQuc3BsaXRsaW5lcyhUcnVlKToKKyAgICAgICAgZm9yIGxpbmUgaW4gaW5wdXQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKToKICAgICAgICAgICAgIGxpbmVubyArPSAxCiAgICAgICAgICAgICBpZiBsaW5lLmxzdHJpcCgpLnN0YXJ0c3dpdGgoc2VsZi5QUzEpOgogICAgICAgICAgICAgICAgIGlmIGJsb2NrIGlzIG5vdCBOb25lOgpAQCAtNjEwLDcgKzYxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vLCBlcnIuX19jbGFzc19fLl9fbmFtZV9fLCBlcnIpCiAgICAgICAgICAgICByZXR1cm4gYmxvY2sKICAgICAgICAgaWYgc2VsZi5yZWZhY3Rvcl90cmVlKHRyZWUsIGZpbGVuYW1lKToKLSAgICAgICAgICAgIG5ldyA9IHN0cih0cmVlKS5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICBuZXcgPSBzdHIodHJlZSkuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgIyBVbmRvIHRoZSBhZGp1c3RtZW50IG9mIHRoZSBsaW5lIG51bWJlcnMgaW4gd3JhcF90b2tzKCkgYmVsb3cuCiAgICAgICAgICAgICBjbGlwcGVkLCBuZXcgPSBuZXdbOmxpbmVuby0xXSwgbmV3W2xpbmVuby0xOl0KICAgICAgICAgICAgIGFzc2VydCBjbGlwcGVkID09IFsiXG4iXSAqIChsaW5lbm8tMSksIGNsaXBwZWQKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKaW5kZXggYWM3ZDkwMC4uYTJhYjFmMyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKQEAgLTMxLDIzICszMSw2IEBACiAKICAgICAiIiJVbml0IHRlc3RzIGZvciBub2RlcyAoQmFzZSwgTGVhZiwgTm9kZSkuIiIiCiAKLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgyLDYpOgotICAgICAgICAjIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzIGlzIG5ldyBpbiAyLjYuCi0gICAgICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfcHJlZml4X21ldGhvZHMoc2VsZik6Ci0gICAgICAgICAgICBsID0gcHl0cmVlLkxlYWYoMTAwLCAiZm9vIikKLSAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLmdldF9wcmVmaXgoKSwgIiIpCi0gICAgICAgICAgICAgICAgbC5zZXRfcHJlZml4KCJoaSIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwucHJlZml4LCAiaGkiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDIpCi0gICAgICAgICAgICBmb3Igd2FybmluZyBpbiB3OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YXJuaW5nLmNhdGVnb3J5IGlzIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHdbMF0ubWVzc2FnZSksICJnZXRfcHJlZml4KCkgaXMgZGVwcmVjYXRlZDsgIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIHRoZSBwcmVmaXggcHJvcGVydHkiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIod1sxXS5tZXNzYWdlKSwgInNldF9wcmVmaXgoKSBpcyBkZXByZWNhdGVkOyAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgdGhlIHByZWZpeCBwcm9wZXJ0eSIpCi0KICAgICBkZWYgdGVzdF9pbnN0YW50aWF0ZV9iYXNlKHNlbGYpOgogICAgICAgICBpZiBfX2RlYnVnX186CiAgICAgICAgICAgICAjIFRlc3QgdGhhdCBpbnN0YW50aWF0aW5nIEJhc2UoKSByYWlzZXMgYW4gQXNzZXJ0aW9uRXJyb3IKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5IGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKaW5kZXggNDE5MWIyMi4uZTc5MDE4ZiAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKKysrIGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKQEAgLTM2LDE1ICszNiw5IEBACiAgICAgICAgICAgICdnZXRMb2dSZWNvcmRGYWN0b3J5JywgJ3NldExvZ1JlY29yZEZhY3RvcnknLCAnbGFzdFJlc29ydCddCiAKIHRyeToKLSAgICBpbXBvcnQgY29kZWNzCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgY29kZWNzID0gTm9uZQotCi10cnk6Ci0gICAgaW1wb3J0IF90aHJlYWQgYXMgdGhyZWFkCiAgICAgaW1wb3J0IHRocmVhZGluZwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHRocmVhZCA9IE5vbmUKK2V4Y2VwdCBJbXBvcnRFcnJvcjogI3ByYWdtYTogbm8gY292ZXIKKyAgICB0aHJlYWRpbmcgPSBOb25lCiAKIF9fYXV0aG9yX18gID0gIlZpbmF5IFNhamlwIDx2aW5heV9zYWppcEByZWQtZG92ZS5jb20+IgogX19zdGF0dXNfXyAgPSAicHJvZHVjdGlvbiIKQEAgLTY1LDE2ICs1OSwxNiBAQAogICAgIF9zcmNmaWxlID0gX19maWxlX18KIF9zcmNmaWxlID0gb3MucGF0aC5ub3JtY2FzZShfc3JjZmlsZSkKIAotIyBuZXh0IGJpdCBmaWxjaGVkIGZyb20gMS41LjIncyBpbnNwZWN0LnB5Ci1kZWYgY3VycmVudGZyYW1lKCk6Ci0gICAgIiIiUmV0dXJuIHRoZSBmcmFtZSBvYmplY3QgZm9yIHRoZSBjYWxsZXIncyBzdGFjayBmcmFtZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbgotICAgIGV4Y2VwdDoKLSAgICAgICAgcmV0dXJuIHN5cy5leGNfaW5mbygpWzJdLnRiX2ZyYW1lLmZfYmFjawogCi1pZiBoYXNhdHRyKHN5cywgJ19nZXRmcmFtZScpOiBjdXJyZW50ZnJhbWUgPSBsYW1iZGE6IHN5cy5fZ2V0ZnJhbWUoMykKLSMgZG9uZSBmaWxjaGluZworaWYgaGFzYXR0cihzeXMsICdfZ2V0ZnJhbWUnKToKKyAgICBjdXJyZW50ZnJhbWUgPSBsYW1iZGE6IHN5cy5fZ2V0ZnJhbWUoMykKK2Vsc2U6ICNwcmFnbWE6IG5vIGNvdmVyCisgICAgZGVmIGN1cnJlbnRmcmFtZSgpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZyYW1lIG9iamVjdCBmb3IgdGhlIGNhbGxlcidzIHN0YWNrIGZyYW1lLiIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24KKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcmV0dXJuIHN5cy5leGNfaW5mbygpWzJdLnRiX2ZyYW1lLmZfYmFjawogCiAjIF9zcmNmaWxlIGlzIG9ubHkgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHN5cy5fZ2V0ZnJhbWUoKS4KICMgVG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgUHl0aG9uLCBzZXQgX3NyY2ZpbGUKQEAgLTkyLDIyICs4NiwyMiBAQAogI3JhaXNlRXhjZXB0aW9ucyBpcyB1c2VkIHRvIHNlZSBpZiBleGNlcHRpb25zIGR1cmluZyBoYW5kbGluZyBzaG91bGQgYmUKICNwcm9wYWdhdGVkCiAjCi1yYWlzZUV4Y2VwdGlvbnMgPSAxCityYWlzZUV4Y2VwdGlvbnMgPSBUcnVlCiAKICMKICMgSWYgeW91IGRvbid0IHdhbnQgdGhyZWFkaW5nIGluZm9ybWF0aW9uIGluIHRoZSBsb2csIHNldCB0aGlzIHRvIHplcm8KICMKLWxvZ1RocmVhZHMgPSAxCitsb2dUaHJlYWRzID0gVHJ1ZQogCiAjCiAjIElmIHlvdSBkb24ndCB3YW50IG11bHRpcHJvY2Vzc2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgbG9nLCBzZXQgdGhpcyB0byB6ZXJvCiAjCi1sb2dNdWx0aXByb2Nlc3NpbmcgPSAxCitsb2dNdWx0aXByb2Nlc3NpbmcgPSBUcnVlCiAKICMKICMgSWYgeW91IGRvbid0IHdhbnQgcHJvY2VzcyBpbmZvcm1hdGlvbiBpbiB0aGUgbG9nLCBzZXQgdGhpcyB0byB6ZXJvCiAjCi1sb2dQcm9jZXNzZXMgPSAxCitsb2dQcm9jZXNzZXMgPSBUcnVlCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgICBMZXZlbCByZWxhdGVkIHN0dWZmCkBAIC0xOTcsOSArMTkxLDkgQEAKICN0aGUgbG9jayB3b3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBhY3F1aXJlZCAtIHNvIHdlIG5lZWQgYW4gUkxvY2suCiAjVGhlIHNhbWUgYXJndW1lbnQgYXBwbGllcyB0byBMb2dnZXJzIGFuZCBNYW5hZ2VyLmxvZ2dlckRpY3QuCiAjCi1pZiB0aHJlYWQ6CitpZiB0aHJlYWRpbmc6CiAgICAgX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQotZWxzZToKK2Vsc2U6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgX2xvY2sgPSBOb25lCiAKIApAQCAtMjUyLDcgKzI0Niw3IEBACiAgICAgICAgICMgZHVyaW5nIGZvcm1hdHRpbmcsIHdlIHRlc3QgdG8gc2VlIGlmIHRoZSBhcmcgaXMgcHJlc2VudCB1c2luZwogICAgICAgICAjICdpZiBzZWxmLmFyZ3M6Jy4gSWYgdGhlIGV2ZW50IGJlaW5nIGxvZ2dlZCBpcyBlLmcuICdWYWx1ZSBpcyAlZCcKICAgICAgICAgIyBhbmQgaWYgdGhlIHBhc3NlZCBhcmcgZmFpbHMgJ2lmIHNlbGYuYXJnczonIHRoZW4gbm8gZm9ybWF0dGluZwotICAgICAgICAjIGlzIGRvbmUuIEZvciBleGFtcGxlLCBsb2dnZXIud2FybignVmFsdWUgaXMgJWQnLCAwKSB3b3VsZCBsb2cKKyAgICAgICAgIyBpcyBkb25lLiBGb3IgZXhhbXBsZSwgbG9nZ2VyLndhcm5pbmcoJ1ZhbHVlIGlzICVkJywgMCkgd291bGQgbG9nCiAgICAgICAgICMgJ1ZhbHVlIGlzICVkJyBpbnN0ZWFkIG9mICdWYWx1ZSBpcyAwJy4KICAgICAgICAgIyBGb3IgdGhlIHVzZSBjYXNlIG9mIHBhc3NpbmcgYSBkaWN0aW9uYXJ5LCB0aGlzIHNob3VsZCBub3QgYmUgYQogICAgICAgICAjIHByb2JsZW0uCkBAIC0yNzYsMTMgKzI3MCwxMyBAQAogICAgICAgICBzZWxmLmNyZWF0ZWQgPSBjdAogICAgICAgICBzZWxmLm1zZWNzID0gKGN0IC0gaW50KGN0KSkgKiAxMDAwCiAgICAgICAgIHNlbGYucmVsYXRpdmVDcmVhdGVkID0gKHNlbGYuY3JlYXRlZCAtIF9zdGFydFRpbWUpICogMTAwMAotICAgICAgICBpZiBsb2dUaHJlYWRzIGFuZCB0aHJlYWQ6Ci0gICAgICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICBpZiBsb2dUaHJlYWRzIGFuZCB0aHJlYWRpbmc6CisgICAgICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQogICAgICAgICAgICAgc2VsZi50aHJlYWROYW1lID0gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZQotICAgICAgICBlbHNlOgorICAgICAgICBlbHNlOiAjIHByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHNlbGYudGhyZWFkID0gTm9uZQogICAgICAgICAgICAgc2VsZi50aHJlYWROYW1lID0gTm9uZQotICAgICAgICBpZiBub3QgbG9nTXVsdGlwcm9jZXNzaW5nOgorICAgICAgICBpZiBub3QgbG9nTXVsdGlwcm9jZXNzaW5nOiAjIHByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHNlbGYucHJvY2Vzc05hbWUgPSBOb25lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnByb2Nlc3NOYW1lID0gJ01haW5Qcm9jZXNzJwpAQCAtMjk0LDcgKzI4OCw3IEBACiAgICAgICAgICAgICAgICAgIyBmb3IgYW4gZXhhbXBsZQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzTmFtZSA9IG1wLmN1cnJlbnRfcHJvY2VzcygpLm5hbWUKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgaWYgbG9nUHJvY2Vzc2VzIGFuZCBoYXNhdHRyKG9zLCAnZ2V0cGlkJyk6CiAgICAgICAgICAgICBzZWxmLnByb2Nlc3MgPSBvcy5nZXRwaWQoKQpAQCAtNDY2LDYgKzQ2MCw5IEBACiAgICAgICAgIHNlbGYuX2ZtdCA9IHNlbGYuX3N0eWxlLl9mbXQKICAgICAgICAgc2VsZi5kYXRlZm10ID0gZGF0ZWZtdAogCisgICAgZGVmYXVsdF90aW1lX2Zvcm1hdCA9ICclWS0lbS0lZCAlSDolTTolUycKKyAgICBkZWZhdWx0X21zZWNfZm9ybWF0ID0gJyVzLCUwM2QnCisKICAgICBkZWYgZm9ybWF0VGltZShzZWxmLCByZWNvcmQsIGRhdGVmbXQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm4gdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBMb2dSZWNvcmQgYXMgZm9ybWF0dGVkIHRleHQuCkBAIC00ODgsOCArNDg1LDggQEAKICAgICAgICAgaWYgZGF0ZWZtdDoKICAgICAgICAgICAgIHMgPSB0aW1lLnN0cmZ0aW1lKGRhdGVmbXQsIGN0KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgdCA9IHRpbWUuc3RyZnRpbWUoIiVZLSVtLSVkICVIOiVNOiVTIiwgY3QpCi0gICAgICAgICAgICBzID0gIiVzLCUwM2QiICUgKHQsIHJlY29yZC5tc2VjcykgIyB0aGUgdXNlIG9mICUgaGVyZSBpcyBpbnRlcm5hbAorICAgICAgICAgICAgdCA9IHRpbWUuc3RyZnRpbWUoc2VsZi5kZWZhdWx0X3RpbWVfZm9ybWF0LCBjdCkKKyAgICAgICAgICAgIHMgPSBzZWxmLmRlZmF1bHRfbXNlY19mb3JtYXQgJSAodCwgcmVjb3JkLm1zZWNzKQogICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIGZvcm1hdEV4Y2VwdGlvbihzZWxmLCBlaSk6CkBAIC02NDIsMTEgKzYzOSwxMSBAQAogICAgICAgICB5ZXMuIElmIGRlZW1lZCBhcHByb3ByaWF0ZSwgdGhlIHJlY29yZCBtYXkgYmUgbW9kaWZpZWQgaW4tcGxhY2UuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLm5sZW4gPT0gMDoKLSAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbGlmIHNlbGYubmFtZSA9PSByZWNvcmQubmFtZToKLSAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbGlmIHJlY29yZC5uYW1lLmZpbmQoc2VsZi5uYW1lLCAwLCBzZWxmLm5sZW4pICE9IDA6Ci0gICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiAocmVjb3JkLm5hbWVbc2VsZi5ubGVuXSA9PSAiLiIpCiAKIGNsYXNzIEZpbHRlcmVyKG9iamVjdCk6CkBAIC02ODYsMTQgKzY4MywxNCBAQAogCiAgICAgICAgICAgIEFsbG93IGZpbHRlcnMgdG8gYmUganVzdCBjYWxsYWJsZXMuCiAgICAgICAgICIiIgotICAgICAgICBydiA9IDEKKyAgICAgICAgcnYgPSBUcnVlCiAgICAgICAgIGZvciBmIGluIHNlbGYuZmlsdGVyczoKICAgICAgICAgICAgIGlmIGhhc2F0dHIoZiwgJ2ZpbHRlcicpOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYuZmlsdGVyKHJlY29yZCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZihyZWNvcmQpICMgYXNzdW1lIGNhbGxhYmxlIC0gd2lsbCByYWlzZSBpZiBub3QKICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgcnYgPSAwCisgICAgICAgICAgICAgICAgcnYgPSBGYWxzZQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIHJldHVybiBydgogCkBAIC03NzEsOSArNzY4LDkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIEFjcXVpcmUgYSB0aHJlYWQgbG9jayBmb3Igc2VyaWFsaXppbmcgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIEkvTy4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIHRocmVhZDoKKyAgICAgICAgaWYgdGhyZWFkaW5nOgogICAgICAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKLSAgICAgICAgZWxzZToKKyAgICAgICAgZWxzZTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHNlbGYubG9jayA9IE5vbmUKIAogICAgIGRlZiBhY3F1aXJlKHNlbGYpOgpAQCAtNzkyLDcgKzc4OSw3IEBACiAKICAgICBkZWYgc2V0TGV2ZWwoc2VsZiwgbGV2ZWwpOgogICAgICAgICAiIiIKLSAgICAgICAgU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIHRoaXMgaGFuZGxlci4KKyAgICAgICAgU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIHRoaXMgaGFuZGxlci4gIGxldmVsIG11c3QgYmUgYW4gaW50IG9yIGEgc3RyLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5sZXZlbCA9IF9jaGVja0xldmVsKGxldmVsKQogCkBAIC04ODgsNyArODg1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHN5cy5zdGRlcnIpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnTG9nZ2VkIGZyb20gZmlsZSAlcywgbGluZSAlc1xuJyAlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5maWxlbmFtZSwgcmVjb3JkLmxpbmVubykpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgIHBhc3MgICAgIyBzZWUgaXNzdWUgNTk3MQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBkZWwgZWkKQEAgLTk0MSw3ICs5MzgsNyBAQAogICAgICAgICAgICAgc3RyZWFtLndyaXRlKG1zZykKICAgICAgICAgICAgIHN0cmVhbS53cml0ZShzZWxmLnRlcm1pbmF0b3IpCiAgICAgICAgICAgICBzZWxmLmZsdXNoKCkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC05NTAsMTQgKzk0NywxMiBAQAogICAgICIiIgogICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCB3cml0ZXMgZm9ybWF0dGVkIGxvZ2dpbmcgcmVjb3JkcyB0byBkaXNrIGZpbGVzLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIGVuY29kaW5nPU5vbmUsIGRlbGF5PTApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIE9wZW4gdGhlIHNwZWNpZmllZCBmaWxlIGFuZCB1c2UgaXQgYXMgdGhlIHN0cmVhbSBmb3IgbG9nZ2luZy4KICAgICAgICAgIiIiCiAgICAgICAgICNrZWVwIHRoZSBhYnNvbHV0ZSBwYXRoLCBvdGhlcndpc2UgZGVyaXZlZCBjbGFzc2VzIHdoaWNoIHVzZSB0aGlzCiAgICAgICAgICNtYXkgY29tZSBhIGNyb3BwZXIgd2hlbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgY2hhbmdlcwotICAgICAgICBpZiBjb2RlY3MgaXMgTm9uZToKLSAgICAgICAgICAgIGVuY29kaW5nID0gTm9uZQogICAgICAgICBzZWxmLmJhc2VGaWxlbmFtZSA9IG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkKICAgICAgICAgc2VsZi5tb2RlID0gbW9kZQogICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKQEAgLTk4OSwxMSArOTg0LDcgQEAKICAgICAgICAgT3BlbiB0aGUgY3VycmVudCBiYXNlIGZpbGUgd2l0aCB0aGUgKG9yaWdpbmFsKSBtb2RlIGFuZCBlbmNvZGluZy4KICAgICAgICAgUmV0dXJuIHRoZSByZXN1bHRpbmcgc3RyZWFtLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5lbmNvZGluZyBpcyBOb25lOgotICAgICAgICAgICAgc3RyZWFtID0gb3BlbihzZWxmLmJhc2VGaWxlbmFtZSwgc2VsZi5tb2RlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3RyZWFtID0gY29kZWNzLm9wZW4oc2VsZi5iYXNlRmlsZW5hbWUsIHNlbGYubW9kZSwgc2VsZi5lbmNvZGluZykKLSAgICAgICAgcmV0dXJuIHN0cmVhbQorICAgICAgICByZXR1cm4gb3BlbihzZWxmLmJhc2VGaWxlbmFtZSwgc2VsZi5tb2RlLCBlbmNvZGluZz1zZWxmLmVuY29kaW5nKQogCiAgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKICAgICAgICAgIiIiCkBAIC0xMjA1LDEzICsxMTk2LDEzIEBACiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5sZXZlbCA9IF9jaGVja0xldmVsKGxldmVsKQogICAgICAgICBzZWxmLnBhcmVudCA9IE5vbmUKLSAgICAgICAgc2VsZi5wcm9wYWdhdGUgPSAxCisgICAgICAgIHNlbGYucHJvcGFnYXRlID0gVHJ1ZQogICAgICAgICBzZWxmLmhhbmRsZXJzID0gW10KLSAgICAgICAgc2VsZi5kaXNhYmxlZCA9IDAKKyAgICAgICAgc2VsZi5kaXNhYmxlZCA9IEZhbHNlCiAKICAgICBkZWYgc2V0TGV2ZWwoc2VsZiwgbGV2ZWwpOgogICAgICAgICAiIiIKLSAgICAgICAgU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIHRoaXMgbG9nZ2VyLgorICAgICAgICBTZXQgdGhlIGxvZ2dpbmcgbGV2ZWwgb2YgdGhpcyBsb2dnZXIuICBsZXZlbCBtdXN0IGJlIGFuIGludCBvciBhIHN0ci4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYubGV2ZWwgPSBfY2hlY2tMZXZlbChsZXZlbCkKIApAQCAtMTI1MSw3ICsxMjQyLDEwIEBACiAgICAgICAgIGlmIHNlbGYuaXNFbmFibGVkRm9yKFdBUk5JTkcpOgogICAgICAgICAgICAgc2VsZi5fbG9nKFdBUk5JTkcsIG1zZywgYXJncywgKiprd2FyZ3MpCiAKLSAgICB3YXJuID0gd2FybmluZworICAgIGRlZiB3YXJuKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2FybmluZ3Mud2FybigiVGhlICd3YXJuJyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgIgorICAgICAgICAgICAgInVzZSAnd2FybmluZycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgc2VsZi53YXJuaW5nKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgZGVmIGVycm9yKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiCkBAIC0xMzYwLDkgKzEzNTQsOSBAQAogICAgICAgICAgICAgI0lyb25QeXRob24gY2FuIHVzZSBsb2dnaW5nLgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGZuLCBsbm8sIGZ1bmMsIHNpbmZvID0gc2VsZi5maW5kQ2FsbGVyKHN0YWNrX2luZm8pCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOiAjIHByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICBmbiwgbG5vLCBmdW5jID0gIih1bmtub3duIGZpbGUpIiwgMCwgIih1bmtub3duIGZ1bmN0aW9uKSIKLSAgICAgICAgZWxzZToKKyAgICAgICAgZWxzZTogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBmbiwgbG5vLCBmdW5jID0gIih1bmtub3duIGZpbGUpIiwgMCwgIih1bmtub3duIGZ1bmN0aW9uKSIKICAgICAgICAgaWYgZXhjX2luZm86CiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGNfaW5mbywgdHVwbGUpOgpAQCAtMTQ3NCw3ICsxNDY4LDcgQEAKICAgICAgICAgSXMgdGhpcyBsb2dnZXIgZW5hYmxlZCBmb3IgbGV2ZWwgJ2xldmVsJz8KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYubWFuYWdlci5kaXNhYmxlID49IGxldmVsOgotICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gbGV2ZWwgPj0gc2VsZi5nZXRFZmZlY3RpdmVMZXZlbCgpCiAKICAgICBkZWYgZ2V0Q2hpbGQoc2VsZiwgc3VmZml4KToKQEAgLTE1NjQsNyArMTU1OCwxMCBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5sb2coV0FSTklORywgbXNnLCAqYXJncywgKiprd2FyZ3MpCiAKLSAgICB3YXJuID0gd2FybmluZworICAgIGRlZiB3YXJuKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2FybmluZ3Mud2FybigiVGhlICd3YXJuJyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgIgorICAgICAgICAgICAgInVzZSAnd2FybmluZycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgc2VsZi53YXJuaW5nKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgZGVmIGVycm9yKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiCkBAIC0xNTc2LDcgKzE1NzMsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgRGVsZWdhdGUgYW4gZXhjZXB0aW9uIGNhbGwgdG8gdGhlIHVuZGVybHlpbmcgbG9nZ2VyLgogICAgICAgICAiIiIKLSAgICAgICAga3dhcmdzWyJleGNfaW5mbyJdID0gMQorICAgICAgICBrd2FyZ3NbImV4Y19pbmZvIl0gPSBUcnVlCiAgICAgICAgIHNlbGYubG9nKEVSUk9SLCBtc2csICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBjcml0aWNhbChzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CkBAIC0xNjU5LDYgKzE2NTYsMTAgQEAKICAgICBzdHJlYW0gICAgVXNlIHRoZSBzcGVjaWZpZWQgc3RyZWFtIHRvIGluaXRpYWxpemUgdGhlIFN0cmVhbUhhbmRsZXIuIE5vdGUKICAgICAgICAgICAgICAgdGhhdCB0aGlzIGFyZ3VtZW50IGlzIGluY29tcGF0aWJsZSB3aXRoICdmaWxlbmFtZScgLSBpZiBib3RoCiAgICAgICAgICAgICAgIGFyZSBwcmVzZW50LCAnc3RyZWFtJyBpcyBpZ25vcmVkLgorICAgIGhhbmRsZXJzICBJZiBzcGVjaWZpZWQsIHRoaXMgc2hvdWxkIGJlIGFuIGl0ZXJhYmxlIG9mIGFscmVhZHkgY3JlYXRlZAorICAgICAgICAgICAgICBoYW5kbGVycywgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgcm9vdCBoYW5kbGVyLiBBbnkgaGFuZGxlcgorICAgICAgICAgICAgICBpbiB0aGUgbGlzdCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgZm9ybWF0dGVyIGFzc2lnbmVkIHdpbGwgYmUKKyAgICAgICAgICAgICAgYXNzaWduZWQgdGhlIGZvcm1hdHRlciBjcmVhdGVkIGluIHRoaXMgZnVuY3Rpb24uCiAKICAgICBOb3RlIHRoYXQgeW91IGNvdWxkIHNwZWNpZnkgYSBzdHJlYW0gY3JlYXRlZCB1c2luZyBvcGVuKGZpbGVuYW1lLCBtb2RlKQogICAgIHJhdGhlciB0aGFuIHBhc3NpbmcgdGhlIGZpbGVuYW1lIGFuZCBtb2RlIGluLiBIb3dldmVyLCBpdCBzaG91bGQgYmUKQEAgLTE2NjYsMjcgKzE2NjcsNDcgQEAKICAgICB1c2luZyBzeXMuc3Rkb3V0IG9yIHN5cy5zdGRlcnIpLCB3aGVyZWFzIEZpbGVIYW5kbGVyIGNsb3NlcyBpdHMgc3RyZWFtCiAgICAgd2hlbiB0aGUgaGFuZGxlciBpcyBjbG9zZWQuCiAKLSAgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy4yCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgICBBZGRlZCB0aGUgYGBzdHlsZWBgIHBhcmFtZXRlci4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgQWRkZWQgdGhlIGBgaGFuZGxlcnNgYCBwYXJhbWV0ZXIuIEEgYGBWYWx1ZUVycm9yYGAgaXMgbm93IHRocm93biBmb3IKKyAgICAgICBpbmNvbXBhdGlibGUgYXJndW1lbnRzIChlLmcuIGBgaGFuZGxlcnNgYCBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aAorICAgICAgIGBgZmlsZW5hbWVgYC9gYGZpbGVtb2RlYGAsIG9yIGBgZmlsZW5hbWVgYC9gYGZpbGVtb2RlYGAgc3BlY2lmaWVkCisgICAgICAgdG9nZXRoZXIgd2l0aCBgYHN0cmVhbWBgLCBvciBgYGhhbmRsZXJzYGAgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGgKKyAgICAgICBgYHN0cmVhbWBgLgogICAgICIiIgogICAgICMgQWRkIHRocmVhZCBzYWZldHkgaW4gY2FzZSBzb21lb25lIG1pc3Rha2VubHkgY2FsbHMKICAgICAjIGJhc2ljQ29uZmlnKCkgZnJvbSBtdWx0aXBsZSB0aHJlYWRzCiAgICAgX2FjcXVpcmVMb2NrKCkKICAgICB0cnk6CiAgICAgICAgIGlmIGxlbihyb290LmhhbmRsZXJzKSA9PSAwOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBrd2FyZ3MuZ2V0KCJmaWxlbmFtZSIpCi0gICAgICAgICAgICBpZiBmaWxlbmFtZToKLSAgICAgICAgICAgICAgICBtb2RlID0ga3dhcmdzLmdldCgiZmlsZW1vZGUiLCAnYScpCi0gICAgICAgICAgICAgICAgaGRsciA9IEZpbGVIYW5kbGVyKGZpbGVuYW1lLCBtb2RlKQorICAgICAgICAgICAgaGFuZGxlcnMgPSBrd2FyZ3MuZ2V0KCJoYW5kbGVycyIpCisgICAgICAgICAgICBpZiBoYW5kbGVycyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmICJzdHJlYW0iIGluIGt3YXJncyBhbmQgImZpbGVuYW1lIiBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIidzdHJlYW0nIGFuZCAnZmlsZW5hbWUnIHNob3VsZCBub3QgYmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZWQgdG9nZXRoZXIiKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdHJlYW0gPSBrd2FyZ3MuZ2V0KCJzdHJlYW0iKQotICAgICAgICAgICAgICAgIGhkbHIgPSBTdHJlYW1IYW5kbGVyKHN0cmVhbSkKKyAgICAgICAgICAgICAgICBpZiAic3RyZWFtIiBpbiBrd2FyZ3Mgb3IgImZpbGVuYW1lIiBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIidzdHJlYW0nIG9yICdmaWxlbmFtZScgc2hvdWxkIG5vdCBiZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllZCB0b2dldGhlciB3aXRoICdoYW5kbGVycyciKQorICAgICAgICAgICAgaWYgaGFuZGxlcnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGt3YXJncy5nZXQoImZpbGVuYW1lIikKKyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IGt3YXJncy5nZXQoImZpbGVtb2RlIiwgJ2EnKQorICAgICAgICAgICAgICAgICAgICBoID0gRmlsZUhhbmRsZXIoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtID0ga3dhcmdzLmdldCgic3RyZWFtIikKKyAgICAgICAgICAgICAgICAgICAgaCA9IFN0cmVhbUhhbmRsZXIoc3RyZWFtKQorICAgICAgICAgICAgICAgIGhhbmRsZXJzID0gW2hdCiAgICAgICAgICAgICBmcyA9IGt3YXJncy5nZXQoImZvcm1hdCIsIEJBU0lDX0ZPUk1BVCkKICAgICAgICAgICAgIGRmcyA9IGt3YXJncy5nZXQoImRhdGVmbXQiLCBOb25lKQogICAgICAgICAgICAgc3R5bGUgPSBrd2FyZ3MuZ2V0KCJzdHlsZSIsICclJykKICAgICAgICAgICAgIGZtdCA9IEZvcm1hdHRlcihmcywgZGZzLCBzdHlsZSkKLSAgICAgICAgICAgIGhkbHIuc2V0Rm9ybWF0dGVyKGZtdCkKLSAgICAgICAgICAgIHJvb3QuYWRkSGFuZGxlcihoZGxyKQorICAgICAgICAgICAgZm9yIGggaW4gaGFuZGxlcnM6CisgICAgICAgICAgICAgICAgaWYgaC5mb3JtYXR0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaC5zZXRGb3JtYXR0ZXIoZm10KQorICAgICAgICAgICAgICAgIHJvb3QuYWRkSGFuZGxlcihoKQogICAgICAgICAgICAgbGV2ZWwgPSBrd2FyZ3MuZ2V0KCJsZXZlbCIpCiAgICAgICAgICAgICBpZiBsZXZlbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByb290LnNldExldmVsKGxldmVsKQpAQCAtMTc1MCw3ICsxNzcxLDEwIEBACiAgICAgICAgIGJhc2ljQ29uZmlnKCkKICAgICByb290Lndhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpCiAKLXdhcm4gPSB3YXJuaW5nCitkZWYgd2Fybihtc2csICphcmdzLCAqKmt3YXJncyk6CisgICAgd2FybmluZ3Mud2FybigiVGhlICd3YXJuJyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCAiCisgICAgICAgICJ1c2UgJ3dhcm5pbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgd2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAogZGVmIGluZm8obXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICIiIgpAQCAtMTgzNSwxMCArMTg1OSwxMCBAQAogICAgIHBhY2thZ2UuCiAgICAgIiIiCiAgICAgZGVmIGhhbmRsZShzZWxmLCByZWNvcmQpOgotICAgICAgICBwYXNzCisgICAgICAgICIiIlN0dWIuIiIiCiAKICAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgotICAgICAgICBwYXNzCisgICAgICAgICIiIlN0dWIuIiIiCiAKICAgICBkZWYgY3JlYXRlTG9jayhzZWxmKToKICAgICAgICAgc2VsZi5sb2NrID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvY29uZmlnLnB5IGIvTGliL2xvZ2dpbmcvY29uZmlnLnB5CmluZGV4IDM3M2RhMmIuLjVlZjVjOTEgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2NvbmZpZy5weQorKysgYi9MaWIvbG9nZ2luZy9jb25maWcucHkKQEAgLTI0LDEzICsyNCwxMyBAQAogVG8gdXNlLCBzaW1wbHkgJ2ltcG9ydCBsb2dnaW5nJyBhbmQgbG9nIGF3YXkhCiAiIiIKIAotaW1wb3J0IHN5cywgbG9nZ2luZywgbG9nZ2luZy5oYW5kbGVycywgc29ja2V0LCBzdHJ1Y3QsIG9zLCB0cmFjZWJhY2ssIHJlCi1pbXBvcnQgdHlwZXMsIGlvCitpbXBvcnQgc3lzLCBsb2dnaW5nLCBsb2dnaW5nLmhhbmRsZXJzLCBzb2NrZXQsIHN0cnVjdCwgdHJhY2ViYWNrLCByZQoraW1wb3J0IGlvCiAKIHRyeToKICAgICBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKICAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgSW1wb3J0RXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgdGhyZWFkID0gTm9uZQogCiBmcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcgpAQCAtOTgsOSArOTgsNiBAQAogZGVmIF9zdHJpcF9zcGFjZXMoYWxpc3QpOgogICAgIHJldHVybiBtYXAobGFtYmRhIHg6IHguc3RyaXAoKSwgYWxpc3QpCiAKLWRlZiBfZW5jb2RlZChzKToKLSAgICByZXR1cm4gcyBpZiBpc2luc3RhbmNlKHMsIHN0cikgZWxzZSBzLmVuY29kZSgndXRmLTgnKQotCiBkZWYgX2NyZWF0ZV9mb3JtYXR0ZXJzKGNwKToKICAgICAiIiJDcmVhdGUgYW5kIHJldHVybiBmb3JtYXR0ZXJzIiIiCiAgICAgZmxpc3QgPSBjcFsiZm9ybWF0dGVycyJdWyJrZXlzIl0KQEAgLTIxNSw3ICsyMTIsNyBAQAogICAgICNhdm9pZCBkaXNhYmxpbmcgY2hpbGQgbG9nZ2VycyBvZiBleHBsaWNpdGx5CiAgICAgI25hbWVkIGxvZ2dlcnMuIFdpdGggYSBzb3J0ZWQgbGlzdCBpdCBpcyBlYXNpZXIKICAgICAjdG8gZmluZCB0aGUgY2hpbGQgbG9nZ2Vycy4KLSAgICBleGlzdGluZy5zb3J0KGtleT1fZW5jb2RlZCkKKyAgICBleGlzdGluZy5zb3J0KCkKICAgICAjV2UnbGwga2VlcCB0aGUgbGlzdCBvZiBleGlzdGluZyBsb2dnZXJzCiAgICAgI3doaWNoIGFyZSBjaGlsZHJlbiBvZiBuYW1lZCBsb2dnZXJzIGhlcmUuLi4KICAgICBjaGlsZF9sb2dnZXJzID0gW10KQEAgLTU4OCw3ICs1ODUsNyBAQAogICAgICAgICAgICAgICAgICNhdm9pZCBkaXNhYmxpbmcgY2hpbGQgbG9nZ2VycyBvZiBleHBsaWNpdGx5CiAgICAgICAgICAgICAgICAgI25hbWVkIGxvZ2dlcnMuIFdpdGggYSBzb3J0ZWQgbGlzdCBpdCBpcyBlYXNpZXIKICAgICAgICAgICAgICAgICAjdG8gZmluZCB0aGUgY2hpbGQgbG9nZ2Vycy4KLSAgICAgICAgICAgICAgICBleGlzdGluZy5zb3J0KGtleT1fZW5jb2RlZCkKKyAgICAgICAgICAgICAgICBleGlzdGluZy5zb3J0KCkKICAgICAgICAgICAgICAgICAjV2UnbGwga2VlcCB0aGUgbGlzdCBvZiBleGlzdGluZyBsb2dnZXJzCiAgICAgICAgICAgICAgICAgI3doaWNoIGFyZSBjaGlsZHJlbiBvZiBuYW1lZCBsb2dnZXJzIGhlcmUuLi4KICAgICAgICAgICAgICAgICBjaGlsZF9sb2dnZXJzID0gW10KQEAgLTc4Niw3ICs3ODMsNyBAQAogICAgIGFuZCB3aGljaCB5b3UgY2FuIGpvaW4oKSB3aGVuIGFwcHJvcHJpYXRlLiBUbyBzdG9wIHRoZSBzZXJ2ZXIsIGNhbGwKICAgICBzdG9wTGlzdGVuaW5nKCkuCiAgICAgIiIiCi0gICAgaWYgbm90IHRocmVhZDoKKyAgICBpZiBub3QgdGhyZWFkOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJsaXN0ZW4oKSBuZWVkcyB0aHJlYWRpbmcgdG8gd29yayIpCiAKICAgICBjbGFzcyBDb25maWdTdHJlYW1IYW5kbGVyKFN0cmVhbVJlcXVlc3RIYW5kbGVyKToKQEAgLTgwNCw3ICs4MDEsNiBAQAogICAgICAgICAgICAgc3RydWN0LnBhY2soIj5MIiwgbiksIGZvbGxvd2VkIGJ5IHRoZSBjb25maWcgZmlsZS4KICAgICAgICAgICAgIFVzZXMgZmlsZUNvbmZpZygpIHRvIGRvIHRoZSBncnVudCB3b3JrLgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgdGVtcGZpbGUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjb25uID0gc2VsZi5jb25uZWN0aW9uCiAgICAgICAgICAgICAgICAgY2h1bmsgPSBjb25uLnJlY3YoNCkKQEAgLTgyNSw3ICs4MjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGlvLlN0cmluZ0lPKGNodW5rKQogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVDb25maWcoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5IGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKaW5kZXggZDRkZjVjNi4uMWJhZDg1NiAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKKysrIGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKQEAgLTI0LDE4ICsyNCwxNCBAQAogIiIiCiAKIGltcG9ydCBlcnJubywgbG9nZ2luZywgc29ja2V0LCBvcywgcGlja2xlLCBzdHJ1Y3QsIHRpbWUsIHJlCitmcm9tIGNvZGVjcyBpbXBvcnQgQk9NX1VURjgKIGZyb20gc3RhdCBpbXBvcnQgU1RfREVWLCBTVF9JTk8sIFNUX01USU1FCiBpbXBvcnQgcXVldWUKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgSW1wb3J0RXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgdGhyZWFkaW5nID0gTm9uZQogCi10cnk6Ci0gICAgaW1wb3J0IGNvZGVjcwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGNvZGVjcyA9IE5vbmUKLQogIwogIyBTb21lIGNvbnN0YW50cy4uLgogIwpAQCAtNTUsMTUgKzUxLDE1IEBACiAgICAgTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseS4gIEluc3RlYWQsIHVzZSBSb3RhdGluZ0ZpbGVIYW5kbGVyCiAgICAgb3IgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9MCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBVc2UgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSBmb3Igc3RyZWFtZWQgbG9nZ2luZwogICAgICAgICAiIiIKLSAgICAgICAgaWYgY29kZWNzIGlzIE5vbmU6Ci0gICAgICAgICAgICBlbmNvZGluZyA9IE5vbmUKICAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2RpbmcsIGRlbGF5KQogICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZworICAgICAgICBzZWxmLm5hbWVyID0gTm9uZQorICAgICAgICBzZWxmLnJvdGF0b3IgPSBOb25lCiAKICAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgICAiIiIKQEAgLTc2LDE3ICs3Miw1NSBAQAogICAgICAgICAgICAgaWYgc2VsZi5zaG91bGRSb2xsb3ZlcihyZWNvcmQpOgogICAgICAgICAgICAgICAgIHNlbGYuZG9Sb2xsb3ZlcigpCiAgICAgICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKIAorICAgIGRlZiByb3RhdGlvbl9maWxlbmFtZShzZWxmLCBkZWZhdWx0X25hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgTW9kaWZ5IHRoZSBmaWxlbmFtZSBvZiBhIGxvZyBmaWxlIHdoZW4gcm90YXRpbmcuCisKKyAgICAgICAgVGhpcyBpcyBwcm92aWRlZCBzbyB0aGF0IGEgY3VzdG9tIGZpbGVuYW1lIGNhbiBiZSBwcm92aWRlZC4KKworICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ25hbWVyJyBhdHRyaWJ1dGUgb2YgdGhlCisgICAgICAgIGhhbmRsZXIsIGlmIGl0J3MgY2FsbGFibGUsIHBhc3NpbmcgdGhlIGRlZmF1bHQgbmFtZSB0bworICAgICAgICBpdC4gSWYgdGhlIGF0dHJpYnV0ZSBpc24ndCBjYWxsYWJsZSAodGhlIGRlZmF1bHQgaXMgTm9uZSksIHRoZSBuYW1lCisgICAgICAgIGlzIHJldHVybmVkIHVuY2hhbmdlZC4KKworICAgICAgICA6cGFyYW0gZGVmYXVsdF9uYW1lOiBUaGUgZGVmYXVsdCBuYW1lIGZvciB0aGUgbG9nIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgY2FsbGFibGUoc2VsZi5uYW1lcik6CisgICAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0X25hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYubmFtZXIoZGVmYXVsdF9uYW1lKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgcm90YXRlKHNlbGYsIHNvdXJjZSwgZGVzdCk6CisgICAgICAgICIiIgorICAgICAgICBXaGVuIHJvdGF0aW5nLCByb3RhdGUgdGhlIGN1cnJlbnQgbG9nLgorCisgICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSAncm90YXRvcicgYXR0cmlidXRlIG9mIHRoZQorICAgICAgICBoYW5kbGVyLCBpZiBpdCdzIGNhbGxhYmxlLCBwYXNzaW5nIHRoZSBzb3VyY2UgYW5kIGRlc3QgYXJndW1lbnRzIHRvCisgICAgICAgIGl0LiBJZiB0aGUgYXR0cmlidXRlIGlzbid0IGNhbGxhYmxlICh0aGUgZGVmYXVsdCBpcyBOb25lKSwgdGhlIHNvdXJjZQorICAgICAgICBpcyBzaW1wbHkgcmVuYW1lZCB0byB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgOnBhcmFtIHNvdXJjZTogVGhlIHNvdXJjZSBmaWxlbmFtZS4gVGhpcyBpcyBub3JtYWxseSB0aGUgYmFzZQorICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZS5nLiAndGVzdC5sb2cnCisgICAgICAgIDpwYXJhbSBkZXN0OiAgIFRoZSBkZXN0aW5hdGlvbiBmaWxlbmFtZS4gVGhpcyBpcyBub3JtYWxseQorICAgICAgICAgICAgICAgICAgICAgICB3aGF0IHRoZSBzb3VyY2UgaXMgcm90YXRlZCB0bywgZS5nLiAndGVzdC5sb2cuMScuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgY2FsbGFibGUoc2VsZi5yb3RhdG9yKToKKyAgICAgICAgICAgIG9zLnJlbmFtZShzb3VyY2UsIGRlc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnJvdGF0b3Ioc291cmNlLCBkZXN0KQorCiBjbGFzcyBSb3RhdGluZ0ZpbGVIYW5kbGVyKEJhc2VSb3RhdGluZ0hhbmRsZXIpOgogICAgICIiIgogICAgIEhhbmRsZXIgZm9yIGxvZ2dpbmcgdG8gYSBzZXQgb2YgZmlsZXMsIHdoaWNoIHN3aXRjaGVzIGZyb20gb25lIGZpbGUKICAgICB0byB0aGUgbmV4dCB3aGVuIHRoZSBjdXJyZW50IGZpbGUgcmVhY2hlcyBhIGNlcnRhaW4gc2l6ZS4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBtYXhCeXRlcz0wLCBiYWNrdXBDb3VudD0wLCBlbmNvZGluZz1Ob25lLCBkZWxheT0wKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBtYXhCeXRlcz0wLCBiYWNrdXBDb3VudD0wLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBPcGVuIHRoZSBzcGVjaWZpZWQgZmlsZSBhbmQgdXNlIGl0IGFzIHRoZSBzdHJlYW0gZm9yIGxvZ2dpbmcuCiAKQEAgLTEyNywxNiArMTYxLDE3IEBACiAgICAgICAgICAgICBzZWxmLnN0cmVhbSA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5iYWNrdXBDb3VudCA+IDA6CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLmJhY2t1cENvdW50IC0gMSwgMCwgLTEpOgotICAgICAgICAgICAgICAgIHNmbiA9ICIlcy4lZCIgJSAoc2VsZi5iYXNlRmlsZW5hbWUsIGkpCi0gICAgICAgICAgICAgICAgZGZuID0gIiVzLiVkIiAlIChzZWxmLmJhc2VGaWxlbmFtZSwgaSArIDEpCisgICAgICAgICAgICAgICAgc2ZuID0gc2VsZi5yb3RhdGlvbl9maWxlbmFtZSgiJXMuJWQiICUgKHNlbGYuYmFzZUZpbGVuYW1lLCBpKSkKKyAgICAgICAgICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKCIlcy4lZCIgJSAoc2VsZi5iYXNlRmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKyAxKSkKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZm4pOgogICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZm4pOgogICAgICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRmbikKICAgICAgICAgICAgICAgICAgICAgb3MucmVuYW1lKHNmbiwgZGZuKQotICAgICAgICAgICAgZGZuID0gc2VsZi5iYXNlRmlsZW5hbWUgKyAiLjEiCisgICAgICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKHNlbGYuYmFzZUZpbGVuYW1lICsgIi4xIikKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRmbik6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRmbikKLSAgICAgICAgICAgIG9zLnJlbmFtZShzZWxmLmJhc2VGaWxlbmFtZSwgZGZuKQorICAgICAgICAgICAgc2VsZi5yb3RhdGUoc2VsZi5iYXNlRmlsZW5hbWUsIGRmbikKICAgICAgICAgc2VsZi5tb2RlID0gJ3cnCiAgICAgICAgIHNlbGYuc3RyZWFtID0gc2VsZi5fb3BlbigpCiAKQEAgLTE4NCwxOSArMjE5LDE5IEBACiAgICAgICAgIGlmIHNlbGYud2hlbiA9PSAnUyc6CiAgICAgICAgICAgICBzZWxmLmludGVydmFsID0gMSAjIG9uZSBzZWNvbmQKICAgICAgICAgICAgIHNlbGYuc3VmZml4ID0gIiVZLSVtLSVkXyVILSVNLSVTIgotICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9LVxkezJ9LVxkezJ9JCIKKyAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfS1cZHsyfS1cZHsyfShcLlx3Kyk/JCIKICAgICAgICAgZWxpZiBzZWxmLndoZW4gPT0gJ00nOgogICAgICAgICAgICAgc2VsZi5pbnRlcnZhbCA9IDYwICMgb25lIG1pbnV0ZQogICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWRfJUgtJU0iCi0gICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0tXGR7Mn0kIgorICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9LVxkezJ9KFwuXHcrKT8kIgogICAgICAgICBlbGlmIHNlbGYud2hlbiA9PSAnSCc6CiAgICAgICAgICAgICBzZWxmLmludGVydmFsID0gNjAgKiA2MCAjIG9uZSBob3VyCiAgICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZF8lSCIKLSAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfSQiCisgICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgIGVsaWYgc2VsZi53aGVuID09ICdEJyBvciBzZWxmLndoZW4gPT0gJ01JRE5JR0hUJzoKICAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAqIDYwICogMjQgIyBvbmUgZGF5CiAgICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZCIKLSAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfSQiCisgICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgIGVsaWYgc2VsZi53aGVuLnN0YXJ0c3dpdGgoJ1cnKToKICAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAqIDYwICogMjQgKiA3ICMgb25lIHdlZWsKICAgICAgICAgICAgIGlmIGxlbihzZWxmLndoZW4pICE9IDI6CkBAIC0yMDUsNyArMjQwLDcgQEAKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGRheSBzcGVjaWZpZWQgZm9yIHdlZWtseSByb2xsb3ZlcjogJXMiICUgc2VsZi53aGVuKQogICAgICAgICAgICAgc2VsZi5kYXlPZldlZWsgPSBpbnQoc2VsZi53aGVuWzFdKQogICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWQiCi0gICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn0kIgorICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9KFwuXHcrKT8kIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCByb2xsb3ZlciBpbnRlcnZhbCBzcGVjaWZpZWQ6ICVzIiAlIHNlbGYud2hlbikKIApAQCAtMzM4LDEwICszNzMsMTEgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBhZGRlbmQgPSAtMzYwMAogICAgICAgICAgICAgICAgIHRpbWVUdXBsZSA9IHRpbWUubG9jYWx0aW1lKHQgKyBhZGRlbmQpCi0gICAgICAgIGRmbiA9IHNlbGYuYmFzZUZpbGVuYW1lICsgIi4iICsgdGltZS5zdHJmdGltZShzZWxmLnN1ZmZpeCwgdGltZVR1cGxlKQorICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKHNlbGYuYmFzZUZpbGVuYW1lICsgIi4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKHNlbGYuc3VmZml4LCB0aW1lVHVwbGUpKQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZm4pOgogICAgICAgICAgICAgb3MucmVtb3ZlKGRmbikKLSAgICAgICAgb3MucmVuYW1lKHNlbGYuYmFzZUZpbGVuYW1lLCBkZm4pCisgICAgICAgIHNlbGYucm90YXRlKHNlbGYuYmFzZUZpbGVuYW1lLCBkZm4pCiAgICAgICAgIGlmIHNlbGYuYmFja3VwQ291bnQgPiAwOgogICAgICAgICAgICAgZm9yIHMgaW4gc2VsZi5nZXRGaWxlc1RvRGVsZXRlKCk6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHMpCkBAIC0zODEsNyArNDE3LDcgQEAKICAgICBUaGlzIGhhbmRsZXIgaXMgYmFzZWQgb24gYSBzdWdnZXN0aW9uIGFuZCBwYXRjaCBieSBDaGFkIEouCiAgICAgU2Nocm9lZGVyLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIGVuY29kaW5nPU5vbmUsIGRlbGF5PTApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlKToKICAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2RpbmcsIGRlbGF5KQogICAgICAgICBzZWxmLmRldiwgc2VsZi5pbm8gPSAtMSwgLTEKICAgICAgICAgc2VsZi5fc3RhdHN0cmVhbSgpCkBAIC00NDAsMTUgKzQ3NiwxNSBAQAogICAgICAgICAiIiIKICAgICAgICAgSW5pdGlhbGl6ZXMgdGhlIGhhbmRsZXIgd2l0aCBhIHNwZWNpZmljIGhvc3QgYWRkcmVzcyBhbmQgcG9ydC4KIAotICAgICAgICBUaGUgYXR0cmlidXRlICdjbG9zZU9uRXJyb3InIGlzIHNldCB0byAxIC0gd2hpY2ggbWVhbnMgdGhhdCBpZgotICAgICAgICBhIHNvY2tldCBlcnJvciBvY2N1cnMsIHRoZSBzb2NrZXQgaXMgc2lsZW50bHkgY2xvc2VkIGFuZCB0aGVuCi0gICAgICAgIHJlb3BlbmVkIG9uIHRoZSBuZXh0IGxvZ2dpbmcgY2FsbC4KKyAgICAgICAgV2hlbiB0aGUgYXR0cmlidXRlICpjbG9zZU9uRXJyb3IqIGlzIHNldCB0byBUcnVlIC0gaWYgYSBzb2NrZXQgZXJyb3IKKyAgICAgICAgb2NjdXJzLCB0aGUgc29ja2V0IGlzIHNpbGVudGx5IGNsb3NlZCBhbmQgdGhlbiByZW9wZW5lZCBvbiB0aGUgbmV4dAorICAgICAgICBsb2dnaW5nIGNhbGwuCiAgICAgICAgICIiIgogICAgICAgICBsb2dnaW5nLkhhbmRsZXIuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuc29jayA9IE5vbmUKLSAgICAgICAgc2VsZi5jbG9zZU9uRXJyb3IgPSAwCisgICAgICAgIHNlbGYuY2xvc2VPbkVycm9yID0gRmFsc2UKICAgICAgICAgc2VsZi5yZXRyeVRpbWUgPSBOb25lCiAgICAgICAgICMKICAgICAgICAgIyBFeHBvbmVudGlhbCBiYWNrb2ZmIHBhcmFtZXRlcnMuCkBAIC00NjUsOCArNTAxLDEyIEBACiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgIGlmIGhhc2F0dHIocywgJ3NldHRpbWVvdXQnKToKICAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAgICBzLmNvbm5lY3QoKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSkKLSAgICAgICAgcmV0dXJuIHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcy5jb25uZWN0KChzZWxmLmhvc3QsIHNlbGYucG9ydCkpCisgICAgICAgICAgICByZXR1cm4gcworICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIGNyZWF0ZVNvY2tldChzZWxmKToKICAgICAgICAgIiIiCkBAIC00NzksNyArNTE5LDcgQEAKICAgICAgICAgIyBpcyB0aGUgZmlyc3QgdGltZSBiYWNrIGFmdGVyIGEgZGlzY29ubmVjdCwgb3IKICAgICAgICAgIyB3ZSd2ZSB3YWl0ZWQgbG9uZyBlbm91Z2guCiAgICAgICAgIGlmIHNlbGYucmV0cnlUaW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBhdHRlbXB0ID0gMQorICAgICAgICAgICAgYXR0ZW1wdCA9IFRydWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGF0dGVtcHQgPSAobm93ID49IHNlbGYucmV0cnlUaW1lKQogICAgICAgICBpZiBhdHRlbXB0OgpAQCAtNTEyLDE0ICs1NTIsMTQgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYuc29jaywgInNlbmRhbGwiKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLnNlbmRhbGwocykKLSAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVsc2U6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgICAgIHNlbnRzb2ZhciA9IDAKICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGxlbihzKQogICAgICAgICAgICAgICAgICAgICB3aGlsZSBsZWZ0ID4gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNvY2suc2VuZChzW3NlbnRzb2ZhcjpdKQogICAgICAgICAgICAgICAgICAgICAgICAgc2VudHNvZmFyID0gc2VudHNvZmFyICsgc2VudAogICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGxlZnQgLSBzZW50Ci0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQogICAgICAgICAgICAgICAgIHNlbGYuc29jayA9IE5vbmUgICMgc28gd2UgY2FuIGNhbGwgY3JlYXRlU29ja2V0IG5leHQgdGltZQogCkBAIC01NjksNyArNjA5LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcyA9IHNlbGYubWFrZVBpY2tsZShyZWNvcmQpCiAgICAgICAgICAgICBzZWxmLnNlbmQocykKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC02MDMsNyArNjQzLDcgQEAKICAgICAgICAgSW5pdGlhbGl6ZXMgdGhlIGhhbmRsZXIgd2l0aCBhIHNwZWNpZmljIGhvc3QgYWRkcmVzcyBhbmQgcG9ydC4KICAgICAgICAgIiIiCiAgICAgICAgIFNvY2tldEhhbmRsZXIuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCkKLSAgICAgICAgc2VsZi5jbG9zZU9uRXJyb3IgPSAwCisgICAgICAgIHNlbGYuY2xvc2VPbkVycm9yID0gRmFsc2UKIAogICAgIGRlZiBtYWtlU29ja2V0KHNlbGYpOgogICAgICAgICAiIiIKQEAgLTc0NCwxMCArNzg0LDEwIEBACiAgICAgICAgIHNlbGYuc29ja3R5cGUgPSBzb2NrdHlwZQogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgc3RyKToKLSAgICAgICAgICAgIHNlbGYudW5peHNvY2tldCA9IDEKKyAgICAgICAgICAgIHNlbGYudW5peHNvY2tldCA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3RfdW5peHNvY2tldChhZGRyZXNzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gMAorICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja3R5cGUpCiAgICAgICAgICAgICBpZiBzb2NrdHlwZSA9PSBzb2NrZXQuU09DS19TVFJFQU06CiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuY29ubmVjdChhZGRyZXNzKQpAQCAtNzg2LDggKzgyNiw3IEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFjcXVpcmUoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBzZWxmLnVuaXhzb2NrZXQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5zb2NrZXQuY2xvc2UoKQogICAgICAgICAgICAgbG9nZ2luZy5IYW5kbGVyLmNsb3NlKHNlbGYpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQpAQCAtODAyLDYgKzg0MSw3IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5wcmlvcml0eV9tYXAuZ2V0KGxldmVsTmFtZSwgIndhcm5pbmciKQogCisgICAgaWRlbnQgPSAnJyAgICAgICAgICAjIHByZXBlbmRlZCB0byBhbGwgbWVzc2FnZXMKICAgICBhcHBlbmRfbnVsID0gVHJ1ZSAgICMgc29tZSBvbGQgc3lzbG9nIGRhZW1vbnMgZXhwZWN0IGEgTlVMIHRlcm1pbmF0b3IKIAogICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CkBAIC04MTIsNiArODUyLDggQEAKICAgICAgICAgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIHByZXNlbnQsIGl0IGlzIE5PVCBzZW50IHRvIHRoZSBzZXJ2ZXIuCiAgICAgICAgICIiIgogICAgICAgICBtc2cgPSBzZWxmLmZvcm1hdChyZWNvcmQpCisgICAgICAgIGlmIHNlbGYuaWRlbnQ6CisgICAgICAgICAgICBtc2cgPSBzZWxmLmlkZW50ICsgbXNnCiAgICAgICAgIGlmIHNlbGYuYXBwZW5kX251bDoKICAgICAgICAgICAgIG1zZyArPSAnXDAwMCcKICAgICAgICAgIiIiCkBAIC04MzUsNyArODc3LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5zZW5kdG8obXNnLCBzZWxmLmFkZHJlc3MpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnNlbmRhbGwobXNnKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTg0NSw3ICs4ODcsNyBAQAogICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCBzZW5kcyBhbiBTTVRQIGVtYWlsIGZvciBlYWNoIGxvZ2dpbmcgZXZlbnQuCiAgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1haWxob3N0LCBmcm9tYWRkciwgdG9hZGRycywgc3ViamVjdCwKLSAgICAgICAgICAgICAgICAgY3JlZGVudGlhbHM9Tm9uZSwgc2VjdXJlPU5vbmUpOgorICAgICAgICAgICAgICAgICBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSwgdGltZW91dD01LjApOgogICAgICAgICAiIiIKICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgaGFuZGxlci4KIApAQCAtODU5LDYgKzkwMSw4IEBACiAgICAgICAgIHdpbGwgYmUgZWl0aGVyIGFuIGVtcHR5IHR1cGxlLCBvciBhIHNpbmdsZS12YWx1ZSB0dXBsZSB3aXRoIHRoZSBuYW1lCiAgICAgICAgIG9mIGEga2V5ZmlsZSwgb3IgYSAyLXZhbHVlIHR1cGxlIHdpdGggdGhlIG5hbWVzIG9mIHRoZSBrZXlmaWxlIGFuZAogICAgICAgICBjZXJ0aWZpY2F0ZSBmaWxlLiAoVGhpcyB0dXBsZSBpcyBwYXNzZWQgdG8gdGhlIGBzdGFydHRsc2AgbWV0aG9kKS4KKyAgICAgICAgQSB0aW1lb3V0IGluIHNlY29uZHMgY2FuIGJlIHNwZWNpZmllZCBmb3IgdGhlIFNNVFAgY29ubmVjdGlvbiAodGhlCisgICAgICAgIGRlZmF1bHQgaXMgb25lIHNlY29uZCkuCiAgICAgICAgICIiIgogICAgICAgICBsb2dnaW5nLkhhbmRsZXIuX19pbml0X18oc2VsZikKICAgICAgICAgaWYgaXNpbnN0YW5jZShtYWlsaG9zdCwgdHVwbGUpOgpAQCAtODc1LDcgKzkxOSw3IEBACiAgICAgICAgIHNlbGYudG9hZGRycyA9IHRvYWRkcnMKICAgICAgICAgc2VsZi5zdWJqZWN0ID0gc3ViamVjdAogICAgICAgICBzZWxmLnNlY3VyZSA9IHNlY3VyZQotICAgICAgICBzZWxmLl90aW1lb3V0ID0gNS4wCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKIAogICAgIGRlZiBnZXRTdWJqZWN0KHNlbGYsIHJlY29yZCk6CiAgICAgICAgICIiIgpAQCAtODk4LDcgKzk0Miw3IEBACiAgICAgICAgICAgICBwb3J0ID0gc2VsZi5tYWlscG9ydAogICAgICAgICAgICAgaWYgbm90IHBvcnQ6CiAgICAgICAgICAgICAgICAgcG9ydCA9IHNtdHBsaWIuU01UUF9QT1JUCi0gICAgICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKHNlbGYubWFpbGhvc3QsIHBvcnQsIHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKKyAgICAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoc2VsZi5tYWlsaG9zdCwgcG9ydCwgdGltZW91dD1zZWxmLnRpbWVvdXQpCiAgICAgICAgICAgICBtc2cgPSBzZWxmLmZvcm1hdChyZWNvcmQpCiAgICAgICAgICAgICBtc2cgPSAiRnJvbTogJXNcclxuVG86ICVzXHJcblN1YmplY3Q6ICVzXHJcbkRhdGU6ICVzXHJcblxyXG4lcyIgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mcm9tYWRkciwKQEAgLTkxMyw3ICs5NTcsNyBAQAogICAgICAgICAgICAgICAgIHNtdHAubG9naW4oc2VsZi51c2VybmFtZSwgc2VsZi5wYXNzd29yZCkKICAgICAgICAgICAgIHNtdHAuc2VuZG1haWwoc2VsZi5mcm9tYWRkciwgc2VsZi50b2FkZHJzLCBtc2cpCiAgICAgICAgICAgICBzbXRwLnF1aXQoKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTEwMDAsNyArMTA0NCw3IEBACiAgICAgICAgICAgICAgICAgdHlwZSA9IHNlbGYuZ2V0RXZlbnRUeXBlKHJlY29yZCkKICAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLmZvcm1hdChyZWNvcmQpCiAgICAgICAgICAgICAgICAgc2VsZi5fd2VsdS5SZXBvcnRFdmVudChzZWxmLmFwcG5hbWUsIGlkLCBjYXQsIHR5cGUsIFttc2ddKQotICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtMTA4Myw5ICsxMTI3LDExIEBACiAgICAgICAgICAgICAgICAgcyA9ICgndSVzOiVzJyAlIHNlbGYuY3JlZGVudGlhbHMpLmVuY29kZSgndXRmLTgnKQogICAgICAgICAgICAgICAgIHMgPSAnQmFzaWMgJyArIGJhc2U2NC5iNjRlbmNvZGUocykuc3RyaXAoKQogICAgICAgICAgICAgICAgIGgucHV0aGVhZGVyKCdBdXRob3JpemF0aW9uJywgcykKLSAgICAgICAgICAgIGguZW5kaGVhZGVycyhkYXRhIGlmIHNlbGYubWV0aG9kID09ICJQT1NUIiBlbHNlIE5vbmUpCisgICAgICAgICAgICBoLmVuZGhlYWRlcnMoKQorICAgICAgICAgICAgaWYgc2VsZi5tZXRob2QgPT0gIlBPU1QiOgorICAgICAgICAgICAgICAgIGguc2VuZChkYXRhLmVuY29kZSgndXRmLTgnKSkKICAgICAgICAgICAgIGguZ2V0cmVzcG9uc2UoKSAgICAjY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGUgcmVzdWx0Ci0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtMTI2Nyw3ICsxMzEzLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuZW5xdWV1ZShzZWxmLnByZXBhcmUocmVjb3JkKSkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC0xMzY0LDYgKzE0MTAsMTYgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICAgICAgZGVmIGVucXVldWVfc2VudGluZWwoc2VsZik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFRoaXMgaXMgdXNlZCB0byBlbnF1ZXVlIHRoZSBzZW50aW5lbCByZWNvcmQuCisKKyAgICAgICAgICAgIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHVzZXMgcHV0X25vd2FpdC4gWW91IG1heSB3YW50IHRvIG92ZXJyaWRlIHRoaXMKKyAgICAgICAgICAgIG1ldGhvZCBpZiB5b3Ugd2FudCB0byB1c2UgdGltZW91dHMgb3Igd29yayB3aXRoIGN1c3RvbSBxdWV1ZQorICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dhaXQoc2VsZi5fc2VudGluZWwpCisKICAgICAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIFN0b3AgdGhlIGxpc3RlbmVyLgpAQCAtMTM3Myw2ICsxNDI5LDYgQEAKICAgICAgICAgICAgIG1heSBiZSBzb21lIHJlY29yZHMgc3RpbGwgbGVmdCBvbiB0aGUgcXVldWUsIHdoaWNoIHdvbid0IGJlIHByb2Nlc3NlZC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgc2VsZi5fc3RvcC5zZXQoKQotICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHNlbGYuX3NlbnRpbmVsKQorICAgICAgICAgICAgc2VsZi5lbnF1ZXVlX3NlbnRpbmVsKCkKICAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKCkKICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9sem1hLnB5IGIvTGliL2x6bWEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWExYjA2NQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9sem1hLnB5CkBAIC0wLDAgKzEsNDU0IEBACisiIiJJbnRlcmZhY2UgdG8gdGhlIGxpYmx6bWEgY29tcHJlc3Npb24gbGlicmFyeS4KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjbGFzcyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBjb21wcmVzc2VkIGZpbGVzLAorY2xhc3NlcyBmb3IgaW5jcmVtZW50YWwgKGRlKWNvbXByZXNzaW9uLCBhbmQgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvcgorb25lLXNob3QgKGRlKWNvbXByZXNzaW9uLgorCitUaGVzZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgc3VwcG9ydCBib3RoIHRoZSBYWiBhbmQgbGVnYWN5IExaTUEKK2NvbnRhaW5lciBmb3JtYXRzLCBhcyB3ZWxsIGFzIHJhdyBjb21wcmVzc2VkIGRhdGEgc3RyZWFtcy4KKyIiIgorCitfX2FsbF9fID0gWworICAgICJDSEVDS19OT05FIiwgIkNIRUNLX0NSQzMyIiwgIkNIRUNLX0NSQzY0IiwgIkNIRUNLX1NIQTI1NiIsCisgICAgIkNIRUNLX0lEX01BWCIsICJDSEVDS19VTktOT1dOIiwKKyAgICAiRklMVEVSX0xaTUExIiwgIkZJTFRFUl9MWk1BMiIsICJGSUxURVJfREVMVEEiLCAiRklMVEVSX1g4NiIsICJGSUxURVJfSUE2NCIsCisgICAgIkZJTFRFUl9BUk0iLCAiRklMVEVSX0FSTVRIVU1CIiwgIkZJTFRFUl9QT1dFUlBDIiwgIkZJTFRFUl9TUEFSQyIsCisgICAgIkZPUk1BVF9BVVRPIiwgIkZPUk1BVF9YWiIsICJGT1JNQVRfQUxPTkUiLCAiRk9STUFUX1JBVyIsCisgICAgIk1GX0hDMyIsICJNRl9IQzQiLCAiTUZfQlQyIiwgIk1GX0JUMyIsICJNRl9CVDQiLAorICAgICJNT0RFX0ZBU1QiLCAiTU9ERV9OT1JNQUwiLCAiUFJFU0VUX0RFRkFVTFQiLCAiUFJFU0VUX0VYVFJFTUUiLAorCisgICAgIkxaTUFDb21wcmVzc29yIiwgIkxaTUFEZWNvbXByZXNzb3IiLCAiTFpNQUZpbGUiLCAiTFpNQUVycm9yIiwKKyAgICAib3BlbiIsICJjb21wcmVzcyIsICJkZWNvbXByZXNzIiwgImlzX2NoZWNrX3N1cHBvcnRlZCIsCitdCisKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGlvCitmcm9tIF9sem1hIGltcG9ydCAqCitmcm9tIF9sem1hIGltcG9ydCBfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzCisKKworX01PREVfQ0xPU0VEICAgPSAwCitfTU9ERV9SRUFEICAgICA9IDEKK19NT0RFX1JFQURfRU9GID0gMgorX01PREVfV1JJVEUgICAgPSAzCisKK19CVUZGRVJfU0laRSA9IDgxOTIKKworCitjbGFzcyBMWk1BRmlsZShpby5CdWZmZXJlZElPQmFzZSk6CisKKyAgICAiIiJBIGZpbGUgb2JqZWN0IHByb3ZpZGluZyB0cmFuc3BhcmVudCBMWk1BIChkZSljb21wcmVzc2lvbi4KKworICAgIEFuIExaTUFGaWxlIGNhbiBhY3QgYXMgYSB3cmFwcGVyIGZvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgb3IKKyAgICByZWZlciBkaXJlY3RseSB0byBhIG5hbWVkIGZpbGUgb24gZGlzay4KKworICAgIE5vdGUgdGhhdCBMWk1BRmlsZSBwcm92aWRlcyBhICpiaW5hcnkqIGZpbGUgaW50ZXJmYWNlIC0gZGF0YSByZWFkCisgICAgaXMgcmV0dXJuZWQgYXMgYnl0ZXMsIGFuZCBkYXRhIHRvIGJlIHdyaXR0ZW4gbXVzdCBiZSBnaXZlbiBhcyBieXRlcy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZT1Ob25lLCBtb2RlPSJyIiwgKiwKKyAgICAgICAgICAgICAgICAgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKToKKyAgICAgICAgIiIiT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgbW9kZS4KKworICAgICAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyIG9yCisgICAgICAgIGJ5dGVzIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4KKyAgICAgICAgYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICAgICAgIG1vZGUgY2FuIGJlICJyIiBmb3IgcmVhZGluZyAoZGVmYXVsdCksICJ3IiBmb3IgKG92ZXIpd3JpdGluZywgb3IKKyAgICAgICAgImEiIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMgInJiIiwgIndiIiwKKyAgICAgICAgYW5kICJhYiIgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIGZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgdG8gdXNlIGZvciB0aGUgZmlsZS4KKyAgICAgICAgSWYgbW9kZSBpcyAiciIsIHRoaXMgZGVmYXVsdHMgdG8gRk9STUFUX0FVVE8uIE90aGVyd2lzZSwgdGhlCisgICAgICAgIGRlZmF1bHQgaXMgRk9STUFUX1haLgorCisgICAgICAgIGNoZWNrIHNwZWNpZmllcyB0aGUgaW50ZWdyaXR5IGNoZWNrIHRvIHVzZS4gVGhpcyBhcmd1bWVudCBjYW4KKyAgICAgICAgb25seSBiZSB1c2VkIHdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHdyaXRpbmcuIEZvciBGT1JNQVRfWFosCisgICAgICAgIHRoZSBkZWZhdWx0IGlzIENIRUNLX0NSQzY0LiBGT1JNQVRfQUxPTkUgYW5kIEZPUk1BVF9SQVcgZG8gbm90CisgICAgICAgIHN1cHBvcnQgaW50ZWdyaXR5IGNoZWNrcyAtIGZvciB0aGVzZSBmb3JtYXRzLCBjaGVjayBtdXN0IGJlCisgICAgICAgIG9taXR0ZWQsIG9yIGJlIENIRUNLX05PTkUuCisKKyAgICAgICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZywgdGhlICpwcmVzZXQqIGFyZ3VtZW50IGlzIG5vdAorICAgICAgICBtZWFuaW5nZnVsLCBhbmQgc2hvdWxkIGJlIG9taXR0ZWQuIFRoZSAqZmlsdGVycyogYXJndW1lbnQgc2hvdWxkCisgICAgICAgIGFsc28gYmUgb21pdHRlZCwgZXhjZXB0IHdoZW4gZm9ybWF0IGlzIEZPUk1BVF9SQVcgKGluIHdoaWNoIGNhc2UKKyAgICAgICAgaXQgaXMgcmVxdWlyZWQpLgorCisgICAgICAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHdyaXRpbmcsIHRoZSBzZXR0aW5ncyB1c2VkIGJ5IHRoZQorICAgICAgICBjb21wcmVzc29yIGNhbiBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgcHJlc2V0IGNvbXByZXNzaW9uCisgICAgICAgIGxldmVsICh3aXRoIHRoZSAqcHJlc2V0KiBhcmd1bWVudCksIG9yIGluIGRldGFpbCBhcyBhIGN1c3RvbQorICAgICAgICBmaWx0ZXIgY2hhaW4gKHdpdGggdGhlICpmaWx0ZXJzKiBhcmd1bWVudCkuIEZvciBGT1JNQVRfWFogYW5kCisgICAgICAgIEZPUk1BVF9BTE9ORSwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBQUkVTRVRfREVGQVVMVCBwcmVzZXQKKyAgICAgICAgbGV2ZWwuIEZvciBGT1JNQVRfUkFXLCB0aGUgY2FsbGVyIG11c3QgYWx3YXlzIHNwZWNpZnkgYSBmaWx0ZXIKKyAgICAgICAgY2hhaW47IHRoZSByYXcgY29tcHJlc3NvciBkb2VzIG5vdCBzdXBwb3J0IHByZXNldCBjb21wcmVzc2lvbgorICAgICAgICBsZXZlbHMuCisKKyAgICAgICAgcHJlc2V0IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAtOSwKKyAgICAgICAgb3B0aW9uYWxseSBPUi1lZCB3aXRoIHRoZSBjb25zdGFudCBQUkVTRVRfRVhUUkVNRS4KKworICAgICAgICBmaWx0ZXJzIChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgZGljdHMuIEVhY2ggZGljdAorICAgICAgICBzaG91bGQgaGF2ZSBhbiBlbnRyeSBmb3IgImlkIiBpbmRpY2F0aW5nIElEIG9mIHRoZSBmaWx0ZXIsIHBsdXMKKyAgICAgICAgYWRkaXRpb25hbCBlbnRyaWVzIGZvciBvcHRpb25zIHRvIHRoZSBmaWx0ZXIuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9mcCA9IE5vbmUKKyAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCisgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKKyAgICAgICAgc2VsZi5fcG9zID0gMAorICAgICAgICBzZWxmLl9zaXplID0gLTEKKworICAgICAgICBpZiBtb2RlIGluICgiciIsICJyYiIpOgorICAgICAgICAgICAgaWYgY2hlY2sgIT0gLTE6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNwZWNpZnkgYW4gaW50ZWdyaXR5IGNoZWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGVuIG9wZW5pbmcgYSBmaWxlIGZvciByZWFkaW5nIikKKyAgICAgICAgICAgIGlmIHByZXNldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3Qgc3BlY2lmeSBhIHByZXNldCBjb21wcmVzc2lvbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwgd2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZyIpCisgICAgICAgICAgICBpZiBmb3JtYXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBGT1JNQVRfQVVUTworICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfUkVBRAorICAgICAgICAgICAgIyBTYXZlIHRoZSBhcmdzIHRvIHBhc3MgdG8gdGhlIExaTUFEZWNvbXByZXNzb3IgaW5pdGlhbGl6ZXIuCisgICAgICAgICAgICAjIElmIHRoZSBmaWxlIGNvbnRhaW5zIG11bHRpcGxlIGNvbXByZXNzZWQgc3RyZWFtcywgZWFjaAorICAgICAgICAgICAgIyBzdHJlYW0gd2lsbCBuZWVkIGEgc2VwYXJhdGUgZGVjb21wcmVzc29yIG9iamVjdC4KKyAgICAgICAgICAgIHNlbGYuX2luaXRfYXJncyA9IHsiZm9ybWF0Ijpmb3JtYXQsICJmaWx0ZXJzIjpmaWx0ZXJzfQorICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIsICJhIiwgImFiIik6CisgICAgICAgICAgICBpZiBmb3JtYXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBGT1JNQVRfWFoKKyAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1dSSVRFCisgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gTFpNQUNvbXByZXNzb3IoZm9ybWF0PWZvcm1hdCwgY2hlY2s9Y2hlY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2V0PXByZXNldCwgZmlsdGVycz1maWx0ZXJzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgICAgIGlmICJiIiBub3QgaW4gbW9kZToKKyAgICAgICAgICAgICAgICBtb2RlICs9ICJiIgorICAgICAgICAgICAgc2VsZi5fZnAgPSBidWlsdGlucy5vcGVuKGZpbGVuYW1lLCBtb2RlKQorICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKKyAgICAgICAgZWxpZiBoYXNhdHRyKGZpbGVuYW1lLCAicmVhZCIpIG9yIGhhc2F0dHIoZmlsZW5hbWUsICJ3cml0ZSIpOgorICAgICAgICAgICAgc2VsZi5fZnAgPSBmaWxlbmFtZQorICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiRmx1c2ggYW5kIGNsb3NlIHRoZSBmaWxlLgorCisgICAgICAgIE1heSBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4gT25jZSB0aGUgZmlsZSBpcworICAgICAgICBjbG9zZWQsIGFueSBvdGhlciBvcGVyYXRpb24gb24gaXQgd2lsbCByYWlzZSBhIFZhbHVlRXJyb3IuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX0NMT1NFRDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURToKKyAgICAgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkpCisgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IE5vbmUKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWZwOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5jbG9zZSgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYuX2ZwID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWQoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgdGhpcyBmaWxlIGlzIGNsb3NlZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VECisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIHVuZGVybHlpbmcgZmlsZS4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9mcC5maWxlbm8oKQorCisgICAgZGVmIHNlZWthYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSBzdXBwb3J0cyBzZWVraW5nLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9mcC5zZWVrYWJsZSgpCisKKyAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpCisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURQorCisgICAgIyBNb2RlLWNoZWNraW5nIGhlbHBlciBmdW5jdGlvbnMuCisKKyAgICBkZWYgX2NoZWNrX25vdF9jbG9zZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9yZWFkKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5yZWFkYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHJlYWRpbmciKQorCisgICAgZGVmIF9jaGVja19jYW5fd3JpdGUoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLndyaXRhYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZyIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9zZWVrKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5yZWFkYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlNlZWtpbmcgaXMgb25seSBzdXBwb3J0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGZpbGVzIG9wZW4gZm9yIHJlYWRpbmciKQorICAgICAgICBpZiBub3Qgc2VsZi5fZnAuc2Vla2FibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJUaGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lcyBub3Qgc3VwcG9ydCBzZWVraW5nIikKKworICAgICMgRmlsbCB0aGUgcmVhZGFoZWFkIGJ1ZmZlciBpZiBpdCBpcyBlbXB0eS4gUmV0dXJucyBGYWxzZSBvbiBFT0YuCisgICAgZGVmIF9maWxsX2J1ZmZlcihzZWxmKToKKyAgICAgICAgIyBEZXBlbmRpbmcgb24gdGhlIGlucHV0IGRhdGEsIG91ciBjYWxsIHRvIHRoZSBkZWNvbXByZXNzb3IgbWF5IG5vdAorICAgICAgICAjIHJldHVybiBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCB0cnkgYWdhaW4gYWZ0ZXIgcmVhZGluZyBhbm90aGVyIGJsb2NrLgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgc2VsZi5fYnVmZmVyOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YToKKyAgICAgICAgICAgICAgICByYXdibG9jayA9IHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYXdibG9jayA9IHNlbGYuX2ZwLnJlYWQoX0JVRkZFUl9TSVpFKQorCisgICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQURfRU9GCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpemUgPSBzZWxmLl9wb3MKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKworICAgICAgICAgICAgIyBDb250aW51ZSB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKKworICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2spCisKKyAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCisgICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KKyAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgorICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQorCisgICAgIyBSZWFkIGEgYmxvY2sgb2YgdXAgdG8gbiBieXRlcy4KKyAgICAjIElmIHJldHVybl9kYXRhIGlzIGZhbHNlLCBjb25zdW1lIHRoZSBkYXRhIHdpdGhvdXQgcmV0dXJuaW5nIGl0LgorICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBuLCByZXR1cm5fZGF0YT1UcnVlKToKKyAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbbjpdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXIKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBuIC09IGxlbihkYXRhKQorICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCisKKyAgICBkZWYgcGVlayhzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmV0dXJuIGJ1ZmZlcmVkIGRhdGEgd2l0aG91dCBhZHZhbmNpbmcgdGhlIGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgQWx3YXlzIHJldHVybnMgYXQgbGVhc3Qgb25lIGJ5dGUgb2YgZGF0YSwgdW5sZXNzIGF0IEVPRi4KKyAgICAgICAgVGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBpcyB1bnNwZWNpZmllZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRiBvciBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcgorCisgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KKworICAgICAgICBJZiBzaXplIGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuCisgICAgICAgIFJldHVybnMgYiIiIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgYXQgRU9GLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GIG9yIHNpemUgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgZWxpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2FsbCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9ibG9jayhzaXplKQorCisgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCB3aGlsZSB0cnlpbmcgdG8gYXZvaWQKKyAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgorCisgICAgICAgIFJldHVybnMgYiIiIGlmIHRoZSBmaWxlIGlzIGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgICMgVXN1YWxseSwgcmVhZDEoKSBjYWxscyBfZnAucmVhZCgpIGF0IG1vc3Qgb25jZS4gSG93ZXZlciwgc29tZXRpbWVzCisgICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCisgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgaWYgKHNpemUgPT0gMCBvciBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GIG9yCisgICAgICAgICAgICBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKSk6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIGlmIDAgPCBzaXplIDwgbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyWzpzaXplXQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NpemU6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcgorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIldyaXRlIGEgYnl0ZXMgb2JqZWN0IHRvIHRoZSBmaWxlLgorCisgICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgd3JpdHRlbiwgd2hpY2ggaXMKKyAgICAgICAgYWx3YXlzIGxlbihkYXRhKS4gTm90ZSB0aGF0IGR1ZSB0byBidWZmZXJpbmcsIHRoZSBmaWxlIG9uIGRpc2sKKyAgICAgICAgbWF5IG5vdCByZWZsZWN0IHRoZSBkYXRhIHdyaXR0ZW4gdW50aWwgY2xvc2UoKSBpcyBjYWxsZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jYW5fd3JpdGUoKQorICAgICAgICBjb21wcmVzc2VkID0gc2VsZi5fY29tcHJlc3Nvci5jb21wcmVzcyhkYXRhKQorICAgICAgICBzZWxmLl9mcC53cml0ZShjb21wcmVzc2VkKQorICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBsZW4oZGF0YSkKKworICAgICMgUmV3aW5kIHRoZSBmaWxlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgc3RyZWFtLgorICAgIGRlZiBfcmV3aW5kKHNlbGYpOgorICAgICAgICBzZWxmLl9mcC5zZWVrKDAsIDApCisgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFECisgICAgICAgIHNlbGYuX3BvcyA9IDAKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKKyAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorCisgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9MCk6CisgICAgICAgICIiIkNoYW5nZSB0aGUgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBUaGUgbmV3IHBvc2l0aW9uIGlzIHNwZWNpZmllZCBieSBvZmZzZXQsIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgd2hlbmNlLiBQb3NzaWJsZSB2YWx1ZXMgZm9yIHdoZW5jZSBhcmU6CisKKyAgICAgICAgICAgIDA6IHN0YXJ0IG9mIHN0cmVhbSAoZGVmYXVsdCk6IG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorICAgICAgICAgICAgMTogY3VycmVudCBzdHJlYW0gcG9zaXRpb24KKyAgICAgICAgICAgIDI6IGVuZCBvZiBzdHJlYW07IG9mZnNldCBtdXN0IG5vdCBiZSBwb3NpdGl2ZQorCisgICAgICAgIFJldHVybnMgdGhlIG5ldyBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIE5vdGUgdGhhdCBzZWVraW5nIGlzIGVtdWxhdGVkLCBzcCBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMsCisgICAgICAgIHRoaXMgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9zZWVrKCkKKworICAgICAgICAjIFJlY2FsY3VsYXRlIG9mZnNldCBhcyBhbiBhYnNvbHV0ZSBmaWxlIHBvc2l0aW9uLgorICAgICAgICBpZiB3aGVuY2UgPT0gMDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gMToKKyAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAorICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgorICAgICAgICAgICAgIyBTZWVraW5nIHJlbGF0aXZlIHRvIEVPRiAtIHdlIG5lZWQgdG8ga25vdyB0aGUgZmlsZSdzIHNpemUuCisgICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2FsbChyZXR1cm5fZGF0YT1GYWxzZSkKKyAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3NpemUgKyBvZmZzZXQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHdoZW5jZToge30iLmZvcm1hdCh3aGVuY2UpKQorCisgICAgICAgICMgTWFrZSBpdCBzbyB0aGF0IG9mZnNldCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgZm9yd2FyZC4KKyAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgorICAgICAgICAgICAgc2VsZi5fcmV3aW5kKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKKworICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgZGF0YSB1bnRpbCB3ZSByZWFjaCB0aGUgZGVzaXJlZCBwb3NpdGlvbi4KKyAgICAgICAgaWYgc2VsZi5fbW9kZSAhPSBfTU9ERV9SRUFEX0VPRjoKKyAgICAgICAgICAgIHNlbGYuX3JlYWRfYmxvY2sob2Zmc2V0LCByZXR1cm5fZGF0YT1GYWxzZSkKKworICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisKKyAgICBkZWYgdGVsbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisKKworZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgKiwKKyAgICAgICAgIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSwKKyAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpOgorICAgICIiIk9wZW4gYW4gTFpNQS1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZS4KKworICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0KSwKKyAgICBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0CisgICAgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICAgVGhlIG1vZGUgYXJndW1lbnQgY2FuIGJlICJyIiwgInJiIiAoZGVmYXVsdCksICJ3IiwgIndiIiwgImEiLCBvciAiYWIiIGZvcgorICAgIGJpbmFyeSBtb2RlLCBvciAicnQiLCAid3QiIG9yICJhdCIgZm9yIHRleHQgbW9kZS4KKworICAgIFRoZSBmb3JtYXQsIGNoZWNrLCBwcmVzZXQgYW5kIGZpbHRlcnMgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGNvbXByZXNzaW9uCisgICAgc2V0dGluZ3MsIGFzIGZvciBMWk1BQ29tcHJlc3NvciwgTFpNQURlY29tcHJlc3NvciBhbmQgTFpNQUZpbGUuCisKKyAgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgTFpNQUZpbGUgY29uc3RydWN0b3I6CisgICAgTFpNQUZpbGUoZmlsZW5hbWUsIG1vZGUsIC4uLikuIEluIHRoaXMgY2FzZSwgdGhlIGVuY29kaW5nLCBlcnJvcnMgYW5kCisgICAgbmV3bGluZSBhcmd1bWVudHMgbXVzdCBub3QgYmUgcHJvdmlkZWQuCisKKyAgICBGb3IgdGV4dCBtb2RlLCBhIExaTUFGaWxlIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgorICAgIGlvLlRleHRJT1dyYXBwZXIgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvciBoYW5kbGluZworICAgIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgICAiIiIKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgaWYgImIiIGluIG1vZGU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6ICVyIiAlIChtb2RlLCkpCisgICAgZWxzZToKKyAgICAgICAgaWYgZW5jb2RpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZW5jb2RpbmcnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorICAgICAgICBpZiBlcnJvcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZXJyb3JzJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICduZXdsaW5lJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKworICAgIGx6X21vZGUgPSBtb2RlLnJlcGxhY2UoInQiLCAiIikKKyAgICBiaW5hcnlfZmlsZSA9IExaTUFGaWxlKGZpbGVuYW1lLCBsel9tb2RlLCBmb3JtYXQ9Zm9ybWF0LCBjaGVjaz1jaGVjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNldD1wcmVzZXQsIGZpbHRlcnM9ZmlsdGVycykKKworICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICByZXR1cm4gaW8uVGV4dElPV3JhcHBlcihiaW5hcnlfZmlsZSwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gYmluYXJ5X2ZpbGUKKworCitkZWYgY29tcHJlc3MoZGF0YSwgZm9ybWF0PUZPUk1BVF9YWiwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpOgorICAgICIiIkNvbXByZXNzIGEgYmxvY2sgb2YgZGF0YS4KKworICAgIFJlZmVyIHRvIExaTUFDb21wcmVzc29yJ3MgZG9jc3RyaW5nIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZQorICAgIG9wdGlvbmFsIGFyZ3VtZW50cyAqZm9ybWF0KiwgKmNoZWNrKiwgKnByZXNldCogYW5kICpmaWx0ZXJzKi4KKworICAgIEZvciBpbmNyZW1lbnRhbCBjb21wcmVzc2lvbiwgdXNlIGFuIExaTUFDb21wcmVzc29yIG9iamVjdCBpbnN0ZWFkLgorICAgICIiIgorICAgIGNvbXAgPSBMWk1BQ29tcHJlc3Nvcihmb3JtYXQsIGNoZWNrLCBwcmVzZXQsIGZpbHRlcnMpCisgICAgcmV0dXJuIGNvbXAuY29tcHJlc3MoZGF0YSkgKyBjb21wLmZsdXNoKCkKKworCitkZWYgZGVjb21wcmVzcyhkYXRhLCBmb3JtYXQ9Rk9STUFUX0FVVE8sIG1lbWxpbWl0PU5vbmUsIGZpbHRlcnM9Tm9uZSk6CisgICAgIiIiRGVjb21wcmVzcyBhIGJsb2NrIG9mIGRhdGEuCisKKyAgICBSZWZlciB0byBMWk1BRGVjb21wcmVzc29yJ3MgZG9jc3RyaW5nIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZQorICAgIG9wdGlvbmFsIGFyZ3VtZW50cyAqZm9ybWF0KiwgKmNoZWNrKiBhbmQgKmZpbHRlcnMqLgorCisgICAgRm9yIGluY3JlbWVudGFsIGRlY29tcHJlc3Npb24sIHVzZSBhIExaTUFEZWNvbXByZXNzb3Igb2JqZWN0IGluc3RlYWQuCisgICAgIiIiCisgICAgcmVzdWx0cyA9IFtdCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgZGVjb21wID0gTFpNQURlY29tcHJlc3Nvcihmb3JtYXQsIG1lbWxpbWl0LCBmaWx0ZXJzKQorICAgICAgICByZXN1bHRzLmFwcGVuZChkZWNvbXAuZGVjb21wcmVzcyhkYXRhKSkKKyAgICAgICAgaWYgbm90IGRlY29tcC5lb2Y6CisgICAgICAgICAgICByYWlzZSBMWk1BRXJyb3IoIkNvbXByZXNzZWQgZGF0YSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQorICAgICAgICBpZiBub3QgZGVjb21wLnVudXNlZF9kYXRhOgorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKHJlc3VsdHMpCisgICAgICAgICMgVGhlcmUgaXMgdW51c2VkIGRhdGEgbGVmdCBvdmVyLiBQcm9jZWVkIHRvIG5leHQgc3RyZWFtLgorICAgICAgICBkYXRhID0gZGVjb21wLnVudXNlZF9kYXRhCmRpZmYgLS1naXQgYS9MaWIvbWFpbGJveC5weSBiL0xpYi9tYWlsYm94LnB5CmluZGV4IDI4MmMwNTUuLjE4NDFiMGYgMTAwNjQ0Ci0tLSBhL0xpYi9tYWlsYm94LnB5CisrKyBiL0xpYi9tYWlsYm94LnB5CkBAIC0xMTI1LDggKzExMjUsNyBAQAogICAgIGRlZiBnZXRfc2VxdWVuY2VzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBuYW1lLXRvLWtleS1saXN0IGRpY3Rpb25hcnkgdG8gZGVmaW5lIGVhY2ggc2VxdWVuY2UuIiIiCiAgICAgICAgIHJlc3VsdHMgPSB7fQotICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJy5taF9zZXF1ZW5jZXMnKSwgJ3InKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJy5taF9zZXF1ZW5jZXMnKSwgJ3InLCBlbmNvZGluZz0nQVNDSUknKSBhcyBmOgogICAgICAgICAgICAgYWxsX2tleXMgPSBzZXQoc2VsZi5rZXlzKCkpCiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTExNDUsMTMgKzExNDQsMTEgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRm9ybWF0RXJyb3IoJ0ludmFsaWQgc2VxdWVuY2Ugc3BlY2lmaWNhdGlvbjogJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5yc3RyaXAoKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICByZXR1cm4gcmVzdWx0cwogCiAgICAgZGVmIHNldF9zZXF1ZW5jZXMoc2VsZiwgc2VxdWVuY2VzKToKICAgICAgICAgIiIiU2V0IHNlcXVlbmNlcyB1c2luZyB0aGUgZ2l2ZW4gbmFtZS10by1rZXktbGlzdCBkaWN0aW9uYXJ5LiIiIgotICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJy5taF9zZXF1ZW5jZXMnKSwgJ3IrJykKKyAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcubWhfc2VxdWVuY2VzJyksICdyKycsIGVuY29kaW5nPSdBU0NJSScpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLmNsb3NlKG9zLm9wZW4oZi5uYW1lLCBvcy5PX1dST05MWSB8IG9zLk9fVFJVTkMpKQogICAgICAgICAgICAgZm9yIG5hbWUsIGtleXMgaW4gc2VxdWVuY2VzLml0ZW1zKCk6CkBAIC0xNDkxLDkgKzE0ODgsMTAgQEAKIAogICAgIGRlZiBfYmVjb21lX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgICIiIkFzc3VtZSB0aGUgbm9uLWZvcm1hdC1zcGVjaWZpYyBzdGF0ZSBvZiBtZXNzYWdlLiIiIgotICAgICAgICBmb3IgbmFtZSBpbiAoJ19oZWFkZXJzJywgJ191bml4ZnJvbScsICdfcGF5bG9hZCcsICdfY2hhcnNldCcsCi0gICAgICAgICAgICAgICAgICAgICAncHJlYW1ibGUnLCAnZXBpbG9ndWUnLCAnZGVmZWN0cycsICdfZGVmYXVsdF90eXBlJyk6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0gbWVzc2FnZS5fX2RpY3RfX1tuYW1lXQorICAgICAgICB0eXBlX3NwZWNpZmljID0gZ2V0YXR0cihtZXNzYWdlLCAnX3R5cGVfc3BlY2lmaWNfYXR0cmlidXRlcycsIFtdKQorICAgICAgICBmb3IgbmFtZSBpbiBtZXNzYWdlLl9fZGljdF9fOgorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gdHlwZV9zcGVjaWZpYzoKKyAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0gbWVzc2FnZS5fX2RpY3RfX1tuYW1lXQogCiAgICAgZGVmIF9leHBsYWluX3RvKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICAiIiJDb3B5IGZvcm1hdC1zcGVjaWZpYyBzdGF0ZSB0byBtZXNzYWdlIGluc29mYXIgYXMgcG9zc2libGUuIiIiCkBAIC0xNTA2LDYgKzE1MDQsOCBAQAogY2xhc3MgTWFpbGRpck1lc3NhZ2UoTWVzc2FnZSk6CiAgICAgIiIiTWVzc2FnZSB3aXRoIE1haWxkaXItc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKIAorICAgIF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMgPSBbJ19zdWJkaXInLCAnX2luZm8nLCAnX2RhdGUnXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBNYWlsZGlyTWVzc2FnZSBpbnN0YW5jZS4iIiIKICAgICAgICAgc2VsZi5fc3ViZGlyID0gJ25ldycKQEAgLTE2MTMsNiArMTYxMyw4IEBACiBjbGFzcyBfbWJveE1NREZNZXNzYWdlKE1lc3NhZ2UpOgogICAgICIiIk1lc3NhZ2Ugd2l0aCBtYm94LSBvciBNTURGLXNwZWNpZmljIHByb3BlcnRpZXMuIiIiCiAKKyAgICBfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzID0gWydfZnJvbSddCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZT1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBtYm94TU1ERk1lc3NhZ2UgaW5zdGFuY2UuIiIiCiAgICAgICAgIHNlbGYuc2V0X2Zyb20oJ01BSUxFUi1EQUVNT04nLCBUcnVlKQpAQCAtMTcyOCw2ICsxNzMwLDggQEAKIGNsYXNzIE1ITWVzc2FnZShNZXNzYWdlKToKICAgICAiIiJNZXNzYWdlIHdpdGggTUgtc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKIAorICAgIF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMgPSBbJ19zZXF1ZW5jZXMnXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW4gTUhNZXNzYWdlIGluc3RhbmNlLiIiIgogICAgICAgICBzZWxmLl9zZXF1ZW5jZXMgPSBbXQpAQCAtMTc5OCw2ICsxODAyLDggQEAKIGNsYXNzIEJhYnlsTWVzc2FnZShNZXNzYWdlKToKICAgICAiIiJNZXNzYWdlIHdpdGggQmFieWwtc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKIAorICAgIF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMgPSBbJ19sYWJlbHMnLCAnX3Zpc2libGUnXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW4gQmFieWxNZXNzYWdlIGluc3RhbmNlLiIiIgogICAgICAgICBzZWxmLl9sYWJlbHMgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL21haWxjYXAucHkgYi9MaWIvbWFpbGNhcC5weQppbmRleCA0YWUxM2Q3Li45OWY0OTU4IDEwMDY0NAotLS0gYS9MaWIvbWFpbGNhcC5weQorKysgYi9MaWIvbWFpbGNhcC5weQpAQCAtMzMsMTAgKzMzLDEwIEBACiAKIGRlZiBsaXN0bWFpbGNhcGZpbGVzKCk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgbWFpbGNhcCBmaWxlcyBmb3VuZCBvbiB0aGUgc3lzdGVtLiIiIgotICAgICMgWFhYIEFjdHVhbGx5LCB0aGlzIGlzIFVuaXgtc3BlY2lmaWMKKyAgICAjIFRoaXMgaXMgbW9zdGx5IGEgVW5peCB0aGluZywgYnV0IHdlIHVzZSB0aGUgT1MgcGF0aCBzZXBhcmF0b3IgYW55d2F5CiAgICAgaWYgJ01BSUxDQVBTJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICBzdHIgPSBvcy5lbnZpcm9uWydNQUlMQ0FQUyddCi0gICAgICAgIG1haWxjYXBzID0gc3RyLnNwbGl0KCc6JykKKyAgICAgICAgcGF0aHN0ciA9IG9zLmVudmlyb25bJ01BSUxDQVBTJ10KKyAgICAgICAgbWFpbGNhcHMgPSBwYXRoc3RyLnNwbGl0KG9zLnBhdGhzZXApCiAgICAgZWxzZToKICAgICAgICAgaWYgJ0hPTUUnIGluIG9zLmVudmlyb246CiAgICAgICAgICAgICBob21lID0gb3MuZW52aXJvblsnSE9NRSddCmRpZmYgLS1naXQgYS9MaWIvbWltZXR5cGVzLnB5IGIvTGliL21pbWV0eXBlcy5weQppbmRleCA4Y2UwMmY5Li4zZjBiZDBlIDEwMDY0NAotLS0gYS9MaWIvbWltZXR5cGVzLnB5CisrKyBiL0xpYi9taW1ldHlwZXMucHkKQEAgLTI0OSw3ICsyNDksNiBAQAogICAgICAgICAgICAgICAgICAgICB5aWVsZCBjdHlwZQogICAgICAgICAgICAgICAgIGkgKz0gMQogCi0gICAgICAgIGRlZmF1bHRfZW5jb2RpbmcgPSBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkKICAgICAgICAgd2l0aCBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0NMQVNTRVNfUk9PVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidNSU1FXERhdGFiYXNlXENvbnRlbnQgVHlwZScpIGFzIG1pbWVkYjoKICAgICAgICAgICAgIGZvciBjdHlwZSBpbiBlbnVtX3R5cGVzKG1pbWVkYik6CkBAIC00MzQsNiArNDMzLDggQEAKICAgICAgICAgJy5rc2gnICAgIDogJ3RleHQvcGxhaW4nLAogICAgICAgICAnLmxhdGV4JyAgOiAnYXBwbGljYXRpb24veC1sYXRleCcsCiAgICAgICAgICcubTF2JyAgICA6ICd2aWRlby9tcGVnJywKKyAgICAgICAgJy5tM3UnICAgIDogJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsJywKKyAgICAgICAgJy5tM3U4JyAgIDogJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsJywKICAgICAgICAgJy5tYW4nICAgIDogJ2FwcGxpY2F0aW9uL3gtdHJvZmYtbWFuJywKICAgICAgICAgJy5tZScgICAgIDogJ2FwcGxpY2F0aW9uL3gtdHJvZmYtbWUnLAogICAgICAgICAnLm1odCcgICAgOiAnbWVzc2FnZS9yZmM4MjInLApkaWZmIC0tZ2l0IGEvTGliL21vZHVsZWZpbmRlci5weSBiL0xpYi9tb2R1bGVmaW5kZXIucHkKaW5kZXggZjAzM2JhOS4uNjgzZTMwNSAxMDA2NDQKLS0tIGEvTGliL21vZHVsZWZpbmRlci5weQorKysgYi9MaWIvbW9kdWxlZmluZGVyLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiRmluZCBtb2R1bGVzIHVzZWQgYnkgYSBzY3JpcHQsIHVzaW5nIGludHJvc3BlY3Rpb24uIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgZ2VuZXJhdG9ycwogaW1wb3J0IGRpcwogaW1wb3J0IGltcAogaW1wb3J0IG1hcnNoYWwKQEAgLTksOCArOCw2IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCBzdHJ1Y3QKIAotUkVBRF9NT0RFID0gInJVIgotCiAjIFhYWCBDbGVhbiB1cCBvbmNlIHN0cjgncyBjc3RvciBtYXRjaGVzIGJ5dGVzLgogTE9BRF9DT05TVCA9IGJ5dGVzKFtkaXMub3BuYW1lLmluZGV4KCdMT0FEX0NPTlNUJyldKQogSU1QT1JUX05BTUUgPSBieXRlcyhbZGlzLm9wbmFtZS5pbmRleCgnSU1QT1JUX05BTUUnKV0pCkBAIC0yOSw5ICsyNiw3IEBACiAKICMgQSBQdWJsaWMgaW50ZXJmYWNlCiBkZWYgQWRkUGFja2FnZVBhdGgocGFja2FnZW5hbWUsIHBhdGgpOgotICAgIHBhdGhzID0gcGFja2FnZVBhdGhNYXAuZ2V0KHBhY2thZ2VuYW1lLCBbXSkKLSAgICBwYXRocy5hcHBlbmQocGF0aCkKLSAgICBwYWNrYWdlUGF0aE1hcFtwYWNrYWdlbmFtZV0gPSBwYXRocworICAgIHBhY2thZ2VQYXRoTWFwLnNldGRlZmF1bHQocGFja2FnZW5hbWUsIFtdKS5hcHBlbmQocGF0aCkKIAogcmVwbGFjZVBhY2thZ2VNYXAgPSB7fQogCkBAIC0xMDYsMTQgKzEwMSwxNCBAQAogCiAgICAgZGVmIHJ1bl9zY3JpcHQoc2VsZiwgcGF0aG5hbWUpOgogICAgICAgICBzZWxmLm1zZygyLCAicnVuX3NjcmlwdCIsIHBhdGhuYW1lKQotICAgICAgICB3aXRoIG9wZW4ocGF0aG5hbWUsIFJFQURfTU9ERSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbihwYXRobmFtZSkgYXMgZnA6CiAgICAgICAgICAgICBzdHVmZiA9ICgiIiwgInIiLCBpbXAuUFlfU09VUkNFKQogICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZSgnX19tYWluX18nLCBmcCwgcGF0aG5hbWUsIHN0dWZmKQogCiAgICAgZGVmIGxvYWRfZmlsZShzZWxmLCBwYXRobmFtZSk6CiAgICAgICAgIGRpciwgbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aG5hbWUpCiAgICAgICAgIG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgd2l0aCBvcGVuKHBhdGhuYW1lLCBSRUFEX01PREUpIGFzIGZwOgorICAgICAgICB3aXRoIG9wZW4ocGF0aG5hbWUpIGFzIGZwOgogICAgICAgICAgICAgc3R1ZmYgPSAoZXh0LCAiciIsIGltcC5QWV9TT1VSQ0UpCiAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKG5hbWUsIGZwLCBwYXRobmFtZSwgc3R1ZmYpCiAKQEAgLTIyNyw4ICsyMjIsOSBAQAogICAgICAgICAjIEJ1dCB3ZSBtdXN0IGFsc28gY29sbGVjdCBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZXMgLSBhbHRob3VnaAogICAgICAgICAjIHdlIGNhbm5vdCBzZXBhcmF0ZSBub3JtYWwgZGxscyBmcm9tIFB5dGhvbiBleHRlbnNpb25zLgogICAgICAgICBzdWZmaXhlcyA9IFtdCi0gICAgICAgIGZvciB0cmlwbGUgaW4gaW1wLmdldF9zdWZmaXhlcygpOgotICAgICAgICAgICAgc3VmZml4ZXMuYXBwZW5kKHRyaXBsZVswXSkKKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVNbOl0KKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbOl0KKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1s6XQogICAgICAgICBmb3IgZGlyIGluIG0uX19wYXRoX186CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGRpcikKQEAgLTI3MCw3ICsyNjYsOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtID0gc2VsZi5sb2FkX21vZHVsZShmcW5hbWUsIGZwLCBwYXRobmFtZSwgc3R1ZmYpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBmcDogZnAuY2xvc2UoKQorICAgICAgICAgICAgaWYgZnA6CisgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogICAgICAgICBpZiBwYXJlbnQ6CiAgICAgICAgICAgICBzZXRhdHRyKHBhcmVudCwgcGFydG5hbWUsIG0pCiAgICAgICAgIHNlbGYubXNnb3V0KDMsICJpbXBvcnRfbW9kdWxlIC0+IiwgbSkKQEAgLTY2Miw0ICs2NTksNCBAQAogICAgIHRyeToKICAgICAgICAgbWYgPSB0ZXN0KCkKICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbltpbnRlcnJ1cHRdIikKKyAgICAgICAgcHJpbnQoIlxuW2ludGVycnVwdGVkXSIpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL19faW5pdF9fLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9fX2luaXRfXy5weQppbmRleCBlNmUxNmM4Li4xZjNlNjdjIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvX19pbml0X18ucHkKQEAgLTEzLDMyICsxMyw3IEBACiAjCiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX192ZXJzaW9uX18gPSAnMC43MGExJwpAQCAtNDgsOCArMjMsOCBAQAogICAgICdNYW5hZ2VyJywgJ1BpcGUnLCAnY3B1X2NvdW50JywgJ2xvZ190b19zdGRlcnInLCAnZ2V0X2xvZ2dlcicsCiAgICAgJ2FsbG93X2Nvbm5lY3Rpb25fcGlja2xpbmcnLCAnQnVmZmVyVG9vU2hvcnQnLCAnVGltZW91dEVycm9yJywKICAgICAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdDb25kaXRpb24nLAotICAgICdFdmVudCcsICdRdWV1ZScsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnLCAnVmFsdWUnLCAnQXJyYXknLAotICAgICdSYXdWYWx1ZScsICdSYXdBcnJheScsICdTVUJERUJVRycsICdTVUJXQVJOSU5HJywKKyAgICAnRXZlbnQnLCAnQmFycmllcicsICdRdWV1ZScsICdTaW1wbGVRdWV1ZScsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnLAorICAgICdWYWx1ZScsICdBcnJheScsICdSYXdWYWx1ZScsICdSYXdBcnJheScsICdTVUJERUJVRycsICdTVUJXQVJOSU5HJywKICAgICBdCiAKIF9fYXV0aG9yX18gPSAnUi4gT3Vka2VyayAoci5tLm91ZGtlcmtAZ21haWwuY29tKScKQEAgLTE2MSw3ICsxMzYsOSBAQAogICAgICcnJwogICAgIEluc3RhbGwgc3VwcG9ydCBmb3Igc2VuZGluZyBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBiZXR3ZWVuIHByb2Nlc3NlcwogICAgICcnJwotICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCByZWR1Y3Rpb24KKyAgICAjIFRoaXMgaXMgdW5kb2N1bWVudGVkLiAgSW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgbXVsdGlwcm9jZXNzaW5nCisgICAgIyBpdHMgb25seSBlZmZlY3Qgd2FzIHRvIG1ha2Ugc29ja2V0IG9iamVjdHMgaW5oZXJpdGFibGUgb24gV2luZG93cy4KKyAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24KIAogIwogIyBEZWZpbml0aW9ucyBkZXBlbmRpbmcgb24gbmF0aXZlIHNlbWFwaG9yZXMKQEAgLTIwOSw2ICsxODYsMTMgQEAKICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5zeW5jaHJvbml6ZSBpbXBvcnQgRXZlbnQKICAgICByZXR1cm4gRXZlbnQoKQogCitkZWYgQmFycmllcihwYXJ0aWVzLCBhY3Rpb249Tm9uZSwgdGltZW91dD1Ob25lKToKKyAgICAnJycKKyAgICBSZXR1cm5zIGEgYmFycmllciBvYmplY3QKKyAgICAnJycKKyAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5zeW5jaHJvbml6ZSBpbXBvcnQgQmFycmllcgorICAgIHJldHVybiBCYXJyaWVyKHBhcnRpZXMsIGFjdGlvbiwgdGltZW91dCkKKwogZGVmIFF1ZXVlKG1heHNpemU9MCk6CiAgICAgJycnCiAgICAgUmV0dXJucyBhIHF1ZXVlIG9iamVjdApAQCAtMjIzLDYgKzIwNywxMyBAQAogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnF1ZXVlcyBpbXBvcnQgSm9pbmFibGVRdWV1ZQogICAgIHJldHVybiBKb2luYWJsZVF1ZXVlKG1heHNpemUpCiAKK2RlZiBTaW1wbGVRdWV1ZSgpOgorICAgICcnJworICAgIFJldHVybnMgYSBxdWV1ZSBvYmplY3QKKyAgICAnJycKKyAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5xdWV1ZXMgaW1wb3J0IFNpbXBsZVF1ZXVlCisgICAgcmV0dXJuIFNpbXBsZVF1ZXVlKCkKKwogZGVmIFBvb2wocHJvY2Vzc2VzPU5vbmUsIGluaXRpYWxpemVyPU5vbmUsIGluaXRhcmdzPSgpLCBtYXh0YXNrc3BlcmNoaWxkPU5vbmUpOgogICAgICcnJwogICAgIFJldHVybnMgYSBwcm9jZXNzIHBvb2wgb2JqZWN0CkBAIC0yNDQsMTkgKzIzNSwxOSBAQAogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnNoYXJlZGN0eXBlcyBpbXBvcnQgUmF3QXJyYXkKICAgICByZXR1cm4gUmF3QXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplcikKIAotZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCAqKmt3ZHMpOgorZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpOgogICAgICcnJwogICAgIFJldHVybnMgYSBzeW5jaHJvbml6ZWQgc2hhcmVkIG9iamVjdAogICAgICcnJwogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnNoYXJlZGN0eXBlcyBpbXBvcnQgVmFsdWUKLSAgICByZXR1cm4gVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsICoqa3dkcykKKyAgICByZXR1cm4gVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9bG9jaykKIAotZGVmIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICoqa3dkcyk6CitkZWYgQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiwgbG9jaz1UcnVlKToKICAgICAnJycKICAgICBSZXR1cm5zIGEgc3luY2hyb25pemVkIHNoYXJlZCBhcnJheQogICAgICcnJwogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnNoYXJlZGN0eXBlcyBpbXBvcnQgQXJyYXkKLSAgICByZXR1cm4gQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiprd2RzKQorICAgIHJldHVybiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCBsb2NrPWxvY2spCiAKICMKICMKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQppbmRleCA0ZmE2ZjcwLi5mYmJkNWQ5IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CkBAIC00LDQ5ICs0LDM0IEBACiAjIG11bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAotX19hbGxfXyA9IFsgJ0NsaWVudCcsICdMaXN0ZW5lcicsICdQaXBlJyBdCitfX2FsbF9fID0gWyAnQ2xpZW50JywgJ0xpc3RlbmVyJywgJ1BpcGUnLCAnd2FpdCcgXQogCitpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHN5cworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAoraW1wb3J0IHN0cnVjdAogaW1wb3J0IGVycm5vCiBpbXBvcnQgdGltZQogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgaXRlcnRvb2xzCiAKIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgY3VycmVudF9wcm9jZXNzLCBBdXRoZW50aWNhdGlvbkVycm9yCitmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgY3VycmVudF9wcm9jZXNzLCBBdXRoZW50aWNhdGlvbkVycm9yLCBCdWZmZXJUb29TaG9ydAogZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgZ2V0X3RlbXBfZGlyLCBGaW5hbGl6ZSwgc3ViX2RlYnVnLCBkZWJ1ZwotZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgZHVwbGljYXRlLCBjbG9zZQotCitmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBGb3JraW5nUGlja2xlcgordHJ5OgorICAgIGltcG9ydCBfd2luYXBpCisgICAgZnJvbSBfd2luYXBpIGltcG9ydCBXQUlUX09CSkVDVF8wLCBXQUlUX1RJTUVPVVQsIElORklOSVRFCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIHJhaXNlCisgICAgX3dpbmFwaSA9IE5vbmUKIAogIwogIwpAQCAtMTIyLDYgKzEwNywzMDkgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYWRkcmVzcyB0eXBlIG9mICVyIHVucmVjb2duaXplZCcgJSBhZGRyZXNzKQogCiAjCisjIENvbm5lY3Rpb24gY2xhc3NlcworIworCitjbGFzcyBfQ29ubmVjdGlvbkJhc2U6CisgICAgX2hhbmRsZSA9IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGUsIHJlYWRhYmxlPVRydWUsIHdyaXRhYmxlPVRydWUpOgorICAgICAgICBoYW5kbGUgPSBoYW5kbGUuX19pbmRleF9fKCkKKyAgICAgICAgaWYgaGFuZGxlIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgaGFuZGxlIikKKyAgICAgICAgaWYgbm90IHJlYWRhYmxlIGFuZCBub3Qgd3JpdGFibGU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJhdCBsZWFzdCBvbmUgb2YgYHJlYWRhYmxlYCBhbmQgYHdyaXRhYmxlYCBtdXN0IGJlIFRydWUiKQorICAgICAgICBzZWxmLl9oYW5kbGUgPSBoYW5kbGUKKyAgICAgICAgc2VsZi5fcmVhZGFibGUgPSByZWFkYWJsZQorICAgICAgICBzZWxmLl93cml0YWJsZSA9IHdyaXRhYmxlCisKKyAgICAjIFhYWCBzaG91bGQgd2UgdXNlIHV0aWwuRmluYWxpemUgaW5zdGVhZCBvZiBhIF9fZGVsX18/CisKKyAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5faGFuZGxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fY2xvc2UoKQorCisgICAgZGVmIF9jaGVja19jbG9zZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiaGFuZGxlIGlzIGNsb3NlZCIpCisKKyAgICBkZWYgX2NoZWNrX3JlYWRhYmxlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZGFibGU6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJjb25uZWN0aW9uIGlzIHdyaXRlLW9ubHkiKQorCisgICAgZGVmIF9jaGVja193cml0YWJsZShzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX3dyaXRhYmxlOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiY29ubmVjdGlvbiBpcyByZWFkLW9ubHkiKQorCisgICAgZGVmIF9iYWRfbWVzc2FnZV9sZW5ndGgoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3dyaXRhYmxlOgorICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgIHJhaXNlIElPRXJyb3IoImJhZCBtZXNzYWdlIGxlbmd0aCIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xvc2VkKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCIiIgorICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlIGlzIE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyByZWFkYWJsZSIiIgorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGFibGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyB3cml0YWJsZSIiIgorICAgICAgICByZXR1cm4gc2VsZi5fd3JpdGFibGUKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgICIiIkZpbGUgZGVzY3JpcHRvciBvciBoYW5kbGUgb2YgdGhlIGNvbm5lY3Rpb24iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRsZQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJDbG9zZSB0aGUgY29ubmVjdGlvbiIiIgorICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2UoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBOb25lCisKKyAgICBkZWYgc2VuZF9ieXRlcyhzZWxmLCBidWYsIG9mZnNldD0wLCBzaXplPU5vbmUpOgorICAgICAgICAiIiJTZW5kIHRoZSBieXRlcyBkYXRhIGZyb20gYSBieXRlcy1saWtlIG9iamVjdCIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja193cml0YWJsZSgpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGJ1ZikKKyAgICAgICAgIyBIQUNLIGZvciBieXRlLWluZGV4aW5nIG9mIG5vbi1ieXRld2lzZSBidWZmZXJzIChlLmcuIGFycmF5LmFycmF5KQorICAgICAgICBpZiBtLml0ZW1zaXplID4gMToKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGJ5dGVzKG0pKQorICAgICAgICBuID0gbGVuKG0pCisgICAgICAgIGlmIG9mZnNldCA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvZmZzZXQgaXMgbmVnYXRpdmUiKQorICAgICAgICBpZiBuIDwgb2Zmc2V0OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYnVmZmVyIGxlbmd0aCA8IG9mZnNldCIpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSBuIC0gb2Zmc2V0CisgICAgICAgIGVsaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzaXplIGlzIG5lZ2F0aXZlIikKKyAgICAgICAgZWxpZiBvZmZzZXQgKyBzaXplID4gbjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJ1ZmZlciBsZW5ndGggPCBvZmZzZXQgKyBzaXplIikKKyAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyhtW29mZnNldDpvZmZzZXQgKyBzaXplXSkKKworICAgIGRlZiBzZW5kKHNlbGYsIG9iaik6CisgICAgICAgICIiIlNlbmQgYSAocGlja2xhYmxlKSBvYmplY3QiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfd3JpdGFibGUoKQorICAgICAgICBidWYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgRm9ya2luZ1BpY2tsZXIoYnVmLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCkuZHVtcChvYmopCisgICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMoYnVmLmdldGJ1ZmZlcigpKQorCisgICAgZGVmIHJlY3ZfYnl0ZXMoc2VsZiwgbWF4bGVuZ3RoPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVjZWl2ZSBieXRlcyBkYXRhIGFzIGEgYnl0ZXMgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQorICAgICAgICBpZiBtYXhsZW5ndGggaXMgbm90IE5vbmUgYW5kIG1heGxlbmd0aCA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBtYXhsZW5ndGgiKQorICAgICAgICBidWYgPSBzZWxmLl9yZWN2X2J5dGVzKG1heGxlbmd0aCkKKyAgICAgICAgaWYgYnVmIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9iYWRfbWVzc2FnZV9sZW5ndGgoKQorICAgICAgICByZXR1cm4gYnVmLmdldHZhbHVlKCkKKworICAgIGRlZiByZWN2X2J5dGVzX2ludG8oc2VsZiwgYnVmLCBvZmZzZXQ9MCk6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIGJ5dGVzIGRhdGEgaW50byBhIHdyaXRlYWJsZSBidWZmZXItbGlrZSBvYmplY3QuCisgICAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19yZWFkYWJsZSgpCisgICAgICAgIHdpdGggbWVtb3J5dmlldyhidWYpIGFzIG06CisgICAgICAgICAgICAjIEdldCBieXRlc2l6ZSBvZiBhcmJpdHJhcnkgYnVmZmVyCisgICAgICAgICAgICBpdGVtc2l6ZSA9IG0uaXRlbXNpemUKKyAgICAgICAgICAgIGJ5dGVzaXplID0gaXRlbXNpemUgKiBsZW4obSkKKyAgICAgICAgICAgIGlmIG9mZnNldCA8IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibmVnYXRpdmUgb2Zmc2V0IikKKyAgICAgICAgICAgIGVsaWYgb2Zmc2V0ID4gYnl0ZXNpemU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib2Zmc2V0IHRvbyBsYXJnZSIpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9yZWN2X2J5dGVzKCkKKyAgICAgICAgICAgIHNpemUgPSByZXN1bHQudGVsbCgpCisgICAgICAgICAgICBpZiBieXRlc2l6ZSA8IG9mZnNldCArIHNpemU6CisgICAgICAgICAgICAgICAgcmFpc2UgQnVmZmVyVG9vU2hvcnQocmVzdWx0LmdldHZhbHVlKCkpCisgICAgICAgICAgICAjIE1lc3NhZ2UgY2FuIGZpdCBpbiBkZXN0CisgICAgICAgICAgICByZXN1bHQuc2VlaygwKQorICAgICAgICAgICAgcmVzdWx0LnJlYWRpbnRvKG1bb2Zmc2V0IC8vIGl0ZW1zaXplIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvZmZzZXQgKyBzaXplKSAvLyBpdGVtc2l6ZV0pCisgICAgICAgICAgICByZXR1cm4gc2l6ZQorCisgICAgZGVmIHJlY3Yoc2VsZik6CisgICAgICAgICIiIlJlY2VpdmUgYSAocGlja2xhYmxlKSBvYmplY3QiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQorICAgICAgICBidWYgPSBzZWxmLl9yZWN2X2J5dGVzKCkKKyAgICAgICAgcmV0dXJuIHBpY2tsZS5sb2FkcyhidWYuZ2V0YnVmZmVyKCkpCisKKyAgICBkZWYgcG9sbChzZWxmLCB0aW1lb3V0PTAuMCk6CisgICAgICAgICIiIldoZXRoZXIgdGhlcmUgaXMgYW55IGlucHV0IGF2YWlsYWJsZSB0byBiZSByZWFkIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX3JlYWRhYmxlKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvbGwodGltZW91dCkKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKKworaWYgX3dpbmFwaToKKworICAgIGNsYXNzIFBpcGVDb25uZWN0aW9uKF9Db25uZWN0aW9uQmFzZSk6CisgICAgICAgICIiIgorICAgICAgICBDb25uZWN0aW9uIGNsYXNzIGJhc2VkIG9uIGEgV2luZG93cyBuYW1lZCBwaXBlLgorICAgICAgICBPdmVybGFwcGVkIEkvTyBpcyB1c2VkLCBzbyB0aGUgaGFuZGxlcyBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkCisgICAgICAgIHdpdGggRklMRV9GTEFHX09WRVJMQVBQRUQuCisgICAgICAgICIiIgorICAgICAgICBfZ290X2VtcHR5X21lc3NhZ2UgPSBGYWxzZQorCisgICAgICAgIGRlZiBfY2xvc2Uoc2VsZiwgX0Nsb3NlSGFuZGxlPV93aW5hcGkuQ2xvc2VIYW5kbGUpOgorICAgICAgICAgICAgX0Nsb3NlSGFuZGxlKHNlbGYuX2hhbmRsZSkKKworICAgICAgICBkZWYgX3NlbmRfYnl0ZXMoc2VsZiwgYnVmKToKKyAgICAgICAgICAgIG92LCBlcnIgPSBfd2luYXBpLldyaXRlRmlsZShzZWxmLl9oYW5kbGUsIGJ1Ziwgb3ZlcmxhcHBlZD1UcnVlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIGVyciA9PSBfd2luYXBpLkVSUk9SX0lPX1BFTkRJTkc6CisgICAgICAgICAgICAgICAgICAgIHdhaXRyZXMgPSBfd2luYXBpLldhaXRGb3JNdWx0aXBsZU9iamVjdHMoCisgICAgICAgICAgICAgICAgICAgICAgICBbb3YuZXZlbnRdLCBGYWxzZSwgSU5GSU5JVEUpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCB3YWl0cmVzID09IFdBSVRfT0JKRUNUXzAKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBvdi5jYW5jZWwoKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG53cml0dGVuLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCisgICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKKyAgICAgICAgICAgIGFzc2VydCBud3JpdHRlbiA9PSBsZW4oYnVmKQorCisgICAgICAgIGRlZiBfcmVjdl9ieXRlcyhzZWxmLCBtYXhzaXplPU5vbmUpOgorICAgICAgICAgICAgaWYgc2VsZi5fZ290X2VtcHR5X21lc3NhZ2U6CisgICAgICAgICAgICAgICAgc2VsZi5fZ290X2VtcHR5X21lc3NhZ2UgPSBGYWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnNpemUgPSAxMjggaWYgbWF4c2l6ZSBpcyBOb25lIGVsc2UgbWluKG1heHNpemUsIDEyOCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG92LCBlcnIgPSBfd2luYXBpLlJlYWRGaWxlKHNlbGYuX2hhbmRsZSwgYnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGFwcGVkPVRydWUpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyciA9PSBfd2luYXBpLkVSUk9SX0lPX1BFTkRJTkc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdHJlcyA9IF93aW5hcGkuV2FpdEZvck11bHRpcGxlT2JqZWN0cygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW292LmV2ZW50XSwgRmFsc2UsIElORklOSVRFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCB3YWl0cmVzID09IFdBSVRfT0JKRUNUXzAKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCwgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUob3YuZ2V0YnVmZmVyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgZXJyID09IF93aW5hcGkuRVJST1JfTU9SRV9EQVRBOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfbW9yZV9kYXRhKG92LCBtYXhzaXplKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgPT0gX3dpbmFwaS5FUlJPUl9CUk9LRU5fUElQRToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzaG91bGRuJ3QgZ2V0IGhlcmU7IGV4cGVjdGVkIEtleWJvYXJkSW50ZXJydXB0IikKKworICAgICAgICBkZWYgX3BvbGwoc2VsZiwgdGltZW91dCk6CisgICAgICAgICAgICBpZiAoc2VsZi5fZ290X2VtcHR5X21lc3NhZ2Ugb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuUGVla05hbWVkUGlwZShzZWxmLl9oYW5kbGUpWzBdICE9IDApOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gYm9vbCh3YWl0KFtzZWxmXSwgdGltZW91dCkpCisKKyAgICAgICAgZGVmIF9nZXRfbW9yZV9kYXRhKHNlbGYsIG92LCBtYXhzaXplKToKKyAgICAgICAgICAgIGJ1ZiA9IG92LmdldGJ1ZmZlcigpCisgICAgICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgICAgICBmLndyaXRlKGJ1ZikKKyAgICAgICAgICAgIGxlZnQgPSBfd2luYXBpLlBlZWtOYW1lZFBpcGUoc2VsZi5faGFuZGxlKVsxXQorICAgICAgICAgICAgYXNzZXJ0IGxlZnQgPiAwCisgICAgICAgICAgICBpZiBtYXhzaXplIGlzIG5vdCBOb25lIGFuZCBsZW4oYnVmKSArIGxlZnQgPiBtYXhzaXplOgorICAgICAgICAgICAgICAgIHNlbGYuX2JhZF9tZXNzYWdlX2xlbmd0aCgpCisgICAgICAgICAgICBvdiwgZXJyID0gX3dpbmFwaS5SZWFkRmlsZShzZWxmLl9oYW5kbGUsIGxlZnQsIG92ZXJsYXBwZWQ9VHJ1ZSkKKyAgICAgICAgICAgIHJieXRlcywgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgYXNzZXJ0IGVyciA9PSAwCisgICAgICAgICAgICBhc3NlcnQgcmJ5dGVzID09IGxlZnQKKyAgICAgICAgICAgIGYud3JpdGUob3YuZ2V0YnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4gZgorCisKK2NsYXNzIENvbm5lY3Rpb24oX0Nvbm5lY3Rpb25CYXNlKToKKyAgICAiIiIKKyAgICBDb25uZWN0aW9uIGNsYXNzIGJhc2VkIG9uIGFuIGFyYml0cmFyeSBmaWxlIGRlc2NyaXB0b3IgKFVuaXggb25seSksIG9yCisgICAgYSBzb2NrZXQgaGFuZGxlIChXaW5kb3dzKS4KKyAgICAiIiIKKworICAgIGlmIF93aW5hcGk6CisgICAgICAgIGRlZiBfY2xvc2Uoc2VsZiwgX2Nsb3NlPV9tdWx0aXByb2Nlc3NpbmcuY2xvc2Vzb2NrZXQpOgorICAgICAgICAgICAgX2Nsb3NlKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgX3dyaXRlID0gX211bHRpcHJvY2Vzc2luZy5zZW5kCisgICAgICAgIF9yZWFkID0gX211bHRpcHJvY2Vzc2luZy5yZWN2CisgICAgZWxzZToKKyAgICAgICAgZGVmIF9jbG9zZShzZWxmLCBfY2xvc2U9b3MuY2xvc2UpOgorICAgICAgICAgICAgX2Nsb3NlKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgX3dyaXRlID0gb3Mud3JpdGUKKyAgICAgICAgX3JlYWQgPSBvcy5yZWFkCisKKyAgICBkZWYgX3NlbmQoc2VsZiwgYnVmLCB3cml0ZT1fd3JpdGUpOgorICAgICAgICByZW1haW5pbmcgPSBsZW4oYnVmKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbiA9IHdyaXRlKHNlbGYuX2hhbmRsZSwgYnVmKQorICAgICAgICAgICAgcmVtYWluaW5nIC09IG4KKyAgICAgICAgICAgIGlmIHJlbWFpbmluZyA9PSAwOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBidWYgPSBidWZbbjpdCisKKyAgICBkZWYgX3JlY3Yoc2VsZiwgc2l6ZSwgcmVhZD1fcmVhZCk6CisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBoYW5kbGUgPSBzZWxmLl9oYW5kbGUKKyAgICAgICAgcmVtYWluaW5nID0gc2l6ZQorICAgICAgICB3aGlsZSByZW1haW5pbmcgPiAwOgorICAgICAgICAgICAgY2h1bmsgPSByZWFkKGhhbmRsZSwgcmVtYWluaW5nKQorICAgICAgICAgICAgbiA9IGxlbihjaHVuaykKKyAgICAgICAgICAgIGlmIG4gPT0gMDoKKyAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPT0gc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJnb3QgZW5kIG9mIGZpbGUgZHVyaW5nIG1lc3NhZ2UiKQorICAgICAgICAgICAgYnVmLndyaXRlKGNodW5rKQorICAgICAgICAgICAgcmVtYWluaW5nIC09IG4KKyAgICAgICAgcmV0dXJuIGJ1ZgorCisgICAgZGVmIF9zZW5kX2J5dGVzKHNlbGYsIGJ1Zik6CisgICAgICAgICMgRm9yIHdpcmUgY29tcGF0aWJpbGl0eSB3aXRoIDMuMiBhbmQgbG93ZXIKKyAgICAgICAgbiA9IGxlbihidWYpCisgICAgICAgIHNlbGYuX3NlbmQoc3RydWN0LnBhY2soIiFpIiwgbikpCisgICAgICAgICMgVGhlIGNvbmRpdGlvbiBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgImJyb2tlbiBwaXBlIiBlcnJvcnMKKyAgICAgICAgIyB3aGVuIHNlbmRpbmcgYSAwLWxlbmd0aCBidWZmZXIgaWYgdGhlIG90aGVyIGVuZCBjbG9zZWQgdGhlIHBpcGUuCisgICAgICAgIGlmIG4gPiAwOgorICAgICAgICAgICAgc2VsZi5fc2VuZChidWYpCisKKyAgICBkZWYgX3JlY3ZfYnl0ZXMoc2VsZiwgbWF4c2l6ZT1Ob25lKToKKyAgICAgICAgYnVmID0gc2VsZi5fcmVjdig0KQorICAgICAgICBzaXplLCA9IHN0cnVjdC51bnBhY2soIiFpIiwgYnVmLmdldHZhbHVlKCkpCisgICAgICAgIGlmIG1heHNpemUgaXMgbm90IE5vbmUgYW5kIHNpemUgPiBtYXhzaXplOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlY3Yoc2l6ZSkKKworICAgIGRlZiBfcG9sbChzZWxmLCB0aW1lb3V0KToKKyAgICAgICAgciA9IHdhaXQoW3NlbGYuX2hhbmRsZV0sIHRpbWVvdXQpCisgICAgICAgIHJldHVybiBib29sKHIpCisKKworIwogIyBQdWJsaWMgZnVuY3Rpb25zCiAjCiAKQEAgLTE1NCw2ICs0NDIsOCBAQAogCiAgICAgICAgIFJldHVybnMgYSBgQ29ubmVjdGlvbmAgb2JqZWN0LgogICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ2xpc3RlbmVyIGlzIGNsb3NlZCcpCiAgICAgICAgIGMgPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQogICAgICAgICBpZiBzZWxmLl9hdXRoa2V5OgogICAgICAgICAgICAgZGVsaXZlcl9jaGFsbGVuZ2UoYywgc2VsZi5fYXV0aGtleSkKQEAgLTE2NCwxMSArNDU0LDE5IEBACiAgICAgICAgICcnJwogICAgICAgICBDbG9zZSB0aGUgYm91bmQgc29ja2V0IG9yIG5hbWVkIHBpcGUgb2YgYHNlbGZgLgogICAgICAgICAnJycKLSAgICAgICAgcmV0dXJuIHNlbGYuX2xpc3RlbmVyLmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKIAogICAgIGFkZHJlc3MgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogc2VsZi5fbGlzdGVuZXIuX2FkZHJlc3MpCiAgICAgbGFzdF9hY2NlcHRlZCA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiBzZWxmLl9saXN0ZW5lci5fbGFzdF9hY2NlcHRlZCkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIENsaWVudChhZGRyZXNzLCBmYW1pbHk9Tm9uZSwgYXV0aGtleT1Ob25lKToKICAgICAnJycKQEAgLTIwMSw1NiArNDk5LDUyIEBACiAgICAgICAgICAgICBzMSwgczIgPSBzb2NrZXQuc29ja2V0cGFpcigpCiAgICAgICAgICAgICBzMS5zZXRibG9ja2luZyhUcnVlKQogICAgICAgICAgICAgczIuc2V0YmxvY2tpbmcoVHJ1ZSkKLSAgICAgICAgICAgIGMxID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKG9zLmR1cChzMS5maWxlbm8oKSkpCi0gICAgICAgICAgICBjMiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbihvcy5kdXAoczIuZmlsZW5vKCkpKQotICAgICAgICAgICAgczEuY2xvc2UoKQotICAgICAgICAgICAgczIuY2xvc2UoKQorICAgICAgICAgICAgYzEgPSBDb25uZWN0aW9uKHMxLmRldGFjaCgpKQorICAgICAgICAgICAgYzIgPSBDb25uZWN0aW9uKHMyLmRldGFjaCgpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmQxLCBmZDIgPSBvcy5waXBlKCkKLSAgICAgICAgICAgIGMxID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKGZkMSwgd3JpdGFibGU9RmFsc2UpCi0gICAgICAgICAgICBjMiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbihmZDIsIHJlYWRhYmxlPUZhbHNlKQorICAgICAgICAgICAgYzEgPSBDb25uZWN0aW9uKGZkMSwgd3JpdGFibGU9RmFsc2UpCisgICAgICAgICAgICBjMiA9IENvbm5lY3Rpb24oZmQyLCByZWFkYWJsZT1GYWxzZSkKIAogICAgICAgICByZXR1cm4gYzEsIGMyCiAKIGVsc2U6CiAKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyCi0KICAgICBkZWYgUGlwZShkdXBsZXg9VHJ1ZSk6CiAgICAgICAgICcnJwogICAgICAgICBSZXR1cm5zIHBhaXIgb2YgY29ubmVjdGlvbiBvYmplY3RzIGF0IGVpdGhlciBlbmQgb2YgYSBwaXBlCiAgICAgICAgICcnJwogICAgICAgICBhZGRyZXNzID0gYXJiaXRyYXJ5X2FkZHJlc3MoJ0FGX1BJUEUnKQogICAgICAgICBpZiBkdXBsZXg6Ci0gICAgICAgICAgICBvcGVubW9kZSA9IHdpbjMyLlBJUEVfQUNDRVNTX0RVUExFWAotICAgICAgICAgICAgYWNjZXNzID0gd2luMzIuR0VORVJJQ19SRUFEIHwgd2luMzIuR0VORVJJQ19XUklURQorICAgICAgICAgICAgb3Blbm1vZGUgPSBfd2luYXBpLlBJUEVfQUNDRVNTX0RVUExFWAorICAgICAgICAgICAgYWNjZXNzID0gX3dpbmFwaS5HRU5FUklDX1JFQUQgfCBfd2luYXBpLkdFTkVSSUNfV1JJVEUKICAgICAgICAgICAgIG9ic2l6ZSwgaWJzaXplID0gQlVGU0laRSwgQlVGU0laRQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3Blbm1vZGUgPSB3aW4zMi5QSVBFX0FDQ0VTU19JTkJPVU5ECi0gICAgICAgICAgICBhY2Nlc3MgPSB3aW4zMi5HRU5FUklDX1dSSVRFCisgICAgICAgICAgICBvcGVubW9kZSA9IF93aW5hcGkuUElQRV9BQ0NFU1NfSU5CT1VORAorICAgICAgICAgICAgYWNjZXNzID0gX3dpbmFwaS5HRU5FUklDX1dSSVRFCiAgICAgICAgICAgICBvYnNpemUsIGlic2l6ZSA9IDAsIEJVRlNJWkUKIAotICAgICAgICBoMSA9IHdpbjMyLkNyZWF0ZU5hbWVkUGlwZSgKLSAgICAgICAgICAgIGFkZHJlc3MsIG9wZW5tb2RlLAotICAgICAgICAgICAgd2luMzIuUElQRV9UWVBFX01FU1NBR0UgfCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAotICAgICAgICAgICAgd2luMzIuUElQRV9XQUlULAotICAgICAgICAgICAgMSwgb2JzaXplLCBpYnNpemUsIHdpbjMyLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCB3aW4zMi5OVUxMCisgICAgICAgIGgxID0gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCisgICAgICAgICAgICBhZGRyZXNzLCBvcGVubW9kZSB8IF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQgfAorICAgICAgICAgICAgX3dpbmFwaS5GSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSwKKyAgICAgICAgICAgIF93aW5hcGkuUElQRV9UWVBFX01FU1NBR0UgfCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8CisgICAgICAgICAgICBfd2luYXBpLlBJUEVfV0FJVCwKKyAgICAgICAgICAgIDEsIG9ic2l6ZSwgaWJzaXplLCBfd2luYXBpLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCBfd2luYXBpLk5VTEwKICAgICAgICAgICAgICkKLSAgICAgICAgaDIgPSB3aW4zMi5DcmVhdGVGaWxlKAotICAgICAgICAgICAgYWRkcmVzcywgYWNjZXNzLCAwLCB3aW4zMi5OVUxMLCB3aW4zMi5PUEVOX0VYSVNUSU5HLCAwLCB3aW4zMi5OVUxMCisgICAgICAgIGgyID0gX3dpbmFwaS5DcmVhdGVGaWxlKAorICAgICAgICAgICAgYWRkcmVzcywgYWNjZXNzLCAwLCBfd2luYXBpLk5VTEwsIF93aW5hcGkuT1BFTl9FWElTVElORywKKyAgICAgICAgICAgIF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgKQotICAgICAgICB3aW4zMi5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKLSAgICAgICAgICAgIGgyLCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UsIE5vbmUsIE5vbmUKKyAgICAgICAgX3dpbmFwaS5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKKyAgICAgICAgICAgIGgyLCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQogICAgICAgICAgICAgKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpbjMyLkNvbm5lY3ROYW1lZFBpcGUoaDEsIHdpbjMyLk5VTEwpCi0gICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuYXJnc1swXSAhPSB3aW4zMi5FUlJPUl9QSVBFX0NPTk5FQ1RFRDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBvdmVybGFwcGVkID0gX3dpbmFwaS5Db25uZWN0TmFtZWRQaXBlKGgxLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgIF8sIGVyciA9IG92ZXJsYXBwZWQuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICBhc3NlcnQgZXJyID09IDAKIAotICAgICAgICBjMSA9IF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oaDEsIHdyaXRhYmxlPWR1cGxleCkKLSAgICAgICAgYzIgPSBfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uKGgyLCByZWFkYWJsZT1kdXBsZXgpCisgICAgICAgIGMxID0gUGlwZUNvbm5lY3Rpb24oaDEsIHdyaXRhYmxlPWR1cGxleCkKKyAgICAgICAgYzIgPSBQaXBlQ29ubmVjdGlvbihoMiwgcmVhZGFibGU9ZHVwbGV4KQogCiAgICAgICAgIHJldHVybiBjMSwgYzIKIApAQCAtMjY1LDEyICs1NTksMTUgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgZmFtaWx5LCBiYWNrbG9nPTEpOgogICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQuc29ja2V0KGdldGF0dHIoc29ja2V0LCBmYW1pbHkpKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKKyAgICAgICAgICAgICMgU09fUkVVU0VBRERSIGhhcyBkaWZmZXJlbnQgc2VtYW50aWNzIG9uIFdpbmRvd3MgKGlzc3VlICMyNTUwKS4KKyAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSLCAxKQogICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNldGJsb2NraW5nKFRydWUpCiAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuYmluZChhZGRyZXNzKQogICAgICAgICAgICAgc2VsZi5fc29ja2V0Lmxpc3RlbihiYWNrbG9nKQogICAgICAgICAgICAgc2VsZi5fYWRkcmVzcyA9IHNlbGYuX3NvY2tldC5nZXRzb2NrbmFtZSgpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIHNlbGYuX2ZhbWlseSA9IGZhbWlseQpAQCAtMjg2LDEwICs1ODMsNyBAQAogICAgIGRlZiBhY2NlcHQoc2VsZik6CiAgICAgICAgIHMsIHNlbGYuX2xhc3RfYWNjZXB0ZWQgPSBzZWxmLl9zb2NrZXQuYWNjZXB0KCkKICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQotICAgICAgICBmZCA9IGR1cGxpY2F0ZShzLmZpbGVubygpKQotICAgICAgICBjb25uID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKGZkKQotICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgcmV0dXJuIGNvbm4KKyAgICAgICAgcmV0dXJuIENvbm5lY3Rpb24ocy5kZXRhY2goKSkKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKQEAgLTMwNCwyNCArNTk4LDggQEAKICAgICBmYW1pbHkgPSBhZGRyZXNzX3R5cGUoYWRkcmVzcykKICAgICB3aXRoIHNvY2tldC5zb2NrZXQoIGdldGF0dHIoc29ja2V0LCBmYW1pbHkpICkgYXMgczoKICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQotICAgICAgICB0ID0gX2luaXRfdGltZW91dCgpCi0KLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoYWRkcmVzcykKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gIT0gZXJybm8uRUNPTk5SRUZVU0VEIG9yIF9jaGVja190aW1lb3V0KHQpOgotICAgICAgICAgICAgICAgICAgICBkZWJ1ZygnZmFpbGVkIHRvIGNvbm5lY3QgdG8gYWRkcmVzcyAlcycsIGFkZHJlc3MpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UKLQotICAgICAgICBmZCA9IGR1cGxpY2F0ZShzLmZpbGVubygpKQotICAgIGNvbm4gPSBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oZmQpCi0gICAgcmV0dXJuIGNvbm4KKyAgICAgICAgcy5jb25uZWN0KGFkZHJlc3MpCisgICAgICAgIHJldHVybiBDb25uZWN0aW9uKHMuZGV0YWNoKCkpCiAKICMKICMgRGVmaW5pdGlvbnMgZm9yIGNvbm5lY3Rpb25zIGJhc2VkIG9uIG5hbWVkIHBpcGVzCkBAIC0zMzUsNDggKzYxMyw1NSBAQAogICAgICAgICAnJycKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIGJhY2tsb2c9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzID0gYWRkcmVzcwotICAgICAgICAgICAgaGFuZGxlID0gd2luMzIuQ3JlYXRlTmFtZWRQaXBlKAotICAgICAgICAgICAgICAgIGFkZHJlc3MsIHdpbjMyLlBJUEVfQUNDRVNTX0RVUExFWCwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1RZUEVfTUVTU0FHRSB8IHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8Ci0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9XQUlULAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKLSAgICAgICAgICAgICAgICB3aW4zMi5OTVBXQUlUX1dBSVRfRk9SRVZFUiwgd2luMzIuTlVMTAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9xdWV1ZSA9IFtoYW5kbGVdCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUgPSBbc2VsZi5fbmV3X2hhbmRsZShmaXJzdD1UcnVlKV0KKwogICAgICAgICAgICAgc2VsZi5fbGFzdF9hY2NlcHRlZCA9IE5vbmUKLQogICAgICAgICAgICAgc3ViX2RlYnVnKCdsaXN0ZW5lciBjcmVhdGVkIHdpdGggYWRkcmVzcz0lcicsIHNlbGYuX2FkZHJlc3MpCi0KICAgICAgICAgICAgIHNlbGYuY2xvc2UgPSBGaW5hbGl6ZSgKICAgICAgICAgICAgICAgICBzZWxmLCBQaXBlTGlzdGVuZXIuX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5faGFuZGxlX3F1ZXVlLCBzZWxmLl9hZGRyZXNzKSwgZXhpdHByaW9yaXR5PTAKICAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgZGVmIGFjY2VwdChzZWxmKToKLSAgICAgICAgICAgIG5ld2hhbmRsZSA9IHdpbjMyLkNyZWF0ZU5hbWVkUGlwZSgKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzLCB3aW4zMi5QSVBFX0FDQ0VTU19EVVBMRVgsCi0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9UWVBFX01FU1NBR0UgfCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfV0FJVCwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1VOTElNSVRFRF9JTlNUQU5DRVMsIEJVRlNJWkUsIEJVRlNJWkUsCi0gICAgICAgICAgICAgICAgd2luMzIuTk1QV0FJVF9XQUlUX0ZPUkVWRVIsIHdpbjMyLk5VTEwKKyAgICAgICAgZGVmIF9uZXdfaGFuZGxlKHNlbGYsIGZpcnN0PUZhbHNlKToKKyAgICAgICAgICAgIGZsYWdzID0gX3dpbmFwaS5QSVBFX0FDQ0VTU19EVVBMRVggfCBfd2luYXBpLkZJTEVfRkxBR19PVkVSTEFQUEVECisgICAgICAgICAgICBpZiBmaXJzdDoKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBfd2luYXBpLkZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFCisgICAgICAgICAgICByZXR1cm4gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCisgICAgICAgICAgICAgICAgc2VsZi5fYWRkcmVzcywgZmxhZ3MsCisgICAgICAgICAgICAgICAgX3dpbmFwaS5QSVBFX1RZUEVfTUVTU0FHRSB8IF93aW5hcGkuUElQRV9SRUFETU9ERV9NRVNTQUdFIHwKKyAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfV0FJVCwKKyAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKKyAgICAgICAgICAgICAgICBfd2luYXBpLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCBfd2luYXBpLk5VTEwKICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUuYXBwZW5kKG5ld2hhbmRsZSkKKworICAgICAgICBkZWYgYWNjZXB0KHNlbGYpOgorICAgICAgICAgICAgc2VsZi5faGFuZGxlX3F1ZXVlLmFwcGVuZChzZWxmLl9uZXdfaGFuZGxlKCkpCiAgICAgICAgICAgICBoYW5kbGUgPSBzZWxmLl9oYW5kbGVfcXVldWUucG9wKDApCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2luMzIuQ29ubmVjdE5hbWVkUGlwZShoYW5kbGUsIHdpbjMyLk5VTEwpCi0gICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgb3YgPSBfd2luYXBpLkNvbm5lY3ROYW1lZFBpcGUoaGFuZGxlLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgIT0gX3dpbmFwaS5FUlJPUl9OT19EQVRBOgorICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICMgRVJST1JfTk9fREFUQSBjYW4gb2NjdXIgaWYgYSBjbGllbnQgaGFzIGFscmVhZHkgY29ubmVjdGVkLAogICAgICAgICAgICAgICAgICMgd3JpdHRlbiBkYXRhIGFuZCB0aGVuIGRpc2Nvbm5lY3RlZCAtLSBzZWUgSXNzdWUgMTQ3MjUuCi0gICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIG5vdCBpbiAod2luMzIuRVJST1JfUElQRV9DT05ORUNURUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luMzIuRVJST1JfTk9fREFUQSk6CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKAorICAgICAgICAgICAgICAgICAgICAgICAgW292LmV2ZW50XSwgRmFsc2UsIElORklOSVRFKQorICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShoYW5kbGUpCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbihoYW5kbGUpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgXywgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKKyAgICAgICAgICAgIHJldHVybiBQaXBlQ29ubmVjdGlvbihoYW5kbGUpCiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIocXVldWUsIGFkZHJlc3MpOgogICAgICAgICAgICAgc3ViX2RlYnVnKCdjbG9zaW5nIGxpc3RlbmVyIHdpdGggYWRkcmVzcz0lcicsIGFkZHJlc3MpCiAgICAgICAgICAgICBmb3IgaGFuZGxlIGluIHF1ZXVlOgotICAgICAgICAgICAgICAgIGNsb3NlKGhhbmRsZSkKKyAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGhhbmRsZSkKIAogICAgIGRlZiBQaXBlQ2xpZW50KGFkZHJlc3MpOgogICAgICAgICAnJycKQEAgLTM4NSwyNCArNjcwLDI1IEBACiAgICAgICAgIHQgPSBfaW5pdF90aW1lb3V0KCkKICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aW4zMi5XYWl0TmFtZWRQaXBlKGFkZHJlc3MsIDEwMDApCi0gICAgICAgICAgICAgICAgaCA9IHdpbjMyLkNyZWF0ZUZpbGUoCi0gICAgICAgICAgICAgICAgICAgIGFkZHJlc3MsIHdpbjMyLkdFTkVSSUNfUkVBRCB8IHdpbjMyLkdFTkVSSUNfV1JJVEUsCi0gICAgICAgICAgICAgICAgICAgIDAsIHdpbjMyLk5VTEwsIHdpbjMyLk9QRU5fRVhJU1RJTkcsIDAsIHdpbjMyLk5VTEwKKyAgICAgICAgICAgICAgICBfd2luYXBpLldhaXROYW1lZFBpcGUoYWRkcmVzcywgMTAwMCkKKyAgICAgICAgICAgICAgICBoID0gX3dpbmFwaS5DcmVhdGVGaWxlKAorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLCBfd2luYXBpLkdFTkVSSUNfUkVBRCB8IF93aW5hcGkuR0VORVJJQ19XUklURSwKKyAgICAgICAgICAgICAgICAgICAgMCwgX3dpbmFwaS5OVUxMLCBfd2luYXBpLk9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIG5vdCBpbiAod2luMzIuRVJST1JfU0VNX1RJTUVPVVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luMzIuRVJST1JfUElQRV9CVVNZKSBvciBfY2hlY2tfdGltZW91dCh0KToKKyAgICAgICAgICAgICAgICBpZiBlLndpbmVycm9yIG5vdCBpbiAoX3dpbmFwaS5FUlJPUl9TRU1fVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5FUlJPUl9QSVBFX0JVU1kpIG9yIF9jaGVja190aW1lb3V0KHQpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UKIAotICAgICAgICB3aW4zMi5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKLSAgICAgICAgICAgIGgsIHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQorICAgICAgICBfd2luYXBpLlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKAorICAgICAgICAgICAgaCwgX3dpbmFwaS5QSVBFX1JFQURNT0RFX01FU1NBR0UsIE5vbmUsIE5vbmUKICAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuIF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oaCkKKyAgICAgICAgcmV0dXJuIFBpcGVDb25uZWN0aW9uKGgpCiAKICMKICMgQXV0aGVudGljYXRpb24gc3R1ZmYKQEAgLTQ1OSwxMCArNzQ1LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9sb2FkcyhzKQogCiBkZWYgX3htbF9kdW1wcyhvYmopOgotICAgIHJldHVybiB4bWxycGNsaWIuZHVtcHMoKG9iaiwpLCBOb25lLCBOb25lLCBOb25lLCAxKS5lbmNvZGUoJ3V0ZjgnKQorICAgIHJldHVybiB4bWxycGNsaWIuZHVtcHMoKG9iaiwpLCBOb25lLCBOb25lLCBOb25lLCAxKS5lbmNvZGUoJ3V0Zi04JykKIAogZGVmIF94bWxfbG9hZHMocyk6Ci0gICAgKG9iaiwpLCBtZXRob2QgPSB4bWxycGNsaWIubG9hZHMocy5kZWNvZGUoJ3V0ZjgnKSkKKyAgICAob2JqLCksIG1ldGhvZCA9IHhtbHJwY2xpYi5sb2FkcyhzLmRlY29kZSgndXRmLTgnKSkKICAgICByZXR1cm4gb2JqCiAKIGNsYXNzIFhtbExpc3RlbmVyKExpc3RlbmVyKToKQEAgLTQ3NiwzICs3NjIsMTQwIEBACiAgICAgZ2xvYmFsIHhtbHJwY2xpYgogICAgIGltcG9ydCB4bWxycGMuY2xpZW50IGFzIHhtbHJwY2xpYgogICAgIHJldHVybiBDb25uZWN0aW9uV3JhcHBlcihDbGllbnQoKmFyZ3MsICoqa3dkcyksIF94bWxfZHVtcHMsIF94bWxfbG9hZHMpCisKKyMKKyMgV2FpdAorIworCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKworICAgIGRlZiBfZXhoYXVzdGl2ZV93YWl0KGhhbmRsZXMsIHRpbWVvdXQpOgorICAgICAgICAjIFJldHVybiBBTEwgaGFuZGxlcyB3aGljaCBhcmUgY3VycmVudGx5IHNpZ25hbGxlZC4gIChPbmx5CisgICAgICAgICMgcmV0dXJuaW5nIHRoZSBmaXJzdCBzaWduYWxsZWQgbWlnaHQgY3JlYXRlIHN0YXJ2YXRpb24gaXNzdWVzLikKKyAgICAgICAgTCA9IGxpc3QoaGFuZGxlcykKKyAgICAgICAgcmVhZHkgPSBbXQorICAgICAgICB3aGlsZSBMOgorICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKEwsIEZhbHNlLCB0aW1lb3V0KQorICAgICAgICAgICAgaWYgcmVzID09IFdBSVRfVElNRU9VVDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBXQUlUX09CSkVDVF8wIDw9IHJlcyA8IFdBSVRfT0JKRUNUXzAgKyBsZW4oTCk6CisgICAgICAgICAgICAgICAgcmVzIC09IFdBSVRfT0JKRUNUXzAKKyAgICAgICAgICAgIGVsaWYgV0FJVF9BQkFORE9ORURfMCA8PSByZXMgPCBXQUlUX0FCQU5ET05FRF8wICsgbGVuKEwpOgorICAgICAgICAgICAgICAgIHJlcyAtPSBXQUlUX0FCQU5ET05FRF8wCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignU2hvdWxkIG5vdCBnZXQgaGVyZScpCisgICAgICAgICAgICByZWFkeS5hcHBlbmQoTFtyZXNdKQorICAgICAgICAgICAgTCA9IExbcmVzKzE6XQorICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgcmV0dXJuIHJlYWR5CisKKyAgICBfcmVhZHlfZXJyb3JzID0ge193aW5hcGkuRVJST1JfQlJPS0VOX1BJUEUsIF93aW5hcGkuRVJST1JfTkVUTkFNRV9ERUxFVEVEfQorCisgICAgZGVmIHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluIG9iamVjdF9saXN0IGlzIHJlYWR5L3JlYWRhYmxlLgorCisgICAgICAgIFJldHVybnMgbGlzdCBvZiB0aG9zZSBvYmplY3RzIGluIG9iamVjdF9saXN0IHdoaWNoIGFyZSByZWFkeS9yZWFkYWJsZS4KKyAgICAgICAgJycnCisgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSBJTkZJTklURQorICAgICAgICBlbGlmIHRpbWVvdXQgPCAwOgorICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSBpbnQodGltZW91dCAqIDEwMDAgKyAwLjUpCisKKyAgICAgICAgb2JqZWN0X2xpc3QgPSBsaXN0KG9iamVjdF9saXN0KQorICAgICAgICB3YWl0aGFuZGxlX3RvX29iaiA9IHt9CisgICAgICAgIG92X2xpc3QgPSBbXQorICAgICAgICByZWFkeV9vYmplY3RzID0gc2V0KCkKKyAgICAgICAgcmVhZHlfaGFuZGxlcyA9IHNldCgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIG8gaW4gb2JqZWN0X2xpc3Q6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmaWxlbm8gPSBnZXRhdHRyKG8sICdmaWxlbm8nKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgd2FpdGhhbmRsZV90b19vYmpbby5fX2luZGV4X18oKV0gPSBvCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBzdGFydCBhbiBvdmVybGFwcGVkIHJlYWQgb2YgbGVuZ3RoIHplcm8KKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuUmVhZEZpbGUoZmlsZW5vKCksIDAsIFRydWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBlLndpbmVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIgbm90IGluIF9yZWFkeV9lcnJvcnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG92X2xpc3QuYXBwZW5kKG92KQorICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGhhbmRsZV90b19vYmpbb3YuZXZlbnRdID0gbworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBvLmZpbGVubygpIGlzIGFuIG92ZXJsYXBwZWQgcGlwZSBoYW5kbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAjIGVyciA9PSAwIHRoZW4gdGhlcmUgaXMgYSB6ZXJvIGxlbmd0aCBtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBwaXBlLCBidXQgaXQgSEFTIE5PVCBiZWVuIGNvbnN1bWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHlfb2JqZWN0cy5hZGQobykKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAwCisKKyAgICAgICAgICAgIHJlYWR5X2hhbmRsZXMgPSBfZXhoYXVzdGl2ZV93YWl0KHdhaXRoYW5kbGVfdG9fb2JqLmtleXMoKSwgdGltZW91dCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgcmVxdWVzdCB0aGF0IG92ZXJsYXBwZWQgcmVhZHMgc3RvcAorICAgICAgICAgICAgZm9yIG92IGluIG92X2xpc3Q6CisgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKworICAgICAgICAgICAgIyB3YWl0IGZvciBhbGwgb3ZlcmxhcHBlZCByZWFkcyB0byBzdG9wCisgICAgICAgICAgICBmb3Igb3YgaW4gb3ZfbGlzdDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIF8sIGVyciA9IG92LkdldE92ZXJsYXBwZWRSZXN1bHQoVHJ1ZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICBlcnIgPSBlLndpbmVycm9yCisgICAgICAgICAgICAgICAgICAgIGlmIGVyciBub3QgaW4gX3JlYWR5X2Vycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgaWYgZXJyICE9IF93aW5hcGkuRVJST1JfT1BFUkFUSU9OX0FCT1JURUQ6CisgICAgICAgICAgICAgICAgICAgIG8gPSB3YWl0aGFuZGxlX3RvX29ialtvdi5ldmVudF0KKyAgICAgICAgICAgICAgICAgICAgcmVhZHlfb2JqZWN0cy5hZGQobykKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIG8uZmlsZW5vKCkgaXMgYW4gb3ZlcmxhcHBlZCBwaXBlIGhhbmRsZSB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAjIGEgemVybyBsZW5ndGggbWVzc2FnZSBIQVMgYmVlbiBjb25zdW1lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIobywgJ19nb3RfZW1wdHlfbWVzc2FnZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uX2dvdF9lbXB0eV9tZXNzYWdlID0gVHJ1ZQorCisgICAgICAgIHJlYWR5X29iamVjdHMudXBkYXRlKHdhaXRoYW5kbGVfdG9fb2JqW2hdIGZvciBoIGluIHJlYWR5X2hhbmRsZXMpCisgICAgICAgIHJldHVybiBbbyBmb3IgbyBpbiBvYmplY3RfbGlzdCBpZiBvIGluIHJlYWR5X29iamVjdHNdCisKK2Vsc2U6CisKKyAgICBkZWYgd2FpdChvYmplY3RfbGlzdCwgdGltZW91dD1Ob25lKToKKyAgICAgICAgJycnCisgICAgICAgIFdhaXQgdGlsbCBhbiBvYmplY3QgaW4gb2JqZWN0X2xpc3QgaXMgcmVhZHkvcmVhZGFibGUuCisKKyAgICAgICAgUmV0dXJucyBsaXN0IG9mIHRob3NlIG9iamVjdHMgaW4gb2JqZWN0X2xpc3Qgd2hpY2ggYXJlIHJlYWR5L3JlYWRhYmxlLgorICAgICAgICAnJycKKyAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHRpbWVvdXQgPD0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0LnNlbGVjdChvYmplY3RfbGlzdCwgW10sIFtdLCAwKVswXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgdGltZW91dAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Quc2VsZWN0KG9iamVjdF9saXN0LCBbXSwgW10sIHRpbWVvdXQpWzBdCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVFI6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCisKKyMKKyMgTWFrZSBjb25uZWN0aW9uIGFuZCBzb2NrZXQgb2JqZWN0cyBzaGFyYWJsZSBpZiBwb3NzaWJsZQorIworCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICBmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIHJlZHVjdGlvbi5yZWR1Y2Vfc29ja2V0KQorICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKENvbm5lY3Rpb24sIHJlZHVjdGlvbi5yZWR1Y2VfY29ubmVjdGlvbikKKyAgICBGb3JraW5nUGlja2xlci5yZWdpc3RlcihQaXBlQ29ubmVjdGlvbiwgcmVkdWN0aW9uLnJlZHVjZV9waXBlX2Nvbm5lY3Rpb24pCitlbHNlOgorICAgIHRyeToKKyAgICAgICAgZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBGb3JraW5nUGlja2xlci5yZWdpc3Rlcihzb2NrZXQuc29ja2V0LCByZWR1Y3Rpb24ucmVkdWNlX3NvY2tldCkKKyAgICAgICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoQ29ubmVjdGlvbiwgcmVkdWN0aW9uLnJlZHVjZV9jb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkKaW5kZXggMTAxYzNjYi4uZTMxZmM2MSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5CkBAIC0zNSw3ICszNSw3IEBACiBfX2FsbF9fID0gWwogICAgICdQcm9jZXNzJywgJ2N1cnJlbnRfcHJvY2VzcycsICdhY3RpdmVfY2hpbGRyZW4nLCAnZnJlZXplX3N1cHBvcnQnLAogICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ0NvbmRpdGlvbicsCi0gICAgJ0V2ZW50JywgJ1F1ZXVlJywgJ01hbmFnZXInLCAnUGlwZScsICdQb29sJywgJ0pvaW5hYmxlUXVldWUnCisgICAgJ0V2ZW50JywgJ0JhcnJpZXInLCAnUXVldWUnLCAnTWFuYWdlcicsICdQaXBlJywgJ1Bvb2wnLCAnSm9pbmFibGVRdWV1ZScKICAgICBdCiAKICMKQEAgLTQ2LDEyICs0NiwxMCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHdlYWtyZWYKIGltcG9ydCBhcnJheQotaW1wb3J0IGl0ZXJ0b29scwogCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgVGltZW91dEVycm9yLCBjcHVfY291bnQKIGZyb20gbXVsdGlwcm9jZXNzaW5nLmR1bW15LmNvbm5lY3Rpb24gaW1wb3J0IFBpcGUKIGZyb20gdGhyZWFkaW5nIGltcG9ydCBMb2NrLCBSTG9jaywgU2VtYXBob3JlLCBCb3VuZGVkU2VtYXBob3JlCi1mcm9tIHRocmVhZGluZyBpbXBvcnQgRXZlbnQKK2Zyb20gdGhyZWFkaW5nIGltcG9ydCBFdmVudCwgQ29uZGl0aW9uLCBCYXJyaWVyCiBmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQogCiAjCkBAIC04NSwxNyArODMsNiBAQAogIwogIwogCi1jbGFzcyBDb25kaXRpb24odGhyZWFkaW5nLl9Db25kaXRpb24pOgotICAgICMgWFhYCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAwKToKLSAgICAgICAgbm90aWZ5X2FsbCA9IHRocmVhZGluZy5fQ29uZGl0aW9uLm5vdGlmeV9hbGwuX19mdW5jX18KLSAgICBlbHNlOgotICAgICAgICBub3RpZnlfYWxsID0gdGhyZWFkaW5nLl9Db25kaXRpb24ubm90aWZ5X2FsbAotCi0jCi0jCi0jCi0KIFByb2Nlc3MgPSBEdW1teVByb2Nlc3MKIGN1cnJlbnRfcHJvY2VzcyA9IHRocmVhZGluZy5jdXJyZW50X3RocmVhZAogY3VycmVudF9wcm9jZXNzKCkuX2NoaWxkcmVuID0gd2Vha3JlZi5XZWFrS2V5RGljdGlvbmFyeSgpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkKaW5kZXggYWYxMDU3OS4uODc0ZWM4ZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQpAQCAtNTMsNiArNTMsMTIgQEAKIAogICAgIGFkZHJlc3MgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogc2VsZi5fYmFja2xvZ19xdWV1ZSkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIENsaWVudChhZGRyZXNzKToKICAgICBfaW4sIF9vdXQgPSBRdWV1ZSgpLCBRdWV1ZSgpCkBAIC04NSwzICs5MSw5IEBACiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIHBhc3MKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkKaW5kZXggYmM4YWM0NC4uYWY2NTgwZCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya2luZy5weQpAQCAtNCwzMiArNCw3IEBACiAjIG11bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogaW1wb3J0IG9zCkBAIC0zOCw3ICsxMyw3IEBACiAKIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCB1dGlsLCBwcm9jZXNzCiAKLV9fYWxsX18gPSBbJ1BvcGVuJywgJ2Fzc2VydF9zcGF3bmluZycsICdleGl0JywgJ2R1cGxpY2F0ZScsICdjbG9zZScsICdGb3JraW5nUGlja2xlciddCitfX2FsbF9fID0gWydQb3BlbicsICdhc3NlcnRfc3Bhd25pbmcnLCAnZHVwbGljYXRlJywgJ2Nsb3NlJywgJ0ZvcmtpbmdQaWNrbGVyJ10KIAogIwogIyBDaGVjayB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBpcyBzcGF3bmluZyBhIGNoaWxkIHByb2Nlc3MKQEAgLTU1LDE4ICszMCwxOCBAQAogIyBUcnkgbWFraW5nIHNvbWUgY2FsbGFibGUgdHlwZXMgcGlja2xhYmxlCiAjCiAKLWZyb20gcGlja2xlIGltcG9ydCBfUGlja2xlciBhcyBQaWNrbGVyCitmcm9tIHBpY2tsZSBpbXBvcnQgUGlja2xlcgorZnJvbSBjb3B5cmVnIGltcG9ydCBkaXNwYXRjaF90YWJsZQorCiBjbGFzcyBGb3JraW5nUGlja2xlcihQaWNrbGVyKToKLSAgICBkaXNwYXRjaCA9IFBpY2tsZXIuZGlzcGF0Y2guY29weSgpCisgICAgX2V4dHJhX3JlZHVjZXJzID0ge30KKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBQaWNrbGVyLl9faW5pdF9fKHNlbGYsICphcmdzKQorICAgICAgICBzZWxmLmRpc3BhdGNoX3RhYmxlID0gZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICAgICAgIHNlbGYuZGlzcGF0Y2hfdGFibGUudXBkYXRlKHNlbGYuX2V4dHJhX3JlZHVjZXJzKQogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiByZWdpc3RlcihjbHMsIHR5cGUsIHJlZHVjZSk6Ci0gICAgICAgIGRlZiBkaXNwYXRjaGVyKHNlbGYsIG9iaik6Ci0gICAgICAgICAgICBydiA9IHJlZHVjZShvYmopCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJ2LCBzdHIpOgotICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9nbG9iYWwob2JqLCBydikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5zYXZlX3JlZHVjZShvYmo9b2JqLCAqcnYpCi0gICAgICAgIGNscy5kaXNwYXRjaFt0eXBlXSA9IGRpc3BhdGNoZXIKKyAgICAgICAgY2xzLl9leHRyYV9yZWR1Y2Vyc1t0eXBlXSA9IHJlZHVjZQogCiBkZWYgX3JlZHVjZV9tZXRob2QobSk6CiAgICAgaWYgbS5fX3NlbGZfXyBpcyBOb25lOgpAQCAtMTAwLDkgKzc1LDYgQEAKICMKIAogaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6Ci0gICAgaW1wb3J0IHRpbWUKLQotICAgIGV4aXQgPSBvcy5fZXhpdAogICAgIGR1cGxpY2F0ZSA9IG9zLmR1cAogICAgIGNsb3NlID0gb3MuY2xvc2UKIApAQCAtMTE4LDE0ICs5MCwyMyBAQAogICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCiAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBOb25lCiAKKyAgICAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKKyAgICAgICAgICAgIHNlbGYuc2VudGluZWwgPSByCisKICAgICAgICAgICAgIHNlbGYucGlkID0gb3MuZm9yaygpCiAgICAgICAgICAgICBpZiBzZWxmLnBpZCA9PSAwOgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHIpCiAgICAgICAgICAgICAgICAgaWYgJ3JhbmRvbScgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICAgICAgICAgIGltcG9ydCByYW5kb20KICAgICAgICAgICAgICAgICAgICAgcmFuZG9tLnNlZWQoKQogICAgICAgICAgICAgICAgIGNvZGUgPSBwcm9jZXNzX29iai5fYm9vdHN0cmFwKCkKICAgICAgICAgICAgICAgICBvcy5fZXhpdChjb2RlKQogCisgICAgICAgICAgICAjIGB3YCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBjaGlsZCBleGl0cywgYXQgd2hpY2ggcG9pbnQgYHJgCisgICAgICAgICAgICAjIHdpbGwgYmVjb21lIHJlYWR5IGZvciByZWFkaW5nICh1c2luZyBlLmcuIHNlbGVjdCgpKS4KKyAgICAgICAgICAgIG9zLmNsb3NlKHcpCisgICAgICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIG9zLmNsb3NlLCAociwpKQorCiAgICAgICAgIGRlZiBwb2xsKHNlbGYsIGZsYWc9b3MuV05PSEFORyk6CiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xNDMsMjYgKzEyNCwyMCBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAgICAgICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9sbCgwKQotICAgICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIHRpbWVvdXQKLSAgICAgICAgICAgIGRlbGF5ID0gMC4wMDA1Ci0gICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgIHJlcyA9IHNlbGYucG9sbCgpCi0gICAgICAgICAgICAgICAgaWYgcmVzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKLSAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBkZWxheSA9IG1pbihkZWxheSAqIDIsIHJlbWFpbmluZywgMC4wNSkKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKGRlbGF5KQotICAgICAgICAgICAgcmV0dXJuIHJlcworICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgd2FpdChbc2VsZi5zZW50aW5lbF0sIHRpbWVvdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGJsb2NrIGlmIHdhaXQoKSByZXR1cm5lZCBzdWNjZXNzZnVsbHkuCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9sbChvcy5XTk9IQU5HIGlmIHRpbWVvdXQgPT0gMC4wIGVsc2UgMCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogICAgICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy5raWxsKHNlbGYucGlkLCBzaWduYWwuU0lHVEVSTSkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLndhaXQodGltZW91dD0wLjEpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogCkBAIC0xNzcsMTIgKzE1Miw5IEBACiBlbHNlOgogICAgIGltcG9ydCBfdGhyZWFkCiAgICAgaW1wb3J0IG1zdmNydAotICAgIGltcG9ydCBfc3VicHJvY2VzcwotICAgIGltcG9ydCB0aW1lCisgICAgaW1wb3J0IF93aW5hcGkKIAotICAgIGZyb20gcGlja2xlIGltcG9ydCBkdW1wLCBsb2FkLCBISUdIRVNUX1BST1RPQ09MCi0gICAgZnJvbSBfbXVsdGlwcm9jZXNzaW5nIGltcG9ydCB3aW4zMiwgQ29ubmVjdGlvbiwgUGlwZUNvbm5lY3Rpb24KLSAgICBmcm9tIC51dGlsIGltcG9ydCBGaW5hbGl6ZQorICAgIGZyb20gcGlja2xlIGltcG9ydCBsb2FkLCBISUdIRVNUX1BST1RPQ09MCiAKICAgICBkZWYgZHVtcChvYmosIGZpbGUsIHByb3RvY29sPU5vbmUpOgogICAgICAgICBGb3JraW5nUGlja2xlcihmaWxlLCBwcm90b2NvbCkuZHVtcChvYmopCkBAIC0xOTUsOCArMTY3LDcgQEAKICAgICBXSU5FWEUgPSAoc3lzLnBsYXRmb3JtID09ICd3aW4zMicgYW5kIGdldGF0dHIoc3lzLCAnZnJvemVuJywgRmFsc2UpKQogICAgIFdJTlNFUlZJQ0UgPSBzeXMuZXhlY3V0YWJsZS5sb3dlcigpLmVuZHN3aXRoKCJweXRob25zZXJ2aWNlLmV4ZSIpCiAKLSAgICBleGl0ID0gd2luMzIuRXhpdFByb2Nlc3MKLSAgICBjbG9zZSA9IHdpbjMyLkNsb3NlSGFuZGxlCisgICAgY2xvc2UgPSBfd2luYXBpLkNsb3NlSGFuZGxlCiAKICAgICAjCiAgICAgIyBfcHl0aG9uX2V4ZSBpcyB0aGUgYXNzdW1lZCBwYXRoIHRvIHRoZSBweXRob24gZXhlY3V0YWJsZS4KQEAgLTIxOCwxMSArMTg5LDExIEBACiAKICAgICBkZWYgZHVwbGljYXRlKGhhbmRsZSwgdGFyZ2V0X3Byb2Nlc3M9Tm9uZSwgaW5oZXJpdGFibGU9RmFsc2UpOgogICAgICAgICBpZiB0YXJnZXRfcHJvY2VzcyBpcyBOb25lOgotICAgICAgICAgICAgdGFyZ2V0X3Byb2Nlc3MgPSBfc3VicHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpCi0gICAgICAgIHJldHVybiBfc3VicHJvY2Vzcy5EdXBsaWNhdGVIYW5kbGUoCi0gICAgICAgICAgICBfc3VicHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsIHRhcmdldF9wcm9jZXNzLAotICAgICAgICAgICAgMCwgaW5oZXJpdGFibGUsIF9zdWJwcm9jZXNzLkRVUExJQ0FURV9TQU1FX0FDQ0VTUwotICAgICAgICAgICAgKS5EZXRhY2goKQorICAgICAgICAgICAgdGFyZ2V0X3Byb2Nlc3MgPSBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCkKKyAgICAgICAgcmV0dXJuIF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsIHRhcmdldF9wcm9jZXNzLAorICAgICAgICAgICAgMCwgaW5oZXJpdGFibGUsIF93aW5hcGkuRFVQTElDQVRFX1NBTUVfQUNDRVNTCisgICAgICAgICAgICApCiAKICAgICAjCiAgICAgIyBXZSBkZWZpbmUgYSBQb3BlbiBjbGFzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZnJvbSBzdWJwcm9jZXNzLCBidXQKQEAgLTIzNiw2ICsyMDcsOSBAQAogICAgICAgICBfdGxzID0gX3RocmVhZC5fbG9jYWwoKQogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9jZXNzX29iaik6CisgICAgICAgICAgICBjbWQgPSAnICcuam9pbignIiVzIicgJSB4IGZvciB4IGluIGdldF9jb21tYW5kX2xpbmUoKSkKKyAgICAgICAgICAgIHByZXBfZGF0YSA9IGdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQorCiAgICAgICAgICAgICAjIGNyZWF0ZSBwaXBlIGZvciBjb21tdW5pY2F0aW9uIHdpdGggY2hpbGQKICAgICAgICAgICAgIHJmZCwgd2ZkID0gb3MucGlwZSgpCiAKQEAgLTI0MywzMCArMjE3LDMwIEBACiAgICAgICAgICAgICByaGFuZGxlID0gZHVwbGljYXRlKG1zdmNydC5nZXRfb3NmaGFuZGxlKHJmZCksIGluaGVyaXRhYmxlPVRydWUpCiAgICAgICAgICAgICBvcy5jbG9zZShyZmQpCiAKLSAgICAgICAgICAgICMgc3RhcnQgcHJvY2VzcwotICAgICAgICAgICAgY21kID0gZ2V0X2NvbW1hbmRfbGluZSgpICsgW3JoYW5kbGVdCi0gICAgICAgICAgICBjbWQgPSAnICcuam9pbignIiVzIicgJSB4IGZvciB4IGluIGNtZCkKLSAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfc3VicHJvY2Vzcy5DcmVhdGVQcm9jZXNzKAotICAgICAgICAgICAgICAgIF9weXRob25fZXhlLCBjbWQsIE5vbmUsIE5vbmUsIDEsIDAsIE5vbmUsIE5vbmUsIE5vbmUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBodC5DbG9zZSgpCi0gICAgICAgICAgICBjbG9zZShyaGFuZGxlKQorICAgICAgICAgICAgd2l0aCBvcGVuKHdmZCwgJ3diJywgY2xvc2VmZD1UcnVlKSBhcyB0b19jaGlsZDoKKyAgICAgICAgICAgICAgICAjIHN0YXJ0IHByb2Nlc3MKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfd2luYXBpLkNyZWF0ZVByb2Nlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICBfcHl0aG9uX2V4ZSwgY21kICsgKCcgJXMnICUgcmhhbmRsZSksCisgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBOb25lLCAxLCAwLCBOb25lLCBOb25lLCBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoaHQpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UocmhhbmRsZSkKIAotICAgICAgICAgICAgIyBzZXQgYXR0cmlidXRlcyBvZiBzZWxmCi0gICAgICAgICAgICBzZWxmLnBpZCA9IHBpZAotICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gTm9uZQotICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gaHAKKyAgICAgICAgICAgICAgICAjIHNldCBhdHRyaWJ1dGVzIG9mIHNlbGYKKyAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IHBpZAorICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBocAorICAgICAgICAgICAgICAgIHNlbGYuc2VudGluZWwgPSBpbnQoaHApCiAKLSAgICAgICAgICAgICMgc2VuZCBpbmZvcm1hdGlvbiB0byBjaGlsZAotICAgICAgICAgICAgcHJlcF9kYXRhID0gZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCi0gICAgICAgICAgICB0b19jaGlsZCA9IG9zLmZkb3Blbih3ZmQsICd3YicpCi0gICAgICAgICAgICBQb3Blbi5fdGxzLnByb2Nlc3NfaGFuZGxlID0gaW50KGhwKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKLSAgICAgICAgICAgICAgICBkdW1wKHByb2Nlc3Nfb2JqLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIFBvcGVuLl90bHMucHJvY2Vzc19oYW5kbGUKLSAgICAgICAgICAgICAgICB0b19jaGlsZC5jbG9zZSgpCisgICAgICAgICAgICAgICAgIyBzZW5kIGluZm9ybWF0aW9uIHRvIGNoaWxkCisgICAgICAgICAgICAgICAgUG9wZW4uX3Rscy5wcm9jZXNzX2hhbmRsZSA9IGludChocCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKKyAgICAgICAgICAgICAgICAgICAgZHVtcChwcm9jZXNzX29iaiwgdG9fY2hpbGQsIEhJR0hFU1RfUFJPVE9DT0wpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgZGVsIFBvcGVuLl90bHMucHJvY2Vzc19oYW5kbGUKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiB0aHJlYWRfaXNfc3Bhd25pbmcoKToKQEAgLTI3OSwxMyArMjUzLDEzIEBACiAgICAgICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIG1zZWNzID0gX3N1YnByb2Nlc3MuSU5GSU5JVEUKKyAgICAgICAgICAgICAgICAgICAgbXNlY3MgPSBfd2luYXBpLklORklOSVRFCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbXNlY3MgPSBtYXgoMCwgaW50KHRpbWVvdXQgKiAxMDAwICsgMC41KSkKIAotICAgICAgICAgICAgICAgIHJlcyA9IF9zdWJwcm9jZXNzLldhaXRGb3JTaW5nbGVPYmplY3QoaW50KHNlbGYuX2hhbmRsZSksIG1zZWNzKQotICAgICAgICAgICAgICAgIGlmIHJlcyA9PSBfc3VicHJvY2Vzcy5XQUlUX09CSkVDVF8wOgotICAgICAgICAgICAgICAgICAgICBjb2RlID0gX3N1YnByb2Nlc3MuR2V0RXhpdENvZGVQcm9jZXNzKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgICAgICAgICByZXMgPSBfd2luYXBpLldhaXRGb3JTaW5nbGVPYmplY3QoaW50KHNlbGYuX2hhbmRsZSksIG1zZWNzKQorICAgICAgICAgICAgICAgIGlmIHJlcyA9PSBfd2luYXBpLldBSVRfT0JKRUNUXzA6CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBfd2luYXBpLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCiAgICAgICAgICAgICAgICAgICAgIGlmIGNvZGUgPT0gVEVSTUlOQVRFOgogICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IC1zaWduYWwuU0lHVEVSTQogICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBjb2RlCkBAIC0yOTgsOSArMjcyLDkgQEAKICAgICAgICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuVGVybWluYXRlUHJvY2VzcyhpbnQoc2VsZi5faGFuZGxlKSwgVEVSTUlOQVRFKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdCh0aW1lb3V0PTAuMSkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5UZXJtaW5hdGVQcm9jZXNzKGludChzZWxmLl9oYW5kbGUpLCBURVJNSU5BVEUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdCh0aW1lb3V0PTEuMCkgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKICAgICAjCkBAIC0zNTAsNyArMzI0LDggQEAKICAgICAgICAgICAgIHJldHVybiBbc3lzLmV4ZWN1dGFibGUsICctLW11bHRpcHJvY2Vzc2luZy1mb3JrJ10KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByb2cgPSAnZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgbWFpbjsgbWFpbigpJwotICAgICAgICAgICAgcmV0dXJuIFtfcHl0aG9uX2V4ZSwgJy1jJywgcHJvZywgJy0tbXVsdGlwcm9jZXNzaW5nLWZvcmsnXQorICAgICAgICAgICAgb3B0cyA9IHV0aWwuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCisgICAgICAgICAgICByZXR1cm4gW19weXRob25fZXhlXSArIG9wdHMgKyBbJy1jJywgcHJvZywgJy0tbXVsdGlwcm9jZXNzaW5nLWZvcmsnXQogCiAKICAgICBkZWYgbWFpbigpOgpAQCAtMzcyLDcgKzM0Nyw3IEBACiAgICAgICAgIGZyb21fcGFyZW50LmNsb3NlKCkKIAogICAgICAgICBleGl0Y29kZSA9IHNlbGYuX2Jvb3RzdHJhcCgpCi0gICAgICAgIGV4aXQoZXhpdGNvZGUpCisgICAgICAgIHN5cy5leGl0KGV4aXRjb2RlKQogCiAKICAgICBkZWYgZ2V0X3ByZXBhcmF0aW9uX2RhdGEobmFtZSk6CkBAIC00MDUsMjIgKzM4MCw2IEBACiAKICAgICAgICAgcmV0dXJuIGQKIAotICAgICMKLSAgICAjIE1ha2UgKFBpcGUpQ29ubmVjdGlvbiBwaWNrbGFibGUKLSAgICAjCi0KLSAgICBkZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6Ci0gICAgICAgIGlmIG5vdCBQb3Blbi50aHJlYWRfaXNfc3Bhd25pbmcoKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKLSAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCAlcyBvYmplY3RzIGNhbiBvbmx5IGJlIHNoYXJlZCBiZXR3ZWVuIHByb2Nlc3Nlc1xuJwotICAgICAgICAgICAgICAgICd1c2luZyBpbmhlcml0YW5jZScgJSB0eXBlKGNvbm4pLl9fbmFtZV9fCi0gICAgICAgICAgICAgICAgKQotICAgICAgICByZXR1cm4gdHlwZShjb25uKSwgKFBvcGVuLmR1cGxpY2F0ZV9mb3JfY2hpbGQoY29ubi5maWxlbm8oKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKLQotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKENvbm5lY3Rpb24sIHJlZHVjZV9jb25uZWN0aW9uKQotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKFBpcGVDb25uZWN0aW9uLCByZWR1Y2VfY29ubmVjdGlvbikKLQogIwogIyBQcmVwYXJlIGN1cnJlbnQgcHJvY2VzcwogIwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CmluZGV4IDBhMjVlZjAuLjRlOTNjMTIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKQEAgLTQsMzcgKzQsMTEgQEAKICMgbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBpbXBvcnQgYmlzZWN0CiBpbXBvcnQgbW1hcAotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKQEAgLTUyLDcgKzI2LDcgQEAKIAogaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyCisgICAgaW1wb3J0IF93aW5hcGkKIAogICAgIGNsYXNzIEFyZW5hKG9iamVjdCk6CiAKQEAgLTYyLDcgKzM2LDcgQEAKICAgICAgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKICAgICAgICAgICAgIHNlbGYubmFtZSA9ICdweW0tJWQtJWQnICUgKG9zLmdldHBpZCgpLCBuZXh0KEFyZW5hLl9jb3VudGVyKSkKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gbW1hcC5tbWFwKC0xLCBzZWxmLnNpemUsIHRhZ25hbWU9c2VsZi5uYW1lKQotICAgICAgICAgICAgYXNzZXJ0IHdpbjMyLkdldExhc3RFcnJvcigpID09IDAsICd0YWduYW1lIGFscmVhZHkgaW4gdXNlJworICAgICAgICAgICAgYXNzZXJ0IF93aW5hcGkuR2V0TGFzdEVycm9yKCkgPT0gMCwgJ3RhZ25hbWUgYWxyZWFkeSBpbiB1c2UnCiAgICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IChzZWxmLnNpemUsIHNlbGYubmFtZSkKIAogICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgpAQCAtNzIsNyArNDYsNyBAQAogICAgICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICAgICAgIHNlbGYuc2l6ZSwgc2VsZi5uYW1lID0gc2VsZi5fc3RhdGUgPSBzdGF0ZQogICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBtbWFwLm1tYXAoLTEsIHNlbGYuc2l6ZSwgdGFnbmFtZT1zZWxmLm5hbWUpCi0gICAgICAgICAgICBhc3NlcnQgd2luMzIuR2V0TGFzdEVycm9yKCkgPT0gd2luMzIuRVJST1JfQUxSRUFEWV9FWElTVFMKKyAgICAgICAgICAgIGFzc2VydCBfd2luYXBpLkdldExhc3RFcnJvcigpID09IF93aW5hcGkuRVJST1JfQUxSRUFEWV9FWElTVFMKIAogZWxzZToKIApAQCAtMjMxLDcgKzIwNSw3IEBACiAgICAgICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQogCiAjCi0jIENsYXNzIHJlcHJlc2VudGluZyBhIGNodW5rIG9mIGFuIG1tYXAgLS0gY2FuIGJlIGluaGVyaXRlZAorIyBDbGFzcyByZXByZXNlbnRpbmcgYSBjaHVuayBvZiBhbiBtbWFwIC0tIGNhbiBiZSBpbmhlcml0ZWQgYnkgY2hpbGQgcHJvY2VzcwogIwogCiBjbGFzcyBCdWZmZXJXcmFwcGVyKG9iamVjdCk6CkBAIC0yNDQsMTEgKzIxOCw2IEBACiAgICAgICAgIHNlbGYuX3N0YXRlID0gKGJsb2NrLCBzaXplKQogICAgICAgICBGaW5hbGl6ZShzZWxmLCBCdWZmZXJXcmFwcGVyLl9oZWFwLmZyZWUsIGFyZ3M9KGJsb2NrLCkpCiAKLSAgICBkZWYgZ2V0X2FkZHJlc3Moc2VsZik6CisgICAgZGVmIGNyZWF0ZV9tZW1vcnl2aWV3KHNlbGYpOgogICAgICAgICAoYXJlbmEsIHN0YXJ0LCBzdG9wKSwgc2l6ZSA9IHNlbGYuX3N0YXRlCi0gICAgICAgIGFkZHJlc3MsIGxlbmd0aCA9IF9tdWx0aXByb2Nlc3NpbmcuYWRkcmVzc19vZl9idWZmZXIoYXJlbmEuYnVmZmVyKQotICAgICAgICBhc3NlcnQgc2l6ZSA8PSBsZW5ndGgKLSAgICAgICAgcmV0dXJuIGFkZHJlc3MgKyBzdGFydAotCi0gICAgZGVmIGdldF9zaXplKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGVbMV0KKyAgICAgICAgcmV0dXJuIG1lbW9yeXZpZXcoYXJlbmEuYnVmZmVyKVtzdGFydDpzdGFydCtzaXplXQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKaW5kZXggNTU4OGVhZC4uMWFiMTQ3ZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CkBAIC01LDMyICs1LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsgJ0Jhc2VNYW5hZ2VyJywgJ1N5bmNNYW5hZ2VyJywgJ0Jhc2VQcm94eScsICdUb2tlbicgXQpAQCAtMzksMTkgKzE0LDE2IEBACiAjIEltcG9ydHMKICMKIAotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgd2Vha3JlZgogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IGFycmF5CiBpbXBvcnQgcXVldWUKIAogZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGZvcm1hdF9leGMKLWZyb20gcGlja2xlIGltcG9ydCBQaWNrbGluZ0Vycm9yCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgY3VycmVudF9wcm9jZXNzLCBhY3RpdmVfY2hpbGRyZW4sIFBvb2wsIHV0aWwsIGNvbm5lY3Rpb24KIGZyb20gbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MgaW1wb3J0IEF1dGhlbnRpY2F0aW9uU3RyaW5nCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBleGl0LCBQb3BlbiwgYXNzZXJ0X3NwYXduaW5nLCBGb3JraW5nUGlja2xlcgotZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgRmluYWxpemUsIGluZm8KK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IFBvcGVuLCBGb3JraW5nUGlja2xlcgorZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKICMKICMgUmVnaXN0ZXIgc29tZSB0aGluZ3MgZm9yIHBpY2tsaW5nCkBAIC0xNjgsMjggKzE0MCwzOCBAQAogICAgICAgICBzZWxmLmlkX3RvX29iaiA9IHsnMCc6IChOb25lLCAoKSl9CiAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnQgPSB7fQogICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLlJMb2NrKCkKLSAgICAgICAgc2VsZi5zdG9wID0gMAogCiAgICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZik6CiAgICAgICAgICcnJwogICAgICAgICBSdW4gdGhlIHNlcnZlciBmb3JldmVyCiAgICAgICAgICcnJworICAgICAgICBzZWxmLnN0b3BfZXZlbnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBjdXJyZW50X3Byb2Nlc3MoKS5fbWFuYWdlcl9zZXJ2ZXIgPSBzZWxmCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFjY2VwdGVyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5hY2NlcHRlcikKKyAgICAgICAgICAgIGFjY2VwdGVyLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIGFjY2VwdGVyLnN0YXJ0KCkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gc2VsZi5saXN0ZW5lci5hY2NlcHQoKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIElPRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuaGFuZGxlX3JlcXVlc3QsIGFyZ3M9KGMsKSkKLSAgICAgICAgICAgICAgICAgICAgdC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHQuc3RhcnQoKQorICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLnN0b3BfZXZlbnQuaXNfc2V0KCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9ldmVudC53YWl0KDEpCiAgICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnN0b3AgPSA5OTkKLSAgICAgICAgICAgIHNlbGYubGlzdGVuZXIuY2xvc2UoKQorICAgICAgICAgICAgaWYgc3lzLnN0ZG91dCAhPSBzeXMuX19zdGRvdXRfXzoKKyAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdyZXNldHRpbmcgc3Rkb3V0LCBzdGRlcnInKQorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzeXMuX19zdGRvdXRfXworICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXworICAgICAgICAgICAgc3lzLmV4aXQoMCkKKworICAgIGRlZiBhY2NlcHRlcihzZWxmKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjID0gc2VsZi5saXN0ZW5lci5hY2NlcHQoKQorICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuaGFuZGxlX3JlcXVlc3QsIGFyZ3M9KGMsKSkKKyAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgdC5zdGFydCgpCiAKICAgICBkZWYgaGFuZGxlX3JlcXVlc3Qoc2VsZiwgYyk6CiAgICAgICAgICcnJwpAQCAtMjM2LDcgKzIxOCw3IEBACiAgICAgICAgIHNlbmQgPSBjb25uLnNlbmQKICAgICAgICAgaWRfdG9fb2JqID0gc2VsZi5pZF90b19vYmoKIAotICAgICAgICB3aGlsZSBub3Qgc2VsZi5zdG9wOgorICAgICAgICB3aGlsZSBub3Qgc2VsZi5zdG9wX2V2ZW50LmlzX3NldCgpOgogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbWV0aG9kbmFtZSA9IG9iaiA9IE5vbmUKQEAgLTM0NiwzMiArMzI4LDEzIEBACiAgICAgICAgIFNodXRkb3duIHRoaXMgcHJvY2VzcwogICAgICAgICAnJycKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ21hbmFnZXIgcmVjZWl2ZWQgc2h1dGRvd24gbWVzc2FnZScpCi0gICAgICAgICAgICAgICAgYy5zZW5kKCgnI1JFVFVSTicsIE5vbmUpKQotCi0gICAgICAgICAgICAgICAgaWYgc3lzLnN0ZG91dCAhPSBzeXMuX19zdGRvdXRfXzoKLSAgICAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygncmVzZXR0aW5nIHN0ZG91dCwgc3RkZXJyJykKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN5cy5fX3N0ZG91dF9fCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXwotCi0gICAgICAgICAgICAgICAgdXRpbC5fcnVuX2ZpbmFsaXplcnMoMCkKLQotICAgICAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgotICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCd0ZXJtaW5hdGluZyBhIGNoaWxkIHByb2Nlc3Mgb2YgbWFuYWdlcicpCi0gICAgICAgICAgICAgICAgICAgIHAudGVybWluYXRlKCkKLQotICAgICAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgotICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCd0ZXJtaW5hdGluZyBhIGNoaWxkIHByb2Nlc3Mgb2YgbWFuYWdlcicpCi0gICAgICAgICAgICAgICAgICAgIHAuam9pbigpCi0KLSAgICAgICAgICAgICAgICB1dGlsLl9ydW5fZmluYWxpemVycygpCi0gICAgICAgICAgICAgICAgdXRpbC5pbmZvKCdtYW5hZ2VyIGV4aXRpbmcgd2l0aCBleGl0Y29kZSAwJykKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgICAgICAgICB1dGlsLmRlYnVnKCdtYW5hZ2VyIHJlY2VpdmVkIHNodXRkb3duIG1lc3NhZ2UnKQorICAgICAgICAgICAgYy5zZW5kKCgnI1JFVFVSTicsIE5vbmUpKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGV4aXQoMCkKKyAgICAgICAgICAgIHNlbGYuc3RvcF9ldmVudC5zZXQoKQogCiAgICAgZGVmIGNyZWF0ZShzZWxmLCBjLCB0eXBlaWQsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICAnJycKQEAgLTQ4MywxMCArNDQ2LDYgQEAKICAgICAgICAgc2VsZi5fc2VyaWFsaXplciA9IHNlcmlhbGl6ZXIKICAgICAgICAgc2VsZi5fTGlzdGVuZXIsIHNlbGYuX0NsaWVudCA9IGxpc3RlbmVyX2NsaWVudFtzZXJpYWxpemVyXQogCi0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiB0eXBlKHNlbGYpLmZyb21fYWRkcmVzcywgXAotICAgICAgICAgICAgICAgKHNlbGYuX2FkZHJlc3MsIHNlbGYuX2F1dGhrZXksIHNlbGYuX3NlcmlhbGl6ZXIpCi0KICAgICBkZWYgZ2V0X3NlcnZlcihzZWxmKToKICAgICAgICAgJycnCiAgICAgICAgIFJldHVybiBzZXJ2ZXIgb2JqZWN0IHdpdGggc2VydmVfZm9yZXZlcigpIG1ldGhvZCBhbmQgYWRkcmVzcyBhdHRyaWJ1dGUKQEAgLTU3Niw3ICs1MzUsMTAgQEAKICAgICAgICAgJycnCiAgICAgICAgIEpvaW4gdGhlIG1hbmFnZXIgcHJvY2VzcyAoaWYgaXQgaGFzIGJlZW4gc3Bhd25lZCkKICAgICAgICAgJycnCi0gICAgICAgIHNlbGYuX3Byb2Nlc3Muam9pbih0aW1lb3V0KQorICAgICAgICBpZiBzZWxmLl9wcm9jZXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzcy5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcHJvY2Vzcy5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBOb25lCiAKICAgICBkZWYgX2RlYnVnX2luZm8oc2VsZik6CiAgICAgICAgICcnJwpAQCAtNTk5LDYgKzU2MSw5IEBACiAgICAgICAgICAgICBjb25uLmNsb3NlKCkKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3N0YXRlLnZhbHVlID09IFN0YXRlLklOSVRJQUw6CisgICAgICAgICAgICBzZWxmLnN0YXJ0KCkKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlLnZhbHVlID09IFN0YXRlLlNUQVJURUQKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKQEAgLTYyMCw3ICs1ODUsNyBAQAogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgICAgIHByb2Nlc3Muam9pbih0aW1lb3V0PTAuMikKKyAgICAgICAgICAgIHByb2Nlc3Muam9pbih0aW1lb3V0PTEuMCkKICAgICAgICAgICAgIGlmIHByb2Nlc3MuaXNfYWxpdmUoKToKICAgICAgICAgICAgICAgICB1dGlsLmluZm8oJ21hbmFnZXIgc3RpbGwgYWxpdmUnKQogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIocHJvY2VzcywgJ3Rlcm1pbmF0ZScpOgpAQCAtOTgyLDggKzk0Nyw5IEBACiAKIGNsYXNzIEFjcXVpcmVyUHJveHkoQmFzZVByb3h5KToKICAgICBfZXhwb3NlZF8gPSAoJ2FjcXVpcmUnLCAncmVsZWFzZScpCi0gICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdhY3F1aXJlJywgKGJsb2NraW5nLCkpCisgICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgYXJncyA9IChibG9ja2luZywpIGlmIHRpbWVvdXQgaXMgTm9uZSBlbHNlIChibG9ja2luZywgdGltZW91dCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ2FjcXVpcmUnLCBhcmdzKQogICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgncmVsZWFzZScpCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTEwMDAsNiArOTY2LDI0IEBACiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdub3RpZnknKQogICAgIGRlZiBub3RpZnlfYWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnbm90aWZ5X2FsbCcpCisgICAgZGVmIHdhaXRfZm9yKHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlbmR0aW1lID0gTm9uZQorICAgICAgICAgICAgd2FpdHRpbWUgPSBOb25lCisgICAgICAgIHdoaWxlIG5vdCByZXN1bHQ6CisgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdhaXR0aW1lID0gZW5kdGltZSAtIF90aW1lKCkKKyAgICAgICAgICAgICAgICBpZiB3YWl0dGltZSA8PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2VsZi53YWl0KHdhaXR0aW1lKQorICAgICAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCiAKIGNsYXNzIEV2ZW50UHJveHkoQmFzZVByb3h5KToKICAgICBfZXhwb3NlZF8gPSAoJ2lzX3NldCcsICdzZXQnLCAnY2xlYXInLCAnd2FpdCcpCkBAIC0xMDEyLDYgKzk5NiwyNiBAQAogICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCd3YWl0JywgKHRpbWVvdXQsKSkKIAorCitjbGFzcyBCYXJyaWVyUHJveHkoQmFzZVByb3h5KToKKyAgICBfZXhwb3NlZF8gPSAoJ19fZ2V0YXR0cmlidXRlX18nLCAnd2FpdCcsICdhYm9ydCcsICdyZXNldCcpCisgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ3dhaXQnLCAodGltZW91dCwpKQorICAgIGRlZiBhYm9ydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ2Fib3J0JykKKyAgICBkZWYgcmVzZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdyZXNldCcpCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcnRpZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX2dldGF0dHJpYnV0ZV9fJywgKCdwYXJ0aWVzJywpKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuX3dhaXRpbmcoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX2dldGF0dHJpYnV0ZV9fJywgKCduX3dhaXRpbmcnLCkpCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJyb2tlbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ19fZ2V0YXR0cmlidXRlX18nLCAoJ2Jyb2tlbicsKSkKKworCiBjbGFzcyBOYW1lc3BhY2VQcm94eShCYXNlUHJveHkpOgogICAgIF9leHBvc2VkXyA9ICgnX19nZXRhdHRyaWJ1dGVfXycsICdfX3NldGF0dHJfXycsICdfX2RlbGF0dHJfXycpCiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGtleSk6CkBAIC0xMDQxLDEyICsxMDQ1LDExIEBACiAKIAogQmFzZUxpc3RQcm94eSA9IE1ha2VQcm94eVR5cGUoJ0Jhc2VMaXN0UHJveHknLCAoCi0gICAgJ19fYWRkX18nLCAnX19jb250YWluc19fJywgJ19fZGVsaXRlbV9fJywgJ19fZGVsc2xpY2VfXycsCi0gICAgJ19fZ2V0aXRlbV9fJywgJ19fZ2V0c2xpY2VfXycsICdfX2xlbl9fJywgJ19fbXVsX18nLAotICAgICdfX3JldmVyc2VkX18nLCAnX19ybXVsX18nLCAnX19zZXRpdGVtX18nLCAnX19zZXRzbGljZV9fJywKKyAgICAnX19hZGRfXycsICdfX2NvbnRhaW5zX18nLCAnX19kZWxpdGVtX18nLCAnX19nZXRpdGVtX18nLCAnX19sZW5fXycsCisgICAgJ19fbXVsX18nLCAnX19yZXZlcnNlZF9fJywgJ19fcm11bF9fJywgJ19fc2V0aXRlbV9fJywKICAgICAnYXBwZW5kJywgJ2NvdW50JywgJ2V4dGVuZCcsICdpbmRleCcsICdpbnNlcnQnLCAncG9wJywgJ3JlbW92ZScsCiAgICAgJ3JldmVyc2UnLCAnc29ydCcsICdfX2ltdWxfXycKLSAgICApKSAgICAgICAgICAgICAgICAgICMgWFhYIF9fZ2V0c2xpY2VfXyBhbmQgX19zZXRzbGljZV9fIHVubmVlZGVkIGluIFB5My4wCisgICAgKSkKIGNsYXNzIExpc3RQcm94eShCYXNlTGlzdFByb3h5KToKICAgICBkZWYgX19pYWRkX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBzZWxmLl9jYWxsbWV0aG9kKCdleHRlbmQnLCAodmFsdWUsKSkKQEAgLTEwNjQsMTcgKzEwNjcsMTggQEAKIAogCiBBcnJheVByb3h5ID0gTWFrZVByb3h5VHlwZSgnQXJyYXlQcm94eScsICgKLSAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycsICdfX2dldHNsaWNlX18nLCAnX19zZXRzbGljZV9fJwotICAgICkpICAgICAgICAgICAgICAgICAgIyBYWFggX19nZXRzbGljZV9fIGFuZCBfX3NldHNsaWNlX18gdW5uZWVkZWQgaW4gUHkzLjAKKyAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycKKyAgICApKQogCiAKIFBvb2xQcm94eSA9IE1ha2VQcm94eVR5cGUoJ1Bvb2xQcm94eScsICgKICAgICAnYXBwbHknLCAnYXBwbHlfYXN5bmMnLCAnY2xvc2UnLCAnaW1hcCcsICdpbWFwX3Vub3JkZXJlZCcsICdqb2luJywKLSAgICAnbWFwJywgJ21hcF9hc3luYycsICd0ZXJtaW5hdGUnCisgICAgJ21hcCcsICdtYXBfYXN5bmMnLCAnc3Rhcm1hcCcsICdzdGFybWFwX2FzeW5jJywgJ3Rlcm1pbmF0ZScKICAgICApKQogUG9vbFByb3h5Ll9tZXRob2RfdG9fdHlwZWlkXyA9IHsKICAgICAnYXBwbHlfYXN5bmMnOiAnQXN5bmNSZXN1bHQnLAogICAgICdtYXBfYXN5bmMnOiAnQXN5bmNSZXN1bHQnLAorICAgICdzdGFybWFwX2FzeW5jJzogJ0FzeW5jUmVzdWx0JywKICAgICAnaW1hcCc6ICdJdGVyYXRvcicsCiAgICAgJ2ltYXBfdW5vcmRlcmVkJzogJ0l0ZXJhdG9yJwogICAgIH0KQEAgLTExMDMsNiArMTEwNyw3IEBACiBTeW5jTWFuYWdlci5yZWdpc3RlcignQm91bmRlZFNlbWFwaG9yZScsIHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlLAogICAgICAgICAgICAgICAgICAgICAgQWNxdWlyZXJQcm94eSkKIFN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdDb25kaXRpb24nLCB0aHJlYWRpbmcuQ29uZGl0aW9uLCBDb25kaXRpb25Qcm94eSkKK1N5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdCYXJyaWVyJywgdGhyZWFkaW5nLkJhcnJpZXIsIEJhcnJpZXJQcm94eSkKIFN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdQb29sJywgUG9vbCwgUG9vbFByb3h5KQogU3luY01hbmFnZXIucmVnaXN0ZXIoJ2xpc3QnLCBsaXN0LCBMaXN0UHJveHkpCiBTeW5jTWFuYWdlci5yZWdpc3RlcignZGljdCcsIGRpY3QsIERpY3RQcm94eSkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQppbmRleCA3NTAyZmY4Li45ZTA3ZTMyIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX2FsbF9fID0gWydQb29sJ10KQEAgLTY0LDYgKzM5LDkgQEAKIGRlZiBtYXBzdGFyKGFyZ3MpOgogICAgIHJldHVybiBsaXN0KG1hcCgqYXJncykpCiAKK2RlZiBzdGFybWFwc3RhcihhcmdzKToKKyAgICByZXR1cm4gbGlzdChpdGVydG9vbHMuc3Rhcm1hcChhcmdzWzBdLCBhcmdzWzFdKSkKKwogIwogIyBDb2RlIHJ1biBieSB3b3JrZXIgcHJvY2Vzc2VzCiAjCkBAIC0yNDgsNyArMjI2LDI1IEBACiAgICAgICAgIGluIGEgbGlzdCB0aGF0IGlzIHJldHVybmVkLgogICAgICAgICAnJycKICAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlID09IFJVTgotICAgICAgICByZXR1cm4gc2VsZi5tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZSkuZ2V0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgbWFwc3RhciwgY2h1bmtzaXplKS5nZXQoKQorCisgICAgZGVmIHN0YXJtYXAoc2VsZiwgZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZT1Ob25lKToKKyAgICAgICAgJycnCisgICAgICAgIExpa2UgYG1hcCgpYCBtZXRob2QgYnV0IHRoZSBlbGVtZW50cyBvZiB0aGUgYGl0ZXJhYmxlYCBhcmUgZXhwZWN0ZWQgdG8KKyAgICAgICAgYmUgaXRlcmFibGVzIGFzIHdlbGwgYW5kIHdpbGwgYmUgdW5wYWNrZWQgYXMgYXJndW1lbnRzLiBIZW5jZQorICAgICAgICBgZnVuY2AgYW5kIChhLCBiKSBiZWNvbWVzIGZ1bmMoYSwgYikuCisgICAgICAgICcnJworICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIHN0YXJtYXBzdGFyLCBjaHVua3NpemUpLmdldCgpCisKKyAgICBkZWYgc3Rhcm1hcF9hc3luYyhzZWxmLCBmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplPU5vbmUsIGNhbGxiYWNrPU5vbmUsCisgICAgICAgICAgICBlcnJvcl9jYWxsYmFjaz1Ob25lKToKKyAgICAgICAgJycnCisgICAgICAgIEFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIGBzdGFybWFwKClgIG1ldGhvZC4KKyAgICAgICAgJycnCisgICAgICAgIGFzc2VydCBzZWxmLl9zdGF0ZSA9PSBSVU4KKyAgICAgICAgcmV0dXJuIHNlbGYuX21hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgc3Rhcm1hcHN0YXIsIGNodW5rc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywgZXJyb3JfY2FsbGJhY2spCiAKICAgICBkZWYgaW1hcChzZWxmLCBmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplPTEpOgogICAgICAgICAnJycKQEAgLTMwMiw2ICsyOTgsMTMgQEAKICAgICAgICAgQXN5bmNocm9ub3VzIHZlcnNpb24gb2YgYG1hcCgpYCBtZXRob2QuCiAgICAgICAgICcnJwogICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIG1hcHN0YXIsIGNodW5rc2l6ZSkKKworICAgIGRlZiBfbWFwX2FzeW5jKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBtYXBwZXIsIGNodW5rc2l6ZT1Ob25lLCBjYWxsYmFjaz1Ob25lLAorICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBIZWxwZXIgZnVuY3Rpb24gdG8gaW1wbGVtZW50IG1hcCwgc3Rhcm1hcCBhbmQgdGhlaXIgYXN5bmMgY291bnRlcnBhcnRzLgorICAgICAgICAnJycKICAgICAgICAgaWYgbm90IGhhc2F0dHIoaXRlcmFibGUsICdfX2xlbl9fJyk6CiAgICAgICAgICAgICBpdGVyYWJsZSA9IGxpc3QoaXRlcmFibGUpCiAKQEAgLTMxNSw3ICszMTgsNyBAQAogICAgICAgICB0YXNrX2JhdGNoZXMgPSBQb29sLl9nZXRfdGFza3MoZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZSkKICAgICAgICAgcmVzdWx0ID0gTWFwUmVzdWx0KHNlbGYuX2NhY2hlLCBjaHVua3NpemUsIGxlbihpdGVyYWJsZSksIGNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9ZXJyb3JfY2FsbGJhY2spCi0gICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoKCgocmVzdWx0Ll9qb2IsIGksIG1hcHN0YXIsICh4LCksIHt9KQorICAgICAgICBzZWxmLl90YXNrcXVldWUucHV0KCgoKHJlc3VsdC5fam9iLCBpLCBtYXBwZXIsICh4LCksIHt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGksIHggaW4gZW51bWVyYXRlKHRhc2tfYmF0Y2hlcykpLCBOb25lKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC01MTksNiArNTIyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCdjbGVhbmluZyB1cCB3b3JrZXIgJWQnICUgcC5waWQpCiAgICAgICAgICAgICAgICAgICAgIHAuam9pbigpCiAKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgorICAgICAgICBzZWxmLnRlcm1pbmF0ZSgpCisKICMKICMgQ2xhc3Mgd2hvc2UgaW5zdGFuY2VzIGFyZSByZXR1cm5lZCBieSBgUG9vbC5hcHBseV9hc3luYygpYAogIwpAQCAtNTI2LDMyICs1MzUsMjYgQEAKIGNsYXNzIEFwcGx5UmVzdWx0KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgY2FjaGUsIGNhbGxiYWNrLCBlcnJvcl9jYWxsYmFjayk6Ci0gICAgICAgIHNlbGYuX2NvbmQgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKHRocmVhZGluZy5Mb2NrKCkpCisgICAgICAgIHNlbGYuX2V2ZW50ID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgc2VsZi5fam9iID0gbmV4dChqb2JfY291bnRlcikKICAgICAgICAgc2VsZi5fY2FjaGUgPSBjYWNoZQotICAgICAgICBzZWxmLl9yZWFkeSA9IEZhbHNlCiAgICAgICAgIHNlbGYuX2NhbGxiYWNrID0gY2FsbGJhY2sKICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2sgPSBlcnJvcl9jYWxsYmFjawogICAgICAgICBjYWNoZVtzZWxmLl9qb2JdID0gc2VsZgogCiAgICAgZGVmIHJlYWR5KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fcmVhZHkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V2ZW50LmlzX3NldCgpCiAKICAgICBkZWYgc3VjY2Vzc2Z1bChzZWxmKToKLSAgICAgICAgYXNzZXJ0IHNlbGYuX3JlYWR5CisgICAgICAgIGFzc2VydCBzZWxmLnJlYWR5KCkKICAgICAgICAgcmV0dXJuIHNlbGYuX3N1Y2Nlc3MKIAogICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkeToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb25kLndhaXQodGltZW91dCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisgICAgICAgIHNlbGYuX2V2ZW50LndhaXQodGltZW91dCkKIAogICAgIGRlZiBnZXQoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICAgc2VsZi53YWl0KHRpbWVvdXQpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkeToKKyAgICAgICAgaWYgbm90IHNlbGYucmVhZHkoKToKICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFcnJvcgogICAgICAgICBpZiBzZWxmLl9zdWNjZXNzOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlCkBAIC01NjQsMTIgKzU2Nyw3IEBACiAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICAgaWYgc2VsZi5fZXJyb3JfY2FsbGJhY2sgYW5kIG5vdCBzZWxmLl9zdWNjZXNzOgogICAgICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2soc2VsZi5fdmFsdWUpCi0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KIAogIwpAQCAtNTg2LDcgKzU4NCw3IEBACiAgICAgICAgIHNlbGYuX2NodW5rc2l6ZSA9IGNodW5rc2l6ZQogICAgICAgICBpZiBjaHVua3NpemUgPD0gMDoKICAgICAgICAgICAgIHNlbGYuX251bWJlcl9sZWZ0ID0gMAotICAgICAgICAgICAgc2VsZi5fcmVhZHkgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogICAgICAgICAgICAgZGVsIGNhY2hlW3NlbGYuX2pvYl0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX251bWJlcl9sZWZ0ID0gbGVuZ3RoLy9jaHVua3NpemUgKyBib29sKGxlbmd0aCAlIGNodW5rc2l6ZSkKQEAgLTYwMCwyNCArNTk4LDE0IEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fY2FsbGJhY2s6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQogICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgICAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgICBzZWxmLl92YWx1ZSA9IHJlc3VsdAogICAgICAgICAgICAgaWYgc2VsZi5fZXJyb3JfY2FsbGJhY2s6CiAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2soc2VsZi5fdmFsdWUpCiAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQotICAgICAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWFkeSA9IFRydWUKLSAgICAgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogCiAjCiAjIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuaW1hcCgpYApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5CmluZGV4IDMyNjJiNTAuLjg5MzUwN2IgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Byb2Nlc3MucHkKQEAgLTQsMzIgKzQsNyBAQAogIyBtdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKIF9fYWxsX18gPSBbJ1Byb2Nlc3MnLCAnY3VycmVudF9wcm9jZXNzJywgJ2FjdGl2ZV9jaGlsZHJlbiddCkBAIC05MiwxMiArNjcsMTYgQEAKICAgICAnJycKICAgICBfUG9wZW4gPSBOb25lCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwgYXJncz0oKSwga3dhcmdzPXt9KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwgYXJncz0oKSwga3dhcmdzPXt9LAorICAgICAgICAgICAgICAgICAqLCBkYWVtb249Tm9uZSk6CiAgICAgICAgIGFzc2VydCBncm91cCBpcyBOb25lLCAnZ3JvdXAgYXJndW1lbnQgbXVzdCBiZSBOb25lIGZvciBub3cnCiAgICAgICAgIGNvdW50ID0gbmV4dChfY3VycmVudF9wcm9jZXNzLl9jb3VudGVyKQogICAgICAgICBzZWxmLl9pZGVudGl0eSA9IF9jdXJyZW50X3Byb2Nlc3MuX2lkZW50aXR5ICsgKGNvdW50LCkKICAgICAgICAgc2VsZi5fYXV0aGtleSA9IF9jdXJyZW50X3Byb2Nlc3MuX2F1dGhrZXkKLSAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBfY3VycmVudF9wcm9jZXNzLl9kYWVtb25pYworICAgICAgICBpZiBkYWVtb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9kYWVtb25pYyA9IGRhZW1vbgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBfY3VycmVudF9wcm9jZXNzLl9kYWVtb25pYwogICAgICAgICBzZWxmLl90ZW1wZGlyID0gX2N1cnJlbnRfcHJvY2Vzcy5fdGVtcGRpcgogICAgICAgICBzZWxmLl9wYXJlbnRfcGlkID0gb3MuZ2V0cGlkKCkKICAgICAgICAgc2VsZi5fcG9wZW4gPSBOb25lCkBAIC0xMzAsNiArMTA5LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZyb20gLmZvcmtpbmcgaW1wb3J0IFBvcGVuCiAgICAgICAgIHNlbGYuX3BvcGVuID0gUG9wZW4oc2VsZikKKyAgICAgICAgc2VsZi5fc2VudGluZWwgPSBzZWxmLl9wb3Blbi5zZW50aW5lbAogICAgICAgICBfY3VycmVudF9wcm9jZXNzLl9jaGlsZHJlbi5hZGQoc2VsZikKIAogICAgIGRlZiB0ZXJtaW5hdGUoc2VsZik6CkBAIC0yMTYsNiArMTk2LDE3IEBACiAKICAgICBwaWQgPSBpZGVudAogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlbnRpbmVsKHNlbGYpOgorICAgICAgICAnJycKKyAgICAgICAgUmV0dXJuIGEgZmlsZSBkZXNjcmlwdG9yIChVbml4KSBvciBoYW5kbGUgKFdpbmRvd3MpIHN1aXRhYmxlIGZvcgorICAgICAgICB3YWl0aW5nIGZvciBwcm9jZXNzIHRlcm1pbmF0aW9uLgorICAgICAgICAnJycKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbnRpbmVsCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInByb2Nlc3Mgbm90IHN0YXJ0ZWQiKQorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmIGlzIF9jdXJyZW50X3Byb2Nlc3M6CiAgICAgICAgICAgICBzdGF0dXMgPSAnc3RhcnRlZCcKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKaW5kZXggNTFkOTkxMi4uMzcyNzFmYiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKQEAgLTQsMzIgKzQsNyBAQAogIyBtdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsnUXVldWUnLCAnU2ltcGxlUXVldWUnLCAnSm9pbmFibGVRdWV1ZSddCkBAIC0zOSwxMiArMTQsMTIgQEAKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IHRpbWUKLWltcG9ydCBhdGV4aXQKIGltcG9ydCB3ZWFrcmVmCitpbXBvcnQgZXJybm8KIAogZnJvbSBxdWV1ZSBpbXBvcnQgRW1wdHksIEZ1bGwKIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUGlwZQorZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgUGlwZQogZnJvbSBtdWx0aXByb2Nlc3Npbmcuc3luY2hyb25pemUgaW1wb3J0IExvY2ssIEJvdW5kZWRTZW1hcGhvcmUsIFNlbWFwaG9yZSwgQ29uZGl0aW9uCiBmcm9tIG11bHRpcHJvY2Vzc2luZy51dGlsIGltcG9ydCBkZWJ1ZywgaW5mbywgRmluYWxpemUsIHJlZ2lzdGVyX2FmdGVyX2ZvcmsKIGZyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IGFzc2VydF9zcGF3bmluZwpAQCAtNjcsNiArNDIsOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fd2xvY2sgPSBMb2NrKCkKICAgICAgICAgc2VsZi5fc2VtID0gQm91bmRlZFNlbWFwaG9yZShtYXhzaXplKQorICAgICAgICAjIEZvciB1c2UgYnkgY29uY3VycmVudC5mdXR1cmVzCisgICAgICAgIHNlbGYuX2lnbm9yZV9lcGlwZSA9IEZhbHNlCiAKICAgICAgICAgc2VsZi5fYWZ0ZXJfZm9yaygpCiAKQEAgLTc1LDExICs1MiwxMSBAQAogCiAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICAgYXNzZXJ0X3NwYXduaW5nKHNlbGYpCi0gICAgICAgIHJldHVybiAoc2VsZi5fbWF4c2l6ZSwgc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIsCisgICAgICAgIHJldHVybiAoc2VsZi5faWdub3JlX2VwaXBlLCBzZWxmLl9tYXhzaXplLCBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciwKICAgICAgICAgICAgICAgICBzZWxmLl9ybG9jaywgc2VsZi5fd2xvY2ssIHNlbGYuX3NlbSwgc2VsZi5fb3BpZCkKIAogICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgotICAgICAgICAoc2VsZi5fbWF4c2l6ZSwgc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIsCisgICAgICAgIChzZWxmLl9pZ25vcmVfZXBpcGUsIHNlbGYuX21heHNpemUsIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyLAogICAgICAgICAgc2VsZi5fcmxvY2ssIHNlbGYuX3dsb2NrLCBzZWxmLl9zZW0sIHNlbGYuX29waWQpID0gc3RhdGUKICAgICAgICAgc2VsZi5fYWZ0ZXJfZm9yaygpCiAKQEAgLTE4Miw3ICsxNTksNyBAQAogICAgICAgICBzZWxmLl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKAogICAgICAgICAgICAgdGFyZ2V0PVF1ZXVlLl9mZWVkLAogICAgICAgICAgICAgYXJncz0oc2VsZi5fYnVmZmVyLCBzZWxmLl9ub3RlbXB0eSwgc2VsZi5fc2VuZCwKLSAgICAgICAgICAgICAgICAgIHNlbGYuX3dsb2NrLCBzZWxmLl93cml0ZXIuY2xvc2UpLAorICAgICAgICAgICAgICAgICAgc2VsZi5fd2xvY2ssIHNlbGYuX3dyaXRlci5jbG9zZSwgc2VsZi5faWdub3JlX2VwaXBlKSwKICAgICAgICAgICAgIG5hbWU9J1F1ZXVlRmVlZGVyVGhyZWFkJwogICAgICAgICAgICAgKQogICAgICAgICBzZWxmLl90aHJlYWQuZGFlbW9uID0gVHJ1ZQpAQCAtMjMzLDcgKzIxMCw3IEBACiAgICAgICAgICAgICBub3RlbXB0eS5yZWxlYXNlKCkKIAogICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX2ZlZWQoYnVmZmVyLCBub3RlbXB0eSwgc2VuZCwgd3JpdGVsb2NrLCBjbG9zZSk6CisgICAgZGVmIF9mZWVkKGJ1ZmZlciwgbm90ZW1wdHksIHNlbmQsIHdyaXRlbG9jaywgY2xvc2UsIGlnbm9yZV9lcGlwZSk6CiAgICAgICAgIGRlYnVnKCdzdGFydGluZyB0aHJlYWQgdG8gZmVlZCBkYXRhIHRvIHBpcGUnKQogICAgICAgICBmcm9tIC51dGlsIGltcG9ydCBpc19leGl0aW5nCiAKQEAgLTI3NSw2ICsyNTIsOCBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIGlmIGlnbm9yZV9lcGlwZSBhbmQgZ2V0YXR0cihlLCAnZXJybm8nLCAwKSA9PSBlcnJuby5FUElQRToKKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICMgU2luY2UgdGhpcyBydW5zIGluIGEgZGFlbW9uIHRocmVhZCB0aGUgcmVzb3VyY2VzIGl0IHVzZXMKICAgICAgICAgICAgICMgbWF5IGJlIGJlY29tZSB1bnVzYWJsZSB3aGlsZSB0aGUgcHJvY2VzcyBpcyBjbGVhbmluZyB1cC4KICAgICAgICAgICAgICMgV2UgaWdub3JlIGVycm9ycyB3aGljaCBoYXBwZW4gYWZ0ZXIgdGhlIHByb2Nlc3MgaGFzCkBAIC0zNTYsNiArMzM1LDcgQEAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyID0gUGlwZShkdXBsZXg9RmFsc2UpCiAgICAgICAgIHNlbGYuX3Jsb2NrID0gTG9jaygpCisgICAgICAgIHNlbGYuX3BvbGwgPSBzZWxmLl9yZWFkZXIucG9sbAogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgIHNlbGYuX3dsb2NrID0gTm9uZQogICAgICAgICBlbHNlOgpAQCAtMzYzLDcgKzM0Myw3IEBACiAgICAgICAgIHNlbGYuX21ha2VfbWV0aG9kcygpCiAKICAgICBkZWYgZW1wdHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBub3Qgc2VsZi5fcmVhZGVyLnBvbGwoKQorICAgICAgICByZXR1cm4gbm90IHNlbGYuX3BvbGwoKQogCiAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICAgYXNzZXJ0X3NwYXduaW5nKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CmluZGV4IDZlNWU1YmMuLjY1NmZhOGYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CkBAIC01LDUzICs1LDI5IEBACiAjIG11bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCi1fX2FsbF9fID0gW10KK19fYWxsX18gPSBbJ3JlZHVjZV9zb2NrZXQnLCAncmVkdWNlX2Nvbm5lY3Rpb24nLCAnc2VuZF9oYW5kbGUnLCAncmVjdl9oYW5kbGUnXQogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBzb2NrZXQKIGltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzaWduYWwKIAotaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MKLWZyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IFBvcGVuLCBkdXBsaWNhdGUsIGNsb3NlLCBGb3JraW5nUGlja2xlcgogZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgcmVnaXN0ZXJfYWZ0ZXJfZm9yaywgZGVidWcsIHN1Yl9kZWJ1ZwotZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgQ2xpZW50LCBMaXN0ZW5lcgorZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgaXNfZXhpdGluZywgc3ViX3dhcm5pbmcKIAogCiAjCiAjCiAjCiAKLWlmIG5vdChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBvciBoYXNhdHRyKF9tdWx0aXByb2Nlc3NpbmcsICdyZWN2ZmQnKSk6CitpZiBub3Qoc3lzLnBsYXRmb3JtID09ICd3aW4zMicgb3IgKGhhc2F0dHIoc29ja2V0LCAnQ01TR19MRU4nKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihzb2NrZXQsICdTQ01fUklHSFRTJykpKToKICAgICByYWlzZSBJbXBvcnRFcnJvcigncGlja2xpbmcgb2YgY29ubmVjdGlvbnMgbm90IHN1cHBvcnRlZCcpCiAKICMKQEAgLTU5LDE1NyArMzUsMjQ2IEBACiAjCiAKIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgIGltcG9ydCBfc3VicHJvY2VzcwotICAgIGZyb20gX211bHRpcHJvY2Vzc2luZyBpbXBvcnQgd2luMzIKKyAgICAjIFdpbmRvd3MKKyAgICBfX2FsbF9fICs9IFsncmVkdWNlX3BpcGVfY29ubmVjdGlvbiddCisgICAgaW1wb3J0IF93aW5hcGkKIAogICAgIGRlZiBzZW5kX2hhbmRsZShjb25uLCBoYW5kbGUsIGRlc3RpbmF0aW9uX3BpZCk6Ci0gICAgICAgIHByb2Nlc3NfaGFuZGxlID0gd2luMzIuT3BlblByb2Nlc3MoCi0gICAgICAgICAgICB3aW4zMi5QUk9DRVNTX0FMTF9BQ0NFU1MsIEZhbHNlLCBkZXN0aW5hdGlvbl9waWQKLSAgICAgICAgICAgICkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbmV3X2hhbmRsZSA9IGR1cGxpY2F0ZShoYW5kbGUsIHByb2Nlc3NfaGFuZGxlKQotICAgICAgICAgICAgY29ubi5zZW5kKG5ld19oYW5kbGUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjbG9zZShwcm9jZXNzX2hhbmRsZSkKKyAgICAgICAgZGggPSBEdXBIYW5kbGUoaGFuZGxlLCBfd2luYXBpLkRVUExJQ0FURV9TQU1FX0FDQ0VTUywgZGVzdGluYXRpb25fcGlkKQorICAgICAgICBjb25uLnNlbmQoZGgpCiAKICAgICBkZWYgcmVjdl9oYW5kbGUoY29ubik6Ci0gICAgICAgIHJldHVybiBjb25uLnJlY3YoKQorICAgICAgICByZXR1cm4gY29ubi5yZWN2KCkuZGV0YWNoKCkKIAotZWxzZToKLSAgICBkZWYgc2VuZF9oYW5kbGUoY29ubiwgaGFuZGxlLCBkZXN0aW5hdGlvbl9waWQpOgotICAgICAgICBfbXVsdGlwcm9jZXNzaW5nLnNlbmRmZChjb25uLmZpbGVubygpLCBoYW5kbGUpCisgICAgY2xhc3MgRHVwSGFuZGxlKG9iamVjdCk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGUsIGFjY2VzcywgcGlkPU5vbmUpOgorICAgICAgICAgICAgIyBkdXBsaWNhdGUgaGFuZGxlIGZvciBwcm9jZXNzIHdpdGggZ2l2ZW4gcGlkCisgICAgICAgICAgICBpZiBwaWQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQorICAgICAgICAgICAgcHJvYyA9IF93aW5hcGkuT3BlblByb2Nlc3MoX3dpbmFwaS5QUk9DRVNTX0RVUF9IQU5ETEUsIEZhbHNlLCBwaWQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gX3dpbmFwaS5EdXBsaWNhdGVIYW5kbGUoCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLCBwcm9jLCBhY2Nlc3MsIEZhbHNlLCAwKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKHByb2MpCisgICAgICAgICAgICBzZWxmLl9hY2Nlc3MgPSBhY2Nlc3MKKyAgICAgICAgICAgIHNlbGYuX3BpZCA9IHBpZAogCi0gICAgZGVmIHJlY3ZfaGFuZGxlKGNvbm4pOgotICAgICAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5yZWN2ZmQoY29ubi5maWxlbm8oKSkKKyAgICAgICAgZGVmIGRldGFjaChzZWxmKToKKyAgICAgICAgICAgICMgcmV0cmlldmUgaGFuZGxlIGZyb20gcHJvY2VzcyB3aGljaCBjdXJyZW50bHkgb3ducyBpdAorICAgICAgICAgICAgaWYgc2VsZi5fcGlkID09IG9zLmdldHBpZCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9oYW5kbGUKKyAgICAgICAgICAgIHByb2MgPSBfd2luYXBpLk9wZW5Qcm9jZXNzKF93aW5hcGkuUFJPQ0VTU19EVVBfSEFORExFLCBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BpZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gX3dpbmFwaS5EdXBsaWNhdGVIYW5kbGUoCisgICAgICAgICAgICAgICAgICAgIHByb2MsIHNlbGYuX2hhbmRsZSwgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9hY2Nlc3MsIEZhbHNlLCBfd2luYXBpLkRVUExJQ0FURV9DTE9TRV9TT1VSQ0UpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUocHJvYykKIAotIwotIyBTdXBwb3J0IGZvciBhIHBlci1wcm9jZXNzIHNlcnZlciB0aHJlYWQgd2hpY2ggY2FjaGVzIHBpY2tsZWQgaGFuZGxlcwotIworICAgIGNsYXNzIER1cFNvY2tldChvYmplY3QpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc29jayk6CisgICAgICAgICAgICBuZXdfc29jayA9IHNvY2suZHVwKCkKKyAgICAgICAgICAgIGRlZiBzZW5kKGNvbm4sIHBpZCk6CisgICAgICAgICAgICAgICAgc2hhcmUgPSBuZXdfc29jay5zaGFyZShwaWQpCisgICAgICAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKHNoYXJlKQorICAgICAgICAgICAgc2VsZi5faWQgPSByZXNvdXJjZV9zaGFyZXIucmVnaXN0ZXIoc2VuZCwgbmV3X3NvY2suY2xvc2UpCiAKLV9jYWNoZSA9IHNldCgpCisgICAgICAgIGRlZiBkZXRhY2goc2VsZik6CisgICAgICAgICAgICBjb25uID0gcmVzb3VyY2Vfc2hhcmVyLmdldF9jb25uZWN0aW9uKHNlbGYuX2lkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNoYXJlID0gY29ubi5yZWN2X2J5dGVzKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc29ja2V0LmZyb21zaGFyZShzaGFyZSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAKLWRlZiBfcmVzZXQob2JqKToKLSAgICBnbG9iYWwgX2xvY2ssIF9saXN0ZW5lciwgX2NhY2hlCi0gICAgZm9yIGggaW4gX2NhY2hlOgotICAgICAgICBjbG9zZShoKQotICAgIF9jYWNoZS5jbGVhcigpCi0gICAgX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCi0gICAgX2xpc3RlbmVyID0gTm9uZQorICAgIGRlZiByZWR1Y2Vfc29ja2V0KHMpOgorICAgICAgICByZXR1cm4gcmVidWlsZF9zb2NrZXQsIChEdXBTb2NrZXQocyksKQogCi1fcmVzZXQoTm9uZSkKLXJlZ2lzdGVyX2FmdGVyX2ZvcmsoX3Jlc2V0LCBfcmVzZXQpCisgICAgZGVmIHJlYnVpbGRfc29ja2V0KGRzKToKKyAgICAgICAgcmV0dXJuIGRzLmRldGFjaCgpCiAKLWRlZiBfZ2V0X2xpc3RlbmVyKCk6Ci0gICAgZ2xvYmFsIF9saXN0ZW5lcgorICAgIGRlZiByZWR1Y2VfY29ubmVjdGlvbihjb25uKToKKyAgICAgICAgaGFuZGxlID0gY29ubi5maWxlbm8oKQorICAgICAgICB3aXRoIHNvY2tldC5mcm9tZmQoaGFuZGxlLCBzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgorICAgICAgICAgICAgZHMgPSBEdXBTb2NrZXQocykKKyAgICAgICAgICAgIHJldHVybiByZWJ1aWxkX2Nvbm5lY3Rpb24sIChkcywgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKIAotICAgIGlmIF9saXN0ZW5lciBpcyBOb25lOgotICAgICAgICBfbG9jay5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgX2xpc3RlbmVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZGVidWcoJ3N0YXJ0aW5nIGxpc3RlbmVyIGFuZCB0aHJlYWQgZm9yIHNlbmRpbmcgaGFuZGxlcycpCi0gICAgICAgICAgICAgICAgX2xpc3RlbmVyID0gTGlzdGVuZXIoYXV0aGtleT1jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5KQotICAgICAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1fc2VydmUpCi0gICAgICAgICAgICAgICAgdC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgdC5zdGFydCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfbG9jay5yZWxlYXNlKCkKLQotICAgIHJldHVybiBfbGlzdGVuZXIKLQotZGVmIF9zZXJ2ZSgpOgotICAgIGZyb20gLnV0aWwgaW1wb3J0IGlzX2V4aXRpbmcsIHN1Yl93YXJuaW5nCi0KLSAgICB3aGlsZSAxOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb25uID0gX2xpc3RlbmVyLmFjY2VwdCgpCi0gICAgICAgICAgICBoYW5kbGVfd2FudGVkLCBkZXN0aW5hdGlvbl9waWQgPSBjb25uLnJlY3YoKQotICAgICAgICAgICAgX2NhY2hlLnJlbW92ZShoYW5kbGVfd2FudGVkKQotICAgICAgICAgICAgc2VuZF9oYW5kbGUoY29ubiwgaGFuZGxlX3dhbnRlZCwgZGVzdGluYXRpb25fcGlkKQotICAgICAgICAgICAgY2xvc2UoaGFuZGxlX3dhbnRlZCkKLSAgICAgICAgICAgIGNvbm4uY2xvc2UoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBpZiBub3QgaXNfZXhpdGluZygpOgotICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKLSAgICAgICAgICAgICAgICBzdWJfd2FybmluZygKLSAgICAgICAgICAgICAgICAgICAgJ3RocmVhZCBmb3Igc2hhcmluZyBoYW5kbGVzIHJhaXNlZCBleGNlcHRpb24gOlxuJyArCi0gICAgICAgICAgICAgICAgICAgICctJyo3OSArICdcbicgKyB0cmFjZWJhY2suZm9ybWF0X2V4YygpICsgJy0nKjc5Ci0gICAgICAgICAgICAgICAgICAgICkKLQotIwotIyBGdW5jdGlvbnMgdG8gYmUgdXNlZCBmb3IgcGlja2xpbmcvdW5waWNrbGluZyBvYmplY3RzIHdpdGggaGFuZGxlcwotIwotCi1kZWYgcmVkdWNlX2hhbmRsZShoYW5kbGUpOgotICAgIGlmIFBvcGVuLnRocmVhZF9pc19zcGF3bmluZygpOgotICAgICAgICByZXR1cm4gKE5vbmUsIFBvcGVuLmR1cGxpY2F0ZV9mb3JfY2hpbGQoaGFuZGxlKSwgVHJ1ZSkKLSAgICBkdXBfaGFuZGxlID0gZHVwbGljYXRlKGhhbmRsZSkKLSAgICBfY2FjaGUuYWRkKGR1cF9oYW5kbGUpCi0gICAgc3ViX2RlYnVnKCdyZWR1Y2luZyBoYW5kbGUgJWQnLCBoYW5kbGUpCi0gICAgcmV0dXJuIChfZ2V0X2xpc3RlbmVyKCkuYWRkcmVzcywgZHVwX2hhbmRsZSwgRmFsc2UpCi0KLWRlZiByZWJ1aWxkX2hhbmRsZShwaWNrbGVkX2RhdGEpOgotICAgIGFkZHJlc3MsIGhhbmRsZSwgaW5oZXJpdGVkID0gcGlja2xlZF9kYXRhCi0gICAgaWYgaW5oZXJpdGVkOgotICAgICAgICByZXR1cm4gaGFuZGxlCi0gICAgc3ViX2RlYnVnKCdyZWJ1aWxkaW5nIGhhbmRsZSAlZCcsIGhhbmRsZSkKLSAgICBjb25uID0gQ2xpZW50KGFkZHJlc3MsIGF1dGhrZXk9Y3VycmVudF9wcm9jZXNzKCkuYXV0aGtleSkKLSAgICBjb25uLnNlbmQoKGhhbmRsZSwgb3MuZ2V0cGlkKCkpKQotICAgIG5ld19oYW5kbGUgPSByZWN2X2hhbmRsZShjb25uKQotICAgIGNvbm4uY2xvc2UoKQotICAgIHJldHVybiBuZXdfaGFuZGxlCi0KLSMKLSMgUmVnaXN0ZXIgYF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbmAgd2l0aCBgRm9ya2luZ1BpY2tsZXJgCi0jCi0KLWRlZiByZWR1Y2VfY29ubmVjdGlvbihjb25uKToKLSAgICByaCA9IHJlZHVjZV9oYW5kbGUoY29ubi5maWxlbm8oKSkKLSAgICByZXR1cm4gcmVidWlsZF9jb25uZWN0aW9uLCAocmgsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCi0KLWRlZiByZWJ1aWxkX2Nvbm5lY3Rpb24ocmVkdWNlZF9oYW5kbGUsIHJlYWRhYmxlLCB3cml0YWJsZSk6Ci0gICAgaGFuZGxlID0gcmVidWlsZF9oYW5kbGUocmVkdWNlZF9oYW5kbGUpCi0gICAgcmV0dXJuIF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbigKLSAgICAgICAgaGFuZGxlLCByZWFkYWJsZT1yZWFkYWJsZSwgd3JpdGFibGU9d3JpdGFibGUKLSAgICAgICAgKQotCi1Gb3JraW5nUGlja2xlci5yZWdpc3RlcihfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24sIHJlZHVjZV9jb25uZWN0aW9uKQotCi0jCi0jIFJlZ2lzdGVyIGBzb2NrZXQuc29ja2V0YCB3aXRoIGBGb3JraW5nUGlja2xlcmAKLSMKLQotZGVmIGZyb21mZChmZCwgZmFtaWx5LCB0eXBlXywgcHJvdG89MCk6Ci0gICAgcyA9IHNvY2tldC5mcm9tZmQoZmQsIGZhbWlseSwgdHlwZV8sIHByb3RvKQotICAgIGlmIHMuX19jbGFzc19fIGlzIG5vdCBzb2NrZXQuc29ja2V0OgotICAgICAgICBzID0gc29ja2V0LnNvY2tldChfc29jaz1zKQotICAgIHJldHVybiBzCi0KLWRlZiByZWR1Y2Vfc29ja2V0KHMpOgotICAgIHJlZHVjZWRfaGFuZGxlID0gcmVkdWNlX2hhbmRsZShzLmZpbGVubygpKQotICAgIHJldHVybiByZWJ1aWxkX3NvY2tldCwgKHJlZHVjZWRfaGFuZGxlLCBzLmZhbWlseSwgcy50eXBlLCBzLnByb3RvKQotCi1kZWYgcmVidWlsZF9zb2NrZXQocmVkdWNlZF9oYW5kbGUsIGZhbWlseSwgdHlwZV8sIHByb3RvKToKLSAgICBmZCA9IHJlYnVpbGRfaGFuZGxlKHJlZHVjZWRfaGFuZGxlKQotICAgIF9zb2NrID0gZnJvbWZkKGZkLCBmYW1pbHksIHR5cGVfLCBwcm90bykKLSAgICBjbG9zZShmZCkKLSAgICByZXR1cm4gX3NvY2sKLQotRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgcmVkdWNlX3NvY2tldCkKLQotIwotIyBSZWdpc3RlciBgX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbmAgd2l0aCBgRm9ya2luZ1BpY2tsZXJgCi0jCi0KLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgIGRlZiByZWJ1aWxkX2Nvbm5lY3Rpb24oZHMsIHJlYWRhYmxlLCB3cml0YWJsZSk6CisgICAgICAgIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IENvbm5lY3Rpb24KKyAgICAgICAgc29jayA9IGRzLmRldGFjaCgpCisgICAgICAgIHJldHVybiBDb25uZWN0aW9uKHNvY2suZGV0YWNoKCksIHJlYWRhYmxlLCB3cml0YWJsZSkKIAogICAgIGRlZiByZWR1Y2VfcGlwZV9jb25uZWN0aW9uKGNvbm4pOgotICAgICAgICByaCA9IHJlZHVjZV9oYW5kbGUoY29ubi5maWxlbm8oKSkKLSAgICAgICAgcmV0dXJuIHJlYnVpbGRfcGlwZV9jb25uZWN0aW9uLCAocmgsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCisgICAgICAgIGFjY2VzcyA9ICgoX3dpbmFwaS5GSUxFX0dFTkVSSUNfUkVBRCBpZiBjb25uLnJlYWRhYmxlIGVsc2UgMCkgfAorICAgICAgICAgICAgICAgICAgKF93aW5hcGkuRklMRV9HRU5FUklDX1dSSVRFIGlmIGNvbm4ud3JpdGFibGUgZWxzZSAwKSkKKyAgICAgICAgZGggPSBEdXBIYW5kbGUoY29ubi5maWxlbm8oKSwgYWNjZXNzKQorICAgICAgICByZXR1cm4gcmVidWlsZF9waXBlX2Nvbm5lY3Rpb24sIChkaCwgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKIAotICAgIGRlZiByZWJ1aWxkX3BpcGVfY29ubmVjdGlvbihyZWR1Y2VkX2hhbmRsZSwgcmVhZGFibGUsIHdyaXRhYmxlKToKLSAgICAgICAgaGFuZGxlID0gcmVidWlsZF9oYW5kbGUocmVkdWNlZF9oYW5kbGUpCi0gICAgICAgIHJldHVybiBfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uKAotICAgICAgICAgICAgaGFuZGxlLCByZWFkYWJsZT1yZWFkYWJsZSwgd3JpdGFibGU9d3JpdGFibGUKLSAgICAgICAgICAgICkKKyAgICBkZWYgcmVidWlsZF9waXBlX2Nvbm5lY3Rpb24oZGgsIHJlYWRhYmxlLCB3cml0YWJsZSk6CisgICAgICAgIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IFBpcGVDb25uZWN0aW9uCisgICAgICAgIGhhbmRsZSA9IGRoLmRldGFjaCgpCisgICAgICAgIHJldHVybiBQaXBlQ29ubmVjdGlvbihoYW5kbGUsIHJlYWRhYmxlLCB3cml0YWJsZSkKIAotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24sIHJlZHVjZV9waXBlX2Nvbm5lY3Rpb24pCitlbHNlOgorICAgICMgVW5peAorCisgICAgIyBPbiBNYWNPU1ggd2Ugc2hvdWxkIGFja25vd2xlZGdlIHJlY2VpcHQgb2YgZmRzIC0tIHNlZSBJc3N1ZTE0NjY5CisgICAgQUNLTk9XTEVER0UgPSBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicKKworICAgIGRlZiBzZW5kX2hhbmRsZShjb25uLCBoYW5kbGUsIGRlc3RpbmF0aW9uX3BpZCk6CisgICAgICAgIHdpdGggc29ja2V0LmZyb21mZChjb25uLmZpbGVubygpLCBzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgorICAgICAgICAgICAgcy5zZW5kbXNnKFtiJ3gnXSwgWyhzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrKCJAaSIsIGhhbmRsZSkpXSkKKyAgICAgICAgaWYgQUNLTk9XTEVER0UgYW5kIGNvbm4ucmVjdl9ieXRlcygpICE9IGInQUNLJzoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignZGlkIG5vdCByZWNlaXZlIGFja25vd2xlZGdlbWVudCBvZiBmZCcpCisKKyAgICBkZWYgcmVjdl9oYW5kbGUoY29ubik6CisgICAgICAgIHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoIkBpIikKKyAgICAgICAgd2l0aCBzb2NrZXQuZnJvbWZkKGNvbm4uZmlsZW5vKCksIHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHM6CisgICAgICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gcy5yZWN2bXNnKDEsIHNvY2tldC5DTVNHX0xFTihzaXplKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBBQ0tOT1dMRURHRToKKyAgICAgICAgICAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKGInQUNLJykKKyAgICAgICAgICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGFbMF0KKyAgICAgICAgICAgICAgICBpZiAoY21zZ19sZXZlbCA9PSBzb2NrZXQuU09MX1NPQ0tFVCBhbmQKKyAgICAgICAgICAgICAgICAgICAgY21zZ190eXBlID09IHNvY2tldC5TQ01fUklHSFRTKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soIkBpIiwgY21zZ19kYXRhWzpzaXplXSlbMF0KKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW5kZXhFcnJvciwgc3RydWN0LmVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ludmFsaWQgZGF0YSByZWNlaXZlZCcpCisKKyAgICBjbGFzcyBEdXBGZChvYmplY3QpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmQpOgorICAgICAgICAgICAgbmV3X2ZkID0gb3MuZHVwKGZkKQorICAgICAgICAgICAgZGVmIHNlbmQoY29ubiwgcGlkKToKKyAgICAgICAgICAgICAgICBzZW5kX2hhbmRsZShjb25uLCBuZXdfZmQsIHBpZCkKKyAgICAgICAgICAgIGRlZiBjbG9zZSgpOgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKG5ld19mZCkKKyAgICAgICAgICAgIHNlbGYuX2lkID0gcmVzb3VyY2Vfc2hhcmVyLnJlZ2lzdGVyKHNlbmQsIGNsb3NlKQorCisgICAgICAgIGRlZiBkZXRhY2goc2VsZik6CisgICAgICAgICAgICBjb25uID0gcmVzb3VyY2Vfc2hhcmVyLmdldF9jb25uZWN0aW9uKHNlbGYuX2lkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiByZWN2X2hhbmRsZShjb25uKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKKworICAgIGRlZiByZWR1Y2Vfc29ja2V0KHMpOgorICAgICAgICBkZiA9IER1cEZkKHMuZmlsZW5vKCkpCisgICAgICAgIHJldHVybiByZWJ1aWxkX3NvY2tldCwgKGRmLCBzLmZhbWlseSwgcy50eXBlLCBzLnByb3RvKQorCisgICAgZGVmIHJlYnVpbGRfc29ja2V0KGRmLCBmYW1pbHksIHR5cGUsIHByb3RvKToKKyAgICAgICAgZmQgPSBkZi5kZXRhY2goKQorICAgICAgICBzID0gc29ja2V0LmZyb21mZChmZCwgZmFtaWx5LCB0eXBlLCBwcm90bykKKyAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgIHJldHVybiBzCisKKyAgICBkZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6CisgICAgICAgIGRmID0gRHVwRmQoY29ubi5maWxlbm8oKSkKKyAgICAgICAgcmV0dXJuIHJlYnVpbGRfY29ubmVjdGlvbiwgKGRmLCBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQorCisgICAgZGVmIHJlYnVpbGRfY29ubmVjdGlvbihkZiwgcmVhZGFibGUsIHdyaXRhYmxlKToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgQ29ubmVjdGlvbgorICAgICAgICBmZCA9IGRmLmRldGFjaCgpCisgICAgICAgIHJldHVybiBDb25uZWN0aW9uKGZkLCByZWFkYWJsZSwgd3JpdGFibGUpCisKKyMKKyMgU2VydmVyIHdoaWNoIHNoYXJlcyByZWdpc3RlcmVkIHJlc291cmNlcyB3aXRoIGNsaWVudHMKKyMKKworY2xhc3MgUmVzb3VyY2VTaGFyZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2tleSA9IDAKKyAgICAgICAgc2VsZi5fY2FjaGUgPSB7fQorICAgICAgICBzZWxmLl9vbGRfbG9ja3MgPSBbXQorICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKKyAgICAgICAgc2VsZi5fYWRkcmVzcyA9IE5vbmUKKyAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICByZWdpc3Rlcl9hZnRlcl9mb3JrKHNlbGYsIFJlc291cmNlU2hhcmVyLl9hZnRlcmZvcmspCisKKyAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgc2VuZCwgY2xvc2UpOgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBpZiBzZWxmLl9hZGRyZXNzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fc3RhcnQoKQorICAgICAgICAgICAgc2VsZi5fa2V5ICs9IDEKKyAgICAgICAgICAgIHNlbGYuX2NhY2hlW3NlbGYuX2tleV0gPSAoc2VuZCwgY2xvc2UpCisgICAgICAgICAgICByZXR1cm4gKHNlbGYuX2FkZHJlc3MsIHNlbGYuX2tleSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X2Nvbm5lY3Rpb24oaWRlbnQpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBDbGllbnQKKyAgICAgICAgYWRkcmVzcywga2V5ID0gaWRlbnQKKyAgICAgICAgYyA9IENsaWVudChhZGRyZXNzLCBhdXRoa2V5PWN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCisgICAgICAgIGMuc2VuZCgoa2V5LCBvcy5nZXRwaWQoKSkpCisgICAgICAgIHJldHVybiBjCisKKyAgICBkZWYgc3RvcChzZWxmLCB0aW1lb3V0PU5vbmUpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBDbGllbnQKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fYWRkcmVzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBjID0gQ2xpZW50KHNlbGYuX2FkZHJlc3MsIGF1dGhrZXk9Y3VycmVudF9wcm9jZXNzKCkuYXV0aGtleSkKKyAgICAgICAgICAgICAgICBjLnNlbmQoTm9uZSkKKyAgICAgICAgICAgICAgICBjLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzZWxmLl90aHJlYWQuam9pbih0aW1lb3V0KQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3RocmVhZC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBzdWJfd2FybignUmVzb3VyY2VTaGFyZXIgdGhyZWFkIGRpZCBub3Qgc3RvcCB3aGVuIGFza2VkJykKKyAgICAgICAgICAgICAgICBzZWxmLl9saXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2FkZHJlc3MgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBOb25lCisgICAgICAgICAgICAgICAgZm9yIGtleSwgKHNlbmQsIGNsb3NlKSBpbiBzZWxmLl9jYWNoZS5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBjbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGUuY2xlYXIoKQorCisgICAgZGVmIF9hZnRlcmZvcmsoc2VsZik6CisgICAgICAgIGZvciBrZXksIChzZW5kLCBjbG9zZSkgaW4gc2VsZi5fY2FjaGUuaXRlbXMoKToKKyAgICAgICAgICAgIGNsb3NlKCkKKyAgICAgICAgc2VsZi5fY2FjaGUuY2xlYXIoKQorICAgICAgICAjIElmIHNlbGYuX2xvY2sgd2FzIGxvY2tlZCBhdCB0aGUgdGltZSBvZiB0aGUgZm9yaywgaXQgbWF5IGJlIGJyb2tlbgorICAgICAgICAjIC0tIHNlZSBpc3N1ZSA2NzIxLiAgUmVwbGFjZSBpdCB3aXRob3V0IGxldHRpbmcgaXQgYmUgZ2MnZWQuCisgICAgICAgIHNlbGYuX29sZF9sb2Nrcy5hcHBlbmQoc2VsZi5fbG9jaykKKyAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lci5jbG9zZSgpCisgICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTm9uZQorICAgICAgICBzZWxmLl9hZGRyZXNzID0gTm9uZQorICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisKKyAgICBkZWYgX3N0YXJ0KHNlbGYpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBMaXN0ZW5lcgorICAgICAgICBhc3NlcnQgc2VsZi5fbGlzdGVuZXIgaXMgTm9uZQorICAgICAgICBkZWJ1Zygnc3RhcnRpbmcgbGlzdGVuZXIgYW5kIHRocmVhZCBmb3Igc2VuZGluZyBoYW5kbGVzJykKKyAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBMaXN0ZW5lcihhdXRoa2V5PWN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCisgICAgICAgIHNlbGYuX2FkZHJlc3MgPSBzZWxmLl9saXN0ZW5lci5hZGRyZXNzCisgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9zZXJ2ZSkKKyAgICAgICAgdC5kYWVtb24gPSBUcnVlCisgICAgICAgIHQuc3RhcnQoKQorICAgICAgICBzZWxmLl90aHJlYWQgPSB0CisKKyAgICBkZWYgX3NlcnZlKHNlbGYpOgorICAgICAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpOgorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCByYW5nZSgxLCBzaWduYWwuTlNJRykpCisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY29ubiA9IHNlbGYuX2xpc3RlbmVyLmFjY2VwdCgpCisgICAgICAgICAgICAgICAgbXNnID0gY29ubi5yZWN2KCkKKyAgICAgICAgICAgICAgICBpZiBtc2cgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBrZXksIGRlc3RpbmF0aW9uX3BpZCA9IG1zZworICAgICAgICAgICAgICAgIHNlbmQsIGNsb3NlID0gc2VsZi5fY2FjaGUucG9wKGtleSkKKyAgICAgICAgICAgICAgICBzZW5kKGNvbm4sIGRlc3RpbmF0aW9uX3BpZCkKKyAgICAgICAgICAgICAgICBjbG9zZSgpCisgICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzX2V4aXRpbmcoKToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjaworICAgICAgICAgICAgICAgICAgICBzdWJfd2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aHJlYWQgZm9yIHNoYXJpbmcgaGFuZGxlcyByYWlzZWQgZXhjZXB0aW9uIDpcbicgKworICAgICAgICAgICAgICAgICAgICAgICAgJy0nKjc5ICsgJ1xuJyArIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkgKyAnLScqNzkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworcmVzb3VyY2Vfc2hhcmVyID0gUmVzb3VyY2VTaGFyZXIoKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQppbmRleCAxZTY5NGRhLi5hMzU4ZWQ0IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQpAQCAtNCwzNSArNCw5IEBACiAjIG11bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCi1pbXBvcnQgc3lzCiBpbXBvcnQgY3R5cGVzCiBpbXBvcnQgd2Vha3JlZgogCkBAIC04OSw3ICs2Myw3IEBACiAgICAgICAgIHJlc3VsdC5fX2luaXRfXygqc2l6ZV9vcl9pbml0aWFsaXplcikKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi1kZWYgVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9Tm9uZSk6CitkZWYgVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9VHJ1ZSk6CiAgICAgJycnCiAgICAgUmV0dXJuIGEgc3luY2hyb25pemF0aW9uIHdyYXBwZXIgZm9yIGEgVmFsdWUKICAgICAnJycKQEAgLTEwMiwxMyArNzYsMTAgQEAKICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiclcicgaGFzIG5vIG1ldGhvZCAnYWNxdWlyZSciICUgbG9jaykKICAgICByZXR1cm4gc3luY2hyb25pemVkKG9iaiwgbG9jaykKIAotZGVmIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICoqa3dkcyk6CitkZWYgQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiwgbG9jaz1UcnVlKToKICAgICAnJycKICAgICBSZXR1cm4gYSBzeW5jaHJvbml6YXRpb24gd3JhcHBlciBmb3IgYSBSYXdBcnJheQogICAgICcnJwotICAgIGxvY2sgPSBrd2RzLnBvcCgnbG9jaycsIE5vbmUpCi0gICAgaWYga3dkczoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndW5yZWNvZ25pemVkIGtleXdvcmQgYXJndW1lbnQocyk6ICVzJyAlIGxpc3Qoa3dkcy5rZXlzKCkpKQogICAgIG9iaiA9IFJhd0FycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIpCiAgICAgaWYgbG9jayBpcyBGYWxzZToKICAgICAgICAgcmV0dXJuIG9iagpAQCAtMTU4LDcgKzEyOSw4IEBACiAgICAgaWYgbGVuZ3RoIGlzIG5vdCBOb25lOgogICAgICAgICB0eXBlXyA9IHR5cGVfICogbGVuZ3RoCiAgICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIodHlwZV8sIHJlZHVjZV9jdHlwZSkKLSAgICBvYmogPSB0eXBlXy5mcm9tX2FkZHJlc3Mod3JhcHBlci5nZXRfYWRkcmVzcygpKQorICAgIGJ1ZiA9IHdyYXBwZXIuY3JlYXRlX21lbW9yeXZpZXcoKQorICAgIG9iaiA9IHR5cGVfLmZyb21fYnVmZmVyKGJ1ZikKICAgICBvYmouX3dyYXBwZXIgPSB3cmFwcGVyCiAgICAgcmV0dXJuIG9iagogCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQppbmRleCA3MGFlODI1Li4yMmVhYmU1IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKQEAgLTQsMzIgKzQsNyBAQAogIyBtdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX2FsbF9fID0gWwpAQCAtMzcsMTUgKzEyLDEzIEBACiAgICAgXQogCiBpbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIAotZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lLCBzbGVlcCBhcyBfc2xlZXAKLQogaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MgaW1wb3J0IGN1cnJlbnRfcHJvY2VzcwotZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgRmluYWxpemUsIHJlZ2lzdGVyX2FmdGVyX2ZvcmssIGRlYnVnCitmcm9tIG11bHRpcHJvY2Vzc2luZy51dGlsIGltcG9ydCByZWdpc3Rlcl9hZnRlcl9mb3JrLCBkZWJ1ZwogZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgYXNzZXJ0X3NwYXduaW5nLCBQb3BlbgorZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKICMgVHJ5IHRvIGltcG9ydCB0aGUgbXAuc3luY2hyb25pemUgbW9kdWxlIGNsZWFubHksIGlmIGl0IGZhaWxzCiAjIHJhaXNlIEltcG9ydEVycm9yIGZvciBwbGF0Zm9ybXMgbGFja2luZyBhIHdvcmtpbmcgc2VtX29wZW4gaW1wbGVtZW50YXRpb24uCkBAIC0yNDMsNyArMjE2LDcgQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIHdhaXQgZm9yIG5vdGlmaWNhdGlvbiBvciB0aW1lb3V0Ci0gICAgICAgICAgICByZXQgPSBzZWxmLl93YWl0X3NlbWFwaG9yZS5hY3F1aXJlKFRydWUsIHRpbWVvdXQpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fd2FpdF9zZW1hcGhvcmUuYWNxdWlyZShUcnVlLCB0aW1lb3V0KQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgIyBpbmRpY2F0ZSB0aGF0IHRoaXMgdGhyZWFkIGhhcyB3b2tlbgogICAgICAgICAgICAgc2VsZi5fd29rZW5fY291bnQucmVsZWFzZSgpCkBAIC0yNTEsNyArMjI0LDYgQEAKICAgICAgICAgICAgICMgcmVhY3F1aXJlIGxvY2sKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGNvdW50KToKICAgICAgICAgICAgICAgICBzZWxmLl9sb2NrLmFjcXVpcmUoKQotICAgICAgICAgICAgcmV0dXJuIHJldAogCiAgICAgZGVmIG5vdGlmeShzZWxmKToKICAgICAgICAgYXNzZXJ0IHNlbGYuX2xvY2suX3NlbWxvY2suX2lzX21pbmUoKSwgJ2xvY2sgaXMgbm90IG93bmVkJwpAQCAtMjkzLDYgKzI2NSwyNCBAQAogICAgICAgICAgICAgd2hpbGUgc2VsZi5fd2FpdF9zZW1hcGhvcmUuYWNxdWlyZShGYWxzZSk6CiAgICAgICAgICAgICAgICAgcGFzcwogCisgICAgZGVmIHdhaXRfZm9yKHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlbmR0aW1lID0gTm9uZQorICAgICAgICAgICAgd2FpdHRpbWUgPSBOb25lCisgICAgICAgIHdoaWxlIG5vdCByZXN1bHQ6CisgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdhaXR0aW1lID0gZW5kdGltZSAtIF90aW1lKCkKKyAgICAgICAgICAgICAgICBpZiB3YWl0dGltZSA8PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2VsZi53YWl0KHdhaXR0aW1lKQorICAgICAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCiAjCiAjIEV2ZW50CiAjCkBAIC0zNDMsMyArMzMzLDQzIEBACiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisKKyMKKyMgQmFycmllcgorIworCitjbGFzcyBCYXJyaWVyKHRocmVhZGluZy5CYXJyaWVyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJ0aWVzLCBhY3Rpb249Tm9uZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgaW1wb3J0IHN0cnVjdAorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5oZWFwIGltcG9ydCBCdWZmZXJXcmFwcGVyCisgICAgICAgIHdyYXBwZXIgPSBCdWZmZXJXcmFwcGVyKHN0cnVjdC5jYWxjc2l6ZSgnaScpICogMikKKyAgICAgICAgY29uZCA9IENvbmRpdGlvbigpCisgICAgICAgIHNlbGYuX19zZXRzdGF0ZV9fKChwYXJ0aWVzLCBhY3Rpb24sIHRpbWVvdXQsIGNvbmQsIHdyYXBwZXIpKQorICAgICAgICBzZWxmLl9zdGF0ZSA9IDAKKyAgICAgICAgc2VsZi5fY291bnQgPSAwCisKKyAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKKyAgICAgICAgKHNlbGYuX3BhcnRpZXMsIHNlbGYuX2FjdGlvbiwgc2VsZi5fdGltZW91dCwKKyAgICAgICAgIHNlbGYuX2NvbmQsIHNlbGYuX3dyYXBwZXIpID0gc3RhdGUKKyAgICAgICAgc2VsZi5fYXJyYXkgPSBzZWxmLl93cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkuY2FzdCgnaScpCisKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYuX3BhcnRpZXMsIHNlbGYuX2FjdGlvbiwgc2VsZi5fdGltZW91dCwKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25kLCBzZWxmLl93cmFwcGVyKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9zdGF0ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FycmF5WzBdCisKKyAgICBAX3N0YXRlLnNldHRlcgorICAgIGRlZiBfc3RhdGUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9hcnJheVswXSA9IHZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgX2NvdW50KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYXJyYXlbMV0KKworICAgIEBfY291bnQuc2V0dGVyCisgICAgZGVmIF9jb3VudChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2FycmF5WzFdID0gdmFsdWUKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weQppbmRleCAzMGI3YTg1Li44YTZhZWRlIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5CkBAIC00LDM5ICs0LDE4IEBACiAjIG11bHRpcHJvY2Vzc2luZy91dGlsLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAoraW1wb3J0IHN5cworaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IG9zCiBpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgd2Vha3JlZgogaW1wb3J0IGF0ZXhpdAogaW1wb3J0IHRocmVhZGluZyAgICAgICAgIyB3ZSB3YW50IHRocmVhZGluZyB0byBpbnN0YWxsIGl0J3MKICAgICAgICAgICAgICAgICAgICAgICAgICMgY2xlYW51cCBmdW5jdGlvbiBiZWZvcmUgbXVsdGlwcm9jZXNzaW5nIGRvZXMKK2Zyb20gc3VicHJvY2VzcyBpbXBvcnQgX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncwogCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MsIGFjdGl2ZV9jaGlsZHJlbgogCkBAIC04NCw3ICs2Myw3IEBACiAgICAgUmV0dXJucyBsb2dnZXIgdXNlZCBieSBtdWx0aXByb2Nlc3NpbmcKICAgICAnJycKICAgICBnbG9iYWwgX2xvZ2dlcgotICAgIGltcG9ydCBsb2dnaW5nLCBhdGV4aXQKKyAgICBpbXBvcnQgbG9nZ2luZwogCiAgICAgbG9nZ2luZy5fYWNxdWlyZUxvY2soKQogICAgIHRyeToKQEAgLTE4MywxMCArMTYyLDE1IEBACiAgICAgICAgIHNlbGYuX2FyZ3MgPSBhcmdzCiAgICAgICAgIHNlbGYuX2t3YXJncyA9IGt3YXJncyBvciB7fQogICAgICAgICBzZWxmLl9rZXkgPSAoZXhpdHByaW9yaXR5LCBuZXh0KF9maW5hbGl6ZXJfY291bnRlcikpCisgICAgICAgIHNlbGYuX3BpZCA9IG9zLmdldHBpZCgpCiAKICAgICAgICAgX2ZpbmFsaXplcl9yZWdpc3RyeVtzZWxmLl9rZXldID0gc2VsZgogCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHdyPU5vbmUpOgorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB3cj1Ob25lLAorICAgICAgICAgICAgICAgICAjIE5lZWQgdG8gYmluZCB0aGVzZSBsb2NhbGx5IGJlY2F1c2UgdGhlIGdsb2JhbHMgY2FuIGhhdmUKKyAgICAgICAgICAgICAgICAgIyBiZWVuIGNsZWFyZWQgYXQgc2h1dGRvd24KKyAgICAgICAgICAgICAgICAgX2ZpbmFsaXplcl9yZWdpc3RyeT1fZmluYWxpemVyX3JlZ2lzdHJ5LAorICAgICAgICAgICAgICAgICBzdWJfZGVidWc9c3ViX2RlYnVnLCBnZXRwaWQ9b3MuZ2V0cGlkKToKICAgICAgICAgJycnCiAgICAgICAgIFJ1biB0aGUgY2FsbGJhY2sgdW5sZXNzIGl0IGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIG9yIGNhbmNlbGxlZAogICAgICAgICAnJycKQEAgLTE5NSw5ICsxNzksMTMgQEAKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgc3ViX2RlYnVnKCdmaW5hbGl6ZXIgbm8gbG9uZ2VyIHJlZ2lzdGVyZWQnKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3ViX2RlYnVnKCdmaW5hbGl6ZXIgY2FsbGluZyAlcyB3aXRoIGFyZ3MgJXMgYW5kIGt3YXJncyAlcycsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjaywgc2VsZi5fYXJncywgc2VsZi5fa3dhcmdzKQotICAgICAgICAgICAgcmVzID0gc2VsZi5fY2FsbGJhY2soKnNlbGYuX2FyZ3MsICoqc2VsZi5fa3dhcmdzKQorICAgICAgICAgICAgaWYgc2VsZi5fcGlkICE9IGdldHBpZCgpOgorICAgICAgICAgICAgICAgIHN1Yl9kZWJ1ZygnZmluYWxpemVyIGlnbm9yZWQgYmVjYXVzZSBkaWZmZXJlbnQgcHJvY2VzcycpCisgICAgICAgICAgICAgICAgcmVzID0gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdWJfZGVidWcoJ2ZpbmFsaXplciBjYWxsaW5nICVzIHdpdGggYXJncyAlcyBhbmQga3dhcmdzICVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2ssIHNlbGYuX2FyZ3MsIHNlbGYuX2t3YXJncykKKyAgICAgICAgICAgICAgICByZXMgPSBzZWxmLl9jYWxsYmFjaygqc2VsZi5fYXJncywgKipzZWxmLl9rd2FyZ3MpCiAgICAgICAgICAgICBzZWxmLl93ZWFrcmVmID0gc2VsZi5fY2FsbGJhY2sgPSBzZWxmLl9hcmdzID0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2t3YXJncyA9IHNlbGYuX2tleSA9IE5vbmUKICAgICAgICAgICAgIHJldHVybiByZXMKQEAgLTI4MSwyMSArMjY5LDI0IEBACiBkZWYgX2V4aXRfZnVuY3Rpb24oKToKICAgICBnbG9iYWwgX2V4aXRpbmcKIAotICAgIGluZm8oJ3Byb2Nlc3Mgc2h1dHRpbmcgZG93bicpCi0gICAgZGVidWcoJ3J1bm5pbmcgYWxsICJhdGV4aXQiIGZpbmFsaXplcnMgd2l0aCBwcmlvcml0eSA+PSAwJykKLSAgICBfcnVuX2ZpbmFsaXplcnMoMCkKKyAgICBpZiBub3QgX2V4aXRpbmc6CisgICAgICAgIF9leGl0aW5nID0gVHJ1ZQogCi0gICAgZm9yIHAgaW4gYWN0aXZlX2NoaWxkcmVuKCk6Ci0gICAgICAgIGlmIHAuX2RhZW1vbmljOgotICAgICAgICAgICAgaW5mbygnY2FsbGluZyB0ZXJtaW5hdGUoKSBmb3IgZGFlbW9uICVzJywgcC5uYW1lKQotICAgICAgICAgICAgcC5fcG9wZW4udGVybWluYXRlKCkKKyAgICAgICAgaW5mbygncHJvY2VzcyBzaHV0dGluZyBkb3duJykKKyAgICAgICAgZGVidWcoJ3J1bm5pbmcgYWxsICJhdGV4aXQiIGZpbmFsaXplcnMgd2l0aCBwcmlvcml0eSA+PSAwJykKKyAgICAgICAgX3J1bl9maW5hbGl6ZXJzKDApCiAKLSAgICBmb3IgcCBpbiBhY3RpdmVfY2hpbGRyZW4oKToKLSAgICAgICAgaW5mbygnY2FsbGluZyBqb2luKCkgZm9yIHByb2Nlc3MgJXMnLCBwLm5hbWUpCi0gICAgICAgIHAuam9pbigpCisgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgorICAgICAgICAgICAgaWYgcC5fZGFlbW9uaWM6CisgICAgICAgICAgICAgICAgaW5mbygnY2FsbGluZyB0ZXJtaW5hdGUoKSBmb3IgZGFlbW9uICVzJywgcC5uYW1lKQorICAgICAgICAgICAgICAgIHAuX3BvcGVuLnRlcm1pbmF0ZSgpCiAKLSAgICBkZWJ1ZygncnVubmluZyB0aGUgcmVtYWluaW5nICJhdGV4aXQiIGZpbmFsaXplcnMnKQotICAgIF9ydW5fZmluYWxpemVycygpCisgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgorICAgICAgICAgICAgaW5mbygnY2FsbGluZyBqb2luKCkgZm9yIHByb2Nlc3MgJXMnLCBwLm5hbWUpCisgICAgICAgICAgICBwLmpvaW4oKQorCisgICAgICAgIGRlYnVnKCdydW5uaW5nIHRoZSByZW1haW5pbmcgImF0ZXhpdCIgZmluYWxpemVycycpCisgICAgICAgIF9ydW5fZmluYWxpemVycygpCiAKIGF0ZXhpdC5yZWdpc3RlcihfZXhpdF9mdW5jdGlvbikKIApkaWZmIC0tZ2l0IGEvTGliL25udHBsaWIucHkgYi9MaWIvbm50cGxpYi5weQppbmRleCAzMmJmZmQ4Li4yZGU2ZWJkIDEwMDY0NAotLS0gYS9MaWIvbm50cGxpYi5weQorKysgYi9MaWIvbm50cGxpYi5weQpAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQodi5kZWNvZGUoZW5jIG9yICdhc2NpaScpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGFydHMuYXBwZW5kKHYpCi0gICAgcmV0dXJuICcgJy5qb2luKHBhcnRzKQorICAgIHJldHVybiAnJy5qb2luKHBhcnRzKQogCiBkZWYgX3BhcnNlX292ZXJ2aWV3X2ZtdChsaW5lcyk6CiAgICAgIiIiUGFyc2UgYSBsaXN0IG9mIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHJlc3BvbnNlIHRvIExJU1QgT1ZFUlZJRVcuRk1UCkBAIC0zNTEsNiArMzUxLDIwIEBACiAgICAgICAgICMgTG9nIGluIGFuZCBlbmNyeXB0aW9uIHNldHVwIG9yZGVyIGlzIGxlZnQgdG8gc3ViY2xhc3Nlcy4KICAgICAgICAgc2VsZi5hdXRoZW50aWNhdGVkID0gRmFsc2UKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBpc19jb25uZWN0ZWQgPSBsYW1iZGE6IGhhc2F0dHIoc2VsZiwgImZpbGUiKQorICAgICAgICBpZiBpc19jb25uZWN0ZWQoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnF1aXQoKQorICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQuZXJyb3IsIEVPRkVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIGlzX2Nvbm5lY3RlZCgpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZSgpCisKICAgICBkZWYgZ2V0d2VsY29tZShzZWxmKToKICAgICAgICAgIiIiR2V0IHRoZSB3ZWxjb21lIG1lc3NhZ2UgZnJvbSB0aGUgc2VydmVyCiAgICAgICAgICh0aGlzIGlzIHJlYWQgYW5kIHNxdWlycmVsZWQgYXdheSBieSBfX2luaXRfXygpKS4KQEAgLTgxOSw3ICs4MzMsNyBAQAogICAgICAgICAtIGxpc3Q6IGxpc3Qgb2YgKG5hbWUsdGl0bGUpIHN0cmluZ3MiIiIKICAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIFhHVElUTEUgZXh0ZW5zaW9uIGlzIG5vdCBhY3RpdmVseSB1c2VkLCAiCiAgICAgICAgICAgICAgICAgICAgICAgInVzZSBkZXNjcmlwdGlvbnMoKSBpbnN0ZWFkIiwKLSAgICAgICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgbGluZV9wYXQgPSByZS5jb21waWxlKCdeKFteIFx0XSspWyBcdF0rKC4qKSQnKQogICAgICAgICByZXNwLCByYXdfbGluZXMgPSBzZWxmLl9sb25nY21kc3RyaW5nKCdYR1RJVExFICcgKyBncm91cCwgZmlsZSkKICAgICAgICAgbGluZXMgPSBbXQpAQCAtODM3LDcgKzg1MSw3IEBACiAgICAgICAgIHBhdGg6IGRpcmVjdG9yeSBwYXRoIHRvIGFydGljbGUKICAgICAgICAgIiIiCiAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBYUEFUSCBleHRlbnNpb24gaXMgbm90IGFjdGl2ZWx5IHVzZWQiLAotICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogCiAgICAgICAgIHJlc3AgPSBzZWxmLl9zaG9ydGNtZCgnWFBBVEggezB9Jy5mb3JtYXQoaWQpKQogICAgICAgICBpZiBub3QgcmVzcC5zdGFydHN3aXRoKCcyMjMnKToKZGlmZiAtLWdpdCBhL0xpYi9udW1iZXJzLnB5IGIvTGliL251bWJlcnMucHkKaW5kZXggZWNmYWQ3Yy4uYjIwNjQ1NyAxMDA2NDQKLS0tIGEvTGliL251bWJlcnMucHkKKysrIGIvTGliL251bWJlcnMucHkKQEAgLTUsNyArNSw3IEBACiAKIFRPRE86IEZpbGwgb3V0IG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBvbiB0aGUgb3BlcmF0b3JzLiIiIgogCi1mcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QsIGFic3RyYWN0cHJvcGVydHkKK2Zyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogCiBfX2FsbF9fID0gWyJOdW1iZXIiLCAiQ29tcGxleCIsICJSZWFsIiwgIlJhdGlvbmFsIiwgIkludGVncmFsIl0KIApAQCAtNTAsNyArNTAsOCBAQAogICAgICAgICAiIiJUcnVlIGlmIHNlbGYgIT0gMC4gQ2FsbGVkIGZvciBib29sKHNlbGYpLiIiIgogICAgICAgICByZXR1cm4gc2VsZiAhPSAwCiAKLSAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIEBwcm9wZXJ0eQorICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiByZWFsKHNlbGYpOgogICAgICAgICAiIiJSZXRyaWV2ZSB0aGUgcmVhbCBjb21wb25lbnQgb2YgdGhpcyBudW1iZXIuCiAKQEAgLTU4LDcgKzU5LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgQHByb3BlcnR5CisgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGltYWcoc2VsZik6CiAgICAgICAgICIiIlJldHJpZXZlIHRoZSBpbWFnaW5hcnkgY29tcG9uZW50IG9mIHRoaXMgbnVtYmVyLgogCkBAIC0yNzIsMTEgKzI3NCwxMyBAQAogCiAgICAgX19zbG90c19fID0gKCkKIAotICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgQHByb3BlcnR5CisgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIG51bWVyYXRvcihzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBAcHJvcGVydHkKKyAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgZGVub21pbmF0b3Ioc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIApkaWZmIC0tZ2l0IGEvTGliL29wY29kZS5weSBiL0xpYi9vcGNvZGUucHkKaW5kZXggOGUxNWQxMy4uYTYzOWZlMyAxMDA2NDQKLS0tIGEvTGliL29wY29kZS5weQorKysgYi9MaWIvb3Bjb2RlLnB5CkBAIC02LDcgKzYsNyBAQAogCiBfX2FsbF9fID0gWyJjbXBfb3AiLCAiaGFzY29uc3QiLCAiaGFzbmFtZSIsICJoYXNqcmVsIiwgImhhc2phYnMiLAogICAgICAgICAgICAiaGFzbG9jYWwiLCAiaGFzY29tcGFyZSIsICJoYXNmcmVlIiwgIm9wbmFtZSIsICJvcG1hcCIsCi0gICAgICAgICAgICJIQVZFX0FSR1VNRU5UIiwgIkVYVEVOREVEX0FSRyJdCisgICAgICAgICAgICJIQVZFX0FSR1VNRU5UIiwgIkVYVEVOREVEX0FSRyIsICJoYXNuYXJncyJdCiAKIGNtcF9vcCA9ICgnPCcsICc8PScsICc9PScsICchPScsICc+JywgJz49JywgJ2luJywgJ25vdCBpbicsICdpcycsCiAgICAgICAgICdpcyBub3QnLCAnZXhjZXB0aW9uIG1hdGNoJywgJ0JBRCcpCkBAIC0xOCw2ICsxOCw3IEBACiBoYXNsb2NhbCA9IFtdCiBoYXNjb21wYXJlID0gW10KIGhhc2ZyZWUgPSBbXQoraGFzbmFyZ3MgPSBbXQogCiBvcG1hcCA9IHt9CiBvcG5hbWUgPSBbJyddICogMjU2CkBAIC00Myw3ICs0NCw2IEBACiAjIEluc3RydWN0aW9uIG9wY29kZXMgZm9yIGNvbXBpbGVkIGNvZGUKICMgQmxhbmsgbGluZXMgY29ycmVzcG9uZCB0byBhdmFpbGFibGUgb3Bjb2RlcwogCi1kZWZfb3AoJ1NUT1BfQ09ERScsIDApCiBkZWZfb3AoJ1BPUF9UT1AnLCAxKQogZGVmX29wKCdST1RfVFdPJywgMikKIGRlZl9vcCgnUk9UX1RIUkVFJywgMykKQEAgLTg4LDYgKzg4LDcgQEAKIAogZGVmX29wKCdQUklOVF9FWFBSJywgNzApCiBkZWZfb3AoJ0xPQURfQlVJTERfQ0xBU1MnLCA3MSkKK2RlZl9vcCgnWUlFTERfRlJPTScsIDcyKQogCiBkZWZfb3AoJ0lOUExBQ0VfTFNISUZUJywgNzUpCiBkZWZfb3AoJ0lOUExBQ0VfUlNISUZUJywgNzYpCkBAIC0xNTIsNiArMTUzLDcgQEAKIAogZGVmX29wKCdSQUlTRV9WQVJBUkdTJywgMTMwKSAgICAjIE51bWJlciBvZiByYWlzZSBhcmd1bWVudHMgKDEsIDIsIG9yIDMpCiBkZWZfb3AoJ0NBTExfRlVOQ1RJT04nLCAxMzEpICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQoraGFzbmFyZ3MuYXBwZW5kKDEzMSkKIGRlZl9vcCgnTUFLRV9GVU5DVElPTicsIDEzMikgICAgIyBOdW1iZXIgb2YgYXJncyB3aXRoIGRlZmF1bHQgdmFsdWVzCiBkZWZfb3AoJ0JVSUxEX1NMSUNFJywgMTMzKSAgICAgICMgTnVtYmVyIG9mIGl0ZW1zCiBkZWZfb3AoJ01BS0VfQ0xPU1VSRScsIDEzNCkKQEAgLTE2NSw4ICsxNjcsMTEgQEAKIGhhc2ZyZWUuYXBwZW5kKDEzOCkKIAogZGVmX29wKCdDQUxMX0ZVTkNUSU9OX1ZBUicsIDE0MCkgICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQoraGFzbmFyZ3MuYXBwZW5kKDE0MCkKIGRlZl9vcCgnQ0FMTF9GVU5DVElPTl9LVycsIDE0MSkgICAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKK2hhc25hcmdzLmFwcGVuZCgxNDEpCiBkZWZfb3AoJ0NBTExfRlVOQ1RJT05fVkFSX0tXJywgMTQyKSAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCitoYXNuYXJncy5hcHBlbmQoMTQyKQogCiBqcmVsX29wKCdTRVRVUF9XSVRIJywgMTQzKQogCmRpZmYgLS1naXQgYS9MaWIvb3B0cGFyc2UucHkgYi9MaWIvb3B0cGFyc2UucHkKaW5kZXggZDk3YTFmNy4uMzc3NjRkMyAxMDA2NDQKLS0tIGEvTGliL29wdHBhcnNlLnB5CisrKyBiL0xpYi9vcHRwYXJzZS5weQpAQCAtODYsMTAgKzg2LDE2IEBACiAjICAgSWQ6IGVycm9ycy5weSA1MDkgMjAwNi0wNC0yMCAwMDo1ODoyNFogZ3dhcmQKIAogdHJ5OgotICAgIGZyb20gZ2V0dGV4dCBpbXBvcnQgZ2V0dGV4dAorICAgIGZyb20gZ2V0dGV4dCBpbXBvcnQgZ2V0dGV4dCwgbmdldHRleHQKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBkZWYgZ2V0dGV4dChtZXNzYWdlKToKICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKworICAgIGRlZiBuZ2V0dGV4dChzaW5ndWxhciwgcGx1cmFsLCBuKToKKyAgICAgICAgaWYgbiA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIHNpbmd1bGFyCisgICAgICAgIHJldHVybiBwbHVyYWwKKwogXyA9IGdldHRleHQKIAogCkBAIC00MTEsMTEgKzQxNyw4IEBACiBkZWYgX3BhcnNlX2ludCh2YWwpOgogICAgIHJldHVybiBfcGFyc2VfbnVtKHZhbCwgaW50KQogCi1kZWYgX3BhcnNlX2xvbmcodmFsKToKLSAgICByZXR1cm4gX3BhcnNlX251bSh2YWwsIGludCkKLQogX2J1aWx0aW5fY3Z0ID0geyAiaW50IiA6IChfcGFyc2VfaW50LCBfKCJpbnRlZ2VyIikpLAotICAgICAgICAgICAgICAgICAibG9uZyIgOiAoX3BhcnNlX2xvbmcsIF8oImxvbmcgaW50ZWdlciIpKSwKKyAgICAgICAgICAgICAgICAgImxvbmciIDogKF9wYXJzZV9pbnQsIF8oImludGVnZXIiKSksCiAgICAgICAgICAgICAgICAgICJmbG9hdCIgOiAoZmxvYXQsIF8oImZsb2F0aW5nLXBvaW50IikpLAogICAgICAgICAgICAgICAgICAiY29tcGxleCIgOiAoY29tcGxleCwgXygiY29tcGxleCIpKSB9CiAKQEAgLTE0ODMsMTEgKzE0ODYsMTAgQEAKICAgICAgICAgaWYgb3B0aW9uLnRha2VzX3ZhbHVlKCk6CiAgICAgICAgICAgICBuYXJncyA9IG9wdGlvbi5uYXJncwogICAgICAgICAgICAgaWYgbGVuKHJhcmdzKSA8IG5hcmdzOgotICAgICAgICAgICAgICAgIGlmIG5hcmdzID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoXygiJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IikgJSBvcHQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihfKCIlcyBvcHRpb24gcmVxdWlyZXMgJWQgYXJndW1lbnRzIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChvcHQsIG5hcmdzKSkKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9yKG5nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAiJShvcHRpb24pcyBvcHRpb24gcmVxdWlyZXMgJShudW1iZXIpZCBhcmd1bWVudCIsCisgICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgIG5hcmdzKSAlIHsib3B0aW9uIjogb3B0LCAibnVtYmVyIjogbmFyZ3N9KQogICAgICAgICAgICAgZWxpZiBuYXJncyA9PSAxOgogICAgICAgICAgICAgICAgIHZhbHVlID0gcmFyZ3MucG9wKDApCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTUyMiwxMSArMTUyNCwxMCBAQAogCiAgICAgICAgICAgICAgICAgbmFyZ3MgPSBvcHRpb24ubmFyZ3MKICAgICAgICAgICAgICAgICBpZiBsZW4ocmFyZ3MpIDwgbmFyZ3M6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5hcmdzID09IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oIiVzIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIpICUgb3B0KQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihfKCIlcyBvcHRpb24gcmVxdWlyZXMgJWQgYXJndW1lbnRzIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAob3B0LCBuYXJncykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IobmdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAiJShvcHRpb24pcyBvcHRpb24gcmVxdWlyZXMgJShudW1iZXIpZCBhcmd1bWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiJShvcHRpb24pcyBvcHRpb24gcmVxdWlyZXMgJShudW1iZXIpZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFyZ3MpICUgeyJvcHRpb24iOiBvcHQsICJudW1iZXIiOiBuYXJnc30pCiAgICAgICAgICAgICAgICAgZWxpZiBuYXJncyA9PSAxOgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHJhcmdzLnBvcCgwKQogICAgICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvb3MucHkgYi9MaWIvb3MucHkKaW5kZXggZDExMDFhMi4uODQyNTEyYSAxMDA2NDQKLS0tIGEvTGliL29zLnB5CisrKyBiL0xpYi9vcy5weQpAQCAtMjQsMTMgKzI0LDE4IEBACiAjJwogCiBpbXBvcnQgc3lzLCBlcnJubworaW1wb3J0IHN0YXQgYXMgc3QKIAogX25hbWVzID0gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCiAKICMgTm90ZTogIG1vcmUgbmFtZXMgYXJlIGFkZGVkIHRvIF9fYWxsX18gbGF0ZXIuCiBfX2FsbF9fID0gWyJhbHRzZXAiLCAiY3VyZGlyIiwgInBhcmRpciIsICJzZXAiLCAicGF0aHNlcCIsICJsaW5lc2VwIiwKLSAgICAgICAgICAgImRlZnBhdGgiLCAibmFtZSIsICJwYXRoIiwgImRldm51bGwiLAotICAgICAgICAgICAiU0VFS19TRVQiLCAiU0VFS19DVVIiLCAiU0VFS19FTkQiXQorICAgICAgICAgICAiZGVmcGF0aCIsICJuYW1lIiwgInBhdGgiLCAiZGV2bnVsbCIsICJTRUVLX1NFVCIsICJTRUVLX0NVUiIsCisgICAgICAgICAgICJTRUVLX0VORCIsICJmc2VuY29kZSIsICJmc2RlY29kZSIsICJnZXRfZXhlY19wYXRoIiwgImZkb3BlbiIsCisgICAgICAgICAgICJwb3BlbiIsICJleHRzZXAiXQorCitkZWYgX2V4aXN0cyhuYW1lKToKKyAgICByZXR1cm4gbmFtZSBpbiBnbG9iYWxzKCkKIAogZGVmIF9nZXRfZXhwb3J0c19saXN0KG1vZHVsZSk6CiAgICAgdHJ5OgpAQCAtMzgsMTkgKzQzLDIzIEBACiAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICByZXR1cm4gW24gZm9yIG4gaW4gZGlyKG1vZHVsZSkgaWYgblswXSAhPSAnXyddCiAKKyMgQW55IG5ldyBkZXBlbmRlbmNpZXMgb2YgdGhlIG9zIG1vZHVsZSBhbmQvb3IgY2hhbmdlcyBpbiBwYXRoIHNlcGFyYXRvcgorIyByZXF1aXJlcyB1cGRhdGluZyBpbXBvcnRsaWIgYXMgd2VsbC4KIGlmICdwb3NpeCcgaW4gX25hbWVzOgogICAgIG5hbWUgPSAncG9zaXgnCiAgICAgbGluZXNlcCA9ICdcbicKICAgICBmcm9tIHBvc2l4IGltcG9ydCAqCiAgICAgdHJ5OgogICAgICAgICBmcm9tIHBvc2l4IGltcG9ydCBfZXhpdAorICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGltcG9ydCBwb3NpeHBhdGggYXMgcGF0aAogCi0gICAgaW1wb3J0IHBvc2l4Ci0gICAgX19hbGxfXy5leHRlbmQoX2dldF9leHBvcnRzX2xpc3QocG9zaXgpKQotICAgIGRlbCBwb3NpeAorICAgIHRyeToKKyAgICAgICAgZnJvbSBwb3NpeCBpbXBvcnQgX2hhdmVfZnVuY3Rpb25zCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBwYXNzCiAKIGVsaWYgJ250JyBpbiBfbmFtZXM6CiAgICAgbmFtZSA9ICdudCcKQEAgLTU4LDYgKzY3LDcgQEAKICAgICBmcm9tIG50IGltcG9ydCAqCiAgICAgdHJ5OgogICAgICAgICBmcm9tIG50IGltcG9ydCBfZXhpdAorICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGltcG9ydCBudHBhdGggYXMgcGF0aApAQCAtNjYsMTIgKzc2LDE4IEBACiAgICAgX19hbGxfXy5leHRlbmQoX2dldF9leHBvcnRzX2xpc3QobnQpKQogICAgIGRlbCBudAogCisgICAgdHJ5OgorICAgICAgICBmcm9tIG50IGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKwogZWxpZiAnb3MyJyBpbiBfbmFtZXM6CiAgICAgbmFtZSA9ICdvczInCiAgICAgbGluZXNlcCA9ICdcclxuJwogICAgIGZyb20gb3MyIGltcG9ydCAqCiAgICAgdHJ5OgogICAgICAgICBmcm9tIG9zMiBpbXBvcnQgX2V4aXQKKyAgICAgICAgX19hbGxfXy5hcHBlbmQoJ19leGl0JykKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MKICAgICBpZiBzeXMudmVyc2lvbi5maW5kKCdFTVggR0NDJykgPT0gLTE6CkBAIC04NCwxMiArMTAwLDE4IEBACiAgICAgX19hbGxfXy5leHRlbmQoX2dldF9leHBvcnRzX2xpc3Qob3MyKSkKICAgICBkZWwgb3MyCiAKKyAgICB0cnk6CisgICAgICAgIGZyb20gb3MyIGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKwogZWxpZiAnY2UnIGluIF9uYW1lczoKICAgICBuYW1lID0gJ2NlJwogICAgIGxpbmVzZXAgPSAnXHJcbicKICAgICBmcm9tIGNlIGltcG9ydCAqCiAgICAgdHJ5OgogICAgICAgICBmcm9tIGNlIGltcG9ydCBfZXhpdAorICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogICAgICMgV2UgY2FuIHVzZSB0aGUgc3RhbmRhcmQgV2luZG93cyBwYXRoLgpAQCAtOTksNiArMTIxLDExIEBACiAgICAgX19hbGxfXy5leHRlbmQoX2dldF9leHBvcnRzX2xpc3QoY2UpKQogICAgIGRlbCBjZQogCisgICAgdHJ5OgorICAgICAgICBmcm9tIGNlIGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKwogZWxzZToKICAgICByYWlzZSBJbXBvcnRFcnJvcignbm8gb3Mgc3BlY2lmaWMgbW9kdWxlIGZvdW5kJykKIApAQCAtMTA4LDggKzEzNSw5NyBAQAogCiBkZWwgX25hbWVzCiAKKworaWYgX2V4aXN0cygiX2hhdmVfZnVuY3Rpb25zIik6CisgICAgX2dsb2JhbHMgPSBnbG9iYWxzKCkKKyAgICBkZWYgX2FkZChzdHIsIGZuKToKKyAgICAgICAgaWYgKGZuIGluIF9nbG9iYWxzKSBhbmQgKHN0ciBpbiBfaGF2ZV9mdW5jdGlvbnMpOgorICAgICAgICAgICAgX3NldC5hZGQoX2dsb2JhbHNbZm5dKQorCisgICAgX3NldCA9IHNldCgpCisgICAgX2FkZCgiSEFWRV9GQUNDRVNTQVQiLCAgImFjY2VzcyIpCisgICAgX2FkZCgiSEFWRV9GQ0hNT0RBVCIsICAgImNobW9kIikKKyAgICBfYWRkKCJIQVZFX0ZDSE9XTkFUIiwgICAiY2hvd24iKQorICAgIF9hZGQoIkhBVkVfRlNUQVRBVCIsICAgICJzdGF0IikKKyAgICBfYWRkKCJIQVZFX0ZVVElNRVNBVCIsICAidXRpbWUiKQorICAgIF9hZGQoIkhBVkVfTElOS0FUIiwgICAgICJsaW5rIikKKyAgICBfYWRkKCJIQVZFX01LRElSQVQiLCAgICAibWtkaXIiKQorICAgIF9hZGQoIkhBVkVfTUtGSUZPQVQiLCAgICJta2ZpZm8iKQorICAgIF9hZGQoIkhBVkVfTUtOT0RBVCIsICAgICJta25vZCIpCisgICAgX2FkZCgiSEFWRV9PUEVOQVQiLCAgICAgIm9wZW4iKQorICAgIF9hZGQoIkhBVkVfUkVBRExJTktBVCIsICJyZWFkbGluayIpCisgICAgX2FkZCgiSEFWRV9SRU5BTUVBVCIsICAgInJlbmFtZSIpCisgICAgX2FkZCgiSEFWRV9TWU1MSU5LQVQiLCAgInN5bWxpbmsiKQorICAgIF9hZGQoIkhBVkVfVU5MSU5LQVQiLCAgICJ1bmxpbmsiKQorICAgIF9hZGQoIkhBVkVfVU5MSU5LQVQiLCAgICJybWRpciIpCisgICAgX2FkZCgiSEFWRV9VVElNRU5TQVQiLCAgInV0aW1lIikKKyAgICBzdXBwb3J0c19kaXJfZmQgPSBfc2V0CisKKyAgICBfc2V0ID0gc2V0KCkKKyAgICBfYWRkKCJIQVZFX0ZBQ0NFU1NBVCIsICAiYWNjZXNzIikKKyAgICBzdXBwb3J0c19lZmZlY3RpdmVfaWRzID0gX3NldAorCisgICAgX3NldCA9IHNldCgpCisgICAgX2FkZCgiSEFWRV9GQ0hESVIiLCAgICAgImNoZGlyIikKKyAgICBfYWRkKCJIQVZFX0ZDSE1PRCIsICAgICAiY2htb2QiKQorICAgIF9hZGQoIkhBVkVfRkNIT1dOIiwgICAgICJjaG93biIpCisgICAgX2FkZCgiSEFWRV9GRE9QRU5ESVIiLCAgImxpc3RkaXIiKQorICAgIF9hZGQoIkhBVkVfRkVYRUNWRSIsICAgICJleGVjdmUiKQorICAgIF9zZXQuYWRkKHN0YXQpICMgZnN0YXQgYWx3YXlzIHdvcmtzCisgICAgX2FkZCgiSEFWRV9GVFJVTkNBVEUiLCAgInRydW5jYXRlIikKKyAgICBfYWRkKCJIQVZFX0ZVVElNRU5TIiwgICAidXRpbWUiKQorICAgIF9hZGQoIkhBVkVfRlVUSU1FUyIsICAgICJ1dGltZSIpCisgICAgX2FkZCgiSEFWRV9GUEFUSENPTkYiLCAgInBhdGhjb25mIikKKyAgICBpZiBfZXhpc3RzKCJzdGF0dmZzIikgYW5kIF9leGlzdHMoImZzdGF0dmZzIik6ICMgbWFjIG9zIHgxMC4zCisgICAgICAgIF9hZGQoIkhBVkVfRlNUQVRWRlMiLCAic3RhdHZmcyIpCisgICAgc3VwcG9ydHNfZmQgPSBfc2V0CisKKyAgICBfc2V0ID0gc2V0KCkKKyAgICBfYWRkKCJIQVZFX0ZBQ0NFU1NBVCIsICAiYWNjZXNzIikKKyAgICAjIFNvbWUgcGxhdGZvcm1zIGRvbid0IHN1cHBvcnQgbGNobW9kKCkuICBPZnRlbiB0aGUgZnVuY3Rpb24gZXhpc3RzCisgICAgIyBhbnl3YXksIGFzIGEgc3R1YiB0aGF0IGFsd2F5cyByZXR1cm5zIEVOT1NVUCBvciBwZXJoYXBzIEVPUE5PVFNVUFAuCisgICAgIyAoTm8sIEkgZG9uJ3Qga25vdyB3aHkgdGhhdCdzIGEgZ29vZCBkZXNpZ24uKSAgLi9jb25maWd1cmUgd2lsbCBkZXRlY3QKKyAgICAjIHRoaXMgYW5kIHJlamVjdCBpdC0tc28gSEFWRV9MQ0hNT0Qgc3RpbGwgd29uJ3QgYmUgZGVmaW5lZCBvbiBzdWNoCisgICAgIyBwbGF0Zm9ybXMuICBUaGlzIGlzIFZlcnkgSGVscGZ1bC4KKyAgICAjCisgICAgIyBIb3dldmVyLCBzb21ldGltZXMgcGxhdGZvcm1zIHdpdGhvdXQgYSB3b3JraW5nIGxjaG1vZCgpICpkbyogaGF2ZQorICAgICMgZmNobW9kYXQoKS4gIChFeGFtcGxlczogTGludXgga2VybmVsIDMuMiB3aXRoIGdsaWJjIDIuMTUsCisgICAgIyBPcGVuSW5kaWFuYSAzLnguKSAgQW5kIGZjaG1vZGF0KCkgaGFzIGEgZmxhZyB0aGF0IHRoZW9yZXRpY2FsbHkgbWFrZXMKKyAgICAjIGl0IGJlaGF2ZSBsaWtlIGxjaG1vZCgpLiAgU28gaW4gdGhlb3J5IGl0IHdvdWxkIGJlIGEgc3VpdGFibGUKKyAgICAjIHJlcGxhY2VtZW50IGZvciBsY2htb2QoKS4gIEJ1dCB3aGVuIGxjaG1vZCgpIGRvZXNuJ3Qgd29yaywgZmNobW9kYXQoKSdzCisgICAgIyBmbGFnIGRvZXNuJ3Qgd29yayAqZWl0aGVyKi4gIFNhZGx5IC4vY29uZmlndXJlIGlzbid0IHNvcGhpc3RpY2F0ZWQKKyAgICAjIGVub3VnaCB0byBkZXRlY3QgdGhpcyBjb25kaXRpb24tLWl0IG9ubHkgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdAorICAgICMgZmNobW9kYXQoKSBtaW5pbWFsbHkgd29ya3MuCisgICAgIworICAgICMgVGhlcmVmb3JlIHdlIHNpbXBseSBpZ25vcmUgZmNobW9kYXQoKSB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgb3Igbm90CisgICAgIyBvcy5jaG1vZCBzdXBwb3J0cyBmb2xsb3dfc3ltbGlua3MuICBKdXN0IGNoZWNraW5nIGxjaG1vZCgpIGlzCisgICAgIyBzdWZmaWNpZW50LiAgQWZ0ZXIgYWxsLS1pZiB5b3UgaGF2ZSBhIHdvcmtpbmcgZmNobW9kYXQoKSwgeW91cgorICAgICMgbGNobW9kKCkgYWxtb3N0IGNlcnRhaW5seSB3b3JrcyB0b28uCisgICAgIworICAgICMgX2FkZCgiSEFWRV9GQ0hNT0RBVCIsICAgImNobW9kIikKKyAgICBfYWRkKCJIQVZFX0ZDSE9XTkFUIiwgICAiY2hvd24iKQorICAgIF9hZGQoIkhBVkVfRlNUQVRBVCIsICAgICJzdGF0IikKKyAgICBfYWRkKCJIQVZFX0xDSEZMQUdTIiwgICAiY2hmbGFncyIpCisgICAgX2FkZCgiSEFWRV9MQ0hNT0QiLCAgICAgImNobW9kIikKKyAgICBpZiBfZXhpc3RzKCJsY2hvd24iKTogIyBtYWMgb3MgeDEwLjMKKyAgICAgICAgX2FkZCgiSEFWRV9MQ0hPV04iLCAiY2hvd24iKQorICAgIF9hZGQoIkhBVkVfTElOS0FUIiwgICAgICJsaW5rIikKKyAgICBfYWRkKCJIQVZFX0xVVElNRVMiLCAgICAidXRpbWUiKQorICAgIF9hZGQoIkhBVkVfTFNUQVQiLCAgICAgICJzdGF0IikKKyAgICBfYWRkKCJIQVZFX0ZTVEFUQVQiLCAgICAic3RhdCIpCisgICAgX2FkZCgiSEFWRV9VVElNRU5TQVQiLCAgInV0aW1lIikKKyAgICBfYWRkKCJNU19XSU5ET1dTIiwgICAgICAic3RhdCIpCisgICAgc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzID0gX3NldAorCisgICAgZGVsIF9zZXQKKyAgICBkZWwgX2hhdmVfZnVuY3Rpb25zCisgICAgZGVsIF9nbG9iYWxzCisgICAgZGVsIF9hZGQKKworCiAjIFB5dGhvbiB1c2VzIGZpeGVkIHZhbHVlcyBmb3IgdGhlIFNFRUtfIGNvbnN0YW50czsgdGhleSBhcmUgbWFwcGVkCiAjIHRvIG5hdGl2ZSBjb25zdGFudHMgaWYgbmVjZXNzYXJ5IGluIHBvc2l4bW9kdWxlLmMKKyMgT3RoZXIgcG9zc2libGUgU0VFSyB2YWx1ZXMgYXJlIGRpcmVjdGx5IGltcG9ydGVkIGZyb20gcG9zaXhtb2R1bGUuYwogU0VFS19TRVQgPSAwCiBTRUVLX0NVUiA9IDEKIFNFRUtfRU5EID0gMgpAQCAtMTIwLDggKzIzNiw2IEBACiAgICAgdW1hc2sobWFzaykKICAgICByZXR1cm4gbW9kZSAmIH5tYXNrCiAKLSMnCi0KICMgU3VwZXIgZGlyZWN0b3J5IHV0aWxpdGllcy4KICMgKEluc3BpcmVkIGJ5IEVyaWMgUmF5bW9uZDsgdGhlIGRvYyBzdHJpbmdzIGFyZSBtb3N0bHkgaGlzKQogCkBAIC0xNTEsNyArMjY1LDYgQEAKICAgICB0cnk6CiAgICAgICAgIG1rZGlyKG5hbWUsIG1vZGUpCiAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgaW1wb3J0IHN0YXQgYXMgc3QKICAgICAgICAgZGlyX2V4aXN0cyA9IHBhdGguaXNkaXIobmFtZSkKICAgICAgICAgZXhwZWN0ZWRfbW9kZSA9IF9nZXRfbWFza2VkX21vZGUobW9kZSkKICAgICAgICAgaWYgZGlyX2V4aXN0czoKQEAgLTE2Myw2ICsyNzYsOSBAQAogICAgICAgICAgICAgYWN0dWFsX21vZGUgPSAtMQogICAgICAgICBpZiBub3QgKGUuZXJybm8gPT0gZXJybm8uRUVYSVNUIGFuZCBleGlzdF9vayBhbmQgZGlyX2V4aXN0cyBhbmQKICAgICAgICAgICAgICAgICBhY3R1YWxfbW9kZSA9PSBleHBlY3RlZF9tb2RlKToKKyAgICAgICAgICAgIGlmIGRpcl9leGlzdHMgYW5kIGFjdHVhbF9tb2RlICE9IGV4cGVjdGVkX21vZGU6CisgICAgICAgICAgICAgICAgZS5zdHJlcnJvciArPSAnIChtb2RlICVvICE9IGV4cGVjdGVkIG1vZGUgJW8pJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF9tb2RlLCBleHBlY3RlZF9tb2RlKQogICAgICAgICAgICAgcmFpc2UKIAogZGVmIHJlbW92ZWRpcnMobmFtZSk6CkBAIC0zMDAsMTMgKzQxNiwxMDcgQEAKICAgICBmb3IgbmFtZSBpbiBkaXJzOgogICAgICAgICBuZXdfcGF0aCA9IGpvaW4odG9wLCBuYW1lKQogICAgICAgICBpZiBmb2xsb3dsaW5rcyBvciBub3QgaXNsaW5rKG5ld19wYXRoKToKLSAgICAgICAgICAgIGZvciB4IGluIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKToKLSAgICAgICAgICAgICAgICB5aWVsZCB4CisgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQogICAgIGlmIG5vdCB0b3Bkb3duOgogICAgICAgICB5aWVsZCB0b3AsIGRpcnMsIG5vbmRpcnMKIAogX19hbGxfXy5hcHBlbmQoIndhbGsiKQogCitpZiB7b3Blbiwgc3RhdH0gPD0gc3VwcG9ydHNfZGlyX2ZkIGFuZCB7bGlzdGRpciwgc3RhdH0gPD0gc3VwcG9ydHNfZmQ6CisKKyAgICBkZWYgZndhbGsodG9wPSIuIiwgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPU5vbmUpOgorICAgICAgICAiIiJEaXJlY3RvcnkgdHJlZSBnZW5lcmF0b3IuCisKKyAgICAgICAgVGhpcyBiZWhhdmVzIGV4YWN0bHkgbGlrZSB3YWxrKCksIGV4Y2VwdCB0aGF0IGl0IHlpZWxkcyBhIDQtdHVwbGUKKworICAgICAgICAgICAgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcywgZGlyZmQKKworICAgICAgICBgZGlycGF0aGAsIGBkaXJuYW1lc2AgYW5kIGBmaWxlbmFtZXNgIGFyZSBpZGVudGljYWwgdG8gd2FsaygpIG91dHB1dCwKKyAgICAgICAgYW5kIGBkaXJmZGAgaXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIHRoZSBkaXJlY3RvcnkgYGRpcnBhdGhgLgorCisgICAgICAgIFRoZSBhZHZhbnRhZ2Ugb2YgZndhbGsoKSBvdmVyIHdhbGsoKSBpcyB0aGF0IGl0J3Mgc2FmZSBhZ2FpbnN0IHN5bWxpbmsKKyAgICAgICAgcmFjZXMgKHdoZW4gZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlKS4KKworICAgICAgICBJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICAgICAgICAgIGFuZCB0b3Agc2hvdWxkIGJlIHJlbGF0aXZlOyB0b3Agd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorICAgICAgICAgIChkaXJfZmQgaXMgYWx3YXlzIHN1cHBvcnRlZCBmb3IgZndhbGsuKQorCisgICAgICAgIENhdXRpb246CisgICAgICAgIFNpbmNlIGZ3YWxrKCkgeWllbGRzIGZpbGUgZGVzY3JpcHRvcnMsIHRob3NlIGFyZSBvbmx5IHZhbGlkIHVudGlsIHRoZQorICAgICAgICBuZXh0IGl0ZXJhdGlvbiBzdGVwLCBzbyB5b3Ugc2hvdWxkIGR1cCgpIHRoZW0gaWYgeW91IHdhbnQgdG8ga2VlcCB0aGVtCisgICAgICAgIGZvciBhIGxvbmdlciBwZXJpb2QuCisKKyAgICAgICAgRXhhbXBsZToKKworICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoJ3B5dGhvbi9MaWIvZW1haWwnKToKKyAgICAgICAgICAgIHByaW50KHJvb3QsICJjb25zdW1lcyIsIGVuZD0iIikKKyAgICAgICAgICAgIHByaW50KHN1bShbb3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkKS5zdF9zaXplIGZvciBuYW1lIGluIGZpbGVzXSksCisgICAgICAgICAgICAgICAgICBlbmQ9IiIpCisgICAgICAgICAgICBwcmludCgiYnl0ZXMgaW4iLCBsZW4oZmlsZXMpLCAibm9uLWRpcmVjdG9yeSBmaWxlcyIpCisgICAgICAgICAgICBpZiAnQ1ZTJyBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdDVlMnKSAgIyBkb24ndCB2aXNpdCBDVlMgZGlyZWN0b3JpZXMKKyAgICAgICAgIiIiCisgICAgICAgICMgTm90ZTogVG8gZ3VhcmQgYWdhaW5zdCBzeW1saW5rIHJhY2VzLCB3ZSB1c2UgdGhlIHN0YW5kYXJkCisgICAgICAgICMgbHN0YXQoKS9vcGVuKCkvZnN0YXQoKSB0cmljay4KKyAgICAgICAgb3JpZ19zdCA9IHN0YXQodG9wLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1kaXJfZmQpCisgICAgICAgIHRvcGZkID0gb3Blbih0b3AsIE9fUkRPTkxZLCBkaXJfZmQ9ZGlyX2ZkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiAoZm9sbG93X3N5bWxpbmtzIG9yIChzdC5TX0lTRElSKG9yaWdfc3Quc3RfbW9kZSkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLnNhbWVzdGF0KG9yaWdfc3QsIHN0YXQodG9wZmQpKSkpOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gX2Z3YWxrKHRvcGZkLCB0b3AsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGNsb3NlKHRvcGZkKQorCisgICAgZGVmIF9md2Fsayh0b3BmZCwgdG9wcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93X3N5bWxpbmtzKToKKyAgICAgICAgIyBOb3RlOiBUaGlzIHVzZXMgTyhkZXB0aCBvZiB0aGUgZGlyZWN0b3J5IHRyZWUpIGZpbGUgZGVzY3JpcHRvcnM6IGlmCisgICAgICAgICMgbmVjZXNzYXJ5LCBpdCBjYW4gYmUgYWRhcHRlZCB0byBvbmx5IHJlcXVpcmUgTygxKSBGRHMsIHNlZSBpc3N1ZQorICAgICAgICAjICMxMzczNC4KKworICAgICAgICBuYW1lcyA9IGxpc3RkaXIodG9wZmQpCisgICAgICAgIGRpcnMsIG5vbmRpcnMgPSBbXSwgW10KKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBIZXJlLCB3ZSBkb24ndCB1c2UgQVRfU1lNTElOS19OT0ZPTExPVyB0byBiZSBjb25zaXN0ZW50IHdpdGgKKyAgICAgICAgICAgICAgICAjIHdhbGsoKSB3aGljaCByZXBvcnRzIHN5bWxpbmtzIHRvIGRpcmVjdG9yaWVzIGFzIGRpcmVjdG9yaWVzLgorICAgICAgICAgICAgICAgICMgV2UgZG8gaG93ZXZlciBjaGVjayBmb3Igc3ltbGlua3MgYmVmb3JlIHJlY3Vyc2luZyBpbnRvCisgICAgICAgICAgICAgICAgIyBhIHN1YmRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBpZiBzdC5TX0lTRElSKHN0YXQobmFtZSwgZGlyX2ZkPXRvcGZkKS5zdF9tb2RlKToKKyAgICAgICAgICAgICAgICAgICAgZGlycy5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBub25kaXJzLmFwcGVuZChuYW1lKQorICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBBZGQgZGFuZ2xpbmcgc3ltbGlua3MsIGlnbm9yZSBkaXNhcHBlYXJlZCBmaWxlcworICAgICAgICAgICAgICAgICAgICBpZiBzdC5TX0lTTE5LKHN0YXQobmFtZSwgZGlyX2ZkPXRvcGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdF9tb2RlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGlmIHRvcGRvd246CisgICAgICAgICAgICB5aWVsZCB0b3BwYXRoLCBkaXJzLCBub25kaXJzLCB0b3BmZAorCisgICAgICAgIGZvciBuYW1lIGluIGRpcnM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3JpZ19zdCA9IHN0YXQobmFtZSwgZGlyX2ZkPXRvcGZkLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgICAgIGRpcmZkID0gb3BlbihuYW1lLCBPX1JET05MWSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGVycikKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBmb2xsb3dfc3ltbGlua3Mgb3IgcGF0aC5zYW1lc3RhdChvcmlnX3N0LCBzdGF0KGRpcmZkKSk6CisgICAgICAgICAgICAgICAgICAgIGRpcnBhdGggPSBwYXRoLmpvaW4odG9wcGF0aCwgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBfZndhbGsoZGlyZmQsIGRpcnBhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY2xvc2UoZGlyZmQpCisKKyAgICAgICAgaWYgbm90IHRvcGRvd246CisgICAgICAgICAgICB5aWVsZCB0b3BwYXRoLCBkaXJzLCBub25kaXJzLCB0b3BmZAorCisgICAgX19hbGxfXy5hcHBlbmQoImZ3YWxrIikKKwogIyBNYWtlIHN1cmUgb3MuZW52aXJvbiBleGlzdHMsIGF0IGxlYXN0CiB0cnk6CiAgICAgZW52aXJvbgpAQCAtNDQzLDcgKzY1Myw3IEBACiAKIAogIyBDaGFuZ2UgZW52aXJvbiB0byBhdXRvbWF0aWNhbGx5IGNhbGwgcHV0ZW52KCksIHVuc2V0ZW52IGlmIHRoZXkgZXhpc3QuCi1mcm9tIF9hYmNvbGwgaW1wb3J0IE11dGFibGVNYXBwaW5nICAjIENhbid0IHVzZSBjb2xsZWN0aW9ucyAoYm9vdHN0cmFwKQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVNYXBwaW5nCiAKIGNsYXNzIF9FbnZpcm9uKE11dGFibGVNYXBwaW5nKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSwgZW5jb2Rla2V5LCBkZWNvZGVrZXksIGVuY29kZXZhbHVlLCBkZWNvZGV2YWx1ZSwgcHV0ZW52LCB1bnNldGVudik6CkBAIC02MDcsMTUgKzgxNywxNCBAQAogZnNlbmNvZGUsIGZzZGVjb2RlID0gX2ZzY29kZWMoKQogZGVsIF9mc2NvZGVjCiAKLWRlZiBfZXhpc3RzKG5hbWUpOgotICAgIHJldHVybiBuYW1lIGluIGdsb2JhbHMoKQotCiAjIFN1cHBseSBzcGF3biooKSAocHJvYmFibHkgb25seSBmb3IgVW5peCkKIGlmIF9leGlzdHMoImZvcmsiKSBhbmQgbm90IF9leGlzdHMoInNwYXdudiIpIGFuZCBfZXhpc3RzKCJleGVjdiIpOgogCiAgICAgUF9XQUlUID0gMAogICAgIFBfTk9XQUlUID0gUF9OT1dBSVRPID0gMQogCisgICAgX19hbGxfXy5leHRlbmQoWyJQX1dBSVQiLCAiUF9OT1dBSVQiLCAiUF9OT1dBSVRPIl0pCisKICAgICAjIFhYWCBTaG91bGQgd2Ugc3VwcG9ydCBQX0RFVEFDSD8gIEkgc3VwcG9zZSBpdCBjb3VsZCBmb3JrKCkqKjIKICAgICAjIGFuZCBjbG9zZSB0aGUgc3RkIEkvTyBzdHJlYW1zLiAgQWxzbywgUF9PVkVSTEFZIGlzIHRoZSBzYW1lCiAgICAgIyBhcyBleGVjdiooKT8KZGlmZiAtLWdpdCBhL0xpYi9wZGIucHkgYi9MaWIvcGRiLnB5CmluZGV4IDY3NzZhM2YuLjMwNDMzOTEgMTAwNzU1Ci0tLSBhL0xpYi9wZGIucHkKKysrIGIvTGliL3BkYi5weQpAQCAtNzMsNiArNzMsNyBAQAogaW1wb3J0IGJkYgogaW1wb3J0IGRpcwogaW1wb3J0IGNvZGUKK2ltcG9ydCBnbG9iCiBpbXBvcnQgcHByaW50CiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgaW5zcGVjdApAQCAtMTU1LDYgKzE1Niw4IEBACiAgICAgICAgICMgVHJ5IHRvIGxvYWQgcmVhZGxpbmUgaWYgaXQgZXhpc3RzCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCByZWFkbGluZQorICAgICAgICAgICAgIyByZW1vdmUgc29tZSBjb21tb24gZmlsZSBuYW1lIGRlbGltaXRlcnMKKyAgICAgICAgICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXJfZGVsaW1zKCcgXHRcbmBAIyQlXiYqKCk9K1t7XX1cXHw7OlwnIiw8Pj8nKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYWxsb3dfa2JkaW50ID0gRmFsc2UKQEAgLTQ0NSw2ICs0NDgsNjEgQEAKICAgICBkZWYgZXJyb3Ioc2VsZiwgbXNnKToKICAgICAgICAgcHJpbnQoJyoqKicsIG1zZywgZmlsZT1zZWxmLnN0ZG91dCkKIAorICAgICMgR2VuZXJpYyBjb21wbGV0aW9uIGZ1bmN0aW9ucy4gIEluZGl2aWR1YWwgY29tcGxldGVfZm9vIG1ldGhvZHMgY2FuIGJlCisgICAgIyBhc3NpZ25lZCBiZWxvdyB0byBvbmUgb2YgdGhlc2UgZnVuY3Rpb25zLgorCisgICAgZGVmIF9jb21wbGV0ZV9sb2NhdGlvbihzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CisgICAgICAgICMgQ29tcGxldGUgYSBmaWxlL21vZHVsZS9mdW5jdGlvbiBsb2NhdGlvbiBmb3IgYnJlYWsvdGJyZWFrL2NsZWFyLgorICAgICAgICBpZiBsaW5lLnN0cmlwKCkuZW5kc3dpdGgoKCc6JywgJywnKSk6CisgICAgICAgICAgICAjIEhlcmUgY29tZXMgYSBsaW5lIG51bWJlciBvciBhIGNvbmRpdGlvbiB3aGljaCB3ZSBjYW4ndCBjb21wbGV0ZS4KKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICAjIEZpcnN0LCB0cnkgdG8gZmluZCBtYXRjaGluZyBmdW5jdGlvbnMgKGkuZS4gZXhwcmVzc2lvbnMpLgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXQgPSBzZWxmLl9jb21wbGV0ZV9leHByZXNzaW9uKHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgcmV0ID0gW10KKyAgICAgICAgIyBUaGVuLCB0cnkgdG8gY29tcGxldGUgZmlsZSBuYW1lcyBhcyB3ZWxsLgorICAgICAgICBnbG9icyA9IGdsb2IuZ2xvYih0ZXh0ICsgJyonKQorICAgICAgICBmb3IgZm4gaW4gZ2xvYnM6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZuKToKKyAgICAgICAgICAgICAgICByZXQuYXBwZW5kKGZuICsgJy8nKQorICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShmbikgYW5kIGZuLmxvd2VyKCkuZW5kc3dpdGgoKCcucHknLCAnLnB5dycpKToKKyAgICAgICAgICAgICAgICByZXQuYXBwZW5kKGZuICsgJzonKQorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgX2NvbXBsZXRlX2JwbnVtYmVyKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKKyAgICAgICAgIyBDb21wbGV0ZSBhIGJyZWFrcG9pbnQgbnVtYmVyLiAgKFRoaXMgd291bGQgYmUgbW9yZSBoZWxwZnVsIGlmIHdlIGNvdWxkCisgICAgICAgICMgZGlzcGxheSBhZGRpdGlvbmFsIGluZm8gYWxvbmcgd2l0aCB0aGUgY29tcGxldGlvbnMsIHN1Y2ggYXMgZmlsZS9saW5lCisgICAgICAgICMgb2YgdGhlIGJyZWFrcG9pbnQuKQorICAgICAgICByZXR1cm4gW3N0cihpKSBmb3IgaSwgYnAgaW4gZW51bWVyYXRlKGJkYi5CcmVha3BvaW50LmJwYnludW1iZXIpCisgICAgICAgICAgICAgICAgaWYgYnAgaXMgbm90IE5vbmUgYW5kIHN0cihpKS5zdGFydHN3aXRoKHRleHQpXQorCisgICAgZGVmIF9jb21wbGV0ZV9leHByZXNzaW9uKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKKyAgICAgICAgIyBDb21wbGV0ZSBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbi4KKyAgICAgICAgaWYgbm90IHNlbGYuY3VyZnJhbWU6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgIyBDb2xsZWN0IGdsb2JhbHMgYW5kIGxvY2Fscy4gIEl0IGlzIHVzdWFsbHkgbm90IHJlYWxseSBzZW5zaWJsZSB0byBhbHNvCisgICAgICAgICMgY29tcGxldGUgYnVpbHRpbnMsIGFuZCB0aGV5IGNsdXR0ZXIgdGhlIG5hbWVzcGFjZSBxdWl0ZSBoZWF2aWx5LCBzbyB3ZQorICAgICAgICAjIGxlYXZlIHRoZW0gb3V0LgorICAgICAgICBucyA9IHNlbGYuY3VyZnJhbWUuZl9nbG9iYWxzLmNvcHkoKQorICAgICAgICBucy51cGRhdGUoc2VsZi5jdXJmcmFtZV9sb2NhbHMpCisgICAgICAgIGlmICcuJyBpbiB0ZXh0OgorICAgICAgICAgICAgIyBXYWxrIGFuIGF0dHJpYnV0ZSBjaGFpbiB1cCB0byB0aGUgbGFzdCBwYXJ0LCBzaW1pbGFyIHRvIHdoYXQKKyAgICAgICAgICAgICMgcmxjb21wbGV0ZXIgZG9lcy4gIFRoaXMgd2lsbCBiYWlsIGlmIGFueSBvZiB0aGUgcGFydHMgYXJlIG5vdAorICAgICAgICAgICAgIyBzaW1wbGUgYXR0cmlidXRlIGFjY2Vzcywgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgorICAgICAgICAgICAgZG90dGVkID0gdGV4dC5zcGxpdCgnLicpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb2JqID0gbnNbZG90dGVkWzBdXQorICAgICAgICAgICAgICAgIGZvciBwYXJ0IGluIGRvdHRlZFsxOi0xXToKKyAgICAgICAgICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosIHBhcnQpCisgICAgICAgICAgICBleGNlcHQgKEtleUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgICAgICBwcmVmaXggPSAnLicuam9pbihkb3R0ZWRbOi0xXSkgKyAnLicKKyAgICAgICAgICAgIHJldHVybiBbcHJlZml4ICsgbiBmb3IgbiBpbiBkaXIob2JqKSBpZiBuLnN0YXJ0c3dpdGgoZG90dGVkWy0xXSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIENvbXBsZXRlIGEgc2ltcGxlIG5hbWUuCisgICAgICAgICAgICByZXR1cm4gW24gZm9yIG4gaW4gbnMua2V5cygpIGlmIG4uc3RhcnRzd2l0aCh0ZXh0KV0KKwogICAgICMgQ29tbWFuZCBkZWZpbml0aW9ucywgY2FsbGVkIGJ5IGNtZGxvb3AoKQogICAgICMgVGhlIGFyZ3VtZW50IGlzIHRoZSByZW1haW5pbmcgc3RyaW5nIG9uIHRoZSBjb21tYW5kIGxpbmUKICAgICAjIFJldHVybiB0cnVlIHRvIGV4aXQgZnJvbSB0aGUgY29tbWFuZCBsb29wCkBAIC01MjYsNiArNTg0LDggQEAKICAgICAgICAgICAgIHNlbGYuY29tbWFuZHNfZGVmaW5pbmcgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5wcm9tcHQgPSBwcm9tcHRfYmFjawogCisgICAgY29tcGxldGVfY29tbWFuZHMgPSBfY29tcGxldGVfYnBudW1iZXIKKwogICAgIGRlZiBkb19icmVhayhzZWxmLCBhcmcsIHRlbXBvcmFyeSA9IDApOgogICAgICAgICAiIiJiKHJlYWspIFsgKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl0gXQogICAgICAgICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MuCkBAIC02MjgsNiArNjg4LDkgQEAKIAogICAgIGRvX2IgPSBkb19icmVhawogCisgICAgY29tcGxldGVfYnJlYWsgPSBfY29tcGxldGVfbG9jYXRpb24KKyAgICBjb21wbGV0ZV9iID0gX2NvbXBsZXRlX2xvY2F0aW9uCisKICAgICBkZWYgZG9fdGJyZWFrKHNlbGYsIGFyZyk6CiAgICAgICAgICIiInRicmVhayBbIChbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dIF0KICAgICAgICAgU2FtZSBhcmd1bWVudHMgYXMgYnJlYWssIGJ1dCBzZXRzIGEgdGVtcG9yYXJ5IGJyZWFrcG9pbnQ6IGl0CkBAIC02MzUsNiArNjk4LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuZG9fYnJlYWsoYXJnLCAxKQogCisgICAgY29tcGxldGVfdGJyZWFrID0gX2NvbXBsZXRlX2xvY2F0aW9uCisKICAgICBkZWYgbGluZWluZm8oc2VsZiwgaWRlbnRpZmllcik6CiAgICAgICAgIGZhaWxlZCA9IChOb25lLCBOb25lLCBOb25lKQogICAgICAgICAjIElucHV0IGlzIGlkZW50aWZpZXIsIG1heSBiZSBpbiBzaW5nbGUgcXVvdGVzCkBAIC03MDQsNiArNzY5LDggQEAKICAgICAgICAgICAgICAgICBicC5lbmFibGUoKQogICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnRW5hYmxlZCAlcycgJSBicCkKIAorICAgIGNvbXBsZXRlX2VuYWJsZSA9IF9jb21wbGV0ZV9icG51bWJlcgorCiAgICAgZGVmIGRvX2Rpc2FibGUoc2VsZiwgYXJnKToKICAgICAgICAgIiIiZGlzYWJsZSBicG51bWJlciBbYnBudW1iZXIgLi4uXQogICAgICAgICBEaXNhYmxlcyB0aGUgYnJlYWtwb2ludHMgZ2l2ZW4gYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZgpAQCAtNzIyLDYgKzc4OSw4IEBACiAgICAgICAgICAgICAgICAgYnAuZGlzYWJsZSgpCiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdEaXNhYmxlZCAlcycgJSBicCkKIAorICAgIGNvbXBsZXRlX2Rpc2FibGUgPSBfY29tcGxldGVfYnBudW1iZXIKKwogICAgIGRlZiBkb19jb25kaXRpb24oc2VsZiwgYXJnKToKICAgICAgICAgIiIiY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dCiAgICAgICAgIFNldCBhIG5ldyBjb25kaXRpb24gZm9yIHRoZSBicmVha3BvaW50LCBhbiBleHByZXNzaW9uIHdoaWNoCkBAIC03NDUsNiArODE0LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdOZXcgY29uZGl0aW9uIHNldCBmb3IgYnJlYWtwb2ludCAlZC4nICUgYnAubnVtYmVyKQogCisgICAgY29tcGxldGVfY29uZGl0aW9uID0gX2NvbXBsZXRlX2JwbnVtYmVyCisKICAgICBkZWYgZG9faWdub3JlKHNlbGYsIGFyZyk6CiAgICAgICAgICIiImlnbm9yZSBicG51bWJlciBbY291bnRdCiAgICAgICAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZgpAQCAtNzc2LDYgKzg0Nyw4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdXaWxsIHN0b3AgbmV4dCB0aW1lIGJyZWFrcG9pbnQgJWQgaXMgcmVhY2hlZC4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYnAubnVtYmVyKQogCisgICAgY29tcGxldGVfaWdub3JlID0gX2NvbXBsZXRlX2JwbnVtYmVyCisKICAgICBkZWYgZG9fY2xlYXIoc2VsZiwgYXJnKToKICAgICAgICAgIiIiY2woZWFyKSBmaWxlbmFtZTpsaW5lbm9cbmNsKGVhcikgW2JwbnVtYmVyIFticG51bWJlci4uLl1dCiAgICAgICAgIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyCkBAIC04MjQsNiArODk3LDkgQEAKICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ0RlbGV0ZWQgJXMnICUgYnApCiAgICAgZG9fY2wgPSBkb19jbGVhciAjICdjJyBpcyBhbHJlYWR5IGFuIGFiYnJldmlhdGlvbiBmb3IgJ2NvbnRpbnVlJwogCisgICAgY29tcGxldGVfY2xlYXIgPSBfY29tcGxldGVfbG9jYXRpb24KKyAgICBjb21wbGV0ZV9jbCA9IF9jb21wbGV0ZV9sb2NhdGlvbgorCiAgICAgZGVmIGRvX3doZXJlKHNlbGYsIGFyZyk6CiAgICAgICAgICIiIncoaGVyZSkKICAgICAgICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4KQEAgLTEwMDcsNiArMTA4Myw4IEBACiAgICAgICAgIHN5cy5zZXR0cmFjZShzZWxmLnRyYWNlX2Rpc3BhdGNoKQogICAgICAgICBzZWxmLmxhc3RjbWQgPSBwLmxhc3RjbWQKIAorICAgIGNvbXBsZXRlX2RlYnVnID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKwogICAgIGRlZiBkb19xdWl0KHNlbGYsIGFyZyk6CiAgICAgICAgICIiInEodWl0KVxuZXhpdAogICAgICAgICBRdWl0IGZyb20gdGhlIGRlYnVnZ2VyLiBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLgpAQCAtMTA5Myw2ICsxMTcxLDEwIEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHBhc3MKIAorICAgIGNvbXBsZXRlX3ByaW50ID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKyAgICBjb21wbGV0ZV9wID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKyAgICBjb21wbGV0ZV9wcCA9IF9jb21wbGV0ZV9leHByZXNzaW9uCisKICAgICBkZWYgZG9fbGlzdChzZWxmLCBhcmcpOgogICAgICAgICAiIiJsKGlzdCkgW2ZpcnN0IFssbGFzdF0gfCAuXQogCkBAIC0xMTczLDYgKzEyNTUsOCBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuX3ByaW50X2xpbmVzKGxpbmVzLCBsaW5lbm8pCiAKKyAgICBjb21wbGV0ZV9zb3VyY2UgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorCiAgICAgZGVmIF9wcmludF9saW5lcyhzZWxmLCBsaW5lcywgc3RhcnQsIGJyZWFrcz0oKSwgZnJhbWU9Tm9uZSk6CiAgICAgICAgICIiIlByaW50IGEgcmFuZ2Ugb2YgbGluZXMuIiIiCiAgICAgICAgIGlmIGZyYW1lOgpAQCAtMTIyNyw2ICsxMzExLDggQEAKICAgICAgICAgIyBOb25lIG9mIHRoZSBhYm92ZS4uLgogICAgICAgICBzZWxmLm1lc3NhZ2UodHlwZSh2YWx1ZSkpCiAKKyAgICBjb21wbGV0ZV93aGF0aXMgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorCiAgICAgZGVmIGRvX2Rpc3BsYXkoc2VsZiwgYXJnKToKICAgICAgICAgIiIiZGlzcGxheSBbZXhwcmVzc2lvbl0KIApAQCAtMTI0NCw2ICsxMzMwLDggQEAKICAgICAgICAgICAgIHNlbGYuZGlzcGxheWluZy5zZXRkZWZhdWx0KHNlbGYuY3VyZnJhbWUsIHt9KVthcmddID0gdmFsCiAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ2Rpc3BsYXkgJXM6ICVyJyAlIChhcmcsIHZhbCkpCiAKKyAgICBjb21wbGV0ZV9kaXNwbGF5ID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKwogICAgIGRlZiBkb191bmRpc3BsYXkoc2VsZiwgYXJnKToKICAgICAgICAgIiIidW5kaXNwbGF5IFtleHByZXNzaW9uXQogCkBAIC0xMjU5LDYgKzEzNDcsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZGlzcGxheWluZy5wb3Aoc2VsZi5jdXJmcmFtZSwgTm9uZSkKIAorICAgIGRlZiBjb21wbGV0ZV91bmRpc3BsYXkoc2VsZiwgdGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpOgorICAgICAgICByZXR1cm4gW2UgZm9yIGUgaW4gc2VsZi5kaXNwbGF5aW5nLmdldChzZWxmLmN1cmZyYW1lLCB7fSkKKyAgICAgICAgICAgICAgICBpZiBlLnN0YXJ0c3dpdGgodGV4dCldCisKICAgICBkZWYgZG9faW50ZXJhY3Qoc2VsZiwgYXJnKToKICAgICAgICAgIiIiaW50ZXJhY3QKIApAQCAtMTMxMyw2ICsxNDA1LDkgQEAKICAgICAgICAgaWYgYXJnc1swXSBpbiBzZWxmLmFsaWFzZXM6CiAgICAgICAgICAgICBkZWwgc2VsZi5hbGlhc2VzW2FyZ3NbMF1dCiAKKyAgICBkZWYgY29tcGxldGVfdW5hbGlhcyhzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CisgICAgICAgIHJldHVybiBbYSBmb3IgYSBpbiBzZWxmLmFsaWFzZXMgaWYgYS5zdGFydHN3aXRoKHRleHQpXQorCiAgICAgIyBMaXN0IG9mIGFsbCB0aGUgY29tbWFuZHMgbWFraW5nIHRoZSBwcm9ncmFtIHJlc3VtZSBleGVjdXRpb24uCiAgICAgY29tbWFuZHNfcmVzdW1pbmcgPSBbJ2RvX2NvbnRpbnVlJywgJ2RvX3N0ZXAnLCAnZG9fbmV4dCcsICdkb19yZXR1cm4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICdkb19xdWl0JywgJ2RvX2p1bXAnXQpkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZS5weSBiL0xpYi9waWNrbGUucHkKaW5kZXggZDEwYWM3NzYuLjllNjUzNjggMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGUucHkKKysrIGIvTGliL3BpY2tsZS5weQpAQCAtMjMsOCArMjMsNiBAQAogCiAiIiIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIgICAgICAgIyBDb2RlIHZlcnNpb24KLQogZnJvbSB0eXBlcyBpbXBvcnQgRnVuY3Rpb25UeXBlLCBCdWlsdGluRnVuY3Rpb25UeXBlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IF9leHRlbnNpb25fcmVnaXN0cnksIF9pbnZlcnRlZF9yZWdpc3RyeSwgX2V4dGVuc2lvbl9jYWNoZQpAQCAtMjk5LDggKzI5Nyw4IEBACiAgICAgICAgICAgICBmKHNlbGYsIG9iaikgIyBDYWxsIHVuYm91bmQgbWV0aG9kIHdpdGggZXhwbGljaXQgc2VsZgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgIyBDaGVjayBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlCi0gICAgICAgIHJlZHVjZSA9IGRpc3BhdGNoX3RhYmxlLmdldCh0KQorICAgICAgICAjIENoZWNrIHByaXZhdGUgZGlzcGF0Y2ggdGFibGUgaWYgYW55LCBvciBlbHNlIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUKKyAgICAgICAgcmVkdWNlID0gZ2V0YXR0cihzZWxmLCAnZGlzcGF0Y2hfdGFibGUnLCBkaXNwYXRjaF90YWJsZSkuZ2V0KHQpCiAgICAgICAgIGlmIHJlZHVjZToKICAgICAgICAgICAgIHJ2ID0gcmVkdWNlKG9iaikKICAgICAgICAgZWxzZToKQEAgLTM3Nyw3ICszNzUsNyBAQAogICAgICAgICAgICAgIyBhbGxvd2luZyBwcm90b2NvbCAwIGFuZCAxIHRvIHdvcmsgbm9ybWFsbHkuICBGb3IgdGhpcyB0bwogICAgICAgICAgICAgIyB3b3JrLCB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgX19yZWR1Y2VfXyBzaG91bGQgYmUKICAgICAgICAgICAgICMgY2FsbGVkIF9fbmV3b2JqX18sIGFuZCBpdHMgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGEKLSAgICAgICAgICAgICMgbmV3LXN0eWxlIGNsYXNzLiAgVGhlIGltcGxlbWVudGF0aW9uIGZvciBfX25ld29ial9fCisgICAgICAgICAgICAjIGNsYXNzLiAgVGhlIGltcGxlbWVudGF0aW9uIGZvciBfX25ld29ial9fCiAgICAgICAgICAgICAjIHNob3VsZCBiZSBhcyBmb2xsb3dzLCBhbHRob3VnaCBwaWNrbGUgaGFzIG5vIHdheSB0bwogICAgICAgICAgICAgIyB2ZXJpZnkgdGhpczoKICAgICAgICAgICAgICMKQEAgLTQ0MCw2ICs0MzgsMTQgQEAKICAgICAgICAgc2VsZi53cml0ZShOT05FKQogICAgIGRpc3BhdGNoW3R5cGUoTm9uZSldID0gc2F2ZV9ub25lCiAKKyAgICBkZWYgc2F2ZV9lbGxpcHNpcyhzZWxmLCBvYmopOgorICAgICAgICBzZWxmLnNhdmVfZ2xvYmFsKEVsbGlwc2lzLCAnRWxsaXBzaXMnKQorICAgIGRpc3BhdGNoW3R5cGUoRWxsaXBzaXMpXSA9IHNhdmVfZWxsaXBzaXMKKworICAgIGRlZiBzYXZlX25vdGltcGxlbWVudGVkKHNlbGYsIG9iaik6CisgICAgICAgIHNlbGYuc2F2ZV9nbG9iYWwoTm90SW1wbGVtZW50ZWQsICdOb3RJbXBsZW1lbnRlZCcpCisgICAgZGlzcGF0Y2hbdHlwZShOb3RJbXBsZW1lbnRlZCldID0gc2F2ZV9ub3RpbXBsZW1lbnRlZAorCiAgICAgZGVmIHNhdmVfYm9vbChzZWxmLCBvYmopOgogICAgICAgICBpZiBzZWxmLnByb3RvID49IDI6CiAgICAgICAgICAgICBzZWxmLndyaXRlKG9iaiBhbmQgTkVXVFJVRSBvciBORVdGQUxTRSkKQEAgLTEzMzIsNyArMTMzOCw3IEBACiAgICAgcmV0dXJuIGRvY3Rlc3QudGVzdG1vZCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgaW1wb3J0IHN5cywgYXJncGFyc2UKKyAgICBpbXBvcnQgYXJncGFyc2UKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgY29udGVudHMgb2YgdGhlIHBpY2tsZSBmaWxlcycpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKZGlmZiAtLWdpdCBhL0xpYi9waWNrbGV0b29scy5weSBiL0xpYi9waWNrbGV0b29scy5weQppbmRleCBlYzZjYzUzLi42NmY0ZWRkIDEwMDY0NAotLS0gYS9MaWIvcGlja2xldG9vbHMucHkKKysrIGIvTGliL3BpY2tsZXRvb2xzLnB5CkBAIC01MTAsMTAgKzUxMCw3IEBACiAgICAgZWxpZiBzID09IGIiMDEiOgogICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gaW50KHMpCi0gICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6Ci0gICAgICAgIHJldHVybiBpbnQocykKKyAgICByZXR1cm4gaW50KHMpCiAKIGRlZiByZWFkX2RlY2ltYWxubF9sb25nKGYpOgogICAgIHIiIiIKQEAgLTE2NDIsNiArMTYzOSw4IEBACiAgICAgICBpcyBwdXNoZWQgb24gdGhlIHN0YWNrLgogCiAgICAgICBOT1RFOiAgY2hlY2tzIGZvciBfX3NhZmVfZm9yX3VucGlja2xpbmdfXyB3ZW50IGF3YXkgaW4gUHl0aG9uIDIuMy4KKyAgICAgIE5PVEU6ICB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBvbGQtc3R5bGUgYW5kIG5ldy1zdHlsZSBjbGFzc2VzIGRvZXMKKyAgICAgICAgICAgICBub3QgbWFrZSBzZW5zZSBpbiBQeXRob24gMy4KICAgICAgICIiIiksCiAKICAgICBJKG5hbWU9J09CSicsCmRpZmYgLS1naXQgYS9MaWIvcGlwZXMucHkgYi9MaWIvcGlwZXMucHkKaW5kZXggNDI5NzA1My4uZjFhMTZmNiAxMDA2NDQKLS0tIGEvTGliL3BpcGVzLnB5CisrKyBiL0xpYi9waXBlcy5weQpAQCAtNjAsNyArNjAsOSBAQAogaW1wb3J0IHJlCiBpbXBvcnQgb3MKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHN0cmluZworIyB3ZSBpbXBvcnQgdGhlIHF1b3RlIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBtb2R1bGUgZm9yIGJhY2t3YXJkIGNvbXBhdAorIyAocXVvdGUgdXNlZCB0byBiZSBhbiB1bmRvY3VtZW50ZWQgYnV0IHVzZWQgZnVuY3Rpb24gaW4gcGlwZXMpCitmcm9tIHNobGV4IGltcG9ydCBxdW90ZQogCiBfX2FsbF9fID0gWyJUZW1wbGF0ZSJdCiAKQEAgLTI0MywyMiArMjQ1LDMgQEAKICAgICAgICAgY21kbGlzdCA9IHRyYXBjbWQgKyAnXG4nICsgY21kbGlzdCArICdcbicgKyBybWNtZAogICAgICMKICAgICByZXR1cm4gY21kbGlzdAotCi0KLSMgUmVsaWFibHkgcXVvdGUgYSBzdHJpbmcgYXMgYSBzaW5nbGUgYXJndW1lbnQgZm9yIC9iaW4vc2gKLQotIyBTYWZlIHVucXVvdGVkCi1fc2FmZWNoYXJzID0gZnJvemVuc2V0KHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdAJV8tKz06LC4vJykKLQotZGVmIHF1b3RlKGZpbGUpOgotICAgICIiIlJldHVybiBhIHNoZWxsLWVzY2FwZWQgdmVyc2lvbiBvZiB0aGUgZmlsZSBzdHJpbmcuIiIiCi0gICAgZm9yIGMgaW4gZmlsZToKLSAgICAgICAgaWYgYyBub3QgaW4gX3NhZmVjaGFyczoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgaWYgbm90IGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gIicnIgotICAgICAgICByZXR1cm4gZmlsZQotICAgICMgdXNlIHNpbmdsZSBxdW90ZXMsIGFuZCBwdXQgc2luZ2xlIHF1b3RlcyBpbnRvIGRvdWJsZSBxdW90ZXMKLSAgICAjIHRoZSBzdHJpbmcgJCdiIGlzIHRoZW4gcXVvdGVkIGFzICckJyInIidiJwotICAgIHJldHVybiAiJyIgKyBmaWxlLnJlcGxhY2UoIiciLCAiJ1wiJ1wiJyIpICsgIiciCmRpZmYgLS1naXQgYS9MaWIvcGtndXRpbC5weSBiL0xpYi9wa2d1dGlsLnB5CmluZGV4IDUxZGEwYjEuLjhiZGViMzIgMTAwNjQ0Ci0tLSBhL0xpYi9wa2d1dGlsLnB5CisrKyBiL0xpYi9wa2d1dGlsLnB5CkBAIC0yLDggKzIsMTAgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgaW1wCiBpbXBvcnQgb3MucGF0aAorZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogZnJvbSB0eXBlcyBpbXBvcnQgTW9kdWxlVHlwZQogCiBfX2FsbF9fID0gWwpAQCAtMjEsNyArMjMsNyBAQAogICAgIGlmIG1hZ2ljICE9IGltcC5nZXRfbWFnaWMoKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIHN0cmVhbS5yZWFkKDQpICMgU2tpcCB0aW1lc3RhbXAKKyAgICBzdHJlYW0ucmVhZCg4KSAjIFNraXAgdGltZXN0YW1wIGFuZCBzaXplCiAgICAgcmV0dXJuIG1hcnNoYWwubG9hZChzdHJlYW0pCiAKIApAQCAtMTU1LDYgKzE1Nyw0OSBAQAogCiBpdGVyX2ltcG9ydGVyX21vZHVsZXMgPSBzaW1wbGVnZW5lcmljKGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcykKIAorIyBJbXBsZW1lbnQgYSBmaWxlIHdhbGtlciBmb3IgdGhlIG5vcm1hbCBpbXBvcnRsaWIgcGF0aCBob29rCitkZWYgX2l0ZXJfZmlsZV9maW5kZXJfbW9kdWxlcyhpbXBvcnRlciwgcHJlZml4PScnKToKKyAgICBpZiBpbXBvcnRlci5wYXRoIGlzIE5vbmUgb3Igbm90IG9zLnBhdGguaXNkaXIoaW1wb3J0ZXIucGF0aCk6CisgICAgICAgIHJldHVybgorCisgICAgeWllbGRlZCA9IHt9CisgICAgaW1wb3J0IGluc3BlY3QKKyAgICB0cnk6CisgICAgICAgIGZpbGVuYW1lcyA9IG9zLmxpc3RkaXIoaW1wb3J0ZXIucGF0aCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgIyBpZ25vcmUgdW5yZWFkYWJsZSBkaXJlY3RvcmllcyBsaWtlIGltcG9ydCBkb2VzCisgICAgICAgIGZpbGVuYW1lcyA9IFtdCisgICAgZmlsZW5hbWVzLnNvcnQoKSAgIyBoYW5kbGUgcGFja2FnZXMgYmVmb3JlIHNhbWUtbmFtZWQgbW9kdWxlcworCisgICAgZm9yIGZuIGluIGZpbGVuYW1lczoKKyAgICAgICAgbW9kbmFtZSA9IGluc3BlY3QuZ2V0bW9kdWxlbmFtZShmbikKKyAgICAgICAgaWYgbW9kbmFtZT09J19faW5pdF9fJyBvciBtb2RuYW1lIGluIHlpZWxkZWQ6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oaW1wb3J0ZXIucGF0aCwgZm4pCisgICAgICAgIGlzcGtnID0gRmFsc2UKKworICAgICAgICBpZiBub3QgbW9kbmFtZSBhbmQgb3MucGF0aC5pc2RpcihwYXRoKSBhbmQgJy4nIG5vdCBpbiBmbjoKKyAgICAgICAgICAgIG1vZG5hbWUgPSBmbgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpcmNvbnRlbnRzID0gb3MubGlzdGRpcihwYXRoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBpZ25vcmUgdW5yZWFkYWJsZSBkaXJlY3RvcmllcyBsaWtlIGltcG9ydCBkb2VzCisgICAgICAgICAgICAgICAgZGlyY29udGVudHMgPSBbXQorICAgICAgICAgICAgZm9yIGZuIGluIGRpcmNvbnRlbnRzOgorICAgICAgICAgICAgICAgIHN1Ym5hbWUgPSBpbnNwZWN0LmdldG1vZHVsZW5hbWUoZm4pCisgICAgICAgICAgICAgICAgaWYgc3VibmFtZT09J19faW5pdF9fJzoKKyAgICAgICAgICAgICAgICAgICAgaXNwa2cgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlICAgICMgbm90IGEgcGFja2FnZQorCisgICAgICAgIGlmIG1vZG5hbWUgYW5kICcuJyBub3QgaW4gbW9kbmFtZToKKyAgICAgICAgICAgIHlpZWxkZWRbbW9kbmFtZV0gPSAxCisgICAgICAgICAgICB5aWVsZCBwcmVmaXggKyBtb2RuYW1lLCBpc3BrZworCitpdGVyX2ltcG9ydGVyX21vZHVsZXMucmVnaXN0ZXIoCisgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLCBfaXRlcl9maWxlX2ZpbmRlcl9tb2R1bGVzKQogCiBjbGFzcyBJbXBJbXBvcnRlcjoKICAgICAiIiJQRVAgMzAyIEltcG9ydGVyIHRoYXQgd3JhcHMgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBhbGdvcml0aG0KQEAgLTE2OCw2ICsyMTMsOCBAQAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9Tm9uZSk6CisgICAgICAgIHdhcm4oIlRoaXMgZW11bGF0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAnaW1wb3J0bGliJyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKQEAgLTIzMiw2ICsyNzksOCBAQAogICAgIGNvZGUgPSBzb3VyY2UgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnVsbG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBldGMpOgorICAgICAgICB3YXJuKCJUaGlzIGVtdWxhdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgJ2ltcG9ydGxpYicgaW5zdGVhZCIsCisgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCiAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQogICAgICAgICBzZWxmLmZ1bGxuYW1lID0gZnVsbG5hbWUKQEAgLTI1Niw3ICszMDUsNyBAQAogICAgICAgICBpZiBzZWxmLmZpbGUgYW5kIHNlbGYuZmlsZS5jbG9zZWQ6CiAgICAgICAgICAgICBtb2RfdHlwZSA9IHNlbGYuZXRjWzJdCiAgICAgICAgICAgICBpZiBtb2RfdHlwZT09aW1wLlBZX1NPVVJDRToKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyVScpCisgICAgICAgICAgICAgICAgc2VsZi5maWxlID0gb3BlbihzZWxmLmZpbGVuYW1lLCAncicpCiAgICAgICAgICAgICBlbGlmIG1vZF90eXBlIGluIChpbXAuUFlfQ09NUElMRUQsIGltcC5DX0VYVEVOU0lPTik6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlID0gb3BlbihzZWxmLmZpbGVuYW1lLCAncmInKQogCkBAIC0zMDEsNyArMzUwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKICAgICAgICAgICAgIGVsaWYgbW9kX3R5cGU9PWltcC5QWV9DT01QSUxFRDoKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmZpbGVuYW1lWzotMV0pOgotICAgICAgICAgICAgICAgICAgICBmID0gb3BlbihzZWxmLmZpbGVuYW1lWzotMV0sICdyVScpCisgICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYuZmlsZW5hbWVbOi0xXSwgJ3InKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnNvdXJjZSA9IGYucmVhZCgpCiAgICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgZWxpZiBtb2RfdHlwZT09aW1wLlBLR19ESVJFQ1RPUlk6CkBAIC0zMTUsOSArMzY0LDkgQEAKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lPU5vbmUpOgogICAgICAgICBmdWxsbmFtZSA9IHNlbGYuX2ZpeF9uYW1lKGZ1bGxuYW1lKQogICAgICAgICBtb2RfdHlwZSA9IHNlbGYuZXRjWzJdCi0gICAgICAgIGlmIHNlbGYuZXRjWzJdPT1pbXAuUEtHX0RJUkVDVE9SWToKKyAgICAgICAgaWYgbW9kX3R5cGU9PWltcC5QS0dfRElSRUNUT1JZOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9kZWxlZ2F0ZSgpLmdldF9maWxlbmFtZSgpCi0gICAgICAgIGVsaWYgc2VsZi5ldGNbMl0gaW4gKGltcC5QWV9TT1VSQ0UsIGltcC5QWV9DT01QSUxFRCwgaW1wLkNfRVhURU5TSU9OKToKKyAgICAgICAgZWxpZiBtb2RfdHlwZSBpbiAoaW1wLlBZX1NPVVJDRSwgaW1wLlBZX0NPTVBJTEVELCBpbXAuQ19FWFRFTlNJT04pOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW5hbWUKICAgICAgICAgcmV0dXJuIE5vbmUKIApAQCAtMzY2LDEwICs0MTUsNiBAQAogICAgIFRoZSByZXR1cm5lZCBpbXBvcnRlciBpcyBjYWNoZWQgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUKICAgICBpZiBpdCB3YXMgbmV3bHkgY3JlYXRlZCBieSBhIHBhdGggaG9vay4KIAotICAgIElmIHRoZXJlIGlzIG5vIGltcG9ydGVyLCBhIHdyYXBwZXIgYXJvdW5kIHRoZSBiYXNpYyBpbXBvcnQKLSAgICBtYWNoaW5lcnkgaXMgcmV0dXJuZWQuIFRoaXMgd3JhcHBlciBpcyBuZXZlciBpbnNlcnRlZCBpbnRvCi0gICAgdGhlIGltcG9ydGVyIGNhY2hlIChOb25lIGlzIGluc2VydGVkIGluc3RlYWQpLgotCiAgICAgVGhlIGNhY2hlIChvciBwYXJ0IG9mIGl0KSBjYW4gYmUgY2xlYXJlZCBtYW51YWxseSBpZiBhCiAgICAgcmVzY2FuIG9mIHN5cy5wYXRoX2hvb2tzIGlzIG5lY2Vzc2FyeS4KICAgICAiIiIKQEAgLTM3OSwxOCArNDI0LDEyIEBACiAgICAgICAgIGZvciBwYXRoX2hvb2sgaW4gc3lzLnBhdGhfaG9va3M6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaW1wb3J0ZXIgPSBwYXRoX2hvb2socGF0aF9pdGVtKQorICAgICAgICAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnNldGRlZmF1bHQocGF0aF9pdGVtLCBpbXBvcnRlcikKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGltcG9ydGVyID0gTm9uZQotICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5zZXRkZWZhdWx0KHBhdGhfaXRlbSwgaW1wb3J0ZXIpCi0KLSAgICBpZiBpbXBvcnRlciBpcyBOb25lOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnRlciA9IEltcEltcG9ydGVyKHBhdGhfaXRlbSkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgaW1wb3J0ZXIgPSBOb25lCiAgICAgcmV0dXJuIGltcG9ydGVyCiAKIApAQCAtMzk4LDU1ICs0MzcsMzcgQEAKICAgICAiIiJZaWVsZCBQRVAgMzAyIGltcG9ydGVycyBmb3IgdGhlIGdpdmVuIG1vZHVsZSBuYW1lCiAKICAgICBJZiBmdWxsbmFtZSBjb250YWlucyBhICcuJywgdGhlIGltcG9ydGVycyB3aWxsIGJlIGZvciB0aGUgcGFja2FnZQotICAgIGNvbnRhaW5pbmcgZnVsbG5hbWUsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgaW1wb3J0ZXJzIGZvciBzeXMubWV0YV9wYXRoLAotICAgIHN5cy5wYXRoLCBhbmQgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBtYWNoaW5lcnksIGluIHRoYXQgb3JkZXIuICBJZgotICAgIHRoZSBuYW1lZCBtb2R1bGUgaXMgaW4gYSBwYWNrYWdlLCB0aGF0IHBhY2thZ2UgaXMgaW1wb3J0ZWQgYXMgYSBzaWRlCisgICAgY29udGFpbmluZyBmdWxsbmFtZSwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBhbGwgcmVnaXN0ZXJlZCB0b3AgbGV2ZWwKKyAgICBpbXBvcnRlcnMgKGkuZS4gdGhvc2Ugb24gYm90aCBzeXMubWV0YV9wYXRoIGFuZCBzeXMucGF0aF9ob29rcykuCisKKyAgICBJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIGluIGEgcGFja2FnZSwgdGhhdCBwYWNrYWdlIGlzIGltcG9ydGVkIGFzIGEgc2lkZQogICAgIGVmZmVjdCBvZiBpbnZva2luZyB0aGlzIGZ1bmN0aW9uLgogCi0gICAgTm9uIFBFUCAzMDIgbWVjaGFuaXNtcyAoZS5nLiB0aGUgV2luZG93cyByZWdpc3RyeSkgdXNlZCBieSB0aGUKLSAgICBzdGFuZGFyZCBpbXBvcnQgbWFjaGluZXJ5IHRvIGZpbmQgZmlsZXMgaW4gYWx0ZXJuYXRpdmUgbG9jYXRpb25zCi0gICAgYXJlIHBhcnRpYWxseSBzdXBwb3J0ZWQsIGJ1dCBhcmUgc2VhcmNoZWQgQUZURVIgc3lzLnBhdGguIE5vcm1hbGx5LAotICAgIHRoZXNlIGxvY2F0aW9ucyBhcmUgc2VhcmNoZWQgQkVGT1JFIHN5cy5wYXRoLCBwcmV2ZW50aW5nIHN5cy5wYXRoCi0gICAgZW50cmllcyBmcm9tIHNoYWRvd2luZyB0aGVtLgotCi0gICAgRm9yIHRoaXMgdG8gY2F1c2UgYSB2aXNpYmxlIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3VyLCB0aGVyZSBtdXN0Ci0gICAgYmUgYSBtb2R1bGUgb3IgcGFja2FnZSBuYW1lIHRoYXQgaXMgYWNjZXNzaWJsZSB2aWEgYm90aCBzeXMucGF0aAotICAgIGFuZCBvbmUgb2YgdGhlIG5vbiBQRVAgMzAyIGZpbGUgc3lzdGVtIG1lY2hhbmlzbXMuIEluIHRoaXMgY2FzZSwKLSAgICB0aGUgZW11bGF0aW9uIHdpbGwgZmluZCB0aGUgZm9ybWVyIHZlcnNpb24sIHdoaWxlIHRoZSBidWlsdGluCi0gICAgaW1wb3J0IG1lY2hhbmlzbSB3aWxsIGZpbmQgdGhlIGxhdHRlci4KLQotICAgIEl0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgY2FuIGJlIGFmZmVjdGVkIGJ5IHRoaXMgZGlzY3JlcGFuY3k6Ci0gICAgICAgIGltcC5DX0VYVEVOU0lPTiwgaW1wLlBZX1NPVVJDRSwgaW1wLlBZX0NPTVBJTEVELCBpbXAuUEtHX0RJUkVDVE9SWQorICAgIElmIG5vIG1vZHVsZSBuYW1lIGlzIHNwZWNpZmllZCwgYWxsIHRvcCBsZXZlbCBpbXBvcnRlcnMgYXJlIHByb2R1Y2VkLgogICAgICIiIgogICAgIGlmIGZ1bGxuYW1lLnN0YXJ0c3dpdGgoJy4nKToKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIlJlbGF0aXZlIG1vZHVsZSBuYW1lcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgbXNnID0gIlJlbGF0aXZlIG1vZHVsZSBuYW1lIHshcn0gbm90IHN1cHBvcnRlZCIuZm9ybWF0KGZ1bGxuYW1lKQorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cpCiAgICAgaWYgJy4nIGluIGZ1bGxuYW1lOgogICAgICAgICAjIEdldCB0aGUgY29udGFpbmluZyBwYWNrYWdlJ3MgX19wYXRoX18KLSAgICAgICAgcGtnID0gJy4nLmpvaW4oZnVsbG5hbWUuc3BsaXQoJy4nKVs6LTFdKQotICAgICAgICBpZiBwa2cgbm90IGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgX19pbXBvcnRfXyhwa2cpCi0gICAgICAgIHBhdGggPSBnZXRhdHRyKHN5cy5tb2R1bGVzW3BrZ10sICdfX3BhdGhfXycsIE5vbmUpIG9yIFtdCisgICAgICAgIHBrZ19uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbigiLiIpWzBdCisgICAgICAgIHBrZyA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZykKKyAgICAgICAgcGF0aCA9IGdldGF0dHIoc3lzLm1vZHVsZXNbcGtnXSwgJ19fcGF0aF9fJywgTm9uZSkKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCiAgICAgZWxzZToKICAgICAgICAgZm9yIGltcG9ydGVyIGluIHN5cy5tZXRhX3BhdGg6CiAgICAgICAgICAgICB5aWVsZCBpbXBvcnRlcgogICAgICAgICBwYXRoID0gc3lzLnBhdGgKICAgICBmb3IgaXRlbSBpbiBwYXRoOgogICAgICAgICB5aWVsZCBnZXRfaW1wb3J0ZXIoaXRlbSkKLSAgICBpZiAnLicgbm90IGluIGZ1bGxuYW1lOgotICAgICAgICB5aWVsZCBJbXBJbXBvcnRlcigpCiAKIGRlZiBnZXRfbG9hZGVyKG1vZHVsZV9vcl9uYW1lKToKICAgICAiIiJHZXQgYSBQRVAgMzAyICJsb2FkZXIiIG9iamVjdCBmb3IgbW9kdWxlX29yX25hbWUKIAotICAgIElmIHRoZSBtb2R1bGUgb3IgcGFja2FnZSBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgbm9ybWFsIGltcG9ydAotICAgIG1lY2hhbmlzbSwgYSB3cmFwcGVyIGFyb3VuZCB0aGUgcmVsZXZhbnQgcGFydCBvZiB0aGF0IG1hY2hpbmVyeQotICAgIGlzIHJldHVybmVkLiAgUmV0dXJucyBOb25lIGlmIHRoZSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kIG9yIGltcG9ydGVkLgorICAgIFJldHVybnMgTm9uZSBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBvciBpbXBvcnRlZC4KICAgICBJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIG5vdCBhbHJlYWR5IGltcG9ydGVkLCBpdHMgY29udGFpbmluZyBwYWNrYWdlCiAgICAgKGlmIGFueSkgaXMgaW1wb3J0ZWQsIGluIG9yZGVyIHRvIGVzdGFibGlzaCB0aGUgcGFja2FnZSBfX3BhdGhfXy4KLQotICAgIFRoaXMgZnVuY3Rpb24gdXNlcyBpdGVyX2ltcG9ydGVycygpLCBhbmQgaXMgdGh1cyBzdWJqZWN0IHRvIHRoZSBzYW1lCi0gICAgbGltaXRhdGlvbnMgcmVnYXJkaW5nIHBsYXRmb3JtLXNwZWNpZmljIHNwZWNpYWwgaW1wb3J0IGxvY2F0aW9ucyBzdWNoCi0gICAgYXMgdGhlIFdpbmRvd3MgcmVnaXN0cnkuCiAgICAgIiIiCiAgICAgaWYgbW9kdWxlX29yX25hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgIG1vZHVsZV9vcl9uYW1lID0gc3lzLm1vZHVsZXNbbW9kdWxlX29yX25hbWVdCkBAIC00NjAsMjAgKzQ4MSwzMyBAQAogICAgICAgICBmdWxsbmFtZSA9IG1vZHVsZV9vcl9uYW1lCiAgICAgcmV0dXJuIGZpbmRfbG9hZGVyKGZ1bGxuYW1lKQogCisKIGRlZiBmaW5kX2xvYWRlcihmdWxsbmFtZSk6CiAgICAgIiIiRmluZCBhIFBFUCAzMDIgImxvYWRlciIgb2JqZWN0IGZvciBmdWxsbmFtZQogCi0gICAgSWYgZnVsbG5hbWUgY29udGFpbnMgZG90cywgcGF0aCBtdXN0IGJlIHRoZSBjb250YWluaW5nIHBhY2thZ2UncyBfX3BhdGhfXy4KLSAgICBSZXR1cm5zIE5vbmUgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgb3IgaW1wb3J0ZWQuIFRoaXMgZnVuY3Rpb24gdXNlcwotICAgIGl0ZXJfaW1wb3J0ZXJzKCksIGFuZCBpcyB0aHVzIHN1YmplY3QgdG8gdGhlIHNhbWUgbGltaXRhdGlvbnMgcmVnYXJkaW5nCi0gICAgcGxhdGZvcm0tc3BlY2lmaWMgc3BlY2lhbCBpbXBvcnQgbG9jYXRpb25zIHN1Y2ggYXMgdGhlIFdpbmRvd3MgcmVnaXN0cnkuCisgICAgVGhpcyBpcyBzIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgIHRoYXQKKyAgICBzZXRzIHRoZSAqcGF0aCogYXJndW1lbnQgY29ycmVjdGx5IHdoZW4gc2VhcmNoaW5nIGZvciBzdWJtb2R1bGVzLCBhbmQKKyAgICBhbHNvIGVuc3VyZXMgcGFyZW50IHBhY2thZ2VzIChpZiBhbnkpIGFyZSBpbXBvcnRlZCBiZWZvcmUgc2VhcmNoaW5nIGZvcgorICAgIHN1Ym1vZHVsZXMuCiAgICAgIiIiCi0gICAgZm9yIGltcG9ydGVyIGluIGl0ZXJfaW1wb3J0ZXJzKGZ1bGxuYW1lKToKLSAgICAgICAgbG9hZGVyID0gaW1wb3J0ZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCi0gICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBsb2FkZXIKLQotICAgIHJldHVybiBOb25lCisgICAgaWYgZnVsbG5hbWUuc3RhcnRzd2l0aCgnLicpOgorICAgICAgICBtc2cgPSAiUmVsYXRpdmUgbW9kdWxlIG5hbWUgeyFyfSBub3Qgc3VwcG9ydGVkIi5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZykKKyAgICBwYXRoID0gTm9uZQorICAgIHBrZ19uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbigiLiIpWzBdCisgICAgaWYgcGtnX25hbWU6CisgICAgICAgIHBrZyA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQorICAgICAgICBwYXRoID0gZ2V0YXR0cihwa2csICJfX3BhdGhfXyIsIE5vbmUpCisgICAgICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gaW1wb3J0bGliLmZpbmRfbG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGV4OgorICAgICAgICAjIFRoaXMgaGFjayBmaXhlcyBhbiBpbXBlZGFuY2UgbWlzbWF0Y2ggYmV0d2VlbiBwa2d1dGlsIGFuZAorICAgICAgICAjIGltcG9ydGxpYiwgd2hlcmUgdGhlIGxhdHRlciB0aHJvd3Mgb3RoZXIgZXJyb3JzIGZvciBjYXNlcyB3aGVyZQorICAgICAgICAjIHBrZ3V0aWwgcHJldmlvdXNseSB0aHJldyBJbXBvcnRFcnJvcgorICAgICAgICBtc2cgPSAiRXJyb3Igd2hpbGUgZmluZGluZyBsb2FkZXIgZm9yIHshcn0gKHt9OiB7fSkiCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQoZnVsbG5hbWUsIHR5cGUoZXgpLCBleCkpIGZyb20gZXgKIAogCiBkZWYgZXh0ZW5kX3BhdGgocGF0aCwgbmFtZSk6CkBAIC01MTQsMjEgKzU0OCw0MSBAQAogICAgICAgICAjIGZyb3plbiBwYWNrYWdlLiAgUmV0dXJuIHRoZSBwYXRoIHVuY2hhbmdlZCBpbiB0aGF0IGNhc2UuCiAgICAgICAgIHJldHVybiBwYXRoCiAKLSAgICBwbmFtZSA9IG9zLnBhdGguam9pbigqbmFtZS5zcGxpdCgnLicpKSAjIFJlY29uc3RpdHV0ZSBhcyByZWxhdGl2ZSBwYXRoCiAgICAgc25hbWVfcGtnID0gbmFtZSArICIucGtnIgotICAgIGluaXRfcHkgPSAiX19pbml0X18ucHkiCiAKICAgICBwYXRoID0gcGF0aFs6XSAjIFN0YXJ0IHdpdGggYSBjb3B5IG9mIHRoZSBleGlzdGluZyBwYXRoCiAKLSAgICBmb3IgZGlyIGluIHN5cy5wYXRoOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkaXIsIHN0cikgb3Igbm90IG9zLnBhdGguaXNkaXIoZGlyKToKKyAgICBwYXJlbnRfcGFja2FnZSwgXywgZmluYWxfbmFtZSA9IG5hbWUucnBhcnRpdGlvbignLicpCisgICAgaWYgcGFyZW50X3BhY2thZ2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlYXJjaF9wYXRoID0gc3lzLm1vZHVsZXNbcGFyZW50X3BhY2thZ2VdLl9fcGF0aF9fCisgICAgICAgIGV4Y2VwdCAoS2V5RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICMgV2UgY2FuJ3QgZG8gYW55dGhpbmc6IGZpbmRfbG9hZGVyKCkgcmV0dXJucyBOb25lIHdoZW4KKyAgICAgICAgICAgICMgcGFzc2VkIGEgZG90dGVkIG5hbWUuCisgICAgICAgICAgICByZXR1cm4gcGF0aAorICAgIGVsc2U6CisgICAgICAgIHNlYXJjaF9wYXRoID0gc3lzLnBhdGgKKworICAgIGZvciBkaXIgaW4gc2VhcmNoX3BhdGg6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRpciwgc3RyKToKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIHN1YmRpciA9IG9zLnBhdGguam9pbihkaXIsIHBuYW1lKQotICAgICAgICAjIFhYWCBUaGlzIG1heSBzdGlsbCBhZGQgZHVwbGljYXRlIGVudHJpZXMgdG8gcGF0aCBvbgotICAgICAgICAjIGNhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMKLSAgICAgICAgaW5pdGZpbGUgPSBvcy5wYXRoLmpvaW4oc3ViZGlyLCBpbml0X3B5KQotICAgICAgICBpZiBzdWJkaXIgbm90IGluIHBhdGggYW5kIG9zLnBhdGguaXNmaWxlKGluaXRmaWxlKToKLSAgICAgICAgICAgIHBhdGguYXBwZW5kKHN1YmRpcikKKworICAgICAgICBmaW5kZXIgPSBnZXRfaW1wb3J0ZXIoZGlyKQorICAgICAgICBpZiBmaW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIElzIHRoaXMgZmluZGVyIFBFUCA0MjAgY29tcGxpYW50PworICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX2xvYWRlcicpOgorICAgICAgICAgICAgICAgIGxvYWRlciwgcG9ydGlvbnMgPSBmaW5kZXIuZmluZF9sb2FkZXIoZmluYWxfbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBObywgbm8gbmVlZCB0byBjYWxsIGl0CisgICAgICAgICAgICAgICAgbG9hZGVyID0gTm9uZQorICAgICAgICAgICAgICAgIHBvcnRpb25zID0gW10KKworICAgICAgICAgICAgZm9yIHBvcnRpb24gaW4gcG9ydGlvbnM6CisgICAgICAgICAgICAgICAgIyBYWFggVGhpcyBtYXkgc3RpbGwgYWRkIGR1cGxpY2F0ZSBlbnRyaWVzIHRvIHBhdGggb24KKyAgICAgICAgICAgICAgICAjIGNhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMKKyAgICAgICAgICAgICAgICBpZiBwb3J0aW9uIG5vdCBpbiBwYXRoOgorICAgICAgICAgICAgICAgICAgICBwYXRoLmFwcGVuZChwb3J0aW9uKQorCiAgICAgICAgICMgWFhYIElzIHRoaXMgdGhlIHJpZ2h0IHRoaW5nIGZvciBzdWJwYWNrYWdlcyBsaWtlIHpvcGUuYXBwPwogICAgICAgICAjIEl0IGxvb2tzIGZvciBhIGZpbGUgbmFtZWQgInpvcGUuYXBwLnBrZyIKICAgICAgICAgcGtnZmlsZSA9IG9zLnBhdGguam9pbihkaXIsIHNuYW1lX3BrZykKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9DRFJPTS5weSBiL0xpYi9wbGF0LWxpbnV4L0NEUk9NLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvQ0RST00ucHkKcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L0NEUk9NLnB5CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eDIvRExGQ04ucHkgYi9MaWIvcGxhdC1saW51eC9ETEZDTi5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3BsYXQtbGludXgyL0RMRkNOLnB5CnJlbmFtZSB0byBMaWIvcGxhdC1saW51eC9ETEZDTi5weQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgyL0lOLnB5IGIvTGliL3BsYXQtbGludXgvSU4ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9wbGF0LWxpbnV4Mi9JTi5weQpyZW5hbWUgdG8gTGliL3BsYXQtbGludXgvSU4ucHkKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9UWVBFUy5weSBiL0xpYi9wbGF0LWxpbnV4L1RZUEVTLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvVFlQRVMucHkKcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L1RZUEVTLnB5CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eDIvcmVnZW4gYi9MaWIvcGxhdC1saW51eC9yZWdlbgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3BsYXQtbGludXgyL3JlZ2VuCnJlbmFtZSB0byBMaWIvcGxhdC1saW51eC9yZWdlbgpkaWZmIC0tZ2l0IGEvTGliL3BsYXRmb3JtLnB5IGIvTGliL3BsYXRmb3JtLnB5CmluZGV4IDk4NWE5ZjguLmI2NTM4MjIgMTAwNzU1Ci0tLSBhL0xpYi9wbGF0Zm9ybS5weQorKysgYi9MaWIvcGxhdGZvcm0ucHkKQEAgLTExMSw2ICsxMTEsNyBAQAogCiBfX3ZlcnNpb25fXyA9ICcxLjAuNycKIAoraW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgc3lzLCBvcywgcmUKIAogIyMjIEdsb2JhbHMgJiBDb25zdGFudHMKQEAgLTEzMCwxNSArMTMxLDE1IEBACiAKICMjIyBQbGF0Zm9ybSBzcGVjaWZpYyBBUElzCiAKLV9saWJjX3NlYXJjaCA9IHJlLmNvbXBpbGUocicoX19saWJjX2luaXQpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnfCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyhHTElCQ18oWzAtOS5dKykpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnfCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyhsaWJjKF9cdyspP1wuc28oPzpcLihcZFswLTkuXSopKT8pJywgcmUuQVNDSUkpCitfbGliY19zZWFyY2ggPSByZS5jb21waWxlKGInKF9fbGliY19pbml0KScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYid8JworICAgICAgICAgICAgICAgICAgICAgICAgICBiJyhHTElCQ18oWzAtOS5dKykpJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ3wnCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJyhsaWJjKF9cdyspP1wuc28oPzpcLihcZFswLTkuXSopKT8pJywgcmUuQVNDSUkpCiAKIGRlZiBsaWJjX3ZlcihleGVjdXRhYmxlPXN5cy5leGVjdXRhYmxlLGxpYj0nJyx2ZXJzaW9uPScnLAogCi0gICAgICAgICAgICAgY2h1bmtzaXplPTIwNDgpOgorICAgICAgICAgICAgIGNodW5rc2l6ZT0xNjM4NCk6CiAKICAgICAiIiIgVHJpZXMgdG8gZGV0ZXJtaW5lIHRoZSBsaWJjIHZlcnNpb24gdGhhdCB0aGUgZmlsZSBleGVjdXRhYmxlCiAgICAgICAgICh3aGljaCBkZWZhdWx0cyB0byB0aGUgUHl0aG9uIGludGVycHJldGVyKSBpcyBsaW5rZWQgYWdhaW5zdC4KQEAgLTE1OSwxNyArMTYwLDIyIEBACiAgICAgICAgICMgYWJsZSB0byBvcGVuIHN5bWxpbmtzIGZvciByZWFkaW5nCiAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5wYXRoLnJlYWxwYXRoKGV4ZWN1dGFibGUpCiAgICAgZiA9IG9wZW4oZXhlY3V0YWJsZSwncmInKQotICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpLmRlY29kZSgnbGF0aW4tMScpCisgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKICAgICBwb3MgPSAwCiAgICAgd2hpbGUgMToKLSAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LHBvcykKKyAgICAgICAgaWYgYidsaWJjJyBpbiBiaW5hcnkgb3IgYidHTElCQycgaW4gYmluYXJ5OgorICAgICAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LHBvcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG0gPSBOb25lCiAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkuZGVjb2RlKCdsYXRpbi0xJykKKyAgICAgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCiAgICAgICAgICAgICBpZiBub3QgYmluYXJ5OgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBwb3MgPSAwCiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBsaWJjaW5pdCxnbGliYyxnbGliY3ZlcnNpb24sc28sdGhyZWFkcyxzb3ZlcnNpb24gPSBtLmdyb3VwcygpCisgICAgICAgIGxpYmNpbml0LGdsaWJjLGdsaWJjdmVyc2lvbixzbyx0aHJlYWRzLHNvdmVyc2lvbiA9IFsKKyAgICAgICAgICAgIHMuZGVjb2RlKCdsYXRpbjEnKSBpZiBzIGlzIG5vdCBOb25lIGVsc2UgcworICAgICAgICAgICAgZm9yIHMgaW4gbS5ncm91cHMoKV0KICAgICAgICAgaWYgbGliY2luaXQgYW5kIG5vdCBsaWI6CiAgICAgICAgICAgICBsaWIgPSAnbGliYycKICAgICAgICAgZWxpZiBnbGliYzoKQEAgLTI1NSw3ICsyNjEsNyBAQAogX3N1cHBvcnRlZF9kaXN0cyA9ICgKICAgICAnU3VTRScsICdkZWJpYW4nLCAnZmVkb3JhJywgJ3JlZGhhdCcsICdjZW50b3MnLAogICAgICdtYW5kcmFrZScsICdtYW5kcml2YScsICdyb2NrcycsICdzbGFja3dhcmUnLCAneWVsbG93ZG9nJywgJ2dlbnRvbycsCi0gICAgJ1VuaXRlZExpbnV4JywgJ3R1cmJvbGludXgnKQorICAgICdVbml0ZWRMaW51eCcsICd0dXJib2xpbnV4JywgJ2FyY2gnLCAnbWFnZWlhJykKIAogZGVmIF9wYXJzZV9yZWxlYXNlX2ZpbGUoZmlyc3RsaW5lKToKIApAQCAtMzU3LDkyICszNjMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9kaXN0cz1zdXBwb3J0ZWRfZGlzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lPTApCiAKLWNsYXNzIF9wb3BlbjoKLQotICAgICIiIiBGYWlybHkgcG9ydGFibGUgKGFsdGVybmF0aXZlKSBwb3BlbiBpbXBsZW1lbnRhdGlvbi4KLQotICAgICAgICBUaGlzIGlzIG1vc3RseSBuZWVkZWQgaW4gY2FzZSBvcy5wb3BlbigpIGlzIG5vdCBhdmFpbGFibGUsIG9yCi0gICAgICAgIGRvZXNuJ3Qgd29yayBhcyBhZHZlcnRpc2VkLCBlLmcuIGluIFdpbjlYIEdVSSBwcm9ncmFtcyBsaWtlCi0gICAgICAgIFB5dGhvbldpbiBvciBJRExFLgotCi0gICAgICAgIFdyaXRpbmcgdG8gdGhlIHBpcGUgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCi0KLSAgICAiIiIKLSAgICB0bXBmaWxlID0gJycKLSAgICBwaXBlID0gTm9uZQotICAgIGJ1ZnNpemUgPSBOb25lCi0gICAgbW9kZSA9ICdyJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsY21kLG1vZGU9J3InLGJ1ZnNpemU9Tm9uZSk6Ci0KLSAgICAgICAgaWYgbW9kZSAhPSAncic6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdwb3BlbigpLWVtdWxhdGlvbiBvbmx5IHN1cHBvcnRzIHJlYWQgbW9kZScpCi0gICAgICAgIGltcG9ydCB0ZW1wZmlsZQotICAgICAgICBzZWxmLnRtcGZpbGUgPSB0bXBmaWxlID0gdGVtcGZpbGUubWt0ZW1wKCkKLSAgICAgICAgb3Muc3lzdGVtKGNtZCArICcgPiAlcycgJSB0bXBmaWxlKQotICAgICAgICBzZWxmLnBpcGUgPSBvcGVuKHRtcGZpbGUsJ3JiJykKLSAgICAgICAgc2VsZi5idWZzaXplID0gYnVmc2l6ZQotICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCi0KLSAgICBkZWYgcmVhZChzZWxmKToKLQotICAgICAgICByZXR1cm4gc2VsZi5waXBlLnJlYWQoKQotCi0gICAgZGVmIHJlYWRsaW5lcyhzZWxmKToKLQotICAgICAgICBpZiBzZWxmLmJ1ZnNpemUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5waXBlLnJlYWRsaW5lcygpCi0KLSAgICBkZWYgY2xvc2Uoc2VsZiwKLQotICAgICAgICAgICAgICByZW1vdmU9b3MudW5saW5rLGVycm9yPW9zLmVycm9yKToKLQotICAgICAgICBpZiBzZWxmLnBpcGU6Ci0gICAgICAgICAgICByYyA9IHNlbGYucGlwZS5jbG9zZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYyA9IDI1NQotICAgICAgICBpZiBzZWxmLnRtcGZpbGU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmVtb3ZlKHNlbGYudG1wZmlsZSkKLSAgICAgICAgICAgIGV4Y2VwdCBlcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiByYwotCi0gICAgIyBBbGlhcwotICAgIF9fZGVsX18gPSBjbG9zZQotCiBkZWYgcG9wZW4oY21kLCBtb2RlPSdyJywgYnVmc2l6ZT0tMSk6CiAKICAgICAiIiIgUG9ydGFibGUgcG9wZW4oKSBpbnRlcmZhY2UuCiAgICAgIiIiCi0gICAgIyBGaW5kIGEgd29ya2luZyBwb3BlbiBpbXBsZW1lbnRhdGlvbiBwcmVmZXJyaW5nIHdpbjMycGlwZS5wb3BlbgotICAgICMgb3ZlciBvcy5wb3BlbiBvdmVyIF9wb3BlbgotICAgIHBvcGVuID0gTm9uZQotICAgIGlmIG9zLmVudmlyb24uZ2V0KCdPUycsJycpID09ICdXaW5kb3dzX05UJzoKLSAgICAgICAgIyBPbiBOVCB3aW4zMnBpcGUgc2hvdWxkIHdvcms7IG9uIFdpbjl4IGl0IGhhbmdzIGR1ZSB0byBidWdzCi0gICAgICAgICMgaW4gdGhlIE1TIEMgbGliIChzZWUgTVMgS25vd2xlZGdlQmFzZSBhcnRpY2xlIFExNTA5NTYpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCB3aW4zMnBpcGUKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcG9wZW4gPSB3aW4zMnBpcGUucG9wZW4KLSAgICBpZiBwb3BlbiBpcyBOb25lOgotICAgICAgICBpZiBoYXNhdHRyKG9zLCdwb3BlbicpOgotICAgICAgICAgICAgcG9wZW4gPSBvcy5wb3BlbgotICAgICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGl0IHdvcmtzLi4uIGl0IGRvZXNuJ3QgaW4gR1VJIHByb2dyYW1zCi0gICAgICAgICAgICAjIG9uIFdpbmRvd3MgcGxhdGZvcm1zCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzogIyBYWFggT3RoZXJzIHRvbyA/Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBwb3BlbignJykKLSAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBvcGVuID0gX3BvcGVuCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwb3BlbiA9IF9wb3BlbgotICAgIGlmIGJ1ZnNpemUgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIHBvcGVuKGNtZCxtb2RlKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBwb3BlbihjbWQsbW9kZSxidWZzaXplKQorICAgIGltcG9ydCB3YXJuaW5ncworICAgIHdhcm5pbmdzLndhcm4oJ3VzZSBvcy5wb3BlbiBpbnN0ZWFkJywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgcmV0dXJuIG9zLnBvcGVuKGNtZCwgbW9kZSwgYnVmc2l6ZSkKIAogZGVmIF9ub3JtX3ZlcnNpb24odmVyc2lvbiwgYnVpbGQ9JycpOgogCkBAIC03NzQsNyArNzAxLDcgQEAKICAgICBwbCA9IHBsaXN0bGliLnJlYWRQbGlzdChmbikKICAgICByZWxlYXNlID0gcGxbJ1Byb2R1Y3RWZXJzaW9uJ10KICAgICB2ZXJzaW9uaW5mbz0oJycsICcnLCAnJykKLSAgICBtYWNoaW5lID0gb3MudW5hbWUoKVs0XQorICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpLm1hY2hpbmUKICAgICBpZiBtYWNoaW5lIGluICgncHBjJywgJ1Bvd2VyIE1hY2ludG9zaCcpOgogICAgICAgICAjIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGdlc3RhbHQgYmFzZWQgY29kZQogICAgICAgICBtYWNoaW5lID0gJ1Bvd2VyUEMnCkBAIC0xMTAxLDYgKzEwMjgsOSBAQAogCiAjIyMgUG9ydGFibGUgdW5hbWUoKSBpbnRlcmZhY2UKIAordW5hbWVfcmVzdWx0ID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgidW5hbWVfcmVzdWx0IiwKKyAgICAgICAgICAgICAgICAgICAgInN5c3RlbSBub2RlIHJlbGVhc2UgdmVyc2lvbiBtYWNoaW5lIHByb2Nlc3NvciIpCisKIF91bmFtZV9jYWNoZSA9IE5vbmUKIAogZGVmIHVuYW1lKCk6CkBAIC0xMjM1LDcgKzExNjUsNyBAQAogICAgICAgICBzeXN0ZW0gPSAnV2luZG93cycKICAgICAgICAgcmVsZWFzZSA9ICdWaXN0YScKIAotICAgIF91bmFtZV9jYWNoZSA9IHN5c3RlbSxub2RlLHJlbGVhc2UsdmVyc2lvbixtYWNoaW5lLHByb2Nlc3NvcgorICAgIF91bmFtZV9jYWNoZSA9IHVuYW1lX3Jlc3VsdChzeXN0ZW0sbm9kZSxyZWxlYXNlLHZlcnNpb24sbWFjaGluZSxwcm9jZXNzb3IpCiAgICAgcmV0dXJuIF91bmFtZV9jYWNoZQogCiAjIyMgRGlyZWN0IGludGVyZmFjZXMgdG8gc29tZSBvZiB0aGUgdW5hbWUoKSByZXR1cm4gdmFsdWVzCkBAIC0xMjQ3LDcgKzExNzcsNyBAQAogICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbMF0KKyAgICByZXR1cm4gdW5hbWUoKS5zeXN0ZW0KIAogZGVmIG5vZGUoKToKIApAQCAtMTI1Nyw3ICsxMTg3LDcgQEAKICAgICAgICAgQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzFdCisgICAgcmV0dXJuIHVuYW1lKCkubm9kZQogCiBkZWYgcmVsZWFzZSgpOgogCkBAIC0xMjY2LDcgKzExOTYsNyBAQAogICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbMl0KKyAgICByZXR1cm4gdW5hbWUoKS5yZWxlYXNlCiAKIGRlZiB2ZXJzaW9uKCk6CiAKQEAgLTEyNzUsNyArMTIwNSw3IEBACiAgICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVszXQorICAgIHJldHVybiB1bmFtZSgpLnZlcnNpb24KIAogZGVmIG1hY2hpbmUoKToKIApAQCAtMTI4NCw3ICsxMjE0LDcgQEAKICAgICAgICAgQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzRdCisgICAgcmV0dXJuIHVuYW1lKCkubWFjaGluZQogCiBkZWYgcHJvY2Vzc29yKCk6CiAKQEAgLTEyOTYsNyArMTIyNiw3IEBACiAgICAgICAgIGUuZy4gIE5ldEJTRCBkb2VzIHRoaXMuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVs1XQorICAgIHJldHVybiB1bmFtZSgpLnByb2Nlc3NvcgogCiAjIyMgVmFyaW91cyBBUElzIGZvciBleHRyYWN0aW5nIGluZm9ybWF0aW9uIGZyb20gc3lzLnZlcnNpb24KIApkaWZmIC0tZ2l0IGEvTGliL3BsaXN0bGliLnB5IGIvTGliL3BsaXN0bGliLnB5CmluZGV4IDJlN2U1MTIuLjQxZmQ4ZjIgMTAwNjQ0Ci0tLSBhL0xpYi9wbGlzdGxpYi5weQorKysgYi9MaWIvcGxpc3RsaWIucHkKQEAgLTIzNywyMCArMjM3LDI2IEBACiAgICAgICAgIHNlbGYuZW5kRWxlbWVudCgiZGF0YSIpCiAKICAgICBkZWYgd3JpdGVEaWN0KHNlbGYsIGQpOgotICAgICAgICBzZWxmLmJlZ2luRWxlbWVudCgiZGljdCIpCi0gICAgICAgIGl0ZW1zID0gc29ydGVkKGQuaXRlbXMoKSkKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlbXM6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShrZXksIHN0cik6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJrZXlzIG11c3QgYmUgc3RyaW5ncyIpCi0gICAgICAgICAgICBzZWxmLnNpbXBsZUVsZW1lbnQoImtleSIsIGtleSkKLSAgICAgICAgICAgIHNlbGYud3JpdGVWYWx1ZSh2YWx1ZSkKLSAgICAgICAgc2VsZi5lbmRFbGVtZW50KCJkaWN0IikKKyAgICAgICAgaWYgZDoKKyAgICAgICAgICAgIHNlbGYuYmVnaW5FbGVtZW50KCJkaWN0IikKKyAgICAgICAgICAgIGl0ZW1zID0gc29ydGVkKGQuaXRlbXMoKSkKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZW1zOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGtleSwgc3RyKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJrZXlzIG11c3QgYmUgc3RyaW5ncyIpCisgICAgICAgICAgICAgICAgc2VsZi5zaW1wbGVFbGVtZW50KCJrZXkiLCBrZXkpCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZVZhbHVlKHZhbHVlKQorICAgICAgICAgICAgc2VsZi5lbmRFbGVtZW50KCJkaWN0IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2ltcGxlRWxlbWVudCgiZGljdCIpCiAKICAgICBkZWYgd3JpdGVBcnJheShzZWxmLCBhcnJheSk6Ci0gICAgICAgIHNlbGYuYmVnaW5FbGVtZW50KCJhcnJheSIpCi0gICAgICAgIGZvciB2YWx1ZSBpbiBhcnJheToKLSAgICAgICAgICAgIHNlbGYud3JpdGVWYWx1ZSh2YWx1ZSkKLSAgICAgICAgc2VsZi5lbmRFbGVtZW50KCJhcnJheSIpCisgICAgICAgIGlmIGFycmF5OgorICAgICAgICAgICAgc2VsZi5iZWdpbkVsZW1lbnQoImFycmF5IikKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBhcnJheToKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlVmFsdWUodmFsdWUpCisgICAgICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImFycmF5IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2ltcGxlRWxlbWVudCgiYXJyYXkiKQogCiAKIGNsYXNzIF9JbnRlcm5hbERpY3QoZGljdCk6CkBAIC0yNjYsMTMgKzI3MiwxMyBAQAogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoYXR0cikKICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICB3YXJuKCJBdHRyaWJ1dGUgYWNjZXNzIGZyb20gcGxpc3QgZGljdHMgaXMgZGVwcmVjYXRlZCwgdXNlIGRba2V5XSAiCi0gICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICJub3RhdGlvbiBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gdmFsdWUKIAogICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBhdHRyLCB2YWx1ZSk6CiAgICAgICAgIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KICAgICAgICAgd2FybigiQXR0cmlidXRlIGFjY2VzcyBmcm9tIHBsaXN0IGRpY3RzIGlzIGRlcHJlY2F0ZWQsIHVzZSBkW2tleV0gIgotICAgICAgICAgICAgICJub3RhdGlvbiBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZlthdHRyXSA9IHZhbHVlCiAKICAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgYXR0cik6CkBAIC0yODIsMTQgKzI4OCwxNCBAQAogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoYXR0cikKICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICB3YXJuKCJBdHRyaWJ1dGUgYWNjZXNzIGZyb20gcGxpc3QgZGljdHMgaXMgZGVwcmVjYXRlZCwgdXNlIGRba2V5XSAiCi0gICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICJub3RhdGlvbiBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogCiBjbGFzcyBEaWN0KF9JbnRlcm5hbERpY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICB3YXJuKCJUaGUgcGxpc3RsaWIuRGljdCBjbGFzcyBpcyBkZXByZWNhdGVkLCB1c2UgYnVpbHRpbiBkaWN0IGluc3RlYWQiLAotICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogCiAKQEAgLTMwMiw3ICszMDgsNyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KICAgICAgICAgd2FybigiVGhlIFBsaXN0IGNsYXNzIGlzIGRlcHJlY2F0ZWQsIHVzZSB0aGUgcmVhZFBsaXN0KCkgYW5kICIKLSAgICAgICAgICAgICAid3JpdGVQbGlzdCgpIGZ1bmN0aW9ucyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICAid3JpdGVQbGlzdCgpIGZ1bmN0aW9ucyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogCiAgICAgZGVmIGZyb21GaWxlKGNscywgcGF0aE9yRmlsZSk6CmRpZmYgLS1naXQgYS9MaWIvcG9wbGliLnB5IGIvTGliL3BvcGxpYi5weQppbmRleCA4NGVhODhkLi5kNDJkOWRkIDEwMDY0NAotLS0gYS9MaWIvcG9wbGliLnB5CisrKyBiL0xpYi9wb3BsaWIucHkKQEAgLTI1MCwxNSArMjUwLDE4IEBACiAKICAgICBkZWYgcXVpdChzZWxmKToKICAgICAgICAgIiIiU2lnbm9mZjogY29tbWl0IGNoYW5nZXMgb24gc2VydmVyLCB1bmxvY2sgbWFpbGJveCwgY2xvc2UgY29ubmVjdGlvbi4iIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKCdRVUlUJykKLSAgICAgICAgZXhjZXB0IGVycm9yX3Byb3RvIGFzIHZhbDoKLSAgICAgICAgICAgIHJlc3AgPSB2YWwKLSAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKLSAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKLSAgICAgICAgZGVsIHNlbGYuZmlsZSwgc2VsZi5zb2NrCisgICAgICAgIHJlc3AgPSBzZWxmLl9zaG9ydGNtZCgnUVVJVCcpCisgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICByZXR1cm4gcmVzcAogCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJDbG9zZSB0aGUgY29ubmVjdGlvbiB3aXRob3V0IGFzc3VtaW5nIGFueXRoaW5nIGFib3V0IGl0LiIiIgorICAgICAgICBpZiBzZWxmLmZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQorICAgICAgICBpZiBzZWxmLnNvY2sgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQorICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2sgPSBOb25lCisKICAgICAjX19kZWxfXyA9IHF1aXQKIAogCmRpZmYgLS1naXQgYS9MaWIvcG9zaXhwYXRoLnB5IGIvTGliL3Bvc2l4cGF0aC5weQppbmRleCAyZTM2MjViLi5jYjkzNzk2IDEwMDY0NAotLS0gYS9MaWIvcG9zaXhwYXRoLnB5CisrKyBiL0xpYi9wb3NpeHBhdGgucHkKQEAgLTg4LDcgKzg4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gKGEsICkgKyBwKQogICAgICAgICBpZiB2YWxpZF90eXBlczoKICAgICAgICAgICAgICMgTXVzdCBoYXZlIGEgbWl4dHVyZSBvZiB0ZXh0IGFuZCBiaW5hcnkgZGF0YQotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBtaXggc3RyaW5ncyBhbmQgYnl0ZXMgaW4gcGF0aCBjb21wb25lbnRzLiIpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IG1peCBzdHJpbmdzIGFuZCBieXRlcyBpbiBwYXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcG9uZW50cy4iKSBmcm9tIE5vbmUKICAgICAgICAgcmFpc2UKICAgICByZXR1cm4gcGF0aAogCmRpZmYgLS1naXQgYS9MaWIvcHJvZmlsZS5weSBiL0xpYi9wcm9maWxlLnB5CmluZGV4IDI5N2UzMmQuLjc0M2U3N2QgMTAwNzU1Ci0tLSBhL0xpYi9wcm9maWxlLnB5CisrKyBiL0xpYi9wcm9maWxlLnB5CkBAIC04MywyNiArODMsNiBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBwcm9mLnByaW50X3N0YXRzKHNvcnQpCiAKLWlmIGhhc2F0dHIob3MsICJ0aW1lcyIpOgotICAgIGRlZiBfZ2V0X3RpbWVfdGltZXModGltZXI9b3MudGltZXMpOgotICAgICAgICB0ID0gdGltZXIoKQotICAgICAgICByZXR1cm4gdFswXSArIHRbMV0KLQotIyBVc2luZyBnZXRydXNhZ2UoMykgaXMgYmV0dGVyIHRoYW4gY2xvY2soMykgaWYgYXZhaWxhYmxlOgotIyBvbiBzb21lIHN5c3RlbXMgKGUuZy4gRnJlZUJTRCksIGdldHJ1c2FnZSBoYXMgYSBoaWdoZXIgcmVzb2x1dGlvbgotIyBGdXJ0aGVybW9yZSwgb24gYSBQT1NJWCBzeXN0ZW0sIHJldHVybnMgbWljcm9zZWNvbmRzLCB3aGljaAotIyB3cmFwIGFyb3VuZCBhZnRlciAzNm1pbi4KLV9oYXNfcmVzID0gMAotdHJ5OgotICAgIGltcG9ydCByZXNvdXJjZQotICAgIHJlc2dldHJ1c2FnZSA9IGxhbWJkYTogcmVzb3VyY2UuZ2V0cnVzYWdlKHJlc291cmNlLlJVU0FHRV9TRUxGKQotICAgIGRlZiBfZ2V0X3RpbWVfcmVzb3VyY2UodGltZXI9cmVzZ2V0cnVzYWdlKToKLSAgICAgICAgdCA9IHRpbWVyKCkKLSAgICAgICAgcmV0dXJuIHRbMF0gKyB0WzFdCi0gICAgX2hhc19yZXMgPSAxCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotCiBjbGFzcyBQcm9maWxlOgogICAgICIiIlByb2ZpbGVyIGNsYXNzLgogCkBAIC0xNTUsMjAgKzEzNSw4IEBACiAgICAgICAgIHNlbGYuYmlhcyA9IGJpYXMgICAgICMgTWF0ZXJpYWxpemUgaW4gbG9jYWwgZGljdCBmb3IgbG9va3VwIHNwZWVkLgogCiAgICAgICAgIGlmIG5vdCB0aW1lcjoKLSAgICAgICAgICAgIGlmIF9oYXNfcmVzOgotICAgICAgICAgICAgICAgIHNlbGYudGltZXIgPSByZXNnZXRydXNhZ2UKLSAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBzZWxmLnRyYWNlX2Rpc3BhdGNoCi0gICAgICAgICAgICAgICAgc2VsZi5nZXRfdGltZSA9IF9nZXRfdGltZV9yZXNvdXJjZQotICAgICAgICAgICAgZWxpZiBoYXNhdHRyKHRpbWUsICdjbG9jaycpOgotICAgICAgICAgICAgICAgIHNlbGYudGltZXIgPSBzZWxmLmdldF90aW1lID0gdGltZS5jbG9jawotICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2hfaQotICAgICAgICAgICAgZWxpZiBoYXNhdHRyKG9zLCAndGltZXMnKToKLSAgICAgICAgICAgICAgICBzZWxmLnRpbWVyID0gb3MudGltZXMKLSAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBzZWxmLnRyYWNlX2Rpc3BhdGNoCi0gICAgICAgICAgICAgICAgc2VsZi5nZXRfdGltZSA9IF9nZXRfdGltZV90aW1lcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnRpbWVyID0gc2VsZi5nZXRfdGltZSA9IHRpbWUudGltZQotICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2hfaQorICAgICAgICAgICAgc2VsZi50aW1lciA9IHNlbGYuZ2V0X3RpbWUgPSB0aW1lLnByb2Nlc3NfdGltZQorICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaF9pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnRpbWVyID0gdGltZXIKICAgICAgICAgICAgIHQgPSBzZWxmLnRpbWVyKCkgIyB0ZXN0IG91dCB0aW1lciBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvTGliL3BzdGF0cy5weSBiL0xpYi9wc3RhdHMucHkKaW5kZXggM2YwYWRkMi4uMTNkOTQ0YyAxMDA2NDQKLS0tIGEvTGliL3BzdGF0cy5weQorKysgYi9MaWIvcHN0YXRzLnB5CkBAIC02NzQsMTMgKzY3NCwxNCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBzdG9wCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgaW1wb3J0IHN5cwogICAgIGlmIGxlbihzeXMuYXJndikgPiAxOgogICAgICAgICBpbml0cHJvZmlsZSA9IHN5cy5hcmd2WzFdCiAgICAgZWxzZToKICAgICAgICAgaW5pdHByb2ZpbGUgPSBOb25lCiAgICAgdHJ5OgogICAgICAgICBicm93c2VyID0gUHJvZmlsZUJyb3dzZXIoaW5pdHByb2ZpbGUpCisgICAgICAgIGZvciBwcm9maWxlIGluIHN5cy5hcmd2WzI6XToKKyAgICAgICAgICAgIGJyb3dzZXIuZG9fYWRkKHByb2ZpbGUpCiAgICAgICAgIHByaW50KCJXZWxjb21lIHRvIHRoZSBwcm9maWxlIHN0YXRpc3RpY3MgYnJvd3Nlci4iLCBmaWxlPWJyb3dzZXIuc3RyZWFtKQogICAgICAgICBicm93c2VyLmNtZGxvb3AoKQogICAgICAgICBwcmludCgiR29vZGJ5ZS4iLCBmaWxlPWJyb3dzZXIuc3RyZWFtKQpkaWZmIC0tZ2l0IGEvTGliL3B5X2NvbXBpbGUucHkgYi9MaWIvcHlfY29tcGlsZS5weQppbmRleCA1YWRiNzBhLi42MmQ2OWFkIDEwMDY0NAotLS0gYS9MaWIvcHlfY29tcGlsZS5weQorKysgYi9MaWIvcHlfY29tcGlsZS5weQpAQCAtMTEwLDkgKzExMCwxMSBAQAogICAgICIiIgogICAgIHdpdGggdG9rZW5pemUub3BlbihmaWxlKSBhcyBmOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW1lc3RhbXAgPSBpbnQob3MuZnN0YXQoZi5maWxlbm8oKSkuc3RfbXRpbWUpCisgICAgICAgICAgICBzdCA9IG9zLmZzdGF0KGYuZmlsZW5vKCkpCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludChvcy5zdGF0KGZpbGUpLnN0X210aW1lKQorICAgICAgICAgICAgc3QgPSBvcy5zdGF0KGZpbGUpCisgICAgICAgIHRpbWVzdGFtcCA9IGludChzdC5zdF9tdGltZSkKKyAgICAgICAgc2l6ZSA9IHN0LnN0X3NpemUgJiAweEZGRkZGRkZGCiAgICAgICAgIGNvZGVzdHJpbmcgPSBmLnJlYWQoKQogICAgIHRyeToKICAgICAgICAgY29kZW9iamVjdCA9IGJ1aWx0aW5zLmNvbXBpbGUoY29kZXN0cmluZywgZGZpbGUgb3IgZmlsZSwgJ2V4ZWMnLApAQCAtMTM5LDYgKzE0MSw3IEBACiAgICAgd2l0aCBvcGVuKGNmaWxlLCAnd2InKSBhcyBmYzoKICAgICAgICAgZmMud3JpdGUoYidcMFwwXDBcMCcpCiAgICAgICAgIHdyX2xvbmcoZmMsIHRpbWVzdGFtcCkKKyAgICAgICAgd3JfbG9uZyhmYywgc2l6ZSkKICAgICAgICAgbWFyc2hhbC5kdW1wKGNvZGVvYmplY3QsIGZjKQogICAgICAgICBmYy5mbHVzaCgpCiAgICAgICAgIGZjLnNlZWsoMCwgMCkKZGlmZiAtLWdpdCBhL0xpYi9weWNsYnIucHkgYi9MaWIvcHljbGJyLnB5CmluZGV4IDY1ZTlmYmUuLjllYzA1ZWUgMTAwNjQ0Ci0tLSBhL0xpYi9weWNsYnIucHkKKysrIGIvTGliL3B5Y2xici5weQpAQCAtMzksOCArMzksMTAgQEAKICAgICAgICAgbGluZW5vIC0tIHRoZSBsaW5lIGluIHRoZSBmaWxlIG9uIHdoaWNoIHRoZSBjbGFzcyBzdGF0ZW1lbnQgb2NjdXJyZWQKICIiIgogCitpbXBvcnQgaW8KK2ltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHRva2VuaXplCiBmcm9tIHRva2VuIGltcG9ydCBOQU1FLCBERURFTlQsIE9QCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCkBAIC0xMzUsMTkgKzEzNywyNCBAQAogICAgICMgU2VhcmNoIHRoZSBwYXRoIGZvciB0aGUgbW9kdWxlCiAgICAgZiA9IE5vbmUKICAgICBpZiBpbnBhY2thZ2UgaXMgbm90IE5vbmU6Ci0gICAgICAgIGYsIGZuYW1lLCAoX3MsIF9tLCB0eSkgPSBpbXAuZmluZF9tb2R1bGUobW9kdWxlLCBwYXRoKQorICAgICAgICBzZWFyY2hfcGF0aCA9IHBhdGgKICAgICBlbHNlOgotICAgICAgICBmLCBmbmFtZSwgKF9zLCBfbSwgdHkpID0gaW1wLmZpbmRfbW9kdWxlKG1vZHVsZSwgcGF0aCArIHN5cy5wYXRoKQotICAgIGlmIHR5ID09IGltcC5QS0dfRElSRUNUT1JZOgotICAgICAgICBkaWN0WydfX3BhdGhfXyddID0gW2ZuYW1lXQotICAgICAgICBwYXRoID0gW2ZuYW1lXSArIHBhdGgKLSAgICAgICAgZiwgZm5hbWUsIChfcywgX20sIHR5KSA9IGltcC5maW5kX21vZHVsZSgnX19pbml0X18nLCBbZm5hbWVdKQorICAgICAgICBzZWFyY2hfcGF0aCA9IHBhdGggKyBzeXMucGF0aAorICAgIGxvYWRlciA9IGltcG9ydGxpYi5maW5kX2xvYWRlcihmdWxsbW9kdWxlLCBzZWFyY2hfcGF0aCkKKyAgICBmbmFtZSA9IGxvYWRlci5nZXRfZmlsZW5hbWUoZnVsbG1vZHVsZSkKICAgICBfbW9kdWxlc1tmdWxsbW9kdWxlXSA9IGRpY3QKLSAgICBpZiB0eSAhPSBpbXAuUFlfU09VUkNFOgorICAgIGlmIGxvYWRlci5pc19wYWNrYWdlKGZ1bGxtb2R1bGUpOgorICAgICAgICBkaWN0WydfX3BhdGhfXyddID0gW29zLnBhdGguZGlybmFtZShmbmFtZSldCisgICAgdHJ5OgorICAgICAgICBzb3VyY2UgPSBsb2FkZXIuZ2V0X3NvdXJjZShmdWxsbW9kdWxlKQorICAgICAgICBpZiBzb3VyY2UgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBkaWN0CisgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgSW1wb3J0RXJyb3IpOgogICAgICAgICAjIG5vdCBQeXRob24gc291cmNlLCBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIHRoaXMgbW9kdWxlCi0gICAgICAgIGYuY2xvc2UoKQogICAgICAgICByZXR1cm4gZGljdAogCisgICAgZiA9IGlvLlN0cmluZ0lPKHNvdXJjZSkKKwogICAgIHN0YWNrID0gW10gIyBzdGFjayBvZiAoY2xhc3MsIGluZGVudCkgcGFpcnMKIAogICAgIGcgPSB0b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoZi5yZWFkbGluZSkKZGlmZiAtLWdpdCBhL0xpYi9weWRvYy5weSBiL0xpYi9weWRvYy5weQppbmRleCAzNzYxNmZiLi5hYTI5NmM0IDEwMDc1NQotLS0gYS9MaWIvcHlkb2MucHkKKysrIGIvTGliL3B5ZG9jLnB5CkBAIC0xLDcgKzEsNyBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIiIiR2VuZXJhdGUgUHl0aG9uIGRvY3VtZW50YXRpb24gaW4gSFRNTCBvciB0ZXh0IGZvciBpbnRlcmFjdGl2ZSB1c2UuCiAKLUluIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIGRvICJmcm9tIHB5ZG9jIGltcG9ydCBoZWxwIiB0byBwcm92aWRlIG9ubGluZQorSW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgZG8gImZyb20gcHlkb2MgaW1wb3J0IGhlbHAiIHRvIHByb3ZpZGUKIGhlbHAuICBDYWxsaW5nIGhlbHAodGhpbmcpIG9uIGEgUHl0aG9uIG9iamVjdCBkb2N1bWVudHMgdGhlIG9iamVjdC4KIAogT3IsIGF0IHRoZSBzaGVsbCBjb21tYW5kIGxpbmUgb3V0c2lkZSBvZiBQeXRob246CkBAIC0yMiwxMSArMjIsNiBAQAogb3BlbiBhIFdlYiBicm93c2VyIHRvIGludGVyYWN0aXZlbHkgYnJvd3NlIGRvY3VtZW50YXRpb24uICBUaGUgLXAgb3B0aW9uCiBjYW4gYmUgdXNlZCB3aXRoIHRoZSAtYiBvcHRpb24gdG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSBzZXJ2ZXIgcG9ydC4KIAotRm9yIHBsYXRmb3JtcyB3aXRob3V0IGEgY29tbWFuZCBsaW5lLCAicHlkb2MgLWciIHN0YXJ0cyB0aGUgSFRUUCBzZXJ2ZXIKLWFuZCBhbHNvIHBvcHMgdXAgYSBsaXR0bGUgd2luZG93IGZvciBjb250cm9sbGluZyBpdC4gIFRoaXMgb3B0aW9uIGlzCi1kZXByZWNhdGVkLCBzaW5jZSB0aGUgc2VydmVyIGNhbiBub3cgYmUgY29udHJvbGxlZCBkaXJlY3RseSBmcm9tIEhUVFAKLWNsaWVudHMuCi0KIFJ1biAicHlkb2MgLXcgPG5hbWU+IiB0byB3cml0ZSBvdXQgdGhlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgYSBtb2R1bGUKIHRvIGEgZmlsZSBuYW1lZCAiPG5hbWU+Lmh0bWwiLgogCkBAIC00Miw3ICszNyw2IEBACiBfX2F1dGhvcl9fID0gIkthLVBpbmcgWWVlIDxwaW5nQGxmdy5vcmc+IgogX19kYXRlX18gPSAiMjYgRmVicnVhcnkgMjAwMSIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKIF9fY3JlZGl0c19fID0gIiIiR3VpZG8gdmFuIFJvc3N1bSwgZm9yIGFuIGV4Y2VsbGVudCBwcm9ncmFtbWluZyBsYW5ndWFnZS4KIFRvbW15IEJ1cm5ldHRlLCB0aGUgb3JpZ2luYWwgY3JlYXRvciBvZiBtYW5weS4KIFBhdWwgUHJlc2NvZCwgZm9yIGFsbCBoaXMgd29yayBvbiBvbmxpbmVoZWxwLgpAQCAtNTksNiArNTMsNyBAQAogCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKQEAgLTE2OCwxMiArMTYzLDEyIEBACiAKIGRlZiB2aXNpYmxlbmFtZShuYW1lLCBhbGw9Tm9uZSwgb2JqPU5vbmUpOgogICAgICIiIkRlY2lkZSB3aGV0aGVyIHRvIHNob3cgZG9jdW1lbnRhdGlvbiBvbiBhIHZhcmlhYmxlLiIiIgotICAgICMgQ2VydGFpbiBzcGVjaWFsIG5hbWVzIGFyZSByZWR1bmRhbnQuCi0gICAgX2hpZGRlbl9uYW1lcyA9ICgnX19idWlsdGluc19fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19wYXRoX18nLAotICAgICAgICAgICAgICAgICAgICAgJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19zbG90c19fJywgJ19fcGFja2FnZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICdfX2NhY2hlZF9fJywgJ19fYXV0aG9yX18nLCAnX19jcmVkaXRzX18nLCAnX19kYXRlX18nLAotICAgICAgICAgICAgICAgICAgICAgJ19fdmVyc2lvbl9fJykKLSAgICBpZiBuYW1lIGluIF9oaWRkZW5fbmFtZXM6IHJldHVybiAwCisgICAgIyBDZXJ0YWluIHNwZWNpYWwgbmFtZXMgYXJlIHJlZHVuZGFudCBvciBpbnRlcm5hbC4KKyAgICBpZiBuYW1lIGluIHsnX19hdXRob3JfXycsICdfX2J1aWx0aW5zX18nLCAnX19jYWNoZWRfXycsICdfX2NyZWRpdHNfXycsCisgICAgICAgICAgICAgICAgJ19fZGF0ZV9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19pbml0aWFsaXppbmdfXycsCisgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nLCAnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsCisgICAgICAgICAgICAgICAgJ19fcGF0aF9fJywgJ19fcXVhbG5hbWVfXycsICdfX3Nsb3RzX18nLCAnX192ZXJzaW9uX18nfToKKyAgICAgICAgcmV0dXJuIDAKICAgICAjIFByaXZhdGUgbmFtZXMgYXJlIGhpZGRlbiwgYnV0IHNwZWNpYWwgbmFtZXMgYXJlIGRpc3BsYXllZC4KICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ19fJykgYW5kIG5hbWUuZW5kc3dpdGgoJ19fJyk6IHJldHVybiAxCiAgICAgIyBOYW1lZHR1cGxlcyBoYXZlIHB1YmxpYyBmaWVsZHMgYW5kIG1ldGhvZHMgd2l0aCBhIHNpbmdsZSBsZWFkaW5nIHVuZGVyc2NvcmUKQEAgLTIyNiwyMCArMjIxLDM0IEBACiAgICAgbXRpbWUgPSBvcy5zdGF0KGZpbGVuYW1lKS5zdF9tdGltZQogICAgIGxhc3R1cGRhdGUsIHJlc3VsdCA9IGNhY2hlLmdldChmaWxlbmFtZSwgKE5vbmUsIE5vbmUpKQogICAgIGlmIGxhc3R1cGRhdGUgaXMgTm9uZSBvciBsYXN0dXBkYXRlIDwgbXRpbWU6Ci0gICAgICAgIGluZm8gPSBpbnNwZWN0LmdldG1vZHVsZWluZm8oZmlsZW5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZpbGUgPSB0b2tlbml6ZS5vcGVuKGZpbGVuYW1lKQogICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAgICMgbW9kdWxlIGNhbid0IGJlIG9wZW5lZCwgc28gc2tpcCBpdAogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgaWYgaW5mbyBhbmQgJ2InIGluIGluZm9bMl06ICMgYmluYXJ5IG1vZHVsZXMgaGF2ZSB0byBiZSBpbXBvcnRlZAotICAgICAgICAgICAgdHJ5OiBtb2R1bGUgPSBpbXAubG9hZF9tb2R1bGUoJ19fdGVtcF9fJywgZmlsZSwgZmlsZW5hbWUsIGluZm9bMTpdKQotICAgICAgICAgICAgZXhjZXB0OiByZXR1cm4gTm9uZQorICAgICAgICBiaW5hcnlfc3VmZml4ZXMgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTWzpdCisgICAgICAgIGJpbmFyeV9zdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFU1s6XQorICAgICAgICBpZiBhbnkoZmlsZW5hbWUuZW5kc3dpdGgoeCkgZm9yIHggaW4gYmluYXJ5X3N1ZmZpeGVzKToKKyAgICAgICAgICAgICMgYmluYXJ5IG1vZHVsZXMgaGF2ZSB0byBiZSBpbXBvcnRlZAorICAgICAgICAgICAgZmlsZS5jbG9zZSgpCisgICAgICAgICAgICBpZiBhbnkoZmlsZW5hbWUuZW5kc3dpdGgoeCkgZm9yIHggaW4KKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFUyk6CisgICAgICAgICAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcignX190ZW1wX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcignX190ZW1wX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ19fdGVtcF9fJykKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgcmVzdWx0ID0gKG1vZHVsZS5fX2RvY19fIG9yICcnKS5zcGxpdGxpbmVzKClbMF0KICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1snX190ZW1wX18nXQotICAgICAgICBlbHNlOiAjIHRleHQgbW9kdWxlcyBjYW4gYmUgZGlyZWN0bHkgZXhhbWluZWQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgdGV4dCBtb2R1bGVzIGNhbiBiZSBkaXJlY3RseSBleGFtaW5lZAogICAgICAgICAgICAgcmVzdWx0ID0gc291cmNlX3N5bm9wc2lzKGZpbGUpCiAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKKwogICAgICAgICBjYWNoZVtmaWxlbmFtZV0gPSAobXRpbWUsIHJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0CiAKQEAgLTMwNSw5ICszMTQsOCBAQAogICAgICAgICBlbGlmIGV4YyBpcyBTeW50YXhFcnJvcjoKICAgICAgICAgICAgICMgQSBTeW50YXhFcnJvciBvY2N1cnJlZCBiZWZvcmUgd2UgY291bGQgZXhlY3V0ZSB0aGUgbW9kdWxlLgogICAgICAgICAgICAgcmFpc2UgRXJyb3JEdXJpbmdJbXBvcnQodmFsdWUuZmlsZW5hbWUsIGluZm8pCi0gICAgICAgIGVsaWYgZXhjIGlzIEltcG9ydEVycm9yIGFuZCBleHRyYWN0X3RiKHRiKVstMV1bMl09PSdzYWZlaW1wb3J0JzoKLSAgICAgICAgICAgICMgVGhlIGltcG9ydCBlcnJvciBvY2N1cnJlZCBkaXJlY3RseSBpbiB0aGlzIGZ1bmN0aW9uLAotICAgICAgICAgICAgIyB3aGljaCBtZWFucyB0aGVyZSBpcyBubyBzdWNoIG1vZHVsZSBpbiB0aGUgcGF0aC4KKyAgICAgICAgZWxpZiBleGMgaXMgSW1wb3J0RXJyb3IgYW5kIHZhbHVlLm5hbWUgPT0gcGF0aDoKKyAgICAgICAgICAgICMgTm8gc3VjaCBtb2R1bGUgaW4gdGhlIHBhdGguCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBTb21lIG90aGVyIGVycm9yIG9jY3VycmVkIGR1cmluZyB0aGUgaW1wb3J0aW5nIHByb2Nlc3MuCkBAIC0zNjEsNyArMzY5LDcgQEAKIAogICAgICAgICBkb2Nsb2MgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9ORE9DUyIsIHNlbGYuUFlUSE9ORE9DUykKIAotICAgICAgICBiYXNlZGlyID0gb3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgImxpYiIsCisgICAgICAgIGJhc2VkaXIgPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICJsaWIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24lZC4lZCIgJSAgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgICAgIGlmIChpc2luc3RhbmNlKG9iamVjdCwgdHlwZShvcykpIGFuZAogICAgICAgICAgICAgKG9iamVjdC5fX25hbWVfXyBpbiAoJ2Vycm5vJywgJ2V4Y2VwdGlvbnMnLCAnZ2MnLCAnaW1wJywKQEAgLTk2Myw2ICs5NzEsOSBAQAogICAgICAgICBtb2Rwa2dzID0gW10KICAgICAgICAgaWYgc2hhZG93ZWQgaXMgTm9uZTogc2hhZG93ZWQgPSB7fQogICAgICAgICBmb3IgaW1wb3J0ZXIsIG5hbWUsIGlzcGtnIGluIHBrZ3V0aWwuaXRlcl9tb2R1bGVzKFtkaXJdKToKKyAgICAgICAgICAgIGlmIGFueSgoMHhEODAwIDw9IG9yZChjaCkgPD0gMHhERkZGKSBmb3IgY2ggaW4gbmFtZSk6CisgICAgICAgICAgICAgICAgIyBpZ25vcmUgYSBtb2R1bGUgaWYgaXRzIG5hbWUgY29udGFpbnMgYSBzdXJyb2dhdGUgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIG1vZHBrZ3MuYXBwZW5kKChuYW1lLCAnJywgaXNwa2csIG5hbWUgaW4gc2hhZG93ZWQpKQogICAgICAgICAgICAgc2hhZG93ZWRbbmFtZV0gPSAxCiAKQEAgLTE4MjcsNyArMTgzOCw3IEBACiAKICAgICBkZWYgaW50cm8oc2VsZik6CiAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCcnJwotV2VsY29tZSB0byBQeXRob24gJXMhICBUaGlzIGlzIHRoZSBvbmxpbmUgaGVscCB1dGlsaXR5LgorV2VsY29tZSB0byBQeXRob24gJXMhICBUaGlzIGlzIHRoZSBpbnRlcmFjdGl2ZSBoZWxwIHV0aWxpdHkuCiAKIElmIHRoaXMgaXMgeW91ciBmaXJzdCB0aW1lIHVzaW5nIFB5dGhvbiwgeW91IHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIG91dAogdGhlIHR1dG9yaWFsIG9uIHRoZSBJbnRlcm5ldCBhdCBodHRwOi8vZG9jcy5weXRob24ub3JnLyVzL3R1dG9yaWFsLy4KQEAgLTIwMTgsMTQgKzIwMjksNiBAQAogICAgICAgICAgICAgaWYgc2VsZi5xdWl0OgogICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgICAgICMgWFhYIFNraXBwaW5nIHRoaXMgZmlsZSBpcyBhIHdvcmthcm91bmQgZm9yIGEgYnVnCi0gICAgICAgICAgICAjIHRoYXQgY2F1c2VzIHB5dGhvbiB0byBjcmFzaCB3aXRoIGEgc2VnZmF1bHQuCi0gICAgICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU5MzE5Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIFRPRE8gUmVtb3ZlIHRoaXMgb25jZSB0aGUgYnVnIGlzIGZpeGVkLgotICAgICAgICAgICAgaWYgbW9kbmFtZSBpbiB7J3Rlc3QuYmFkc3ludGF4X3BlcDMxMjAnLCAnYmFkc3ludGF4X3BlcDMxMjAnfToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCiAgICAgICAgICAgICBpZiBrZXkgaXMgTm9uZToKICAgICAgICAgICAgICAgICBjYWxsYmFjayhOb25lLCBtb2RuYW1lLCAnJykKICAgICAgICAgICAgIGVsc2U6CkBAIC0yMDM3LDcgKzIwNDAsNyBAQAogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnZ2V0X3NvdXJjZScpOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBsb2FkZXIuZ2V0X3NvdXJjZShtb2RuYW1lKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgb25lcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG1vZG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMjA3NCwyNzIgKzIwNzcsNiBAQAogICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJykgIyBpZ25vcmUgcHJvYmxlbXMgZHVyaW5nIGltcG9ydAogICAgICAgICBNb2R1bGVTY2FubmVyKCkucnVuKGNhbGxiYWNrLCBrZXksIG9uZXJyb3I9b25lcnJvcikKIAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2ViIGJyb3dzZXIgaW50ZXJmYWNlCi0KLWRlZiBzZXJ2ZShwb3J0LCBjYWxsYmFjaz1Ob25lLCBjb21wbGV0ZXI9Tm9uZSk6Ci0gICAgaW1wb3J0IGh0dHAuc2VydmVyLCBlbWFpbC5tZXNzYWdlLCBzZWxlY3QKLQotICAgIG1zZyA9ICd0aGUgcHlkb2Muc2VydmUoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkJwotICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLQotICAgIGNsYXNzIERvY0hhbmRsZXIoaHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6Ci0gICAgICAgIGRlZiBzZW5kX2RvY3VtZW50KHNlbGYsIHRpdGxlLCBjb250ZW50cyk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCkKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9odG1sOyBjaGFyc2V0PVVURi04JykKLSAgICAgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKGh0bWwucGFnZSh0aXRsZSwgY29udGVudHMpLmVuY29kZSgndXRmLTgnKSkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOiBwYXNzCi0KLSAgICAgICAgZGVmIGRvX0dFVChzZWxmKToKLSAgICAgICAgICAgIHBhdGggPSBzZWxmLnBhdGgKLSAgICAgICAgICAgIGlmIHBhdGhbLTU6XSA9PSAnLmh0bWwnOiBwYXRoID0gcGF0aFs6LTVdCi0gICAgICAgICAgICBpZiBwYXRoWzoxXSA9PSAnLyc6IHBhdGggPSBwYXRoWzE6XQotICAgICAgICAgICAgaWYgcGF0aCBhbmQgcGF0aCAhPSAnLic6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBvYmogPSBsb2NhdGUocGF0aCwgZm9yY2Vsb2FkPTEpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEVycm9yRHVyaW5nSW1wb3J0IGFzIHZhbHVlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZG9jdW1lbnQocGF0aCwgaHRtbC5lc2NhcGUoc3RyKHZhbHVlKSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGlmIG9iajoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2RvY3VtZW50KGRlc2NyaWJlKG9iaiksIGh0bWwuZG9jdW1lbnQob2JqLCBwYXRoKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZG9jdW1lbnQocGF0aCwKLSdubyBQeXRob24gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJXMnICUgcmVwcihwYXRoKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaGVhZGluZyA9IGh0bWwuaGVhZGluZygKLSc8YmlnPjxiaWc+PHN0cm9uZz5QeXRob246IEluZGV4IG9mIE1vZHVsZXM8L3N0cm9uZz48L2JpZz48L2JpZz4nLAotJyNmZmZmZmYnLCAnIzc3OTllZScpCi0gICAgICAgICAgICAgICAgZGVmIGJsdGlubGluayhuYW1lKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8YSBocmVmPSIlcy5odG1sIj4lczwvYT4nICUgKG5hbWUsIG5hbWUpCi0gICAgICAgICAgICAgICAgbmFtZXMgPSBbeCBmb3IgeCBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMgaWYgeCAhPSAnX19tYWluX18nXQotICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gaHRtbC5tdWx0aWNvbHVtbihuYW1lcywgYmx0aW5saW5rKQotICAgICAgICAgICAgICAgIGluZGljZXMgPSBbJzxwPicgKyBodG1sLmJpZ3NlY3Rpb24oCi0gICAgICAgICAgICAgICAgICAgICdCdWlsdC1pbiBNb2R1bGVzJywgJyNmZmZmZmYnLCAnI2VlNzdhYScsIGNvbnRlbnRzKV0KLQotICAgICAgICAgICAgICAgIHNlZW4gPSB7fQotICAgICAgICAgICAgICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6Ci0gICAgICAgICAgICAgICAgICAgIGluZGljZXMuYXBwZW5kKGh0bWwuaW5kZXgoZGlyLCBzZWVuKSkKLSAgICAgICAgICAgICAgICBjb250ZW50cyA9IGhlYWRpbmcgKyAnICcuam9pbihpbmRpY2VzKSArICcnJzxwIGFsaWduPXJpZ2h0PgotPGZvbnQgY29sb3I9IiM5MDkwOTAiIGZhY2U9ImhlbHZldGljYSwgYXJpYWwiPjxzdHJvbmc+Ci1weWRvYzwvc3Ryb25nPiBieSBLYS1QaW5nIFllZSAmbHQ7cGluZ0BsZncub3JnJmd0OzwvZm9udD4nJycKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZG9jdW1lbnQoJ0luZGV4IG9mIE1vZHVsZXMnLCBjb250ZW50cykKLQotICAgICAgICBkZWYgbG9nX21lc3NhZ2Uoc2VsZiwgKmFyZ3MpOiBwYXNzCi0KLSAgICBjbGFzcyBEb2NTZXJ2ZXIoaHR0cC5zZXJ2ZXIuSFRUUFNlcnZlcik6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBjYWxsYmFjayk6Ci0gICAgICAgICAgICBob3N0ID0gJ2xvY2FsaG9zdCcKLSAgICAgICAgICAgIHNlbGYuYWRkcmVzcyA9IChob3N0LCBwb3J0KQotICAgICAgICAgICAgc2VsZi51cmwgPSAnaHR0cDovLyVzOiVkLycgJSAoaG9zdCwgcG9ydCkKLSAgICAgICAgICAgIHNlbGYuY2FsbGJhY2sgPSBjYWxsYmFjawotICAgICAgICAgICAgc2VsZi5iYXNlLl9faW5pdF9fKHNlbGYsIHNlbGYuYWRkcmVzcywgc2VsZi5oYW5kbGVyKQotCi0gICAgICAgIGRlZiBzZXJ2ZV91bnRpbF9xdWl0KHNlbGYpOgotICAgICAgICAgICAgaW1wb3J0IHNlbGVjdAotICAgICAgICAgICAgc2VsZi5xdWl0ID0gRmFsc2UKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLnF1aXQ6Ci0gICAgICAgICAgICAgICAgcmQsIHdyLCBleCA9IHNlbGVjdC5zZWxlY3QoW3NlbGYuc29ja2V0LmZpbGVubygpXSwgW10sIFtdLCAxKQotICAgICAgICAgICAgICAgIGlmIHJkOiBzZWxmLmhhbmRsZV9yZXF1ZXN0KCkKLSAgICAgICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKLQotICAgICAgICBkZWYgc2VydmVyX2FjdGl2YXRlKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5iYXNlLnNlcnZlcl9hY3RpdmF0ZShzZWxmKQotICAgICAgICAgICAgaWYgc2VsZi5jYWxsYmFjazogc2VsZi5jYWxsYmFjayhzZWxmKQotCi0gICAgRG9jU2VydmVyLmJhc2UgPSBodHRwLnNlcnZlci5IVFRQU2VydmVyCi0gICAgRG9jU2VydmVyLmhhbmRsZXIgPSBEb2NIYW5kbGVyCi0gICAgRG9jSGFuZGxlci5NZXNzYWdlQ2xhc3MgPSBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UKLSAgICB0cnk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIERvY1NlcnZlcihwb3J0LCBjYWxsYmFjaykuc2VydmVfdW50aWxfcXVpdCgpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIHNlbGVjdC5lcnJvcik6Ci0gICAgICAgICAgICBwYXNzCi0gICAgZmluYWxseToKLSAgICAgICAgaWYgY29tcGxldGVyOiBjb21wbGV0ZXIoKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGdyYXBoaWNhbCBpbnRlcmZhY2UKLQotZGVmIGd1aSgpOgotICAgICIiIkdyYXBoaWNhbCBpbnRlcmZhY2UgKHN0YXJ0cyBXZWIgc2VydmVyIGFuZCBwb3BzIHVwIGEgY29udHJvbCB3aW5kb3cpLiIiIgotCi0gICAgbXNnID0gKCd0aGUgcHlkb2MuZ3VpKCkgZnVuY3Rpb24gYW5kICJweWRvYyAtZyIgb3B0aW9uIGFyZSBkZXByZWNhdGVkXG4nLAotICAgICAgICAgICAndXNlICJweWRvYy5icm93c2UoKSBmdW5jdGlvbiBhbmQgInB5ZG9jIC1iIiBvcHRpb24gaW5zdGVhZC4nKQotICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLQotICAgIGNsYXNzIEdVSToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdpbmRvdywgcG9ydD03NDY0KToKLSAgICAgICAgICAgIHNlbGYud2luZG93ID0gd2luZG93Ci0gICAgICAgICAgICBzZWxmLnNlcnZlciA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE5vbmUKLQotICAgICAgICAgICAgaW1wb3J0IHRraW50ZXIKLSAgICAgICAgICAgIHNlbGYuc2VydmVyX2ZybSA9IHRraW50ZXIuRnJhbWUod2luZG93KQotICAgICAgICAgICAgc2VsZi50aXRsZV9sYmwgPSB0a2ludGVyLkxhYmVsKHNlbGYuc2VydmVyX2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdTdGFydGluZyBzZXJ2ZXIuLi5cbiAnKQotICAgICAgICAgICAgc2VsZi5vcGVuX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYuc2VydmVyX2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdvcGVuIGJyb3dzZXInLCBjb21tYW5kPXNlbGYub3Blbiwgc3RhdGU9J2Rpc2FibGVkJykKLSAgICAgICAgICAgIHNlbGYucXVpdF9idG4gPSB0a2ludGVyLkJ1dHRvbihzZWxmLnNlcnZlcl9mcm0sCi0gICAgICAgICAgICAgICAgdGV4dD0ncXVpdCBzZXJ2aW5nJywgY29tbWFuZD1zZWxmLnF1aXQsIHN0YXRlPSdkaXNhYmxlZCcpCi0KLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2ZybSA9IHRraW50ZXIuRnJhbWUod2luZG93KQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfbGJsID0gdGtpbnRlci5MYWJlbChzZWxmLnNlYXJjaF9mcm0sIHRleHQ9J1NlYXJjaCBmb3InKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZW50ID0gdGtpbnRlci5FbnRyeShzZWxmLnNlYXJjaF9mcm0pCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQuYmluZCgnPFJldHVybj4nLCBzZWxmLnNlYXJjaCkKLSAgICAgICAgICAgIHNlbGYuc3RvcF9idG4gPSB0a2ludGVyLkJ1dHRvbihzZWxmLnNlYXJjaF9mcm0sCi0gICAgICAgICAgICAgICAgdGV4dD0nc3RvcCcsIHBhZHk9MCwgY29tbWFuZD1zZWxmLnN0b3AsIHN0YXRlPSdkaXNhYmxlZCcpCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgICAgICAgICAjIFRyeWluZyB0byBoaWRlIGFuZCBzaG93IHRoaXMgYnV0dG9uIGNyYXNoZXMgdW5kZXIgV2luZG93cy4KLSAgICAgICAgICAgICAgICBzZWxmLnN0b3BfYnRuLnBhY2soc2lkZT0ncmlnaHQnKQotCi0gICAgICAgICAgICBzZWxmLndpbmRvdy50aXRsZSgncHlkb2MnKQotICAgICAgICAgICAgc2VsZi53aW5kb3cucHJvdG9jb2woJ1dNX0RFTEVURV9XSU5ET1cnLCBzZWxmLnF1aXQpCi0gICAgICAgICAgICBzZWxmLnRpdGxlX2xibC5wYWNrKHNpZGU9J3RvcCcsIGZpbGw9J3gnKQotICAgICAgICAgICAgc2VsZi5vcGVuX2J0bi5wYWNrKHNpZGU9J2xlZnQnLCBmaWxsPSd4JywgZXhwYW5kPTEpCi0gICAgICAgICAgICBzZWxmLnF1aXRfYnRuLnBhY2soc2lkZT0ncmlnaHQnLCBmaWxsPSd4JywgZXhwYW5kPTEpCi0gICAgICAgICAgICBzZWxmLnNlcnZlcl9mcm0ucGFjayhzaWRlPSd0b3AnLCBmaWxsPSd4JykKLQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfbGJsLnBhY2soc2lkZT0nbGVmdCcpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQucGFjayhzaWRlPSdyaWdodCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2ZybS5wYWNrKHNpZGU9J3RvcCcsIGZpbGw9J3gnKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZW50LmZvY3VzX3NldCgpCi0KLSAgICAgICAgICAgIGZvbnQgPSAoJ2hlbHZldGljYScsIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIGFuZCA4IG9yIDEwKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0ID0gdGtpbnRlci5MaXN0Ym94KHdpbmRvdywgZm9udD1mb250LCBoZWlnaHQ9NikKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdC5iaW5kKCc8QnV0dG9uLTE+Jywgc2VsZi5zZWxlY3QpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QuYmluZCgnPERvdWJsZS1CdXR0b24tMT4nLCBzZWxmLmdvdG8pCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9zY3IgPSB0a2ludGVyLlNjcm9sbGJhcih3aW5kb3csCi0gICAgICAgICAgICAgICAgb3JpZW50PSd2ZXJ0aWNhbCcsIGNvbW1hbmQ9c2VsZi5yZXN1bHRfbHN0Lnl2aWV3KQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmNvbmZpZyh5c2Nyb2xsY29tbWFuZD1zZWxmLnJlc3VsdF9zY3Iuc2V0KQotCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9mcm0gPSB0a2ludGVyLkZyYW1lKHdpbmRvdykKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4gPSB0a2ludGVyLkJ1dHRvbihzZWxmLnJlc3VsdF9mcm0sCi0gICAgICAgICAgICAgICAgdGV4dD0nZ28gdG8gc2VsZWN0ZWQnLCBjb21tYW5kPXNlbGYuZ290bykKLSAgICAgICAgICAgIHNlbGYuaGlkZV9idG4gPSB0a2ludGVyLkJ1dHRvbihzZWxmLnJlc3VsdF9mcm0sCi0gICAgICAgICAgICAgICAgdGV4dD0naGlkZSByZXN1bHRzJywgY29tbWFuZD1zZWxmLmhpZGUpCi0gICAgICAgICAgICBzZWxmLmdvdG9fYnRuLnBhY2soc2lkZT0nbGVmdCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIHNlbGYuaGlkZV9idG4ucGFjayhzaWRlPSdyaWdodCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLQotICAgICAgICAgICAgc2VsZi53aW5kb3cudXBkYXRlKCkKLSAgICAgICAgICAgIHNlbGYubWlud2lkdGggPSBzZWxmLndpbmRvdy53aW5mb193aWR0aCgpCi0gICAgICAgICAgICBzZWxmLm1pbmhlaWdodCA9IHNlbGYud2luZG93LndpbmZvX2hlaWdodCgpCi0gICAgICAgICAgICBzZWxmLmJpZ21pbmhlaWdodCA9IChzZWxmLnNlcnZlcl9mcm0ud2luZm9fcmVxaGVpZ2h0KCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWFyY2hfZnJtLndpbmZvX3JlcWhlaWdodCgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdC53aW5mb19yZXFoZWlnaHQoKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdF9mcm0ud2luZm9fcmVxaGVpZ2h0KCkpCi0gICAgICAgICAgICBzZWxmLmJpZ3dpZHRoLCBzZWxmLmJpZ2hlaWdodCA9IHNlbGYubWlud2lkdGgsIHNlbGYuYmlnbWluaGVpZ2h0Ci0gICAgICAgICAgICBzZWxmLmV4cGFuZGVkID0gMAotICAgICAgICAgICAgc2VsZi53aW5kb3cud21fZ2VvbWV0cnkoJyVkeCVkJyAlIChzZWxmLm1pbndpZHRoLCBzZWxmLm1pbmhlaWdodCkpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9taW5zaXplKHNlbGYubWlud2lkdGgsIHNlbGYubWluaGVpZ2h0KQotICAgICAgICAgICAgc2VsZi53aW5kb3cudGsud2lsbGRpc3BhdGNoKCkKLQotICAgICAgICAgICAgaW1wb3J0IHRocmVhZGluZwotICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCgKLSAgICAgICAgICAgICAgICB0YXJnZXQ9c2VydmUsIGFyZ3M9KHBvcnQsIHNlbGYucmVhZHksIHNlbGYucXVpdCkpLnN0YXJ0KCkKLQotICAgICAgICBkZWYgcmVhZHkoc2VsZiwgc2VydmVyKToKLSAgICAgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyCi0gICAgICAgICAgICBzZWxmLnRpdGxlX2xibC5jb25maWcoCi0gICAgICAgICAgICAgICAgdGV4dD0nUHl0aG9uIGRvY3VtZW50YXRpb24gc2VydmVyIGF0XG4nICsgc2VydmVyLnVybCkKLSAgICAgICAgICAgIHNlbGYub3Blbl9idG4uY29uZmlnKHN0YXRlPSdub3JtYWwnKQotICAgICAgICAgICAgc2VsZi5xdWl0X2J0bi5jb25maWcoc3RhdGU9J25vcm1hbCcpCi0KLSAgICAgICAgZGVmIG9wZW4oc2VsZiwgZXZlbnQ9Tm9uZSwgdXJsPU5vbmUpOgotICAgICAgICAgICAgdXJsID0gdXJsIG9yIHNlbGYuc2VydmVyLnVybAotICAgICAgICAgICAgaW1wb3J0IHdlYmJyb3dzZXIKLSAgICAgICAgICAgIHdlYmJyb3dzZXIub3Blbih1cmwpCi0KLSAgICAgICAgZGVmIHF1aXQoc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgICAgICBpZiBzZWxmLnNlcnZlcjoKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5xdWl0ID0gMQotICAgICAgICAgICAgc2VsZi53aW5kb3cucXVpdCgpCi0KLSAgICAgICAgZGVmIHNlYXJjaChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIGtleSA9IHNlbGYuc2VhcmNoX2VudC5nZXQoKQotICAgICAgICAgICAgc2VsZi5zdG9wX2J0bi5wYWNrKHNpZGU9J3JpZ2h0JykKLSAgICAgICAgICAgIHNlbGYuc3RvcF9idG4uY29uZmlnKHN0YXRlPSdub3JtYWwnKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfbGJsLmNvbmZpZyh0ZXh0PSdTZWFyY2hpbmcgZm9yICIlcyIuLi4nICUga2V5KQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZW50LmZvcmdldCgpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwucGFjayhzaWRlPSdsZWZ0JykKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdC5kZWxldGUoMCwgJ2VuZCcpCi0gICAgICAgICAgICBzZWxmLmdvdG9fYnRuLmNvbmZpZyhzdGF0ZT0nZGlzYWJsZWQnKQotICAgICAgICAgICAgc2VsZi5leHBhbmQoKQotCi0gICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCi0gICAgICAgICAgICBpZiBzZWxmLnNjYW5uZXI6Ci0gICAgICAgICAgICAgICAgc2VsZi5zY2FubmVyLnF1aXQgPSAxCi0gICAgICAgICAgICBzZWxmLnNjYW5uZXIgPSBNb2R1bGVTY2FubmVyKCkKLSAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuc2Nhbm5lci5ydW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYudXBkYXRlLCBrZXksIHNlbGYuZG9uZSkpLnN0YXJ0KCkKLQotICAgICAgICBkZWYgdXBkYXRlKHNlbGYsIHBhdGgsIG1vZG5hbWUsIGRlc2MpOgotICAgICAgICAgICAgaWYgbW9kbmFtZVstOTpdID09ICcuX19pbml0X18nOgotICAgICAgICAgICAgICAgIG1vZG5hbWUgPSBtb2RuYW1lWzotOV0gKyAnIChwYWNrYWdlKScKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdC5pbnNlcnQoJ2VuZCcsCi0gICAgICAgICAgICAgICAgbW9kbmFtZSArICcgLSAnICsgKGRlc2Mgb3IgJyhubyBkZXNjcmlwdGlvbiknKSkKLQotICAgICAgICBkZWYgc3RvcChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIGlmIHNlbGYuc2Nhbm5lcjoKLSAgICAgICAgICAgICAgICBzZWxmLnNjYW5uZXIucXVpdCA9IDEKLSAgICAgICAgICAgICAgICBzZWxmLnNjYW5uZXIgPSBOb25lCi0KLSAgICAgICAgZGVmIGRvbmUoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnNjYW5uZXIgPSBOb25lCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwuY29uZmlnKHRleHQ9J1NlYXJjaCBmb3InKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfbGJsLnBhY2soc2lkZT0nbGVmdCcpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQucGFjayhzaWRlPSdyaWdodCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOiBzZWxmLnN0b3BfYnRuLmZvcmdldCgpCi0gICAgICAgICAgICBzZWxmLnN0b3BfYnRuLmNvbmZpZyhzdGF0ZT0nZGlzYWJsZWQnKQotCi0gICAgICAgIGRlZiBzZWxlY3Qoc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgICAgICBzZWxmLmdvdG9fYnRuLmNvbmZpZyhzdGF0ZT0nbm9ybWFsJykKLQotICAgICAgICBkZWYgZ290byhzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIHNlbGVjdGlvbiA9IHNlbGYucmVzdWx0X2xzdC5jdXJzZWxlY3Rpb24oKQotICAgICAgICAgICAgaWYgc2VsZWN0aW9uOgotICAgICAgICAgICAgICAgIG1vZG5hbWUgPSBzZWxmLnJlc3VsdF9sc3QuZ2V0KHNlbGVjdGlvblswXSkuc3BsaXQoKVswXQotICAgICAgICAgICAgICAgIHNlbGYub3Blbih1cmw9c2VsZi5zZXJ2ZXIudXJsICsgbW9kbmFtZSArICcuaHRtbCcpCi0KLSAgICAgICAgZGVmIGNvbGxhcHNlKHNlbGYpOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuZXhwYW5kZWQ6IHJldHVybgotICAgICAgICAgICAgc2VsZi5yZXN1bHRfZnJtLmZvcmdldCgpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9zY3IuZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdC5mb3JnZXQoKQotICAgICAgICAgICAgc2VsZi5iaWd3aWR0aCA9IHNlbGYud2luZG93LndpbmZvX3dpZHRoKCkKLSAgICAgICAgICAgIHNlbGYuYmlnaGVpZ2h0ID0gc2VsZi53aW5kb3cud2luZm9faGVpZ2h0KCkKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX2dlb21ldHJ5KCclZHglZCcgJSAoc2VsZi5taW53aWR0aCwgc2VsZi5taW5oZWlnaHQpKQotICAgICAgICAgICAgc2VsZi53aW5kb3cud21fbWluc2l6ZShzZWxmLm1pbndpZHRoLCBzZWxmLm1pbmhlaWdodCkKLSAgICAgICAgICAgIHNlbGYuZXhwYW5kZWQgPSAwCi0KLSAgICAgICAgZGVmIGV4cGFuZChzZWxmKToKLSAgICAgICAgICAgIGlmIHNlbGYuZXhwYW5kZWQ6IHJldHVybgotICAgICAgICAgICAgc2VsZi5yZXN1bHRfZnJtLnBhY2soc2lkZT0nYm90dG9tJywgZmlsbD0neCcpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9zY3IucGFjayhzaWRlPSdyaWdodCcsIGZpbGw9J3knKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LnBhY2soc2lkZT0ndG9wJywgZmlsbD0nYm90aCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgc2VsZi53aW5kb3cud21fZ2VvbWV0cnkoJyVkeCVkJyAlIChzZWxmLmJpZ3dpZHRoLCBzZWxmLmJpZ2hlaWdodCkpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9taW5zaXplKHNlbGYubWlud2lkdGgsIHNlbGYuYmlnbWluaGVpZ2h0KQotICAgICAgICAgICAgc2VsZi5leHBhbmRlZCA9IDEKLQotICAgICAgICBkZWYgaGlkZShzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIHNlbGYuc3RvcCgpCi0gICAgICAgICAgICBzZWxmLmNvbGxhcHNlKCkKLQotICAgIGltcG9ydCB0a2ludGVyCi0gICAgdHJ5OgotICAgICAgICByb290ID0gdGtpbnRlci5UaygpCi0gICAgICAgICMgVGsgd2lsbCBjcmFzaCBpZiBweXRob253LmV4ZSBoYXMgYW4gWFAgLm1hbmlmZXN0Ci0gICAgICAgICMgZmlsZSBhbmQgdGhlIHJvb3QgaGFzIGlzIG5vdCBkZXN0cm95ZWQgZXhwbGljaXRseS4KLSAgICAgICAgIyBJZiB0aGUgcHJvYmxlbSBpcyBldmVyIGZpeGVkIGluIFRrLCB0aGUgZXhwbGljaXQKLSAgICAgICAgIyBkZXN0cm95IGNhbiBnby4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZ3VpID0gR1VJKHJvb3QpCi0gICAgICAgICAgICByb290Lm1haW5sb29wKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHJvb3QuZGVzdHJveSgpCi0gICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICBwYXNzCi0KLQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZW5oYW5jZWQgV2ViIGJyb3dzZXIgaW50ZXJmYWNlCiAKIGRlZiBfc3RhcnRfc2VydmVyKHVybGhhbmRsZXIsIHBvcnQpOgpAQCAtMjc5NiwxNSArMjUzMywxMiBAQAogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgJy4nKQogCiAgICAgdHJ5OgotICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICdiZ2s6cDp3JykKKyAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAnYms6cDp3JykKICAgICAgICAgd3JpdGluZyA9IEZhbHNlCiAgICAgICAgIHN0YXJ0X3NlcnZlciA9IEZhbHNlCiAgICAgICAgIG9wZW5fYnJvd3NlciA9IEZhbHNlCiAgICAgICAgIHBvcnQgPSBOb25lCiAgICAgICAgIGZvciBvcHQsIHZhbCBpbiBvcHRzOgotICAgICAgICAgICAgaWYgb3B0ID09ICctZyc6Ci0gICAgICAgICAgICAgICAgZ3VpKCkKLSAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGlmIG9wdCA9PSAnLWInOgogICAgICAgICAgICAgICAgIHN0YXJ0X3NlcnZlciA9IFRydWUKICAgICAgICAgICAgICAgICBvcGVuX2Jyb3dzZXIgPSBUcnVlCkBAIC0yODY1LDkgKzI1OTksNiBAQAogICAgIHRvIGludGVyYWN0aXZlbHkgYnJvd3NlIGRvY3VtZW50YXRpb24uICBUaGUgLXAgb3B0aW9uIGNhbiBiZSB1c2VkIHdpdGgKICAgICB0aGUgLWIgb3B0aW9uIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgc2VydmVyIHBvcnQuCiAKLXtjbWR9IC1nCi0gICAgRGVwcmVjYXRlZC4KLQoge2NtZH0gLXcgPG5hbWU+IC4uLgogICAgIFdyaXRlIG91dCB0aGUgSFRNTCBkb2N1bWVudGF0aW9uIGZvciBhIG1vZHVsZSB0byBhIGZpbGUgaW4gdGhlIGN1cnJlbnQKICAgICBkaXJlY3RvcnkuICBJZiA8bmFtZT4gY29udGFpbnMgYSAne3NlcH0nLCBpdCBpcyB0cmVhdGVkIGFzIGEgZmlsZW5hbWU7IGlmCmRpZmYgLS1naXQgYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKaW5kZXggMDhhOWU3Yy4uNjJhNTRhOSAxMDA2NDQKLS0tIGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CisrKyBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQpAQCAtMSwxNiArMSwxNyBAQAotIyBBdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueCBvbiBUaHUgRmViIDIzIDE4OjM3OjU0IDIwMTIKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBBdWcgMjUgMTI6MTI6NDUgMjAxMgogdG9waWNzID0geydhc3NlcnQnOiAnXG5UaGUgYGBhc3NlcnRgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgYGBhc3NlcnQgZXhwcmVzc2lvbmBgLCBpcyBlcXVpdmFsZW50IHRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuXG5UaGUgZXh0ZW5kZWQgZm9ybSwgYGBhc3NlcnQgZXhwcmVzc2lvbjEsIGV4cHJlc3Npb24yYGAsIGlzIGVxdWl2YWxlbnRcbnRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCBgYF9fZGVidWdfX2BgIGFuZCBgYEFzc2VydGlvbkVycm9yYGBcbnJlZmVyIHRvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlIGBgX19kZWJ1Z19fYGAgaXMgYGBUcnVlYGAgdW5kZXJcbm5vcm1hbCBjaXJjdW1zdGFuY2VzLCBgYEZhbHNlYGAgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkXG4oY29tbWFuZCBsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlXG5mb3IgYW4gYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZVxudGltZS4gIE5vdGUgdGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlXG5leHByZXNzaW9uIHRoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhc1xucGFydCBvZiB0aGUgc3RhY2sgdHJhY2UuXG5cbkFzc2lnbm1lbnRzIHRvIGBgX19kZWJ1Z19fYGAgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAogICdhc3NpZ25tZW50JzogJ1xuQXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKipcblxuQXNzaWdubWVudCBzdGF0ZW1lbnRzIGFyZSB1c2VkIHRvIChyZSliaW5kIG5hbWVzIHRvIHZhbHVlcyBhbmQgdG9cbm1vZGlmeSBhdHRyaWJ1dGVzIG9yIGl0ZW1zIG9mIG11dGFibGUgb2JqZWN0czpcblxuICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICB0YXJnZXRfbGlzdCAgICAgOjo9IHRhcmdldCAoIiwiIHRhcmdldCkqIFsiLCJdXG4gICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgfCAiKCIgdGFyZ2V0X2xpc3QgIikiXG4gICAgICAgICAgICAgIHwgIlsiIHRhcmdldF9saXN0ICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhc3NpZ25tZW50IHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gbGlzdCAocmVtZW1iZXIgdGhhdFxudGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgbGF0dGVyXG55aWVsZGluZyBhIHR1cGxlKSBhbmQgYXNzaWducyB0aGUgc2luZ2xlIHJlc3VsdGluZyBvYmplY3QgdG8gZWFjaCBvZlxudGhlIHRhcmdldCBsaXN0cywgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5Bc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSB0YXJnZXRcbihsaXN0KS4gV2hlbiBhIHRhcmdldCBpcyBwYXJ0IG9mIGEgbXV0YWJsZSBvYmplY3QgKGFuIGF0dHJpYnV0ZVxucmVmZXJlbmNlLCBzdWJzY3JpcHRpb24gb3Igc2xpY2luZyksIHRoZSBtdXRhYmxlIG9iamVjdCBtdXN0XG51bHRpbWF0ZWx5IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQgYW5kIGRlY2lkZSBhYm91dCBpdHMgdmFsaWRpdHksIGFuZFxubWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXNzaWdubWVudCBpcyB1bmFjY2VwdGFibGUuICBUaGUgcnVsZXNcbm9ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gd2l0aCB0aGVcbmRlZmluaXRpb24gb2YgdGhlIG9iamVjdCB0eXBlcyAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlXG5oaWVyYXJjaHkqKS5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCBpblxucGFyZW50aGVzZXMgb3Igc3F1YXJlIGJyYWNrZXRzLCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzIGZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgc2luZ2xlIHRhcmdldDogVGhlIG9iamVjdCBpcyBhc3NpZ25lZCB0b1xuICB0aGF0IHRhcmdldC5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzOiBUaGUgb2JqZWN0XG4gIG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXMgYXMgdGhlcmUgYXJlXG4gIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvXG4gIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4gICogSWYgdGhlIHRhcmdldCBsaXN0IGNvbnRhaW5zIG9uZSB0YXJnZXQgcHJlZml4ZWQgd2l0aCBhbiBhc3RlcmlzayxcbiAgICBjYWxsZWQgYSAic3RhcnJlZCIgdGFyZ2V0OiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZSB3aXRoIGF0XG4gICAgbGVhc3QgYXMgbWFueSBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIG1pbnVzXG4gICAgb25lLiAgVGhlIGZpcnN0IGl0ZW1zIG9mIHRoZSBzZXF1ZW5jZSBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0b1xuICAgIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgVGhlIGZpbmFsIGl0ZW1zXG4gICAgb2YgdGhlIHNlcXVlbmNlIGFyZSBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZFxuICAgIHRhcmdldC4gIEEgbGlzdCBvZiB0aGUgcmVtYWluaW5nIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBpcyB0aGVuXG4gICAgYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICh0aGUgbGlzdCBjYW4gYmUgZW1wdHkpLlxuXG4gICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGEgc2VxdWVuY2Ugd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlXG4gICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSBzaW5nbGUgdGFyZ2V0IGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXNcbmZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcblxuICAqIElmIHRoZSBuYW1lIGRvZXMgbm90IG9jY3VyIGluIGEgYGBnbG9iYWxgYCBvciBgYG5vbmxvY2FsYGBcbiAgICBzdGF0ZW1lbnQgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlXG4gICAgb2JqZWN0IGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZS5cblxuICAqIE90aGVyd2lzZTogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZVxuICAgIG9yIHRoZSBvdXRlciBuYW1lc3BhY2UgZGV0ZXJtaW5lZCBieSBgYG5vbmxvY2FsYGAsIHJlc3BlY3RpdmVseS5cblxuICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgdGhlXG4gIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIG9iamVjdCBwcmV2aW91c2x5IGJvdW5kIHRvIHRoZSBuYW1lIHRvIHJlYWNoXG4gIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzIGRlc3RydWN0b3IgKGlmIGl0XG4gIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgdGFyZ2V0IGxpc3QgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMgb3IgaW4gc3F1YXJlXG4gIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2ZcbiAgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgaXRzIGl0ZW1zIGFyZVxuICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpblxuICB0aGUgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhbiBvYmplY3Qgd2l0aFxuICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBgYFR5cGVFcnJvcmBgIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSBgYEF0dHJpYnV0ZUVycm9yYGApLlxuXG4gIE5vdGU6IElmIHRoZSBvYmplY3QgaXMgYSBjbGFzcyBpbnN0YW5jZSBhbmQgdGhlIGF0dHJpYnV0ZSByZWZlcmVuY2VcbiAgb2NjdXJzIG9uIGJvdGggc2lkZXMgb2YgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZSBSSFMgZXhwcmVzc2lvbixcbiAgYGBhLnhgYCBjYW4gYWNjZXNzIGVpdGhlciBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgb3IgKGlmIG5vIGluc3RhbmNlXG4gIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgYGBhLnhgYCBpc1xuICBhbHdheXMgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LlxuICBUaHVzLCB0aGUgdHdvIG9jY3VycmVuY2VzIG9mIGBgYS54YGAgZG8gbm90IG5lY2Vzc2FyaWx5IHJlZmVyIHRvIHRoZVxuICBzYW1lIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzIGF0dHJpYnV0ZSxcbiAgdGhlIExIUyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIGF0dHJpYnV0ZSBhcyB0aGUgdGFyZ2V0IG9mIHRoZVxuICBhc3NpZ25tZW50OlxuXG4gICAgIGNsYXNzIENsczpcbiAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbiAgICAgaW5zdCA9IENscygpXG4gICAgIGluc3QueCA9IGluc3QueCArIDEgICAjIHdyaXRlcyBpbnN0LnggYXMgNCBsZWF2aW5nIENscy54IGFzIDNcblxuICBUaGlzIGRlc2NyaXB0aW9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFwcGx5IHRvIGRlc2NyaXB0b3JcbiAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCBgYHByb3BlcnR5KClgYC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgYGBJbmRleEVycm9yYGAgaXMgcmFpc2VkIChhc3NpZ25tZW50IHRvIGFcbiAgc3Vic2NyaXB0ZWQgc2VxdWVuY2UgY2Fubm90IGFkZCBuZXcgaXRlbXMgdG8gYSBsaXN0KS5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCBoYXZlIGEgdHlwZSBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmdcJ3Mga2V5IHR5cGUsXG4gIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyIHdoaWNoIG1hcHNcbiAgdGhlIHN1YnNjcmlwdCB0byB0aGUgYXNzaWduZWQgb2JqZWN0LiAgVGhpcyBjYW4gZWl0aGVyIHJlcGxhY2UgYW5cbiAgZXhpc3Rpbmcga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgc2FtZSBrZXkgdmFsdWUsIG9yIGluc2VydCBhIG5ld1xuICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG5cbiAgRm9yIHVzZXItZGVmaW5lZCBvYmplY3RzLCB0aGUgYGBfX3NldGl0ZW1fXygpYGAgbWV0aG9kIGlzIGNhbGxlZFxuICB3aXRoIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc2xpY2luZzogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGUgcmVmZXJlbmNlXG4gIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0IChzdWNoIGFzIGFcbiAgbGlzdCkuICBUaGUgYXNzaWduZWQgb2JqZWN0IHNob3VsZCBiZSBhIHNlcXVlbmNlIG9iamVjdCBvZiB0aGUgc2FtZVxuICB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkLFxuICBpbnNvZmFyIHRoZXkgYXJlIHByZXNlbnQ7IGRlZmF1bHRzIGFyZSB6ZXJvIGFuZCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuIElmIGVpdGhlciBib3VuZCBpc1xuICBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmdcbiAgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsXG4gIGluY2x1c2l2ZS4gIEZpbmFsbHksIHRoZSBzZXF1ZW5jZSBvYmplY3QgaXMgYXNrZWQgdG8gcmVwbGFjZSB0aGVcbiAgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlIGxlbmd0aCBvZiB0aGVcbiAgc2xpY2UgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBsZW5ndGggb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLFxuICB0aHVzIGNoYW5naW5nIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCBzZXF1ZW5jZSwgaWYgdGhlIG9iamVjdFxuICBhbGxvd3MgaXQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZVxuc3ludGF4IGZvciB0YXJnZXRzIGlzIHRha2VuIHRvIGJlIHRoZSBzYW1lIGFzIGZvciBleHByZXNzaW9ucywgYW5kXG5pbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgY2F1c2luZ1xubGVzcyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcy5cblxuV0FSTklORzogQWx0aG91Z2ggdGhlIGRlZmluaXRpb24gb2YgYXNzaWdubWVudCBpbXBsaWVzIHRoYXQgb3ZlcmxhcHNcbmJldHdlZW4gdGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSBcJ3NhZmVcJyAoZm9yXG5leGFtcGxlIGBgYSwgYiA9IGIsIGFgYCBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogdGhlXG5jb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBhcmUgbm90IHNhZmUhICBGb3IgaW5zdGFuY2UsIHRoZVxuZm9sbG93aW5nIHByb2dyYW0gcHJpbnRzIGBgWzAsIDJdYGA6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMlxuICAgcHJpbnQoeClcblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuICAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBgYCp0YXJnZXRgYCBmZWF0dXJlLlxuXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSBgYHggKz0gMWBgIGNhbiBiZSByZXdyaXR0ZW4gYXNcbmBgeCA9IHggKyAxYGAgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluXG50aGUgYXVnbWVudGVkIHZlcnNpb24sIGBgeGBgIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW5cbnBvc3NpYmxlLCB0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0XG5yYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsXG50aGUgb2xkIG9iamVjdCBpcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKICAnYXRvbS1pZGVudGlmaWVycyc6ICdcbklkZW50aWZpZXJzIChOYW1lcylcbioqKioqKioqKioqKioqKioqKipcblxuQW4gaWRlbnRpZmllciBvY2N1cnJpbmcgYXMgYW4gYXRvbSBpcyBhIG5hbWUuICBTZWUgc2VjdGlvblxuKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyogZm9yIGxleGljYWwgZGVmaW5pdGlvbiBhbmQgc2VjdGlvbiAqTmFtaW5nXG5hbmQgYmluZGluZyogZm9yIGRvY3VtZW50YXRpb24gb2YgbmFtaW5nIGFuZCBiaW5kaW5nLlxuXG5XaGVuIHRoZSBuYW1lIGlzIGJvdW5kIHRvIGFuIG9iamVjdCwgZXZhbHVhdGlvbiBvZiB0aGUgYXRvbSB5aWVsZHNcbnRoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gZXZhbHVhdGUgaXRcbnJhaXNlcyBhIGBgTmFtZUVycm9yYGAgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSBpbiBmcm9udCBvZiB0aGUgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQsIGFuZFxuYSBzaW5nbGUgdW5kZXJzY29yZSBpbnNlcnRlZCBpbiBmcm9udCBvZiB0aGUgY2xhc3MgbmFtZS4gIEZvciBleGFtcGxlLFxudGhlIGlkZW50aWZpZXIgYGBfX3NwYW1gYCBvY2N1cnJpbmcgaW4gYSBjbGFzcyBuYW1lZCBgYEhhbWBgIHdpbGwgYmVcbnRyYW5zZm9ybWVkIHRvIGBgX0hhbV9fc3BhbWBgLiAgVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRlcGVuZGVudCBvZlxudGhlIHN5bnRhY3RpY2FsIGNvbnRleHQgaW4gd2hpY2ggdGhlIGlkZW50aWZpZXIgaXMgdXNlZC4gIElmIHRoZVxudHJhbnNmb3JtZWQgbmFtZSBpcyBleHRyZW1lbHkgbG9uZyAobG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLFxuaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0cnVuY2F0aW9uIG1heSBoYXBwZW4uICBJZiB0aGUgY2xhc3MgbmFtZVxuY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm8gdHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCiAgJ2F0b20tbGl0ZXJhbHMnOiAiXG5MaXRlcmFsc1xuKioqKioqKipcblxuUHl0aG9uIHN1cHBvcnRzIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgYW5kIHZhcmlvdXMgbnVtZXJpY1xubGl0ZXJhbHM6XG5cbiAgIGxpdGVyYWwgOjo9IHN0cmluZ2xpdGVyYWwgfCBieXRlc2xpdGVyYWxcbiAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuXG5FdmFsdWF0aW9uIG9mIGEgbGl0ZXJhbCB5aWVsZHMgYW4gb2JqZWN0IG9mIHRoZSBnaXZlbiB0eXBlIChzdHJpbmcsXG5ieXRlcywgaW50ZWdlciwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBjb21wbGV4IG51bWJlcikgd2l0aCB0aGUgZ2l2ZW5cbnZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgZmxvYXRpbmcgcG9pbnRcbmFuZCBpbWFnaW5hcnkgKGNvbXBsZXgpIGxpdGVyYWxzLiAgU2VlIHNlY3Rpb24gKkxpdGVyYWxzKiBmb3IgZGV0YWlscy5cblxuQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSB0aGVcbm9iamVjdCdzIGlkZW50aXR5IGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gaXRzIHZhbHVlLiAgTXVsdGlwbGVcbmV2YWx1YXRpb25zIG9mIGxpdGVyYWxzIHdpdGggdGhlIHNhbWUgdmFsdWUgKGVpdGhlciB0aGUgc2FtZVxub2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpIG1heSBvYnRhaW5cbnRoZSBzYW1lIG9iamVjdCBvciBhIGRpZmZlcmVudCBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS5cbiIsCi0gJ2F0dHJpYnV0ZS1hY2Nlc3MnOiAnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgYGB4Lm5hbWVgYClcbmZvciBjbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yIGBgc2VsZmBgKS4gIGBgbmFtZWBgIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlXG4gICBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgYGBfX2dldGF0dHJfXygpYGAgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiBgYF9fZ2V0YXR0cl9fKClgYCBhbmQgYGBfX3NldGF0dHJfXygpYGAuKSBUaGlzIGlzIGRvbmUgYm90aFxuICAgZm9yIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgYGBfX2dldGF0dHJfXygpYGBcbiAgIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGVcbiAgIHRoYXQgYXQgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnlcbiAgIG5vdCBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lc1xuICAgYGBfX2dldGF0dHJfXygpYGAsIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzc1xuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBlaXRoZXIgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYC4gVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKVxuICAgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uIEluIG9yZGVyXG4gICB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW4gdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvblxuICAgc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG9cbiAgIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpYGAuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzXG4gICAgIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4IG9yXG4gICAgIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmIGBgX19zZXRhdHRyX18oKWBgIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKWBgLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSBgYF9fc2V0YXR0cl9fKClgYCBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiBgYGRlbCBvYmoubmFtZWBgIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiBgYGRpcigpYGAgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuICBBIGxpc3QgbXVzdCBiZVxuICAgcmV0dXJuZWQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgYGBfX2RpY3RfX2BgLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgYGBOb25lYGAgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgLCBhbmRcbmBgX19kZWxldGVfXygpYGAuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsXG5pdCBpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsIGBgYS54YGAgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoIGBgYS5fX2RpY3RfX1tcJ3hcJ11gYCwgdGhlblxuYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXWBgLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbmBgdHlwZShhKWBgIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgYGBhLnhgYC5cbkhvdyB0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiBgYGFgYDpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgYGB4Ll9fZ2V0X18oYSlgYC5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsIGBgYS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6IGBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKWBgLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsIGBgQS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgIGBgQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKWBgLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiBgYGFgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYHN1cGVyYGAsIHRoZW4gdGhlIGJpbmRpbmcgYGBzdXBlcihCLFxuICAgb2JqKS5tKClgYCBzZWFyY2hlcyBgYG9iai5fX2NsYXNzX18uX19tcm9fX2BgIGZvciB0aGUgYmFzZSBjbGFzc1xuICAgYGBBYGAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIGBgQmBgIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3JcbiAgIHdpdGggdGhlIGNhbGw6IGBgQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pYGAuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAgYW5kIGBgX19kZWxldGVfXygpYGAuXG5JZiBpdCBkb2VzIG5vdCBkZWZpbmUgYGBfX2dldF9fKClgYCwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsXG5yZXR1cm4gdGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGVcbm9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyBgYF9fc2V0X18oKWBgXG5hbmQvb3IgYGBfX2RlbGV0ZV9fKClgYCwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXNcbm5laXRoZXIsIGl0IGlzIGEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzXG5kZWZpbmUgYm90aCBgYF9fZ2V0X18oKWBgIGFuZCBgYF9fc2V0X18oKWBgLCB3aGlsZSBub24tZGF0YVxuZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZSBgYF9fZ2V0X18oKWBgIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aFxuYGBfX3NldF9fKClgYCBhbmQgYGBfX2dldF9fKClgYCBkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvblxuaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluIGNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmVcbm92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nIGBgc3RhdGljbWV0aG9kKClgYCBhbmQgYGBjbGFzc21ldGhvZCgpYGApXG5hcmUgaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSBgYHByb3BlcnR5KClgYCBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuPT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gIElmIGRlZmluZWQgaW4gYVxuICAgY2xhc3MsICpfX3Nsb3RzX18qIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZFxuICAgcHJldmVudHMgdGhlIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvclxuICAgZWFjaCBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzIGBgQXR0cmlidXRlRXJyb3JgYC4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgYGBcJ19fZGljdF9fXCdgYCB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXMgZGVmaW5pbmdcbiAgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbnN0YW5jZXMuIElmIHdlYWtcbiAgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZCBgYFwnX193ZWFrcmVmX19cJ2BgIHRvIHRoZVxuICBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlIGluc3RhbmNlXG4gIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGUgKGV4Y2VwdCBieVxuICByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLiBUaGlzXG4gIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgYGBpbnRgYCwgYGBzdHJgYCBhbmRcbiAgYGB0dXBsZWBgLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3MgbWF5XG4gIGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuJywKKyAnYXR0cmlidXRlLWFjY2Vzcyc6ICdcbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gYGBkaXIoKWBgIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG49PT09PT09PT1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG4nLAogICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6ICdcbkF0dHJpYnV0ZSByZWZlcmVuY2VzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYSBuYW1lOlxuXG4gICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIHRoYXQgc3VwcG9ydHNcbmF0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzIG9iamVjdCBpcyB0aGVuXG5hc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgaWRlbnRpZmllciAod2hpY2ggY2FuXG5iZSBjdXN0b21pemVkIGJ5IG92ZXJyaWRpbmcgdGhlIGBgX19nZXRhdHRyX18oKWBgIG1ldGhvZCkuICBJZiB0aGlzXG5hdHRyaWJ1dGUgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGV4Y2VwdGlvbiBgYEF0dHJpYnV0ZUVycm9yYGAgaXNcbnJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIHR5cGUgYW5kIHZhbHVlIG9mIHRoZSBvYmplY3QgcHJvZHVjZWQgaXNcbmRldGVybWluZWQgYnkgdGhlIG9iamVjdC4gIE11bHRpcGxlIGV2YWx1YXRpb25zIG9mIHRoZSBzYW1lIGF0dHJpYnV0ZVxucmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCiAgJ2F1Z2Fzc2lnbic6ICdcbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSBgYHggKz0gMWBgIGNhbiBiZSByZXdyaXR0ZW4gYXNcbmBgeCA9IHggKyAxYGAgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluXG50aGUgYXVnbWVudGVkIHZlcnNpb24sIGBgeGBgIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW5cbnBvc3NpYmxlLCB0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0XG5yYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsXG50aGUgb2xkIG9iamVjdCBpcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKLSAnYmluYXJ5JzogJ1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIi8vIiB1X2V4cHIgfCBtX2V4cHIgIi8iIHVfZXhwclxuICAgICAgICAgICAgICB8IG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlIGBgKmBgIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0c1xuYXJndW1lbnRzLiAgVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudFxubXVzdCBiZSBhbiBpbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyXG5jYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZFxudG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhXG5uZWdhdGl2ZSByZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSBgYC9gYCAoZGl2aXNpb24pIGFuZCBgYC8vYGAgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG5xdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gSW50ZWdlciBkaXZpc2lvbiB5aWVsZHMgYSBmbG9hdCwgd2hpbGVcbmZsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyB0aGF0XG5vZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgXCdmbG9vclwnIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG5yZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi5cblxuVGhlIGBgJWBgIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uIG9mXG50aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYCBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgYGAzLjE0JTAuN2BgIGVxdWFscyBgYDAuMzRgYCAoc2luY2UgYGAzLjE0YGAgZXF1YWxzXG5gYDQqMC43ICsgMC4zNGBgLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoXG50aGUgc2FtZSBzaWduIGFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZlxudGhlIHJlc3VsdCBpcyBzdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcbm9wZXJhbmQgWzFdLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgZm9sbG93aW5nXG5pZGVudGl0eTogYGB4ID09ICh4Ly95KSp5ICsgKHgleSlgYC4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlXG5hbHNvIGNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGRpdm1vZCgpYGA6IGBgZGl2bW9kKHgsIHkpXG49PSAoeC8veSwgeCV5KWBgLiBbMl0uXG5cbkluIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlIGBgJWBgXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqT2xkIFN0cmluZyBGb3JtYXR0aW5nIE9wZXJhdGlvbnMqLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSBtb2R1bG8gb3BlcmF0b3IsIGFuZCB0aGUgYGBkaXZtb2QoKWBgXG5mdW5jdGlvbiBhcmUgbm90IGRlZmluZWQgZm9yIGNvbXBsZXggbnVtYmVycy4gIEluc3RlYWQsIGNvbnZlcnQgdG8gYVxuZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHVzaW5nIHRoZSBgYGFicygpYGAgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSBgYCtgYCAoYWRkaXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgc3VtIG9mIGl0cyBhcmd1bWVudHMuICBUaGVcbmFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBzZXF1ZW5jZXMgb2YgdGhlIHNhbWVcbnR5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZVxuYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSBgYC1gYCAoc3VidHJhY3Rpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgZGlmZmVyZW5jZSBvZiBpdHNcbmFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uXG50eXBlLlxuJywKKyAnYmluYXJ5JzogJ1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIi8vIiB1X2V4cHIgfCBtX2V4cHIgIi8iIHVfZXhwclxuICAgICAgICAgICAgICB8IG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlIGBgKmBgIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0c1xuYXJndW1lbnRzLiAgVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudFxubXVzdCBiZSBhbiBpbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyXG5jYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZFxudG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhXG5uZWdhdGl2ZSByZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSBgYC9gYCAoZGl2aXNpb24pIGFuZCBgYC8vYGAgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG5xdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gSW50ZWdlciBkaXZpc2lvbiB5aWVsZHMgYSBmbG9hdCwgd2hpbGVcbmZsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyB0aGF0XG5vZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgXCdmbG9vclwnIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG5yZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi5cblxuVGhlIGBgJWBgIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uIG9mXG50aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYCBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgYGAzLjE0JTAuN2BgIGVxdWFscyBgYDAuMzRgYCAoc2luY2UgYGAzLjE0YGAgZXF1YWxzXG5gYDQqMC43ICsgMC4zNGBgLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoXG50aGUgc2FtZSBzaWduIGFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZlxudGhlIHJlc3VsdCBpcyBzdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcbm9wZXJhbmQgWzFdLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgZm9sbG93aW5nXG5pZGVudGl0eTogYGB4ID09ICh4Ly95KSp5ICsgKHgleSlgYC4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlXG5hbHNvIGNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGRpdm1vZCgpYGA6IGBgZGl2bW9kKHgsIHkpXG49PSAoeC8veSwgeCV5KWBgLiBbMl0uXG5cbkluIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlIGBgJWBgXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cblxuVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlIGBgZGl2bW9kKClgYFxuZnVuY3Rpb24gYXJlIG5vdCBkZWZpbmVkIGZvciBjb21wbGV4IG51bWJlcnMuICBJbnN0ZWFkLCBjb252ZXJ0IHRvIGFcbmZsb2F0aW5nIHBvaW50IG51bWJlciB1c2luZyB0aGUgYGBhYnMoKWBgIGZ1bmN0aW9uIGlmIGFwcHJvcHJpYXRlLlxuXG5UaGUgYGArYGAgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggc2VxdWVuY2VzIG9mIHRoZSBzYW1lXG50eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGVcbmFuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiAgSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgc2VxdWVuY2VzIGFyZVxuY29uY2F0ZW5hdGVkLlxuXG5UaGUgYGAtYGAgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzXG5hcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vblxudHlwZS5cbicsCiAgJ2JpdHdpc2UnOiAnXG5CaW5hcnkgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkVhY2ggb2YgdGhlIHRocmVlIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXMgYSBkaWZmZXJlbnQgcHJpb3JpdHkgbGV2ZWw6XG5cbiAgIGFuZF9leHByIDo6PSBzaGlmdF9leHByIHwgYW5kX2V4cHIgIiYiIHNoaWZ0X2V4cHJcbiAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuICAgb3JfZXhwciAgOjo9IHhvcl9leHByIHwgb3JfZXhwciAifCIgeG9yX2V4cHJcblxuVGhlIGBgJmBgIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggbXVzdFxuYmUgaW50ZWdlcnMuXG5cblRoZSBgYF5gYCBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuXG5UaGUgYGB8YGAgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIChpbmNsdXNpdmUpIE9SIG9mIGl0cyBhcmd1bWVudHMsXG53aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKICAnYmx0aW4tY29kZS1vYmplY3RzJzogJ1xuQ29kZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgInBzZXVkby1cbmNvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiBib2R5LiBUaGV5IGRpZmZlclxuZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb25cJ3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVpclxuZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuaW4gYGBjb21waWxlKClgYCBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tIGZ1bmN0aW9uIG9iamVjdHNcbnRocm91Z2ggdGhlaXIgYGBfX2NvZGVfX2BgIGF0dHJpYnV0ZS4gU2VlIGFsc28gdGhlIGBgY29kZWBgIG1vZHVsZS5cblxuQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgaXQgKGluc3RlYWQgb2YgYVxuc291cmNlIHN0cmluZykgdG8gdGhlIGBgZXhlYygpYGAgb3IgYGBldmFsKClgYCAgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5TZWUgKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICdibHRpbi1lbGxpcHNpcy1vYmplY3QnOiAnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbmBgRWxsaXBzaXNgYCAoYSBidWlsdC1pbiBuYW1lKS5cblxuSXQgaXMgd3JpdHRlbiBhcyBgYEVsbGlwc2lzYGAgb3IgYGAuLi5gYC5cbicsCi0gJ2JsdGluLW51bGwtb2JqZWN0JzogIlxuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhwbGljaXRseSByZXR1cm4gYVxudmFsdWUuICBJdCBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBudWxsXG5vYmplY3QsIG5hbWVkIGBgTm9uZWBgIChhIGJ1aWx0LWluIG5hbWUpLlxuXG5JdCBpcyB3cml0dGVuIGFzIGBgTm9uZWBgLlxuIiwKKyAnYmx0aW4tZWxsaXBzaXMtb2JqZWN0JzogJ1xuVGhlIEVsbGlwc2lzIE9iamVjdFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGlzIG9iamVjdCBpcyBjb21tb25seSB1c2VkIGJ5IHNsaWNpbmcgKHNlZSAqU2xpY2luZ3MqKS4gIEl0IHN1cHBvcnRzXG5ubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBlbGxpcHNpcyBvYmplY3QsIG5hbWVkXG5gYEVsbGlwc2lzYGAgKGEgYnVpbHQtaW4gbmFtZSkuICBgYHR5cGUoRWxsaXBzaXMpKClgYCBwcm9kdWNlcyB0aGVcbmBgRWxsaXBzaXNgYCBzaW5nbGV0b24uXG5cbkl0IGlzIHdyaXR0ZW4gYXMgYGBFbGxpcHNpc2BgIG9yIGBgLi4uYGAuXG4nLAorICdibHRpbi1udWxsLW9iamVjdCc6ICJcblRoZSBOdWxsIE9iamVjdFxuKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvbid0IGV4cGxpY2l0bHkgcmV0dXJuIGFcbnZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbFxub2JqZWN0LCBuYW1lZCBgYE5vbmVgYCAoYSBidWlsdC1pbiBuYW1lKS4gIGBgdHlwZShOb25lKSgpYGAgcHJvZHVjZXNcbnRoZSBzYW1lIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyBgYE5vbmVgYC5cbiIsCiAgJ2JsdGluLXR5cGUtb2JqZWN0cyc6ICJcblR5cGUgT2JqZWN0c1xuKioqKioqKioqKioqXG5cblR5cGUgb2JqZWN0cyByZXByZXNlbnQgdGhlIHZhcmlvdXMgb2JqZWN0IHR5cGVzLiAgQW4gb2JqZWN0J3MgdHlwZSBpc1xuYWNjZXNzZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgdHlwZSgpYGAuICBUaGVyZSBhcmUgbm8gc3BlY2lhbFxub3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgYGB0eXBlc2BgIGRlZmluZXMgbmFtZXMgZm9yXG5hbGwgc3RhbmRhcmQgYnVpbHQtaW4gdHlwZXMuXG5cblR5cGVzIGFyZSB3cml0dGVuIGxpa2UgdGhpczogYGA8Y2xhc3MgJ2ludCc+YGAuXG4iLAogICdib29sZWFucyc6ICdcbkJvb2xlYW4gb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqXG5cbiAgIG9yX3Rlc3QgIDo6PSBhbmRfdGVzdCB8IG9yX3Rlc3QgIm9yIiBhbmRfdGVzdFxuICAgYW5kX3Rlc3QgOjo9IG5vdF90ZXN0IHwgYW5kX3Rlc3QgImFuZCIgbm90X3Rlc3RcbiAgIG5vdF90ZXN0IDo6PSBjb21wYXJpc29uIHwgIm5vdCIgbm90X3Rlc3RcblxuSW4gdGhlIGNvbnRleHQgb2YgQm9vbGVhbiBvcGVyYXRpb25zLCBhbmQgYWxzbyB3aGVuIGV4cHJlc3Npb25zIGFyZVxudXNlZCBieSBjb250cm9sIGZsb3cgc3RhdGVtZW50cywgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIGludGVycHJldGVkXG5hcyBmYWxzZTogYGBGYWxzZWBgLCBgYE5vbmVgYCwgbnVtZXJpYyB6ZXJvIG9mIGFsbCB0eXBlcywgYW5kIGVtcHR5XG5zdHJpbmdzIGFuZCBjb250YWluZXJzIChpbmNsdWRpbmcgc3RyaW5ncywgdHVwbGVzLCBsaXN0cyxcbmRpY3Rpb25hcmllcywgc2V0cyBhbmQgZnJvemVuc2V0cykuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSBpbnRlcnByZXRlZFxuYXMgdHJ1ZS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBjdXN0b21pemUgdGhlaXIgdHJ1dGggdmFsdWUgYnlcbnByb3ZpZGluZyBhIGBgX19ib29sX18oKWBgIG1ldGhvZC5cblxuVGhlIG9wZXJhdG9yIGBgbm90YGAgeWllbGRzIGBgVHJ1ZWBgIGlmIGl0cyBhcmd1bWVudCBpcyBmYWxzZSxcbmBgRmFsc2VgYCBvdGhlcndpc2UuXG5cblRoZSBleHByZXNzaW9uIGBgeCBhbmQgeWBgIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyBmYWxzZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuVGhlIGV4cHJlc3Npb24gYGB4IG9yIHlgYCBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgdHJ1ZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuKE5vdGUgdGhhdCBuZWl0aGVyIGBgYW5kYGAgbm9yIGBgb3JgYCByZXN0cmljdCB0aGUgdmFsdWUgYW5kIHR5cGUgdGhleVxucmV0dXJuIHRvIGBgRmFsc2VgYCBhbmQgYGBUcnVlYGAsIGJ1dCByYXRoZXIgcmV0dXJuIHRoZSBsYXN0IGV2YWx1YXRlZFxuYXJndW1lbnQuICBUaGlzIGlzIHNvbWV0aW1lcyB1c2VmdWwsIGUuZy4sIGlmIGBgc2BgIGlzIGEgc3RyaW5nIHRoYXRcbnNob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSBleHByZXNzaW9uXG5gYHMgb3IgXCdmb29cJ2BgIHlpZWxkcyB0aGUgZGVzaXJlZCB2YWx1ZS4gIEJlY2F1c2UgYGBub3RgYCBoYXMgdG9cbmludmVudCBhIHZhbHVlIGFueXdheSwgaXQgZG9lcyBub3QgYm90aGVyIHRvIHJldHVybiBhIHZhbHVlIG9mIHRoZVxuc2FtZSB0eXBlIGFzIGl0cyBhcmd1bWVudCwgc28gZS5nLiwgYGBub3QgXCdmb29cJ2BgIHlpZWxkcyBgYEZhbHNlYGAsXG5ub3QgYGBcJ1wnYGAuKVxuJywKICAnYnJlYWsnOiAnXG5UaGUgYGBicmVha2BgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgYnJlYWtfc3RtdCA6Oj0gImJyZWFrIlxuXG5gYGJyZWFrYGAgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBgYGZvcmBgIG9yXG5gYHdoaWxlYGAgbG9vcCwgYnV0IG5vdCBuZXN0ZWQgaW4gYSBmdW5jdGlvbiBvciBjbGFzcyBkZWZpbml0aW9uXG53aXRoaW4gdGhhdCBsb29wLlxuXG5JdCB0ZXJtaW5hdGVzIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsb29wLCBza2lwcGluZyB0aGUgb3B0aW9uYWxcbmBgZWxzZWBgIGNsYXVzZSBpZiB0aGUgbG9vcCBoYXMgb25lLlxuXG5JZiBhIGBgZm9yYGAgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5IGBgYnJlYWtgYCwgdGhlIGxvb3AgY29udHJvbCB0YXJnZXRcbmtlZXBzIGl0cyBjdXJyZW50IHZhbHVlLlxuXG5XaGVuIGBgYnJlYWtgYCBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIGFcbmBgZmluYWxseWBgIGNsYXVzZSwgdGhhdCBgYGZpbmFsbHlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxubGVhdmluZyB0aGUgbG9vcC5cbicsCkBAIC0xOCwxMyArMTksMTMgQEAKICAnY2FsbHMnOiAnXG5DYWxsc1xuKioqKipcblxuQSBjYWxsIGNhbGxzIGEgY2FsbGFibGUgb2JqZWN0IChlLmcuLCBhIGZ1bmN0aW9uKSB3aXRoIGEgcG9zc2libHlcbmVtcHR5IHNlcmllcyBvZiBhcmd1bWVudHM6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8IGNvbXByZWhlbnNpb25dICIpIlxuICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioiIGV4cHJlc3Npb25dIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkX2FyZ3VtZW50cyBbIiwiICIqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiIGtleXdvcmRfYXJndW1lbnRzXSBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwgIioiIGV4cHJlc3Npb24gWyIsIiBrZXl3b3JkX2FyZ3VtZW50c10gWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8ICIqKiIgZXhwcmVzc2lvblxuICAgcG9zaXRpb25hbF9hcmd1bWVudHMgOjo9IGV4cHJlc3Npb24gKCIsIiBleHByZXNzaW9uKSpcbiAgIGtleXdvcmRfYXJndW1lbnRzICAgIDo6PSBrZXl3b3JkX2l0ZW0gKCIsIiBrZXl3b3JkX2l0ZW0pKlxuICAga2V5d29yZF9pdGVtICAgICAgICAgOjo9IGlkZW50aWZpZXIgIj0iIGV4cHJlc3Npb25cblxuQSB0cmFpbGluZyBjb21tYSBtYXkgYmUgcHJlc2VudCBhZnRlciB0aGUgcG9zaXRpb25hbCBhbmQga2V5d29yZFxuYXJndW1lbnRzIGJ1dCBkb2VzIG5vdCBhZmZlY3QgdGhlIHNlbWFudGljcy5cblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhIGNhbGxhYmxlIG9iamVjdCAodXNlci1kZWZpbmVkXG5mdW5jdGlvbnMsIGJ1aWx0LWluIGZ1bmN0aW9ucywgbWV0aG9kcyBvZiBidWlsdC1pbiBvYmplY3RzLCBjbGFzc1xub2JqZWN0cywgbWV0aG9kcyBvZiBjbGFzcyBpbnN0YW5jZXMsIGFuZCBhbGwgb2JqZWN0cyBoYXZpbmcgYVxuYGBfX2NhbGxfXygpYGAgbWV0aG9kIGFyZSBjYWxsYWJsZSkuICBBbGwgYXJndW1lbnQgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4qRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdHMuXG5cbklmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwcmVzZW50LCB0aGV5IGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG9cbnBvc2l0aW9uYWwgYXJndW1lbnRzLCBhcyBmb2xsb3dzLiAgRmlyc3QsIGEgbGlzdCBvZiB1bmZpbGxlZCBzbG90cyBpc1xuY3JlYXRlZCBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXJzLiAgSWYgdGhlcmUgYXJlIE4gcG9zaXRpb25hbFxuYXJndW1lbnRzLCB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIGZpcnN0IE4gc2xvdHMuICBOZXh0LCBmb3IgZWFjaFxua2V5d29yZCBhcmd1bWVudCwgdGhlIGlkZW50aWZpZXIgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3QgKGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBmb3JtYWxcbnBhcmFtZXRlciBuYW1lLCB0aGUgZmlyc3Qgc2xvdCBpcyB1c2VkLCBhbmQgc28gb24pLiAgSWYgdGhlIHNsb3QgaXNcbmFscmVhZHkgZmlsbGVkLCBhIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbnZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBwbGFjZWQgaW4gdGhlIHNsb3QsIGZpbGxpbmcgaXQgKGV2ZW4gaWYgdGhlXG5leHByZXNzaW9uIGlzIGBgTm9uZWBgLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgaGF2ZVxuYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggdGhlXG5jb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIChEZWZhdWx0XG52YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsIGFcbm11dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlIHdpbGxcbmJlIHNoYXJlZCBieSBhbGwgY2FsbHMgdGhhdCBkb25cJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3Q7IHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgYXZvaWRlZC4pICBJZiB0aGVyZSBhcmUgYW55XG51bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGFcbmBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGxpc3Qgb2YgZmlsbGVkXG5zbG90cyBpcyB1c2VkIGFzIHRoZSBhcmd1bWVudCBsaXN0IGZvciB0aGUgY2FsbC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBBbiBpbXBsZW1lbnRhdGlvbiBtYXkgcHJvdmlkZVxuYnVpbHQtaW4gZnVuY3Rpb25zIHdob3NlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBuYW1lcywgZXZlblxuaWYgdGhleSBhcmUgXCduYW1lZFwnIGZvciB0aGUgcHVycG9zZSBvZiBkb2N1bWVudGF0aW9uLCBhbmQgd2hpY2hcbnRoZXJlZm9yZSBjYW5ub3QgYmUgc3VwcGxpZWQgYnkga2V5d29yZC4gIEluIENQeXRob24sIHRoaXMgaXMgdGhlIGNhc2VcbmZvciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgaW4gQyB0aGF0IHVzZSBgYFB5QXJnX1BhcnNlVHVwbGUoKWBgIHRvXG5wYXJzZSB0aGVpciBhcmd1bWVudHMuXG5cbklmIHRoZXJlIGFyZSBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRoYW4gdGhlcmUgYXJlIGZvcm1hbCBwYXJhbWV0ZXJcbnNsb3RzLCBhIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCBgYCppZGVudGlmaWVyYGAgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0IGZvcm1hbFxucGFyYW1ldGVyIHJlY2VpdmVzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzXG4ob3IgYW4gZW1wdHkgdHVwbGUgaWYgdGhlcmUgd2VyZSBubyBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHMpLlxuXG5JZiBhbnkga2V5d29yZCBhcmd1bWVudCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgZm9ybWFsIHBhcmFtZXRlclxubmFtZSwgYSBgYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggYGAqKmlkZW50aWZpZXJgYCBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXRcbmZvcm1hbCBwYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG5hcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG5jb3JyZXNwb25kaW5nIHZhbHVlcyksIG9yIGEgKG5ldykgZW1wdHkgZGljdGlvbmFyeSBpZiB0aGVyZSB3ZXJlIG5vXG5leGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG5cbklmIHRoZSBzeW50YXggYGAqZXhwcmVzc2lvbmBgIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG5gYGV4cHJlc3Npb25gYCBtdXN0IGV2YWx1YXRlIHRvIGFuIGl0ZXJhYmxlLiAgRWxlbWVudHMgZnJvbSB0aGlzXG5pdGVyYWJsZSBhcmUgdHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50cztcbmlmIHRoZXJlIGFyZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosIGFuZCBgYGV4cHJlc3Npb25gYFxuZXZhbHVhdGVzIHRvIGEgc2VxdWVuY2UgKnkxKiwgLi4uLCAqeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsXG53aXRoIE0rTiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosICp5MSosIC4uLiwgKnlNKi5cblxuQSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgYWx0aG91Z2ggdGhlIGBgKmV4cHJlc3Npb25gYCBzeW50YXggbWF5XG5hcHBlYXIgKmFmdGVyKiBzb21lIGtleXdvcmQgYXJndW1lbnRzLCBpdCBpcyBwcm9jZXNzZWQgKmJlZm9yZSogdGhlXG5rZXl3b3JkIGFyZ3VtZW50cyAoYW5kIHRoZSBgYCoqZXhwcmVzc2lvbmBgIGFyZ3VtZW50LCBpZiBhbnkgLS0gc2VlXG5iZWxvdykuICBTbzpcblxuICAgPj4+IGRlZiBmKGEsIGIpOlxuICAgLi4uICBwcmludChhLCBiKVxuICAgLi4uXG4gICA+Pj4gZihiPTEsICooMiwpKVxuICAgMiAxXG4gICA+Pj4gZihhPTEsICooMiwpKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50IFwnYVwnXG4gICA+Pj4gZigxLCAqKDIsKSlcbiAgIDEgMlxuXG5JdCBpcyB1bnVzdWFsIGZvciBib3RoIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGUgYGAqZXhwcmVzc2lvbmBgXG5zeW50YXggdG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzXG5ub3QgYXJpc2UuXG5cbklmIHRoZSBzeW50YXggYGAqKmV4cHJlc3Npb25gYCBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLFxuYGBleHByZXNzaW9uYGAgbXVzdCBldmFsdWF0ZSB0byBhIG1hcHBpbmcsIHRoZSBjb250ZW50cyBvZiB3aGljaCBhcmVcbnRyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIEluIHRoZSBjYXNlIG9mIGEga2V5d29yZFxuYXBwZWFyaW5nIGluIGJvdGggYGBleHByZXNzaW9uYGAgYW5kIGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsXG5hIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC5cblxuRm9ybWFsIHBhcmFtZXRlcnMgdXNpbmcgdGhlIHN5bnRheCBgYCppZGVudGlmaWVyYGAgb3IgYGAqKmlkZW50aWZpZXJgYFxuY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG5uYW1lcy5cblxuQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5IGBgTm9uZWBgLCB1bmxlc3MgaXQgcmFpc2VzXG5hbiBleGNlcHRpb24uICBIb3cgdGhpcyB2YWx1ZSBpcyBjb21wdXRlZCBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIHRoZVxuY2FsbGFibGUgb2JqZWN0LlxuXG5JZiBpdCBpcy0tLVxuXG5hIHVzZXItZGVmaW5lZCBmdW5jdGlvbjpcbiAgIFRoZSBjb2RlIGJsb2NrIGZvciB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQsIHBhc3NpbmcgaXQgdGhlXG4gICBhcmd1bWVudCBsaXN0LiAgVGhlIGZpcnN0IHRoaW5nIHRoZSBjb2RlIGJsb2NrIHdpbGwgZG8gaXMgYmluZCB0aGVcbiAgIGZvcm1hbCBwYXJhbWV0ZXJzIHRvIHRoZSBhcmd1bWVudHM7IHRoaXMgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb25cbiAgICpGdW5jdGlvbiBkZWZpbml0aW9ucyouICBXaGVuIHRoZSBjb2RlIGJsb2NrIGV4ZWN1dGVzIGEgYGByZXR1cm5gYFxuICAgc3RhdGVtZW50LCB0aGlzIHNwZWNpZmllcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsLlxuXG5hIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZDpcbiAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgKkJ1aWx0LWluIEZ1bmN0aW9ucyogZm9yXG4gICB0aGUgZGVzY3JpcHRpb25zIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy5cblxuYSBjbGFzcyBvYmplY3Q6XG4gICBBIG5ldyBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIGlzIHJldHVybmVkLlxuXG5hIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbiAgIFRoZSBjb3JyZXNwb25kaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHdpdGggYW4gYXJndW1lbnRcbiAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuICAgaW5zdGFuY2UgYmVjb21lcyB0aGUgZmlyc3QgYXJndW1lbnQuXG5cbmEgY2xhc3MgaW5zdGFuY2U6XG4gICBUaGUgY2xhc3MgbXVzdCBkZWZpbmUgYSBgYF9fY2FsbF9fKClgYCBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlblxuICAgdGhlIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCiAgJ2NsYXNzJzogJ1xuQ2xhc3MgZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzIGBgb2JqZWN0YGA7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCBgYHNlbGYubmFtZSA9IHZhbHVlYGAuICBCb3RoIGNsYXNzIGFuZFxuaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvblxuImBgc2VsZi5uYW1lYGAiLCBhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlXG53aXRoIHRoZSBzYW1lIG5hbWUgd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlXG51c2VkIGFzIGRlZmF1bHRzIGZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXNcbnRoZXJlIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG9cbmNyZWF0ZSBpbnN0YW5jZSB2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtIENsYXNzXG4gICBEZWNvcmF0b3JzXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzcyB0aGVyZVxuICAgIGlzIGEgYGBmaW5hbGx5YGAgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlciBleGNlcHRpb24uXG4gICAgVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSBsb3N0LlxuXG5bMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGFuXG4gICAgZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSBgYHJldHVybmBgLCBgYGNvbnRpbnVlYGAsIG9yXG4gICAgYGBicmVha2BgIHN0YXRlbWVudC5cblxuWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGZ1bmN0aW9uXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyBgYF9fZG9jX19gYCBhdHRyaWJ1dGUgYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgYGBfX2RvY19fYGAgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKICAnY29tcGFyaXNvbnMnOiAnXG5Db21wYXJpc29uc1xuKioqKioqKioqKipcblxuVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHksXG53aGljaCBpcyBsb3dlciB0aGFuIHRoYXQgb2YgYW55IGFyaXRobWV0aWMsIHNoaWZ0aW5nIG9yIGJpdHdpc2Vcbm9wZXJhdGlvbi4gIEFsc28gdW5saWtlIEMsIGV4cHJlc3Npb25zIGxpa2UgYGBhIDwgYiA8IGNgYCBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiBgYFRydWVgYCBvciBgYEZhbHNlYGAuXG5cbkNvbXBhcmlzb25zIGNhbiBiZSBjaGFpbmVkIGFyYml0cmFyaWx5LCBlLmcuLCBgYHggPCB5IDw9IHpgYCBpc1xuZXF1aXZhbGVudCB0byBgYHggPCB5IGFuZCB5IDw9IHpgYCwgZXhjZXB0IHRoYXQgYGB5YGAgaXMgZXZhbHVhdGVkXG5vbmx5IG9uY2UgKGJ1dCBpbiBib3RoIGNhc2VzIGBgemBgIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gYGB4IDxcbnlgYCBpcyBmb3VuZCB0byBiZSBmYWxzZSkuXG5cbkZvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgKm9wMSosXG4qb3AyKiwgLi4uLCAqb3BOKiBhcmUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIHRoZW4gYGBhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4gemBgIGlzIGVxdWl2YWxlbnQgdG8gYGBhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4gemBgLFxuZXhjZXB0IHRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCBgYGEgb3AxIGIgb3AyIGNgYCBkb2VzblwndCBpbXBseSBhbnkga2luZCBvZiBjb21wYXJpc29uXG5iZXR3ZWVuICphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCBgYHggPCB5ID4gemBgIGlzIHBlcmZlY3RseSBsZWdhbFxuKHRob3VnaCBwZXJoYXBzIG5vdCBwcmV0dHkpLlxuXG5UaGUgb3BlcmF0b3JzIGBgPGBgLCBgYD5gYCwgYGA9PWBgLCBgYD49YGAsIGBgPD1gYCwgYW5kIGBgIT1gYCBjb21wYXJlXG50aGUgdmFsdWVzIG9mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgbmVlZCBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlLlxuSWYgYm90aCBhcmUgbnVtYmVycywgdGhleSBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBPdGhlcndpc2UsXG50aGUgYGA9PWBgIGFuZCBgYCE9YGAgb3BlcmF0b3JzICphbHdheXMqIGNvbnNpZGVyIG9iamVjdHMgb2YgZGlmZmVyZW50XG50eXBlcyB0byBiZSB1bmVxdWFsLCB3aGlsZSB0aGUgYGA8YGAsIGBgPmBgLCBgYD49YGAgYW5kIGBgPD1gYFxub3BlcmF0b3JzIHJhaXNlIGEgYGBUeXBlRXJyb3JgYCB3aGVuIGNvbXBhcmluZyBvYmplY3RzIG9mIGRpZmZlcmVudFxudHlwZXMgdGhhdCBkbyBub3QgaW1wbGVtZW50IHRoZXNlIG9wZXJhdG9ycyBmb3IgdGhlIGdpdmVuIHBhaXIgb2ZcbnR5cGVzLiAgWW91IGNhbiBjb250cm9sIGNvbXBhcmlzb24gYmVoYXZpb3Igb2Ygb2JqZWN0cyBvZiBub24tYnVpbHQtaW5cbnR5cGVzIGJ5IGRlZmluaW5nIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGxpa2UgYGBfX2d0X18oKWBgLCBkZXNjcmliZWRcbmluIHNlY3Rpb24gKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIHNhbWUgdHlwZSBkZXBlbmRzIG9uIHRoZSB0eXBlOlxuXG4qIE51bWJlcnMgYXJlIGNvbXBhcmVkIGFyaXRobWV0aWNhbGx5LlxuXG4qIFRoZSB2YWx1ZXMgYGBmbG9hdChcJ05hTlwnKWBgIGFuZCBgYERlY2ltYWwoXCdOYU5cJylgYCBhcmUgc3BlY2lhbC4gVGhlXG4gIGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcywgYGB4IGlzIHhgYCBidXQgYXJlIG5vdCBlcXVhbCB0b1xuICB0aGVtc2VsdmVzLCBgYHggIT0geGBgLiAgQWRkaXRpb25hbGx5LCBjb21wYXJpbmcgYW55IHZhbHVlIHRvIGFcbiAgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuIGBgRmFsc2VgYC4gIEZvciBleGFtcGxlLCBib3RoIGBgMyA8XG4gIGZsb2F0KFwnTmFOXCcpYGAgYW5kIGBgZmxvYXQoXCdOYU5cJykgPCAzYGAgd2lsbCByZXR1cm4gYGBGYWxzZWBgLlxuXG4qIEJ5dGVzIG9iamVjdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljXG4gIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpYyBlcXVpdmFsZW50c1xuICAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBvcmQoKWBgKSBvZiB0aGVpciBjaGFyYWN0ZXJzLlxuICBbM10gU3RyaW5nIGFuZCBieXRlcyBvYmplY3QgY2FuXCd0IGJlIGNvbXBhcmVkIVxuXG4qIFR1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb24gb2ZcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBlYWNoXG4gIGVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG4gIHR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuXG4gIElmIG5vdCBlcXVhbCwgdGhlIHNlcXVlbmNlcyBhcmUgb3JkZXJlZCB0aGUgc2FtZSBhcyB0aGVpciBmaXJzdFxuICBkaWZmZXJpbmcgZWxlbWVudHMuICBGb3IgZXhhbXBsZSwgYGBbMSwyLHhdIDw9IFsxLDIseV1gYCBoYXMgdGhlXG4gIHNhbWUgdmFsdWUgYXMgYGB4IDw9IHlgYC4gIElmIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lcyBub3RcbiAgZXhpc3QsIHRoZSBzaG9ydGVyIHNlcXVlbmNlIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCBgYFsxLDJdIDxcbiAgWzEsMiwzXWBgKS5cblxuKiBNYXBwaW5ncyAoZGljdGlvbmFyaWVzKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGVcbiAgc2FtZSBgYChrZXksIHZhbHVlKWBgIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyBgYChcJzxcJywgXCc8PVwnLCBcJz49XCcsXG4gIFwnPlwnKWBgIHJhaXNlIGBgVHlwZUVycm9yYGAuXG5cbiogU2V0cyBhbmQgZnJvemVuc2V0cyBkZWZpbmUgY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gbWVhbiBzdWJzZXQgYW5kXG4gIHN1cGVyc2V0IHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzICh0aGVcbiAgdHdvIHNldHMgYGB7MSwyfWBgIGFuZCB7MiwzfSBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyBvZiBvbmVcbiAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgbm90XG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCBvcmRlcmluZy5cbiAgRm9yIGV4YW1wbGUsIGBgbWluKClgYCwgYGBtYXgoKWBgLCBhbmQgYGBzb3J0ZWQoKWBgIHByb2R1Y2VcbiAgdW5kZWZpbmVkIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzLlxuXG4qIE1vc3Qgb3RoZXIgb2JqZWN0cyBvZiBidWlsdC1pbiB0eXBlcyBjb21wYXJlIHVuZXF1YWwgdW5sZXNzIHRoZXkgYXJlXG4gIHRoZSBzYW1lIG9iamVjdDsgdGhlIGNob2ljZSB3aGV0aGVyIG9uZSBvYmplY3QgaXMgY29uc2lkZXJlZCBzbWFsbGVyXG4gIG9yIGxhcmdlciB0aGFuIGFub3RoZXIgb25lIGlzIG1hZGUgYXJiaXRyYXJpbHkgYnV0IGNvbnNpc3RlbnRseVxuICB3aXRoaW4gb25lIGV4ZWN1dGlvbiBvZiBhIHByb2dyYW0uXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgZGlmZmVyaW5nIHR5cGVzIGRlcGVuZHMgb24gd2hldGhlciBlaXRoZXJcbm9mIHRoZSB0eXBlcyBwcm92aWRlIGV4cGxpY2l0IHN1cHBvcnQgZm9yIHRoZSBjb21wYXJpc29uLiAgTW9zdFxubnVtZXJpYyB0eXBlcyBjYW4gYmUgY29tcGFyZWQgd2l0aCBvbmUgYW5vdGhlciwgYnV0IGNvbXBhcmlzb25zIG9mXG5gYGZsb2F0YGAgYW5kIGBgRGVjaW1hbGBgIGFyZSBub3Qgc3VwcG9ydGVkIHRvIGF2b2lkIHRoZSBpbmV2aXRhYmxlXG5jb25mdXNpb24gYXJpc2luZyBmcm9tIHJlcHJlc2VudGF0aW9uIGlzc3VlcyBzdWNoIGFzIGBgZmxvYXQoXCcxLjFcJylgYFxuYmVpbmcgaW5leGFjdGx5IHJlcHJlc2VudGVkIGFuZCB0aGVyZWZvcmUgbm90IGV4YWN0bHkgZXF1YWwgdG9cbmBgRGVjaW1hbChcJzEuMVwnKWBgIHdoaWNoIGlzLiAgV2hlbiBjcm9zcy10eXBlIGNvbXBhcmlzb24gaXMgbm90XG5zdXBwb3J0ZWQsIHRoZSBjb21wYXJpc29uIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYC4gIFRoaXMgY2FuXG5jcmVhdGUgdGhlIGlsbHVzaW9uIG9mIG5vbi10cmFuc2l0aXZpdHkgYmV0d2VlbiBzdXBwb3J0ZWQgY3Jvc3MtdHlwZVxuY29tcGFyaXNvbnMgYW5kIHVuc3VwcG9ydGVkIGNvbXBhcmlzb25zLiAgRm9yIGV4YW1wbGUsIGBgRGVjaW1hbCgyKSA9PVxuMmBgIGFuZCBgYDIgPT0gZmxvYXQoMilgYCBidXQgYGBEZWNpbWFsKDIpICE9IGZsb2F0KDIpYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIHRlc3QgZm9yIG1lbWJlcnNoaXAuICBgYHggaW4gc2BgXG5ldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgYGB4XG5ub3QgaW4gc2BgIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIGBgeCBpbiBzYGAuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCBgYGluYGBcbnRlc3RzIHdoZXRoZXIgYSB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXNcbnN1Y2ggYXMgbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uIGBgeCBpbiB5YGAgaXMgZXF1aXZhbGVudCB0byBgYGFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KWBgLlxuXG5Gb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCpcbmlzIGEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyBgYHkuZmluZCh4KSAhPSAtMWBgLlxuRW1wdHkgc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyXG5zdHJpbmcsIHNvIGBgIiIgaW4gImFiYyJgYCB3aWxsIHJldHVybiBgYFRydWVgYC5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCxcbmBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBgYHkuX19jb250YWluc19fKHgpYGAgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgIGJ1dCBkb1xuZGVmaW5lIGBgX19pdGVyX18oKWBgLCBgYHggaW4geWBgIGlzIHRydWUgaWYgc29tZSB2YWx1ZSBgYHpgYCB3aXRoIGBgeFxuPT0gemBgIGlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGBgeWBgLiAgSWYgYW4gZXhjZXB0aW9uIGlzXG5yYWlzZWQgZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmIGBgaW5gYCByYWlzZWQgdGhhdCBleGNlcHRpb24uXG5cbkxhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuYGBfX2dldGl0ZW1fXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCBgYHggPT0geVtpXWBgLCBhbmQgYWxsIGxvd2VyXG5pbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlIGBgSW5kZXhFcnJvcmBgIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmIGBgaW5gYCByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgYGBub3QgaW5gYCBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuYGBpbmBgLlxuXG5UaGUgb3BlcmF0b3JzIGBgaXNgYCBhbmQgYGBpcyBub3RgYCB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6IGBgeCBpc1xueWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gIGBgeCBpc1xubm90IHlgYCB5aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKLSAnY29tcG91bmQnOiAnXG5Db21wb3VuZCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29udGFpbiAoZ3JvdXBzIG9mKSBvdGhlciBzdGF0ZW1lbnRzOyB0aGV5IGFmZmVjdFxub3IgY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRob3NlIG90aGVyIHN0YXRlbWVudHMgaW4gc29tZSB3YXkuICBJblxuZ2VuZXJhbCwgY29tcG91bmQgc3RhdGVtZW50cyBzcGFuIG11bHRpcGxlIGxpbmVzLCBhbHRob3VnaCBpbiBzaW1wbGVcbmluY2FybmF0aW9ucyBhIHdob2xlIGNvbXBvdW5kIHN0YXRlbWVudCBtYXkgYmUgY29udGFpbmVkIGluIG9uZSBsaW5lLlxuXG5UaGUgYGBpZmBgLCBgYHdoaWxlYGAgYW5kIGBgZm9yYGAgc3RhdGVtZW50cyBpbXBsZW1lbnQgdHJhZGl0aW9uYWxcbmNvbnRyb2wgZmxvdyBjb25zdHJ1Y3RzLiAgYGB0cnlgYCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vclxuY2xlYW51cCBjb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYVxuYmxvY2sgb2YgY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5XG5jb21wb3VuZCBzdGF0ZW1lbnRzLlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnNpc3Qgb2Ygb25lIG9yIG1vcmUgXCdjbGF1c2VzLlwnICBBIGNsYXVzZVxuY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgXCdzdWl0ZS5cJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbnBhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwuXG5FYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkIGFuZCBlbmRzXG53aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbmNsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG5zdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSBoZWFkZXJcJ3NcbmNvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiBzdWJzZXF1ZW50XG5saW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCBjb21wb3VuZFxuc3RhdGVtZW50czsgdGhlIGZvbGxvd2luZyBpcyBpbGxlZ2FsLCBtb3N0bHkgYmVjYXVzZSBpdCB3b3VsZG5cJ3QgYmVcbmNsZWFyIHRvIHdoaWNoIGBgaWZgYCBjbGF1c2UgYSBmb2xsb3dpbmcgYGBlbHNlYGAgY2xhdXNlIHdvdWxkIGJlbG9uZzpcblxuICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuXG5BbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gdGhpc1xuY29udGV4dCwgc28gdGhhdCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGVcbmBgcHJpbnQoKWBgIGNhbGxzIGFyZSBleGVjdXRlZDpcblxuICAgaWYgeCA8IHkgPCB6OiBwcmludCh4KTsgcHJpbnQoeSk7IHByaW50KHopXG5cblN1bW1hcml6aW5nOlxuXG4gICBjb21wb3VuZF9zdG10IDo6PSBpZl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdoaWxlX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZm9yX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgdHJ5X3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2l0aF9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZ1bmNkZWZcbiAgICAgICAgICAgICAgICAgICAgIHwgY2xhc3NkZWZcbiAgIHN1aXRlICAgICAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgc3RhdGVtZW50KyBERURFTlRcbiAgIHN0YXRlbWVudCAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgY29tcG91bmRfc3RtdFxuICAgc3RtdF9saXN0ICAgICA6Oj0gc2ltcGxlX3N0bXQgKCI7IiBzaW1wbGVfc3RtdCkqIFsiOyJdXG5cbk5vdGUgdGhhdCBzdGF0ZW1lbnRzIGFsd2F5cyBlbmQgaW4gYSBgYE5FV0xJTkVgYCBwb3NzaWJseSBmb2xsb3dlZCBieVxuYSBgYERFREVOVGBgLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzXG5iZWdpbiB3aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbmFtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyBgYGVsc2VgYFwnIHByb2JsZW0gaXMgc29sdmVkIGluIFB5dGhvbiBieVxucmVxdWlyaW5nIG5lc3RlZCBgYGlmYGAgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG5cblRoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcGxhY2VzXG5lYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG5cblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgYGBpZmBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cblxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgd2hpbGVgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmIHByZXNlbnQsIGlzXG5leGVjdXRlZCBhbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuZ29lcyBiYWNrIHRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG5cblxuVGhlIGBgZm9yYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgZm9yYGAgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhXG5zZXF1ZW5jZSAoc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbmBgZXhwcmVzc2lvbl9saXN0YGAuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIG9mIGFzY2VuZGluZyBpbmRpY2VzLiAgRWFjaFxuaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgcnVsZXNcbmZvciBhc3NpZ25tZW50cyAoc2VlICpBc3NpZ25tZW50IHN0YXRlbWVudHMqKSwgYW5kIHRoZW4gdGhlIHN1aXRlIGlzXG5leGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gdGhlXG5zZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSBgYFN0b3BJdGVyYXRpb25gYFxuZXhjZXB0aW9uKSwgdGhlIHN1aXRlIGluIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgYGBicmVha2BgIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlIGBgZWxzZWBgIGNsYXVzZVwncyBzdWl0ZS4gIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmRcbmNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlIGBgZWxzZWBgIGNsYXVzZSBpZiB0aGVyZSB3YXNcbm5vIG5leHQgaXRlbS5cblxuVGhlIHN1aXRlIG1heSBhc3NpZ24gdG8gdGhlIHZhcmlhYmxlKHMpIGluIHRoZSB0YXJnZXQgbGlzdDsgdGhpcyBkb2VzXG5ub3QgYWZmZWN0IHRoZSBuZXh0IGl0ZW0gYXNzaWduZWQgdG8gaXQuXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIGl0IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBhdCBhbGxcbmJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgcmFuZ2UoKWBgIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgYGBmb3JcbmkgOj0gYSB0byBiIGRvYGA7IGUuZy4sIGBgbGlzdChyYW5nZSgzKSlgYCByZXR1cm5zIHRoZSBsaXN0IGBgWzAsIDEsXG4yXWBgLlxuXG5Ob3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZSBsb29wXG4gICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICBBblxuICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCxcbiAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciBoYXNcbiAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyBtZWFuc1xuICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gdGhlXG4gIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggb2ZcbiAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmIHRoZVxuICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCB0aGVcbiAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuXG4gIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4gIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuXG4gICAgIGZvciB4IGluIGFbOl06XG4gICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcblxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIHRhcmdldF1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlIGBgZXhjZXB0YGAgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuXG5ubyBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgc3VpdGUsIGEgc2VhcmNoIGZvclxuYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHRcbmNsYXVzZXMgaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBblxuZXhwcmVzc2lvbi1sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlc1xuYW55IGV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdFxuZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGVcbnJlc3VsdGluZyBvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpc1xuY29tcGF0aWJsZSB3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZVxuZXhjZXB0aW9uIG9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlXG5leGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgYGB0cnlgYCBzdGF0ZW1lbnRcbnJhaXNlZCB0aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSBgYGFzYGAga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsXG5pZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nIGBgYXMgdGFyZ2V0YGAsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIGBgc3lzYGAgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzIHZpYVxuYGBzeXMuZXhjX2luZm8oKWBgLiBgYHN5cy5leGNfaW5mbygpYGAgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZlxudGhlIGV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0XG4oc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpblxudGhlIHByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gIGBgc3lzLmV4Y19pbmZvKClgYCB2YWx1ZXNcbmFyZSByZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgYGBlbHNlYGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSBgYHRyeWBgIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZVxuYXJlIG5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgYGBleGNlcHRgYCBjbGF1c2VzLlxuXG5JZiBgYGZpbmFsbHlgYCBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlXG5gYHRyeWBgIGNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSBgYGV4Y2VwdGBgIGFuZCBgYGVsc2VgYFxuY2xhdXNlcy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3RcbmhhbmRsZWQsIHRoZSBleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgaXNcbmV4ZWN1dGVkLiAgSWYgdGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24sIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kXG5vZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiBJZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIHJhaXNlcyBhbm90aGVyXG5leGNlcHRpb24gb3IgZXhlY3V0ZXMgYSBgYHJldHVybmBgIG9yIGBgYnJlYWtgYCBzdGF0ZW1lbnQsIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gIFRoZSBleGNlcHRpb25cbmluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGVcbmBgZmluYWxseWBgIGNsYXVzZS5cblxuV2hlbiBhIGBgcmV0dXJuYGAsIGBgYnJlYWtgYCBvciBgYGNvbnRpbnVlYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluXG50aGUgYGB0cnlgYCBzdWl0ZSBvZiBhIGBgdHJ5YGAuLi5gYGZpbmFsbHlgYCBzdGF0ZW1lbnQsIHRoZVxuYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGlzIGlsbGVnYWwgaW4gdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYVxucHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZVxubGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBgYHJhaXNlYGAgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb25cbmBgdHJ5YGAuLi5gYGV4Y2VwdGBgLi4uYGBmaW5hbGx5YGAgdXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkXG5mb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYGB3aXRoX2l0ZW1gYClcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2VudGVyX18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlIGBgd2l0aGBgIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSBgYF9fZW50ZXJfXygpYGAgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSBgYF9fZW50ZXJfXygpYGBcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiBgYF9fZXhpdF9fKClgYCB3aWxsIGFsd2F5c1xuICAgICBiZSBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYGBfX2V4aXRfXygpYGAuIE90aGVyd2lzZSxcbiAgIHRocmVlIGBgTm9uZWBgIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSBgYF9fZXhpdF9fKClgYCBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICByZXJhaXNlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXNcbiAgIHN1cHByZXNzZWQsIGFuZCBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmdcbiAgIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tIGBgX19leGl0X18oKWBgIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSBgYHdpdGhgYCBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKlxuICAgICAgICAgICAgICAgICAgICAgIFssICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogYGA9YGBcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25cbmlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb25jZSwgd2hlblxudGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlIGlzXG51c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgd2hlbiBhXG5kZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGEgbGlzdCBvciBhIGRpY3Rpb25hcnk6XG5pZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSB0byBhXG5saXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzIGdlbmVyYWxseSBub3RcbndoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlIGBgTm9uZWBgIGFzIHRoZVxuZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cblxuXG5DbGFzcyBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT1cblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgYGBvYmplY3RgYDsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbzogcGFzc1xuICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuXG5UaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yXG5mdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCBpcyB0aGVuXG5ib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gYXJlXG5jbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgYXR0cmlidXRlc1xuY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoIGBgc2VsZi5uYW1lID0gdmFsdWVgYC4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uXG4iYGBzZWxmLm5hbWVgYCIsIGFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGVcbndpdGggdGhlIHNhbWUgbmFtZSB3aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmVcbnVzZWQgYXMgZGVmYXVsdHMgZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlc1xudGhlcmUgY2FuIGxlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0b1xuY3JlYXRlIGluc3RhbmNlIHZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC0gQ2xhc3NcbiAgIERlY29yYXRvcnNcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzIHRoZXJlXG4gICAgaXMgYSBgYGZpbmFsbHlgYCBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyIGV4Y2VwdGlvbi5cbiAgICBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgYW5cbiAgICBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhIGBgcmV0dXJuYGAsIGBgY29udGludWVgYCwgb3JcbiAgICBgYGJyZWFrYGAgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgZnVuY3Rpb25cbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzIGBgX19kb2NfX2BgIGF0dHJpYnV0ZSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uXCdzICpkb2NzdHJpbmcqLlxuXG5bNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgY2xhc3NcbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyBgYF9fZG9jX19gYCBpdGVtIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgY2xhc3NcJ3MgKmRvY3N0cmluZyouXG4nLAorICdjb21wb3VuZCc6ICdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSBgYGlmYGAsIGBgd2hpbGVgYCBhbmQgYGBmb3JgYCBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbFxuY29udHJvbCBmbG93IGNvbnN0cnVjdHMuICBgYHRyeWBgIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yXG5jbGVhbnVwIGNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhXG5ibG9jayBvZiBjb2RlLiAgRnVuY3Rpb24gYW5kIGNsYXNzIGRlZmluaXRpb25zIGFyZSBhbHNvIHN5bnRhY3RpY2FsbHlcbmNvbXBvdW5kIHN0YXRlbWVudHMuXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29uc2lzdCBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2Ygc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggYGBpZmBgIGNsYXVzZSBhIGZvbGxvd2luZyBgYGVsc2VgYCBjbGF1c2Ugd291bGQgYmVsb25nOlxuXG4gICBpZiB0ZXN0MTogaWYgdGVzdDI6IHByaW50KHgpXG5cbkFsc28gbm90ZSB0aGF0IHRoZSBzZW1pY29sb24gYmluZHMgdGlnaHRlciB0aGFuIHRoZSBjb2xvbiBpbiB0aGlzXG5jb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mIHRoZVxuYGBwcmludCgpYGAgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhIGBgTkVXTElORWBgIHBvc3NpYmx5IGZvbGxvd2VkIGJ5XG5hIGBgREVERU5UYGAuICBBbHNvIG5vdGUgdGhhdCBvcHRpb25hbCBjb250aW51YXRpb24gY2xhdXNlcyBhbHdheXNcbmJlZ2luIHdpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuYW1iaWd1aXRpZXMgKHRoZSBcJ2RhbmdsaW5nIGBgZWxzZWBgXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkIGBgaWZgYCBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXNcbmV4ZWN1dGVkIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5nb2VzIGJhY2sgdG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFcbnNlcXVlbmNlIChzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuYGBleHByZXNzaW9uX2xpc3RgYC4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhIGBgU3RvcEl0ZXJhdGlvbmBgXG5leGNlcHRpb24pLCB0aGUgc3VpdGUgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuY29udGludWVzIHdpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgYGBlbHNlYGAgY2xhdXNlIGlmIHRoZXJlIHdhc1xubm8gbmV4dCBpdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbFxuYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGByYW5nZSgpYGAgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyBgYGZvclxuaSA6PSBhIHRvIGIgZG9gYDsgZS5nLiwgYGBsaXN0KHJhbmdlKDMpKWBgIHJldHVybnMgdGhlIGxpc3QgYGBbMCwgMSxcbjJdYGAuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlIGxvb3BcbiAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgYGBleGNlcHRgYCBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW5cbm5vIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBzdWl0ZSwgYSBzZWFyY2ggZm9yXG5hbiBleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdFxuY2xhdXNlcyBpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuXG5leHByZXNzaW9uLWxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzXG5hbnkgZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0XG5leHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZVxucmVzdWx0aW5nIG9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzXG5jb21wYXRpYmxlIHdpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlXG5leGNlcHRpb24gb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGVcbmV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSBgYHRyeWBgIHN0YXRlbWVudFxucmFpc2VkIHRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlIGBgYXNgYCBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSxcbmlmIHByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgYGBhcyB0YXJnZXRgYCwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgYGBzeXNgYCBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3MgdmlhXG5gYHN5cy5leGNfaW5mbygpYGAuIGBgc3lzLmV4Y19pbmZvKClgYCByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mXG50aGUgZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3RcbihzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluXG50aGUgcHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgYGBzeXMuZXhjX2luZm8oKWBgIHZhbHVlc1xuYXJlIHJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCBgYGVsc2VgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlIGBgdHJ5YGAgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlXG5hcmUgbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyBgYGV4Y2VwdGBgIGNsYXVzZXMuXG5cbklmIGBgZmluYWxseWBgIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGVcbmBgdHJ5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55IGBgZXhjZXB0YGAgYW5kIGBgZWxzZWBgXG5jbGF1c2VzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdFxuaGFuZGxlZCwgdGhlIGV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlIGBgZmluYWxseWBgIGNsYXVzZSBpc1xuZXhlY3V0ZWQuICBJZiB0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBvciBgYGJyZWFrYGAgc3RhdGVtZW50LCBpdCBpc1xucmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gSWYgdGhlIGBgZmluYWxseWBgXG5jbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uIHRoZSBzYXZlZCBleGNlcHRpb24gaXMgc2V0IGFzIHRoZVxuY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbjsgaWYgdGhlIGBgZmluYWxseWBgIGNsYXVzZSBleGVjdXRlcyBhXG5gYHJldHVybmBgIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvbiBpcyBkaXNjYXJkZWQ6XG5cbiAgIGRlZiBmKCk6XG4gICAgICAgdHJ5OlxuICAgICAgICAgICAxLzBcbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICByZXR1cm4gNDJcblxuICAgPj4+IGYoKVxuICAgNDJcblxuVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuZXhlY3V0aW9uIG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuXG5cbldoZW4gYSBgYHJldHVybmBgLCBgYGJyZWFrYGAgb3IgYGBjb250aW51ZWBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpblxudGhlIGBgdHJ5YGAgc3VpdGUgb2YgYSBgYHRyeWBgLi4uYGBmaW5hbGx5YGAgc3RhdGVtZW50LCB0aGVcbmBgZmluYWxseWBgIGNsYXVzZSBpcyBhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBpcyBpbGxlZ2FsIGluIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGFcbnByb2JsZW0gd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmVcbmxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgYGByYWlzZWBgIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG5cblxuVGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxubWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiAqV2l0aCBTdGF0ZW1lbnRcbkNvbnRleHQgTWFuYWdlcnMqKS4gVGhpcyBhbGxvd3MgY29tbW9uXG5gYHRyeWBgLi4uYGBleGNlcHRgYC4uLmBgZmluYWxseWBgIHVzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZFxuZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyBhc1xuZm9sbG93czpcblxuMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlIGBgd2l0aF9pdGVtYGApXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19leGl0X18oKWBgIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19lbnRlcl9fKClgYCBtZXRob2QgaXMgaW52b2tlZC5cblxuNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gYGBfX2VudGVyX18oKWBgIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgYGB3aXRoYGAgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgYGBfX2VudGVyX18oKWBgXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gYGBfX2V4aXRfXygpYGAgd2lsbCBhbHdheXNcbiAgICAgYmUgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgbWV0aG9kIGlzIGludm9rZWQuICBJZiBhblxuICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsIGFuZFxuICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIGBgX19leGl0X18oKWBgLiBPdGhlcndpc2UsXG4gICB0aHJlZSBgYE5vbmVgYCBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgYGBfX2V4aXRfXygpYGAgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpc1xuICAgcmVyYWlzZWQuICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICBzdXBwcmVzc2VkLCBhbmQgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nXG4gICB0aGUgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgdGhlXG4gICByZXR1cm4gdmFsdWUgZnJvbSBgYF9fZXhpdF9fKClgYCBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgYGB3aXRoYGAgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvblxuICAgICAgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG5cbkZ1bmN0aW9uIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PT09PVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbcGFyYW1ldGVyX2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbiAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4gICAgICAgICAgICAgICAgICAgICAgKCAgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSpcbiAgICAgICAgICAgICAgICAgICAgICBbLCAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgcGFyYW1ldGVycyBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqIGBgPWBgXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgImBgKmBgIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tXG50aGlzIGlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uXG5pcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIG9uY2UsIHdoZW5cbnRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLWNvbXB1dGVkIiB2YWx1ZSBpc1xudXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHdoZW4gYVxuZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhIGxpc3Qgb3IgYSBkaWN0aW9uYXJ5OlxuaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnkgYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYVxubGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC4gVGhpcyBpcyBnZW5lcmFsbHkgbm90XG53aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZSBgYE5vbmVgYCBhcyB0aGVcbmRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwgZS5nLjpcblxuICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbiAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4gICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuICAgICAgIHJldHVybiBwZW5ndWluXG5cbkZ1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvblxuKkNhbGxzKi4gQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVyc1xubWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tXG5rZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4iYGAqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZ1xuYW55IGV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWZcbnRoZSBmb3JtICJgYCoqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yICJgYCppZGVudGlmaWVyYGAiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICJgYDogZXhwcmVzc2lvbmBgIlxuZm9sbG93aW5nIHRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvblxuZXZlbiB0aG9zZSBvZiB0aGUgZm9ybSBgYCppZGVudGlmaWVyYGAgb3IgYGAqKmlkZW50aWZpZXJgYC4gIEZ1bmN0aW9uc1xubWF5IGhhdmUgInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiYGAtPiBleHByZXNzaW9uYGAiIGFmdGVyIHRoZVxucGFyYW1ldGVyIGxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uXG5hbmQgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLlxuQW5ub3RhdGlvbnMgbWF5IGJlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluXG50aGUgc291cmNlIGNvZGUuICBUaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZVxuc2VtYW50aWNzIG9mIGEgZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhc1xudmFsdWVzIG9mIGEgZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZVxuYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cblxuSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCBib3VuZFxudG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhIGZvcm1zLFxuZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSBsYW1iZGEgZm9ybSBpcyBtZXJlbHkgYVxuc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gZGVmaW5pdGlvbjsgYSBmdW5jdGlvbiBkZWZpbmVkIGluXG5hICJgYGRlZmBgIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3IgYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lXG5qdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhIGZvcm0uICBUaGUgImBgZGVmYGAiIGZvcm0gaXNcbmFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXQgYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGVcbnN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICJgYGRlZmBgIlxuZm9ybSBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbCBmdW5jdGlvblxudGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWQgaW4gdGhlXG5uZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuICAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuXG5cbkNsYXNzIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PVxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyBgYG9iamVjdGBgOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggYGBzZWxmLm5hbWUgPSB2YWx1ZWBgLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb25cbiJgYHNlbGYubmFtZWBgIiwgYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZVxud2l0aCB0aGUgc2FtZSBuYW1lIHdoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZVxudXNlZCBhcyBkZWZhdWx0cyBmb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzXG50aGVyZSBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvXG5jcmVhdGUgaW5zdGFuY2UgdmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLSBDbGFzc1xuICAgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3MgdGhlcmVcbiAgICBpcyBhIGBgZmluYWxseWBgIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXIgZXhjZXB0aW9uLlxuICAgIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhblxuICAgIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgYGByZXR1cm5gYCwgYGBjb250aW51ZWBgLCBvclxuICAgIGBgYnJlYWtgYCBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBmdW5jdGlvblxuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgYGBfX2RvY19fYGAgYXR0cmlidXRlIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzIGBgX19kb2NfX2BgIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCiAgJ2NvbnRleHQtbWFuYWdlcnMnOiAnXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhIGBgd2l0aGBgIHN0YXRlbWVudC4gVGhlIGNvbnRleHRcbm1hbmFnZXIgaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWVcbmNvbnRleHQgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZVxubm9ybWFsbHkgaW52b2tlZCB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvblxuKlRoZSB3aXRoIHN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpclxubWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgYGB3aXRoYGBcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlIGBgTm9uZWBgLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCBgYF9fZXhpdF9fKClgYCBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG4nLAogICdjb250aW51ZSc6ICdcblRoZSBgYGNvbnRpbnVlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG5cbmBgY29udGludWVgYCBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGBgZm9yYGAgb3JcbmBgd2hpbGVgYCBsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3JcbmBgZmluYWxseWBgIGNsYXVzZSB3aXRoaW4gdGhhdCBsb29wLiAgSXQgY29udGludWVzIHdpdGggdGhlIG5leHQgY3ljbGVcbm9mIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuXG5XaGVuIGBgY29udGludWVgYCBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIGFcbmBgZmluYWxseWBgIGNsYXVzZSwgdGhhdCBgYGZpbmFsbHlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxuc3RhcnRpbmcgdGhlIG5leHQgbG9vcCBjeWNsZS5cbicsCiAgJ2NvbnZlcnNpb25zJzogJ1xuQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5XaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSBwaHJhc2VcbiJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgdGhpcyBtZWFuc1xudGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIHRoYXQgd2F5OlxuXG4qIElmIGVpdGhlciBhcmd1bWVudCBpcyBhIGNvbXBsZXggbnVtYmVyLCB0aGUgb3RoZXIgaXMgY29udmVydGVkIHRvXG4gIGNvbXBsZXg7XG5cbiogb3RoZXJ3aXNlLCBpZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIHRoZSBvdGhlclxuICBpcyBjb252ZXJ0ZWQgdG8gZmxvYXRpbmcgcG9pbnQ7XG5cbiogb3RoZXJ3aXNlLCBib3RoIG11c3QgYmUgaW50ZWdlcnMgYW5kIG5vIGNvbnZlcnNpb24gaXMgbmVjZXNzYXJ5LlxuXG5Tb21lIGFkZGl0aW9uYWwgcnVsZXMgYXBwbHkgZm9yIGNlcnRhaW4gb3BlcmF0b3JzIChlLmcuLCBhIHN0cmluZyBsZWZ0XG5hcmd1bWVudCB0byB0aGUgXCclXCcgb3BlcmF0b3IpLiAgRXh0ZW5zaW9ucyBtdXN0IGRlZmluZSB0aGVpciBvd25cbmNvbnZlcnNpb24gYmVoYXZpb3IuXG4nLAotICdjdXN0b21pemF0aW9uJzogJ1xuQmFzaWMgY3VzdG9taXphdGlvblxuKioqKioqKioqKioqKioqKioqKlxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgYGBfX25ld19fKClgYCBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiBgYF9fbmV3X18oKWBgIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAodXN1YWxseVxuICAgYW4gaW5zdGFuY2Ugb2YgKmNscyopLlxuXG4gICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIGJ5XG4gICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyBgYF9fbmV3X18oKWBgIG1ldGhvZCB1c2luZ1xuICAgYGBzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKWBgIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiBgYF9fbmV3X18oKWBgIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICBgYF9faW5pdF9fKHNlbGZbLCAuLi5dKWBgLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byBgYF9fbmV3X18oKWBgLlxuXG4gICBJZiBgYF9fbmV3X18oKWBgIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgYGBfX25ld19fKClgYCBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiBpbW11dGFibGVcbiAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlIGNyZWF0aW9uLiAgSXRcbiAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gb3JkZXIgdG9cbiAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cblxub2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgY3JlYXRlZC4gIFRoZSBhcmd1bWVudHMgYXJlIHRob3NlXG4gICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgY2xhc3MgaGFzIGFuXG4gICBgYF9faW5pdF9fKClgYCBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCxcbiAgIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZlxuICAgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgYGBCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKWBgLiAgQXMgYSBzcGVjaWFsIGNvbnN0cmFpbnRcbiAgIG9uIGNvbnN0cnVjdG9ycywgbm8gdmFsdWUgbWF5IGJlIHJldHVybmVkOyBkb2luZyBzbyB3aWxsIGNhdXNlIGFcbiAgIGBgVHlwZUVycm9yYGAgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgYGBfX2RlbF9fKClgYCBtZXRob2QsXG4gICB0aGUgZGVyaXZlZCBjbGFzc1wncyBgYF9fZGVsX18oKWBgIG1ldGhvZCwgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHlcbiAgIGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZVxuICAgaW5zdGFuY2UuICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3JcbiAgIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgaW5zdGFuY2UgYnlcbiAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCBhIGxhdGVyXG4gICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0XG4gICBgYF9fZGVsX18oKWBgIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogYGBkZWwgeGBgIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgYGB4Ll9fZGVsX18oKWBgIC0tLSB0aGUgZm9ybWVyXG4gICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgYGB4YGAgYnkgb25lLCBhbmQgdGhlIGxhdHRlclxuICAgICBpcyBvbmx5IGNhbGxlZCB3aGVuIGBgeGBgXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lXG4gICAgIGNvbW1vbiBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhblxuICAgICBvYmplY3QgZnJvbSBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlblxuICAgICBvYmplY3RzIChlLmcuLCBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aFxuICAgICBwYXJlbnQgYW5kIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGVcbiAgICAgc3RhY2sgZnJhbWUgb2YgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2tcbiAgICAgc3RvcmVkIGluIGBgc3lzLmV4Y19pbmZvKClbMl1gYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvclxuICAgICBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhblxuICAgICB1bmhhbmRsZWQgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgbGF0dGVyIHR3byBzaXR1YXRpb25zIGNhbiBiZSByZXNvbHZlZCBieSBzdG9yaW5nIGBgTm9uZWBgIGluXG4gICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuIENpcmN1bGFyIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlXG4gICAgIGRldGVjdGVkIHdoZW4gdGhlIG9wdGlvbiBjeWNsZSBkZXRlY3RvciBpcyBlbmFibGVkIChpdFwncyBvbiBieVxuICAgICBkZWZhdWx0KSwgYnV0IGNhbiBvbmx5IGJlIGNsZWFuZWQgdXAgaWYgdGhlcmUgYXJlIG5vIFB5dGhvbi1cbiAgICAgbGV2ZWwgYGBfX2RlbF9fKClgYCBtZXRob2RzIGludm9sdmVkLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvblxuICAgICBmb3IgdGhlIGBgZ2NgYCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93XG4gICAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgaGFuZGxlZCBieSB0aGUgY3ljbGUgZGV0ZWN0b3IsXG4gICAgIHBhcnRpY3VsYXJseSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGBgZ2FyYmFnZWBgIHZhbHVlLlxuXG4gICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaCBgYF9fZGVsX18oKWBgXG4gICAgIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmcgdGhlaXIgZXhlY3V0aW9uXG4gICAgIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gYGBzeXMuc3RkZXJyYGAgaW5zdGVhZC5cbiAgICAgQWxzbywgd2hlbiBgYF9fZGVsX18oKWBgIGlzIGludm9rZWQgaW4gcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmdcbiAgICAgZGVsZXRlZCAoZS5nLiwgd2hlbiBleGVjdXRpb24gb2YgdGhlIHByb2dyYW0gaXMgZG9uZSksIG90aGVyXG4gICAgIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZVxuICAgICBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgdG9ybiBkb3duIChlLmcuIHRoZVxuICAgICBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXMgcmVhc29uLCBgYF9fZGVsX18oKWBgXG4gICAgIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZCB0byBtYWludGFpblxuICAgICBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSwgUHl0aG9uXG4gICAgIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgaXMgY2FsbGVkLlxuXG5vYmplY3QuX19yZXByX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHJlcHIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlXG4gICAib2ZmaWNpYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsXG4gICB0aGlzIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWRcbiAgIHRvIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICBgYDwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj5gYCBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgYGBfX3JlcHJfXygpYGBcbiAgIGJ1dCBub3QgYGBfX3N0cl9fKClgYCwgdGhlbiBgYF9fcmVwcl9fKClgYCBpcyBhbHNvIHVzZWQgd2hlbiBhblxuICAgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXNcbiAgIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgYGBzdHIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIGFuZCBieSB0aGUgYGBwcmludCgpYGBcbiAgIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuICBUaGlzIGRpZmZlcnMgZnJvbSBgYF9fcmVwcl9fKClgYCBpbiB0aGF0IGl0IGRvZXMgbm90IGhhdmVcbiAgIHRvIGJlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb246IGEgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2VcbiAgIHJlcHJlc2VudGF0aW9uIG1heSBiZSB1c2VkIGluc3RlYWQuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhXG4gICBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19ieXRlc19fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBgYGJ5dGVzKClgYCB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgYGBieXRlc2BgIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgYGBmb3JtYXQoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGVcbiAgIGBgZm9ybWF0KClgYCBtZXRob2Qgb2YgY2xhc3MgYGBzdHJgYCkgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzXG4gICBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMgdXBcbiAgIHRvIHRoZSB0eXBlIGltcGxlbWVudGluZyBgYF9fZm9ybWF0X18oKWBgLCBob3dldmVyIG1vc3QgY2xhc3Nlc1xuICAgd2lsbCBlaXRoZXIgZGVsZWdhdGUgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvclxuICAgdXNlIGEgc2ltaWxhciBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG5cbiAgIFNlZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlXG4gICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cblxuICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiBgYHg8eWBgIGNhbGxzIGBgeC5fX2x0X18oeSlgYCwgYGB4PD15YGAgY2FsbHNcbiAgIGBgeC5fX2xlX18oeSlgYCwgYGB4PT15YGAgY2FsbHMgYGB4Ll9fZXFfXyh5KWBgLCBgYHghPXlgYCBjYWxsc1xuICAgYGB4Ll9fbmVfXyh5KWBgLCBgYHg+eWBgIGNhbGxzIGBgeC5fX2d0X18oeSlgYCwgYW5kIGBgeD49eWBgIGNhbGxzXG4gICBgYHguX19nZV9fKHkpYGAuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b25cbiAgIGBgTm90SW1wbGVtZW50ZWRgYCBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYVxuICAgZ2l2ZW4gcGFpciBvZiBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sIGBgRmFsc2VgYCBhbmQgYGBUcnVlYGAgYXJlXG4gICByZXR1cm5lZCBmb3IgYSBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuXG4gICByZXR1cm4gYW55IHZhbHVlLCBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGFcbiAgIEJvb2xlYW4gY29udGV4dCAoZS5nLiwgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiBgYGlmYGAgc3RhdGVtZW50KSxcbiAgIFB5dGhvbiB3aWxsIGNhbGwgYGBib29sKClgYCBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHRcbiAgIGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIFRoZXJlIGFyZSBubyBpbXBsaWVkIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLlxuICAgVGhlIHRydXRoIG9mIGBgeD09eWBgIGRvZXMgbm90IGltcGx5IHRoYXQgYGB4IT15YGAgaXMgZmFsc2UuXG4gICBBY2NvcmRpbmdseSwgd2hlbiBkZWZpbmluZyBgYF9fZXFfXygpYGAsIG9uZSBzaG91bGQgYWxzbyBkZWZpbmVcbiAgIGBgX19uZV9fKClgYCBzbyB0aGF0IHRoZSBvcGVyYXRvcnMgd2lsbCBiZWhhdmUgYXMgZXhwZWN0ZWQuICBTZWVcbiAgIHRoZSBwYXJhZ3JhcGggb24gYGBfX2hhc2hfXygpYGAgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsIGBgX19sdF9fKClgYCBhbmQgYGBfX2d0X18oKWBgIGFyZSBlYWNoXG4gICBvdGhlclwncyByZWZsZWN0aW9uLCBgYF9fbGVfXygpYGAgYW5kIGBgX19nZV9fKClgYCBhcmUgZWFjaCBvdGhlclwnc1xuICAgcmVmbGVjdGlvbiwgYW5kIGBgX19lcV9fKClgYCBhbmQgYGBfX25lX18oKWBgIGFyZSB0aGVpciBvd25cbiAgIHJlZmxlY3Rpb24uXG5cbiAgIEFyZ3VtZW50cyB0byByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBhcmUgbmV2ZXIgY29lcmNlZC5cblxuICAgVG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdFxuICAgb3BlcmF0aW9uLCBzZWUgYGBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKWBgLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uIGBgaGFzaCgpYGAgYW5kIGZvciBvcGVyYXRpb25zIG9uXG4gICBtZW1iZXJzIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgYGBzZXRgYCwgYGBmcm96ZW5zZXRgYCwgYW5kXG4gICBgYGRpY3RgYC4gIGBgX19oYXNoX18oKWBgIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5XG4gICByZXF1aXJlZCBwcm9wZXJ0eSBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lXG4gICBoYXNoIHZhbHVlOyBpdCBpcyBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nXG4gICBleGNsdXNpdmUgb3IpIHRoZSBoYXNoIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0XG4gICBhbHNvIHBsYXkgYSBwYXJ0IGluIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gYGBfX2VxX18oKWBgIG1ldGhvZCBpdCBzaG91bGQgbm90XG4gICBkZWZpbmUgYSBgYF9faGFzaF9fKClgYCBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzXG4gICBgYF9fZXFfXygpYGAgYnV0IG5vdCBgYF9faGFzaF9fKClgYCwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZVxuICAgdXNhYmxlIGFzIGl0ZW1zIGluIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzXG4gICBtdXRhYmxlIG9iamVjdHMgYW5kIGltcGxlbWVudHMgYW4gYGBfX2VxX18oKWBgIG1ldGhvZCwgaXQgc2hvdWxkXG4gICBub3QgaW1wbGVtZW50IGBgX19oYXNoX18oKWBgLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGVcbiAgIGNvbGxlY3Rpb25zIHJlcXVpcmVzIHRoYXQgYSBrZXlcJ3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZVxuICAgb2JqZWN0XCdzIGhhc2ggdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuXG4gICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlIGBgX19lcV9fKClgYCBhbmQgYGBfX2hhc2hfXygpYGAgbWV0aG9kc1xuICAgYnkgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgYGB4Ll9faGFzaF9fKClgYCByZXR1cm5zIGBgaWQoeClgYC5cblxuICAgQ2xhc3NlcyB3aGljaCBpbmhlcml0IGEgYGBfX2hhc2hfXygpYGAgbWV0aG9kIGZyb20gYSBwYXJlbnQgY2xhc3NcbiAgIGJ1dCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgYGBfX2VxX18oKWBgIHN1Y2ggdGhhdCB0aGUgaGFzaCB2YWx1ZVxuICAgcmV0dXJuZWQgaXMgbm8gbG9uZ2VyIGFwcHJvcHJpYXRlIChlLmcuIGJ5IHN3aXRjaGluZyB0byBhIHZhbHVlLVxuICAgYmFzZWQgY29uY2VwdCBvZiBlcXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGlkZW50aXR5IGJhc2VkXG4gICBlcXVhbGl0eSkgY2FuIGV4cGxpY2l0bHkgZmxhZyB0aGVtc2VsdmVzIGFzIGJlaW5nIHVuaGFzaGFibGUgYnlcbiAgIHNldHRpbmcgYGBfX2hhc2hfXyA9IE5vbmVgYCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4gRG9pbmcgc28gbWVhbnNcbiAgIHRoYXQgbm90IG9ubHkgd2lsbCBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzIHJhaXNlIGFuIGFwcHJvcHJpYXRlXG4gICBgYFR5cGVFcnJvcmBgIHdoZW4gYSBwcm9ncmFtIGF0dGVtcHRzIHRvIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsXG4gICBidXQgdGhleSB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgYXMgdW5oYXNoYWJsZSB3aGVuXG4gICBjaGVja2luZyBgYGlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSlgYCAodW5saWtlIGNsYXNzZXNcbiAgIHdoaWNoIGRlZmluZSB0aGVpciBvd24gYGBfX2hhc2hfXygpYGAgdG8gZXhwbGljaXRseSByYWlzZVxuICAgYGBUeXBlRXJyb3JgYCkuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgYGBfX2VxX18oKWBgIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIGBgX19oYXNoX18oKWBgIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZVxuICAgaW50ZXJwcmV0ZXIgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nIGBgX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfX2BgLiBPdGhlcndpc2UgdGhlIGluaGVyaXRhbmNlIG9mXG4gICBgYF9faGFzaF9fKClgYCB3aWxsIGJlIGJsb2NrZWQsIGp1c3QgYXMgaWYgYGBfX2hhc2hfX2BgIGhhZCBiZWVuXG4gICBleHBsaWNpdGx5IHNldCB0byBgYE5vbmVgYC5cblxuICAgU2VlIGFsc28gdGhlICotUiogY29tbWFuZC1saW5lIG9wdGlvbi5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgYGBib29sKClgYDsgc2hvdWxkIHJldHVybiBgYEZhbHNlYGAgb3IgYGBUcnVlYGAuICBXaGVuIHRoaXMgbWV0aG9kXG4gICBpcyBub3QgZGVmaW5lZCwgYGBfX2xlbl9fKClgYCBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGVcbiAgIG9iamVjdCBpcyBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzc1xuICAgZGVmaW5lcyBuZWl0aGVyIGBgX19sZW5fXygpYGAgbm9yIGBgX19ib29sX18oKWBgLCBhbGwgaXRzIGluc3RhbmNlc1xuICAgYXJlIGNvbnNpZGVyZWQgdHJ1ZS5cbicsCi0gJ2RlYnVnZ2VyJzogJ1xuYGBwZGJgYCAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgbW9kdWxlIGBgcGRiYGAgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciBmb3JcblB5dGhvbiBwcm9ncmFtcy4gIEl0IHN1cHBvcnRzIHNldHRpbmcgKGNvbmRpdGlvbmFsKSBicmVha3BvaW50cyBhbmRcbnNpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgZnJhbWVzLFxuc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluIHRoZVxuY29udGV4dCBvZiBhbnkgc3RhY2sgZnJhbWUuICBJdCBhbHNvIHN1cHBvcnRzIHBvc3QtbW9ydGVtIGRlYnVnZ2luZ1xuYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuXG5UaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSBjbGFzc1xuYGBQZGJgYC4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieVxucmVhZGluZyB0aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyBgYGJkYmBgXG5hbmQgYGBjbWRgYC5cblxuVGhlIGRlYnVnZ2VyXCdzIHByb21wdCBpcyBgYChQZGIpYGAuIFR5cGljYWwgdXNhZ2UgdG8gcnVuIGEgcHJvZ3JhbVxudW5kZXIgY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gcGRiLnJ1bihcJ215bW9kdWxlLnRlc3QoKVwnKVxuICAgPiA8c3RyaW5nPigwKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICBOYW1lRXJyb3I6IFwnc3BhbVwnXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKVxuXG5gYHBkYi5weWBgIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy5cbkZvciBleGFtcGxlOlxuXG4gICBweXRob24zIC1tIHBkYiBteXNjcmlwdC5weVxuXG5XaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgcG9zdC1tb3J0ZW1cbmRlYnVnZ2luZyBpZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBleGl0cyBhYm5vcm1hbGx5LiAgQWZ0ZXIgcG9zdC1cbm1vcnRlbSBkZWJ1Z2dpbmcgKG9yIGFmdGVyIG5vcm1hbCBleGl0IG9mIHRoZSBwcm9ncmFtKSwgcGRiIHdpbGxcbnJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiXCdzIHN0YXRlIChzdWNoXG5hcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyB0aGVcbmRlYnVnZ2VyIHVwb24gcHJvZ3JhbVwncyBleGl0LlxuXG5OZXcgaW4gdmVyc2lvbiAzLjI6IGBgcGRiLnB5YGAgbm93IGFjY2VwdHMgYSBgYC1jYGAgb3B0aW9uIHRoYXRcbmV4ZWN1dGVzIGNvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgYGAucGRicmNgYCBmaWxlLCBzZWUgKkRlYnVnZ2VyXG5Db21tYW5kcyouXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlIGBgY29udGludWVgYCBjb21tYW5kLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBpbnNwZWN0IGEgY3Jhc2hlZCBwcm9ncmFtIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbiAgICAgICB0ZXN0MigpXG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDMsIGluIHRlc3QyXG4gICAgICAgcHJpbnQoc3BhbSlcbiAgIE5hbWVFcnJvcjogc3BhbVxuICAgPj4+IHBkYi5wbSgpXG4gICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4gICAtPiBwcmludChzcGFtKVxuICAgKFBkYilcblxuVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOyBlYWNoIGVudGVycyB0aGUgZGVidWdnZXJcbmluIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcblxucGRiLnJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG5cbiAgIEV4ZWN1dGUgdGhlICpzdGF0ZW1lbnQqIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KSB1bmRlclxuICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55IGNvZGUgaXNcbiAgIGV4ZWN1dGVkOyB5b3UgY2FuIHNldCBicmVha3BvaW50cyBhbmQgdHlwZSBgYGNvbnRpbnVlYGAsIG9yIHlvdSBjYW5cbiAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nIGBgc3RlcGBgIG9yIGBgbmV4dGBgIChhbGwgdGhlc2VcbiAgIGNvbW1hbmRzIGFyZSBleHBsYWluZWQgYmVsb3cpLiAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBhbmQgKmxvY2FscypcbiAgIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgY29kZSBpcyBleGVjdXRlZDsgYnlcbiAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSBgYF9fbWFpbl9fYGAgaXMgdXNlZC4gIChTZWVcbiAgIHRoZSBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gYGBleGVjKClgYCBvciBgYGV2YWwoKWBgXG4gICBmdW5jdGlvbnMuKVxuXG5wZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KVxuICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gYGBydW5ldmFsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zIHRoZVxuICAgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uICBPdGhlcndpc2UgdGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvXG4gICBgYHJ1bigpYGAuXG5cbnBkYi5ydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuXG4gICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhIHN0cmluZylcbiAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gYGBydW5jYWxsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zXG4gICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFyc1xuICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cblxucGRiLnNldF90cmFjZSgpXG5cbiAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmIHRoZVxuICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4gICBmYWlscykuXG5cbnBkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICBJZiBub1xuICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgaXNcbiAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkIGlmIHRoZVxuICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cblxucGRiLnBtKClcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbiAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cblRoZSBgYHJ1bipgYCBmdW5jdGlvbnMgYW5kIGBgc2V0X3RyYWNlKClgYCBhcmUgYWxpYXNlcyBmb3Jcbmluc3RhbnRpYXRpbmcgdGhlIGBgUGRiYGAgY2xhc3MgYW5kIGNhbGxpbmcgdGhlIG1ldGhvZCBvZiB0aGUgc2FtZVxubmFtZS4gIElmIHlvdSB3YW50IHRvIGFjY2VzcyBmdXJ0aGVyIGZlYXR1cmVzLCB5b3UgaGF2ZSB0byBkbyB0aGlzXG55b3Vyc2VsZjpcblxuY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT1cJ3RhYlwnLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcblxuICAgYGBQZGJgYCBpcyB0aGUgZGVidWdnZXIgY2xhc3MuXG5cbiAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGVcbiAgIHVuZGVybHlpbmcgYGBjbWQuQ21kYGAgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG5cbiAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIGdsb2Itc3R5bGVcbiAgIG1vZHVsZSBuYW1lIHBhdHRlcm5zLiAgVGhlIGRlYnVnZ2VyIHdpbGwgbm90IHN0ZXAgaW50byBmcmFtZXMgdGhhdFxuICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuIFsxXVxuXG4gICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCBpcyBzZW50XG4gICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgQ3RybC1DIG9uIHRoZSBjb25zb2xlKSB3aGVuIHlvdSBnaXZlIGFcbiAgIGBgY29udGludWVgYCBjb21tYW5kLiBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXJcbiAgIGFnYWluIGJ5IHByZXNzaW5nIEN0cmwtQy4gIElmIHlvdSB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlIFNJR0lOVFxuICAgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG90IHRydWUuXG5cbiAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjpcblxuICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVtcJ2RqYW5nby4qXCddKS5zZXRfdHJhY2UoKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjE6IFRoZSAqc2tpcCogYXJndW1lbnQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhIFNJR0lOVFxuICAgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5IFBkYi5cblxuICAgcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4gICBzZXRfdHJhY2UoKVxuXG4gICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuXG5cbkRlYnVnZ2VyIENvbW1hbmRzXG49PT09PT09PT09PT09PT09PVxuXG5UaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbmNvbW1hbmRzIGNhbiBiZSBhYmJyZXZpYXRlZCB0byBvbmUgb3IgdHdvIGxldHRlcnMgYXMgaW5kaWNhdGVkOyBlLmcuXG5gYGgoZWxwKWBgIG1lYW5zIHRoYXQgZWl0aGVyIGBgaGBgIG9yIGBgaGVscGBgIGNhbiBiZSB1c2VkIHRvIGVudGVyXG50aGUgaGVscCBjb21tYW5kIChidXQgbm90IGBgaGVgYCBvciBgYGhlbGBgLCBub3IgYGBIYGAgb3IgYGBIZWxwYGAgb3JcbmBgSEVMUGBgKS4gIEFyZ3VtZW50cyB0byBjb21tYW5kcyBtdXN0IGJlIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlXG4oc3BhY2VzIG9yIHRhYnMpLiAgT3B0aW9uYWwgYXJndW1lbnRzIGFyZSBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHNcbihgYFtdYGApIGluIHRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKGBgfGBgKS5cblxuRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgRXhjZXB0aW9uOiBpZlxudGhlIGxhc3QgY29tbWFuZCB3YXMgYSBgYGxpc3RgYCBjb21tYW5kLCB0aGUgbmV4dCAxMSBsaW5lcyBhcmUgbGlzdGVkLlxuXG5Db21tYW5kcyB0aGF0IHRoZSBkZWJ1Z2dlciBkb2VzblwndCByZWNvZ25pemUgYXJlIGFzc3VtZWQgdG8gYmUgUHl0aG9uXG5zdGF0ZW1lbnRzIGFuZCBhcmUgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkLiAgUHl0aG9uIHN0YXRlbWVudHMgY2FuIGFsc28gYmUgcHJlZml4ZWQgd2l0aCBhbiBleGNsYW1hdGlvblxucG9pbnQgKGBgIWBgKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnlcbmBgOztgYC4gIChBIHNpbmdsZSBgYDtgYCBpcyBub3QgdXNlZCBhcyBpdCBpcyB0aGUgc2VwYXJhdG9yIGZvclxubXVsdGlwbGUgY29tbWFuZHMgaW4gYSBsaW5lIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBQeXRob24gcGFyc2VyLikgIE5vXG5pbnRlbGxpZ2VuY2UgaXMgYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0XG5hdCB0aGUgZmlyc3QgYGA7O2BgIHBhaXIsIGV2ZW4gaWYgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHF1b3RlZFxuc3RyaW5nLlxuXG5JZiBhIGZpbGUgYGAucGRicmNgYCBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gdGhlXG5jdXJyZW50IGRpcmVjdG9yeSwgaXQgaXMgcmVhZCBpbiBhbmQgZXhlY3V0ZWQgYXMgaWYgaXQgaGFkIGJlZW4gdHlwZWRcbmF0IHRoZSBkZWJ1Z2dlciBwcm9tcHQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGFsaWFzZXMuICBJZlxuYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCBhbmRcbmFsaWFzZXMgZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogYGAucGRicmNgYCBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzIGBgY29udGludWVgYCBvciBgYG5leHRgYC4gIFByZXZpb3VzbHksXG50aGVzZSBjb21tYW5kcyBoYWQgbm8gZWZmZWN0LlxuXG5oKGVscCkgW2NvbW1hbmRdXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIHByaW50IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjb21tYW5kcy4gIFdpdGggYVxuICAgKmNvbW1hbmQqIGFzIGFyZ3VtZW50LCBwcmludCBoZWxwIGFib3V0IHRoYXQgY29tbWFuZC4gIGBgaGVscCBwZGJgYFxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgYGBwZGJgYFxuICAgbW9kdWxlKS4gIFNpbmNlIHRoZSAqY29tbWFuZCogYXJndW1lbnQgbXVzdCBiZSBhbiBpZGVudGlmaWVyLFxuICAgYGBoZWxwIGV4ZWNgYCBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlIGBgIWBgIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gYGBzeXMucGF0aGBgLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyBhc3NpZ25lZCBhXG4gICBudW1iZXIgdG8gd2hpY2ggYWxsIHRoZSBvdGhlciBicmVha3BvaW50IGNvbW1hbmRzIHJlZmVyLlxuXG4gICBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50LCBpdCBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcywgaW5jbHVkaW5nIGZvciBlYWNoIGJyZWFrcG9pbnQsXG4gICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQsIHRoZSBjdXJyZW50XG4gICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuXG50YnJlYWsgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBUZW1wb3JhcnkgYnJlYWtwb2ludCwgd2hpY2ggaXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gaXQgaXNcbiAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIGBgYnJlYWtgYC5cblxuY2woZWFyKSBbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyBhdFxuICAgdGhpcyBsaW5lLiBXaXRoIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYnJlYWtwb2ludCBudW1iZXJzLCBjbGVhclxuICAgdGhvc2UgYnJlYWtwb2ludHMuIFdpdGhvdXQgYXJndW1lbnQsIGNsZWFyIGFsbCBicmVha3MgKGJ1dCBmaXJzdFxuICAgYXNrIGNvbmZpcm1hdGlvbikuXG5cbmRpc2FibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBEaXNhYmxlIHRoZSBicmVha3BvaW50cyBnaXZlbiBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mXG4gICBicmVha3BvaW50IG51bWJlcnMuICBEaXNhYmxpbmcgYSBicmVha3BvaW50IG1lYW5zIGl0IGNhbm5vdCBjYXVzZVxuICAgdGhlIHByb2dyYW0gdG8gc3RvcCBleGVjdXRpb24sIGJ1dCB1bmxpa2UgY2xlYXJpbmcgYSBicmVha3BvaW50LCBpdFxuICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cblxuZW5hYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRW5hYmxlIHRoZSBicmVha3BvaW50cyBzcGVjaWZpZWQuXG5cbmlnbm9yZSBicG51bWJlciBbY291bnRdXG5cbiAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZiBjb3VudCBpc1xuICAgb21pdHRlZCwgdGhlIGlnbm9yZSBjb3VudCBpcyBzZXQgdG8gMC4gIEEgYnJlYWtwb2ludCBiZWNvbWVzIGFjdGl2ZVxuICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbiAgIGRlY3JlbWVudGVkIGVhY2ggdGltZSB0aGUgYnJlYWtwb2ludCBpcyByZWFjaGVkIGFuZCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUuXG5cbmNvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuXG4gICBTZXQgYSBuZXcgKmNvbmRpdGlvbiogZm9yIHRoZSBicmVha3BvaW50LCBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuICBJZiAqY29uZGl0aW9uKlxuICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSBicmVha3BvaW50XG4gICBpcyBtYWRlIHVuY29uZGl0aW9uYWwuXG5cbmNvbW1hbmRzIFticG51bWJlcl1cblxuICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICBUaGVcbiAgIGNvbW1hbmRzIHRoZW1zZWx2ZXMgYXBwZWFyIG9uIHRoZSBmb2xsb3dpbmcgbGluZXMuICBUeXBlIGEgbGluZVxuICAgY29udGFpbmluZyBqdXN0IGBgZW5kYGAgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcHJpbnQgc29tZV92YXJpYWJsZVxuICAgICAgKGNvbSkgZW5kXG4gICAgICAoUGRiKVxuXG4gICBUbyByZW1vdmUgYWxsIGNvbW1hbmRzIGZyb20gYSBicmVha3BvaW50LCB0eXBlIGNvbW1hbmRzIGFuZCBmb2xsb3dcbiAgIGl0IGltbWVkaWF0ZWx5IHdpdGggYGBlbmRgYDsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgYG5leHRgYCBhbmRcbiAgIGBgc3RlcGBgIGlzIHRoYXQgYGBzdGVwYGAgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZVxuICAgYGBuZXh0YGAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5XG4gICBzdG9wcGluZyBhdCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLilcblxudW50KGlsKSBbbGluZW5vXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLlxuXG4gICBXaXRoIGEgbGluZSBudW1iZXIsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBhIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvIHN0b3Agd2hlblxuICAgdGhlIGN1cnJlbnQgZnJhbWUgcmV0dXJucy5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogQWxsb3cgZ2l2aW5nIGFuIGV4cGxpY2l0IGxpbmUgbnVtYmVyLlxuXG5yKGV0dXJuKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cblxuYyhvbnQoaW51ZSkpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiwgb25seSBzdG9wIHdoZW4gYSBicmVha3BvaW50IGlzIGVuY291bnRlcmVkLlxuXG5qKHVtcCkgbGluZW5vXG5cbiAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluIHRoZVxuICAgYm90dG9tLW1vc3QgZnJhbWUuICBUaGlzIGxldHMgeW91IGp1bXAgYmFjayBhbmQgZXhlY3V0ZSBjb2RlIGFnYWluLFxuICAgb3IganVtcCBmb3J3YXJkIHRvIHNraXAgY29kZSB0aGF0IHlvdSBkb25cJ3Qgd2FudCB0byBydW4uXG5cbiAgIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vdCBhbGwganVtcHMgYXJlIGFsbG93ZWQgLS0gZm9yIGluc3RhbmNlXG4gICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSBgYGZvcmBgIGxvb3Agb3Igb3V0XG4gICBvZiBhIGBgZmluYWxseWBgIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCBgYC5gYCBhcyBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZS5cbiAgIFdpdGggb25lIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCBhdCB0aGF0IGxpbmUuICBXaXRoIHR3b1xuICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBsZXNzXG4gICB0aGFuIHRoZSBmaXJzdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3VudC5cblxuICAgVGhlIGN1cnJlbnQgbGluZSBpbiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmRpY2F0ZWQgYnkgYGAtPmBgLiAgSWZcbiAgIGFuIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5IGBgPj5gYCwgaWYgaXRcbiAgIGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBsaW5lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSBgYD4+YGAgbWFya2VyLlxuXG5sbCB8IGxvbmdsaXN0XG5cbiAgIExpc3QgYWxsIHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBvciBmcmFtZS5cbiAgIEludGVyZXN0aW5nIGxpbmVzIGFyZSBtYXJrZWQgYXMgZm9yIGBgbGlzdGBgLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucChyaW50KSBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxucHAgZXhwcmVzc2lvblxuXG4gICBMaWtlIHRoZSBgYHByaW50YGAgY29tbWFuZCwgZXhjZXB0IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpc1xuICAgcHJldHR5LXByaW50ZWQgdXNpbmcgdGhlIGBgcHByaW50YGAgbW9kdWxlLlxuXG53aGF0aXMgZXhwcmVzc2lvblxuXG4gICBQcmludCB0aGUgdHlwZSBvZiB0aGUgKmV4cHJlc3Npb24qLlxuXG5zb3VyY2UgZXhwcmVzc2lvblxuXG4gICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggdGltZVxuICAgZXhlY3V0aW9uIHN0b3BzIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGxpc3QgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG51bmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmludGVyYWN0XG5cbiAgIFN0YXJ0IGFuIGludGVyYXRpdmUgaW50ZXJwcmV0ZXIgKHVzaW5nIHRoZSBgYGNvZGVgYCBtb2R1bGUpIHdob3NlXG4gICBnbG9iYWwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzIGZvdW5kIGluXG4gICB0aGUgY3VycmVudCBzY29wZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hbGlhcyBbbmFtZSBbY29tbWFuZF1dXG5cbiAgIENyZWF0ZSBhbiBhbGlhcyBjYWxsZWQgKm5hbWUqIHRoYXQgZXhlY3V0ZXMgKmNvbW1hbmQqLiAgVGhlIGNvbW1hbmRcbiAgIG11c3QgKm5vdCogYmUgZW5jbG9zZWQgaW4gcXVvdGVzLiAgUmVwbGFjZWFibGUgcGFyYW1ldGVycyBjYW4gYmVcbiAgIGluZGljYXRlZCBieSBgYCUxYGAsIGBgJTJgYCwgYW5kIHNvIG9uLCB3aGlsZSBgYCUqYGAgaXMgcmVwbGFjZWQgYnlcbiAgIGFsbCB0aGUgcGFyYW1ldGVycy4gSWYgbm8gY29tbWFuZCBpcyBnaXZlbiwgdGhlIGN1cnJlbnQgYWxpYXMgZm9yXG4gICAqbmFtZSogaXMgc2hvd24uIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIGFsbCBhbGlhc2VzIGFyZSBsaXN0ZWQuXG5cbiAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUgbGVnYWxseVxuICAgdHlwZWQgYXQgdGhlIHBkYiBwcm9tcHQuICBOb3RlIHRoYXQgaW50ZXJuYWwgcGRiIGNvbW1hbmRzICpjYW4qIGJlXG4gICBvdmVycmlkZGVuIGJ5IGFsaWFzZXMuICBTdWNoIGEgY29tbWFuZCBpcyB0aGVuIGhpZGRlbiB1bnRpbCB0aGVcbiAgIGFsaWFzIGlzIHJlbW92ZWQuICBBbGlhc2luZyBpcyByZWN1cnNpdmVseSBhcHBsaWVkIHRvIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwgb3RoZXIgd29yZHMgaW4gdGhlIGxpbmUgYXJlIGxlZnRcbiAgIGFsb25lLlxuXG4gICBBcyBhbiBleGFtcGxlLCBoZXJlIGFyZSB0d28gdXNlZnVsIGFsaWFzZXMgKGVzcGVjaWFsbHkgd2hlbiBwbGFjZWRcbiAgIGluIHRoZSBgYC5wZGJyY2BgIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgb24gdGhlIHNhbWUgbGluZSwgZS5nLjpcblxuICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gW1wnLWxcJ11cbiAgICAgIChQZGIpXG5cbnJ1biBbYXJncyAuLi5dXG5yZXN0YXJ0IFthcmdzIC4uLl1cblxuICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyBzdXBwbGllZCxcbiAgIGl0IGlzIHNwbGl0IHdpdGggYGBzaGxleGBgIGFuZCB0aGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ld1xuICAgYGBzeXMuYXJndmBgLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9uc1xuICAgYXJlIHByZXNlcnZlZC4gYGByZXN0YXJ0YGAgaXMgYW4gYWxpYXMgZm9yIGBgcnVuYGAuXG5cbnEodWl0KVxuXG4gICBRdWl0IGZyb20gdGhlIGRlYnVnZ2VyLiAgVGhlIHByb2dyYW0gYmVpbmcgZXhlY3V0ZWQgaXMgYWJvcnRlZC5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGV0aGVyIGEgZnJhbWUgaXMgY29uc2lkZXJlZCB0byBvcmlnaW5hdGUgaW4gYSBjZXJ0YWluIG1vZHVsZSBpc1xuICAgIGRldGVybWluZWQgYnkgdGhlIGBgX19uYW1lX19gYCBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCi0gJ2RlbCc6ICdcblRoZSBgYGRlbGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgYGBnbG9iYWxgYFxuc3RhdGVtZW50IGluIHRoZSBzYW1lIGNvZGUgYmxvY2suICBJZiB0aGUgbmFtZSBpcyB1bmJvdW5kLCBhXG5gYE5hbWVFcnJvcmBgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC5cblxuRGVsZXRpb24gb2YgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHN1YnNjcmlwdGlvbnMgYW5kIHNsaWNpbmdzIGlzIHBhc3NlZFxudG8gdGhlIHByaW1hcnkgb2JqZWN0IGludm9sdmVkOyBkZWxldGlvbiBvZiBhIHNsaWNpbmcgaXMgaW4gZ2VuZXJhbFxuZXF1aXZhbGVudCB0byBhc3NpZ25tZW50IG9mIGFuIGVtcHR5IHNsaWNlIG9mIHRoZSByaWdodCB0eXBlIChidXQgZXZlblxudGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzbGljZWQgb2JqZWN0KS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMi5cbicsCisgJ2N1c3RvbWl6YXRpb24nOiAnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCBgYHggPT0geWBgIGltcGxpZXMgYm90aCB0aGF0IGBgeCBpcyB5YGAgYW5kIGBgaGFzaCh4KSA9PVxuICAgaGFzaCh5KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgYGBfX2hhc2hfXygpYGAgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lXG4gICAgIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gYGBQWVRIT05IQVNIU0VFRGBgLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuJywKKyAnZGVidWdnZXInOiAnXG5gYHBkYmBgIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBtb2R1bGUgYGBwZGJgYCBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyIGZvclxuUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzIGFuZFxuc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayBmcmFtZXMsXG5zb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gdGhlXG5jb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gZGVidWdnaW5nXG5hbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG5cblRoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlIGNsYXNzXG5gYFBkYmBgLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5XG5yZWFkaW5nIHRoZSBzb3VyY2UuICBUaGUgZXh0ZW5zaW9uIGludGVyZmFjZSB1c2VzIHRoZSBtb2R1bGVzIGBgYmRiYGBcbmFuZCBgYGNtZGBgLlxuXG5UaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzIGBgKFBkYilgYC4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSBwcm9ncmFtXG51bmRlciBjb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBwZGIucnVuKFwnbXltb2R1bGUudGVzdCgpXCcpXG4gICA+IDxzdHJpbmc+KDApPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgIE5hbWVFcnJvcjogXCdzcGFtXCdcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgYGByZWFkbGluZWBgIG1vZHVsZSBpc1xuYXZhaWxhYmxlIGZvciBjb21tYW5kcyBhbmQgY29tbWFuZCBhcmd1bWVudHMsIGUuZy4gdGhlIGN1cnJlbnQgZ2xvYmFsXG5hbmQgbG9jYWwgbmFtZXMgYXJlIG9mZmVyZWQgYXMgYXJndW1lbnRzIG9mIHRoZSBgYHByaW50YGAgY29tbWFuZC5cblxuYGBwZGIucHlgYCBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyIHNjcmlwdHMuXG5Gb3IgZXhhbXBsZTpcblxuICAgcHl0aG9uMyAtbSBwZGIgbXlzY3JpcHQucHlcblxuV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyIHBvc3QtbW9ydGVtXG5kZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyIHBvc3QtXG5tb3J0ZW0gZGVidWdnaW5nIChvciBhZnRlciBub3JtYWwgZXhpdCBvZiB0aGUgcHJvZ3JhbSksIHBkYiB3aWxsXG5yZXN0YXJ0IHRoZSBwcm9ncmFtLiAgQXV0b21hdGljIHJlc3RhcnRpbmcgcHJlc2VydmVzIHBkYlwncyBzdGF0ZSAoc3VjaFxuYXMgYnJlYWtwb2ludHMpIGFuZCBpbiBtb3N0IGNhc2VzIGlzIG1vcmUgdXNlZnVsIHRoYW4gcXVpdHRpbmcgdGhlXG5kZWJ1Z2dlciB1cG9uIHByb2dyYW1cJ3MgZXhpdC5cblxuTmV3IGluIHZlcnNpb24gMy4yOiBgYHBkYi5weWBgIG5vdyBhY2NlcHRzIGEgYGAtY2BgIG9wdGlvbiB0aGF0XG5leGVjdXRlcyBjb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhIGBgLnBkYnJjYGAgZmlsZSwgc2VlICpEZWJ1Z2dlclxuQ29tbWFuZHMqLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBmcm9tIGEgcnVubmluZyBwcm9ncmFtIGlzXG50byBpbnNlcnRcblxuICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpXG5cbmF0IHRoZSBsb2NhdGlvbiB5b3Ugd2FudCB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlci4gIFlvdSBjYW4gdGhlblxuc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlIHJ1bm5pbmdcbndpdGhvdXQgdGhlIGRlYnVnZ2VyIHVzaW5nIHRoZSBgYGNvbnRpbnVlYGAgY29tbWFuZC5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBteW1vZHVsZS50ZXN0KClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4gICAgICAgdGVzdDIoKVxuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuICAgICAgIHByaW50KHNwYW0pXG4gICBOYW1lRXJyb3I6IHNwYW1cbiAgID4+PiBwZGIucG0oKVxuICAgPiAuL215bW9kdWxlLnB5KDMpdGVzdDIoKVxuICAgLT4gcHJpbnQoc3BhbSlcbiAgIChQZGIpXG5cblRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlIGRlYnVnZ2VyXG5pbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG5cbnBkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdCkgdW5kZXJcbiAgIGRlYnVnZ2VyIGNvbnRyb2wuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSBjb2RlIGlzXG4gICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgYGBjb250aW51ZWBgLCBvciB5b3UgY2FuXG4gICBzdGVwIHRocm91Z2ggdGhlIHN0YXRlbWVudCB1c2luZyBgYHN0ZXBgYCBvciBgYG5leHRgYCAoYWxsIHRoZXNlXG4gICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICpsb2NhbHMqXG4gICBhcmd1bWVudHMgc3BlY2lmeSB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIGNvZGUgaXMgZXhlY3V0ZWQ7IGJ5XG4gICBkZWZhdWx0IHRoZSBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgYGBfX21haW5fX2BgIGlzIHVzZWQuICAoU2VlXG4gICB0aGUgZXhwbGFuYXRpb24gb2YgdGhlIGJ1aWx0LWluIGBgZXhlYygpYGAgb3IgYGBldmFsKClgYFxuICAgZnVuY3Rpb25zLilcblxucGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdClcbiAgIHVuZGVyIGRlYnVnZ2VyIGNvbnRyb2wuICBXaGVuIGBgcnVuZXZhbCgpYGAgcmV0dXJucywgaXQgcmV0dXJucyB0aGVcbiAgIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0b1xuICAgYGBydW4oKWBgLlxuXG5wZGIucnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcblxuICAgQ2FsbCB0aGUgKmZ1bmN0aW9uKiAoYSBmdW5jdGlvbiBvciBtZXRob2Qgb2JqZWN0LCBub3QgYSBzdHJpbmcpXG4gICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuIGBgcnVuY2FsbCgpYGAgcmV0dXJucywgaXQgcmV0dXJuc1xuICAgd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIGNhbGwgcmV0dXJuZWQuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnNcbiAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG5cbnBkYi5zZXRfdHJhY2UoKVxuXG4gICBFbnRlciB0aGUgZGVidWdnZXIgYXQgdGhlIGNhbGxpbmcgc3RhY2sgZnJhbWUuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiB0aGVcbiAgIGNvZGUgaXMgbm90IG90aGVyd2lzZSBiZWluZyBkZWJ1Z2dlZCAoZS5nLiB3aGVuIGFuIGFzc2VydGlvblxuICAgZmFpbHMpLlxuXG5wZGIucG9zdF9tb3J0ZW0odHJhY2ViYWNrPU5vbmUpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgZ2l2ZW4gKnRyYWNlYmFjayogb2JqZWN0LiAgSWYgbm9cbiAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IGlzXG4gICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoYW4gZXhjZXB0aW9uIG11c3QgYmUgYmVpbmcgaGFuZGxlZCBpZiB0aGVcbiAgIGRlZmF1bHQgaXMgdG8gYmUgdXNlZCkuXG5cbnBkYi5wbSgpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgdHJhY2ViYWNrIGZvdW5kIGluXG4gICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLlxuXG5UaGUgYGBydW4qYGAgZnVuY3Rpb25zIGFuZCBgYHNldF90cmFjZSgpYGAgYXJlIGFsaWFzZXMgZm9yXG5pbnN0YW50aWF0aW5nIHRoZSBgYFBkYmBgIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWVcbm5hbWUuICBJZiB5b3Ugd2FudCB0byBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpc1xueW91cnNlbGY6XG5cbmNsYXNzIGNsYXNzIHBkYi5QZGIoY29tcGxldGVrZXk9XCd0YWJcJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSwgbm9zaWdpbnQ9RmFsc2UpXG5cbiAgIGBgUGRiYGAgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLlxuXG4gICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlXG4gICB1bmRlcmx5aW5nIGBgY21kLkNtZGBgIGNsYXNzOyBzZWUgdGhlIGRlc2NyaXB0aW9uIHRoZXJlLlxuXG4gICBUaGUgKnNraXAqIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBnbG9iLXN0eWxlXG4gICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gZnJhbWVzIHRoYXRcbiAgIG9yaWdpbmF0ZSBpbiBhIG1vZHVsZSB0aGF0IG1hdGNoZXMgb25lIG9mIHRoZXNlIHBhdHRlcm5zLiBbMV1cblxuICAgQnkgZGVmYXVsdCwgUGRiIHNldHMgYSBoYW5kbGVyIGZvciB0aGUgU0lHSU5UIHNpZ25hbCAod2hpY2ggaXMgc2VudFxuICAgd2hlbiB0aGUgdXNlciBwcmVzc2VzIEN0cmwtQyBvbiB0aGUgY29uc29sZSkgd2hlbiB5b3UgZ2l2ZSBhXG4gICBgYGNvbnRpbnVlYGAgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyXG4gICBhZ2FpbiBieSBwcmVzc2luZyBDdHJsLUMuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZSBTSUdJTlRcbiAgIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvdCB0cnVlLlxuXG4gICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG5cbiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bXCdkamFuZ28uKlwnXSkuc2V0X3RyYWNlKClcblxuICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlRcbiAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG5cbiAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuICAgc2V0X3RyYWNlKClcblxuICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cblxuXG5EZWJ1Z2dlciBDb21tYW5kc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG5jb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgZS5nLlxuYGBoKGVscClgYCBtZWFucyB0aGF0IGVpdGhlciBgYGhgYCBvciBgYGhlbHBgYCBjYW4gYmUgdXNlZCB0byBlbnRlclxudGhlIGhlbHAgY29tbWFuZCAoYnV0IG5vdCBgYGhlYGAgb3IgYGBoZWxgYCwgbm9yIGBgSGBgIG9yIGBgSGVscGBgIG9yXG5gYEhFTFBgYCkuICBBcmd1bWVudHMgdG8gY29tbWFuZHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZVxuKHNwYWNlcyBvciB0YWJzKS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzXG4oYGBbXWBgKSBpbiB0aGUgY29tbWFuZCBzeW50YXg7IHRoZSBzcXVhcmUgYnJhY2tldHMgbXVzdCBub3QgYmUgdHlwZWQuXG5BbHRlcm5hdGl2ZXMgaW4gdGhlIGNvbW1hbmQgc3ludGF4IGFyZSBzZXBhcmF0ZWQgYnkgYSB2ZXJ0aWNhbCBiYXJcbihgYHxgYCkuXG5cbkVudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gIEV4Y2VwdGlvbjogaWZcbnRoZSBsYXN0IGNvbW1hbmQgd2FzIGEgYGBsaXN0YGAgY29tbWFuZCwgdGhlIG5leHQgMTEgbGluZXMgYXJlIGxpc3RlZC5cblxuQ29tbWFuZHMgdGhhdCB0aGUgZGVidWdnZXIgZG9lc25cJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlIFB5dGhvblxuc3RhdGVtZW50cyBhbmQgYXJlIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9ncmFtIGJlaW5nXG5kZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gZXhjbGFtYXRpb25cbnBvaW50IChgYCFgYCkuICBUaGlzIGlzIGEgcG93ZXJmdWwgd2F5IHRvIGluc3BlY3QgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9yIGNhbGwgYSBmdW5jdGlvbi5cbldoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBzdWNoIGEgc3RhdGVtZW50LCB0aGUgZXhjZXB0aW9uIG5hbWUgaXNcbnByaW50ZWQgYnV0IHRoZSBkZWJ1Z2dlclwncyBzdGF0ZSBpcyBub3QgY2hhbmdlZC5cblxuVGhlIGRlYnVnZ2VyIHN1cHBvcnRzICphbGlhc2VzKi4gIEFsaWFzZXMgY2FuIGhhdmUgcGFyYW1ldGVycyB3aGljaFxuYWxsb3dzIG9uZSBhIGNlcnRhaW4gbGV2ZWwgb2YgYWRhcHRhYmlsaXR5IHRvIHRoZSBjb250ZXh0IHVuZGVyXG5leGFtaW5hdGlvbi5cblxuTXVsdGlwbGUgY29tbWFuZHMgbWF5IGJlIGVudGVyZWQgb24gYSBzaW5nbGUgbGluZSwgc2VwYXJhdGVkIGJ5XG5gYDs7YGAuICAoQSBzaW5nbGUgYGA7YGAgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3Jcbm11bHRpcGxlIGNvbW1hbmRzIGluIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBOb1xuaW50ZWxsaWdlbmNlIGlzIGFwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdFxuYXQgdGhlIGZpcnN0IGBgOztgYCBwYWlyLCBldmVuIGlmIGl0IGlzIGluIHRoZSBtaWRkbGUgb2YgYSBxdW90ZWRcbnN0cmluZy5cblxuSWYgYSBmaWxlIGBgLnBkYnJjYGAgZXhpc3RzIGluIHRoZSB1c2VyXCdzIGhvbWUgZGlyZWN0b3J5IG9yIGluIHRoZVxuY3VycmVudCBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuIHR5cGVkXG5hdCB0aGUgZGVidWdnZXIgcHJvbXB0LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBhbGlhc2VzLiAgSWZcbmJvdGggZmlsZXMgZXhpc3QsIHRoZSBvbmUgaW4gdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHJlYWQgZmlyc3QgYW5kXG5hbGlhc2VzIGRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IGBgLnBkYnJjYGAgY2FuIG5vdyBjb250YWluIGNvbW1hbmRzIHRoYXRcbmNvbnRpbnVlIGRlYnVnZ2luZywgc3VjaCBhcyBgYGNvbnRpbnVlYGAgb3IgYGBuZXh0YGAuICBQcmV2aW91c2x5LFxudGhlc2UgY29tbWFuZHMgaGFkIG5vIGVmZmVjdC5cblxuaChlbHApIFtjb21tYW5kXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICBXaXRoIGFcbiAgICpjb21tYW5kKiBhcyBhcmd1bWVudCwgcHJpbnQgaGVscCBhYm91dCB0aGF0IGNvbW1hbmQuICBgYGhlbHAgcGRiYGBcbiAgIGRpc3BsYXlzIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gKHRoZSBkb2NzdHJpbmcgb2YgdGhlIGBgcGRiYGBcbiAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllcixcbiAgIGBgaGVscCBleGVjYGAgbXVzdCBiZSBlbnRlcmVkIHRvIGdldCBoZWxwIG9uIHRoZSBgYCFgYCBjb21tYW5kLlxuXG53KGhlcmUpXG5cbiAgIFByaW50IGEgc3RhY2sgdHJhY2UsIHdpdGggdGhlIG1vc3QgcmVjZW50IGZyYW1lIGF0IHRoZSBib3R0b20uICBBblxuICAgYXJyb3cgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGZyYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBjb250ZXh0IG9mXG4gICBtb3N0IGNvbW1hbmRzLlxuXG5kKG93bikgW2NvdW50XVxuXG4gICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgZG93biBpbiB0aGVcbiAgIHN0YWNrIHRyYWNlICh0byBhIG5ld2VyIGZyYW1lKS5cblxudShwKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyB1cCBpbiB0aGUgc3RhY2tcbiAgIHRyYWNlICh0byBhbiBvbGRlciBmcmFtZSkuXG5cbmIocmVhaykgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBXaXRoIGEgKmxpbmVubyogYXJndW1lbnQsIHNldCBhIGJyZWFrIHRoZXJlIGluIHRoZSBjdXJyZW50IGZpbGUuXG4gICBXaXRoIGEgKmZ1bmN0aW9uKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgYXQgdGhlIGZpcnN0IGV4ZWN1dGFibGVcbiAgIHN0YXRlbWVudCB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gIFRoZSBsaW5lIG51bWJlciBtYXkgYmUgcHJlZml4ZWRcbiAgIHdpdGggYSBmaWxlbmFtZSBhbmQgYSBjb2xvbiwgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gYW5vdGhlclxuICAgZmlsZSAocHJvYmFibHkgb25lIHRoYXQgaGFzblwndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgaXNcbiAgIHNlYXJjaGVkIG9uIGBgc3lzLnBhdGhgYC4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgYXNzaWduZWQgYVxuICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cblxuICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCBicmVha3BvaW50LFxuICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgY3VycmVudFxuICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cblxudGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0IGlzXG4gICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciBgYGJyZWFrYGAuXG5cbmNsKGVhcikgW2ZpbGVuYW1lOmxpbmVubyB8IGJwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBXaXRoIGEgKmZpbGVuYW1lOmxpbmVubyogYXJndW1lbnQsIGNsZWFyIGFsbCB0aGUgYnJlYWtwb2ludHMgYXRcbiAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgY2xlYXJcbiAgIHRob3NlIGJyZWFrcG9pbnRzLiBXaXRob3V0IGFyZ3VtZW50LCBjbGVhciBhbGwgYnJlYWtzIChidXQgZmlyc3RcbiAgIGFzayBjb25maXJtYXRpb24pLlxuXG5kaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRGlzYWJsZSB0aGUgYnJlYWtwb2ludHMgZ2l2ZW4gYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZlxuICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgY2F1c2VcbiAgIHRoZSBwcm9ncmFtIHRvIHN0b3AgZXhlY3V0aW9uLCBidXQgdW5saWtlIGNsZWFyaW5nIGEgYnJlYWtwb2ludCwgaXRcbiAgIHJlbWFpbnMgaW4gdGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgYW5kIGNhbiBiZSAocmUtKWVuYWJsZWQuXG5cbmVuYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIEVuYWJsZSB0aGUgYnJlYWtwb2ludHMgc3BlY2lmaWVkLlxuXG5pZ25vcmUgYnBudW1iZXIgW2NvdW50XVxuXG4gICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYgY291bnQgaXNcbiAgIG9taXR0ZWQsIHRoZSBpZ25vcmUgY291bnQgaXMgc2V0IHRvIDAuICBBIGJyZWFrcG9pbnQgYmVjb21lcyBhY3RpdmVcbiAgIHdoZW4gdGhlIGlnbm9yZSBjb3VudCBpcyB6ZXJvLiAgV2hlbiBub24temVybywgdGhlIGNvdW50IGlzXG4gICBkZWNyZW1lbnRlZCBlYWNoIHRpbWUgdGhlIGJyZWFrcG9pbnQgaXMgcmVhY2hlZCBhbmQgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG5vdCBkaXNhYmxlZCBhbmQgYW55IGFzc29jaWF0ZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0cnVlLlxuXG5jb25kaXRpb24gYnBudW1iZXIgW2NvbmRpdGlvbl1cblxuICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLiAgSWYgKmNvbmRpdGlvbipcbiAgIGlzIGFic2VudCwgYW55IGV4aXN0aW5nIGNvbmRpdGlvbiBpcyByZW1vdmVkOyBpLmUuLCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuXG5jb21tYW5kcyBbYnBudW1iZXJdXG5cbiAgIFNwZWNpZnkgYSBsaXN0IG9mIGNvbW1hbmRzIGZvciBicmVha3BvaW50IG51bWJlciAqYnBudW1iZXIqLiAgVGhlXG4gICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhIGxpbmVcbiAgIGNvbnRhaW5pbmcganVzdCBgYGVuZGBgIHRvIHRlcm1pbmF0ZSB0aGUgY29tbWFuZHMuIEFuIGV4YW1wbGU6XG5cbiAgICAgIChQZGIpIGNvbW1hbmRzIDFcbiAgICAgIChjb20pIHByaW50IHNvbWVfdmFyaWFibGVcbiAgICAgIChjb20pIGVuZFxuICAgICAgKFBkYilcblxuICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgZm9sbG93XG4gICBpdCBpbW1lZGlhdGVseSB3aXRoIGBgZW5kYGA7IHRoYXQgaXMsIGdpdmUgbm8gY29tbWFuZHMuXG5cbiAgIFdpdGggbm8gKmJwbnVtYmVyKiBhcmd1bWVudCwgY29tbWFuZHMgcmVmZXJzIHRvIHRoZSBsYXN0IGJyZWFrcG9pbnRcbiAgIHNldC5cblxuICAgWW91IGNhbiB1c2UgYnJlYWtwb2ludCBjb21tYW5kcyB0byBzdGFydCB5b3VyIHByb2dyYW0gdXAgYWdhaW4uXG4gICBTaW1wbHkgdXNlIHRoZSBjb250aW51ZSBjb21tYW5kLCBvciBzdGVwLCBvciBhbnkgb3RoZXIgY29tbWFuZCB0aGF0XG4gICByZXN1bWVzIGV4ZWN1dGlvbi5cblxuICAgU3BlY2lmeWluZyBhbnkgY29tbWFuZCByZXN1bWluZyBleGVjdXRpb24gKGN1cnJlbnRseSBjb250aW51ZSxcbiAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykgdGVybWluYXRlc1xuICAgdGhlIGNvbW1hbmQgbGlzdCAoYXMgaWYgdGhhdCBjb21tYW5kIHdhcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieVxuICAgZW5kKS4gVGhpcyBpcyBiZWNhdXNlIGFueSB0aW1lIHlvdSByZXN1bWUgZXhlY3V0aW9uIChldmVuIHdpdGggYVxuICAgc2ltcGxlIG5leHQgb3Igc3RlcCksIHlvdSBtYXkgZW5jb3VudGVyIGFub3RoZXIgYnJlYWtwb2ludC0td2hpY2hcbiAgIGNvdWxkIGhhdmUgaXRzIG93biBjb21tYW5kIGxpc3QsIGxlYWRpbmcgdG8gYW1iaWd1aXRpZXMgYWJvdXQgd2hpY2hcbiAgIGxpc3QgdG8gZXhlY3V0ZS5cblxuICAgSWYgeW91IHVzZSB0aGUgXCdzaWxlbnRcJyBjb21tYW5kIGluIHRoZSBjb21tYW5kIGxpc3QsIHRoZSB1c3VhbFxuICAgbWVzc2FnZSBhYm91dCBzdG9wcGluZyBhdCBhIGJyZWFrcG9pbnQgaXMgbm90IHByaW50ZWQuICBUaGlzIG1heSBiZVxuICAgZGVzaXJhYmxlIGZvciBicmVha3BvaW50cyB0aGF0IGFyZSB0byBwcmludCBhIHNwZWNpZmljIG1lc3NhZ2UgYW5kXG4gICB0aGVuIGNvbnRpbnVlLiAgSWYgbm9uZSBvZiB0aGUgb3RoZXIgY29tbWFuZHMgcHJpbnQgYW55dGhpbmcsIHlvdVxuICAgc2VlIG5vIHNpZ24gdGhhdCB0aGUgYnJlYWtwb2ludCB3YXMgcmVhY2hlZC5cblxucyh0ZXApXG5cbiAgIEV4ZWN1dGUgdGhlIGN1cnJlbnQgbGluZSwgc3RvcCBhdCB0aGUgZmlyc3QgcG9zc2libGUgb2NjYXNpb25cbiAgIChlaXRoZXIgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBvciBvbiB0aGUgbmV4dCBsaW5lIGluIHRoZVxuICAgY3VycmVudCBmdW5jdGlvbikuXG5cbm4oZXh0KVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiBpc1xuICAgcmVhY2hlZCBvciBpdCByZXR1cm5zLiAgKFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYGBuZXh0YGAgYW5kXG4gICBgYHN0ZXBgYCBpcyB0aGF0IGBgc3RlcGBgIHN0b3BzIGluc2lkZSBhIGNhbGxlZCBmdW5jdGlvbiwgd2hpbGVcbiAgIGBgbmV4dGBgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seVxuICAgc3RvcHBpbmcgYXQgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG5cbnVudChpbCkgW2xpbmVub11cblxuICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cblxuICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyBzdG9wIHdoZW5cbiAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lIG51bWJlci5cblxucihldHVybilcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG5cbmMob250KGludWUpKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmNvdW50ZXJlZC5cblxuaih1bXApIGxpbmVub1xuXG4gICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiB0aGVcbiAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSBhZ2FpbixcbiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uXCd0IHdhbnQgdG8gcnVuLlxuXG4gICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciBpbnN0YW5jZVxuICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgYGBmb3JgYCBsb29wIG9yIG91dFxuICAgb2YgYSBgYGZpbmFsbHlgYCBjbGF1c2UuXG5cbmwoaXN0KSBbZmlyc3RbLCBsYXN0XV1cblxuICAgTGlzdCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZmlsZS4gIFdpdGhvdXQgYXJndW1lbnRzLCBsaXN0IDExXG4gICBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZSBvciBjb250aW51ZSB0aGUgcHJldmlvdXMgbGlzdGluZy5cbiAgIFdpdGggYGAuYGAgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuXG4gICBXaXRoIG9uZSBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgYXQgdGhhdCBsaW5lLiAgV2l0aCB0d29cbiAgIGFyZ3VtZW50cywgbGlzdCB0aGUgZ2l2ZW4gcmFuZ2U7IGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbGVzc1xuICAgdGhhbiB0aGUgZmlyc3QsIGl0IGlzIGludGVycHJldGVkIGFzIGEgY291bnQuXG5cbiAgIFRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5kaWNhdGVkIGJ5IGBgLT5gYC4gIElmXG4gICBhbiBleGNlcHRpb24gaXMgYmVpbmcgZGVidWdnZWQsIHRoZSBsaW5lIHdoZXJlIHRoZSBleGNlcHRpb24gd2FzXG4gICBvcmlnaW5hbGx5IHJhaXNlZCBvciBwcm9wYWdhdGVkIGlzIGluZGljYXRlZCBieSBgYD4+YGAsIGlmIGl0XG4gICBkaWZmZXJzIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgYGA+PmBgIG1hcmtlci5cblxubGwgfCBsb25nbGlzdFxuXG4gICBMaXN0IGFsbCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24gb3IgZnJhbWUuXG4gICBJbnRlcmVzdGluZyBsaW5lcyBhcmUgbWFya2VkIGFzIGZvciBgYGxpc3RgYC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hKHJncylcblxuICAgUHJpbnQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24uXG5cbnAocmludCkgZXhwcmVzc2lvblxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIGluIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHByaW50IGl0c1xuICAgdmFsdWUuXG5cbnBwIGV4cHJlc3Npb25cblxuICAgTGlrZSB0aGUgYGBwcmludGBgIGNvbW1hbmQsIGV4Y2VwdCB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXNcbiAgIHByZXR0eS1wcmludGVkIHVzaW5nIHRoZSBgYHBwcmludGBgIG1vZHVsZS5cblxud2hhdGlzIGV4cHJlc3Npb25cblxuICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cblxuc291cmNlIGV4cHJlc3Npb25cblxuICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSBpdC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWVcbiAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cblxuICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxudW5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5pbnRlcmFjdFxuXG4gICBTdGFydCBhbiBpbnRlcmF0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgYGBjb2RlYGAgbW9kdWxlKSB3aG9zZVxuICAgZ2xvYmFsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdGhlIChnbG9iYWwgYW5kIGxvY2FsKSBuYW1lcyBmb3VuZCBpblxuICAgdGhlIGN1cnJlbnQgc2NvcGUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYWxpYXMgW25hbWUgW2NvbW1hbmRdXVxuXG4gICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICpuYW1lKiB0aGF0IGV4ZWN1dGVzICpjb21tYW5kKi4gIFRoZSBjb21tYW5kXG4gICBtdXN0ICpub3QqIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy4gIFJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgY2FuIGJlXG4gICBpbmRpY2F0ZWQgYnkgYGAlMWBgLCBgYCUyYGAsIGFuZCBzbyBvbiwgd2hpbGUgYGAlKmBgIGlzIHJlcGxhY2VkIGJ5XG4gICBhbGwgdGhlIHBhcmFtZXRlcnMuIElmIG5vIGNvbW1hbmQgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGFsaWFzIGZvclxuICAgKm5hbWUqIGlzIHNob3duLiBJZiBubyBhcmd1bWVudHMgYXJlIGdpdmVuLCBhbGwgYWxpYXNlcyBhcmUgbGlzdGVkLlxuXG4gICBBbGlhc2VzIG1heSBiZSBuZXN0ZWQgYW5kIGNhbiBjb250YWluIGFueXRoaW5nIHRoYXQgY2FuIGJlIGxlZ2FsbHlcbiAgIHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSB0aGF0IGludGVybmFsIHBkYiBjb21tYW5kcyAqY2FuKiBiZVxuICAgb3ZlcnJpZGRlbiBieSBhbGlhc2VzLiAgU3VjaCBhIGNvbW1hbmQgaXMgdGhlbiBoaWRkZW4gdW50aWwgdGhlXG4gICBhbGlhcyBpcyByZW1vdmVkLiAgQWxpYXNpbmcgaXMgcmVjdXJzaXZlbHkgYXBwbGllZCB0byB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIGNvbW1hbmQgbGluZTsgYWxsIG90aGVyIHdvcmRzIGluIHRoZSBsaW5lIGFyZSBsZWZ0XG4gICBhbG9uZS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaGVyZSBhcmUgdHdvIHVzZWZ1bCBhbGlhc2VzIChlc3BlY2lhbGx5IHdoZW4gcGxhY2VkXG4gICBpbiB0aGUgYGAucGRicmNgYCBmaWxlKTpcblxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgKHVzYWdlICJwaSBjbGFzc0luc3QiKVxuICAgICAgYWxpYXMgcGkgZm9yIGsgaW4gJTEuX19kaWN0X18ua2V5cygpOiBwcmludCgiJTEuIixrLCI9IiwlMS5fX2RpY3RfX1trXSlcbiAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzIGluIHNlbGZcbiAgICAgIGFsaWFzIHBzIHBpIHNlbGZcblxudW5hbGlhcyBuYW1lXG5cbiAgIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGFsaWFzLlxuXG4hIHN0YXRlbWVudFxuXG4gICBFeGVjdXRlIHRoZSAob25lLWxpbmUpICpzdGF0ZW1lbnQqIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50XG4gICBzdGFjayBmcmFtZS4gVGhlIGV4Y2xhbWF0aW9uIHBvaW50IGNhbiBiZSBvbWl0dGVkIHVubGVzcyB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIHN0YXRlbWVudCByZXNlbWJsZXMgYSBkZWJ1Z2dlciBjb21tYW5kLiAgVG8gc2V0IGFcbiAgIGdsb2JhbCB2YXJpYWJsZSwgeW91IGNhbiBwcmVmaXggdGhlIGFzc2lnbm1lbnQgY29tbWFuZCB3aXRoIGFcbiAgIGBgZ2xvYmFsYGAgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG5cbiAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFtcJy1sXCddXG4gICAgICAoUGRiKVxuXG5ydW4gW2FyZ3MgLi4uXVxucmVzdGFydCBbYXJncyAuLi5dXG5cbiAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgc3VwcGxpZWQsXG4gICBpdCBpcyBzcGxpdCB3aXRoIGBgc2hsZXhgYCBhbmQgdGhlIHJlc3VsdCBpcyB1c2VkIGFzIHRoZSBuZXdcbiAgIGBgc3lzLmFyZ3ZgYC4gSGlzdG9yeSwgYnJlYWtwb2ludHMsIGFjdGlvbnMgYW5kIGRlYnVnZ2VyIG9wdGlvbnNcbiAgIGFyZSBwcmVzZXJ2ZWQuIGBgcmVzdGFydGBgIGlzIGFuIGFsaWFzIGZvciBgYHJ1bmBgLlxuXG5xKHVpdClcblxuICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzIGFib3J0ZWQuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gV2hldGhlciBhIGZyYW1lIGlzIGNvbnNpZGVyZWQgdG8gb3JpZ2luYXRlIGluIGEgY2VydGFpbiBtb2R1bGUgaXNcbiAgICBkZXRlcm1pbmVkIGJ5IHRoZSBgYF9fbmFtZV9fYGAgaW4gdGhlIGZyYW1lIGdsb2JhbHMuXG4nLAorICdkZWwnOiAnXG5UaGUgYGBkZWxgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBkZWxfc3RtdCA6Oj0gImRlbCIgdGFyZ2V0X2xpc3RcblxuRGVsZXRpb24gaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHdheSBhc3NpZ25tZW50IGlzXG5kZWZpbmVkLiBSYXRoZXIgdGhhbiBzcGVsbGluZyBpdCBvdXQgaW4gZnVsbCBkZXRhaWxzLCBoZXJlIGFyZSBzb21lXG5oaW50cy5cblxuRGVsZXRpb24gb2YgYSB0YXJnZXQgbGlzdCByZWN1cnNpdmVseSBkZWxldGVzIGVhY2ggdGFyZ2V0LCBmcm9tIGxlZnRcbnRvIHJpZ2h0LlxuXG5EZWxldGlvbiBvZiBhIG5hbWUgcmVtb3ZlcyB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgZnJvbSB0aGUgbG9jYWwgb3Jcbmdsb2JhbCBuYW1lc3BhY2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuYW1lIG9jY3VycyBpbiBhIGBgZ2xvYmFsYGBcbnN0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuYGBOYW1lRXJyb3JgYCBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuXG5cbkRlbGV0aW9uIG9mIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCBzdWJzY3JpcHRpb25zIGFuZCBzbGljaW5ncyBpcyBwYXNzZWRcbnRvIHRoZSBwcmltYXJ5IG9iamVjdCBpbnZvbHZlZDsgZGVsZXRpb24gb2YgYSBzbGljaW5nIGlzIGluIGdlbmVyYWxcbmVxdWl2YWxlbnQgdG8gYXNzaWdubWVudCBvZiBhbiBlbXB0eSBzbGljZSBvZiB0aGUgcmlnaHQgdHlwZSAoYnV0IGV2ZW5cbnRoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2xpY2VkIG9iamVjdCkuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IFByZXZpb3VzbHkgaXQgd2FzIGlsbGVnYWwgdG8gZGVsZXRlIGEgbmFtZVxuZnJvbSB0aGUgbG9jYWwgbmFtZXNwYWNlIGlmIGl0IG9jY3VycyBhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWRcbmJsb2NrLlxuJywKICAnZGljdCc6ICdcbkRpY3Rpb25hcnkgZGlzcGxheXNcbioqKioqKioqKioqKioqKioqKipcblxuQSBkaWN0aW9uYXJ5IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2Yga2V5L2RhdHVtIHBhaXJzXG5lbmNsb3NlZCBpbiBjdXJseSBicmFjZXM6XG5cbiAgIGRpY3RfZGlzcGxheSAgICAgICA6Oj0gInsiIFtrZXlfZGF0dW1fbGlzdCB8IGRpY3RfY29tcHJlaGVuc2lvbl0gIn0iXG4gICBrZXlfZGF0dW1fbGlzdCAgICAgOjo9IGtleV9kYXR1bSAoIiwiIGtleV9kYXR1bSkqIFsiLCJdXG4gICBrZXlfZGF0dW0gICAgICAgICAgOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb25cbiAgIGRpY3RfY29tcHJlaGVuc2lvbiA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiBjb21wX2ZvclxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSB5aWVsZHMgYSBuZXcgZGljdGlvbmFyeSBvYmplY3QuXG5cbklmIGEgY29tbWEtc2VwYXJhdGVkIHNlcXVlbmNlIG9mIGtleS9kYXR1bSBwYWlycyBpcyBnaXZlbiwgdGhleSBhcmVcbmV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgdG8gZGVmaW5lIHRoZSBlbnRyaWVzIG9mIHRoZSBkaWN0aW9uYXJ5OlxuZWFjaCBrZXkgb2JqZWN0IGlzIHVzZWQgYXMgYSBrZXkgaW50byB0aGUgZGljdGlvbmFyeSB0byBzdG9yZSB0aGVcbmNvcnJlc3BvbmRpbmcgZGF0dW0uICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzcGVjaWZ5IHRoZSBzYW1lIGtleVxubXVsdGlwbGUgdGltZXMgaW4gdGhlIGtleS9kYXR1bSBsaXN0LCBhbmQgdGhlIGZpbmFsIGRpY3Rpb25hcnlcJ3MgdmFsdWVcbmZvciB0aGF0IGtleSB3aWxsIGJlIHRoZSBsYXN0IG9uZSBnaXZlbi5cblxuQSBkaWN0IGNvbXByZWhlbnNpb24sIGluIGNvbnRyYXN0IHRvIGxpc3QgYW5kIHNldCBjb21wcmVoZW5zaW9ucyxcbm5lZWRzIHR3byBleHByZXNzaW9ucyBzZXBhcmF0ZWQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IHRoZSB1c3VhbFxuImZvciIgYW5kICJpZiIgY2xhdXNlcy4gV2hlbiB0aGUgY29tcHJlaGVuc2lvbiBpcyBydW4sIHRoZSByZXN1bHRpbmdcbmtleSBhbmQgdmFsdWUgZWxlbWVudHMgYXJlIGluc2VydGVkIGluIHRoZSBuZXcgZGljdGlvbmFyeSBpbiB0aGUgb3JkZXJcbnRoZXkgYXJlIHByb2R1Y2VkLlxuXG5SZXN0cmljdGlvbnMgb24gdGhlIHR5cGVzIG9mIHRoZSBrZXkgdmFsdWVzIGFyZSBsaXN0ZWQgZWFybGllciBpblxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Ki4gIChUbyBzdW1tYXJpemUsIHRoZSBrZXkgdHlwZVxuc2hvdWxkIGJlICpoYXNoYWJsZSosIHdoaWNoIGV4Y2x1ZGVzIGFsbCBtdXRhYmxlIG9iamVjdHMuKSAgQ2xhc2hlc1xuYmV0d2VlbiBkdXBsaWNhdGUga2V5cyBhcmUgbm90IGRldGVjdGVkOyB0aGUgbGFzdCBkYXR1bSAodGV4dHVhbGx5XG5yaWdodG1vc3QgaW4gdGhlIGRpc3BsYXkpIHN0b3JlZCBmb3IgYSBnaXZlbiBrZXkgdmFsdWUgcHJldmFpbHMuXG4nLAogICdkeW5hbWljLWZlYXR1cmVzJzogJ1xuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuSWYgdGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gYGBpbXBvcnQgKmBgIC0tLSBpcyB1c2VkIGluIGFcbmZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gY29udGFpbnMgb3IgaXMgYSBuZXN0ZWQgYmxvY2sgd2l0aCBmcmVlXG52YXJpYWJsZXMsIHRoZSBjb21waWxlciB3aWxsIHJhaXNlIGEgYGBTeW50YXhFcnJvcmBgLlxuXG5UaGUgYGBldmFsKClgYCBhbmQgYGBleGVjKClgYCBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSBgYGV4ZWMoKWBgIGFuZCBgYGV2YWwoKWBgIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAogICdlbHNlJzogJ1xuVGhlIGBgaWZgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgYGBpZmBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCkBAIC0zMywxNCArMzQsMTQgQEAKICAnZXhwcmxpc3RzJzogJ1xuRXhwcmVzc2lvbiBsaXN0c1xuKioqKioqKioqKioqKioqKlxuXG4gICBleHByZXNzaW9uX2xpc3QgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuXG5BbiBleHByZXNzaW9uIGxpc3QgY29udGFpbmluZyBhdCBsZWFzdCBvbmUgY29tbWEgeWllbGRzIGEgdHVwbGUuICBUaGVcbmxlbmd0aCBvZiB0aGUgdHVwbGUgaXMgdGhlIG51bWJlciBvZiBleHByZXNzaW9ucyBpbiB0aGUgbGlzdC4gIFRoZVxuZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cblRoZSB0cmFpbGluZyBjb21tYSBpcyByZXF1aXJlZCBvbmx5IHRvIGNyZWF0ZSBhIHNpbmdsZSB0dXBsZSAoYS5rLmEuIGFcbipzaW5nbGV0b24qKTsgaXQgaXMgb3B0aW9uYWwgaW4gYWxsIG90aGVyIGNhc2VzLiAgQSBzaW5nbGUgZXhwcmVzc2lvblxud2l0aG91dCBhIHRyYWlsaW5nIGNvbW1hIGRvZXNuXCd0IGNyZWF0ZSBhIHR1cGxlLCBidXQgcmF0aGVyIHlpZWxkcyB0aGVcbnZhbHVlIG9mIHRoYXQgZXhwcmVzc2lvbi4gKFRvIGNyZWF0ZSBhbiBlbXB0eSB0dXBsZSwgdXNlIGFuIGVtcHR5IHBhaXJcbm9mIHBhcmVudGhlc2VzOiBgYCgpYGAuKVxuJywKICAnZmxvYXRpbmcnOiAnXG5GbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbmRlZmluaXRpb25zOlxuXG4gICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuICAgcG9pbnRmbG9hdCAgICA6Oj0gW2ludHBhcnRdIGZyYWN0aW9uIHwgaW50cGFydCAiLiJcbiAgIGV4cG9uZW50ZmxvYXQgOjo9IChpbnRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbiAgIGludHBhcnQgICAgICAgOjo9IGRpZ2l0K1xuICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0K1xuICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXQrXG5cbk5vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCB1c2luZ1xucmFkaXggMTAuIEZvciBleGFtcGxlLCBgYDA3N2UwMTBgYCBpcyBsZWdhbCwgYW5kIGRlbm90ZXMgdGhlIHNhbWVcbm51bWJlciBhcyBgYDc3ZTEwYGAuIFRoZSBhbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzXG5pbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6XG5cbiAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSBgYC0xYGBcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIGBgLWBgIGFuZCB0aGVcbmxpdGVyYWwgYGAxYGAuXG4nLAogICdmb3InOiAnXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFcbnNlcXVlbmNlIChzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuYGBleHByZXNzaW9uX2xpc3RgYC4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhIGBgU3RvcEl0ZXJhdGlvbmBgXG5leGNlcHRpb24pLCB0aGUgc3VpdGUgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuY29udGludWVzIHdpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgYGBlbHNlYGAgY2xhdXNlIGlmIHRoZXJlIHdhc1xubm8gbmV4dCBpdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbFxuYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGByYW5nZSgpYGAgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyBgYGZvclxuaSA6PSBhIHRvIGIgZG9gYDsgZS5nLiwgYGBsaXN0KHJhbmdlKDMpKWBgIHJldHVybnMgdGhlIGxpc3QgYGBbMCwgMSxcbjJdYGAuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlIGxvb3BcbiAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJywKLSAnZm9ybWF0c3RyaW5ncyc6ICdcbkZvcm1hdCBTdHJpbmcgU3ludGF4XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBzdHIuZm9ybWF0KClgYCBtZXRob2QgYW5kIHRoZSBgYEZvcm1hdHRlcmBgIGNsYXNzIHNoYXJlIHRoZSBzYW1lXG5zeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiBgYEZvcm1hdHRlcmBgLFxuc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG5cbkZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXNcbmBge31gYC4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWxcbnRleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkIHRvIGluY2x1ZGVcbmEgYnJhY2UgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsIHRleHQsIGl0IGNhbiBiZSBlc2NhcGVkIGJ5IGRvdWJsaW5nOlxuYGB7e2BgIGFuZCBgYH19YGAuXG5cblRoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG5cbiAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4gICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4gICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4gICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXSI+ICtcbiAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbiAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24+XG5cbkluIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggYVxuKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZm9ybWF0dGVkXG5hbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50IGZpZWxkLiBUaGVcbipmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiBmaWVsZCwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50IGBgXCchXCdgYCwgYW5kIGEgKmZvcm1hdF9zcGVjKiwgd2hpY2hcbmlzIHByZWNlZGVkIGJ5IGEgY29sb24gYGBcJzpcJ2BgLiAgVGhlc2Ugc3BlY2lmeSBhIG5vbi1kZWZhdWx0IGZvcm1hdFxuZm9yIHRoZSByZXBsYWNlbWVudCB2YWx1ZS5cblxuU2VlIGFsc28gdGhlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBzZWN0aW9uLlxuXG5UaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgZWl0aGVyIGFcbm51bWJlciBvciBhIGtleXdvcmQuICBJZiBpdFwncyBhIG51bWJlciwgaXQgcmVmZXJzIHRvIGEgcG9zaXRpb25hbFxuYXJndW1lbnQsIGFuZCBpZiBpdFwncyBhIGtleXdvcmQsIGl0IHJlZmVycyB0byBhIG5hbWVkIGtleXdvcmRcbmFyZ3VtZW50LiAgSWYgdGhlIG51bWVyaWNhbCBhcmdfbmFtZXMgaW4gYSBmb3JtYXQgc3RyaW5nIGFyZSAwLCAxLCAyLFxuLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgYW5kIHRoZVxubnVtYmVycyAwLCAxLCAyLCAuLi4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluc2VydGVkIGluIHRoYXQgb3JkZXIuXG5CZWNhdXNlICphcmdfbmFtZSogaXMgbm90IHF1b3RlLWRlbGltaXRlZCwgaXQgaXMgbm90IHBvc3NpYmxlIHRvXG5zcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzIGBgXCcxMFwnYGAgb3JcbmBgXCc6LV1cJ2BgKSB3aXRoaW4gYSBmb3JtYXQgc3RyaW5nLiBUaGUgKmFyZ19uYW1lKiBjYW4gYmUgZm9sbG93ZWQgYnlcbmFueSBudW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mIHRoZVxuZm9ybSBgYFwnLm5hbWVcJ2BgIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyBgYGdldGF0dHIoKWBgLFxud2hpbGUgYW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgYFwnW2luZGV4XVwnYGAgZG9lcyBhbiBpbmRleCBsb29rdXBcbnVzaW5nIGBgX19nZXRpdGVtX18oKWBgLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzIGNhbiBiZVxub21pdHRlZCwgc28gYGBcJ3t9IHt9XCdgYCBpcyBlcXVpdmFsZW50IHRvIGBgXCd7MH0gezF9XCdgYC5cblxuU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcblxuICAgIkZpcnN0LCB0aG91IHNoYWx0IGNvdW50IHRvIHswfSIgIyBSZWZlcmVuY2VzIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJCcmluZyBtZSBhIHt9IiAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSByZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvIHsxfSJcbiAgICJNeSBxdWVzdCBpcyB7bmFtZX0iICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkIGFyZ3VtZW50IFwnbmFtZVwnXG4gICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4gICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAjIEZpcnN0IGVsZW1lbnQgb2Yga2V5d29yZCBhcmd1bWVudCBcJ3BsYXllcnNcJy5cblxuVGhlICpjb252ZXJzaW9uKiBmaWVsZCBjYXVzZXMgYSB0eXBlIGNvZXJjaW9uIGJlZm9yZSBmb3JtYXR0aW5nLlxuTm9ybWFsbHksIHRoZSBqb2Igb2YgZm9ybWF0dGluZyBhIHZhbHVlIGlzIGRvbmUgYnkgdGhlXG5gYF9fZm9ybWF0X18oKWBgIG1ldGhvZCBvZiB0aGUgdmFsdWUgaXRzZWxmLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlc1xuaXQgaXMgZGVzaXJhYmxlIHRvIGZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsXG5vdmVycmlkaW5nIGl0cyBvd24gZGVmaW5pdGlvbiBvZiBmb3JtYXR0aW5nLiAgQnkgY29udmVydGluZyB0aGUgdmFsdWVcbnRvIGEgc3RyaW5nIGJlZm9yZSBjYWxsaW5nIGBgX19mb3JtYXRfXygpYGAsIHRoZSBub3JtYWwgZm9ybWF0dGluZ1xubG9naWMgaXMgYnlwYXNzZWQuXG5cblRocmVlIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6IGBgXCchc1wnYGAgd2hpY2ggY2FsbHNcbmBgc3RyKClgYCBvbiB0aGUgdmFsdWUsIGBgXCchclwnYGAgd2hpY2ggY2FsbHMgYGByZXByKClgYCBhbmQgYGBcJyFhXCdgYFxud2hpY2ggY2FsbHMgYGBhc2NpaSgpYGAuXG5cblNvbWUgZXhhbXBsZXM6XG5cbiAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIkJyaW5nIG91dCB0aGUgaG9seSB7bmFtZSFyfSIgICAgIyBDYWxscyByZXByKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiTW9yZSB7IWF9IiAgICAgICAgICAgICAgICAgICAgICAjIENhbGxzIGFzY2lpKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG5cblRoZSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlIHZhbHVlXG5zaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkIHdpZHRoLCBhbGlnbm1lbnQsXG5wYWRkaW5nLCBkZWNpbWFsIHByZWNpc2lvbiBhbmQgc28gb24uICBFYWNoIHZhbHVlIHR5cGUgY2FuIGRlZmluZSBpdHNcbm93biAiZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlIiBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgKmZvcm1hdF9zcGVjKi5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBzdXBwb3J0IGEgY29tbW9uIGZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSwgd2hpY2hcbmlzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuXG5BICpmb3JtYXRfc3BlYyogZmllbGQgY2FuIGFsc28gaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzXG53aXRoaW4gaXQuIFRoZXNlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMgY2FuIGNvbnRhaW4gb25seSBhIGZpZWxkXG5uYW1lOyBjb252ZXJzaW9uIGZsYWdzIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLiAgVGhlXG5yZXBsYWNlbWVudCBmaWVsZHMgd2l0aGluIHRoZSBmb3JtYXRfc3BlYyBhcmUgc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZVxuKmZvcm1hdF9zcGVjKiBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQuIFRoaXMgYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGFcbnZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5IHNwZWNpZmllZC5cblxuU2VlIHRoZSAqRm9ybWF0IGV4YW1wbGVzKiBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuXG5cbkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Vcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyBjb250YWluZWRcbndpdGhpbiBhIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgcHJlc2VudGVkXG4oc2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCopLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlXG5idWlsdC1pbiBgYGZvcm1hdCgpYGAgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3dcbnRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBmb3JtYXRcbnNwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlIG9ubHlcbnN1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cblxuQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nIChgYCIiYGApIHByb2R1Y2VzXG50aGUgc2FtZSByZXN1bHQgYXMgaWYgeW91IGhhZCBjYWxsZWQgYGBzdHIoKWBgIG9uIHRoZSB2YWx1ZS4gQSBub24tXG5lbXB0eSBmb3JtYXQgc3RyaW5nIHR5cGljYWxseSBtb2RpZmllcyB0aGUgcmVzdWx0LlxuXG5UaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuXG4gICBmb3JtYXRfc3BlYyA6Oj0gW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV1cbiAgIGZpbGwgICAgICAgIDo6PSA8YSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBcJ31cJz5cbiAgIGFsaWduICAgICAgIDo6PSAiPCIgfCAiPiIgfCAiPSIgfCAiXiJcbiAgIHNpZ24gICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbiAgIHdpZHRoICAgICAgIDo6PSBpbnRlZ2VyXG4gICBwcmVjaXNpb24gICA6Oj0gaW50ZWdlclxuICAgdHlwZSAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuXG5UaGUgKmZpbGwqIGNoYXJhY3RlciBjYW4gYmUgYW55IGNoYXJhY3RlciBvdGhlciB0aGFuIFwne1wnIG9yIFwnfVwnLiAgVGhlXG5wcmVzZW5jZSBvZiBhIGZpbGwgY2hhcmFjdGVyIGlzIHNpZ25hbGVkIGJ5IHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nXG5pdCwgd2hpY2ggbXVzdCBiZSBvbmUgb2YgdGhlIGFsaWdubWVudCBvcHRpb25zLiAgSWYgdGhlIHNlY29uZFxuY2hhcmFjdGVyIG9mICpmb3JtYXRfc3BlYyogaXMgbm90IGEgdmFsaWQgYWxpZ25tZW50IG9wdGlvbiwgdGhlbiBpdCBpc1xuYXNzdW1lZCB0aGF0IGJvdGggdGhlIGZpbGwgY2hhcmFjdGVyIGFuZCB0aGUgYWxpZ25tZW50IG9wdGlvbiBhcmVcbmFic2VudC5cblxuVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgZm9sbG93czpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnPFwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgbGVmdC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCBvYmplY3RzKS4gICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCc+XCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSByaWdodC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzKS4gICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJz1cJ2BgICAgfCBGb3JjZXMgdGhlIHBhZGRpbmcgdG8gYmUgcGxhY2VkIGFmdGVyIHRoZSBzaWduIChpZiBhbnkpICAgIHxcbiAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciBwcmludGluZyBmaWVsZHMgICB8XG4gICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtIFwnKzAwMDAwMDEyMFwnLiBUaGlzIGFsaWdubWVudCBvcHRpb24gaXMgb25seSAgICB8XG4gICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ15cJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgZmllbGQgd2lkdGhcbndpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGRhdGEgdG8gZmlsbCBpdCwgc28gdGhhdCB0aGVcbmFsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuXG5UaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gYmUgb25lIG9mXG50aGUgZm9sbG93aW5nOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCcrXCdgYCAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIGZvciBib3RoIHBvc2l0aXZlIGFzICB8XG4gICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJy1cJ2BgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcikuICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBzcGFjZSAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIGxlYWRpbmcgc3BhY2Ugc2hvdWxkIGJlIHVzZWQgb24gcG9zaXRpdmUgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgYGBcJyNcJ2BgIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCBmb3IgdGhlXG5jb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIGRpZmZlcmVudFxudHlwZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBpbnRlZ2VyLCBmbG9hdCwgY29tcGxleCBhbmRcbkRlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciBoZXhhZGVjaW1hbCBvdXRwdXRcbmlzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlIGBgXCcwYlwnYGAsIGBgXCcwb1wnYGAsIG9yXG5gYFwnMHhcJ2BgIHRvIHRoZSBvdXRwdXQgdmFsdWUuIEZvciBmbG9hdHMsIGNvbXBsZXggYW5kIERlY2ltYWwgdGhlXG5hbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byBhbHdheXMgY29udGFpbiBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiBOb3JtYWxseSwgYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNvbnZlcnNpb25zXG5vbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciBgYFwnZ1wnYGAgYW5kIGBgXCdHXCdgYFxuY29udmVyc2lvbnMsIHRyYWlsaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuXG5cblRoZSBgYFwnLFwnYGAgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhIHRob3VzYW5kc1xuc2VwYXJhdG9yLiBGb3IgYSBsb2NhbGUgYXdhcmUgc2VwYXJhdG9yLCB1c2UgdGhlIGBgXCduXCdgYCBpbnRlZ2VyXG5wcmVzZW50YXRpb24gdHlwZSBpbnN0ZWFkLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgYGBcJyxcJ2BgIG9wdGlvbiAoc2VlIGFsc28gKipQRVBcbjM3OCoqKS5cblxuKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdFxuc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuXG5cbklmIHRoZSAqd2lkdGgqIGZpZWxkIGlzIHByZWNlZGVkIGJ5IGEgemVybyAoYGBcJzBcJ2BgKSBjaGFyYWN0ZXIsIHRoaXNcbmVuYWJsZXMgemVyby1wYWRkaW5nLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGFuICphbGlnbm1lbnQqIHR5cGUgb2ZcbmBgXCc9XCdgYCBhbmQgYSAqZmlsbCogY2hhcmFjdGVyIG9mIGBgXCcwXCdgYC5cblxuVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaWdpdHMgc2hvdWxkXG5iZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWVcbmZvcm1hdHRlZCB3aXRoIGBgXCdmXCdgYCBhbmQgYGBcJ0ZcJ2BgLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSBkZWNpbWFsXG5wb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBmb3JtYXR0ZWQgd2l0aCBgYFwnZ1wnYGAgb3IgYGBcJ0dcJ2BgLlxuRm9yIG5vbi1udW1iZXIgdHlwZXMgdGhlIGZpZWxkIGluZGljYXRlcyB0aGUgbWF4aW11bSBmaWVsZCBzaXplIC0gaW5cbm90aGVyIHdvcmRzLCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBmcm9tIHRoZSBmaWVsZCBjb250ZW50LlxuVGhlICpwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cblxuRmluYWxseSwgdGhlICp0eXBlKiBkZXRlcm1pbmVzIGhvdyB0aGUgZGF0YSBzaG91bGQgYmUgcHJlc2VudGVkLlxuXG5UaGUgYXZhaWxhYmxlIHN0cmluZyBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdzXCdgYCAgIHwgU3RyaW5nIGZvcm1hdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlIGZvciBzdHJpbmdzIGFuZCAgICB8XG4gICB8ICAgICAgICAgICB8IG1heSBiZSBvbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgYGBcJ3NcJ2BgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSBhdmFpbGFibGUgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdiXCdgYCAgIHwgQmluYXJ5IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMi4gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnY1wnYGAgICB8IENoYXJhY3Rlci4gQ29udmVydHMgdGhlIGludGVnZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgICAgICAgfFxuICAgfCAgICAgICAgICAgfCB1bmljb2RlIGNoYXJhY3RlciBiZWZvcmUgcHJpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdkXCdgYCAgIHwgRGVjaW1hbCBJbnRlZ2VyLiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxMC4gICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnb1wnYGAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgOC4gICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ3hcJ2BgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgbG93ZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnWFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyB1cHBlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCduXCdgYCAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGBgXCdkXCdgYCwgZXhjZXB0IHRoYXQgaXQgdXNlcyAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbkluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBwcmVzZW50YXRpb24gdHlwZXMsIGludGVnZXJzIGNhbiBiZSBmb3JtYXR0ZWRcbndpdGggdGhlIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBsaXN0ZWQgYmVsb3cgKGV4Y2VwdFxuYGBcJ25cJ2BgIGFuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgYGBmbG9hdCgpYGAgaXMgdXNlZCB0byBjb252ZXJ0IHRoZVxuaW50ZWdlciB0byBhIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZWZvcmUgZm9ybWF0dGluZy5cblxuVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCBkZWNpbWFsIHZhbHVlc1xuYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdlXCdgYCAgIHwgRXhwb25lbnQgbm90YXRpb24uIFByaW50cyB0aGUgbnVtYmVyIGluIHNjaWVudGlmaWMgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG5vdGF0aW9uIHVzaW5nIHRoZSBsZXR0ZXIgXCdlXCcgdG8gaW5kaWNhdGUgdGhlIGV4cG9uZW50LiAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRVwnYGAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzIGBgXCdlXCdgYCBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgXCdFXCcgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnZlwnYGAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgZml4ZWQtcG9pbnQgbnVtYmVyLiAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0ZcJ2BgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyBgYFwnZlwnYGAsIGJ1dCBjb252ZXJ0cyBgYG5hbmBgIHRvICAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYE5BTmBgIGFuZCBgYGluZmBgIHRvIGBgSU5GYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdnXCdgYCAgIHwgR2VuZXJhbCBmb3JtYXQuICBGb3IgYSBnaXZlbiBwcmVjaXNpb24gYGBwID49IDFgYCwgdGhpcyAgICB8XG4gICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvIGBgcGBgIHNpZ25pZmljYW50IGRpZ2l0cyBhbmQgdGhlbiAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50IGZvcm1hdCBvciBpbiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2NpZW50aWZpYyBub3RhdGlvbiwgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICBUaGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCB0aGUgcmVzdWx0ICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSBgYFwnZVwnYGAgYW5kIHByZWNpc2lvbiAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYHAtMWBgIHdvdWxkIGhhdmUgZXhwb25lbnQgYGBleHBgYC4gIFRoZW4gaWYgYGAtNCA8PSBleHAgIHxcbiAgIHwgICAgICAgICAgIHwgPCBwYGAsIHRoZSBudW1iZXIgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgXCdmXCdgYCBhbmQgcHJlY2lzaW9uIGBgcC0xLWV4cGBgLiBPdGhlcndpc2UsIHRoZSBudW1iZXIgICB8XG4gICB8ICAgICAgICAgICB8IGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlIGBgXCdlXCdgYCBhbmQgcHJlY2lzaW9uICB8XG4gICB8ICAgICAgICAgICB8IGBgcC0xYGAuIEluIGJvdGggY2FzZXMgaW5zaWduaWZpY2FudCB0cmFpbGluZyB6ZXJvcyBhcmUgICAgfFxuICAgfCAgICAgICAgICAgfCByZW1vdmVkIGZyb20gdGhlIHNpZ25pZmljYW5kLCBhbmQgdGhlIGRlY2ltYWwgcG9pbnQgaXMgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYWxzbyByZW1vdmVkIGlmIHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyAgICB8XG4gICB8ICAgICAgICAgICB8IGl0LiAgUG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgfFxuICAgfCAgICAgICAgICAgfCB6ZXJvLCBhbmQgbmFucywgYXJlIGZvcm1hdHRlZCBhcyBgYGluZmBgLCBgYC1pbmZgYCwgYGAwYGAsIHxcbiAgIHwgICAgICAgICAgIHwgYGAtMGBgIGFuZCBgYG5hbmBgIHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2lvbi4gIEEgcHJlY2lzaW9uIG9mIGBgMGBgIGlzIHRyZWF0ZWQgYXMgZXF1aXZhbGVudCAgfFxuICAgfCAgICAgICAgICAgfCB0byBhIHByZWNpc2lvbiBvZiBgYDFgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdHXCdgYCAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgYGBcJ2dcJ2BgIGV4Y2VwdCBzd2l0Y2hlcyB0byBgYFwnRVwnYGAgfFxuICAgfCAgICAgICAgICAgfCBpZiB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgcmVwcmVzZW50YXRpb25zIG9mICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgaW5maW5pdHkgYW5kIE5hTiBhcmUgdXBwZXJjYXNlZCwgdG9vLiAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnblwnYGAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyBgYFwnZ1wnYGAsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXIgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCclXCdgYCAgIHwgUGVyY2VudGFnZS4gTXVsdGlwbGllcyB0aGUgbnVtYmVyIGJ5IDEwMCBhbmQgZGlzcGxheXMgaW4gICB8XG4gICB8ICAgICAgICAgICB8IGZpeGVkIChgYFwnZlwnYGApIGZvcm1hdCwgZm9sbG93ZWQgYnkgYSBwZXJjZW50IHNpZ24uICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBTaW1pbGFyIHRvIGBgXCdnXCdgYCwgZXhjZXB0IHdpdGggYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgZGVjaW1hbCBwb2ludCBhbmQgYSBkZWZhdWx0IHByZWNpc2lvbiBvZiAxMi4gVGhpcyBpcyAgIHxcbiAgIHwgICAgICAgICAgIHwgaW50ZW5kZWQgdG8gbWF0Y2ggYGBzdHIoKWBgLCBleGNlcHQgeW91IGNhbiBhZGQgdGhlIG90aGVyICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdCBtb2RpZmllcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuXG5Gb3JtYXQgZXhhbXBsZXNcbj09PT09PT09PT09PT09PVxuXG5UaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlIG5ldyBmb3JtYXQgc3ludGF4IGFuZCBjb21wYXJpc29uXG53aXRoIHRoZSBvbGQgYGAlYGAtZm9ybWF0dGluZy5cblxuSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGRcbmBgJWBgLWZvcm1hdHRpbmcsIHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBgYHt9YGAgYW5kIHdpdGggYGA6YGAgdXNlZFxuaW5zdGVhZCBvZiBgYCVgYC4gRm9yIGV4YW1wbGUsIGBgXCclMDMuMmZcJ2BgIGNhbiBiZSB0cmFuc2xhdGVkIHRvXG5gYFwnezowMy4yZn1cJ2BgLlxuXG5UaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCBvcHRpb25zLCBzaG93blxuaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcblxuICAgPj4+IFwnezB9LCB7MX0sIHsyfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3t9LCB7fSwge31cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJykgICMgMy4xKyBvbmx5XG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoKlwnYWJjXCcpICAgICAgIyB1bnBhY2tpbmcgYXJndW1lbnQgc2VxdWVuY2VcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7MH17MX17MH1cJy5mb3JtYXQoXCdhYnJhXCcsIFwnY2FkXCcpICAgIyBhcmd1bWVudHNcJyBpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuICAgXCdhYnJhY2FkYWJyYVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcblxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KGxhdGl0dWRlPVwnMzcuMjROXCcsIGxvbmdpdHVkZT1cJy0xMTUuODFXXCcpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcbiAgID4+PiBjb29yZCA9IHtcJ2xhdGl0dWRlXCc6IFwnMzcuMjROXCcsIFwnbG9uZ2l0dWRlXCc6IFwnLTExNS44MVdcJ31cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdCgqKmNvb3JkKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBhdHRyaWJ1dGVzOlxuXG4gICA+Pj4gYyA9IDMtNWpcbiAgID4+PiAoXCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgezAucmVhbH0gXCdcbiAgIC4uLiAgXCdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LlwnKS5mb3JtYXQoYylcbiAgIFwnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IDMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuXCdcbiAgID4+PiBjbGFzcyBQb2ludDpcbiAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4gICAuLi4gICAgIGRlZiBfX3N0cl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnUG9pbnQoe3NlbGYueH0sIHtzZWxmLnl9KVwnLmZvcm1hdChzZWxmPXNlbGYpXG4gICAuLi5cbiAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4gICBcJ1BvaW50KDQsIDIpXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGl0ZW1zOlxuXG4gICA+Pj4gY29vcmQgPSAoMywgNSlcbiAgID4+PiBcJ1g6IHswWzBdfTsgIFk6IHswWzFdfVwnLmZvcm1hdChjb29yZClcbiAgIFwnWDogMzsgIFk6IDVcJ1xuXG5SZXBsYWNpbmcgYGAlc2BgIGFuZCBgYCVyYGA6XG5cbiAgID4+PiAicmVwcigpIHNob3dzIHF1b3RlczogeyFyfTsgc3RyKCkgZG9lc25cJ3Q6IHshc30iLmZvcm1hdChcJ3Rlc3QxXCcsIFwndGVzdDJcJylcbiAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcblxuQWxpZ25pbmcgdGhlIHRleHQgYW5kIHNwZWNpZnlpbmcgYSB3aWR0aDpcblxuICAgPj4+IFwnezo8MzB9XCcuZm9ybWF0KFwnbGVmdCBhbGlnbmVkXCcpXG4gICBcJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7Oj4zMH1cJy5mb3JtYXQoXCdyaWdodCBhbGlnbmVkXCcpXG4gICBcJyAgICAgICAgICAgICAgICAgcmlnaHQgYWxpZ25lZFwnXG4gICA+Pj4gXCd7Ol4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKVxuICAgXCcgICAgICAgICAgIGNlbnRlcmVkICAgICAgICAgICBcJ1xuICAgPj4+IFwnezoqXjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpICAjIHVzZSBcJypcJyBhcyBhIGZpbGwgY2hhclxuICAgXCcqKioqKioqKioqKmNlbnRlcmVkKioqKioqKioqKipcJ1xuXG5SZXBsYWNpbmcgYGAlK2ZgYCwgYGAlLWZgYCwgYW5kIGBgJSBmYGAgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuXG4gICA+Pj4gXCd7OitmfTsgezorZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgYWx3YXlzXG4gICBcJyszLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6IGZ9OyB7OiBmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBhIHNwYWNlIGZvciBwb3NpdGl2ZSBudW1iZXJzXG4gICBcJyAzLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6LWZ9OyB7Oi1mfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBvbmx5IHRoZSBtaW51cyAtLSBzYW1lIGFzIFwnezpmfTsgezpmfVwnXG4gICBcJzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuXG5SZXBsYWNpbmcgYGAleGBgIGFuZCBgYCVvYGAgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGRpZmZlcmVudFxuYmFzZXM6XG5cbiAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogezA6Yn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTBcJ1xuICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46IHswOiNifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMFwnXG5cblVzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG5cbiAgID4+PiBcJ3s6LH1cJy5mb3JtYXQoMTIzNDU2Nzg5MClcbiAgIFwnMSwyMzQsNTY3LDg5MFwnXG5cbkV4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuXG4gICA+Pj4gcG9pbnRzID0gMTlcbiAgID4+PiB0b3RhbCA9IDIyXG4gICA+Pj4gXCdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfVwnLmZvcm1hdChwb2ludHMvdG90YWwpXG4gICBcJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlXCdcblxuVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuXG4gICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4gICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4gICA+Pj4gXCd7OiVZLSVtLSVkICVIOiVNOiVTfVwnLmZvcm1hdChkKVxuICAgXCcyMDEwLTA3LTA0IDEyOjE1OjU4XCdcblxuTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcblxuICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoXCc8Xj5cJywgW1wnbGVmdFwnLCBcJ2NlbnRlclwnLCBcJ3JpZ2h0XCddKTpcbiAgIC4uLiAgICAgXCd7MDp7ZmlsbH17YWxpZ259MTZ9XCcuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sIGFsaWduPWFsaWduKVxuICAgLi4uXG4gICBcJ2xlZnQ8PDw8PDw8PDw8PDxcJ1xuICAgXCdeXl5eXmNlbnRlcl5eXl5eXCdcbiAgIFwnPj4+Pj4+Pj4+Pj5yaWdodFwnXG4gICA+Pj5cbiAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4gICA+Pj4gXCd7OjAyWH17OjAyWH17OjAyWH17OjAyWH1cJy5mb3JtYXQoKm9jdGV0cylcbiAgIFwnQzBBODAwMDFcJ1xuICAgPj4+IGludChfLCAxNilcbiAgIDMyMzIyMzU1MjFcbiAgID4+PlxuICAgPj4+IHdpZHRoID0gNVxuICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6XG4gICAuLi4gICAgIGZvciBiYXNlIGluIFwnZFhvYlwnOlxuICAgLi4uICAgICAgICAgcHJpbnQoXCd7MDp7d2lkdGh9e2Jhc2V9fVwnLmZvcm1hdChudW0sIGJhc2U9YmFzZSwgd2lkdGg9d2lkdGgpLCBlbmQ9XCcgXCcpXG4gICAuLi4gICAgIHByaW50KClcbiAgIC4uLlxuICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbiAgICAgICA2ICAgICA2ICAgICA2ICAgMTEwXG4gICAgICAgNyAgICAgNyAgICAgNyAgIDExMVxuICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbiAgICAgICA5ICAgICA5ICAgIDExICAxMDAxXG4gICAgICAxMCAgICAgQSAgICAxMiAgMTAxMFxuICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCi0gJ2Z1bmN0aW9uJzogJ1xuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKlxuICAgICAgICAgICAgICAgICAgICAgIFssICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogYGA9YGBcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25cbmlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb25jZSwgd2hlblxudGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlIGlzXG51c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgd2hlbiBhXG5kZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGEgbGlzdCBvciBhIGRpY3Rpb25hcnk6XG5pZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSB0byBhXG5saXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzIGdlbmVyYWxseSBub3RcbndoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlIGBgTm9uZWBgIGFzIHRoZVxuZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cbicsCisgJ2Zvcm1hdHN0cmluZ3MnOiAnXG5Gb3JtYXQgU3RyaW5nIFN5bnRheFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgc3RyLmZvcm1hdCgpYGAgbWV0aG9kIGFuZCB0aGUgYGBGb3JtYXR0ZXJgYCBjbGFzcyBzaGFyZSB0aGUgc2FtZVxuc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgYGBGb3JtYXR0ZXJgYCxcbnN1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLlxuXG5Gb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgY3VybHkgYnJhY2VzXG5gYHt9YGAuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgY29uc2lkZXJlZCBsaXRlcmFsXG50ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgbmVlZCB0byBpbmNsdWRlXG5hIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSBkb3VibGluZzpcbmBge3tgYCBhbmQgYGB9fWBgLlxuXG5UaGUgZ3JhbW1hciBmb3IgYSByZXBsYWNlbWVudCBmaWVsZCBpcyBhcyBmb2xsb3dzOlxuXG4gICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiIGNvbnZlcnNpb25dIFsiOiIgZm9ybWF0X3NwZWNdICJ9IlxuICAgICAgZmllbGRfbmFtZSAgICAgICAgOjo9IGFyZ19uYW1lICgiLiIgYXR0cmlidXRlX25hbWUgfCAiWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuICAgICAgYXJnX25hbWUgICAgICAgICAgOjo9IFtpZGVudGlmaWVyIHwgaW50ZWdlcl1cbiAgICAgIGF0dHJpYnV0ZV9uYW1lICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuICAgICAgaW5kZXhfc3RyaW5nICAgICAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIl0iPiArXG4gICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiIHwgImEiXG4gICAgICBmb3JtYXRfc3BlYyAgICAgICA6Oj0gPGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uPlxuXG5JbiBsZXNzIGZvcm1hbCB0ZXJtcywgdGhlIHJlcGxhY2VtZW50IGZpZWxkIGNhbiBzdGFydCB3aXRoIGFcbipmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvIGJlIGZvcm1hdHRlZFxuYW5kIGluc2VydGVkIGludG8gdGhlIG91dHB1dCBpbnN0ZWFkIG9mIHRoZSByZXBsYWNlbWVudCBmaWVsZC4gVGhlXG4qZmllbGRfbmFtZSogaXMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICAqY29udmVyc2lvbiogZmllbGQsIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCBgYFwnIVwnYGAsIGFuZCBhICpmb3JtYXRfc3BlYyosIHdoaWNoXG5pcyBwcmVjZWRlZCBieSBhIGNvbG9uIGBgXCc6XCdgYC4gIFRoZXNlIHNwZWNpZnkgYSBub24tZGVmYXVsdCBmb3JtYXRcbmZvciB0aGUgcmVwbGFjZW1lbnQgdmFsdWUuXG5cblNlZSBhbHNvIHRoZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogc2VjdGlvbi5cblxuVGhlICpmaWVsZF9uYW1lKiBpdHNlbGYgYmVnaW5zIHdpdGggYW4gKmFyZ19uYW1lKiB0aGF0IGlzIGVpdGhlciBhXG5udW1iZXIgb3IgYSBrZXl3b3JkLiAgSWYgaXRcJ3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhIHBvc2l0aW9uYWxcbmFyZ3VtZW50LCBhbmQgaWYgaXRcJ3MgYSBrZXl3b3JkLCBpdCByZWZlcnMgdG8gYSBuYW1lZCBrZXl3b3JkXG5hcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyBhcmUgMCwgMSwgMixcbi4uLiBpbiBzZXF1ZW5jZSwgdGhleSBjYW4gYWxsIGJlIG9taXR0ZWQgKG5vdCBqdXN0IHNvbWUpIGFuZCB0aGVcbm51bWJlcnMgMCwgMSwgMiwgLi4uIHdpbGwgYmUgYXV0b21hdGljYWxseSBpbnNlcnRlZCBpbiB0aGF0IG9yZGVyLlxuQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0b1xuc3BlY2lmeSBhcmJpdHJhcnkgZGljdGlvbmFyeSBrZXlzIChlLmcuLCB0aGUgc3RyaW5ncyBgYFwnMTBcJ2BgIG9yXG5gYFwnOi1dXCdgYCkgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlIGZvbGxvd2VkIGJ5XG5hbnkgbnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiB0aGVcbmZvcm0gYGBcJy5uYW1lXCdgYCBzZWxlY3RzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgdXNpbmcgYGBnZXRhdHRyKClgYCxcbndoaWxlIGFuIGV4cHJlc3Npb24gb2YgdGhlIGZvcm0gYGBcJ1tpbmRleF1cJ2BgIGRvZXMgYW4gaW5kZXggbG9va3VwXG51c2luZyBgYF9fZ2V0aXRlbV9fKClgYC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogVGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVycyBjYW4gYmVcbm9taXR0ZWQsIHNvIGBgXCd7fSB7fVwnYGAgaXMgZXF1aXZhbGVudCB0byBgYFwnezB9IHsxfVwnYGAuXG5cblNvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG5cbiAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICMgUmVmZXJlbmNlcyBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0bHkgcmVmZXJlbmNlcyB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkZyb20ge30gdG8ge30iICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byB7MX0iXG4gICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAjIFJlZmVyZW5jZXMga2V5d29yZCBhcmd1bWVudCBcJ25hbWVcJ1xuICAgIldlaWdodCBpbiB0b25zIHswLndlaWdodH0iICAgICAgIyBcJ3dlaWdodFwnIGF0dHJpYnV0ZSBvZiBmaXJzdCBwb3NpdGlvbmFsIGFyZ1xuICAgIlVuaXRzIGRlc3Ryb3llZDoge3BsYXllcnNbMF19IiAgIyBGaXJzdCBlbGVtZW50IG9mIGtleXdvcmQgYXJndW1lbnQgXCdwbGF5ZXJzXCcuXG5cblRoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgZm9ybWF0dGluZy5cbk5vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZVxuYGBfX2Zvcm1hdF9fKClgYCBtZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXNcbml0IGlzIGRlc2lyYWJsZSB0byBmb3JjZSBhIHR5cGUgdG8gYmUgZm9ybWF0dGVkIGFzIGEgc3RyaW5nLFxub3ZlcnJpZGluZyBpdHMgb3duIGRlZmluaXRpb24gb2YgZm9ybWF0dGluZy4gIEJ5IGNvbnZlcnRpbmcgdGhlIHZhbHVlXG50byBhIHN0cmluZyBiZWZvcmUgY2FsbGluZyBgYF9fZm9ybWF0X18oKWBgLCB0aGUgbm9ybWFsIGZvcm1hdHRpbmdcbmxvZ2ljIGlzIGJ5cGFzc2VkLlxuXG5UaHJlZSBjb252ZXJzaW9uIGZsYWdzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOiBgYFwnIXNcJ2BgIHdoaWNoIGNhbGxzXG5gYHN0cigpYGAgb24gdGhlIHZhbHVlLCBgYFwnIXJcJ2BgIHdoaWNoIGNhbGxzIGBgcmVwcigpYGAgYW5kIGBgXCchYVwnYGBcbndoaWNoIGNhbGxzIGBgYXNjaWkoKWBgLlxuXG5Tb21lIGV4YW1wbGVzOlxuXG4gICAiSGFyb2xkXCdzIGEgY2xldmVyIHswIXN9IiAgICAgICAgIyBDYWxscyBzdHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJCcmluZyBvdXQgdGhlIGhvbHkge25hbWUhcn0iICAgICMgQ2FsbHMgcmVwcigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIk1vcmUgeyFhfSIgICAgICAgICAgICAgICAgICAgICAgIyBDYWxscyBhc2NpaSgpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuXG5UaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZSB2YWx1ZVxuc2hvdWxkIGJlIHByZXNlbnRlZCwgaW5jbHVkaW5nIHN1Y2ggZGV0YWlscyBhcyBmaWVsZCB3aWR0aCwgYWxpZ25tZW50LFxucGFkZGluZywgZGVjaW1hbCBwcmVjaXNpb24gYW5kIHNvIG9uLiAgRWFjaCB2YWx1ZSB0eXBlIGNhbiBkZWZpbmUgaXRzXG5vd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICpmb3JtYXRfc3BlYyouXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UsIHdoaWNoXG5pcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi5cblxuQSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNhbiBhbHNvIGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkc1xud2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIGNhbiBjb250YWluIG9ubHkgYSBmaWVsZFxubmFtZTsgY29udmVyc2lvbiBmbGFncyBhbmQgZm9ybWF0IHNwZWNpZmljYXRpb25zIGFyZSBub3QgYWxsb3dlZC4gIFRoZVxucmVwbGFjZW1lbnQgZmllbGRzIHdpdGhpbiB0aGUgZm9ybWF0X3NwZWMgYXJlIHN1YnN0aXR1dGVkIGJlZm9yZSB0aGVcbipmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiBUaGlzIGFsbG93cyB0aGUgZm9ybWF0dGluZyBvZiBhXG52YWx1ZSB0byBiZSBkeW5hbWljYWxseSBzcGVjaWZpZWQuXG5cblNlZSB0aGUgKkZvcm1hdCBleGFtcGxlcyogc2VjdGlvbiBmb3Igc29tZSBleGFtcGxlcy5cblxuXG5Gb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgY29udGFpbmVkXG53aXRoaW4gYSBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlIHByZXNlbnRlZFxuKHNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqKS4gIFRoZXkgY2FuIGFsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZVxuYnVpbHQtaW4gYGBmb3JtYXQoKWBgIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93XG50aGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBmb3IgZm9ybWF0XG5zcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSBvbmx5XG5zdXBwb3J0ZWQgYnkgdGhlIG51bWVyaWMgdHlwZXMuXG5cbkEgZ2VuZXJhbCBjb252ZW50aW9uIGlzIHRoYXQgYW4gZW1wdHkgZm9ybWF0IHN0cmluZyAoYGAiImBgKSBwcm9kdWNlc1xudGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkIGBgc3RyKClgYCBvbiB0aGUgdmFsdWUuIEEgbm9uLVxuZW1wdHkgZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cblxuVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcblxuICAgZm9ybWF0X3NwZWMgOjo9IFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdXG4gICBmaWxsICAgICAgICA6Oj0gPGEgY2hhcmFjdGVyIG90aGVyIHRoYW4gXCd7XCcgb3IgXCd9XCc+XG4gICBhbGlnbiAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4gICBzaWduICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4gICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuICAgcHJlY2lzaW9uICAgOjo9IGludGVnZXJcbiAgIHR5cGUgICAgICAgIDo6PSAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAiRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcblxuVGhlICpmaWxsKiBjaGFyYWN0ZXIgY2FuIGJlIGFueSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBcJ3tcJyBvciBcJ31cJy4gIFRoZVxucHJlc2VuY2Ugb2YgYSBmaWxsIGNoYXJhY3RlciBpcyBzaWduYWxlZCBieSB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZ1xuaXQsIHdoaWNoIG11c3QgYmUgb25lIG9mIHRoZSBhbGlnbm1lbnQgb3B0aW9ucy4gIElmIHRoZSBzZWNvbmRcbmNoYXJhY3RlciBvZiAqZm9ybWF0X3NwZWMqIGlzIG5vdCBhIHZhbGlkIGFsaWdubWVudCBvcHRpb24sIHRoZW4gaXQgaXNcbmFzc3VtZWQgdGhhdCBib3RoIHRoZSBmaWxsIGNoYXJhY3RlciBhbmQgdGhlIGFsaWdubWVudCBvcHRpb24gYXJlXG5hYnNlbnQuXG5cblRoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzIGZvbGxvd3M6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJzxcJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3Qgb2JqZWN0cykuICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnPlwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCc9XCdgYCAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciB0aGUgc2lnbiAoaWYgYW55KSAgICB8XG4gICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgcHJpbnRpbmcgZmllbGRzICAgfFxuICAgfCAgICAgICAgICAgfCBpbiB0aGUgZm9ybSBcJyswMDAwMDAxMjBcJy4gVGhpcyBhbGlnbm1lbnQgb3B0aW9uIGlzIG9ubHkgICAgfFxuICAgfCAgICAgICAgICAgfCB2YWxpZCBmb3IgbnVtZXJpYyB0eXBlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdeXCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZSB0aGF0IHVubGVzcyBhIG1pbmltdW0gZmllbGQgd2lkdGggaXMgZGVmaW5lZCwgdGhlIGZpZWxkIHdpZHRoXG53aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvIHRoYXQgdGhlXG5hbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cblxuVGhlICpzaWduKiBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgbnVtYmVyIHR5cGVzLCBhbmQgY2FuIGJlIG9uZSBvZlxudGhlIGZvbGxvd2luZzpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnK1wnYGAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgYm90aCBwb3NpdGl2ZSBhcyAgfFxuICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCctXCdgYCAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIG5lZ2F0aXZlICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSB1c2VkIG9uIHBvc2l0aXZlICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGBgXCcjXCdgYCBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgZm9yIHRoZVxuY29udmVyc2lvbi4gIFRoZSBhbHRlcm5hdGUgZm9ybSBpcyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciBkaWZmZXJlbnRcbnR5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsIGNvbXBsZXggYW5kXG5EZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgaGV4YWRlY2ltYWwgb3V0cHV0XG5pcyB1c2VkLCB0aGlzIG9wdGlvbiBhZGRzIHRoZSBwcmVmaXggcmVzcGVjdGl2ZSBgYFwnMGJcJ2BgLCBgYFwnMG9cJ2BgLCBvclxuYGBcJzB4XCdgYCB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCBEZWNpbWFsIHRoZVxuYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gYWx3YXlzIGNvbnRhaW4gYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC4gTm9ybWFsbHksIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjb252ZXJzaW9uc1xub25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgYGBcJ2dcJ2BgIGFuZCBgYFwnR1wnYGBcbmNvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0LlxuXG5UaGUgYGBcJyxcJ2BgIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYSBjb21tYSBmb3IgYSB0aG91c2FuZHNcbnNlcGFyYXRvci4gRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSBgYFwnblwnYGAgaW50ZWdlclxucHJlc2VudGF0aW9uIHR5cGUgaW5zdGVhZC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlIGBgXCcsXCdgYCBvcHRpb24gKHNlZSBhbHNvICoqUEVQXG4zNzgqKikuXG5cbip3aWR0aCogaXMgYSBkZWNpbWFsIGludGVnZXIgZGVmaW5pbmcgdGhlIG1pbmltdW0gZmllbGQgd2lkdGguICBJZiBub3RcbnNwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZW50LlxuXG5QcmVjZWRpbmcgdGhlICp3aWR0aCogZmllbGQgYnkgYSB6ZXJvIChgYFwnMFwnYGApIGNoYXJhY3RlciBlbmFibGVzXG5zaWduLWF3YXJlIHplcm8tcGFkZGluZyBmb3IgbnVtZXJpYyB0eXBlcy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhXG4qZmlsbCogY2hhcmFjdGVyIG9mIGBgXCcwXCdgYCB3aXRoIGFuICphbGlnbm1lbnQqIHR5cGUgb2YgYGBcJz1cJ2BgLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggYGBcJ2ZcJ2BgIGFuZCBgYFwnRlwnYGAsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGRlY2ltYWxcbnBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoIGBgXCdnXCdgYCBvciBgYFwnR1wnYGAuXG5Gb3Igbm9uLW51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpblxub3RoZXIgd29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuXG5UaGUgKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ3NcJ2BgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnc1wnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2JcJ2BgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdjXCdgYCAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2RcJ2BgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdvXCdgYCAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwneFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdYXCdgYCAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ25cJ2BgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLCBleGNlcHQgdGhhdCBpdCB1c2VzICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnZFwnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0XG5gYFwnblwnYGAgYW5kIE5vbmUpLiBXaGVuIGRvaW5nIHNvLCBgYGZsb2F0KClgYCBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlXG5pbnRlZ2VyIHRvIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJlZm9yZSBmb3JtYXR0aW5nLlxuXG5UaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kIGRlY2ltYWwgdmFsdWVzXG5hcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2VcJ2BgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbm90YXRpb24gdXNpbmcgdGhlIGxldHRlciBcJ2VcJyB0byBpbmRpY2F0ZSB0aGUgZXhwb25lbnQuICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdFXCdgYCAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgYGBcJ2VcJ2BgIGV4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdmXCdgYCAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRlwnYGAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzIGBgXCdmXCdgYCwgYnV0IGNvbnZlcnRzIGBgbmFuYGAgdG8gICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgTkFOYGAgYW5kIGBgaW5mYGAgdG8gYGBJTkZgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiBgYHAgPj0gMWBgLCB0aGlzICAgIHxcbiAgIHwgICAgICAgICAgIHwgcm91bmRzIHRoZSBudW1iZXIgdG8gYGBwYGAgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgZm9ybWF0IG9yIGluICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzIG1hZ25pdHVkZS4gIFRoZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzZSBydWxlcyBhcmUgYXMgZm9sbG93czogc3VwcG9zZSB0aGF0IHRoZSByZXN1bHQgICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlIGBgXCdlXCdgYCBhbmQgcHJlY2lzaW9uICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgcC0xYGAgd291bGQgaGF2ZSBleHBvbmVudCBgYGV4cGBgLiAgVGhlbiBpZiBgYC00IDw9IGV4cCAgfFxuICAgfCAgICAgICAgICAgfCA8IHBgYCwgdGhlIG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBcJ2ZcJ2BgIGFuZCBwcmVjaXNpb24gYGBwLTEtZXhwYGAuIE90aGVyd2lzZSwgdGhlIG51bWJlciAgIHxcbiAgIHwgICAgICAgICAgIHwgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgYGBcJ2VcJ2BgIGFuZCBwcmVjaXNpb24gIHxcbiAgIHwgICAgICAgICAgIHwgYGBwLTFgYC4gSW4gYm90aCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAgICB8XG4gICB8ICAgICAgICAgICB8IHJlbW92ZWQgZnJvbSB0aGUgc2lnbmlmaWNhbmQsIGFuZCB0aGUgZGVjaW1hbCBwb2ludCBpcyAgICAgfFxuICAgfCAgICAgICAgICAgfCBhbHNvIHJlbW92ZWQgaWYgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nICAgIHxcbiAgIHwgICAgICAgICAgIHwgaXQuICBQb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW5maW5pdHksIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB8XG4gICB8ICAgICAgICAgICB8IHplcm8sIGFuZCBuYW5zLCBhcmUgZm9ybWF0dGVkIGFzIGBgaW5mYGAsIGBgLWluZmBgLCBgYDBgYCwgfFxuICAgfCAgICAgICAgICAgfCBgYC0wYGAgYW5kIGBgbmFuYGAgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uLiAgQSBwcmVjaXNpb24gb2YgYGAwYGAgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50ICB8XG4gICB8ICAgICAgICAgICB8IHRvIGEgcHJlY2lzaW9uIG9mIGBgMWBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gU2FtZSBhcyBgYFwnZ1wnYGAgZXhjZXB0IHN3aXRjaGVzIHRvIGBgXCdFXCdgYCB8XG4gICB8ICAgICAgICAgICB8IGlmIHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSByZXByZXNlbnRhdGlvbnMgb2YgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBpbmZpbml0eSBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCB0b28uICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCduXCdgYCAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGBgXCdnXCdgYCwgZXhjZXB0IHRoYXQgaXQgdXNlcyAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJyVcJ2BgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwIGFuZCBkaXNwbGF5cyBpbiAgIHxcbiAgIHwgICAgICAgICAgIHwgZml4ZWQgKGBgXCdmXCdgYCkgZm9ybWF0LCBmb2xsb3dlZCBieSBhIHBlcmNlbnQgc2lnbi4gICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gYGBcJ2dcJ2BgLCBleGNlcHQgd2l0aCBhdCBsZWFzdCBvbmUgZGlnaXQgcGFzdCAgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBkZWNpbWFsIHBvaW50IGFuZCBhIGRlZmF1bHQgcHJlY2lzaW9uIG9mIDEyLiBUaGlzIGlzICAgfFxuICAgfCAgICAgICAgICAgfCBpbnRlbmRlZCB0byBtYXRjaCBgYHN0cigpYGAsIGV4Y2VwdCB5b3UgY2FuIGFkZCB0aGUgb3RoZXIgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0IG1vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgbmV3IGZvcm1hdCBzeW50YXggYW5kIGNvbXBhcmlzb25cbndpdGggdGhlIG9sZCBgYCVgYC1mb3JtYXR0aW5nLlxuXG5JbiBtb3N0IG9mIHRoZSBjYXNlcyB0aGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gdGhlIG9sZFxuYGAlYGAtZm9ybWF0dGluZywgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlIGBge31gYCBhbmQgd2l0aCBgYDpgYCB1c2VkXG5pbnN0ZWFkIG9mIGBgJWBgLiBGb3IgZXhhbXBsZSwgYGBcJyUwMy4yZlwnYGAgY2FuIGJlIHRyYW5zbGF0ZWQgdG9cbmBgXCd7OjAzLjJmfVwnYGAuXG5cblRoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50IG9wdGlvbnMsIHNob3duXG5pbiB0aGUgZm9sbG93IGV4YW1wbGVzLlxuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IHBvc2l0aW9uOlxuXG4gICA+Pj4gXCd7MH0sIHsxfSwgezJ9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwne30sIHt9LCB7fVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKSAgIyAzLjErIG9ubHlcbiAgIFwnYSwgYiwgY1wnXG4gICA+Pj4gXCd7Mn0sIHsxfSwgezB9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2MsIGIsIGFcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdCgqXCdhYmNcJykgICAgICAjIHVucGFja2luZyBhcmd1bWVudCBzZXF1ZW5jZVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3swfXsxfXswfVwnLmZvcm1hdChcJ2FicmFcJywgXCdjYWRcJykgICAjIGFyZ3VtZW50c1wnIGluZGljZXMgY2FuIGJlIHJlcGVhdGVkXG4gICBcJ2FicmFjYWRhYnJhXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBuYW1lOlxuXG4gICA+Pj4gXCdDb29yZGluYXRlczoge2xhdGl0dWRlfSwge2xvbmdpdHVkZX1cJy5mb3JtYXQobGF0aXR1ZGU9XCczNy4yNE5cJywgbG9uZ2l0dWRlPVwnLTExNS44MVdcJylcbiAgIFwnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVdcJ1xuICAgPj4+IGNvb3JkID0ge1wnbGF0aXR1ZGVcJzogXCczNy4yNE5cJywgXCdsb25naXR1ZGVcJzogXCctMTE1LjgxV1wnfVxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KCoqY29vcmQpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGF0dHJpYnV0ZXM6XG5cbiAgID4+PiBjID0gMy01alxuICAgPj4+IChcJ1RoZSBjb21wbGV4IG51bWJlciB7MH0gaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCB7MC5yZWFsfSBcJ1xuICAgLi4uICBcJ2FuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgezAuaW1hZ30uXCcpLmZvcm1hdChjKVxuICAgXCdUaGUgY29tcGxleCBudW1iZXIgKDMtNWopIGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgMy4wIGFuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgLTUuMC5cJ1xuICAgPj4+IGNsYXNzIFBvaW50OlxuICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgeCwgeSk6XG4gICAuLi4gICAgICAgICBzZWxmLngsIHNlbGYueSA9IHgsIHlcbiAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCdQb2ludCh7c2VsZi54fSwge3NlbGYueX0pXCcuZm9ybWF0KHNlbGY9c2VsZilcbiAgIC4uLlxuICAgPj4+IHN0cihQb2ludCg0LCAyKSlcbiAgIFwnUG9pbnQoNCwgMilcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgaXRlbXM6XG5cbiAgID4+PiBjb29yZCA9ICgzLCA1KVxuICAgPj4+IFwnWDogezBbMF19OyAgWTogezBbMV19XCcuZm9ybWF0KGNvb3JkKVxuICAgXCdYOiAzOyAgWTogNVwnXG5cblJlcGxhY2luZyBgYCVzYGAgYW5kIGBgJXJgYDpcblxuICAgPj4+ICJyZXByKCkgc2hvd3MgcXVvdGVzOiB7IXJ9OyBzdHIoKSBkb2VzblwndDogeyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6IHRlc3QyIlxuXG5BbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuXG4gICA+Pj4gXCd7OjwzMH1cJy5mb3JtYXQoXCdsZWZ0IGFsaWduZWRcJylcbiAgIFwnbGVmdCBhbGlnbmVkICAgICAgICAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6PjMwfVwnLmZvcm1hdChcJ3JpZ2h0IGFsaWduZWRcJylcbiAgIFwnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkXCdcbiAgID4+PiBcJ3s6XjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpXG4gICBcJyAgICAgICAgICAgY2VudGVyZWQgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7OipeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJykgICMgdXNlIFwnKlwnIGFzIGEgZmlsbCBjaGFyXG4gICBcJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKlwnXG5cblJlcGxhY2luZyBgYCUrZmBgLCBgYCUtZmBgLCBhbmQgYGAlIGZgYCBhbmQgc3BlY2lmeWluZyBhIHNpZ246XG5cbiAgID4+PiBcJ3s6K2Z9OyB7OitmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBpdCBhbHdheXNcbiAgIFwnKzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezogZn07IHs6IGZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgZm9yIHBvc2l0aXZlIG51bWJlcnNcbiAgIFwnIDMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezotZn07IHs6LWZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IG9ubHkgdGhlIG1pbnVzIC0tIHNhbWUgYXMgXCd7OmZ9OyB7OmZ9XCdcbiAgIFwnMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG5cblJlcGxhY2luZyBgYCV4YGAgYW5kIGBgJW9gYCBhbmQgY29udmVydGluZyB0aGUgdmFsdWUgdG8gZGlmZmVyZW50XG5iYXNlczpcblxuICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6eH07ICBvY3Q6IHswOm99OyAgYmluOiB7MDpifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAyYTsgIG9jdDogNTI7ICBiaW46IDEwMTAxMFwnXG4gICA+Pj4gIyB3aXRoIDB4LCAwbywgb3IgMGIgYXMgcHJlZml4OlxuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogezA6I2J9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDB4MmE7ICBvY3Q6IDBvNTI7ICBiaW46IDBiMTAxMDEwXCdcblxuVXNpbmcgdGhlIGNvbW1hIGFzIGEgdGhvdXNhbmRzIHNlcGFyYXRvcjpcblxuICAgPj4+IFwnezosfVwnLmZvcm1hdCgxMjM0NTY3ODkwKVxuICAgXCcxLDIzNCw1NjcsODkwXCdcblxuRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG5cbiAgID4+PiBwb2ludHMgPSAxOVxuICAgPj4+IHRvdGFsID0gMjJcbiAgID4+PiBcJ0NvcnJlY3QgYW5zd2VyczogezouMiV9XCcuZm9ybWF0KHBvaW50cy90b3RhbClcbiAgIFwnQ29ycmVjdCBhbnN3ZXJzOiA4Ni4zNiVcJ1xuXG5Vc2luZyB0eXBlLXNwZWNpZmljIGZvcm1hdHRpbmc6XG5cbiAgID4+PiBpbXBvcnQgZGF0ZXRpbWVcbiAgID4+PiBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgNywgNCwgMTIsIDE1LCA1OClcbiAgID4+PiBcJ3s6JVktJW0tJWQgJUg6JU06JVN9XCcuZm9ybWF0KGQpXG4gICBcJzIwMTAtMDctMDQgMTI6MTU6NThcJ1xuXG5OZXN0aW5nIGFyZ3VtZW50cyBhbmQgbW9yZSBjb21wbGV4IGV4YW1wbGVzOlxuXG4gICA+Pj4gZm9yIGFsaWduLCB0ZXh0IGluIHppcChcJzxePlwnLCBbXCdsZWZ0XCcsIFwnY2VudGVyXCcsIFwncmlnaHRcJ10pOlxuICAgLi4uICAgICBcJ3swOntmaWxsfXthbGlnbn0xNn1cJy5mb3JtYXQodGV4dCwgZmlsbD1hbGlnbiwgYWxpZ249YWxpZ24pXG4gICAuLi5cbiAgIFwnbGVmdDw8PDw8PDw8PDw8PFwnXG4gICBcJ15eXl5eY2VudGVyXl5eXl5cJ1xuICAgXCc+Pj4+Pj4+Pj4+PnJpZ2h0XCdcbiAgID4+PlxuICAgPj4+IG9jdGV0cyA9IFsxOTIsIDE2OCwgMCwgMV1cbiAgID4+PiBcJ3s6MDJYfXs6MDJYfXs6MDJYfXs6MDJYfVwnLmZvcm1hdCgqb2N0ZXRzKVxuICAgXCdDMEE4MDAwMVwnXG4gICA+Pj4gaW50KF8sIDE2KVxuICAgMzIzMjIzNTUyMVxuICAgPj4+XG4gICA+Pj4gd2lkdGggPSA1XG4gICA+Pj4gZm9yIG51bSBpbiByYW5nZSg1LDEyKTpcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKKyAnZnVuY3Rpb24nOiAnXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgICggICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqXG4gICAgICAgICAgICAgICAgICAgICAgWywgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlIHBhcmFtZXRlcnMgaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiBgYD1gYFxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICJgYCpgYCIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLVxudGhpcyBpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvblxuaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbmNlLCB3aGVuXG50aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgaXNcbnVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB3aGVuIGFcbmRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgZGljdGlvbmFyeTpcbmlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtIHRvIGFcbmxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdFxud2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2UgYGBOb25lYGAgYXMgdGhlXG5kZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmdcbmFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmXG50aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiYGA6IGV4cHJlc3Npb25gYCJcbmZvbGxvd2luZyB0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb25cbmV2ZW4gdGhvc2Ugb2YgdGhlIGZvcm0gYGAqaWRlbnRpZmllcmBgIG9yIGBgKippZGVudGlmaWVyYGAuICBGdW5jdGlvbnNcbm1heSBoYXZlICJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gImBgLT4gZXhwcmVzc2lvbmBgIiBhZnRlciB0aGVcbnBhcmFtZXRlciBsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvblxuYW5kIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC5cbkFubm90YXRpb25zIG1heSBiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpblxudGhlIHNvdXJjZSBjb2RlLiAgVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGVcbnNlbWFudGljcyBvZiBhIGZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXNcbnZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGVcbmBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYSBmb3JtcyxcbmRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhIGZvcm0gaXMgbWVyZWx5IGFcbnNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247IGEgZnVuY3Rpb24gZGVmaW5lZCBpblxuYSAiYGBkZWZgYCIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yIGFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZVxuanVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYSBmb3JtLiAgVGhlICJgYGRlZmBgIiBmb3JtIGlzXG5hY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0IGFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlXG5zdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiYGBkZWZgYCJcbmZvcm0gZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWwgZnVuY3Rpb25cbnRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkIGluIHRoZVxubmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcbiAgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCiAgJ2dsb2JhbCc6ICdcblRoZSBgYGdsb2JhbGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGdsb2JhbF9zdG10IDo6PSAiZ2xvYmFsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSBgYGdsb2JhbGBgIHN0YXRlbWVudCBpcyBhIGRlY2xhcmF0aW9uIHdoaWNoIGhvbGRzIGZvciB0aGUgZW50aXJlXG5jdXJyZW50IGNvZGUgYmxvY2suICBJdCBtZWFucyB0aGF0IHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgYXJlIHRvIGJlXG5pbnRlcnByZXRlZCBhcyBnbG9iYWxzLiAgSXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBhc3NpZ24gdG8gYSBnbG9iYWxcbnZhcmlhYmxlIHdpdGhvdXQgYGBnbG9iYWxgYCwgYWx0aG91Z2ggZnJlZSB2YXJpYWJsZXMgbWF5IHJlZmVyIHRvXG5nbG9iYWxzIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgZ2xvYmFsLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSBgYGdsb2JhbGBgIHN0YXRlbWVudCBtdXN0IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lXG5jb2RlIGJsb2NrIHRleHR1YWxseSBwcmVjZWRpbmcgdGhhdCBgYGdsb2JhbGBgIHN0YXRlbWVudC5cblxuTmFtZXMgbGlzdGVkIGluIGEgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyBmb3JtYWxcbnBhcmFtZXRlcnMgb3IgaW4gYSBgYGZvcmBgIGxvb3AgY29udHJvbCB0YXJnZXQsIGBgY2xhc3NgYCBkZWZpbml0aW9uLFxuZnVuY3Rpb24gZGVmaW5pdGlvbiwgb3IgYGBpbXBvcnRgYCBzdGF0ZW1lbnQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3RcbmVuZm9yY2UgdGhlIGxhdHRlciB0d28gcmVzdHJpY3Rpb25zLCBidXQgcHJvZ3JhbXMgc2hvdWxkIG5vdCBhYnVzZVxudGhpcyBmcmVlZG9tLCBhcyBmdXR1cmUgaW1wbGVtZW50YXRpb25zIG1heSBlbmZvcmNlIHRoZW0gb3Igc2lsZW50bHlcbmNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogdGhlIGBgZ2xvYmFsYGAgaXMgYSBkaXJlY3RpdmUgdG8gdGhlIHBhcnNlci5cbkl0IGFwcGxpZXMgb25seSB0byBjb2RlIHBhcnNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBgYGdsb2JhbGBgXG5zdGF0ZW1lbnQuIEluIHBhcnRpY3VsYXIsIGEgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGEgc3RyaW5nXG5vciBjb2RlIG9iamVjdCBzdXBwbGllZCB0byB0aGUgYnVpbHQtaW4gYGBleGVjKClgYCBmdW5jdGlvbiBkb2VzIG5vdFxuYWZmZWN0IHRoZSBjb2RlIGJsb2NrICpjb250YWluaW5nKiB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGNvZGVcbmNvbnRhaW5lZCBpbiBzdWNoIGEgc3RyaW5nIGlzIHVuYWZmZWN0ZWQgYnkgYGBnbG9iYWxgYCBzdGF0ZW1lbnRzIGluXG50aGUgY29kZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBjYWxsLiAgVGhlIHNhbWUgYXBwbGllcyB0byB0aGVcbmBgZXZhbCgpYGAgYW5kIGBgY29tcGlsZSgpYGAgZnVuY3Rpb25zLlxuJywKICAnaWQtY2xhc3Nlcyc6ICdcblJlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlIHNwZWNpYWxcbm1lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgbGVhZGluZyBhbmRcbnRyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcblxuYGBfKmBgXG4gICBOb3QgaW1wb3J0ZWQgYnkgYGBmcm9tIG1vZHVsZSBpbXBvcnQgKmBgLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllclxuICAgYGBfYGAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZlxuICAgdGhlIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSBgYGJ1aWx0aW5zYGAgbW9kdWxlLiAgV2hlblxuICAgbm90IGluIGludGVyYWN0aXZlIG1vZGUsIGBgX2BgIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdFxuICAgZGVmaW5lZC4gU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgYGBfYGAgaXMgb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoXG4gICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4gICAgIGBgZ2V0dGV4dGBgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbmBgX18qX19gYFxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgYGBfXypfX2BgIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCBkb2VzXG4gICBub3QgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2VcbiAgIHdpdGhvdXQgd2FybmluZy5cblxuYGBfXypgYFxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCiAgJ2lkZW50aWZpZXJzJzogJ1xuSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSB0aGVcbmZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zLlxuXG5UaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSBzdGFuZGFyZFxuYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgYmVsb3c7IHNlZSBhbHNvXG4qKlBFUCAzMTMxKiogZm9yIGZ1cnRoZXIgZGV0YWlscy5cblxuV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyBmb3JcbmlkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2VcbmxldHRlcnMgYGBBYGAgdGhyb3VnaCBgYFpgYCwgdGhlIHVuZGVyc2NvcmUgYGBfYGAgYW5kLCBleGNlcHQgZm9yIHRoZVxuZmlyc3QgY2hhcmFjdGVyLCB0aGUgZGlnaXRzIGBgMGBgIHRocm91Z2ggYGA5YGAuXG5cblB5dGhvbiAzLjAgaW50cm9kdWNlcyBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgZnJvbSBvdXRzaWRlIHRoZSBBU0NJSVxucmFuZ2UgKHNlZSAqKlBFUCAzMTMxKiopLiAgRm9yIHRoZXNlIGNoYXJhY3RlcnMsIHRoZSBjbGFzc2lmaWNhdGlvblxudXNlcyB0aGUgdmVyc2lvbiBvZiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgYXMgaW5jbHVkZWQgaW4gdGhlXG5gYHVuaWNvZGVkYXRhYGAgbW9kdWxlLlxuXG5JZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG5cbiAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbiAgIGlkX3N0YXJ0ICAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGdlbmVyYWwgY2F0ZWdvcmllcyBMdSwgTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCB0aGUgT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4gICBpZF9jb250aW51ZSAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCwgcGx1cyBjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCB0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4gICB4aWRfc3RhcnQgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9jb250aW51ZSoiPlxuXG5UaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuXG4qICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuXG4qICpMbCogLSBsb3dlcmNhc2UgbGV0dGVyc1xuXG4qICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuXG4qICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG5cbiogKkxvKiAtIG90aGVyIGxldHRlcnNcblxuKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcblxuKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuXG4qICpNYyogLSBzcGFjaW5nIGNvbWJpbmluZyBtYXJrc1xuXG4qICpOZCogLSBkZWNpbWFsIG51bWJlcnNcblxuKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuXG4qICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gUHJvcExpc3QudHh0IHRvXG4gIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcblxuQWxsIGlkZW50aWZpZXJzIGFyZSBjb252ZXJ0ZWQgaW50byB0aGUgbm9ybWFsIGZvcm0gTkZLQyB3aGlsZSBwYXJzaW5nO1xuY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuXG5BIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgY2hhcmFjdGVycyBmb3JcblVuaWNvZGUgNC4xIGNhbiBiZSBmb3VuZCBhdCBodHRwOi8vd3d3LmRjbC5ocGkudW5pLVxucG90c2RhbS5kZS9ob21lL2xvZXdpcy90YWJsZS0zMTMxLmh0bWwuXG5cblxuS2V5d29yZHNcbj09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgYXJlIHVzZWQgYXMgcmVzZXJ2ZWQgd29yZHMsIG9yICprZXl3b3Jkcyogb2ZcbnRoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgVGhleSBtdXN0XG5iZSBzcGVsbGVkIGV4YWN0bHkgYXMgd3JpdHRlbiBoZXJlOlxuXG4gICBGYWxzZSAgICAgIGNsYXNzICAgICAgZmluYWxseSAgICBpcyAgICAgICAgIHJldHVyblxuICAgTm9uZSAgICAgICBjb250aW51ZSAgIGZvciAgICAgICAgbGFtYmRhICAgICB0cnlcbiAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbiAgIGFuZCAgICAgICAgZGVsICAgICAgICBnbG9iYWwgICAgIG5vdCAgICAgICAgd2l0aFxuICAgYXMgICAgICAgICBlbGlmICAgICAgIGlmICAgICAgICAgb3IgICAgICAgICB5aWVsZFxuICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuICAgYnJlYWsgICAgICBleGNlcHQgICAgIGluICAgICAgICAgcmFpc2VcblxuXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbmBgXypgYFxuICAgTm90IGltcG9ydGVkIGJ5IGBgZnJvbSBtb2R1bGUgaW1wb3J0ICpgYC4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXJcbiAgIGBgX2BgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2ZcbiAgIHRoZSBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgYGBidWlsdGluc2BgIG1vZHVsZS4gIFdoZW5cbiAgIG5vdCBpbiBpbnRlcmFjdGl2ZSBtb2RlLCBgYF9gYCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3RcbiAgIGRlZmluZWQuIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lIGBgX2BgIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICBgYGdldHRleHRgYCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjb252ZW50aW9uLlxuXG5gYF9fKl9fYGBcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mIGBgX18qX19gYCBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lc1xuICAgbm90IGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlXG4gICB3aXRob3V0IHdhcm5pbmcuXG5cbmBgX18qYGBcbiAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgd2l0aGluIHRoZVxuICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhIG1hbmdsZWQgZm9ybVxuICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiBiYXNlIGFuZFxuICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiAqSWRlbnRpZmllcnMgKE5hbWVzKSouXG4nLAogICdpZic6ICdcblRoZSBgYGlmYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAogICdpbWFnaW5hcnknOiAnXG5JbWFnaW5hcnkgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKlxuXG5JbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGltYWdudW1iZXIgOjo9IChmbG9hdG51bWJlciB8IGludHBhcnQpICgiaiIgfCAiSiIpXG5cbkFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLlxuQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVyc1xuYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgY29tcGxleFxubnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LFxuZS5nLiwgYGAoMys0ailgYC4gIFNvbWUgZXhhbXBsZXMgb2YgaW1hZ2luYXJ5IGxpdGVyYWxzOlxuXG4gICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgMy4xNGUtMTBqXG4nLAotICdpbXBvcnQnOiAnXG5UaGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBpbXBvcnRfc3RtdCAgICAgOjo9ICJpbXBvcnQiIG1vZHVsZSBbImFzIiBuYW1lXSAoICIsIiBtb2R1bGUgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgIigiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqIFsiLCJdICIpIlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIG1vZHVsZSAiaW1wb3J0IiAiKiJcbiAgIG1vZHVsZSAgICAgICAgICA6Oj0gKGlkZW50aWZpZXIgIi4iKSogaWRlbnRpZmllclxuICAgcmVsYXRpdmVfbW9kdWxlIDo6PSAiLiIqIG1vZHVsZSB8ICIuIitcbiAgIG5hbWUgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5JbXBvcnQgc3RhdGVtZW50cyBhcmUgZXhlY3V0ZWQgaW4gdHdvIHN0ZXBzOiAoMSkgZmluZCBhIG1vZHVsZSwgYW5kXG5pbml0aWFsaXplIGl0IGlmIG5lY2Vzc2FyeTsgKDIpIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsXG5uYW1lc3BhY2UgKG9mIHRoZSBzY29wZSB3aGVyZSB0aGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnQgb2NjdXJzKS4gVGhlXG5zdGF0ZW1lbnQgY29tZXMgaW4gdHdvIGZvcm1zIGRpZmZlcmluZyBvbiB3aGV0aGVyIGl0IHVzZXMgdGhlIGBgZnJvbWBgXG5rZXl3b3JkLiBUaGUgZmlyc3QgZm9ybSAod2l0aG91dCBgYGZyb21gYCkgcmVwZWF0cyB0aGVzZSBzdGVwcyBmb3JcbmVhY2ggaWRlbnRpZmllciBpbiB0aGUgbGlzdC4gVGhlIGZvcm0gd2l0aCBgYGZyb21gYCBwZXJmb3JtcyBzdGVwICgxKVxub25jZSwgYW5kIHRoZW4gcGVyZm9ybXMgc3RlcCAoMikgcmVwZWF0ZWRseS4gRm9yIGEgcmVmZXJlbmNlXG5pbXBsZW1lbnRhdGlvbiBvZiBzdGVwICgxKSwgc2VlIHRoZSBgYGltcG9ydGxpYmBgIG1vZHVsZS5cblxuVG8gdW5kZXJzdGFuZCBob3cgc3RlcCAoMSkgb2NjdXJzLCBvbmUgbXVzdCBmaXJzdCB1bmRlcnN0YW5kIGhvd1xuUHl0aG9uIGhhbmRsZXMgaGllcmFyY2hpY2FsIG5hbWluZyBvZiBtb2R1bGVzLiBUbyBoZWxwIG9yZ2FuaXplXG5tb2R1bGVzIGFuZCBwcm92aWRlIGEgaGllcmFyY2h5IGluIG5hbWluZywgUHl0aG9uIGhhcyBhIGNvbmNlcHQgb2ZcbnBhY2thZ2VzLiBBIHBhY2thZ2UgY2FuIGNvbnRhaW4gb3RoZXIgcGFja2FnZXMgYW5kIG1vZHVsZXMgd2hpbGVcbm1vZHVsZXMgY2Fubm90IGNvbnRhaW4gb3RoZXIgbW9kdWxlcyBvciBwYWNrYWdlcy4gRnJvbSBhIGZpbGUgc3lzdGVtXG5wZXJzcGVjdGl2ZSwgcGFja2FnZXMgYXJlIGRpcmVjdG9yaWVzIGFuZCBtb2R1bGVzIGFyZSBmaWxlcy4gVGhlXG5vcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBwYWNrYWdlcyBpcyBzdGlsbCBhdmFpbGFibGUgdG8gcmVhZCxcbmFsdGhvdWdoIG1pbm9yIGRldGFpbHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB3cml0aW5nIG9mIHRoYXRcbmRvY3VtZW50LlxuXG5PbmNlIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgaXMga25vd24gKHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCB0aGVcbnRlcm0gIm1vZHVsZSIgd2lsbCByZWZlciB0byBib3RoIHBhY2thZ2VzIGFuZCBtb2R1bGVzKSwgc2VhcmNoaW5nIGZvclxudGhlIG1vZHVsZSBvciBwYWNrYWdlIGNhbiBiZWdpbi4gVGhlIGZpcnN0IHBsYWNlIGNoZWNrZWQgaXNcbmBgc3lzLm1vZHVsZXNgYCwgdGhlIGNhY2hlIG9mIGFsbCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIGltcG9ydGVkXG5wcmV2aW91c2x5LiBJZiB0aGUgbW9kdWxlIGlzIGZvdW5kIHRoZXJlIHRoZW4gaXQgaXMgdXNlZCBpbiBzdGVwICgyKVxub2YgaW1wb3J0IHVubGVzcyBgYE5vbmVgYCBpcyBmb3VuZCBpbiBgYHN5cy5tb2R1bGVzYGAsIGluIHdoaWNoIGNhc2VcbmBgSW1wb3J0RXJyb3JgYCBpcyByYWlzZWQuXG5cbklmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kIGluIHRoZSBjYWNoZSwgdGhlbiBgYHN5cy5tZXRhX3BhdGhgYCBpc1xuc2VhcmNoZWQgKHRoZSBzcGVjaWZpY2F0aW9uIGZvciBgYHN5cy5tZXRhX3BhdGhgYCBjYW4gYmUgZm91bmQgaW5cbioqUEVQIDMwMioqKS4gVGhlIG9iamVjdCBpcyBhIGxpc3Qgb2YgKmZpbmRlciogb2JqZWN0cyB3aGljaCBhcmVcbnF1ZXJpZWQgaW4gb3JkZXIgYXMgdG8gd2hldGhlciB0aGV5IGtub3cgaG93IHRvIGxvYWQgdGhlIG1vZHVsZSBieVxuY2FsbGluZyB0aGVpciBgYGZpbmRfbW9kdWxlKClgYCBtZXRob2Qgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBJZlxudGhlIG1vZHVsZSBoYXBwZW5zIHRvIGJlIGNvbnRhaW5lZCB3aXRoaW4gYSBwYWNrYWdlIChhcyBkZW5vdGVkIGJ5IHRoZVxuZXhpc3RlbmNlIG9mIGEgZG90IGluIHRoZSBuYW1lKSwgdGhlbiBhIHNlY29uZCBhcmd1bWVudCB0b1xuYGBmaW5kX21vZHVsZSgpYGAgaXMgZ2l2ZW4gYXMgdGhlIHZhbHVlIG9mIHRoZSBgYF9fcGF0aF9fYGAgYXR0cmlidXRlXG5mcm9tIHRoZSBwYXJlbnQgcGFja2FnZSAoZXZlcnl0aGluZyB1cCB0byB0aGUgbGFzdCBkb3QgaW4gdGhlIG5hbWUgb2ZcbnRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQpLiBJZiBhIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIGl0IHJldHVybnNcbmEgKmxvYWRlciogKGRpc2N1c3NlZCBsYXRlcikgb3IgcmV0dXJucyBgYE5vbmVgYC5cblxuSWYgbm9uZSBvZiB0aGUgZmluZGVycyBvbiBgYHN5cy5tZXRhX3BhdGhgYCBhcmUgYWJsZSB0byBmaW5kIHRoZVxubW9kdWxlIHRoZW4gc29tZSBpbXBsaWNpdGx5IGRlZmluZWQgZmluZGVycyBhcmUgcXVlcmllZC5cbkltcGxlbWVudGF0aW9ucyBvZiBQeXRob24gdmFyeSBpbiB3aGF0IGltcGxpY2l0IG1ldGEgcGF0aCBmaW5kZXJzIGFyZVxuZGVmaW5lZC4gVGhlIG9uZSB0aGV5IGFsbCBkbyBkZWZpbmUsIHRob3VnaCwgaXMgb25lIHRoYXQgaGFuZGxlc1xuYGBzeXMucGF0aF9ob29rc2BgLCBgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAsIGFuZCBgYHN5cy5wYXRoYGAuXG5cblRoZSBpbXBsaWNpdCBmaW5kZXIgc2VhcmNoZXMgZm9yIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGluIHRoZSAicGF0aHMiXG5zcGVjaWZpZWQgaW4gb25lIG9mIHR3byBwbGFjZXMgKCJwYXRocyIgZG8gbm90IGhhdmUgdG8gYmUgZmlsZSBzeXN0ZW1cbnBhdGhzKS4gSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBzdXBwb3NlZCB0byBiZSBjb250YWluZWRcbndpdGhpbiBhIHBhY2thZ2UgdGhlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IHBhc3NlZCB0byBgYGZpbmRfbW9kdWxlKClgYCxcbmBgX19wYXRoX19gYCBvbiB0aGUgcGFyZW50IHBhY2thZ2UsIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZiBwYXRocy4gSWZcbnRoZSBtb2R1bGUgaXMgbm90IGNvbnRhaW5lZCBpbiBhIHBhY2thZ2UgdGhlbiBgYHN5cy5wYXRoYGAgaXMgdXNlZCBhc1xudGhlIHNvdXJjZSBvZiBwYXRocy5cblxuT25jZSB0aGUgc291cmNlIG9mIHBhdGhzIGlzIGNob3NlbiBpdCBpcyBpdGVyYXRlZCBvdmVyIHRvIGZpbmQgYVxuZmluZGVyIHRoYXQgY2FuIGhhbmRsZSB0aGF0IHBhdGguIFRoZSBkaWN0IGF0XG5gYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAgY2FjaGVzIGZpbmRlcnMgZm9yIHBhdGhzIGFuZCBpcyBjaGVja2VkXG5mb3IgYSBmaW5kZXIuIElmIHRoZSBwYXRoIGRvZXMgbm90IGhhdmUgYSBmaW5kZXIgY2FjaGVkIHRoZW5cbmBgc3lzLnBhdGhfaG9va3NgYCBpcyBzZWFyY2hlZCBieSBjYWxsaW5nIGVhY2ggb2JqZWN0IGluIHRoZSBsaXN0IHdpdGhcbmEgc2luZ2xlIGFyZ3VtZW50IG9mIHRoZSBwYXRoLCByZXR1cm5pbmcgYSBmaW5kZXIgb3IgcmFpc2VzXG5gYEltcG9ydEVycm9yYGAuIElmIGEgZmluZGVyIGlzIHJldHVybmVkIHRoZW4gaXQgaXMgY2FjaGVkIGluXG5gYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAgYW5kIHRoZW4gdXNlZCBmb3IgdGhhdCBwYXRoIGVudHJ5LiBJZiBub1xuZmluZGVyIGNhbiBiZSBmb3VuZCBidXQgdGhlIHBhdGggZXhpc3RzIHRoZW4gYSB2YWx1ZSBvZiBgYE5vbmVgYCBpc1xuc3RvcmVkIGluIGBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgYCB0byBzaWduaWZ5IHRoYXQgYW4gaW1wbGljaXQsXG5maWxlLWJhc2VkIGZpbmRlciB0aGF0IGhhbmRsZXMgbW9kdWxlcyBzdG9yZWQgYXMgaW5kaXZpZHVhbCBmaWxlc1xuc2hvdWxkIGJlIHVzZWQgZm9yIHRoYXQgcGF0aC4gSWYgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgdGhlbiBhIGZpbmRlclxud2hpY2ggYWx3YXlzIHJldHVybnMgYGBOb25lYGAgaXMgcGxhY2VkIGluIHRoZSBjYWNoZSBmb3IgdGhlIHBhdGguXG5cbklmIG5vIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIHRoZW4gYGBJbXBvcnRFcnJvcmBgIGlzIHJhaXNlZC5cbk90aGVyd2lzZSBzb21lIGZpbmRlciByZXR1cm5lZCBhIGxvYWRlciB3aG9zZSBgYGxvYWRfbW9kdWxlKClgYCBtZXRob2RcbmlzIGNhbGxlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCAoc2VlICoqUEVQIDMwMioqIGZvciB0aGVcbm9yaWdpbmFsIGRlZmluaXRpb24gb2YgbG9hZGVycykuIEEgbG9hZGVyIGhhcyBzZXZlcmFsIHJlc3BvbnNpYmlsaXRpZXNcbnRvIHBlcmZvcm0gb24gYSBtb2R1bGUgaXQgbG9hZHMuIEZpcnN0LCBpZiB0aGUgbW9kdWxlIGFscmVhZHkgZXhpc3RzXG5pbiBgYHN5cy5tb2R1bGVzYGAgKGEgcG9zc2liaWxpdHkgaWYgdGhlIGxvYWRlciBpcyBjYWxsZWQgb3V0c2lkZSBvZlxudGhlIGltcG9ydCBtYWNoaW5lcnkpIHRoZW4gaXQgaXMgdG8gdXNlIHRoYXQgbW9kdWxlIGZvciBpbml0aWFsaXphdGlvblxuYW5kIG5vdCBhIG5ldyBtb2R1bGUuIEJ1dCBpZiB0aGUgbW9kdWxlIGRvZXMgbm90IGV4aXN0IGluXG5gYHN5cy5tb2R1bGVzYGAgdGhlbiBpdCBpcyB0byBiZSBhZGRlZCB0byB0aGF0IGRpY3QgYmVmb3JlXG5pbml0aWFsaXphdGlvbiBiZWdpbnMuIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbG9hZGluZyBvZiB0aGUgbW9kdWxlXG5hbmQgaXQgd2FzIGFkZGVkIHRvIGBgc3lzLm1vZHVsZXNgYCBpdCBpcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRpY3QuXG5JZiBhbiBlcnJvciBvY2N1cnMgYnV0IHRoZSBtb2R1bGUgd2FzIGFscmVhZHkgaW4gYGBzeXMubW9kdWxlc2BgIGl0IGlzXG5sZWZ0IGluIHRoZSBkaWN0LlxuXG5UaGUgbG9hZGVyIG11c3Qgc2V0IHNldmVyYWwgYXR0cmlidXRlcyBvbiB0aGUgbW9kdWxlLiBgYF9fbmFtZV9fYGAgaXNcbnRvIGJlIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBgYF9fZmlsZV9fYGAgaXMgdG8gYmUgdGhlICJwYXRoIlxudG8gdGhlIGZpbGUgdW5sZXNzIHRoZSBtb2R1bGUgaXMgYnVpbHQtaW4gKGFuZCB0aHVzIGxpc3RlZCBpblxuYGBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXNgYCkgaW4gd2hpY2ggY2FzZSB0aGUgYXR0cmlidXRlIGlzIG5vdCBzZXQuXG5JZiB3aGF0IGlzIGJlaW5nIGltcG9ydGVkIGlzIGEgcGFja2FnZSB0aGVuIGBgX19wYXRoX19gYCBpcyB0byBiZSBzZXRcbnRvIGEgbGlzdCBvZiBwYXRocyB0byBiZSBzZWFyY2hlZCB3aGVuIGxvb2tpbmcgZm9yIG1vZHVsZXMgYW5kXG5wYWNrYWdlcyBjb250YWluZWQgd2l0aGluIHRoZSBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLiBgYF9fcGFja2FnZV9fYGBcbmlzIG9wdGlvbmFsIGJ1dCBzaG91bGQgYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGVcbm1vZHVsZSBvciBwYWNrYWdlICh0aGUgZW1wdHkgc3RyaW5nIGlzIHVzZWQgZm9yIG1vZHVsZSBub3QgY29udGFpbmVkXG5pbiBhIHBhY2thZ2UpLiBgYF9fbG9hZGVyX19gYCBpcyBhbHNvIG9wdGlvbmFsIGJ1dCBzaG91bGQgYmUgc2V0IHRvXG50aGUgbG9hZGVyIG9iamVjdCB0aGF0IGlzIGxvYWRpbmcgdGhlIG1vZHVsZS5cblxuSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIHRoZW4gdGhlIGxvYWRlciByYWlzZXNcbmBgSW1wb3J0RXJyb3JgYCBpZiBzb21lIG90aGVyIGV4Y2VwdGlvbiBpcyBub3QgYWxyZWFkeSBiZWluZ1xucHJvcGFnYXRlZC4gT3RoZXJ3aXNlIHRoZSBsb2FkZXIgcmV0dXJucyB0aGUgbW9kdWxlIHRoYXQgd2FzIGxvYWRlZFxuYW5kIGluaXRpYWxpemVkLlxuXG5XaGVuIHN0ZXAgKDEpIGZpbmlzaGVzIHdpdGhvdXQgcmFpc2luZyBhbiBleGNlcHRpb24sIHN0ZXAgKDIpIGNhblxuYmVnaW4uXG5cblRoZSBmaXJzdCBmb3JtIG9mIGBgaW1wb3J0YGAgc3RhdGVtZW50IGJpbmRzIHRoZSBtb2R1bGUgbmFtZSBpbiB0aGVcbmxvY2FsIG5hbWVzcGFjZSB0byB0aGUgbW9kdWxlIG9iamVjdCwgYW5kIHRoZW4gZ29lcyBvbiB0byBpbXBvcnQgdGhlXG5uZXh0IGlkZW50aWZpZXIsIGlmIGFueS4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSBgYGFzYGAsXG50aGUgbmFtZSBmb2xsb3dpbmcgYGBhc2BgIGlzIHVzZWQgYXMgdGhlIGxvY2FsIG5hbWUgZm9yIHRoZSBtb2R1bGUuXG5cblRoZSBgYGZyb21gYCBmb3JtIGRvZXMgbm90IGJpbmQgdGhlIG1vZHVsZSBuYW1lOiBpdCBnb2VzIHRocm91Z2ggdGhlXG5saXN0IG9mIGlkZW50aWZpZXJzLCBsb29rcyBlYWNoIG9uZSBvZiB0aGVtIHVwIGluIHRoZSBtb2R1bGUgZm91bmQgaW5cbnN0ZXAgKDEpLCBhbmQgYmluZHMgdGhlIG5hbWUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSB0byB0aGUgb2JqZWN0IHRodXNcbmZvdW5kLiAgQXMgd2l0aCB0aGUgZmlyc3QgZm9ybSBvZiBgYGltcG9ydGBgLCBhbiBhbHRlcm5hdGUgbG9jYWwgbmFtZVxuY2FuIGJlIHN1cHBsaWVkIGJ5IHNwZWNpZnlpbmcgImBgYXNgYCBsb2NhbG5hbWUiLiAgSWYgYSBuYW1lIGlzIG5vdFxuZm91bmQsIGBgSW1wb3J0RXJyb3JgYCBpcyByYWlzZWQuICBJZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpc1xucmVwbGFjZWQgYnkgYSBzdGFyIChgYFwnKlwnYGApLCBhbGwgcHVibGljIG5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZVxuYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2Ugb2YgdGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50LlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gYGBfX2FsbF9fYGBcbnNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWRcbmFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhc1xubGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgYGBmcm9tYGAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLiAgVGhlXG53aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tIGBgaW1wb3J0ICpgYCAtLS0gaXMgb25seSBhbGxvd2VkIGF0IHRoZVxubW9kdWxlIGxldmVsLiBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uc1xud2lsbCByYWlzZSBhIGBgU3ludGF4RXJyb3JgYC5cblxuV2hlbiBzcGVjaWZ5aW5nIHdoYXQgbW9kdWxlIHRvIGltcG9ydCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSB0aGVcbmFic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZS4gV2hlbiBhIG1vZHVsZSBvciBwYWNrYWdlIGlzIGNvbnRhaW5lZFxud2l0aGluIGFub3RoZXIgcGFja2FnZSBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgcmVsYXRpdmUgaW1wb3J0IHdpdGhpblxudGhlIHNhbWUgdG9wIHBhY2thZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbWVudGlvbiB0aGUgcGFja2FnZSBuYW1lLiBCeVxudXNpbmcgbGVhZGluZyBkb3RzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIG9yIHBhY2thZ2UgYWZ0ZXIgYGBmcm9tYGBcbnlvdSBjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxud2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbnBhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zIHVwXG5vbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSBleGVjdXRlXG5gYGZyb20gLiBpbXBvcnQgbW9kYGAgZnJvbSBhIG1vZHVsZSBpbiB0aGUgYGBwa2dgYCBwYWNrYWdlIHRoZW4geW91XG53aWxsIGVuZCB1cCBpbXBvcnRpbmcgYGBwa2cubW9kYGAuIElmIHlvdSBleGVjdXRlIGBgZnJvbSAuLnN1YnBrZzJcbmltcG9ydCBtb2RgYCBmcm9tIHdpdGhpbiBgYHBrZy5zdWJwa2cxYGAgeW91IHdpbGwgaW1wb3J0XG5gYHBrZy5zdWJwa2cyLm1vZGBgLiBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpc1xuY29udGFpbmVkIHdpdGhpbiAqKlBFUCAzMjgqKi5cblxuYGBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpYGAgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgdGhhdFxuZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZXMgbmVlZCB0byBiZSBsb2FkZWQgZHluYW1pY2FsbHkuXG5cblxuRnV0dXJlIHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09XG5cbkEgKmZ1dHVyZSBzdGF0ZW1lbnQqIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBjb21waWxlciB0aGF0IGEgcGFydGljdWxhclxubW9kdWxlIHNob3VsZCBiZSBjb21waWxlZCB1c2luZyBzeW50YXggb3Igc2VtYW50aWNzIHRoYXQgd2lsbCBiZVxuYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIGZ1dHVyZSByZWxlYXNlIG9mIFB5dGhvbi4gIFRoZSBmdXR1cmVcbnN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uXG50aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICBJdCBhbGxvd3MgdXNlIG9mXG50aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlIHJlbGVhc2UgaW4gd2hpY2ggdGhlXG5mZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG5cbiAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4gICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSBvbmx5XG5saW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG5cbiogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG5cbiogY29tbWVudHMsXG5cbiogYmxhbmsgbGluZXMsIGFuZFxuXG4qIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuXG5UaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSBgYGFic29sdXRlX2ltcG9ydGBgLFxuYGBkaXZpc2lvbmBgLCBgYGdlbmVyYXRvcnNgYCwgYGB1bmljb2RlX2xpdGVyYWxzYGAsXG5gYHByaW50X2Z1bmN0aW9uYGAsIGBgbmVzdGVkX3Njb3Blc2BgIGFuZCBgYHdpdGhfc3RhdGVtZW50YGAuICBUaGV5XG5hcmUgYWxsIHJlZHVuZGFudCBiZWNhdXNlIHRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvclxuYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG50aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSBjYXNlXG50aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhIG5ld1xucmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxubW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbnJ1bnRpbWUuXG5cbkZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgaGF2ZVxuYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlIHN0YXRlbWVudFxuY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cblxuVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgc3RhdGVtZW50OlxudGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgYGBfX2Z1dHVyZV9fYGAsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0XG53aWxsIGJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgZXhlYygpYGAgYW5kXG5gYGNvbXBpbGUoKWBgIHRoYXQgb2NjdXIgaW4gYSBtb2R1bGUgYGBNYGAgY29udGFpbmluZyBhIGZ1dHVyZVxuc3RhdGVtZW50IHdpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZFxud2l0aCB0aGUgZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWxcbmFyZ3VtZW50cyB0byBgYGNvbXBpbGUoKWBgIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvblxuZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG4gICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCisgJ2ltcG9ydCc6ICdcblRoZSBgYGltcG9ydGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGltcG9ydF9zdG10ICAgICA6Oj0gImltcG9ydCIgbW9kdWxlIFsiYXMiIG5hbWVdICggIiwiIG1vZHVsZSBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiAiKCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSogWyIsIl0gIikiXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgbW9kdWxlICJpbXBvcnQiICIqIlxuICAgbW9kdWxlICAgICAgICAgIDo6PSAoaWRlbnRpZmllciAiLiIpKiBpZGVudGlmaWVyXG4gICByZWxhdGl2ZV9tb2R1bGUgOjo9ICIuIiogbW9kdWxlIHwgIi4iK1xuICAgbmFtZSAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cblRoZSBiYXNpYyBpbXBvcnQgc3RhdGVtZW50IChubyBgYGZyb21gYCBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuc3RlcHM6XG5cbjEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcblxuMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGUgd2hlcmVcbiAgIHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBvY2N1cnMuXG5cbldoZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkgY29tbWFzKSB0aGVcbnR3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QgYXMgdGhvdWdoXG50aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZGl1YWwgaW1wb3J0IHN0YXRlbWVudHMuXG5cblRoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgaXNcbmRlc2NyaWJlZCBpbiBncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgKmltcG9ydCBzeXN0ZW0qLFxud2hpY2ggYWxzbyBkZXNjcmliZXMgdGhlIHZhcmlvdXMgdHlwZXMgb2YgcGFja2FnZXMgYW5kIG1vZHVsZXMgdGhhdFxuY2FuIGJlIGltcG9ydGVkLCBhcyB3ZWxsIGFzIGFsbCB0aGUgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0b1xuY3VzdG9taXplIHRoZSBpbXBvcnQgc3lzdGVtLiBOb3RlIHRoYXQgZmFpbHVyZXMgaW4gdGhpcyBzdGVwIG1heVxuaW5kaWNhdGUgZWl0aGVyIHRoYXQgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCwgKm9yKiB0aGF0IGFuXG5lcnJvciBvY2N1cnJlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIG1vZHVsZSwgd2hpY2ggaW5jbHVkZXMgZXhlY3V0aW9uXG5vZiB0aGUgbW9kdWxlXCdzIGNvZGUuXG5cbklmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgbWFkZVxuYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6XG5cbiogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5IGBgYXNgYCwgdGhlbiB0aGUgbmFtZSBmb2xsb3dpbmdcbiAgYGBhc2BgIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG5cbiogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGFcbiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZVwncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2VcbiAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZVxuXG4qIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZVxuICBuYW1lIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW5cbiAgdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZVxuICBpbXBvcnRlZCBtb2R1bGUgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZVxuICByYXRoZXIgdGhhbiBkaXJlY3RseVxuXG5UaGUgYGBmcm9tYGAgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG5cbjEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlIGBgZnJvbWBgIGNsYXVzZSBsb2FkaW5nIGFuZFxuICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTtcblxuMi4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgYGBpbXBvcnRgYCBjbGF1c2VzOlxuXG4gICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG5cbiAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kIHRoZW5cbiAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG5cbiAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCBgYEltcG9ydEVycm9yYGAgaXMgcmFpc2VkLlxuXG4gICA0LiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsXG4gICAgICBuYW1lc3BhY2UsIHVzaW5nIHRoZSBuYW1lIGluIHRoZSBgYGFzYGAgY2xhdXNlIGlmIGl0IGlzIHByZXNlbnQsXG4gICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG5cbkV4YW1wbGVzOlxuXG4gICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGZiYlxuICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgYmF6XG4gICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgYXR0clxuXG5JZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKGBgXCcqXCdgYCksIGFsbCBwdWJsaWNcbm5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlXG5zY29wZSB3aGVyZSB0aGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gIGBgX19hbGxfX2BgXG5zaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkXG5hY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXNcbmxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cblxuVGhlIGBgZnJvbWBgIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS5cbkF0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYVxuYGBTeW50YXhFcnJvcmBgLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gIGBgX19hbGxfX2BgXG5zaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkXG5hY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXNcbmxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cblxuVGhlIGBgZnJvbWBgIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS4gIFRoZVxud2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSBgYGltcG9ydCAqYGAgLS0tIGlzIG9ubHkgYWxsb3dlZCBhdCB0aGVcbm1vZHVsZSBsZXZlbC4gQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnNcbndpbGwgcmFpc2UgYSBgYFN5bnRheEVycm9yYGAuXG5cbldoZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgdGhlXG5hYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyBjb250YWluZWRcbndpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCB3aXRoaW5cbnRoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gQnlcbnVzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyIGBgZnJvbWBgXG55b3UgY2FuIHNwZWNpZnkgaG93IGhpZ2ggdG8gdHJhdmVyc2UgdXAgdGhlIGN1cnJlbnQgcGFja2FnZSBoaWVyYXJjaHlcbndpdGhvdXQgc3BlY2lmeWluZyBleGFjdCBuYW1lcy4gT25lIGxlYWRpbmcgZG90IG1lYW5zIHRoZSBjdXJyZW50XG5wYWNrYWdlIHdoZXJlIHRoZSBtb2R1bGUgbWFraW5nIHRoZSBpbXBvcnQgZXhpc3RzLiBUd28gZG90cyBtZWFucyB1cFxub25lIHBhY2thZ2UgbGV2ZWwuIFRocmVlIGRvdHMgaXMgdXAgdHdvIGxldmVscywgZXRjLiBTbyBpZiB5b3UgZXhlY3V0ZVxuYGBmcm9tIC4gaW1wb3J0IG1vZGBgIGZyb20gYSBtb2R1bGUgaW4gdGhlIGBgcGtnYGAgcGFja2FnZSB0aGVuIHlvdVxud2lsbCBlbmQgdXAgaW1wb3J0aW5nIGBgcGtnLm1vZGBgLiBJZiB5b3UgZXhlY3V0ZSBgYGZyb20gLi5zdWJwa2cyXG5pbXBvcnQgbW9kYGAgZnJvbSB3aXRoaW4gYGBwa2cuc3VicGtnMWBgIHlvdSB3aWxsIGltcG9ydFxuYGBwa2cuc3VicGtnMi5tb2RgYC4gVGhlIHNwZWNpZmljYXRpb24gZm9yIHJlbGF0aXZlIGltcG9ydHMgaXNcbmNvbnRhaW5lZCB3aXRoaW4gKipQRVAgMzI4KiouXG5cbmBgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKWBgIGlzIHByb3ZpZGVkIHRvIHN1cHBvcnQgYXBwbGljYXRpb25zIHRoYXRcbmRldGVybWluZSB3aGljaCBtb2R1bGVzIG5lZWQgdG8gYmUgbG9hZGVkIGR5bmFtaWNhbGx5LlxuXG5cbkZ1dHVyZSBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PVxuXG5BICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhIHBhcnRpY3VsYXJcbm1vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbmF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24uICBUaGUgZnV0dXJlXG5zdGF0ZW1lbnQgaXMgaW50ZW5kZWQgdG8gZWFzZSBtaWdyYXRpb24gdG8gZnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvblxudGhhdCBpbnRyb2R1Y2UgaW5jb21wYXRpYmxlIGNoYW5nZXMgdG8gdGhlIGxhbmd1YWdlLiAgSXQgYWxsb3dzIHVzZSBvZlxudGhlIG5ldyBmZWF0dXJlcyBvbiBhIHBlci1tb2R1bGUgYmFzaXMgYmVmb3JlIHRoZSByZWxlYXNlIGluIHdoaWNoIHRoZVxuZmVhdHVyZSBiZWNvbWVzIHN0YW5kYXJkLlxuXG4gICBmdXR1cmVfc3RhdGVtZW50IDo6PSAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgIigiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqIFsiLCJdICIpIlxuICAgZmVhdHVyZSAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgbmFtZSAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgbXVzdCBhcHBlYXIgbmVhciB0aGUgdG9wIG9mIHRoZSBtb2R1bGUuICBUaGUgb25seVxubGluZXMgdGhhdCBjYW4gYXBwZWFyIGJlZm9yZSBhIGZ1dHVyZSBzdGF0ZW1lbnQgYXJlOlxuXG4qIHRoZSBtb2R1bGUgZG9jc3RyaW5nIChpZiBhbnkpLFxuXG4qIGNvbW1lbnRzLFxuXG4qIGJsYW5rIGxpbmVzLCBhbmRcblxuKiBvdGhlciBmdXR1cmUgc3RhdGVtZW50cy5cblxuVGhlIGZlYXR1cmVzIHJlY29nbml6ZWQgYnkgUHl0aG9uIDMuMCBhcmUgYGBhYnNvbHV0ZV9pbXBvcnRgYCxcbmBgZGl2aXNpb25gYCwgYGBnZW5lcmF0b3JzYGAsIGBgdW5pY29kZV9saXRlcmFsc2BgLFxuYGBwcmludF9mdW5jdGlvbmBgLCBgYG5lc3RlZF9zY29wZXNgYCBhbmQgYGB3aXRoX3N0YXRlbWVudGBgLiAgVGhleVxuYXJlIGFsbCByZWR1bmRhbnQgYmVjYXVzZSB0aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3JcbmJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgcmVjb2duaXplZCBhbmQgdHJlYXRlZCBzcGVjaWFsbHkgYXQgY29tcGlsZVxudGltZTogQ2hhbmdlcyB0byB0aGUgc2VtYW50aWNzIG9mIGNvcmUgY29uc3RydWN0cyBhcmUgb2Z0ZW5cbmltcGxlbWVudGVkIGJ5IGdlbmVyYXRpbmcgZGlmZmVyZW50IGNvZGUuICBJdCBtYXkgZXZlbiBiZSB0aGUgY2FzZVxudGhhdCBhIG5ldyBmZWF0dXJlIGludHJvZHVjZXMgbmV3IGluY29tcGF0aWJsZSBzeW50YXggKHN1Y2ggYXMgYSBuZXdcbnJlc2VydmVkIHdvcmQpLCBpbiB3aGljaCBjYXNlIHRoZSBjb21waWxlciBtYXkgbmVlZCB0byBwYXJzZSB0aGVcbm1vZHVsZSBkaWZmZXJlbnRseS4gIFN1Y2ggZGVjaXNpb25zIGNhbm5vdCBiZSBwdXNoZWQgb2ZmIHVudGlsXG5ydW50aW1lLlxuXG5Gb3IgYW55IGdpdmVuIHJlbGVhc2UsIHRoZSBjb21waWxlciBrbm93cyB3aGljaCBmZWF0dXJlIG5hbWVzIGhhdmVcbmJlZW4gZGVmaW5lZCwgYW5kIHJhaXNlcyBhIGNvbXBpbGUtdGltZSBlcnJvciBpZiBhIGZ1dHVyZSBzdGF0ZW1lbnRcbmNvbnRhaW5zIGEgZmVhdHVyZSBub3Qga25vd24gdG8gaXQuXG5cblRoZSBkaXJlY3QgcnVudGltZSBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lIGFzIGZvciBhbnkgaW1wb3J0IHN0YXRlbWVudDpcbnRoZXJlIGlzIGEgc3RhbmRhcmQgbW9kdWxlIGBgX19mdXR1cmVfX2BgLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdFxud2lsbCBiZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50IGlzXG5leGVjdXRlZC5cblxuVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgZmVhdHVyZVxuZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cblxuTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuXG4gICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cblxuVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdFwncyBhbiBvcmRpbmFyeSBpbXBvcnQgc3RhdGVtZW50IHdpdGhcbm5vIHNwZWNpYWwgc2VtYW50aWNzIG9yIHN5bnRheCByZXN0cmljdGlvbnMuXG5cbkNvZGUgY29tcGlsZWQgYnkgY2FsbHMgdG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGV4ZWMoKWBgIGFuZFxuYGBjb21waWxlKClgYCB0aGF0IG9jY3VyIGluIGEgbW9kdWxlIGBgTWBgIGNvbnRhaW5pbmcgYSBmdXR1cmVcbnN0YXRlbWVudCB3aWxsLCBieSBkZWZhdWx0LCB1c2UgdGhlIG5ldyBzeW50YXggb3Igc2VtYW50aWNzIGFzc29jaWF0ZWRcbndpdGggdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIGJ5IG9wdGlvbmFsXG5hcmd1bWVudHMgdG8gYGBjb21waWxlKClgYCAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb25cbmZvciBkZXRhaWxzLlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgdHlwZWQgYXQgYW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgcHJvbXB0IHdpbGxcbnRha2UgZWZmZWN0IGZvciB0aGUgcmVzdCBvZiB0aGUgaW50ZXJwcmV0ZXIgc2Vzc2lvbi4gIElmIGFuXG5pbnRlcnByZXRlciBpcyBzdGFydGVkIHdpdGggdGhlICotaSogb3B0aW9uLCBpcyBwYXNzZWQgYSBzY3JpcHQgbmFtZVxudG8gZXhlY3V0ZSwgYW5kIHRoZSBzY3JpcHQgaW5jbHVkZXMgYSBmdXR1cmUgc3RhdGVtZW50LCBpdCB3aWxsIGJlIGluXG5lZmZlY3QgaW4gdGhlIGludGVyYWN0aXZlIHNlc3Npb24gc3RhcnRlZCBhZnRlciB0aGUgc2NyaXB0IGlzXG5leGVjdXRlZC5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDIzNioqIC0gQmFjayB0byB0aGUgX19mdXR1cmVfX1xuICAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAogICdpbic6ICdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSBgYGEgPCBiIDwgY2BgIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6IGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYC5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sIGBgeCA8IHkgPD0gemBgIGlzXG5lcXVpdmFsZW50IHRvIGBgeCA8IHkgYW5kIHkgPD0gemBgLCBleGNlcHQgdGhhdCBgYHlgYCBpcyBldmFsdWF0ZWRcbm9ubHkgb25jZSAoYnV0IGluIGJvdGggY2FzZXMgYGB6YGAgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiBgYHggPFxueWBgIGlzIGZvdW5kIHRvIGJlIGZhbHNlKS5cblxuRm9ybWFsbHksIGlmICphKiwgKmIqLCAqYyosIC4uLiwgKnkqLCAqeiogYXJlIGV4cHJlc3Npb25zIGFuZCAqb3AxKixcbipvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiBgYGEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6YGAgaXMgZXF1aXZhbGVudCB0byBgYGEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiB6YGAsXG5leGNlcHQgdGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0IGBgYSBvcDEgYiBvcDIgY2BgIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mIGNvbXBhcmlzb25cbmJldHdlZW4gKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sIGBgeCA8IHkgPiB6YGAgaXMgcGVyZmVjdGx5IGxlZ2FsXG4odGhvdWdoIHBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBvcGVyYXRvcnMgYGA8YGAsIGBgPmBgLCBgYD09YGAsIGBgPj1gYCwgYGA8PWBgLCBhbmQgYGAhPWBgIGNvbXBhcmVcbnRoZSB2YWx1ZXMgb2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuXG5JZiBib3RoIGFyZSBudW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSxcbnRoZSBgYD09YGAgYW5kIGBgIT1gYCBvcGVyYXRvcnMgKmFsd2F5cyogY29uc2lkZXIgb2JqZWN0cyBvZiBkaWZmZXJlbnRcbnR5cGVzIHRvIGJlIHVuZXF1YWwsIHdoaWxlIHRoZSBgYDxgYCwgYGA+YGAsIGBgPj1gYCBhbmQgYGA8PWBgXG5vcGVyYXRvcnMgcmFpc2UgYSBgYFR5cGVFcnJvcmBgIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50XG50eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0b3JzIGZvciB0aGUgZ2l2ZW4gcGFpciBvZlxudHlwZXMuICBZb3UgY2FuIGNvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mIG5vbi1idWlsdC1pblxudHlwZXMgYnkgZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSBgYF9fZ3RfXygpYGAsIGRlc2NyaWJlZFxuaW4gc2VjdGlvbiAqQmFzaWMgY3VzdG9taXphdGlvbiouXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlIGRlcGVuZHMgb24gdGhlIHR5cGU6XG5cbiogTnVtYmVycyBhcmUgY29tcGFyZWQgYXJpdGhtZXRpY2FsbHkuXG5cbiogVGhlIHZhbHVlcyBgYGZsb2F0KFwnTmFOXCcpYGAgYW5kIGBgRGVjaW1hbChcJ05hTlwnKWBgIGFyZSBzcGVjaWFsLiBUaGVcbiAgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLCBgYHggaXMgeGBgIGJ1dCBhcmUgbm90IGVxdWFsIHRvXG4gIHRoZW1zZWx2ZXMsIGBgeCAhPSB4YGAuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgdG8gYVxuICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gYGBGYWxzZWBgLiAgRm9yIGV4YW1wbGUsIGJvdGggYGAzIDxcbiAgZmxvYXQoXCdOYU5cJylgYCBhbmQgYGBmbG9hdChcJ05hTlwnKSA8IDNgYCB3aWxsIHJldHVybiBgYEZhbHNlYGAuXG5cbiogQnl0ZXMgb2JqZWN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuXG4qIFN0cmluZ3MgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIGVxdWl2YWxlbnRzXG4gICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYG9yZCgpYGApIG9mIHRoZWlyIGNoYXJhY3RlcnMuXG4gIFszXSBTdHJpbmcgYW5kIGJ5dGVzIG9iamVjdCBjYW5cJ3QgYmUgY29tcGFyZWQhXG5cbiogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGVhY2hcbiAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG5cbiAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyIGZpcnN0XG4gIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCBgYFsxLDIseF0gPD0gWzEsMix5XWBgIGhhcyB0aGVcbiAgc2FtZSB2YWx1ZSBhcyBgYHggPD0geWBgLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdFxuICBleGlzdCwgdGhlIHNob3J0ZXIgc2VxdWVuY2UgaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsIGBgWzEsMl0gPFxuICBbMSwyLDNdYGApLlxuXG4qIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZVxuICBzYW1lIGBgKGtleSwgdmFsdWUpYGAgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIGBgKFwnPFwnLCBcJzw9XCcsIFwnPj1cJyxcbiAgXCc+XCcpYGAgcmFpc2UgYGBUeXBlRXJyb3JgYC5cblxuKiBTZXRzIGFuZCBmcm96ZW5zZXRzIGRlZmluZSBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmRcbiAgc3VwZXJzZXQgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKHRoZVxuICB0d28gc2V0cyBgYHsxLDJ9YGAgYW5kIHsyLDN9IGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nLlxuICBGb3IgZXhhbXBsZSwgYGBtaW4oKWBgLCBgYG1heCgpYGAsIGFuZCBgYHNvcnRlZCgpYGAgcHJvZHVjZVxuICB1bmRlZmluZWQgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleSBhcmVcbiAgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkIHNtYWxsZXJcbiAgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXQgY29uc2lzdGVudGx5XG4gIHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBkaWZmZXJpbmcgdHlwZXMgZGVwZW5kcyBvbiB3aGV0aGVyIGVpdGhlclxub2YgdGhlIHR5cGVzIHByb3ZpZGUgZXhwbGljaXQgc3VwcG9ydCBmb3IgdGhlIGNvbXBhcmlzb24uICBNb3N0XG5udW1lcmljIHR5cGVzIGNhbiBiZSBjb21wYXJlZCB3aXRoIG9uZSBhbm90aGVyLCBidXQgY29tcGFyaXNvbnMgb2ZcbmBgZmxvYXRgYCBhbmQgYGBEZWNpbWFsYGAgYXJlIG5vdCBzdXBwb3J0ZWQgdG8gYXZvaWQgdGhlIGluZXZpdGFibGVcbmNvbmZ1c2lvbiBhcmlzaW5nIGZyb20gcmVwcmVzZW50YXRpb24gaXNzdWVzIHN1Y2ggYXMgYGBmbG9hdChcJzEuMVwnKWBgXG5iZWluZyBpbmV4YWN0bHkgcmVwcmVzZW50ZWQgYW5kIHRoZXJlZm9yZSBub3QgZXhhY3RseSBlcXVhbCB0b1xuYGBEZWNpbWFsKFwnMS4xXCcpYGAgd2hpY2ggaXMuICBXaGVuIGNyb3NzLXR5cGUgY29tcGFyaXNvbiBpcyBub3RcbnN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnMgYGBOb3RJbXBsZW1lbnRlZGBgLiAgVGhpcyBjYW5cbmNyZWF0ZSB0aGUgaWxsdXNpb24gb2Ygbm9uLXRyYW5zaXRpdml0eSBiZXR3ZWVuIHN1cHBvcnRlZCBjcm9zcy10eXBlXG5jb21wYXJpc29ucyBhbmQgdW5zdXBwb3J0ZWQgY29tcGFyaXNvbnMuICBGb3IgZXhhbXBsZSwgYGBEZWNpbWFsKDIpID09XG4yYGAgYW5kIGBgMiA9PSBmbG9hdCgyKWBgIGJ1dCBgYERlY2ltYWwoMikgIT0gZmxvYXQoMilgYC5cblxuVGhlIG9wZXJhdG9ycyBgYGluYGAgYW5kIGBgbm90IGluYGAgdGVzdCBmb3IgbWVtYmVyc2hpcC4gIGBgeCBpbiBzYGBcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICBgYHhcbm5vdCBpbiBzYGAgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgYGB4IGluIHNgYC4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoIGBgaW5gYFxudGVzdHMgd2hldGhlciBhIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlc1xuc3VjaCBhcyBsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gYGB4IGluIHlgYCBpcyBlcXVpdmFsZW50IHRvIGBgYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpYGAuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KlxuaXMgYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzIGBgeS5maW5kKHgpICE9IC0xYGAuXG5FbXB0eSBzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXJcbnN0cmluZywgc28gYGAiIiBpbiAiYWJjImBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSBgYF9fY29udGFpbnNfXygpYGAgbWV0aG9kLFxuYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIGBgeS5fX2NvbnRhaW5zX18oeClgYCBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAgYnV0IGRvXG5kZWZpbmUgYGBfX2l0ZXJfXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlIGBgemBgIHdpdGggYGB4XG49PSB6YGAgaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgYGB5YGAuICBJZiBhbiBleGNlcHRpb24gaXNcbnJhaXNlZCBkdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG5gYF9fZ2V0aXRlbV9fKClgYCwgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0IGBgeCA9PSB5W2ldYGAsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgYGBJbmRleEVycm9yYGAgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciBgYG5vdCBpbmBgIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG5gYGluYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpc2BgIGFuZCBgYGlzIG5vdGBgIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogYGB4IGlzXG55YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgYGB4IGlzXG5ub3QgeWBgIHlpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAogICdpbnRlZ2Vycyc6ICdcbkludGVnZXIgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW50ZWdlciAgICAgICAgOjo9IGRlY2ltYWxpbnRlZ2VyIHwgb2N0aW50ZWdlciB8IGhleGludGVnZXIgfCBiaW5pbnRlZ2VyXG4gICBkZWNpbWFsaW50ZWdlciA6Oj0gbm9uemVyb2RpZ2l0IGRpZ2l0KiB8ICIwIitcbiAgIG5vbnplcm9kaWdpdCAgIDo6PSAiMSIuLi4iOSJcbiAgIGRpZ2l0ICAgICAgICAgIDo6PSAiMCIuLi4iOSJcbiAgIG9jdGludGVnZXIgICAgIDo6PSAiMCIgKCJvIiB8ICJPIikgb2N0ZGlnaXQrXG4gICBoZXhpbnRlZ2VyICAgICA6Oj0gIjAiICgieCIgfCAiWCIpIGhleGRpZ2l0K1xuICAgYmluaW50ZWdlciAgICAgOjo9ICIwIiAoImIiIHwgIkIiKSBiaW5kaWdpdCtcbiAgIG9jdGRpZ2l0ICAgICAgIDo6PSAiMCIuLi4iNyJcbiAgIGhleGRpZ2l0ICAgICAgIDo6PSBkaWdpdCB8ICJhIi4uLiJmIiB8ICJBIi4uLiJGIlxuICAgYmluZGlnaXQgICAgICAgOjo9ICIwIiB8ICIxIlxuXG5UaGVyZSBpcyBubyBsaW1pdCBmb3IgdGhlIGxlbmd0aCBvZiBpbnRlZ2VyIGxpdGVyYWxzIGFwYXJ0IGZyb20gd2hhdFxuY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LlxuXG5Ob3RlIHRoYXQgbGVhZGluZyB6ZXJvcyBpbiBhIG5vbi16ZXJvIGRlY2ltYWwgbnVtYmVyIGFyZSBub3QgYWxsb3dlZC5cblRoaXMgaXMgZm9yIGRpc2FtYmlndWF0aW9uIHdpdGggQy1zdHlsZSBvY3RhbCBsaXRlcmFscywgd2hpY2ggUHl0aG9uXG51c2VkIGJlZm9yZSB2ZXJzaW9uIDMuMC5cblxuU29tZSBleGFtcGxlcyBvZiBpbnRlZ2VyIGxpdGVyYWxzOlxuXG4gICA3ICAgICAyMTQ3NDgzNjQ3ICAgICAgICAgICAgICAgICAgICAgICAgMG8xNzcgICAgMGIxMDAxMTAxMTFcbiAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAweDEwMDAwMDAwMFxuICAgICAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgICAgICAgICAgIDB4ZGVhZGJlZWZcbicsCiAgJ2xhbWJkYSc6ICdcbkxhbWJkYXNcbioqKioqKipcblxuICAgbGFtYmRhX2Zvcm0gICAgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4gICBsYW1iZGFfZm9ybV9ub2NvbmQgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25fbm9jb25kXG5cbkxhbWJkYSBmb3JtcyAobGFtYmRhIGV4cHJlc3Npb25zKSBoYXZlIHRoZSBzYW1lIHN5bnRhY3RpYyBwb3NpdGlvbiBhc1xuZXhwcmVzc2lvbnMuICBUaGV5IGFyZSBhIHNob3J0aGFuZCB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9uczsgdGhlXG5leHByZXNzaW9uIGBgbGFtYmRhIGFyZ3VtZW50czogZXhwcmVzc2lvbmBgIHlpZWxkcyBhIGZ1bmN0aW9uIG9iamVjdC5cblRoZSB1bm5hbWVkIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBmdW5jdGlvbiBvYmplY3QgZGVmaW5lZCB3aXRoXG5cbiAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuICAgICAgIHJldHVybiBleHByZXNzaW9uXG5cblNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyIGxpc3RzLlxuTm90ZSB0aGF0IGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggbGFtYmRhIGZvcm1zIGNhbm5vdCBjb250YWluXG5zdGF0ZW1lbnRzIG9yIGFubm90YXRpb25zLlxuJywKQEAgLTQ5LDMwICs1MCwzMCBAQAogICdub25sb2NhbCc6ICdcblRoZSBgYG5vbmxvY2FsYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBub25sb2NhbF9zdG10IDo6PSAibm9ubG9jYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcblxuVGhlIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZS4gIFRoaXMgaXNcbmltcG9ydGFudCBiZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBiaW5kaW5nIGlzIHRvIHNlYXJjaCB0aGVcbmxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzIGVuY2Fwc3VsYXRlZCBjb2RlIHRvXG5yZWJpbmQgdmFyaWFibGVzIG91dHNpZGUgb2YgdGhlIGxvY2FsIHNjb3BlIGJlc2lkZXMgdGhlIGdsb2JhbFxuKG1vZHVsZSkgc2NvcGUuXG5cbk5hbWVzIGxpc3RlZCBpbiBhIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQsIHVubGlrZSB0byB0aG9zZSBsaXN0ZWQgaW4gYVxuYGBnbG9iYWxgYCBzdGF0ZW1lbnQsIG11c3QgcmVmZXIgdG8gcHJlLWV4aXN0aW5nIGJpbmRpbmdzIGluIGFuXG5lbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSBjcmVhdGVkXG5jYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bmFtYmlndW91c2x5KS5cblxuTmFtZXMgbGlzdGVkIGluIGEgYGBub25sb2NhbGBgIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggcHJlLVxuZXhpc3RpbmcgYmluZGluZ3MgaW4gdGhlIGxvY2FsIHNjb3BlLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEwNCoqIC0gQWNjZXNzIHRvIE5hbWVzIGluIE91dGVyIFNjb3Blc1xuICAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBgYG5vbmxvY2FsYGAgc3RhdGVtZW50LlxuJywKICAnbnVtYmVycyc6ICJcbk51bWVyaWMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG51bWVyaWMgbGl0ZXJhbHM6IGludGVnZXJzLCBmbG9hdGluZyBwb2ludFxubnVtYmVycywgYW5kIGltYWdpbmFyeSBudW1iZXJzLiAgVGhlcmUgYXJlIG5vIGNvbXBsZXggbGl0ZXJhbHNcbihjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsIG51bWJlciBhbmQgYW5cbmltYWdpbmFyeSBudW1iZXIpLlxuXG5Ob3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgYGAtMWBgXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAnYGAtYGAnIGFuZFxudGhlIGxpdGVyYWwgYGAxYGAuXG4iLAogICdudW1lcmljLXR5cGVzJzogIlxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZVxuICAgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2FkZF9fKClgYCBtZXRob2QsXG4gICBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZSBgYF9fZGl2bW9kX18oKWBgIG1ldGhvZCBzaG91bGQgYmVcbiAgIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgX19mbG9vcmRpdl9fKClgYCBhbmQgYGBfX21vZF9fKClgYDsgaXRcbiAgIHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byBgYF9fdHJ1ZWRpdl9fKClgYC4gIE5vdGUgdGhhdFxuICAgYGBfX3Bvd19fKClgYCBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluIGBgcG93KClgYCBmdW5jdGlvblxuICAgaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5XG4gICBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nXG4gICBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLiBbMl0gIEZvclxuICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuXG4gICBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19yc3ViX18oKWBgIG1ldGhvZCxcbiAgIGBgeS5fX3JzdWJfXyh4KWBgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5IGBgcG93KClgYCB3aWxsIG5vdCB0cnkgY2FsbGluZyBgYF9fcnBvd19fKClgYFxuICAgKHRoZSBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZCdzXG4gICAgIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2QgZm9yIHRoZVxuICAgICBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdCBvcGVyYW5kJ3NcbiAgICAgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzIHRvXG4gICAgIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cbiIsCi0gJ29iamVjdHMnOiAnXG5PYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbipPYmplY3RzKiBhcmUgUHl0aG9uXCdzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSBQeXRob25cbnByb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiBvYmplY3RzLiAoSW5cbmEgc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbnByb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG5cbkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdFwnc1xuKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdFxuYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJ2BgaXNgYFwnIG9wZXJhdG9yIGNvbXBhcmVzIHRoZVxuaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSBgYGlkKClgYCBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXJcbnJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkgKGN1cnJlbnRseSBpbXBsZW1lbnRlZCBhcyBpdHMgYWRkcmVzcykuIEFuXG5vYmplY3RcJ3MgKnR5cGUqIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbMV0gQW4gb2JqZWN0XCdzIHR5cGUgZGV0ZXJtaW5lc1xudGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzIChlLmcuLCAiZG9lcyBpdCBoYXZlIGFcbmxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIG9iamVjdHMgb2YgdGhhdFxudHlwZS4gIFRoZSBgYHR5cGUoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XCdzIHR5cGUgKHdoaWNoIGlzIGFuXG5vYmplY3QgaXRzZWxmKS4gIFRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0c1xud2hvc2UgdmFsdWUgY2FuIGNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWVcbmlzIHVuY2hhbmdlYWJsZSBvbmNlIHRoZXkgYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZVxudmFsdWUgb2YgYW4gaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhXG5tdXRhYmxlIG9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlclwncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyXG50aGUgY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uIG9mXG5vYmplY3RzIGl0IGNvbnRhaW5zIGNhbm5vdCBiZSBjaGFuZ2VkLiAgU28sIGltbXV0YWJpbGl0eSBpcyBub3RcbnN0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgc3VidGxlLilcbkFuIG9iamVjdFwncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbm51bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgYW5kXG5saXN0cyBhcmUgbXV0YWJsZS5cblxuT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gaXNcbmFsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gaXQgaXNcbmEgbWF0dGVyIG9mIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgaG93IGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xuaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG5yZWFjaGFibGUuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhIHJlZmVyZW5jZS1cbmNvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSBsaW5rZWRcbmdhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSBjb250YWluaW5nXG5jaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBgYGdjYGAgbW9kdWxlIGZvclxuaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuIE90aGVyXG5pbXBsZW1lbnRhdGlvbnMgYWN0IGRpZmZlcmVudGx5IGFuZCBDUHl0aG9uIG1heSBjaGFuZ2UuIERvIG5vdCBkZXBlbmRcbm9uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlIChleDpcbmFsd2F5cyBjbG9zZSBmaWxlcykuXG5cbk5vdGUgdGhhdCB0aGUgdXNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvblwncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuZmFjaWxpdGllcyBtYXkga2VlcCBvYmplY3RzIGFsaXZlIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgY29sbGVjdGFibGUuXG5BbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhIFwnYGB0cnlgYC4uLmBgZXhjZXB0YGBcJ1xuc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyBvcGVuXG5maWxlcyBvciB3aW5kb3dzLiAgSXQgaXMgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIHJlc291cmNlcyBhcmUgZnJlZWRcbndoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xubm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0IHdheSB0b1xucmVsZWFzZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UsIHVzdWFsbHkgYSBgYGNsb3NlKClgYCBtZXRob2QuIFByb2dyYW1zXG5hcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZXhwbGljaXRseSBjbG9zZSBzdWNoIG9iamVjdHMuICBUaGVcblwnYGB0cnlgYC4uLmBgZmluYWxseWBgXCcgc3RhdGVtZW50IGFuZCB0aGUgXCdgYHdpdGhgYFwnIHN0YXRlbWVudCBwcm92aWRlXG5jb252ZW5pZW50IHdheXMgdG8gZG8gdGhpcy5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgY2FsbGVkXG4qY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG5kaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lclwncyB2YWx1ZS4gIEluXG5tb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSB0aGVcbnZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgd2hlbiB3ZVxudGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiB0aGVcbmltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QsIGl0c1xudmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG5cblR5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbmltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciBpbW11dGFibGVcbnR5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxucmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgd2hpbGVcbmZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyIGBgYSA9IDE7IGIgPVxuMWBgLCBgYGFgYCBhbmQgYGBiYGAgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlXG52YWx1ZSBvbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciBgYGMgPSBbXTsgZCA9XG5bXWBgLCBgYGNgYCBhbmQgYGBkYGAgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCxcbnVuaXF1ZSwgbmV3bHkgY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCBgYGMgPSBkID0gW11gYCBhc3NpZ25zXG50aGUgc2FtZSBvYmplY3QgdG8gYm90aCBgYGNgYCBhbmQgYGBkYGAuKVxuJywKKyAnb2JqZWN0cyc6ICdcbk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKk9iamVjdHMqIGFyZSBQeXRob25cJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhIFB5dGhvblxucHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuIG9iamVjdHMuIChJblxuYSBzZW5zZSwgYW5kIGluIGNvbmZvcm1hbmNlIHRvIFZvbiBOZXVtYW5uXCdzIG1vZGVsIG9mIGEgInN0b3JlZFxucHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcblxuRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0XCdzXG4qaWRlbnRpdHkqIG5ldmVyIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5IHRoaW5rIG9mIGl0XG5hcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnYGBpc2BgXCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlXG5pZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlIGBgaWQoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBGb3IgQ1B5dGhvbiwgYGBpZCh4KWBgIGlzIHRoZVxubWVtb3J5IGFkZHJlc3Mgd2hlcmUgYGB4YGAgaXMgc3RvcmVkLlxuXG5BbiBvYmplY3RcJ3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCBzdXBwb3J0c1xuKGUuZy4sICJkb2VzIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzXG5mb3Igb2JqZWN0cyBvZiB0aGF0IHR5cGUuICBUaGUgYGB0eXBlKClgYCBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFwnc1xudHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0XCdzXG4qdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXVxuXG5UaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuXG5jaGFuZ2UgYXJlIHNhaWQgdG8gYmUgKm11dGFibGUqOyBvYmplY3RzIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlYWJsZVxub25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbmltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlXG5vYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXJcJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciB0aGVcbmNvbnRhaW5lciBpcyBzdGlsbCBjb25zaWRlcmVkIGltbXV0YWJsZSwgYmVjYXVzZSB0aGUgY29sbGVjdGlvbiBvZlxub2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgbm90XG5zdHJpY3RseSB0aGUgc2FtZSBhcyBoYXZpbmcgYW4gdW5jaGFuZ2VhYmxlIHZhbHVlLCBpdCBpcyBtb3JlIHN1YnRsZS4pXG5BbiBvYmplY3RcJ3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG5udW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzIGFuZFxubGlzdHMgYXJlIG11dGFibGUuXG5cbk9iamVjdHMgYXJlIG5ldmVyIGV4cGxpY2l0bHkgZGVzdHJveWVkOyBob3dldmVyLCB3aGVuIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uIGlzXG5hbGxvd2VkIHRvIHBvc3Rwb25lIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBvbWl0IGl0IGFsdG9nZXRoZXIgLS0tIGl0IGlzXG5hIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbmltcGxlbWVudGVkLCBhcyBsb25nIGFzIG5vIG9iamVjdHMgYXJlIGNvbGxlY3RlZCB0aGF0IGFyZSBzdGlsbFxucmVhY2hhYmxlLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIENQeXRob24gY3VycmVudGx5IHVzZXMgYSByZWZlcmVuY2UtXG5jb3VudGluZyBzY2hlbWUgd2l0aCAob3B0aW9uYWwpIGRlbGF5ZWQgZGV0ZWN0aW9uIG9mIGN5Y2xpY2FsbHkgbGlua2VkXG5nYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUsIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0byBjb2xsZWN0IGdhcmJhZ2UgY29udGFpbmluZ1xuY2lyY3VsYXIgcmVmZXJlbmNlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgYGBnY2BgIG1vZHVsZSBmb3JcbmluZm9ybWF0aW9uIG9uIGNvbnRyb2xsaW5nIHRoZSBjb2xsZWN0aW9uIG9mIGN5Y2xpYyBnYXJiYWdlLiBPdGhlclxuaW1wbGVtZW50YXRpb25zIGFjdCBkaWZmZXJlbnRseSBhbmQgQ1B5dGhvbiBtYXkgY2hhbmdlLiBEbyBub3QgZGVwZW5kXG5vbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAoZXg6XG5hbHdheXMgY2xvc2UgZmlsZXMpLlxuXG5Ob3RlIHRoYXQgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb25cJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbmZhY2lsaXRpZXMgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZSB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIGNvbGxlY3RhYmxlLlxuQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJ2BgdHJ5YGAuLi5gYGV4Y2VwdGBgXCdcbnN0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvICJleHRlcm5hbCIgcmVzb3VyY2VzIHN1Y2ggYXMgb3BlblxuZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlIGZyZWVkXG53aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbm5vdCBndWFyYW50ZWVkIHRvIGhhcHBlbiwgc3VjaCBvYmplY3RzIGFsc28gcHJvdmlkZSBhbiBleHBsaWNpdCB3YXkgdG9cbnJlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgYGBjbG9zZSgpYGAgbWV0aG9kLiBQcm9ncmFtc1xuYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGV4cGxpY2l0bHkgY2xvc2Ugc3VjaCBvYmplY3RzLiAgVGhlXG5cJ2BgdHJ5YGAuLi5gYGZpbmFsbHlgYFwnIHN0YXRlbWVudCBhbmQgdGhlIFwnYGB3aXRoYGBcJyBzdGF0ZW1lbnQgcHJvdmlkZVxuY29udmVuaWVudCB3YXlzIHRvIGRvIHRoaXMuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlIGNhbGxlZFxuKmNvbnRhaW5lcnMqLiBFeGFtcGxlcyBvZiBjb250YWluZXJzIGFyZSB0dXBsZXMsIGxpc3RzIGFuZFxuZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXJcJ3MgdmFsdWUuICBJblxubW9zdCBjYXNlcywgd2hlbiB3ZSB0YWxrIGFib3V0IHRoZSB2YWx1ZSBvZiBhIGNvbnRhaW5lciwgd2UgaW1wbHkgdGhlXG52YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsIHdoZW4gd2VcbnRhbGsgYWJvdXQgdGhlIG11dGFiaWxpdHkgb2YgYSBjb250YWluZXIsIG9ubHkgdGhlIGlkZW50aXRpZXMgb2YgdGhlXG5pbW1lZGlhdGVseSBjb250YWluZWQgb2JqZWN0cyBhcmUgaW1wbGllZC4gIFNvLCBpZiBhbiBpbW11dGFibGVcbmNvbnRhaW5lciAobGlrZSBhIHR1cGxlKSBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgb2JqZWN0LCBpdHNcbnZhbHVlIGNoYW5nZXMgaWYgdGhhdCBtdXRhYmxlIG9iamVjdCBpcyBjaGFuZ2VkLlxuXG5UeXBlcyBhZmZlY3QgYWxtb3N0IGFsbCBhc3BlY3RzIG9mIG9iamVjdCBiZWhhdmlvci4gIEV2ZW4gdGhlXG5pbXBvcnRhbmNlIG9mIG9iamVjdCBpZGVudGl0eSBpcyBhZmZlY3RlZCBpbiBzb21lIHNlbnNlOiBmb3IgaW1tdXRhYmxlXG50eXBlcywgb3BlcmF0aW9ucyB0aGF0IGNvbXB1dGUgbmV3IHZhbHVlcyBtYXkgYWN0dWFsbHkgcmV0dXJuIGFcbnJlZmVyZW5jZSB0byBhbnkgZXhpc3Rpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUsIHdoaWxlXG5mb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciBgYGEgPSAxOyBiID1cbjFgYCwgYGBhYGAgYW5kIGBgYmBgIG1heSBvciBtYXkgbm90IHJlZmVyIHRvIHRoZSBzYW1lIG9iamVjdCB3aXRoIHRoZVxudmFsdWUgb25lLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQgYWZ0ZXIgYGBjID0gW107IGQgPVxuW11gYCwgYGBjYGAgYW5kIGBgZGBgIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsXG51bmlxdWUsIG5ld2x5IGNyZWF0ZWQgZW1wdHkgbGlzdHMuIChOb3RlIHRoYXQgYGBjID0gZCA9IFtdYGAgYXNzaWduc1xudGhlIHNhbWUgb2JqZWN0IHRvIGJvdGggYGBjYGAgYW5kIGBgZGBgLilcbicsCiAgJ29wZXJhdG9yLXN1bW1hcnknOiAnXG5TdW1tYXJ5XG4qKioqKioqXG5cblRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZXMgaW4gUHl0aG9uLFxuZnJvbSBsb3dlc3QgcHJlY2VkZW5jZSAobGVhc3QgYmluZGluZykgdG8gaGlnaGVzdCBwcmVjZWRlbmNlIChtb3N0XG5iaW5kaW5nKS4gIE9wZXJhdG9ycyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlLiAgVW5sZXNzXG50aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgT3BlcmF0b3JzIGluXG50aGUgc2FtZSBib3ggZ3JvdXAgbGVmdCB0byByaWdodCAoZXhjZXB0IGZvciBjb21wYXJpc29ucywgaW5jbHVkaW5nXG50ZXN0cywgd2hpY2ggYWxsIGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgY2hhaW4gZnJvbSBsZWZ0IHRvIHJpZ2h0XG4tLS0gc2VlIHNlY3Rpb24gKkNvbXBhcmlzb25zKiAtLS0gYW5kIGV4cG9uZW50aWF0aW9uLCB3aGljaCBncm91cHNcbmZyb20gcmlnaHQgdG8gbGVmdCkuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBsYW1iZGFgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBpZmBgIC0tIGBgZWxzZWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBvcmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBhbmRgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBub3RgYCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBpbmBgLCBgYG5vdGBgIGBgaW5gYCwgYGBpc2BgLCBgYGlzIG5vdGBgLCAgICAgfCBDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbnwgYGA8YGAsIGBgPD1gYCwgYGA+YGAsIGBgPj1gYCwgYGAhPWBgLCBgYD09YGAgICAgfCB0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMsICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGB8YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBeYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAmYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGA8PGBgLCBgYD4+YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGArYGAsIGBgLWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgICAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgZGl2aXNpb24sIHJlbWFpbmRlciAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbNV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAreGBgLCBgYC14YGAsIGBgfnhgYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAqKmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbNl0gICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGB4W2luZGV4XWBgLCBgYHhbaW5kZXg6aW5kZXhdYGAsICAgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbnwgYGB4KGFyZ3VtZW50cy4uLilgYCwgYGB4LmF0dHJpYnV0ZWBgICAgICAgICAgICAgfCBhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAoZXhwcmVzc2lvbnMuLi4pYGAsIGBgW2V4cHJlc3Npb25zLi4uXWBgLCAgICAgfCBCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbnwgYGB7a2V5OmRhdHVtLi4ufWBgLCBgYHtleHByZXNzaW9ucy4uLn1gYCAgICAgICAgfCBkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGlsZSBgYGFicyh4JXkpIDwgYWJzKHkpYGAgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgZm9yIGZsb2F0cyBpdFxuICAgIG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgZXhhbXBsZSwgYW5kXG4gICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiBJRUVFIDc1NCBkb3VibGUtXG4gICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCBgYC0xZS0xMDAgJSAxZTEwMGBgIGhhdmUgdGhlIHNhbWVcbiAgICBzaWduIGFzIGBgMWUxMDBgYCwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyBgYC0xZS0xMDAgKyAxZTEwMGBgLFxuICAgIHdoaWNoIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gYGAxZTEwMGBgLiAgVGhlIGZ1bmN0aW9uXG4gICAgYGBtYXRoLmZtb2QoKWBgIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzIHRoZSBzaWduIG9mXG4gICAgdGhlIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zIGBgLTFlLTEwMGBgIGluIHRoaXNcbiAgICBjYXNlLiBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlXG4gICAgYXBwbGljYXRpb24uXG5cblsyXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiB5LCBpdFwnc1xuICAgIHBvc3NpYmxlIGZvciBgYHgvL3lgYCB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gYGAoeC14JXkpLy95YGAgZHVlIHRvXG4gICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyIHJlc3VsdCwgaW5cbiAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0IGBgZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHlgYCBiZSB2ZXJ5XG4gICAgY2xvc2UgdG8gYGB4YGAuXG5cblszXSBXaGlsZSBjb21wYXJpc29ucyBiZXR3ZWVuIHN0cmluZ3MgbWFrZSBzZW5zZSBhdCB0aGUgYnl0ZSBsZXZlbCxcbiAgICB0aGV5IG1heSBiZSBjb3VudGVyLWludHVpdGl2ZSB0byB1c2Vycy4gIEZvciBleGFtcGxlLCB0aGUgc3RyaW5nc1xuICAgIGBgIlxcdTAwQzciYGAgYW5kIGBgIlxcdTAzMjdcXHUwMDQzImBgIGNvbXBhcmUgZGlmZmVyZW50bHksIGV2ZW5cbiAgICB0aG91Z2ggdGhleSBib3RoIHJlcHJlc2VudCB0aGUgc2FtZSB1bmljb2RlIGNoYXJhY3RlciAoTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSkuICBUbyBjb21wYXJlIHN0cmluZ3MgaW4gYSBodW1hblxuICAgIHJlY29nbml6YWJsZSB3YXksIGNvbXBhcmUgdXNpbmcgYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoKWBgLlxuXG5bNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCB0aGUgZHluYW1pY1xuICAgIG5hdHVyZSBvZiBkZXNjcmlwdG9ycywgeW91IG1heSBub3RpY2Ugc2VlbWluZ2x5IHVudXN1YWwgYmVoYXZpb3VyXG4gICAgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSBgYGlzYGAgb3BlcmF0b3IsIGxpa2UgdGhvc2UgaW52b2x2aW5nXG4gICAgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciBjb25zdGFudHMuICBDaGVjayB0aGVpclxuICAgIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cblxuWzVdIFRoZSBgYCVgYCBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyB0aGUgc2FtZVxuICAgIHByZWNlZGVuY2UgYXBwbGllcy5cblxuWzZdIFRoZSBwb3dlciBvcGVyYXRvciBgYCoqYGAgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gYXJpdGhtZXRpYyBvclxuICAgIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCBgYDIqKi0xYGAgaXNcbiAgICBgYDAuNWBgLlxuJywKICAncGFzcyc6ICdcblRoZSBgYHBhc3NgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcGFzc19zdG10IDo6PSAicGFzcyJcblxuYGBwYXNzYGAgaXMgYSBudWxsIG9wZXJhdGlvbiAtLS0gd2hlbiBpdCBpcyBleGVjdXRlZCwgbm90aGluZyBoYXBwZW5zLlxuSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuc3ludGFjdGljYWxseSwgYnV0IG5vIGNvZGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQsIGZvciBleGFtcGxlOlxuXG4gICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuXG4gICBjbGFzcyBDOiBwYXNzICAgICAgICMgYSBjbGFzcyB3aXRoIG5vIG1ldGhvZHMgKHlldClcbicsCiAgJ3Bvd2VyJzogJ1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9IHByaW1hcnkgWyIqKiIgdV9leHByXVxuXG5UaHVzLCBpbiBhbiB1bnBhcmVudGhlc2l6ZWQgc2VxdWVuY2Ugb2YgcG93ZXIgYW5kIHVuYXJ5IG9wZXJhdG9ycywgdGhlXG5vcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgY29uc3RyYWluXG50aGUgZXZhbHVhdGlvbiBvcmRlciBmb3IgdGhlIG9wZXJhbmRzKTogYGAtMSoqMmBgIHJlc3VsdHMgaW4gYGAtMWBgLlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gYGBwb3coKWBgXG5mdW5jdGlvbiwgd2hlbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiBpdCB5aWVsZHMgaXRzIGxlZnQgYXJndW1lbnRcbnJhaXNlZCB0byB0aGUgcG93ZXIgb2YgaXRzIHJpZ2h0IGFyZ3VtZW50LiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZVxuZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgdHlwZS5cblxuRm9yIGludCBvcGVyYW5kcywgdGhlIHJlc3VsdCBoYXMgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb3BlcmFuZHMgdW5sZXNzXG50aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5lZ2F0aXZlOyBpbiB0aGF0IGNhc2UsIGFsbCBhcmd1bWVudHMgYXJlXG5jb252ZXJ0ZWQgdG8gZmxvYXQgYW5kIGEgZmxvYXQgcmVzdWx0IGlzIGRlbGl2ZXJlZC4gRm9yIGV4YW1wbGUsXG5gYDEwKioyYGAgcmV0dXJucyBgYDEwMGBgLCBidXQgYGAxMCoqLTJgYCByZXR1cm5zIGBgMC4wMWBgLlxuXG5SYWlzaW5nIGBgMC4wYGAgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGFcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYC4gUmFpc2luZyBhIG5lZ2F0aXZlIG51bWJlciB0byBhIGZyYWN0aW9uYWwgcG93ZXJcbnJlc3VsdHMgaW4gYSBgYGNvbXBsZXhgYCBudW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhXG5gYFZhbHVlRXJyb3JgYC4pXG4nLAogICdyYWlzZSc6ICdcblRoZSBgYHJhaXNlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCBgYHJhaXNlYGAgcmUtcmFpc2VzIHRoZSBsYXN0IGV4Y2VwdGlvblxudGhhdCB3YXMgYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYgbm8gZXhjZXB0aW9uIGlzIGFjdGl2ZSBpblxudGhlIGN1cnJlbnQgc2NvcGUsIGEgYGBSdW50aW1lRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkIGluZGljYXRpbmdcbnRoYXQgdGhpcyBpcyBhbiBlcnJvci5cblxuT3RoZXJ3aXNlLCBgYHJhaXNlYGAgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbmBgQmFzZUV4Y2VwdGlvbmBgLiBJZiBpdCBpcyBhIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIHdpbGwgYmVcbm9idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuXG5UaGUgKnR5cGUqIG9mIHRoZSBleGNlcHRpb24gaXMgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZVwncyBjbGFzcywgdGhlXG4qdmFsdWUqIGlzIHRoZSBpbnN0YW5jZSBpdHNlbGYuXG5cbkEgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiBleGNlcHRpb25cbmlzIHJhaXNlZCBhbmQgYXR0YWNoZWQgdG8gaXQgYXMgdGhlIGBgX190cmFjZWJhY2tfX2BgIGF0dHJpYnV0ZSwgd2hpY2hcbmlzIHdyaXRhYmxlLiBZb3UgY2FuIGNyZWF0ZSBhbiBleGNlcHRpb24gYW5kIHNldCB5b3VyIG93biB0cmFjZWJhY2sgaW5cbm9uZSBzdGVwIHVzaW5nIHRoZSBgYHdpdGhfdHJhY2ViYWNrKClgYCBleGNlcHRpb24gbWV0aG9kICh3aGljaFxucmV0dXJucyB0aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzXG5hcmd1bWVudCksIGxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgYGBmcm9tYGAgY2xhdXNlIGlzIHVzZWQgZm9yIGV4Y2VwdGlvbiBjaGFpbmluZzogaWYgZ2l2ZW4sIHRoZVxuc2Vjb25kICpleHByZXNzaW9uKiBtdXN0IGJlIGFub3RoZXIgZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLCB3aGljaFxud2lsbCB0aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSBgYF9fY2F1c2VfX2BgXG5hdHRyaWJ1dGUgKHdoaWNoIGlzIHdyaXRhYmxlKS4gIElmIHRoZSByYWlzZWQgZXhjZXB0aW9uIGlzIG5vdFxuaGFuZGxlZCwgYm90aCBleGNlcHRpb25zIHdpbGwgYmUgcHJpbnRlZDpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6XG4gICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpIGZyb20gZXhjXG4gICAuLi5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbiAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cblxuICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkEgc2ltaWxhciBtZWNoYW5pc20gd29ya3MgaW1wbGljaXRseSBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGluc2lkZVxuYW4gZXhjZXB0aW9uIGhhbmRsZXI6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXMgdGhlbiBhdHRhY2hlZCBhcyB0aGVcbm5ldyBleGNlcHRpb25cJ3MgYGBfX2NvbnRleHRfX2BgIGF0dHJpYnV0ZTpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0OlxuICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuICAgLi4uXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4gICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG5cbiAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgaGFuZGxpbmcgZXhjZXB0aW9ucyBpcyBpbiBzZWN0aW9uXG4qVGhlIHRyeSBzdGF0ZW1lbnQqLlxuJywKLSAncmV0dXJuJzogJ1xuVGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG5cbmBgcmV0dXJuYGAgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBmdW5jdGlvblxuZGVmaW5pdGlvbiwgbm90IHdpdGhpbiBhIG5lc3RlZCBjbGFzcyBkZWZpbml0aW9uLlxuXG5JZiBhbiBleHByZXNzaW9uIGxpc3QgaXMgcHJlc2VudCwgaXQgaXMgZXZhbHVhdGVkLCBlbHNlIGBgTm9uZWBgIGlzXG5zdWJzdGl0dXRlZC5cblxuYGByZXR1cm5gYCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3RcbihvciBgYE5vbmVgYCkgYXMgcmV0dXJuIHZhbHVlLlxuXG5XaGVuIGBgcmV0dXJuYGAgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgYGB0cnlgYCBzdGF0ZW1lbnQgd2l0aCBhXG5gYGZpbmFsbHlgYCBjbGF1c2UsIHRoYXQgYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHlcbmxlYXZpbmcgdGhlIGZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50IGlzIG5vdCBhbGxvd2VkIHRvXG5pbmNsdWRlIGFuIGBgZXhwcmVzc2lvbl9saXN0YGAuICBJbiB0aGF0IGNvbnRleHQsIGEgYmFyZSBgYHJldHVybmBgXG5pbmRpY2F0ZXMgdGhhdCB0aGUgZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgYGBTdG9wSXRlcmF0aW9uYGBcbnRvIGJlIHJhaXNlZC5cbicsCisgJ3JldHVybic6ICdcblRoZSBgYHJldHVybmBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG5gYHJldHVybmBgIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb25cbmRlZmluaXRpb24sIG5vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cblxuSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSBgYE5vbmVgYCBpc1xuc3Vic3RpdHV0ZWQuXG5cbmBgcmV0dXJuYGAgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0XG4ob3IgYGBOb25lYGApIGFzIHJldHVybiB2YWx1ZS5cblxuV2hlbiBgYHJldHVybmBgIHBhc3NlcyBjb250cm9sIG91dCBvZiBhIGBgdHJ5YGAgc3RhdGVtZW50IHdpdGggYVxuYGBmaW5hbGx5YGAgY2xhdXNlLCB0aGF0IGBgZmluYWxseWBgIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5sZWF2aW5nIHRoZSBmdW5jdGlvbi5cblxuSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSBgYHJldHVybmBgIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGVcbmdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlIGBgU3RvcEl0ZXJhdGlvbmBgIHRvIGJlIHJhaXNlZC4gVGhlXG5yZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuYGBTdG9wSXRlcmF0aW9uYGAgYW5kIGJlY29tZXMgdGhlIGBgU3RvcEl0ZXJhdGlvbi52YWx1ZWBgIGF0dHJpYnV0ZS5cbicsCiAgJ3NlcXVlbmNlLXR5cGVzJzogIlxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCBgYDAgPD0gayA8IE5gYFxud2hlcmUgKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaFxuZGVmaW5lIGEgcmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZVxudGhlIG1ldGhvZHMgYGBrZXlzKClgYCwgYGB2YWx1ZXMoKWBgLCBgYGl0ZW1zKClgYCwgYGBnZXQoKWBgLFxuYGBjbGVhcigpYGAsIGBgc2V0ZGVmYXVsdCgpYGAsIGBgcG9wKClgYCwgYGBwb3BpdGVtKClgYCwgYGBjb3B5KClgYCxcbmFuZCBgYHVwZGF0ZSgpYGAgYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmRcbmRpY3Rpb25hcnkgb2JqZWN0cy4gIFRoZSBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlIHByb3ZpZGVzIGFcbmBgTXV0YWJsZU1hcHBpbmdgYCBhYnN0cmFjdCBiYXNlIGNsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHNcbmZyb20gYSBiYXNlIHNldCBvZiBgYF9fZ2V0aXRlbV9fKClgYCwgYGBfX3NldGl0ZW1fXygpYGAsXG5gYF9fZGVsaXRlbV9fKClgYCwgYW5kIGBga2V5cygpYGAuIE11dGFibGUgc2VxdWVuY2VzIHNob3VsZCBwcm92aWRlXG5tZXRob2RzIGBgYXBwZW5kKClgYCwgYGBjb3VudCgpYGAsIGBgaW5kZXgoKWBgLCBgYGV4dGVuZCgpYGAsXG5gYGluc2VydCgpYGAsIGBgcG9wKClgYCwgYGByZW1vdmUoKWBgLCBgYHJldmVyc2UoKWBgIGFuZCBgYHNvcnQoKWBgLFxubGlrZSBQeXRob24gc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkXG5pbXBsZW1lbnQgYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uIChtZWFuaW5nXG5yZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyBgYF9fYWRkX18oKWBgLCBgYF9fcmFkZF9fKClgYCxcbmBgX19pYWRkX18oKWBgLCBgYF9fbXVsX18oKWBgLCBgYF9fcm11bF9fKClgYCBhbmQgYGBfX2ltdWxfXygpYGBcbmRlc2NyaWJlZCBiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgSXRcbmlzIHJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19jb250YWluc19fKClgYCBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgYGBpbmBgXG5vcGVyYXRvcjsgZm9yIG1hcHBpbmdzLCBgYGluYGAgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZydzIGtleXM7IGZvclxuc2VxdWVuY2VzLCBpdCBzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXJcbnJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19pdGVyX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlXG5jb250YWluZXI7IGZvciBtYXBwaW5ncywgYGBfX2l0ZXJfXygpYGAgc2hvdWxkIGJlIHRoZSBzYW1lIGFzXG5gYGtleXMoKWBgOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgaXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYC4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciBgYD49YGAgMC4gIEFsc28sIGFuIG9iamVjdFxuICAgdGhhdCBkb2Vzbid0IGRlZmluZSBhIGBgX19ib29sX18oKWBgIG1ldGhvZCBhbmQgd2hvc2UgYGBfX2xlbl9fKClgYFxuICAgbWV0aG9kIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBXG4gIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoXG4gIGBgTm9uZWBgLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgYGBzZWxmW2tleV1gYC4gRm9yIHNlcXVlbmNlXG4gICB0eXBlcywgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLlxuICAgTm90ZSB0aGF0IHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZVxuICAgY2xhc3Mgd2lzaGVzIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGVcbiAgIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC4gSWYgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLFxuICAgYGBUeXBlRXJyb3JgYCBtYXkgYmUgcmFpc2VkOyBpZiBvZiBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZlxuICAgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnkgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZlxuICAgbmVnYXRpdmUgdmFsdWVzKSwgYGBJbmRleEVycm9yYGAgc2hvdWxkIGJlIHJhaXNlZC4gRm9yIG1hcHBpbmdcbiAgIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlIGNvbnRhaW5lciksIGBgS2V5RXJyb3JgYFxuICAgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogYGBmb3JgYCBsb29wcyBleHBlY3QgdGhhdCBhbiBgYEluZGV4RXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlIGBgX19nZXRpdGVtX18oKWBgXG4gICBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLCBhbmQgc2hvdWxkIGFsc28gYmUgbWFkZVxuICAgYXZhaWxhYmxlIGFzIHRoZSBtZXRob2QgYGBrZXlzKClgYC5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlIGBgX19yZXZlcnNlZF9fKClgYCBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGVcbiAgIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZVxuICAgcHJvdG9jb2wgKGBgX19sZW5fXygpYGAgYW5kIGBgX19nZXRpdGVtX18oKWBgKS4gIE9iamVjdHMgdGhhdFxuICAgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgYGBfX3JldmVyc2VkX18oKWBgIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpc1xuICAgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5IGBgcmV2ZXJzZWQoKWBgLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoYGBpbmBgIGFuZCBgYG5vdCBpbmBgKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvbid0IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAsIHRoZSBtZW1iZXJzaGlwXG4gICB0ZXN0IGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgYGBfX2l0ZXJfXygpYGAsIHRoZW4gdGhlIG9sZFxuICAgc2VxdWVuY2UgaXRlcmF0aW9uIHByb3RvY29sIHZpYSBgYF9fZ2V0aXRlbV9fKClgYCwgc2VlICp0aGlzXG4gICBzZWN0aW9uIGluIHRoZSBsYW5ndWFnZSByZWZlcmVuY2UqLlxuIiwKICAnc2hpZnRpbmcnOiAnXG5TaGlmdGluZyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xub3BlcmF0aW9uczpcblxuICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG5cblRoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGRpdmlzaW9uIGJ5IGBgcG93KDIsbilgYC4gIEFcbmxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoIGBgcG93KDIsbilgYC5cblxuTm90ZTogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXMgcmVxdWlyZWQgdG9cbiAgYmUgYXQgbW9zdCBgYHN5cy5tYXhzaXplYGAuICBJZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzIGxhcmdlclxuICB0aGFuIGBgc3lzLm1heHNpemVgYCBhbiBgYE92ZXJmbG93RXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLlxuJywKICAnc2xpY2luZ3MnOiAnXG5TbGljaW5nc1xuKioqKioqKipcblxuQSBzbGljaW5nIHNlbGVjdHMgYSByYW5nZSBvZiBpdGVtcyBpbiBhIHNlcXVlbmNlIG9iamVjdCAoZS5nLiwgYVxuc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFNsaWNpbmdzIG1heSBiZSB1c2VkIGFzIGV4cHJlc3Npb25zIG9yIGFzXG50YXJnZXRzIGluIGFzc2lnbm1lbnQgb3IgYGBkZWxgYCBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYVxuc2xpY2luZzpcblxuICAgc2xpY2luZyAgICAgIDo6PSBwcmltYXJ5ICJbIiBzbGljZV9saXN0ICJdIlxuICAgc2xpY2VfbGlzdCAgIDo6PSBzbGljZV9pdGVtICgiLCIgc2xpY2VfaXRlbSkqIFsiLCJdXG4gICBzbGljZV9pdGVtICAgOjo9IGV4cHJlc3Npb24gfCBwcm9wZXJfc2xpY2VcbiAgIHByb3Blcl9zbGljZSA6Oj0gW2xvd2VyX2JvdW5kXSAiOiIgW3VwcGVyX2JvdW5kXSBbICI6IiBbc3RyaWRlXSBdXG4gICBsb3dlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbiAgIHVwcGVyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgc3RyaWRlICAgICAgIDo6PSBleHByZXNzaW9uXG5cblRoZXJlIGlzIGFtYmlndWl0eSBpbiB0aGUgZm9ybWFsIHN5bnRheCBoZXJlOiBhbnl0aGluZyB0aGF0IGxvb2tzIGxpa2VcbmFuIGV4cHJlc3Npb24gbGlzdCBhbHNvIGxvb2tzIGxpa2UgYSBzbGljZSBsaXN0LCBzbyBhbnkgc3Vic2NyaXB0aW9uXG5jYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzbGljaW5nLiAgUmF0aGVyIHRoYW4gZnVydGhlciBjb21wbGljYXRpbmcgdGhlXG5zeW50YXgsIHRoaXMgaXMgZGlzYW1iaWd1YXRlZCBieSBkZWZpbmluZyB0aGF0IGluIHRoaXMgY2FzZSB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc3Vic2NyaXB0aW9uIHRha2VzIHByaW9yaXR5IG92ZXIgdGhlXG5pbnRlcnByZXRhdGlvbiBhcyBhIHNsaWNpbmcgKHRoaXMgaXMgdGhlIGNhc2UgaWYgdGhlIHNsaWNlIGxpc3RcbmNvbnRhaW5zIG5vIHByb3BlciBzbGljZSkuXG5cblRoZSBzZW1hbnRpY3MgZm9yIGEgc2xpY2luZyBhcmUgYXMgZm9sbG93cy4gIFRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGVcbnRvIGEgbWFwcGluZyBvYmplY3QsIGFuZCBpdCBpcyBpbmRleGVkICh1c2luZyB0aGUgc2FtZVxuYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kIGFzIG5vcm1hbCBzdWJzY3JpcHRpb24pIHdpdGggYSBrZXkgdGhhdCBpc1xuY29uc3RydWN0ZWQgZnJvbSB0aGUgc2xpY2UgbGlzdCwgYXMgZm9sbG93cy4gIElmIHRoZSBzbGljZSBsaXN0XG5jb250YWlucyBhdCBsZWFzdCBvbmUgY29tbWEsIHRoZSBrZXkgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZVxuY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGxvbmVcbnNsaWNlIGl0ZW0gaXMgdGhlIGtleS4gIFRoZSBjb252ZXJzaW9uIG9mIGEgc2xpY2UgaXRlbSB0aGF0IGlzIGFuXG5leHByZXNzaW9uIGlzIHRoYXQgZXhwcmVzc2lvbi4gIFRoZSBjb252ZXJzaW9uIG9mIGEgcHJvcGVyIHNsaWNlIGlzIGFcbnNsaWNlIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIHdob3NlXG5gYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzIGFyZSB0aGUgdmFsdWVzIG9mIHRoZVxuZXhwcmVzc2lvbnMgZ2l2ZW4gYXMgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIGFuZCBzdHJpZGUsXG5yZXNwZWN0aXZlbHksIHN1YnN0aXR1dGluZyBgYE5vbmVgYCBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCi0gJ3NwZWNpYWxhdHRycyc6ICdcblNwZWNpYWwgQXR0cmlidXRlc1xuKioqKioqKioqKioqKioqKioqXG5cblRoZSBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgZmV3IHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXMgdG8gc2V2ZXJhbFxub2JqZWN0IHR5cGVzLCB3aGVyZSB0aGV5IGFyZSByZWxldmFudC4gIFNvbWUgb2YgdGhlc2UgYXJlIG5vdCByZXBvcnRlZFxuYnkgdGhlIGBgZGlyKClgYCBidWlsdC1pbiBmdW5jdGlvbi5cblxub2JqZWN0Ll9fZGljdF9fXG5cbiAgIEEgZGljdGlvbmFyeSBvciBvdGhlciBtYXBwaW5nIG9iamVjdCB1c2VkIHRvIHN0b3JlIGFuIG9iamVjdFwnc1xuICAgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzLlxuXG5pbnN0YW5jZS5fX2NsYXNzX19cblxuICAgVGhlIGNsYXNzIHRvIHdoaWNoIGEgY2xhc3MgaW5zdGFuY2UgYmVsb25ncy5cblxuY2xhc3MuX19iYXNlc19fXG5cbiAgIFRoZSB0dXBsZSBvZiBiYXNlIGNsYXNzZXMgb2YgYSBjbGFzcyBvYmplY3QuXG5cbmNsYXNzLl9fbmFtZV9fXG5cbiAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyBvciB0eXBlLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gYGBfX21yb19fYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kIGluXG4gICAgdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgYGBbMSwgMl1gYCBpcyBjb25zaWRlcmVkIGVxdWFsIHRvXG4gICAgYGBbMS4wLCAyLjBdYGAsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHkgYmVpbmdcbiAgICBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksIG9yICJMdCJcbiAgICAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGEgc2luZ2xldG9uXG4gICAgdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiAnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgYGBfX2dldGl0ZW1fXygpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzXG5jbGFzcywgdGhlbiBgYHhbaV1gYCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gYGB0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsXG5pKWBgLiAgRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2VcbmFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbmBgQXR0cmlidXRlRXJyb3JgYCBvciBgYFR5cGVFcnJvcmBgKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG5gYE5vZGVMaXN0YGAgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYGBpZCh4KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBTZWUgYWxzbyB0aGUgKi1SKiBjb21tYW5kLWxpbmUgb3B0aW9uLlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gIEEgbGlzdCBtdXN0IGJlXG4gICByZXR1cm5lZC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIGBgdHlwZSgpYGAuIEEgY2xhc3NcbmRlZmluaXRpb24gaXMgcmVhZCBpbnRvIGEgc2VwYXJhdGUgbmFtZXNwYWNlIGFuZCB0aGUgdmFsdWUgb2YgY2xhc3Ncbm5hbWUgaXMgYm91bmQgdG8gdGhlIHJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIGRpY3QpYGAuXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgcmVhZCwgaWYgYSBjYWxsYWJsZSBgYG1ldGFjbGFzc2BgIGtleXdvcmRcbmFyZ3VtZW50IGlzIHBhc3NlZCBhZnRlciB0aGUgYmFzZXMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIHRoZVxuY2FsbGFibGUgZ2l2ZW4gd2lsbCBiZSBjYWxsZWQgaW5zdGVhZCBvZiBgYHR5cGUoKWBgLiAgSWYgb3RoZXIga2V5d29yZFxuYXJndW1lbnRzIGFyZSBwYXNzZWQsIHRoZXkgd2lsbCBhbHNvIGJlIHBhc3NlZCB0byB0aGUgbWV0YWNsYXNzLiAgVGhpc1xuYWxsb3dzIGNsYXNzZXMgb3IgZnVuY3Rpb25zIHRvIGJlIHdyaXR0ZW4gd2hpY2ggbW9uaXRvciBvciBhbHRlciB0aGVcbmNsYXNzIGNyZWF0aW9uIHByb2Nlc3M6XG5cbiogTW9kaWZ5aW5nIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IHByaW9yIHRvIHRoZSBjbGFzcyBiZWluZyBjcmVhdGVkLlxuXG4qIFJldHVybmluZyBhbiBpbnN0YW5jZSBvZiBhbm90aGVyIGNsYXNzIC0tIGVzc2VudGlhbGx5IHBlcmZvcm1pbmcgdGhlXG4gIHJvbGUgb2YgYSBmYWN0b3J5IGZ1bmN0aW9uLlxuXG5UaGVzZSBzdGVwcyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGluIHRoZSBtZXRhY2xhc3NcJ3MgYGBfX25ld19fKClgYFxubWV0aG9kIC0tIGBgdHlwZS5fX25ld19fKClgYCBjYW4gdGhlbiBiZSBjYWxsZWQgZnJvbSB0aGlzIG1ldGhvZCB0b1xuY3JlYXRlIGEgY2xhc3Mgd2l0aCBkaWZmZXJlbnQgcHJvcGVydGllcy4gIFRoaXMgZXhhbXBsZSBhZGRzIGEgbmV3XG5lbGVtZW50IHRvIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGJlZm9yZSBjcmVhdGluZyB0aGUgY2xhc3M6XG5cbiAgIGNsYXNzIG1ldGFjbHModHlwZSk6XG4gICAgICAgZGVmIF9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGljdCk6XG4gICAgICAgICAgIGRpY3RbXCdmb29cJ10gPSBcJ21ldGFjbHMgd2FzIGhlcmVcJ1xuICAgICAgICAgICByZXR1cm4gdHlwZS5fX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRpY3QpXG5cbllvdSBjYW4gb2YgY291cnNlIGFsc28gb3ZlcnJpZGUgb3RoZXIgY2xhc3MgbWV0aG9kcyAob3IgYWRkIG5ld1xubWV0aG9kcyk7IGZvciBleGFtcGxlIGRlZmluaW5nIGEgY3VzdG9tIGBgX19jYWxsX18oKWBgIG1ldGhvZCBpbiB0aGVcbm1ldGFjbGFzcyBhbGxvd3MgY3VzdG9tIGJlaGF2aW9yIHdoZW4gdGhlIGNsYXNzIGlzIGNhbGxlZCwgZS5nLiBub3RcbmFsd2F5cyBjcmVhdGluZyBhIG5ldyBpbnN0YW5jZS5cblxuSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSBgYF9fcHJlcGFyZV9fKClgYCBhdHRyaWJ1dGUgKHVzdWFsbHlcbmltcGxlbWVudGVkIGFzIGEgY2xhc3Mgb3Igc3RhdGljIG1ldGhvZCksIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhlXG5jbGFzcyBib2R5IGlzIGV2YWx1YXRlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBhbmQgYSB0dXBsZSBvZiBpdHNcbmJhc2VzIGZvciBhcmd1bWVudHMuICBJdCBzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZVxubWFwcGluZyBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgdGhlIG5hbWVzcGFjZSBvZiB0aGVcbmNsYXNzLiAgVGhlIGRlZmF1bHQgaXMgYSBwbGFpbiBkaWN0aW9uYXJ5LiAgVGhpcyBjb3VsZCBiZSB1c2VkLCBmb3JcbmV4YW1wbGUsIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG9yZGVyIHRoYXQgY2xhc3MgYXR0cmlidXRlcyBhcmUgZGVjbGFyZWRcbmluIGJ5IHJldHVybmluZyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuXG5cblRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZm9sbG93aW5nIHByZWNlZGVuY2VcbnJ1bGVzOlxuXG4qIElmIHRoZSBgYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQgaXMgcGFzc2VkIHdpdGggdGhlIGJhc2VzLCBpdFxuICBpcyB1c2VkLlxuXG4qIE90aGVyd2lzZSwgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGJhc2UgY2xhc3MsIGl0cyBtZXRhY2xhc3MgaXNcbiAgdXNlZC5cblxuKiBPdGhlcndpc2UsIHRoZSBkZWZhdWx0IG1ldGFjbGFzcyAoYGB0eXBlYGApIGlzIHVzZWQuXG5cblRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmVcbmJlZW4gZXhwbG9yZWQgaW5jbHVkaW5nIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG5gYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgbWVtYmVyc1xud2VyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBjbGFzc2RpY3QpOlxuICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgZGljdChjbGFzc2RpY3QpKVxuICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKGNsYXNzZGljdClcbiAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuXG4gICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOlxuICAgICAgIGRlZiBvbmUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdHdvKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHRocmVlKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIGZvdXIoc2VsZik6IHBhc3NcblxuICAgPj4+IEEubWVtYmVyc1xuICAgKFwnX19tb2R1bGVfX1wnLCBcJ29uZVwnLCBcJ3R3b1wnLCBcJ3RocmVlXCcsIFwnZm91clwnKVxuXG5XaGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIGZvciAqQSogZ2V0cyBleGVjdXRlZCwgdGhlIHByb2Nlc3MgYmVnaW5zXG53aXRoIGNhbGxpbmcgdGhlIG1ldGFjbGFzc1wncyBgYF9fcHJlcGFyZV9fKClgYCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhblxuZW1wdHkgYGBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGBgLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlIG1ldGhvZHNcbmFuZCBhdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3NcbnN0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkIGRpY3Rpb25hcnlcbmlzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyBgYF9fbmV3X18oKWBgIG1ldGhvZCBnZXRzXG5pbnZva2VkLiAgVGhhdCBtZXRob2QgYnVpbGRzIHRoZSBuZXcgdHlwZSBhbmQgaXQgc2F2ZXMgdGhlIG9yZGVyZWRcbmRpY3Rpb25hcnkga2V5cyBpbiBhbiBhdHRyaWJ1dGUgY2FsbGVkIGBgbWVtYmVyc2BgLlxuXG5cbkN1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuYGBpc2luc3RhbmNlKClgYCBhbmQgYGBpc3N1YmNsYXNzKClgYCBidWlsdC1pbiBmdW5jdGlvbnMuXG5cbkluIHBhcnRpY3VsYXIsIHRoZSBtZXRhY2xhc3MgYGBhYmMuQUJDTWV0YWBgIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kc1xuaW4gb3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgYGBpc2luc3RhbmNlKGluc3RhbmNlLCBjbGFzcylgYC5cblxuY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG5cbiAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgIGBgaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpYGAuXG5cbk5vdGUgdGhhdCB0aGVzZSBtZXRob2RzIGFyZSBsb29rZWQgdXAgb24gdGhlIHR5cGUgKG1ldGFjbGFzcykgb2YgYVxuY2xhc3MuICBUaGV5IGNhbm5vdCBiZSBkZWZpbmVkIGFzIGNsYXNzIG1ldGhvZHMgaW4gdGhlIGFjdHVhbCBjbGFzcy5cblRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBsb29rdXAgb2Ygc3BlY2lhbCBtZXRob2RzIHRoYXQgYXJlIGNhbGxlZFxub24gaW5zdGFuY2VzLCBvbmx5IGluIHRoaXMgY2FzZSB0aGUgaW5zdGFuY2UgaXMgaXRzZWxmIGEgY2xhc3MuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE5KiogLSBJbnRyb2R1Y2luZyBBYnN0cmFjdCBCYXNlIENsYXNzZXNcbiAgICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyBgYGlzaW5zdGFuY2UoKWBgIGFuZFxuICAgICAgYGBpc3N1YmNsYXNzKClgYCBiZWhhdmlvciB0aHJvdWdoIGBgX19pbnN0YW5jZWNoZWNrX18oKWBgIGFuZFxuICAgICAgYGBfX3N1YmNsYXNzY2hlY2tfXygpYGAsIHdpdGggbW90aXZhdGlvbiBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5XG4gICAgICBpbiB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlIGBgYWJjYGBcbiAgICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuXG5cbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsIGBgeChhcmcxLCBhcmcyLCAuLi4pYGAgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICBgYHguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKWBgLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggYGAwIDw9IGsgPCBOYGBcbndoZXJlICpOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2hcbmRlZmluZSBhIHJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGVcbnRoZSBtZXRob2RzIGBga2V5cygpYGAsIGBgdmFsdWVzKClgYCwgYGBpdGVtcygpYGAsIGBgZ2V0KClgYCxcbmBgY2xlYXIoKWBgLCBgYHNldGRlZmF1bHQoKWBgLCBgYHBvcCgpYGAsIGBgcG9waXRlbSgpYGAsIGBgY29weSgpYGAsXG5hbmQgYGB1cGRhdGUoKWBgIGJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvblwncyBzdGFuZGFyZFxuZGljdGlvbmFyeSBvYmplY3RzLiAgVGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUgcHJvdmlkZXMgYVxuYGBNdXRhYmxlTWFwcGluZ2BgIGFic3RyYWN0IGJhc2UgY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kc1xuZnJvbSBhIGJhc2Ugc2V0IG9mIGBgX19nZXRpdGVtX18oKWBgLCBgYF9fc2V0aXRlbV9fKClgYCxcbmBgX19kZWxpdGVtX18oKWBgLCBhbmQgYGBrZXlzKClgYC4gTXV0YWJsZSBzZXF1ZW5jZXMgc2hvdWxkIHByb3ZpZGVcbm1ldGhvZHMgYGBhcHBlbmQoKWBgLCBgYGNvdW50KClgYCwgYGBpbmRleCgpYGAsIGBgZXh0ZW5kKClgYCxcbmBgaW5zZXJ0KClgYCwgYGBwb3AoKWBgLCBgYHJlbW92ZSgpYGAsIGBgcmV2ZXJzZSgpYGAgYW5kIGBgc29ydCgpYGAsXG5saWtlIFB5dGhvbiBzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGRcbmltcGxlbWVudCBhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzIGBgX19hZGRfXygpYGAsIGBgX19yYWRkX18oKWBgLFxuYGBfX2lhZGRfXygpYGAsIGBgX19tdWxfXygpYGAsIGBgX19ybXVsX18oKWBgIGFuZCBgYF9faW11bF9fKClgYFxuZGVzY3JpYmVkIGJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdFxuaXMgcmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSBgYGluYGBcbm9wZXJhdG9yOyBmb3IgbWFwcGluZ3MsIGBgaW5gYCBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvclxuc2VxdWVuY2VzLCBpdCBzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXJcbnJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19pdGVyX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlXG5jb250YWluZXI7IGZvciBtYXBwaW5ncywgYGBfX2l0ZXJfXygpYGAgc2hvdWxkIGJlIHRoZSBzYW1lIGFzXG5gYGtleXMoKWBgOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgaXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYC4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciBgYD49YGAgMC4gIEFsc28sIGFuIG9iamVjdFxuICAgdGhhdCBkb2VzblwndCBkZWZpbmUgYSBgYF9fYm9vbF9fKClgYCBtZXRob2QgYW5kIHdob3NlIGBgX19sZW5fXygpYGBcbiAgIG1ldGhvZCByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLiAgQVxuICBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aFxuICBgYE5vbmVgYC5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mIGBgc2VsZltrZXldYGAuIEZvciBzZXF1ZW5jZVxuICAgdHlwZXMsIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2Ugb2JqZWN0cy5cbiAgIE5vdGUgdGhhdCB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGVcbiAgIGNsYXNzIHdpc2hlcyB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlXG4gICBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuIElmICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSxcbiAgIGBgVHlwZUVycm9yYGAgbWF5IGJlIHJhaXNlZDsgaWYgb2YgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2ZcbiAgIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55IHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2ZcbiAgIG5lZ2F0aXZlIHZhbHVlcyksIGBgSW5kZXhFcnJvcmBgIHNob3VsZCBiZSByYWlzZWQuIEZvciBtYXBwaW5nXG4gICB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluIHRoZSBjb250YWluZXIpLCBgYEtleUVycm9yYGBcbiAgIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6IGBgZm9yYGAgbG9vcHMgZXhwZWN0IHRoYXQgYW4gYGBJbmRleEVycm9yYGAgd2lsbCBiZSByYWlzZWQgZm9yXG4gICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgdGhlXG4gICAgIHNlcXVlbmNlLlxuXG5vYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvIGBgc2VsZltrZXldYGAuICBTYW1lIG5vdGUgYXMgZm9yXG4gICBgYF9fZ2V0aXRlbV9fKClgYC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLlxuXG5vYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mIGBgc2VsZltrZXldYGAuICBTYW1lIG5vdGUgYXMgZm9yXG4gICBgYF9fZ2V0aXRlbV9fKClgYC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSBgYF9fZ2V0aXRlbV9fKClgYFxuICAgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lciwgYW5kIHNob3VsZCBhbHNvIGJlIG1hZGVcbiAgIGF2YWlsYWJsZSBhcyB0aGUgbWV0aG9kIGBga2V5cygpYGAuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSBgYF9fcmV2ZXJzZWRfXygpYGAgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlXG4gICBgYHJldmVyc2VkKClgYCBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2VcbiAgIHByb3RvY29sIChgYF9fbGVuX18oKWBgIGFuZCBgYF9fZ2V0aXRlbV9fKClgYCkuICBPYmplY3RzIHRoYXRcbiAgIHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sIHNob3VsZCBvbmx5IHByb3ZpZGVcbiAgIGBgX19yZXZlcnNlZF9fKClgYCBpZiB0aGV5IGNhbiBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgaXNcbiAgIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSBwcm92aWRlZCBieSBgYHJldmVyc2VkKClgYC5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKGBgaW5gYCBhbmQgYGBub3QgaW5gYCkgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lIGBgX19jb250YWluc19fKClgYCwgdGhlIG1lbWJlcnNoaXBcbiAgIHRlc3QgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSBgYF9faXRlcl9fKClgYCwgdGhlbiB0aGUgb2xkXG4gICBzZXF1ZW5jZSBpdGVyYXRpb24gcHJvdG9jb2wgdmlhIGBgX19nZXRpdGVtX18oKWBgLCBzZWUgKnRoaXNcbiAgIHNlY3Rpb24gaW4gdGhlIGxhbmd1YWdlIHJlZmVyZW5jZSouXG5cblxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZVxuICAgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2FkZF9fKClgYCBtZXRob2QsXG4gICBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZSBgYF9fZGl2bW9kX18oKWBgIG1ldGhvZCBzaG91bGQgYmVcbiAgIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgX19mbG9vcmRpdl9fKClgYCBhbmQgYGBfX21vZF9fKClgYDsgaXRcbiAgIHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byBgYF9fdHJ1ZWRpdl9fKClgYC4gIE5vdGUgdGhhdFxuICAgYGBfX3Bvd19fKClgYCBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluIGBgcG93KClgYCBmdW5jdGlvblxuICAgaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5XG4gICBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nXG4gICBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLiBbMl0gIEZvclxuICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuXG4gICBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19yc3ViX18oKWBgIG1ldGhvZCxcbiAgIGBgeS5fX3JzdWJfXyh4KWBgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5IGBgcG93KClgYCB3aWxsIG5vdCB0cnkgY2FsbGluZyBgYF9fcnBvd19fKClgYFxuICAgKHRoZSBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmRcJ3NcbiAgICAgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZCBmb3IgdGhlXG4gICAgIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0IG9wZXJhbmRcJ3NcbiAgICAgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzIHRvXG4gICAgIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzIChgYCs9YGAsIGBgLT1gYCwgYGAqPWBgLCBgYC89YGAsIGBgLy89YGAsIGBgJT1gYCxcbiAgIGBgKio9YGAsIGBgPDw9YGAsIGBgPj49YGAsIGBgJj1gYCwgYGBePWBgLCBgYHw9YGApLiAgVGhlc2UgbWV0aG9kc1xuICAgc2hvdWxkIGF0dGVtcHQgdG8gZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kXG4gICByZXR1cm4gdGhlIHJlc3VsdCAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLFxuICAgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkXG4gICBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCB0b1xuICAgZXhlY3V0ZSB0aGUgc3RhdGVtZW50IGBgeCArPSB5YGAsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhXG4gICBjbGFzcyB0aGF0IGhhcyBhbiBgYF9faWFkZF9fKClgYCBtZXRob2QsIGBgeC5fX2lhZGRfXyh5KWBgIGlzXG4gICBjYWxsZWQuICBJZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGRvZXMgbm90IGRlZmluZSBhXG4gICBgYF9faWFkZF9fKClgYCBtZXRob2QsIGBgeC5fX2FkZF9fKHkpYGAgYW5kIGBgeS5fX3JhZGRfXyh4KWBgIGFyZVxuICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiBgYHggKyB5YGAuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoYGAtYGAsIGBgK2BgLFxuICAgYGBhYnMoKWBgIGFuZCBgYH5gYCkuXG5cbm9iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxub2JqZWN0Ll9faW50X18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcbm9iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgYGBjb21wbGV4KClgYCxcbiAgIGBgaW50KClgYCwgYGBmbG9hdCgpYGAgYW5kIGBgcm91bmQoKWBgLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mXG4gICB0aGUgYXBwcm9wcmlhdGUgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGBgb3BlcmF0b3IuaW5kZXgoKWBgLiAgQWxzbyBjYWxsZWQgd2hlbmV2ZXJcbiAgIFB5dGhvbiBuZWVkcyBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaCBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGVcbiAgIGJ1aWx0LWluIGBgYmluKClgYCwgYGBoZXgoKWBgIGFuZCBgYG9jdCgpYGAgZnVuY3Rpb25zKS4gTXVzdCByZXR1cm5cbiAgIGFuIGludGVnZXIuXG5cblxuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSBgYHdpdGhgYCBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0XG5tYW5hZ2VyIGhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lXG5jb250ZXh0IGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmVcbm5vcm1hbGx5IGludm9rZWQgdXNpbmcgdGhlIGBgd2l0aGBgIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb25cbipUaGUgd2l0aCBzdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXJcbm1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIGBgd2l0aGBgXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlIGBgYXNgYCBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSBgYE5vbmVgYC5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgYGBfX2V4aXRfXygpYGAgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvblxuICAgICAgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG5cblNwZWNpYWwgbWV0aG9kIGxvb2t1cFxuPT09PT09PT09PT09PT09PT09PT09XG5cbkZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCBtZXRob2RzIGFyZSBvbmx5XG5ndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0XCdzIHR5cGUsIG5vdCBpblxudGhlIG9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgVGhhdCBiZWhhdmlvdXIgaXMgdGhlIHJlYXNvbiB3aHlcbnRoZSBmb2xsb3dpbmcgY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uOlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgcGFzc1xuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXyA9IGxhbWJkYTogNVxuICAgPj4+IGxlbihjKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBvYmplY3Qgb2YgdHlwZSBcJ0NcJyBoYXMgbm8gbGVuKClcblxuVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mIHNwZWNpYWxcbm1ldGhvZHMgc3VjaCBhcyBgYF9faGFzaF9fKClgYCBhbmQgYGBfX3JlcHJfXygpYGAgdGhhdCBhcmUgaW1wbGVtZW50ZWRcbmJ5IGFsbCBvYmplY3RzLCBpbmNsdWRpbmcgdHlwZSBvYmplY3RzLiBJZiB0aGUgaW1wbGljaXQgbG9va3VwIG9mXG50aGVzZSBtZXRob2RzIHVzZWQgdGhlIGNvbnZlbnRpb25hbCBsb29rdXAgcHJvY2VzcywgdGhleSB3b3VsZCBmYWlsXG53aGVuIGludm9rZWQgb24gdGhlIHR5cGUgb2JqZWN0IGl0c2VsZjpcblxuICAgPj4+IDEgLl9faGFzaF9fKCkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IGludC5fX2hhc2hfXygpID09IGhhc2goaW50KVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBkZXNjcmlwdG9yIFwnX19oYXNoX19cJyBvZiBcJ2ludFwnIG9iamVjdCBuZWVkcyBhbiBhcmd1bWVudFxuXG5JbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhIGNsYXNzIGluIHRoaXNcbndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgXCdtZXRhY2xhc3MgY29uZnVzaW9uXCcsIGFuZCBpcyBhdm9pZGVkXG5ieSBieXBhc3NpbmcgdGhlIGluc3RhbmNlIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHM6XG5cbiAgID4+PiB0eXBlKDEpLl9faGFzaF9fKDEpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiB0eXBlKGludCkuX19oYXNoX18oaW50KSA9PSBoYXNoKGludClcbiAgIFRydWVcblxuSW4gYWRkaXRpb24gdG8gYnlwYXNzaW5nIGFueSBpbnN0YW5jZSBhdHRyaWJ1dGVzIGluIHRoZSBpbnRlcmVzdCBvZlxuY29ycmVjdG5lc3MsIGltcGxpY2l0IHNwZWNpYWwgbWV0aG9kIGxvb2t1cCBnZW5lcmFsbHkgYWxzbyBieXBhc3Nlc1xudGhlIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyBtZXRhY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuICAgLi4uICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICByZXR1cm4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gY2xhc3MgQyhvYmplY3QsIG1ldGFjbGFzcz1NZXRhKTpcbiAgIC4uLiAgICAgZGVmIF9fbGVuX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gMTBcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQoIkNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18oKSAgICAgICAgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIGluc3RhbmNlXG4gICBDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiB0eXBlKGMpLl9fbGVuX18oYykgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIHR5cGVcbiAgIE1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiBsZW4oYykgICAgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdCBsb29rdXBcbiAgIDEwXG5cbkJ5cGFzc2luZyB0aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uXG5wcm92aWRlcyBzaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlXG5pbnRlcnByZXRlciwgYXQgdGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2ZcbnNwZWNpYWwgbWV0aG9kcyAodGhlIHNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdFxuaXRzZWxmIGluIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gSXQgKmlzKiBwb3NzaWJsZSBpbiBzb21lIGNhc2VzIHRvIGNoYW5nZSBhbiBvYmplY3RcJ3MgdHlwZSwgdW5kZXJcbiAgICBjZXJ0YWluIGNvbnRyb2xsZWQgY29uZGl0aW9ucy4gSXQgZ2VuZXJhbGx5IGlzblwndCBhIGdvb2QgaWRlYVxuICAgIHRob3VnaCwgc2luY2UgaXQgY2FuIGxlYWQgdG8gc29tZSB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3VyIGlmIGl0IGlzXG4gICAgaGFuZGxlZCBpbmNvcnJlY3RseS5cblxuWzJdIEZvciBvcGVyYW5kcyBvZiB0aGUgc2FtZSB0eXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIG5vbi1cbiAgICByZWZsZWN0ZWQgbWV0aG9kIChzdWNoIGFzIGBgX19hZGRfXygpYGApIGZhaWxzIHRoZSBvcGVyYXRpb24gaXNcbiAgICBub3Qgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHkgdGhlIHJlZmxlY3RlZCBtZXRob2QgaXMgbm90IGNhbGxlZC5cbicsCi0gJ3N0cmluZy1tZXRob2RzJzogJ1xuU3RyaW5nIE1ldGhvZHNcbioqKioqKioqKioqKioqXG5cblN0cmluZyBvYmplY3RzIHN1cHBvcnQgdGhlIG1ldGhvZHMgbGlzdGVkIGJlbG93LlxuXG5JbiBhZGRpdGlvbiwgUHl0aG9uXCdzIHN0cmluZ3Mgc3VwcG9ydCB0aGUgc2VxdWVuY2UgdHlwZSBtZXRob2RzXG5kZXNjcmliZWQgaW4gdGhlICpTZXF1ZW5jZSBUeXBlcyAtLS0gc3RyLCBieXRlcywgYnl0ZWFycmF5LCBsaXN0LFxudHVwbGUsIHJhbmdlKiBzZWN0aW9uLiBUbyBvdXRwdXQgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgKlN0cmluZ1xuRm9ybWF0dGluZyogc2VjdGlvbi4gQWxzbywgc2VlIHRoZSBgYHJlYGAgbW9kdWxlIGZvciBzdHJpbmcgZnVuY3Rpb25zXG5iYXNlZCBvbiByZWd1bGFyIGV4cHJlc3Npb25zLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG5zdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZVxuICAgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGEgc3BhY2UpLlxuXG5zdHIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqc3ViKlxuICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmRcbiAgICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblxuc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhbiBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyBhcyBhIGJ5dGVzIG9iamVjdC4gRGVmYXVsdFxuICAgZW5jb2RpbmcgaXMgYGBcJ3V0Zi04XCdgYC4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudFxuICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgYGBcJ3N0cmljdFwnYGAsXG4gICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgYGBVbmljb2RlRXJyb3JgYC4gT3RoZXJcbiAgIHBvc3NpYmxlIHZhbHVlcyBhcmUgYGBcJ2lnbm9yZVwnYGAsIGBgXCdyZXBsYWNlXCdgYCxcbiAgIGBgXCd4bWxjaGFycmVmcmVwbGFjZVwnYGAsIGBgXCdiYWNrc2xhc2hyZXBsYWNlXCdgYCBhbmQgYW55IG90aGVyIG5hbWVcbiAgIHJlZ2lzdGVyZWQgdmlhIGBgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKClgYCwgc2VlIHNlY3Rpb24gKkNvZGVjIEJhc2VcbiAgIENsYXNzZXMqLiBGb3IgYSBsaXN0IG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gKlN0YW5kYXJkXG4gICBFbmNvZGluZ3MqLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhZGRlZC5cblxuc3RyLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICpzdWZmaXgqLFxuICAgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mXG4gICBzdWZmaXhlcyB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXRcbiAgIHRoYXQgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi5cblxuc3RyLmV4cGFuZHRhYnMoW3RhYnNpemVdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZFxuICAgYnkgemVybyBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlXG4gICBnaXZlbiB0YWIgc2l6ZS4gIFRoZSBjb2x1bW4gbnVtYmVyIGlzIHJlc2V0IHRvIHplcm8gYWZ0ZXIgZWFjaFxuICAgbmV3bGluZSBvY2N1cnJpbmcgaW4gdGhlIHN0cmluZy4gSWYgKnRhYnNpemUqIGlzIG5vdCBnaXZlbiwgYSB0YWJcbiAgIHNpemUgb2YgYGA4YGAgY2hhcmFjdGVycyBpcyBhc3N1bWVkLiAgVGhpcyBkb2VzblwndCB1bmRlcnN0YW5kIG90aGVyXG4gICBub24tcHJpbnRpbmcgY2hhcmFjdGVycyBvciBlc2NhcGUgc2VxdWVuY2VzLlxuXG5zdHIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgaW4gdGhlIHNsaWNlIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgaWYgKnN1YiogaXMgbm90IGZvdW5kLlxuXG4gICBOb3RlOiBUaGUgYGBmaW5kKClgYCBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byBrbm93IHRoZVxuICAgICBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgc3Vic3RyaW5nIG9yIG5vdCwgdXNlXG4gICAgIHRoZSBgYGluYGAgb3BlcmF0b3I6XG5cbiAgICAgICAgPj4+IFwnUHlcJyBpbiBcJ1B5dGhvblwnXG4gICAgICAgIFRydWVcblxuc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG5cbiAgIFBlcmZvcm0gYSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRpb24uICBUaGUgc3RyaW5nIG9uIHdoaWNoIHRoaXNcbiAgIG1ldGhvZCBpcyBjYWxsZWQgY2FuIGNvbnRhaW4gbGl0ZXJhbCB0ZXh0IG9yIHJlcGxhY2VtZW50IGZpZWxkc1xuICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyBgYHt9YGAuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkIGNvbnRhaW5zIGVpdGhlclxuICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSBvZiBhXG4gICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBlYWNoXG4gICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4gICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuXG4gICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuICAgXCdUaGUgc3VtIG9mIDEgKyAyIGlzIDNcJ1xuXG4gICBTZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuc3RyLmZvcm1hdF9tYXAobWFwcGluZylcblxuICAgU2ltaWxhciB0byBgYHN0ci5mb3JtYXQoKiptYXBwaW5nKWBgLCBleGNlcHQgdGhhdCBgYG1hcHBpbmdgYCBpc1xuICAgdXNlZCBkaXJlY3RseSBhbmQgbm90IGNvcGllZCB0byBhIGBgZGljdGBgIC4gIFRoaXMgaXMgdXNlZnVsIGlmIGZvclxuICAgZXhhbXBsZSBgYG1hcHBpbmdgYCBpcyBhIGRpY3Qgc3ViY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbiAgIC4uLlxuICAgPj4+IFwne25hbWV9IHdhcyBib3JuIGluIHtjb3VudHJ5fVwnLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPVwnR3VpZG9cJykpXG4gICBcJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnlcJ1xuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnN0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgZmluZCgpYGAsIGJ1dCByYWlzZSBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90XG4gICBmb3VuZC5cblxuc3RyLmlzYWxudW0oKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYW51bWVyaWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBIGNoYXJhY3RlclxuICAgYGBjYGAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgYGBUcnVlYGA6XG4gICBgYGMuaXNhbHBoYSgpYGAsIGBgYy5pc2RlY2ltYWwoKWBgLCBgYGMuaXNkaWdpdCgpYGAsIG9yXG4gICBgYGMuaXNudW1lcmljKClgYC5cblxuc3RyLmlzYWxwaGEoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYWJldGljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQWxwaGFiZXRpY1xuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlIHRoYXQgdGhpcyBpc1xuICAgZGlmZmVyZW50IGZyb20gdGhlICJBbHBoYWJldGljIiBwcm9wZXJ0eSBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICBTdGFuZGFyZC5cblxuc3RyLmlzZGVjaW1hbCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRlY2ltYWwgY2hhcmFjdGVyc1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gRGVjaW1hbFxuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgY2F0ZWdvcnlcbiAgIGluY2x1ZGVzIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLlxuXG5zdHIuaXNkaWdpdCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyBhbmQgdGhlcmUgaXNcbiAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIERpZ2l0cyBpbmNsdWRlIGRlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCBhcyB0aGVcbiAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgaXMgYSBjaGFyYWN0ZXJcbiAgIHRoYXQgaGFzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQgb3JcbiAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuXG5zdHIuaXNpZGVudGlmaWVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiAqSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKi5cblxuc3RyLmlzbG93ZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgbG93ZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXNudW1lcmljKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyBjaGFyYWN0ZXJzLFxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gTnVtZXJpY1xuICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmVcbiAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCBWVUxHQVIgRlJBQ1RJT05cbiAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggdGhlXG4gICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsIG9yXG4gICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cblxuc3RyLmlzcHJpbnRhYmxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgcHJpbnRhYmxlIG9yIHRoZVxuICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgY2hhcmFjdGVycyBhcmVcbiAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UgYXNcbiAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgKDB4MjApIHdoaWNoIGlzXG4gICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gdGhpc1xuICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gYGByZXByKClgYCBpc1xuICAgaW52b2tlZCBvbiBhIHN0cmluZy4gIEl0IGhhcyBubyBiZWFyaW5nIG9uIHRoZSBoYW5kbGluZyBvZiBzdHJpbmdzXG4gICB3cml0dGVuIHRvIGBgc3lzLnN0ZG91dGBgIG9yIGBgc3lzLnN0ZGVycmBgLilcblxuc3RyLmlzc3BhY2UoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIFdoaXRlc3BhY2VcbiAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoIGJpZGlyZWN0aW9uYWxcbiAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzdXBwZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgdXBwZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuam9pbihpdGVyYWJsZSlcblxuICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluIHRoZVxuICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSBgYFR5cGVFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGlmIHRoZXJlIGFyZVxuICAgYW55IG5vbi1zdHJpbmcgdmFsdWVzIGluICppdGVyYWJsZSosIGluY2x1ZGluZyBgYGJ5dGVzYGAgb2JqZWN0cy5cbiAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyB0aGlzIG1ldGhvZC5cblxuc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiAgVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLmxvd2VyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICBcJ3NwYWNpb3VzICAgXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlLmNvbVwnXG5cbnN0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgIGBgc3RyLnRyYW5zbGF0ZSgpYGAuXG5cbiAgIElmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nXG4gICBVbmljb2RlIG9yZGluYWxzIChpbnRlZ2Vycykgb3IgY2hhcmFjdGVycyAoc3RyaW5ncyBvZiBsZW5ndGggMSkgdG9cbiAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciBOb25lLlxuICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cblxuICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCxcbiAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggd2lsbCBiZSBtYXBwZWRcbiAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlIGlzIGEgdGhpcmRcbiAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvXG4gICBOb25lIGluIHRoZSByZXN1bHQuXG5cbnN0ci5wYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCBmb2xsb3dlZCBieVxuICAgdHdvIGVtcHR5IHN0cmluZ3MuXG5cbnN0ci5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpvbGQqXG4gICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzIGdpdmVuLCBvbmx5XG4gICB0aGUgZmlyc3QgKmNvdW50KiBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuXG5cbnN0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIHdpdGhpbiBgYHNbc3RhcnQ6ZW5kXWBgLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gYGAtMWBgIG9uIGZhaWx1cmUuXG5cbnN0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSBgYHJmaW5kKClgYCBidXQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKlxuICAgaXMgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIucnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncywgZm9sbG93ZWQgYnlcbiAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuXG5zdHIucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgIGBgTm9uZWBgLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgZm9yXG4gICBzcGxpdHRpbmcgZnJvbSB0aGUgcmlnaHQsIGBgcnNwbGl0KClgYCBiZWhhdmVzIGxpa2UgYGBzcGxpdCgpYGBcbiAgIHdoaWNoIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBzdWZmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcucnN0cmlwKClcbiAgIFwnICAgc3BhY2lvdXNcJ1xuICAgPj4+IFwnbWlzc2lzc2lwcGlcJy5yc3RyaXAoXCdpcHpcJylcbiAgIFwnbWlzc2lzc1wnXG5cbnN0ci5zcGxpdChbc2VwWywgbWF4c3BsaXRdXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqXG4gICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0IGBgbWF4c3BsaXQrMWBgXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhlcmUgaXMgbm8gbGltaXRcbiAgIG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzIGFyZSBtYWRlKS5cblxuICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCBncm91cGVkIHRvZ2V0aGVyXG4gICBhbmQgYXJlIGRlZW1lZCB0byBkZWxpbWl0IGVtcHR5IHN0cmluZ3MgKGZvciBleGFtcGxlLFxuICAgYGBcJzEsLDJcJy5zcGxpdChcJyxcJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJ1wnLCBcJzJcJ11gYCkuICBUaGUgKnNlcCpcbiAgIGFyZ3VtZW50IG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgYGBcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgKS4gU3BsaXR0aW5nXG4gICBhbiBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyBgYFtcJ1wnXWBgLlxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIGBgTm9uZWBgLCBhIGRpZmZlcmVudCBzcGxpdHRpbmdcbiAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgYXJlIHJlZ2FyZGVkXG4gICBhcyBhIHNpbmdsZSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBubyBlbXB0eSBzdHJpbmdzXG4gICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgdHJhaWxpbmdcbiAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgb3IgYSBzdHJpbmdcbiAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSBgYE5vbmVgYCBzZXBhcmF0b3IgcmV0dXJuc1xuICAgYGBbXWBgLlxuXG4gICBGb3IgZXhhbXBsZSwgYGBcJyAxICAyICAgMyAgXCcuc3BsaXQoKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCxcbiAgIGFuZCBgYFwnICAxICAyICAgMyAgXCcuc3BsaXQoTm9uZSwgMSlgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzIgICAzICBcJ11gYC5cblxuc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgbGluZVxuICAgYm91bmRhcmllcy4gIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosIG90aGVyd2lzZVxuICAgcmV0dXJuIGBgRmFsc2VgYC4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rXG4gICBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzXG4gICB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnN0cmlwKClcbiAgIFwnc3BhY2lvdXNcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcuc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZVwnXG5cbnN0ci5zd2FwY2FzZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0b1xuICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAgICAgICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMpXG5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUobWFwKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSAqcyogd2hlcmUgYWxsIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgKm1hcCogd2hpY2ggbXVzdCBiZSBhIGRpY3Rpb25hcnkgb2YgVW5pY29kZSBvcmRpbmFsc1xuICAgKGludGVnZXJzKSB0byBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIG9yIGBgTm9uZWBgLiAgVW5tYXBwZWRcbiAgIGNoYXJhY3RlcnMgYXJlIGxlZnQgdW50b3VjaGVkLiBDaGFyYWN0ZXJzIG1hcHBlZCB0byBgYE5vbmVgYCBhcmVcbiAgIGRlbGV0ZWQuXG5cbiAgIFlvdSBjYW4gdXNlIGBgc3RyLm1ha2V0cmFucygpYGAgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIE5vdGU6IEFuIGV2ZW4gbW9yZSBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSBjdXN0b20gY2hhcmFjdGVyXG4gICAgIG1hcHBpbmcgY29kZWMgdXNpbmcgdGhlIGBgY29kZWNzYGAgbW9kdWxlIChzZWVcbiAgICAgYGBlbmNvZGluZ3MuY3AxMjUxYGAgZm9yIGFuIGV4YW1wbGUpLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0IGBgc3RyLnVwcGVyKCkuaXN1cHBlcigpYGAgbWlnaHRcbiAgIGJlIGBgRmFsc2VgYCBpZiBgYHNgYCBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIHRoZSBudW1lcmljIHN0cmluZyBsZWZ0IGZpbGxlZCB3aXRoIHplcm9zIGluIGEgc3RyaW5nIG9mXG4gICBsZW5ndGggKndpZHRoKi4gIEEgc2lnbiBwcmVmaXggaXMgaGFuZGxlZCBjb3JyZWN0bHkuICBUaGUgb3JpZ2luYWxcbiAgIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgYGxlbihzKWBgLlxuJywKLSAnc3RyaW5ncyc6ICdcblN0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbiAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgIlIiXG4gICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4gICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG5cbiAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiJcbiAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4gICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgYGBzdHJpbmdwcmVmaXhgYCBvclxuYGBieXRlc3ByZWZpeGBgIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0XG5pcyBkZWZpbmVkIGJ5IHRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmdcbmRlY2xhcmF0aW9uIGlzIGdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nXG5kZWNsYXJhdGlvbnMqLlxuXG5JbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZ1xuc2luZ2xlIHF1b3RlcyAoYGBcJ2BgKSBvciBkb3VibGUgcXVvdGVzIChgYCJgYCkuICBUaGV5IGNhbiBhbHNvIGJlXG5lbmNsb3NlZCBpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlXG5hcmUgZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSBiYWNrc2xhc2hcbihgYFxcYGApIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYVxuc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuY2hhcmFjdGVyLlxuXG5CeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggYGBcJ2JcJ2BgIG9yIGBgXCdCXCdgYDsgdGhleVxucHJvZHVjZSBhbiBpbnN0YW5jZSBvZiB0aGUgYGBieXRlc2BgIHR5cGUgaW5zdGVhZCBvZiB0aGUgYGBzdHJgYCB0eXBlLlxuVGhleSBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mXG4xMjggb3IgZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG5cbkJvdGggc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBtYXkgb3B0aW9uYWxseSBiZSBwcmVmaXhlZCB3aXRoIGFcbmxldHRlciBgYFwnclwnYGAgb3IgYGBcJ1JcJ2BgOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZFxudHJlYXQgYmFja3NsYXNoZXMgYXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZ1xubGl0ZXJhbHMsIGBgXCdcXFVcJ2BgIGFuZCBgYFwnXFx1XCdgYCBlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZFxuc3BlY2lhbGx5LlxuXG5JbiB0cmlwbGUtcXVvdGVkIHN0cmluZ3MsIHVuZXNjYXBlZCBuZXdsaW5lcyBhbmQgcXVvdGVzIGFyZSBhbGxvd2VkXG4oYW5kIGFyZSByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3dcbnRlcm1pbmF0ZSB0aGUgc3RyaW5nLiAgKEEgInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiB0aGVcbnN0cmluZywgaS5lLiBlaXRoZXIgYGBcJ2BgIG9yIGBgImBgLilcblxuVW5sZXNzIGFuIGBgXCdyXCdgYCBvciBgYFwnUlwnYGAgcHJlZml4IGlzIHByZXNlbnQsIGVzY2FwZSBzZXF1ZW5jZXMgaW5cbnN0cmluZ3MgYXJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBydWxlcyBzaW1pbGFyIHRvIHRob3NlIHVzZWQgYnlcblN0YW5kYXJkIEMuICBUaGUgcmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFxcbmV3bGluZWBgICAgICAgfCBCYWNrc2xhc2ggYW5kIG5ld2xpbmUgaWdub3JlZCAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXFxcYGAgICAgICAgICAgICB8IEJhY2tzbGFzaCAoYGBcXGBgKSAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXFwnYGAgICAgICAgICAgICB8IFNpbmdsZSBxdW90ZSAoYGBcJ2BgKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXCJgYCAgICAgICAgICAgIHwgRG91YmxlIHF1b3RlIChgYCJgYCkgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxhYGAgICAgICAgICAgICB8IEFTQ0lJIEJlbGwgKEJFTCkgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcYmBgICAgICAgICAgICAgfCBBU0NJSSBCYWNrc3BhY2UgKEJTKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGZgYCAgICAgICAgICAgIHwgQVNDSUkgRm9ybWZlZWQgKEZGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxuYGAgICAgICAgICAgICB8IEFTQ0lJIExpbmVmZWVkIChMRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxccmBgICAgICAgICAgICAgfCBBU0NJSSBDYXJyaWFnZSBSZXR1cm4gKENSKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHRgYCAgICAgICAgICAgIHwgQVNDSUkgSG9yaXpvbnRhbCBUYWIgKFRBQikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx2YGAgICAgICAgICAgICB8IEFTQ0lJIFZlcnRpY2FsIFRhYiAoVlQpICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcb29vYGAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBvY3RhbCB2YWx1ZSAqb29vKiAgfCAoMSwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHhoaGBgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggaGV4IHZhbHVlICpoaCogICAgIHwgKDIsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbkVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZyBsaXRlcmFscyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgYGBcXE57bmFtZX1gYCAgICAgIHwgQ2hhcmFjdGVyIG5hbWVkICpuYW1lKiBpbiB0aGUgICAgIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgVW5pY29kZSBkYXRhYmFzZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx1eHh4eGBgICAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcVXh4eHh4eHh4YGAgICAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eHh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuIEFzIGluIFN0YW5kYXJkIEMsIHVwIHRvIHRocmVlIG9jdGFsIGRpZ2l0cyBhcmUgYWNjZXB0ZWQuXG5cbjIuIFVubGlrZSBpbiBTdGFuZGFyZCBDLCBleGFjdGx5IHR3byBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cblxuMy4gSW4gYSBieXRlcyBsaXRlcmFsLCBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgZXNjYXBlcyBkZW5vdGUgdGhlIGJ5dGVcbiAgIHdpdGggdGhlIGdpdmVuIHZhbHVlLiBJbiBhIHN0cmluZyBsaXRlcmFsLCB0aGVzZSBlc2NhcGVzIGRlbm90ZSBhXG4gICBVbmljb2RlIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiB2YWx1ZS5cblxuNC4gSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmVcbiAgIGVuY29kZWQgdXNpbmcgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmVcbiAgIHJlcXVpcmVkLlxuXG41LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXksIGJ1dCBjaGFyYWN0ZXJzXG4gICBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGFcbiAgIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcyBjb21waWxlZCB0byB1c2UgMTYtYml0IGNvZGUgdW5pdHMgKHRoZVxuICAgZGVmYXVsdCkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgc3RyaW5nKi4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IHN0cmluZywgc3RyaW5nIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLFxuYnV0IHRoZSBiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgYGByIlxcIiJgYCBpcyBhXG52YWxpZCBzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYVxuZG91YmxlIHF1b3RlOyBgYHIiXFwiYGAgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXdcbnN0cmluZyBjYW5ub3QgZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYVxucmF3IHN0cmluZyBjYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2hcbndvdWxkIGVzY2FwZSB0aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZVxuYmFja3NsYXNoIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVyc1xuYXMgcGFydCBvZiB0aGUgc3RyaW5nLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKKyAnc3BlY2lhbGF0dHJzJzogJ1xuU3BlY2lhbCBBdHRyaWJ1dGVzXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyB0byBzZXZlcmFsXG5vYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgbm90IHJlcG9ydGVkXG5ieSB0aGUgYGBkaXIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fcXVhbG5hbWVfX1xuXG4gICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gYGBfX21yb19fYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kIGluXG4gICAgdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgYGBbMSwgMl1gYCBpcyBjb25zaWRlcmVkIGVxdWFsIHRvXG4gICAgYGBbMS4wLCAyLjBdYGAsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHkgYmVpbmdcbiAgICBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksIG9yICJMdCJcbiAgICAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGEgc2luZ2xldG9uXG4gICAgdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAorICdzcGVjaWFsbmFtZXMnOiAnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgYGBfX2dldGl0ZW1fXygpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzXG5jbGFzcywgdGhlbiBgYHhbaV1gYCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gYGB0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsXG5pKWBgLiAgRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2VcbmFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbmBgQXR0cmlidXRlRXJyb3JgYCBvciBgYFR5cGVFcnJvcmBgKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG5gYE5vZGVMaXN0YGAgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCBgYHggPT0geWBgIGltcGxpZXMgYm90aCB0aGF0IGBgeCBpcyB5YGAgYW5kIGBgaGFzaCh4KSA9PVxuICAgaGFzaCh5KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgYGBfX2hhc2hfXygpYGAgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lXG4gICAgIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gYGBQWVRIT05IQVNIU0VFRGBgLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gYGBkaXIoKWBgIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIGBgdHlwZSgpYGAuIFRoZSBjbGFzcyBib2R5XG5pcyBleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG9cbnRoZSByZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpYGAuXG5cblRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIGNhbiBiZSBjdXN0b21pc2VkIGJ5IHBhc3NpbmcgdGhlXG5gYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgb3IgYnlcbmluaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gYXJndW1lbnQuIEluXG50aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggYGBNeUNsYXNzYGAgYW5kIGBgTXlTdWJjbGFzc2BgIGFyZVxuaW5zdGFuY2VzIG9mIGBgTWV0YWBgOlxuXG4gICBjbGFzcyBNZXRhKHR5cGUpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuICAgICAgIHBhc3NcblxuQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxuYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgYmVsb3cuXG5cbldoZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOlxuXG4qIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuXG4qIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcblxuKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuXG4qIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuXG5cbkRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXNcbmZvbGxvd3M6XG5cbiogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gYGB0eXBlKClgYCBpc1xuICB1c2VkXG5cbiogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiBpbnN0YW5jZSBvZlxuICBgYHR5cGUoKWBgLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzc1xuXG4qIGlmIGFuIGluc3RhbmNlIG9mIGBgdHlwZSgpYGAgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3JcbiAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZFxuXG5UaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZFxubWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gYGB0eXBlKGNscylgYCkgb2YgYWxsXG5zcGVjaWZpZWQgYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgd2hpY2ggaXMgYVxuc3VidHlwZSBvZiAqYWxsKiBvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgb2YgdGhlXG5jYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMgdGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbndpbGwgZmFpbCB3aXRoIGBgVHlwZUVycm9yYGAuXG5cblxuUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2Vcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhIGBgX19wcmVwYXJlX19gYFxuYXR0cmlidXRlLCBpdCBpcyBjYWxsZWQgYXMgYGBuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSxcbmJhc2VzLCAqKmt3ZHMpYGAgKHdoZXJlIHRoZSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWVcbmZyb20gdGhlIGNsYXNzIGRlZmluaXRpb24pLlxuXG5JZiB0aGUgbWV0YWNsYXNzIGhhcyBubyBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IGBgZGljdCgpYGAgaW5zdGFuY2UuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuICAgICAgSW50cm9kdWNlZCB0aGUgYGBfX3ByZXBhcmVfX2BgIG5hbWVzcGFjZSBob29rXG5cblxuRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzIGBgZXhlYyhib2R5LCBnbG9iYWxzKCksXG5uYW1lc3BhY2UpYGAuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gYGBleGVjKClgYCBpc1xudGhhdCBsZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcgYW55IG1ldGhvZHMpIHRvXG5yZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlIGNsYXNzXG5kZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi5cblxuSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlIGZ1bmN0aW9uLFxubWV0aG9kcyBkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyBkZWZpbmVkIGF0IHRoZVxuY2xhc3Mgc2NvcGUuIENsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGZpcnN0XG5wYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBhdCBhbGxcbmZyb20gc3RhdGljIG1ldGhvZHMuXG5cblxuQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgY2xhc3NcbmJvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGBgbWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxubmFtZXNwYWNlLCAqKmt3ZHMpYGAgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzIHBhc3NlZCBoZXJlIGFyZSB0aGUgc2FtZVxuYXMgdGhvc2UgcGFzc2VkIHRvIGBgX19wcmVwYXJlX19gYCkuXG5cblRoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlIHplcm8tXG5hcmd1bWVudCBmb3JtIG9mIGBgc3VwZXIoKWBgLiBgYF9fY2xhc3NfX2BgIGlzIGFuIGltcGxpY2l0IGNsb3N1cmVcbnJlZmVyZW5jZSBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzIGJvZHkgcmVmZXJcbnRvIGVpdGhlciBgYF9fY2xhc3NfX2BgIG9yIGBgc3VwZXJgYC4gVGhpcyBhbGxvd3MgdGhlIHplcm8gYXJndW1lbnRcbmZvcm0gb2YgYGBzdXBlcigpYGAgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkXG5iYXNlZCBvbiBsZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkIHRvXG5tYWtlIHRoZSBjdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkXG50byB0aGUgbWV0aG9kLlxuXG5BZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgY2xhc3NcbmRlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSByZXN1bHRpbmdcbm9iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEzNSoqIC0gTmV3IHN1cGVyXG4gICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0IGBgX19jbGFzc19fYGAgY2xvc3VyZSByZWZlcmVuY2VcblxuXG5NZXRhY2xhc3MgZXhhbXBsZVxuLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG5gYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgbWVtYmVyc1xud2VyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzIGBgX19wcmVwYXJlX18oKWBgIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSBgYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAuICBUaGF0IG1hcHBpbmcgcmVjb3JkcyB0aGUgbWV0aG9kc1xuYW5kIGF0dHJpYnV0ZXMgb2YgKkEqIGFzIHRoZXkgYXJlIGRlZmluZWQgd2l0aGluIHRoZSBib2R5IG9mIHRoZSBjbGFzc1xuc3RhdGVtZW50LiBPbmNlIHRob3NlIGRlZmluaXRpb25zIGFyZSBleGVjdXRlZCwgdGhlIG9yZGVyZWQgZGljdGlvbmFyeVxuaXMgZnVsbHkgcG9wdWxhdGVkIGFuZCB0aGUgbWV0YWNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgYGBtZW1iZXJzYGAuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG5gYGlzaW5zdGFuY2UoKWBgIGFuZCBgYGlzc3ViY2xhc3MoKWBgIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyBgYGFiYy5BQkNNZXRhYGAgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzXG5pbiBvcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICBgYGlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKWBgLlxuXG5jbGFzcy5fX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBzdWJjbGFzcylcblxuICAgUmV0dXJuIHRydWUgaWYgKnN1YmNsYXNzKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBzdWJjbGFzcyBvZiAqY2xhc3MqLiAgSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgYGBpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcylgYC5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuICAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nIGBgaXNpbnN0YW5jZSgpYGAgYW5kXG4gICAgICBgYGlzc3ViY2xhc3MoKWBgIGJlaGF2aW9yIHRocm91Z2ggYGBfX2luc3RhbmNlY2hlY2tfXygpYGAgYW5kXG4gICAgICBgYF9fc3ViY2xhc3NjaGVja19fKClgYCwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHlcbiAgICAgIGluIHRoZSBjb250ZXh0IG9mIGFkZGluZyBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKHNlZSB0aGUgYGBhYmNgYFxuICAgICAgbW9kdWxlKSB0byB0aGUgbGFuZ3VhZ2UuXG5cblxuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgYGB4KGFyZzEsIGFyZzIsIC4uLilgYCBpcyBhIHNob3J0aGFuZCBmb3JcbiAgIGBgeC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pYGAuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCBgYDAgPD0gayA8IE5gYFxud2hlcmUgKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaFxuZGVmaW5lIGEgcmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZVxudGhlIG1ldGhvZHMgYGBrZXlzKClgYCwgYGB2YWx1ZXMoKWBgLCBgYGl0ZW1zKClgYCwgYGBnZXQoKWBgLFxuYGBjbGVhcigpYGAsIGBgc2V0ZGVmYXVsdCgpYGAsIGBgcG9wKClgYCwgYGBwb3BpdGVtKClgYCwgYGBjb3B5KClgYCxcbmFuZCBgYHVwZGF0ZSgpYGAgYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkXG5kaWN0aW9uYXJ5IG9iamVjdHMuICBUaGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZSBwcm92aWRlcyBhXG5gYE11dGFibGVNYXBwaW5nYGAgYWJzdHJhY3QgYmFzZSBjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzXG5mcm9tIGEgYmFzZSBzZXQgb2YgYGBfX2dldGl0ZW1fXygpYGAsIGBgX19zZXRpdGVtX18oKWBgLFxuYGBfX2RlbGl0ZW1fXygpYGAsIGFuZCBgYGtleXMoKWBgLiBNdXRhYmxlIHNlcXVlbmNlcyBzaG91bGQgcHJvdmlkZVxubWV0aG9kcyBgYGFwcGVuZCgpYGAsIGBgY291bnQoKWBgLCBgYGluZGV4KClgYCwgYGBleHRlbmQoKWBgLFxuYGBpbnNlcnQoKWBgLCBgYHBvcCgpYGAsIGBgcmVtb3ZlKClgYCwgYGByZXZlcnNlKClgYCBhbmQgYGBzb3J0KClgYCxcbmxpa2UgUHl0aG9uIHN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZFxuaW1wbGVtZW50IGFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgYGBfX2FkZF9fKClgYCwgYGBfX3JhZGRfXygpYGAsXG5gYF9faWFkZF9fKClgYCwgYGBfX211bF9fKClgYCwgYGBfX3JtdWxfXygpYGAgYW5kIGBgX19pbXVsX18oKWBgXG5kZXNjcmliZWQgYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0XG5pcyByZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG5gYF9fY29udGFpbnNfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlIGBgaW5gYFxub3BlcmF0b3I7IGZvciBtYXBwaW5ncywgYGBpbmBgIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yXG5zZXF1ZW5jZXMsIGl0IHNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlclxucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2l0ZXJfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGVcbmNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCBgYF9faXRlcl9fKClgYCBzaG91bGQgYmUgdGhlIHNhbWUgYXNcbmBga2V5cygpYGA7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgLiAgU2hvdWxkIHJldHVyblxuICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyIGBgPj1gYCAwLiAgQWxzbywgYW4gb2JqZWN0XG4gICB0aGF0IGRvZXNuXCd0IGRlZmluZSBhIGBgX19ib29sX18oKWBgIG1ldGhvZCBhbmQgd2hvc2UgYGBfX2xlbl9fKClgYFxuICAgbWV0aG9kIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBXG4gIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoXG4gIGBgTm9uZWBgLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgYGBzZWxmW2tleV1gYC4gRm9yIHNlcXVlbmNlXG4gICB0eXBlcywgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLlxuICAgTm90ZSB0aGF0IHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZVxuICAgY2xhc3Mgd2lzaGVzIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGVcbiAgIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC4gSWYgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLFxuICAgYGBUeXBlRXJyb3JgYCBtYXkgYmUgcmFpc2VkOyBpZiBvZiBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZlxuICAgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnkgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZlxuICAgbmVnYXRpdmUgdmFsdWVzKSwgYGBJbmRleEVycm9yYGAgc2hvdWxkIGJlIHJhaXNlZC4gRm9yIG1hcHBpbmdcbiAgIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlIGNvbnRhaW5lciksIGBgS2V5RXJyb3JgYFxuICAgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogYGBmb3JgYCBsb29wcyBleHBlY3QgdGhhdCBhbiBgYEluZGV4RXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlIGBgX19nZXRpdGVtX18oKWBgXG4gICBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLCBhbmQgc2hvdWxkIGFsc28gYmUgbWFkZVxuICAgYXZhaWxhYmxlIGFzIHRoZSBtZXRob2QgYGBrZXlzKClgYC5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlIGBgX19yZXZlcnNlZF9fKClgYCBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGVcbiAgIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZVxuICAgcHJvdG9jb2wgKGBgX19sZW5fXygpYGAgYW5kIGBgX19nZXRpdGVtX18oKWBgKS4gIE9iamVjdHMgdGhhdFxuICAgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgYGBfX3JldmVyc2VkX18oKWBgIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpc1xuICAgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5IGBgcmV2ZXJzZWQoKWBgLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoYGBpbmBgIGFuZCBgYG5vdCBpbmBgKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgLCB0aGUgbWVtYmVyc2hpcFxuICAgdGVzdCBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhIGBgX19pdGVyX18oKWBgLCB0aGVuIHRoZSBvbGRcbiAgIHNlcXVlbmNlIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgYGBfX2dldGl0ZW1fXygpYGAsIHNlZSAqdGhpc1xuICAgc2VjdGlvbiBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggKyB5YGAsIHdoZXJlXG4gICAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiBgYF9fYWRkX18oKWBgIG1ldGhvZCxcbiAgIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlIGBgX19kaXZtb2RfXygpYGAgbWV0aG9kIHNob3VsZCBiZVxuICAgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgYGBfX2Zsb29yZGl2X18oKWBgIGFuZCBgYF9fbW9kX18oKWBgOyBpdFxuICAgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvIGBgX190cnVlZGl2X18oKWBgLiAgTm90ZSB0aGF0XG4gICBgYF9fcG93X18oKWBgIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdCBhbiBvcHRpb25hbCB0aGlyZFxuICAgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gYGBwb3coKWBgIGZ1bmN0aW9uXG4gICBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuIGBgTm90SW1wbGVtZW50ZWRgYC5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCxcbiAgIGBgZGl2bW9kKClgYCwgYGBwb3coKWBgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsXG4gICBgYHxgYCkgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHlcbiAgIGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMuIFsyXSAgRm9yXG4gICBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMgYW5cbiAgIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX3JzdWJfXygpYGAgbWV0aG9kLFxuICAgYGB5Ll9fcnN1Yl9fKHgpYGAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgYGBwb3coKWBgIHdpbGwgbm90IHRyeSBjYWxsaW5nIGBgX19ycG93X18oKWBgXG4gICAodGhlIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kIGZvciB0aGVcbiAgICAgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXMgdG9cbiAgICAgb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhIGBgd2l0aGBgIHN0YXRlbWVudC4gVGhlIGNvbnRleHRcbm1hbmFnZXIgaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWVcbmNvbnRleHQgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZVxubm9ybWFsbHkgaW52b2tlZCB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvblxuKlRoZSB3aXRoIHN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpclxubWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgYGB3aXRoYGBcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlIGBgTm9uZWBgLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCBgYF9fZXhpdF9fKClgYCBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzIGBgX19oYXNoX18oKWBgIGFuZCBgYF9fcmVwcl9fKClgYCB0aGF0IGFyZSBpbXBsZW1lbnRlZFxuYnkgYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgb2ZcbnRoZXNlIG1ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkIGZhaWxcbndoZW4gaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuXG4gICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgXCdfX2hhc2hfX1wnIG9mIFwnaW50XCcgb2JqZWN0IG5lZWRzIGFuIGFyZ3VtZW50XG5cbkluY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgY2xhc3MgaW4gdGhpc1xud2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBcJ21ldGFjbGFzcyBjb25mdXNpb25cJywgYW5kIGlzIGF2b2lkZWRcbmJ5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcblxuICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuICAgVHJ1ZVxuXG5JbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlIGludGVyZXN0IG9mXG5jb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvIGJ5cGFzc2VzXG50aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb25cbnByb3ZpZGVzIHNpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGVcbmludGVycHJldGVyLCBhdCB0aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZlxuc3BlY2lhbCBtZXRob2RzICh0aGUgc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0XG5pdHNlbGYgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBJdCAqaXMqIHBvc3NpYmxlIGluIHNvbWUgY2FzZXMgdG8gY2hhbmdlIGFuIG9iamVjdFwncyB0eXBlLCB1bmRlclxuICAgIGNlcnRhaW4gY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuXCd0IGEgZ29vZCBpZGVhXG4gICAgdGhvdWdoLCBzaW5jZSBpdCBjYW4gbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSBiZWhhdmlvdXIgaWYgaXQgaXNcbiAgICBoYW5kbGVkIGluY29ycmVjdGx5LlxuXG5bMl0gRm9yIG9wZXJhbmRzIG9mIHRoZSBzYW1lIHR5cGUsIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgbm9uLVxuICAgIHJlZmxlY3RlZCBtZXRob2QgKHN1Y2ggYXMgYGBfX2FkZF9fKClgYCkgZmFpbHMgdGhlIG9wZXJhdGlvbiBpc1xuICAgIG5vdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeSB0aGUgcmVmbGVjdGVkIG1ldGhvZCBpcyBub3QgY2FsbGVkLlxuJywKKyAnc3RyaW5nLW1ldGhvZHMnOiAnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG50aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cblxuU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lIHByb3ZpZGluZyBhXG5sYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSBgYHN0ci5mb3JtYXQoKWBgLFxuKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBhbmQgKlN0cmluZyBGb3JtYXR0aW5nKikgYW5kIHRoZSBvdGhlciBiYXNlZCBvblxuQyBgYHByaW50ZmBgIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2YgdHlwZXNcbmFuZCBpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3IgdGhlXG5jYXNlcyBpdCBjYW4gaGFuZGxlICgqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKikuXG5cblRoZSAqVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzKiBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGNvdmVyc1xuYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgdXRpbGl0aWVzXG4oaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSBgYHJlYGAgbW9kdWxlKS5cblxuc3RyLmNhcGl0YWxpemUoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyIGNhcGl0YWxpemVkXG4gICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cblxuc3RyLmNhc2Vmb2xkKClcblxuICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmVcbiAgIHVzZWQgZm9yIGNhc2VsZXNzIG1hdGNoaW5nLlxuXG4gICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZVxuICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yXG4gICBleGFtcGxlLCB0aGUgR2VybWFuIGxvd2VyY2FzZSBsZXR0ZXIgYGBcJ1x4YzNceDlmXCdgYCBpcyBlcXVpdmFsZW50IHRvXG4gICBgYCJzcyJgYC4gU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsIGBgbG93ZXIoKWBgIHdvdWxkIGRvXG4gICBub3RoaW5nIHRvIGBgXCdceGMzXHg5ZlwnYGA7IGBgY2FzZWZvbGQoKWBgIGNvbnZlcnRzIGl0IHRvIGBgInNzImBgLlxuXG4gICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYSBzcGFjZSkuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyBgYFwnc3RyaWN0XCdgYCxcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBgYFVuaWNvZGVFcnJvcmBgLiBPdGhlclxuICAgcG9zc2libGUgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgLFxuICAgYGBcJ3htbGNoYXJyZWZyZXBsYWNlXCdgYCwgYGBcJ2JhY2tzbGFzaHJlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2ZcbiAgIHN1ZmZpeGVzIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdFxuICAgdGhhdCBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyhbdGFic2l6ZV0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGhlIGNvbHVtbiBudW1iZXIgaXMgcmVzZXQgdG8gemVybyBhZnRlciBlYWNoXG4gICBuZXdsaW5lIG9jY3VycmluZyBpbiB0aGUgc3RyaW5nLiBJZiAqdGFic2l6ZSogaXMgbm90IGdpdmVuLCBhIHRhYlxuICAgc2l6ZSBvZiBgYDhgYCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuICBUaGlzIGRvZXNuXCd0IHVuZGVyc3RhbmQgb3RoZXJcbiAgIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzIG9yIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSBgYGZpbmQoKWBgIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlXG4gICAgIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LCB1c2VcbiAgICAgdGhlIGBgaW5gYCBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzIGBge31gYC4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAsIGV4Y2VwdCB0aGF0IGBgbWFwcGluZ2BgIGlzXG4gICB1c2VkIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgYGBkaWN0YGAgLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yXG4gICBleGFtcGxlIGBgbWFwcGluZ2BgIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGBmaW5kKClgYCwgYnV0IHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyXG4gICBgYGNgYCBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyBgYFRydWVgYDpcbiAgIGBgYy5pc2FscGhhKClgYCwgYGBjLmlzZGVjaW1hbCgpYGAsIGBgYy5pc2RpZ2l0KClgYCwgb3JcbiAgIGBgYy5pc251bWVyaWMoKWBgLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiBgYHJlcHIoKWBgIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBIGBgVHlwZUVycm9yYGAgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nIGBgYnl0ZXNgYCBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG4gICBUaGUgbG93ZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci5sc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgXCdzcGFjaW91cyAgIFwnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICBgYHN0ci50cmFuc2xhdGUoKWBgLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgTm9uZS5cbiAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG5cbiAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsXG4gICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkXG4gICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSBpcyBhIHRoaXJkXG4gICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0b1xuICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuXG5zdHIucGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgZm9sbG93ZWQgYnlcbiAgIHR3byBlbXB0eSBzdHJpbmdzLlxuXG5zdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqb2xkKlxuICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyBnaXZlbiwgb25seVxuICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuXG5zdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGByZmluZCgpYGAgYnV0IHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgKnN1YipcbiAgIGlzIG5vdCBmb3VuZC5cblxuc3RyLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLnJwYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5XG4gICB0aGUgc3RyaW5nIGl0c2VsZi5cblxuc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgYGBOb25lYGAsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3JcbiAgIHNwbGl0dGluZyBmcm9tIHRoZSByaWdodCwgYGByc3BsaXQoKWBgIGJlaGF2ZXMgbGlrZSBgYHNwbGl0KClgYFxuICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgXCcgICBzcGFjaW91c1wnXG4gICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqXG4gICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0IGBgbWF4c3BsaXQrMWBgXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgYGAtMWBgLCB0aGVuIHRoZXJlIGlzXG4gICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxLCwyXCcuc3BsaXQoXCcsXCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCdcJywgXCcyXCddYGApLiAgVGhlICpzZXAqXG4gICBhcmd1bWVudCBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCkuIFNwbGl0dGluZ1xuICAgYW4gZW1wdHkgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgc2VwYXJhdG9yIHJldHVybnMgYGBbXCdcJ11gYC5cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyBgYE5vbmVgYCwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgYGBOb25lYGAgc2VwYXJhdG9yIHJldHVybnNcbiAgIGBgW11gYC5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCcgMSAgMiAgIDMgIFwnLnNwbGl0KClgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGAsXG4gICBhbmQgYGBcJyAgMSAgMiAgIDMgIFwnLnNwbGl0KE5vbmUsIDEpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyICAgMyAgXCddYGAuXG5cbnN0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbiAgIGJvdW5kYXJpZXMuIFRoaXMgbWV0aG9kIHVzZXMgdGhlICp1bml2ZXJzYWwgbmV3bGluZXMqIGFwcHJvYWNoIHRvXG4gICBzcGxpdHRpbmcgbGluZXMuIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoKWBgIHJldHVybnNcbiAgIGBgW1wnYWIgY1wnLCBcJ1wnLCBcJ2RlIGZnXCcsIFwna2xcJ11gYCwgd2hpbGUgdGhlIHNhbWUgY2FsbCB3aXRoXG4gICBgYHNwbGl0bGluZXMoVHJ1ZSlgYCByZXR1cm5zIGBgW1wnYWIgY1xcblwnLCBcJ1xcblwnLCBcJ2RlIGZnXFxyXCcsXG4gICBcJ2tsXFxyXFxuXCddYGAuXG5cbiAgIFVubGlrZSBgYHNwbGl0KClgYCB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyBnaXZlbiwgdGhpc1xuICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgYW5kIGEgdGVybWluYWxcbiAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmUuXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2VcbiAgIHJldHVybiBgYEZhbHNlYGAuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gbG9va1xuICAgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uXG5cbnN0ci5zdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmdcbiAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKlxuICAgYXJndW1lbnQgaXMgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0c1xuICAgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICBcJ3NwYWNpb3VzXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGVcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXRcbiAgIGBgcy5zd2FwY2FzZSgpLnN3YXBjYXNlKCkgPT0gc2BgLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAgICAgICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMpXG5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUobWFwKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSAqcyogd2hlcmUgYWxsIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgKm1hcCogd2hpY2ggbXVzdCBiZSBhIGRpY3Rpb25hcnkgb2YgVW5pY29kZSBvcmRpbmFsc1xuICAgKGludGVnZXJzKSB0byBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIG9yIGBgTm9uZWBgLiAgVW5tYXBwZWRcbiAgIGNoYXJhY3RlcnMgYXJlIGxlZnQgdW50b3VjaGVkLiBDaGFyYWN0ZXJzIG1hcHBlZCB0byBgYE5vbmVgYCBhcmVcbiAgIGRlbGV0ZWQuXG5cbiAgIFlvdSBjYW4gdXNlIGBgc3RyLm1ha2V0cmFucygpYGAgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIE5vdGU6IEFuIGV2ZW4gbW9yZSBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSBjdXN0b20gY2hhcmFjdGVyXG4gICAgIG1hcHBpbmcgY29kZWMgdXNpbmcgdGhlIGBgY29kZWNzYGAgbW9kdWxlIChzZWVcbiAgICAgYGBlbmNvZGluZ3MuY3AxMjUxYGAgZm9yIGFuIGV4YW1wbGUpLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0IGBgc3RyLnVwcGVyKCkuaXN1cHBlcigpYGAgbWlnaHRcbiAgIGJlIGBgRmFsc2VgYCBpZiBgYHNgYCBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbiAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSBzdHJpbmcgb2ZcbiAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSBvcmlnaW5hbFxuICAgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG4nLAorICdzdHJpbmdzJzogJ1xuU3RyaW5nIGFuZCBCeXRlcyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5TdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCBsb25nc3RyaW5nKVxuICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAidSIgfCAiUiIgfCAiVSJcbiAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4gICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ3N0cmluZ2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBzaG9ydHN0cmluZ2NoYXIgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgc3RyaW5nZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgc291cmNlIGNoYXJhY3Rlcj5cblxuICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4gICBieXRlc3ByZWZpeCAgICA6Oj0gImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiJcbiAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4gICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgYGBzdHJpbmdwcmVmaXhgYCBvclxuYGBieXRlc3ByZWZpeGBgIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0XG5pcyBkZWZpbmVkIGJ5IHRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmdcbmRlY2xhcmF0aW9uIGlzIGdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nXG5kZWNsYXJhdGlvbnMqLlxuXG5JbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZ1xuc2luZ2xlIHF1b3RlcyAoYGBcJ2BgKSBvciBkb3VibGUgcXVvdGVzIChgYCJgYCkuICBUaGV5IGNhbiBhbHNvIGJlXG5lbmNsb3NlZCBpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlXG5hcmUgZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSBiYWNrc2xhc2hcbihgYFxcYGApIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYVxuc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuY2hhcmFjdGVyLlxuXG5CeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggYGBcJ2JcJ2BgIG9yIGBgXCdCXCdgYDsgdGhleVxucHJvZHVjZSBhbiBpbnN0YW5jZSBvZiB0aGUgYGBieXRlc2BgIHR5cGUgaW5zdGVhZCBvZiB0aGUgYGBzdHJgYCB0eXBlLlxuVGhleSBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mXG4xMjggb3IgZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG5cbkFzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHVuaWNvZGUgc3RyaW5ncyB3aXRoIGFcbmBgdWBgIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54IGNvZGViYXNlcy5cblxuQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxubGV0dGVyIGBgXCdyXCdgYCBvciBgYFwnUlwnYGA7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogYW5kXG50cmVhdCBiYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nXG5saXRlcmFscywgYGBcJ1xcVVwnYGAgYW5kIGBgXCdcXHVcJ2BgIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkXG5zcGVjaWFsbHkuIEdpdmVuIHRoYXQgUHl0aG9uIDIueFwncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmVcbmRpZmZlcmVudGx5IHRoYW4gUHl0aG9uIDMueFwncyB0aGUgYGBcJ3VyXCdgYCBzeW50YXggaXMgbm90IHN1cHBvcnRlZC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgYGBcJ3JiXCdgYCBwcmVmaXggb2YgcmF3IGJ5dGVzIGxpdGVyYWxzIGhhc1xuICAgYmVlbiBhZGRlZCBhcyBhIHN5bm9ueW0gb2YgYGBcJ2JyXCdgYC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuICAgKGBgdVwndmFsdWVcJ2BgKSB3YXMgcmVpbnRyb2R1Y2VkIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsXG4gICBQeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLiBTZWUgKipQRVAgNDE0KiogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbkluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWRcbihhbmQgYXJlIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvd1xudGVybWluYXRlIHRoZSBzdHJpbmcuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxuc3RyaW5nLCBpLmUuIGVpdGhlciBgYFwnYGAgb3IgYGAiYGAuKVxuXG5Vbmxlc3MgYW4gYGBcJ3JcJ2BgIG9yIGBgXCdSXCdgYCBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyBpblxuc3RyaW5ncyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gdGhvc2UgdXNlZCBieVxuU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58IGBgXFxuZXdsaW5lYGAgICAgICB8IEJhY2tzbGFzaCBhbmQgbmV3bGluZSBpZ25vcmVkICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXFxgYCAgICAgICAgICAgIHwgQmFja3NsYXNoIChgYFxcYGApICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXCdgYCAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlIChgYFwnYGApICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcImBgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKGBgImBgKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGFgYCAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxiYGAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcZmBgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXG5gYCAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxyYGAgICAgICAgICAgICB8IEFTQ0lJIENhcnJpYWdlIFJldHVybiAoQ1IpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcdGBgICAgICAgICAgICAgfCBBU0NJSSBIb3Jpem9udGFsIFRhYiAoVEFCKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHZgYCAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxvb29gYCAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICgxLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxceGhoYGAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAoMiwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFxcTntuYW1lfWBgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAoNCkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHV4eHh4YGAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSAgIHwgKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxVeHh4eHh4eHhgYCAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICg2KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cblxuMi4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG4zLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGUgYnl0ZVxuICAgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIHRoZXNlIGVzY2FwZXMgZGVub3RlIGFcbiAgIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuXG40LiBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWzFdIGhhcyBiZWVuXG4gICBhZGRlZC5cblxuNS4gSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmVcbiAgIGVuY29kZWQgdXNpbmcgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmVcbiAgIHJlcXVpcmVkLlxuXG42LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXksIGJ1dCBjaGFyYWN0ZXJzXG4gICBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGFcbiAgIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcyBjb21waWxlZCB0byB1c2UgMTYtYml0IGNvZGUgdW5pdHMgKHRoZVxuICAgZGVmYXVsdCkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgc3RyaW5nKi4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IHN0cmluZywgc3RyaW5nIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLFxuYnV0IHRoZSBiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgYGByIlxcIiJgYCBpcyBhXG52YWxpZCBzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYVxuZG91YmxlIHF1b3RlOyBgYHIiXFwiYGAgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXdcbnN0cmluZyBjYW5ub3QgZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYVxucmF3IHN0cmluZyBjYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2hcbndvdWxkIGVzY2FwZSB0aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZVxuYmFja3NsYXNoIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVyc1xuYXMgcGFydCBvZiB0aGUgc3RyaW5nLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKICAnc3Vic2NyaXB0aW9ucyc6ICdcblN1YnNjcmlwdGlvbnNcbioqKioqKioqKioqKipcblxuQSBzdWJzY3JpcHRpb24gc2VsZWN0cyBhbiBpdGVtIG9mIGEgc2VxdWVuY2UgKHN0cmluZywgdHVwbGUgb3IgbGlzdClcbm9yIG1hcHBpbmcgKGRpY3Rpb25hcnkpIG9iamVjdDpcblxuICAgc3Vic2NyaXB0aW9uIDo6PSBwcmltYXJ5ICJbIiBleHByZXNzaW9uX2xpc3QgIl0iXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgc3Vic2NyaXB0aW9uLFxuZS5nLiBhIGxpc3Qgb3IgZGljdGlvbmFyeS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBzdXBwb3J0XG5zdWJzY3JpcHRpb24gYnkgZGVmaW5pbmcgYSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbkZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCBzdXBwb3J0XG5zdWJzY3JpcHRpb246XG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0IGV2YWx1YXRlIHRvIGFuXG5vYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgdGhlXG5zdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0aGF0XG5rZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgZXhhY3RseSBvbmVcbml0ZW0uKVxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCBldmFsdWF0ZSB0b1xuYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uKS5cblxuVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlIGluZGljZXMgaW5cbnNlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgYGBfX2dldGl0ZW1fXygpYGBcbm1ldGhvZCB0aGF0IGludGVycHJldHMgbmVnYXRpdmUgaW5kaWNlcyBieSBhZGRpbmcgdGhlIGxlbmd0aCBvZiB0aGVcbnNlcXVlbmNlIHRvIHRoZSBpbmRleCAoc28gdGhhdCBgYHhbLTFdYGAgc2VsZWN0cyB0aGUgbGFzdCBpdGVtIG9mXG5gYHhgYCkuICBUaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIGxlc3MgdGhhblxudGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgc2VxdWVuY2UsIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlXG5pdGVtIHdob3NlIGluZGV4IGlzIHRoYXQgdmFsdWUgKGNvdW50aW5nIGZyb20gemVybykuIFNpbmNlIHRoZSBzdXBwb3J0XG5mb3IgbmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZyBvY2N1cnMgaW4gdGhlIG9iamVjdFwnc1xuYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkXG50byBleHBsaWNpdGx5IGFkZCB0aGF0IHN1cHBvcnQuXG5cbkEgc3RyaW5nXCdzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgc2VwYXJhdGUgZGF0YVxudHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKICAndHJ1dGgnOiAiXG5UcnV0aCBWYWx1ZSBUZXN0aW5nXG4qKioqKioqKioqKioqKioqKioqXG5cbkFueSBvYmplY3QgY2FuIGJlIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGZvciB1c2UgaW4gYW4gYGBpZmBgIG9yXG5gYHdoaWxlYGAgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gVGhlXG5mb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuXG4qIGBgTm9uZWBgXG5cbiogYGBGYWxzZWBgXG5cbiogemVybyBvZiBhbnkgbnVtZXJpYyB0eXBlLCBmb3IgZXhhbXBsZSwgYGAwYGAsIGBgMC4wYGAsIGBgMGpgYC5cblxuKiBhbnkgZW1wdHkgc2VxdWVuY2UsIGZvciBleGFtcGxlLCBgYCcnYGAsIGBgKClgYCwgYGBbXWBgLlxuXG4qIGFueSBlbXB0eSBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgYGB7fWBgLlxuXG4qIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3NlcywgaWYgdGhlIGNsYXNzIGRlZmluZXMgYVxuICBgYF9fYm9vbF9fKClgYCBvciBgYF9fbGVuX18oKWBgIG1ldGhvZCwgd2hlbiB0aGF0IG1ldGhvZCByZXR1cm5zIHRoZVxuICBpbnRlZ2VyIHplcm8gb3IgYGBib29sYGAgdmFsdWUgYGBGYWxzZWBgLiBbMV1cblxuQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgYXJlXG5hbHdheXMgdHJ1ZS5cblxuT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0IGFsd2F5c1xucmV0dXJuIGBgMGBgIG9yIGBgRmFsc2VgYCBmb3IgZmFsc2UgYW5kIGBgMWBgIG9yIGBgVHJ1ZWBgIGZvciB0cnVlLFxudW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQuIChJbXBvcnRhbnQgZXhjZXB0aW9uOiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zXG5gYG9yYGAgYW5kIGBgYW5kYGAgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuIiwKLSAndHJ5JzogJ1xuVGhlIGBgdHJ5YGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgdHJ5YGAgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXSAiOiIgc3VpdGUpK1xuICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbiAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4gICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG5cblRoZSBgYGV4Y2VwdGBgIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlblxubm8gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIHN1aXRlLCBhIHNlYXJjaCBmb3JcbmFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0XG5jbGF1c2VzIGluIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW5cbmV4cHJlc3Npb24tbGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXNcbmFueSBleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXRcbmV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlXG5yZXN1bHRpbmcgb2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXNcbmNvbXBhdGlibGUgd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGVcbmV4Y2VwdGlvbiBvYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZVxuZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlIGBgdHJ5YGAgc3RhdGVtZW50XG5yYWlzZWQgdGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgYGBhc2BgIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLFxuaWYgcHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyBgYGFzIHRhcmdldGBgLCBpdCBpcyBjbGVhcmVkXG5hdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIGZvb1xuXG53YXMgdHJhbnNsYXRlZCB0b1xuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgZm9vXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgZGVsIE5cblxuVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbmJlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG51bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuXG5CZWZvcmUgYW4gZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbmV4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSBgYHN5c2BgIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2VzcyB2aWFcbmBgc3lzLmV4Y19pbmZvKClgYC4gYGBzeXMuZXhjX2luZm8oKWBgIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2ZcbnRoZSBleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdFxuKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW5cbnRoZSBwcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICBgYHN5cy5leGNfaW5mbygpYGAgdmFsdWVzXG5hcmUgcmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG5mcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cblxuVGhlIG9wdGlvbmFsIGBgZWxzZWBgIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgYGB0cnlgYCBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSBgYGVsc2VgYCBjbGF1c2VcbmFyZSBub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nIGBgZXhjZXB0YGAgY2xhdXNlcy5cblxuSWYgYGBmaW5hbGx5YGAgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZVxuYGB0cnlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgYGBleGNlcHRgYCBhbmQgYGBlbHNlYGBcbmNsYXVzZXMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90XG5oYW5kbGVkLCB0aGUgZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgYGBmaW5hbGx5YGAgY2xhdXNlIGlzXG5leGVjdXRlZC4gIElmIHRoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uLCBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZFxub2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gSWYgdGhlIGBgZmluYWxseWBgIGNsYXVzZSByYWlzZXMgYW5vdGhlclxuZXhjZXB0aW9uIG9yIGV4ZWN1dGVzIGEgYGByZXR1cm5gYCBvciBgYGJyZWFrYGAgc3RhdGVtZW50LCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uICBUaGUgZXhjZXB0aW9uXG5pbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZyBleGVjdXRpb24gb2YgdGhlXG5gYGZpbmFsbHlgYCBjbGF1c2UuXG5cbldoZW4gYSBgYHJldHVybmBgLCBgYGJyZWFrYGAgb3IgYGBjb250aW51ZWBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpblxudGhlIGBgdHJ5YGAgc3VpdGUgb2YgYSBgYHRyeWBgLi4uYGBmaW5hbGx5YGAgc3RhdGVtZW50LCB0aGVcbmBgZmluYWxseWBgIGNsYXVzZSBpcyBhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBpcyBpbGxlZ2FsIGluIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGFcbnByb2JsZW0gd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmVcbmxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgYGByYWlzZWBgIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG4nLAotICd0eXBlcyc6ICdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSBgYE5vbmVgYC5cbiAgIEl0IGlzIHVzZWQgdG8gc2lnbmlmeSB0aGUgYWJzZW5jZSBvZiBhIHZhbHVlIGluIG1hbnkgc2l0dWF0aW9ucyxcbiAgIGUuZy4sIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuXG4gICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuXG5Ob3RJbXBsZW1lbnRlZFxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4gICBgYE5vdEltcGxlbWVudGVkYGAuIE51bWVyaWMgbWV0aG9kcyBhbmQgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbWF5XG4gICByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgdGhlXG4gICBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGUgcmVmbGVjdGVkXG4gICBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGUgb3BlcmF0b3IuKSAgSXRzXG4gICB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5FbGxpcHNpc1xuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsIGBgLi4uYGAgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lIGBgRWxsaXBzaXNgYC4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5gYG51bWJlcnMuTnVtYmVyYGBcbiAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgYnlcbiAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gIE51bWVyaWNcbiAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4gICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4gICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsIHJlcHJlc2VudGF0aW9uXG4gICBpbiBjb21wdXRlcnMuXG5cbiAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZFxuICAgY29tcGxleCBudW1iZXJzOlxuXG4gICBgYG51bWJlcnMuSW50ZWdyYWxgYFxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoYGBpbnRgYClcblxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4gICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mIHNoaWZ0XG4gICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCBhbmRcbiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyXCdzXG4gICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgb2ZcbiAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG5cbiAgICAgIEJvb2xlYW5zIChgYGJvb2xgYClcbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlIHR3b1xuICAgICAgICAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZSBhcmUgdGhlIG9ubHlcbiAgICAgICAgIEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlIGludGVnZXJcbiAgICAgICAgIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kIDEsXG4gICAgICAgICByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzIGBgIkZhbHNlImBgIG9yXG4gICAgICAgICBgYCJUcnVlImBgIGFyZSByZXR1cm5lZCwgcmVzcGVjdGl2ZWx5LlxuXG4gICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgdGhlXG4gICAgICBtb3N0IG1lYW5pbmdmdWwgaW50ZXJwcmV0YXRpb24gb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9uc1xuICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuXG4gICBgYG51bWJlcnMuUmVhbGBgIChgYGZsb2F0YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgbWFjaGluZS1sZXZlbCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50XG4gICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4gICAgICBhcmNoaXRlY3R1cmUgKGFuZCBDIG9yIEphdmEgaW1wbGVtZW50YXRpb24pIGZvciB0aGUgYWNjZXB0ZWRcbiAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgc2luZ2xlLVxuICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGlzXG4gICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gdGhlcmUgaXNcbiAgICAgIG5vIHJlYXNvbiB0byBjb21wbGljYXRlIHRoZSBsYW5ndWFnZSB3aXRoIHR3byBraW5kcyBvZiBmbG9hdGluZ1xuICAgICAgcG9pbnQgbnVtYmVycy5cblxuICAgYGBudW1iZXJzLkNvbXBsZXhgYCAoYGBjb21wbGV4YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4gICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzIGFwcGx5XG4gICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiBhXG4gICAgICBjb21wbGV4IG51bWJlciBgYHpgYCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuICAgICAgYXR0cmlidXRlcyBgYHoucmVhbGBgIGFuZCBgYHouaW1hZ2BgLlxuXG5TZXF1ZW5jZXNcbiAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4gICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZlxuICAgaXRlbXMgb2YgYSBzZXF1ZW5jZS4gV2hlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UgaXMgKm4qLCB0aGVcbiAgIGluZGV4IHNldCBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2ZcbiAgIHNlcXVlbmNlICphKiBpcyBzZWxlY3RlZCBieSBgYGFbaV1gYC5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiBgYGFbaTpqXWBgIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbiAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqIGBgPD1gYCAqayogYGA8YGAgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6IGBgYVtpOmo6a11gYCBzZWxlY3RzIGFsbCBpdGVtcyBvZiAqYSogd2l0aCBpbmRleCAqeCpcbiAgIHdoZXJlIGBgeCA9IGkgKyBuKmtgYCwgKm4qIGBgPj1gYCBgYDBgYCBhbmQgKmkqIGBgPD1gYCAqeCogYGA8YGBcbiAgICpqKi5cblxuICAgU2VxdWVuY2VzIGFyZSBkaXN0aW5ndWlzaGVkIGFjY29yZGluZyB0byB0aGVpciBtdXRhYmlsaXR5OlxuXG4gICBJbW11dGFibGUgc2VxdWVuY2VzXG4gICAgICBBbiBvYmplY3Qgb2YgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUgY2Fubm90IGNoYW5nZSBvbmNlIGl0IGlzXG4gICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzLFxuICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7IGhvd2V2ZXIsXG4gICAgICB0aGUgY29sbGVjdGlvbiBvZiBvYmplY3RzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgYW4gaW1tdXRhYmxlXG4gICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG5cbiAgICAgIFN0cmluZ3NcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHN0cmluZyBvYmplY3QgYXJlIFVuaWNvZGUgY29kZSB1bml0cy4gIEFcbiAgICAgICAgIFVuaWNvZGUgY29kZSB1bml0IGlzIHJlcHJlc2VudGVkIGJ5IGEgc3RyaW5nIG9iamVjdCBvZiBvbmVcbiAgICAgICAgIGl0ZW0gYW5kIGNhbiBob2xkIGVpdGhlciBhIDE2LWJpdCBvciAzMi1iaXQgdmFsdWVcbiAgICAgICAgIHJlcHJlc2VudGluZyBhIFVuaWNvZGUgb3JkaW5hbCAodGhlIG1heGltdW0gdmFsdWUgZm9yIHRoZVxuICAgICAgICAgb3JkaW5hbCBpcyBnaXZlbiBpbiBgYHN5cy5tYXh1bmljb2RlYGAsIGFuZCBkZXBlbmRzIG9uIGhvd1xuICAgICAgICAgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lKS4gIFN1cnJvZ2F0ZSBwYWlycyBtYXlcbiAgICAgICAgIGJlIHByZXNlbnQgaW4gdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQgd2lsbCBiZSByZXBvcnRlZCBhcyB0d29cbiAgICAgICAgIHNlcGFyYXRlIGl0ZW1zLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNocigpYGAgYW5kXG4gICAgICAgICBgYG9yZCgpYGAgY29udmVydCBiZXR3ZWVuIGNvZGUgdW5pdHMgYW5kIG5vbm5lZ2F0aXZlIGludGVnZXJzXG4gICAgICAgICByZXByZXNlbnRpbmcgdGhlIFVuaWNvZGUgb3JkaW5hbHMgYXMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgICAgICAgU3RhbmRhcmQgMy4wLiBDb252ZXJzaW9uIGZyb20gYW5kIHRvIG90aGVyIGVuY29kaW5ncyBhcmVcbiAgICAgICAgIHBvc3NpYmxlIHRocm91Z2ggdGhlIHN0cmluZyBtZXRob2QgYGBlbmNvZGUoKWBgLlxuXG4gICAgICBUdXBsZXNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyBvZlxuICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSBcJ3NpbmdsZXRvblwnKSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gYnlcbiAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuXG4gICAgICBCeXRlc1xuICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSA4LWJpdFxuICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4gICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSBgYGJcJ2FiY1wnYGAgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgYGBieXRlcygpYGAgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgYGBkZWNvZGUoKWBgXG4gICAgICAgICBtZXRob2QuXG5cbiAgIE11dGFibGUgc2VxdWVuY2VzXG4gICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgVGhlXG4gICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgb2ZcbiAgICAgIGFzc2lnbm1lbnQgYW5kIGBgZGVsYGAgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gYGBieXRlYXJyYXkoKWBgIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgcHJvdmlkZVxuICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuICAgICAgICAgb2JqZWN0cy5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgYGBhcnJheWBgIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSBvZlxuICAgICAgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgXG4gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSBmYXN0XG4gICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbiAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4gICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG5cbiAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbiAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvclxuICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCBgYDFgYCBhbmRcbiAgIGBgMS4wYGApLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgYGBzZXQoKWBgIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSBzZXZlcmFsXG4gICAgICBtZXRob2RzLCBzdWNoIGFzIGBgYWRkKClgYC5cblxuICAgRnJvemVuIHNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbiAgICAgIGJ1aWx0LWluIGBgZnJvemVuc2V0KClgYCBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzXG4gICAgICBpbW11dGFibGUgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2ZcbiAgICAgIGFub3RoZXIgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gYGBhW2tdYGAgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5XG4gICBgYGtgYCBmcm9tIHRoZSBtYXBwaW5nIGBgYWBgOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZFxuICAgYXMgdGhlIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciBgYGRlbGBgIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pblxuICAgZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG5cbiAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuXG4gICBEaWN0aW9uYXJpZXNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4gICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlIGFzXG4gICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbiAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG4gICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleVwncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWNcbiAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgICAgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuICAgICAgZGljdGlvbmFyeSBlbnRyeS5cblxuICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSBgYHsuLi59YGBcbiAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiAqRGljdGlvbmFyeSBkaXNwbGF5cyopLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgYGBkYm0ubmRibWBgIGFuZCBgYGRibS5nbnVgYCBwcm92aWRlXG4gICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlXG4gICAgICBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlLlxuXG5DYWxsYWJsZSB0eXBlc1xuICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuICAgc2VjdGlvbiAqQ2FsbHMqKSBjYW4gYmUgYXBwbGllZDpcblxuICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKikuICBJdCBzaG91bGQgYmVcbiAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICAgIGFzIHRoZSBmdW5jdGlvblwncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgIFNwZWNpYWwgYXR0cmlidXRlczpcblxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuICAgICAgfCBgYF9fZG9jX19gYCAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5hdmFpbGFibGUgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19uYW1lX19gYCAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19tb2R1bGVfX2BgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZGVmYXVsdHNfX2BgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50IHZhbHVlcyBmb3IgdGhvc2UgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBOb25lYGAgaWYgbm8gYXJndW1lbnRzICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhhdmUgYSBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fY29kZV9fYGAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb21waWxlZCBmdW5jdGlvbiBib2R5LiAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZ2xvYmFsc19fYGAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgaG9sZHMgdGhlIGZ1bmN0aW9uXCdzICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2xvYmFsIHZhcmlhYmxlcyAtLS0gdGhlIGdsb2JhbCB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2RpY3RfX2BgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2Nsb3N1cmVfX2BgICAgICAgICAgICB8IGBgTm9uZWBgIG9yIGEgdHVwbGUgb2YgY2VsbHMgICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGNvbnRhaW4gYmluZGluZ3MgZm9yIHRoZSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25cJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fYW5ub3RhdGlvbnNfX2BgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaWN0IGFyZSB0aGUgcGFyYW1ldGVyIG5hbWVzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBcJ3JldHVyblwnYGAgZm9yIHRoZSByZXR1cm4gIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19rd2RlZmF1bHRzX19gYCAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG5cbiAgICAgIE1vc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgbGFiZWxsZWQgIldyaXRhYmxlIiBjaGVjayB0aGUgdHlwZSBvZiB0aGVcbiAgICAgIGFzc2lnbmVkIHZhbHVlLlxuXG4gICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggbWV0YWRhdGFcbiAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCBhbmRcbiAgICAgIHNldCBzdWNoIGF0dHJpYnV0ZXMuICpOb3RlIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seVxuICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiBGdW5jdGlvblxuICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbiAgICAgIGZ1dHVyZS4qXG5cbiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvblwncyBkZWZpbml0aW9uIGNhbiBiZVxuICAgICAgcmV0cmlldmVkIGZyb20gaXRzIGNvZGUgb2JqZWN0OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGludGVybmFsXG4gICAgICB0eXBlcyBiZWxvdy5cblxuICAgSW5zdGFuY2UgbWV0aG9kc1xuICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlIGFuZFxuICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYF9fc2VsZl9fYGAgaXMgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICBvYmplY3QsIGBgX19mdW5jX19gYCBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyBgYF9fZG9jX19gYCBpcyB0aGVcbiAgICAgIG1ldGhvZFwncyBkb2N1bWVudGF0aW9uIChzYW1lIGFzIGBgX19mdW5jX18uX19kb2NfX2BgKTtcbiAgICAgIGBgX19uYW1lX19gYCBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgYGBfX2Z1bmNfXy5fX25hbWVfX2BgKTtcbiAgICAgIGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIG1ldGhvZCB3YXMgZGVmaW5lZFxuICAgICAgaW4sIG9yIGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kXG4gICAgICBvYmplY3QgaXMgc2FpZCB0byBiZSBib3VuZC4gIFRoZSBuZXcgbWV0aG9kXCdzIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIGlzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbiAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgaXNcbiAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyBgYF9fc2VsZl9fYGBcbiAgICAgIGF0dHJpYnV0ZSBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUgaXNcbiAgICAgIHRoZSBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKGBgX19mdW5jX19gYCkgaXMgY2FsbGVkLCBpbnNlcnRpbmcgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICAoYGBfX3NlbGZfX2BgKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSxcbiAgICAgIHdoZW4gYGBDYGAgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb25cbiAgICAgIGBgZigpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYENgYCwgY2FsbGluZyBgYHguZigxKWBgXG4gICAgICBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBDLmYoeCwgMSlgYC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGRlcml2ZWQgZnJvbSBhIGNsYXNzIG1ldGhvZFxuICAgICAgb2JqZWN0LCB0aGUgImNsYXNzIGluc3RhbmNlIiBzdG9yZWQgaW4gYGBfX3NlbGZfX2BgIHdpbGxcbiAgICAgIGFjdHVhbGx5IGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgYGB4LmYoMSlgYFxuICAgICAgb3IgYGBDLmYoMSlgYCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBmKEMsMSlgYCB3aGVyZSBgYGZgYCBpc1xuICAgICAgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24uXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gaW5zdGFuY2VcbiAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgZnJvbVxuICAgICAgdGhlIGluc3RhbmNlLiAgSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bCBvcHRpbWl6YXRpb24gaXMgdG9cbiAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgZm9yXG4gICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbiAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0IGlzXG4gICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbiAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuICAgICAgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhbiBhdHRyaWJ1dGVcbiAgICAgIG9mIHRoZSBjbGFzcy5cblxuICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCAoc2VlXG4gICAgICBzZWN0aW9uICpUaGUgeWllbGQgc3RhdGVtZW50KikgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciBmdW5jdGlvbiouXG4gICAgICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLCBhbHdheXMgcmV0dXJucyBhbiBpdGVyYXRvciBvYmplY3RcbiAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgY2FsbGluZ1xuICAgICAgdGhlIGl0ZXJhdG9yXCdzIGBgX19uZXh0X18oKWBgIG1ldGhvZCB3aWxsIGNhdXNlIHRoZSBmdW5jdGlvbiB0b1xuICAgICAgZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50LlxuICAgICAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSBgYHJldHVybmBgIHN0YXRlbWVudCBvciBmYWxscyBvZmZcbiAgICAgIHRoZSBlbmQsIGEgYGBTdG9wSXRlcmF0aW9uYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlXG4gICAgICBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgdmFsdWVzIHRvIGJlXG4gICAgICByZXR1cm5lZC5cblxuICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4gICAgICBBIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGEgQyBmdW5jdGlvbi5cbiAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgYGBsZW4oKWBgIGFuZCBgYG1hdGguc2luKClgYFxuICAgICAgKGBgbWF0aGBgIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSBvZlxuICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCByZWFkLVxuICAgICAgb25seSBhdHRyaWJ1dGVzOiBgYF9fZG9jX19gYCBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZTsgYGBfX25hbWVfX2BgIGlzIHRoZVxuICAgICAgZnVuY3Rpb25cJ3MgbmFtZTsgYGBfX3NlbGZfX2BgIGlzIHNldCB0byBgYE5vbmVgYCAoYnV0IHNlZSB0aGVcbiAgICAgIG5leHQgaXRlbSk7IGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlXG4gICAgICBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgYGBhbGlzdC5hcHBlbmQoKWBgLCBhc3N1bWluZyAqYWxpc3QqIGlzIGEgbGlzdCBvYmplY3QuIEluIHRoaXNcbiAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgYGBfX3NlbGZfX2BgIGlzIHNldCB0byB0aGVcbiAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG5cbiAgIENsYXNzZXNcbiAgICAgIENsYXNzZXMgYXJlIGNhbGxhYmxlLiAgVGhlc2Ugb2JqZWN0cyBub3JtYWxseSBhY3QgYXMgZmFjdG9yaWVzXG4gICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgZm9yXG4gICAgICBjbGFzcyB0eXBlcyB0aGF0IG92ZXJyaWRlIGBgX19uZXdfXygpYGAuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuICAgICAgYGBfX2luaXRfXygpYGAgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuXG4gICBDbGFzcyBJbnN0YW5jZXNcbiAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSBkZWZpbmluZ1xuICAgICAgYSBgYF9fY2FsbF9fKClgYCBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGltcG9ydGVkIGJ5IHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCAoc2VlIHNlY3Rpb24gKlRoZVxuICAgaW1wb3J0IHN0YXRlbWVudCopLiBBIG1vZHVsZSBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5XG4gICBhIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzIGlzIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlXG4gICBfX2dsb2JhbHNfXyBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuXG4gICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSxcbiAgIGUuZy4sIGBgbS54YGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXWBgLiBBIG1vZHVsZSBvYmplY3RcbiAgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGUgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlXG4gICAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgYGBtLnggPSAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiBgYF9fZGljdF9fYGAgaXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2VcbiAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbiAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkXG4gICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgaGFzXG4gICBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5IG9yIGtlZXAgdGhlXG4gICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBtb2R1bGVcJ3NcbiAgIG5hbWU7IGBgX19kb2NfX2BgIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgXG4gICBpZiB1bmF2YWlsYWJsZTsgYGBfX2ZpbGVfX2BgIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoXG4gICB0aGUgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZVxuICAgYGBfX2ZpbGVfX2BgIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudCBmb3IgQyBtb2R1bGVzIHRoYXQgYXJlXG4gICBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yIGV4dGVuc2lvbiBtb2R1bGVzXG4gICBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlXG4gICBzaGFyZWQgbGlicmFyeSBmaWxlLlxuXG5DdXN0b20gY2xhc3Nlc1xuICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAoc2VlXG4gICBzZWN0aW9uICpDbGFzcyBkZWZpbml0aW9ucyopLiAgQSBjbGFzcyBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWRcbiAgIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuIENsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkXG4gICB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgYGBDLnhgYCBpcyB0cmFuc2xhdGVkIHRvXG4gICBgYEMuX19kaWN0X19bIngiXWBgIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2hcbiAgIGFsbG93IGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlXG4gICBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuXG4gICBXaGVuIGEgY2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZSAoZm9yIGNsYXNzIGBgQ2BgLCBzYXkpIHdvdWxkIHlpZWxkXG4gICBhIGNsYXNzIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kXG4gICBvYmplY3Qgd2hvc2UgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZXMgaXMgYGBDYGAuICBXaGVuIGl0IHdvdWxkIHlpZWxkXG4gICBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBvYmplY3Qgd3JhcHBlZFxuICAgYnkgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKlxuICAgZm9yIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgYGBfX2RpY3RfX2BgLlxuXG4gICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzc1wncyBkaWN0aW9uYXJ5LCBuZXZlclxuICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuXG4gICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgaW5zdGFuY2VcbiAgIChzZWUgYmVsb3cpLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6IGBgX19uYW1lX19gYCBpcyB0aGUgY2xhc3MgbmFtZTsgYGBfX21vZHVsZV9fYGBcbiAgIGlzIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7IGBgX19kaWN0X19gYCBpc1xuICAgdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3NcJ3MgbmFtZXNwYWNlOyBgYF9fYmFzZXNfX2BgIGlzIGFcbiAgIHR1cGxlIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLFxuICAgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDtcbiAgIGBgX19kb2NfX2BgIGlzIHRoZSBjbGFzc1wncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgTm9uZSBpZlxuICAgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdFxuICAgd2hvc2UgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UuICBTdGF0aWMgbWV0aG9kIGFuZFxuICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyogZm9yIGFub3RoZXIgd2F5XG4gICBpbiB3aGljaCBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgcmV0cmlldmVkIHZpYSBpdHMgaW5zdGFuY2VzIG1heVxuICAgZGlmZmVyIGZyb20gdGhlIG9iamVjdHMgYWN0dWFsbHkgc3RvcmVkIGluIHRoZSBjbGFzc1wnc1xuICAgYGBfX2RpY3RfX2BgLiAgSWYgbm8gY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kLCBhbmQgdGhlIG9iamVjdFwnc1xuICAgY2xhc3MgaGFzIGEgYGBfX2dldGF0dHJfXygpYGAgbWV0aG9kLCB0aGF0IGlzIGNhbGxlZCB0byBzYXRpc2Z5IHRoZVxuICAgbG9va3VwLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlXCdzXG4gICBkaWN0aW9uYXJ5LCBuZXZlciBhIGNsYXNzXCdzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiAgIGBgX19zZXRhdHRyX18oKWBgIG9yIGBgX19kZWxhdHRyX18oKWBgIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yIG1hcHBpbmdzXG4gICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4gICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6IGBgX19kaWN0X19gYCBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4gICBgYF9fY2xhc3NfX2BgIGlzIHRoZSBpbnN0YW5jZVwncyBjbGFzcy5cblxuSS9PIG9iamVjdHMgKGFsc28ga25vd24gYXMgZmlsZSBvYmplY3RzKVxuICAgQSAqZmlsZSBvYmplY3QqIHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgVmFyaW91cyBzaG9ydGN1dHMgYXJlXG4gICBhdmFpbGFibGUgdG8gY3JlYXRlIGZpbGUgb2JqZWN0czogdGhlIGBgb3BlbigpYGAgYnVpbHQtaW4gZnVuY3Rpb24sXG4gICBhbmQgYWxzbyBgYG9zLnBvcGVuKClgYCwgYGBvcy5mZG9wZW4oKWBgLCBhbmQgdGhlIGBgbWFrZWZpbGUoKWBgXG4gICBtZXRob2Qgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4gICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG5cbiAgIFRoZSBvYmplY3RzIGBgc3lzLnN0ZGluYGAsIGBgc3lzLnN0ZG91dGBgIGFuZCBgYHN5cy5zdGRlcnJgYCBhcmVcbiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlclwnc1xuICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gdGV4dFxuICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4gICBgYGlvLlRleHRJT0Jhc2VgYCBhYnN0cmFjdCBjbGFzcy5cblxuSW50ZXJuYWwgdHlwZXNcbiAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gdGhlXG4gICB1c2VyLiBUaGVpciBkZWZpbml0aW9ucyBtYXkgY2hhbmdlIHdpdGggZnV0dXJlIHZlcnNpb25zIG9mIHRoZVxuICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuXG4gICBDb2RlIG9iamVjdHNcbiAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUsXG4gICAgICBvciAqYnl0ZWNvZGUqLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY29kZSBvYmplY3QgYW5kIGFcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gZXhwbGljaXRcbiAgICAgIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb25cJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCB3YXNcbiAgICAgIGRlZmluZWQpLCB3aGlsZSBhIGNvZGUgb2JqZWN0IGNvbnRhaW5zIG5vIGNvbnRleHQ7IGFsc28gdGhlXG4gICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsIG5vdFxuICAgICAgaW4gdGhlIGNvZGUgb2JqZWN0IChiZWNhdXNlIHRoZXkgcmVwcmVzZW50IHZhbHVlcyBjYWxjdWxhdGVkIGF0XG4gICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSBpbW11dGFibGVcbiAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvIG11dGFibGVcbiAgICAgIG9iamVjdHMuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgY29fbmFtZWBgIGdpdmVzIHRoZSBmdW5jdGlvblxuICAgICAgbmFtZTsgYGBjb19hcmdjb3VudGBgIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHNcbiAgICAgIChpbmNsdWRpbmcgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyBgYGNvX25sb2NhbHNgYCBpcyB0aGVcbiAgICAgIG51bWJlciBvZiBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzKTsgYGBjb192YXJuYW1lc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2ZcbiAgICAgIHRoZSBsb2NhbCB2YXJpYWJsZXMgKHN0YXJ0aW5nIHdpdGggdGhlIGFyZ3VtZW50IG5hbWVzKTtcbiAgICAgIGBgY29fY2VsbHZhcnNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsXG4gICAgICB2YXJpYWJsZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zO1xuICAgICAgYGBjb19mcmVldmFyc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZVxuICAgICAgdmFyaWFibGVzOyBgYGNvX2NvZGVgYCBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHNlcXVlbmNlIG9mXG4gICAgICBieXRlY29kZSBpbnN0cnVjdGlvbnM7IGBgY29fY29uc3RzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZVxuICAgICAgbGl0ZXJhbHMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7IGBgY29fbmFtZXNgYCBpcyBhIHR1cGxlXG4gICAgICBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTsgYGBjb19maWxlbmFtZWBgIGlzXG4gICAgICB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGUgY29kZSB3YXMgY29tcGlsZWQ7XG4gICAgICBgYGNvX2ZpcnN0bGluZW5vYGAgaXMgdGhlIGZpcnN0IGxpbmUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbjtcbiAgICAgIGBgY29fbG5vdGFiYGAgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7IGBgY29fc3RhY2tzaXplYGAgaXMgdGhlIHJlcXVpcmVkIHN0YWNrIHNpemVcbiAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgYGBjb19mbGFnc2BgIGlzIGFuIGludGVnZXIgZW5jb2RpbmdcbiAgICAgIGEgbnVtYmVyIG9mIGZsYWdzIGZvciB0aGUgaW50ZXJwcmV0ZXIuXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGZvciBgYGNvX2ZsYWdzYGA6IGJpdFxuICAgICAgYGAweDA0YGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBgYCphcmd1bWVudHNgYCBzeW50YXhcbiAgICAgIHRvIGFjY2VwdCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBiaXRcbiAgICAgIGBgMHgwOGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYGAqKmtleXdvcmRzYGAgc3ludGF4XG4gICAgICB0byBhY2NlcHQgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzOyBiaXQgYGAweDIwYGAgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gaXMgYSBnZW5lcmF0b3IuXG5cbiAgICAgIEZ1dHVyZSBmZWF0dXJlIGRlY2xhcmF0aW9ucyAoYGBmcm9tIF9fZnV0dXJlX18gaW1wb3J0XG4gICAgICBkaXZpc2lvbmBgKSBhbHNvIHVzZSBiaXRzIGluIGBgY29fZmxhZ3NgYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGFcbiAgICAgIGNvZGUgb2JqZWN0IHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdFxuICAgICAgYGAweDIwMDBgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHdhcyBjb21waWxlZCB3aXRoIGZ1dHVyZVxuICAgICAgZGl2aXNpb24gZW5hYmxlZDsgYml0cyBgYDB4MTBgYCBhbmQgYGAweDEwMDBgYCB3ZXJlIHVzZWQgaW5cbiAgICAgIGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uLlxuXG4gICAgICBPdGhlciBiaXRzIGluIGBgY29fZmxhZ3NgYCBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS5cblxuICAgICAgSWYgYSBjb2RlIG9iamVjdCByZXByZXNlbnRzIGEgZnVuY3Rpb24sIHRoZSBmaXJzdCBpdGVtIGluXG4gICAgICBgYGNvX2NvbnN0c2BgIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICBgYE5vbmVgYCBpZiB1bmRlZmluZWQuXG5cbiAgIEZyYW1lIG9iamVjdHNcbiAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgZl9iYWNrYGAgaXMgdG8gdGhlIHByZXZpb3VzXG4gICAgICBzdGFjayBmcmFtZSAodG93YXJkcyB0aGUgY2FsbGVyKSwgb3IgYGBOb25lYGAgaWYgdGhpcyBpcyB0aGVcbiAgICAgIGJvdHRvbSBzdGFjayBmcmFtZTsgYGBmX2NvZGVgYCBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWRcbiAgICAgIGluIHRoaXMgZnJhbWU7IGBgZl9sb2NhbHNgYCBpcyB0aGUgZGljdGlvbmFyeSB1c2VkIHRvIGxvb2sgdXBcbiAgICAgIGxvY2FsIHZhcmlhYmxlczsgYGBmX2dsb2JhbHNgYCBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgYGBmX2J1aWx0aW5zYGAgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7XG4gICAgICBgYGZfbGFzdGlgYCBnaXZlcyB0aGUgcHJlY2lzZSBpbnN0cnVjdGlvbiAodGhpcyBpcyBhbiBpbmRleCBpbnRvXG4gICAgICB0aGUgYnl0ZWNvZGUgc3RyaW5nIG9mIHRoZSBjb2RlIG9iamVjdCkuXG5cbiAgICAgIFNwZWNpYWwgd3JpdGFibGUgYXR0cmlidXRlczogYGBmX3RyYWNlYGAsIGlmIG5vdCBgYE5vbmVgYCwgaXMgYVxuICAgICAgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBjb2RlIGxpbmUgKHRoaXMgaXNcbiAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgYGBmX2xpbmVub2BgIGlzIHRoZSBjdXJyZW50IGxpbmUgbnVtYmVyXG4gICAgICBvZiB0aGUgZnJhbWUgLS0tIHdyaXRpbmcgdG8gdGhpcyBmcm9tIHdpdGhpbiBhIHRyYWNlIGZ1bmN0aW9uXG4gICAgICBqdW1wcyB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlIGJvdHRvbS1tb3N0IGZyYW1lKS4gIEFcbiAgICAgIGRlYnVnZ2VyIGNhbiBpbXBsZW1lbnQgYSBKdW1wIGNvbW1hbmQgKGFrYSBTZXQgTmV4dCBTdGF0ZW1lbnQpXG4gICAgICBieSB3cml0aW5nIHRvIGZfbGluZW5vLlxuXG4gICBUcmFjZWJhY2sgb2JqZWN0c1xuICAgICAgVHJhY2ViYWNrIG9iamVjdHMgcmVwcmVzZW50IGEgc3RhY2sgdHJhY2Ugb2YgYW4gZXhjZXB0aW9uLiAgQVxuICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gdGhlXG4gICAgICBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHVud2luZHMgdGhlIGV4ZWN1dGlvbiBzdGFjaywgYXRcbiAgICAgIGVhY2ggdW53b3VuZCBsZXZlbCBhIHRyYWNlYmFjayBvYmplY3QgaXMgaW5zZXJ0ZWQgaW4gZnJvbnQgb2ZcbiAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgZW50ZXJlZCxcbiAgICAgIHRoZSBzdGFjayB0cmFjZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbS4gKFNlZSBzZWN0aW9uXG4gICAgICAqVGhlIHRyeSBzdGF0ZW1lbnQqLikgSXQgaXMgYWNjZXNzaWJsZSBhcyB0aGUgdGhpcmQgaXRlbSBvZiB0aGVcbiAgICAgIHR1cGxlIHJldHVybmVkIGJ5IGBgc3lzLmV4Y19pbmZvKClgYC4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWluc1xuICAgICAgbm8gc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseVxuICAgICAgZm9ybWF0dGVkKSB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXNcbiAgICAgIGludGVyYWN0aXZlLCBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzXG4gICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYHRiX25leHRgYCBpcyB0aGUgbmV4dCBsZXZlbCBpblxuICAgICAgdGhlIHN0YWNrIHRyYWNlICh0b3dhcmRzIHRoZSBmcmFtZSB3aGVyZSB0aGUgZXhjZXB0aW9uXG4gICAgICBvY2N1cnJlZCksIG9yIGBgTm9uZWBgIGlmIHRoZXJlIGlzIG5vIG5leHQgbGV2ZWw7IGBgdGJfZnJhbWVgYFxuICAgICAgcG9pbnRzIHRvIHRoZSBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7XG4gICAgICBgYHRiX2xpbmVub2BgIGdpdmVzIHRoZSBsaW5lIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uXG4gICAgICBvY2N1cnJlZDsgYGB0Yl9sYXN0aWBgIGluZGljYXRlcyB0aGUgcHJlY2lzZSBpbnN0cnVjdGlvbi4gIFRoZVxuICAgICAgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gaW4gdGhlIHRyYWNlYmFjayBtYXkgZGlmZmVyXG4gICAgICBmcm9tIHRoZSBsaW5lIG51bWJlciBvZiBpdHMgZnJhbWUgb2JqZWN0IGlmIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkIGluIGEgYGB0cnlgYCBzdGF0ZW1lbnQgd2l0aCBubyBtYXRjaGluZyBleGNlcHQgY2xhdXNlXG4gICAgICBvciB3aXRoIGEgZmluYWxseSBjbGF1c2UuXG5cbiAgIFNsaWNlIG9iamVjdHNcbiAgICAgIFNsaWNlIG9iamVjdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHNsaWNlcyBmb3IgYGBfX2dldGl0ZW1fXygpYGBcbiAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluIGBgc2xpY2UoKWBgXG4gICAgICBmdW5jdGlvbi5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBzdGFydGBgIGlzIHRoZSBsb3dlciBib3VuZDtcbiAgICAgIGBgc3RvcGBgIGlzIHRoZSB1cHBlciBib3VuZDsgYGBzdGVwYGAgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXNcbiAgICAgIGBgTm9uZWBgIGlmIG9taXR0ZWQuIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG5cbiAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcblxuICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbiAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSBvYmplY3RcbiAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiBpdGVtcy5cbiAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlIGFyZVxuICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4gICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cblxuICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4gICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4gICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzIGRlc2NyaWJlZFxuICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbiAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4gICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgdGhlXG4gICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbiAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmVcbiAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgdXN1YWxseVxuICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICBgYHN0YXRpY21ldGhvZCgpYGAgY29uc3RydWN0b3IuXG5cbiAgIENsYXNzIG1ldGhvZCBvYmplY3RzXG4gICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSB3cmFwcGVyXG4gICAgICBhcm91bmQgYW5vdGhlciBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIHdheSBpbiB3aGljaCB0aGF0IG9iamVjdFxuICAgICAgaXMgcmV0cmlldmVkIGZyb20gY2xhc3NlcyBhbmQgY2xhc3MgaW5zdGFuY2VzLiBUaGUgYmVoYXZpb3VyIG9mXG4gICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbiAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkXG4gICAgICBieSB0aGUgYnVpbHQtaW4gYGBjbGFzc21ldGhvZCgpYGAgY29uc3RydWN0b3IuXG4nLAorICd0cnknOiAnXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIHRhcmdldF1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlIGBgZXhjZXB0YGAgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuXG5ubyBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgc3VpdGUsIGEgc2VhcmNoIGZvclxuYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHRcbmNsYXVzZXMgaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBblxuZXhwcmVzc2lvbi1sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlc1xuYW55IGV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdFxuZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGVcbnJlc3VsdGluZyBvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpc1xuY29tcGF0aWJsZSB3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZVxuZXhjZXB0aW9uIG9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlXG5leGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgYGB0cnlgYCBzdGF0ZW1lbnRcbnJhaXNlZCB0aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSBgYGFzYGAga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsXG5pZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nIGBgYXMgdGFyZ2V0YGAsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIGBgc3lzYGAgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzIHZpYVxuYGBzeXMuZXhjX2luZm8oKWBgLiBgYHN5cy5leGNfaW5mbygpYGAgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZlxudGhlIGV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0XG4oc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpblxudGhlIHByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gIGBgc3lzLmV4Y19pbmZvKClgYCB2YWx1ZXNcbmFyZSByZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgYGBlbHNlYGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSBgYHRyeWBgIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZVxuYXJlIG5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgYGBleGNlcHRgYCBjbGF1c2VzLlxuXG5JZiBgYGZpbmFsbHlgYCBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlXG5gYHRyeWBgIGNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSBgYGV4Y2VwdGBgIGFuZCBgYGVsc2VgYFxuY2xhdXNlcy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3RcbmhhbmRsZWQsIHRoZSBleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgaXNcbmV4ZWN1dGVkLiAgSWYgdGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gb3IgYGBicmVha2BgIHN0YXRlbWVudCwgaXQgaXNcbnJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIElmIHRoZSBgYGZpbmFsbHlgYFxuY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiB0aGUgc2F2ZWQgZXhjZXB0aW9uIGlzIHNldCBhcyB0aGVcbmNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb247IGlmIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgZXhlY3V0ZXMgYVxuYGByZXR1cm5gYCBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb24gaXMgZGlzY2FyZGVkOlxuXG4gICBkZWYgZigpOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgMS8wXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgcmV0dXJuIDQyXG5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLlxuXG5XaGVuIGEgYGByZXR1cm5gYCwgYGBicmVha2BgIG9yIGBgY29udGludWVgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW5cbnRoZSBgYHRyeWBgIHN1aXRlIG9mIGEgYGB0cnlgYC4uLmBgZmluYWxseWBgIHN0YXRlbWVudCwgdGhlXG5gYGZpbmFsbHlgYCBjbGF1c2UgaXMgYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgaXMgaWxsZWdhbCBpbiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhXG5wcm9ibGVtIHdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlXG5saWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIGBgcmFpc2VgYCBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuJywKKyAndHlwZXMnOiAnXG5UaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHlcbioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5CZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIGJ1aWx0IGludG8gUHl0aG9uLiAgRXh0ZW5zaW9uXG5tb2R1bGVzICh3cml0dGVuIGluIEMsIEphdmEsIG9yIG90aGVyIGxhbmd1YWdlcywgZGVwZW5kaW5nIG9uIHRoZVxuaW1wbGVtZW50YXRpb24pIGNhbiBkZWZpbmUgYWRkaXRpb25hbCB0eXBlcy4gIEZ1dHVyZSB2ZXJzaW9ucyBvZlxuUHl0aG9uIG1heSBhZGQgdHlwZXMgdG8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcuLCByYXRpb25hbCBudW1iZXJzLFxuZWZmaWNpZW50bHkgc3RvcmVkIGFycmF5cyBvZiBpbnRlZ2VycywgZXRjLiksIGFsdGhvdWdoIHN1Y2ggYWRkaXRpb25zXG53aWxsIG9mdGVuIGJlIHByb3ZpZGVkIHZpYSB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkLlxuXG5Tb21lIG9mIHRoZSB0eXBlIGRlc2NyaXB0aW9ucyBiZWxvdyBjb250YWluIGEgcGFyYWdyYXBoIGxpc3Rpbmdcblwnc3BlY2lhbCBhdHRyaWJ1dGVzLlwnICBUaGVzZSBhcmUgYXR0cmlidXRlcyB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIHRoZVxuaW1wbGVtZW50YXRpb24gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgVGhlaXIgZGVmaW5pdGlvblxubWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuXG5Ob25lXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWUgYGBOb25lYGAuXG4gICBJdCBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsXG4gICBlLmcuLCBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgYGBOb3RJbXBsZW1lbnRlZGBgLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIG1heVxuICAgcmV0dXJuIHRoaXMgdmFsdWUgaWYgdGhleSBkbyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIHRoZVxuICAgb3BlcmFuZHMgcHJvdmlkZWQuICAoVGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlIHJlZmxlY3RlZFxuICAgb3BlcmF0aW9uLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdG9yLikgIEl0c1xuICAgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuRWxsaXBzaXNcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgbGl0ZXJhbCBgYC4uLmBgIG9yIHRoZVxuICAgYnVpbHQtaW4gbmFtZSBgYEVsbGlwc2lzYGAuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuYGBudW1iZXJzLk51bWJlcmBgXG4gICBUaGVzZSBhcmUgY3JlYXRlZCBieSBudW1lcmljIGxpdGVyYWxzIGFuZCByZXR1cm5lZCBhcyByZXN1bHRzIGJ5XG4gICBhcml0aG1ldGljIG9wZXJhdG9ycyBhbmQgYXJpdGhtZXRpYyBidWlsdC1pbiBmdW5jdGlvbnMuICBOdW1lcmljXG4gICBvYmplY3RzIGFyZSBpbW11dGFibGU7IG9uY2UgY3JlYXRlZCB0aGVpciB2YWx1ZSBuZXZlciBjaGFuZ2VzLlxuICAgUHl0aG9uIG51bWJlcnMgYXJlIG9mIGNvdXJzZSBzdHJvbmdseSByZWxhdGVkIHRvIG1hdGhlbWF0aWNhbFxuICAgbnVtYmVycywgYnV0IHN1YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIG9mIG51bWVyaWNhbCByZXByZXNlbnRhdGlvblxuICAgaW4gY29tcHV0ZXJzLlxuXG4gICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBhbmRcbiAgIGNvbXBsZXggbnVtYmVyczpcblxuICAgYGBudW1iZXJzLkludGVncmFsYGBcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBlbGVtZW50cyBmcm9tIHRoZSBtYXRoZW1hdGljYWwgc2V0IG9mIGludGVnZXJzXG4gICAgICAocG9zaXRpdmUgYW5kIG5lZ2F0aXZlKS5cblxuICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBpbnRlZ2VyczpcblxuICAgICAgSW50ZWdlcnMgKGBgaW50YGApXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoYGBib29sYGApXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgdGhlIHRydXRoIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZS4gIFRoZSB0d29cbiAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgRmFsc2UgYW5kIFRydWUgYXJlIHRoZSBvbmx5XG4gICAgICAgICBCb29sZWFuIG9iamVjdHMuIFRoZSBCb29sZWFuIHR5cGUgaXMgYSBzdWJ0eXBlIG9mIHRoZSBpbnRlZ2VyXG4gICAgICAgICB0eXBlLCBhbmQgQm9vbGVhbiB2YWx1ZXMgYmVoYXZlIGxpa2UgdGhlIHZhbHVlcyAwIGFuZCAxLFxuICAgICAgICAgcmVzcGVjdGl2ZWx5LCBpbiBhbG1vc3QgYWxsIGNvbnRleHRzLCB0aGUgZXhjZXB0aW9uIGJlaW5nXG4gICAgICAgICB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgc3RyaW5nLCB0aGUgc3RyaW5ncyBgYCJGYWxzZSJgYCBvclxuICAgICAgICAgYGAiVHJ1ZSJgYCBhcmUgcmV0dXJuZWQsIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIHJ1bGVzIGZvciBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIGFyZSBpbnRlbmRlZCB0byBnaXZlIHRoZVxuICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrIG9wZXJhdGlvbnNcbiAgICAgIGludm9sdmluZyBuZWdhdGl2ZSBpbnRlZ2Vycy5cblxuICAgYGBudW1iZXJzLlJlYWxgYCAoYGBmbG9hdGBgKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBpc1xuICAgICAgZHdhcmZlZCBieSB0aGUgb3ZlcmhlYWQgb2YgdXNpbmcgb2JqZWN0cyBpbiBQeXRob24sIHNvIHRoZXJlIGlzXG4gICAgICBubyByZWFzb24gdG8gY29tcGxpY2F0ZSB0aGUgbGFuZ3VhZ2Ugd2l0aCB0d28ga2luZHMgb2YgZmxvYXRpbmdcbiAgICAgIHBvaW50IG51bWJlcnMuXG5cbiAgIGBgbnVtYmVycy5Db21wbGV4YGAgKGBgY29tcGxleGBgKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgYGB6YGAgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSByZWFkLW9ubHlcbiAgICAgIGF0dHJpYnV0ZXMgYGB6LnJlYWxgYCBhbmQgYGB6LmltYWdgYC5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYCByZXR1cm5zIHRoZSBudW1iZXIgb2ZcbiAgIGl0ZW1zIG9mIGEgc2VxdWVuY2UuIFdoZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlIGlzICpuKiwgdGhlXG4gICBpbmRleCBzZXQgY29udGFpbnMgdGhlIG51bWJlcnMgMCwgMSwgLi4uLCAqbiotMS4gIEl0ZW0gKmkqIG9mXG4gICBzZXF1ZW5jZSAqYSogaXMgc2VsZWN0ZWQgYnkgYGBhW2ldYGAuXG5cbiAgIFNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgc2xpY2luZzogYGBhW2k6al1gYCBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiBgYDw9YGAgKmsqIGBgPGBgICpqKi4gIFdoZW4gdXNlZCBhcyBhblxuICAgZXhwcmVzc2lvbiwgYSBzbGljZSBpcyBhIHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUuICBUaGlzIGltcGxpZXNcbiAgIHRoYXQgdGhlIGluZGV4IHNldCBpcyByZW51bWJlcmVkIHNvIHRoYXQgaXQgc3RhcnRzIGF0IDAuXG5cbiAgIFNvbWUgc2VxdWVuY2VzIGFsc28gc3VwcG9ydCAiZXh0ZW5kZWQgc2xpY2luZyIgd2l0aCBhIHRoaXJkICJzdGVwIlxuICAgcGFyYW1ldGVyOiBgYGFbaTpqOmtdYGAgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqXG4gICB3aGVyZSBgYHggPSBpICsgbiprYGAsICpuKiBgYD49YGAgYGAwYGAgYW5kICppKiBgYDw9YGAgKngqIGBgPGBgXG4gICAqaiouXG5cbiAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcblxuICAgSW1tdXRhYmxlIHNlcXVlbmNlc1xuICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSBpdCBpc1xuICAgICAgY3JlYXRlZC4gIChJZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0cyxcbiAgICAgIHRoZXNlIG90aGVyIG9iamVjdHMgbWF5IGJlIG11dGFibGUgYW5kIG1heSBiZSBjaGFuZ2VkOyBob3dldmVyLFxuICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuIGltbXV0YWJsZVxuICAgICAgb2JqZWN0IGNhbm5vdCBjaGFuZ2UuKVxuXG4gICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzOlxuXG4gICAgICBTdHJpbmdzXG4gICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlXG4gICAgICAgICBjb2RlcG9pbnRzLiBBbGwgdGhlIGNvZGVwb2ludHMgaW4gcmFuZ2UgYGBVKzAwMDAgLSBVKzEwRkZGRmBgXG4gICAgICAgICBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc25cJ3QgaGF2ZSBhXG4gICAgICAgICBgYGNocmBgIHR5cGUsIGFuZCBldmVyeSBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyBpc1xuICAgICAgICAgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcgb2JqZWN0IHdpdGggbGVuZ3RoIGBgMWBgLiAgVGhlIGJ1aWx0LVxuICAgICAgICAgaW4gZnVuY3Rpb24gYGBvcmQoKWBgIGNvbnZlcnRzIGEgY2hhcmFjdGVyIHRvIGl0cyBjb2RlcG9pbnRcbiAgICAgICAgIChhcyBhbiBpbnRlZ2VyKTsgYGBjaHIoKWBgIGNvbnZlcnRzIGFuIGludGVnZXIgaW4gcmFuZ2UgYGAwIC1cbiAgICAgICAgIDEwRkZGRmBgIHRvIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhY3Rlci4gYGBzdHIuZW5jb2RlKClgYCBjYW5cbiAgICAgICAgIGJlIHVzZWQgdG8gY29udmVydCBhIGBgc3RyYGAgdG8gYGBieXRlc2BgIHVzaW5nIHRoZSBnaXZlblxuICAgICAgICAgZW5jb2RpbmcsIGFuZCBgYGJ5dGVzLmRlY29kZSgpYGAgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGVcbiAgICAgICAgIG9wcG9zaXRlLlxuXG4gICAgICBUdXBsZXNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyBvZlxuICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSBcJ3NpbmdsZXRvblwnKSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gYnlcbiAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuXG4gICAgICBCeXRlc1xuICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSA4LWJpdFxuICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4gICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSBgYGJcJ2FiY1wnYGAgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgYGBieXRlcygpYGAgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgYGBkZWNvZGUoKWBgXG4gICAgICAgICBtZXRob2QuXG5cbiAgIE11dGFibGUgc2VxdWVuY2VzXG4gICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgVGhlXG4gICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgb2ZcbiAgICAgIGFzc2lnbm1lbnQgYW5kIGBgZGVsYGAgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gYGBieXRlYXJyYXkoKWBgIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgcHJvdmlkZVxuICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuICAgICAgICAgb2JqZWN0cy5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgYGBhcnJheWBgIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSBvZlxuICAgICAgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgXG4gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSBmYXN0XG4gICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbiAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4gICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG5cbiAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbiAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvclxuICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCBgYDFgYCBhbmRcbiAgIGBgMS4wYGApLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgYGBzZXQoKWBgIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSBzZXZlcmFsXG4gICAgICBtZXRob2RzLCBzdWNoIGFzIGBgYWRkKClgYC5cblxuICAgRnJvemVuIHNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbiAgICAgIGJ1aWx0LWluIGBgZnJvemVuc2V0KClgYCBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzXG4gICAgICBpbW11dGFibGUgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2ZcbiAgICAgIGFub3RoZXIgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gYGBhW2tdYGAgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5XG4gICBgYGtgYCBmcm9tIHRoZSBtYXBwaW5nIGBgYWBgOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZFxuICAgYXMgdGhlIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciBgYGRlbGBgIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pblxuICAgZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG5cbiAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuXG4gICBEaWN0aW9uYXJpZXNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4gICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlIGFzXG4gICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbiAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG4gICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleVwncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWNcbiAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgICAgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuICAgICAgZGljdGlvbmFyeSBlbnRyeS5cblxuICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSBgYHsuLi59YGBcbiAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiAqRGljdGlvbmFyeSBkaXNwbGF5cyopLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgYGBkYm0ubmRibWBgIGFuZCBgYGRibS5nbnVgYCBwcm92aWRlXG4gICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlXG4gICAgICBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlLlxuXG5DYWxsYWJsZSB0eXBlc1xuICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuICAgc2VjdGlvbiAqQ2FsbHMqKSBjYW4gYmUgYXBwbGllZDpcblxuICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKikuICBJdCBzaG91bGQgYmVcbiAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICAgIGFzIHRoZSBmdW5jdGlvblwncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgIFNwZWNpYWwgYXR0cmlidXRlczpcblxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuICAgICAgfCBgYF9fZG9jX19gYCAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5hdmFpbGFibGUgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19uYW1lX19gYCAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19xdWFsbmFtZV9fYGAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fbW9kdWxlX19gYCAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2RlZmF1bHRzX19gYCAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yIGBgTm9uZWBgIGlmIG5vIGFyZ3VtZW50cyAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2NvZGVfX2BgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2dsb2JhbHNfX2BgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19kaWN0X19gYCAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19jbG9zdXJlX19gYCAgICAgICAgICAgfCBgYE5vbmVgYCBvciBhIHR1cGxlIG9mIGNlbGxzICAgIHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBjb250YWluIGJpbmRpbmdzIGZvciB0aGUgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2Fubm90YXRpb25zX19gYCAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yIGBgXCdyZXR1cm5cJ2BgIGZvciB0aGUgcmV0dXJuICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fa3dkZWZhdWx0c19fYGAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBfX3NlbGZfX2BgIGlzIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgb2JqZWN0LCBgYF9fZnVuY19fYGAgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgYGBfX2RvY19fYGAgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyBgYF9fZnVuY19fLl9fZG9jX19gYCk7XG4gICAgICBgYF9fbmFtZV9fYGAgaXMgdGhlIG1ldGhvZCBuYW1lIChzYW1lIGFzIGBgX19mdW5jX18uX19uYW1lX19gYCk7XG4gICAgICBgYF9fbW9kdWxlX19gYCBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWRcbiAgICAgIGluLCBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS5cblxuICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSBhcmJpdHJhcnlcbiAgICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4gICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyAocGVyaGFwcyB2aWEgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyksIGlmXG4gICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhIHVzZXItXG4gICAgICBkZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MgdmlhIG9uZSBvZiBpdHMgaW5zdGFuY2VzLFxuICAgICAgaXRzIGBgX19zZWxmX19gYCBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZFxuICAgICAgb2JqZWN0IGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyBgYF9fZnVuY19fYGBcbiAgICAgIGF0dHJpYnV0ZSBpcyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4gICAgICBhbm90aGVyIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCB0aGUgYmVoYXZpb3VyIGlzXG4gICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSBgYF9fZnVuY19fYGBcbiAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgbmV3IGluc3RhbmNlIGlzIG5vdCB0aGUgb3JpZ2luYWwgbWV0aG9kIG9iamVjdFxuICAgICAgYnV0IGl0cyBgYF9fZnVuY19fYGAgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgYGBfX3NlbGZfX2BgXG4gICAgICBhdHRyaWJ1dGUgaXMgdGhlIGNsYXNzIGl0c2VsZiwgYW5kIGl0cyBgYF9fZnVuY19fYGAgYXR0cmlidXRlIGlzXG4gICAgICB0aGUgZnVuY3Rpb24gb2JqZWN0IHVuZGVybHlpbmcgdGhlIGNsYXNzIG1ldGhvZC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uIChgYF9fZnVuY19fYGApIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKGBgX19zZWxmX19gYCkgaW4gZnJvbnQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuICBGb3IgaW5zdGFuY2UsXG4gICAgICB3aGVuIGBgQ2BgIGlzIGEgY2xhc3Mgd2hpY2ggY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uXG4gICAgICBgYGYoKWBgLCBhbmQgYGB4YGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBDYGAsIGNhbGxpbmcgYGB4LmYoMSlgYFxuICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgQy5mKHgsIDEpYGAuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyBtZXRob2RcbiAgICAgIG9iamVjdCwgdGhlICJjbGFzcyBpbnN0YW5jZSIgc3RvcmVkIGluIGBgX19zZWxmX19gYCB3aWxsXG4gICAgICBhY3R1YWxseSBiZSB0aGUgY2xhc3MgaXRzZWxmLCBzbyB0aGF0IGNhbGxpbmcgZWl0aGVyIGBgeC5mKDEpYGBcbiAgICAgIG9yIGBgQy5mKDEpYGAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgZihDLDEpYGAgd2hlcmUgYGBmYGAgaXNcbiAgICAgIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgKHNlZVxuICAgICAgc2VjdGlvbiAqVGhlIHlpZWxkIHN0YXRlbWVudCopIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgZnVuY3Rpb24qLlxuICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3Igb2JqZWN0XG4gICAgICB3aGljaCBjYW4gYmUgdXNlZCB0byBleGVjdXRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbjogIGNhbGxpbmdcbiAgICAgIHRoZSBpdGVyYXRvclwncyBgYF9fbmV4dF9fKClgYCBtZXRob2Qgd2lsbCBjYXVzZSB0aGUgZnVuY3Rpb24gdG9cbiAgICAgIGV4ZWN1dGUgdW50aWwgaXQgcHJvdmlkZXMgYSB2YWx1ZSB1c2luZyB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudC5cbiAgICAgIFdoZW4gdGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGEgYGByZXR1cm5gYCBzdGF0ZW1lbnQgb3IgZmFsbHMgb2ZmXG4gICAgICB0aGUgZW5kLCBhIGBgU3RvcEl0ZXJhdGlvbmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIEJ1aWx0LWluIGZ1bmN0aW9uc1xuICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4gICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYXJlIGBgbGVuKClgYCBhbmQgYGBtYXRoLnNpbigpYGBcbiAgICAgIChgYG1hdGhgYCBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG1vZHVsZSkuIFRoZSBudW1iZXIgYW5kIHR5cGUgb2ZcbiAgICAgIHRoZSBhcmd1bWVudHMgYXJlIGRldGVybWluZWQgYnkgdGhlIEMgZnVuY3Rpb24uIFNwZWNpYWwgcmVhZC1cbiAgICAgIG9ubHkgYXR0cmlidXRlczogYGBfX2RvY19fYGAgaXMgdGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb25cbiAgICAgIHN0cmluZywgb3IgYGBOb25lYGAgaWYgdW5hdmFpbGFibGU7IGBgX19uYW1lX19gYCBpcyB0aGVcbiAgICAgIGZ1bmN0aW9uXCdzIG5hbWU7IGBgX19zZWxmX19gYCBpcyBzZXQgdG8gYGBOb25lYGAgKGJ1dCBzZWUgdGhlXG4gICAgICBuZXh0IGl0ZW0pOyBgYF9fbW9kdWxlX19gYCBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZVxuICAgICAgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4gb3IgYGBOb25lYGAgaWYgdW5hdmFpbGFibGUuXG5cbiAgIEJ1aWx0LWluIG1ldGhvZHNcbiAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sIHRoaXNcbiAgICAgIHRpbWUgY29udGFpbmluZyBhbiBvYmplY3QgcGFzc2VkIHRvIHRoZSBDIGZ1bmN0aW9uIGFzIGFuXG4gICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbiAgICAgIGBgYWxpc3QuYXBwZW5kKClgYCwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlIGBgX19zZWxmX19gYCBpcyBzZXQgdG8gdGhlXG4gICAgICBvYmplY3QgZGVub3RlZCBieSAqYWxpc3QqLlxuXG4gICBDbGFzc2VzXG4gICAgICBDbGFzc2VzIGFyZSBjYWxsYWJsZS4gIFRoZXNlIG9iamVjdHMgbm9ybWFsbHkgYWN0IGFzIGZhY3Rvcmllc1xuICAgICAgZm9yIG5ldyBpbnN0YW5jZXMgb2YgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlIGZvclxuICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSBgYF9fbmV3X18oKWBgLiAgVGhlIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgIGNhbGwgYXJlIHBhc3NlZCB0byBgYF9fbmV3X18oKWBgIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgIGBgX19pbml0X18oKWBgIHRvIGluaXRpYWxpemUgdGhlIG5ldyBpbnN0YW5jZS5cblxuICAgQ2xhc3MgSW5zdGFuY2VzXG4gICAgICBJbnN0YW5jZXMgb2YgYXJiaXRyYXJ5IGNsYXNzZXMgY2FuIGJlIG1hZGUgY2FsbGFibGUgYnkgZGVmaW5pbmdcbiAgICAgIGEgYGBfX2NhbGxfXygpYGAgbWV0aG9kIGluIHRoZWlyIGNsYXNzLlxuXG5Nb2R1bGVzXG4gICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmVcbiAgIGNyZWF0ZWQgYnkgdGhlICppbXBvcnQgc3lzdGVtKiBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUgYGBpbXBvcnRgYFxuICAgc3RhdGVtZW50IChzZWUgYGBpbXBvcnRgYCksIG9yIGJ5IGNhbGxpbmcgZnVuY3Rpb25zIHN1Y2ggYXNcbiAgIGBgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKWBgIGFuZCBidWlsdC1pbiBgYF9faW1wb3J0X18oKWBgLiAgQVxuICAgbW9kdWxlIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdFxuICAgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgYGBfX2dsb2JhbHNfX2BgIGF0dHJpYnV0ZVxuICAgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmVcbiAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sIGBgbS54YGAgaXNcbiAgIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il1gYC4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW5cbiAgIHRoZSBjb2RlIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0XG4gICBuZWVkZWQgb25jZSB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sIGBgbS54ID0gMWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il0gPSAxYGAuXG5cbiAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogYGBfX2RpY3RfX2BgIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6IGBgX19uYW1lX19gYCBpcyB0aGUgbW9kdWxlXCdzXG4gICBuYW1lOyBgYF9fZG9jX19gYCBpcyB0aGUgbW9kdWxlXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYFxuICAgaWYgdW5hdmFpbGFibGU7IGBgX19maWxlX19gYCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaFxuICAgdGhlIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGVcbiAgIGBgX19maWxlX19gYCBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcyxcbiAgIHN1Y2ggYXMgQyBtb2R1bGVzIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyO1xuICAgZm9yIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0XG4gICBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUuXG5cbkN1c3RvbSBjbGFzc2VzXG4gICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWVcbiAgIHNlY3Rpb24gKkNsYXNzIGRlZmluaXRpb25zKikuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZFxuICAgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWRcbiAgIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCBgYEMueGBgIGlzIHRyYW5zbGF0ZWQgdG9cbiAgIGBgQy5fX2RpY3RfX1sieCJdYGAgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaFxuICAgYWxsb3cgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGVcbiAgIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYXR0cmlidXRlIHNlYXJjaCBjb250aW51ZXMgaW4gdGhlIGJhc2VcbiAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4gICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlIG9mXG4gICBcJ2RpYW1vbmRcJyBpbmhlcml0YW5jZSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4gICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuICAgZG9jdW1lbnRhdGlvbiBhY2NvbXBhbnlpbmcgdGhlIDIuMyByZWxlYXNlIGF0XG4gICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8uXG5cbiAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgYGBDYGAsIHNheSkgd291bGQgeWllbGRcbiAgIGEgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlcyBpcyBgYENgYC4gIFdoZW4gaXQgd291bGQgeWllbGRcbiAgIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkXG4gICBieSB0aGUgc3RhdGljIG1ldGhvZCBvYmplY3QuIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqXG4gICBmb3IgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heVxuICAgZGlmZmVyIGZyb20gdGhvc2UgYWN0dWFsbHkgY29udGFpbmVkIGluIGl0cyBgYF9fZGljdF9fYGAuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBjbGFzcyBuYW1lOyBgYF9fbW9kdWxlX19gYFxuICAgaXMgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgYGBfX2RpY3RfX2BgIGlzXG4gICB0aGUgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7IGBgX19iYXNlc19fYGAgaXMgYVxuICAgdHVwbGUgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsXG4gICBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0O1xuICAgYGBfX2RvY19fYGAgaXMgdGhlIGNsYXNzXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmXG4gICB1bmRlZmluZWQuXG5cbkNsYXNzIGluc3RhbmNlc1xuICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSBhYm92ZSkuXG4gICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgd2hpY2hcbiAgIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgc2VhcmNoZWQuXG4gICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MgaGFzXG4gICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSB1c2VyLWRlZmluZWRcbiAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0XG4gICB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgYW5kXG4gICBjbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgYWxzbyB0cmFuc2Zvcm1lZDsgc2VlIGFib3ZlIHVuZGVyXG4gICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKiBmb3IgYW5vdGhlciB3YXlcbiAgIGluIHdoaWNoIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyByZXRyaWV2ZWQgdmlhIGl0cyBpbnN0YW5jZXMgbWF5XG4gICBkaWZmZXIgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzXG4gICBgYF9fZGljdF9fYGAuICBJZiBubyBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0XCdzXG4gICBjbGFzcyBoYXMgYSBgYF9fZ2V0YXR0cl9fKClgYCBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlXG4gICBsb29rdXAuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50cyBhbmQgZGVsZXRpb25zIHVwZGF0ZSB0aGUgaW5zdGFuY2VcJ3NcbiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3NcJ3MgZGljdGlvbmFyeS4gIElmIHRoZSBjbGFzcyBoYXMgYVxuICAgYGBfX3NldGF0dHJfXygpYGAgb3IgYGBfX2RlbGF0dHJfXygpYGAgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgQ2xhc3MgaW5zdGFuY2VzIGNhbiBwcmV0ZW5kIHRvIGJlIG51bWJlcnMsIHNlcXVlbmNlcywgb3IgbWFwcGluZ3NcbiAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbiAgICpTcGVjaWFsIG1ldGhvZCBuYW1lcyouXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX2RpY3RfX2BgIGlzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeTtcbiAgIGBgX19jbGFzc19fYGAgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgYGBvcGVuKClgYCBidWlsdC1pbiBmdW5jdGlvbixcbiAgIGFuZCBhbHNvIGBgb3MucG9wZW4oKWBgLCBgYG9zLmZkb3BlbigpYGAsIGFuZCB0aGUgYGBtYWtlZmlsZSgpYGBcbiAgIG1ldGhvZCBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbiAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cblxuICAgVGhlIG9iamVjdHMgYGBzeXMuc3RkaW5gYCwgYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIGFyZVxuICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyXCdzXG4gICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiB0ZXh0XG4gICBtb2RlIGFuZCB0aGVyZWZvcmUgZm9sbG93IHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBieSB0aGVcbiAgIGBgaW8uVGV4dElPQmFzZWBgIGFic3RyYWN0IGNsYXNzLlxuXG5JbnRlcm5hbCB0eXBlc1xuICAgQSBmZXcgdHlwZXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBpbnRlcnByZXRlciBhcmUgZXhwb3NlZCB0byB0aGVcbiAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4gICBpbnRlcnByZXRlciwgYnV0IHRoZXkgYXJlIG1lbnRpb25lZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuXG5cbiAgIENvZGUgb2JqZWN0c1xuICAgICAgQ29kZSBvYmplY3RzIHJlcHJlc2VudCAqYnl0ZS1jb21waWxlZCogZXhlY3V0YWJsZSBQeXRob24gY29kZSxcbiAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuICAgICAgZnVuY3Rpb24gb2JqZWN0IGlzIHRoYXQgdGhlIGZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhbiBleHBsaWNpdFxuICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvblwncyBnbG9iYWxzICh0aGUgbW9kdWxlIGluIHdoaWNoIGl0IHdhc1xuICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbiAgICAgIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGZ1bmN0aW9uIG9iamVjdCwgbm90XG4gICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgYXRcbiAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlIGltbXV0YWJsZVxuICAgICAgYW5kIGNvbnRhaW4gbm8gcmVmZXJlbmNlcyAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgdG8gbXV0YWJsZVxuICAgICAgb2JqZWN0cy5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBjb19uYW1lYGAgZ2l2ZXMgdGhlIGZ1bmN0aW9uXG4gICAgICBuYW1lOyBgYGNvX2FyZ2NvdW50YGAgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAgKGluY2x1ZGluZyBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7IGBgY29fbmxvY2Fsc2BgIGlzIHRoZVxuICAgICAgbnVtYmVyIG9mIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nXG4gICAgICBhcmd1bWVudHMpOyBgYGNvX3Zhcm5hbWVzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZlxuICAgICAgdGhlIGxvY2FsIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpO1xuICAgICAgYGBjb19jZWxsdmFyc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7XG4gICAgICBgYGNvX2ZyZWV2YXJzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlXG4gICAgICB2YXJpYWJsZXM7IGBgY29fY29kZWBgIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2ZcbiAgICAgIGJ5dGVjb2RlIGluc3RydWN0aW9uczsgYGBjb19jb25zdHNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG4gICAgICBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTsgYGBjb19uYW1lc2BgIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlOyBgYGNvX2ZpbGVuYW1lYGAgaXNcbiAgICAgIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyBjb21waWxlZDtcbiAgICAgIGBgY29fZmlyc3RsaW5lbm9gYCBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgYGBjb19sbm90YWJgYCBpcyBhIHN0cmluZyBlbmNvZGluZyB0aGUgbWFwcGluZyBmcm9tIGJ5dGVjb2RlXG4gICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGVcbiAgICAgIGludGVycHJldGVyKTsgYGBjb19zdGFja3NpemVgYCBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuICAgICAgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMpOyBgYGNvX2ZsYWdzYGAgaXMgYW4gaW50ZWdlciBlbmNvZGluZ1xuICAgICAgYSBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yIGBgY29fZmxhZ3NgYDogYml0XG4gICAgICBgYDB4MDRgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGBgKmFyZ3VtZW50c2BgIHN5bnRheFxuICAgICAgdG8gYWNjZXB0IGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdFxuICAgICAgYGAweDA4YGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBgYCoqa2V5d29yZHNgYCBzeW50YXhcbiAgICAgIHRvIGFjY2VwdCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHM7IGJpdCBgYDB4MjBgYCBpcyBzZXQgaWZcbiAgICAgIHRoZSBmdW5jdGlvbiBpcyBhIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zIChgYGZyb20gX19mdXR1cmVfXyBpbXBvcnRcbiAgICAgIGRpdmlzaW9uYGApIGFsc28gdXNlIGJpdHMgaW4gYGBjb19mbGFnc2BgIHRvIGluZGljYXRlIHdoZXRoZXIgYVxuICAgICAgY29kZSBvYmplY3Qgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0XG4gICAgICBgYDB4MjAwMGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlXG4gICAgICBkaXZpc2lvbiBlbmFibGVkOyBiaXRzIGBgMHgxMGBgIGFuZCBgYDB4MTAwMGBgIHdlcmUgdXNlZCBpblxuICAgICAgZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24uXG5cbiAgICAgIE90aGVyIGJpdHMgaW4gYGBjb19mbGFnc2BgIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgIGBgY29fY29uc3RzYGAgaXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZSBmdW5jdGlvbiwgb3JcbiAgICAgIGBgTm9uZWBgIGlmIHVuZGVmaW5lZC5cblxuICAgRnJhbWUgb2JqZWN0c1xuICAgICAgRnJhbWUgb2JqZWN0cyByZXByZXNlbnQgZXhlY3V0aW9uIGZyYW1lcy4gIFRoZXkgbWF5IG9jY3VyIGluXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBmX2JhY2tgYCBpcyB0byB0aGUgcHJldmlvdXNcbiAgICAgIHN0YWNrIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciBgYE5vbmVgYCBpZiB0aGlzIGlzIHRoZVxuICAgICAgYm90dG9tIHN0YWNrIGZyYW1lOyBgYGZfY29kZWBgIGlzIHRoZSBjb2RlIG9iamVjdCBiZWluZyBleGVjdXRlZFxuICAgICAgaW4gdGhpcyBmcmFtZTsgYGBmX2xvY2Fsc2BgIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cFxuICAgICAgbG9jYWwgdmFyaWFibGVzOyBgYGZfZ2xvYmFsc2BgIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4gICAgICBgYGZfYnVpbHRpbnNgYCBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lcztcbiAgICAgIGBgZl9sYXN0aWBgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG9cbiAgICAgIHRoZSBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiBgYGZfdHJhY2VgYCwgaWYgbm90IGBgTm9uZWBgLCBpcyBhXG4gICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyBpc1xuICAgICAgdXNlZCBieSB0aGUgZGVidWdnZXIpOyBgYGZfbGluZW5vYGAgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXJcbiAgICAgIG9mIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb25cbiAgICAgIGp1bXBzIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQVxuICAgICAgZGVidWdnZXIgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudClcbiAgICAgIGJ5IHdyaXRpbmcgdG8gZl9saW5lbm8uXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgYGBzeXMuZXhjX2luZm8oKWBgLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zXG4gICAgICBubyBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5XG4gICAgICBmb3JtYXR0ZWQpIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpc1xuICAgICAgaW50ZXJhY3RpdmUsIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXNcbiAgICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgdGJfbmV4dGBgIGlzIHRoZSBuZXh0IGxldmVsIGluXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkKSwgb3IgYGBOb25lYGAgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgYGB0Yl9mcmFtZWBgXG4gICAgICBwb2ludHMgdG8gdGhlIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDtcbiAgICAgIGBgdGJfbGluZW5vYGAgZ2l2ZXMgdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkOyBgYHRiX2xhc3RpYGAgaW5kaWNhdGVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlXG4gICAgICBsaW5lIG51bWJlciBhbmQgbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXJcbiAgICAgIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZSBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvblxuICAgICAgb2NjdXJyZWQgaW4gYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIG5vIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2VcbiAgICAgIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciBgYF9fZ2V0aXRlbV9fKClgYFxuICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gYGBzbGljZSgpYGBcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYHN0YXJ0YGAgaXMgdGhlIGxvd2VyIGJvdW5kO1xuICAgICAgYGBzdG9wYGAgaXMgdGhlIHVwcGVyIGJvdW5kOyBgYHN0ZXBgYCBpcyB0aGUgc3RlcCB2YWx1ZTsgZWFjaCBpc1xuICAgICAgYGBOb25lYGAgaWYgb21pdHRlZC4gVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cblxuICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqIGFuZFxuICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlIG9iamVjdFxuICAgICAgICAgd291bGQgZGVzY3JpYmUgaWYgYXBwbGllZCB0byBhIHNlcXVlbmNlIG9mICpsZW5ndGgqIGl0ZW1zLlxuICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgYXJlXG4gICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4gICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbiAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuXG4gICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbiAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbiAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgZGVzY3JpYmVkXG4gICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbiAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCB0aGVcbiAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZVxuICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCB1c3VhbGx5XG4gICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgIGBgc3RhdGljbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cblxuICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbiAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhIHdyYXBwZXJcbiAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgb2JqZWN0XG4gICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgb2ZcbiAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkIGFib3ZlLFxuICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWRcbiAgICAgIGJ5IHRoZSBidWlsdC1pbiBgYGNsYXNzbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cbicsCiAgJ3R5cGVzZnVuY3Rpb25zJzogJ1xuRnVuY3Rpb25zXG4qKioqKioqKipcblxuRnVuY3Rpb24gb2JqZWN0cyBhcmUgY3JlYXRlZCBieSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFRoZSBvbmx5XG5vcGVyYXRpb24gb24gYSBmdW5jdGlvbiBvYmplY3QgaXMgdG8gY2FsbCBpdDogYGBmdW5jKGFyZ3VtZW50LWxpc3QpYGAuXG5cblRoZXJlIGFyZSByZWFsbHkgdHdvIGZsYXZvcnMgb2YgZnVuY3Rpb24gb2JqZWN0czogYnVpbHQtaW4gZnVuY3Rpb25zXG5hbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gIEJvdGggc3VwcG9ydCB0aGUgc2FtZSBvcGVyYXRpb24gKHRvIGNhbGxcbnRoZSBmdW5jdGlvbiksIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50LCBoZW5jZSB0aGVcbmRpZmZlcmVudCBvYmplY3QgdHlwZXMuXG5cblNlZSAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKLSAndHlwZXNtYXBwaW5nJzogJ1xuTWFwcGluZyBUeXBlcyAtLS0gYGBkaWN0YGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKm1hcHBpbmcqIG9iamVjdCBtYXBzICpoYXNoYWJsZSogdmFsdWVzIHRvIGFyYml0cmFyeSBvYmplY3RzLlxuTWFwcGluZ3MgYXJlIG11dGFibGUgb2JqZWN0cy4gIFRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSBzdGFuZGFyZFxubWFwcGluZyB0eXBlLCB0aGUgKmRpY3Rpb25hcnkqLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHRcbmluIGBgbGlzdGBgLCBgYHNldGBgLCBhbmQgYGB0dXBsZWBgIGNsYXNzZXMsIGFuZCB0aGUgYGBjb2xsZWN0aW9uc2BgXG5tb2R1bGUuKVxuXG5BIGRpY3Rpb25hcnlcJ3Mga2V5cyBhcmUgKmFsbW9zdCogYXJiaXRyYXJ5IHZhbHVlcy4gIFZhbHVlcyB0aGF0IGFyZVxubm90ICpoYXNoYWJsZSosIHRoYXQgaXMsIHZhbHVlcyBjb250YWluaW5nIGxpc3RzLCBkaWN0aW9uYXJpZXMgb3Jcbm90aGVyIG11dGFibGUgdHlwZXMgKHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuaWRlbnRpdHkpIG1heSBub3QgYmUgdXNlZCBhcyBrZXlzLiAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXlcbnRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbFxuKHN1Y2ggYXMgYGAxYGAgYW5kIGBgMS4wYGApIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG9cbmluZGV4IHRoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlIGNvbXB1dGVyc1xuc3RvcmUgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5IHVud2lzZSB0b1xudXNlIHRoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcblxuRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZlxuYGBrZXk6IHZhbHVlYGAgcGFpcnMgd2l0aGluIGJyYWNlcywgZm9yIGV4YW1wbGU6IGBge1wnamFja1wnOiA0MDk4LFxuXCdzam9lcmRcJzogNDEyN31gYCBvciBgYHs0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ31gYCwgb3IgYnkgdGhlXG5gYGRpY3RgYCBjb25zdHJ1Y3Rvci5cblxuY2xhc3MgY2xhc3MgZGljdChbYXJnXSlcblxuICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCBwb3NpdGlvbmFsXG4gICBhcmd1bWVudCBvciBmcm9tIGEgc2V0IG9mIGtleXdvcmQgYXJndW1lbnRzLiAgSWYgbm8gYXJndW1lbnRzIGFyZVxuICAgZ2l2ZW4sIHJldHVybiBhIG5ldyBlbXB0eSBkaWN0aW9uYXJ5LiAgSWYgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICphcmcqIGlzIGEgbWFwcGluZyBvYmplY3QsIHJldHVybiBhIGRpY3Rpb25hcnkgbWFwcGluZyB0aGUgc2FtZVxuICAga2V5cyB0byB0aGUgc2FtZSB2YWx1ZXMgYXMgZG9lcyB0aGUgbWFwcGluZyBvYmplY3QuICBPdGhlcndpc2UgdGhlXG4gICBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0c1xuICAgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBUaGUgZWxlbWVudHMgb2YgdGhlIGFyZ3VtZW50XG4gICBtdXN0IGVhY2ggYWxzbyBiZSBvZiBvbmUgb2YgdGhvc2Uga2luZHMsIGFuZCBlYWNoIG11c3QgaW4gdHVyblxuICAgY29udGFpbiBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IGlzIHVzZWQgYXMgYSBrZXkgaW4gdGhlIG5ld1xuICAgZGljdGlvbmFyeSwgYW5kIHRoZSBzZWNvbmQgYXMgdGhlIGtleVwncyB2YWx1ZS4gIElmIGEgZ2l2ZW4ga2V5IGlzXG4gICBzZWVuIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXQgaXMgcmV0YWluZWRcbiAgIGluIHRoZSBuZXcgZGljdGlvbmFyeS5cblxuICAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIGdpdmVuLCB0aGUga2V5d29yZHMgdGhlbXNlbHZlcyB3aXRoIHRoZWlyXG4gICBhc3NvY2lhdGVkIHZhbHVlcyBhcmUgYWRkZWQgYXMgaXRlbXMgdG8gdGhlIGRpY3Rpb25hcnkuICBJZiBhIGtleVxuICAgaXMgc3BlY2lmaWVkIGJvdGggaW4gdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgYW5kIGFzIGEga2V5d29yZFxuICAgYXJndW1lbnQsIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGtleXdvcmQgaXMgcmV0YWluZWQgaW4gdGhlXG4gICBkaWN0aW9uYXJ5LiAgRm9yIGV4YW1wbGUsIHRoZXNlIGFsbCByZXR1cm4gYSBkaWN0aW9uYXJ5IGVxdWFsIHRvXG4gICBgYHsib25lIjogMSwgInR3byI6IDJ9YGA6XG5cbiAgICogYGBkaWN0KG9uZT0xLCB0d289MilgYFxuXG4gICAqIGBgZGljdCh7XCdvbmVcJzogMSwgXCd0d29cJzogMn0pYGBcblxuICAgKiBgYGRpY3QoemlwKChcJ29uZVwnLCBcJ3R3b1wnKSwgKDEsIDIpKSlgYFxuXG4gICAqIGBgZGljdChbW1wndHdvXCcsIDJdLCBbXCdvbmVcJywgMV1dKWBgXG5cbiAgIFRoZSBmaXJzdCBleGFtcGxlIG9ubHkgd29ya3MgZm9yIGtleXMgdGhhdCBhcmUgdmFsaWQgUHl0aG9uXG4gICBpZGVudGlmaWVyczsgdGhlIG90aGVycyB3b3JrIHdpdGggYW55IHZhbGlkIGtleXMuXG5cbiAgIFRoZXNlIGFyZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGRpY3Rpb25hcmllcyBzdXBwb3J0IChhbmQgdGhlcmVmb3JlLFxuICAgY3VzdG9tIG1hcHBpbmcgdHlwZXMgc2hvdWxkIHN1cHBvcnQgdG9vKTpcblxuICAgbGVuKGQpXG5cbiAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkaWN0aW9uYXJ5ICpkKi5cblxuICAgZFtrZXldXG5cbiAgICAgIFJldHVybiB0aGUgaXRlbSBvZiAqZCogd2l0aCBrZXkgKmtleSouICBSYWlzZXMgYSBgYEtleUVycm9yYGAgaWZcbiAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuXG4gICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCBgYF9fbWlzc2luZ19fKClgYCwgaWYgdGhlXG4gICAgICBrZXkgKmtleSogaXMgbm90IHByZXNlbnQsIHRoZSBgYGRba2V5XWBgIG9wZXJhdGlvbiBjYWxscyB0aGF0XG4gICAgICBtZXRob2Qgd2l0aCB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlIGBgZFtrZXldYGAgb3BlcmF0aW9uXG4gICAgICB0aGVuIHJldHVybnMgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbiAgICAgIGBgX19taXNzaW5nX18oa2V5KWBgIGNhbGwgaWYgdGhlIGtleSBpcyBub3QgcHJlc2VudC4gTm8gb3RoZXJcbiAgICAgIG9wZXJhdGlvbnMgb3IgbWV0aG9kcyBpbnZva2UgYGBfX21pc3NpbmdfXygpYGAuIElmXG4gICAgICBgYF9fbWlzc2luZ19fKClgYCBpcyBub3QgZGVmaW5lZCwgYGBLZXlFcnJvcmBgIGlzIHJhaXNlZC5cbiAgICAgIGBgX19taXNzaW5nX18oKWBgIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCBiZSBhbiBpbnN0YW5jZVxuICAgICAgdmFyaWFibGU6XG5cbiAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4gICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDBcbiAgICAgICAgID4+PiBjW1wncmVkXCddICs9IDFcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAxXG5cbiAgICAgIFNlZSBgYGNvbGxlY3Rpb25zLkNvdW50ZXJgYCBmb3IgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvblxuICAgICAgaW5jbHVkaW5nIG90aGVyIG1ldGhvZHMgaGVscGZ1bCBmb3IgYWNjdW11bGF0aW5nIGFuZCBtYW5hZ2luZ1xuICAgICAgdGFsbGllcy5cblxuICAgZFtrZXldID0gdmFsdWVcblxuICAgICAgU2V0IGBgZFtrZXldYGAgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgYGBkW2tleV1gYCBmcm9tICpkKi4gIFJhaXNlcyBhIGBgS2V5RXJyb3JgYCBpZiAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBtYXAuXG5cbiAgIGtleSBpbiBkXG5cbiAgICAgIFJldHVybiBgYFRydWVgYCBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlIGBgRmFsc2VgYC5cblxuICAga2V5IG5vdCBpbiBkXG5cbiAgICAgIEVxdWl2YWxlbnQgdG8gYGBub3Qga2V5IGluIGRgYC5cblxuICAgaXRlcihkKVxuXG4gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cyBvZiB0aGUgZGljdGlvbmFyeS4gIFRoaXMgaXMgYVxuICAgICAgc2hvcnRjdXQgZm9yIGBgaXRlcihkLmtleXMoKSlgYC5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgIGBgZnJvbWtleXMoKWBgIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyBkaWN0aW9uYXJ5LlxuICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byBgYE5vbmVgYC5cblxuICAgZ2V0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBSZXR1cm4gdGhlIHZhbHVlIGZvciAqa2V5KiBpZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgZWxzZVxuICAgICAgKmRlZmF1bHQqLiBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYCxcbiAgICAgIHNvIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgYGBLZXlFcnJvcmBgLlxuXG4gICBpdGVtcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zIChgYChrZXksIHZhbHVlKWBgXG4gICAgICBwYWlycykuICBTZWUgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSBiZWxvdyBmb3JcbiAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuXG4gICBwb3Aoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiBpdHMgdmFsdWUsXG4gICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuIGFuZCAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhIGBgS2V5RXJyb3JgYCBpcyByYWlzZWQuXG5cbiAgIHBvcGl0ZW0oKVxuXG4gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgYGAoa2V5LCB2YWx1ZSlgYCBwYWlyIGZyb20gdGhlXG4gICAgICBkaWN0aW9uYXJ5LlxuXG4gICAgICBgYHBvcGl0ZW0oKWBgIGlzIHVzZWZ1bCB0byBkZXN0cnVjdGl2ZWx5IGl0ZXJhdGUgb3ZlciBhXG4gICAgICBkaWN0aW9uYXJ5LCBhcyBvZnRlbiB1c2VkIGluIHNldCBhbGdvcml0aG1zLiAgSWYgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIGVtcHR5LCBjYWxsaW5nIGBgcG9waXRlbSgpYGAgcmFpc2VzIGEgYGBLZXlFcnJvcmBgLlxuXG4gICBzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmV0dXJuIGl0cyB2YWx1ZS4gIElmIG5vdCwgaW5zZXJ0XG4gICAgICAqa2V5KiB3aXRoIGEgdmFsdWUgb2YgKmRlZmF1bHQqIGFuZCByZXR1cm4gKmRlZmF1bHQqLiAgKmRlZmF1bHQqXG4gICAgICBkZWZhdWx0cyB0byBgYE5vbmVgYC5cblxuICAgdXBkYXRlKFtvdGhlcl0pXG5cbiAgICAgIFVwZGF0ZSB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBrZXkvdmFsdWUgcGFpcnMgZnJvbSAqb3RoZXIqLFxuICAgICAgb3ZlcndyaXRpbmcgZXhpc3Rpbmcga2V5cy4gIFJldHVybiBgYE5vbmVgYC5cblxuICAgICAgYGB1cGRhdGUoKWBgIGFjY2VwdHMgZWl0aGVyIGFub3RoZXIgZGljdGlvbmFyeSBvYmplY3Qgb3IgYW5cbiAgICAgIGl0ZXJhYmxlIG9mIGtleS92YWx1ZSBwYWlycyAoYXMgdHVwbGVzIG9yIG90aGVyIGl0ZXJhYmxlcyBvZlxuICAgICAgbGVuZ3RoIHR3bykuICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgdGhlbiB1cGRhdGVkIHdpdGggdGhvc2Uga2V5L3ZhbHVlIHBhaXJzOiBgYGQudXBkYXRlKHJlZD0xLFxuICAgICAgYmx1ZT0yKWBgLlxuXG4gICB2YWx1ZXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyB2YWx1ZXMuICBTZWUgYmVsb3cgZm9yXG4gICAgICBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy5cblxuXG5EaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgYGBkaWN0LmtleXMoKWBgLCBgYGRpY3QudmFsdWVzKClgYCBhbmRcbmBgZGljdC5pdGVtcygpYGAgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyB2aWV3IG9uXG50aGUgZGljdGlvbmFyeVwncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnlcbmNoYW5nZXMsIHRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG5cbkRpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgcmVzcGVjdGl2ZSBkYXRhLFxuYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcblxubGVuKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5pdGVyKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zIChyZXByZXNlbnRlZCBhc1xuICAgdHVwbGVzIG9mIGBgKGtleSwgdmFsdWUpYGApIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyIHdoaWNoIGlzXG4gICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCBkZXBlbmRzIG9uXG4gICB0aGUgZGljdGlvbmFyeVwncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gSWYga2V5cyxcbiAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyBpbnRlcnZlbmluZ1xuICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zIHdpbGwgZGlyZWN0bHlcbiAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgYGAodmFsdWUsIGtleSlgYCBwYWlyc1xuICAgdXNpbmcgYGB6aXAoKWBgOiBgYHBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKWBgLiAgQW5vdGhlclxuICAgd2F5IHRvIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzIGBgcGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW5cbiAgIGQuaXRlbXMoKV1gYC5cblxuICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5XG4gICBtYXkgcmFpc2UgYSBgYFJ1bnRpbWVFcnJvcmBgIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyBrZXlzLFxuICAgdmFsdWVzIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSBgYChrZXksXG4gICB2YWx1ZSlgYCB0dXBsZSkuXG5cbktleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgaGFzaGFibGUuXG5JZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCBgYChrZXksIHZhbHVlKWBgIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgYGBjb2xsZWN0aW9ucy5TZXRgYCBhcmUgYXZhaWxhYmxlIChmb3IgZXhhbXBsZSwgYGA9PWBgLFxuYGA8YGAsIG9yIGBgXmBgKS5cblxuQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6XG5cbiAgID4+PiBkaXNoZXMgPSB7XCdlZ2dzXCc6IDIsIFwnc2F1c2FnZVwnOiAxLCBcJ2JhY29uXCc6IDEsIFwnc3BhbVwnOiA1MDB9XG4gICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbiAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcblxuICAgPj4+ICMgaXRlcmF0aW9uXG4gICA+Pj4gbiA9IDBcbiAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbiAgIC4uLiAgICAgbiArPSB2YWxcbiAgID4+PiBwcmludChuKVxuICAgNTA0XG5cbiAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSBvcmRlclxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhdXNhZ2VcJywgXCdzcGFtXCddXG4gICA+Pj4gbGlzdCh2YWx1ZXMpXG4gICBbMiwgMSwgMSwgNTAwXVxuXG4gICA+Pj4gIyB2aWV3IG9iamVjdHMgYXJlIGR5bmFtaWMgYW5kIHJlZmxlY3QgZGljdCBjaGFuZ2VzXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ2VnZ3NcJ11cbiAgID4+PiBkZWwgZGlzaGVzW1wnc2F1c2FnZVwnXVxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ3NwYW1cJywgXCdiYWNvblwnXVxuXG4gICA+Pj4gIyBzZXQgb3BlcmF0aW9uc1xuICAgPj4+IGtleXMgJiB7XCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYWxhZFwnfVxuICAge1wnYmFjb25cJ31cbiAgID4+PiBrZXlzIF4ge1wnc2F1c2FnZVwnLCBcJ2p1aWNlXCd9XG4gICB7XCdqdWljZVwnLCBcJ3NhdXNhZ2VcJywgXCdiYWNvblwnLCBcJ3NwYW1cJ31cbicsCisgJ3R5cGVzbWFwcGluZyc6ICdcbk1hcHBpbmcgVHlwZXMgLS0tIGBgZGljdGBgXG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgb2JqZWN0cy5cbk1hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3RhbmRhcmRcbm1hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LVxuaW4gYGBsaXN0YGAsIGBgc2V0YGAsIGFuZCBgYHR1cGxlYGAgY2xhc3NlcywgYW5kIHRoZSBgYGNvbGxlY3Rpb25zYGBcbm1vZHVsZS4pXG5cbkEgZGljdGlvbmFyeVwncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzIHRoYXQgYXJlXG5ub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsIGRpY3Rpb25hcmllcyBvclxub3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG5pZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleVxudGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsXG4oc3VjaCBhcyBgYDFgYCBhbmQgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0b1xuaW5kZXggdGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzXG5zdG9yZSBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvXG51c2UgdGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mXG5gYGtleTogdmFsdWVgYCBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogYGB7XCdqYWNrXCc6IDQwOTgsXG5cJ3Nqb2VyZFwnOiA0MTI3fWBgIG9yIGBgezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfWBgLCBvciBieSB0aGVcbmBgZGljdGBgIGNvbnN0cnVjdG9yLlxuXG5jbGFzcyBjbGFzcyBkaWN0KFthcmddKVxuXG4gICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50IG9yIGZyb20gYSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuICBJZiBubyBhcmd1bWVudHMgYXJlXG4gICBnaXZlbiwgcmV0dXJuIGEgbmV3IGVtcHR5IGRpY3Rpb25hcnkuICBJZiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgKmFyZyogaXMgYSBtYXBwaW5nIG9iamVjdCwgcmV0dXJuIGEgZGljdGlvbmFyeSBtYXBwaW5nIHRoZSBzYW1lXG4gICBrZXlzIHRvIHRoZSBzYW1lIHZhbHVlcyBhcyBkb2VzIHRoZSBtYXBwaW5nIG9iamVjdC4gIE90aGVyd2lzZSB0aGVcbiAgIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzXG4gICBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIFRoZSBlbGVtZW50cyBvZiB0aGUgYXJndW1lbnRcbiAgIG11c3QgZWFjaCBhbHNvIGJlIG9mIG9uZSBvZiB0aG9zZSBraW5kcywgYW5kIGVhY2ggbXVzdCBpbiB0dXJuXG4gICBjb250YWluIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3QgaXMgdXNlZCBhcyBhIGtleSBpbiB0aGUgbmV3XG4gICBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBhcyB0aGUga2V5XCdzIHZhbHVlLiAgSWYgYSBnaXZlbiBrZXkgaXNcbiAgIHNlZW4gbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyByZXRhaW5lZFxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkcyB0aGVtc2VsdmVzIHdpdGggdGhlaXJcbiAgIGFzc29jaWF0ZWQgdmFsdWVzIGFyZSBhZGRlZCBhcyBpdGVtcyB0byB0aGUgZGljdGlvbmFyeS4gIElmIGEga2V5XG4gICBpcyBzcGVjaWZpZWQgYm90aCBpbiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudCBhbmQgYXMgYSBrZXl3b3JkXG4gICBhcmd1bWVudCwgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5d29yZCBpcyByZXRhaW5lZCBpbiB0aGVcbiAgIGRpY3Rpb25hcnkuICBGb3IgZXhhbXBsZSwgdGhlc2UgYWxsIHJldHVybiBhIGRpY3Rpb25hcnkgZXF1YWwgdG9cbiAgIGBgeyJvbmUiOiAxLCAidHdvIjogMn1gYDpcblxuICAgKiBgYGRpY3Qob25lPTEsIHR3bz0yKWBgXG5cbiAgICogYGBkaWN0KHtcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyfSlgYFxuXG4gICAqIGBgZGljdCh6aXAoKFwnb25lXCcsIFwndHdvXCcpLCAoMSwgMikpKWBgXG5cbiAgICogYGBkaWN0KFtbXCd0d29cJywgMl0sIFtcJ29uZVwnLCAxXV0pYGBcblxuICAgVGhlIGZpcnN0IGV4YW1wbGUgb25seSB3b3JrcyBmb3Iga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob25cbiAgIGlkZW50aWZpZXJzOyB0aGUgb3RoZXJzIHdvcmsgd2l0aCBhbnkgdmFsaWQga2V5cy5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhIGBgS2V5RXJyb3JgYCBpZlxuICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG5cbiAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kIGBgX19taXNzaW5nX18oKWBgLCBpZiB0aGVcbiAgICAgIGtleSAqa2V5KiBpcyBub3QgcHJlc2VudCwgdGhlIGBgZFtrZXldYGAgb3BlcmF0aW9uIGNhbGxzIHRoYXRcbiAgICAgIG1ldGhvZCB3aXRoIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgYGBkW2tleV1gYCBvcGVyYXRpb25cbiAgICAgIHRoZW4gcmV0dXJucyBvciByYWlzZXMgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IHRoZVxuICAgICAgYGBfX21pc3NpbmdfXyhrZXkpYGAgY2FsbCBpZiB0aGUga2V5IGlzIG5vdCBwcmVzZW50LiBObyBvdGhlclxuICAgICAgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZSBgYF9fbWlzc2luZ19fKClgYC4gSWZcbiAgICAgIGBgX19taXNzaW5nX18oKWBgIGlzIG5vdCBkZWZpbmVkLCBgYEtleUVycm9yYGAgaXMgcmFpc2VkLlxuICAgICAgYGBfX21pc3NpbmdfXygpYGAgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90IGJlIGFuIGluc3RhbmNlXG4gICAgICB2YXJpYWJsZTpcblxuICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4gICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMFxuICAgICAgICAgPj4+IGNbXCdyZWRcJ10gKz0gMVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDFcblxuICAgICAgU2VlIGBgY29sbGVjdGlvbnMuQ291bnRlcmBgIGZvciBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uXG4gICAgICBpbmNsdWRpbmcgb3RoZXIgbWV0aG9kcyBoZWxwZnVsIGZvciBhY2N1bXVsYXRpbmcgYW5kIG1hbmFnaW5nXG4gICAgICB0YWxsaWVzLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgYGBkW2tleV1gYCB0byAqdmFsdWUqLlxuXG4gICBkZWwgZFtrZXldXG5cbiAgICAgIFJlbW92ZSBgYGRba2V5XWBgIGZyb20gKmQqLiAgUmFpc2VzIGEgYGBLZXlFcnJvcmBgIGlmICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgYGBGYWxzZWBgLlxuXG4gICBrZXkgbm90IGluIGRcblxuICAgICAgRXF1aXZhbGVudCB0byBgYG5vdCBrZXkgaW4gZGBgLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgYGBpdGVyKGQua2V5cygpKWBgLlxuXG4gICBjbGVhcigpXG5cbiAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cblxuICAgY29weSgpXG5cbiAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cblxuICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuXG4gICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgdmFsdWVzIHNldCB0b1xuICAgICAgKnZhbHVlKi5cblxuICAgICAgYGBmcm9ta2V5cygpYGAgaXMgYSBjbGFzcyBtZXRob2QgdGhhdCByZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnkuXG4gICAgICAqdmFsdWUqIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLFxuICAgICAgc28gdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIGl0ZW1zKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGBcbiAgICAgIHBhaXJzKS4gU2VlIHRoZSAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgYGBLZXlFcnJvcmBgIGlzIHJhaXNlZC5cblxuICAgcG9waXRlbSgpXG5cbiAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSBgYChrZXksIHZhbHVlKWBgIHBhaXIgZnJvbSB0aGVcbiAgICAgIGRpY3Rpb25hcnkuXG5cbiAgICAgIGBgcG9waXRlbSgpYGAgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgYGBwb3BpdGVtKClgYCByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgbm90LCBpbnNlcnRcbiAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAqZGVmYXVsdCouICAqZGVmYXVsdCpcbiAgICAgIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuIGBgTm9uZWBgLlxuXG4gICAgICBgYHVwZGF0ZSgpYGAgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCBvciBhblxuICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgaXRlcmFibGVzIG9mXG4gICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6IGBgZC51cGRhdGUocmVkPTEsXG4gICAgICBibHVlPTIpYGAuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cblNlZSBhbHNvOlxuXG4gICBgYHR5cGVzLk1hcHBpbmdQcm94eVR5cGVgYCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSByZWFkLW9ubHkgdmlld1xuICAgb2YgYSBgYGRpY3RgYC5cblxuXG5EaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgYGBkaWN0LmtleXMoKWBgLCBgYGRpY3QudmFsdWVzKClgYCBhbmRcbmBgZGljdC5pdGVtcygpYGAgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyB2aWV3IG9uXG50aGUgZGljdGlvbmFyeVwncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnlcbmNoYW5nZXMsIHRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG5cbkRpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgcmVzcGVjdGl2ZSBkYXRhLFxuYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcblxubGVuKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5pdGVyKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zIChyZXByZXNlbnRlZCBhc1xuICAgdHVwbGVzIG9mIGBgKGtleSwgdmFsdWUpYGApIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyIHdoaWNoIGlzXG4gICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCBkZXBlbmRzIG9uXG4gICB0aGUgZGljdGlvbmFyeVwncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gSWYga2V5cyxcbiAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyBpbnRlcnZlbmluZ1xuICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zIHdpbGwgZGlyZWN0bHlcbiAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgYGAodmFsdWUsIGtleSlgYCBwYWlyc1xuICAgdXNpbmcgYGB6aXAoKWBgOiBgYHBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKWBgLiAgQW5vdGhlclxuICAgd2F5IHRvIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzIGBgcGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW5cbiAgIGQuaXRlbXMoKV1gYC5cblxuICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5XG4gICBtYXkgcmFpc2UgYSBgYFJ1bnRpbWVFcnJvcmBgIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyBrZXlzLFxuICAgdmFsdWVzIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSBgYChrZXksXG4gICB2YWx1ZSlgYCB0dXBsZSkuXG5cbktleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgaGFzaGFibGUuXG5JZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCBgYChrZXksIHZhbHVlKWBgIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgYGBjb2xsZWN0aW9ucy5hYmMuU2V0YGAgYXJlIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsIGBgPT1gYCxcbmBgPGBgLCBvciBgYF5gYCkuXG5cbkFuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOlxuXG4gICA+Pj4gZGlzaGVzID0ge1wnZWdnc1wnOiAyLCBcJ3NhdXNhZ2VcJzogMSwgXCdiYWNvblwnOiAxLCBcJ3NwYW1cJzogNTAwfVxuICAgPj4+IGtleXMgPSBkaXNoZXMua2V5cygpXG4gICA+Pj4gdmFsdWVzID0gZGlzaGVzLnZhbHVlcygpXG5cbiAgID4+PiAjIGl0ZXJhdGlvblxuICAgPj4+IG4gPSAwXG4gICA+Pj4gZm9yIHZhbCBpbiB2YWx1ZXM6XG4gICAuLi4gICAgIG4gKz0gdmFsXG4gICA+Pj4gcHJpbnQobilcbiAgIDUwNFxuXG4gICA+Pj4gIyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gdGhlIHNhbWUgb3JkZXJcbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYXVzYWdlXCcsIFwnc3BhbVwnXVxuICAgPj4+IGxpc3QodmFsdWVzKVxuICAgWzIsIDEsIDEsIDUwMF1cblxuICAgPj4+ICMgdmlldyBvYmplY3RzIGFyZSBkeW5hbWljIGFuZCByZWZsZWN0IGRpY3QgY2hhbmdlc1xuICAgPj4+IGRlbCBkaXNoZXNbXCdlZ2dzXCddXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ3NhdXNhZ2VcJ11cbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdzcGFtXCcsIFwnYmFjb25cJ11cblxuICAgPj4+ICMgc2V0IG9wZXJhdGlvbnNcbiAgID4+PiBrZXlzICYge1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2FsYWRcJ31cbiAgIHtcJ2JhY29uXCd9XG4gICA+Pj4ga2V5cyBeIHtcJ3NhdXNhZ2VcJywgXCdqdWljZVwnfVxuICAge1wnanVpY2VcJywgXCdzYXVzYWdlXCcsIFwnYmFjb25cJywgXCdzcGFtXCd9XG4nLAogICd0eXBlc21ldGhvZHMnOiAiXG5NZXRob2RzXG4qKioqKioqXG5cbk1ldGhvZHMgYXJlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdXNpbmcgdGhlIGF0dHJpYnV0ZSBub3RhdGlvbi5cblRoZXJlIGFyZSB0d28gZmxhdm9yczogYnVpbHQtaW4gbWV0aG9kcyAoc3VjaCBhcyBgYGFwcGVuZCgpYGAgb25cbmxpc3RzKSBhbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZFxud2l0aCB0aGUgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG5cbklmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzIG5hbWVzcGFjZSlcbnRocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgbWV0aG9kKiAoYWxzb1xuY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCB0aGVcbmBgc2VsZmBgIGFyZ3VtZW50IHRvIHRoZSBhcmd1bWVudCBsaXN0LiAgQm91bmQgbWV0aG9kcyBoYXZlIHR3b1xuc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBtLl9fc2VsZl9fYGAgaXMgdGhlIG9iamVjdCBvbiB3aGljaFxudGhlIG1ldGhvZCBvcGVyYXRlcywgYW5kIGBgbS5fX2Z1bmNfX2BgIGlzIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmdcbnRoZSBtZXRob2QuICBDYWxsaW5nIGBgbShhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pYGAgaXMgY29tcGxldGVseVxuZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgbS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLixcbmFyZy1uKWBgLlxuXG5MaWtlIGZ1bmN0aW9uIG9iamVjdHMsIGJvdW5kIG1ldGhvZCBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyBhcmJpdHJhcnlcbmF0dHJpYnV0ZXMuICBIb3dldmVyLCBzaW5jZSBtZXRob2QgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgc3RvcmVkIG9uXG50aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QgKGBgbWV0aC5fX2Z1bmNfX2BgKSwgc2V0dGluZyBtZXRob2RcbmF0dHJpYnV0ZXMgb24gYm91bmQgbWV0aG9kcyBpcyBkaXNhbGxvd2VkLiAgQXR0ZW1wdGluZyB0byBzZXQgYSBtZXRob2RcbmF0dHJpYnV0ZSByZXN1bHRzIGluIGEgYGBUeXBlRXJyb3JgYCBiZWluZyByYWlzZWQuICBJbiBvcmRlciB0byBzZXQgYVxubWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlIHVuZGVybHlpbmdcbmZ1bmN0aW9uIG9iamVjdDpcblxuICAgY2xhc3MgQzpcbiAgICAgICBkZWYgbWV0aG9kKHNlbGYpOlxuICAgICAgICAgICBwYXNzXG5cbiAgIGMgPSBDKClcbiAgIGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9ICdteSBuYW1lIGlzIGMnXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIsCiAgJ3R5cGVzbW9kdWxlcyc6ICJcbk1vZHVsZXNcbioqKioqKipcblxuVGhlIG9ubHkgc3BlY2lhbCBvcGVyYXRpb24gb24gYSBtb2R1bGUgaXMgYXR0cmlidXRlIGFjY2VzczpcbmBgbS5uYW1lYGAsIHdoZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkXG5pbiAqbSoncyBzeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlXG50aGF0IHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb25cbm9uIGEgbW9kdWxlIG9iamVjdDsgYGBpbXBvcnQgZm9vYGAgZG9lcyBub3QgcmVxdWlyZSBhIG1vZHVsZSBvYmplY3Rcbm5hbWVkICpmb28qIHRvIGV4aXN0LCByYXRoZXIgaXQgcmVxdWlyZXMgYW4gKGV4dGVybmFsKSAqZGVmaW5pdGlvbipcbmZvciBhIG1vZHVsZSBuYW1lZCAqZm9vKiBzb21ld2hlcmUuKVxuXG5BIHNwZWNpYWwgYXR0cmlidXRlIG9mIGV2ZXJ5IG1vZHVsZSBpcyBgYF9fZGljdF9fYGAuIFRoaXMgaXMgdGhlXG5kaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nIHRoaXNcbmRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZSwgYnV0IGRpcmVjdFxuYXNzaWdubWVudCB0byB0aGUgYGBfX2RpY3RfX2BgIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSBjYW5cbndyaXRlIGBgbS5fX2RpY3RfX1snYSddID0gMWBgLCB3aGljaCBkZWZpbmVzIGBgbS5hYGAgdG8gYmUgYGAxYGAsIGJ1dFxueW91IGNhbid0IHdyaXRlIGBgbS5fX2RpY3RfXyA9IHt9YGApLiAgTW9kaWZ5aW5nIGBgX19kaWN0X19gYCBkaXJlY3RseVxuaXMgbm90IHJlY29tbWVuZGVkLlxuXG5Nb2R1bGVzIGJ1aWx0IGludG8gdGhlIGludGVycHJldGVyIGFyZSB3cml0dGVuIGxpa2UgdGhpczogYGA8bW9kdWxlXG4nc3lzJyAoYnVpbHQtaW4pPmBgLiAgSWYgbG9hZGVkIGZyb20gYSBmaWxlLCB0aGV5IGFyZSB3cml0dGVuIGFzXG5gYDxtb2R1bGUgJ29zJyBmcm9tICcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljJz5gYC5cbiIsCi0gJ3R5cGVzc2VxJzogJ1xuU2VxdWVuY2UgVHlwZXMgLS0tIGBgc3RyYGAsIGBgYnl0ZXNgYCwgYGBieXRlYXJyYXlgYCwgYGBsaXN0YGAsIGBgdHVwbGVgYCwgYGByYW5nZWBgXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHNpeCBzZXF1ZW5jZSB0eXBlczogc3RyaW5ncywgYnl0ZSBzZXF1ZW5jZXMgKGBgYnl0ZXNgYFxub2JqZWN0cyksIGJ5dGUgYXJyYXlzIChgYGJ5dGVhcnJheWBgIG9iamVjdHMpLCBsaXN0cywgdHVwbGVzLCBhbmRcbnJhbmdlIG9iamVjdHMuICBGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluIGBgZGljdGBgIGFuZFxuYGBzZXRgYCBjbGFzc2VzLCBhbmQgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblN0cmluZ3MgY29udGFpbiBVbmljb2RlIGNoYXJhY3RlcnMuICBUaGVpciBsaXRlcmFscyBhcmUgd3JpdHRlbiBpblxuc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXM6IGBgXCd4eXp6eVwnYGAsIGBgImZyb2JvenoiYGAuICBTZWUgKlN0cmluZyBhbmRcbkJ5dGVzIGxpdGVyYWxzKiBmb3IgbW9yZSBhYm91dCBzdHJpbmcgbGl0ZXJhbHMuICBJbiBhZGRpdGlvbiB0byB0aGVcbmZ1bmN0aW9uYWxpdHkgZGVzY3JpYmVkIGhlcmUsIHRoZXJlIGFyZSBhbHNvIHN0cmluZy1zcGVjaWZpYyBtZXRob2RzXG5kZXNjcmliZWQgaW4gdGhlICpTdHJpbmcgTWV0aG9kcyogc2VjdGlvbi5cblxuQnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGNvbnRhaW4gc2luZ2xlIGJ5dGVzIC0tIHRoZSBmb3JtZXIgaXNcbmltbXV0YWJsZSB3aGlsZSB0aGUgbGF0dGVyIGlzIGEgbXV0YWJsZSBzZXF1ZW5jZS4gIEJ5dGVzIG9iamVjdHMgY2FuXG5iZSBjb25zdHJ1Y3RlZCB0aGUgY29uc3RydWN0b3IsIGBgYnl0ZXMoKWBgLCBhbmQgZnJvbSBsaXRlcmFsczsgdXNlIGFcbmBgYmBgIHByZWZpeCB3aXRoIG5vcm1hbCBzdHJpbmcgc3ludGF4OiBgYGJcJ3h5enp5XCdgYC4gIFRvIGNvbnN0cnVjdFxuYnl0ZSBhcnJheXMsIHVzZSB0aGUgYGBieXRlYXJyYXkoKWBgIGZ1bmN0aW9uLlxuXG5XaGlsZSBzdHJpbmcgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mIGNoYXJhY3RlcnMgKHJlcHJlc2VudGVkIGJ5XG5zdHJpbmdzIG9mIGxlbmd0aCAxKSwgYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2ZcbippbnRlZ2VycyogKGJldHdlZW4gMCBhbmQgMjU1KSwgcmVwcmVzZW50aW5nIHRoZSBBU0NJSSB2YWx1ZSBvZiBzaW5nbGVcbmJ5dGVzLiAgVGhhdCBtZWFucyB0aGF0IGZvciBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3QgKmIqLCBgYGJbMF1gYFxud2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZSBgYGJbMDoxXWBgIHdpbGwgYmUgYSBieXRlcyBvciBieXRlYXJyYXlcbm9iamVjdCBvZiBsZW5ndGggMS4gIFRoZSByZXByZXNlbnRhdGlvbiBvZiBieXRlcyBvYmplY3RzIHVzZXMgdGhlXG5saXRlcmFsIGZvcm1hdCAoYGBiXCcuLi5cJ2BgKSBzaW5jZSBpdCBpcyBnZW5lcmFsbHkgbW9yZSB1c2VmdWwgdGhhblxuZS5nLiBgYGJ5dGVzKFs1MCwgMTksIDEwMF0pYGAuICBZb3UgY2FuIGFsd2F5cyBjb252ZXJ0IGEgYnl0ZXMgb2JqZWN0XG5pbnRvIGEgbGlzdCBvZiBpbnRlZ2VycyB1c2luZyBgYGxpc3QoYilgYC5cblxuQWxzbywgd2hpbGUgaW4gcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zLCBieXRlIHN0cmluZ3MgYW5kIFVuaWNvZGVcbnN0cmluZ3MgY291bGQgYmUgZXhjaGFuZ2VkIGZvciBlYWNoIG90aGVyIHJhdGhlciBmcmVlbHkgKGJhcnJpbmdcbmVuY29kaW5nIGlzc3VlcyksIHN0cmluZ3MgYW5kIGJ5dGVzIGFyZSBub3cgY29tcGxldGVseSBzZXBhcmF0ZVxuY29uY2VwdHMuICBUaGVyZVwncyBubyBpbXBsaWNpdCBlbi0vZGVjb2RpbmcgaWYgeW91IHBhc3MgYW4gb2JqZWN0IG9mXG50aGUgd3JvbmcgdHlwZS4gIEEgc3RyaW5nIGFsd2F5cyBjb21wYXJlcyB1bmVxdWFsIHRvIGEgYnl0ZXMgb3JcbmJ5dGVhcnJheSBvYmplY3QuXG5cbkxpc3RzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoXG5jb21tYXM6IGBgW2EsIGIsIGNdYGAuICBUdXBsZXMgYXJlIGNvbnN0cnVjdGVkIGJ5IHRoZSBjb21tYSBvcGVyYXRvclxuKG5vdCB3aXRoaW4gc3F1YXJlIGJyYWNrZXRzKSwgd2l0aCBvciB3aXRob3V0IGVuY2xvc2luZyBwYXJlbnRoZXNlcyxcbmJ1dCBhbiBlbXB0eSB0dXBsZSBtdXN0IGhhdmUgdGhlIGVuY2xvc2luZyBwYXJlbnRoZXNlcywgc3VjaCBhcyBgYGEsXG5iLCBjYGAgb3IgYGAoKWBgLiAgQSBzaW5nbGUgaXRlbSB0dXBsZSBtdXN0IGhhdmUgYSB0cmFpbGluZyBjb21tYSxcbnN1Y2ggYXMgYGAoZCwpYGAuXG5cbk9iamVjdHMgb2YgdHlwZSByYW5nZSBhcmUgY3JlYXRlZCB1c2luZyB0aGUgYGByYW5nZSgpYGAgZnVuY3Rpb24uXG5UaGV5IGRvblwndCBzdXBwb3J0IGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbiwgYW5kIHVzaW5nIGBgbWluKClgYCBvclxuYGBtYXgoKWBgIG9uIHRoZW0gaXMgaW5lZmZpY2llbnQuXG5cbk1vc3Qgc2VxdWVuY2UgdHlwZXMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnMuICBUaGUgYGBpbmBgIGFuZFxuYGBub3QgaW5gYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGUgY29tcGFyaXNvblxub3BlcmF0aW9ucy4gIFRoZSBgYCtgYCBhbmQgYGAqYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzXG50aGUgY29ycmVzcG9uZGluZyBudW1lcmljIG9wZXJhdGlvbnMuIFszXSBBZGRpdGlvbmFsIG1ldGhvZHMgYXJlXG5wcm92aWRlZCBmb3IgKk11dGFibGUgU2VxdWVuY2UgVHlwZXMqLlxuXG5UaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHlcbihvcGVyYXRpb25zIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByaW9yaXR5KS4gIEluIHRoZSB0YWJsZSxcbipzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZTsgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZVxuaW50ZWdlcnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgYGB4IGluIHNgYCAgICAgICAgIHwgYGBUcnVlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgRmFsc2VgYCAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGB4IG5vdCBpbiBzYGAgICAgIHwgYGBGYWxzZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgVHJ1ZWBgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICsgdGBgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAqdCogfCAoNikgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICogbiwgbiAqIHNgYCAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgICAgfCAoMikgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgY29uY2F0ZW5hdGVkICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2ldYGAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al1gYCAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNCkgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXWBgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBsZW4ocylgYCAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtaW4ocylgYCAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtYXgocylgYCAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KGkpYGAgICAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmNvdW50KGkpYGAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcblxuU2VxdWVuY2UgdHlwZXMgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhciwgdHVwbGVzIGFuZFxubGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZyBjb3JyZXNwb25kaW5nXG5lbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeSBlbGVtZW50IG11c3RcbmNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZVxudGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICpDb21wYXJpc29ucyogaW4gdGhlIGxhbmd1YWdlXG5yZWZlcmVuY2UuKVxuXG5Ob3RlczpcblxuMS4gV2hlbiAqcyogaXMgYSBzdHJpbmcgb2JqZWN0LCB0aGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnNcbiAgIGFjdCBsaWtlIGEgc3Vic3RyaW5nIHRlc3QuXG5cbjIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuIGBgMGBgIGFyZSB0cmVhdGVkIGFzIGBgMGBgICh3aGljaCB5aWVsZHMgYW5cbiAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgYWxzbyB0aGF0IHRoZSBjb3BpZXNcbiAgIGFyZSBzaGFsbG93OyBuZXN0ZWQgc3RydWN0dXJlcyBhcmUgbm90IGNvcGllZC4gIFRoaXMgb2Z0ZW4gaGF1bnRzXG4gICBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcblxuICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbiAgID4+PiBsaXN0c1xuICAgW1tdLCBbXSwgW11dXG4gICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICA+Pj4gbGlzdHNcbiAgIFtbM10sIFszXSwgWzNdXVxuXG4gICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0IGBgW1tdXWBgIGlzIGEgb25lLWVsZW1lbnQgbGlzdCBjb250YWluaW5nXG4gICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgYGBbW11dICogM2BgIGFyZSAocG9pbnRlcnNcbiAgIHRvKSB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgIGBgbGlzdHNgYCBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LiBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2ZcbiAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcblxuICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuICAgPj4+IGxpc3RzXG4gICBbWzNdLCBbNV0sIFs3XV1cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlXG4gICBzdHJpbmc6IGBgbGVuKHMpICsgaWBgIG9yIGBgbGVuKHMpICsgamBgIGlzIHN1YnN0aXR1dGVkLiAgQnV0IG5vdGVcbiAgIHRoYXQgYGAtMGBgIGlzIHN0aWxsIGBgMGBgLlxuXG40LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSBvZlxuICAgaXRlbXMgd2l0aCBpbmRleCAqayogc3VjaCB0aGF0IGBgaSA8PSBrIDwgamBgLiAgSWYgKmkqIG9yICpqKiBpc1xuICAgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsIHVzZSBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3JcbiAgIGBgTm9uZWBgLCB1c2UgYGAwYGAuICBJZiAqaiogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgdXNlXG4gICBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpc1xuICAgZW1wdHkuXG5cbjUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyB0aGVcbiAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggIGBgeCA9IGkgKyBuKmtgYCBzdWNoIHRoYXQgYGAwIDw9IG4gPFxuICAgKGotaSkva2BgLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSBgYGlgYCwgYGBpK2tgYCxcbiAgIGBgaSsyKmtgYCwgYGBpKzMqa2BgIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0XG4gICBuZXZlciBpbmNsdWRpbmcgKmoqKS4gIElmICppKiBvciAqaiogaXMgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsXG4gICB1c2UgYGBsZW4ocylgYC4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZXkgYmVjb21lXG4gICAiZW5kIiB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqaypcbiAgIGNhbm5vdCBiZSB6ZXJvLiBJZiAqayogaXMgYGBOb25lYGAsIGl0IGlzIHRyZWF0ZWQgbGlrZSBgYDFgYC5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc3RyaW5ncyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ldyBvYmplY3QuXG4gICBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzdHJpbmcgYnkgcmVwZWF0ZWQgY29uY2F0ZW5hdGlvbiB3aWxsXG4gICBoYXZlIGEgcXVhZHJhdGljIHJ1bnRpbWUgY29zdCBpbiB0aGUgdG90YWwgc3RyaW5nIGxlbmd0aC4gIFRvIGdldCBhXG4gICBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXNcbiAgIGJlbG93OlxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGBzdHJgYCBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgIGBgc3RyLmpvaW4oKWBgIGF0IHRoZSBlbmQ7XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYGJ5dGVzYGAgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4gICAgIGBgYnl0ZXMuam9pbigpYGAsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2UgY29uY2F0ZW5hdGlvbiB3aXRoIGFcbiAgICAgYGBieXRlYXJyYXlgYCBvYmplY3QuICBgYGJ5dGVhcnJheWBgIG9iamVjdHMgYXJlIG11dGFibGUgYW5kIGhhdmVcbiAgICAgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbS5cblxuXG5TdHJpbmcgTWV0aG9kc1xuPT09PT09PT09PT09PT1cblxuU3RyaW5nIG9iamVjdHMgc3VwcG9ydCB0aGUgbWV0aG9kcyBsaXN0ZWQgYmVsb3cuXG5cbkluIGFkZGl0aW9uLCBQeXRob25cJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHNcbmRlc2NyaWJlZCBpbiB0aGUgKlNlcXVlbmNlIFR5cGVzIC0tLSBzdHIsIGJ5dGVzLCBieXRlYXJyYXksIGxpc3QsXG50dXBsZSwgcmFuZ2UqIHNlY3Rpb24uIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSAqU3RyaW5nXG5Gb3JtYXR0aW5nKiBzZWN0aW9uLiBBbHNvLCBzZWUgdGhlIGBgcmVgYCBtb2R1bGUgZm9yIHN0cmluZyBmdW5jdGlvbnNcbmJhc2VkIG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYSBzcGFjZSkuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyBgYFwnc3RyaWN0XCdgYCxcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBgYFVuaWNvZGVFcnJvcmBgLiBPdGhlclxuICAgcG9zc2libGUgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgLFxuICAgYGBcJ3htbGNoYXJyZWZyZXBsYWNlXCdgYCwgYGBcJ2JhY2tzbGFzaHJlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2ZcbiAgIHN1ZmZpeGVzIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdFxuICAgdGhhdCBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyhbdGFic2l6ZV0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGhlIGNvbHVtbiBudW1iZXIgaXMgcmVzZXQgdG8gemVybyBhZnRlciBlYWNoXG4gICBuZXdsaW5lIG9jY3VycmluZyBpbiB0aGUgc3RyaW5nLiBJZiAqdGFic2l6ZSogaXMgbm90IGdpdmVuLCBhIHRhYlxuICAgc2l6ZSBvZiBgYDhgYCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuICBUaGlzIGRvZXNuXCd0IHVuZGVyc3RhbmQgb3RoZXJcbiAgIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzIG9yIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSBgYGZpbmQoKWBgIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlXG4gICAgIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LCB1c2VcbiAgICAgdGhlIGBgaW5gYCBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzIGBge31gYC4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAsIGV4Y2VwdCB0aGF0IGBgbWFwcGluZ2BgIGlzXG4gICB1c2VkIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgYGBkaWN0YGAgLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yXG4gICBleGFtcGxlIGBgbWFwcGluZ2BgIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGBmaW5kKClgYCwgYnV0IHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyXG4gICBgYGNgYCBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyBgYFRydWVgYDpcbiAgIGBgYy5pc2FscGhhKClgYCwgYGBjLmlzZGVjaW1hbCgpYGAsIGBgYy5pc2RpZ2l0KClgYCwgb3JcbiAgIGBgYy5pc251bWVyaWMoKWBgLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiBgYHJlcHIoKWBgIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBIGBgVHlwZUVycm9yYGAgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nIGBgYnl0ZXNgYCBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcubHN0cmlwKClcbiAgIFwnc3BhY2lvdXMgICBcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcubHN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGUuY29tXCdcblxuc3RhdGljIHN0ci5tYWtldHJhbnMoeFssIHlbLCB6XV0pXG5cbiAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlIGZvclxuICAgYGBzdHIudHJhbnNsYXRlKClgYC5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgb24gZmFpbHVyZS5cblxuc3RyLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgcmZpbmQoKWBgIGJ1dCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiB0aGUgc3Vic3RyaW5nICpzdWIqXG4gICBpcyBub3QgZm91bmQuXG5cbnN0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgYGBOb25lYGAsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3JcbiAgIHNwbGl0dGluZyBmcm9tIHRoZSByaWdodCwgYGByc3BsaXQoKWBgIGJlaGF2ZXMgbGlrZSBgYHNwbGl0KClgYFxuICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgXCcgICBzcGFjaW91c1wnXG4gICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgYGBtYXhzcGxpdCsxYGBcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCwgdGhlbiB0aGVyZSBpcyBubyBsaW1pdFxuICAgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMSwsMlwnLnNwbGl0KFwnLFwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnXCcsIFwnMlwnXWBgKS4gIFRoZSAqc2VwKlxuICAgYXJndW1lbnQgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGApLiBTcGxpdHRpbmdcbiAgIGFuIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zIGBgW1wnXCddYGAuXG5cbiAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgYGBOb25lYGAsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhIGBgTm9uZWBgIHNlcGFyYXRvciByZXR1cm5zXG4gICBgYFtdYGAuXG5cbiAgIEZvciBleGFtcGxlLCBgYFwnIDEgIDIgICAzICBcJy5zcGxpdCgpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgLFxuICAgYW5kIGBgXCcgIDEgIDIgICAzICBcJy5zcGxpdChOb25lLCAxKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMiAgIDMgIFwnXWBgLlxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG5zdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlXG4gICByZXR1cm4gYGBGYWxzZWBgLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2tcbiAgIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGVcbiAgICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHNcbiAgIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcuc3RyaXAoKVxuICAgXCdzcGFjaW91c1wnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5zdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlXCdcblxuc3RyLnN3YXBjYXNlKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgY29udmVydGVkIHRvXG4gICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgICAgICAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcylcblxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZShtYXApXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkXG4gICB0aHJvdWdoIHRoZSAqbWFwKiB3aGljaCBtdXN0IGJlIGEgZGljdGlvbmFyeSBvZiBVbmljb2RlIG9yZGluYWxzXG4gICAoaW50ZWdlcnMpIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgYGBOb25lYGAuICBVbm1hcHBlZFxuICAgY2hhcmFjdGVycyBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvIGBgTm9uZWBgIGFyZVxuICAgZGVsZXRlZC5cblxuICAgWW91IGNhbiB1c2UgYGBzdHIubWFrZXRyYW5zKClgYCB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgTm90ZTogQW4gZXZlbiBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBhIGN1c3RvbSBjaGFyYWN0ZXJcbiAgICAgbWFwcGluZyBjb2RlYyB1c2luZyB0aGUgYGBjb2RlY3NgYCBtb2R1bGUgKHNlZVxuICAgICBgYGVuY29kaW5ncy5jcDEyNTFgYCBmb3IgYW4gZXhhbXBsZSkuXG5cbnN0ci51cHBlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgYGBzdHIudXBwZXIoKS5pc3VwcGVyKClgYCBtaWdodFxuICAgYmUgYGBGYWxzZWBgIGlmIGBgc2BgIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlcixcbiAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSBzdHJpbmcgb2ZcbiAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSBvcmlnaW5hbFxuICAgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cblxuT2xkIFN0cmluZyBGb3JtYXR0aW5nIE9wZXJhdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbk5vdGU6IFRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGhlcmUgYXJlIG9ic29sZXRlIGFuZCBtYXkgZ29cbiAgYXdheSBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uLiAgVXNlIHRoZSBuZXcgKlN0cmluZyBGb3JtYXR0aW5nKlxuICBpbiBuZXcgY29kZS5cblxuU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yXG4obW9kdWxvKS4gVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yXG4qaW50ZXJwb2xhdGlvbiogb3BlcmF0b3IuIEdpdmVuIGBgZm9ybWF0ICUgdmFsdWVzYGAgKHdoZXJlICpmb3JtYXQqIGlzXG5hIHN0cmluZyksIGBgJWBgIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCogYXJlIHJlcGxhY2VkXG53aXRoIHplcm8gb3IgbW9yZSBlbGVtZW50cyBvZiAqdmFsdWVzKi4gVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHRoZVxudXNpbmcgYGBzcHJpbnRmKClgYCBpbiB0aGUgQyBsYW5ndWFnZS5cblxuSWYgKmZvcm1hdCogcmVxdWlyZXMgYSBzaW5nbGUgYXJndW1lbnQsICp2YWx1ZXMqIG1heSBiZSBhIHNpbmdsZSBub24tXG50dXBsZSBvYmplY3QuIFs1XSAgT3RoZXJ3aXNlLCAqdmFsdWVzKiBtdXN0IGJlIGEgdHVwbGUgd2l0aCBleGFjdGx5XG50aGUgbnVtYmVyIG9mIGl0ZW1zIHNwZWNpZmllZCBieSB0aGUgZm9ybWF0IHN0cmluZywgb3IgYSBzaW5nbGVcbm1hcHBpbmcgb2JqZWN0IChmb3IgZXhhbXBsZSwgYSBkaWN0aW9uYXJ5KS5cblxuQSBjb252ZXJzaW9uIHNwZWNpZmllciBjb250YWlucyB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGFuZCBoYXMgdGhlXG5mb2xsb3dpbmcgY29tcG9uZW50cywgd2hpY2ggbXVzdCBvY2N1ciBpbiB0aGlzIG9yZGVyOlxuXG4xLiBUaGUgYGBcJyVcJ2BgIGNoYXJhY3Rlciwgd2hpY2ggbWFya3MgdGhlIHN0YXJ0IG9mIHRoZSBzcGVjaWZpZXIuXG5cbjIuIE1hcHBpbmcga2V5IChvcHRpb25hbCksIGNvbnNpc3Rpbmcgb2YgYSBwYXJlbnRoZXNpc2VkIHNlcXVlbmNlIG9mXG4gICBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSwgYGAoc29tZW5hbWUpYGApLlxuXG4zLiBDb252ZXJzaW9uIGZsYWdzIChvcHRpb25hbCksIHdoaWNoIGFmZmVjdCB0aGUgcmVzdWx0IG9mIHNvbWVcbiAgIGNvbnZlcnNpb24gdHlwZXMuXG5cbjQuIE1pbmltdW0gZmllbGQgd2lkdGggKG9wdGlvbmFsKS4gIElmIHNwZWNpZmllZCBhcyBhbiBgYFwnKlwnYGBcbiAgIChhc3RlcmlzayksIHRoZSBhY3R1YWwgd2lkdGggaXMgcmVhZCBmcm9tIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlXG4gICB0dXBsZSBpbiAqdmFsdWVzKiwgYW5kIHRoZSBvYmplY3QgdG8gY29udmVydCBjb21lcyBhZnRlciB0aGVcbiAgIG1pbmltdW0gZmllbGQgd2lkdGggYW5kIG9wdGlvbmFsIHByZWNpc2lvbi5cblxuNS4gUHJlY2lzaW9uIChvcHRpb25hbCksIGdpdmVuIGFzIGEgYGBcJy5cJ2BgIChkb3QpIGZvbGxvd2VkIGJ5IHRoZVxuICAgcHJlY2lzaW9uLiAgSWYgc3BlY2lmaWVkIGFzIGBgXCcqXCdgYCAoYW4gYXN0ZXJpc2spLCB0aGUgYWN0dWFsXG4gICBwcmVjaXNpb24gaXMgcmVhZCBmcm9tIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGluICp2YWx1ZXMqLFxuICAgYW5kIHRoZSB2YWx1ZSB0byBjb252ZXJ0IGNvbWVzIGFmdGVyIHRoZSBwcmVjaXNpb24uXG5cbjYuIExlbmd0aCBtb2RpZmllciAob3B0aW9uYWwpLlxuXG43LiBDb252ZXJzaW9uIHR5cGUuXG5cbldoZW4gdGhlIHJpZ2h0IGFyZ3VtZW50IGlzIGEgZGljdGlvbmFyeSAob3Igb3RoZXIgbWFwcGluZyB0eXBlKSwgdGhlblxudGhlIGZvcm1hdHMgaW4gdGhlIHN0cmluZyAqbXVzdCogaW5jbHVkZSBhIHBhcmVudGhlc2lzZWQgbWFwcGluZyBrZXlcbmludG8gdGhhdCBkaWN0aW9uYXJ5IGluc2VydGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBgYFwnJVwnYGAgY2hhcmFjdGVyLlxuVGhlIG1hcHBpbmcga2V5IHNlbGVjdHMgdGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZCBmcm9tIHRoZSBtYXBwaW5nLlxuRm9yIGV4YW1wbGU6XG5cbj4+PiBwcmludChcJyUobGFuZ3VhZ2UpcyBoYXMgJShudW1iZXIpMDNkIHF1b3RlIHR5cGVzLlwnICVcbi4uLiAgICAgICB7XCdsYW5ndWFnZVwnOiAiUHl0aG9uIiwgIm51bWJlciI6IDJ9KVxuUHl0aG9uIGhhcyAwMDIgcXVvdGUgdHlwZXMuXG5cbkluIHRoaXMgY2FzZSBubyBgYCpgYCBzcGVjaWZpZXJzIG1heSBvY2N1ciBpbiBhIGZvcm1hdCAoc2luY2UgdGhleVxucmVxdWlyZSBhIHNlcXVlbnRpYWwgcGFyYW1ldGVyIGxpc3QpLlxuXG5UaGUgY29udmVyc2lvbiBmbGFnIGNoYXJhY3RlcnMgYXJlOlxuXG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IEZsYWcgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgXCcjXCdgYCAgIHwgVGhlIHZhbHVlIGNvbnZlcnNpb24gd2lsbCB1c2UgdGhlICJhbHRlcm5hdGUgZm9ybSIgKHdoZXJlIGRlZmluZWQgICAgIHxcbnwgICAgICAgICAgIHwgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBcJzBcJ2BgICAgfCBUaGUgY29udmVyc2lvbiB3aWxsIGJlIHplcm8gcGFkZGVkIGZvciBudW1lcmljIHZhbHVlcy4gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnLVwnYGAgICB8IFRoZSBjb252ZXJ0ZWQgdmFsdWUgaXMgbGVmdCBhZGp1c3RlZCAob3ZlcnJpZGVzIHRoZSBgYFwnMFwnYGAgICAgICAgICAgIHxcbnwgICAgICAgICAgIHwgY29udmVyc2lvbiBpZiBib3RoIGFyZSBnaXZlbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBcJyBcJ2BgICAgfCAoYSBzcGFjZSkgQSBibGFuayBzaG91bGQgYmUgbGVmdCBiZWZvcmUgYSBwb3NpdGl2ZSBudW1iZXIgKG9yIGVtcHR5ICAgfFxufCAgICAgICAgICAgfCBzdHJpbmcpIHByb2R1Y2VkIGJ5IGEgc2lnbmVkIGNvbnZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnK1wnYGAgICB8IEEgc2lnbiBjaGFyYWN0ZXIgKGBgXCcrXCdgYCBvciBgYFwnLVwnYGApIHdpbGwgcHJlY2VkZSB0aGUgY29udmVyc2lvbiAgICAgfFxufCAgICAgICAgICAgfCAob3ZlcnJpZGVzIGEgInNwYWNlIiBmbGFnKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5BIGxlbmd0aCBtb2RpZmllciAoYGBoYGAsIGBgbGBgLCBvciBgYExgYCkgbWF5IGJlIHByZXNlbnQsIGJ1dCBpc1xuaWdub3JlZCBhcyBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciBQeXRob24gLS0gc28gZS5nLiBgYCVsZGBgIGlzXG5pZGVudGljYWwgdG8gYGAlZGBgLlxuXG5UaGUgY29udmVyc2lvbiB0eXBlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgQ29udmVyc2lvbiAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgYGBcJ2RcJ2BgICAgICAgfCBTaWduZWQgaW50ZWdlciBkZWNpbWFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnaVwnYGAgICAgICB8IFNpZ25lZCBpbnRlZ2VyIGRlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdvXCdgYCAgICAgIHwgU2lnbmVkIG9jdGFsIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoMSkgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3VcJ2BgICAgICAgfCBPYnNvbGV0ZSB0eXBlIC0tIGl0IGlzIGlkZW50aWNhbCB0byBgYFwnZFwnYGAuICAgICAgICAgIHwgKDcpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCd4XCdgYCAgICAgIHwgU2lnbmVkIGhleGFkZWNpbWFsIChsb3dlcmNhc2UpLiAgICAgICAgICAgICAgICAgICAgICAgfCAoMikgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ1hcJ2BgICAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgKHVwcGVyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgICB8ICgyKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnZVwnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGV4cG9uZW50aWFsIGZvcm1hdCAobG93ZXJjYXNlKS4gICAgICAgIHwgKDMpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdFXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZXhwb25lbnRpYWwgZm9ybWF0ICh1cHBlcmNhc2UpLiAgICAgICAgfCAoMykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ2ZcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBkZWNpbWFsIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICB8ICgzKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnRlwnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDMpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdnXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZm9ybWF0LiBVc2VzIGxvd2VyY2FzZSBleHBvbmVudGlhbCAgICAgfCAoNCkgICAgIHxcbnwgICAgICAgICAgICAgIHwgZm9ybWF0IGlmIGV4cG9uZW50IGlzIGxlc3MgdGhhbiAtNCBvciBub3QgbGVzcyB0aGFuICAgfCAgICAgICAgIHxcbnwgICAgICAgICAgICAgIHwgcHJlY2lzaW9uLCBkZWNpbWFsIGZvcm1hdCBvdGhlcndpc2UuICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ0dcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBmb3JtYXQuIFVzZXMgdXBwZXJjYXNlIGV4cG9uZW50aWFsICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzIHRoYW4gICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnY1wnYGAgICAgICB8IFNpbmdsZSBjaGFyYWN0ZXIgKGFjY2VwdHMgaW50ZWdlciBvciBzaW5nbGUgY2hhcmFjdGVyIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICB8IHN0cmluZykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdyXCdgYCAgICAgIHwgU3RyaW5nIChjb252ZXJ0cyBhbnkgUHl0aG9uIG9iamVjdCB1c2luZyBgYHJlcHIoKWBgKS4gfCAoNSkgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3NcJ2BgICAgICAgfCBTdHJpbmcgKGNvbnZlcnRzIGFueSBQeXRob24gb2JqZWN0IHVzaW5nIGBgc3RyKClgYCkuICB8ICg1KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnYVwnYGAgICAgICB8IFN0cmluZyAoY29udmVydHMgYW55IFB5dGhvbiBvYmplY3QgdXNpbmcgICAgICAgICAgICAgIHwgKDUpICAgICB8XG58ICAgICAgICAgICAgICB8IGBgYXNjaWkoKWBgKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCclXCdgYCAgICAgIHwgTm8gYXJndW1lbnQgaXMgY29udmVydGVkLCByZXN1bHRzIGluIGEgYGBcJyVcJ2BgICAgICAgICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBjaGFyYWN0ZXIgaW4gdGhlIHJlc3VsdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgemVybyAoYGBcJzBcJ2BgKSB0byBiZSBpbnNlcnRlZFxuICAgYmV0d2VlbiBsZWZ0LWhhbmQgcGFkZGluZyBhbmQgdGhlIGZvcm1hdHRpbmcgb2YgdGhlIG51bWJlciBpZiB0aGVcbiAgIGxlYWRpbmcgY2hhcmFjdGVyIG9mIHRoZSByZXN1bHQgaXMgbm90IGFscmVhZHkgYSB6ZXJvLlxuXG4yLiBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIGEgbGVhZGluZyBgYFwnMHhcJ2BgIG9yIGBgXCcwWFwnYGAgKGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGUgYGBcJ3hcJ2BgIG9yIGBgXCdYXCdgYCBmb3JtYXQgd2FzIHVzZWQpIHRvIGJlIGluc2VydGVkXG4gICBiZXR3ZWVuIGxlZnQtaGFuZCBwYWRkaW5nIGFuZCB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbnVtYmVyIGlmIHRoZVxuICAgbGVhZGluZyBjaGFyYWN0ZXIgb2YgdGhlIHJlc3VsdCBpcyBub3QgYWxyZWFkeSBhIHplcm8uXG5cbjMuIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWxcbiAgIHBvaW50LCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuXG5cbiAgIFRoZSBwcmVjaXNpb24gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbFxuICAgcG9pbnQgYW5kIGRlZmF1bHRzIHRvIDYuXG5cbjQuIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWxcbiAgIHBvaW50LCBhbmQgdHJhaWxpbmcgemVyb2VzIGFyZSBub3QgcmVtb3ZlZCBhcyB0aGV5IHdvdWxkIG90aGVyd2lzZVxuICAgYmUuXG5cbiAgIFRoZSBwcmVjaXNpb24gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBiZWZvcmVcbiAgIGFuZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBhbmQgZGVmYXVsdHMgdG8gNi5cblxuNS4gSWYgcHJlY2lzaW9uIGlzIGBgTmBgLCB0aGUgb3V0cHV0IGlzIHRydW5jYXRlZCB0byBgYE5gYCBjaGFyYWN0ZXJzLlxuXG4xLiBTZWUgKipQRVAgMjM3KiouXG5cblNpbmNlIFB5dGhvbiBzdHJpbmdzIGhhdmUgYW4gZXhwbGljaXQgbGVuZ3RoLCBgYCVzYGAgY29udmVyc2lvbnMgZG9cbm5vdCBhc3N1bWUgdGhhdCBgYFwnXFwwXCdgYCBpcyB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IGBgJWZgYCBjb252ZXJzaW9ucyBmb3IgbnVtYmVycyB3aG9zZSBhYnNvbHV0ZVxudmFsdWUgaXMgb3ZlciAxZTUwIGFyZSBubyBsb25nZXIgcmVwbGFjZWQgYnkgYGAlZ2BgIGNvbnZlcnNpb25zLlxuXG5BZGRpdGlvbmFsIHN0cmluZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGluIHN0YW5kYXJkIG1vZHVsZXNcbmBgc3RyaW5nYGAgYW5kIGBgcmVgYC5cblxuXG5SYW5nZSBUeXBlXG49PT09PT09PT09XG5cblRoZSBgYHJhbmdlYGAgdHlwZSBpcyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBmb3Jcbmxvb3BpbmcuICBUaGUgYWR2YW50YWdlIG9mIHRoZSBgYHJhbmdlYGAgdHlwZSBpcyB0aGF0IGFuIGBgcmFuZ2VgYFxub2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgYW1vdW50IG9mIG1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplXG5vZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cy5cblxuUmFuZ2Ugb2JqZWN0cyBoYXZlIHJlbGF0aXZlbHkgbGl0dGxlIGJlaGF2aW9yOiB0aGV5IHN1cHBvcnQgaW5kZXhpbmcsXG5jb250YWlucywgaXRlcmF0aW9uLCB0aGUgYGBsZW4oKWBgIGZ1bmN0aW9uLCBhbmQgdGhlIGZvbGxvd2luZ1xubWV0aG9kczpcblxucmFuZ2UuY291bnQoeClcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgKmkqXCdzIGZvciB3aGljaCBgYHNbaV0gPT0geGBgLlxuXG4gICAgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnJhbmdlLmluZGV4KHgpXG5cbiAgIFJldHVybiB0aGUgc21hbGxlc3QgKmkqIHN1Y2ggdGhhdCBgYHNbaV0gPT0geGBgLiAgUmFpc2VzXG4gICBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgaW4gdGhlIHJhbmdlLlxuXG4gICAgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cblxuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PVxuXG5MaXN0IGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93XG5pbi1wbGFjZSBtb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXNcbih3aGVuIGFkZGVkIHRvIHRoZSBsYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLlxuU3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXM6IHN1Y2ggb2JqZWN0cyBjYW5ub3RcbmJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIG9uXG5tdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCkuXG5cbk5vdGUgdGhhdCB3aGlsZSBsaXN0cyBhbGxvdyB0aGVpciBpdGVtcyB0byBiZSBvZiBhbnkgdHlwZSwgYnl0ZWFycmF5XG5vYmplY3QgIml0ZW1zIiBhcmUgYWxsIGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBzW2ldID0geGBgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al0gPSB0YGAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6al1gYCAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXSA9IHRgYCAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCBhcmUgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmo6a11gYCAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmFwcGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbeF1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSB4YGAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgICAgICB8IHJldHVybiBudW1iZXIgb2YgKmkqXCdzIGZvciB3aGljaCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICAgICAgfCByZXR1cm4gc21hbGxlc3QgKmsqIHN1Y2ggdGhhdCAgICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1trXSA9PSB4YGAgYW5kIGBgaSA8PSBrIDwgamBgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmldID0gW3hdYGAgICAgICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnBvcChbaV0pYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHggPSBzW2ldOyBkZWwgc1tpXTsgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXR1cm4geGBgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnJlbW92ZSh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYGRlbCBzW3MuaW5kZXgoeCldYGAgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5zb3J0KFtrZXlbLCByZXZlcnNlXV0pYGAgICB8IHNvcnQgdGhlIGl0ZW1zIG9mICpzKiBpbiBwbGFjZSAgIHwgKDYpLCAoNyksICg4KSAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gKngqIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0LlxuXG4zLiBSYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlbiBhIG5lZ2F0aXZlXG4gICBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIHNlY29uZCBvciB0aGlyZCBwYXJhbWV0ZXIgdG8gdGhlIGBgaW5kZXgoKWBgXG4gICBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXRcbiAgIGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuXG5cbjQuIFdoZW4gYSBuZWdhdGl2ZSBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byB0aGVcbiAgIGBgaW5zZXJ0KClgYCBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZVxuICAgaW5kaWNlcy4gIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yXG4gICBzbGljZSBpbmRpY2VzLlxuXG41LiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG42LiBUaGUgYGBzb3J0KClgYCBhbmQgYGByZXZlcnNlKClgYCBtZXRob2RzIG1vZGlmeSB0aGUgc2VxdWVuY2UgaW5cbiAgIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlIHdoZW4gc29ydGluZyBvciByZXZlcnNpbmcgYSBsYXJnZVxuICAgc2VxdWVuY2UuICBUbyByZW1pbmQgeW91IHRoYXQgdGhleSBvcGVyYXRlIGJ5IHNpZGUgZWZmZWN0LCB0aGV5XG4gICBkb25cJ3QgcmV0dXJuIHRoZSBzb3J0ZWQgb3IgcmV2ZXJzZWQgc2VxdWVuY2UuXG5cbjcuIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCB0YWtlcyBvcHRpb25hbCBhcmd1bWVudHMgZm9yIGNvbnRyb2xsaW5nIHRoZVxuICAgY29tcGFyaXNvbnMuICBFYWNoIG11c3QgYmUgc3BlY2lmaWVkIGFzIGEga2V5d29yZCBhcmd1bWVudC5cblxuICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0byBleHRyYWN0XG4gICBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQ6IGBga2V5PXN0ci5sb3dlcmBgLiAgVGhlXG4gICBkZWZhdWx0IHZhbHVlIGlzIGBgTm9uZWBgLiBVc2UgYGBmdW5jdG9vbHMuY21wX3RvX2tleSgpYGAgdG9cbiAgIGNvbnZlcnQgYW4gb2xkLXN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3RcbiAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpcyBzdGFibGVcbiAgIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdFxuICAgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3Nlc1xuICAgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5IGdyYWRlKS5cblxuICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLFxuICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgbGlzdCBpc1xuICAgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZSBsaXN0IGFwcGVhclxuICAgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCBpZiBpdCBjYW4gZGV0ZWN0XG4gICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuOC4gYGBzb3J0KClgYCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGBgYnl0ZWFycmF5YGAgb2JqZWN0cy5cblxuXG5CeXRlcyBhbmQgQnl0ZSBBcnJheSBNZXRob2RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cywgYmVpbmcgInN0cmluZ3Mgb2YgYnl0ZXMiLCBoYXZlIGFsbFxubWV0aG9kcyBmb3VuZCBvbiBzdHJpbmdzLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYGBlbmNvZGUoKWBgLFxuYGBmb3JtYXQoKWBgIGFuZCBgYGlzaWRlbnRpZmllcigpYGAsIHdoaWNoIGRvIG5vdCBtYWtlIHNlbnNlIHdpdGhcbnRoZXNlIHR5cGVzLiAgRm9yIGNvbnZlcnRpbmcgdGhlIG9iamVjdHMgdG8gc3RyaW5ncywgdGhleSBoYXZlIGFcbmBgZGVjb2RlKClgYCBtZXRob2QuXG5cbldoZXJldmVyIG9uZSBvZiB0aGVzZSBtZXRob2RzIG5lZWRzIHRvIGludGVycHJldCB0aGUgYnl0ZXMgYXNcbmNoYXJhY3RlcnMgKGUuZy4gdGhlIGBgaXMuLi4oKWBgIG1ldGhvZHMpLCB0aGUgQVNDSUkgY2hhcmFjdGVyIHNldCBpc1xuYXNzdW1lZC5cblxuTm90ZTogVGhlIG1ldGhvZHMgb24gYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGRvblwndCBhY2NlcHQgc3RyaW5ncyBhc1xuICB0aGVpciBhcmd1bWVudHMsIGp1c3QgYXMgdGhlIG1ldGhvZHMgb24gc3RyaW5ncyBkb25cJ3QgYWNjZXB0IGJ5dGVzXG4gIGFzIHRoZWlyIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCB5b3UgaGF2ZSB0byB3cml0ZVxuXG4gICAgIGEgPSAiYWJjIlxuICAgICBiID0gYS5yZXBsYWNlKCJhIiwgImYiKVxuXG4gIGFuZFxuXG4gICAgIGEgPSBiImFiYyJcbiAgICAgYiA9IGEucmVwbGFjZShiImEiLCBiImYiKVxuXG5ieXRlcy5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuYnl0ZWFycmF5LmRlY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhIHN0cmluZyBkZWNvZGVkIGZyb20gdGhlIGdpdmVuIGJ5dGVzLiAgRGVmYXVsdCBlbmNvZGluZyBpc1xuICAgYGBcJ3V0Zi04XCdgYC4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvclxuICAgaGFuZGxpbmcgc2NoZW1lLiAgVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzIGBgXCdzdHJpY3RcJ2BgLCBtZWFuaW5nXG4gICB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIGBgVW5pY29kZUVycm9yYGAuICBPdGhlciBwb3NzaWJsZVxuICAgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzLlxuXG5UaGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSB0eXBlcyBoYXZlIGFuIGFkZGl0aW9uYWwgY2xhc3MgbWV0aG9kOlxuXG5jbGFzc21ldGhvZCBieXRlcy5mcm9taGV4KHN0cmluZylcbmNsYXNzbWV0aG9kIGJ5dGVhcnJheS5mcm9taGV4KHN0cmluZylcblxuICAgVGhpcyBgYGJ5dGVzYGAgY2xhc3MgbWV0aG9kIHJldHVybnMgYSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LFxuICAgZGVjb2RpbmcgdGhlIGdpdmVuIHN0cmluZyBvYmplY3QuICBUaGUgc3RyaW5nIG11c3QgY29udGFpbiB0d29cbiAgIGhleGFkZWNpbWFsIGRpZ2l0cyBwZXIgYnl0ZSwgc3BhY2VzIGFyZSBpZ25vcmVkLlxuXG4gICA+Pj4gYnl0ZXMuZnJvbWhleChcJ2YwIGYxZjIgIFwnKVxuICAgYlwnXFx4ZjBcXHhmMVxceGYyXCdcblxuVGhlIG1ha2V0cmFucyBhbmQgdHJhbnNsYXRlIG1ldGhvZHMgZGlmZmVyIGluIHNlbWFudGljcyBmcm9tIHRoZVxudmVyc2lvbnMgYXZhaWxhYmxlIG9uIHN0cmluZ3M6XG5cbmJ5dGVzLnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZV0pXG5ieXRlYXJyYXkudHJhbnNsYXRlKHRhYmxlWywgZGVsZXRlXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCB3aGVyZSBhbGwgYnl0ZXNcbiAgIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmRlbGV0ZSogYXJlIHJlbW92ZWQsIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBieXRlcyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uXG4gICB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LlxuXG4gICBZb3UgY2FuIHVzZSB0aGUgYGBieXRlcy5tYWtldHJhbnMoKWBgIG1ldGhvZCB0byBjcmVhdGUgYVxuICAgdHJhbnNsYXRpb24gdGFibGUuXG5cbiAgIFNldCB0aGUgKnRhYmxlKiBhcmd1bWVudCB0byBgYE5vbmVgYCBmb3IgdHJhbnNsYXRpb25zIHRoYXQgb25seVxuICAgZGVsZXRlIGNoYXJhY3RlcnM6XG5cbiAgICAgID4+PiBiXCdyZWFkIHRoaXMgc2hvcnQgdGV4dFwnLnRyYW5zbGF0ZShOb25lLCBiXCdhZWlvdVwnKVxuICAgICAgYlwncmQgdGhzIHNocnQgdHh0XCdcblxuc3RhdGljIGJ5dGVzLm1ha2V0cmFucyhmcm9tLCB0bylcbnN0YXRpYyBieXRlYXJyYXkubWFrZXRyYW5zKGZyb20sIHRvKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgIGBgYnl0ZXMudHJhbnNsYXRlKClgYCB0aGF0IHdpbGwgbWFwIGVhY2ggY2hhcmFjdGVyIGluICpmcm9tKiBpbnRvXG4gICB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluICp0byo7ICpmcm9tKiBhbmQgKnRvKiBtdXN0IGJlXG4gICBieXRlcyBvYmplY3RzIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4xLlxuJywKLSAndHlwZXNzZXEtbXV0YWJsZSc6ICdcbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbioqKioqKioqKioqKioqKioqKioqKipcblxuTGlzdCBhbmQgYnl0ZWFycmF5IG9iamVjdHMgc3VwcG9ydCBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgdGhhdCBhbGxvd1xuaW4tcGxhY2UgbW9kaWZpY2F0aW9uIG9mIHRoZSBvYmplY3QuICBPdGhlciBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzXG4od2hlbiBhZGRlZCB0byB0aGUgbGFuZ3VhZ2UpIHNob3VsZCBhbHNvIHN1cHBvcnQgdGhlc2Ugb3BlcmF0aW9ucy5cblN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzOiBzdWNoIG9iamVjdHMgY2Fubm90XG5iZSBtb2RpZmllZCBvbmNlIGNyZWF0ZWQuIFRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBvblxubXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyAod2hlcmUgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QpLlxuXG5Ob3RlIHRoYXQgd2hpbGUgbGlzdHMgYWxsb3cgdGhlaXIgaXRlbXMgdG8gYmUgb2YgYW55IHR5cGUsIGJ5dGVhcnJheVxub2JqZWN0ICJpdGVtcyIgYXJlIGFsbCBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTpqXSA9IFtdYGAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiBgYHNbaTpqOmtdYGAgYXJlIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6ajprXWBgIGZyb20gdGhlIGxpc3QgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldID0gICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3hdYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldID0geGBgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuY291bnQoeClgYCAgICAgICAgICAgICAgICAgfCByZXR1cm4gbnVtYmVyIG9mICppKlwncyBmb3Igd2hpY2ggfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaV0gPT0geGBgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KHhbLCBpWywgal1dKWBgICAgICAgIHwgcmV0dXJuIHNtYWxsZXN0ICprKiBzdWNoIHRoYXQgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNba10gPT0geGBgIGFuZCBgYGkgPD0gayA8IGpgYCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTppXSA9IFt4XWBgICAgICAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGB4ID0gc1tpXTsgZGVsIHNbaV07ICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmV0dXJuIHhgYCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBkZWwgc1tzLmluZGV4KHgpXWBgICAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuc29ydChba2V5WywgcmV2ZXJzZV1dKWBgICAgfCBzb3J0IHRoZSBpdGVtcyBvZiAqcyogaW4gcGxhY2UgICB8ICg2KSwgKDcpLCAoOCkgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuICp4KiBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdC5cblxuMy4gUmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW4gYSBuZWdhdGl2ZVxuICAgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBzZWNvbmQgb3IgdGhpcmQgcGFyYW1ldGVyIHRvIHRoZSBgYGluZGV4KClgYFxuICAgbWV0aG9kLCB0aGUgc2VxdWVuY2UgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy4gIElmIGl0XG4gICBpcyBzdGlsbCBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkIHRvIHplcm8sIGFzIGZvciBzbGljZSBpbmRpY2VzLlxuXG40LiBXaGVuIGEgbmVnYXRpdmUgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhlXG4gICBgYGluc2VydCgpYGAgbWV0aG9kLCB0aGUgc2VxdWVuY2UgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2VcbiAgIGluZGljZXMuICBJZiBpdCBpcyBzdGlsbCBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkIHRvIHplcm8sIGFzIGZvclxuICAgc2xpY2UgaW5kaWNlcy5cblxuNS4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuNi4gVGhlIGBgc29ydCgpYGAgYW5kIGBgcmV2ZXJzZSgpYGAgbWV0aG9kcyBtb2RpZnkgdGhlIHNlcXVlbmNlIGluXG4gICBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHNvcnRpbmcgb3IgcmV2ZXJzaW5nIGEgbGFyZ2VcbiAgIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHlvdSB0aGF0IHRoZXkgb3BlcmF0ZSBieSBzaWRlIGVmZmVjdCwgdGhleVxuICAgZG9uXCd0IHJldHVybiB0aGUgc29ydGVkIG9yIHJldmVyc2VkIHNlcXVlbmNlLlxuXG43LiBUaGUgYGBzb3J0KClgYCBtZXRob2QgdGFrZXMgb3B0aW9uYWwgYXJndW1lbnRzIGZvciBjb250cm9sbGluZyB0aGVcbiAgIGNvbXBhcmlzb25zLiAgRWFjaCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuXG5cbiAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdFxuICAgYSBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50OiBgYGtleT1zdHIubG93ZXJgYC4gIFRoZVxuICAgZGVmYXVsdCB2YWx1ZSBpcyBgYE5vbmVgYC4gVXNlIGBgZnVuY3Rvb2xzLmNtcF90b19rZXkoKWBgIHRvXG4gICBjb252ZXJ0IGFuIG9sZC1zdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLlxuXG4gICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHRoZSBsaXN0XG4gICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICBUaGUgYGBzb3J0KClgYCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXMgc3RhYmxlXG4gICBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXRcbiAgIGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpbiBtdWx0aXBsZSBwYXNzZXNcbiAgIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeSBncmFkZSkuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nIHNvcnRlZCxcbiAgIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgdGhlIGxpc3QgaXNcbiAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCBhcHBlYXJcbiAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgaWYgaXQgY2FuIGRldGVjdFxuICAgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG5cbjguIGBgc29ydCgpYGAgaXMgbm90IHN1cHBvcnRlZCBieSBgYGJ5dGVhcnJheWBgIG9iamVjdHMuXG4nLAorICd0eXBlc3NlcSc6ICdcblNlcXVlbmNlIFR5cGVzIC0tLSBgYGxpc3RgYCwgYGB0dXBsZWBgLCBgYHJhbmdlYGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Vcbm9iamVjdHMuIEFkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YgKmJpbmFyeVxuZGF0YSogYW5kICp0ZXh0IHN0cmluZ3MqIGFyZSBkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLlxuXG5cbkNvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCBzZXF1ZW5jZVxudHlwZXMsIGJvdGggbXV0YWJsZSBhbmQgaW1tdXRhYmxlLiBUaGUgYGBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgYFxuQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Vcbm9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlIHR5cGVzLlxuXG5UaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHlcbihvcGVyYXRpb25zIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByaW9yaXR5KS4gIEluIHRoZSB0YWJsZSxcbipzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZVxuaW50ZWdlcnMgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUgYW5kIHZhbHVlXG5yZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouXG5cblRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlXG5jb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSBgYCtgYCAoY29uY2F0ZW5hdGlvbikgYW5kIGBgKmBgXG4ocmVwZXRpdGlvbikgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nXG5udW1lcmljIG9wZXJhdGlvbnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgYGB4IGluIHNgYCAgICAgICAgICAgICAgICAgfCBgYFRydWVgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYEZhbHNlYGAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGB4IG5vdCBpbiBzYGAgICAgICAgICAgICAgfCBgYEZhbHNlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYFRydWVgYCAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICsgdGBgICAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICp0KiB8ICg2KSg3KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgcyAqIG5gYCBvciBgYG4gKiBzYGAgICAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgICAgfCAoMikoNykgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb25jYXRlbmF0ZWQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgc1tpXWBgICAgICAgICAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDQpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBsZW4ocylgYCAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgbWluKHMpYGAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYG1heChzKWBgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KHhbLCBpWywgal1dKWBgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mICB8ICg4KSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyIGluZGV4ICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKSAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMuY291bnQoeClgYCAgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cmVuY2VzIG9mICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuXG5TZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLFxudHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG5jb3JyZXNwb25kaW5nIGVsZW1lbnRzLiBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnlcbmVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG50eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAqQ29tcGFyaXNvbnMqIGluXG50aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLilcblxuTm90ZXM6XG5cbjEuIFdoaWxlIHRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciBzaW1wbGVcbiAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCBzZXF1ZW5jZXNcbiAgIChzdWNoIGFzIGBgc3RyYGAsIGBgYnl0ZXNgYCBhbmQgYGBieXRlYXJyYXlgYCkgYWxzbyB1c2UgdGhlbSBmb3JcbiAgIHN1YnNlcXVlbmNlIHRlc3Rpbmc6XG5cbiAgICAgID4+PiAiZ2ciIGluICJlZ2dzIlxuICAgICAgVHJ1ZVxuXG4yLiBWYWx1ZXMgb2YgKm4qIGxlc3MgdGhhbiBgYDBgYCBhcmUgdHJlYXRlZCBhcyBgYDBgYCAod2hpY2ggeWllbGRzIGFuXG4gICBlbXB0eSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlIGFzICpzKikuICBOb3RlIGFsc28gdGhhdCB0aGUgY29waWVzXG4gICBhcmUgc2hhbGxvdzsgbmVzdGVkIHN0cnVjdHVyZXMgYXJlIG5vdCBjb3BpZWQuICBUaGlzIG9mdGVuIGhhdW50c1xuICAgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbXSwgW10sIFtdXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbM10sIFszXV1cblxuICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCBgYFtbXV1gYCBpcyBhIG9uZS1lbGVtZW50IGxpc3QgY29udGFpbmluZ1xuICAgYW4gZW1wdHkgbGlzdCwgc28gYWxsIHRocmVlIGVsZW1lbnRzIG9mIGBgW1tdXSAqIDNgYCBhcmUgKHBvaW50ZXJzXG4gICB0bykgdGhpcyBzaW5nbGUgZW1wdHkgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mXG4gICBgYGxpc3RzYGAgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4gICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbiAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgICAgID4+PiBsaXN0c1sxXS5hcHBlbmQoNSlcbiAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1szXSwgWzVdLCBbN11dXG5cbjMuIElmICppKiBvciAqaiogaXMgbmVnYXRpdmUsIHRoZSBpbmRleCBpcyByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZVxuICAgc3RyaW5nOiBgYGxlbihzKSArIGlgYCBvciBgYGxlbihzKSArIGpgYCBpcyBzdWJzdGl0dXRlZC4gIEJ1dCBub3RlXG4gICB0aGF0IGBgLTBgYCBpcyBzdGlsbCBgYDBgYC5cblxuNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2Ugb2ZcbiAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCBgYGkgPD0gayA8IGpgYC4gIElmICppKiBvciAqaiogaXNcbiAgIGdyZWF0ZXIgdGhhbiBgYGxlbihzKWBgLCB1c2UgYGBsZW4ocylgYC4gIElmICppKiBpcyBvbWl0dGVkIG9yXG4gICBgYE5vbmVgYCwgdXNlIGBgMGBgLiAgSWYgKmoqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIHVzZVxuICAgYGBsZW4ocylgYC4gIElmICppKiBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKmoqLCB0aGUgc2xpY2UgaXNcbiAgIGVtcHR5LlxuXG41LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiB3aXRoIHN0ZXAgKmsqIGlzIGRlZmluZWQgYXMgdGhlXG4gICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICBgYHggPSBpICsgbiprYGAgc3VjaCB0aGF0IGBgMCA8PSBuIDxcbiAgIChqLWkpL2tgYC4gIEluIG90aGVyIHdvcmRzLCB0aGUgaW5kaWNlcyBhcmUgYGBpYGAsIGBgaStrYGAsXG4gICBgYGkrMiprYGAsIGBgaSszKmtgYCBhbmQgc28gb24sIHN0b3BwaW5nIHdoZW4gKmoqIGlzIHJlYWNoZWQgKGJ1dFxuICAgbmV2ZXIgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiBgYGxlbihzKWBgLFxuICAgdXNlIGBgbGVuKHMpYGAuICBJZiAqaSogb3IgKmoqIGFyZSBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGV5IGJlY29tZVxuICAgImVuZCIgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqXG4gICBjYW5ub3QgYmUgemVyby4gSWYgKmsqIGlzIGBgTm9uZWBgLCBpdCBpcyB0cmVhdGVkIGxpa2UgYGAxYGAuXG5cbjYuIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHNlcXVlbmNlcyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ldyBvYmplY3QuXG4gICBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzZXF1ZW5jZSBieSByZXBlYXRlZCBjb25jYXRlbmF0aW9uXG4gICB3aWxsIGhhdmUgYSBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSB0b3RhbCBzZXF1ZW5jZSBsZW5ndGguXG4gICBUbyBnZXQgYSBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZVxuICAgYWx0ZXJuYXRpdmVzIGJlbG93OlxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGBzdHJgYCBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgIGBgc3RyLmpvaW4oKWBgIGF0IHRoZSBlbmQgb3IgZWxzZSB3cml0ZSB0byBhIGBgaW8uU3RyaW5nSU9gYFxuICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nIGBgYnl0ZXNgYCBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbiAgICAgYGBieXRlcy5qb2luKClgYCBvciBgYGlvLkJ5dGVzSU9gYCwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSBgYGJ5dGVhcnJheWBgIG9iamVjdC4gIGBgYnl0ZWFycmF5YGAgb2JqZWN0c1xuICAgICBhcmUgbXV0YWJsZSBhbmQgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtXG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYHR1cGxlYGAgb2JqZWN0cywgZXh0ZW5kIGEgYGBsaXN0YGAgaW5zdGVhZFxuXG4gICAqIGZvciBvdGhlciB0eXBlcywgaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IGNsYXNzIGRvY3VtZW50YXRpb25cblxuNy4gU29tZSBzZXF1ZW5jZSB0eXBlcyAoc3VjaCBhcyBgYHJhbmdlYGApIG9ubHkgc3VwcG9ydCBpdGVtIHNlcXVlbmNlc1xuICAgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb25cJ3Qgc3VwcG9ydCBzZXF1ZW5jZVxuICAgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLlxuXG44LiBgYGluZGV4YGAgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW5cbiAgIHN1cHBvcnRlZCwgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBpbmRleCBtZXRob2QgYWxsb3dcbiAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nIHRoZVxuICAgZXh0cmEgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyBgYHNbaTpqXS5pbmRleCh4KWBgLFxuICAgb25seSB3aXRob3V0IGNvcHlpbmcgYW55IGRhdGEgYW5kIHdpdGggdGhlIHJldHVybmVkIGluZGV4IGJlaW5nXG4gICByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCBvZiB0aGVcbiAgIHNsaWNlLlxuXG5cbkltbXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvbmx5IG9wZXJhdGlvbiB0aGF0IGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBnZW5lcmFsbHkgaW1wbGVtZW50XG50aGF0IGlzIG5vdCBhbHNvIGltcGxlbWVudGVkIGJ5IG11dGFibGUgc2VxdWVuY2UgdHlwZXMgaXMgc3VwcG9ydCBmb3JcbnRoZSBgYGhhc2goKWBgIGJ1aWx0LWluLlxuXG5UaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgYGB0dXBsZWBgIGluc3RhbmNlcyxcbnRvIGJlIHVzZWQgYXMgYGBkaWN0YGAga2V5cyBhbmQgc3RvcmVkIGluIGBgc2V0YGAgYW5kIGBgZnJvemVuc2V0YGBcbmluc3RhbmNlcy5cblxuQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHVuaGFzaGFibGVcbnZhbHVlcyB3aWxsIHJlc3VsdCBpbiBgYFR5cGVFcnJvcmBgLlxuXG5cbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlXG50eXBlcy4gVGhlIGBgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWBgIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsIGBgYnl0ZWFycmF5YGAgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uIGBgMCA8PSB4IDw9IDI1NWBgKS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgIGFyZSB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gW3hdYGApICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jbGVhcigpYGAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gYGBzYGAgICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBkZWwgc1s6XWBgKSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3B5KClgYCAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgYGBzYGAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBzWzpdYGApICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQodClgYCAgICAgICAgICAgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA9IHRgYCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmldID0gW3hdYGApICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gYGByZW1vdmVgYCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cblxuNC4gVGhlIGBgcmV2ZXJzZSgpYGAgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teVxuICAgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0XG4gICBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZCBzZXF1ZW5jZS5cblxuNS4gYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb25cJ3Qgc3VwcG9ydCBzbGljaW5nXG4gICBvcGVyYXRpb25zIChzdWNoIGFzIGBgZGljdGBgIGFuZCBgYHNldGBgKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjM6IGBgY2xlYXIoKWBgIGFuZCBgYGNvcHkoKWBgIG1ldGhvZHMuXG5cblxuTGlzdHNcbj09PT09XG5cbkxpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnlcbmFwcGxpY2F0aW9uKS5cblxuY2xhc3MgY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuXG4gICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiBgYFtdYGBcblxuICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgW2FdYGAsXG4gICAgIGBgW2EsIGIsIGNdYGBcblxuICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogYGBbeCBmb3IgeCBpbiBpdGVyYWJsZV1gYFxuXG4gICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiBgYGxpc3QoKWBgIG9yIGBgbGlzdChpdGVyYWJsZSlgYFxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gYGBpdGVyYWJsZVs6XWBgLiBGb3IgZXhhbXBsZSwgYGBsaXN0KFwnYWJjXCcpYGBcbiAgIHJldHVybnMgYGBbXCdhXCcsIFwnYlwnLCBcJ2NcJ11gYCBhbmQgYGBsaXN0KCAoMSwgMiwgMykgKWBgIHJldHVybnMgYGBbMSxcbiAgIDIsIDNdYGAuIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ld1xuICAgZW1wdHkgbGlzdCwgYGBbXWBgLlxuXG4gICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlXG4gICBgYHNvcnRlZCgpYGAgYnVpbHQtaW4uXG5cbiAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIGFuZCAqbXV0YWJsZSogc2VxdWVuY2VcbiAgIG9wZXJhdGlvbnMuIExpc3RzIGFsc28gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOlxuXG4gICBzb3J0KCosIGtleT1Ob25lLCByZXZlcnNlPU5vbmUpXG5cbiAgICAgIFRoaXMgbWV0aG9kIHNvcnRzIHRoZSBsaXN0IGluIHBsYWNlLCB1c2luZyBvbmx5IGBgPGBgXG4gICAgICBjb21wYXJpc29ucyBiZXR3ZWVuIGl0ZW1zLiBFeGNlcHRpb25zIGFyZSBub3Qgc3VwcHJlc3NlZCAtIGlmXG4gICAgICBhbnkgY29tcGFyaXNvbiBvcGVyYXRpb25zIGZhaWwsIHRoZSBlbnRpcmUgc29ydCBvcGVyYXRpb24gd2lsbFxuICAgICAgZmFpbCAoYW5kIHRoZSBsaXN0IHdpbGwgbGlrZWx5IGJlIGxlZnQgaW4gYSBwYXJ0aWFsbHkgbW9kaWZpZWRcbiAgICAgIHN0YXRlKS5cblxuICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0b1xuICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLFxuICAgICAgYGBrZXk9c3RyLmxvd2VyYGApLiBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBpdGVtIGluIHRoZVxuICAgICAgbGlzdCBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nXG4gICAgICBwcm9jZXNzLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBgYE5vbmVgYCBtZWFucyB0aGF0IGxpc3QgaXRlbXMgYXJlXG4gICAgICBzb3J0ZWQgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlIGtleSB2YWx1ZS5cblxuICAgICAgVGhlIGBgZnVuY3Rvb2xzLmNtcF90b19rZXkoKWBgIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYVxuICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3RcbiAgICAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgICAgIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZVxuICAgICAgd2hlbiBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCBvcGVyYXRlc1xuICAgICAgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICh1c2VcbiAgICAgIGBgc29ydGVkKClgYCB0byBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgc29ydGVkIGxpc3QgaW5zdGFuY2UpLlxuXG4gICAgICBUaGUgYGBzb3J0KClgYCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXNcbiAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mXG4gICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpblxuICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeVxuICAgICAgZ3JhZGUpLlxuXG4gICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIGlmIGl0IGNhblxuICAgICAgZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LlxuXG5cblR1cGxlc1xuPT09PT09XG5cblR1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhldGVyb2dlbmVvdXMgZGF0YSAoc3VjaCBhcyB0aGUgMi10dXBsZXMgcHJvZHVjZWQgYnkgdGhlXG5gYGVudW1lcmF0ZSgpYGAgYnVpbHQtaW4pLiBUdXBsZXMgYXJlIGFsc28gdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW5cbmltbXV0YWJsZSBzZXF1ZW5jZSBvZiBob21vZ2VuZW91cyBkYXRhIGlzIG5lZWRlZCAoc3VjaCBhcyBhbGxvd2luZ1xuc3RvcmFnZSBpbiBhIGBgc2V0YGAgb3IgYGBkaWN0YGAgaW5zdGFuY2UpLlxuXG5jbGFzcyBjbGFzcyB0dXBsZShbaXRlcmFibGVdKVxuXG4gICBUdXBsZXMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIGEgbnVtYmVyIG9mIHdheXM6XG5cbiAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6IGBgKClgYFxuXG4gICAqIFVzaW5nIGEgdHJhaWxpbmcgY29tbWEgZm9yIGEgc2luZ2xldG9uIHR1cGxlOiBgYGEsYGAgb3IgYGAoYSwpYGBcblxuICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYGEsIGIsIGNgYCBvciBgYChhLCBiLCBjKWBgXG5cbiAgICogVXNpbmcgdGhlIGBgdHVwbGUoKWBgIGJ1aWx0LWluOiBgYHR1cGxlKClgYCBvclxuICAgICBgYHR1cGxlKGl0ZXJhYmxlKWBgXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgYGB0dXBsZShcJ2FiY1wnKWBgIHJldHVybnMgYGAoXCdhXCcsIFwnYlwnLFxuICAgXCdjXCcpYGAgYW5kIGBgdHVwbGUoIFsxLCAyLCAzXSApYGAgcmV0dXJucyBgYCgxLCAyLCAzKWBgLiBJZiBub1xuICAgYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLFxuICAgYGAoKWBgLlxuXG4gICBOb3RlIHRoYXQgaXQgaXMgYWN0dWFsbHkgdGhlIGNvbW1hIHdoaWNoIG1ha2VzIGEgdHVwbGUsIG5vdCB0aGVcbiAgIHBhcmVudGhlc2VzLiBUaGUgcGFyZW50aGVzZXMgYXJlIG9wdGlvbmFsLCBleGNlcHQgaW4gdGhlIGVtcHR5XG4gICB0dXBsZSBjYXNlLCBvciB3aGVuIHRoZXkgYXJlIG5lZWRlZCB0byBhdm9pZCBzeW50YWN0aWMgYW1iaWd1aXR5LlxuICAgRm9yIGV4YW1wbGUsIGBgZihhLCBiLCBjKWBgIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRocmVlXG4gICBhcmd1bWVudHMsIHdoaWxlIGBgZigoYSwgYiwgYykpYGAgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlXG4gICBhcyB0aGUgc29sZSBhcmd1bWVudC5cblxuICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMuXG5cbkZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlclxudGhhbiBhY2Nlc3MgYnkgaW5kZXgsIGBgY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpYGAgbWF5IGJlIGEgbW9yZVxuYXBwcm9wcmlhdGUgY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LlxuXG5cblJhbmdlc1xuPT09PT09XG5cblRoZSBgYHJhbmdlYGAgdHlwZSByZXByZXNlbnRzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBudW1iZXJzIGFuZCBpc1xuY29tbW9ubHkgdXNlZCBmb3IgbG9vcGluZyBhIHNwZWNpZmljIG51bWJlciBvZiB0aW1lcyBpbiBgYGZvcmBgIGxvb3BzLlxuXG5jbGFzcyBjbGFzcyByYW5nZShbc3RhcnRdLCBzdG9wWywgc3RlcF0pXG5cbiAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIHJhbmdlIGNvbnN0cnVjdG9yIG11c3QgYmUgaW50ZWdlcnMgKGVpdGhlclxuICAgYnVpbHQtaW4gYGBpbnRgYCBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgYGBfX2luZGV4X19gYFxuICAgc3BlY2lhbCBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0b1xuICAgYGAxYGAuIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBgMGBgLiBJZlxuICAgKnN0ZXAqIGlzIHplcm8sIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC5cblxuICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSBgYHJgYCBhcmUgZGV0ZXJtaW5lZFxuICAgYnkgdGhlIGZvcm11bGEgYGByW2ldID0gc3RhcnQgKyBzdGVwKmlgYCB3aGVyZSBgYGkgPj0gMGBgIGFuZFxuICAgYGByW2ldIDwgc3RvcGBgLlxuXG4gICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsXG4gICBkZXRlcm1pbmVkIGJ5IHRoZSBmb3JtdWxhIGBgcltpXSA9IHN0YXJ0ICsgc3RlcCppYGAsIGJ1dCB0aGVcbiAgIGNvbnN0cmFpbnRzIGFyZSBgYGkgPj0gMGBgIGFuZCBgYHJbaV0gPiBzdG9wYGAuXG5cbiAgIEEgcmFuZ2Ugb2JqZWN0IHdpbGwgYmUgZW1wdHkgaWYgYGByWzBdYGAgZG9lcyBub3QgbWVhbnQgdGhlIHZhbHVlXG4gICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgYXJlXG4gICBpbnRlcnByZXRlZCBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIGRldGVybWluZWQgYnlcbiAgIHRoZSBwb3NpdGl2ZSBpbmRpY2VzLlxuXG4gICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gYGBzeXMubWF4c2l6ZWBgIGFyZVxuICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzIGBgbGVuKClgYCkgbWF5IHJhaXNlXG4gICBgYE92ZXJmbG93RXJyb3JgYC5cblxuICAgUmFuZ2UgZXhhbXBsZXM6XG5cbiAgICAgID4+PiBsaXN0KHJhbmdlKDEwKSlcbiAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKVxuICAgICAgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMzAsIDUpKVxuICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMTAsIDMpKVxuICAgICAgWzAsIDMsIDYsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSlcbiAgICAgIFswLCAtMSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTgsIC05XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCkpXG4gICAgICBbXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMCkpXG4gICAgICBbXVxuXG4gICBSYW5nZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucyBleGNlcHRcbiAgIGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlIG9iamVjdHNcbiAgIGNhbiBvbmx5IHJlcHJlc2VudCBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgYSBzdHJpY3QgcGF0dGVybiBhbmRcbiAgIHJlcGV0aXRpb24gYW5kIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCBwYXR0ZXJuKS5cblxuVGhlIGFkdmFudGFnZSBvZiB0aGUgYGByYW5nZWBgIHR5cGUgb3ZlciBhIHJlZ3VsYXIgYGBsaXN0YGAgb3JcbmBgdHVwbGVgYCBpcyB0aGF0IGEgYGByYW5nZWBgIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbClcbmFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXRcbm9ubHkgc3RvcmVzIHRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCB2YWx1ZXMsIGNhbGN1bGF0aW5nXG5pbmRpdmlkdWFsIGl0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cblxuUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlIGBgY29sbGVjdGlvbnMuU2VxdWVuY2VgYCBBQkMsIGFuZCBwcm92aWRlXG5mZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmRcbnN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSAqU2VxdWVuY2UgVHlwZXMgLS0tIGxpc3QsIHR1cGxlLFxucmFuZ2UqKTpcblxuPj4+IHIgPSByYW5nZSgwLCAyMCwgMilcbj4+PiByXG5yYW5nZSgwLCAyMCwgMilcbj4+PiAxMSBpbiByXG5GYWxzZVxuPj4+IDEwIGluIHJcblRydWVcbj4+PiByLmluZGV4KDEwKVxuNVxuPj4+IHJbNV1cbjEwXG4+Pj4gcls6NV1cbnJhbmdlKDAsIDEwLCAyKVxuPj4+IHJbLTFdXG4xOFxuXG5UZXN0aW5nIHJhbmdlIG9iamVjdHMgZm9yIGVxdWFsaXR5IHdpdGggYGA9PWBgIGFuZCBgYCE9YGAgY29tcGFyZXNcbnRoZW0gYXMgc2VxdWVuY2VzLiAgVGhhdCBpcywgdHdvIHJhbmdlIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaWZcbnRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcy4gIChOb3RlIHRoYXQgdHdvIHJhbmdlXG5vYmplY3RzIHRoYXQgY29tcGFyZSBlcXVhbCBtaWdodCBoYXZlIGRpZmZlcmVudCBgYHN0YXJ0YGAsIGBgc3RvcGBgXG5hbmQgYGBzdGVwYGAgYXR0cmlidXRlcywgZm9yIGV4YW1wbGUgYGByYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKWBgIG9yXG5gYHJhbmdlKDAsIDMsIDIpID09IHJhbmdlKDAsIDQsIDIpYGAuKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCBzbGljaW5nXG5hbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCBgYGludGBgIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gY29uc3RhbnRcbnRpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IERlZmluZSBcJz09XCcgYW5kIFwnIT1cJyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHNcbmJhc2VkIG9uIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nXG5iYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkpLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzLlxuJywKKyAndHlwZXNzZXEtbXV0YWJsZSc6ICJcbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlXG50eXBlcy4gVGhlIGBgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWBgIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsIGBgYnl0ZWFycmF5YGAgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uIGBgMCA8PSB4IDw9IDI1NWBgKS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgIGFyZSB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gW3hdYGApICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jbGVhcigpYGAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gYGBzYGAgICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBkZWwgc1s6XWBgKSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3B5KClgYCAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgYGBzYGAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBzWzpdYGApICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQodClgYCAgICAgICAgICAgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA9IHRgYCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmldID0gW3hdYGApICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gYGByZW1vdmVgYCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cblxuNC4gVGhlIGBgcmV2ZXJzZSgpYGAgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teVxuICAgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0XG4gICBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZCBzZXF1ZW5jZS5cblxuNS4gYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgYGBkaWN0YGAgYW5kIGBgc2V0YGApXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgbWV0aG9kcy5cbiIsCiAgJ3VuYXJ5JzogJ1xuVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5OlxuXG4gICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG5cblRoZSB1bmFyeSBgYC1gYCAobWludXMpIG9wZXJhdG9yIHlpZWxkcyB0aGUgbmVnYXRpb24gb2YgaXRzIG51bWVyaWNcbmFyZ3VtZW50LlxuXG5UaGUgdW5hcnkgYGArYGAgKHBsdXMpIG9wZXJhdG9yIHlpZWxkcyBpdHMgbnVtZXJpYyBhcmd1bWVudCB1bmNoYW5nZWQuXG5cblRoZSB1bmFyeSBgYH5gYCAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGl0c1xuaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiBgYHhgYCBpcyBkZWZpbmVkIGFzXG5gYC0oeCsxKWBgLiAgSXQgb25seSBhcHBsaWVzIHRvIGludGVncmFsIG51bWJlcnMuXG5cbkluIGFsbCB0aHJlZSBjYXNlcywgaWYgdGhlIGFyZ3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIHByb3BlciB0eXBlLCBhXG5gYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAogICd3aGlsZSc6ICdcblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXNcbmV4ZWN1dGVkIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5nb2VzIGJhY2sgdG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicsCiAgJ3dpdGgnOiAnXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb25cbmBgdHJ5YGAuLi5gYGV4Y2VwdGBgLi4uYGBmaW5hbGx5YGAgdXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkXG5mb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYGB3aXRoX2l0ZW1gYClcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2VudGVyX18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlIGBgd2l0aGBgIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSBgYF9fZW50ZXJfXygpYGAgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSBgYF9fZW50ZXJfXygpYGBcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiBgYF9fZXhpdF9fKClgYCB3aWxsIGFsd2F5c1xuICAgICBiZSBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYGBfX2V4aXRfXygpYGAuIE90aGVyd2lzZSxcbiAgIHRocmVlIGBgTm9uZWBgIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSBgYF9fZXhpdF9fKClgYCBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICByZXJhaXNlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXNcbiAgIHN1cHByZXNzZWQsIGFuZCBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmdcbiAgIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tIGBgX19leGl0X18oKWBgIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSBgYHdpdGhgYCBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG4nLAotICd5aWVsZCc6ICdcblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICB5aWVsZF9zdG10IDo6PSB5aWVsZF9leHByZXNzaW9uXG5cblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGEgZ2VuZXJhdG9yXG5mdW5jdGlvbiwgYW5kIGlzIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuVXNpbmcgYSBgYHlpZWxkYGAgc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvXG5jYXVzZSB0aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYVxubm9ybWFsIGZ1bmN0aW9uLiBXaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgcmV0dXJucyBhblxuaXRlcmF0b3Iga25vd24gYXMgYSBnZW5lcmF0b3IgaXRlcmF0b3IsIG9yIG1vcmUgY29tbW9ubHksIGEgZ2VuZXJhdG9yLlxuVGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBleGVjdXRlZCBieSBjYWxsaW5nIHRoZVxuYGBuZXh0KClgYCBmdW5jdGlvbiBvbiB0aGUgZ2VuZXJhdG9yIHJlcGVhdGVkbHkgdW50aWwgaXQgcmFpc2VzIGFuXG5leGNlcHRpb24uXG5cbldoZW4gYSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkLCB0aGUgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBpc1xuZnJvemVuIGFuZCB0aGUgdmFsdWUgb2YgYGBleHByZXNzaW9uX2xpc3RgYCBpcyByZXR1cm5lZCB0b1xuYGBuZXh0KClgYFwncyBjYWxsZXIuICBCeSAiZnJvemVuIiB3ZSBtZWFuIHRoYXQgYWxsIGxvY2FsIHN0YXRlIGlzXG5yZXRhaW5lZCwgaW5jbHVkaW5nIHRoZSBjdXJyZW50IGJpbmRpbmdzIG9mIGxvY2FsIHZhcmlhYmxlcywgdGhlXG5pbnN0cnVjdGlvbiBwb2ludGVyLCBhbmQgdGhlIGludGVybmFsIGV2YWx1YXRpb24gc3RhY2s6IGVub3VnaFxuaW5mb3JtYXRpb24gaXMgc2F2ZWQgc28gdGhhdCB0aGUgbmV4dCB0aW1lIGBgbmV4dCgpYGAgaXMgaW52b2tlZCwgdGhlXG5mdW5jdGlvbiBjYW4gcHJvY2VlZCBleGFjdGx5IGFzIGlmIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IHdlcmUganVzdFxuYW5vdGhlciBleHRlcm5hbCBjYWxsLlxuXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBhbGxvd2VkIGluIHRoZSBgYHRyeWBgIGNsYXVzZSBvZiBhIGBgdHJ5YGBcbi4uLiAgYGBmaW5hbGx5YGAgY29uc3RydWN0LiAgSWYgdGhlIGdlbmVyYXRvciBpcyBub3QgcmVzdW1lZCBiZWZvcmUgaXRcbmlzIGZpbmFsaXplZCAoYnkgcmVhY2hpbmcgYSB6ZXJvIHJlZmVyZW5jZSBjb3VudCBvciBieSBiZWluZyBnYXJiYWdlXG5jb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yXCdzIGBgY2xvc2UoKWBgIG1ldGhvZCB3aWxsIGJlXG5jYWxsZWQsIGFsbG93aW5nIGFueSBwZW5kaW5nIGBgZmluYWxseWBgIGNsYXVzZXMgdG8gZXhlY3V0ZS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAyNTUqKiAtIFNpbXBsZSBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgZm9yIGFkZGluZyBnZW5lcmF0b3JzIGFuZCB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuICAgICAgdG8gUHl0aG9uLlxuXG4gICAqKlBFUCAwMzQyKiogLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgdGhhdCwgYW1vbmcgb3RoZXIgZ2VuZXJhdG9yIGVuaGFuY2VtZW50cywgcHJvcG9zZWRcbiAgICAgIGFsbG93aW5nIGBgeWllbGRgYCB0byBhcHBlYXIgaW5zaWRlIGEgYGB0cnlgYCAuLi4gYGBmaW5hbGx5YGBcbiAgICAgIGJsb2NrLlxuJ30KKyAneWllbGQnOiAnXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgeWllbGRfc3RtdCA6Oj0geWllbGRfZXhwcmVzc2lvblxuXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhIGdlbmVyYXRvclxuZnVuY3Rpb24sIGFuZCBpcyBvbmx5IHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbi5cblVzaW5nIGEgYGB5aWVsZGBgIHN0YXRlbWVudCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0b1xuY2F1c2UgdGhhdCBkZWZpbml0aW9uIHRvIGNyZWF0ZSBhIGdlbmVyYXRvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGFcbm5vcm1hbCBmdW5jdGlvbi5cblxuV2hlbiBhIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQsIGl0IHJldHVybnMgYW4gaXRlcmF0b3Iga25vd24gYXMgYVxuZ2VuZXJhdG9yIGl0ZXJhdG9yLCBvciBtb3JlIGNvbW1vbmx5LCBhIGdlbmVyYXRvci4gIFRoZSBib2R5IG9mIHRoZVxuZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGJ5IGNhbGxpbmcgdGhlIGBgbmV4dCgpYGAgZnVuY3Rpb24gb25cbnRoZSBnZW5lcmF0b3IgcmVwZWF0ZWRseSB1bnRpbCBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXG5XaGVuIGEgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCwgdGhlIHN0YXRlIG9mIHRoZSBnZW5lcmF0b3IgaXNcbmZyb3plbiBhbmQgdGhlIHZhbHVlIG9mIGBgZXhwcmVzc2lvbl9saXN0YGAgaXMgcmV0dXJuZWQgdG9cbmBgbmV4dCgpYGBcJ3MgY2FsbGVyLiAgQnkgImZyb3plbiIgd2UgbWVhbiB0aGF0IGFsbCBsb2NhbCBzdGF0ZSBpc1xucmV0YWluZWQsIGluY2x1ZGluZyB0aGUgY3VycmVudCBiaW5kaW5ncyBvZiBsb2NhbCB2YXJpYWJsZXMsIHRoZVxuaW5zdHJ1Y3Rpb24gcG9pbnRlciwgYW5kIHRoZSBpbnRlcm5hbCBldmFsdWF0aW9uIHN0YWNrOiBlbm91Z2hcbmluZm9ybWF0aW9uIGlzIHNhdmVkIHNvIHRoYXQgdGhlIG5leHQgdGltZSBgYG5leHQoKWBgIGlzIGludm9rZWQsIHRoZVxuZnVuY3Rpb24gY2FuIHByb2NlZWQgZXhhY3RseSBhcyBpZiB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCB3ZXJlIGp1c3RcbmFub3RoZXIgZXh0ZXJuYWwgY2FsbC5cblxuVGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgaXMgYWxsb3dlZCBpbiB0aGUgYGB0cnlgYCBjbGF1c2Ugb2YgYSBgYHRyeWBgXG4uLi4gIGBgZmluYWxseWBgIGNvbnN0cnVjdC4gIElmIHRoZSBnZW5lcmF0b3IgaXMgbm90IHJlc3VtZWQgYmVmb3JlIGl0XG5pcyBmaW5hbGl6ZWQgKGJ5IHJlYWNoaW5nIGEgemVybyByZWZlcmVuY2UgY291bnQgb3IgYnkgYmVpbmcgZ2FyYmFnZVxuY29sbGVjdGVkKSwgdGhlIGdlbmVyYXRvci1pdGVyYXRvclwncyBgYGNsb3NlKClgYCBtZXRob2Qgd2lsbCBiZVxuY2FsbGVkLCBhbGxvd2luZyBhbnkgcGVuZGluZyBgYGZpbmFsbHlgYCBjbGF1c2VzIHRvIGV4ZWN1dGUuXG5cbldoZW4gYGB5aWVsZCBmcm9tIDxleHByPmBgIGlzIHVzZWQsIGl0IHRyZWF0cyB0aGUgc3VwcGxpZWQgZXhwcmVzc2lvblxuYXMgYSBzdWJpdGVyYXRvciwgcHJvZHVjaW5nIHZhbHVlcyBmcm9tIGl0IHVudGlsIHRoZSB1bmRlcmx5aW5nXG5pdGVyYXRvciBpcyBleGhhdXN0ZWQuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEFkZGVkIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCB0byBkZWxlZ2F0ZVxuICAgY29udHJvbCBmbG93IHRvIGEgc3ViaXRlcmF0b3JcblxuRm9yIGZ1bGwgZGV0YWlscyBvZiBgYHlpZWxkYGAgc2VtYW50aWNzLCByZWZlciB0byB0aGUgKllpZWxkXG5leHByZXNzaW9ucyogc2VjdGlvbi5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAyNTUqKiAtIFNpbXBsZSBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgZm9yIGFkZGluZyBnZW5lcmF0b3JzIGFuZCB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuICAgICAgdG8gUHl0aG9uLlxuXG4gICAqKlBFUCAwMzQyKiogLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgdG8gZW5oYW5jZSB0aGUgQVBJIGFuZCBzeW50YXggb2YgZ2VuZXJhdG9ycywgbWFraW5nXG4gICAgICB0aGVtIHVzYWJsZSBhcyBzaW1wbGUgY29yb3V0aW5lcy5cblxuICAgKipQRVAgMDM4MCoqIC0gU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yXG4gICAgICBUaGUgcHJvcG9zYWwgdG8gaW50cm9kdWNlIHRoZSBgYHlpZWxkX2Zyb21gYCBzeW50YXgsIG1ha2luZ1xuICAgICAgZGVsZWdhdGlvbiB0byBzdWItZ2VuZXJhdG9ycyBlYXN5LlxuJ30KZGlmZiAtLWdpdCBhL0xpYi9xdWV1ZS5weSBiL0xpYi9xdWV1ZS5weQppbmRleCBiZWU3ZWQ0Li5jMzI5NmZlIDEwMDY0NAotLS0gYS9MaWIvcXVldWUucHkKKysrIGIvTGliL3F1ZXVlLnB5CkBAIC0xLDQ5ICsxLDU3IEBACi0iIiJBIG11bHRpLXByb2R1Y2VyLCBtdWx0aS1jb25zdW1lciBxdWV1ZS4iIiIKKycnJ0EgbXVsdGktcHJvZHVjZXIsIG11bHRpLWNvbnN1bWVyIHF1ZXVlLicnJwogCi1mcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIHRyeToKLSAgICBpbXBvcnQgdGhyZWFkaW5nIGFzIF90aHJlYWRpbmcKKyAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyBfdGhyZWFkaW5nCisgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1pbXBvcnQgaGVhcHEKK2Zyb20gaGVhcHEgaW1wb3J0IGhlYXBwdXNoLCBoZWFwcG9wCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdGltZSBpbXBvcnQgdGltZQogCiBfX2FsbF9fID0gWydFbXB0eScsICdGdWxsJywgJ1F1ZXVlJywgJ1ByaW9yaXR5UXVldWUnLCAnTGlmb1F1ZXVlJ10KIAogY2xhc3MgRW1wdHkoRXhjZXB0aW9uKToKLSAgICAiRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5nZXQoYmxvY2s9MCkvZ2V0X25vd2FpdCgpLiIKKyAgICAnRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5nZXQoYmxvY2s9MCkvZ2V0X25vd2FpdCgpLicKICAgICBwYXNzCiAKIGNsYXNzIEZ1bGwoRXhjZXB0aW9uKToKLSAgICAiRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5wdXQoYmxvY2s9MCkvcHV0X25vd2FpdCgpLiIKKyAgICAnRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5wdXQoYmxvY2s9MCkvcHV0X25vd2FpdCgpLicKICAgICBwYXNzCiAKIGNsYXNzIFF1ZXVlOgotICAgICIiIkNyZWF0ZSBhIHF1ZXVlIG9iamVjdCB3aXRoIGEgZ2l2ZW4gbWF4aW11bSBzaXplLgorICAgICcnJ0NyZWF0ZSBhIHF1ZXVlIG9iamVjdCB3aXRoIGEgZ2l2ZW4gbWF4aW11bSBzaXplLgogCiAgICAgSWYgbWF4c2l6ZSBpcyA8PSAwLCB0aGUgcXVldWUgc2l6ZSBpcyBpbmZpbml0ZS4KLSAgICAiIiIKKyAgICAnJycKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhzaXplPTApOgogICAgICAgICBzZWxmLm1heHNpemUgPSBtYXhzaXplCiAgICAgICAgIHNlbGYuX2luaXQobWF4c2l6ZSkKKwogICAgICAgICAjIG11dGV4IG11c3QgYmUgaGVsZCB3aGVuZXZlciB0aGUgcXVldWUgaXMgbXV0YXRpbmcuICBBbGwgbWV0aG9kcwogICAgICAgICAjIHRoYXQgYWNxdWlyZSBtdXRleCBtdXN0IHJlbGVhc2UgaXQgYmVmb3JlIHJldHVybmluZy4gIG11dGV4CiAgICAgICAgICMgaXMgc2hhcmVkIGJldHdlZW4gdGhlIHRocmVlIGNvbmRpdGlvbnMsIHNvIGFjcXVpcmluZyBhbmQKICAgICAgICAgIyByZWxlYXNpbmcgdGhlIGNvbmRpdGlvbnMgYWxzbyBhY3F1aXJlcyBhbmQgcmVsZWFzZXMgbXV0ZXguCi0gICAgICAgIHNlbGYubXV0ZXggPSBfdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLkxvY2soKQorCiAgICAgICAgICMgTm90aWZ5IG5vdF9lbXB0eSB3aGVuZXZlciBhbiBpdGVtIGlzIGFkZGVkIHRvIHRoZSBxdWV1ZTsgYQogICAgICAgICAjIHRocmVhZCB3YWl0aW5nIHRvIGdldCBpcyBub3RpZmllZCB0aGVuLgotICAgICAgICBzZWxmLm5vdF9lbXB0eSA9IF90aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCisgICAgICAgIHNlbGYubm90X2VtcHR5ID0gdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorCiAgICAgICAgICMgTm90aWZ5IG5vdF9mdWxsIHdoZW5ldmVyIGFuIGl0ZW0gaXMgcmVtb3ZlZCBmcm9tIHRoZSBxdWV1ZTsKICAgICAgICAgIyBhIHRocmVhZCB3YWl0aW5nIHRvIHB1dCBpcyBub3RpZmllZCB0aGVuLgotICAgICAgICBzZWxmLm5vdF9mdWxsID0gX3RocmVhZGluZy5Db25kaXRpb24oc2VsZi5tdXRleCkKKyAgICAgICAgc2VsZi5ub3RfZnVsbCA9IHRocmVhZGluZy5Db25kaXRpb24oc2VsZi5tdXRleCkKKwogICAgICAgICAjIE5vdGlmeSBhbGxfdGFza3NfZG9uZSB3aGVuZXZlciB0aGUgbnVtYmVyIG9mIHVuZmluaXNoZWQgdGFza3MKICAgICAgICAgIyBkcm9wcyB0byB6ZXJvOyB0aHJlYWQgd2FpdGluZyB0byBqb2luKCkgaXMgbm90aWZpZWQgdG8gcmVzdW1lCi0gICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUgPSBfdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lID0gdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQogICAgICAgICBzZWxmLnVuZmluaXNoZWRfdGFza3MgPSAwCiAKICAgICBkZWYgdGFza19kb25lKHNlbGYpOgotICAgICAgICAiIiJJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4KKyAgICAgICAgJycnSW5kaWNhdGUgdGhhdCBhIGZvcm1lcmx5IGVucXVldWVkIHRhc2sgaXMgY29tcGxldGUuCiAKICAgICAgICAgVXNlZCBieSBRdWV1ZSBjb25zdW1lciB0aHJlYWRzLiAgRm9yIGVhY2ggZ2V0KCkgdXNlZCB0byBmZXRjaCBhIHRhc2ssCiAgICAgICAgIGEgc3Vic2VxdWVudCBjYWxsIHRvIHRhc2tfZG9uZSgpIHRlbGxzIHRoZSBxdWV1ZSB0aGF0IHRoZSBwcm9jZXNzaW5nCkBAIC01NSw0MyArNjMsMzUgQEAKIAogICAgICAgICBSYWlzZXMgYSBWYWx1ZUVycm9yIGlmIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gdGhlcmUgd2VyZSBpdGVtcwogICAgICAgICBwbGFjZWQgaW4gdGhlIHF1ZXVlLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLmFsbF90YXNrc19kb25lOgogICAgICAgICAgICAgdW5maW5pc2hlZCA9IHNlbGYudW5maW5pc2hlZF90YXNrcyAtIDEKICAgICAgICAgICAgIGlmIHVuZmluaXNoZWQgPD0gMDoKICAgICAgICAgICAgICAgICBpZiB1bmZpbmlzaGVkIDwgMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndGFza19kb25lKCkgY2FsbGVkIHRvbyBtYW55IHRpbWVzJykKICAgICAgICAgICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLm5vdGlmeV9hbGwoKQogICAgICAgICAgICAgc2VsZi51bmZpbmlzaGVkX3Rhc2tzID0gdW5maW5pc2hlZAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5yZWxlYXNlKCkKIAogICAgIGRlZiBqb2luKHNlbGYpOgotICAgICAgICAiIiJCbG9ja3MgdW50aWwgYWxsIGl0ZW1zIGluIHRoZSBRdWV1ZSBoYXZlIGJlZW4gZ290dGVuIGFuZCBwcm9jZXNzZWQuCisgICAgICAgICcnJ0Jsb2NrcyB1bnRpbCBhbGwgaXRlbXMgaW4gdGhlIFF1ZXVlIGhhdmUgYmVlbiBnb3R0ZW4gYW5kIHByb2Nlc3NlZC4KIAogICAgICAgICBUaGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBnb2VzIHVwIHdoZW5ldmVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlCiAgICAgICAgIHF1ZXVlLiBUaGUgY291bnQgZ29lcyBkb3duIHdoZW5ldmVyIGEgY29uc3VtZXIgdGhyZWFkIGNhbGxzIHRhc2tfZG9uZSgpCiAgICAgICAgIHRvIGluZGljYXRlIHRoZSBpdGVtIHdhcyByZXRyaWV2ZWQgYW5kIGFsbCB3b3JrIG9uIGl0IGlzIGNvbXBsZXRlLgogCiAgICAgICAgIFdoZW4gdGhlIGNvdW50IG9mIHVuZmluaXNoZWQgdGFza3MgZHJvcHMgdG8gemVybywgam9pbigpIHVuYmxvY2tzLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLmFsbF90YXNrc19kb25lOgogICAgICAgICAgICAgd2hpbGUgc2VsZi51bmZpbmlzaGVkX3Rhc2tzOgogICAgICAgICAgICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUud2FpdCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLnJlbGVhc2UoKQogCiAgICAgZGVmIHFzaXplKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGFwcHJveGltYXRlIHNpemUgb2YgdGhlIHF1ZXVlIChub3QgcmVsaWFibGUhKS4iIiIKLSAgICAgICAgc2VsZi5tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgbiA9IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnUmV0dXJuIHRoZSBhcHByb3hpbWF0ZSBzaXplIG9mIHRoZSBxdWV1ZSAobm90IHJlbGlhYmxlISkuJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9xc2l6ZSgpCiAKICAgICBkZWYgZW1wdHkoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eSwgRmFsc2Ugb3RoZXJ3aXNlIChub3QgcmVsaWFibGUhKS4KKyAgICAgICAgJycnUmV0dXJuIFRydWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgogCiAgICAgICAgIFRoaXMgbWV0aG9kIGlzIGxpa2VseSB0byBiZSByZW1vdmVkIGF0IHNvbWUgcG9pbnQuICBVc2UgcXNpemUoKSA9PSAwCiAgICAgICAgIGFzIGEgZGlyZWN0IHN1YnN0aXR1dGUsIGJ1dCBiZSBhd2FyZSB0aGF0IGVpdGhlciBhcHByb2FjaCByaXNrcyBhIHJhY2UKQEAgLTEwMCwyOSArMTAwLDIzIEBACiAKICAgICAgICAgVG8gY3JlYXRlIGNvZGUgdGhhdCBuZWVkcyB0byB3YWl0IGZvciBhbGwgcXVldWVkIHRhc2tzIHRvIGJlCiAgICAgICAgIGNvbXBsZXRlZCwgdGhlIHByZWZlcnJlZCB0ZWNobmlxdWUgaXMgdG8gdXNlIHRoZSBqb2luKCkgbWV0aG9kLgotCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICBuID0gbm90IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiBub3Qgc2VsZi5fcXNpemUoKQogCiAgICAgZGVmIGZ1bGwoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBmdWxsLCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgorICAgICAgICAnJydSZXR1cm4gVHJ1ZSBpZiB0aGUgcXVldWUgaXMgZnVsbCwgRmFsc2Ugb3RoZXJ3aXNlIChub3QgcmVsaWFibGUhKS4KIAogICAgICAgICBUaGlzIG1ldGhvZCBpcyBsaWtlbHkgdG8gYmUgcmVtb3ZlZCBhdCBzb21lIHBvaW50LiAgVXNlIHFzaXplKCkgPj0gbgogICAgICAgICBhcyBhIGRpcmVjdCBzdWJzdGl0dXRlLCBidXQgYmUgYXdhcmUgdGhhdCBlaXRoZXIgYXBwcm9hY2ggcmlza3MgYSByYWNlCiAgICAgICAgIGNvbmRpdGlvbiB3aGVyZSBhIHF1ZXVlIGNhbiBzaHJpbmsgYmVmb3JlIHRoZSByZXN1bHQgb2YgZnVsbCgpIG9yCiAgICAgICAgIHFzaXplKCkgY2FuIGJlIHVzZWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIG4gPSAwIDwgc2VsZi5tYXhzaXplIDw9IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiAwIDwgc2VsZi5tYXhzaXplIDw9IHNlbGYuX3FzaXplKCkKIAogICAgIGRlZiBwdXQoc2VsZiwgaXRlbSwgYmxvY2s9VHJ1ZSwgdGltZW91dD1Ob25lKToKLSAgICAgICAgIiIiUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUuCisgICAgICAgICcnJ1B1dCBhbiBpdGVtIGludG8gdGhlIHF1ZXVlLgogCiAgICAgICAgIElmIG9wdGlvbmFsIGFyZ3MgJ2Jsb2NrJyBpcyB0cnVlIGFuZCAndGltZW91dCcgaXMgTm9uZSAodGhlIGRlZmF1bHQpLAogICAgICAgICBibG9jayBpZiBuZWNlc3NhcnkgdW50aWwgYSBmcmVlIHNsb3QgaXMgYXZhaWxhYmxlLiBJZiAndGltZW91dCcgaXMKQEAgLTEzMSw5ICsxMjUsOCBAQAogICAgICAgICBPdGhlcndpc2UgKCdibG9jaycgaXMgZmFsc2UpLCBwdXQgYW4gaXRlbSBvbiB0aGUgcXVldWUgaWYgYSBmcmVlIHNsb3QKICAgICAgICAgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCBlbHNlIHJhaXNlIHRoZSBGdWxsIGV4Y2VwdGlvbiAoJ3RpbWVvdXQnCiAgICAgICAgIGlzIGlnbm9yZWQgaW4gdGhhdCBjYXNlKS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubm90X2Z1bGwuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5ub3RfZnVsbDoKICAgICAgICAgICAgIGlmIHNlbGYubWF4c2l6ZSA+IDA6CiAgICAgICAgICAgICAgICAgaWYgbm90IGJsb2NrOgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xc2l6ZSgpID49IHNlbGYubWF4c2l6ZToKQEAgLTE0NCwyOCArMTM3LDE4IEBACiAgICAgICAgICAgICAgICAgZWxpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3RpbWVvdXQnIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgICAgICAgICBlbmR0aW1lID0gdGltZSgpICsgdGltZW91dAogICAgICAgICAgICAgICAgICAgICB3aGlsZSBzZWxmLl9xc2l6ZSgpID49IHNlbGYubWF4c2l6ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBlbmR0aW1lIC0gdGltZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMC4wOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEZ1bGwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubm90X2Z1bGwud2FpdChyZW1haW5pbmcpCiAgICAgICAgICAgICBzZWxmLl9wdXQoaXRlbSkKICAgICAgICAgICAgIHNlbGYudW5maW5pc2hlZF90YXNrcyArPSAxCiAgICAgICAgICAgICBzZWxmLm5vdF9lbXB0eS5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5ub3RfZnVsbC5yZWxlYXNlKCkKLQotICAgIGRlZiBwdXRfbm93YWl0KHNlbGYsIGl0ZW0pOgotICAgICAgICAiIiJQdXQgYW4gaXRlbSBpbnRvIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgotCi0gICAgICAgIE9ubHkgZW5xdWV1ZSB0aGUgaXRlbSBpZiBhIGZyZWUgc2xvdCBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUuCi0gICAgICAgIE90aGVyd2lzZSByYWlzZSB0aGUgRnVsbCBleGNlcHRpb24uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5wdXQoaXRlbSwgRmFsc2UpCiAKICAgICBkZWYgZ2V0KHNlbGYsIGJsb2NrPVRydWUsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgICIiIlJlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuCisgICAgICAgICcnJ1JlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuCiAKICAgICAgICAgSWYgb3B0aW9uYWwgYXJncyAnYmxvY2snIGlzIHRydWUgYW5kICd0aW1lb3V0JyBpcyBOb25lICh0aGUgZGVmYXVsdCksCiAgICAgICAgIGJsb2NrIGlmIG5lY2Vzc2FyeSB1bnRpbCBhbiBpdGVtIGlzIGF2YWlsYWJsZS4gSWYgJ3RpbWVvdXQnIGlzCkBAIC0xNzQsOSArMTU3LDggQEAKICAgICAgICAgT3RoZXJ3aXNlICgnYmxvY2snIGlzIGZhbHNlKSwgcmV0dXJuIGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5CiAgICAgICAgIGF2YWlsYWJsZSwgZWxzZSByYWlzZSB0aGUgRW1wdHkgZXhjZXB0aW9uICgndGltZW91dCcgaXMgaWdub3JlZAogICAgICAgICBpbiB0aGF0IGNhc2UpLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5ub3RfZW1wdHkuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5ub3RfZW1wdHk6CiAgICAgICAgICAgICBpZiBub3QgYmxvY2s6CiAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3FzaXplKCk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5CkBAIC0xODYsMjUgKzE2OCwzMSBAQAogICAgICAgICAgICAgZWxpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIndGltZW91dCcgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgICAgIGVuZHRpbWUgPSB0aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3FzaXplKCk6Ci0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSB0aW1lKCkKICAgICAgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nIDw9IDAuMDoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5CiAgICAgICAgICAgICAgICAgICAgIHNlbGYubm90X2VtcHR5LndhaXQocmVtYWluaW5nKQogICAgICAgICAgICAgaXRlbSA9IHNlbGYuX2dldCgpCiAgICAgICAgICAgICBzZWxmLm5vdF9mdWxsLm5vdGlmeSgpCiAgICAgICAgICAgICByZXR1cm4gaXRlbQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5ub3RfZW1wdHkucmVsZWFzZSgpCisKKyAgICBkZWYgcHV0X25vd2FpdChzZWxmLCBpdGVtKToKKyAgICAgICAgJycnUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUgd2l0aG91dCBibG9ja2luZy4KKworICAgICAgICBPbmx5IGVucXVldWUgdGhlIGl0ZW0gaWYgYSBmcmVlIHNsb3QgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLgorICAgICAgICBPdGhlcndpc2UgcmFpc2UgdGhlIEZ1bGwgZXhjZXB0aW9uLgorICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIHNlbGYucHV0KGl0ZW0sIGJsb2NrPUZhbHNlKQogCiAgICAgZGVmIGdldF9ub3dhaXQoc2VsZik6Ci0gICAgICAgICIiIlJlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUgd2l0aG91dCBibG9ja2luZy4KKyAgICAgICAgJycnUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgogCiAgICAgICAgIE9ubHkgZ2V0IGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gT3RoZXJ3aXNlCiAgICAgICAgIHJhaXNlIHRoZSBFbXB0eSBleGNlcHRpb24uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5nZXQoRmFsc2UpCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5nZXQoYmxvY2s9RmFsc2UpCiAKICAgICAjIE92ZXJyaWRlIHRoZXNlIG1ldGhvZHMgdG8gaW1wbGVtZW50IG90aGVyIHF1ZXVlIG9yZ2FuaXphdGlvbnMKICAgICAjIChlLmcuIHN0YWNrIG9yIHByaW9yaXR5IHF1ZXVlKS4KQEAgLTIxNCw3ICsyMDIsNyBAQAogICAgIGRlZiBfaW5pdChzZWxmLCBtYXhzaXplKToKICAgICAgICAgc2VsZi5xdWV1ZSA9IGRlcXVlKCkKIAotICAgIGRlZiBfcXNpemUoc2VsZiwgbGVuPWxlbik6CisgICAgZGVmIF9xc2l6ZShzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLnF1ZXVlKQogCiAgICAgIyBQdXQgYSBuZXcgaXRlbSBpbiB0aGUgcXVldWUKQEAgLTIzNSwxMyArMjIzLDEzIEBACiAgICAgZGVmIF9pbml0KHNlbGYsIG1heHNpemUpOgogICAgICAgICBzZWxmLnF1ZXVlID0gW10KIAotICAgIGRlZiBfcXNpemUoc2VsZiwgbGVuPWxlbik6CisgICAgZGVmIF9xc2l6ZShzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLnF1ZXVlKQogCi0gICAgZGVmIF9wdXQoc2VsZiwgaXRlbSwgaGVhcHB1c2g9aGVhcHEuaGVhcHB1c2gpOgorICAgIGRlZiBfcHV0KHNlbGYsIGl0ZW0pOgogICAgICAgICBoZWFwcHVzaChzZWxmLnF1ZXVlLCBpdGVtKQogCi0gICAgZGVmIF9nZXQoc2VsZiwgaGVhcHBvcD1oZWFwcS5oZWFwcG9wKToKKyAgICBkZWYgX2dldChzZWxmKToKICAgICAgICAgcmV0dXJuIGhlYXBwb3Aoc2VsZi5xdWV1ZSkKIAogCkBAIC0yNTEsNyArMjM5LDcgQEAKICAgICBkZWYgX2luaXQoc2VsZiwgbWF4c2l6ZSk6CiAgICAgICAgIHNlbGYucXVldWUgPSBbXQogCi0gICAgZGVmIF9xc2l6ZShzZWxmLCBsZW49bGVuKToKKyAgICBkZWYgX3FzaXplKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYucXVldWUpCiAKICAgICBkZWYgX3B1dChzZWxmLCBpdGVtKToKZGlmZiAtLWdpdCBhL0xpYi9yYW5kb20ucHkgYi9MaWIvcmFuZG9tLnB5CmluZGV4IDliNjEyMDguLjYzODhmMjkgMTAwNjQ0Ci0tLSBhL0xpYi9yYW5kb20ucHkKKysrIGIvTGliL3JhbmRvbS5weQpAQCAtNDEsNyArNDEsNyBAQAogZnJvbSBtYXRoIGltcG9ydCBsb2cgYXMgX2xvZywgZXhwIGFzIF9leHAsIHBpIGFzIF9waSwgZSBhcyBfZSwgY2VpbCBhcyBfY2VpbAogZnJvbSBtYXRoIGltcG9ydCBzcXJ0IGFzIF9zcXJ0LCBhY29zIGFzIF9hY29zLCBjb3MgYXMgX2Nvcywgc2luIGFzIF9zaW4KIGZyb20gb3MgaW1wb3J0IHVyYW5kb20gYXMgX3VyYW5kb20KLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFNldCBhcyBfU2V0LCBTZXF1ZW5jZSBhcyBfU2VxdWVuY2UKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXQgYXMgX1NldCwgU2VxdWVuY2UgYXMgX1NlcXVlbmNlCiBmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTUxMiBhcyBfc2hhNTEyCiAKIF9fYWxsX18gPSBbIlJhbmRvbSIsInNlZWQiLCJyYW5kb20iLCJ1bmlmb3JtIiwicmFuZGludCIsImNob2ljZSIsInNhbXBsZSIsCmRpZmYgLS1naXQgYS9MaWIvcmUucHkgYi9MaWIvcmUucHkKaW5kZXggODVjNWE1Ny4uOWFlNTE3NCAxMDA2NDQKLS0tIGEvTGliL3JlLnB5CisrKyBiL0xpYi9yZS5weQpAQCAtMjE1LDcgKzIxNSw3IEBACiAKIGRlZiBwdXJnZSgpOgogICAgICJDbGVhciB0aGUgcmVndWxhciBleHByZXNzaW9uIGNhY2hlcyIKLSAgICBfY29tcGlsZV90eXBlZC5jYWNoZV9jbGVhcigpCisgICAgX2NvbXBpbGUuY2FjaGVfY2xlYXIoKQogICAgIF9jb21waWxlX3JlcGwuY2FjaGVfY2xlYXIoKQogCiBkZWYgdGVtcGxhdGUocGF0dGVybiwgZmxhZ3M9MCk6CkBAIC0yMjMsMTIgKzIyMywxNCBAQAogICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFnc3xUKQogCiBfYWxwaGFudW1fc3RyID0gZnJvemVuc2V0KAotICAgICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OTAiKQorICAgICJfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkwIikKIF9hbHBoYW51bV9ieXRlcyA9IGZyb3plbnNldCgKLSAgICBiImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5MCIpCisgICAgYiJfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkwIikKIAogZGVmIGVzY2FwZShwYXR0ZXJuKToKLSAgICAiRXNjYXBlIGFsbCBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgaW4gcGF0dGVybi4iCisgICAgIiIiCisgICAgRXNjYXBlIGFsbCB0aGUgY2hhcmFjdGVycyBpbiBwYXR0ZXJuIGV4Y2VwdCBBU0NJSSBsZXR0ZXJzLCBudW1iZXJzIGFuZCAnXycuCisgICAgIiIiCiAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBzdHIpOgogICAgICAgICBhbHBoYW51bSA9IF9hbHBoYW51bV9zdHIKICAgICAgICAgcyA9IGxpc3QocGF0dGVybikKQEAgLTI1OSwxMSArMjYxLDggQEAKIAogX3BhdHRlcm5fdHlwZSA9IHR5cGUoc3JlX2NvbXBpbGUuY29tcGlsZSgiIiwgMCkpCiAKK0BmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9NTAwLCB0eXBlZD1UcnVlKQogZGVmIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKToKLSAgICByZXR1cm4gX2NvbXBpbGVfdHlwZWQodHlwZShwYXR0ZXJuKSwgcGF0dGVybiwgZmxhZ3MpCi0KLUBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9NTAwKQotZGVmIF9jb21waWxlX3R5cGVkKHRleHRfYnl0ZXNfdHlwZSwgcGF0dGVybiwgZmxhZ3MpOgogICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgcGF0dGVybgogICAgIGlmIGlzaW5zdGFuY2UocGF0dGVybiwgX3BhdHRlcm5fdHlwZSk6CiAgICAgICAgIGlmIGZsYWdzOgpkaWZmIC0tZ2l0IGEvTGliL3J1bnB5LnB5IGIvTGliL3J1bnB5LnB5CmluZGV4IDdjYjQ2NjguLjM5YzBlOWYgMTAwNjQ0Ci0tLSBhL0xpYi9ydW5weS5weQorKysgYi9MaWIvcnVucHkucHkKQEAgLTksMTMgKzksMTIgQEAKICMgV3JpdHRlbiBieSBOaWNrIENvZ2hsYW4gPG5jb2dobGFuIGF0IGdtYWlsLmNvbT4KICMgICAgdG8gaW1wbGVtZW50IFBFUCAzMzggKEV4ZWN1dGluZyBNb2R1bGVzIGFzIFNjcmlwdHMpCiAKKworaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeSAjIGltcG9ydGxpYiBmaXJzdCBzbyB3ZSBjYW4gdGVzdCAjMTUzODYgdmlhIC1tCiBpbXBvcnQgaW1wCi1mcm9tIHBrZ3V0aWwgaW1wb3J0IHJlYWRfY29kZQotdHJ5OgotICAgIGZyb20gaW1wIGltcG9ydCBnZXRfbG9hZGVyCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSBwa2d1dGlsIGltcG9ydCBnZXRfbG9hZGVyCitmcm9tIHBrZ3V0aWwgaW1wb3J0IHJlYWRfY29kZSwgZ2V0X2xvYWRlciwgZ2V0X2ltcG9ydGVyCiAKIF9fYWxsX18gPSBbCiAgICAgInJ1bl9tb2R1bGUiLCAicnVuX3BhdGgiLApAQCAtOTUsNyArOTQsNyBAQAogICAgIGZvciBhdHRyIGluICgiZ2V0X2ZpbGVuYW1lIiwgIl9nZXRfZmlsZW5hbWUiKToKICAgICAgICAgbWV0aCA9IGdldGF0dHIobG9hZGVyLCBhdHRyLCBOb25lKQogICAgICAgICBpZiBtZXRoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIG1ldGgobW9kX25hbWUpCisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKG1ldGgobW9kX25hbWUpKQogICAgIHJldHVybiBOb25lCiAKICMgSGVscGVyIHRvIGdldCB0aGUgbG9hZGVyLCBjb2RlIGFuZCBmaWxlbmFtZSBmb3IgYSBtb2R1bGUKQEAgLTE4MSw0NyArMTgwLDIzIEBACiBkZWYgX2dldF9tYWluX21vZHVsZV9kZXRhaWxzKCk6CiAgICAgIyBIZWxwZXIgdGhhdCBnaXZlcyBhIG5pY2VyIGVycm9yIG1lc3NhZ2Ugd2hlbiBhdHRlbXB0aW5nIHRvCiAgICAgIyBleGVjdXRlIGEgemlwZmlsZSBvciBkaXJlY3RvcnkgYnkgaW52b2tpbmcgX19tYWluX18ucHkKKyAgICAjIEFsc28gbW92ZXMgdGhlIHN0YW5kYXJkIF9fbWFpbl9fIG91dCBvZiB0aGUgd2F5IHNvIHRoYXQgdGhlCisgICAgIyBwcmVleGlzdGluZyBfX2xvYWRlcl9fIGVudHJ5IGRvZXNuJ3QgY2F1c2UgaXNzdWVzCiAgICAgbWFpbl9uYW1lID0gIl9fbWFpbl9fIgorICAgIHNhdmVkX21haW4gPSBzeXMubW9kdWxlc1ttYWluX25hbWVdCisgICAgZGVsIHN5cy5tb2R1bGVzW21haW5fbmFtZV0KICAgICB0cnk6CiAgICAgICAgIHJldHVybiBfZ2V0X21vZHVsZV9kZXRhaWxzKG1haW5fbmFtZSkKICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgogICAgICAgICBpZiBtYWluX25hbWUgaW4gc3RyKGV4Yyk6CiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiY2FuJ3QgZmluZCAlciBtb2R1bGUgaW4gJXIiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX25hbWUsIHN5cy5wYXRoWzBdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX25hbWUsIHN5cy5wYXRoWzBdKSkgZnJvbSBleGMKICAgICAgICAgcmFpc2UKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMubW9kdWxlc1ttYWluX25hbWVdID0gc2F2ZWRfbWFpbgogCiAKLSMgWFhYIChuY29naGxhbik6IFBlcmhhcHMgZXhwb3NlIHRoZSBDIEFQSSBmdW5jdGlvbgotIyBhcyBpbXAuZ2V0X2ltcG9ydGVyIGluc3RlYWQgb2YgcmVpbXBsZW1lbnRpbmcgaXQgaW4gUHl0aG9uPwotZGVmIF9nZXRfaW1wb3J0ZXIocGF0aF9uYW1lKToKLSAgICAiIiJQeXRob24gdmVyc2lvbiBvZiBQeUltcG9ydF9HZXRJbXBvcnRlciBDIEFQSSBmdW5jdGlvbiIiIgotICAgIGNhY2hlID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydGVyID0gY2FjaGVbcGF0aF9uYW1lXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgIyBOb3QgeWV0IGNhY2hlZC4gRmxhZyBhcyB1c2luZyB0aGUKLSAgICAgICAgIyBzdGFuZGFyZCBtYWNoaW5lcnkgdW50aWwgd2UgZmluaXNoCi0gICAgICAgICMgY2hlY2tpbmcgdGhlIGhvb2tzCi0gICAgICAgIGNhY2hlW3BhdGhfbmFtZV0gPSBOb25lCi0gICAgICAgIGZvciBob29rIGluIHN5cy5wYXRoX2hvb2tzOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGltcG9ydGVyID0gaG9vayhwYXRoX25hbWUpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRoZSBmb2xsb3dpbmcgY2hlY2sgbG9va3MgYSBiaXQgb2RkLiBUaGUgdHJpY2sgaXMgdGhhdAotICAgICAgICAgICAgIyBOdWxsSW1wb3J0ZXIgdGhyb3dzIEltcG9ydEVycm9yIGlmIHRoZSBzdXBwbGllZCBwYXRoIGlzIGEKLSAgICAgICAgICAgICMgKnZhbGlkKiBkaXJlY3RvcnkgZW50cnkgKGFuZCBoZW5jZSBhYmxlIHRvIGJlIGhhbmRsZWQKLSAgICAgICAgICAgICMgYnkgdGhlIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0ZXIgPSBpbXAuTnVsbEltcG9ydGVyKHBhdGhfbmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBjYWNoZVtwYXRoX25hbWVdID0gaW1wb3J0ZXIKLSAgICByZXR1cm4gaW1wb3J0ZXIKLQotZGVmIF9nZXRfY29kZV9mcm9tX2ZpbGUoZm5hbWUpOgorZGVmIF9nZXRfY29kZV9mcm9tX2ZpbGUocnVuX25hbWUsIGZuYW1lKToKICAgICAjIENoZWNrIGZvciBhIGNvbXBpbGVkIGZpbGUgZmlyc3QKICAgICB3aXRoIG9wZW4oZm5hbWUsICJyYiIpIGFzIGY6CiAgICAgICAgIGNvZGUgPSByZWFkX2NvZGUoZikKQEAgLTIyOSw3ICsyMDQsMTAgQEAKICAgICAgICAgIyBUaGF0IGRpZG4ndCB3b3JrLCBzbyB0cnkgaXQgYXMgbm9ybWFsIHNvdXJjZSBjb2RlCiAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGYucmVhZCgpLCBmbmFtZSwgJ2V4ZWMnKQotICAgIHJldHVybiBjb2RlCisgICAgICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIocnVuX25hbWUsIGZuYW1lKQorICAgIGVsc2U6CisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIocnVuX25hbWUsIGZuYW1lKQorICAgIHJldHVybiBjb2RlLCBsb2FkZXIKIAogZGVmIHJ1bl9wYXRoKHBhdGhfbmFtZSwgaW5pdF9nbG9iYWxzPU5vbmUsIHJ1bl9uYW1lPU5vbmUpOgogICAgICIiIkV4ZWN1dGUgY29kZSBsb2NhdGVkIGF0IHRoZSBzcGVjaWZpZWQgZmlsZXN5c3RlbSBsb2NhdGlvbgpAQCAtMjQ0LDEzICsyMjIsMTMgQEAKICAgICBpZiBydW5fbmFtZSBpcyBOb25lOgogICAgICAgICBydW5fbmFtZSA9ICI8cnVuX3BhdGg+IgogICAgIHBrZ19uYW1lID0gcnVuX25hbWUucnBhcnRpdGlvbigiLiIpWzBdCi0gICAgaW1wb3J0ZXIgPSBfZ2V0X2ltcG9ydGVyKHBhdGhfbmFtZSkKLSAgICBpZiBpc2luc3RhbmNlKGltcG9ydGVyLCBpbXAuTnVsbEltcG9ydGVyKToKKyAgICBpbXBvcnRlciA9IGdldF9pbXBvcnRlcihwYXRoX25hbWUpCisgICAgaWYgaXNpbnN0YW5jZShpbXBvcnRlciwgKHR5cGUoTm9uZSksIGltcC5OdWxsSW1wb3J0ZXIpKToKICAgICAgICAgIyBOb3QgYSB2YWxpZCBzeXMucGF0aCBlbnRyeSwgc28gcnVuIHRoZSBjb2RlIGRpcmVjdGx5CiAgICAgICAgICMgZXhlY2ZpbGUoKSBkb2Vzbid0IGhlbHAgYXMgd2Ugd2FudCB0byBhbGxvdyBjb21waWxlZCBmaWxlcwotICAgICAgICBjb2RlID0gX2dldF9jb2RlX2Zyb21fZmlsZShwYXRoX25hbWUpCisgICAgICAgIGNvZGUsIG1vZF9sb2FkZXIgPSBfZ2V0X2NvZGVfZnJvbV9maWxlKHJ1bl9uYW1lLCBwYXRoX25hbWUpCiAgICAgICAgIHJldHVybiBfcnVuX21vZHVsZV9jb2RlKGNvZGUsIGluaXRfZ2xvYmFscywgcnVuX25hbWUsIHBhdGhfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnX25hbWU9cGtnX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZF9sb2FkZXIsIHBrZ19uYW1lKQogICAgIGVsc2U6CiAgICAgICAgICMgSW1wb3J0ZXIgaXMgZGVmaW5lZCBmb3IgcGF0aCwgc28gYWRkIGl0IHRvCiAgICAgICAgICMgdGhlIHN0YXJ0IG9mIHN5cy5wYXRoCkBAIC0yNjIsMTMgKzI0MCw3IEBACiAgICAgICAgICAgICAjIGhhdmUgbm8gY2hvaWNlIGFuZCB3ZSBoYXZlIHRvIHJlbW92ZSBpdCBldmVuIHdoaWxlIHdlIHJlYWQgdGhlCiAgICAgICAgICAgICAjIGNvZGUuIElmIHdlIGRvbid0IGRvIHRoaXMsIGEgX19sb2FkZXJfXyBhdHRyaWJ1dGUgaW4gdGhlCiAgICAgICAgICAgICAjIGV4aXN0aW5nIF9fbWFpbl9fIG1vZHVsZSBtYXkgcHJldmVudCBsb2NhdGlvbiBvZiB0aGUgbmV3IG1vZHVsZS4KLSAgICAgICAgICAgIG1haW5fbmFtZSA9ICJfX21haW5fXyIKLSAgICAgICAgICAgIHNhdmVkX21haW4gPSBzeXMubW9kdWxlc1ttYWluX25hbWVdCi0gICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbWFpbl9uYW1lXQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZF9uYW1lLCBsb2FkZXIsIGNvZGUsIGZuYW1lID0gX2dldF9tYWluX21vZHVsZV9kZXRhaWxzKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbbWFpbl9uYW1lXSA9IHNhdmVkX21haW4KKyAgICAgICAgICAgIG1vZF9uYW1lLCBsb2FkZXIsIGNvZGUsIGZuYW1lID0gX2dldF9tYWluX21vZHVsZV9kZXRhaWxzKCkKICAgICAgICAgICAgIHdpdGggX1RlbXBNb2R1bGUocnVuX25hbWUpIGFzIHRlbXBfbW9kdWxlLCBcCiAgICAgICAgICAgICAgICAgIF9Nb2RpZmllZEFyZ3YwKHBhdGhfbmFtZSk6CiAgICAgICAgICAgICAgICAgbW9kX2dsb2JhbHMgPSB0ZW1wX21vZHVsZS5tb2R1bGUuX19kaWN0X18KZGlmZiAtLWdpdCBhL0xpYi9zY2hlZC5weSBiL0xpYi9zY2hlZC5weQppbmRleCBhMTE5ODkyLi41NTUxZjcxIDEwMDY0NAotLS0gYS9MaWIvc2NoZWQucHkKKysrIGIvTGliL3NjaGVkLnB5CkBAIC0yOCwxMiArMjgsMjEgQEAKICMgWFhYIGluc3RlYWQgb2YgaGF2aW5nIHRvIGRlZmluZSBhIG1vZHVsZSBvciBjbGFzcyBqdXN0IHRvIGhvbGQKICMgWFhYIHRoZSBnbG9iYWwgc3RhdGUgb2YgeW91ciBwYXJ0aWN1bGFyIHRpbWUgYW5kIGRlbGF5IGZ1bmN0aW9ucy4KIAoraW1wb3J0IHRpbWUKIGltcG9ydCBoZWFwcQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIHRocmVhZGluZwordHJ5OgorICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKIF9fYWxsX18gPSBbInNjaGVkdWxlciJdCiAKLWNsYXNzIEV2ZW50KG5hbWVkdHVwbGUoJ0V2ZW50JywgJ3RpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50JykpOgorY2xhc3MgRXZlbnQobmFtZWR0dXBsZSgnRXZlbnQnLCAndGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncycpKToKICAgICBkZWYgX19lcV9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPT0gKG8udGltZSwgby5wcmlvcml0eSkKICAgICBkZWYgX19uZV9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgIT0gKG8udGltZSwgby5wcmlvcml0eSkKICAgICBkZWYgX19sdF9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPCAgKG8udGltZSwgby5wcmlvcml0eSkKQEAgLTQyLDMyICs1MSwzNiBAQAogICAgIGRlZiBfX2dlX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA+PSAoby50aW1lLCBvLnByaW9yaXR5KQogCiBjbGFzcyBzY2hlZHVsZXI6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbWVmdW5jLCBkZWxheWZ1bmMpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbWVmdW5jPV90aW1lLCBkZWxheWZ1bmM9dGltZS5zbGVlcCk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBuZXcgaW5zdGFuY2UsIHBhc3NpbmcgdGhlIHRpbWUgYW5kIGRlbGF5CiAgICAgICAgIGZ1bmN0aW9ucyIiIgogICAgICAgICBzZWxmLl9xdWV1ZSA9IFtdCisgICAgICAgIHNlbGYuX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQogICAgICAgICBzZWxmLnRpbWVmdW5jID0gdGltZWZ1bmMKICAgICAgICAgc2VsZi5kZWxheWZ1bmMgPSBkZWxheWZ1bmMKIAotICAgIGRlZiBlbnRlcmFicyhzZWxmLCB0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCk6CisgICAgZGVmIGVudGVyYWJzKHNlbGYsIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50PVtdLCBrd2FyZ3M9e30pOgogICAgICAgICAiIiJFbnRlciBhIG5ldyBldmVudCBpbiB0aGUgcXVldWUgYXQgYW4gYWJzb2x1dGUgdGltZS4KIAogICAgICAgICBSZXR1cm5zIGFuIElEIGZvciB0aGUgZXZlbnQgd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIGl0LAogICAgICAgICBpZiBuZWNlc3NhcnkuCiAKICAgICAgICAgIiIiCi0gICAgICAgIGV2ZW50ID0gRXZlbnQodGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpCi0gICAgICAgIGhlYXBxLmhlYXBwdXNoKHNlbGYuX3F1ZXVlLCBldmVudCkKLSAgICAgICAgcmV0dXJuIGV2ZW50ICMgVGhlIElECisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQodGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncykKKyAgICAgICAgICAgIGhlYXBxLmhlYXBwdXNoKHNlbGYuX3F1ZXVlLCBldmVudCkKKyAgICAgICAgICAgIHJldHVybiBldmVudCAjIFRoZSBJRAogCi0gICAgZGVmIGVudGVyKHNlbGYsIGRlbGF5LCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCk6CisgICAgZGVmIGVudGVyKHNlbGYsIGRlbGF5LCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudD1bXSwga3dhcmdzPXt9KToKICAgICAgICAgIiIiQSB2YXJpYW50IHRoYXQgc3BlY2lmaWVzIHRoZSB0aW1lIGFzIGEgcmVsYXRpdmUgdGltZS4KIAogICAgICAgICBUaGlzIGlzIGFjdHVhbGx5IHRoZSBtb3JlIGNvbW1vbmx5IHVzZWQgaW50ZXJmYWNlLgogCiAgICAgICAgICIiIgotICAgICAgICB0aW1lID0gc2VsZi50aW1lZnVuYygpICsgZGVsYXkKLSAgICAgICAgcmV0dXJuIHNlbGYuZW50ZXJhYnModGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHRpbWUgPSBzZWxmLnRpbWVmdW5jKCkgKyBkZWxheQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZW50ZXJhYnModGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncykKIAogICAgIGRlZiBjYW5jZWwoc2VsZiwgZXZlbnQpOgogICAgICAgICAiIiJSZW1vdmUgYW4gZXZlbnQgZnJvbSB0aGUgcXVldWUuCkBAIC03NiwxNSArODksMjAgQEAKICAgICAgICAgSWYgdGhlIGV2ZW50IGlzIG5vdCBpbiB0aGUgcXVldWUsIHRoaXMgcmFpc2VzIFZhbHVlRXJyb3IuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3F1ZXVlLnJlbW92ZShldmVudCkKLSAgICAgICAgaGVhcHEuaGVhcGlmeShzZWxmLl9xdWV1ZSkKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fcXVldWUucmVtb3ZlKGV2ZW50KQorICAgICAgICAgICAgaGVhcHEuaGVhcGlmeShzZWxmLl9xdWV1ZSkKIAogICAgIGRlZiBlbXB0eShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgd2hldGhlciB0aGUgcXVldWUgaXMgZW1wdHkuIiIiCi0gICAgICAgIHJldHVybiBub3Qgc2VsZi5fcXVldWUKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9xdWV1ZQogCi0gICAgZGVmIHJ1bihzZWxmKToKKyAgICBkZWYgcnVuKHNlbGYsIGJsb2NraW5nPVRydWUpOgogICAgICAgICAiIiJFeGVjdXRlIGV2ZW50cyB1bnRpbCB0aGUgcXVldWUgaXMgZW1wdHkuCisgICAgICAgIElmIGJsb2NraW5nIGlzIEZhbHNlIGV4ZWN1dGVzIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0bworICAgICAgICBleHBpcmUgc29vbmVzdCAoaWYgYW55KSBhbmQgdGhlbiByZXR1cm4gdGhlIGRlYWRsaW5lIG9mIHRoZQorICAgICAgICBuZXh0IHNjaGVkdWxlZCBjYWxsIGluIHRoZSBzY2hlZHVsZXIuCiAKICAgICAgICAgV2hlbiB0aGVyZSBpcyBhIHBvc2l0aXZlIGRlbGF5IHVudGlsIHRoZSBmaXJzdCBldmVudCwgdGhlCiAgICAgICAgIGRlbGF5IGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdGhlIGV2ZW50IGlzIGxlZnQgaW4gdGhlIHF1ZXVlOwpAQCAtMTA2LDI0ICsxMjQsMjcgQEAKICAgICAgICAgIiIiCiAgICAgICAgICMgbG9jYWxpemUgdmFyaWFibGUgYWNjZXNzIHRvIG1pbmltaXplIG92ZXJoZWFkCiAgICAgICAgICMgYW5kIHRvIGltcHJvdmUgdGhyZWFkIHNhZmV0eQotICAgICAgICBxID0gc2VsZi5fcXVldWUKLSAgICAgICAgZGVsYXlmdW5jID0gc2VsZi5kZWxheWZ1bmMKLSAgICAgICAgdGltZWZ1bmMgPSBzZWxmLnRpbWVmdW5jCi0gICAgICAgIHBvcCA9IGhlYXBxLmhlYXBwb3AKLSAgICAgICAgd2hpbGUgcToKLSAgICAgICAgICAgIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50ID0gY2hlY2tlZF9ldmVudCA9IHFbMF0KLSAgICAgICAgICAgIG5vdyA9IHRpbWVmdW5jKCkKLSAgICAgICAgICAgIGlmIG5vdyA8IHRpbWU6Ci0gICAgICAgICAgICAgICAgZGVsYXlmdW5jKHRpbWUgLSBub3cpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGV2ZW50ID0gcG9wKHEpCi0gICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgZXZlbnQgd2FzIG5vdCByZW1vdmVkIG9yIGFsdGVyZWQKLSAgICAgICAgICAgICAgICAjIGJ5IGFub3RoZXIgdGhyZWFkIGFmdGVyIHdlIGxhc3QgbG9va2VkIGF0IHFbMF0uCi0gICAgICAgICAgICAgICAgaWYgZXZlbnQgaXMgY2hlY2tlZF9ldmVudDoKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uKCphcmd1bWVudCkKLSAgICAgICAgICAgICAgICAgICAgZGVsYXlmdW5jKDApICAgIyBMZXQgb3RoZXIgdGhyZWFkcyBydW4KKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgcSA9IHNlbGYuX3F1ZXVlCisgICAgICAgICAgICBkZWxheWZ1bmMgPSBzZWxmLmRlbGF5ZnVuYworICAgICAgICAgICAgdGltZWZ1bmMgPSBzZWxmLnRpbWVmdW5jCisgICAgICAgICAgICBwb3AgPSBoZWFwcS5oZWFwcG9wCisgICAgICAgICAgICB3aGlsZSBxOgorICAgICAgICAgICAgICAgIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MgPSBjaGVja2VkX2V2ZW50ID0gcVswXQorICAgICAgICAgICAgICAgIG5vdyA9IHRpbWVmdW5jKCkKKyAgICAgICAgICAgICAgICBpZiBub3cgPCB0aW1lOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2tpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGltZSAtIG5vdworICAgICAgICAgICAgICAgICAgICBkZWxheWZ1bmModGltZSAtIG5vdykKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBoZWFwcS5oZWFwcHVzaChxLCBldmVudCkKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSBwb3AocSkKKyAgICAgICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgZXZlbnQgd2FzIG5vdCByZW1vdmVkIG9yIGFsdGVyZWQKKyAgICAgICAgICAgICAgICAgICAgIyBieSBhbm90aGVyIHRocmVhZCBhZnRlciB3ZSBsYXN0IGxvb2tlZCBhdCBxWzBdLgorICAgICAgICAgICAgICAgICAgICBpZiBldmVudCBpcyBjaGVja2VkX2V2ZW50OgorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uKCphcmd1bWVudCwgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxheWZ1bmMoMCkgICAjIExldCBvdGhlciB0aHJlYWRzIHJ1bgorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaGVhcHEuaGVhcHB1c2gocSwgZXZlbnQpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgcXVldWUoc2VsZik6CkBAIC0xMzYsNSArMTU3LDYgQEAKICAgICAgICAgIyBVc2UgaGVhcHEgdG8gc29ydCB0aGUgcXVldWUgcmF0aGVyIHRoYW4gdXNpbmcgJ3NvcnRlZChzZWxmLl9xdWV1ZSknLgogICAgICAgICAjIFdpdGggaGVhcHEsIHR3byBldmVudHMgc2NoZWR1bGVkIGF0IHRoZSBzYW1lIHRpbWUgd2lsbCBzaG93IGluCiAgICAgICAgICMgdGhlIGFjdHVhbCBvcmRlciB0aGV5IHdvdWxkIGJlIHJldHJpZXZlZC4KLSAgICAgICAgZXZlbnRzID0gc2VsZi5fcXVldWVbOl0KLSAgICAgICAgcmV0dXJuIG1hcChoZWFwcS5oZWFwcG9wLCBbZXZlbnRzXSpsZW4oZXZlbnRzKSkKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgZXZlbnRzID0gc2VsZi5fcXVldWVbOl0KKyAgICAgICAgICAgIHJldHVybiBtYXAoaGVhcHEuaGVhcHBvcCwgW2V2ZW50c10qbGVuKGV2ZW50cykpCmRpZmYgLS1naXQgYS9MaWIvc2hsZXgucHkgYi9MaWIvc2hsZXgucHkKaW5kZXggM2VkZDNkYi4uNjlmM2I0NSAxMDA2NDQKLS0tIGEvTGliL3NobGV4LnB5CisrKyBiL0xpYi9zaGxleC5weQpAQCAtNiwxMyArNiwxNCBAQAogIyBQb3NpeCBjb21wbGlhbmNlLCBzcGxpdCgpLCBzdHJpbmcgYXJndW1lbnRzLCBhbmQKICMgaXRlcmF0b3IgaW50ZXJmYWNlIGJ5IEd1c3Rhdm8gTmllbWV5ZXIsIEFwcmlsIDIwMDMuCiAKLWltcG9ydCBvcy5wYXRoCitpbXBvcnQgb3MKK2ltcG9ydCByZQogaW1wb3J0IHN5cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAotX19hbGxfXyA9IFsic2hsZXgiLCAic3BsaXQiXQorX19hbGxfXyA9IFsic2hsZXgiLCAic3BsaXQiLCAicXVvdGUiXQogCiBjbGFzcyBzaGxleDoKICAgICAiQSBsZXhpY2FsIGFuYWx5emVyIGNsYXNzIGZvciBzaW1wbGUgc2hlbGwtbGlrZSBzeW50YXhlcy4iCkBAIC0yNzQsNiArMjc1LDIxIEBACiAgICAgICAgIGxleC5jb21tZW50ZXJzID0gJycKICAgICByZXR1cm4gbGlzdChsZXgpCiAKKworX2ZpbmRfdW5zYWZlID0gcmUuY29tcGlsZShyJ1teXHdAJSs9OiwuLy1dJywgcmUuQVNDSUkpLnNlYXJjaAorCitkZWYgcXVvdGUocyk6CisgICAgIiIiUmV0dXJuIGEgc2hlbGwtZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgKnMqLiIiIgorICAgIGlmIG5vdCBzOgorICAgICAgICByZXR1cm4gIicnIgorICAgIGlmIF9maW5kX3Vuc2FmZShzKSBpcyBOb25lOgorICAgICAgICByZXR1cm4gcworCisgICAgIyB1c2Ugc2luZ2xlIHF1b3RlcywgYW5kIHB1dCBzaW5nbGUgcXVvdGVzIGludG8gZG91YmxlIHF1b3RlcworICAgICMgdGhlIHN0cmluZyAkJ2IgaXMgdGhlbiBxdW90ZWQgYXMgJyQnIiciJ2InCisgICAgcmV0dXJuICInIiArIHMucmVwbGFjZSgiJyIsICInXCInXCInIikgKyAiJyIKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKICAgICAgICAgbGV4ZXIgPSBzaGxleCgpCmRpZmYgLS1naXQgYS9MaWIvc2h1dGlsLnB5IGIvTGliL3NodXRpbC5weQppbmRleCBlZjI5YWUyLi41ZGMzMTFlIDEwMDY0NAotLS0gYS9MaWIvc2h1dGlsLnB5CisrKyBiL0xpYi9zaHV0aWwucHkKQEAgLTE1LDYgKzE1LDcgQEAKIAogdHJ5OgogICAgIGltcG9ydCBiejIKKyAgICBkZWwgYnoyCiAgICAgX0JaMl9TVVBQT1JURUQgPSBUcnVlCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgX0JaMl9TVVBQT1JURUQgPSBGYWxzZQpAQCAtMzQsNyArMzUsOSBAQAogICAgICAgICAgICAiRXhlY0Vycm9yIiwgIm1ha2VfYXJjaGl2ZSIsICJnZXRfYXJjaGl2ZV9mb3JtYXRzIiwKICAgICAgICAgICAgInJlZ2lzdGVyX2FyY2hpdmVfZm9ybWF0IiwgInVucmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQiLAogICAgICAgICAgICAiZ2V0X3VucGFja19mb3JtYXRzIiwgInJlZ2lzdGVyX3VucGFja19mb3JtYXQiLAotICAgICAgICAgICAidW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0IiwgInVucGFja19hcmNoaXZlIiwgImlnbm9yZV9wYXR0ZXJucyJdCisgICAgICAgICAgICJ1bnJlZ2lzdGVyX3VucGFja19mb3JtYXQiLCAidW5wYWNrX2FyY2hpdmUiLAorICAgICAgICAgICAiaWdub3JlX3BhdHRlcm5zIiwgImNob3duIiwgIndoaWNoIl0KKyAgICAgICAgICAgIyBkaXNrX3VzYWdlIGlzIGFkZGVkIGxhdGVyLCBpZiBhdmFpbGFibGUgb24gdGhlIHBsYXRmb3JtCiAKIGNsYXNzIEVycm9yKEVudmlyb25tZW50RXJyb3IpOgogICAgIHBhc3MKQEAgLTc5LDggKzgyLDEzIEBACiAgICAgcmV0dXJuIChvcy5wYXRoLm5vcm1jYXNlKG9zLnBhdGguYWJzcGF0aChzcmMpKSA9PQogICAgICAgICAgICAgb3MucGF0aC5ub3JtY2FzZShvcy5wYXRoLmFic3BhdGgoZHN0KSkpCiAKLWRlZiBjb3B5ZmlsZShzcmMsIGRzdCk6Ci0gICAgIiIiQ29weSBkYXRhIGZyb20gc3JjIHRvIGRzdCIiIgorZGVmIGNvcHlmaWxlKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBkYXRhIGZyb20gc3JjIHRvIGRzdC4KKworICAgIElmIGZvbGxvd19zeW1saW5rcyBpcyBub3Qgc2V0IGFuZCBzcmMgaXMgYSBzeW1ib2xpYyBsaW5rLCBhIG5ldworICAgIHN5bWxpbmsgd2lsbCBiZSBjcmVhdGVkIGluc3RlYWQgb2YgY29weWluZyB0aGUgZmlsZSBpdCBwb2ludHMgdG8uCisKKyAgICAiIiIKICAgICBpZiBfc2FtZWZpbGUoc3JjLCBkc3QpOgogICAgICAgICByYWlzZSBFcnJvcigiYCVzYCBhbmQgYCVzYCBhcmUgdGhlIHNhbWUgZmlsZSIgJSAoc3JjLCBkc3QpKQogCkBAIC05NSw1NiArMTAzLDE0MCBAQAogICAgICAgICAgICAgaWYgc3RhdC5TX0lTRklGTyhzdC5zdF9tb2RlKToKICAgICAgICAgICAgICAgICByYWlzZSBTcGVjaWFsRmlsZUVycm9yKCJgJXNgIGlzIGEgbmFtZWQgcGlwZSIgJSBmbikKIAotICAgIHdpdGggb3BlbihzcmMsICdyYicpIGFzIGZzcmM6Ci0gICAgICAgIHdpdGggb3Blbihkc3QsICd3YicpIGFzIGZkc3Q6Ci0gICAgICAgICAgICBjb3B5ZmlsZW9iaihmc3JjLCBmZHN0KQorICAgIGlmIG5vdCBmb2xsb3dfc3ltbGlua3MgYW5kIG9zLnBhdGguaXNsaW5rKHNyYyk6CisgICAgICAgIG9zLnN5bWxpbmsob3MucmVhZGxpbmsoc3JjKSwgZHN0KQorICAgIGVsc2U6CisgICAgICAgIHdpdGggb3BlbihzcmMsICdyYicpIGFzIGZzcmM6CisgICAgICAgICAgICB3aXRoIG9wZW4oZHN0LCAnd2InKSBhcyBmZHN0OgorICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKGZzcmMsIGZkc3QpCisgICAgcmV0dXJuIGRzdAogCi1kZWYgY29weW1vZGUoc3JjLCBkc3QpOgotICAgICIiIkNvcHkgbW9kZSBiaXRzIGZyb20gc3JjIHRvIGRzdCIiIgotICAgIGlmIGhhc2F0dHIob3MsICdjaG1vZCcpOgotICAgICAgICBzdCA9IG9zLnN0YXQoc3JjKQotICAgICAgICBtb2RlID0gc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpCi0gICAgICAgIG9zLmNobW9kKGRzdCwgbW9kZSkKK2RlZiBjb3B5bW9kZShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICIiIkNvcHkgbW9kZSBiaXRzIGZyb20gc3JjIHRvIGRzdC4KIAotZGVmIGNvcHlzdGF0KHNyYywgZHN0KToKLSAgICAiIiJDb3B5IGFsbCBzdGF0IGluZm8gKG1vZGUgYml0cywgYXRpbWUsIG10aW1lLCBmbGFncykgZnJvbSBzcmMgdG8gZHN0IiIiCi0gICAgc3QgPSBvcy5zdGF0KHNyYykKKyAgICBJZiBmb2xsb3dfc3ltbGlua3MgaXMgbm90IHNldCwgc3ltbGlua3MgYXJlbid0IGZvbGxvd2VkIGlmIGFuZCBvbmx5CisgICAgaWYgYm90aCBgc3JjYCBhbmQgYGRzdGAgYXJlIHN5bWxpbmtzLiAgSWYgYGxjaG1vZGAgaXNuJ3QgYXZhaWxhYmxlCisgICAgKGUuZy4gTGludXgpIHRoaXMgbWV0aG9kIGRvZXMgbm90aGluZy4KKworICAgICIiIgorICAgIGlmIG5vdCBmb2xsb3dfc3ltbGlua3MgYW5kIG9zLnBhdGguaXNsaW5rKHNyYykgYW5kIG9zLnBhdGguaXNsaW5rKGRzdCk6CisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHN0YXRfZnVuYywgY2htb2RfZnVuYyA9IG9zLmxzdGF0LCBvcy5sY2htb2QKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybgorICAgIGVsaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6CisgICAgICAgIHN0YXRfZnVuYywgY2htb2RfZnVuYyA9IG9zLnN0YXQsIG9zLmNobW9kCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuCisKKyAgICBzdCA9IHN0YXRfZnVuYyhzcmMpCisgICAgY2htb2RfZnVuYyhkc3QsIHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSkKKworaWYgaGFzYXR0cihvcywgJ2xpc3R4YXR0cicpOgorICAgIGRlZiBfY29weXhhdHRyKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgICAgICIiIkNvcHkgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGVzIGZyb20gYHNyY2AgdG8gYGRzdGAuCisKKyAgICAgICAgT3ZlcndyaXRlIGV4aXN0aW5nIGF0dHJpYnV0ZXMuCisKKyAgICAgICAgSWYgYGZvbGxvd19zeW1saW5rc2AgaXMgZmFsc2UsIHN5bWxpbmtzIHdvbid0IGJlIGZvbGxvd2VkLgorCisgICAgICAgICIiIgorCisgICAgICAgIGZvciBuYW1lIGluIG9zLmxpc3R4YXR0cihzcmMsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHZhbHVlID0gb3MuZ2V0eGF0dHIoc3JjLCBuYW1lLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGRzdCwgbmFtZSwgdmFsdWUsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gbm90IGluIChlcnJuby5FUEVSTSwgZXJybm8uRU5PVFNVUCwgZXJybm8uRU5PREFUQSk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCitlbHNlOgorICAgIGRlZiBfY29weXhhdHRyKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHBhc3MKKworZGVmIGNvcHlzdGF0KHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBhbGwgc3RhdCBpbmZvIChtb2RlIGJpdHMsIGF0aW1lLCBtdGltZSwgZmxhZ3MpIGZyb20gc3JjIHRvIGRzdC4KKworICAgIElmIHRoZSBvcHRpb25hbCBmbGFnIGBmb2xsb3dfc3ltbGlua3NgIGlzIG5vdCBzZXQsIHN5bWxpbmtzIGFyZW4ndCBmb2xsb3dlZCBpZiBhbmQKKyAgICBvbmx5IGlmIGJvdGggYHNyY2AgYW5kIGBkc3RgIGFyZSBzeW1saW5rcy4KKworICAgICIiIgorICAgIGRlZiBfbm9wKCphcmdzLCBucz1Ob25lLCBmb2xsb3dfc3ltbGlua3M9Tm9uZSk6CisgICAgICAgIHBhc3MKKworICAgICMgZm9sbG93IHN5bWxpbmtzIChha2EgZG9uJ3Qgbm90IGZvbGxvdyBzeW1saW5rcykKKyAgICBmb2xsb3cgPSBmb2xsb3dfc3ltbGlua3Mgb3Igbm90IChvcy5wYXRoLmlzbGluayhzcmMpIGFuZCBvcy5wYXRoLmlzbGluayhkc3QpKQorICAgIGlmIGZvbGxvdzoKKyAgICAgICAgIyB1c2UgdGhlIHJlYWwgZnVuY3Rpb24gaWYgaXQgZXhpc3RzCisgICAgICAgIGRlZiBsb29rdXAobmFtZSk6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihvcywgbmFtZSwgX25vcCkKKyAgICBlbHNlOgorICAgICAgICAjIHVzZSB0aGUgcmVhbCBmdW5jdGlvbiBvbmx5IGlmIGl0IGV4aXN0cworICAgICAgICAjICphbmQqIGl0IHN1cHBvcnRzIGZvbGxvd19zeW1saW5rcworICAgICAgICBkZWYgbG9va3VwKG5hbWUpOgorICAgICAgICAgICAgZm4gPSBnZXRhdHRyKG9zLCBuYW1lLCBfbm9wKQorICAgICAgICAgICAgaWYgZm4gaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzOgorICAgICAgICAgICAgICAgIHJldHVybiBmbgorICAgICAgICAgICAgcmV0dXJuIF9ub3AKKworICAgIHN0ID0gbG9va3VwKCJzdGF0Iikoc3JjLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQogICAgIG1vZGUgPSBzdGF0LlNfSU1PREUoc3Quc3RfbW9kZSkKLSAgICBpZiBoYXNhdHRyKG9zLCAndXRpbWUnKToKLSAgICAgICAgb3MudXRpbWUoZHN0LCAoc3Quc3RfYXRpbWUsIHN0LnN0X210aW1lKSkKLSAgICBpZiBoYXNhdHRyKG9zLCAnY2htb2QnKToKLSAgICAgICAgb3MuY2htb2QoZHN0LCBtb2RlKQotICAgIGlmIGhhc2F0dHIob3MsICdjaGZsYWdzJykgYW5kIGhhc2F0dHIoc3QsICdzdF9mbGFncycpOgorICAgIGxvb2t1cCgidXRpbWUiKShkc3QsIG5zPShzdC5zdF9hdGltZV9ucywgc3Quc3RfbXRpbWVfbnMpLAorICAgICAgICBmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQorICAgIHRyeToKKyAgICAgICAgbG9va3VwKCJjaG1vZCIpKGRzdCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPWZvbGxvdykKKyAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgIyBpZiB3ZSBnb3QgYSBOb3RJbXBsZW1lbnRlZEVycm9yLCBpdCdzIGJlY2F1c2UKKyAgICAgICAgIyAgICogZm9sbG93X3N5bWxpbmtzPUZhbHNlLAorICAgICAgICAjICAgKiBsY2hvd24oKSBpcyB1bmF2YWlsYWJsZSwgYW5kCisgICAgICAgICMgICAqIGVpdGhlcgorICAgICAgICAjICAgICAgICogZmNob3duYXQoKSBpcyB1bnZhaWxhYmxlIG9yCisgICAgICAgICMgICAgICAgKiBmY2hvd25hdCgpIGRvZXNuJ3QgaW1wbGVtZW50IEFUX1NZTUxJTktfTk9GT0xMT1cuCisgICAgICAgICMgICAgICAgICAoaXQgcmV0dXJuZWQgRU5PU1VQLikKKyAgICAgICAgIyB0aGVyZWZvcmUgd2UncmUgb3V0IG9mIG9wdGlvbnMtLXdlIHNpbXBseSBjYW5ub3QgY2hvd24gdGhlCisgICAgICAgICMgc3ltbGluay4gIGdpdmUgdXAsIHN1cHByZXNzIHRoZSBlcnJvci4KKyAgICAgICAgIyAod2hpY2ggaXMgd2hhdCBzaHV0aWwgYWx3YXlzIGRpZCBpbiB0aGlzIGNpcmN1bXN0YW5jZS4pCisgICAgICAgIHBhc3MKKyAgICBpZiBoYXNhdHRyKHN0LCAnc3RfZmxhZ3MnKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MuY2hmbGFncyhkc3QsIHN0LnN0X2ZsYWdzKQorICAgICAgICAgICAgbG9va3VwKCJjaGZsYWdzIikoZHN0LCBzdC5zdF9mbGFncywgZm9sbG93X3N5bWxpbmtzPWZvbGxvdykKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgd2h5OgogICAgICAgICAgICAgZm9yIGVyciBpbiAnRU9QTk9UU1VQUCcsICdFTk9UU1VQJzoKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGVycm5vLCBlcnIpIGFuZCB3aHkuZXJybm8gPT0gZ2V0YXR0cihlcnJubywgZXJyKToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICBfY29weXhhdHRyKHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQogCi1kZWYgY29weShzcmMsIGRzdCk6Ci0gICAgIiIiQ29weSBkYXRhIGFuZCBtb2RlIGJpdHMgKCJjcCBzcmMgZHN0IikuCitkZWYgY29weShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICIiIkNvcHkgZGF0YSBhbmQgbW9kZSBiaXRzICgiY3Agc3JjIGRzdCIpLiBSZXR1cm4gdGhlIGZpbGUncyBkZXN0aW5hdGlvbi4KIAogICAgIFRoZSBkZXN0aW5hdGlvbiBtYXkgYmUgYSBkaXJlY3RvcnkuCiAKKyAgICBJZiBmb2xsb3dfc3ltbGlua3MgaXMgZmFsc2UsIHN5bWxpbmtzIHdvbid0IGJlIGZvbGxvd2VkLiBUaGlzCisgICAgcmVzZW1ibGVzIEdOVSdzICJjcCAtUCBzcmMgZHN0Ii4KKwogICAgICIiIgogICAgIGlmIG9zLnBhdGguaXNkaXIoZHN0KToKICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGRzdCwgb3MucGF0aC5iYXNlbmFtZShzcmMpKQotICAgIGNvcHlmaWxlKHNyYywgZHN0KQotICAgIGNvcHltb2RlKHNyYywgZHN0KQorICAgIGNvcHlmaWxlKHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgIGNvcHltb2RlKHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgIHJldHVybiBkc3QKIAotZGVmIGNvcHkyKHNyYywgZHN0KToKLSAgICAiIiJDb3B5IGRhdGEgYW5kIGFsbCBzdGF0IGluZm8gKCJjcCAtcCBzcmMgZHN0IikuCitkZWYgY29weTIoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAiIiJDb3B5IGRhdGEgYW5kIGFsbCBzdGF0IGluZm8gKCJjcCAtcCBzcmMgZHN0IikuIFJldHVybiB0aGUgZmlsZSdzCisgICAgZGVzdGluYXRpb24uIgogCiAgICAgVGhlIGRlc3RpbmF0aW9uIG1heSBiZSBhIGRpcmVjdG9yeS4KIAorICAgIElmIGZvbGxvd19zeW1saW5rcyBpcyBmYWxzZSwgc3ltbGlua3Mgd29uJ3QgYmUgZm9sbG93ZWQuIFRoaXMKKyAgICByZXNlbWJsZXMgR05VJ3MgImNwIC1QIHNyYyBkc3QiLgorCiAgICAgIiIiCiAgICAgaWYgb3MucGF0aC5pc2Rpcihkc3QpOgogICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oZHN0LCBvcy5wYXRoLmJhc2VuYW1lKHNyYykpCi0gICAgY29weWZpbGUoc3JjLCBkc3QpCi0gICAgY29weXN0YXQoc3JjLCBkc3QpCisgICAgY29weWZpbGUoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgY29weXN0YXQoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgcmV0dXJuIGRzdAogCiBkZWYgaWdub3JlX3BhdHRlcm5zKCpwYXR0ZXJucyk6CiAgICAgIiIiRnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBhcyBjb3B5dHJlZSgpIGlnbm9yZSBwYXJhbWV0ZXIuCkBAIC0yMTEsNyArMzAzLDExIEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhzcmNuYW1lKToKICAgICAgICAgICAgICAgICBsaW5rdG8gPSBvcy5yZWFkbGluayhzcmNuYW1lKQogICAgICAgICAgICAgICAgIGlmIHN5bWxpbmtzOgorICAgICAgICAgICAgICAgICAgICAjIFdlIGNhbid0IGp1c3QgbGVhdmUgaXQgdG8gYGNvcHlfZnVuY3Rpb25gIGJlY2F1c2UgbGVnYWN5CisgICAgICAgICAgICAgICAgICAgICMgY29kZSB3aXRoIGEgY3VzdG9tIGBjb3B5X2Z1bmN0aW9uYCBtYXkgcmVseSBvbiBjb3B5dHJlZQorICAgICAgICAgICAgICAgICAgICAjIGRvaW5nIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluayhsaW5rdG8sIGRzdG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGNvcHlzdGF0KHNyY25hbWUsIGRzdG5hbWUsIGZvbGxvd19zeW1saW5rcz1ub3Qgc3ltbGlua3MpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBpZ25vcmUgZGFuZ2xpbmcgc3ltbGluayBpZiB0aGUgZmxhZyBpcyBvbgogICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGlua3RvKSBhbmQgaWdub3JlX2RhbmdsaW5nX3N5bWxpbmtzOgpAQCAtMjM5LDI0ICszMzUsMTAgQEAKICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKHNyYywgZHN0LCBzdHIod2h5KSkpCiAgICAgaWYgZXJyb3JzOgogICAgICAgICByYWlzZSBFcnJvcihlcnJvcnMpCisgICAgcmV0dXJuIGRzdAogCi1kZWYgcm10cmVlKHBhdGgsIGlnbm9yZV9lcnJvcnM9RmFsc2UsIG9uZXJyb3I9Tm9uZSk6Ci0gICAgIiIiUmVjdXJzaXZlbHkgZGVsZXRlIGEgZGlyZWN0b3J5IHRyZWUuCi0KLSAgICBJZiBpZ25vcmVfZXJyb3JzIGlzIHNldCwgZXJyb3JzIGFyZSBpZ25vcmVkOyBvdGhlcndpc2UsIGlmIG9uZXJyb3IKLSAgICBpcyBzZXQsIGl0IGlzIGNhbGxlZCB0byBoYW5kbGUgdGhlIGVycm9yIHdpdGggYXJndW1lbnRzIChmdW5jLAotICAgIHBhdGgsIGV4Y19pbmZvKSB3aGVyZSBmdW5jIGlzIG9zLmxpc3RkaXIsIG9zLnJlbW92ZSwgb3Igb3Mucm1kaXI7Ci0gICAgcGF0aCBpcyB0aGUgYXJndW1lbnQgdG8gdGhhdCBmdW5jdGlvbiB0aGF0IGNhdXNlZCBpdCB0byBmYWlsOyBhbmQKLSAgICBleGNfaW5mbyBpcyBhIHR1cGxlIHJldHVybmVkIGJ5IHN5cy5leGNfaW5mbygpLiAgSWYgaWdub3JlX2Vycm9ycwotICAgIGlzIGZhbHNlIGFuZCBvbmVycm9yIGlzIE5vbmUsIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuCi0KLSAgICAiIiIKLSAgICBpZiBpZ25vcmVfZXJyb3JzOgotICAgICAgICBkZWYgb25lcnJvcigqYXJncyk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgZWxpZiBvbmVycm9yIGlzIE5vbmU6Ci0gICAgICAgIGRlZiBvbmVycm9yKCphcmdzKToKLSAgICAgICAgICAgIHJhaXNlCisjIHZlcnNpb24gdnVsbmVyYWJsZSB0byByYWNlIGNvbmRpdGlvbnMKK2RlZiBfcm10cmVlX3Vuc2FmZShwYXRoLCBvbmVycm9yKToKICAgICB0cnk6CiAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHBhdGgpOgogICAgICAgICAgICAgIyBzeW1saW5rcyB0byBkaXJlY3RvcmllcyBhcmUgZm9yYmlkZGVuLCBzZWUgYnVnICMxNjY5CkBAIC0yNjgsNyArMzUwLDcgQEAKICAgICBuYW1lcyA9IFtdCiAgICAgdHJ5OgogICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIocGF0aCkKLSAgICBleGNlcHQgb3MuZXJyb3IgYXMgZXJyOgorICAgIGV4Y2VwdCBvcy5lcnJvcjoKICAgICAgICAgb25lcnJvcihvcy5saXN0ZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKICAgICBmb3IgbmFtZSBpbiBuYW1lczoKICAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKQEAgLTI3NywxNyArMzU5LDEwOSBAQAogICAgICAgICBleGNlcHQgb3MuZXJyb3I6CiAgICAgICAgICAgICBtb2RlID0gMAogICAgICAgICBpZiBzdGF0LlNfSVNESVIobW9kZSk6Ci0gICAgICAgICAgICBybXRyZWUoZnVsbG5hbWUsIGlnbm9yZV9lcnJvcnMsIG9uZXJyb3IpCisgICAgICAgICAgICBfcm10cmVlX3Vuc2FmZShmdWxsbmFtZSwgb25lcnJvcikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZnVsbG5hbWUpCi0gICAgICAgICAgICBleGNlcHQgb3MuZXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgIG9uZXJyb3Iob3MucmVtb3ZlLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICAgICAgb3MudW5saW5rKGZ1bGxuYW1lKQorICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgICAgIG9uZXJyb3Iob3MudW5saW5rLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCiAgICAgdHJ5OgogICAgICAgICBvcy5ybWRpcihwYXRoKQogICAgIGV4Y2VwdCBvcy5lcnJvcjoKICAgICAgICAgb25lcnJvcihvcy5ybWRpciwgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCiAKKyMgVmVyc2lvbiB1c2luZyBmZC1iYXNlZCBBUElzIHRvIHByb3RlY3QgYWdhaW5zdCByYWNlcworZGVmIF9ybXRyZWVfc2FmZV9mZCh0b3BmZCwgcGF0aCwgb25lcnJvcik6CisgICAgbmFtZXMgPSBbXQorICAgIHRyeToKKyAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKHRvcGZkKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgb25lcnJvcihvcy5saXN0ZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKKyAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ19zdCA9IG9zLnN0YXQobmFtZSwgZGlyX2ZkPXRvcGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgICAgICBtb2RlID0gb3JpZ19zdC5zdF9tb2RlCisgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgIG1vZGUgPSAwCisgICAgICAgIGlmIHN0YXQuU19JU0RJUihtb2RlKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkaXJmZCA9IG9zLm9wZW4obmFtZSwgb3MuT19SRE9OTFksIGRpcl9mZD10b3BmZCkKKyAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgICAgICBvbmVycm9yKG9zLm9wZW4sIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLnNhbWVzdGF0KG9yaWdfc3QsIG9zLmZzdGF0KGRpcmZkKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBfcm10cmVlX3NhZmVfZmQoZGlyZmQsIGZ1bGxuYW1lLCBvbmVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKG5hbWUsIGRpcl9mZD10b3BmZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnJtZGlyLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZGlyZmQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD10b3BmZCkKKyAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnVubGluaywgZnVsbG5hbWUsIHN5cy5leGNfaW5mbygpKQorCitfdXNlX2ZkX2Z1bmN0aW9ucyA9ICh7b3Mub3Blbiwgb3Muc3RhdCwgb3MudW5saW5rLCBvcy5ybWRpcn0gPD0KKyAgICAgICAgICAgICAgICAgICAgIG9zLnN1cHBvcnRzX2Rpcl9mZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgIG9zLmxpc3RkaXIgaW4gb3Muc3VwcG9ydHNfZmQgYW5kCisgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0IGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcykKKworZGVmIHJtdHJlZShwYXRoLCBpZ25vcmVfZXJyb3JzPUZhbHNlLCBvbmVycm9yPU5vbmUpOgorICAgICIiIlJlY3Vyc2l2ZWx5IGRlbGV0ZSBhIGRpcmVjdG9yeSB0cmVlLgorCisgICAgSWYgaWdub3JlX2Vycm9ycyBpcyBzZXQsIGVycm9ycyBhcmUgaWdub3JlZDsgb3RoZXJ3aXNlLCBpZiBvbmVycm9yCisgICAgaXMgc2V0LCBpdCBpcyBjYWxsZWQgdG8gaGFuZGxlIHRoZSBlcnJvciB3aXRoIGFyZ3VtZW50cyAoZnVuYywKKyAgICBwYXRoLCBleGNfaW5mbykgd2hlcmUgZnVuYyBpcyBwbGF0Zm9ybSBhbmQgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50OworICAgIHBhdGggaXMgdGhlIGFyZ3VtZW50IHRvIHRoYXQgZnVuY3Rpb24gdGhhdCBjYXVzZWQgaXQgdG8gZmFpbDsgYW5kCisgICAgZXhjX2luZm8gaXMgYSB0dXBsZSByZXR1cm5lZCBieSBzeXMuZXhjX2luZm8oKS4gIElmIGlnbm9yZV9lcnJvcnMKKyAgICBpcyBmYWxzZSBhbmQgb25lcnJvciBpcyBOb25lLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAgIiIiCisgICAgaWYgaWdub3JlX2Vycm9yczoKKyAgICAgICAgZGVmIG9uZXJyb3IoKmFyZ3MpOgorICAgICAgICAgICAgcGFzcworICAgIGVsaWYgb25lcnJvciBpcyBOb25lOgorICAgICAgICBkZWYgb25lcnJvcigqYXJncyk6CisgICAgICAgICAgICByYWlzZQorICAgIGlmIF91c2VfZmRfZnVuY3Rpb25zOgorICAgICAgICAjIFdoaWxlIHRoZSB1bnNhZmUgcm10cmVlIHdvcmtzIGZpbmUgb24gYnl0ZXMsIHRoZSBmZCBiYXNlZCBkb2VzIG5vdC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CisgICAgICAgICAgICBwYXRoID0gb3MuZnNkZWNvZGUocGF0aCkKKyAgICAgICAgIyBOb3RlOiBUbyBndWFyZCBhZ2FpbnN0IHN5bWxpbmsgcmFjZXMsIHdlIHVzZSB0aGUgc3RhbmRhcmQKKyAgICAgICAgIyBsc3RhdCgpL29wZW4oKS9mc3RhdCgpIHRyaWNrLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnX3N0ID0gb3MubHN0YXQocGF0aCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIG9uZXJyb3Iob3MubHN0YXQsIHBhdGgsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZkID0gb3Mub3BlbihwYXRoLCBvcy5PX1JET05MWSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIG9uZXJyb3Iob3MubHN0YXQsIHBhdGgsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIChzdGF0LlNfSVNESVIob3JpZ19zdC5zdF9tb2RlKSBhbmQKKyAgICAgICAgICAgICAgICBvcy5wYXRoLnNhbWVzdGF0KG9yaWdfc3QsIG9zLmZzdGF0KGZkKSkpOgorICAgICAgICAgICAgICAgIF9ybXRyZWVfc2FmZV9mZChmZCwgcGF0aCwgb25lcnJvcikKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKHBhdGgpCisgICAgICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnJtZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgTm90QURpcmVjdG9yeUVycm9yKDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm90IGEgZGlyZWN0b3J5OiAne30nIi5mb3JtYXQocGF0aCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gX3JtdHJlZV91bnNhZmUocGF0aCwgb25lcnJvcikKKworIyBBbGxvdyBpbnRyb3NwZWN0aW9uIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBoYXJkZW5pbmcgYWdhaW5zdCBzeW1saW5rCisjIGF0dGFja3MgaXMgc3VwcG9ydGVkIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtCitybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrcyA9IF91c2VfZmRfZnVuY3Rpb25zCiAKIGRlZiBfYmFzZW5hbWUocGF0aCk6CiAgICAgIyBBIGJhc2VuYW1lKCkgdmFyaWFudCB3aGljaCBmaXJzdCBzdHJpcHMgdGhlIHRyYWlsaW5nIHNsYXNoLCBpZiBwcmVzZW50LgpAQCAtMjk2LDcgKzQ3MCw4IEBACiAKIGRlZiBtb3ZlKHNyYywgZHN0KToKICAgICAiIiJSZWN1cnNpdmVseSBtb3ZlIGEgZmlsZSBvciBkaXJlY3RvcnkgdG8gYW5vdGhlciBsb2NhdGlvbi4gVGhpcyBpcwotICAgIHNpbWlsYXIgdG8gdGhlIFVuaXggIm12IiBjb21tYW5kLgorICAgIHNpbWlsYXIgdG8gdGhlIFVuaXggIm12IiBjb21tYW5kLiBSZXR1cm4gdGhlIGZpbGUgb3IgZGlyZWN0b3J5J3MKKyAgICBkZXN0aW5hdGlvbi4KIAogICAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSBvciBhIHN5bWxpbmsgdG8gYSBkaXJlY3RvcnksIHRoZSBzb3VyY2UKICAgICBpcyBtb3ZlZCBpbnNpZGUgdGhlIGRpcmVjdG9yeS4gVGhlIGRlc3RpbmF0aW9uIHBhdGggbXVzdCBub3QgYWxyZWFkeQpAQCAtMzA2LDcgKzQ4MSwxMCBAQAogICAgIG92ZXJ3cml0dGVuIGRlcGVuZGluZyBvbiBvcy5yZW5hbWUoKSBzZW1hbnRpY3MuCiAKICAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgb24gb3VyIGN1cnJlbnQgZmlsZXN5c3RlbSwgdGhlbiByZW5hbWUoKSBpcyB1c2VkLgotICAgIE90aGVyd2lzZSwgc3JjIGlzIGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24gYW5kIHRoZW4gcmVtb3ZlZC4KKyAgICBPdGhlcndpc2UsIHNyYyBpcyBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGFuZCB0aGVuIHJlbW92ZWQuIFN5bWxpbmtzIGFyZQorICAgIHJlY3JlYXRlZCB1bmRlciB0aGUgbmV3IG5hbWUgaWYgb3MucmVuYW1lKCkgZmFpbHMgYmVjYXVzZSBvZiBjcm9zcworICAgIGZpbGVzeXN0ZW0gcmVuYW1lcy4KKwogICAgIEEgbG90IG1vcmUgY291bGQgYmUgZG9uZSBoZXJlLi4uICBBIGxvb2sgYXQgYSBtdi5jIHNob3dzIGEgbG90IG9mCiAgICAgdGhlIGlzc3VlcyB0aGlzIGltcGxlbWVudGF0aW9uIGdsb3NzZXMgb3Zlci4KIApAQCAtMzI0LDggKzUwMiwxMiBAQAogICAgICAgICAgICAgcmFpc2UgRXJyb3IoIkRlc3RpbmF0aW9uIHBhdGggJyVzJyBhbHJlYWR5IGV4aXN0cyIgJSByZWFsX2RzdCkKICAgICB0cnk6CiAgICAgICAgIG9zLnJlbmFtZShzcmMsIHJlYWxfZHN0KQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhzcmMpOgorICAgICAgICAgICAgbGlua3RvID0gb3MucmVhZGxpbmsoc3JjKQorICAgICAgICAgICAgb3Muc3ltbGluayhsaW5rdG8sIHJlYWxfZHN0KQorICAgICAgICAgICAgb3MudW5saW5rKHNyYykKKyAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHNyYyk6CiAgICAgICAgICAgICBpZiBfZGVzdGluc3JjKHNyYywgZHN0KToKICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigiQ2Fubm90IG1vdmUgYSBkaXJlY3RvcnkgJyVzJyBpbnRvIGl0c2VsZiAnJXMnLiIgJSAoc3JjLCBkc3QpKQogICAgICAgICAgICAgY29weXRyZWUoc3JjLCByZWFsX2RzdCwgc3ltbGlua3M9VHJ1ZSkKQEAgLTMzMyw2ICs1MTUsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29weTIoc3JjLCByZWFsX2RzdCkKICAgICAgICAgICAgIG9zLnVubGluayhzcmMpCisgICAgcmV0dXJuIHJlYWxfZHN0CiAKIGRlZiBfZGVzdGluc3JjKHNyYywgZHN0KToKICAgICBzcmMgPSBhYnNwYXRoKHNyYykKQEAgLTM5MSw3ICs1NzQsNyBAQAogICAgICAgICBjb21wcmVzc19leHRbJ2J6aXAyJ10gPSAnLmJ6MicKIAogICAgICMgZmxhZ3MgZm9yIGNvbXByZXNzaW9uIHByb2dyYW0sIGVhY2ggZWxlbWVudCBvZiBsaXN0IHdpbGwgYmUgYW4gYXJndW1lbnQKLSAgICBpZiBjb21wcmVzcyBpcyBub3QgTm9uZSBhbmQgY29tcHJlc3Mgbm90IGluIGNvbXByZXNzX2V4dC5rZXlzKCk6CisgICAgaWYgY29tcHJlc3MgaXMgbm90IE5vbmUgYW5kIGNvbXByZXNzIG5vdCBpbiBjb21wcmVzc19leHQ6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJhZCB2YWx1ZSBmb3IgJ2NvbXByZXNzJywgb3IgY29tcHJlc3Npb24gZm9ybWF0IG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZCA6IHswfSIuZm9ybWF0KGNvbXByZXNzKSkKIApAQCAtNDk2LDcgKzY3OSw3IEBACiBfQVJDSElWRV9GT1JNQVRTID0gewogICAgICdnenRhcic6IChfbWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICdnemlwJyldLCAiZ3ppcCdlZCB0YXItZmlsZSIpLAogICAgICd0YXInOiAgIChfbWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsIE5vbmUpXSwgInVuY29tcHJlc3NlZCB0YXIgZmlsZSIpLAotICAgICd6aXAnOiAgIChfbWFrZV96aXBmaWxlLCBbXSwiWklQIGZpbGUiKQorICAgICd6aXAnOiAgIChfbWFrZV96aXBmaWxlLCBbXSwgIlpJUCBmaWxlIikKICAgICB9CiAKIGlmIF9CWjJfU1VQUE9SVEVEOgpAQCAtNTI5LDcgKzcxMiw3IEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXh0cmFfYXJncywgKHR1cGxlLCBsaXN0KSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXh0cmFfYXJncyBuZWVkcyB0byBiZSBhIHNlcXVlbmNlJykKICAgICBmb3IgZWxlbWVudCBpbiBleHRyYV9hcmdzOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbGVtZW50LCAodHVwbGUsIGxpc3QpKSBvciBsZW4oZWxlbWVudCkgIT0yIDoKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZWxlbWVudCwgKHR1cGxlLCBsaXN0KSkgb3IgbGVuKGVsZW1lbnQpICE9MjoKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXh0cmFfYXJncyBlbGVtZW50cyBhcmUgOiAoYXJnX25hbWUsIHZhbHVlKScpCiAKICAgICBfQVJDSElWRV9GT1JNQVRTW25hbWVdID0gKGZ1bmN0aW9uLCBleHRyYV9hcmdzLCBkZXNjcmlwdGlvbikKQEAgLTY4MSw3ICs4NjQsNyBAQAogICAgICAgICAgICAgaWYgbm90IG5hbWUuZW5kc3dpdGgoJy8nKToKICAgICAgICAgICAgICAgICAjIGZpbGUKICAgICAgICAgICAgICAgICBkYXRhID0gemlwLnJlYWQoaW5mby5maWxlbmFtZSkKLSAgICAgICAgICAgICAgICBmID0gb3Blbih0YXJnZXQsJ3diJykKKyAgICAgICAgICAgICAgICBmID0gb3Blbih0YXJnZXQsICd3YicpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGRhdGEpCiAgICAgICAgICAgICAgICAgZmluYWxseToKQEAgLTc1NSwzICs5MzgsMTY1IEBACiAgICAgICAgIGZ1bmMgPSBfVU5QQUNLX0ZPUk1BVFNbZm9ybWF0XVsxXQogICAgICAgICBrd2FyZ3MgPSBkaWN0KF9VTlBBQ0tfRk9STUFUU1tmb3JtYXRdWzJdKQogICAgICAgICBmdW5jKGZpbGVuYW1lLCBleHRyYWN0X2RpciwgKiprd2FyZ3MpCisKKworaWYgaGFzYXR0cihvcywgJ3N0YXR2ZnMnKToKKworICAgIF9fYWxsX18uYXBwZW5kKCdkaXNrX3VzYWdlJykKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZSA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ3VzYWdlJywgJ3RvdGFsIHVzZWQgZnJlZScpCisKKyAgICBkZWYgZGlza191c2FnZShwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aC4KKworICAgICAgICBSZXR1cm5lZCB2YWx1ZSBpcyBhIG5hbWVkIHR1cGxlIHdpdGggYXR0cmlidXRlcyAndG90YWwnLCAndXNlZCcgYW5kCisgICAgICAgICdmcmVlJywgd2hpY2ggYXJlIHRoZSBhbW91bnQgb2YgdG90YWwsIHVzZWQgYW5kIGZyZWUgc3BhY2UsIGluIGJ5dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgc3QgPSBvcy5zdGF0dmZzKHBhdGgpCisgICAgICAgIGZyZWUgPSBzdC5mX2JhdmFpbCAqIHN0LmZfZnJzaXplCisgICAgICAgIHRvdGFsID0gc3QuZl9ibG9ja3MgKiBzdC5mX2Zyc2l6ZQorICAgICAgICB1c2VkID0gKHN0LmZfYmxvY2tzIC0gc3QuZl9iZnJlZSkgKiBzdC5mX2Zyc2l6ZQorICAgICAgICByZXR1cm4gX250dXBsZV9kaXNrdXNhZ2UodG90YWwsIHVzZWQsIGZyZWUpCisKK2VsaWYgb3MubmFtZSA9PSAnbnQnOgorCisgICAgaW1wb3J0IG50CisgICAgX19hbGxfXy5hcHBlbmQoJ2Rpc2tfdXNhZ2UnKQorICAgIF9udHVwbGVfZGlza3VzYWdlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgndXNhZ2UnLCAndG90YWwgdXNlZCBmcmVlJykKKworICAgIGRlZiBkaXNrX3VzYWdlKHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoLgorCisgICAgICAgIFJldHVybmVkIHZhbHVzIGlzIGEgbmFtZWQgdHVwbGUgd2l0aCBhdHRyaWJ1dGVzICd0b3RhbCcsICd1c2VkJyBhbmQKKyAgICAgICAgJ2ZyZWUnLCB3aGljaCBhcmUgdGhlIGFtb3VudCBvZiB0b3RhbCwgdXNlZCBhbmQgZnJlZSBzcGFjZSwgaW4gYnl0ZXMuCisgICAgICAgICIiIgorICAgICAgICB0b3RhbCwgZnJlZSA9IG50Ll9nZXRkaXNrdXNhZ2UocGF0aCkKKyAgICAgICAgdXNlZCA9IHRvdGFsIC0gZnJlZQorICAgICAgICByZXR1cm4gX250dXBsZV9kaXNrdXNhZ2UodG90YWwsIHVzZWQsIGZyZWUpCisKKworZGVmIGNob3duKHBhdGgsIHVzZXI9Tm9uZSwgZ3JvdXA9Tm9uZSk6CisgICAgIiIiQ2hhbmdlIG93bmVyIHVzZXIgYW5kIGdyb3VwIG9mIHRoZSBnaXZlbiBwYXRoLgorCisgICAgdXNlciBhbmQgZ3JvdXAgY2FuIGJlIHRoZSB1aWQvZ2lkIG9yIHRoZSB1c2VyL2dyb3VwIG5hbWVzLCBhbmQgaW4gdGhhdCBjYXNlLAorICAgIHRoZXkgYXJlIGNvbnZlcnRlZCB0byB0aGVpciByZXNwZWN0aXZlIHVpZC9naWQuCisgICAgIiIiCisKKyAgICBpZiB1c2VyIGlzIE5vbmUgYW5kIGdyb3VwIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVzZXIgYW5kL29yIGdyb3VwIG11c3QgYmUgc2V0IikKKworICAgIF91c2VyID0gdXNlcgorICAgIF9ncm91cCA9IGdyb3VwCisKKyAgICAjIC0xIG1lYW5zIGRvbid0IGNoYW5nZSBpdAorICAgIGlmIHVzZXIgaXMgTm9uZToKKyAgICAgICAgX3VzZXIgPSAtMQorICAgICMgdXNlciBjYW4gZWl0aGVyIGJlIGFuIGludCAodGhlIHVpZCkgb3IgYSBzdHJpbmcgKHRoZSBzeXN0ZW0gdXNlcm5hbWUpCisgICAgZWxpZiBpc2luc3RhbmNlKHVzZXIsIHN0cik6CisgICAgICAgIF91c2VyID0gX2dldF91aWQodXNlcikKKyAgICAgICAgaWYgX3VzZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIExvb2t1cEVycm9yKCJubyBzdWNoIHVzZXI6IHshcn0iLmZvcm1hdCh1c2VyKSkKKworICAgIGlmIGdyb3VwIGlzIE5vbmU6CisgICAgICAgIF9ncm91cCA9IC0xCisgICAgZWxpZiBub3QgaXNpbnN0YW5jZShncm91cCwgaW50KToKKyAgICAgICAgX2dyb3VwID0gX2dldF9naWQoZ3JvdXApCisgICAgICAgIGlmIF9ncm91cCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgTG9va3VwRXJyb3IoIm5vIHN1Y2ggZ3JvdXA6IHshcn0iLmZvcm1hdChncm91cCkpCisKKyAgICBvcy5jaG93bihwYXRoLCBfdXNlciwgX2dyb3VwKQorCitkZWYgZ2V0X3Rlcm1pbmFsX3NpemUoZmFsbGJhY2s9KDgwLCAyNCkpOgorICAgICIiIkdldCB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93LgorCisgICAgRm9yIGVhY2ggb2YgdGhlIHR3byBkaW1lbnNpb25zLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUsIENPTFVNTlMKKyAgICBhbmQgTElORVMgcmVzcGVjdGl2ZWx5LCBpcyBjaGVja2VkLiBJZiB0aGUgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQKKyAgICB0aGUgdmFsdWUgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBpdCBpcyB1c2VkLgorCisgICAgV2hlbiBDT0xVTU5TIG9yIExJTkVTIGlzIG5vdCBkZWZpbmVkLCB3aGljaCBpcyB0aGUgY29tbW9uIGNhc2UsCisgICAgdGhlIHRlcm1pbmFsIGNvbm5lY3RlZCB0byBzeXMuX19zdGRvdXRfXyBpcyBxdWVyaWVkCisgICAgYnkgaW52b2tpbmcgb3MuZ2V0X3Rlcm1pbmFsX3NpemUuCisKKyAgICBJZiB0aGUgdGVybWluYWwgc2l6ZSBjYW5ub3QgYmUgc3VjY2Vzc2Z1bGx5IHF1ZXJpZWQsIGVpdGhlciBiZWNhdXNlCisgICAgdGhlIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgcXVlcnlpbmcsIG9yIGJlY2F1c2Ugd2UgYXJlIG5vdAorICAgIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLCB0aGUgdmFsdWUgZ2l2ZW4gaW4gZmFsbGJhY2sgcGFyYW1ldGVyCisgICAgaXMgdXNlZC4gRmFsbGJhY2sgZGVmYXVsdHMgdG8gKDgwLCAyNCkgd2hpY2ggaXMgdGhlIGRlZmF1bHQKKyAgICBzaXplIHVzZWQgYnkgbWFueSB0ZXJtaW5hbCBlbXVsYXRvcnMuCisKKyAgICBUaGUgdmFsdWUgcmV0dXJuZWQgaXMgYSBuYW1lZCB0dXBsZSBvZiB0eXBlIG9zLnRlcm1pbmFsX3NpemUuCisgICAgIiIiCisgICAgIyBjb2x1bW5zLCBsaW5lcyBhcmUgdGhlIHdvcmtpbmcgdmFsdWVzCisgICAgdHJ5OgorICAgICAgICBjb2x1bW5zID0gaW50KG9zLmVudmlyb25bJ0NPTFVNTlMnXSkKKyAgICBleGNlcHQgKEtleUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgY29sdW1ucyA9IDAKKworICAgIHRyeToKKyAgICAgICAgbGluZXMgPSBpbnQob3MuZW52aXJvblsnTElORVMnXSkKKyAgICBleGNlcHQgKEtleUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgbGluZXMgPSAwCisKKyAgICAjIG9ubHkgcXVlcnkgaWYgbmVjZXNzYXJ5CisgICAgaWYgY29sdW1ucyA8PSAwIG9yIGxpbmVzIDw9IDA6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNpemUgPSBvcy5nZXRfdGVybWluYWxfc2l6ZShzeXMuX19zdGRvdXRfXy5maWxlbm8oKSkKKyAgICAgICAgZXhjZXB0IChOYW1lRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgc2l6ZSA9IG9zLnRlcm1pbmFsX3NpemUoZmFsbGJhY2spCisgICAgICAgIGlmIGNvbHVtbnMgPD0gMDoKKyAgICAgICAgICAgIGNvbHVtbnMgPSBzaXplLmNvbHVtbnMKKyAgICAgICAgaWYgbGluZXMgPD0gMDoKKyAgICAgICAgICAgIGxpbmVzID0gc2l6ZS5saW5lcworCisgICAgcmV0dXJuIG9zLnRlcm1pbmFsX3NpemUoKGNvbHVtbnMsIGxpbmVzKSkKKworZGVmIHdoaWNoKGNtZCwgbW9kZT1vcy5GX09LIHwgb3MuWF9PSywgcGF0aD1Ob25lKToKKyAgICAiIiJHaXZlbiBhIGNvbW1hbmQsIG1vZGUsIGFuZCBhIFBBVEggc3RyaW5nLCByZXR1cm4gdGhlIHBhdGggd2hpY2gKKyAgICBjb25mb3JtcyB0byB0aGUgZ2l2ZW4gbW9kZSBvbiB0aGUgUEFUSCwgb3IgTm9uZSBpZiB0aGVyZSBpcyBubyBzdWNoCisgICAgZmlsZS4KKworICAgIGBtb2RlYCBkZWZhdWx0cyB0byBvcy5GX09LIHwgb3MuWF9PSy4gYHBhdGhgIGRlZmF1bHRzIHRvIHRoZSByZXN1bHQKKyAgICBvZiBvcy5lbnZpcm9uLmdldCgiUEFUSCIpLCBvciBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIGEgY3VzdG9tIHNlYXJjaAorICAgIHBhdGguCisKKyAgICAiIiIKKyAgICAjIENoZWNrIHRoYXQgYSBnaXZlbiBmaWxlIGNhbiBiZSBhY2Nlc3NlZCB3aXRoIHRoZSBjb3JyZWN0IG1vZGUuCisgICAgIyBBZGRpdGlvbmFsbHkgY2hlY2sgdGhhdCBgZmlsZWAgaXMgbm90IGEgZGlyZWN0b3J5LCBhcyBvbiBXaW5kb3dzCisgICAgIyBkaXJlY3RvcmllcyBwYXNzIHRoZSBvcy5hY2Nlc3MgY2hlY2suCisgICAgZGVmIF9hY2Nlc3NfY2hlY2soZm4sIG1vZGUpOgorICAgICAgICByZXR1cm4gKG9zLnBhdGguZXhpc3RzKGZuKSBhbmQgb3MuYWNjZXNzKGZuLCBtb2RlKQorICAgICAgICAgICAgICAgIGFuZCBub3Qgb3MucGF0aC5pc2RpcihmbikpCisKKyAgICAjIFNob3J0IGNpcmN1aXQuIElmIHdlJ3JlIGdpdmVuIGEgZnVsbCBwYXRoIHdoaWNoIG1hdGNoZXMgdGhlIG1vZGUKKyAgICAjIGFuZCBpdCBleGlzdHMsIHdlJ3JlIGRvbmUgaGVyZS4KKyAgICBpZiBfYWNjZXNzX2NoZWNrKGNtZCwgbW9kZSk6CisgICAgICAgIHJldHVybiBjbWQKKworICAgIHBhdGggPSAocGF0aCBvciBvcy5lbnZpcm9uLmdldCgiUEFUSCIsIG9zLmRlZnBhdGgpKS5zcGxpdChvcy5wYXRoc2VwKQorCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgICMgVGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRha2VzIHByZWNlZGVuY2Ugb24gV2luZG93cy4KKyAgICAgICAgaWYgbm90IG9zLmN1cmRpciBpbiBwYXRoOgorICAgICAgICAgICAgcGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorCisgICAgICAgICMgUEFUSEVYVCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgb24gV2luZG93cy4KKyAgICAgICAgcGF0aGV4dCA9IG9zLmVudmlyb24uZ2V0KCJQQVRIRVhUIiwgIiIpLnNwbGl0KG9zLnBhdGhzZXApCisgICAgICAgICMgU2VlIGlmIHRoZSBnaXZlbiBmaWxlIG1hdGNoZXMgYW55IG9mIHRoZSBleHBlY3RlZCBwYXRoIGV4dGVuc2lvbnMuCisgICAgICAgICMgVGhpcyB3aWxsIGFsbG93IHVzIHRvIHNob3J0IGNpcmN1aXQgd2hlbiBnaXZlbiAicHl0aG9uLmV4ZSIuCisgICAgICAgIG1hdGNoZXMgPSBbY21kIGZvciBleHQgaW4gcGF0aGV4dCBpZiBjbWQubG93ZXIoKS5lbmRzd2l0aChleHQubG93ZXIoKSldCisgICAgICAgICMgSWYgaXQgZG9lcyBtYXRjaCwgb25seSB0ZXN0IHRoYXQgb25lLCBvdGhlcndpc2Ugd2UgaGF2ZSB0byB0cnkKKyAgICAgICAgIyBvdGhlcnMuCisgICAgICAgIGZpbGVzID0gW2NtZF0gaWYgbWF0Y2hlcyBlbHNlIFtjbWQgKyBleHQubG93ZXIoKSBmb3IgZXh0IGluIHBhdGhleHRdCisgICAgZWxzZToKKyAgICAgICAgIyBPbiBvdGhlciBwbGF0Zm9ybXMgeW91IGRvbid0IGhhdmUgdGhpbmdzIGxpa2UgUEFUSEVYVCB0byB0ZWxsIHlvdQorICAgICAgICAjIHdoYXQgZmlsZSBzdWZmaXhlcyBhcmUgZXhlY3V0YWJsZSwgc28ganVzdCBwYXNzIG9uIGNtZCBhcy1pcy4KKyAgICAgICAgZmlsZXMgPSBbY21kXQorCisgICAgc2VlbiA9IHNldCgpCisgICAgZm9yIGRpciBpbiBwYXRoOgorICAgICAgICBkaXIgPSBvcy5wYXRoLm5vcm1jYXNlKGRpcikKKyAgICAgICAgaWYgbm90IGRpciBpbiBzZWVuOgorICAgICAgICAgICAgc2Vlbi5hZGQoZGlyKQorICAgICAgICAgICAgZm9yIHRoZWZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihkaXIsIHRoZWZpbGUpCisgICAgICAgICAgICAgICAgaWYgX2FjY2Vzc19jaGVjayhuYW1lLCBtb2RlKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL3NpdGUucHkgYi9MaWIvc2l0ZS5weQppbmRleCBhMmMwYmVjLi4wYWFmNDZiIDEwMDY0NAotLS0gYS9MaWIvc2l0ZS5weQorKysgYi9MaWIvc2l0ZS5weQpAQCAtMTMsNiArMTMsMTkgQEAKIHJlc3VsdGluZyBkaXJlY3RvcmllcywgaWYgdGhleSBleGlzdCwgYXJlIGFwcGVuZGVkIHRvIHN5cy5wYXRoLCBhbmQKIGFsc28gaW5zcGVjdGVkIGZvciBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZXMuCiAKK0lmIGEgZmlsZSBuYW1lZCAicHl2ZW52LmNmZyIgZXhpc3RzIG9uZSBkaXJlY3RvcnkgYWJvdmUgc3lzLmV4ZWN1dGFibGUsCitzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggYXJlIHNldCB0byB0aGF0IGRpcmVjdG9yeSBhbmQKK2l0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyBhbmQgc2l0ZS1weXRob24gKHN5cy5iYXNlX3ByZWZpeCBhbmQKK3N5cy5iYXNlX2V4ZWNfcHJlZml4IHdpbGwgYWx3YXlzIGJlIHRoZSAicmVhbCIgcHJlZml4ZXMgb2YgdGhlIFB5dGhvbgoraW5zdGFsbGF0aW9uKS4gSWYgInB5dmVudi5jZmciIChhIGJvb3RzdHJhcCBjb25maWd1cmF0aW9uIGZpbGUpIGNvbnRhaW5zCit0aGUga2V5ICJpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzIiBzZXQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiAiZmFsc2UiCisoY2FzZS1pbnNlbnNpdGl2ZSksIHRoZSBzeXN0ZW0tbGV2ZWwgcHJlZml4ZXMgd2lsbCBzdGlsbCBhbHNvIGJlCitzZWFyY2hlZCBmb3Igc2l0ZS1wYWNrYWdlczsgb3RoZXJ3aXNlIHRoZXkgd29uJ3QuCisKK0FsbCBvZiB0aGUgcmVzdWx0aW5nIHNpdGUtc3BlY2lmaWMgZGlyZWN0b3JpZXMsIGlmIHRoZXkgZXhpc3QsIGFyZQorYXBwZW5kZWQgdG8gc3lzLnBhdGgsIGFuZCBhbHNvIGluc3BlY3RlZCBmb3IgcGF0aCBjb25maWd1cmF0aW9uCitmaWxlcy4KKwogQSBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIGZpbGUgd2hvc2UgbmFtZSBoYXMgdGhlIGZvcm0KIDxwYWNrYWdlPi5wdGg7IGl0cyBjb250ZW50cyBhcmUgYWRkaXRpb25hbCBkaXJlY3RvcmllcyAob25lIHBlciBsaW5lKQogdG8gYmUgYWRkZWQgdG8gc3lzLnBhdGguICBOb24tZXhpc3RpbmcgZGlyZWN0b3JpZXMgKG9yCkBAIC01NCw4ICs2Nyw4IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCBvcworaW1wb3J0IHJlCiBpbXBvcnQgYnVpbHRpbnMKLWltcG9ydCB0cmFjZWJhY2sKIAogIyBQcmVmaXhlcyBmb3Igc2l0ZS1wYWNrYWdlczsgYWRkIGFkZGl0aW9uYWwgcHJlZml4ZXMgbGlrZSAvdXNyL2xvY2FsIGhlcmUKIFBSRUZJWEVTID0gW3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeF0KQEAgLTgyLDcgKzk1LDggQEAKIGRlZiBhYnNfcGF0aHMoKToKICAgICAiIiJTZXQgYWxsIG1vZHVsZSBfX2ZpbGVfXyBhbmQgX19jYWNoZWRfXyBhdHRyaWJ1dGVzIHRvIGFuIGFic29sdXRlIHBhdGgiIiIKICAgICBmb3IgbSBpbiBzZXQoc3lzLm1vZHVsZXMudmFsdWVzKCkpOgotICAgICAgICBpZiBoYXNhdHRyKG0sICdfX2xvYWRlcl9fJyk6CisgICAgICAgIGlmIChnZXRhdHRyKGdldGF0dHIobSwgJ19fbG9hZGVyX18nLCBOb25lKSwgJ19fbW9kdWxlX18nLCBOb25lKSAhPQorICAgICAgICAgICAgICAgICdfZnJvemVuX2ltcG9ydGxpYicpOgogICAgICAgICAgICAgY29udGludWUgICAjIGRvbid0IG1lc3Mgd2l0aCBhIFBFUCAzMDItc3VwcGxpZWQgX19maWxlX18KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbS5fX2ZpbGVfXyA9IG9zLnBhdGguYWJzcGF0aChtLl9fZmlsZV9fKQpAQCAtMTM4LDcgKzE1Miw3IEBACiAgICAgICAgIHJlc2V0ID0gMAogICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHNpdGVkaXIsIG5hbWUpCiAgICAgdHJ5OgotICAgICAgICBmID0gb3BlbihmdWxsbmFtZSwgInJVIikKKyAgICAgICAgZiA9IG9wZW4oZnVsbG5hbWUsICJyIikKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgcmV0dXJuCiAgICAgd2l0aCBmOgpAQCAtMTU0LDkgKzE2OCwxMCBAQAogICAgICAgICAgICAgICAgIGlmIG5vdCBkaXJjYXNlIGluIGtub3duX3BhdGhzIGFuZCBvcy5wYXRoLmV4aXN0cyhkaXIpOgogICAgICAgICAgICAgICAgICAgICBzeXMucGF0aC5hcHBlbmQoZGlyKQogICAgICAgICAgICAgICAgICAgICBrbm93bl9wYXRocy5hZGQoZGlyY2FzZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBwcmludCgiRXJyb3IgcHJvY2Vzc2luZyBsaW5lIHs6ZH0gb2Yge306XG4iLmZvcm1hdChuKzEsIGZ1bGxuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICAgICAgICAgIGZvciByZWNvcmQgaW4gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpKToKICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVjb3JkLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCcgICcrbGluZSwgZmlsZT1zeXMuc3RkZXJyKQpAQCAtMTc4LDYgKzE5Myw3IEBACiAgICAgc2l0ZWRpciwgc2l0ZWRpcmNhc2UgPSBtYWtlcGF0aChzaXRlZGlyKQogICAgIGlmIG5vdCBzaXRlZGlyY2FzZSBpbiBrbm93bl9wYXRoczoKICAgICAgICAgc3lzLnBhdGguYXBwZW5kKHNpdGVkaXIpICAgICAgICAjIEFkZCBwYXRoIGNvbXBvbmVudAorICAgICAgICBrbm93bl9wYXRocy5hZGQoc2l0ZWRpcmNhc2UpCiAgICAgdHJ5OgogICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoc2l0ZWRpcikKICAgICBleGNlcHQgb3MuZXJyb3I6CkBAIC0yNDEsNyArMjU3LDYgQEAKICAgICAgICAgcmV0dXJuIFVTRVJfU0lURQogCiAgICAgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wYXRoCi0gICAgaW1wb3J0IG9zCiAKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgIGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcgpAQCAtMjY2LDE4ICsyODEsMjEgQEAKICAgICAgICAgYWRkc2l0ZWRpcih1c2VyX3NpdGUsIGtub3duX3BhdGhzKQogICAgIHJldHVybiBrbm93bl9wYXRocwogCi1kZWYgZ2V0c2l0ZXBhY2thZ2VzKCk6CitkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgogICAgICIiIlJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgYWxsIGdsb2JhbCBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yaWVzCiAgICAgKGFuZCBwb3NzaWJseSBzaXRlLXB5dGhvbikuCiAKLSAgICBGb3IgZWFjaCBkaXJlY3RvcnkgcHJlc2VudCBpbiB0aGUgZ2xvYmFsIGBgUFJFRklYRVNgYCwgdGhpcyBmdW5jdGlvbgotICAgIHdpbGwgZmluZCBpdHMgYHNpdGUtcGFja2FnZXNgIHN1YmRpcmVjdG9yeSBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbQotICAgIGVudmlyb25tZW50LCBhbmQgd2lsbCByZXR1cm4gYSBsaXN0IG9mIGZ1bGwgcGF0aHMuCisgICAgRm9yIGVhY2ggZGlyZWN0b3J5IHByZXNlbnQgaW4gYGBwcmVmaXhlc2BgIChvciB0aGUgZ2xvYmFsIGBgUFJFRklYRVNgYCksCisgICAgdGhpcyBmdW5jdGlvbiB3aWxsIGZpbmQgaXRzIGBzaXRlLXBhY2thZ2VzYCBzdWJkaXJlY3RvcnkgZGVwZW5kaW5nIG9uIHRoZQorICAgIHN5c3RlbSBlbnZpcm9ubWVudCwgYW5kIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBmdWxsIHBhdGhzLgogICAgICIiIgogICAgIHNpdGVwYWNrYWdlcyA9IFtdCiAgICAgc2VlbiA9IHNldCgpCiAKLSAgICBmb3IgcHJlZml4IGluIFBSRUZJWEVTOgorICAgIGlmIHByZWZpeGVzIGlzIE5vbmU6CisgICAgICAgIHByZWZpeGVzID0gUFJFRklYRVMKKworICAgIGZvciBwcmVmaXggaW4gcHJlZml4ZXM6CiAgICAgICAgIGlmIG5vdCBwcmVmaXggb3IgcHJlZml4IGluIHNlZW46CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBzZWVuLmFkZChwcmVmaXgpCkBAIC0zMDMsOSArMzIxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMudmVyc2lvbls6M10sICJzaXRlLXBhY2thZ2VzIikpCiAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwogCi1kZWYgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKToKK2RlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgogICAgICIiIkFkZCBzaXRlLXBhY2thZ2VzIChhbmQgcG9zc2libHkgc2l0ZS1weXRob24pIHRvIHN5cy5wYXRoIiIiCi0gICAgZm9yIHNpdGVkaXIgaW4gZ2V0c2l0ZXBhY2thZ2VzKCk6CisgICAgZm9yIHNpdGVkaXIgaW4gZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzKToKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzaXRlZGlyKToKICAgICAgICAgICAgIGFkZHNpdGVkaXIoc2l0ZWRpciwga25vd25fcGF0aHMpCiAKQEAgLTM4NSw3ICs0MDMsNyBAQAogICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIHNlbGYuX19maWxlczoKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihkaXIsIGZpbGVuYW1lKQogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZnAgPSBvcGVuKGZpbGVuYW1lLCAiclUiKQorICAgICAgICAgICAgICAgICAgICBmcCA9IG9wZW4oZmlsZW5hbWUsICJyIikKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQogICAgICAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC00NzUsNiArNDkzLDYxIEBACiAgICAgICAgICAgICAgICAgZW5jb2RpbmdzLmFsaWFzZXMuYWxpYXNlc1tlbmNdID0gJ21iY3MnCiAKIAorQ09ORklHX0xJTkUgPSByZS5jb21waWxlKHInXig/UDxrZXk+KFx3fFstX10pKylccyo9XHMqKD9QPHZhbHVlPi4qKVxzKiQnKQorCitkZWYgdmVudihrbm93bl9wYXRocyk6CisgICAgZ2xvYmFsIFBSRUZJWEVTLCBFTkFCTEVfVVNFUl9TSVRFCisKKyAgICBlbnYgPSBvcy5lbnZpcm9uCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAnX19QWVZFTlZfTEFVTkNIRVJfXycgaW4gZW52OgorICAgICAgICBleGVjdXRhYmxlID0gb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCisgICAgZWxzZToKKyAgICAgICAgZXhlY3V0YWJsZSA9IHN5cy5leGVjdXRhYmxlCisgICAgZXhlY3V0YWJsZV9kaXIsIGV4ZWN1dGFibGVfbmFtZSA9IG9zLnBhdGguc3BsaXQoZXhlY3V0YWJsZSkKKyAgICBzaXRlX3ByZWZpeCA9IG9zLnBhdGguZGlybmFtZShleGVjdXRhYmxlX2RpcikKKyAgICBzeXMuX2hvbWUgPSBOb25lCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIGV4ZWN1dGFibGVfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZXhlY3V0YWJsZV9uYW1lKVswXQorICAgIGNvbmZfYmFzZW5hbWUgPSAncHl2ZW52LmNmZycKKyAgICBjYW5kaWRhdGVfY29uZnMgPSBbCisgICAgICAgIGNvbmZmaWxlIGZvciBjb25mZmlsZSBpbiAoCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZXhlY3V0YWJsZV9kaXIsIGNvbmZfYmFzZW5hbWUpLAorICAgICAgICAgICAgb3MucGF0aC5qb2luKHNpdGVfcHJlZml4LCBjb25mX2Jhc2VuYW1lKQorICAgICAgICAgICAgKQorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShjb25mZmlsZSkKKyAgICAgICAgXQorCisgICAgaWYgY2FuZGlkYXRlX2NvbmZzOgorICAgICAgICB2aXJ0dWFsX2NvbmYgPSBjYW5kaWRhdGVfY29uZnNbMF0KKyAgICAgICAgc3lzdGVtX3NpdGUgPSAidHJ1ZSIKKyAgICAgICAgd2l0aCBvcGVuKHZpcnR1YWxfY29uZikgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgIG0gPSBDT05GSUdfTElORS5tYXRjaChsaW5lKQorICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAgIGQgPSBtLmdyb3VwZGljdCgpCisgICAgICAgICAgICAgICAgICAgIGtleSwgdmFsdWUgPSBkWydrZXknXS5sb3dlcigpLCBkWyd2YWx1ZSddCisgICAgICAgICAgICAgICAgICAgIGlmIGtleSA9PSAnaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyc6CisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fc2l0ZSA9IHZhbHVlLmxvd2VyKCkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ2hvbWUnOgorICAgICAgICAgICAgICAgICAgICAgICAgc3lzLl9ob21lID0gdmFsdWUKKworICAgICAgICBzeXMucHJlZml4ID0gc3lzLmV4ZWNfcHJlZml4ID0gc2l0ZV9wcmVmaXgKKworICAgICAgICAjIERvaW5nIHRoaXMgaGVyZSBlbnN1cmVzIHZlbnYgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHVzZXItc2l0ZQorICAgICAgICBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIFtzeXMucHJlZml4XSkKKworICAgICAgICAjIGFkZHNpdGVwYWNrYWdlcyB3aWxsIHByb2Nlc3Mgc2l0ZV9wcmVmaXggYWdhaW4gaWYgaXRzIGluIFBSRUZJWEVTLAorICAgICAgICAjIGJ1dCB0aGF0J3Mgb2s7IGtub3duX3BhdGhzIHdpbGwgcHJldmVudCBhbnl0aGluZyBiZWluZyBhZGRlZCB0d2ljZQorICAgICAgICBpZiBzeXN0ZW1fc2l0ZSA9PSAidHJ1ZSI6CisgICAgICAgICAgICBQUkVGSVhFUy5pbnNlcnQoMCwgc3lzLnByZWZpeCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIFBSRUZJWEVTID0gW3N5cy5wcmVmaXhdCisgICAgICAgICAgICBFTkFCTEVfVVNFUl9TSVRFID0gRmFsc2UKKworICAgIHJldHVybiBrbm93bl9wYXRocworCisKIGRlZiBleGVjc2l0ZWN1c3RvbWl6ZSgpOgogICAgICIiIlJ1biBjdXN0b20gc2l0ZSBzcGVjaWZpYyBjb2RlLCBpZiBhdmFpbGFibGUuIiIiCiAgICAgdHJ5OgpAQCAtNTA4LDEwICs1ODEsMTYgQEAKIAogCiBkZWYgbWFpbigpOgorICAgICIiIkFkZCBzdGFuZGFyZCBzaXRlLXNwZWNpZmljIGRpcmVjdG9yaWVzIHRvIHRoZSBtb2R1bGUgc2VhcmNoIHBhdGguCisKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhpcyBtb2R1bGUgaXMgaW1wb3J0ZWQsCisgICAgdW5sZXNzIHRoZSBweXRob24gaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUgLVMgZmxhZy4KKyAgICAiIiIKICAgICBnbG9iYWwgRU5BQkxFX1VTRVJfU0lURQogCiAgICAgYWJzX3BhdGhzKCkKICAgICBrbm93bl9wYXRocyA9IHJlbW92ZWR1cHBhdGhzKCkKKyAgICBrbm93bl9wYXRocyA9IHZlbnYoa25vd25fcGF0aHMpCiAgICAgaWYgRU5BQkxFX1VTRVJfU0lURSBpcyBOb25lOgogICAgICAgICBFTkFCTEVfVVNFUl9TSVRFID0gY2hlY2tfZW5hYmxldXNlcnNpdGUoKQogICAgIGtub3duX3BhdGhzID0gYWRkdXNlcnNpdGVwYWNrYWdlcyhrbm93bl9wYXRocykKQEAgLTUyNiw3ICs2MDUsMTAgQEAKICAgICBpZiBFTkFCTEVfVVNFUl9TSVRFOgogICAgICAgICBleGVjdXNlcmN1c3RvbWl6ZSgpCiAKLW1haW4oKQorIyBQcmV2ZW50IGVkaXRpb24gb2Ygc3lzLnBhdGggd2hlbiBweXRob24gd2FzIHN0YXJ0ZWQgd2l0aCAtUyBhbmQKKyMgc2l0ZSBpcyBpbXBvcnRlZCBsYXRlci4KK2lmIG5vdCBzeXMuZmxhZ3Mubm9fc2l0ZToKKyAgICBtYWluKCkKIAogZGVmIF9zY3JpcHQoKToKICAgICBoZWxwID0gIiIiXApkaWZmIC0tZ2l0IGEvTGliL3NtdHBkLnB5IGIvTGliL3NtdHBkLnB5CmluZGV4IDhjZDQwNWMuLjc3OGQ2ZDYgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwZC5weQorKysgYi9MaWIvc210cGQucHkKQEAgLTEsNSArMSw1IEBACiAjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIiIiQW4gUkZDIDI4MjEgc210cCBwcm94eS4KKyIiIkFuIFJGQyA1MzIxIHNtdHAgcHJveHkuCiAKIFVzYWdlOiAlKHByb2dyYW0pcyBbb3B0aW9uc10gW2xvY2FsaG9zdDpsb2NhbHBvcnQgW3JlbW90ZWhvc3Q6cmVtb3RlcG9ydF1dCiAKQEAgLTIwLDYgKzIwLDExIEBACiAgICAgICAgIFVzZSBgY2xhc3NuYW1lJyBhcyB0aGUgY29uY3JldGUgU01UUCBwcm94eSBjbGFzcy4gIFVzZXMgYFB1cmVQcm94eScgYnkKICAgICAgICAgZGVmYXVsdC4KIAorICAgIC0tc2l6ZSBsaW1pdAorICAgIC1zIGxpbWl0CisgICAgICAgIFJlc3RyaWN0IHRoZSB0b3RhbCBzaXplIG9mIHRoZSBpbmNvbWluZyBtZXNzYWdlIHRvICJsaW1pdCIgbnVtYmVyIG9mCisgICAgICAgIGJ5dGVzIHZpYSB0aGUgUkZDIDE4NzAgU0laRSBleHRlbnNpb24uICBEZWZhdWx0cyB0byAzMzU1NDQzMiBieXRlcy4KKwogICAgIC0tZGVidWcKICAgICAtZAogICAgICAgICBUdXJuIG9uIGRlYnVnZ2luZyBwcmludHMuCkBAIC0zNSwxMCArNDAsOSBAQAogYW5kIGlmIHJlbW90ZXBvcnQgaXMgbm90IGdpdmVuLCB0aGVuIDI1IGlzIHVzZWQuCiAiIiIKIAotDAogIyBPdmVydmlldzoKICMKLSMgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIG1pbmltYWwgU01UUCBwcm90b2NvbCBhcyBkZWZpbmVkIGluIFJGQyA4MjEuICBJdAorIyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgbWluaW1hbCBTTVRQIHByb3RvY29sIGFzIGRlZmluZWQgaW4gUkZDIDUzMjEuICBJdAogIyBoYXMgYSBoaWVyYXJjaHkgb2YgY2xhc3NlcyB3aGljaCBpbXBsZW1lbnQgdGhlIGJhY2tlbmQgZnVuY3Rpb25hbGl0eSBmb3IgdGhlCiAjIHNtdHBkLiAgQSBudW1iZXIgb2YgY2xhc3NlcyBhcmUgcHJvdmlkZWQ6CiAjCkBAIC02Niw3ICs3MCw3IEBACiAjCiAjIC0gc3VwcG9ydCBtYWlsYm94IGRlbGl2ZXJ5CiAjIC0gYWxpYXMgZmlsZXMKLSMgLSBFU01UUAorIyAtIEhhbmRsZSBtb3JlIEVTTVRQIGV4dGVuc2lvbnMKICMgLSBoYW5kbGUgZXJyb3IgY29kZXMgZnJvbSB0aGUgYmFja2VuZCBzbXRwZAogCiBpbXBvcnQgc3lzCkBAIC03NywxMiArODEsMTQgQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBhc3luY29yZQogaW1wb3J0IGFzeW5jaGF0CitpbXBvcnQgY29sbGVjdGlvbnMKIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KK2Zyb20gZW1haWwuX2hlYWRlcl92YWx1ZV9wYXJzZXIgaW1wb3J0IGdldF9hZGRyX3NwZWMsIGdldF9hbmdsZV9hZGRyCiAKIF9fYWxsX18gPSBbIlNNVFBTZXJ2ZXIiLCJEZWJ1Z2dpbmdTZXJ2ZXIiLCJQdXJlUHJveHkiLCJNYWlsbWFuUHJveHkiXQogCiBwcm9ncmFtID0gc3lzLmFyZ3ZbMF0KLV9fdmVyc2lvbl9fID0gJ1B5dGhvbiBTTVRQIHByb3h5IHZlcnNpb24gMC4yJworX192ZXJzaW9uX18gPSAnUHl0aG9uIFNNVFAgcHJveHkgdmVyc2lvbiAwLjMnCiAKIAogY2xhc3MgRGV2bnVsbDoKQEAgLTk0LDkgKzEwMCw5IEBACiBORVdMSU5FID0gJ1xuJwogRU1QVFlTVFJJTkcgPSAnJwogQ09NTUFTUEFDRSA9ICcsICcKK0RBVEFfU0laRV9ERUZBVUxUID0gMzM1NTQ0MzIKIAogCi0MCiBkZWYgdXNhZ2UoY29kZSwgbXNnPScnKToKICAgICBwcmludChfX2RvY19fICUgZ2xvYmFscygpLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgaWYgbXNnOgpAQCAtMTA0LDE5ICsxMTAsMjMgQEAKICAgICBzeXMuZXhpdChjb2RlKQogCiAKLQwKIGNsYXNzIFNNVFBDaGFubmVsKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgogICAgIENPTU1BTkQgPSAwCiAgICAgREFUQSA9IDEKIAotICAgIGRhdGFfc2l6ZV9saW1pdCA9IDMzNTU0NDMyCiAgICAgY29tbWFuZF9zaXplX2xpbWl0ID0gNTEyCisgICAgY29tbWFuZF9zaXplX2xpbWl0cyA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxhbWJkYSB4PWNvbW1hbmRfc2l6ZV9saW1pdDogeCkKKyAgICBjb21tYW5kX3NpemVfbGltaXRzLnVwZGF0ZSh7CisgICAgICAgICdNQUlMJzogY29tbWFuZF9zaXplX2xpbWl0ICsgMjYsCisgICAgICAgIH0pCisgICAgbWF4X2NvbW1hbmRfc2l6ZV9saW1pdCA9IG1heChjb21tYW5kX3NpemVfbGltaXRzLnZhbHVlcygpKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkciwgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxUKToKICAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5fX2luaXRfXyhzZWxmLCBjb25uKQogICAgICAgICBzZWxmLnNtdHBfc2VydmVyID0gc2VydmVyCiAgICAgICAgIHNlbGYuY29ubiA9IGNvbm4KICAgICAgICAgc2VsZi5hZGRyID0gYWRkcgorICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAogICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gW10KICAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECiAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9ICcnCkBAIC0xMzcsMTI3ICsxNDcsMTI4IEBACiAgICAgICAgIHByaW50KCdQZWVyOicsIHJlcHIoc2VsZi5wZWVyKSwgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgc2VsZi5wdXNoKCcyMjAgJXMgJXMnICUgKHNlbGYuZnFkbiwgX192ZXJzaW9uX18pKQogICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCisgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IEZhbHNlCiAKICAgICAjIHByb3BlcnRpZXMgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5CiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fc2VydmVyKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19zZXJ2ZXIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3NtdHBfc2VydmVyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3NtdHBfc2VydmVyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5zbXRwX3NlcnZlcgogICAgIEBfX3NlcnZlci5zZXR0ZXIKICAgICBkZWYgX19zZXJ2ZXIoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fc2VydmVyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdzbXRwX3NlcnZlcicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdzbXRwX3NlcnZlcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5zbXRwX3NlcnZlciA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19saW5lKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19saW5lIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdyZWNlaXZlZF9saW5lcycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdyZWNlaXZlZF9saW5lcycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYucmVjZWl2ZWRfbGluZXMKICAgICBAX19saW5lLnNldHRlcgogICAgIGRlZiBfX2xpbmUoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fbGluZSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAncmVjZWl2ZWRfbGluZXMnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAncmVjZWl2ZWRfbGluZXMnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fc3RhdGUoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX3N0YXRlIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdzbXRwX3N0YXRlJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3NtdHBfc3RhdGUnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnNtdHBfc3RhdGUKICAgICBAX19zdGF0ZS5zZXR0ZXIKICAgICBkZWYgX19zdGF0ZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19zdGF0ZSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnc210cF9zdGF0ZScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdzbXRwX3N0YXRlJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fZ3JlZXRpbmcoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2dyZWV0aW5nIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdzZWVuX2dyZWV0aW5nJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3NlZW5fZ3JlZXRpbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnNlZW5fZ3JlZXRpbmcKICAgICBAX19ncmVldGluZy5zZXR0ZXIKICAgICBkZWYgX19ncmVldGluZyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19ncmVldGluZyBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnc2Vlbl9ncmVldGluZycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdzZWVuX2dyZWV0aW5nJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fbWFpbGZyb20oc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX21haWxmcm9tIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdtYWlsZnJvbScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdtYWlsZnJvbScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYubWFpbGZyb20KICAgICBAX19tYWlsZnJvbS5zZXR0ZXIKICAgICBkZWYgX19tYWlsZnJvbShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19tYWlsZnJvbSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnbWFpbGZyb20nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAnbWFpbGZyb20nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYubWFpbGZyb20gPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fcmNwdHRvcyhzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fcmNwdHRvcyBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAncmNwdHRvcycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdyY3B0dG9zJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5yY3B0dG9zCiAgICAgQF9fcmNwdHRvcy5zZXR0ZXIKICAgICBkZWYgX19yY3B0dG9zKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX3JjcHR0b3MgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3JjcHR0b3MnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAncmNwdHRvcycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5yY3B0dG9zID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2RhdGEoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2RhdGEgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3JlY2VpdmVkX2RhdGEnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAncmVjZWl2ZWRfZGF0YScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYucmVjZWl2ZWRfZGF0YQogICAgIEBfX2RhdGEuc2V0dGVyCiAgICAgZGVmIF9fZGF0YShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19kYXRhIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdyZWNlaXZlZF9kYXRhJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3JlY2VpdmVkX2RhdGEnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19mcWRuKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19mcWRuIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdmcWRuJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ2ZxZG4nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLmZxZG4KICAgICBAX19mcWRuLnNldHRlcgogICAgIGRlZiBfX2ZxZG4oc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fZnFkbiBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnZnFkbicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdmcWRuJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLmZxZG4gPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fcGVlcihzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fcGVlciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAncGVlcicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdwZWVyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5wZWVyCiAgICAgQF9fcGVlci5zZXR0ZXIKICAgICBkZWYgX19wZWVyKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX3BlZXIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3BlZXInIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAncGVlcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5wZWVyID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2Nvbm4oc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2Nvbm4gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ2Nvbm4nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnY29ubicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuY29ubgogICAgIEBfX2Nvbm4uc2V0dGVyCiAgICAgZGVmIF9fY29ubihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19jb25uIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdjb25uJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ2Nvbm4nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuY29ubiA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19hZGRyKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19hZGRyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdhZGRyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ2FkZHInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLmFkZHIKICAgICBAX19hZGRyLnNldHRlcgogICAgIGRlZiBfX2FkZHIoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fYWRkciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnYWRkcicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdhZGRyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLmFkZHIgPSB2YWx1ZQogCiAgICAgIyBPdmVycmlkZXMgYmFzZSBjbGFzcyBmb3IgY29udmVuaWVuY2UKQEAgLTI2OCwxNCArMjc5LDE0IEBACiAgICAgZGVmIGNvbGxlY3RfaW5jb21pbmdfZGF0YShzZWxmLCBkYXRhKToKICAgICAgICAgbGltaXQgPSBOb25lCiAgICAgICAgIGlmIHNlbGYuc210cF9zdGF0ZSA9PSBzZWxmLkNPTU1BTkQ6Ci0gICAgICAgICAgICBsaW1pdCA9IHNlbGYuY29tbWFuZF9zaXplX2xpbWl0CisgICAgICAgICAgICBsaW1pdCA9IHNlbGYubWF4X2NvbW1hbmRfc2l6ZV9saW1pdAogICAgICAgICBlbGlmIHNlbGYuc210cF9zdGF0ZSA9PSBzZWxmLkRBVEE6CiAgICAgICAgICAgICBsaW1pdCA9IHNlbGYuZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIGlmIGxpbWl0IGFuZCBzZWxmLm51bV9ieXRlcyA+IGxpbWl0OgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVsaWYgbGltaXQ6CiAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyArPSBsZW4oZGF0YSkKLSAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcy5hcHBlbmQoc3RyKGRhdGEsICJ1dGY4IikpCisgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMuYXBwZW5kKHN0cihkYXRhLCAidXRmLTgiKSkKIAogICAgICMgSW1wbGVtZW50YXRpb24gb2YgYmFzZSBjbGFzcyBhYnN0cmFjdCBtZXRob2QKICAgICBkZWYgZm91bmRfdGVybWluYXRvcihzZWxmKToKQEAgLTI4MywxMSArMjk0LDcgQEAKICAgICAgICAgcHJpbnQoJ0RhdGE6JywgcmVwcihsaW5lKSwgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCiAgICAgICAgIGlmIHNlbGYuc210cF9zdGF0ZSA9PSBzZWxmLkNPTU1BTkQ6Ci0gICAgICAgICAgICBpZiBzZWxmLm51bV9ieXRlcyA+IHNlbGYuY29tbWFuZF9zaXplX2xpbWl0OgotICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBsaW5lIHRvbyBsb25nJykKLSAgICAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAorICAgICAgICAgICAgc3osIHNlbGYubnVtX2J5dGVzID0gc2VsZi5udW1fYnl0ZXMsIDAKICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBiYWQgc3ludGF4JykKICAgICAgICAgICAgICAgICByZXR1cm4KQEAgLTI5OSw5ICszMDYsMTQgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY29tbWFuZCA9IGxpbmVbOmldLnVwcGVyKCkKICAgICAgICAgICAgICAgICBhcmcgPSBsaW5lW2krMTpdLnN0cmlwKCkKKyAgICAgICAgICAgIG1heF9zeiA9IChzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdHNbY29tbWFuZF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cCBlbHNlIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0KQorICAgICAgICAgICAgaWYgc3ogPiBtYXhfc3o6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDAgRXJyb3I6IGxpbmUgdG9vIGxvbmcnKQorICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihzZWxmLCAnc210cF8nICsgY29tbWFuZCwgTm9uZSkKICAgICAgICAgICAgIGlmIG5vdCBtZXRob2Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDIgRXJyb3I6IGNvbW1hbmQgIiVzIiBub3QgaW1wbGVtZW50ZWQnICUgY29tbWFuZCkKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMCBFcnJvcjogY29tbWFuZCAiJXMiIG5vdCByZWNvZ25pemVkJyAlIGNvbW1hbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBtZXRob2QoYXJnKQogICAgICAgICAgICAgcmV0dXJuCkBAIC0zMTAsMTIgKzMyMiwxMiBAQAogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNDUxIEludGVybmFsIGNvbmZ1c2lvbicpCiAgICAgICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBpZiBzZWxmLm51bV9ieXRlcyA+IHNlbGYuZGF0YV9zaXplX2xpbWl0OgorICAgICAgICAgICAgaWYgc2VsZi5kYXRhX3NpemVfbGltaXQgYW5kIHNlbGYubnVtX2J5dGVzID4gc2VsZi5kYXRhX3NpemVfbGltaXQ6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTIgRXJyb3I6IFRvbyBtdWNoIG1haWwgZGF0YScpCiAgICAgICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAjIFJlbW92ZSBleHRyYW5lb3VzIGNhcnJpYWdlIHJldHVybnMgYW5kIGRlLXRyYW5zcGFyZW5jeSBhY2NvcmRpbmcKLSAgICAgICAgICAgICMgdG8gUkZDIDgyMSwgU2VjdGlvbiA0LjUuMi4KKyAgICAgICAgICAgICMgdG8gUkZDIDUzMjEsIFNlY3Rpb24gNC41LjIuCiAgICAgICAgICAgICBkYXRhID0gW10KICAgICAgICAgICAgIGZvciB0ZXh0IGluIGxpbmUuc3BsaXQoJ1xyXG4nKToKICAgICAgICAgICAgICAgICBpZiB0ZXh0IGFuZCB0ZXh0WzBdID09ICcuJzoKQEAgLTMzMyw3ICszNDUsNyBAQAogICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCiAgICAgICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCiAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9rJykKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYucHVzaChzdGF0dXMpCiAKQEAgLTM0Niw1OCArMzU4LDE4OCBAQAogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRHVwbGljYXRlIEhFTE8vRUhMTycpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSBhcmcKKyAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IEZhbHNlCiAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCAlcycgJSBzZWxmLmZxZG4pCiAKKyAgICBkZWYgc210cF9FSExPKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIG5vdCBhcmc6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IEVITE8gaG9zdG5hbWUnKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHNlbGYuc2Vlbl9ncmVldGluZzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIER1cGxpY2F0ZSBIRUxPL0VITE8nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gYXJnCisgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBUcnVlCisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MC0lcycgJSBzZWxmLmZxZG4pCisgICAgICAgICAgICBpZiBzZWxmLmRhdGFfc2l6ZV9saW1pdDoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MC1TSVpFICVzJyAlIHNlbGYuZGF0YV9zaXplX2xpbWl0KQorICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgSEVMUCcpCisKICAgICBkZWYgc210cF9OT09QKHNlbGYsIGFyZyk6CiAgICAgICAgIGlmIGFyZzoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogTk9PUCcpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBPaycpCisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAKICAgICBkZWYgc210cF9RVUlUKHNlbGYsIGFyZyk6CiAgICAgICAgICMgYXJncyBpcyBpZ25vcmVkCiAgICAgICAgIHNlbGYucHVzaCgnMjIxIEJ5ZScpCiAgICAgICAgIHNlbGYuY2xvc2Vfd2hlbl9kb25lKCkKIAotICAgICMgZmFjdG9yZWQKLSAgICBkZWYgX19nZXRhZGRyKHNlbGYsIGtleXdvcmQsIGFyZyk6Ci0gICAgICAgIGFkZHJlc3MgPSBOb25lCisgICAgZGVmIF9zdHJpcF9jb21tYW5kX2tleXdvcmQoc2VsZiwga2V5d29yZCwgYXJnKToKICAgICAgICAga2V5bGVuID0gbGVuKGtleXdvcmQpCiAgICAgICAgIGlmIGFyZ1s6a2V5bGVuXS51cHBlcigpID09IGtleXdvcmQ6Ci0gICAgICAgICAgICBhZGRyZXNzID0gYXJnW2tleWxlbjpdLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBhZGRyZXNzOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsaWYgYWRkcmVzc1swXSA9PSAnPCcgYW5kIGFkZHJlc3NbLTFdID09ICc+JyBhbmQgYWRkcmVzcyAhPSAnPD4nOgotICAgICAgICAgICAgICAgICMgQWRkcmVzc2VzIGNhbiBiZSBpbiB0aGUgZm9ybSA8cGVyc29uQGRvbS5jb20+IGJ1dCB3YXRjaCBvdXQKLSAgICAgICAgICAgICAgICAjIGZvciBudWxsIGFkZHJlc3MsIGUuZy4gPD4KLSAgICAgICAgICAgICAgICBhZGRyZXNzID0gYWRkcmVzc1sxOi0xXQotICAgICAgICByZXR1cm4gYWRkcmVzcworICAgICAgICAgICAgcmV0dXJuIGFyZ1trZXlsZW46XS5zdHJpcCgpCisgICAgICAgIHJldHVybiAnJworCisgICAgZGVmIF9nZXRhZGRyKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIG5vdCBhcmc6CisgICAgICAgICAgICByZXR1cm4gJycsICcnCisgICAgICAgIGlmIGFyZy5sc3RyaXAoKS5zdGFydHN3aXRoKCc8Jyk6CisgICAgICAgICAgICBhZGRyZXNzLCByZXN0ID0gZ2V0X2FuZ2xlX2FkZHIoYXJnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYWRkcmVzcywgcmVzdCA9IGdldF9hZGRyX3NwZWMoYXJnKQorICAgICAgICBpZiBub3QgYWRkcmVzczoKKyAgICAgICAgICAgIHJldHVybiBhZGRyZXNzLCByZXN0CisgICAgICAgIHJldHVybiBhZGRyZXNzLmFkZHJfc3BlYywgcmVzdAorCisgICAgZGVmIF9nZXRwYXJhbXMoc2VsZiwgcGFyYW1zKToKKyAgICAgICAgIyBSZXR1cm4gYW55IHBhcmFtZXRlcnMgdGhhdCBhcHBlYXIgdG8gYmUgc3ludGFjdGljYWxseSB2YWxpZCBhY2NvcmRpbmcKKyAgICAgICAgIyB0byBSRkMgMTg2OSwgaWdub3JlIGFsbCBvdGhlcnMuICAoUG9zdGVsIHJ1bGU6IGFjY2VwdCB3aGF0IHdlIGNhbi4pCisgICAgICAgIHBhcmFtcyA9IFtwYXJhbS5zcGxpdCgnPScsIDEpIGZvciBwYXJhbSBpbiBwYXJhbXMuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnPScgaW4gcGFyYW1dCisgICAgICAgIHJldHVybiB7azogdiBmb3IgaywgdiBpbiBwYXJhbXMgaWYgay5pc2FsbnVtKCl9CisKKyAgICBkZWYgc210cF9IRUxQKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIGFyZzoKKyAgICAgICAgICAgIGV4dGVuZGVkID0gJyBbU1AgPG1haWwgcGFyYW1ldGVyc10nCisgICAgICAgICAgICBsY19hcmcgPSBhcmcudXBwZXIoKQorICAgICAgICAgICAgaWYgbGNfYXJnID09ICdFSExPJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IEVITE8gaG9zdG5hbWUnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ0hFTE8nOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogSEVMTyBob3N0bmFtZScpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnTUFJTCc6CisgICAgICAgICAgICAgICAgbXNnID0gJzI1MCBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+JworICAgICAgICAgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgICAgICAgICAgbXNnICs9IGV4dGVuZGVkCisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKG1zZykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdSQ1BUJzoKKyAgICAgICAgICAgICAgICBtc2cgPSAnMjUwIFN5bnRheDogUkNQVCBUTzogPGFkZHJlc3M+JworICAgICAgICAgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgICAgICAgICAgbXNnICs9IGV4dGVuZGVkCisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKG1zZykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdEQVRBJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IERBVEEnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ1JTRVQnOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogUlNFVCcpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnTk9PUCc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBOT09QJykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdRVUlUJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IFFVSVQnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ1ZSRlknOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogVlJGWSA8YWRkcmVzcz4nKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTdXBwb3J0ZWQgY29tbWFuZHM6IEVITE8gSEVMTyBNQUlMIFJDUFQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnREFUQSBSU0VUIE5PT1AgUVVJVCBWUkZZJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgUkNQVCBEQVRBICcKKyAgICAgICAgICAgICAgICAgICAgICAnUlNFVCBOT09QIFFVSVQgVlJGWScpCisKKyAgICBkZWYgc210cF9WUkZZKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIGFyZzoKKyAgICAgICAgICAgIGFkZHJlc3MsIHBhcmFtcyA9IHNlbGYuX2dldGFkZHIoYXJnKQorICAgICAgICAgICAgaWYgYWRkcmVzczoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MiBDYW5ub3QgVlJGWSB1c2VyLCBidXQgd2lsbCBhY2NlcHQgbWVzc2FnZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgYXR0ZW1wdCBkZWxpdmVyeScpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAyIENvdWxkIG5vdCBWUkZZICVzJyAlIGFyZykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogVlJGWSA8YWRkcmVzcz4nKQogCiAgICAgZGVmIHNtdHBfTUFJTChzZWxmLCBhcmcpOgorICAgICAgICBpZiBub3Qgc2VsZi5zZWVuX2dyZWV0aW5nOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdCcpOworICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHByaW50KCc9PT0+IE1BSUwnLCBhcmcsIGZpbGU9REVCVUdTVFJFQU0pCi0gICAgICAgIGFkZHJlc3MgPSBzZWxmLl9fZ2V0YWRkcignRlJPTTonLCBhcmcpIGlmIGFyZyBlbHNlIE5vbmUKKyAgICAgICAgc3ludGF4ZXJyID0gJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+JworICAgICAgICBpZiBzZWxmLmV4dGVuZGVkX3NtdHA6CisgICAgICAgICAgICBzeW50YXhlcnIgKz0gJyBbU1AgPG1haWwtcGFyYW1ldGVycz5dJworICAgICAgICBpZiBhcmcgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgYXJnID0gc2VsZi5fc3RyaXBfY29tbWFuZF9rZXl3b3JkKCdGUk9NOicsIGFyZykKKyAgICAgICAgYWRkcmVzcywgcGFyYW1zID0gc2VsZi5fZ2V0YWRkcihhcmcpCiAgICAgICAgIGlmIG5vdCBhZGRyZXNzOgotICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBNQUlMIEZST006PGFkZHJlc3M+JykKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IHNlbGYuZXh0ZW5kZWRfc210cCBhbmQgcGFyYW1zOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3QgYWRkcmVzczoKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgc2VsZi5tYWlsZnJvbToKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBuZXN0ZWQgTUFJTCBjb21tYW5kJykKICAgICAgICAgICAgIHJldHVybgorICAgICAgICBwYXJhbXMgPSBzZWxmLl9nZXRwYXJhbXMocGFyYW1zLnVwcGVyKCkpCisgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzaXplID0gcGFyYW1zLnBvcCgnU0laRScsIE5vbmUpCisgICAgICAgIGlmIHNpemU6CisgICAgICAgICAgICBpZiBub3Qgc2l6ZS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGVsaWYgc2VsZi5kYXRhX3NpemVfbGltaXQgYW5kIGludChzaXplKSA+IHNlbGYuZGF0YV9zaXplX2xpbWl0OgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTUyIEVycm9yOiBtZXNzYWdlIHNpemUgZXhjZWVkcyBmaXhlZCBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZScpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGxlbihwYXJhbXMua2V5cygpKSA+IDA6CisgICAgICAgICAgICBzZWxmLnB1c2goJzU1NSBNQUlMIEZST00gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgaW1wbGVtZW50ZWQnKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYubWFpbGZyb20gPSBhZGRyZXNzCiAgICAgICAgIHByaW50KCdzZW5kZXI6Jywgc2VsZi5tYWlsZnJvbSwgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgc2VsZi5wdXNoKCcyNTAgT2snKQorICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAKICAgICBkZWYgc210cF9SQ1BUKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIG5vdCBzZWxmLnNlZW5fZ3JlZXRpbmc6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0Jyk7CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgcHJpbnQoJz09PT4gUkNQVCcsIGFyZywgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgaWYgbm90IHNlbGYubWFpbGZyb206CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogbmVlZCBNQUlMIGNvbW1hbmQnKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGFkZHJlc3MgPSBzZWxmLl9fZ2V0YWRkcignVE86JywgYXJnKSBpZiBhcmcgZWxzZSBOb25lCisgICAgICAgIHN5bnRheGVyciA9ICc1MDEgU3ludGF4OiBSQ1BUIFRPOiA8YWRkcmVzcz4nCisgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgIHN5bnRheGVyciArPSAnIFtTUCA8bWFpbC1wYXJhbWV0ZXJzPl0nCisgICAgICAgIGlmIGFyZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBhcmcgPSBzZWxmLl9zdHJpcF9jb21tYW5kX2tleXdvcmQoJ1RPOicsIGFyZykKKyAgICAgICAgYWRkcmVzcywgcGFyYW1zID0gc2VsZi5fZ2V0YWRkcihhcmcpCisgICAgICAgIGlmIG5vdCBhZGRyZXNzOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBwYXJhbXM6CisgICAgICAgICAgICBpZiBzZWxmLmV4dGVuZGVkX3NtdHA6CisgICAgICAgICAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0cGFyYW1zKHBhcmFtcy51cHBlcigpKQorICAgICAgICAgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IGFkZHJlc3M6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHBhcmFtcyBhbmQgbGVuKHBhcmFtcy5rZXlzKCkpID4gMDoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTU1IFJDUFQgVE8gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgaW1wbGVtZW50ZWQnKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBhZGRyZXNzOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBSQ1BUIFRPOiA8YWRkcmVzcz4nKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYucmNwdHRvcy5hcHBlbmQoYWRkcmVzcykKICAgICAgICAgcHJpbnQoJ3JlY2lwczonLCBzZWxmLnJjcHR0b3MsIGZpbGU9REVCVUdTVFJFQU0pCi0gICAgICAgIHNlbGYucHVzaCgnMjUwIE9rJykKKyAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQogCiAgICAgZGVmIHNtdHBfUlNFVChzZWxmLCBhcmcpOgogICAgICAgICBpZiBhcmc6CkBAIC00MDgsOSArNTUwLDEyIEBACiAgICAgICAgIHNlbGYucmNwdHRvcyA9IFtdCiAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9ICcnCiAgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHNlbGYuQ09NTUFORAotICAgICAgICBzZWxmLnB1c2goJzI1MCBPaycpCisgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKIAogICAgIGRlZiBzbXRwX0RBVEEoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IHNlbGYuc2Vlbl9ncmVldGluZzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3QnKTsKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBub3Qgc2VsZi5yY3B0dG9zOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IG5lZWQgUkNQVCBjb21tYW5kJykKICAgICAgICAgICAgIHJldHVybgpAQCAtNDIxLDE1ICs1NjYsMjAgQEAKICAgICAgICAgc2VsZi5zZXRfdGVybWluYXRvcihiJ1xyXG4uXHJcbicpCiAgICAgICAgIHNlbGYucHVzaCgnMzU0IEVuZCBkYXRhIHdpdGggPENSPjxMRj4uPENSPjxMRj4nKQogCisgICAgIyBDb21tYW5kcyB0aGF0IGhhdmUgbm90IGJlZW4gaW1wbGVtZW50ZWQKKyAgICBkZWYgc210cF9FWFBOKHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnNTAyIEVYUE4gbm90IGltcGxlbWVudGVkJykKIAotDAorCiBjbGFzcyBTTVRQU2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIpOgogICAgICMgU01UUENoYW5uZWwgY2xhc3MgdG8gdXNlIGZvciBtYW5hZ2luZyBjbGllbnQgY29ubmVjdGlvbnMKICAgICBjaGFubmVsX2NsYXNzID0gU01UUENoYW5uZWwKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbGFkZHIsIHJlbW90ZWFkZHIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbGFkZHIsIHJlbW90ZWFkZHIsCisgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCk6CiAgICAgICAgIHNlbGYuX2xvY2FsYWRkciA9IGxvY2FsYWRkcgogICAgICAgICBzZWxmLl9yZW1vdGVhZGRyID0gcmVtb3RlYWRkcgorICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAogICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQpAQCAtNDQ3LDcgKzU5Nyw3IEBACiAKICAgICBkZWYgaGFuZGxlX2FjY2VwdGVkKHNlbGYsIGNvbm4sIGFkZHIpOgogICAgICAgICBwcmludCgnSW5jb21pbmcgY29ubmVjdGlvbiBmcm9tICVzJyAlIHJlcHIoYWRkciksIGZpbGU9REVCVUdTVFJFQU0pCi0gICAgICAgIGNoYW5uZWwgPSBzZWxmLmNoYW5uZWxfY2xhc3Moc2VsZiwgY29ubiwgYWRkcikKKyAgICAgICAgY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcyhzZWxmLCBjb25uLCBhZGRyLCBzZWxmLmRhdGFfc2l6ZV9saW1pdCkKIAogICAgICMgQVBJIGZvciAiZG9pbmcgc29tZXRoaW5nIHVzZWZ1bCB3aXRoIHRoZSBtZXNzYWdlIgogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgpAQCAtNDc1LDcgKzYyNSw2IEBACiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogCi0MCiBjbGFzcyBEZWJ1Z2dpbmdTZXJ2ZXIoU01UUFNlcnZlcik6CiAgICAgIyBEbyBzb21ldGhpbmcgd2l0aCB0aGUgZ2F0aGVyZWQgbWVzc2FnZQogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgpAQCAtNDkxLDcgKzY0MCw2IEBACiAgICAgICAgIHByaW50KCctLS0tLS0tLS0tLS0gRU5EIE1FU1NBR0UgLS0tLS0tLS0tLS0tJykKIAogCi0MCiBjbGFzcyBQdXJlUHJveHkoU01UUFNlcnZlcik6CiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CiAgICAgICAgIGxpbmVzID0gZGF0YS5zcGxpdCgnXG4nKQpAQCAtNTMyLDcgKzY4MCw2IEBACiAgICAgICAgIHJldHVybiByZWZ1c2VkCiAKIAotDAogY2xhc3MgTWFpbG1hblByb3h5KFB1cmVQcm94eSk6CiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CiAgICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCkBAIC02MTEsMTkgKzc1OCwxOCBAQAogICAgICAgICAgICAgICAgIG1zZy5FbnF1ZXVlKG1saXN0LCB0b3JlcXVlc3Q9MSkKIAogCi0MCiBjbGFzcyBPcHRpb25zOgogICAgIHNldHVpZCA9IDEKICAgICBjbGFzc25hbWUgPSAnUHVyZVByb3h5JworICAgIHNpemVfbGltaXQgPSBOb25lCiAKIAotDAogZGVmIHBhcnNlYXJncygpOgogICAgIGdsb2JhbCBERUJVR1NUUkVBTQogICAgIHRyeToKICAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoCi0gICAgICAgICAgICBzeXMuYXJndlsxOl0sICduVmhjOmQnLAotICAgICAgICAgICAgWydjbGFzcz0nLCAnbm9zZXR1aWQnLCAndmVyc2lvbicsICdoZWxwJywgJ2RlYnVnJ10pCisgICAgICAgICAgICBzeXMuYXJndlsxOl0sICduVmhjOnM6ZCcsCisgICAgICAgICAgICBbJ2NsYXNzPScsICdub3NldHVpZCcsICd2ZXJzaW9uJywgJ2hlbHAnLCAnc2l6ZT0nLCAnZGVidWcnXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIGU6CiAgICAgICAgIHVzYWdlKDEsIGUpCiAKQEAgLTY0MCw2ICs3ODYsMTMgQEAKICAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NuYW1lID0gYXJnCiAgICAgICAgIGVsaWYgb3B0IGluICgnLWQnLCAnLS1kZWJ1ZycpOgogICAgICAgICAgICAgREVCVUdTVFJFQU0gPSBzeXMuc3RkZXJyCisgICAgICAgIGVsaWYgb3B0IGluICgnLXMnLCAnLS1zaXplJyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW50X3NpemUgPSBpbnQoYXJnKQorICAgICAgICAgICAgICAgIG9wdGlvbnMuc2l6ZV9saW1pdCA9IGludF9zaXplCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcHJpbnQoJ0ludmFsaWQgc2l6ZTogJyArIGFyZywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAKICAgICAjIHBhcnNlIHRoZSByZXN0IG9mIHRoZSBhcmd1bWVudHMKICAgICBpZiBsZW4oYXJncykgPCAxOgpAQCAtNjc0LDcgKzgyNyw2IEBACiAgICAgcmV0dXJuIG9wdGlvbnMKIAogCi0MCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG9wdGlvbnMgPSBwYXJzZWFyZ3MoKQogICAgICMgQmVjb21lIG5vYm9keQpAQCAtNjg3LDcgKzgzOSw4IEBACiAgICAgICAgIGltcG9ydCBfX21haW5fXyBhcyBtb2QKICAgICBjbGFzc18gPSBnZXRhdHRyKG1vZCwgY2xhc3NuYW1lKQogICAgIHByb3h5ID0gY2xhc3NfKChvcHRpb25zLmxvY2FsaG9zdCwgb3B0aW9ucy5sb2NhbHBvcnQpLAotICAgICAgICAgICAgICAgICAgIChvcHRpb25zLnJlbW90ZWhvc3QsIG9wdGlvbnMucmVtb3RlcG9ydCkpCisgICAgICAgICAgICAgICAgICAgKG9wdGlvbnMucmVtb3RlaG9zdCwgb3B0aW9ucy5yZW1vdGVwb3J0KSwKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNpemVfbGltaXQpCiAgICAgaWYgb3B0aW9ucy5zZXR1aWQ6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBwd2QKZGlmZiAtLWdpdCBhL0xpYi9zbXRwbGliLnB5IGIvTGliL3NtdHBsaWIucHkKaW5kZXggZmJlZjk2ZS4uZDM3YjBlMiAxMDA2NDQKLS0tIGEvTGliL3NtdHBsaWIucHkKKysrIGIvTGliL3NtdHBsaWIucHkKQEAgLTEzMywyNCArMTMzLDE4IEBACiAgICAgY29tYmluYXRpb24gcHJvdmlkZWQuCiAgICAgIiIiCiAKLWRlZiBxdW90ZWFkZHIoYWRkcik6CitkZWYgcXVvdGVhZGRyKGFkZHJzdHJpbmcpOgogICAgICIiIlF1b3RlIGEgc3Vic2V0IG9mIHRoZSBlbWFpbCBhZGRyZXNzZXMgZGVmaW5lZCBieSBSRkMgODIxLgogCiAgICAgU2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGFueXRoaW5nIGVtYWlsLnV0aWxzLnBhcnNlYWRkciBjYW4gaGFuZGxlLgogICAgICIiIgotICAgIG0gPSAoTm9uZSwgTm9uZSkKLSAgICB0cnk6Ci0gICAgICAgIG0gPSBlbWFpbC51dGlscy5wYXJzZWFkZHIoYWRkcilbMV0KLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBpZiBtID09IChOb25lLCBOb25lKTogICMgSW5kaWNhdGVzIHBhcnNlIGZhaWx1cmUgb3IgQXR0cmlidXRlRXJyb3IKLSAgICAgICAgIyBzb21ldGhpbmcgd2VpcmQgaGVyZS4uIHB1bnQgLWRkbQotICAgICAgICByZXR1cm4gIjwlcz4iICUgYWRkcgotICAgIGVsaWYgbSBpcyBOb25lOgotICAgICAgICAjIHRoZSBzZW5kZXIgd2FudHMgYW4gZW1wdHkgcmV0dXJuIGFkZHJlc3MKLSAgICAgICAgcmV0dXJuICI8PiIKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gIjwlcz4iICUgbQorICAgIGRpc3BsYXluYW1lLCBhZGRyID0gZW1haWwudXRpbHMucGFyc2VhZGRyKGFkZHJzdHJpbmcpCisgICAgaWYgKGRpc3BsYXluYW1lLCBhZGRyKSA9PSAoJycsICcnKToKKyAgICAgICAgIyBwYXJzZWFkZHIgY291bGRuJ3QgcGFyc2UgaXQsIHVzZSBpdCBhcyBpcyBhbmQgaG9wZSBmb3IgdGhlIGJlc3QuCisgICAgICAgIGlmIGFkZHJzdHJpbmcuc3RyaXAoKS5zdGFydHN3aXRoKCc8Jyk6CisgICAgICAgICAgICByZXR1cm4gYWRkcnN0cmluZworICAgICAgICByZXR1cm4gIjwlcz4iICUgYWRkcnN0cmluZworICAgIHJldHVybiAiPCVzPiIgJSBhZGRyCiAKIGRlZiBfYWRkcl9vbmx5KGFkZHJzdHJpbmcpOgogICAgIGRpc3BsYXluYW1lLCBhZGRyID0gZW1haWwudXRpbHMucGFyc2VhZGRyKGFkZHJzdHJpbmcpCkBAIC0xODAsMjcgKzE3NCw2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgX2hhdmVfc3NsID0gRmFsc2UKIGVsc2U6Ci0gICAgY2xhc3MgU1NMRmFrZUZpbGU6Ci0gICAgICAgICIiIkEgZmFrZSBmaWxlIGxpa2Ugb2JqZWN0IHRoYXQgcmVhbGx5IHdyYXBzIGEgU1NMT2JqZWN0LgotCi0gICAgICAgIEl0IG9ubHkgc3VwcG9ydHMgd2hhdCBpcyBuZWVkZWQgaW4gc210cGxpYi4KLSAgICAgICAgIiIiCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzc2xvYmopOgotICAgICAgICAgICAgc2VsZi5zc2xvYmogPSBzc2xvYmoKLQotICAgICAgICBkZWYgcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgICAgICBzdHIgPSBiIiIKLSAgICAgICAgICAgIGNociA9IE5vbmUKLSAgICAgICAgICAgIHdoaWxlIGNociAhPSBiIlxuIjoKLSAgICAgICAgICAgICAgICBjaHIgPSBzZWxmLnNzbG9iai5yZWFkKDEpCi0gICAgICAgICAgICAgICAgaWYgbm90IGNocjoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBzdHIgKz0gY2hyCi0gICAgICAgICAgICByZXR1cm4gc3RyCi0KLSAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICAgICAgcGFzcwotCiAgICAgX2hhdmVfc3NsID0gVHJ1ZQogCiAKQEAgLTI0Miw3ICsyMTUsOCBAQAogICAgIGRlZmF1bHRfcG9ydCA9IFNNVFBfUE9SVAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgorICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBuZXcgaW5zdGFuY2UuCiAKICAgICAgICAgSWYgc3BlY2lmaWVkLCBgaG9zdCcgaXMgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IHRvIHdoaWNoIHRvCkBAIC0yNTAsMTEgKzIyNCwxNiBAQAogICAgICAgICBCeSBkZWZhdWx0LCBzbXRwbGliLlNNVFBfUE9SVCBpcyB1c2VkLiAgQW4gU01UUENvbm5lY3RFcnJvciBpcyByYWlzZWQKICAgICAgICAgaWYgdGhlIHNwZWNpZmllZCBgaG9zdCcgZG9lc24ndCByZXNwb25kIGNvcnJlY3RseS4gIElmIHNwZWNpZmllZCwKICAgICAgICAgYGxvY2FsX2hvc3RuYW1lYCBpcyB1c2VkIGFzIHRoZSBGUUROIG9mIHRoZSBsb2NhbCBob3N0LiAgQnkgZGVmYXVsdCwKLSAgICAgICAgdGhlIGxvY2FsIGhvc3RuYW1lIGlzIGZvdW5kIHVzaW5nIHNvY2tldC5nZXRmcWRuKCkuCisgICAgICAgIHRoZSBsb2NhbCBob3N0bmFtZSBpcyBmb3VuZCB1c2luZyBzb2NrZXQuZ2V0ZnFkbigpLiBUaGUKKyAgICAgICAgYHNvdXJjZV9hZGRyZXNzYCBwYXJhbWV0ZXIgdGFrZXMgYSAyLXR1cGxlIChob3N0LCBwb3J0KSBmb3IgdGhlIHNvY2tldAorICAgICAgICB0byBiaW5kIHRvIGFzIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUgY29ubmVjdGluZy4gSWYgdGhlIGhvc3QgaXMgJycKKyAgICAgICAgYW5kIHBvcnQgaXMgMCwgdGhlIE9TIGRlZmF1bHQgYmVoYXZpb3Igd2lsbCBiZSB1c2VkLgogCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIHNlbGYuZXNtdHBfZmVhdHVyZXMgPSB7fQorICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzID0gc291cmNlX2FkZHJlc3MKKwogICAgICAgICBpZiBob3N0OgogICAgICAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmNvbm5lY3QoaG9zdCwgcG9ydCkKICAgICAgICAgICAgIGlmIGNvZGUgIT0gMjIwOgpAQCAtMjc3LDYgKzI1NiwxOSBAQAogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9ob3N0bmFtZSA9ICdbJXNdJyAlIGFkZHIKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb2RlLCBtZXNzYWdlID0gc2VsZi5kb2NtZCgiUVVJVCIpCisgICAgICAgICAgICBpZiBjb2RlICE9IDIyMToKKyAgICAgICAgICAgICAgICByYWlzZSBTTVRQUmVzcG9uc2VFeGNlcHRpb24oY29kZSwgbWVzc2FnZSkKKyAgICAgICAgZXhjZXB0IFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQ6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKwogICAgIGRlZiBzZXRfZGVidWdsZXZlbChzZWxmLCBkZWJ1Z2xldmVsKToKICAgICAgICAgIiIiU2V0IHRoZSBkZWJ1ZyBvdXRwdXQgbGV2ZWwuCiAKQEAgLTI5MCwxMCArMjgyLDEyIEBACiAgICAgICAgICMgVGhpcyBtYWtlcyBpdCBzaW1wbGVyIGZvciBTTVRQX1NTTCB0byB1c2UgdGhlIFNNVFAgY29ubmVjdCBjb2RlCiAgICAgICAgICMgYW5kIGp1c3QgYWx0ZXIgdGhlIHNvY2tldCBjb25uZWN0aW9uIGJpdC4KICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCi0gICAgICAgIHJldHVybiBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0KQorICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6IHRvJywgKGhvc3QsIHBvcnQpLCBzZWxmLnNvdXJjZV9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zdGRlcnIpCisgICAgICAgIHJldHVybiBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MpCiAKLSAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PSdsb2NhbGhvc3QnLCBwb3J0PTApOgorICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9MCwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICIiIkNvbm5lY3QgdG8gYSBob3N0IG9uIGEgZ2l2ZW4gcG9ydC4KIAogICAgICAgICBJZiB0aGUgaG9zdG5hbWUgZW5kcyB3aXRoIGEgY29sb24gKGA6JykgZm9sbG93ZWQgYnkgYSBudW1iZXIsIGFuZApAQCAtMzA0LDYgKzI5OCwxMCBAQAogICAgICAgICBzcGVjaWZpZWQgZHVyaW5nIGluc3RhbnRpYXRpb24uCiAKICAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc291cmNlX2FkZHJlc3M6CisgICAgICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzID0gc291cmNlX2FkZHJlc3MKKwogICAgICAgICBpZiBub3QgcG9ydCBhbmQgKGhvc3QuZmluZCgnOicpID09IGhvc3QucmZpbmQoJzonKSk6CiAgICAgICAgICAgICBpID0gaG9zdC5yZmluZCgnOicpCiAgICAgICAgICAgICBpZiBpID49IDA6CkBAIC0zMTcsNiArMzE1LDcgQEAKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCiAgICAgICAgIHNlbGYuc29jayA9IHNlbGYuX2dldF9zb2NrZXQoaG9zdCwgcG9ydCwgc2VsZi50aW1lb3V0KQorICAgICAgICBzZWxmLmZpbGUgPSBOb25lCiAgICAgICAgIChjb2RlLCBtc2cpID0gc2VsZi5nZXRyZXBseSgpCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICBwcmludCgiY29ubmVjdDoiLCBtc2csIGZpbGU9c3RkZXJyKQpAQCAtMzg4LDcgKzM4Nyw4IEBACiAKICAgICAgICAgZXJybXNnID0gYiJcbiIuam9pbihyZXNwKQogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoJ3JlcGx5OiByZXRjb2RlICglcyk7IE1zZzogJXMnICUgKGVycmNvZGUsIGVycm1zZyksIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgcHJpbnQoJ3JlcGx5OiByZXRjb2RlICglcyk7IE1zZzogJXMnICUgKGVycmNvZGUsIGVycm1zZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zdGRlcnIpCiAgICAgICAgIHJldHVybiBlcnJjb2RlLCBlcnJtc2cKIAogICAgIGRlZiBkb2NtZChzZWxmLCBjbWQsIGFyZ3M9IiIpOgpAQCAtNjMyLDcgKzYzMiw3IEBACiAgICAgICAgICMgV2UgY291bGQgbm90IGxvZ2luIHN1Y2Vzc2Z1bGx5LiBSZXR1cm4gcmVzdWx0IG9mIGxhc3QgYXR0ZW1wdC4KICAgICAgICAgcmFpc2UgU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IoY29kZSwgcmVzcCkKIAotICAgIGRlZiBzdGFydHRscyhzZWxmLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUpOgorICAgIGRlZiBzdGFydHRscyhzZWxmLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgICIiIlB1dHMgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIFNNVFAgc2VydmVyIGludG8gVExTIG1vZGUuCiAKICAgICAgICAgSWYgdGhlcmUgaGFzIGJlZW4gbm8gcHJldmlvdXMgRUhMTyBvciBIRUxPIGNvbW1hbmQgdGhpcyBzZXNzaW9uLCB0aGlzCkBAIC02NTYsOCArNjU2LDE3IEBACiAgICAgICAgIGlmIHJlc3AgPT0gMjIwOgogICAgICAgICAgICAgaWYgbm90IF9oYXZlX3NzbDoKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIk5vIFNTTCBzdXBwb3J0IGluY2x1ZGVkIGluIHRoaXMgUHl0aG9uIikKLSAgICAgICAgICAgIHNlbGYuc29jayA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2ssIGtleWZpbGUsIGNlcnRmaWxlKQotICAgICAgICAgICAgc2VsZi5maWxlID0gU1NMRmFrZUZpbGUoc2VsZi5zb2NrKQorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBrZXlmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2sgPSBjb250ZXh0LndyYXBfc29ja2V0KHNlbGYuc29jaykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29jaywga2V5ZmlsZSwgY2VydGZpbGUpCisgICAgICAgICAgICBzZWxmLmZpbGUgPSBOb25lCiAgICAgICAgICAgICAjIFJGQyAzMjA3OgogICAgICAgICAgICAgIyBUaGUgY2xpZW50IE1VU1QgZGlzY2FyZCBhbnkga25vd2xlZGdlIG9idGFpbmVkIGZyb20KICAgICAgICAgICAgICMgdGhlIHNlcnZlciwgc3VjaCBhcyB0aGUgbGlzdCBvZiBTTVRQIHNlcnZpY2UgZXh0ZW5zaW9ucywKQEAgLTc4Niw3ICs3OTUsOCBAQAogICAgICAgICAjIFRPRE8gaW1wbGVtZW50IGhldXJpc3RpY3MgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgUmVzZW50LSogYmxvY2sgd2l0aCBhbgogICAgICAgICAjIG9wdGlvbiBhbGxvd2luZyB0aGUgdXNlciB0byBlbmFibGUgdGhlIGhldXJpc3RpY3MuICAoSXQgc2hvdWxkIGJlCiAgICAgICAgICMgcG9zc2libGUgdG8gZ3Vlc3MgY29ycmVjdGx5IGFsbW9zdCBhbGwgb2YgdGhlIHRpbWUuKQotICAgICAgICByZXNlbnQgPW1zZy5nZXRfYWxsKCdSZXNlbnQtRGF0ZScpCisKKyAgICAgICAgcmVzZW50ID0gbXNnLmdldF9hbGwoJ1Jlc2VudC1EYXRlJykKICAgICAgICAgaWYgcmVzZW50IGlzIE5vbmU6CiAgICAgICAgICAgICBoZWFkZXJfcHJlZml4ID0gJycKICAgICAgICAgZWxpZiBsZW4ocmVzZW50KSA9PSAxOgpAQCAtNzk1LDEzICs4MDUsMTMgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1lc3NhZ2UgaGFzIG1vcmUgdGhhbiBvbmUgJ1Jlc2VudC0nIGhlYWRlciBibG9jayIpCiAgICAgICAgIGlmIGZyb21fYWRkciBpcyBOb25lOgogICAgICAgICAgICAgIyBQcmVmZXIgdGhlIHNlbmRlciBmaWVsZCBwZXIgUkZDIDI4MjI6My42LjIuCi0gICAgICAgICAgICBmcm9tX2FkZHIgPSAobXNnW2hlYWRlcl9wcmVmaXgrJ1NlbmRlciddCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGVyX3ByZWZpeCsnU2VuZGVyJykgaW4gbXNnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG1zZ1toZWFkZXJfcHJlZml4KydGcm9tJ10pCisgICAgICAgICAgICBmcm9tX2FkZHIgPSAobXNnW2hlYWRlcl9wcmVmaXggKyAnU2VuZGVyJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfcHJlZml4ICsgJ1NlbmRlcicpIGluIG1zZworICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBtc2dbaGVhZGVyX3ByZWZpeCArICdGcm9tJ10pCiAgICAgICAgIGlmIHRvX2FkZHJzIGlzIE5vbmU6Ci0gICAgICAgICAgICBhZGRyX2ZpZWxkcyA9IFtmIGZvciBmIGluIChtc2dbaGVhZGVyX3ByZWZpeCsnVG8nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4KydCY2MnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4KydDYyddKSBpZiBmIGlzIG5vdCBOb25lXQorICAgICAgICAgICAgYWRkcl9maWVsZHMgPSBbZiBmb3IgZiBpbiAobXNnW2hlYWRlcl9wcmVmaXggKyAnVG8nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0JjYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXggKyAnQ2MnXSkgaWYgZiBpcyBub3QgTm9uZV0KICAgICAgICAgICAgIHRvX2FkZHJzID0gW2FbMV0gZm9yIGEgaW4gZW1haWwudXRpbHMuZ2V0YWRkcmVzc2VzKGFkZHJfZmllbGRzKV0KICAgICAgICAgIyBNYWtlIGEgbG9jYWwgY29weSBzbyB3ZSBjYW4gZGVsZXRlIHRoZSBiY2MgaGVhZGVycy4KICAgICAgICAgbXNnX2NvcHkgPSBjb3B5LmNvcHkobXNnKQpAQCAtODM1LDI2ICs4NDUsNDEgQEAKICAgICAgICAgIiIiIFRoaXMgaXMgYSBzdWJjbGFzcyBkZXJpdmVkIGZyb20gU01UUCB0aGF0IGNvbm5lY3RzIG92ZXIgYW4gU1NMIGVuY3J5cHRlZAogICAgICAgICBzb2NrZXQgKHRvIHVzZSB0aGlzIGNsYXNzIHlvdSBuZWVkIGEgc29ja2V0IG1vZHVsZSB0aGF0IHdhcyBjb21waWxlZCB3aXRoIFNTTAogICAgICAgICBzdXBwb3J0KS4gSWYgaG9zdCBpcyBub3Qgc3BlY2lmaWVkLCAnJyAodGhlIGxvY2FsIGhvc3QpIGlzIHVzZWQuIElmIHBvcnQgaXMKLSAgICAgICAgb21pdHRlZCwgdGhlIHN0YW5kYXJkIFNNVFAtb3Zlci1TU0wgcG9ydCAoNDY1KSBpcyB1c2VkLiBrZXlmaWxlIGFuZCBjZXJ0ZmlsZQorICAgICAgICBvbWl0dGVkLCB0aGUgc3RhbmRhcmQgU01UUC1vdmVyLVNTTCBwb3J0ICg0NjUpIGlzIHVzZWQuIFRoZSBvcHRpb25hbAorICAgICAgICBzb3VyY2VfYWRkcmVzcyB0YWtlcyBhIHR3by10dXBsZSAoaG9zdCxwb3J0KSBmb3Igc29ja2V0IHRvIGJpbmQgdG8uIGtleWZpbGUgYW5kIGNlcnRmaWxlCiAgICAgICAgIGFyZSBhbHNvIG9wdGlvbmFsIC0gdGhleSBjYW4gY29udGFpbiBhIFBFTSBmb3JtYXR0ZWQgcHJpdmF0ZSBrZXkgYW5kCi0gICAgICAgIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgZm9yIHRoZSBTU0wgY29ubmVjdGlvbi4KKyAgICAgICAgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLiBjb250ZXh0IGFsc28gb3B0aW9uYWwsIGNhbiBjb250YWluCisgICAgICAgIGEgU1NMQ29udGV4dCwgYW5kIGlzIGFuIGFsdGVybmF0aXZlIHRvIGtleWZpbGUgYW5kIGNlcnRmaWxlOyBJZiBpdCBpcyBzcGVjaWZpZWQgYm90aAorICAgICAgICBrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBtdXN0IGJlIE5vbmUuCiAgICAgICAgICIiIgogCiAgICAgICAgIGRlZmF1bHRfcG9ydCA9IFNNVFBfU1NMX1BPUlQKIAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgorICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCisgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBrZXlmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCi0gICAgICAgICAgICBTTVRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGxvY2FsX2hvc3RuYW1lLCB0aW1lb3V0KQorICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAorICAgICAgICAgICAgU01UUC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCBsb2NhbF9ob3N0bmFtZSwgdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3MpCiAKICAgICAgICAgZGVmIF9nZXRfc29ja2V0KHNlbGYsIGhvc3QsIHBvcnQsIHRpbWVvdXQpOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgICAgICBwcmludCgnY29ubmVjdDonLCAoaG9zdCwgcG9ydCksIGZpbGU9c3RkZXJyKQotICAgICAgICAgICAgbmV3X3NvY2tldCA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQpCi0gICAgICAgICAgICBuZXdfc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KG5ld19zb2NrZXQsIHNlbGYua2V5ZmlsZSwgc2VsZi5jZXJ0ZmlsZSkKLSAgICAgICAgICAgIHNlbGYuZmlsZSA9IFNTTEZha2VGaWxlKG5ld19zb2NrZXQpCisgICAgICAgICAgICBuZXdfc29ja2V0ID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcykKKyAgICAgICAgICAgIGlmIHNlbGYuY29udGV4dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBuZXdfc29ja2V0ID0gc2VsZi5jb250ZXh0LndyYXBfc29ja2V0KG5ld19zb2NrZXQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQobmV3X3NvY2tldCwgc2VsZi5rZXlmaWxlLCBzZWxmLmNlcnRmaWxlKQogICAgICAgICAgICAgcmV0dXJuIG5ld19zb2NrZXQKIAogICAgIF9fYWxsX18uYXBwZW5kKCJTTVRQX1NTTCIpCkBAIC04NzksMTggKzkwNCwyMSBAQAogCiAgICAgZWhsb19tc2cgPSAibGhsbyIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUxNVFBfUE9SVCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9TE1UUF9QT1JULCBsb2NhbF9ob3N0bmFtZT1Ob25lLAorICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBuZXcgaW5zdGFuY2UuIiIiCi0gICAgICAgIFNNVFAuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgbG9jYWxfaG9zdG5hbWUpCisgICAgICAgIFNNVFAuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgbG9jYWxfaG9zdG5hbWU9bG9jYWxfaG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9c291cmNlX2FkZHJlc3MpCiAKLSAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PSdsb2NhbGhvc3QnLCBwb3J0PTApOgorICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9MCwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICIiIkNvbm5lY3QgdG8gdGhlIExNVFAgZGFlbW9uLCBvbiBlaXRoZXIgYSBVbml4IG9yIGEgVENQIHNvY2tldC4iIiIKICAgICAgICAgaWYgaG9zdFswXSAhPSAnLyc6Ci0gICAgICAgICAgICByZXR1cm4gU01UUC5jb25uZWN0KHNlbGYsIGhvc3QsIHBvcnQpCisgICAgICAgICAgICByZXR1cm4gU01UUC5jb25uZWN0KHNlbGYsIGhvc3QsIHBvcnQsIHNvdXJjZV9hZGRyZXNzPXNvdXJjZV9hZGRyZXNzKQogCiAgICAgICAgICMgSGFuZGxlIFVuaXgtZG9tYWluIHNvY2tldHMuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAgICAgIHNlbGYuc29jay5jb25uZWN0KGhvc3QpCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXQucHkgYi9MaWIvc29ja2V0LnB5CmluZGV4IGE5M2NkMTEuLjEzNzhiMGYgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXQucHkKKysrIGIvTGliL3NvY2tldC5weQpAQCAtMTIsNiArMTIsNyBAQAogc29ja2V0KCkgLS0gY3JlYXRlIGEgbmV3IHNvY2tldCBvYmplY3QKIHNvY2tldHBhaXIoKSAtLSBjcmVhdGUgYSBwYWlyIG9mIG5ldyBzb2NrZXQgb2JqZWN0cyBbKl0KIGZyb21mZCgpIC0tIGNyZWF0ZSBhIHNvY2tldCBvYmplY3QgZnJvbSBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBbKl0KK2Zyb21zaGFyZSgpIC0tIGNyZWF0ZSBhIHNvY2tldCBvYmplY3QgZnJvbSBkYXRhIHJlY2VpdmVkIGZyb20gc29ja2V0LnNoYXJlKCkgWypdCiBnZXRob3N0bmFtZSgpIC0tIHJldHVybiB0aGUgY3VycmVudCBob3N0bmFtZQogZ2V0aG9zdGJ5bmFtZSgpIC0tIG1hcCBhIGhvc3RuYW1lIHRvIGl0cyBJUCBudW1iZXIKIGdldGhvc3RieWFkZHIoKSAtLSBtYXAgYW4gSVAgbnVtYmVyIG9yIGhvc3RuYW1lIHRvIEROUyBpbmZvCkBAIC01Myw3ICs1NCw2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZXJybm8gPSBOb25lCiBFQkFERiA9IGdldGF0dHIoZXJybm8sICdFQkFERicsIDkpCi1FSU5UUiA9IGdldGF0dHIoZXJybm8sICdFSU5UUicsIDQpCiBFQUdBSU4gPSBnZXRhdHRyKGVycm5vLCAnRUFHQUlOJywgMTEpCiBFV09VTERCTE9DSyA9IGdldGF0dHIoZXJybm8sICdFV09VTERCTE9DSycsIDExKQogCkBAIC0xMTIsNiArMTEyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1s3Ol0pCiAgICAgICAgIHJldHVybiBzCiAKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBzZXJpYWxpemUgc29ja2V0IG9iamVjdCIpCisKICAgICBkZWYgZHVwKHNlbGYpOgogICAgICAgICAiIiJkdXAoKSAtPiBzb2NrZXQgb2JqZWN0CiAKQEAgLTIwNyw3ICsyMTAsNiBAQAogICAgICAgICBzZWxmLl9jbG9zZWQgPSBUcnVlCiAgICAgICAgIHJldHVybiBzdXBlcigpLmRldGFjaCgpCiAKLQogZGVmIGZyb21mZChmZCwgZmFtaWx5LCB0eXBlLCBwcm90bz0wKToKICAgICAiIiIgZnJvbWZkKGZkLCBmYW1pbHksIHR5cGVbLCBwcm90b10pIC0+IHNvY2tldCBvYmplY3QKIApAQCAtMjE3LDYgKzIxOSwxNCBAQAogICAgIG5mZCA9IGR1cChmZCkKICAgICByZXR1cm4gc29ja2V0KGZhbWlseSwgdHlwZSwgcHJvdG8sIG5mZCkKIAoraWYgaGFzYXR0cihfc29ja2V0LnNvY2tldCwgInNoYXJlIik6CisgICAgZGVmIGZyb21zaGFyZShpbmZvKToKKyAgICAgICAgIiIiIGZyb21zaGFyZShpbmZvKSAtPiBzb2NrZXQgb2JqZWN0CisKKyAgICAgICAgQ3JlYXRlIGEgc29ja2V0IG9iamVjdCBmcm9tIGEgdGhlIGJ5dGVzIG9iamVjdCByZXR1cm5lZCBieQorICAgICAgICBzb2NrZXQuc2hhcmUocGlkKS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzb2NrZXQoMCwgMCwgMCwgaW5mbykKIAogaWYgaGFzYXR0cihfc29ja2V0LCAic29ja2V0cGFpciIpOgogCkBAIC0yODgsMTEgKzI5OCwxMCBAQAogICAgICAgICAgICAgZXhjZXB0IHRpbWVvdXQ6CiAgICAgICAgICAgICAgICAgc2VsZi5fdGltZW91dF9vY2N1cnJlZCA9IFRydWUKICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGV4Y2VwdCBlcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIG4gPSBlLmFyZ3NbMF0KLSAgICAgICAgICAgICAgICBpZiBuID09IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG4gaW4gX2Jsb2NraW5nX2Vycm5vczoKKyAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gaW4gX2Jsb2NraW5nX2Vycm5vczoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICByYWlzZQogCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0c2VydmVyLnB5IGIvTGliL3NvY2tldHNlcnZlci5weQppbmRleCBhZGY5ZjM4Li4yNjFlMjhlIDEwMDY0NAotLS0gYS9MaWIvc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKQEAgLTE1Myw4ICsxNTMsOCBAQAogICAgIHdoaWxlIFRydWU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzKQotICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHNlbGVjdC5lcnJvcikgYXMgZToKLSAgICAgICAgICAgIGlmIGUuYXJnc1swXSAhPSBlcnJuby5FSU5UUjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVFI6CiAgICAgICAgICAgICAgICAgcmFpc2UKIAogY2xhc3MgQmFzZVNlcnZlcjoKQEAgLTE4MCw2ICsxODAsNyBAQAogICAgIC0gcHJvY2Vzc19yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgIC0gc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQogICAgIC0gY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQorICAgIC0gc2VydmljZV9hY3Rpb25zKCkKICAgICAtIGhhbmRsZV9lcnJvcigpCiAKICAgICBNZXRob2RzIGZvciBkZXJpdmVkIGNsYXNzZXM6CkBAIC0yMzYsNiArMjM3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxfaW50ZXJ2YWwpCiAgICAgICAgICAgICAgICAgaWYgc2VsZiBpbiByOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKCkKKworICAgICAgICAgICAgICAgIHNlbGYuc2VydmljZV9hY3Rpb25zKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX19zaHV0ZG93bl9yZXF1ZXN0ID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuX19pc19zaHV0X2Rvd24uc2V0KCkKQEAgLTI1MCw2ICsyNTMsMTQgQEAKICAgICAgICAgc2VsZi5fX3NodXRkb3duX3JlcXVlc3QgPSBUcnVlCiAgICAgICAgIHNlbGYuX19pc19zaHV0X2Rvd24ud2FpdCgpCiAKKyAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgorICAgICAgICAiIiJDYWxsZWQgYnkgdGhlIHNlcnZlX2ZvcmV2ZXIoKSBsb29wLgorCisgICAgICAgIE1heSBiZSBvdmVycmlkZGVuIGJ5IGEgc3ViY2xhc3MgLyBNaXhpbiB0byBpbXBsZW1lbnQgYW55IGNvZGUgdGhhdAorICAgICAgICBuZWVkcyB0byBiZSBydW4gZHVyaW5nIHRoZSBsb29wLgorICAgICAgICAiIiIKKyAgICAgICAgcGFzcworCiAgICAgIyBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBoYW5kbGluZywgZ2V0dGluZywgcHJvY2Vzc2luZyBhbmQKICAgICAjIGZpbmlzaGluZyBhIHJlcXVlc3QgaXMgZmFpcmx5IGFyYml0cmFyeS4gIFJlbWVtYmVyOgogICAgICMKQEAgLTU1MCw5ICs1NjEsMTUgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCiAKKyAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgorICAgICAgICAiIiJDb2xsZWN0IHRoZSB6b21iaWUgY2hpbGQgcHJvY2Vzc2VzIHJlZ3VsYXJseSBpbiB0aGUgRm9ya2luZ01peGluLgorCisgICAgICAgIHNlcnZpY2VfYWN0aW9ucyBpcyBjYWxsZWQgaW4gdGhlIEJhc2VTZXJ2ZXIncyBzZXJ2ZV9mb3J2ZXIgbG9vcC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCisKICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgIiIiRm9yayBhIG5ldyBzdWJwcm9jZXNzIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuIiIiCi0gICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCiAgICAgICAgIHBpZCA9IG9zLmZvcmsoKQogICAgICAgICBpZiBwaWQ6CiAgICAgICAgICAgICAjIFBhcmVudCBwcm9jZXNzCkBAIC01NjAsNiArNTc3LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbiA9IFtdCiAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5hcHBlbmQocGlkKQogICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQ2hpbGQgcHJvY2Vzcy4KICAgICAgICAgICAgICMgVGhpcyBtdXN0IG5ldmVyIHJldHVybiwgaGVuY2Ugb3MuX2V4aXQoKSEKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CmluZGV4IDIwMmJkMzguLmI3ZWMxYWQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L2RiYXBpLnB5OiB0ZXN0cyBmb3IgREItQVBJIGNvbXBsaWFuY2UKICMKICMgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTAgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CmluZGV4IDdmNmYzNDcuLjllODMzYWUgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC9mYWN0b3J5LnB5OiB0ZXN0cyBmb3IgdGhlIHZhcmlvdXMgZmFjdG9yaWVzIGluIHB5c3FsaXRlCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KQEAgLTE3OCw2ICsxNzgsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocm93WzBdLmVuZHN3aXRoKCJyZWljaCIpLCAiY29sdW1uIG11c3QgY29udGFpbiBvcmlnaW5hbCBkYXRhIikKIAogICAgIGRlZiBDaGVja09wdGltaXplZFVuaWNvZGUoc2VsZik6CisgICAgICAgICMgSW4gcHkzaywgc3RyIG9iamVjdHMgYXJlIGFsd2F5cyByZXR1cm5lZCB3aGVuIHRleHRfZmFjdG9yeQorICAgICAgICAjIGlzIE9wdGltaXplZFVuaWNvZGUKICAgICAgICAgc2VsZi5jb24udGV4dF9mYWN0b3J5ID0gc3FsaXRlLk9wdGltaXplZFVuaWNvZGUKICAgICAgICAgYXVzdHJpYSA9ICLWc3RlcnJlaWNoIgogICAgICAgICBnZXJtYW55ID0gIkRldXRjaGxhbmQiCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2hvb2tzLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9ob29rcy5weQppbmRleCBhOTJlODM4Li4zZGM0NGY2IDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L2hvb2tzLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvaG9va3MucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC9ob29rcy5weTogdGVzdHMgZm9yIHZhcmlvdXMgU1FMaXRlLXNwZWNpZmljIGhvb2tzCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNi0yMDA3IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KQEAgLTE3NiwxMCArMTc2LDYwIEBACiAgICAgICAgIGNvbi5leGVjdXRlKCJzZWxlY3QgMSB1bmlvbiBzZWxlY3QgMiB1bmlvbiBzZWxlY3QgMyIpLmZldGNoYWxsKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3Rpb24sIDAsICJwcm9ncmVzcyBoYW5kbGVyIHdhcyBub3QgY2xlYXJlZCIpCiAKK2NsYXNzIFRyYWNlQ2FsbGJhY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIENoZWNrVHJhY2VDYWxsYmFja1VzZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIHRyYWNlIGNhbGxiYWNrIGlzIGludm9rZWQgb25jZSBpdCBpcyBzZXQuCisgICAgICAgICIiIgorICAgICAgICBjb24gPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQorICAgICAgICB0cmFjZWRfc3RhdGVtZW50cyA9IFtdCisgICAgICAgIGRlZiB0cmFjZShzdGF0ZW1lbnQpOgorICAgICAgICAgICAgdHJhY2VkX3N0YXRlbWVudHMuYXBwZW5kKHN0YXRlbWVudCkKKyAgICAgICAgY29uLnNldF90cmFjZV9jYWxsYmFjayh0cmFjZSkKKyAgICAgICAgY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSBmb28oYSwgYikiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodHJhY2VkX3N0YXRlbWVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoImNyZWF0ZSB0YWJsZSBmb28iIGluIHN0bXQgZm9yIHN0bXQgaW4gdHJhY2VkX3N0YXRlbWVudHMpKQorCisgICAgZGVmIENoZWNrQ2xlYXJUcmFjZUNhbGxiYWNrKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHNldHRpbmcgdGhlIHRyYWNlIGNhbGxiYWNrIHRvIE5vbmUgY2xlYXJzIHRoZSBwcmV2aW91c2x5IHNldCBjYWxsYmFjay4KKyAgICAgICAgIiIiCisgICAgICAgIGNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCisgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzID0gW10KKyAgICAgICAgZGVmIHRyYWNlKHN0YXRlbWVudCk6CisgICAgICAgICAgICB0cmFjZWRfc3RhdGVtZW50cy5hcHBlbmQoc3RhdGVtZW50KQorICAgICAgICBjb24uc2V0X3RyYWNlX2NhbGxiYWNrKHRyYWNlKQorICAgICAgICBjb24uc2V0X3RyYWNlX2NhbGxiYWNrKE5vbmUpCisgICAgICAgIGNvbi5leGVjdXRlKCJjcmVhdGUgdGFibGUgZm9vKGEsIGIpIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0cmFjZWRfc3RhdGVtZW50cywgInRyYWNlIGNhbGxiYWNrIHdhcyBub3QgY2xlYXJlZCIpCisKKyAgICBkZWYgQ2hlY2tVbmljb2RlQ29udGVudChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgc3RhdGVtZW50IGNhbiBjb250YWluIHVuaWNvZGUgbGl0ZXJhbHMuCisgICAgICAgICIiIgorICAgICAgICB1bmljb2RlX3ZhbHVlID0gJ1x4ZjZceGU0XHhmY1x4ZDZceGM0XHhkY1x4ZGZcdTIwYWMnCisgICAgICAgIGNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCisgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzID0gW10KKyAgICAgICAgZGVmIHRyYWNlKHN0YXRlbWVudCk6CisgICAgICAgICAgICB0cmFjZWRfc3RhdGVtZW50cy5hcHBlbmQoc3RhdGVtZW50KQorICAgICAgICBjb24uc2V0X3RyYWNlX2NhbGxiYWNrKHRyYWNlKQorICAgICAgICBjb24uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIGZvbyh4KSIpCisgICAgICAgICMgQ2FuJ3QgZXhlY3V0ZSBib3VuZCBwYXJhbWV0ZXJzIGFzIHRoZWlyIHZhbHVlcyBkb24ndCBhcHBlYXIKKyAgICAgICAgIyBpbiB0cmFjZWQgc3RhdGVtZW50cyBiZWZvcmUgU1FMaXRlIDMuNi4yMQorICAgICAgICAjIChjZi4gaHR0cDovL3d3dy5zcWxpdGUub3JnL2RyYWZ0L3JlbGVhc2Vsb2cvM182XzIxLmh0bWwpCisgICAgICAgIGNvbi5leGVjdXRlKCdpbnNlcnQgaW50byBmb28oeCkgdmFsdWVzICgiJXMiKScgJSB1bmljb2RlX3ZhbHVlKQorICAgICAgICBjb24uY29tbWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueSh1bmljb2RlX3ZhbHVlIGluIHN0bXQgZm9yIHN0bXQgaW4gdHJhY2VkX3N0YXRlbWVudHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIlVuaWNvZGUgZGF0YSAlcyBnYXJibGVkIGluIHRyYWNlIGNhbGxiYWNrOiAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGFzY2lpKHVuaWNvZGVfdmFsdWUpLCAnLCAnLmpvaW4obWFwKGFzY2lpLCB0cmFjZWRfc3RhdGVtZW50cykpKSkKKworCisKIGRlZiBzdWl0ZSgpOgogICAgIGNvbGxhdGlvbl9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShDb2xsYXRpb25UZXN0cywgIkNoZWNrIikKICAgICBwcm9ncmVzc19zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShQcm9ncmVzc1Rlc3RzLCAiQ2hlY2siKQotICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoKGNvbGxhdGlvbl9zdWl0ZSwgcHJvZ3Jlc3Nfc3VpdGUpKQorICAgIHRyYWNlX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFRyYWNlQ2FsbGJhY2tUZXN0cywgIkNoZWNrIikKKyAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKChjb2xsYXRpb25fc3VpdGUsIHByb2dyZXNzX3N1aXRlLCB0cmFjZV9zdWl0ZSkpCiAKIGRlZiB0ZXN0KCk6CiAgICAgcnVubmVyID0gdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIoKQpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9yZWdyZXNzaW9uLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9yZWdyZXNzaW9uLnB5CmluZGV4IGM3NTUxZTMuLjlkN2IyNzYgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvcmVncmVzc2lvbi5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3JlZ3Jlc3Npb24ucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC9yZWdyZXNzaW9uLnB5OiBweXNxbGl0ZSByZWdyZXNzaW9uIHRlc3RzCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNi0yMDEwIEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKaW5kZXggNzBlOTZhMS4uZmViNGZhMSAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC90cmFuc2FjdGlvbnMucHk6IHRlc3RzIHRyYW5zYWN0aW9ucwogIwogIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNyBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weQppbmRleCAyOTQxM2UxLi4zYjRjYjZkIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC90eXBlcy5weTogdGVzdHMgZm9yIHR5cGUgY29udmVyc2lvbiBhbmQgZGV0ZWN0aW9uCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNSBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKF92YWwsIGJ5dGVzKToKICAgICAgICAgICAgICAgICAjIHNxbGl0ZTMgYWx3YXlzIGNhbGxzIF9faW5pdF9fIHdpdGggYSBieXRlcyBjcmVhdGVkIGZyb20gYQogICAgICAgICAgICAgICAgICMgVVRGLTggc3RyaW5nIHdoZW4gX19jb25mb3JtX18gd2FzIHVzZWQgdG8gc3RvcmUgdGhlIG9iamVjdC4KLSAgICAgICAgICAgICAgICBfdmFsID0gX3ZhbC5kZWNvZGUoJ3V0ZjgnKQorICAgICAgICAgICAgICAgIF92YWwgPSBfdmFsLmRlY29kZSgndXRmLTgnKQogICAgICAgICAgICAgc2VsZi52YWwgPSBfdmFsCiAKICAgICAgICAgZGVmIF9fY21wX18oc2VsZiwgb3RoZXIpOgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC91c2VyZnVuY3Rpb25zLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC91c2VyZnVuY3Rpb25zLnB5CmluZGV4IGUwMTM0MWUuLjE0ZjZiNjUgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvdXNlcmZ1bmN0aW9ucy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3VzZXJmdW5jdGlvbnMucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC91c2VyZnVuY3Rpb25zLnB5OiB0ZXN0cyBmb3IgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlcy4KICMKZGlmZiAtLWdpdCBhL0xpYi9zcmVfY29tcGlsZS5weSBiL0xpYi9zcmVfY29tcGlsZS5weQppbmRleCBmNTJlYTAxLi43NWYzYTA5IDEwMDY0NAotLS0gYS9MaWIvc3JlX2NvbXBpbGUucHkKKysrIGIvTGliL3NyZV9jb21waWxlLnB5CkBAIC0zMTgsMTEgKzMxOCwxMyBAQAogICAgICAgICAgICAgICAgICMgWFhYOiBjb3VsZCBleHBhbmQgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICByZXR1cm4gY2hhcnNldCAjIGNhbm5vdCBjb21wcmVzcwogICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAjIG5vbi1CTVAgY2hhcmFjdGVycworICAgICAgICAjIG5vbi1CTVAgY2hhcmFjdGVyczsgWFhYIG5vdyB0aGV5IHNob3VsZCB3b3JrCiAgICAgICAgIHJldHVybiBjaGFyc2V0CiAgICAgaWYgbmVnYXRlOgogICAgICAgICBpZiBzeXMubWF4dW5pY29kZSAhPSA2NTUzNToKICAgICAgICAgICAgICMgWFhYOiBuZWdhdGlvbiBkb2VzIG5vdCB3b3JrIHdpdGggYmlnIGNoYXJzZXRzCisgICAgICAgICAgICAjIFhYWDI6IG5vdyB0aGV5IHNob3VsZCB3b3JrLCBidXQgcmVtb3ZpbmcgdGhpcyB3aWxsIG1ha2UgdGhlCisgICAgICAgICAgICAjIGNoYXJtYXAgMTcgdGltZXMgYmlnZ2VyCiAgICAgICAgICAgICByZXR1cm4gY2hhcnNldAogICAgICAgICBmb3IgaSBpbiByYW5nZSg2NTUzNik6CiAgICAgICAgICAgICBjaGFybWFwW2ldID0gbm90IGNoYXJtYXBbaV0KZGlmZiAtLWdpdCBhL0xpYi9zcmVfcGFyc2UucHkgYi9MaWIvc3JlX3BhcnNlLnB5CmluZGV4IDEzNzM3Y2EuLmQzNTg2NDYgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfcGFyc2UucHkKKysrIGIvTGliL3NyZV9wYXJzZS5weQpAQCAtMTc3LDYgKzE3Nyw3IEBACiAKIGNsYXNzIFRva2VuaXplcjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyaW5nKToKKyAgICAgICAgc2VsZi5pc3RleHQgPSBpc2luc3RhbmNlKHN0cmluZywgc3RyKQogICAgICAgICBzZWxmLnN0cmluZyA9IHN0cmluZwogICAgICAgICBzZWxmLmluZGV4ID0gMAogICAgICAgICBzZWxmLl9fbmV4dCgpCkBAIC0xODcsMTQgKzE4OCwxNCBAQAogICAgICAgICBjaGFyID0gc2VsZi5zdHJpbmdbc2VsZi5pbmRleDpzZWxmLmluZGV4KzFdCiAgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciB0aGUgc3RyOCwgc2luY2UgaW5kZXhpbmcgcmV0dXJucyBhIGludGVnZXIKICAgICAgICAgIyBYWFggVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3IgdGVzdF9idWdfOTI2MDc1IGluIHRlc3RfcmUucHkKLSAgICAgICAgaWYgY2hhciBhbmQgaXNpbnN0YW5jZShjaGFyLCBieXRlcyk6CisgICAgICAgIGlmIGNoYXIgYW5kIG5vdCBzZWxmLmlzdGV4dDoKICAgICAgICAgICAgIGNoYXIgPSBjaHIoY2hhclswXSkKICAgICAgICAgaWYgY2hhciA9PSAiXFwiOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGMgPSBzZWxmLnN0cmluZ1tzZWxmLmluZGV4ICsgMV0KICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBlc2NhcGUgKGVuZCBvZiBsaW5lKSIpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuc3RyaW5nLCBieXRlcyk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc3RleHQ6CiAgICAgICAgICAgICAgICAgYyA9IGNocihjKQogICAgICAgICAgICAgY2hhciA9IGNoYXIgKyBjCiAgICAgICAgIHNlbGYuaW5kZXggPSBzZWxmLmluZGV4ICsgbGVuKGNoYXIpCkBAIC0yMDksNiArMjEwLDE1IEBACiAgICAgICAgIHRoaXMgPSBzZWxmLm5leHQKICAgICAgICAgc2VsZi5fX25leHQoKQogICAgICAgICByZXR1cm4gdGhpcworICAgIGRlZiBnZXR3aGlsZShzZWxmLCBuLCBjaGFyc2V0KToKKyAgICAgICAgcmVzdWx0ID0gJycKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2Uobik6CisgICAgICAgICAgICBjID0gc2VsZi5uZXh0CisgICAgICAgICAgICBpZiBjIG5vdCBpbiBjaGFyc2V0OgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZXN1bHQgKz0gYworICAgICAgICAgICAgc2VsZi5fX25leHQoKQorICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmluZGV4LCBzZWxmLm5leHQKICAgICBkZWYgc2VlayhzZWxmLCBpbmRleCk6CkBAIC0yNDEsMjAgKzI1MSwzMCBAQAogICAgICAgICBjID0gZXNjYXBlWzE6Ml0KICAgICAgICAgaWYgYyA9PSAieCI6CiAgICAgICAgICAgICAjIGhleGFkZWNpbWFsIGVzY2FwZSAoZXhhY3RseSB0d28gZGlnaXRzKQotICAgICAgICAgICAgd2hpbGUgc291cmNlLm5leHQgaW4gSEVYRElHSVRTIGFuZCBsZW4oZXNjYXBlKSA8IDQ6Ci0gICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCi0gICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGVbMjpdCi0gICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSAyOgotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBlc2NhcGU6ICVzIiAlIHJlcHIoIlxcIiArIGVzY2FwZSkpCi0gICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZSwgMTYpICYgMHhmZgorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBIRVhESUdJVFMpCisgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA0OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpICYgMHhmZgorICAgICAgICBlbGlmIGMgPT0gInUiIGFuZCBzb3VyY2UuaXN0ZXh0OgorICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBmb3VyIGRpZ2l0cykKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoNCwgSEVYRElHSVRTKQorICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQorICAgICAgICBlbGlmIGMgPT0gIlUiIGFuZCBzb3VyY2UuaXN0ZXh0OgorICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBlaWdodCBkaWdpdHMpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDgsIEhFWERJR0lUUykKKyAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDEwOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzI6XSwgMTYpCisgICAgICAgICAgICBjaHIoYykgIyByYWlzZSBWYWx1ZUVycm9yIGZvciBpbnZhbGlkIGNvZGUKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgIGVsaWYgYyBpbiBPQ1RESUdJVFM6CiAgICAgICAgICAgICAjIG9jdGFsIGVzY2FwZSAodXAgdG8gdGhyZWUgZGlnaXRzKQotICAgICAgICAgICAgd2hpbGUgc291cmNlLm5leHQgaW4gT0NURElHSVRTIGFuZCBsZW4oZXNjYXBlKSA8IDQ6Ci0gICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCi0gICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGVbMTpdCi0gICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZSwgOCkgJiAweGZmCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIE9DVERJR0lUUykKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzE6XSwgOCkgJiAweGZmCiAgICAgICAgIGVsaWYgYyBpbiBESUdJVFM6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcigiYm9ndXMgZXNjYXBlOiAlcyIgJSByZXByKGVzY2FwZSkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgb3JkKGVzY2FwZVsxXSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKQEAgLTI3MywxNSArMjkzLDI3IEBACiAgICAgICAgIGMgPSBlc2NhcGVbMToyXQogICAgICAgICBpZiBjID09ICJ4IjoKICAgICAgICAgICAgICMgaGV4YWRlY2ltYWwgZXNjYXBlCi0gICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBIRVhESUdJVFMgYW5kIGxlbihlc2NhcGUpIDwgNDoKLSAgICAgICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGUgKyBzb3VyY2UuZ2V0KCkKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgSEVYRElHSVRTKQogICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNDoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KSAmIDB4ZmYKKyAgICAgICAgZWxpZiBjID09ICJ1IiBhbmQgc291cmNlLmlzdGV4dDoKKyAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZm91ciBkaWdpdHMpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDQsIEhFWERJR0lUUykKKyAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDY6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikKKyAgICAgICAgZWxpZiBjID09ICJVIiBhbmQgc291cmNlLmlzdGV4dDoKKyAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZWlnaHQgZGlnaXRzKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg4LCBIRVhESUdJVFMpCisgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSAxMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICBjID0gaW50KGVzY2FwZVsyOl0sIDE2KQorICAgICAgICAgICAgY2hyKGMpICMgcmFpc2UgVmFsdWVFcnJvciBmb3IgaW52YWxpZCBjb2RlCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgICBlbGlmIGMgPT0gIjAiOgogICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUKLSAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIE9DVERJR0lUUyBhbmQgbGVuKGVzY2FwZSkgPCA0OgotICAgICAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZSArIHNvdXJjZS5nZXQoKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBPQ1RESUdJVFMpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsxOl0sIDgpICYgMHhmZgogICAgICAgICBlbGlmIGMgaW4gRElHSVRTOgogICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUgKm9yKiBkZWNpbWFsIGdyb3VwIHJlZmVyZW5jZSAoc2lnaCkKQEAgLTc5MSw3ICs4MjMsNyBAQAogICAgIGVsc2U6CiAgICAgICAgICMgVGhlIHRva2VuaXplciBpbXBsaWNpdGx5IGRlY29kZXMgYnl0ZXMgb2JqZWN0cyBhcyBsYXRpbi0xLCB3ZSBtdXN0CiAgICAgICAgICMgdGhlcmVmb3JlIHJlLWVuY29kZSB0aGUgZmluYWwgcmVwcmVzZW50YXRpb24uCi0gICAgICAgIGVuY29kZSA9IGxhbWJkYSB4OiB4LmVuY29kZSgnbGF0aW4xJykKKyAgICAgICAgZW5jb2RlID0gbGFtYmRhIHg6IHguZW5jb2RlKCdsYXRpbi0xJykKICAgICBmb3IgYywgcyBpbiBwOgogICAgICAgICBpZiBjIGlzIE1BUks6CiAgICAgICAgICAgICBncm91cHNhcHBlbmQoKGksIHMpKQpkaWZmIC0tZ2l0IGEvTGliL3NzbC5weSBiL0xpYi9zc2wucHkKaW5kZXggODEzNzIzMS4uMzE2MmY1NiAxMDA2NDQKLS0tIGEvTGliL3NzbC5weQorKysgYi9MaWIvc3NsLnB5CkBAIC02MCwxMCArNjAsMjUgQEAKIGltcG9ydCBfc3NsICAgICAgICAgICAgICMgaWYgd2UgY2FuJ3QgaW1wb3J0IGl0LCBsZXQgdGhlIGVycm9yIHByb3BhZ2F0ZQogCiBmcm9tIF9zc2wgaW1wb3J0IE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIsIE9QRU5TU0xfVkVSU0lPTl9JTkZPLCBPUEVOU1NMX1ZFUlNJT04KLWZyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQsIFNTTEVycm9yCitmcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0Citmcm9tIF9zc2wgaW1wb3J0ICgKKyAgICBTU0xFcnJvciwgU1NMWmVyb1JldHVybkVycm9yLCBTU0xXYW50UmVhZEVycm9yLCBTU0xXYW50V3JpdGVFcnJvciwKKyAgICBTU0xTeXNjYWxsRXJyb3IsIFNTTEVPRkVycm9yLAorICAgICkKIGZyb20gX3NzbCBpbXBvcnQgQ0VSVF9OT05FLCBDRVJUX09QVElPTkFMLCBDRVJUX1JFUVVJUkVECi1mcm9tIF9zc2wgaW1wb3J0IE9QX0FMTCwgT1BfTk9fU1NMdjIsIE9QX05PX1NTTHYzLCBPUF9OT19UTFN2MQotZnJvbSBfc3NsIGltcG9ydCBSQU5EX3N0YXR1cywgUkFORF9lZ2QsIFJBTkRfYWRkCitmcm9tIF9zc2wgaW1wb3J0ICgKKyAgICBPUF9BTEwsIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fVExTdjEsCisgICAgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBPUF9TSU5HTEVfREhfVVNFCisgICAgKQordHJ5OgorICAgIGZyb20gX3NzbCBpbXBvcnQgT1BfTk9fQ09NUFJFU1NJT04KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCit0cnk6CisgICAgZnJvbSBfc3NsIGltcG9ydCBPUF9TSU5HTEVfRUNESF9VU0UKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitmcm9tIF9zc2wgaW1wb3J0IFJBTkRfc3RhdHVzLCBSQU5EX2VnZCwgUkFORF9hZGQsIFJBTkRfYnl0ZXMsIFJBTkRfcHNldWRvX2J5dGVzCiBmcm9tIF9zc2wgaW1wb3J0ICgKICAgICBTU0xfRVJST1JfWkVST19SRVRVUk4sCiAgICAgU1NMX0VSUk9SX1dBTlRfUkVBRCwKQEAgLTc1LDggKzkwLDkgQEAKICAgICBTU0xfRVJST1JfRU9GLAogICAgIFNTTF9FUlJPUl9JTlZBTElEX0VSUk9SX0NPREUsCiAgICAgKQotZnJvbSBfc3NsIGltcG9ydCBIQVNfU05JCi1mcm9tIF9zc2wgaW1wb3J0IFBST1RPQ09MX1NTTHYzLCBQUk9UT0NPTF9TU0x2MjMsIFBST1RPQ09MX1RMU3YxCitmcm9tIF9zc2wgaW1wb3J0IEhBU19TTkksIEhBU19FQ0RILCBIQVNfTlBOCitmcm9tIF9zc2wgaW1wb3J0IChQUk9UT0NPTF9TU0x2MywgUFJPVE9DT0xfU1NMdjIzLAorICAgICAgICAgICAgICAgICAgUFJPVE9DT0xfVExTdjEpCiBmcm9tIF9zc2wgaW1wb3J0IF9PUEVOU1NMX0FQSV9WRVJTSU9OCiAKIF9QUk9UT0NPTF9OQU1FUyA9IHsKQEAgLTk0LDExICsxMTAsMTYgQEAKIAogZnJvbSBzb2NrZXQgaW1wb3J0IGdldG5hbWVpbmZvIGFzIF9nZXRuYW1laW5mbwogZnJvbSBzb2NrZXQgaW1wb3J0IGVycm9yIGFzIHNvY2tldF9lcnJvcgotZnJvbSBzb2NrZXQgaW1wb3J0IHNvY2tldCwgQUZfSU5FVCwgU09DS19TVFJFQU0KK2Zyb20gc29ja2V0IGltcG9ydCBzb2NrZXQsIEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBjcmVhdGVfY29ubmVjdGlvbgogaW1wb3J0IGJhc2U2NCAgICAgICAgIyBmb3IgREVSLXRvLVBFTSB0cmFuc2xhdGlvbgogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IGVycm5vCiAKK2lmIF9zc2wuSEFTX1RMU19VTklRVUU6CisgICAgQ0hBTk5FTF9CSU5ESU5HX1RZUEVTID0gWyd0bHMtdW5pcXVlJ10KK2Vsc2U6CisgICAgQ0hBTk5FTF9CSU5ESU5HX1RZUEVTID0gW10KKwogIyBEaXNhYmxlIHdlYWsgb3IgaW5zZWN1cmUgY2lwaGVycyBieSBkZWZhdWx0CiAjIChPcGVuU1NMJ3MgZGVmYXVsdCBzZXR0aW5nIGlzICdERUZBVUxUOiFhTlVMTDohZU5VTEwnKQogX0RFRkFVTFRfQ0lQSEVSUyA9ICdERUZBVUxUOiFhTlVMTDohZU5VTEw6IUxPVzohRVhQT1JUOiFTU0x2MicKQEAgLTE4OCw2ICsyMDksMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9c2VydmVyX2hvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0PXNlbGYpCiAKKyAgICBkZWYgc2V0X25wbl9wcm90b2NvbHMoc2VsZiwgbnBuX3Byb3RvY29scyk6CisgICAgICAgIHByb3RvcyA9IGJ5dGVhcnJheSgpCisgICAgICAgIGZvciBwcm90b2NvbCBpbiBucG5fcHJvdG9jb2xzOgorICAgICAgICAgICAgYiA9IGJ5dGVzKHByb3RvY29sLCAnYXNjaWknKQorICAgICAgICAgICAgaWYgbGVuKGIpID09IDAgb3IgbGVuKGIpID4gMjU1OgorICAgICAgICAgICAgICAgIHJhaXNlIFNTTEVycm9yKCdOUE4gcHJvdG9jb2xzIG11c3QgYmUgMSB0byAyNTUgaW4gbGVuZ3RoJykKKyAgICAgICAgICAgIHByb3Rvcy5hcHBlbmQobGVuKGIpKQorICAgICAgICAgICAgcHJvdG9zLmV4dGVuZChiKQorCisgICAgICAgIHNlbGYuX3NldF9ucG5fcHJvdG9jb2xzKHByb3RvcykKKwogCiBjbGFzcyBTU0xTb2NrZXQoc29ja2V0KToKICAgICAiIiJUaGlzIGNsYXNzIGltcGxlbWVudHMgYSBzdWJ0eXBlIG9mIHNvY2tldC5zb2NrZXQgdGhhdCB3cmFwcwpAQCAtMTk5LDcgKzIzMSw3IEBACiAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPVBST1RPQ09MX1NTTHYyMywgY2FfY2VydHM9Tm9uZSwKICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZmFtaWx5PUFGX0lORVQsIHR5cGU9U09DS19TVFJFQU0sIHByb3RvPTAsIGZpbGVubz1Ob25lLAotICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBjaXBoZXJzPU5vbmUsCisgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIG5wbl9wcm90b2NvbHM9Tm9uZSwgY2lwaGVycz1Ob25lLAogICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ9Tm9uZSk6CiAKQEAgLTIxOSw2ICsyNTEsOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FfY2VydHMpCiAgICAgICAgICAgICBpZiBjZXJ0ZmlsZToKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlLCBrZXlmaWxlKQorICAgICAgICAgICAgaWYgbnBuX3Byb3RvY29sczoKKyAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X25wbl9wcm90b2NvbHMobnBuX3Byb3RvY29scykKICAgICAgICAgICAgIGlmIGNpcGhlcnM6CiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnNldF9jaXBoZXJzKGNpcGhlcnMpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCkBAIC0zMTksNiArMzUzLDEzIEBACiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5wZWVyX2NlcnRpZmljYXRlKGJpbmFyeV9mb3JtKQogCisgICAgZGVmIHNlbGVjdGVkX25wbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICBpZiBub3Qgc2VsZi5fc3Nsb2JqIG9yIG5vdCBfc3NsLkhBU19OUE46CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKQorCiAgICAgZGVmIGNpcGhlcihzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBub3Qgc2VsZi5fc3Nsb2JqOgpAQCAtMzI2LDYgKzM2NywxMyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jaXBoZXIoKQogCisgICAgZGVmIGNvbXByZXNzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jb21wcmVzc2lvbigpCisKICAgICBkZWYgc2VuZChzZWxmLCBkYXRhLCBmbGFncz0wKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmo6CkBAIC0zNTgsNiArNDA2LDEyIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnNlbmR0byhzZWxmLCBkYXRhLCBmbGFnc19vcl9hZGRyLCBhZGRyKQogCisgICAgZGVmIHNlbmRtc2coc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBFbnN1cmUgcHJvZ3JhbXMgZG9uJ3Qgc2VuZCBkYXRhIHVuZW5jcnlwdGVkIGlmIHRoZXkgdHJ5IHRvCisgICAgICAgICMgdXNlIHRoaXMgbWV0aG9kLgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzZW5kbXNnIG5vdCBhbGxvd2VkIG9uIGluc3RhbmNlcyBvZiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fKQorCiAgICAgZGVmIHNlbmRhbGwoc2VsZiwgZGF0YSwgZmxhZ3M9MCk6CiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5fc3Nsb2JqOgpAQCAtNDE2LDYgKzQ3MCwxNCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5yZWN2ZnJvbV9pbnRvKHNlbGYsIGJ1ZmZlciwgbmJ5dGVzLCBmbGFncykKIAorICAgIGRlZiByZWN2bXNnKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInJlY3Ztc2cgbm90IGFsbG93ZWQgb24gaW5zdGFuY2VzIG9mICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18pCisKKyAgICBkZWYgcmVjdm1zZ19pbnRvKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInJlY3Ztc2dfaW50byBub3QgYWxsb3dlZCBvbiBpbnN0YW5jZXMgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIgJSBzZWxmLl9fY2xhc3NfXykKKwogICAgIGRlZiBwZW5kaW5nKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYuX3NzbG9iajoKQEAgLTUwMiw2ICs1NjQsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9faGFuZHNoYWtlX29uX2Nvbm5lY3QpLAogICAgICAgICAgICAgICAgIGFkZHIpCiAKKyAgICBkZWYgZ2V0X2NoYW5uZWxfYmluZGluZyhzZWxmLCBjYl90eXBlPSJ0bHMtdW5pcXVlIik6CisgICAgICAgICIiIkdldCBjaGFubmVsIGJpbmRpbmcgZGF0YSBmb3IgY3VycmVudCBjb25uZWN0aW9uLiAgUmFpc2UgVmFsdWVFcnJvcgorICAgICAgICBpZiB0aGUgcmVxdWVzdGVkIGBjYl90eXBlYCBpcyBub3Qgc3VwcG9ydGVkLiAgUmV0dXJuIGJ5dGVzIG9mIHRoZSBkYXRhCisgICAgICAgIG9yIE5vbmUgaWYgdGhlIGRhdGEgaXMgbm90IGF2YWlsYWJsZSAoZS5nLiBiZWZvcmUgdGhlIGhhbmRzaGFrZSkuCisgICAgICAgICIiIgorICAgICAgICBpZiBjYl90eXBlIG5vdCBpbiBDSEFOTkVMX0JJTkRJTkdfVFlQRVM6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbnN1cHBvcnRlZCBjaGFubmVsIGJpbmRpbmcgdHlwZSIpCisgICAgICAgIGlmIGNiX3R5cGUgIT0gInRscy11bmlxdWUiOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiezB9IGNoYW5uZWwgYmluZGluZyB0eXBlIG5vdCBpbXBsZW1lbnRlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGNiX3R5cGUpKQorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoudGxzX3VuaXF1ZV9jYigpCisKICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgIyBzeXMuc3RkZXJyLndyaXRlKCJfX2RlbF9fIG9uICVzXG4iICUgcmVwcihzZWxmKSkKICAgICAgICAgc2VsZi5fcmVhbF9jbG9zZSgpCkBAIC01MTEsNyArNTg4LDggQEAKICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwgY2VydF9yZXFzPUNFUlRfTk9ORSwKICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1QUk9UT0NPTF9TU0x2MjMsIGNhX2NlcnRzPU5vbmUsCiAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwKLSAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBjaXBoZXJzPU5vbmUpOgorICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsCisgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lKToKIAogICAgIHJldHVybiBTU0xTb2NrZXQoc29jaz1zb2NrLCBrZXlmaWxlPWtleWZpbGUsIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsIGNlcnRfcmVxcz1jZXJ0X3JlcXMsCkBAIC01NjYsOSArNjQ0LDkgQEAKICAgICAgICAgY2VydF9yZXFzID0gQ0VSVF9SRVFVSVJFRAogICAgIGVsc2U6CiAgICAgICAgIGNlcnRfcmVxcyA9IENFUlRfTk9ORQotICAgIHMgPSB3cmFwX3NvY2tldChzb2NrZXQoKSwgc3NsX3ZlcnNpb249c3NsX3ZlcnNpb24sCisgICAgcyA9IGNyZWF0ZV9jb25uZWN0aW9uKGFkZHIpCisgICAgcyA9IHdyYXBfc29ja2V0KHMsIHNzbF92ZXJzaW9uPXNzbF92ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9Y2VydF9yZXFzLCBjYV9jZXJ0cz1jYV9jZXJ0cykKLSAgICBzLmNvbm5lY3QoYWRkcikKICAgICBkZXJjZXJ0ID0gcy5nZXRwZWVyY2VydChUcnVlKQogICAgIHMuY2xvc2UoKQogICAgIHJldHVybiBERVJfY2VydF90b19QRU1fY2VydChkZXJjZXJ0KQpkaWZmIC0tZ2l0IGEvTGliL3N0YXQucHkgYi9MaWIvc3RhdC5weQppbmRleCA3OGNjZDVlLi43MDRhZGZlIDEwMDY0NAotLS0gYS9MaWIvc3RhdC5weQorKysgYi9MaWIvc3RhdC5weQpAQCAtMTksNzggKzE5LDEzMSBAQAogIyBFeHRyYWN0IGJpdHMgZnJvbSB0aGUgbW9kZQogCiBkZWYgU19JTU9ERShtb2RlKToKKyAgICAiIiJSZXR1cm4gdGhlIHBvcnRpb24gb2YgdGhlIGZpbGUncyBtb2RlIHRoYXQgY2FuIGJlIHNldCBieQorICAgIG9zLmNobW9kKCkuCisgICAgIiIiCiAgICAgcmV0dXJuIG1vZGUgJiAwbzc3NzcKIAogZGVmIFNfSUZNVChtb2RlKToKKyAgICAiIiJSZXR1cm4gdGhlIHBvcnRpb24gb2YgdGhlIGZpbGUncyBtb2RlIHRoYXQgZGVzY3JpYmVzIHRoZQorICAgIGZpbGUgdHlwZS4KKyAgICAiIiIKICAgICByZXR1cm4gbW9kZSAmIDBvMTcwMDAwCiAKICMgQ29uc3RhbnRzIHVzZWQgYXMgU19JRk1UKCkgZm9yIHZhcmlvdXMgZmlsZSB0eXBlcwogIyAobm90IGFsbCBhcmUgaW1wbGVtZW50ZWQgb24gYWxsIHN5c3RlbXMpCiAKLVNfSUZESVIgID0gMG8wNDAwMDAKLVNfSUZDSFIgID0gMG8wMjAwMDAKLVNfSUZCTEsgID0gMG8wNjAwMDAKLVNfSUZSRUcgID0gMG8xMDAwMDAKLVNfSUZJRk8gID0gMG8wMTAwMDAKLVNfSUZMTksgID0gMG8xMjAwMDAKLVNfSUZTT0NLID0gMG8xNDAwMDAKK1NfSUZESVIgID0gMG8wNDAwMDAgICMgZGlyZWN0b3J5CitTX0lGQ0hSICA9IDBvMDIwMDAwICAjIGNoYXJhY3RlciBkZXZpY2UKK1NfSUZCTEsgID0gMG8wNjAwMDAgICMgYmxvY2sgZGV2aWNlCitTX0lGUkVHICA9IDBvMTAwMDAwICAjIHJlZ3VsYXIgZmlsZQorU19JRklGTyAgPSAwbzAxMDAwMCAgIyBmaWZvIChuYW1lZCBwaXBlKQorU19JRkxOSyAgPSAwbzEyMDAwMCAgIyBzeW1ib2xpYyBsaW5rCitTX0lGU09DSyA9IDBvMTQwMDAwICAjIHNvY2tldCBmaWxlCiAKICMgRnVuY3Rpb25zIHRvIHRlc3QgZm9yIGVhY2ggZmlsZSB0eXBlCiAKIGRlZiBTX0lTRElSKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIGRpcmVjdG9yeS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZESVIKIAogZGVmIFNfSVNDSFIobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgY2hhcmFjdGVyIHNwZWNpYWwgZGV2aWNlIGZpbGUuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGQ0hSCiAKIGRlZiBTX0lTQkxLKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlIGZpbGUuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGQkxLCiAKIGRlZiBTX0lTUkVHKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHJlZ3VsYXIgZmlsZS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZSRUcKIAogZGVmIFNfSVNGSUZPKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIEZJRk8gKG5hbWVkIHBpcGUpLiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRklGTwogCiBkZWYgU19JU0xOSyhtb2RlKToKKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBzeW1ib2xpYyBsaW5rLiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRkxOSwogCiBkZWYgU19JU1NPQ0sobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgc29ja2V0LiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRlNPQ0sKIAogIyBOYW1lcyBmb3IgcGVybWlzc2lvbiBiaXRzCiAKLVNfSVNVSUQgPSAwbzQwMDAKLVNfSVNHSUQgPSAwbzIwMDAKLVNfRU5GTVQgPSBTX0lTR0lECi1TX0lTVlRYID0gMG8xMDAwCi1TX0lSRUFEID0gMG8wNDAwCi1TX0lXUklURSA9IDBvMDIwMAotU19JRVhFQyA9IDBvMDEwMAotU19JUldYVSA9IDBvMDcwMAotU19JUlVTUiA9IDBvMDQwMAotU19JV1VTUiA9IDBvMDIwMAotU19JWFVTUiA9IDBvMDEwMAotU19JUldYRyA9IDBvMDA3MAotU19JUkdSUCA9IDBvMDA0MAotU19JV0dSUCA9IDBvMDAyMAotU19JWEdSUCA9IDBvMDAxMAotU19JUldYTyA9IDBvMDAwNwotU19JUk9USCA9IDBvMDAwNAotU19JV09USCA9IDBvMDAwMgotU19JWE9USCA9IDBvMDAwMQorU19JU1VJRCA9IDBvNDAwMCAgIyBzZXQgVUlEIGJpdAorU19JU0dJRCA9IDBvMjAwMCAgIyBzZXQgR0lEIGJpdAorU19FTkZNVCA9IFNfSVNHSUQgIyBmaWxlIGxvY2tpbmcgZW5mb3JjZW1lbnQKK1NfSVNWVFggPSAwbzEwMDAgICMgc3RpY2t5IGJpdAorU19JUkVBRCA9IDBvMDQwMCAgIyBVbml4IFY3IHN5bm9ueW0gZm9yIFNfSVJVU1IKK1NfSVdSSVRFID0gMG8wMjAwICMgVW5peCBWNyBzeW5vbnltIGZvciBTX0lXVVNSCitTX0lFWEVDID0gMG8wMTAwICAjIFVuaXggVjcgc3lub255bSBmb3IgU19JWFVTUgorU19JUldYVSA9IDBvMDcwMCAgIyBtYXNrIGZvciBvd25lciBwZXJtaXNzaW9ucworU19JUlVTUiA9IDBvMDQwMCAgIyByZWFkIGJ5IG93bmVyCitTX0lXVVNSID0gMG8wMjAwICAjIHdyaXRlIGJ5IG93bmVyCitTX0lYVVNSID0gMG8wMTAwICAjIGV4ZWN1dGUgYnkgb3duZXIKK1NfSVJXWEcgPSAwbzAwNzAgICMgbWFzayBmb3IgZ3JvdXAgcGVybWlzc2lvbnMKK1NfSVJHUlAgPSAwbzAwNDAgICMgcmVhZCBieSBncm91cAorU19JV0dSUCA9IDBvMDAyMCAgIyB3cml0ZSBieSBncm91cAorU19JWEdSUCA9IDBvMDAxMCAgIyBleGVjdXRlIGJ5IGdyb3VwCitTX0lSV1hPID0gMG8wMDA3ICAjIG1hc2sgZm9yIG90aGVycyAobm90IGluIGdyb3VwKSBwZXJtaXNzaW9ucworU19JUk9USCA9IDBvMDAwNCAgIyByZWFkIGJ5IG90aGVycworU19JV09USCA9IDBvMDAwMiAgIyB3cml0ZSBieSBvdGhlcnMKK1NfSVhPVEggPSAwbzAwMDEgICMgZXhlY3V0ZSBieSBvdGhlcnMKIAogIyBOYW1lcyBmb3IgZmlsZSBmbGFncwogCi1VRl9OT0RVTVAgICAgPSAweDAwMDAwMDAxCi1VRl9JTU1VVEFCTEUgPSAweDAwMDAwMDAyCi1VRl9BUFBFTkQgICAgPSAweDAwMDAwMDA0Ci1VRl9PUEFRVUUgICAgPSAweDAwMDAwMDA4Ci1VRl9OT1VOTElOSyAgPSAweDAwMDAwMDEwCi1VRl9DT01QUkVTU0VEID0gMHgwMDAwMDAyMCAgIyBPUyBYOiBmaWxlIGlzIGhmcy1jb21wcmVzc2VkCi1VRl9ISURERU4gICAgPSAweDAwMDA4MDAwICAgIyBPUyBYOiBmaWxlIHNob3VsZCBub3QgYmUgZGlzcGxheWVkCi1TRl9BUkNISVZFRCAgPSAweDAwMDEwMDAwCi1TRl9JTU1VVEFCTEUgPSAweDAwMDIwMDAwCi1TRl9BUFBFTkQgICAgPSAweDAwMDQwMDAwCi1TRl9OT1VOTElOSyAgPSAweDAwMTAwMDAwCi1TRl9TTkFQU0hPVCAgPSAweDAwMjAwMDAwCitVRl9OT0RVTVAgICAgPSAweDAwMDAwMDAxICAjIGRvIG5vdCBkdW1wIGZpbGUKK1VGX0lNTVVUQUJMRSA9IDB4MDAwMDAwMDIgICMgZmlsZSBtYXkgbm90IGJlIGNoYW5nZWQKK1VGX0FQUEVORCAgICA9IDB4MDAwMDAwMDQgICMgZmlsZSBtYXkgb25seSBiZSBhcHBlbmRlZCB0bworVUZfT1BBUVVFICAgID0gMHgwMDAwMDAwOCAgIyBkaXJlY3RvcnkgaXMgb3BhcXVlIHdoZW4gdmlld2VkIHRocm91Z2ggYSB1bmlvbiBzdGFjaworVUZfTk9VTkxJTksgID0gMHgwMDAwMDAxMCAgIyBmaWxlIG1heSBub3QgYmUgcmVuYW1lZCBvciBkZWxldGVkCitVRl9DT01QUkVTU0VEID0gMHgwMDAwMDAyMCAjIE9TIFg6IGZpbGUgaXMgaGZzLWNvbXByZXNzZWQKK1VGX0hJRERFTiAgICA9IDB4MDAwMDgwMDAgICMgT1MgWDogZmlsZSBzaG91bGQgbm90IGJlIGRpc3BsYXllZAorU0ZfQVJDSElWRUQgID0gMHgwMDAxMDAwMCAgIyBmaWxlIG1heSBiZSBhcmNoaXZlZAorU0ZfSU1NVVRBQkxFID0gMHgwMDAyMDAwMCAgIyBmaWxlIG1heSBub3QgYmUgY2hhbmdlZAorU0ZfQVBQRU5EICAgID0gMHgwMDA0MDAwMCAgIyBmaWxlIG1heSBvbmx5IGJlIGFwcGVuZGVkIHRvCitTRl9OT1VOTElOSyAgPSAweDAwMTAwMDAwICAjIGZpbGUgbWF5IG5vdCBiZSByZW5hbWVkIG9yIGRlbGV0ZWQKK1NGX1NOQVBTSE9UICA9IDB4MDAyMDAwMDAgICMgZmlsZSBpcyBhIHNuYXBzaG90IGZpbGUKKworCitfZmlsZW1vZGVfdGFibGUgPSAoCisgICAgKChTX0lGTE5LLCAgICAgICAgICJsIiksCisgICAgIChTX0lGUkVHLCAgICAgICAgICItIiksCisgICAgIChTX0lGQkxLLCAgICAgICAgICJiIiksCisgICAgIChTX0lGRElSLCAgICAgICAgICJkIiksCisgICAgIChTX0lGQ0hSLCAgICAgICAgICJjIiksCisgICAgIChTX0lGSUZPLCAgICAgICAgICJwIikpLAorCisgICAgKChTX0lSVVNSLCAgICAgICAgICJyIiksKSwKKyAgICAoKFNfSVdVU1IsICAgICAgICAgInciKSwpLAorICAgICgoU19JWFVTUnxTX0lTVUlELCAicyIpLAorICAgICAoU19JU1VJRCwgICAgICAgICAiUyIpLAorICAgICAoU19JWFVTUiwgICAgICAgICAieCIpKSwKKworICAgICgoU19JUkdSUCwgICAgICAgICAiciIpLCksCisgICAgKChTX0lXR1JQLCAgICAgICAgICJ3IiksKSwKKyAgICAoKFNfSVhHUlB8U19JU0dJRCwgInMiKSwKKyAgICAgKFNfSVNHSUQsICAgICAgICAgIlMiKSwKKyAgICAgKFNfSVhHUlAsICAgICAgICAgIngiKSksCisKKyAgICAoKFNfSVJPVEgsICAgICAgICAgInIiKSwpLAorICAgICgoU19JV09USCwgICAgICAgICAidyIpLCksCisgICAgKChTX0lYT1RIfFNfSVNWVFgsICJ0IiksCisgICAgIChTX0lTVlRYLCAgICAgICAgICJUIiksCisgICAgIChTX0lYT1RILCAgICAgICAgICJ4IikpCispCisKK2RlZiBmaWxlbW9kZShtb2RlKToKKyAgICAiIiJDb252ZXJ0IGEgZmlsZSdzIG1vZGUgdG8gYSBzdHJpbmcgb2YgdGhlIGZvcm0gJy1yd3hyd3hyd3gnLiIiIgorICAgIHBlcm0gPSBbXQorICAgIGZvciB0YWJsZSBpbiBfZmlsZW1vZGVfdGFibGU6CisgICAgICAgIGZvciBiaXQsIGNoYXIgaW4gdGFibGU6CisgICAgICAgICAgICBpZiBtb2RlICYgYml0ID09IGJpdDoKKyAgICAgICAgICAgICAgICBwZXJtLmFwcGVuZChjaGFyKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwZXJtLmFwcGVuZCgiLSIpCisgICAgcmV0dXJuICIiLmpvaW4ocGVybSkKZGlmZiAtLWdpdCBhL0xpYi9zdHJpbmcucHkgYi9MaWIvc3RyaW5nLnB5CmluZGV4IDBmNGVkZTIuLmI1N2M3OWIgMTAwNjQ0Ci0tLSBhL0xpYi9zdHJpbmcucHkKKysrIGIvTGliL3N0cmluZy5weQpAQCAtNDYsMjMgKzQ2LDcgQEAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIGltcG9ydCByZSBhcyBfcmUKLQotY2xhc3MgX211bHRpbWFwOgotICAgICIiIkhlbHBlciBjbGFzcyBmb3IgY29tYmluaW5nIG11bHRpcGxlIG1hcHBpbmdzLgotCi0gICAgVXNlZCBieSAue3NhZmVfLH1zdWJzdGl0dXRlKCkgdG8gY29tYmluZSB0aGUgbWFwcGluZyBhbmQga2V5d29yZAotICAgIGFyZ3VtZW50cy4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJpbWFyeSwgc2Vjb25kYXJ5KToKLSAgICAgICAgc2VsZi5fcHJpbWFyeSA9IHByaW1hcnkKLSAgICAgICAgc2VsZi5fc2Vjb25kYXJ5ID0gc2Vjb25kYXJ5Ci0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ByaW1hcnlba2V5XQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2Vjb25kYXJ5W2tleV0KLQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2hhaW5NYXAKIAogY2xhc3MgX1RlbXBsYXRlTWV0YWNsYXNzKHR5cGUpOgogICAgIHBhdHRlcm4gPSByIiIiCkBAIC0xMDAsNyArODQsNyBAQAogCiAgICAgZGVmIF9pbnZhbGlkKHNlbGYsIG1vKToKICAgICAgICAgaSA9IG1vLnN0YXJ0KCdpbnZhbGlkJykKLSAgICAgICAgbGluZXMgPSBzZWxmLnRlbXBsYXRlWzppXS5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgIGxpbmVzID0gc2VsZi50ZW1wbGF0ZVs6aV0uc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICBpZiBub3QgbGluZXM6CiAgICAgICAgICAgICBjb2xubyA9IDEKICAgICAgICAgICAgIGxpbmVubyA9IDEKQEAgLTExNiw3ICsxMDAsNyBAQAogICAgICAgICBpZiBub3QgYXJnczoKICAgICAgICAgICAgIG1hcHBpbmcgPSBrd3MKICAgICAgICAgZWxpZiBrd3M6Ci0gICAgICAgICAgICBtYXBwaW5nID0gX211bHRpbWFwKGt3cywgYXJnc1swXSkKKyAgICAgICAgICAgIG1hcHBpbmcgPSBDaGFpbk1hcChrd3MsIGFyZ3NbMF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtYXBwaW5nID0gYXJnc1swXQogICAgICAgICAjIEhlbHBlciBmdW5jdGlvbiBmb3IgLnN1YigpCkBAIC0xNDIsNyArMTI2LDcgQEAKICAgICAgICAgaWYgbm90IGFyZ3M6CiAgICAgICAgICAgICBtYXBwaW5nID0ga3dzCiAgICAgICAgIGVsaWYga3dzOgotICAgICAgICAgICAgbWFwcGluZyA9IF9tdWx0aW1hcChrd3MsIGFyZ3NbMF0pCisgICAgICAgICAgICBtYXBwaW5nID0gQ2hhaW5NYXAoa3dzLCBhcmdzWzBdKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbWFwcGluZyA9IGFyZ3NbMF0KICAgICAgICAgIyBIZWxwZXIgZnVuY3Rpb24gZm9yIC5zdWIoKQpkaWZmIC0tZ2l0IGEvTGliL3N1YnByb2Nlc3MucHkgYi9MaWIvc3VicHJvY2Vzcy5weQppbmRleCAxMDZhZjhiLi5jZWMxYTI0IDEwMDY0NAotLS0gYS9MaWIvc3VicHJvY2Vzcy5weQorKysgYi9MaWIvc3VicHJvY2Vzcy5weQpAQCAtMTkxLDggKzE5MSwxMCBAQAogCiBBIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgUG9wZW4gaXMgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHMuCiAKLWNoZWNrX2NhbGwoKSBhbmQgY2hlY2tfb3V0cHV0KCkgd2lsbCByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IsIGlmIHRoZQotY2FsbGVkIHByb2Nlc3MgcmV0dXJucyBhIG5vbi16ZXJvIHJldHVybiBjb2RlLgorRXhjZXB0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGlzIG1vZHVsZSBpbmhlcml0IGZyb20gU3VicHJvY2Vzc0Vycm9yLgorY2hlY2tfY2FsbCgpIGFuZCBjaGVja19vdXRwdXQoKSB3aWxsIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvciBpZiB0aGUKK2NhbGxlZCBwcm9jZXNzIHJldHVybnMgYSBub24temVybyByZXR1cm4gY29kZS4gIFRpbWVvdXRFeHBpcmVkCitiZSByYWlzZWQgaWYgYSB0aW1lb3V0IHdhcyBzcGVjaWZpZWQgYW5kIGV4cGlyZWQuCiAKIAogU2VjdXJpdHkKQEAgLTM0MCwxNSArMzQyLDIzIEBACiAKIGltcG9ydCBpbwogaW1wb3J0IG9zCitpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IGdjCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGVycm5vCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogIyBFeGNlcHRpb24gY2xhc3NlcyB1c2VkIGJ5IHRoaXMgbW9kdWxlLgotY2xhc3MgQ2FsbGVkUHJvY2Vzc0Vycm9yKEV4Y2VwdGlvbik6CitjbGFzcyBTdWJwcm9jZXNzRXJyb3IoRXhjZXB0aW9uKTogcGFzcworCisKK2NsYXNzIENhbGxlZFByb2Nlc3NFcnJvcihTdWJwcm9jZXNzRXJyb3IpOgogICAgICIiIlRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGEgcHJvY2VzcyBydW4gYnkgY2hlY2tfY2FsbCgpIG9yCiAgICAgY2hlY2tfb3V0cHV0KCkgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgogICAgIFRoZSBleGl0IHN0YXR1cyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGU7CkBAIC0zNjIsMTAgKzM3MiwyNCBAQAogICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAlZCIgJSAoc2VsZi5jbWQsIHNlbGYucmV0dXJuY29kZSkKIAogCitjbGFzcyBUaW1lb3V0RXhwaXJlZChTdWJwcm9jZXNzRXJyb3IpOgorICAgICIiIlRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMgd2hpbGUgd2FpdGluZyBmb3IgYQorICAgIGNoaWxkIHByb2Nlc3MuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwgdGltZW91dCwgb3V0cHV0PU5vbmUpOgorICAgICAgICBzZWxmLmNtZCA9IGNtZAorICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CisgICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0CisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgiQ29tbWFuZCAnJXMnIHRpbWVkIG91dCBhZnRlciAlcyBzZWNvbmRzIiAlCisgICAgICAgICAgICAgICAgKHNlbGYuY21kLCBzZWxmLnRpbWVvdXQpKQorCisKIGlmIG1zd2luZG93czoKICAgICBpbXBvcnQgdGhyZWFkaW5nCiAgICAgaW1wb3J0IG1zdmNydAotICAgIGltcG9ydCBfc3VicHJvY2VzcworICAgIGltcG9ydCBfd2luYXBpCiAgICAgY2xhc3MgU1RBUlRVUElORk86CiAgICAgICAgIGR3RmxhZ3MgPSAwCiAgICAgICAgIGhTdGRJbnB1dCA9IE5vbmUKQEAgLTM3Nyw1MyArNDAxLDQ5IEBACiBlbHNlOgogICAgIGltcG9ydCBzZWxlY3QKICAgICBfaGFzX3BvbGwgPSBoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKQotICAgIGltcG9ydCBmY250bAotICAgIGltcG9ydCBwaWNrbGUKLQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IF9wb3NpeHN1YnByb2Nlc3MKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIF9wb3NpeHN1YnByb2Nlc3MgPSBOb25lCi0gICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBfcG9zaXhzdWJwcm9jZXNzIG1vZHVsZSBpcyBub3QgYmVpbmcgdXNlZC4gIgotICAgICAgICAgICAgICAgICAgICAgICJDaGlsZCBwcm9jZXNzIHJlbGlhYmlsaXR5IG1heSBzdWZmZXIgaWYgeW91ciAiCi0gICAgICAgICAgICAgICAgICAgICAgInByb2dyYW0gdXNlcyB0aHJlYWRzLiIsIFJ1bnRpbWVXYXJuaW5nKQorICAgIGltcG9ydCBfcG9zaXhzdWJwcm9jZXNzCisgICAgX2NyZWF0ZV9waXBlID0gX3Bvc2l4c3VicHJvY2Vzcy5jbG9leGVjX3BpcGUKIAogICAgICMgV2hlbiBzZWxlY3Qgb3IgcG9sbCBoYXMgaW5kaWNhdGVkIHRoYXQgdGhlIGZpbGUgaXMgd3JpdGFibGUsCiAgICAgIyB3ZSBjYW4gd3JpdGUgdXAgdG8gX1BJUEVfQlVGIGJ5dGVzIHdpdGhvdXQgcmlzayBvZiBibG9ja2luZy4KICAgICAjIFBPU0lYIGRlZmluZXMgUElQRV9CVUYgYXMgPj0gNTEyLgogICAgIF9QSVBFX0JVRiA9IGdldGF0dHIoc2VsZWN0LCAnUElQRV9CVUYnLCA1MTIpCiAKLSAgICBfRkRfQ0xPRVhFQyA9IGdldGF0dHIoZmNudGwsICdGRF9DTE9FWEVDJywgMSkKLQotICAgIGRlZiBfc2V0X2Nsb2V4ZWMoZmQsIGNsb2V4ZWMpOgotICAgICAgICBvbGQgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGRCkKLSAgICAgICAgaWYgY2xvZXhlYzoKLSAgICAgICAgICAgIGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX1NFVEZELCBvbGQgfCBfRkRfQ0xPRVhFQykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX1NFVEZELCBvbGQgJiB+X0ZEX0NMT0VYRUMpCi0KLSAgICBpZiBfcG9zaXhzdWJwcm9jZXNzOgotICAgICAgICBfY3JlYXRlX3BpcGUgPSBfcG9zaXhzdWJwcm9jZXNzLmNsb2V4ZWNfcGlwZQotICAgIGVsc2U6Ci0gICAgICAgIGRlZiBfY3JlYXRlX3BpcGUoKToKLSAgICAgICAgICAgIGZkcyA9IG9zLnBpcGUoKQotICAgICAgICAgICAgX3NldF9jbG9leGVjKGZkc1swXSwgVHJ1ZSkKLSAgICAgICAgICAgIF9zZXRfY2xvZXhlYyhmZHNbMV0sIFRydWUpCi0gICAgICAgICAgICByZXR1cm4gZmRzCiAKIF9fYWxsX18gPSBbIlBvcGVuIiwgIlBJUEUiLCAiU1RET1VUIiwgImNhbGwiLCAiY2hlY2tfY2FsbCIsICJnZXRzdGF0dXNvdXRwdXQiLAotICAgICAgICAgICAiZ2V0b3V0cHV0IiwgImNoZWNrX291dHB1dCIsICJDYWxsZWRQcm9jZXNzRXJyb3IiXQorICAgICAgICAgICAiZ2V0b3V0cHV0IiwgImNoZWNrX291dHB1dCIsICJDYWxsZWRQcm9jZXNzRXJyb3IiLCAiREVWTlVMTCJdCiAKIGlmIG1zd2luZG93czoKLSAgICBmcm9tIF9zdWJwcm9jZXNzIGltcG9ydCAoQ1JFQVRFX05FV19DT05TT0xFLCBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVERfRVJST1JfSEFORExFLCBTV19ISURFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFSVEZfVVNFU1RESEFORExFUywgU1RBUlRGX1VTRVNIT1dXSU5ET1cpCisgICAgZnJvbSBfd2luYXBpIGltcG9ydCAoQ1JFQVRFX05FV19DT05TT0xFLCBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgU1REX0VSUk9SX0hBTkRMRSwgU1dfSElERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVEFSVEZfVVNFU1RESEFORExFUywgU1RBUlRGX1VTRVNIT1dXSU5ET1cpCiAKICAgICBfX2FsbF9fLmV4dGVuZChbIkNSRUFURV9ORVdfQ09OU09MRSIsICJDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAiLAogICAgICAgICAgICAgICAgICAgICAiU1REX0lOUFVUX0hBTkRMRSIsICJTVERfT1VUUFVUX0hBTkRMRSIsCiAgICAgICAgICAgICAgICAgICAgICJTVERfRVJST1JfSEFORExFIiwgIlNXX0hJREUiLAogICAgICAgICAgICAgICAgICAgICAiU1RBUlRGX1VTRVNUREhBTkRMRVMiLCAiU1RBUlRGX1VTRVNIT1dXSU5ET1ciXSkKKworICAgIGNsYXNzIEhhbmRsZShpbnQpOgorICAgICAgICBjbG9zZWQgPSBGYWxzZQorCisgICAgICAgIGRlZiBDbG9zZShzZWxmLCBDbG9zZUhhbmRsZT1fd2luYXBpLkNsb3NlSGFuZGxlKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShzZWxmKQorCisgICAgICAgIGRlZiBEZXRhY2goc2VsZik6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIGludChzZWxmKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYWxyZWFkeSBjbG9zZWQiKQorCisgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAiSGFuZGxlKCVkKSIgJSBpbnQoc2VsZikKKworICAgICAgICBfX2RlbF9fID0gQ2xvc2UKKyAgICAgICAgX19zdHJfXyA9IF9fcmVwcl9fCisKIHRyeToKICAgICBNQVhGRCA9IG9zLnN5c2NvbmYoIlNDX09QRU5fTUFYIikKIGV4Y2VwdDoKQEAgLTQ0OCwyNyArNDY4LDYzIEBACiAKIFBJUEUgPSAtMQogU1RET1VUID0gLTIKK0RFVk5VTEwgPSAtMwogCiAKIGRlZiBfZWludHJfcmV0cnlfY2FsbChmdW5jLCAqYXJncyk6CiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCi0gICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcikgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgorICAgICAgICAgICAgY29udGludWUKIAogCi1kZWYgY2FsbCgqcG9wZW5hcmdzLCAqKmt3YXJncyk6Ci0gICAgIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCi0gICAgcmV0dXJuIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZS4KKyMgWFhYIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VkIGJ5IG11bHRpcHJvY2Vzc2luZyBhbmQgdGhlIHRlc3Qgc3VpdGUsCisjIGJ1dCBpdCdzIGhlcmUgc28gdGhhdCBpdCBjYW4gYmUgaW1wb3J0ZWQgd2hlbiBQeXRob24gaXMgY29tcGlsZWQgd2l0aG91dAorIyB0aHJlYWRzLgorCitkZWYgX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAorICAgIHNldHRpbmdzIGluIHN5cy5mbGFncyBhbmQgc3lzLndhcm5vcHRpb25zLiIiIgorICAgIGZsYWdfb3B0X21hcCA9IHsKKyAgICAgICAgJ2RlYnVnJzogJ2QnLAorICAgICAgICAjICdpbnNwZWN0JzogJ2knLAorICAgICAgICAjICdpbnRlcmFjdGl2ZSc6ICdpJywKKyAgICAgICAgJ29wdGltaXplJzogJ08nLAorICAgICAgICAnZG9udF93cml0ZV9ieXRlY29kZSc6ICdCJywKKyAgICAgICAgJ25vX3VzZXJfc2l0ZSc6ICdzJywKKyAgICAgICAgJ25vX3NpdGUnOiAnUycsCisgICAgICAgICdpZ25vcmVfZW52aXJvbm1lbnQnOiAnRScsCisgICAgICAgICd2ZXJib3NlJzogJ3YnLAorICAgICAgICAnYnl0ZXNfd2FybmluZyc6ICdiJywKKyAgICAgICAgJ3F1aWV0JzogJ3EnLAorICAgICAgICAnaGFzaF9yYW5kb21pemF0aW9uJzogJ1InLAorICAgIH0KKyAgICBhcmdzID0gW10KKyAgICBmb3IgZmxhZywgb3B0IGluIGZsYWdfb3B0X21hcC5pdGVtcygpOgorICAgICAgICB2ID0gZ2V0YXR0cihzeXMuZmxhZ3MsIGZsYWcpCisgICAgICAgIGlmIHYgPiAwOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0nICsgb3B0ICogdikKKyAgICBmb3Igb3B0IGluIHN5cy53YXJub3B0aW9uczoKKyAgICAgICAgYXJncy5hcHBlbmQoJy1XJyArIG9wdCkKKyAgICByZXR1cm4gYXJncworCisKK2RlZiBjYWxsKCpwb3BlbmFyZ3MsIHRpbWVvdXQ9Tm9uZSwgKiprd2FyZ3MpOgorICAgICIiIlJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZSBvcgorICAgIHRpbWVvdXQsIHRoZW4gcmV0dXJuIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZS4KIAogICAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgUG9wZW4gY29uc3RydWN0b3IuICBFeGFtcGxlOgogCiAgICAgcmV0Y29kZSA9IGNhbGwoWyJscyIsICItbCJdKQogICAgICIiIgotICAgIHJldHVybiBQb3BlbigqcG9wZW5hcmdzLCAqKmt3YXJncykud2FpdCgpCisgICAgd2l0aCBQb3BlbigqcG9wZW5hcmdzLCAqKmt3YXJncykgYXMgcDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHAud2FpdCh0aW1lb3V0PXRpbWVvdXQpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHAua2lsbCgpCisgICAgICAgICAgICBwLndhaXQoKQorICAgICAgICAgICAgcmFpc2UKIAogCiBkZWYgY2hlY2tfY2FsbCgqcG9wZW5hcmdzLCAqKmt3YXJncyk6CkBAIC00NzcsNyArNTMzLDcgQEAKICAgICBDYWxsZWRQcm9jZXNzRXJyb3IuICBUaGUgQ2FsbGVkUHJvY2Vzc0Vycm9yIG9iamVjdCB3aWxsIGhhdmUgdGhlCiAgICAgcmV0dXJuIGNvZGUgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgogCi0gICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4gIEV4YW1wbGU6CisgICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBjYWxsIGZ1bmN0aW9uLiAgRXhhbXBsZToKIAogICAgIGNoZWNrX2NhbGwoWyJscyIsICItbCJdKQogICAgICIiIgpAQCAtNDkwLDcgKzU0Niw3IEBACiAgICAgcmV0dXJuIDAKIAogCi1kZWYgY2hlY2tfb3V0cHV0KCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKK2RlZiBjaGVja19vdXRwdXQoKnBvcGVuYXJncywgdGltZW91dD1Ob25lLCAqKmt3YXJncyk6CiAgICAgciIiIlJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzIG91dHB1dCBhcyBhIGJ5dGUgc3RyaW5nLgogCiAgICAgSWYgdGhlIGV4aXQgY29kZSB3YXMgbm9uLXplcm8gaXQgcmFpc2VzIGEgQ2FsbGVkUHJvY2Vzc0Vycm9yLiAgVGhlCkBAIC01MTIsMTQgKzU2OCwyMCBAQAogICAgICIiIgogICAgIGlmICdzdGRvdXQnIGluIGt3YXJnczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3Rkb3V0IGFyZ3VtZW50IG5vdCBhbGxvd2VkLCBpdCB3aWxsIGJlIG92ZXJyaWRkZW4uJykKLSAgICBwcm9jZXNzID0gUG9wZW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsICoqa3dhcmdzKQotICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgIHJldGNvZGUgPSBwcm9jZXNzLnBvbGwoKQotICAgIGlmIHJldGNvZGU6Ci0gICAgICAgIGNtZCA9IGt3YXJncy5nZXQoImFyZ3MiKQotICAgICAgICBpZiBjbWQgaXMgTm9uZToKLSAgICAgICAgICAgIGNtZCA9IHBvcGVuYXJnc1swXQotICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgY21kLCBvdXRwdXQ9b3V0cHV0KQorICAgIHdpdGggUG9wZW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsICoqa3dhcmdzKSBhcyBwcm9jZXNzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQsIHVudXNlZF9lcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgZXhjZXB0IFRpbWVvdXRFeHBpcmVkOgorICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKKyAgICAgICAgICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQocHJvY2Vzcy5hcmdzLCB0aW1lb3V0LCBvdXRwdXQ9b3V0cHV0KQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQorICAgICAgICAgICAgcHJvY2Vzcy53YWl0KCkKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldGNvZGUgPSBwcm9jZXNzLnBvbGwoKQorICAgICAgICBpZiByZXRjb2RlOgorICAgICAgICAgICAgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yKHJldGNvZGUsIHByb2Nlc3MuYXJncywgb3V0cHV0PW91dHB1dCkKICAgICByZXR1cm4gb3V0cHV0CiAKIApAQCAtNjE0LDExICs2NzYsMTkgQEAKICAgICA+Pj4gc3VicHJvY2Vzcy5nZXRzdGF0dXNvdXRwdXQoJy9iaW4vanVuaycpCiAgICAgKDI1NiwgJ3NoOiAvYmluL2p1bms6IG5vdCBmb3VuZCcpCiAgICAgIiIiCi0gICAgcGlwZSA9IG9zLnBvcGVuKCd7ICcgKyBjbWQgKyAnOyB9IDI+JjEnLCAncicpCi0gICAgdGV4dCA9IHBpcGUucmVhZCgpCi0gICAgc3RzID0gcGlwZS5jbG9zZSgpCi0gICAgaWYgc3RzIGlzIE5vbmU6IHN0cyA9IDAKLSAgICBpZiB0ZXh0Wy0xOl0gPT0gJ1xuJzogdGV4dCA9IHRleHRbOi0xXQorICAgIHdpdGggb3MucG9wZW4oJ3sgJyArIGNtZCArICc7IH0gMj4mMScsICdyJykgYXMgcGlwZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGV4dCA9IHBpcGUucmVhZCgpCisgICAgICAgICAgICBzdHMgPSBwaXBlLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcHJvY2VzcyA9IHBpcGUuX3Byb2MKKyAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCisgICAgICAgICAgICBwcm9jZXNzLndhaXQoKQorICAgICAgICAgICAgcmFpc2UKKyAgICBpZiBzdHMgaXMgTm9uZToKKyAgICAgICAgc3RzID0gMAorICAgIGlmIHRleHRbLTE6XSA9PSAnXG4nOgorICAgICAgICB0ZXh0ID0gdGV4dFs6LTFdCiAgICAgcmV0dXJuIHN0cywgdGV4dAogCiAKQEAgLTY1MCw2ICs3MjAsOCBAQAogICAgICAgICBfY2xlYW51cCgpCiAKICAgICAgICAgc2VsZi5fY2hpbGRfY3JlYXRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2lucHV0ID0gTm9uZQorICAgICAgICBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgPSBGYWxzZQogICAgICAgICBpZiBidWZzaXplIGlzIE5vbmU6CiAgICAgICAgICAgICBidWZzaXplID0gMCAgIyBSZXN0b3JlIGRlZmF1bHQKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYnVmc2l6ZSwgaW50KToKQEAgLTY4NCw2ICs3NTYsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNyZWF0aW9uZmxhZ3MgaXMgb25seSBzdXBwb3J0ZWQgb24gV2luZG93cyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm1zIikKIAorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgIHNlbGYuc3RkaW4gPSBOb25lCiAgICAgICAgIHNlbGYuc3Rkb3V0ID0gTm9uZQogICAgICAgICBzZWxmLnN0ZGVyciA9IE5vbmUKQEAgLTcyNCw3ICs3OTcsNyBAQAogCiAgICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgogICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLm9wZW4ocDJjd3JpdGUsICd3YicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lczoKKyAgICAgICAgICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lczoKICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZGluLCB3cml0ZV90aHJvdWdoPVRydWUpCiAgICAgICAgIGlmIGMycHJlYWQgIT0gLTE6CiAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLm9wZW4oYzJwcmVhZCwgJ3JiJywgYnVmc2l6ZSkKQEAgLTczNyw3ICs4MTAsNyBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVfY2hpbGQoYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSwKQEAgLTc4NCwxOSArODU3LDI4IEBACiAgICAgICAgICAgICAjIENoaWxkIGlzIHN0aWxsIHJ1bm5pbmcsIGtlZXAgdXMgYWxpdmUgdW50aWwgd2UgY2FuIHdhaXQgb24gaXQuCiAgICAgICAgICAgICBfYWN0aXZlLmFwcGVuZChzZWxmKQogCisgICAgZGVmIF9nZXRfZGV2bnVsbChzZWxmKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19kZXZudWxsJyk6CisgICAgICAgICAgICBzZWxmLl9kZXZudWxsID0gb3Mub3Blbihvcy5kZXZudWxsLCBvcy5PX1JEV1IpCisgICAgICAgIHJldHVybiBzZWxmLl9kZXZudWxsCiAKLSAgICBkZWYgY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQ9Tm9uZSk6CisgICAgZGVmIGNvbW11bmljYXRlKHNlbGYsIGlucHV0PU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgICIiIkludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20KICAgICAgICAgc3Rkb3V0IGFuZCBzdGRlcnIsIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvcgotICAgICAgICBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbCBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUgYQotICAgICAgICBzdHJpbmcgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YQorICAgICAgICBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbCBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUKKyAgICAgICAgYnl0ZXMgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YQogICAgICAgICBzaG91bGQgYmUgc2VudCB0byB0aGUgY2hpbGQuCiAKICAgICAgICAgY29tbXVuaWNhdGUoKSByZXR1cm5zIGEgdHVwbGUgKHN0ZG91dCwgc3RkZXJyKS4iIiIKIAotICAgICAgICAjIE9wdGltaXphdGlvbjogSWYgd2UgYXJlIG9ubHkgdXNpbmcgb25lIHBpcGUsIG9yIG5vIHBpcGUgYXQKLSAgICAgICAgIyBhbGwsIHVzaW5nIHNlbGVjdCgpIG9yIHRocmVhZHMgaXMgdW5uZWNlc3NhcnkuCi0gICAgICAgIGlmIFtzZWxmLnN0ZGluLCBzZWxmLnN0ZG91dCwgc2VsZi5zdGRlcnJdLmNvdW50KE5vbmUpID49IDI6CisgICAgICAgIGlmIHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZCBhbmQgaW5wdXQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3Qgc2VuZCBpbnB1dCBhZnRlciBzdGFydGluZyBjb21tdW5pY2F0aW9uIikKKworICAgICAgICAjIE9wdGltaXphdGlvbjogSWYgd2UgYXJlIG5vdCB3b3JyaWVkIGFib3V0IHRpbWVvdXRzLCB3ZSBoYXZlbid0CisgICAgICAgICMgc3RhcnRlZCBjb21tdW5pY2F0aW5nLCBhbmQgd2UgaGF2ZSBvbmUgb3IgemVybyBwaXBlcywgdXNpbmcgc2VsZWN0KCkKKyAgICAgICAgIyBvciB0aHJlYWRzIGlzIHVubmVjZXNzYXJ5LgorICAgICAgICBpZiAodGltZW91dCBpcyBOb25lIGFuZCBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkIGFuZAorICAgICAgICAgICAgW3NlbGYuc3RkaW4sIHNlbGYuc3Rkb3V0LCBzZWxmLnN0ZGVycl0uY291bnQoTm9uZSkgPj0gMik6CiAgICAgICAgICAgICBzdGRvdXQgPSBOb25lCiAgICAgICAgICAgICBzdGRlcnIgPSBOb25lCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZGluOgpAQCAtODE0LDE1ICs4OTYsNDIgQEAKICAgICAgICAgICAgICAgICBzdGRlcnIgPSBfZWludHJfcmV0cnlfY2FsbChzZWxmLnN0ZGVyci5yZWFkKQogICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYud2FpdCgpCi0gICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBlbmR0aW1lID0gX3RpbWUoKSArIHRpbWVvdXQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZW5kdGltZSA9IE5vbmUKIAotICAgICAgICByZXR1cm4gc2VsZi5fY29tbXVuaWNhdGUoaW5wdXQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9jb21tdW5pY2F0ZShpbnB1dCwgZW5kdGltZSwgdGltZW91dCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkID0gVHJ1ZQorCisgICAgICAgICAgICBzdHMgPSBzZWxmLndhaXQodGltZW91dD1zZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKKworICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCiAKICAgICBkZWYgcG9sbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ludGVybmFsX3BvbGwoKQogCiAKKyAgICBkZWYgX3JlbWFpbmluZ190aW1lKHNlbGYsIGVuZHRpbWUpOgorICAgICAgICAiIiJDb252ZW5pZW5jZSBmb3IgX2NvbW11bmljYXRlIHdoZW4gY29tcHV0aW5nIHRpbWVvdXRzLiIiIgorICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGVuZHRpbWUgLSBfdGltZSgpCisKKworICAgIGRlZiBfY2hlY2tfdGltZW91dChzZWxmLCBlbmR0aW1lLCBvcmlnX3RpbWVvdXQpOgorICAgICAgICAiIiJDb252ZW5pZW5jZSBmb3IgY2hlY2tpbmcgaWYgYSB0aW1lb3V0IGhhcyBleHBpcmVkLiIiIgorICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgX3RpbWUoKSA+IGVuZHRpbWU6CisgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKKworCiAgICAgaWYgbXN3aW5kb3dzOgogICAgICAgICAjCiAgICAgICAgICMgV2luZG93cyBtZXRob2RzCkBAIC04MzksMTEgKzk0OCwxNiBAQAogICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSAtMSwgLTEKIAogICAgICAgICAgICAgaWYgc3RkaW4gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwMmNyZWFkID0gX3N1YnByb2Nlc3MuR2V0U3RkSGFuZGxlKF9zdWJwcm9jZXNzLlNURF9JTlBVVF9IQU5ETEUpCisgICAgICAgICAgICAgICAgcDJjcmVhZCA9IF93aW5hcGkuR2V0U3RkSGFuZGxlKF93aW5hcGkuU1REX0lOUFVUX0hBTkRMRSkKICAgICAgICAgICAgICAgICBpZiBwMmNyZWFkIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIF8gPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIF8gPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCA9IEhhbmRsZShwMmNyZWFkKQorICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKF8pCiAgICAgICAgICAgICBlbGlmIHN0ZGluID09IFBJUEU6Ci0gICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUgPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUgPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSA9IEhhbmRsZShwMmNyZWFkKSwgSGFuZGxlKHAyY3dyaXRlKQorICAgICAgICAgICAgZWxpZiBzdGRpbiA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzZWxmLl9nZXRfZGV2bnVsbCgpKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGluLCBpbnQpOgogICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzdGRpbikKICAgICAgICAgICAgIGVsc2U6CkBAIC04NTIsMTEgKzk2NiwxNiBAQAogICAgICAgICAgICAgcDJjcmVhZCA9IHNlbGYuX21ha2VfaW5oZXJpdGFibGUocDJjcmVhZCkKIAogICAgICAgICAgICAgaWYgc3Rkb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBfc3VicHJvY2Vzcy5HZXRTdGRIYW5kbGUoX3N1YnByb2Nlc3MuU1REX09VVFBVVF9IQU5ETEUpCisgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBfd2luYXBpLkdldFN0ZEhhbmRsZShfd2luYXBpLlNURF9PVVRQVVRfSEFORExFKQogICAgICAgICAgICAgICAgIGlmIGMycHdyaXRlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIF8sIGMycHdyaXRlID0gX3N1YnByb2Nlc3MuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBfLCBjMnB3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IEhhbmRsZShjMnB3cml0ZSkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShfKQogICAgICAgICAgICAgZWxpZiBzdGRvdXQgPT0gUElQRToKLSAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gSGFuZGxlKGMycHJlYWQpLCBIYW5kbGUoYzJwd3JpdGUpCisgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIGMycHdyaXRlID0gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoc2VsZi5fZ2V0X2Rldm51bGwoKSkKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRvdXQsIGludCk6CiAgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzdGRvdXQpCiAgICAgICAgICAgICBlbHNlOgpAQCAtODY1LDEzICs5ODQsMTggQEAKICAgICAgICAgICAgIGMycHdyaXRlID0gc2VsZi5fbWFrZV9pbmhlcml0YWJsZShjMnB3cml0ZSkKIAogICAgICAgICAgICAgaWYgc3RkZXJyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBfc3VicHJvY2Vzcy5HZXRTdGRIYW5kbGUoX3N1YnByb2Nlc3MuU1REX0VSUk9SX0hBTkRMRSkKKyAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IF93aW5hcGkuR2V0U3RkSGFuZGxlKF93aW5hcGkuU1REX0VSUk9SX0hBTkRMRSkKICAgICAgICAgICAgICAgICBpZiBlcnJ3cml0ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBfLCBlcnJ3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgXywgZXJyd3JpdGUgPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBIYW5kbGUoZXJyd3JpdGUpCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoXykKICAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IFBJUEU6Ci0gICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IEhhbmRsZShlcnJyZWFkKSwgSGFuZGxlKGVycndyaXRlKQogICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gU1RET1VUOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gYzJwd3JpdGUKKyAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzZWxmLl9nZXRfZGV2bnVsbCgpKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGVyciwgaW50KToKICAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHN0ZGVycikKICAgICAgICAgICAgIGVsc2U6CkBAIC04ODYsMjAgKzEwMTAsMjIgQEAKIAogICAgICAgICBkZWYgX21ha2VfaW5oZXJpdGFibGUoc2VsZiwgaGFuZGxlKToKICAgICAgICAgICAgICIiIlJldHVybiBhIGR1cGxpY2F0ZSBvZiBoYW5kbGUsIHdoaWNoIGlzIGluaGVyaXRhYmxlIiIiCi0gICAgICAgICAgICByZXR1cm4gX3N1YnByb2Nlc3MuRHVwbGljYXRlSGFuZGxlKF9zdWJwcm9jZXNzLkdldEN1cnJlbnRQcm9jZXNzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwgX3N1YnByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKSwgMCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuRFVQTElDQVRFX1NBTUVfQUNDRVNTKQorICAgICAgICAgICAgaCA9IF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgICAgIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwgaGFuZGxlLAorICAgICAgICAgICAgICAgIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwgMCwgMSwKKyAgICAgICAgICAgICAgICBfd2luYXBpLkRVUExJQ0FURV9TQU1FX0FDQ0VTUykKKyAgICAgICAgICAgIHJldHVybiBIYW5kbGUoaCkKIAogCiAgICAgICAgIGRlZiBfZmluZF93OXhwb3BlbihzZWxmKToKICAgICAgICAgICAgICIiIkZpbmQgYW5kIHJldHVybiBhYnNvbHV0IHBhdGggdG8gdzl4cG9wZW4uZXhlIiIiCiAgICAgICAgICAgICB3OXhwb3BlbiA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoX3N1YnByb2Nlc3MuR2V0TW9kdWxlRmlsZU5hbWUoMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShfd2luYXBpLkdldE1vZHVsZUZpbGVOYW1lKDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3OXhwb3Blbi5leGUiKQogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHc5eHBvcGVuKToKICAgICAgICAgICAgICAgICAjIEVlZWsgLSBmaWxlLW5vdC1mb3VuZCAtIHBvc3NpYmx5IGFuIGVtYmVkZGluZwogICAgICAgICAgICAgICAgICMgc2l0dWF0aW9uIC0gc2VlIGlmIHdlIGNhbiBsb2NhdGUgaXQgaW4gc3lzLmV4ZWNfcHJlZml4Ci0gICAgICAgICAgICAgICAgdzl4cG9wZW4gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5leGVjX3ByZWZpeCksCisgICAgICAgICAgICAgICAgdzl4cG9wZW4gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5iYXNlX2V4ZWNfcHJlZml4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidzl4cG9wZW4uZXhlIikKICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModzl4cG9wZW4pOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBsb2NhdGUgdzl4cG9wZW4uZXhlLCB3aGljaCBpcyAiCkBAIC05MDksNyArMTAzNSw3IEBACiAKIAogICAgICAgICBkZWYgX2V4ZWN1dGVfY2hpbGQoc2VsZiwgYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LCB1bml2ZXJzYWxfbmV3bGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlLApAQCAtOTI2LDE3ICsxMDUyLDE3IEBACiAgICAgICAgICAgICBpZiBzdGFydHVwaW5mbyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvID0gU1RBUlRVUElORk8oKQogICAgICAgICAgICAgaWYgLTEgbm90IGluIChwMmNyZWFkLCBjMnB3cml0ZSwgZXJyd3JpdGUpOgotICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmR3RmxhZ3MgfD0gX3N1YnByb2Nlc3MuU1RBUlRGX1VTRVNUREhBTkRMRVMKKyAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5kd0ZsYWdzIHw9IF93aW5hcGkuU1RBUlRGX1VTRVNUREhBTkRMRVMKICAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5oU3RkSW5wdXQgPSBwMmNyZWFkCiAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uaFN0ZE91dHB1dCA9IGMycHdyaXRlCiAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uaFN0ZEVycm9yID0gZXJyd3JpdGUKIAogICAgICAgICAgICAgaWYgc2hlbGw6Ci0gICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uZHdGbGFncyB8PSBfc3VicHJvY2Vzcy5TVEFSVEZfVVNFU0hPV1dJTkRPVwotICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLndTaG93V2luZG93ID0gX3N1YnByb2Nlc3MuU1dfSElERQorICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmR3RmxhZ3MgfD0gX3dpbmFwaS5TVEFSVEZfVVNFU0hPV1dJTkRPVworICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLndTaG93V2luZG93ID0gX3dpbmFwaS5TV19ISURFCiAgICAgICAgICAgICAgICAgY29tc3BlYyA9IG9zLmVudmlyb24uZ2V0KCJDT01TUEVDIiwgImNtZC5leGUiKQogICAgICAgICAgICAgICAgIGFyZ3MgPSAne30gL2MgInt9IicuZm9ybWF0IChjb21zcGVjLCBhcmdzKQotICAgICAgICAgICAgICAgIGlmIChfc3VicHJvY2Vzcy5HZXRWZXJzaW9uKCkgPj0gMHg4MDAwMDAwMCBvcgorICAgICAgICAgICAgICAgIGlmIChfd2luYXBpLkdldFZlcnNpb24oKSA+PSAweDgwMDAwMDAwIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKGNvbXNwZWMpLmxvd2VyKCkgPT0gImNvbW1hbmQuY29tIik6CiAgICAgICAgICAgICAgICAgICAgICMgV2luOXgsIG9yIHVzaW5nIGNvbW1hbmQuY29tIG9uIE5ULiBXZSBuZWVkIHRvCiAgICAgICAgICAgICAgICAgICAgICMgdXNlIHRoZSB3OXhwb3BlbiBpbnRlcm1lZGlhdGUgcHJvZ3JhbS4gRm9yIG1vcmUKQEAgLTk1MCwxMSArMTA3NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAjIHVzZSBhdCB4eHgiIGFuZCBhIGhvcGVmdWwgd2FybmluZyBhYm91dCB0aGUKICAgICAgICAgICAgICAgICAgICAgIyBzdGFiaWxpdHkgb2YgeW91ciBzeXN0ZW0uICBDb3N0IGlzIEN0cmwrQyB3b24ndAogICAgICAgICAgICAgICAgICAgICAjIGtpbGwgY2hpbGRyZW4uCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uZmxhZ3MgfD0gX3N1YnByb2Nlc3MuQ1JFQVRFX05FV19DT05TT0xFCisgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uZmxhZ3MgfD0gX3dpbmFwaS5DUkVBVEVfTkVXX0NPTlNPTEUKIAogICAgICAgICAgICAgIyBTdGFydCB0aGUgcHJvY2VzcwogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfc3VicHJvY2Vzcy5DcmVhdGVQcm9jZXNzKGV4ZWN1dGFibGUsIGFyZ3MsCisgICAgICAgICAgICAgICAgaHAsIGh0LCBwaWQsIHRpZCA9IF93aW5hcGkuQ3JlYXRlUHJvY2VzcyhleGVjdXRhYmxlLCBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vIHNwZWNpYWwgc2VjdXJpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KG5vdCBjbG9zZV9mZHMpLApAQCAtOTgxLDE3ICsxMTA3LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIGMycHdyaXRlLkNsb3NlKCkKICAgICAgICAgICAgICAgICBpZiBlcnJ3cml0ZSAhPSAtMToKICAgICAgICAgICAgICAgICAgICAgZXJyd3JpdGUuQ2xvc2UoKQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19kZXZudWxsJyk6CisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKHNlbGYuX2Rldm51bGwpCiAKICAgICAgICAgICAgICMgUmV0YWluIHRoZSBwcm9jZXNzIGhhbmRsZSwgYnV0IGNsb3NlIHRoZSB0aHJlYWQgaGFuZGxlCiAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gaHAKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IEhhbmRsZShocCkKICAgICAgICAgICAgIHNlbGYucGlkID0gcGlkCi0gICAgICAgICAgICBodC5DbG9zZSgpCisgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGh0KQogCiAgICAgICAgIGRlZiBfaW50ZXJuYWxfcG9sbChzZWxmLCBfZGVhZHN0YXRlPU5vbmUsCi0gICAgICAgICAgICAgICAgX1dhaXRGb3JTaW5nbGVPYmplY3Q9X3N1YnByb2Nlc3MuV2FpdEZvclNpbmdsZU9iamVjdCwKLSAgICAgICAgICAgICAgICBfV0FJVF9PQkpFQ1RfMD1fc3VicHJvY2Vzcy5XQUlUX09CSkVDVF8wLAotICAgICAgICAgICAgICAgIF9HZXRFeGl0Q29kZVByb2Nlc3M9X3N1YnByb2Nlc3MuR2V0RXhpdENvZGVQcm9jZXNzKToKKyAgICAgICAgICAgICAgICBfV2FpdEZvclNpbmdsZU9iamVjdD1fd2luYXBpLldhaXRGb3JTaW5nbGVPYmplY3QsCisgICAgICAgICAgICAgICAgX1dBSVRfT0JKRUNUXzA9X3dpbmFwaS5XQUlUX09CSkVDVF8wLAorICAgICAgICAgICAgICAgIF9HZXRFeGl0Q29kZVByb2Nlc3M9X3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3MpOgogICAgICAgICAgICAgIiIiQ2hlY2sgaWYgY2hpbGQgcHJvY2VzcyBoYXMgdGVybWluYXRlZC4gIFJldHVybnMgcmV0dXJuY29kZQogICAgICAgICAgICAgYXR0cmlidXRlLgogCkBAIC0xMDA1LDEzICsxMTMzLDIxIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKIAotICAgICAgICBkZWYgd2FpdChzZWxmKToKKyAgICAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lLCBlbmR0aW1lPU5vbmUpOgogICAgICAgICAgICAgIiIiV2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBSZXR1cm5zIHJldHVybmNvZGUKICAgICAgICAgICAgIGF0dHJpYnV0ZS4iIiIKKyAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpCisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dF9taWxsaXMgPSBfd2luYXBpLklORklOSVRFCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRpbWVvdXRfbWlsbGlzID0gaW50KHRpbWVvdXQgKiAxMDAwKQogICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuV2FpdEZvclNpbmdsZU9iamVjdChzZWxmLl9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5JTkZJTklURSkKLSAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBfc3VicHJvY2Vzcy5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IF93aW5hcGkuV2FpdEZvclNpbmdsZU9iamVjdChzZWxmLl9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9taWxsaXMpCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0ID09IF93aW5hcGkuV0FJVF9USU1FT1VUOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIHRpbWVvdXQpCisgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAKQEAgLTEwMjAsMjIgKzExNTYsMjMgQEAKICAgICAgICAgICAgIGZoLmNsb3NlKCkKIAogCi0gICAgICAgIGRlZiBfY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQpOgotICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZSAjIFJldHVybgotICAgICAgICAgICAgc3RkZXJyID0gTm9uZSAjIFJldHVybgotCi0gICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKLSAgICAgICAgICAgICAgICBzdGRvdXQgPSBbXQotICAgICAgICAgICAgICAgIHN0ZG91dF90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9yZWFkZXJ0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5zdGRvdXQsIHN0ZG91dCkpCi0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZC5zdGFydCgpCi0gICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKLSAgICAgICAgICAgICAgICBzdGRlcnIgPSBbXQotICAgICAgICAgICAgICAgIHN0ZGVycl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9yZWFkZXJ0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5zdGRlcnIsIHN0ZGVycikpCi0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZC5zdGFydCgpCisgICAgICAgIGRlZiBfY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CisgICAgICAgICAgICAjIFN0YXJ0IHJlYWRlciB0aHJlYWRzIGZlZWRpbmcgaW50byBhIGxpc3QgaGFuZ2luZyBvZmYgb2YgdGhpcworICAgICAgICAgICAgIyBvYmplY3QsIHVubGVzcyB0aGV5J3ZlIGFscmVhZHkgYmVlbiBzdGFydGVkLgorICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQgYW5kIG5vdCBoYXNhdHRyKHNlbGYsICJfc3Rkb3V0X2J1ZmYiKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXRfYnVmZiA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fcmVhZGVydGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZG91dCwgc2VsZi5fc3Rkb3V0X2J1ZmYpKQorICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0X3RocmVhZC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyIGFuZCBub3QgaGFzYXR0cihzZWxmLCAiX3N0ZGVycl9idWZmIik6CisgICAgICAgICAgICAgICAgc2VsZi5fc3RkZXJyX2J1ZmYgPSBbXQorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyX3RocmVhZCA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3JlYWRlcnRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5zdGRlcnIsIHNlbGYuX3N0ZGVycl9idWZmKSkKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycl90aHJlYWQuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyX3RocmVhZC5zdGFydCgpCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46CiAgICAgICAgICAgICAgICAgaWYgaW5wdXQgaXMgbm90IE5vbmU6CkBAIC0xMDQ2LDEwICsxMTgzLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmNsb3NlKCkKIAorICAgICAgICAgICAgIyBXYWl0IGZvciB0aGUgcmVhZGVyIHRocmVhZHMsIG9yIHRpbWUgb3V0LiAgSWYgd2UgdGltZSBvdXQsIHRoZQorICAgICAgICAgICAgIyB0aHJlYWRzIHJlbWFpbiByZWFkaW5nIGFuZCB0aGUgZmRzIGxlZnQgb3BlbiBpbiBjYXNlIHRoZSB1c2VyCisgICAgICAgICAgICAjIGNhbGxzIGNvbW11bmljYXRlIGFnYWluLgorICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkLmpvaW4oc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXRfdGhyZWFkLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkLmpvaW4oc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnJfdGhyZWFkLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorCisgICAgICAgICAgICAjIENvbGxlY3QgdGhlIG91dHB1dCBmcm9tIGFuZCBjbG9zZSBib3RoIHBpcGVzLCBub3cgdGhhdCB3ZSBrbm93CisgICAgICAgICAgICAjIGJvdGggaGF2ZSBiZWVuIHJlYWQgc3VjY2Vzc2Z1bGx5LgorICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZQorICAgICAgICAgICAgc3RkZXJyID0gTm9uZQogICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6Ci0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZC5qb2luKCkKKyAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl9zdGRvdXRfYnVmZgorICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmNsb3NlKCkKICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgotICAgICAgICAgICAgICAgIHN0ZGVycl90aHJlYWQuam9pbigpCisgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fc3RkZXJyX2J1ZmYKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5jbG9zZSgpCiAKICAgICAgICAgICAgICMgQWxsIGRhdGEgZXhjaGFuZ2VkLiAgVHJhbnNsYXRlIGxpc3RzIGludG8gc3RyaW5ncy4KICAgICAgICAgICAgIGlmIHN0ZG91dCBpcyBub3QgTm9uZToKQEAgLTEwNTcsNyArMTIxMiw2IEBACiAgICAgICAgICAgICBpZiBzdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3RkZXJyID0gc3RkZXJyWzBdCiAKLSAgICAgICAgICAgIHNlbGYud2FpdCgpCiAgICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCiAgICAgICAgIGRlZiBzZW5kX3NpZ25hbChzZWxmLCBzaWcpOgpAQCAtMTA3NiwxNCArMTIzMCwxMiBAQAogICAgICAgICAgICAgIiIiVGVybWluYXRlcyB0aGUgcHJvY2VzcwogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuVGVybWluYXRlUHJvY2VzcyhzZWxmLl9oYW5kbGUsIDEpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIF93aW5hcGkuVGVybWluYXRlUHJvY2VzcyhzZWxmLl9oYW5kbGUsIDEpCisgICAgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgICAgICMgRVJST1JfQUNDRVNTX0RFTklFRCAod2luZXJyb3IgNSkgaXMgcmVjZWl2ZWQgd2hlbiB0aGUKICAgICAgICAgICAgICAgICAjIHByb2Nlc3MgYWxyZWFkeSBkaWVkLgotICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgIT0gNToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICByYyA9IF9zdWJwcm9jZXNzLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCi0gICAgICAgICAgICAgICAgaWYgcmMgPT0gX3N1YnByb2Nlc3MuU1RJTExfQUNUSVZFOgorICAgICAgICAgICAgICAgIHJjID0gX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQorICAgICAgICAgICAgICAgIGlmIHJjID09IF93aW5hcGkuU1RJTExfQUNUSVZFOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHJjCiAKQEAgLTExMDUsNiArMTI1Nyw4IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxpZiBzdGRpbiA9PSBQSVBFOgogICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlID0gX2NyZWF0ZV9waXBlKCkKKyAgICAgICAgICAgIGVsaWYgc3RkaW4gPT0gREVWTlVMTDoKKyAgICAgICAgICAgICAgICBwMmNyZWFkID0gc2VsZi5fZ2V0X2Rldm51bGwoKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGluLCBpbnQpOgogICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBzdGRpbgogICAgICAgICAgICAgZWxzZToKQEAgLTExMTUsNiArMTI2OSw4IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxpZiBzdGRvdXQgPT0gUElQRToKICAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSA9IF9jcmVhdGVfcGlwZSgpCisgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIGMycHdyaXRlID0gc2VsZi5fZ2V0X2Rldm51bGwoKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZG91dCwgaW50KToKICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IHN0ZG91dAogICAgICAgICAgICAgZWxzZToKQEAgLTExMjcsNiArMTI4Myw4IEBACiAgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSBfY3JlYXRlX3BpcGUoKQogICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gU1RET1VUOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gYzJwd3JpdGUKKyAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBzZWxmLl9nZXRfZGV2bnVsbCgpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkZXJyLCBpbnQpOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gc3RkZXJyCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTE0OSw3ICsxMzA3LDcgQEAKIAogCiAgICAgICAgIGRlZiBfZXhlY3V0ZV9jaGlsZChzZWxmLCBhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCkBAIC0xMTU3LDcgKzEzMTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzLCBzdGFydF9uZXdfc2Vzc2lvbik6CiAgICAgICAgICAgICAiIiJFeGVjdXRlIHByb2dyYW0gKFBPU0lYIHZlcnNpb24pIiIiCiAKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJncywgc3RyKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJncywgKHN0ciwgYnl0ZXMpKToKICAgICAgICAgICAgICAgICBhcmdzID0gW2FyZ3NdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGFyZ3MgPSBsaXN0KGFyZ3MpCkBAIC0xMTc2LDE0OSArMTMzNCwzNCBAQAogICAgICAgICAgICAgZXJycGlwZV9yZWFkLCBlcnJwaXBlX3dyaXRlID0gX2NyZWF0ZV9waXBlKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgV2UgbXVzdCBhdm9pZCBjb21wbGV4IHdvcmsgdGhhdCBjb3VsZCBpbnZvbHZlCisgICAgICAgICAgICAgICAgICAgICMgbWFsbG9jIG9yIGZyZWUgaW4gdGhlIGNoaWxkIHByb2Nlc3MgdG8gYXZvaWQKKyAgICAgICAgICAgICAgICAgICAgIyBwb3RlbnRpYWwgZGVhZGxvY2tzLCB0aHVzIHdlIGRvIGFsbCB0aGlzIGhlcmUuCisgICAgICAgICAgICAgICAgICAgICMgYW5kIHBhc3MgaXQgdG8gZm9ya19leGVjKCkKIAotICAgICAgICAgICAgICAgICAgICBpZiBfcG9zaXhzdWJwcm9jZXNzOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBtdXN0IGF2b2lkIGNvbXBsZXggd29yayB0aGF0IGNvdWxkIGludm9sdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbWFsbG9jIG9yIGZyZWUgaW4gdGhlIGNoaWxkIHByb2Nlc3MgdG8gYXZvaWQKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcG90ZW50aWFsIGRlYWRsb2NrcywgdGh1cyB3ZSBkbyBhbGwgdGhpcyBoZXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgIyBhbmQgcGFzcyBpdCB0byBmb3JrX2V4ZWMoKQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlbnYgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBbb3MuZnNlbmNvZGUoaykgKyBiJz0nICsgb3MuZnNlbmNvZGUodikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBlbnYuaXRlbXMoKV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBOb25lICAjIFVzZSBleGVjdiBpbnN0ZWFkIG9mIGV4ZWN2ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5mc2VuY29kZShleGVjdXRhYmxlKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfbGlzdCA9IChleGVjdXRhYmxlLCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIG9zLl9leGVjdnBlKCkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gdHVwbGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5mc2VuY29kZShkaXIpLCBleGVjdXRhYmxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGlyIGluIG9zLmdldF9leGVjX3BhdGgoZW52KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwID0gc2V0KHBhc3NfZmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAuYWRkKGVycnBpcGVfd3JpdGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IF9wb3NpeHN1YnByb2Nlc3MuZm9ya19leGVjKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBleGVjdXRhYmxlX2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcywgc29ydGVkKGZkc190b19rZWVwKSwgY3dkLCBlbnZfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsIGMycHJlYWQsIGMycHdyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycGlwZV9yZWFkLCBlcnJwaXBlX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlX3NpZ25hbHMsIHN0YXJ0X25ld19zZXNzaW9uLCBwcmVleGVjX2ZuKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hpbGRfY3JlYXRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgaWYgZW52IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBbb3MuZnNlbmNvZGUoaykgKyBiJz0nICsgb3MuZnNlbmNvZGUodikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGVudi5pdGVtcygpXQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBQdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbjogSXQgaXMgbm90IHRocmVhZCBzYWZlLgotICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGltcGxlbWVudGF0aW9uIG1heSBkZWFkbG9jayBpbiB0aGUgY2hpbGQgaWYgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXJlbnQgcHJvY2VzcyBoYXMgYW55IG90aGVyIHRocmVhZHMgcnVubmluZy4KLQotICAgICAgICAgICAgICAgICAgICAgICAgZ2Nfd2FzX2VuYWJsZWQgPSBnYy5pc2VuYWJsZWQoKQotICAgICAgICAgICAgICAgICAgICAgICAgIyBEaXNhYmxlIGdjIHRvIGF2b2lkIGJ1ZyB3aGVyZSBnYyAtPiBmaWxlX2RlYWxsb2MgLT4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgd3JpdGUgdG8gc3RkZXJyIC0+IGhhbmcuICBTZWUgaXNzdWUxMzM2Ci0gICAgICAgICAgICAgICAgICAgICAgICBnYy5kaXNhYmxlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IG9zLmZvcmsoKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGdjX3dhc19lbmFibGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5lbmFibGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5waWQgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENoaWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlIHBhcmVudCdzIHBpcGUgZW5kcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwMmN3cml0ZSAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKHAyY3dyaXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjMnByZWFkICE9IC0xOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoYzJwcmVhZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJycmVhZCAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGVycnJlYWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGVycnBpcGVfcmVhZCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdoZW4gZHVwaW5nIGZkcywgaWYgdGhlcmUgYXJpc2VzIGEgc2l0dWF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2hlcmUgb25lIG9mIHRoZSBmZHMgaXMgZWl0aGVyIDAsIDEgb3IgMiwgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyBwb3NzaWJsZSB0aGF0IGl0IGlzIG92ZXJ3cml0dGVuICgjMTI2MDcpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjMnB3cml0ZSA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBvcy5kdXAoYzJwd3JpdGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVycndyaXRlID09IDAgb3IgZXJyd3JpdGUgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycndyaXRlID0gb3MuZHVwKGVycndyaXRlKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRHVwIGZkcyBmb3IgY2hpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmIF9kdXAyKGEsIGIpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkdXAyKCkgcmVtb3ZlcyB0aGUgQ0xPRVhFQyBmbGFnIGJ1dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZSBtdXN0IGRvIGl0IG91cnNlbHZlcyBpZiBkdXAyKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd291bGQgYmUgYSBuby1vcCAoaXNzdWUgIzEwODA2KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGEgPT0gYjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2V0X2Nsb2V4ZWMoYSwgRmFsc2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGEgIT0gLTE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZHVwMihhLCBiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZHVwMihwMmNyZWFkLCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZHVwMihjMnB3cml0ZSwgMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2R1cDIoZXJyd3JpdGUsIDIpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDbG9zZSBwaXBlIGZkcy4gIE1ha2Ugc3VyZSB3ZSBkb24ndCBjbG9zZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzYW1lIGZkIG1vcmUgdGhhbiBvbmNlLCBvciBzdGFuZGFyZCBmZHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZCA9IHNldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmZCBpbiBbcDJjcmVhZCwgYzJwd3JpdGUsIGVycndyaXRlXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZkID4gMiBhbmQgZmQgbm90IGluIGNsb3NlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWQuYWRkKGZkKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2xvc2UgYWxsIG90aGVyIGZkcywgaWYgYXNrZWQgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNsb3NlX2ZkczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwID0gc2V0KHBhc3NfZmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAuYWRkKGVycnBpcGVfd3JpdGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9mZHMoZmRzX3RvX2tlZXApCi0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjd2QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jaGRpcihjd2QpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgY29weSBvZiBQeXRob24vcHl0aG9ucnVuLmMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBfUHlfUmVzdG9yZVNpZ25hbHMoKS4gIElmIHRoYXQgd2VyZSBleHBvc2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXMgYSBzeXMuX3B5X3Jlc3RvcmVzaWduYWxzIGZ1bmMgaXQgd291bGQgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZXR0ZXIuLiBidXQgdGhpcyBwdXJlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlzbid0IGxpa2VseSB0byBiZSB1c2VkIG11Y2ggYW55bW9yZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVzdG9yZV9zaWduYWxzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFscyA9ICgnU0lHUElQRScsICdTSUdYRlonLCAnU0lHWEZTWicpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igc2lnIGluIHNpZ25hbHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzaWduYWwsIHNpZyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoZ2V0YXR0cihzaWduYWwsIHNpZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsLlNJR19ERkwpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RhcnRfbmV3X3Nlc3Npb24gYW5kIGhhc2F0dHIob3MsICdzZXRzaWQnKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnNldHNpZCgpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHJlZXhlY19mbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWV4ZWNfZm4oKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudiBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZXhlY3ZwKGV4ZWN1dGFibGUsIGFyZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5leGVjdnBlKGV4ZWN1dGFibGUsIGFyZ3MsIGVudikKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSA9IHN5cy5leGNfaW5mbygpWzoyXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleGNfdmFsdWUsIE9TRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX251bSA9IGV4Y192YWx1ZS5lcnJubwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19udW0gPSAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gJyVzOiV4OiVzJyAlIChleGNfdHlwZS5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX251bSwgZXhjX3ZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKGVycm9ycz0ic3Vycm9nYXRlcGFzcyIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy53cml0ZShlcnJwaXBlX3dyaXRlLCBtZXNzYWdlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBNVVNUIG5vdCBhbGxvdyBhbnl0aGluZyBvZGQgaGFwcGVuaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFib3ZlIHRvIHByZXZlbnQgdXMgZnJvbSBleGl0aW5nIGJlbG93LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGV4aXRjb2RlIHdvbid0IGJlIHJlcG9ydGVkIHRvIGFwcGxpY2F0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc28gaXQgcmVhbGx5IGRvZXNuJ3QgbWF0dGVyIHdoYXQgd2UgcmV0dXJuLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KDI1NSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgIyBQYXJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGdjX3dhc19lbmFibGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IE5vbmUgICMgVXNlIGV4ZWN2IGluc3RlYWQgb2YgZXhlY3ZlLgorICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gb3MuZnNlbmNvZGUoZXhlY3V0YWJsZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gKGV4ZWN1dGFibGUsKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIG9zLl9leGVjdnBlKCkuCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlX2xpc3QgPSB0dXBsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuZnNlbmNvZGUoZGlyKSwgZXhlY3V0YWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGlyIGluIG9zLmdldF9leGVjX3BhdGgoZW52KSkKKyAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAgPSBzZXQocGFzc19mZHMpCisgICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwLmFkZChlcnJwaXBlX3dyaXRlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IF9wb3NpeHN1YnByb2Nlc3MuZm9ya19leGVjKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGV4ZWN1dGFibGVfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHMsIHNvcnRlZChmZHNfdG9fa2VlcCksIGN3ZCwgZW52X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsIGMycHJlYWQsIGMycHdyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnBpcGVfcmVhZCwgZXJycGlwZV93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlX3NpZ25hbHMsIHN0YXJ0X25ld19zZXNzaW9uLCBwcmVleGVjX2ZuKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgICMgYmUgc3VyZSB0aGUgRkQgaXMgY2xvc2VkIG5vIG1hdHRlciB3aGF0CiAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGVycnBpcGVfd3JpdGUpCkBAIC0xMzI5LDYgKzEzNzIsOCBAQAogICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShjMnB3cml0ZSkKICAgICAgICAgICAgICAgICBpZiBlcnJ3cml0ZSAhPSAtMSBhbmQgZXJycmVhZCAhPSAtMToKICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZXJyd3JpdGUpCisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2Rldm51bGwnKToKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fZGV2bnVsbCkKIAogICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgZXhlYyB0byBmYWlsIG9yIHN1Y2NlZWQ7IHBvc3NpYmx5IHJhaXNpbmcgYW4KICAgICAgICAgICAgICAgICAjIGV4Y2VwdGlvbiAobGltaXRlZCBpbiBzaXplKQpAQCAtMTQwNiwyNSArMTQ1MSw1NyBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAKLSAgICAgICAgZGVmIHdhaXQoc2VsZik6CisgICAgICAgIGRlZiBfdHJ5X3dhaXQoc2VsZiwgd2FpdF9mbGFncyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgKHBpZCwgc3RzKSA9IF9laW50cl9yZXRyeV9jYWxsKG9zLndhaXRwaWQsIHNlbGYucGlkLCB3YWl0X2ZsYWdzKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDSElMRDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAjIFRoaXMgaGFwcGVucyBpZiBTSUdDTEQgaXMgc2V0IHRvIGJlIGlnbm9yZWQgb3Igd2FpdGluZworICAgICAgICAgICAgICAgICMgZm9yIGNoaWxkIHByb2Nlc3NlcyBoYXMgb3RoZXJ3aXNlIGJlZW4gZGlzYWJsZWQgZm9yIG91cgorICAgICAgICAgICAgICAgICMgcHJvY2Vzcy4gIFRoaXMgY2hpbGQgaXMgZGVhZCwgd2UgY2FuJ3QgZ2V0IHRoZSBzdGF0dXMuCisgICAgICAgICAgICAgICAgcGlkID0gc2VsZi5waWQKKyAgICAgICAgICAgICAgICBzdHMgPSAwCisgICAgICAgICAgICByZXR1cm4gKHBpZCwgc3RzKQorCisKKyAgICAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lLCBlbmR0aW1lPU5vbmUpOgogICAgICAgICAgICAgIiIiV2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBSZXR1cm5zIHJldHVybmNvZGUKICAgICAgICAgICAgIGF0dHJpYnV0ZS4iIiIKLSAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcGlkLCBzdHMgPSBfZWludHJfcmV0cnlfY2FsbChvcy53YWl0cGlkLCBzZWxmLnBpZCwgMCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDSElMRDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGlmIFNJR0NMRCBpcyBzZXQgdG8gYmUgaWdub3JlZCBvciB3YWl0aW5nCi0gICAgICAgICAgICAgICAgICAgICMgZm9yIGNoaWxkIHByb2Nlc3NlcyBoYXMgb3RoZXJ3aXNlIGJlZW4gZGlzYWJsZWQgZm9yIG91cgotICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3MuICBUaGlzIGNoaWxkIGlzIGRlYWQsIHdlIGNhbid0IGdldCB0aGUgc3RhdHVzLgotICAgICAgICAgICAgICAgICAgICBzdHMgPSAwCisgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQorCisgICAgICAgICAgICAjIGVuZHRpbWUgaXMgcHJlZmVycmVkIHRvIHRpbWVvdXQuICB0aW1lb3V0IGlzIG9ubHkgdXNlZCBmb3IKKyAgICAgICAgICAgICMgcHJpbnRpbmcuCisgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lIG9yIHRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBlbmR0aW1lID0gX3RpbWUoKSArIHRpbWVvdXQKKyAgICAgICAgICAgICAgICBlbGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpCisKKyAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBFbnRlciBhIGJ1c3kgbG9vcCBpZiB3ZSBoYXZlIGEgdGltZW91dC4gIFRoaXMgYnVzeSBsb29wIHdhcworICAgICAgICAgICAgICAgICMgY3JpYmJlZCBmcm9tIExpYi90aHJlYWRpbmcucHkgaW4gVGhyZWFkLndhaXQoKSBhdCByNzEwNjUuCisgICAgICAgICAgICAgICAgZGVsYXkgPSAwLjAwMDUgIyA1MDAgdXMgLT4gaW5pdGlhbCBkZWxheSBvZiAxIG1zCisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgKHBpZCwgc3RzKSA9IHNlbGYuX3RyeV93YWl0KG9zLldOT0hBTkcpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBwaWQgPT0gc2VsZi5waWQgb3IgcGlkID09IDAKKyAgICAgICAgICAgICAgICAgICAgaWYgcGlkID09IHNlbGYucGlkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2V4aXRzdGF0dXMoc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nIDw9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIHRpbWVvdXQpCisgICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gbWluKGRlbGF5ICogMiwgcmVtYWluaW5nLCAuMDUpCisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoZGVsYXkpCisgICAgICAgICAgICBlbGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIChwaWQsIHN0cykgPSBzZWxmLl90cnlfd2FpdCgwKQogICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9leGl0c3RhdHVzKHN0cykKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogCi0gICAgICAgIGRlZiBfY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQpOgotICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKKyAgICAgICAgZGVmIF9jb21tdW5pY2F0ZShzZWxmLCBpbnB1dCwgZW5kdGltZSwgb3JpZ190aW1lb3V0KToKKyAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CiAgICAgICAgICAgICAgICAgIyBGbHVzaCBzdGRpbyBidWZmZXIuICBUaGlzIG1pZ2h0IGJsb2NrLCBpZiB0aGUgdXNlciBoYXMKICAgICAgICAgICAgICAgICAjIGJlZW4gd3JpdGluZyB0byAuc3RkaW4gaW4gYW4gdW5jb250cm9sbGVkIGZhc2hpb24uCiAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5mbHVzaCgpCkBAIC0xNDMyLDkgKzE1MDksMTMgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCiAKICAgICAgICAgICAgIGlmIF9oYXNfcG9sbDoKLSAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlX3dpdGhfcG9sbChpbnB1dCkKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlX3dpdGhfcG9sbChpbnB1dCwgZW5kdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnX3RpbWVvdXQpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fY29tbXVuaWNhdGVfd2l0aF9zZWxlY3QoaW5wdXQpCisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9jb21tdW5pY2F0ZV93aXRoX3NlbGVjdChpbnB1dCwgZW5kdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdfdGltZW91dCkKKworICAgICAgICAgICAgc2VsZi53YWl0KHRpbWVvdXQ9c2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkpCiAKICAgICAgICAgICAgICMgQWxsIGRhdGEgZXhjaGFuZ2VkLiAgVHJhbnNsYXRlIGxpc3RzIGludG8gc3RyaW5ncy4KICAgICAgICAgICAgIGlmIHN0ZG91dCBpcyBub3QgTm9uZToKQEAgLTE0NTIsNjcgKzE1MzMsOTIgQEAKICAgICAgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fdHJhbnNsYXRlX25ld2xpbmVzKHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmVuY29kaW5nKQogCi0gICAgICAgICAgICBzZWxmLndhaXQoKQogICAgICAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVycikKIAogCi0gICAgICAgIGRlZiBfY29tbXVuaWNhdGVfd2l0aF9wb2xsKHNlbGYsIGlucHV0KToKKyAgICAgICAgZGVmIF9zYXZlX2lucHV0KHNlbGYsIGlucHV0KToKKyAgICAgICAgICAgICMgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gdGhlIF9jb21tdW5pY2F0ZV93aXRoXyooKSBtZXRob2RzCisgICAgICAgICAgICAjIHNvIHRoYXQgaWYgd2UgdGltZSBvdXQgd2hpbGUgY29tbXVuaWNhdGluZywgd2UgY2FuIGNvbnRpbnVlCisgICAgICAgICAgICAjIHNlbmRpbmcgaW5wdXQgaWYgd2UgcmV0cnkuCisgICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBzZWxmLl9pbnB1dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCA9IDAKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dCA9IGlucHV0CisgICAgICAgICAgICAgICAgaWYgc2VsZi51bml2ZXJzYWxfbmV3bGluZXMgYW5kIGlucHV0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dCA9IHNlbGYuX2lucHV0LmVuY29kZShzZWxmLnN0ZGluLmVuY29kaW5nKQorCisKKyAgICAgICAgZGVmIF9jb21tdW5pY2F0ZV93aXRoX3BvbGwoc2VsZiwgaW5wdXQsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CiAgICAgICAgICAgICBzdGRvdXQgPSBOb25lICMgUmV0dXJuCiAgICAgICAgICAgICBzdGRlcnIgPSBOb25lICMgUmV0dXJuCi0gICAgICAgICAgICBmZDJmaWxlID0ge30KLSAgICAgICAgICAgIGZkMm91dHB1dCA9IHt9CisKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZmQyZmlsZSA9IHt9CiAKICAgICAgICAgICAgIHBvbGxlciA9IHNlbGVjdC5wb2xsKCkKICAgICAgICAgICAgIGRlZiByZWdpc3Rlcl9hbmRfYXBwZW5kKGZpbGVfb2JqLCBldmVudG1hc2spOgogICAgICAgICAgICAgICAgIHBvbGxlci5yZWdpc3RlcihmaWxlX29iai5maWxlbm8oKSwgZXZlbnRtYXNrKQotICAgICAgICAgICAgICAgIGZkMmZpbGVbZmlsZV9vYmouZmlsZW5vKCldID0gZmlsZV9vYmoKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJmaWxlW2ZpbGVfb2JqLmZpbGVubygpXSA9IGZpbGVfb2JqCiAKICAgICAgICAgICAgIGRlZiBjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmUoZmQpOgogICAgICAgICAgICAgICAgIHBvbGxlci51bnJlZ2lzdGVyKGZkKQotICAgICAgICAgICAgICAgIGZkMmZpbGVbZmRdLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBmZDJmaWxlLnBvcChmZCkKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJmaWxlW2ZkXS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fZmQyZmlsZS5wb3AoZmQpCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIGlucHV0OgogICAgICAgICAgICAgICAgIHJlZ2lzdGVyX2FuZF9hcHBlbmQoc2VsZi5zdGRpbiwgc2VsZWN0LlBPTExPVVQpCiAKKyAgICAgICAgICAgICMgT25seSBjcmVhdGUgdGhpcyBtYXBwaW5nIGlmIHdlIGhhdmVuJ3QgYWxyZWFkeS4KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZmQyb3V0cHV0ID0ge30KKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmQyb3V0cHV0W3NlbGYuc3Rkb3V0LmZpbGVubygpXSA9IFtdCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZkMm91dHB1dFtzZWxmLnN0ZGVyci5maWxlbm8oKV0gPSBbXQorCiAgICAgICAgICAgICBzZWxlY3RfUE9MTElOX1BPTExQUkkgPSBzZWxlY3QuUE9MTElOIHwgc2VsZWN0LlBPTExQUkkKICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgogICAgICAgICAgICAgICAgIHJlZ2lzdGVyX2FuZF9hcHBlbmQoc2VsZi5zdGRvdXQsIHNlbGVjdF9QT0xMSU5fUE9MTFBSSSkKLSAgICAgICAgICAgICAgICBmZDJvdXRwdXRbc2VsZi5zdGRvdXQuZmlsZW5vKCldID0gc3Rkb3V0ID0gW10KKyAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl9mZDJvdXRwdXRbc2VsZi5zdGRvdXQuZmlsZW5vKCldCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKICAgICAgICAgICAgICAgICByZWdpc3Rlcl9hbmRfYXBwZW5kKHNlbGYuc3RkZXJyLCBzZWxlY3RfUE9MTElOX1BPTExQUkkpCi0gICAgICAgICAgICAgICAgZmQyb3V0cHV0W3NlbGYuc3RkZXJyLmZpbGVubygpXSA9IHN0ZGVyciA9IFtdCisgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fZmQyb3V0cHV0W3NlbGYuc3RkZXJyLmZpbGVubygpXQogCi0gICAgICAgICAgICBpbnB1dF9vZmZzZXQgPSAwCi0gICAgICAgICAgICB3aGlsZSBmZDJmaWxlOgorICAgICAgICAgICAgc2VsZi5fc2F2ZV9pbnB1dChpbnB1dCkKKworICAgICAgICAgICAgd2hpbGUgc2VsZi5fZmQyZmlsZToKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKyAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGFuZCB0aW1lb3V0IDwgMDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZWFkeSA9IHBvbGxlci5wb2xsKCkKKyAgICAgICAgICAgICAgICAgICAgcmVhZHkgPSBwb2xsZXIucG9sbCh0aW1lb3V0KQogICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdID09IGVycm5vLkVJTlRSOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBzZWxmLl9jaGVja190aW1lb3V0KGVuZHRpbWUsIG9yaWdfdGltZW91dCkKIAogICAgICAgICAgICAgICAgICMgWFhYIFJld3JpdGUgdGhlc2UgdG8gdXNlIG5vbi1ibG9ja2luZyBJL08gb24gdGhlCiAgICAgICAgICAgICAgICAgIyBmaWxlIG9iamVjdHM7IHRoZXkgYXJlIG5vIGxvbmdlciB1c2luZyBDIHN0ZGlvIQogCiAgICAgICAgICAgICAgICAgZm9yIGZkLCBtb2RlIGluIHJlYWR5OgogICAgICAgICAgICAgICAgICAgICBpZiBtb2RlICYgc2VsZWN0LlBPTExPVVQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGlucHV0W2lucHV0X29mZnNldCA6IGlucHV0X29mZnNldCArIF9QSVBFX0JVRl0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5faW5wdXRbc2VsZi5faW5wdXRfb2Zmc2V0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X29mZnNldCArPSBvcy53cml0ZShmZCwgY2h1bmspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICs9IG9zLndyaXRlKGZkLCBjaHVuaykKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FUElQRToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfdW5yZWdpc3Rlcl9hbmRfcmVtb3ZlKGZkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlucHV0X29mZnNldCA+PSBsZW4oaW5wdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lucHV0X29mZnNldCA+PSBsZW4oc2VsZi5faW5wdXQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmUoZmQpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgbW9kZSAmIHNlbGVjdF9QT0xMSU5fUE9MTFBSSToKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKGZkLCA0MDk2KQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfdW5yZWdpc3Rlcl9hbmRfcmVtb3ZlKGZkKQotICAgICAgICAgICAgICAgICAgICAgICAgZmQyb3V0cHV0W2ZkXS5hcHBlbmQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZkMm91dHB1dFtmZF0uYXBwZW5kKGRhdGEpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIElnbm9yZSBoYW5nIHVwIG9yIGVycm9ycy4KICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX3VucmVnaXN0ZXJfYW5kX3JlbW92ZShmZCkKQEAgLTE1MjAsNjEgKzE2MjYsODMgQEAKICAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKIAotICAgICAgICBkZWYgX2NvbW11bmljYXRlX3dpdGhfc2VsZWN0KHNlbGYsIGlucHV0KToKLSAgICAgICAgICAgIHJlYWRfc2V0ID0gW10KLSAgICAgICAgICAgIHdyaXRlX3NldCA9IFtdCisgICAgICAgIGRlZiBfY29tbXVuaWNhdGVfd2l0aF9zZWxlY3Qoc2VsZiwgaW5wdXQsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfc2V0ID0gW10KKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zZXQgPSBbXQorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIGlucHV0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zZXQuYXBwZW5kKHNlbGYuc3RkaW4pCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfc2V0LmFwcGVuZChzZWxmLnN0ZG91dCkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9zZXQuYXBwZW5kKHNlbGYuc3RkZXJyKQorCisgICAgICAgICAgICBzZWxmLl9zYXZlX2lucHV0KGlucHV0KQorCiAgICAgICAgICAgICBzdGRvdXQgPSBOb25lICMgUmV0dXJuCiAgICAgICAgICAgICBzdGRlcnIgPSBOb25lICMgUmV0dXJuCiAKLSAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIGlucHV0OgotICAgICAgICAgICAgICAgIHdyaXRlX3NldC5hcHBlbmQoc2VsZi5zdGRpbikKICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgotICAgICAgICAgICAgICAgIHJlYWRfc2V0LmFwcGVuZChzZWxmLnN0ZG91dCkKLSAgICAgICAgICAgICAgICBzdGRvdXQgPSBbXQorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91dF9idWZmID0gW10KKyAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl9zdGRvdXRfYnVmZgogICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6Ci0gICAgICAgICAgICAgICAgcmVhZF9zZXQuYXBwZW5kKHNlbGYuc3RkZXJyKQotICAgICAgICAgICAgICAgIHN0ZGVyciA9IFtdCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RkZXJyX2J1ZmYgPSBbXQorICAgICAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuX3N0ZGVycl9idWZmCiAKLSAgICAgICAgICAgIGlucHV0X29mZnNldCA9IDAKLSAgICAgICAgICAgIHdoaWxlIHJlYWRfc2V0IG9yIHdyaXRlX3NldDoKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX3JlYWRfc2V0IG9yIHNlbGYuX3dyaXRlX3NldDoKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKyAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGFuZCB0aW1lb3V0IDwgMDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBybGlzdCwgd2xpc3QsIHhsaXN0ID0gc2VsZWN0LnNlbGVjdChyZWFkX3NldCwgd3JpdGVfc2V0LCBbXSkKKyAgICAgICAgICAgICAgICAgICAgKHJsaXN0LCB3bGlzdCwgeGxpc3QpID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChzZWxmLl9yZWFkX3NldCwgc2VsZi5fd3JpdGVfc2V0LCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCkKICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIGUuYXJnc1swXSA9PSBlcnJuby5FSU5UUjoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKKyAgICAgICAgICAgICAgICAjIEFjY29yZGluZyB0byB0aGUgZG9jcywgcmV0dXJuaW5nIHRocmVlIGVtcHR5IGxpc3RzIGluZGljYXRlcworICAgICAgICAgICAgICAgICMgdGhhdCB0aGUgdGltZW91dCBleHBpcmVkLgorICAgICAgICAgICAgICAgIGlmIG5vdCAocmxpc3Qgb3Igd2xpc3Qgb3IgeGxpc3QpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKKyAgICAgICAgICAgICAgICAjIFdlIGFsc28gY2hlY2sgd2hhdCB0aW1lIGl0IGlzIG91cnNlbHZlcyBmb3IgZ29vZCBtZWFzdXJlLgorICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3RpbWVvdXQoZW5kdGltZSwgb3JpZ190aW1lb3V0KQorCiAgICAgICAgICAgICAgICAgIyBYWFggUmV3cml0ZSB0aGVzZSB0byB1c2Ugbm9uLWJsb2NraW5nIEkvTyBvbiB0aGUKICAgICAgICAgICAgICAgICAjIGZpbGUgb2JqZWN0czsgdGhleSBhcmUgbm8gbG9uZ2VyIHVzaW5nIEMgc3RkaW8hCiAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGluIHdsaXN0OgotICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGlucHV0W2lucHV0X29mZnNldCA6IGlucHV0X29mZnNldCArIF9QSVBFX0JVRl0KKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLl9pbnB1dFtzZWxmLl9pbnB1dF9vZmZzZXQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCArIF9QSVBFX0JVRl0KICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfd3JpdHRlbiA9IG9zLndyaXRlKHNlbGYuc3RkaW4uZmlsZW5vKCksIGNodW5rKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FUElQRToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9zZXQucmVtb3ZlKHNlbGYuc3RkaW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfc2V0LnJlbW92ZShzZWxmLnN0ZGluKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfb2Zmc2V0ICs9IGJ5dGVzX3dyaXR0ZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlucHV0X29mZnNldCA+PSBsZW4oaW5wdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICs9IGJ5dGVzX3dyaXR0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lucHV0X29mZnNldCA+PSBsZW4oc2VsZi5faW5wdXQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX3NldC5yZW1vdmUoc2VsZi5zdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zZXQucmVtb3ZlKHNlbGYuc3RkaW4pCiAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dCBpbiBybGlzdDoKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG9zLnJlYWQoc2VsZi5zdGRvdXQuZmlsZW5vKCksIDEwMjQpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zZXQucmVtb3ZlKHNlbGYuc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9zZXQucmVtb3ZlKHNlbGYuc3Rkb3V0KQogICAgICAgICAgICAgICAgICAgICBzdGRvdXQuYXBwZW5kKGRhdGEpCiAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVyciBpbiBybGlzdDoKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG9zLnJlYWQoc2VsZi5zdGRlcnIuZmlsZW5vKCksIDEwMjQpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zZXQucmVtb3ZlKHNlbGYuc3RkZXJyKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9zZXQucmVtb3ZlKHNlbGYuc3RkZXJyKQogICAgICAgICAgICAgICAgICAgICBzdGRlcnIuYXBwZW5kKGRhdGEpCiAKICAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCkBAIC0xNTk0LDY4ICsxNzIyLDMgQEAKICAgICAgICAgICAgICIiIktpbGwgdGhlIHByb2Nlc3Mgd2l0aCBTSUdLSUxMCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIHNlbGYuc2VuZF9zaWduYWwoc2lnbmFsLlNJR0tJTEwpCi0KLQotZGVmIF9kZW1vX3Bvc2l4KCk6Ci0gICAgIwotICAgICMgRXhhbXBsZSAxOiBTaW1wbGUgcmVkaXJlY3Rpb246IEdldCBwcm9jZXNzIGxpc3QKLSAgICAjCi0gICAgcGxpc3QgPSBQb3BlbihbInBzIl0sIHN0ZG91dD1QSVBFKS5jb21tdW5pY2F0ZSgpWzBdCi0gICAgcHJpbnQoIlByb2Nlc3MgbGlzdDoiKQotICAgIHByaW50KHBsaXN0KQotCi0gICAgIwotICAgICMgRXhhbXBsZSAyOiBDaGFuZ2UgdWlkIGJlZm9yZSBleGVjdXRpbmcgY2hpbGQKLSAgICAjCi0gICAgaWYgb3MuZ2V0dWlkKCkgPT0gMDoKLSAgICAgICAgcCA9IFBvcGVuKFsiaWQiXSwgcHJlZXhlY19mbj1sYW1iZGE6IG9zLnNldHVpZCgxMDApKQotICAgICAgICBwLndhaXQoKQotCi0gICAgIwotICAgICMgRXhhbXBsZSAzOiBDb25uZWN0aW5nIHNldmVyYWwgc3VicHJvY2Vzc2VzCi0gICAgIwotICAgIHByaW50KCJMb29raW5nIGZvciAnaGRhJy4uLiIpCi0gICAgcDEgPSBQb3BlbihbImRtZXNnIl0sIHN0ZG91dD1QSVBFKQotICAgIHAyID0gUG9wZW4oWyJncmVwIiwgImhkYSJdLCBzdGRpbj1wMS5zdGRvdXQsIHN0ZG91dD1QSVBFKQotICAgIHByaW50KHJlcHIocDIuY29tbXVuaWNhdGUoKVswXSkpCi0KLSAgICAjCi0gICAgIyBFeGFtcGxlIDQ6IENhdGNoIGV4ZWN1dGlvbiBlcnJvcgotICAgICMKLSAgICBwcmludCgpCi0gICAgcHJpbnQoIlRyeWluZyBhIHdlaXJkIGZpbGUuLi4iKQotICAgIHRyeToKLSAgICAgICAgcHJpbnQoUG9wZW4oWyIvdGhpcy9wYXRoL2RvZXMvbm90L2V4aXN0Il0pLmNvbW11bmljYXRlKCkpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICBwcmludCgiVGhlIGZpbGUgZGlkbid0IGV4aXN0LiAgSSB0aG91Z2h0IHNvLi4uIikKLSAgICAgICAgICAgIHByaW50KCJDaGlsZCB0cmFjZWJhY2s6IikKLSAgICAgICAgICAgIHByaW50KGUuY2hpbGRfdHJhY2ViYWNrKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIkVycm9yIiwgZS5lcnJubykKLSAgICBlbHNlOgotICAgICAgICBwcmludCgiR29zaC4gIE5vIGVycm9yLiIsIGZpbGU9c3lzLnN0ZGVycikKLQotCi1kZWYgX2RlbW9fd2luZG93cygpOgotICAgICMKLSAgICAjIEV4YW1wbGUgMTogQ29ubmVjdGluZyBzZXZlcmFsIHN1YnByb2Nlc3NlcwotICAgICMKLSAgICBwcmludCgiTG9va2luZyBmb3IgJ1BST01QVCcgaW4gc2V0IG91dHB1dC4uLiIpCi0gICAgcDEgPSBQb3Blbigic2V0Iiwgc3Rkb3V0PVBJUEUsIHNoZWxsPVRydWUpCi0gICAgcDIgPSBQb3BlbignZmluZCAiUFJPTVBUIicsIHN0ZGluPXAxLnN0ZG91dCwgc3Rkb3V0PVBJUEUpCi0gICAgcHJpbnQocmVwcihwMi5jb21tdW5pY2F0ZSgpWzBdKSkKLQotICAgICMKLSAgICAjIEV4YW1wbGUgMjogU2ltcGxlIGV4ZWN1dGlvbiBvZiBwcm9ncmFtCi0gICAgIwotICAgIHByaW50KCJFeGVjdXRpbmcgY2FsYy4uLiIpCi0gICAgcCA9IFBvcGVuKCJjYWxjIikKLSAgICBwLndhaXQoKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgaWYgbXN3aW5kb3dzOgotICAgICAgICBfZGVtb193aW5kb3dzKCkKLSAgICBlbHNlOgotICAgICAgICBfZGVtb19wb3NpeCgpCmRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQppbmRleCBiMjE4M2Q4Li5iYTQwMjRmIDEwMDY0NAotLS0gYS9MaWIvc3lzY29uZmlnLnB5CisrKyBiL0xpYi9zeXNjb25maWcucHkKQEAgLTEsOCArMSw4IEBACi0iIiJQcm92aWRlIGFjY2VzcyB0byBQeXRob24ncyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgorIiIiQWNjZXNzIHRvIFB5dGhvbidzIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uIiIiCiAKLSIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKIGZyb20gb3MucGF0aCBpbXBvcnQgcGFyZGlyLCByZWFscGF0aAogCiBfX2FsbF9fID0gWwpAQCAtMTcsNTAgKzE3LDUwIEBACiAgICAgJ2dldF9weXRob25fdmVyc2lvbicsCiAgICAgJ2dldF9zY2hlbWVfbmFtZXMnLAogICAgICdwYXJzZV9jb25maWdfaCcsCi0gICAgXQorXQogCiBfSU5TVEFMTF9TQ0hFTUVTID0gewogICAgICdwb3NpeF9wcmVmaXgnOiB7Ci0gICAgICAgICdzdGRsaWInOiAne2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAorICAgICAgICAnc3RkbGliJzogJ3tpbnN0YWxsZWRfYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiAgICAgICAgICdwbGF0c3RkbGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiAgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAncGxhdGxpYic6ICd7cGxhdGJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdpbmNsdWRlJzoKLSAgICAgICAgICAgICd7YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH17YWJpZmxhZ3N9JywKKyAgICAgICAgICAgICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCiAgICAgICAgICdwbGF0aW5jbHVkZSc6Ci0gICAgICAgICAgICAne3BsYXRiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fXthYmlmbGFnc30nLAorICAgICAgICAgICAgJ3tpbnN0YWxsZWRfcGxhdGJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCiAgICAgICAgICdzY3JpcHRzJzogJ3tiYXNlfS9iaW4nLAogICAgICAgICAnZGF0YSc6ICd7YmFzZX0nLAogICAgICAgICB9LAogICAgICdwb3NpeF9ob21lJzogewotICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKKyAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L2xpYi9weXRob24nLAogICAgICAgICAncGxhdHN0ZGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCiAgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKICAgICAgICAgJ3BsYXRsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAotICAgICAgICAnaW5jbHVkZSc6ICd7YmFzZX0vaW5jbHVkZS9weXRob24nLAotICAgICAgICAncGxhdGluY2x1ZGUnOiAne2Jhc2V9L2luY2x1ZGUvcHl0aG9uJywKKyAgICAgICAgJ2luY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbicsCisgICAgICAgICdwbGF0aW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9uJywKICAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L2JpbicsCi0gICAgICAgICdkYXRhJyAgIDogJ3tiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3tiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ250JzogewotICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS9MaWInLAorICAgICAgICAnc3RkbGliJzogJ3tpbnN0YWxsZWRfYmFzZX0vTGliJywKICAgICAgICAgJ3BsYXRzdGRsaWInOiAne2Jhc2V9L0xpYicsCiAgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9MaWIvc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS9MaWIvc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICdpbmNsdWRlJzogJ3tiYXNlfS9JbmNsdWRlJywKLSAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tiYXNlfS9JbmNsdWRlJywKKyAgICAgICAgJ2luY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9JbmNsdWRlJywKKyAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vSW5jbHVkZScsCiAgICAgICAgICdzY3JpcHRzJzogJ3tiYXNlfS9TY3JpcHRzJywKLSAgICAgICAgJ2RhdGEnICAgOiAne2Jhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne2Jhc2V9JywKICAgICAgICAgfSwKICAgICAnb3MyJzogewotICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS9MaWInLAorICAgICAgICAnc3RkbGliJzogJ3tpbnN0YWxsZWRfYmFzZX0vTGliJywKICAgICAgICAgJ3BsYXRzdGRsaWInOiAne2Jhc2V9L0xpYicsCiAgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9MaWIvc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS9MaWIvc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICdpbmNsdWRlJzogJ3tiYXNlfS9JbmNsdWRlJywKLSAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tiYXNlfS9JbmNsdWRlJywKKyAgICAgICAgJ2luY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9JbmNsdWRlJywKKyAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vSW5jbHVkZScsCiAgICAgICAgICdzY3JpcHRzJzogJ3tiYXNlfS9TY3JpcHRzJywKLSAgICAgICAgJ2RhdGEnICAgOiAne2Jhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne2Jhc2V9JywKICAgICAgICAgfSwKICAgICAnb3MyX2hvbWUnOiB7CiAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAotICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ250X3VzZXInOiB7CiAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdH0nLApAQCAtNzgsNyArNzgsNyBAQAogICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdH0vSW5jbHVkZScsCiAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vU2NyaXB0cycsCi0gICAgICAgICdkYXRhJyAgIDogJ3t1c2VyYmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7dXNlcmJhc2V9JywKICAgICAgICAgfSwKICAgICAncG9zaXhfdXNlcic6IHsKICAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLApAQCAtODcsNyArODcsNyBAQAogICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCi0gICAgICAgICdkYXRhJyAgIDogJ3t1c2VyYmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7dXNlcmJhc2V9JywKICAgICAgICAgfSwKICAgICAnb3N4X2ZyYW1ld29ya191c2VyJzogewogICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbicsCkBAIC05NiwyMCArOTYsMjYgQEAKICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9uL3NpdGUtcGFja2FnZXMnLAogICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUnLAogICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCi0gICAgICAgICdkYXRhJyAgIDogJ3t1c2VyYmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7dXNlcmJhc2V9JywKICAgICAgICAgfSwKICAgICB9CiAKIF9TQ0hFTUVfS0VZUyA9ICgnc3RkbGliJywgJ3BsYXRzdGRsaWInLCAncHVyZWxpYicsICdwbGF0bGliJywgJ2luY2x1ZGUnLAogICAgICAgICAgICAgICAgICdzY3JpcHRzJywgJ2RhdGEnKQorCisgIyBGSVhNRSBkb24ndCByZWx5IG9uIHN5cy52ZXJzaW9uIGhlcmUsIGl0cyBmb3JtYXQgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsCisgIyBvZiBDUHl0aG9uLCB1c2Ugc3lzLnZlcnNpb25faW5mbyBvciBzeXMuaGV4dmVyc2lvbgogX1BZX1ZFUlNJT04gPSBzeXMudmVyc2lvbi5zcGxpdCgpWzBdCiBfUFlfVkVSU0lPTl9TSE9SVCA9IHN5cy52ZXJzaW9uWzozXQogX1BZX1ZFUlNJT05fU0hPUlRfTk9fRE9UID0gX1BZX1ZFUlNJT05bMF0gKyBfUFlfVkVSU0lPTlsyXQogX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkKK19CQVNFX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfcHJlZml4KQogX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY19wcmVmaXgpCitfQkFTRV9FWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfZXhlY19wcmVmaXgpCiBfQ09ORklHX1ZBUlMgPSBOb25lCiBfVVNFUl9CQVNFID0gTm9uZQogCisKIGRlZiBfc2FmZV9yZWFscGF0aChwYXRoKToKICAgICB0cnk6CiAgICAgICAgIHJldHVybiByZWFscGF0aChwYXRoKQpAQCAtMTMyLDE5ICsxMzgsMzUgQEAKIGlmIG9zLm5hbWUgPT0gIm50IiBhbmQgIlxccGNidWlsZFxcYW1kNjQiIGluIF9QUk9KRUNUX0JBU0VbLTE0Ol0ubG93ZXIoKToKICAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsIHBhcmRpciwgcGFyZGlyKSkKIAotZGVmIGlzX3B5dGhvbl9idWlsZCgpOgorIyBzZXQgZm9yIGNyb3NzIGJ1aWxkcworaWYgIl9QWVRIT05fUFJPSkVDVF9CQVNFIiBpbiBvcy5lbnZpcm9uOgorICAgIF9QUk9KRUNUX0JBU0UgPSBfc2FmZV9yZWFscGF0aChvcy5lbnZpcm9uWyJfUFlUSE9OX1BST0pFQ1RfQkFTRSJdKQorCitkZWYgX2lzX3B5dGhvbl9zb3VyY2VfZGlyKGQpOgogICAgIGZvciBmbiBpbiAoIlNldHVwLmRpc3QiLCAiU2V0dXAubG9jYWwiKToKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsICJNb2R1bGVzIiwgZm4pKToKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGQsICJNb2R1bGVzIiwgZm4pKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNlCiAKLV9QWVRIT05fQlVJTEQgPSBpc19weXRob25fYnVpbGQoKQorX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCitpZiBfc3lzX2hvbWUgYW5kIG9zLm5hbWUgPT0gJ250JyBhbmQgXAorICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgncGNidWlsZCcsICdwY2J1aWxkXFxhbWQ2NCcpKToKKyAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorICAgIGlmIF9zeXNfaG9tZS5lbmRzd2l0aCgncGNidWlsZCcpOiAgICMgbXVzdCBiZSBhbWQ2NAorICAgICAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorZGVmIGlzX3B5dGhvbl9idWlsZChjaGVja19ob21lPUZhbHNlKToKKyAgICBpZiBjaGVja19ob21lIGFuZCBfc3lzX2hvbWU6CisgICAgICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoX3N5c19ob21lKQorICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoX1BST0pFQ1RfQkFTRSkKKworX1BZVEhPTl9CVUlMRCA9IGlzX3B5dGhvbl9idWlsZChUcnVlKQogCiBpZiBfUFlUSE9OX0JVSUxEOgogICAgIGZvciBzY2hlbWUgaW4gKCdwb3NpeF9wcmVmaXgnLCAncG9zaXhfaG9tZScpOgogICAgICAgICBfSU5TVEFMTF9TQ0hFTUVTW3NjaGVtZV1bJ2luY2x1ZGUnXSA9ICd7c3JjZGlyfS9JbmNsdWRlJwogICAgICAgICBfSU5TVEFMTF9TQ0hFTUVTW3NjaGVtZV1bJ3BsYXRpbmNsdWRlJ10gPSAne3Byb2plY3RiYXNlfS8uJwogCisKIGRlZiBfc3Vic3RfdmFycyhzLCBsb2NhbF92YXJzKToKICAgICB0cnk6CiAgICAgICAgIHJldHVybiBzLmZvcm1hdCgqKmxvY2FsX3ZhcnMpCkBAIC0xNjEsNiArMTgzLDcgQEAKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHRhcmdldF9kaWN0W2tleV0gPSB2YWx1ZQogCisKIGRlZiBfZXhwYW5kX3ZhcnMoc2NoZW1lLCB2YXJzKToKICAgICByZXMgPSB7fQogICAgIGlmIHZhcnMgaXMgTm9uZToKQEAgLTE3MywyOSArMTk2LDQxIEBACiAgICAgICAgIHJlc1trZXldID0gb3MucGF0aC5ub3JtcGF0aChfc3Vic3RfdmFycyh2YWx1ZSwgdmFycykpCiAgICAgcmV0dXJuIHJlcwogCisKIGRlZiBfZ2V0X2RlZmF1bHRfc2NoZW1lKCk6CiAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgogICAgICAgICAjIHRoZSBkZWZhdWx0IHNjaGVtZSBmb3IgcG9zaXggaXMgcG9zaXhfcHJlZml4CiAgICAgICAgIHJldHVybiAncG9zaXhfcHJlZml4JwogICAgIHJldHVybiBvcy5uYW1lCiAKKwogZGVmIF9nZXR1c2VyYmFzZSgpOgogICAgIGVudl9iYXNlID0gb3MuZW52aXJvbi5nZXQoIlBZVEhPTlVTRVJCQVNFIiwgTm9uZSkKKwogICAgIGRlZiBqb2ludXNlcigqYXJncyk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmV4cGFuZHVzZXIob3MucGF0aC5qb2luKCphcmdzKSkKIAogICAgICMgd2hhdCBhYm91dCAnb3MyZW14JywgJ3Jpc2NvcycgPwogICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICAgYmFzZSA9IG9zLmVudmlyb24uZ2V0KCJBUFBEQVRBIikgb3IgIn4iCi0gICAgICAgIHJldHVybiBlbnZfYmFzZSBpZiBlbnZfYmFzZSBlbHNlIGpvaW51c2VyKGJhc2UsICJQeXRob24iKQorICAgICAgICBpZiBlbnZfYmFzZToKKyAgICAgICAgICAgIHJldHVybiBlbnZfYmFzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGpvaW51c2VyKGJhc2UsICJQeXRob24iKQogCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgogICAgICAgICBmcmFtZXdvcmsgPSBnZXRfY29uZmlnX3ZhcigiUFlUSE9ORlJBTUVXT1JLIikKICAgICAgICAgaWYgZnJhbWV3b3JrOgotICAgICAgICAgICAgcmV0dXJuIGVudl9iYXNlIGlmIGVudl9iYXNlIGVsc2Ugam9pbnVzZXIoIn4iLCAiTGlicmFyeSIsIGZyYW1ld29yaywgIiVkLiVkIiUoCi0gICAgICAgICAgICAgICAgc3lzLnZlcnNpb25faW5mb1s6Ml0pKQorICAgICAgICAgICAgaWYgZW52X2Jhc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVudl9iYXNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBqb2ludXNlcigifiIsICJMaWJyYXJ5IiwgZnJhbWV3b3JrLCAiJWQuJWQiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAKLSAgICByZXR1cm4gZW52X2Jhc2UgaWYgZW52X2Jhc2UgZWxzZSBqb2ludXNlcigifiIsICIubG9jYWwiKQorICAgIGlmIGVudl9iYXNlOgorICAgICAgICByZXR1cm4gZW52X2Jhc2UKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gam9pbnVzZXIoIn4iLCAiLmxvY2FsIikKIAogCiBkZWYgX3BhcnNlX21ha2VmaWxlKGZpbGVuYW1lLCB2YXJzPU5vbmUpOgpAQCAtMjA1LDcgKzI0MCw2IEBACiAgICAgb3B0aW9uYWwgZGljdGlvbmFyeSBpcyBwYXNzZWQgaW4gYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgaXQgaXMKICAgICB1c2VkIGluc3RlYWQgb2YgYSBuZXcgZGljdGlvbmFyeS4KICAgICAiIiIKLSAgICBpbXBvcnQgcmUKICAgICAjIFJlZ2V4ZXMgbmVlZGVkIGZvciBwYXJzaW5nIE1ha2VmaWxlIChhbmQgc2ltaWxhciBzeW50YXhlcywKICAgICAjIGxpa2Ugb2xkLXN0eWxlIFNldHVwIGZpbGVzKS4KICAgICBfdmFyaWFibGVfcnggPSByZS5jb21waWxlKCIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKQEAgLTI2Nyw3ICszMDEsOCBAQAogICAgICAgICAgICAgICAgICAgICBpdGVtID0gb3MuZW52aXJvbltuXQogCiAgICAgICAgICAgICAgICAgZWxpZiBuIGluIHJlbmFtZWRfdmFyaWFibGVzOgotICAgICAgICAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ1BZXycpIGFuZCBuYW1lWzM6XSBpbiByZW5hbWVkX3ZhcmlhYmxlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUuc3RhcnRzd2l0aCgnUFlfJykgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lWzM6XSBpbiByZW5hbWVkX3ZhcmlhYmxlcyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID0gIiIKIAogICAgICAgICAgICAgICAgICAgICBlbGlmICdQWV8nICsgbiBpbiBub3Rkb25lOgpAQCAtMzAwLDcgKzMzNSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gZG9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZVtuYW1lXSA9IHZhbHVlCiAKLQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIGJvZ3VzIHZhcmlhYmxlIHJlZmVyZW5jZSAoZS5nLiAicHJlZml4PSQvb3B0L3B5dGhvbiIpOwogICAgICAgICAgICAgICAgICMganVzdCBkcm9wIGl0IHNpbmNlIHdlIGNhbid0IGRlYWwKQEAgLTMyMCwxNCArMzU0LDE3IEBACiBkZWYgZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCk6CiAgICAgIiIiUmV0dXJuIHRoZSBwYXRoIG9mIHRoZSBNYWtlZmlsZS4iIiIKICAgICBpZiBfUFlUSE9OX0JVSUxEOgotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsICJNYWtlZmlsZSIpCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbihnZXRfcGF0aCgnc3RkbGliJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlnLXt9e30nLmZvcm1hdChfUFlfVkVSU0lPTl9TSE9SVCwgc3lzLmFiaWZsYWdzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdNYWtlZmlsZScpCisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oX3N5c19ob21lIG9yIF9QUk9KRUNUX0JBU0UsICJNYWtlZmlsZSIpCisgICAgaWYgaGFzYXR0cihzeXMsICdhYmlmbGFncycpOgorICAgICAgICBjb25maWdfZGlyX25hbWUgPSAnY29uZmlnLSVzJXMnICUgKF9QWV9WRVJTSU9OX1NIT1JULCBzeXMuYWJpZmxhZ3MpCisgICAgZWxzZToKKyAgICAgICAgY29uZmlnX2Rpcl9uYW1lID0gJ2NvbmZpZycKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKGdldF9wYXRoKCdzdGRsaWInKSwgY29uZmlnX2Rpcl9uYW1lLCAnTWFrZWZpbGUnKQogCi0KLWRlZiBfaW5pdF9wb3NpeCh2YXJzKToKLSAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCitkZWYgX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKToKKyAgICAiIiJHZW5lcmF0ZSB0aGUgUHl0aG9uIG1vZHVsZSBjb250YWluaW5nIGJ1aWxkLXRpbWUgdmFyaWFibGVzLiIiIgorICAgIGltcG9ydCBwcHJpbnQKKyAgICB2YXJzID0ge30KICAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBNYWtlZmlsZToKICAgICBtYWtlZmlsZSA9IGdldF9tYWtlZmlsZV9maWxlbmFtZSgpCiAgICAgdHJ5OgpAQCAtMzUzLDYgKzM5MCwxOSBAQAogICAgIGlmIF9QWVRIT05fQlVJTEQ6CiAgICAgICAgIHZhcnNbJ0xEU0hBUkVEJ10gPSB2YXJzWydCTERTSEFSRUQnXQogCisgICAgZGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ19zeXNjb25maWdkYXRhLnB5JykKKyAgICB3aXRoIG9wZW4oZGVzdGZpbGUsICd3JywgZW5jb2Rpbmc9J3V0ZjgnKSBhcyBmOgorICAgICAgICBmLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKKyAgICAgICAgICAgICAgICAnIHRoZSBzeXNjb25maWcgbW9kdWxlXG4nKQorICAgICAgICBmLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQorICAgICAgICBwcHJpbnQucHByaW50KHZhcnMsIHN0cmVhbT1mKQorCitkZWYgX2luaXRfcG9zaXgodmFycyk6CisgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgorICAgICMgX3N5c2NvbmZpZ2RhdGEgaXMgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUsIHNlZSBfZ2VuZXJhdGVfcG9zaXhfdmFycygpCisgICAgZnJvbSBfc3lzY29uZmlnZGF0YSBpbXBvcnQgYnVpbGRfdGltZV92YXJzCisgICAgdmFycy51cGRhdGUoYnVpbGRfdGltZV92YXJzKQorCiBkZWYgX2luaXRfbm9uX3Bvc2l4KHZhcnMpOgogICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgTlQiIiIKICAgICAjIHNldCBiYXNpYyBpbnN0YWxsIGRpcmVjdG9yaWVzCkBAIC0zNzYsNyArNDI2LDYgQEAKICAgICBvcHRpb25hbCBkaWN0aW9uYXJ5IGlzIHBhc3NlZCBpbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LCBpdCBpcwogICAgIHVzZWQgaW5zdGVhZCBvZiBhIG5ldyBkaWN0aW9uYXJ5LgogICAgICIiIgotICAgIGltcG9ydCByZQogICAgIGlmIHZhcnMgaXMgTm9uZToKICAgICAgICAgdmFycyA9IHt9CiAgICAgZGVmaW5lX3J4ID0gcmUuY29tcGlsZSgiI2RlZmluZSAoW0EtWl1bQS1aYS16MC05X10rKSAoLiopXG4iKQpAQCAtMzg5LDggKzQzOCwxMCBAQAogICAgICAgICBtID0gZGVmaW5lX3J4Lm1hdGNoKGxpbmUpCiAgICAgICAgIGlmIG06CiAgICAgICAgICAgICBuLCB2ID0gbS5ncm91cCgxLCAyKQotICAgICAgICAgICAgdHJ5OiB2ID0gaW50KHYpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjogcGFzcworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHYgPSBpbnQodikKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHZhcnNbbl0gPSB2CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtID0gdW5kZWZfcngubWF0Y2gobGluZSkKQEAgLTM5OCwyNyArNDQ5LDI5IEBACiAgICAgICAgICAgICAgICAgdmFyc1ttLmdyb3VwKDEpXSA9IDAKICAgICByZXR1cm4gdmFycwogCisKIGRlZiBnZXRfY29uZmlnX2hfZmlsZW5hbWUoKToKICAgICAiIiJSZXR1cm4gdGhlIHBhdGggb2YgcHljb25maWcuaC4iIiIKICAgICBpZiBfUFlUSE9OX0JVSUxEOgogICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6Ci0gICAgICAgICAgICBpbmNfZGlyID0gb3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsICJQQyIpCisgICAgICAgICAgICBpbmNfZGlyID0gb3MucGF0aC5qb2luKF9zeXNfaG9tZSBvciBfUFJPSkVDVF9CQVNFLCAiUEMiKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW5jX2RpciA9IF9QUk9KRUNUX0JBU0UKKyAgICAgICAgICAgIGluY19kaXIgPSBfc3lzX2hvbWUgb3IgX1BST0pFQ1RfQkFTRQogICAgIGVsc2U6CiAgICAgICAgIGluY19kaXIgPSBnZXRfcGF0aCgncGxhdGluY2x1ZGUnKQogICAgIHJldHVybiBvcy5wYXRoLmpvaW4oaW5jX2RpciwgJ3B5Y29uZmlnLmgnKQogCisKIGRlZiBnZXRfc2NoZW1lX25hbWVzKCk6CiAgICAgIiIiUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyB0aGUgc2NoZW1lcyBuYW1lcy4iIiIKLSAgICBzY2hlbWVzID0gbGlzdChfSU5TVEFMTF9TQ0hFTUVTLmtleXMoKSkKLSAgICBzY2hlbWVzLnNvcnQoKQotICAgIHJldHVybiB0dXBsZShzY2hlbWVzKQorICAgIHJldHVybiB0dXBsZShzb3J0ZWQoX0lOU1RBTExfU0NIRU1FUykpCisKIAogZGVmIGdldF9wYXRoX25hbWVzKCk6CiAgICAgIiIiUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyB0aGUgcGF0aHMgbmFtZXMuIiIiCiAgICAgcmV0dXJuIF9TQ0hFTUVfS0VZUwogCisKIGRlZiBnZXRfcGF0aHMoc2NoZW1lPV9nZXRfZGVmYXVsdF9zY2hlbWUoKSwgdmFycz1Ob25lLCBleHBhbmQ9VHJ1ZSk6CiAgICAgIiIiUmV0dXJuIGEgbWFwcGluZyBjb250YWluaW5nIGFuIGluc3RhbGwgc2NoZW1lLgogCkBAIC00MzAsNiArNDgzLDcgQEAKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gX0lOU1RBTExfU0NIRU1FU1tzY2hlbWVdCiAKKwogZGVmIGdldF9wYXRoKG5hbWUsIHNjaGVtZT1fZ2V0X2RlZmF1bHRfc2NoZW1lKCksIHZhcnM9Tm9uZSwgZXhwYW5kPVRydWUpOgogICAgICIiIlJldHVybiBhIHBhdGggY29ycmVzcG9uZGluZyB0byB0aGUgc2NoZW1lLgogCkBAIC00MzcsMTcgKzQ5MSwxNyBAQAogICAgICIiIgogICAgIHJldHVybiBnZXRfcGF0aHMoc2NoZW1lLCB2YXJzLCBleHBhbmQpW25hbWVdCiAKKwogZGVmIGdldF9jb25maWdfdmFycygqYXJncyk6CiAgICAgIiIiV2l0aCBubyBhcmd1bWVudHMsIHJldHVybiBhIGRpY3Rpb25hcnkgb2YgYWxsIGNvbmZpZ3VyYXRpb24KICAgICB2YXJpYWJsZXMgcmVsZXZhbnQgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLgogCiAgICAgT24gVW5peCwgdGhpcyBtZWFucyBldmVyeSB2YXJpYWJsZSBkZWZpbmVkIGluIFB5dGhvbidzIGluc3RhbGxlZCBNYWtlZmlsZTsKLSAgICBPbiBXaW5kb3dzIGFuZCBNYWMgT1MgaXQncyBhIG11Y2ggc21hbGxlciBzZXQuCisgICAgT24gV2luZG93cyBpdCdzIGEgbXVjaCBzbWFsbGVyIHNldC4KIAogICAgIFdpdGggYXJndW1lbnRzLCByZXR1cm4gYSBsaXN0IG9mIHZhbHVlcyB0aGF0IHJlc3VsdCBmcm9tIGxvb2tpbmcgdXAKICAgICBlYWNoIGFyZ3VtZW50IGluIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGRpY3Rpb25hcnkuCiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCiAgICAgZ2xvYmFsIF9DT05GSUdfVkFSUwogICAgIGlmIF9DT05GSUdfVkFSUyBpcyBOb25lOgogICAgICAgICBfQ09ORklHX1ZBUlMgPSB7fQpAQCAtNDU5LDcgKzUxMyw5IEBACiAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbiddID0gX1BZX1ZFUlNJT04KICAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uX3Nob3J0J10gPSBfUFlfVkVSU0lPTl9TSE9SVAogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fbm9kb3QnXSA9IF9QWV9WRVJTSU9OWzBdICsgX1BZX1ZFUlNJT05bMl0KKyAgICAgICAgX0NPTkZJR19WQVJTWydpbnN0YWxsZWRfYmFzZSddID0gX0JBU0VfUFJFRklYCiAgICAgICAgIF9DT05GSUdfVkFSU1snYmFzZSddID0gX1BSRUZJWAorICAgICAgICBfQ09ORklHX1ZBUlNbJ2luc3RhbGxlZF9wbGF0YmFzZSddID0gX0JBU0VfRVhFQ19QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydwbGF0YmFzZSddID0gX0VYRUNfUFJFRklYCiAgICAgICAgIF9DT05GSUdfVkFSU1sncHJvamVjdGJhc2UnXSA9IF9QUk9KRUNUX0JBU0UKICAgICAgICAgdHJ5OgpAQCAtNDc3LDg4ICs1MzMsMjggQEAKICAgICAgICAgIyB0aGUgaW5pdC1mdW5jdGlvbi4KICAgICAgICAgX0NPTkZJR19WQVJTWyd1c2VyYmFzZSddID0gX2dldHVzZXJiYXNlKCkKIAotICAgICAgICBpZiAnc3JjZGlyJyBub3QgaW4gX0NPTkZJR19WQVJTOgotICAgICAgICAgICAgX0NPTkZJR19WQVJTWydzcmNkaXInXSA9IF9QUk9KRUNUX0JBU0UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIF9DT05GSUdfVkFSU1snc3JjZGlyJ10gPSBfc2FmZV9yZWFscGF0aChfQ09ORklHX1ZBUlNbJ3NyY2RpciddKQotCi0KLSAgICAgICAgIyBDb252ZXJ0IHNyY2RpciBpbnRvIGFuIGFic29sdXRlIHBhdGggaWYgaXQgYXBwZWFycyBuZWNlc3NhcnkuCi0gICAgICAgICMgTm9ybWFsbHkgaXQgaXMgcmVsYXRpdmUgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gIEhvd2V2ZXIsIGR1cmluZwotICAgICAgICAjIHRlc3RpbmcsIGZvciBleGFtcGxlLCB3ZSBtaWdodCBiZSBydW5uaW5nIGEgbm9uLWluc3RhbGxlZCBweXRob24KLSAgICAgICAgIyBmcm9tIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4KLSAgICAgICAgaWYgX1BZVEhPTl9CVUlMRCBhbmQgb3MubmFtZSA9PSAicG9zaXgiOgotICAgICAgICAgICAgYmFzZSA9IF9QUk9KRUNUX0JBU0UKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjd2QgPSBvcy5nZXRjd2QoKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgY3dkID0gTm9uZQotICAgICAgICAgICAgaWYgKG5vdCBvcy5wYXRoLmlzYWJzKF9DT05GSUdfVkFSU1snc3JjZGlyJ10pIGFuZAotICAgICAgICAgICAgICAgIGJhc2UgIT0gY3dkKToKLSAgICAgICAgICAgICAgICAjIHNyY2RpciBpcyByZWxhdGl2ZSBhbmQgd2UgYXJlIG5vdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAjIGFzIHRoZSBleGVjdXRhYmxlLiBBc3N1bWUgZXhlY3V0YWJsZSBpcyBpbiB0aGUgYnVpbGQKLSAgICAgICAgICAgICAgICAjIGRpcmVjdG9yeSBhbmQgbWFrZSBzcmNkaXIgYWJzb2x1dGUuCi0gICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKGJhc2UsIF9DT05GSUdfVkFSU1snc3JjZGlyJ10pCi0gICAgICAgICAgICAgICAgX0NPTkZJR19WQVJTWydzcmNkaXInXSA9IG9zLnBhdGgubm9ybXBhdGgoc3JjZGlyKQotCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgIGtlcm5lbF92ZXJzaW9uID0gb3MudW5hbWUoKVsyXSAjIEtlcm5lbCB2ZXJzaW9uICg4LjQuMykKLSAgICAgICAgICAgIG1ham9yX3ZlcnNpb24gPSBpbnQoa2VybmVsX3ZlcnNpb24uc3BsaXQoJy4nKVswXSkKLQotICAgICAgICAgICAgaWYgbWFqb3JfdmVyc2lvbiA8IDg6Ci0gICAgICAgICAgICAgICAgIyBPbiBNYWMgT1MgWCBiZWZvcmUgMTAuNCwgY2hlY2sgaWYgLWFyY2ggYW5kIC1pc3lzcm9vdAotICAgICAgICAgICAgICAgICMgYXJlIGluIENGTEFHUyBvciBMREZMQUdTIGFuZCByZW1vdmUgdGhlbSBpZiB0aGV5IGFyZS4KLSAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbmVlZGVkIHdoZW4gYnVpbGRpbmcgZXh0ZW5zaW9ucyBvbiBhIDEwLjMgc3lzdGVtCi0gICAgICAgICAgICAgICAgIyB1c2luZyBhIHVuaXZlcnNhbCBidWlsZCBvZiBweXRob24uCi0gICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIG9mIGRlcml2ZWQgdmFyaWFibGVzLiBUaGVzZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICdDRkxBR1MnLCAnUFlfQ0ZMQUdTJywgJ0JMRFNIQVJFRCcpOgotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9DT05GSUdfVkFSU1trZXldCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1pc3lzcm9vdCBbXiBcdF0qJywgJyAnLCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgX0NPTkZJR19WQVJTW2tleV0gPSBmbGFncworICAgICAgICAjIEFsd2F5cyBjb252ZXJ0IHNyY2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCisgICAgICAgIHNyY2RpciA9IF9DT05GSUdfVkFSUy5nZXQoJ3NyY2RpcicsIF9QUk9KRUNUX0JBU0UpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIGlmIF9QWVRIT05fQlVJTEQ6CisgICAgICAgICAgICAgICAgIyBJZiBzcmNkaXIgaXMgYSByZWxhdGl2ZSBwYXRoICh0eXBpY2FsbHkgJy4nIG9yICcuLicpCisgICAgICAgICAgICAgICAgIyB0aGVuIGl0IHNob3VsZCBiZSBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgIyBjb250YWluaW5nIE1ha2VmaWxlLgorICAgICAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKGJhc2UsIHNyY2RpcikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBBbGxvdyB0aGUgdXNlciB0byBvdmVycmlkZSB0aGUgYXJjaGl0ZWN0dXJlIGZsYWdzIHVzaW5nCi0gICAgICAgICAgICAgICAgIyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICAjIE5PVEU6IFRoaXMgbmFtZSB3YXMgaW50cm9kdWNlZCBieSBBcHBsZSBpbiBPU1ggMTAuNSBhbmQKLSAgICAgICAgICAgICAgICAjIGlzIHVzZWQgYnkgc2V2ZXJhbCBzY3JpcHRpbmcgbGFuZ3VhZ2VzIGRpc3RyaWJ1dGVkIHdpdGgKLSAgICAgICAgICAgICAgICAjIHRoYXQgT1MgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICBpZiAnQVJDSEZMQUdTJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgICAgICBhcmNoID0gb3MuZW52aXJvblsnQVJDSEZMQUdTJ10KLSAgICAgICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIG9mIGRlcml2ZWQgdmFyaWFibGVzLiBUaGVzZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICdDRkxBR1MnLCAnUFlfQ0ZMQUdTJywgJ0JMRFNIQVJFRCcpOgorICAgICAgICAgICAgICAgICMgc3JjZGlyIGlzIG5vdCBtZWFuaW5nZnVsIHNpbmNlIHRoZSBpbnN0YWxsYXRpb24gaXMKKyAgICAgICAgICAgICAgICAjIHNwcmVhZCBhYm91dCB0aGUgZmlsZXN5c3RlbS4gIFdlIGNob29zZSB0aGUKKyAgICAgICAgICAgICAgICAjIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBNYWtlZmlsZSBzaW5jZSB3ZSBrbm93IGl0CisgICAgICAgICAgICAgICAgIyBleGlzdHMuCisgICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5kaXJuYW1lKGdldF9tYWtlZmlsZV9maWxlbmFtZSgpKQorICAgICAgICBfQ09ORklHX1ZBUlNbJ3NyY2RpciddID0gX3NhZmVfcmVhbHBhdGgoc3JjZGlyKQogCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9DT05GSUdfVkFSU1trZXldCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IGZsYWdzICsgJyAnICsgYXJjaAotICAgICAgICAgICAgICAgICAgICAgICAgX0NPTkZJR19WQVJTW2tleV0gPSBmbGFncwotCi0gICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSBvbiBPU1ggMTAuNSBvciBsYXRlciBhbmQgdGhlIHVzZXIgdHJpZXMgdG8KLSAgICAgICAgICAgICAgICAjIGNvbXBpbGVzIGFuIGV4dGVuc2lvbiB1c2luZyBhbiBTREsgdGhhdCBpcyBub3QgcHJlc2VudAotICAgICAgICAgICAgICAgICMgb24gdGhlIGN1cnJlbnQgbWFjaGluZSBpdCBpcyBiZXR0ZXIgdG8gbm90IHVzZSBhbiBTREsKLSAgICAgICAgICAgICAgICAjIHRoYW4gdG8gZmFpbC4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBUaGUgbWFqb3IgdXNlY2FzZSBmb3IgdGhpcyBpcyB1c2VycyB1c2luZyBhIFB5dGhvbi5vcmcKLSAgICAgICAgICAgICAgICAjIGJpbmFyeSBpbnN0YWxsZXIgIG9uIE9TWCAxMC42OiB0aGF0IGluc3RhbGxlciB1c2VzCi0gICAgICAgICAgICAgICAgIyB0aGUgMTAuNHUgU0RLLCBidXQgdGhhdCBTREsgaXMgbm90IGluc3RhbGxlZCBieSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgIyB3aGVuIHlvdSBpbnN0YWxsIFhjb2RlLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICBDRkxBR1MgPSBfQ09ORklHX1ZBUlMuZ2V0KCdDRkxBR1MnLCAnJykKLSAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKCctaXN5c3Jvb3RccysoXFMrKScsIENGTEFHUykKLSAgICAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZGsgPSBtLmdyb3VwKDEpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZGspOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgb2YgZGVyaXZlZCB2YXJpYWJsZXMuIFRoZXNlIG5lZWQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXRjaGVkIHVwIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NGTEFHUycsICdQWV9DRkxBR1MnLCAnQkxEU0hBUkVEJyk6Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9DT05GSUdfVkFSU1trZXldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1pc3lzcm9vdFxzK1xTKyhcc3wkKScsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NPTkZJR19WQVJTW2tleV0gPSBmbGFncworICAgICAgICAjIE9TIFggcGxhdGZvcm1zIHJlcXVpcmUgc3BlY2lhbCBjdXN0b21pemF0aW9uIHRvIGhhbmRsZQorICAgICAgICAjIG11bHRpLWFyY2hpdGVjdHVyZSwgbXVsdGktb3MtdmVyc2lvbiBpbnN0YWxsZXJzCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIGltcG9ydCBfb3N4X3N1cHBvcnQKKyAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5jdXN0b21pemVfY29uZmlnX3ZhcnMoX0NPTkZJR19WQVJTKQogCiAgICAgaWYgYXJnczoKICAgICAgICAgdmFscyA9IFtdCkBAIC01NjgsNiArNTY0LDcgQEAKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gX0NPTkZJR19WQVJTCiAKKwogZGVmIGdldF9jb25maWdfdmFyKG5hbWUpOgogICAgICIiIlJldHVybiB0aGUgdmFsdWUgb2YgYSBzaW5nbGUgdmFyaWFibGUgdXNpbmcgdGhlIGRpY3Rpb25hcnkgcmV0dXJuZWQgYnkKICAgICAnZ2V0X2NvbmZpZ192YXJzKCknLgpAQCAtNTc2LDYgKzU3Myw3IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIGdldF9jb25maWdfdmFycygpLmdldChuYW1lKQogCisKIGRlZiBnZXRfcGxhdGZvcm0oKToKICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBjdXJyZW50IHBsYXRmb3JtLgogCkBAIC02MDEsNyArNTk5LDYgQEAKIAogICAgIEZvciBvdGhlciBub24tUE9TSVggcGxhdGZvcm1zLCBjdXJyZW50bHkganVzdCByZXR1cm5zICdzeXMucGxhdGZvcm0nLgogICAgICIiIgotICAgIGltcG9ydCByZQogICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICAgIyBzbmlmZiBzeXMudmVyc2lvbiBmb3IgYXJjaGl0ZWN0dXJlLgogICAgICAgICBwcmVmaXggPSAiIGJpdCAoIgpAQCAtNjE3LDEwICs2MTQsMTMgQEAKICAgICAgICAgcmV0dXJuIHN5cy5wbGF0Zm9ybQogCiAgICAgaWYgb3MubmFtZSAhPSAicG9zaXgiIG9yIG5vdCBoYXNhdHRyKG9zLCAndW5hbWUnKToKLSAgICAgICAgIyBYWFggd2hhdCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlPyBOVCBpcyBJbnRlbCBvciBBbHBoYSwKLSAgICAgICAgIyBNYWMgT1MgaXMgTTY4ayBvciBQUEMsIGV0Yy4KKyAgICAgICAgIyBYWFggd2hhdCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlPyBOVCBpcyBJbnRlbCBvciBBbHBoYQogICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCiAKKyAgICAjIFNldCBmb3IgY3Jvc3MgYnVpbGRzIGV4cGxpY2l0bHkKKyAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gb3MuZW52aXJvblsiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIl0KKwogICAgICMgVHJ5IHRvIGRpc3Rpbmd1aXNoIHZhcmlvdXMgZmxhdm91cnMgb2YgVW5peAogICAgIG9zbmFtZSwgaG9zdCwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSA9IG9zLnVuYW1lKCkKIApAQCAtNjUxLDk3ICs2NTEsMTUgQEAKICAgICAgICAgcmV0dXJuICIlcy0lcy4lcyIgJSAob3NuYW1lLCB2ZXJzaW9uLCByZWxlYXNlKQogICAgIGVsaWYgb3NuYW1lWzo2XSA9PSAiY3lnd2luIjoKICAgICAgICAgb3NuYW1lID0gImN5Z3dpbiIKLSAgICAgICAgcmVsX3JlID0gcmUuY29tcGlsZSAocidbXGQuXSsnKQorICAgICAgICByZWxfcmUgPSByZS5jb21waWxlKHInW1xkLl0rJykKICAgICAgICAgbSA9IHJlbF9yZS5tYXRjaChyZWxlYXNlKQogICAgICAgICBpZiBtOgogICAgICAgICAgICAgcmVsZWFzZSA9IG0uZ3JvdXAoKQogICAgIGVsaWYgb3NuYW1lWzo2XSA9PSAiZGFyd2luIjoKLSAgICAgICAgIwotICAgICAgICAjIEZvciBvdXIgcHVycG9zZXMsIHdlJ2xsIGFzc3VtZSB0aGF0IHRoZSBzeXN0ZW0gdmVyc2lvbiBmcm9tCi0gICAgICAgICMgZGlzdHV0aWxzJyBwZXJzcGVjdGl2ZSBpcyB3aGF0IE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBpcyBzZXQKLSAgICAgICAgIyB0by4gVGhpcyBtYWtlcyB0aGUgY29tcGF0aWJpbGl0eSBzdG9yeSBhIGJpdCBtb3JlIHNhbmUgYmVjYXVzZSB0aGUKLSAgICAgICAgIyBtYWNoaW5lIGlzIGdvaW5nIHRvIGNvbXBpbGUgYW5kIGxpbmsgYXMgaWYgaXQgd2VyZQotICAgICAgICAjIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC4KLSAgICAgICAgIwotICAgICAgICBjZmd2YXJzID0gZ2V0X2NvbmZpZ192YXJzKCkKLSAgICAgICAgbWFjdmVyID0gY2ZndmFycy5nZXQoJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCcpCi0KLSAgICAgICAgaWYgMToKLSAgICAgICAgICAgICMgQWx3YXlzIGNhbGN1bGF0ZSB0aGUgcmVsZWFzZSBvZiB0aGUgcnVubmluZyBtYWNoaW5lLAotICAgICAgICAgICAgIyBuZWVkZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIGNhbiBidWlsZCBmYXQgYmluYXJpZXMgb3Igbm90LgotCi0gICAgICAgICAgICBtYWNyZWxlYXNlID0gbWFjdmVyCi0gICAgICAgICAgICAjIEdldCB0aGUgc3lzdGVtIHZlcnNpb24uIFJlYWRpbmcgdGhpcyBwbGlzdCBpcyBhIGRvY3VtZW50ZWQKLSAgICAgICAgICAgICMgd2F5IHRvIGdldCB0aGUgc3lzdGVtIHZlcnNpb24gKHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IKLSAgICAgICAgICAgICMgdGhlIEdlc3RhbHQgTWFuYWdlcikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmID0gb3BlbignL1N5c3RlbS9MaWJyYXJ5L0NvcmVTZXJ2aWNlcy9TeXN0ZW1WZXJzaW9uLnBsaXN0JykKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgICMgV2UncmUgb24gYSBwbGFpbiBkYXJ3aW4gYm94LCBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAjIGJlaGF2aW91ci4KLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJzxrZXk+UHJvZHVjdFVzZXJWaXNpYmxlVmVyc2lvbjwva2V5PlxzKicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInPHN0cmluZz4oLio/KTwvc3RyaW5nPicsIGYucmVhZCgpKQotICAgICAgICAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgbWFjcmVsZWFzZSA9ICcuJy5qb2luKG0uZ3JvdXAoMSkuc3BsaXQoJy4nKVs6Ml0pCi0gICAgICAgICAgICAgICAgICAgICMgZWxzZTogZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW91cgotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotCi0gICAgICAgIGlmIG5vdCBtYWN2ZXI6Ci0gICAgICAgICAgICBtYWN2ZXIgPSBtYWNyZWxlYXNlCi0KLSAgICAgICAgaWYgbWFjdmVyOgotICAgICAgICAgICAgcmVsZWFzZSA9IG1hY3ZlcgotICAgICAgICAgICAgb3NuYW1lID0gIm1hY29zeCIKLQotICAgICAgICAgICAgaWYgKG1hY3JlbGVhc2UgKyAnLicpID49ICcxMC40LicgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgJy1hcmNoJyBpbiBnZXRfY29uZmlnX3ZhcnMoKS5nZXQoJ0NGTEFHUycsICcnKS5zdHJpcCgpOgotICAgICAgICAgICAgICAgICMgVGhlIHVuaXZlcnNhbCBidWlsZCB3aWxsIGJ1aWxkIGZhdCBiaW5hcmllcywgYnV0IG5vdCBvbgotICAgICAgICAgICAgICAgICMgc3lzdGVtcyBiZWZvcmUgMTAuNAotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFRyeSB0byBkZXRlY3QgNC13YXkgdW5pdmVyc2FsIGJ1aWxkcywgdGhvc2UgaGF2ZSBtYWNoaW5lLXR5cGUKLSAgICAgICAgICAgICAgICAjICd1bml2ZXJzYWwnIGluc3RlYWQgb2YgJ2ZhdCcuCi0KLSAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKLSAgICAgICAgICAgICAgICBjZmxhZ3MgPSBnZXRfY29uZmlnX3ZhcnMoKS5nZXQoJ0NGTEFHUycpCi0KLSAgICAgICAgICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwoJy1hcmNoXHMrKFxTKyknLCBjZmxhZ3MpCi0gICAgICAgICAgICAgICAgYXJjaHMgPSB0dXBsZShzb3J0ZWQoc2V0KGFyY2hzKSkpCi0KLSAgICAgICAgICAgICAgICBpZiBsZW4oYXJjaHMpID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBhcmNoc1swXQotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdpbnRlbCcKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0MycKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgncHBjNjQnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0NjQnCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJywgJ3BwYzY0JywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3VuaXZlcnNhbCcKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAiRG9uJ3Qga25vdyBtYWNoaW5lIHZhbHVlIGZvciBhcmNocz0lciIlKGFyY2hzLCkpCi0KLSAgICAgICAgICAgIGVsaWYgbWFjaGluZSA9PSAnaTM4Nic6Ci0gICAgICAgICAgICAgICAgIyBPbiBPU1ggdGhlIG1hY2hpbmUgdHlwZSByZXR1cm5lZCBieSB1bmFtZSBpcyBhbHdheXMgdGhlCi0gICAgICAgICAgICAgICAgIyAzMi1iaXQgdmFyaWFudCwgZXZlbiBpZiB0aGUgZXhlY3V0YWJsZSBhcmNoaXRlY3R1cmUgaXMKLSAgICAgICAgICAgICAgICAjIHRoZSA2NC1iaXQgdmFyaWFudAotICAgICAgICAgICAgICAgIGlmIHN5cy5tYXhzaXplID49IDIqKjMyOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3g4Nl82NCcKLQotICAgICAgICAgICAgZWxpZiBtYWNoaW5lIGluICgnUG93ZXJQQycsICdQb3dlcl9NYWNpbnRvc2gnKToKLSAgICAgICAgICAgICAgICAjIFBpY2sgYSBzYW5lIG5hbWUgZm9yIHRoZSBQUEMgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICMgU2VlICdpMzg2JyBjYXNlCi0gICAgICAgICAgICAgICAgaWYgc3lzLm1heHNpemUgPj0gMioqMzI6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAncHBjNjQnCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdwcGMnCisgICAgICAgIGltcG9ydCBfb3N4X3N1cHBvcnQKKyAgICAgICAgb3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lID0gX29zeF9zdXBwb3J0LmdldF9wbGF0Zm9ybV9vc3goCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9jb25maWdfdmFycygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUpCiAKICAgICByZXR1cm4gIiVzLSVzLSVzIiAlIChvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUpCiAKQEAgLTc0OSwyMSArNjY3LDI3IEBACiBkZWYgZ2V0X3B5dGhvbl92ZXJzaW9uKCk6CiAgICAgcmV0dXJuIF9QWV9WRVJTSU9OX1NIT1JUCiAKKwogZGVmIF9wcmludF9kaWN0KHRpdGxlLCBkYXRhKToKICAgICBmb3IgaW5kZXgsIChrZXksIHZhbHVlKSBpbiBlbnVtZXJhdGUoc29ydGVkKGRhdGEuaXRlbXMoKSkpOgogICAgICAgICBpZiBpbmRleCA9PSAwOgotICAgICAgICAgICAgcHJpbnQoJ3swfTogJy5mb3JtYXQodGl0bGUpKQotICAgICAgICBwcmludCgnXHR7MH0gPSAiezF9IicuZm9ybWF0KGtleSwgdmFsdWUpKQorICAgICAgICAgICAgcHJpbnQoJyVzOiAnICUgKHRpdGxlKSkKKyAgICAgICAgcHJpbnQoJ1x0JXMgPSAiJXMiJyAlIChrZXksIHZhbHVlKSkKKwogCiBkZWYgX21haW4oKToKICAgICAiIiJEaXNwbGF5IGFsbCBpbmZvcm1hdGlvbiBzeXNjb25maWcgZGV0YWlucy4iIiIKLSAgICBwcmludCgnUGxhdGZvcm06ICJ7MH0iJy5mb3JtYXQoZ2V0X3BsYXRmb3JtKCkpKQotICAgIHByaW50KCdQeXRob24gdmVyc2lvbjogInswfSInLmZvcm1hdChnZXRfcHl0aG9uX3ZlcnNpb24oKSkpCi0gICAgcHJpbnQoJ0N1cnJlbnQgaW5zdGFsbGF0aW9uIHNjaGVtZTogInswfSInLmZvcm1hdChfZ2V0X2RlZmF1bHRfc2NoZW1lKCkpKQotICAgIHByaW50KCcnKQorICAgIGlmICctLWdlbmVyYXRlLXBvc2l4LXZhcnMnIGluIHN5cy5hcmd2OgorICAgICAgICBfZ2VuZXJhdGVfcG9zaXhfdmFycygpCisgICAgICAgIHJldHVybgorICAgIHByaW50KCdQbGF0Zm9ybTogIiVzIicgJSBnZXRfcGxhdGZvcm0oKSkKKyAgICBwcmludCgnUHl0aG9uIHZlcnNpb246ICIlcyInICUgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpCisgICAgcHJpbnQoJ0N1cnJlbnQgaW5zdGFsbGF0aW9uIHNjaGVtZTogIiVzIicgJSBfZ2V0X2RlZmF1bHRfc2NoZW1lKCkpCisgICAgcHJpbnQoKQogICAgIF9wcmludF9kaWN0KCdQYXRocycsIGdldF9wYXRocygpKQotICAgIHByaW50KCcnKQorICAgIHByaW50KCkKICAgICBfcHJpbnRfZGljdCgnVmFyaWFibGVzJywgZ2V0X2NvbmZpZ192YXJzKCkpCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGFibmFubnkucHkgYi9MaWIvdGFibmFubnkucHkKaW5kZXggNDZmODE2My4uNGE1NGY4OSAxMDA3NTUKLS0tIGEvTGliL3RhYm5hbm55LnB5CisrKyBiL0xpYi90YWJuYW5ueS5weQpAQCAtMTI2LDYgKzEyNiw5IEBACiAgICAgICAgICAgICBlbHNlOiBwcmludChmaWxlLCBiYWRsaW5lLCByZXByKGxpbmUpKQogICAgICAgICByZXR1cm4KIAorICAgIGZpbmFsbHk6CisgICAgICAgIGYuY2xvc2UoKQorCiAgICAgaWYgdmVyYm9zZToKICAgICAgICAgcHJpbnQoIiVyOiBDbGVhbiBiaWxsIG9mIGhlYWx0aC4iICUgKGZpbGUsKSkKIApkaWZmIC0tZ2l0IGEvTGliL3RhcmZpbGUucHkgYi9MaWIvdGFyZmlsZS5weQppbmRleCBmMjY5NTNlLi43YjlmNDA3IDEwMDY0NAotLS0gYS9MaWIvdGFyZmlsZS5weQorKysgYi9MaWIvdGFyZmlsZS5weQpAQCAtMjksOCArMjksNiBAQAogIiIiUmVhZCBmcm9tIGFuZCB3cml0ZSB0byB0YXIgZm9ybWF0IGFyY2hpdmVzLgogIiIiCiAKLV9fdmVyc2lvbl9fID0gIiRSZXZpc2lvbiQiCi0KIHZlcnNpb24gICAgID0gIjAuOS4wIgogX19hdXRob3JfXyAgPSAiTGFycyBHdXN0XHUwMGU0YmVsIChsYXJzQGd1c3RhZWJlbC5kZSkiCiBfX2RhdGVfXyAgICA9ICIkRGF0ZTogMjAxMS0wMi0yNSAxNzo0MjowMSArMDIwMCAoRnJpLCAyNSBGZWIgMjAxMSkgJCIKQEAgLTQyLDkgKzQwLDkgQEAKICMtLS0tLS0tLS0KIGltcG9ydCBzeXMKIGltcG9ydCBvcworaW1wb3J0IGlvCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3RhdAotaW1wb3J0IGVycm5vCiBpbXBvcnQgdGltZQogaW1wb3J0IHN0cnVjdAogaW1wb3J0IGNvcHkKQEAgLTI0Nyw4ICsyNDUsOCBAQAogICAgICAgIHRoZSBoaWdoIGJpdCBzZXQuIFNvIHdlIGNhbGN1bGF0ZSB0d28gY2hlY2tzdW1zLCB1bnNpZ25lZCBhbmQKICAgICAgICBzaWduZWQuCiAgICAgIiIiCi0gICAgdW5zaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2soIjE0OEIiLCBidWZbOjE0OF0pICsgc3RydWN0LnVucGFjaygiMzU2QiIsIGJ1ZlsxNTY6NTEyXSkpCi0gICAgc2lnbmVkX2Noa3N1bSA9IDI1NiArIHN1bShzdHJ1Y3QudW5wYWNrKCIxNDhiIiwgYnVmWzoxNDhdKSArIHN0cnVjdC51bnBhY2soIjM1NmIiLCBidWZbMTU2OjUxMl0pKQorICAgIHVuc2lnbmVkX2Noa3N1bSA9IDI1NiArIHN1bShzdHJ1Y3QudW5wYWNrX2Zyb20oIjE0OEI4eDM1NkIiLCBidWYpKQorICAgIHNpZ25lZF9jaGtzdW0gPSAyNTYgKyBzdW0oc3RydWN0LnVucGFja19mcm9tKCIxNDhiOHgzNTZiIiwgYnVmKSkKICAgICByZXR1cm4gdW5zaWduZWRfY2hrc3VtLCBzaWduZWRfY2hrc3VtCiAKIGRlZiBjb3B5ZmlsZW9iaihzcmMsIGRzdCwgbGVuZ3RoPU5vbmUpOgpAQCAtMjc2LDQ3ICsyNzQsMTMgQEAKICAgICAgICAgZHN0LndyaXRlKGJ1ZikKICAgICByZXR1cm4KIAotZmlsZW1vZGVfdGFibGUgPSAoCi0gICAgKChTX0lGTE5LLCAgICAgICJsIiksCi0gICAgIChTX0lGUkVHLCAgICAgICItIiksCi0gICAgIChTX0lGQkxLLCAgICAgICJiIiksCi0gICAgIChTX0lGRElSLCAgICAgICJkIiksCi0gICAgIChTX0lGQ0hSLCAgICAgICJjIiksCi0gICAgIChTX0lGSUZPLCAgICAgICJwIikpLAotCi0gICAgKChUVVJFQUQsICAgICAgICJyIiksKSwKLSAgICAoKFRVV1JJVEUsICAgICAgInciKSwpLAotICAgICgoVFVFWEVDfFRTVUlELCAicyIpLAotICAgICAoVFNVSUQsICAgICAgICAiUyIpLAotICAgICAoVFVFWEVDLCAgICAgICAieCIpKSwKLQotICAgICgoVEdSRUFELCAgICAgICAiciIpLCksCi0gICAgKChUR1dSSVRFLCAgICAgICJ3IiksKSwKLSAgICAoKFRHRVhFQ3xUU0dJRCwgInMiKSwKLSAgICAgKFRTR0lELCAgICAgICAgIlMiKSwKLSAgICAgKFRHRVhFQywgICAgICAgIngiKSksCi0KLSAgICAoKFRPUkVBRCwgICAgICAgInIiKSwpLAotICAgICgoVE9XUklURSwgICAgICAidyIpLCksCi0gICAgKChUT0VYRUN8VFNWVFgsICJ0IiksCi0gICAgIChUU1ZUWCwgICAgICAgICJUIiksCi0gICAgIChUT0VYRUMsICAgICAgICJ4IikpCi0pCi0KIGRlZiBmaWxlbW9kZShtb2RlKToKLSAgICAiIiJDb252ZXJ0IGEgZmlsZSdzIG1vZGUgdG8gYSBzdHJpbmcgb2YgdGhlIGZvcm0KLSAgICAgICAtcnd4cnd4cnd4LgotICAgICAgIFVzZWQgYnkgVGFyRmlsZS5saXN0KCkKLSAgICAiIiIKLSAgICBwZXJtID0gW10KLSAgICBmb3IgdGFibGUgaW4gZmlsZW1vZGVfdGFibGU6Ci0gICAgICAgIGZvciBiaXQsIGNoYXIgaW4gdGFibGU6Ci0gICAgICAgICAgICBpZiBtb2RlICYgYml0ID09IGJpdDoKLSAgICAgICAgICAgICAgICBwZXJtLmFwcGVuZChjaGFyKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwZXJtLmFwcGVuZCgiLSIpCi0gICAgcmV0dXJuICIiLmpvaW4ocGVybSkKKyAgICAiIiJEZXByZWNhdGVkIGluIHRoaXMgbG9jYXRpb247IHVzZSBzdGF0LmZpbGVtb2RlLiIiIgorICAgIGltcG9ydCB3YXJuaW5ncworICAgIHdhcm5pbmdzLndhcm4oImRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygc3RhdC5maWxlbW9kZSIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgcmV0dXJuIHN0YXQuZmlsZW1vZGUobW9kZSkKKwogCiBjbGFzcyBUYXJFcnJvcihFeGNlcHRpb24pOgogICAgICIiIkJhc2UgZXhjZXB0aW9uLiIiIgpAQCAtNDIzLDEwICszODcsMTEgQEAKICAgICAgICAgICAgICAgICBzZWxmLmNyYyA9IHpsaWIuY3JjMzIoYiIiKQogICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0gInIiOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbml0X3JlYWRfZ3ooKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmV4Y2VwdGlvbiA9IHpsaWIuZXJyb3IKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbml0X3dyaXRlX2d6KCkKIAotICAgICAgICAgICAgaWYgY29tcHR5cGUgPT0gImJ6MiI6CisgICAgICAgICAgICBlbGlmIGNvbXB0eXBlID09ICJiejIiOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGJ6MgogICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTQzNCw4ICszOTksMjUgQEAKICAgICAgICAgICAgICAgICBpZiBtb2RlID09ICJyIjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYnVmID0gYiIiCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY21wID0gYnoyLkJaMkRlY29tcHJlc3NvcigpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gSU9FcnJvcgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY21wID0gYnoyLkJaMkNvbXByZXNzb3IoKQorCisgICAgICAgICAgICBlbGlmIGNvbXB0eXBlID09ICJ4eiI6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgbHptYQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQ29tcHJlc3Npb25FcnJvcigibHptYSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCisgICAgICAgICAgICAgICAgaWYgbW9kZSA9PSAiciI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJ1ZiA9IGIiIgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNtcCA9IGx6bWEuTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gbHptYS5MWk1BRXJyb3IKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNtcCA9IGx6bWEuTFpNQUNvbXByZXNzb3IoKQorCisgICAgICAgICAgICBlbGlmIGNvbXB0eXBlICE9ICJ0YXIiOgorICAgICAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoInVua25vd24gY29tcHJlc3Npb24gdHlwZSAlciIgJSBjb21wdHlwZSkKKwogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZXh0ZmlsZW9iajoKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVvYmouY2xvc2UoKQpAQCAtNTg3LDcgKzU2OSw3IEBACiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBidWYgPSBzZWxmLmNtcC5kZWNvbXByZXNzKGJ1ZikKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgZXhjZXB0IHNlbGYuZXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcigiaW52YWxpZCBjb21wcmVzc2VkIGRhdGEiKQogICAgICAgICAgICAgc2VsZi5kYnVmICs9IGJ1ZgogICAgICAgICAgICAgYyArPSBsZW4oYnVmKQpAQCAtNjI1LDc2ICs2MDcsMTkgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuYnVmCiAKICAgICBkZWYgZ2V0Y29tcHR5cGUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuYnVmLnN0YXJ0c3dpdGgoYiJcMDM3XDIxM1wwMTAiKToKKyAgICAgICAgaWYgc2VsZi5idWYuc3RhcnRzd2l0aChiIlx4MWZceDhiXHgwOCIpOgogICAgICAgICAgICAgcmV0dXJuICJneiIKLSAgICAgICAgaWYgc2VsZi5idWZbMDozXSA9PSBiIkJaaCIgYW5kIHNlbGYuYnVmWzQ6MTBdID09IGIiMUFZJlNZIjoKKyAgICAgICAgZWxpZiBzZWxmLmJ1ZlswOjNdID09IGIiQlpoIiBhbmQgc2VsZi5idWZbNDoxMF0gPT0gYiIxQVkmU1kiOgogICAgICAgICAgICAgcmV0dXJuICJiejIiCi0gICAgICAgIHJldHVybiAidGFyIgorICAgICAgICBlbGlmIHNlbGYuYnVmLnN0YXJ0c3dpdGgoKGIiXHg1ZFx4MDBceDAwXHg4MCIsIGIiXHhmZDd6WFoiKSk6CisgICAgICAgICAgICByZXR1cm4gInh6IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICJ0YXIiCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIHNlbGYuZmlsZW9iai5jbG9zZSgpCiAjIGNsYXNzIFN0cmVhbVByb3h5CiAKLWNsYXNzIF9CWjJQcm94eShvYmplY3QpOgotICAgICIiIlNtYWxsIHByb3h5IGNsYXNzIHRoYXQgZW5hYmxlcyBleHRlcm5hbCBmaWxlIG9iamVjdAotICAgICAgIHN1cHBvcnQgZm9yICJyOmJ6MiIgYW5kICJ3OmJ6MiIgbW9kZXMuIFRoaXMgaXMgYWN0dWFsbHkKLSAgICAgICBhIHdvcmthcm91bmQgZm9yIGEgbGltaXRhdGlvbiBpbiBiejIgbW9kdWxlJ3MgQloyRmlsZQotICAgICAgIGNsYXNzIHdoaWNoICh1bmxpa2UgZ3ppcC5HemlwRmlsZSkgaGFzIG5vIHN1cHBvcnQgZm9yCi0gICAgICAgYSBmaWxlIG9iamVjdCBhcmd1bWVudC4KLSAgICAiIiIKLQotICAgIGJsb2Nrc2l6ZSA9IDE2ICogMTAyNAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVvYmosIG1vZGUpOgotICAgICAgICBzZWxmLmZpbGVvYmogPSBmaWxlb2JqCi0gICAgICAgIHNlbGYubW9kZSA9IG1vZGUKLSAgICAgICAgc2VsZi5uYW1lID0gZ2V0YXR0cihzZWxmLmZpbGVvYmosICJuYW1lIiwgTm9uZSkKLSAgICAgICAgc2VsZi5pbml0KCkKLQotICAgIGRlZiBpbml0KHNlbGYpOgotICAgICAgICBpbXBvcnQgYnoyCi0gICAgICAgIHNlbGYucG9zID0gMAotICAgICAgICBpZiBzZWxmLm1vZGUgPT0gInIiOgotICAgICAgICAgICAgc2VsZi5iejJvYmogPSBiejIuQloyRGVjb21wcmVzc29yKCkKLSAgICAgICAgICAgIHNlbGYuZmlsZW9iai5zZWVrKDApCi0gICAgICAgICAgICBzZWxmLmJ1ZiA9IGIiIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5iejJvYmogPSBiejIuQloyQ29tcHJlc3NvcigpCi0KLSAgICBkZWYgcmVhZChzZWxmLCBzaXplKToKLSAgICAgICAgeCA9IGxlbihzZWxmLmJ1ZikKLSAgICAgICAgd2hpbGUgeCA8IHNpemU6Ci0gICAgICAgICAgICByYXcgPSBzZWxmLmZpbGVvYmoucmVhZChzZWxmLmJsb2Nrc2l6ZSkKLSAgICAgICAgICAgIGlmIG5vdCByYXc6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLmJ6Mm9iai5kZWNvbXByZXNzKHJhdykKLSAgICAgICAgICAgIHNlbGYuYnVmICs9IGRhdGEKLSAgICAgICAgICAgIHggKz0gbGVuKGRhdGEpCi0KLSAgICAgICAgYnVmID0gc2VsZi5idWZbOnNpemVdCi0gICAgICAgIHNlbGYuYnVmID0gc2VsZi5idWZbc2l6ZTpdCi0gICAgICAgIHNlbGYucG9zICs9IGxlbihidWYpCi0gICAgICAgIHJldHVybiBidWYKLQotICAgIGRlZiBzZWVrKHNlbGYsIHBvcyk6Ci0gICAgICAgIGlmIHBvcyA8IHNlbGYucG9zOgotICAgICAgICAgICAgc2VsZi5pbml0KCkKLSAgICAgICAgc2VsZi5yZWFkKHBvcyAtIHNlbGYucG9zKQotCi0gICAgZGVmIHRlbGwoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnBvcwotCi0gICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLnBvcyArPSBsZW4oZGF0YSkKLSAgICAgICAgcmF3ID0gc2VsZi5iejJvYmouY29tcHJlc3MoZGF0YSkKLSAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHJhdykKLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5tb2RlID09ICJ3IjoKLSAgICAgICAgICAgIHJhdyA9IHNlbGYuYnoyb2JqLmZsdXNoKCkKLSAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShyYXcpCi0jIGNsYXNzIF9CWjJQcm94eQotCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEV4dHJhY3Rpb24gZmlsZSBvYmplY3QKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTcwOSw2ICs2MzQsOCBAQAogICAgICAgICBzZWxmLm9mZnNldCA9IG9mZnNldAogICAgICAgICBzZWxmLnNpemUgPSBzaXplCiAgICAgICAgIHNlbGYucG9zaXRpb24gPSAwCisgICAgICAgIHNlbGYubmFtZSA9IGdldGF0dHIoZmlsZW9iaiwgIm5hbWUiLCBOb25lKQorICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlCiAKICAgICAgICAgaWYgYmxvY2tpbmZvIGlzIE5vbmU6CiAgICAgICAgICAgICBibG9ja2luZm8gPSBbKDAsIHNpemUpXQpAQCAtNzI3LDEwICs2NTQsMTYgQEAKICAgICAgICAgaWYgbGFzdHBvcyA8IHNlbGYuc2l6ZToKICAgICAgICAgICAgIHNlbGYubWFwLmFwcGVuZCgoRmFsc2UsIGxhc3Rwb3MsIHNlbGYuc2l6ZSwgTm9uZSkpCiAKKyAgICBkZWYgZmx1c2goc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICBkZWYgc2Vla2FibGUoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuZmlsZW9iaiwgInNlZWthYmxlIik6Ci0gICAgICAgICAgICAjIFhYWCBnemlwLkd6aXBGaWxlIGFuZCBiejIuQloyRmlsZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW9iai5zZWVrYWJsZSgpCiAKICAgICBkZWYgdGVsbChzZWxmKToKQEAgLTczOCwxMCArNjcxLDIxIEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5wb3NpdGlvbgogCi0gICAgZGVmIHNlZWsoc2VsZiwgcG9zaXRpb24pOgorICAgIGRlZiBzZWVrKHNlbGYsIHBvc2l0aW9uLCB3aGVuY2U9aW8uU0VFS19TRVQpOgogICAgICAgICAiIiJTZWVrIHRvIGEgcG9zaXRpb24gaW4gdGhlIGZpbGUuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLnBvc2l0aW9uID0gcG9zaXRpb24KKyAgICAgICAgaWYgd2hlbmNlID09IGlvLlNFRUtfU0VUOgorICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1pbihtYXgocG9zaXRpb24sIDApLCBzZWxmLnNpemUpCisgICAgICAgIGVsaWYgd2hlbmNlID09IGlvLlNFRUtfQ1VSOgorICAgICAgICAgICAgaWYgcG9zaXRpb24gPCAwOgorICAgICAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtYXgoc2VsZi5wb3NpdGlvbiArIHBvc2l0aW9uLCAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKHNlbGYucG9zaXRpb24gKyBwb3NpdGlvbiwgc2VsZi5zaXplKQorICAgICAgICBlbGlmIHdoZW5jZSA9PSBpby5TRUVLX0VORDoKKyAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtYXgobWluKHNlbGYuc2l6ZSArIHBvc2l0aW9uLCBzZWxmLnNpemUpLCAwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBhcmd1bWVudCIpCisgICAgICAgIHJldHVybiBzZWxmLnBvc2l0aW9uCiAKICAgICBkZWYgcmVhZChzZWxmLCBzaXplPU5vbmUpOgogICAgICAgICAiIiJSZWFkIGRhdGEgZnJvbSB0aGUgZmlsZS4KQEAgLTc3MCwxNDUgKzcxNCwyMiBAQAogICAgICAgICAgICAgc2l6ZSAtPSBsZW5ndGgKICAgICAgICAgICAgIHNlbGYucG9zaXRpb24gKz0gbGVuZ3RoCiAgICAgICAgIHJldHVybiBidWYKLSNjbGFzcyBfRmlsZUluRmlsZQogCi0KLWNsYXNzIEV4RmlsZU9iamVjdChvYmplY3QpOgotICAgICIiIkZpbGUtbGlrZSBvYmplY3QgZm9yIHJlYWRpbmcgYW4gYXJjaGl2ZSBtZW1iZXIuCi0gICAgICAgSXMgcmV0dXJuZWQgYnkgVGFyRmlsZS5leHRyYWN0ZmlsZSgpLgotICAgICIiIgotICAgIGJsb2Nrc2l6ZSA9IDEwMjQKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJmaWxlLCB0YXJpbmZvKToKLSAgICAgICAgc2VsZi5maWxlb2JqID0gX0ZpbGVJbkZpbGUodGFyZmlsZS5maWxlb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJpbmZvLm9mZnNldF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJpbmZvLnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmluZm8uc3BhcnNlKQotICAgICAgICBzZWxmLm5hbWUgPSB0YXJpbmZvLm5hbWUKLSAgICAgICAgc2VsZi5tb2RlID0gInIiCi0gICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKLSAgICAgICAgc2VsZi5zaXplID0gdGFyaW5mby5zaXplCi0KLSAgICAgICAgc2VsZi5wb3NpdGlvbiA9IDAKLSAgICAgICAgc2VsZi5idWZmZXIgPSBiIiIKLQotICAgIGRlZiByZWFkYWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiB3cml0YWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgc2Vla2FibGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmZpbGVvYmouc2Vla2FibGUoKQotCi0gICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT1Ob25lKToKLSAgICAgICAgIiIiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMgZnJvbSB0aGUgZmlsZS4gSWYgc2l6ZSBpcyBub3QKLSAgICAgICAgICAgcHJlc2VudCBvciBOb25lLCByZWFkIGFsbCBkYXRhIHVudGlsIEVPRiBpcyByZWFjaGVkLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKLQotICAgICAgICBidWYgPSBiIiIKLSAgICAgICAgaWYgc2VsZi5idWZmZXI6Ci0gICAgICAgICAgICBpZiBzaXplIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgYnVmID0gc2VsZi5idWZmZXIKLSAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBidWYgPSBzZWxmLmJ1ZmZlcls6c2l6ZV0KLSAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlciA9IHNlbGYuYnVmZmVyW3NpemU6XQotCi0gICAgICAgIGlmIHNpemUgaXMgTm9uZToKLSAgICAgICAgICAgIGJ1ZiArPSBzZWxmLmZpbGVvYmoucmVhZCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBidWYgKz0gc2VsZi5maWxlb2JqLnJlYWQoc2l6ZSAtIGxlbihidWYpKQotCi0gICAgICAgIHNlbGYucG9zaXRpb24gKz0gbGVuKGJ1ZikKLSAgICAgICAgcmV0dXJuIGJ1ZgotCi0gICAgIyBYWFggVGV4dElPV3JhcHBlciB1c2VzIHRoZSByZWFkMSgpIG1ldGhvZC4KLSAgICByZWFkMSA9IHJlYWQKLQotICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKLSAgICAgICAgIiIiUmVhZCBvbmUgZW50aXJlIGxpbmUgZnJvbSB0aGUgZmlsZS4gSWYgc2l6ZSBpcyBwcmVzZW50Ci0gICAgICAgICAgIGFuZCBub24tbmVnYXRpdmUsIHJldHVybiBhIHN0cmluZyB3aXRoIGF0IG1vc3QgdGhhdAotICAgICAgICAgICBzaXplLCB3aGljaCBtYXkgYmUgYW4gaW5jb21wbGV0ZSBsaW5lLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKLQotICAgICAgICBwb3MgPSBzZWxmLmJ1ZmZlci5maW5kKGIiXG4iKSArIDEKLSAgICAgICAgaWYgcG9zID09IDA6Ci0gICAgICAgICAgICAjIG5vIG5ld2xpbmUgZm91bmQuCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGJ1ZiA9IHNlbGYuZmlsZW9iai5yZWFkKHNlbGYuYmxvY2tzaXplKQotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyICs9IGJ1ZgotICAgICAgICAgICAgICAgIGlmIG5vdCBidWYgb3IgYiJcbiIgaW4gYnVmOgotICAgICAgICAgICAgICAgICAgICBwb3MgPSBzZWxmLmJ1ZmZlci5maW5kKGIiXG4iKSArIDEKLSAgICAgICAgICAgICAgICAgICAgaWYgcG9zID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIG5vIG5ld2xpbmUgZm91bmQuCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBsZW4oc2VsZi5idWZmZXIpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgc2l6ZSAhPSAtMToKLSAgICAgICAgICAgIHBvcyA9IG1pbihzaXplLCBwb3MpCi0KLSAgICAgICAgYnVmID0gc2VsZi5idWZmZXJbOnBvc10KLSAgICAgICAgc2VsZi5idWZmZXIgPSBzZWxmLmJ1ZmZlcltwb3M6XQotICAgICAgICBzZWxmLnBvc2l0aW9uICs9IGxlbihidWYpCi0gICAgICAgIHJldHVybiBidWYKLQotICAgIGRlZiByZWFkbGluZXMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIGxpc3Qgd2l0aCBhbGwgcmVtYWluaW5nIGxpbmVzLgotICAgICAgICAiIiIKLSAgICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLnJlYWRsaW5lKCkKLSAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhawotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChsaW5lKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgdGVsbChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgICAgIHJldHVybiBzZWxmLnBvc2l0aW9uCi0KLSAgICBkZWYgc2VlayhzZWxmLCBwb3MsIHdoZW5jZT1vcy5TRUVLX1NFVCk6Ci0gICAgICAgICIiIlNlZWsgdG8gYSBwb3NpdGlvbiBpbiB0aGUgZmlsZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCi0KLSAgICAgICAgaWYgd2hlbmNlID09IG9zLlNFRUtfU0VUOgotICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1pbihtYXgocG9zLCAwKSwgc2VsZi5zaXplKQotICAgICAgICBlbGlmIHdoZW5jZSA9PSBvcy5TRUVLX0NVUjoKLSAgICAgICAgICAgIGlmIHBvcyA8IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1heChzZWxmLnBvc2l0aW9uICsgcG9zLCAwKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKHNlbGYucG9zaXRpb24gKyBwb3MsIHNlbGYuc2l6ZSkKLSAgICAgICAgZWxpZiB3aGVuY2UgPT0gb3MuU0VFS19FTkQ6Ci0gICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWF4KG1pbihzZWxmLnNpemUgKyBwb3MsIHNlbGYuc2l6ZSksIDApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IikKLQotICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgotICAgICAgICBzZWxmLmZpbGVvYmouc2VlayhzZWxmLnBvc2l0aW9uKQorICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgYnVmID0gc2VsZi5yZWFkKGxlbihiKSkKKyAgICAgICAgYls6bGVuKGJ1ZildID0gYnVmCisgICAgICAgIHJldHVybiBsZW4oYnVmKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICAiIiJDbG9zZSB0aGUgZmlsZSBvYmplY3QuCi0gICAgICAgICIiIgogICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKyNjbGFzcyBfRmlsZUluRmlsZQogCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICAiIiJHZXQgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZmlsZSdzIGxpbmVzLgotICAgICAgICAiIiIKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLnJlYWRsaW5lKCkKLSAgICAgICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICB5aWVsZCBsaW5lCitjbGFzcyBFeEZpbGVPYmplY3QoaW8uQnVmZmVyZWRSZWFkZXIpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmZpbGUsIHRhcmluZm8pOgorICAgICAgICBmaWxlb2JqID0gX0ZpbGVJbkZpbGUodGFyZmlsZS5maWxlb2JqLCB0YXJpbmZvLm9mZnNldF9kYXRhLAorICAgICAgICAgICAgICAgIHRhcmluZm8uc2l6ZSwgdGFyaW5mby5zcGFyc2UpCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oZmlsZW9iaikKICNjbGFzcyBFeEZpbGVPYmplY3QKIAogIy0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTA4Nyw3ICs5MDgsNyBAQAogICAgIGRlZiBjcmVhdGVfcGF4X2dsb2JhbF9oZWFkZXIoY2xzLCBwYXhfaGVhZGVycyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgb2JqZWN0IGFzIGEgcGF4IGdsb2JhbCBoZWFkZXIgYmxvY2sgc2VxdWVuY2UuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gY2xzLl9jcmVhdGVfcGF4X2dlbmVyaWNfaGVhZGVyKHBheF9oZWFkZXJzLCBYR0xUWVBFLCAidXRmOCIpCisgICAgICAgIHJldHVybiBjbHMuX2NyZWF0ZV9wYXhfZ2VuZXJpY19oZWFkZXIocGF4X2hlYWRlcnMsIFhHTFRZUEUsICJ1dGYtOCIpCiAKICAgICBkZWYgX3Bvc2l4X3NwbGl0X25hbWUoc2VsZiwgbmFtZSk6CiAgICAgICAgICIiIlNwbGl0IGEgbmFtZSBsb25nZXIgdGhhbiAxMDAgY2hhcnMgaW50byBhIHByZWZpeApAQCAtMTE3MCw3ICs5OTEsNyBAQAogICAgICAgICBiaW5hcnkgPSBGYWxzZQogICAgICAgICBmb3Iga2V5d29yZCwgdmFsdWUgaW4gcGF4X2hlYWRlcnMuaXRlbXMoKToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB2YWx1ZS5lbmNvZGUoInV0ZjgiLCAic3RyaWN0IikKKyAgICAgICAgICAgICAgICB2YWx1ZS5lbmNvZGUoInV0Zi04IiwgInN0cmljdCIpCiAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgICAgIGJpbmFyeSA9IFRydWUKICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTE4MSwxMyArMTAwMiwxMyBAQAogICAgICAgICAgICAgcmVjb3JkcyArPSBiIjIxIGhkcmNoYXJzZXQ9QklOQVJZXG4iCiAKICAgICAgICAgZm9yIGtleXdvcmQsIHZhbHVlIGluIHBheF9oZWFkZXJzLml0ZW1zKCk6Ci0gICAgICAgICAgICBrZXl3b3JkID0ga2V5d29yZC5lbmNvZGUoInV0ZjgiKQorICAgICAgICAgICAga2V5d29yZCA9IGtleXdvcmQuZW5jb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICBpZiBiaW5hcnk6CiAgICAgICAgICAgICAgICAgIyBUcnkgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnl0ZSByZXByZXNlbnRhdGlvbiBvZiBgdmFsdWUnLgogICAgICAgICAgICAgICAgICMgTmVlZGxlc3MgdG8gc2F5LCB0aGF0IHRoZSBlbmNvZGluZyBtdXN0IG1hdGNoIHRoZSBzdHJpbmcuCiAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5lbmNvZGUoZW5jb2RpbmcsICJzdXJyb2dhdGVlc2NhcGUiKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZSgidXRmOCIpCisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5lbmNvZGUoInV0Zi04IikKIAogICAgICAgICAgICAgbCA9IGxlbihrZXl3b3JkKSArIGxlbih2YWx1ZSkgKyAzICAgIyAnICcgKyAnPScgKyAnXG4nCiAgICAgICAgICAgICBuID0gcCA9IDAKQEAgLTEzOTYsNyArMTIxNyw3IEBACiAgICAgICAgICMgdGhlIHRyYW5zbGF0aW9uIHRvIFVURi04IGZhaWxzLgogICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChiciJcZCsgaGRyY2hhcnNldD0oW15cbl0rKVxuIiwgYnVmKQogICAgICAgICBpZiBtYXRjaCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHBheF9oZWFkZXJzWyJoZHJjaGFyc2V0Il0gPSBtYXRjaC5ncm91cCgxKS5kZWNvZGUoInV0ZjgiKQorICAgICAgICAgICAgcGF4X2hlYWRlcnNbImhkcmNoYXJzZXQiXSA9IG1hdGNoLmdyb3VwKDEpLmRlY29kZSgidXRmLTgiKQogCiAgICAgICAgICMgRm9yIHRoZSB0aW1lIGJlaW5nLCB3ZSBkb24ndCBjYXJlIGFib3V0IGFueXRoaW5nIG90aGVyIHRoYW4gIkJJTkFSWSIuCiAgICAgICAgICMgVGhlIG9ubHkgb3RoZXIgdmFsdWUgdGhhdCBpcyBjdXJyZW50bHkgYWxsb3dlZCBieSB0aGUgc3RhbmRhcmQgaXMKQEAgLTE0MDUsNyArMTIyNiw3IEBACiAgICAgICAgIGlmIGhkcmNoYXJzZXQgPT0gIkJJTkFSWSI6CiAgICAgICAgICAgICBlbmNvZGluZyA9IHRhcmZpbGUuZW5jb2RpbmcKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGVuY29kaW5nID0gInV0ZjgiCisgICAgICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCIKIAogICAgICAgICAjIFBhcnNlIHBheCBoZWFkZXIgaW5mb3JtYXRpb24uIEEgcmVjb3JkIGxvb2tzIGxpa2UgdGhhdDoKICAgICAgICAgIyAiJWQgJXM9JXNcbiIgJSAobGVuZ3RoLCBrZXl3b3JkLCB2YWx1ZSkuIGxlbmd0aCBpcyB0aGUgc2l6ZQpAQCAtMTQyMiwyMCArMTI0MywyMCBAQAogICAgICAgICAgICAgbGVuZ3RoID0gaW50KGxlbmd0aCkKICAgICAgICAgICAgIHZhbHVlID0gYnVmW21hdGNoLmVuZCgyKSArIDE6bWF0Y2guc3RhcnQoMSkgKyBsZW5ndGggLSAxXQogCi0gICAgICAgICAgICAjIE5vcm1hbGx5LCB3ZSBjb3VsZCBqdXN0IHVzZSAidXRmOCIgYXMgdGhlIGVuY29kaW5nIGFuZCAic3RyaWN0IgorICAgICAgICAgICAgIyBOb3JtYWxseSwgd2UgY291bGQganVzdCB1c2UgInV0Zi04IiBhcyB0aGUgZW5jb2RpbmcgYW5kICJzdHJpY3QiCiAgICAgICAgICAgICAjIGFzIHRoZSBlcnJvciBoYW5kbGVyLCBidXQgd2UgYmV0dGVyIG5vdCB0YWtlIHRoZSByaXNrLiBGb3IKICAgICAgICAgICAgICMgZXhhbXBsZSwgR05VIHRhciA8PSAxLjIzIGlzIGtub3duIHRvIHN0b3JlIGZpbGVuYW1lcyBpdCBjYW5ub3QKICAgICAgICAgICAgICMgdHJhbnNsYXRlIHRvIFVURi04IGFzIHJhdyBzdHJpbmdzICh1bmZvcnR1bmF0ZWx5IHdpdGhvdXQgYQogICAgICAgICAgICAgIyBoZHJjaGFyc2V0PUJJTkFSWSBoZWFkZXIpLgogICAgICAgICAgICAgIyBXZSBmaXJzdCB0cnkgdGhlIHN0cmljdCBzdGFuZGFyZCBlbmNvZGluZywgYW5kIGlmIHRoYXQgZmFpbHMgd2UKICAgICAgICAgICAgICMgZmFsbCBiYWNrIG9uIHRoZSB1c2VyJ3MgZW5jb2RpbmcgYW5kIGVycm9yIGhhbmRsZXIuCi0gICAgICAgICAgICBrZXl3b3JkID0gc2VsZi5fZGVjb2RlX3BheF9maWVsZChrZXl3b3JkLCAidXRmOCIsICJ1dGY4IiwKKyAgICAgICAgICAgIGtleXdvcmQgPSBzZWxmLl9kZWNvZGVfcGF4X2ZpZWxkKGtleXdvcmQsICJ1dGYtOCIsICJ1dGYtOCIsCiAgICAgICAgICAgICAgICAgICAgIHRhcmZpbGUuZXJyb3JzKQogICAgICAgICAgICAgaWYga2V5d29yZCBpbiBQQVhfTkFNRV9GSUVMRFM6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9kZWNvZGVfcGF4X2ZpZWxkKHZhbHVlLCBlbmNvZGluZywgdGFyZmlsZS5lbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmZpbGUuZXJyb3JzKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQodmFsdWUsICJ1dGY4IiwgInV0ZjgiLAorICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fZGVjb2RlX3BheF9maWVsZCh2YWx1ZSwgInV0Zi04IiwgInV0Zi04IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmZpbGUuZXJyb3JzKQogCiAgICAgICAgICAgICBwYXhfaGVhZGVyc1trZXl3b3JkXSA9IHZhbHVlCkBAIC0xNTk1LDcgKzE0MTYsNyBAQAogCiAgICAgdGFyaW5mbyA9IFRhckluZm8gICAgICAgICAgICMgVGhlIGRlZmF1bHQgVGFySW5mbyBjbGFzcyB0byB1c2UuCiAKLSAgICBmaWxlb2JqZWN0ID0gRXhGaWxlT2JqZWN0ICAgIyBUaGUgZGVmYXVsdCBFeEZpbGVPYmplY3QgY2xhc3MgdG8gdXNlLgorICAgIGZpbGVvYmplY3QgPSBFeEZpbGVPYmplY3QgICAjIFRoZSBmaWxlLW9iamVjdCBmb3IgZXh0cmFjdGZpbGUoKS4KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsIG1vZGU9InIiLCBmaWxlb2JqPU5vbmUsIGZvcm1hdD1Ob25lLAogICAgICAgICAgICAgdGFyaW5mbz1Ob25lLCBkZXJlZmVyZW5jZT1Ob25lLCBpZ25vcmVfemVyb3M9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwKQEAgLTE3MTQsMTggKzE1MzUsMjIgQEAKICAgICAgICAgICAgJ3I6JyAgICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgZXhjbHVzaXZlbHkgdW5jb21wcmVzc2VkCiAgICAgICAgICAgICdyOmd6JyAgICAgICBvcGVuIGZvciByZWFkaW5nIHdpdGggZ3ppcCBjb21wcmVzc2lvbgogICAgICAgICAgICAncjpiejInICAgICAgb3BlbiBmb3IgcmVhZGluZyB3aXRoIGJ6aXAyIGNvbXByZXNzaW9uCisgICAgICAgICAgICdyOnh6JyAgICAgICBvcGVuIGZvciByZWFkaW5nIHdpdGggbHptYSBjb21wcmVzc2lvbgogICAgICAgICAgICAnYScgb3IgJ2E6JyAgb3BlbiBmb3IgYXBwZW5kaW5nLCBjcmVhdGluZyB0aGUgZmlsZSBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgJ3cnIG9yICd3OicgIG9wZW4gZm9yIHdyaXRpbmcgd2l0aG91dCBjb21wcmVzc2lvbgogICAgICAgICAgICAndzpneicgICAgICAgb3BlbiBmb3Igd3JpdGluZyB3aXRoIGd6aXAgY29tcHJlc3Npb24KICAgICAgICAgICAgJ3c6YnoyJyAgICAgIG9wZW4gZm9yIHdyaXRpbmcgd2l0aCBiemlwMiBjb21wcmVzc2lvbgorICAgICAgICAgICAndzp4eicgICAgICAgb3BlbiBmb3Igd3JpdGluZyB3aXRoIGx6bWEgY29tcHJlc3Npb24KIAogICAgICAgICAgICAncnwqJyAgICAgICAgb3BlbiBhIHN0cmVhbSBvZiB0YXIgYmxvY2tzIHdpdGggdHJhbnNwYXJlbnQgY29tcHJlc3Npb24KICAgICAgICAgICAgJ3J8JyAgICAgICAgIG9wZW4gYW4gdW5jb21wcmVzc2VkIHN0cmVhbSBvZiB0YXIgYmxvY2tzIGZvciByZWFkaW5nCiAgICAgICAgICAgICdyfGd6JyAgICAgICBvcGVuIGEgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbSBvZiB0YXIgYmxvY2tzCiAgICAgICAgICAgICdyfGJ6MicgICAgICBvcGVuIGEgYnppcDIgY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcworICAgICAgICAgICAncnx4eicgICAgICAgb3BlbiBhbiBsem1hIGNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MKICAgICAgICAgICAgJ3d8JyAgICAgICAgIG9wZW4gYW4gdW5jb21wcmVzc2VkIHN0cmVhbSBmb3Igd3JpdGluZwogICAgICAgICAgICAnd3xneicgICAgICAgb3BlbiBhIGd6aXAgY29tcHJlc3NlZCBzdHJlYW0gZm9yIHdyaXRpbmcKICAgICAgICAgICAgJ3d8YnoyJyAgICAgIG9wZW4gYSBiemlwMiBjb21wcmVzc2VkIHN0cmVhbSBmb3Igd3JpdGluZworICAgICAgICAgICAnd3x4eicgICAgICAgb3BlbiBhbiBsem1hIGNvbXByZXNzZWQgc3RyZWFtIGZvciB3cml0aW5nCiAgICAgICAgICIiIgogCiAgICAgICAgIGlmIG5vdCBuYW1lIGFuZCBub3QgZmlsZW9iajoKQEAgLTE4MzIsMTAgKzE2NTcsOCBAQAogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICByYWlzZSBDb21wcmVzc2lvbkVycm9yKCJiejIgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUiKQogCi0gICAgICAgIGlmIGZpbGVvYmogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmaWxlb2JqID0gX0JaMlByb3h5KGZpbGVvYmosIG1vZGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWxlb2JqID0gYnoyLkJaMkZpbGUobmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbD1jb21wcmVzc2xldmVsKQorICAgICAgICBmaWxlb2JqID0gYnoyLkJaMkZpbGUoZmlsZW9iaiBvciBuYW1lLCBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NsZXZlbD1jb21wcmVzc2xldmVsKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHQgPSBjbHMudGFyb3BlbihuYW1lLCBtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKQEAgLTE4NDUsMTEgKzE2NjgsMzUgQEAKICAgICAgICAgdC5fZXh0ZmlsZW9iaiA9IEZhbHNlCiAgICAgICAgIHJldHVybiB0CiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgeHpvcGVuKGNscywgbmFtZSwgbW9kZT0iciIsIGZpbGVvYmo9Tm9uZSwgcHJlc2V0PU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIiIiT3BlbiBsem1hIGNvbXByZXNzZWQgdGFyIGFyY2hpdmUgbmFtZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLgorICAgICAgICAgICBBcHBlbmRpbmcgaXMgbm90IGFsbG93ZWQuCisgICAgICAgICIiIgorICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJyBvciAndyciKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBsem1hCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoImx6bWEgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUiKQorCisgICAgICAgIGZpbGVvYmogPSBsem1hLkxaTUFGaWxlKGZpbGVvYmogb3IgbmFtZSwgbW9kZSwgcHJlc2V0PXByZXNldCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gY2xzLnRhcm9wZW4obmFtZSwgbW9kZSwgZmlsZW9iaiwgKiprd2FyZ3MpCisgICAgICAgIGV4Y2VwdCAobHptYS5MWk1BRXJyb3IsIEVPRkVycm9yKToKKyAgICAgICAgICAgIGZpbGVvYmouY2xvc2UoKQorICAgICAgICAgICAgcmFpc2UgUmVhZEVycm9yKCJub3QgYW4gbHptYSBmaWxlIikKKyAgICAgICAgdC5fZXh0ZmlsZW9iaiA9IEZhbHNlCisgICAgICAgIHJldHVybiB0CisKICAgICAjIEFsbCAqb3BlbigpIG1ldGhvZHMgYXJlIHJlZ2lzdGVyZWQgaGVyZS4KICAgICBPUEVOX01FVEggPSB7CiAgICAgICAgICJ0YXIiOiAidGFyb3BlbiIsICAgIyB1bmNvbXByZXNzZWQgdGFyCiAgICAgICAgICJneiI6ICAiZ3pvcGVuIiwgICAgIyBnemlwIGNvbXByZXNzZWQgdGFyCi0gICAgICAgICJiejIiOiAiYnoyb3BlbiIgICAgIyBiemlwMiBjb21wcmVzc2VkIHRhcgorICAgICAgICAiYnoyIjogImJ6Mm9wZW4iLCAgICMgYnppcDIgY29tcHJlc3NlZCB0YXIKKyAgICAgICAgInh6IjogICJ4em9wZW4iICAgICAjIGx6bWEgY29tcHJlc3NlZCB0YXIKICAgICB9CiAKICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIwMDksNyArMTg1Niw3IEBACiAKICAgICAgICAgZm9yIHRhcmluZm8gaW4gc2VsZjoKICAgICAgICAgICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoZmlsZW1vZGUodGFyaW5mby5tb2RlKSwgZW5kPScgJykKKyAgICAgICAgICAgICAgICBwcmludChzdGF0LmZpbGVtb2RlKHRhcmluZm8ubW9kZSksIGVuZD0nICcpCiAgICAgICAgICAgICAgICAgcHJpbnQoIiVzLyVzIiAlICh0YXJpbmZvLnVuYW1lIG9yIHRhcmluZm8udWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyaW5mby5nbmFtZSBvciB0YXJpbmZvLmdpZCksIGVuZD0nICcpCiAgICAgICAgICAgICAgICAgaWYgdGFyaW5mby5pc2NocigpIG9yIHRhcmluZm8uaXNibGsoKToKQEAgLTIxOTIsMTIgKzIwMzksOSBAQAogCiAgICAgZGVmIGV4dHJhY3RmaWxlKHNlbGYsIG1lbWJlcik6CiAgICAgICAgICIiIkV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSBhcyBhIGZpbGUgb2JqZWN0LiBgbWVtYmVyJyBtYXkgYmUKLSAgICAgICAgICAgYSBmaWxlbmFtZSBvciBhIFRhckluZm8gb2JqZWN0LiBJZiBgbWVtYmVyJyBpcyBhIHJlZ3VsYXIgZmlsZSwgYQotICAgICAgICAgICBmaWxlLWxpa2Ugb2JqZWN0IGlzIHJldHVybmVkLiBJZiBgbWVtYmVyJyBpcyBhIGxpbmssIGEgZmlsZS1saWtlCi0gICAgICAgICAgIG9iamVjdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBsaW5rJ3MgdGFyZ2V0LiBJZiBgbWVtYmVyJyBpcyBub25lIG9mCi0gICAgICAgICAgIHRoZSBhYm92ZSwgTm9uZSBpcyByZXR1cm5lZC4KLSAgICAgICAgICAgVGhlIGZpbGUtbGlrZSBvYmplY3QgaXMgcmVhZC1vbmx5IGFuZCBwcm92aWRlcyB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgIG1ldGhvZHM6IHJlYWQoKSwgcmVhZGxpbmUoKSwgcmVhZGxpbmVzKCksIHNlZWsoKSBhbmQgdGVsbCgpCisgICAgICAgICAgIGEgZmlsZW5hbWUgb3IgYSBUYXJJbmZvIG9iamVjdC4gSWYgYG1lbWJlcicgaXMgYSByZWd1bGFyIGZpbGUgb3IgYQorICAgICAgICAgICBsaW5rLCBhbiBpby5CdWZmZXJlZFJlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgTm9uZSBpcworICAgICAgICAgICByZXR1cm5lZC4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrKCJyIikKIApAQCAtMjIwNiwxMiArMjA1MCw4IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0YXJpbmZvID0gbWVtYmVyCiAKLSAgICAgICAgaWYgdGFyaW5mby5pc3JlZygpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW9iamVjdChzZWxmLCB0YXJpbmZvKQotCi0gICAgICAgIGVsaWYgdGFyaW5mby50eXBlIG5vdCBpbiBTVVBQT1JURURfVFlQRVM6Ci0gICAgICAgICAgICAjIElmIGEgbWVtYmVyJ3MgdHlwZSBpcyB1bmtub3duLCBpdCBpcyB0cmVhdGVkIGFzIGEKLSAgICAgICAgICAgICMgcmVndWxhciBmaWxlLgorICAgICAgICBpZiB0YXJpbmZvLmlzcmVnKCkgb3IgdGFyaW5mby50eXBlIG5vdCBpbiBTVVBQT1JURURfVFlQRVM6CisgICAgICAgICAgICAjIE1lbWJlcnMgd2l0aCB1bmtub3duIHR5cGVzIGFyZSB0cmVhdGVkIGFzIHJlZ3VsYXIgZmlsZXMuCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlb2JqZWN0KHNlbGYsIHRhcmluZm8pCiAKICAgICAgICAgZWxpZiB0YXJpbmZvLmlzbG5rKCkgb3IgdGFyaW5mby5pc3N5bSgpOgpAQCAtMjI4Myw5ICsyMTIzLDggQEAKICAgICAgICAgICAgICMgVXNlIGEgc2FmZSBtb2RlIGZvciB0aGUgZGlyZWN0b3J5LCB0aGUgcmVhbCBtb2RlIGlzIHNldAogICAgICAgICAgICAgIyBsYXRlciBpbiBfZXh0cmFjdF9tZW1iZXIoKS4KICAgICAgICAgICAgIG9zLm1rZGlyKHRhcmdldHBhdGgsIDBvNzAwKQotICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiBtYWtlZmlsZShzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKICAgICAgICAgIiIiTWFrZSBhIGZpbGUgY2FsbGVkIHRhcmdldHBhdGguCmRpZmYgLS1naXQgYS9MaWIvdGVtcGZpbGUucHkgYi9MaWIvdGVtcGZpbGUucHkKaW5kZXggMzRkZmYzMC4uMzllYmY1YSAxMDA2NDQKLS0tIGEvTGliL3RlbXBmaWxlLnB5CisrKyBiL0xpYi90ZW1wZmlsZS5weQpAQCAtMTAsOCArMTAsNiBAQAogCiAgIFRNUF9NQVggIC0gbWF4aW11bSBudW1iZXIgb2YgbmFtZXMgdGhhdCB3aWxsIGJlIHRyaWVkIGJlZm9yZQogICAgICAgICAgICAgIGdpdmluZyB1cC4KLSAgdGVtcGxhdGUgLSB0aGUgZGVmYXVsdCBwcmVmaXggZm9yIGFsbCB0ZW1wb3JhcnkgbmFtZXMuCi0gICAgICAgICAgICAgWW91IG1heSBjaGFuZ2UgdGhpcyB0byBjb250cm9sIHRoZSBkZWZhdWx0IHByZWZpeC4KICAgdGVtcGRpciAgLSBJZiB0aGlzIGlzIHNldCB0byBhIHN0cmluZyBiZWZvcmUgdGhlIGZpcnN0IHVzZSBvZgogICAgICAgICAgICAgIGFueSByb3V0aW5lIGZyb20gdGhpcyBtb2R1bGUsIGl0IHdpbGwgYmUgY29uc2lkZXJlZCBhcwogICAgICAgICAgICAgIGFub3RoZXIgY2FuZGlkYXRlIGxvY2F0aW9uIHRvIHN0b3JlIHRlbXBvcmFyeSBmaWxlcy4KQEAgLTMzLDcgKzMxLDYgQEAKIGltcG9ydCBzeXMgYXMgX3N5cwogaW1wb3J0IGlvIGFzIF9pbwogaW1wb3J0IG9zIGFzIF9vcwotaW1wb3J0IGVycm5vIGFzIF9lcnJubwogZnJvbSByYW5kb20gaW1wb3J0IFJhbmRvbSBhcyBfUmFuZG9tCiAKIHRyeToKQEAgLTQ1LDcgKzQyLDcgQEAKICAgICBkZWYgX3NldF9jbG9leGVjKGZkKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmxhZ3MgPSBfZmNudGwuZmNudGwoZmQsIF9mY250bC5GX0dFVEZELCAwKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGZsYWdzIHJlYWQgc3VjY2Vzc2Z1bGx5LCBtb2RpZnkKQEAgLTc0LDYgKzcxLDggQEAKIGVsc2U6CiAgICAgVE1QX01BWCA9IDEwMDAwCiAKKyMgQWx0aG91Z2ggaXQgZG9lcyBub3QgaGF2ZSBhbiB1bmRlcnNjb3JlIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHRoaXMKKyMgdmFyaWFibGUgaXMgYW4gaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlsIChzZWUgaXNzdWUgMTAzNTQpLgogdGVtcGxhdGUgPSAidG1wIgogCiAjIEludGVybmFsIHJvdXRpbmVzLgpAQCAtODUsMTkgKzg0LDE2IEBACiBlbGlmIGhhc2F0dHIoX29zLCAic3RhdCIpOgogICAgIF9zdGF0ID0gX29zLnN0YXQKIGVsc2U6Ci0gICAgIyBGYWxsYmFjay4gIEFsbCB3ZSBuZWVkIGlzIHNvbWV0aGluZyB0aGF0IHJhaXNlcyBvcy5lcnJvciBpZiB0aGUKKyAgICAjIEZhbGxiYWNrLiAgQWxsIHdlIG5lZWQgaXMgc29tZXRoaW5nIHRoYXQgcmFpc2VzIE9TRXJyb3IgaWYgdGhlCiAgICAgIyBmaWxlIGRvZXNuJ3QgZXhpc3QuCiAgICAgZGVmIF9zdGF0KGZuKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZiA9IG9wZW4oZm4pCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgcmFpc2UgX29zLmVycm9yCisgICAgICAgIGYgPSBvcGVuKGZuKQogICAgICAgICBmLmNsb3NlKCkKIAogZGVmIF9leGlzdHMoZm4pOgogICAgIHRyeToKICAgICAgICAgX3N0YXQoZm4pCi0gICAgZXhjZXB0IF9vcy5lcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTE0OSw3ICsxNDUsNyBAQAogICAgICMgQXMgYSBsYXN0IHJlc29ydCwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgogICAgIHRyeToKICAgICAgICAgZGlybGlzdC5hcHBlbmQoX29zLmdldGN3ZCgpKQotICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIF9vcy5lcnJvcik6CisgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CiAgICAgICAgIGRpcmxpc3QuYXBwZW5kKF9vcy5jdXJkaXIpCiAKICAgICByZXR1cm4gZGlybGlzdApAQCAtMTgxLDEyICsxNzcsMTEgQEAKICAgICAgICAgICAgICAgICBfb3MudW5saW5rKGZpbGVuYW1lKQogICAgICAgICAgICAgICAgIGRlbCBmcCwgZmQKICAgICAgICAgICAgICAgICByZXR1cm4gZGlyCi0gICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIElPRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdICE9IF9lcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrICMgbm8gcG9pbnQgdHJ5aW5nIG1vcmUgbmFtZXMgaW4gdGhpcyBkaXJlY3RvcnkKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgIHJhaXNlIElPRXJyb3IoX2Vycm5vLkVOT0VOVCwKLSAgICAgICAgICAgICAgICAgICJObyB1c2FibGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3VuZCBpbiAlcyIgJSBkaXJsaXN0KQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgYnJlYWsgICAjIG5vIHBvaW50IHRyeWluZyBtb3JlIG5hbWVzIGluIHRoaXMgZGlyZWN0b3J5CisgICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IoIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvdW5kIGluICVzIiAlIGRpcmxpc3QpCiAKIF9uYW1lX3NlcXVlbmNlID0gTm9uZQogCkBAIC0yMTYsMTIgKzIxMSwxMCBAQAogICAgICAgICAgICAgZmQgPSBfb3Mub3BlbihmaWxlLCBmbGFncywgMG82MDApCiAgICAgICAgICAgICBfc2V0X2Nsb2V4ZWMoZmQpCiAgICAgICAgICAgICByZXR1cm4gKGZkLCBfb3MucGF0aC5hYnNwYXRoKGZpbGUpKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBfZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgdHJ5IGFnYWluCi0gICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgY29udGludWUgICAgIyB0cnkgYWdhaW4KIAotICAgIHJhaXNlIElPRXJyb3IoX2Vycm5vLkVFWElTVCwgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZmlsZSBuYW1lIGZvdW5kIikKKyAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IoIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZmlsZSBuYW1lIGZvdW5kIikKIAogCiAjIFVzZXIgdmlzaWJsZSBpbnRlcmZhY2VzLgpAQCAtMzA1LDEyICsyOTgsMTAgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgX29zLm1rZGlyKGZpbGUsIDBvNzAwKQogICAgICAgICAgICAgcmV0dXJuIGZpbGUKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gX2Vycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICBjb250aW51ZSAjIHRyeSBhZ2FpbgotICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgIGNvbnRpbnVlICAgICMgdHJ5IGFnYWluCiAKLSAgICByYWlzZSBJT0Vycm9yKF9lcnJuby5FRVhJU1QsICJObyB1c2FibGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBuYW1lIGZvdW5kIikKKyAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IoIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IG5hbWUgZm91bmQiKQogCiBkZWYgbWt0ZW1wKHN1ZmZpeD0iIiwgcHJlZml4PXRlbXBsYXRlLCBkaXI9Tm9uZSk6CiAgICAgIiIiVXNlci1jYWxsYWJsZSBmdW5jdGlvbiB0byByZXR1cm4gYSB1bmlxdWUgdGVtcG9yYXJ5IGZpbGUgbmFtZS4gIFRoZQpAQCAtMzM5LDcgKzMzMCw3IEBACiAgICAgICAgIGlmIG5vdCBfZXhpc3RzKGZpbGUpOgogICAgICAgICAgICAgcmV0dXJuIGZpbGUKIAotICAgIHJhaXNlIElPRXJyb3IoX2Vycm5vLkVFWElTVCwgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZmlsZW5hbWUgZm91bmQiKQorICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcigiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlbmFtZSBmb3VuZCIpCiAKIAogY2xhc3MgX1RlbXBvcmFyeUZpbGVXcmFwcGVyOgpAQCAtNTkyLDggKzU4MywxMyBAQAogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS50ZWxsKCkKIAotICAgIGRlZiB0cnVuY2F0ZShzZWxmKToKLSAgICAgICAgc2VsZi5fZmlsZS50cnVuY2F0ZSgpCisgICAgZGVmIHRydW5jYXRlKHNlbGYsIHNpemU9Tm9uZSk6CisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGUudHJ1bmNhdGUoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgc2l6ZSA+IHNlbGYuX21heF9zaXplOgorICAgICAgICAgICAgICAgIHNlbGYucm9sbG92ZXIoKQorICAgICAgICAgICAgc2VsZi5fZmlsZS50cnVuY2F0ZShzaXplKQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIHMpOgogICAgICAgICBmaWxlID0gc2VsZi5fZmlsZQpAQCAtNjY5LDcgKzY2NSw3IEBACiAgICAgX2lzbGluayA9IHN0YXRpY21ldGhvZChfb3MucGF0aC5pc2xpbmspCiAgICAgX3JlbW92ZSA9IHN0YXRpY21ldGhvZChfb3MucmVtb3ZlKQogICAgIF9ybWRpciA9IHN0YXRpY21ldGhvZChfb3Mucm1kaXIpCi0gICAgX29zX2Vycm9yID0gX29zLmVycm9yCisgICAgX29zX2Vycm9yID0gT1NFcnJvcgogICAgIF93YXJuID0gX3dhcm5pbmdzLndhcm4KIAogICAgIGRlZiBfcm10cmVlKHNlbGYsIHBhdGgpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYnVmZmVyX3Rlc3RzLnB5IGIvTGliL3Rlc3QvYnVmZmVyX3Rlc3RzLnB5CmluZGV4IDZkMjBmN2QuLmNmNTRjMjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2J1ZmZlcl90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9idWZmZXJfdGVzdHMucHkKQEAgLTIwMCw3ICsyMDAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidhYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiJycsIGInYWJjJywgYidkZWYnLCBiJ2doaScsIGInJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiJycsIGInYWJjJywgYidkZWYnLCBiJ2doaScsIGInJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcyhGYWxzZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2InXG4nLCBiJ2FiY1xuJywgYidkZWZcclxuJywgYidnaGlcbicsIGInXHInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoVHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2InJywgYidhYmMnLCBiJ2RlZicsIGInZ2hpJywgYicnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYidcbicsIGInYWJjXG4nLCBiJ2RlZlxyXG4nLCBiJ2doaVxuJywgYidcciddLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm1hcnNoYWwoYidhYmMnKS5zcGxpdGxpbmVzLCA0MiwgNDIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9SRUFETUUgYi9MaWIvdGVzdC9jcmFzaGVycy9SRUFETUUKaW5kZXggMmE3M2UxYi4uMDI1OWEwNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvY3Jhc2hlcnMvUkVBRE1FCisrKyBiL0xpYi90ZXN0L2NyYXNoZXJzL1JFQURNRQpAQCAtMTQsMyArMTQsNyBAQAogT25jZSB0aGUgY3Jhc2ggaXMgZml4ZWQsIHRoZSB0ZXN0IGNhc2Ugc2hvdWxkIGJlIG1vdmVkIGludG8gYW4gYXBwcm9wcmlhdGUgdGVzdAogKGV2ZW4gaWYgaXQgd2FzIG9yaWdpbmFsbHkgZnJvbSB0aGUgdGVzdCBzdWl0ZSkuICBUaGlzIGVuc3VyZXMgdGhlIHJlZ3Jlc3Npb24KIGRvZXNuJ3QgaGFwcGVuIGFnYWluLiAgQW5kIGlmIGl0IGRvZXMsIGl0IHNob3VsZCBiZSBlYXNpZXIgdG8gdHJhY2sgZG93bi4KKworQWxzbyBzZWUgTGliL3Rlc3RfY3Jhc2hlcnMucHkgd2hpY2ggZXhlcmNpc2VzIHRoZSBjcmFzaGVycyBpbiB0aGlzIGRpcmVjdG9yeS4KK0luIHBhcnRpY3VsYXIsIG1ha2Ugc3VyZSB0byBhZGQgYW55IG5ldyBpbmZpbml0ZSBsb29wIGNyYXNoZXJzIHRvIHRoZSBibGFjaworbGlzdCBzbyBpdCBkb2Vzbid0IHRyeSB0byBydW4gdGhlbS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NyYXNoZXJzL2JvcnJvd2VkX3JlZl8xLnB5IGIvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzEucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4MmY0NjQuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzEucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0iIiIKLV9QeVR5cGVfTG9va3VwKCkgcmV0dXJucyBhIGJvcnJvd2VkIHJlZmVyZW5jZS4KLVRoaXMgYXR0YWNrcyB0aGUgY2FsbCBpbiBkaWN0b2JqZWN0LmMuCi0iIiIKLQotY2xhc3MgQShvYmplY3QpOgotICAgIHBhc3MKLQotY2xhc3MgQihvYmplY3QpOgotICAgIGRlZiBfX2RlbF9fKHNlbGYpOgotICAgICAgICBwcmludCgnaGknKQotICAgICAgICBkZWwgRC5fX21pc3NpbmdfXwotCi1jbGFzcyBEKGRpY3QpOgotICAgIGNsYXNzIF9fbWlzc2luZ19fOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICAgICAgcGFzcwotCi0KLWQgPSBEKCkKLWEgPSBBKCkKLWEuY3ljbGUgPSBhCi1hLm90aGVyID0gQigpCi1kZWwgYQotCi1wcmV2ID0gTm9uZQotd2hpbGUgMToKLSAgICBkWzVdCi0gICAgcHJldiA9IChwcmV2LCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NyYXNoZXJzL2JvcnJvd2VkX3JlZl8yLnB5IGIvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNDAzZWIuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0iIiIKLV9QeVR5cGVfTG9va3VwKCkgcmV0dXJucyBhIGJvcnJvd2VkIHJlZmVyZW5jZS4KLVRoaXMgYXR0YWNrcyBQeU9iamVjdF9HZW5lcmljU2V0QXR0cigpLgotCi1OQi4gb24gbXkgbWFjaGluZSB0aGlzIGNyYXNoZXMgaW4gMi41IGRlYnVnIGJ1dCBub3QgcmVsZWFzZS4KLSIiIgotCi1jbGFzcyBBKG9iamVjdCk6Ci0gICAgcGFzcwotCi1jbGFzcyBCKG9iamVjdCk6Ci0gICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgIHByaW50KCJoaSIpCi0gICAgICAgIGRlbCBDLmQKLQotY2xhc3MgRChvYmplY3QpOgotICAgIGRlZiBfX3NldF9fKHNlbGYsIG9iaiwgdmFsdWUpOgotICAgICAgICBzZWxmLmhlbGxvID0gNDIKLQotY2xhc3MgQyhvYmplY3QpOgotICAgIGQgPSBEKCkKLQotICAgIGRlZiBnKCk6Ci0gICAgICAgIHBhc3MKLQotCi1jID0gQygpCi1hID0gQSgpCi1hLmN5Y2xlID0gYQotYS5vdGhlciA9IEIoKQotCi1sc3QgPSBbTm9uZV0gKiAxMDAwMDAwCi1pID0gMAotZGVsIGEKLXdoaWxlIDE6Ci0gICAgYy5kID0gNDIgICAgICAgICAjIHNlZ2ZhdWx0cyBpbiBQeU1ldGhvZF9OZXcoX19mdW5jX189RC5fX3NldF9fLCBfX3NlbGZfXz1kKQotICAgIGxzdFtpXSA9IGMuZyAgICAgIyBjb25zdW1lIHRoZSBmcmVlIGxpc3Qgb2YgaW5zdGFuY2VtZXRob2Qgb2JqZWN0cwotICAgIGkgKz0gMQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvY29tcGlsZXJfcmVjdXJzaW9uLnB5IGIvTGliL3Rlc3QvY3Jhc2hlcnMvY29tcGlsZXJfcmVjdXJzaW9uLnB5CmluZGV4IDQ5NTRiZGQuLjMxZjI4YTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2NyYXNoZXJzL2NvbXBpbGVyX3JlY3Vyc2lvbi5weQorKysgYi9MaWIvdGVzdC9jcmFzaGVycy9jb21waWxlcl9yZWN1cnNpb24ucHkKQEAgLTEsNSArMSwxMyBAQAogIiIiCi1UaGUgY29tcGlsZXIgKD49IDIuNSkgcmVjdXJzZXMgaGFwcGlseS4KK1RoZSBjb21waWxlciAoPj0gMi41KSByZWN1cnNlcyBoYXBwaWx5IHVudGlsIGl0IGJsb3dzIHRoZSBzdGFjay4KKworUmVjb3JkZWQgb24gdGhlIHRyYWNrZXIgYXMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTExMzgzCiAiIiIKIAotY29tcGlsZSgnKCknKjkqKjUsICc/JywgJ2V4ZWMnKQorIyBUaGUgdmFyaWFudCBiZWxvdyBibG93cyB1cCBpbiBjb21waWxlcl9jYWxsLCBidXQgdGhlcmUgYXJlIGFzc29ydGVkCisjIG90aGVyIHZhcmlhdGlvbnMgdGhhdCBibG93IHVwIGluIG90aGVyIGZ1bmN0aW9ucworIyBlLmcuICcxKicqMTAqKjUrJzEnIHdpbGwgZGllIGluIGNvbXBpbGVyX3Zpc2l0X2V4cHIKKworIyBUaGUgZXhhY3QgbGltaXQgdG8gZGVzdHJveSB0aGUgc3RhY2sgd2lsbCB2YXJ5IGJ5IHBsYXRmb3JtCisjIGJ1dCAxME0gc2hvdWxkIGRvIHRoZSB0cmljayBldmVuIHdpdGggaHVnZSBzdGFjayBhbGxvY2F0aW9ucworY29tcGlsZSgnKCknKjEwKio3LCAnPycsICdleGVjJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NyYXNoZXJzL2xvb3NpbmdfbXJvX3JlZi5weSBiL0xpYi90ZXN0L2NyYXNoZXJzL2xvb3NpbmdfbXJvX3JlZi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNiY2QzMi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9sb29zaW5nX21yb19yZWYucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0iIiIKLVRoZXJlIGlzIGEgd2F5IHRvIHB1dCBrZXlzIG9mIGFueSB0eXBlIGluIGEgdHlwZSdzIGRpY3Rpb25hcnkuCi1JIHRoaW5rIHRoaXMgYWxsb3dzIHZhcmlvdXMga2luZHMgb2YgY3Jhc2hlcywgYnV0IHNvIGZhciBJIGhhdmUgb25seQotZm91bmQgYSBjb252b2x1dGVkIGF0dGFjayBvZiBfUHlUeXBlX0xvb2t1cCgpLCB3aGljaCB1c2VzIHRoZSBtcm8gb2YgdGhlCi10eXBlIHdpdGhvdXQgaG9sZGluZyBhIHN0cm9uZyByZWZlcmVuY2UgdG8gaXQuICBQcm9iYWJseSB3b3JrcyB3aXRoCi1zdXBlci5fX2dldGF0dHJpYnV0ZV9fKCkgdG9vLCB3aGljaCB1c2VzIHRoZSBzYW1lIGtpbmQgb2YgY29kZS4KLSIiIgotCi1jbGFzcyBNeUtleShvYmplY3QpOgotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGhhc2goJ215a2V5JykKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICAjIHRoZSBmb2xsb3dpbmcgbGluZSBkZWNyZWZzIHRoZSBwcmV2aW91cyBYLl9fbXJvX18KLSAgICAgICAgWC5fX2Jhc2VzX18gPSAoQmFzZTIsKQotICAgICAgICAjIHRyYXNoIGFsbCB0dXBsZXMgb2YgbGVuZ3RoIDMsIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpdGVtcyBvZgotICAgICAgICAjIHRoZSBwcmV2aW91cyBYLl9fbXJvX18gYXJlIHJlYWxseSBnYXJiYWdlCi0gICAgICAgIHogPSBbXQotICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKLSAgICAgICAgICAgIHouYXBwZW5kKChpLCBOb25lLCBOb25lKSkKLSAgICAgICAgcmV0dXJuIDAKLQotCi1jbGFzcyBCYXNlKG9iamVjdCk6Ci0gICAgbXlrZXkgPSAnZnJvbSBCYXNlJwotCi1jbGFzcyBCYXNlMihvYmplY3QpOgotICAgIG15a2V5ID0gJ2Zyb20gQmFzZTInCi0KLSMgeW91IGNhbid0IGFkZCBhIG5vbi1zdHJpbmcga2V5IHRvIFguX19kaWN0X18sIGJ1dCBpdCBjYW4gYmUKLSMgdGhlcmUgZnJvbSB0aGUgYmVnaW5uaW5nIDotKQotWCA9IHR5cGUoJ1gnLCAoQmFzZSwpLCB7TXlLZXkoKTogNX0pCi0KLXByaW50KFgubXlrZXkpCi0jIEkgZ2V0IGEgc2VnZmF1bHQsIG9yIGEgc2xpZ2h0bHkgd3JvbmcgYXNzZXJ0aW9uIGVycm9yIGluIGEgZGVidWcgYnVpbGQuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9uYXN0eV9lcV92c19kaWN0LnB5IGIvTGliL3Rlc3QvY3Jhc2hlcnMvbmFzdHlfZXFfdnNfZGljdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVmN2NhZi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9uYXN0eV9lcV92c19kaWN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotIyBmcm9tIGh0dHA6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGhvbi1kZXYvMjAwMS1KdW5lLzAxNTIzOS5odG1sCi0KLSMgaWYgeW91IGtlZXAgY2hhbmdpbmcgYSBkaWN0aW9uYXJ5IHdoaWxlIGxvb2tpbmcgdXAgYSBrZXksIHlvdSBjYW4KLSMgcHJvdm9rZSBhbiBpbmZpbml0ZSByZWN1cnNpb24gaW4gQwotCi0jIEF0IHRoZSB0aW1lIG5laXRoZXIgVGltIG5vciBNaWNoYWVsIGNvdWxkIGJlIGJvdGhlcmVkIHRvIHRoaW5rIG9mIGEKLSMgd2F5IHRvIGZpeCBpdC4KLQotY2xhc3MgWXVjazoKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuaSA9IDAKLQotICAgIGRlZiBtYWtlX2Rhbmdlcm91cyhzZWxmKToKLSAgICAgICAgc2VsZi5pID0gMQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICAjIGRpcmVjdCB0byBzbG90IDQgaW4gdGFibGUgb2Ygc2l6ZSA4OyBzbG90IDEyIHdoZW4gc2l6ZSAxNgotICAgICAgICByZXR1cm4gNCArIDgKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBzZWxmLmkgPT0gMDoKLSAgICAgICAgICAgICMgbGVhdmUgZGljdCBhbG9uZQotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbGlmIHNlbGYuaSA9PSAxOgotICAgICAgICAgICAgIyBmaWRkbGUgdG8gMTYgc2xvdHMKLSAgICAgICAgICAgIHNlbGYuX19maWxsX2RpY3QoNikKLSAgICAgICAgICAgIHNlbGYuaSA9IDIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgZmlkZGxlIHRvIDggc2xvdHMKLSAgICAgICAgICAgIHNlbGYuX19maWxsX2RpY3QoNCkKLSAgICAgICAgICAgIHNlbGYuaSA9IDEKLQotICAgICAgICByZXR1cm4gMQotCi0gICAgZGVmIF9fZmlsbF9kaWN0KHNlbGYsIG4pOgotICAgICAgICBzZWxmLmkgPSAwCi0gICAgICAgIGRpY3QuY2xlYXIoKQotICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKLSAgICAgICAgICAgIGRpY3RbaV0gPSBpCi0gICAgICAgIGRpY3Rbc2VsZl0gPSAiT0shIgotCi15ID0gWXVjaygpCi1kaWN0ID0ge3k6ICJPSyEifQotCi16ID0gWXVjaygpCi15Lm1ha2VfZGFuZ2Vyb3VzKCkKLXByaW50KGRpY3Rbel0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weSBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CmluZGV4IDNmZDY3OTkuLmE0MTcxNzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CkBAIC05NzcsNyArOTc3LDcgQEAKICAgICAgICAgIyBleGVtcHQgc3VjaCBwbGF0Zm9ybXMgKHByb3ZpZGVkIHRoZXkgcmV0dXJuIHJlYXNvbmFibGUKICAgICAgICAgIyByZXN1bHRzISkuCiAgICAgICAgIGZvciBpbnNhbmUgaW4gLTFlMjAwLCAxZTIwMDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2FuZSkKIAogICAgIGRlZiB0ZXN0X3RvZGF5KHNlbGYpOgpAQCAtMTI4OSwxMiArMTI4OSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi50aGVjbGFzcy5taW4pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnRoZWNsYXNzLm1heCkKIAotICAgIGRlZiB0ZXN0X3N0cmZ0aW1lX291dF9vZl9yYW5nZShzZWxmKToKLSAgICAgICAgIyBGb3IgbmFzdHkgdGVjaG5pY2FsIHJlYXNvbnMsIHdlIGNhbid0IGhhbmRsZSB5ZWFycyBiZWZvcmUgMTAwMC4KLSAgICAgICAgY2xzID0gc2VsZi50aGVjbGFzcwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNscygxMDAwLCAxLCAxKS5zdHJmdGltZSgiJVkiKSwgIjEwMDAiKQotICAgICAgICBmb3IgeSBpbiAxLCA0OSwgNTEsIDk5LCAxMDAsIDk5OToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNscyh5LCAxLCAxKS5zdHJmdGltZSwgIiVZIikKKyAgICBkZWYgdGVzdF9zdHJmdGltZV95Mmsoc2VsZik6CisgICAgICAgIGZvciB5IGluICgxLCA0OSwgNzAsIDk5LCAxMDAsIDk5OSwgMTAwMCwgMTk3MCk6CisgICAgICAgICAgICBkID0gc2VsZi50aGVjbGFzcyh5LCAxLCAxKQorICAgICAgICAgICAgIyBJc3N1ZSAxMzMwNTogIEZvciB5ZWFycyA8IDEwMDAsIHRoZSB2YWx1ZSBpcyBub3QgYWx3YXlzCisgICAgICAgICAgICAjIHBhZGRlZCB0byA0IGRpZ2l0cyBhY3Jvc3MgcGxhdGZvcm1zLiAgVGhlIEMgc3RhbmRhcmQKKyAgICAgICAgICAgICMgYXNzdW1lcyB5ZWFyID49IDE5MDAsIHNvIGl0IGRvZXMgbm90IHNwZWNpZnkgdGhlIG51bWJlcgorICAgICAgICAgICAgIyBvZiBkaWdpdHMuCisgICAgICAgICAgICBpZiBkLnN0cmZ0aW1lKCIlWSIpICE9ICclMDRkJyAlIHk6CisgICAgICAgICAgICAgICAgIyBZZWFyIDQyIHJldHVybnMgJzQyJywgbm90IHBhZGRlZAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5zdHJmdGltZSgiJVkiKSwgJyVkJyAlIHkpCisgICAgICAgICAgICAgICAgIyAnMDA0MicgaXMgb2J0YWluZWQgYW55d2F5CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnN0cmZ0aW1lKCIlNFkiKSwgJyUwNGQnICUgeSkKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKQEAgLTE3MjksMTMgKzE3MzUsNzQgQEAKICAgICAgICAgZ290ID0gc2VsZi50aGVjbGFzcy51dGNmcm9tdGltZXN0YW1wKHRzKQogICAgICAgICBzZWxmLnZlcmlmeV9maWVsZF9lcXVhbGl0eShleHBlY3RlZCwgZ290KQogCisgICAgIyBSdW4gd2l0aCBVUy1zdHlsZSBEU1QgcnVsZXM6IERTVCBiZWdpbnMgMiBhLm0uIG9uIHNlY29uZCBTdW5kYXkgaW4KKyAgICAjIE1hcmNoIChNMy4yLjApIGFuZCBlbmRzIDIgYS5tLiBvbiBmaXJzdCBTdW5kYXkgaW4gTm92ZW1iZXIgKE0xMS4xLjApLgorICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdFU1QrMDVFRFQsTTMuMi4wLE0xMS4xLjAnKQorICAgIGRlZiB0ZXN0X3RpbWVzdGFtcF9uYWl2ZShzZWxmKToKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMTk3MCwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRpbWVzdGFtcCgpLCAxODAwMC4wKQorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxLCAxLCAyLCAzLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMDAuMCArIDM2MDAgKyAyKjYwICsgMyArIDQqMWUtNikKKyAgICAgICAgIyBNaXNzaW5nIGhvdXIgbWF5IHByb2R1Y2UgcGxhdGZvcm0tZGVwZW5kZW50IHJlc3VsdAorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyMDEyLCAzLCAxMSwgMiwgMzApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wKHQudGltZXN0YW1wKCkpLAorICAgICAgICAgICAgICAgICAgICAgIFt0IC0gdGltZWRlbHRhKGhvdXJzPTEpLCB0ICsgdGltZWRlbHRhKGhvdXJzPTEpXSkKKyAgICAgICAgIyBBbWJpZ3VvdXMgaG91ciBkZWZhdWx0cyB0byBEU1QKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMTEsIDQsIDEsIDMwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0LnRpbWVzdGFtcCgpKSwgdCkKKworICAgICAgICAjIFRpbWVzdGFtcCBtYXkgcmFpc2UgYW4gb3ZlcmZsb3cgZXJyb3Igb24gc29tZSBwbGF0Zm9ybXMKKyAgICAgICAgZm9yIHQgaW4gW3NlbGYudGhlY2xhc3MoMSwxLDEpLCBzZWxmLnRoZWNsYXNzKDk5OTksMTIsMTIpXToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzID0gdC50aW1lc3RhbXAoKQorICAgICAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcChzKSwgdCkKKworICAgIGRlZiB0ZXN0X3RpbWVzdGFtcF9hd2FyZShzZWxmKToKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMTk3MCwgMSwgMSwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRpbWVzdGFtcCgpLCAwLjApCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEsIDEsIDIsIDMsIDQsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEsIDEsIDIsIDMsIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbz10aW1lem9uZSh0aW1lZGVsdGEoaG91cnM9LTUpLCAnRVNUJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAxODAwMCArIDM2MDAgKyAyKjYwICsgMyArIDQqMWUtNikKICAgICBkZWYgdGVzdF9taWNyb3NlY29uZF9yb3VuZGluZyhzZWxmKToKLSAgICAgICAgIyBUZXN0IHdoZXRoZXIgZnJvbXRpbWVzdGFtcCAicm91bmRzIHVwIiBmbG9hdHMgdGhhdCBhcmUgbGVzcwotICAgICAgICAjIHRoYW4gMS8yIG1pY3Jvc2Vjb25kIHNtYWxsZXIgdGhhbiBhbiBpbnRlZ2VyLgogICAgICAgICBmb3IgZnRzIGluIFtzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcF06Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ0cygwLjk5OTk5OTkpLCBmdHMoMSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ0cygwLjk5OTk5OTQ5KS5taWNyb3NlY29uZCwgOTk5OTk5KQorICAgICAgICAgICAgemVybyA9IGZ0cygwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6ZXJvLnNlY29uZCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemVyby5taWNyb3NlY29uZCwgMCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtaW51c19vbmUgPSBmdHMoLTFlLTYpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAjIGxvY2FsdGltZSgtMSkgYW5kIGdtdGltZSgtMSkgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbnVzX29uZS5zZWNvbmQsIDU5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWludXNfb25lLm1pY3Jvc2Vjb25kLCA5OTk5OTkpCisKKyAgICAgICAgICAgICAgICB0ID0gZnRzKC0xZS04KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgbWludXNfb25lKQorICAgICAgICAgICAgICAgIHQgPSBmdHMoLTllLTcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCBtaW51c19vbmUpCisgICAgICAgICAgICAgICAgdCA9IGZ0cygtMWUtNykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIG1pbnVzX29uZSkKKworICAgICAgICAgICAgdCA9IGZ0cygxZS03KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCB6ZXJvKQorICAgICAgICAgICAgdCA9IGZ0cyg5ZS03KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCB6ZXJvKQorICAgICAgICAgICAgdCA9IGZ0cygwLjk5OTk5OTQ5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnNlY29uZCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5taWNyb3NlY29uZCwgOTk5OTk5KQorICAgICAgICAgICAgdCA9IGZ0cygwLjk5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuc2Vjb25kLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lm1pY3Jvc2Vjb25kLCA5OTk5OTkpCiAKICAgICBkZWYgdGVzdF9pbnNhbmVfZnJvbXRpbWVzdGFtcChzZWxmKToKICAgICAgICAgIyBJdCdzIHBvc3NpYmxlIHRoYXQgc29tZSBwbGF0Zm9ybSBtYXBzIHRpbWVfdCB0byBkb3VibGUsCkBAIC0xNzQzLDcgKzE4MTAsNyBAQAogICAgICAgICAjIGV4ZW1wdCBzdWNoIHBsYXRmb3JtcyAocHJvdmlkZWQgdGhleSByZXR1cm4gcmVhc29uYWJsZQogICAgICAgICAjIHJlc3VsdHMhKS4KICAgICAgICAgZm9yIGluc2FuZSBpbiAtMWUyMDAsIDFlMjAwOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zYW5lKQogCiAgICAgZGVmIHRlc3RfaW5zYW5lX3V0Y2Zyb210aW1lc3RhbXAoc2VsZik6CkBAIC0xNzUyLDcgKzE4MTksNyBAQAogICAgICAgICAjIGV4ZW1wdCBzdWNoIHBsYXRmb3JtcyAocHJvdmlkZWQgdGhleSByZXR1cm4gcmVhc29uYWJsZQogICAgICAgICAjIHJlc3VsdHMhKS4KICAgICAgICAgZm9yIGluc2FuZSBpbiAtMWUyMDAsIDFlMjAwOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcy51dGNmcm9tdGltZXN0YW1wLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi50aGVjbGFzcy51dGNmcm9tdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zYW5lKQogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW5kb3dzIGRvZXNuJ3QgYWNjZXB0IG5lZ2F0aXZlIHRpbWVzdGFtcHMiKQogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2Zsb2F0X2Zyb210aW1lc3RhbXAoc2VsZik6CkBAIC0xOTA1LDcgKzE5NzIsNyBAQAogICAgICAgICAjIHNpbXBseSBjYW4ndCBiZSBhcHBsaWVkIHRvIGEgbmFpdmUgb2JqZWN0LgogICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3Mubm93KCkKICAgICAgICAgZiA9IEZpeGVkT2Zmc2V0KDQ0LCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkdC5hc3RpbWV6b25lKSAjIG5vdCBlbm91Z2ggYXJncworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkdC5hc3RpbWV6b25lKSAjIG5haXZlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZHQuYXN0aW1lem9uZSwgZiwgZikgIyB0b28gbWFueSBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZHQuYXN0aW1lem9uZSwgZHQpICMgYXJnIHdyb25nIHR5cGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHQuYXN0aW1lem9uZSwgZikgIyBuYWl2ZQpAQCAtMjQ3Nyw3ICsyNTQ0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQyLCB0MykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQ0ID09IHQ1KSAjIG1peGVkIHR6LWF3YXJlICYgbmFpdmUKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0NCwgdDUpICMgbWl4ZWQgdHotYXdhcmUgJiBuYWl2ZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogdDQgPCB0NSkgIyBtaXhlZCB0ei1hd2FyZSAmIG5haXZlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0NSA8IHQ0KSAjIG1peGVkIHR6LWF3YXJlICYgbmFpdmUKIApAQCAtMjYyOSw3ICsyNjk2LDcgQEAKICAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbz1GaXhlZE9mZnNldChOb25lLCAiIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQogICAgICAgICB0MiA9IHQyLnJlcGxhY2UodHppbmZvPUZpeGVkT2Zmc2V0KDAsICIiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQxID09IHQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHQxLCB0MikKIAogICAgICAgICAjIEluIHRpbWUgdy8gaWRlbnRpY2FsIHR6aW5mbyBvYmplY3RzLCB1dGNvZmZzZXQgaXMgaWdub3JlZC4KICAgICAgICAgY2xhc3MgVmFyaWVzKHR6aW5mbyk6CkBAIC0yNzM0LDE2ICsyODAxLDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZD0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUodDEgPiB0MikKIAotICAgICAgICAjIE1ha2UgdDIgbmFpdmUgYW5kIGl0IHNob3VsZCBmYWlsLgorICAgICAgICAjIE1ha2UgdDIgbmFpdmUgYW5kIGl0IHNob3VsZCBkaWZmZXIuCiAgICAgICAgIHQyID0gc2VsZi50aGVjbGFzcy5taW4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQxID09IHQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHQxLCB0MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MiwgdDIpCiAKICAgICAgICAgIyBJdCdzIGFsc28gbmFpdmUgaWYgaXQgaGFzIHR6aW5mbyBidXQgdHppbmZvLnV0Y29mZnNldCgpIGlzIE5vbmUuCiAgICAgICAgIGNsYXNzIE5haXZlKHR6aW5mbyk6CiAgICAgICAgICAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KTogcmV0dXJuIE5vbmUKICAgICAgICAgdDIgPSBzZWxmLnRoZWNsYXNzKDUsIDYsIDcsIHR6aW5mbz1OYWl2ZSgpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogdDEgPT0gdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodDEsIHQyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQyLCB0MikKIAogICAgICAgICAjIE9UT0gsIGl0J3MgT0sgdG8gY29tcGFyZSB0d28gb2YgdGhlc2UgbWl4aW5nIHRoZSB0d28gd2F5cyBvZiBiZWluZwpAQCAtMzE4Niw4ICszMjUzLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGR0LnR6aW5mbyBpcyBmNDRtKQogICAgICAgICAjIFJlcGxhY2luZyB3aXRoIGRlZ2VuZXJhdGUgdHppbmZvIHJhaXNlcyBhbiBleGNlcHRpb24uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGR0LmFzdGltZXpvbmUsIGZub25lKQotICAgICAgICAjIERpdHRvIHdpdGggTm9uZSB0ei4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkdC5hc3RpbWV6b25lLCBOb25lKQogICAgICAgICAjIFJlcGxhY2luZyB3aXRoIHNhbWUgdHppbmZvIG1ha2VzIG5vIGNoYW5nZS4KICAgICAgICAgeCA9IGR0LmFzdGltZXpvbmUoZHQudHppbmZvKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoeC50emluZm8gaXMgZjQ0bSkKQEAgLTMyMDcsNiArMzI3MiwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZ290LnR6aW5mbyBpcyBleHBlY3RlZC50emluZm8pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290LCBleHBlY3RlZCkKIAorICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdVVEMnKQorICAgIGRlZiB0ZXN0X2FzdGltZXpvbmVfZGVmYXVsdF91dGMoc2VsZik6CisgICAgICAgIGR0ID0gc2VsZi50aGVjbGFzcy5ub3codGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LmFzdGltZXpvbmUoTm9uZSksIGR0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LmFzdGltZXpvbmUoKSwgZHQpCisKKyAgICAjIE5vdGUgdGhhdCBvZmZzZXQgaW4gVFogdmFyaWFibGUgaGFzIHRoZSBvcHBvc2l0ZSBzaWduIHRvIHRoYXQKKyAgICAjIHByb2R1Y2VkIGJ5ICV6IGRpcmVjdGl2ZS4KKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF9hc3RpbWV6b25lX2RlZmF1bHRfZWFzdGVybihzZWxmKToKKyAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDExLCA0LCA2LCAzMCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgbG9jYWwgPSBkdC5hc3RpbWV6b25lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWwuc3RyZnRpbWUoIiV6ICVaIiksICItMDUwMCBFU1QiKQorICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMTEsIDQsIDUsIDMwLCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBsb2NhbCA9IGR0LmFzdGltZXpvbmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LCBsb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbC5zdHJmdGltZSgiJXogJVoiKSwgIi0wNDAwIEVEVCIpCisKICAgICBkZWYgdGVzdF9hd2FyZV9zdWJ0cmFjdChzZWxmKToKICAgICAgICAgY2xzID0gc2VsZi50aGVjbGFzcwogCkBAIC0zMjYwLDcgKzMzNDQsNyBAQAogICAgICAgICB0MiA9IHQyLnJlcGxhY2UodHppbmZvPUZpeGVkT2Zmc2V0KE5vbmUsICIiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCiAgICAgICAgIHQyID0gdDIucmVwbGFjZSh0emluZm89Rml4ZWRPZmZzZXQoMCwgIiIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogdDEgPT0gdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodDEsIHQyKQogCiAgICAgICAgICMgSW4gZGF0ZXRpbWUgdy8gaWRlbnRpY2FsIHR6aW5mbyBvYmplY3RzLCB1dGNvZmZzZXQgaXMgaWdub3JlZC4KICAgICAgICAgY2xhc3MgVmFyaWVzKHR6aW5mbyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kZWNpbWFsdGVzdGRhdGEvZXh0cmEuZGVjVGVzdCBiL0xpYi90ZXN0L2RlY2ltYWx0ZXN0ZGF0YS9leHRyYS5kZWNUZXN0CmluZGV4IGZlOGI3N2EuLmI2MzBkOGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2RlY2ltYWx0ZXN0ZGF0YS9leHRyYS5kZWNUZXN0CisrKyBiL0xpYi90ZXN0L2RlY2ltYWx0ZXN0ZGF0YS9leHRyYS5kZWNUZXN0CkBAIC0yMjIsMTIgKzIyMiwyNSBAQAogZXh0cjE3MDEgcG93ZXIgMTAwLjAgLTU1Ny43MWUtNzQyODg4ODg4IC0+IDEuMDAwMDAwMDAwMDAwMDAwIEluZXhhY3QgUm91bmRlZAogZXh0cjE3MDIgcG93ZXIgMTAgMWUtMTAwIC0+IDEuMDAwMDAwMDAwMDAwMDAwIEluZXhhY3QgUm91bmRlZAogCistLSBBbm90aGVyIG9uZSAoc2VlIGlzc3VlICMxMjA4MCkuICBUaGFua3MgYWdhaW4gdG8gU3RlZmFuIEtyYWguCitleHRyMTcwMyBwb3dlciA0IC0xLjJlLTk5OTk5OTk5OSAtPiAxLjAwMDAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKKwogLS0gQSBjb3VwbGUgb2YgaW50ZXJlc3RpbmcgZXhhY3QgY2FzZXMgZm9yIHBvd2VyLiAgTm90ZSB0aGF0IHRoZSBzcGVjaWZpY2F0aW9uCiAtLSByZXF1aXJlcyB0aGVzZSB0byBiZSByZXBvcnRlZCBhcyBJbmV4YWN0LgogZXh0cjE3MTAgcG93ZXIgMWUzNzUgNTZlLTMgLT4gMS4wMDAwMDAwMDAwMDAwMDBFKzIxIEluZXhhY3QgUm91bmRlZAogZXh0cjE3MTEgcG93ZXIgMTAwMDAgMC43NSAtPiAxMDAwLjAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKIGV4dHIxNzEyIHBvd2VyIDFlLTI0IDAuODc1IC0+IDEuMDAwMDAwMDAwMDAwMDAwRS0yMSBJbmV4YWN0IFJvdW5kZWQKIAorLS0gU29tZSBtb3JlIGV4YWN0IGNhc2VzLCBleGVyY2lzaW5nIHBvd2VyIHdpdGggbmVnYXRpdmUgc2Vjb25kIGFyZ3VtZW50LgorZXh0cjE3MjAgcG93ZXIgNDAwIC0wLjUgLT4gMC4wNTAwMDAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKK2V4dHIxNzIxIHBvd2VyIDQwOTYgLTAuNzUgLT4gMC4wMDE5NTMxMjUwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCitleHRyMTcyMiBwb3dlciA2MjVlNCAtMC4yNSAtPiAwLjAyMDAwMDAwMDAwMDAwMDAwIEluZXhhY3QgUm91bmRlZAorCistLSBOb25leGFjdCBjYXNlcywgdG8gZXhlcmNpc2Ugc29tZSBvZiB0aGUgZWFybHkgZXhpdCBjb25kaXRpb25zIGZyb20KKy0tIF9wb3dlcl9leGFjdC4KK2V4dHIxNzMwIHBvd2VyIDIwNDggLTAuNzUgLT4gMC4wMDMyODQ3NTE2MjIwODQ4MjIgSW5leGFjdCBSb3VuZGVkCisKKwogLS0gVGVzdHMgZm9yIHRoZSBpc18qIGJvb2xlYW4gb3BlcmF0aW9ucwogcHJlY2lzaW9uOiA5CiBtYXhFeHBvbmVudDogOTk5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kaDUxMi5wZW0gYi9MaWIvdGVzdC9kaDUxMi5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAwZDE2YwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2RoNTEyLnBlbQpAQCAtMCwwICsxLDkgQEAKKy0tLS0tQkVHSU4gREggUEFSQU1FVEVSUy0tLS0tCitNRVlDUVFEMUt2ODg0YkVwUUJnUmpYeUVwd3B5MW9iRUF4bklCeWw2eXBVTTJaYWZxOUFLVUpzQ1J0TUlQV2FrCitYVUdmbkh5OWlVc2lHU2E2cTZKZXcxWHBLZ1ZmQWdFQworLS0tLS1FTkQgREggUEFSQU1FVEVSUy0tLS0tCisKK1RoZXNlIGFyZSB0aGUgNTEyIGJpdCBESCBwYXJhbWV0ZXJzIGZyb20gIkFzc2lnbmVkIE51bWJlciBmb3IgU0tJUCBQcm90b2NvbHMiCisoaHR0cDovL3d3dy5za2lwLXZwbi5vcmcvc3BlYy9udW1iZXJzLmh0bWwpLgorU2VlIHRoZXJlIGZvciBob3cgdGhleSB3ZXJlIGdlbmVyYXRlZC4KK05vdGUgdGhhdCBnIGlzIG5vdCBhIGdlbmVyYXRvciwgYnV0IHRoaXMgaXMgbm90IGEgcHJvYmxlbSBzaW5jZSBwIGlzIGEgc2FmZSBwcmltZS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0IGIvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKaW5kZXggNTAzN2IzMy4uMWMxZjY5ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKKysrIGIvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKQEAgLTExLDExICsxMSw2IEBACiAgICAgICArLS0gQXNzZXJ0aW9uRXJyb3IKICAgICAgICstLSBBdHRyaWJ1dGVFcnJvcgogICAgICAgKy0tIEJ1ZmZlckVycm9yCi0gICAgICArLS0gRW52aXJvbm1lbnRFcnJvcgotICAgICAgfCAgICArLS0gSU9FcnJvcgotICAgICAgfCAgICArLS0gT1NFcnJvcgotICAgICAgfCAgICAgICAgICstLSBXaW5kb3dzRXJyb3IgKFdpbmRvd3MpCi0gICAgICB8ICAgICAgICAgKy0tIFZNU0Vycm9yIChWTVMpCiAgICAgICArLS0gRU9GRXJyb3IKICAgICAgICstLSBJbXBvcnRFcnJvcgogICAgICAgKy0tIExvb2t1cEVycm9yCkBAIC0yNCw2ICsxOSwyMiBAQAogICAgICAgKy0tIE1lbW9yeUVycm9yCiAgICAgICArLS0gTmFtZUVycm9yCiAgICAgICB8ICAgICstLSBVbmJvdW5kTG9jYWxFcnJvcgorICAgICAgKy0tIE9TRXJyb3IKKyAgICAgIHwgICAgKy0tIEJsb2NraW5nSU9FcnJvcgorICAgICAgfCAgICArLS0gQ2hpbGRQcm9jZXNzRXJyb3IKKyAgICAgIHwgICAgKy0tIENvbm5lY3Rpb25FcnJvcgorICAgICAgfCAgICB8ICAgICstLSBCcm9rZW5QaXBlRXJyb3IKKyAgICAgIHwgICAgfCAgICArLS0gQ29ubmVjdGlvbkFib3J0ZWRFcnJvcgorICAgICAgfCAgICB8ICAgICstLSBDb25uZWN0aW9uUmVmdXNlZEVycm9yCisgICAgICB8ICAgIHwgICAgKy0tIENvbm5lY3Rpb25SZXNldEVycm9yCisgICAgICB8ICAgICstLSBGaWxlRXhpc3RzRXJyb3IKKyAgICAgIHwgICAgKy0tIEZpbGVOb3RGb3VuZEVycm9yCisgICAgICB8ICAgICstLSBJbnRlcnJ1cHRlZEVycm9yCisgICAgICB8ICAgICstLSBJc0FEaXJlY3RvcnlFcnJvcgorICAgICAgfCAgICArLS0gTm90QURpcmVjdG9yeUVycm9yCisgICAgICB8ICAgICstLSBQZXJtaXNzaW9uRXJyb3IKKyAgICAgIHwgICAgKy0tIFByb2Nlc3NMb29rdXBFcnJvcgorICAgICAgfCAgICArLS0gVGltZW91dEVycm9yCiAgICAgICArLS0gUmVmZXJlbmNlRXJyb3IKICAgICAgICstLSBSdW50aW1lRXJyb3IKICAgICAgIHwgICAgKy0tIE5vdEltcGxlbWVudGVkRXJyb3IKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2Zvcmtfd2FpdC5weSBiL0xpYi90ZXN0L2Zvcmtfd2FpdC5weQppbmRleCAxY2FhYjFjLi44ODUyN2RmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9mb3JrX3dhaXQucHkKKysrIGIvTGliL3Rlc3QvZm9ya193YWl0LnB5CkBAIC00Myw2ICs0Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BpZCwgY3BpZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICJjYXVzZSA9ICVkLCBleGl0ID0gJWQiICUgKHN0YXR1cyYweGZmLCBzdGF0dXM+PjgpKQogCisgICAgQHN1cHBvcnQucmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTlVNX1RIUkVBRFMpOgogICAgICAgICAgICAgX3RocmVhZC5zdGFydF9uZXcoc2VsZi5mLCAoaSwpKQpAQCAtNjksNyArNzAsOCBAQAogICAgICAgICAgICAgb3MuX2V4aXQobikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgUGFyZW50Ci0gICAgICAgICAgICBzZWxmLndhaXRfaW1wbChjcGlkKQotICAgICAgICAgICAgIyBUZWxsIHRocmVhZHMgdG8gZGllCi0gICAgICAgICAgICBzZWxmLnN0b3AgPSAxCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDIqU0hPUlRTTEVFUCkgIyBXYWl0IGZvciB0aHJlYWRzIHRvIGRpZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYud2FpdF9pbXBsKGNwaWQpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICMgVGVsbCB0aHJlYWRzIHRvIGRpZQorICAgICAgICAgICAgICAgIHNlbGYuc3RvcCA9IDEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlMS5weSBiL0xpYi90ZXN0L2Z1dHVyZV90ZXN0MS5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9mdXR1cmUxLnB5CnJlbmFtZSB0byBMaWIvdGVzdC9mdXR1cmVfdGVzdDEucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlMi5weSBiL0xpYi90ZXN0L2Z1dHVyZV90ZXN0Mi5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9mdXR1cmUyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC9mdXR1cmVfdGVzdDIucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9kdW1wLnB5IGIvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X2R1bXAucHkKaW5kZXggMDgzYzExZi4uNGIzMzg2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X2R1bXAucHkKKysrIGIvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X2R1bXAucHkKQEAgLTEsNiArMSw3IEBACiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogZnJvbSB0ZXN0Lmpzb25fdGVzdHMgaW1wb3J0IFB5VGVzdCwgQ1Rlc3QKIAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF8xRwogCiBjbGFzcyBUZXN0RHVtcDoKICAgICBkZWYgdGVzdF9kdW1wKHNlbGYpOgpAQCAtMjEsNCArMjIsMjAgQEAKIAogCiBjbGFzcyBUZXN0UHlEdW1wKFRlc3REdW1wLCBQeVRlc3QpOiBwYXNzCi1jbGFzcyBUZXN0Q0R1bXAoVGVzdER1bXAsIENUZXN0KTogcGFzcworCitjbGFzcyBUZXN0Q0R1bXAoVGVzdER1bXAsIENUZXN0KToKKworICAgICMgVGhlIHNpemUgcmVxdWlyZW1lbnQgaGVyZSBpcyBob3BlZnVsbHkgb3Zlci1lc3RpbWF0ZWQgKGFjdHVhbAorICAgICMgbWVtb3J5IGNvbnN1bXB0aW9uIGRlcGVuZGluZyBvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBhbmQgYWxzbworICAgICMgc3lzdGVtIG1lbW9yeSBtYW5hZ2VtZW50LCBzaW5jZSB0aGlzIG1heSBhbGxvY2F0ZSBhIGxvdCBvZgorICAgICMgc21hbGwgb2JqZWN0cykuCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8xRywgbWVtdXNlPTEpCisgICAgZGVmIHRlc3RfbGFyZ2VfbGlzdChzZWxmLCBzaXplKToKKyAgICAgICAgTiA9IGludCgzMCAqIDEwMjQgKiAxMDI0ICogKHNpemUgLyBfMUcpKQorICAgICAgICBsID0gWzFdICogTgorICAgICAgICBlbmNvZGVkID0gc2VsZi5kdW1wcyhsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbmNvZGVkKSwgTiAqIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZFs6MV0sICJbIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkWy0yOl0sICIxXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZFsxOi0yXSwgIjEsICIgKiAoTiAtIDEpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X3NjYW5zdHJpbmcucHkgYi9MaWIvdGVzdC9qc29uX3Rlc3RzL3Rlc3Rfc2NhbnN0cmluZy5weQppbmRleCBmODJjZGVlLi40MjZjOGRkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9qc29uX3Rlc3RzL3Rlc3Rfc2NhbnN0cmluZy5weQorKysgYi9MaWIvdGVzdC9qc29uX3Rlc3RzL3Rlc3Rfc2NhbnN0cmluZy5weQpAQCAtOSwxNCArOSw5IEBACiAgICAgICAgICAgICBzY2Fuc3RyaW5nKCcielxcdWQ4MzRcXHVkZDIweCInLCAxLCBUcnVlKSwKICAgICAgICAgICAgICgnelxVMDAwMWQxMjB4JywgMTYpKQogCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID09IDY1NTM1OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBzY2Fuc3RyaW5nKCcielxVMDAwMWQxMjB4IicsIDEsIFRydWUpLAotICAgICAgICAgICAgICAgICgnelxVMDAwMWQxMjB4JywgNikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIHNjYW5zdHJpbmcoJyJ6XFUwMDAxZDEyMHgiJywgMSwgVHJ1ZSksCi0gICAgICAgICAgICAgICAgKCd6XFUwMDAxZDEyMHgnLCA1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNjYW5zdHJpbmcoJyJ6XFUwMDAxZDEyMHgiJywgMSwgVHJ1ZSksCisgICAgICAgICAgICAoJ3pcVTAwMDFkMTIweCcsIDUpKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBzY2Fuc3RyaW5nKCciXFx1MDA3YiInLCAxLCBUcnVlKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2tleWNlcnQucGFzc3dkLnBlbSBiL0xpYi90ZXN0L2tleWNlcnQucGFzc3dkLnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTA1NzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3Qva2V5Y2VydC5wYXNzd2QucGVtCkBAIC0wLDAgKzEsMzMgQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK1Byb2MtVHlwZTogNCxFTkNSWVBURUQKK0RFSy1JbmZvOiBERVMtRURFMy1DQkMsMUE4RDlEMkEwMkVDNjk4QQorCitrSlliZlo4TDBzZmU5T3R5M2d3MGFsb05uWTVFOGZlZ1JmUUxabE5veFRsNmpOdDBuSXdJOGtESjM2Q1pnUjljCit1M0ZESm0vS3FyZlVvejh2VytxRW5XaFNHN1FQWDJ3V0dQSGQ0Szk0WXovRmdyUnpaMERvSzdYeFhxOWdPdFZBCitBVkdRaG56MzJwKzZXaGZHc0NyOUFyWEV3UlpyVGsvRnZ6RVBhVTVmSGNvU2tyTlZBR1g4SXBTVmtTRHdFRFFyCitHdjE3K2Nmazk5VVYxT0N6YTZ5S0hvRmtUdHJDK1BaVTcxTG9tQmFiaXZTMk9jNEI5aFl1U1IyaEYwMXdUSFArCitZbFdOYWdaT09WdE56NG9LSzl4OWVOUXBtZlFYUXZQUFRmdXNleEtJYktmWnJNdkpveGNtMWdmY1owSC93SzZQCis2d21YU0czNXFNT096dENaTnRwZXJqczF3ekVCWHpueUs4UW1MY0FKQmprZmFyQUJKWDl2QkV6WlYwT1VLaHkrCitub09SRndIVGxscGhibXlkTGh1NmVoTFVaTUhQaHpBUzVVTjdzcnRwU044MWVlckRNeTBSTVVBd0E3L1BvZlgxCis5NE1lODVROGpQMFBDOUVUZHNKY1BxTHpBUEVURVl1MEVMZXdLUmNyZHlXaSt0bExGcnBFNUtUL3M1ZWNibDlsCis3QjYxVTRLZmQxUElYYy9zaUlOaFUzQTNiWUsrODQ1WXlVQXJVT25LZjFrRW94N3AxUnBEN3lGcVZUMDRsUlRvCitjaWJOS0FUQnVzWFN1QnJwMkc2R051aFdFT1NhZldDS0pRQXpnQ1lJcDZaVFYya2hoTVVHcHBjLzJIM0NGNmNPCit6WDBLdGxQVlpDN2hMa0I2SFQ4U3hZVXdGMXpxV1k3Ky9YUFBkYzM3TWVFWjg3UTNVdVp3cU9STFkrWjBocGd0CitMNUpYQkNva2xaaENBYU4yR3F3RkxYdEdpUlNSRkdZN3hYSWhiRFRsRTY1V3YxV0dHZ0RMTUtHRTFnT3ozeUFvCisyampHMSt5QUhKVWRFNjlYVEZIU3FTa3ZhbG9BMVcwM0xkTVhaOVZ1UUoveVNYQ2llNkFCQVE9PQorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJQ1ZEQ0NBYjJnQXdJQkFnSUpBTmZIT0JrWnI4Sk9NQTBHQ1NxR1NJYjNEUUVCQlFVQU1GOHhDekFKQmdOVgorQkFZVEFsaFpNUmN3RlFZRFZRUUhFdzVEWVhOMGJHVWdRVzUwYUhKaGVERWpNQ0VHQTFVRUNoTWFVSGwwYUc5dQorSUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEVqQVFCZ05WQkFNVENXeHZZMkZzYUc5emREQWVGdzB4TURFdworTURneU16QXhOVFphRncweU1ERXdNRFV5TXpBeE5UWmFNRjh4Q3pBSkJnTlZCQVlUQWxoWk1SY3dGUVlEVlFRSAorRXc1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDaE1hVUhsMGFHOXVJRk52Wm5SM1lYSmxJRVp2ZFc1aworWVhScGIyNHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBdworZ1lrQ2dZRUEyMXZUNWlzcTdGNjhhbVl1dU5wU0ZsS0RQck1VQ2E0WVdZcVpSdDJPWisvM05LYVoyeEFpU3dyNworNk1yUUY3MHQ1bkxiU1BwcUU1KzVWclM1OFNZK2cvc1hMaUZkNkFwbEgxd0pad2g3OERvZmJGWVhVZ2drdEZNdAorcFR5aVg4anRQNjZia2NQa0RBREEwODlSSTFUUVI2Q2ErbjdIRmE3YzFmYWJWVjZpM3prQ0F3RUFBYU1ZTUJZdworRkFZRFZSMFJCQTB3QzRJSmJHOWpZV3hvYjNOME1BMEdDU3FHU0liM0RRRUJCUVVBQTRHQkFIUGN0UUJFUTR3ZAorQko2K0pjcElyYW9wTG44QkdoYmpOV2o0MG1tUnFXQi9OQVdGNk01bmU3S3BHQXU3dExlRzRoYjF6TGFsZEs4RworbHh5MkdQU1JGNkxGUzQ4ZHBFajJIYk12Mm52djZ4eGFsRE1KOStEaWNXZ0FLVFE2YmNYMmozR1VrQ1IwZy9UMQorQ1JsTkJBQWx2aEt6TzdDbHBmOWwwWUtCRWZyYUpCeVgKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CmluZGV4IGJlMDU0ZWEuLjQyZTExOGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQpAQCAtNDE4LDYgKzQxOCw0NyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdS5yZXZlcnNlLCA0MikKIAorICAgIGRlZiB0ZXN0X2NsZWFyKHNlbGYpOgorICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoWzIsIDMsIDRdKQorICAgICAgICB1LmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBbXSkKKworICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoW10pCisgICAgICAgIHUuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIFtdKQorCisgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbXSkKKyAgICAgICAgdS5hcHBlbmQoMSkKKyAgICAgICAgdS5jbGVhcigpCisgICAgICAgIHUuYXBwZW5kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgWzJdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdS5jbGVhciwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbMSwgMiwgM10pCisgICAgICAgIHYgPSB1LmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIFsxLCAyLCAzXSkKKworICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoW10pCisgICAgICAgIHYgPSB1LmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIFtdKQorCisgICAgICAgICMgdGVzdCB0aGF0IGl0J3MgaW5kZWVkIGEgY29weSBhbmQgbm90IGEgcmVmZXJlbmNlCisgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbJ2EnLCAnYiddKQorICAgICAgICB2ID0gdS5jb3B5KCkKKyAgICAgICAgdi5hcHBlbmQoJ2knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIFsnYScsICdiJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdSArIFsnaSddKQorCisgICAgICAgICMgdGVzdCB0aGF0IGl0J3MgYSBzaGFsbG93LCBub3QgYSBkZWVwIGNvcHkKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFsxLCAyLCBbMywgNF0sIDVdKQorICAgICAgICB2ID0gdS5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCB2KQorICAgICAgICBzZWxmLmFzc2VydElzKHZbM10sIHVbM10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB1LmNvcHksIE5vbmUpCisKICAgICBkZWYgdGVzdF9zb3J0KHNlbGYpOgogICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoWzEsIDBdKQogICAgICAgICB1LnNvcnQoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weSBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKaW5kZXggMDk0Y2M3YS4uYmZiZjQ0ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CkBAIC00LDcgKzQsNyBAQAogCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQotZnJvbSBfdGhyZWFkIGltcG9ydCBzdGFydF9uZXdfdGhyZWFkLCBnZXRfaWRlbnQsIFRJTUVPVVRfTUFYCitmcm9tIF90aHJlYWQgaW1wb3J0IHN0YXJ0X25ld190aHJlYWQsIFRJTUVPVVRfTUFYCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICBzZWxmLmZpbmlzaGVkID0gW10KICAgICAgICAgc2VsZi5fY2FuX2V4aXQgPSBub3Qgd2FpdF9iZWZvcmVfZXhpdAogICAgICAgICBkZWYgdGFzaygpOgotICAgICAgICAgICAgdGlkID0gZ2V0X2lkZW50KCkKKyAgICAgICAgICAgIHRpZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQogICAgICAgICAgICAgc2VsZi5zdGFydGVkLmFwcGVuZCh0aWQpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZigpCkBAIC0yNTUsNiArMjU1LDE4IEBACiAgICAgICAgIGxvY2sucmVsZWFzZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbG9jay5yZWxlYXNlKQogCisgICAgZGVmIHRlc3RfcmVsZWFzZV9zYXZlX3VuYWNxdWlyZWQoc2VsZik6CisgICAgICAgICMgQ2Fubm90IF9yZWxlYXNlX3NhdmUgYW4gdW5hY3F1aXJlZCBsb2NrCisgICAgICAgIGxvY2sgPSBzZWxmLmxvY2t0eXBlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBsb2NrLl9yZWxlYXNlX3NhdmUpCisgICAgICAgIGxvY2suYWNxdWlyZSgpCisgICAgICAgIGxvY2suYWNxdWlyZSgpCisgICAgICAgIGxvY2sucmVsZWFzZSgpCisgICAgICAgIGxvY2suYWNxdWlyZSgpCisgICAgICAgIGxvY2sucmVsZWFzZSgpCisgICAgICAgIGxvY2sucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbG9jay5fcmVsZWFzZV9zYXZlKQorCiAgICAgZGVmIHRlc3RfZGlmZmVyZW50X3RocmVhZChzZWxmKToKICAgICAgICAgIyBDYW5ub3QgcmVsZWFzZSBmcm9tIGEgZGlmZmVyZW50IHRocmVhZAogICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9tYWlsY2FwLnR4dCBiL0xpYi90ZXN0L21haWxjYXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MTEzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9tYWlsY2FwLnR4dApAQCAtMCwwICsxLDM5IEBACisjIE1haWxjYXAgZmlsZSBmb3IgdGVzdF9tYWlsY2FwOyBiYXNlZCBvbiBSRkMgMTUyNAorIyBSZWZlcnJlZCB0byBieSB0ZXN0X21haWxjYXAucHkKKworIworIyBUaGlzIGlzIGEgY29tbWVudC4KKyMKKworYXBwbGljYXRpb24vZnJhbWU7IHNob3dmcmFtZSAlczsgcHJpbnQ9ImNhdCAlcyB8IGxwIgorYXBwbGljYXRpb24vcG9zdHNjcmlwdDsgcHMtdG8tdGVybWluYWwgJXM7XAorICAgIG5lZWRzdGVybWluYWwKK2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQ7IHBzLXRvLXRlcm1pbmFsICVzOyBcCisgICAgY29tcG9zZT1pZHJhdyAlcworYXBwbGljYXRpb24veC1kdmk7IHhkdmkgJXMKK2FwcGxpY2F0aW9uL3gtbW92aWU7IG1vdmllcGxheWVyICVzOyBjb21wb3NlPW1vdmllbWFrZXIgJXM7IFwKKyAgICAgICBkZXNjcmlwdGlvbj0iTW92aWUiOyBcCisgICAgICAgeDExLWJpdG1hcD0iL3Vzci9saWIvWm1haWwvYml0bWFwcy9tb3ZpZS54Ym0iCithcHBsaWNhdGlvbi8qOyBlY2hvICJUaGlzIGlzIFwiJXRcIiBidXQgXAorICAgICAgIGlzIDUwIFwlIEdyZWVrIHRvIG1lIiBcOyBjYXQgJXM7IGNvcGlvdXNvdXRwdXQKKworYXVkaW8vYmFzaWM7IHNob3dhdWRpbyAlczsgY29tcG9zZT1hdWRpb2NvbXBvc2UgJXM7IGVkaXQ9YXVkaW9jb21wb3NlICVzO1wKK2Rlc2NyaXB0aW9uPSJBbiBhdWRpbyBmcmFnbWVudCIKK2F1ZGlvLyogOyAvdXNyL2xvY2FsL2Jpbi9zaG93YXVkaW8gJXQKKworaW1hZ2UvcmdiOyBkaXNwbGF5ICVzCisjaW1hZ2UvZ2lmOyBkaXNwbGF5ICVzCitpbWFnZS94LXh3aW5kb3dkdW1wOyBkaXNwbGF5ICVzCisKKyMgVGhlIGNvbnRpbnVhdGlvbiBjaGFyIHNob3VsZG4ndCBcCisjIG1ha2UgYSBkaWZmZXJlbmNlIGluIGEgY29tbWVudC4KKworbWVzc2FnZS9leHRlcm5hbC1ib2R5OyBzaG93ZXh0ZXJuYWwgJXMgJXthY2Nlc3MtdHlwZX0gJXtuYW1lfSAle3NpdGV9IFwKKyAgICAle2RpcmVjdG9yeX0gJXttb2RlfSAle3NlcnZlcn07IG5lZWRzdGVybWluYWw7IGNvbXBvc2V0eXBlZCA9IGV4dGNvbXBvc2UgJXM7IFwKKyAgICBkZXNjcmlwdGlvbj0iQSByZWZlcmVuY2UgdG8gZGF0YSBzdG9yZWQgaW4gYW4gZXh0ZXJuYWwgbG9jYXRpb24iCisKK3RleHQvcmljaHRleHQ7IHNob3dub25hc2NpaSBpc28tODg1OS04IC1lIHJpY2h0ZXh0IC1wICVzOyB0ZXN0PXRlc3QgImBlY2hvIFwKKyAgICAle2NoYXJzZXR9IHwgdHIgJ1tBLVpdJyAnW2Etel0nYCIgID0gaXNvLTg4NTktODsgY29waW91c291dHB1dAorCit2aWRlby9tcGVnOyBtcGVnX3BsYXkgJXMKK3ZpZGVvLyo7IGFuaW1hdGUgJXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21hdGhfdGVzdGNhc2VzLnR4dCBiL0xpYi90ZXN0L21hdGhfdGVzdGNhc2VzLnR4dAppbmRleCA1ZTI0MzM1Li45NTg1MTg4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9tYXRoX3Rlc3RjYXNlcy50eHQKKysrIGIvTGliL3Rlc3QvbWF0aF90ZXN0Y2FzZXMudHh0CkBAIC01MTcsMyArNTE3LDExNyBAQAogCiAtLSB3ZWFrZXIgdmVyc2lvbiBvZiBleHBtMTAzMDIKIGV4cG0xMDMwNyBleHBtMSA3MDkuNSAtPiAxLjM1NDk4NjMxOTMxNDYzMjhlKzMwOAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBsb2cyOiBsb2cgdG8gYmFzZSAyIC0tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0tIHNwZWNpYWwgdmFsdWVzCitsb2cyMDAwMCBsb2cyIDAuMCAtPiAtaW5mICAgICAgICAgICAgICAgZGl2aWRlLWJ5LXplcm8KK2xvZzIwMDAxIGxvZzIgLTAuMCAtPiAtaW5mICAgICAgICAgICAgICBkaXZpZGUtYnktemVybworbG9nMjAwMDIgbG9nMiBpbmYgLT4gaW5mCitsb2cyMDAwMyBsb2cyIC1pbmYgLT4gbmFuICAgICAgICAgICAgICAgaW52YWxpZAorbG9nMjAwMDQgbG9nMiBuYW4gLT4gbmFuCisKKy0tIGV4YWN0IHZhbHVlIGF0IDEuMAorbG9nMjAwMTAgbG9nMiAxLjAgLT4gMC4wCisKKy0tIG5lZ2F0aXZlcworbG9nMjAwMjAgbG9nMiAtNWUtMzI0IC0+IG5hbiAgICAgICAgICAgIGludmFsaWQKK2xvZzIwMDIxIGxvZzIgLTEuMCAtPiBuYW4gICAgICAgICAgICAgICBpbnZhbGlkCitsb2cyMDAyMiBsb2cyIC0xLjdlLTMwOCAtPiBuYW4gICAgICAgICAgaW52YWxpZAorCistLSBleGFjdCB2YWx1ZXMgYXQgcG93ZXJzIG9mIDIKK2xvZzIwMTAwIGxvZzIgMi4wIC0+IDEuMAorbG9nMjAxMDEgbG9nMiA0LjAgLT4gMi4wCitsb2cyMDEwMiBsb2cyIDguMCAtPiAzLjAKK2xvZzIwMTAzIGxvZzIgMTYuMCAtPiA0LjAKK2xvZzIwMTA0IGxvZzIgMzIuMCAtPiA1LjAKK2xvZzIwMTA1IGxvZzIgNjQuMCAtPiA2LjAKK2xvZzIwMTA2IGxvZzIgMTI4LjAgLT4gNy4wCitsb2cyMDEwNyBsb2cyIDI1Ni4wIC0+IDguMAorbG9nMjAxMDggbG9nMiA1MTIuMCAtPiA5LjAKK2xvZzIwMTA5IGxvZzIgMTAyNC4wIC0+IDEwLjAKK2xvZzIwMTEwIGxvZzIgMjA0OC4wIC0+IDExLjAKKworbG9nMjAyMDAgbG9nMiAwLjUgLT4gLTEuMAorbG9nMjAyMDEgbG9nMiAwLjI1IC0+IC0yLjAKK2xvZzIwMjAyIGxvZzIgMC4xMjUgLT4gLTMuMAorbG9nMjAyMDMgbG9nMiAwLjA2MjUgLT4gLTQuMAorCistLSB2YWx1ZXMgY2xvc2UgdG8gMS4wCitsb2cyMDMwMCBsb2cyIDEuMDAwMDAwMDAwMDAwMDAwMiAtPiAzLjIwMzQyNjUwMzgxNDkxNzFlLTE2Citsb2cyMDMwMSBsb2cyIDEuMDAwMDAwMDAwMSAtPiAxLjQ0MjY5NTE2MDE4NTk1MTZlLTEwCitsb2cyMDMwMiBsb2cyIDEuMDAwMDEgLT4gMS40NDI2ODc4Mjc0NzEyOTk3ZS01CisKK2xvZzIwMzEwIGxvZzIgMC45OTk5OTk5OTk5OTk5OTk5IC0+IC0xLjYwMTcxMzI1MTkwNzQ1ODhlLTE2Citsb2cyMDMxMSBsb2cyIDAuOTk5OTk5OTk5OSAtPiAtMS40NDI2OTUxNjAzMzAyMjEwZS0xMAorbG9nMjAzMTIgbG9nMiAwLjk5OTk5IC0+IC0xLjQ0MjcwMjI1NDQwNTY5MjJlLTUKKworLS0gdGlueSB2YWx1ZXMKK2xvZzIwNDAwIGxvZzIgNWUtMzI0IC0+IC0xMDc0LjAKK2xvZzIwNDAxIGxvZzIgMWUtMzIzIC0+IC0xMDczLjAKK2xvZzIwNDAyIGxvZzIgMS41ZS0zMjMgLT4gLTEwNzIuNDE1MDM3NDk5Mjc4OQorbG9nMjA0MDMgbG9nMiAyZS0zMjMgLT4gLTEwNzIuMAorCitsb2cyMDQxMCBsb2cyIDFlLTMwOCAtPiAtMTAyMy4xNTM4NTMyMjUzMDc2Citsb2cyMDQxMSBsb2cyIDIuMjI1MDczODU4NTA3MjAxNGUtMzA4IC0+IC0xMDIyLjAKK2xvZzIwNDEyIGxvZzIgNC40NTAxNDc3MTcwMTQ0MDI4ZS0zMDggLT4gLTEwMjEuMAorbG9nMjA0MTMgbG9nMiAxZS0zMDcgLT4gLTEwMTkuODMxOTI1MTMwNDIwMgorCistLSBodWdlIHZhbHVlcworbG9nMjA1MDAgbG9nMiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCAtPiAxMDI0LjAKK2xvZzIwNTAxIGxvZzIgMS43ZSszMDggLT4gMTAyMy45MTkzODc5NzE2NzA2Citsb2cyMDUwMiBsb2cyIDguOTg4NDY1Njc0MzExNTc5NWUrMzA3IC0+IDEwMjMuMAorCistLSBzZWxlY3Rpb24gb2YgcmFuZG9tIHZhbHVlcworbG9nMjA2MDAgbG9nMiAtNy4yMTc0MzI0ODQxMDM5ODM4ZSsyODkgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MDEgbG9nMiAtMi44NjEzMTk3MzQwODk2MTdlKzI2NSAtPiBuYW4gICAgaW52YWxpZAorbG9nMjA2MDIgbG9nMiAtNC4zNTA3NjQ2ODk0MDA4OTYyZSsyNTcgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MDMgbG9nMiAtNi42NzE3MjY1MzA3NTIwMjI0ZSsyMzQgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MDQgbG9nMiAtMy45MTE4MDIzNzg2NjE5Mjk0ZSsyMjkgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MDUgbG9nMiAtMS41NDc4MjIxMzAyNTA1MTYxZSsyMDYgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MDYgbG9nMiAtMS40MzgwNDg1MTMxMzY0NjAyZSsyMDAgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MDcgbG9nMiAtMy43MjM1MTk4NzMwMzgyNjQ1ZSsxODUgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MDggbG9nMiAtMS4wNDcyMjQyMjM1MDk1NzI0ZSsxODQgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MDkgbG9nMiAtNS4wMTQxNzgxOTU2MTYzODg0ZSsxNjAgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MTAgbG9nMiAtMi4xMTU3OTU4MDMxMTYwMzI0ZSsxMjQgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MTEgbG9nMiAtNy45Njc3NTU4NjEyNTY3NzE4ZSs5MCAtPiBuYW4gICAgaW52YWxpZAorbG9nMjA2MTIgbG9nMiAtNS41NTUzOTA2MTk0MDYzNzMyZSs0NSAtPiBuYW4gICAgaW52YWxpZAorbG9nMjA2MTMgbG9nMiAtMTY1NzM5MDA5NTI2MDcuOTUzIC0+IG5hbiAgICAgICAgaW52YWxpZAorbG9nMjA2MTQgbG9nMiAtMzcxOTgzNzEwMTkuODg4NjE4IC0+IG5hbiAgICAgICAgaW52YWxpZAorbG9nMjA2MTUgbG9nMiAtNi4wNzI3MTE1MTIxNDIyNjc0ZS0zMiAtPiBuYW4gICAgaW52YWxpZAorbG9nMjA2MTYgbG9nMiAtMi41NDA2ODQxNjU2NTI2MDU3ZS0zOCAtPiBuYW4gICAgaW52YWxpZAorbG9nMjA2MTcgbG9nMiAtNC45MDU2NzY2NzAzMjY3NjU3ZS00MyAtPiBuYW4gICAgaW52YWxpZAorbG9nMjA2MTggbG9nMiAtMi4xNjQ2Nzg2MDc1MjI4MzA1ZS03MSAtPiBuYW4gICAgaW52YWxpZAorbG9nMjA2MTkgbG9nMiAtMi40NzA4MjY3OTA0ODg1NzNlLTc4IC0+IG5hbiAgICAgaW52YWxpZAorbG9nMjA2MjAgbG9nMiAtMy44NjYxNzA5MzAzNDg5MDY0ZS0xNjUgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MjEgbG9nMiAtMS4wNTE2NDk2OTc2NjQ5OTg2ZS0xODIgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MjIgbG9nMiAtMS41OTM1NDU4NjE0MzE3OTk2ZS0yNTUgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MjMgbG9nMiAtMi44NzUwOTc3MjY3MzM2NjU0ZS0yOTMgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MjQgbG9nMiAtNy42MDc5NDY2Nzk0NzMyNTg1ZS0yOTYgLT4gbmFuICAgaW52YWxpZAorbG9nMjA2MjUgbG9nMiAzLjIwNzMyNTM1Mzk5ODg1NDVlLTMwNyAtPiAtMTAxOC4xNTA1NTQ0MjA5MjEzCitsb2cyMDYyNiBsb2cyIDEuNjc0OTM3ODg1NDcyMjQ5ZS0yNDQgLT4gLTgwOS44MDYzNDc1NTc4MzEyNgorbG9nMjA2MjcgbG9nMiAxLjA5MTEyNTkwNDQ5MzEyODNlLTIxNCAtPiAtNzEwLjc2Njc5NDcyMjc0MjEzCitsb2cyMDYyOCBsb2cyIDIuMDI3NTM3MjYyNDgwOTcwOWUtMTU0IC0+IC01MTAuNTU3MTk4MTgzODMyNzIKK2xvZzIwNjI5IGxvZzIgNy4zOTI2MDg3MzY5NjMxODQxZS0xMTUgLT4gLTM3OS4xMzU2NDczNTMxMjI5MgorbG9nMjA2MzAgbG9nMiAxLjM0ODAxOTgyMDYzNDI0MjNlLTg2IC0+IC0yODUuMjU0OTc0NDUwOTQ0MzYKK2xvZzIwNjMxIGxvZzIgOC45OTI3Mzg0NjU1NzE5OTQ3ZS04MyAtPiAtMjcyLjU1MTI3MTM2NDAxNjM3Citsb2cyMDYzMiBsb2cyIDMuMTQ1MjM5ODcxMzU5NzQ4N2UtNjAgLT4gLTE5Ny42NjI1MTU2NDQ5Njg3NQorbG9nMjA2MzMgbG9nMiA3LjA3MDY1NzMyMTU0NTczNTFlLTU1IC0+IC0xNzkuODg0MjAwODc3ODIyMTcKK2xvZzIwNjM0IGxvZzIgMy4xMjU4Mjg1MzkwNzMxNjY5ZS00OSAtPiAtMTYxLjEzMDIzODAwNTA1NjUzCitsb2cyMDYzNSBsb2cyIDguMjI1MzA0NjYyNzgyOTk0MmUtNDEgLT4gLTEzMy4xNTg5ODI3NzM1NTg3OQorbG9nMjA2MzYgbG9nMiA3Ljg2OTEzNjczOTc1MTk4OTdlKzQ5IC0+IDE2NS43NTA2ODIwMjczMjQxOQorbG9nMjA2MzcgbG9nMiAyLjk5MjA1NjE5ODM5MjUwMTNlKzY0IC0+IDIxNC4xODQ1MzUzNDU3Mzc1NworbG9nMjA2MzggbG9nMiA0Ljc4MjcyNTQ1NTM5NDY4NDFlKzc3IC0+IDI1OC4wNDYyOTYyODQ0NTY3MworbG9nMjA2MzkgbG9nMiAzLjE5MDM1NjY0OTY0ODE4NjhlKzEwNSAtPiAzNTAuNDc2MTY3Njc0OTExNjYKK2xvZzIwNjQwIGxvZzIgNS42MTk1MDgyNDQ5NTAyNDE5ZSsxMTMgLT4gMzc3Ljg2ODMxODYxMDA4MjUwCitsb2cyMDY0MSBsb2cyIDkuOTYyNTY1ODI1MDY1MTA0N2UrMTI1IC0+IDQxOC41NTc1MjkyMTIyODc1MworbG9nMjA2NDIgbG9nMiAyLjczNTg5NDUyMjA5NjE1MzJlKzE0NSAtPiA0ODMuMTMxNTg2MzY5MjM0MTMKK2xvZzIwNjQzIGxvZzIgMi43ODU4NDIzODc5MjY5MzFlKzE3NCAtPiA1NzkuNDkzNjAyMTQ4NjAyODAKK2xvZzIwNjQ0IGxvZzIgMi40MTY5MTcyNTA3MjUyNzUxZSsxOTMgLT4gNjQyLjQwNTI5MDM5Mjg5NjUyCitsb2cyMDY0NSBsb2cyIDMuMTY4OTA5MTIwNjM5NTYzMmUrMjA1IC0+IDY4Mi42NTkyNDU3Mzc5ODM5NQorbG9nMjA2NDYgbG9nMiAyLjUzNTk5NTU5MjM2NTM5MWUrMjA4IC0+IDY5Mi4zMDM1OTU5NzQ2MDQ2MAorbG9nMjA2NDcgbG9nMiA2LjIwMTEyMzY1NjYwODk5MTZlKzIzMyAtPiA3NzYuNjQxNzc1NzY3MzA5MTMKK2xvZzIwNjQ4IGxvZzIgMi4xODQzMjc0ODIwNjc3NjMyZSsyNTMgLT4gODQxLjU3NDk5NzE3Mjg5NjQ3Citsb2cyMDY0OSBsb2cyIDguNzQ5MzkzMTA2MzQ3NDc5MWUrMjk3IC0+IDk4OS43NDE4MjcxMzA3Mzk4MQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbWVtb3J5X3dhdGNoZG9nLnB5IGIvTGliL3Rlc3QvbWVtb3J5X3dhdGNoZG9nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4Y2NhOGQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9tZW1vcnlfd2F0Y2hkb2cucHkKQEAgLTAsMCArMSwyOCBAQAorIiIiTWVtb3J5IHdhdGNoZG9nOiBwZXJpb2RpY2FsbHkgcmVhZCB0aGUgbWVtb3J5IHVzYWdlIG9mIHRoZSBtYWluIHRlc3QgcHJvY2VzcworYW5kIHByaW50IGl0IG91dCwgdW50aWwgdGVybWluYXRlZC4iIiIKKyMgc3RkaW4gc2hvdWxkIHJlZmVyIHRvIHRoZSBwcm9jZXNzJyAvcHJvYy88UElEPi9zdGF0bTogd2UgZG9uJ3QgcGFzcyB0aGUKKyMgcHJvY2VzcycgUElEIHRvIGF2b2lkIGEgcmFjZSBjb25kaXRpb24gaW4gY2FzZSBvZiAtIHVubGlrZWx5IC0gUElEIHJlY3ljbGluZy4KKyMgSWYgdGhlIHByb2Nlc3MgY3Jhc2hlcywgcmVhZGluZyBmcm9tIHRoZSAvcHJvYyBlbnRyeSB3aWxsIGZhaWwgd2l0aCBFU1JDSC4KKworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCisKKwordHJ5OgorICAgIHBhZ2Vfc2l6ZSA9IG9zLnN5c2NvbmYoJ1NDX1BBR0VTSVpFJykKK2V4Y2VwdCAoVmFsdWVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgIHRyeToKKyAgICAgICAgcGFnZV9zaXplID0gb3Muc3lzY29uZignU0NfUEFHRV9TSVpFJykKKyAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgcGFnZV9zaXplID0gNDA5NgorCit3aGlsZSBUcnVlOgorICAgIHN5cy5zdGRpbi5zZWVrKDApCisgICAgc3RhdG0gPSBzeXMuc3RkaW4ucmVhZCgpCisgICAgZGF0YSA9IGludChzdGF0bS5zcGxpdCgpWzVdKQorICAgIHN5cy5zdGRvdXQud3JpdGUoIiAuLi4gcHJvY2VzcyBkYXRhIHNpemU6IHtkYXRhOi4xZn1HXG4iCisgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGRhdGE9ZGF0YSAqIHBhZ2Vfc2l6ZSAvICgxMDI0ICoqIDMpKSkKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICB0aW1lLnNsZWVwKDEpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9tb2NrX3NvY2tldC5weSBiL0xpYi90ZXN0L21vY2tfc29ja2V0LnB5CmluZGV4IDgwMzY5MzIuLmQwOWU3OGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L21vY2tfc29ja2V0LnB5CisrKyBiL0xpYi90ZXN0L21vY2tfc29ja2V0LnB5CkBAIC0xMDYsNyArMTA2LDggQEAKICAgICByZXR1cm4gTW9ja1NvY2tldCgpCiAKIAotZGVmIGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9c29ja2V0X21vZHVsZS5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CitkZWYgY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD1zb2NrZXRfbW9kdWxlLl9HTE9CQUxfREVGQVVMVF9USU1FT1VULAorICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgIHRyeToKICAgICAgICAgaW50X3BvcnQgPSBpbnQoYWRkcmVzc1sxXSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weSBiL0xpYi90ZXN0L211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CnJlbmFtZSB0byBMaWIvdGVzdC9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CmluZGV4IGVmNjNiNjkuLmEyYzU3ZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIwotIyB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKKyMgbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQogIyAgIENvbW1vbiBVbml0dGVzdCBSb3V0aW5lcyBmb3IgQ0pLIGNvZGVjcwogIwogCkBAIC0yNjQsMjEgKzI2NCw2IEBACiAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zdHJlYW0uZ2V0dmFsdWUoKSwgc2VsZi50c3RyaW5nWzBdKQogCi1pZiBsZW4oJ1xVMDAwMTIzNDUnKSA9PSAyOiAjIHVjczIgYnVpbGQKLSAgICBfdW5pY2hyID0gY2hyCi0gICAgZGVmIGNocih2KToKLSAgICAgICAgaWYgdiA+PSAweDEwMDAwOgotICAgICAgICAgICAgcmV0dXJuIF91bmljaHIoMHhkODAwICsgKCh2IC0gMHgxMDAwMCkgPj4gMTApKSArIFwKLSAgICAgICAgICAgICAgICAgICBfdW5pY2hyKDB4ZGMwMCArICgodiAtIDB4MTAwMDApICYgMHgzZmYpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIF91bmljaHIodikKLSAgICBfb3JkID0gb3JkCi0gICAgZGVmIG9yZChjKToKLSAgICAgICAgaWYgbGVuKGMpID09IDI6Ci0gICAgICAgICAgICByZXR1cm4gMHgxMDAwMCArICgoX29yZChjWzBdKSAtIDB4ZDgwMCkgPDwgMTApICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAob3JkKGNbMV0pIC0gMHhkYzAwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIF9vcmQoYykKIAogY2xhc3MgVGVzdEJhc2VfTWFwcGluZyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcGFzc19lbmN0ZXN0ID0gW10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vL29uZS5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vL29uZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDgwZjZmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vb25lLnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAnYm90aF9wb3J0aW9ucyBmb28gb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vdHdvLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vdHdvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMzFkM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby90d28ucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdib3RoX3BvcnRpb25zIGZvbyB0d28nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9taXNzaW5nX2RpcmVjdG9yeS56aXAgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9taXNzaW5nX2RpcmVjdG9yeS56aXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM2YTkxMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21pc3NpbmdfZGlyZWN0b3J5LnppcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlL2FfdGVzdC5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzY2JlZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlL2FfdGVzdC5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ2luIG1vZHVsZScKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QvZW1wdHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBMaWIvZW1haWwvdGVzdC9fX2luaXRfXy5weQpjb3B5IHRvIExpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0L2VtcHR5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9uZXN0ZWRfcG9ydGlvbjEuemlwIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbmVzdGVkX3BvcnRpb24xLnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDIyNDA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbmVzdGVkX3BvcnRpb24xLnppcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL25vdF9hX25hbWVzcGFjZV9wa2cvZm9vL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9fX2luaXRfXy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vX19pbml0X18ucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL25vdF9hX25hbWVzcGFjZV9wa2cvZm9vL29uZS5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL25vdF9hX25hbWVzcGFjZV9wa2cvZm9vL29uZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGY1YzgzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vb25lLnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAncG9ydGlvbjEgZm9vIG9uZScKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xL2Zvby9vbmUucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMS9mb28vb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZjVjODMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMS9mb28vb25lLnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAncG9ydGlvbjEgZm9vIG9uZScKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yL2Zvby90d28ucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMi9mb28vdHdvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwOTJlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMi9mb28vdHdvLnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAncG9ydGlvbjIgZm9vIHR3bycKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudC9jaGlsZC9vbmUucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MS9wYXJlbnQvY2hpbGQvb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NzZmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MS9wYXJlbnQvY2hpbGQvb25lLnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAncGFyZW50IGNoaWxkIG9uZScKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudC9jaGlsZC90d28ucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0Mi9wYXJlbnQvY2hpbGQvdHdvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiMDM3YmMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0Mi9wYXJlbnQvY2hpbGQvdHdvLnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAncGFyZW50IGNoaWxkIHR3bycKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QzL3BhcmVudC9jaGlsZC90aHJlZS5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QzL3BhcmVudC9jaGlsZC90aHJlZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGFiZmUxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50L2NoaWxkL3RocmVlLnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAncGFyZW50IGNoaWxkIHRocmVlJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvdG9wX2xldmVsX3BvcnRpb24xLnppcCBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3RvcF9sZXZlbF9wb3J0aW9uMS56aXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I4NjZjOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3RvcF9sZXZlbF9wb3J0aW9uMS56aXAKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5IGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CmluZGV4IDRkNDkxYjAuLmZiMDQ4MzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKQEAgLTQsMTAgKzQsMTEgQEAKIGltcG9ydCBwaWNrbGV0b29scwogaW1wb3J0IHN5cwogaW1wb3J0IGNvcHlyZWcKK2ltcG9ydCB3ZWFrcmVmCiBmcm9tIGh0dHAuY29va2llcyBpbXBvcnQgU2ltcGxlQ29va2llCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCi0gICAgVGVzdEZhaWxlZCwgVEVTVEZOLCBydW5fd2l0aF9sb2NhbGUsCisgICAgVGVzdEZhaWxlZCwgVEVTVEZOLCBydW5fd2l0aF9sb2NhbGUsIG5vX3RyYWNpbmcsCiAgICAgXzJHLCBfNEcsIGJpZ21lbXRlc3QsCiAgICAgKQogCkBAIC0xOCw3ICsxOSw3IEBACiAjIGtpbmQgb2Ygb3V0ZXIgbG9vcC4KIHByb3RvY29scyA9IHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSkKIAotY2hhcmFjdGVyX3NpemUgPSA0IGlmIHN5cy5tYXh1bmljb2RlID4gMHhGRkZGIGVsc2UgMgorYXNjaWlfY2hhcl9zaXplID0gMQogCiAKICMgUmV0dXJuIFRydWUgaWYgb3Bjb2RlIGNvZGUgYXBwZWFycyBpbiB0aGUgcGlja2xlLCBlbHNlIEZhbHNlLgpAQCAtNzQ3LDYgKzc0OCwxOCBAQAogICAgICAgICAgICAgICAgIHUgPSBzZWxmLmxvYWRzKHMpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCB1KQogCisgICAgZGVmIHRlc3RfZWxsaXBzaXMoc2VsZik6CisgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6CisgICAgICAgICAgICBzID0gc2VsZi5kdW1wcyguLi4sIHByb3RvKQorICAgICAgICAgICAgdSA9IHNlbGYubG9hZHMocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLi4uLCB1KQorCisgICAgZGVmIHRlc3Rfbm90aW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6CisgICAgICAgICAgICBzID0gc2VsZi5kdW1wcyhOb3RJbXBsZW1lbnRlZCwgcHJvdG8pCisgICAgICAgICAgICB1ID0gc2VsZi5sb2FkcyhzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb3RJbXBsZW1lbnRlZCwgdSkKKwogICAgICMgVGVzdHMgZm9yIHByb3RvY29sIDIKIAogICAgIGRlZiB0ZXN0X3Byb3RvKHNlbGYpOgpAQCAtODgwLDYgKzg5MywyNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQih4KSwgQih5KSwgZGV0YWlsKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2RpY3RfXywgeS5fX2RpY3RfXywgZGV0YWlsKQogCisgICAgZGVmIHRlc3RfbmV3b2JqX3Byb3hpZXMoc2VsZik6CisgICAgICAgICMgTkVXT0JKIHNob3VsZCB1c2UgdGhlIF9fY2xhc3NfXyByYXRoZXIgdGhhbiB0aGUgcmF3IHR5cGUKKyAgICAgICAgY2xhc3NlcyA9IG15Y2xhc3Nlc1s6XQorICAgICAgICAjIENhbm5vdCBjcmVhdGUgd2Vha3Byb3hpZXMgdG8gdGhlc2UgY2xhc3NlcworICAgICAgICBmb3IgYyBpbiAoTXlJbnQsIE15VHVwbGUpOgorICAgICAgICAgICAgY2xhc3Nlcy5yZW1vdmUoYykKKyAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKKyAgICAgICAgICAgIGZvciBDIGluIGNsYXNzZXM6CisgICAgICAgICAgICAgICAgQiA9IEMuX19iYXNlX18KKyAgICAgICAgICAgICAgICB4ID0gQyhDLnNhbXBsZSkKKyAgICAgICAgICAgICAgICB4LmZvbyA9IDQyCisgICAgICAgICAgICAgICAgcCA9IHdlYWtyZWYucHJveHkoeCkKKyAgICAgICAgICAgICAgICBzID0gc2VsZi5kdW1wcyhwLCBwcm90bykKKyAgICAgICAgICAgICAgICB5ID0gc2VsZi5sb2FkcyhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSh5KSwgdHlwZSh4KSkgICMgcmF0aGVyIHRoYW4gdHlwZShwKQorICAgICAgICAgICAgICAgIGRldGFpbCA9IChwcm90bywgQywgQiwgeCwgeSwgdHlwZSh5KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEIoeCksIEIoeSksIGRldGFpbCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19kaWN0X18sIHkuX19kaWN0X18sIGRldGFpbCkKKwogICAgICMgUmVnaXN0ZXIgYSB0eXBlIHdpdGggY29weXJlZywgd2l0aCBleHRlbnNpb24gY29kZSBleHRjb2RlLiAgUGlja2xlCiAgICAgIyBhbiBvYmplY3Qgb2YgdGhhdCB0eXBlLiAgQ2hlY2sgdGhhdCB0aGUgcmVzdWx0aW5nIHBpY2tsZSB1c2VzIG9wY29kZQogICAgICMgKEVYVFsxMjRdKSB1bmRlciBwcm90byAyLCBhbmQgbm90IGluIHByb3RvIDEuCkBAIC0xMDQwLDEzICsxMDcyLDEzIEBACiAgICAgICAgICAgICB5ID0gc2VsZi5sb2FkcyhzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5Ll9yZWR1Y2VfY2FsbGVkLCAxKQogCisgICAgQG5vX3RyYWNpbmcKICAgICBkZWYgdGVzdF9iYWRfZ2V0YXR0cihzZWxmKToKICAgICAgICAgeCA9IEJhZEdldGF0dHIoKQogICAgICAgICBmb3IgcHJvdG8gaW4gMCwgMToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgc2VsZi5kdW1wcywgeCwgcHJvdG8pCiAgICAgICAgICMgcHJvdG9jb2wgMiBkb24ndCByYWlzZSBhIFJ1bnRpbWVFcnJvci4KICAgICAgICAgZCA9IHNlbGYuZHVtcHMoeCwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLmxvYWRzLCBkKQogCiAgICAgZGVmIHRlc3RfcmVkdWNlX2JhZF9pdGVyYXRvcihzZWxmKToKICAgICAgICAgIyBJc3N1ZTQxNzY6IGNyYXNoIHdoZW4gNHRoIGFuZCA1dGggaXRlbXMgb2YgX19yZWR1Y2VfXygpCkBAIC0xMTM2LDYgKzExNjgsMTUgQEAKICAgICAgICAgZW1wdHkgPSBzZWxmLmxvYWRzKGInXHg4MFx4MDNVXHgwMHFceDAwLicsIGVuY29kaW5nPSdrb2k4LXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVtcHR5LCAnJykKIAorICAgIGRlZiB0ZXN0X2ludF9waWNrbGluZ19lZmZpY2llbmN5KHNlbGYpOgorICAgICAgICAjIFRlc3QgY29tcGFjaXR5IG9mIGludCByZXByZXNlbnRhdGlvbiAoc2VlIGlzc3VlICMxMjc0NCkKKyAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKKyAgICAgICAgICAgIHNpemVzID0gW2xlbihzZWxmLmR1bXBzKDIqKm4sIHByb3RvKSkgZm9yIG4gaW4gcmFuZ2UoNzApXQorICAgICAgICAgICAgIyB0aGUgc2l6ZSBmdW5jdGlvbiBpcyBtb25vdG9uaWMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHNpemVzKSwgc2l6ZXMpCisgICAgICAgICAgICBpZiBwcm90byA+PSAyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHNpemVzWy0xXSwgMTQpCisKICAgICBkZWYgY2hlY2tfbmVnYXRpdmVfMzJiX2JpblhYWChzZWxmLCBkdW1wZWQpOgogICAgICAgICBpZiBzeXMubWF4c2l6ZSA+IDIqKjMyOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidGVzdCBpcyBvbmx5IG1lYW5pbmdmdWwgb24gMzItYml0IGJ1aWxkcyIpCkBAIC0xMjE3LDcgKzEyNTgsNyBAQAogICAgICMgQWxsIHByb3RvY29scyB1c2UgMS1ieXRlIHBlciBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVyOyB3ZSBhZGQgYW5vdGhlcgogICAgICMgYnl0ZSBiZWNhdXNlIHRoZSBlbmNvZGVkIGZvcm0gaGFzIHRvIGJlIGNvcGllZCBpbnRvIHRoZSBpbnRlcm5hbCBidWZmZXIuCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIgKyBjaGFyYWN0ZXJfc2l6ZSwgZHJ5X3J1bj1GYWxzZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIgKyBhc2NpaV9jaGFyX3NpemUsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfaHVnZV9zdHJfMzJiKHNlbGYsIHNpemUpOgogICAgICAgICBkYXRhID0gImFiY2QiICogKHNpemUgLy8gNCkKICAgICAgICAgdHJ5OgpAQCAtMTIzNCw3ICsxMjc1LDcgQEAKICAgICAjIEJJTlVOSUNPREUgKHByb3RvY29scyAxLCAyIGFuZCAzKSBjYW5ub3QgY2FycnkgbW9yZSB0aGFuCiAgICAgIyAyKiozMiAtIDEgYnl0ZXMgb2YgdXRmLTggZW5jb2RlZCB1bmljb2RlLgogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcsIG1lbXVzZT0xICsgY2hhcmFjdGVyX3NpemUsIGRyeV9ydW49RmFsc2UpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcsIG1lbXVzZT0xICsgYXNjaWlfY2hhcl9zaXplLCBkcnlfcnVuPUZhbHNlKQogICAgIGRlZiB0ZXN0X2h1Z2Vfc3RyXzY0YihzZWxmLCBzaXplKToKICAgICAgICAgZGF0YSA9ICJhIiAqIHNpemUKICAgICAgICAgdHJ5OgpAQCAtMTU3OCw2ICsxNjE5LDEwNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5waWNrbGVyLmxvYWQoKSwgZGF0YSkKIAogCisjIFRlc3RzIGZvciBkaXNwYXRjaF90YWJsZSBhdHRyaWJ1dGUKKworUkVEVUNFX0EgPSAncmVkdWNlX0EnCisKK2NsYXNzIEFBQShvYmplY3QpOgorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyLCAoUkVEVUNFX0EsKQorCitjbGFzcyBCQkIob2JqZWN0KToKKyAgICBwYXNzCisKK2NsYXNzIEFic3RyYWN0RGlzcGF0Y2hUYWJsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfZGlzcGF0Y2hfdGFibGUoc2VsZik6CisgICAgICAgICMgTm8gZGlzcGF0Y2hfdGFibGUgYXR0cmlidXRlIGJ5IGRlZmF1bHQKKyAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBwID0gc2VsZi5waWNrbGVyX2NsYXNzKGYsIDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcC5kaXNwYXRjaF90YWJsZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIocCwgJ2Rpc3BhdGNoX3RhYmxlJykpCisKKyAgICBkZWYgdGVzdF9jbGFzc19kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgIyBBIGRpc3BhdGNoX3RhYmxlIGF0dHJpYnV0ZSBjYW4gYmUgc3BlY2lmaWVkIGNsYXNzLXdpZGUKKyAgICAgICAgZHQgPSBzZWxmLmdldF9kaXNwYXRjaF90YWJsZSgpCisKKyAgICAgICAgY2xhc3MgTXlQaWNrbGVyKHNlbGYucGlja2xlcl9jbGFzcyk6CisgICAgICAgICAgICBkaXNwYXRjaF90YWJsZSA9IGR0CisKKyAgICAgICAgZGVmIGR1bXBzKG9iaiwgcHJvdG9jb2w9Tm9uZSk6CisgICAgICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgICAgICBwID0gTXlQaWNrbGVyKGYsIHByb3RvY29sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmRpc3BhdGNoX3RhYmxlLCBkdCkKKyAgICAgICAgICAgIHAuZHVtcChvYmopCisgICAgICAgICAgICByZXR1cm4gZi5nZXR2YWx1ZSgpCisKKyAgICAgICAgc2VsZi5fdGVzdF9kaXNwYXRjaF90YWJsZShkdW1wcywgZHQpCisKKyAgICBkZWYgdGVzdF9pbnN0YW5jZV9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgIyBBIGRpc3BhdGNoX3RhYmxlIGF0dHJpYnV0ZSBjYW4gYWxzbyBiZSBzcGVjaWZpZWQgaW5zdGFuY2Utd2lkZQorICAgICAgICBkdCA9IHNlbGYuZ2V0X2Rpc3BhdGNoX3RhYmxlKCkKKworICAgICAgICBkZWYgZHVtcHMob2JqLCBwcm90b2NvbD1Ob25lKToKKyAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgIHAgPSBzZWxmLnBpY2tsZXJfY2xhc3MoZiwgcHJvdG9jb2wpCisgICAgICAgICAgICBwLmRpc3BhdGNoX3RhYmxlID0gZHQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5kaXNwYXRjaF90YWJsZSwgZHQpCisgICAgICAgICAgICBwLmR1bXAob2JqKQorICAgICAgICAgICAgcmV0dXJuIGYuZ2V0dmFsdWUoKQorCisgICAgICAgIHNlbGYuX3Rlc3RfZGlzcGF0Y2hfdGFibGUoZHVtcHMsIGR0KQorCisgICAgZGVmIF90ZXN0X2Rpc3BhdGNoX3RhYmxlKHNlbGYsIGR1bXBzLCBkaXNwYXRjaF90YWJsZSk6CisgICAgICAgIGRlZiBjdXN0b21fbG9hZF9kdW1wKG9iaik6CisgICAgICAgICAgICByZXR1cm4gcGlja2xlLmxvYWRzKGR1bXBzKG9iaiwgMCkpCisKKyAgICAgICAgZGVmIGRlZmF1bHRfbG9hZF9kdW1wKG9iaik6CisgICAgICAgICAgICByZXR1cm4gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvYmosIDApKQorCisgICAgICAgICMgcGlja2xpbmcgY29tcGxleCBudW1iZXJzIHVzaW5nIHByb3RvY29sIDAgcmVsaWVzIG9uIGNvcHlyZWcKKyAgICAgICAgIyBzbyBjaGVjayBwaWNrbGluZyBhIGNvbXBsZXggbnVtYmVyIHN0aWxsIHdvcmtzCisgICAgICAgIHogPSAxICsgMmoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXN0b21fbG9hZF9kdW1wKHopLCB6KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKHopLCB6KQorCisgICAgICAgICMgbW9kaWZ5IHBpY2tsaW5nIG9mIGNvbXBsZXgKKyAgICAgICAgUkVEVUNFXzEgPSAncmVkdWNlXzEnCisgICAgICAgIGRlZiByZWR1Y2VfMShvYmopOgorICAgICAgICAgICAgcmV0dXJuIHN0ciwgKFJFRFVDRV8xLCkKKyAgICAgICAgZGlzcGF0Y2hfdGFibGVbY29tcGxleF0gPSByZWR1Y2VfMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoeiksIFJFRFVDRV8xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKHopLCB6KQorCisgICAgICAgICMgY2hlY2sgcGlja2xhYmlsaXR5IG9mIEFBQSBhbmQgQkJCCisgICAgICAgIGEgPSBBQUEoKQorICAgICAgICBiID0gQkJCKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXN0b21fbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGN1c3RvbV9sb2FkX2R1bXAoYiksIEJCQikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0X2xvYWRfZHVtcChhKSwgUkVEVUNFX0EpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkZWZhdWx0X2xvYWRfZHVtcChiKSwgQkJCKQorCisgICAgICAgICMgbW9kaWZ5IHBpY2tsaW5nIG9mIEJCQgorICAgICAgICBkaXNwYXRjaF90YWJsZVtCQkJdID0gcmVkdWNlXzEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXN0b21fbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXN0b21fbG9hZF9kdW1wKGIpLCBSRURVQ0VfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0X2xvYWRfZHVtcChhKSwgUkVEVUNFX0EpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkZWZhdWx0X2xvYWRfZHVtcChiKSwgQkJCKQorCisgICAgICAgICMgcmV2ZXJ0IHBpY2tsaW5nIG9mIEJCQiBhbmQgbW9kaWZ5IHBpY2tsaW5nIG9mIEFBQQorICAgICAgICBSRURVQ0VfMiA9ICdyZWR1Y2VfMicKKyAgICAgICAgZGVmIHJlZHVjZV8yKG9iaik6CisgICAgICAgICAgICByZXR1cm4gc3RyLCAoUkVEVUNFXzIsKQorICAgICAgICBkaXNwYXRjaF90YWJsZVtBQUFdID0gcmVkdWNlXzIKKyAgICAgICAgZGVsIGRpc3BhdGNoX3RhYmxlW0JCQl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXN0b21fbG9hZF9kdW1wKGEpLCBSRURVQ0VfMikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGN1c3RvbV9sb2FkX2R1bXAoYiksIEJCQikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0X2xvYWRfZHVtcChhKSwgUkVEVUNFX0EpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkZWZhdWx0X2xvYWRfZHVtcChiKSwgQkJCKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgIyBQcmludCBzb21lIHN0dWZmIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmV3cml0ZSBEQVRBezAsMSwyfQogICAgIGZyb20gcGlja2xldG9vbHMgaW1wb3J0IGRpcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcmVncnRlc3QucHkgYi9MaWIvdGVzdC9yZWdydGVzdC5weQppbmRleCAyOWYyYmYwLi5lOTc3ZTQyIDEwMDc1NQotLS0gYS9MaWIvdGVzdC9yZWdydGVzdC5weQorKysgYi9MaWIvdGVzdC9yZWdydGVzdC5weQpAQCAtMjAsNiArMjAsMTEgQEAKIE9wdGlvbnM6CiAKIC1oLy0taGVscCAgICAgICAtLSBwcmludCB0aGlzIHRleHQgYW5kIGV4aXQKKy0tdGltZW91dCBUSU1FT1VUCisgICAgICAgICAgICAgICAgLS0gZHVtcCB0aGUgdHJhY2ViYWNrIGFuZCBleGl0IGlmIGEgdGVzdCB0YWtlcyBtb3JlCisgICAgICAgICAgICAgICAgICAgdGhhbiBUSU1FT1VUIHNlY29uZHM7IGRpc2FibGVkIGlmIFRJTUVPVVQgaXMgbmVnYXRpdmUKKyAgICAgICAgICAgICAgICAgICBvciBlcXVhbHMgdG8gemVybworLS13YWl0ICAgICAgICAgIC0tIHdhaXQgZm9yIHVzZXIgaW5wdXQsIGUuZy4sIGFsbG93IGEgZGVidWdnZXIgdG8gYmUgYXR0YWNoZWQKIAogVmVyYm9zaXR5CiAKQEAgLTQ0LDYgKzQ5LDkgQEAKICAgICAgICAgICAgICAgICAtLSBzcGVjaWZ5IHdoaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzIHRvIHJ1bgogLU0vLS1tZW1saW1pdCBMSU1JVAogICAgICAgICAgICAgICAgIC0tIHJ1biB2ZXJ5IGxhcmdlIG1lbW9yeS1jb25zdW1pbmcgdGVzdHMKKyAgIC0tdGVzdGRpciBESVIKKyAgICAgICAgICAgICAgICAtLSBleGVjdXRlIHRlc3QgZmlsZXMgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgKGluc3RlYWQKKyAgICAgICAgICAgICAgICAgICBvZiB0aGUgUHl0aG9uIHN0ZGxpYiB0ZXN0IHN1aXRlKQogCiBTcGVjaWFsIHJ1bnMKIApAQCAtMTI1LDYgKzEzMyw4IEBACiAKICAgICBhbGwgLSAgICAgICBFbmFibGUgYWxsIHNwZWNpYWwgcmVzb3VyY2VzLgogCisgICAgbm9uZSAtICAgICAgRGlzYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMgKHRoaXMgaXMgdGhlIGRlZmF1bHQpLgorCiAgICAgYXVkaW8gLSAgICAgVGVzdHMgdGhhdCB1c2UgdGhlIGF1ZGlvIGRldmljZS4gIChUaGVyZSBhcmUga25vd24KICAgICAgICAgICAgICAgICBjYXNlcyBvZiBicm9rZW4gYXVkaW8gZHJpdmVycyB0aGF0IGNhbiBjcmFzaCBQeXRob24gb3IKICAgICAgICAgICAgICAgICBldmVuIHRoZSBMaW51eCBrZXJuZWwuKQpAQCAtMTU1LDggKzE2NSwxMSBAQAogb3B0aW9uICctdWFsbCwtZ3VpJy4KICIiIgogCisjIFdlIGltcG9ydCBpbXBvcnRsaWIgKkFTQVAqIGluIG9yZGVyIHRvIHRlc3QgIzE1Mzg2CitpbXBvcnQgaW1wb3J0bGliCisKIGltcG9ydCBidWlsdGlucwotaW1wb3J0IGVycm5vCitpbXBvcnQgZmF1bHRoYW5kbGVyCiBpbXBvcnQgZ2V0b3B0CiBpbXBvcnQgaW8KIGltcG9ydCBqc29uCkBAIC0xNjYsNiArMTc5LDcgQEAKIGltcG9ydCByYW5kb20KIGltcG9ydCByZQogaW1wb3J0IHNodXRpbAoraW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHRlbXBmaWxlCkBAIC0yMjUsNiArMjM5LDcgQEAKIFNLSVBQRUQgPSAtMgogUkVTT1VSQ0VfREVOSUVEID0gLTMKIElOVEVSUlVQVEVEID0gLTQKK0NISUxEX0VSUk9SID0gLTUgICAjIGVycm9yIGluIGEgY2hpbGQgcHJvY2VzcwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtMjY4LDYgKzI4MywxOCBAQAogICAgIG9uIHRoZSBjb21tYW5kIGxpbmUuCiAgICAgIiIiCiAKKyAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzIChlLmcuIHNlZ2ZhdWx0KQorICAgIGZhdWx0aGFuZGxlci5lbmFibGUoYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBTSUdBTFJNIG9yIFNJR1VTUjEgc2lnbmFsCisgICAgc2lnbmFscyA9IFtdCisgICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdBTFJNJyk6CisgICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdBTFJNKQorICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHVVNSMScpOgorICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHVVNSMSkKKyAgICBmb3Igc2lnbnVtIGluIHNpZ25hbHM6CisgICAgICAgIGZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWdudW0sIGNoYWluPVRydWUpCisKICAgICByZXBsYWNlX3N0ZG91dCgpCiAKICAgICBzdXBwb3J0LnJlY29yZF9vcmlnaW5hbF9zdGRvdXQoc3lzLnN0ZG91dCkKQEAgLTI3OCw3ICszMDUsOCBAQAogICAgICAgICAgICAgICd1c2U9JywgJ3RocmVzaG9sZD0nLCAnY292ZXJkaXI9JywgJ25vY292ZXJkaXInLAogICAgICAgICAgICAgICdydW5sZWFrcycsICdodW50cmxlYWtzPScsICdtZW1saW1pdD0nLCAncmFuZHNlZWQ9JywKICAgICAgICAgICAgICAnbXVsdGlwcm9jZXNzPScsICdjb3ZlcmFnZScsICdzbGF2ZWFyZ3M9JywgJ2ZvcmV2ZXInLCAnZGVidWcnLAotICAgICAgICAgICAgICdzdGFydD0nLCAnbm93aW5kb3dzJywgJ2hlYWRlcicsICdmYWlsZmFzdCcsICdtYXRjaCddKQorICAgICAgICAgICAgICdzdGFydD0nLCAnbm93aW5kb3dzJywgJ2hlYWRlcicsICd0ZXN0ZGlyPScsICd0aW1lb3V0PScsICd3YWl0JywKKyAgICAgICAgICAgICAnZmFpbGZhc3QnLCAnbWF0Y2gnXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKICAgICAgICAgdXNhZ2UobXNnKQogCkBAIC0yODksNiArMzE3LDcgQEAKICAgICAgICAgdXNlX3Jlc291cmNlcyA9IFtdCiAgICAgZGVidWcgPSBGYWxzZQogICAgIHN0YXJ0ID0gTm9uZQorICAgIHRpbWVvdXQgPSBOb25lCiAgICAgZm9yIG8sIGEgaW4gb3B0czoKICAgICAgICAgaWYgbyBpbiAoJy1oJywgJy0taGVscCcpOgogICAgICAgICAgICAgcHJpbnQoX19kb2NfXykKQEAgLTMzMiw3ICszNjEsOSBAQAogICAgICAgICBlbGlmIG8gaW4gKCctVCcsICctLWNvdmVyYWdlJyk6CiAgICAgICAgICAgICB0cmFjZSA9IFRydWUKICAgICAgICAgZWxpZiBvIGluICgnLUQnLCAnLS1jb3ZlcmRpcicpOgotICAgICAgICAgICAgY292ZXJkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIGEpCisgICAgICAgICAgICAjIENXRCBpcyByZXBsYWNlZCB3aXRoIGEgdGVtcG9yYXJ5IGRpciBiZWZvcmUgY2FsbGluZyBtYWluKCksIHNvIHdlCisgICAgICAgICAgICAjIG5lZWQgIGpvaW4gaXQgd2l0aCB0aGUgc2F2ZWQgQ1dEIHNvIGl0IGdvZXMgd2hlcmUgdGhlIHVzZXIgZXhwZWN0cy4KKyAgICAgICAgICAgIGNvdmVyZGlyID0gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIGEpCiAgICAgICAgIGVsaWYgbyBpbiAoJy1OJywgJy0tbm9jb3ZlcmRpcicpOgogICAgICAgICAgICAgY292ZXJkaXIgPSBOb25lCiAgICAgICAgIGVsaWYgbyBpbiAoJy1SJywgJy0taHVudHJsZWFrcycpOgpAQCAtMzUwLDkgKzM4MSw5IEBACiAgICAgICAgICAgICAgICAgaHVudHJsZWFrc1sxXSA9IGludChodW50cmxlYWtzWzFdKQogICAgICAgICAgICAgaWYgbGVuKGh1bnRybGVha3MpID09IDIgb3Igbm90IGh1bnRybGVha3NbMl06CiAgICAgICAgICAgICAgICAgaHVudHJsZWFrc1syOl0gPSBbInJlZmxvZy50eHQiXQotICAgICAgICAgICAgIyBBdm9pZCBmYWxzZSBwb3NpdGl2ZXMgZHVlIHRvIHRoZSBjaGFyYWN0ZXIgY2FjaGUgaW4KLSAgICAgICAgICAgICMgc3RyaW5nb2JqZWN0LmMgZmlsbGluZyBzbG93bHkgd2l0aCByYW5kb20gZGF0YQotICAgICAgICAgICAgd2FybV9jaGFyX2NhY2hlKCkKKyAgICAgICAgICAgICMgQXZvaWQgZmFsc2UgcG9zaXRpdmVzIGR1ZSB0byB2YXJpb3VzIGNhY2hlcworICAgICAgICAgICAgIyBmaWxsaW5nIHNsb3dseSB3aXRoIHJhbmRvbSBkYXRhOgorICAgICAgICAgICAgd2FybV9jYWNoZXMoKQogICAgICAgICBlbGlmIG8gaW4gKCctTScsICctLW1lbWxpbWl0Jyk6CiAgICAgICAgICAgICBzdXBwb3J0LnNldF9tZW1saW1pdChhKQogICAgICAgICBlbGlmIG8gaW4gKCctdScsICctLXVzZScpOgpAQCAtMzYxLDYgKzM5Miw5IEBACiAgICAgICAgICAgICAgICAgaWYgciA9PSAnYWxsJzoKICAgICAgICAgICAgICAgICAgICAgdXNlX3Jlc291cmNlc1s6XSA9IFJFU09VUkNFX05BTUVTCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgciA9PSAnbm9uZSc6CisgICAgICAgICAgICAgICAgICAgIGRlbCB1c2VfcmVzb3VyY2VzWzpdCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgcmVtb3ZlID0gRmFsc2UKICAgICAgICAgICAgICAgICBpZiByWzBdID09ICctJzoKICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlID0gVHJ1ZQpAQCAtMzkxLDE4ICs0MjUsNDUgQEAKICAgICAgICAgICAgIGZvcmV2ZXIgPSBUcnVlCiAgICAgICAgIGVsaWYgbyBpbiAoJy1qJywgJy0tbXVsdGlwcm9jZXNzJyk6CiAgICAgICAgICAgICB1c2VfbXAgPSBpbnQoYSkKKyAgICAgICAgICAgIGlmIHVzZV9tcCA8PSAwOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZworICAgICAgICAgICAgICAgICAgICAjIFVzZSBhbGwgY29yZXMgKyBleHRyYXMgZm9yIHRlc3RzIHRoYXQgbGlrZSB0byBzbGVlcAorICAgICAgICAgICAgICAgICAgICB1c2VfbXAgPSAyICsgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpCisgICAgICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHVzZV9tcCA9IDMKKyAgICAgICAgICAgIGlmIHVzZV9tcCA9PSAxOgorICAgICAgICAgICAgICAgIHVzZV9tcCA9IE5vbmUKICAgICAgICAgZWxpZiBvID09ICctLWhlYWRlcic6CiAgICAgICAgICAgICBoZWFkZXIgPSBUcnVlCiAgICAgICAgIGVsaWYgbyA9PSAnLS1zbGF2ZWFyZ3MnOgogICAgICAgICAgICAgYXJncywga3dhcmdzID0ganNvbi5sb2FkcyhhKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IElOVEVSUlVQVEVELCAnJwogICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBJTlRFUlJVUFRFRCwgZS5fX2NsYXNzX18uX19uYW1lX18KKyAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBDSElMRF9FUlJPUiwgc3RyKGUpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgICAgIHByaW50KCkgICAjIEZvcmNlIGEgbmV3bGluZSAoanVzdCBpbiBjYXNlKQogICAgICAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhyZXN1bHQpKQogICAgICAgICAgICAgc3lzLmV4aXQoMCkKKyAgICAgICAgZWxpZiBvID09ICctLXRlc3RkaXInOgorICAgICAgICAgICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQorICAgICAgICAgICAgIyBqb2luIGl0IHdpdGggdGhlIHNhdmVkIENXRCBzbyBpdCBlbmRzIHVwIHdoZXJlIHRoZSB1c2VyIGV4cGVjdHMuCisgICAgICAgICAgICB0ZXN0ZGlyID0gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIGEpCisgICAgICAgIGVsaWYgbyA9PSAnLS10aW1lb3V0JzoKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tzX2xhdGVyJyk6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IGZsb2F0KGEpCisgICAgICAgICAgICAgICAgaWYgdGltZW91dCA8PSAwOgorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCgiV2FybmluZzogVGhlIHRpbWVvdXQgb3B0aW9uIHJlcXVpcmVzICIKKyAgICAgICAgICAgICAgICAgICAgICAiZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrc19sYXRlciIpCisgICAgICAgICAgICAgICAgdGltZW91dCA9IE5vbmUKKyAgICAgICAgZWxpZiBvID09ICctLXdhaXQnOgorICAgICAgICAgICAgaW5wdXQoIlByZXNzIGFueSBrZXkgdG8gY29udGludWUuLi4iKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcHJpbnQoKCJObyBoYW5kbGVyIGZvciBvcHRpb24ge30uICBQbGVhc2UgcmVwb3J0IHRoaXMgYXMgYSBidWcgIgogICAgICAgICAgICAgICAgICAgICJhdCBodHRwOi8vYnVncy5weXRob24ub3JnLiIpLmZvcm1hdChvKSwgZmlsZT1zeXMuc3RkZXJyKQpAQCAtNDgxLDcgKzU0MiwxMyBAQAogICAgICAgICBwcmludCgiPT0gICIsIG9zLmdldGN3ZCgpKQogICAgICAgICBwcmludCgiVGVzdGluZyB3aXRoIGZsYWdzOiIsIHN5cy5mbGFncykKIAotICAgIGFsbHRlc3RzID0gZmluZHRlc3RzKHRlc3RkaXIsIHN0ZHRlc3RzLCBub3R0ZXN0cykKKyAgICAjIGlmIHRlc3RkaXIgaXMgc2V0LCB0aGVuIHdlIGFyZSBub3QgcnVubmluZyB0aGUgcHl0aG9uIHRlc3RzIHN1aXRlLCBzbworICAgICMgZG9uJ3QgYWRkIGRlZmF1bHQgdGVzdHMgdG8gYmUgZXhlY3V0ZWQgb3Igc2tpcHBlZCAocGFzcyBlbXB0eSB2YWx1ZXMpCisgICAgaWYgdGVzdGRpcjoKKyAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHModGVzdGRpciwgbGlzdCgpLCBzZXQoKSkKKyAgICBlbHNlOgorICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyh0ZXN0ZGlyLCBzdGR0ZXN0cywgbm90dGVzdHMpCisKICAgICBzZWxlY3RlZCA9IHRlc3RzIG9yIGFyZ3Mgb3IgYWxsdGVzdHMKICAgICBpZiBzaW5nbGU6CiAgICAgICAgIHNlbGVjdGVkID0gc2VsZWN0ZWRbOjFdCkBAIC01MDEsNyArNTY4LDcgQEAKICAgICAgICAgcmFuZG9tLnNodWZmbGUoc2VsZWN0ZWQpCiAgICAgaWYgdHJhY2U6CiAgICAgICAgIGltcG9ydCB0cmFjZSwgdGVtcGZpbGUKLSAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4LAorICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMuYmFzZV9wcmVmaXgsIHN5cy5iYXNlX2V4ZWNfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZT1GYWxzZSwgY291bnQ9VHJ1ZSkKIApAQCAtNTY2LDcgKzYzMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdCwgdmVyYm9zZSwgcXVpZXQpLAogICAgICAgICAgICAgICAgICAgICAgICAgZGljdChodW50cmxlYWtzPWh1bnRybGVha3MsIHVzZV9yZXNvdXJjZXM9dXNlX3Jlc291cmNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWc9ZGVidWcsIG91dHB1dF9vbl9mYWlsdXJlPXZlcmJvc2UzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZmFzdD1mYWlsZmFzdCwgbWF0Y2hfdGVzdHM9bWF0Y2hfdGVzdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCwgZmFpbGZhc3Q9ZmFpbGZhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Rlc3RzPW1hdGNoX3Rlc3RzKQogICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICMgLUUgaXMgbmVlZGVkIGJ5IHNvbWUgdGVzdHMsIGUuZy4gdGVzdF9pbXBvcnQKICAgICAgICAgICAgICAgICAgICAgIyBSdW5uaW5nIHRoZSBjaGlsZCBmcm9tIHRoZSBzYW1lIHdvcmtpbmcgZGlyZWN0b3J5IGVuc3VyZXMKQEAgLTU3OCwxMCArNjQ2LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz0ob3MubmFtZSAhPSAnbnQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXN1cHBvcnQuU0FWRURDV0QpCiAgICAgICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgICAgICAgICByZXRjb2RlID0gcG9wZW4ud2FpdCgpCiAgICAgICAgICAgICAgICAgICAgICMgU3RyaXAgbGFzdCByZWZjb3VudCBvdXRwdXQgbGluZSBpZiBpdCBleGlzdHMsIHNpbmNlIGl0CiAgICAgICAgICAgICAgICAgICAgICMgY29tZXMgZnJvbSB0aGUgc2h1dGRvd24gb2YgdGhlIGludGVycHJldGVyIGluIHRoZSBzdWJjb21tYW5kLgogICAgICAgICAgICAgICAgICAgICBzdGRlcnIgPSBkZWJ1Z19vdXRwdXRfcGF0LnN1YigiIiwgc3RkZXJyKQogICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIF8sIHJlc3VsdCA9IHN0ZG91dC5zdHJpcCgpLnJwYXJ0aXRpb24oIlxuIikKKyAgICAgICAgICAgICAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKENISUxEX0VSUk9SLCAiRXhpdCBjb2RlICVzIiAlIHJldGNvZGUpCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KCh0ZXN0LCBzdGRvdXQucnN0cmlwKCksIHN0ZGVyci5yc3RyaXAoKSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KQEAgLTYxNCw4ICs2ODcsOSBAQAogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQogICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBJTlRFUlJVUFRFRDoKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdFsxXSA9PSAnS2V5Ym9hcmRJbnRlcnJ1cHQnCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0ICAgIyBXaGF0IGVsc2U/CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0CisgICAgICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IENISUxEX0VSUk9SOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNoaWxkIGVycm9yIG9uIHt9OiB7fSIuZm9ybWF0KHRlc3QsIHJlc3VsdFsxXSkpCiAgICAgICAgICAgICAgICAgdGVzdF9pbmRleCArPSAxCiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQpAQCAtNjMyLDEzICs3MDYsMTQgQEAKICAgICAgICAgICAgIGlmIHRyYWNlOgogICAgICAgICAgICAgICAgICMgSWYgd2UncmUgdHJhY2luZyBjb2RlIGNvdmVyYWdlLCB0aGVuIHdlIGRvbid0IGV4aXQgd2l0aCBzdGF0dXMKICAgICAgICAgICAgICAgICAjIGlmIG9uIGEgZmFsc2UgcmV0dXJuIHZhbHVlIGZyb20gbWFpbi4KLSAgICAgICAgICAgICAgICB0cmFjZXIucnVuY3R4KCdydW50ZXN0KHRlc3QsIHZlcmJvc2UsIHF1aWV0KScsCisgICAgICAgICAgICAgICAgdHJhY2VyLnJ1bmN0eCgncnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwgdGltZW91dD10aW1lb3V0KScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHMoKSwgbG9jYWxzPXZhcnMoKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzLCBkZWJ1ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT12ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZmFzdD1mYWlsZmFzdCwgbWF0Y2hfdGVzdHM9bWF0Y2hfdGVzdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD10aW1lb3V0LCBmYWlsZmFzdD1mYWlsZmFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cz1tYXRjaF90ZXN0cykKICAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCkBAIC03MDksNyArNzg0LDcgQEAKICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBUcnVlCi0gICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHRlc3QsIFRydWUsIHF1aWV0LCBodW50cmxlYWtzLCBkZWJ1ZykKKyAgICAgICAgICAgICAgICBvayA9IHJ1bnRlc3QodGVzdCwgVHJ1ZSwgcXVpZXQsIGh1bnRybGVha3MsIGRlYnVnLCB0aW1lb3V0PXRpbWVvdXQpCiAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgc2VwYXJhdGUgZnJvbSB0aGUgXkMKICAgICAgICAgICAgICAgICBwcmludCgpCkBAIC03MzQsNiArODA5LDggQEAKICAgICBzeXMuZXhpdChsZW4oYmFkKSA+IDAgb3IgaW50ZXJydXB0ZWQpCiAKIAorIyBzbWFsbCBzZXQgb2YgdGVzdHMgdG8gZGV0ZXJtaW5lIGlmIHdlIGhhdmUgYSBiYXNpY2FsbHkgZnVuY3Rpb25pbmcgaW50ZXJwcmV0ZXIKKyMgKGkuZS4gaWYgYW55IG9mIHRoZXNlIGZhaWwsIHRoZW4gYW55dGhpbmcgZWxzZSBpcyBsaWtlbHkgdG8gZm9sbG93KQogU1REVEVTVFMgPSBbCiAgICAgJ3Rlc3RfZ3JhbW1hcicsCiAgICAgJ3Rlc3Rfb3Bjb2RlcycsCkBAIC03NDQsMTIgKzgyMSwxMSBAQAogICAgICd0ZXN0X3VuaXR0ZXN0JywKICAgICAndGVzdF9kb2N0ZXN0JywKICAgICAndGVzdF9kb2N0ZXN0MicsCisgICAgJ3Rlc3Rfc3VwcG9ydCcKIF0KIAotTk9UVEVTVFMgPSB7Ci0gICAgJ3Rlc3RfZnV0dXJlMScsCi0gICAgJ3Rlc3RfZnV0dXJlMicsCi19CisjIHNldCBvZiB0ZXN0cyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYmUgZXhlY3V0ZWQgd2hlbiB1c2luZyByZWdydGVzdAorTk9UVEVTVFMgPSBzZXQoKQogCiBkZWYgZmluZHRlc3RzKHRlc3RkaXI9Tm9uZSwgc3RkdGVzdHM9U1REVEVTVFMsIG5vdHRlc3RzPU5PVFRFU1RTKToKICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCBhcHBsaWNhYmxlIHRlc3QgbW9kdWxlcy4iIiIKQEAgLTc1OCw5ICs4MzQsOSBAQAogICAgIHRlc3RzID0gW10KICAgICBvdGhlcnMgPSBzZXQoc3RkdGVzdHMpIHwgbm90dGVzdHMKICAgICBmb3IgbmFtZSBpbiBuYW1lczoKLSAgICAgICAgbW9kbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICBpZiBtb2RuYW1lWzo1XSA9PSAidGVzdF8iIGFuZCBleHQgPT0gIi5weSIgYW5kIG1vZG5hbWUgbm90IGluIG90aGVyczoKLSAgICAgICAgICAgIHRlc3RzLmFwcGVuZChtb2RuYW1lKQorICAgICAgICBtb2QsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKKyAgICAgICAgaWYgbW9kWzo1XSA9PSAidGVzdF8iIGFuZCBleHQgaW4gKCIucHkiLCAiIikgYW5kIG1vZCBub3QgaW4gb3RoZXJzOgorICAgICAgICAgICAgdGVzdHMuYXBwZW5kKG1vZCkKICAgICByZXR1cm4gc3RkdGVzdHMgKyBzb3J0ZWQodGVzdHMpCiAKICMgV2UgZG8gbm90IHVzZSBhIGdlbmVyYXRvciBzbyBtdWx0aXBsZSB0aHJlYWRzIGNhbiBjYWxsIG5leHQoKS4KQEAgLTc4NSwxNyArODYxLDE0IEBACiBkZWYgcmVwbGFjZV9zdGRvdXQoKToKICAgICAiIiJTZXQgc3Rkb3V0IGVuY29kZXIgZXJyb3IgaGFuZGxlciB0byBiYWNrc2xhc2hyZXBsYWNlIChhcyBzdGRlcnIgZXJyb3IKICAgICBoYW5kbGVyKSB0byBhdm9pZCBVbmljb2RlRW5jb2RlRXJyb3Igd2hlbiBwcmludGluZyBhIHRyYWNlYmFjayIiIgotICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgIyBSZXBsYWNlIHN5cy5zdGRvdXQgYnJlYWtzIHRoZSBzdGRvdXQgbmV3bGluZXMgb24gV2luZG93czogaXNzdWUgIzg1MzMKLSAgICAgICAgcmV0dXJuCi0KICAgICBpbXBvcnQgYXRleGl0CiAKICAgICBzdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgc3lzLnN0ZG91dCA9IG9wZW4oc3Rkb3V0LmZpbGVubygpLCAndycsCiAgICAgICAgIGVuY29kaW5nPXN0ZG91dC5lbmNvZGluZywKICAgICAgICAgZXJyb3JzPSJiYWNrc2xhc2hyZXBsYWNlIiwKLSAgICAgICAgY2xvc2VmZD1GYWxzZSkKKyAgICAgICAgY2xvc2VmZD1GYWxzZSwKKyAgICAgICAgbmV3bGluZT0nXG4nKQogCiAgICAgZGVmIHJlc3RvcmVfc3Rkb3V0KCk6CiAgICAgICAgIHN5cy5zdGRvdXQuY2xvc2UoKQpAQCAtODA0LDcgKzg3Nyw4IEBACiAKIGRlZiBydW50ZXN0KHRlc3QsIHZlcmJvc2UsIHF1aWV0LAogICAgICAgICAgICAgaHVudHJsZWFrcz1GYWxzZSwgZGVidWc9RmFsc2UsIHVzZV9yZXNvdXJjZXM9Tm9uZSwKLSAgICAgICAgICAgIG91dHB1dF9vbl9mYWlsdXJlPUZhbHNlLCBmYWlsZmFzdD1GYWxzZSwgbWF0Y2hfdGVzdHM9Tm9uZSk6CisgICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsCisgICAgICAgICAgICB0aW1lb3V0PU5vbmUpOgogICAgICIiIlJ1biBhIHNpbmdsZSB0ZXN0LgogCiAgICAgdGVzdCAtLSB0aGUgbmFtZSBvZiB0aGUgdGVzdApAQCAtODE0LDYgKzg4OCw4IEBACiAgICAgaHVudHJsZWFrcyAtLSBydW4gbXVsdGlwbGUgdGltZXMgdG8gdGVzdCBmb3IgbGVha3M7IHJlcXVpcmVzIGEgZGVidWcKICAgICAgICAgICAgICAgICAgIGJ1aWxkOyBhIHRyaXBsZSBjb3JyZXNwb25kaW5nIHRvIC1SJ3MgdGhyZWUgYXJndW1lbnRzCiAgICAgb3V0cHV0X29uX2ZhaWx1cmUgLS0gaWYgdHJ1ZSwgZGlzcGxheSB0ZXN0IG91dHB1dCBvbiBmYWlsdXJlCisgICAgdGltZW91dCAtLSBkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzIG1vcmUgdGhhbgorICAgICAgICAgICAgICAgdGltZW91dCBzZWNvbmRzCiAKICAgICBSZXR1cm5zIG9uZSBvZiB0aGUgdGVzdCByZXN1bHQgY29uc3RhbnRzOgogICAgICAgICBJTlRFUlJVUFRFRCAgICAgIEtleWJvYXJkSW50ZXJydXB0IHdoZW4gcnVuIHVuZGVyIC1qCkBAIC04MjYsNiArOTAyLDkgQEAKIAogICAgIGlmIHVzZV9yZXNvdXJjZXMgaXMgbm90IE5vbmU6CiAgICAgICAgIHN1cHBvcnQudXNlX3Jlc291cmNlcyA9IHVzZV9yZXNvdXJjZXMKKyAgICB1c2VfdGltZW91dCA9ICh0aW1lb3V0IGlzIG5vdCBOb25lKQorICAgIGlmIHVzZV90aW1lb3V0OgorICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tzX2xhdGVyKHRpbWVvdXQsIGV4aXQ9VHJ1ZSkKICAgICB0cnk6CiAgICAgICAgIHN1cHBvcnQubWF0Y2hfdGVzdHMgPSBtYXRjaF90ZXN0cwogICAgICAgICBpZiBmYWlsZmFzdDoKQEAgLTg2NCw2ICs5NDMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2ZhaWx1cmU9bm90IHZlcmJvc2UpCiAgICAgICAgIHJldHVybiByZXN1bHQKICAgICBmaW5hbGx5OgorICAgICAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkKICAgICAgICAgY2xlYW51cF90ZXN0X2Ryb3BwaW5ncyh0ZXN0LCB2ZXJib3NlKQogcnVudGVzdC5zdHJpbmdpbyA9IE5vbmUKIApAQCAtOTA5LDEwICs5OTAsMTAgQEAKICAgICByZXNvdXJjZXMgPSAoJ3N5cy5hcmd2JywgJ2N3ZCcsICdzeXMuc3RkaW4nLCAnc3lzLnN0ZG91dCcsICdzeXMuc3RkZXJyJywKICAgICAgICAgICAgICAgICAgJ29zLmVudmlyb24nLCAnc3lzLnBhdGgnLCAnc3lzLnBhdGhfaG9va3MnLCAnX19pbXBvcnRfXycsCiAgICAgICAgICAgICAgICAgICd3YXJuaW5ncy5maWx0ZXJzJywgJ2FzeW5jb3JlLnNvY2tldF9tYXAnLAotICAgICAgICAgICAgICAgICAnbG9nZ2luZy5faGFuZGxlcnMnLCAnbG9nZ2luZy5faGFuZGxlckxpc3QnLAotICAgICAgICAgICAgICAgICAnc2h1dGlsLmFyY2hpdmVfZm9ybWF0cycsICdzaHV0aWwudW5wYWNrX2Zvcm1hdHMnLAorICAgICAgICAgICAgICAgICAnbG9nZ2luZy5faGFuZGxlcnMnLCAnbG9nZ2luZy5faGFuZGxlckxpc3QnLCAnc3lzLmdldHRyYWNlJywKICAgICAgICAgICAgICAgICAgJ3N5cy53YXJub3B0aW9ucycsICd0aHJlYWRpbmcuX2RhbmdsaW5nJywKICAgICAgICAgICAgICAgICAgJ211bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZycsCisgICAgICAgICAgICAgICAgICdzeXNjb25maWcuX0NPTkZJR19WQVJTJywgJ3N5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTJywKICAgICAgICAgICAgICAgICAgJ3N1cHBvcnQuVEVTVEZOJywKICAgICAgICAgICAgICAgICApCiAKQEAgLTk2MSw2ICsxMDQyLDExIEBACiAgICAgICAgIHN5cy5wYXRoX2hvb2tzID0gc2F2ZWRfaG9va3NbMV0KICAgICAgICAgc3lzLnBhdGhfaG9va3NbOl0gPSBzYXZlZF9ob29rc1syXQogCisgICAgZGVmIGdldF9zeXNfZ2V0dHJhY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuZ2V0dHJhY2UoKQorICAgIGRlZiByZXN0b3JlX3N5c19nZXR0cmFjZShzZWxmLCB0cmFjZV9meG4pOgorICAgICAgICBzeXMuc2V0dHJhY2UodHJhY2VfZnhuKQorCiAgICAgZGVmIGdldF9fX2ltcG9ydF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gYnVpbHRpbnMuX19pbXBvcnRfXwogICAgIGRlZiByZXN0b3JlX19faW1wb3J0X18oc2VsZiwgaW1wb3J0Xyk6CkBAIC0xMDQ0LDYgKzExMzAsMjQgQEAKICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nLmNsZWFyKCkKICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nLnVwZGF0ZShzYXZlZCkKIAorICAgIGRlZiBnZXRfc3lzY29uZmlnX19DT05GSUdfVkFSUyhzZWxmKToKKyAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGRpY3QgaXMgaW5pdGlhbGl6ZWQKKyAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdwcmVmaXgnKQorICAgICAgICByZXR1cm4gKGlkKHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpLCBzeXNjb25maWcuX0NPTkZJR19WQVJTLAorICAgICAgICAgICAgICAgIGRpY3Qoc3lzY29uZmlnLl9DT05GSUdfVkFSUykpCisgICAgZGVmIHJlc3RvcmVfc3lzY29uZmlnX19DT05GSUdfVkFSUyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBzYXZlZFsxXQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLmNsZWFyKCkKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy51cGRhdGUoc2F2ZWRbMl0pCisKKyAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fSU5TVEFMTF9TQ0hFTUVTKHNlbGYpOgorICAgICAgICByZXR1cm4gKGlkKHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTKSwgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMsCisgICAgICAgICAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY29weSgpKQorICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fSU5TVEFMTF9TQ0hFTUVTKHNlbGYsIHNhdmVkKToKKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMgPSBzYXZlZFsxXQorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLnVwZGF0ZShzYXZlZFsyXSkKKwogICAgIGRlZiBnZXRfc3VwcG9ydF9URVNURk4oc2VsZik6CiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHN1cHBvcnQuVEVTVEZOKToKICAgICAgICAgICAgIHJlc3VsdCA9ICdmJwpAQCAtMTEwOCwxNCArMTIxMiwxNSBAQAogICAgICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAgICAgICAgICAgICB0aGVfcGFja2FnZSA9IF9faW1wb3J0X18oYWJzdGVzdCwgZ2xvYmFscygpLCBsb2NhbHMoKSwgW10pCiAgICAgICAgICAgICB0aGVfbW9kdWxlID0gZ2V0YXR0cih0aGVfcGFja2FnZSwgdGVzdCkKLSAgICAgICAgICAgICMgT2xkIHRlc3RzIHJ1biB0byBjb21wbGV0aW9uIHNpbXBseSBhcyBhIHNpZGUtZWZmZWN0IG9mCi0gICAgICAgICAgICAjIGJlaW5nIGltcG9ydGVkLiAgRm9yIHRlc3RzIGJhc2VkIG9uIHVuaXR0ZXN0IG9yIGRvY3Rlc3QsCi0gICAgICAgICAgICAjIGV4cGxpY2l0bHkgaW52b2tlIHRoZWlyIHRlc3RfbWFpbigpIGZ1bmN0aW9uIChpZiBpdCBleGlzdHMpLgotICAgICAgICAgICAgaW5kaXJlY3RfdGVzdCA9IGdldGF0dHIodGhlX21vZHVsZSwgInRlc3RfbWFpbiIsIE5vbmUpCi0gICAgICAgICAgICBpZiBpbmRpcmVjdF90ZXN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGluZGlyZWN0X3Rlc3QoKQorICAgICAgICAgICAgIyBJZiB0aGUgdGVzdCBoYXMgYSB0ZXN0X21haW4sIHRoYXQgd2lsbCBydW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAjIHRlc3RzLiAgSWYgbm90LCB1c2Ugbm9ybWFsIHVuaXR0ZXN0IHRlc3QgbG9hZGluZy4KKyAgICAgICAgICAgIHRlc3RfcnVubmVyID0gZ2V0YXR0cih0aGVfbW9kdWxlLCAidGVzdF9tYWluIiwgTm9uZSkKKyAgICAgICAgICAgIGlmIHRlc3RfcnVubmVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdGVzdHMgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkubG9hZFRlc3RzRnJvbU1vZHVsZSh0aGVfbW9kdWxlKQorICAgICAgICAgICAgICAgIHRlc3RfcnVubmVyID0gbGFtYmRhOiBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0cykKKyAgICAgICAgICAgIHRlc3RfcnVubmVyKCkKICAgICAgICAgICAgIGlmIGh1bnRybGVha3M6Ci0gICAgICAgICAgICAgICAgcmVmbGVhayA9IGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCBpbmRpcmVjdF90ZXN0LAorICAgICAgICAgICAgICAgIHJlZmxlYWsgPSBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgdGVzdF9ydW5uZXIsCiAgICAgICAgICAgICAgICAgICAgIGh1bnRybGVha3MpCiAgICAgICAgICAgICB0ZXN0X3RpbWUgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUKICAgICBleGNlcHQgc3VwcG9ydC5SZXNvdXJjZURlbmllZCBhcyBtc2c6CkBAIC0xMTk4LDcgKzEzMDMsOCBAQAogICAgICAgICBGYWxzZSBpZiB0aGUgdGVzdCBkaWRuJ3QgbGVhayByZWZlcmVuY2VzOyBUcnVlIGlmIHdlIGRldGVjdGVkIHJlZmxlYWtzLgogICAgICIiIgogICAgICMgVGhpcyBjb2RlIGlzIGhhY2tpc2ggYW5kIGluZWxlZ2FudCwgYnV0IGl0IHNlZW1zIHRvIGRvIHRoZSBqb2IuCi0gICAgaW1wb3J0IGNvcHlyZWcsIF9hYmNvbGwKKyAgICBpbXBvcnQgY29weXJlZworICAgIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIAogICAgIGlmIG5vdCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUcmFja2luZyByZWZlcmVuY2UgbGVha3MgcmVxdWlyZXMgYSBkZWJ1ZyBidWlsZCAiCkBAIC0xMjE1LDcgKzEzMjEsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHpkYyA9IHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jb3B5KCkKICAgICBhYmNzID0ge30KLSAgICBmb3IgYWJjIGluIFtnZXRhdHRyKF9hYmNvbGwsIGEpIGZvciBhIGluIF9hYmNvbGwuX19hbGxfX106CisgICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKICAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKQEAgLTEyNjEsNyArMTM2Nyw3IEBACiAgICAgaW1wb3J0IGdjLCBjb3B5cmVnCiAgICAgaW1wb3J0IF9zdHJwdGltZSwgbGluZWNhY2hlCiAgICAgaW1wb3J0IHVybGxpYi5wYXJzZSwgdXJsbGliLnJlcXVlc3QsIG1pbWV0eXBlcywgZG9jdGVzdAotICAgIGltcG9ydCBzdHJ1Y3QsIGZpbGVjbXAsIF9hYmNvbGwKKyAgICBpbXBvcnQgc3RydWN0LCBmaWxlY21wLCBjb2xsZWN0aW9ucy5hYmMKICAgICBmcm9tIGRpc3R1dGlscy5kaXJfdXRpbCBpbXBvcnQgX3BhdGhfY3JlYXRlZAogICAgIGZyb20gd2Vha3JlZiBpbXBvcnQgV2Vha1NldAogCkBAIC0xMjg4LDcgKzEzOTQsNyBAQAogICAgIHN5cy5fY2xlYXJfdHlwZV9jYWNoZSgpCiAKICAgICAjIENsZWFyIEFCQyByZWdpc3RyaWVzLCByZXN0b3JpbmcgcHJldmlvdXNseSBzYXZlZCBBQkMgcmVnaXN0cmllcy4KLSAgICBmb3IgYWJjIGluIFtnZXRhdHRyKF9hYmNvbGwsIGEpIGZvciBhIGluIF9hYmNvbGwuX19hbGxfX106CisgICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKICAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKQEAgLTEzMjQsMTAgKzE0MzAsMTUgQEAKICAgICAjIENvbGxlY3QgY3ljbGljIHRyYXNoLgogICAgIGdjLmNvbGxlY3QoKQogCi1kZWYgd2FybV9jaGFyX2NhY2hlKCk6CitkZWYgd2FybV9jYWNoZXMoKToKKyAgICAjIGNoYXIgY2FjaGUKICAgICBzID0gYnl0ZXMocmFuZ2UoMjU2KSkKICAgICBmb3IgaSBpbiByYW5nZSgyNTYpOgogICAgICAgICBzW2k6aSsxXQorICAgICMgdW5pY29kZSBjYWNoZQorICAgIHggPSBbY2hyKGkpIGZvciBpIGluIHJhbmdlKDI1NildCisgICAgIyBpbnQgY2FjaGUKKyAgICB4ID0gbGlzdChyYW5nZSgtNSwgMjU3KSkKIAogZGVmIGZpbmR0ZXN0ZGlyKHBhdGg9Tm9uZSk6CiAgICAgcmV0dXJuIHBhdGggb3Igb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciBvcy5jdXJkaXIKQEAgLTEzNzQsMTMgKzE0ODUsMTQgQEAKICMgVGVzdHMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gYmUgc2tpcHBlZCBldmVyeXdoZXJlIGV4Y2VwdCBvbiBvbmUgcGxhdGZvcm0KICMgYXJlIGFsc28gaGFuZGxlZCBzZXBhcmF0ZWx5LgogCi1fZXhwZWN0YXRpb25zID0gewotICAgICd3aW4zMic6CitfZXhwZWN0YXRpb25zID0gKAorICAgICgnd2luMzInLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9fbG9jYWxlCiAgICAgICAgIHRlc3RfY3J5cHQKICAgICAgICAgdGVzdF9jdXJzZXMKICAgICAgICAgdGVzdF9kYm0KKyAgICAgICAgdGVzdF9kZXZwb2xsCiAgICAgICAgIHRlc3RfZmNudGwKICAgICAgICAgdGVzdF9mb3JrMQogICAgICAgICB0ZXN0X2Vwb2xsCkBAIC0xNDAzLDE1ICsxNTE1LDE2IEBACiAgICAgICAgIHRlc3RfdGhyZWFkc2lnbmFscwogICAgICAgICB0ZXN0X3dhaXQzCiAgICAgICAgIHRlc3Rfd2FpdDQKLSAgICAgICAgIiIiLAotICAgICdsaW51eDInOgorICAgICAgICAiIiIpLAorICAgICgnbGludXgnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9jdXJzZXMKKyAgICAgICAgdGVzdF9kZXZwb2xsCiAgICAgICAgIHRlc3RfbGFyZ2VmaWxlCiAgICAgICAgIHRlc3Rfa3F1ZXVlCiAgICAgICAgIHRlc3Rfb3NzYXVkaW9kZXYKLSAgICAgICAgIiIiLAotICAgICd1bml4d2FyZTcnOgorICAgICAgICAiIiIpLAorICAgICgndW5peHdhcmUnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9lcG9sbAogICAgICAgICB0ZXN0X2xhcmdlZmlsZQpAQCAtMTQyMSw4ICsxNTM0LDggQEAKICAgICAgICAgdGVzdF9weWV4cGF0CiAgICAgICAgIHRlc3Rfc2F4CiAgICAgICAgIHRlc3Rfc3VuZHJ5Ci0gICAgICAgICIiIiwKLSAgICAnb3BlbnVuaXg4JzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ29wZW51bml4JywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9sYXJnZWZpbGUKQEAgLTE0MzIsOCArMTU0NSw4IEBACiAgICAgICAgIHRlc3RfcHlleHBhdAogICAgICAgICB0ZXN0X3NheAogICAgICAgICB0ZXN0X3N1bmRyeQotICAgICAgICAiIiIsCi0gICAgJ3Njb19zdjMnOgorICAgICAgICAiIiIpLAorICAgICgnc2NvX3N2JywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfYXN5bmNoYXQKICAgICAgICAgdGVzdF9mb3JrMQpAQCAtMTQ1MiwxMSArMTU2NSwxMiBAQAogICAgICAgICB0ZXN0X3RocmVhZGVkX2ltcG9ydAogICAgICAgICB0ZXN0X3RocmVhZGVkdGVtcGZpbGUKICAgICAgICAgdGVzdF90aHJlYWRpbmcKLSAgICAgICAgIiIiLAotICAgICdkYXJ3aW4nOgorICAgICAgICAiIiIpLAorICAgICgnZGFyd2luJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfX2xvY2FsZQogICAgICAgICB0ZXN0X2N1cnNlcworICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9lcG9sbAogICAgICAgICB0ZXN0X2RibV9nbnUKICAgICAgICAgdGVzdF9nZGIKQEAgLTE0NjUsOCArMTU3OSw4IEBACiAgICAgICAgIHRlc3RfbWluaWRvbQogICAgICAgICB0ZXN0X29zc2F1ZGlvZGV2CiAgICAgICAgIHRlc3RfcG9sbAotICAgICAgICAiIiIsCi0gICAgJ3N1bm9zNSc6CisgICAgICAgICIiIiksCisgICAgKCdzdW5vcycsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2N1cnNlcwogICAgICAgICB0ZXN0X2RibQpAQCAtMTQ3Nyw4ICsxNTkxLDggQEAKICAgICAgICAgdGVzdF9vcGVucHR5CiAgICAgICAgIHRlc3RfemlwZmlsZQogICAgICAgICB0ZXN0X3psaWIKLSAgICAgICAgIiIiLAotICAgICdocC11eDExJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ2hwLXV4JywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3Vyc2VzCiAgICAgICAgIHRlc3RfZXBvbGwKQEAgLTE0OTMsMTEgKzE2MDcsMTIgQEAKICAgICAgICAgdGVzdF9zYXgKICAgICAgICAgdGVzdF96aXBmaWxlCiAgICAgICAgIHRlc3RfemxpYgotICAgICAgICAiIiIsCi0gICAgJ2N5Z3dpbic6CisgICAgICAgICIiIiksCisgICAgKCdjeWd3aW4nLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9jdXJzZXMKICAgICAgICAgdGVzdF9kYm0KKyAgICAgICAgdGVzdF9kZXZwb2xsCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9pb2N0bAogICAgICAgICB0ZXN0X2txdWV1ZQpAQCAtMTUwNSw4ICsxNjIwLDggQEAKICAgICAgICAgdGVzdF9sb2NhbGUKICAgICAgICAgdGVzdF9vc3NhdWRpb2RldgogICAgICAgICB0ZXN0X3NvY2tldHNlcnZlcgotICAgICAgICAiIiIsCi0gICAgJ29zMmVteCc6CisgICAgICAgICIiIiksCisgICAgKCdvczJlbXgnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9hdWRpb29wCiAgICAgICAgIHRlc3RfY3Vyc2VzCkBAIC0xNTE5LDkgKzE2MzQsMTAgQEAKICAgICAgICAgdGVzdF9wdHkKICAgICAgICAgdGVzdF9yZXNvdXJjZQogICAgICAgICB0ZXN0X3NpZ25hbAotICAgICAgICAiIiIsCi0gICAgJ2ZyZWVic2Q0JzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ2ZyZWVic2QnLAogICAgICAgICAiIiIKKyAgICAgICAgdGVzdF9kZXZwb2xsCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9kYm1fZ251CiAgICAgICAgIHRlc3RfbG9jYWxlCkBAIC0xNTM2LDggKzE2NTIsOCBAQAogICAgICAgICB0ZXN0X3RpbWVvdXQKICAgICAgICAgdGVzdF91cmxsaWJuZXQKICAgICAgICAgdGVzdF9tdWx0aXByb2Nlc3NpbmcKLSAgICAgICAgIiIiLAotICAgICdhaXg1JzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ2FpeCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2J6MgogICAgICAgICB0ZXN0X2Vwb2xsCkBAIC0xNTUxLDEwICsxNjY3LDExIEBACiAgICAgICAgIHRlc3RfdHRrX3RleHRvbmx5CiAgICAgICAgIHRlc3RfemlwaW1wb3J0CiAgICAgICAgIHRlc3RfemxpYgotICAgICAgICAiIiIsCi0gICAgJ29wZW5ic2QzJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ29wZW5ic2QnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9jdHlwZXMKKyAgICAgICAgdGVzdF9kZXZwb2xsCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9kYm1fZ251CiAgICAgICAgIHRlc3RfbG9jYWxlCkBAIC0xNTY2LDExICsxNjgzLDEyIEBACiAgICAgICAgIHRlc3RfdHRrX2d1aW9ubHkKICAgICAgICAgdGVzdF90dGtfdGV4dG9ubHkKICAgICAgICAgdGVzdF9tdWx0aXByb2Nlc3NpbmcKLSAgICAgICAgIiIiLAotICAgICduZXRic2QzJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ25ldGJzZCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2N0eXBlcwogICAgICAgICB0ZXN0X2N1cnNlcworICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9lcG9sbAogICAgICAgICB0ZXN0X2RibV9nbnUKICAgICAgICAgdGVzdF9sb2NhbGUKQEAgLTE1ODEsMTIgKzE2OTksOCBAQAogICAgICAgICB0ZXN0X3R0a19ndWlvbmx5CiAgICAgICAgIHRlc3RfdHRrX3RleHRvbmx5CiAgICAgICAgIHRlc3RfbXVsdGlwcm9jZXNzaW5nCi0gICAgICAgICIiIiwKLX0KLV9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q1J10gPSBfZXhwZWN0YXRpb25zWydmcmVlYnNkNCddCi1fZXhwZWN0YXRpb25zWydmcmVlYnNkNiddID0gX2V4cGVjdGF0aW9uc1snZnJlZWJzZDQnXQotX2V4cGVjdGF0aW9uc1snZnJlZWJzZDcnXSA9IF9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q0J10KLV9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q4J10gPSBfZXhwZWN0YXRpb25zWydmcmVlYnNkNCddCisgICAgICAgICIiIiksCispCiAKIGNsYXNzIF9FeHBlY3RlZFNraXBzOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTE1OTQsOSArMTcwOCwxMyBAQAogICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfdGltZW91dAogCiAgICAgICAgIHNlbGYudmFsaWQgPSBGYWxzZQotICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gX2V4cGVjdGF0aW9uczoKLSAgICAgICAgICAgIHMgPSBfZXhwZWN0YXRpb25zW3N5cy5wbGF0Zm9ybV0KLSAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBzZXQocy5zcGxpdCgpKQorICAgICAgICBleHBlY3RlZCA9IE5vbmUKKyAgICAgICAgZm9yIGl0ZW0gaW4gX2V4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKGl0ZW1bMF0pOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gaXRlbVsxXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5leHBlY3RlZCA9IHNldChleHBlY3RlZC5zcGxpdCgpKQogCiAgICAgICAgICAgICAjIFRoZXNlIGFyZSBicm9rZW4gdGVzdHMsIGZvciBub3cgc2tpcHBlZCBvbiBldmVyeSBwbGF0Zm9ybS4KICAgICAgICAgICAgICMgWFhYIEZpeCB0aGVzZSEKQEAgLTE2NTYsOSArMTc3NCw4IEBACiAgICAgICAgIFRFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgoVEVNUERJUikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MubWtkaXIoVEVNUERJUikKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICBwYXNzCiAKICAgICAjIERlZmluZSBhIHdyaXRhYmxlIHRlbXAgZGlyIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGN3ZCB3aGlsZSBydW5uaW5nCiAgICAgIyB0aGUgdGVzdHMuIFRoZSBuYW1lIG9mIHRoZSBkaXIgaW5jbHVkZXMgdGhlIHBpZCB0byBhbGxvdyBwYXJhbGxlbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcmVwZXJmLnB5IGIvTGliL3Rlc3QvcmVwZXJmLnB5CmluZGV4IDdjNjgyMzQuLmU5M2JhY2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3JlcGVyZi5weQorKysgYi9MaWIvdGVzdC9yZXBlcmYucHkKQEAgLTksMTMgKzksMTMgQEAKICAgICB0aW1lZnVuYygxMCwgcC5maW5kYWxsLCBzKQogCiBkZWYgdGltZWZ1bmMobiwgZnVuYywgKmFyZ3MsICoqa3cpOgotICAgIHQwID0gdGltZS5jbG9jaygpCisgICAgdDAgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgdHJ5OgogICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKICAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMoKmFyZ3MsICoqa3cpCiAgICAgICAgIHJldHVybiByZXN1bHQKICAgICBmaW5hbGx5OgotICAgICAgICB0MSA9IHRpbWUuY2xvY2soKQorICAgICAgICB0MSA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICAgICAgaWYgbiA+IDE6CiAgICAgICAgICAgICBwcmludChuLCAidGltZXMiLCBlbmQ9JyAnKQogICAgICAgICBwcmludChmdW5jLl9fbmFtZV9fLCAiJS4zZiIgJSAodDEtdDApLCAiQ1BVIHNlY29uZHMiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weSBiL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKaW5kZXggYmE0NDZjZC4uYjA5ZjRiZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weQorKysgYi9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5CkBAIC0xLDYgKzEsNyBAQAogIyBDb21tb24gdXRpbGl0eSBmdW5jdGlvbnMgdXNlZCBieSB2YXJpb3VzIHNjcmlwdCBleGVjdXRpb24gdGVzdHMKICMgIGUuZy4gdGVzdF9jbWRfbGluZSwgdGVzdF9jbWRfbGluZV9zY3JpcHQgYW5kIHRlc3RfcnVucHkKIAoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aApAQCAtNTksMTEgKzYwLDEyIEBACiAgICAgIiIiCiAgICAgcmV0dXJuIF9hc3NlcnRfcHl0aG9uKEZhbHNlLCAqYXJncywgKiplbnZfdmFycykKIAotZGVmIHNwYXduX3B5dGhvbigqYXJncyk6CitkZWYgc3Bhd25fcHl0aG9uKCphcmdzLCAqKmt3KToKICAgICBjbWRfbGluZSA9IFtzeXMuZXhlY3V0YWJsZSwgJy1FJ10KICAgICBjbWRfbGluZS5leHRlbmQoYXJncykKICAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3BlbihjbWRfbGluZSwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprdykKIAogZGVmIGtpbGxfcHl0aG9uKHApOgogICAgIHAuc3RkaW4uY2xvc2UoKQpAQCAtOTIsNiArOTQsNyBAQAogICAgIHNjcmlwdF9maWxlID0gb3BlbihzY3JpcHRfbmFtZSwgJ3cnLCBlbmNvZGluZz0ndXRmLTgnKQogICAgIHNjcmlwdF9maWxlLndyaXRlKHNvdXJjZSkKICAgICBzY3JpcHRfZmlsZS5jbG9zZSgpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICByZXR1cm4gc2NyaXB0X25hbWUKIAogZGVmIG1ha2VfemlwX3NjcmlwdCh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHNjcmlwdF9uYW1lLCBuYW1lX2luX3ppcD1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NlcV90ZXN0cy5weSBiL0xpYi90ZXN0L3NlcV90ZXN0cy5weQppbmRleCBmNjU1YzI5Li5mMTg1YTgyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zZXFfdGVzdHMucHkKKysrIGIvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CkBAIC00LDYgKzQsNyBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKK2ltcG9ydCBwaWNrbGUKIAogIyBWYXJpb3VzIGl0ZXJhYmxlcwogIyBUaGlzIGlzIHVzZWQgZm9yIGNoZWNraW5nIHRoZSBjb25zdHJ1Y3RvciAoaGVyZSBhbmQgaW4gdGVzdF9kZXF1ZS5weSkKQEAgLTM4OCwzICszODksOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuaW5kZXgoMCwgLTQqc3lzLm1heHNpemUsIDQqc3lzLm1heHNpemUpLCAyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBhLmluZGV4LCAwLCA0KnN5cy5tYXhzaXplLC00KnN5cy5tYXhzaXplKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBhLmluZGV4LCAyLCAwLCAtMTApCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGxzdCA9IHNlbGYudHlwZTJ0ZXN0KFs0LCA1LCA2LCA3XSkKKyAgICAgICAgbHN0MiA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMobHN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QyLCBsc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQobHN0MiksIGlkKGxzdCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zb3J0cGVyZi5weSBiL0xpYi90ZXN0L3NvcnRwZXJmLnB5CmluZGV4IDBjZTg4ZGUuLmFmN2MwYjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NvcnRwZXJmLnB5CisrKyBiL0xpYi90ZXN0L3NvcnRwZXJmLnB5CkBAIC01Nyw5ICs1Nyw5IEBACiAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAKIGRlZiBkb2l0KEwpOgotICAgIHQwID0gdGltZS5jbG9jaygpCisgICAgdDAgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgTC5zb3J0KCkKLSAgICB0MSA9IHRpbWUuY2xvY2soKQorICAgIHQxID0gdGltZS5wZXJmX2NvdW50ZXIoKQogICAgIHByaW50KCIlNi4yZiIgJSAodDEtdDApLCBlbmQ9JyAnKQogICAgIGZsdXNoKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3NsX2tleS5wYXNzd2QucGVtIGIvTGliL3Rlc3Qvc3NsX2tleS5wYXNzd2QucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MjQ2NzIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9zc2xfa2V5LnBhc3N3ZC5wZW0KQEAgLTAsMCArMSwxOCBAQAorLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQorUHJvYy1UeXBlOiA0LEVOQ1JZUFRFRAorREVLLUluZm86IERFUy1FREUzLUNCQywxQThEOUQyQTAyRUM2OThBCisKK2tKWWJmWjhMMHNmZTlPdHkzZ3cwYWxvTm5ZNUU4ZmVnUmZRTFpsTm94VGw2ak50MG5Jd0k4a0RKMzZDWmdSOWMKK3UzRkRKbS9LcXJmVW96OHZXK3FFbldoU0c3UVBYMndXR1BIZDRLOTRZei9GZ3JSelowRG9LN1h4WHE5Z090VkEKK0FWR1FobnozMnArNldoZkdzQ3I5QXJYRXdSWnJUay9GdnpFUGFVNWZIY29Ta3JOVkFHWDhJcFNWa1NEd0VEUXIKK0d2MTcrY2ZrOTlVVjFPQ3phNnlLSG9Ga1R0ckMrUFpVNzFMb21CYWJpdlMyT2M0QjloWXVTUjJoRjAxd1RIUCsKK1lsV05hZ1pPT1Z0Tno0b0tLOXg5ZU5RcG1mUVhRdlBQVGZ1c2V4S0liS2Zack12Sm94Y20xZ2ZjWjBIL3dLNlAKKzZ3bVhTRzM1cU1PT3p0Q1pOdHBlcmpzMXd6RUJYem55SzhRbUxjQUpCamtmYXJBQkpYOXZCRXpaVjBPVUtoeSsKK25vT1JGd0hUbGxwaGJteWRMaHU2ZWhMVVpNSFBoekFTNVVON3NydHBTTjgxZWVyRE15MFJNVUF3QTcvUG9mWDEKKzk0TWU4NVE4alAwUEM5RVRkc0pjUHFMekFQRVRFWXUwRUxld0tSY3JkeVdpK3RsTEZycEU1S1QvczVlY2JsOWwKKzdCNjFVNEtmZDFQSVhjL3NpSU5oVTNBM2JZSys4NDVZeVVBclVPbktmMWtFb3g3cDFScEQ3eUZxVlQwNGxSVG8KK2NpYk5LQVRCdXNYU3VCcnAyRzZHTnVoV0VPU2FmV0NLSlFBemdDWUlwNlpUVjJraGhNVUdwcGMvMkgzQ0Y2Y08KK3pYMEt0bFBWWkM3aExrQjZIVDhTeFlVd0YxenFXWTcrL1hQUGRjMzdNZUVaODdRM1V1WndxT1JMWStaMGhwZ3QKK0w1SlhCQ29rbFpoQ0FhTjJHcXdGTFh0R2lSU1JGR1k3eFhJaGJEVGxFNjVXdjFXR0dnRExNS0dFMWdPejN5QW8KKzJqakcxK3lBSEpVZEU2OVhURkhTcVNrdmFsb0ExVzAzTGRNWFo5VnVRSi95U1hDaWU2QUJBUT09CistLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkgYi9MaWIvdGVzdC9zc2xfc2VydmVycy5weQppbmRleCA3N2MwNTQyLi44Njg2MTUzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zc2xfc2VydmVycy5weQorKysgYi9MaWIvdGVzdC9zc2xfc2VydmVycy5weQpAQCAtOTQsNyArOTQsMTIgQEAKICAgICAgICAgIiIiU2VydmUgYSBHRVQgcmVxdWVzdC4iIiIKICAgICAgICAgc29jayA9IHNlbGYucmZpbGUucmF3Ll9zb2NrCiAgICAgICAgIGNvbnRleHQgPSBzb2NrLmNvbnRleHQKLSAgICAgICAgYm9keSA9IHBwcmludC5wZm9ybWF0KGNvbnRleHQuc2Vzc2lvbl9zdGF0cygpKQorICAgICAgICBzdGF0cyA9IHsKKyAgICAgICAgICAgICdzZXNzaW9uX2NhY2hlJzogY29udGV4dC5zZXNzaW9uX3N0YXRzKCksCisgICAgICAgICAgICAnY2lwaGVyJzogc29jay5jaXBoZXIoKSwKKyAgICAgICAgICAgICdjb21wcmVzc2lvbic6IHNvY2suY29tcHJlc3Npb24oKSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgYm9keSA9IHBwcmludC5wZm9ybWF0KHN0YXRzKQogICAgICAgICBib2R5ID0gYm9keS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCkKICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC10eXBlIiwgInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiKQpAQCAtMTcyLDYgKzE3NywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGhlbHA9J2JlIGxlc3MgdmVyYm9zZScpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zdGF0cycsIGRlc3Q9J3VzZV9zdGF0c19oYW5kbGVyJywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGhlbHA9J2Fsd2F5cyByZXR1cm4gc3RhdHMgcGFnZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jdXJ2ZS1uYW1lJywgZGVzdD0nY3VydmVfbmFtZScsIHR5cGU9c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdjdXJ2ZSBuYW1lIGZvciBFQy1iYXNlZCBEaWZmaWUtSGVsbG1hbicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kaCcsIGRlc3Q9J2RoX2ZpbGUnLCB0eXBlPXN0ciwgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQRU0gZmlsZSBjb250YWluaW5nIERIIHBhcmFtZXRlcnMnKQogICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCiAKICAgICBzdXBwb3J0LnZlcmJvc2UgPSBhcmdzLnZlcmJvc2UKQEAgLTE4Miw2ICsxOTIsMTAgQEAKICAgICAgICAgaGFuZGxlcl9jbGFzcy5yb290ID0gb3MuZ2V0Y3dkKCkKICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgIGlmIGFyZ3MuY3VydmVfbmFtZToKKyAgICAgICAgY29udGV4dC5zZXRfZWNkaF9jdXJ2ZShhcmdzLmN1cnZlX25hbWUpCisgICAgaWYgYXJncy5kaF9maWxlOgorICAgICAgICBjb250ZXh0LmxvYWRfZGhfcGFyYW1zKGFyZ3MuZGhfZmlsZSkKIAogICAgIHNlcnZlciA9IEhUVFBTU2VydmVyKCgiIiwgYXJncy5wb3J0KSwgaGFuZGxlcl9jbGFzcywgY29udGV4dCkKICAgICBpZiBhcmdzLnZlcmJvc2U6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkgYi9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkKaW5kZXggZDc5MjUyOS4uOGRhM2U3NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weQpAQCAtMjgsNiArMjgsMTEgQEAKICAgICAjIENoYW5nZSBpbiBzdWJjbGFzc2VzIHRvIGNoYW5nZSB0aGUgYmVoYXZpb3VyIG9mIGZpeHRlc3R0eXBlKCkKICAgICB0eXBlMnRlc3QgPSBOb25lCiAKKyAgICAjIFdoZXRoZXIgdGhlICJjb250YWluZWQgaXRlbXMiIG9mIHRoZSBjb250YWluZXIgYXJlIGludGVnZXJzIGluCisgICAgIyByYW5nZSgwLCAyNTYpIChpLmUuIGJ5dGVzLCBieXRlYXJyYXkpIG9yIHN0cmluZ3Mgb2YgbGVuZ3RoIDEKKyAgICAjIChzdHIpCisgICAgY29udGFpbnNfYnl0ZXMgPSBGYWxzZQorCiAgICAgIyBBbGwgdGVzdHMgcGFzcyB0aGVpciBhcmd1bWVudHMgdG8gdGhlIHRlc3RpbmcgbWV0aG9kcwogICAgICMgYXMgc3RyIG9iamVjdHMuIGZpeHRlc3R0eXBlKCkgY2FuIGJlIHVzZWQgdG8gcHJvcGFnYXRlCiAgICAgIyB0aGVzZSBhcmd1bWVudHMgdG8gdGhlIGFwcHJvcHJpYXRlIHR5cGUKQEAgLTQ3LDExICs1MiwxMiBAQAogICAgICAgICAgICAgcmV0dXJuIG9iagogCiAgICAgIyBjaGVjayB0aGF0IG9iai5tZXRob2QoKmFyZ3MpIHJldHVybnMgcmVzdWx0Ci0gICAgZGVmIGNoZWNrZXF1YWwoc2VsZiwgcmVzdWx0LCBvYmosIG1ldGhvZG5hbWUsICphcmdzKToKKyAgICBkZWYgY2hlY2tlcXVhbChzZWxmLCByZXN1bHQsIG9iaiwgbWV0aG9kbmFtZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgcmVzdWx0ID0gc2VsZi5maXh0eXBlKHJlc3VsdCkKICAgICAgICAgb2JqID0gc2VsZi5maXh0eXBlKG9iaikKICAgICAgICAgYXJncyA9IHNlbGYuZml4dHlwZShhcmdzKQotICAgICAgICByZWFscmVzdWx0ID0gZ2V0YXR0cihvYmosIG1ldGhvZG5hbWUpKCphcmdzKQorICAgICAgICBrd2FyZ3MgPSB7azogc2VsZi5maXh0eXBlKHYpIGZvciBrLHYgaW4ga3dhcmdzLml0ZW1zKCl9CisgICAgICAgIHJlYWxyZXN1bHQgPSBnZXRhdHRyKG9iaiwgbWV0aG9kbmFtZSkoKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgcmVzdWx0LAogICAgICAgICAgICAgcmVhbHJlc3VsdApAQCAtMTE2LDcgKzEyMiwxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJycsICdjb3VudCcsICd4eCcsIHN5cy5tYXhzaXplLCAwKQogCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnY291bnQnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2NvdW50JywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnaGVsbG8nLCAnY291bnQnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnY291bnQnLCA0MikKIAogICAgICAgICAjIEZvciBhIHZhcmlldHkgb2YgY29tYmluYXRpb25zLAogICAgICAgICAjICAgIHZlcmlmeSB0aGF0IHN0ci5jb3VudCgpIG1hdGNoZXMgYW4gZXF1aXZhbGVudCBmdW5jdGlvbgpAQCAtMTYyLDcgKzE3MiwxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoIDIsICdycmFycnJycnJycnJhJywgJ2ZpbmQnLCAnYScsIE5vbmUsIDYpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdmaW5kJykKLSAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdmaW5kJywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2hlbGxvJywgJ2ZpbmQnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnZmluZCcsIDQyKQogCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnJywgJ2ZpbmQnLCAnJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnJywgJ2ZpbmQnLCAnJywgMSwgMSkKQEAgLTIxNiw3ICsyMzAsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCAyLCAncnJhcnJycnJycnJyYScsICdyZmluZCcsICdhJywgTm9uZSwgNikKIAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JmaW5kJykKLSAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyZmluZCcsIDQyKQorCisgICAgICAgIGlmIHNlbGYuY29udGFpbnNfYnl0ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdoZWxsbycsICdyZmluZCcsIDQyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyZmluZCcsIDQyKQogCiAgICAgICAgICMgRm9yIGEgdmFyaWV0eSBvZiBjb21iaW5hdGlvbnMsCiAgICAgICAgICMgICAgdmVyaWZ5IHRoYXQgc3RyLnJmaW5kKCkgbWF0Y2hlcyBfX2NvbnRhaW5zX18KQEAgLTI0NCw2ICsyNjIsOSBAQAogICAgICAgICAjIGlzc3VlIDc0NTgKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnYWInLCAncmZpbmQnLCAneHh4Jywgc3lzLm1heHNpemUgKyAxLCAwKQogCisgICAgICAgICMgaXNzdWUgIzE1NTM0CisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnPC4uLi4uLlx1MDQzYy4uLicsICJyZmluZCIsICI8IikKKwogICAgIGRlZiB0ZXN0X2luZGV4KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJ2FiY2RlZmdoaWFiYycsICdpbmRleCcsICcnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMywgJ2FiY2RlZmdoaWFiYycsICdpbmRleCcsICdkZWYnKQpAQCAtMjYzLDcgKzI4NCwxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoIDIsICdycmFycnJycnJycnJhJywgJ2luZGV4JywgJ2EnLCBOb25lLCA2KQogCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnaW5kZXgnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2luZGV4JywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJ2hlbGxvJywgJ2luZGV4JywgNDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2luZGV4JywgNDIpCiAKICAgICBkZWYgdGVzdF9yaW5kZXgoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgxMiwgJ2FiY2RlZmdoaWFiYycsICdyaW5kZXgnLCAnJykKQEAgLTI4NSw3ICszMTAsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCAyLCAncnJhcnJycnJycnJyYScsICdyaW5kZXgnLCAnYScsIE5vbmUsIDYpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyaW5kZXgnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JpbmRleCcsIDQyKQorCisgICAgICAgIGlmIHNlbGYuY29udGFpbnNfYnl0ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICdoZWxsbycsICdyaW5kZXgnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncmluZGV4JywgNDIpCiAKICAgICBkZWYgdGVzdF9sb3dlcihzZWxmKToKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCdoZWxsbycsICdIZUxMbycsICdsb3dlcicpCkBAIC0zNjMsNiArMzkyLDE3IEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnXSoxOCArIFsnYUJMQUhhJ10sICgnYUJMQUgnKjIwKVs6LTRdLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3NwbGl0JywgJ0JMQUgnLCAxOCkKIAorICAgICAgICAjIHdpdGgga2V5d29yZCBhcmdzCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYicsICdjJywgJ2QnXSwgJ2F8YnxjfGQnLCAnc3BsaXQnLCBzZXA9J3wnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJywgJ2J8Y3xkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdzcGxpdCcsICd8JywgbWF4c3BsaXQ9MSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYScsICdifGN8ZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F8YnxjfGQnLCAnc3BsaXQnLCBzZXA9J3wnLCBtYXhzcGxpdD0xKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJywgJ2J8Y3xkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdzcGxpdCcsIG1heHNwbGl0PTEsIHNlcD0nfCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYiBjIGQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhIGIgYyBkJywgJ3NwbGl0JywgbWF4c3BsaXQ9MSkKKwogICAgICAgICAjIGFyZ3VtZW50IHR5cGUKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdzcGxpdCcsIDQyLCA0MiwgNDIpCiAKQEAgLTQyMCw2ICs0NjAsMTcgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYUJMQUhhJ10gKyBbJ2EnXSoxOCwgKCdhQkxBSCcqMjApWzotNF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAncnNwbGl0JywgJ0JMQUgnLCAxOCkKIAorICAgICAgICAjIHdpdGgga2V5d29yZCBhcmdzCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYicsICdjJywgJ2QnXSwgJ2F8YnxjfGQnLCAncnNwbGl0Jywgc2VwPSd8JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYXxifGMnLCAnZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F8YnxjfGQnLCAncnNwbGl0JywgJ3wnLCBtYXhzcGxpdD0xKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhfGJ8YycsICdkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdyc3BsaXQnLCBzZXA9J3wnLCBtYXhzcGxpdD0xKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhfGJ8YycsICdkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdyc3BsaXQnLCBtYXhzcGxpdD0xLCBzZXA9J3wnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhIGIgYycsICdkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYSBiIGMgZCcsICdyc3BsaXQnLCBtYXhzcGxpdD0xKQorCiAgICAgICAgICMgYXJndW1lbnQgdHlwZQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JzcGxpdCcsIDQyLCA0MiwgNDIpCiAKQEAgLTU0OSw2ICs2MDAsOCBAQAogICAgICAgICBFUSgiUmV5S0tqYXZpayIsICJSZXlramF2aWsiLCAicmVwbGFjZSIsICJrIiwgIktLIiwgMSkKICAgICAgICAgRVEoIlJleWtqYXZpayIsICJSZXlramF2aWsiLCAicmVwbGFjZSIsICJrIiwgIktLIiwgMCkKICAgICAgICAgRVEoIkEtLS0tQi0tLS1DLS0tLSIsICJBLkIuQy4iLCAicmVwbGFjZSIsICIuIiwgIi0tLS0iKQorICAgICAgICAjIGlzc3VlICMxNTUzNAorICAgICAgICBFUSgnLi4uXHUwNDNjLi4uLi4uJmx0OycsICcuLi5cdTA0M2MuLi4uLi48JywgInJlcGxhY2UiLCAiPCIsICImbHQ7IikKIAogICAgICAgICBFUSgiUmV5a2phdmlrIiwgIlJleWtqYXZpayIsICJyZXBsYWNlIiwgInEiLCAiS0siKQogCkBAIC02NDMsNyArNjk2LDcgQEAKIAogICAgICAgICAjIGNoZWNrIHRoYXQgdGl0bGVjYXNlZCBjaGFycyBhcmUgbG93ZXJlZCBjb3JyZWN0bHkKICAgICAgICAgIyBcdTFmZmMgaXMgdGhlIHRpdGxlY2FzZWQgY2hhcgotICAgICAgICBzZWxmLmNoZWNrZXF1YWwoJ1x1MWZmY1x1MWZmM1x1MWZmM1x1MWZmMycsCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgnXHUwM2E5XHUwMzk5XHUxZmYzXHUxZmYzXHUxZmYzJywKICAgICAgICAgICAgICAgICAgICAgICAgICdcdTFmZjNcdTFmZjNcdTFmZmNcdTFmZmMnLCAnY2FwaXRhbGl6ZScpCiAgICAgICAgICMgY2hlY2sgd2l0aCBjYXNlZCBub24tbGV0dGVyIGNoYXJzCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgnXHUyNGM1XHUyNGU4XHUyNGUzXHUyNGQ3XHUyNGRlXHUyNGRkJywKQEAgLTkwOCw3ICs5NjEsMTQgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYWJjJywgJ2RlZicsICdnaGknXSwgImFiY1xuZGVmXHJcbmdoaVxuIiwgJ3NwbGl0bGluZXMnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhYmMnLCAnZGVmJywgJ2doaScsICcnXSwgImFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJycsICdhYmMnLCAnZGVmJywgJ2doaScsICcnXSwgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJykKLSAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnXG4nLCAnYWJjXG4nLCAnZGVmXHJcbicsICdnaGlcbicsICdcciddLCAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnLCAxKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWycnLCAnYWJjJywgJ2RlZicsICdnaGknLCAnJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnLCBGYWxzZSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnXG4nLCAnYWJjXG4nLCAnZGVmXHJcbicsICdnaGlcbicsICdcciddLAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJywgVHJ1ZSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnJywgJ2FiYycsICdkZWYnLCAnZ2hpJywgJyddLCAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzcGxpdGxpbmVzJywga2VlcGVuZHM9RmFsc2UpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ1xuJywgJ2FiY1xuJywgJ2RlZlxyXG4nLCAnZ2hpXG4nLCAnXHInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbmFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycsIGtlZXBlbmRzPVRydWUpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdhYmMnLCAnc3BsaXRsaW5lcycsIDQyLCA0MikKIApAQCAtMTE0Miw2ICsxMjAyLDEwIEBACiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJTEwLipmJywgJ19fbW9kX18nLCAoJ2ZvbycsIDQyLikpCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJyUxMCcsICdfX21vZF9fJywgKDQyLCkpCiAKKyAgICAgICAgIyBPdXRyYWdlb3VzbHkgbGFyZ2Ugd2lkdGggb3IgcHJlY2lzaW9uIHNob3VsZCByYWlzZSBWYWx1ZUVycm9yLgorICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICclJSVkZicgJSAoMioqNjQpLCAnX19tb2RfXycsICgzLjIpKQorICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICclJS4lZGYnICUgKDIqKjY0KSwgJ19fbW9kX18nLCAoMy4yKSkKKwogICAgIGRlZiB0ZXN0X2Zsb2F0Zm9ybWF0dGluZyhzZWxmKToKICAgICAgICAgIyBmbG9hdCBmb3JtYXR0aW5nCiAgICAgICAgIGZvciBwcmVjIGluIHJhbmdlKDEwMCk6CkBAIC0xMjU3LDYgKzEzMjEsOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgcideZW5kc3dpdGhcKCcsIHMuZW5kc3dpdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsIE5vbmUsIE5vbmUsIE5vbmUpCiAKKyAgICAgICAgIyBpc3N1ZSAjMTU1MzQKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDEwLCAiLi4uXHUwNDNjLi4uLi4uPCIsICJmaW5kIiwgIjwiKQorCiAKIGNsYXNzIE1peGluU3RyVW5pY29kZVRlc3Q6CiAgICAgIyBBZGRpdGlvbmFsIHRlc3RzIHRoYXQgb25seSB3b3JrIHdpdGggc3RyIGFuZCB1bmljb2RlLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3VwcG9ydC5weSBiL0xpYi90ZXN0L3N1cHBvcnQucHkKaW5kZXggZDg4NTYyZS4uMzVhZTc2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC9zdXBwb3J0LnB5CkBAIC0xNSw3ICsxNSw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiBpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgaW1wCkBAIC0zNywyNiArMzcsNDEgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBtdWx0aXByb2Nlc3NpbmcgPSBOb25lCiAKK3RyeToKKyAgICBpbXBvcnQgemxpYgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHpsaWIgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgYnoyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYnoyID0gTm9uZQorCit0cnk6CisgICAgaW1wb3J0IGx6bWEKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBsem1hID0gTm9uZQogCiBfX2FsbF9fID0gWwotICAgICJFcnJvciIsICJUZXN0RmFpbGVkIiwgIlJlc291cmNlRGVuaWVkIiwgImltcG9ydF9tb2R1bGUiLAotICAgICJ2ZXJib3NlIiwgInVzZV9yZXNvdXJjZXMiLCAibWF4X21lbXVzZSIsICJyZWNvcmRfb3JpZ2luYWxfc3Rkb3V0IiwKKyAgICAiRXJyb3IiLCAiVGVzdEZhaWxlZCIsICJSZXNvdXJjZURlbmllZCIsICJpbXBvcnRfbW9kdWxlIiwgInZlcmJvc2UiLAorICAgICJ1c2VfcmVzb3VyY2VzIiwgIm1heF9tZW11c2UiLCAicmVjb3JkX29yaWdpbmFsX3N0ZG91dCIsCiAgICAgImdldF9vcmlnaW5hbF9zdGRvdXQiLCAidW5sb2FkIiwgInVubGluayIsICJybXRyZWUiLCAiZm9yZ2V0IiwKLSAgICAiaXNfcmVzb3VyY2VfZW5hYmxlZCIsICJyZXF1aXJlcyIsICJyZXF1aXJlc19tYWNfdmVyIiwKLSAgICAiZmluZF91bnVzZWRfcG9ydCIsICJiaW5kX3BvcnQiLAotICAgICJmY21wIiwgImlzX2p5dGhvbiIsICJURVNURk4iLCAiSE9TVCIsICJGVVpaIiwgIlNBVkVEQ1dEIiwgInRlbXBfY3dkIiwKLSAgICAiZmluZGZpbGUiLCAic29ydGRpY3QiLCAiY2hlY2tfc3ludGF4X2Vycm9yIiwgIm9wZW5fdXJscmVzb3VyY2UiLAotICAgICJjaGVja193YXJuaW5ncyIsICJDbGVhbkltcG9ydCIsICJFbnZpcm9ubWVudFZhckd1YXJkIiwKLSAgICAiVHJhbnNpZW50UmVzb3VyY2UiLCAiY2FwdHVyZWRfb3V0cHV0IiwgImNhcHR1cmVkX3N0ZG91dCIsCi0gICAgImNhcHR1cmVkX3N0ZGluIiwgImNhcHR1cmVkX3N0ZGVyciIsCi0gICAgInRpbWVfb3V0IiwgInNvY2tldF9wZWVyX3Jlc2V0IiwgImlvZXJyb3JfcGVlcl9yZXNldCIsCi0gICAgInJ1bl93aXRoX2xvY2FsZSIsICd0ZW1wX3VtYXNrJywgInRyYW5zaWVudF9pbnRlcm5ldCIsCi0gICAgInNldF9tZW1saW1pdCIsICJiaWdtZW10ZXN0IiwgImJpZ2FkZHJzcGFjZXRlc3QiLCAiQmFzaWNUZXN0UnVubmVyIiwKLSAgICAicnVuX3VuaXR0ZXN0IiwgInJ1bl9kb2N0ZXN0IiwgInRocmVhZGluZ19zZXR1cCIsICJ0aHJlYWRpbmdfY2xlYW51cCIsCi0gICAgInJlYXBfY2hpbGRyZW4iLCAiY3B5dGhvbl9vbmx5IiwgImNoZWNrX2ltcGxfZGV0YWlsIiwgImdldF9hdHRyaWJ1dGUiLAotICAgICJzd2FwX2l0ZW0iLCAic3dhcF9hdHRyIiwgInJlcXVpcmVzX0lFRUVfNzU0IiwKKyAgICAiaXNfcmVzb3VyY2VfZW5hYmxlZCIsICJyZXF1aXJlcyIsICJyZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24iLAorICAgICJyZXF1aXJlc19saW51eF92ZXJzaW9uIiwgInJlcXVpcmVzX21hY192ZXIiLCAiZmluZF91bnVzZWRfcG9ydCIsCisgICAgImJpbmRfcG9ydCIsICJJUFY2X0VOQUJMRUQiLCAiaXNfanl0aG9uIiwgIlRFU1RGTiIsICJIT1NUIiwgIlNBVkVEQ1dEIiwKKyAgICAidGVtcF9jd2QiLCAiZmluZGZpbGUiLCAiY3JlYXRlX2VtcHR5X2ZpbGUiLCAic29ydGRpY3QiLAorICAgICJjaGVja19zeW50YXhfZXJyb3IiLCAib3Blbl91cmxyZXNvdXJjZSIsICJjaGVja193YXJuaW5ncyIsICJDbGVhbkltcG9ydCIsCisgICAgIkVudmlyb25tZW50VmFyR3VhcmQiLCAiVHJhbnNpZW50UmVzb3VyY2UiLCAiY2FwdHVyZWRfc3Rkb3V0IiwKKyAgICAiY2FwdHVyZWRfc3RkaW4iLCAiY2FwdHVyZWRfc3RkZXJyIiwgInRpbWVfb3V0IiwgInNvY2tldF9wZWVyX3Jlc2V0IiwKKyAgICAiaW9lcnJvcl9wZWVyX3Jlc2V0IiwgInJ1bl93aXRoX2xvY2FsZSIsICd0ZW1wX3VtYXNrJywKKyAgICAidHJhbnNpZW50X2ludGVybmV0IiwgInNldF9tZW1saW1pdCIsICJiaWdtZW10ZXN0IiwgImJpZ2FkZHJzcGFjZXRlc3QiLAorICAgICJCYXNpY1Rlc3RSdW5uZXIiLCAicnVuX3VuaXR0ZXN0IiwgInJ1bl9kb2N0ZXN0IiwgInRocmVhZGluZ19zZXR1cCIsCisgICAgInRocmVhZGluZ19jbGVhbnVwIiwgInJlYXBfY2hpbGRyZW4iLCAiY3B5dGhvbl9vbmx5IiwgImNoZWNrX2ltcGxfZGV0YWlsIiwKKyAgICAiZ2V0X2F0dHJpYnV0ZSIsICJzd2FwX2l0ZW0iLCAic3dhcF9hdHRyIiwgInJlcXVpcmVzX0lFRUVfNzU0IiwKICAgICAiVGVzdEhhbmRsZXIiLCAiTWF0Y2hlciIsICJjYW5fc3ltbGluayIsICJza2lwX3VubGVzc19zeW1saW5rIiwKLSAgICAiaW1wb3J0X2ZyZXNoX21vZHVsZSIsICJmYWlsZmFzdCIsICJydW5fd2l0aF90eiIKKyAgICAic2tpcF91bmxlc3NfeGF0dHIiLCAiaW1wb3J0X2ZyZXNoX21vZHVsZSIsICJyZXF1aXJlc196bGliIiwKKyAgICAiUElQRV9NQVhfU0laRSIsICJmYWlsZmFzdCIsICJhbnRpY2lwYXRlX2ZhaWx1cmUiLCAicnVuX3dpdGhfdHoiLAorICAgICJyZXF1aXJlc19iejIiLCAicmVxdWlyZXNfbHptYSIKICAgICBdCiAKIGNsYXNzIEVycm9yKEV4Y2VwdGlvbik6CkBAIC0xMjcsNiArMTQyLDE3IEBACiAgICAgcmV0dXJuIHNhdmVkCiAKIAorZGVmIGFudGljaXBhdGVfZmFpbHVyZShjb25kaXRpb24pOgorICAgICIiIkRlY29yYXRvciB0byBtYXJrIGEgdGVzdCB0aGF0IGlzIGtub3duIHRvIGJlIGJyb2tlbiBpbiBzb21lIGNhc2VzCisKKyAgICAgICBBbnkgdXNlIG9mIHRoaXMgZGVjb3JhdG9yIHNob3VsZCBoYXZlIGEgY29tbWVudCBpZGVudGlmeWluZyB0aGUKKyAgICAgICBhc3NvY2lhdGVkIHRyYWNrZXIgaXNzdWUuCisgICAgIiIiCisgICAgaWYgY29uZGl0aW9uOgorICAgICAgICByZXR1cm4gdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgcmV0dXJuIGxhbWJkYSBmOiBmCisKKwogZGVmIGltcG9ydF9mcmVzaF9tb2R1bGUobmFtZSwgZnJlc2g9KCksIGJsb2NrZWQ9KCksIGRlcHJlY2F0ZWQ9RmFsc2UpOgogICAgICIiIkltcG9ydHMgYW5kIHJldHVybnMgYSBtb2R1bGUsIGRlbGliZXJhdGVseSBieXBhc3NpbmcgdGhlIHN5cy5tb2R1bGVzIGNhY2hlCiAgICAgYW5kIGltcG9ydGluZyBhIGZyZXNoIGNvcHkgb2YgdGhlIG1vZHVsZS4gT25jZSB0aGUgaW1wb3J0IGlzIGNvbXBsZXRlLApAQCAtMTcwLDggKzE5Niw3IEBACiAgICAgdHJ5OgogICAgICAgICBhdHRyaWJ1dGUgPSBnZXRhdHRyKG9iaiwgbmFtZSkKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJtb2R1bGUgJXMgaGFzIG5vIGF0dHJpYnV0ZSAlcyIgJSAoCi0gICAgICAgICAgICBvYmouX19uYW1lX18sIG5hbWUpKQorICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgib2JqZWN0ICVyIGhhcyBubyBhdHRyaWJ1dGUgJXIiICUgKG9iaiwgbmFtZSkpCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZQogCkBAIC0yNzYsOCArMzAxLDcgQEAKICAgICB0cnk6CiAgICAgICAgIF9ybXRyZWUocGF0aCkKICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKLSAgICAgICAgIyBVbml4IHJldHVybnMgRU5PRU5ULCBXaW5kb3dzIHJldHVybnMgRVNSQ0guCi0gICAgICAgIGlmIGVycm9yLmVycm5vIG5vdCBpbiAoZXJybm8uRU5PRU5ULCBlcnJuby5FU1JDSCk6CisgICAgICAgIGlmIGVycm9yLmVycm5vICE9IGVycm5vLkVOT0VOVDoKICAgICAgICAgICAgIHJhaXNlCiAKIGRlZiBtYWtlX2xlZ2FjeV9weWMoc291cmNlKToKQEAgLTM2Miw5ICszODYsNTIgQEAKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbm90IGlzX3Jlc291cmNlX2VuYWJsZWQocmVzb3VyY2UpOgogICAgICAgICBpZiBtc2cgaXMgTm9uZToKLSAgICAgICAgICAgIG1zZyA9ICJVc2Ugb2YgdGhlIGAlcycgcmVzb3VyY2Ugbm90IGVuYWJsZWQiICUgcmVzb3VyY2UKKyAgICAgICAgICAgIG1zZyA9ICJVc2Ugb2YgdGhlICVyIHJlc291cmNlIG5vdCBlbmFibGVkIiAlIHJlc291cmNlCiAgICAgICAgIHJhaXNlIFJlc291cmNlRGVuaWVkKG1zZykKIAorZGVmIF9yZXF1aXJlc191bml4X3ZlcnNpb24oc3lzbmFtZSwgbWluX3ZlcnNpb24pOgorICAgICIiIkRlY29yYXRvciByYWlzaW5nIFNraXBUZXN0IGlmIHRoZSBPUyBpcyBgc3lzbmFtZWAgYW5kIHRoZSB2ZXJzaW9uIGlzIGxlc3MKKyAgICB0aGFuIGBtaW5fdmVyc2lvbmAuCisKKyAgICBGb3IgZXhhbXBsZSwgQF9yZXF1aXJlc191bml4X3ZlcnNpb24oJ0ZyZWVCU0QnLCAoNywgMikpIHJhaXNlcyBTa2lwVGVzdCBpZgorICAgIHRoZSBGcmVlQlNEIHZlcnNpb24gaXMgbGVzcyB0aGFuIDcuMi4KKyAgICAiIiIKKyAgICBkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3KToKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09IHN5c25hbWU6CisgICAgICAgICAgICAgICAgdmVyc2lvbl90eHQgPSBwbGF0Zm9ybS5yZWxlYXNlKCkuc3BsaXQoJy0nLCAxKVswXQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHR1cGxlKG1hcChpbnQsIHZlcnNpb25fdHh0LnNwbGl0KCcuJykpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgdmVyc2lvbiA8IG1pbl92ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb25fdHh0ID0gJy4nLmpvaW4obWFwKHN0ciwgbWluX3ZlcnNpb24pKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIHZlcnNpb24gJXMgb3IgaGlnaGVyIHJlcXVpcmVkLCBub3QgJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc3lzbmFtZSwgbWluX3ZlcnNpb25fdHh0LCB2ZXJzaW9uX3R4dCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyCisgICAgcmV0dXJuIGRlY29yYXRvcgorCitkZWYgcmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKCptaW5fdmVyc2lvbik6CisgICAgIiIiRGVjb3JhdG9yIHJhaXNpbmcgU2tpcFRlc3QgaWYgdGhlIE9TIGlzIEZyZWVCU0QgYW5kIHRoZSBGcmVlQlNEIHZlcnNpb24gaXMKKyAgICBsZXNzIHRoYW4gYG1pbl92ZXJzaW9uYC4KKworICAgIEZvciBleGFtcGxlLCBAcmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKDcsIDIpIHJhaXNlcyBTa2lwVGVzdCBpZiB0aGUgRnJlZUJTRAorICAgIHZlcnNpb24gaXMgbGVzcyB0aGFuIDcuMi4KKyAgICAiIiIKKyAgICByZXR1cm4gX3JlcXVpcmVzX3VuaXhfdmVyc2lvbignRnJlZUJTRCcsIG1pbl92ZXJzaW9uKQorCitkZWYgcmVxdWlyZXNfbGludXhfdmVyc2lvbigqbWluX3ZlcnNpb24pOgorICAgICIiIkRlY29yYXRvciByYWlzaW5nIFNraXBUZXN0IGlmIHRoZSBPUyBpcyBMaW51eCBhbmQgdGhlIExpbnV4IHZlcnNpb24gaXMKKyAgICBsZXNzIHRoYW4gYG1pbl92ZXJzaW9uYC4KKworICAgIEZvciBleGFtcGxlLCBAcmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAzMikgcmFpc2VzIFNraXBUZXN0IGlmIHRoZSBMaW51eAorICAgIHZlcnNpb24gaXMgbGVzcyB0aGFuIDIuNi4zMi4KKyAgICAiIiIKKyAgICByZXR1cm4gX3JlcXVpcmVzX3VuaXhfdmVyc2lvbignTGludXgnLCBtaW5fdmVyc2lvbikKKwogZGVmIHJlcXVpcmVzX21hY192ZXIoKm1pbl92ZXJzaW9uKToKICAgICAiIiJEZWNvcmF0b3IgcmFpc2luZyBTa2lwVGVzdCBpZiB0aGUgT1MgaXMgTWFjIE9TIFggYW5kIHRoZSBPUyBYCiAgICAgdmVyc2lvbiBpZiBsZXNzIHRoYW4gbWluX3ZlcnNpb24uCkBAIC0zOTIsNiArNDU5LDcgQEAKICAgICAgICAgcmV0dXJuIHdyYXBwZXIKICAgICByZXR1cm4gZGVjb3JhdG9yCiAKKwogSE9TVCA9ICdsb2NhbGhvc3QnCiAKIGRlZiBmaW5kX3VudXNlZF9wb3J0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgc29ja3R5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKToKQEAgLTQ4NywyOSArNTU1LDQxIEBACiAgICAgcG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVsxXQogICAgIHJldHVybiBwb3J0CiAKLUZVWlogPSAxZS02Ci0KLWRlZiBmY21wKHgsIHkpOiAjIGZ1enp5IGNvbXBhcmlzb24gZnVuY3Rpb24KLSAgICBpZiBpc2luc3RhbmNlKHgsIGZsb2F0KSBvciBpc2luc3RhbmNlKHksIGZsb2F0KToKK2RlZiBfaXNfaXB2Nl9lbmFibGVkKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBJUHY2IGlzIGVuYWJsZWQgb24gdGhpcyBob3N0LiIiIgorICAgIGlmIHNvY2tldC5oYXNfaXB2NjoKKyAgICAgICAgc29jayA9IE5vbmUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnV6eiA9IChhYnMoeCkgKyBhYnMoeSkpICogRlVaWgotICAgICAgICAgICAgaWYgYWJzKHgteSkgPD0gZnV6ejoKLSAgICAgICAgICAgICAgICByZXR1cm4gMAotICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIHNvY2suYmluZCgoJzo6MScsIDApKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZXhjZXB0IChzb2NrZXQuZXJyb3IsIHNvY2tldC5nYWllcnJvcik6CiAgICAgICAgICAgICBwYXNzCi0gICAgZWxpZiB0eXBlKHgpID09IHR5cGUoeSkgYW5kIGlzaW5zdGFuY2UoeCwgKHR1cGxlLCBsaXN0KSk6Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKG1pbihsZW4oeCksIGxlbih5KSkpOgotICAgICAgICAgICAgb3V0Y29tZSA9IGZjbXAoeFtpXSwgeVtpXSkKLSAgICAgICAgICAgIGlmIG91dGNvbWUgIT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gb3V0Y29tZQotICAgICAgICByZXR1cm4gKGxlbih4KSA+IGxlbih5KSkgLSAobGVuKHgpIDwgbGVuKHkpKQotICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgc29jazoKKyAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICByZXR1cm4gRmFsc2UKKworSVBWNl9FTkFCTEVEID0gX2lzX2lwdjZfZW5hYmxlZCgpCisKKworIyBBIGNvbnN0YW50IGxpa2VseSBsYXJnZXIgdGhhbiB0aGUgdW5kZXJseWluZyBPUyBwaXBlIGJ1ZmZlciBzaXplLgorIyBXaW5kb3dzIGxpbWl0IHNlZW1zIHRvIGJlIGFyb3VuZCA1MTJCLCBhbmQgbW9zdCBVbml4IGtlcm5lbHMgaGF2ZSBhIDY0SyBwaXBlCisjIGJ1ZmZlciBzaXplOiB0YWtlIDFNIHRvIGJlIHN1cmUuCitQSVBFX01BWF9TSVpFID0gMTAyNCAqIDEwMjQKKwogCiAjIGRlY29yYXRvciBmb3Igc2tpcHBpbmcgdGVzdHMgb24gbm9uLUlFRUUgNzU0IHBsYXRmb3JtcwogcmVxdWlyZXNfSUVFRV83NTQgPSB1bml0dGVzdC5za2lwVW5sZXNzKAogICAgIGZsb2F0Ll9fZ2V0Zm9ybWF0X18oImRvdWJsZSIpLnN0YXJ0c3dpdGgoIklFRUUiKSwKICAgICAidGVzdCByZXF1aXJlcyBJRUVFIDc1NCBkb3VibGVzIikKIAorcmVxdWlyZXNfemxpYiA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgJ3JlcXVpcmVzIHpsaWInKQorCityZXF1aXJlc19iejIgPSB1bml0dGVzdC5za2lwVW5sZXNzKGJ6MiwgJ3JlcXVpcmVzIGJ6MicpCisKK3JlcXVpcmVzX2x6bWEgPSB1bml0dGVzdC5za2lwVW5sZXNzKGx6bWEsICdyZXF1aXJlcyBsem1hJykKKwogaXNfanl0aG9uID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKQogCiAjIEZpbGVuYW1lIHVzZWQgZm9yIHRlc3RpbmcKQEAgLTYxMCwxNCArNjkwLDE1IEBACiAgICAgICAgICAgICBybXRyZWUobmFtZSkKIAogCi1AY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotZGVmIHRlbXBfdW1hc2sodW1hc2spOgotICAgICIiIkNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IHNldHMgdGhlIHByb2Nlc3MgdW1hc2suIiIiCi0gICAgb2xkbWFzayA9IG9zLnVtYXNrKHVtYXNrKQotICAgIHRyeToKLSAgICAgICAgeWllbGQKLSAgICBmaW5hbGx5OgotICAgICAgICBvcy51bWFzayhvbGRtYXNrKQoraWYgaGFzYXR0cihvcywgInVtYXNrIik6CisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgdGVtcF91bWFzayh1bWFzayk6CisgICAgICAgICIiIkNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IHNldHMgdGhlIHByb2Nlc3MgdW1hc2suIiIiCisgICAgICAgIG9sZG1hc2sgPSBvcy51bWFzayh1bWFzaykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnVtYXNrKG9sZG1hc2spCiAKIAogZGVmIGZpbmRmaWxlKGZpbGUsIGhlcmU9X19maWxlX18sIHN1YmRpcj1Ob25lKToKQEAgLTYzNSw2ICs3MTYsMTEgQEAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZm4pOiByZXR1cm4gZm4KICAgICByZXR1cm4gZmlsZQogCitkZWYgY3JlYXRlX2VtcHR5X2ZpbGUoZmlsZW5hbWUpOgorICAgICIiIkNyZWF0ZSBhbiBlbXB0eSBmaWxlLiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cywgdHJ1bmNhdGUgaXQuIiIiCisgICAgZmQgPSBvcy5vcGVuKGZpbGVuYW1lLCBvcy5PX1dST05MWSB8IG9zLk9fQ1JFQVQgfCBvcy5PX1RSVU5DKQorICAgIG9zLmNsb3NlKGZkKQorCiBkZWYgc29ydGRpY3QoZGljdCk6CiAgICAgIkxpa2UgcmVwcihkaWN0KSwgYnV0IGluIHNvcnRlZCBvcmRlci4iCiAgICAgaXRlbXMgPSBzb3J0ZWQoZGljdC5pdGVtcygpKQpAQCAtNjk5LDcgKzc4NSw3IEBACiAgICAgZiA9IGNoZWNrX3ZhbGlkX2ZpbGUoZm4pCiAgICAgaWYgZiBpcyBub3QgTm9uZToKICAgICAgICAgcmV0dXJuIGYKLSAgICByYWlzZSBUZXN0RmFpbGVkKCdpbnZhbGlkIHJlc291cmNlICIlcyInICUgZm4pCisgICAgcmFpc2UgVGVzdEZhaWxlZCgnaW52YWxpZCByZXNvdXJjZSAlcicgJSBmbikKIAogCiBjbGFzcyBXYXJuaW5nc1JlY29yZGVyKG9iamVjdCk6CkBAIC04MjAsNyArOTA2LDcgQEAKICAgICAgICAgc3lzLm1vZHVsZXMudXBkYXRlKHNlbGYub3JpZ2luYWxfbW9kdWxlcykKIAogCi1jbGFzcyBFbnZpcm9ubWVudFZhckd1YXJkKGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nKToKK2NsYXNzIEVudmlyb25tZW50VmFyR3VhcmQoY29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nKToKIAogICAgICIiIkNsYXNzIHRvIGhlbHAgcHJvdGVjdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgcHJvcGVybHkuICBDYW4gYmUgdXNlZCBhcwogICAgIGEgY29udGV4dCBtYW5hZ2VyLiIiIgpAQCAtOTUxLDcgKzEwMzcsNyBAQAogICAgICAgICAoJ1dTQU5PX0RBVEEnLCAxMTAwNCksCiAgICAgXQogCi0gICAgZGVuaWVkID0gUmVzb3VyY2VEZW5pZWQoIlJlc291cmNlICclcycgaXMgbm90IGF2YWlsYWJsZSIgJSByZXNvdXJjZV9uYW1lKQorICAgIGRlbmllZCA9IFJlc291cmNlRGVuaWVkKCJSZXNvdXJjZSAlciBpcyBub3QgYXZhaWxhYmxlIiAlIHJlc291cmNlX25hbWUpCiAgICAgY2FwdHVyZWRfZXJybm9zID0gZXJybm9zCiAgICAgZ2FpX2Vycm5vcyA9IFtdCiAgICAgaWYgbm90IGNhcHR1cmVkX2Vycm5vczoKQEAgLTEwNDAsNiArMTEyNiwxNiBAQAogICAgIGdjLmNvbGxlY3QoKQogICAgIGdjLmNvbGxlY3QoKQogCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIGRpc2FibGVfZ2MoKToKKyAgICBoYXZlX2djID0gZ2MuaXNlbmFibGVkKCkKKyAgICBnYy5kaXNhYmxlKCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgaWYgaGF2ZV9nYzoKKyAgICAgICAgICAgIGdjLmVuYWJsZSgpCisKIAogZGVmIHB5dGhvbl9pc19vcHRpbWl6ZWQoKToKICAgICAiIiJGaW5kIGlmIFB5dGhvbiB3YXMgYnVpbHQgd2l0aCBvcHRpbWl6YXRpb25zLiIiIgpAQCAtMTA0OCwxOSArMTE0NCwyMSBAQAogICAgIGZvciBvcHQgaW4gY2ZsYWdzLnNwbGl0KCk6CiAgICAgICAgIGlmIG9wdC5zdGFydHN3aXRoKCctTycpOgogICAgICAgICAgICAgZmluYWxfb3B0ID0gb3B0Ci0gICAgcmV0dXJuIGZpbmFsX29wdCBhbmQgZmluYWxfb3B0ICE9ICctTzAnCisgICAgcmV0dXJuIGZpbmFsX29wdCAhPSAnJyBhbmQgZmluYWxfb3B0ICE9ICctTzAnCiAKIAotX2hlYWRlciA9ICcyUCcKK19oZWFkZXIgPSAnblAnCitfYWxpZ24gPSAnMG4nCiBpZiBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKICAgICBfaGVhZGVyID0gJzJQJyArIF9oZWFkZXIKLV92aGVhZGVyID0gX2hlYWRlciArICdQJworICAgIF9hbGlnbiA9ICcwUCcKK192aGVhZGVyID0gX2hlYWRlciArICduJwogCiBkZWYgY2FsY29ianNpemUoZm10KToKLSAgICByZXR1cm4gc3RydWN0LmNhbGNzaXplKF9oZWFkZXIgKyBmbXQgKyAnMFAnKQorICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX2hlYWRlciArIGZtdCArIF9hbGlnbikKIAogZGVmIGNhbGN2b2Jqc2l6ZShmbXQpOgotICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX3ZoZWFkZXIgKyBmbXQgKyAnMFAnKQorICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX3ZoZWFkZXIgKyBmbXQgKyBfYWxpZ24pCiAKIAogX1RQRkxBR1NfSEFWRV9HQyA9IDE8PDE0CkBAIC0xMTc5LDQxICsxMjc3LDM1IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ01lbW9yeSBsaW1pdCAlciB0b28gbG93IHRvIGJlIHVzZWZ1bCcgJSAobGltaXQsKSkKICAgICBtYXhfbWVtdXNlID0gbWVtbGltaXQKIAotZGVmIF9tZW1vcnlfd2F0Y2hkb2coc3RhcnRfZXZ0LCBmaW5pc2hfZXZ0LCBwZXJpb2Q9MTAuMCk6Ci0gICAgIiIiQSBmdW5jdGlvbiB3aGljaCBwZXJpb2RpY2FsbHkgd2F0Y2hlcyB0aGUgcHJvY2VzcycgbWVtb3J5IGNvbnN1bXB0aW9uCitjbGFzcyBfTWVtb3J5V2F0Y2hkb2c6CisgICAgIiIiQW4gb2JqZWN0IHdoaWNoIHBlcmlvZGljYWxseSB3YXRjaGVzIHRoZSBwcm9jZXNzJyBtZW1vcnkgY29uc3VtcHRpb24KICAgICBhbmQgcHJpbnRzIGl0IG91dC4KICAgICAiIiIKLSAgICAjIFhYWDogYmVjYXVzZSBvZiB0aGUgR0lMLCBhbmQgYmVjYXVzZSB0aGUgdmVyeSBsb25nIG9wZXJhdGlvbnMgdGVzdGVkCi0gICAgIyBpbiBtb3N0IGJpZ21lbSB0ZXN0cyBhcmUgdW5pbnRlcnJ1cHRpYmxlLCB0aGUgbG9vcCBiZWxvdyBnZXRzIHdva2VuIHVwCi0gICAgIyBtdWNoIGxlc3Mgb2Z0ZW4gdGhhbiBleHBlY3RlZC4KLSAgICAjIFRoZSBwb2xsaW5nIGNvZGUgc2hvdWxkIGJlIHJld3JpdHRlbiBpbiByYXcgQywgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwsCi0gICAgIyBhbmQgcHVzaCByZXN1bHRzIG9udG8gYW4gYW5vbnltb3VzIHBpcGUuCi0gICAgdHJ5OgotICAgICAgICBwYWdlX3NpemUgPSBvcy5zeXNjb25mKCdTQ19QQUdFU0laRScpCi0gICAgZXhjZXB0IChWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYucHJvY2ZpbGUgPSAnL3Byb2Mve3BpZH0vc3RhdG0nLmZvcm1hdChwaWQ9b3MuZ2V0cGlkKCkpCisgICAgICAgIHNlbGYuc3RhcnRlZCA9IEZhbHNlCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHBhZ2Vfc2l6ZSA9IG9zLnN5c2NvbmYoJ1NDX1BBR0VfU0laRScpCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgotICAgICAgICAgICAgcGFnZV9zaXplID0gNDA5NgotICAgIHByb2NmaWxlID0gJy9wcm9jL3twaWR9L3N0YXRtJy5mb3JtYXQocGlkPW9zLmdldHBpZCgpKQotICAgIHRyeToKLSAgICAgICAgZiA9IG9wZW4ocHJvY2ZpbGUsICdyYicpCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgd2FybmluZ3Mud2FybignL3Byb2Mgbm90IGF2YWlsYWJsZSBmb3Igc3RhdHM6IHt9Jy5mb3JtYXQoZSksCi0gICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICByZXR1cm4KLSAgICB3aXRoIGY6Ci0gICAgICAgIHN0YXJ0X2V2dC5zZXQoKQotICAgICAgICBvbGRfZGF0YSA9IC0xCi0gICAgICAgIHdoaWxlIG5vdCBmaW5pc2hfZXZ0LndhaXQocGVyaW9kKToKLSAgICAgICAgICAgIGYuc2VlaygwKQotICAgICAgICAgICAgc3RhdG0gPSBmLnJlYWQoKS5kZWNvZGUoJ2FzY2lpJykKLSAgICAgICAgICAgIGRhdGEgPSBpbnQoc3RhdG0uc3BsaXQoKVs1XSkKLSAgICAgICAgICAgIGlmIGRhdGEgIT0gb2xkX2RhdGE6Ci0gICAgICAgICAgICAgICAgb2xkX2RhdGEgPSBkYXRhCi0gICAgICAgICAgICAgICAgcHJpbnQoIiAuLi4gcHJvY2VzcyBkYXRhIHNpemU6IHtkYXRhOi4xZn1HIgotICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGRhdGE9ZGF0YSAqIHBhZ2Vfc2l6ZSAvICgxMDI0ICoqIDMpKSkKKyAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYucHJvY2ZpbGUsICdyJykKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJy9wcm9jIG5vdCBhdmFpbGFibGUgZm9yIHN0YXRzOiB7fScuZm9ybWF0KGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKKyAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgd2F0Y2hkb2dfc2NyaXB0ID0gZmluZGZpbGUoIm1lbW9yeV93YXRjaGRvZy5weSIpCisgICAgICAgIHNlbGYubWVtX3dhdGNoZG9nID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsIHdhdGNoZG9nX3NjcmlwdF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1mLCBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5zdGFydGVkID0gVHJ1ZQorCisgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc3RhcnRlZDoKKyAgICAgICAgICAgIHNlbGYubWVtX3dhdGNoZG9nLnRlcm1pbmF0ZSgpCisgICAgICAgICAgICBzZWxmLm1lbV93YXRjaGRvZy53YWl0KCkKKwogCiBkZWYgYmlnbWVtdGVzdChzaXplLCBtZW11c2UsIGRyeV9ydW49VHJ1ZSk6CiAgICAgIiIiRGVjb3JhdG9yIGZvciBiaWdtZW0gdGVzdHMuCkBAIC0xMjQwLDI3ICsxMzMyLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICJub3QgZW5vdWdoIG1lbW9yeTogJS4xZkcgbWluaW11bSBuZWVkZWQiCiAgICAgICAgICAgICAgICAgICAgICUgKHNpemUgKiBtZW11c2UgLyAoMTAyNCAqKiAzKSkpCiAKLSAgICAgICAgICAgIGlmIHJlYWxfbWF4X21lbXVzZSBhbmQgdmVyYm9zZSBhbmQgdGhyZWFkaW5nOgorICAgICAgICAgICAgaWYgcmVhbF9tYXhfbWVtdXNlIGFuZCB2ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgICAgICBwcmludCgiIC4uLiBleHBlY3RlZCBwZWFrIG1lbW9yeSB1c2U6IHtwZWFrOi4xZn1HIgogICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQocGVhaz1zaXplICogbWVtdXNlIC8gKDEwMjQgKiogMykpKQotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICAgICAgICAgIHN0YXJ0X2V2dCA9IHRocmVhZGluZy5FdmVudCgpCi0gICAgICAgICAgICAgICAgZmluaXNoX2V2dCA9IHRocmVhZGluZy5FdmVudCgpCi0gICAgICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV9tZW1vcnlfd2F0Y2hkb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc3RhcnRfZXZ0LCBmaW5pc2hfZXZ0LCAwLjUpKQotICAgICAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQotICAgICAgICAgICAgICAgIHQuc3RhcnQoKQotICAgICAgICAgICAgICAgIHN0YXJ0X2V2dC5zZXQoKQorICAgICAgICAgICAgICAgIHdhdGNoZG9nID0gX01lbW9yeVdhdGNoZG9nKCkKKyAgICAgICAgICAgICAgICB3YXRjaGRvZy5zdGFydCgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHQgPSBOb25lCisgICAgICAgICAgICAgICAgd2F0Y2hkb2cgPSBOb25lCiAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXR1cm4gZihzZWxmLCBtYXhzaXplKQogICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBpZiB0OgotICAgICAgICAgICAgICAgICAgICBmaW5pc2hfZXZ0LnNldCgpCi0gICAgICAgICAgICAgICAgICAgIHQuam9pbigpCisgICAgICAgICAgICAgICAgaWYgd2F0Y2hkb2c6CisgICAgICAgICAgICAgICAgICAgIHdhdGNoZG9nLnN0b3AoKQogCiAgICAgICAgIHdyYXBwZXIuc2l6ZSA9IHNpemUKICAgICAgICAgd3JhcHBlci5tZW11c2UgPSBtZW11c2UKQEAgLTEzNDIsNiArMTQyNywzMyBAQAogICAgIHJldHVybiBndWFyZHMuZ2V0KHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLmxvd2VyKCksIGRlZmF1bHQpCiAKIAorZGVmIG5vX3RyYWNpbmcoZnVuYyk6CisgICAgIiIiRGVjb3JhdG9yIHRvIHRlbXBvcmFyaWx5IHR1cm4gb2ZmIHRyYWNpbmcgZm9yIHRoZSBkdXJhdGlvbiBvZiBhIHRlc3QuIiIiCisgICAgaWYgbm90IGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKToKKyAgICAgICAgcmV0dXJuIGZ1bmMKKyAgICBlbHNlOgorICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBvcmlnaW5hbF90cmFjZSA9IHN5cy5nZXR0cmFjZSgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzeXMuc2V0dHJhY2Uob3JpZ2luYWxfdHJhY2UpCisgICAgICAgIHJldHVybiB3cmFwcGVyCisKKworZGVmIHJlZmNvdW50X3Rlc3QodGVzdCk6CisgICAgIiIiRGVjb3JhdG9yIGZvciB0ZXN0cyB3aGljaCBpbnZvbHZlIHJlZmVyZW5jZSBjb3VudGluZy4KKworICAgIFRvIHN0YXJ0LCB0aGUgZGVjb3JhdG9yIGRvZXMgbm90IHJ1biB0aGUgdGVzdCBpZiBpcyBub3QgcnVuIGJ5IENQeXRob24uCisgICAgQWZ0ZXIgdGhhdCwgYW55IHRyYWNlIGZ1bmN0aW9uIGlzIHVuc2V0IGR1cmluZyB0aGUgdGVzdCB0byBwcmV2ZW50CisgICAgdW5leHBlY3RlZCByZWZjb3VudHMgY2F1c2VkIGJ5IHRoZSB0cmFjZSBmdW5jdGlvbi4KKworICAgICIiIgorICAgIHJldHVybiBub190cmFjaW5nKGNweXRob25fb25seSh0ZXN0KSkKKworCiBkZWYgX2ZpbHRlcl9zdWl0ZShzdWl0ZSwgcHJlZCk6CiAgICAgIiIiUmVjdXJzaXZlbHkgZmlsdGVyIHRlc3QgY2FzZXMgaW4gYSBzdWl0ZSBiYXNlZCBvbiBhIHByZWRpY2F0ZS4iIiIKICAgICBuZXd0ZXN0cyA9IFtdCkBAIC0xMzU0LDcgKzE0NjYsNiBAQAogICAgICAgICAgICAgICAgIG5ld3Rlc3RzLmFwcGVuZCh0ZXN0KQogICAgIHN1aXRlLl90ZXN0cyA9IG5ld3Rlc3RzCiAKLQogZGVmIF9ydW5fc3VpdGUoc3VpdGUpOgogICAgICIiIlJ1biB0ZXN0cyBmcm9tIGEgdW5pdHRlc3QuVGVzdFN1aXRlLWRlcml2ZWQgY2xhc3MuIiIiCiAgICAgaWYgdmVyYm9zZToKQEAgLTE0MDMsNyArMTUxNCw3IEBACiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgZG9jdGVzdCBkcml2ZXIuCiAKLWRlZiBydW5fZG9jdGVzdChtb2R1bGUsIHZlcmJvc2l0eT1Ob25lKToKK2RlZiBydW5fZG9jdGVzdChtb2R1bGUsIHZlcmJvc2l0eT1Ob25lLCBvcHRpb25mbGFncz0wKToKICAgICAiIiJSdW4gZG9jdGVzdCBvbiB0aGUgZ2l2ZW4gbW9kdWxlLiAgUmV0dXJuICgjZmFpbHVyZXMsICN0ZXN0cykuCiAKICAgICBJZiBvcHRpb25hbCBhcmd1bWVudCB2ZXJib3NpdHkgaXMgbm90IHNwZWNpZmllZCAob3IgaXMgTm9uZSksIHBhc3MKQEAgLTE0MTgsNyArMTUyOSw3IEBACiAgICAgZWxzZToKICAgICAgICAgdmVyYm9zaXR5ID0gTm9uZQogCi0gICAgZiwgdCA9IGRvY3Rlc3QudGVzdG1vZChtb2R1bGUsIHZlcmJvc2U9dmVyYm9zaXR5KQorICAgIGYsIHQgPSBkb2N0ZXN0LnRlc3Rtb2QobW9kdWxlLCB2ZXJib3NlPXZlcmJvc2l0eSwgb3B0aW9uZmxhZ3M9b3B0aW9uZmxhZ3MpCiAgICAgaWYgZjoKICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgiJWQgb2YgJWQgZG9jdGVzdHMgZmFpbGVkIiAlIChmLCB0KSkKICAgICBpZiB2ZXJib3NlOgpAQCAtMTU3NiwyOCArMTY4NywxMyBAQAogICAgIFRoaXMgd2lsbCB0eXBpY2FsbHkgYmUgcnVuIG9uIHRoZSByZXN1bHQgb2YgdGhlIGNvbW11bmljYXRlKCkgbWV0aG9kCiAgICAgb2YgYSBzdWJwcm9jZXNzLlBvcGVuIG9iamVjdC4KICAgICAiIiIKLSAgICBzdGRlcnIgPSByZS5zdWIoYnIiXFtcZCsgcmVmc1xdXHI/XG4/JCIsIGIiIiwgc3RkZXJyKS5zdHJpcCgpCisgICAgc3RkZXJyID0gcmUuc3ViKGJyIlxbXGQrIHJlZnNcXVxyP1xuPyIsIGIiIiwgc3RkZXJyKS5zdHJpcCgpCiAgICAgcmV0dXJuIHN0ZGVycgogCiBkZWYgYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50Ci0gICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzLiIiIgotICAgIGZsYWdfb3B0X21hcCA9IHsKLSAgICAgICAgJ2J5dGVzX3dhcm5pbmcnOiAnYicsCi0gICAgICAgICdkb250X3dyaXRlX2J5dGVjb2RlJzogJ0InLAotICAgICAgICAnaGFzaF9yYW5kb21pemF0aW9uJzogJ1InLAotICAgICAgICAnaWdub3JlX2Vudmlyb25tZW50JzogJ0UnLAotICAgICAgICAnbm9fdXNlcl9zaXRlJzogJ3MnLAotICAgICAgICAnbm9fc2l0ZSc6ICdTJywKLSAgICAgICAgJ29wdGltaXplJzogJ08nLAotICAgICAgICAndmVyYm9zZSc6ICd2JywKLSAgICB9Ci0gICAgYXJncyA9IFtdCi0gICAgZm9yIGZsYWcsIG9wdCBpbiBmbGFnX29wdF9tYXAuaXRlbXMoKToKLSAgICAgICAgdiA9IGdldGF0dHIoc3lzLmZsYWdzLCBmbGFnKQotICAgICAgICBpZiB2ID4gMDoKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctJyArIG9wdCAqIHYpCi0gICAgcmV0dXJuIGFyZ3MKKyAgICBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MgYW5kIHN5cy53YXJub3B0aW9ucy4iIiIKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKIAogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBTdXBwb3J0IGZvciBhc3NlcnRpb25zIGFib3V0IGxvZ2dpbmcuCkBAIC0xNjg3LDYgKzE3ODMsNDAgQEAKICAgICBtc2cgPSAiUmVxdWlyZXMgZnVuY3Rpb25hbCBzeW1saW5rIGltcGxlbWVudGF0aW9uIgogICAgIHJldHVybiB0ZXN0IGlmIG9rIGVsc2UgdW5pdHRlc3Quc2tpcChtc2cpKHRlc3QpCiAKK19jYW5feGF0dHIgPSBOb25lCitkZWYgY2FuX3hhdHRyKCk6CisgICAgZ2xvYmFsIF9jYW5feGF0dHIKKyAgICBpZiBfY2FuX3hhdHRyIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gX2Nhbl94YXR0cgorICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic2V0eGF0dHIiKToKKyAgICAgICAgY2FuID0gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICB0bXBfZnAsIHRtcF9uYW1lID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBURVNURk4gJiB0ZW1wZmlsZSBtYXkgdXNlIGRpZmZlcmVudCBmaWxlIHN5c3RlbXMgd2l0aAorICAgICAgICAgICAgICAgICAgICAjIGRpZmZlcmVudCBjYXBhYmlsaXRpZXMKKyAgICAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIodG1wX2ZwLCBiInVzZXIudGVzdCIsIGIiIikKKyAgICAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZnAuZmlsZW5vKCksIGIidXNlci50ZXN0IiwgYiIiKQorICAgICAgICAgICAgICAgICAgICAjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KKyAgICAgICAgICAgICAgICAgICAga2VybmVsX3ZlcnNpb24gPSBwbGF0Zm9ybS5yZWxlYXNlKCkKKyAgICAgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgIGNhbiA9IG0gaXMgTm9uZSBvciBpbnQobS5ncm91cCgxKSkgPj0gMzkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY2FuID0gRmFsc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHVubGluayhURVNURk4pCisgICAgICAgICAgICB1bmxpbmsodG1wX25hbWUpCisgICAgX2Nhbl94YXR0ciA9IGNhbgorICAgIHJldHVybiBjYW4KKworZGVmIHNraXBfdW5sZXNzX3hhdHRyKHRlc3QpOgorICAgICIiIlNraXAgZGVjb3JhdG9yIGZvciB0ZXN0cyB0aGF0IHJlcXVpcmUgZnVuY3Rpb25hbCBleHRlbmRlZCBhdHRyaWJ1dGVzIiIiCisgICAgb2sgPSBjYW5feGF0dHIoKQorICAgIG1zZyA9ICJubyBub24tYnJva2VuIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdXBwb3J0IgorICAgIHJldHVybiB0ZXN0IGlmIG9rIGVsc2UgdW5pdHRlc3Quc2tpcChtc2cpKHRlc3QpCisKIGRlZiBwYXRjaCh0ZXN0X2luc3RhbmNlLCBvYmplY3RfdG9fcGF0Y2gsIGF0dHJfbmFtZSwgbmV3X3ZhbHVlKToKICAgICAiIiJPdmVycmlkZSAnb2JqZWN0X3RvX3BhdGNoJy4nYXR0cl9uYW1lJyB3aXRoICduZXdfdmFsdWUnLgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkgYi9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKaW5kZXggM2ZhZGI1Ny4uNDIzMWYzNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQpAQCAtMSwyMyArMSwyNSBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogZnJvbSBfbG9jYWxlIGltcG9ydCAoc2V0bG9jYWxlLCBMQ19BTEwsIExDX0NUWVBFLCBMQ19OVU1FUklDLCBsb2NhbGVjb252LCBFcnJvcikKIHRyeToKICAgICBmcm9tIF9sb2NhbGUgaW1wb3J0IChSQURJWENIQVIsIFRIT1VTRVAsIG5sX2xhbmdpbmZvKQogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIG5sX2xhbmdpbmZvID0gTm9uZQogCi1pbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAogZnJvbSBwbGF0Zm9ybSBpbXBvcnQgdW5hbWUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAotaWYgdW5hbWUoKVswXSA9PSAiRGFyd2luIjoKLSAgICBtYWosIG1pbiwgbWljID0gW2ludChwYXJ0KSBmb3IgcGFydCBpbiB1bmFtZSgpWzJdLnNwbGl0KCIuIildCitpZiB1bmFtZSgpLnN5c3RlbSA9PSAiRGFyd2luIjoKKyAgICBtYWosIG1pbiwgbWljID0gW2ludChwYXJ0KSBmb3IgcGFydCBpbiB1bmFtZSgpLnJlbGVhc2Uuc3BsaXQoIi4iKV0KICAgICBpZiAobWFqLCBtaW4sIG1pYykgPCAoOCwgMCwgMCk6CiAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJsb2NhbGUgc3VwcG9ydCBicm9rZW4gZm9yIE9TIFggPCAxMC40IikKIAogY2FuZGlkYXRlX2xvY2FsZXMgPSBbJ2VzX1VZJywgJ2ZyX0ZSJywgJ2ZpX0ZJJywgJ2VzX0NPJywgJ3B0X1BUJywgJ2l0X0lUJywKICAgICAnZXRfRUUnLCAnZXNfUFknLCAnbm9fTk8nLCAnbmxfTkwnLCAnbHZfTFYnLCAnZWxfR1InLCAnYmVfQlknLCAnZnJfQkUnLAogICAgICdyb19STycsICdydV9VQScsICdydV9SVScsICdlc19WRScsICdjYV9FUycsICdzZV9OTycsICdlc19FQycsICdpZF9JRCcsCi0gICAgJ2thX0dFJywgJ2VzX0NMJywgJ2h1X0hVJywgJ3dhX0JFJywgJ2x0X0xUJywgJ3NsX1NJJywgJ2hyX0hSJywgJ2VzX0FSJywKKyAgICAna2FfR0UnLCAnZXNfQ0wnLCAnd2FfQkUnLCAnaHVfSFUnLCAnbHRfTFQnLCAnc2xfU0knLCAnaHJfSFInLCAnZXNfQVInLAogICAgICdlc19FUycsICdvY19GUicsICdnbF9FUycsICdiZ19CRycsICdpc19JUycsICdta19NSycsICdkZV9BVCcsICdwdF9CUicsCiAgICAgJ2RhX0RLJywgJ25uX05PJywgJ2NzX0NaJywgJ2RlX0xVJywgJ2VzX0JPJywgJ3NxX0FMJywgJ3NrX1NLJywgJ2ZyX0NIJywKICAgICAnZGVfREUnLCAnc3JfWVUnLCAnYnJfRlInLCAnbmxfQkUnLCAnc3ZfRkknLCAncGxfUEwnLCAnZnJfQ0EnLCAnZm9fRk8nLApAQCAtMjUsNiArMjcsMzEgQEAKICAgICAnZXVfRVMnLCAndmlfVk4nLCAnYWZfWkEnLCAnbmJfTk8nLCAnZW5fREsnLCAndGdfVEonLCAnZW5fVVMnLAogICAgICdlc19FUy5JU084ODU5LTEnLCAnZnJfRlIuSVNPODg1OS0xNScsICdydV9SVS5LT0k4LVInLCAna29fS1IuZXVjS1InXQogCisjIElzc3VlICMxMzQ0MTogU2tpcCBzb21lIGxvY2FsZXMgKGUuZy4gY3NfQ1ogYW5kIGh1X0hVKSBvbiBTb2xhcmlzIHRvCisjIHdvcmthcm91bmQgYSBtYnN0b3djcygpIGJ1Zy4gRm9yIGV4YW1wbGUsIG9uIFNvbGFyaXMsIHRoZSBodV9IVSBsb2NhbGUgdXNlcworIyB0aGUgbG9jYWxlIGVuY29kaW5nIElTTy04ODU5LTIsIHRoZSB0aG91c2F1ZHMgc2VwYXJhdG9yIGlzIGInXHhBMCcgYW5kIGl0IGlzCisjIGRlY29kZWQgYXMgVSszMDAwMDAyMCAoYW4gaW52YWxpZCBjaGFyYWN0ZXIpIGJ5IG1ic3Rvd2NzKCkuCitpZiBzeXMucGxhdGZvcm0gPT0gJ3N1bm9zNSc6CisgICAgb2xkX2xvY2FsZSA9IGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCkKKyAgICB0cnk6CisgICAgICAgIGxvY2FsZXMgPSBbXQorICAgICAgICBmb3IgbG9jIGluIGNhbmRpZGF0ZV9sb2NhbGVzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgbG9jKQorICAgICAgICAgICAgZXhjZXB0IEVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsb2NhbGVjb252KCkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgICAgIHByaW50KCJXQVJOSU5HOiBTa2lwIGxvY2FsZSAlcyAoZW5jb2RpbmcgJXMpOiBbJXNdICVzIgorICAgICAgICAgICAgICAgICAgICAgICUgKGxvYywgZW5jb2RpbmcsIHR5cGUoZXJyKSwgZXJyKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9jYWxlcy5hcHBlbmQobG9jKQorICAgICAgICBjYW5kaWRhdGVfbG9jYWxlcyA9IGxvY2FsZXMKKyAgICBmaW5hbGx5OgorICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwsIG9sZF9sb2NhbGUpCisKICMgV29ya2Fyb3VuZCBmb3IgTVNWQzYoZGVidWcpIGNyYXNoIGJ1ZwogaWYgIk1TQyB2LjEyMDAiIGluIHN5cy52ZXJzaW9uOgogICAgIGRlZiBhY2NlcHQobG9jKToKQEAgLTg2LDkgKzExMywxMCBAQAogICAgICAgICAgICAgICAgIHNldGxvY2FsZShMQ19DVFlQRSwgbG9jKQogICAgICAgICAgICAgZXhjZXB0IEVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmb3JtYXR0aW5nID0gbG9jYWxlY29udigpCiAgICAgICAgICAgICBmb3IgbGMgaW4gKCJkZWNpbWFsX3BvaW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJ0aG91c2FuZHNfc2VwIik6Ci0gICAgICAgICAgICAgICAgc2VsZi5udW1lcmljX3Rlc3RlcignbG9jYWxlY29udicsIGxvY2FsZWNvbnYoKVtsY10sIGxjLCBsb2MpCisgICAgICAgICAgICAgICAgc2VsZi5udW1lcmljX3Rlc3RlcignbG9jYWxlY29udicsIGZvcm1hdHRpbmdbbGNdLCBsYywgbG9jKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MobmxfbGFuZ2luZm8sICJubF9sYW5naW5mbyBpcyBub3QgYXZhaWxhYmxlIikKICAgICBkZWYgdGVzdF9sY19udW1lcmljX2Jhc2ljKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjE1OWVjCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkKQEAgLTAsMCArMSwyNzkgQEAKKyIiIgorVGVzdCBzdWl0ZSBmb3IgX29zeF9zdXBwb3J0OiBzaGFyZWQgT1MgWCBzdXBwb3J0IGZ1bmN0aW9ucy4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN0YXQKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgdGVzdC5zdXBwb3J0CisKK2ltcG9ydCBfb3N4X3N1cHBvcnQKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImRhcndpbiIpLCAicmVxdWlyZXMgT1MgWCIpCitjbGFzcyBUZXN0X09TWFN1cHBvcnQodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYucHJvZ19uYW1lID0gJ2JvZ3VzX3Byb2dyYW1feHh4eCcKKyAgICAgICAgc2VsZi50ZW1wX3BhdGhfZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLmdldGN3ZCgpKQorICAgICAgICBzZWxmLmVudiA9IHRlc3Quc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuZW52Ll9fZXhpdF9fKQorICAgICAgICBmb3IgY3YgaW4gKCdDRkxBR1MnLCAnTERGTEFHUycsICdDUFBGTEFHUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JBU0VDRkxBR1MnLCAnQkxEU0hBUkVEJywgJ0xEU0hBUkVEJywgJ0NDJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ1hYJywgJ1BZX0NGTEFHUycsICdQWV9MREZMQUdTJywgJ1BZX0NQUEZMQUdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFlfQ09SRV9DRkxBR1MnKToKKyAgICAgICAgICAgIGlmIGN2IGluIHNlbGYuZW52OgorICAgICAgICAgICAgICAgIHNlbGYuZW52LnVuc2V0KGN2KQorCisgICAgZGVmIGFkZF9leHBlY3RlZF9zYXZlZF9pbml0aWFsX3ZhbHVlcyhzZWxmLCBjb25maWdfdmFycywgZXhwZWN0ZWRfdmFycyk6CisgICAgICAgICMgRW5zdXJlIHRoYXQgdGhlIGluaXRpYWwgdmFsdWVzIGZvciBhbGwgbW9kaWZpZWQgY29uZmlnIHZhcnMKKyAgICAgICAgIyBhcmUgYWxzbyBzYXZlZCB3aXRoIG1vZGlmaWVkIGtleXMuCisgICAgICAgIGV4cGVjdGVkX3ZhcnMudXBkYXRlKCgnX09TWF9TVVBQT1JUX0lOSVRJQUxfJysgaywKKyAgICAgICAgICAgICAgICBjb25maWdfdmFyc1trXSkgZm9yIGsgaW4gY29uZmlnX3ZhcnMKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uZmlnX3ZhcnNba10gIT0gZXhwZWN0ZWRfdmFyc1trXSkKKworICAgIGRlZiB0ZXN0X19maW5kX2V4ZWN1dGFibGUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuZW52WydQQVRIJ106CisgICAgICAgICAgICBzZWxmLmVudlsnUEFUSCddID0gc2VsZi5lbnZbJ1BBVEgnXSArICc6JworICAgICAgICBzZWxmLmVudlsnUEFUSCddID0gc2VsZi5lbnZbJ1BBVEgnXSArIG9zLnBhdGguYWJzcGF0aChzZWxmLnRlbXBfcGF0aF9kaXIpCisgICAgICAgIHRlc3Quc3VwcG9ydC51bmxpbmsoc2VsZi5wcm9nX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKF9vc3hfc3VwcG9ydC5fZmluZF9leGVjdXRhYmxlKHNlbGYucHJvZ19uYW1lKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIHNlbGYucHJvZ19uYW1lKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5wcm9nX25hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIiMhL2Jpbi9zaFxuL2Jpbi9lY2hvIE9LXG4iKQorICAgICAgICBvcy5jaG1vZChzZWxmLnByb2dfbmFtZSwgc3RhdC5TX0lSV1hVKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvZ19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fZmluZF9leGVjdXRhYmxlKHNlbGYucHJvZ19uYW1lKSkKKworICAgIGRlZiB0ZXN0X19yZWFkX291dHB1dChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5lbnZbJ1BBVEgnXToKKyAgICAgICAgICAgIHNlbGYuZW52WydQQVRIJ10gPSBzZWxmLmVudlsnUEFUSCddICsgJzonCisgICAgICAgIHNlbGYuZW52WydQQVRIJ10gPSBzZWxmLmVudlsnUEFUSCddICsgb3MucGF0aC5hYnNwYXRoKHNlbGYudGVtcF9wYXRoX2RpcikKKyAgICAgICAgdGVzdC5zdXBwb3J0LnVubGluayhzZWxmLnByb2dfbmFtZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIHNlbGYucHJvZ19uYW1lKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5wcm9nX25hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIiMhL2Jpbi9zaFxuL2Jpbi9lY2hvIEV4cGVjdGVkT3V0cHV0XG4iKQorICAgICAgICBvcy5jaG1vZChzZWxmLnByb2dfbmFtZSwgc3RhdC5TX0lSV1hVKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdFeHBlY3RlZE91dHB1dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9yZWFkX291dHB1dChzZWxmLnByb2dfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9fZmluZF9idWlsZF90b29sKHNlbGYpOgorICAgICAgICBvdXQgPSBfb3N4X3N1cHBvcnQuX2ZpbmRfYnVpbGRfdG9vbCgnY2MnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3V0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2Mgbm90IGZvdW5kIC0gY2hlY2sgeGNvZGUtc2VsZWN0JykKKworICAgIGRlZiB0ZXN0X19nZXRfc3lzdGVtX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwbGF0Zm9ybS5tYWNfdmVyKClbMF0uc3RhcnRzd2l0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fZ2V0X3N5c3RlbV92ZXJzaW9uKCkpKQorCisgICAgZGVmIHRlc3RfX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoc2VsZik6CisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnZ2NjLXRlc3QgLXB0aHJlYWRzJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcgLXB0aHJlYWRzJywKKyAgICAgICAgfQorICAgICAgICBjdiA9ICdDQycKKyAgICAgICAgbmV3dmFsdWUgPSAnY2xhbmcgLXB0aHJlYWRzJworICAgICAgICBfb3N4X3N1cHBvcnQuX3NhdmVfbW9kaWZpZWRfdmFsdWUoY29uZmlnX3ZhcnMsIGN2LCBuZXd2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleHBlY3RlZF92YXJzLCBjb25maWdfdmFycykKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGNvbmZpZ192YXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsIGNvbmZpZ192YXJzKQorCisgICAgZGVmIHRlc3RfX3NhdmVfbW9kaWZpZWRfdmFsdWUoc2VsZik6CisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnZ2NjLXRlc3QgLXB0aHJlYWRzJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcgLXB0aHJlYWRzJywKKyAgICAgICAgfQorICAgICAgICBzZWxmLmFkZF9leHBlY3RlZF9zYXZlZF9pbml0aWFsX3ZhbHVlcyhjb25maWdfdmFycywgZXhwZWN0ZWRfdmFycykKKyAgICAgICAgY3YgPSAnQ0MnCisgICAgICAgIG5ld3ZhbHVlID0gJ2NsYW5nIC1wdGhyZWFkcycKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9zYXZlX21vZGlmaWVkX3ZhbHVlKGNvbmZpZ192YXJzLCBjdiwgbmV3dmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywgY29uZmlnX3ZhcnMpCisKKyAgICBkZWYgdGVzdF9fc2F2ZV9tb2RpZmllZF92YWx1ZV91bmNoYW5nZWQoc2VsZik6CisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnZ2NjLXRlc3QgLXB0aHJlYWRzJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0gY29uZmlnX3ZhcnMuY29weSgpCisgICAgICAgIGN2ID0gJ0NDJworICAgICAgICBuZXd2YWx1ZSA9ICdnY2MtdGVzdCAtcHRocmVhZHMnCisgICAgICAgIF9vc3hfc3VwcG9ydC5fc2F2ZV9tb2RpZmllZF92YWx1ZShjb25maWdfdmFycywgY3YsIG5ld3ZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsIGNvbmZpZ192YXJzKQorCisgICAgZGVmIHRlc3RfX3N1cHBvcnRzX3VuaXZlcnNhbF9idWlsZHMoc2VsZik6CisgICAgICAgIGltcG9ydCBwbGF0Zm9ybQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYXRmb3JtLm1hY192ZXIoKVswXS5zcGxpdCgnLicpID49IFsnMTAnLCAnNCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fc3VwcG9ydHNfdW5pdmVyc2FsX2J1aWxkcygpKQorCisgICAgZGVmIHRlc3RfX2ZpbmRfYXBwcm9wcmlhdGVfY29tcGlsZXIoc2VsZik6CisgICAgICAgIGNvbXBpbGVycyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICgnZ2NjLXRlc3QnLCAnaTY4Ni1hcHBsZS1kYXJ3aW4xMS1sbHZtLWdjYy00LjInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICgnY2xhbmcnLCAnY2xhbmcgdmVyc2lvbiAzLjEnKSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2djYy10ZXN0IC1wdGhyZWFkcycsCisgICAgICAgICdDWFgnOiAnY2MrKy10ZXN0JywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLXRlc3QgLWJ1bmRsZSAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtdGVzdCAtYnVuZGxlIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nIC1wdGhyZWFkcycsCisgICAgICAgICdDWFgnOiAnY2xhbmcrKycsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAtYXJjaCBwcGMgLWFyY2ggaTM4NiAgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnLWFyY2ggcHBjIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2NsYW5nIC1idW5kbGUgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnY2xhbmcgLWJ1bmRsZSAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgLWcnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorCisgICAgICAgIHN1ZmZpeCA9ICgnOicgKyBzZWxmLmVudlsnUEFUSCddKSBpZiBzZWxmLmVudlsnUEFUSCddIGVsc2UgJycKKyAgICAgICAgc2VsZi5lbnZbJ1BBVEgnXSA9IG9zLnBhdGguYWJzcGF0aChzZWxmLnRlbXBfcGF0aF9kaXIpICsgc3VmZml4CisgICAgICAgIGZvciBjX25hbWUsIGNfb3V0cHV0IGluIGNvbXBpbGVyczoKKyAgICAgICAgICAgIHRlc3Quc3VwcG9ydC51bmxpbmsoY19uYW1lKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIGNfbmFtZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihjX25hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCIjIS9iaW4vc2hcbi9iaW4vZWNobyAiICsgY19vdXRwdXQpCisgICAgICAgICAgICBvcy5jaG1vZChjX25hbWUsIHN0YXQuU19JUldYVSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fZmluZF9hcHByb3ByaWF0ZV9jb21waWxlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ192YXJzKSkKKworICAgIGRlZiB0ZXN0X19yZW1vdmVfdW5pdmVyc2FsX2ZsYWdzKHNlbGYpOgorICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IHsKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zICAgICcsCisgICAgICAgICdMREZMQUdTJzogJyAgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gICcsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAgIC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgICAgIC1nJywKKyAgICAgICAgfQorICAgICAgICBzZWxmLmFkZF9leHBlY3RlZF9zYXZlZF9pbml0aWFsX3ZhbHVlcyhjb25maWdfdmFycywgZXhwZWN0ZWRfdmFycykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfdW5pdmVyc2FsX2ZsYWdzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3ZhcnMpKQorCisgICAgZGVmIHRlc3RfX3JlbW92ZV91bnN1cHBvcnRlZF9hcmNocyhzZWxmKToKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZycsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAtYXJjaCBwcGMgLWFyY2ggaTM4NiAgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnLWFyY2ggcHBjIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgLWcnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZycsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAgLWFyY2ggaTM4NiAgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgLWcnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorCisgICAgICAgIHN1ZmZpeCA9ICgnOicgKyBzZWxmLmVudlsnUEFUSCddKSBpZiBzZWxmLmVudlsnUEFUSCddIGVsc2UgJycKKyAgICAgICAgc2VsZi5lbnZbJ1BBVEgnXSA9IG9zLnBhdGguYWJzcGF0aChzZWxmLnRlbXBfcGF0aF9kaXIpICsgc3VmZml4CisgICAgICAgIGNfbmFtZSA9ICdjbGFuZycKKyAgICAgICAgdGVzdC5zdXBwb3J0LnVubGluayhjX25hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0LnN1cHBvcnQudW5saW5rLCBjX25hbWUpCisgICAgICAgICMgZXhpdCBzdGF0dXMgMjU1IG1lYW5zIG5vIFBQQyBzdXBwb3J0IGluIHRoaXMgY29tcGlsZXIgY2hhaW4KKyAgICAgICAgd2l0aCBvcGVuKGNfbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiIyEvYmluL3NoXG5leGl0IDI1NSIpCisgICAgICAgIG9zLmNobW9kKGNfbmFtZSwgc3RhdC5TX0lSV1hVKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfdW5zdXBwb3J0ZWRfYXJjaHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfdmFycykpCisKKyAgICBkZWYgdGVzdF9fb3ZlcnJpZGVfYWxsX2FyY2hzKHNlbGYpOgorICAgICAgICBzZWxmLmVudlsnQVJDSEZMQUdTJ10gPSAnLWFyY2ggeDg2XzY0JworICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgLWFyY2ggcHBjIC1hcmNoIGkzODYgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIC1nJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgICAgIC1hcmNoIHg4Nl82NCcsCisgICAgICAgICdMREZMQUdTJzogJyAgICAtZyAtYXJjaCB4ODZfNjQnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgICAgLWcgLWFyY2ggeDg2XzY0JywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgIC1pc3lzcm9vdCAnCisgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZyAtYXJjaCB4ODZfNjQnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX292ZXJyaWRlX2FsbF9hcmNocygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ192YXJzKSkKKworICAgIGRlZiB0ZXN0X19jaGVja19mb3JfdW5hdmFpbGFibGVfc2RrKHNlbGYpOgorICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC4xLnNkaycsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuMS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC4xLnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnICcsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuICAnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnIC1nJywKKyAgICAgICAgfQorICAgICAgICBzZWxmLmFkZF9leHBlY3RlZF9zYXZlZF9pbml0aWFsX3ZhbHVlcyhjb25maWdfdmFycywgZXhwZWN0ZWRfdmFycykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9jaGVja19mb3JfdW5hdmFpbGFibGVfc2RrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3ZhcnMpKQorCisgICAgZGVmIHRlc3RfZ2V0X3BsYXRmb3JtX29zeChzZWxmKToKKyAgICAgICAgIyBOb3RlLCBnZXRfcGxhdGZvcm1fb3N4IGlzIGN1cnJlbnRseSB0ZXN0ZWQgbW9yZSBleHRlbnNpdmVseQorICAgICAgICAjIGluZGlyZWN0bHkgYnkgdGVzdF9zeXNjb25maWcgYW5kIHRlc3RfZGlzdHV0aWxzCisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjEuc2RrJywKKyAgICAgICAgJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCc6ICcxMC42JywKKyAgICAgICAgfQorICAgICAgICByZXN1bHQgPSBfb3N4X3N1cHBvcnQuZ2V0X3BsYXRmb3JtX29zeChjb25maWdfdmFycywgJyAnLCAnICcsICcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ21hY29zeCcsICcxMC42JywgJ2ZhdCcpLCByZXN1bHQpCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdF9PU1hTdXBwb3J0KQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FiYy5weSBiL0xpYi90ZXN0L3Rlc3RfYWJjLnB5CmluZGV4IGQ4NmY5N2MuLjY1M2M5NTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYWJjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYWJjLnB5CkBAIC0xMCwxNCArMTAsNyBAQAogZnJvbSBpbnNwZWN0IGltcG9ydCBpc2Fic3RyYWN0CiAKIAotY2xhc3MgVGVzdEFCQyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgdGVzdF9hYnN0cmFjdG1ldGhvZF9iYXNpY3Moc2VsZik6Ci0gICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKLSAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcwotICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQotICAgICAgICBkZWYgYmFyKHNlbGYpOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIpKQorY2xhc3MgVGVzdExlZ2FjeUFQSSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9hYnN0cmFjdHByb3BlcnR5X2Jhc2ljcyhzZWxmKToKICAgICAgICAgQGFiYy5hYnN0cmFjdHByb3BlcnR5CkBAIC0yOSwxMCArMjIsMTIgQEAKICAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogICAgICAgICAgICAgQGFiYy5hYnN0cmFjdHByb3BlcnR5CiAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCiAgICAgICAgIGNsYXNzIEQoQyk6CiAgICAgICAgICAgICBAcHJvcGVydHkKICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiBzdXBlcigpLmZvbwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoKS5mb28sIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihELmZvbywgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpKQogCiAgICAgZGVmIHRlc3RfYWJzdHJhY3RjbGFzc21ldGhvZF9iYXNpY3Moc2VsZik6CiAgICAgICAgIEBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZApAQCAtNDAsNyArMzUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQogICAgICAgICBAY2xhc3NtZXRob2QKICAgICAgICAgZGVmIGJhcihjbHMpOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCiAKICAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogICAgICAgICAgICAgQGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kCkBAIC01OCw3ICs1Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGJhcigpOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCiAKICAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogICAgICAgICAgICAgQGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZApAQCAtOTgsNiArOTMsMTYzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYpICAjIGJlY2F1c2UgYmFyIGlzIGFic3RyYWN0IG5vdwogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzYWJzdHJhY3QoRikpCiAKKworY2xhc3MgVGVzdEFCQyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdG1ldGhvZF9iYXNpY3Moc2VsZik6CisgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQorICAgICAgICBkZWYgYmFyKHNlbGYpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIpKQorCisgICAgZGVmIHRlc3RfYWJzdHJhY3Rwcm9wZXJ0eV9iYXNpY3Moc2VsZik6CisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgIGRlZiBmb28oc2VsZik6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKKyAgICAgICAgZGVmIGJhcihzZWxmKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCisKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAQy5mb28uZ2V0dGVyCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gc3VwZXIoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCkuZm9vLCAzKQorCisgICAgZGVmIHRlc3RfYWJzdHJhY3RjbGFzc21ldGhvZF9iYXNpY3Moc2VsZik6CisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgIGRlZiBmb28oY2xzKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQorICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIGJhcihjbHMpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKKworICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oY2xzKTogcmV0dXJuIGNscy5fX25hbWVfXworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oY2xzKTogcmV0dXJuIHN1cGVyKCkuZm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChELmZvbygpLCAnRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgpLmZvbygpLCAnRCcpCisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdHN0YXRpY21ldGhvZF9iYXNpY3Moc2VsZik6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpKQorCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oKTogcmV0dXJuIDMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDKQorICAgICAgICBjbGFzcyBEKEMpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGZvbygpOiByZXR1cm4gNAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQuZm9vKCksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgpLmZvbygpLCA0KQorCisgICAgZGVmIHRlc3RfYWJzdHJhY3RtZXRob2RfaW50ZWdyYXRpb24oc2VsZik6CisgICAgICAgIGZvciBhYnN0cmFjdHRoaW5nIGluIFthYmMuYWJzdHJhY3RtZXRob2QsIGFiYy5hYnN0cmFjdHByb3BlcnR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJjLmFic3RyYWN0Y2xhc3NtZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmMuYWJzdHJhY3RzdGF0aWNtZXRob2RdOgorICAgICAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgICAgIEBhYnN0cmFjdHRoaW5nCisgICAgICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcyAgIyBhYnN0cmFjdAorICAgICAgICAgICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MgICMgY29uY3JldGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Fic3RyYWN0bWV0aG9kc19fLCB7ImZvbyJ9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDKSAgIyBiZWNhdXNlIGZvbyBpcyBhYnN0cmFjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzYWJzdHJhY3QoQykpCisgICAgICAgICAgICBjbGFzcyBEKEMpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MgICMgY29uY3JldGUgb3ZlcnJpZGUgb2YgY29uY3JldGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRC5fX2Fic3RyYWN0bWV0aG9kc19fLCB7ImZvbyJ9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKSAgIyBiZWNhdXNlIGZvbyBpcyBzdGlsbCBhYnN0cmFjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzYWJzdHJhY3QoRCkpCisgICAgICAgICAgICBjbGFzcyBFKEQpOgorICAgICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHBhc3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRS5fX2Fic3RyYWN0bWV0aG9kc19fLCBzZXQoKSkKKyAgICAgICAgICAgIEUoKSAgIyBub3cgZm9vIGlzIGNvbmNyZXRlLCB0b28KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNhYnN0cmFjdChFKSkKKyAgICAgICAgICAgIGNsYXNzIEYoRSk6CisgICAgICAgICAgICAgICAgQGFic3RyYWN0dGhpbmcKKyAgICAgICAgICAgICAgICBkZWYgYmFyKHNlbGYpOiBwYXNzICAjIGFic3RyYWN0IG92ZXJyaWRlIG9mIGNvbmNyZXRlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEYuX19hYnN0cmFjdG1ldGhvZHNfXywgeyJiYXIifSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRikgICMgYmVjYXVzZSBiYXIgaXMgYWJzdHJhY3Qgbm93CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNhYnN0cmFjdChGKSkKKworICAgIGRlZiB0ZXN0X2Rlc2NyaXB0b3JzX3dpdGhfYWJzdHJhY3RtZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIDMKKyAgICAgICAgICAgIEBmb28uc2V0dGVyCisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIHZhbCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDKQorICAgICAgICBjbGFzcyBEKEMpOgorICAgICAgICAgICAgQEMuZm9vLmdldHRlcgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIHN1cGVyKCkuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCkKKyAgICAgICAgY2xhc3MgRShEKToKKyAgICAgICAgICAgIEBELmZvby5zZXR0ZXIKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgdmFsKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEUoKS5mb28sIDMpCisgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgcHJvcGVydHkncyBfX2lzYWJzdHJhY3RtZXRob2RfXyBkZXNjcmlwdG9yIGRvZXMgdGhlCisgICAgICAgICMgcmlnaHQgdGhpbmcgd2hlbiBwcmVzZW50ZWQgd2l0aCBhIHZhbHVlIHRoYXQgZmFpbHMgdHJ1dGggdGVzdGluZzoKKyAgICAgICAgY2xhc3MgTm90Qm9vbChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fbm9uemVyb19fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKQorICAgICAgICAgICAgX19sZW5fXyA9IF9fbm9uemVyb19fCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBGKEMpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBiYXIuX19pc2Fic3RyYWN0bWV0aG9kX18gPSBOb3RCb29sKCkKKyAgICAgICAgICAgICAgICBmb28gPSBwcm9wZXJ0eShiYXIpCisKKworICAgIGRlZiB0ZXN0X2N1c3RvbWRlc2NyaXB0b3JzX3dpdGhfYWJzdHJhY3RtZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmdldCwgZnNldD1Ob25lKToKKyAgICAgICAgICAgICAgICBzZWxmLl9mZ2V0ID0gZmdldAorICAgICAgICAgICAgICAgIHNlbGYuX2ZzZXQgPSBmc2V0CisgICAgICAgICAgICBkZWYgZ2V0dGVyKHNlbGYsIGNhbGxhYmxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVzY3JpcHRvcihjYWxsYWJsZSwgc2VsZi5fZmdldCkKKyAgICAgICAgICAgIGRlZiBzZXR0ZXIoc2VsZiwgY2FsbGFibGUpOgorICAgICAgICAgICAgICAgIHJldHVybiBEZXNjcmlwdG9yKHNlbGYuX2ZnZXQsIGNhbGxhYmxlKQorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBkZWYgX19pc2Fic3RyYWN0bWV0aG9kX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIChnZXRhdHRyKHNlbGYuX2ZnZXQsICdfX2lzYWJzdHJhY3RtZXRob2RfXycsIEZhbHNlKQorICAgICAgICAgICAgICAgICAgICAgICAgb3IgZ2V0YXR0cihzZWxmLl9mc2V0LCAnX19pc2Fic3RyYWN0bWV0aG9kX18nLCBGYWxzZSkpCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIEBEZXNjcmlwdG9yCisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gMworICAgICAgICAgICAgQGZvby5zZXR0ZXIKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgdmFsKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAQy5mb28uZ2V0dGVyCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gc3VwZXIoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKQorICAgICAgICBjbGFzcyBFKEQpOgorICAgICAgICAgICAgQEQuZm9vLnNldHRlcgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCB2YWwpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoRS5mb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCisKICAgICBkZWYgdGVzdF9tZXRhY2xhc3NfYWJjKHNlbGYpOgogICAgICAgICAjIE1ldGFjbGFzc2VzIGNhbiBiZSBBQkNzLCB0b28uCiAgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKQEAgLTEyMSwxMSArMjczLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhCLCAoQSwpKSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGIsIEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShiLCAoQSwpKQotICAgICAgICBBLnJlZ2lzdGVyKEIpCisgICAgICAgIEIxID0gQS5yZWdpc3RlcihCKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhCLCBBKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQiwgKEEsKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShiLCBBKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYiwgKEEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCMSwgQikKICAgICAgICAgY2xhc3MgQyhCKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgYyA9IEMoKQpAQCAtMTM0LDYgKzI4NywyNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgQSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIChBLCkpCiAKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl9hc19jbGFzc19kZWNvKHNlbGYpOgorICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIEBBLnJlZ2lzdGVyCisgICAgICAgIGNsYXNzIEIob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYiA9IEIoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhCLCBBKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQiwgKEEsKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShiLCBBKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYiwgKEEsKSkKKyAgICAgICAgQEEucmVnaXN0ZXIKKyAgICAgICAgY2xhc3MgQyhCKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYyA9IEMoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDLCBBKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQywgKEEsKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCBBKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgKEEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhDLCBBLnJlZ2lzdGVyKEMpKQorCiAgICAgZGVmIHRlc3RfaXNpbnN0YW5jZV9pbnZhbGlkYXRpb24oc2VsZik6CiAgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKICAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWJzdHJhY3RfbnVtYmVycy5weSBiL0xpYi90ZXN0L3Rlc3RfYWJzdHJhY3RfbnVtYmVycy5weQppbmRleCAyYTM5NmNkLi4yNTNlNmYwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Fic3RyYWN0X251bWJlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hYnN0cmFjdF9udW1iZXJzLnB5CkBAIC0xNCw2ICsxNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNywgaW50KDcpLnJlYWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgaW50KDcpLmltYWcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNywgaW50KDcpLmNvbmp1Z2F0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC03LCBpbnQoLTcpLmNvbmp1Z2F0ZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGludCg3KS5udW1lcmF0b3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgaW50KDcpLmRlbm9taW5hdG9yKQogCkBAIC0yNCw2ICsyNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNy4zLCBmbG9hdCg3LjMpLnJlYWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZmxvYXQoNy4zKS5pbWFnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcuMywgZmxvYXQoNy4zKS5jb25qdWdhdGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtNy4zLCBmbG9hdCgtNy4zKS5jb25qdWdhdGUoKSkKIAogICAgIGRlZiB0ZXN0X2NvbXBsZXgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhjb21wbGV4LCBSZWFsKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWlmYy5weSBiL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQppbmRleCBlZTRhZDZiLi5hZDZmNjEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FpZmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9haWZjLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgY2FwdHVyZWRfc3Rkb3V0LCB1bmxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZSwgcnVuX3VuaXR0ZXN0LCBURVNURk4sIHVubGluawogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKIGltcG9ydCBpbwpAQCAtMjA3LDExICsyMDcsOCBAQAogICAgICAgICBiICs9IGInQ09NTScgKyBzdHJ1Y3QucGFjaygnPkxobGhoTEwnLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCkKICAgICAgICAgYiArPSBiJ1NTTkQnICsgc3RydWN0LnBhY2soJz5MJywgOCkgKyBiJ1x4MDAnICogOAogICAgICAgICBiICs9IGInTUFSSycgKyBzdHJ1Y3QucGFjaygnPkxoQicsIDMsIDEsIDEpCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFVzZXJXYXJuaW5nKToKICAgICAgICAgICAgIGYgPSBhaWZjLm9wZW4oaW8uQnl0ZXNJTyhiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHMuZ2V0dmFsdWUoKSwKLSAgICAgICAgICAgICdXYXJuaW5nOiBNQVJLIGNodW5rIGNvbnRhaW5zIG9ubHkgMCBtYXJrZXJzIGluc3RlYWQgb2YgMVxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldG1hcmtlcnMoKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X3JlYWRfY29tbV9rbHVkZ2VfY29tcG5hbWVfZXZlbihzZWxmKToKQEAgLTIxOSw5ICsyMTYsOCBAQAogICAgICAgICBiICs9IGInQ09NTScgKyBzdHJ1Y3QucGFjaygnPkxobGhoTEwnLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCkKICAgICAgICAgYiArPSBiJ05PTkUnICsgc3RydWN0LnBhY2soJ0InLCA0KSArIGInZXZlbicgKyBiJ1x4MDAnCiAgICAgICAgIGIgKz0gYidTU05EJyArIHN0cnVjdC5wYWNrKCc+TCcsIDgpICsgYidceDAwJyAqIDgKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoVXNlcldhcm5pbmcpOgogICAgICAgICAgICAgZiA9IGFpZmMub3Blbihpby5CeXRlc0lPKGIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgJ1dhcm5pbmc6IGJhZCBDT01NIGNodW5rIHNpemVcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXRjb21wbmFtZSgpLCBiJ2V2ZW4nKQogCiAgICAgZGVmIHRlc3RfcmVhZF9jb21tX2tsdWRnZV9jb21wbmFtZV9vZGQoc2VsZik6CkBAIC0yMjksOSArMjI1LDggQEAKICAgICAgICAgYiArPSBiJ0NPTU0nICsgc3RydWN0LnBhY2soJz5MaGxoaExMJywgMTgsIDAsIDAsIDAsIDAsIDAsIDApCiAgICAgICAgIGIgKz0gYidOT05FJyArIHN0cnVjdC5wYWNrKCdCJywgMykgKyBiJ29kZCcKICAgICAgICAgYiArPSBiJ1NTTkQnICsgc3RydWN0LnBhY2soJz5MJywgOCkgKyBiJ1x4MDAnICogOAotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhVc2VyV2FybmluZyk6CiAgICAgICAgICAgICBmID0gYWlmYy5vcGVuKGlvLkJ5dGVzSU8oYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAnV2FybmluZzogYmFkIENPTU0gY2h1bmsgc2l6ZVxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldGNvbXBuYW1lKCksIGInb2RkJykKIAogICAgIGRlZiB0ZXN0X3dyaXRlX3BhcmFtc19yYWlzZXMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQppbmRleCAzYTI5NzYxLi5mZTkzMGEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKQEAgLTEzMjMsMjAgKzEzMjMsMjEgQEAKIGNsYXNzIFRlc3RQYXJzZXJEZWZhdWx0NDIoUGFyc2VyVGVzdENhc2UpOgogICAgICIiIlRlc3QgYWN0aW9ucyB3aXRoIGEgcGFyc2VyLWxldmVsIGRlZmF1bHQgb2YgNDIiIiIKIAotICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcoYXJndW1lbnRfZGVmYXVsdD00MiwgdmVyc2lvbj0nMS4wJykKKyAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKGFyZ3VtZW50X2RlZmF1bHQ9NDIpCiAgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScxLjAnKSwKICAgICAgICAgU2lnKCdmb28nLCBuYXJncz0nPycpLAogICAgICAgICBTaWcoJ2JhcicsIG5hcmdzPScqJyksCiAgICAgICAgIFNpZygnLS1iYXonLCBhY3Rpb249J3N0b3JlX3RydWUnKSwKICAgICBdCiAgICAgZmFpbHVyZXMgPSBbJy14J10KICAgICBzdWNjZXNzZXMgPSBbCi0gICAgICAgICgnJywgTlMoZm9vPTQyLCBiYXI9NDIsIGJhej00MikpLAotICAgICAgICAoJ2EnLCBOUyhmb289J2EnLCBiYXI9NDIsIGJhej00MikpLAotICAgICAgICAoJ2EgYicsIE5TKGZvbz0nYScsIGJhcj1bJ2InXSwgYmF6PTQyKSksCi0gICAgICAgICgnLS1iYXonLCBOUyhmb289NDIsIGJhcj00MiwgYmF6PVRydWUpKSwKLSAgICAgICAgKCdhIC0tYmF6JywgTlMoZm9vPSdhJywgYmFyPTQyLCBiYXo9VHJ1ZSkpLAotICAgICAgICAoJy0tYmF6IGEgYicsIE5TKGZvbz0nYScsIGJhcj1bJ2InXSwgYmF6PVRydWUpKSwKKyAgICAgICAgKCcnLCBOUyhmb289NDIsIGJhcj00MiwgYmF6PTQyLCB2ZXJzaW9uPTQyKSksCisgICAgICAgICgnYScsIE5TKGZvbz0nYScsIGJhcj00MiwgYmF6PTQyLCB2ZXJzaW9uPTQyKSksCisgICAgICAgICgnYSBiJywgTlMoZm9vPSdhJywgYmFyPVsnYiddLCBiYXo9NDIsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCctLWJheicsIE5TKGZvbz00MiwgYmFyPTQyLCBiYXo9VHJ1ZSwgdmVyc2lvbj00MikpLAorICAgICAgICAoJ2EgLS1iYXonLCBOUyhmb289J2EnLCBiYXI9NDIsIGJhej1UcnVlLCB2ZXJzaW9uPTQyKSksCisgICAgICAgICgnLS1iYXogYSBiJywgTlMoZm9vPSdhJywgYmFyPVsnYiddLCBiYXo9VHJ1ZSwgdmVyc2lvbj00MikpLAogICAgIF0KIAogCkBAIC0yOTExLDEwICsyOTEyLDkgQEAKICAgICAgICAgICAgICAgICBwYXJzZXJfdGV4dCA9IHNmaWxlLmdldHZhbHVlKCkKICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0KHRlc3RlciwgcGFyc2VyX3RleHQpCiAKLSAgICAgICAgIyBhZGQgdGVzdHMgZm9yIHtmb3JtYXQscHJpbnR9X3t1c2FnZSxoZWxwLHZlcnNpb259CisgICAgICAgICMgYWRkIHRlc3RzIGZvciB7Zm9ybWF0LHByaW50fV97dXNhZ2UsaGVscH0KICAgICAgICAgZm9yIGZ1bmNfc3VmZml4LCBzdGRfbmFtZSBpbiBbKCd1c2FnZScsICdzdGRvdXQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdoZWxwJywgJ3N0ZG91dCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3ZlcnNpb24nLCAnc3RkZXJyJyldOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2hlbHAnLCAnc3Rkb3V0JyldOgogICAgICAgICAgICAgQWRkVGVzdHMoY2xzLCBmdW5jX3N1ZmZpeCwgc3RkX25hbWUpCiAKIGJhc2VzID0gVGVzdENhc2UsCkBAIC0yOTI1LDggKzI5MjUsOSBAQAogICAgICIiIk1ha2Ugc3VyZSB0aGF0IGFyZ3VtZW50IGhlbHAgYWxpZ25zIHdoZW4gb3B0aW9ucyBhcmUgbG9uZ2VyIiIiCiAKICAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLCBkZXNjcmlwdGlvbj0nREVTQ1JJUFRJT04nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdFUElMT0cnLCB2ZXJzaW9uPScwLjEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdFUElMT0cnKQogICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMC4xJyksCiAgICAgICAgIFNpZygnLXgnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdYIEhFTFAnKSwKICAgICAgICAgU2lnKCctLXknLCBoZWxwPSdZIEhFTFAnKSwKICAgICAgICAgU2lnKCdmb28nLCBoZWxwPSdGT08gSEVMUCcpLApAQCAtMjk2MSw4ICsyOTYyLDkgQEAKICAgICAiIiJNYWtlIHN1cmUgdGhhdCBhcmd1bWVudCBoZWxwIGFsaWducyB3aGVuIG9wdGlvbnMgYXJlIGxvbmdlciIiIgogCiAgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJywgZGVzY3JpcHRpb249J0RFU0NSSVBUSU9OJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz0nRVBJTE9HJywgdmVyc2lvbj0nMC4xJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz0nRVBJTE9HJykKICAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gWworICAgICAgICBTaWcoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzAuMScpLAogICAgICAgICBTaWcoJy14JywgYWN0aW9uPSdzdG9yZV90cnVlJywgaGVscD0nWCBIRUxQJyksCiAgICAgICAgIFNpZygnLS15JywgaGVscD0nWSBIRUxQJyksCiAgICAgICAgIFNpZygnZm9vJywgaGVscD0nRk9PIEhFTFAnKSwKQEAgLTMxMjksOSArMzEzMSw5IEBACiBjbGFzcyBUZXN0SGVscFdyYXBwaW5nTG9uZ05hbWVzKEhlbHBUZXN0Q2FzZSk6CiAgICAgIiIiTWFrZSBzdXJlIHRoYXQgdGV4dCBhZnRlciBsb25nIG5hbWVzIHN0YXJ0cyBvbiB0aGUgbmV4dCBsaW5lIiIiCiAKLSAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHVzYWdlPSdVU0FHRScsIGRlc2NyaXB0aW9uPSAnRCBEJyAqIDMwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj0nViBWJyozMCkKKyAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHVzYWdlPSdVU0FHRScsIGRlc2NyaXB0aW9uPSAnRCBEJyAqIDMwKQogICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nViBWJyAqIDMwKSwKICAgICAgICAgU2lnKCcteCcsIG1ldGF2YXI9J1gnICogMjUsIGhlbHA9J1hIIFhIJyAqIDIwKSwKICAgICAgICAgU2lnKCd5JywgbWV0YXZhcj0neScgKiAyNSwgaGVscD0nWUggWUgnICogMjApLAogICAgIF0KQEAgLTM3MzQsOCArMzczNiw5IEBACiBjbGFzcyBUZXN0SGVscFZlcnNpb25PcHRpb25hbChIZWxwVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhhdCB0aGUgLS12ZXJzaW9uIGFyZ3VtZW50IGNhbiBiZSBzdXBwcmVzc2VkIGhlbHAgbWVzc2FnZXMiIiIKIAotICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycsIHZlcnNpb249JzEuMCcpCisgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJykKICAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gWworICAgICAgICBTaWcoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzEuMCcpLAogICAgICAgICBTaWcoJy0tZm9vJywgaGVscD0nZm9vIGhlbHAnKSwKICAgICAgICAgU2lnKCdzcGFtJywgaGVscD0nc3BhbSBoZWxwJyksCiAgICAgXQpAQCAtMzk2OCw4ICszOTcxLDggQEAKIGNsYXNzIFRlc3RIZWxwU3VicGFyc2Vyc09yZGVyaW5nKEhlbHBUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBvcmRlcmluZyBvZiBzdWJjb21tYW5kcyBpbiBoZWxwIG1hdGNoZXMgdGhlIGNvZGUiIiIKICAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgc29tZSBzdWJjb21tYW5kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPScwLjEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgc29tZSBzdWJjb21tYW5kcycpCisgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFtTaWcoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzAuMScpXQogCiAgICAgc3VicGFyc2Vyc19zaWduYXR1cmVzID0gW1NpZyhuYW1lPW5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluICgnYScsICdiJywgJ2MnLCAnZCcsICdlJyldCkBAIC0zOTk3LDggKzQwMDAsOCBAQAogY2xhc3MgVGVzdEhlbHBTdWJwYXJzZXJzV2l0aEhlbHBPcmRlcmluZyhIZWxwVGVzdENhc2UpOgogICAgICIiIlRlc3Qgb3JkZXJpbmcgb2Ygc3ViY29tbWFuZHMgaW4gaGVscCBtYXRjaGVzIHRoZSBjb2RlIiIiCiAgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdkaXNwbGF5IHNvbWUgc3ViY29tbWFuZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj0nMC4xJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdkaXNwbGF5IHNvbWUgc3ViY29tbWFuZHMnKQorICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbU2lnKCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScwLjEnKV0KIAogICAgIHN1YmNvbW1hbmRfZGF0YSA9ICgoJ2EnLCAnYSBzdWJjb21tYW5kIGhlbHAnKSwKICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgJ2Igc3ViY29tbWFuZCBoZWxwJyksCkBAIC00MDM2LDYgKzQwMzksMzcgQEAKICAgICAgICAgJycnCiAKIAorCitjbGFzcyBUZXN0SGVscE1ldGF2YXJUeXBlRm9ybWF0dGVyKEhlbHBUZXN0Q2FzZSk6CisgICAgIiIiIiIiCisKKyAgICBkZWYgY3VzdG9tX3R5cGUoc3RyaW5nKToKKyAgICAgICAgcmV0dXJuIHN0cmluZworCisgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJywgZGVzY3JpcHRpb249J2Rlc2NyaXB0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5NZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIpCisgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFtTaWcoJ2EnLCB0eXBlPWludCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWcoJy1iJywgdHlwZT1jdXN0b21fdHlwZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWcoJy1jJywgdHlwZT1mbG9hdCwgbWV0YXZhcj0nU09NRSBGTE9BVCcpXQorICAgIGFyZ3VtZW50X2dyb3VwX3NpZ25hdHVyZXMgPSBbXQorICAgIHVzYWdlID0gJycnXAorICAgICAgICB1c2FnZTogUFJPRyBbLWhdIFstYiBjdXN0b21fdHlwZV0gWy1jIFNPTUUgRkxPQVRdIGludAorICAgICAgICAnJycKKyAgICBoZWxwID0gdXNhZ2UgKyAnJydcCisKKyAgICAgICAgZGVzY3JpcHRpb24KKworICAgICAgICBwb3NpdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAgICBpbnQKKworICAgICAgICBvcHRpb25hbCBhcmd1bWVudHM6CisgICAgICAgICAgLWgsIC0taGVscCAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgICAgICAtYiBjdXN0b21fdHlwZQorICAgICAgICAgIC1jIFNPTUUgRkxPQVQKKyAgICAgICAgJycnCisgICAgdmVyc2lvbiA9ICcnCisKKwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIE9wdGlvbmFsL1Bvc2l0aW9uYWwgY29uc3RydWN0b3IgdGVzdHMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtNDI2NCwzMiArNDI5OCwyOCBAQAogICAgICAgICAgICAgcGFyc2VyLmZvcm1hdF9oZWxwKCksCiAgICAgICAgICAgICBzZWxmLl9nZXRfZXJyb3IocGFyc2VyLnBhcnNlX2FyZ3MsIGFyZ3Nfc3RyLnNwbGl0KCkpLnN0ZG91dCkKIAotICAgIGRlZiBhc3NlcnRQcmludFZlcnNpb25FeGl0KHNlbGYsIHBhcnNlciwgYXJnc19zdHIpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgcGFyc2VyLmZvcm1hdF92ZXJzaW9uKCksCi0gICAgICAgICAgICBzZWxmLl9nZXRfZXJyb3IocGFyc2VyLnBhcnNlX2FyZ3MsIGFyZ3Nfc3RyLnNwbGl0KCkpLnN0ZGVycikKLQogICAgIGRlZiBhc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHNlbGYsIHBhcnNlciwgKmFyZ3MpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yLCBwYXJzZXIucGFyc2VfYXJncywgYXJncykKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHZlcnNpb249JzEuMCcpCisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJykKICAgICAgICAgc2VsZi5hc3NlcnRQcmludEhlbHBFeGl0KHBhcnNlciwgJy1oJykKICAgICAgICAgc2VsZi5hc3NlcnRQcmludEhlbHBFeGl0KHBhcnNlciwgJy0taGVscCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsICctdicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsICctLXZlcnNpb24nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgcGFyc2VyLCAnZm9ybWF0X3ZlcnNpb24nKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9mb3JtYXQoc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BQUCcsIHZlcnNpb249JyUocHJvZylzIDMuNScpCisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BQUCcpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JyUocHJvZylzIDMuNScpCiAgICAgICAgIG1zZyA9IHNlbGYuX2dldF9lcnJvcihwYXJzZXIucGFyc2VfYXJncywgWyctdiddKS5zdGRlcnIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUFBQIDMuNVxuJywgbXNnKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9ub19oZWxwKHNlbGYpOgotICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihhZGRfaGVscD1GYWxzZSwgdmVyc2lvbj0nMS4wJykKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIoYWRkX2hlbHA9RmFsc2UpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzEuMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0QXJndW1lbnRQYXJzZXJFcnJvcihwYXJzZXIsICctaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0QXJndW1lbnRQYXJzZXJFcnJvcihwYXJzZXIsICctLWhlbHAnKQotICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCAnLXYnKQotICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCAnLS12ZXJzaW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIHBhcnNlciwgJ2Zvcm1hdF92ZXJzaW9uJykKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb25fYWN0aW9uKHNlbGYpOgogICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihwcm9nPSdYWFgnKQpAQCAtNDMwOSwxMiArNDMzOSwxMyBAQAogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCcteCcsIGFjdGlvbj0naGVscCcpCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy15JywgYWN0aW9uPSd2ZXJzaW9uJykKICAgICAgICAgc2VsZi5hc3NlcnRQcmludEhlbHBFeGl0KHBhcnNlciwgJy14JykKLSAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgJy15JykKICAgICAgICAgc2VsZi5hc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHBhcnNlciwgJy12JykKICAgICAgICAgc2VsZi5hc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHBhcnNlciwgJy0tdmVyc2lvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBwYXJzZXIsICdmb3JtYXRfdmVyc2lvbicpCiAKICAgICBkZWYgdGVzdF9oZWxwX3ZlcnNpb25fZXh0cmFfYXJndW1lbnRzKHNlbGYpOgotICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcih2ZXJzaW9uPScxLjAnKQorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcigpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzEuMCcpCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy14JywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgneScpCiAKQEAgLTQzMjYsOCArNDM1Nyw3IEBACiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gJyVzICUlcyAlcycgJSAocHJlZml4LCBzdWZmaXgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCBmb3JtYXQgJSAnLWgnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRQcmludEhlbHBFeGl0KHBhcnNlciwgZm9ybWF0ICUgJy0taGVscCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCBmb3JtYXQgJSAnLXYnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgZm9ybWF0ICUgJy0tdmVyc2lvbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgcGFyc2VyLCAnZm9ybWF0X3ZlcnNpb24nKQogCiAKICMgPT09PT09PT09PT09PT09PT09PT09PQpAQCAtNDM4Miw3ICs0NDEyLDcgQEAKICAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycpCiAgICAgICAgIHN0cmluZyA9ICgKICAgICAgICAgICAgICJBcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJywgdXNhZ2U9Tm9uZSwgZGVzY3JpcHRpb249Tm9uZSwgIgotICAgICAgICAgICAgInZlcnNpb249Tm9uZSwgZm9ybWF0dGVyX2NsYXNzPSVyLCBjb25mbGljdF9oYW5kbGVyPSdlcnJvcicsICIKKyAgICAgICAgICAgICJmb3JtYXR0ZXJfY2xhc3M9JXIsIGNvbmZsaWN0X2hhbmRsZXI9J2Vycm9yJywgIgogICAgICAgICAgICAgImFkZF9oZWxwPVRydWUpIiAlIGFyZ3BhcnNlLkhlbHBGb3JtYXR0ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwocGFyc2VyLCBzdHJpbmcpCiAKQEAgLTQ0MjYsNyArNDQ1Niw3IEBACiAgICAgZGVmIF90ZXN0X21vZHVsZV9lbmNvZGluZyhzZWxmLCBwYXRoKToKICAgICAgICAgcGF0aCwgXyA9IG9zLnBhdGguc3BsaXRleHQocGF0aCkKICAgICAgICAgcGF0aCArPSAiLnB5IgotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICdyJywgJ3V0ZjgnKSBhcyBmOgorICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICdyJywgJ3V0Zi04JykgYXMgZjoKICAgICAgICAgICAgIGYucmVhZCgpCiAKICAgICBkZWYgdGVzdF9hcmdwYXJzZV9tb2R1bGVfZW5jb2Rpbmcoc2VsZik6CkBAIC00NDY4LDYgKzQ0OTgsNjcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgpCiAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PQorIyBNZXNzYWdlQ29udGVudEVycm9yIHRlc3RzCisjID09PT09PT09PT09PT09PT09PT09PT09PT0KKworY2xhc3MgVGVzdE1lc3NhZ2VDb250ZW50RXJyb3IoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbWlzc2luZ19hcmd1bWVudF9uYW1lX2luX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnLCB1c2FnZT0nJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgncmVxX3BvcycsIHR5cGU9c3RyKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcmVxX29wdCcsIHR5cGU9aW50LCByZXF1aXJlZD1UcnVlKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCduZWVkX29uZScsIHR5cGU9c3RyLCBuYXJncz0nKycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFtdKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ25lZWRfb25lJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFsnbXlYYXJndW1lbnQnXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfb3B0JykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICduZWVkX29uZScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbJ215WGFyZ3VtZW50JywgJy1yZXFfb3B0PTEnXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdyZXFfb3B0JykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICduZWVkX29uZScpCisKKyAgICBkZWYgdGVzdF9vcHRpb25hbF9vcHRpb25hbF9ub3RfaW5fbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycsIHVzYWdlPScnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdyZXFfcG9zJywgdHlwZT1zdHIpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmVxX29wdCcsIHR5cGU9aW50LCByZXF1aXJlZD1UcnVlKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW9wdF9vcHQnLCB0eXBlPWJvb2wsIG5hcmdzPSc/JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfb3B0JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdvcHRfb3B0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFsnLS1yZXFfb3B0PTEnXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdyZXFfb3B0JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdvcHRfb3B0JykKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsX3Bvc2l0aW9uYWxfbm90X2luX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnLCB1c2FnZT0nJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgncmVxX3BvcycpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ29wdGlvbmFsX3Bvc2l0aW9uYWwnLCBuYXJncz0nPycsIGRlZmF1bHQ9J2VnZ3MnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoW10pCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX3BvcycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obXNnLCAnb3B0aW9uYWxfcG9zaXRpb25hbCcpCisKKwogIyA9PT09PT09PT09PT09PT09PT09PT09CiAjIHBhcnNlX2tub3duX2FyZ3MgdGVzdHMKICMgPT09PT09PT09PT09PT09PT09PT09PQpAQCAtNDY4MywxMyArNDc3NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGl0ZW1zKSwgc29ydGVkKGFyZ3BhcnNlLl9fYWxsX18pKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgIyBzaWxlbmNlIHdhcm5pbmdzIGFib3V0IHZlcnNpb24gYXJndW1lbnQgLSB0aGVzZSBhcmUgZXhwZWN0ZWQKLSAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoCi0gICAgICAgICAgICAoJ1RoZSAidmVyc2lvbiIgYXJndW1lbnQgdG8gQXJndW1lbnRQYXJzZXIgaXMgZGVwcmVjYXRlZC4nLAotICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZyksCi0gICAgICAgICAgICAoJ1RoZSAoZm9ybWF0fHByaW50KV92ZXJzaW9uIG1ldGhvZCBpcyBkZXByZWNhdGVkJywKLSAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpKToKLSAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCiAgICAgIyBSZW1vdmUgZ2xvYmFsIHJlZmVyZW5jZXMgdG8gYXZvaWQgbG9va2luZyBsaWtlIHdlIGhhdmUgcmVmbGVha3MuCiAgICAgUkZpbGUuc2VlbiA9IHt9CiAgICAgV0ZpbGUuc2VlbiA9IHNldCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5IGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQppbmRleCBlMjZlOWFkLi41NDRjMmNlIDEwMDc1NQotLS0gYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKQEAgLTE2LDYgKzE2LDEzIEBACiBpbXBvcnQgYXJyYXkKIGZyb20gYXJyYXkgaW1wb3J0IF9hcnJheV9yZWNvbnN0cnVjdG9yIGFzIGFycmF5X3JlY29uc3RydWN0b3IKIAordHJ5OgorICAgICMgVHJ5IHRvIGRldGVybWluZSBhdmFpbGFiaWxpdHkgb2YgbG9uZyBsb25nIGluZGVwZW5kZW50bHkKKyAgICAjIG9mIHRoZSBhcnJheSBtb2R1bGUgdW5kZXIgdGVzdAorICAgIHN0cnVjdC5jYWxjc2l6ZSgnQHEnKQorICAgIGhhdmVfbG9uZ19sb25nID0gVHJ1ZQorZXhjZXB0IHN0cnVjdC5lcnJvcjoKKyAgICBoYXZlX2xvbmdfbG9uZyA9IEZhbHNlCiAKIGNsYXNzIEFycmF5U3ViY2xhc3MoYXJyYXkuYXJyYXkpOgogICAgIHBhc3MKQEAgLTI2LDYgKzMzLDggQEAKIAogdGVzdHMgPSBbXSAjIGxpc3QgdG8gYWNjdW11bGF0ZSBhbGwgdGVzdHMKIHR5cGVjb2RlcyA9ICJ1YkJoSGlJbExmZCIKK2lmIGhhdmVfbG9uZ19sb25nOgorICAgIHR5cGVjb2RlcyArPSAncVEnCiAKIGNsYXNzIEJhZENvbnN0cnVjdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTIwOSwxMCArMjE4LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlbMV0sIGxlbihhKSkKIAogICAgIGRlZiB0ZXN0X2J5dGVzd2FwKHNlbGYpOgotICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQorICAgICAgICBpZiBzZWxmLnR5cGVjb2RlID09ICd1JzoKKyAgICAgICAgICAgIGV4YW1wbGUgPSAnXFUwMDEwMDEwMCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4YW1wbGUgPSBzZWxmLmV4YW1wbGUKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIGV4YW1wbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYS5ieXRlc3dhcCwgNDIpCiAgICAgICAgIGlmIGEuaXRlbXNpemUgaW4gKDEsIDIsIDQsIDgpOgotICAgICAgICAgICAgYiA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKKyAgICAgICAgICAgIGIgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBleGFtcGxlKQogICAgICAgICAgICAgYi5ieXRlc3dhcCgpCiAgICAgICAgICAgICBpZiBhLml0ZW1zaXplPT0xOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKQEAgLTI3Miw2ICsyODUsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS54LCBiLngpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoYSksIHR5cGUoYikpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGUoc2VsZik6CisgICAgICAgIGRhdGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCisgICAgICAgIG9yZ2l0ID0gaXRlcihkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKG9yZ2l0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUob3JnaXQpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgbGlzdChkYXRhKSkKKworICAgICAgICBpZiBsZW4oZGF0YSk6CisgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBsaXN0KGRhdGEpWzE6XSkKKwogICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKICAgICAgICAgYS5pbnNlcnQoMCwgc2VsZi5leGFtcGxlWzBdKQpAQCAtOTkxLDE0ICsxMDE4LDE0IEBACiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mX3dpdGhfYnVmZmVyKHNlbGYpOgogICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQotICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY3ZvYmpzaXplKCc0UGknKQorICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY3ZvYmpzaXplKCdQbjJQaScpCiAgICAgICAgIGJ1ZmZlcl9zaXplID0gYS5idWZmZXJfaW5mbygpWzFdICogYS5pdGVtc2l6ZQogICAgICAgICBzdXBwb3J0LmNoZWNrX3NpemVvZihzZWxmLCBhLCBiYXNlc2l6ZSArIGJ1ZmZlcl9zaXplKQogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mX3dpdGhvdXRfYnVmZmVyKHNlbGYpOgogICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSkKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGN2b2Jqc2l6ZSgnNFBpJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGN2b2Jqc2l6ZSgnUG4yUGknKQogICAgICAgICBzdXBwb3J0LmNoZWNrX3NpemVvZihzZWxmLCBhLCBiYXNlc2l6ZSkKIAogCkBAIC0xMDE4LDYgKzEwNDUsMTYgQEAKICAgICBtaW5pdGVtc2l6ZSA9IDIKIAogICAgIGRlZiB0ZXN0X3VuaWNvZGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBjdHlwZXMKKyAgICAgICAgICAgIHNpemVvZl93Y2hhciA9IGN0eXBlcy5zaXplb2YoY3R5cGVzLmNfd2NoYXIpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgICAgIHNpemVvZl93Y2hhciA9IDIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2l6ZW9mX3djaGFyID0gNAorCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYXJyYXkuYXJyYXksICdiJywgJ2ZvbycpCiAKICAgICAgICAgYSA9IGFycmF5LmFycmF5KCd1JywgJ1x4YTBceGMyXHUxMjM0JykKQEAgLTEwMjcsNiArMTA2NCw3IEBACiAgICAgICAgIGEuZnJvbXVuaWNvZGUoJ1x4MTFhYmNceGZmXHUxMjM0JykKICAgICAgICAgcyA9IGEudG91bmljb2RlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCAnXHhhMFx4YzJcdTEyMzQgXHgxMWFiY1x4ZmZcdTEyMzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuaXRlbXNpemUsIHNpemVvZl93Y2hhcikKIAogICAgICAgICBzID0gJ1x4MDA9IlwnYVxcYlx4ODBceGZmXHUwMDAwXHUwMDAxXHUxMjM0JwogICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ3UnLCBzKQpAQCAtMTIxOCw2ICsxMjU2LDE4IEBACiAgICAgbWluaXRlbXNpemUgPSA0CiB0ZXN0cy5hcHBlbmQoVW5zaWduZWRMb25nVGVzdCkKIAorQHVuaXR0ZXN0LnNraXBJZihub3QgaGF2ZV9sb25nX2xvbmcsICduZWVkIGxvbmcgbG9uZyBzdXBwb3J0JykKK2NsYXNzIExvbmdMb25nVGVzdChTaWduZWROdW1iZXJUZXN0KToKKyAgICB0eXBlY29kZSA9ICdxJworICAgIG1pbml0ZW1zaXplID0gOAordGVzdHMuYXBwZW5kKExvbmdMb25nVGVzdCkKKworQHVuaXR0ZXN0LnNraXBJZihub3QgaGF2ZV9sb25nX2xvbmcsICduZWVkIGxvbmcgbG9uZyBzdXBwb3J0JykKK2NsYXNzIFVuc2lnbmVkTG9uZ0xvbmdUZXN0KFVuc2lnbmVkTnVtYmVyVGVzdCk6CisgICAgdHlwZWNvZGUgPSAnUScKKyAgICBtaW5pdGVtc2l6ZSA9IDgKK3Rlc3RzLmFwcGVuZChVbnNpZ25lZExvbmdMb25nVGVzdCkKKwogY2xhc3MgRlBUZXN0KE51bWJlclRlc3QpOgogICAgIGV4YW1wbGUgPSBbLTQyLjAsIDAsIDQyLCAxZTUsIC0xZTEwXQogICAgIHNtYWxsZXJleGFtcGxlID0gWy00Mi4wLCAwLCA0MiwgMWU1LCAtMmUxMF0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKaW5kZXggZTIyZDRkZS4uYWEwODE2NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKQEAgLTEsNiArMSwxMCBAQAotaW1wb3J0IHN5cywgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBhc3QKK2ltcG9ydCB3ZWFrcmVmCisKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBkZWYgdG9fdHVwbGUodCk6CiAgICAgaWYgdCBpcyBOb25lIG9yIGlzaW5zdGFuY2UodCwgKHN0ciwgaW50LCBjb21wbGV4KSk6CkBAIC01Miw2ICs1Niw5IEBACiAgICAgIndoaWxlIHY6cGFzcyIsCiAgICAgIyBJZgogICAgICJpZiB2OnBhc3MiLAorICAgICMgV2l0aAorICAgICJ3aXRoIHggYXMgeTogcGFzcyIsCisgICAgIndpdGggeCBhcyB5LCB6IGFzIHE6IHBhc3MiLAogICAgICMgUmFpc2UKICAgICAicmFpc2UgRXhjZXB0aW9uKCdzdHJpbmcnKSIsCiAgICAgIyBUcnlFeGNlcHQKQEAgLTE5MSw2ICsxOTgsOSBAQAogICAgIGRlZiB0ZXN0X0FTVF9vYmplY3RzKHNlbGYpOgogICAgICAgICB4ID0gYXN0LkFTVCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fZmllbGRzLCAoKSkKKyAgICAgICAgeC5mb29iYXIgPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZm9vYmFyLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9fZGljdF9fWyJmb29iYXIiXSwgNDIpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgICAgICB4LnZhcmFyZwpAQCAtMTk5LDYgKzIwOSwxNyBAQAogICAgICAgICAgICAgIyAiX2FzdC5BU1QgY29uc3RydWN0b3IgdGFrZXMgMCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKICAgICAgICAgICAgIGFzdC5BU1QoMikKIAorICAgIGRlZiB0ZXN0X0FTVF9nYXJiYWdlX2NvbGxlY3Rpb24oc2VsZik6CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGEgPSBhc3QuQVNUKCkKKyAgICAgICAgYS54ID0gWCgpCisgICAgICAgIGEueC5hID0gYQorICAgICAgICByZWYgPSB3ZWFrcmVmLnJlZihhLngpCisgICAgICAgIGRlbCBhCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZigpKQorCiAgICAgZGVmIHRlc3Rfc25pcHBldHMoc2VsZik6CiAgICAgICAgIGZvciBpbnB1dCwgb3V0cHV0LCBraW5kIGluICgoZXhlY190ZXN0cywgZXhlY19yZXN1bHRzLCAiZXhlYyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpbmdsZV90ZXN0cywgc2luZ2xlX3Jlc3VsdHMsICJzaW5nbGUiKSwKQEAgLTQ5OCw4ICs1MTksNDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImludmFsaWQgaW50ZWdlciB2YWx1ZTogTm9uZSIsIHN0cihjbS5leGNlcHRpb24pKQogCiAKK2NsYXNzIEFTVFZhbGlkYXRvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBtb2Qoc2VsZiwgbW9kLCBtc2c9Tm9uZSwgbW9kZT0iZXhlYyIsICosIGV4Yz1WYWx1ZUVycm9yKToKKyAgICAgICAgbW9kLmxpbmVubyA9IG1vZC5jb2xfb2Zmc2V0ID0gMAorICAgICAgICBhc3QuZml4X21pc3NpbmdfbG9jYXRpb25zKG1vZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhleGMpIGFzIGNtOgorICAgICAgICAgICAgY29tcGlsZShtb2QsICI8dGVzdD4iLCBtb2RlKQorICAgICAgICBpZiBtc2cgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1zZywgc3RyKGNtLmV4Y2VwdGlvbikpCisKKyAgICBkZWYgZXhwcihzZWxmLCBub2RlLCBtc2c9Tm9uZSwgKiwgZXhjPVZhbHVlRXJyb3IpOgorICAgICAgICBtb2QgPSBhc3QuTW9kdWxlKFthc3QuRXhwcihub2RlKV0pCisgICAgICAgIHNlbGYubW9kKG1vZCwgbXNnLCBleGM9ZXhjKQorCisgICAgZGVmIHN0bXQoc2VsZiwgc3RtdCwgbXNnPU5vbmUpOgorICAgICAgICBtb2QgPSBhc3QuTW9kdWxlKFtzdG10XSkKKyAgICAgICAgc2VsZi5tb2QobW9kLCBtc2cpCisKKyAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CisgICAgICAgIG0gPSBhc3QuSW50ZXJhY3RpdmUoW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0pCisgICAgICAgIHNlbGYubW9kKG0sICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IiwgInNpbmdsZSIpCisgICAgICAgIG0gPSBhc3QuRXhwcmVzc2lvbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5tb2QobSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiLCAiZXZhbCIpCisKKyAgICBkZWYgX2NoZWNrX2FyZ3VtZW50cyhzZWxmLCBmYWMsIGNoZWNrKToKKyAgICAgICAgZGVmIGFyZ3VtZW50cyhhcmdzPU5vbmUsIHZhcmFyZz1Ob25lLCB2YXJhcmdhbm5vdGF0aW9uPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAga3dvbmx5YXJncz1Ob25lLCBrd2FyZz1Ob25lLCBrd2FyZ2Fubm90YXRpb249Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0cz1Ob25lLCBrd19kZWZhdWx0cz1Ob25lKToKKyAgICAgICAgICAgIGlmIGFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBhcmdzID0gW10KKyAgICAgICAgICAgIGlmIGt3b25seWFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBrd29ubHlhcmdzID0gW10KKyAgICAgICAgICAgIGlmIGRlZmF1bHRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVmYXVsdHMgPSBbXQorICAgICAgICAgICAgaWYga3dfZGVmYXVsdHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBrd19kZWZhdWx0cyA9IFtdCisgICAgICAgICAgICBhcmdzID0gYXN0LmFyZ3VtZW50cyhhcmdzLCB2YXJhcmcsIHZhcmFyZ2Fubm90YXRpb24sIGt3b25seWFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZywga3dhcmdhbm5vdGF0aW9uLCBkZWZhdWx0cywga3dfZGVmYXVsdHMpCisgICAgICAgICAgICByZXR1cm4gZmFjKGFyZ3MpCisgICAgICAgIGFyZ3MgPSBbYXN0LmFyZygieCIsIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0KKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGFyZ3M9YXJncyksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKHZhcmFyZ2Fubm90YXRpb249YXN0Lk51bSgzKSksCisgICAgICAgICAgICAgICJ2YXJhcmdhbm5vdGF0aW9uIGJ1dCBubyB2YXJhcmciKQorICAgICAgICBjaGVjayhhcmd1bWVudHModmFyYXJnYW5ub3RhdGlvbj1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgdmFyYXJnPSJ4IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjaGVjayhhcmd1bWVudHMoa3dvbmx5YXJncz1hcmdzKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjaGVjayhhcmd1bWVudHMoa3dhcmdhbm5vdGF0aW9uPWFzdC5OdW0oNDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgImt3YXJnYW5ub3RhdGlvbiBidXQgbm8ga3dhcmciKQorICAgICAgICBjaGVjayhhcmd1bWVudHMoa3dhcmdhbm5vdGF0aW9uPWFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZz0ieCIpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhkZWZhdWx0cz1bYXN0Lk51bSgzKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAibW9yZSBwb3NpdGlvbmFsIGRlZmF1bHRzIHRoYW4gYXJncyIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd19kZWZhdWx0cz1bYXN0Lk51bSg0KV0pLAorICAgICAgICAgICAgICAgICAgICAgICAibGVuZ3RoIG9mIGt3b25seWFyZ3MgaXMgbm90IHRoZSBzYW1lIGFzIGt3X2RlZmF1bHRzIikKKyAgICAgICAgYXJncyA9IFthc3QuYXJnKCJ4IiwgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSldCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhhcmdzPWFyZ3MsIGRlZmF1bHRzPVthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGFyZ3MgPSBbYXN0LmFyZygiYSIsIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkpLAorICAgICAgICAgICAgICAgIGFzdC5hcmcoImIiLCBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpKV0KKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGt3b25seWFyZ3M9YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAga3dfZGVmYXVsdHM9W05vbmUsIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2Z1bmNkZWYoc2VsZik6CisgICAgICAgIGEgPSBhc3QuYXJndW1lbnRzKFtdLCBOb25lLCBOb25lLCBbXSwgTm9uZSwgTm9uZSwgW10sIFtdKQorICAgICAgICBmID0gYXN0LkZ1bmN0aW9uRGVmKCJ4IiwgYSwgW10sIFtdLCBOb25lKQorICAgICAgICBzZWxmLnN0bXQoZiwgImVtcHR5IGJvZHkgb24gRnVuY3Rpb25EZWYiKQorICAgICAgICBmID0gYXN0LkZ1bmN0aW9uRGVmKCJ4IiwgYSwgW2FzdC5QYXNzKCldLCBbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpCisgICAgICAgIHNlbGYuc3RtdChmLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGYgPSBhc3QuRnVuY3Rpb25EZWYoIngiLCBhLCBbYXN0LlBhc3MoKV0sIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQoZiwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBkZWYgZmFjKGFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGFzdC5GdW5jdGlvbkRlZigieCIsIGFyZ3MsIFthc3QuUGFzcygpXSwgW10sIE5vbmUpCisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3VtZW50cyhmYWMsIHNlbGYuc3RtdCkKKworICAgIGRlZiB0ZXN0X2NsYXNzZGVmKHNlbGYpOgorICAgICAgICBkZWYgY2xzKGJhc2VzPU5vbmUsIGtleXdvcmRzPU5vbmUsIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lLAorICAgICAgICAgICAgICAgIGJvZHk9Tm9uZSwgZGVjb3JhdG9yX2xpc3Q9Tm9uZSk6CisgICAgICAgICAgICBpZiBiYXNlcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGJhc2VzID0gW10KKyAgICAgICAgICAgIGlmIGtleXdvcmRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAga2V5d29yZHMgPSBbXQorICAgICAgICAgICAgaWYgYm9keSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGJvZHkgPSBbYXN0LlBhc3MoKV0KKyAgICAgICAgICAgIGlmIGRlY29yYXRvcl9saXN0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVjb3JhdG9yX2xpc3QgPSBbXQorICAgICAgICAgICAgcmV0dXJuIGFzdC5DbGFzc0RlZigibXljbGFzcyIsIGJhc2VzLCBrZXl3b3Jkcywgc3RhcmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncywgYm9keSwgZGVjb3JhdG9yX2xpc3QpCisgICAgICAgIHNlbGYuc3RtdChjbHMoYmFzZXM9W2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoa2V5d29yZHM9W2FzdC5rZXl3b3JkKCJ4IiwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoc3RhcmFyZ3M9YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKGt3YXJncz1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoYm9keT1bXSksICJlbXB0eSBib2R5IG9uIENsYXNzRGVmIikKKyAgICAgICAgc2VsZi5zdG10KGNscyhib2R5PVtOb25lXSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKGRlY29yYXRvcl9saXN0PVthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfZGVsZXRlKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LkRlbGV0ZShbXSksICJlbXB0eSB0YXJnZXRzIG9uIERlbGV0ZSIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRGVsZXRlKFtOb25lXSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkRlbGV0ZShbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBEZWwgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9hc3NpZ24oc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuQXNzaWduKFtdLCBhc3QuTnVtKDMpKSwgImVtcHR5IHRhcmdldHMgb24gQXNzaWduIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Bc3NpZ24oW05vbmVdLCBhc3QuTnVtKDMpKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuQXNzaWduKFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSwgYXN0Lk51bSgzKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkFzc2lnbihbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9hdWdhc3NpZ24oc2VsZik6CisgICAgICAgIGF1ZyA9IGFzdC5BdWdBc3NpZ24oYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgYXN0LkFkZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkpCisgICAgICAgIHNlbGYuc3RtdChhdWcsICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisgICAgICAgIGF1ZyA9IGFzdC5BdWdBc3NpZ24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIGFzdC5BZGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KGF1ZywgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfZm9yKHNlbGYpOgorICAgICAgICB4ID0gYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkKKyAgICAgICAgeSA9IGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgcCA9IGFzdC5QYXNzKCkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Gb3IoeCwgeSwgW10sIFtdKSwgImVtcHR5IGJvZHkgb24gRm9yIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Gb3IoYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgeSwgW3BdLCBbXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkZvcih4LCBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSwgW3BdLCBbXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGUgPSBhc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Gb3IoeCwgeSwgW2VdLCBbXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Gb3IoeCwgeSwgW3BdLCBbZV0pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF93aGlsZShzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaGlsZShhc3QuTnVtKDMpLCBbXSwgW10pLCAiZW1wdHkgYm9keSBvbiBXaGlsZSIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2hpbGUoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFthc3QuUGFzcygpXSwgW10pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldoaWxlKGFzdC5OdW0oMyksIFthc3QuUGFzcygpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9pZihzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5JZihhc3QuTnVtKDMpLCBbXSwgW10pLCAiZW1wdHkgYm9keSBvbiBJZiIpCisgICAgICAgIGkgPSBhc3QuSWYoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFthc3QuUGFzcygpXSwgW10pCisgICAgICAgIHNlbGYuc3RtdChpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGkgPSBhc3QuSWYoYXN0Lk51bSgzKSwgW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0sIFtdKQorICAgICAgICBzZWxmLnN0bXQoaSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBpID0gYXN0LklmKGFzdC5OdW0oMyksIFthc3QuUGFzcygpXSwKKyAgICAgICAgICAgICAgICAgICBbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSkKKyAgICAgICAgc2VsZi5zdG10KGksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3dpdGgoc2VsZik6CisgICAgICAgIHAgPSBhc3QuUGFzcygpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2l0aChbXSwgW3BdKSwgImVtcHR5IGl0ZW1zIG9uIFdpdGgiKQorICAgICAgICBpID0gYXN0LndpdGhpdGVtKGFzdC5OdW0oMyksIE5vbmUpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2l0aChbaV0sIFtdKSwgImVtcHR5IGJvZHkgb24gV2l0aCIpCisgICAgICAgIGkgPSBhc3Qud2l0aGl0ZW0oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIE5vbmUpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2l0aChbaV0sIFtwXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgaSA9IGFzdC53aXRoaXRlbShhc3QuTnVtKDMpLCBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldpdGgoW2ldLCBbcF0pLCAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfcmFpc2Uoc2VsZik6CisgICAgICAgIHIgPSBhc3QuUmFpc2UoTm9uZSwgYXN0Lk51bSgzKSkKKyAgICAgICAgc2VsZi5zdG10KHIsICJSYWlzZSB3aXRoIGNhdXNlIGJ1dCBubyBleGNlcHRpb24iKQorICAgICAgICByID0gYXN0LlJhaXNlKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBOb25lKQorICAgICAgICBzZWxmLnN0bXQociwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICByID0gYXN0LlJhaXNlKGFzdC5OdW0oNCksIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQociwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfdHJ5KHNlbGYpOgorICAgICAgICBwID0gYXN0LlBhc3MoKQorICAgICAgICB0ID0gYXN0LlRyeShbXSwgW10sIFtdLCBbcF0pCisgICAgICAgIHNlbGYuc3RtdCh0LCAiZW1wdHkgYm9keSBvbiBUcnkiKQorICAgICAgICB0ID0gYXN0LlRyeShbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSwgW10sIFtdLCBbcF0pCisgICAgICAgIHNlbGYuc3RtdCh0LCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHQgPSBhc3QuVHJ5KFtwXSwgW10sIFtdLCBbXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJUcnkgaGFzIG5laXRoZXIgZXhjZXB0IGhhbmRsZXJzIG5vciBmaW5hbGJvZHkiKQorICAgICAgICB0ID0gYXN0LlRyeShbcF0sIFtdLCBbcF0sIFtwXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJUcnkgaGFzIG9yZWxzZSBidXQgbm8gZXhjZXB0IGhhbmRsZXJzIikKKyAgICAgICAgdCA9IGFzdC5UcnkoW3BdLCBbYXN0LkV4Y2VwdEhhbmRsZXIoTm9uZSwgIngiLCBbXSldLCBbXSwgW10pCisgICAgICAgIHNlbGYuc3RtdCh0LCAiZW1wdHkgYm9keSBvbiBFeGNlcHRIYW5kbGVyIikKKyAgICAgICAgZSA9IFthc3QuRXhjZXB0SGFuZGxlcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgInkiLCBbcF0pXQorICAgICAgICBzZWxmLnN0bXQoYXN0LlRyeShbcF0sIGUsIFtdLCBbXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZSA9IFthc3QuRXhjZXB0SGFuZGxlcihOb25lLCAieCIsIFtwXSldCisgICAgICAgIHQgPSBhc3QuVHJ5KFtwXSwgZSwgW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0sIFtwXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgdCA9IGFzdC5UcnkoW3BdLCBlLCBbcF0sIFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldKQorICAgICAgICBzZWxmLnN0bXQodCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfYXNzZXJ0KHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LkFzc2VydChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgTm9uZSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGFzc3J0ID0gYXN0LkFzc2VydChhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChhc3NydCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfaW1wb3J0KHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LkltcG9ydChbXSksICJlbXB0eSBuYW1lcyBvbiBJbXBvcnQiKQorCisgICAgZGVmIHRlc3RfaW1wb3J0ZnJvbShzZWxmKToKKyAgICAgICAgaW1wID0gYXN0LkltcG9ydEZyb20oTm9uZSwgW2FzdC5hbGlhcygieCIsIE5vbmUpXSwgLTQyKQorICAgICAgICBzZWxmLnN0bXQoaW1wLCAibGV2ZWwgbGVzcyB0aGFuIC0xIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5JbXBvcnRGcm9tKE5vbmUsIFtdLCAwKSwgImVtcHR5IG5hbWVzIG9uIEltcG9ydEZyb20iKQorCisgICAgZGVmIHRlc3RfZ2xvYmFsKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0Lkdsb2JhbChbXSksICJlbXB0eSBuYW1lcyBvbiBHbG9iYWwiKQorCisgICAgZGVmIHRlc3Rfbm9ubG9jYWwoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuTm9ubG9jYWwoW10pLCAiZW1wdHkgbmFtZXMgb24gTm9ubG9jYWwiKQorCisgICAgZGVmIHRlc3RfZXhwcihzZWxmKToKKyAgICAgICAgZSA9IGFzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQoZSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfYm9vbG9wKHNlbGYpOgorICAgICAgICBiID0gYXN0LkJvb2xPcChhc3QuQW5kKCksIFtdKQorICAgICAgICBzZWxmLmV4cHIoYiwgImxlc3MgdGhhbiAyIHZhbHVlcyIpCisgICAgICAgIGIgPSBhc3QuQm9vbE9wKGFzdC5BbmQoKSwgW2FzdC5OdW0oMyldKQorICAgICAgICBzZWxmLmV4cHIoYiwgImxlc3MgdGhhbiAyIHZhbHVlcyIpCisgICAgICAgIGIgPSBhc3QuQm9vbE9wKGFzdC5BbmQoKSwgW2FzdC5OdW0oNCksIE5vbmVdKQorICAgICAgICBzZWxmLmV4cHIoYiwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIGIgPSBhc3QuQm9vbE9wKGFzdC5BbmQoKSwgW2FzdC5OdW0oNCksIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSkKKyAgICAgICAgc2VsZi5leHByKGIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3VuYXJ5b3Aoc2VsZik6CisgICAgICAgIHUgPSBhc3QuVW5hcnlPcChhc3QuTm90KCksIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLmV4cHIodSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfbGFtYmRhKHNlbGYpOgorICAgICAgICBhID0gYXN0LmFyZ3VtZW50cyhbXSwgTm9uZSwgTm9uZSwgW10sIE5vbmUsIE5vbmUsIFtdLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGFzdC5MYW1iZGEoYSwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBkZWYgZmFjKGFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGFzdC5MYW1iZGEoYXJncywgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSkKKyAgICAgICAgc2VsZi5fY2hlY2tfYXJndW1lbnRzKGZhYywgc2VsZi5leHByKQorCisgICAgZGVmIHRlc3RfaWZleHAoc2VsZik6CisgICAgICAgIGwgPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCisgICAgICAgIHMgPSBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKQorICAgICAgICBmb3IgYXJncyBpbiAocywgbCwgbCksIChsLCBzLCBsKSwgKGwsIGwsIHMpOgorICAgICAgICAgICAgc2VsZi5leHByKGFzdC5JZkV4cCgqYXJncyksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CisgICAgICAgIGQgPSBhc3QuRGljdChbXSwgW2FzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSldKQorICAgICAgICBzZWxmLmV4cHIoZCwgInNhbWUgbnVtYmVyIG9mIGtleXMgYXMgdmFsdWVzIikKKyAgICAgICAgZCA9IGFzdC5EaWN0KFtOb25lXSwgW2FzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSldKQorICAgICAgICBzZWxmLmV4cHIoZCwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIGQgPSBhc3QuRGljdChbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0sIFtOb25lXSkKKyAgICAgICAgc2VsZi5leHByKGQsICJOb25lIGRpc2FsbG93ZWQiKQorCisgICAgZGVmIHRlc3Rfc2V0KHNlbGYpOgorICAgICAgICBzZWxmLmV4cHIoYXN0LlNldChbTm9uZV0pLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgcyA9IGFzdC5TZXQoW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSkKKyAgICAgICAgc2VsZi5leHByKHMsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiBfY2hlY2tfY29tcHJlaGVuc2lvbihzZWxmLCBmYWMpOgorICAgICAgICBzZWxmLmV4cHIoZmFjKFtdKSwgImNvbXByZWhlbnNpb24gd2l0aCBubyBnZW5lcmF0b3JzIikKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW10pCisgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICB4ID0gYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkKKyAgICAgICAgeSA9IGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFtOb25lXSkKKyAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pCisgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIF9zaW1wbGVfY29tcChzZWxmLCBmYWMpOgorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGZhYyhhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW2ddKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZGVmIHdyYXAoZ2Vucyk6CisgICAgICAgICAgICByZXR1cm4gZmFjKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBnZW5zKQorICAgICAgICBzZWxmLl9jaGVja19jb21wcmVoZW5zaW9uKHdyYXApCisKKyAgICBkZWYgdGVzdF9saXN0Y29tcChzZWxmKToKKyAgICAgICAgc2VsZi5fc2ltcGxlX2NvbXAoYXN0Lkxpc3RDb21wKQorCisgICAgZGVmIHRlc3Rfc2V0Y29tcChzZWxmKToKKyAgICAgICAgc2VsZi5fc2ltcGxlX2NvbXAoYXN0LlNldENvbXApCisKKyAgICBkZWYgdGVzdF9nZW5lcmF0b3JleHAoc2VsZik6CisgICAgICAgIHNlbGYuX3NpbXBsZV9jb21wKGFzdC5HZW5lcmF0b3JFeHApCisKKyAgICBkZWYgdGVzdF9kaWN0Y29tcChzZWxmKToKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInAiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgIGMgPSBhc3QuRGljdENvbXAoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKSwgW2ddKQorICAgICAgICBzZWxmLmV4cHIoYywgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjID0gYXN0LkRpY3RDb21wKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSksIFtnXSkKKyAgICAgICAgc2VsZi5leHByKGMsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZGVmIGZhY3RvcnkoY29tcHMpOgorICAgICAgICAgICAgayA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgICAgIHYgPSBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpCisgICAgICAgICAgICByZXR1cm4gYXN0LkRpY3RDb21wKGssIHYsIGNvbXBzKQorICAgICAgICBzZWxmLl9jaGVja19jb21wcmVoZW5zaW9uKGZhY3RvcnkpCisKKyAgICBkZWYgdGVzdF95aWVsZChzZWxmKToKKyAgICAgICAgc2VsZi5leHByKGFzdC5ZaWVsZChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksICJtdXN0IGhhdmUgTG9hZCIpCisgICAgICAgIHNlbGYuZXhwcihhc3QuWWllbGRGcm9tKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKSwgIm11c3QgaGF2ZSBMb2FkIikKKworICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZik6CisgICAgICAgIGxlZnQgPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCisgICAgICAgIGNvbXAgPSBhc3QuQ29tcGFyZShsZWZ0LCBbYXN0LkluKCldLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGNvbXAsICJubyBjb21wYXJhdG9ycyIpCisgICAgICAgIGNvbXAgPSBhc3QuQ29tcGFyZShsZWZ0LCBbYXN0LkluKCldLCBbYXN0Lk51bSg0KSwgYXN0Lk51bSg1KV0pCisgICAgICAgIHNlbGYuZXhwcihjb21wLCAiZGlmZmVyZW50IG51bWJlciBvZiBjb21wYXJhdG9ycyBhbmQgb3BlcmFuZHMiKQorICAgICAgICBjb21wID0gYXN0LkNvbXBhcmUoYXN0Lk51bSgiYmxhaCIpLCBbYXN0LkluKCldLCBbbGVmdF0pCisgICAgICAgIHNlbGYuZXhwcihjb21wLCAibm9uLW51bWVyaWMiLCBleGM9VHlwZUVycm9yKQorICAgICAgICBjb21wID0gYXN0LkNvbXBhcmUobGVmdCwgW2FzdC5JbigpXSwgW2FzdC5OdW0oImJsYWgiKV0pCisgICAgICAgIHNlbGYuZXhwcihjb21wLCAibm9uLW51bWVyaWMiLCBleGM9VHlwZUVycm9yKQorCisgICAgZGVmIHRlc3RfY2FsbChzZWxmKToKKyAgICAgICAgZnVuYyA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgYXJncyA9IFthc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpXQorICAgICAgICBrZXl3b3JkcyA9IFthc3Qua2V5d29yZCgidyIsIGFzdC5OYW1lKCJ6IiwgYXN0LkxvYWQoKSkpXQorICAgICAgICBzdGFyYXJnID0gYXN0Lk5hbWUoInAiLCBhc3QuTG9hZCgpKQorICAgICAgICBrd2FyZyA9IGFzdC5OYW1lKCJxIiwgYXN0LkxvYWQoKSkKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBhcmdzLCBrZXl3b3Jkcywgc3RhcmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnKQorICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgW05vbmVdLCBrZXl3b3Jkcywgc3RhcmFyZywga3dhcmcpCisgICAgICAgIHNlbGYuZXhwcihjYWxsLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgYmFkX2tleXdvcmRzID0gW2FzdC5rZXl3b3JkKCJ3IiwgYXN0Lk5hbWUoInoiLCBhc3QuU3RvcmUoKSkpXQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgYXJncywgYmFkX2tleXdvcmRzLCBzdGFyYXJnLCBrd2FyZykKKyAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGtleXdvcmRzLCBhc3QuTmFtZSgieiIsIGFzdC5TdG9yZSgpKSwga3dhcmcpCisgICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBrZXl3b3Jkcywgc3RhcmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ3IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfbnVtKHNlbGYpOgorICAgICAgICBjbGFzcyBzdWJpbnQoaW50KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3Mgc3ViZmxvYXQoZmxvYXQpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjbGFzcyBzdWJjb21wbGV4KGNvbXBsZXgpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBmb3Igb2JqIGluICIwIiwgImhlbGxvIiwgc3ViaW50KCksIHN1YmZsb2F0KCksIHN1YmNvbXBsZXgoKToKKyAgICAgICAgICAgIHNlbGYuZXhwcihhc3QuTnVtKG9iaiksICJub24tbnVtZXJpYyIsIGV4Yz1UeXBlRXJyb3IpCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIGF0dHIgPSBhc3QuQXR0cmlidXRlKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCAieSIsIGFzdC5Mb2FkKCkpCisgICAgICAgIHNlbGYuZXhwcihhdHRyLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9zdWJzY3JpcHQoc2VsZik6CisgICAgICAgIHN1YiA9IGFzdC5TdWJzY3JpcHQoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIGFzdC5JbmRleChhc3QuTnVtKDMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTG9hZCgpKQorICAgICAgICBzZWxmLmV4cHIoc3ViLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHggPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCisgICAgICAgIHN1YiA9IGFzdC5TdWJzY3JpcHQoeCwgYXN0LkluZGV4KGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTG9hZCgpKQorICAgICAgICBzZWxmLmV4cHIoc3ViLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHMgPSBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKQorICAgICAgICBmb3IgYXJncyBpbiAocywgTm9uZSwgTm9uZSksIChOb25lLCBzLCBOb25lKSwgKE5vbmUsIE5vbmUsIHMpOgorICAgICAgICAgICAgc2wgPSBhc3QuU2xpY2UoKmFyZ3MpCisgICAgICAgICAgICBzZWxmLmV4cHIoYXN0LlN1YnNjcmlwdCh4LCBzbCwgYXN0LkxvYWQoKSksCisgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzbCA9IGFzdC5FeHRTbGljZShbXSkKKyAgICAgICAgc2VsZi5leHByKGFzdC5TdWJzY3JpcHQoeCwgc2wsIGFzdC5Mb2FkKCkpLCAiZW1wdHkgZGltcyBvbiBFeHRTbGljZSIpCisgICAgICAgIHNsID0gYXN0LkV4dFNsaWNlKFthc3QuSW5kZXgocyldKQorICAgICAgICBzZWxmLmV4cHIoYXN0LlN1YnNjcmlwdCh4LCBzbCwgYXN0LkxvYWQoKSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3N0YXJyZWQoc2VsZik6CisgICAgICAgIGxlZnQgPSBhc3QuTGlzdChbYXN0LlN0YXJyZWQoYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgYXN0LlN0b3JlKCkpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5TdG9yZSgpKQorICAgICAgICBhc3NpZ24gPSBhc3QuQXNzaWduKFtsZWZ0XSwgYXN0Lk51bSg0KSkKKyAgICAgICAgc2VsZi5zdG10KGFzc2lnbiwgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKworICAgIGRlZiBfc2VxdWVuY2Uoc2VsZiwgZmFjKToKKyAgICAgICAgc2VsZi5leHByKGZhYyhbTm9uZV0sIGFzdC5Mb2FkKCkpLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgc2VsZi5leHByKGZhYyhbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldLCBhc3QuTG9hZCgpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2xpc3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3NlcXVlbmNlKGFzdC5MaXN0KQorCisgICAgZGVmIHRlc3RfdHVwbGUoc2VsZik6CisgICAgICAgIHNlbGYuX3NlcXVlbmNlKGFzdC5UdXBsZSkKKworICAgIGRlZiB0ZXN0X3N0ZGxpYl92YWxpZGF0ZXMoc2VsZik6CisgICAgICAgIHN0ZGxpYiA9IG9zLnBhdGguZGlybmFtZShhc3QuX19maWxlX18pCisgICAgICAgIHRlc3RzID0gW2ZuIGZvciBmbiBpbiBvcy5saXN0ZGlyKHN0ZGxpYikgaWYgZm4uZW5kc3dpdGgoIi5weSIpXQorICAgICAgICB0ZXN0cy5leHRlbmQoWyJ0ZXN0L3Rlc3RfZ3JhbW1hci5weSIsICJ0ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5Il0pCisgICAgICAgIGZvciBtb2R1bGUgaW4gdGVzdHM6CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihzdGRsaWIsIG1vZHVsZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihmbiwgInIiLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIG1vZCA9IGFzdC5wYXJzZShzb3VyY2UpCisgICAgICAgICAgICBjb21waWxlKG1vZCwgZm4sICJleGVjIikKKworCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQVNUX1Rlc3RzLCBBU1RIZWxwZXJzX1Rlc3QpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQVNUX1Rlc3RzLCBBU1RIZWxwZXJzX1Rlc3QsIEFTVFZhbGlkYXRvclRlc3RzKQogCiBkZWYgbWFpbigpOgogICAgIGlmIF9fbmFtZV9fICE9ICdfX21haW5fXyc6CkBAIC01MzMsOSArOTU5LDExIEBACiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdOYW1lJywgKDEsIDQpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICd2JywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCAxMSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ1doaWxlJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNiksICd2JywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCA4KSldLCBbXSldKSwKICgnTW9kdWxlJywgWygnSWYnLCAoMSwgMCksICgnTmFtZScsICgxLCAzKSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdQYXNzJywgKDEsIDUpKV0sIFtdKV0pLAorKCdNb2R1bGUnLCBbKCdXaXRoJywgKDEsIDApLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCA1KSwgJ3gnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTApLCAneScsICgnU3RvcmUnLCkpKV0sIFsoJ1Bhc3MnLCAoMSwgMTMpKV0pXSksCisoJ01vZHVsZScsIFsoJ1dpdGgnLCAoMSwgMCksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDEsIDUpLCAneCcsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxMCksICd5JywgKCdTdG9yZScsKSkpLCAoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDEsIDEzKSwgJ3onLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAncScsICgnU3RvcmUnLCkpKV0sIFsoJ1Bhc3MnLCAoMSwgMjEpKV0pXSksCiAoJ01vZHVsZScsIFsoJ1JhaXNlJywgKDEsIDApLCAoJ0NhbGwnLCAoMSwgNiksICgnTmFtZScsICgxLCA2KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIFsoJ1N0cicsICgxLCAxNiksICdzdHJpbmcnKV0sIFtdLCBOb25lLCBOb25lKSwgTm9uZSldKSwKLSgnTW9kdWxlJywgWygnVHJ5RXhjZXB0JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFsoJ0V4Y2VwdEhhbmRsZXInLCAoMywgMCksICgnTmFtZScsICgzLCA3KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIE5vbmUsIFsoJ1Bhc3MnLCAoNCwgMikpXSldLCBbXSldKSwKLSgnTW9kdWxlJywgWygnVHJ5RmluYWxseScsICgxLCAwKSwgWygnUGFzcycsICgyLCAyKSldLCBbKCdQYXNzJywgKDQsIDIpKV0pXSksCisoJ01vZHVsZScsIFsoJ1RyeScsICgxLCAwKSwgWygnUGFzcycsICgyLCAyKSldLCBbKCdFeGNlcHRIYW5kbGVyJywgKDMsIDApLCAoJ05hbWUnLCAoMywgNyksICdFeGNlcHRpb24nLCAoJ0xvYWQnLCkpLCBOb25lLCBbKCdQYXNzJywgKDQsIDIpKV0pXSwgW10sIFtdKV0pLAorKCdNb2R1bGUnLCBbKCdUcnknLCAoMSwgMCksIFsoJ1Bhc3MnLCAoMiwgMikpXSwgW10sIFtdLCBbKCdQYXNzJywgKDQsIDIpKV0pXSksCiAoJ01vZHVsZScsIFsoJ0Fzc2VydCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDcpLCAndicsICgnTG9hZCcsKSksIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0ltcG9ydCcsICgxLCAwKSwgWygnYWxpYXMnLCAnc3lzJywgTm9uZSldKV0pLAogKCdNb2R1bGUnLCBbKCdJbXBvcnRGcm9tJywgKDEsIDApLCAnc3lzJywgWygnYWxpYXMnLCAndicsIE5vbmUpXSwgMCldKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CmluZGV4IDVmNTVkZjguLjQyYTI1MjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQpAQCAtMjEsNiArMjEsOCBAQAogCiBIT1NUID0gc3VwcG9ydC5IT1NUCiAKK0hBU19VTklYX1NPQ0tFVFMgPSBoYXNhdHRyKHNvY2tldCwgJ0FGX1VOSVgnKQorCiBjbGFzcyBkdW1teXNvY2tldDoKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKQEAgLTcyLDE1ICs3NCwxNiBAQAogICAgICAgICBwYXNzCiAgICAgZWxzZToKICAgICAgICAgbiA9IDIwMAotICAgICAgICB3aGlsZSBuID4gMDoKLSAgICAgICAgICAgIHIsIHcsIGUgPSBzZWxlY3Quc2VsZWN0KFtjb25uXSwgW10sIFtdKQorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHdoaWxlIG4gPiAwIGFuZCB0aW1lLnRpbWUoKSAtIHN0YXJ0IDwgMy4wOgorICAgICAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QoW2Nvbm5dLCBbXSwgW10sIDAuMSkKICAgICAgICAgICAgIGlmIHI6CisgICAgICAgICAgICAgICAgbiAtPSAxCiAgICAgICAgICAgICAgICAgZGF0YSA9IGNvbm4ucmVjdigxMCkKICAgICAgICAgICAgICAgICAjIGtlZXAgZXZlcnl0aGluZyBleGNlcHQgZm9yIHRoZSBuZXdsaW5lIHRlcm1pbmF0b3IKICAgICAgICAgICAgICAgICBidWYud3JpdGUoZGF0YS5yZXBsYWNlKGInXG4nLCBiJycpKQogICAgICAgICAgICAgICAgIGlmIGInXG4nIGluIGRhdGE6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBuIC09IDEKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMSkKIAogICAgICAgICBjb25uLmNsb3NlKCkKQEAgLTg4LDYgKzkxLDEzIEBACiAgICAgICAgIHNlcnYuY2xvc2UoKQogICAgICAgICBldnQuc2V0KCkKIAorZGVmIGJpbmRfYWZfYXdhcmUoc29jaywgYWRkcik6CisgICAgIiIiSGVscGVyIGZ1bmN0aW9uIHRvIGJpbmQgYSBzb2NrZXQgYWNjb3JkaW5nIHRvIGl0cyBmYW1pbHkuIiIiCisgICAgaWYgSEFTX1VOSVhfU09DS0VUUyBhbmQgc29jay5mYW1pbHkgPT0gc29ja2V0LkFGX1VOSVg6CisgICAgICAgICMgTWFrZSBzdXJlIHRoZSBwYXRoIGRvZXNuJ3QgZXhpc3QuCisgICAgICAgIHVubGluayhhZGRyKQorICAgIHNvY2suYmluZChhZGRyKQorCiAKIGNsYXNzIEhlbHBlckZ1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3JlYWR3cml0ZWV4YyhzZWxmKToKQEAgLTM1Myw3ICszNjMsNyBAQAogICAgIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6CiAgICAgICAgIGV2dCA9IHRocmVhZGluZy5FdmVudCgpCi0gICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc29jay5zZXR0aW1lb3V0KDMpCiAgICAgICAgIHBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzb2NrKQogCkBAIC0zNjgsNyArMzc4LDcgQEAKIAogICAgICAgICAgICAgZGF0YSA9IGIiU3VwcG9zZSB0aGVyZSBpc24ndCBhIDE2LXRvbiB3ZWlnaHQ/IgogICAgICAgICAgICAgZCA9IGRpc3BhdGNoZXJ3aXRoc2VuZF9ub3JlYWQoKQotICAgICAgICAgICAgZC5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBkLmNyZWF0ZV9zb2NrZXQoKQogICAgICAgICAgICAgZC5jb25uZWN0KChIT1NULCBwb3J0KSkKIAogICAgICAgICAgICAgIyBnaXZlIHRpbWUgZm9yIHNvY2tldCB0byBjb25uZWN0CkBAIC00NjgsMjIgKzQ3OCwyMiBAQAogICAgICAgICByYWlzZQogCiAKLWNsYXNzIFRDUFNlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyKToKK2NsYXNzIEJhc2VTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CiAgICAgIiIiQSBzZXJ2ZXIgd2hpY2ggbGlzdGVucyBvbiBhbiBhZGRyZXNzIGFuZCBkaXNwYXRjaGVzIHRoZQogICAgIGNvbm5lY3Rpb24gdG8gYSBoYW5kbGVyLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbmRsZXI9QmFzZVRlc3RIYW5kbGVyLCBob3N0PUhPU1QsIHBvcnQ9MCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhbWlseSwgYWRkciwgaGFuZGxlcj1CYXNlVGVzdEhhbmRsZXIpOgogICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoZmFtaWx5KQogICAgICAgICBzZWxmLnNldF9yZXVzZV9hZGRyKCkKLSAgICAgICAgc2VsZi5iaW5kKChob3N0LCBwb3J0KSkKKyAgICAgICAgYmluZF9hZl9hd2FyZShzZWxmLnNvY2tldCwgYWRkcikKICAgICAgICAgc2VsZi5saXN0ZW4oNSkKICAgICAgICAgc2VsZi5oYW5kbGVyID0gaGFuZGxlcgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGFkZHJlc3Moc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzoyXQorICAgICAgICByZXR1cm4gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKQogCiAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBzb2NrLCBhZGRyKToKICAgICAgICAgc2VsZi5oYW5kbGVyKHNvY2spCkBAIC00OTQsOSArNTA0LDkgQEAKIAogY2xhc3MgQmFzZUNsaWVudChCYXNlVGVzdEhhbmRsZXIpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYW1pbHksIGFkZHJlc3MpOgogICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChmYW1pbHkpCiAgICAgICAgIHNlbGYuY29ubmVjdChhZGRyZXNzKQogCiAgICAgZGVmIGhhbmRsZV9jb25uZWN0KHNlbGYpOgpAQCAtNTI2LDggKzUzNiw4IEBACiAgICAgICAgICAgICBkZWYgaGFuZGxlX2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQogCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcigpCi0gICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9hY2NlcHQoc2VsZik6CkBAIC01MzUsMTggKzU0NSwxOCBAQAogCiAgICAgICAgIGNsYXNzIFRlc3RMaXN0ZW5lcihCYXNlVGVzdEhhbmRsZXIpOgogCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmFtaWx5LCBhZGRyKToKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgICAgICAgICBzZWxmLmJpbmQoKEhPU1QsIDApKQorICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChmYW1pbHkpCisgICAgICAgICAgICAgICAgYmluZF9hZl9hd2FyZShzZWxmLnNvY2tldCwgYWRkcikKICAgICAgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQotICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzcyA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKQogCiAgICAgICAgICAgICBkZWYgaGFuZGxlX2FjY2VwdChzZWxmKToKICAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCiAKLSAgICAgICAgc2VydmVyID0gVGVzdExpc3RlbmVyKCkKLSAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gVGVzdExpc3RlbmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhzZXJ2ZXIpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfYWNjZXB0ZWQoc2VsZik6CkBAIC01NTQsMTIgKzU2NCwxMiBAQAogCiAgICAgICAgIGNsYXNzIFRlc3RMaXN0ZW5lcihCYXNlVGVzdEhhbmRsZXIpOgogCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmFtaWx5LCBhZGRyKToKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgICAgICAgICBzZWxmLmJpbmQoKEhPU1QsIDApKQorICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChmYW1pbHkpCisgICAgICAgICAgICAgICAgYmluZF9hZl9hd2FyZShzZWxmLnNvY2tldCwgYWRkcikKICAgICAgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQotICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzcyA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKQogCiAgICAgICAgICAgICBkZWYgaGFuZGxlX2FjY2VwdChzZWxmKToKICAgICAgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLmhhbmRsZV9hY2NlcHQoc2VsZikKQEAgLTU2OCw4ICs1NzgsOCBAQAogICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKIAotICAgICAgICBzZXJ2ZXIgPSBUZXN0TGlzdGVuZXIoKQotICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBUZXN0TGlzdGVuZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKHNlcnZlcikKIAogCkBAIC01ODUsOCArNTk1LDggQEAKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZiwgY29ubikKICAgICAgICAgICAgICAgICBzZWxmLnNlbmQoYid4JyAqIDEwMjQpCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKFRlc3RIYW5kbGVyKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIsIFRlc3RIYW5kbGVyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgZGVmIHRlc3RfaGFuZGxlX3dyaXRlKHNlbGYpOgpAQCAtNTk2LDggKzYwNiw4IEBACiAgICAgICAgICAgICBkZWYgaGFuZGxlX3dyaXRlKHNlbGYpOgogICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKIAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfY2xvc2Uoc2VsZik6CkBAIC02MjAsOCArNjMwLDQwIEBACiAgICAgICAgICAgICAgICAgQmFzZVRlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGNvbm4pCiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKFRlc3RIYW5kbGVyKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIsIFRlc3RIYW5kbGVyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2Nsb3NlX2FmdGVyX2Nvbm5fYnJva2VuKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgRUNPTk5SRVNFVC9FUElQRSBpcyBjb3JyZWN0bHkgaGFuZGxlZCAoaXNzdWVzICM1NjYxIGFuZAorICAgICAgICAjICMxMTI2NSkuCisKKyAgICAgICAgZGF0YSA9IGInXDAnICogMTI4CisKKyAgICAgICAgY2xhc3MgVGVzdENsaWVudChCYXNlQ2xpZW50KToKKworICAgICAgICAgICAgZGVmIGhhbmRsZV93cml0ZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmQoZGF0YSkKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9jbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVfZXhwdChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgY2xhc3MgVGVzdEhhbmRsZXIoQmFzZVRlc3RIYW5kbGVyKToKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9yZWFkKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYucmVjdihsZW4oZGF0YSkpCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIsIFRlc3RIYW5kbGVyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic3Vub3MiKSwKQEAgLTYzMCw5ICs2NzIsMTIgQEAKICAgICAgICAgIyBNYWtlIHN1cmUgaGFuZGxlX2V4cHQgaXMgY2FsbGVkIG9uIE9PQiBkYXRhIHJlY2VpdmVkLgogICAgICAgICAjIE5vdGU6IHRoaXMgbWlnaHQgZmFpbCBvbiBzb21lIHBsYXRmb3JtcyBhcyBPT0IgZGF0YSBpcwogICAgICAgICAjIHRlbnVvdXNseSBzdXBwb3J0ZWQgYW5kIHJhcmVseSB1c2VkLgorICAgICAgICBpZiBIQVNfVU5JWF9TT0NLRVRTIGFuZCBzZWxmLmZhbWlseSA9PSBzb2NrZXQuQUZfVU5JWDoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIk5vdCBhcHBsaWNhYmxlIHRvIEFGX1VOSVggc29ja2V0cy4iKQogCiAgICAgICAgIGNsYXNzIFRlc3RDbGllbnQoQmFzZUNsaWVudCk6CiAgICAgICAgICAgICBkZWYgaGFuZGxlX2V4cHQoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQucmVjdigxMDI0LCBzb2NrZXQuTVNHX09PQikKICAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCiAKICAgICAgICAgY2xhc3MgVGVzdEhhbmRsZXIoQmFzZVRlc3RIYW5kbGVyKToKQEAgLTY0MCw4ICs2ODUsOCBAQAogICAgICAgICAgICAgICAgIEJhc2VUZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmLCBjb25uKQogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnNlbmQoYnl0ZXMoY2hyKDI0NCksICdsYXRpbi0xJyksIHNvY2tldC5NU0dfT09CKQogCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcihUZXN0SGFuZGxlcikKLSAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyLCBUZXN0SGFuZGxlcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9lcnJvcihzZWxmKToKQEAgLTY1OCwxMyArNzAzLDEzIEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJleGNlcHRpb24gbm90IHJhaXNlZCIpCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKCkKLSAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgZGVmIHRlc3RfY29ubmVjdGlvbl9hdHRyaWJ1dGVzKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogCiAgICAgICAgICMgd2Ugc3RhcnQgZGlzY29ubmVjdGVkCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VydmVyLmNvbm5lY3RlZCkKQEAgLTY5NCwyNSArNzM5LDI5IEBACiAKICAgICBkZWYgdGVzdF9jcmVhdGVfc29ja2V0KHNlbGYpOgogICAgICAgICBzID0gYXN5bmNvcmUuZGlzcGF0Y2hlcigpCi0gICAgICAgIHMuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc29ja2V0LmZhbWlseSwgc29ja2V0LkFGX0lORVQpCisgICAgICAgIHMuY3JlYXRlX3NvY2tldChzZWxmLmZhbWlseSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNvY2tldC5mYW1pbHksIHNlbGYuZmFtaWx5KQogICAgICAgICBTT0NLX05PTkJMT0NLID0gZ2V0YXR0cihzb2NrZXQsICdTT0NLX05PTkJMT0NLJywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNvY2tldC50eXBlLCBzb2NrZXQuU09DS19TVFJFQU0gfCBTT0NLX05PTkJMT0NLKQogCiAgICAgZGVmIHRlc3RfYmluZChzZWxmKToKKyAgICAgICAgaWYgSEFTX1VOSVhfU09DS0VUUyBhbmQgc2VsZi5mYW1pbHkgPT0gc29ja2V0LkFGX1VOSVg6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJOb3QgYXBwbGljYWJsZSB0byBBRl9VTklYIHNvY2tldHMuIikKICAgICAgICAgczEgPSBhc3luY29yZS5kaXNwYXRjaGVyKCkKLSAgICAgICAgczEuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICBzMS5iaW5kKChIT1NULCAwKSkKKyAgICAgICAgczEuY3JlYXRlX3NvY2tldChzZWxmLmZhbWlseSkKKyAgICAgICAgczEuYmluZChzZWxmLmFkZHIpCiAgICAgICAgIHMxLmxpc3Rlbig1KQogICAgICAgICBwb3J0ID0gczEuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KIAogICAgICAgICBzMiA9IGFzeW5jb3JlLmRpc3BhdGNoZXIoKQotICAgICAgICBzMi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHMyLmNyZWF0ZV9zb2NrZXQoc2VsZi5mYW1pbHkpCiAgICAgICAgICMgRUFERFJJTlVTRSBpbmRpY2F0ZXMgdGhlIHNvY2tldCB3YXMgY29ycmVjdGx5IGJvdW5kCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgczIuYmluZCwgKEhPU1QsIHBvcnQpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHMyLmJpbmQsIChzZWxmLmFkZHJbMF0sIHBvcnQpKQogCiAgICAgZGVmIHRlc3Rfc2V0X3JldXNlX2FkZHIoc2VsZik6Ci0gICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgaWYgSEFTX1VOSVhfU09DS0VUUyBhbmQgc2VsZi5mYW1pbHkgPT0gc29ja2V0LkFGX1VOSVg6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJOb3QgYXBwbGljYWJsZSB0byBBRl9VTklYIHNvY2tldHMuIikKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc2VsZi5mYW1pbHkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvY2suc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKQEAgLTcyMCwxMSArNzY5LDExIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGlmIFNPX1JFVVNFQUREUiBzdWNjZWVkZWQgZm9yIHNvY2sgd2UgZXhwZWN0IGFzeW5jb3JlCiAgICAgICAgICAgICAjIHRvIGRvIHRoZSBzYW1lCi0gICAgICAgICAgICBzID0gYXN5bmNvcmUuZGlzcGF0Y2hlcihzb2NrZXQuc29ja2V0KCkpCisgICAgICAgICAgICBzID0gYXN5bmNvcmUuZGlzcGF0Y2hlcihzb2NrZXQuc29ja2V0KHNlbGYuZmFtaWx5KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uocy5zb2NrZXQuZ2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSKSkKICAgICAgICAgICAgIHMuc29ja2V0LmNsb3NlKCkKLSAgICAgICAgICAgIHMuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgcy5jcmVhdGVfc29ja2V0KHNlbGYuZmFtaWx5KQogICAgICAgICAgICAgcy5zZXRfcmV1c2VfYWRkcigpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zb2NrZXQuZ2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSKSkKQEAgLTczNSwxMiArNzg0LDE0IEBACiAgICAgQHN1cHBvcnQucmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3RfcXVpY2tfY29ubmVjdChzZWxmKToKICAgICAgICAgIyBzZWU6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMDM0MAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bGFtYmRhOiBhc3luY29yZS5sb29wKHRpbWVvdXQ9MC4xLCBjb3VudD01MDApKQotICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgaWYgc2VsZi5mYW1pbHkgaW4gKHNvY2tldC5BRl9JTkVULCBnZXRhdHRyKHNvY2tldCwgIkFGX0lORVQ2Iiwgb2JqZWN0KCkpKToKKyAgICAgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1sYW1iZGE6IGFzeW5jb3JlLmxvb3AodGltZW91dD0wLjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50PTUwMCkpCisgICAgICAgICAgICB0LnN0YXJ0KCkKIAotICAgICAgICBmb3IgeCBpbiByYW5nZSgyMCk6Ci0gICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorCisgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzZWxmLmZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICAgICAgcy5zZXR0aW1lb3V0KC4yKQogICAgICAgICAgICAgcy5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fTElOR0VSLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrKCdpaScsIDEsIDApKQpAQCAtNzUxLDE4ICs4MDIsNTIgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKLWNsYXNzIFRlc3RBUElfVXNlU2VsZWN0KEJhc2VUZXN0QVBJKToKK2NsYXNzIFRlc3RBUElfVXNlSVB2NFNvY2tldHMoQmFzZVRlc3RBUEkpOgorICAgIGZhbWlseSA9IHNvY2tldC5BRl9JTkVUCisgICAgYWRkciA9IChIT1NULCAwKQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgc3VwcG9ydCByZXF1aXJlZCcpCitjbGFzcyBUZXN0QVBJX1VzZUlQdjZTb2NrZXRzKEJhc2VUZXN0QVBJKToKKyAgICBmYW1pbHkgPSBzb2NrZXQuQUZfSU5FVDYKKyAgICBhZGRyID0gKCc6OjEnLCAwKQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfVU5JWF9TT0NLRVRTLCAnVW5peCBzb2NrZXRzIHJlcXVpcmVkJykKK2NsYXNzIFRlc3RBUElfVXNlVW5peFNvY2tldHMoQmFzZVRlc3RBUEkpOgorICAgIGlmIEhBU19VTklYX1NPQ0tFVFM6CisgICAgICAgIGZhbWlseSA9IHNvY2tldC5BRl9VTklYCisgICAgYWRkciA9IHN1cHBvcnQuVEVTVEZOCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHVubGluayhzZWxmLmFkZHIpCisgICAgICAgIEJhc2VUZXN0QVBJLnRlYXJEb3duKHNlbGYpCisKK2NsYXNzIFRlc3RBUElfVXNlSVB2NFNlbGVjdChUZXN0QVBJX1VzZUlQdjRTb2NrZXRzKToKICAgICB1c2VfcG9sbCA9IEZhbHNlCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpLCAnc2VsZWN0LnBvbGwgcmVxdWlyZWQnKQotY2xhc3MgVGVzdEFQSV9Vc2VQb2xsKEJhc2VUZXN0QVBJKToKK2NsYXNzIFRlc3RBUElfVXNlSVB2NFBvbGwoVGVzdEFQSV9Vc2VJUHY0U29ja2V0cyk6CiAgICAgdXNlX3BvbGwgPSBUcnVlCiAKK2NsYXNzIFRlc3RBUElfVXNlSVB2NlNlbGVjdChUZXN0QVBJX1VzZUlQdjZTb2NrZXRzKToKKyAgICB1c2VfcG9sbCA9IEZhbHNlCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpLCAnc2VsZWN0LnBvbGwgcmVxdWlyZWQnKQorY2xhc3MgVGVzdEFQSV9Vc2VJUHY2UG9sbChUZXN0QVBJX1VzZUlQdjZTb2NrZXRzKToKKyAgICB1c2VfcG9sbCA9IFRydWUKKworY2xhc3MgVGVzdEFQSV9Vc2VVbml4U29ja2V0c1NlbGVjdChUZXN0QVBJX1VzZVVuaXhTb2NrZXRzKToKKyAgICB1c2VfcG9sbCA9IEZhbHNlCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpLCAnc2VsZWN0LnBvbGwgcmVxdWlyZWQnKQorY2xhc3MgVGVzdEFQSV9Vc2VVbml4U29ja2V0c1BvbGwoVGVzdEFQSV9Vc2VVbml4U29ja2V0cyk6CisgICAgdXNlX3BvbGwgPSBUcnVlCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtIZWxwZXJGdW5jdGlvblRlc3RzLCBEaXNwYXRjaGVyVGVzdHMsIERpc3BhdGNoZXJXaXRoU2VuZFRlc3RzLAotICAgICAgICAgICAgIERpc3BhdGNoZXJXaXRoU2VuZFRlc3RzX1VzZVBvbGwsIFRlc3RBUElfVXNlU2VsZWN0LAotICAgICAgICAgICAgIFRlc3RBUElfVXNlUG9sbCwgRmlsZVdyYXBwZXJUZXN0XQorICAgICAgICAgICAgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHNfVXNlUG9sbCwgRmlsZVdyYXBwZXJUZXN0LAorICAgICAgICAgICAgVGVzdEFQSV9Vc2VJUHY0U2VsZWN0LCBUZXN0QVBJX1VzZUlQdjRQb2xsLCBUZXN0QVBJX1VzZUlQdjZTZWxlY3QsCisgICAgICAgICAgICBUZXN0QVBJX1VzZUlQdjZQb2xsLCBUZXN0QVBJX1VzZVVuaXhTb2NrZXRzU2VsZWN0LAorICAgICAgICAgICAgVGVzdEFQSV9Vc2VVbml4U29ja2V0c1BvbGxdCiAgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0cykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5IGIvTGliL3Rlc3QvdGVzdF9iYXNlNjQucHkKaW5kZXggY2E5NDUwNC4uMjU2OTQ3NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iYXNlNjQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iYXNlNjQucHkKQEAgLTEwMyw0NCArMTAzLDUzIEBACiAKICAgICBkZWYgdGVzdF9iNjRkZWNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGIiZDNkM0xuQjVkR2h2Ymk1dmNtYz0iKSwgYiJ3d3cucHl0aG9uLm9yZyIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYidBQT09JyksIGInXHgwMCcpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJZUT09IiksIGIiYSIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJZV0k9IiksIGIiYWIiKQotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGIiWVdKaiIpLCBiImFiYyIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYcEJRa05FIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiUlVaSFNFbEtTMHhOVGs5UVVWSlRWRlZXVjFoWldqQXhNak0wXG5OVCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIlkzT0RraFFDTXdYaVlxS0NrN09qdytMQzRnVzExN2ZRPT0iKSwKLSAgICAgICAgICAgYiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKLSAgICAgICAgICAgYiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICAgICAgICAgYiIwMTIzNDU2Nzg5IUAjMF4mKigpOzo8PiwuIFtde30iKQotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGInJyksIGInJykKKworICAgICAgICB0ZXN0cyA9IHtiImQzZDNMbkI1ZEdodmJpNXZjbWM9IjogYiJ3d3cucHl0aG9uLm9yZyIsCisgICAgICAgICAgICAgICAgIGInQUE9PSc6IGInXHgwMCcsCisgICAgICAgICAgICAgICAgIGIiWVE9PSI6IGIiYSIsCisgICAgICAgICAgICAgICAgIGIiWVdJPSI6IGIiYWIiLAorICAgICAgICAgICAgICAgICBiIllXSmoiOiBiImFiYyIsCisgICAgICAgICAgICAgICAgIGIiWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWHBCUWtORSIKKyAgICAgICAgICAgICAgICAgYiJSVVpIU0VsS1MweE5UazlRVVZKVFZGVldWMWhaV2pBeE1qTTBcbk5UIgorICAgICAgICAgICAgICAgICBiIlkzT0RraFFDTXdYaVlxS0NrN09qdytMQzRnVzExN2ZRPT0iOgorCisgICAgICAgICAgICAgICAgIGIiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCisgICAgICAgICAgICAgICAgIGIiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCisgICAgICAgICAgICAgICAgIGIiMDEyMzQ1Njc4OSFAIzBeJiooKTs6PD4sLiBbXXt9IiwKKyAgICAgICAgICAgICAgICAgYicnOiBiJycsCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIGRhdGEsIHJlcyBpbiB0ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhLmRlY29kZSgnYXNjaWknKSksIHJlcykKKwogICAgICAgICAjIFRlc3Qgd2l0aCBhcmJpdHJhcnkgYWx0ZXJuYXRpdmUgY2hhcmFjdGVycwotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGInMDFhKmIkY2QnLCBhbHRjaGFycz1iJyokJyksIGInXHhkM1ZceGJlb1x4ZjdceDFkJykKLSAgICAgICAgIyBDaGVjayBpZiBwYXNzaW5nIGEgc3RyIG9iamVjdCByYWlzZXMgYW4gZXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCBiIiIsIGFsdGNoYXJzPSIiKQorICAgICAgICB0ZXN0c19hbHRjaGFycyA9IHsoYicwMWEqYiRjZCcsIGInKiQnKTogYidceGQzVlx4YmVvXHhmN1x4MWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgIGZvciAoZGF0YSwgYWx0Y2hhcnMpLCByZXMgaW4gdGVzdHNfYWx0Y2hhcnMuaXRlbXMoKToKKyAgICAgICAgICAgIGRhdGFfc3RyID0gZGF0YS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgIGFsdGNoYXJzX3N0ciA9IGFsdGNoYXJzLmRlY29kZSgnYXNjaWknKQorCisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGEsIGFsdGNoYXJzPWFsdGNoYXJzKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhX3N0ciwgYWx0Y2hhcnM9YWx0Y2hhcnMpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGEsIGFsdGNoYXJzPWFsdGNoYXJzX3N0ciksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoZGF0YV9zdHIsIGFsdGNoYXJzPWFsdGNoYXJzX3N0ciksIHJlcykKKwogICAgICAgICAjIFRlc3Qgc3RhbmRhcmQgYWxwaGFiZXQKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiImQzZDNMbkI1ZEdodmJpNXZjbWM9IiksIGIid3d3LnB5dGhvbi5vcmciKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiWVE9PSIpLCBiImEiKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiWVdJPSIpLCBiImFiIikKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiIllXSmoiKSwgYiJhYmMiKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiIiksIGIiIikKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiIllXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0ZVhwQlFrTkUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiJSVVpIU0VsS1MweE5UazlRVVZKVFZGVldWMWhaV2pBeE1qTTBOVCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIlkzT0RraFFDTXdYaVlxS0NrN09qdytMQzRnVzExN2ZRPT0iKSwKLSAgICAgICAgICAgYiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKLSAgICAgICAgICAgYiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICAgICAgICAgYiIwMTIzNDU2Nzg5IUAjMF4mKigpOzo8PiwuIFtde30iKQotICAgICAgICAjIENoZWNrIGlmIHBhc3NpbmcgYSBzdHIgb2JqZWN0IHJhaXNlcyBhbiBlcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUsIGIiIiwgYWx0Y2hhcnM9IiIpCisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoZGF0YSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJykpLCByZXMpCisKICAgICAgICAgIyBUZXN0IHdpdGggJ1VSTCBzYWZlJyBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXJzCi0gICAgICAgIGVxKGJhc2U2NC51cmxzYWZlX2I2NGRlY29kZShiJzAxYS1iX2NkJyksIGInXHhkM1ZceGJlb1x4ZjdceDFkJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQudXJsc2FmZV9iNjRkZWNvZGUsICIiKQorICAgICAgICB0ZXN0c191cmxzYWZlID0ge2InMDFhLWJfY2QnOiBiJ1x4ZDNWXHhiZW9ceGY3XHgxZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicnOiBiJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBmb3IgZGF0YSwgcmVzIGluIHRlc3RzX3VybHNhZmUuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC51cmxzYWZlX2I2NGRlY29kZShkYXRhKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LnVybHNhZmVfYjY0ZGVjb2RlKGRhdGEuZGVjb2RlKCdhc2NpaScpKSwgcmVzKQogCiAgICAgZGVmIHRlc3RfYjY0ZGVjb2RlX3BhZGRpbmdfZXJyb3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCBiJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCAnYWJjJykKIAogICAgIGRlZiB0ZXN0X2I2NGRlY29kZV9pbnZhbGlkX2NoYXJzKHNlbGYpOgogICAgICAgICAjIGlzc3VlIDE0NjYwNjU6IFRlc3Qgc29tZSBpbnZhbGlkIGNoYXJhY3RlcnMuCkBAIC0xNTUsOCArMTY0LDExIEBACiAgICAgICAgICAgICAgICAgIChiJ1lXSmpcbllXST0nLCBiJ2FiY2FiJykpCiAgICAgICAgIGZvciBic3RyLCByZXMgaW4gdGVzdHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhc2U2NC5iNjRkZWNvZGUoYnN0ciksIHJlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFzZTY0LmI2NGRlY29kZShic3RyLmRlY29kZSgnYXNjaWknKSksIHJlcykKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IpOgogICAgICAgICAgICAgICAgIGJhc2U2NC5iNjRkZWNvZGUoYnN0ciwgdmFsaWRhdGU9VHJ1ZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IpOgorICAgICAgICAgICAgICAgIGJhc2U2NC5iNjRkZWNvZGUoYnN0ci5kZWNvZGUoJ2FzY2lpJyksIHZhbGlkYXRlPVRydWUpCiAKICAgICBkZWYgdGVzdF9iMzJlbmNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbApAQCAtMTcxLDQwICsxODMsNjMgQEAKIAogICAgIGRlZiB0ZXN0X2IzMmRlY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYicnKSwgYicnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInQUE9PT09PT0nKSwgYidceDAwJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01FPT09PT09JyksIGInYScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJBPT09PScpLCBiJ2FiJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHPT09JyksIGInYWJjJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHWkE9JyksIGInYWJjZCcpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJHR1pERicpLCBiJ2FiY2RlJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCAiIikKKyAgICAgICAgdGVzdHMgPSB7YicnOiBiJycsCisgICAgICAgICAgICAgICAgIGInQUE9PT09PT0nOiBiJ1x4MDAnLAorICAgICAgICAgICAgICAgICBiJ01FPT09PT09JzogYidhJywKKyAgICAgICAgICAgICAgICAgYidNRlJBPT09PSc6IGInYWInLAorICAgICAgICAgICAgICAgICBiJ01GUkdHPT09JzogYidhYmMnLAorICAgICAgICAgICAgICAgICBiJ01GUkdHWkE9JzogYidhYmNkJywKKyAgICAgICAgICAgICAgICAgYidNRlJHR1pERic6IGInYWJjZGUnLAorICAgICAgICAgICAgICAgICB9CisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJykpLCByZXMpCiAKICAgICBkZWYgdGVzdF9iMzJkZWNvZGVfY2FzZWZvbGQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInJywgVHJ1ZSksIGInJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01FPT09PT09JywgVHJ1ZSksIGInYScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJBPT09PScsIFRydWUpLCBiJ2FiJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHPT09JywgVHJ1ZSksIGInYWJjJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHWkE9JywgVHJ1ZSksIGInYWJjZCcpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJHR1pERicsIFRydWUpLCBiJ2FiY2RlJykKLSAgICAgICAgIyBMb3dlciBjYXNlcwotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWU9PT09PT0nLCBUcnVlKSwgYidhJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ21mcmE9PT09JywgVHJ1ZSksIGInYWInKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWZyZ2c9PT0nLCBUcnVlKSwgYidhYmMnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWZyZ2d6YT0nLCBUcnVlKSwgYidhYmNkJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ21mcmdnemRmJywgVHJ1ZSksIGInYWJjZGUnKQotICAgICAgICAjIEV4cGVjdGVkIGV4Y2VwdGlvbnMKKyAgICAgICAgdGVzdHMgPSB7YicnOiBiJycsCisgICAgICAgICAgICAgICAgIGInTUU9PT09PT0nOiBiJ2EnLAorICAgICAgICAgICAgICAgICBiJ01GUkE9PT09JzogYidhYicsCisgICAgICAgICAgICAgICAgIGInTUZSR0c9PT0nOiBiJ2FiYycsCisgICAgICAgICAgICAgICAgIGInTUZSR0daQT0nOiBiJ2FiY2QnLAorICAgICAgICAgICAgICAgICBiJ01GUkdHWkRGJzogYidhYmNkZScsCisgICAgICAgICAgICAgICAgICMgTG93ZXIgY2FzZXMKKyAgICAgICAgICAgICAgICAgYidtZT09PT09PSc6IGInYScsCisgICAgICAgICAgICAgICAgIGInbWZyYT09PT0nOiBiJ2FiJywKKyAgICAgICAgICAgICAgICAgYidtZnJnZz09PSc6IGInYWJjJywKKyAgICAgICAgICAgICAgICAgYidtZnJnZ3phPSc6IGInYWJjZCcsCisgICAgICAgICAgICAgICAgIGInbWZyZ2d6ZGYnOiBiJ2FiY2RlJywKKyAgICAgICAgICAgICAgICAgfQorCisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YSwgVHJ1ZSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJyksIFRydWUpLCByZXMpCisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCBiJ21lPT09PT09JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCAnbWU9PT09PT0nKQorCiAgICAgICAgICMgTWFwcGluZyB6ZXJvIGFuZCBvbmUKICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01MTzIzNDU2JyksIGInYlx4ZGRceGFkXHhmM1x4YmUnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTTEwMjM0NTYnLCBtYXAwMT1iJ0wnKSwgYidiXHhkZFx4YWRceGYzXHhiZScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNMTAyMzQ1NicsIG1hcDAxPWInSScpLCBiJ2JceDFkXHhhZFx4ZjNceGJlJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCBiIiIsIG1hcDAxPSIiKQorICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKCdNTE8yMzQ1NicpLCBiJ2JceGRkXHhhZFx4ZjNceGJlJykKKworICAgICAgICBtYXBfdGVzdHMgPSB7KGInTTEwMjM0NTYnLCBiJ0wnKTogYidiXHhkZFx4YWRceGYzXHhiZScsCisgICAgICAgICAgICAgICAgICAgICAoYidNMTAyMzQ1NicsIGInSScpOiBiJ2JceDFkXHhhZFx4ZjNceGJlJywKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIChkYXRhLCBtYXAwMSksIHJlcyBpbiBtYXBfdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGRhdGFfc3RyID0gZGF0YS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgIG1hcDAxX3N0ciA9IG1hcDAxLmRlY29kZSgnYXNjaWknKQorCisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGEsIG1hcDAxPW1hcDAxKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhX3N0ciwgbWFwMDE9bWFwMDEpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGEsIG1hcDAxPW1hcDAxX3N0ciksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YV9zdHIsIG1hcDAxPW1hcDAxX3N0ciksIHJlcykKIAogICAgIGRlZiB0ZXN0X2IzMmRlY29kZV9lcnJvcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsIGInYWJjJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsIGInQUJDREVGPT0nKQorICAgICAgICBmb3IgZGF0YSBpbiBbYidhYmMnLCBiJ0FCQ0RFRj09J106CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yKToKKyAgICAgICAgICAgICAgICBiYXNlNjQuYjMyZGVjb2RlKGRhdGEpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yKToKKyAgICAgICAgICAgICAgICBiYXNlNjQuYjMyZGVjb2RlKGRhdGEuZGVjb2RlKCdhc2NpaScpKQogCiAgICAgZGVmIHRlc3RfYjE2ZW5jb2RlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKQEAgLTIxNSwxMiArMjUwLDI0IEBACiAgICAgZGVmIHRlc3RfYjE2ZGVjb2RlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgZXEoYmFzZTY0LmIxNmRlY29kZShiJzAxMDJBQkNERUYnKSwgYidceDAxXHgwMlx4YWJceGNkXHhlZicpCisgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoJzAxMDJBQkNERUYnKSwgYidceDAxXHgwMlx4YWJceGNkXHhlZicpCiAgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoYicwMCcpLCBiJ1x4MDAnKQorICAgICAgICBlcShiYXNlNjQuYjE2ZGVjb2RlKCcwMCcpLCBiJ1x4MDAnKQogICAgICAgICAjIExvd2VyIGNhc2UgaXMgbm90IGFsbG93ZWQgd2l0aG91dCBhIGZsYWcKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iMTZkZWNvZGUsIGInMDEwMmFiY2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjE2ZGVjb2RlLCAnMDEwMmFiY2RlZicpCiAgICAgICAgICMgQ2FzZSBmb2xkCiAgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoYicwMTAyYWJjZGVmJywgVHJ1ZSksIGInXHgwMVx4MDJceGFiXHhjZFx4ZWYnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iMTZkZWNvZGUsICIiKQorICAgICAgICBlcShiYXNlNjQuYjE2ZGVjb2RlKCcwMTAyYWJjZGVmJywgVHJ1ZSksIGInXHgwMVx4MDJceGFiXHhjZFx4ZWYnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlX25vbmFzY2lpX3N0cihzZWxmKToKKyAgICAgICAgZGVjb2RlX2Z1bmNzID0gKGJhc2U2NC5iNjRkZWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0LnVybHNhZmVfYjY0ZGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0LmIzMmRlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NC5iMTZkZWNvZGUpCisgICAgICAgIGZvciBmIGluIGRlY29kZV9mdW5jczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYsICd3aXRoIG5vbi1hc2NpaSBceGNiJykKIAogICAgIGRlZiB0ZXN0X0Vycm9ySGVyaXRhZ2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGJpbmFzY2lpLkVycm9yLCBWYWx1ZUVycm9yKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5IGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKaW5kZXggZjNjNmViYi4uMGU1NDU5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKQEAgLTEsMyArMSwxMyBAQAorIiIiQmlnbWVtIHRlc3RzIC0gdGVzdHMgZm9yIHRoZSAzMi1iaXQgYm91bmRhcnkgaW4gY29udGFpbmVycy4KKworVGhlc2UgdGVzdHMgdHJ5IHRvIGV4ZXJjaXNlIHRoZSAzMi1iaXQgYm91bmRhcnkgdGhhdCBpcyBzb21ldGltZXMsIGlmCityYXJlbHksIGV4Y2VlZGVkIGluIHByYWN0aWNlLCBidXQgYWxtb3N0IG5ldmVyIHRlc3RlZC4gIFRoZXkgYXJlIHJlYWxseSBvbmx5CittZWFuaW5nZnVsIG9uIDY0LWJpdCBidWlsZHMgb24gbWFjaGluZXMgd2l0aCBhICpsb3QqIG9mIG1lbW9yeSwgYnV0IHRoZQordGVzdHMgYXJlIGFsd2F5cyBydW4sIHVzdWFsbHkgd2l0aCB2ZXJ5IGxvdyBtZW1vcnkgbGltaXRzIHRvIG1ha2Ugc3VyZSB0aGUKK3Rlc3RzIHRoZW1zZWx2ZXMgZG9uJ3Qgc3VmZmVyIGZyb20gYml0cm90LiAgVG8gcnVuIHRoZW0gZm9yIHJlYWwsIHBhc3MgYQoraGlnaCBtZW1vcnkgbGltaXQgdG8gcmVncnRlc3QsIHdpdGggdGhlIC1NIG9wdGlvbi4KKyIiIgorCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBiaWdtZW10ZXN0LCBfMUcsIF8yRywgXzRHCiAKQEAgLTYsMjAgKzE2LDM1IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgZnVuY3Rvb2xzCiAKKyMgVGhlc2UgdGVzdHMgYWxsIHVzZSBvbmUgb2YgdGhlIGJpZ21lbXRlc3QgZGVjb3JhdG9ycyB0byBpbmRpY2F0ZSBob3cgbXVjaAorIyBtZW1vcnkgdGhleSB1c2UgYW5kIGhvdyBtdWNoIG1lbW9yeSB0aGV5IG5lZWQgdG8gYmUgZXZlbiBtZWFuaW5nZnVsLiAgVGhlCisjIGRlY29yYXRvcnMgdGFrZSB0d28gYXJndW1lbnRzOiBhICdtZW11c2UnIGluZGljYXRvciBkZWNsYXJpbmcKKyMgKGFwcHJveGltYXRlKSBieXRlcyBwZXIgc2l6ZS11bml0IHRoZSB0ZXN0IHdpbGwgdXNlIChhdCBwZWFrIHVzYWdlKSwgYW5kIGEKKyMgJ21pbnNpemUnIGluZGljYXRvciBkZWNsYXJpbmcgYSBtaW5pbXVtICp1c2VmdWwqIHNpemUuICBBIHRlc3QgdGhhdAorIyBhbGxvY2F0ZXMgYSBieXRlc3RyaW5nIHRvIHRlc3QgdmFyaW91cyBvcGVyYXRpb25zIG5lYXIgdGhlIGVuZCB3aWxsIGhhdmUgYQorIyBtaW5zaXplIG9mIGF0IGxlYXN0IDJHYiAob3IgaXQgd291bGRuJ3QgcmVhY2ggdGhlIDMyLWJpdCBsaW1pdCwgc28gdGhlCisjIHRlc3Qgd291bGRuJ3QgYmUgdmVyeSB1c2VmdWwpIGFuZCBhIG1lbXVzZSBvZiAxIChvbmUgYnl0ZSBwZXIgc2l6ZS11bml0LAorIyBpZiBpdCBhbGxvY2F0ZXMgb25seSBvbmUgYmlnIHN0cmluZyBhdCBhIHRpbWUuKQorIworIyBXaGVuIHJ1biB3aXRoIGEgbWVtb3J5IGxpbWl0IHNldCwgYm90aCBkZWNvcmF0b3JzIHNraXAgdGVzdHMgdGhhdCBuZWVkCisjIG1vcmUgbWVtb3J5IHRoYW4gYXZhaWxhYmxlIHRvIGJlIG1lYW5pbmdmdWwuICBUaGUgcHJlY2lzaW9uYmlnbWVtdGVzdCB3aWxsCisjIGFsd2F5cyBwYXNzIG1pbnNpemUgYXMgc2l6ZSwgZXZlbiBpZiB0aGVyZSBpcyBtdWNoIG1vcmUgbWVtb3J5IGF2YWlsYWJsZS4KKyMgVGhlIGJpZ21lbXRlc3QgZGVjb3JhdG9yIHdpbGwgc2NhbGUgc2l6ZSB1cHdhcmQgdG8gZmlsbCBhdmFpbGFibGUgbWVtb3J5LgorIwogIyBCaWdtZW0gdGVzdGluZyBob3VzZXJ1bGVzOgogIwogIyAgLSBUcnkgbm90IHRvIGFsbG9jYXRlIHRvbyBtYW55IGxhcmdlIG9iamVjdHMuIEl0J3Mgb2theSB0byByZWx5IG9uCi0jICAgIHJlZmNvdW50aW5nIHNlbWFudGljcywgYnV0IGRvbid0IGZvcmdldCB0aGF0ICdzID0gY3JlYXRlX2xhcmdlc3RyaW5nKCknCisjICAgIHJlZmNvdW50aW5nIHNlbWFudGljcywgYW5kIGRvbid0IGZvcmdldCB0aGF0ICdzID0gY3JlYXRlX2xhcmdlc3RyaW5nKCknCiAjICAgIGRvZXNuJ3QgcmVsZWFzZSB0aGUgb2xkICdzJyAoaWYgaXQgZXhpc3RzKSB1bnRpbCB3ZWxsIGFmdGVyIGl0cyBuZXcKICMgICAgdmFsdWUgaGFzIGJlZW4gY3JlYXRlZC4gVXNlICdkZWwgcycgYmVmb3JlIHRoZSBjcmVhdGVfbGFyZ2VzdHJpbmcgY2FsbC4KICMKLSMgIC0gRG8gKm5vdCogY29tcGFyZSBsYXJnZSBvYmplY3RzIHVzaW5nIGFzc2VydEVxdWFsIG9yIHNpbWlsYXIuIEl0J3MgYQotIyAgICBsZW5ndGh5IG9wZXJhdGlvbiBhbmQgdGhlIGVycm9ybWVzc2FnZSB3aWxsIGJlIHV0dGVybHkgdXNlbGVzcyBkdWUgdG8KLSMgICAgaXRzIHNpemUuIFRvIG1ha2Ugc3VyZSB3aGV0aGVyIGEgcmVzdWx0IGhhcyB0aGUgcmlnaHQgY29udGVudHMsIGJldHRlcgotIyAgICB0byB1c2UgdGhlIHN0cmlwIG9yIGNvdW50IG1ldGhvZHMsIG9yIGNvbXBhcmUgbWVhbmluZ2Z1bCBzbGljZXMuCisjICAtIERvICpub3QqIGNvbXBhcmUgbGFyZ2Ugb2JqZWN0cyB1c2luZyBhc3NlcnRFcXVhbCwgYXNzZXJ0SW4gb3Igc2ltaWxhci4KKyMgICAgSXQncyBhIGxlbmd0aHkgb3BlcmF0aW9uIGFuZCB0aGUgZXJyb3JtZXNzYWdlIHdpbGwgYmUgdXR0ZXJseSB1c2VsZXNzCisjICAgIGR1ZSB0byBpdHMgc2l6ZS4gIFRvIG1ha2Ugc3VyZSB3aGV0aGVyIGEgcmVzdWx0IGhhcyB0aGUgcmlnaHQgY29udGVudHMsCisjICAgIGJldHRlciB0byB1c2UgdGhlIHN0cmlwIG9yIGNvdW50IG1ldGhvZHMsIG9yIGNvbXBhcmUgbWVhbmluZ2Z1bCBzbGljZXMuCiAjCiAjICAtIERvbid0IGZvcmdldCB0byB0ZXN0IGZvciBsYXJnZSBpbmRpY2VzLCBvZmZzZXRzIGFuZCByZXN1bHRzIGFuZCBzdWNoLAotIyAgICBpbiBhZGRpdGlvbiB0byBsYXJnZSBzaXplcy4KKyMgICAgaW4gYWRkaXRpb24gdG8gbGFyZ2Ugc2l6ZXMuIEFueXRoaW5nIHRoYXQgcHJvYmVzIHRoZSAzMi1iaXQgYm91bmRhcnkuCiAjCiAjICAtIFdoZW4gcmVwZWF0aW5nIGFuIG9iamVjdCAoc2F5LCBhIHN1YnN0cmluZywgb3IgYSBzbWFsbCBsaXN0KSB0byBjcmVhdGUKICMgICAgYSBsYXJnZSBvYmplY3QsIG1ha2UgdGhlIHN1Ym9iamVjdCBvZiBhIGxlbmd0aCB0aGF0IGlzIG5vdCBhIHBvd2VyIG9mCkBAIC0zNywxMyArNjIsMTQgQEAKICMgZmFpbCBhcyB3ZWxsLiBJIGRvIG5vdCBrbm93IHdoZXRoZXIgaXQgaXMgZHVlIHRvIG1lbW9yeSBmcmFnbWVudGF0aW9uCiAjIGlzc3Vlcywgb3Igb3RoZXIgc3BlY2lmaWNzIG9mIHRoZSBwbGF0Zm9ybSBtYWxsb2MoKSByb3V0aW5lLgogCi1jaGFyYWN0ZXJfc2l6ZSA9IDQgaWYgc3lzLm1heHVuaWNvZGUgPiAweEZGRkYgZWxzZSAyCithc2NpaV9jaGFyX3NpemUgPSAxCit1Y3MyX2NoYXJfc2l6ZSA9IDIKK3VjczRfY2hhcl9zaXplID0gNAogCiAKIGNsYXNzIEJhc2VTdHJUZXN0OgogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQotICAgIGRlZiB0ZXN0X2NhcGl0YWxpemUoc2VsZiwgc2l6ZSk6CisgICAgZGVmIF90ZXN0X2NhcGl0YWxpemUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIFNVQlNUUiA9IHNlbGYuZnJvbV9sYXRpbjEoJyBhYmMgZGVmIGdoaScpCiAgICAgICAgIHMgPSBfKCctJykgKiBzaXplICsgU1VCU1RSCkBAIC05Miw3ICsxMTgsNyBAQAogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBzID0gXygnLScpICogc2l6ZQogICAgICAgICB0YWJzaXplID0gOAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZXhwYW5kdGFicygpLCBzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5leHBhbmR0YWJzKCkgPT0gcykKICAgICAgICAgZGVsIHMKICAgICAgICAgc2xlbiwgcmVtYWluZGVyID0gZGl2bW9kKHNpemUsIHRhYnNpemUpCiAgICAgICAgIHMgPSBfKCcgICAgICAgXHQnKSAqIHNsZW4KQEAgLTM0Nyw3ICszNzMsNyBAQAogICAgICMgc3VmZmVyIGZvciB0aGUgbGlzdCBzaXplLiAoT3RoZXJ3aXNlLCBpdCdkIGNvc3QgYW5vdGhlciA0OCB0aW1lcwogICAgICMgc2l6ZSBpbiBieXRlcyEpIE5ldmVydGhlbGVzcywgYSBsaXN0IG9mIHNpemUgdGFrZXMKICAgICAjIDgqc2l6ZSBieXRlcy4KLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDUsIG1lbXVzZT0xMCkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDUsIG1lbXVzZT0yICogYXNjaWlfY2hhcl9zaXplICsgOCkKICAgICBkZWYgdGVzdF9zcGxpdF9sYXJnZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgcyA9IF8oJyBhJykgKiBzaXplICsgXygnICcpCkBAIC0zNjYsOSArMzkyLDkgQEAKICAgICAgICAgIyB0YWtlIHVwIGFuIGlub3JkaW5hdGUgYW1vdW50IG9mIG1lbW9yeQogICAgICAgICBjaHVua3NpemUgPSBpbnQoc2l6ZSAqKiAwLjUgKyAyKSAvLyAyCiAgICAgICAgIFNVQlNUUiA9IF8oJyAnKSAqIGNodW5rc2l6ZSArIF8oJ1xuJykgKyBfKCcgJykgKiBjaHVua3NpemUgKyBfKCdcclxuJykKLSAgICAgICAgcyA9IFNVQlNUUiAqIGNodW5rc2l6ZQorICAgICAgICBzID0gU1VCU1RSICogKGNodW5rc2l6ZSAqIDIpCiAgICAgICAgIGwgPSBzLnNwbGl0bGluZXMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsKSwgY2h1bmtzaXplICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obCksIGNodW5rc2l6ZSAqIDQpCiAgICAgICAgIGV4cGVjdGVkID0gXygnICcpICogY2h1bmtzaXplCiAgICAgICAgIGZvciBpdGVtIGluIGw6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW0sIGV4cGVjdGVkKQpAQCAtMzk0LDggKzQyMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMpLCBzaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc3RyaXAoKSwgU1VCU1RSLnN0cmlwKCkpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCi0gICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZiwgc2l6ZSk6CisgICAgZGVmIF90ZXN0X3N3YXBjYXNlKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBTVUJTVFIgPSBfKCJhQmNEZUZHMTIuJ1x4YTlceDAwIikKICAgICAgICAgc3VibGVuID0gbGVuKFNVQlNUUikKQEAgLTQwNiw4ICs0MzEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbOnN1YmxlbiAqIDNdLCBTVUJTVFIuc3dhcGNhc2UoKSAqIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1stc3VibGVuICogMzpdLCBTVUJTVFIuc3dhcGNhc2UoKSAqIDMpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCi0gICAgZGVmIHRlc3RfdGl0bGUoc2VsZiwgc2l6ZSk6CisgICAgZGVmIF90ZXN0X3RpdGxlKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBTVUJTVFIgPSBfKCdTcGFhSEFhYUFhaGFtJykKICAgICAgICAgcyA9IFNVQlNUUiAqIChzaXplIC8vIGxlbihTVUJTVFIpICsgMikKQEAgLTQxOSwxNCArNDQzLDcgQEAKICAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIFNVQlNUUiA9IF8oJ2Faei56LkFhei4nKQotICAgICAgICBpZiBpc2luc3RhbmNlKFNVQlNUUiwgc3RyKToKLSAgICAgICAgICAgIHRyYW5zID0gewotICAgICAgICAgICAgICAgIG9yZChfKCcuJykpOiBfKCctJyksCi0gICAgICAgICAgICAgICAgb3JkKF8oJ2EnKSk6IF8oJyEnKSwKLSAgICAgICAgICAgICAgICBvcmQoXygnWicpKTogXygnJCcpLAotICAgICAgICAgICAgfQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJhbnMgPSBieXRlcy5tYWtldHJhbnMoYicuYVonLCBiJy0hJCcpCisgICAgICAgIHRyYW5zID0gYnl0ZXMubWFrZXRyYW5zKGInLmFaJywgYictISQnKQogICAgICAgICBzdWJsZW4gPSBsZW4oU1VCU1RSKQogICAgICAgICByZXBlYXRzID0gc2l6ZSAvLyBzdWJsZW4gKyAyCiAgICAgICAgIHMgPSBTVUJTVFIgKiByZXBlYXRzCkBAIC01MTksMTkgKzUzNiwxOSBAQAogICAgICAgICBlZGdlID0gXygnLScpICogKHNpemUgLy8gMikKICAgICAgICAgcyA9IF8oJycpLmpvaW4oW2VkZ2UsIFNVQlNUUiwgZWRnZV0pCiAgICAgICAgIGRlbCBlZGdlCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oU1VCU1RSLCBzKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKFNVQlNUUiAqIDIsIHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oXygnLScpLCBzKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKF8oJ2EnKSwgcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFNVQlNUUiBpbiBzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFNVQlNUUiAqIDIgaW4gcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF8oJy0nKSBpbiBzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF8oJ2EnKSBpbiBzKQogICAgICAgICBzICs9IF8oJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEluKF8oJ2EnKSwgcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF8oJ2EnKSBpbiBzKQogCiAgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPTIpCiAgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgczEgPSBfKCctJykgKiBzaXplCiAgICAgICAgIHMyID0gXygnLScpICogc2l6ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMxLCBzMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMxID09IHMyKQogICAgICAgICBkZWwgczIKICAgICAgICAgczIgPSBzMSArIF8oJ2EnKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMxID09IHMyKQpAQCAtNTUyLDcgKzU2OSw3IEBACiAgICAgICAgIGgxID0gaGFzaChzKQogICAgICAgICBkZWwgcwogICAgICAgICBzID0gXygnXHgwMCcpICogKHNpemUgKyAxKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGgxID09IGhhc2gocykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaDEsIGhhc2gocykpCiAKIAogY2xhc3MgU3RyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgQmFzZVN0clRlc3QpOgpAQCAtNTYzLDcgKzU4MCw2IEBACiAgICAgZGVmIGJhc2ljX2VuY29kZV90ZXN0KHNlbGYsIHNpemUsIGVuYywgYz0nLicsIGV4cGVjdGVkc2l6ZT1Ob25lKToKICAgICAgICAgaWYgZXhwZWN0ZWRzaXplIGlzIE5vbmU6CiAgICAgICAgICAgICBleHBlY3RlZHNpemUgPSBzaXplCi0KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcyA9IGMgKiBzaXplCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzLmVuY29kZShlbmMpKSwgZXhwZWN0ZWRzaXplKQpAQCAtNTgyLDQ4ICs1OTgsNjQgQEAKICAgICAgICAgICAgICAgICBtZW11c2UgPSBtZXRoLm1lbXVzZQogICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtZXRoLm1lbXVzZSA9IGNoYXJhY3Rlcl9zaXplICogbWVtdXNlCisgICAgICAgICAgICBtZXRoLm1lbXVzZSA9IGFzY2lpX2NoYXJfc2l6ZSAqIG1lbXVzZQogICAgICAgICAgICAgc2VsZi5fYWRqdXN0ZWRbbmFtZV0gPSBtZW11c2UKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgZm9yIG5hbWUsIG1lbXVzZSBpbiBzZWxmLl9hZGp1c3RlZC5pdGVtcygpOgogICAgICAgICAgICAgZ2V0YXR0cih0eXBlKHNlbGYpLCBuYW1lKS5tZW11c2UgPSBtZW11c2UKIAotICAgICMgdGhlIHV0ZjggZW5jb2RlciBwcmVhbGxvY2F0ZXMgYmlnIHRpbWUgKDR4IHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycykKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSArIDQpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT11Y3M0X2NoYXJfc2l6ZSAqIDMpCisgICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9jYXBpdGFsaXplKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPXVjczRfY2hhcl9zaXplICogMykKKyAgICBkZWYgdGVzdF90aXRsZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF90aXRsZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT11Y3M0X2NoYXJfc2l6ZSAqIDMpCisgICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3Rfc3dhcGNhc2Uoc2l6ZSkKKworICAgICMgTWFueSBjb2RlY3MgY29udmVydCB0byB0aGUgbGVnYWN5IHJlcHJlc2VudGF0aW9uIGZpcnN0LCBleHBsYWluaW5nCisgICAgIyB3aHkgd2UgYWRkICd1Y3M0X2NoYXJfc2l6ZScgdG8gdGhlICdtZW11c2UnIGJlbG93LgorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICsgMSkKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICd1dGYtOCcpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA2ICsgMiwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgMSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA2ICsgMiwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSArIHVjczRfY2hhcl9zaXplICsgMSkKICAgICBkZWYgdGVzdF9lbmNvZGVfcmF3X3VuaWNvZGVfZXNjYXBlKHNlbGYsIHNpemUpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAncmF3X3VuaWNvZGVfZXNjYXBlJykKICAgICAgICAgZXhjZXB0IE1lbW9yeUVycm9yOgogICAgICAgICAgICAgcGFzcyAjIGFjY2VwdGFibGUgb24gMzItYml0CiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA1ICsgNzAsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSArIDEpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNSArIDcwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICsgdWNzNF9jaGFyX3NpemUgKyAxKQogICAgIGRlZiB0ZXN0X2VuY29kZV91dGY3KHNlbGYsIHNpemUpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAndXRmNycpCiAgICAgICAgIGV4Y2VwdCBNZW1vcnlFcnJvcjoKICAgICAgICAgICAgIHBhc3MgIyBhY2NlcHRhYmxlIG9uIDMyLWJpdAogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNCArIDUsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSArIDQpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNCArIDUsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKyB1Y3M0X2NoYXJfc2l6ZSArIDQpCiAgICAgZGVmIHRlc3RfZW5jb2RlX3V0ZjMyKHNlbGYsIHNpemUpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAndXRmMzInLCBleHBlY3RlZHNpemU9NCpzaXplKzQpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAndXRmMzInLCBleHBlY3RlZHNpemU9NCAqIHNpemUgKyA0KQogICAgICAgICBleGNlcHQgTWVtb3J5RXJyb3I6CiAgICAgICAgICAgICBwYXNzICMgYWNjZXB0YWJsZSBvbiAzMi1iaXQKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC0gMSwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgMSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAtIDEsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKyAxKQogICAgIGRlZiB0ZXN0X2VuY29kZV9hc2NpaShzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfZW5jb2RlX3Rlc3Qoc2l6ZSwgJ2FzY2lpJywgYz0nQScpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiAyKQorICAgICMgc3RyICUgKC4uLikgdXNlcyBhIFB5X1VDUzQgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICogMiArIHVjczRfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmLCBzaXplKToKICAgICAgICAgcyA9ICctJyAqIHNpemUKICAgICAgICAgc2YgPSAnJXMnICUgKHMsKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHNmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocyA9PSBzZikKICAgICAgICAgZGVsIHNmCiAgICAgICAgIHNmID0gJy4uJXMuLicgJSAocywpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNmKSwgbGVuKHMpICsgNCkKQEAgLTY0MCw3ICs2NzIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJy4nKSwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCctJyksIHNpemUgKiAyKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICogMikKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICogMikKICAgICBkZWYgdGVzdF9yZXByX3NtYWxsKHNlbGYsIHNpemUpOgogICAgICAgICBzID0gJy0nICogc2l6ZQogICAgICAgICBzID0gcmVwcihzKQpAQCAtNjYxLDcgKzY5Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnXFwnKSwgc2l6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcwJyksIHNpemUgKiAyKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICogNSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICogNSkKICAgICBkZWYgdGVzdF9yZXByX2xhcmdlKHNlbGYsIHNpemUpOgogICAgICAgICBzID0gJ1x4MDAnICogc2l6ZQogICAgICAgICBzID0gcmVwcihzKQpAQCAtNjcxLDcgKzcwMywxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJ1xcJyksIHNpemUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnMCcpLCBzaXplICogMikKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDUgKyAxLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiA3KQorICAgICMgYXNjaWkoKSBjYWxscyBlbmNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKSwgd2hpY2ggaXRzZWxmCisgICAgIyBjcmVhdGVzIGEgdGVtcG9yYXJ5IFB5X1VOSUNPREUgcmVwcmVzZW50YXRpb24gaW4gYWRkaXRpb24gdG8gdGhlCisgICAgIyBvcmlnaW5hbCAoUHlfVUNTMikgb25lCisgICAgIyBUaGVyZSdzIGFsc28gc29tZSBvdmVyYWxsb2NhdGlvbiB3aGVuIHJlc2l6aW5nIHRoZSBhc2NpaSgpIHJlc3VsdAorICAgICMgdGhhdCBpc24ndCB0YWtlbiBpbnRvIGFjY291bnQgaGVyZS4KKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyA1ICsgMSwgbWVtdXNlPXVjczJfY2hhcl9zaXplICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVjczRfY2hhcl9zaXplICsgYXNjaWlfY2hhcl9zaXplICogNikKICAgICBkZWYgdGVzdF91bmljb2RlX3JlcHIoc2VsZiwgc2l6ZSk6CiAgICAgICAgICMgVXNlIGFuIGFzc2lnbmVkLCBidXQgbm90IHByaW50YWJsZSBjb2RlIHBvaW50LgogICAgICAgICAjIEl0IGlzIGluIHRoZSByYW5nZSBvZiB0aGUgbG93IHN1cnJvZ2F0ZXMgXHVEQzAwLVx1REZGRi4KQEAgLTY4Niw5ICs3MjQsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgciA9IHMgPSBOb25lCiAKLSAgICAjIFRoZSBjaGFyYWN0ZXIgdGFrZXMgNCBieXRlcyBldmVuIGluIFVDUy0yIGJ1aWxkcyBiZWNhdXNlIGl0IHdpbGwKLSAgICAjIGJlIGRlY29tcG9zZWQgaW50byBzdXJyb2dhdGVzLgotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDUgKyAxLCBtZW11c2U9NCArIGNoYXJhY3Rlcl9zaXplICogOSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyA1ICsgMSwgbWVtdXNlPXVjczRfY2hhcl9zaXplICogMiArIGFzY2lpX2NoYXJfc2l6ZSAqIDEwKQogICAgIGRlZiB0ZXN0X3VuaWNvZGVfcmVwcl93aWRlKHNlbGYsIHNpemUpOgogICAgICAgICBjaGFyID0gIlxVMDAwMURDQkEiCiAgICAgICAgIHMgPSBjaGFyICogc2l6ZQpAQCAtNzAxLDM5ICs3MzcsNzYgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHIgPSBzID0gTm9uZQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNSwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICogKDYgKyAxKSkKLSAgICBkZWYgX3Rlc3RfdW5pY29kZV9yZXByX292ZXJmbG93KHNlbGYsIHNpemUpOgotICAgICAgICAjIFhYWCBub3Qgc3VyZSB3aGF0IHRoaXMgdGVzdCBpcyBhYm91dAotICAgICAgICBjaGFyID0gIlx1RENCQSIKLSAgICAgICAgcyA9IGNoYXIgKiBzaXplCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHIgPSByZXByKHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocyA9PSBldmFsKHIpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgciA9IHMgPSBOb25lCisgICAgIyBUaGUgb3JpZ2luYWwgdGVzdF90cmFuc2xhdGUgaXMgb3ZlcnJpZGVuIGhlcmUsIHNvIGFzIHRvIGdldCB0aGUKKyAgICAjIGNvcnJlY3Qgc2l6ZSBlc3RpbWF0ZTogc3RyLnRyYW5zbGF0ZSgpIHVzZXMgYW4gaW50ZXJtZWRpYXRlIFB5X1VDUzQKKyAgICAjIHJlcHJlc2VudGF0aW9uLgorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKiAyICsgdWNzNF9jaGFyX3NpemUpCisgICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYsIHNpemUpOgorICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQorICAgICAgICBTVUJTVFIgPSBfKCdhWnouei5BYXouJykKKyAgICAgICAgdHJhbnMgPSB7CisgICAgICAgICAgICBvcmQoXygnLicpKTogXygnLScpLAorICAgICAgICAgICAgb3JkKF8oJ2EnKSk6IF8oJyEnKSwKKyAgICAgICAgICAgIG9yZChfKCdaJykpOiBfKCckJyksCisgICAgICAgIH0KKyAgICAgICAgc3VibGVuID0gbGVuKFNVQlNUUikKKyAgICAgICAgcmVwZWF0cyA9IHNpemUgLy8gc3VibGVuICsgMgorICAgICAgICBzID0gU1VCU1RSICogcmVwZWF0cworICAgICAgICBzID0gcy50cmFuc2xhdGUodHJhbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMpLCByZXBlYXRzICogc3VibGVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbOnN1Ymxlbl0sIFNVQlNUUi50cmFuc2xhdGUodHJhbnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbLXN1YmxlbjpdLCBTVUJTVFIudHJhbnNsYXRlKHRyYW5zKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KF8oJy4nKSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudChfKCchJykpLCByZXBlYXRzICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KF8oJ3onKSksIHJlcGVhdHMgKiAzKQogCiAKIGNsYXNzIEJ5dGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgQmFzZVN0clRlc3QpOgogCiAgICAgZGVmIGZyb21fbGF0aW4xKHNlbGYsIHMpOgotICAgICAgICByZXR1cm4gcy5lbmNvZGUoImxhdGluMSIpCisgICAgICAgIHJldHVybiBzLmVuY29kZSgibGF0aW4tMSIpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT0xICsgY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9MSArIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHMgPSBzZWxmLmZyb21fbGF0aW4xKCcuJykgKiBzaXplCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMuZGVjb2RlKCd1dGYtOCcpKSwgc2l6ZSkKIAorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF9jYXBpdGFsaXplKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X2NhcGl0YWxpemUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF90aXRsZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF90aXRsZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQorICAgIGRlZiB0ZXN0X3N3YXBjYXNlKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X3N3YXBjYXNlKHNpemUpCisKIAogY2xhc3MgQnl0ZWFycmF5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgQmFzZVN0clRlc3QpOgogCiAgICAgZGVmIGZyb21fbGF0aW4xKHNlbGYsIHMpOgotICAgICAgICByZXR1cm4gYnl0ZWFycmF5KHMuZW5jb2RlKCJsYXRpbjEiKSkKKyAgICAgICAgcmV0dXJuIGJ5dGVhcnJheShzLmVuY29kZSgibGF0aW4tMSIpKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9MSArIGNoYXJhY3Rlcl9zaXplKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTEgKyBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYsIHNpemUpOgogICAgICAgICBzID0gc2VsZi5mcm9tX2xhdGluMSgnLicpICogc2l6ZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzLmRlY29kZSgndXRmLTgnKSksIHNpemUpCiAKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9jYXBpdGFsaXplKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfdGl0bGUoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3RfdGl0bGUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF9zd2FwY2FzZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9zd2FwY2FzZShzaXplKQorCiAgICAgdGVzdF9oYXNoID0gTm9uZQogICAgIHRlc3Rfc3BsaXRfbGFyZ2UgPSBOb25lCiAKQEAgLTc1Miw3ICs4MjUsNyBAQAogICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHQxID0gKCcnLCkgKiBzaXplCiAgICAgICAgIHQyID0gKCcnLCkgKiBzaXplCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodDEgPT0gdDIpCiAgICAgICAgIGRlbCB0MgogICAgICAgICB0MiA9ICgnJywpICogKHNpemUgKyAxKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQxID09IHQyKQpAQCAtNzgzLDkgKzg1Niw5IEBACiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHQgPSAoMSwgMiwgMywgNCwgNSkgKiBzaXplCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHQpLCBzaXplICogNSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbig1LCB0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCgxLCAyLCAzLCA0LCA1KSwgdCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbigwLCB0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoNSBpbiB0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCgxLCAyLCAzLCA0LCA1KSBpbiB0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDAgaW4gdCkKIAogICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT04KQogICAgIGRlZiB0ZXN0X2hhc2goc2VsZiwgc2l6ZSk6CkBAIC04NjksMTEgKzk0MiwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbLTU6XSwgJzAsIDApJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcwJyksIHNpemUpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyAzICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gMyArIDIsIG1lbXVzZT04ICsgMyAqIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9yZXByX3NtYWxsKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY190ZXN0X3JlcHIoc2l6ZSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9OCArIDMgKiBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfcmVwcl9sYXJnZShzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfdGVzdF9yZXByKHNpemUpCiAKQEAgLTg4OCw3ICs5NjEsNyBAQAogICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGwxID0gWycnXSAqIHNpemUKICAgICAgICAgbDIgPSBbJyddICogc2l6ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwxLCBsMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGwxID09IGwyKQogICAgICAgICBkZWwgbDIKICAgICAgICAgbDIgPSBbJyddICogKHNpemUgKyAxKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGwxID09IGwyKQpAQCAtOTM0LDkgKzEwMDcsOSBAQAogICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYsIHNpemUpOgogICAgICAgICBsID0gWzEsIDIsIDMsIDQsIDVdICogc2l6ZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsKSwgc2l6ZSAqIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oNSwgbCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihbMSwgMiwgMywgNCwgNV0sIGwpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oMCwgbCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDUgaW4gbCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShbMSwgMiwgMywgNCwgNV0gaW4gbCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgwIGluIGwpCiAKICAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9OCkKICAgICBkZWYgdGVzdF9oYXNoKHNlbGYsIHNpemUpOgpAQCAtMTA0NCwxMSArMTExNywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbLTU6XSwgJzAsIDBdJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcwJyksIHNpemUpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyAzICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gMyArIDIsIG1lbXVzZT04ICsgMyAqIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9yZXByX3NtYWxsKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY190ZXN0X3JlcHIoc2l6ZSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9OCArIDMgKiBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfcmVwcl9sYXJnZShzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfdGVzdF9yZXByKHNpemUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CmluZGV4IDFlOWU4ODguLjA0ZDhmOWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQpAQCAtMjA4LDkgKzIwOCw5IEBACiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInt9KHshcn0pIHJhaXNlcyB7IXJ9Ii5mb3JtYXQoZnVuYywgZW1wdHksIGVycikpCiAKLSAgICBkZWYgdGVzdF91bmljb2RlX3N0cmluZ3Moc2VsZik6Ci0gICAgICAgICMgVW5pY29kZSBzdHJpbmdzIGFyZSBub3QgYWNjZXB0ZWQuCi0gICAgICAgIGZvciBmdW5jIGluIGFsbF9mdW5jdGlvbnM6CisgICAgZGVmIHRlc3RfdW5pY29kZV9iMmEoc2VsZik6CisgICAgICAgICMgVW5pY29kZSBzdHJpbmdzIGFyZSBub3QgYWNjZXB0ZWQgYnkgYjJhXyogZnVuY3Rpb25zLgorICAgICAgICBmb3IgZnVuYyBpbiBzZXQoYWxsX2Z1bmN0aW9ucykgLSBzZXQoYTJiX2Z1bmN0aW9ucykgfCB7J3JsZWRlY29kZV9ocXgnfToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGF0dHIoYmluYXNjaWksIGZ1bmMpLCAidGVzdCIpCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKQEAgLTIxOCw2ICsyMTgsMzQgQEAKICAgICAgICAgIyBjcmNfaHF4IG5lZWRzIDIgYXJndW1lbnRzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmluYXNjaWkuY3JjX2hxeCwgInRlc3QiLCAwKQogCisgICAgZGVmIHRlc3RfdW5pY29kZV9hMmIoc2VsZik6CisgICAgICAgICMgVW5pY29kZSBzdHJpbmdzIGFyZSBhY2NlcHRlZCBieSBhMmJfKiBmdW5jdGlvbnMuCisgICAgICAgIE1BWF9BTEwgPSA0NQorICAgICAgICByYXcgPSBzZWxmLnJhd2RhdGFbOk1BWF9BTExdCisgICAgICAgIGZvciBmYSwgZmIgaW4gemlwKGEyYl9mdW5jdGlvbnMsIGIyYV9mdW5jdGlvbnMpOgorICAgICAgICAgICAgaWYgZmEgPT0gJ3JsZWRlY29kZV9ocXgnOgorICAgICAgICAgICAgICAgICMgVGFrZXMgbm9uLUFTQ0lJIGRhdGEKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgYTJiID0gZ2V0YXR0cihiaW5hc2NpaSwgZmEpCisgICAgICAgICAgICBiMmEgPSBnZXRhdHRyKGJpbmFzY2lpLCBmYikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhID0gYjJhKHNlbGYudHlwZTJ0ZXN0KHJhdykpCisgICAgICAgICAgICAgICAgYmluYXJ5X3JlcyA9IGEyYihhKQorICAgICAgICAgICAgICAgIGEgPSBhLmRlY29kZSgnYXNjaWknKQorICAgICAgICAgICAgICAgIHJlcyA9IGEyYihhKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJ7fS97fSBjb252ZXJzaW9uIHJhaXNlcyB7IXJ9Ii5mb3JtYXQoZmIsIGZhLCBlcnIpKQorICAgICAgICAgICAgaWYgZmIgPT0gJ2IyYV9ocXgnOgorICAgICAgICAgICAgICAgICMgYjJhX2hxeCByZXR1cm5zIGEgdHVwbGUKKyAgICAgICAgICAgICAgICByZXMsIF8gPSByZXMKKyAgICAgICAgICAgICAgICBiaW5hcnlfcmVzLCBfID0gYmluYXJ5X3JlcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHJhdywgInt9L3t9IGNvbnZlcnNpb246ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInshcn0gIT0geyFyfSIuZm9ybWF0KGZiLCBmYSwgcmVzLCByYXcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIGJpbmFyeV9yZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocmVzLCBieXRlcykKKyAgICAgICAgICAgICMgbm9uLUFTQ0lJIHN0cmluZworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYTJiLCAiXHg4MCIpCisKIAogY2xhc3MgQXJyYXlCaW5BU0NJSVRlc3QoQmluQVNDSUlUZXN0KToKICAgICBkZWYgdHlwZTJ0ZXN0KHNlbGYsIHMpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ib29sLnB5IGIvTGliL3Rlc3QvdGVzdF9ib29sLnB5CmluZGV4IGIyOTY4NzAuLjRiYWIyOGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKQEAgLTMzMCw2ICszMzAsMTYgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgKEV4Y2VwdGlvbikgYXMgZV9sZW46CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVfYm9vbCksIHN0cihlX2xlbikpCiAKKyAgICBkZWYgdGVzdF9yZWFsX2FuZF9pbWFnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUucmVhbCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLmltYWcsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShUcnVlLnJlYWwpLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShUcnVlLmltYWcpLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UucmVhbCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZS5pbWFnLCAwKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoRmFsc2UucmVhbCksIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKEZhbHNlLmltYWcpLCBpbnQpCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChCb29sVGVzdCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkgYi9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmNkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKQEAgLTAsMCArMSw0MjczIEBACisjCisjIFRoZSBuZGFycmF5IG9iamVjdCBmcm9tIF90ZXN0YnVmZmVyLmMgaXMgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZgorIyBhIFBFUC0zMTE4IGJ1ZmZlciBwcm92aWRlci4gSXQgaXMgaW5kZXBlbmRlbnQgZnJvbSBOdW1QeSdzIG5kYXJyYXkKKyMgYW5kIHRoZSB0ZXN0cyBkb24ndCByZXF1aXJlIE51bVB5LgorIworIyBJZiBOdW1QeSBpcyBwcmVzZW50LCBzb21lIHRlc3RzIGNoZWNrIGJvdGggbmRhcnJheSBpbXBsZW1lbnRhdGlvbnMKKyMgYWdhaW5zdCBlYWNoIG90aGVyLgorIworIyBNb3N0IG5kYXJyYXkgdGVzdHMgYWxzbyBjaGVjayB0aGF0IG1lbW9yeXZpZXcobmRhcnJheSkgYmVoYXZlcyBpbgorIyB0aGUgc2FtZSB3YXkgYXMgdGhlIG9yaWdpbmFsLiBUaHVzLCBhIHN1YnN0YW50aWFsIHBhcnQgb2YgdGhlCisjIG1lbW9yeXZpZXcgdGVzdHMgaXMgbm93IGluIHRoaXMgbW9kdWxlLgorIworCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucywgcHJvZHVjdAorZnJvbSByYW5kb20gaW1wb3J0IHJhbmRyYW5nZSwgc2FtcGxlLCBjaG9pY2UKK2Zyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcgoraW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgc3lzLCBhcnJheSwgaW8KK2Zyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAorZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCisKK3RyeToKKyAgICBmcm9tIF90ZXN0YnVmZmVyIGltcG9ydCAqCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbmRhcnJheSA9IE5vbmUKKwordHJ5OgorICAgIGltcG9ydCBzdHJ1Y3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBzdHJ1Y3QgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgY3R5cGVzCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgY3R5cGVzID0gTm9uZQorCit0cnk6CisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICBmcm9tIG51bXB5IGltcG9ydCBuZGFycmF5IGFzIG51bXB5X2FycmF5CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbnVtcHlfYXJyYXkgPSBOb25lCisKKworU0hPUlRfVEVTVCA9IFRydWUKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgIFJhbmRvbSBsaXN0cyBieSBmb3JtYXQgc3BlY2lmaWVyCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBOYXRpdmUgZm9ybWF0IGNoYXJzIGFuZCB0aGVpciByYW5nZXMuCitOQVRJVkUgPSB7CisgICAgJz8nOjAsICdjJzowLCAnYic6MCwgJ0InOjAsCisgICAgJ2gnOjAsICdIJzowLCAnaSc6MCwgJ0knOjAsCisgICAgJ2wnOjAsICdMJzowLCAnbic6MCwgJ04nOjAsCisgICAgJ2YnOjAsICdkJzowLCAnUCc6MAorfQorCisjIE51bVB5IGRvZXMgbm90IGhhdmUgJ24nIG9yICdOJzoKK2lmIG51bXB5X2FycmF5OgorICAgIGRlbCBOQVRJVkVbJ24nXQorICAgIGRlbCBOQVRJVkVbJ04nXQorCitpZiBzdHJ1Y3Q6CisgICAgdHJ5OgorICAgICAgICAjIEFkZCAicVEiIGlmIHByZXNlbnQgaW4gbmF0aXZlIG1vZGUuCisgICAgICAgIHN0cnVjdC5wYWNrKCdRJywgMioqNjQtMSkKKyAgICAgICAgTkFUSVZFWydxJ10gPSAwCisgICAgICAgIE5BVElWRVsnUSddID0gMAorICAgIGV4Y2VwdCBzdHJ1Y3QuZXJyb3I6CisgICAgICAgIHBhc3MKKworIyBTdGFuZGFyZCBmb3JtYXQgY2hhcnMgYW5kIHRoZWlyIHJhbmdlcy4KK1NUQU5EQVJEID0geworICAgICc/JzooMCwgMiksICAgICAgICAgICAgJ2MnOigwLCAxPDw4KSwKKyAgICAnYic6KC0oMTw8NyksIDE8PDcpLCAgICdCJzooMCwgMTw8OCksCisgICAgJ2gnOigtKDE8PDE1KSwgMTw8MTUpLCAnSCc6KDAsIDE8PDE2KSwKKyAgICAnaSc6KC0oMTw8MzEpLCAxPDwzMSksICdJJzooMCwgMTw8MzIpLAorICAgICdsJzooLSgxPDwzMSksIDE8PDMxKSwgJ0wnOigwLCAxPDwzMiksCisgICAgJ3EnOigtKDE8PDYzKSwgMTw8NjMpLCAnUSc6KDAsIDE8PDY0KSwKKyAgICAnZic6KC0oMTw8NjMpLCAxPDw2MyksICdkJzooLSgxPDwxMDIzKSwgMTw8MTAyMykKK30KKworZGVmIG5hdGl2ZV90eXBlX3JhbmdlKGZtdCk6CisgICAgIiIiUmV0dXJuIHJhbmdlIG9mIGEgbmF0aXZlIHR5cGUuIiIiCisgICAgaWYgZm10ID09ICdjJzoKKyAgICAgICAgbGggPSAoMCwgMjU2KQorICAgIGVsaWYgZm10ID09ICc/JzoKKyAgICAgICAgbGggPSAoMCwgMikKKyAgICBlbGlmIGZtdCA9PSAnZic6CisgICAgICAgIGxoID0gKC0oMTw8NjMpLCAxPDw2MykKKyAgICBlbGlmIGZtdCA9PSAnZCc6CisgICAgICAgIGxoID0gKC0oMTw8MTAyMyksIDE8PDEwMjMpCisgICAgZWxzZToKKyAgICAgICAgZm9yIGV4cCBpbiAoMTI4LCAxMjcsIDY0LCA2MywgMzIsIDMxLCAxNiwgMTUsIDgsIDcpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrKGZtdCwgKDE8PGV4cCktMSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGxoID0gKC0oMTw8ZXhwKSwgMTw8ZXhwKSBpZiBleHAgJiAxIGVsc2UgKDAsIDE8PGV4cCkKKyAgICByZXR1cm4gbGgKKworZm10ZGljdCA9IHsKKyAgICAnJzpOQVRJVkUsCisgICAgJ0AnOk5BVElWRSwKKyAgICAnPCc6U1RBTkRBUkQsCisgICAgJz4nOlNUQU5EQVJELAorICAgICc9JzpTVEFOREFSRCwKKyAgICAnISc6U1RBTkRBUkQKK30KKworaWYgc3RydWN0OgorICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICBmbXRkaWN0WydAJ11bZm10XSA9IG5hdGl2ZV90eXBlX3JhbmdlKGZtdCkKKworTUVNT1JZVklFVyA9IE5BVElWRS5jb3B5KCkKK0FSUkFZID0gTkFUSVZFLmNvcHkoKQorZm9yIGsgaW4gTkFUSVZFOgorICAgIGlmIG5vdCBrIGluICJiQmhIaUlsTGZkIjoKKyAgICAgICAgZGVsIEFSUkFZW2tdCisKK0JZVEVGTVQgPSBOQVRJVkUuY29weSgpCitmb3IgayBpbiBOQVRJVkU6CisgICAgaWYgbm90IGsgaW4gIkJiYyI6CisgICAgICAgIGRlbCBCWVRFRk1UW2tdCisKK2ZtdGRpY3RbJ20nXSAgPSBNRU1PUllWSUVXCitmbXRkaWN0WydAbSddID0gTUVNT1JZVklFVworZm10ZGljdFsnYSddICA9IEFSUkFZCitmbXRkaWN0WydiJ10gID0gQllURUZNVAorZm10ZGljdFsnQGInXSAgPSBCWVRFRk1UCisKKyMgQ2FwYWJpbGl0aWVzIG9mIHRoZSB0ZXN0IG9iamVjdHM6CitNT0RFID0gMAorTVVMVCA9IDEKK2NhcCA9IHsgICAgICAgICAjIGZvcm1hdCBjaGFycyAgICAgICAgICAgICAgICAgICMgbXVsdGlwbGllcgorICAnbmRhcnJheSc6ICAgIChbJycsICdAJywgJzwnLCAnPicsICc9JywgJyEnXSwgWycnLCAnMScsICcyJywgJzMnXSksCisgICdhcnJheSc6ICAgICAgKFsnYSddLCAgICAgICAgICAgICAgICAgICAgICAgICBbJyddKSwKKyAgJ251bXB5JzogICAgICAoWycnXSwgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJ10pLAorICAnbWVtb3J5dmlldyc6IChbJ0BtJywgJ20nXSwgICAgICAgICAgICAgICAgICAgWycnXSksCisgICdieXRlZm10JzogICAgKFsnQGInLCAnYiddLCAgICAgICAgICAgICAgICAgICBbJyddKSwKK30KKworZGVmIHJhbmRyYW5nZV9mbXQobW9kZSwgY2hhciwgb2JqKToKKyAgICAiIiJSZXR1cm4gcmFuZG9tIGl0ZW0gZm9yIGEgdHlwZSBzcGVjaWZpZWQgYnkgYSBtb2RlIGFuZCBhIHNpbmdsZQorICAgICAgIGZvcm1hdCBjaGFyYWN0ZXIuIiIiCisgICAgeCA9IHJhbmRyYW5nZSgqZm10ZGljdFttb2RlXVtjaGFyXSkKKyAgICBpZiBjaGFyID09ICdjJzoKKyAgICAgICAgeCA9IGJ5dGVzKGNocih4KSwgJ2xhdGluMScpCisgICAgaWYgY2hhciA9PSAnPyc6CisgICAgICAgIHggPSBib29sKHgpCisgICAgaWYgY2hhciA9PSAnZicgb3IgY2hhciA9PSAnZCc6CisgICAgICAgIHggPSBzdHJ1Y3QucGFjayhjaGFyLCB4KQorICAgICAgICB4ID0gc3RydWN0LnVucGFjayhjaGFyLCB4KVswXQorICAgIGlmIG9iaiA9PSAnbnVtcHknIGFuZCB4ID09IGInXHgwMCc6CisgICAgICAgICMgaHR0cDovL3Byb2plY3RzLnNjaXB5Lm9yZy9udW1weS90aWNrZXQvMTkyNQorICAgICAgICB4ID0gYidceDAxJworICAgIHJldHVybiB4CisKK2RlZiBnZW5faXRlbShmbXQsIG9iaik6CisgICAgIiIiUmV0dXJuIHNpbmdsZSByYW5kb20gaXRlbS4iIiIKKyAgICBtb2RlLCBjaGFycyA9IGZtdC5zcGxpdCgnIycpCisgICAgeCA9IFtdCisgICAgZm9yIGMgaW4gY2hhcnM6CisgICAgICAgIHguYXBwZW5kKHJhbmRyYW5nZV9mbXQobW9kZSwgYywgb2JqKSkKKyAgICByZXR1cm4geFswXSBpZiBsZW4oeCkgPT0gMSBlbHNlIHR1cGxlKHgpCisKK2RlZiBnZW5faXRlbXMobiwgZm10LCBvYmopOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgcmFuZG9tIGl0ZW1zIChvciBhIHNjYWxhcikuIiIiCisgICAgaWYgbiA9PSAwOgorICAgICAgICByZXR1cm4gZ2VuX2l0ZW0oZm10LCBvYmopCisgICAgbHN0ID0gWzBdICogbgorICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICBsc3RbaV0gPSBnZW5faXRlbShmbXQsIG9iaikKKyAgICByZXR1cm4gbHN0CisKK2RlZiBzdHJ1Y3RfaXRlbXMobiwgb2JqKToKKyAgICBtb2RlID0gY2hvaWNlKGNhcFtvYmpdW01PREVdKQorICAgIHhmbXQgPSBtb2RlICsgJyMnCisgICAgZm10ID0gbW9kZS5zdHJpcCgnYW1iJykKKyAgICBubWVtYiA9IHJhbmRyYW5nZSgyLCAxMCkgIyBudW1iZXIgb2Ygc3RydWN0IG1lbWJlcnMKKyAgICBmb3IgXyBpbiByYW5nZShubWVtYik6CisgICAgICAgIGNoYXIgPSBjaG9pY2UodHVwbGUoZm10ZGljdFttb2RlXSkpCisgICAgICAgIG11bHRpcGxpZXIgPSBjaG9pY2UoY2FwW29ial1bTVVMVF0pCisgICAgICAgIHhmbXQgKz0gKGNoYXIgKiBpbnQobXVsdGlwbGllciBpZiBtdWx0aXBsaWVyIGVsc2UgMSkpCisgICAgICAgIGZtdCArPSAobXVsdGlwbGllciArIGNoYXIpCisgICAgaXRlbXMgPSBnZW5faXRlbXMobiwgeGZtdCwgb2JqKQorICAgIGl0ZW0gPSBnZW5faXRlbSh4Zm10LCBvYmopCisgICAgcmV0dXJuIGZtdCwgaXRlbXMsIGl0ZW0KKworZGVmIHJhbmRpdGVtcyhuLCBvYmo9J25kYXJyYXknLCBtb2RlPU5vbmUsIGNoYXI9Tm9uZSk6CisgICAgIiIiUmV0dXJuIHJhbmRvbSBmb3JtYXQsIGl0ZW1zLCBpdGVtLiIiIgorICAgIGlmIG1vZGUgaXMgTm9uZToKKyAgICAgICAgbW9kZSA9IGNob2ljZShjYXBbb2JqXVtNT0RFXSkKKyAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgIGNoYXIgPSBjaG9pY2UodHVwbGUoZm10ZGljdFttb2RlXSkpCisgICAgbXVsdGlwbGllciA9IGNob2ljZShjYXBbb2JqXVtNVUxUXSkKKyAgICBmbXQgPSBtb2RlICsgJyMnICsgY2hhciAqIGludChtdWx0aXBsaWVyIGlmIG11bHRpcGxpZXIgZWxzZSAxKQorICAgIGl0ZW1zID0gZ2VuX2l0ZW1zKG4sIGZtdCwgb2JqKQorICAgIGl0ZW0gPSBnZW5faXRlbShmbXQsIG9iaikKKyAgICBmbXQgPSBtb2RlLnN0cmlwKCdhbWInKSArIG11bHRpcGxpZXIgKyBjaGFyCisgICAgcmV0dXJuIGZtdCwgaXRlbXMsIGl0ZW0KKworZGVmIGl0ZXJfbW9kZShuLCBvYmo9J25kYXJyYXknKToKKyAgICAiIiJJdGVyYXRlIHRocm91Z2ggc3VwcG9ydGVkIG1vZGUvY2hhciBjb21iaW5hdGlvbnMuIiIiCisgICAgZm9yIG1vZGUgaW4gY2FwW29ial1bTU9ERV06CisgICAgICAgIGZvciBjaGFyIGluIGZtdGRpY3RbbW9kZV06CisgICAgICAgICAgICB5aWVsZCByYW5kaXRlbXMobiwgb2JqLCBtb2RlLCBjaGFyKQorCitkZWYgaXRlcl9mb3JtYXQobml0ZW1zLCB0ZXN0b2JqPSduZGFycmF5Jyk6CisgICAgIiIiWWllbGQgKGZvcm1hdCwgaXRlbXMsIGl0ZW0pIGZvciBhbGwgcG9zc2libGUgbW9kZXMgYW5kIGZvcm1hdAorICAgICAgIGNoYXJhY3RlcnMgcGx1cyBvbmUgcmFuZG9tIGNvbXBvdW5kIGZvcm1hdCBzdHJpbmcuIiIiCisgICAgZm9yIHQgaW4gaXRlcl9tb2RlKG5pdGVtcywgdGVzdG9iaik6CisgICAgICAgIHlpZWxkIHQKKyAgICBpZiB0ZXN0b2JqICE9ICduZGFycmF5JzoKKyAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgIHlpZWxkIHN0cnVjdF9pdGVtcyhuaXRlbXMsIHRlc3RvYmopCisKKworZGVmIGlzX2J5dGVfZm9ybWF0KGZtdCk6CisgICAgcmV0dXJuICdjJyBpbiBmbXQgb3IgJ2InIGluIGZtdCBvciAnQicgaW4gZm10CisKK2RlZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICIiImZvcm1hdCBzdWl0YWJsZSBmb3IgbWVtb3J5dmlldyIiIgorICAgIHggPSBsZW4oZm10KQorICAgIHJldHVybiAoKHggPT0gMSBvciAoeCA9PSAyIGFuZCBmbXRbMF0gPT0gJ0AnKSkgYW5kCisgICAgICAgICAgICBmbXRbeC0xXSBpbiBNRU1PUllWSUVXKQorCitOT05fQllURV9GT1JNQVQgPSBbYyBmb3IgYyBpbiBmbXRkaWN0WydAJ10gaWYgbm90IGlzX2J5dGVfZm9ybWF0KGMpXQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICBNdWx0aS1kaW1lbnNpb25hbCB0b2xpc3QoKSwgc2xpY2luZyBhbmQgc2xpY2UgYXNzaWdubWVudHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZWYgYXRvbXAobHN0KToKKyAgICAiIiJUdXBsZSBpdGVtcyAocmVwcmVzZW50aW5nIHN0cnVjdHMpIGFyZSByZWdhcmRlZCBhcyBhdG9tcy4iIiIKKyAgICByZXR1cm4gbm90IGlzaW5zdGFuY2UobHN0LCBsaXN0KQorCitkZWYgbGlzdHAobHN0KToKKyAgICByZXR1cm4gaXNpbnN0YW5jZShsc3QsIGxpc3QpCisKK2RlZiBwcm9kKGxzdCk6CisgICAgIiIiUHJvZHVjdCBvZiBsaXN0IGVsZW1lbnRzLiIiIgorICAgIGlmIGxlbihsc3QpID09IDA6CisgICAgICAgIHJldHVybiAwCisgICAgeCA9IGxzdFswXQorICAgIGZvciB2IGluIGxzdFsxOl06CisgICAgICAgIHggKj0gdgorICAgIHJldHVybiB4CisKK2RlZiBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIGl0ZW1zaXplLCBsYXlvdXQpOgorICAgICIiIkNhbGN1bGF0ZSBzdHJpZGVzIG9mIGEgY29udGlndW91cyBhcnJheS4gTGF5b3V0IGlzICdDJyBvcgorICAgICAgICdGJyAoRm9ydHJhbikuIiIiCisgICAgaWYgbmRpbSA9PSAwOgorICAgICAgICByZXR1cm4gKCkKKyAgICBpZiBsYXlvdXQgPT0gJ0MnOgorICAgICAgICBzdHJpZGVzID0gbGlzdChzaGFwZVsxOl0pICsgW2l0ZW1zaXplXQorICAgICAgICBmb3IgaSBpbiByYW5nZShuZGltLTIsIC0xLCAtMSk6CisgICAgICAgICAgICBzdHJpZGVzW2ldICo9IHN0cmlkZXNbaSsxXQorICAgIGVsc2U6CisgICAgICAgIHN0cmlkZXMgPSBbaXRlbXNpemVdICsgbGlzdChzaGFwZVs6LTFdKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBuZGltKToKKyAgICAgICAgICAgIHN0cmlkZXNbaV0gKj0gc3RyaWRlc1tpLTFdCisgICAgcmV0dXJuIHN0cmlkZXMKKworZGVmIF9jYShpdGVtcywgcyk6CisgICAgIiIiQ29udmVydCBmbGF0IGl0ZW0gbGlzdCB0byB0aGUgbmVzdGVkIGxpc3QgcmVwcmVzZW50YXRpb24gb2YgYQorICAgICAgIG11bHRpZGltZW5zaW9uYWwgQyBhcnJheSB3aXRoIHNoYXBlICdzJy4iIiIKKyAgICBpZiBhdG9tcChpdGVtcyk6CisgICAgICAgIHJldHVybiBpdGVtcworICAgIGlmIGxlbihzKSA9PSAwOgorICAgICAgICByZXR1cm4gaXRlbXNbMF0KKyAgICBsc3QgPSBbMF0gKiBzWzBdCisgICAgc3RyaWRlID0gbGVuKGl0ZW1zKSAvLyBzWzBdIGlmIHNbMF0gZWxzZSAwCisgICAgZm9yIGkgaW4gcmFuZ2Uoc1swXSk6CisgICAgICAgIHN0YXJ0ID0gaSpzdHJpZGUKKyAgICAgICAgbHN0W2ldID0gX2NhKGl0ZW1zW3N0YXJ0OnN0YXJ0K3N0cmlkZV0sIHNbMTpdKQorICAgIHJldHVybiBsc3QKKworZGVmIF9mYShpdGVtcywgcyk6CisgICAgIiIiQ29udmVydCBmbGF0IGl0ZW0gbGlzdCB0byB0aGUgbmVzdGVkIGxpc3QgcmVwcmVzZW50YXRpb24gb2YgYQorICAgICAgIG11bHRpZGltZW5zaW9uYWwgRm9ydHJhbiBhcnJheSB3aXRoIHNoYXBlICdzJy4iIiIKKyAgICBpZiBhdG9tcChpdGVtcyk6CisgICAgICAgIHJldHVybiBpdGVtcworICAgIGlmIGxlbihzKSA9PSAwOgorICAgICAgICByZXR1cm4gaXRlbXNbMF0KKyAgICBsc3QgPSBbMF0gKiBzWzBdCisgICAgc3RyaWRlID0gc1swXQorICAgIGZvciBpIGluIHJhbmdlKHNbMF0pOgorICAgICAgICBsc3RbaV0gPSBfZmEoaXRlbXNbaTo6c3RyaWRlXSwgc1sxOl0pCisgICAgcmV0dXJuIGxzdAorCitkZWYgY2FycmF5KGl0ZW1zLCBzaGFwZSk6CisgICAgaWYgbGlzdHAoaXRlbXMpIGFuZCBub3QgMCBpbiBzaGFwZSBhbmQgcHJvZChzaGFwZSkgIT0gbGVuKGl0ZW1zKToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicHJvZChzaGFwZSkgIT0gbGVuKGl0ZW1zKSIpCisgICAgcmV0dXJuIF9jYShpdGVtcywgc2hhcGUpCisKK2RlZiBmYXJyYXkoaXRlbXMsIHNoYXBlKToKKyAgICBpZiBsaXN0cChpdGVtcykgYW5kIG5vdCAwIGluIHNoYXBlIGFuZCBwcm9kKHNoYXBlKSAhPSBsZW4oaXRlbXMpOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcm9kKHNoYXBlKSAhPSBsZW4oaXRlbXMpIikKKyAgICByZXR1cm4gX2ZhKGl0ZW1zLCBzaGFwZSkKKworZGVmIGluZGljZXMoc2hhcGUpOgorICAgICIiIkdlbmVyYXRlIGFsbCBwb3NzaWJsZSB0dXBsZXMgb2YgaW5kaWNlcy4iIiIKKyAgICBpdGVyYWJsZXMgPSBbcmFuZ2UodikgZm9yIHYgaW4gc2hhcGVdCisgICAgcmV0dXJuIHByb2R1Y3QoKml0ZXJhYmxlcykKKworZGVmIGdldGluZGV4KG5kaW0sIGluZCwgc3RyaWRlcyk6CisgICAgIiIiQ29udmVydCBtdWx0aS1kaW1lbnNpb25hbCBpbmRleCB0byB0aGUgcG9zaXRpb24gaW4gdGhlIGZsYXQgbGlzdC4iIiIKKyAgICByZXQgPSAwCisgICAgZm9yIGkgaW4gcmFuZ2UobmRpbSk6CisgICAgICAgIHJldCArPSBzdHJpZGVzW2ldICogaW5kW2ldCisgICAgcmV0dXJuIHJldAorCitkZWYgdHJhbnNwb3NlKHNyYywgc2hhcGUpOgorICAgICIiIlRyYW5zcG9zZSBmbGF0IGl0ZW0gbGlzdCB0aGF0IGlzIHJlZ2FyZGVkIGFzIGEgbXVsdGktZGltZW5zaW9uYWwKKyAgICAgICBtYXRyaXggZGVmaW5lZCBieSBzaGFwZTogZGVzdC4uLltrXVtqXVtpXSA9IHNyY1tpXVtqXVtrXS4uLiAgIiIiCisgICAgaWYgbm90IHNoYXBlOgorICAgICAgICByZXR1cm4gc3JjCisgICAgbmRpbSA9IGxlbihzaGFwZSkKKyAgICBzc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgMSwgJ0MnKQorICAgIGRzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlWzo6LTFdLCAxLCAnQycpCisgICAgZGVzdCA9IFswXSAqIGxlbihzcmMpCisgICAgZm9yIGluZCBpbiBpbmRpY2VzKHNoYXBlKToKKyAgICAgICAgZnIgPSBnZXRpbmRleChuZGltLCBpbmQsIHNzdHJpZGVzKQorICAgICAgICB0byA9IGdldGluZGV4KG5kaW0sIGluZFs6Oi0xXSwgZHN0cmlkZXMpCisgICAgICAgIGRlc3RbdG9dID0gc3JjW2ZyXQorICAgIHJldHVybiBkZXN0CisKK2RlZiBfZmxhdHRlbihsc3QpOgorICAgICIiImZsYXR0ZW4gbGlzdCIiIgorICAgIGlmIGxzdCA9PSBbXToKKyAgICAgICAgcmV0dXJuIGxzdAorICAgIGlmIGF0b21wKGxzdCk6CisgICAgICAgIHJldHVybiBbbHN0XQorICAgIHJldHVybiBfZmxhdHRlbihsc3RbMF0pICsgX2ZsYXR0ZW4obHN0WzE6XSkKKworZGVmIGZsYXR0ZW4obHN0KToKKyAgICAiIiJmbGF0dGVuIGxpc3Qgb3IgcmV0dXJuIHNjYWxhciIiIgorICAgIGlmIGF0b21wKGxzdCk6ICMgc2NhbGFyCisgICAgICAgIHJldHVybiBsc3QKKyAgICByZXR1cm4gX2ZsYXR0ZW4obHN0KQorCitkZWYgc2xpY2Vfc2hhcGUobHN0LCBzbGljZXMpOgorICAgICIiIkdldCB0aGUgc2hhcGUgb2YgbHN0IGFmdGVyIHNsaWNpbmc6IHNsaWNlcyBpcyBhIGxpc3Qgb2Ygc2xpY2UKKyAgICAgICBvYmplY3RzLiIiIgorICAgIGlmIGF0b21wKGxzdCk6CisgICAgICAgIHJldHVybiBbXQorICAgIHJldHVybiBbbGVuKGxzdFtzbGljZXNbMF1dKV0gKyBzbGljZV9zaGFwZShsc3RbMF0sIHNsaWNlc1sxOl0pCisKK2RlZiBtdWx0aXNsaWNlKGxzdCwgc2xpY2VzKToKKyAgICAiIiJNdWx0aS1kaW1lbnNpb25hbCBzbGljaW5nOiBzbGljZXMgaXMgYSBsaXN0IG9mIHNsaWNlIG9iamVjdHMuIiIiCisgICAgaWYgYXRvbXAobHN0KToKKyAgICAgICAgcmV0dXJuIGxzdAorICAgIHJldHVybiBbbXVsdGlzbGljZShzdWJsc3QsIHNsaWNlc1sxOl0pIGZvciBzdWJsc3QgaW4gbHN0W3NsaWNlc1swXV1dCisKK2RlZiBtX2Fzc2lnbihsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKToKKyAgICAiIiJNdWx0aS1kaW1lbnNpb25hbCBzbGljZSBhc3NpZ25tZW50OiBsbHN0IGFuZCBybHN0IGFyZSB0aGUgb3BlcmFuZHMsCisgICAgICAgbHNsaWNlcyBhbmQgcnNsaWNlcyBhcmUgbGlzdHMgb2Ygc2xpY2Ugb2JqZWN0cy4gbGxzdCBhbmQgcmxzdCBtdXN0CisgICAgICAgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUuCisKKyAgICAgICBGb3IgYSB0d28tZGltZW5zaW9uYWwgZXhhbXBsZSwgdGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgaW4gUHl0aG9uOgorCisgICAgICAgICBsbHN0WzA6MzoyLCAwOjM6Ml0gPSBybHN0WzE6MzoxLCAxOjM6MV0KKworICAgICAgIEluc3RlYWQgd2Ugd3JpdGU6CisKKyAgICAgICAgIGxzbGljZXMgPSBbc2xpY2UoMCwzLDIpLCBzbGljZSgwLDMsMildCisgICAgICAgICByc2xpY2VzID0gW3NsaWNlKDEsMywxKSwgc2xpY2UoMSwzLDEpXQorICAgICAgICAgbXVsdGlzbGljZV9hc3NpZ24obGxzdCwgcmxzdCwgbHNsaWNlcywgcnNsaWNlcykKKyAgICAiIiIKKyAgICBpZiBhdG9tcChybHN0KToKKyAgICAgICAgcmV0dXJuIHJsc3QKKyAgICBybHN0ID0gW21fYXNzaWduKGwsIHIsIGxzbGljZXNbMTpdLCByc2xpY2VzWzE6XSkKKyAgICAgICAgICAgIGZvciBsLCByIGluIHppcChsbHN0W2xzbGljZXNbMF1dLCBybHN0W3JzbGljZXNbMF1dKV0KKyAgICBsbHN0W2xzbGljZXNbMF1dID0gcmxzdAorICAgIHJldHVybiBsbHN0CisKK2RlZiBjbXBfc3RydWN0dXJlKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpOgorICAgICIiIkNvbXBhcmUgdGhlIHN0cnVjdHVyZSBvZiBsbHN0W2xzbGljZXNdIGFuZCBybHN0W3JzbGljZXNdLiIiIgorICAgIGxzaGFwZSA9IHNsaWNlX3NoYXBlKGxsc3QsIGxzbGljZXMpCisgICAgcnNoYXBlID0gc2xpY2Vfc2hhcGUocmxzdCwgcnNsaWNlcykKKyAgICBpZiAobGVuKGxzaGFwZSkgIT0gbGVuKHJzaGFwZSkpOgorICAgICAgICByZXR1cm4gLTEKKyAgICBmb3IgaSBpbiByYW5nZShsZW4obHNoYXBlKSk6CisgICAgICAgIGlmIGxzaGFwZVtpXSAhPSByc2hhcGVbaV06CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgaWYgbHNoYXBlW2ldID09IDA6CisgICAgICAgICAgICByZXR1cm4gMAorICAgIHJldHVybiAwCisKK2RlZiBtdWx0aXNsaWNlX2Fzc2lnbihsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKToKKyAgICAiIiJSZXR1cm4gbGxzdCBhZnRlciBhc3NpZ25pbmc6IGxsc3RbbHNsaWNlc10gPSBybHN0W3JzbGljZXNdIiIiCisgICAgaWYgY21wX3N0cnVjdHVyZShsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKSA8IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImx2YWx1ZSBhbmQgcnZhbHVlIGhhdmUgZGlmZmVyZW50IHN0cnVjdHVyZXMiKQorICAgIHJldHVybiBtX2Fzc2lnbihsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZG9tIHN0cnVjdHVyZXMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjCisjIFBFUC0zMTE4IGlzIHZlcnkgcGVybWlzc2l2ZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGNvbnRlbnRzIG9mIGEKKyMgUHlfYnVmZmVyLiBJbiBwYXJ0aWN1bGFyOgorIworIyAgIC0gc2hhcGUgY2FuIGJlIHplcm8KKyMgICAtIHN0cmlkZXMgY2FuIGJlIGFueSBpbnRlZ2VyLCBpbmNsdWRpbmcgemVybworIyAgIC0gb2Zmc2V0IGNhbiBwb2ludCB0byBhbnkgbG9jYXRpb24gaW4gdGhlIHVuZGVybHlpbmcKKyMgICAgIG1lbW9yeSBibG9jaywgcHJvdmlkZWQgdGhhdCBpdCBpcyBhIG11bHRpcGxlIG9mCisjICAgICBpdGVtc2l6ZS4KKyMKKyMgVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gdGVzdCBhbmQgdmVyaWZ5IHJhbmRvbSBzdHJ1Y3R1cmVzCisjIGluIGZ1bGwgZ2VuZXJhbGl0eS4gQSBzdHJ1Y3R1cmUgaXMgdmFsaWQgaWZmIGl0IGZpdHMgaW4gdGhlCisjIHVuZGVybHlpbmcgbWVtb3J5IGJsb2NrLgorIworIyBUaGUgc3RydWN0dXJlICd0JyAoc2hvcnQgZm9yICd0dXBsZScpIGlzIGZ1bGx5IGRlZmluZWQgYnk6CisjCisjICAgdCA9IChtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0KQorIworCitkZWYgdmVyaWZ5X3N0cnVjdHVyZShtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0KToKKyAgICAiIiJWZXJpZnkgdGhhdCB0aGUgcGFyYW1ldGVycyByZXByZXNlbnQgYSB2YWxpZCBhcnJheSB3aXRoaW4KKyAgICAgICB0aGUgYm91bmRzIG9mIHRoZSBhbGxvY2F0ZWQgbWVtb3J5OgorICAgICAgICAgICBjaGFyICptZW06IHN0YXJ0IG9mIHRoZSBwaHlzaWNhbCBtZW1vcnkgYmxvY2sKKyAgICAgICAgICAgbWVtbGVuOiBsZW5ndGggb2YgdGhlIHBoeXNpY2FsIG1lbW9yeSBibG9jaworICAgICAgICAgICBvZmZzZXQ6IChjaGFyICopYnVmIC0gbWVtCisgICAgIiIiCisgICAgaWYgb2Zmc2V0ICUgaXRlbXNpemU6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIG9mZnNldCA8IDAgb3Igb2Zmc2V0K2l0ZW1zaXplID4gbWVtbGVuOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBhbnkodiAlIGl0ZW1zaXplIGZvciB2IGluIHN0cmlkZXMpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGlmIG5kaW0gPD0gMDoKKyAgICAgICAgcmV0dXJuIG5kaW0gPT0gMCBhbmQgbm90IHNoYXBlIGFuZCBub3Qgc3RyaWRlcworICAgIGlmIDAgaW4gc2hhcGU6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBpbWluID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICBpZiBzdHJpZGVzW2pdIDw9IDApCisgICAgaW1heCA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tqXSA+IDApCisKKyAgICByZXR1cm4gMCA8PSBvZmZzZXQraW1pbiBhbmQgb2Zmc2V0K2ltYXgraXRlbXNpemUgPD0gbWVtbGVuCisKK2RlZiBnZXRfaXRlbShsc3QsIGluZGljZXMpOgorICAgIGZvciBpIGluIGluZGljZXM6CisgICAgICAgIGxzdCA9IGxzdFtpXQorICAgIHJldHVybiBsc3QKKworZGVmIG1lbW9yeV9pbmRleChpbmRpY2VzLCB0KToKKyAgICAiIiJMb2NhdGlvbiBvZiBhbiBpdGVtIGluIHRoZSB1bmRlcmx5aW5nIG1lbW9yeS4iIiIKKyAgICBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0ID0gdAorICAgIHAgPSBvZmZzZXQKKyAgICBmb3IgaSBpbiByYW5nZShuZGltKToKKyAgICAgICAgcCArPSBzdHJpZGVzW2ldKmluZGljZXNbaV0KKyAgICByZXR1cm4gcAorCitkZWYgaXNfb3ZlcmxhcHBpbmcodCk6CisgICAgIiIiVGhlIHN0cnVjdHVyZSAndCcgaXMgb3ZlcmxhcHBpbmcgaWYgYXQgbGVhc3Qgb25lIG1lbW9yeSBsb2NhdGlvbgorICAgICAgIGlzIHZpc2l0ZWQgdHdpY2Ugd2hpbGUgaXRlcmF0aW5nIHRocm91Z2ggYWxsIHBvc3NpYmxlIHR1cGxlcyBvZgorICAgICAgIGluZGljZXMuIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCA9IHQKKyAgICB2aXNpdGVkID0gMTw8bWVtbGVuCisgICAgZm9yIGluZCBpbiBpbmRpY2VzKHNoYXBlKToKKyAgICAgICAgaSA9IG1lbW9yeV9pbmRleChpbmQsIHQpCisgICAgICAgIGJpdCA9IDE8PGkKKyAgICAgICAgaWYgdmlzaXRlZCAmIGJpdDoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHZpc2l0ZWQgfD0gYml0CisgICAgcmV0dXJuIEZhbHNlCisKK2RlZiByYW5kX3N0cnVjdHVyZShpdGVtc2l6ZSwgdmFsaWQsIG1heGRpbT01LCBtYXhzaGFwZT0xNiwgc2hhcGU9KCkpOgorICAgICIiIlJldHVybiByYW5kb20gc3RydWN0dXJlOgorICAgICAgICAgICAobWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCkKKyAgICAgICBJZiAndmFsaWQnIGlzIHRydWUsIHRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUgaXMgdmFsaWQsIG90aGVyd2lzZSBpbnZhbGlkLgorICAgICAgIElmICdzaGFwZScgaXMgZ2l2ZW4sIHVzZSB0aGF0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSByYW5kb20gc2hhcGUuCisgICAgIiIiCisgICAgaWYgbm90IHNoYXBlOgorICAgICAgICBuZGltID0gcmFuZHJhbmdlKG1heGRpbSsxKQorICAgICAgICBpZiAobmRpbSA9PSAwKToKKyAgICAgICAgICAgIGlmIHZhbGlkOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVtc2l6ZSwgaXRlbXNpemUsIG5kaW0sICgpLCAoKSwgMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuaXRlbXMgPSByYW5kcmFuZ2UoMSwgMTYrMSkKKyAgICAgICAgICAgICAgICBtZW1sZW4gPSBuaXRlbXMgKiBpdGVtc2l6ZQorICAgICAgICAgICAgICAgIG9mZnNldCA9IC1pdGVtc2l6ZSBpZiByYW5kcmFuZ2UoMikgPT0gMCBlbHNlIG1lbWxlbgorICAgICAgICAgICAgICAgIHJldHVybiBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCAoKSwgKCksIG9mZnNldAorCisgICAgICAgIG1pbnNoYXBlID0gMgorICAgICAgICBuID0gcmFuZHJhbmdlKDEwMCkKKyAgICAgICAgaWYgbiA+PSA5NSBhbmQgdmFsaWQ6CisgICAgICAgICAgICBtaW5zaGFwZSA9IDAKKyAgICAgICAgZWxpZiBuID49IDkwOgorICAgICAgICAgICAgbWluc2hhcGUgPSAxCisgICAgICAgIHNoYXBlID0gWzBdICogbmRpbQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKG5kaW0pOgorICAgICAgICAgICAgc2hhcGVbaV0gPSByYW5kcmFuZ2UobWluc2hhcGUsIG1heHNoYXBlKzEpCisgICAgZWxzZToKKyAgICAgICAgbmRpbSA9IGxlbihzaGFwZSkKKworICAgIG1heHN0cmlkZSA9IDUKKyAgICBuID0gcmFuZHJhbmdlKDEwMCkKKyAgICB6ZXJvX3N0cmlkZSA9IFRydWUgaWYgbiA+PSA5NSBhbmQgbiAmIDEgZWxzZSBGYWxzZQorCisgICAgc3RyaWRlcyA9IFswXSAqIG5kaW0KKyAgICBzdHJpZGVzW25kaW0tMV0gPSBpdGVtc2l6ZSAqIHJhbmRyYW5nZSgtbWF4c3RyaWRlLCBtYXhzdHJpZGUrMSkKKyAgICBpZiBub3QgemVyb19zdHJpZGUgYW5kIHN0cmlkZXNbbmRpbS0xXSA9PSAwOgorICAgICAgICBzdHJpZGVzW25kaW0tMV0gPSBpdGVtc2l6ZQorCisgICAgZm9yIGkgaW4gcmFuZ2UobmRpbS0yLCAtMSwgLTEpOgorICAgICAgICBtYXhzdHJpZGUgKj0gc2hhcGVbaSsxXSBpZiBzaGFwZVtpKzFdIGVsc2UgMQorICAgICAgICBpZiB6ZXJvX3N0cmlkZToKKyAgICAgICAgICAgIHN0cmlkZXNbaV0gPSBpdGVtc2l6ZSAqIHJhbmRyYW5nZSgtbWF4c3RyaWRlLCBtYXhzdHJpZGUrMSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN0cmlkZXNbaV0gPSAoKDEsLTEpW3JhbmRyYW5nZSgyKV0gKgorICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZSAqIHJhbmRyYW5nZSgxLCBtYXhzdHJpZGUrMSkpCisKKyAgICBpbWluID0gaW1heCA9IDAKKyAgICBpZiBub3QgMCBpbiBzaGFwZToKKyAgICAgICAgaW1pbiA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPD0gMCkKKyAgICAgICAgaW1heCA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPiAwKQorCisgICAgbml0ZW1zID0gaW1heCAtIGltaW4KKyAgICBpZiB2YWxpZDoKKyAgICAgICAgb2Zmc2V0ID0gLWltaW4gKiBpdGVtc2l6ZQorICAgICAgICBtZW1sZW4gPSBvZmZzZXQgKyAoaW1heCsxKSAqIGl0ZW1zaXplCisgICAgZWxzZToKKyAgICAgICAgbWVtbGVuID0gKC1pbWluICsgaW1heCkgKiBpdGVtc2l6ZQorICAgICAgICBvZmZzZXQgPSAtaW1pbi1pdGVtc2l6ZSBpZiByYW5kcmFuZ2UoMikgPT0gMCBlbHNlIG1lbWxlbgorICAgIHJldHVybiBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0CisKK2RlZiByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgbGlzdGxlbik6CisgICAgIiIiQ3JlYXRlIGEgcmFuZG9tIHNsaWNlIG9mIGxlbiBzbGljZWxlbiB0aGF0IGZpdHMgaW50byBsaXN0bGVuLiIiIgorICAgIG1heHN0YXJ0ID0gbGlzdGxlbiAtIHNsaWNlbGVuCisgICAgc3RhcnQgPSByYW5kcmFuZ2UobWF4c3RhcnQrMSkKKyAgICBtYXhzdGVwID0gKGxpc3RsZW4gLSBzdGFydCkgLy8gc2xpY2VsZW4gaWYgc2xpY2VsZW4gZWxzZSAxCisgICAgc3RlcCA9IHJhbmRyYW5nZSgxLCBtYXhzdGVwKzEpCisgICAgc3RvcCA9IHN0YXJ0ICsgc2xpY2VsZW4gKiBzdGVwCisgICAgcyA9IHNsaWNlKHN0YXJ0LCBzdG9wLCBzdGVwKQorICAgIF8sIF8sIF8sIGNvbnRyb2wgPSBzbGljZV9pbmRpY2VzKHMsIGxpc3RsZW4pCisgICAgaWYgY29udHJvbCAhPSBzbGljZWxlbjoKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgcmV0dXJuIHMKKworZGVmIHJhbmRzbGljZV9mcm9tX3NoYXBlKG5kaW0sIHNoYXBlKToKKyAgICAiIiJDcmVhdGUgdHdvIHNldHMgb2Ygc2xpY2VzIGZvciBhbiBhcnJheSB4IHdpdGggc2hhcGUgJ3NoYXBlJworICAgICAgIHN1Y2ggdGhhdCBzaGFwZW9mKHhbbHNsaWNlc10pID09IHNoYXBlb2YoeFtyc2xpY2VzXSkuIiIiCisgICAgbHNsaWNlcyA9IFswXSAqIG5kaW0KKyAgICByc2xpY2VzID0gWzBdICogbmRpbQorICAgIGZvciBuIGluIHJhbmdlKG5kaW0pOgorICAgICAgICBsID0gc2hhcGVbbl0KKyAgICAgICAgc2xpY2VsZW4gPSByYW5kcmFuZ2UoMSwgbCsxKSBpZiBsID4gMCBlbHNlIDAKKyAgICAgICAgbHNsaWNlc1tuXSA9IHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBsKQorICAgICAgICByc2xpY2VzW25dID0gcmFuZHNsaWNlX2Zyb21fc2xpY2VsZW4oc2xpY2VsZW4sIGwpCisgICAgcmV0dXJuIHR1cGxlKGxzbGljZXMpLCB0dXBsZShyc2xpY2VzKQorCitkZWYgcmFuZF9hbGlnbmVkX3NsaWNlcyhtYXhkaW09NSwgbWF4c2hhcGU9MTYpOgorICAgICIiIkNyZWF0ZSAobHNoYXBlLCByc2hhcGUsIHR1cGxlKGxzbGljZXMpLCB0dXBsZShyc2xpY2VzKSkgc3VjaCB0aGF0CisgICAgICAgc2hhcGVvZih4W2xzbGljZXNdKSA9PSBzaGFwZW9mKHlbcnNsaWNlc10pLCB3aGVyZSB4IGlzIGFuIGFycmF5CisgICAgICAgd2l0aCBzaGFwZSAnbHNoYXBlJyBhbmQgeSBpcyBhbiBhcnJheSB3aXRoIHNoYXBlICdyc2hhcGUnLiIiIgorICAgIG5kaW0gPSByYW5kcmFuZ2UoMSwgbWF4ZGltKzEpCisgICAgbWluc2hhcGUgPSAyCisgICAgbiA9IHJhbmRyYW5nZSgxMDApCisgICAgaWYgbiA+PSA5NToKKyAgICAgICAgbWluc2hhcGUgPSAwCisgICAgZWxpZiBuID49IDkwOgorICAgICAgICBtaW5zaGFwZSA9IDEKKyAgICBhbGxfcmFuZG9tID0gVHJ1ZSBpZiByYW5kcmFuZ2UoMTAwKSA+PSA4MCBlbHNlIEZhbHNlCisgICAgbHNoYXBlID0gWzBdKm5kaW07IHJzaGFwZSA9IFswXSpuZGltCisgICAgbHNsaWNlcyA9IFswXSpuZGltOyByc2xpY2VzID0gWzBdKm5kaW0KKworICAgIGZvciBuIGluIHJhbmdlKG5kaW0pOgorICAgICAgICBzbWFsbCA9IHJhbmRyYW5nZShtaW5zaGFwZSwgbWF4c2hhcGUrMSkKKyAgICAgICAgYmlnID0gcmFuZHJhbmdlKG1pbnNoYXBlLCBtYXhzaGFwZSsxKQorICAgICAgICBpZiBiaWcgPCBzbWFsbDoKKyAgICAgICAgICAgIGJpZywgc21hbGwgPSBzbWFsbCwgYmlnCisKKyAgICAgICAgIyBDcmVhdGUgYSBzbGljZSB0aGF0IGZpdHMgdGhlIHNtYWxsZXIgdmFsdWUuCisgICAgICAgIGlmIGFsbF9yYW5kb206CisgICAgICAgICAgICBzdGFydCA9IHJhbmRyYW5nZSgtc21hbGwsIHNtYWxsKzEpCisgICAgICAgICAgICBzdG9wID0gcmFuZHJhbmdlKC1zbWFsbCwgc21hbGwrMSkKKyAgICAgICAgICAgIHN0ZXAgPSAoMSwtMSlbcmFuZHJhbmdlKDIpXSAqIHJhbmRyYW5nZSgxLCBzbWFsbCsyKQorICAgICAgICAgICAgc19zbWFsbCA9IHNsaWNlKHN0YXJ0LCBzdG9wLCBzdGVwKQorICAgICAgICAgICAgXywgXywgXywgc2xpY2VsZW4gPSBzbGljZV9pbmRpY2VzKHNfc21hbGwsIHNtYWxsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2xpY2VsZW4gPSByYW5kcmFuZ2UoMSwgc21hbGwrMSkgaWYgc21hbGwgPiAwIGVsc2UgMAorICAgICAgICAgICAgc19zbWFsbCA9IHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBzbWFsbCkKKworICAgICAgICAjIENyZWF0ZSBhIHNsaWNlIG9mIHRoZSBzYW1lIGxlbmd0aCBmb3IgdGhlIGJpZ2dlciB2YWx1ZS4KKyAgICAgICAgc19iaWcgPSByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgYmlnKQorICAgICAgICBpZiByYW5kcmFuZ2UoMikgPT0gMDoKKyAgICAgICAgICAgIHJzaGFwZVtuXSwgbHNoYXBlW25dID0gYmlnLCBzbWFsbAorICAgICAgICAgICAgcnNsaWNlc1tuXSwgbHNsaWNlc1tuXSA9IHNfYmlnLCBzX3NtYWxsCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByc2hhcGVbbl0sIGxzaGFwZVtuXSA9IHNtYWxsLCBiaWcKKyAgICAgICAgICAgIHJzbGljZXNbbl0sIGxzbGljZXNbbl0gPSBzX3NtYWxsLCBzX2JpZworCisgICAgcmV0dXJuIGxzaGFwZSwgcnNoYXBlLCB0dXBsZShsc2xpY2VzKSwgdHVwbGUocnNsaWNlcykKKworZGVmIHJhbmRpdGVtc19mcm9tX3N0cnVjdHVyZShmbXQsIHQpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgcmFuZG9tIGl0ZW1zIGZvciBzdHJ1Y3R1cmUgJ3QnIHdpdGggZm9ybWF0CisgICAgICAgJ2ZtdGNoYXInLiIiIgorICAgIG1lbWxlbiwgaXRlbXNpemUsIF8sIF8sIF8sIF8gPSB0CisgICAgcmV0dXJuIGdlbl9pdGVtcyhtZW1sZW4vL2l0ZW1zaXplLCAnIycrZm10LCAnbnVtcHknKQorCitkZWYgbmRhcnJheV9mcm9tX3N0cnVjdHVyZShpdGVtcywgZm10LCB0LCBmbGFncz0wKToKKyAgICAiIiJSZXR1cm4gbmRhcnJheSBmcm9tIHRoZSB0dXBsZSByZXR1cm5lZCBieSByYW5kX3N0cnVjdHVyZSgpIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCA9IHQKKyAgICByZXR1cm4gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywgZm9ybWF0PWZtdCwKKyAgICAgICAgICAgICAgICAgICBvZmZzZXQ9b2Zmc2V0LCBmbGFncz1ORF9XUklUQUJMRXxmbGFncykKKworZGVmIG51bXB5X2FycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpOgorICAgICIiIlJldHVybiBudW1weV9hcnJheSBmcm9tIHRoZSB0dXBsZSByZXR1cm5lZCBieSByYW5kX3N0cnVjdHVyZSgpIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCA9IHQKKyAgICBidWYgPSBieXRlYXJyYXkobWVtbGVuKQorICAgIGZvciBqLCB2IGluIGVudW1lcmF0ZShpdGVtcyk6CisgICAgICAgIHN0cnVjdC5wYWNrX2ludG8oZm10LCBidWYsIGoqaXRlbXNpemUsIHYpCisgICAgcmV0dXJuIG51bXB5X2FycmF5KGJ1ZmZlcj1idWYsIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPWZtdCwgb2Zmc2V0PW9mZnNldCkKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeXZpZXcgY2FzdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZWYgY2FzdF9pdGVtcyhleHBvcnRlciwgZm10LCBpdGVtc2l6ZSwgc2hhcGU9Tm9uZSk6CisgICAgIiIiSW50ZXJwcmV0IHRoZSByYXcgbWVtb3J5IG9mICdleHBvcnRlcicgYXMgYSBsaXN0IG9mIGl0ZW1zIHdpdGgKKyAgICAgICBzaXplICdpdGVtc2l6ZScuIElmIHNoYXBlPU5vbmUsIHRoZSBuZXcgc3RydWN0dXJlIGlzIGFzc3VtZWQgdG8KKyAgICAgICBiZSAxLUQgd2l0aCBuICogaXRlbXNpemUgPSBieXRlbGVuLiBJZiBzaGFwZSBpcyBnaXZlbiwgdGhlIHVzdWFsCisgICAgICAgY29uc3RyYWludCBmb3IgY29udGlndW91cyBhcnJheXMgcHJvZChzaGFwZSkgKiBpdGVtc2l6ZSA9IGJ5dGVsZW4KKyAgICAgICBhcHBsaWVzLiBPbiBzdWNjZXNzLCByZXR1cm4gKGl0ZW1zLCBzaGFwZSkuIElmIHRoZSBjb25zdHJhaW50cworICAgICAgIGNhbm5vdCBiZSBtZXQsIHJldHVybiAoTm9uZSwgTm9uZSkuIElmIGEgY2h1bmsgb2YgYnl0ZXMgaXMgaW50ZXJwcmV0ZWQKKyAgICAgICBhcyBOYU4gYXMgYSByZXN1bHQgb2YgZmxvYXQgY29udmVyc2lvbiwgcmV0dXJuICgnbmFuJywgTm9uZSkuIiIiCisgICAgYnl0ZWxlbiA9IGV4cG9ydGVyLm5ieXRlcworICAgIGlmIHNoYXBlOgorICAgICAgICBpZiBwcm9kKHNoYXBlKSAqIGl0ZW1zaXplICE9IGJ5dGVsZW46CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgc2hhcGUKKyAgICBlbGlmIHNoYXBlID09IFtdOgorICAgICAgICBpZiBleHBvcnRlci5uZGltID09IDAgb3IgaXRlbXNpemUgIT0gYnl0ZWxlbjoKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBzaGFwZQorICAgIGVsc2U6CisgICAgICAgIG4sIHIgPSBkaXZtb2QoYnl0ZWxlbiwgaXRlbXNpemUpCisgICAgICAgIHNoYXBlID0gW25dCisgICAgICAgIGlmIHIgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBzaGFwZQorCisgICAgbWVtID0gZXhwb3J0ZXIudG9ieXRlcygpCisgICAgYnl0ZWl0ZW1zID0gW21lbVtpOmkraXRlbXNpemVdIGZvciBpIGluIHJhbmdlKDAsIGxlbihtZW0pLCBpdGVtc2l6ZSldCisKKyAgICBpdGVtcyA9IFtdCisgICAgZm9yIHYgaW4gYnl0ZWl0ZW1zOgorICAgICAgICBpdGVtID0gc3RydWN0LnVucGFjayhmbXQsIHYpWzBdCisgICAgICAgIGlmIGl0ZW0gIT0gaXRlbToKKyAgICAgICAgICAgIHJldHVybiAnbmFuJywgc2hhcGUKKyAgICAgICAgaXRlbXMuYXBwZW5kKGl0ZW0pCisKKyAgICByZXR1cm4gKGl0ZW1zLCBzaGFwZSkgaWYgc2hhcGUgIT0gW10gZWxzZSAoaXRlbXNbMF0sIHNoYXBlKQorCitkZWYgZ2VuY2FzdHNoYXBlcygpOgorICAgICIiIkdlbmVyYXRlIHNoYXBlcyB0byB0ZXN0IGNhc3RpbmcuIiIiCisgICAgZm9yIG4gaW4gcmFuZ2UoMzIpOgorICAgICAgICB5aWVsZCBbbl0KKyAgICBuZGltID0gcmFuZHJhbmdlKDQsIDYpCisgICAgbWluc2hhcGUgPSAxIGlmIHJhbmRyYW5nZSgxMDApID4gODAgZWxzZSAyCisgICAgeWllbGQgW3JhbmRyYW5nZShtaW5zaGFwZSwgNSkgZm9yIF8gaW4gcmFuZ2UobmRpbSldCisgICAgbmRpbSA9IHJhbmRyYW5nZSgyLCA0KQorICAgIG1pbnNoYXBlID0gMSBpZiByYW5kcmFuZ2UoMTAwKSA+IDgwIGVsc2UgMgorICAgIHlpZWxkIFtyYW5kcmFuZ2UobWluc2hhcGUsIDUpIGZvciBfIGluIHJhbmdlKG5kaW0pXQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdHVhbCB0ZXN0cworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBnZW5zbGljZXMobik6CisgICAgIiIiR2VuZXJhdGUgYWxsIHBvc3NpYmxlIHNsaWNlcyBmb3IgYSBzaW5nbGUgZGltZW5zaW9uLiIiIgorICAgIHJldHVybiBwcm9kdWN0KHJhbmdlKC1uLCBuKzEpLCByYW5nZSgtbiwgbisxKSwgcmFuZ2UoLW4sIG4rMSkpCisKK2RlZiBnZW5zbGljZXNfbmRpbShuZGltLCBzaGFwZSk6CisgICAgIiIiR2VuZXJhdGUgYWxsIHBvc3NpYmxlIHNsaWNlIHR1cGxlcyBmb3IgJ3NoYXBlJy4iIiIKKyAgICBpdGVyYWJsZXMgPSBbZ2Vuc2xpY2VzKHNoYXBlW25dKSBmb3IgbiBpbiByYW5nZShuZGltKV0KKyAgICByZXR1cm4gcHJvZHVjdCgqaXRlcmFibGVzKQorCitkZWYgcnNsaWNlKG4sIGFsbG93X2VtcHR5PUZhbHNlKToKKyAgICAiIiJHZW5lcmF0ZSByYW5kb20gc2xpY2UgZm9yIGEgc2luZ2xlIGRpbWVuc2lvbiBvZiBsZW5ndGggbi4KKyAgICAgICBJZiB6ZXJvPVRydWUsIHRoZSBzbGljZXMgbWF5IGJlIGVtcHR5LCBvdGhlcndpc2UgdGhleSB3aWxsCisgICAgICAgYmUgbm9uLWVtcHR5LiIiIgorICAgIG1pbmxlbiA9IDAgaWYgYWxsb3dfZW1wdHkgb3IgbiA9PSAwIGVsc2UgMQorICAgIHNsaWNlbGVuID0gcmFuZHJhbmdlKG1pbmxlbiwgbisxKQorICAgIHJldHVybiByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgbikKKworZGVmIHJzbGljZXMobiwgYWxsb3dfZW1wdHk9RmFsc2UpOgorICAgICIiIkdlbmVyYXRlIHJhbmRvbSBzbGljZXMgZm9yIGEgc2luZ2xlIGRpbWVuc2lvbi4iIiIKKyAgICBmb3IgXyBpbiByYW5nZSg1KToKKyAgICAgICAgeWllbGQgcnNsaWNlKG4sIGFsbG93X2VtcHR5KQorCitkZWYgcnNsaWNlc19uZGltKG5kaW0sIHNoYXBlLCBpdGVyYXRpb25zPTUpOgorICAgICIiIkdlbmVyYXRlIHJhbmRvbSBzbGljZSB0dXBsZXMgZm9yICdzaGFwZScuIiIiCisgICAgIyBub24tZW1wdHkgc2xpY2VzCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRlcmF0aW9ucyk6CisgICAgICAgIHlpZWxkIHR1cGxlKHJzbGljZShzaGFwZVtuXSkgZm9yIG4gaW4gcmFuZ2UobmRpbSkpCisgICAgIyBwb3NzaWJseSBlbXB0eSBzbGljZXMKKyAgICBmb3IgXyBpbiByYW5nZShpdGVyYXRpb25zKToKKyAgICAgICAgeWllbGQgdHVwbGUocnNsaWNlKHNoYXBlW25dLCBhbGxvd19lbXB0eT1UcnVlKSBmb3IgbiBpbiByYW5nZShuZGltKSkKKyAgICAjIGludmFsaWQgc2xpY2VzCisgICAgeWllbGQgdHVwbGUoc2xpY2UoMCwxLDApIGZvciBfIGluIHJhbmdlKG5kaW0pKQorCitkZWYgcnBlcm11dGF0aW9uKGl0ZXJhYmxlLCByPU5vbmUpOgorICAgIHBvb2wgPSB0dXBsZShpdGVyYWJsZSkKKyAgICByID0gbGVuKHBvb2wpIGlmIHIgaXMgTm9uZSBlbHNlIHIKKyAgICB5aWVsZCB0dXBsZShzYW1wbGUocG9vbCwgcikpCisKK2RlZiBuZGFycmF5X3ByaW50KG5kKToKKyAgICAiIiJQcmludCBuZGFycmF5IGZvciBkZWJ1Z2dpbmcuIiIiCisgICAgdHJ5OgorICAgICAgICB4ID0gbmQudG9saXN0KCkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgIHggPSBuZC50b2J5dGVzKCkKKyAgICBpZiBpc2luc3RhbmNlKG5kLCBuZGFycmF5KToKKyAgICAgICAgb2Zmc2V0ID0gbmQub2Zmc2V0CisgICAgICAgIGZsYWdzID0gbmQuZmxhZ3MKKyAgICBlbHNlOgorICAgICAgICBvZmZzZXQgPSAndW5rbm93bicKKyAgICAgICAgZmxhZ3MgPSAndW5rbm93bicKKyAgICBwcmludCgibmRhcnJheSglcywgc2hhcGU9JXMsIHN0cmlkZXM9JXMsIHN1Ym9mZnNldHM9JXMsIG9mZnNldD0lcywgIgorICAgICAgICAgICJmb3JtYXQ9JyVzJywgaXRlbXNpemU9JXMsIGZsYWdzPSVzKSIgJQorICAgICAgICAgICh4LCBuZC5zaGFwZSwgbmQuc3RyaWRlcywgbmQuc3Vib2Zmc2V0cywgb2Zmc2V0LAorICAgICAgICAgICBuZC5mb3JtYXQsIG5kLml0ZW1zaXplLCBmbGFncykpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisKKworSVRFUkFUSU9OUyA9IDEwMAorTUFYRElNID0gNQorTUFYU0hBUEUgPSAxMAorCitpZiBTSE9SVF9URVNUOgorICAgIElURVJBVElPTlMgPSAxMAorICAgIE1BWERJTSA9IDMKKyAgICBNQVhTSEFQRSA9IDQKKyAgICBnZW5zbGljZXMgPSByc2xpY2VzCisgICAgZ2Vuc2xpY2VzX25kaW0gPSByc2xpY2VzX25kaW0KKyAgICBwZXJtdXRhdGlvbnMgPSBycGVybXV0YXRpb24KKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdHJ1Y3QsICdzdHJ1Y3QgbW9kdWxlIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0B1bml0dGVzdC5za2lwVW5sZXNzKG5kYXJyYXksICduZGFycmF5IG9iamVjdCByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0JykKK2NsYXNzIFRlc3RCdWZmZXJQcm90b2NvbCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICMgVGhlIHN1Ym9mZnNldHMgdGVzdHMgbmVlZCBzaXplb2Yodm9pZCAqKS4KKyAgICAgICAgc2VsZi5zaXplb2Zfdm9pZF9wID0gZ2V0X3NpemVvZl92b2lkX3AoKQorCisgICAgZGVmIHZlcmlmeShzZWxmLCByZXN1bHQsIG9iaj0tMSwKKyAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXsxfSwgZm10PS0xLCByZWFkb25seT17MX0sCisgICAgICAgICAgICAgICAgICAgICBuZGltPXsxfSwgc2hhcGU9LTEsIHN0cmlkZXM9LTEsCisgICAgICAgICAgICAgICAgICAgICBsc3Q9LTEsIHNsaWNlZD1GYWxzZSwgY2FzdD1GYWxzZSk6CisgICAgICAgICMgVmVyaWZ5IGJ1ZmZlciBjb250ZW50cyBhZ2FpbnN0IGV4cGVjdGVkIHZhbHVlcy4gRGVmYXVsdCB2YWx1ZXMKKyAgICAgICAgIyBhcmUgZGVsaWJlcmF0ZWx5IGluaXRpYWxpemVkIHRvIGludmFsaWQgdHlwZXMuCisgICAgICAgIGlmIHNoYXBlOgorICAgICAgICAgICAgZXhwZWN0ZWRfbGVuID0gcHJvZChzaGFwZSkqaXRlbXNpemUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5vdCBmbXQ6ICMgYXJyYXkgaGFzIGJlZW4gaW1wbGljaXRseSBjYXN0IHRvIHVuc2lnbmVkIGJ5dGVzCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbGVuID0gbGVuKGxzdCkKKyAgICAgICAgICAgIGVsc2U6ICMgbmRpbSA9IDAKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9sZW4gPSBpdGVtc2l6ZQorCisgICAgICAgICMgUmVjb25zdHJ1Y3Qgc3Vib2Zmc2V0cyBmcm9tIHN0cmlkZXMuIFN1cHBvcnQgZm9yIHNsaWNpbmcKKyAgICAgICAgIyBjb3VsZCBiZSBhZGRlZCwgYnV0IGlzIGN1cnJlbnRseSBvbmx5IG5lZWRlZCBmb3IgdGVzdF9nZXRidWYoKS4KKyAgICAgICAgc3Vib2Zmc2V0cyA9ICgpCisgICAgICAgIGlmIHJlc3VsdC5zdWJvZmZzZXRzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKG5kaW0sIDApCisKKyAgICAgICAgICAgIHN1Ym9mZnNldDAgPSAwCisgICAgICAgICAgICBmb3IgbiBpbiByYW5nZSgxLCBuZGltKToKKyAgICAgICAgICAgICAgICBpZiBzaGFwZVtuXSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbbl0gPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgc3Vib2Zmc2V0MCArPSAtc3RyaWRlc1tuXSAqIChzaGFwZVtuXS0xKQorCisgICAgICAgICAgICBzdWJvZmZzZXRzID0gW3N1Ym9mZnNldDBdICsgWy0xIGZvciB2IGluIHJhbmdlKG5kaW0tMSldCisKKyAgICAgICAgICAgICMgTm90IGNvcnJlY3QgaWYgc2xpY2luZyBoYXMgb2NjdXJyZWQgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbi4KKyAgICAgICAgICAgIHN0cmlkZTAgPSBzZWxmLnNpemVvZl92b2lkX3AKKyAgICAgICAgICAgIGlmIHN0cmlkZXNbMF0gPCAwOgorICAgICAgICAgICAgICAgIHN0cmlkZTAgPSAtc3RyaWRlMAorICAgICAgICAgICAgc3RyaWRlcyA9IFtzdHJpZGUwXSArIGxpc3Qoc3RyaWRlc1sxOl0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXN1bHQub2JqLCBvYmopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm5ieXRlcywgZXhwZWN0ZWRfbGVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5pdGVtc2l6ZSwgaXRlbXNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmZvcm1hdCwgZm10KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5yZWFkb25seSwgcmVhZG9ubHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm5kaW0sIG5kaW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnNoYXBlLCB0dXBsZShzaGFwZSkpCisgICAgICAgIGlmIG5vdCAoc2xpY2VkIGFuZCBzdWJvZmZzZXRzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0cmlkZXMsIHR1cGxlKHN0cmlkZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdWJvZmZzZXRzLCB0dXBsZShzdWJvZmZzZXRzKSkKKworICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgbmRhcnJheSkgb3IgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgIHJlcCA9IHJlc3VsdC50b2xpc3QoKSBpZiBmbXQgZWxzZSByZXN1bHQudG9ieXRlcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcCwgbHN0KQorCisgICAgICAgIGlmIG5vdCBmbXQ6ICMgYXJyYXkgaGFzIGJlZW4gY2FzdCB0byB1bnNpZ25lZCBieXRlcywKKyAgICAgICAgICAgIHJldHVybiAgIyB0aGUgcmVtYWluaW5nIHRlc3RzIHdvbid0IHdvcmsuCisKKyAgICAgICAgIyBQeUJ1ZmZlcl9HZXRQb2ludGVyKCkgaXMgdGhlIGRlZmluaXRpb24gaG93IHRvIGFjY2VzcyBhbiBpdGVtLgorICAgICAgICAjIElmIFB5QnVmZmVyX0dldFBvaW50ZXIoaW5kaWNlcykgaXMgY29ycmVjdCBmb3IgYWxsIHBvc3NpYmxlCisgICAgICAgICMgY29tYmluYXRpb25zIG9mIGluZGljZXMsIHRoZSBidWZmZXIgaXMgY29ycmVjdC4KKyAgICAgICAgIworICAgICAgICAjIEFsc28gdGVzdCB0b2J5dGVzKCkgYWdhaW5zdCB0aGUgZmxhdHRlbmVkICdsc3QnLCB3aXRoIGFsbCBpdGVtcworICAgICAgICAjIHBhY2tlZCB0byBieXRlcy4KKyAgICAgICAgaWYgbm90IGNhc3Q6ICMgY2FzdHMgY2hvcCB1cCAnbHN0JyBpbiBkaWZmZXJlbnQgd2F5cworICAgICAgICAgICAgYiA9IGJ5dGVhcnJheSgpCisgICAgICAgICAgICBidWZfZXJyID0gTm9uZQorICAgICAgICAgICAgZm9yIGluZCBpbiBpbmRpY2VzKHNoYXBlKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGl0ZW0xID0gZ2V0X3BvaW50ZXIocmVzdWx0LCBpbmQpCisgICAgICAgICAgICAgICAgICAgIGl0ZW0yID0gZ2V0X2l0ZW0obHN0LCBpbmQpCisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaXRlbTIsIHR1cGxlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBzdHJ1Y3QucGFjayhmbXQsICppdGVtMikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBzdHJ1Y3QucGFjayhmbXQsIGl0ZW0yKQorICAgICAgICAgICAgICAgICAgICBiLmV4dGVuZCh4KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgYnVmX2VyciA9IFRydWUgIyByZS1leHBvcnRlciBkb2VzIG5vdCBwcm92aWRlIGZ1bGwgYnVmZmVyCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtMSwgaXRlbTIpCisKKyAgICAgICAgICAgIGlmIG5vdCBidWZfZXJyOgorICAgICAgICAgICAgICAgICMgdGVzdCB0b2J5dGVzKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC50b2J5dGVzKCksIGIpCisKKyAgICAgICAgICAgICAgICAjIGxzdCA6PSBleHBlY3RlZCBtdWx0aS1kaW1lbnNpb25hbCBsb2dpY2FsIHJlcHJlc2VudGF0aW9uCisgICAgICAgICAgICAgICAgIyBmbGF0dGVuKGxzdCkgOj0gZWxlbWVudHMgaW4gQy1vcmRlcgorICAgICAgICAgICAgICAgIGZmID0gZm10IGlmIGZtdCBlbHNlICdCJworICAgICAgICAgICAgICAgIGZsYXR0ZW5lZCA9IGZsYXR0ZW4obHN0KQorCisgICAgICAgICAgICAgICAgIyBSdWxlcyBmb3IgJ0EnOiBpZiB0aGUgYXJyYXkgaXMgYWxyZWFkeSBjb250aWd1b3VzLCByZXR1cm4KKyAgICAgICAgICAgICAgICAjIHRoZSBhcnJheSB1bmFsdGVyZWQuIE90aGVyd2lzZSwgcmV0dXJuIGEgY29udGlndW91cyAnQycKKyAgICAgICAgICAgICAgICAjIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0CisgICAgICAgICAgICAgICAgICAgIGlmIG9yZGVyID09ICdGJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0EnKSBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0MnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZvciBjb25zdHJ1Y3RpbmcgdGhlIG5kYXJyYXksIGNvbnZlcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmbGF0dGVuZWQgbG9naWNhbCByZXByZXNlbnRhdGlvbiB0byBGb3J0cmFuIG9yZGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zID0gdHJhbnNwb3NlKGZsYXR0ZW5lZCwgc2hhcGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBuZGFycmF5KHRyYW5zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICAgICAgICAgICAgICBlbHNlOiAjICdDJywgJ0EnCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfY29udGlndW91cyhyZXN1bHQsICdBJykgb3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfY29udGlndW91cyhyZXN1bHQsICdGJykgYW5kIG9yZGVyID09ICdDJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBmbGF0dGVuZWQgbGlzdCBpcyBhbHJlYWR5IGluIEMtb3JkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBuZGFycmF5KGZsYXR0ZW5lZCwgc2hhcGU9c2hhcGUsIGZvcm1hdD1mZikKKworICAgICAgICAgICAgICAgICAgICBjb250aWcgPSBnZXRfY29udGlndW91cyhyZXN1bHQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRpZy50b2J5dGVzKCksIGIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbXBfY29udGlnKGNvbnRpZywgZXhwZWN0ZWQpKQorCisgICAgICAgICAgICAgICAgICAgIGlmIG5kaW0gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgbm1lbWIgPSBsZW4oZmxhdHRlbmVkKQorICAgICAgICAgICAgICAgICAgICBybyA9IDAgaWYgcmVhZG9ubHkgZWxzZSBORF9XUklUQUJMRQorCisgICAgICAgICAgICAgICAgICAgICMjIyBTZWUgY29tbWVudCBpbiB0ZXN0X3B5X2J1ZmZlcl90b19jb250aWd1b3VzIGZvciBhbgorICAgICAgICAgICAgICAgICAgICAjIyMgZXhwbGFuYXRpb24gd2h5IHRoZXNlIHRlc3RzIGFyZSB2YWxpZC4KKworICAgICAgICAgICAgICAgICAgICAjIFRvICdDJworICAgICAgICAgICAgICAgICAgICBjb250aWcgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhyZXN1bHQsICdDJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29udGlnKSwgbm1lbWIgKiBpdGVtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgaW5pdGxzdCA9IFtzdHJ1Y3QudW5wYWNrX2Zyb20oZm10LCBjb250aWcsIG4qaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG4gaW4gcmFuZ2Uobm1lbWIpXQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oaW5pdGxzdFswXSkgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbdlswXSBmb3IgdiBpbiBpbml0bHN0XQorCisgICAgICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KGluaXRsc3QsIHNoYXBlPXNoYXBlLCBmbGFncz1ybywgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KHJlc3VsdCkpCisKKyAgICAgICAgICAgICAgICAgICAgIyBUbyAnRicKKyAgICAgICAgICAgICAgICAgICAgY29udGlnID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMocmVzdWx0LCAnRicsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnRpZyksIG5tZW1iICogaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbc3RydWN0LnVucGFja19mcm9tKGZtdCwgY29udGlnLCBuKml0ZW1zaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuIGluIHJhbmdlKG5tZW1iKV0KKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGluaXRsc3RbMF0pID09IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBpbml0bHN0ID0gW3ZbMF0gZm9yIHYgaW4gaW5pdGxzdF0KKworICAgICAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShpbml0bHN0LCBzaGFwZT1zaGFwZSwgZmxhZ3M9cm98TkRfRk9SVFJBTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KHJlc3VsdCkpCisKKyAgICAgICAgICAgICAgICAgICAgIyBUbyAnQScKKyAgICAgICAgICAgICAgICAgICAgY29udGlnID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMocmVzdWx0LCAnQScsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnRpZyksIG5tZW1iICogaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbc3RydWN0LnVucGFja19mcm9tKGZtdCwgY29udGlnLCBuKml0ZW1zaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuIGluIHJhbmdlKG5tZW1iKV0KKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGluaXRsc3RbMF0pID09IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBpbml0bHN0ID0gW3ZbMF0gZm9yIHYgaW4gaW5pdGxzdF0KKworICAgICAgICAgICAgICAgICAgICBmID0gTkRfRk9SVFJBTiBpZiBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0YnKSBlbHNlIDAKKyAgICAgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoaW5pdGxzdCwgc2hhcGU9c2hhcGUsIGZsYWdzPWZ8cm8sIGZvcm1hdD1mbXQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhyZXN1bHQpKQorCisgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcocmVzdWx0KQorICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlckVycm9yOiAjIHJlLWV4cG9ydGVyIGRvZXMgbm90IHByb3ZpZGUgZnVsbCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZXggPSByZXN1bHQub2JqIGlmIGlzaW5zdGFuY2UocmVzdWx0LCBtZW1vcnl2aWV3KSBlbHNlIHJlc3VsdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubmJ5dGVzLCBleHBlY3RlZF9sZW4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uaXRlbXNpemUsIGl0ZW1zaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmZvcm1hdCwgZm10KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWRvbmx5LCByZWFkb25seSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5uZGltLCBuZGltKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNoYXBlLCB0dXBsZShzaGFwZSkpCisgICAgICAgICAgICBpZiBub3QgKHNsaWNlZCBhbmQgc3Vib2Zmc2V0cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN0cmlkZXMsIHR1cGxlKHN0cmlkZXMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN1Ym9mZnNldHMsIHR1cGxlKHN1Ym9mZnNldHMpKQorCisgICAgICAgICAgICBuID0gMSBpZiBuZGltID09IDAgZWxzZSBsZW4obHN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obSksIG4pCisKKyAgICAgICAgICAgIHJlcCA9IHJlc3VsdC50b2xpc3QoKSBpZiBmbXQgZWxzZSByZXN1bHQudG9ieXRlcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcCwgbHN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCByZXN1bHQpCisKKyAgICBkZWYgdmVyaWZ5X2dldGJ1ZihzZWxmLCBvcmlnX2V4LCBleCwgcmVxLCBzbGljZWQ9RmFsc2UpOgorICAgICAgICBkZWYgc2ltcGxlX2ZtdChleCk6CisgICAgICAgICAgICByZXR1cm4gZXguZm9ybWF0ID09ICcnIG9yIGV4LmZvcm1hdCA9PSAnQicKKyAgICAgICAgZGVmIG1hdGNoKHJlcSwgZmxhZyk6CisgICAgICAgICAgICByZXR1cm4gKChyZXEmZmxhZykgPT0gZmxhZykKKworICAgICAgICBpZiAoIyB3cml0YWJsZSByZXF1ZXN0IHRvIHJlYWQtb25seSBleHBvcnRlcgorICAgICAgICAgICAgKGV4LnJlYWRvbmx5IGFuZCBtYXRjaChyZXEsIFB5QlVGX1dSSVRBQkxFKSkgb3IKKyAgICAgICAgICAgICMgY2Fubm90IG1hdGNoIGV4cGxpY2l0IGNvbnRpZ3VpdHkgcmVxdWVzdAorICAgICAgICAgICAgKG1hdGNoKHJlcSwgUHlCVUZfQ19DT05USUdVT1VTKSBhbmQgbm90IGV4LmNfY29udGlndW91cykgb3IKKyAgICAgICAgICAgIChtYXRjaChyZXEsIFB5QlVGX0ZfQ09OVElHVU9VUykgYW5kIG5vdCBleC5mX2NvbnRpZ3VvdXMpIG9yCisgICAgICAgICAgICAobWF0Y2gocmVxLCBQeUJVRl9BTllfQ09OVElHVU9VUykgYW5kIG5vdCBleC5jb250aWd1b3VzKSBvcgorICAgICAgICAgICAgIyBidWZmZXIgbmVlZHMgc3Vib2Zmc2V0cworICAgICAgICAgICAgKG5vdCBtYXRjaChyZXEsIFB5QlVGX0lORElSRUNUKSBhbmQgZXguc3Vib2Zmc2V0cykgb3IKKyAgICAgICAgICAgICMgYnVmZmVyIHdpdGhvdXQgc3RyaWRlcyBtdXN0IGJlIEMtY29udGlndW91cworICAgICAgICAgICAgKG5vdCBtYXRjaChyZXEsIFB5QlVGX1NUUklERVMpIGFuZCBub3QgZXguY19jb250aWd1b3VzKSBvcgorICAgICAgICAgICAgIyBQeUJVRl9TSU1QTEV8UHlCVUZfRk9STUFUIGFuZCBQeUJVRl9XUklUQUJMRXxQeUJVRl9GT1JNQVQKKyAgICAgICAgICAgIChub3QgbWF0Y2gocmVxLCBQeUJVRl9ORCkgYW5kIG1hdGNoKHJlcSwgUHlCVUZfRk9STUFUKSkpOgorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1yZXEpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBpc2luc3RhbmNlKGV4LCBuZGFycmF5KSBvciBpc19tZW1vcnl2aWV3X2Zvcm1hdChleC5mb3JtYXQpOgorICAgICAgICAgICAgbHN0ID0gZXgudG9saXN0KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8pCisgICAgICAgICAgICBsc3QgPSBuZC50b2xpc3QoKQorCisgICAgICAgICMgVGhlIGNvbnN1bWVyIG1heSBoYXZlIHJlcXVlc3RlZCBkZWZhdWx0IHZhbHVlcyBvciBhIE5VTEwgZm9ybWF0LgorICAgICAgICBybyA9IDAgaWYgbWF0Y2gocmVxLCBQeUJVRl9XUklUQUJMRSkgZWxzZSBleC5yZWFkb25seQorICAgICAgICBmbXQgPSBleC5mb3JtYXQKKyAgICAgICAgaXRlbXNpemUgPSBleC5pdGVtc2l6ZQorICAgICAgICBuZGltID0gZXgubmRpbQorICAgICAgICBpZiBub3QgbWF0Y2gocmVxLCBQeUJVRl9GT1JNQVQpOgorICAgICAgICAgICAgIyBpdGVtc2l6ZSByZWZlcnMgdG8gdGhlIG9yaWdpbmFsIGl0ZW1zaXplIGJlZm9yZSB0aGUgY2FzdC4KKyAgICAgICAgICAgICMgVGhlIGVxdWFsaXR5IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPSBsZW4gc3RpbGwgaG9sZHMuCisgICAgICAgICAgICAjIFRoZSBlcXVhbGl0eSBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUgZG9lcyBfbm90XyBob2xkLgorICAgICAgICAgICAgZm10ID0gJycKKyAgICAgICAgICAgIGxzdCA9IG9yaWdfZXgudG9ieXRlcygpICMgSXNzdWUgMTI4MzQKKyAgICAgICAgaWYgbm90IG1hdGNoKHJlcSwgUHlCVUZfTkQpOgorICAgICAgICAgICAgbmRpbSA9IDEKKyAgICAgICAgc2hhcGUgPSBvcmlnX2V4LnNoYXBlIGlmIG1hdGNoKHJlcSwgUHlCVUZfTkQpIGVsc2UgKCkKKyAgICAgICAgc3RyaWRlcyA9IG9yaWdfZXguc3RyaWRlcyBpZiBtYXRjaChyZXEsIFB5QlVGX1NUUklERVMpIGVsc2UgKCkKKworICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1yZXEpCisgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT1ybywKKyAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBzbGljZWQ9c2xpY2VkKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9nZXRidWYoc2VsZik6CisgICAgICAgIHJlcXVlc3RzID0gKAorICAgICAgICAgICAgIyBkaXN0aW5jdCBmbGFncworICAgICAgICAgICAgUHlCVUZfSU5ESVJFQ1QsIFB5QlVGX1NUUklERVMsIFB5QlVGX05ELCBQeUJVRl9TSU1QTEUsCisgICAgICAgICAgICBQeUJVRl9DX0NPTlRJR1VPVVMsIFB5QlVGX0ZfQ09OVElHVU9VUywgUHlCVUZfQU5ZX0NPTlRJR1VPVVMsCisgICAgICAgICAgICAjIGNvbXBvdW5kIHJlcXVlc3RzCisgICAgICAgICAgICBQeUJVRl9GVUxMLCBQeUJVRl9GVUxMX1JPLAorICAgICAgICAgICAgUHlCVUZfUkVDT1JEUywgUHlCVUZfUkVDT1JEU19STywKKyAgICAgICAgICAgIFB5QlVGX1NUUklERUQsIFB5QlVGX1NUUklERURfUk8sCisgICAgICAgICAgICBQeUJVRl9DT05USUcsIFB5QlVGX0NPTlRJR19STywKKyAgICAgICAgKQorICAgICAgICAjIGl0ZW1zIGFuZCBmb3JtYXQKKyAgICAgICAgaXRlbXNfZm10ID0gKAorICAgICAgICAgICAgKFtUcnVlIGlmIHggJSAyIGVsc2UgRmFsc2UgZm9yIHggaW4gcmFuZ2UoMTIpXSwgJz8nKSwKKyAgICAgICAgICAgIChbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdLCAnYicpLAorICAgICAgICAgICAgKFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0sICdCJyksCisgICAgICAgICAgICAoWygyKiozMS14KSBpZiB4ICUgMiBlbHNlICgtMioqMzEreCkgZm9yIHggaW4gcmFuZ2UoMTIpXSwgJ2wnKQorICAgICAgICApCisgICAgICAgICMgc2hhcGUsIHN0cmlkZXMsIG9mZnNldAorICAgICAgICBzdHJ1Y3R1cmUgPSAoCisgICAgICAgICAgICAoW10sIFtdLCAwKSwKKyAgICAgICAgICAgIChbMTJdLCBbXSwgMCksCisgICAgICAgICAgICAoWzEyXSwgWy0xXSwgMTEpLAorICAgICAgICAgICAgKFs2XSwgWzJdLCAwKSwKKyAgICAgICAgICAgIChbNl0sIFstMl0sIDExKSwKKyAgICAgICAgICAgIChbMywgNF0sIFtdLCAwKSwKKyAgICAgICAgICAgIChbMywgNF0sIFstNCwgLTFdLCAxMSksCisgICAgICAgICAgICAoWzIsIDJdLCBbNCwgMV0sIDQpLAorICAgICAgICAgICAgKFsyLCAyXSwgWy00LCAtMV0sIDgpCisgICAgICAgICkKKyAgICAgICAgIyBuZGFycmF5IGNyZWF0aW9uIGZsYWdzCisgICAgICAgIG5kZmxhZ3MgPSAoCisgICAgICAgICAgICAwLCBORF9XUklUQUJMRSwgTkRfRk9SVFJBTiwgTkRfRk9SVFJBTnxORF9XUklUQUJMRSwKKyAgICAgICAgICAgIE5EX1BJTCwgTkRfUElMfE5EX1dSSVRBQkxFCisgICAgICAgICkKKyAgICAgICAgIyBmbGFncyB0aGF0IGNhbiBhY3R1YWxseSBiZSB1c2VkIGFzIGZsYWdzCisgICAgICAgIHJlYWxfZmxhZ3MgPSAoMCwgUHlCVUZfV1JJVEFCTEUsIFB5QlVGX0ZPUk1BVCwKKyAgICAgICAgICAgICAgICAgICAgICBQeUJVRl9XUklUQUJMRXxQeUJVRl9GT1JNQVQpCisKKyAgICAgICAgZm9yIGl0ZW1zLCBmbXQgaW4gaXRlbXNfZm10OgorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgZm9yIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQgaW4gc3RydWN0dXJlOgorICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBbdiAqIGl0ZW1zaXplIGZvciB2IGluIHN0cmlkZXNdCisgICAgICAgICAgICAgICAgb2Zmc2V0ICo9IGl0ZW1zaXplCisgICAgICAgICAgICAgICAgZm9yIGZsYWdzIGluIG5kZmxhZ3M6CisKKyAgICAgICAgICAgICAgICAgICAgaWYgc3RyaWRlcyBhbmQgKGZsYWdzJk5EX0ZPUlRSQU4pOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNoYXBlIGFuZCAoZmxhZ3MmTkRfUElMKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgX2l0ZW1zID0gaXRlbXMgaWYgc2hhcGUgZWxzZSBpdGVtc1swXQorICAgICAgICAgICAgICAgICAgICBleDEgPSBuZGFycmF5KF9pdGVtcywgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywgb2Zmc2V0PW9mZnNldCkKKyAgICAgICAgICAgICAgICAgICAgZXgyID0gZXgxWzo6LTJdIGlmIHNoYXBlIGVsc2UgTm9uZQorCisgICAgICAgICAgICAgICAgICAgIG0xID0gbWVtb3J5dmlldyhleDEpCisgICAgICAgICAgICAgICAgICAgIGlmIGV4MjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhleDIpCisgICAgICAgICAgICAgICAgICAgIGlmIGV4MS5uZGltID09IDAgb3IgKGV4MS5uZGltID09IDEgYW5kIHNoYXBlIGFuZCBzdHJpZGVzKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIGV4MSkKKyAgICAgICAgICAgICAgICAgICAgaWYgZXgyIGFuZCBleDIubmRpbSA9PSAxIGFuZCBzaGFwZSBhbmQgc3RyaWRlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIsIGV4MikKKworICAgICAgICAgICAgICAgICAgICBmb3IgcmVxIGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGJpdHMgaW4gcmVhbF9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeV9nZXRidWYoZXgxLCBleDEsIHJlcXxiaXRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5X2dldGJ1ZihleDEsIG0xLCByZXF8Yml0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBleDI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5X2dldGJ1ZihleDIsIGV4MiwgcmVxfGJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZWQ9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnlfZ2V0YnVmKGV4MiwgbTIsIHJlcXxiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpY2VkPVRydWUpCisKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdCisKKyAgICAgICAgIyBORF9HRVRCVUZfRkFJTAorICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMl0sIGZsYWdzPU5EX0dFVEJVRl9GQUlMKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgpCisKKyAgICAgICAgIyBSZXF1ZXN0IGNvbXBsZXggc3RydWN0dXJlIGZyb20gYSBzaW1wbGUgZXhwb3J0ZXIuIEluIHRoaXMKKyAgICAgICAgIyBwYXJ0aWN1bGFyIGNhc2UgdGhlIHRlc3Qgb2JqZWN0IGlzIG5vdCBQRVAtMzExOCBjb21wbGlhbnQuCisgICAgICAgIGJhc2UgPSBuZGFycmF5KFs5XSwgWzFdKQorICAgICAgICBleCA9IG5kYXJyYXkoYmFzZSwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX05EKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9TVFJJREVTKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9DX0NPTlRJR1VPVVMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX0ZfQ09OVElHVU9VUykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfQU5ZX0NPTlRJR1VPVVMpCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZXhjZXB0aW9ucyhzZWxmKToKKyAgICAgICAgbmQgPSBuZGFycmF5KFs5XSwgWzFdKQorICAgICAgICBuZG0gPSBuZGFycmF5KFs5XSwgWzFdLCBmbGFncz1ORF9WQVJFWFBPUlQpCisKKyAgICAgICAgIyBJbml0aWFsaXphdGlvbiBvZiBhIG5ldyBuZGFycmF5IG9yIG11dGF0aW9uIG9mIGFuIGV4aXN0aW5nIGFycmF5LgorICAgICAgICBmb3IgYyBpbiAobmRhcnJheSwgbmQucHVzaCwgbmRtLnB1c2gpOgorICAgICAgICAgICAgIyBJbnZhbGlkIHR5cGVzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCB7MSwyLDN9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMSwyLCczJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsKDMsNCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT17M30pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgc3RyaWRlcz17MX0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgb2Zmc2V0PVtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgZm9ybWF0PXt9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgZmxhZ3M9e30pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLCBnZXRidWY9e30pCisKKyAgICAgICAgICAgICMgTkRfRk9SVFJBTiBmbGFnIGlzIG9ubHkgdmFsaWQgd2l0aG91dCBzdHJpZGVzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorCisgICAgICAgICAgICAjIE5EX1BJTCBmbGFnIGlzIG9ubHkgdmFsaWQgd2l0aCBuZGltID4gMC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdLCBzaGFwZT1bXSwgZmxhZ3M9TkRfUElMKQorCisgICAgICAgICAgICAjIEludmFsaWQgaXRlbXMuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbXSwgc2hhcGU9WzFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWydYWFgnXSwgc2hhcGU9WzFdLCBmb3JtYXQ9IkwiKQorICAgICAgICAgICAgIyBJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIGl0ZW1zIGFuZCBmb3JtYXQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIGMsIFsxMDAwXSwgc2hhcGU9WzFdLCBmb3JtYXQ9IkIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsKDIsMyldLCBzaGFwZT1bMl0sIGZvcm1hdD0iQiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bM10sIGZvcm1hdD0iUUwiKQorCisgICAgICAgICAgICAjIEludmFsaWQgbmRpbS4KKyAgICAgICAgICAgIG4gPSBORF9NQVhfTkRJTSsxCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMV0qbiwgc2hhcGU9WzFdKm4pCisKKyAgICAgICAgICAgICMgSW52YWxpZCBzaGFwZS4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxXSwgc2hhcGU9Wy0xXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVsnMyddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgYywgWzFdLCBzaGFwZT1bMioqMTI4XSkKKyAgICAgICAgICAgICMgcHJvZChzaGFwZSkgKiBpdGVtc2l6ZSAhPSBsZW4oaXRlbXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDMsNCw1XSwgc2hhcGU9WzIsMl0sIG9mZnNldD0zKQorCisgICAgICAgICAgICAjIEludmFsaWQgc3RyaWRlcy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgc3RyaWRlcz1bJzEnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz1bMioqMTI4XSkKKworICAgICAgICAgICAgIyBJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHN0cmlkZXMgYW5kIHNoYXBlLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMl0sIHNoYXBlPVsyLDFdLCBzdHJpZGVzPVsxXSkKKyAgICAgICAgICAgICMgSW52YWxpZCBjb21iaW5hdGlvbiBvZiBzdHJpZGVzIGFuZCBmb3JtYXQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDMsNF0sIHNoYXBlPVsyXSwgc3RyaWRlcz1bM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9IkwiKQorCisgICAgICAgICAgICAjIEludmFsaWQgb2Zmc2V0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBvZmZzZXQ9NCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVsxXSwgb2Zmc2V0PTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9IkwiKQorCisgICAgICAgICAgICAjIEludmFsaWQgZm9ybWF0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9IiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIGMsIFsoMSwyLDMpXSwgc2hhcGU9WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSJAIyQiKQorCisgICAgICAgICAgICAjIFN0cmlkaW5nIG91dCBvZiB0aGUgbWVtb3J5IGJvdW5kcy4KKyAgICAgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOCw5LDEwXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgaXRlbXMsIHNoYXBlPVsyLDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz1bLTMsIC0yXSwgb2Zmc2V0PTUpCisKKyAgICAgICAgICAgICMgQ29uc3RydWN0aW5nIGNvbnN1bWVyOiBmb3JtYXQgYXJndW1lbnQgaW52YWxpZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgYnl0ZWFycmF5KCksIGZvcm1hdD0iUSIpCisKKyAgICAgICAgICAgICMgQ29uc3RydWN0aW5nIG9yaWdpbmFsIGJhc2Ugb2JqZWN0OiBnZXRidWYgYXJndW1lbnQgaW52YWxpZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdLCBzaGFwZT1bMV0sIGdldGJ1Zj1QeUJVRl9GVUxMKQorCisgICAgICAgICAgICAjIFNoYXBlIGFyZ3VtZW50IGlzIG1hbmRhdG9yeSBmb3Igb3JpZ2luYWwgYmFzZSBvYmplY3RzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0pCisKKworICAgICAgICAjIFB5QlVGX1dSSVRBQkxFIHJlcXVlc3QgdG8gcmVhZC1vbmx5IHByb3ZpZGVyLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgYicxMjMnLCBnZXRidWY9UHlCVUZfV1JJVEFCTEUpCisKKyAgICAgICAgIyBORF9WQVJFWFBPUlQgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAgIG5kID0gbmRhcnJheShbOV0sIFsxXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5wdXNoLCBbMV0sIFsxXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorCisgICAgICAgICMgSW52YWxpZCBvcGVyYXRpb24gZm9yIGNvbnN1bWVyczogcHVzaC9wb3AKKyAgICAgICAgbmQgPSBuZGFycmF5KGInMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnB1c2gsIFsxXSwgWzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucG9wKQorCisgICAgICAgICMgTkRfVkFSRVhQT1JUIG5vdCBzZXQ6IHB1c2gvcG9wIGZhaWwgd2l0aCBleHBvcnRlZCBidWZmZXJzCisgICAgICAgIG5kID0gbmRhcnJheShbOV0sIFsxXSkKKyAgICAgICAgbmQucHVzaChbMV0sIFsxXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5wdXNoLCBbMV0sIFsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnBvcCkKKyAgICAgICAgbS5yZWxlYXNlKCkKKyAgICAgICAgbmQucG9wKCkKKworICAgICAgICAjIFNpbmdsZSByZW1haW5pbmcgYnVmZmVyOiBwb3AgZmFpbHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnBvcCkKKyAgICAgICAgZGVsIG5kCisKKyAgICAgICAgIyBnZXRfcG9pbnRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X3BvaW50ZXIsIHt9LCBbMSwyLDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9wb2ludGVyLCBiJzEyMycsIHt9KQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEwMCkpLCBzaGFwZT1bMV0qMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfcG9pbnRlciwgbmQsIFs1XSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X3BvaW50ZXIsIG5kLCBbMiwzLDRdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfcG9pbnRlciwgbmQsIFszLDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfcG9pbnRlciwgbmQsIFstMywzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0X3BvaW50ZXIsIG5kLCBbMTw8NjQsM10pCisKKyAgICAgICAgIyB0b2xpc3QoKSBuZWVkcyBmb3JtYXQKKyAgICAgICAgZXggPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZm9ybWF0PSdMJykKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC50b2xpc3QpCisKKyAgICAgICAgIyBtZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgZXgxID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZvcm1hdD0nTCcpCisgICAgICAgIGV4MiA9IG5kYXJyYXkoZXgxKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFsoMSwpKjIwMF0sIHNoYXBlPVsxXSwgZm9ybWF0PSdMJyoyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcikKKworICAgICAgICBuID0gTkRfTUFYX05ESU0KKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UobikpLCBzaGFwZT1bMV0qbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcikKKworICAgICAgICAjIGdldF9jb250aWd1b3VzKCkKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9jb250aWd1b3VzLCAxLCAyLCAzLCA0LCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgInh5eiIsICdDJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCAyKio2NCwgJ0MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwgOTYxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x1MjAwNycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwgJ1onKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsIDI1NSwgJ0EnKQorCisgICAgICAgICMgY21wX2NvbnRpZygpCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjbXBfY29udGlnLCAxLCAyLCAzLCA0LCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNtcF9jb250aWcsIHt9LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjbXBfY29udGlnLCBuZCwge30pCisKKyAgICAgICAgIyBpc19jb250aWd1b3VzKCkKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzX2NvbnRpZ3VvdXMsIDEsIDIsIDMsIDQsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNfY29udGlndW91cywge30sICdBJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc19jb250aWd1b3VzLCBuZCwgMjAxKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9saW5rZWRfbGlzdChzZWxmKToKKyAgICAgICAgZm9yIHBlcm0gaW4gcGVybXV0YXRpb25zKHJhbmdlKDUpKToKKyAgICAgICAgICAgIG0gPSBbMF0qNQorICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorICAgICAgICAgICAgbVswXSA9IG1lbW9yeXZpZXcobmQpCisKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDUpOgorICAgICAgICAgICAgICAgIG5kLnB1c2goWzEsMiwzXSwgc2hhcGU9WzNdKQorICAgICAgICAgICAgICAgIG1baV0gPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgICAgICBtW3Blcm1baV1dLnJlbGVhc2UoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucG9wKQorICAgICAgICAgICAgZGVsIG5kCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2Zvcm1hdF9zY2FsYXIoc2VsZik6CisgICAgICAgICMgbmRpbSA9IDA6IHNjYWxhcgorICAgICAgICBmb3IgZm10LCBzY2FsYXIsIF8gaW4gaXRlcl9mb3JtYXQoMCk6CisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoc2NhbGFyLCBzaGFwZT0oKSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0wLCBzaGFwZT0oKSwgc3RyaWRlcz0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1zY2FsYXIpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2Zvcm1hdF9zaGFwZShzZWxmKToKKyAgICAgICAgIyBuZGltID0gMSwgc2hhcGUgPSBbbl0KKyAgICAgICAgbml0ZW1zID0gIHJhbmRyYW5nZSgxLCAxMCkKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQobml0ZW1zKToKKyAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVtuaXRlbXNdLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShuZCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT0obml0ZW1zLCksIHN0cmlkZXM9KGl0ZW1zaXplLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWl0ZW1zKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9mb3JtYXRfc3RyaWRlcyhzZWxmKToKKyAgICAgICAgIyBuZGltID0gMSwgc3RyaWRlcworICAgICAgICBuaXRlbXMgPSByYW5kcmFuZ2UoMSwgMzApCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KG5pdGVtcyk6CisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBmb3Igc3RlcCBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICAgICAgaWYgc3RlcCA9PSAwOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc2hhcGUgPSBbbGVuKGl0ZW1zWzo6c3RlcF0pXQorICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBbc3RlcCppdGVtc2l6ZV0KKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBpdGVtc2l6ZSoobml0ZW1zLTEpIGlmIHN0ZXAgPCAwIGVsc2UgMAorCisgICAgICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9Zm10LCBvZmZzZXQ9b2Zmc2V0LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9aXRlbXNbOjpzdGVwXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZm9ydHJhbihzZWxmKToKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9KDMsIDQpLCBzdHJpZGVzPSgxLCAzKSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfRl9DT05USUdVT1VTfFB5QlVGX0ZPUk1BVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgZmFycmF5KGl0ZW1zLCAoMywgNCkpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9tdWx0aWRpbShzZWxmKToKKyAgICAgICAgZm9yIG5kaW0gaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBzaGFwZV90ID0gW3JhbmRyYW5nZSgyLCAxMCkgZm9yIF8gaW4gcmFuZ2UobmRpbSldCisgICAgICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgICAgICBmb3Igc2hhcGUgaW4gcGVybXV0YXRpb25zKHNoYXBlX3QpOgorCisgICAgICAgICAgICAgICAgZm10LCBpdGVtcywgXyA9IHJhbmRpdGVtcyhuaXRlbXMpCisgICAgICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgICAgICBpZiBuZGltID09IDAgYW5kIGZsYWdzID09IE5EX1BJTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBDIGFycmF5CisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorCisgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIGl0ZW1zaXplLCAnQycpCisgICAgICAgICAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBtZW1vcnl2aWV3OiByZWNvbnN0cnVjdCBzdHJpZGVzCisgICAgICAgICAgICAgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHX1JPfFB5QlVGX0ZPUk1BVCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZC5zdHJpZGVzID09ICgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbXYgPSBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG12LCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgICAgICAgICAjIEZvcnRyYW4gYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPWZsYWdzfE5EX0ZPUlRSQU4pCisKKyAgICAgICAgICAgICAgICAgICAgc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgaXRlbXNpemUsICdGJykKKyAgICAgICAgICAgICAgICAgICAgbHN0ID0gZmFycmF5KGl0ZW1zLCBzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9pbmRleF9pbnZhbGlkKHNlbGYpOgorICAgICAgICAjIG5vdCB3cml0YWJsZQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19zZXRpdGVtX18sIDEsIDgpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19zZXRpdGVtX18sIDEsIDgpCisKKyAgICAgICAgIyBjYW5ub3QgYmUgZGVsZXRlZAorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLl9fZGVsaXRlbV9fLCAxKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG12Ll9fZGVsaXRlbV9fLCAxKQorCisgICAgICAgICMgb3ZlcmZsb3cKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbmQuX19nZXRpdGVtX18sIDE8PDY0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBuZC5fX3NldGl0ZW1fXywgMTw8NjQsIDgpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCAxPDw2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19zZXRpdGVtX18sIDE8PDY0LCA4KQorCisgICAgICAgICMgZm9ybWF0CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOF0KKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bbGVuKGl0ZW1zKV0sIGZvcm1hdD0iQiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAyLCAzMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAxLCAoMTAwLCAyMDApKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtdi5fX3NldGl0ZW1fXywgMiwgMzAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG12Ll9fc2V0aXRlbV9fLCAxLCAoMTAwLCAyMDApKQorCisgICAgICAgIGl0ZW1zID0gWygxLDIpLCAoMyw0KSwgKDUsNildCisgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9W2xlbihpdGVtcyldLCBmb3JtYXQ9IkxRIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAyLCAzMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgbmQuX19zZXRpdGVtX18sIDEsIChiJ1x4MDAxJywgMjAwKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfc2NhbGFyKHNlbGYpOgorICAgICAgICAjIHNjYWxhcgorICAgICAgICBuZCA9IG5kYXJyYXkoMSwgc2hhcGU9KCksIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorCisgICAgICAgIHggPSBuZFsoKV07ICBzZWxmLmFzc2VydEVxdWFsKHgsIDEpCisgICAgICAgIHggPSBuZFsuLi5dOyBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIHggPSBtdlsoKV07ICBzZWxmLmFzc2VydEVxdWFsKHgsIDEpCisgICAgICAgIHggPSBtdlsuLi5dOyBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19nZXRpdGVtX18sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19nZXRpdGVtX18sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19zZXRpdGVtX18sIDAsIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19zZXRpdGVtX18sIDAsIDgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgMSkKKworICAgICAgICBuZFsoKV0gPSA5OyBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCA5KQorICAgICAgICBtdlsoKV0gPSA5OyBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCA5KQorCisgICAgICAgIG5kWy4uLl0gPSA1OyBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCA1KQorICAgICAgICBtdlsuLi5dID0gNTsgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgNSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfbnVsbF9zdHJpZGVzKHNlbGYpOgorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgyKjQpKSwgc2hhcGU9WzIsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHKQorCisgICAgICAgICMgU3ViLXZpZXdzIGFyZSBvbmx5IHBvc3NpYmxlIGZvciBmdWxsIGV4cG9ydGVycy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCAxKQorICAgICAgICAjIFNhbWUgZm9yIHNsaWNlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCBzbGljZSgzLDUsMSkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X2dldGl0ZW1fc2luZ2xlKHNlbGYpOgorICAgICAgICAjIGdldGl0ZW0KKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW2ldLCBpdGVtc1tpXSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbmQuX19nZXRpdGVtX18sIC02KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbmQuX19nZXRpdGVtX18sIDUpCisKKyAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdltpXSwgaXRlbXNbaV0pCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtdi5fX2dldGl0ZW1fXywgLTYpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19nZXRpdGVtX18sIDUpCisKKyAgICAgICAgIyBnZXRpdGVtIHdpdGggbnVsbCBzdHJpZGVzCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZsYWdzPU5EX1dSSVRBQkxFLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHfFB5QlVGX0ZPUk1BVCkKKworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbaV0sIGl0ZW1zW2ldKQorCisgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgIG12ID0gbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcigpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtdi5fX2VxX18obmQpLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXZbaV0sIGl0ZW1zW2ldKQorCisgICAgICAgICMgZ2V0aXRlbSB3aXRoIG51bGwgZm9ybWF0CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNV0KKyAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0pCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0NPTlRJR19STykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtpXSwgaXRlbXNbaV0pCisKKyAgICAgICAgIyBnZXRpdGVtIHdpdGggbnVsbCBzaGFwZS9zdHJpZGVzL2Zvcm1hdAorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDVdCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtpXSwgaXRlbXNbaV0pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X3NldGl0ZW1fc2luZ2xlKHNlbGYpOgorICAgICAgICAjIGFzc2lnbiBzaW5nbGUgdmFsdWUKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIHNpbmdsZV9pdGVtIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBzaW5nbGVfaXRlbQorICAgICAgICAgICAgICAgIG5kW2ldID0gc2luZ2xlX2l0ZW0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBuZC5fX3NldGl0ZW1fXywgLTYsIHNpbmdsZV9pdGVtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbmQuX19zZXRpdGVtX18sIDUsIHNpbmdsZV9pdGVtKQorCisgICAgICAgICAgICBpZiBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gc2luZ2xlX2l0ZW0KKyAgICAgICAgICAgICAgICBtdltpXSA9IHNpbmdsZV9pdGVtCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19zZXRpdGVtX18sIC02LCBzaW5nbGVfaXRlbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG12Ll9fc2V0aXRlbV9fLCA1LCBzaW5nbGVfaXRlbSkKKworCisgICAgICAgICMgYXNzaWduIHNpbmdsZSB2YWx1ZTogbG9iamVjdCA9IHJvYmplY3QKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIHNpbmdsZV9pdGVtIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDQpOgorICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gaXRlbXNbaSsxXQorICAgICAgICAgICAgICAgIG5kW2ldID0gbmRbaSsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgICAgIGlmIG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDQpOgorICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gaXRlbXNbaSsxXQorICAgICAgICAgICAgICAgIG12W2ldID0gbXZbaSsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgaXRlbXMpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X2dldGl0ZW1fbXVsdGlkaW0oc2VsZik6CisgICAgICAgIHNoYXBlX3QgPSAoMiwgMywgNSkKKyAgICAgICAgbml0ZW1zID0gcHJvZChzaGFwZV90KQorICAgICAgICBmb3Igc2hhcGUgaW4gcGVybXV0YXRpb25zKHNoYXBlX3QpOgorCisgICAgICAgICAgICBmbXQsIGl0ZW1zLCBfID0gcmFuZGl0ZW1zKG5pdGVtcykKKworICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgICMgQyBhcnJheQorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtc2hhcGVbMF0sIHNoYXBlWzBdKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV0sIG5kW2ldLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgtc2hhcGVbMV0sIHNoYXBlWzFdKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldW2pdLCBuZFtpXVtqXS50b2xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKC1zaGFwZVsyXSwgc2hhcGVbMl0pOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldW2pdW2tdLCBuZFtpXVtqXVtrXSkKKworICAgICAgICAgICAgICAgICMgRm9ydHJhbiBhcnJheQorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPWZsYWdzfE5EX0ZPUlRSQU4pCisgICAgICAgICAgICAgICAgbHN0ID0gZmFycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC1zaGFwZVswXSwgc2hhcGVbMF0pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXSwgbmRbaV0udG9saXN0KCkpCisgICAgICAgICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKC1zaGFwZVsxXSwgc2hhcGVbMV0pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV1bal0sIG5kW2ldW2pdLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2Uoc2hhcGVbMl0sIHNoYXBlWzJdKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXVtqXVtrXSwgbmRbaV1bal1ba10pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NlcXVlbmNlKHNlbGYpOgorICAgICAgICBuZCA9IG5kYXJyYXkoMSwgc2hhcGU9KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgIjEgaW4gbmQiLCBsb2NhbHMoKSkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAiMSBpbiBtdiIsIGxvY2FscygpKQorCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQpCisgICAgICAgICAgICBmb3IgaSwgdiBpbiBlbnVtZXJhdGUobmQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgaXRlbXNbaV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHYgaW4gbmQpCisKKyAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShtdik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgaXRlbXNbaV0pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2IGluIG12KQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zbGljZV9pbnZhbGlkKHNlbGYpOgorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDhdCisKKyAgICAgICAgIyBydmFsdWUgaXMgbm90IGFuIGV4cG9ydGVyCisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDgsMSksIGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1sLl9fc2V0aXRlbV9fLCBzbGljZSgwLDgsMSksIGl0ZW1zKQorCisgICAgICAgICMgcnZhbHVlIGlzIG5vdCBhIGZ1bGwgZXhwb3J0ZXIKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHhyID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX05EKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgeGwuX19zZXRpdGVtX18sIHNsaWNlKDAsOCwxKSwgeHIpCisKKyAgICAgICAgIyB6ZXJvIHN0ZXAKKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCBzbGljZSgwLDEsMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCBzbGljZSgwLDEsMCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMiw0XSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5fX2dldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMSwxKSwgc2xpY2UoMCwxLDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQuX19nZXRpdGVtX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzbGljZSgwLDEsMCksIHNsaWNlKDAsMSwxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19nZXRpdGVtX18sICJAJSQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCAoIkAlJCIsIHNsaWNlKDAsMSwxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19nZXRpdGVtX18sIChzbGljZSgwLDEsMSksIHt9KSkKKworICAgICAgICAjIG1lbW9yeXZpZXc6IG5vdCBpbXBsZW1lbnRlZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtdi5fX2dldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMSwxKSwgc2xpY2UoMCwxLDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdi5fX2dldGl0ZW1fXywgIkAlJCIpCisKKyAgICAgICAgIyBkaWZmZXJpbmcgZm9ybWF0CisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9IkIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeHIgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIpCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCB4cls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsLnRvbGlzdCgpLCBpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWwuX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwgbXJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgIyBkaWZmZXJpbmcgaXRlbXNpemUKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iQiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB5ciA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJMIikKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBtciA9IG1lbW9yeXZpZXcoeHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksIHhyWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGwudG9saXN0KCksIGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtbC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCBtcls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAjIGRpZmZlcmluZyBuZGltCisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzIsIDRdLCBmb3JtYXQ9ImIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeHIgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIpCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCB4cls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsLnRvbGlzdCgpLCBbWzEsMiwzLDRdLCBbNSw2LDcsOF1dKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtbC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtcls3OjhdKQorCisgICAgICAgICMgZGlmZmVyaW5nIHNoYXBlCisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9ImIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeHIgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIpCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCwyLDEpLCB4cls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsLnRvbGlzdCgpLCBpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWwuX19zZXRpdGVtX18sIHNsaWNlKDAsMiwxKSwgbXJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgIyBfdGVzdGJ1ZmZlci5jIG1vZHVsZSBmdW5jdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzbGljZV9pbmRpY2VzLCBzbGljZSgwLDEsMiksIHt9KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNsaWNlX2luZGljZXMsICIjIyMjIyMjIyMjIyIsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNsaWNlX2luZGljZXMsIHNsaWNlKDAsMSwwKSwgNCkKKworICAgICAgICB4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9ImIiLCBmbGFncz1ORF9QSUwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5hZGRfc3Vib2Zmc2V0cykKKworICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJCIikKKyAgICAgICAgeCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5hZGRfc3Vib2Zmc2V0cykKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfemVyb19zaGFwZShzZWxmKToKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdCisKKyAgICAgICAgeCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMl0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB5ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzEyXSwgZm9ybWF0PSJMIikKKyAgICAgICAgeFs0OjRdID0geVs5OjldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIG1yID0gbWVtb3J5dmlldyh5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLCB5KQorICAgICAgICBtbFs0OjRdID0gbXJbOTo5XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICB4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzMsIDRdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeSA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs0LCAzXSwgZm9ybWF0PSJMIikKKyAgICAgICAgeFsxOjIsIDI6Ml0gPSB5WzE6MiwgMzozXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIGNhcnJheShpdGVtcywgWzMsIDRdKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfbXVsdGlkaW0oc2VsZik6CisgICAgICAgIHNoYXBlX3QgPSAoMiwgMywgNSkKKyAgICAgICAgbmRpbSA9IGxlbihzaGFwZV90KQorICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgIGZvciBzaGFwZSBpbiBwZXJtdXRhdGlvbnMoc2hhcGVfdCk6CisKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIF8gPSByYW5kaXRlbXMobml0ZW1zKQorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgICAgIGZvciBzbGljZXMgaW4gcnNsaWNlc19uZGltKG5kaW0sIHNoYXBlKToKKworICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzbGljZWQgPSBtdWx0aXNsaWNlKGxzdCwgc2xpY2VzKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICBuZGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgbmRzbGljZWQgPSBuZFtzbGljZXNdCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICBpZiBuZGVyciBvciBsaXN0ZXJyOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhuZGVyciwgbGlzdGVycikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRzbGljZWQudG9saXN0KCksIHNsaWNlZCkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfcmVkdW5kYW50X3N1Ym9mZnNldHMoc2VsZik6CisgICAgICAgIHNoYXBlX3QgPSAoMiwgMywgNSwgMikKKyAgICAgICAgbmRpbSA9IGxlbihzaGFwZV90KQorICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgIGZvciBzaGFwZSBpbiBwZXJtdXRhdGlvbnMoc2hhcGVfdCk6CisKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIF8gPSByYW5kaXRlbXMobml0ZW1zKQorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgbmQuYWRkX3N1Ym9mZnNldHMoKQorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIGV4LmFkZF9zdWJvZmZzZXRzKCkKKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgIGZvciBzbGljZXMgaW4gcnNsaWNlc19uZGltKG5kaW0sIHNoYXBlKToKKworICAgICAgICAgICAgICAgIGxpc3RlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzbGljZWQgPSBtdWx0aXNsaWNlKGxzdCwgc2xpY2VzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgbGlzdGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICBuZGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG5kc2xpY2VkID0gbmRbc2xpY2VzXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgaWYgbmRlcnIgb3IgbGlzdGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhuZGVyciwgbGlzdGVycikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kc2xpY2VkLnRvbGlzdCgpLCBzbGljZWQpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NsaWNlX2Fzc2lnbl9zaW5nbGUoc2VsZik6CisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgZm9yIGxzbGljZSBpbiBnZW5zbGljZXMoNSk6CisgICAgICAgICAgICAgICAgZm9yIHJzbGljZSBpbiBnZW5zbGljZXMoNSk6CisgICAgICAgICAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKworICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGZsYWdzfE5EX1dSSVRBQkxFCisgICAgICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZikKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1mKQorICAgICAgICAgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICAgICAgICAgICAgICAgICBsc3RlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBkaWZmX3N0cnVjdHVyZSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdCA9IGl0ZW1zWzpdCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHZhbCA9IGxzdFtsc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnZhbCA9IGxzdFtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0W2xzbGljZV0gPSBsc3RbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfc3RydWN0dXJlID0gbGVuKGx2YWwpICE9IGxlbihydmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kW2xzbGljZV0gPSBuZFtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBkaWZmX3N0cnVjdHVyZTogIyBuZGFycmF5IGNhbm5vdCBjaGFuZ2Ugc2hhcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBWYWx1ZUVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBsc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhuZGVyciwgbHN0ZXJyKQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgICAgICBtdmVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdltsc2xpY2VdID0gbXZbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG12ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGlmZl9zdHJ1Y3R1cmU6ICMgbWVtb3J5dmlldyBjYW5ub3QgY2hhbmdlIHNoYXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtdmVyciwgVmFsdWVFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgbHN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobXZlcnIsIGxzdGVycikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtdiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9bmQuaXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kLm5kaW0sIHNoYXBlPW5kLnNoYXBlLCBzdHJpZGVzPW5kLnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bmQudG9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NsaWNlX2Fzc2lnbl9tdWx0aWRpbShzZWxmKToKKyAgICAgICAgc2hhcGVfdCA9ICgyLCAzLCA1KQorICAgICAgICBuZGltID0gbGVuKHNoYXBlX3QpCisgICAgICAgIG5pdGVtcyA9IHByb2Qoc2hhcGVfdCkKKyAgICAgICAgZm9yIHNoYXBlIGluIHBlcm11dGF0aW9ucyhzaGFwZV90KToKKworICAgICAgICAgICAgZm10LCBpdGVtcywgXyA9IHJhbmRpdGVtcyhuaXRlbXMpCisKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShJVEVSQVRJT05TKToKKyAgICAgICAgICAgICAgICAgICAgbHNsaWNlcywgcnNsaWNlcyA9IHJhbmRzbGljZV9mcm9tX3NoYXBlKG5kaW0sIHNoYXBlKQorCisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1mbGFnc3xORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtdWx0aXNsaWNlX2Fzc2lnbihsc3QsIGxzdCwgbHNsaWNlcywgcnNsaWNlcykKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kW2xzbGljZXNdID0gbmRbcnNsaWNlc10KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgIGlmIG5kZXJyIG9yIGxpc3RlcnI6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBsaXN0ZXJyKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgcmVzdWx0KQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9yYW5kb20oc2VsZik6CisgICAgICAgICMgY29uc3RydWN0aW9uIG9mIHZhbGlkIGFycmF5cworICAgICAgICBmb3IgXyBpbiByYW5nZShJVEVSQVRJT05TKToKKyAgICAgICAgICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKworICAgICAgICAgICAgICAgIHQgPSByYW5kX3N0cnVjdHVyZShpdGVtc2l6ZSwgVHJ1ZSwgbWF4ZGltPU1BWERJTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4c2hhcGU9TUFYU0hBUEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcmlmeV9zdHJ1Y3R1cmUoKnQpKQorICAgICAgICAgICAgICAgIGl0ZW1zID0gcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdCkKKworICAgICAgICAgICAgICAgIHggPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpCisgICAgICAgICAgICAgICAgeGxpc3QgPSB4LnRvbGlzdCgpCisKKyAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgICAgICBtdmxpc3QgPSBtdi50b2xpc3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12bGlzdCwgeGxpc3QpCisKKyAgICAgICAgICAgICAgICBpZiB0WzJdID4gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBuZGltID4gMDogdGVzdCBhZ2FpbnN0IHN1Ym9mZnNldHMgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgICAgICAgICAgICAgeWxpc3QgPSB5LnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGxpc3QsIHlsaXN0KQorCisgICAgICAgICAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyh5KQorICAgICAgICAgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgeSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG12bGlzdCA9IG12LnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12bGlzdCwgeWxpc3QpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSB0WzNdCisgICAgICAgICAgICAgICAgICAgIGlmIDAgaW4gc2hhcGU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIGh0dHA6Ly9wcm9qZWN0cy5zY2lweS5vcmcvbnVtcHkvdGlja2V0LzE5MTAKKyAgICAgICAgICAgICAgICAgICAgeiA9IG51bXB5X2FycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KHgsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT16Lml0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPXoubmRpbSwgc2hhcGU9ei5zaGFwZSwgc3RyaWRlcz16LnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD16LnRvbGlzdCgpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9yYW5kb21faW52YWxpZChzZWxmKToKKyAgICAgICAgIyBleGNlcHRpb25zIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgaW52YWxpZCBhcnJheXMKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoSVRFUkFUSU9OUyk6CisgICAgICAgICAgICBmb3IgZm10IGluIGZtdGRpY3RbJ0AnXToKKyAgICAgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisKKyAgICAgICAgICAgICAgICB0ID0gcmFuZF9zdHJ1Y3R1cmUoaXRlbXNpemUsIEZhbHNlLCBtYXhkaW09TUFYRElNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhzaGFwZT1NQVhTSEFQRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHZlcmlmeV9zdHJ1Y3R1cmUoKnQpKQorICAgICAgICAgICAgICAgIGl0ZW1zID0gcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdCkKKworICAgICAgICAgICAgICAgIG5kZXJyID0gRmFsc2UKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHggPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBuZGVyciA9IGUuX19jbGFzc19fCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5kZXJyKQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIG51bXB5X2VyciA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBudW1weV9hcnJheV9mcm9tX3N0cnVjdHVyZShpdGVtcywgZm10LCB0KQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBudW1weV9lcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgIGlmIDA6ICMgaHR0cDovL3Byb2plY3RzLnNjaXB5Lm9yZy9udW1weS90aWNrZXQvMTkxMAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG51bXB5X2VycikKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfcmFuZG9tX3NsaWNlX2Fzc2lnbihzZWxmKToKKyAgICAgICAgIyB2YWxpZCBzbGljZSBhc3NpZ25tZW50cworICAgICAgICBmb3IgXyBpbiByYW5nZShJVEVSQVRJT05TKToKKyAgICAgICAgICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKworICAgICAgICAgICAgICAgIGxzaGFwZSwgcnNoYXBlLCBsc2xpY2VzLCByc2xpY2VzID0gXAorICAgICAgICAgICAgICAgICAgICByYW5kX2FsaWduZWRfc2xpY2VzKG1heGRpbT1NQVhESU0sIG1heHNoYXBlPU1BWFNIQVBFKQorICAgICAgICAgICAgICAgIHRsID0gcmFuZF9zdHJ1Y3R1cmUoaXRlbXNpemUsIFRydWUsIHNoYXBlPWxzaGFwZSkKKyAgICAgICAgICAgICAgICB0ciA9IHJhbmRfc3RydWN0dXJlKGl0ZW1zaXplLCBUcnVlLCBzaGFwZT1yc2hhcGUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcmlmeV9zdHJ1Y3R1cmUoKnRsKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyaWZ5X3N0cnVjdHVyZSgqdHIpKQorICAgICAgICAgICAgICAgIGxpdGVtcyA9IHJhbmRpdGVtc19mcm9tX3N0cnVjdHVyZShmbXQsIHRsKQorICAgICAgICAgICAgICAgIHJpdGVtcyA9IHJhbmRpdGVtc19mcm9tX3N0cnVjdHVyZShmbXQsIHRyKQorCisgICAgICAgICAgICAgICAgeGwgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGxpdGVtcywgZm10LCB0bCkKKyAgICAgICAgICAgICAgICB4ciA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUocml0ZW1zLCBmbXQsIHRyKQorICAgICAgICAgICAgICAgIHhsW2xzbGljZXNdID0geHJbcnNsaWNlc10KKyAgICAgICAgICAgICAgICB4bGxpc3QgPSB4bC50b2xpc3QoKQorICAgICAgICAgICAgICAgIHhybGlzdCA9IHhyLnRvbGlzdCgpCisKKyAgICAgICAgICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeGwpCisgICAgICAgICAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIHhsbGlzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1yLnRvbGlzdCgpLCB4cmxpc3QpCisKKyAgICAgICAgICAgICAgICBpZiB0bFsyXSA+IDAgYW5kIHRyWzJdID4gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBuZGltID4gMDogdGVzdCBhZ2FpbnN0IHN1Ym9mZnNldHMgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIHlsID0gbmRhcnJheV9mcm9tX3N0cnVjdHVyZShsaXRlbXMsIGZtdCwgdGwsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgICAgICAgICAgICAgeXIgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKHJpdGVtcywgZm10LCB0ciwgZmxhZ3M9TkRfUElMKQorICAgICAgICAgICAgICAgICAgICB5bFtsc2xpY2VzXSA9IHlyW3JzbGljZXNdCisgICAgICAgICAgICAgICAgICAgIHlsbGlzdCA9IHlsLnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHlybGlzdCA9IHlyLnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGxsaXN0LCB5bGxpc3QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeHJsaXN0LCB5cmxpc3QpCisKKyAgICAgICAgICAgICAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHlsKQorICAgICAgICAgICAgICAgICAgICBtciA9IG1lbW9yeXZpZXcoeXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIHlsbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtci50b2xpc3QoKSwgeXJsaXN0KQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIGlmIDAgaW4gbHNoYXBlIG9yIDAgaW4gcnNoYXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgIyBodHRwOi8vcHJvamVjdHMuc2NpcHkub3JnL251bXB5L3RpY2tldC8xOTEwCisKKyAgICAgICAgICAgICAgICAgICAgemwgPSBudW1weV9hcnJheV9mcm9tX3N0cnVjdHVyZShsaXRlbXMsIGZtdCwgdGwpCisgICAgICAgICAgICAgICAgICAgIHpyID0gbnVtcHlfYXJyYXlfZnJvbV9zdHJ1Y3R1cmUocml0ZW1zLCBmbXQsIHRyKQorICAgICAgICAgICAgICAgICAgICB6bFtsc2xpY2VzXSA9IHpyW3JzbGljZXNdCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX292ZXJsYXBwaW5nKHRsKSBhbmQgbm90IGlzX292ZXJsYXBwaW5nKHRyKToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU2xpY2UgYXNzaWdubWVudCBvZiBvdmVybGFwcGluZyBzdHJ1Y3R1cmVzCisgICAgICAgICAgICAgICAgICAgICAgICAjIGlzIHVuZGVmaW5lZCBpbiBOdW1QeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KHhsLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXpsLml0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT16bC5uZGltLCBzaGFwZT16bC5zaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXM9emwuc3RyaWRlcywgbHN0PXpsLnRvbGlzdCgpKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KHhyLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9enIuaXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09enIubmRpbSwgc2hhcGU9enIuc2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXM9enIuc3RyaWRlcywgbHN0PXpyLnRvbGlzdCgpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9yZV9leHBvcnQoc2VsZik6CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXQorCisgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgZXggPSBuZGFycmF5KG5kKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleC5mbGFncyAmIE5EX1BJTCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhleC5vYmosIG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LnN1Ym9mZnNldHMsICgwLCAtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguY19jb250aWd1b3VzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4LmZfY29udGlndW91cykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleC5jb250aWd1b3VzKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV96ZXJvX3NoYXBlKHNlbGYpOgorICAgICAgICAjIHplcm9zIGluIHNoYXBlCisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bMF0sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIFtdKQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzAsMywzXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBbXSkKKworICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszLDAsM10sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgW1tdLCBbXSwgW11dKQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzMsMywwXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1tdLCBbXSwgW11dLCBbW10sIFtdLCBbXV0sIFtbXSwgW10sIFtdXV0pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3plcm9fc3RyaWRlcyhzZWxmKToKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMKKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzVdLCBzdHJpZGVzPVswXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIFsxLCAxLCAxLCAxLCAxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIFsxLCAxLCAxLCAxLCAxXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfb2Zmc2V0KHNlbGYpOgorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgyMCkpLCBzaGFwZT1bM10sIG9mZnNldD03KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLm9mZnNldCwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgWzcsOCw5XSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfbWVtb3J5dmlld19mcm9tX2J1ZmZlcihzZWxmKToKKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMykpLCBzaGFwZT1bM10sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgbSA9IG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZ2V0X3BvaW50ZXIoc2VsZik6CisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDMpKSwgc2hhcGU9WzNdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbaV0sIGdldF9wb2ludGVyKG5kLCBbaV0pKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV90b2xpc3RfbnVsbF9zdHJpZGVzKHNlbGYpOgorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgyMCkpLCBzaGFwZT1bMiwyLDVdKQorCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX05EfFB5QlVGX0ZPUk1BVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgZXgudG9saXN0KCkpCisKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgZXgudG9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2NtcF9jb250aWcoc2VsZik6CisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbXBfY29udGlnKGIiMTIzIiwgYiI0NTYiKSkKKworICAgICAgICB4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdKQorICAgICAgICB5ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVs0LDNdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNtcF9jb250aWcoeCwgeSkpCisKKyAgICAgICAgeCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZvcm1hdD0iQiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbXBfY29udGlnKHgsIGInXHgwMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY21wX2NvbnRpZyhiJ1x4MDEnLCB4KSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaGFzaChzZWxmKToKKworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0wnLCBbMSwyLDNdKQorICAgICAgICBuZCA9IG5kYXJyYXkoYSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaGFzaCwgbmQpCisKKyAgICAgICAgIyBvbmUtZGltZW5zaW9uYWwKKyAgICAgICAgYiA9IGJ5dGVzKGxpc3QocmFuZ2UoMTIpKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgICMgQy1jb250aWd1b3VzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDIsMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgIyBGb3J0cmFuIGNvbnRpZ3VvdXMKKyAgICAgICAgYiA9IGJ5dGVzKHRyYW5zcG9zZShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVs0LDNdKSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgYiA9IGJ5dGVzKHRyYW5zcG9zZShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDMsMl0pKQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwzLDJdLCBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgICMgc3Vib2Zmc2V0cworICAgICAgICBiID0gYnl0ZXMobGlzdChyYW5nZSgxMikpKQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwyLDNdLCBmbGFncz1ORF9QSUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgIyBub24tYnl0ZSBmb3JtYXRzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2gobmQudG9ieXRlcygpKSkKKworICAgIGRlZiB0ZXN0X3B5X2J1ZmZlcl90b19jb250aWd1b3VzKHNlbGYpOgorCisgICAgICAgICMgVGhlIHJlcXVlc3RzIGFyZSB1c2VkIGluIF90ZXN0YnVmZmVyLmM6cHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMKKyAgICAgICAgIyB0byBnZW5lcmF0ZSBidWZmZXJzIHdpdGhvdXQgZnVsbCBpbmZvcm1hdGlvbiBmb3IgdGVzdGluZy4KKyAgICAgICAgcmVxdWVzdHMgPSAoCisgICAgICAgICAgICAjIGRpc3RpbmN0IGZsYWdzCisgICAgICAgICAgICBQeUJVRl9JTkRJUkVDVCwgUHlCVUZfU1RSSURFUywgUHlCVUZfTkQsIFB5QlVGX1NJTVBMRSwKKyAgICAgICAgICAgICMgY29tcG91bmQgcmVxdWVzdHMKKyAgICAgICAgICAgIFB5QlVGX0ZVTEwsIFB5QlVGX0ZVTExfUk8sCisgICAgICAgICAgICBQeUJVRl9SRUNPUkRTLCBQeUJVRl9SRUNPUkRTX1JPLAorICAgICAgICAgICAgUHlCVUZfU1RSSURFRCwgUHlCVUZfU1RSSURFRF9STywKKyAgICAgICAgICAgIFB5QlVGX0NPTlRJRywgUHlCVUZfQ09OVElHX1JPLAorICAgICAgICApCisKKyAgICAgICAgIyBubyBidWZmZXIgaW50ZXJmYWNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMsIHt9LCAnRicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QlVGX0ZVTExfUk8pCisKKyAgICAgICAgIyBzY2FsYXIsIHJlYWQtb25seSByZXF1ZXN0CisgICAgICAgIG5kID0gbmRhcnJheSg5LCBzaGFwZT0oKSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmQudG9ieXRlcygpKQorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJycpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoOCkpLCBzaGFwZT1bMiwgMCwgN10sIGZvcm1hdD0iTCIsCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJycpCisKKyAgICAgICAgIyMjIE9uZS1kaW1lbnNpb25hbCBhcnJheXMgYXJlIHRyaXZpYWwsIHNpbmNlIEZvcnRyYW4gYW5kIEMgb3JkZXIKKyAgICAgICAgIyMjIGFyZSB0aGUgc2FtZS4KKworICAgICAgICAjIG9uZS1kaW1lbnNpb25hbAorICAgICAgICBmb3IgZiBpbiBbMCwgTkRfRk9SVFJBTl06CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZvcm1hdD0iaCIsIGZsYWdzPWZ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBuZGJ5dGVzID0gbmQudG9ieXRlcygpCisgICAgICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5kYnl0ZXMpCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwgMiwgM10sIHNoYXBlPVszXSwgZm9ybWF0PSJiIiwgZmxhZ3M9ZnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG5kYnl0ZXMgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmRieXRlcykKKworICAgICAgICAjIG9uZS1kaW1lbnNpb25hbCwgbm9uLWNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLCAyLCAzXSwgc2hhcGU9WzJdLCBzdHJpZGVzPVsyXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG5kYnl0ZXMgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIFtQeUJVRl9TVFJJREVTLCBQeUJVRl9GVUxMXToKKyAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmRieXRlcykKKworICAgICAgICBuZCA9IG5kWzo6LTFdCisgICAgICAgIG5kYnl0ZXMgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZGJ5dGVzKQorCisgICAgICAgICMjIworICAgICAgICAjIyMgTXVsdGktZGltZW5zaW9uYWwgYXJyYXlzOgorICAgICAgICAjIyMKKyAgICAgICAgIyMjIFRoZSBnb2FsIGhlcmUgaXMgdG8gcHJlc2VydmUgdGhlIGxvZ2ljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlCisgICAgICAgICMjIyBpbnB1dCBhcnJheSBidXQgY2hhbmdlIHRoZSBwaHlzaWNhbCByZXByZXNlbnRhdGlvbiBpZiBuZWNlc3NhcnkuCisgICAgICAgICMjIworICAgICAgICAjIyMgX3Rlc3RidWZmZXIgZXhhbXBsZToKKyAgICAgICAgIyMjID09PT09PT09PT09PT09PT09PT09CisgICAgICAgICMjIworICAgICAgICAjIyMgICAgQyBpbnB1dCBhcnJheToKKyAgICAgICAgIyMjICAgIC0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdKQorICAgICAgICAjIyMgICAgICAgPj4+IG5kLnRvbGlzdCgpCisgICAgICAgICMjIyAgICAgICBbWzAsIDEsIDIsIDNdLAorICAgICAgICAjIyMgICAgICAgIFs0LCA1LCA2LCA3XSwKKyAgICAgICAgIyMjICAgICAgICBbOCwgOSwgMTAsIDExXV0KKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBGb3J0cmFuIG91dHB1dDoKKyAgICAgICAgIyMjICAgIC0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIyMgICAgICAgPj4+IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnRicsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgICMjIyAgICAgICA+Pj4gYidceDAwXHgwNFx4MDhceDAxXHgwNVx0XHgwMlx4MDZcblx4MDNceDA3XHgwYicKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBUaGUgcmV0dXJuIHZhbHVlIGNvcnJlc3BvbmRzIHRvIHRoaXMgaW5wdXQgbGlzdCBmb3IKKyAgICAgICAgIyMjICAgIF90ZXN0YnVmZmVyJ3MgbmRhcnJheToKKyAgICAgICAgIyMjICAgICAgID4+PiBuZCA9IG5kYXJyYXkoWzAsNCw4LDEsNSw5LDIsNiwxMCwzLDcsMTFdLCBzaGFwZT1bMyw0XSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgIyMjICAgICAgID4+PiBuZC50b2xpc3QoKQorICAgICAgICAjIyMgICAgICAgW1swLCAxLCAyLCAzXSwKKyAgICAgICAgIyMjICAgICAgICBbNCwgNSwgNiwgN10sCisgICAgICAgICMjIyAgICAgICAgWzgsIDksIDEwLCAxMV1dCisgICAgICAgICMjIworICAgICAgICAjIyMgICAgVGhlIGxvZ2ljYWwgYXJyYXkgaXMgdGhlIHNhbWUsIGJ1dCB0aGUgdmFsdWVzIGluIG1lbW9yeSBhcmUgbm93CisgICAgICAgICMjIyAgICBpbiBGb3J0cmFuIG9yZGVyLgorICAgICAgICAjIyMKKyAgICAgICAgIyMjIE51bVB5IGV4YW1wbGU6CisgICAgICAgICMjIyA9PT09PT09PT09PT09PQorICAgICAgICAjIyMgICAgX3Rlc3RidWZmZXIncyBuZGFycmF5IHRha2VzIGxpc3RzIHRvIGluaXRpYWxpemUgdGhlIG1lbW9yeS4KKyAgICAgICAgIyMjICAgIEhlcmUncyB0aGUgc2FtZSBzZXF1ZW5jZSBpbiBOdW1QeToKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBDIGlucHV0OgorICAgICAgICAjIyMgICAgLS0tLS0tLS0KKyAgICAgICAgIyMjICAgICAgID4+PiBuZCA9IG5kYXJyYXkoYnVmZmVyPWJ5dGVhcnJheShsaXN0KHJhbmdlKDEyKSkpLAorICAgICAgICAjIyMgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZT1bMywgNF0sIGR0eXBlPSdCJykKKyAgICAgICAgIyMjICAgICAgID4+PiBuZAorICAgICAgICAjIyMgICAgICAgYXJyYXkoW1sgMCwgIDEsICAyLCAgM10sCisgICAgICAgICMjIyAgICAgICAgICAgICAgWyA0LCAgNSwgIDYsICA3XSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICBbIDgsICA5LCAxMCwgMTFdXSwgZHR5cGU9dWludDgpCisgICAgICAgICMjIworICAgICAgICAjIyMgICAgRm9ydHJhbiBvdXRwdXQ6CisgICAgICAgICMjIyAgICAtLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjICAgICAgID4+PiBmb3J0cmFuX2J1ZiA9IG5kLnRvc3RyaW5nKG9yZGVyPSdGJykKKyAgICAgICAgIyMjICAgICAgID4+PiBmb3J0cmFuX2J1ZgorICAgICAgICAjIyMgICAgICAgYidceDAwXHgwNFx4MDhceDAxXHgwNVx0XHgwMlx4MDZcblx4MDNceDA3XHgwYicKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQgPSBuZGFycmF5KGJ1ZmZlcj1mb3J0cmFuX2J1Ziwgc2hhcGU9WzMsIDRdLAorICAgICAgICAjIyMgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT0nQicsIG9yZGVyPSdGJykKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQKKyAgICAgICAgIyMjICAgICAgIGFycmF5KFtbIDAsICAxLCAgMiwgIDNdLAorICAgICAgICAjIyMgICAgICAgICAgICAgIFsgNCwgIDUsICA2LCAgN10sCisgICAgICAgICMjIyAgICAgICAgICAgICAgWyA4LCAgOSwgMTAsIDExXV0sIGR0eXBlPXVpbnQ4KQorICAgICAgICAjIyMKKworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsLCBjb250aWd1b3VzIGlucHV0CisgICAgICAgIGxzdCA9IGxpc3QocmFuZ2UoMTIpKQorICAgICAgICBmb3IgZiBpbiBbMCwgTkRfRk9SVFJBTl06CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkobHN0LCBzaGFwZT1bMywgNF0sIGZsYWdzPWZ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICBuYSA9IG51bXB5X2FycmF5KGJ1ZmZlcj1ieXRlYXJyYXkobHN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlPVszLCA0XSwgZHR5cGU9J0InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI9J0MnIGlmIGYgPT0gMCBlbHNlICdGJykKKworICAgICAgICAgICAgIyAnQycgcmVxdWVzdAorICAgICAgICAgICAgaWYgZiA9PSBORF9GT1JUUkFOOiAjICdGJyB0byAnQycKKyAgICAgICAgICAgICAgICB4ID0gbmRhcnJheSh0cmFuc3Bvc2UobHN0LCBbNCwgM10pLCBzaGFwZT1bMywgNF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSB4LnRvYnl0ZXMoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IG5kLnRvYnl0ZXMoKQorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdDJywgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGV4cGVjdGVkKQorCisgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IG91dHB1dCBjYW4gYmUgdXNlZCBhcyB0aGUgYmFzaXMgZm9yIGNvbnN0cnVjdGluZworICAgICAgICAgICAgICAgICMgYSBDIGFycmF5IHRoYXQgaXMgbG9naWNhbGx5IGlkZW50aWNhbCB0byB0aGUgaW5wdXQgYXJyYXkuCisgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5hLnRvc3RyaW5nKG9yZGVyPSdDJykpCisKKyAgICAgICAgICAgICMgJ0YnIHJlcXVlc3QKKyAgICAgICAgICAgIGlmIGYgPT0gMDogIyAnQycgdG8gJ0YnCisgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXkodHJhbnNwb3NlKGxzdCwgWzMsIDRdKSwgc2hhcGU9WzQsIDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB4ID0gbmRhcnJheShsc3QsIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBleHBlY3RlZCA9IHgudG9ieXRlcygpCisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiBbUHlCVUZfRlVMTCwgUHlCVUZfRlVMTF9STywgUHlCVUZfSU5ESVJFQ1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCVUZfU1RSSURFUywgUHlCVUZfTkRdOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnRicsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlckVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgZXhwZWN0ZWQpCisKKyAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgb3V0cHV0IGNhbiBiZSB1c2VkIGFzIHRoZSBiYXNpcyBmb3IgY29uc3RydWN0aW5nCisgICAgICAgICAgICAgICAgIyBhIEZvcnRyYW4gYXJyYXkgdGhhdCBpcyBsb2dpY2FsbHkgaWRlbnRpY2FsIHRvIHRoZSBpbnB1dCBhcnJheS4KKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9GT1JUUkFOfE5EX1dSSVRBQkxFKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhuZCkpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuYS50b3N0cmluZyhvcmRlcj0nRicpKQorCisgICAgICAgICAgICAjICdBJyByZXF1ZXN0CisgICAgICAgICAgICBpZiBmID09IE5EX0ZPUlRSQU46CisgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXkobHN0LCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0geC50b2J5dGVzKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIFtQeUJVRl9GVUxMLCBQeUJVRl9GVUxMX1JPLCBQeUJVRl9JTkRJUkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJVRl9TVFJJREVTLCBQeUJVRl9ORF06CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdBJywgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGV4cGVjdGVkKQorCisgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IG91dHB1dCBjYW4gYmUgdXNlZCBhcyB0aGUgYmFzaXMgZm9yIGNvbnN0cnVjdGluZworICAgICAgICAgICAgICAgICMgYW4gYXJyYXkgd2l0aCBvcmRlcj1mIHRoYXQgaXMgbG9naWNhbGx5IGlkZW50aWNhbCB0byB0aGUgaW5wdXQKKyAgICAgICAgICAgICAgICAjIGFycmF5LgorICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPWZ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5hLnRvc3RyaW5nKG9yZGVyPSdBJykpCisKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbCwgbm9uLWNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRXxORF9QSUwpCisKKyAgICAgICAgIyAnQycKKyAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnQycsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmQudG9ieXRlcygpKQorICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAjICdGJworICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdGJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgeCA9IG5kYXJyYXkodHJhbnNwb3NlKGxzdCwgWzMsIDRdKSwgc2hhcGU9WzQsIDNdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCB4LnRvYnl0ZXMoKSkKKyAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfRk9SVFJBTnxORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAjICdBJworICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdBJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZC50b2J5dGVzKCkpCisgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb25zdHJ1Y3Rpb24oc2VsZik6CisKKyAgICAgICAgaXRlbXNfc2hhcGUgPSBbKDksIFtdKSwgKFsxLDIsM10sIFszXSksIChsaXN0KHJhbmdlKDIqMyo1KSksIFsyLDMsNV0pXQorCisgICAgICAgICMgTnVtUHkgc3R5bGUsIEMtY29udGlndW91czoKKyAgICAgICAgZm9yIGl0ZW1zLCBzaGFwZSBpbiBpdGVtc19zaGFwZToKKworICAgICAgICAgICAgIyBGcm9tIFBFUC0zMTE4IGNvbXBsaWFudCBleHBvcnRlcjoKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNfY29udGlndW91cykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNvbnRpZ3VvdXMpCisKKyAgICAgICAgICAgIG5kaW0gPSBsZW4oc2hhcGUpCisgICAgICAgICAgICBzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCAxLCAnQycpCisgICAgICAgICAgICBsc3QgPSBjYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBGcm9tIG1lbW9yeXZpZXc6CisgICAgICAgICAgICBtMiA9IG1lbW9yeXZpZXcobSkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigpOiBubyBzdHJpZGVzCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUdfUk98UHlCVUZfRk9STUFUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC5zdHJpZGVzLCAoKSkKKyAgICAgICAgICAgIG0gPSBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgICAgICMgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoKTogbm8gZm9ybWF0LCBzaGFwZSwgc3RyaWRlcworICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC5mb3JtYXQsICcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC5zaGFwZSwgKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnN0cmlkZXMsICgpKQorICAgICAgICAgICAgbSA9IG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorCisgICAgICAgICAgICBsc3QgPSBbaXRlbXNdIGlmIG5kaW0gPT0gMCBlbHNlIGl0ZW1zCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVtleC5uYnl0ZXNdLCBzdHJpZGVzPSgxLCksCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICMgTnVtUHkgc3R5bGUsIEZvcnRyYW4gY29udGlndW91czoKKyAgICAgICAgZm9yIGl0ZW1zLCBzaGFwZSBpbiBpdGVtc19zaGFwZToKKworICAgICAgICAgICAgIyBGcm9tIFBFUC0zMTE4IGNvbXBsaWFudCBleHBvcnRlcjoKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmZfY29udGlndW91cykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNvbnRpZ3VvdXMpCisKKyAgICAgICAgICAgIG5kaW0gPSBsZW4oc2hhcGUpCisgICAgICAgICAgICBzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCAxLCAnRicpCisgICAgICAgICAgICBsc3QgPSBmYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBGcm9tIG1lbW9yeXZpZXc6CisgICAgICAgICAgICBtMiA9IG1lbW9yeXZpZXcobSkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAjIFBJTCBzdHlsZToKKyAgICAgICAgZm9yIGl0ZW1zLCBzaGFwZSBpbiBpdGVtc19zaGFwZVsxOl06CisKKyAgICAgICAgICAgICMgRnJvbSBQRVAtMzExOCBjb21wbGlhbnQgZXhwb3J0ZXI6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmbGFncz1ORF9QSUwpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICAgICAgbmRpbSA9IGxlbihzaGFwZSkKKyAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPWV4LnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAjIEZyb20gbWVtb3J5dmlldzoKKyAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhtKQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPWV4LnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICMgSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1lbW9yeXZpZXcsIGInOScsICd4JykKKyAgICAgICAgIyBOb3QgYSBidWZmZXIgcHJvdmlkZXI6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWVtb3J5dmlldywge30pCisgICAgICAgICMgTm9uLWNvbXBsaWFudCBidWZmZXIgcHJvdmlkZXI6CisgICAgICAgIGV4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10pCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG1lbW9yeXZpZXcsIG5kKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUdfUk98UHlCVUZfRk9STUFUKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbWVtb3J5dmlldywgbmQpCisKKyAgICAgICAgIyBuZGltID4gNjQKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSoxMjgsIHNoYXBlPVsxXSoxMjgsIGZvcm1hdD0nTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1lbW9yeXZpZXcsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1JFQUQsICdDJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9SRUFELCAnRicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZFs6Oi0xXSwgUHlCVUZfUkVBRCwgJ0MnKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jYXN0X3plcm9fc2hhcGUoc2VsZik6CisgICAgICAgICMgQ2FzdHMgYXJlIHVuZGVmaW5lZCBpZiBzaGFwZSBjb250YWlucyB6ZXJvcy4gVGhlc2UgYXJyYXlzIGFyZQorICAgICAgICAjIHJlZ2FyZGVkIGFzIEMtY29udGlndW91cyBieSBOdW1weSBhbmQgUHlCdWZmZXJfR2V0Q29udGlndW91cygpLAorICAgICAgICAjIHNvIHRoZXkgYXJlIG5vdCBjYXVnaHQgYnkgdGhlIHRlc3QgZm9yIEMtY29udGlndWl0eSBpbiBtZW1vcnlfY2FzdCgpLgorICAgICAgICBpdGVtcyA9IFsxLDIsM10KKyAgICAgICAgZm9yIHNoYXBlIGluIChbMCwzLDNdLCBbMywwLDNdLCBbMCwzLDNdKToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXguY19jb250aWd1b3VzKQorICAgICAgICAgICAgbXNyYyA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1zcmMuY2FzdCwgJ2MnKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19zdHJ1Y3RfbW9kdWxlKHNlbGYpOgorCisgICAgICAgIGNsYXNzIElOVChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgc2VsZi52YWwgPSB2YWwKKyAgICAgICAgICAgIGRlZiBfX2ludF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbAorCisgICAgICAgIGNsYXNzIElEWChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgc2VsZi52YWwgPSB2YWwKKyAgICAgICAgICAgIGRlZiBfX2luZGV4X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsCisKKyAgICAgICAgZGVmIGYoKTogcmV0dXJuIDcKKworICAgICAgICB2YWx1ZXMgPSBbSU5UKDkpLCBJRFgoOSksCisgICAgICAgICAgICAgICAgICAyLjIrM2osIERlY2ltYWwoIi0yMS4xIiksIDEyLjIsIEZyYWN0aW9uKDUsIDIpLAorICAgICAgICAgICAgICAgICAgWzEsMiwzXSwgezQsNSw2fSwgezc6OH0sICgpLCAoOSwpLAorICAgICAgICAgICAgICAgICAgVHJ1ZSwgRmFsc2UsIE5vbmUsIE5vdEltcGxlbWVudGVkLAorICAgICAgICAgICAgICAgICAgYidhJywgYidhYmMnLCBieXRlYXJyYXkoYidhJyksIGJ5dGVhcnJheShiJ2FiYycpLAorICAgICAgICAgICAgICAgICAgJ2EnLCAnYWJjJywgcidhJywgcidhYmMnLAorICAgICAgICAgICAgICAgICAgZiwgbGFtYmRhIHg6IHhdCisKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIGl0ZW0gaW4gaXRlcl9mb3JtYXQoMTAsICdtZW1vcnl2aWV3Jyk6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMF0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMTBdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICAgICBzdHJ1Y3QucGFja19pbnRvKGZtdCwgbmQsIDAsIGl0ZW0pCisgICAgICAgICAgICBtWzBdID0gaXRlbQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCBuZFswXSkKKworICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgaWYgJ1AnIGluIGZtdDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBmb3IgdiBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgc3RydWN0X2VyciA9IE5vbmUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrX2ludG8oZm10LCBuZCwgaXRlbXNpemUsIHYpCisgICAgICAgICAgICAgICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0X2VyciA9IHN0cnVjdC5lcnJvcgorCisgICAgICAgICAgICAgICAgbXZfZXJyID0gTm9uZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbVsxXSA9IHYKKyAgICAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgbXZfZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgIGlmIHN0cnVjdF9lcnIgb3IgbXZfZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHN0cnVjdF9lcnIsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobXZfZXJyLCBOb25lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgbmRbMV0pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3RfemVyb19zdHJpZGVzKHNlbGYpOgorICAgICAgICAjIENhc3RzIGFyZSB1bmRlZmluZWQgaWYgc3RyaWRlcyBjb250YWlucyB6ZXJvcy4gVGhlc2UgYXJyYXlzIGFyZQorICAgICAgICAjIChzb21ldGltZXMhKSByZWdhcmRlZCBhcyBDLWNvbnRpZ3VvdXMgYnkgTnVtcHksIGJ1dCBub3QgYnkKKyAgICAgICAgIyBQeUJ1ZmZlcl9HZXRDb250aWd1b3VzKCkuCisgICAgICAgIGV4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIHN0cmlkZXM9WzBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4LmNfY29udGlndW91cykKKyAgICAgICAgbXNyYyA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXNyYy5jYXN0LCAnYycpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3RfaW52YWxpZChzZWxmKToKKyAgICAgICAgIyBpbnZhbGlkIGZvcm1hdAorICAgICAgICBmb3Igc2ZtdCBpbiBOT05fQllURV9GT1JNQVQ6CisgICAgICAgICAgICBzZm9ybWF0ID0gJ0AnICsgc2ZtdCBpZiByYW5kcmFuZ2UoMikgZWxzZSBzZm10CisgICAgICAgICAgICBzc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShzZm9ybWF0KQorICAgICAgICAgICAgZm9yIGRmbXQgaW4gTk9OX0JZVEVfRk9STUFUOgorICAgICAgICAgICAgICAgIGRmb3JtYXQgPSAnQCcgKyBkZm10IGlmIHJhbmRyYW5nZSgyKSBlbHNlIGRmbXQKKyAgICAgICAgICAgICAgICBkc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShkZm9ybWF0KQorICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDMyKSksIHNoYXBlPVszMi8vc3NpemVdLCBmb3JtYXQ9c2Zvcm1hdCkKKyAgICAgICAgICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1zcmMuY2FzdCwgZGZtdCwgWzMyLy9kc2l6ZV0pCisKKyAgICAgICAgZm9yIHNmbXQsIHNpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCgxKToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShzaXRlbXMsIHNoYXBlPVsxXSwgZm9ybWF0PXNmbXQpCisgICAgICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIGZvciBkZm10LCBfLCBfIGluIGl0ZXJfZm9ybWF0KDEpOgorICAgICAgICAgICAgICAgIGlmIChub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoc2ZtdCkgb3IKKyAgICAgICAgICAgICAgICAgICAgbm90IGlzX21lbW9yeXZpZXdfZm9ybWF0KGRmbXQpKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbXNyYy5jYXN0LCBkZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMzIvL2RzaXplXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfYnl0ZV9mb3JtYXQoc2ZtdCkgYW5kIG5vdCBpc19ieXRlX2Zvcm1hdChkZm10KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXNyYy5jYXN0LCBkZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzMyLy9kc2l6ZV0pCisKKyAgICAgICAgIyBpbnZhbGlkIHNoYXBlCisgICAgICAgIHNpemVfaCA9IHN0cnVjdC5jYWxjc2l6ZSgnaCcpCisgICAgICAgIHNpemVfZCA9IHN0cnVjdC5jYWxjc2l6ZSgnZCcpCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDIqMipzaXplX2QpKSwgc2hhcGU9WzIsMixzaXplX2RdLCBmb3JtYXQ9J2gnKQorICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtc3JjLmNhc3QsIHNoYXBlPVsyLDIsc2l6ZV9oXSwgZm9ybWF0PSdkJykKKworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjApKSwgc2hhcGU9WzEsMiwzLDQsNV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgMSwgMiwgMykKKworICAgICAgICAjIGluY29ycmVjdCBkZXN0IGZvcm1hdCB0eXBlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCB7fSkKKworICAgICAgICAjIGluY29ycmVjdCBkZXN0IGZvcm1hdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJYIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQFgiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJAWFkiKQorCisgICAgICAgICMgZGVzdCBmb3JtYXQgbm90IGltcGxlbWVudGVkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIj1CIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiIUwiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICI8UCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIj5sIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQkkiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJ4QkkiKQorCisgICAgICAgICMgc3JjIGZvcm1hdCBub3QgaW1wbGVtZW50ZWQKKyAgICAgICAgZXggPSBuZGFycmF5KFsoMSwyKSwgKDMsNCldLCBzaGFwZT1bMl0sIGZvcm1hdD0iSUkiKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgOCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS50b2xpc3QpCisKKyAgICAgICAgIyBpbmNvcnJlY3Qgc2hhcGUgdHlwZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjApKSwgc2hhcGU9WzEsMiwzLDQsNV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT17fSkKKworICAgICAgICAjIGluY29ycmVjdCBzaGFwZSBlbGVtZW50cworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjApKSwgc2hhcGU9WzIqMyo0KjVdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVsyKio2NF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT1bLTFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIsMyw0LDUsNiw3LC0xXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVsyLDMsNCw1LDYsNywwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIsMyw0LDUsNiw3LCd4J10pCisKKyAgICAgICAgIyBOLUQgLT4gTi1EIGNhc3QKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QoWzkgZm9yIF8gaW4gcmFuZ2UoMyo1KjcqMTEpXSksIHNoYXBlPVszLDUsNywxMV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgIkkiLCBzaGFwZT1bMiwzLDQsNV0pCisKKyAgICAgICAgIyBjYXN0IHdpdGggbmRpbSA+IDY0CisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyOCkpLCBzaGFwZT1bMTI4XSwgZm9ybWF0PSdJJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgJ0knLCBbMV0qMTI4KQorCisgICAgICAgICMgdmlldy0+bGVuIG5vdCBhIG11bHRpcGxlIG9mIGl0ZW1zaXplCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KFs5IGZvciBfIGluIHJhbmdlKDMqNSo3KjExKV0pLCBzaGFwZT1bMyo1KjcqMTFdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsICJJIiwgc2hhcGU9WzIsMyw0LDVdKQorCisgICAgICAgICMgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSAhPSBidWZmZXIgc2l6ZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChbOSBmb3IgXyBpbiByYW5nZSgzKjUqNyoxMSldKSwgc2hhcGU9WzMqNSo3KjExXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVsyLDMsNCw1XSkKKworICAgICAgICAjIHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgb3ZlcmZsb3cKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTI4KSksIHNoYXBlPVsxMjhdLCBmb3JtYXQ9J0knKQorICAgICAgICBtMSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyOCkpLCBzaGFwZT1bMTI4XSwgZm9ybWF0PSdCJykKKyAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBpZiBzeXMubWF4c2l6ZSA9PSAyKio2My0xOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtMS5jYXN0LCAnQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNywgNywgNzMsIDEyNywgMzM3LCA5MjczNywgNjQ5NjU3XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0xLmNhc3QsICdCJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsyKioyMCwgMioqMjAsIDIqKjEwLCAyKioxMCwgMioqM10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMi5jYXN0LCAnSScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMioqMjAsIDIqKjIwLCAyKioxMCwgMioqMTAsIDIqKjFdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtMS5jYXN0LCAnQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMSwgMjE0NzQ4MzY0N10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMS5jYXN0LCAnQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMioqMTAsIDIqKjEwLCAyKio1LCAyKio1LCAyKioxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLmNhc3QsICdJJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsyKioxMCwgMioqMTAsIDIqKjUsIDIqKjMsIDIqKjFdKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jYXN0KHNlbGYpOgorICAgICAgICBieXRlc3BlYyA9ICgKKyAgICAgICAgICAoJ0InLCBsYW1iZGEgZXg6IGxpc3QoZXgudG9ieXRlcygpKSksCisgICAgICAgICAgKCdiJywgbGFtYmRhIGV4OiBbeC0yNTYgaWYgeCA+IDEyNyBlbHNlIHggZm9yIHggaW4gbGlzdChleC50b2J5dGVzKCkpXSksCisgICAgICAgICAgKCdjJywgbGFtYmRhIGV4OiBbYnl0ZXMoY2hyKHgpLCAnbGF0aW4tMScpIGZvciB4IGluIGxpc3QoZXgudG9ieXRlcygpKV0pLAorICAgICAgICApCisKKyAgICAgICAgZGVmIGl0ZXJfcm91bmR0cmlwKGV4LCBtLCBpdGVtcywgZm10KToKKyAgICAgICAgICAgIHNyY3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgZm9yIGJ5dGVmbXQsIHRvX2J5dGVsaXN0IGluIGJ5dGVzcGVjOgorCisgICAgICAgICAgICAgICAgbTIgPSBtLmNhc3QoYnl0ZWZtdCkKKyAgICAgICAgICAgICAgICBsc3QgPSB0b19ieXRlbGlzdChleCkKKyAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1ieXRlZm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzMxKnNyY3NpemVdLCBzdHJpZGVzPSgxLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgICAgICAgICAgICAgbTMgPSBtMi5jYXN0KGZtdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0zLCBleCkKKyAgICAgICAgICAgICAgICBsc3QgPSBleC50b2xpc3QoKQorICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0zLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9c3Jjc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVszMV0sIHN0cmlkZXM9KHNyY3NpemUsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBjYXN0PVRydWUpCisKKyAgICAgICAgIyBjYXN0IGZyb20gbmRpbSA9IDAgdG8gbmRpbSA9IDEKKyAgICAgICAgc3Jjc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnSScpCisgICAgICAgIGV4ID0gbmRhcnJheSg5LCBzaGFwZT1bXSwgZm9ybWF0PSdJJykKKyAgICAgICAgZGVzdGl0ZW1zLCBkZXN0c2hhcGUgPSBjYXN0X2l0ZW1zKGV4LCAnQicsIDEpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtMiA9IG0uY2FzdCgnQicpCisgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9ZGVzdHNoYXBlLCBzdHJpZGVzPSgxLCksCisgICAgICAgICAgICAgICAgICAgIGxzdD1kZXN0aXRlbXMsIGNhc3Q9VHJ1ZSkKKworICAgICAgICAjIGNhc3QgZnJvbSBuZGltID0gMSB0byBuZGltID0gMAorICAgICAgICBkZXN0c2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnSScpCisgICAgICAgIGV4ID0gbmRhcnJheShbOV0qZGVzdHNpemUsIHNoYXBlPVtkZXN0c2l6ZV0sIGZvcm1hdD0nQicpCisgICAgICAgIGRlc3RpdGVtcywgZGVzdHNoYXBlID0gY2FzdF9pdGVtcyhleCwgJ0knLCBkZXN0c2l6ZSwgc2hhcGU9W10pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtMiA9IG0uY2FzdCgnSScsIHNoYXBlPVtdKQorICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1kZXN0c2l6ZSwgZm10PSdJJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0wLCBzaGFwZT0oKSwgc3RyaWRlcz0oKSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWRlc3RpdGVtcywgY2FzdD1UcnVlKQorCisgICAgICAgICMgYXJyYXkuYXJyYXk6IHJvdW5kdHJpcCB0by9mcm9tIGJ5dGVzCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDMxLCAnYXJyYXknKToKKyAgICAgICAgICAgIGV4ID0gYXJyYXkuYXJyYXkoZm10LCBpdGVtcykKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgaXRlcl9yb3VuZHRyaXAoZXgsIG0sIGl0ZW1zLCBmbXQpCisKKyAgICAgICAgIyBuZGFycmF5OiByb3VuZHRyaXAgdG8vZnJvbSBieXRlcworICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCgzMSwgJ21lbW9yeXZpZXcnKToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzMxXSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIGl0ZXJfcm91bmR0cmlwKGV4LCBtLCBpdGVtcywgZm10KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jYXN0XzFEX05EKHNlbGYpOgorICAgICAgICAjIENhc3QgYmV0d2VlbiBDLWNvbnRpZ3VvdXMgYnVmZmVycy4gQXQgbGVhc3Qgb25lIGJ1ZmZlciBtdXN0CisgICAgICAgICMgYmUgMUQsIGF0IGxlYXN0IG9uZSBmb3JtYXQgbXVzdCBiZSAnYycsICdiJyBvciAnQicuCisgICAgICAgIGZvciBfdHNoYXBlIGluIGdlbmNhc3RzaGFwZXMoKToKKyAgICAgICAgICAgIGZvciBjaGFyIGluIGZtdGRpY3RbJ0AnXToKKyAgICAgICAgICAgICAgICB0Zm10ID0gKCcnLCAnQCcpW3JhbmRyYW5nZSgyKV0gKyBjaGFyCisgICAgICAgICAgICAgICAgdHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUodGZtdCkKKyAgICAgICAgICAgICAgICBuID0gcHJvZChfdHNoYXBlKSAqIHRzaXplCisgICAgICAgICAgICAgICAgb2JqID0gJ21lbW9yeXZpZXcnIGlmIGlzX2J5dGVfZm9ybWF0KHRmbXQpIGVsc2UgJ2J5dGVmbXQnCisgICAgICAgICAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQobiwgb2JqKToKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gW25dIGlmIG4gPiAwIGVsc2UgW10KKyAgICAgICAgICAgICAgICAgICAgdHNoYXBlID0gX3RzaGFwZSArIFtzaXplXQorCisgICAgICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQpCisgICAgICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICAgICAgICAgICAgIHRpdGVtcywgdHNoYXBlID0gY2FzdF9pdGVtcyhleCwgdGZtdCwgdHNpemUsIHNoYXBlPXRzaGFwZSkKKworICAgICAgICAgICAgICAgICAgICBpZiB0aXRlbXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCB0Zm10LCB0c2hhcGUpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiB0aXRlbXMgPT0gJ25hbic6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIE5hTnMgaW4gbGlzdHMgYXJlIGEgcmVjaXBlIGZvciB0cm91YmxlLgorCisgICAgICAgICAgICAgICAgICAgICMgMUQgLT4gTkQKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KHRpdGVtcywgc2hhcGU9dHNoYXBlLCBmb3JtYXQ9dGZtdCkKKworICAgICAgICAgICAgICAgICAgICBtMiA9IG0uY2FzdCh0Zm10LCBzaGFwZT10c2hhcGUpCisgICAgICAgICAgICAgICAgICAgIG5kaW0gPSBsZW4odHNoYXBlKQorICAgICAgICAgICAgICAgICAgICBzdHJpZGVzID0gbmQuc3RyaWRlcworICAgICAgICAgICAgICAgICAgICBsc3QgPSBuZC50b2xpc3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT10c2l6ZSwgZm10PXRmbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9dHNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIGNhc3Q9VHJ1ZSkKKworICAgICAgICAgICAgICAgICAgICAjIE5EIC0+IDFECisgICAgICAgICAgICAgICAgICAgIG0zID0gbTIuY2FzdChmbXQpCisgICAgICAgICAgICAgICAgICAgIG00ID0gbTIuY2FzdChmbXQsIHNoYXBlPXNoYXBlKQorICAgICAgICAgICAgICAgICAgICBuZGltID0gbGVuKHNoYXBlKQorICAgICAgICAgICAgICAgICAgICBzdHJpZGVzID0gZXguc3RyaWRlcworICAgICAgICAgICAgICAgICAgICBsc3QgPSBleC50b2xpc3QoKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0zLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG00LCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld190b2xpc3Qoc2VsZik6CisKKyAgICAgICAgIyBNb3N0IHRvbGlzdCgpIHRlc3RzIGFyZSBpbiBzZWxmLnZlcmlmeSgpIGV0Yy4KKworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ2gnLCBsaXN0KHJhbmdlKC02LCA2KSkpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBhLnRvbGlzdCgpKQorCisgICAgICAgIGEgPSBhWzI6OjNdCisgICAgICAgIG0gPSBtWzI6OjNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBhLnRvbGlzdCgpKQorCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDIqMyo1KjcqMTEpKSwgc2hhcGU9WzExLDIsNywzLDVdLCBmb3JtYXQ9J0wnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBleC50b2xpc3QoKSkKKworICAgICAgICBleCA9IG5kYXJyYXkoWygyLCA1KSwgKDcsIDExKV0sIHNoYXBlPVsyXSwgZm9ybWF0PSdsaCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLnRvbGlzdCkKKworICAgICAgICBleCA9IG5kYXJyYXkoW2InMTIzNDUnXSwgc2hhcGU9WzFdLCBmb3JtYXQ9InMiKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS50b2xpc3QpCisKKyAgICAgICAgZXggPSBuZGFycmF5KFtiImEiLGIiYiIsYiJjIixiImQiLGIiZSIsYiJmIl0sIHNoYXBlPVsyLDNdLCBmb3JtYXQ9J3MnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS50b2xpc3QpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3JlcHIoc2VsZik6CisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGJ5dGVhcnJheSg5KSkKKyAgICAgICAgciA9IG0uX19yZXByX18oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKCI8bWVtb3J5IikpCisKKyAgICAgICAgbS5yZWxlYXNlKCkKKyAgICAgICAgciA9IG0uX19yZXByX18oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKCI8cmVsZWFzZWQiKSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfc2VxdWVuY2Uoc2VsZik6CisKKyAgICAgICAgZm9yIGZtdCBpbiAoJ2QnLCAnZicpOgorICAgICAgICAgICAgaW5mID0gZmxvYXQoM2U0MDApCisgICAgICAgICAgICBleCA9IGFycmF5LmFycmF5KGZtdCwgWzEuMCwgaW5mLCAzLjBdKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKDEuMCwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oNWU3MDAsIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKDMuMCwgbSkKKworICAgICAgICBleCA9IG5kYXJyYXkoOS4wLCBbXSwgZm9ybWF0PSdmJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgIjkuMCBpbiBtIiwgbG9jYWxzKCkpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2luZGV4KHNlbGYpOgorCisgICAgICAgICMgbmRpbSA9IDAKKyAgICAgICAgZXggPSBuZGFycmF5KDEyLjUsIHNoYXBlPVtdLCBmb3JtYXQ9J2QnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgMTIuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy4uLl0sIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsuLi5dLCBleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQorCisgICAgICAgIGV4ID0gbmRhcnJheSgoMSwyLDMpLCBzaGFwZT1bXSwgZm9ybWF0PSdpaWknKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgKCkpCisKKyAgICAgICAgIyByYW5nZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSg3KSksIHNoYXBlPVs3XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIDIqKjY0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sIDIuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwLjApCisKKyAgICAgICAgIyBvdXQgb2YgYm91bmRzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIC04KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCA4KQorCisgICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHN1Yi12aWV3cworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Fzc2lnbihzZWxmKToKKworICAgICAgICAjIG5kaW0gPSAwCisgICAgICAgIGV4ID0gbmRhcnJheSgxMi41LCBzaGFwZT1bXSwgZm9ybWF0PSdmJywgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtWygpXSA9IDIyLjUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgMjIuNSkKKyAgICAgICAgbVsuLi5dID0gMjMuNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCAyMy41KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDI0LjcpCisKKyAgICAgICAgIyByZWFkLW9ubHkKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoNykpLCBzaGFwZT1bN10pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDIsIDEwKQorCisgICAgICAgICMgcmFuZ2UKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoNykpLCBzaGFwZT1bN10sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fc2V0aXRlbV9fLCAyKio2NCwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAyLjAsIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDAuMCwgMTEpCisKKyAgICAgICAgIyBvdXQgb2YgYm91bmRzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19zZXRpdGVtX18sIC04LCAyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX3NldGl0ZW1fXywgOCwgMjUpCisKKyAgICAgICAgIyBwYWNrX3NpbmdsZSgpIHN1Y2Nlc3M6CisgICAgICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgaWYgZm10ID09ICdjJyBvciBmbXQgPT0gJz8nOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBleCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgaSA9IHJhbmRyYW5nZSgtMywgMykKKyAgICAgICAgICAgIG1baV0gPSA4CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1baV0sIDgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1baV0sIGV4W2ldKQorCisgICAgICAgIGV4ID0gbmRhcnJheShbYicxJywgYicyJywgYiczJ10sIHNoYXBlPVszXSwgZm9ybWF0PSdjJywKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgbVsyXSA9IGInOScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzJdLCBiJzknKQorCisgICAgICAgIGV4ID0gbmRhcnJheShbVHJ1ZSwgRmFsc2UsIFRydWVdLCBzaGFwZT1bM10sIGZvcm1hdD0nPycsCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG1bMV0gPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgVHJ1ZSkKKworICAgICAgICAjIHBhY2tfc2luZ2xlKCkgZXhjZXB0aW9uczoKKyAgICAgICAgbmQgPSBuZGFycmF5KFtiJ3gnXSwgc2hhcGU9WzFdLCBmb3JtYXQ9J2MnLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgMTAwKQorCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyMCkpLCBzaGFwZT1bMSwyLDMsNCw1XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBmb3IgZm10LCBfcmFuZ2UgaW4gZm10ZGljdFsnQCddLml0ZW1zKCk6CisgICAgICAgICAgICBpZiAoZm10ID09ICc/Jyk6ICMgUHlPYmplY3RfSXNUcnVlKCkgYWNjZXB0cyBhbnl0aGluZworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBmbXQgPT0gJ2MnOiAjIHNwZWNpYWwgY2FzZSB0ZXN0ZWQgYWJvdmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbTIgPSBtMS5jYXN0KGZtdCkKKyAgICAgICAgICAgIGxvLCBoaSA9IF9yYW5nZQorICAgICAgICAgICAgaWYgZm10ID09ICdkJyBvciBmbXQgPT0gJ2YnOgorICAgICAgICAgICAgICAgIGxvLCBoaSA9IC0yKioxMDI0LCAyKioxMDI0CisgICAgICAgICAgICBpZiBmbXQgIT0gJ1AnOiAjIFB5TG9uZ19Bc1ZvaWRQdHIoKSBhY2NlcHRzIG5lZ2F0aXZlIG51bWJlcnMKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMi5fX3NldGl0ZW1fXywgMCwgbG8tMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0yLl9fc2V0aXRlbV9fLCAwLCAieHl6IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLl9fc2V0aXRlbV9fLCAwLCBoaSkKKworICAgICAgICAjIGludmFsaWQgaXRlbQorICAgICAgICBtMiA9IG0xLmNhc3QoJ2MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMi5fX3NldGl0ZW1fXywgMCwgYidceGZmXHhmZicpCisKKyAgICAgICAgIyBmb3JtYXQgbm90IGltcGxlbWVudGVkCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEpKSwgc2hhcGU9WzFdLCBmb3JtYXQ9InhMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxKQorCisgICAgICAgIGV4ID0gbmRhcnJheShbYicxMjM0NSddLCBzaGFwZT1bMV0sIGZvcm1hdD0icyIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgMSkKKworICAgICAgICAjIE5vdCBpbXBsZW1lbnRlZDogbXVsdGlkaW1lbnNpb25hbCBzdWItdmlld3MKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCBbMiwgM10pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3NsaWNlKHNlbGYpOgorCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICAjIHplcm8gc3RlcAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCBzbGljZSgwLDIsMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19zZXRpdGVtX18sIHNsaWNlKDAsMiwwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KFsxLDJdKSkKKworICAgICAgICAjIGludmFsaWQgc2xpY2Uga2V5CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgKCkpCisKKyAgICAgICAgIyBtdWx0aWRpbWVuc2lvbmFsIHNsaWNlcworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMiwxKSwgc2xpY2UoMCwyLDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMiwxKSwgc2xpY2UoMCwyLDEpKSwgYnl0ZWFycmF5KFsxLDJdKSkKKworICAgICAgICAjIGludmFsaWQgc2xpY2UgdHVwbGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoc2xpY2UoMCwyLDEpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgKHNsaWNlKDAsMiwxKSwge30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoWzEsMl0pKQorCisgICAgICAgICMgcnZhbHVlIGlzIG5vdCBhbiBleHBvcnRlcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwgWzFdKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMgc2xpY2UgYXNzaWdubWVudAorICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bLTFdLCBvZmZzZXQ9MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFfGZsYWdzKQorICAgICAgICAgICAgZXgyID0gbmRhcnJheShsaXN0KHJhbmdlKDI0KSksIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzJdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIG0xID0gbWVtb3J5dmlldyhleDEpCisgICAgICAgICAgICBtMiA9IG1lbW9yeXZpZXcoZXgyKQorCisgICAgICAgICAgICBleDFbMjo1XSA9IGV4MVsyOjVdCisgICAgICAgICAgICBtMVsyOjVdID0gbTJbMjo1XQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLCBleDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLCBleDIpCisKKyAgICAgICAgICAgIGV4MVsxOjNdWzo6LTFdID0gZXgyWzA6Ml1bOjoxXQorICAgICAgICAgICAgbTFbMTozXVs6Oi0xXSA9IG0yWzA6Ml1bOjoxXQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLCBleDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLCBleDIpCisKKyAgICAgICAgICAgIGV4MVs0OjE6LTJdWzo6LTFdID0gZXgxWzE6NDoyXVs6OjFdCisgICAgICAgICAgICBtMVs0OjE6LTJdWzo6LTFdID0gbTFbMTo0OjJdWzo6MV0KKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSwgZXgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMiwgZXgyKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19hcnJheShzZWxmKToKKworICAgICAgICBkZWYgY21wdGVzdCh0ZXN0Y2FzZSwgYSwgYiwgbSwgc2luZ2xlaXRlbSk6CisgICAgICAgICAgICBmb3IgaSwgXyBpbiBlbnVtZXJhdGUoYSk6CisgICAgICAgICAgICAgICAgYWkgPSBhW2ldCisgICAgICAgICAgICAgICAgbWkgPSBtW2ldCisgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1YWwoYWksIG1pKQorICAgICAgICAgICAgICAgIGFbaV0gPSBzaW5nbGVpdGVtCisgICAgICAgICAgICAgICAgaWYgc2luZ2xlaXRlbSAhPSBhaToKKyAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0Tm90RXF1YWwoYSwgbSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0Tm90RXF1YWwoYSwgYikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChhLCBtKQorICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChhLCBiKQorICAgICAgICAgICAgICAgIG1baV0gPSBzaW5nbGVpdGVtCisgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1YWwoYSwgbSkKKyAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChiLCBtKQorICAgICAgICAgICAgICAgIGFbaV0gPSBhaQorICAgICAgICAgICAgICAgIG1baV0gPSBtaQorCisgICAgICAgIGZvciBuIGluIHJhbmdlKDEsIDUpOgorICAgICAgICAgICAgZm9yIGZtdCwgaXRlbXMsIHNpbmdsZWl0ZW0gaW4gaXRlcl9mb3JtYXQobiwgJ2FycmF5Jyk6CisgICAgICAgICAgICAgICAgZm9yIGxzbGljZSBpbiBnZW5zbGljZXMobik6CisgICAgICAgICAgICAgICAgICAgIGZvciByc2xpY2UgaW4gZ2Vuc2xpY2VzKG4pOgorCisgICAgICAgICAgICAgICAgICAgICAgICBhID0gYXJyYXkuYXJyYXkoZm10LCBpdGVtcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBhcnJheS5hcnJheShmbXQsIGl0ZW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikKKworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBhKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBhLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgYS50b2J5dGVzKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtKSwgbGVuKGEpKQorCisgICAgICAgICAgICAgICAgICAgICAgICBjbXB0ZXN0KHNlbGYsIGEsIGIsIG0sIHNpbmdsZWl0ZW0pCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X2VyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfcmVzaXplID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsID0gYVtsc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXIgPSBhW3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW2xzbGljZV0gPSBhW3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlX3Jlc2l6ZSA9IGxlbihhbCkgIT0gbGVuKGFyKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X2VyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1bbHNsaWNlXSA9IG1bcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGF2ZV9yZXNpemU6ICMgbWVtb3J5dmlldyBjYW5ub3QgY2hhbmdlIHNoYXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtX2VyciwgVmFsdWVFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgbV9lcnIgb3IgYXJyYXlfZXJyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobV9lcnIsIGFycmF5X2VycikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBhKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgYS50b2xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBhLnRvYnl0ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXB0ZXN0KHNlbGYsIGEsIGIsIG0sIHNpbmdsZWl0ZW0pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfc3BlY2lhbF9jYXNlcyhzZWxmKToKKworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0wnLCBbMSwgMiwgM10pCisgICAgICAgIGIgPSBhcnJheS5hcnJheSgnTCcsIFsxLCAyLCA3XSkKKworICAgICAgICAjIE9yZGVyaW5nIGNvbXBhcmlzb25zIHJhaXNlOgorICAgICAgICB2ID0gbWVtb3J5dmlldyhhKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhiKQorICAgICAgICBmb3IgYXR0ciBpbiAoJ19fbHRfXycsICdfX2xlX18nLCAnX19ndF9fJywgJ19fZ2VfXycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKHYsIGF0dHIpKHcpLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cihhLCBhdHRyKSh2KSwgTm90SW1wbGVtZW50ZWQpCisKKyAgICAgICAgIyBSZWxlYXNlZCB2aWV3cyBjb21wYXJlIGVxdWFsIHRvIHRoZW1zZWx2ZXM6CisgICAgICAgIHYgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHYucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIHYpCisKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgdy5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIHYpCisKKyAgICAgICAgIyBPcGVyYW5kIGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVmZmVyIHByb3RvY29sOgorICAgICAgICB2ID0gbWVtb3J5dmlldyhhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIFsxLCAyLCAzXSkKKworICAgICAgICAjIE5hTnMKKyAgICAgICAgbmQgPSBuZGFycmF5KFsoMCwgMCldLCBzaGFwZT1bMV0sIGZvcm1hdD0nbCB4IGQgeCcsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBuZFswXSA9ICgtMSwgZmxvYXQoJ25hbicpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG1lbW9yeXZpZXcobmQpLCBuZCkKKworICAgICAgICAjIERlcGVuZHMgb24gaXNzdWUgIzE1NjI1OiB0aGUgc3RydWN0IG1vZHVsZSBkb2VzIG5vdCB1bmRlcnN0YW5kICd1Jy4KKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCd1JywgJ3h5eicpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBhKQorCisgICAgICAgICMgU29tZSBjdHlwZXMgZm9ybWF0IHN0cmluZ3MgYXJlIHVua25vd24gdG8gdGhlIHN0cnVjdCBtb2R1bGUuCisgICAgICAgIGlmIGN0eXBlczoKKyAgICAgICAgICAgICMgZm9ybWF0OiAiVHs+bDp4Oj5sOnk6fSIKKyAgICAgICAgICAgIGNsYXNzIEJFUG9pbnQoY3R5cGVzLkJpZ0VuZGlhblN0cnVjdHVyZSk6CisgICAgICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY3R5cGVzLmNfbG9uZyksICgieSIsIGN0eXBlcy5jX2xvbmcpXQorICAgICAgICAgICAgcG9pbnQgPSBCRVBvaW50KDEwMCwgMjAwKQorICAgICAgICAgICAgYSA9IG1lbW9yeXZpZXcocG9pbnQpCisgICAgICAgICAgICBiID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgYikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgcG9pbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHBvaW50LCBhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgYS50b2xpc3QpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbmRpbV96ZXJvKHNlbGYpOgorCisgICAgICAgIG5kMSA9IG5kYXJyYXkoMTcyOSwgc2hhcGU9W10sIGZvcm1hdD0nQEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KDE3MjksIHNoYXBlPVtdLCBmb3JtYXQ9J0wnLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCB2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZDIsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kMSwgdykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYuX19uZV9fKHcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHcuX19uZV9fKHYpKQorCisgICAgICAgIHdbKCldID0gMTcyOAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmQyLCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChuZDEsIHcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2Ll9fZXFfXyh3KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3Ll9fZXFfXyh2KSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBmbGFncz1ORF9XUklUQUJMRXxORF9QSUwpCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZsYWdzPU5EX1dSSVRBQkxFfE5EX1BJTCkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgbVs5XSA9IDEwMAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG0sIG5kKQorCisgICAgICAgICMgc3RydWN0IG1vZHVsZTogZXF1YWwKKyAgICAgICAgbmQxID0gbmRhcnJheSgoMTcyOSwgMS4yLCBiJzEyMzQ1JyksIHNoYXBlPVtdLCBmb3JtYXQ9J0xmNXMnKQorICAgICAgICBuZDIgPSBuZGFycmF5KCgxNzI5LCAxLjIsIGInMTIzNDUnKSwgc2hhcGU9W10sIGZvcm1hdD0naGY1cycsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgdikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQyLCB2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZDEsIHcpCisKKyAgICAgICAgIyBzdHJ1Y3QgbW9kdWxlOiBub3QgZXF1YWwKKyAgICAgICAgbmQxID0gbmRhcnJheSgoMTcyOSwgMS4yLCBiJzEyMzQ1JyksIHNoYXBlPVtdLCBmb3JtYXQ9J0xmNXMnKQorICAgICAgICBuZDIgPSBuZGFycmF5KCgtMTcyOSwgMS4yLCBiJzEyMzQ1JyksIHNoYXBlPVtdLCBmb3JtYXQ9J2hmNXMnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG5kMiwgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmQxLCB3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbmRpbV9vbmUoc2VsZik6CisKKyAgICAgICAgIyBjb250aWd1b3VzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIDcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSdAaCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBjb250aWd1b3VzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9JzxpJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIDcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSc+aCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBub24tY29udGlndW91cworICAgICAgICBuZDEgPSBuZGFycmF5KFstNTI5LCAtNjI1LCAtNzI5XSwgc2hhcGU9WzNdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMls6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbOjoyXSwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHdbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Wzo6LTFdLCB3Wzo6LTJdKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgLTYyNSwgLTcyOV0sIHNoYXBlPVszXSwgZm9ybWF0PSchaCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9JzxsJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDJbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Wzo6Ml0sIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3Wzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodls6Oi0xXSwgd1s6Oi0yXSkKKworICAgICAgICAjIG5vbi1jb250aWd1b3VzLCBzdWJvZmZzZXRzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIC02MjUsIC03MjldLCBzaGFwZT1bM10sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgLTcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMls6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbOjoyXSwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHdbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Wzo6LTFdLCB3Wzo6LTJdKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMsIHN1Ym9mZnNldHMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgLTYyNSwgLTcyOV0sIHNoYXBlPVszXSwgZm9ybWF0PSdoICAwYycpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9Jz4gIGgnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDJbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Wzo6Ml0sIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3Wzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodls6Oi0xXSwgd1s6Oi0yXSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV96ZXJvX3NoYXBlKHNlbGYpOgorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbOTAwLCA5NjFdLCBzaGFwZT1bMF0sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstOTAwLCAtOTYxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIHplcm9zIGluIHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWzkwMCwgOTYxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9Jz0gaDBjJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTkwMCwgLTk2MV0sIHNoYXBlPVswXSwgZm9ybWF0PSdAICAgaScpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfemVyb19zdHJpZGVzKHNlbGYpOgorCisgICAgICAgICMgemVybyBzdHJpZGVzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWzkwMCwgOTAwLCA5MDAsIDkwMF0sIHNoYXBlPVs0XSwgZm9ybWF0PSdATCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWzkwMF0sIHNoYXBlPVs0XSwgc3RyaWRlcz1bMF0sIGZvcm1hdD0nTCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbKDkwMCwgOTAwKV0qNCwgc2hhcGU9WzRdLCBmb3JtYXQ9J0AgTGknKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoOTAwLCA5MDApXSwgc2hhcGU9WzRdLCBzdHJpZGVzPVswXSwgZm9ybWF0PSchTCAgaCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfcmFuZG9tX2Zvcm1hdHMoc2VsZik6CisKKyAgICAgICAgIyByYW5kb20gc2luZ2xlIGNoYXJhY3RlciBuYXRpdmUgZm9ybWF0cworICAgICAgICBuID0gMTAKKyAgICAgICAgZm9yIGNoYXIgaW4gZm10ZGljdFsnQG0nXToKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIHNpbmdsZWl0ZW0gPSByYW5kaXRlbXMobiwgJ21lbW9yeXZpZXcnLCAnQCcsIGNoYXIpCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bbl0sIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisKKyAgICAgICAgICAgICAgICBuZCA9IG5kWzo6LTNdCisgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKworICAgICAgICAjIHJhbmRvbSBmb3JtYXRzCisgICAgICAgIG4gPSAxMAorICAgICAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICAgICAgZm10LCBpdGVtcywgc2luZ2xlaXRlbSA9IHJhbmRpdGVtcyhuKQorICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9W25dLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorCisgICAgICAgICAgICAgICAgbmQgPSBuZFs6Oi0zXQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbXVsdGlkaW1fYyhzZWxmKToKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTE1LCAxNSkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMCwgMzApKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IHZhbHVlcywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoMCwgMSwgMildKjMwLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPWYgcSB4eEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoLTEuMiwgMSwgMildKjMwLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPCBmIDJRJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IHNoYXBlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nTCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nTCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBzaGFwZSwgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoMCwgMSwgMildKjIxLCBzaGFwZT1bMywgN10sIGZvcm1hdD0nISBiIEIgeEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoMCwgMSwgMildKjIxLCBzaGFwZT1bNywgM10sIGZvcm1hdD0nPSBReCBsIHh4TCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBmb3JtYXQsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdMJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdsJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV9mb3J0cmFuKHNlbGYpOgorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgtMTUsIDE1KSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDAsIDMwKSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEZvcnRyYW4tY29udGlndW91cywgZGlmZmVyZW50IHZhbHVlcywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoMioqNjQtMSwgLTEpXSo2LCBzaGFwZT1bMiwgM10sIGZvcm1hdD0nPVFxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoLTEsIDIqKjY0LTEpXSo2LCBzaGFwZT1bMiwgM10sIGZvcm1hdD0nPXFRJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgc2hhcGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J2wnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgtMTUsIDE1KSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdsJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgc2hhcGUsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9JzBsbCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2wnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBGb3J0cmFuLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBmb3JtYXQsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAYicsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV9taXhlZChzZWxmKToKKworICAgICAgICAjIG1peGVkIEMvRm9ydHJhbiBjb250aWd1b3VzCisgICAgICAgIGxzdDEgPSBsaXN0KHJhbmdlKC0xNSwgMTUpKQorICAgICAgICBsc3QyID0gdHJhbnNwb3NlKGxzdDEsIFszLCAyLCA1XSkKKyAgICAgICAgbmQxID0gbmRhcnJheShsc3QxLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQGwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxzdDIsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdsJywgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBtaXhlZCBDL0ZvcnRyYW4gY29udGlndW91cywgc3RydWN0IG1vZHVsZQorICAgICAgICBsc3QxID0gWygtMy4zLCAtMjIsIGIneCcpXSozMAorICAgICAgICBsc3QxWzVdID0gKC0yLjIsIC0yMiwgYid4JykKKyAgICAgICAgbHN0MiA9IHRyYW5zcG9zZShsc3QxLCBbMywgMiwgNV0pCisgICAgICAgIG5kMSA9IG5kYXJyYXkobHN0MSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2QgYiBjJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsc3QyLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nZCBoIGMnLCBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIGRpZmZlcmVudCB2YWx1ZXMsIG5vbi1jb250aWd1b3VzCisgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSg0MCkpLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nQEknKQorICAgICAgICBuZDEgPSBleDFbMzoxOi0xLCA6Oi0yXQorICAgICAgICBleDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoNDApKSwgc2hhcGU9WzUsIDhdLCBmb3JtYXQ9J0knKQorICAgICAgICBuZDIgPSBleDJbMTozOjEsIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzYW1lIHZhbHVlcywgbm9uLWNvbnRpZ3VvdXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShbKDIqKjMxLTEsIC0yKiozMSldKjIyLCBzaGFwZT1bMTEsIDJdLCBmb3JtYXQ9Jz1paScpCisgICAgICAgIG5kMSA9IGV4MVszOjE6LTEsIDo6LTJdCisgICAgICAgIGV4MiA9IG5kYXJyYXkoWygyKiozMS0xLCAtMioqMzEpXSoyMiwgc2hhcGU9WzExLCAyXSwgZm9ybWF0PSc+aWknKQorICAgICAgICBuZDIgPSBleDJbMTozOjEsIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBkaWZmZXJlbnQgc2hhcGUKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdiJykKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nYicpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgZGlmZmVyZW50IHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nQicpCisgICAgICAgIG5kMSA9IGV4MVsxOjM6LCA6Oi0yXQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2InKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIGRpZmZlcmVudCBmb3JtYXQsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShbKDIsIGInMTIzJyldKjMwLCBzaGFwZT1bNSwgMywgMl0sIGZvcm1hdD0nYjNzJykKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygyLCBiJzEyMycpXSozMCwgc2hhcGU9WzUsIDMsIDJdLCBmb3JtYXQ9J2kzcycpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX3plcm9fc2hhcGUoc2VsZik6CisKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzAsIDMsIDJdLCBmb3JtYXQ9J2knKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDAsIDJdLCBmb3JtYXQ9J0BpJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHplcm9zIGluIHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMCwgMywgMl0sIGZvcm1hdD0naScpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bNSwgMCwgMl0sIGZvcm1hdD0nQGknKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX3plcm9fc3RyaWRlcyhzZWxmKToKKworICAgICAgICAjIHplcm8gc3RyaWRlcworICAgICAgICBuZDEgPSBuZGFycmF5KFs5MDBdKjgwLCBzaGFwZT1bNCwgNSwgNF0sIGZvcm1hdD0nQEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFs5MDBdLCBzaGFwZT1bNCwgNSwgNF0sIHN0cmlkZXM9WzAsIDAsIDBdLCBmb3JtYXQ9J0wnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudG9saXN0KCksIHcudG9saXN0KCkpCisKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbKDEsIDIpXSoxMCwgc2hhcGU9WzIsIDVdLCBmb3JtYXQ9Jz1sUScpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygxLCAyKV0sIHNoYXBlPVsyLCA1XSwgc3RyaWRlcz1bMCwgMF0sIGZvcm1hdD0nPGxRJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV9zdWJvZmZzZXRzKHNlbGYpOgorCisgICAgICAgICMgc3Vib2Zmc2V0cworICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoNDApKSwgc2hhcGU9WzUsIDhdLCBmb3JtYXQ9J0BJJykKKyAgICAgICAgbmQxID0gZXgxWzM6MTotMSwgOjotMl0KKyAgICAgICAgZXgyID0gbmRhcnJheShsaXN0KHJhbmdlKDQwKSksIHNoYXBlPVs1LCA4XSwgZm9ybWF0PSdJJywgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDIgPSBleDJbMTozOjEsIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkoWygyKio2NC0xLCAtMSldKjQwLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nPVFxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZXgxWzJdWzddID0gKDEsIC0yKQorICAgICAgICBuZDEgPSBleDFbMzoxOi0xLCA6Oi0yXQorCisgICAgICAgIGV4MiA9IG5kYXJyYXkoWygyKio2NC0xLCAtMSldKjQwLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nPlFxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUx8TkRfV1JJVEFCTEUpCisgICAgICAgIGV4MlsyXVs3XSA9ICgxLCAtMikKKyAgICAgICAgbmQyID0gZXgyWzE6MzoxLCA6Oi0yXQorCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzLCBkaWZmZXJlbnQgc2hhcGUKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdiJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMSA9IGV4MVsxOjM6LCA6Oi0yXQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2InKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIGRpZmZlcmVudCBzaGFwZSwgc3RydWN0IG1vZHVsZQorICAgICAgICBleDEgPSBuZGFycmF5KFsoMioqOC0xLCAtMSldKjQwLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nQmInLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTHxORF9XUklUQUJMRSkKKyAgICAgICAgbmQxID0gZXgxWzE6MjosIDo6LTJdCisKKyAgICAgICAgZXgyID0gbmRhcnJheShbKDIqKjgtMSwgLTEpXSo0MCwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J0JiJykKKyAgICAgICAgbmQyID0gZXgyWzE6MjosIDo6LTJdCisKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIGRpZmZlcmVudCBmb3JtYXQKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAzLCAyXSwgZm9ybWF0PSdpJywgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDEgPSBleDFbMTozOiwgOjotMl0KKyAgICAgICAgZXgyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAzLCAyXSwgZm9ybWF0PSdASScsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQyID0gZXgyWzE6MzosIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzLCBkaWZmZXJlbnQgZm9ybWF0LCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkoWyhiJ2hlbGxvJywgYicnLCAxKV0qMjcsIHNoYXBlPVszLCAzLCAzXSwgZm9ybWF0PSc1czBzUCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMfE5EX1dSSVRBQkxFKQorICAgICAgICBleDFbMV1bMl1bMl0gPSAoYidzdXNoaScsIGInJywgMSkKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisKKyAgICAgICAgZXgyID0gbmRhcnJheShbKGInaGVsbG8nLCBiJycsIDEpXSoyNywgc2hhcGU9WzMsIDMsIDNdLCBmb3JtYXQ9JzVzMHNQJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUx8TkRfV1JJVEFCTEUpCisgICAgICAgIGV4MVsxXVsyXVsyXSA9IChiJ3N1c2hpJywgYicnLCAxKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKworICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgaW5pdGlhbGl6ZSBtaXhlZCBDL0ZvcnRyYW4gKyBzdWJvZmZzZXRzCisgICAgICAgIGxzdDEgPSBsaXN0KHJhbmdlKC0xNSwgMTUpKQorICAgICAgICBsc3QyID0gdHJhbnNwb3NlKGxzdDEsIFszLCAyLCA1XSkKKyAgICAgICAgbmQxID0gbmRhcnJheShsc3QxLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQGwnLCBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobHN0Miwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2wnLCBmbGFncz1ORF9GT1JUUkFOfE5EX1BJTCkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBpbml0aWFsaXplIG1peGVkIEMvRm9ydHJhbiArIHN1Ym9mZnNldHMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbHN0MSA9IFsoYidzYXNoaW1pJywgYidzbGljZWQnLCAyMC4wNSldKjMwCisgICAgICAgIGxzdDFbMTFdID0gKGIncmFtZW4nLCBiJ3NwaWN5JywgOS40NSkKKyAgICAgICAgbHN0MiA9IHRyYW5zcG9zZShsc3QxLCBbMywgMiwgNV0pCisKKyAgICAgICAgbmQxID0gbmRhcnJheShsc3QxLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPCAxMHAgOXAgZCcsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQyID0gbmRhcnJheShsc3QyLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPiAxMHAgOXAgZCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTnxORF9QSUwpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX25vdF9lcXVhbChzZWxmKToKKworICAgICAgICAjIGl0ZW1zIG5vdCBlcXVhbAorICAgICAgICBmb3IgYnl0ZW9yZGVyIGluIFsnPScsICc8JywgJz4nLCAnISddOgorICAgICAgICAgICAgeCA9IG5kYXJyYXkoWzIqKjYzXSoxMjAsIHNoYXBlPVszLDUsMiwyLDJdLCBmb3JtYXQ9Ynl0ZW9yZGVyKydRJykKKyAgICAgICAgICAgIHkgPSBuZGFycmF5KFsyKio2M10qMTIwLCBzaGFwZT1bMyw1LDIsMiwyXSwgZm9ybWF0PWJ5dGVvcmRlcisnUScsCisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRXxORF9GT1JUUkFOKQorICAgICAgICAgICAgeVsyXVszXVsxXVsxXVsxXSA9IDEKKyAgICAgICAgICAgIGEgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgICAgICBiID0gbWVtb3J5dmlldyh5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCB5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCB5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChiLCB4KQorCisgICAgICAgICAgICB4ID0gbmRhcnJheShbKDIqKjYzLCAyKiozMSwgMioqMTUpXSoxMjAsIHNoYXBlPVszLDUsMiwyLDJdLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWJ5dGVvcmRlcisnUUxIJykKKyAgICAgICAgICAgIHkgPSBuZGFycmF5KFsoMioqNjMsIDIqKjMxLCAyKioxNSldKjEyMCwgc2hhcGU9WzMsNSwyLDIsMl0sCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9Ynl0ZW9yZGVyKydRTEgnLCBmbGFncz1ORF9XUklUQUJMRXxORF9GT1JUUkFOKQorICAgICAgICAgICAgeVsyXVszXVsxXVsxXVsxXSA9ICgxLCAxLCAxKQorICAgICAgICAgICAgYSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIGIpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGIsIHgpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NoZWNrX3JlbGVhc2VkKHNlbGYpOgorCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnZCcsIFsxLjEsIDIuMiwgMy4zXSkKKworICAgICAgICBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICBtLnJlbGVhc2UoKQorCisgICAgICAgICMgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZW1vcnl2aWV3LCBtKQorICAgICAgICAjIG1lbW9yeXZpZXcuY2FzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgJ2MnKQorICAgICAgICAjIGdldGJ1ZmZlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kYXJyYXksIG0pCisgICAgICAgICMgbWVtb3J5dmlldy50b2xpc3QoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLnRvbGlzdCkKKyAgICAgICAgIyBtZW1vcnl2aWV3LnRvYnl0ZXMoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLnRvYnl0ZXMpCisgICAgICAgICMgc2VxdWVuY2UKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXZhbCwgIjEuMCBpbiBtIiwgbG9jYWxzKCkpCisgICAgICAgICMgc3Vic2NyaXB0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisgICAgICAgICMgYXNzaWdubWVudAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxKQorCisgICAgICAgIGZvciBhdHRyIGluICgnb2JqJywgJ25ieXRlcycsICdyZWFkb25seScsICdpdGVtc2l6ZScsICdmb3JtYXQnLCAnbmRpbScsCisgICAgICAgICAgICAgICAgICAgICAnc2hhcGUnLCAnc3RyaWRlcycsICdzdWJvZmZzZXRzJywgJ2NfY29udGlndW91cycsCisgICAgICAgICAgICAgICAgICAgICAnZl9jb250aWd1b3VzJywgJ2NvbnRpZ3VvdXMnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19nZXRhdHRyaWJ1dGVfXywgYXR0cikKKworICAgICAgICAjIHJpY2hjb21wYXJlCisgICAgICAgIGIgPSBhcnJheS5hcnJheSgnZCcsIFsxLjEsIDIuMiwgMy4zXSkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG0yID0gbWVtb3J5dmlldyhiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIG0yKQorICAgICAgICBtMS5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtMSwgbTIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobTEsIGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIG0xKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld190b2J5dGVzKHNlbGYpOgorICAgICAgICAjIE1hbnkgaW1wbGljaXQgdGVzdHMgYXJlIGFscmVhZHkgaW4gc2VsZi52ZXJpZnkoKS4KKworICAgICAgICB0ID0gKC01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5KQorCisgICAgICAgIG5kID0gbmRhcnJheSh0LCBzaGFwZT1bNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgbmQudG9ieXRlcygpKQorCisgICAgICAgIG5kID0gbmRhcnJheShbdF0sIHNoYXBlPVsxXSwgZm9ybWF0PSc+aFFpTGwnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgbmQudG9ieXRlcygpKQorCisgICAgICAgIG5kID0gbmRhcnJheShbdCBmb3IgXyBpbiByYW5nZSgxMildLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9Jz1oUWlMbCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBuZC50b2J5dGVzKCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFt0IGZvciBfIGluIHJhbmdlKDEyMCldLCBzaGFwZT1bNSwyLDIsMywyXSwKKyAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0nPGhRaUxsJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIG5kLnRvYnl0ZXMoKSkKKworICAgICAgICAjIFVua25vd24gZm9ybWF0cyBhcmUgaGFuZGxlZDogdG9ieXRlcygpIHB1cmVseSBkZXBlbmRzIG9uIGl0ZW1zaXplLgorICAgICAgICBpZiBjdHlwZXM6CisgICAgICAgICAgICAjIGZvcm1hdDogIlR7Pmw6eDo+bDp5On0iCisgICAgICAgICAgICBjbGFzcyBCRVBvaW50KGN0eXBlcy5CaWdFbmRpYW5TdHJ1Y3R1cmUpOgorICAgICAgICAgICAgICAgIF9maWVsZHNfID0gWygieCIsIGN0eXBlcy5jX2xvbmcpLCAoInkiLCBjdHlwZXMuY19sb25nKV0KKyAgICAgICAgICAgIHBvaW50ID0gQkVQb2ludCgxMDAsIDIwMCkKKyAgICAgICAgICAgIGEgPSBtZW1vcnl2aWV3KHBvaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnRvYnl0ZXMoKSwgYnl0ZXMocG9pbnQpKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19nZXRfY29udGlndW91cyhzZWxmKToKKyAgICAgICAgIyBNYW55IGltcGxpY2l0IHRlc3RzIGFyZSBhbHJlYWR5IGluIHNlbGYudmVyaWZ5KCkuCisKKyAgICAgICAgIyBubyBidWZmZXIgaW50ZXJmYWNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIHt9LCBQeUJVRl9SRUFELCAnRicpCisKKyAgICAgICAgIyB3cml0YWJsZSByZXF1ZXN0IHRvIHJlYWQtb25seSBvYmplY3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBiJ3gnLCBQeUJVRl9XUklURSwgJ0MnKQorCisgICAgICAgICMgd3JpdGFibGUgcmVxdWVzdCB0byBub24tY29udGlndW91cyBvYmplY3QKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLCAyLCAzXSwgc2hhcGU9WzJdLCBzdHJpZGVzPVsyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfV1JJVEUsICdBJykKKworICAgICAgICAjIHNjYWxhciwgcmVhZC1vbmx5IHJlcXVlc3QgZnJvbSByZWFkLW9ubHkgZXhwb3J0ZXIKKyAgICAgICAgbmQgPSBuZGFycmF5KDksIHNoYXBlPSgpLCBmb3JtYXQ9IkwiKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCA5KQorCisgICAgICAgICMgc2NhbGFyLCByZWFkLW9ubHkgcmVxdWVzdCBmcm9tIHdyaXRhYmxlIGV4cG9ydGVyCisgICAgICAgIG5kID0gbmRhcnJheSg5LCBzaGFwZT0oKSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDkpCisKKyAgICAgICAgIyBzY2FsYXIsIHdyaXRhYmxlIHJlcXVlc3QKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG5kWygpXSA9IDkKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDkpCisKKyAgICAgICAgICAgIG1bKCldID0gMTAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDEwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFsoKV0sIDEwKQorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgW10pCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoOCkpLCBzaGFwZT1bMiwgMCwgN10sIGZvcm1hdD0iTCIsCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIFtbXSwgW11dKQorCisgICAgICAgICMgb25lLWRpbWVuc2lvbmFsCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSwgZm9ybWF0PSJoIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1dSSVRFLCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIG5kID0gbmRhcnJheShbMSwgMiwgM10sIHNoYXBlPVszXSwgZm9ybWF0PSJiIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1dSSVRFLCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgICMgb25lLWRpbWVuc2lvbmFsLCBub24tY29udGlndW91cworICAgICAgICBuZCA9IG5kYXJyYXkoWzEsIDIsIDNdLCBzaGFwZT1bMl0sIHN0cmlkZXM9WzJdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMSwgMjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWzFdLCAzKQorCisgICAgICAgIG5kID0gbmRbOjotMV0KKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMSwgMjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWzFdLCAxKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwsIGNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1dSSVRFLCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRhcnJheShtKS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfV1JJVEUsICdGJykKKyAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZGFycmF5KG0pLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMywgNF0sCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRXxORF9GT1JUUkFOKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZGFycmF5KG0pLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9XUklURSwgJ0MnKQorICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwsIG5vbi1jb250aWd1b3VzIGlucHV0CisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEV8TkRfUElMKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfV1JJVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcikKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgICMgZmxhZ3MKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsMyw0LDVdLCBzaGFwZT1bM10sIHN0cmlkZXM9WzJdKQorICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsICdDJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uY19jb250aWd1b3VzKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19zZXJpYWxpemluZyhzZWxmKToKKworICAgICAgICAjIEMtY29udGlndW91cworICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKCdpJykKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdpJywgWzEsMiwzLDQsNV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8obSkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSg1KnNpemUpCisgICAgICAgIGJ1Zi5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBiKQorCisgICAgICAgICMgQy1jb250aWd1b3VzLCBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKCdMJykKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMywyXSwgZm9ybWF0PSJMIikKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8obSkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKjMqMipzaXplKQorICAgICAgICBidWYucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgYikKKworICAgICAgICAjIEZvcnRyYW4gY29udGlndW91cywgbXVsdGktZGltZW5zaW9uYWwKKyAgICAgICAgI3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJ0wnKQorICAgICAgICAjbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMywyXSwgZm9ybWF0PSJMIiwKKyAgICAgICAgIyAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICAjbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICNidWYgPSBpby5CeXRlc0lPKG0pCisgICAgICAgICNiID0gYnl0ZWFycmF5KDIqMyoyKnNpemUpCisgICAgICAgICNidWYucmVhZGludG8oYikKKyAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIGIpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2hhc2goc2VsZik6CisKKyAgICAgICAgIyBieXRlcyBleHBvcnRlcgorICAgICAgICBiID0gYnl0ZXMobGlzdChyYW5nZSgxMikpKQorICAgICAgICBtID0gbWVtb3J5dmlldyhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goYiksIGhhc2gobSkpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMKKyAgICAgICAgbWMgPSBtLmNhc3QoJ2MnLCBzaGFwZT1bMyw0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG1jKSwgaGFzaChiKSkKKworICAgICAgICAjIG5vbi1jb250aWd1b3VzCisgICAgICAgIG14ID0gbVs6Oi0yXQorICAgICAgICBiID0gYnl0ZXMobGlzdChyYW5nZSgxMikpWzo6LTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobXgpLCBoYXNoKGIpKQorCisgICAgICAgICMgRm9ydHJhbiBjb250aWd1b3VzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVszLDIsNV0sIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2gobmQpKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwgc2xpY2UKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsMiw1XSkKKyAgICAgICAgeCA9IG5kWzo6MiwgOjosIDo6LTFdCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaCh4KSkKKworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsIHNsaWNlIHdpdGggc3Vib2Zmc2V0cworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiw1LDNdLCBmbGFncz1ORF9QSUwpCisgICAgICAgIHggPSBuZFs6OjIsIDo6LCA6Oi0xXQorICAgICAgICBtID0gbWVtb3J5dmlldyh4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2goeCkpCisKKyAgICAgICAgIyBub24tYnl0ZSBmb3JtYXRzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nTCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2gobmQudG9ieXRlcygpKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgtNiwgNikpLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9J2gnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG0pLCBoYXNoKG5kLnRvYnl0ZXMoKSkpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3JlbGVhc2Uoc2VsZik6CisKKyAgICAgICAgIyBDcmVhdGUgcmUtZXhwb3J0ZXIgZnJvbSBnZXRidWZmZXIobWVtb3J5dmlldyksIHRoZW4gcmVsZWFzZSB0aGUgdmlldy4KKyAgICAgICAgYSA9IGJ5dGVhcnJheShbMSwyLDNdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICBuZCA9IG5kYXJyYXkobSkgIyByZS1leHBvcnRlcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbS5yZWxlYXNlKQorICAgICAgICBkZWwgbmQKKyAgICAgICAgbS5yZWxlYXNlKCkKKworICAgICAgICBhID0gYnl0ZWFycmF5KFsxLDIsM10pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG5kMSA9IG5kYXJyYXkobSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBuZDIgPSBuZGFycmF5KG5kMSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBzZWxmLmFzc2VydElzKG5kMi5vYmosIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtLnJlbGVhc2UpCisgICAgICAgIGRlbCBuZDEsIG5kMgorICAgICAgICBtLnJlbGVhc2UoKQorCisgICAgICAgICMgY2hhaW5lZCB2aWV3cworICAgICAgICBhID0gYnl0ZWFycmF5KFsxLDIsM10pCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhhKQorICAgICAgICBtMiA9IG1lbW9yeXZpZXcobTEpCisgICAgICAgIG5kID0gbmRhcnJheShtMikgIyByZS1leHBvcnRlcgorICAgICAgICBtMS5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG0yLnJlbGVhc2UpCisgICAgICAgIGRlbCBuZAorICAgICAgICBtMi5yZWxlYXNlKCkKKworICAgICAgICBhID0gYnl0ZWFycmF5KFsxLDIsM10pCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhhKQorICAgICAgICBtMiA9IG1lbW9yeXZpZXcobTEpCisgICAgICAgIG5kMSA9IG5kYXJyYXkobTIsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgbmQyID0gbmRhcnJheShuZDEsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhuZDIub2JqLCBtMikKKyAgICAgICAgbTEucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtMi5yZWxlYXNlKQorICAgICAgICBkZWwgbmQxLCBuZDIKKyAgICAgICAgbTIucmVsZWFzZSgpCisKKyAgICAgICAgIyBBbGxvdyBjaGFuZ2luZyBsYXlvdXQgd2hpbGUgYnVmZmVycyBhcmUgZXhwb3J0ZWQuCisgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZsYWdzPU5EX1ZBUkVYUE9SVCkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgIG5kLnB1c2goWzQsNSw2LDcsOF0sIHNoYXBlPVs1XSkgIyBtdXRhdGUgbmQKKyAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgIHggPSBtZW1vcnl2aWV3KG0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIG0xLnRvbGlzdCgpKQorCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KG0yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkudG9saXN0KCksIG0yLnRvbGlzdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorICAgICAgICBtMi5yZWxlYXNlKCkKKyAgICAgICAgeS5yZWxlYXNlKCkKKworICAgICAgICBuZC5wb3AoKSAjIHBvcCB0aGUgY3VycmVudCB2aWV3CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgZGVsIG5kCisgICAgICAgIG0xLnJlbGVhc2UoKQorICAgICAgICB4LnJlbGVhc2UoKQorCisgICAgICAgICMgSWYgbXVsdGlwbGUgbWVtb3J5dmlld3Mgc2hhcmUgdGhlIHNhbWUgbWFuYWdlZCBidWZmZXIsIGltcGxpY2l0CisgICAgICAgICMgcmVsZWFzZSgpIGluIHRoZSBjb250ZXh0IG1hbmFnZXIncyBfX2V4aXRfXygpIG1ldGhvZCBzaG91bGQgc3RpbGwKKyAgICAgICAgIyB3b3JrLgorICAgICAgICBkZWYgY2F0Y2gyMihiKToKKyAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyhiKSBhcyBtMjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgIHdpdGggbWVtb3J5dmlldyh4KSBhcyBtMToKKyAgICAgICAgICAgIGNhdGNoMjIobTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xWzBdLCBvcmQoYicxJykpCisKKyAgICAgICAgeCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9J2wnKQorICAgICAgICB5ID0gbmRhcnJheSh4LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh6Lm9iaiwgeCkKKyAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHopIGFzIG06CisgICAgICAgICAgICBjYXRjaDIyKG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMDoxXS50b2xpc3QoKSwgW1tbMCwgMSwgMl0sIFszLCA0LCA1XV1dKQorCisgICAgICAgICMgVGVzdCBnYXJiYWdlIGNvbGxlY3Rpb24uCisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUkVESVJFQ1QpOgorICAgICAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeCkgYXMgbTE6CisgICAgICAgICAgICAgICAgZGVsIHgKKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShtMSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh5KSBhcyBtMjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIHkKKyAgICAgICAgICAgICAgICAgICAgeiA9IG5kYXJyYXkobTIsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHopIGFzIG0zOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTMpCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0yKQorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTFbMF0sIG9yZChiJzEnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTJbMV0sIG9yZChiJzInKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTNbMl0sIG9yZChiJzMnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBtMworICAgICAgICAgICAgICAgICAgICBkZWwgbTIKKyAgICAgICAgICAgICAgICBkZWwgbTEKKworICAgICAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeCkgYXMgbTE6CisgICAgICAgICAgICAgICAgZGVsIHgKKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShtMSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh5KSBhcyBtMjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIHkKKyAgICAgICAgICAgICAgICAgICAgeiA9IG5kYXJyYXkobTIsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHopIGFzIG0zOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTEpCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0yKQorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTFbMF0sIG9yZChiJzEnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTJbMV0sIG9yZChiJzInKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTNbMl0sIG9yZChiJzMnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBtMSwgbTIsIG0zCisKKyAgICAgICAgIyBtZW1vcnl2aWV3LnJlbGVhc2UoKSBmYWlscyBpZiB0aGUgdmlldyBoYXMgZXhwb3J0ZWQgYnVmZmVycy4KKyAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHgpIGFzIG06CisgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KG0pCisgICAgICAgICAgICAgICAgbVswXSA9PSBvcmQoYicxJykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfcmVkaXJlY3Qoc2VsZik6CisKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLjAgKiB4IGZvciB4IGluIHJhbmdlKDEyKV0sIHNoYXBlPVsxMl0sIGZvcm1hdD0nZCcpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnZCcsIFsxLjAgKiB4IGZvciB4IGluIHJhbmdlKDEyKV0pCisKKyAgICAgICAgZm9yIHggaW4gKG5kLCBhKToKKyAgICAgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KHopCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5vYmosIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHoub2JqLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCB5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCB6KQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMTozXSwgeFsxOjNdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzE6M10sIHlbMTozXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxOjNdLCB6WzE6M10pCisgICAgICAgICAgICBkZWwgeSwgegorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzE6M10sIHhbMTozXSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfZnJvbV9zdGF0aWNfZXhwb3J0ZXIoc2VsZik6CisKKyAgICAgICAgZm10ID0gJ0InCisgICAgICAgIGxzdCA9IFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExXQorCisgICAgICAgICMgZXhjZXB0aW9ucworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN0YXRpY2FycmF5LCAxLCAyLCAzKQorCisgICAgICAgICMgdmlldy5vYmo9PXgKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KCkKKyAgICAgICAgeSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgc2VsZi52ZXJpZnkoeSwgb2JqPXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeVtpXSwgaSkKKyAgICAgICAgZGVsIHgKKyAgICAgICAgZGVsIHkKKworICAgICAgICB4ID0gc3RhdGljYXJyYXkoKQorICAgICAgICB5ID0gbWVtb3J5dmlldyh4KQorICAgICAgICBkZWwgeQorICAgICAgICBkZWwgeAorCisgICAgICAgIHggPSBzdGF0aWNhcnJheSgpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Lm9iaiwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeikKKyAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPXosCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGRlbCB4LCB5LCB6LCBtCisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KCkKKyAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHopCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5vYmosIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoei5vYmosIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5vYmosIHgpCisgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj14LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorICAgICAgICBkZWwgeCwgeSwgeiwgbQorCisgICAgICAgICMgdmlldy5vYmo9PU5VTEwKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIHNlbGYudmVyaWZ5KHksIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHlbaV0sIGkpCisgICAgICAgIGRlbCB4CisgICAgICAgIGRlbCB5CisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIGRlbCB5CisgICAgICAgIGRlbCB4CisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Lm9iaiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeikKKyAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPXosCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGRlbCB4LCB5LCB6LCBtCisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgeiA9IG5kYXJyYXkoeSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBtID0gbWVtb3J5dmlldyh6KQorICAgICAgICAjIENsZWFybHkgc2V0dGluZyB2aWV3Lm9iaj09TlVMTCBpcyBpbmZlcmlvciwgc2luY2UgaXQKKyAgICAgICAgIyBtZXNzZXMgdXAgdGhlIHJlZGlyZWN0aW9uIGNoYWluOgorICAgICAgICBzZWxmLmFzc2VydElzKHkub2JqLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKHoub2JqLCB5KQorICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCB5KQorICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9eSwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKyAgICAgICAgZGVsIHgsIHksIHosIG0KKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfZ2V0YnVmZmVyX3VuZGVmaW5lZChzZWxmKToKKworICAgICAgICAjIGdldGJ1ZmZlcnByb2MgZG9lcyBub3QgYWRoZXJlIHRvIHRoZSBuZXcgZG9jdW1lbnRhdGlvbgorICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgWzNdLCBmbGFncz1ORF9HRVRCVUZfRkFJTHxORF9HRVRCVUZfVU5ERUZJTkVEKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbWVtb3J5dmlldywgbmQpCisKKyAgICBkZWYgdGVzdF9pc3N1ZV83Mzg1KHNlbGYpOgorICAgICAgICB4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZsYWdzPU5EX0dFVEJVRl9GQUlMKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbWVtb3J5dmlldywgeCkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEJ1ZmZlclByb3RvY29sKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weSBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQppbmRleCA1NWZiNjNhLi5jMzI5OTJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CkBAIC0xLDE5ICsxLDIxIEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBidWlsdC1pbiBmdW5jdGlvbnMKIAotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncworaW1wb3J0IGFzdAoraW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBpbworaW1wb3J0IGxvY2FsZQogaW1wb3J0IG9zCi1pbXBvcnQgYXN0Ci1pbXBvcnQgdHlwZXMKLWltcG9ydCBidWlsdGlucworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmNtcCwgVEVTVEZOLCB1bmxpbmssICBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBuZWcKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluaywgIHJ1bl91bml0dGVzdCwgY2hlY2tfd2FybmluZ3MKIHRyeToKICAgICBpbXBvcnQgcHR5LCBzaWduYWwKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTExMCw3ICsxMTIsMzAgQEAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgogCitkZWYgZmlsdGVyX2NoYXIoYXJnKToKKyAgICByZXR1cm4gb3JkKGFyZykgPiBvcmQoImQiKQorCitkZWYgbWFwX2NoYXIoYXJnKToKKyAgICByZXR1cm4gY2hyKG9yZChhcmcpKzEpCisKIGNsYXNzIEJ1aWx0aW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIEhlbHBlciB0byBjaGVjayBwaWNrbGFiaWxpdHkKKyAgICBkZWYgY2hlY2tfaXRlcl9waWNrbGUoc2VsZiwgaXQsIHNlcSk6CisgICAgICAgIGl0b3JnID0gaXQKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIHNlcSkKKworICAgICAgICAjdGVzdCB0aGUgaXRlcmF0b3IgYWZ0ZXIgZHJvcHBpbmcgb25lIGZyb20gaXQKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxWzE6XSkKIAogICAgIGRlZiB0ZXN0X2ltcG9ydChzZWxmKToKICAgICAgICAgX19pbXBvcnRfXygnc3lzJykKQEAgLTI1NSw4ICsyODAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocigweGZmKSwgJ1x4ZmYnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjaHIsIDE8PDI0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocihzeXMubWF4dW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RyKCgnXFxVJTA4eCcgJSAoc3lzLm1heHVuaWNvZGUpKS5lbmNvZGUoImFzY2lpIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmljb2RlLWVzY2FwZScpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cignXFxVMDAxMGZmZmYnLmVuY29kZSgiYXNjaWkiKSwgJ3VuaWNvZGUtZXNjYXBlJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2hyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocigweDAwMDBGRkZGKSwgIlxVMDAwMEZGRkYiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocigweDAwMDEwMDAwKSwgIlxVMDAwMTAwMDAiKQpAQCAtMzc4LDcgKzQwMiwxNSBAQAogICAgICAgICBmID0gRm9vKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpcihmKSA9PSBbImdhIiwgImthbiIsICJyb28iXSkKIAotICAgICAgICAjIGRpcihvYmpfX2Rpcl9fbm90X2xpc3QpCisgICAgICAgICMgZGlyKG9ial9fZGlyX190dXBsZSkKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19kaXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKCJiIiwgImMiLCAiYSIpCisgICAgICAgIHJlcyA9IGRpcihGb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJlcywgbGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcyA9PSBbImEiLCAiYiIsICJjIl0pCisKKyAgICAgICAgIyBkaXIob2JqX19kaXJfX25vdF9zZXF1ZW5jZSkKICAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19kaXJfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gNwpAQCAtMzkxLDYgKzQyMyw4IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihzeXMuZXhjX2luZm8oKVsyXSkpLCA0KQogCisgICAgICAgICMgdGVzdCB0aGF0IG9iamVjdCBoYXMgYSBfX2Rpcl9fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoW10uX19kaXJfXygpKSwgZGlyKFtdKSkKIAogICAgIGRlZiB0ZXN0X2Rpdm1vZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXZtb2QoMTIsIDcpLCAoMSwgNSkpCkBAIC00MDAsMTAgKzQzNCwxMyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGl2bW9kKC1zeXMubWF4c2l6ZS0xLCAtMSksIChzeXMubWF4c2l6ZSsxLCAwKSkKIAotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGZjbXAoZGl2bW9kKDMuMjUsIDEuMCksICgzLjAsIDAuMjUpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmY21wKGRpdm1vZCgtMy4yNSwgMS4wKSwgKC00LjAsIDAuNzUpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmY21wKGRpdm1vZCgzLjI1LCAtMS4wKSwgKC00LjAsIC0wLjc1KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZmNtcChkaXZtb2QoLTMuMjUsIC0xLjApLCAoMy4wLCAtMC4yNSkpKQorICAgICAgICBmb3IgbnVtLCBkZW5vbSwgZXhwX3Jlc3VsdCBpbiBbICgzLjI1LCAxLjAsICgzLjAsIDAuMjUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTMuMjUsIDEuMCwgKC00LjAsIDAuNzUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMy4yNSwgLTEuMCwgKC00LjAsIC0wLjc1KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0zLjI1LCAtMS4wLCAoMy4wLCAtMC4yNSkpXToKKyAgICAgICAgICAgIHJlc3VsdCA9IGRpdm1vZChudW0sIGRlbm9tKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChyZXN1bHRbMF0sIGV4cF9yZXN1bHRbMF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHJlc3VsdFsxXSwgZXhwX3Jlc3VsdFsxXSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpdm1vZCkKIApAQCAtNTE4LDYgKzU1NSwzOSBAQAogICAgICAgICAgICAgZGVsIGxbJ19fYnVpbHRpbnNfXyddCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGcsIGwpLCAoeydhJzogMX0sIHsnYic6IDJ9KSkKIAorICAgIGRlZiB0ZXN0X2V4ZWNfZ2xvYmFscyhzZWxmKToKKyAgICAgICAgY29kZSA9IGNvbXBpbGUoInByaW50KCdIZWxsbyBXb3JsZCEnKSIsICIiLCAiZXhlYyIpCisgICAgICAgICMgbm8gYnVpbHRpbiBmdW5jdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5hbWVFcnJvciwgIm5hbWUgJ3ByaW50JyBpcyBub3QgZGVmaW5lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYywgY29kZSwgeydfX2J1aWx0aW5zX18nOiB7fX0pCisgICAgICAgICMgX19idWlsdGluc19fIG11c3QgYmUgYSBtYXBwaW5nIHR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLCBjb2RlLCB7J19fYnVpbHRpbnNfXyc6IDEyM30pCisKKyAgICAgICAgIyBubyBfX2J1aWxkX2NsYXNzX18gZnVuY3Rpb24KKyAgICAgICAgY29kZSA9IGNvbXBpbGUoImNsYXNzIEE6IHBhc3MiLCAiIiwgImV4ZWMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5hbWVFcnJvciwgIl9fYnVpbGRfY2xhc3NfXyBub3QgZm91bmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMsIGNvZGUsIHsnX19idWlsdGluc19fJzoge319KQorCisgICAgICAgIGNsYXNzIGZyb3plbmRpY3RfZXJyb3IoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBmcm96ZW5kaWN0KGRpY3QpOgorICAgICAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJhaXNlIGZyb3plbmRpY3RfZXJyb3IoImZyb3plbmRpY3QgaXMgcmVhZG9ubHkiKQorCisgICAgICAgICMgcmVhZC1vbmx5IGJ1aWx0aW5zCisgICAgICAgIGZyb3plbl9idWlsdGlucyA9IGZyb3plbmRpY3QoX19idWlsdGluc19fKQorICAgICAgICBjb2RlID0gY29tcGlsZSgiX19idWlsdGluc19fWydzdXBlcmdsb2JhbCddPTI7IHByaW50KHN1cGVyZ2xvYmFsKSIsICJ0ZXN0IiwgImV4ZWMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhmcm96ZW5kaWN0X2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLCBjb2RlLCB7J19fYnVpbHRpbnNfXyc6IGZyb3plbl9idWlsdGluc30pCisKKyAgICAgICAgIyByZWFkLW9ubHkgZ2xvYmFscworICAgICAgICBuYW1lc3BhY2UgPSBmcm96ZW5kaWN0KHt9KQorICAgICAgICBjb2RlID0gY29tcGlsZSgieD0xIiwgInRlc3QiLCAiZXhlYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGZyb3plbmRpY3RfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMsIGNvZGUsIG5hbWVzcGFjZSkKKwogICAgIGRlZiB0ZXN0X2V4ZWNfcmVkaXJlY3RlZChzZWxmKToKICAgICAgICAgc2F2ZXN0ZG91dCA9IHN5cy5zdGRvdXQKICAgICAgICAgc3lzLnN0ZG91dCA9IE5vbmUgIyBXaGF0ZXZlciB0aGF0IGNhbm5vdCBmbHVzaCgpCkBAIC01NTQsNiArNjI0LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChmaWx0ZXIobGFtYmRhIHg6IHg+PTMsICgxLCAyLCAzLCA0KSkpLCBbMywgNF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgZmlsdGVyKDQyLCAoMSwgMikpKQogCisgICAgZGVmIHRlc3RfZmlsdGVyX3BpY2tsZShzZWxmKToKKyAgICAgICAgZjEgPSBmaWx0ZXIoZmlsdGVyX2NoYXIsICJhYmNkZWFiY2RlIikKKyAgICAgICAgZjIgPSBmaWx0ZXIoZmlsdGVyX2NoYXIsICJhYmNkZWFiY2RlIikKKyAgICAgICAgc2VsZi5jaGVja19pdGVyX3BpY2tsZShmMSwgbGlzdChmMikpCisKICAgICBkZWYgdGVzdF9nZXRhdHRyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2V0YXR0cihzeXMsICdzdGRvdXQnKSBpcyBzeXMuc3Rkb3V0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGF0dHIsIHN5cywgMSkKQEAgLTc0Nyw2ICs4MjIsMTEgQEAKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxpc3QsIG1hcChiYWRmdW5jLCByYW5nZSg1KSkpCiAKKyAgICBkZWYgdGVzdF9tYXBfcGlja2xlKHNlbGYpOgorICAgICAgICBtMSA9IG1hcChtYXBfY2hhciwgIklzIHRoaXMgdGhlIHJlYWwgbGlmZT8iKQorICAgICAgICBtMiA9IG1hcChtYXBfY2hhciwgIklzIHRoaXMgdGhlIHJlYWwgbGlmZT8iKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJfcGlja2xlKG0xLCBsaXN0KG0yKSkKKwogICAgIGRlZiB0ZXN0X21heChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXgoJzEyMzEyMycpLCAnMycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF4KDEsIDIsIDMpLCAzKQpAQCAtODgwLDcgKzk2MCwyOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcC5yZWFkKDEwMDApLCAnWVlZJyoxMDApCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgIHVubGluayhURVNURk4pCisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfb3Blbl9kZWZhdWx0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICBvbGRfZW52aXJvbiA9IGRpY3Qob3MuZW52aXJvbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB0cnkgdG8gZ2V0IGEgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICMgbG9jYWxlIGVuY29kaW5nIHRvIGNoZWNrIHRoYXQgb3BlbigpIHVzZXMgdGhlIGN1cnJlbnQgbG9jYWxlCisgICAgICAgICAgICAjIGVuY29kaW5nIGFuZCBub3QgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nCisgICAgICAgICAgICBmb3Iga2V5IGluICgnTENfQUxMJywgJ0xBTkcnLCAnTENfQ1RZUEUnKToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25ba2V5XQorCisgICAgICAgICAgICBzZWxmLndyaXRlX3Rlc3RmaWxlKCkKKyAgICAgICAgICAgIGN1cnJlbnRfbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQorICAgICAgICAgICAgZnAgPSBvcGVuKFRFU1RGTiwgJ3cnKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAuZW5jb2RpbmcsIGN1cnJlbnRfbG9jYWxlX2VuY29kaW5nKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCisgICAgICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQorICAgICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUob2xkX2Vudmlyb24pCiAKICAgICBkZWYgdGVzdF9vcmQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JkKCcgJyksIDMyKQpAQCAtMTE5Nyw2ICsxMjk5LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIDQyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgWydhJywgJ2InLCAnYyddKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgWydhJywgJ2InLCAnYyddLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFtiJ2EnLCBiJ2MnXSwgYicnKQorICAgICAgICB2YWx1ZXMgPSBbYnl0ZWFycmF5KGInYScpLCBieXRlYXJyYXkoYidiJyldCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCB2YWx1ZXMsIGJ5dGVhcnJheShiJycpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgW1sxXSwgWzJdLCBbM11dKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgW3syOjN9XSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFt7MjozfV0qMiwgezI6M30pCkBAIC0xMjg1LDYgKzEzOTAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwgemlwKEJhZFNlcSgpLCBCYWRTZXEoKSkpCiAKKyAgICBkZWYgdGVzdF96aXBfcGlja2xlKHNlbGYpOgorICAgICAgICBhID0gKDEsIDIsIDMpCisgICAgICAgIGIgPSAoNCwgNSwgNikKKyAgICAgICAgdCA9IFsoMSwgNCksICgyLCA1KSwgKDMsIDYpXQorICAgICAgICB6MSA9IHppcChhLCBiKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJfcGlja2xlKHoxLCB0KQorCiAgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhlIGJhc2ljIG1hY2hpbmVyeSBvZiB0aGUgZm9ybWF0KCkgYnVpbHRpbi4gIERvbid0IHRlc3QKICAgICAgICAgIyAgdGhlIHNwZWNpZmljcyBvZiB0aGUgdmFyaW91cyBmb3JtYXR0ZXJzCkBAIC0xMzU4LDE0ICsxNDcwLDE0IEBACiAKICAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAjIElzc3VlICM3OTk0OiBvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcgaXMKLSAgICAgICAgIyAgcGVuZGluZyBkZXByZWNhdGVkCisgICAgICAgICMgIGRlcHJlY2F0ZWQKICAgICAgICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9mb3JtYXRfc3RyaW5nKG9iaiwgZm10X3N0ciwgc2hvdWxkX3JhaXNlX3dhcm5pbmcpOgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICAgICAgZm9ybWF0KG9iaiwgZm10X3N0cikKICAgICAgICAgICAgIGlmIHNob3VsZF9yYWlzZV93YXJuaW5nOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh3WzBdLm1lc3NhZ2UsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHdbMF0ubWVzc2FnZSwgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ29iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcnLCBzdHIod1swXS5tZXNzYWdlKSkKICAgICAgICAgICAgIGVsc2U6CkBAIC0xNDA5LDYgKzE1MjEsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgeC50cmFuc2xhdGUsIGIiMSIsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50cmFuc2xhdGUsIGIiMSIqMjU2LCAxKQogCisgICAgZGVmIHRlc3RfY29uc3RydWN0X3NpbmdsZXRvbnMoc2VsZik6CisgICAgICAgIGZvciBjb25zdCBpbiBOb25lLCBFbGxpcHNpcywgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICB0cCA9IHR5cGUoY29uc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHRwKCksIGNvbnN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0cCwgMSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdHAsIGE9MSwgYj0yKQorCiBjbGFzcyBUZXN0U29ydGVkKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weSBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKaW5kZXggNWVhYjhmNS4uOGNlNmMyMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CkBAIC0xODgsMjQgKzE4OCwyNiBAQAogCiAgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHUxMjM0XHU1Njc4XHU5YWJjIgotICAgICAgICBmb3IgZW5jIGluICgidXRmOCIsICJ1dGYxNiIpOgorICAgICAgICBmb3IgZW5jIGluICgidXRmLTgiLCAidXRmLTE2Iik6CiAgICAgICAgICAgICBiID0gc2VsZi50eXBlMnRlc3Qoc2FtcGxlLCBlbmMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYudHlwZTJ0ZXN0KHNhbXBsZS5lbmNvZGUoZW5jKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgc2VsZi50eXBlMnRlc3QsIHNhbXBsZSwgImxhdGluMSIpCi0gICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbjEiLCAiaWdub3JlIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzZWxmLnR5cGUydGVzdCwgc2FtcGxlLCAibGF0aW4tMSIpCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbi0xIiwgImlnbm9yZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgc2VsZi50eXBlMnRlc3Qoc2FtcGxlWzotM10sICJ1dGYtOCIpKQogCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgogICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx1MTIzNFx1NTY3OFx1OWFiY1xkZWYwXGRlZjAiCi0gICAgICAgIGZvciBlbmMgaW4gKCJ1dGY4IiwgInV0ZjE2Iik6CisgICAgICAgIGZvciBlbmMgaW4gKCJ1dGYtOCIsICJ1dGYtMTYiKToKICAgICAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsIGVuYykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoZW5jKSwgc2FtcGxlKQogICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx4ODBceDgxXHhmZVx4ZmYiCi0gICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbjEiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGIuZGVjb2RlLCAidXRmOCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoInV0ZjgiLCAiaWdub3JlIiksICJIZWxsbyB3b3JsZFxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZShlcnJvcnM9Imlnbm9yZSIsIGVuY29kaW5nPSJ1dGY4IiksCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbi0xIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBiLmRlY29kZSwgInV0Zi04IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZSgidXRmLTgiLCAiaWdub3JlIiksICJIZWxsbyB3b3JsZFxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZShlcnJvcnM9Imlnbm9yZSIsIGVuY29kaW5nPSJ1dGYtOCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJIZWxsbyB3b3JsZFxuIikKKyAgICAgICAgIyBEZWZhdWx0IGVuY29kaW5nIGlzIHV0Zi04CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoYidceGUyXHg5OFx4ODMnKS5kZWNvZGUoKSwgJ1x1MjYwMycpCiAKICAgICBkZWYgdGVzdF9mcm9tX2ludChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KDApCkBAIC0yOTEsMTAgKzI5MywyNyBAQAogCiAgICAgZGVmIHRlc3RfY291bnQoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICBwID0gMTEyCisgICAgICAgIHcgPSAxMTkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidpJyksIDQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ3NzJyksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ3cnKSwgMCkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoaSksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudCh3KSwgMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidpJywgNiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ3AnLCA2KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGInaScsIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidwJywgNywgOSksIDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGksIDYpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQocCwgNiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChpLCAxLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KHAsIDcsIDkpLCAxKQorCiAgICAgZGVmIHRlc3Rfc3RhcnRzd2l0aChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInaGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYudHlwZTJ0ZXN0KCkuc3RhcnRzd2l0aChiImFueXRoaW5nIikpCkBAIC0zMjUsMzUgKzM0NCw4NiBAQAogCiAgICAgZGVmIHRlc3RfZmluZChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQorICAgICAgICBpID0gMTA1CisgICAgICAgIHcgPSAxMTkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJyksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAzKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDEsIDcpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMSwgMyksIC0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3cnKSwgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInbWlzc2lzc2lwcGlhbicpLCAtMSkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQodyksIC0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAzKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDEsIDcpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMSwgMyksIC0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGksIDYpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChpLCAxLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQodywgMSwgMyksIC0xKQorCisgICAgICAgIGZvciBpbmRleCBpbiAoLTEsIDI1Niwgc3lzLm1heHNpemUgKyAxKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgVmFsdWVFcnJvciwgcidieXRlIG11c3QgYmUgaW4gcmFuZ2VcKDAsIDI1NlwpJywKKyAgICAgICAgICAgICAgICBiLmZpbmQsIGluZGV4KQorCiAgICAgZGVmIHRlc3RfcmZpbmQoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICB3ID0gMTE5CisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnLCAzKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnLCAwLCA2KSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGIndycpLCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInbWlzc2lzc2lwcGlhbicpLCAtMSkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoaSksIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQodyksIC0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChiJ3NzJywgMyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChiJ3NzJywgMCwgNiksIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGksIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoaSwgMywgOSksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZCh3LCAxLCAzKSwgLTEpCisKICAgICBkZWYgdGVzdF9pbmRleChzZWxmKToKLSAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInd29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoYid3JyksIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChiJ29ybCcpLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ3dvcm0nKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ2xkbycpCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICB3ID0gMTE5CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGInc3MnKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgYid3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgYidtaXNzaXNzaXBwaWFuJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoaSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIHcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGInc3MnLCAzKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGInc3MnLCAxLCA3KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgYidzcycsIDEsIDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGksIDYpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoaSwgMSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIHcsIDEsIDMpCiAKICAgICBkZWYgdGVzdF9yaW5kZXgoc2VsZik6Ci0gICAgICAgICMgWFhYIGNvdWxkIGJlIG1vcmUgcmlnb3JvdXMKLSAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInd29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGIndycpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGInb3JsJyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCBiJ3dvcm0nKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgYidsZG8nKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidtaXNzaXNzaXBwaScpCisgICAgICAgIGkgPSAxMDUKKyAgICAgICAgdyA9IDExOQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYidzcycpLCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgYid3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5yaW5kZXgsIGInbWlzc2lzc2lwcGlhbicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChpKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCB3KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYidzcycsIDMpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGInc3MnLCAwLCA2KSwgMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGksIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGksIDMsIDkpLCA3KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgdywgMSwgMykKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKQEAgLTM2NSw2ICs0MzUsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGInaScpLCBbYidtJywgYidzcycsIGInc3MnLCBiJ3BwJywgYicnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGInc3MnKSwgW2InbWknLCBiJ2knLCBiJ2lwcGknXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGIndycpLCBbYl0pCisgICAgICAgICMgd2l0aCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYXxifGN8ZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChzZXA9Yid8JyksIFtiJ2EnLCBiJ2InLCBiJ2MnLCBiJ2QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGInfCcsIG1heHNwbGl0PTEpLCBbYidhJywgYidifGN8ZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoc2VwPWInfCcsIG1heHNwbGl0PTEpLCBbYidhJywgYidifGN8ZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQobWF4c3BsaXQ9MSwgc2VwPWInfCcpLCBbYidhJywgYidifGN8ZCddKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidhIGIgYyBkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KG1heHNwbGl0PTEpLCBbYidhJywgYidiIGMgZCddKQogCiAgICAgZGVmIHRlc3Rfc3BsaXRfd2hpdGVzcGFjZShzZWxmKToKICAgICAgICAgZm9yIGIgaW4gKGInICBhcmYgIGJhcmYgICcsIGInYXJmXHRiYXJmJywgYidhcmZcbmJhcmYnLCBiJ2FyZlxyYmFyZicsCkBAIC0zOTMsNiArNDcxLDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoYidpJyksIFtiJ20nLCBiJ3NzJywgYidzcycsIGIncHAnLCBiJyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KGInc3MnKSwgW2InbWknLCBiJ2knLCBiJ2lwcGknXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChiJ3cnKSwgW2JdKQorICAgICAgICAjIHdpdGgga2V5d29yZCBhcmdzCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2F8YnxjfGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KHNlcD1iJ3wnKSwgW2InYScsIGInYicsIGInYycsIGInZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KGInfCcsIG1heHNwbGl0PTEpLCBbYidhfGJ8YycsIGInZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KHNlcD1iJ3wnLCBtYXhzcGxpdD0xKSwgW2InYXxifGMnLCBiJ2QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChtYXhzcGxpdD0xLCBzZXA9Yid8JyksIFtiJ2F8YnxjJywgYidkJ10pCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2EgYiBjIGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KG1heHNwbGl0PTEpLCBbYidhIGIgYycsIGInZCddKQogCiAgICAgZGVmIHRlc3RfcnNwbGl0X3doaXRlc3BhY2Uoc2VsZik6CiAgICAgICAgIGZvciBiIGluIChiJyAgYXJmICBiYXJmICAnLCBiJ2FyZlx0YmFyZicsIGInYXJmXG5iYXJmJywgYidhcmZccmJhcmYnLApAQCAtNDMyLDYgKzUxOCwyNCBAQAogICAgICAgICAgICAgICAgIHEgPSBwaWNrbGUubG9hZHMocHMpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBxKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CisgICAgICAgIGZvciBiIGluIGIiIiwgYiJhIiwgYiJhYmMiLCBiIlx4ZmZhYlx4ODAiLCBiIlwwXDBcMzc3XDBcMCI6CisgICAgICAgICAgICBpdCA9IGl0b3JnID0gaXRlcihzZWxmLnR5cGUydGVzdChiKSkKKyAgICAgICAgICAgIGRhdGEgPSBsaXN0KHNlbGYudHlwZTJ0ZXN0KGIpKQorICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGEpCisKKyAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGFbMTpdKQorCiAgICAgZGVmIHRlc3Rfc3RyaXAoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnN0cmlwKGInaScpLCBiJ21pc3Npc3NpcHAnKQpAQCAtNDczLDYgKzU3NywyNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInYWJjJykubHN0cmlwLCAnYicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhYmMnKS5yc3RyaXAsICdiJykKIAorICAgIGRlZiB0ZXN0X2NlbnRlcihzZWxmKToKKyAgICAgICAgIyBGaWxsIGNoYXJhY3RlciBjYW4gYmUgZWl0aGVyIGJ5dGVzIG9yIGJ5dGVhcnJheSAoaXNzdWUgMTIzODApCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2FiYycpCisgICAgICAgIGZvciBmaWxsX3R5cGUgaW4gKGJ5dGVzLCBieXRlYXJyYXkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNlbnRlcig3LCBmaWxsX3R5cGUoYictJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnR5cGUydGVzdChiJy0tYWJjLS0nKSkKKworICAgIGRlZiB0ZXN0X2xqdXN0KHNlbGYpOgorICAgICAgICAjIEZpbGwgY2hhcmFjdGVyIGNhbiBiZSBlaXRoZXIgYnl0ZXMgb3IgYnl0ZWFycmF5IChpc3N1ZSAxMjM4MCkKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYWJjJykKKyAgICAgICAgZm9yIGZpbGxfdHlwZSBpbiAoYnl0ZXMsIGJ5dGVhcnJheSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIubGp1c3QoNywgZmlsbF90eXBlKGInLScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50eXBlMnRlc3QoYidhYmMtLS0tJykpCisKKyAgICBkZWYgdGVzdF9yanVzdChzZWxmKToKKyAgICAgICAgIyBGaWxsIGNoYXJhY3RlciBjYW4gYmUgZWl0aGVyIGJ5dGVzIG9yIGJ5dGVhcnJheSAoaXNzdWUgMTIzODApCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2FiYycpCisgICAgICAgIGZvciBmaWxsX3R5cGUgaW4gKGJ5dGVzLCBieXRlYXJyYXkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJqdXN0KDcsIGZpbGxfdHlwZShiJy0nKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudHlwZTJ0ZXN0KGInLS0tLWFiYycpKQorCiAgICAgZGVmIHRlc3Rfb3JkKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidcMEFceDdmXHg4MFx4ZmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtvcmQoYltpOmkrMV0pIGZvciBpIGluIHJhbmdlKGxlbihiKSldLApAQCAtNTI5LDYgKzY1NCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGIuc3RhcnRzd2l0aChoLCBOb25lLCAtMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGIuc3RhcnRzd2l0aCh4LCBOb25lLCBOb25lKSkKIAorICAgIGRlZiB0ZXN0X2ludGVnZXJfYXJndW1lbnRzX291dF9vZl9ieXRlX3JhbmdlKHNlbGYpOgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCisKKyAgICAgICAgZm9yIG1ldGhvZCBpbiAoYi5jb3VudCwgYi5maW5kLCBiLmluZGV4LCBiLnJmaW5kLCBiLnJpbmRleCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZXRob2QsIC0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWV0aG9kLCAyNTYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZXRob2QsIDk5OTkpCisKICAgICBkZWYgdGVzdF9maW5kX2V0Y19yYWlzZV9jb3JyZWN0X2Vycm9yX21lc3NhZ2VzKHNlbGYpOgogICAgICAgICAjIGlzc3VlIDExODI4CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKQEAgLTYzNCw2ICs3NjcsMzkgQEAKICAgICAgICAgYi5yZXZlcnNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiKQogCisgICAgZGVmIHRlc3RfY2xlYXIoc2VsZik6CisgICAgICAgIGIgPSBieXRlYXJyYXkoYidweXRob24nKQorICAgICAgICBiLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJycpCisKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJycpCisgICAgICAgIGIuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInJykKKworICAgICAgICBiID0gYnl0ZWFycmF5KGInJykKKyAgICAgICAgYi5hcHBlbmQob3JkKCdyJykpCisgICAgICAgIGIuY2xlYXIoKQorICAgICAgICBiLmFwcGVuZChvcmQoJ3AnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ3AnKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJ2FiYycpCisgICAgICAgIGJiID0gYi5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYiwgYidhYmMnKQorCisgICAgICAgIGIgPSBieXRlYXJyYXkoYicnKQorICAgICAgICBiYiA9IGIuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmIsIGInJykKKworICAgICAgICAjIHRlc3QgdGhhdCBpdCdzIGluZGVlZCBhIGNvcHkgYW5kIG5vdCBhIHJlZmVyZW5jZQorICAgICAgICBiID0gYnl0ZWFycmF5KGInYWJjJykKKyAgICAgICAgYmIgPSBiLmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGJiKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KGIsIGJiKQorICAgICAgICBiYi5hcHBlbmQob3JkKCdkJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmIsIGInYWJjZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidhYmMnKQorCiAgICAgZGVmIHRlc3RfcmVnZXhwcyhzZWxmKToKICAgICAgICAgZGVmIGJ5KHMpOgogICAgICAgICAgICAgcmV0dXJuIGJ5dGVhcnJheShtYXAob3JkLCBzKSkKQEAgLTExMDUsOSArMTI3MSwxMSBAQAogCiBjbGFzcyBCeXRlQXJyYXlBc1N0cmluZ1Rlc3QoRml4ZWRTdHJpbmdUZXN0KToKICAgICB0eXBlMnRlc3QgPSBieXRlYXJyYXkKKyAgICBjb250YWluc19ieXRlcyA9IFRydWUKIAogY2xhc3MgQnl0ZXNBc1N0cmluZ1Rlc3QoRml4ZWRTdHJpbmdUZXN0KToKICAgICB0eXBlMnRlc3QgPSBieXRlcworICAgIGNvbnRhaW5zX2J5dGVzID0gVHJ1ZQogCiAKIGNsYXNzIFN1YmNsYXNzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J6Mi5weSBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CmluZGV4IGJlMzU1ODAuLjI1N2IxNDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CkBAIC0xLDEwICsxLDExIEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGJpZ21lbXRlc3QsIF80RwogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGltcG9ydCBvcworaW1wb3J0IHJhbmRvbQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIApAQCAtMjEsOSArMjIsMzggQEAKIAogY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICJCYXNlIGZvciBvdGhlciB0ZXN0Y2FzZXMuIgotICAgIFRFWFQgPSBiJ3Jvb3Q6eDowOjA6cm9vdDovcm9vdDovYmluL2Jhc2hcbmJpbjp4OjE6MTpiaW46L2JpbjpcbmRhZW1vbjp4OjI6MjpkYWVtb246L3NiaW46XG5hZG06eDozOjQ6YWRtOi92YXIvYWRtOlxubHA6eDo0Ojc6bHA6L3Zhci9zcG9vbC9scGQ6XG5zeW5jOng6NTowOnN5bmM6L3NiaW46L2Jpbi9zeW5jXG5zaHV0ZG93bjp4OjY6MDpzaHV0ZG93bjovc2Jpbjovc2Jpbi9zaHV0ZG93blxuaGFsdDp4Ojc6MDpoYWx0Oi9zYmluOi9zYmluL2hhbHRcbm1haWw6eDo4OjEyOm1haWw6L3Zhci9zcG9vbC9tYWlsOlxubmV3czp4Ojk6MTM6bmV3czovdmFyL3Nwb29sL25ld3M6XG51dWNwOng6MTA6MTQ6dXVjcDovdmFyL3Nwb29sL3V1Y3A6XG5vcGVyYXRvcjp4OjExOjA6b3BlcmF0b3I6L3Jvb3Q6XG5nYW1lczp4OjEyOjEwMDpnYW1lczovdXNyL2dhbWVzOlxuZ29waGVyOng6MTM6MzA6Z29waGVyOi91c3IvbGliL2dvcGhlci1kYXRhOlxuZnRwOng6MTQ6NTA6RlRQIFVzZXI6L3Zhci9mdHA6L2Jpbi9iYXNoXG5ub2JvZHk6eDo2NTUzNDo2NTUzNDpOb2JvZHk6L2hvbWU6XG5wb3N0Zml4Ong6MTAwOjEwMTpwb3N0Zml4Oi92YXIvc3Bvb2wvcG9zdGZpeDpcbm5pZW1leWVyOng6NTAwOjUwMDo6L2hvbWUvbmllbWV5ZXI6L2Jpbi9iYXNoXG5wb3N0Z3Jlczp4OjEwMToxMDI6UG9zdGdyZVNRTCBTZXJ2ZXI6L3Zhci9saWIvcGdzcWw6L2Jpbi9iYXNoXG5teXNxbDp4OjEwMjoxMDM6TXlTUUwgc2VydmVyOi92YXIvbGliL215c3FsOi9iaW4vYmFzaFxud3d3Ong6MTAzOjEwNDo6L3Zhci93d3c6L2Jpbi9mYWxzZVxuJworICAgIFRFWFRfTElORVMgPSBbCisgICAgICAgIGIncm9vdDp4OjA6MDpyb290Oi9yb290Oi9iaW4vYmFzaFxuJywKKyAgICAgICAgYidiaW46eDoxOjE6YmluOi9iaW46XG4nLAorICAgICAgICBiJ2RhZW1vbjp4OjI6MjpkYWVtb246L3NiaW46XG4nLAorICAgICAgICBiJ2FkbTp4OjM6NDphZG06L3Zhci9hZG06XG4nLAorICAgICAgICBiJ2xwOng6NDo3OmxwOi92YXIvc3Bvb2wvbHBkOlxuJywKKyAgICAgICAgYidzeW5jOng6NTowOnN5bmM6L3NiaW46L2Jpbi9zeW5jXG4nLAorICAgICAgICBiJ3NodXRkb3duOng6NjowOnNodXRkb3duOi9zYmluOi9zYmluL3NodXRkb3duXG4nLAorICAgICAgICBiJ2hhbHQ6eDo3OjA6aGFsdDovc2Jpbjovc2Jpbi9oYWx0XG4nLAorICAgICAgICBiJ21haWw6eDo4OjEyOm1haWw6L3Zhci9zcG9vbC9tYWlsOlxuJywKKyAgICAgICAgYiduZXdzOng6OToxMzpuZXdzOi92YXIvc3Bvb2wvbmV3czpcbicsCisgICAgICAgIGIndXVjcDp4OjEwOjE0OnV1Y3A6L3Zhci9zcG9vbC91dWNwOlxuJywKKyAgICAgICAgYidvcGVyYXRvcjp4OjExOjA6b3BlcmF0b3I6L3Jvb3Q6XG4nLAorICAgICAgICBiJ2dhbWVzOng6MTI6MTAwOmdhbWVzOi91c3IvZ2FtZXM6XG4nLAorICAgICAgICBiJ2dvcGhlcjp4OjEzOjMwOmdvcGhlcjovdXNyL2xpYi9nb3BoZXItZGF0YTpcbicsCisgICAgICAgIGInZnRwOng6MTQ6NTA6RlRQIFVzZXI6L3Zhci9mdHA6L2Jpbi9iYXNoXG4nLAorICAgICAgICBiJ25vYm9keTp4OjY1NTM0OjY1NTM0Ok5vYm9keTovaG9tZTpcbicsCisgICAgICAgIGIncG9zdGZpeDp4OjEwMDoxMDE6cG9zdGZpeDovdmFyL3Nwb29sL3Bvc3RmaXg6XG4nLAorICAgICAgICBiJ25pZW1leWVyOng6NTAwOjUwMDo6L2hvbWUvbmllbWV5ZXI6L2Jpbi9iYXNoXG4nLAorICAgICAgICBiJ3Bvc3RncmVzOng6MTAxOjEwMjpQb3N0Z3JlU1FMIFNlcnZlcjovdmFyL2xpYi9wZ3NxbDovYmluL2Jhc2hcbicsCisgICAgICAgIGInbXlzcWw6eDoxMDI6MTAzOk15U1FMIHNlcnZlcjovdmFyL2xpYi9teXNxbDovYmluL2Jhc2hcbicsCisgICAgICAgIGInd3d3Ong6MTAzOjEwNDo6L3Zhci93d3c6L2Jpbi9mYWxzZVxuJywKKyAgICAgICAgXQorICAgIFRFWFQgPSBiJycuam9pbihURVhUX0xJTkVTKQogICAgIERBVEEgPSBiJ0JaaDkxQVkmU1kuXHhjOE5ceDE4XHgwMFx4MDE+X1x4ODBceDAwXHgxMEBceDAyXHhmZlx4ZjBceDAxXHgwN25ceDAwP1x4ZTdceGZmXHhlMDBceDAxXHg5OVx4YWFceDAwXHhjMFx4MDNGXHg4Nlx4OGMjJlx4ODNGXHg5YVx4MDNceDA2XHhhNlx4ZDBceGE2XHg5M01ceDBmUVx4YTdceGE4XHgwNlx4ODA0aGhceDEyJFx4MTFceGE0aTRceGYxNFNceGQyPFFceGI1XHgwZkhceGQzXHhkNFx4ZGRceGQ1XHg4N1x4YmJceGY4XHg5NFxyXHg4Zlx4YWZJXHgxMlx4ZTFceGM5XHhmOC9FXHgwMHB1XHg4OVx4MTJdXHhjOVx4YmJETFxuUVx4MGVcdDFceDEyXHhkZlx4YTBceGMwXHg5N1x4YWMyTzlceDg5XHgxM1x4OTRceDBlXHgxYzdceDBlZFx4OTVJXHgwY1x4YWFKXHhhNFx4MThMXHgxMFx4MDUjXHg5Y1x4YWZceGJhXHhiYy9ceDk3XHg4YSNDXHhjOFx4ZTFceDhjV1x4ZjlceGUyXHhkMFx4ZDZNXHhhN1x4OGJYYTxlXHg4NHRceGNiTFx4YjNceGE3XHhkOVx4Y2RceGQxXHhjYlx4ODQuXHhhZlx4YjNceGFiXHhhYlx4YWRgbn1ceGEwbGhcdEUsXHg4ZVpceDE1XHgxN1ZIPlx4ODhceGU1XHhjZDlnZDZceDBiXG5ceGU5XHg5Ylx4ZDVceDhhXHg5OVx4ZjdceDA4LktceDhldlx4ZmJceGY3eHdceGJiXHhkZlx4YTFceDkyXHhmMVx4ZGR8LyI7XHhhMlx4YmFceDlmXHhkNVx4YjEjQVx4YjZceGY2XHhiM29ceGM5XHhjNXlcXFx4ZWJPXHhlN1x4ODVceDlhXHhiY1x4YjZmOFx4OTUyXHhkNVx4ZDciJVx4ODk+VixceGY3XHhhNnpceGUyXHg5Zlx4YTNceGRmXHgxMVx4MTEiXHhkNkUpSVx4YTlceDEzXlx4Y2FceGYzclx4ZDBceDAzVVx4OTIyXHhmMjZceGVjXHhiNlx4ZWRceDhiXHhjM1VceDEzXHg5ZFx4YzVceDE3MFx4YTRceGZhXlx4OTJceGFjREZceDhhXHg5N1x4ZDZceDE5XHhmZVx4ZGRceGI4XHhiZFx4MWFceDlhXHgxOVx4YTNceDgwYW5rUlx4OGJceGU1XHhkODNdXHhhOVx4YzZceDA4XHg4MmZceGY2XHhiOSI2bCRceGI4akBceGMwXHg4YVx4YjBsMS4uXHhiYWtceDgzbHNceDE1XHhiY1x4ZjRceGMxXHgxM1x4YmVceGY4RVx4YjhceDlkXHJceGE4XHg5ZGtceDg0XHhkM25ceGZhXHhhY1FceDA3XHhiMSV5XHhhYXZceGI0XHgwOFx4ZTB6XHgxYlx4MTZceGY1XHgwNFx4ZTlceGNjXHhiOVx4MDh6XHgxZW43LkdceGZjXVx4YzlceDE0XHhlMUJAXHhiYiE4YCcKLSAgICBEQVRBX0NSTEYgPSBiJ0JaaDkxQVkmU1lceGFlelx4YmJOXHgwMFx4MDFIXHhkZlx4ODBceDAwXHgxMkBceDAyXHhmZlx4ZjBceDAxXHgwN25ceDAwP1x4ZTdceGZmXHhlMEBceDAxXHhiY1x4YzZgXHg4NipceDhkPU1ceGE5XHg5YVx4ODZceGQwTEBceDBmSVx4YTYhXHhhMVx4MTNceGM4XHg4OGpkaVx4OGRAXHgwM0BceDFhXHgxYVx4MGNceDBjXHg4MyBceDAwXHhjNGgyXHgxOVx4MDFceDgyRFx4ODRlXHRceGU4XHg5OVx4ODlceDE5XHgxYWhceDAwXHJceDFhXHgxMVx4YWZceDliXHgwZkdceGY1KFx4MWJceDFmP1x0XHgxMlx4Y2ZceGI1XHhmY1x4OTVFXHgwMHBzXHg4OVx4MTJeXHhhNFx4ZGRceGEyJlx4MDUoXHg4N1x4MDRceDk4XHg4OXVceGU0MCVceGI2XHgxOVwnXHg4Y1x4YzRceDg5XHhjYVx4MDdceDBlXHgxYiFceDkxVUlGVSVDXHg5OTQhRElceGQyXHhmYVx4ZjBceGYxTjhXXHhkZVx4MTNBXHhmNVx4OWNyJT9ceDlmMztJNDVBXHhkMVx4OGJUXHhiMTxsXHhiYVx4Y2JfXHhjMDB4WVx4MTdyXHgxN1x4ODhceDA4XHgwOEBceGEwXHJ5QFx4MTBceDA0JClgXHhmMlx4Y2VceDg5elx4YjBzXHhlY1x4OWIuaVdceDlkXHg4MVx4YjUtK3RceDlmXHgxYVwnXHg5N2RCXHhmNXhceGI1XHhiZS5bLlx4ZDdceDBlXHg4MVx4ZTdceDA4XHgxY05gXHg4OFx4MTBceGNhXHg4N1x4YzMhIlx4ODBceDkyUlx4YTEvXHhkMVx4YzBceGU2bWZceGFjXHhiZFx4OTlceGNjYVx4YjNceDg3ODA+XHhhNFx4YzdceDhkXHgxYVxcIlx4YWRceGExXHhhYnlCZ1x4MTVceGI5bFx4ODhceDg4XHg5MWsiXHg5NFx4YTRceGQ0XHg4OVx4YWUqXHhhNlx4MGJceDEwXHgwY1x4ZDZceGQ0bVx4ZTg2XHhlY1x4YjVqXHg4YVx4ODZqXCc7XHhjYS5ceDAxSVx4ZjJceGFhSlx4ZThceDg4XHg4Y1UrdDNceGZiXHgwY1xuXHhhMzNceDEzcjJcclx4MTZceGUwXHhiMyhceGJmXHgxZFx4ODNyXHhlN01ceGYwRFx4MTM2NVx4ZDhceDg4XHhkM1x4YTRceDkyXHhjYjJceDA2XHgwNFxcXHhjMVx4YjBceGVhLy9ceGJlayZceGQ4XHhlNit0XHhlNVx4YTFceDEzXHhhZGFceDE2XHhkZXI1InddXHhhMmlceGI3W1x4OTdSIFx4ZTJJVFx4Y2Q7Wlx4MDRkazRceGFkXHg4YVx0XHhkM1x4ODF6XHgxMFx4ZjE6XmBceGFiXHgxZlx4YzVceGRjXHg5MU5ceDE0JCtceDllXHhhZVx4ZDNceDgwJworCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVuYW1lID0gVEVTVEZOCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYuZmlsZW5hbWUpOgorICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuZmlsZW5hbWUpCiAKICAgICBpZiBoYXNfY21kbGluZV9idW56aXAyOgogICAgICAgICBkZWYgZGVjb21wcmVzcyhzZWxmLCBkYXRhKToKQEAgLTQ3LDkwICs3NywxNDkgQEAKIGNsYXNzIEJaMkZpbGVUZXN0KEJhc2VUZXN0KToKICAgICAiVGVzdCBCWjJGaWxlIHR5cGUgbWlzY2VsbGFuZW91cyBtZXRob2RzLiIKIAotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5maWxlbmFtZSA9IFRFU1RGTgotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmZpbGVuYW1lKToKLSAgICAgICAgICAgIG9zLnVubGluayhzZWxmLmZpbGVuYW1lKQotCi0gICAgZGVmIGNyZWF0ZVRlbXBGaWxlKHNlbGYsIGNybGY9MCk6CisgICAgZGVmIGNyZWF0ZVRlbXBGaWxlKHNlbGYsIHN0cmVhbXM9MSk6CiAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgotICAgICAgICAgICAgaWYgY3JsZjoKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5EQVRBX0NSTEYKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuREFUQQotICAgICAgICAgICAgZi53cml0ZShkYXRhKQorICAgICAgICAgICAgZi53cml0ZShzZWxmLkRBVEEgKiBzdHJlYW1zKQorCisgICAgZGVmIHRlc3RCYWRBcmdzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKDEyMy40NTYpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCAieiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCAicngiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQloyRmlsZSgiL2Rldi9udWxsIiwgInJidCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCBjb21wcmVzc2xldmVsPTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCBjb21wcmVzc2xldmVsPTEwKQogCiAgICAgZGVmIHRlc3RSZWFkKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZCgpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0UmVhZE11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCAqIDUpCisKKyAgICBkZWYgdGVzdFJlYWRNb25rZXlNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgIyBUZXN0IEJaMkZpbGUucmVhZCgpIG9uIGEgbXVsdGktc3RyZWFtIGFyY2hpdmUgd2hlcmUgYSBzdHJlYW0KKyAgICAgICAgIyBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kIG9mIHRoZSByYXcgcmVhZCBidWZmZXIuCisgICAgICAgIGJ1ZmZlcl9zaXplID0gYnoyLl9CVUZGRVJfU0laRQorICAgICAgICBiejIuX0JVRkZFUl9TSVpFID0gbGVuKHNlbGYuREFUQSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQgKiA1KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyLl9CVUZGRVJfU0laRSA9IGJ1ZmZlcl9zaXplCisKICAgICBkZWYgdGVzdFJlYWQwKHNlbGYpOgotICAgICAgICAjIFRlc3QgQkJaMkZpbGUucmVhZCgwKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgwKSwgYiIiKQogCiAgICAgZGVmIHRlc3RSZWFkQ2h1bmsxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnJlYWQoKSBpbiBjaHVua3Mgb2YgMTAgYnl0ZXMiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHRleHQgPSBiJycKLSAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIHN0ciA9IGJ6MmYucmVhZCgxMCkKICAgICAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIHRleHQgKz0gc3RyCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0UmVhZENodW5rMTBNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgdGV4dCA9IGInJworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBzdHIgPSBiejJmLnJlYWQoMTApCisgICAgICAgICAgICAgICAgaWYgbm90IHN0cjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICB0ZXh0ICs9IHN0cgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQgKiA1KQorCiAgICAgZGVmIHRlc3RSZWFkMTAwKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZCgxMDApIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgxMDApLCBzZWxmLlRFWFRbOjEwMF0pCiAKKyAgICBkZWYgdGVzdFBlZWsoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHBkYXRhID0gYnoyZi5wZWVrKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHBkYXRhKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLlRFWFQuc3RhcnRzd2l0aChwZGF0YSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCisKKyAgICBkZWYgdGVzdFJlYWRJbnRvKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBuID0gMTI4CisgICAgICAgICAgICBiID0gYnl0ZWFycmF5KG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGludG8oYiksIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYuVEVYVFs6bl0pCisgICAgICAgICAgICBuID0gbGVuKHNlbGYuVEVYVCkgLSBuCisgICAgICAgICAgICBiID0gYnl0ZWFycmF5KGxlbihzZWxmLlRFWFQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRpbnRvKGIpLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiWzpuXSwgc2VsZi5URVhUWy1uOl0pCisKICAgICBkZWYgdGVzdFJlYWRMaW5lKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZGxpbmUoKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWRsaW5lLCBOb25lKQotICAgICAgICAgICAgc2lvID0gQnl0ZXNJTyhzZWxmLlRFWFQpCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBzaW8ucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLlRFWFRfTElORVM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lKCksIGxpbmUpCisKKyAgICBkZWYgdGVzdFJlYWRMaW5lTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkbGluZSwgTm9uZSkKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuVEVYVF9MSU5FUyAqIDU6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lKCksIGxpbmUpCiAKICAgICBkZWYgdGVzdFJlYWRMaW5lcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnJlYWRsaW5lcygpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZGxpbmVzLCBOb25lKQotICAgICAgICAgICAgc2lvID0gQnl0ZXNJTyhzZWxmLlRFWFQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmVzKCksIHNpby5yZWFkbGluZXMoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZXMoKSwgc2VsZi5URVhUX0xJTkVTKQorCisgICAgZGVmIHRlc3RSZWFkTGluZXNNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWRsaW5lcywgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZXMoKSwgc2VsZi5URVhUX0xJTkVTICogNSkKIAogICAgIGRlZiB0ZXN0SXRlcmF0b3Ioc2VsZik6Ci0gICAgICAgICMgIlRlc3QgaXRlcihCWjJGaWxlKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgotICAgICAgICAgICAgc2lvID0gQnl0ZXNJTyhzZWxmLlRFWFQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihiejJmKSksIHNpby5yZWFkbGluZXMoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKGJ6MmYpKSwgc2VsZi5URVhUX0xJTkVTKQorCisgICAgZGVmIHRlc3RJdGVyYXRvck11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihiejJmKSksIHNlbGYuVEVYVF9MSU5FUyAqIDUpCiAKICAgICBkZWYgdGVzdENsb3NlZEl0ZXJhdG9yRGVhZGxvY2soc2VsZik6Ci0gICAgICAgICMgIlRlc3QgdGhhdCBpdGVyYXRpb24gb24gYSBjbG9zZWQgYnoyZmlsZSByZWxlYXNlcyB0aGUgbG9jay4iCi0gICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMzMDkKKyAgICAgICAgIyBJc3N1ZSAjMzMwOTogSXRlcmF0aW9uIG9uIGEgY2xvc2VkIEJaMkZpbGUgc2hvdWxkIHJlbGVhc2UgdGhlIGxvY2suCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICBiejJmID0gQloyRmlsZShzZWxmLmZpbGVuYW1lKQogICAgICAgICBiejJmLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5fX25leHRfXykKLSAgICAgICAgIyBUaGlzIGNhbGwgd2lsbCBkZWFkbG9jayBvZiB0aGUgYWJvdmUgLl9fbmV4dF9fIGNhbGwgZmFpbGVkIHRvCisgICAgICAgICMgVGhpcyBjYWxsIHdpbGwgZGVhZGxvY2sgaWYgdGhlIGFib3ZlIC5fX25leHRfXyBjYWxsIGZhaWxlZCB0bwogICAgICAgICAjIHJlbGVhc2UgdGhlIGxvY2suCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYucmVhZGxpbmVzKQogCiAgICAgZGVmIHRlc3RXcml0ZShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLndyaXRlKCkiCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYud3JpdGUpCiAgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKQEAgLTEzOCwxMCArMjI3LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGYucmVhZCgpKSwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3RXcml0ZUNodW5rczEwKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUud3JpdGUoKSB3aXRoIGNodW5rcyBvZiAxMCBieXRlcyIKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgYnoyZjoKICAgICAgICAgICAgIG4gPSAwCi0gICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICBzdHIgPSBzZWxmLlRFWFRbbioxMDoobisxKSoxMF0KICAgICAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTUwLDEzICsyMzgsMTkgQEAKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSksIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0V3JpdGVOb25EZWZhdWx0Q29tcHJlc3NMZXZlbChzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBiejIuY29tcHJlc3Moc2VsZi5URVhULCBjb21wcmVzc2xldmVsPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIsIGNvbXByZXNzbGV2ZWw9NSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RXcml0ZUxpbmVzKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUud3JpdGVsaW5lcygpIgogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInciKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLndyaXRlbGluZXMpCi0gICAgICAgICAgICBzaW8gPSBCeXRlc0lPKHNlbGYuVEVYVCkKLSAgICAgICAgICAgIGJ6MmYud3JpdGVsaW5lcyhzaW8ucmVhZGxpbmVzKCkpCi0gICAgICAgICMgcGF0Y2ggIzE1MzU1MDAKKyAgICAgICAgICAgIGJ6MmYud3JpdGVsaW5lcyhzZWxmLlRFWFRfTElORVMpCisgICAgICAgICMgSXNzdWUgIzE1MzU1MDA6IENhbGxpbmcgd3JpdGVsaW5lcygpIG9uIGEgY2xvc2VkIEJaMkZpbGUKKyAgICAgICAgIyBzaG91bGQgcmFpc2UgYW4gZXhjZXB0aW9uLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLndyaXRlbGluZXMsIFsiYSJdKQogICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGYucmVhZCgpKSwgc2VsZi5URVhUKQpAQCAtMTY5LDM5ICsyNjMsNzMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGJ6MmYud3JpdGUsIGIiYSIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBiejJmLndyaXRlbGluZXMsIFtiImEiXSkKIAorICAgIGRlZiB0ZXN0QXBwZW5kKHNlbGYpOgorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInciKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLndyaXRlKQorICAgICAgICAgICAgYnoyZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAiYSIpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYud3JpdGUpCisgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSksIHNlbGYuVEVYVCAqIDIpCisKICAgICBkZWYgdGVzdFNlZWtGb3J3YXJkKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUuc2VlaygxNTAsIDApIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYuc2VlaykKICAgICAgICAgICAgIGJ6MmYuc2VlaygxNTApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTUwOl0pCiAKKyAgICBkZWYgdGVzdFNlZWtGb3J3YXJkQWNyb3NzU3RyZWFtcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTIpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnNlZWspCisgICAgICAgICAgICBiejJmLnNlZWsobGVuKHNlbGYuVEVYVCkgKyAxNTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTUwOl0pCisKICAgICBkZWYgdGVzdFNlZWtCYWNrd2FyZHMoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKC0xNTAsIDEpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBiejJmLnJlYWQoNTAwKQogICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTAsIDEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbNTAwLTE1MDpdKQogCisgICAgZGVmIHRlc3RTZWVrQmFja3dhcmRzQWNyb3NzU3RyZWFtcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTIpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgcmVhZHRvID0gbGVuKHNlbGYuVEVYVCkgKyAxMDAKKyAgICAgICAgICAgIHdoaWxlIHJlYWR0byA+IDA6CisgICAgICAgICAgICAgICAgcmVhZHRvIC09IGxlbihiejJmLnJlYWQocmVhZHRvKSkKKyAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUWzEwMC0xNTA6XSArIHNlbGYuVEVYVCkKKwogICAgIGRlZiB0ZXN0U2Vla0JhY2t3YXJkc0Zyb21FbmQoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKC0xNTAsIDIpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBiejJmLnNlZWsoLTE1MCwgMikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFtsZW4oc2VsZi5URVhUKS0xNTA6XSkKIAorICAgIGRlZiB0ZXN0U2Vla0JhY2t3YXJkc0Zyb21FbmRBY3Jvc3NTdHJlYW1zKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9MikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLnNlZWsoLTEwMDAsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCAoc2VsZi5URVhUICogMilbLTEwMDA6XSkKKwogICAgIGRlZiB0ZXN0U2Vla1Bvc3RFbmQoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKDE1MDAwMCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIGJ6MmYuc2VlaygxNTAwMDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCBsZW4oc2VsZi5URVhUKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIGIiIikKIAorICAgIGRlZiB0ZXN0U2Vla1Bvc3RFbmRNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi50ZWxsKCksIGxlbihzZWxmLlRFWFQpICogNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIGIiIikKKwogICAgIGRlZiB0ZXN0U2Vla1Bvc3RFbmRUd2ljZShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoMTUwMDAwKSB0d2ljZSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKQEAgLTIwOSwyNyArMzM3LDEwOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgbGVuKHNlbGYuVEVYVCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBiIiIpCiAKKyAgICBkZWYgdGVzdFNlZWtQb3N0RW5kVHdpY2VNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKKyAgICAgICAgICAgIGJ6MmYuc2VlaygxNTAwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCBsZW4oc2VsZi5URVhUKSAqIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBiIiIpCisKICAgICBkZWYgdGVzdFNlZWtQcmVTdGFydChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoLTE1MCwgMCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0U2Vla1ByZVN0YXJ0TXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz0yKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCAqIDIpCisKKyAgICBkZWYgdGVzdEZpbGVubyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAncmInKSBhcyByYXdmOgorICAgICAgICAgICAgYnoyZiA9IEJaMkZpbGUocmF3ZikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYuZmlsZW5vKCksIHJhd2YuZmlsZW5vKCkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLmZpbGVubykKKworICAgIGRlZiB0ZXN0U2Vla2FibGUoc2VsZik6CisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oc2VsZi5EQVRBKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYuc2Vla2FibGUoKSkKKyAgICAgICAgICAgIGJ6MmYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnoyZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYuc2Vla2FibGUpCisKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTygpLCBtb2RlPSJ3IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiejJmLnNlZWthYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5zZWVrYWJsZSkKKworICAgICAgICBzcmMgPSBCeXRlc0lPKHNlbGYuREFUQSkKKyAgICAgICAgc3JjLnNlZWthYmxlID0gbGFtYmRhOiBGYWxzZQorICAgICAgICBiejJmID0gQloyRmlsZShzcmMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYuc2Vla2FibGUpCisKKyAgICBkZWYgdGVzdFJlYWRhYmxlKHNlbGYpOgorICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKHNlbGYuREFUQSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiejJmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBiejJmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYucmVhZGFibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLnJlYWRhYmxlKQorCisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oKSwgbW9kZT0idyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi5yZWFkYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYucmVhZGFibGUpCisKKyAgICBkZWYgdGVzdFdyaXRhYmxlKHNlbGYpOgorICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKHNlbGYuREFUQSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi53cml0YWJsZSgpKQorICAgICAgICAgICAgYnoyZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYud3JpdGFibGUpCisKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTygpLCBtb2RlPSJ3IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYud3JpdGFibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLndyaXRhYmxlKQorCiAgICAgZGVmIHRlc3RPcGVuRGVsKHNlbGYpOgotICAgICAgICAjICJUZXN0IG9wZW5pbmcgYW5kIGRlbGV0aW5nIGEgZmlsZSBtYW55IHRpbWVzIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMDApOgogICAgICAgICAgICAgbyA9IEJaMkZpbGUoc2VsZi5maWxlbmFtZSkKICAgICAgICAgICAgIGRlbCBvCiAKICAgICBkZWYgdGVzdE9wZW5Ob25leGlzdGVudChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBvcGVuaW5nIGEgbm9uZXhpc3RlbnQgZmlsZSIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgQloyRmlsZSwgIi9ub24vZXhpc3RlbnQiKQogCi0gICAgZGVmIHRlc3RCdWcxMTkxMDQzKHNlbGYpOgotICAgICAgICAjIHJlYWRsaW5lcygpIGZvciBmaWxlcyBjb250YWluaW5nIG5vIG5ld2xpbmUKKyAgICBkZWYgdGVzdFJlYWRsaW5lc05vTmV3bGluZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTE5MTA0MzogcmVhZGxpbmVzKCkgZmFpbHMgb24gYSBmaWxlIGNvbnRhaW5pbmcgbm8gbmV3bGluZS4KICAgICAgICAgZGF0YSA9IGInQlpoOTFBWSZTWVx4ZDliXHg4OV1ceDAwXHgwMFx4MDBceDAzXHg4MFx4MDRceDAwXHgwMlx4MDBceDBjXHgwMCBceDAwIVx4OWFoM01ceDEzPF1ceGM5XHgxNFx4ZTFCQ2VceDhhJXQnCiAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShkYXRhKQpAQCAtMjQxLDcgKzQ1MSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGxpbmVzLCBbYidUZXN0J10pCiAKICAgICBkZWYgdGVzdENvbnRleHRQcm90b2NvbChzZWxmKToKLSAgICAgICAgIyBCWjJGaWxlIHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wKICAgICAgICAgZiA9IE5vbmUKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGIieHh4IikKQEAgLTI2NCw3ICs0NzMsNyBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdFRocmVhZGluZyhzZWxmKToKLSAgICAgICAgIyBVc2luZyBhIEJaMkZpbGUgZnJvbSBzZXZlcmFsIHRocmVhZHMgZG9lc24ndCBkZWFkbG9jayAoaXNzdWUgIzcyMDUpLgorICAgICAgICAjIElzc3VlICM3MjA1OiBVc2luZyBhIEJaMkZpbGUgZnJvbSBzZXZlcmFsIHRocmVhZHMgc2hvdWxkbid0IGRlYWRsb2NrLgogICAgICAgICBkYXRhID0gYiIxIiAqIDIqKjIwCiAgICAgICAgIG50aHJlYWRzID0gMTAKICAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InKSBhcyBmOgpAQCAtMjc3LDIyICs0ODYsOTggQEAKICAgICAgICAgICAgIGZvciB0IGluIHRocmVhZHM6CiAgICAgICAgICAgICAgICAgdC5qb2luKCkKIAotICAgIGRlZiB0ZXN0TWl4ZWRJdGVyYXRpb25SZWFkcyhzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjODM5NzogbWl4ZWQgaXRlcmF0aW9uIGFuZCByZWFkcyBzaG91bGQgYmUgZm9yYmlkZGVuLgotICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICd3YicpIGFzIGY6Ci0gICAgICAgICAgICAjIFRoZSBpbnRlcm5hbCBidWZmZXIgc2l6ZSBpcyBoYXJkLXdpcmVkIHRvIDgxOTIgYnl0ZXMsIHdlIG11c3QKLSAgICAgICAgICAgICMgd3JpdGUgb3V0IG1vcmUgdGhhbiB0aGF0IGZvciB0aGUgdGVzdCB0byBzdG9wIGhhbGYgdGhyb3VnaAotICAgICAgICAgICAgIyB0aGUgYnVmZmVyLgotICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQgKiAxMDApCi0gICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKLSAgICAgICAgICAgIG5leHQoZikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGxpbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRsaW5lcykKKyAgICBkZWYgdGVzdFdpdGhvdXRUaHJlYWRpbmcoc2VsZik6CisgICAgICAgIGJ6MiA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgiYnoyIiwgYmxvY2tlZD0oInRocmVhZGluZyIsKSkKKyAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiImFiYyIpCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiYWJjIikKKworICAgIGRlZiB0ZXN0TWl4ZWRJdGVyYXRpb25BbmRSZWFkcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCisgICAgICAgIGxpbmVsZW4gPSBsZW4oc2VsZi5URVhUX0xJTkVTWzBdKQorICAgICAgICBoYWxmbGVuID0gbGluZWxlbiAvLyAyCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYucmVhZChoYWxmbGVuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGJ6MmYpLCBzZWxmLlRFWFRfTElORVNbMF1baGFsZmxlbjpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUW2xpbmVsZW46XSkKKyAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5yZWFkbGluZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYnoyZiksIHNlbGYuVEVYVF9MSU5FU1sxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZSgpLCBzZWxmLlRFWFRfTElORVNbMl0pCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYucmVhZGxpbmVzKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgbmV4dChiejJmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lcygpLCBbXSkKKworICAgIGRlZiB0ZXN0TXVsdGlTdHJlYW1PcmRlcmluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBvcmRlcmluZyBvZiBzdHJlYW1zIHdoZW4gcmVhZGluZyBhIG11bHRpLXN0cmVhbSBhcmNoaXZlLgorICAgICAgICBkYXRhMSA9IGIiZm9vIiAqIDEwMDAKKyAgICAgICAgZGF0YTIgPSBiImJhciIgKiAxMDAwCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLndyaXRlKGRhdGExKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgImEiKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi53cml0ZShkYXRhMikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBkYXRhMSArIGRhdGEyKQorCisgICAgZGVmIHRlc3RPcGVuQnl0ZXNGaWxlbmFtZShzZWxmKToKKyAgICAgICAgc3RyX2ZpbGVuYW1lID0gc2VsZi5maWxlbmFtZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlc19maWxlbmFtZSA9IHN0cl9maWxlbmFtZS5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRlbXBvcmFyeSBmaWxlIG5hbWUgbmVlZHMgdG8gYmUgQVNDSUkiKQorICAgICAgICB3aXRoIEJaMkZpbGUoYnl0ZXNfZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuREFUQSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKGJ5dGVzX2ZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5EQVRBKQorICAgICAgICAjIFNhbml0eSBjaGVjayB0aGF0IHdlIGFyZSBhY3R1YWxseSBvcGVyYXRpbmcgb24gdGhlIHJpZ2h0IGZpbGUuCisgICAgICAgIHdpdGggQloyRmlsZShzdHJfZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCisKKworICAgICMgVGVzdHMgZm9yIGEgQloyRmlsZSB3cmFwcGluZyBhbm90aGVyIGZpbGUgb2JqZWN0OgorCisgICAgZGVmIHRlc3RSZWFkQnl0ZXNJTyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKHNlbGYuREFUQSkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKGJpbykgYXMgYnoyZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJpby5jbG9zZWQpCisKKyAgICBkZWYgdGVzdFBlZWtCeXRlc0lPKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHBkYXRhID0gYnoyZi5wZWVrKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihwZGF0YSksIDApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuVEVYVC5zdGFydHN3aXRoKHBkYXRhKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCisKKyAgICBkZWYgdGVzdFdyaXRlQnl0ZXNJTyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKGJpbywgInciKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi53cml0ZSkKKyAgICAgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpKSwgc2VsZi5URVhUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uY2xvc2VkKQorCisgICAgZGVmIHRlc3RTZWVrRm9yd2FyZEJ5dGVzSU8oc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhzZWxmLkRBVEEpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShiaW8pIGFzIGJ6MmY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnNlZWspCisgICAgICAgICAgICAgICAgYnoyZi5zZWVrKDE1MCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTUwOl0pCisKKyAgICBkZWYgdGVzdFNlZWtCYWNrd2FyZHNCeXRlc0lPKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIGJ6MmYucmVhZCg1MDApCisgICAgICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTAsIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUWzUwMC0xNTA6XSkKIAogY2xhc3MgQloyQ29tcHJlc3NvclRlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0Q29tcHJlc3Moc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyQ29tcHJlc3Nvci5jb21wcmVzcygpL2ZsdXNoKCkiCiAgICAgICAgIGJ6MmMgPSBCWjJDb21wcmVzc29yKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJjLmNvbXByZXNzKQogICAgICAgICBkYXRhID0gYnoyYy5jb21wcmVzcyhzZWxmLlRFWFQpCkBAIC0zMDAsMTEgKzU4NSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhkYXRhKSwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3RDb21wcmVzc0NodW5rczEwKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkNvbXByZXNzb3IuY29tcHJlc3MoKS9mbHVzaCgpIHdpdGggY2h1bmtzIG9mIDEwIGJ5dGVzIgogICAgICAgICBiejJjID0gQloyQ29tcHJlc3NvcigpCiAgICAgICAgIG4gPSAwCiAgICAgICAgIGRhdGEgPSBiJycKLSAgICAgICAgd2hpbGUgMToKKyAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHN0ciA9IHNlbGYuVEVYVFtuKjEwOihuKzEpKjEwXQogICAgICAgICAgICAgaWYgbm90IHN0cjoKICAgICAgICAgICAgICAgICBicmVhawpAQCAtMzEzLDIzICs1OTcsMzggQEAKICAgICAgICAgZGF0YSArPSBiejJjLmZsdXNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoZGF0YSksIHNlbGYuVEVYVCkKIAorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdENvbXByZXNzNEcoc2VsZiwgc2l6ZSk6CisgICAgICAgICMgIlRlc3QgQloyQ29tcHJlc3Nvci5jb21wcmVzcygpL2ZsdXNoKCkgd2l0aCA+NEdpQiBpbnB1dCIKKyAgICAgICAgYnoyYyA9IEJaMkNvbXByZXNzb3IoKQorICAgICAgICBkYXRhID0gYiJ4IiAqIHNpemUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGJ6MmMuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgICAgIGNvbXByZXNzZWQgKz0gYnoyYy5mbHVzaCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkYXRhID0gTm9uZSAgIyBSZWxlYXNlIG1lbW9yeQorICAgICAgICBkYXRhID0gYnoyLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIHNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhLnN0cmlwKGIieCIpKSwgMCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRhdGEgPSBOb25lCisKIGNsYXNzIEJaMkRlY29tcHJlc3NvclRlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0X0NvbnN0cnVjdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEJaMkRlY29tcHJlc3NvciwgNDIpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3Moc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MoKSIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZC5kZWNvbXByZXNzKQogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NDaHVua3MxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcygpIHdpdGggY2h1bmtzIG9mIDEwIGJ5dGVzIgogICAgICAgICBiejJkID0gQloyRGVjb21wcmVzc29yKCkKICAgICAgICAgdGV4dCA9IGInJwogICAgICAgICBuID0gMAotICAgICAgICB3aGlsZSAxOgorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgc3RyID0gc2VsZi5EQVRBW24qMTA6KG4rMSkqMTBdCiAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0zMzgsNyArNjM3LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NVbnVzZWREYXRhKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgd2l0aCB1bnVzZWQgZGF0YSIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHVudXNlZF9kYXRhID0gYiJ0aGlzIGlzIHVudXNlZCBkYXRhIgogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSt1bnVzZWRfZGF0YSkKQEAgLTM0Niw0NCArNjQ0LDE1MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmQudW51c2VkX2RhdGEsIHVudXNlZF9kYXRhKQogCiAgICAgZGVmIHRlc3RFT0ZFcnJvcihzZWxmKToKLSAgICAgICAgIyAiQ2FsbGluZyBCWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcygpIGFmdGVyIEVPUyBtdXN0IHJhaXNlIEVPRkVycm9yIgogICAgICAgICBiejJkID0gQloyRGVjb21wcmVzc29yKCkKICAgICAgICAgdGV4dCA9IGJ6MmQuZGVjb21wcmVzcyhzZWxmLkRBVEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBiejJkLmRlY29tcHJlc3MsIGIiYW55dGhpbmciKQogCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0zKQorICAgIGRlZiB0ZXN0RGVjb21wcmVzczRHKHNlbGYsIHNpemUpOgorICAgICAgICAjICJUZXN0IEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgd2l0aCA+NEdpQiBpbnB1dCIKKyAgICAgICAgYmxvY2tzaXplID0gMTAgKiAxMDI0ICogMTAyNAorICAgICAgICBibG9jayA9IHJhbmRvbS5nZXRyYW5kYml0cyhibG9ja3NpemUgKiA4KS50b19ieXRlcyhibG9ja3NpemUsICdsaXR0bGUnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkYXRhID0gYmxvY2sgKiAoc2l6ZSAvLyBibG9ja3NpemUgKyAxKQorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGJ6Mi5jb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgICAgICBkZWNvbXByZXNzZWQgPSBiejJkLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkZWNvbXByZXNzZWQgPT0gZGF0YSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRhdGEgPSBOb25lCisgICAgICAgICAgICBjb21wcmVzc2VkID0gTm9uZQorICAgICAgICAgICAgZGVjb21wcmVzc2VkID0gTm9uZQogCi1jbGFzcyBGdW5jVGVzdChCYXNlVGVzdCk6Ci0gICAgIlRlc3QgbW9kdWxlIGZ1bmN0aW9ucyIKIAorY2xhc3MgQ29tcHJlc3NEZWNvbXByZXNzVGVzdChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3RDb21wcmVzcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBjb21wcmVzcygpIGZ1bmN0aW9uIgogICAgICAgICBkYXRhID0gYnoyLmNvbXByZXNzKHNlbGYuVEVYVCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoZGF0YSksIHNlbGYuVEVYVCkKIAogICAgIGRlZiB0ZXN0RGVjb21wcmVzcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBkZWNvbXByZXNzKCkgZnVuY3Rpb24iCiAgICAgICAgIHRleHQgPSBiejIuZGVjb21wcmVzcyhzZWxmLkRBVEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzRW1wdHkoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgZGVjb21wcmVzcygpIGZ1bmN0aW9uIHdpdGggZW1wdHkgc3RyaW5nIgogICAgICAgICB0ZXh0ID0gYnoyLmRlY29tcHJlc3MoYiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIGIiIikKIAogICAgIGRlZiB0ZXN0RGVjb21wcmVzc0luY29tcGxldGUoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgZGVjb21wcmVzcygpIGZ1bmN0aW9uIHdpdGggaW5jb21wbGV0ZSBkYXRhIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejIuZGVjb21wcmVzcywgc2VsZi5EQVRBWzotMTBdKQogCisgICAgZGVmIHRlc3REZWNvbXByZXNzTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHRleHQgPSBiejIuZGVjb21wcmVzcyhzZWxmLkRBVEEgKiA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuVEVYVCAqIDUpCisKKworY2xhc3MgT3BlblRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2JpbmFyeV9tb2RlcyhzZWxmKToKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgImFiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHNlbGYuVEVYVCAqIDIpCisKKyAgICBkZWYgdGVzdF9pbXBsaWNpdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBsaWNpdCBiaW5hcnkgbW9kZXMgKG5vICJiIiBvciAidCIgaW4gbW9kZSBzdHJpbmcpLgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgImEiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUICogMikKKworICAgIGRlZiB0ZXN0X3RleHRfbW9kZXMoc2VsZik6CisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHRleHRfbmF0aXZlX2VvbCA9IHRleHQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHRleHQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiYXQiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB0ZXh0X25hdGl2ZV9lb2wgKiAyKQorCisgICAgZGVmIHRlc3RfZmlsZW9iaihzZWxmKToKKyAgICAgICAgd2l0aCBiejIub3BlbihCeXRlc0lPKHNlbGYuREFUQSksICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihCeXRlc0lPKHNlbGYuREFUQSksICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oQnl0ZXNJTyhzZWxmLkRBVEEpLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2JhZF9wYXJhbXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbnZhbGlkIHBhcmFtZXRlciBjb21iaW5hdGlvbnMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid2J0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBlcnJvcnM9Imlnbm9yZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBuZXdsaW5lPSJcbiIpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG5vbi1kZWZhdWx0IGVuY29kaW5nLgorICAgICAgICB0ZXh0ID0gc2VsZi5URVhULmRlY29kZSgiYXNjaWkiKQorICAgICAgICB0ZXh0X25hdGl2ZV9lb2wgPSB0ZXh0LnJlcGxhY2UoIlxuIiwgb3MubGluZXNlcCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBlbmNvZGluZz0idXRmLTE2LWxlIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodGV4dCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJ1dGYtMTYtbGUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBlbmNvZGluZz0idXRmLTE2LWxlIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHRleHQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZ19lcnJvcl9oYW5kbGVyKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBub24tZGVmYXVsdCBlbmNvZGluZyBlcnJvciBoYW5kbGVyLgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGIiZm9vXHhmZmJhciIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBcCisgICAgICAgICAgICAgICAgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQorCisgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IiwgbmV3bGluZT0iXG4iKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIG5ld2xpbmU9IlxyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgW3RleHRdKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgQloyRmlsZVRlc3QsCiAgICAgICAgIEJaMkNvbXByZXNzb3JUZXN0LAogICAgICAgICBCWjJEZWNvbXByZXNzb3JUZXN0LAotICAgICAgICBGdW5jVGVzdAorICAgICAgICBDb21wcmVzc0RlY29tcHJlc3NUZXN0LAorICAgICAgICBPcGVuVGVzdCwKICAgICApCiAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQotCi0jIHZpbTp0cz00OnN3PTQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CmluZGV4IGQzMDkzYWMuLmUwZjYzOTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQpAQCAtNSw2ICs1LDE3IEBACiBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogaW1wb3J0IHRpbWUKIGltcG9ydCBsb2NhbGUKK2ltcG9ydCBzeXMKKworcmVzdWx0XzIwMDRfMDFfdGV4dCA9ICIiIgorICAgIEphbnVhcnkgMjAwNAorTW8gVHUgV2UgVGggRnIgU2EgU3UKKyAgICAgICAgICAxICAyICAzICA0CisgNSAgNiAgNyAgOCAgOSAxMCAxMQorMTIgMTMgMTQgMTUgMTYgMTcgMTgKKzE5IDIwIDIxIDIyIDIzIDI0IDI1CisyNiAyNyAyOCAyOSAzMCAzMQorIiIiCiAKIHJlc3VsdF8yMDA0X3RleHQgPSAiIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDA0CkBAIC00NSwxMSArNTYsMTEgQEAKICIiIgogCiByZXN1bHRfMjAwNF9odG1sID0gIiIiCi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJhc2NpaSI/PgorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iJShlKXMiPz4KIDwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KIDxodG1sPgogPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1hc2NpaSIgLz4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PSUoZSlzIiAvPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY2FsZW5kYXIuY3NzIiAvPgogPHRpdGxlPkNhbGVuZGFyIGZvciAyMDA0PC90aXRsZT4KIDwvaGVhZD4KQEAgLTE2OSw2ICsxODAsMTM1IEBACiA8L2h0bWw+CiAiIiIKIAorcmVzdWx0XzIwMDRfZGF5cyA9IFsKKyAgICBbW1swLCAwLCAwLCAxLCAyLCAzLCA0XSwKKyAgICAgIFs1LCA2LCA3LCA4LCA5LCAxMCwgMTFdLAorICAgICAgWzEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4XSwKKyAgICAgIFsxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNV0sCisgICAgICBbMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMF1dLAorICAgICBbWzAsIDAsIDAsIDAsIDAsIDAsIDFdLAorICAgICAgWzIsIDMsIDQsIDUsIDYsIDcsIDhdLAorICAgICAgWzksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTVdLAorICAgICAgWzE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyXSwKKyAgICAgIFsyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV1dLAorICAgICBbWzEsIDIsIDMsIDQsIDUsIDYsIDddLAorICAgICAgWzgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNF0sCisgICAgICBbMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjFdLAorICAgICAgWzIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4XSwKKyAgICAgIFsyOSwgMzAsIDMxLCAwLCAwLCAwLCAwXV1dLAorICAgIFtbWzAsIDAsIDAsIDEsIDIsIDMsIDRdLAorICAgICAgWzUsIDYsIDcsIDgsIDksIDEwLCAxMV0sCisgICAgICBbMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThdLAorICAgICAgWzE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1XSwKKyAgICAgIFsyNiwgMjcsIDI4LCAyOSwgMzAsIDAsIDBdXSwKKyAgICAgW1swLCAwLCAwLCAwLCAwLCAxLCAyXSwKKyAgICAgIFszLCA0LCA1LCA2LCA3LCA4LCA5XSwKKyAgICAgIFsxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNl0sCisgICAgICBbMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjNdLAorICAgICAgWzI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwXSwKKyAgICAgIFszMSwgMCwgMCwgMCwgMCwgMCwgMF1dLAorICAgICBbWzAsIDEsIDIsIDMsIDQsIDUsIDZdLAorICAgICAgWzcsIDgsIDksIDEwLCAxMSwgMTIsIDEzXSwKKyAgICAgIFsxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMF0sCisgICAgICBbMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjddLAorICAgICAgWzI4LCAyOSwgMzAsIDAsIDAsIDAsIDBdXV0sCisgICAgW1tbMCwgMCwgMCwgMSwgMiwgMywgNF0sCisgICAgICBbNSwgNiwgNywgOCwgOSwgMTAsIDExXSwKKyAgICAgIFsxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOF0sCisgICAgICBbMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjVdLAorICAgICAgWzI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDBdXSwKKyAgICAgW1swLCAwLCAwLCAwLCAwLCAwLCAxXSwKKyAgICAgIFsyLCAzLCA0LCA1LCA2LCA3LCA4XSwKKyAgICAgIFs5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1XSwKKyAgICAgIFsxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMl0sCisgICAgICBbMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjldLAorICAgICAgWzMwLCAzMSwgMCwgMCwgMCwgMCwgMF1dLAorICAgICBbWzAsIDAsIDEsIDIsIDMsIDQsIDVdLAorICAgICAgWzYsIDcsIDgsIDksIDEwLCAxMSwgMTJdLAorICAgICAgWzEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5XSwKKyAgICAgIFsyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNl0sCisgICAgICBbMjcsIDI4LCAyOSwgMzAsIDAsIDAsIDBdXV0sCisgICAgW1tbMCwgMCwgMCwgMCwgMSwgMiwgM10sCisgICAgICBbNCwgNSwgNiwgNywgOCwgOSwgMTBdLAorICAgICAgWzExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3XSwKKyAgICAgIFsxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNF0sCisgICAgICBbMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzFdXSwKKyAgICAgW1sxLCAyLCAzLCA0LCA1LCA2LCA3XSwKKyAgICAgIFs4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTRdLAorICAgICAgWzE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxXSwKKyAgICAgIFsyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOF0sCisgICAgICBbMjksIDMwLCAwLCAwLCAwLCAwLCAwXV0sCisgICAgIFtbMCwgMCwgMSwgMiwgMywgNCwgNV0sCisgICAgICBbNiwgNywgOCwgOSwgMTAsIDExLCAxMl0sCisgICAgICBbMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTldLAorICAgICAgWzIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2XSwKKyAgICAgIFsyNywgMjgsIDI5LCAzMCwgMzEsIDAsIDBdXV0KK10KKworcmVzdWx0XzIwMDRfZGF0ZXMgPSBcCisgICAgW1tbJzEyLzI5LzAzIDEyLzMwLzAzIDEyLzMxLzAzIDAxLzAxLzA0IDAxLzAyLzA0IDAxLzAzLzA0IDAxLzA0LzA0JywKKyAgICAgICAnMDEvMDUvMDQgMDEvMDYvMDQgMDEvMDcvMDQgMDEvMDgvMDQgMDEvMDkvMDQgMDEvMTAvMDQgMDEvMTEvMDQnLAorICAgICAgICcwMS8xMi8wNCAwMS8xMy8wNCAwMS8xNC8wNCAwMS8xNS8wNCAwMS8xNi8wNCAwMS8xNy8wNCAwMS8xOC8wNCcsCisgICAgICAgJzAxLzE5LzA0IDAxLzIwLzA0IDAxLzIxLzA0IDAxLzIyLzA0IDAxLzIzLzA0IDAxLzI0LzA0IDAxLzI1LzA0JywKKyAgICAgICAnMDEvMjYvMDQgMDEvMjcvMDQgMDEvMjgvMDQgMDEvMjkvMDQgMDEvMzAvMDQgMDEvMzEvMDQgMDIvMDEvMDQnXSwKKyAgICAgIFsnMDEvMjYvMDQgMDEvMjcvMDQgMDEvMjgvMDQgMDEvMjkvMDQgMDEvMzAvMDQgMDEvMzEvMDQgMDIvMDEvMDQnLAorICAgICAgICcwMi8wMi8wNCAwMi8wMy8wNCAwMi8wNC8wNCAwMi8wNS8wNCAwMi8wNi8wNCAwMi8wNy8wNCAwMi8wOC8wNCcsCisgICAgICAgJzAyLzA5LzA0IDAyLzEwLzA0IDAyLzExLzA0IDAyLzEyLzA0IDAyLzEzLzA0IDAyLzE0LzA0IDAyLzE1LzA0JywKKyAgICAgICAnMDIvMTYvMDQgMDIvMTcvMDQgMDIvMTgvMDQgMDIvMTkvMDQgMDIvMjAvMDQgMDIvMjEvMDQgMDIvMjIvMDQnLAorICAgICAgICcwMi8yMy8wNCAwMi8yNC8wNCAwMi8yNS8wNCAwMi8yNi8wNCAwMi8yNy8wNCAwMi8yOC8wNCAwMi8yOS8wNCddLAorICAgICAgWycwMy8wMS8wNCAwMy8wMi8wNCAwMy8wMy8wNCAwMy8wNC8wNCAwMy8wNS8wNCAwMy8wNi8wNCAwMy8wNy8wNCcsCisgICAgICAgJzAzLzA4LzA0IDAzLzA5LzA0IDAzLzEwLzA0IDAzLzExLzA0IDAzLzEyLzA0IDAzLzEzLzA0IDAzLzE0LzA0JywKKyAgICAgICAnMDMvMTUvMDQgMDMvMTYvMDQgMDMvMTcvMDQgMDMvMTgvMDQgMDMvMTkvMDQgMDMvMjAvMDQgMDMvMjEvMDQnLAorICAgICAgICcwMy8yMi8wNCAwMy8yMy8wNCAwMy8yNC8wNCAwMy8yNS8wNCAwMy8yNi8wNCAwMy8yNy8wNCAwMy8yOC8wNCcsCisgICAgICAgJzAzLzI5LzA0IDAzLzMwLzA0IDAzLzMxLzA0IDA0LzAxLzA0IDA0LzAyLzA0IDA0LzAzLzA0IDA0LzA0LzA0J11dLAorICAgICBbWycwMy8yOS8wNCAwMy8zMC8wNCAwMy8zMS8wNCAwNC8wMS8wNCAwNC8wMi8wNCAwNC8wMy8wNCAwNC8wNC8wNCcsCisgICAgICAgJzA0LzA1LzA0IDA0LzA2LzA0IDA0LzA3LzA0IDA0LzA4LzA0IDA0LzA5LzA0IDA0LzEwLzA0IDA0LzExLzA0JywKKyAgICAgICAnMDQvMTIvMDQgMDQvMTMvMDQgMDQvMTQvMDQgMDQvMTUvMDQgMDQvMTYvMDQgMDQvMTcvMDQgMDQvMTgvMDQnLAorICAgICAgICcwNC8xOS8wNCAwNC8yMC8wNCAwNC8yMS8wNCAwNC8yMi8wNCAwNC8yMy8wNCAwNC8yNC8wNCAwNC8yNS8wNCcsCisgICAgICAgJzA0LzI2LzA0IDA0LzI3LzA0IDA0LzI4LzA0IDA0LzI5LzA0IDA0LzMwLzA0IDA1LzAxLzA0IDA1LzAyLzA0J10sCisgICAgICBbJzA0LzI2LzA0IDA0LzI3LzA0IDA0LzI4LzA0IDA0LzI5LzA0IDA0LzMwLzA0IDA1LzAxLzA0IDA1LzAyLzA0JywKKyAgICAgICAnMDUvMDMvMDQgMDUvMDQvMDQgMDUvMDUvMDQgMDUvMDYvMDQgMDUvMDcvMDQgMDUvMDgvMDQgMDUvMDkvMDQnLAorICAgICAgICcwNS8xMC8wNCAwNS8xMS8wNCAwNS8xMi8wNCAwNS8xMy8wNCAwNS8xNC8wNCAwNS8xNS8wNCAwNS8xNi8wNCcsCisgICAgICAgJzA1LzE3LzA0IDA1LzE4LzA0IDA1LzE5LzA0IDA1LzIwLzA0IDA1LzIxLzA0IDA1LzIyLzA0IDA1LzIzLzA0JywKKyAgICAgICAnMDUvMjQvMDQgMDUvMjUvMDQgMDUvMjYvMDQgMDUvMjcvMDQgMDUvMjgvMDQgMDUvMjkvMDQgMDUvMzAvMDQnLAorICAgICAgICcwNS8zMS8wNCAwNi8wMS8wNCAwNi8wMi8wNCAwNi8wMy8wNCAwNi8wNC8wNCAwNi8wNS8wNCAwNi8wNi8wNCddLAorICAgICAgWycwNS8zMS8wNCAwNi8wMS8wNCAwNi8wMi8wNCAwNi8wMy8wNCAwNi8wNC8wNCAwNi8wNS8wNCAwNi8wNi8wNCcsCisgICAgICAgJzA2LzA3LzA0IDA2LzA4LzA0IDA2LzA5LzA0IDA2LzEwLzA0IDA2LzExLzA0IDA2LzEyLzA0IDA2LzEzLzA0JywKKyAgICAgICAnMDYvMTQvMDQgMDYvMTUvMDQgMDYvMTYvMDQgMDYvMTcvMDQgMDYvMTgvMDQgMDYvMTkvMDQgMDYvMjAvMDQnLAorICAgICAgICcwNi8yMS8wNCAwNi8yMi8wNCAwNi8yMy8wNCAwNi8yNC8wNCAwNi8yNS8wNCAwNi8yNi8wNCAwNi8yNy8wNCcsCisgICAgICAgJzA2LzI4LzA0IDA2LzI5LzA0IDA2LzMwLzA0IDA3LzAxLzA0IDA3LzAyLzA0IDA3LzAzLzA0IDA3LzA0LzA0J11dLAorICAgICBbWycwNi8yOC8wNCAwNi8yOS8wNCAwNi8zMC8wNCAwNy8wMS8wNCAwNy8wMi8wNCAwNy8wMy8wNCAwNy8wNC8wNCcsCisgICAgICAgJzA3LzA1LzA0IDA3LzA2LzA0IDA3LzA3LzA0IDA3LzA4LzA0IDA3LzA5LzA0IDA3LzEwLzA0IDA3LzExLzA0JywKKyAgICAgICAnMDcvMTIvMDQgMDcvMTMvMDQgMDcvMTQvMDQgMDcvMTUvMDQgMDcvMTYvMDQgMDcvMTcvMDQgMDcvMTgvMDQnLAorICAgICAgICcwNy8xOS8wNCAwNy8yMC8wNCAwNy8yMS8wNCAwNy8yMi8wNCAwNy8yMy8wNCAwNy8yNC8wNCAwNy8yNS8wNCcsCisgICAgICAgJzA3LzI2LzA0IDA3LzI3LzA0IDA3LzI4LzA0IDA3LzI5LzA0IDA3LzMwLzA0IDA3LzMxLzA0IDA4LzAxLzA0J10sCisgICAgICBbJzA3LzI2LzA0IDA3LzI3LzA0IDA3LzI4LzA0IDA3LzI5LzA0IDA3LzMwLzA0IDA3LzMxLzA0IDA4LzAxLzA0JywKKyAgICAgICAnMDgvMDIvMDQgMDgvMDMvMDQgMDgvMDQvMDQgMDgvMDUvMDQgMDgvMDYvMDQgMDgvMDcvMDQgMDgvMDgvMDQnLAorICAgICAgICcwOC8wOS8wNCAwOC8xMC8wNCAwOC8xMS8wNCAwOC8xMi8wNCAwOC8xMy8wNCAwOC8xNC8wNCAwOC8xNS8wNCcsCisgICAgICAgJzA4LzE2LzA0IDA4LzE3LzA0IDA4LzE4LzA0IDA4LzE5LzA0IDA4LzIwLzA0IDA4LzIxLzA0IDA4LzIyLzA0JywKKyAgICAgICAnMDgvMjMvMDQgMDgvMjQvMDQgMDgvMjUvMDQgMDgvMjYvMDQgMDgvMjcvMDQgMDgvMjgvMDQgMDgvMjkvMDQnLAorICAgICAgICcwOC8zMC8wNCAwOC8zMS8wNCAwOS8wMS8wNCAwOS8wMi8wNCAwOS8wMy8wNCAwOS8wNC8wNCAwOS8wNS8wNCddLAorICAgICAgWycwOC8zMC8wNCAwOC8zMS8wNCAwOS8wMS8wNCAwOS8wMi8wNCAwOS8wMy8wNCAwOS8wNC8wNCAwOS8wNS8wNCcsCisgICAgICAgJzA5LzA2LzA0IDA5LzA3LzA0IDA5LzA4LzA0IDA5LzA5LzA0IDA5LzEwLzA0IDA5LzExLzA0IDA5LzEyLzA0JywKKyAgICAgICAnMDkvMTMvMDQgMDkvMTQvMDQgMDkvMTUvMDQgMDkvMTYvMDQgMDkvMTcvMDQgMDkvMTgvMDQgMDkvMTkvMDQnLAorICAgICAgICcwOS8yMC8wNCAwOS8yMS8wNCAwOS8yMi8wNCAwOS8yMy8wNCAwOS8yNC8wNCAwOS8yNS8wNCAwOS8yNi8wNCcsCisgICAgICAgJzA5LzI3LzA0IDA5LzI4LzA0IDA5LzI5LzA0IDA5LzMwLzA0IDEwLzAxLzA0IDEwLzAyLzA0IDEwLzAzLzA0J11dLAorICAgICBbWycwOS8yNy8wNCAwOS8yOC8wNCAwOS8yOS8wNCAwOS8zMC8wNCAxMC8wMS8wNCAxMC8wMi8wNCAxMC8wMy8wNCcsCisgICAgICAgJzEwLzA0LzA0IDEwLzA1LzA0IDEwLzA2LzA0IDEwLzA3LzA0IDEwLzA4LzA0IDEwLzA5LzA0IDEwLzEwLzA0JywKKyAgICAgICAnMTAvMTEvMDQgMTAvMTIvMDQgMTAvMTMvMDQgMTAvMTQvMDQgMTAvMTUvMDQgMTAvMTYvMDQgMTAvMTcvMDQnLAorICAgICAgICcxMC8xOC8wNCAxMC8xOS8wNCAxMC8yMC8wNCAxMC8yMS8wNCAxMC8yMi8wNCAxMC8yMy8wNCAxMC8yNC8wNCcsCisgICAgICAgJzEwLzI1LzA0IDEwLzI2LzA0IDEwLzI3LzA0IDEwLzI4LzA0IDEwLzI5LzA0IDEwLzMwLzA0IDEwLzMxLzA0J10sCisgICAgICBbJzExLzAxLzA0IDExLzAyLzA0IDExLzAzLzA0IDExLzA0LzA0IDExLzA1LzA0IDExLzA2LzA0IDExLzA3LzA0JywKKyAgICAgICAnMTEvMDgvMDQgMTEvMDkvMDQgMTEvMTAvMDQgMTEvMTEvMDQgMTEvMTIvMDQgMTEvMTMvMDQgMTEvMTQvMDQnLAorICAgICAgICcxMS8xNS8wNCAxMS8xNi8wNCAxMS8xNy8wNCAxMS8xOC8wNCAxMS8xOS8wNCAxMS8yMC8wNCAxMS8yMS8wNCcsCisgICAgICAgJzExLzIyLzA0IDExLzIzLzA0IDExLzI0LzA0IDExLzI1LzA0IDExLzI2LzA0IDExLzI3LzA0IDExLzI4LzA0JywKKyAgICAgICAnMTEvMjkvMDQgMTEvMzAvMDQgMTIvMDEvMDQgMTIvMDIvMDQgMTIvMDMvMDQgMTIvMDQvMDQgMTIvMDUvMDQnXSwKKyAgICAgIFsnMTEvMjkvMDQgMTEvMzAvMDQgMTIvMDEvMDQgMTIvMDIvMDQgMTIvMDMvMDQgMTIvMDQvMDQgMTIvMDUvMDQnLAorICAgICAgICcxMi8wNi8wNCAxMi8wNy8wNCAxMi8wOC8wNCAxMi8wOS8wNCAxMi8xMC8wNCAxMi8xMS8wNCAxMi8xMi8wNCcsCisgICAgICAgJzEyLzEzLzA0IDEyLzE0LzA0IDEyLzE1LzA0IDEyLzE2LzA0IDEyLzE3LzA0IDEyLzE4LzA0IDEyLzE5LzA0JywKKyAgICAgICAnMTIvMjAvMDQgMTIvMjEvMDQgMTIvMjIvMDQgMTIvMjMvMDQgMTIvMjQvMDQgMTIvMjUvMDQgMTIvMjYvMDQnLAorICAgICAgICcxMi8yNy8wNCAxMi8yOC8wNCAxMi8yOS8wNCAxMi8zMC8wNCAxMi8zMS8wNCAwMS8wMS8wNSAwMS8wMi8wNSddXV0KKwogCiBjbGFzcyBPdXRwdXRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIG5vcm1hbGl6ZV9jYWxlbmRhcihzZWxmLCBzKToKQEAgLTE3NywxMiArMzE3LDE5IEBACiAgICAgICAgICAgICByZXR1cm4gbm90IGMuaXNzcGFjZSgpIGFuZCBub3QgYy5pc2RpZ2l0KCkKIAogICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGZvciBsaW5lIGluIHMuc3BsaXRsaW5lcyhGYWxzZSk6CisgICAgICAgIGZvciBsaW5lIGluIHMuc3BsaXRsaW5lcyhrZWVwZW5kcz1GYWxzZSk6CiAgICAgICAgICAgICAjIERyb3AgdGV4dHMsIGFzIHRoZXkgYXJlIGxvY2FsZSBkZXBlbmRlbnQKICAgICAgICAgICAgIGlmIGxpbmUgYW5kIG5vdCBmaWx0ZXIobmVpdGhlcnNwYWNlbm9yZGlnaXQsIGxpbmUpOgogICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQogICAgICAgICByZXR1cm4gbGluZXMKIAorICAgIGRlZiBjaGVja19odG1sY2FsZW5kYXJfZW5jb2Rpbmcoc2VsZiwgcmVxLCByZXMpOgorICAgICAgICBjYWwgPSBjYWxlbmRhci5IVE1MQ2FsZW5kYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsLmZvcm1hdHllYXJwYWdlKDIwMDQsIGVuY29kaW5nPXJlcSkuc3RyaXAoYicgXHRcbicpLAorICAgICAgICAgICAgKHJlc3VsdF8yMDA0X2h0bWwgJSB7J2UnOiByZXN9KS5zdHJpcCgnIFx0XG4nKS5lbmNvZGUocmVzKQorICAgICAgICApCisKICAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBzZWxmLm5vcm1hbGl6ZV9jYWxlbmRhcihjYWxlbmRhci5jYWxlbmRhcigyMDA0KSksCkBAIC0xOTUsMTIgKzM0Miw2MCBAQAogICAgICAgICAgICAgcmVzdWx0XzIwMDRfdGV4dC5zdHJpcCgpCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X291dHB1dF9odG1sY2FsZW5kYXIoc2VsZik6Ci0gICAgICAgIGVuY29kaW5nID0gJ2FzY2lpJwotICAgICAgICBjYWwgPSBjYWxlbmRhci5IVE1MQ2FsZW5kYXIoKQorICAgIGRlZiB0ZXN0X291dHB1dF9odG1sY2FsZW5kYXJfZW5jb2RpbmdfYXNjaWkoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfaHRtbGNhbGVuZGFyX2VuY29kaW5nKCdhc2NpaScsICdhc2NpaScpCisKKyAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyX2VuY29kaW5nX3V0Zjgoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfaHRtbGNhbGVuZGFyX2VuY29kaW5nKCd1dGYtOCcsICd1dGYtOCcpCisKKyAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyX2VuY29kaW5nX2RlZmF1bHQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfaHRtbGNhbGVuZGFyX2VuY29kaW5nKE5vbmUsIHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKSkKKworICAgIGRlZiB0ZXN0X3llYXJkYXRlc2NhbGVuZGFyKHNlbGYpOgorICAgICAgICBkZWYgc2hyaW5rKGNhbCk6CisgICAgICAgICAgICByZXR1cm4gW1tbJyAnLmpvaW4oJ3s6MDJkfS97OjAyZH0ve30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5tb250aCwgZC5kYXksIHN0cihkLnllYXIpWy0yOl0pIGZvciBkIGluIHopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHogaW4geV0gZm9yIHkgaW4geF0gZm9yIHggaW4gY2FsXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY2FsLmZvcm1hdHllYXJwYWdlKDIwMDQsIGVuY29kaW5nPWVuY29kaW5nKS5zdHJpcChiJyBcdFxuJyksCi0gICAgICAgICAgICByZXN1bHRfMjAwNF9odG1sLnN0cmlwKCcgXHRcbicpLmVuY29kZShlbmNvZGluZykKKyAgICAgICAgICAgIHNocmluayhjYWxlbmRhci5DYWxlbmRhcigpLnllYXJkYXRlc2NhbGVuZGFyKDIwMDQpKSwKKyAgICAgICAgICAgIHJlc3VsdF8yMDA0X2RhdGVzCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3llYXJkYXlzY2FsZW5kYXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYWxlbmRhci5DYWxlbmRhcigpLnllYXJkYXlzY2FsZW5kYXIoMjAwNCksCisgICAgICAgICAgICByZXN1bHRfMjAwNF9kYXlzCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdHdlZWtoZWFkZXJfc2hvcnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYWxlbmRhci5UZXh0Q2FsZW5kYXIoKS5mb3JtYXR3ZWVraGVhZGVyKDIpLAorICAgICAgICAgICAgJ01vIFR1IFdlIFRoIEZyIFNhIFN1JworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXR3ZWVraGVhZGVyX2xvbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYWxlbmRhci5UZXh0Q2FsZW5kYXIoKS5mb3JtYXR3ZWVraGVhZGVyKDkpLAorICAgICAgICAgICAgJyAgTW9uZGF5ICAgVHVlc2RheSAgV2VkbmVzZGF5ICBUaHVyc2RheSAnCisgICAgICAgICAgICAnICBGcmlkYXkgICBTYXR1cmRheSAgIFN1bmRheSAnCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdG1vbnRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuVGV4dENhbGVuZGFyKCkuZm9ybWF0bW9udGgoMjAwNCwgMSkuc3RyaXAoKSwKKyAgICAgICAgICAgIHJlc3VsdF8yMDA0XzAxX3RleHQuc3RyaXAoKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXRtb250aG5hbWVfd2l0aF95ZWFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkuZm9ybWF0bW9udGhuYW1lKDIwMDQsIDEsIHdpdGh5ZWFyPVRydWUpLAorICAgICAgICAgICAgJzx0cj48dGggY29sc3Bhbj0iNyIgY2xhc3M9Im1vbnRoIj5KYW51YXJ5IDIwMDQ8L3RoPjwvdHI+JworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXRtb250aG5hbWVfd2l0aG91dF95ZWFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkuZm9ybWF0bW9udGhuYW1lKDIwMDQsIDEsIHdpdGh5ZWFyPUZhbHNlKSwKKyAgICAgICAgICAgICc8dHI+PHRoIGNvbHNwYW49IjciIGNsYXNzPSJtb250aCI+SmFudWFyeTwvdGg+PC90cj4nCiAgICAgICAgICkKIAogCkBAIC0yMjYsNyArNDIxLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsZW5kYXIuZmlyc3R3ZWVrZGF5KCksIGNhbGVuZGFyLk1PTkRBWSkKICAgICAgICAgY2FsZW5kYXIuc2V0Zmlyc3R3ZWVrZGF5KG9yaWcpCiAKLSAgICBkZWYgdGVzdF9lbnVtZXJhdGV3ZWVrZGF5cyhzZWxmKToKKyAgICBkZWYgdGVzdF9pbGxlZ2FsX3dlZWtkYXlfcmVwb3J0ZWQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChjYWxlbmRhci5JbGxlZ2FsV2Vla2RheUVycm9yLCAnMTIzJyk6CisgICAgICAgICAgICBjYWxlbmRhci5zZXRmaXJzdHdlZWtkYXkoMTIzKQorCisgICAgZGVmIHRlc3RfZW51bWVyYXRlX3dlZWtkYXlzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBjYWxlbmRhci5kYXlfYWJici5fX2dldGl0ZW1fXywgLTEwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBjYWxlbmRhci5kYXlfbmFtZS5fX2dldGl0ZW1fXywgMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFtkIGZvciBkIGluIGNhbGVuZGFyLmRheV9hYmJyXSksIDcpCkBAIC0yNTIsNyArNDUxLDcgQEAKICAgICAgICAgICAgICMgdmVyaWZ5IGl0ICJhY3RzIGxpa2UgYSBzZXF1ZW5jZSIgaW4gdHdvIGZvcm1zIG9mIGl0ZXJhdGlvbgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZVs6Oi0xXSwgbGlzdChyZXZlcnNlZCh2YWx1ZSkpKQogCi0gICAgZGVmIHRlc3RfbG9jYWxlY2FsZW5kYXJzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xvY2FsZV9jYWxlbmRhcnMoc2VsZik6CiAgICAgICAgICMgZW5zdXJlIHRoYXQgTG9jYWxle1RleHQsSFRNTH1DYWxlbmRhciByZXNldHMgdGhlIGxvY2FsZSBwcm9wZXJseQogICAgICAgICAjIChpdCBpcyBzdGlsbCBub3QgdGhyZWFkLXNhZmUgdGhvdWdoKQogICAgICAgICBvbGRfb2N0b2JlciA9IGNhbGVuZGFyLlRleHRDYWxlbmRhcigpLmZvcm1hdG1vbnRobmFtZSgyMDEwLCAxMCwgMTApCkBAIC00MzEsNiArNjMwLDEwIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY2FsZW5kYXIuSWxsZWdhbE1vbnRoRXJyb3IpOgogICAgICAgICAgICAgY2FsZW5kYXIubW9udGhyYW5nZSgyMDA0LCAxMykKIAorICAgIGRlZiB0ZXN0X2lsbGVnYWxfbW9udGhfcmVwb3J0ZWQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChjYWxlbmRhci5JbGxlZ2FsTW9udGhFcnJvciwgJzY1Jyk6CisgICAgICAgICAgICBjYWxlbmRhci5tb250aHJhbmdlKDIwMDQsIDY1KQorCiBjbGFzcyBMZWFwZGF5c1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9ub19yYW5nZShzZWxmKToKICAgICAgICAgIyB0ZXN0IHdoZW4gbm8gcmFuZ2UgaS5lLiB0d28gaWRlbnRpY2FsIHllYXJzIGFzIGFyZ3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQppbmRleCA0ZDkzMWY4Li5kM2M0YTA0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CkBAIC01MiwxMyArNTIsMzYgQEAKICAgICAgICAgKG91dCwgZXJyKSA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgYicnKQogICAgICAgICAjIFRoaXMgdXNlZCB0byBjYXVzZSBhbiBpbmZpbml0ZSBsb29wLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5yc3RyaXAoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVyci5yc3RyaXAoKS5zdGFydHN3aXRoKAogICAgICAgICAgICAgICAgICAgICAgICAgIGInRmF0YWwgUHl0aG9uIGVycm9yOicKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJyBQeVRocmVhZFN0YXRlX0dldDogbm8gY3VycmVudCB0aHJlYWQnKQorICAgICAgICAgICAgICAgICAgICAgICAgIGInIFB5VGhyZWFkU3RhdGVfR2V0OiBubyBjdXJyZW50IHRocmVhZCcpKQogCiAgICAgZGVmIHRlc3RfbWVtb3J5dmlld19mcm9tX05VTExfcG9pbnRlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX3Rlc3RjYXBpLm1ha2VfbWVtb3J5dmlld19mcm9tX05VTExfcG9pbnRlcikKIAorICAgIGRlZiB0ZXN0X2V4Y19pbmZvKHNlbGYpOgorICAgICAgICByYWlzZWRfZXhjZXB0aW9uID0gVmFsdWVFcnJvcigiNSIpCisgICAgICAgIG5ld19leGMgPSBUeXBlRXJyb3IoIlRFU1QiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSByYWlzZWRfZXhjZXB0aW9uCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICAgICAgb3JpZ19zeXNfZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgb3JpZ19leGNfaW5mbyA9IF90ZXN0Y2FwaS5zZXRfZXhjX2luZm8obmV3X2V4Yy5fX2NsYXNzX18sIG5ld19leGMsIE5vbmUpCisgICAgICAgICAgICBuZXdfc3lzX2V4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIG5ld19leGNfaW5mbyA9IF90ZXN0Y2FwaS5zZXRfZXhjX2luZm8oKm9yaWdfZXhjX2luZm8pCisgICAgICAgICAgICByZXNldF9zeXNfZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdfZXhjX2luZm9bMV0sIGUpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChvcmlnX2V4Y19pbmZvLCAocmFpc2VkX2V4Y2VwdGlvbi5fX2NsYXNzX18sIHJhaXNlZF9leGNlcHRpb24sIHRiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChvcmlnX3N5c19leGNfaW5mbywgb3JpZ19leGNfaW5mbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChyZXNldF9zeXNfZXhjX2luZm8sIG9yaWdfZXhjX2luZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwobmV3X2V4Y19pbmZvLCAobmV3X2V4Yy5fX2NsYXNzX18sIG5ld19leGMsIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTZXF1ZW5jZUVxdWFsKG5ld19zeXNfZXhjX2luZm8sIG5ld19leGNfaW5mbykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShGYWxzZSkKKwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKF9wb3NpeHN1YnByb2Nlc3MsICdfcG9zaXhzdWJwcm9jZXNzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9zZXFfYnl0ZXNfdG9fY2hhcnBfYXJyYXkoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzE1NzMyOiBjcmFzaCBpbiBfUHlTZXF1ZW5jZV9CeXRlc1RvQ2hhcnBBcnJheSgpCkBAIC0yMjIsOSArMjQ1LDgwIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy5jaGRpcihvbGRjd2QpCiAKK2NsYXNzIFNraXBpdGVtVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9za2lwaXRlbShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIElmIHRoaXMgdGVzdCBmYWlsZWQsIHlvdSBwcm9iYWJseSBhZGRlZCBhIG5ldyAiZm9ybWF0IHVuaXQiCisgICAgICAgIGluIFB5dGhvbi9nZXRhcmdzLmMsIGJ1dCBuZWdsZWN0ZWQgdG8gdXBkYXRlIG91ciBwb29yIGZyaWVuZAorICAgICAgICBza2lwaXRlbSgpIGluIHRoZSBzYW1lIGZpbGUuICAoSWYgc28sIHNoYW1lIG9uIHlvdSEpCisKKyAgICAgICAgV2l0aCBhIGZldyBleGNlcHRpb25zKiosIHRoaXMgZnVuY3Rpb24gYnJ1dGUtZm9yY2UgdGVzdHMgYWxsCisgICAgICAgIHByaW50YWJsZSBBU0NJSSoqKiBjaGFyYWN0ZXJzICgzMiB0byAxMjYgaW5jbHVzaXZlKSBhcyBmb3JtYXQgdW5pdHMsCisgICAgICAgIGNoZWNraW5nIHRvIHNlZSB0aGF0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygpIHJldHVybiBjb25zaXN0ZW50CisgICAgICAgIGVycm9ycyBib3RoIHdoZW4gdGhlIHVuaXQgaXMgYXR0ZW1wdGVkIHRvIGJlIHVzZWQgYW5kIHdoZW4gaXQgaXMKKyAgICAgICAgc2tpcHBlZC4gIElmIHRoZSBmb3JtYXQgdW5pdCBkb2Vzbid0IGV4aXN0LCB3ZSdsbCBnZXQgb25lIG9mIHR3bworICAgICAgICBzcGVjaWZpYyBlcnJvciBtZXNzYWdlcyAob25lIGZvciB1c2VkLCBvbmUgZm9yIHNraXBwZWQpOyBpZiBpdCBkb2VzCisgICAgICAgIGV4aXN0IHdlICp3b24ndCogZ2V0IHRoYXQgZXJyb3ItLXdlJ2xsIGdldCBlaXRoZXIgbm8gZXJyb3Igb3Igc29tZQorICAgICAgICBvdGhlciBlcnJvci4gIElmIHdlIGdldCB0aGUgc3BlY2lmaWMgImRvZXMgbm90IGV4aXN0IiBlcnJvciBmb3Igb25lCisgICAgICAgIHRlc3QgYW5kIG5vdCBmb3IgdGhlIG90aGVyLCB0aGVyZSdzIGEgbWlzbWF0Y2gsIGFuZCB0aGUgdGVzdCBmYWlscy4KKworICAgICAgICAgICAqKiBTb21lIGZvcm1hdCB1bml0cyBoYXZlIHNwZWNpYWwgZnVubnkgc2VtYW50aWNzIGFuZCBpdCB3b3VsZAorICAgICAgICAgICAgICBiZSBkaWZmaWN1bHQgdG8gYWNjb21vZGF0ZSB0aGVtIGhlcmUuICBTaW5jZSB0aGVzZSBhcmUgYWxsCisgICAgICAgICAgICAgIHdlbGwtZXN0YWJsaXNoZWQgYW5kIHByb3Blcmx5IHNraXBwZWQgaW4gc2tpcGl0ZW0oKSB3ZSBjYW4KKyAgICAgICAgICAgICAgZ2V0IGF3YXkgd2l0aCBub3QgdGVzdGluZyB0aGVtLS10aGlzIHRlc3QgaXMgcmVhbGx5IGludGVuZGVkCisgICAgICAgICAgICAgIHRvIGNhdGNoICpuZXcqIGZvcm1hdCB1bml0cy4KKworICAgICAgICAgICoqKiBQeXRob24gQyBzb3VyY2UgZmlsZXMgbXVzdCBiZSBBU0NJSS4gIFRoZXJlZm9yZSBpdCdzIGltcG9zc2libGUKKyAgICAgICAgICAgICAgdG8gaGF2ZSBub24tQVNDSUkgZm9ybWF0IHVuaXRzLgorCisgICAgICAgICIiIgorICAgICAgICBlbXB0eV90dXBsZSA9ICgpCisgICAgICAgIHR1cGxlXzEgPSAoMCwpCisgICAgICAgIGRpY3RfYiA9IHsnYic6MX0KKyAgICAgICAga2V5d29yZHMgPSBbImEiLCAiYiJdCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMzIsIDEyNyk6CisgICAgICAgICAgICBjID0gY2hyKGkpCisKKyAgICAgICAgICAgICMgc2tpcCBwYXJlbnRoZXNlcywgdGhlIGVycm9yIHJlcG9ydGluZyBpcyBpbmNvbnNpc3RlbnQgYWJvdXQgdGhlbQorICAgICAgICAgICAgIyBza2lwICdlJywgaXQncyBhbHdheXMgYSB0d28tY2hhcmFjdGVyIGNvZGUKKyAgICAgICAgICAgICMgc2tpcCAnfCcgYW5kICckJywgdGhleSBkb24ndCByZXByZXNlbnQgYXJndW1lbnRzIGFueXdheQorICAgICAgICAgICAgaWYgYyBpbiAnKCllfCQnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgdGVzdCB0aGUgZm9ybWF0IHVuaXQgd2hlbiBub3Qgc2tpcHBlZAorICAgICAgICAgICAgZm9ybWF0ID0gYyArICJpIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgKG5vdGU6IHRoZSBmb3JtYXQgc3RyaW5nIG11c3QgYmUgYnl0ZXMhKQorICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHModHVwbGVfMSwgZGljdF9iLAorICAgICAgICAgICAgICAgICAgICBmb3JtYXQuZW5jb2RlKCJhc2NpaSIpLCBrZXl3b3JkcykKKyAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBzID0gImFyZ3VtZW50IDEgbXVzdCBiZSBpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj4sIG5vdCBpbnQiCisgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IChzdHIoZSkgPT0gcykKKyAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gRmFsc2UKKworICAgICAgICAgICAgIyB0ZXN0IHRoZSBmb3JtYXQgdW5pdCB3aGVuIHNraXBwZWQKKyAgICAgICAgICAgIG9wdGlvbmFsX2Zvcm1hdCA9ICJ8IiArIGZvcm1hdAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMoZW1wdHlfdHVwbGUsIGRpY3RfYiwKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxfZm9ybWF0LmVuY29kZSgiYXNjaWkiKSwga2V5d29yZHMpCisgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBzID0gImltcG9zc2libGU8YmFkIGZvcm1hdCBjaGFyPjogJ3t9JyIuZm9ybWF0KGZvcm1hdCkKKyAgICAgICAgICAgICAgICB3aGVuX3NraXBwZWQgPSAoc3RyKGUpID09IHMpCisKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAoInRlc3Rfc2tpcGl0ZW1fcGFyaXR5OiAiCisgICAgICAgICAgICAgICAgImRldGVjdGVkIG1pc21hdGNoIGJldHdlZW4gY29udmVydHNpbXBsZSBhbmQgc2tpcGl0ZW0gIgorICAgICAgICAgICAgICAgICJmb3IgZm9ybWF0IHVuaXQgJ3t9JyAoe30pLCBub3Qgc2tpcHBlZCB7fSwgc2tpcHBlZCB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBjLCBpLCB3aGVuX3NraXBwZWQsIHdoZW5fbm90X3NraXBwZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3aGVuX3NraXBwZWQsIHdoZW5fbm90X3NraXBwZWQsIG1lc3NhZ2UpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDQVBJVGVzdCwgVGVzdFBlbmRpbmdDYWxscywgVGVzdDYwMTIsIEVtYmVkZGluZ1Rlc3QpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ0FQSVRlc3QsIFRlc3RQZW5kaW5nQ2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDYwMTIsIEVtYmVkZGluZ1Rlc3QsIFNraXBpdGVtVGVzdCkKIAogICAgIGZvciBuYW1lIGluIGRpcihfdGVzdGNhcGkpOgogICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ3Rlc3RfJyk6CkBAIC0yNDEsMTggKzMzNSwxNyBAQAogICAgICAgICBpZGVudHMgPSBbXQogCiAgICAgICAgIGRlZiBjYWxsYmFjaygpOgotICAgICAgICAgICAgaWRlbnRzLmFwcGVuZChfdGhyZWFkLmdldF9pZGVudCgpKQorICAgICAgICAgICAgaWRlbnRzLmFwcGVuZCh0aHJlYWRpbmcuZ2V0X2lkZW50KCkpCiAKICAgICAgICAgX3Rlc3RjYXBpLl90ZXN0X3RocmVhZF9zdGF0ZShjYWxsYmFjaykKICAgICAgICAgYSA9IGIgPSBjYWxsYmFjawogICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgICMgQ2hlY2sgb3VyIG1haW4gdGhyZWFkIGlzIGluIHRoZSBsaXN0IGV4YWN0bHkgMyB0aW1lcy4KLSAgICAgICAgaWYgaWRlbnRzLmNvdW50KF90aHJlYWQuZ2V0X2lkZW50KCkpICE9IDM6CisgICAgICAgIGlmIGlkZW50cy5jb3VudCh0aHJlYWRpbmcuZ2V0X2lkZW50KCkpICE9IDM6CiAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRuJ3QgZmluZCBtYWluIHRocmVhZCBjb3JyZWN0bHkgaW4gdGhlIGxpc3QiKQogCiAgICAgaWYgdGhyZWFkaW5nOgotICAgICAgICBpbXBvcnQgX3RocmVhZAogICAgICAgICBpbXBvcnQgdGltZQogICAgICAgICBUZXN0VGhyZWFkU3RhdGUoKQogICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9VGVzdFRocmVhZFN0YXRlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQppbmRleCAzMDMxZmIzLi41NTEwYTBkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NnaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQpAQCAtNCw2ICs0LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBCeXRlc0lPCiAKIGNsYXNzIEhhY2tlZFN5c01vZHVsZToKQEAgLTExOSw5ICsxMjAsMTMgQEAKIGNsYXNzIENnaVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2VzY2FwZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdCAmYW1wOyBzdHJpbmciLCBjZ2kuZXNjYXBlKCJ0ZXN0ICYgc3RyaW5nIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiZsdDt0ZXN0IHN0cmluZyZndDsiLCBjZ2kuZXNjYXBlKCI8dGVzdCBzdHJpbmc+IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiZxdW90O3Rlc3Qgc3RyaW5nJnF1b3Q7IiwgY2dpLmVzY2FwZSgnInRlc3Qgc3RyaW5nIicsIFRydWUpKQorICAgICAgICAjIGNnaS5lc2NhcGUoKSBpcyBkZXByZWNhdGVkLgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJywgJ2NnaVwuZXNjYXBlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0ICZhbXA7IHN0cmluZyIsIGNnaS5lc2NhcGUoInRlc3QgJiBzdHJpbmciKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiZsdDt0ZXN0IHN0cmluZyZndDsiLCBjZ2kuZXNjYXBlKCI8dGVzdCBzdHJpbmc+IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImcXVvdDt0ZXN0IHN0cmluZyZxdW90OyIsIGNnaS5lc2NhcGUoJyJ0ZXN0IHN0cmluZyInLCBUcnVlKSkKIAogICAgIGRlZiB0ZXN0X3N0cmljdChzZWxmKToKICAgICAgICAgZm9yIG9yaWcsIGV4cGVjdCBpbiBwYXJzZV9zdHJpY3RfdGVzdF9jYXNlczoKQEAgLTE2MCwxMyArMTY1LDcgQEAKICAgICAgICAgICAgIGNnaS5sb2dmcCA9IE5vbmUKICAgICAgICAgICAgIGNnaS5sb2dmaWxlID0gIi9kZXYvbnVsbCIKICAgICAgICAgICAgIGNnaS5pbml0bG9nKCIlcyIsICJUZXN0aW5nIGxvZyAzIikKLSAgICAgICAgICAgIGRlZiBsb2dfY2xlYW51cCgpOgotICAgICAgICAgICAgICAgICIiIlJlc3RvcmUgdGhlIGdsb2JhbCBzdGF0ZSBvZiB0aGUgbG9nIHZhcnMuIiIiCi0gICAgICAgICAgICAgICAgY2dpLmxvZ2ZpbGUgPSAnJwotICAgICAgICAgICAgICAgIGNnaS5sb2dmcC5jbG9zZSgpCi0gICAgICAgICAgICAgICAgY2dpLmxvZ2ZwID0gTm9uZQotICAgICAgICAgICAgICAgIGNnaS5sb2cgPSBjZ2kuaW5pdGxvZwotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ19jbGVhbnVwKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNnaS5jbG9zZWxvZykKICAgICAgICAgICAgIGNnaS5sb2coIlRlc3RpbmcgbG9nIDQiKQogCiAgICAgZGVmIHRlc3RfZmllbGRzdG9yYWdlX3JlYWRsaW5lKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZ2l0Yi5weSBiL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZhNGIxYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkKQEAgLTAsMCArMSw1NSBAQAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IGNnaXRiCisKK2NsYXNzIFRlc3RDZ2l0Yih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9mb250cyhzZWxmKToKKyAgICAgICAgdGV4dCA9ICJIZWxsbyBSb2JiaWUhIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLnNtYWxsKHRleHQpLCAiPHNtYWxsPnt9PC9zbWFsbD4iLmZvcm1hdCh0ZXh0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZ2l0Yi5zdHJvbmcodGV4dCksICI8c3Ryb25nPnt9PC9zdHJvbmc+Ii5mb3JtYXQodGV4dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2dpdGIuZ3JleSh0ZXh0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPGZvbnQgY29sb3I9IiM5MDkwOTAiPnt9PC9mb250PicuZm9ybWF0KHRleHQpKQorCisgICAgZGVmIHRlc3RfYmxhbmtzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLnNtYWxsKCIiKSwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2dpdGIuc3Ryb25nKCIiKSwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2dpdGIuZ3JleSgiIiksICIiKQorCisgICAgZGVmIHRlc3RfaHRtbChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSGVsbG8gV29ybGQiKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAjIElmIHRoZSBodG1sIHdhcyB0ZW1wbGF0ZWQgd2UgY291bGQgZG8gYSBiaXQgbW9yZSBoZXJlLgorICAgICAgICAgICAgIyBBdCBsZWFzdCBjaGVjayB0aGF0IHdlIGdldCBkZXRhaWxzIG9uIHdoYXQgd2UganVzdCByYWlzZWQuCisgICAgICAgICAgICBodG1sID0gY2dpdGIuaHRtbChzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlZhbHVlRXJyb3IiLCBodG1sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzdHIoZXJyKSwgaHRtbCkKKworICAgIGRlZiB0ZXN0X3RleHQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkhlbGxvIFdvcmxkIikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgdGV4dCA9IGNnaXRiLnRleHQoc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJWYWx1ZUVycm9yIiwgdGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkhlbGxvIFdvcmxkIiwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2hvb2soc2VsZik6CisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnaW1wb3J0IGNnaXRiOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2dpdGIuZW5hYmxlKCk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYWlzZSBWYWx1ZUVycm9yKCJIZWxsbyBXb3JsZCIpJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBvdXQgPSBwcm9jLnN0ZG91dC5yZWFkKCkuZGVjb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHByb2Muc3Rkb3V0LmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydEluKCJWYWx1ZUVycm9yIiwgb3V0KQorICAgICAgICBzZWxmLmFzc2VydEluKCJIZWxsbyBXb3JsZCIsIG91dCkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KFRlc3RDZ2l0YikKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWQucHkgYi9MaWIvdGVzdC90ZXN0X2NtZC5weQppbmRleCAzYTQ2MzU1Li42NjE4NTM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZC5weQpAQCAtMjI4LDcgKzIyOCw3IEBACiAKIGRlZiB0ZXN0X2NvdmVyYWdlKGNvdmVyZGlyKToKICAgICB0cmFjZSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgndHJhY2UnKQotICAgIHRyYWNlcj10cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsXSwKKyAgICB0cmFjZXI9dHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAogICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9MCwgY291bnQ9MSkKICAgICB0cmFjZXIucnVuKCdyZWxvYWQoY21kKTt0ZXN0X21haW4oKScpCiAgICAgcj10cmFjZXIucmVzdWx0cygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQppbmRleCBmNDYzYWY0Li43NjQ0ZGIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKQEAgLTMxLDEyICszMSw2IEBACiAgICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1PJykKICAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLU9PJykKIAotICAgIGRlZiB0ZXN0X3Eoc2VsZik6Ci0gICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1Rb2xkJykKLSAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLVFuZXcnKQotICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUXdhcm4nKQotICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUXdhcm5hbGwnKQotCiAgICAgZGVmIHRlc3Rfc2l0ZV9mbGFnKHNlbGYpOgogICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUycpCiAKQEAgLTE1MSw3ICsxNDUsNyBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ3Rlc3Qgc3BlY2lmaWMgdG8gTWFjIE9TIFgnKQogICAgIGRlZiB0ZXN0X29zeF91dGY4KHNlbGYpOgogICAgICAgICBkZWYgY2hlY2tfb3V0cHV0KHRleHQpOgotICAgICAgICAgICAgZGVjb2RlZCA9IHRleHQuZGVjb2RlKCd1dGY4JywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgICAgICBkZWNvZGVkID0gdGV4dC5kZWNvZGUoJ3V0Zi04JywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgICBleHBlY3RlZCA9IGFzY2lpKGRlY29kZWQpLmVuY29kZSgnYXNjaWknKSArIGInXG4nCiAKICAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCkBAIC0yMjMsNyArMjE3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoMi5lbmNvZGUoJ2FzY2lpJyksIG91dCkKIAogICAgIGRlZiB0ZXN0X2Rpc3BsYXlob29rX3VuZW5jb2RhYmxlKHNlbGYpOgotICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCdhc2NpaScsICdsYXRpbjEnLCAndXRmOCcpOgorICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCdhc2NpaScsICdsYXRpbi0xJywgJ3V0Zi04Jyk6CiAgICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICAgICAgZW52WydQWVRIT05JT0VOQ09ESU5HJ10gPSBlbmNvZGluZwogICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oCkBAIC0yOTksNyArMjkzLDcgQEAKICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgb3V0KQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyci5kZWNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdFeGNlcHRpb24gSU9FcnJvcjogLiogaWdub3JlZCcpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbiBPU0Vycm9yOiAuKiBpZ25vcmVkJykKIAogICAgIGRlZiB0ZXN0X2Nsb3NlZF9zdGRvdXQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzEzNDQ0OiBpZiBzdGRvdXQgaGFzIGJlZW4gZXhwbGljaXRseSBjbG9zZWQsIHdlIHNob3VsZApAQCAtMzUzLDE0ICszNDcsMTQgQEAKICAgICAgICAgaGFzaGVzID0gW10KICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgICAgICBjb2RlID0gJ3ByaW50KGhhc2goInNwYW0iKSknCi0gICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctUicsICctYycsIGNvZGUpCisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAwKQogICAgICAgICAgICAgaGFzaGVzLmFwcGVuZChvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaGVzWzBdLCBoYXNoZXNbMV0pCiAKICAgICAgICAgIyBWZXJpZnkgdGhhdCBzeXMuZmxhZ3MgY29udGFpbnMgaGFzaF9yYW5kb21pemF0aW9uCiAgICAgICAgIGNvZGUgPSAnaW1wb3J0IHN5czsgcHJpbnQoInJhbmRvbSBpcyIsIHN5cy5mbGFncy5oYXNoX3JhbmRvbWl6YXRpb24pJwotICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctUicsICctYycsIGNvZGUpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3JhbmRvbSBpcyAxJywgb3V0KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CmluZGV4IDZiNTlkOTYuLjE3ZGZiYzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CkBAIC0xLDE1ICsxLDIwIEBACiAjIHRlc3RzIGNvbW1hbmQgbGluZSBleGVjdXRpb24gb2Ygc2NyaXB0cwogCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQoraW1wb3J0IHppcGltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgcHlfY29tcGlsZQogCitpbXBvcnQgdGV4dHdyYXAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKICAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0LAotICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgdGVtcF9kaXIpCisgICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpciwKKyAgICBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQogCiB2ZXJib3NlID0gc3VwcG9ydC52ZXJib3NlCiAKQEAgLTMyLDYgKzM3LDkgQEAKIGFzc2VydEVxdWFsKHJlc3VsdCwgWydUb3AgbGV2ZWwgYXNzaWdubWVudCcsICdMb3dlciBsZXZlbCByZWZlcmVuY2UnXSkKICMgQ2hlY2sgcG9wdWxhdGlvbiBvZiBtYWdpYyB2YXJpYWJsZXMKIGFzc2VydEVxdWFsKF9fbmFtZV9fLCAnX19tYWluX18nKQorZnJvbSBpbXBvcnRsaWIubWFjaGluZXJ5IGltcG9ydCBCdWlsdGluSW1wb3J0ZXIKK19sb2FkZXIgPSBfX2xvYWRlcl9fIGlmIF9fbG9hZGVyX18gaXMgQnVpbHRpbkltcG9ydGVyIGVsc2UgdHlwZShfX2xvYWRlcl9fKQorcHJpbnQoJ19fbG9hZGVyX189PSVhJyAlIF9sb2FkZXIpCiBwcmludCgnX19maWxlX189PSVhJyAlIF9fZmlsZV9fKQogYXNzZXJ0RXF1YWwoX19jYWNoZWRfXywgTm9uZSkKIHByaW50KCdfX3BhY2thZ2VfXz09JXInICUgX19wYWNrYWdlX18pCkBAIC00OSwxMiArNTcsMTYgQEAKICIiIgogCiBkZWYgX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2U9dGVzdF9zb3VyY2UpOgotICAgIHJldHVybiBtYWtlX3NjcmlwdChzY3JpcHRfZGlyLCBzY3JpcHRfYmFzZW5hbWUsIHNvdXJjZSkKKyAgICB0b19yZXR1cm4gPSBtYWtlX3NjcmlwdChzY3JpcHRfZGlyLCBzY3JpcHRfYmFzZW5hbWUsIHNvdXJjZSkKKyAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgIHJldHVybiB0b19yZXR1cm4KIAogZGVmIF9tYWtlX3Rlc3RfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT10ZXN0X3NvdXJjZSwgZGVwdGg9MSk6Ci0gICAgcmV0dXJuIG1ha2VfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIGRlcHRoKQorICAgIHRvX3JldHVybiA9IG1ha2VfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwgZGVwdGgpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICByZXR1cm4gdG9fcmV0dXJuCiAKICMgVGhlcmUncyBubyBlYXN5IHdheSB0byBwYXNzIHRoZSBzY3JpcHQgZGlyZWN0b3J5IGluIHRvIGdldAogIyAtbSB0byB3b3JrIChhdm9pZGluZyB0aGF0IGlzIHRoZSB3aG9sZSBwb2ludCBvZiBtYWtpbmcKQEAgLTcyLDE2ICs4NCwyMCBAQAogICAgIGVsc2U6CiAgICAgICAgIHBhdGggPSByZXByKHBhdGgpCiAgICAgc291cmNlID0gbGF1bmNoX3NvdXJjZSAlIChwYXRoLCBtb2R1bGVfbmFtZSkKLSAgICByZXR1cm4gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgdG9fcmV0dXJuID0gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICByZXR1cm4gdG9fcmV0dXJuCiAKIGNsYXNzIENtZExpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgX2NoZWNrX291dHB1dChzZWxmLCBzY3JpcHRfbmFtZSwgZXhpdF9jb2RlLCBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9maWxlLCBleHBlY3RlZF9hcmd2MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGF0aDAsIGV4cGVjdGVkX3BhY2thZ2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9wYXRoMCwgZXhwZWN0ZWRfcGFja2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9hZGVyKToKICAgICAgICAgaWYgdmVyYm9zZSA+IDE6CiAgICAgICAgICAgICBwcmludCgiT3V0cHV0IGZyb20gdGVzdCBzY3JpcHQgJXI6IiAlIHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHJpbnQoZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0X2NvZGUsIDApCisgICAgICAgIHByaW50ZWRfbG9hZGVyID0gJ19fbG9hZGVyX189PSVhJyAlIGV4cGVjdGVkX2xvYWRlcgogICAgICAgICBwcmludGVkX2ZpbGUgPSAnX19maWxlX189PSVhJyAlIGV4cGVjdGVkX2ZpbGUKICAgICAgICAgcHJpbnRlZF9wYWNrYWdlID0gJ19fcGFja2FnZV9fPT0lcicgJSBleHBlY3RlZF9wYWNrYWdlCiAgICAgICAgIHByaW50ZWRfYXJndjAgPSAnc3lzLmFyZ3ZbMF09PSVhJyAlIGV4cGVjdGVkX2FyZ3YwCkBAIC05Myw2ICsxMDksNyBAQAogICAgICAgICAgICAgcHJpbnQocHJpbnRlZF9wYWNrYWdlKQogICAgICAgICAgICAgcHJpbnQocHJpbnRlZF9hcmd2MCkKICAgICAgICAgICAgIHByaW50KHByaW50ZWRfY3dkKQorICAgICAgICBzZWxmLmFzc2VydEluKHByaW50ZWRfbG9hZGVyLmVuY29kZSgndXRmLTgnKSwgZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihwcmludGVkX2ZpbGUuZW5jb2RlKCd1dGYtOCcpLCBkYXRhKQogICAgICAgICBzZWxmLmFzc2VydEluKHByaW50ZWRfcGFja2FnZS5lbmNvZGUoJ3V0Zi04JyksIGRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocHJpbnRlZF9hcmd2MC5lbmNvZGUoJ3V0Zi04JyksIGRhdGEpCkBAIC0xMDEsMTQgKzExOCwxNSBAQAogCiAgICAgZGVmIF9jaGVja19zY3JpcHQoc2VsZiwgc2NyaXB0X25hbWUsIGV4cGVjdGVkX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZSwgZXhwZWN0ZWRfbG9hZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjbWRfbGluZV9zd2l0Y2hlcyk6CiAgICAgICAgIGlmIG5vdCBfX2RlYnVnX186CiAgICAgICAgICAgICBjbWRfbGluZV9zd2l0Y2hlcyArPSAoJy0nICsgJ08nICogc3lzLmZsYWdzLm9wdGltaXplLCkKICAgICAgICAgcnVuX2FyZ3MgPSBjbWRfbGluZV9zd2l0Y2hlcyArIChzY3JpcHRfbmFtZSwpICsgdHVwbGUoZXhhbXBsZV9hcmdzKQogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCpydW5fYXJncykKICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0ICsgZXJyLCBleHBlY3RlZF9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLCBleHBlY3RlZF9wYWNrYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZSwgZXhwZWN0ZWRfbG9hZGVyKQogCiAgICAgZGVmIF9jaGVja19pbXBvcnRfZXJyb3Ioc2VsZiwgc2NyaXB0X25hbWUsIGV4cGVjdGVkX21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY21kX2xpbmVfc3dpdGNoZXMpOgpAQCAtMTIwLDExICsxMzgsMzAgQEAKICAgICAgICAgICAgIHByaW50KCdFeHBlY3RlZCBvdXRwdXQ6ICVyJyAlIGV4cGVjdGVkX21zZykKICAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZF9tc2cuZW5jb2RlKCd1dGYtOCcpLCBlcnIpCiAKKyAgICBkZWYgdGVzdF9kYXNoX2NfbG9hZGVyKHNlbGYpOgorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCItYyIsICJwcmludChfX2xvYWRlcl9fKSIpCisgICAgICAgIGV4cGVjdGVkID0gcmVwcihpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikuZW5jb2RlKCJ1dGYtOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQsIG91dCkKKworICAgIGRlZiB0ZXN0X3N0ZGluX2xvYWRlcihzZWxmKToKKyAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB0aGVyZSdzIG5vIHdheSB0byBhdXRvbWF0aWNhbGx5IHRlc3QgdGhlIGZ1bGx5CisgICAgICAgICMgaW50ZXJhY3RpdmUgUkVQTCwgc2luY2UgdGhhdCBjb2RlIHBhdGggb25seSBnZXRzIGV4ZWN1dGVkIHdoZW4KKyAgICAgICAgIyBzdGRpbiBpcyBhbiBpbnRlcmFjdGl2ZSB0dHkuCisgICAgICAgIHAgPSBzcGF3bl9weXRob24oKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKGIicHJpbnQoX19sb2FkZXJfXylcbiIpCisgICAgICAgICAgICBwLnN0ZGluLmZsdXNoKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG91dCA9IGtpbGxfcHl0aG9uKHApCisgICAgICAgIGV4cGVjdGVkID0gcmVwcihpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikuZW5jb2RlKCJ1dGYtOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQsIG91dCkKKwogICAgIGRlZiB0ZXN0X2Jhc2ljX3NjcmlwdChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdzY3JpcHQnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9uYW1lLCBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X3NjcmlwdF9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0xMzMsMTMgKzE3MCwxNSBAQAogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChweWNfZmlsZSwgcHljX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X25hbWUsIHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2NvbXBpbGVkKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTE0OCw3ICsxODcsOCBAQAogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfZGlyLCBweWNfZmlsZSwgc2NyaXB0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2Vycm9yKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTE1OSwxNCArMTk5LDE2IEBACiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gbWFrZV96aXBfc2NyaXB0KHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsIHNjcmlwdF9uYW1lKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHppcF9uYW1lLCBydW5fbmFtZSwgemlwX25hbWUsIHppcF9uYW1lLCAnJykKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfemlwZmlsZV9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBjb21waWxlZF9uYW1lID0gcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgY29tcGlsZWRfbmFtZSkKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoemlwX25hbWUsIHJ1bl9uYW1lLCB6aXBfbmFtZSwgemlwX25hbWUsICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X3ppcGZpbGVfZXJyb3Ioc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpAQCAtMTgxLDE5ICsyMjMsMjQgQEAKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdzY3JpcHQnKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cuc2NyaXB0JykKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCBzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JykKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwX25hbWUsICd0ZXN0X3BrZycsIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9zdWJwYWNrYWdlX2luX3ppcGZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gX21ha2VfdGVzdF96aXBfcGtnKHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsICd0ZXN0X3BrZycsICdzY3JpcHQnLCBkZXB0aD0yKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cudGVzdF9wa2cuc2NyaXB0JywgemlwX25hbWUpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHJ1bl9uYW1lLCBydW5fbmFtZSwgemlwX25hbWUsICd0ZXN0X3BrZy50ZXN0X3BrZycpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHJ1bl9uYW1lLCBydW5fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBfbmFtZSwgJ3Rlc3RfcGtnLnRlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTIwMiw3ICsyNDksOCBAQAogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBzY3JpcHRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2NvbXBpbGVkKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTIxNCw3ICsyNjIsOCBAQAogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgcHljX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2VfZXJyb3Ioc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpAQCAtMjUxLDcgKzMwMCw4IEBACiAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAiaW5pdF9hcmd2MD09JXIiICUgJy1tJwogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQuZW5jb2RlKCd1dGYtOCcpLCBvdXQpCiAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAndGVzdF9wa2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9pc3N1ZTgyMDJfZGFzaF9jX2ZpbGVfaWdub3JlZChzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYSAiLWMiIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CkBAIC0yNzcsNyArMzI3LDggQEAKICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiZGF0YSIpCiAgICAgICAgICAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ290aGVyJywgKmV4YW1wbGVfYXJncykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCAnJywgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2Rhc2hfbV9lcnJvcl9jb2RlX2lzX29uZShzZWxmKToKICAgICAgICAgIyBJZiBhIG1vZHVsZSBpcyBpbnZva2VkIHdpdGggdGhlIC1tIGNvbW1hbmQgbGluZSBmbGFnCkBAIC0yOTQsNiArMzQ1LDI0IEBACiAgICAgICAgICAgICAgICAgICAgIHByaW50KG91dCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAxKQogCisgICAgZGVmIHRlc3RfcGVwXzQwOV92ZXJiaWFnZShzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgUEVQIDQwOSBzeW50YXggcHJvcGVybHkgc3VwcHJlc3NlcworICAgICAgICAjIHRoZSBjb250ZXh0IG9mIGFuIGV4Y2VwdGlvbgorICAgICAgICBzY3JpcHQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IgZnJvbSBOb25lCisgICAgICAgICAgICAiIiIpCisgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0Jywgc2NyaXB0KQorICAgICAgICAgICAgZXhpdGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKHNjcmlwdF9uYW1lKQorICAgICAgICAgICAgdGV4dCA9IHN0ZGVyci5kZWNvZGUoJ2FzY2lpJykuc3BsaXQoJ1xuJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRleHRbMF0uc3RhcnRzd2l0aCgnVHJhY2ViYWNrJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGV4dFsxXS5zdGFydHN3aXRoKCcgIEZpbGUgJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGV4dFszXS5zdGFydHN3aXRoKCdOYW1lRXJyb3InKSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENtZExpbmVUZXN0KQogICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGUucHkKaW5kZXggZTFjN2E3OC4uMzM3N2E3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZS5weQpAQCAtMTYsNyArMTYsNyBAQAogZnJlZXZhcnM6ICgpCiBubG9jYWxzOiAyCiBmbGFnczogMwotY29uc3RzOiAoJ05vbmUnLCAnPGNvZGUgb2JqZWN0IGc+JykKK2NvbnN0czogKCdOb25lJywgJzxjb2RlIG9iamVjdCBnPicsICInZi48bG9jYWxzPi5nJyIpCiAKID4+PiBkdW1wKGYoNCkuX19jb2RlX18pCiBuYW1lOiBnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGVmMTcwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQpAQCAtMCwwICsxLDcyIEBACisiVGVzdCBJbnRlcmFjdGl2ZUNvbnNvbGUgYW5kIEludGVyYWN0aXZlSW50ZXJwcmV0ZXIgZnJvbSBjb2RlIG1vZHVsZSIKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitjb2RlID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjb2RlJykKKworCitjbGFzcyBUZXN0SW50ZXJhY3RpdmVDb25zb2xlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jb25zb2xlID0gY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGUoKQorICAgICAgICBzZWxmLm1vY2tfc3lzKCkKKworICAgIGRlZiBtb2NrX3N5cyhzZWxmKToKKyAgICAgICAgIk1vY2sgc3lzdGVtIGVudmlyb25tZW50IGZvciBJbnRlcmFjdGl2ZUNvbnNvbGUiCisgICAgICAgICMgdXNlIGV4aXQgc3RhY2sgdG8gbWF0Y2ggcGF0Y2ggY29udGV4dCBtYW5hZ2VycyB0byBhZGRDbGVhbnVwCisgICAgICAgIHN0YWNrID0gRXhpdFN0YWNrKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN0YWNrLmNsb3NlKQorICAgICAgICBzZWxmLmluZnVuYyA9IHN0YWNrLmVudGVyX2NvbnRleHQobW9jay5wYXRjaCgnY29kZS5pbnB1dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGU9VHJ1ZSkpCisgICAgICAgIHNlbGYuc3Rkb3V0ID0gc3RhY2suZW50ZXJfY29udGV4dChtb2NrLnBhdGNoKCdjb2RlLnN5cy5zdGRvdXQnKSkKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGFjay5lbnRlcl9jb250ZXh0KG1vY2sucGF0Y2goJ2NvZGUuc3lzLnN0ZGVycicpKQorICAgICAgICBwcmVwYXRjaCA9IG1vY2sucGF0Y2goJ2NvZGUuc3lzJywgd3JhcHM9Y29kZS5zeXMsIHNwZWM9Y29kZS5zeXMpCisgICAgICAgIHNlbGYuc3lzbW9kID0gc3RhY2suZW50ZXJfY29udGV4dChwcmVwYXRjaCkKKyAgICAgICAgaWYgc3lzLmV4Y2VwdGhvb2sgaXMgc3lzLl9fZXhjZXB0aG9va19fOgorICAgICAgICAgICAgc2VsZi5zeXNtb2QuZXhjZXB0aG9vayA9IHNlbGYuc3lzbW9kLl9fZXhjZXB0aG9va19fCisKKyAgICBkZWYgdGVzdF9wczEoc2VsZik6CisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN5c21vZC5wczEsICc+Pj4gJykKKworICAgIGRlZiB0ZXN0X3BzMihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3lzbW9kLnBzMiwgJy4uLiAnKQorCisgICAgZGVmIHRlc3RfY29uc29sZV9zdGRlcnIoc2VsZik6CisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gWyInYW50aW9jaCciLCAiIiwgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdCgpCisgICAgICAgIGZvciBjYWxsIGluIGxpc3Qoc2VsZi5zdGRvdXQubWV0aG9kX2NhbGxzKToKKyAgICAgICAgICAgIGlmICdhbnRpb2NoJyBpbiAnJy5qb2luKGNhbGxbMV0pOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigibm8gY29uc29sZSBzdGRvdXQiKQorCisgICAgZGVmIHRlc3Rfc3ludGF4X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsidW5kZWZpbmVkIiwgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdCgpCisgICAgICAgIGZvciBjYWxsIGluIHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxsczoKKyAgICAgICAgICAgIGlmICdOYW1lRXJyb3I6JyBpbiAnJy5qb2luKGNhbGxbMV0pOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiTm8gc3ludGF4IGVycm9yIGZyb20gY29uc29sZSIpCisKKyAgICBkZWYgdGVzdF9zeXNleGNlcHRob29rKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsicmFpc2UgVmFsdWVFcnJvcignJykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCisgICAgICAgIGhvb2sgPSBtb2NrLk1vY2soKQorICAgICAgICBzZWxmLnN5c21vZC5leGNlcHRob29rID0gaG9vaworICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG9vay5jYWxsZWQpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RJbnRlcmFjdGl2ZUNvbnNvbGUpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQppbmRleCBjNWIxZTI1Li44MWJmODBkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKQEAgLTEsNSArMSwxOCBAQAotaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKLWltcG9ydCBzeXMsIGNvZGVjcywgaHRtbC5lbnRpdGllcywgdW5pY29kZWRhdGEKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBodG1sLmVudGl0aWVzCitpbXBvcnQgc3lzCitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgdW5pY29kZWRhdGEKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCisKK3RyeToKKyAgICBpbXBvcnQgY3R5cGVzCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgY3R5cGVzID0gTm9uZQorICAgIFNJWkVPRl9XQ0hBUl9UID0gLTEKK2Vsc2U6CisgICAgU0laRU9GX1dDSEFSX1QgPSBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX3djaGFyKQogCiBjbGFzcyBQb3NSZXR1cm46CiAgICAgIyB0aGlzIGNhbiBiZSB1c2VkIGZvciBjb25maWd1cmFibGUgY2FsbGJhY2tzCkBAIC0xMzUsMjIgKzE0OCwxNCBAQAogICAgIGRlZiB0ZXN0X2JhY2tzbGFzaGVzY2FwZShzZWxmKToKICAgICAgICAgIyBEb2VzIHRoZSBzYW1lIGFzIHRoZSAidW5pY29kZS1lc2NhcGUiIGVuY29kaW5nLCBidXQgd2l0aCBkaWZmZXJlbnQKICAgICAgICAgIyBiYXNlIGVuY29kaW5ncy4KLSAgICAgICAgc2luID0gImFceGFjXHUxMjM0XHUyMGFjXHU4MDAwIgotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKLSAgICAgICAgICAgIHNpbiArPSBjaHIoc3lzLm1heHVuaWNvZGUpCi0gICAgICAgIHNvdXQgPSBiImFcXHhhY1xcdTEyMzRcXHUyMGFjXFx1ODAwMCIKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBzb3V0ICs9IGJ5dGVzKCJcXFUlMDh4IiAlIHN5cy5tYXh1bmljb2RlLCAiYXNjaWkiKQorICAgICAgICBzaW4gPSAiYVx4YWNcdTEyMzRcdTIwYWNcdTgwMDBcVTAwMTBmZmZmIgorICAgICAgICBzb3V0ID0gYiJhXFx4YWNcXHUxMjM0XFx1MjBhY1xcdTgwMDBcXFUwMDEwZmZmZiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJhc2NpaSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKLSAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XFx1MjBhY1xcdTgwMDAiCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgc291dCArPSBieXRlcygiXFxVJTA4eCIgJSBzeXMubWF4dW5pY29kZSwgImFzY2lpIikKKyAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XFx1MjBhY1xcdTgwMDBcXFUwMDEwZmZmZiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJsYXRpbi0xIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwgc291dCkKIAotICAgICAgICBzb3V0ID0gYiJhXHhhY1xcdTEyMzRceGE0XFx1ODAwMCIKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBzb3V0ICs9IGJ5dGVzKCJcXFUlMDh4IiAlIHN5cy5tYXh1bmljb2RlLCAiYXNjaWkiKQorICAgICAgICBzb3V0ID0gYiJhXHhhY1xcdTEyMzRceGE0XFx1ODAwMFxcVTAwMTBmZmZmIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpbi5lbmNvZGUoImlzby04ODU5LTE1IiwgImJhY2tzbGFzaHJlcGxhY2UiKSwgc291dCkKIAogICAgIGRlZiB0ZXN0X2RlY29kaW5nX2NhbGxiYWNrcyhzZWxmKToKQEAgLTIwMCwzMyArMjA1LDM3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZW5jb2RlLCBzaW4sICJyZXBsYWNlIiwgY2hhcm1hcCkKIAogICAgIGRlZiB0ZXN0X2RlY29kZXVuaWNvZGVpbnRlcm5hbChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IsCi0gICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUsCi0gICAgICAgICAgICAidW5pY29kZS1pbnRlcm5hbCIsCi0gICAgICAgICkKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6CisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwcmVjYXRlZCcsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yLAorICAgICAgICAgICAgICAgIGIiXHgwMFx4MDBceDAwXHgwMFx4MDAiLmRlY29kZSwKKyAgICAgICAgICAgICAgICAidW5pY29kZS1pbnRlcm5hbCIsCisgICAgICAgICAgICApCisgICAgICAgIGlmIFNJWkVPRl9XQ0hBUl9UID09IDQ6CiAgICAgICAgICAgICBkZWYgaGFuZGxlcl91bmljb2RlaW50ZXJuYWwoZXhjKToKICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGMsIFVuaWNvZGVEZWNvZGVFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlICVyIiAlIGV4YykKICAgICAgICAgICAgICAgICByZXR1cm4gKCJceDAxIiwgMSkKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAiaWdub3JlIiksCi0gICAgICAgICAgICAgICAgIlx1MDAwMCIKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAiaWdub3JlIiksCisgICAgICAgICAgICAgICAgICAgICJcdTAwMDAiCisgICAgICAgICAgICAgICAgKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIGIiXHgwMFx4MDBceDAwXHgwMFx4MDAiLmRlY29kZSgidW5pY29kZS1pbnRlcm5hbCIsICJyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgIlx1MDAwMFx1ZmZmZCIKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAicmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAiXHUwMDAwXHVmZmZkIgorICAgICAgICAgICAgICAgICkKIAotICAgICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0Lmh1aSIsIGhhbmRsZXJfdW5pY29kZWludGVybmFsKQorICAgICAgICAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5odWkiLCBoYW5kbGVyX3VuaWNvZGVpbnRlcm5hbCkKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAidGVzdC5odWkiKSwKLSAgICAgICAgICAgICAgICAiXHUwMDAwXHUwMDAxXHUwMDAwIgotICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIGIiXHgwMFx4MDBceDAwXHgwMFx4MDAiLmRlY29kZSgidW5pY29kZS1pbnRlcm5hbCIsICJ0ZXN0Lmh1aSIpLAorICAgICAgICAgICAgICAgICAgICAiXHUwMDAwXHUwMDAxXHUwMDAwIgorICAgICAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2NhbGxiYWNrcyhzZWxmKToKICAgICAgICAgZGVmIGhhbmRsZXIxKGV4Yyk6CkBAIC0zNTUsNyArMzY0LDcgQEAKICAgICAgICAgICAgIFsiYXNjaWkiLCAiXHVmZmZmeCIsIDAsIDEsICJvdWNoIl0sCiAgICAgICAgICAgICAiJ2FzY2lpJyBjb2RlYyBjYW4ndCBlbmNvZGUgY2hhcmFjdGVyICdcXHVmZmZmJyBpbiBwb3NpdGlvbiAwOiBvdWNoIgogICAgICAgICApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgc2VsZi5jaGVja19leGNlcHRpb25vYmplY3RhcmdzKAogICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvciwKICAgICAgICAgICAgICAgICBbImFzY2lpIiwgIlxVMDAwMTAwMDB4IiwgMCwgMSwgIm91Y2giXSwKQEAgLTM5MCw3ICszOTksNyBAQAogICAgICAgICAgICAgWyJnXHVmZmZmcmsiLCAxLCAyLCAib3VjaCJdLAogICAgICAgICAgICAgImNhbid0IHRyYW5zbGF0ZSBjaGFyYWN0ZXIgJ1xcdWZmZmYnIGluIHBvc2l0aW9uIDE6IG91Y2giCiAgICAgICAgICkKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6CisgICAgICAgIGlmIFNJWkVPRl9XQ0hBUl9UID09IDQ6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX2V4Y2VwdGlvbm9iamVjdGFyZ3MoCiAgICAgICAgICAgICAgICAgVW5pY29kZVRyYW5zbGF0ZUVycm9yLAogICAgICAgICAgICAgICAgIFsiZ1xVMDAwMTAwMDByayIsIDEsIDIsICJvdWNoIl0sCkBAIC01NzcsMzEgKzU4NiwzMCBAQAogICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXHVmZmZmIiwgMCwgMSwgIm91Y2giKSksCiAgICAgICAgICAgICAoIlxcdWZmZmYiLCAxKQogICAgICAgICApCi0gICAgICAgICMgMSBvbiBVQ1MtNCBidWlsZHMsIDIgb24gVUNTLTIKLSAgICAgICAgbGVuX3dpZGUgPSBsZW4oIlxVMDAwMTAwMDAiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAotICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXFUwMDAxMDAwMCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGxlbl93aWRlLCAib3VjaCIpKSwKLSAgICAgICAgICAgICgiXFxVMDAwMTAwMDAiLCBsZW5fd2lkZSkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAotICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXFUwMDEwZmZmZiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGxlbl93aWRlLCAib3VjaCIpKSwKLSAgICAgICAgICAgICgiXFxVMDAxMGZmZmYiLCBsZW5fd2lkZSkKLSAgICAgICAgKQotICAgICAgICAjIExvbmUgc3Vycm9nYXRlcyAocmVnYXJkbGVzcyBvZiB1bmljb2RlIHdpZHRoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAotICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXHVkODAwIiwgMCwgMSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcdWQ4MDAiLCAxKQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMoCi0gICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsICJcdWRmZmYiLCAwLCAxLCAib3VjaCIpKSwKLSAgICAgICAgICAgICgiXFx1ZGZmZiIsIDEpCi0gICAgICAgICkKKyAgICAgICAgaWYgU0laRU9GX1dDSEFSX1QgPiAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMoCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXFUwMDAxMDAwMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAoIlxcVTAwMDEwMDAwIiwgMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAxMGZmZmYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgIm91Y2giKSksCisgICAgICAgICAgICAgICAgKCJcXFUwMDEwZmZmZiIsIDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICAjIExvbmUgc3Vycm9nYXRlcyAocmVnYXJkbGVzcyBvZiB1bmljb2RlIHdpZHRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMoCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXHVkODAwIiwgMCwgMSwgIm91Y2giKSksCisgICAgICAgICAgICAgICAgKCJcXHVkODAwIiwgMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZGZmZiIsIDAsIDEsICJvdWNoIikpLAorICAgICAgICAgICAgICAgICgiXFx1ZGZmZiIsIDEpCisgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9iYWRoYW5kbGVycmVzdWx0cyhzZWxmKToKICAgICAgICAgcmVzdWx0cyA9ICggNDIsICJmb28iLCAoMSwyLDMpLCAoImZvbyIsIDEsIDMpLCAoImZvbyIsIE5vbmUpLCAoImZvbyIsKSwgKCJmb28iLCAxLCAzKSwgKCJmb28iLCBOb25lKSwgKCJmb28iLCkgKQpAQCAtNjIyLDEyICs2MzAsMTQgQEAKICAgICAgICAgICAgICAgICAoInV0Zi03IiwgYiIreC0iKSwKICAgICAgICAgICAgICAgICAoInVuaWNvZGUtaW50ZXJuYWwiLCBiIlx4MDAiKSwKICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgYnl0ZXMuZGVjb2RlLAotICAgICAgICAgICAgICAgICAgICBlbmMsCi0gICAgICAgICAgICAgICAgICAgICJ0ZXN0LmJhZGhhbmRsZXIiCi0gICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMuZGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgZW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QuYmFkaGFuZGxlciIKKyAgICAgICAgICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfbG9va3VwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5zdHJpY3RfZXJyb3JzLCBjb2RlY3MubG9va3VwX2Vycm9yKCJzdHJpY3QiKSkKQEAgLTY3OSw3ICs2ODksNyBAQAogICAgICAgICAjIFB5dGhvbi9jb2RlY3MuYzo6UHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycygpCiAgICAgICAgICMgYW5kIGlubGluZSBpbXBsZW1lbnRhdGlvbnMKICAgICAgICAgdiA9ICgxLCA1LCAxMCwgNTAsIDEwMCwgNTAwLCAxMDAwLCA1MDAwLCAxMDAwMCwgNTAwMDApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlPj0xMDAwMDA6CisgICAgICAgIGlmIFNJWkVPRl9XQ0hBUl9UID09IDQ6CiAgICAgICAgICAgICB2ICs9ICgxMDAwMDAsIDUwMDAwMCwgMTAwMDAwMCkKICAgICAgICAgcyA9ICIiLmpvaW4oW2Nocih4KSBmb3IgeCBpbiB2XSkKICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0LnhtbGNoYXJyZWZyZXBsYWNlIiwgY29kZWNzLnhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycykKQEAgLTg0Myw4ICs4NTMsMTIgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgJXIiICUgZXhjKQogICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoInRlc3QucmVwbGFjaW5nIiwgcmVwbGFjaW5nKQotICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkYXRhLmRlY29kZSwgZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCisKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5kZWNvZGUoZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCiAKICAgICAgICAgZGVmIG11dGF0aW5nKGV4Yyk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4YywgVW5pY29kZURlY29kZUVycm9yKToKQEAgLTg1NSw4ICs4NjksMTEgQEAKICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0Lm11dGF0aW5nIiwgbXV0YXRpbmcpCiAgICAgICAgICMgSWYgdGhlIGRlY29kZXIgZG9lc24ndCBwaWNrIHVwIHRoZSBtb2RpZmllZCBpbnB1dCB0aGUgZm9sbG93aW5nCiAgICAgICAgICMgd2lsbCBsZWFkIHRvIGFuIGVuZGxlc3MgbG9vcAotICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkYXRhLmRlY29kZSwgZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgZm9yIChlbmNvZGluZywgZGF0YSkgaW4gYmFkZGF0YToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGRhdGEuZGVjb2RlKGVuY29kaW5nLCAidGVzdC5yZXBsYWNpbmciKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChDb2RlY0NhbGxiYWNrVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CmluZGV4IGRjYTlmMTAuLmIwOGM1ZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQpAQCAtNSw1NCArNSw1NyBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0dCMjMxMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0IyMzEyKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjIzMTInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2diMjMxMicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjIzMTInKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODFceDgxXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4ODFceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGFcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MVx4ODFceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YSIpLAorICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YVx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHU4MDRhIiksCiAgICAgICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAogICAgICkKIAotY2xhc3MgVGVzdF9HQksodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0dCSyhtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2JrJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYmsnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2JrJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGFcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1ODA0YSIpLAogICAgICAgICAoYiJceDgzXHgzNFx4ODNceDMxIiwgInN0cmljdCIsIE5vbmUpLAogICAgICAgICAoIlx1MzBmYiIsICJzdHJpY3QiLCBOb25lKSwKICAgICApCiAKLWNsYXNzIFRlc3RfR0IxODAzMCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0IxODAzMChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IxODAzMCcKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2IxODAzMCcpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjE4MDMwJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGFcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1ODA0YSIpLAotICAgICAgICAoYiJhYmNceDg0XHgzOVx4ODRceDM5XHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4NFx4MzlceDg0XHgzOVx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkOVx1ZmZmZDlcdTgwNGEiKSwKICAgICAgICAgKCJcdTMwZmIiLCAic3RyaWN0IiwgYiJceDgxOVx4YTc5IiksCisgICAgICAgIChiImFiY1x4ODRceDMyXHg4MFx4ODBkZWYiLCAicmVwbGFjZSIsICdhYmNcdWZmZmQyXHVmZmZkXHVmZmZkZGVmJyksCisgICAgICAgIChiImFiY1x4ODFceDMwXHg4MVx4MzBkZWYiLCAic3RyaWN0IiwgJ2FiY1x4ODBkZWYnKSwKKyAgICAgICAgKGIiYWJjXHg4Nlx4MzBceDgxXHgzMGRlZiIsICJyZXBsYWNlIiwgJ2FiY1x1ZmZmZDBcdWZmZmQwZGVmJyksCiAgICAgKQogICAgIGhhc19pc28xMDY0NiA9IFRydWUKIAotY2xhc3MgVGVzdF9IWih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfSFoobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2h6JwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdoeicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdoeicpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyB0ZXN0ICd+XG4nICgzIGxpbmVzKQogICAgICAgICAoYidUaGlzIHNlbnRlbmNlIGlzIGluIEFTQ0lJLlxuJwpAQCAtNzQsOSArNzcsMTEgQEAKICAgICAgICAgICdcdTVkZjFcdTYyNDBcdTRlMGRcdTZiMzJcdWZmMGNcdTUyZmZcdTY1YmRcdTY1YmNcdTRlYmFcdTMwMDInCiAgICAgICAgICAnQnllLlxuJyksCiAgICAgICAgICMgaW52YWxpZCBieXRlcwotICAgICAgICAoYidhYn5jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEZCcpLAorICAgICAgICAoYidhYn5jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEY2QnKSwKICAgICAgICAgKGInYWJceGZmY2QnLCAncmVwbGFjZScsICdhYlx1RkZGRGNkJyksCiAgICAgICAgIChiJ2FifntceDgxXHg4MVx4NDFceDQ0fn1jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEXHVGRkZEXHU4MDRBY2QnKSwKKyAgICAgICAgKGInYWJ+e1x4NDFceDQ0fn1jZCcsICdyZXBsYWNlJywgJ2FiXHU4MDRBY2QnKSwKKyAgICAgICAgKGIiYWJ+e1x4NzlceDc5XHg0MVx4NDR+fWNkIiwgInJlcGxhY2UiLCAiYWJcdWZmZmRcdWZmZmRcdTgwNGFjZCIpLAogICAgICkKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKaW5kZXggY2NkYzBiNC4uMzEzNjNmNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CkBAIC01LDE4ICs1LDE4IEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RfQmlnNUhLU0NTKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9CaWc1SEtTQ1MobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzVoa3NjcycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNWhrc2NzJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2JpZzVoa3NjcycpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwXHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQppbmRleCA4YzZlOGE1Li5lNGMxODM5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CkBAIC0zLDcgKzMsNyBAQAogIyBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSVNPIDIwMjIgZW5jb2RpbmdzLgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBDT01NT05fQ09ERUNfVEVTVFMgPSAoCkBAIC0xMywyMyArMTMsMjMgQEAKICAgICAgICAgKGInYWJceDFCJGRlZicsICdyZXBsYWNlJywgJ2FiXHVGRkZEJyksCiAgICAgKQogCi1jbGFzcyBUZXN0X0lTTzIwMjJfSlAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfSlAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfanAnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfanAnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiXHgxQk5kZWYnKSwKICAgICApCiAKLWNsYXNzIFRlc3RfSVNPMjAyMl9KUDIodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfSlAyKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdpc28yMDIyX2pwXzInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfanAnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiZGVmJyksCiAgICAgKQogCi1jbGFzcyBUZXN0X0lTTzIwMjJfS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfS1IobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfa3InKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9rcicpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiXHgxQk5kZWYnKSwKICAgICApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQppbmRleCBmNTZhMzczLi4zMGM5ZTE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKQEAgLTUsNjAgKzUsNjcgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDkzMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5MzIobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTMyJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgxXHgwMFx4ODJceDg0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhmOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODFceDAwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDQiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDRcdWZmZmQiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NCIsICJpZ25vcmUiLCAgImFiY1x1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHgwMFx1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0XHg4OCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx4MDBcdWZmNDRcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NCIsICJpZ25vcmUiLCAgImFiY1x4MDBcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJceEVCeHkiLCAicmVwbGFjZSIsICJhYlx1RkZGRHh5IiksCisgICAgICAgIChiImFiXHhGMFx4Mzl4eSIsICJyZXBsYWNlIiwgImFiXHVGRkZEOXh5IiksCisgICAgICAgIChiImFiXHhFQVx4RjB4eSIsICJyZXBsYWNlIiwgJ2FiXHVmZmZkXHVlMDM4eScpLAogICAgICAgICAjIHNqaXMgdnMgY3A5MzIKICAgICAgICAgKGIiXFxceDdlIiwgInJlcGxhY2UiLCAiXFxceDdlIiksCiAgICAgICAgIChiIlx4ODFceDVmXHg4MVx4NjFceDgxXHg3YyIsICJyZXBsYWNlIiwgIlx1ZmYzY1x1MjIyNVx1ZmYwZCIpLAogICAgICkKIAotY2xhc3MgVGVzdF9FVUNfSklTWDAyMTModGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAorZXVjX2NvbW1vbnRlc3RzID0gKAorICAgICMgaW52YWxpZCBieXRlcworICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAorICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTc5NTYiKSwKKyAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Nzk1Nlx1ZmZmZCIpLAorICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKKyAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKKyAgICAoYiJhYmNceDhmXHg4M1x4ODMiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmZmQiKSwKKyAgICAoYiJceDgyXHhGQ3h5IiwgInJlcGxhY2UiLCAiXHVmZmZkXHVmZmZkeHkiKSwKKyAgICAoYiJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKKyAgICAoYiJceGExXHhjMCIsICJzdHJpY3QiLCAiXHVmZjNjIiksCisgICAgKGIiXHhhMVx4YzBcXCIsICJzdHJpY3QiLCAiXHVmZjNjXFwiKSwKKyAgICAoYiJceDhlWFkiLCAicmVwbGFjZSIsICJcdWZmZmRYWSIpLAorKQorCitjbGFzcyBUZXN0X0VVQ19KSVNfMjAwNChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGVuY29kaW5nID0gJ2V1Y19qaXN4MDIxMycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2ppc3gwMjEzJykKLSAgICBjb2RlY3Rlc3RzID0gKAotICAgICAgICAjIGludmFsaWQgYnl0ZXMKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU3OTU2IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU3OTU2XHVmZmZkIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKLSAgICAgICAgKGIiYWJjXHg4Zlx4ODNceDgzIiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkIiksCi0gICAgICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAotICAgICAgICAoYiJceGExXHhjMCIsICJzdHJpY3QiLCAiXHVmZjNjIiksCi0gICAgKQorICAgIGVuY29kaW5nID0gJ2V1Y19qaXNfMjAwNCcKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qaXN4MDIxMycpCisgICAgY29kZWN0ZXN0cyA9IGV1Y19jb21tb250ZXN0cwogICAgIHhtbGNoYXJuYW1ldGVzdCA9ICgKICAgICAgICAgIlx4YWJcdTIxMWNceGJiID0gXHUyMzI5XHUxMjM0XHUyMzJhIiwKICAgICAgICAgYiJceGE5XHhhOCZyZWFsO1x4YTlceGIyID0gJmxhbmc7JiM0NjYwOyZyYW5nOyIKICAgICApCiAKLWV1Y2pwX2NvbW1vbnRlc3RzID0gKAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTc5NTYiKSwKLSAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Nzk1Nlx1ZmZmZCIpLAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKLSAgICAoYiJhYmNceDhmXHg4M1x4ODMiLCAicmVwbGFjZSIsICJhYmNcdWZmZmQiKSwKLSAgICAoYiJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKLSkKK2NsYXNzIFRlc3RfRVVDX0pJU1gwMjEzKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZW5jb2RpbmcgPSAnZXVjX2ppc3gwMjEzJworICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2ppc3gwMjEzJykKKyAgICBjb2RlY3Rlc3RzID0gZXVjX2NvbW1vbnRlc3RzCisgICAgeG1sY2hhcm5hbWV0ZXN0ID0gKAorICAgICAgICAiXHhhYlx1MjExY1x4YmIgPSBcdTIzMjlcdTEyMzRcdTIzMmEiLAorICAgICAgICBiIlx4YTlceGE4JnJlYWw7XHhhOVx4YjIgPSAmbGFuZzsmIzQ2NjA7JnJhbmc7IgorICAgICkKIAotY2xhc3MgVGVzdF9FVUNfSlBfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwKK2NsYXNzIFRlc3RfRVVDX0pQX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfanAnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qcCcpCi0gICAgY29kZWN0ZXN0cyA9IGV1Y2pwX2NvbW1vbnRlc3RzICsgKAotICAgICAgICAoYiJceGExXHhjMFxcIiwgInN0cmljdCIsICJcdWZmM2NcXCIpLAorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2pwJykKKyAgICBjb2RlY3Rlc3RzID0gZXVjX2NvbW1vbnRlc3RzICsgKAogICAgICAgICAoIlx4YTUiLCAic3RyaWN0IiwgYiJceDVjIiksCiAgICAgICAgICgiXHUyMDNlIiwgInN0cmljdCIsIGIiXHg3ZSIpLAogICAgICkKQEAgLTY2LDI5ICs3Myw0OCBAQAogc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgPSAoCiAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgKGIiYWJjXHhmOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmY0NCIpLAotICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRceDg4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0XHVmZmZkIiksCiAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NGRlZiIsICJpZ25vcmUiLCAgImFiY1x1ZmY0NGRlZiIpLAogKQogCi1jbGFzcyBUZXN0X1NKSVNfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9TSklTX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCisgICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDRcdWZmZmQiKSwKKwogICAgICAgICAoYiJcXFx4N2UiLCAic3RyaWN0IiwgIlxcXHg3ZSIpLAogICAgICAgICAoYiJceDgxXHg1Zlx4ODFceDYxXHg4MVx4N2MiLCAic3RyaWN0IiwgIlx1ZmYzY1x1MjAxNlx1MjIxMiIpLAorICAgICAgICAoYiJhYmNceDgxXHgzOSIsICJyZXBsYWNlIiwgICJhYmNcdWZmZmQ5IiksCisgICAgICAgIChiImFiY1x4RUFceEZDIiwgInJlcGxhY2UiLCAgImFiY1x1ZmZmZFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceEZGXHg1OCIsICJyZXBsYWNlIiwgICJhYmNcdWZmZmRYIiksCiAgICAgKQogCi1jbGFzcyBUZXN0X1NKSVNYMDIxMyh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfU0pJU18yMDA0KG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBlbmNvZGluZyA9ICdzaGlmdF9qaXNfMjAwNCcKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppcycpCisgICAgY29kZWN0ZXN0cyA9IHNoaWZ0amlzX2NvbW1vbmVuY3Rlc3RzICsgKAorICAgICAgICAoYiJcXFx4N2UiLCAic3RyaWN0IiwgIlx4YTVcdTIwM2UiKSwKKyAgICAgICAgKGIiXHg4MVx4NWZceDgxXHg2MVx4ODFceDdjIiwgInN0cmljdCIsICJcXFx1MjAxNlx1MjIxMiIpLAorICAgICAgICAoYiJhYmNceEVBXHhGQyIsICJzdHJpY3QiLCAgImFiY1x1NjRiZiIpLAorICAgICAgICAoYiJceDgxXHgzOXh5IiwgInJlcGxhY2UiLCAgIlx1ZmZmZDl4eSIpLAorICAgICAgICAoYiJceEZGXHg1OHh5IiwgInJlcGxhY2UiLCAgIlx1ZmZmZFh4eSIpLAorICAgICAgICAoYiJceDgwXHg4MFx4ODJceDg0eHkiLCAicmVwbGFjZSIsICJcdWZmZmRcdWZmZmRcdWZmNDR4eSIpLAorICAgICAgICAoYiJceDgwXHg4MFx4ODJceDg0XHg4OHh5IiwgInJlcGxhY2UiLCAiXHVmZmZkXHVmZmZkXHVmZjQ0XHU1ODY0eSIpLAorICAgICAgICAoYiJceEZDXHhGQnh5IiwgInJlcGxhY2UiLCAnXHVmZmZkXHU5NWI0eScpLAorICAgICkKKyAgICB4bWxjaGFybmFtZXRlc3QgPSAoCisgICAgICAgICJceGFiXHUyMTFjXHhiYiA9IFx1MjMyOVx1MTIzNFx1MjMyYSIsCisgICAgICAgIGIiXHg4NUcmcmVhbDtceDg1USA9ICZsYW5nOyYjNDY2MDsmcmFuZzsiCisgICAgKQorCitjbGFzcyBUZXN0X1NKSVNYMDIxMyhtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzeDAyMTMnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppc3gwMjEzJykKLSAgICBjb2RlY3Rlc3RzID0gKAotICAgICAgICAjIGludmFsaWQgYnl0ZXMKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ZjgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4ODJceDg0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRceDg4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0XHVmZmZkIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRkZWYiLCAiaWdub3JlIiwgICJhYmNcdWZmNDRkZWYiKSwKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppc3gwMjEzJykKKyAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCisgICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDRcdWZmZmQiKSwKKwogICAgICAgICAjIHNqaXMgdnMgY3A5MzIKICAgICAgICAgKGIiXFxceDdlIiwgInJlcGxhY2UiLCAiXHhhNVx1MjAzZSIpLAogICAgICAgICAoYiJceDgxXHg1Zlx4ODFceDYxXHg4MVx4N2MiLCAicmVwbGFjZSIsICJceDVjXHUyMDE2XHUyMjEyIiksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQppbmRleCBkZTRkYTdmLi40ZGQ2MDQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKQEAgLTUsMzAgKzUsMzAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDk0OSh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5NDkobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTQ5JwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHVjODk0IiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHVjODk0XHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdWM4OTQiKSwKICAgICApCiAKLWNsYXNzIFRlc3RfRVVDS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0VVQ0tSKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19rcicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdldWNfa3InKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWM4OTQiKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWM4OTRcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgJ2FiY1x1ZmZmZFx1ZmZmZFx1Yzg5NCcpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Yzg5NFx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHVjODk0IiksCiAKICAgICAgICAgIyBjb21wb3NlZCBtYWtlLXVwIHNlcXVlbmNlIGVycm9ycwpAQCAtNDAsMjYgKzQwLDMxIEBACiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTQiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTRceGQ0IiwgInN0cmljdCIsICJcdWM0ZDQiKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTRceGQwXHhhNFx4ZDR4IiwgInN0cmljdCIsICJcdWM0ZDR4IiksCi0gICAgICAgIChiImFceGE0XHhkNFx4YTRceGI2XHhhNCIsICJyZXBsYWNlIiwgImFcdWZmZmQiKSwKKyAgICAgICAgKGIiYVx4YTRceGQ0XHhhNFx4YjZceGE0IiwgInJlcGxhY2UiLCAnYVx1ZmZmZCcpLAogICAgICAgICAoYiJceGE0XHhkNFx4YTNceGI2XHhhNFx4ZDBceGE0XHhkNCIsICJzdHJpY3QiLCBOb25lKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTNceGQwXHhhNFx4ZDQiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTNceGQ0IiwgInN0cmljdCIsIE5vbmUpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGZmXHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZmZceGE0XHhkNCIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhmZiIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGZmXHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1ZmZmZFx1MzE2MFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZmZceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1YjU0NFx1ZmZmZFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhmZiIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1YjU0NFx1NTcyZFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4ZmZceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzRkNCcpLAogICAgICAgICAoYiJceGMxXHhjNCIsICJzdHJpY3QiLCAiXHVjODk0IiksCiAgICAgKQogCi1jbGFzcyBUZXN0X0pPSEFCKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9KT0hBQihtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnam9oYWInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjZDI3IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjZDI3XHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWNkMjciKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWNkMjdcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1Y2QyNyIpLAorICAgICAgICAoYiJceEQ4YWJjIiwgInJlcGxhY2UiLCAgIlx1RkZGRGFiYyIpLAorICAgICAgICAoYiJceEQ4XHhGRmFiYyIsICJyZXBsYWNlIiwgICJcdUZGRkRcdUZGRkRhYmMiKSwKKyAgICAgICAgKGIiXHg4NGJ4eSIsICJyZXBsYWNlIiwgICJcdUZGRkRieHkiKSwKKyAgICAgICAgKGIiXHg4Q0J4eSIsICJyZXBsYWNlIiwgICJcdUZGRkRCeHkiKSwKICAgICApCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CmluZGV4IDEyZDNjOWYuLjk2MjQ1YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQpAQCAtNSwxOCArNSwxOCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0JpZzUodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0JpZzUobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzUnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2JpZzUnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNScpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwXHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKaW5kZXggMDYzOTE5ZC4uMWE3NjFjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKQEAgLTUsMjEgKzUsMjEgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdEdCMjMxMk1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RHQjIzMTJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjIzMTInCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1DTi5UWFQnCiAKLWNsYXNzIFRlc3RHQktNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0R0JLTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2JrJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvVkVORE9SUy8nIFwKICAgICAgICAgICAgICAgICAgJ01JQ1NGVC9XSU5ET1dTL0NQOTM2LlRYVCcKIAotY2xhc3MgVGVzdEdCMTgwMzBNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0R0IxODAzME1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IxODAzMCcKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3JlcG9zL2ljdS9kYXRhLycgXApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQppbmRleCBiYmUxZjJmLi41ZjRlN2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQpAQCAtNSwxMCArNSwxMCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0QmlnNUhLU0NTTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEJpZzVIS1NDU01hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdiaWc1aGtzY3MnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0JJRzVIS1NDUy0yMDA0LlRYVCcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKaW5kZXggNjUyYmQ4MS4uMWZkYmY2MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKQEAgLTUsMTAgKzUsMTAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdENQOTMyTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdENQOTMyTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5MzInCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC8nIFwKQEAgLTI0LDE0ICsyNCwxNCBAQAogICAgICAgICBzdXBtYXBzLmFwcGVuZCgoYnl0ZXMoW2ldKSwgY2hyKGkrMHhmZWMwKSkpCiAKIAotY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2pwJwogICAgIG1hcGZpbGVuYW1lID0gJ0VVQy1KUC5UWFQnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1KUC5UWFQnCiAKIAotY2xhc3MgVGVzdFNKSVNDT01QQVRNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0U0pJU0NPTVBBVE1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzJwogICAgIG1hcGZpbGVuYW1lID0gJ1NISUZUSklTLlRYVCcKQEAgLTQ2LDE0ICs0NiwxNCBAQAogICAgICAgICAoYidceDgxXycsICdcXCcpLAogICAgIF0KIAotY2xhc3MgVGVzdEVVQ0pJU1gwMjEzTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0pJU1gwMjEzTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2ppc3gwMjEzJwogICAgIG1hcGZpbGVuYW1lID0gJ0VVQy1KSVNYMDIxMy5UWFQnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1KSVNYMDIxMy5UWFQnCiAKIAotY2xhc3MgVGVzdFNKSVNYMDIxM01hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RTSklTWDAyMTNNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzeDAyMTMnCiAgICAgbWFwZmlsZW5hbWUgPSAnU0hJRlRfSklTWDAyMTMuVFhUJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQppbmRleCBkOTA5YzhiLi4wMzU2NDAyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQpAQCAtNSwxNyArNSwxNyBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0Q1A5NDlNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Q1A5NDlNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdjcDk0OScKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUJyBcCiAgICAgICAgICAgICAgICAgICcvV0lORE9XUy9DUDk0OS5UWFQnCiAKIAotY2xhc3MgVGVzdEVVQ0tSTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0tSTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2tyJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3Blb3BsZS5mcmVlYnNkLm9yZy9+cGVya3kvaTE4bi9FVUMtS1IuVFhUJwpAQCAtMjUsNyArMjUsNyBAQAogICAgIHBhc3NfZGVjdGVzdCA9IFsoYidceGE0XHhkNCcsICdcdTMxNjQnKV0KIAogCi1jbGFzcyBUZXN0Sk9IQUJNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Sk9IQUJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdqb2hhYicKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL09CU09MRVRFL0VBU1RBU0lBLycgXApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQppbmRleCA2ZGI1MDkxLi40NDQ2N2UzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQpAQCAtNSwxNiArNSwxNiBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0QklHNU1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RCSUc1TWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdiaWc1JwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvT0JTT0xFVEUvJyBcCiAgICAgICAgICAgICAgICAgICdFQVNUQVNJQS9PVEhFUi9CSUc1LlRYVCcKIAotY2xhc3MgVGVzdENQOTUwTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdENQOTUwTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5NTAnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC8nIFwKQEAgLTIzLDYgKzIzLDkgQEAKICAgICAgICAgKGInXHhhMlx4Y2MnLCAnXHU1MzQxJyksCiAgICAgICAgIChiJ1x4YTJceGNlJywgJ1x1NTM0NScpLAogICAgIF0KKyAgICBjb2RlY3Rlc3RzID0gKAorICAgICAgICAoYiJceEZGeHkiLCAicmVwbGFjZSIsICAiXHVmZmZkeHkiKSwKKyAgICApCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKaW5kZXggMzQyNmE0ZC4uNTkxNzljNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKQEAgLTEsOCArMSwyNSBAQAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBfdGVzdGNhcGkKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBpbwogaW1wb3J0IGxvY2FsZQotaW1wb3J0IHN5cywgX3Rlc3RjYXBpLCBpbworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgIFZJU1RBX09SX0xBVEVSID0gKHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpLm1ham9yID49IDYpCitlbHNlOgorICAgIFZJU1RBX09SX0xBVEVSID0gRmFsc2UKKwordHJ5OgorICAgIGltcG9ydCBjdHlwZXMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBjdHlwZXMgPSBOb25lCisgICAgU0laRU9GX1dDSEFSX1QgPSAtMQorZWxzZToKKyAgICBTSVpFT0ZfV0NIQVJfVCA9IGN0eXBlcy5zaXplb2YoY3R5cGVzLmNfd2NoYXIpCiAKIGNsYXNzIFF1ZXVlKG9iamVjdCk6CiAgICAgIiIiCkBAIC02NDQsOCArNjYxLDExMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY1x1ZDgwMGRlZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxVMDAwMTBmZmZcdUQ4MDAiLmVuY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMGZmZlx1RDgwMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgJ2NwNjUwMDEgaXMgYSBXaW5kb3dzLW9ubHkgY29kZWMnKQorY2xhc3MgQ1A2NTAwMVRlc3QoUmVhZFRlc3QpOgorICAgIGVuY29kaW5nID0gImNwNjUwMDEiCisKKyAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGMzXHhhOVx4ZTJceDgyXHhhYycpLAorICAgICAgICAgICAgKCdcVTAwMTBmZmZmJywgJ3N0cmljdCcsIGInXHhmNFx4OGZceGJmXHhiZicpLAorICAgICAgICBdCisgICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgorICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdpZ25vcmUnLCBiJycpLAorICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnc3Vycm9nYXRlcGFzcycsIGInXHhlZFx4YjJceDgwJyksCisgICAgICAgICAgICApKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVzdHMuYXBwZW5kKCgnXHVkYzgwJywgJ3N0cmljdCcsIGInXHhlZFx4YjJceDgwJykpCisgICAgICAgIGZvciB0ZXh0LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBlbmNvZGVkID0gdGV4dC5lbmNvZGUoJ2NwNjUwMDEnLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGVuY29kZSAlYSB0byBjcDY1MDAxIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHRleHQsIGVycm9ycywgZXJyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWQsIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAnJWEuZW5jb2RlKCJjcDY1MDAxIiwgJXIpPSVhICE9ICVhJworICAgICAgICAgICAgICAgICAgICAlICh0ZXh0LCBlcnJvcnMsIGVuY29kZWQsIGV4cGVjdGVkKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICB0ZXh0LmVuY29kZSwgImNwNjUwMDEiLCBlcnJvcnMpCisKKyAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKKyAgICAgICAgICAgIChiJ1x4YzNceGE5XHhlMlx4ODJceGFjJywgJ3N0cmljdCcsICdceGU5XHUyMGFjJyksCisgICAgICAgICAgICAoYidceGY0XHg4Zlx4YmZceGJmJywgJ3N0cmljdCcsICdcVTAwMTBmZmZmJyksCisgICAgICAgICAgICAoYidceGVmXHhiZlx4YmQnLCAnc3RyaWN0JywgJ1x1ZmZmZCcpLAorICAgICAgICAgICAgKGInW1x4YzNceGE5XScsICdzdHJpY3QnLCAnW1x4ZTldJyksCisgICAgICAgICAgICAjIGludmFsaWQgYnl0ZXMKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgIF0KKyAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6CisgICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZFx1ZmZmZF0nKSwKKyAgICAgICAgICAgICkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsICdbXHVkYzgwXScpLAorICAgICAgICAgICAgKSkKKyAgICAgICAgZm9yIHJhdywgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKKyAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCA9IHJhdy5kZWNvZGUoJ2NwNjUwMDEnLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGRlY29kZSAlYSBmcm9tIGNwNjUwMDEgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzPSVyOiAlcycgJSAocmF3LCBlcnJvcnMsIGVycikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgJyVhLmRlY29kZSgiY3A2NTAwMSIsICVyKT0lYSAhPSAlYScKKyAgICAgICAgICAgICAgICAgICAgJSAocmF3LCBlcnJvcnMsIGRlY29kZWQsIGV4cGVjdGVkKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICByYXcuZGVjb2RlLCAnY3A2NTAwMScsIGVycm9ycykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFZJU1RBX09SX0xBVEVSLCAncmVxdWlyZSBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyJykKKyAgICBkZWYgdGVzdF9sb25lX3N1cnJvZ2F0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgIlx1ZDgwMCIuZW5jb2RlLCAiY3A2NTAwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgYiJceGVkXHhhMFx4ODAiLmRlY29kZSwgImNwNjUwMDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tcXHVkYzgwXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAieG1sY2hhcnJlZnJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1smIzU2NDQ4O10nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW1x4ODBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJpZ25vcmUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbP10nKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVklTVEFfT1JfTEFURVIsICdyZXF1aXJlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXInKQorICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZXBhc3NfaGFuZGxlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjXHVkODAwZGVmIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXFUwMDAxMGZmZlx1RDgwMCIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIuZGVjb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMGZmZlx1RDgwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCisKKworCiBjbGFzcyBVVEY3VGVzdChSZWFkVGVzdCk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTciCiAKQEAgLTkwNiw2MSArMTAyOCw4MCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmksIHB1bnkuZGVjb2RlKCJwdW55Y29kZSIpKQogCiBjbGFzcyBVbmljb2RlSW50ZXJuYWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhTSVpFT0ZfV0NIQVJfVCA9PSA0LCAnc3BlY2lmaWMgdG8gMzItYml0IHdjaGFyX3QnKQogICAgIGRlZiB0ZXN0X2J1ZzEyNTEzMDAoc2VsZik6CiAgICAgICAgICMgRGVjb2Rpbmcgd2l0aCB1bmljb2RlX2ludGVybmFsIHVzZWQgdG8gbm90IGNvcnJlY3RseSBoYW5kbGUgImNvZGUKICAgICAgICAgIyBwb2ludHMiIGFib3ZlIDB4MTBmZmZmIG9uIFVDUy00IGJ1aWxkcy4KLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBvayA9IFsKLSAgICAgICAgICAgICAgICAoYiJceDAwXHgxMFx4ZmZceGZmIiwgIlxVMDAxMGZmZmYiKSwKLSAgICAgICAgICAgICAgICAoYiJceDAwXHgwMFx4MDFceDAxIiwgIlxVMDAwMDAxMDEiKSwKLSAgICAgICAgICAgICAgICAoYiIiLCAiIiksCi0gICAgICAgICAgICBdCi0gICAgICAgICAgICBub3Rfb2sgPSBbCi0gICAgICAgICAgICAgICAgYiJceDdmXHhmZlx4ZmZceGZmIiwKLSAgICAgICAgICAgICAgICBiIlx4ODBceDAwXHgwMFx4MDAiLAotICAgICAgICAgICAgICAgIGIiXHg4MVx4MDBceDAwXHgwMCIsCi0gICAgICAgICAgICAgICAgYiJceDAwIiwKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIiwKLSAgICAgICAgICAgIF0KLSAgICAgICAgICAgIGZvciBpbnRlcm5hbCwgdW5pIGluIG9rOgotICAgICAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6Ci0gICAgICAgICAgICAgICAgICAgIGludGVybmFsID0gYnl0ZXMocmV2ZXJzZWQoaW50ZXJuYWwpKQorICAgICAgICBvayA9IFsKKyAgICAgICAgICAgIChiIlx4MDBceDEwXHhmZlx4ZmYiLCAiXFUwMDEwZmZmZiIpLAorICAgICAgICAgICAgKGIiXHgwMFx4MDBceDAxXHgwMSIsICJcVTAwMDAwMTAxIiksCisgICAgICAgICAgICAoYiIiLCAiIiksCisgICAgICAgIF0KKyAgICAgICAgbm90X29rID0gWworICAgICAgICAgICAgYiJceDdmXHhmZlx4ZmZceGZmIiwKKyAgICAgICAgICAgIGIiXHg4MFx4MDBceDAwXHgwMCIsCisgICAgICAgICAgICBiIlx4ODFceDAwXHgwMFx4MDAiLAorICAgICAgICAgICAgYiJceDAwIiwKKyAgICAgICAgICAgIGIiXHgwMFx4MDBceDAwXHgwMFx4MDAiLAorICAgICAgICBdCisgICAgICAgIGZvciBpbnRlcm5hbCwgdW5pIGluIG9rOgorICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKKyAgICAgICAgICAgICAgICBpbnRlcm5hbCA9IGJ5dGVzKHJldmVyc2VkKGludGVybmFsKSkKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pLCBpbnRlcm5hbC5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKSkKLSAgICAgICAgICAgIGZvciBpbnRlcm5hbCBpbiBub3Rfb2s6Ci0gICAgICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWwgPSBieXRlcyhyZXZlcnNlZChpbnRlcm5hbCkpCisgICAgICAgIGZvciBpbnRlcm5hbCBpbiBub3Rfb2s6CisgICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgorICAgICAgICAgICAgICAgIGludGVybmFsID0gYnl0ZXMocmV2ZXJzZWQoaW50ZXJuYWwpKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBpbnRlcm5hbC5kZWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCIpCisgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CisgICAgICAgICAgICBpbnZhbGlkID0gYiJceDAwXHgwMFx4MTFceDAwIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW52YWxpZCA9IGIiXHgwMFx4MTFceDAwXHgwMCIKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkLmRlY29kZSwgInVuaWNvZGVfaW50ZXJuYWwiKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW52YWxpZC5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiLCAicmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHVmZmZkJykKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yX2F0dHJpYnV0ZXMoc2VsZik6Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgdHJ5OgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCd1bmljb2RlX2ludGVybmFsIGNvZGVjIGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgxMVx4MTFceDAwIi5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKQotICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBleDoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ1bmljb2RlX2ludGVybmFsIiwgZXguZW5jb2RpbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgxMVx4MTFceDAwIiwgZXgub2JqZWN0KQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgZXguc3RhcnQpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBleC5lbmQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ1bmljb2RlX2ludGVybmFsIiwgZXguZW5jb2RpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHgwMFx4MDBceDAwXHgwMFx4MDBceDExXHgxMVx4MDAiLCBleC5vYmplY3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGV4LnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBleC5lbmQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0laRU9GX1dDSEFSX1QgPT0gNCwgJ3NwZWNpZmljIHRvIDMyLWJpdCB3Y2hhcl90JykKICAgICBkZWYgdGVzdF9kZWNvZGVfY2FsbGJhY2soc2VsZik6Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJVbmljb2RlSW50ZXJuYWxUZXN0IiwgY29kZWNzLmlnbm9yZV9lcnJvcnMpCi0gICAgICAgICAgICBkZWNvZGVyID0gY29kZWNzLmdldGRlY29kZXIoInVuaWNvZGVfaW50ZXJuYWwiKQorICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoIlVuaWNvZGVJbnRlcm5hbFRlc3QiLCBjb2RlY3MuaWdub3JlX2Vycm9ycykKKyAgICAgICAgZGVjb2RlciA9IGNvZGVjcy5nZXRkZWNvZGVyKCJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIGFiID0gImFiIi5lbmNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKS5kZWNvZGUoKQogICAgICAgICAgICAgaWdub3JlZCA9IGRlY29kZXIoYnl0ZXMoIiVzXHgyMlx4MjJceDIyXHgyMiVzIiAlIChhYls6NF0sIGFiWzQ6XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNjaWkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmljb2RlSW50ZXJuYWxUZXN0IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJhYiIsIDEyKSwgaWdub3JlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoImFiIiwgMTIpLCBpZ25vcmVkKQogCiAgICAgZGVmIHRlc3RfZW5jb2RlX2xlbmd0aChzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAzNzM5Ci0gICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0ZW5jb2RlcigidW5pY29kZV9pbnRlcm5hbCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlcigiYSIpWzFdLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIoIlx4ZTlcdTAxNDIiKVsxXSwgMikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgSXNzdWUgMzczOQorICAgICAgICAgICAgZW5jb2RlciA9IGNvZGVjcy5nZXRlbmNvZGVyKCJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlcigiYSIpWzFdLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVyKCJceGU5XHUwMTQyIilbMV0sIDIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZXNjYXBlX2VuY29kZShicidceDAwJylbMV0sIDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lc2NhcGVfZW5jb2RlKGJyJ1x4MDAnKVsxXSwgNCkKIAogIyBGcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpZG4vZHJhZnQtam9zZWZzc29uLWlkbi10ZXN0LXZlY3RvcnMuaHRtbAogbmFtZXByZXBfdGVzdHMgPSBbCkBAIC0xMjg0LDcgKzE0MjUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVmLnJlYWQoKSwgYidcXFx4ZDVcblx4MDBceDAwXHhhZScpCiAKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBlZiA9IGNvZGVjcy5FbmNvZGVkRmlsZShmLCAndXRmLTgnLCAnbGF0aW4xJykKKyAgICAgICAgZWYgPSBjb2RlY3MuRW5jb2RlZEZpbGUoZiwgJ3V0Zi04JywgJ2xhdGluLTEnKQogICAgICAgICBlZi53cml0ZShiJ1x4YzNceGJjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldHZhbHVlKCksIGInXHhmYycpCiAKQEAgLTE0MTYsMTAgKzE1NTcsMTMgQEAKICAgICAgICAgICAgIGVsaWYgZW5jb2RpbmcgPT0gImxhdGluXzEiOgogICAgICAgICAgICAgICAgIG5hbWUgPSAibGF0aW5fMSIKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RpbmcucmVwbGFjZSgiXyIsICItIiksIG5hbWUucmVwbGFjZSgiXyIsICItIikpCi0gICAgICAgICAgICAoYiwgc2l6ZSkgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgbGVuKHMpLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoc2l6ZSwgbGVuKHMpLCBlbmNvZGluZykpCi0gICAgICAgICAgICAoY2hhcnMsIHNpemUpID0gY29kZWNzLmdldGRlY29kZXIoZW5jb2RpbmcpKGIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYXJzLCBzLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoY2hhcnMsIHMsIGVuY29kaW5nKSkKKworICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgIyB1bmljb2RlLWludGVybmFsIGhhcyBiZWVuIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAoYiwgc2l6ZSkgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGxlbihzKSwgIiVyICE9ICVyIChlbmNvZGluZz0lcikiICUgKHNpemUsIGxlbihzKSwgZW5jb2RpbmcpKQorICAgICAgICAgICAgICAgIChjaGFycywgc2l6ZSkgPSBjb2RlY3MuZ2V0ZGVjb2RlcihlbmNvZGluZykoYikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYXJzLCBzLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoY2hhcnMsIHMsIGVuY29kaW5nKSkKIAogICAgICAgICAgICAgaWYgZW5jb2Rpbmcgbm90IGluIGJyb2tlbl91bmljb2RlX3dpdGhfc3RyZWFtczoKICAgICAgICAgICAgICAgICAjIGNoZWNrIHN0cmVhbSByZWFkZXIvd3JpdGVyCkBAIC0xNTIzLDcgKzE2NjcsOSBAQAogICAgIGRlZiB0ZXN0X2JhZF9lbmNvZGVfYXJncyhzZWxmKToKICAgICAgICAgZm9yIGVuY29kaW5nIGluIGFsbF91bmljb2RlX2VuY29kaW5nczoKICAgICAgICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZW5jb2RlcikKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlbmNvZGVyKQogCiAgICAgZGVmIHRlc3RfZW5jb2RpbmdfbWFwX3R5cGVfaW5pdGlhbGl6ZWQoc2VsZik6CiAgICAgICAgIGZyb20gZW5jb2RpbmdzIGltcG9ydCBjcDExNDAKQEAgLTE2MTUsNiArMTc2MSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXHUxMjM0IiksICgiXHUxMjM0IiwgNikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUoYnIiXHUxMjM0IiksICgiXHUxMjM0IiwgNikpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlLCBiciJcVTAwMTEwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJyZXBsYWNlIiksICgiXHVmZmZkIiwgMTApKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUsIGJyIlxVMDAxMTAwMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJyZXBsYWNlIiksICgiXHVmZmZkIiwgMTApKQorCiBjbGFzcyBTdXJyb2dhdGVFc2NhcGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3V0Zjgoc2VsZik6CkBAIC0xNjQ1LDcgKzE3OTcsNyBAQAogCiAgICAgZGVmIHRlc3RfbGF0aW4xKHNlbGYpOgogICAgICAgICAjIElzc3VlNjM3MwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcdWRjZTRcdWRjZWJcdWRjZWZcdWRjZjZcdWRjZmMiLmVuY29kZSgibGF0aW4xIiwgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcdWRjZTRcdWRjZWJcdWRjZWZcdWRjZjZcdWRjZmMiLmVuY29kZSgibGF0aW4tMSIsICJzdXJyb2dhdGVlc2NhcGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZTRceGViXHhlZlx4ZjZceGZjIikKIAogCkBAIC0xNzU0LDYgKzE5MDYsMTU1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvdXQsIGIiXHg4MCIpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAnY29kZSBwYWdlcyBhcmUgc3BlY2lmaWMgdG8gV2luZG93cycpCitjbGFzcyBDb2RlUGFnZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgQ1BfVVRGOCBpcyBhbHJlYWR5IHRlc3RlZCBieSBDUDY1MDAxVGVzdAorICAgIENQX1VURjggPSA2NTAwMQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jb2RlX3BhZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCAtMSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgLTEsIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFdpbmRvd3NFcnJvciwgY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUsIDEyMywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCAxMjMsIGInYScpCisKKyAgICBkZWYgdGVzdF9jb2RlX3BhZ2VfbmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRW5jb2RlRXJyb3IsICdjcDkzMicsCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2VuY29kZSwgOTMyLCAnXHhmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVW5pY29kZURlY29kZUVycm9yLCAnY3A5MzInLAorICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIDkzMiwgYidceDgxXHgwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVW5pY29kZURlY29kZUVycm9yLCAnQ1BfVVRGOCcsCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgc2VsZi5DUF9VVEY4LCBiJ1x4ZmYnKQorCisgICAgZGVmIGNoZWNrX2RlY29kZShzZWxmLCBjcCwgdGVzdHMpOgorICAgICAgICBmb3IgcmF3LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoY3AsIHJhdywgZXJyb3JzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBkZWNvZGUgJWEgZnJvbSAiY3AlcyIgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzPSVyOiAlcycgJSAocmF3LCBjcCwgZXJyb3JzLCBlcnIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZFswXSwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICclYS5kZWNvZGUoImNwJXMiLCAlcik9JWEgIT0gJWEnCisgICAgICAgICAgICAgICAgICAgICUgKHJhdywgY3AsIGVycm9ycywgZGVjb2RlZFswXSwgZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgICMgYXNzZXJ0IDAgPD0gZGVjb2RlZFsxXSA8PSBsZW4ocmF3KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGRlY29kZWRbMV0sIDApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb2RlZFsxXSwgbGVuKHJhdykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIGNwLCByYXcsIGVycm9ycykKKworICAgIGRlZiBjaGVja19lbmNvZGUoc2VsZiwgY3AsIHRlc3RzKToKKyAgICAgICAgZm9yIHRleHQsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CisgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGVuY29kZWQgPSBjb2RlY3MuY29kZV9wYWdlX2VuY29kZShjcCwgdGV4dCwgZXJyb3JzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBlbmNvZGUgJWEgdG8gImNwJXMiIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHRleHQsIGNwLCBlcnJvcnMsIGVycikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkWzBdLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgJyVhLmVuY29kZSgiY3AlcyIsICVyKT0lYSAhPSAlYScKKyAgICAgICAgICAgICAgICAgICAgJSAodGV4dCwgY3AsIGVycm9ycywgZW5jb2RlZFswXSwgZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZFsxXSwgbGVuKHRleHQpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCBjcCwgdGV4dCwgZXJyb3JzKQorCisgICAgZGVmIHRlc3RfY3A5MzIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKDkzMiwgKAorICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHVmZjQ0XHU5YTNlJywgJ3N0cmljdCcsIGInXHg4Mlx4ODRceGU5XHg4MCcpLAorICAgICAgICAgICAgIyB0ZXN0IGVycm9yIGhhbmRsZXJzCisgICAgICAgICAgICAoJ1x4ZmYnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoJ1tceGZmXScsICdpZ25vcmUnLCBiJ1tdJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICdyZXBsYWNlJywgYidbeV0nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY10nLCAncmVwbGFjZScsIGInWz9dJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICdiYWNrc2xhc2hyZXBsYWNlJywgYidbXFx4ZmZdJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICd4bWxjaGFycmVmcmVwbGFjZScsIGInWyYjMjU1O10nKSwKKyAgICAgICAgKSkKKyAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoOTMyLCAoCisgICAgICAgICAgICAoYidhYmMnLCAnc3RyaWN0JywgJ2FiYycpLAorICAgICAgICAgICAgKGInXHg4Mlx4ODRceGU5XHg4MCcsICdzdHJpY3QnLCAnXHVmZjQ0XHU5YTNlJyksCisgICAgICAgICAgICAjIGludmFsaWQgYnl0ZXMKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgICAgICAoYidceDgxXHgwMGFiYycsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ2lnbm9yZScsICdceDAwYWJjJyksCisgICAgICAgICAgICAoYidceDgxXHgwMGFiYycsICdyZXBsYWNlJywgJ1x1ZmZmZFx4MDBhYmMnKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2NwMTI1MihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoMTI1MiwgKAorICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGU5XHg4MCcpLAorICAgICAgICAgICAgKCdceGZmJywgJ3N0cmljdCcsIGInXHhmZicpLAorICAgICAgICAgICAgKCdcdTAxNDEnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoJ1x1MDE0MScsICdpZ25vcmUnLCBiJycpLAorICAgICAgICAgICAgKCdcdTAxNDEnLCAncmVwbGFjZScsIGInTCcpLAorICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2RlY29kZSgxMjUyLCAoCisgICAgICAgICAgICAoYidhYmMnLCAnc3RyaWN0JywgJ2FiYycpLAorICAgICAgICAgICAgKGInXHhlOVx4ODAnLCAnc3RyaWN0JywgJ1x4ZTlcdTIwYWMnKSwKKyAgICAgICAgICAgIChiJ1x4ZmYnLCAnc3RyaWN0JywgJ1x4ZmYnKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2NwX3V0Zjcoc2VsZik6CisgICAgICAgIGNwID0gNjUwMDAKKyAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoY3AsICgKKyAgICAgICAgICAgICgnYWJjJywgJ3N0cmljdCcsIGInYWJjJyksCisgICAgICAgICAgICAoJ1x4ZTlcdTIwYWMnLCAnc3RyaWN0JywgIGInK0FPa2dyQS0nKSwKKyAgICAgICAgICAgICgnXFUwMDEwZmZmZicsICdzdHJpY3QnLCAgYicrMi8vZi93LScpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnc3RyaWN0JywgYicrM0lBLScpLAorICAgICAgICAgICAgKCdcdWZmZmQnLCAnc3RyaWN0JywgYicrLy8wLScpLAorICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2RlY29kZShjcCwgKAorICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKKyAgICAgICAgICAgIChiJytBT2tnckEtJywgJ3N0cmljdCcsICdceGU5XHUyMGFjJyksCisgICAgICAgICAgICAoYicrMi8vZi93LScsICdzdHJpY3QnLCAnXFUwMDEwZmZmZicpLAorICAgICAgICAgICAgKGInKzNJQS0nLCAnc3RyaWN0JywgJ1x1ZGM4MCcpLAorICAgICAgICAgICAgKGInKy8vMC0nLCAnc3RyaWN0JywgJ1x1ZmZmZCcpLAorICAgICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCisgICAgICAgICAgICAoYidbKy9dJywgJ3N0cmljdCcsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N0cmljdCcsICdbXHhmZl0nKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X211bHRpYnl0ZV9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoOTMyLCAoCisgICAgICAgICAgICAoYidceDg0XHhlOVx4ODAnLCAnaWdub3JlJywgJ1x1OWEzZScpLAorICAgICAgICAgICAgKGInXHg4NFx4ZTlceDgwJywgJ3JlcGxhY2UnLCAnXHVmZmZkXHU5YTNlJyksCisgICAgICAgICkpCisgICAgICAgIHNlbGYuY2hlY2tfZGVjb2RlKHNlbGYuQ1BfVVRGOCwgKAorICAgICAgICAgICAgKGInXHhmZlx4ZjRceDhmXHhiZlx4YmYnLCAnaWdub3JlJywgJ1xVMDAxMGZmZmYnKSwKKyAgICAgICAgICAgIChiJ1x4ZmZceGY0XHg4Zlx4YmZceGJmJywgJ3JlcGxhY2UnLCAnXHVmZmZkXFUwMDEwZmZmZicpLAorICAgICAgICApKQorICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKHNlbGYuQ1BfVVRGOCwgKAorICAgICAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ2lnbm9yZScsIGInW1x4ZjRceDhmXHhiZlx4YmZdJyksCisgICAgICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAncmVwbGFjZScsIGInW1x4ZjRceDhmXHhiZlx4YmY/XScpLAorICAgICAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2luY3JlbWVudGFsKHNlbGYpOgorICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLCBiJ1x4ODInLCAnc3RyaWN0JywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCcnLCAwKSkKKworICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidceGU5XHg4MFx4ZTknLCAnc3RyaWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnXHU5YTNlJywgMikpCisKKyAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKDkzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhlOVx4ODBceGU5XHg4MCcsICdzdHJpY3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCdcdTlhM2VcdTlhM2UnLCA0KSkKKworICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidhYmMnLCAnc3RyaWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnYWJjJywgMykpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBVVEYzMlRlc3QsCkBAIC0xNzY0LDYgKzIwNjUsNyBAQAogICAgICAgICBVVEYxNkJFVGVzdCwKICAgICAgICAgVVRGOFRlc3QsCiAgICAgICAgIFVURjhTaWdUZXN0LAorICAgICAgICBDUDY1MDAxVGVzdCwKICAgICAgICAgVVRGN1Rlc3QsCiAgICAgICAgIFVURjE2RXhUZXN0LAogICAgICAgICBSZWFkQnVmZmVyVGVzdCwKQEAgLTE3ODIsNiArMjA4NCw3IEBACiAgICAgICAgIFN1cnJvZ2F0ZUVzY2FwZVRlc3QsCiAgICAgICAgIEJvbVRlc3QsCiAgICAgICAgIFRyYW5zZm9ybUNvZGVjVGVzdCwKKyAgICAgICAgQ29kZVBhZ2VUZXN0LAogICAgICkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CmluZGV4IGY5ZGIwYjQuLmRmZDU0MzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CkBAIC0xLDcgKzEsNiBAQAotCiBpbXBvcnQgdGVzdC5zdXBwb3J0LCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgdW5saW5rLCB1bmxvYWQKLWltcG9ydCBvcywgc3lzCitpbXBvcnQgaW1wb3J0bGliLCBvcywgc3lzCiAKIGNsYXNzIENvZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2JhZF9jb2Rpbmcoc2VsZik6CkBAIC00MCw2ICszOSw3IEBACiAgICAgICAgICAgICBmLndyaXRlKCInQSB2ZXJ5IGxvbmcgc3RyaW5nICVzJ1xuIiAlICgiWCIgKiAxMDAwKSkKICAgICAgICAgICAgIGYuY2xvc2UoKQogCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CmluZGV4IDhkYzU1NTkuLjg4YzMxMjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQpAQCAtMSw2ICsxLDcgQEAKICIiIlVuaXQgdGVzdHMgZm9yIGNvbGxlY3Rpb25zLnB5LiIiIgogCiBpbXBvcnQgdW5pdHRlc3QsIGRvY3Rlc3QsIG9wZXJhdG9yCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBmb3JnZXQsIHVubGluawogaW1wb3J0IGluc3BlY3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgQ291bnRlciwgT3JkZXJlZERpY3QsIF9jb3VudF9lbGVtZW50cwpAQCAtMTAsMjEgKzExLDIwIEBACiBpbXBvcnQga2V5d29yZAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBfQ2hhaW5NYXAKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBTZXQsIE11dGFibGVTZXQKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBLZXlzVmlldywgSXRlbXNWaWV3LCBVc2VyRGljdAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgU2VxdWVuY2UsIE11dGFibGVTZXF1ZW5jZQotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQnl0ZVN0cmluZworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckRpY3QKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvcgorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2V0LCBNdXRhYmxlU2V0Citmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXF1ZW5jZSwgTXV0YWJsZVNlcXVlbmNlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQnl0ZVN0cmluZwogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgX0NoYWluTWFwIChoZWxwZXIgY2xhc3MgZm9yIGNvbmZpZ3BhcnNlcikKKyMjIyBDaGFpbk1hcCAoaGVscGVyIGNsYXNzIGZvciBjb25maWdwYXJzZXIgYW5kIHRoZSBzdHJpbmcgbW9kdWxlKQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotQ2hhaW5NYXAgPSBfQ2hhaW5NYXAgICMgcmVuYW1lIHRvIGtlZXAgdGVzdCBjb2RlIGluIHN5bmMgd2l0aCAzLjMgdmVyc2lvbgotCiBjbGFzcyBUZXN0Q2hhaW5NYXAodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgpAQCAtMTI4LDYgKzEyOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQuX19tb2R1bGVfXywgX19uYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQuX19nZXRpdGVtX18sIHR1cGxlLl9fZ2V0aXRlbV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvaW50Ll9maWVsZHMsICgneCcsICd5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NsYXNzIFBvaW50KHR1cGxlKScsIFBvaW50Ll9zb3VyY2UpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmFtZWR0dXBsZSwgJ2FiYyUnLCAnZWZnIGdoaScpICAgICAgICMgdHlwZSBoYXMgbm9uLWFscGhhIGNoYXIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmFtZWR0dXBsZSwgJ2NsYXNzJywgJ2VmZyBnaGknKSAgICAgICMgdHlwZSBoYXMga2V5d29yZApAQCAtMzI3LDYgKzMyOCwxNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoQigxKSksICdCKHg9MSknKQogCisgICAgZGVmIHRlc3Rfc291cmNlKHNlbGYpOgorICAgICAgICAjIHZlcmlmeSB0aGF0IF9zb3VyY2UgY2FuIGJlIHJ1biB0aHJvdWdoIGV4ZWMoKQorICAgICAgICB0bXAgPSBuYW1lZHR1cGxlKCdOVENvbG9yJywgJ3JlZCBncmVlbiBibHVlJykKKyAgICAgICAgZ2xvYmFscygpLnBvcCgnTlRDb2xvcicsIE5vbmUpICAgICAgICAgICMgcmVtb3ZlIGFydGlmYWN0cyBmcm9tIG90aGVyIHRlc3RzCisgICAgICAgIGV4ZWModG1wLl9zb3VyY2UsIGdsb2JhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignTlRDb2xvcicsIGdsb2JhbHMoKSkKKyAgICAgICAgYyA9IE5UQ29sb3IoMTAsIDIwLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSksICgxMCwgMjAsIDMwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVENvbG9yLl9maWVsZHMsICgncmVkJywgJ2dyZWVuJywgJ2JsdWUnKSkKKyAgICAgICAgZ2xvYmFscygpLnBvcCgnTlRDb2xvcicsIE5vbmUpICAgICAgICAgICMgY2xlYW4tdXAgYWZ0ZXIgdGhpcyB0ZXN0CisKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBBYnN0cmFjdCBCYXNlIENsYXNzZXMKQEAgLTcyOSw2ICs3NDEsNDQgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKE11dGFibGVTZXF1ZW5jZSwgJ19fY29udGFpbnNfXycsICdfX2l0ZXJfXycsCiAgICAgICAgICAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycsICdfX2RlbGl0ZW1fXycsICdpbnNlcnQnKQogCisgICAgZGVmIHRlc3RfTXV0YWJsZVNlcXVlbmNlX21peGlucyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBtaXhpbnMgb2YgTXV0YWJsZVNlcXVlbmNlIGJ5IGNyZWF0aW5nIGEgbWltaW5hbCBjb25jcmV0ZQorICAgICAgICAjIGNsYXNzIGluaGVyaXRlZCBmcm9tIGl0LgorICAgICAgICBjbGFzcyBNdXRhYmxlU2VxdWVuY2VTdWJjbGFzcyhNdXRhYmxlU2VxdWVuY2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYubHN0ID0gW10KKworICAgICAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sc3RbaW5kZXhdID0gdmFsdWUKKworICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5sc3RbaW5kZXhdCisKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBsZW4oc2VsZi5sc3QpCisKKyAgICAgICAgICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBpbmRleCk6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYubHN0W2luZGV4XQorCisgICAgICAgICAgICBkZWYgaW5zZXJ0KHNlbGYsIGluZGV4LCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sc3QuaW5zZXJ0KGluZGV4LCB2YWx1ZSkKKworICAgICAgICBtc3MgPSBNdXRhYmxlU2VxdWVuY2VTdWJjbGFzcygpCisgICAgICAgIG1zcy5hcHBlbmQoMCkKKyAgICAgICAgbXNzLmV4dGVuZCgoMSwgMiwgMywgNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWzNdLCAzKQorICAgICAgICBtc3MucmV2ZXJzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWzNdLCAxKQorICAgICAgICBtc3MucG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNzKSwgNCkKKyAgICAgICAgbXNzLnJlbW92ZSgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc3MpLCAzKQorICAgICAgICBtc3MgKz0gKDEwLCAyMCwgMzApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWy0xXSwgMzApCisgICAgICAgIG1zcy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDApCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgQ291bnRlcgpAQCAtODgyLDYgKzkzMiwyNyBAQAogICAgICAgICAgICAgICAgIHNldF9yZXN1bHQgPSBzZXRvcChzZXQocC5lbGVtZW50cygpKSwgc2V0KHEuZWxlbWVudHMoKSkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudGVyX3Jlc3VsdCwgZGljdC5mcm9ta2V5cyhzZXRfcmVzdWx0LCAxKSkKIAorICAgIGRlZiB0ZXN0X2lucGxhY2Vfb3BlcmF0aW9ucyhzZWxmKToKKyAgICAgICAgZWxlbWVudHMgPSAnYWJjZCcKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICAjIHRlc3QgcmFuZG9tIHBhaXJzIG9mIG11bHRpc2V0cworICAgICAgICAgICAgcCA9IENvdW50ZXIoZGljdCgoZWxlbSwgcmFuZHJhbmdlKC0yLDQpKSBmb3IgZWxlbSBpbiBlbGVtZW50cykpCisgICAgICAgICAgICBwLnVwZGF0ZShlPTEsIGY9LTEsIGc9MCkKKyAgICAgICAgICAgIHEgPSBDb3VudGVyKGRpY3QoKGVsZW0sIHJhbmRyYW5nZSgtMiw0KSkgZm9yIGVsZW0gaW4gZWxlbWVudHMpKQorICAgICAgICAgICAgcS51cGRhdGUoaD0xLCBpPS0xLCBqPTApCisgICAgICAgICAgICBmb3IgaW5wbGFjZV9vcCwgcmVndWxhcl9vcCBpbiBbCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pYWRkX18sIENvdW50ZXIuX19hZGRfXyksCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pc3ViX18sIENvdW50ZXIuX19zdWJfXyksCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pb3JfXywgQ291bnRlci5fX29yX18pLAorICAgICAgICAgICAgICAgIChDb3VudGVyLl9faWFuZF9fLCBDb3VudGVyLl9fYW5kX18pLAorICAgICAgICAgICAgXToKKyAgICAgICAgICAgICAgICBjID0gcC5jb3B5KCkKKyAgICAgICAgICAgICAgICBjX2lkID0gaWQoYykKKyAgICAgICAgICAgICAgICByZWd1bGFyX3Jlc3VsdCA9IHJlZ3VsYXJfb3AoYywgcSkKKyAgICAgICAgICAgICAgICBpbnBsYWNlX3Jlc3VsdCA9IGlucGxhY2Vfb3AoYywgcSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlucGxhY2VfcmVzdWx0LCByZWd1bGFyX3Jlc3VsdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGlucGxhY2VfcmVzdWx0KSwgY19pZCkKKwogICAgIGRlZiB0ZXN0X3N1YnRyYWN0KHNlbGYpOgogICAgICAgICBjID0gQ291bnRlcihhPS01LCBiPTAsIGM9NSwgZD0xMCwgZT0xNSxnPTQwKQogICAgICAgICBjLnN1YnRyYWN0KGE9MSwgYj0yLCBjPS0zLCBkPTEwLCBlPTIwLCBmPTMwLCBoPS01MCkKQEAgLTg5Myw2ICs5NjQsMTEgQEAKICAgICAgICAgYy5zdWJ0cmFjdCgnYWFhYWJiY2NlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBDb3VudGVyKGE9LTEsIGI9MCwgYz0tMSwgZD0xLCBlPS0xKSkKIAorICAgIGRlZiB0ZXN0X3VuYXJ5KHNlbGYpOgorICAgICAgICBjID0gQ291bnRlcihhPS01LCBiPTAsIGM9NSwgZD0xMCwgZT0xNSxnPTQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3QoK2MpLCBkaWN0KGM9NSwgZD0xMCwgZT0xNSwgZz00MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdCgtYyksIGRpY3QoYT01KSkKKwogICAgIGRlZiB0ZXN0X3JlcHJfbm9uc29ydGFibGUoc2VsZik6CiAgICAgICAgIGMgPSBDb3VudGVyKGE9MiwgYj1Ob25lKQogICAgICAgICByID0gcmVwcihjKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CmluZGV4IDU4ZWYyOTcuLjcyMzQyZjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKQEAgLTEsMTAgKzEsMTcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IF9hc3QKK2ltcG9ydCB0eXBlcwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFRlc3RTcGVjaWZpY3ModW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgZGVmIGNvbXBpbGVfc2luZ2xlKHNlbGYsIHNvdXJjZSk6CisgICAgICAgIGNvbXBpbGUoc291cmNlLCAiPHNpbmdsZT4iLCAic2luZ2xlIikKKworICAgIGRlZiBhc3NlcnRJbnZhbGlkU2luZ2xlKHNlbGYsIHNvdXJjZSk6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBzZWxmLmNvbXBpbGVfc2luZ2xlLCBzb3VyY2UpCisKICAgICBkZWYgdGVzdF9ub19lbmRpbmdfbmV3bGluZShzZWxmKToKICAgICAgICAgY29tcGlsZSgiaGkiLCAiPHRlc3Q+IiwgImV4ZWMiKQogICAgICAgICBjb21waWxlKCJoaVxyIiwgIjx0ZXN0PiIsICJleGVjIikKQEAgLTQzMyw2ICs0NDAsMzkgQEAKICAgICAgICAgYXN0LmJvZHkgPSBbX2FzdC5Cb29sT3AoKV0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCBhc3QsICc8YXN0PicsICdleGVjJykKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NhbWVfZmlsZW5hbWVfdXNlZChzZWxmKToKKyAgICAgICAgcyA9ICIiImRlZiBmKCk6IHBhc3NcbmRlZiBnKCk6IHBhc3MiIiIKKyAgICAgICAgYyA9IGNvbXBpbGUocywgIm15ZmlsZSIsICJleGVjIikKKyAgICAgICAgZm9yIG9iaiBpbiBjLmNvX2NvbnN0czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Db2RlVHlwZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvYmouY29fZmlsZW5hbWUsIGMuY29fZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF9zaW5nbGVfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMiIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoIlxuMSArIDIiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMlxuIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcblxuIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcdFx0XG4iKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMlx0XHRcbiAgICAgICAgIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDIgIyBvbmUgcGx1cyB0d28iKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxOyAyIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiaW1wb3J0IHN5czsgc3lzIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiZGVmIGYoKTpcbiAgIHBhc3MiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJ3aGlsZSBGYWxzZTpcbiAgIHBhc3MiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJpZiB4OlxuICAgZih4KSIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImlmIHg6XG4gICBmKHgpXG5lbHNlOlxuICAgZyh4KSIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImNsYXNzIFQ6XG4gICBwYXNzIikKKworICAgIGRlZiB0ZXN0X2JhZF9zaW5nbGVfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJzFcbjInKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2RlZiBmKCk6IHBhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2EgPSAxM1xuYiA9IDE4NycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZGVsIHhcbmRlbCB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRJbnZhbGlkU2luZ2xlKCdmKClcbmcoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZigpXG4jIGJsYWhcbmJsYWgoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZigpXG54eSAjIGJsYWhcbmJsYWgoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgneCA9IDUgIyBjb21tZW50XG54ID0gNlxuJykKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RTcGVjaWZpY3MpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CmluZGV4IDJhZmE5MzguLjZhZTQ1MGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CkBAIC0xOSw3ICsxOSw3IEBACiBmcm9tIGNvbmN1cnJlbnQgaW1wb3J0IGZ1dHVyZXMKIGZyb20gY29uY3VycmVudC5mdXR1cmVzLl9iYXNlIGltcG9ydCAoCiAgICAgUEVORElORywgUlVOTklORywgQ0FOQ0VMTEVELCBDQU5DRUxMRURfQU5EX05PVElGSUVELCBGSU5JU0hFRCwgRnV0dXJlKQotaW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcy5wcm9jZXNzCitmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcy5wcm9jZXNzIGltcG9ydCBCcm9rZW5Qcm9jZXNzUG9vbAogCiAKIGRlZiBjcmVhdGVfZnV0dXJlKHN0YXRlPVBFTkRJTkcsIGV4Y2VwdGlvbj1Ob25lLCByZXN1bHQ9Tm9uZSk6CkBAIC0zNCw3ICszNCw3IEBACiBSVU5OSU5HX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9UlVOTklORykKIENBTkNFTExFRF9GVVRVUkUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUNBTkNFTExFRCkKIENBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1DQU5DRUxMRURfQU5EX05PVElGSUVEKQotRVhDRVBUSU9OX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIGV4Y2VwdGlvbj1JT0Vycm9yKCkpCitFWENFUFRJT05fRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgZXhjZXB0aW9uPU9TRXJyb3IoKSkKIFNVQ0NFU1NGVUxfRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgcmVzdWx0PTQyKQogCiAKQEAgLTE2MCw3ICsxNjAsNyBAQAogICAgICAgICBwcm9jZXNzZXMgPSBzZWxmLmV4ZWN1dG9yLl9wcm9jZXNzZXMKICAgICAgICAgc2VsZi5leGVjdXRvci5zaHV0ZG93bigpCiAKLSAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzOgorICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCk6CiAgICAgICAgICAgICBwLmpvaW4oKQogCiAgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX3NodXRkb3duKHNlbGYpOgpAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZS5tYXAoYWJzLCByYW5nZSgtNSwgNSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzUsIDQsIDMsIDIsIDEsIDAsIDEsIDIsIDMsIDRdKQogCi0gICAgICAgIGZvciBwIGluIHByb2Nlc3NlczoKKyAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzLnZhbHVlcygpOgogICAgICAgICAgICAgcC5qb2luKCkKIAogICAgIGRlZiB0ZXN0X2RlbF9zaHV0ZG93bihzZWxmKToKQEAgLTE4MCw3ICsxODAsNyBAQAogICAgICAgICBkZWwgZXhlY3V0b3IKIAogICAgICAgICBxdWV1ZV9tYW5hZ2VtZW50X3RocmVhZC5qb2luKCkKLSAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzOgorICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCk6CiAgICAgICAgICAgICBwLmpvaW4oKQogCiAKQEAgLTI2OCwxNCArMjY4LDE0IEBACiAKICAgICBkZWYgdGVzdF90aW1lb3V0KHNlbGYpOgogICAgICAgICBmdXR1cmUxID0gc2VsZi5leGVjdXRvci5zdWJtaXQobXVsLCA2LCA3KQotICAgICAgICBmdXR1cmUyID0gc2VsZi5leGVjdXRvci5zdWJtaXQodGltZS5zbGVlcCwgMykKKyAgICAgICAgZnV0dXJlMiA9IHNlbGYuZXhlY3V0b3Iuc3VibWl0KHRpbWUuc2xlZXAsIDYpCiAKICAgICAgICAgZmluaXNoZWQsIHBlbmRpbmcgPSBmdXR1cmVzLndhaXQoCiAgICAgICAgICAgICAgICAgW0NBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFLAogICAgICAgICAgICAgICAgICBFWENFUFRJT05fRlVUVVJFLAogICAgICAgICAgICAgICAgICBTVUNDRVNTRlVMX0ZVVFVSRSwKICAgICAgICAgICAgICAgICAgZnV0dXJlMSwgZnV0dXJlMl0sCi0gICAgICAgICAgICAgICAgdGltZW91dD0xLjUsCisgICAgICAgICAgICAgICAgdGltZW91dD01LAogICAgICAgICAgICAgICAgIHJldHVybl93aGVuPWZ1dHVyZXMuQUxMX0NPTVBMRVRFRCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChbQ0FOQ0VMTEVEX0FORF9OT1RJRklFRF9GVVRVUkUsCkBAIC0zNzksOCArMzc5LDggQEAKICAgICAgICAgcmVzdWx0cyA9IFtdCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZvciBpIGluIHNlbGYuZXhlY3V0b3IubWFwKHRpbWUuc2xlZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEuNSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgNl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTUpOgogICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGkpCiAgICAgICAgIGV4Y2VwdCBmdXR1cmVzLlRpbWVvdXRFcnJvcjoKICAgICAgICAgICAgIHBhc3MKQEAgLTM4OSwxMyArMzg5LDM4IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbTm9uZSwgTm9uZV0sIHJlc3VsdHMpCiAKKyAgICBkZWYgdGVzdF9zaHV0ZG93bl9yYWNlX2lzc3VlMTI0NTYoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEyNDU2OiByYWNlIGNvbmRpdGlvbiBhdCBzaHV0ZG93biB3aGVyZSB0cnlpbmcgdG8gcG9zdCBhCisgICAgICAgICMgc2VudGluZWwgaW4gdGhlIGNhbGwgcXVldWUgYmxvY2tzICh0aGUgcXVldWUgaXMgZnVsbCB3aGlsZSBwcm9jZXNzZXMKKyAgICAgICAgIyBoYXZlIGV4aXRlZCkuCisgICAgICAgIHNlbGYuZXhlY3V0b3IubWFwKHN0ciwgWzJdICogKHNlbGYud29ya2VyX2NvdW50ICsgMSkpCisgICAgICAgIHNlbGYuZXhlY3V0b3Iuc2h1dGRvd24oKQorCiAKIGNsYXNzIFRocmVhZFBvb2xFeGVjdXRvclRlc3QoVGhyZWFkUG9vbE1peGluLCBFeGVjdXRvclRlc3QpOgotICAgIHBhc3MKKyAgICBkZWYgdGVzdF9tYXBfc3VibWl0c193aXRob3V0X2l0ZXJhdGlvbihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdmVyaWZ5aW5nIGlzc3VlIDExNzc3LiIiIgorICAgICAgICBmaW5pc2hlZCA9IFtdCisgICAgICAgIGRlZiByZWNvcmRfZmluaXNoZWQobik6CisgICAgICAgICAgICBmaW5pc2hlZC5hcHBlbmQobikKKworICAgICAgICBzZWxmLmV4ZWN1dG9yLm1hcChyZWNvcmRfZmluaXNoZWQsIHJhbmdlKDEwKSkKKyAgICAgICAgc2VsZi5leGVjdXRvci5zaHV0ZG93bih3YWl0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaW5pc2hlZCwgcmFuZ2UoMTApKQogCiAKIGNsYXNzIFByb2Nlc3NQb29sRXhlY3V0b3JUZXN0KFByb2Nlc3NQb29sTWl4aW4sIEV4ZWN1dG9yVGVzdCk6Ci0gICAgcGFzcworICAgIGRlZiB0ZXN0X2tpbGxlZF9jaGlsZChzZWxmKToKKyAgICAgICAgIyBXaGVuIGEgY2hpbGQgcHJvY2VzcyBpcyBhYnJ1cHRseSB0ZXJtaW5hdGVkLCB0aGUgd2hvbGUgcG9vbCBnZXRzCisgICAgICAgICMgImJyb2tlbiIuCisgICAgICAgIGZ1dHVyZXMgPSBbc2VsZi5leGVjdXRvci5zdWJtaXQodGltZS5zbGVlcCwgMyldCisgICAgICAgICMgR2V0IG9uZSBvZiB0aGUgcHJvY2Vzc2VzLCBhbmQgdGVybWluYXRlIChraWxsKSBpdAorICAgICAgICBwID0gbmV4dChpdGVyKHNlbGYuZXhlY3V0b3IuX3Byb2Nlc3Nlcy52YWx1ZXMoKSkpCisgICAgICAgIHAudGVybWluYXRlKCkKKyAgICAgICAgZm9yIGZ1dCBpbiBmdXR1cmVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnJva2VuUHJvY2Vzc1Bvb2wsIGZ1dC5yZXN1bHQpCisgICAgICAgICMgU3VibWl0dGluZyBvdGhlciBqb2JzIGZhaWxzIGFzIHdlbGwuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJyb2tlblByb2Nlc3NQb29sLCBzZWxmLmV4ZWN1dG9yLnN1Ym1pdCwgcG93LCAyLCA4KQogCiAKIGNsYXNzIEZ1dHVyZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ5OCw3ICs1MjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICc8RnV0dXJlIGF0IDB4WzAtOWEtZl0rIHN0YXRlPWNhbmNlbGxlZD4nKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KAogICAgICAgICAgICAgICAgIHJlcHIoRVhDRVBUSU9OX0ZVVFVSRSksCi0gICAgICAgICAgICAgICAgJzxGdXR1cmUgYXQgMHhbMC05YS1mXSsgc3RhdGU9ZmluaXNoZWQgcmFpc2VkIElPRXJyb3I+JykKKyAgICAgICAgICAgICAgICAnPEZ1dHVyZSBhdCAweFswLTlhLWZdKyBzdGF0ZT1maW5pc2hlZCByYWlzZWQgT1NFcnJvcj4nKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KAogICAgICAgICAgICAgICAgIHJlcHIoU1VDQ0VTU0ZVTF9GVVRVUkUpLAogICAgICAgICAgICAgICAgICc8RnV0dXJlIGF0IDB4WzAtOWEtZl0rIHN0YXRlPWZpbmlzaGVkIHJldHVybmVkIGludD4nKQpAQCAtNTA5LDcgKzUzNCw3IEBACiAgICAgICAgIGYyID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1SVU5OSU5HKQogICAgICAgICBmMyA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9Q0FOQ0VMTEVEKQogICAgICAgICBmNCA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9Q0FOQ0VMTEVEX0FORF9OT1RJRklFRCkKLSAgICAgICAgZjUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUZJTklTSEVELCBleGNlcHRpb249SU9FcnJvcigpKQorICAgICAgICBmNSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIGV4Y2VwdGlvbj1PU0Vycm9yKCkpCiAgICAgICAgIGY2ID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgcmVzdWx0PTUpCiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYxLmNhbmNlbCgpKQpAQCAtNTYzLDcgKzU4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTkNFTExFRF9GVVRVUkUucmVzdWx0LCB0aW1lb3V0PTApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGZ1dHVyZXMuQ2FuY2VsbGVkRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFLnJlc3VsdCwgdGltZW91dD0wKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBFWENFUFRJT05fRlVUVVJFLnJlc3VsdCwgdGltZW91dD0wKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBFWENFUFRJT05fRlVUVVJFLnJlc3VsdCwgdGltZW91dD0wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNVQ0NFU1NGVUxfRlVUVVJFLnJlc3VsdCh0aW1lb3V0PTApLCA0MikKIAogICAgIGRlZiB0ZXN0X3Jlc3VsdF93aXRoX3N1Y2Nlc3Moc2VsZik6CkBAIC02MDIsNyArNjI3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZnV0dXJlcy5DYW5jZWxsZWRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOQ0VMTEVEX0FORF9OT1RJRklFRF9GVVRVUkUuZXhjZXB0aW9uLCB0aW1lb3V0PTApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKEVYQ0VQVElPTl9GVVRVUkUuZXhjZXB0aW9uKHRpbWVvdXQ9MCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPRXJyb3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPU0Vycm9yKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTVUNDRVNTRlVMX0ZVVFVSRS5leGNlcHRpb24odGltZW91dD0wKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl93aXRoX3N1Y2Nlc3Moc2VsZik6CkBAIC02MTEsMTQgKzYzNiwxNCBAQAogICAgICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICAgICAgd2l0aCBmMS5fY29uZGl0aW9uOgogICAgICAgICAgICAgICAgIGYxLl9zdGF0ZSA9IEZJTklTSEVECi0gICAgICAgICAgICAgICAgZjEuX2V4Y2VwdGlvbiA9IElPRXJyb3IoKQorICAgICAgICAgICAgICAgIGYxLl9leGNlcHRpb24gPSBPU0Vycm9yKCkKICAgICAgICAgICAgICAgICBmMS5fY29uZGl0aW9uLm5vdGlmeV9hbGwoKQogCiAgICAgICAgIGYxID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1QRU5ESU5HKQogICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bm90aWZpY2F0aW9uKQogICAgICAgICB0LnN0YXJ0KCkKIAotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShmMS5leGNlcHRpb24odGltZW91dD01KSwgSU9FcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGYxLmV4Y2VwdGlvbih0aW1lb3V0PTUpLCBPU0Vycm9yKSkKIAogQHRlc3Quc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKQEAgLTYzMSw3ICs2NTYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFBvb2xBc0NvbXBsZXRlZFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1dHVyZVRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NQb29sU2h1dGRvd25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFBvb2xTaHV0ZG93blRlc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkUG9vbFNodXRkb3duVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgZmluYWxseToKICAgICAgICAgdGVzdC5zdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NmZ3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfY2ZncGFyc2VyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQppbmRleCBhNmU5MDUwLi44ZDgyMTgyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NmZ3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQpAQCAtMTYxOCw2ICsxNjE4LDQyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihlMSksIHJlcHIoZTIpKQogCiAKK2NsYXNzIElubGluZUNvbW1lbnRTdHJpcHBpbmdUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZm9yIGlzc3VlICMxNDU5MDogQ29uZmlnUGFyc2VyIGRvZXNuJ3Qgc3RyaXAgaW5saW5lIGNvbW1lbnQgd2hlbgorICAgIGRlbGltaXRlciBvY2N1cnMgZWFybGllciB3aXRob3V0IHByZWNlZGluZyBzcGFjZS4uIiIiCisKKyAgICBkZWYgdGVzdF9zdHJpcHBpbmcoc2VsZik6CisgICAgICAgIGNmZyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9KCc7JywgJyMnLAorICAgICAgICAgICAgICAgICcvLycpKQorICAgICAgICBjZmcucmVhZF9zdHJpbmcoIiIiCisgICAgICAgIFtzZWN0aW9uXQorICAgICAgICBrMSA9IHYxO3N0aWxsIHYxCisgICAgICAgIGsyID0gdjIgO2EgY29tbWVudAorICAgICAgICBrMyA9IHYzIDsgYWxzbyBhIGNvbW1lbnQKKyAgICAgICAgazQgPSB2NDtzdGlsbCB2NCA7YSBjb21tZW50CisgICAgICAgIGs1ID0gdjU7c3RpbGwgdjUgOyBhbHNvIGEgY29tbWVudAorICAgICAgICBrNiA9IHY2O3N0aWxsIHY2OyBhbmQgc3RpbGwgdjYgO2EgY29tbWVudAorICAgICAgICBrNyA9IHY3O3N0aWxsIHY3OyBhbmQgc3RpbGwgdjcgOyBhbHNvIGEgY29tbWVudAorCisgICAgICAgIFttdWx0aXByZWZpeF0KKyAgICAgICAgazEgPSB2MTtzdGlsbCB2MSAjYSBjb21tZW50IDsgeWVhaCwgcHJldHR5IG11Y2gKKyAgICAgICAgazIgPSB2MiAvLyB0aGlzIGFscmVhZHkgaXMgYSBjb21tZW50IDsgY29udGludWVkCisgICAgICAgIGszID0gdjM7Iy8vc3RpbGwgdjMjIGFuZCBzdGlsbCB2MyA7IGEgY29tbWVudAorICAgICAgICAiIiIpCisgICAgICAgIHMgPSBjZmdbJ3NlY3Rpb24nXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2sxJ10sICd2MTtzdGlsbCB2MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazInXSwgJ3YyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMyddLCAndjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2s0J10sICd2NDtzdGlsbCB2NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazUnXSwgJ3Y1O3N0aWxsIHY1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrNiddLCAndjY7c3RpbGwgdjY7IGFuZCBzdGlsbCB2NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazcnXSwgJ3Y3O3N0aWxsIHY3OyBhbmQgc3RpbGwgdjcnKQorICAgICAgICBzID0gY2ZnWydtdWx0aXByZWZpeCddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazEnXSwgJ3YxO3N0aWxsIHYxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMiddLCAndjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2szJ10sICd2MzsjLy9zdGlsbCB2MyMgYW5kIHN0aWxsIHYzJykKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCiAgICAgICAgIENvbmZpZ1BhcnNlclRlc3RDYXNlLApAQCAtMTY0MCw0ICsxNjc2LDUgQEAKICAgICAgICAgUmVhZEZpbGVUZXN0Q2FzZSwKICAgICAgICAgQ292ZXJhZ2VPbmVIdW5kcmVkVGVzdENhc2UsCiAgICAgICAgIEV4Y2VwdGlvblBpY2tsaW5nVGVzdENhc2UsCisgICAgICAgIElubGluZUNvbW1lbnRTdHJpcHBpbmdUZXN0Q2FzZSwKICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CmluZGV4IDZlMzgzMDUuLmU1MmVkOTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKQEAgLTM3MCw2ICszNzAsMjMxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGUsIFsxLCAnc29tZXRoaW5nIGVsc2UnLCA5OTldKQogCiAKK2NsYXNzIFRlc3RFeGl0U3RhY2sodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfbm9fcmVzb3VyY2VzKHNlbGYpOgorICAgICAgICB3aXRoIEV4aXRTdGFjaygpOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2FsbGJhY2soc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCgpLCB7fSksCisgICAgICAgICAgICAoKDEsKSwge30pLAorICAgICAgICAgICAgKCgxLDIpLCB7fSksCisgICAgICAgICAgICAoKCksIGRpY3QoZXhhbXBsZT0xKSksCisgICAgICAgICAgICAoKDEsKSwgZGljdChleGFtcGxlPTEpKSwKKyAgICAgICAgICAgICgoMSwyKSwgZGljdChleGFtcGxlPTEpKSwKKyAgICAgICAgXQorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBkZWYgX2V4aXQoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAiIiJUZXN0IG1ldGFkYXRhIHByb3BhZ2F0aW9uIiIiCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKChhcmdzLCBrd2RzKSkKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIGZvciBhcmdzLCBrd2RzIGluIHJldmVyc2VkKGV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBpZiBhcmdzIGFuZCBrd2RzOgorICAgICAgICAgICAgICAgICAgICBmID0gc3RhY2suY2FsbGJhY2soX2V4aXQsICphcmdzLCAqKmt3ZHMpCisgICAgICAgICAgICAgICAgZWxpZiBhcmdzOgorICAgICAgICAgICAgICAgICAgICBmID0gc3RhY2suY2FsbGJhY2soX2V4aXQsICphcmdzKQorICAgICAgICAgICAgICAgIGVsaWYga3dkczoKKyAgICAgICAgICAgICAgICAgICAgZiA9IHN0YWNrLmNhbGxiYWNrKF9leGl0LCAqKmt3ZHMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZiA9IHN0YWNrLmNhbGxiYWNrKF9leGl0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZiwgX2V4aXQpCisgICAgICAgICAgICBmb3Igd3JhcHBlciBpbiBzdGFjay5fZXhpdF9jYWxsYmFja3M6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLl9fd3JhcHBlZF9fLCBfZXhpdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyYXBwZXIuX19uYW1lX18sIF9leGl0Ll9fbmFtZV9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyYXBwZXIuX19kb2NfXywgX2V4aXQuX19kb2NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcHVzaChzZWxmKToKKyAgICAgICAgZXhjX3JhaXNlZCA9IFplcm9EaXZpc2lvbkVycm9yCisgICAgICAgIGRlZiBfZXhwZWN0X2V4YyhleGNfdHlwZSwgZXhjLCBleGNfdGIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleGNfdHlwZSwgZXhjX3JhaXNlZCkKKyAgICAgICAgZGVmIF9zdXBwcmVzc19leGMoKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGRlZiBfZXhwZWN0X29rKGV4Y190eXBlLCBleGMsIGV4Y190Yik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGNfdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Y190YikKKyAgICAgICAgY2xhc3MgRXhpdENNKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY2hlY2tfZXhjKToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX2V4YyA9IGNoZWNrX2V4YworICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlNob3VsZCBub3QgYmUgY2FsbGVkISIpCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX2V4YygqZXhjX2RldGFpbHMpCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBzdGFjay5wdXNoKF9leHBlY3Rfb2spCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIF9leHBlY3Rfb2spCisgICAgICAgICAgICBjbSA9IEV4aXRDTShfZXhwZWN0X29rKQorICAgICAgICAgICAgc3RhY2sucHVzaChjbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXS5fX3NlbGZfXywgY20pCisgICAgICAgICAgICBzdGFjay5wdXNoKF9zdXBwcmVzc19leGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIF9zdXBwcmVzc19leGMpCisgICAgICAgICAgICBjbSA9IEV4aXRDTShfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIHN0YWNrLnB1c2goY20pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0uX19zZWxmX18sIGNtKQorICAgICAgICAgICAgc3RhY2sucHVzaChfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXSwgX2V4cGVjdF9leGMpCisgICAgICAgICAgICBzdGFjay5wdXNoKF9leHBlY3RfZXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLCBfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIDEvMAorCisgICAgZGVmIHRlc3RfZW50ZXJfY29udGV4dChzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdENNKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSkKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMykKKworICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBjbSA9IFRlc3RDTSgpCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBAc3RhY2suY2FsbGJhY2sgICMgUmVnaXN0ZXJlZCBmaXJzdCA9PiBjbGVhbmVkIHVwIGxhc3QKKyAgICAgICAgICAgIGRlZiBfZXhpdCgpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKF9leGl0KQorICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChjbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXS5fX3NlbGZfXywgY20pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMiwgMywgNF0pCisKKyAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIEBzdGFjay5jYWxsYmFjaworICAgICAgICAgICAgZGVmIF9leGl0KCk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoX2V4aXQpCisgICAgICAgICAgICBzdGFjay5jbG9zZSgpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMl0pCisKKyAgICBkZWYgdGVzdF9wb3BfYWxsKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgQHN0YWNrLmNhbGxiYWNrCisgICAgICAgICAgICBkZWYgX2V4aXQoKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShfZXhpdCkKKyAgICAgICAgICAgIG5ld19zdGFjayA9IHN0YWNrLnBvcF9hbGwoKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgxKQorICAgICAgICByZXN1bHQuYXBwZW5kKDIpCisgICAgICAgIG5ld19zdGFjay5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMiwgM10pCisKKyAgICBkZWYgdGVzdF9leGl0X3JhaXNlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4YzogRmFsc2UpCisgICAgICAgICAgICAgICAgMS8wCisKKyAgICBkZWYgdGVzdF9leGl0X3N1cHByZXNzKHNlbGYpOgorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4YzogVHJ1ZSkKKyAgICAgICAgICAgIDEvMAorCisgICAgZGVmIHRlc3RfZXhpdF9leGNlcHRpb25fY2hhaW5pbmdfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICAjIFNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBFeGl0U3RhY2sgY2hhaW5pbmcgbWF0Y2hlcworICAgICAgICAjIGFjdHVhbCBuZXN0ZWQgd2l0aCBzdGF0ZW1lbnRzCisgICAgICAgIGNsYXNzIFJhaXNlRXhjOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Yyk6CisgICAgICAgICAgICAgICAgc2VsZi5leGMgPSBleGMKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZXhjCisKKyAgICAgICAgY2xhc3MgUmFpc2VFeGNXaXRoQ29udGV4dDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRlciwgaW5uZXIpOgorICAgICAgICAgICAgICAgIHNlbGYub3V0ZXIgPSBvdXRlcgorICAgICAgICAgICAgICAgIHNlbGYuaW5uZXIgPSBpbm5lcgorICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmlubmVyCisgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLm91dGVyCisKKyAgICAgICAgY2xhc3MgU3VwcHJlc3NFeGM6CisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICB0eXBlKHNlbGYpLnNhdmVkX2RldGFpbHMgPSBleGNfZGV0YWlscworICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBSYWlzZUV4YyhJbmRleEVycm9yKToKKyAgICAgICAgICAgICAgICB3aXRoIFJhaXNlRXhjV2l0aENvbnRleHQoS2V5RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBTdXBwcmVzc0V4YygpOgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBSYWlzZUV4YyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICBleGNlcHQgSW5kZXhFcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLCBLZXlFcnJvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShleGMuX19jb250ZXh0X18uX19jb250ZXh0X18sIEF0dHJpYnV0ZUVycm9yKQorICAgICAgICAgICAgIyBJbm5lciBleGNlcHRpb25zIHdlcmUgc3VwcHJlc3NlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLl9fY29udGV4dF9fLl9fY29udGV4dF9fLl9fY29udGV4dF9fKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBJbmRleEVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyByYWlzZWQiKQorICAgICAgICAjIENoZWNrIHRoZSBpbm5lciBleGNlcHRpb25zCisgICAgICAgIGlubmVyX2V4YyA9IFN1cHByZXNzRXhjLnNhdmVkX2RldGFpbHNbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGlubmVyX2V4YywgVmFsdWVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGlubmVyX2V4Yy5fX2NvbnRleHRfXywgWmVyb0RpdmlzaW9uRXJyb3IpCisKKyAgICBkZWYgdGVzdF9leGl0X2V4Y2VwdGlvbl9jaGFpbmluZyhzZWxmKToKKyAgICAgICAgIyBFbnN1cmUgZXhjZXB0aW9uIGNoYWluaW5nIG1hdGNoZXMgdGhlIHJlZmVyZW5jZSBiZWhhdmlvdXIKKyAgICAgICAgZGVmIHJhaXNlX2V4YyhleGMpOgorICAgICAgICAgICAgcmFpc2UgZXhjCisKKyAgICAgICAgc2F2ZWRfZGV0YWlscyA9IE5vbmUKKyAgICAgICAgZGVmIHN1cHByZXNzX2V4YygqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgbm9ubG9jYWwgc2F2ZWRfZGV0YWlscworICAgICAgICAgICAgc2F2ZWRfZGV0YWlscyA9IGV4Y19kZXRhaWxzCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2socmFpc2VfZXhjLCBJbmRleEVycm9yKQorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKHJhaXNlX2V4YywgS2V5RXJyb3IpCisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2socmFpc2VfZXhjLCBBdHRyaWJ1dGVFcnJvcikKKyAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHN1cHByZXNzX2V4YykKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyYWlzZV9leGMsIFZhbHVlRXJyb3IpCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NvbnRleHRfXywgS2V5RXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLl9fY29udGV4dF9fLCBBdHRyaWJ1dGVFcnJvcikKKyAgICAgICAgICAgICMgSW5uZXIgZXhjZXB0aW9ucyB3ZXJlIHN1cHByZXNzZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgSW5kZXhFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIikKKyAgICAgICAgIyBDaGVjayB0aGUgaW5uZXIgZXhjZXB0aW9ucworICAgICAgICBpbm5lcl9leGMgPSBzYXZlZF9kZXRhaWxzWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbm5lcl9leGMsIFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbm5lcl9leGMuX19jb250ZXh0X18sIFplcm9EaXZpc2lvbkVycm9yKQorCisgICAgZGVmIHRlc3RfZXhpdF9leGNlcHRpb25fY2hhaW5pbmdfc3VwcHJlc3Moc2VsZik6CisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBzdGFjay5wdXNoKGxhbWJkYSAqZXhjOiBUcnVlKQorICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4YzogMS8wKQorICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4Yzoge31bMV0pCisKKyAgICBkZWYgdGVzdF9leGNlc3NpdmVfbmVzdGluZyhzZWxmKToKKyAgICAgICAgIyBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gd291bGQgZGllIHdpdGggUmVjdXJzaW9uRXJyb3IgaGVyZQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMDApOgorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKGludCkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2J5cGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRXhhbXBsZShvYmplY3QpOiBwYXNzCisgICAgICAgIGNtID0gRXhhbXBsZSgpCisgICAgICAgIGNtLl9fZXhpdF9fID0gb2JqZWN0KCkKKyAgICAgICAgc3RhY2sgPSBFeGl0U3RhY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc3RhY2suZW50ZXJfY29udGV4dCwgY20pCisgICAgICAgIHN0YWNrLnB1c2goY20pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXSwgY20pCisKKwogIyBUaGlzIGlzIG5lZWRlZCB0byBtYWtlIHRoZSB0ZXN0IGFjdHVhbGx5IHJ1biB1bmRlciByZWdydGVzdC5weSEKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29weS5weSBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQppbmRleCBhODRjMTA5Li5jNGJhYWU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgIyBBdHRlbXB0IGZ1bGwgbGluZSBjb3ZlcmFnZSBvZiBjb3B5LnB5IGZyb20gdG9wIHRvIGJvdHRvbQogCiAgICAgZGVmIHRlc3RfZXhjZXB0aW9ucyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvcHkuRXJyb3IgaXMgY29weS5lcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhjb3B5LkVycm9yLCBjb3B5LmVycm9yKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhjb3B5LkVycm9yLCBFeGNlcHRpb24pKQogCiAgICAgIyBUaGUgY29weSgpIG1ldGhvZApAQCAtNTQsMjAgKzU0LDI2IEBACiAgICAgZGVmIHRlc3RfY29weV9yZWR1Y2VfZXgoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvKToKKyAgICAgICAgICAgICAgICBjLmFwcGVuZCgxKQogICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJzaG91bGRuJ3QgY2FsbCB0aGlzIikKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInNob3VsZG4ndCBjYWxsIHRoaXMiKQorICAgICAgICBjID0gW10KICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBbMV0pCiAKICAgICBkZWYgdGVzdF9jb3B5X3JlZHVjZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgICAgICAgICAgYy5hcHBlbmQoMSkKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKKyAgICAgICAgYyA9IFtdCiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgWzFdKQogCiAgICAgZGVmIHRlc3RfY29weV9jYW50KHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC05MSw3ICs5Nyw3IEBACiAgICAgICAgICAgICAgICAgICJoZWxsbyIsICJoZWxsb1x1MTIzNCIsIGYuX19jb2RlX18sCiAgICAgICAgICAgICAgICAgIE5ld1N0eWxlLCByYW5nZSgxMCksIENsYXNzaWMsIG1heF0KICAgICAgICAgZm9yIHggaW4gdGVzdHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29weS5jb3B5KHgpIGlzIHgsIHJlcHIoeCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvcHkuY29weSh4KSwgeCkKIAogICAgIGRlZiB0ZXN0X2NvcHlfbGlzdChzZWxmKToKICAgICAgICAgeCA9IFsxLCAyLCAzXQpAQCAtMTg1LDkgKzE5MSw5IEBACiAgICAgICAgIHggPSBbeCwgeF0KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHlbMF0gaXMgbm90IHhbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5WzBdIGlzIHlbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5WzBdLCB4WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzKHlbMF0sIHlbMV0pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pc3N1YmNsYXNzKHNlbGYpOgogICAgICAgICAjIFhYWCBOb3RlOiB0aGVyZSdzIG5vIHdheSB0byB0ZXN0IHRoZSBUeXBlRXJyb3IgY29taW5nIG91dCBvZgpAQCAtMjI3LDIwICsyMzMsMjYgQEAKICAgICBkZWYgdGVzdF9kZWVwY29weV9yZWR1Y2VfZXgoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvKToKKyAgICAgICAgICAgICAgICBjLmFwcGVuZCgxKQogICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJzaG91bGRuJ3QgY2FsbCB0aGlzIikKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInNob3VsZG4ndCBjYWxsIHRoaXMiKQorICAgICAgICBjID0gW10KICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgWzFdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVkdWNlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBjLmFwcGVuZCgxKQogICAgICAgICAgICAgICAgIHJldHVybiAiIgorICAgICAgICBjID0gW10KICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgWzFdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfY2FudChzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtMjY0LDE0ICsyNzYsMTQgQEAKICAgICAgICAgICAgICAgICAgImhlbGxvIiwgImhlbGxvXHUxMjM0IiwgZi5fX2NvZGVfXywKICAgICAgICAgICAgICAgICAgTmV3U3R5bGUsIHJhbmdlKDEwKSwgQ2xhc3NpYywgbWF4XQogICAgICAgICBmb3IgeCBpbiB0ZXN0czoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb3B5LmRlZXBjb3B5KHgpIGlzIHgsIHJlcHIoeCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvcHkuZGVlcGNvcHkoeCksIHgpCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9saXN0KHNlbGYpOgogICAgICAgICB4ID0gW1sxLCAyXSwgM10KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgbm90IHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WzBdLCB5WzBdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVmbGV4aXZlX2xpc3Qoc2VsZik6CiAgICAgICAgIHggPSBbXQpAQCAtMjc5LDE2ICsyOTEsMjYgQEAKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgZm9yIG9wIGluIGNvbXBhcmlzb25zOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcCwgeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5WzBdIGlzIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5WzBdLCB5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih5KSwgMSkKIAorICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2VtcHR5X3R1cGxlKHNlbGYpOgorICAgICAgICB4ID0gKCkKKyAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4LCB5KQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfdHVwbGUoc2VsZik6CiAgICAgICAgIHggPSAoWzEsIDJdLCAzKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyBub3QgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHhbMF0sIHlbMF0pCisKKyAgICBkZWYgdGVzdF9kZWVwY29weV90dXBsZV9vZl9pbW11dGFibGVzKHNlbGYpOgorICAgICAgICB4ID0gKCgxLCAyKSwgMykKKyAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4LCB5KQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVmbGV4aXZlX3R1cGxlKHNlbGYpOgogICAgICAgICB4ID0gKFtdLCkKQEAgLTI5NiwxNiArMzE4LDE2IEBACiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIGZvciBvcCBpbiBjb21wYXJpc29uczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3AsIHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeVswXSBpcyBub3QgeFswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHlbMF1bMF0gaXMgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHlbMF0sIHhbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXVswXSwgeSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2RpY3Qoc2VsZik6CiAgICAgICAgIHggPSB7ImZvbyI6IFsxLCAyXSwgImJhciI6IDN9CiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WyJmb28iXSBpcyBub3QgeVsiZm9vIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WyJmb28iXSwgeVsiZm9vIl0pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9yZWZsZXhpdmVfZGljdChzZWxmKToKICAgICAgICAgeCA9IHt9CkBAIC0zMTUsMTUgKzMzNywzMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcCwgeSwgeCkKICAgICAgICAgZm9yIG9wIGluIGVxdWFsaXR5X2NvbXBhcmlzb25zOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcCwgeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5Wydmb28nXSBpcyB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVsnZm9vJ10sIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHkpLCAxKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfa2VlcGFsaXZlKHNlbGYpOgogICAgICAgICBtZW1vID0ge30KLSAgICAgICAgeCA9IDQyCisgICAgICAgIHggPSBbXQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4LCBtZW1vKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWVtb1tpZCh4KV0gaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtZW1vW2lkKG1lbW8pXVswXSwgeCkKKworICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2RvbnRfbWVtb19pbW11dGFibGUoc2VsZik6CisgICAgICAgIG1lbW8gPSB7fQorICAgICAgICB4ID0gWzEsIDIsIDMsIDRdCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgsIG1lbW8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKKyAgICAgICAgIyBUaGVyZSdzIHRoZSBlbnRyeSBmb3IgdGhlIG5ldyBsaXN0LCBhbmQgdGhlIGtlZXAgYWxpdmUuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1lbW8pLCAyKQorCisgICAgICAgIG1lbW8gPSB7fQorICAgICAgICB4ID0gWygxLCAyKV0KKyAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCwgbWVtbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQorICAgICAgICAjIFR1cGxlcyB3aXRoIGltbXV0YWJsZSBjb250ZW50cyBhcmUgaW1tdXRhYmxlIGZvciBkZWVwY29weS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWVtbyksIDIpCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X3ZhbmlsbGEoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zMzQsNyArMzcxLDcgQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZGVlcGNvcHkoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zNDcsOCArMzg0LDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0aW5pdGFyZ3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zNjEsOCArMzk4LDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zNzUsOCArNDEyLDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3Rfc2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zODksOCArNDI2LDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0c3RhdGVfc2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC00MDUsOCArNDQyLDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3JlZmxleGl2ZV9pbnN0KHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtNDE0LDggKzQ1MSw4IEBACiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeC5mb28gPSB4CiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHkuZm9vLCB5KQogCiAgICAgIyBfcmVjb25zdHJ1Y3QoKQogCkBAIC00MjUsOSArNDYyLDkgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQogCiAgICAgZGVmIHRlc3RfcmVjb25zdHJ1Y3Rfbm9zdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDM2LDkgKzQ3Myw5IEBACiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeC5mb28gPSA0MgogICAgICAgICB5ID0gY29weS5jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5Ll9fY2xhc3NfXyBpcyB4Ll9fY2xhc3NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Ll9fY2xhc3NfXywgeC5fX2NsYXNzX18pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5Ll9fY2xhc3NfXyBpcyB4Ll9fY2xhc3NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Ll9fY2xhc3NfXywgeC5fX2NsYXNzX18pCiAKICAgICBkZWYgdGVzdF9yZWNvbnN0cnVjdF9zdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDUyLDcgKzQ4OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X3JlY29uc3RydWN0X3N0YXRlX3NldHN0YXRlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC00NjgsNyArNTA1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCiAgICAgZGVmIHRlc3RfcmVjb25zdHJ1Y3RfcmVmbGV4aXZlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC00NzYsOCArNTEzLDggQEAKICAgICAgICAgeCA9IEMoKQogICAgICAgICB4LmZvbyA9IHgKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5mb28sIHkpCiAKICAgICAjIEFkZGl0aW9ucyBmb3IgUHl0aG9uIDIuMyBhbmQgcGlja2xlIHByb3RvY29sIDIKIApAQCAtNDkxLDEyICs1MjgsMTIgQEAKICAgICAgICAgeCA9IEMoW1sxLCAyXSwgM10pCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzKHhbMF0sIHlbMF0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIG5vdCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFswXSwgeVswXSkKIAogICAgIGRlZiB0ZXN0X3JlZHVjZV81dHVwbGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEMoZGljdCk6CkBAIC01MDgsMTIgKzU0NSwxMiBAQAogICAgICAgICB4ID0gQyhbKCJmb28iLCBbMSwgMl0pLCAoImJhciIsIDMpXSkKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFsiZm9vIl0gaXMgeVsiZm9vIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4WyJmb28iXSwgeVsiZm9vIl0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WyJmb28iXSBpcyBub3QgeVsiZm9vIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WyJmb28iXSwgeVsiZm9vIl0pCiAKICAgICBkZWYgdGVzdF9jb3B5X3Nsb3RzKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC01MjEsNyArNTU4LDcgQEAKICAgICAgICAgeCA9IEMoKQogICAgICAgICB4LmZvbyA9IFs0Ml0KICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5mb28gaXMgeS5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeC5mb28sIHkuZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfc2xvdHMoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTUzMCw3ICs1NjcsNyBAQAogICAgICAgICB4LmZvbyA9IFs0Ml0KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZvbywgeS5mb28pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmZvbyBpcyBub3QgeS5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeC5mb28sIHkuZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfZGljdF9zdWJjbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgQyhkaWN0KToKQEAgLTU0Nyw3ICs1ODQsNyBAQAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fa2V5cywgeS5fa2V5cykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKICAgICAgICAgeFsnYmFyJ10gPSAxCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoeCwgeSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh4Ll9rZXlzLCB5Ll9rZXlzKQpAQCAtNTYwLDggKzU5Nyw4IEBACiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHgpLCBsaXN0KHkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZm9vLCB5LmZvbykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgeVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguZm9vIGlzIHkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzKHhbMF0sIHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeC5mb28sIHkuZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfbGlzdF9zdWJjbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgQyhsaXN0KToKQEAgLTU3MSw4ICs2MDgsOCBAQAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoeCksIGxpc3QoeSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mb28sIHkuZm9vKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyBub3QgeVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguZm9vIGlzIG5vdCB5LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WzBdLCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHguZm9vLCB5LmZvbykKIAogICAgIGRlZiB0ZXN0X2NvcHlfdHVwbGVfc3ViY2xhc3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEModHVwbGUpOgpAQCAtNTg5LDggKzYyNiw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoeCksIChbMSwgMl0sIDMpKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHkpLCAoWzEsIDJdLCAzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIG5vdCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFswXSwgeVswXSkKIAogICAgIGRlZiB0ZXN0X2dldHN0YXRlX2V4YyhzZWxmKToKICAgICAgICAgY2xhc3MgRXZpbFN0YXRlKG9iamVjdCk6CkBAIC02MTgsMTAgKzY1NSwxMCBAQAogICAgICAgICBvYmogPSBDKCkKICAgICAgICAgeCA9IHdlYWtyZWYucmVmKG9iaikKICAgICAgICAgeSA9IF9jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKICAgICAgICAgZGVsIG9iagogICAgICAgICB5ID0gX2NvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQogCiAgICAgZGVmIHRlc3RfY29weV93ZWFrcmVmKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja193ZWFrcmVmKGNvcHkuY29weSkKQEAgLTYzNyw3ICs2NzQsNyBAQAogICAgICAgICB1W2FdID0gYgogICAgICAgICB1W2NdID0gZAogICAgICAgICB2ID0gY29weS5jb3B5KHUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodiBpcyB1KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHYsIHUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2W2FdLCBiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbY10sIGQpCkBAIC02NjcsOCArNzA0LDggQEAKICAgICAgICAgdiA9IGNvcHkuZGVlcGNvcHkodSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2W2FdIGlzIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodltjXSBpcyBkKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHZbYV0sIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QodltjXSwgZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2W2FdLmksIGIuaSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2W2NdLmksIGQuaSkKICAgICAgICAgZGVsIGMKQEAgLTY4NywxMiArNzI0LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIDIpCiAgICAgICAgICh4LCB5KSwgKHosIHQpID0gc29ydGVkKHYuaXRlbXMoKSwga2V5PWxhbWJkYSBwYWlyOiBwYWlyWzBdLmkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoeCBpcyBhKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5pLCBhLmkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoeiBpcyBjKQorICAgICAgICBzZWxmLmFzc2VydElzKHksIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeiwgYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6LmksIGMuaSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQgaXMgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0LCBkKQogICAgICAgICBkZWwgeCwgeSwgeiwgdAogICAgICAgICBkZWwgZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgMSkKQEAgLTcwNSw3ICs3NDIsNyBAQAogICAgICAgICBmLmIgPSBmLm0KICAgICAgICAgZyA9IGNvcHkuZGVlcGNvcHkoZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLm0sIGcuYikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGcuYi5fX3NlbGZfXyBpcyBnKQorICAgICAgICBzZWxmLmFzc2VydElzKGcuYi5fX3NlbGZfXywgZykKICAgICAgICAgZy5iKCkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQppbmRleCBhZTE3YzJiLi41Njc2NjY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKQEAgLTE4LDE2ICsxOCwxOSBAQAogICAgIGRlZiB0ZXN0X2JhZF9jb3VudGVyX2R1cmluZ19kZWFsbG9jKHNlbGYpOgogICAgICAgICBpbXBvcnQgX2xzcHJvZgogICAgICAgICAjIE11c3QgdXNlIGEgZmlsZSBhcyBTdHJpbmdJTyBkb2Vzbid0IHRyaWdnZXIgdGhlIGJ1Zy4KLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmaWxlOgotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IGZpbGUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvYmogPSBfbHNwcm9mLlByb2ZpbGVyKGxhbWJkYTogaW50KQotICAgICAgICAgICAgICAgIG9iai5lbmFibGUoKQotICAgICAgICAgICAgICAgIG9iaiA9IF9sc3Byb2YuUHJvZmlsZXIoMSkKLSAgICAgICAgICAgICAgICBvYmouZGlzYWJsZSgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXwotICAgICAgICB1bmxpbmsoVEVTVEZOKQorICAgICAgICBvcmlnX3N0ZGVyciA9IHN5cy5zdGRlcnIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBmaWxlCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvYmogPSBfbHNwcm9mLlByb2ZpbGVyKGxhbWJkYTogaW50KQorICAgICAgICAgICAgICAgICAgICBvYmouZW5hYmxlKCkKKyAgICAgICAgICAgICAgICAgICAgb2JqID0gX2xzcHJvZi5Qcm9maWxlcigxKQorICAgICAgICAgICAgICAgICAgICBvYmouZGlzYWJsZSgpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9yaWdfc3RkZXJyCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Jhc2hlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNmNjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5CkBAIC0wLDAgKzEsMzggQEAKKyMgVGVzdHMgdGhhdCB0aGUgY3Jhc2hlcnMgaW4gdGhlIExpYi90ZXN0L2NyYXNoZXJzIGRpcmVjdG9yeSBhY3R1YWxseQorIyBkbyBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIgYXMgZXhwZWN0ZWQKKyMKKyMgSWYgYSBjcmFzaGVyIGlzIGZpeGVkLCBpdCBzaG91bGQgYmUgbW92ZWQgZWxzZXdoZXJlIGluIHRoZSB0ZXN0IHN1aXRlIHRvCisjIGVuc3VyZSBpdCBjb250aW51ZXMgdG8gd29yayBjb3JyZWN0bHkuCisKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGdsb2IKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgdGVzdC5zdXBwb3J0Citmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCisKK0NSQVNIRVJfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJjcmFzaGVycyIpCitDUkFTSEVSX0ZJTEVTID0gb3MucGF0aC5qb2luKENSQVNIRVJfRElSLCAiKi5weSIpCisKK2luZmluaXRlX2xvb3BzID0gWyJpbmZpbml0ZV9sb29wX3JlLnB5IiwgIm5hc3R5X2VxX3ZzX2RpY3QucHkiXQorCitjbGFzcyBDcmFzaGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAdW5pdHRlc3Quc2tpcCgidGhlc2UgdGVzdHMgYXJlIHRvbyBmcmFnaWxlIikKKyAgICBAdGVzdC5zdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2NyYXNoZXJzX2NyYXNoKHNlbGYpOgorICAgICAgICBmb3IgZm5hbWUgaW4gZ2xvYi5nbG9iKENSQVNIRVJfRklMRVMpOgorICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShmbmFtZSkgaW4gaW5maW5pdGVfbG9vcHM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgU29tZSAiY3Jhc2hlcnMiIG9ubHkgdHJpZ2dlciBhbiBleGNlcHRpb24gcmF0aGVyIHRoYW4gYQorICAgICAgICAgICAgIyBzZWdmYXVsdC4gQ29uc2lkZXIgdGhhdCBhbiBhY2NlcHRhYmxlIG91dGNvbWUuCisgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICBwcmludCgiQ2hlY2tpbmcgY3Jhc2hlcjoiLCBmbmFtZSkKKyAgICAgICAgICAgIGFzc2VydF9weXRob25fZmFpbHVyZShmbmFtZSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChDcmFzaGVyVGVzdCkKKyAgICB0ZXN0LnN1cHBvcnQucmVhcF9jaGlsZHJlbigpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3J5cHQucHkgYi9MaWIvdGVzdC90ZXN0X2NyeXB0LnB5CmluZGV4IDJhZGIyOGQuLmRjMTA3ZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3J5cHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jcnlwdC5weQpAQCAtMTAsNiArMTAsMjUgQEAKICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoJ1Rlc3QgZW5jcnlwdGlvbjogJywgYykKIAorICAgIGRlZiB0ZXN0X3NhbHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNyeXB0Ll9zYWx0Y2hhcnMpLCA2NCkKKyAgICAgICAgZm9yIG1ldGhvZCBpbiBjcnlwdC5tZXRob2RzOgorICAgICAgICAgICAgc2FsdCA9IGNyeXB0Lm1rc2FsdChtZXRob2QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzYWx0KSwKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kLnNhbHRfY2hhcnMgKyAoMyBpZiBtZXRob2QuaWRlbnQgZWxzZSAwKSkKKworICAgIGRlZiB0ZXN0X3NhbHRlZGNyeXB0KHNlbGYpOgorICAgICAgICBmb3IgbWV0aG9kIGluIGNyeXB0Lm1ldGhvZHM6CisgICAgICAgICAgICBwdyA9IGNyeXB0LmNyeXB0KCdhc3N3b3JkJywgbWV0aG9kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocHcpLCBtZXRob2QudG90YWxfc2l6ZSkKKyAgICAgICAgICAgIHB3ID0gY3J5cHQuY3J5cHQoJ2Fzc3dvcmQnLCBjcnlwdC5ta3NhbHQobWV0aG9kKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHB3KSwgbWV0aG9kLnRvdGFsX3NpemUpCisKKyAgICBkZWYgdGVzdF9tZXRob2RzKHNlbGYpOgorICAgICAgICAjIEd1cmFudGVlIHRoYXQgTUVUSE9EX0NSWVBUIGlzIHRoZSBsYXN0IG1ldGhvZCBpbiBjcnlwdC5tZXRob2RzLgorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGNyeXB0Lm1ldGhvZHMpID49IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3J5cHQuTUVUSE9EX0NSWVBULCBjcnlwdC5tZXRob2RzWy0xXSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENyeXB0VGVzdENhc2UpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKaW5kZXggNTgxMjE0Ny4uMjFhYzYwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKQEAgLTI2NCwxMSArMjY0LDU1IEBACiAgICAgY3Vyc2VzLnVuZ2V0Y2goMTAyNSkKICAgICBzdGRzY3IuZ2V0a2V5KCkKIAorZGVmIHRlc3RfdW5nZXRfd2NoKHN0ZHNjcik6CisgICAgaWYgbm90IGhhc2F0dHIoY3Vyc2VzLCAndW5nZXRfd2NoJyk6CisgICAgICAgIHJldHVybgorICAgIGltcG9ydCBsb2NhbGUKKyAgICBlbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgICAgZm9yIGNoIGluICgnYScsICdceGU5JywgJ1x1MjBhYycsICdcVTAwMTBGRkZGJyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNoLmVuY29kZShlbmNvZGluZykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGN1cnNlcy51bmdldF93Y2goY2gpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJ1bmdldF93Y2goJWEpIGZhaWxlZCB3aXRoIGxvY2FsZSBlbmNvZGluZyAlczogJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY2gsIGVuY29kaW5nLCBlcnIpKQorICAgICAgICByZWFkID0gc3Rkc2NyLmdldF93Y2goKQorICAgICAgICByZWFkID0gY2hyKHJlYWQpCisgICAgICAgIGlmIHJlYWQgIT0gY2g6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiJXIgIT0gJXIiICUgKHJlYWQsIGNoKSkKKworICAgICAgICBjb2RlID0gb3JkKGNoKQorICAgICAgICBjdXJzZXMudW5nZXRfd2NoKGNvZGUpCisgICAgICAgIHJlYWQgPSBzdGRzY3IuZ2V0X3djaCgpCisgICAgICAgIGlmIHJlYWQgIT0gY29kZToKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCIlciAhPSAlciIgJSAocmVhZCwgY29kZSkpCisKIGRlZiB0ZXN0X2lzc3VlMTA1NzAoKToKICAgICBiID0gY3Vyc2VzLnRwYXJtKGN1cnNlcy50aWdldHN0cigiY3VwIiksIDUsIDMpCiAgICAgYXNzZXJ0IHR5cGUoYikgaXMgYnl0ZXMKICAgICBjdXJzZXMucHV0cChiKQogCitkZWYgdGVzdF9lbmNvZGluZyhzdGRzY3IpOgorICAgIGltcG9ydCBjb2RlY3MKKyAgICBlbmNvZGluZyA9IHN0ZHNjci5lbmNvZGluZworICAgIGNvZGVjcy5sb29rdXAoZW5jb2RpbmcpCisgICAgdHJ5OgorICAgICAgICBzdGRzY3IuZW5jb2RpbmcgPSAxMAorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiVHlwZUVycm9yIG5vdCByYWlzZWQiKQorICAgIHN0ZHNjci5lbmNvZGluZyA9IGVuY29kaW5nCisgICAgdHJ5OgorICAgICAgICBkZWwgc3Rkc2NyLmVuY29kaW5nCisgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJUeXBlRXJyb3Igbm90IHJhaXNlZCIpCisKIGRlZiBtYWluKHN0ZHNjcik6CiAgICAgY3Vyc2VzLnNhdmV0dHkoKQogICAgIHRyeToKQEAgLTI3NywxNiArMzIxLDE4IEBACiAgICAgICAgIHRlc3RfdXNlcnB0cl93aXRob3V0X3NldChzdGRzY3IpCiAgICAgICAgIHRlc3RfcmVzaXplX3Rlcm0oc3Rkc2NyKQogICAgICAgICB0ZXN0X2lzc3VlNjI0MyhzdGRzY3IpCisgICAgICAgIHRlc3RfdW5nZXRfd2NoKHN0ZHNjcikKICAgICAgICAgdGVzdF9pc3N1ZTEwNTcwKCkKKyAgICAgICAgdGVzdF9lbmNvZGluZyhzdGRzY3IpCiAgICAgZmluYWxseToKICAgICAgICAgY3Vyc2VzLnJlc2V0dHkoKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgaWYgbm90IHN5cy5zdGRvdXQuaXNhdHR5KCk6Ci0gICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzeXMuc3Rkb3V0IGlzIG5vdCBhIHR0eSIpCisgICAgaWYgbm90IHN5cy5fX3N0ZG91dF9fLmlzYXR0eSgpOgorICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgic3lzLl9fc3Rkb3V0X18gaXMgbm90IGEgdHR5IikKICAgICAjIHRlc3Rpbmcgc2V0dXB0ZXJtKCkgaW5zaWRlIGluaXRzY3IvZW5kd2luCiAgICAgIyBjYXVzZXMgdGVybWluYWwgYnJlYWthZ2UKLSAgICBjdXJzZXMuc2V0dXB0ZXJtKGZkPXN5cy5zdGRvdXQuZmlsZW5vKCkpCisgICAgY3Vyc2VzLnNldHVwdGVybShmZD1zeXMuX19zdGRvdXRfXy5maWxlbm8oKSkKICAgICB0cnk6CiAgICAgICAgIHN0ZHNjciA9IGN1cnNlcy5pbml0c2NyKCkKICAgICAgICAgbWFpbihzdGRzY3IpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CmluZGV4IDI2ZDRjMTQuLjAyZGY3ZTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CkBAIC03MSw4ICs3MSw4IEBACiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfYW55ZGJtX2NyZWF0aW9uX25fZmlsZV9leGlzdHNfd2l0aF9pbnZhbGlkX2NvbnRlbnRzKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4oX2ZuYW1lLCAidyIpIGFzIHc6Ci0gICAgICAgICAgICBwYXNzICMgY3JlYXRlIGFuIGVtcHR5IGZpbGUKKyAgICAgICAgIyBjcmVhdGUgYW4gZW1wdHkgZmlsZQorICAgICAgICB0ZXN0LnN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoX2ZuYW1lKQogCiAgICAgICAgIGYgPSBkYm0ub3BlbihfZm5hbWUsICduJykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGYuY2xvc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKaW5kZXggMzBkMzk3MS4uZDAwZWQ1YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQpAQCAtMTYsNyArMTYsNyBAQAogCiBDb3dsaXNoYXcncyB0ZXN0cyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tOgogCi0gICB3d3cyLmh1cnNsZXkuaWJtLmNvbS9kZWNpbWFsL2RlY3Rlc3QuemlwCisgICBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvZGVjdGVzdC56aXAKIAogVGhpcyB0ZXN0IG1vZHVsZSBjYW4gYmUgY2FsbGVkIGZyb20gY29tbWFuZCBsaW5lIHdpdGggb25lIHBhcmFtZXRlciAoQXJpdGhtZXRpYwogb3IgQmVoYXZpb3VyKSB0byB0ZXN0IGVhY2ggcGFydCwgb3Igd2l0aG91dCBwYXJhbWV0ZXIgdG8gdGVzdCBib3RoIHBhcnRzLiBJZgpAQCAtMzAsMzcgKzMwLDc0IEBACiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBwaWNrbGUsIGNvcHkKIGltcG9ydCB1bml0dGVzdAotZnJvbSBkZWNpbWFsIGltcG9ydCAqCiBpbXBvcnQgbnVtYmVycworaW1wb3J0IGxvY2FsZQogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIHJ1bl9kb2N0ZXN0LCBpc19yZXNvdXJjZV9lbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc19JRUVFXzc1NCkKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja193YXJuaW5ncworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3dhcm5pbmdzLCBpbXBvcnRfZnJlc2hfbW9kdWxlLCBUZXN0RmFpbGVkCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgdGltZQoraW1wb3J0IHdhcm5pbmdzCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKIAotIyBVc2VmdWwgVGVzdCBDb25zdGFudAotU2lnbmFscyA9IHR1cGxlKGdldGNvbnRleHQoKS5mbGFncy5rZXlzKCkpCiAKK0MgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgZnJlc2g9WydfZGVjaW1hbCddKQorUCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBibG9ja2VkPVsnX2RlY2ltYWwnXSkKK29yaWdfc3lzX2RlY2ltYWwgPSBzeXMubW9kdWxlc1snZGVjaW1hbCddCisKKyMgZnJhY3Rpb25zIG1vZHVsZSBtdXN0IGltcG9ydCB0aGUgY29ycmVjdCBkZWNpbWFsIG1vZHVsZS4KK2NmcmFjdGlvbnMgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdmcmFjdGlvbnMnLCBmcmVzaD1bJ2ZyYWN0aW9ucyddKQorc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IFAKK3BmcmFjdGlvbnMgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdmcmFjdGlvbnMnLCBmcmVzaD1bJ2ZyYWN0aW9ucyddKQorc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IEMKK2ZyYWN0aW9ucyA9IHtDOmNmcmFjdGlvbnMsIFA6cGZyYWN0aW9uc30KK3N5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBvcmlnX3N5c19kZWNpbWFsCisKKworIyBVc2VmdWwgVGVzdCBDb25zdGFudAorU2lnbmFscyA9IHsKKyAgQzogdHVwbGUoQy5nZXRjb250ZXh0KCkuZmxhZ3Mua2V5cygpKSBpZiBDIGVsc2UgTm9uZSwKKyAgUDogdHVwbGUoUC5nZXRjb250ZXh0KCkuZmxhZ3Mua2V5cygpKQorfQogIyBTaWduYWxzIG9yZGVyZWQgd2l0aCByZXNwZWN0IHRvIHByZWNlZGVuY2U6IHdoZW4gYW4gb3BlcmF0aW9uCiAjIHByb2R1Y2VzIG11bHRpcGxlIHNpZ25hbHMsIHNpZ25hbHMgb2NjdXJyaW5nIGxhdGVyIGluIHRoZSBsaXN0CiAjIHNob3VsZCBiZSBoYW5kbGVkIGJlZm9yZSB0aG9zZSBvY2N1cnJpbmcgZWFybGllciBpbiB0aGUgbGlzdC4KLU9yZGVyZWRTaWduYWxzID0gKENsYW1wZWQsIFJvdW5kZWQsIEluZXhhY3QsIFN1Ym5vcm1hbCwKLSAgICAgICAgICAgICAgICAgIFVuZGVyZmxvdywgT3ZlcmZsb3csIERpdmlzaW9uQnlaZXJvLCBJbnZhbGlkT3BlcmF0aW9uKQorT3JkZXJlZFNpZ25hbHMgPSB7CisgIEM6IFtDLkNsYW1wZWQsIEMuUm91bmRlZCwgQy5JbmV4YWN0LCBDLlN1Ym5vcm1hbCwgQy5VbmRlcmZsb3csCisgICAgICBDLk92ZXJmbG93LCBDLkRpdmlzaW9uQnlaZXJvLCBDLkludmFsaWRPcGVyYXRpb24sCisgICAgICBDLkZsb2F0T3BlcmF0aW9uXSBpZiBDIGVsc2UgTm9uZSwKKyAgUDogW1AuQ2xhbXBlZCwgUC5Sb3VuZGVkLCBQLkluZXhhY3QsIFAuU3Vibm9ybWFsLCBQLlVuZGVyZmxvdywKKyAgICAgIFAuT3ZlcmZsb3csIFAuRGl2aXNpb25CeVplcm8sIFAuSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgIFAuRmxvYXRPcGVyYXRpb25dCit9CitkZWYgYXNzZXJ0X3NpZ25hbHMoY2xzLCBjb250ZXh0LCBhdHRyLCBleHBlY3RlZCk6CisgICAgZCA9IGdldGF0dHIoY29udGV4dCwgYXR0cikKKyAgICBjbHMuYXNzZXJ0VHJ1ZShhbGwoZFtzXSBpZiBzIGluIGV4cGVjdGVkIGVsc2Ugbm90IGRbc10gZm9yIHMgaW4gZCkpCisKK1JvdW5kaW5nTW9kZXMgPSB7CisgIEM6IChDLlJPVU5EX1VQLCBDLlJPVU5EX0RPV04sIEMuUk9VTkRfQ0VJTElORywgQy5ST1VORF9GTE9PUiwKKyAgICAgIEMuUk9VTkRfSEFMRl9VUCwgQy5ST1VORF9IQUxGX0RPV04sIEMuUk9VTkRfSEFMRl9FVkVOLAorICAgICAgQy5ST1VORF8wNVVQKSBpZiBDIGVsc2UgTm9uZSwKKyAgUDogKFAuUk9VTkRfVVAsIFAuUk9VTkRfRE9XTiwgUC5ST1VORF9DRUlMSU5HLCBQLlJPVU5EX0ZMT09SLAorICAgICAgUC5ST1VORF9IQUxGX1VQLCBQLlJPVU5EX0hBTEZfRE9XTiwgUC5ST1VORF9IQUxGX0VWRU4sCisgICAgICBQLlJPVU5EXzA1VVApCit9CiAKICMgVGVzdHMgYXJlIGJ1aWx0IGFyb3VuZCB0aGVzZSBhc3N1bWVkIGNvbnRleHQgZGVmYXVsdHMuCiAjIHRlc3RfbWFpbigpIHJlc3RvcmVzIHRoZSBvcmlnaW5hbCBjb250ZXh0LgotZGVmIGluaXQoKToKLSAgICBnbG9iYWwgT1JJR0lOQUxfQ09OVEVYVAotICAgIE9SSUdJTkFMX0NPTlRFWFQgPSBnZXRjb250ZXh0KCkuY29weSgpCi0gICAgRGVmYXVsdFRlc3RDb250ZXh0ID0gQ29udGV4dCgKLSAgICAgICAgcHJlYyA9IDksCi0gICAgICAgIHJvdW5kaW5nID0gUk9VTkRfSEFMRl9FVkVOLAotICAgICAgICB0cmFwcyA9IGRpY3QuZnJvbWtleXMoU2lnbmFscywgMCkKLSAgICAgICAgKQotICAgIHNldGNvbnRleHQoRGVmYXVsdFRlc3RDb250ZXh0KQorT1JJR0lOQUxfQ09OVEVYVCA9IHsKKyAgQzogQy5nZXRjb250ZXh0KCkuY29weSgpIGlmIEMgZWxzZSBOb25lLAorICBQOiBQLmdldGNvbnRleHQoKS5jb3B5KCkKK30KK2RlZiBpbml0KG0pOgorICAgIGlmIG5vdCBtOiByZXR1cm4KKyAgICBEZWZhdWx0VGVzdENvbnRleHQgPSBtLkNvbnRleHQoCisgICAgICAgcHJlYz05LCByb3VuZGluZz1tLlJPVU5EX0hBTEZfRVZFTiwgdHJhcHM9ZGljdC5mcm9ta2V5cyhTaWduYWxzW21dLCAwKQorICAgICkKKyAgICBtLnNldGNvbnRleHQoRGVmYXVsdFRlc3RDb250ZXh0KQogCiBURVNUREFUQURJUiA9ICdkZWNpbWFsdGVzdGRhdGEnCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpAQCAtNzIsMTQ5ICsxMDksMTc1IEBACiAKIHNraXBfZXhwZWN0ZWQgPSBub3Qgb3MucGF0aC5pc2RpcihkaXJlY3RvcnkpCiAKLSMgbGlzdCBvZiBpbmRpdmlkdWFsIC5kZWNUZXN0IHRlc3QgaWRzIHRoYXQgY29ycmVzcG9uZCB0byB0ZXN0cyB0aGF0Ci0jIHdlJ3JlIHNraXBwaW5nIGZvciBvbmUgcmVhc29uIG9yIGFub3RoZXIuCi1za2lwcGVkX3Rlc3RfaWRzID0gc2V0KFsKLSAgICAjIFNraXAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgc2NhbGViIHRlc3RzLgotICAgICdzY2J4MTY0JywKLSAgICAnc2NieDE2NScsCi0KLSAgICAjIEZvciBzb21lIG9wZXJhdGlvbnMgKGN1cnJlbnRseSBleHAsIGxuLCBsb2cxMCwgcG93ZXIpLCB0aGUgZGVjTnVtYmVyCi0gICAgIyByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW1wb3NlcyBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBvbiB0aGUgY29udGV4dAotICAgICMgYW5kIG9wZXJhbmRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBub3QgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbjsKLSAgICAjIGhvd2V2ZXIsIHRoZSBlZmZlY3Qgb2YgdGhlc2UgcmVzdHJpY3Rpb25zIGRvZXMgc2hvdyB1cCBpbiBzb21lIG9mIHRoZQotICAgICMgdGVzdGNhc2VzLiAgV2Ugc2tpcCB0ZXN0Y2FzZXMgdGhhdCB2aW9sYXRlIHRoZXNlIHJlc3RyaWN0aW9ucywgc2luY2UKLSAgICAjIERlY2ltYWwgYmVoYXZlcyBkaWZmZXJlbnRseSBmcm9tIGRlY051bWJlciBmb3IgdGhlc2UgdGVzdGNhc2VzIHNvIHRoZXNlCi0gICAgIyB0ZXN0Y2FzZXMgd291bGQgb3RoZXJ3aXNlIGZhaWwuCi0gICAgJ2V4cHg5MDEnLAotICAgICdleHB4OTAyJywKLSAgICAnZXhweDkwMycsCi0gICAgJ2V4cHg5MDUnLAotICAgICdsbng5MDEnLAotICAgICdsbng5MDInLAotICAgICdsbng5MDMnLAotICAgICdsbng5MDUnLAotICAgICdsb2d4OTAxJywKLSAgICAnbG9neDkwMicsCi0gICAgJ2xvZ3g5MDMnLAotICAgICdsb2d4OTA1JywKLSAgICAncG93eDExODMnLAotICAgICdwb3d4MTE4NCcsCi0gICAgJ3Bvd3g0MDAxJywKLSAgICAncG93eDQwMDInLAotICAgICdwb3d4NDAwMycsCi0gICAgJ3Bvd3g0MDA1JywKLSAgICAncG93eDQwMDgnLAotICAgICdwb3d4NDAxMCcsCi0gICAgJ3Bvd3g0MDEyJywKLSAgICAncG93eDQwMTQnLAotICAgIF0pCi0KICMgTWFrZSBzdXJlIGl0IGFjdHVhbGx5IHJhaXNlcyBlcnJvcnMgd2hlbiBub3QgZXhwZWN0ZWQgYW5kIGNhdWdodCBpbiBmbGFncwogIyBTbG93ZXIsIHNpbmNlIGl0IHJ1bnMgc29tZSB0aGluZ3Mgc2V2ZXJhbCB0aW1lcy4KIEVYVEVOREVERVJST1JURVNUID0gRmFsc2UKIAotI01hcCB0aGUgdGVzdCBjYXNlcycgZXJyb3IgbmFtZXMgdG8gdGhlIGFjdHVhbCBlcnJvcnMKLUVycm9yTmFtZXMgPSB7J2NsYW1wZWQnIDogQ2xhbXBlZCwKLSAgICAgICAgICAgICAgJ2NvbnZlcnNpb25fc3ludGF4JyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdkaXZpc2lvbl9ieV96ZXJvJyA6IERpdmlzaW9uQnlaZXJvLAotICAgICAgICAgICAgICAnZGl2aXNpb25faW1wb3NzaWJsZScgOiBJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAnZGl2aXNpb25fdW5kZWZpbmVkJyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdpbmV4YWN0JyA6IEluZXhhY3QsCi0gICAgICAgICAgICAgICdpbnZhbGlkX2NvbnRleHQnIDogSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgJ2ludmFsaWRfb3BlcmF0aW9uJyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdvdmVyZmxvdycgOiBPdmVyZmxvdywKLSAgICAgICAgICAgICAgJ3JvdW5kZWQnIDogUm91bmRlZCwKLSAgICAgICAgICAgICAgJ3N1Ym5vcm1hbCcgOiBTdWJub3JtYWwsCi0gICAgICAgICAgICAgICd1bmRlcmZsb3cnIDogVW5kZXJmbG93fQorIyBUZXN0IGV4dHJhIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIEMgdmVyc2lvbiAoLURFWFRSQV9GVU5DVElPTkFMSVRZKS4KK0VYVFJBX0ZVTkNUSU9OQUxJVFkgPSBUcnVlIGlmIGhhc2F0dHIoQywgJ0RlY0NsYW1wZWQnKSBlbHNlIEZhbHNlCityZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5ID0gdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgRVhUUkFfRlVOQ1RJT05BTElUWSwgInRlc3QgcmVxdWlyZXMgYnVpbGQgd2l0aCAtREVYVFJBX0ZVTkNUSU9OQUxJVFkiKQorc2tpcF9pZl9leHRyYV9mdW5jdGlvbmFsaXR5ID0gdW5pdHRlc3Quc2tpcElmKAorICBFWFRSQV9GVU5DVElPTkFMSVRZLCAidGVzdCByZXF1aXJlcyByZWd1bGFyIGJ1aWxkIikKIAogCi1kZWYgTm9uZnVuY3Rpb24oKmFyZ3MpOgotICAgICIiIkRvZXNuJ3QgZG8gYW55dGhpbmcuIiIiCi0gICAgcmV0dXJuIE5vbmUKK2NsYXNzIElCTVRlc3RDYXNlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQ2xhc3Mgd2hpY2ggdGVzdHMgdGhlIERlY2ltYWwgY2xhc3MgYWdhaW5zdCB0aGUgSUJNIHRlc3QgY2FzZXMuIiIiCiAKLVJvdW5kaW5nRGljdCA9IHsnY2VpbGluZycgOiBST1VORF9DRUlMSU5HLCAjTWFwcyB0ZXN0LWNhc2UgbmFtZXMgdG8gcm91bmRpbmdzLgotICAgICAgICAgICAgICAgICdkb3duJyA6IFJPVU5EX0RPV04sCi0gICAgICAgICAgICAgICAgJ2Zsb29yJyA6IFJPVU5EX0ZMT09SLAotICAgICAgICAgICAgICAgICdoYWxmX2Rvd24nIDogUk9VTkRfSEFMRl9ET1dOLAotICAgICAgICAgICAgICAgICdoYWxmX2V2ZW4nIDogUk9VTkRfSEFMRl9FVkVOLAotICAgICAgICAgICAgICAgICdoYWxmX3VwJyA6IFJPVU5EX0hBTEZfVVAsCi0gICAgICAgICAgICAgICAgJ3VwJyA6IFJPVU5EX1VQLAotICAgICAgICAgICAgICAgICcwNXVwJyA6IFJPVU5EXzA1VVB9Ci0KLSMgTmFtZSBhZGFwdGVyIHRvIGJlIGFibGUgdG8gY2hhbmdlIHRoZSBEZWNpbWFsIGFuZCBDb250ZXh0Ci0jIGludGVyZmFjZSB3aXRob3V0IGNoYW5naW5nIHRoZSB0ZXN0IGZpbGVzIGZyb20gQ293bGlzaGF3Ci1uYW1lQWRhcHRlciA9IHsnYW5kJzonbG9naWNhbF9hbmQnLAotICAgICAgICAgICAgICAgJ2FwcGx5JzonX2FwcGx5JywKLSAgICAgICAgICAgICAgICdjbGFzcyc6J251bWJlcl9jbGFzcycsCi0gICAgICAgICAgICAgICAnY29tcGFyZXNpZyc6J2NvbXBhcmVfc2lnbmFsJywKLSAgICAgICAgICAgICAgICdjb21wYXJldG90YWwnOidjb21wYXJlX3RvdGFsJywKLSAgICAgICAgICAgICAgICdjb21wYXJldG90bWFnJzonY29tcGFyZV90b3RhbF9tYWcnLAotICAgICAgICAgICAgICAgJ2NvcHknOidjb3B5X2RlY2ltYWwnLAotICAgICAgICAgICAgICAgJ2NvcHlhYnMnOidjb3B5X2FicycsCi0gICAgICAgICAgICAgICAnY29weW5lZ2F0ZSc6J2NvcHlfbmVnYXRlJywKLSAgICAgICAgICAgICAgICdjb3B5c2lnbic6J2NvcHlfc2lnbicsCi0gICAgICAgICAgICAgICAnZGl2aWRlaW50JzonZGl2aWRlX2ludCcsCi0gICAgICAgICAgICAgICAnaW52ZXJ0JzonbG9naWNhbF9pbnZlcnQnLAotICAgICAgICAgICAgICAgJ2lzY2Fub25pY2FsJzonaXNfY2Fub25pY2FsJywKLSAgICAgICAgICAgICAgICdpc2Zpbml0ZSc6J2lzX2Zpbml0ZScsCi0gICAgICAgICAgICAgICAnaXNpbmZpbml0ZSc6J2lzX2luZmluaXRlJywKLSAgICAgICAgICAgICAgICdpc25hbic6J2lzX25hbicsCi0gICAgICAgICAgICAgICAnaXNub3JtYWwnOidpc19ub3JtYWwnLAotICAgICAgICAgICAgICAgJ2lzcW5hbic6J2lzX3FuYW4nLAotICAgICAgICAgICAgICAgJ2lzc2lnbmVkJzonaXNfc2lnbmVkJywKLSAgICAgICAgICAgICAgICdpc3NuYW4nOidpc19zbmFuJywKLSAgICAgICAgICAgICAgICdpc3N1Ym5vcm1hbCc6J2lzX3N1Ym5vcm1hbCcsCi0gICAgICAgICAgICAgICAnaXN6ZXJvJzonaXNfemVybycsCi0gICAgICAgICAgICAgICAnbWF4bWFnJzonbWF4X21hZycsCi0gICAgICAgICAgICAgICAnbWlubWFnJzonbWluX21hZycsCi0gICAgICAgICAgICAgICAnbmV4dG1pbnVzJzonbmV4dF9taW51cycsCi0gICAgICAgICAgICAgICAnbmV4dHBsdXMnOiduZXh0X3BsdXMnLAotICAgICAgICAgICAgICAgJ25leHR0b3dhcmQnOiduZXh0X3Rvd2FyZCcsCi0gICAgICAgICAgICAgICAnb3InOidsb2dpY2FsX29yJywKLSAgICAgICAgICAgICAgICdyZWR1Y2UnOidub3JtYWxpemUnLAotICAgICAgICAgICAgICAgJ3JlbWFpbmRlcm5lYXInOidyZW1haW5kZXJfbmVhcicsCi0gICAgICAgICAgICAgICAnc2FtZXF1YW50dW0nOidzYW1lX3F1YW50dW0nLAotICAgICAgICAgICAgICAgJ3NxdWFyZXJvb3QnOidzcXJ0JywKLSAgICAgICAgICAgICAgICd0b2VuZyc6J3RvX2VuZ19zdHJpbmcnLAotICAgICAgICAgICAgICAgJ3RvaW50ZWdyYWwnOid0b19pbnRlZ3JhbF92YWx1ZScsCi0gICAgICAgICAgICAgICAndG9pbnRlZ3JhbHgnOid0b19pbnRlZ3JhbF9leGFjdCcsCi0gICAgICAgICAgICAgICAndG9zY2knOid0b19zY2lfc3RyaW5nJywKLSAgICAgICAgICAgICAgICd4b3InOidsb2dpY2FsX3hvcicsCi0gICAgICAgICAgICAgIH0KLQotIyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZXR1cm4gVHJ1ZS9GYWxzZSByYXRoZXIgdGhhbiBhIERlY2ltYWwgaW5zdGFuY2UKLQotTE9HSUNBTF9GVU5DVElPTlMgPSAoCi0gICAgJ2lzX2Nhbm9uaWNhbCcsCi0gICAgJ2lzX2Zpbml0ZScsCi0gICAgJ2lzX2luZmluaXRlJywKLSAgICAnaXNfbmFuJywKLSAgICAnaXNfbm9ybWFsJywKLSAgICAnaXNfcW5hbicsCi0gICAgJ2lzX3NpZ25lZCcsCi0gICAgJ2lzX3NuYW4nLAotICAgICdpc19zdWJub3JtYWwnLAotICAgICdpc196ZXJvJywKLSAgICAnc2FtZV9xdWFudHVtJywKLSAgICApCi0KLWNsYXNzIERlY2ltYWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJDbGFzcyB3aGljaCB0ZXN0cyB0aGUgRGVjaW1hbCBjbGFzcyBhZ2FpbnN0IHRoZSB0ZXN0IGNhc2VzLgotCi0gICAgQ2hhbmdlZCBmb3IgdW5pdHRlc3QuCi0gICAgIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmNvbnRleHQgPSBDb250ZXh0KCkKKyAgICAgICAgc2VsZi5jb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQoKQorICAgICAgICBzZWxmLnJlYWRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQoKQogICAgICAgICBzZWxmLmlnbm9yZV9saXN0ID0gWycjJ10KLSAgICAgICAgIyBCYXNpY2FsbHksIGEgIyBtZWFucyByZXR1cm4gTmFOIEludmFsaWRPcGVyYXRpb24uCi0gICAgICAgICMgRGlmZmVyZW50IGZyb20gYSBzTmFOIGluIHRyaW0KIAorICAgICAgICAjIExpc3Qgb2YgaW5kaXZpZHVhbCAuZGVjVGVzdCB0ZXN0IGlkcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGVzdHMgdGhhdAorICAgICAgICAjIHdlJ3JlIHNraXBwaW5nIGZvciBvbmUgcmVhc29uIG9yIGFub3RoZXIuCisgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcyA9IHNldChbCisgICAgICAgICAgICAjIFNraXAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgc2NhbGViIHRlc3RzLgorICAgICAgICAgICAgJ3NjYngxNjQnLAorICAgICAgICAgICAgJ3NjYngxNjUnLAorCisgICAgICAgICAgICAjIEZvciBzb21lIG9wZXJhdGlvbnMgKGN1cnJlbnRseSBleHAsIGxuLCBsb2cxMCwgcG93ZXIpLCB0aGUgZGVjTnVtYmVyCisgICAgICAgICAgICAjIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpbXBvc2VzIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIG9uIHRoZSBjb250ZXh0CisgICAgICAgICAgICAjIGFuZCBvcGVyYW5kcy4gIFRoZXNlIHJlc3RyaWN0aW9ucyBhcmUgbm90IHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb247CisgICAgICAgICAgICAjIGhvd2V2ZXIsIHRoZSBlZmZlY3Qgb2YgdGhlc2UgcmVzdHJpY3Rpb25zIGRvZXMgc2hvdyB1cCBpbiBzb21lIG9mIHRoZQorICAgICAgICAgICAgIyB0ZXN0Y2FzZXMuICBXZSBza2lwIHRlc3RjYXNlcyB0aGF0IHZpb2xhdGUgdGhlc2UgcmVzdHJpY3Rpb25zLCBzaW5jZQorICAgICAgICAgICAgIyBEZWNpbWFsIGJlaGF2ZXMgZGlmZmVyZW50bHkgZnJvbSBkZWNOdW1iZXIgZm9yIHRoZXNlIHRlc3RjYXNlcyBzbyB0aGVzZQorICAgICAgICAgICAgIyB0ZXN0Y2FzZXMgd291bGQgb3RoZXJ3aXNlIGZhaWwuCisgICAgICAgICAgICAnZXhweDkwMScsCisgICAgICAgICAgICAnZXhweDkwMicsCisgICAgICAgICAgICAnZXhweDkwMycsCisgICAgICAgICAgICAnZXhweDkwNScsCisgICAgICAgICAgICAnbG54OTAxJywKKyAgICAgICAgICAgICdsbng5MDInLAorICAgICAgICAgICAgJ2xueDkwMycsCisgICAgICAgICAgICAnbG54OTA1JywKKyAgICAgICAgICAgICdsb2d4OTAxJywKKyAgICAgICAgICAgICdsb2d4OTAyJywKKyAgICAgICAgICAgICdsb2d4OTAzJywKKyAgICAgICAgICAgICdsb2d4OTA1JywKKyAgICAgICAgICAgICdwb3d4MTE4MycsCisgICAgICAgICAgICAncG93eDExODQnLAorICAgICAgICAgICAgJ3Bvd3g0MDAxJywKKyAgICAgICAgICAgICdwb3d4NDAwMicsCisgICAgICAgICAgICAncG93eDQwMDMnLAorICAgICAgICAgICAgJ3Bvd3g0MDA1JywKKyAgICAgICAgICAgICdwb3d4NDAwOCcsCisgICAgICAgICAgICAncG93eDQwMTAnLAorICAgICAgICAgICAgJ3Bvd3g0MDEyJywKKyAgICAgICAgICAgICdwb3d4NDAxNCcsCisgICAgICAgICAgICBdKQorCisgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDOgorICAgICAgICAgICAgIyBzdGF0dXMgaGFzIGFkZGl0aW9uYWwgU3Vibm9ybWFsLCBVbmRlcmZsb3cKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3B3c3g4MDMnKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncHdzeDgwNScpCisgICAgICAgICAgICAjIENvcnJlY3Qgcm91bmRpbmcgKHNraXBwZWQgZm9yIGRlY051bWJlciwgdG9vKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzMDInKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzMDMnKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzNDInKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzNDMnKQorICAgICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlNzA0OQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncHdteDMyNScpCisgICAgICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMuYWRkKCdwd214MzI2JykKKworICAgICAgICAjIE1hcCB0ZXN0IGRpcmVjdGl2ZXMgdG8gc2V0dGVyIGZ1bmN0aW9ucy4KICAgICAgICAgc2VsZi5DaGFuZ2VEaWN0ID0geydwcmVjaXNpb24nIDogc2VsZi5jaGFuZ2VfcHJlY2lzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICdyb3VuZGluZycgOiBzZWxmLmNoYW5nZV9yb3VuZGluZ19tZXRob2QsCi0gICAgICAgICAgICAgICAgICAgICAgJ21heGV4cG9uZW50JyA6IHNlbGYuY2hhbmdlX21heF9leHBvbmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAnbWluZXhwb25lbnQnIDogc2VsZi5jaGFuZ2VfbWluX2V4cG9uZW50LAotICAgICAgICAgICAgICAgICAgICAgICdjbGFtcCcgOiBzZWxmLmNoYW5nZV9jbGFtcH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb3VuZGluZycgOiBzZWxmLmNoYW5nZV9yb3VuZGluZ19tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4ZXhwb25lbnQnIDogc2VsZi5jaGFuZ2VfbWF4X2V4cG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbmV4cG9uZW50JyA6IHNlbGYuY2hhbmdlX21pbl9leHBvbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFtcCcgOiBzZWxmLmNoYW5nZV9jbGFtcH0KKworICAgICAgICAjIE5hbWUgYWRhcHRlciB0byBiZSBhYmxlIHRvIGNoYW5nZSB0aGUgRGVjaW1hbCBhbmQgQ29udGV4dAorICAgICAgICAjIGludGVyZmFjZSB3aXRob3V0IGNoYW5naW5nIHRoZSB0ZXN0IGZpbGVzIGZyb20gQ293bGlzaGF3LgorICAgICAgICBzZWxmLk5hbWVBZGFwdGVyID0geydhbmQnOidsb2dpY2FsX2FuZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwcGx5JzonX2FwcGx5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3MnOidudW1iZXJfY2xhc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJlc2lnJzonY29tcGFyZV9zaWduYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJldG90YWwnOidjb21wYXJlX3RvdGFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyZXRvdG1hZyc6J2NvbXBhcmVfdG90YWxfbWFnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29weSc6J2NvcHlfZGVjaW1hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHlhYnMnOidjb3B5X2FicycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHluZWdhdGUnOidjb3B5X25lZ2F0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHlzaWduJzonY29weV9zaWduJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGl2aWRlaW50JzonZGl2aWRlX2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmVydCc6J2xvZ2ljYWxfaW52ZXJ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNjYW5vbmljYWwnOidpc19jYW5vbmljYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc2Zpbml0ZSc6J2lzX2Zpbml0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzaW5maW5pdGUnOidpc19pbmZpbml0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzbmFuJzonaXNfbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNub3JtYWwnOidpc19ub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc3FuYW4nOidpc19xbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNzaWduZWQnOidpc19zaWduZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc3NuYW4nOidpc19zbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNzdWJub3JtYWwnOidpc19zdWJub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc3plcm8nOidpc196ZXJvJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4bWFnJzonbWF4X21hZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbm1hZyc6J21pbl9tYWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXh0bWludXMnOiduZXh0X21pbnVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV4dHBsdXMnOiduZXh0X3BsdXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXh0dG93YXJkJzonbmV4dF90b3dhcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcic6J2xvZ2ljYWxfb3InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWR1Y2UnOidub3JtYWxpemUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJuZWFyJzoncmVtYWluZGVyX25lYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1lcXVhbnR1bSc6J3NhbWVfcXVhbnR1bScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NxdWFyZXJvb3QnOidzcXJ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9lbmcnOid0b19lbmdfc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9pbnRlZ3JhbCc6J3RvX2ludGVncmFsX3ZhbHVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9pbnRlZ3JhbHgnOid0b19pbnRlZ3JhbF9leGFjdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rvc2NpJzondG9fc2NpX3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3hvcic6J2xvZ2ljYWxfeG9yJ30KKworICAgICAgICAjIE1hcCB0ZXN0LWNhc2UgbmFtZXMgdG8gcm91bmRpbmdzLgorICAgICAgICBzZWxmLlJvdW5kaW5nRGljdCA9IHsnY2VpbGluZycgOiBzZWxmLmRlY2ltYWwuUk9VTkRfQ0VJTElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rvd24nIDogc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmbG9vcicgOiBzZWxmLmRlY2ltYWwuUk9VTkRfRkxPT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYWxmX2Rvd24nIDogc2VsZi5kZWNpbWFsLlJPVU5EX0hBTEZfRE9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbGZfZXZlbicgOiBzZWxmLmRlY2ltYWwuUk9VTkRfSEFMRl9FVkVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFsZl91cCcgOiBzZWxmLmRlY2ltYWwuUk9VTkRfSEFMRl9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VwJyA6IHNlbGYuZGVjaW1hbC5ST1VORF9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzA1dXAnIDogc2VsZi5kZWNpbWFsLlJPVU5EXzA1VVB9CisKKyAgICAgICAgIyBNYXAgdGhlIHRlc3QgY2FzZXMnIGVycm9yIG5hbWVzIHRvIHRoZSBhY3R1YWwgZXJyb3JzLgorICAgICAgICBzZWxmLkVycm9yTmFtZXMgPSB7J2NsYW1wZWQnIDogc2VsZi5kZWNpbWFsLkNsYW1wZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbl9zeW50YXgnIDogc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGl2aXNpb25fYnlfemVybycgOiBzZWxmLmRlY2ltYWwuRGl2aXNpb25CeVplcm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGl2aXNpb25faW1wb3NzaWJsZScgOiBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXZpc2lvbl91bmRlZmluZWQnIDogc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5leGFjdCcgOiBzZWxmLmRlY2ltYWwuSW5leGFjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkX2NvbnRleHQnIDogc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZF9vcGVyYXRpb24nIDogc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3ZlcmZsb3cnIDogc2VsZi5kZWNpbWFsLk92ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kZWQnIDogc2VsZi5kZWNpbWFsLlJvdW5kZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vibm9ybWFsJyA6IHNlbGYuZGVjaW1hbC5TdWJub3JtYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJmbG93JyA6IHNlbGYuZGVjaW1hbC5VbmRlcmZsb3d9CisKKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZXR1cm4gVHJ1ZS9GYWxzZSByYXRoZXIgdGhhbiBhCisgICAgICAgICMgRGVjaW1hbCBpbnN0YW5jZS4KKyAgICAgICAgc2VsZi5Mb2dpY2FsRnVuY3Rpb25zID0gKCdpc19jYW5vbmljYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX2Zpbml0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfaW5maW5pdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX25hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfbm9ybWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19xbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19zaWduZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX3NuYW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX3N1Ym5vcm1hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfemVybycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtZV9xdWFudHVtJykKKworICAgIGRlZiByZWFkX3VubGltaXRlZChzZWxmLCB2LCBjb250ZXh0KToKKyAgICAgICAgIiIiV29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSAzMi1iaXQgX2RlY2ltYWwgdmVyc2lvbi4gVGhlCisgICAgICAgICAgIGd1YXJhbnRlZWQgbWF4aW11bSB2YWx1ZXMgZm9yIHByZWMsIEVtYXggZXRjLiBhcmUgNDI1MDAwMDAwLAorICAgICAgICAgICBidXQgaGlnaGVyIHZhbHVlcyB1c3VhbGx5IHdvcmssIGV4Y2VwdCBmb3IgcmFyZSBjb3JuZXIgY2FzZXMuCisgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIGFsbCBvZiB0aGUgSUJNIHRlc3RzIHBhc3Mgd2l0aCBtYXhpbXVtIHZhbHVlcworICAgICAgICAgICBvZiAxMDcwMDAwMDAwLiIiIgorICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQyBhbmQgc2VsZi5kZWNpbWFsLk1BWF9FTUFYID09IDQyNTAwMDAwMDoKKyAgICAgICAgICAgIHNlbGYucmVhZGNvbnRleHQuX3Vuc2FmZV9zZXRwcmVjKDEwNzAwMDAwMDApCisgICAgICAgICAgICBzZWxmLnJlYWRjb250ZXh0Ll91bnNhZmVfc2V0ZW1heCgxMDcwMDAwMDAwKQorICAgICAgICAgICAgc2VsZi5yZWFkY29udGV4dC5fdW5zYWZlX3NldGVtaW4oLTEwNzAwMDAwMDApCisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWFkY29udGV4dC5jcmVhdGVfZGVjaW1hbCh2KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVjaW1hbC5EZWNpbWFsKHYsIGNvbnRleHQpCiAKICAgICBkZWYgZXZhbF9maWxlKHNlbGYsIGZpbGUpOgogICAgICAgICBnbG9iYWwgc2tpcF9leHBlY3RlZApAQCAtMjI3LDcgKzI5MCw3IEBACiAgICAgICAgICAgICAgICAgI3ByaW50IGxpbmUKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHQgPSBzZWxmLmV2YWxfbGluZShsaW5lKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBEZWNpbWFsRXhjZXB0aW9uIGFzIGV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5kZWNpbWFsLkRlY2ltYWxFeGNlcHRpb24gYXMgZXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgICAjRXhjZXB0aW9uIHJhaXNlZCB3aGVyZSB0aGVyZSBzaG91bGRuJ3QgaGF2ZSBiZWVuIG9uZS4KICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdFeGNlcHRpb24gIicrZXhjZXB0aW9uLl9fY2xhc3NfXy5fX25hbWVfXyArICciIHJhaXNlZCBvbiBsaW5lICcrbGluZSkKIApAQCAtMjU0LDIzICszMTcsMjMgQEAKICAgICBkZWYgZXZhbF9kaXJlY3RpdmUoc2VsZiwgcyk6CiAgICAgICAgIGZ1bmN0LCB2YWx1ZSA9ICh4LnN0cmlwKCkubG93ZXIoKSBmb3IgeCBpbiBzLnNwbGl0KCc6JykpCiAgICAgICAgIGlmIGZ1bmN0ID09ICdyb3VuZGluZyc6Ci0gICAgICAgICAgICB2YWx1ZSA9IFJvdW5kaW5nRGljdFt2YWx1ZV0KKyAgICAgICAgICAgIHZhbHVlID0gc2VsZi5Sb3VuZGluZ0RpY3RbdmFsdWVdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBpbnQodmFsdWUpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgZnVuY3QgPSBzZWxmLkNoYW5nZURpY3QuZ2V0KGZ1bmN0LCBOb25mdW5jdGlvbikKKyAgICAgICAgZnVuY3QgPSBzZWxmLkNoYW5nZURpY3QuZ2V0KGZ1bmN0LCAobGFtYmRhICphcmdzOiBOb25lKSkKICAgICAgICAgZnVuY3QodmFsdWUpCiAKICAgICBkZWYgZXZhbF9lcXVhdGlvbihzZWxmLCBzKToKLSAgICAgICAgI2dsb2JhbCBERUZBVUxUX1BSRUNJU0lPTgotICAgICAgICAjcHJpbnQgREVGQVVMVF9QUkVDSVNJT04KIAogICAgICAgICBpZiBub3QgVEVTVF9BTEwgYW5kIHJhbmRvbS5yYW5kb20oKSA8IDAuOTA6CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBzZWxmLmNvbnRleHQuY2xlYXJfZmxhZ3MoKQorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIFNpZGVzID0gcy5zcGxpdCgnLT4nKQogICAgICAgICAgICAgTCA9IFNpZGVzWzBdLnN0cmlwKCkuc3BsaXQoKQpAQCAtMjgzLDI2ICszNDYsMjYgQEAKICAgICAgICAgICAgIGFucyA9IExbMF0KICAgICAgICAgICAgIGV4Y2VwdGlvbnMgPSBMWzE6XQogICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEluZGV4RXJyb3IpOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZE9wZXJhdGlvbgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KICAgICAgICAgZGVmIEZpeFF1b3Rlcyh2YWwpOgogICAgICAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoIicnIiwgJ1NpbmdsZVF1b3RlJykucmVwbGFjZSgnIiInLCAnRG91YmxlUXVvdGUnKQogICAgICAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoIiciLCAnJykucmVwbGFjZSgnIicsICcnKQogICAgICAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoJ1NpbmdsZVF1b3RlJywgIiciKS5yZXBsYWNlKCdEb3VibGVRdW90ZScsICciJykKICAgICAgICAgICAgIHJldHVybiB2YWwKIAotICAgICAgICBpZiBpZCBpbiBza2lwcGVkX3Rlc3RfaWRzOgorICAgICAgICBpZiBpZCBpbiBzZWxmLnNraXBwZWRfdGVzdF9pZHM6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBmbmFtZSA9IG5hbWVBZGFwdGVyLmdldChmdW5jdCwgZnVuY3QpCisgICAgICAgIGZuYW1lID0gc2VsZi5OYW1lQWRhcHRlci5nZXQoZnVuY3QsIGZ1bmN0KQogICAgICAgICBpZiBmbmFtZSA9PSAncmVzY2FsZSc6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZnVuY3QgPSBnZXRhdHRyKHNlbGYuY29udGV4dCwgZm5hbWUpCiAgICAgICAgIHZhbHMgPSBbXQogICAgICAgICBjb25nbG9tZXJhdGUgPSAnJwogICAgICAgICBxdW90ZSA9IDAKLSAgICAgICAgdGhlaXJleGNlcHRpb25zID0gW0Vycm9yTmFtZXNbeC5sb3dlcigpXSBmb3IgeCBpbiBleGNlcHRpb25zXQorICAgICAgICB0aGVpcmV4Y2VwdGlvbnMgPSBbc2VsZi5FcnJvck5hbWVzW3gubG93ZXIoKV0gZm9yIHggaW4gZXhjZXB0aW9uc10KIAotICAgICAgICBmb3IgZXhjZXB0aW9uIGluIFNpZ25hbHM6CisgICAgICAgIGZvciBleGNlcHRpb24gaW4gU2lnbmFsc1tzZWxmLmRlY2ltYWxdOgogICAgICAgICAgICAgc2VsZi5jb250ZXh0LnRyYXBzW2V4Y2VwdGlvbl0gPSAxICNDYXRjaCB0aGVzZSBidWdzLi4uCiAgICAgICAgIGZvciBleGNlcHRpb24gaW4gdGhlaXJleGNlcHRpb25zOgogICAgICAgICAgICAgc2VsZi5jb250ZXh0LnRyYXBzW2V4Y2VwdGlvbl0gPSAwCkBAIC0zMjQsNyArMzg3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdChzZWxmLmNvbnRleHQuY3JlYXRlX2RlY2ltYWwodikpCiAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFNpZ25hbHMgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzW3NlbGYuZGVjaW1hbF0gYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlJhaXNlZCAlcyBpbiAlcyB3aGVuICVzIGRpc2FibGVkIiAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUsIHMsIGVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0zMzIsNyArMzk1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tlcnJvcl0gPSAwCiAgICAgICAgICAgICAgICAgdiA9IHNlbGYuY29udGV4dC5jcmVhdGVfZGVjaW1hbCh2KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB2ID0gRGVjaW1hbCh2LCBzZWxmLmNvbnRleHQpCisgICAgICAgICAgICAgICAgdiA9IHNlbGYucmVhZF91bmxpbWl0ZWQodiwgc2VsZi5jb250ZXh0KQogICAgICAgICAgICAgdmFscy5hcHBlbmQodikKIAogICAgICAgICBhbnMgPSBGaXhRdW90ZXMoYW5zKQpAQCAtMzQ0LDcgKzQwNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0KCp2YWxzKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBlcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IFNpZ25hbHNbc2VsZi5kZWNpbWFsXSBhcyBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlJhaXNlZCAlcyBpbiAlcyB3aGVuICVzIGRpc2FibGVkIiAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLCBzLCBlcnJvcikpCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTM1MiwxNCArNDE1LDE0IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnRyYXBzW2Vycm9yXSA9IDAKIAogICAgICAgICAgICAgIyBhcyBhYm92ZSwgYnV0IGFkZCB0cmFwcyBjdW11bGF0aXZlbHksIHRvIGNoZWNrIHByZWNlZGVuY2UKLSAgICAgICAgICAgIG9yZGVyZWRfZXJyb3JzID0gW2UgZm9yIGUgaW4gT3JkZXJlZFNpZ25hbHMgaWYgZSBpbiB0aGVpcmV4Y2VwdGlvbnNdCisgICAgICAgICAgICBvcmRlcmVkX2Vycm9ycyA9IFtlIGZvciBlIGluIE9yZGVyZWRTaWduYWxzW3NlbGYuZGVjaW1hbF0gaWYgZSBpbiB0aGVpcmV4Y2VwdGlvbnNdCiAgICAgICAgICAgICBmb3IgZXJyb3IgaW4gb3JkZXJlZF9lcnJvcnM6CiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnRyYXBzW2Vycm9yXSA9IDEKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0KCp2YWxzKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBlcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IFNpZ25hbHNbc2VsZi5kZWNpbWFsXSBhcyBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlJhaXNlZCAlcyBpbiAlczsgZXhwZWN0ZWQgJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlKGUpLCBzLCBlcnJvcikpCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTM3Myw1NCArNDM2LDY5IEBACiAgICAgICAgICAgICBwcmludCgiLS0iLCBzZWxmLmNvbnRleHQpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlc3VsdCA9IHN0cihmdW5jdCgqdmFscykpCi0gICAgICAgICAgICBpZiBmbmFtZSBpbiBMT0dJQ0FMX0ZVTkNUSU9OUzoKKyAgICAgICAgICAgIGlmIGZuYW1lIGluIHNlbGYuTG9naWNhbEZ1bmN0aW9uczoKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdHIoaW50KGV2YWwocmVzdWx0KSkpICMgJ1RydWUnLCAnRmFsc2UnIC0+ICcxJywgJzAnCi0gICAgICAgIGV4Y2VwdCBTaWduYWxzIGFzIGVycm9yOgorICAgICAgICBleGNlcHQgU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGFzIGVycm9yOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXMiICUgKGVycm9yLCBzKSkKICAgICAgICAgZXhjZXB0OiAjQ2F0Y2ggYW55IGVycm9yIGxvbmcgZW5vdWdoIHRvIHN0YXRlIHRoZSB0ZXN0IGNhc2UuCiAgICAgICAgICAgICBwcmludCgiRVJST1I6IiwgcykKICAgICAgICAgICAgIHJhaXNlCiAKICAgICAgICAgbXlleGNlcHRpb25zID0gc2VsZi5nZXRleGNlcHRpb25zKCkKLSAgICAgICAgc2VsZi5jb250ZXh0LmNsZWFyX2ZsYWdzKCkKIAogICAgICAgICBteWV4Y2VwdGlvbnMuc29ydChrZXk9cmVwcikKICAgICAgICAgdGhlaXJleGNlcHRpb25zLnNvcnQoa2V5PXJlcHIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGFucywKICAgICAgICAgICAgICAgICAgICAgICAgICAnSW5jb3JyZWN0IGFuc3dlciBmb3IgJyArIHMgKyAnIC0tIGdvdCAnICsgcmVzdWx0KQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlleGNlcHRpb25zLCB0aGVpcmV4Y2VwdGlvbnMsCiAgICAgICAgICAgICAgICdJbmNvcnJlY3QgZmxhZ3Mgc2V0IGluICcgKyBzICsgJyAtLSBnb3QgJyArIHN0cihteWV4Y2VwdGlvbnMpKQogICAgICAgICByZXR1cm4KIAogICAgIGRlZiBnZXRleGNlcHRpb25zKHNlbGYpOgotICAgICAgICByZXR1cm4gW2UgZm9yIGUgaW4gU2lnbmFscyBpZiBzZWxmLmNvbnRleHQuZmxhZ3NbZV1dCisgICAgICAgIHJldHVybiBbZSBmb3IgZSBpbiBTaWduYWxzW3NlbGYuZGVjaW1hbF0gaWYgc2VsZi5jb250ZXh0LmZsYWdzW2VdXQogCiAgICAgZGVmIGNoYW5nZV9wcmVjaXNpb24oc2VsZiwgcHJlYyk6Ci0gICAgICAgIHNlbGYuY29udGV4dC5wcmVjID0gcHJlYworICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQyBhbmQgc2VsZi5kZWNpbWFsLk1BWF9QUkVDID09IDQyNTAwMDAwMDoKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5fdW5zYWZlX3NldHByZWMocHJlYykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5wcmVjID0gcHJlYwogICAgIGRlZiBjaGFuZ2Vfcm91bmRpbmdfbWV0aG9kKHNlbGYsIHJvdW5kaW5nKToKICAgICAgICAgc2VsZi5jb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKICAgICBkZWYgY2hhbmdlX21pbl9leHBvbmVudChzZWxmLCBleHApOgotICAgICAgICBzZWxmLmNvbnRleHQuRW1pbiA9IGV4cAorICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQyBhbmQgc2VsZi5kZWNpbWFsLk1BWF9QUkVDID09IDQyNTAwMDAwMDoKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5fdW5zYWZlX3NldGVtaW4oZXhwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jb250ZXh0LkVtaW4gPSBleHAKICAgICBkZWYgY2hhbmdlX21heF9leHBvbmVudChzZWxmLCBleHApOgotICAgICAgICBzZWxmLmNvbnRleHQuRW1heCA9IGV4cAorICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQyBhbmQgc2VsZi5kZWNpbWFsLk1BWF9QUkVDID09IDQyNTAwMDAwMDoKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5fdW5zYWZlX3NldGVtYXgoZXhwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jb250ZXh0LkVtYXggPSBleHAKICAgICBkZWYgY2hhbmdlX2NsYW1wKHNlbGYsIGNsYW1wKToKICAgICAgICAgc2VsZi5jb250ZXh0LmNsYW1wID0gY2xhbXAKIAotCitjbGFzcyBDSUJNVGVzdENhc2VzKElCTVRlc3RDYXNlcyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5SUJNVGVzdENhc2VzKElCTVRlc3RDYXNlcyk6CisgICAgZGVjaW1hbCA9IFAKIAogIyBUaGUgZm9sbG93aW5nIGNsYXNzZXMgdGVzdCB0aGUgYmVoYXZpb3VyIG9mIERlY2ltYWwgYWNjb3JkaW5nIHRvIFBFUCAzMjcKIAotY2xhc3MgRGVjaW1hbEV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICcnJ1VuaXQgdGVzdHMgZm9yIEV4cGxpY2l0IENvbnN0cnVjdGlvbiBjYXNlcyBvZiBEZWNpbWFsLicnJwogCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfZW1wdHkoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoKSwgRGVjaW1hbCgiMCIpKQogCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV9Ob25lKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsLCBOb25lKQogCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgICNwb3NpdGl2ZQogICAgICAgICBkID0gRGVjaW1hbCg0NSkKQEAgLTQzOCw3ICs1MTYsMTggQEAKICAgICAgICAgZCA9IERlY2ltYWwoMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICcwJykKIAorICAgICAgICAjIHNpbmdsZSB3b3JkIGxvbmdzCisgICAgICAgIGZvciBuIGluIHJhbmdlKDAsIDMyKToKKyAgICAgICAgICAgIGZvciBzaWduIGluICgtMSwgMSk6CisgICAgICAgICAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgICAgICAgICBpID0gc2lnbiAqICgyKipuICsgeCkKKyAgICAgICAgICAgICAgICAgICAgZCA9IERlY2ltYWwoaSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksIHN0cihpKSkKKwogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fc3RyaW5nKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKIAogICAgICAgICAjZW1wdHkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnJykpLCAnTmFOJykKQEAgLTQ1OCw4ICs1NDcsMzUgQEAKICAgICAgICAgI2xlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgcGVybWl0dGVkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJzEuM0U0IFxuJykpLCAnMS4zRSs0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnICAtNy44OScpKSwgJy03Ljg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiICAzLjQ1Njc5ICAiKSksICczLjQ1Njc5JykKKworICAgICAgICAjIHVuaWNvZGUgd2hpdGVzcGFjZQorICAgICAgICBmb3IgbGVhZCBpbiBbIiIsICcgJywgJ1x1MDBhMCcsICdcdTIwNWYnXToKKyAgICAgICAgICAgIGZvciB0cmFpbCBpbiBbIiIsICcgJywgJ1x1MDBhMCcsICdcdTIwNWYnXToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKGxlYWQgKyAnOS4zMTFFKzI4JyArIHRyYWlsKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOS4zMTFFKzI4JykKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgIyBJbnZhbGlkIHN0cmluZworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgInh5eiIpCisgICAgICAgICAgICAjIFR3byBhcmd1bWVudHMgbWF4CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwsICIxMjM0IiwgIngiLCAieSIpCisKKyAgICAgICAgICAgICMgc3BhY2Ugd2l0aGluIHRoZSBudW1lcmljIHBhcnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICIxXHUwMGEwMlx1MDBhMDMiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIlx1MDBhMDFcdTAwYTAyXHUwMGEwIikKKworICAgICAgICAgICAgIyB1bmljb2RlIHdoaXRlc3BhY2UKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJcdTAwYTAiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIlx1MDBhMFx1MDBhMCIpCisKKyAgICAgICAgICAgICMgZW1iZWRkZWQgTlVMCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiMTJcdTAwMDAzIikKKwogCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV90dXBsZXMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgICN6ZXJvCiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMCwgKDAsKSwgMCkgKQpAQCAtNDc3LDYgKzU5MywxMCBAQAogICAgICAgICBkID0gRGVjaW1hbCggKDEsICg0LCAzLCA0LCA5LCAxLCAzLCA1LCAzLCA0KSwgLTI1KSApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnLTQuMzQ5MTM1MzRFLTE3JykKIAorICAgICAgICAjaW5mCisgICAgICAgIGQgPSBEZWNpbWFsKCAoMCwgKCksICJGIikgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJ0luZmluaXR5JykKKwogICAgICAgICAjd3JvbmcgbnVtYmVyIG9mIGl0ZW1zCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAoNCwgMywgNCwgOSwgMSkpICkKIApAQCAtNDkxLDQ1ICs2MTEsNjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCwgKDEsICg0LCAzLCA0LCA5LCAxKSwgJzEnKSApCiAKICAgICAgICAgI2JhZCBjb2VmZmljaWVudHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCwgKDEsICJ4eXoiLCAyKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAoNCwgMywgNCwgTm9uZSwgMSksIDIpICkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCwgKDEsICg0LCAtMywgNCwgOSwgMSksIDIpICkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCwgKDEsICg0LCAxMCwgNCwgOSwgMSksIDIpICkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCwgKDEsICg0LCAzLCA0LCAnYScsIDEpLCAyKSApCiAKKyAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX2xpc3Qoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGQgPSBEZWNpbWFsKFswLCBbMF0sIDBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJzAnKQorCisgICAgICAgIGQgPSBEZWNpbWFsKFsxLCBbNCwgMywgNCwgOSwgMSwgMywgNSwgMywgNF0sIC0yNV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnLTQuMzQ5MTM1MzRFLTE3JykKKworICAgICAgICBkID0gRGVjaW1hbChbMSwgKDQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDQpLCAtMjVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJy00LjM0OTEzNTM0RS0xNycpCisKKyAgICAgICAgZCA9IERlY2ltYWwoKDEsIFs0LCAzLCA0LCA5LCAxLCAzLCA1LCAzLCA0XSwgLTI1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICctNC4zNDkxMzUzNEUtMTcnKQorCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV9ib29sKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICBzZWxmLmFzc2VydElzKGJvb2woRGVjaW1hbCgwKSksIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydElzKGJvb2woRGVjaW1hbCgxKSksIFRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbChGYWxzZSksIERlY2ltYWwoMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbChUcnVlKSwgRGVjaW1hbCgxKSkKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fRGVjaW1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgI3Bvc2l0aXZlCiAgICAgICAgIGQgPSBEZWNpbWFsKDQ1KQogICAgICAgICBlID0gRGVjaW1hbChkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJzQ1JykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAKICAgICAgICAgI3ZlcnkgbGFyZ2UgcG9zaXRpdmUKICAgICAgICAgZCA9IERlY2ltYWwoNTAwMDAwMTIzKQogICAgICAgICBlID0gRGVjaW1hbChkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJzUwMDAwMDEyMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogCiAgICAgICAgICNuZWdhdGl2ZQogICAgICAgICBkID0gRGVjaW1hbCgtNDUpCiAgICAgICAgIGUgPSBEZWNpbWFsKGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnLTQ1JykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAKICAgICAgICAgI3plcm8KICAgICAgICAgZCA9IERlY2ltYWwoMCkKICAgICAgICAgZSA9IERlY2ltYWwoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICcwJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX2Zsb2F0KHNlbGYpOgorCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHIgPSBEZWNpbWFsKDAuMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHIpLCBEZWNpbWFsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihyKSwKQEAgLTU1MCw4ICs2ODgsMTEgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgZmxvYXQoRGVjaW1hbCh4KSkpICMgcm91bmR0cmlwCiAKICAgICBkZWYgdGVzdF9leHBsaWNpdF9jb250ZXh0X2NyZWF0ZV9kZWNpbWFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIFJvdW5kZWQgPSBzZWxmLmRlY2ltYWwuUm91bmRlZAogCi0gICAgICAgIG5jID0gY29weS5jb3B5KGdldGNvbnRleHQoKSkKKyAgICAgICAgbmMgPSBjb3B5LmNvcHkoc2VsZi5kZWNpbWFsLmdldGNvbnRleHQoKSkKICAgICAgICAgbmMucHJlYyA9IDMKIAogICAgICAgICAjIGVtcHR5CkBAIC01OTIsNyArNzMzLDczIEBACiAgICAgICAgIGQgPSBuYy5jcmVhdGVfZGVjaW1hbChwcmV2ZGVjKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJzUuMDBFKzgnKQogCisgICAgICAgICMgbW9yZSBpbnRlZ2VycworICAgICAgICBuYy5wcmVjID0gMjgKKyAgICAgICAgbmMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisKKyAgICAgICAgZm9yIHYgaW4gWy0yKio2My0xLCAtMioqNjMsIC0yKiozMS0xLCAtMioqMzEsIDAsCisgICAgICAgICAgICAgICAgICAgMioqMzEtMSwgMioqMzEsIDIqKjYzLTEsIDIqKjYzXToKKyAgICAgICAgICAgIGQgPSBuYy5jcmVhdGVfZGVjaW1hbCh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZCwgRGVjaW1hbCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChkKSwgdikKKworICAgICAgICBuYy5wcmVjID0gMworICAgICAgICBuYy50cmFwc1tSb3VuZGVkXSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUm91bmRlZCwgbmMuY3JlYXRlX2RlY2ltYWwsIDEyMzQpCisKKyAgICAgICAgIyBmcm9tIHN0cmluZworICAgICAgICBuYy5wcmVjID0gMjgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoJzBFLTAxNycpKSwgJzBFLTE3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoJzQ1JykpLCAnNDUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnLUluZicpKSwgJy1JbmZpbml0eScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCdOYU4xMjMnKSksICdOYU4xMjMnKQorCisgICAgICAgICMgaW52YWxpZCBhcmd1bWVudHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgbmMuY3JlYXRlX2RlY2ltYWwsICJ4eXoiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuYy5jcmVhdGVfZGVjaW1hbCwgKDEsICJ4eXoiLCAtMjUpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5jLmNyZWF0ZV9kZWNpbWFsLCAiMTIzNCIsICI1Njc4IikKKworICAgICAgICAjIHRvbyBtYW55IE5hTiBwYXlsb2FkIGRpZ2l0cworICAgICAgICBuYy5wcmVjID0gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwgJ05hTjEyMzQ1JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgbmMuY3JlYXRlX2RlY2ltYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoJ05hTjEyMzQ1JykpCisKKyAgICAgICAgbmMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnTmFOMTIzNDUnKSksICdOYU4nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgbmMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbChEZWNpbWFsKCdOYU4xMjM0NScpKSksICdOYU4nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICBkZWYgdGVzdF9leHBsaWNpdF9jb250ZXh0X2NyZWF0ZV9mcm9tX2Zsb2F0KHNlbGYpOgorCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIG5jID0gc2VsZi5kZWNpbWFsLkNvbnRleHQoKQorICAgICAgICByID0gbmMuY3JlYXRlX2RlY2ltYWwoMC4xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUociksIERlY2ltYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHIpLCAnMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jLmNyZWF0ZV9kZWNpbWFsKGZsb2F0KCduYW4nKSkuaXNfcW5hbigpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJ2luZicpKS5pc19pbmZpbml0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJy1pbmYnKSkuaXNfaW5maW5pdGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJ25hbicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCdOYU4nKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKGZsb2F0KCdpbmYnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnSW5maW5pdHknKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKGZsb2F0KCctaW5mJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIobmMuY3JlYXRlX2RlY2ltYWwoJy1JbmZpbml0eScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJy0wLjAnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnLTAnKSkpCisgICAgICAgIG5jLnByZWMgPSAxMDAKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjAwKToKKyAgICAgICAgICAgIHggPSByYW5kb20uZXhwb3ZhcmlhdGUoMC4wMSkgKiAocmFuZG9tLnJhbmRvbSgpICogMi4wIC0gMS4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBmbG9hdChuYy5jcmVhdGVfZGVjaW1hbCh4KSkpICMgcm91bmR0cmlwCisKICAgICBkZWYgdGVzdF91bmljb2RlX2RpZ2l0cyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgdGVzdF92YWx1ZXMgPSB7CiAgICAgICAgICAgICAnXHVmZjExJzogJzEnLAogICAgICAgICAgICAgJ1x1MDY2MC5cdTA2NjBcdTA2NjNcdTA2NjdcdTA2NjJlLVx1MDY2MycgOiAnMC4wMDAwMzcyJywKQEAgLTYwMSwyOSArODA4LDQxIEBACiAgICAgICAgIGZvciBpbnB1dCwgZXhwZWN0ZWQgaW4gdGVzdF92YWx1ZXMuaXRlbXMoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoaW5wdXQpKSwgZXhwZWN0ZWQpCiAKK2NsYXNzIENFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QoRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0KToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QoRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0KToKKyAgICBkZWNpbWFsID0gUAogCi1jbGFzcyBEZWNpbWFsSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVW5pdCB0ZXN0cyBmb3IgSW1wbGljaXQgQ29uc3RydWN0aW9uIGNhc2VzIG9mIERlY2ltYWwuJycnCiAKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9mcm9tX05vbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyBOb25lJywgZ2xvYmFscygpKQorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArIE5vbmUnLCBsb2NhbHMoKSkKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2Zyb21faW50KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICAjbm9ybWFsCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoNSkgKyA0NSksICc1MCcpCiAgICAgICAgICNleGNlZWRpbmcgcHJlY2lzaW9uCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1KSArIDEyMzQ1Njc4OTAwMCwgRGVjaW1hbCgxMjM0NTY3ODkwMDApKQogCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfZnJvbV9zdHJpbmcoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyAiMyInLCBnbG9iYWxzKCkpCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgIjMiJywgbG9jYWxzKCkpCiAKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9mcm9tX2Zsb2F0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgMi4yJywgZ2xvYmFscygpKQorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArIDIuMicsIGxvY2FscygpKQogCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfZnJvbV9EZWNpbWFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDUpICsgRGVjaW1hbCg0NSksIERlY2ltYWwoNTApKQogCiAgICAgZGVmIHRlc3Rfcm9wKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICAjIEFsbG93IG90aGVyIGNsYXNzZXMgdG8gYmUgdHJhaW5lZCB0byBpbnRlcmFjdCB3aXRoIERlY2ltYWxzCiAgICAgICAgIGNsYXNzIEU6CiAgICAgICAgICAgICBkZWYgX19kaXZtb2RfXyhzZWxmLCBvdGhlcik6CkBAIC02NzEsMTAgKzg5MCwxNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCdEZWNpbWFsKDEwKScgKyBzeW0gKyAnRSgpJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxMCcgKyByb3AgKyAnc3RyJykKIAorY2xhc3MgQ0ltcGxpY2l0Q29uc3RydWN0aW9uVGVzdChJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUltcGxpY2l0Q29uc3RydWN0aW9uVGVzdChJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QpOgorICAgIGRlY2ltYWwgPSBQCiAKLWNsYXNzIERlY2ltYWxGb3JtYXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEZvcm1hdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICcnJ1VuaXQgdGVzdHMgZm9yIHRoZSBmb3JtYXQgZnVuY3Rpb24uJycnCiAgICAgZGVmIHRlc3RfZm9ybWF0dGluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgIyB0cmlwbGVzIGdpdmluZyBhIGZvcm1hdCwgYSBEZWNpbWFsLCBhbmQgdGhlIGV4cGVjdGVkIHJlc3VsdAogICAgICAgICB0ZXN0X3ZhbHVlcyA9IFsKICAgICAgICAgICAgICgnZScsICcwRS0xNScsICcwZS0xNScpLApAQCAtNzMwLDYgKzk1NSw3IEBACiAgICAgICAgICAgICAoJ2cnLCAnMEUtNycsICcwZS03JyksCiAgICAgICAgICAgICAoJ2cnLCAnLTBFMicsICctMGUrMicpLAogICAgICAgICAgICAgKCcuMGcnLCAnMy4xNDE1OTI2NScsICczJyksICAjIDAgc2lnIGZpZyAtPiAxIHNpZyBmaWcKKyAgICAgICAgICAgICgnLjBuJywgJzMuMTQxNTkyNjUnLCAnMycpLCAgIyBzYW1lIGZvciAnbicKICAgICAgICAgICAgICgnLjFnJywgJzMuMTQxNTkyNjUnLCAnMycpLAogICAgICAgICAgICAgKCcuMmcnLCAnMy4xNDE1OTI2NScsICczLjEnKSwKICAgICAgICAgICAgICgnLjVnJywgJzMuMTQxNTkyNjUnLCAnMy4xNDE2JyksCkBAIC04MTQsNTYgKzEwNDAsNjAgQEAKIAogICAgICAgICAgICAgIyBpc3N1ZSA2ODUwCiAgICAgICAgICAgICAoJ2E9LTcuMCcsICcwLjEyMzQ1JywgJ2FhYWEwLjEnKSwKLQotICAgICAgICAgICAgIyBJc3N1ZSA3MDk0OiBBbHRlcm5hdGUgZm9ybWF0dGluZyAoc3BlY2lmaWVkIGJ5ICMpCi0gICAgICAgICAgICAoJy4wZScsICcxLjAnLCAnMWUrMCcpLAotICAgICAgICAgICAgKCcjLjBlJywgJzEuMCcsICcxLmUrMCcpLAotICAgICAgICAgICAgKCcuMGYnLCAnMS4wJywgJzEnKSwKLSAgICAgICAgICAgICgnIy4wZicsICcxLjAnLCAnMS4nKSwKLSAgICAgICAgICAgICgnZycsICcxLjEnLCAnMS4xJyksCi0gICAgICAgICAgICAoJyNnJywgJzEuMScsICcxLjEnKSwKLSAgICAgICAgICAgICgnLjBnJywgJzEnLCAnMScpLAotICAgICAgICAgICAgKCcjLjBnJywgJzEnLCAnMS4nKSwKLSAgICAgICAgICAgICgnLjAlJywgJzEuMCcsICcxMDAlJyksCi0gICAgICAgICAgICAoJyMuMCUnLCAnMS4wJywgJzEwMC4lJyksCiAgICAgICAgICAgICBdCiAgICAgICAgIGZvciBmbXQsIGQsIHJlc3VsdCBpbiB0ZXN0X3ZhbHVlczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KERlY2ltYWwoZCksIGZtdCksIHJlc3VsdCkKIAorICAgICAgICAjIGJ5dGVzIGZvcm1hdCBhcmd1bWVudAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgYictMDIwJykKKwogICAgIGRlZiB0ZXN0X25fZm9ybWF0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmcm9tIGxvY2FsZSBpbXBvcnQgQ0hBUl9NQVgKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgZGVmIG1ha2VfZ3JvdXBpbmcobHN0KToKKyAgICAgICAgICAgIHJldHVybiAnJy5qb2luKFtjaHIoeCkgZm9yIHggaW4gbHN0XSkgaWYgc2VsZi5kZWNpbWFsID09IEMgZWxzZSBsc3QKKworICAgICAgICBkZWYgZ2V0X2ZtdCh4LCBvdmVycmlkZT1Ob25lLCBmbXQ9J24nKToKKyAgICAgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDOgorICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHgpLl9fZm9ybWF0X18oZm10LCBvdmVycmlkZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoeCkuX19mb3JtYXRfXyhmbXQsIF9sb2NhbGVjb252PW92ZXJyaWRlKQorCiAgICAgICAgICMgU2V0IHVwIHNvbWUgbG9jYWxlY29udi1saWtlIGRpY3Rpb25hcmllcwogICAgICAgICBlbl9VUyA9IHsKICAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcuJywKLSAgICAgICAgICAgICdncm91cGluZycgOiBbMywgMywgMF0sCi0gICAgICAgICAgICAndGhvdXNhbmRzX3NlcCc6ICcsJworICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IG1ha2VfZ3JvdXBpbmcoWzMsIDMsIDBdKSwKKyAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJyA6ICcsJwogICAgICAgICAgICAgfQogCiAgICAgICAgIGZyX0ZSID0gewogICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJywnLAotICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IFtDSEFSX01BWF0sCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbQ0hBUl9NQVhdKSwKICAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJyA6ICcnCiAgICAgICAgICAgICB9CiAKICAgICAgICAgcnVfUlUgPSB7CiAgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLCcsCi0gICAgICAgICAgICAnZ3JvdXBpbmcnIDogWzMsIDMsIDBdLAorICAgICAgICAgICAgJ2dyb3VwaW5nJzogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAogICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJyAnCiAgICAgICAgICAgICB9CiAKICAgICAgICAgY3JhenkgPSB7CiAgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnJicsCi0gICAgICAgICAgICAnZ3JvdXBpbmcnIDogWzEsIDQsIDIsIENIQVJfTUFYXSwKKyAgICAgICAgICAgICdncm91cGluZyc6IG1ha2VfZ3JvdXBpbmcoWzEsIDQsIDIsIENIQVJfTUFYXSksCiAgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnLScKICAgICAgICAgICAgIH0KIAotCi0gICAgICAgIGRlZiBnZXRfZm10KHgsIGxvY2FsZSwgZm10PSduJyk6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbC5fX2Zvcm1hdF9fKERlY2ltYWwoeCksIGZtdCwgX2xvY2FsZWNvbnY9bG9jYWxlKQorICAgICAgICBkb3RzZXBfd2lkZSA9IHsKKyAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6IGInXHhjMlx4YmYnLmRlY29kZSgndXRmLTgnKSwKKyAgICAgICAgICAgICdncm91cGluZyc6IG1ha2VfZ3JvdXBpbmcoWzMsIDMsIDBdKSwKKyAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJyA6IGInXHhjMlx4YjQnLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgfQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X2ZtdChEZWNpbWFsKCcxMi43JyksIGVuX1VTKSwgJzEyLjcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9mbXQoRGVjaW1hbCgnMTIuNycpLCBmcl9GUiksICcxMiw3JykKQEAgLTkwMiwxMSArMTEzMiwzMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9mbXQoMTIzNDU2LCBjcmF6eSwgJzAxMm4nKSwgJzAwLTAxLTIzNDUtNicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X2ZtdCgxMjM0NTYsIGNyYXp5LCAnMDEzbicpLCAnMDAwLTAxLTIzNDUtNicpCiAKKyAgICAgICAgIyB3aWRlIGNoYXIgc2VwYXJhdG9yIGFuZCBkZWNpbWFsIHBvaW50CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X2ZtdChEZWNpbWFsKCctMS41JyksIGRvdHNlcF93aWRlLCAnMDIwbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICctMFx1MDBiNDAwMFx1MDBiNDAwMFx1MDBiNDAwMFx1MDBiNDAwMVx1MDBiZjUnKQogCi1jbGFzcyBEZWNpbWFsQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3dpZGVfY2hhcl9zZXBhcmF0b3JfZGVjaW1hbF9wb2ludChzZWxmKToKKyAgICAgICAgIyBsb2NhbGUgd2l0aCB3aWRlIGNoYXIgc2VwYXJhdG9yIGFuZCBkZWNpbWFsIHBvaW50CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgJ3BzX0FGJykKKyAgICAgICAgZXhjZXB0IGxvY2FsZS5FcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KERlY2ltYWwoJzEwMDAwMDAwMC4xMjMnKSwgJ24nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTAwXHUwNjZjMDAwXHUwNjZjMDAwXHUwNjZiMTIzJykKKyAgICAgICAgbG9jYWxlLnJlc2V0bG9jYWxlKCkKKworY2xhc3MgQ0Zvcm1hdFRlc3QoRm9ybWF0VGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Rm9ybWF0VGVzdChGb3JtYXRUZXN0KToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBBcml0aG1ldGljT3BlcmF0b3JzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVW5pdCB0ZXN0cyBmb3IgYWxsIGFyaXRobWV0aWMgb3BlcmF0b3JzLCBiaW5hcnkgYW5kIHVuYXJ5LicnJwogCiAgICAgZGVmIHRlc3RfYWRkaXRpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTExLjEnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzIyLjInKQpAQCAtOTM0LDYgKzExODYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCcxNi4xJykpCiAKICAgICBkZWYgdGVzdF9zdWJ0cmFjdGlvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCctMTEuMScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMjIuMicpCkBAIC05NjEsNiArMTIxNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJy0zOC4zJykpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsaWNhdGlvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCctNScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMycpCkBAIC05ODgsNiArMTI0Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJy03NScpKQogCiAgICAgZGVmIHRlc3RfZGl2aXNpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTAxNSw2ICsxMjcwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnLTAuNjI1JykpCiAKICAgICBkZWYgdGVzdF9mbG9vcl9kaXZpc2lvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc1JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTEwNDIsNiArMTI5OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJzEnKSkKIAogICAgIGRlZiB0ZXN0X3Bvd2VyaW5nKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTA2OSw2ICsxMzI2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnMzkwNjI1JykpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnNScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMicpCkBAIC0xMDk2LDYgKzEzNTQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCcxJykpCiAKICAgICBkZWYgdGVzdF9mbG9vcl9kaXZfbW9kdWxlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTEyMiw2ICsxMzgxLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHEpLCB0eXBlKGQxKSkKIAogICAgIGRlZiB0ZXN0X3VuYXJ5X29wZXJhdG9ycyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgrRGVjaW1hbCg0NSksIERlY2ltYWwoKzQ1KSkgICAgICAgICAgICMgICsKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtRGVjaW1hbCg0NSksIERlY2ltYWwoLTQ1KSkgICAgICAgICAgICMgIC0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhYnMoRGVjaW1hbCg0NSkpLCBhYnMoRGVjaW1hbCgtNDUpKSkgICMgYWJzCkBAIC0xMTM0LDYgKzEzOTUsOSBAQAogCiAgICAgICAgICMgZXF1YWxpdHkgY29tcGFyaXNvbnMgKD09LCAhPSkgaW52b2x2aW5nIG9ubHkgcXVpZXQgbmFucwogICAgICAgICAjIGRvbid0IHNpZ25hbCwgYnV0IHJldHVybiBGYWxzZSBvciBUcnVlIHJlc3BlY3RpdmVseS4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CiAKICAgICAgICAgbiA9IERlY2ltYWwoJ05hTicpCiAgICAgICAgIHMgPSBEZWNpbWFsKCdzTmFOJykKQEAgLTExNzksNTMgKzE0NDMsMTI0IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG9wLCB4LCB5KQogCiAgICAgZGVmIHRlc3RfY29weV9zaWduKHNlbGYpOgotICAgICAgICBkID0gRGVjaW1hbCgxKS5jb3B5X3NpZ24oRGVjaW1hbCgtMikpCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCisgICAgICAgIGQgPSBEZWNpbWFsKDEpLmNvcHlfc2lnbihEZWNpbWFsKC0yKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEpLmNvcHlfc2lnbigtMiksIGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5jb3B5X3NpZ24sICctMicpCiAKK2NsYXNzIENBcml0aG1ldGljT3BlcmF0b3JzVGVzdChBcml0aG1ldGljT3BlcmF0b3JzVGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5QXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QoQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QpOgorICAgIGRlY2ltYWwgPSBQCisKICMgVGhlIGZvbGxvd2luZyBhcmUgdHdvIGZ1bmN0aW9ucyB1c2VkIHRvIHRlc3QgdGhyZWFkaW5nIGluIHRoZSBuZXh0IGNsYXNzCiAKIGRlZiB0aGZ1bmMxKGNscyk6CisgICAgRGVjaW1hbCA9IGNscy5kZWNpbWFsLkRlY2ltYWwKKyAgICBJbnZhbGlkT3BlcmF0aW9uID0gY2xzLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgIERpdmlzaW9uQnlaZXJvID0gY2xzLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICBPdmVyZmxvdyA9IGNscy5kZWNpbWFsLk92ZXJmbG93CisgICAgVW5kZXJmbG93ID0gY2xzLmRlY2ltYWwuVW5kZXJmbG93CisgICAgSW5leGFjdCA9IGNscy5kZWNpbWFsLkluZXhhY3QKKyAgICBnZXRjb250ZXh0ID0gY2xzLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgIGxvY2FsY29udGV4dCA9IGNscy5kZWNpbWFsLmxvY2FsY29udGV4dAorCiAgICAgZDEgPSBEZWNpbWFsKDEpCiAgICAgZDMgPSBEZWNpbWFsKDMpCiAgICAgdGVzdDEgPSBkMS9kMwotICAgIGNscy5zeW5jaHJvLndhaXQoKQotICAgIHRlc3QyID0gZDEvZDMKLSAgICBjbHMuZmluaXNoMS5zZXQoKQogCi0gICAgY2xzLmFzc2VydEVxdWFsKHRlc3QxLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKLSAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDIsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMycpKQorICAgIGNscy5maW5pc2gxLnNldCgpCisgICAgY2xzLnN5bmNocm8ud2FpdCgpCisKKyAgICB0ZXN0MiA9IGQxL2QzCisgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMjoKKyAgICAgICAgY2xzLmFzc2VydFRydWUoYzIuZmxhZ3NbSW5leGFjdF0pCisgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoRGl2aXNpb25CeVplcm8sIGMyLmRpdmlkZSwgZDEsIDApCisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW0RpdmlzaW9uQnlaZXJvXSkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMzoKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0luZXhhY3RdKQorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbRGl2aXNpb25CeVplcm9dKQorICAgICAgICAgICAgY2xzLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBjMy5jb21wYXJlLCBkMSwgRGVjaW1hbCgnc05hTicpKQorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBkZWwgYzMKKyAgICAgICAgY2xzLmFzc2VydEZhbHNlKGMyLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICBkZWwgYzIKKworICAgIGNscy5hc3NlcnRFcXVhbCh0ZXN0MSwgRGVjaW1hbCgnMC4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKKyAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDIsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCisKKyAgICBjMSA9IGdldGNvbnRleHQoKQorICAgIGNscy5hc3NlcnRUcnVlKGMxLmZsYWdzW0luZXhhY3RdKQorICAgIGZvciBzaWcgaW4gT3ZlcmZsb3csIFVuZGVyZmxvdywgRGl2aXNpb25CeVplcm8sIEludmFsaWRPcGVyYXRpb246CisgICAgICAgIGNscy5hc3NlcnRGYWxzZShjMS5mbGFnc1tzaWddKQogICAgIHJldHVybgogCiBkZWYgdGhmdW5jMihjbHMpOgorICAgIERlY2ltYWwgPSBjbHMuZGVjaW1hbC5EZWNpbWFsCisgICAgSW52YWxpZE9wZXJhdGlvbiA9IGNscy5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICBEaXZpc2lvbkJ5WmVybyA9IGNscy5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgT3ZlcmZsb3cgPSBjbHMuZGVjaW1hbC5PdmVyZmxvdworICAgIFVuZGVyZmxvdyA9IGNscy5kZWNpbWFsLlVuZGVyZmxvdworICAgIEluZXhhY3QgPSBjbHMuZGVjaW1hbC5JbmV4YWN0CisgICAgZ2V0Y29udGV4dCA9IGNscy5kZWNpbWFsLmdldGNvbnRleHQKKyAgICBsb2NhbGNvbnRleHQgPSBjbHMuZGVjaW1hbC5sb2NhbGNvbnRleHQKKwogICAgIGQxID0gRGVjaW1hbCgxKQogICAgIGQzID0gRGVjaW1hbCgzKQogICAgIHRlc3QxID0gZDEvZDMKKwogICAgIHRoaXNjb250ZXh0ID0gZ2V0Y29udGV4dCgpCiAgICAgdGhpc2NvbnRleHQucHJlYyA9IDE4CiAgICAgdGVzdDIgPSBkMS9kMworCisgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMjoKKyAgICAgICAgY2xzLmFzc2VydFRydWUoYzIuZmxhZ3NbSW5leGFjdF0pCisgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIGMyLm11bHRpcGx5LCBEZWNpbWFsKCcxZTQyNTAwMDAwMCcpLCA5OTkpCisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQodGhpc2NvbnRleHQpIGFzIGMzOgorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbSW5leGFjdF0pCisgICAgICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzMuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgYzMudHJhcHNbVW5kZXJmbG93XSA9IFRydWUKKyAgICAgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoVW5kZXJmbG93LCBjMy5kaXZpZGUsIERlY2ltYWwoJzFlLTQyNTAwMDAwMCcpLCA5OTkpCisgICAgICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMy5mbGFnc1tVbmRlcmZsb3ddKQorICAgICAgICAgICAgZGVsIGMzCisgICAgICAgIGNscy5hc3NlcnRGYWxzZShjMi5mbGFnc1tVbmRlcmZsb3ddKQorICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzIudHJhcHNbVW5kZXJmbG93XSkKKyAgICAgICAgZGVsIGMyCisKICAgICBjbHMuc3luY2hyby5zZXQoKQogICAgIGNscy5maW5pc2gyLnNldCgpCiAKLSAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDEsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMycpKQorICAgIGNscy5hc3NlcnRFcXVhbCh0ZXN0MSwgRGVjaW1hbCgnMC4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKICAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDIsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzJykpCisKKyAgICBjbHMuYXNzZXJ0RmFsc2UodGhpc2NvbnRleHQudHJhcHNbVW5kZXJmbG93XSkKKyAgICBjbHMuYXNzZXJ0VHJ1ZSh0aGlzY29udGV4dC5mbGFnc1tJbmV4YWN0XSkKKyAgICBmb3Igc2lnIGluIE92ZXJmbG93LCBVbmRlcmZsb3csIERpdmlzaW9uQnlaZXJvLCBJbnZhbGlkT3BlcmF0aW9uOgorICAgICAgICBjbHMuYXNzZXJ0RmFsc2UodGhpc2NvbnRleHQuZmxhZ3Nbc2lnXSkKICAgICByZXR1cm4KIAotCi1jbGFzcyBEZWNpbWFsVXNlT2ZDb250ZXh0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgJycnVW5pdCB0ZXN0cyBmb3IgVXNlIG9mIENvbnRleHQgY2FzZXMgaW4gRGVjaW1hbC4nJycKLQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHRocmVhZGluZwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgdGhyZWFkaW5nID0gTm9uZQorY2xhc3MgVGhyZWFkaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgJycnVW5pdCB0ZXN0cyBmb3IgdGhyZWFkIGxvY2FsIGNvbnRleHRzIGluIERlY2ltYWwuJycnCiAKICAgICAjIFRha2UgY2FyZSBleGVjdXRpbmcgdGhpcyB0ZXN0IGZyb20gSURMRSwgdGhlcmUncyBhbiBpc3N1ZSBpbiB0aHJlYWRpbmcKICAgICAjIHRoYXQgaGFuZ3MgSURMRSBhbmQgSSBjb3VsZG4ndCBmaW5kIGl0CiAKICAgICBkZWYgdGVzdF90aHJlYWRpbmcoc2VsZik6Ci0gICAgICAgICNUZXN0IHRoZSAidGhyZWFkaW5nIGlzb2xhdGlvbiIgb2YgYSBDb250ZXh0LgorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dAorCisgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDIGFuZCBub3Qgc2VsZi5kZWNpbWFsLkhBVkVfVEhSRUFEUzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkaW5nIikKKyAgICAgICAgIyBUZXN0IHRoZSAidGhyZWFkaW5nIGlzb2xhdGlvbiIgb2YgYSBDb250ZXh0LiBBbHNvIHRlc3QgY2hhbmdpbmcKKyAgICAgICAgIyB0aGUgRGVmYXVsdENvbnRleHQsIHdoaWNoIGFjdHMgYXMgYSB0ZW1wbGF0ZSBmb3IgdGhlIHRocmVhZC1sb2NhbAorICAgICAgICAjIGNvbnRleHRzLgorICAgICAgICBzYXZlX3ByZWMgPSBEZWZhdWx0Q29udGV4dC5wcmVjCisgICAgICAgIHNhdmVfZW1heCA9IERlZmF1bHRDb250ZXh0LkVtYXgKKyAgICAgICAgc2F2ZV9lbWluID0gRGVmYXVsdENvbnRleHQuRW1pbgorICAgICAgICBEZWZhdWx0Q29udGV4dC5wcmVjID0gMjQKKyAgICAgICAgRGVmYXVsdENvbnRleHQuRW1heCA9IDQyNTAwMDAwMAorICAgICAgICBEZWZhdWx0Q29udGV4dC5FbWluID0gLTQyNTAwMDAwMAogCiAgICAgICAgIHNlbGYuc3luY2hybyA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYuZmluaXNoMSA9IHRocmVhZGluZy5FdmVudCgpCkBAIC0xMjM5LDE3ICsxNTc0LDI5IEBACiAKICAgICAgICAgc2VsZi5maW5pc2gxLndhaXQoKQogICAgICAgICBzZWxmLmZpbmlzaDIud2FpdCgpCisKKyAgICAgICAgZm9yIHNpZyBpbiBTaWduYWxzW3NlbGYuZGVjaW1hbF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKERlZmF1bHRDb250ZXh0LmZsYWdzW3NpZ10pCisKKyAgICAgICAgRGVmYXVsdENvbnRleHQucHJlYyA9IHNhdmVfcHJlYworICAgICAgICBEZWZhdWx0Q29udGV4dC5FbWF4ID0gc2F2ZV9lbWF4CisgICAgICAgIERlZmF1bHRDb250ZXh0LkVtaW4gPSBzYXZlX2VtaW4KICAgICAgICAgcmV0dXJuCiAKLSAgICBpZiB0aHJlYWRpbmcgaXMgTm9uZToKLSAgICAgICAgZGVsIHRlc3RfdGhyZWFkaW5nCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICd0aHJlYWRpbmcgcmVxdWlyZWQnKQorY2xhc3MgQ1RocmVhZGluZ1Rlc3QoVGhyZWFkaW5nVGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ3RocmVhZGluZyByZXF1aXJlZCcpCitjbGFzcyBQeVRocmVhZGluZ1Rlc3QoVGhyZWFkaW5nVGVzdCk6CisgICAgZGVjaW1hbCA9IFAKIAotCi1jbGFzcyBEZWNpbWFsVXNhYmlsaXR5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBVc2FiaWxpdHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciBVc2FiaWxpdHkgY2FzZXMgb2YgRGVjaW1hbC4nJycKIAogICAgIGRlZiB0ZXN0X2NvbXBhcmlzb25fb3BlcmF0b3JzKHNlbGYpOgogCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIGRhID0gRGVjaW1hbCgnMjMuNDInKQogICAgICAgICBkYiA9IERlY2ltYWwoJzIzLjQyJykKICAgICAgICAgZGMgPSBEZWNpbWFsKCc0NScpCkBAIC0xMjgzLDYgKzE2MzAsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCiAKICAgICBkZWYgdGVzdF9kZWNpbWFsX2Zsb2F0X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIGRhID0gRGVjaW1hbCgnMC4yNScpCiAgICAgICAgIGRiID0gRGVjaW1hbCgnMy4wJykKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRhLCAzLjApCkBAIC0xMjk5LDcgKzE2NDgsNzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLjAsIGRiKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAuMSwgRGVjaW1hbCgnMC4xJykpCiAKKyAgICBkZWYgdGVzdF9kZWNpbWFsX2NvbXBsZXhfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgZGEgPSBEZWNpbWFsKCcwLjI1JykKKyAgICAgICAgZGIgPSBEZWNpbWFsKCczLjAnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhLCAoMS41KzBqKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgoMS41KzBqKSwgZGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGEsICgwLjI1KzBqKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMC4yNSswaiksIGRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgzLjArMGopLCBkYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYiwgKDMuMCswaikpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkYiwgKDMuMCsxaikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoKDMuMCsxaiksIGRiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZGIuX19sdF9fKDMuMCswaiksIE5vdEltcGxlbWVudGVkKQorICAgICAgICBzZWxmLmFzc2VydElzKGRiLl9fbGVfXygzLjArMGopLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhkYi5fX2d0X18oMy4wKzBqKSwgTm90SW1wbGVtZW50ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZGIuX19sZV9fKDMuMCswaiksIE5vdEltcGxlbWVudGVkKQorCisgICAgZGVmIHRlc3RfZGVjaW1hbF9mcmFjdGlvbl9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICBEID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgRiA9IGZyYWN0aW9uc1tzZWxmLmRlY2ltYWxdLkZyYWN0aW9uCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorCisKKyAgICAgICAgZW1heCA9IEMuTUFYX0VNQVggaWYgQyBlbHNlIDk5OTk5OTk5OQorICAgICAgICBlbWluID0gQy5NSU5fRU1JTiBpZiBDIGVsc2UgLTk5OTk5OTk5OQorICAgICAgICBldGlueSA9IEMuTUlOX0VUSU5ZIGlmIEMgZWxzZSAtMTk5OTk5OTk5NworICAgICAgICBjID0gQ29udGV4dChFbWF4PWVtYXgsIEVtaW49ZW1pbikKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dChjKToKKyAgICAgICAgICAgIGMucHJlYyA9IGVtYXgKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKDApLCBGKDEsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRigtMSw5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5KSwgRCgwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhGKDAsMSksIEQoIjFlIiArIHN0cihldGlueSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoIi0xZSIgKyBzdHIoZXRpbnkpKSwgRigwLDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEYoMCw5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5KSwgRCgiMWUiICsgc3RyKGV0aW55KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRCgiLTFlIiArIHN0cihldGlueSkpLCBGKDAsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4xIiksIEYoMSwxMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEYoMSwxMCksIEQoIjAuMSIpKQorCisgICAgICAgICAgICBjLnByZWMgPSAzMDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRCgxKS8zLCBGKDEsMykpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEYoMSwzKSwgRCgxKS8zKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChGKDEyMDk4NDIzNywgOTk5OTk5OTk5OSksIEQoIjllIiArIHN0cihlbWF4KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChEKCI5ZSIgKyBzdHIoZW1heCkpLCBGKDEyMDk4NDIzNywgOTk5OTk5OTk5OSkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihEKCdpbmYnKSwgRig5OTk5OTk5OTk5OSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKEQoJ2luZicpLCBGKC05OTk5OTk5OTk5OSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoJy1pbmYnKSwgRig5OTk5OTk5OTk5OSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoJy1pbmYnKSwgRigtOTk5OTk5OTk5OTksMTIzKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRCgnbmFuJykuX19ndF9fLCBGKC05LDEyMykpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKE5vdEltcGxlbWVudGVkLCBGKC05LDEyMykuX19sdF9fKEQoJ25hbicpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRCgnbmFuJyksIEYoLTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRigtOSwxMjMpLCBEKCduYW4nKSkKKwogICAgIGRlZiB0ZXN0X2NvcHlfYW5kX2RlZXBjb3B5X21ldGhvZHMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIGQgPSBEZWNpbWFsKCc0My4yNCcpCiAgICAgICAgIGMgPSBjb3B5LmNvcHkoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChjKSwgaWQoZCkpCkBAIC0xMzA3LDYgKzE3MjAsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChkYyksIGlkKGQpKQogCiAgICAgZGVmIHRlc3RfaGFzaF9tZXRob2Qoc2VsZik6CisKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKwogICAgICAgICBkZWYgaGFzaGl0KGQpOgogICAgICAgICAgICAgYSA9IGhhc2goZCkKICAgICAgICAgICAgIGIgPSBkLl9faGFzaF9fKCkKQEAgLTEzNjcsMjQgKzE3ODQsMjcgQEAKICAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hpdChmKSwgaGFzaGl0KGQpKQogCi0gICAgICAgICMgY2hlY2sgdGhhdCB0aGUgdmFsdWUgb2YgdGhlIGhhc2ggZG9lc24ndCBkZXBlbmQgb24gdGhlCi0gICAgICAgICMgY3VycmVudCBjb250ZXh0IChpc3N1ZSAjMTc1NykKLSAgICAgICAgYyA9IGdldGNvbnRleHQoKQotICAgICAgICBvbGRfcHJlY2lzaW9uID0gYy5wcmVjCi0gICAgICAgIHggPSBEZWNpbWFsKCIxMjM0NTY3ODkuMSIpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgdmFsdWUgb2YgdGhlIGhhc2ggZG9lc24ndCBkZXBlbmQgb24gdGhlCisgICAgICAgICAgICAjIGN1cnJlbnQgY29udGV4dCAoaXNzdWUgIzE3NTcpCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiMTIzNDU2Nzg5LjEiKQogCi0gICAgICAgIGMucHJlYyA9IDYKLSAgICAgICAgaDEgPSBoYXNoaXQoeCkKLSAgICAgICAgYy5wcmVjID0gMTAKLSAgICAgICAgaDIgPSBoYXNoaXQoeCkKLSAgICAgICAgYy5wcmVjID0gMTYKLSAgICAgICAgaDMgPSBoYXNoaXQoeCkKKyAgICAgICAgICAgIGMucHJlYyA9IDYKKyAgICAgICAgICAgIGgxID0gaGFzaGl0KHgpCisgICAgICAgICAgICBjLnByZWMgPSAxMAorICAgICAgICAgICAgaDIgPSBoYXNoaXQoeCkKKyAgICAgICAgICAgIGMucHJlYyA9IDE2CisgICAgICAgICAgICBoMyA9IGhhc2hpdCh4KQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDEsIGgyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLCBoMykKLSAgICAgICAgYy5wcmVjID0gb2xkX3ByZWNpc2lvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLCBoMykKKworICAgICAgICAgICAgYy5wcmVjID0gMTAwMDAKKyAgICAgICAgICAgIHggPSAxMTAwICoqIDEyNDgKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGl0KERlY2ltYWwoeCkpLCBoYXNoaXQoeCkpCiAKICAgICBkZWYgdGVzdF9taW5fYW5kX21heF9tZXRob2RzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzE1LjMyJykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyOC41JykKQEAgLTE0MDQsNiArMTgyNCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobWF4KGQyLGwxKSwgZDIpCiAKICAgICBkZWYgdGVzdF9hc19ub256ZXJvKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICAjYXMgZmFsc2UKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShEZWNpbWFsKDApKQogICAgICAgICAjYXMgdHJ1ZQpAQCAtMTQxMSw2ICsxODMzLDcgQEAKIAogICAgIGRlZiB0ZXN0X3Rvc3RyaW5nX21ldGhvZHMoc2VsZik6CiAgICAgICAgICNUZXN0IHN0ciBhbmQgcmVwciBtZXRob2RzLgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkID0gRGVjaW1hbCgnMTUuMzInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJzE1LjMyJykgICAgICAgICAgICAgICAjIHN0cgpAQCAtMTQxOCw2ICsxODQxLDcgQEAKIAogICAgIGRlZiB0ZXN0X3RvbnVtX21ldGhvZHMoc2VsZik6CiAgICAgICAgICNUZXN0IGZsb2F0IGFuZCBpbnQgbWV0aG9kcy4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc2NicpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMTUuMzInKQpAQCAtMTQ0MCw2ICsxODY0LDcgQEAKICAgICAgICAgICAgICgnLTExLjAnLCAtMTEpLAogICAgICAgICAgICAgKCcwLjAnLCAwKSwKICAgICAgICAgICAgICgnLTBFMycsIDApLAorICAgICAgICAgICAgKCc4OTg5MTIxMTcxMjM3OTgxMjczNi4xJywgODk4OTEyMTE3MTIzNzk4MTI3MzYpLAogICAgICAgICAgICAgXQogICAgICAgICBmb3IgZCwgaSBpbiB0ZXN0X3BhaXJzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmZsb29yKERlY2ltYWwoZCkpLCBpKQpAQCAtMTQ1OSw2ICsxODg0LDcgQEAKICAgICAgICAgICAgICgnLTExLjAnLCAtMTEpLAogICAgICAgICAgICAgKCcwLjAnLCAwKSwKICAgICAgICAgICAgICgnLTBFMycsIDApLAorICAgICAgICAgICAgKCc4OTg5MTIxMTcxMjM3OTgxMjczNi4xJywgODk4OTEyMTE3MTIzNzk4MTI3MzcpLAogICAgICAgICAgICAgXQogICAgICAgICBmb3IgZCwgaSBpbiB0ZXN0X3BhaXJzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmNlaWwoRGVjaW1hbChkKSksIGkpCkBAIC0xNTE5LDE2ICsxOTQ1LDIxIEBACiAgICAgZGVmIHRlc3RfbmFuX3RvX2Zsb2F0KHNlbGYpOgogICAgICAgICAjIFRlc3QgY29udmVyc2lvbnMgb2YgZGVjaW1hbCBOQU5zIHRvIGZsb2F0LgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTU1NDQKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAgICAgICAgIGZvciBzIGluICgnbmFuJywgJ25hbjEyMzQnLCAnLW5hbicsICctbmFuMjQ2OCcpOgogICAgICAgICAgICAgZiA9IGZsb2F0KERlY2ltYWwocykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmKSkKKyAgICAgICAgICAgIHNpZ24gPSBtYXRoLmNvcHlzaWduKDEuMCwgZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbiwgLTEuMCBpZiBzLnN0YXJ0c3dpdGgoJy0nKSBlbHNlIDEuMCkKIAogICAgIGRlZiB0ZXN0X3NuYW5fdG9fZmxvYXQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogICAgICAgICBmb3IgcyBpbiAoJ3NuYW4nLCAnLXNuYW4nLCAnc25hbjEzNTcnLCAnLXNuYW4xMjM0Jyk6CiAgICAgICAgICAgICBkID0gRGVjaW1hbChzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsIGQpCiAKICAgICBkZWYgdGVzdF9ldmFsX3JvdW5kX3RyaXAoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgICN3aXRoIHplcm8KICAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoMCwpLCAwKSApCkBAIC0xNTQ3LDYgKzE5NzgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGV2YWwocmVwcihkKSkpCiAKICAgICBkZWYgdGVzdF9hc190dXBsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgI3dpdGggemVybwogICAgICAgICBkID0gRGVjaW1hbCgwKQpAQCAtMTU2MCw3ICsxOTkyLDcgQEAKICAgICAgICAgZCA9IERlY2ltYWwoIi00LjM0OTEzNTM0RS0xNyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMSwgKDQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDQpLCAtMjUpICkKIAotICAgICAgICAjaW5mCisgICAgICAgICMgWFhYIG5vbi1jb21wbGlhbnQgaW5maW5pdHkgcGF5bG9hZC4KICAgICAgICAgZCA9IERlY2ltYWwoIkluZmluaXR5IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgwLCAoMCwpLCAnRicpICkKIApAQCAtMTU4MCwxNCArMjAxMiwyMTk4IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKCksICduJykgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDEsICgpLCAnbicpICkKIAotICAgICAgICAjY29lZmZpY2llbnQgaW4gaW5maW5pdHkgc2hvdWxkIGJlIGlnbm9yZWQKLSAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoNCwgNSwgMywgNCksICdGJykgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDAsICgwLCksICdGJykpCi0gICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDAsIDIsIDcsIDEpLCAnRicpICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgxLCAoMCwpLCAnRicpKQorICAgICAgICAjIFhYWCBjb2VmZmljaWVudCBpbiBpbmZpbml0eSBzaG91bGQgcmFpc2UgYW4gZXJyb3IKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IFA6CisgICAgICAgICAgICBkID0gRGVjaW1hbCggKDAsICg0LCA1LCAzLCA0KSwgJ0YnKSApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDAsICgwLCksICdGJykpCisgICAgICAgICAgICBkID0gRGVjaW1hbCggKDEsICgwLCAyLCA3LCAxKSwgJ0YnKSApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDEsICgwLCksICdGJykpCiAKLSAgICBkZWYgdGVzdF9pbW11dGFiaWxpdHlfb3BlcmF0aW9ucyhzZWxmKToKKyAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgIyBEaWZmZXJlbnQgYmVoYXZpb3VycyB3aGVuIHN1YmNsYXNzaW5nIERlY2ltYWwKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgY2xhc3MgTXlEZWNpbWFsKERlY2ltYWwpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGQxID0gTXlEZWNpbWFsKDEpCisgICAgICAgIGQyID0gTXlEZWNpbWFsKDIpCisgICAgICAgIGQgPSBkMSArIGQyCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgRGVjaW1hbCkKKworICAgICAgICBkID0gZDEubWF4KGQyKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZCksIERlY2ltYWwpCisKKyAgICAgICAgZCA9IGNvcHkuY29weShkMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBNeURlY2ltYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZDEpCisKKyAgICAgICAgZCA9IGNvcHkuZGVlcGNvcHkoZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgTXlEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGQxKQorCisgICAgZGVmIHRlc3RfaW1wbGljaXRfY29udGV4dChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorCisgICAgICAgICMgQ2hlY2sgcmVzdWx0cyB3aGVuIGNvbnRleHQgZ2l2ZW4gaW1wbGljaXRseS4gIChJc3N1ZSAyNDc4KQorICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoMCkuc3FydCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoYy5zcXJ0KERlY2ltYWwoMCkpKSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25zX2Zyb21faW50KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbWV0aG9kcyB0YWtpbmcgYSBzZWNvbmQgRGVjaW1hbCBhcmd1bWVudCB3aWxsCisgICAgICAgICMgYWx3YXlzIGFjY2VwdCBhbiBpbnRlZ2VyIGluIHBsYWNlIG9mIGEgRGVjaW1hbC4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmUoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlKERlY2ltYWwoMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV9zaWduYWwoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWwoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsKERlY2ltYWwoMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV90b3RhbF9tYWcoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZCgxMDAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZChEZWNpbWFsKDEwMDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX29yKDEwMDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfb3IoRGVjaW1hbCgxMDAxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoMTAwMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoRGVjaW1hbCgxMDAxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1heCgxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXgoRGVjaW1hbCgxMjMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWF4X21hZygxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXhfbWFnKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1pbigxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW4oRGVjaW1hbCgxMjMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWluX21hZygxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW5fbWFnKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKDEyMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjM0KS5xdWFudGl6ZSgxMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzNCkucXVhbnRpemUoRGVjaW1hbCgxMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDc2OCkucmVtYWluZGVyX25lYXIoMTIzNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg3NjgpLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMTIzNCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzKS5yb3RhdGUoMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjMpLnJvdGF0ZShEZWNpbWFsKDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bSgxMDAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEwMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCc5LjEyMycpLnNjYWxlYigtMTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCc5LjEyMycpLnNjYWxlYihEZWNpbWFsKC0xMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQ1Nikuc2hpZnQoLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNDU2KS5zaGlmdChEZWNpbWFsKC0xKSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCA2NyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoNDUsIDY3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYSg0NSwgRGVjaW1hbCg2NykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKKworY2xhc3MgQ1VzYWJpbGl0eVRlc3QoVXNhYmlsaXR5VGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5VXNhYmlsaXR5VGVzdChVc2FiaWxpdHlUZXN0KToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBQeXRob25BUEl0ZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hYmMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKERlY2ltYWwsIG51bWJlcnMuTnVtYmVyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKERlY2ltYWwsIG51bWJlcnMuUmVhbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShEZWNpbWFsKDApLCBudW1iZXJzLk51bWJlcikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKERlY2ltYWwoMCksIG51bWJlcnMuUmVhbCkKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2F2ZWRlY2ltYWwgPSBzeXMubW9kdWxlc1snZGVjaW1hbCddCisKKyAgICAgICAgIyBSb3VuZCB0cmlwCisgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBzZWxmLmRlY2ltYWwKKyAgICAgICAgZCA9IERlY2ltYWwoJy0zLjE0MTU5MDAwMCcpCisgICAgICAgIHAgPSBwaWNrbGUuZHVtcHMoZCkKKyAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGUpCisKKyAgICAgICAgaWYgQzoKKyAgICAgICAgICAgICMgVGVzdCBpbnRlcmNoYW5nZWFiaWxpdHkKKyAgICAgICAgICAgIHggPSBDLkRlY2ltYWwoJy0zLjEyM2U4MTcyMycpCisgICAgICAgICAgICB5ID0gUC5EZWNpbWFsKCctMy4xMjNlODE3MjMnKQorCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gQworICAgICAgICAgICAgc3ggPSBwaWNrbGUuZHVtcHMoeCkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCisgICAgICAgICAgICByID0gcGlja2xlLmxvYWRzKHN4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHIsIFAuRGVjaW1hbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwociwgeSkKKworICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IFAKKyAgICAgICAgICAgIHN5ID0gcGlja2xlLmR1bXBzKHkpCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gQworICAgICAgICAgICAgciA9IHBpY2tsZS5sb2FkcyhzeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyLCBDLkRlY2ltYWwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIsIHgpCisKKyAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IHNhdmVkZWNpbWFsCisKKyAgICBkZWYgdGVzdF9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKworICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgorICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQorICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQorICAgICAgICAgICAgZCA9IERlY2ltYWwocykKKyAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoaW50KGQpKSwgcikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIERlY2ltYWwoJy1uYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBEZWNpbWFsKCdzbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnaW5mJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnLWluZicpKQorCisgICAgZGVmIHRlc3RfdHJ1bmMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKworICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgorICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQorICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQorICAgICAgICAgICAgZCA9IERlY2ltYWwocykKKyAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwobWF0aC50cnVuYyhkKSksIHIpCisKKyAgICBkZWYgdGVzdF9mcm9tX2Zsb2F0KHNlbGYpOgorCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGNsYXNzIE15RGVjaW1hbChEZWNpbWFsKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNeURlY2ltYWwsIERlY2ltYWwpKQorCisgICAgICAgIHIgPSBNeURlY2ltYWwuZnJvbV9mbG9hdCgwLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyKSwgTXlEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihyKSwKKyAgICAgICAgICAgICAgICAnMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1JykKKyAgICAgICAgYmlnaW50ID0gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeURlY2ltYWwuZnJvbV9mbG9hdChiaWdpbnQpLCBNeURlY2ltYWwoYmlnaW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkuaXNfcW5hbigpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKS5pc19pbmZpbml0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJy1pbmYnKSkuaXNfaW5maW5pdGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ05hTicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ0luZmluaXR5JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnLWluZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJy1JbmZpbml0eScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBNeURlY2ltYWwuZnJvbV9mbG9hdCwgJ2FiYycpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIwMCk6CisgICAgICAgICAgICB4ID0gcmFuZG9tLmV4cG92YXJpYXRlKDAuMDEpICogKHJhbmRvbS5yYW5kb20oKSAqIDIuMCAtIDEuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgZmxvYXQoTXlEZWNpbWFsLmZyb21fZmxvYXQoeCkpKSAjIHJvdW5kdHJpcAorCisgICAgZGVmIHRlc3RfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKyAgICAgICAgUk9VTkRfVVAgPSBzZWxmLmRlY2ltYWwuUk9VTkRfVVAKKyAgICAgICAgSW5leGFjdCA9IHNlbGYuZGVjaW1hbC5JbmV4YWN0CisKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9ET1dOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KG1hdGgucGkpLAorICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE1JykKKyAgICAgICAgKQorICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX1VQKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KG1hdGgucGkpLAorICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE2JykKKyAgICAgICAgKQorICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHRyYXBzPVtJbmV4YWN0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBJbmV4YWN0LAorICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0LAorICAgICAgICAgICAgbWF0aC5waQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoLTAuMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCctMCcpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgxLjApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnMScpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgxMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCcxMCcpIikKKworICAgIGRlZiB0ZXN0X3F1YW50aXplKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKworICAgICAgICBjID0gQ29udGV4dChFbWF4PTk5OTk5LCBFbWluPS05OTk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzM1JykucXVhbnRpemUoRGVjaW1hbCgnLjAxJykpLAorICAgICAgICAgICAgRGVjaW1hbCgnNy4zNCcpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzM1JykucXVhbnRpemUoRGVjaW1hbCgnLjAxJyksIHJvdW5kaW5nPVJPVU5EX0RPV04pLAorICAgICAgICAgICAgRGVjaW1hbCgnNy4zMycpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgRGVjaW1hbCgiMTBlOTk5OTkiKS5xdWFudGl6ZSwgRGVjaW1hbCgnMWUxMDAwMDAnKSwgY29udGV4dD1jCisgICAgICAgICkKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBEZWNpbWFsKCIwLjg3MTgzMWU4MDAiKQorICAgICAgICB4ID0gZC5xdWFudGl6ZShjb250ZXh0PWMsIGV4cD1EZWNpbWFsKCIxZTc5NyIpLCByb3VuZGluZz1ST1VORF9ET1dOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzguNzFFKzc5OScpKQorCisgICAgZGVmIHRlc3RfY29tcGxleChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgeCA9IERlY2ltYWwoIjkuODE4MjczMWUxODEyNzMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgucmVhbCwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmltYWcsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5jb25qdWdhdGUoKSwgeCkKKworICAgICAgICB4ID0gRGVjaW1hbCgiMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleCh4KSwgY29tcGxleChmbG9hdCgxKSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHgsICdyZWFsJywgMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgeCwgJ2ltYWcnLCAxMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCB4LCAnY29uanVnYXRlJywgMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgeCwgJ19fY29tcGxleF9fJywgMTAwKQorCisgICAgZGVmIHRlc3RfbmFtZWRfcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgRCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IHNlbGYuZGVjaW1hbC5PdmVyZmxvdworCisgICAgICAgIHhjID0gQ29udGV4dCgpCisgICAgICAgIHhjLnByZWMgPSAxCisgICAgICAgIHhjLkVtYXggPSAxCisgICAgICAgIHhjLkVtaW4gPSAtMQorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoOSwgeGMpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDksIGNvbnRleHQ9eGMpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKGNvbnRleHQ9eGMsIHZhbHVlPTkpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKGNvbnRleHQ9eGMpLCAwKQorICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRCwgInh5eiIsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgyKS5leHAoY29udGV4dD14YyksIDcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgRCg4KS5leHAsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW092ZXJmbG93XSkKKworICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDIpLmxuKGNvbnRleHQ9eGMpLCBEKCcwLjcnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIEQoLTEpLmxuLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMCkubG9nMTAoY29udGV4dD14YyksIEQoJy1pbmYnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgtMSkubmV4dF9taW51cyhjb250ZXh0PXhjKSwgLTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoLTEpLm5leHRfcGx1cyhjb250ZXh0PXhjKSwgRCgnLTAuOScpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCI5LjczIikubm9ybWFsaXplKGNvbnRleHQ9eGMpLCBEKCcxRSsxJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjk5OTkiKS50b19pbnRlZ3JhbChjb250ZXh0PXhjKSwgOTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiLTIwMDAiKS50b19pbnRlZ3JhbF9leGFjdChjb250ZXh0PXhjKSwgLTIwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjEyMyIpLnRvX2ludGVncmFsX3ZhbHVlKGNvbnRleHQ9eGMpLCAxMjMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDYyNSIpLnNxcnQoY29udGV4dD14YyksIEQoJzAuMicpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDYyNSIpLmNvbXBhcmUoY29udGV4dD14Yywgb3RoZXI9MyksIC0xKQorICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoIjAiKS5jb21wYXJlX3NpZ25hbCwgRCgnbmFuJyksIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDEiKS5tYXgoRCgnMC4wMTAxJyksIGNvbnRleHQ9eGMpLCBEKCcwLjAnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4wMSIpLm1heChEKCcwLjAxMDEnKSwgY29udGV4dD14YyksIEQoJzAuMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjIiKS5tYXhfbWFnKEQoJy0wLjMnKSwgY29udGV4dD14YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoJy0wLjMnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4wMiIpLm1pbihEKCctMC4wMycpLCBjb250ZXh0PXhjKSwgRCgnLTAuMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjAyIikubWluX21hZyhEKCctMC4wMycpLCBjb250ZXh0PXhjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnMC4wJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMiIpLm5leHRfdG93YXJkKEQoJy0xJyksIGNvbnRleHQ9eGMpLCBEKCcwLjEnKSkKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCIwLjIiKS5xdWFudGl6ZSwgRCgnMWUxMCcpLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCI5Ljk5IikucmVtYWluZGVyX25lYXIoRCgnMS41JyksIGNvbnRleHQ9eGMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCctMC41JykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiOS45IikuZm1hKHRoaXJkPUQoJzAuOScpLCBjb250ZXh0PXhjLCBvdGhlcj03KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnN0UrMScpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfY2Fub25pY2FsLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX2Zpbml0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19pbmZpbml0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19uYW4sIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfcW5hbiwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19zbmFuLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX3NpZ25lZCwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc196ZXJvLCBjb250ZXh0PXhjKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEQoIjAuMDEiKS5pc19ub3JtYWwoY29udGV4dD14YykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRCgiMC4wMSIpLmlzX3N1Ym5vcm1hbChjb250ZXh0PXhjKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmFkanVzdGVkLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmNvbmp1Z2F0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5yYWRpeCwgY29udGV4dD14YykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKC0xMTEpLmxvZ2IoY29udGV4dD14YyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMCkubG9naWNhbF9pbnZlcnQoY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzAuMDEnKS5udW1iZXJfY2xhc3MoY29udGV4dD14YyksICcrU3Vibm9ybWFsJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMC4yMScpLnRvX2VuZ19zdHJpbmcoY29udGV4dD14YyksICcwLjIxJykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcxMScpLmxvZ2ljYWxfYW5kKEQoJzEwJyksIGNvbnRleHQ9eGMpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcxMScpLmxvZ2ljYWxfb3IoRCgnMTAnKSwgY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzAxJykubG9naWNhbF94b3IoRCgnMTAnKSwgY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzIzJykucm90YXRlKDEsIGNvbnRleHQ9eGMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcyMycpLnJvdGF0ZSgxLCBjb250ZXh0PXhjKSwgMykKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnMjMnKS5zY2FsZWIsIDEsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMjMnKS5zaGlmdCgtMSwgY29udGV4dD14YyksIDApCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRC5mcm9tX2Zsb2F0LCAxLjEsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMCkuYXNfdHVwbGUsIGNvbnRleHQ9eGMpCisKKyAgICAgICAgICAgIGlmIChzZWxmLmRlY2ltYWwgPT0gQyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmNhbm9uaWNhbCwgY29udGV4dD14YykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIi0xIikuY29weV9hYnMoY29udGV4dD14YyksIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIxIikuY29weV9uZWdhdGUoY29udGV4dD14YyksIC0xKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMSkuY2Fub25pY2FsKGNvbnRleHQ9eGMpLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgiLTEiKS5jb3B5X2FicywgY29udGV4dD14YykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoIi0xIikuY29weV9uZWdhdGUsIGNvbnRleHQ9eGMpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25faGllcmFyY2h5KHNlbGYpOgorCisgICAgICAgIGRlY2ltYWwgPSBzZWxmLmRlY2ltYWwKKyAgICAgICAgRGVjaW1hbEV4Y2VwdGlvbiA9IGRlY2ltYWwuRGVjaW1hbEV4Y2VwdGlvbgorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIEZsb2F0T3BlcmF0aW9uID0gZGVjaW1hbC5GbG9hdE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IGRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBkZWNpbWFsLk92ZXJmbG93CisgICAgICAgIFVuZGVyZmxvdyA9IGRlY2ltYWwuVW5kZXJmbG93CisgICAgICAgIFN1Ym5vcm1hbCA9IGRlY2ltYWwuU3Vibm9ybWFsCisgICAgICAgIEluZXhhY3QgPSBkZWNpbWFsLkluZXhhY3QKKyAgICAgICAgUm91bmRlZCA9IGRlY2ltYWwuUm91bmRlZAorICAgICAgICBDbGFtcGVkID0gZGVjaW1hbC5DbGFtcGVkCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGVjaW1hbEV4Y2VwdGlvbiwgQXJpdGhtZXRpY0Vycm9yKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRmxvYXRPcGVyYXRpb24sIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhGbG9hdE9wZXJhdGlvbiwgVHlwZUVycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGl2aXNpb25CeVplcm8sIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEaXZpc2lvbkJ5WmVybywgWmVyb0RpdmlzaW9uRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhPdmVyZmxvdywgUm91bmRlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE92ZXJmbG93LCBJbmV4YWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoT3ZlcmZsb3csIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIEluZXhhY3QpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIFJvdW5kZWQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIFN1Ym5vcm1hbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFVuZGVyZmxvdywgRGVjaW1hbEV4Y2VwdGlvbikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU3Vibm9ybWFsLCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoSW5leGFjdCwgRGVjaW1hbEV4Y2VwdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFJvdW5kZWQsIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDbGFtcGVkLCBEZWNpbWFsRXhjZXB0aW9uKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkNvbnZlcnNpb25TeW50YXgsIEludmFsaWRPcGVyYXRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkRpdmlzaW9uSW1wb3NzaWJsZSwgSW52YWxpZE9wZXJhdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGRlY2ltYWwuRGl2aXNpb25VbmRlZmluZWQsIEludmFsaWRPcGVyYXRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkRpdmlzaW9uVW5kZWZpbmVkLCBaZXJvRGl2aXNpb25FcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGRlY2ltYWwuSW52YWxpZENvbnRleHQsIEludmFsaWRPcGVyYXRpb24pKQorCitjbGFzcyBDUHl0aG9uQVBJdGVzdHMoUHl0aG9uQVBJdGVzdHMpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeVB5dGhvbkFQSXRlc3RzKFB5dGhvbkFQSXRlc3RzKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0QVBJdGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIHNhdmVkZWNpbWFsID0gc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXQorCisgICAgICAgICMgUm91bmQgdHJpcAorICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gc2VsZi5kZWNpbWFsCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIGUucHJlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIGUuRW1pbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIGUuRW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdW5kaW5nLCBlLnJvdW5kaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIGUuY2FwaXRhbHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jbGFtcCwgZS5jbGFtcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZsYWdzLCBlLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudHJhcHMsIGUudHJhcHMpCisKKyAgICAgICAgIyBUZXN0IGludGVyY2hhbmdlYWJpbGl0eQorICAgICAgICBjb21iaW5hdGlvbnMgPSBbKEMsIFApLCAoUCwgQyldIGlmIEMgZWxzZSBbKFAsIFApXQorICAgICAgICBmb3IgZHVtcGVyLCBsb2FkZXIgaW4gY29tYmluYXRpb25zOgorICAgICAgICAgICAgZm9yIHJpLCBfIGluIGVudW1lcmF0ZShSb3VuZGluZ01vZGVzW2R1bXBlcl0pOgorICAgICAgICAgICAgICAgIGZvciBmaSwgXyBpbiBlbnVtZXJhdGUoT3JkZXJlZFNpZ25hbHNbZHVtcGVyXSk6CisgICAgICAgICAgICAgICAgICAgIGZvciB0aSwgXyBpbiBlbnVtZXJhdGUoT3JkZXJlZFNpZ25hbHNbZHVtcGVyXSk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSByYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaW4gPSByYW5kb20ucmFuZHJhbmdlKC0xMDAsIDApCisgICAgICAgICAgICAgICAgICAgICAgICBlbWF4ID0gcmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApCisgICAgICAgICAgICAgICAgICAgICAgICBjYXBzID0gcmFuZG9tLnJhbmRyYW5nZSgyKQorICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXAgPSByYW5kb20ucmFuZHJhbmdlKDIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgT25lIG1vZHVsZSBkdW1wcworICAgICAgICAgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IGR1bXBlcgorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGR1bXBlci5Db250ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYz1wcmVjLCBFbWluPWVtaW4sIEVtYXg9ZW1heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nPVJvdW5kaW5nTW9kZXNbZHVtcGVyXVtyaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1jYXBzLCBjbGFtcD1jbGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU9yZGVyZWRTaWduYWxzW2R1bXBlcl1bOmZpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBzPU9yZGVyZWRTaWduYWxzW2R1bXBlcl1bOnRpXQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHBpY2tsZS5kdW1wcyhjKQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBvdGhlciBtb2R1bGUgbG9hZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBsb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBwaWNrbGUubG9hZHMocykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLCBsb2FkZXIuQ29udGV4dCkKKworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnByZWMsIHByZWMpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuRW1pbiwgZW1pbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5FbWF4LCBlbWF4KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnJvdW5kaW5nLCBSb3VuZGluZ01vZGVzW2xvYWRlcl1bcmldKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmNhcGl0YWxzLCBjYXBzKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmNsYW1wLCBjbGFtcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIGQsICdmbGFncycsIE9yZGVyZWRTaWduYWxzW2xvYWRlcl1bOmZpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIGQsICd0cmFwcycsIE9yZGVyZWRTaWduYWxzW2xvYWRlcl1bOnRpXSkKKworICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gc2F2ZWRlY2ltYWwKKworICAgIGRlZiB0ZXN0X2VxdWFsaXR5X3dpdGhfb3RoZXJfdHlwZXMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oRGVjaW1hbCgxMCksIFsnYScsIDEuMCwgRGVjaW1hbCgxMCksICgxLDIpLCB7fV0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oRGVjaW1hbCgxMCksIFsnYScsIDEuMCwgKDEsMiksIHt9XSkKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgICMgQWxsIGNvcGllcyBzaG91bGQgYmUgZGVlcAorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjKSwgaWQoZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYy5mbGFncyksIGlkKGQuZmxhZ3MpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMudHJhcHMpLCBpZChkLnRyYXBzKSkKKyAgICAgICAgazEgPSBzZXQoYy5mbGFncy5rZXlzKCkpCisgICAgICAgIGsyID0gc2V0KGQuZmxhZ3Mua2V5cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGsxLCBrMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZsYWdzLCBkLmZsYWdzKQorCisgICAgZGVmIHRlc3RfX2NsYW1wKHNlbGYpOgorICAgICAgICAjIEluIFB5dGhvbiAzLjIsIHRoZSBwcml2YXRlIGF0dHJpYnV0ZSBgX2NsYW1wYCB3YXMgbWFkZQorICAgICAgICAjIHB1YmxpYyAoaXNzdWUgODU0MCksIHdpdGggdGhlIG9sZCBgX2NsYW1wYCBiZWNvbWluZyBhCisgICAgICAgICMgcHJvcGVydHkgd3JhcHBpbmcgYGNsYW1wYC4gIEZvciB0aGUgZHVyYXRpb24gb2YgUHl0aG9uIDMuMgorICAgICAgICAjIG9ubHksIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGdldHRhYmxlL3NldHRhYmxlIHZpYSBib3RoCisgICAgICAgICMgYGNsYW1wYCBhbmQgYF9jbGFtcGA7IGluIFB5dGhvbiAzLjMsIGBfY2xhbXBgIHNob3VsZCBiZQorICAgICAgICAjIHJlbW92ZWQuCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBjLCAnX2NsYW1wJykKKworICAgIGRlZiB0ZXN0X2FicyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuYWJzKERlY2ltYWwoLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYWJzKC0xKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFicywgJy0xJykKKworICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuYWRkKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5hZGQsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFkZCwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29tcGFyZShEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZSgxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZSwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZSwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfY29tcGFyZV9zaWduYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbCgxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3NpZ25hbCwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV9zaWduYWwsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG90YWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvbXBhcmVfdG90YWwoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbCgxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG90YWxfbWFnKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV90b3RhbF9tYWcsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWxfbWFnLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9jb3B5X2FicyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weV9hYnMoRGVjaW1hbCgtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X2FicygtMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X2FicywgJy0xJykKKworICAgIGRlZiB0ZXN0X2NvcHlfZGVjaW1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weV9kZWNpbWFsKERlY2ltYWwoLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9kZWNpbWFsKC0xKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfZGVjaW1hbCwgJy0xJykKKworICAgIGRlZiB0ZXN0X2NvcHlfbmVnYXRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb3B5X25lZ2F0ZShEZWNpbWFsKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfbmVnYXRlKC0xKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfbmVnYXRlLCAnLTEnKQorCisgICAgZGVmIHRlc3RfY29weV9zaWduKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgRGVjaW1hbCgtMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oMSwgLTIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKERlY2ltYWwoMSksIC0yKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbigxLCBEZWNpbWFsKC0yKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X3NpZ24sICcxJywgLTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X3NpZ24sIDEsICctMicpCisKKyAgICBkZWYgdGVzdF9kaXZpZGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmRpdmlkZShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGUsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X2RpdmlkZV9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmRpdmlkZV9pbnQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludCgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZV9pbnQsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZV9pbnQsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X2Rpdm1vZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuZGl2bW9kKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZtb2QoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZtb2QoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZtb2QoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZtb2QsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdm1vZCwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfZXhwKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5leHAoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leHAoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZXhwLCAnMTAnKQorCisgICAgZGVmIHRlc3RfZm1hKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5mbWEoRGVjaW1hbCgyKSwgRGVjaW1hbCgzKSwgRGVjaW1hbCg0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCAzLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCBEZWNpbWFsKDMpLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCBEZWNpbWFsKDQpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCBEZWNpbWFsKDMpLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgJzInLCAzLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAyLCAnMycsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsIDIsIDMsICc0JykKKworICAgICAgICAjIElzc3VlIDEyMDc5IGZvciBDb250ZXh0LmZtYSAuLi4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgwKSwgIm5vdCBhIGRlY2ltYWwiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEpLCBEZWNpbWFsKCdzbmFuJyksIDEuMjIyKQorICAgICAgICAjIC4uLiBhbmQgZm9yIERlY2ltYWwuZm1hLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoJ0luZmluaXR5JykuZm1hLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDApLCAibm90IGEgZGVjaW1hbCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5mbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoJ3NuYW4nKSwgMS4yMjIpCisKKyAgICBkZWYgdGVzdF9pc19maW5pdGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX2Zpbml0ZShEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX2Zpbml0ZSgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19maW5pdGUsICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19pbmZpbml0ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfaW5maW5pdGUoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19pbmZpbml0ZSgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19pbmZpbml0ZSwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX25hbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfbmFuKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfbmFuKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX25hbiwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX25vcm1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfbm9ybWFsKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfbm9ybWFsKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX25vcm1hbCwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX3FuYW4oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX3FuYW4oRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19xbmFuKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3FuYW4sICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19zaWduZWQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX3NpZ25lZChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3NpZ25lZCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zaWduZWQsICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19zbmFuKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19zbmFuKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfc25hbigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zbmFuLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfc3Vibm9ybWFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zdWJub3JtYWwoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc3Vibm9ybWFsLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfemVybyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfemVybyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3plcm8oMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfemVybywgJzEwJykKKworICAgIGRlZiB0ZXN0X2xuKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sbihEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxuKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxuLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbG9nMTAoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZzEwKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nMTAoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9nMTAsICcxMCcpCisKKyAgICBkZWYgdGVzdF9sb2diKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2diKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nYigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2diLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbG9naWNhbF9hbmQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZ2ljYWxfYW5kKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZCgxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX2FuZCwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9hbmQsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2xvZ2ljYWxfaW52ZXJ0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2dpY2FsX2ludmVydChEZWNpbWFsKDEwMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9pbnZlcnQoMTAwMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX2ludmVydCwgJzEwMDAnKQorCisgICAgZGVmIHRlc3RfbG9naWNhbF9vcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG9naWNhbF9vcihEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcigxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9vciwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9vciwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfbG9naWNhbF94b3Ioc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZ2ljYWxfeG9yKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcigxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX3hvciwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF94b3IsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X21heChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWF4KERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tYXgsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heCwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbWF4X21hZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWF4X21hZyhEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZygxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4X21hZywgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4X21hZywgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbWluKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5taW4oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbihEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbiwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9taW5fbWFnKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5taW5fbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZyhEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9taW51cyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWludXMoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW51cygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW51cywgJzEwJykKKworICAgIGRlZiB0ZXN0X211bHRpcGx5KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5tdWx0aXBseShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubXVsdGlwbHksICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm11bHRpcGx5LCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9uZXh0X21pbnVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5uZXh0X21pbnVzKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF9taW51cygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X21pbnVzLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbmV4dF9wbHVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5uZXh0X3BsdXMoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3BsdXMoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF9wbHVzLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbmV4dF90b3dhcmQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZCgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X3Rvd2FyZCwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF90b3dhcmQsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X25vcm1hbGl6ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubm9ybWFsaXplKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubm9ybWFsaXplKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5vcm1hbGl6ZSwgJzEwJykKKworICAgIGRlZiB0ZXN0X251bWJlcl9jbGFzcyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygxMjMpLCBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKDEyMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubnVtYmVyX2NsYXNzKDApLCBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygtNDUpLCBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKC00NSkpKQorCisgICAgZGVmIHRlc3RfcGx1cyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucGx1cyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBsdXMoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucGx1cywgJzEwJykKKworICAgIGRlZiB0ZXN0X3Bvd2VyKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5wb3dlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihEZWNpbWFsKDEpLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKDEsIERlY2ltYWwoNCkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCg0KSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgJzEnLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsIDEsICc0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKG1vZHVsbz01LCBiPTgsIGE9MiksIDEpCisKKyAgICBkZWYgdGVzdF9xdWFudGl6ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucXVhbnRpemUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnF1YW50aXplLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5xdWFudGl6ZSwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfcmVtYWluZGVyKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5yZW1haW5kZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcihEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlciwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9yZW1haW5kZXJfbmVhcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucmVtYWluZGVyX25lYXIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcigxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlcl9uZWFyLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXJfbmVhciwgMSwgJzInKQorCisgICAgZGVmIHRlc3Rfcm90YXRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5yb3RhdGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJvdGF0ZSwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucm90YXRlLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9zcXJ0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zcXJ0KERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3FydCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zcXJ0LCAnMTAnKQorCisgICAgZGVmIHRlc3Rfc2FtZV9xdWFudHVtKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zYW1lX3F1YW50dW0oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNhbWVfcXVhbnR1bSwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2FtZV9xdWFudHVtLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9zY2FsZWIoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnNjYWxlYihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2NhbGViKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2NhbGViKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2NhbGViKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2NhbGViLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zY2FsZWIsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3NoaWZ0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zaGlmdChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdChEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2hpZnQsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNoaWZ0LCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9zdWJ0cmFjdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdCgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnN1YnRyYWN0LCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zdWJ0cmFjdCwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfdG9fZW5nX3N0cmluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMudG9fZW5nX3N0cmluZyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2VuZ19zdHJpbmcoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9fZW5nX3N0cmluZywgJzEwJykKKworICAgIGRlZiB0ZXN0X3RvX3NjaV9zdHJpbmcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnRvX3NjaV9zdHJpbmcoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19zY2lfc3RyaW5nKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX3NjaV9zdHJpbmcsICcxMCcpCisKKyAgICBkZWYgdGVzdF90b19pbnRlZ3JhbF9leGFjdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19pbnRlZ3JhbF9leGFjdCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19pbnRlZ3JhbF9leGFjdCwgJzEwJykKKworICAgIGRlZiB0ZXN0X3RvX2ludGVncmFsX3ZhbHVlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2ludGVncmFsX3ZhbHVlKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2ludGVncmFsX3ZhbHVlLCAnMTAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfdmFsdWUsIDEwLCAneCcpCisKK2NsYXNzIENDb250ZXh0QVBJdGVzdHMoQ29udGV4dEFQSXRlc3RzKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb250ZXh0QVBJdGVzdHMoQ29udGV4dEFQSXRlc3RzKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0V2l0aFN0YXRlbWVudCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBDYW4ndCBkbyB0aGVzZSBhcyBkb2NzdHJpbmdzIHVudGlsIFB5dGhvbiAyLjYKKyAgICAjIGFzIGRvY3Rlc3QgY2FuJ3QgaGFuZGxlIF9fZnV0dXJlX18gc3RhdGVtZW50cworCisgICAgZGVmIHRlc3RfbG9jYWxjb250ZXh0KHNlbGYpOgorICAgICAgICAjIFVzZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBpbiB0aGUgYmxvY2sKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICBvcmlnX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGVudGVyX2N0eDoKKyAgICAgICAgICAgIHNldF9jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgZmluYWxfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19jdHgsIGZpbmFsX2N0eCwgJ2RpZCBub3QgcmVzdG9yZSBjb250ZXh0IGNvcnJlY3RseScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qob3JpZ19jdHgsIHNldF9jdHgsICdkaWQgbm90IGNvcHkgdGhlIGNvbnRleHQnKQorICAgICAgICBzZWxmLmFzc2VydElzKHNldF9jdHgsIGVudGVyX2N0eCwgJ19fZW50ZXJfXyByZXR1cm5lZCB3cm9uZyBjb250ZXh0JykKKworICAgIGRlZiB0ZXN0X2xvY2FsY29udGV4dGFyZyhzZWxmKToKKyAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0IGluIHRoZSBibG9jaworICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIG9yaWdfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIG5ld19jdHggPSBDb250ZXh0KHByZWM9NDIpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG5ld19jdHgpIGFzIGVudGVyX2N0eDoKKyAgICAgICAgICAgIHNldF9jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgZmluYWxfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19jdHgsIGZpbmFsX2N0eCwgJ2RpZCBub3QgcmVzdG9yZSBjb250ZXh0IGNvcnJlY3RseScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0X2N0eC5wcmVjLCBuZXdfY3R4LnByZWMsICdkaWQgbm90IHNldCBjb3JyZWN0IGNvbnRleHQnKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG5ld19jdHgsIHNldF9jdHgsICdkaWQgbm90IGNvcHkgdGhlIGNvbnRleHQnKQorICAgICAgICBzZWxmLmFzc2VydElzKHNldF9jdHgsIGVudGVyX2N0eCwgJ19fZW50ZXJfXyByZXR1cm5lZCB3cm9uZyBjb250ZXh0JykKKworICAgIGRlZiB0ZXN0X25lc3RlZF93aXRoX3N0YXRlbWVudHMoc2VsZik6CisgICAgICAgICMgVXNlIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dCBpbiB0aGUgYmxvY2sKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBDbGFtcGVkID0gc2VsZi5kZWNpbWFsLkNsYW1wZWQKKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKworICAgICAgICBvcmlnX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICBvcmlnX2N0eC5jbGVhcl9mbGFncygpCisgICAgICAgIG5ld19jdHggPSBDb250ZXh0KEVtYXg9Mzg0KQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMxOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMS5mbGFncywgb3JpZ19jdHguZmxhZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMxLnRyYXBzLCBvcmlnX2N0eC50cmFwcykKKyAgICAgICAgICAgIGMxLnRyYXBzW0NsYW1wZWRdID0gVHJ1ZQorICAgICAgICAgICAgYzEuRW1pbiA9IC0zODMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3JpZ19jdHguRW1pbiwgLTM4MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKENsYW1wZWQsIGMxLmNyZWF0ZV9kZWNpbWFsLCAnMGUtOTk5JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjMS5mbGFnc1tDbGFtcGVkXSkKKyAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG5ld19jdHgpIGFzIGMyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzIuZmxhZ3MsIG5ld19jdHguZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMi50cmFwcywgbmV3X2N0eC50cmFwcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgYzIucG93ZXIsIERlY2ltYWwoJzMuNGUyMDAnKSwgMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMyLmZsYWdzW0NsYW1wZWRdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjMi5mbGFnc1tPdmVyZmxvd10pCisgICAgICAgICAgICAgICAgZGVsIGMyCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMxLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIGRlbCBjMQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9yaWdfY3R4LkVtaW4sIC0zODMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3JpZ19jdHguZmxhZ3NbQ2xhbXBlZF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3JpZ19jdHguZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld19jdHguZmxhZ3NbQ2xhbXBlZF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3X2N0eC5mbGFnc1tPdmVyZmxvd10pCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudHNfZ2MxKHNlbGYpOgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMToKKyAgICAgICAgICAgIGRlbCBjMQorICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMjoKKyAgICAgICAgICAgICAgICBkZWwgYzIKKyAgICAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMzOgorICAgICAgICAgICAgICAgICAgICBkZWwgYzMKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjNAorCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRzX2djMihzZWxmKToKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzE6CisgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChjMSkgYXMgYzI6CisgICAgICAgICAgICAgICAgZGVsIGMxCisgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoYzIpIGFzIGMzOgorICAgICAgICAgICAgICAgICAgICBkZWwgYzIKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoYzMpIGFzIGM0OgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGMzCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgYzQKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50c19nYzMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBzZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLnNldGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMxOgorICAgICAgICAgICAgZGVsIGMxCisgICAgICAgICAgICBuMSA9IENvbnRleHQocHJlYz0xKQorICAgICAgICAgICAgc2V0Y29udGV4dChuMSkKKyAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG4xKSBhcyBjMjoKKyAgICAgICAgICAgICAgICBkZWwgbjEKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMyLnByZWMsIDEpCisgICAgICAgICAgICAgICAgZGVsIGMyCisgICAgICAgICAgICAgICAgbjIgPSBDb250ZXh0KHByZWM9MikKKyAgICAgICAgICAgICAgICBzZXRjb250ZXh0KG4yKQorICAgICAgICAgICAgICAgIGRlbCBuMgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0Y29udGV4dCgpLnByZWMsIDIpCisgICAgICAgICAgICAgICAgbjMgPSBDb250ZXh0KHByZWM9MykKKyAgICAgICAgICAgICAgICBzZXRjb250ZXh0KG4zKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0Y29udGV4dCgpLnByZWMsIDMpCisgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQobjMpIGFzIGMzOgorICAgICAgICAgICAgICAgICAgICBkZWwgbjMKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMy5wcmVjLCAzKQorICAgICAgICAgICAgICAgICAgICBkZWwgYzMKKyAgICAgICAgICAgICAgICAgICAgbjQgPSBDb250ZXh0KHByZWM9NCkKKyAgICAgICAgICAgICAgICAgICAgc2V0Y29udGV4dChuNCkKKyAgICAgICAgICAgICAgICAgICAgZGVsIG40CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0Y29udGV4dCgpLnByZWMsIDQpCisgICAgICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGM0LnByZWMsIDQpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgYzQKKworY2xhc3MgQ0NvbnRleHRXaXRoU3RhdGVtZW50KENvbnRleHRXaXRoU3RhdGVtZW50KToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb250ZXh0V2l0aFN0YXRlbWVudChDb250ZXh0V2l0aFN0YXRlbWVudCk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dEZsYWdzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2ZsYWdzX2lycmVsZXZhbnQoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgcmVzdWx0IChudW1lcmljIHJlc3VsdCArIGZsYWdzIHJhaXNlZCkgb2YgYW4KKyAgICAgICAgIyBhcml0aG1ldGljIG9wZXJhdGlvbiBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgY3VycmVudCBmbGFncworICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIEluZXhhY3QgPSBzZWxmLmRlY2ltYWwuSW5leGFjdAorICAgICAgICBSb3VuZGVkID0gc2VsZi5kZWNpbWFsLlJvdW5kZWQKKyAgICAgICAgVW5kZXJmbG93ID0gc2VsZi5kZWNpbWFsLlVuZGVyZmxvdworICAgICAgICBDbGFtcGVkID0gc2VsZi5kZWNpbWFsLkNsYW1wZWQKKyAgICAgICAgU3Vibm9ybWFsID0gc2VsZi5kZWNpbWFsLlN1Ym5vcm1hbAorICAgICAgICBST1VORF9IQUxGX0VWRU4gPSBzZWxmLmRlY2ltYWwuUk9VTkRfSEFMRl9FVkVOCisKKyAgICAgICAgZGVmIHJhaXNlX2Vycm9yKGNvbnRleHQsIGZsYWcpOgorICAgICAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEM6CisgICAgICAgICAgICAgICAgY29udGV4dC5mbGFnc1tmbGFnXSA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBjb250ZXh0LnRyYXBzW2ZsYWddOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBmbGFnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKGZsYWcpCisKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz05LCBFbWluID0gLTQyNTAwMDAwMCwgRW1heCA9IDQyNTAwMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCB0cmFwcz1bXSwgZmxhZ3M9W10pCisKKyAgICAgICAgIyBvcGVyYXRpb25zIHRoYXQgcmFpc2UgdmFyaW91cyBmbGFncywgaW4gdGhlIGZvcm0gKGZ1bmN0aW9uLCBhcmdsaXN0KQorICAgICAgICBvcGVyYXRpb25zID0gWworICAgICAgICAgICAgKGNvbnRleHQuX2FwcGx5LCBbRGVjaW1hbCgiMTAwRS00MjUwMDAwMTAiKV0pLAorICAgICAgICAgICAgKGNvbnRleHQuc3FydCwgW0RlY2ltYWwoMildKSwKKyAgICAgICAgICAgIChjb250ZXh0LmFkZCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICAoY29udGV4dC5tdWx0aXBseSwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICAoY29udGV4dC5zdWJ0cmFjdCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICBdCisKKyAgICAgICAgIyB0cnkgdmFyaW91cyBmbGFncyBpbmRpdmlkdWFsbHksIHRoZW4gYSB3aG9sZSBsb3QgYXQgb25jZQorICAgICAgICBmbGFnc2V0cyA9IFtbSW5leGFjdF0sIFtSb3VuZGVkXSwgW1VuZGVyZmxvd10sIFtDbGFtcGVkXSwgW1N1Ym5vcm1hbF0sCisgICAgICAgICAgICAgICAgICAgIFtJbmV4YWN0LCBSb3VuZGVkLCBVbmRlcmZsb3csIENsYW1wZWQsIFN1Ym5vcm1hbF1dCisKKyAgICAgICAgZm9yIGZuLCBhcmdzIGluIG9wZXJhdGlvbnM6CisgICAgICAgICAgICAjIGZpbmQgYW5zd2VyIGFuZCBmbGFncyByYWlzZWQgdXNpbmcgYSBjbGVhbiBjb250ZXh0CisgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IGZuKCphcmdzKQorICAgICAgICAgICAgZmxhZ3MgPSBbayBmb3IgaywgdiBpbiBjb250ZXh0LmZsYWdzLml0ZW1zKCkgaWYgdl0KKworICAgICAgICAgICAgZm9yIGV4dHJhX2ZsYWdzIGluIGZsYWdzZXRzOgorICAgICAgICAgICAgICAgICMgc2V0IGZsYWdzLCBiZWZvcmUgY2FsbGluZyBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgICAgICBmb3IgZmxhZyBpbiBleHRyYV9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2VfZXJyb3IoY29udGV4dCwgZmxhZykKKyAgICAgICAgICAgICAgICBuZXdfYW5zID0gZm4oKmFyZ3MpCisKKyAgICAgICAgICAgICAgICAjIGZsYWdzIHRoYXQgd2UgZXhwZWN0IHRvIGJlIHNldCBhZnRlciB0aGUgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmxhZ3MgPSBsaXN0KGZsYWdzKQorICAgICAgICAgICAgICAgIGZvciBmbGFnIGluIGV4dHJhX2ZsYWdzOgorICAgICAgICAgICAgICAgICAgICBpZiBmbGFnIG5vdCBpbiBleHBlY3RlZF9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLmFwcGVuZChmbGFnKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLnNvcnQoa2V5PWlkKQorCisgICAgICAgICAgICAgICAgIyBmbGFncyB3ZSBhY3R1YWxseSBnb3QKKyAgICAgICAgICAgICAgICBuZXdfZmxhZ3MgPSBbayBmb3Igayx2IGluIGNvbnRleHQuZmxhZ3MuaXRlbXMoKSBpZiB2XQorICAgICAgICAgICAgICAgIG5ld19mbGFncy5zb3J0KGtleT1pZCkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBuZXdfYW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBwcm9kdWNlcyBkaWZmZXJlbnQgYW5zd2VycyBkZXBlbmRpbmcgb24gZmxhZ3Mgc2V0OiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzLiIgJSAoYW5zLCBuZXdfYW5zKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19mbGFncywgZXhwZWN0ZWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiByYWlzZXMgZGlmZmVyZW50IGZsYWdzIGRlcGVuZGluZyBvbiBmbGFncyBzZXQ6ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzIiAlIChleHBlY3RlZF9mbGFncywgbmV3X2ZsYWdzKSkKKworICAgIGRlZiB0ZXN0X2ZsYWdfY29tcGFyaXNvbnMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBJbmV4YWN0ID0gc2VsZi5kZWNpbWFsLkluZXhhY3QKKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCisKKyAgICAgICAgYyA9IENvbnRleHQoKQorCisgICAgICAgICMgVmFsaWQgU2lnbmFsRGljdAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBjLmZsYWdzID0gYy50cmFwcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBjLmZsYWdzW1JvdW5kZWRdID0gVHJ1ZQorICAgICAgICBjLnRyYXBzID0gYy5mbGFncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBkID0ge30KKyAgICAgICAgZC51cGRhdGUoYy5mbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBjLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGQpCisKKyAgICAgICAgZFtJbmV4YWN0XSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkLCBjLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGMuZmxhZ3MsIGQpCisKKyAgICAgICAgIyBJbnZhbGlkIFNpZ25hbERpY3QKKyAgICAgICAgZCA9IHtJbmV4YWN0OkZhbHNlfQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGQsIGMuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy5mbGFncywgZCkKKworICAgICAgICBkID0gWyJ4eXoiXQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGQsIGMuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy5mbGFncywgZCkKKworICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgIGRlZiB0ZXN0X2Zsb2F0X29wZXJhdGlvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEZsb2F0T3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICAjIyMjIyB0cmFwIGlzIG9mZiBieSBkZWZhdWx0CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMudHJhcHNbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICAjIGltcGxpY2l0IGNvbnZlcnNpb24gc2V0cyB0aGUgZmxhZworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNy41KSwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jcmVhdGVfZGVjaW1hbCg3LjUpLCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgICMgZXhwbGljaXQgY29udmVyc2lvbiBkb2VzIG5vdCBzZXQgdGhlIGZsYWcKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgeCA9IERlY2ltYWwuZnJvbV9mbG9hdCg3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorICAgICAgICAgICAgIyBjb21wYXJpc29uIHNldHMgdGhlIGZsYWcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHggPSBjLmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICAjIyMjIyBzZXQgdGhlIHRyYXAKKyAgICAgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorCisgICAgICAgICAgICAjIGltcGxpY2l0IGNvbnZlcnNpb24gcmFpc2VzCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZsb2F0T3BlcmF0aW9uLCBEZWNpbWFsLCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmxvYXRPcGVyYXRpb24sIGMuY3JlYXRlX2RlY2ltYWwsIDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgIyBleHBsaWNpdCBjb252ZXJzaW9uIGlzIHNpbGVudAorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICB4ID0gRGVjaW1hbC5mcm9tX2Zsb2F0KDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgeCA9IGMuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCg3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgZGVmIHRlc3RfZmxvYXRfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBGbG9hdE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5GbG9hdE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgZGVmIGFzc2VydF9hdHRyKGEsIGIsIGF0dHIsIGNvbnRleHQsIHNpZ25hbD1Ob25lKToKKyAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgZiA9IGdldGF0dHIoYSwgYXR0cikKKyAgICAgICAgICAgIGlmIHNpZ25hbCA9PSBGbG9hdE9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzaWduYWwsIGYsIGIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZihiKSwgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250ZXh0LmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICBzbWFsbF9kID0gRGVjaW1hbCgnMC4yNScpCisgICAgICAgIGJpZ19kID0gRGVjaW1hbCgnMy4wJykKKyAgICAgICAgc21hbGxfZiA9IDAuMjUKKyAgICAgICAgYmlnX2YgPSAzLjAKKworICAgICAgICB6ZXJvX2QgPSBEZWNpbWFsKCcwLjAnKQorICAgICAgICBuZWdfemVyb19kID0gRGVjaW1hbCgnLTAuMCcpCisgICAgICAgIHplcm9fZiA9IDAuMAorICAgICAgICBuZWdfemVyb19mID0gLTAuMAorCisgICAgICAgIGluZl9kID0gRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICBuZWdfaW5mX2QgPSBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICBpbmZfZiA9IGZsb2F0KCdpbmYnKQorICAgICAgICBuZWdfaW5mX2YgPSBmbG9hdCgnLWluZicpCisKKyAgICAgICAgZGVmIGRvaXQoYywgc2lnbmFsPU5vbmUpOgorICAgICAgICAgICAgIyBPcmRlcgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ19fbHRfXycsICdfX2xlX18nOgorICAgICAgICAgICAgICAgIGFzc2VydF9hdHRyKHNtYWxsX2QsIGJpZ19mLCBhdHRyLCBjLCBzaWduYWwpCisKKyAgICAgICAgICAgIGZvciBhdHRyIGluICdfX2d0X18nLCAnX19nZV9fJzoKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXR0cihiaWdfZCwgc21hbGxfZiwgYXR0ciwgYywgc2lnbmFsKQorCisgICAgICAgICAgICAjIEVxdWFsaXR5CisgICAgICAgICAgICBhc3NlcnRfYXR0cihzbWFsbF9kLCBzbWFsbF9mLCAnX19lcV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIobmVnX3plcm9fZCwgbmVnX3plcm9fZiwgJ19fZXFfXycsIGMsIE5vbmUpCisgICAgICAgICAgICBhc3NlcnRfYXR0cihuZWdfemVyb19kLCB6ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cih6ZXJvX2QsIG5lZ196ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIoemVyb19kLCB6ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cihuZWdfaW5mX2QsIG5lZ19pbmZfZiwgJ19fZXFfXycsIGMsIE5vbmUpCisgICAgICAgICAgICBhc3NlcnRfYXR0cihpbmZfZCwgaW5mX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICAjIEluZXF1YWxpdHkKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKHNtYWxsX2QsIGJpZ19mLCAnX19uZV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIoRGVjaW1hbCgnMC4xJyksIDAuMSwgJ19fbmVfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKG5lZ19pbmZfZCwgaW5mX2YsICdfX25lX18nLCBjLCBOb25lKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIoaW5mX2QsIG5lZ19pbmZfZiwgJ19fbmVfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKERlY2ltYWwoJ05hTicpLCBmbG9hdCgnbmFuJyksICdfX25lX18nLCBjLCBOb25lKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPU5vbmUpOgorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzID0gc2V0KFsxMDAuMCwgRGVjaW1hbCgnMTAwLjAnKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBpZiBzaWduYWw6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc2lnbmFsLCBzb3J0ZWQsIFsxLjAsIERlY2ltYWwoJzEwLjAnKV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHMgPSBzb3J0ZWQoWzEwLjAsIERlY2ltYWwoJzEwLjAnKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYiA9IDEwLjAgaW4gW0RlY2ltYWwoJzEwLjAnKSwgMS4wXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGIgPSAxMC4wIGluIHtEZWNpbWFsKCcxMC4wJyk6J2EnLCAxLjA6J2InfQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgIG5jID0gQ29udGV4dCgpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG5jKSBhcyBjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSkKKyAgICAgICAgICAgIGRvaXQoYywgc2lnbmFsPU5vbmUpCisgICAgICAgICAgICB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPU5vbmUpCisKKyAgICAgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgZG9pdChjLCBzaWduYWw9RmxvYXRPcGVyYXRpb24pCisgICAgICAgICAgICB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPUZsb2F0T3BlcmF0aW9uKQorCisgICAgZGVmIHRlc3RfZmxvYXRfb3BlcmF0aW9uX2RlZmF1bHQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgSW5leGFjdCA9IHNlbGYuZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIEZsb2F0T3BlcmF0aW9uPSBzZWxmLmRlY2ltYWwuRmxvYXRPcGVyYXRpb24KKworICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29udGV4dC5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29udGV4dC50cmFwc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgY29udGV4dC5jbGVhcl90cmFwcygpCisgICAgICAgIGNvbnRleHQudHJhcHNbSW5leGFjdF0gPSBUcnVlCisgICAgICAgIGNvbnRleHQudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGV4dC50cmFwc1tGbG9hdE9wZXJhdGlvbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250ZXh0LnRyYXBzW0luZXhhY3RdKQorCitjbGFzcyBDQ29udGV4dEZsYWdzKENvbnRleHRGbGFncyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dEZsYWdzKENvbnRleHRGbGFncyk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgU3BlY2lhbENvbnRleHRzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoZSBjb250ZXh0IHRlbXBsYXRlcy4iIiIKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfdGVtcGxhdGVzKHNlbGYpOgorICAgICAgICBCYXNpY0NvbnRleHQgPSBzZWxmLmRlY2ltYWwuQmFzaWNDb250ZXh0CisgICAgICAgIEV4dGVuZGVkQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5FeHRlbmRlZENvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuc2V0Y29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBzZWxmLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKyAgICAgICAgVW5kZXJmbG93ID0gc2VsZi5kZWNpbWFsLlVuZGVyZmxvdworICAgICAgICBDbGFtcGVkID0gc2VsZi5kZWNpbWFsLkNsYW1wZWQKKworICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBCYXNpY0NvbnRleHQsICd0cmFwcycsCisgICAgICAgICAgICBbSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIE92ZXJmbG93LCBVbmRlcmZsb3csIENsYW1wZWRdCisgICAgICAgICkKKworICAgICAgICBzYXZlY29udGV4dCA9IGdldGNvbnRleHQoKS5jb3B5KCkKKyAgICAgICAgYmFzaWNfY29udGV4dF9wcmVjID0gQmFzaWNDb250ZXh0LnByZWMKKyAgICAgICAgZXh0ZW5kZWRfY29udGV4dF9wcmVjID0gRXh0ZW5kZWRDb250ZXh0LnByZWMKKworICAgICAgICBleCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgQmFzaWNDb250ZXh0LnByZWMgPSBFeHRlbmRlZENvbnRleHQucHJlYyA9IDQ0MQorICAgICAgICAgICAgZm9yIHRlbXBsYXRlIGluIEJhc2ljQ29udGV4dCwgRXh0ZW5kZWRDb250ZXh0OgorICAgICAgICAgICAgICAgIHNldGNvbnRleHQodGVtcGxhdGUpCisgICAgICAgICAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoYywgdGVtcGxhdGUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDQ0MSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgZXggPSBlLl9fY2xhc3NfXworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgQmFzaWNDb250ZXh0LnByZWMgPSBiYXNpY19jb250ZXh0X3ByZWMKKyAgICAgICAgICAgIEV4dGVuZGVkQ29udGV4dC5wcmVjID0gZXh0ZW5kZWRfY29udGV4dF9wcmVjCisgICAgICAgICAgICBzZXRjb250ZXh0KHNhdmVjb250ZXh0KQorICAgICAgICAgICAgaWYgZXg6CisgICAgICAgICAgICAgICAgcmFpc2UgZXgKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29udGV4dChzZWxmKToKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRGVmYXVsdENvbnRleHQKKyAgICAgICAgQmFzaWNDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkJhc2ljQ29udGV4dAorICAgICAgICBFeHRlbmRlZENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRXh0ZW5kZWRDb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBzZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLnNldGNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgICAgIE92ZXJmbG93ID0gc2VsZi5kZWNpbWFsLk92ZXJmbG93CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCYXNpY0NvbnRleHQucHJlYywgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFeHRlbmRlZENvbnRleHQucHJlYywgOSkKKworICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBEZWZhdWx0Q29udGV4dCwgJ3RyYXBzJywKKyAgICAgICAgICAgIFtJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3ddCisgICAgICAgICkKKworICAgICAgICBzYXZlY29udGV4dCA9IGdldGNvbnRleHQoKS5jb3B5KCkKKyAgICAgICAgZGVmYXVsdF9jb250ZXh0X3ByZWMgPSBEZWZhdWx0Q29udGV4dC5wcmVjCisKKyAgICAgICAgZXggPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNhdmVwcmVjID0gYy5wcmVjCisKKyAgICAgICAgICAgIERlZmF1bHRDb250ZXh0LnByZWMgPSA5NjEKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCBzYXZlcHJlYykKKworICAgICAgICAgICAgc2V0Y29udGV4dChEZWZhdWx0Q29udGV4dCkKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoYywgRGVmYXVsdENvbnRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgOTYxKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBleCA9IGUuX19jbGFzc19fCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBEZWZhdWx0Q29udGV4dC5wcmVjID0gZGVmYXVsdF9jb250ZXh0X3ByZWMKKyAgICAgICAgICAgIHNldGNvbnRleHQoc2F2ZWNvbnRleHQpCisgICAgICAgICAgICBpZiBleDoKKyAgICAgICAgICAgICAgICByYWlzZSBleAorCitjbGFzcyBDU3BlY2lhbENvbnRleHRzKFNwZWNpYWxDb250ZXh0cyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5U3BlY2lhbENvbnRleHRzKFNwZWNpYWxDb250ZXh0cyk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dElucHV0VmFsaWRhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbnRleHQoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dAorCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKKworICAgICAgICAjIHByZWMsIEVtYXgKKyAgICAgICAgZm9yIGF0dHIgaW4gWydwcmVjJywgJ0VtYXgnXToKKyAgICAgICAgICAgIHNldGF0dHIoYywgYXR0ciwgOTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGMsIGF0dHIpLCA5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgJ3h5eicpCisKKyAgICAgICAgIyBFbWluCisgICAgICAgIHNldGF0dHIoYywgJ0VtaW4nLCAtOTk5OTk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoYywgJ0VtaW4nKSwgLTk5OTk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ0VtaW4nLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdFbWluJywgKDEsMiwzKSkKKworICAgICAgICAjIHJvdW5kaW5nOiBhbHdheXMgcmFpc2UgVHlwZUVycm9yIGluIG9yZGVyIHRvIGdldCBjb25zaXN0ZW50CisgICAgICAgICMgZXhjZXB0aW9ucyBhY3Jvc3MgaW1wbGVtZW50YXRpb25zLiBJbiBkZWNpbWFsLCByb3VuZGluZworICAgICAgICAjIG1vZGVzIGFyZSBzdHJpbmdzLCBpbiBfZGVjaW1hbCB0aGV5IGFyZSBpbnRlZ2Vycy4gVGhlIGlkZWEKKyAgICAgICAgIyBpcyB0byB2aWV3IHJvdW5kaW5nIGFzIGFuIGFic3RyYWN0IHR5cGUgYW5kIG5vdCBtaW5kIHRoZQorICAgICAgICAjIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisgICAgICAgICMgSGVuY2UsIGEgdXNlciBzaG91bGQgdmlldyB0aGUgcm91bmRpbmcgbW9kZXMgYXMgaWYgdGhleQorICAgICAgICAjIGhhZCBiZWVuIGRlZmluZWQgaW4gYSBsYW5ndWFnZSB0aGF0IHN1cHBvcnRzIGFic3RyYWN0CisgICAgICAgICMgZGF0YSB0eXBlcywgZS5nLiBvY2FtbDoKKyAgICAgICAgIworICAgICAgICAjICAgdHlwZSByb3VuZGluZyA9IFJPVU5EX0RPV04gfCBST1VORF9IQUxGX1VQIHwgLi4uIDs7CisgICAgICAgICMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdyb3VuZGluZycsIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCAneHl6JykKKworICAgICAgICAjIGNhcGl0YWxzLCBjbGFtcAorICAgICAgICBmb3IgYXR0ciBpbiBbJ2NhcGl0YWxzJywgJ2NsYW1wJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIFsxLDIsM10pCisKKyAgICAgICAgIyBJbnZhbGlkIGF0dHJpYnV0ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgYywgJ2VtYXgnLCAxMDApCisKKyAgICAgICAgIyBJbnZhbGlkIHNpZ25hbCBkaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ2ZsYWdzJywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAnZmxhZ3MnLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNldGF0dHIsIGMsICd0cmFwcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsnSW52YWxpZE9wZXJhdGlvbic6MH0pCisKKyAgICAgICAgIyBBdHRyaWJ1dGVzIGNhbm5vdCBiZSBkZWxldGVkCisgICAgICAgIGZvciBhdHRyIGluIFsncHJlYycsICdFbWF4JywgJ0VtaW4nLCAncm91bmRpbmcnLCAnY2FwaXRhbHMnLCAnY2xhbXAnLAorICAgICAgICAgICAgICAgICAgICAgJ2ZsYWdzJywgJ3RyYXBzJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgYy5fX2RlbGF0dHJfXywgYXR0cikKKworICAgICAgICAjIEludmFsaWQgYXR0cmlidXRlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGF0dHIsIGMsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgOSkKKworICAgICAgICAjIEludmFsaWQgdmFsdWVzIGluIGNvbnN0cnVjdG9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQ29udGV4dCwgcm91bmRpbmc9OTk5OTk5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIENvbnRleHQsIHJvdW5kaW5nPSd4eXonKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBDb250ZXh0LCBjbGFtcD0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBDb250ZXh0LCBjYXBpdGFscz0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIENvbnRleHQsIGZsYWdzPVsiUCJdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgQ29udGV4dCwgdHJhcHM9WyJRIl0pCisKKyAgICAgICAgIyBUeXBlIGVycm9yIGluIGNvbnZlcnNpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDb250ZXh0LCBmbGFncz0oMCwxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDb250ZXh0LCB0cmFwcz0oMSwwKSkKKworY2xhc3MgQ0NvbnRleHRJbnB1dFZhbGlkYXRpb24oQ29udGV4dElucHV0VmFsaWRhdGlvbik6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dElucHV0VmFsaWRhdGlvbihDb250ZXh0SW5wdXRWYWxpZGF0aW9uKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0U3ViY2xhc3NpbmcodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfY29udGV4dF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgZGVjaW1hbCA9IHNlbGYuZGVjaW1hbAorICAgICAgICBEZWNpbWFsID0gZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBkZWNpbWFsLkNvbnRleHQKKyAgICAgICAgUk9VTkRfSEFMRl9FVkVOID0gZGVjaW1hbC5ST1VORF9IQUxGX0VWRU4KKyAgICAgICAgUk9VTkRfRE9XTiA9IGRlY2ltYWwuUk9VTkRfRE9XTgorICAgICAgICBDbGFtcGVkID0gZGVjaW1hbC5DbGFtcGVkCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworICAgICAgICBJbmV4YWN0ID0gZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIE92ZXJmbG93ID0gZGVjaW1hbC5PdmVyZmxvdworICAgICAgICBSb3VuZGVkID0gZGVjaW1hbC5Sb3VuZGVkCisgICAgICAgIFN1Ym5vcm1hbCA9IGRlY2ltYWwuU3Vibm9ybWFsCisgICAgICAgIFVuZGVyZmxvdyA9IGRlY2ltYWwuVW5kZXJmbG93CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBkZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKworICAgICAgICBjbGFzcyBNeUNvbnRleHQoQ29udGV4dCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLCBmbGFncz1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBzPU5vbmUpOgorICAgICAgICAgICAgICAgIENvbnRleHQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgICAgICBpZiBwcmVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByZWMgPSBwcmVjCisgICAgICAgICAgICAgICAgaWYgcm91bmRpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucm91bmRpbmcgPSByb3VuZGluZworICAgICAgICAgICAgICAgIGlmIEVtaW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuRW1pbiA9IEVtaW4KKyAgICAgICAgICAgICAgICBpZiBFbWF4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLkVtYXggPSBFbWF4CisgICAgICAgICAgICAgICAgaWYgY2FwaXRhbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMgPSBjYXBpdGFscworICAgICAgICAgICAgICAgIGlmIGNsYW1wIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYW1wID0gY2xhbXAKKyAgICAgICAgICAgICAgICBpZiBmbGFncyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmbGFncywgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHt2Oih2IGluIGZsYWdzKSBmb3IgdiBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXSArIGZsYWdzfQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZmxhZ3MKKyAgICAgICAgICAgICAgICBpZiB0cmFwcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0cmFwcywgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFwcyA9IHt2Oih2IGluIHRyYXBzKSBmb3IgdiBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXSArIHRyYXBzfQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRyYXBzID0gdHJhcHMKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBNeUNvbnRleHQoKQorICAgICAgICBmb3IgYXR0ciBpbiAoJ3ByZWMnLCAncm91bmRpbmcnLCAnRW1pbicsICdFbWF4JywgJ2NhcGl0YWxzJywgJ2NsYW1wJywKKyAgICAgICAgICAgICAgICAgICAgICdmbGFncycsICd0cmFwcycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGMsIGF0dHIpLCBnZXRhdHRyKGQsIGF0dHIpKQorCisgICAgICAgICMgcHJlYworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBNeUNvbnRleHQsICoqeydwcmVjJzotMX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQocHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgYy5xdWFudGl6ZSwgRGVjaW1hbCgnOWUyJyksIDApCisKKyAgICAgICAgIyByb3VuZGluZworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE15Q29udGV4dCwgKip7J3JvdW5kaW5nJzonWFlaJ30pCisgICAgICAgIGMgPSBNeUNvbnRleHQocm91bmRpbmc9Uk9VTkRfRE9XTiwgcHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIFJPVU5EX0RPV04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wbHVzKERlY2ltYWwoJzkuOScpKSwgOSkKKworICAgICAgICAjIEVtaW4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTXlDb250ZXh0LCAqKnsnRW1pbic6NX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQoRW1pbj0tMSwgcHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTEpCisgICAgICAgIHggPSBjLmFkZChEZWNpbWFsKCcxZS05OScpLCBEZWNpbWFsKCcyLjIzNGUtMjAwMCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzAuMCcpKQorICAgICAgICBmb3Igc2lnbmFsIGluIChJbmV4YWN0LCBVbmRlcmZsb3csIFN1Ym5vcm1hbCwgUm91bmRlZCwgQ2xhbXBlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tzaWduYWxdKQorCisgICAgICAgICMgRW1heAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBNeUNvbnRleHQsICoqeydFbWF4JzotMX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQoRW1heD0xLCBwcmVjPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgYy5hZGQsIERlY2ltYWwoJzFlOTknKSwgRGVjaW1hbCgnMi4yMzRlMjAwMCcpKQorICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQzoKKyAgICAgICAgICAgIGZvciBzaWduYWwgaW4gKEluZXhhY3QsIE92ZXJmbG93LCBSb3VuZGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tzaWduYWxdKQorCisgICAgICAgICMgY2FwaXRhbHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTXlDb250ZXh0LCAqKnsnY2FwaXRhbHMnOi0xfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChjYXBpdGFscz0wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIDApCisgICAgICAgIHggPSBjLmNyZWF0ZV9kZWNpbWFsKCcxRTIyMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19zY2lfc3RyaW5nKHgpLCAnMWUrMjIyJykKKworICAgICAgICAjIGNsYW1wCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIE15Q29udGV4dCwgKip7J2NsYW1wJzoyfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChjbGFtcD0xLCBFbWF4PTk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2xhbXAsIDEpCisgICAgICAgIHggPSBjLnBsdXMoRGVjaW1hbCgnMWU5OScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih4KSwgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRSs5OScpCisKKyAgICAgICAgIyBmbGFncworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE15Q29udGV4dCwgKip7J2ZsYWdzJzonWFlaJ30pCisgICAgICAgIGMgPSBNeUNvbnRleHQoZmxhZ3M9W1JvdW5kZWQsIERpdmlzaW9uQnlaZXJvXSkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiAoUm91bmRlZCwgRGl2aXNpb25CeVplcm8pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3Nbc2lnbmFsXSkKKyAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgIGZvciBzaWduYWwgaW4gT3JkZXJlZFNpZ25hbHNbZGVjaW1hbF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3Nbc2lnbmFsXSkKKworICAgICAgICAjIHRyYXBzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTXlDb250ZXh0LCAqKnsndHJhcHMnOidYWVonfSkKKyAgICAgICAgYyA9IE15Q29udGV4dCh0cmFwcz1bUm91bmRlZCwgRGl2aXNpb25CeVplcm9dKQorICAgICAgICBmb3Igc2lnbmFsIGluIChSb3VuZGVkLCBEaXZpc2lvbkJ5WmVybyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy50cmFwc1tzaWduYWxdKQorICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy50cmFwc1tzaWduYWxdKQorCitjbGFzcyBDQ29udGV4dFN1YmNsYXNzaW5nKENvbnRleHRTdWJjbGFzc2luZyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dFN1YmNsYXNzaW5nKENvbnRleHRTdWJjbGFzc2luZyk6CisgICAgZGVjaW1hbCA9IFAKKworQHNraXBfaWZfZXh0cmFfZnVuY3Rpb25hbGl0eQorY2xhc3MgQ2hlY2tBdHRyaWJ1dGVzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21vZHVsZV9hdHRyaWJ1dGVzKHNlbGYpOgorCisgICAgICAgICMgQXJjaGl0ZWN0dXJlIGRlcGVuZGVudCBjb250ZXh0IGxpbWl0cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuTUFYX1BSRUMsIFAuTUFYX1BSRUMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5NQVhfRU1BWCwgUC5NQVhfRU1BWCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLk1JTl9FTUlOLCBQLk1JTl9FTUlOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuTUlOX0VUSU5ZLCBQLk1JTl9FVElOWSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoQy5IQVZFX1RIUkVBRFMgaXMgVHJ1ZSBvciBDLkhBVkVfVEhSRUFEUyBpcyBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAuSEFWRV9USFJFQURTIGlzIFRydWUgb3IgUC5IQVZFX1RIUkVBRFMgaXMgRmFsc2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fdmVyc2lvbl9fLCBQLl9fdmVyc2lvbl9fKQorCisgICAgICAgIHggPSBkaXIoQykKKyAgICAgICAgeSA9IFtzIGZvciBzIGluIGRpcihQKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh4KSAtIHNldCh5KSwgc2V0KCkpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X2F0dHJpYnV0ZXMoc2VsZik6CisKKyAgICAgICAgeCA9IFtzIGZvciBzIGluIGRpcihDLkNvbnRleHQoKSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgeSA9IFtzIGZvciBzIGluIGRpcihQLkNvbnRleHQoKSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoeCkgLSBzZXQoeSksIHNldCgpKQorCisgICAgZGVmIHRlc3RfZGVjaW1hbF9hdHRyaWJ1dGVzKHNlbGYpOgorCisgICAgICAgIHggPSBbcyBmb3IgcyBpbiBkaXIoQy5EZWNpbWFsKDkpKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICB5ID0gW3MgZm9yIHMgaW4gZGlyKEMuRGVjaW1hbCg5KSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoeCkgLSBzZXQoeSksIHNldCgpKQorCitjbGFzcyBDb3ZlcmFnZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hZGp1c3RlZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCcxMjM0ZTk5OTknKS5hZGp1c3RlZCgpLCAxMDAwMikKKyAgICAgICAgIyBYWFggcmFpc2U/CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnbmFuJykuYWRqdXN0ZWQoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCdpbmYnKS5hZGp1c3RlZCgpLCAwKQorCisgICAgZGVmIHRlc3RfY2Fub25pY2FsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisKKyAgICAgICAgeCA9IERlY2ltYWwoOSkuY2Fub25pY2FsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCA5KQorCisgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgeCA9IGMuY2Fub25pY2FsKERlY2ltYWwoOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgOSkKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfcmVwcihzZWxmKToKKyAgICAgICAgYyA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dC5jb3B5KCkKKworICAgICAgICBjLnByZWMgPSA0MjUwMDAwMDAKKyAgICAgICAgYy5FbWF4ID0gNDI1MDAwMDAwCisgICAgICAgIGMuRW1pbiA9IC00MjUwMDAwMDAKKyAgICAgICAgYy5yb3VuZGluZyA9IHNlbGYuZGVjaW1hbC5ST1VORF9IQUxGX0RPV04KKyAgICAgICAgYy5jYXBpdGFscyA9IDAKKyAgICAgICAgYy5jbGFtcCA9IDEKKyAgICAgICAgZm9yIHNpZyBpbiBPcmRlcmVkU2lnbmFsc1tzZWxmLmRlY2ltYWxdOgorICAgICAgICAgICAgYy5mbGFnc1tzaWddID0gRmFsc2UKKyAgICAgICAgICAgIGMudHJhcHNbc2lnXSA9IEZhbHNlCisKKyAgICAgICAgcyA9IGMuX19yZXByX18oKQorICAgICAgICB0ID0gIkNvbnRleHQocHJlYz00MjUwMDAwMDAsIHJvdW5kaW5nPVJPVU5EX0hBTEZfRE9XTiwgIiBcCisgICAgICAgICAgICAiRW1pbj0tNDI1MDAwMDAwLCBFbWF4PTQyNTAwMDAwMCwgY2FwaXRhbHM9MCwgY2xhbXA9MSwgIiBcCisgICAgICAgICAgICAiZmxhZ3M9W10sIHRyYXBzPVtdKSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCB0KQorCisgICAgZGVmIHRlc3RfaW1wbGljaXRfY29udGV4dChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSAxCisgICAgICAgICAgICBjLkVtYXggPSAxCisgICAgICAgICAgICBjLkVtaW4gPSAtMQorCisgICAgICAgICAgICAjIGFicworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhYnMoRGVjaW1hbCgiLTEwIikpLCAxMCkKKyAgICAgICAgICAgICMgYWRkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjciKSArIDEsIDgpCisgICAgICAgICAgICAjIGRpdmlkZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpIC8gNSwgMikKKyAgICAgICAgICAgICMgZGl2aWRlX2ludAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpIC8vIDcsIDEpCisgICAgICAgICAgICAjIGZtYQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxLjIiKS5mbWEoRGVjaW1hbCgiMC4wMSIpLCAxKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRGVjaW1hbCgiTmFOIikuZm1hKDcsIDEpLmlzX25hbigpLCBUcnVlKQorICAgICAgICAgICAgIyB0aHJlZSBhcmcgcG93ZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG93KERlY2ltYWwoMTApLCAyLCA3KSwgMikKKyAgICAgICAgICAgICMgZXhwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEuMDEiKS5leHAoKSwgMykKKyAgICAgICAgICAgICMgaXNfbm9ybWFsCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKERlY2ltYWwoIjAuMDEiKS5pc19ub3JtYWwoKSwgRmFsc2UpCisgICAgICAgICAgICAjIGlzX3N1Ym5vcm1hbAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhEZWNpbWFsKCIwLjAxIikuaXNfc3Vibm9ybWFsKCksIFRydWUpCisgICAgICAgICAgICAjIGxuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjIwIikubG4oKSwgMykKKyAgICAgICAgICAgICMgbG9nMTAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMjAiKS5sb2cxMCgpLCAxKQorICAgICAgICAgICAgIyBsb2diCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjU4MCIpLmxvZ2IoKSwgMikKKyAgICAgICAgICAgICMgbG9naWNhbF9pbnZlcnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKS5sb2dpY2FsX2ludmVydCgpLCAxKQorICAgICAgICAgICAgIyBtaW51cworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtRGVjaW1hbCgiLTEwIiksIDEwKQorICAgICAgICAgICAgIyBtdWx0aXBseQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIyIikgKiA0LCA4KQorICAgICAgICAgICAgIyBuZXh0X21pbnVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikubmV4dF9taW51cygpLCA5KQorICAgICAgICAgICAgIyBuZXh0X3BsdXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKS5uZXh0X3BsdXMoKSwgRGVjaW1hbCgnMkUrMScpKQorICAgICAgICAgICAgIyBub3JtYWxpemUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiLTEwIikubm9ybWFsaXplKCksIERlY2ltYWwoJy0xRSsxJykpCisgICAgICAgICAgICAjIG51bWJlcl9jbGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpLm51bWJlcl9jbGFzcygpLCAnK05vcm1hbCcpCisgICAgICAgICAgICAjIHBsdXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoK0RlY2ltYWwoIi0xIiksIC0xKQorICAgICAgICAgICAgIyByZW1haW5kZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKSAlIDcsIDMpCisgICAgICAgICAgICAjIHN1YnRyYWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikgLSA3LCAzKQorICAgICAgICAgICAgIyB0b19pbnRlZ3JhbF9leGFjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxLjEyMzQ1IikudG9faW50ZWdyYWxfZXhhY3QoKSwgMSkKKworICAgICAgICAgICAgIyBCb29sZWFuIGZ1bmN0aW9ucworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIjEiKS5pc19jYW5vbmljYWwoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCIxIikuaXNfZmluaXRlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiMSIpLmlzX2Zpbml0ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoInNuYW4iKS5pc19zbmFuKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiLTEiKS5pc19zaWduZWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCIwIikuaXNfemVybygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIjAiKS5pc196ZXJvKCkpCisKKyAgICAgICAgIyBDb3B5CisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDEwMDAwCisgICAgICAgICAgICB4ID0gMTIyOCAqKiAxNTIzCisgICAgICAgICAgICB5ID0gLURlY2ltYWwoeCkKKworICAgICAgICAgICAgeiA9IHkuY29weV9hYnMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6LCB4KQorCisgICAgICAgICAgICB6ID0geS5jb3B5X25lZ2F0ZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHosIHgpCisKKyAgICAgICAgICAgIHogPSB5LmNvcHlfc2lnbihEZWNpbWFsKDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6LCB4KQorCisgICAgZGVmIHRlc3RfZGl2bW9kKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBzZWxmLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoIjEwOTEyODM3MTI5IiksIDEwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEsIERlY2ltYWwoJzEwOTAxOTM1JykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIsIERlY2ltYWwoJzE5NCcpKQorCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoIk5hTiIpLCA3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuaXNfbmFuKCkgYW5kIHIuaXNfbmFuKCkpCisKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBGYWxzZQorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKCJOYU4iKSwgNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmlzX25hbigpIGFuZCByLmlzX25hbigpKQorCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKCJpbmYiKSwgRGVjaW1hbCgiaW5mIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19uYW4oKSBhbmQgci5pc19uYW4oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgiaW5mIiksIDEwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmlzX2luZmluaXRlKCkgYW5kIHIuaXNfbmFuKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoMCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19uYW4oKSBhbmQgci5pc19uYW4oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLnRyYXBzW0RpdmlzaW9uQnlaZXJvXSA9IEZhbHNlCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgxMSksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19pbmZpbml0ZSgpIGFuZCByLmlzX25hbigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5mbGFnc1tEaXZpc2lvbkJ5WmVyb10pCisKKyAgICBkZWYgdGVzdF9wb3dlcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEuMCIpICoqIDEwMCwgRGVjaW1hbCgnMS4wMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbUm91bmRlZF0pCisKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIGMuRW1heCA9IDEKKyAgICAgICAgICAgIGMuRW1pbiA9IC0xCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGMudHJhcHNbT3ZlcmZsb3ddID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDAwMCkgKiogRGVjaW1hbCgiMC41IiksIERlY2ltYWwoJ2luZicpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbT3ZlcmZsb3ddKQorCisgICAgZGVmIHRlc3RfcXVhbnRpemUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIGMuRW1heCA9IDEKKyAgICAgICAgICAgIGMuRW1pbiA9IC0xCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDk5KS5xdWFudGl6ZShEZWNpbWFsKCIxZTEiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmlzX25hbigpKQorCisgICAgZGVmIHRlc3RfcmFkaXgoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKworICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMSIpLnJhZGl4KCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmFkaXgoKSwgMTApCisKKyAgICBkZWYgdGVzdF9yb3Aoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGZvciBhdHRyIGluICgnX19yYWRkX18nLCAnX19yc3ViX18nLCAnX19ybXVsX18nLCAnX19ydHJ1ZWRpdl9fJywKKyAgICAgICAgICAgICAgICAgICAgICdfX3JkaXZtb2RfXycsICdfX3Jtb2RfXycsICdfX3JmbG9vcmRpdl9fJywgJ19fcnBvd19fJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoRGVjaW1hbCgiMSIpLCBhdHRyKSgieHl6IiksIE5vdEltcGxlbWVudGVkKQorCisgICAgZGVmIHRlc3Rfcm91bmQoc2VsZik6CisgICAgICAgICMgUHl0aG9uMyBiZWhhdmlvcjogcm91bmQoKSByZXR1cm5zIERlY2ltYWwKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorCisgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgYy5wcmVjID0gMjgKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCI5Ljk5IikuX19yb3VuZF9fKCkpLCAiMTAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCI5Ljk5ZS01IikuX19yb3VuZF9fKCkpLCAiMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIjEuMjM0NTY3ODkiKS5fX3JvdW5kX18oNSkpLCAiMS4yMzQ1NyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIjEuMjM0NSIpLl9fcm91bmRfXygxMCkpLCAiMS4yMzQ1MDAwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiMS4yMzQ1IikuX19yb3VuZF9fKC0xMCkpLCAiMEUrMTAiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgiMS4yMyIpLl9fcm91bmRfXywgIjUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sIDUsIDgpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfZGVjaW1hbChzZWxmKToKKyAgICAgICAgYyA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYy5jcmVhdGVfZGVjaW1hbCwgWyIlIl0pCisKKyAgICBkZWYgdGVzdF9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gOTk5OQorICAgICAgICAgICAgeCA9IERlY2ltYWwoMTIyMSoqMTI3MSkgLyAxMCoqMzkyMworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoeCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9faW50ZWdyYWwoKSwgMikKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgYy5wcmVjID0gMTAwMDAKKyAgICAgICAgeCA9IC0oMTE3MiAqKiAxNzEyKQorCisgICAgICAgIHkgPSBjLmNvcHlfYWJzKHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgLXgpCisKKyAgICAgICAgeSA9IGMuY29weV9uZWdhdGUoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCAteCkKKworICAgICAgICB5ID0gYy5jb3B5X3NpZ24oeCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCAteCkKKworY2xhc3MgQ0NvdmVyYWdlKENvdmVyYWdlKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb3ZlcmFnZShDb3ZlcmFnZSk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgUHlGdW5jdGlvbmFsaXR5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJFeHRyYSBmdW5jdGlvbmFsaXR5IGluIGRlY2ltYWwucHkiIiIKKworICAgIGRlZiB0ZXN0X3B5X3F1YW50aXplX3dhdGNoZXhwKHNlbGYpOgorICAgICAgICAjIHdhdGNoZXhwIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBQLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIGMuRW1heCA9IDEKKyAgICAgICAgICAgIGMuRW1pbiA9IC0xCisgICAgICAgICAgICB4ID0gRGVjaW1hbCg5OTk5OSkucXVhbnRpemUoRGVjaW1hbCgiMWUzIiksIHdhdGNoZXhwPUZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcxLjAwRSs1JykpCisKKyAgICBkZWYgdGVzdF9weV9hbHRlcm5hdGVfZm9ybWF0dGluZyhzZWxmKToKKyAgICAgICAgIyB0cmlwbGVzIGdpdmluZyBhIGZvcm1hdCwgYSBEZWNpbWFsLCBhbmQgdGhlIGV4cGVjdGVkIHJlc3VsdAorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IFAubG9jYWxjb250ZXh0CisKKyAgICAgICAgdGVzdF92YWx1ZXMgPSBbCisgICAgICAgICAgICAjIElzc3VlIDcwOTQ6IEFsdGVybmF0ZSBmb3JtYXR0aW5nIChzcGVjaWZpZWQgYnkgIykKKyAgICAgICAgICAgICgnLjBlJywgJzEuMCcsICcxZSswJyksCisgICAgICAgICAgICAoJyMuMGUnLCAnMS4wJywgJzEuZSswJyksCisgICAgICAgICAgICAoJy4wZicsICcxLjAnLCAnMScpLAorICAgICAgICAgICAgKCcjLjBmJywgJzEuMCcsICcxLicpLAorICAgICAgICAgICAgKCdnJywgJzEuMScsICcxLjEnKSwKKyAgICAgICAgICAgICgnI2cnLCAnMS4xJywgJzEuMScpLAorICAgICAgICAgICAgKCcuMGcnLCAnMScsICcxJyksCisgICAgICAgICAgICAoJyMuMGcnLCAnMScsICcxLicpLAorICAgICAgICAgICAgKCcuMCUnLCAnMS4wJywgJzEwMCUnKSwKKyAgICAgICAgICAgICgnIy4wJScsICcxLjAnLCAnMTAwLiUnKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZm9yIGZtdCwgZCwgcmVzdWx0IGluIHRlc3RfdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoRGVjaW1hbChkKSwgZm10KSwgcmVzdWx0KQorCitjbGFzcyBQeVdoaXRlYm94KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJXaGl0ZSBib3ggdGVzdGluZyBmb3IgZGVjaW1hbC5weSIiIgorCisgICAgZGVmIHRlc3RfcHlfZXhhY3RfcG93ZXIoc2VsZik6CisgICAgICAgICMgUmFyZWx5IGV4ZXJjaXNlZCBsaW5lcyBpbiBfcG93ZXJfZXhhY3QuCisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gUC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSA4CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgyKioxNikgKiogRGVjaW1hbCgiLTAuNSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzAuMDAzOTA2MjUnKSkKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoMioqMTYpICoqIERlY2ltYWwoIi0wLjYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcwLjAwMTI4ODU4MTknKSkKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoIjI1NmU3IikgKiogRGVjaW1hbCgiLTAuNSIpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDE1MjU4Nzg5MDYyNSkgKiogRGVjaW1hbCgnLTAuMDYyNScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoIjAuMiIpKQorCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiMTUyNTg3ODkwNjI1ZTciKSAqKiBEZWNpbWFsKCctMC4wNjI1JykKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoNSoqMjY1OSkgKiogRGVjaW1hbCgnLTAuMDYyNScpCisKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCIxNTI1ODc4OTA2MjUiKSAqKiBEZWNpbWFsKCctMC41JykKKyAgICAgICAgICAgIGMucHJlYyA9IDIwMQorICAgICAgICAgICAgeCA9IERlY2ltYWwoMioqNTc4KSAqKiBEZWNpbWFsKCItMC41IikKKworICAgIGRlZiB0ZXN0X3B5X2ltbXV0YWJpbGl0eV9vcGVyYXRpb25zKHNlbGYpOgogICAgICAgICAjIERvIG9wZXJhdGlvbnMgYW5kIGNoZWNrIHRoYXQgaXQgZGlkbid0IGNoYW5nZSBjaGFuZ2UgaW50ZXJuYWwgb2JqZWN0cy4KKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IFAuRGVmYXVsdENvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IFAuc2V0Y29udGV4dAorCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKKyAgICAgICAgYy50cmFwcyA9IGRpY3QoKHMsIDApIGZvciBzIGluIE9yZGVyZWRTaWduYWxzW1BdKQorICAgICAgICBzZXRjb250ZXh0KGMpCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCctMjVlNTUnKQogICAgICAgICBiMSA9IERlY2ltYWwoJy0yNWU1NScpCkBAIC0xNjU5LDcxMyArNDI3NSw3OTkgQEAKICAgICAgICAgY2hlY2tTYW1lRGVjKCJ0b19lbmdfc3RyaW5nIikKICAgICAgICAgY2hlY2tTYW1lRGVjKCJ0b19pbnRlZ3JhbCIpCiAKLSAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKLSAgICAgICAgIyBEaWZmZXJlbnQgYmVoYXZpb3VycyB3aGVuIHN1YmNsYXNzaW5nIERlY2ltYWwKKyAgICBkZWYgdGVzdF9weV9kZWNpbWFsX2lkKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCiAKLSAgICAgICAgY2xhc3MgTXlEZWNpbWFsKERlY2ltYWwpOgotICAgICAgICAgICAgcGFzcworICAgICAgICBkID0gRGVjaW1hbCg0NSkKKyAgICAgICAgZSA9IERlY2ltYWwoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICc0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogCi0gICAgICAgIGQxID0gTXlEZWNpbWFsKDEpCi0gICAgICAgIGQyID0gTXlEZWNpbWFsKDIpCi0gICAgICAgIGQgPSBkMSArIGQyCi0gICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgRGVjaW1hbCkKKyAgICBkZWYgdGVzdF9weV9yZXNjYWxlKHNlbGYpOgorICAgICAgICAjIENvdmVyYWdlCisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgUk9VTkRfVVAgPSBQLlJPVU5EX1VQCisgICAgICAgIGxvY2FsY29udGV4dCA9IFAubG9jYWxjb250ZXh0CiAKLSAgICAgICAgZCA9IGQxLm1heChkMikKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBEZWNpbWFsKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiTmFOIikuX3Jlc2NhbGUoMywgUk9VTkRfVVApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5pc19uYW4oKSkKIAotICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2NvbnRleHQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcmVzdWx0cyB3aGVuIGNvbnRleHQgZ2l2ZW4gaW1wbGljaXRseS4gIChJc3N1ZSAyNDc4KQotICAgICAgICBjID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoMCkuc3FydCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoYy5zcXJ0KERlY2ltYWwoMCkpKSkKKyAgICBkZWYgdGVzdF9weV9fcm91bmQoc2VsZik6CisgICAgICAgICMgQ292ZXJhZ2UKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBST1VORF9VUCA9IFAuUk9VTkRfVVAKIAotICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25zX2Zyb21faW50KHNlbGYpOgotICAgICAgICAjIENoZWNrIHRoYXQgbWV0aG9kcyB0YWtpbmcgYSBzZWNvbmQgRGVjaW1hbCBhcmd1bWVudCB3aWxsCi0gICAgICAgICMgYWx3YXlzIGFjY2VwdCBhbiBpbnRlZ2VyIGluIHBsYWNlIG9mIGEgRGVjaW1hbC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmUoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlKERlY2ltYWwoMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV9zaWduYWwoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWwoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsKERlY2ltYWwoMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV90b3RhbF9tYWcoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZCgxMDAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZChEZWNpbWFsKDEwMDEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX29yKDEwMDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfb3IoRGVjaW1hbCgxMDAxKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoMTAwMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoRGVjaW1hbCgxMDAxKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1heCgxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXgoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWF4X21hZygxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXhfbWFnKERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1pbigxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW4oRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWluX21hZygxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW5fbWFnKERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKDEyMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjM0KS5xdWFudGl6ZSgxMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzNCkucXVhbnRpemUoRGVjaW1hbCgxMDApKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDc2OCkucmVtYWluZGVyX25lYXIoMTIzNCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg3NjgpLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMTIzNCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzKS5yb3RhdGUoMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjMpLnJvdGF0ZShEZWNpbWFsKDEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bSgxMDAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEwMDApKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCc5LjEyMycpLnNjYWxlYigtMTAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCc5LjEyMycpLnNjYWxlYihEZWNpbWFsKC0xMDApKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQ1Nikuc2hpZnQoLTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNDU2KS5zaGlmdChEZWNpbWFsKC0xKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwoIjMuMTIzNCIpLl9yb3VuZCwgMCwgUk9VTkRfVVApCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCA2NyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoNDUsIDY3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYSg0NSwgRGVjaW1hbCg2NykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKK2NsYXNzIENGdW5jdGlvbmFsaXR5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJFeHRyYSBmdW5jdGlvbmFsaXR5IGluIF9kZWNpbWFsIiIiCiAKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2NfaWVlZV9jb250ZXh0KHNlbGYpOgorICAgICAgICAjIGlzc3VlIDg3ODY6IEFkZCBzdXBwb3J0IGZvciBJRUVFIDc1NCBjb250ZXh0cyB0byBkZWNpbWFsIG1vZHVsZS4KKyAgICAgICAgSUVFRUNvbnRleHQgPSBDLklFRUVDb250ZXh0CisgICAgICAgIERFQ0lNQUwzMiA9IEMuREVDSU1BTDMyCisgICAgICAgIERFQ0lNQUw2NCA9IEMuREVDSU1BTDY0CisgICAgICAgIERFQ0lNQUwxMjggPSBDLkRFQ0lNQUwxMjgKIAotY2xhc3MgRGVjaW1hbFB5dGhvbkFQSXRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgZGVmIGFzc2VydF9yZXN0KHNlbGYsIGNvbnRleHQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LmNsYW1wLCAxKQorICAgICAgICAgICAgYXNzZXJ0X3NpZ25hbHMoc2VsZiwgY29udGV4dCwgJ3RyYXBzJywgW10pCisgICAgICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBjb250ZXh0LCAnZmxhZ3MnLCBbXSkKIAotICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGVjaW1hbCwgbnVtYmVycy5OdW1iZXIpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoRGVjaW1hbCwgbnVtYmVycy5SZWFsKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKERlY2ltYWwoMCksIG51bWJlcnMuTnVtYmVyKQotICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoRGVjaW1hbCgwKSwgbnVtYmVycy5SZWFsKQorICAgICAgICBjID0gSUVFRUNvbnRleHQoREVDSU1BTDMyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDk2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTk1KQorICAgICAgICBhc3NlcnRfcmVzdChzZWxmLCBjKQogCi0gICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotICAgICAgICBkID0gRGVjaW1hbCgnLTMuMTQxNTkwMDAwJykKLSAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhkKQotICAgICAgICBlID0gcGlja2xlLmxvYWRzKHApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKKyAgICAgICAgYyA9IElFRUVDb250ZXh0KERFQ0lNQUw2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgMzg0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTM4MykKKyAgICAgICAgYXNzZXJ0X3Jlc3Qoc2VsZiwgYykKIAotICAgIGRlZiB0ZXN0X2ludChzZWxmKToKLSAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTI1MCwgMjUwKToKLSAgICAgICAgICAgIHMgPSAnJTAuMmYnICUgKHggLyAxMDAuMCkKLSAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgZm9yIGZsb2F0cwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoRGVjaW1hbChzKSksIGludChmbG9hdChzKSkpCi0gICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIHRvX2ludGVncmFsIGluIHRoZSBST1VORF9ET1dOIG1vZGUKLSAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCi0gICAgICAgICAgICByID0gZC50b19pbnRlZ3JhbChST1VORF9ET1dOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKGludChkKSksIHIpCisgICAgICAgIGMgPSBJRUVFQ29udGV4dChERUNJTUFMMTI4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgMzQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCA2MTQ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTYxNDMpCisgICAgICAgIGFzc2VydF9yZXN0KHNlbGYsIGMpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBEZWNpbWFsKCctbmFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgRGVjaW1hbCgnc25hbicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIERlY2ltYWwoJ2luZicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIERlY2ltYWwoJy1pbmYnKSkKKyAgICAgICAgIyBJbnZhbGlkIHZhbHVlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBJRUVFQ29udGV4dCwgMioqNjMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIElFRUVDb250ZXh0LCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgSUVFRUNvbnRleHQsIDEwMjQpCiAKLSAgICBkZWYgdGVzdF90cnVuYyhzZWxmKToKLSAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTI1MCwgMjUwKToKLSAgICAgICAgICAgIHMgPSAnJTAuMmYnICUgKHggLyAxMDAuMCkKLSAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgZm9yIGZsb2F0cwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoRGVjaW1hbChzKSksIGludChmbG9hdChzKSkpCi0gICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIHRvX2ludGVncmFsIGluIHRoZSBST1VORF9ET1dOIG1vZGUKLSAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCi0gICAgICAgICAgICByID0gZC50b19pbnRlZ3JhbChST1VORF9ET1dOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKG1hdGgudHJ1bmMoZCkpLCByKQorICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY19jb250ZXh0KHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CiAKLSAgICBkZWYgdGVzdF9mcm9tX2Zsb2F0KHNlbGYpOgorICAgICAgICBjID0gQ29udGV4dChmbGFncz1DLkRlY0NsYW1wZWQsIHRyYXBzPUMuRGVjUm91bmRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9mbGFncywgQy5EZWNDbGFtcGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX3RyYXBzLCBDLkRlY1JvdW5kZWQpCiAKLSAgICAgICAgY2xhc3MgIE15RGVjaW1hbChEZWNpbWFsKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICByID0gTXlEZWNpbWFsLmZyb21fZmxvYXQoMC4xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUociksIE15RGVjaW1hbCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIociksCi0gICAgICAgICAgICAgICAgJzAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMTI1NzgyNzAyMTE4MTU4MzQwNDU0MTAxNTYyNScpCi0gICAgICAgIGJpZ2ludCA9IDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTXlEZWNpbWFsLmZyb21fZmxvYXQoYmlnaW50KSwgTXlEZWNpbWFsKGJpZ2ludCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnbmFuJykpLmlzX3FuYW4oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSkuaXNfaW5maW5pdGUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCctaW5mJykpLmlzX2luZmluaXRlKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCdOYU4nKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCdJbmZpbml0eScpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJy1pbmYnKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCctSW5maW5pdHknKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTXlEZWNpbWFsLmZyb21fZmxvYXQsICdhYmMnKQotICAgICAgICBmb3IgaSBpbiByYW5nZSgyMDApOgotICAgICAgICAgICAgeCA9IHJhbmRvbS5leHBvdmFyaWF0ZSgwLjAxKSAqIChyYW5kb20ucmFuZG9tKCkgKiAyLjAgLSAxLjApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGZsb2F0KE15RGVjaW1hbC5mcm9tX2Zsb2F0KHgpKSkgIyByb3VuZHRyaXAKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoc2VsZik6Ci0gICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgcm91bmRpbmc9Uk9VTkRfRE9XTikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChtYXRoLnBpKSwKLSAgICAgICAgICAgIERlY2ltYWwoJzMuMTQxNScpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jb25zdGFudHMoc2VsZik6CisgICAgICAgICMgQ29uZGl0aW9uIGZsYWdzCisgICAgICAgIGNvbmQgPSAoCisgICAgICAgICAgICBDLkRlY0NsYW1wZWQsIEMuRGVjQ29udmVyc2lvblN5bnRheCwgQy5EZWNEaXZpc2lvbkJ5WmVybywKKyAgICAgICAgICAgIEMuRGVjRGl2aXNpb25JbXBvc3NpYmxlLCBDLkRlY0RpdmlzaW9uVW5kZWZpbmVkLAorICAgICAgICAgICAgQy5EZWNGcHVFcnJvciwgQy5EZWNJbmV4YWN0LCBDLkRlY0ludmFsaWRDb250ZXh0LAorICAgICAgICAgICAgQy5EZWNJbnZhbGlkT3BlcmF0aW9uLCBDLkRlY01hbGxvY0Vycm9yLAorICAgICAgICAgICAgQy5EZWNGbG9hdE9wZXJhdGlvbiwgQy5EZWNPdmVyZmxvdywgQy5EZWNSb3VuZGVkLAorICAgICAgICAgICAgQy5EZWNTdWJub3JtYWwsIEMuRGVjVW5kZXJmbG93CiAgICAgICAgICkKLSAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9VUCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChtYXRoLnBpKSwKLSAgICAgICAgICAgIERlY2ltYWwoJzMuMTQxNicpCi0gICAgICAgICkKLSAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCB0cmFwcz1bSW5leGFjdF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgSW5leGFjdCwKLSAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCwKLSAgICAgICAgICAgIG1hdGgucGkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KC0wLjApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnLTAnKSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMS4wKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkRlY2ltYWwoJzEnKSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMTApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnMTAnKSIpCiAKLWNsYXNzIENvbnRleHRBUEl0ZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICMgSUVFRUNvbnRleHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLkRFQ0lNQUwzMiwgMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5ERUNJTUFMNjQsIDY0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuREVDSU1BTDEyOCwgMTI4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuSUVFRV9DT05URVhUX01BWF9CSVRTLCA1MTIpCiAKLSAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgICMgUm91bmRpbmcgbW9kZXMKKyAgICAgICAgZm9yIGksIHYgaW4gZW51bWVyYXRlKFJvdW5kaW5nTW9kZXNbQ10pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuUk9VTkRfVFJVTkMsIDgpCisKKyAgICAgICAgIyBDb25kaXRpb25zCisgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShjb25kKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMTw8aSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNDb252ZXJzaW9uU3ludGF4fAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjRGl2aXNpb25JbXBvc3NpYmxlfAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjRGl2aXNpb25VbmRlZmluZWR8CisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNGcHVFcnJvcnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0ludmFsaWRDb250ZXh0fAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjSW52YWxpZE9wZXJhdGlvbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY01hbGxvY0Vycm9yKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5EZWNFcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0RpdmlzaW9uQnlaZXJvKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5EZWNUcmFwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0Vycm9yc3xDLkRlY092ZXJmbG93fEMuRGVjVW5kZXJmbG93KQorCitjbGFzcyBDV2hpdGVib3godW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIldoaXRlYm94IHRlc3RpbmcgZm9yIF9kZWNpbWFsIiIiCisKKyAgICBkZWYgdGVzdF9iaWdudW0oc2VsZik6CisgICAgICAgICMgTm90IGV4YWN0bHkgd2hpdGVib3gsIGJ1dCB0b28gc2xvdyB3aXRoIHB5ZGVjaW1hbC4KKworICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisKKyAgICAgICAgYjEgPSAxMCoqMzUKKyAgICAgICAgYjIgPSAxMCoqMzYKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMTAwMDAwMAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgYSA9IHJhbmRvbS5yYW5kcmFuZ2UoYjEsIGIyKQorICAgICAgICAgICAgICAgIGIgPSByYW5kb20ucmFuZHJhbmdlKDEwMDAsIDEyMDApCisgICAgICAgICAgICAgICAgeCA9IGEgKiogYgorICAgICAgICAgICAgICAgIHkgPSBEZWNpbWFsKGEpICoqIERlY2ltYWwoYikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbnN0cnVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDLkRlY2ltYWwsIDksICJ4eXoiKQorCisgICAgZGVmIHRlc3RfY19pbnB1dF9yZXN0cmljdGlvbihzZWxmKToKKyAgICAgICAgIyBUb28gbGFyZ2UgZm9yIF9kZWNpbWFsIHRvIGJlIGNvbnZlcnRlZCBleGFjdGx5CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoQ29udGV4dCgpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMWU5OTk5OTk5OTk5OTk5OTk5OTk5IikKKworICAgIGRlZiB0ZXN0X2NfY29udGV4dF9yZXByKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCBpcyBfZGVjaW1hbC1vbmx5IGJlY2F1c2UgZmxhZ3MgYXJlIG5vdCBwcmludGVkCisgICAgICAgICMgaW4gdGhlIHNhbWUgb3JkZXIuCisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gQy5EZWZhdWx0Q29udGV4dAorICAgICAgICBGbG9hdE9wZXJhdGlvbiA9IEMuRmxvYXRPcGVyYXRpb24KKyAgICAgICAgUk9VTkRfSEFMRl9ET1dOID0gQy5ST1VORF9IQUxGX0RPV04KKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgYy5wcmVjID0gNDI1MDAwMDAwCisgICAgICAgIGMuRW1heCA9IDQyNTAwMDAwMAorICAgICAgICBjLkVtaW4gPSAtNDI1MDAwMDAwCisgICAgICAgIGMucm91bmRpbmcgPSBST1VORF9IQUxGX0RPV04KKyAgICAgICAgYy5jYXBpdGFscyA9IDAKKyAgICAgICAgYy5jbGFtcCA9IDEKKyAgICAgICAgZm9yIHNpZyBpbiBPcmRlcmVkU2lnbmFsc1tDXToKKyAgICAgICAgICAgIGMuZmxhZ3Nbc2lnXSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbc2lnXSA9IFRydWUKKyAgICAgICAgYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorCisgICAgICAgIHMgPSBjLl9fcmVwcl9fKCkKKyAgICAgICAgdCA9ICJDb250ZXh0KHByZWM9NDI1MDAwMDAwLCByb3VuZGluZz1ST1VORF9IQUxGX0RPV04sICIgXAorICAgICAgICAgICAgIkVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsIGNhcGl0YWxzPTAsIGNsYW1wPTEsICIgXAorICAgICAgICAgICAgImZsYWdzPVtDbGFtcGVkLCBJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgSW5leGFjdCwgIiBcCisgICAgICAgICAgICAgICAgICAgIkZsb2F0T3BlcmF0aW9uLCBPdmVyZmxvdywgUm91bmRlZCwgU3Vibm9ybWFsLCBVbmRlcmZsb3ddLCAiIFwKKyAgICAgICAgICAgICJ0cmFwcz1bQ2xhbXBlZCwgSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIEluZXhhY3QsICIgXAorICAgICAgICAgICAgICAgICAgICJGbG9hdE9wZXJhdGlvbiwgT3ZlcmZsb3csIFJvdW5kZWQsIFN1Ym5vcm1hbCwgVW5kZXJmbG93XSkiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgdCkKKworICAgIGRlZiB0ZXN0X2NfY29udGV4dF9lcnJvcnMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBDLkNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IEMuT3ZlcmZsb3cKKyAgICAgICAgRmxvYXRPcGVyYXRpb24gPSBDLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBDLmdldGNvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IEMuc2V0Y29udGV4dAorICAgICAgICBIQVZFX0NPTkZJR182NCA9IChDLk1BWF9QUkVDID4gNDI1MDAwMDAwKQorCiAgICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpCi0gICAgICAgIGZvciBrIGluIHZhcnMoYyk6Ci0gICAgICAgICAgICB2MSA9IHZhcnMoYylba10KLSAgICAgICAgICAgIHYyID0gdmFycyhlKVtrXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2MSwgdjIpCiAKLSAgICBkZWYgdGVzdF9lcXVhbGl0eV93aXRoX290aGVyX3R5cGVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsIERlY2ltYWwoMTApLCAoMSwyKSwge31dKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsICgxLDIpLCB7fV0pCisgICAgICAgICMgU2lnbmFsRGljdDogaW5wdXQgdmFsaWRhdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy5mbGFncy5fX3NldGl0ZW1fXywgODAxLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy50cmFwcy5fX3NldGl0ZW1fXywgODAxLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLmZsYWdzLl9fZGVsaXRlbV9fLCBPdmVyZmxvdykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYy50cmFwcy5fX2RlbGl0ZW1fXywgSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAnZmxhZ3MnLCBbJ3gnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCd0cmFwcycsIFsneSddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2V0YXR0ciwgYywgJ2ZsYWdzJywgezA6MX0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLCB7MDoxfSkKIAotICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6Ci0gICAgICAgICMgQWxsIGNvcGllcyBzaG91bGQgYmUgZGVlcAorICAgICAgICAjIFRlc3QgYXNzaWdubWVudCBmcm9tIGEgc2lnbmFsIGRpY3Qgd2l0aCB0aGUgY29ycmVjdCBsZW5ndGggYnV0CisgICAgICAgICMgb25lIGludmFsaWQga2V5LgorICAgICAgICBkID0gYy5mbGFncy5jb3B5KCkKKyAgICAgICAgZGVsIGRbRmxvYXRPcGVyYXRpb25dCisgICAgICAgIGRbIlhZWiJdID0gOTEyODM3MTkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNldGF0dHIsIGMsICdmbGFncycsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLCBkKQorCisgICAgICAgICMgSW5wdXQgY29ybmVyIGNhc2VzCisgICAgICAgIGludF9tYXggPSAyKio2My0xIGlmIEhBVkVfQ09ORklHXzY0IGVsc2UgMioqMzEtMQorICAgICAgICBndF9tYXhfZW1heCA9IDEwKioxOCBpZiBIQVZFX0NPTkZJR182NCBlbHNlIDEwKio5CisKKyAgICAgICAgIyBwcmVjLCBFbWF4LCBFbWluCisgICAgICAgIGZvciBhdHRyIGluIFsncHJlYycsICdFbWF4J106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ0VtaW4nLCAtZ3RfbWF4X2VtYXgpCisKKyAgICAgICAgIyBwcmVjLCBFbWF4LCBFbWluIGluIGNvbnRleHQgY29uc3RydWN0b3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgcHJlYz1ndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgRW1heD1ndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgRW1pbj0tZ3RfbWF4X2VtYXgpCisKKyAgICAgICAgIyBPdmVyZmxvdyBpbiBjb252ZXJzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIHByZWM9aW50X21heCsxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCBFbWF4PWludF9tYXgrMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgQ29udGV4dCwgRW1pbj0taW50X21heC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCByb3VuZGluZz1pbnRfbWF4KzEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIGNsYW1wPWludF9tYXgrMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgQ29udGV4dCwgY2FwaXRhbHM9aW50X21heCsxKQorCisgICAgICAgICMgT3ZlcmZsb3dFcnJvciwgZ2VuZXJhbCBWYWx1ZUVycm9yCisgICAgICAgIGZvciBhdHRyIGluICgncHJlYycsICdFbWluJywgJ0VtYXgnLCAnY2FwaXRhbHMnLCAnY2xhbXAnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIGludF9tYXgrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTIpCisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTEpCisKKyAgICAgICAgIyBPdmVyZmxvd0Vycm9yLCBnZW5lcmFsIFR5cGVFcnJvcgorICAgICAgICBmb3IgYXR0ciBpbiAoJ3JvdW5kaW5nJywpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgaW50X21heCsxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLWludF9tYXgtMikKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgaW50X21heCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTEpCisKKyAgICAgICAgIyBPdmVyZmxvd0Vycm9yOiBfdW5zYWZlX3NldHByZWMsIF91bnNhZmVfc2V0ZW1pbiwgX3Vuc2FmZV9zZXRlbWF4CisgICAgICAgIGlmIEMuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRwcmVjJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtYXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9tYXgrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1pbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludF9tYXgtMikKKworICAgICAgICAjIFZhbHVlRXJyb3I6IF91bnNhZmVfc2V0cHJlYywgX3Vuc2FmZV9zZXRlbWluLCBfdW5zYWZlX3NldGVtYXgKKyAgICAgICAgaWYgQy5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldHByZWMnKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0cHJlYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3MDAwMDAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1heCcpLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1heCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3MDAwMDAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1pbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEwNzAwMDAwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtaW4nKSwgMSkKKworICAgICAgICAjIGNhcGl0YWxzLCBjbGFtcAorICAgICAgICBmb3IgYXR0ciBpbiBbJ2NhcGl0YWxzJywgJ2NsYW1wJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIFsxLDIsM10pCisgICAgICAgICAgICBpZiBIQVZFX0NPTkZJR182NDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAyKiozMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAyKiozMisxKQorCisgICAgICAgICMgSW52YWxpZCBsb2NhbCBjb250ZXh0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXhlYywgJ3dpdGggbG9jYWxjb250ZXh0KCJ4eXoiKTogcGFzcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscygpKQorCisgICAgICAgICMgc2V0Y29udGV4dAorICAgICAgICBzYXZlZF9jb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0Y29udGV4dCwgInh5eiIpCisgICAgICAgIHNldGNvbnRleHQoc2F2ZWRfY29udGV4dCkKKworICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY19jb250ZXh0X2Vycm9yc19leHRyYShzZWxmKToKKyAgICAgICAgQ29udGV4dCA9IEMuQ29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIE92ZXJmbG93ID0gQy5PdmVyZmxvdworICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gQy5nZXRjb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBDLnNldGNvbnRleHQKKyAgICAgICAgSEFWRV9DT05GSUdfNjQgPSAoQy5NQVhfUFJFQyA+IDQyNTAwMDAwMCkKKwogICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHkoKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMpLCBpZChkKSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjLmZsYWdzKSwgaWQoZC5mbGFncykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYy50cmFwcyksIGlkKGQudHJhcHMpKQogCi0gICAgZGVmIHRlc3RfX2NsYW1wKHNlbGYpOgotICAgICAgICAjIEluIFB5dGhvbiAzLjIsIHRoZSBwcml2YXRlIGF0dHJpYnV0ZSBgX2NsYW1wYCB3YXMgbWFkZQotICAgICAgICAjIHB1YmxpYyAoaXNzdWUgODU0MCksIHdpdGggdGhlIG9sZCBgX2NsYW1wYCBiZWNvbWluZyBhCi0gICAgICAgICMgcHJvcGVydHkgd3JhcHBpbmcgYGNsYW1wYC4gIEZvciB0aGUgZHVyYXRpb24gb2YgUHl0aG9uIDMuMgotICAgICAgICAjIG9ubHksIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGdldHRhYmxlL3NldHRhYmxlIHZpYSBib3RoCi0gICAgICAgICMgYGNsYW1wYCBhbmQgYF9jbGFtcGA7IGluIFB5dGhvbiAzLjMsIGBfY2xhbXBgIHNob3VsZCBiZQotICAgICAgICAjIHJlbW92ZWQuCi0gICAgICAgIGMgPSBDb250ZXh0KGNsYW1wID0gMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAwKQorICAgICAgICAjIElucHV0IGNvcm5lciBjYXNlcworICAgICAgICBpbnRfbWF4ID0gMioqNjMtMSBpZiBIQVZFX0NPTkZJR182NCBlbHNlIDIqKjMxLTEKIAotICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgICAgICBjLl9jbGFtcCA9IDEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAxKQotICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2NsYW1wLCAxKQorICAgICAgICAjIE92ZXJmbG93RXJyb3IsIGdlbmVyYWwgVmFsdWVFcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgaW50X21heCsxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgLWludF9tYXgtMikKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgaW50X21heCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAtaW50X21heC0xKQorCisgICAgICAgICMgT3ZlcmZsb3dFcnJvciwgZ2VuZXJhbCBUeXBlRXJyb3IKKyAgICAgICAgZm9yIGF0dHIgaW4gKCdfZmxhZ3MnLCAnX3RyYXBzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0yKQorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLWludF9tYXgtMSkKKworICAgICAgICAjIF9hbGxjcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCBbMSwyLDNdKQorICAgICAgICBpZiBIQVZFX0NPTkZJR182NDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAyKiozMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAyKiozMisxKQorCisgICAgICAgICMgX2ZsYWdzLCBfdHJhcHMKKyAgICAgICAgZm9yIGF0dHIgaW4gWydfZmxhZ3MnLCAnX3RyYXBzJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIDk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgJ3gnKQorCisgICAgZGVmIHRlc3RfY192YWxpZF9jb250ZXh0KHNlbGYpOgorICAgICAgICAjIFRoZXNlIHRlc3RzIGFyZSBmb3IgY29kZSBjb3ZlcmFnZSBpbiBfZGVjaW1hbC4KKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBDLkRlZmF1bHRDb250ZXh0CisgICAgICAgIFJPVU5EX0hBTEZfVVAgPSBDLlJPVU5EX0hBTEZfVVAKKyAgICAgICAgQ2xhbXBlZCA9IEMuQ2xhbXBlZAorICAgICAgICBVbmRlcmZsb3cgPSBDLlVuZGVyZmxvdworICAgICAgICBJbmV4YWN0ID0gQy5JbmV4YWN0CisgICAgICAgIFJvdW5kZWQgPSBDLlJvdW5kZWQKKyAgICAgICAgU3Vibm9ybWFsID0gQy5TdWJub3JtYWwKKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgIyBFeGVyY2lzZSBhbGwgZ2V0dGVycyBhbmQgc2V0dGVycworICAgICAgICBjLnByZWMgPSAzNAorICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfSEFMRl9VUAorICAgICAgICBjLkVtYXggPSAzMDAwCisgICAgICAgIGMuRW1pbiA9IC0zMDAwCisgICAgICAgIGMuY2FwaXRhbHMgPSAxCiAgICAgICAgIGMuY2xhbXAgPSAwCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDM0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIFJPVU5EX0hBTEZfVVApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtMzAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDMwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jYXBpdGFscywgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAwKQotICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2NsYW1wLCAwKQogCi0gICAgZGVmIHRlc3RfYWJzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmFicyhEZWNpbWFsKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFicygtMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5hYnMsICctMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FdGlueSgpLCAtMzAzMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkV0b3AoKSwgMjk2NykKIAotICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5hZGQoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFkZCwgJzEnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuYWRkLCAxLCAnMScpCisgICAgICAgICMgRXhlcmNpc2UgYWxsIHVuc2FmZSBzZXR0ZXJzCisgICAgICAgIGlmIEMuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgYy5fdW5zYWZlX3NldHByZWMoOTk5OTk5OTk5KQorICAgICAgICAgICAgYy5fdW5zYWZlX3NldGVtYXgoOTk5OTk5OTk5KQorICAgICAgICAgICAgYy5fdW5zYWZlX3NldGVtaW4oLTk5OTk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCA5OTk5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgOTk5OTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIC05OTk5OTk5OTkpCiAKLSAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvbXBhcmUoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZSgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsIDEsICcxJykKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2NfdmFsaWRfY29udGV4dF9leHRyYShzZWxmKToKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBDLkRlZmF1bHRDb250ZXh0CiAKLSAgICBkZWYgdGVzdF9jb21wYXJlX3NpZ25hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV9zaWduYWwsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfc2lnbmFsLCAxLCAnMScpCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9hbGxjciwgMSkKKyAgICAgICAgYy5fYWxsY3IgPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fYWxsY3IsIDApCiAKLSAgICBkZWYgdGVzdF9jb21wYXJlX3RvdGFsKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvbXBhcmVfdG90YWwoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbCgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsIDEsICcxJykKKyAgICBkZWYgdGVzdF9jX3JvdW5kKHNlbGYpOgorICAgICAgICAjIFJlc3RyaWN0ZWQgaW5wdXQuCisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBNQVhfRU1BWCA9IEMuTUFYX0VNQVgKKyAgICAgICAgTUlOX0VUSU5ZID0gQy5NSU5fRVRJTlkKKyAgICAgICAgaW50X21heCA9IDIqKjYzLTEgaWYgQy5NQVhfUFJFQyA+IDQyNTAwMDAwMCBlbHNlIDIqKjMxLTEKIAotICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG90YWxfbWFnKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvbXBhcmVfdG90YWxfbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZygxLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoMSwgRGVjaW1hbCgxKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsX21hZywgJzEnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV90b3RhbF9tYWcsIDEsICcxJykKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtaW50X21heC0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCgiMS4yMyIpLl9fcm91bmRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9tYXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KE1BWF9FTUFYKzEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQy5JbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludChNSU5fRVRJTlktMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBEZWNpbWFsKCIxLjIzIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludF9tYXgtMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KzEpCiAKLSAgICBkZWYgdGVzdF9jb3B5X2FicyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb3B5X2FicyhEZWNpbWFsKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfYWJzKC0xKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfYWJzLCAnLTEnKQorICAgIGRlZiB0ZXN0X2NfZm9ybWF0KHNlbGYpOgorICAgICAgICAjIFJlc3RyaWN0ZWQgaW5wdXQKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIFJvdW5kZWQgPSBDLlJvdW5kZWQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKyAgICAgICAgSEFWRV9DT05GSUdfNjQgPSAoQy5NQVhfUFJFQyA+IDQyNTAwMDAwMCkKIAotICAgIGRlZiB0ZXN0X2NvcHlfZGVjaW1hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb3B5X2RlY2ltYWwoRGVjaW1hbCgtMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X2RlY2ltYWwoLTEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9kZWNpbWFsLCAnLTEnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgIj0xMC4xMCIsIFtdLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgIj0xMC4xMCIsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5fX2Zvcm1hdF9fLCBbXSkKIAotICAgIGRlZiB0ZXN0X2NvcHlfbmVnYXRlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfbmVnYXRlKERlY2ltYWwoLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9uZWdhdGUoLTEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9uZWdhdGUsICctMScpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBjLnRyYXBzW1JvdW5kZWRdID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCgxKS5fX2Zvcm1hdF9fLCAiPD49MTAuMTAiKQorICAgICAgICAgICAgbWF4c2l6ZSA9IDIqKjYzLTEgaWYgSEFWRV9DT05GSUdfNjQgZWxzZSAyKiozMS0xCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxLjIzNDU2Nzg5IikuX19mb3JtYXRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9JWQuMSIgJSBtYXhzaXplKQogCi0gICAgZGVmIHRlc3RfY29weV9zaWduKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfc2lnbihEZWNpbWFsKDEpLCBEZWNpbWFsKC0yKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbigxLCAtMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgLTIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKDEsIERlY2ltYWwoLTIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgJzEnLCAtMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgMSwgJy0yJykKKyAgICBkZWYgdGVzdF9jX2ludGVncmFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIEluZXhhY3QgPSBDLkluZXhhY3QKKyAgICAgICAgUk9VTkRfVVAgPSBDLlJPVU5EX1VQCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CiAKLSAgICBkZWYgdGVzdF9kaXZpZGUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZGl2aWRlKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGUsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZSwgMSwgJzInKQorICAgICAgICB4ID0gRGVjaW1hbCgxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2ludGVncmFsKCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWwsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbCwgMTAsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsLCAxMCkKIAotICAgIGRlZiB0ZXN0X2RpdmlkZV9pbnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZGl2aWRlX2ludChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgMSwgJzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9faW50ZWdyYWxfdmFsdWUoKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF92YWx1ZSwgJzEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX3ZhbHVlLCAxMCwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfdmFsdWUsIDEwKQogCi0gICAgZGVmIHRlc3RfZGl2bW9kKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmRpdm1vZChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZtb2QsIDEsICcyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2ludGVncmFsX2V4YWN0KCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfZXhhY3QsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF9leGFjdCwgMTAsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX2V4YWN0LCAxMCkKIAotICAgIGRlZiB0ZXN0X2V4cChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5leHAoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leHAoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZXhwLCAnMTAnKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkuOSIpLnRvX2ludGVncmFsX3ZhbHVlKFJPVU5EX1VQKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKSkKIAotICAgIGRlZiB0ZXN0X2ZtYShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5mbWEoRGVjaW1hbCgyKSwgRGVjaW1hbCgzKSwgRGVjaW1hbCg0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCAzLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCBEZWNpbWFsKDMpLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCBEZWNpbWFsKDQpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCBEZWNpbWFsKDMpLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgJzInLCAzLCA0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAyLCAnMycsIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsIDIsIDMsICc0JykKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OS45IikudG9faW50ZWdyYWxfZXhhY3QoUk9VTkRfVVApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpKQogCi0gICAgZGVmIHRlc3RfaXNfZmluaXRlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX2Zpbml0ZShEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX2Zpbml0ZSgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19maW5pdGUsICcxMCcpCisgICAgICAgICAgICBjLnRyYXBzW0luZXhhY3RdID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5leGFjdCwgRGVjaW1hbCgiOTk5LjkiKS50b19pbnRlZ3JhbF9leGFjdCwgUk9VTkRfVVApCiAKLSAgICBkZWYgdGVzdF9pc19pbmZpbml0ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19pbmZpbml0ZShEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX2luZmluaXRlKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX2luZmluaXRlLCAnMTAnKQorICAgIGRlZiB0ZXN0X2NfZnVuY3Moc2VsZik6CisgICAgICAgICMgSW52YWxpZCBhcmd1bWVudHMKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gQy5EaXZpc2lvbkJ5WmVybworICAgICAgICBST1VORF9VUCA9IEMuUk9VTkRfVVAKKyAgICAgICAgZ2V0Y29udGV4dCA9IEMuZ2V0Y29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAogCi0gICAgZGVmIHRlc3RfaXNfbmFuKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX25hbihEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX25hbigxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19uYW4sICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnOS45OWUxMCcpLnRvX2VuZ19zdHJpbmcoKSwgJzk5LjlFKzknKQogCi0gICAgZGVmIHRlc3RfaXNfbm9ybWFsKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX25vcm1hbChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX25vcm1hbCgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19ub3JtYWwsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG93LCBEZWNpbWFsKDEpLCAyLCAiMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCg5KS5udW1iZXJfY2xhc3MsICJ4IiwgInkiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoOSkuc2FtZV9xdWFudHVtLCAzLCAieCIsICJ5IikKIAotICAgIGRlZiB0ZXN0X2lzX3FuYW4oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfcW5hbihEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3FuYW4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfcW5hbiwgJzEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICBEZWNpbWFsKCIxLjIzNDU2Nzg5IikucXVhbnRpemUsIERlY2ltYWwoJzFlLTEwMDAwMCcpLCBbXQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLnF1YW50aXplLCBEZWNpbWFsKCcxZS0xMDAwMDAnKSwgZ2V0Y29udGV4dCgpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICBEZWNpbWFsKCIxLjIzNDU2Nzg5IikucXVhbnRpemUsIERlY2ltYWwoJzFlLTEwMDAwMCcpLCAxMAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLnF1YW50aXplLCBEZWNpbWFsKCcxZS0xMDAwMDAnKSwgUk9VTkRfVVAsIDEwMDAKKyAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfaXNfc2lnbmVkKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3NpZ25lZChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3NpZ25lZCgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zaWduZWQsICcxMCcpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMuY2xlYXJfdHJhcHMoKQogCi0gICAgZGVmIHRlc3RfaXNfc25hbihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19zbmFuKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfc25hbigxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zbmFuLCAnMTAnKQorICAgICAgICAgICAgIyBJbnZhbGlkIGFyZ3VtZW50cworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgRGVjaW1hbCgxKSwgIngiLCAieSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY2Fub25pY2FsLCAyMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfY2Fub25pY2FsLCAyMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCA5LCA4LCAieCIsICJ5IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zYW1lX3F1YW50dW0sIDksIDMsICJ4IiwgInkiKQogCi0gICAgZGVmIHRlc3RfaXNfc3Vibm9ybWFsKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3N1Ym5vcm1hbCgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zdWJub3JtYWwsICcxMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjLmNhbm9uaWNhbChEZWNpbWFsKDIwMCkpKSwgJzIwMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmFkaXgoKSwgMTApCiAKLSAgICBkZWYgdGVzdF9pc196ZXJvKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3plcm8oRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc196ZXJvKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3plcm8sICcxMCcpCisgICAgICAgICAgICBjLnRyYXBzW0RpdmlzaW9uQnlaZXJvXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpdmlzaW9uQnlaZXJvLCBEZWNpbWFsKDkpLl9fZGl2bW9kX18sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEaXZpc2lvbkJ5WmVybywgYy5kaXZtb2QsIDksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKIAotICAgIGRlZiB0ZXN0X2xuKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxuKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG4sICcxMCcpCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKDkpLl9fZGl2bW9kX18sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBjLmRpdm1vZCwgOSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0RpdmlzaW9uQnlaZXJvXSkKIAotICAgIGRlZiB0ZXN0X2xvZzEwKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZzEwKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nMTAoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9nMTAsICcxMCcpCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgYy5wcmVjID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgcG93LCBEZWNpbWFsKDEwMDApLCAxLCA1MDEpCiAKLSAgICBkZWYgdGVzdF9sb2diKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZ2IoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2diKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2IsICcxMCcpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX2NvbnRleHRfdGVtcGxhdGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgQy5CYXNpY0NvbnRleHQuX3RyYXBzLAorICAgICAgICAgICAgQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbnxDLkRlY0RpdmlzaW9uQnlaZXJvfEMuRGVjT3ZlcmZsb3d8CisgICAgICAgICAgICBDLkRlY1VuZGVyZmxvd3xDLkRlY0NsYW1wZWQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgQy5EZWZhdWx0Q29udGV4dC5fdHJhcHMsCisgICAgICAgICAgICBDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9ufEMuRGVjRGl2aXNpb25CeVplcm98Qy5EZWNPdmVyZmxvdworICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX2FuZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9hbmQsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfYW5kLCAxLCAnMScpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX3NpZ25hbF9kaWN0KHNlbGYpOgogCi0gICAgZGVmIHRlc3RfbG9naWNhbF9pbnZlcnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgxMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfaW52ZXJ0KDEwMDApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9pbnZlcnQsICcxMDAwJykKKyAgICAgICAgIyBTaWduYWxEaWN0IGNvdmVyYWdlCisgICAgICAgIENvbnRleHQgPSBDLkNvbnRleHQKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBDLkRlZmF1bHRDb250ZXh0CiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX29yKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZ2ljYWxfb3IoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcigxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsIDEsICcxJykKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IEMuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBDLk92ZXJmbG93CisgICAgICAgIFN1Ym5vcm1hbCA9IEMuU3Vibm9ybWFsCisgICAgICAgIFVuZGVyZmxvdyA9IEMuVW5kZXJmbG93CisgICAgICAgIFJvdW5kZWQgPSBDLlJvdW5kZWQKKyAgICAgICAgSW5leGFjdCA9IEMuSW5leGFjdAorICAgICAgICBDbGFtcGVkID0gQy5DbGFtcGVkCiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX3hvcihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2dpY2FsX3hvcihEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcihEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF94b3IsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfeG9yLCAxLCAnMScpCisgICAgICAgIERlY0NsYW1wZWQgPSBDLkRlY0NsYW1wZWQKKyAgICAgICAgRGVjSW52YWxpZE9wZXJhdGlvbiA9IEMuRGVjSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEZWNJRUVFSW52YWxpZE9wZXJhdGlvbiA9IEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb24KIAotICAgIGRlZiB0ZXN0X21heChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5tYXgoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heChEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4LCAxLCAnMicpCisgICAgICAgIGRlZiBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KHNpZ25hbCwgc2lnbmFsX2RpY3QpOgorICAgICAgICAgICAgZm9yIHNpZyBpbiBzaWduYWxfZGljdDoKKyAgICAgICAgICAgICAgICBpZiBzaWcgPT0gc2lnbmFsOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2lnbmFsX2RpY3Rbc2lnXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNpZ25hbF9kaWN0W3NpZ10pCiAKLSAgICBkZWYgdGVzdF9tYXhfbWFnKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1heF9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZygxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsIDEsICcyJykKKyAgICAgICAgYyA9IERlZmF1bHRDb250ZXh0LmNvcHkoKQorCisgICAgICAgICMgU2lnbmFsIGRpY3QgbWV0aG9kcworICAgICAgICBzZWxmLmFzc2VydFRydWUoT3ZlcmZsb3cgaW4gYy50cmFwcykKKyAgICAgICAgYy5jbGVhcl90cmFwcygpCisgICAgICAgIGZvciBrIGluIGMudHJhcHMua2V5cygpOgorICAgICAgICAgICAgYy50cmFwc1trXSA9IFRydWUKKyAgICAgICAgZm9yIHYgaW4gYy50cmFwcy52YWx1ZXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2KQorICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIGssIHYgaW4gYy50cmFwcy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFncy5nZXQoT3ZlcmZsb3cpKQorICAgICAgICBzZWxmLmFzc2VydElzKGMuZmxhZ3MuZ2V0KCJ4IiksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbGFncy5nZXQoIngiLCAieSIpLCAieSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbGFncy5nZXQsICJ4IiwgInkiLCAieiIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYy5mbGFncyksIGxlbihjLnRyYXBzKSkKKyAgICAgICAgcyA9IHN5cy5nZXRzaXplb2YoYy5mbGFncykKKyAgICAgICAgcyA9IHN5cy5nZXRzaXplb2YoYy50cmFwcykKKyAgICAgICAgcyA9IGMuZmxhZ3MuX19yZXByX18oKQorCisgICAgICAgICMgU2V0IGZsYWdzL3RyYXBzLgorICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgYy5fZmxhZ3MgPSBEZWNDbGFtcGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0NsYW1wZWRdKQorCisgICAgICAgIGMuY2xlYXJfdHJhcHMoKQorICAgICAgICBjLl90cmFwcyA9IERlY0ludmFsaWRPcGVyYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgIyBTZXQgZmxhZ3MvdHJhcHMgZnJvbSBkaWN0aW9uYXJ5LgorICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgZCA9IGMuZmxhZ3MuY29weSgpCisgICAgICAgIGRbRGl2aXNpb25CeVplcm9dID0gVHJ1ZQorICAgICAgICBjLmZsYWdzID0gZAorICAgICAgICBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KERpdmlzaW9uQnlaZXJvLCBjLmZsYWdzKQogCi0gICAgZGVmIHRlc3RfbWluKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1pbihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW4sIDEsICcyJykKKyAgICAgICAgYy5jbGVhcl90cmFwcygpCisgICAgICAgIGQgPSBjLnRyYXBzLmNvcHkoKQorICAgICAgICBkW1VuZGVyZmxvd10gPSBUcnVlCisgICAgICAgIGMudHJhcHMgPSBkCisgICAgICAgIGFzc2VydElzRXhjbHVzaXZlbHlTZXQoVW5kZXJmbG93LCBjLnRyYXBzKQogCi0gICAgZGVmIHRlc3RfbWluX21hZyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5taW5fbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZyhEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAxLCAnMicpCisgICAgICAgICMgUmFuZG9tIGNvbnN0cnVjdG9ycworICAgICAgICBJbnRTaWduYWxzID0geworICAgICAgICAgIENsYW1wZWQ6IEMuRGVjQ2xhbXBlZCwKKyAgICAgICAgICBSb3VuZGVkOiBDLkRlY1JvdW5kZWQsCisgICAgICAgICAgSW5leGFjdDogQy5EZWNJbmV4YWN0LAorICAgICAgICAgIFN1Ym5vcm1hbDogQy5EZWNTdWJub3JtYWwsCisgICAgICAgICAgVW5kZXJmbG93OiBDLkRlY1VuZGVyZmxvdywKKyAgICAgICAgICBPdmVyZmxvdzogQy5EZWNPdmVyZmxvdywKKyAgICAgICAgICBEaXZpc2lvbkJ5WmVybzogQy5EZWNEaXZpc2lvbkJ5WmVybywKKyAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uOiBDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIH0KKyAgICAgICAgSW50Q29uZCA9IFsKKyAgICAgICAgICBDLkRlY0RpdmlzaW9uSW1wb3NzaWJsZSwgQy5EZWNEaXZpc2lvblVuZGVmaW5lZCwgQy5EZWNGcHVFcnJvciwKKyAgICAgICAgICBDLkRlY0ludmFsaWRDb250ZXh0LCBDLkRlY0ludmFsaWRPcGVyYXRpb24sIEMuRGVjTWFsbG9jRXJyb3IsCisgICAgICAgICAgQy5EZWNDb252ZXJzaW9uU3ludGF4LAorICAgICAgICBdCiAKLSAgICBkZWYgdGVzdF9taW51cyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5taW51cyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbnVzKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbnVzLCAnMTAnKQorICAgICAgICBsaW0gPSBsZW4oT3JkZXJlZFNpZ25hbHNbQ10pCisgICAgICAgIGZvciByIGluIHJhbmdlKGxpbSk6CisgICAgICAgICAgICBmb3IgdCBpbiByYW5nZShsaW0pOgorICAgICAgICAgICAgICAgIGZvciByb3VuZCBpbiBSb3VuZGluZ01vZGVzW0NdOgorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJhbmRvbS5zYW1wbGUoT3JkZXJlZFNpZ25hbHNbQ10sIHIpCisgICAgICAgICAgICAgICAgICAgIHRyYXBzID0gcmFuZG9tLnNhbXBsZShPcmRlcmVkU2lnbmFsc1tDXSwgdCkKKyAgICAgICAgICAgICAgICAgICAgcHJlYyA9IHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwMDApCisgICAgICAgICAgICAgICAgICAgIGVtaW4gPSByYW5kb20ucmFuZHJhbmdlKC0xMDAwMCwgMCkKKyAgICAgICAgICAgICAgICAgICAgZW1heCA9IHJhbmRvbS5yYW5kcmFuZ2UoMCwgMTAwMDApCisgICAgICAgICAgICAgICAgICAgIGNsYW1wID0gcmFuZG9tLnJhbmRyYW5nZSgwLCAyKQorICAgICAgICAgICAgICAgICAgICBjYXBzID0gcmFuZG9tLnJhbmRyYW5nZSgwLCAyKQorICAgICAgICAgICAgICAgICAgICBjciA9IHJhbmRvbS5yYW5kcmFuZ2UoMCwgMikKKyAgICAgICAgICAgICAgICAgICAgYyA9IENvbnRleHQocHJlYz1wcmVjLCByb3VuZGluZz1yb3VuZCwgRW1pbj1lbWluLCBFbWF4PWVtYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcGl0YWxzPWNhcHMsIGNsYW1wPWNsYW1wLCBmbGFncz1saXN0KGZsYWdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhcHM9bGlzdCh0cmFwcykpCiAKLSAgICBkZWYgdGVzdF9tdWx0aXBseShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5tdWx0aXBseShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubXVsdGlwbHksICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm11bHRpcGx5LCAxLCAnMicpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCBwcmVjKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIHJvdW5kKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgZW1pbikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIGVtYXgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jYXBpdGFscywgY2FwcykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCBjbGFtcCkKIAotICAgIGRlZiB0ZXN0X25leHRfbWludXMoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubmV4dF9taW51cyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfbWludXMoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF9taW51cywgJzEwJykKKyAgICAgICAgICAgICAgICAgICAgZiA9IDAKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBmIHw9IEludFNpZ25hbHNbeF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9mbGFncywgZikKIAotICAgIGRlZiB0ZXN0X25leHRfcGx1cyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5uZXh0X3BsdXMoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3BsdXMoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF9wbHVzLCAnMTAnKQorICAgICAgICAgICAgICAgICAgICBmID0gMAorICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiB0cmFwczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYgfD0gSW50U2lnbmFsc1t4XQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX3RyYXBzLCBmKQogCi0gICAgZGVmIHRlc3RfbmV4dF90b3dhcmQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubmV4dF90b3dhcmQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfdG93YXJkLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X3Rvd2FyZCwgMSwgJzInKQorICAgICAgICBmb3IgY29uZCBpbiBJbnRDb25kOgorICAgICAgICAgICAgYy5fZmxhZ3MgPSBjb25kCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5fZmxhZ3MmRGVjSUVFRUludmFsaWRPcGVyYXRpb24pCisgICAgICAgICAgICBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KEludmFsaWRPcGVyYXRpb24sIGMuZmxhZ3MpCiAKLSAgICBkZWYgdGVzdF9ub3JtYWxpemUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubm9ybWFsaXplKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubm9ybWFsaXplKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5vcm1hbGl6ZSwgJzEwJykKKyAgICAgICAgZm9yIGNvbmQgaW4gSW50Q29uZDoKKyAgICAgICAgICAgIGMuX3RyYXBzID0gY29uZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuX3RyYXBzJkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uKQorICAgICAgICAgICAgYXNzZXJ0SXNFeGNsdXNpdmVseVNldChJbnZhbGlkT3BlcmF0aW9uLCBjLnRyYXBzKQogCi0gICAgZGVmIHRlc3RfbnVtYmVyX2NsYXNzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoMTIzKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygwKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgwKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoLTQ1KSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgtNDUpKSkKKyAgICBkZWYgdGVzdF9pbnZhbGlkX292ZXJyaWRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCiAKLSAgICBkZWYgdGVzdF9wb3dlcihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5wb3dlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDQpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgNCwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihEZWNpbWFsKDEpLCA0LCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKDEsIERlY2ltYWwoNCksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgNCwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDQpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBvd2VyLCAnMScsIDQsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgMSwgJzQnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsIDEsIDQsICcyJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnJvbSBsb2NhbGUgaW1wb3J0IENIQVJfTUFYCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgogCi0gICAgZGVmIHRlc3RfcGx1cyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5wbHVzKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucGx1cygxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wbHVzLCAnMTAnKQorICAgICAgICBkZWYgbWFrZV9ncm91cGluZyhsc3QpOgorICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4oW2Nocih4KSBmb3IgeCBpbiBsc3RdKQogCi0gICAgZGVmIHRlc3RfcXVhbnRpemUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMucXVhbnRpemUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnF1YW50aXplLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5xdWFudGl6ZSwgMSwgJzInKQorICAgICAgICBkZWYgZ2V0X2ZtdCh4LCBvdmVycmlkZT1Ob25lLCBmbXQ9J24nKToKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHgpLl9fZm9ybWF0X18oZm10LCBvdmVycmlkZSkKIAotICAgIGRlZiB0ZXN0X3JlbWFpbmRlcihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5yZW1haW5kZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcihEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlciwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyLCAxLCAnMicpCisgICAgICAgIGludmFsaWRfZ3JvdXBpbmcgPSB7CisgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLCcsCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMjU1LCAyNTUsIDBdKSwKKyAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJyA6ICcsJworICAgICAgICB9CisgICAgICAgIGludmFsaWRfZG90ID0geworICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJ3h4eHh4JywKKyAgICAgICAgICAgICdncm91cGluZycgOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnLCcKKyAgICAgICAgfQorICAgICAgICBpbnZhbGlkX3NlcCA9IHsKKyAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcuJywKKyAgICAgICAgICAgICdncm91cGluZycgOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAneXl5eXknCisgICAgICAgIH0KIAotICAgIGRlZiB0ZXN0X3JlbWFpbmRlcl9uZWFyKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXJfbmVhciwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyX25lYXIsIDEsICcyJykKKyAgICAgICAgaWYgQ0hBUl9NQVggPT0gMTI3OiAjIG5lZ2F0aXZlIGdyb3VwaW5nIGluIG92ZXJyaWRlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfZm10LCAxMjM0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRfZ3JvdXBpbmcsICdnJykKIAotICAgIGRlZiB0ZXN0X3JvdGF0ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5yb3RhdGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJvdGF0ZSwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucm90YXRlLCAxLCAnMicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9mbXQsIDEyMzQ1LCBpbnZhbGlkX2RvdCwgJ2cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfZm10LCAxMjM0NSwgaW52YWxpZF9zZXAsICdnJykKIAotICAgIGRlZiB0ZXN0X3NxcnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc3FydChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNxcnQoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc3FydCwgJzEwJykKKyAgICBkZWYgdGVzdF9leGFjdF9jb252ZXJzaW9uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KIAotICAgIGRlZiB0ZXN0X3NhbWVfcXVhbnR1bShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5zYW1lX3F1YW50dW0oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNhbWVfcXVhbnR1bSwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2FtZV9xdWFudHVtLCAxLCAnMicpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKIAotICAgIGRlZiB0ZXN0X3NjYWxlYihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5zY2FsZWIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYihEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYigxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNjYWxlYiwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2NhbGViLCAxLCAnMicpCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQogCi0gICAgZGVmIHRlc3Rfc2hpZnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc2hpZnQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNoaWZ0LCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zaGlmdCwgMSwgJzInKQorICAgICAgICAgICAgIyBDbGFtcGVkCisgICAgICAgICAgICB4ID0gIjBlJWQiICUgc3lzLm1heHNpemUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF9zdWJ0cmFjdChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5zdWJ0cmFjdChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdChEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc3VidHJhY3QsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnN1YnRyYWN0LCAxLCAnMicpCisgICAgICAgICAgICB4ID0gIjBlJWQiICUgKC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X3RvX2VuZ19zdHJpbmcoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMudG9fZW5nX3N0cmluZyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2VuZ19zdHJpbmcoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9fZW5nX3N0cmluZywgJzEwJykKKyAgICAgICAgICAgICMgT3ZlcmZsb3cKKyAgICAgICAgICAgIHggPSAiMWUlZCIgJSBzeXMubWF4c2l6ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X3RvX3NjaV9zdHJpbmcoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMudG9fc2NpX3N0cmluZyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX3NjaV9zdHJpbmcoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9fc2NpX3N0cmluZywgJzEwJykKKyAgICAgICAgICAgICMgVW5kZXJmbG93CisgICAgICAgICAgICB4ID0gIjFlJWQiICUgKC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X3RvX2ludGVncmFsX2V4YWN0KHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9faW50ZWdyYWxfZXhhY3QoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfZXhhY3QsICcxMCcpCisgICAgZGVmIHRlc3RfZnJvbV90dXBsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIE92ZXJmbG93ID0gQy5PdmVyZmxvdworICAgICAgICBVbmRlcmZsb3cgPSBDLlVuZGVyZmxvdwogCi0gICAgZGVmIHRlc3RfdG9faW50ZWdyYWxfdmFsdWUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19pbnRlZ3JhbF92YWx1ZSgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19pbnRlZ3JhbF92YWx1ZSwgJzEwJykKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgogCi1jbGFzcyBXaXRoU3RhdGVtZW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBDYW4ndCBkbyB0aGVzZSBhcyBkb2NzdHJpbmdzIHVudGlsIFB5dGhvbiAyLjYKLSAgICAjIGFzIGRvY3Rlc3QgY2FuJ3QgaGFuZGxlIF9fZnV0dXJlX18gc3RhdGVtZW50cworICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbT3ZlcmZsb3ddID0gVHJ1ZQorICAgICAgICAgICAgYy50cmFwc1tVbmRlcmZsb3ddID0gVHJ1ZQogCi0gICAgZGVmIHRlc3RfbG9jYWxjb250ZXh0KHNlbGYpOgotICAgICAgICAjIFVzZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBpbiB0aGUgYmxvY2sKLSAgICAgICAgb3JpZ19jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBlbnRlcl9jdHg6Ci0gICAgICAgICAgICBzZXRfY3R4ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIGZpbmFsX2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfY3R4LCBmaW5hbF9jdHgsICdkaWQgbm90IHJlc3RvcmUgY29udGV4dCBjb3JyZWN0bHknKQotICAgICAgICBzZWxmLmFzc2VydElzTm90KG9yaWdfY3R4LCBzZXRfY3R4LCAnZGlkIG5vdCBjb3B5IHRoZSBjb250ZXh0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZXRfY3R4LCBlbnRlcl9jdHgsICdfX2VudGVyX18gcmV0dXJuZWQgd3JvbmcgY29udGV4dCcpCisgICAgICAgICAgICAjIFNTSVpFX01BWAorICAgICAgICAgICAgeCA9ICgxLCAoKSwgc3lzLm1heHNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjLmNyZWF0ZV9kZWNpbWFsKHgpKSwgJy0wRSs5OTk5OTknKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X2xvY2FsY29udGV4dGFyZyhzZWxmKToKLSAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0IGluIHRoZSBibG9jawotICAgICAgICBvcmlnX2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBuZXdfY3R4ID0gQ29udGV4dChwcmVjPTQyKQotICAgICAgICB3aXRoIGxvY2FsY29udGV4dChuZXdfY3R4KSBhcyBlbnRlcl9jdHg6Ci0gICAgICAgICAgICBzZXRfY3R4ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIGZpbmFsX2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfY3R4LCBmaW5hbF9jdHgsICdkaWQgbm90IHJlc3RvcmUgY29udGV4dCBjb3JyZWN0bHknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldF9jdHgucHJlYywgbmV3X2N0eC5wcmVjLCAnZGlkIG5vdCBzZXQgY29ycmVjdCBjb250ZXh0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdChuZXdfY3R4LCBzZXRfY3R4LCAnZGlkIG5vdCBjb3B5IHRoZSBjb250ZXh0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZXRfY3R4LCBlbnRlcl9jdHgsICdfX2VudGVyX18gcmV0dXJuZWQgd3JvbmcgY29udGV4dCcpCisgICAgICAgICAgICB4ID0gKDEsICgwLCAxLCAyKSwgc3lzLm1heHNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgYy5jcmVhdGVfZGVjaW1hbCwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLWNsYXNzIENvbnRleHRGbGFncyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZmxhZ3NfaXJyZWxldmFudChzZWxmKToKLSAgICAgICAgIyBjaGVjayB0aGF0IHRoZSByZXN1bHQgKG51bWVyaWMgcmVzdWx0ICsgZmxhZ3MgcmFpc2VkKSBvZiBhbgotICAgICAgICAjIGFyaXRobWV0aWMgb3BlcmF0aW9uIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZSBjdXJyZW50IGZsYWdzCisgICAgICAgICAgICAjIFNTSVpFX01JTgorICAgICAgICAgICAgeCA9ICgxLCAoKSwgLXN5cy5tYXhzaXplLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjLmNyZWF0ZV9kZWNpbWFsKHgpKSwgJy0wRS0xMDAwMDI2JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz05LCBFbWluID0gLTk5OTk5OTk5OSwgRW1heCA9IDk5OTk5OTk5OSwKLSAgICAgICAgICAgICAgICAgICAgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCB0cmFwcz1bXSwgZmxhZ3M9W10pCisgICAgICAgICAgICB4ID0gKDEsICgwLCAxLCAyKSwgLXN5cy5tYXhzaXplLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmRlcmZsb3csIGMuY3JlYXRlX2RlY2ltYWwsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi0gICAgICAgICMgb3BlcmF0aW9ucyB0aGF0IHJhaXNlIHZhcmlvdXMgZmxhZ3MsIGluIHRoZSBmb3JtIChmdW5jdGlvbiwgYXJnbGlzdCkKLSAgICAgICAgb3BlcmF0aW9ucyA9IFsKLSAgICAgICAgICAgIChjb250ZXh0Ll9hcHBseSwgW0RlY2ltYWwoIjEwMEUtMTAwMDAwMDAwOSIpXSksCi0gICAgICAgICAgICAoY29udGV4dC5zcXJ0LCBbRGVjaW1hbCgyKV0pLAotICAgICAgICAgICAgKGNvbnRleHQuYWRkLCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKLSAgICAgICAgICAgIChjb250ZXh0Lm11bHRpcGx5LCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKLSAgICAgICAgICAgIChjb250ZXh0LnN1YnRyYWN0LCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKLSAgICAgICAgICAgIF0KKyAgICAgICAgICAgICMgT3ZlcmZsb3dFcnJvcgorICAgICAgICAgICAgeCA9ICgxLCAoKSwgc3lzLm1heHNpemUrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGMuY3JlYXRlX2RlY2ltYWwsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBEZWNpbWFsLCB4KQogCi0gICAgICAgICMgdHJ5IHZhcmlvdXMgZmxhZ3MgaW5kaXZpZHVhbGx5LCB0aGVuIGEgd2hvbGUgbG90IGF0IG9uY2UKLSAgICAgICAgZmxhZ3NldHMgPSBbW0luZXhhY3RdLCBbUm91bmRlZF0sIFtVbmRlcmZsb3ddLCBbQ2xhbXBlZF0sIFtTdWJub3JtYWxdLAotICAgICAgICAgICAgICAgICAgICBbSW5leGFjdCwgUm91bmRlZCwgVW5kZXJmbG93LCBDbGFtcGVkLCBTdWJub3JtYWxdXQorICAgICAgICAgICAgeCA9ICgxLCAoKSwgLXN5cy5tYXhzaXplLTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjLmNyZWF0ZV9kZWNpbWFsLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgRGVjaW1hbCwgeCkKIAotICAgICAgICBmb3IgZm4sIGFyZ3MgaW4gb3BlcmF0aW9uczoKLSAgICAgICAgICAgICMgZmluZCBhbnN3ZXIgYW5kIGZsYWdzIHJhaXNlZCB1c2luZyBhIGNsZWFuIGNvbnRleHQKLSAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQotICAgICAgICAgICAgYW5zID0gZm4oKmFyZ3MpCi0gICAgICAgICAgICBmbGFncyA9IFtrIGZvciBrLCB2IGluIGNvbnRleHQuZmxhZ3MuaXRlbXMoKSBpZiB2XQorICAgICAgICAgICAgIyBTcGVjaWFscworICAgICAgICAgICAgeCA9ICgxLCAoKSwgIk4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCh4KSksICctc05hTicpCisgICAgICAgICAgICB4ID0gKDEsICgwLCksICJOIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoeCkpLCAnLXNOYU4nKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwgMSksICJOIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoeCkpLCAnLXNOYU4xJykKIAotICAgICAgICAgICAgZm9yIGV4dHJhX2ZsYWdzIGluIGZsYWdzZXRzOgotICAgICAgICAgICAgICAgICMgc2V0IGZsYWdzLCBiZWZvcmUgY2FsbGluZyBvcGVyYXRpb24KLSAgICAgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKLSAgICAgICAgICAgICAgICBmb3IgZmxhZyBpbiBleHRyYV9mbGFnczoKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoZmxhZykKLSAgICAgICAgICAgICAgICBuZXdfYW5zID0gZm4oKmFyZ3MpCiAKLSAgICAgICAgICAgICAgICAjIGZsYWdzIHRoYXQgd2UgZXhwZWN0IHRvIGJlIHNldCBhZnRlciB0aGUgb3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmxhZ3MgPSBsaXN0KGZsYWdzKQotICAgICAgICAgICAgICAgIGZvciBmbGFnIGluIGV4dHJhX2ZsYWdzOgotICAgICAgICAgICAgICAgICAgICBpZiBmbGFnIG5vdCBpbiBleHBlY3RlZF9mbGFnczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLmFwcGVuZChmbGFnKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLnNvcnQoa2V5PWlkKQorYWxsX3Rlc3RzID0gWworICBDRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0LCBQeUV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwKKyAgQ0ltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCwgUHlJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsCisgIENGb3JtYXRUZXN0LCAgICAgICAgICAgICAgIFB5Rm9ybWF0VGVzdCwKKyAgQ0FyaXRobWV0aWNPcGVyYXRvcnNUZXN0LCAgUHlBcml0aG1ldGljT3BlcmF0b3JzVGVzdCwKKyAgQ1RocmVhZGluZ1Rlc3QsICAgICAgICAgICAgUHlUaHJlYWRpbmdUZXN0LAorICBDVXNhYmlsaXR5VGVzdCwgICAgICAgICAgICBQeVVzYWJpbGl0eVRlc3QsCisgIENQeXRob25BUEl0ZXN0cywgICAgICAgICAgIFB5UHl0aG9uQVBJdGVzdHMsCisgIENDb250ZXh0QVBJdGVzdHMsICAgICAgICAgIFB5Q29udGV4dEFQSXRlc3RzLAorICBDQ29udGV4dFdpdGhTdGF0ZW1lbnQsICAgICBQeUNvbnRleHRXaXRoU3RhdGVtZW50LAorICBDQ29udGV4dEZsYWdzLCAgICAgICAgICAgICBQeUNvbnRleHRGbGFncywKKyAgQ1NwZWNpYWxDb250ZXh0cywgICAgICAgICAgUHlTcGVjaWFsQ29udGV4dHMsCisgIENDb250ZXh0SW5wdXRWYWxpZGF0aW9uLCAgIFB5Q29udGV4dElucHV0VmFsaWRhdGlvbiwKKyAgQ0NvbnRleHRTdWJjbGFzc2luZywgICAgICAgUHlDb250ZXh0U3ViY2xhc3NpbmcsCisgIENDb3ZlcmFnZSwgICAgICAgICAgICAgICAgIFB5Q292ZXJhZ2UsCisgIENGdW5jdGlvbmFsaXR5LCAgICAgICAgICAgIFB5RnVuY3Rpb25hbGl0eSwKKyAgQ1doaXRlYm94LCAgICAgICAgICAgICAgICAgUHlXaGl0ZWJveCwKKyAgQ0lCTVRlc3RDYXNlcywgICAgICAgICAgICAgUHlJQk1UZXN0Q2FzZXMsCitdCiAKLSAgICAgICAgICAgICAgICAjIGZsYWdzIHdlIGFjdHVhbGx5IGdvdAotICAgICAgICAgICAgICAgIG5ld19mbGFncyA9IFtrIGZvciBrLHYgaW4gY29udGV4dC5mbGFncy5pdGVtcygpIGlmIHZdCi0gICAgICAgICAgICAgICAgbmV3X2ZsYWdzLnNvcnQoa2V5PWlkKQorIyBEZWxldGUgQyB0ZXN0cyBpZiBfZGVjaW1hbC5zbyBpcyBub3QgcHJlc2VudC4KK2lmIG5vdCBDOgorICAgIGFsbF90ZXN0cyA9IGFsbF90ZXN0c1sxOjoyXQorZWxzZToKKyAgICBhbGxfdGVzdHMuaW5zZXJ0KDAsIENoZWNrQXR0cmlidXRlcykKIAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBuZXdfYW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBwcm9kdWNlcyBkaWZmZXJlbnQgYW5zd2VycyBkZXBlbmRpbmcgb24gZmxhZ3Mgc2V0OiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzLiIgJSAoYW5zLCBuZXdfYW5zKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19mbGFncywgZXhwZWN0ZWRfZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiByYWlzZXMgZGlmZmVyZW50IGZsYWdzIGRlcGVuZGluZyBvbiBmbGFncyBzZXQ6ICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzIiAlIChleHBlY3RlZF9mbGFncywgbmV3X2ZsYWdzKSkKIAogZGVmIHRlc3RfbWFpbihhcml0aD1GYWxzZSwgdmVyYm9zZT1Ob25lLCB0b2RvX3Rlc3RzPU5vbmUsIGRlYnVnPU5vbmUpOgogICAgICIiIiBFeGVjdXRlIHRoZSB0ZXN0cy4KQEAgLTIzNzQsMjcgKzUwNzYsMTYgQEAKICAgICBpcyBlbmFibGVkIGluIHJlZ3J0ZXN0LnB5CiAgICAgIiIiCiAKLSAgICBpbml0KCkKKyAgICBpbml0KEMpCisgICAgaW5pdChQKQogICAgIGdsb2JhbCBURVNUX0FMTCwgREVCVUcKICAgICBURVNUX0FMTCA9IGFyaXRoIG9yIGlzX3Jlc291cmNlX2VuYWJsZWQoJ2RlY2ltYWwnKQogICAgIERFQlVHID0gZGVidWcKIAogICAgIGlmIHRvZG9fdGVzdHMgaXMgTm9uZToKLSAgICAgICAgdGVzdF9jbGFzc2VzID0gWwotICAgICAgICAgICAgRGVjaW1hbEV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwKLSAgICAgICAgICAgIERlY2ltYWxJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QsCi0gICAgICAgICAgICBEZWNpbWFsRm9ybWF0VGVzdCwKLSAgICAgICAgICAgIERlY2ltYWxVc2VPZkNvbnRleHRUZXN0LAotICAgICAgICAgICAgRGVjaW1hbFVzYWJpbGl0eVRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsUHl0aG9uQVBJdGVzdHMsCi0gICAgICAgICAgICBDb250ZXh0QVBJdGVzdHMsCi0gICAgICAgICAgICBEZWNpbWFsVGVzdCwKLSAgICAgICAgICAgIFdpdGhTdGF0ZW1lbnRUZXN0LAotICAgICAgICAgICAgQ29udGV4dEZsYWdzCi0gICAgICAgIF0KKyAgICAgICAgdGVzdF9jbGFzc2VzID0gYWxsX3Rlc3RzCiAgICAgZWxzZToKLSAgICAgICAgdGVzdF9jbGFzc2VzID0gW0RlY2ltYWxUZXN0XQorICAgICAgICB0ZXN0X2NsYXNzZXMgPSBbQ0lCTVRlc3RDYXNlcywgUHlJQk1UZXN0Q2FzZXNdCiAKICAgICAjIER5bmFtaWNhbGx5IGJ1aWxkIGN1c3RvbSB0ZXN0IGRlZmluaXRpb24gZm9yIGVhY2ggZmlsZSBpbiB0aGUgdGVzdAogICAgICMgZGlyZWN0b3J5IGFuZCBhZGQgdGhlIGRlZmluaXRpb25zIHRvIHRoZSBEZWNpbWFsVGVzdCBjbGFzcy4gIFRoaXMKQEAgLTI0MDYsMTcgKzUwOTcsMzIgQEAKICAgICAgICAgaWYgdG9kb190ZXN0cyBpcyBub3QgTm9uZSBhbmQgaGVhZCBub3QgaW4gdG9kb190ZXN0czoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHRlc3RlciA9IGxhbWJkYSBzZWxmLCBmPWZpbGVuYW1lOiBzZWxmLmV2YWxfZmlsZShkaXJlY3RvcnkgKyBmKQotICAgICAgICBzZXRhdHRyKERlY2ltYWxUZXN0LCAndGVzdF8nICsgaGVhZCwgdGVzdGVyKQorICAgICAgICBzZXRhdHRyKENJQk1UZXN0Q2FzZXMsICd0ZXN0XycgKyBoZWFkLCB0ZXN0ZXIpCisgICAgICAgIHNldGF0dHIoUHlJQk1UZXN0Q2FzZXMsICd0ZXN0XycgKyBoZWFkLCB0ZXN0ZXIpCiAgICAgICAgIGRlbCBmaWxlbmFtZSwgaGVhZCwgdGFpbCwgdGVzdGVyCiAKIAogICAgIHRyeToKICAgICAgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCiAgICAgICAgIGlmIHRvZG9fdGVzdHMgaXMgTm9uZToKLSAgICAgICAgICAgIGltcG9ydCBkZWNpbWFsIGFzIERlY2ltYWxNb2R1bGUKLSAgICAgICAgICAgIHJ1bl9kb2N0ZXN0KERlY2ltYWxNb2R1bGUsIHZlcmJvc2UpCisgICAgICAgICAgICBmcm9tIGRvY3Rlc3QgaW1wb3J0IElHTk9SRV9FWENFUFRJT05fREVUQUlMCisgICAgICAgICAgICBzYXZlZGVjaW1hbCA9IHN5cy5tb2R1bGVzWydkZWNpbWFsJ10KKyAgICAgICAgICAgIGlmIEM6CisgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IEMKKyAgICAgICAgICAgICAgICBydW5fZG9jdGVzdChDLCB2ZXJib3NlLCBvcHRpb25mbGFncz1JR05PUkVfRVhDRVBUSU9OX0RFVEFJTCkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCisgICAgICAgICAgICBydW5fZG9jdGVzdChQLCB2ZXJib3NlKQorICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IHNhdmVkZWNpbWFsCiAgICAgZmluYWxseToKLSAgICAgICAgc2V0Y29udGV4dChPUklHSU5BTF9DT05URVhUKQorICAgICAgICBpZiBDOiBDLnNldGNvbnRleHQoT1JJR0lOQUxfQ09OVEVYVFtDXSkKKyAgICAgICAgUC5zZXRjb250ZXh0KE9SSUdJTkFMX0NPTlRFWFRbUF0pCisgICAgICAgIGlmIG5vdCBDOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybignQyB0ZXN0cyBza2lwcGVkOiBubyBtb2R1bGUgbmFtZWQgX2RlY2ltYWwuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcpCisgICAgICAgIGlmIG5vdCBvcmlnX3N5c19kZWNpbWFsIGlzIHN5cy5tb2R1bGVzWydkZWNpbWFsJ106CisgICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCJJbnRlcm5hbCBlcnJvcjogdW5iYWxhbmNlZCBudW1iZXIgb2YgY2hhbmdlcyB0byAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlc1snZGVjaW1hbCddLiIpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgb3B0cGFyc2UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CmluZGV4IGYwYWZlMWQuLmE4NDg3ZDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQpAQCAtNDcyLDYgKzQ3MiwxOSBAQAogIyMgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKICMjICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZVstMV0pKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgorICAgICAgICBkYXRhID0gZGVxdWUocmFuZ2UoMjAwKSkKKyAgICAgICAgaXQgPSBpdG9yZyA9IGl0ZXIoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGxpc3QoZGF0YSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgbGlzdChkYXRhKVsxOl0pCisKICAgICBkZWYgdGVzdF9kZWVwY29weShzZWxmKToKICAgICAgICAgbXV0ID0gWzEwXQogICAgICAgICBkID0gZGVxdWUoW211dF0pCkBAIC01MjQsNyArNTM3LDcgQEAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaXplb2Yoc2VsZik6CiAgICAgICAgIEJMT0NLTEVOID0gNjIKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCcyUDRQbFAnKQorICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzJQNG5sUCcpCiAgICAgICAgIGJsb2Nrc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnMlAlZFAnICUgQkxPQ0tMRU4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqZWN0Ll9fc2l6ZW9mX18oZGVxdWUoKSksIGJhc2VzaXplKQogICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfc2l6ZW9mCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXNjci5weQppbmRleCBjZGFmN2QyLi4wNzlmNjBiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKQEAgLTY1NCwxOSArNjU0LDE5IEBACiAgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPUFNZXRhKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBCKG1ldGFjbGFzcz1CTWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgQk1ldGEuX19uZXdfXyBjYWxscyBBTWV0YS5fX25ld19fIHdpdGggc3VwZXI6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgQyhBLCBCKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBCTWV0YToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JNZXRhJywgJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgIyBCTWV0YS5fX3ByZXBhcmVfXyBzaG91bGQndmUgYmVlbiBjYWxsZWQ6CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQy5fX2RpY3RfXykKIApAQCAtNjc0LDIwICs2NzQsMjAgQEAKICAgICAgICAgY2xhc3MgQzIoQiwgQSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQzIuX19kaWN0X18pCiAKICAgICAgICAgIyBDaGVjayBjb3JyZWN0IG1ldGFjbGFzcyBjYWxjdWxhdGlvbiB3aGVuIGEgbWV0YWNsYXNzIGlzIGRlY2xhcmVkOgogICAgICAgICBjbGFzcyBEKEMsIG1ldGFjbGFzcz10eXBlKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JNZXRhJywgJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBELl9fZGljdF9fKQogCiAgICAgICAgIGNsYXNzIEUoQywgbWV0YWNsYXNzPUFNZXRhKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JNZXRhJywgJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBFLl9fZGljdF9fKQogCiAgICAgICAgICMgU3BlY2lhbCBjYXNlOiB0aGUgZ2l2ZW4gbWV0YWNsYXNzIGlzbid0IGEgY2xhc3MsCkBAIC03MjksMzMgKzcyOSwzMyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEFOb3RNZXRhLCB0eXBlKEEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEIobWV0YWNsYXNzPUJOb3RNZXRhKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShCKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBDKEEsIEIpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEMyKEIsIEEpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEMyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKIAogICAgICAgICAjIFRoaXMgaXMgYSBUeXBlRXJyb3IsIGJlY2F1c2Ugb2YgYSBtZXRhY2xhc3MgY29uZmxpY3Q6CiAgICAgICAgICMgQk5vdE1ldGEgaXMgbmVpdGhlciBhIHN1YmNsYXNzLCBub3IgYSBzdXBlcmNsYXNzIG9mIHR5cGUKQEAgLTc2NywyNSArNzY3LDI1IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoRSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgRihvYmplY3QoKSwgQyk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoRikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgRjIoQywgb2JqZWN0KCkpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKIAogICAgICAgICAjIFR5cGVFcnJvcjogQk5vdE1ldGEgaXMgbmVpdGhlciBhCiAgICAgICAgICMgc3ViY2xhc3MsIG5vciBhIHN1cGVyY2xhc3Mgb2YgaW50CkBAIC0xNDQ0LDYgKzE0NDQsMTQgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiY2xhc3NtZXRob2Qgc2hvdWxkbid0IGFjY2VwdCBrZXl3b3JkIGFyZ3MiKQogCisgICAgICAgIGNtID0gY2xhc3NtZXRob2QoZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5fX2RpY3RfXywge30pCisgICAgICAgIGNtLnggPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLngsIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLl9fZGljdF9fLCB7IngiIDogNDJ9KQorICAgICAgICBkZWwgY20ueAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY20sICJ4IikpCisKICAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidGhlIG1vZHVsZSAneHhzdWJ0eXBlJyBpcyBpbnRlcm5hbCIpCiAgICAgZGVmIHRlc3RfY2xhc3NtZXRob2RzX2luX2Moc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBDLWJhc2VkIGNsYXNzIG1ldGhvZHMuLi4KQEAgLTE0OTEsNiArMTQ5OSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZ29vKDEpLCAoMSwpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZm9vKDEpLCAoZCwgMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRC5mb28oZCwgMSksIChkLCAxKSkKKyAgICAgICAgc20gPSBzdGF0aWNtZXRob2QoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbS5fX2RpY3RfXywge30pCisgICAgICAgIHNtLnggPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtLngsIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtLl9fZGljdF9fLCB7IngiIDogNDJ9KQorICAgICAgICBkZWwgc20ueAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoc20sICJ4IikpCiAKICAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidGhlIG1vZHVsZSAneHhzdWJ0eXBlJyBpcyBpbnRlcm5hbCIpCiAgICAgZGVmIHRlc3Rfc3RhdGljbWV0aG9kc19pbl9jKHNlbGYpOgpAQCAtMTc3MSw2ICsxNzg2LDcgQEAKICAgICAgICAgICAgICgiX19mb3JtYXRfXyIsIGZvcm1hdCwgZm9ybWF0X2ltcGwsIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fZmxvb3JfXyIsIG1hdGguZmxvb3IsIHplcm8sIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fdHJ1bmNfXyIsIG1hdGgudHJ1bmMsIHplcm8sIHNldCgpLCB7fSksCisgICAgICAgICAgICAoIl9fdHJ1bmNfXyIsIGludCwgemVybywgc2V0KCksIHt9KSwKICAgICAgICAgICAgICgiX19jZWlsX18iLCBtYXRoLmNlaWwsIHplcm8sIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fZGlyX18iLCBkaXIsIGVtcHR5X3NlcSwgc2V0KCksIHt9KSwKICAgICAgICAgICAgIF0KQEAgLTE4MTYsMTIgKzE4MzIsNyBAQAogICAgICAgICAgICAgZm9yIGF0dHIsIG9iaiBpbiBlbnYuaXRlbXMoKToKICAgICAgICAgICAgICAgICBzZXRhdHRyKFgsIGF0dHIsIG9iaikKICAgICAgICAgICAgIHNldGF0dHIoWCwgbmFtZSwgRXJyRGVzY3IoKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBydW5uZXIoWCgpKQotICAgICAgICAgICAgZXhjZXB0IE15RXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJ7MCFyfSBkaWRuJ3QgcmFpc2UiLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE15RXhjZXB0aW9uLCBydW5uZXIsIFgoKSkKIAogICAgIGRlZiB0ZXN0X3NwZWNpYWxzKHNlbGYpOgogICAgICAgICAjIFRlc3Rpbmcgc3BlY2lhbCBvcGVyYXRvcnMuLi4KQEAgLTIyNTgsOSArMjI2OSw2IEBACiAgICAgICAgICMgVHdvIGVzc2VudGlhbGx5IGZlYXR1cmVsZXNzIG9iamVjdHMsIGp1c3QgaW5oZXJpdGluZyBzdHVmZiBmcm9tCiAgICAgICAgICMgb2JqZWN0LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihOb3RJbXBsZW1lbnRlZCksIGRpcihFbGxpcHNpcykpCi0gICAgICAgIGlmIHN1cHBvcnQuY2hlY2tfaW1wbF9kZXRhaWwoKToKLSAgICAgICAgICAgICMgTm9uZSBkaWZmZXJzIGluIFB5UHk6IGl0IGhhcyBhIF9fbm9uemVyb19fCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihOb25lKSwgZGlyKEVsbGlwc2lzKSkKIAogICAgICAgICAjIE5hc3R5IHRlc3QgY2FzZSBmb3IgcHJveGllZCBvYmplY3RzCiAgICAgICAgIGNsYXNzIFdyYXBwZXIob2JqZWN0KToKQEAgLTQ0NTYsNiArNDQ2NCw1NCBAQAogICAgICAgICB4LnkgPSA0MgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhbInkiXSwgNDIpCiAKKyAgICBkZWYgdGVzdF9zbG90X3NoYWRvd3NfY2xhc3NfdmFyaWFibGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgICAgIF9fc2xvdHNfXyA9IFsiZm9vIl0KKyAgICAgICAgICAgICAgICBmb28gPSBOb25lCisgICAgICAgIG0gPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCInZm9vJyBpbiBfX3Nsb3RzX18gY29uZmxpY3RzIHdpdGggY2xhc3MgdmFyaWFibGUiLCBtKQorCisgICAgZGVmIHRlc3Rfc2V0X2RvYyhzZWxmKToKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgICJlbGVwaGFudCIKKyAgICAgICAgWC5fX2RvY19fID0gImJhbmFuYSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLl9fZG9jX18sICJiYW5hbmEiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICB0eXBlKGxpc3QpLl9fZGljdF9fWyJfX2RvY19fIl0uX19zZXRfXyhsaXN0LCAiYmxhaCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImNhbid0IHNldCBsaXN0Ll9fZG9jX18iLCBzdHIoY20uZXhjZXB0aW9uKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgdHlwZShYKS5fX2RpY3RfX1siX19kb2NfXyJdLl9fZGVsZXRlX18oWCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiY2FuJ3QgZGVsZXRlIFguX19kb2NfXyIsIHN0cihjbS5leGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFguX19kb2NfXywgImJhbmFuYSIpCisKKyAgICBkZWYgdGVzdF9xdWFsbmFtZShzZWxmKToKKyAgICAgICAgZGVzY3JpcHRvcnMgPSBbc3RyLmxvd2VyLCBjb21wbGV4LnJlYWwsIGZsb2F0LnJlYWwsIGludC5fX2FkZF9fXQorICAgICAgICB0eXBlcyA9IFsnbWV0aG9kJywgJ21lbWJlcicsICdnZXRzZXQnLCAnd3JhcHBlciddCisKKyAgICAgICAgIyBtYWtlIHN1cmUgd2UgaGF2ZSBhbiBleGFtcGxlIG9mIGVhY2ggdHlwZSBvZiBkZXNjcmlwdG9yCisgICAgICAgIGZvciBkLCBuIGluIHppcChkZXNjcmlwdG9ycywgdHlwZXMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGQpLl9fbmFtZV9fLCBuICsgJ19kZXNjcmlwdG9yJykKKworICAgICAgICBmb3IgZCBpbiBkZXNjcmlwdG9yczoKKyAgICAgICAgICAgIHF1YWxuYW1lID0gZC5fX29iamNsYXNzX18uX19xdWFsbmFtZV9fICsgJy4nICsgZC5fX25hbWVfXworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLl9fcXVhbG5hbWVfXywgcXVhbG5hbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIubG93ZXIuX19xdWFsbmFtZV9fLCAnc3RyLmxvd2VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV4LnJlYWwuX19xdWFsbmFtZV9fLCAnY29tcGxleC5yZWFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdC5yZWFsLl9fcXVhbG5hbWVfXywgJ2Zsb2F0LnJlYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludC5fX2FkZF9fLl9fcXVhbG5hbWVfXywgJ2ludC5fX2FkZF9fJykKKworICAgIGRlZiB0ZXN0X3F1YWxuYW1lX2RpY3Qoc2VsZik6CisgICAgICAgIG5zID0geydfX3F1YWxuYW1lX18nOiAnc29tZS5uYW1lJ30KKyAgICAgICAgdHAgPSB0eXBlKCdGb28nLCAoKSwgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHAuX19xdWFsbmFtZV9fLCAnc29tZS5uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cC5fX2RpY3RfX1snX19xdWFsbmFtZV9fJ10sICdzb21lLm5hbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLCB7J19fcXVhbG5hbWVfXyc6ICdzb21lLm5hbWUnfSkKKworICAgICAgICBucyA9IHsnX19xdWFsbmFtZV9fJzogMX0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0eXBlLCAnRm9vJywgKCksIG5zKQorCiAgICAgZGVmIHRlc3RfY3ljbGVfdGhyb3VnaF9kaWN0KHNlbGYpOgogICAgICAgICAjIFNlZSBidWcgIzE0Njk2MjkKICAgICAgICAgY2xhc3MgWChkaWN0KToKQEAgLTQ0NzEsNiArNDUyNywyNyBAQAogICAgICAgICBmb3IgbyBpbiBnYy5nZXRfb2JqZWN0cygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0eXBlKG8pLCBYKQogCisgICAgZGVmIHRlc3Rfb2JqZWN0X25ld19hbmRfaW5pdF93aXRoX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxNjgzMzY4CisgICAgICAgIGNsYXNzIE92ZXJyaWRlTmVpdGhlcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPdmVycmlkZU5laXRoZXIsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3ZlcnJpZGVOZWl0aGVyLCBrdz0xKQorICAgICAgICBjbGFzcyBPdmVycmlkZU5ldzoKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgZm9vLCBrdz0wLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKQorICAgICAgICBjbGFzcyBPdmVycmlkZUluaXQ6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZm9vLCBrdz0wLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBjbGFzcyBPdmVycmlkZUJvdGgoT3ZlcnJpZGVOZXcsIE92ZXJyaWRlSW5pdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBjYXNlIGluIE92ZXJyaWRlTmV3LCBPdmVycmlkZUluaXQsIE92ZXJyaWRlQm90aDoKKyAgICAgICAgICAgIGNhc2UoMSkKKyAgICAgICAgICAgIGNhc2UoMSwga3c9MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2FzZSwgMSwgMiwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2FzZSwgMSwgMiwgZm9vPTMpCisKKwogY2xhc3MgRGljdFByb3h5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDQ3OCw2ICs0NTU1LDggQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuQyA9IEMKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxfXycpCiAgICAgZGVmIHRlc3RfaXRlcl9rZXlzKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgZGljdC1wcm94eSBrZXlzLi4uCiAgICAgICAgIGl0ID0gc2VsZi5DLl9fZGljdF9fLmtleXMoKQpAQCAtNDQ4NSwxNSArNDU2NCwxOSBAQAogICAgICAgICBrZXlzID0gbGlzdChpdCkKICAgICAgICAga2V5cy5zb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXlzLCBbJ19fZGljdF9fJywgJ19fZG9jX18nLCAnX19tb2R1bGVfXycsCi0gICAgICAgICAgICAnX193ZWFrcmVmX18nLCAnbWV0aCddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19xdWFsbmFtZV9fJywgJ19fd2Vha3JlZl9fJywgJ21ldGgnXSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxfXycpCiAgICAgZGVmIHRlc3RfaXRlcl92YWx1ZXMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBkaWN0LXByb3h5IHZhbHVlcy4uLgogICAgICAgICBpdCA9IHNlbGYuQy5fX2RpY3RfXy52YWx1ZXMoKQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaXQsIGxpc3QpCiAgICAgICAgIHZhbHVlcyA9IGxpc3QoaXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZhbHVlcyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZhbHVlcyksIDYpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2FsX18nKQogICAgIGRlZiB0ZXN0X2l0ZXJfaXRlbXMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBkaWN0LXByb3h5IGl0ZXJpdGVtcy4uLgogICAgICAgICBpdCA9IHNlbGYuQy5fX2RpY3RfXy5pdGVtcygpCkBAIC00NTAxLDcgKzQ1ODQsNyBAQAogICAgICAgICBrZXlzID0gW2l0ZW1bMF0gZm9yIGl0ZW0gaW4gaXRdCiAgICAgICAgIGtleXMuc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5cywgWydfX2RpY3RfXycsICdfX2RvY19fJywgJ19fbW9kdWxlX18nLAotICAgICAgICAgICAgJ19fd2Vha3JlZl9fJywgJ21ldGgnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcXVhbG5hbWVfXycsICdfX3dlYWtyZWZfXycsICdtZXRoJ10pCiAKICAgICBkZWYgdGVzdF9kaWN0X3R5cGVfd2l0aF9tZXRhY2xhc3Moc2VsZik6CiAgICAgICAgICMgVGVzdGluZyB0eXBlIG9mIF9fZGljdF9fIHdoZW4gbWV0YWNsYXNzIHNldC4uLgpAQCAtNDUxNSwxOSArNDU5OCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoQy5fX2RpY3RfXyksIHR5cGUoQi5fX2RpY3RfXykpCiAKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgotICAgICAgICAjIFRlc3RpbmcgZGljdF9wcm94eS5fX3JlcHJfXwotICAgICAgICBkZWYgc29ydGVkX2RpY3RfcmVwcihyZXByXyk6Ci0gICAgICAgICAgICAjIEdpdmVuIHRoZSByZXByIG9mIGEgZGljdCwgc29ydCB0aGUga2V5cwotICAgICAgICAgICAgYXNzZXJ0IHJlcHJfLnN0YXJ0c3dpdGgoJ3snKQotICAgICAgICAgICAgYXNzZXJ0IHJlcHJfLmVuZHN3aXRoKCd9JykKLSAgICAgICAgICAgIGt2cyA9IHJlcHJfWzE6LTFdLnNwbGl0KCcsICcpCi0gICAgICAgICAgICByZXR1cm4gJ3snICsgJywgJy5qb2luKHNvcnRlZChrdnMpKSArICd9JwotICAgICAgICBkaWN0XyA9IHtrOiB2IGZvciBrLCB2IGluIHNlbGYuQy5fX2RpY3RfXy5pdGVtcygpfQotICAgICAgICByZXByXyA9IHJlcHIoc2VsZi5DLl9fZGljdF9fKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcl8uc3RhcnRzd2l0aCgnZGljdF9wcm94eSgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHJfLmVuZHN3aXRoKCcpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkX2RpY3RfcmVwcihyZXByX1tsZW4oJ2RpY3RfcHJveHkoJyk6LWxlbignKScpXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkX2RpY3RfcmVwcigneyFyfScuZm9ybWF0KGRpY3RfKSkpCisgICAgICAgICMgVGVzdGluZyBtYXBwaW5ncHJveHkuX19yZXByX18uCisgICAgICAgICMgV2UgY2FuJ3QgYmxpbmRseSBjb21wYXJlIHdpdGggdGhlIHJlcHIgb2YgYW5vdGhlciBkaWN0IGFzIG9yZGVyaW5nCisgICAgICAgICMgb2Yga2V5cyBhbmQgdmFsdWVzIGlzIGFyYml0cmFyeSBhbmQgbWF5IGRpZmZlci4KKyAgICAgICAgciA9IHJlcHIoc2VsZi5DLl9fZGljdF9fKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKCdtYXBwaW5ncHJveHkoJyksIHIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLmVuZHN3aXRoKCcpJyksIHIpCisgICAgICAgIGZvciBrLCB2IGluIHNlbGYuQy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigneyFyfTogeyFyfScuZm9ybWF0KGssIHYpLCByKQogCiAKIGNsYXNzIFBUeXBlc0xvbmdJbml0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00NTUyLDEwICs0NjMwLDM4IEBACiAgICAgICAgIHR5cGUubXJvKHR1cGxlKQogCiAKK2NsYXNzIE1pc2NUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdHlwZV9sb29rdXBfbXJvX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTQxOTk6IF9QeVR5cGVfTG9va3VwKCkgaGFzIHRvIGtlZXAgYSBzdHJvbmcgcmVmZXJlbmNlIHRvCisgICAgICAgICMgdGhlIHR5cGUgTVJPIGJlY2F1c2UgaXQgbWF5IGJlIG1vZGlmaWVkIGR1cmluZyB0aGUgbG9va3VwLCBpZgorICAgICAgICAjIF9fYmFzZXNfXyBpcyBzZXQgZHVyaW5nIHRoZSBsb29rdXAgZm9yIGV4YW1wbGUuCisgICAgICAgIGNsYXNzIE15S2V5KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2goJ215a2V5JykKKworICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgWC5fX2Jhc2VzX18gPSAoQmFzZTIsKQorCisgICAgICAgIGNsYXNzIEJhc2Uob2JqZWN0KToKKyAgICAgICAgICAgIG15a2V5ID0gJ2Zyb20gQmFzZScKKyAgICAgICAgICAgIG15a2V5MiA9ICdmcm9tIEJhc2UnCisKKyAgICAgICAgY2xhc3MgQmFzZTIob2JqZWN0KToKKyAgICAgICAgICAgIG15a2V5ID0gJ2Zyb20gQmFzZTInCisgICAgICAgICAgICBteWtleTIgPSAnZnJvbSBCYXNlMicKKworICAgICAgICBYID0gdHlwZSgnWCcsIChCYXNlLCksIHtNeUtleSgpOiA1fSkKKyAgICAgICAgIyBteWtleSBpcyByZWFkIGZyb20gQmFzZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFgubXlrZXksICdmcm9tIEJhc2UnKQorICAgICAgICAjIG15a2V5MiBpcyByZWFkIGZyb20gQmFzZTIgYmVjYXVzZSBNeUtleS5fX2VxX18gaGFzIHNldCBfX2Jhc2VzX18KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLm15a2V5MiwgJ2Zyb20gQmFzZTInKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICAjIFJ1biBhbGwgbG9jYWwgdGVzdCBjYXNlcywgd2l0aCBQVHlwZXNMb25nSW5pdFRlc3QgZmlyc3QuCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUFR5cGVzTG9uZ0luaXRUZXN0LCBPcGVyYXRvcnNUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NQcm9wZXJ0aWVzQW5kTWV0aG9kcywgRGljdFByb3h5VGVzdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NQcm9wZXJ0aWVzQW5kTWV0aG9kcywgRGljdFByb3h5VGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgTWlzY1Rlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5IGIvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQppbmRleCAyZGIzZDMzLi5mNDk1ZTE4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKQEAgLTE3MCw2ICsxNzAsNyBAQAogICAgICAnX19jb250YWluc19fJywKICAgICAgJ19fZGVsYXR0cl9fJywKICAgICAgJ19fZGVsaXRlbV9fJywKKyAgICAgJ19fZGlyX18nLAogICAgICAnX19kb2NfXycsCiAgICAgICdfX2VxX18nLAogICAgICAnX19mb3JtYXRfXycsCkBAIC0xOTksNiArMjAwLDggQEAKICAgICAgJ19fc3RyX18nLAogICAgICAnX19zdWJjbGFzc2hvb2tfXycsCiAgICAgICdhcHBlbmQnLAorICAgICAnY2xlYXInLAorICAgICAnY29weScsCiAgICAgICdjb3VudCcsCiAgICAgICdleHRlbmQnLAogICAgICAnaW5kZXgnLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZjRlMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKQEAgLTAsMCArMSw5NCBAQAorIyBUZXN0IGNhc2UgZm9yIHRoZSBzZWxlY3QuZGV2cG9sbCgpIGZ1bmN0aW9uCisKKyMgSW5pdGlhbCB0ZXN0cyBhcmUgY29waWVkIGFzIGlzIGZyb20gInRlc3RfcG9sbC5weSIKKworaW1wb3J0IG9zLCBzZWxlY3QsIHJhbmRvbSwgdW5pdHRlc3QsIHN5cworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0CisKK3RyeToKKyAgICBzZWxlY3QuZGV2cG9sbAorZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzZWxlY3QuZGV2cG9sbCBub3QgZGVmaW5lZCAtLSBza2lwcGluZyB0ZXN0X2RldnBvbGwiKQorCisKK2RlZiBmaW5kX3JlYWR5X21hdGNoaW5nKHJlYWR5LCBmbGFnKToKKyAgICBtYXRjaCA9IFtdCisgICAgZm9yIGZkLCBtb2RlIGluIHJlYWR5OgorICAgICAgICBpZiBtb2RlICYgZmxhZzoKKyAgICAgICAgICAgIG1hdGNoLmFwcGVuZChmZCkKKyAgICByZXR1cm4gbWF0Y2gKKworY2xhc3MgRGV2UG9sbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2RldnBvbGwxKHNlbGYpOgorICAgICAgICAjIEJhc2ljIGZ1bmN0aW9uYWwgdGVzdCBvZiBwb2xsIG9iamVjdAorICAgICAgICAjIENyZWF0ZSBhIGJ1bmNoIG9mIHBpcGUgYW5kIHRlc3QgdGhhdCBwb2xsIHdvcmtzIHdpdGggdGhlbS4KKworICAgICAgICBwID0gc2VsZWN0LmRldnBvbGwoKQorCisgICAgICAgIE5VTV9QSVBFUyA9IDEyCisgICAgICAgIE1TRyA9IGIiIFRoaXMgaXMgYSB0ZXN0LiIKKyAgICAgICAgTVNHX0xFTiA9IGxlbihNU0cpCisgICAgICAgIHJlYWRlcnMgPSBbXQorICAgICAgICB3cml0ZXJzID0gW10KKyAgICAgICAgcjJ3ID0ge30KKyAgICAgICAgdzJyID0ge30KKworICAgICAgICBmb3IgaSBpbiByYW5nZShOVU1fUElQRVMpOgorICAgICAgICAgICAgcmQsIHdyID0gb3MucGlwZSgpCisgICAgICAgICAgICBwLnJlZ2lzdGVyKHJkKQorICAgICAgICAgICAgcC5tb2RpZnkocmQsIHNlbGVjdC5QT0xMSU4pCisgICAgICAgICAgICBwLnJlZ2lzdGVyKHdyLCBzZWxlY3QuUE9MTE9VVCkKKyAgICAgICAgICAgIHJlYWRlcnMuYXBwZW5kKHJkKQorICAgICAgICAgICAgd3JpdGVycy5hcHBlbmQod3IpCisgICAgICAgICAgICByMndbcmRdID0gd3IKKyAgICAgICAgICAgIHcyclt3cl0gPSByZAorCisgICAgICAgIGJ1ZnMgPSBbXQorCisgICAgICAgIHdoaWxlIHdyaXRlcnM6CisgICAgICAgICAgICByZWFkeSA9IHAucG9sbCgpCisgICAgICAgICAgICByZWFkeV93cml0ZXJzID0gZmluZF9yZWFkeV9tYXRjaGluZyhyZWFkeSwgc2VsZWN0LlBPTExPVVQpCisgICAgICAgICAgICBpZiBub3QgcmVhZHlfd3JpdGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIm5vIHBpcGVzIHJlYWR5IGZvciB3cml0aW5nIikKKyAgICAgICAgICAgIHdyID0gcmFuZG9tLmNob2ljZShyZWFkeV93cml0ZXJzKQorICAgICAgICAgICAgb3Mud3JpdGUod3IsIE1TRykKKworICAgICAgICAgICAgcmVhZHkgPSBwLnBvbGwoKQorICAgICAgICAgICAgcmVhZHlfcmVhZGVycyA9IGZpbmRfcmVhZHlfbWF0Y2hpbmcocmVhZHksIHNlbGVjdC5QT0xMSU4pCisgICAgICAgICAgICBpZiBub3QgcmVhZHlfcmVhZGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIm5vIHBpcGVzIHJlYWR5IGZvciByZWFkaW5nIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3cyclt3cl1dLCByZWFkeV9yZWFkZXJzKQorICAgICAgICAgICAgcmQgPSByZWFkeV9yZWFkZXJzWzBdCisgICAgICAgICAgICBidWYgPSBvcy5yZWFkKHJkLCBNU0dfTEVOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYnVmKSwgTVNHX0xFTikKKyAgICAgICAgICAgIGJ1ZnMuYXBwZW5kKGJ1ZikKKyAgICAgICAgICAgIG9zLmNsb3NlKHIyd1tyZF0pIDsgb3MuY2xvc2UocmQpCisgICAgICAgICAgICBwLnVucmVnaXN0ZXIocjJ3W3JkXSkKKyAgICAgICAgICAgIHAudW5yZWdpc3RlcihyZCkKKyAgICAgICAgICAgIHdyaXRlcnMucmVtb3ZlKHIyd1tyZF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZzLCBbTVNHXSAqIE5VTV9QSVBFUykKKworICAgIGRlZiB0ZXN0X3RpbWVvdXRfb3ZlcmZsb3coc2VsZik6CisgICAgICAgIHBvbGxzdGVyID0gc2VsZWN0LmRldnBvbGwoKQorICAgICAgICB3LCByID0gb3MucGlwZSgpCisgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKHcpCisKKyAgICAgICAgcG9sbHN0ZXIucG9sbCgtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgLTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHBvbGxzdGVyLnBvbGwsIC0xIDw8IDMxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAtMSA8PCA2NCkKKworICAgICAgICBwb2xsc3Rlci5wb2xsKDApCisgICAgICAgIHBvbGxzdGVyLnBvbGwoMSkKKyAgICAgICAgcG9sbHN0ZXIucG9sbCgxIDw8IDMwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAxIDw8IDMxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAxIDw8IDYzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAxIDw8IDY0KQorCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KERldlBvbGxUZXN0cykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CmluZGV4IGQyNzQwYTMuLmRkNGQ1NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3QucHkKQEAgLTIsNyArMiw5IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogaW1wb3J0IGNvbGxlY3Rpb25zLCByYW5kb20sIHN0cmluZworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogaW1wb3J0IGdjLCB3ZWFrcmVmCitpbXBvcnQgcGlja2xlCiAKIAogY2xhc3MgRGljdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMzE5LDYgKzMyMSwyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hlZDIuaGFzaF9jb3VudCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQxLmVxX2NvdW50ICsgaGFzaGVkMi5lcV9jb3VudCwgMSkKIAorICAgIGRlZiB0ZXN0X3NldGl0ZW1fYXRvbWljX2F0X3Jlc2l6ZShzZWxmKToKKyAgICAgICAgY2xhc3MgSGFzaGVkKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5oYXNoX2NvdW50ID0gMAorICAgICAgICAgICAgICAgIHNlbGYuZXFfY291bnQgPSAwCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5oYXNoX2NvdW50ICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gNDIKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHNlbGYuZXFfY291bnQgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiBpZChzZWxmKSA9PSBpZChvdGhlcikKKyAgICAgICAgaGFzaGVkMSA9IEhhc2hlZCgpCisgICAgICAgICMgNSBpdGVtcworICAgICAgICB5ID0ge2hhc2hlZDE6IDUsIDA6IDAsIDE6IDEsIDI6IDIsIDM6IDN9CisgICAgICAgIGhhc2hlZDIgPSBIYXNoZWQoKQorICAgICAgICAjIDZ0aCBpdGVtIGZvcmNlcyBhIHJlc2l6ZQorICAgICAgICB5W2hhc2hlZDJdID0gW10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQxLmhhc2hfY291bnQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGVkMi5oYXNoX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hlZDEuZXFfY291bnQgKyBoYXNoZWQyLmVxX2NvdW50LCAxKQorCiAgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKICAgICAgICAgIyBkaWN0LnBvcGl0ZW0oKQogICAgICAgICBmb3IgY29weW1vZGUgaW4gLTEsICsxOgpAQCAtMzc5LDcgKzQwMiw3IEBACiAgICAgICAgIHguZmFpbCA9IFRydWUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjLCBkLnBvcCwgeCkKIAotICAgIGRlZiB0ZXN0X211dGF0aW5naXRlcmF0aW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X211dGF0aW5nX2l0ZXJhdGlvbihzZWxmKToKICAgICAgICAgIyBjaGFuZ2luZyBkaWN0IHNpemUgZHVyaW5nIGl0ZXJhdGlvbgogICAgICAgICBkID0ge30KICAgICAgICAgZFsxXSA9IDEKQEAgLTM4Nyw2ICs0MTAsMzIgQEAKICAgICAgICAgICAgIGZvciBpIGluIGQ6CiAgICAgICAgICAgICAgICAgZFtpKzFdID0gMQogCisgICAgZGVmIHRlc3RfbXV0YXRpbmdfbG9va3VwKHNlbGYpOgorICAgICAgICAjIGNoYW5naW5nIGRpY3QgZHVyaW5nIGEgbG9va3VwIChpc3N1ZSAjMTQ0MTcpCisgICAgICAgIGNsYXNzIE5hc3R5S2V5OgorICAgICAgICAgICAgbXV0YXRlX2RpY3QgPSBOb25lCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAjIGhhc2ggY29sbGlzaW9uIQorICAgICAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIGlmIE5hc3R5S2V5Lm11dGF0ZV9kaWN0OgorICAgICAgICAgICAgICAgICAgICBteWRpY3QsIGtleSA9IE5hc3R5S2V5Lm11dGF0ZV9kaWN0CisgICAgICAgICAgICAgICAgICAgIE5hc3R5S2V5Lm11dGF0ZV9kaWN0ID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBkZWwgbXlkaWN0W2tleV0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA9PSBvdGhlci52YWx1ZQorCisgICAgICAgIGtleTEgPSBOYXN0eUtleSgxKQorICAgICAgICBrZXkyID0gTmFzdHlLZXkoMikKKyAgICAgICAgZCA9IHtrZXkxOiAxfQorICAgICAgICBOYXN0eUtleS5tdXRhdGVfZGljdCA9IChkLCBrZXkxKQorICAgICAgICBkW2tleTJdID0gMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHtrZXkyOiAyfSkKKwogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIGQgPSB7fQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZCksICd7fScpCkBAIC03NzYsNiArODI1LDc1IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuX3RyYWNrZWQoTXlEaWN0KCkpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgZGF0YSA9IHsxOiJhIiwgMjoiYiIsIDM6ImMifQorICAgICAgICBpdCA9IGl0ZXIoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoaXQpLCBzb3J0ZWQoZGF0YSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZHJvcCA9IG5leHQoaXQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIGRlbCBkYXRhW2Ryb3BdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGl0KSwgc29ydGVkKGRhdGEpKQorCisgICAgZGVmIHRlc3RfaXRlbWl0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBkYXRhID0gezE6ImEiLCAyOiJiIiwgMzoiYyJ9CisgICAgICAgICMgZGljdHZpZXdzIGFyZW4ndCBwaWNrbGFibGUsIG9ubHkgdGhlaXIgaXRlcmF0b3JzCisgICAgICAgIGl0b3JnID0gaXRlcihkYXRhLml0ZW1zKCkpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICMgbm90ZSB0aGF0IHRoZSB0eXBlIG9mIHR5cGUgb2YgdGhlIHVucGlja2xlZCBpdGVyYXRvcgorICAgICAgICAjIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgb3JpZ2luYWwuICBJdCBpcworICAgICAgICAjIG1lcmVseSBhbiBvYmplY3Qgc3VwcG9ydGluZyB0aGUgaXRlcmF0b3IgcHJvdG9jb2wsIHlpZWxkaW5nCisgICAgICAgICMgdGhlIHNhbWUgb2JqZWN0cyBhcyB0aGUgb3JpZ2luYWwgb25lLgorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShpdCwgY29sbGVjdGlvbnMuYWJjLkl0ZXJhdG9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KGl0KSwgZGF0YSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBkcm9wID0gbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgZGVsIGRhdGFbZHJvcFswXV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KGl0KSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X3ZhbHVlc2l0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBkYXRhID0gezE6ImEiLCAyOiJiIiwgMzoiYyJ9CisgICAgICAgICMgZGF0YS52YWx1ZXMoKSBpc24ndCBwaWNrbGFibGUsIG9ubHkgaXRzIGl0ZXJhdG9yCisgICAgICAgIGl0ID0gaXRlcihkYXRhLnZhbHVlcygpKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChsaXN0KGl0KSksIHNvcnRlZChsaXN0KGRhdGEudmFsdWVzKCkpKSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBkcm9wID0gbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdmFsdWVzID0gbGlzdChpdCkgKyBbZHJvcF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQodmFsdWVzKSwgc29ydGVkKGxpc3QoZGF0YS52YWx1ZXMoKSkpKQorCisgICAgZGVmIHRlc3RfaW5zdGFuY2VfZGljdF9nZXRhdHRyX3N0cl9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZyk6CisgICAgICAgICAgICAgICAgc2VsZi5tc2cgPSBtc2cKKyAgICAgICAgZiA9IEZvbygnMTIzJykKKyAgICAgICAgY2xhc3MgX3N0cihzdHIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYubXNnLCBnZXRhdHRyKGYsIF9zdHIoJ21zZycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLm1zZywgZi5fX2RpY3RfX1tfc3RyKCdtc2cnKV0pCisKKyAgICBkZWYgdGVzdF9vYmplY3Rfc2V0X2l0ZW1fc2luZ2xlX2luc3RhbmNlX25vbl9zdHJfa2V5KHNlbGYpOgorICAgICAgICBjbGFzcyBGb286IHBhc3MKKyAgICAgICAgZiA9IEZvbygpCisgICAgICAgIGYuX19kaWN0X19bMV0gPSAxCisgICAgICAgIGYuYSA9ICdhJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19kaWN0X18sIHsxOjEsICdhJzonYSd9KQogCiBmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaXMucHkgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQppbmRleCA1YzU5ZWFhLi4xYmNkNjkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rpcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQpAQCAtMSwxMSArMSwzNSBAQAogIyBNaW5pbWFsIHRlc3RzIGZvciBkaXMgbW9kdWxlCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNhcHR1cmVkX3N0ZG91dAoraW1wb3J0IGRpZmZsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGRpcwogaW1wb3J0IGlvCiAKK2NsYXNzIF9DOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgc2VsZi54ID0geCA9PSAxCisKK2Rpc19jX2luc3RhbmNlX21ldGhvZCA9ICIiIlwKKyAlLTRkICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoeCkKKyAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKHNlbGYpCisgICAgICAgICAgICAgMTIgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisiIiIgJSAoX0MuX19pbml0X18uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLCkKKworZGlzX2NfaW5zdGFuY2VfbWV0aG9kX2J5dGVzID0gIiIiXAorICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAxICgxKQorICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQorICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAyICg9PSkKKyAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorIiIiCiAKIGRlZiBfZihhKToKICAgICBwcmludChhKQpAQCAtMTQsNyArMzgsNyBAQAogZGlzX2YgPSAiIiJcCiAgJS00ZCAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHByaW50KQogICAgICAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhKQotICAgICAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCiAgICAgICAgICAgICAgIDkgUE9QX1RPUAogCiAgJS00ZCAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCkBAIC0yMyw2ICs0NywxNiBAQAogICAgICAgIF9mLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMikKIAogCitkaXNfZl9jb19jb2RlID0gIiIiXAorICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAwICgwKQorICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAwICgwKQorICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQorICAgICAgICAgIDkgUE9QX1RPUAorICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQorICAgICAgICAgMTMgUkVUVVJOX1ZBTFVFCisiIiIKKworCiBkZWYgYnVnNzA4OTAxKCk6CiAgICAgZm9yIHJlcyBpbiByYW5nZSgxLAogICAgICAgICAgICAgICAgICAgICAgMTApOgpAQCAtMzQsNyArNjgsNyBAQAogICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQogCiAgJS00ZCAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDEwKQotICAgICAgICAgICAgIDEyIENBTExfRlVOQ1RJT04gICAgICAgICAgICAyCisgICAgICAgICAgICAgMTIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIgKDIgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCiAgICAgICAgICAgICAgMTUgR0VUX0lURVIKICAgICAgICAgPj4gICAxNiBGT1JfSVRFUiAgICAgICAgICAgICAgICAgNiAodG8gMjUpCiAgICAgICAgICAgICAgMTkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHJlcykKQEAgLTEzOCwxOCArMTcyLDI3IEBACiAiIiIKIAogY2xhc3MgRGlzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBkb19kaXNhc3NlbWJseV90ZXN0KHNlbGYsIGZ1bmMsIGV4cGVjdGVkKToKKworICAgIGRlZiBnZXRfZGlzYXNzZW1ibHkoc2VsZiwgZnVuYywgbGFzdGk9LTEsIHdyYXBwZXI9VHJ1ZSk6CiAgICAgICAgIHMgPSBpby5TdHJpbmdJTygpCiAgICAgICAgIHNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICBzeXMuc3Rkb3V0ID0gcwotICAgICAgICBkaXMuZGlzKGZ1bmMpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAotICAgICAgICBnb3QgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgd3JhcHBlcjoKKyAgICAgICAgICAgICAgICBkaXMuZGlzKGZ1bmMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpcy5kaXNhc3NlbWJsZShmdW5jLCBsYXN0aSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogICAgICAgICAjIFRyaW0gdHJhaWxpbmcgYmxhbmtzIChpZiBhbnkpLgotICAgICAgICBsaW5lcyA9IGdvdC5zcGxpdCgnXG4nKQotICAgICAgICBsaW5lcyA9IFtsaW5lLnJzdHJpcCgpIGZvciBsaW5lIGluIGxpbmVzXQotICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnNwbGl0KCJcbiIpCi0gICAgICAgIGltcG9ydCBkaWZmbGliCisgICAgICAgIHJldHVybiBbbGluZS5yc3RyaXAoKSBmb3IgbGluZSBpbiBzLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpXQorCisgICAgZGVmIGdldF9kaXNhc3NlbWJsZV9hc19zdHJpbmcoc2VsZiwgZnVuYywgbGFzdGk9LTEpOgorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5KGZ1bmMsIGxhc3RpLCBGYWxzZSkpCisKKyAgICBkZWYgZG9fZGlzYXNzZW1ibHlfdGVzdChzZWxmLCBmdW5jLCBleHBlY3RlZCk6CisgICAgICAgIGxpbmVzID0gc2VsZi5nZXRfZGlzYXNzZW1ibHkoZnVuYykKKyAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5zcGxpdGxpbmVzKCkKICAgICAgICAgaWYgZXhwZWN0ZWQgIT0gbGluZXM6CiAgICAgICAgICAgICBzZWxmLmZhaWwoCiAgICAgICAgICAgICAgICAgImV2ZW50cyBkaWQgbm90IG1hdGNoIGV4cGVjdGF0aW9uOlxuIiArCkBAIC0xNTcsNyArMjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcykpKQogCiAgICAgZGVmIHRlc3Rfb3BtYXAoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzLm9wbWFwWyJTVE9QX0NPREUiXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXMub3BtYXBbIk5PUCJdLCA5KQogICAgICAgICBzZWxmLmFzc2VydEluKGRpcy5vcG1hcFsiTE9BRF9DT05TVCJdLCBkaXMuaGFzY29uc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZGlzLm9wbWFwWyJTVE9SRV9OQU1FIl0sIGRpcy5oYXNuYW1lKQogCkBAIC0yMTEsNiArMjU0LDQ0IEBACiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChzaW1wbGVfc3RtdF9zdHIsIGRpc19zaW1wbGVfc3RtdF9zdHIpCiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChjb21wb3VuZF9zdG10X3N0ciwgZGlzX2NvbXBvdW5kX3N0bXRfc3RyKQogCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfYnl0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChfZi5fX2NvZGVfXy5jb19jb2RlLCBkaXNfZl9jb19jb2RlKQorCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfbWV0aG9kKHNlbGYpOgorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoX0MoMSkuX19pbml0X18sIGRpc19jX2luc3RhbmNlX21ldGhvZCkKKworICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX21ldGhvZF9ieXRlcyhzZWxmKToKKyAgICAgICAgbWV0aG9kX2J5dGVjb2RlID0gX0MoMSkuX19pbml0X18uX19jb2RlX18uY29fY29kZQorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QobWV0aG9kX2J5dGVjb2RlLCBkaXNfY19pbnN0YW5jZV9tZXRob2RfYnl0ZXMpCisKKyAgICBkZWYgdGVzdF9kaXNfbm9uZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIHN5cy5sYXN0X3RyYWNlYmFjaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZGlzLmRpcywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2Rpc19vYmplY3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZGlzLmRpcywgb2JqZWN0KCkpCisKKyAgICBkZWYgdGVzdF9kaXNfdHJhY2ViYWNrKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgc3lzLmxhc3RfdHJhY2ViYWNrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IHRiCisKKyAgICAgICAgdGJfZGlzID0gc2VsZi5nZXRfZGlzYXNzZW1ibGVfYXNfc3RyaW5nKHRiLnRiX2ZyYW1lLmZfY29kZSwgdGIudGJfbGFzdGkpCisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChOb25lLCB0Yl9kaXMpCisKKyAgICBkZWYgdGVzdF9kaXNfb2JqZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5kaXMsIG9iamVjdCgpKQorCiBjb2RlX2luZm9fY29kZV9pbmZvID0gIiIiXAogTmFtZTogICAgICAgICAgICAgIGNvZGVfaW5mbwogRmlsZW5hbWU6ICAgICAgICAgICguKikKQEAgLTI1OCw2ICszMzksNyBAQAogQ29uc3RhbnRzOgogICAgMDogTm9uZQogICAgMTogPGNvZGUgb2JqZWN0IGYgYXQgKC4qKSwgZmlsZSAiKC4qKSIsIGxpbmUgKC4qKT4KKyAgIDI6ICd0cmlja3kuPGxvY2Fscz4uZicKIFZhcmlhYmxlIG5hbWVzOgogICAgMDogeAogICAgMTogeQpAQCAtMzY0LDYgKzQ0NiwxMyBAQAogICAgICAgICAgICAgICAgIGRpcy5zaG93X2NvZGUoeCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LmdldHZhbHVlKCksIGV4cGVjdGVkKyJcbiIpCiAKKyAgICBkZWYgdGVzdF9jb2RlX2luZm9fb2JqZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5jb2RlX2luZm8sIG9iamVjdCgpKQorCisgICAgZGVmIHRlc3RfcHJldHR5X2ZsYWdzX25vX2ZsYWdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcy5wcmV0dHlfZmxhZ3MoMCksICcweDAnKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoRGlzVGVzdHMsIENvZGVJbmZvVGVzdHMpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQppbmRleCA1OTY5Y2UyLi40NGI5NTU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CkBAIC01LDYgKzUsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgZG9jdGVzdAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKIAogIyBOT1RFOiBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHRlc3RzIHJlbGF0aW5nIHRvIGludGVyYWN0aW9uIHdpdGgKQEAgLTQzMiw3ICs0MzMsNyBAQAogICAgID4+PiB0ZXN0cyA9IGZpbmRlci5maW5kKHNhbXBsZV9mdW5jKQogCiAgICAgPj4+IHByaW50KHRlc3RzKSAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKLSAgICBbPERvY1Rlc3Qgc2FtcGxlX2Z1bmMgZnJvbSAuLi46MTcgKDEgZXhhbXBsZSk+XQorICAgIFs8RG9jVGVzdCBzYW1wbGVfZnVuYyBmcm9tIC4uLjoxOCAoMSBleGFtcGxlKT5dCiAKIFRoZSBleGFjdCBuYW1lIGRlcGVuZHMgb24gaG93IHRlc3RfZG9jdGVzdCB3YXMgaW52b2tlZCwgc28gYWxsb3cgZm9yCiBsZWFkaW5nIHBhdGggY29tcG9uZW50cy4KQEAgLTE3NDUsMjI2ICsxNzQ2LDIyNyBAQAogCiAiIiIKIAotZGVmIHRlc3RfcGRiX3NldF90cmFjZSgpOgotICAgICIiIlVzaW5nIHBkYi5zZXRfdHJhY2UgZnJvbSBhIGRvY3Rlc3QuCitpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIG9yIG5vdCBzeXMuZ2V0dHJhY2UoKToKKyAgICBkZWYgdGVzdF9wZGJfc2V0X3RyYWNlKCk6CisgICAgICAgICIiIlVzaW5nIHBkYi5zZXRfdHJhY2UgZnJvbSBhIGRvY3Rlc3QuCiAKLSAgICBZb3UgY2FuIHVzZSBwZGIuc2V0X3RyYWNlIGZyb20gYSBkb2N0ZXN0LiAgVG8gZG8gc28sIHlvdSBtdXN0Ci0gICAgcmV0cmlldmUgdGhlIHNldF90cmFjZSBmdW5jdGlvbiBmcm9tIHRoZSBwZGIgbW9kdWxlIGF0IHRoZSB0aW1lCi0gICAgeW91IHVzZSBpdC4gIFRoZSBkb2N0ZXN0IG1vZHVsZSBjaGFuZ2VzIHN5cy5zdGRvdXQgc28gdGhhdCBpdCBjYW4KLSAgICBjYXB0dXJlIHByb2dyYW0gb3V0cHV0LiAgSXQgYWxzbyB0ZW1wb3JhcmlseSByZXBsYWNlcyBwZGIuc2V0X3RyYWNlCi0gICAgd2l0aCBhIHZlcnNpb24gdGhhdCByZXN0b3JlcyBzdGRvdXQuICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgeW91IHRvCi0gICAgc2VlIGRlYnVnZ2VyIG91dHB1dC4KKyAgICAgICAgWW91IGNhbiB1c2UgcGRiLnNldF90cmFjZSBmcm9tIGEgZG9jdGVzdC4gIFRvIGRvIHNvLCB5b3UgbXVzdAorICAgICAgICByZXRyaWV2ZSB0aGUgc2V0X3RyYWNlIGZ1bmN0aW9uIGZyb20gdGhlIHBkYiBtb2R1bGUgYXQgdGhlIHRpbWUKKyAgICAgICAgeW91IHVzZSBpdC4gIFRoZSBkb2N0ZXN0IG1vZHVsZSBjaGFuZ2VzIHN5cy5zdGRvdXQgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgY2FwdHVyZSBwcm9ncmFtIG91dHB1dC4gIEl0IGFsc28gdGVtcG9yYXJpbHkgcmVwbGFjZXMgcGRiLnNldF90cmFjZQorICAgICAgICB3aXRoIGEgdmVyc2lvbiB0aGF0IHJlc3RvcmVzIHN0ZG91dC4gIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciB5b3UgdG8KKyAgICAgICAgc2VlIGRlYnVnZ2VyIG91dHB1dC4KIAotICAgICAgPj4+IGRvYyA9ICcnJwotICAgICAgLi4uID4+PiB4ID0gNDIKLSAgICAgIC4uLiA+Pj4gcmFpc2UgRXhjZXB0aW9uKCdjbMOpJykKLSAgICAgIC4uLiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAuLi4gRXhjZXB0aW9uOiBjbMOpCi0gICAgICAuLi4gPj4+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQotICAgICAgLi4uICcnJwotICAgICAgPj4+IHBhcnNlciA9IGRvY3Rlc3QuRG9jVGVzdFBhcnNlcigpCi0gICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIHt9LCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJ1bm5lciA9IGRvY3Rlc3QuRG9jVGVzdFJ1bm5lcih2ZXJib3NlPUZhbHNlKQorICAgICAgICAgID4+PiBkb2MgPSAnJycKKyAgICAgICAgICAuLi4gPj4+IHggPSA0MgorICAgICAgICAgIC4uLiA+Pj4gcmFpc2UgRXhjZXB0aW9uKCdjbMOpJykKKyAgICAgICAgICAuLi4gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLiBFeGNlcHRpb246IGNsw6kKKyAgICAgICAgICAuLi4gPj4+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgIC4uLiAnJycKKyAgICAgICAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKKyAgICAgICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIHt9LCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQorICAgICAgICAgID4+PiBydW5uZXIgPSBkb2N0ZXN0LkRvY1Rlc3RSdW5uZXIodmVyYm9zZT1GYWxzZSkKIAotICAgIFRvIGRlbW9uc3RyYXRlIHRoaXMsIHdlJ2xsIGNyZWF0ZSBhIGZha2Ugc3RhbmRhcmQgaW5wdXQgdGhhdAotICAgIGNhcHR1cmVzIG91ciBkZWJ1Z2dlciBpbnB1dDoKKyAgICAgICAgVG8gZGVtb25zdHJhdGUgdGhpcywgd2UnbGwgY3JlYXRlIGEgZmFrZSBzdGFuZGFyZCBpbnB1dCB0aGF0CisgICAgICAgIGNhcHR1cmVzIG91ciBkZWJ1Z2dlciBpbnB1dDoKIAotICAgICAgPj4+IGltcG9ydCB0ZW1wZmlsZQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAncHJpbnQoeCknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgYnkgdGhlIGV4YW1wbGUKLSAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgICAuLi4gICAgJyddKQorICAgICAgICAgID4+PiBpbXBvcnQgdGVtcGZpbGUKKyAgICAgICAgICA+Pj4gcmVhbF9zdGRpbiA9IHN5cy5zdGRpbgorICAgICAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKKyAgICAgICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCisgICAgICAgICAgLi4uICAgICdjb250aW51ZScsICMgc3RvcCBkZWJ1Z2dpbmcKKyAgICAgICAgICAuLi4gICAgJyddKQogCi0gICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCi0gICAgICAuLi4gZmluYWxseTogc3lzLnN0ZGluID0gcmVhbF9zdGRpbgotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCi0gICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIChQZGIpIHByaW50KHgpCi0gICAgICA0MgotICAgICAgKFBkYikgY29udGludWUKLSAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MykKKyAgICAgICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCisgICAgICAgICAgLi4uIGZpbmFsbHk6IHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgICAtLVJldHVybi0tCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCisgICAgICAgICAgLT4gaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgKFBkYikgcHJpbnQoeCkKKyAgICAgICAgICA0MgorICAgICAgICAgIChQZGIpIGNvbnRpbnVlCisgICAgICAgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTAsIGF0dGVtcHRlZD0zKQogCi0gICAgICBZb3UgY2FuIGFsc28gcHV0IHBkYi5zZXRfdHJhY2UgaW4gYSBmdW5jdGlvbiBjYWxsZWQgZnJvbSBhIHRlc3Q6CisgICAgICAgICAgWW91IGNhbiBhbHNvIHB1dCBwZGIuc2V0X3RyYWNlIGluIGEgZnVuY3Rpb24gY2FsbGVkIGZyb20gYSB0ZXN0OgogCi0gICAgICA+Pj4gZGVmIGNhbGxzX3NldF90cmFjZSgpOgotICAgICAgLi4uICAgIHk9MgotICAgICAgLi4uICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgID4+PiBkZWYgY2FsbHNfc2V0X3RyYWNlKCk6CisgICAgICAgICAgLi4uICAgIHk9MgorICAgICAgICAgIC4uLiAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKIAotICAgICAgPj4+IGRvYyA9ICcnJwotICAgICAgLi4uID4+PiB4PTEKLSAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKLSAgICAgIC4uLiAnJycKLSAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAncHJpbnQoeSknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgaW4gdGhlIGZ1bmN0aW9uCi0gICAgICAuLi4gICAgJ3VwJywgICAgICAgIyBvdXQgb2YgZnVuY3Rpb24KLSAgICAgIC4uLiAgICAncHJpbnQoeCknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgYnkgdGhlIGV4YW1wbGUKLSAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgICAuLi4gICAgJyddKQorICAgICAgICAgID4+PiBkb2MgPSAnJycKKyAgICAgICAgICAuLi4gPj4+IHg9MQorICAgICAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgICAuLi4gJycnCisgICAgICAgICAgPj4+IHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCBnbG9iYWxzKCksICJmb28tYmFyQGJheiIsICJmb28tYmFyQGJhei5weSIsIDApCisgICAgICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KKyAgICAgICAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCisgICAgICAgICAgLi4uICAgICdwcmludCh5KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBpbiB0aGUgZnVuY3Rpb24KKyAgICAgICAgICAuLi4gICAgJ3VwJywgICAgICAgIyBvdXQgb2YgZnVuY3Rpb24KKyAgICAgICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCisgICAgICAgICAgLi4uICAgICdjb250aW51ZScsICMgc3RvcCBkZWJ1Z2dpbmcKKyAgICAgICAgICAuLi4gICAgJyddKQogCi0gICAgICA+Pj4gdHJ5OgotICAgICAgLi4uICAgICBydW5uZXIucnVuKHRlc3QpCi0gICAgICAuLi4gZmluYWxseToKLSAgICAgIC4uLiAgICAgc3lzLnN0ZGluID0gcmVhbF9zdGRpbgotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VbOF0+KDMpY2FsbHNfc2V0X3RyYWNlKCktPk5vbmUKLSAgICAgIC0+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQotICAgICAgKFBkYikgcHJpbnQoeSkKLSAgICAgIDIKLSAgICAgIChQZGIpIHVwCi0gICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKLSAgICAgIC0+IGNhbGxzX3NldF90cmFjZSgpCi0gICAgICAoUGRiKSBwcmludCh4KQotICAgICAgMQotICAgICAgKFBkYikgY29udGludWUKLSAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKKyAgICAgICAgICA+Pj4gdHJ5OgorICAgICAgICAgIC4uLiAgICAgcnVubmVyLnJ1bih0ZXN0KQorICAgICAgICAgIC4uLiBmaW5hbGx5OgorICAgICAgICAgIC4uLiAgICAgc3lzLnN0ZGluID0gcmVhbF9zdGRpbgorICAgICAgICAgIC0tUmV0dXJuLS0KKyAgICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZVs4XT4oMyljYWxsc19zZXRfdHJhY2UoKS0+Tm9uZQorICAgICAgICAgIC0+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgIChQZGIpIHByaW50KHkpCisgICAgICAgICAgMgorICAgICAgICAgIChQZGIpIHVwCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsxXT4oMSk8bW9kdWxlPigpCisgICAgICAgICAgLT4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgICAoUGRiKSBwcmludCh4KQorICAgICAgICAgIDEKKyAgICAgICAgICAoUGRiKSBjb250aW51ZQorICAgICAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKIAotICAgIER1cmluZyBpbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcsIHNvdXJjZSBjb2RlIGlzIHNob3duLCBldmVuIGZvcgotICAgIGRvY3Rlc3QgZXhhbXBsZXM6CisgICAgICAgIER1cmluZyBpbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcsIHNvdXJjZSBjb2RlIGlzIHNob3duLCBldmVuIGZvcgorICAgICAgICBkb2N0ZXN0IGV4YW1wbGVzOgogCi0gICAgICA+Pj4gZG9jID0gJycnCi0gICAgICAuLi4gPj4+IGRlZiBmKHgpOgotICAgICAgLi4uIC4uLiAgICAgZyh4KjIpCi0gICAgICAuLi4gPj4+IGRlZiBnKHgpOgotICAgICAgLi4uIC4uLiAgICAgcHJpbnQoeCszKQotICAgICAgLi4uIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCi0gICAgICAuLi4gPj4+IGYoMykKLSAgICAgIC4uLiAnJycKLSAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAyCi0gICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBnKCkKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAxCi0gICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBmKCkKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAzCi0gICAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZwotICAgICAgLi4uICAgICcnXSkKLSAgICAgID4+PiB0cnk6IHJ1bm5lci5ydW4odGVzdCkKLSAgICAgIC4uLiBmaW5hbGx5OiBzeXMuc3RkaW4gPSByZWFsX3N0ZGluCi0gICAgICAuLi4gIyBkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKLSAgICAgIC0tUmV0dXJuLS0KLSAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMV0+KDMpZygpLT5Ob25lCi0gICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIChQZGIpIGxpc3QKLSAgICAgICAgMSAgICAgZGVmIGcoeCk6Ci0gICAgICAgIDIgICAgICAgICBwcmludCh4KzMpCi0gICAgICAgIDMgIC0+ICAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIFtFT0ZdCi0gICAgICAoUGRiKSBuZXh0Ci0gICAgICAtLVJldHVybi0tCi0gICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzBdPigyKWYoKS0+Tm9uZQotICAgICAgLT4gZyh4KjIpCi0gICAgICAoUGRiKSBsaXN0Ci0gICAgICAgIDEgICAgIGRlZiBmKHgpOgotICAgICAgICAyICAtPiAgICAgZyh4KjIpCi0gICAgICBbRU9GXQotICAgICAgKFBkYikgbmV4dAotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCi0gICAgICAtPiBmKDMpCi0gICAgICAoUGRiKSBsaXN0Ci0gICAgICAgIDEgIC0+IGYoMykKLSAgICAgIFtFT0ZdCi0gICAgICAoUGRiKSBjb250aW51ZQotICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgICAgRmlsZSAiZm9vLWJhckBiYXoucHkiLCBsaW5lIDcsIGluIGZvby1iYXJAYmF6Ci0gICAgICBGYWlsZWQgZXhhbXBsZToKLSAgICAgICAgICBmKDMpCi0gICAgICBFeHBlY3RlZCBub3RoaW5nCi0gICAgICBHb3Q6Ci0gICAgICAgICAgOQotICAgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTEsIGF0dGVtcHRlZD0zKQotICAgICAgIiIiCisgICAgICAgICAgPj4+IGRvYyA9ICcnJworICAgICAgICAgIC4uLiA+Pj4gZGVmIGYoeCk6CisgICAgICAgICAgLi4uIC4uLiAgICAgZyh4KjIpCisgICAgICAgICAgLi4uID4+PiBkZWYgZyh4KToKKyAgICAgICAgICAuLi4gLi4uICAgICBwcmludCh4KzMpCisgICAgICAgICAgLi4uIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgLi4uID4+PiBmKDMpCisgICAgICAgICAgLi4uICcnJworICAgICAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQorICAgICAgICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCisgICAgICAgICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWworICAgICAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAyCisgICAgICAgICAgLi4uICAgICduZXh0JywgICAgICMgcmV0dXJuIGZyb20gZygpCisgICAgICAgICAgLi4uICAgICdsaXN0JywgICAgICMgbGlzdCBzb3VyY2UgZnJvbSBleGFtcGxlIDEKKyAgICAgICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBmKCkKKyAgICAgICAgICAuLi4gICAgJ2xpc3QnLCAgICAgIyBsaXN0IHNvdXJjZSBmcm9tIGV4YW1wbGUgMworICAgICAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCisgICAgICAgICAgLi4uICAgICcnXSkKKyAgICAgICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCisgICAgICAgICAgLi4uIGZpbmFsbHk6IHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgICAuLi4gIyBkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgICAtLVJldHVybi0tCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsxXT4oMylnKCktPk5vbmUKKyAgICAgICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKKyAgICAgICAgICAoUGRiKSBsaXN0CisgICAgICAgICAgICAxICAgICBkZWYgZyh4KToKKyAgICAgICAgICAgIDIgICAgICAgICBwcmludCh4KzMpCisgICAgICAgICAgICAzICAtPiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBuZXh0CisgICAgICAgICAgLS1SZXR1cm4tLQorICAgICAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMF0+KDIpZigpLT5Ob25lCisgICAgICAgICAgLT4gZyh4KjIpCisgICAgICAgICAgKFBkYikgbGlzdAorICAgICAgICAgICAgMSAgICAgZGVmIGYoeCk6CisgICAgICAgICAgICAyICAtPiAgICAgZyh4KjIpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBuZXh0CisgICAgICAgICAgLS1SZXR1cm4tLQorICAgICAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMl0+KDEpPG1vZHVsZT4oKS0+Tm9uZQorICAgICAgICAgIC0+IGYoMykKKyAgICAgICAgICAoUGRiKSBsaXN0CisgICAgICAgICAgICAxICAtPiBmKDMpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBjb250aW51ZQorICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICBGaWxlICJmb28tYmFyQGJhei5weSIsIGxpbmUgNywgaW4gZm9vLWJhckBiYXoKKyAgICAgICAgICBGYWlsZWQgZXhhbXBsZToKKyAgICAgICAgICAgICAgZigzKQorICAgICAgICAgIEV4cGVjdGVkIG5vdGhpbmcKKyAgICAgICAgICBHb3Q6CisgICAgICAgICAgICAgIDkKKyAgICAgICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MSwgYXR0ZW1wdGVkPTMpCisgICAgICAgICAgIiIiCiAKLWRlZiB0ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkKCk6Ci0gICAgIiIiVGhpcyBpbGx1c3RyYXRlcyBtb3JlLWRlbWFuZGluZyB1c2Ugb2Ygc2V0X3RyYWNlIHdpdGggbmVzdGVkIGZ1bmN0aW9ucy4KKyAgICBkZWYgdGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZCgpOgorICAgICAgICAiIiJUaGlzIGlsbHVzdHJhdGVzIG1vcmUtZGVtYW5kaW5nIHVzZSBvZiBzZXRfdHJhY2Ugd2l0aCBuZXN0ZWQgZnVuY3Rpb25zLgogCi0gICAgPj4+IGNsYXNzIEMob2JqZWN0KToKLSAgICAuLi4gICAgIGRlZiBjYWxsc19zZXRfdHJhY2Uoc2VsZik6Ci0gICAgLi4uICAgICAgICAgeSA9IDEKLSAgICAuLi4gICAgICAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAuLi4gICAgICAgICBzZWxmLmYxKCkKLSAgICAuLi4gICAgICAgICB5ID0gMgotICAgIC4uLiAgICAgZGVmIGYxKHNlbGYpOgotICAgIC4uLiAgICAgICAgIHggPSAxCi0gICAgLi4uICAgICAgICAgc2VsZi5mMigpCi0gICAgLi4uICAgICAgICAgeCA9IDIKLSAgICAuLi4gICAgIGRlZiBmMihzZWxmKToKLSAgICAuLi4gICAgICAgICB6ID0gMQotICAgIC4uLiAgICAgICAgIHogPSAyCisgICAgICAgID4+PiBjbGFzcyBDKG9iamVjdCk6CisgICAgICAgIC4uLiAgICAgZGVmIGNhbGxzX3NldF90cmFjZShzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgeSA9IDEKKyAgICAgICAgLi4uICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgIC4uLiAgICAgICAgIHNlbGYuZjEoKQorICAgICAgICAuLi4gICAgICAgICB5ID0gMgorICAgICAgICAuLi4gICAgIGRlZiBmMShzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgeCA9IDEKKyAgICAgICAgLi4uICAgICAgICAgc2VsZi5mMigpCisgICAgICAgIC4uLiAgICAgICAgIHggPSAyCisgICAgICAgIC4uLiAgICAgZGVmIGYyKHNlbGYpOgorICAgICAgICAuLi4gICAgICAgICB6ID0gMQorICAgICAgICAuLi4gICAgICAgICB6ID0gMgogCi0gICAgPj4+IGNhbGxzX3NldF90cmFjZSA9IEMoKS5jYWxsc19zZXRfdHJhY2UKKyAgICAgICAgPj4+IGNhbGxzX3NldF90cmFjZSA9IEMoKS5jYWxsc19zZXRfdHJhY2UKIAotICAgID4+PiBkb2MgPSAnJycKLSAgICAuLi4gPj4+IGEgPSAxCi0gICAgLi4uID4+PiBjYWxsc19zZXRfdHJhY2UoKQotICAgIC4uLiAnJycKLSAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKLSAgICA+Pj4gcnVubmVyID0gZG9jdGVzdC5Eb2NUZXN0UnVubmVyKHZlcmJvc2U9RmFsc2UpCi0gICAgPj4+IHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCBnbG9iYWxzKCksICJmb28tYmFyQGJheiIsICJmb28tYmFyQGJhei5weSIsIDApCi0gICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCi0gICAgLi4uICAgICdwcmludCh5KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBpbiB0aGUgZnVuY3Rpb24KLSAgICAuLi4gICAgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3ByaW50KHopJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KHgpJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KHkpJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KGZvbyknLAotICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgLi4uICAgICcnXSkKKyAgICAgICAgPj4+IGRvYyA9ICcnJworICAgICAgICAuLi4gPj4+IGEgPSAxCisgICAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgLi4uICcnJworICAgICAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKKyAgICAgICAgPj4+IHJ1bm5lciA9IGRvY3Rlc3QuRG9jVGVzdFJ1bm5lcih2ZXJib3NlPUZhbHNlKQorICAgICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIGdsb2JhbHMoKSwgImZvby1iYXJAYmF6IiwgImZvby1iYXJAYmF6LnB5IiwgMCkKKyAgICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KKyAgICAgICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWworICAgICAgICAuLi4gICAgJ3ByaW50KHkpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGluIHRoZSBmdW5jdGlvbgorICAgICAgICAuLi4gICAgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3ByaW50KHopJywKKyAgICAgICAgLi4uICAgICd1cCcsICdwcmludCh4KScsCisgICAgICAgIC4uLiAgICAndXAnLCAncHJpbnQoeSknLAorICAgICAgICAuLi4gICAgJ3VwJywgJ3ByaW50KGZvbyknLAorICAgICAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZworICAgICAgICAuLi4gICAgJyddKQogCi0gICAgPj4+IHRyeToKLSAgICAuLi4gICAgIHJ1bm5lci5ydW4odGVzdCkKLSAgICAuLi4gZmluYWxseToKLSAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KLSAgICAuLi4gIyBkb2N0ZXN0OiArUkVQT1JUX05ESUZGCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig1KWNhbGxzX3NldF90cmFjZSgpCi0gICAgLT4gc2VsZi5mMSgpCi0gICAgKFBkYikgcHJpbnQoeSkKLSAgICAxCi0gICAgKFBkYikgc3RlcAotICAgIC0tQ2FsbC0tCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig3KWYxKCkKLSAgICAtPiBkZWYgZjEoc2VsZik6Ci0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oOClmMSgpCi0gICAgLT4geCA9IDEKLSAgICAoUGRiKSBzdGVwCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig5KWYxKCkKLSAgICAtPiBzZWxmLmYyKCkKLSAgICAoUGRiKSBzdGVwCi0gICAgLS1DYWxsLS0KLSAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDExKWYyKCkKLSAgICAtPiBkZWYgZjIoc2VsZik6Ci0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTIpZjIoKQotICAgIC0+IHogPSAxCi0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTMpZjIoKQotICAgIC0+IHogPSAyCi0gICAgKFBkYikgcHJpbnQoeikKLSAgICAxCi0gICAgKFBkYikgdXAKLSAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDkpZjEoKQotICAgIC0+IHNlbGYuZjIoKQotICAgIChQZGIpIHByaW50KHgpCi0gICAgMQotICAgIChQZGIpIHVwCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig1KWNhbGxzX3NldF90cmFjZSgpCi0gICAgLT4gc2VsZi5mMSgpCi0gICAgKFBkYikgcHJpbnQoeSkKLSAgICAxCi0gICAgKFBkYikgdXAKLSAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKLSAgICAtPiBjYWxsc19zZXRfdHJhY2UoKQotICAgIChQZGIpIHByaW50KGZvbykKLSAgICAqKiogTmFtZUVycm9yOiBuYW1lICdmb28nIGlzIG5vdCBkZWZpbmVkCi0gICAgKFBkYikgY29udGludWUKLSAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MCwgYXR0ZW1wdGVkPTIpCi0iIiIKKyAgICAgICAgPj4+IHRyeToKKyAgICAgICAgLi4uICAgICBydW5uZXIucnVuKHRlc3QpCisgICAgICAgIC4uLiBmaW5hbGx5OgorICAgICAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgLi4uICMgZG9jdGVzdDogK1JFUE9SVF9ORElGRgorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDUpY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgLT4gc2VsZi5mMSgpCisgICAgICAgIChQZGIpIHByaW50KHkpCisgICAgICAgIDEKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICAtLUNhbGwtLQorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDcpZjEoKQorICAgICAgICAtPiBkZWYgZjEoc2VsZik6CisgICAgICAgIChQZGIpIHN0ZXAKKyAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig4KWYxKCkKKyAgICAgICAgLT4geCA9IDEKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDkpZjEoKQorICAgICAgICAtPiBzZWxmLmYyKCkKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICAtLUNhbGwtLQorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDExKWYyKCkKKyAgICAgICAgLT4gZGVmIGYyKHNlbGYpOgorICAgICAgICAoUGRiKSBzdGVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTIpZjIoKQorICAgICAgICAtPiB6ID0gMQorICAgICAgICAoUGRiKSBzdGVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTMpZjIoKQorICAgICAgICAtPiB6ID0gMgorICAgICAgICAoUGRiKSBwcmludCh6KQorICAgICAgICAxCisgICAgICAgIChQZGIpIHVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oOSlmMSgpCisgICAgICAgIC0+IHNlbGYuZjIoKQorICAgICAgICAoUGRiKSBwcmludCh4KQorICAgICAgICAxCisgICAgICAgIChQZGIpIHVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oNSljYWxsc19zZXRfdHJhY2UoKQorICAgICAgICAtPiBzZWxmLmYxKCkKKyAgICAgICAgKFBkYikgcHJpbnQoeSkKKyAgICAgICAgMQorICAgICAgICAoUGRiKSB1cAorICAgICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKKyAgICAgICAgLT4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgKFBkYikgcHJpbnQoZm9vKQorICAgICAgICAqKiogTmFtZUVycm9yOiBuYW1lICdmb28nIGlzIG5vdCBkZWZpbmVkCisgICAgICAgIChQZGIpIGNvbnRpbnVlCisgICAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKKyAgICAiIiIKIAogZGVmIHRlc3RfRG9jVGVzdFN1aXRlKCk6CiAgICAgIiIiRG9jVGVzdFN1aXRlIGNyZWF0ZXMgYSB1bml0dGVzdCB0ZXN0IHN1aXRlIGZyb20gYSBkb2N0ZXN0LgpAQCAtMjU0MSw3ICsyNTQzLDcgQEAKIAogZGVmIHRlc3RfY292ZXJhZ2UoY292ZXJkaXIpOgogICAgIHRyYWNlID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0cmFjZScpCi0gICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4LF0sCisgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCiAgICAgdHJhY2VyLnJ1bigndGVzdF9tYWluKCknKQogICAgIHIgPSB0cmFjZXIucmVzdWx0cygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R1bW15X3RocmVhZC5weSBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CmluZGV4IGM2MTA3OGQuLjJmYWZlMWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CkBAIC0zNSw4ICszNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiTG9jayBvYmplY3QgZGlkIG5vdCByZWxlYXNlIHByb3Blcmx5LiIpCiAKICAgICBkZWYgdGVzdF9pbXByb3Blcl9yZWxlYXNlKHNlbGYpOgotICAgICAgICAjTWFrZSBzdXJlIHJlbGVhc2Ugb2YgYW4gdW5sb2NrZWQgdGhyZWFkIHJhaXNlcyBfdGhyZWFkLmVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKF90aHJlYWQuZXJyb3IsIHNlbGYubG9jay5yZWxlYXNlKQorICAgICAgICAjTWFrZSBzdXJlIHJlbGVhc2Ugb2YgYW4gdW5sb2NrZWQgdGhyZWFkIHJhaXNlcyBSdW50aW1lRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLmxvY2sucmVsZWFzZSkKIAogICAgIGRlZiB0ZXN0X2NvbmRfYWNxdWlyZV9zdWNjZXNzKHNlbGYpOgogICAgICAgICAjTWFrZSBzdXJlIHRoZSBjb25kaXRpb25hbCBhY3F1aXJpbmcgb2YgdGhlIGxvY2sgd29ya3MuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVlYmJhNS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgotIyBlbWFpbCBwYWNrYWdlIHVuaXQgdGVzdHMKLQotIyBUaGUgc3BlY2lmaWMgdGVzdHMgbm93IGxpdmUgaW4gTGliL2VtYWlsL3Rlc3QKLWZyb20gZW1haWwudGVzdC50ZXN0X2VtYWlsIGltcG9ydCBzdWl0ZQotZnJvbSBlbWFpbC50ZXN0LnRlc3RfZW1haWxfY29kZWNzIGltcG9ydCBzdWl0ZSBhcyBjb2RlY3Nfc3VpdGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3Qoc3VpdGUoKSkKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChjb2RlY3Nfc3VpdGUoKSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIwNmFjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNTAgQEAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgZW1haWwKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBfX2ZpbGVfXyBhcyBsYW5kbWFyaworCisjIFJ1biBhbGwgdGVzdHMgaW4gcGFja2FnZSBmb3IgJy1tIHVuaXR0ZXN0IHRlc3QudGVzdF9lbWFpbCcKK2RlZiBsb2FkX3Rlc3RzKGxvYWRlciwgc3RhbmRhcmRfdGVzdHMsIHBhdHRlcm4pOgorICAgIHRoaXNfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgIGlmIHBhdHRlcm4gaXMgTm9uZToKKyAgICAgICAgcGF0dGVybiA9ICJ0ZXN0KiIKKyAgICBwYWNrYWdlX3Rlc3RzID0gbG9hZGVyLmRpc2NvdmVyKHN0YXJ0X2Rpcj10aGlzX2RpciwgcGF0dGVybj1wYXR0ZXJuKQorICAgIHN0YW5kYXJkX3Rlc3RzLmFkZFRlc3RzKHBhY2thZ2VfdGVzdHMpCisgICAgcmV0dXJuIHN0YW5kYXJkX3Rlc3RzCisKKworIyB1c2VkIGJ5IHJlZ3J0ZXN0IGFuZCBfX21haW5fXy4KK2RlZiB0ZXN0X21haW4oKToKKyAgICBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICMgVW5pdHRlc3QgbXVja3Mgd2l0aCB0aGUgcGF0aCwgc28gd2UgaGF2ZSB0byBzYXZlIGFuZCByZXN0b3JlCisgICAgIyBpdCB0byBrZWVwIHJlZ3J0ZXN0IGhhcHB5LgorICAgIHNhdmVwYXRoID0gc3lzLnBhdGhbOl0KKyAgICB0ZXN0LnN1cHBvcnQuX3J1bl9zdWl0ZSh1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlci5kaXNjb3ZlcihoZXJlKSkKKyAgICBzeXMucGF0aFs6XSA9IHNhdmVwYXRoCisKKworIyBoZWxwZXIgY29kZSB1c2VkIGJ5IGEgbnVtYmVyIG9mIHRlc3QgbW9kdWxlcy4KKworZGVmIG9wZW5maWxlKGZpbGVuYW1lLCAqYXJncywgKiprd3MpOgorICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGxhbmRtYXJrKSwgJ2RhdGEnLCBmaWxlbmFtZSkKKyAgICByZXR1cm4gb3BlbihwYXRoLCAqYXJncywgKiprd3MpCisKKworIyBCYXNlIHRlc3QgY2xhc3MKK2NsYXNzIFRlc3RFbWFpbEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbWF4RGlmZiA9IE5vbmUKKyAgICAjIEN1cnJlbnRseSB0aGUgZGVmYXVsdCBwb2xpY3kgaXMgY29tcGF0MzIuICBCeSBzZXR0aW5nIHRoYXQgYXMgdGhlIGRlZmF1bHQKKyAgICAjIGhlcmUgd2UgbWFrZSBtaW5pbWFsIGNoYW5nZXMgaW4gdGhlIHRlc3RfZW1haWwgdGVzdHMgY29tcGFyZWQgdG8gdGhlaXIKKyAgICAjIHByZS0zLjMgc3RhdGUuCisgICAgcG9saWN5ID0gY29tcGF0MzIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuYWRkVHlwZUVxdWFsaXR5RnVuYyhieXRlcywgc2VsZi5hc3NlcnRCeXRlc0VxdWFsKQorCisgICAgIyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG1pbmltaXplIHRlc3RfZW1haWwgdGVzdCBjaGFuZ2VzLgorICAgIG5kaWZmQXNzZXJ0RXF1YWwgPSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRFcXVhbAorCisgICAgZGVmIF9tc2dvYmooc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICB3aXRoIG9wZW5maWxlKGZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCwgcG9saWN5PXNlbGYucG9saWN5KQorCisgICAgZGVmIF9zdHJfbXNnKHNlbGYsIHN0cmluZywgbWVzc2FnZT1NZXNzYWdlLCBwb2xpY3k9Tm9uZSk6CisgICAgICAgIGlmIHBvbGljeSBpcyBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gc2VsZi5wb2xpY3kKKyAgICAgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoc3RyaW5nLCBtZXNzYWdlLCBwb2xpY3k9cG9saWN5KQorCisgICAgZGVmIF9ieXRlc19yZXByKHNlbGYsIGIpOgorICAgICAgICByZXR1cm4gW3JlcHIoeCkgZm9yIHggaW4gYi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXQorCisgICAgZGVmIGFzc2VydEJ5dGVzRXF1YWwoc2VsZiwgZmlyc3QsIHNlY29uZCwgbXNnKToKKyAgICAgICAgIiIiT3VyIGJ5dGUgc3RyaW5ncyBhcmUgcmVhbGx5IGVuY29kZWQgc3RyaW5nczsgaW1wcm92ZSBkaWZmIG91dHB1dCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2J5dGVzX3JlcHIoZmlyc3QpLCBzZWxmLl9ieXRlc19yZXByKHNlY29uZCkpCisKKyAgICBkZWYgYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYsIGFjdHVhbCwgZXhwZWN0ZWQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhY3R1YWwpLCBsZW4oZXhwZWN0ZWQpLCBhY3R1YWwpCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihhY3R1YWwpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhY3R1YWxbaV0sIGV4cGVjdGVkW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2l0ZW0ge30nLmZvcm1hdChpKSkKKworCitkZWYgcGFyYW1ldGVyaXplKGNscyk6CisgICAgIiIiQSB0ZXN0IG1ldGhvZCBwYXJhbWV0ZXJpemF0aW9uIGNsYXNzIGRlY29yYXRvci4KKworICAgIFBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZCBhcyB0aGUgdmFsdWUgb2YgYSBjbGFzcyBhdHRyaWJ1dGUgdGhhdCBlbmRzIHdpdGgKKyAgICB0aGUgc3RyaW5nICdfcGFyYW1zJy4gIENhbGwgdGhlIHBvcnRpb24gYmVmb3JlICdfcGFyYW1zJyB0aGUgcHJlZml4LiAgVGhlbgorICAgIGEgbWV0aG9kIHRvIGJlIHBhcmFtZXRlcml6ZWQgbXVzdCBoYXZlIHRoZSBzYW1lIHByZWZpeCwgdGhlIHN0cmluZworICAgICdfYXNfJywgYW5kIGFuIGFyYml0cmFyeSBzdWZmaXguCisKKyAgICBUaGUgdmFsdWUgb2YgdGhlIF9wYXJhbXMgYXR0cmlidXRlIG1heSBiZSBlaXRoZXIgYSBkaWN0aW9uYXJ5IG9yIGEgbGlzdC4KKyAgICBUaGUgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5IGFuZCB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QgbWF5IGVpdGhlciBiZQorICAgIHNpbmdsZSB2YWx1ZXMsIG9yIGEgbGlzdC4gIElmIHNpbmdsZSB2YWx1ZXMsIHRoZXkgYXJlIHR1cm5lZCBpbnRvIHNpbmdsZQorICAgIGVsZW1lbnQgdHVwbGVzLiAgSG93ZXZlciBkZXJpdmVkLCB0aGUgcmVzdWx0aW5nIHNlcXVlbmNlIGlzIHBhc3NlZCB2aWEKKyAgICAqYXJncyB0byB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZ1bmN0aW9uLgorCisgICAgSW4gYSBfcGFyYW1zIGRpY3Rpb2FucnksIHRoZSBrZXlzIGJlY29tZSBwYXJ0IG9mIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQKKyAgICB0ZXN0cy4gIEluIGEgX3BhcmFtcyBsaXN0LCB0aGUgdmFsdWVzIGluIHRoZSBsaXN0IGFyZSBjb252ZXJ0ZWQgaW50byBhCisgICAgc3RyaW5nIGJ5IGpvaW5pbmcgdGhlIHN0cmluZyB2YWx1ZXMgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSB0dXBsZSBieSAnXycgYW5kCisgICAgY29udmVydGluZyBhbnkgYmxhbmtzIGludG8gJ18ncywgYW5kIHRoaXMgYmVjb21lIHBhcnQgb2YgdGhlIG5hbWUuCisgICAgVGhlICBmdWxsIG5hbWUgb2YgYSBnZW5lcmF0ZWQgdGVzdCBpcyBhICd0ZXN0XycgcHJlZml4LCB0aGUgcG9ydGlvbiBvZiB0aGUKKyAgICB0ZXN0IGZ1bmN0aW9uIG5hbWUgYWZ0ZXIgdGhlICAnX2FzXycgc2VwYXJhdG9yLCBwbHVzIGFuICdfJywgcGx1cyB0aGUgbmFtZQorICAgIGRlcml2ZWQgYXMgZXhwbGFpbmVkIGFib3ZlLgorCisgICAgRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmU6CisKKyAgICAgICAgY291bnRfcGFyYW1zID0gcmFuZ2UoMikKKworICAgICAgICBkZWYgY291bnRfYXNfZm9vX2FyZyhzZWxmLCBmb28pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28rMSwgbXlmdW5jKGZvbykpCisKKyAgICB3ZSB3aWxsIGdldCBwYXJhbWV0ZXJpemVkIHRlc3QgbWV0aG9kcyBuYW1lZDoKKyAgICAgICAgdGVzdF9mb29fYXJnXzAKKyAgICAgICAgdGVzdF9mb29fYXJnXzEKKyAgICAgICAgdGVzdF9mb29fYXJnXzIKKworICAgIE9yIHdlIGNvdWxkIGhhdmU6CisKKyAgICAgICAgZXhhbXBsZV9wYXJhbXMgPSB7J2Zvbyc6ICgnYmFyJywgMSksICdiaW5nJzogKCdiYW5nJywgMil9CisKKyAgICAgICAgZGVmIGV4YW1wbGVfYXNfbXlmdW5jX2lucHV0KHNlbGYsIG5hbWUsIGNvdW50KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZStzdHIoY291bnQpLCBteWZ1bmMobmFtZSwgY291bnQpKQorCisgICAgYW5kIGdldDoKKyAgICAgICAgdGVzdF9teWZ1bmNfaW5wdXRfZm9vCisgICAgICAgIHRlc3RfbXlmdW5jX2lucHV0X2JpbmcKKworICAgIE5vdGU6IGlmIGFuZCBvbmx5IGlmIHRoZSBnZW5lcmF0ZWQgdGVzdCBuYW1lIGlzIGEgdmFsaWQgaWRlbnRpZmllciBjYW4gaXQKKyAgICBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgdGVzdCBpbmRpdmlkdWFsbHkgZnJvbSB0aGUgdW5pdHRlc3QgY29tbWFuZCBsaW5lLgorCisgICAgIiIiCisgICAgcGFyYW1kaWN0cyA9IHt9CisgICAgZm9yIG5hbWUsIGF0dHIgaW4gY2xzLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoJ19wYXJhbXMnKToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGF0dHIsICdrZXlzJyk6CisgICAgICAgICAgICAgICAgZCA9IHt9CisgICAgICAgICAgICAgICAgZm9yIHggaW4gYXR0cjoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoeCwgJ19faXRlcl9fJyk6CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gKHgsKQorICAgICAgICAgICAgICAgICAgICBuID0gJ18nLmpvaW4oc3RyKHYpIGZvciB2IGluIHgpLnJlcGxhY2UoJyAnLCAnXycpCisgICAgICAgICAgICAgICAgICAgIGRbbl0gPSB4CisgICAgICAgICAgICAgICAgYXR0ciA9IGQKKyAgICAgICAgICAgIHBhcmFtZGljdHNbbmFtZVs6LTddICsgJ19hc18nXSA9IGF0dHIKKyAgICB0ZXN0ZnVuY3MgPSB7fQorICAgIGZvciBuYW1lLCBhdHRyIGluIGNscy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICBmb3IgcGFyYW1zbmFtZSwgcGFyYW1zZGljdCBpbiBwYXJhbWRpY3RzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgocGFyYW1zbmFtZSk6CisgICAgICAgICAgICAgICAgdGVzdG5hbWVyb290ID0gJ3Rlc3RfJyArIG5hbWVbbGVuKHBhcmFtc25hbWUpOl0KKyAgICAgICAgICAgICAgICBmb3IgcGFyYW1uYW1lLCBwYXJhbXMgaW4gcGFyYW1zZGljdC5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gKGxhbWJkYSBzZWxmLCBuYW1lPW5hbWUsIHBhcmFtcz1wYXJhbXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYsIG5hbWUpKCpwYXJhbXMpKQorICAgICAgICAgICAgICAgICAgICB0ZXN0bmFtZSA9IHRlc3RuYW1lcm9vdCArICdfJyArIHBhcmFtbmFtZQorICAgICAgICAgICAgICAgICAgICB0ZXN0Ll9fbmFtZV9fID0gdGVzdG5hbWUKKyAgICAgICAgICAgICAgICAgICAgdGVzdGZ1bmNzW3Rlc3RuYW1lXSA9IHRlc3QKKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiB0ZXN0ZnVuY3MuaXRlbXMoKToKKyAgICAgICAgc2V0YXR0cihjbHMsIGtleSwgdmFsdWUpCisgICAgcmV0dXJuIGNscwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX21haW5fXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhZjllYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19tYWluX18ucHkKQEAgLTAsMCArMSwzIEBACitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgdGVzdF9tYWluCisKK3Rlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL1B5QmFubmVyMDQ4LmdpZiBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9QeUJhbm5lcjA0OC5naWYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvUHlCYW5uZXIwNDguZ2lmCnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvUHlCYW5uZXIwNDguZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvYXVkaW90ZXN0LmF1IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL2F1ZGlvdGVzdC5hdQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9hdWRpb3Rlc3QuYXUKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9hdWRpb3Rlc3QuYXUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDEudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAxLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAyLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDIudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDIudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA2LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDcudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA3LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA4LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDgudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wOC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDgudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wOS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA5LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDkudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA5LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTAudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzEwLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzExLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTJhLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTJhLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTJhLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMmEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTcudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE3LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE4LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTgudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xOC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTgudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xOS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE5LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTkudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE5LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjAudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIwLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIxLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjMudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIzLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI0LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjQudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI1LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjUudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI1LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjYudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI3LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjcudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjcudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yOC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI4LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjgudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI4LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjkudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI5LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMwLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzAudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzAudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMxLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzEudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMxLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzIudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMyLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMzLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzMudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzMudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzQudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM0LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzUudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM1LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM2LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzYudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzYudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM3LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzcudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM3LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzgudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zOC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM4LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zOC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM5LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzkudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zOS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzkudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180MC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQwLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDAudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQwLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDEudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQxLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQyLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDIudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180Mi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDIudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180My50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180NC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180NC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180NS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180Ni50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ2LnR4dApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19lbmNvZGVkX3dvcmRzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19lbmNvZGVkX3dvcmRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Mzk1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2VuY29kZWRfd29yZHMucHkKQEAgLTAsMCArMSwxODcgQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgX2VuY29kZWRfd29yZHMgYXMgX2V3Citmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCisKKworY2xhc3MgVGVzdERlY29kZVEoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgX3Rlc3Qoc2VsZiwgc291cmNlLCBleF9yZXN1bHQsIGV4X2RlZmVjdHM9W10pOgorICAgICAgICByZXN1bHQsIGRlZmVjdHMgPSBfZXcuZGVjb2RlX3Eoc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhfcmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChkZWZlY3RzLCBleF9kZWZlY3RzKQorCisgICAgZGVmIHRlc3Rfbm9fZW5jb2RlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvb2JhcicsIGInZm9vYmFyJykKKworICAgIGRlZiB0ZXN0X3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvbz0yMGJhcj0yMCcsIGInZm9vIGJhciAnKQorICAgICAgICBzZWxmLl90ZXN0KGInZm9vX2Jhcl8nLCBiJ2ZvbyBiYXIgJykKKworICAgIGRlZiB0ZXN0X3J1bl9vZl9lbmNvZGVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZm9vPTIwPTIwPTIxPTJDYmFyJywgYidmb28gICEsYmFyJykKKworCitjbGFzcyBUZXN0RGVjb2RlQihUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdChzZWxmLCBzb3VyY2UsIGV4X3Jlc3VsdCwgZXhfZGVmZWN0cz1bXSk6CisgICAgICAgIHJlc3VsdCwgZGVmZWN0cyA9IF9ldy5kZWNvZGVfYihzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleF9yZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGRlZmVjdHMsIGV4X2RlZmVjdHMpCisKKyAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidabTl2JywgYidmb28nKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZG1rJywgYid2aScsIFtlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidkbVx4MDFrPT09JywgYid2aScsIFtlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXJfYW5kX2JhZF9wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZG1ceDAxaycsIGIndmknLCBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworCitjbGFzcyBUZXN0RGVjb2RlKFRlc3RFbWFpbEJhc2UpOgorCisgICAgZGVmIHRlc3Rfd3JvbmdfZm9ybWF0X2lucHV0X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9ldy5kZWNvZGUoJz0/YmFkb25lPz0nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX2V3LmRlY29kZSgnPT8nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX2V3LmRlY29kZSgnJykKKworICAgIGRlZiBfdGVzdChzZWxmLCBzb3VyY2UsIHJlc3VsdCwgY2hhcnNldD0ndXMtYXNjaWknLCBsYW5nPScnLCBkZWZlY3RzPVtdKToKKyAgICAgICAgcmVzLCBjaGFyLCBsLCBkID0gX2V3LmRlY29kZShzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCByZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhciwgY2hhcnNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLCBsYW5nKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChkLCBkZWZlY3RzKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3Eoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/cT9mb28/PScsICdmb28nKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2Ioc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Yj9kbWs9Pz0nLCAndmknKQorCisgICAgZGVmIHRlc3RfcV9jYXNlX2lnbm9yZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/UT9mb28/PScsICdmb28nKQorCisgICAgZGVmIHRlc3RfYl9jYXNlX2lnbm9yZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Qj9kbWs9Pz0nLCAndmknKQorCisgICAgZGVmIHRlc3Rfbm9uX3RyaXZpYWxfcShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT9sYXRpbi0xP3E/PTIwRj1mY3I9MjBFbGlzZT0yMD89JywgJyBGw7xyIEVsaXNlICcsICdsYXRpbi0xJykKKworICAgIGRlZiB0ZXN0X3FfZXNjcGFlZF9ieXRlc19wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYic9P3VzLWFzY2lpP3E/PTIwXHhBQ2Zvbz89Jy5kZWNvZGUoJ3VzLWFzY2lpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICAgICAgICAgICAgJyBcdURDQUNmb28nLAorICAgICAgICAgICAgICAgICAgIGRlZmVjdHMgPSBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfYl91bmRlY29kYWJsZV9ieXRlc19pZ25vcmVkX3dpdGhfZGVmZWN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInPT91cy1hc2NpaT9iP2RtXHhBQ2s/PScuZGVjb2RlKCd1cy1hc2NpaScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gWworICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QsCisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9iX2ludmFsaWRfYnl0ZXNfaWdub3JlZF93aXRoX2RlZmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91cy1hc2NpaT9iP2RtXHgwMWs9PT0/PScsCisgICAgICAgICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9iX2ludmFsaWRfYnl0ZXNfaW5jb3JyZWN0X3BhZGRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Yj9kbVx4MDFrPz0nLAorICAgICAgICAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0LAorICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfYl9wYWRkaW5nX2RlZmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91cy1hc2NpaT9iP2Rtaz89JywKKyAgICAgICAgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW2Vycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9ub25udWxsX2xhbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWkqaml2ZT9xP3Rlc3Q/PScsICd0ZXN0JywgbGFuZz0naml2ZScpCisKKyAgICBkZWYgdGVzdF91bmtub3duXzhiaXRfY2hhcnNldChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91bmtub3duLThiaXQ/cT9mb289QUNiYXI/PScsCisgICAgICAgICAgICAgICAgICAgYidmb29ceGFjYmFyJy5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndW5rbm93bi04Yml0JywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW10pCisKKyAgICBkZWYgdGVzdF91bmtub3duX2NoYXJzZXQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/Zm9vYmFyP3E/Zm9vPUFDYmFyPz0nLAorICAgICAgICAgICAgICAgICAgIGInZm9vXHhhY2JhcicuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKSwKKyAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ2Zvb2JhcicsCisgICAgICAgICAgICAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgYmUgYSBuZXcgRGVmZWN0IGluc3RlYWQ/CisgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFtlcnJvcnMuQ2hhcnNldEVycm9yXSkKKworCitjbGFzcyBUZXN0RW5jb2RlUShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdChzZWxmLCBzcmMsIGV4cGVjdGVkKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX3Eoc3JjKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9hbGxfc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvb2JhcicsICdmb29iYXInKQorCisgICAgZGVmIHRlc3Rfc3BhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZm9vIGJhciAnLCAnZm9vX2Jhcl8nKQorCisgICAgZGVmIHRlc3RfcnVuX29mX2VuY29kYWJsZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidmb28gICwsYmFyJywgJ2Zvb19fPTJDPTJDYmFyJykKKworCitjbGFzcyBUZXN0RW5jb2RlQihUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX2IoYidmb28nKSwgJ1ptOXYnKQorCisgICAgZGVmIHRlc3RfcGFkZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX2IoYid2aScpLCAnZG1rPScpCisKKworY2xhc3MgVGVzdEVuY29kZShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X3Eoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgnZm9vJywgJ3V0Zi04JywgJ3EnKSwgJz0/dXRmLTg/cT9mb28/PScpCisKKyAgICBkZWYgdGVzdF9iKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2ZvbycsICd1dGYtOCcsICdiJyksICc9P3V0Zi04P2I/Wm05dj89JykKKworICAgIGRlZiB0ZXN0X2F1dG9fcShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCdmb28nLCAndXRmLTgnKSwgJz0/dXRmLTg/cT9mb28/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX3FfaWZfc2hvcnRfbW9zdGx5X3NhZmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgndmkuJywgJ3V0Zi04JyksICc9P3V0Zi04P3E/dmk9MkU/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX2JfaWZfZW5vdWdoX3Vuc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCcuLi4uLicsICd1dGYtOCcpLCAnPT91dGYtOD9iP0xpNHVMaTQ9Pz0nKQorCisgICAgZGVmIHRlc3RfYXV0b19iX2lmX2xvbmdfdW5zYWZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ3ZpLnZpLnZpLnZpLnZpLicsICd1dGYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1rdWRta3VkbWt1ZG1rdWRta3U/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX3FfaWZfbG9uZ19tb3N0bHlfc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCd2aSB2aSB2aS52aSAnLCAndXRmLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91dGYtOD9xP3ZpX3ZpX3ZpPTJFdmlfPz0nKQorCisgICAgZGVmIHRlc3RfdXRmOF9kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2ZvbycpLCAnPT91dGYtOD9xP2Zvbz89JykKKworICAgIGRlZiB0ZXN0X2xhbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgnZm9vJywgbGFuZz0naml2ZScpLCAnPT91dGYtOCpqaXZlP3E/Zm9vPz0nKQorCisgICAgZGVmIHRlc3RfdW5rbm93bl84Yml0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2Zvb1x1RENBQ2JhcicsIGNoYXJzZXQ9J3Vua25vd24tOGJpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3Vua25vd24tOGJpdD9xP2Zvbz1BQ2Jhcj89JykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMDFlMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTAsMCArMSwyNTUyIEBACitpbXBvcnQgc3RyaW5nCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwgaW1wb3J0IF9oZWFkZXJfdmFsdWVfcGFyc2VyIGFzIHBhcnNlcgorZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlLCBwYXJhbWV0ZXJpemUKKworY2xhc3MgVGVzdFRva2VucyhUZXN0RW1haWxCYXNlKToKKworICAgICMgRVdXaGl0ZVNwYWNlVGVybWluYWwKKworICAgIGRlZiB0ZXN0X0VXV2hpdGVTcGFjZVRlcm1pbmFsKHNlbGYpOgorICAgICAgICB4ID0gcGFyc2VyLkVXV2hpdGVTcGFjZVRlcm1pbmFsKCcgXHQnLCAnZndzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAnIFx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoeCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudmFsdWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZW5jb2RlZCwgJyBcdCcpCisKKyAgICAjIFVuc3RydWN0dXJlZFRva2VuTGlzdAorCisgICAgZGVmIHRlc3RfdW5kZWNvZGFibGVfYnl0ZXNfZXJyb3JfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBiYWRzdHIgPSBiImxlIHBvdWYgY1x4YWZsZWJyZSIuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICB1bnN0ID0gcGFyc2VyLmdldF91bnN0cnVjdHVyZWQoYmFkc3RyKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbCh1bnN0LmFsbF9kZWZlY3RzLCBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorICAgICAgICBwYXJ0cyA9IGxpc3QodW5zdC5wYXJ0cykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwocGFydHNbMF0uYWxsX2RlZmVjdHMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChwYXJ0c1sxXS5hbGxfZGVmZWN0cywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHBhcnRzWzJdLmFsbF9kZWZlY3RzLCBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorCisKK2NsYXNzIFRlc3RQYXJzZXJNaXhpbjoKKworICAgIGRlZiBfYXNzZXJ0X3Jlc3VsdHMoc2VsZiwgdGwsIHJlc3QsIHN0cmluZywgdmFsdWUsIGRlZmVjdHMsIHJlbWFpbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzPU5vbmUpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih0bCksIHN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0bC52YWx1ZSwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHRsLmFsbF9kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3QsIHJlbWFpbmRlcikKKyAgICAgICAgaWYgY29tbWVudHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRsLmNvbW1lbnRzLCBjb21tZW50cykKKworICAgIGRlZiBfdGVzdF9nZXRfeChzZWxmLCBtZXRob2QsIHNvdXJjZSwgc3RyaW5nLCB2YWx1ZSwgZGVmZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyLCBjb21tZW50cz1Ob25lKToKKyAgICAgICAgdGwsIHJlc3QgPSBtZXRob2Qoc291cmNlKQorICAgICAgICBzZWxmLl9hc3NlcnRfcmVzdWx0cyh0bCwgcmVzdCwgc3RyaW5nLCB2YWx1ZSwgZGVmZWN0cywgcmVtYWluZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cz1Ob25lKQorICAgICAgICByZXR1cm4gdGwKKworICAgIGRlZiBfdGVzdF9wYXJzZV94KHNlbGYsIG1ldGhvZCwgaW5wdXQsIHN0cmluZywgdmFsdWUsIGRlZmVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzPU5vbmUpOgorICAgICAgICB0bCA9IG1ldGhvZChpbnB1dCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3Jlc3VsdHModGwsICcnLCBzdHJpbmcsIHZhbHVlLCBkZWZlY3RzLCAnJywgY29tbWVudHMpCisgICAgICAgIHJldHVybiB0bAorCisKK2NsYXNzIFRlc3RQYXJzZXIoVGVzdFBhcnNlck1peGluLCBUZXN0RW1haWxCYXNlKToKKworICAgICMgX3dzcF9zcGxpdHRlcgorCisgICAgcmZjX3ByaW50YWJsZV9hc2NpaSA9IGJ5dGVzKHJhbmdlKDMzLCAxMjcpKS5kZWNvZGUoJ2FzY2lpJykKKyAgICByZmNfYXRleHRfY2hhcnMgPSAoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIhIyQlJlwnKistLz0/Xl9ge318fiIpCisgICAgcmZjX2R0ZXh0X2NoYXJzID0gcmZjX3ByaW50YWJsZV9hc2NpaS50cmFuc2xhdGUoc3RyLm1ha2V0cmFucygnJywnJyxyJ1xbXScpKQorCisgICAgZGVmIHRlc3RfX3dzcF9zcGxpdHRlcl9vbmVfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuX3dzcF9zcGxpdHRlcignZm9vJywgMSksIFsnZm9vJ10pCisKKyAgICBkZWYgdGVzdF9fd3NwX3NwbGl0dGVyX3R3b193b3JkcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuX3dzcF9zcGxpdHRlcignZm9vIGRlZicsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2ZvbycsICcgJywgJ2RlZiddKQorCisgICAgZGVmIHRlc3RfX3dzcF9zcGxpdHRlcl93c19ydW5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5fd3NwX3NwbGl0dGVyKCdmb28gXHQgZGVmIGppaycsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZm9vJywgJyBcdCAnLCAnZGVmIGppayddKQorCisKKyAgICAjIGdldF9md3MKKworICAgIGRlZiB0ZXN0X2dldF9md3Nfb25seShzZWxmKToKKyAgICAgICAgZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Z3cywgJyBcdCAgJywgJyBcdCAgJywgJyAnLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZndzLnRva2VuX3R5cGUsICdmd3MnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Z3c19zcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Z3cywgJyBmb28nLCAnICcsICcgJywgW10sICdmb28nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Z3c193c19ydW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9md3MsICcgXHQgZm9vICcsICcgXHQgJywgJyAnLCBbXSwgJ2ZvbyAnKQorCisgICAgIyBnZXRfZW5jb2RlZF93b3JkCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX21pc3Npbmdfc3RhcnRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZW5jb2RlZF93b3JkKCdhYmMnKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9taXNzaW5nX2VuZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9lbmNvZGVkX3dvcmQoJz0/YWJjJykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfbWlzc2luZ19taWRkbGVfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZW5jb2RlZF93b3JkKCc9P2FiYz89JykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfdmFsaWRfZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9lbmNvZGVkX3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJz0/dXMtYXNjaWk/cT90aGlzX2lzX2FfdGVzdD89ICBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcyBpcyBhIHRlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGEgdGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgYmlyZCcpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX2ludGVybmFsX3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaT9xP3RoaXMgaXMgYSB0ZXN0Pz0gIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGEgdGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgaXMgYSB0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgIGJpcmQnKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9nZXRzX2ZpcnN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Q/PSAgPT91dGYtOD9xP3NlY29uZD89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgPT91dGYtOD9xP3NlY29uZD89JykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfZ2V0c19maXJzdF9ldmVuX2lmX25vX3NwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Q/PT0/dXRmLTg/cT9zZWNvbmQ/PScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3V0Zi04P3E/c2Vjb25kPz0nKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9zZXRzX2V4dHJhX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGV3ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaSpqaXZlP3E/Zmlyc3Rfc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmVuY29kZWQsICc9P3VzLWFzY2lpKmppdmU/cT9maXJzdF9zZWNvbmQ/PScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXcuY2hhcnNldCwgJ3VzLWFzY2lpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldy5sYW5nLCAnaml2ZScpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX2xhbmdfZGVmYXVsdF9pc19ibGFuayhzZWxmKToKKyAgICAgICAgZXcgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Rfc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmVuY29kZWQsICc9P3VzLWFzY2lpP3E/Zmlyc3Rfc2Vjb25kPz0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmNoYXJzZXQsICd1cy1hc2NpaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXcubGFuZywgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX25vbl9wcmludGFibGVfZGVmZWN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3RceDAyc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdFx4MDJzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdFx4MDJzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfbGVhZGluZ19pbnRlcm5hbF9zcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/PTIwZm9vPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgICMgZ2V0X3Vuc3RydWN0dXJlZAorCisgICAgZGVmIF9nZXRfdW5zdChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHRva2VuID0gcGFyc2VyLmdldF91bnN0cnVjdHVyZWQodmFsdWUpCisgICAgICAgIHJldHVybiB0b2tlbiwgJycKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfbnVsbChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJycsICcnLCAnJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9vbmVfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJ2ZvbycsICdmb28nLCAnZm9vJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9ub3JtYWxfcGhyYXNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIGJhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX25vcm1hbF9waHJhc2Vfd2l0aF93aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIFx0IGJhciAgICAgIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0IGJhciAgICAgIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIGJhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9sZWFkaW5nX3doaXRlc3BhY2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsICcgIGZvbyBiYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBmb28gYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28gYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF90cmFpbGluZ193aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfbGVhZGluZ19hbmRfdHJhaWxpbmdfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJyAgZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28gYmFyICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfb25lX3ZhbGlkX2V3X25vX3dzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnPT91cy1hc2NpaT9xP2Jhcj89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX29uZV9ld190cmFpbGluZ193cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJz0/dXMtYXNjaWk/cT9iYXI/PSAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhciAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX29uZV92YWxpZF9ld190cmFpbGluZ190ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnPT91cy1hc2NpaT9xP2Jhcj89IGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX2V3X2luX21pZGRsZV9vZl90ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vID0/dXMtYXNjaWk/cT9iYXI/PSBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX3R3b19ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICdmb28gPT91cy1hc2NpaT9xP2Jhcj89ID0/dXMtYXNjaWk/cT9iaXJkPz0nLAorICAgICAgICAgICAgJ2ZvbyBiYXJiaXJkJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9waHJhc2Vfd2l0aF90d29fZXdfdHJhaWxpbmdfd3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnZm9vID0/dXMtYXNjaWk/cT9iYXI/PSA9P3VzLWFzY2lpP3E/YmlyZD89ICAgJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCAgICcsCisgICAgICAgICAgICAnZm9vIGJhcmJpcmQgJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX2V3X3dpdGhfbGVhZGluZ193cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICcgID0/dXMtYXNjaWk/cT9iYXI/PScsCisgICAgICAgICAgICAnICBiYXInLAorICAgICAgICAgICAgJyBiYXInLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfcGhyYXNlX3dpdGhfdHdvX2V3X2V4dHJhX3dzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgJ2ZvbyA9P3VzLWFzY2lpP3E/YmFyPz0gXHQgID0/dXMtYXNjaWk/cT9iaXJkPz0nLAorICAgICAgICAgICAgJ2ZvbyBiYXJiaXJkJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF90d29fZXdfZXh0cmFfd3NfdHJhaWxpbmdfdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/dGVzdD89ICAgPT91cy1hc2NpaT9xP2Zvbz89ICB2YWwnLAorICAgICAgICAgICAgJ3Rlc3Rmb28gIHZhbCcsCisgICAgICAgICAgICAndGVzdGZvbyB2YWwnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfZXdfd2l0aF9pbnRlcm5hbF93cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P2lzby04ODU5LTE/cT9oZWxsbz0yMHdvcmxkPz0nLAorICAgICAgICAgICAgJ2hlbGxvIHdvcmxkJywKKyAgICAgICAgICAgICdoZWxsbyB3b3JsZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9ld193aXRoX2ludGVybmFsX2xlYWRpbmdfd3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnICAgPT91cy1hc2NpaT9xPz0yMHRlc3Q/PSAgID0/dXMtYXNjaWk/cT89MjBmb28/PSAgdmFsJywKKyAgICAgICAgICAgICcgICAgdGVzdCBmb28gIHZhbCcsCisgICAgICAgICAgICAnICB0ZXN0IGZvbyB2YWwnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfaW52YWlsZF9ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3VuZGVjb2RhYmxlX2J5dGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgYid0ZXN0IFx4QUNmb28gIHZhbCcuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKSwKKyAgICAgICAgICAgICd0ZXN0IFx1RENBQ2ZvbyAgdmFsJywKKyAgICAgICAgICAgICd0ZXN0IFx1RENBQ2ZvbyB2YWwnLAorICAgICAgICAgICAgW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF91bmRlY29kYWJsZV9ieXRlc19pbl9FVyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgIChiJz0/dXMtYXNjaWk/cT89MjB0ZXN0Pz0gICA9P3VzLWFzY2lpP3E/PTIwXHhBQ2Zvbz89JworICAgICAgICAgICAgICAgIGInICB2YWwnKS5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAgICAgJyB0ZXN0IFx1RENBQ2ZvbyAgdmFsJywKKyAgICAgICAgICAgICcgdGVzdCBcdURDQUNmb28gdmFsJywKKyAgICAgICAgICAgIFtlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9taXNzaW5nX2Jhc2U2NF9wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgJz0/dXRmLTg/Yj9kbWs/PScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX2ludmFsaWRfYmFzZTY0X2NoYXJhY3RlcihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1ceDAxaz09PT89JywKKyAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdF0sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfaW52YWxpZF9iYXNlNjRfY2hhcmFjdGVyX2FuZF9iYWRfcGFkZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1ceDAxaz89JywKKyAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCwKKyAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX25vX3doaXRlc3BhY2VfYmV0d2Vlbl9ld3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnPT91dGYtOD9xP2Zvbz89PT91dGYtOD9xP2Jhcj89JywKKyAgICAgICAgICAgICdmb29iYXInLAorICAgICAgICAgICAgJ2Zvb2JhcicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICAjIGdldF9xcF9jdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X29ubHkoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyJywgJ2Zvb2JhcicsICcgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB0ZXh0LnRva2VuX3R5cGUsICdwdGV4dCcpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfYWxsX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIHdpdGhfcXAgPSBzZWxmLnJmY19wcmludGFibGVfYXNjaWkucmVwbGFjZSgnXFwnLCAnXFxcXCcpCisgICAgICAgIHdpdGhfcXAgPSB3aXRoX3FwLiAgcmVwbGFjZSgnKCcsIHInXCgnKQorICAgICAgICB3aXRoX3FwID0gd2l0aF9xcC5yZXBsYWNlKCcpJywgcidcKScpCisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9xcCwgc2VsZi5yZmNfcHJpbnRhYmxlX2FzY2lpLCAnICcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBkZScsICdmb28nLCAnICcsIFtdLCAnIGRlJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF9mb2xsb3dpbmdfd3NwX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBcdFx0ZGUnLCAnZm9vJywgJyAnLCBbXSwgJyBcdFx0ZGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3VwX3RvX2Nsb3NlX3BhcmVuX29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28pJywgJ2ZvbycsICcgJywgW10sICcpJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF93c3BfYmVmb3JlX2Nsb3NlX3BhcmVuX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyAgKScsICdmb28nLCAnICcsIFtdLCAnICApJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF9jbG9zZV9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyliYXInLCAnZm9vJywgJyAnLCBbXSwgJyliYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3VwX3RvX29wZW5fcGFyZW5fb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbygnLCAnZm9vJywgJyAnLCBbXSwgJygnKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3dzcF9iZWZvcmVfb3Blbl9wYXJlbl9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gICgnLCAnZm9vJywgJyAnLCBbXSwgJyAgKCcpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfb3Blbl9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyhiYXInLCAnZm9vJywgJyAnLCBbXSwgJyhiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBwdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1x4MDBiYXIpJywgJ2Zvb1x4MDBiYXInLCAnICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB0ZXh0LmRlZmVjdHNbMF0ubm9uX3ByaW50YWJsZXNbMF0sICdceDAwJykKKworICAgICMgZ2V0X3Fjb250ZW50CisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfb25seShzZWxmKToKKyAgICAgICAgcHRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb29iYXInLCAnZm9vYmFyJywgJ2Zvb2JhcicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdGV4dC50b2tlbl90eXBlLCAncHRleHQnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Fjb250ZW50X2FsbF9wcmludGFibGVzKHNlbGYpOgorICAgICAgICB3aXRoX3FwID0gc2VsZi5yZmNfcHJpbnRhYmxlX2FzY2lpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKQorICAgICAgICB3aXRoX3FwID0gd2l0aF9xcC4gIHJlcGxhY2UoJyInLCByJ1wiJykKKyAgICAgICAgcHRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsIHdpdGhfcXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19wcmludGFibGVfYXNjaWksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19wcmludGFibGVfYXNjaWksIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBkZScsICdmb28nLCAnZm9vJywgW10sICcgZGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Fjb250ZW50X2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0XHRkZScsICdmb28nLCAnZm9vJywgW10sICcgXHRcdGRlJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF91cF90b19kcXVvdGVfb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIicpCisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfd3NwX2JlZm9yZV9jbG9zZV9wYXJlbl9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gICInLCAnZm9vJywgJ2ZvbycsIFtdLCAnICAiJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF9jbG9zZV9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyJiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnImJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfbm9uX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXHgwMGZnIicsICdmb29ceDAwZmcnLCAnZm9vXHgwMGZnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnIicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHRleHQuZGVmZWN0c1swXS5ub25fcHJpbnRhYmxlc1swXSwgJ1x4MDAnKQorCisgICAgIyBnZXRfYXRleHQKKworICAgIGRlZiB0ZXN0X2dldF9hdGV4dF9vbmx5KHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb2JhcicsICdmb29iYXInLCAnZm9vYmFyJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0ZXh0LnRva2VuX3R5cGUsICdhdGV4dCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRleHRfYWxsX2F0ZXh0KHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwgc2VsZi5yZmNfYXRleHRfY2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19hdGV4dF9jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmZjX2F0ZXh0X2NoYXJzLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRleHRfdHdvX3dvcmRzX2dldHNfZmlyc3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJyBiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0XHRiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIFx0XHRiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X3VwX3RvX3NwZWNpYWwoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb29AYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJ0BiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1x4MDBiYXIoJywgJ2Zvb1x4MDBiYXInLCAnZm9vXHgwMGJhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJygnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0ZXh0LmRlZmVjdHNbMF0ubm9uX3ByaW50YWJsZXNbMF0sICdceDAwJykKKworICAgICMgZ2V0X2JhcmVfcXVvdGVkX3N0cmluZworCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19vbmx5KHNlbGYpOgorICAgICAgICBicXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciZm9vIicsICciZm9vIicsICdmb28nLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnFzLnRva2VuX3R5cGUsICdiYXJlLXF1b3RlZC1zdHJpbmcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19tdXN0X3N0YXJ0X3dpdGhfZHF1b3RlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nKCdmb28iJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZygnICAiZm9vIicpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciZm9vIlx0IGJhcicsICciZm9vIicsICdmb28nLCBbXSwgJ1x0IGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX211bHRpcGxlX3dvcmRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciZm9vIGJhciBtb28iJywgJyJmb28gYmFyIG1vbyInLCAnZm9vIGJhciBtb28nLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX211bHRpcGxlX3dvcmRzX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAgJyIgZm9vICBtb29cdCInLCAnIiBmb28gIG1vb1x0IicsICcgZm9vICBtb29cdCcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9iYXJlX3F1b3RlZF9zdHJpbmdfZW5kX2RxdW90ZV9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAnImZvbyJiYXInLCAnImZvbyInLCAnZm9vJywgW10sICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19xdW90ZWRfZHF1b3RlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgIHInImZvb1wiaW4iYScsIHInImZvb1wiaW4iJywgJ2ZvbyJpbicsIFtdLCAnYScpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciYVx4MDFhIicsICciYVx4MDFhIicsICdhXHgwMWEnLAorICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX25vX2VuZF9kcXVvdGUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAgJyJmb28nLCAnImZvbyInLCAnZm9vJywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAnImZvbyAnLCAnImZvbyAiJywgJ2ZvbyAnLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19lbXB0eV9xdW90ZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIiInLCAnIiInLCAnJywgW10sICcnKQorCisgICAgIyBnZXRfY29tbWVudAorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfb25seShzZWxmKToKKyAgICAgICAgY29tbWVudCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhjb21tZW50KScsICcoY29tbWVudCknLCAnICcsIFtdLCAnJywgWydjb21tZW50J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudC50b2tlbl90eXBlLCAnY29tbWVudCcpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdXN0X3N0YXJ0X3dpdGhfcGFyZW4oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9jb21tZW50KCdmb28iJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2NvbW1lbnQoJyAgKGZvbyInKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfZm9sbG93aW5nX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhjb21tZW50KSAgXHQnLCAnKGNvbW1lbnQpJywgJyAnLCBbXSwgJyAgXHQnLCBbJ2NvbW1lbnQnXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X211bHRpcGxlX3dvcmRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vIGJhcikgIFx0JywgJyhmb28gYmFyKScsICcgJywgW10sICcgIFx0JywgWydmb28gYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdWx0aXBsZV93b3Jkc193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoIGZvbyAgYmFyXHQgKSAgXHQnLCAnKCBmb28gIGJhclx0ICknLCAnICcsIFtdLCAnICBcdCcsCisgICAgICAgICAgICAgICAgWycgZm9vICBiYXJcdCAnXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X2VuZF9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyliYXInLCAnKGZvbyknLCAnICcsIFtdLCAnYmFyJywgWydmb28nXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X3F1b3RlZF9wYXJlbnMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhmb29cKSBcKFwpYmFyKScsICcoZm9vXCkgXChcKWJhciknLCAnICcsIFtdLCAnJywgWydmb28pICgpYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub25fcHJpbnRhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vXHg3RmJhciknLCAnKGZvb1x4N0ZiYXIpJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJywgWydmb29ceDdGYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub19lbmRfcGFyZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhmb28gYmFyJywgJyhmb28gYmFyKScsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnLCBbJ2ZvbyBiYXInXSkKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyBiYXIgICcsICcoZm9vIGJhciAgKScsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnLCBbJ2ZvbyBiYXIgICddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbmVzdGVkX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vKGJhcikpJywgJyhmb28oYmFyKSknLCAnICcsIFtdLCAnJywgWydmb28oYmFyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMV0uY29udGVudCwgJ2JhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9uZXN0ZWRfY29tbWVudF93c3Aoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vICggYmFyICkgKScsICcoZm9vICggYmFyICkgKScsICcgJywgW10sICcnLCBbJ2ZvbyAoIGJhciApICddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMl0uY29udGVudCwgJyBiYXIgJykKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X2VtcHR5X2NvbW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJygpJywgJygpJywgJyAnLCBbXSwgJycsIFsnJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdWx0aXBsZV9uZXN0aW5nKHNlbGYpOgorICAgICAgICBjb21tZW50ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKCgoKChmb28pKSkpKScsICcoKCgoKGZvbykpKSkpJywgJyAnLCBbXSwgJycsIFsnKCgoKGZvbykpKSknXSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCwgMCwgLTEpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50WzBdLmNvbnRlbnQsICcoJyooaS0xKSsnZm9vJysnKScqKGktMSkpCisgICAgICAgICAgICBjb21tZW50ID0gY29tbWVudFswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnQuY29udGVudCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9taXNzaW5nX2VuZF9vZl9uZXN0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoKCgoKGZvbykpKScsICcoKCgoKGZvbykpKSkpJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLCAnJywgWycoKCgoZm9vKSkpKSddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXNfaW5fbmVzdGVkX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vIChiXCkpKScsICcoZm9vIChiXCkpKScsICcgJywgW10sICcnLCBbJ2ZvbyAoYlwpKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMl0uY29udGVudCwgJ2IpJykKKworICAgICMgZ2V0X2Nmd3MKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX29ubHlfd3Moc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcgIFx0IFx0JywgJyAgXHQgXHQnLCAnICcsIFtdLCAnJywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3cy50b2tlbl90eXBlLCAnY2Z3cycpCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19vbmx5X2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcoZm9vKScsICcoZm9vKScsICcgJywgW10sICcnLCBbJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMF0uY29udGVudCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19vbmx5X21peGVkKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnIChmb28gKSAgKCBiYXIpICcsICcgKGZvbyApICAoIGJhcikgJywgJyAnLCBbXSwgJycsCisgICAgICAgICAgICAgICAgWydmb28gJywgJyBiYXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzFdLmNvbnRlbnQsICdmb28gJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzNdLmNvbnRlbnQsICcgYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX2VuZHNfYXRfbm9uX2xlYWRlcihzZWxmKToKKyAgICAgICAgY2Z3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jZndzLAorICAgICAgICAgICAgJyhmb28pIGJhcicsICcoZm9vKSAnLCAnICcsIFtdLCAnYmFyJywgWydmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzBdLmNvbnRlbnQsICdmb28nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Nmd3NfZW5kc19hdF9ub25fcHJpbnRhYmxlKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnKGZvbykgXHgwNycsICcoZm9vKSAnLCAnICcsIFtdLCAnXHgwNycsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3c1swXS5jb250ZW50LCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX25vbl9wcmludGFibGVfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgY2Z3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jZndzLAorICAgICAgICAgICAgJyhmb28gXHgwNykgInRlc3QiJywgJyhmb28gXHgwNykgJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnInRlc3QiJywgWydmb28gXHgwNyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMF0uY29udGVudCwgJ2ZvbyBceDA3JykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX2hlYWRlcl9lbmRzX2luX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcgIChmb28gJywgJyAgKGZvbyApJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycsIFsnZm9vICddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMV0uY29udGVudCwgJ2ZvbyAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Nmd3NfbXVsdGlwbGVfbmVzdGVkX2NvbW1lbnRzKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnKGZvbyAoYmFyKSkgKChhKShhKSknLCAnKGZvbyAoYmFyKSkgKChhKShhKSknLCAnICcsIFtdLAorICAgICAgICAgICAgICAgICcnLCBbJ2ZvbyAoYmFyKScsICcoYSkoYSknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzBdLmNvbW1lbnRzLCBbJ2ZvbyAoYmFyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMl0uY29tbWVudHMsIFsnKGEpKGEpJ10pCisKKyAgICAjIGdldF9xdW90ZWRfc3RyaW5nCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19vbmx5KHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyJib2IiJywgJyJib2IiJywgJ2JvYicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy50b2tlbl90eXBlLCAncXVvdGVkLXN0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnImJvYiInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF93c3Aoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnXHQgImJvYiIgICcsICdcdCAiYm9iIiAgJywgJyBib2IgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyAiYm9iIiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF9jb21tZW50c19hbmRfd3NwKHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyAoZm9vKSAiYm9iIihiYXIpJywgJyAoZm9vKSAiYm9iIihiYXIpJywgJyBib2IgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzBdWzFdLmNvbnRlbnQsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdWzBdLmNvbnRlbnQsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyAiYm9iIiAnKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF9tdWx0aXBsZV9jb21tZW50cyhzZWxmKToKKyAgICAgICAgcXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICcgKGZvbykgKGJhcikgImJvYiIoYmlyZCknLCAnIChmb28pIChiYXIpICJib2IiKGJpcmQpJywgJyBib2IgJywKKyAgICAgICAgICAgICAgICBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnZm9vJywgJ2JhciddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdLmNvbW1lbnRzLCBbJ2JpcmQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgcXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICcgKFx4MEEpICJib2IiJywgJyAoXHgwQSkgImJvYiInLCAnIGJvYicsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1swXS5jb21tZW50cywgWydceDBBJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2JvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJib2IiJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVfaW5fcWNvbnRlbnQoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiYVx4MEIiJywgJyAoYSkgImFceDBCIicsICcgYVx4MEInLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdhXHgwQicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJhXHgwQiInKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfaW50ZXJuYWxfd3Moc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiZm9vICBiYXIgIicsICcgKGEpICJmb28gIGJhciAiJywgJyBmb28gIGJhciAnLAorICAgICAgICAgICAgICAgIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1swXS5jb21tZW50cywgWydhJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2ZvbyAgYmFyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJmb28gIGJhciAiJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX2hlYWRlcl9lbmRzX2luX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiYm9iIiAoYScsICcgKGEpICJib2IiIChhKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdLmNvbW1lbnRzLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX2hlYWRlcl9lbmRzX2luX3Fjb250ZW50KHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyAoYSkgImJvYicsICcgKGEpICJib2IiJywgJyBib2InLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzBdLmNvbW1lbnRzLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiInKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfbm9fcXVvdGVkX3N0cmluZyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcoJyAoYWIpIHh5eicpCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19xc19lbmRzX2F0X25vbmNmd3Moc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnXHQgImJvYiIgZmVlJywgJ1x0ICJib2IiICcsICcgYm9iICcsIFtdLCAnZmVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgICMgZ2V0X2F0b20KKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX29ubHkoc2VsZik6CisgICAgICAgIGF0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICdib2InLCAnYm9iJywgJ2JvYicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tLnRva2VuX3R5cGUsICdhdG9tJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX3dpdGhfd3NwKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICdcdCBib2IgICcsICdcdCBib2IgICcsICcgYm9iICcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX3dpdGhfY29tbWVudHNfYW5kX3dzcChzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoZm9vKSBib2IoYmFyKScsICcgKGZvbykgYm9iKGJhciknLCAnIGJvYiAnLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVswXVsxXS5jb250ZW50LCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzJdWzBdLmNvbnRlbnQsICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21fd2l0aF9tdWx0aXBsZV9jb21tZW50cyhzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoZm9vKSAoYmFyKSBib2IoYmlyZCknLCAnIChmb28pIChiYXIpIGJvYihiaXJkKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnZm9vJywgJ2JhciddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMl0uY29tbWVudHMsIFsnYmlyZCddKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21fbm9uX3ByaW50YWJsZV9pbl9jb21tZW50KHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnIChceDBBKSBib2InLCAnIChceDBBKSBib2InLCAnIGJvYicsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzBdLmNvbW1lbnRzLCBbJ1x4MEEnXSkKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX25vbl9wcmludGFibGVfaW5fYXRleHQoc2VsZik6CisgICAgICAgIGF0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICcgKGEpIGFceDBCJywgJyAoYSkgYVx4MEInLCAnIGFceDBCJywKKyAgICAgICAgICAgICAgICBbZXJyb3JzLk5vblByaW50YWJsZURlZmVjdF0sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnYSddKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21faGVhZGVyX2VuZHNfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoYSkgYm9iIChhJywgJyAoYSkgYm9iIChhKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVswXS5jb21tZW50cywgWydhJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVsyXS5jb21tZW50cywgWydhJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfYXRvbV9ub19hdG9tKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYXRvbSgnIChhYikgJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX25vX2F0b21fYmVmb3JlX3NwZWNpYWwoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9hdG9tKCcgKGFiKSBAJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX2F0b21fZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnIChmb28pIGJvYihiYXIpICBAYmFuZycsICcgKGZvbykgYm9iKGJhcikgICcsICcgYm9iICcsIFtdLCAnQGJhbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVsyXS5jb21tZW50cywgWydiYXInXSkKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX2F0b21fZW5kc19hdF9ub25jZndzKHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnYm9iICBmcmVkJywgJ2JvYiAgJywgJ2JvYiAnLCBbXSwgJ2ZyZWQnKQorCisgICAgIyBnZXRfZG90X2F0b21fdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb28uYmFyLmJhbmcnLCAnZm9vLmJhci5iYW5nJywgJ2Zvby5iYXIuYmFuZycsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb3RfYXRvbV90ZXh0LnRva2VuX3R5cGUsICdkb3QtYXRvbS10ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZG90X2F0b21fdGV4dCksIDUpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdGV4dF9sb25lX2F0b21faXNfdmFsaWQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb28nLCAnZm9vJywgJ2ZvbycsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90ZXh0X3JhaXNlc19vbl9sZWFkaW5nX2RvdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2RvdF9hdG9tX3RleHQoJy5mb28uYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90ZXh0X3JhaXNlc19vbl90cmFpbGluZ19kb3Qoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCdmb28uYmFyLicpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdGV4dF9yYWlzZXNfb25fbGVhZGluZ19ub25fYXRleHQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCcgZm9vLmJhcicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCdAZm9vLmJhcicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCciZm9vLmJhciInKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHRfdHJhaWxpbmdfdGV4dF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb29AYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJ0BiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHRfdHJhaWxpbmdfd3NfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBkb3RfYXRvbV90ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tX3RleHQsCisgICAgICAgICAgICAnZm9vIC5iYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIC5iYXInKQorCisgICAgIyBnZXRfZG90X2F0b20KKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV9vbmx5KHNlbGYpOgorICAgICAgICBkb3RfYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb3RfYXRvbSwKKyAgICAgICAgICAgICdmb28uYmFyLmJpbmcnLCAnZm9vLmJhci5iaW5nJywgJ2Zvby5iYXIuYmluZycsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb3RfYXRvbS50b2tlbl90eXBlLCAnZG90LWF0b20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkb3RfYXRvbSksIDEpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fd2l0aF93c3Aoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb3RfYXRvbSwKKyAgICAgICAgICAgICdcdCAgZm9vLmJhci5iaW5nICAnLCAnXHQgIGZvby5iYXIuYmluZyAgJywgJyBmb28uYmFyLmJpbmcgJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3dpdGhfY29tbWVudHNfYW5kX3dzcChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tLAorICAgICAgICAgICAgJyAoc2luZykgIGZvby5iYXIuYmluZyAoaGVyZSkgJywgJyAoc2luZykgIGZvby5iYXIuYmluZyAoaGVyZSkgJywKKyAgICAgICAgICAgICAgICAnIGZvby5iYXIuYmluZyAnLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fc3BhY2VfZW5kc19kb3RfYXRvbShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tLAorICAgICAgICAgICAgJyAoc2luZykgIGZvby5iYXIgLmJpbmcgKGhlcmUpICcsICcgKHNpbmcpICBmb28uYmFyICcsCisgICAgICAgICAgICAgICAgJyBmb28uYmFyICcsIFtdLCAnLmJpbmcgKGhlcmUpICcpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fbm9fYXRvbV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbSgnIChmb28pICcpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fbGVhZGluZ19kb3RfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b20oJyAoZm9vKSAuYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90d29fZG90c19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbSgnYmFyLi5iYW5nJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90cmFpbGluZ19kb3RfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b20oJyAoZm9vKSBiYXIuYmFuZy4gZm9vJykKKworICAgICMgZ2V0X3dvcmQgKGlmIHRoaXMgd2VyZSBibGFjayBib3ggd2UnZCByZXBlYXQgYWxsIHRoZSBxcy9hdG9tIHRlc3RzKQorCisgICAgZGVmIHRlc3RfZ2V0X3dvcmRfYXRvbV95aWVsZHNfYXRvbShzZWxmKToKKyAgICAgICAgd29yZCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF93b3JkLAorICAgICAgICAgICAgJyAoZm9vKSBiYXIgKGJhbmcpIDphaCcsICcgKGZvbykgYmFyIChiYW5nKSAnLCAnIGJhciAnLCBbXSwgJzphaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC50b2tlbl90eXBlLCAnYXRvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZFswXS50b2tlbl90eXBlLCAnY2Z3cycpCisKKyAgICBkZWYgdGVzdF9nZXRfd29yZF9xc195aWVsZHNfcXMoc2VsZik6CisgICAgICAgIHdvcmQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfd29yZCwKKyAgICAgICAgICAgICciYmFyICIgKGJhbmcpIGFoJywgJyJiYXIgIiAoYmFuZykgJywgJ2JhciAgJywgW10sICdhaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC50b2tlbl90eXBlLCAncXVvdGVkLXN0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZFswXS50b2tlbl90eXBlLCAnYmFyZS1xdW90ZWQtc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3b3JkWzBdLnZhbHVlLCAnYmFyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC5jb250ZW50LCAnYmFyICcpCisKKyAgICBkZWYgdGVzdF9nZXRfd29yZF9lbmRzX2F0X2RvdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3dvcmQsCisgICAgICAgICAgICAnZm9vLicsICdmb28nLCAnZm9vJywgW10sICcuJykKKworICAgICMgZ2V0X3BocmFzZQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9zaW1wbGUoc2VsZik6CisgICAgICAgIHBocmFzZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9waHJhc2UsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiIgaXMgaGlzIG5hbWUsIG9oLicsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiIgaXMgaGlzIG5hbWUnLAorICAgICAgICAgICAgJ0ZyZWQgQS4gSm9obnNvbiBpcyBoaXMgbmFtZScsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcsIG9oLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlLnRva2VuX3R5cGUsICdwaHJhc2UnKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9jb21wbGV4KHNlbGYpOgorICAgICAgICBwaHJhc2UgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcGhyYXNlLAorICAgICAgICAgICAgJyAoQSkgYmlyZCAoaW4gKG15fHlvdXIpKSAiaGFuZCAgIiBpcyBtZXNzeVx0PD5cdCcsCisgICAgICAgICAgICAnIChBKSBiaXJkIChpbiAobXl8eW91cikpICJoYW5kICAiIGlzIG1lc3N5XHQnLAorICAgICAgICAgICAgJyBiaXJkIGhhbmQgICBpcyBtZXNzeSAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnPD5cdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzBdWzBdLmNvbW1lbnRzLCBbJ0EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaHJhc2VbMF1bMl0uY29tbWVudHMsIFsnaW4gKG15fHlvdXIpJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfcGhyYXNlX29ic29sZXRlKHNlbGYpOgorICAgICAgICBwaHJhc2UgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcGhyYXNlLAorICAgICAgICAgICAgJ0ZyZWQgQS4od2VpcmQpLk8gSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZCBBLih3ZWlyZCkuTyBKb2huc29uJywKKyAgICAgICAgICAgICdGcmVkIEEuIC5PIEpvaG5zb24nLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwaHJhc2UpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBocmFzZVszXS5jb21tZW50cywgWyd3ZWlyZCddKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9waGFyc2VfbXVzdF9zdGFydF93aXRoX3dvcmQoc2VsZik6CisgICAgICAgIHBocmFzZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9waHJhc2UsCisgICAgICAgICAgICAnKGV2ZW4gd2VpcmRlcikubmFtZScsCisgICAgICAgICAgICAnKGV2ZW4gd2VpcmRlcikubmFtZScsCisgICAgICAgICAgICAnIC5uYW1lJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0gKyBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBocmFzZSksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzBdLmNvbW1lbnRzLCBbJ2V2ZW4gd2VpcmRlciddKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9lbmRpbmdfd2l0aF9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgcGhyYXNlID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3BocmFzZSwKKyAgICAgICAgICAgICdzaW1wbGUgcGhyYXNlLih3aXRoIHRyYWlsaW5nIGNvbW1lbnQpOmJvbycsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4od2l0aCB0cmFpbGluZyBjb21tZW50KScsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4gJywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnOmJvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBocmFzZSksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzNdLmNvbW1lbnRzLCBbJ3dpdGggdHJhaWxpbmcgY29tbWVudCddKQorCisgICAgZGVmIGdldF9waHJhc2VfY2Z3c19vbmx5X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X3BocmFzZSgnIChmb28pICcpCisKKyAgICAjIGdldF9sb2NhbF9wYXJ0CisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9zaW1wbGUoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICdkaW5zZGFsZUBweXRob24ub3JnJywgJ2RpbnNkYWxlJywgJ2RpbnNkYWxlJywgW10sICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC50b2tlbl90eXBlLCAnbG9jYWwtcGFydCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfd2l0aF9kb3Qoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICdGcmVkLkEuSm9obnNvbkBweXRob24ub3JnJywKKyAgICAgICAgICAgICdGcmVkLkEuSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZC5BLkpvaG5zb24nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQuQS5Kb2huc29uJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3dpdGhfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBGcmVkLkEuSm9obnNvbiAgQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyBGcmVkLkEuSm9obnNvbiAgJywKKyAgICAgICAgICAgICcgRnJlZC5BLkpvaG5zb24gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICcgKGZvbykgRnJlZC5BLkpvaG5zb24gKGJhciAoYmlyZCkpICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28pIEZyZWQuQS5Kb2huc29uIChiYXIgKGJpcmQpKSAgJywKKyAgICAgICAgICAgICcgRnJlZC5BLkpvaG5zb24gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydFswXVswXS5jb21tZW50cywgWydmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0WzBdWzJdLmNvbW1lbnRzLCBbJ2JhciAoYmlyZCknXSkKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NpbXBsZV9xdW90ZWQoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICciZGluc2RhbGUiQHB5dGhvbi5vcmcnLCAnImRpbnNkYWxlIicsICciZGluc2RhbGUiJywgW10sICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC50b2tlbl90eXBlLCAnbG9jYWwtcGFydCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfd2l0aF9xdW90ZWRfZG90KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIkZyZWQuQS5Kb2huc29uIkBweXRob24ub3JnJywKKyAgICAgICAgICAgICciRnJlZC5BLkpvaG5zb24iJywKKyAgICAgICAgICAgICciRnJlZC5BLkpvaG5zb24iJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9xdW90ZWRfd2l0aF93aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnICJGcmVkIEEuIEpvaG5zb24iICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnICJGcmVkIEEuIEpvaG5zb24iICAnLAorICAgICAgICAgICAgJyAiRnJlZCBBLiBKb2huc29uIiAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQgQS4gSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9xdW90ZWRfd2l0aF9jZndzKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28pICIgRnJlZCBBLiBKb2huc29uICIgKGJhciAoYmlyZCkpICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28pICIgRnJlZCBBLiBKb2huc29uICIgKGJhciAoYmlyZCkpICAnLAorICAgICAgICAgICAgJyAiIEZyZWQgQS4gSm9obnNvbiAiICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnIEZyZWQgQS4gSm9obnNvbiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnRbMF1bMF0uY29tbWVudHMsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydFswXVsyXS5jb21tZW50cywgWydiYXIgKGJpcmQpJ10pCisKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NpbXBsZV9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJ0ZyZWQuIEEuSm9obnNvbkBweXRob24ub3JnJywKKyAgICAgICAgICAgICdGcmVkLiBBLkpvaG5zb24nLAorICAgICAgICAgICAgJ0ZyZWQuIEEuSm9obnNvbicsCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnRnJlZC5BLkpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfY29tcGxleF9vYnNvbGV0ZV8xKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24uImFuZCAgZG9ncyAiQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyAoZm9vIClGcmVkIChiYXIpLihiaXJkKSBBLihzaGVlcClKb2huc29uLiJhbmQgIGRvZ3MgIicsCisgICAgICAgICAgICAnIEZyZWQgLiBBLiBKb2huc29uLmFuZCAgZG9ncyAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQuQS5Kb2huc29uLmFuZCAgZG9ncyAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfY29tcGxleF9vYnNvbGV0ZV9pbnZhbGlkKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24gImFuZCAgZG9ncyJAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24gImFuZCAgZG9ncyInLAorICAgICAgICAgICAgJyBGcmVkIC4gQS4gSm9obnNvbiBhbmQgIGRvZ3MnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbiBhbmQgIGRvZ3MnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfbm9fcGFydF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9sb2NhbF9wYXJ0KCcgKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NwZWNpYWxfaW5zdGVhZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9sb2NhbF9wYXJ0KCcgKGZvbykgQHB5dGhvbi5vcmcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfdHJhaWxpbmdfZG90KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIGJvcnJpcy5AcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIGJvcnJpcy4nLAorICAgICAgICAgICAgJyBib3JyaXMuJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnYm9ycmlzLicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF90cmFpbGluZ19kb3Rfd2l0aF93cyhzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBib3JyaXMuIEBweXRob24ub3JnJywKKyAgICAgICAgICAgICcgYm9ycmlzLiAnLAorICAgICAgICAgICAgJyBib3JyaXMuICcsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ2JvcnJpcy4nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfbGVhZGluZ19kb3Qoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICcuYm9ycmlzQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJy5ib3JyaXMnLAorICAgICAgICAgICAgJy5ib3JyaXMnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICcuYm9ycmlzJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X2xlYWRpbmdfZG90X2FmdGVyX3dzKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIC5ib3JyaXNAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIC5ib3JyaXMnLAorICAgICAgICAgICAgJyAuYm9ycmlzJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnLmJvcnJpcycpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9kb3VibGVfZG90X3JhaXNlcyhzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBib3JyaXMuKGZvbykubmF0YXNoYUBweXRob24ub3JnJywKKyAgICAgICAgICAgICcgYm9ycmlzLihmb28pLm5hdGFzaGEnLAorICAgICAgICAgICAgJyBib3JyaXMuIC5uYXRhc2hhJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnYm9ycmlzLi5uYXRhc2hhJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3F1b3RlZF9zdHJpbmdzX2luX2F0b21fbGlzdChzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSInLAorICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfdmFsaWRfYW5kX2ludmFsaWRfcXBfaW5fYXRvbV9saXN0KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICByJyJcXCJleGFtcGxlXFwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIHInIlxcImV4YW1wbGVcXCIgZXhhbXBsZSInLAorICAgICAgICAgICAgcidcZXhhbXBsZVxcIGV4YW1wbGUnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSo1LAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCByJ1xleGFtcGxlXFwgZXhhbXBsZScpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF91bmljb2RlX2RlZmVjdChzZWxmKToKKyAgICAgICAgIyBDdXJyZW50bHkgdGhpcyBvbmx5IGhhcHBlbnMgd2hlbiBwYXJzaW5nIHVuaWNvZGUsIG5vdCB3aGVuIHBhcnNpbmcKKyAgICAgICAgIyBzdHVmZiB0aGF0IHdhcyBvcmlnaW5hbGx5IGJpbmFyeS4KKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJ2V4w6FtcGxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdleMOhbXBsZScsCisgICAgICAgICAgICAnZXjDoW1wbGUnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25BU0NJSUxvY2FsUGFydERlZmVjdF0sCisgICAgICAgICAgICAnQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdleMOhbXBsZScpCisKKyAgICAjIGdldF9kdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X29ubHkoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyJywgJ2Zvb2JhcicsICdmb29iYXInLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRleHQudG9rZW5fdHlwZSwgJ3B0ZXh0JykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF9hbGxfZHRleHQoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LCBzZWxmLnJmY19kdGV4dF9jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmZjX2R0ZXh0X2NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZmNfZHRleHRfY2hhcnMsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfZm9sbG93aW5nX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gXHRcdGJhcicsICdmb28nLCAnZm9vJywgW10sICcgXHRcdGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfbm9uX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXHgwMGJhcl0nLCAnZm9vXHgwMGJhcicsICdmb29ceDAwYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRleHQuZGVmZWN0c1swXS5ub25fcHJpbnRhYmxlc1swXSwgJ1x4MDAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X3dpdGhfcXAoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidmb29cXVxbXFxiYXJcYlxlXGxcbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ2Zvb11bXGJhcmJlbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidmb29dW1xiYXJiZWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfdXBfdG9fY2xvc2VfYnJhY2tldF9vbmx5KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXScsICdmb28nLCAnZm9vJywgW10sICddJykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF93c3BfYmVmb3JlX2Nsb3NlX2JyYWNrZXRfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vICBdJywgJ2ZvbycsICdmb28nLCBbXSwgJyAgXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfY2xvc2VfYnJhY2tldF9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb11iYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnXWJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfdXBfdG9fb3Blbl9icmFja2V0X29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb29bJywgJ2ZvbycsICdmb28nLCBbXSwgJ1snKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X3dzcF9iZWZvcmVfb3Blbl9icmFja2V0X3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyAgWycsICdmb28nLCAnZm9vJywgW10sICcgIFsnKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X29wZW5fYnJhY2tldF9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1tiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnW2JhcicpCisKKyAgICAjIGdldF9kb21haW5fbGl0ZXJhbAorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9saXRlcmFsX29ubHkoc2VsZik6CisgICAgICAgIGRvbWFpbl9saXRlcmFsID0gZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC50b2tlbl90eXBlLCAnZG9tYWluLWxpdGVyYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbl9saXRlcmFsLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5pcCwgJzEyNy4wLjAuMScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2xpdGVyYWxfd2l0aF9pbnRlcm5hbF93cyhzZWxmKToKKyAgICAgICAgZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbICAxMjcuMC4wLjFcdCBdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1sgIDEyNy4wLjAuMVx0IF0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyAxMjcuMC4wLjEgXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5kb21haW4sICdbMTI3LjAuMC4xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluX2xpdGVyYWwuaXAsICcxMjcuMC4wLjEnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9saXRlcmFsX3dpdGhfc3Vycm91bmRpbmdfY2Z3cyhzZWxmKToKKyAgICAgICAgZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsgIDEyNy4wLjAuMV0gKGJhciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbICAxMjcuMC4wLjFdIChiYXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbIDEyNy4wLjAuMV0gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbl9saXRlcmFsLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5pcCwgJzEyNy4wLjAuMScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2xpdGVyYWxfbm9fc3RhcnRfY2hhcl9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW5fbGl0ZXJhbCgnKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fbGl0ZXJhbF9ub19zdGFydF9jaGFyX2JlZm9yZV9zcGVjaWFsX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2RvbWFpbl9saXRlcmFsKCcoZm9vKSBAJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fbGl0ZXJhbF9iYWRfZHRleHRfY2hhcl9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW5fbGl0ZXJhbCgnKGZvbykgW2FiY1tAJykKKworICAgICMgZ2V0X2RvbWFpbgorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9yZWd1bGFyX2RvbWFpbl9vbmx5KHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi50b2tlbl90eXBlLCAnZG9tYWluJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9kb21haW5fbGl0ZXJhbF9vbmx5KHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1sxMjcuMC4wLjFdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi50b2tlbl90eXBlLCAnZG9tYWluJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnWzEyNy4wLjAuMV0nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGRvbWFpbiA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUuY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUuY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBleGFtcGxlLmNvbSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2RvbWFpbl9saXRlcmFsX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbMTI3LjAuMC4xXVx0KGJhciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsxMjcuMC4wLjFdXHQoYmFyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbMTI3LjAuMC4xXSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdbMTI3LjAuMC4xXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2RvbWFpbl93aXRoX2Nmd3NfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKWV4YW1wbGUuY29tXHQoYmFyKSwgbmV4dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pZXhhbXBsZS5jb21cdChiYXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGV4YW1wbGUuY29tICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fZG9tYWluX2xpdGVyYWxfd2l0aF9jZndzX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbMTI3LjAuMC4xXVx0KGJhciksIG5leHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsxMjcuMC4wLjFdXHQoYmFyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbMTI3LjAuMC4xXSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsIG5leHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdbMTI3LjAuMC4xXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX29ic29sZXRlKHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKSBleGFtcGxlIC4gKGJpcmQpY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUgLiAoYmlyZCljb20oYmFyKVx0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGV4YW1wbGUgLiBjb20gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9ub19ub25fY2Z3c19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW4oIiAgKGZvbylcdCIpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX25vX2F0b21fcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG9tYWluKCIgIChmb28pXHQsIGJyb2tlbiIpCisKKworICAgICMgZ2V0X2FkZHJfc3BlYworCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY19ub3JtYWwoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy50b2tlbl90eXBlLCAnYWRkci1zcGVjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX3dpdGhfZG9hbWluX2xpdGVyYWwoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQFsxMjcuMC4wLjFdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5kb21haW4sICdbMTI3LjAuMC4xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmFkZHJfc3BlYywgJ2RpbnNkYWxlQFsxMjcuMC4wLjFdJykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyX3NwZWNfd2l0aF9jZndzKHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICcoZm9vKSBkaW5zZGFsZShiYXIpQCAoYmlyZCkgZXhhbXBsZS5jb20gKGJvZyknLAorICAgICAgICAgICAgICAgICcoZm9vKSBkaW5zZGFsZShiYXIpQCAoYmlyZCkgZXhhbXBsZS5jb20gKGJvZyknLAorICAgICAgICAgICAgICAgICcgZGluc2RhbGVAZXhhbXBsZS5jb20gJywKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX3dpdGhfcW91b3RlZF9zdHJpbmdfYW5kX2Nmd3Moc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKScsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKScsCisgICAgICAgICAgICAgICAgJyAicm95IGEgYnVnIkBleGFtcGxlLmNvbSAnLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAncm95IGEgYnVnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICcicm95IGEgYnVnIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYWRkcl9zcGVjID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAnKGZvbykgInJveSBhIGJ1ZyIoYmFyKUAgKGJpcmQpIGV4YW1wbGUuY29tIChib2cpICwgbmV4dCcsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKSAnLAorICAgICAgICAgICAgICAgICcgInJveSBhIGJ1ZyJAZXhhbXBsZS5jb20gJywKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ3JveSBhIGJ1ZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuYWRkcl9zcGVjLCAnInJveSBhIGJ1ZyJAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY19xdW90ZWRfc3RyaW5nc19pbl9hdG9tX2xpc3Qoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAnIiJleGFtcGxlIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnIiJleGFtcGxlIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZXhhbXBsZSBleGFtcGxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAnZXhhbXBsZSBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICciZXhhbXBsZSBleGFtcGxlIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX2RvdF9hdG9tKHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgJ3N0YXIuYS5zdGFyQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdzdGFyLmEuc3RhckBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnc3Rhci5hLnN0YXJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ3N0YXIuYS5zdGFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdzdGFyLmEuc3RhckBleGFtcGxlLmNvbScpCisKKyAgICAjIGdldF9vYnNfcm91dGUKKworICAgIGRlZiB0ZXN0X2dldF9vYnNfcm91dGVfc2ltcGxlKHNlbGYpOgorICAgICAgICBvYnNfcm91dGUgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfb2JzX3JvdXRlLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNfcm91dGUudG9rZW5fdHlwZSwgJ29icy1yb3V0ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JzX3JvdXRlLmRvbWFpbnMsIFsnZXhhbXBsZS5jb20nLCAndHdvLmV4YW1wbGUuY29tJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfb2JzX3JvdXRlX2NvbXBsZXgoc2VsZik6CisgICAgICAgIG9ic19yb3V0ZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9vYnNfcm91dGUsCisgICAgICAgICAgICAnKGZvbyksLCAoYmx1ZSlAZXhhbXBsZS5jb20gKGJhciksQHR3by4oZm9vKSBleGFtcGxlLmNvbSAoYmlyZCk6JywKKyAgICAgICAgICAgICcoZm9vKSwsIChibHVlKUBleGFtcGxlLmNvbSAoYmFyKSxAdHdvLihmb28pIGV4YW1wbGUuY29tIChiaXJkKTonLAorICAgICAgICAgICAgJyAsLCBAZXhhbXBsZS5jb20gLEB0d28uIGV4YW1wbGUuY29tIDonLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sICAjIFRoaXMgaXMgdGhlIG9icy1kb21haW4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9ic19yb3V0ZS50b2tlbl90eXBlLCAnb2JzLXJvdXRlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNfcm91dGUuZG9tYWlucywgWydleGFtcGxlLmNvbScsICd0d28uZXhhbXBsZS5jb20nXSkKKworICAgIGRlZiB0ZXN0X2dldF9vYnNfcm91dGVfbm9fcm91dGVfYmVmb3JlX2VuZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIEBleGFtcGxlLmNvbSwnKQorCisgICAgZGVmIHRlc3RfZ2V0X29ic19yb3V0ZV9ub19yb3V0ZV9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIFthYmNdLCcpCisKKyAgICBkZWYgdGVzdF9nZXRfb2JzX3JvdXRlX25vX3JvdXRlX2JlZm9yZV9zcGVjaWFsX3JhaXNlczIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIEBleGFtcGxlLmNvbSBbYWJjXSwnKQorCisgICAgIyBnZXRfYW5nbGVfYWRkcgorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfc2ltcGxlKHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIudG9rZW5fdHlwZSwgJ2FuZ2xlLWFkZHInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2VtcHR5KHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnPD4nLAorICAgICAgICAgICAgJzw+JywKKyAgICAgICAgICAgICc8PicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci50b2tlbl90eXBlLCAnYW5nbGUtYWRkcicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIubG9jYWxfcGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5kb21haW4pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICc8PicpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICcgKGZvbykgPGRpbnNkYWxlQGV4YW1wbGUuY29tPihiYXIpJywKKyAgICAgICAgICAgICcgKGZvbykgPGRpbnNkYWxlQGV4YW1wbGUuY29tPihiYXIpJywKKyAgICAgICAgICAgICcgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLnRva2VuX3R5cGUsICdhbmdsZS1hZGRyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9xc19hbmRfZG9tYWluX2xpdGVyYWwoc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnRnJlZCBQZXJmZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJyJGcmVkIFBlcmZlY3QiQFsxMjcuMC4wLjFdJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2ludGVybmFsX2Nmd3Moc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICc8KGZvbykgZGluc2RhbGVAZXhhbXBsZS5jb20oYmFyKT4nLAorICAgICAgICAgICAgJzwoZm9vKSBkaW5zZGFsZUBleGFtcGxlLmNvbShiYXIpPicsCisgICAgICAgICAgICAnPCBkaW5zZGFsZUBleGFtcGxlLmNvbSA+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfb2JzX3JvdXRlKHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnKGZvbyk8QGV4YW1wbGUuY29tLCAoYmlyZCkgQHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+IChiYXIpICcsCisgICAgICAgICAgICAnKGZvbyk8QGV4YW1wbGUuY29tLCAoYmlyZCkgQHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+IChiYXIpICcsCisgICAgICAgICAgICAnIDxAZXhhbXBsZS5jb20sIEB0d28uZXhhbXBsZS5jb206IGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5yb3V0ZSwgWydleGFtcGxlLmNvbScsICd0d28uZXhhbXBsZS5jb20nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX21pc3NpbmdfY2xvc2luZ19hbmdsZShzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbWlzc2luZ19jbG9zaW5nX2FuZ2xlX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbSAoZm9vKScsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tIChmb28pPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tID4nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gKGZvbyksIG5leHQnLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gKGZvbyknLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbm9fYW5nbGVfcmFpc2Uoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9hbmdsZV9hZGRyKCcoZm9vKSAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbm9fYW5nbGVfYmVmb3JlX3NwZWNpYWxfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYW5nbGVfYWRkcignKGZvbykgLCBuZXh0JykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX25vX2FuZ2xlX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIoJ2JhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9zcGVjaWFsX2FmdGVyX2FuZ2xlX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIoJyhmb28pIDwsIGJhcicpCisKKyAgICAjIGdldF9kaXNwbGF5X25hbWUgIFRoaXMgaXMgcGhyYXNlIGJ1dCB3aXRoIGEgZGlmZmVyZW50IHZhbHVlLgorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9zaW1wbGUoc2VsZik6CisgICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnRnJlZCBBIEpvaG5zb24nLAorICAgICAgICAgICAgJ0ZyZWQgQSBKb2huc29uJywKKyAgICAgICAgICAgICdGcmVkIEEgSm9obnNvbicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS50b2tlbl90eXBlLCAnZGlzcGxheS1uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnRnJlZCBBIEpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9jb21wbGV4MShzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICciRnJlZCBBLiBKb2huc29uIiBpcyBoaXMgbmFtZSwgb2guJywKKyAgICAgICAgICAgICciRnJlZCBBLiBKb2huc29uIiBpcyBoaXMgbmFtZScsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiBpcyBoaXMgbmFtZSInLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBvaC4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS50b2tlbl90eXBlLCAnZGlzcGxheS1uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnRnJlZCBBLiBKb2huc29uIGlzIGhpcyBuYW1lJykKKworICAgIGRlZiB0ZXN0X2dldF9kaXNwbGF5X25hbWVfY29tcGxleDIoc2VsZik6CisgICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnIChBKSBiaXJkIChpbiAobXl8eW91cikpICJoYW5kICAiIGlzIG1lc3N5XHQ8Plx0JywKKyAgICAgICAgICAgICcgKEEpIGJpcmQgKGluIChteXx5b3VyKSkgImhhbmQgICIgaXMgbWVzc3lcdCcsCisgICAgICAgICAgICAnICJiaXJkIGhhbmQgICBpcyBtZXNzeSIgJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJzw+XHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZVswXVswXS5jb21tZW50cywgWydBJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lWzBdWzJdLmNvbW1lbnRzLCBbJ2luIChteXx5b3VyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS5kaXNwbGF5X25hbWUsICdiaXJkIGhhbmQgICBpcyBtZXNzeScpCisKKyAgICBkZWYgdGVzdF9nZXRfZGlzcGxheV9uYW1lX29ic29sZXRlKHNlbGYpOgorICAgICAgICBkaXNwbGF5X25hbWUgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgJ0ZyZWQgQS4od2VpcmQpLk8gSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZCBBLih3ZWlyZCkuTyBKb2huc29uJywKKyAgICAgICAgICAgICciRnJlZCBBLiAuTyBKb2huc29uIicsCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpc3BsYXlfbmFtZSksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lWzNdLmNvbW1lbnRzLCBbJ3dlaXJkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lLmRpc3BsYXlfbmFtZSwgJ0ZyZWQgQS4gLk8gSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfZGlzcGxheV9uYW1lX3BoYXJzZV9tdXN0X3N0YXJ0X3dpdGhfd29yZChzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICcoZXZlbiB3ZWlyZGVyKS5uYW1lJywKKyAgICAgICAgICAgICcoZXZlbiB3ZWlyZGVyKS5uYW1lJywKKyAgICAgICAgICAgICcgIi5uYW1lIicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdICsgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXNwbGF5X25hbWUpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZVswXS5jb21tZW50cywgWydldmVuIHdlaXJkZXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnLm5hbWUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9lbmRpbmdfd2l0aF9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICdzaW1wbGUgcGhyYXNlLih3aXRoIHRyYWlsaW5nIGNvbW1lbnQpOmJvbycsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4od2l0aCB0cmFpbGluZyBjb21tZW50KScsCisgICAgICAgICAgICAnInNpbXBsZSBwaHJhc2UuIiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICc6Ym9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlzcGxheV9uYW1lKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWVbM10uY29tbWVudHMsIFsnd2l0aCB0cmFpbGluZyBjb21tZW50J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lLmRpc3BsYXlfbmFtZSwgJ3NpbXBsZSBwaHJhc2UuJykKKworICAgICMgZ2V0X25hbWVfYWRkcgorCisgICAgZGVmIHRlc3RfZ2V0X25hbWVfYWRkcl9hbmdsZV9hZGRyX29ubHkoc2VsZik6CisgICAgICAgIG5hbWVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9uYW1lX2FkZHIsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci50b2tlbl90eXBlLCAnbmFtZS1hZGRyJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfYXRvbV9uYW1lKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIudG9rZW5fdHlwZSwgJ25hbWUtYWRkcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSwgJ0RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfYXRvbV9uYW1lX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICcoZm9vKSBEaW5zZGFsZSAoYmFyKSA8ZGluc2RhbGVAZXhhbXBsZS5jb20+IChiaXJkKScsCisgICAgICAgICAgICAnKGZvbykgRGluc2RhbGUgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyBEaW5zZGFsZSA8ZGluc2RhbGVAZXhhbXBsZS5jb20+ICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kaXNwbGF5X25hbWUsICdEaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX25hbWVfd2l0aF9jZndzX2FuZF9kb3RzKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyhmb28pIFJveS5BLkJlYXIgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyhmb28pIFJveS5BLkJlYXIgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyAiUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kaXNwbGF5X25hbWUsICdSb3kuQS5CZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfcXNfbmFtZShzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSwgJ1JveS5BLkJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5hbWVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X25hbWVfYWRkcl93aXRoX3JvdXRlKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8QHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPEB0d28uZXhhbXBsZS5jb206IGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxAdHdvLmV4YW1wbGUuY29tOiBkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZGlzcGxheV9uYW1lLCAnUm95LkEuQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIucm91dGUsIFsndHdvLmV4YW1wbGUuY29tJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCBuZXh0JywKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZGlzcGxheV9uYW1lLCAnUm95LkEuQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX25vX2NvbnRlbnRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfbmFtZV9hZGRyKCcgKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfbm9fY29udGVudF9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9uYW1lX2FkZHIoJyAoZm9vKSAsJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfbm9fYW5nbGVfYWZ0ZXJfZGlzcGxheV9uYW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X25hbWVfYWRkcignZm9vIGJhcicpCisKKyAgICAjIGdldF9tYWlsYm94CisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9hZGRyX3NwZWNfb25seShzZWxmKToKKyAgICAgICAgbWFpbGJveCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LnRva2VuX3R5cGUsICdtYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5kaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfYW5nbGVfYWRkcl9vbmx5KHNlbGYpOgorICAgICAgICBtYWlsYm94ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3gsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gudG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1haWxib3gucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9uYW1lX2FkZHIoc2VsZik6CisgICAgICAgIG1haWxib3ggPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveCwKKyAgICAgICAgICAgICciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC50b2tlbl90eXBlLCAnbWFpbGJveCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kaXNwbGF5X25hbWUsICdSb3kgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBtYWlsYm94ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3gsCisgICAgICAgICAgICAnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCByZXN0JywKKyAgICAgICAgICAgICciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcsIHJlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gudG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZGlzcGxheV9uYW1lLCAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X3F1b3RlZF9zdHJpbmdzX2luX2F0b21fbGlzdChzZWxmKToKKyAgICAgICAgbWFpbGJveCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94LAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnImV4YW1wbGUgZXhhbXBsZSJAZXhhbXBsZS5jb20nKQorCisgICAgIyBnZXRfbWFpbGJveF9saXN0CisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9saXN0X3NpbmdsZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QudG9rZW5fdHlwZSwgJ21haWxib3gtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBtYWlsYm94ID0gbWFpbGJveF9saXN0Lm1haWxib3hlc1swXQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1haWxib3gucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3RfdHdvX3NpbXBsZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tLCBkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbSwgZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20sIGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QudG9rZW5fdHlwZSwgJ21haWxib3gtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF90d29fbmFtZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0Lm1haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JveSBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9saXN0X3R3b19jb21wbGV4KHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCcoZm9vKSAiUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4oYmFyKSwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC4oYmlyZClleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnKGZvbykgIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+KGJhciksJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuKGJpcmQpZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyAiUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4gLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LiBleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdSb3kgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBGbGludHN0b25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF91bnBhcnNlYWJsZV9tYWlsYm94X251bGwoc2VsZik6CisgICAgICAgIG1haWxib3hfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94X2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciJbXSBkaW5zZGFsZUBleGFtcGxlLmNvbSwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC4oYmlyZClleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIltdIGRpbnNkYWxlQGV4YW1wbGUuY29tLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LihiaXJkKWV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiW10gZGluc2RhbGVAZXhhbXBsZS5jb20sJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuIGV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgdGhlICdleHRyYScgdGV4dCBhZnRlciB0aGUgbG9jYWwgcGFydAorICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgdGhlIGxvY2FsIHBhcnQgd2l0aCBubyBhbmdsZS1hZGRyCisgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0LCAgIyBwZXJpb2QgaW4gZXh0cmEgdGV4dCAoZXhhbXBsZS5jb20pCisgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwgIyAoYmlyZCkgaW4gdmFsaWQgYWRkcmVzcy4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZC1tYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS5kb21haW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJyJSb3kgQS4gQmVhciInKQorICAgICAgICBzZWxmLmFzc2VydElzKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0Lm1haWxib3hlc1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF9qdW5rX2FmdGVyX3ZhbGlkX2FkZHJlc3Moc2VsZik6CisgICAgICAgIG1haWxib3hfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94X2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPkBALCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT5AQCwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+QEAsJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZC1tYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBGbGludHN0b25lJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3RfZW1wdHlfbGlzdF9lbGVtZW50KHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sIChiaXJkKSwsJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgKGJpcmQpLCwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAsLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QubWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JveSBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF9vbmx5X2VtcHR5X2VsZW1lbnRzKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJyhmb28pLCwgKGJhciknLAorICAgICAgICAgICAgJyhmb28pLCwgKGJhciknLAorICAgICAgICAgICAgJyAsLCAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QubWFpbGJveGVzKQorCisgICAgIyBnZXRfZ3JvdXBfbGlzdAorCisgICAgZGVmIHRlc3RfZ2V0X2dyb3VwX2xpc3RfY2Z3c19vbmx5KHNlbGYpOgorICAgICAgICBncm91cF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwX2xpc3QsCisgICAgICAgICAgICAnKGhpZGRlbik7JywKKyAgICAgICAgICAgICcoaGlkZGVuKScsCisgICAgICAgICAgICAnICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICc7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9saXN0X21haWxib3hfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXBfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUub3JnLCAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5vcmc+JywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLm9yZywgIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUub3JnPicsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5vcmcsICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLm9yZz4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0Lm1haWxib3hlc1sxXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZyZWQgQS4gQmVhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbGlzdF9vYnNfZ3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXBfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cF9saXN0LAorICAgICAgICAgICAgJywgKGZvbyksLChiYXIpJywKKyAgICAgICAgICAgICcsIChmb28pLCwoYmFyKScsCisgICAgICAgICAgICAnLCAsLCAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9saXN0X2NvbW1lbnRfb25seV9pbnZhbGlkKHNlbGYpOgorICAgICAgICBncm91cF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwX2xpc3QsCisgICAgICAgICAgICAnKGJhciknLAorICAgICAgICAgICAgJyhiYXIpJywKKyAgICAgICAgICAgICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgICMgZ2V0X2dyb3VwCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfZW1wdHkoc2VsZik6CisgICAgICAgIGdyb3VwID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjo7JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOjsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC50b2tlbl90eXBlLCAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbnVsbF9hZGRyX3NwZWMoc2VsZik6CisgICAgICAgIGdyb3VwID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwLAorICAgICAgICAgICAgJ2ZvbzogPD47JywKKyAgICAgICAgICAgICdmb286IDw+OycsCisgICAgICAgICAgICAnZm9vOiA8PjsnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLmFsbF9tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmFsbF9tYWlsYm94ZXNbMF0udmFsdWUsICc8PicpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfY2Z3c19vbmx5KHNlbGYpOgorICAgICAgICBncm91cCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cCwKKyAgICAgICAgICAgICdNb250eSBQeXRob246IChoaWRkZW4pOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAoaGlkZGVuKTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogOycsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9zaW5nbGVfbWFpbGJveChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbWl4ZWRfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIDxwaW5nQGV4YW1wZWxlLmNvbT4sIHhAdGVzdC5leGFtcGxlLmNvbTsnKSwKKyAgICAgICAgICAgICgnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnKGZvbykgUm9nZXIgPHBpbmdAZXhhbXBlbGUuY29tPiwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgKCdNb250eSBQeXRob246ICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcgUm9nZXIgPHBpbmdAZXhhbXBlbGUuY29tPiwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC50b2tlbl90eXBlLCAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMV0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdSb2dlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzJdLmxvY2FsX3BhcnQsICd4JykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9vbmVfaW52YWxpZChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIHBpbmdAZXhhbXBlbGUuY29tLCB4QHRlc3QuZXhhbXBsZS5jb207JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIHBpbmdAZXhhbXBlbGUuY29tLCB4QHRlc3QuZXhhbXBsZS5jb207JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyBSb2dlciBwaW5nQGV4YW1wZWxlLmNvbSwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgbm9uLWFuZ2xlIGFkZHIgbWFrZXMgbG9jYWwgcGFydCBpbnZhbGlkCisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAgICMgYW5kIGl0cyBub3Qgb2JzLWxvY2FsIGVpdGhlcjogbm8gZG90cy4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAuYWxsX21haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMV0ubG9jYWxfcGFydCwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShncm91cC5hbGxfbWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSkKKworICAgICMgZ2V0X2FkZHJlc3MKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX3NpbXBsZShzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ21haWxib3gnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfY29tcGxleChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJyhmb28pICJGcmVkIEEuIEJlYXIiIDwoYmlyZClkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyhmb28pICJGcmVkIEEuIEJlYXIiIDwoYmlyZClkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyAiRnJlZCBBLiBCZWFyIiA8IGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MudG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzLm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy5hbGxfbWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ21haWxib3gnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfZW1wdHlfZ3JvdXAoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICdNb250eSBQeXRob246OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOjsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjo7JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS50b2tlbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbnR5IFB5dGhvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19ncm91cChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAneCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19xdW90ZWRfbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJyJmb28gYmFyIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnImZvbyBiYXIiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICciZm9vIGJhciJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsICdtYWlsYm94JykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tLCBuZXh0JywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsICdtYWlsYm94JykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2ludmFsaWRfbWFpbGJveF9pbnZhbGlkKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3MsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbSwgbmV4dCcsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgYWRkci1zcGVjIHdpdGggbm8gZG9tYWluCisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgaW52YWxpZCBsb2NhbC1wYXJ0CisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgbWlzc2luZyAucyBpbiBsb2NhbC1wYXJ0CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5hbGxfbWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmRvbWFpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLmFsbF9tYWlsYm94ZXNbMF0ubG9jYWxfcGFydCwgJ3BpbmcgZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NbMF0udG9rZW5fdHlwZSwgJ2ludmFsaWQtbWFpbGJveCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19xdW90ZWRfc3RyaW5nc19pbl9hdG9tX2xpc3Qoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdleGFtcGxlIGV4YW1wbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MuYWxsX21haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmFkZHJfc3BlYywgJyJleGFtcGxlIGV4YW1wbGUiQGV4YW1wbGUuY29tJykKKworCisgICAgIyBnZXRfYWRkcmVzc19saXN0CisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X21haWxib3hlc19zaW1wbGUoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0WzBdLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYWRkcmVzc19saXN0WzBdLmRpc3BsYXlfbmFtZSkKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfbWFpbGJveGVzX3R3b19zaW1wbGUoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAnZm9vQGV4YW1wbGUuY29tLCAiRnJlZCBBLiBCYXIiIDxiYXJAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICdmb29AZXhhbXBsZS5jb20sICJGcmVkIEEuIEJhciIgPGJhckBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ2Zvb0BleGFtcGxlLmNvbSwgIkZyZWQgQS4gQmFyIiA8YmFyQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwgIkZyZWQgQS4gQmFyIikKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfbWFpbGJveGVzX2NvbXBsZXgoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICcocGluZykgRm9vIDx4QGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJ05vYm9keSBJcy4gU3BlY2lhbCA8eUAoYmlyZClleGFtcGxlLihiYWQpY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnKHBpbmcpIEZvbyA8eEBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICdOb2JvZHkgSXMuIFNwZWNpYWwgPHlAKGJpcmQpZXhhbXBsZS4oYmFkKWNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgJ0ZvbyA8eEBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICciTm9ib2R5IElzLiBTcGVjaWFsIiA8eUBleGFtcGxlLiBjb20+JyksCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0LCAjIHBlcmlvZCBpbiBJcy4KKyAgICAgICAgICAgIGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sICMgY2Z3cyBpbiBkb21haW4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS50b2tlbl90eXBlLCAnbWFpbGJveCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1sxXS5sb2NhbF9wYXJ0LCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1syXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ05vYm9keSBJcy4gU3BlY2lhbCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X21haWxib3hlc19pbnZhbGlkX2FkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgYWRkcmVzc19saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgJyhwaW5nKSBGb28geEBleGFtcGxlLmNvbVtdLCcKKyAgICAgICAgICAgICAgICAnTm9ib2R5IElzLiBTcGVjaWFsIDwoYmlyZClleGFtcGxlLihiYWQpY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnKHBpbmcpIEZvbyB4QGV4YW1wbGUuY29tW10sJworICAgICAgICAgICAgICAgICdOb2JvZHkgSXMuIFNwZWNpYWwgPChiaXJkKWV4YW1wbGUuKGJhZCljb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICdGb28geEBleGFtcGxlLmNvbVtdLCcKKyAgICAgICAgICAgICAgICAnIk5vYm9keSBJcy4gU3BlY2lhbCIgPCBleGFtcGxlLiBjb20+JyksCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgaW52YWxpZCBhZGRyZXNzIGluIGxpc3QKKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyAnRm9vIHgnIGxvY2FsIHBhcnQgaW52YWxpZC4KKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyBNaXNzaW5nIC4gaW4gJ0ZvbyB4JyBsb2NhbCBwYXJ0CisgICAgICAgICAgICAgIGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCwgICMgcGVyaW9kIGluICdJcy4nIGRpc3AtbmFtZSBwaHJhc2UKKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyBubyBkb21haW4gcGFydCBpbiBhZGRyLXNwZWMKKyAgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwgIyBhZGRyLXNwZWMgaGFzIGNvbW1lbnQgaW4gaXQKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0udG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0udG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMV0udG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMV0ubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXS5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXS5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsICdGb28geCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzJdLmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICJOb2JvZHkgSXMuIFNwZWNpYWwiKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfbGlzdF9ncm91cF9lbXB0eShzZWxmKToKKyAgICAgICAgYWRkcmVzc19saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCwKKyAgICAgICAgICAgICdNb250eSBQeXRob246IDsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiA7JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LnRva2VuX3R5cGUsICdhZGRyZXNzLWxpc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QuYWRkcmVzc2VzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzKSwgMCkKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfZ3JvdXBfc2ltcGxlKHNlbGYpOgorICAgICAgICBhZGRyZXNzX2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzc19saXN0LAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb207JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246IGRpbnNkYWxlQGV4YW1wbGUuY29tOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiBkaW5zZGFsZUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QudG9rZW5fdHlwZSwgJ2FkZHJlc3MtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS5tYWlsYm94ZXNbMF0uZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X2dyb3VwX2FuZF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0LmFkZHJlc3NlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb250eSBQeXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzWzBdLmRvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzWzFdLmxvY2FsX3BhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZsaW50JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzFdLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzJdLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICd5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMl0pKQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RfcGFyc2VfbWltZV92ZXJzaW9uKFRlc3RQYXJzZXJNaXhpbiwgVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgbWltZV92ZXJzaW9uX2FzX3ZhbHVlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRsX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRsX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVjdHMpOgorICAgICAgICBtaW1lX3ZlcnNpb24gPSBzZWxmLl90ZXN0X3BhcnNlX3gocGFyc2VyLnBhcnNlX21pbWVfdmVyc2lvbiwKKyAgICAgICAgICAgIHZhbHVlLCB0bF9zdHIsIHRsX3ZhbHVlLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbWVfdmVyc2lvbi5tYWpvciwgbWFqb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWltZV92ZXJzaW9uLm1pbm9yLCBtaW5vcikKKworICAgIG1pbWVfdmVyc2lvbl9wYXJhbXMgPSB7CisKKyAgICAgICAgJ3JmY18yMDQ1XzEnOiAoCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnUkZDXzIwNDVfMic6ICgKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAgJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdSRkNfMjA0NV8zJzogKAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJyAxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzQnOiAoCisgICAgICAgICAgICAnMS4ocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkwJywKKyAgICAgICAgICAgICcxLihwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KTAnLAorICAgICAgICAgICAgJzEuIDAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ2VtcHR5JzogKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlXSksCisKKyAgICAgICAgfQorCisKKworY2xhc3MgVGVzdEZvbGRpbmcoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorCisgICAgZGVmIF90ZXN0KHNlbGYsIHRsLCBmb2xkZWQsIHBvbGljeT1wb2xpY3kpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRsLmZvbGQocG9saWN5PXBvbGljeSksIGZvbGRlZCwgdGwucHBzdHIoKSkKKworICAgIGRlZiB0ZXN0X3NpbXBsZV91bnN0cnVjdHVyZWRfbm9fZm9sZHMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQoIlRoaXMgaXMgYSB0ZXN0IiksCisgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgYSB0ZXN0XG4iKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3Vuc3RydWN0dXJlZF9mb2xkZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQoIlRoaXMgaXMgYWxzbyBhIHRlc3QsIGJ1dCB0aGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIHRoZXJlIGFyZSBlbm91Z2ggd29yZHMgKGFuZCBldmVuIHNvbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgInN5bWJvbHMpIHRvIG1ha2UgaXQgd3JhcDsgYXQgbGVhc3QgaW4gdGhlb3J5LiIpLAorICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIGFsc28gYSB0ZXN0LCBidXQgdGhpcyB0aW1lIHRoZXJlIGFyZSBlbm91Z2ggIgorICAgICAgICAgICAgICAgICAgICAgICAgIndvcmRzIChhbmQgZXZlbiBzb21lXG4iCisgICAgICAgICAgICAgICAgICAgIiBzeW1ib2xzKSB0byBtYWtlIGl0IHdyYXA7IGF0IGxlYXN0IGluIHRoZW9yeS5cbiIpCisKKyAgICBkZWYgdGVzdF91bnN0cnVjdHVyZWRfd2l0aF91bmljb2RlX25vX2ZvbGRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCJow7xic2NoIGtsZWluZXIgYmVpw590IiksCisgICAgICAgICAgICAgICAgICAgIj0/dXRmLTg/cT9oPUMzPUJDYnNjaF9rbGVpbmVyX2JlaT1DMz05RnQ/PVxuIikKKworICAgIGRlZiB0ZXN0X29uZV9ld19vbl9lYWNoX29mX3R3b193cmFwcGVkX2xpbmVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCJNZWluIGtsZWluZXIgS2FrdHVzIGlzdCBzZWhyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaMO8YnNjaC4gIEVzIGhhdCB2aWVsZSBTdGFjaGVsbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZCBvZnQgYmVpw590IG1pY2guIiksCisgICAgICAgICAgICAgICAgICAgIk1laW4ga2xlaW5lciBLYWt0dXMgaXN0IHNlaHIgPT91dGYtOD9xP2g9QzM9QkNic2NoPTJFPz0gICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJFcyBoYXQgdmllbGUgU3RhY2hlbG5cbiIKKyAgICAgICAgICAgICAgICAgICAiIHVuZCBvZnQgPT91dGYtOD9xP2JlaT1DMz05RnQ/PSBtaWNoLlxuIikKKworICAgIGRlZiB0ZXN0X2V3c19jb21iaW5lZF9iZWZvcmVfd3JhcChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCgiTWVpbiBLYWt0dXMgaXN0IGjDvGJzY2guICAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVzIGJlacOfdCBtaWNoLiAgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbmQgdGhhdCdzIGFsbCBJJ20gc2F5aW4uIiksCisgICAgICAgICAgICAgICAgICAgIk1laW4gS2FrdHVzIGlzdCA9P3V0Zi04P3E/aD1DMz1CQ2JzY2g9MkVfX0VzX2JlaT1DMz05RnQ/PSAiCisgICAgICAgICAgICAgICAgICAgICAgICAibWljaC4gIEFuZCB0aGF0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAiIGFsbCBJJ20gc2F5aW4uXG4iKQorCisgICAgIyBYWFggTmVlZCB0ZXN0IG9mIGFuIGVuY29kZWQgd29yZCBzbyBsb25nIHRoYXQgaXQgbmVlZHMgdG8gYmUgd3JhcHBlZAorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2FkZHJlc3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QoImFiYyA8eHl6QGV4YW1wbGUuY29tPiIpWzBdLAorICAgICAgICAgICAgICAgICAgICJhYmMgPHh5ekBleGFtcGxlLmNvbT5cbiIpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2xpc3RfZm9sZGluZ19hdF9jb21tYXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QoJ2FiYyA8eHl6QGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIkZyZWQgQmx1bnQiIDxzaGFycEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJKLlAuQ29vbCIgPGhvdEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJLPD55IiA8a2V5QGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmlyZXNhbGUgPGNoZWFwQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGVuZEBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICAgICAgICAgJ2FiYyA8eHl6QGV4YW1wbGUuY29tPiwgIkZyZWQgQmx1bnQiIDxzaGFycEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgICAgICcgIkouUC5Db29sIiA8aG90QGV4YW1wbGUuY29tPiwgIks8PnkiIDxrZXlAZXhhbXBsZS5jb20+LFxuJworICAgICAgICAgICAgICAgICAgICAnIEZpcmVzYWxlIDxjaGVhcEBleGFtcGxlLmNvbT4sIDxlbmRAZXhhbXBsZS5jb20+XG4nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19saXN0X3dpdGhfdW5pY29kZV9uYW1lcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCgKKyAgICAgICAgICAgICdIw7xic2NoIEtha3R1cyA8YmVhdXRpZnVsQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICdiZWnDn3QgYmVpw590IDxiaXRlckBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICc9P3V0Zi04P3E/SD1DMz1CQ2JzY2g/PSBLYWt0dXMgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgJyA9P3V0Zi04P3E/YmVpPUMzPTlGdF9iZWk9QzM9OUZ0Pz0gPGJpdGVyQGV4YW1wbGUuY29tPlxuJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfbGlzdF93aXRoX3VuaWNvZGVfbmFtZXNfaW5fcXVvdGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfYWRkcmVzc19saXN0KAorICAgICAgICAgICAgJyJIw7xic2NoIEtha3R1cyIgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnImJlacOfdCIgYmVpw590IDxiaXRlckBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICc9P3V0Zi04P3E/SD1DMz1CQ2JzY2g/PSBLYWt0dXMgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgJyA9P3V0Zi04P3E/YmVpPUMzPTlGdF9iZWk9QzM9OUZ0Pz0gPGJpdGVyQGV4YW1wbGUuY29tPlxuJykKKworICAgICMgWFhYIE5lZWQgdGVzdHMgd2l0aCBjb21tZW50cyBvbiB2YXJpb3VzIHNpZGVzIG9mIGEgdW5pY29kZSB0b2tlbiwKKyAgICAjIGFuZCB3aXRoIHVuaWNvZGUgdG9rZW5zIGluIHRoZSBjb21tZW50cy4gIFNwYWNlcyBpbnNpZGUgdGhlIHF1b3RlcworICAgICMgY3VycmVudGx5IGRvbid0IGRvIHRoZSByaWdodCB0aGluZy4KKworICAgIGRlZiB0ZXN0X2luaXRpYWxfd2hpdGVzcGFjZV9zcGxpdHRpbmcoc2VsZik6CisgICAgICAgIGJvZHkgPSBwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCgnICAgJyArICd4Jyo3NykKKyAgICAgICAgaGVhZGVyID0gcGFyc2VyLkhlYWRlcihbCisgICAgICAgICAgICBwYXJzZXIuSGVhZGVyTGFiZWwoW3BhcnNlci5WYWx1ZVRlcm1pbmFsKCd0ZXN0OicsICdhdGV4dCcpXSksCisgICAgICAgICAgICBwYXJzZXIuQ0ZXU0xpc3QoW3BhcnNlci5XaGl0ZVNwYWNlVGVybWluYWwoJyAnLCAnZndzJyldKSwgYm9keV0pCisgICAgICAgIHNlbGYuX3Rlc3QoaGVhZGVyLCAndGVzdDogICBcbiAnICsgJ3gnKjc3ICsgJ1xuJykKKworICAgIGRlZiB0ZXN0X3doaXRlc3BhY2Vfc3BsaXR0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCd4eHggICAnICsgJ3knKjc3KSwKKyAgICAgICAgICAgICAgICAgICAneHh4ICBcbiAnICsgJ3knKjc3ICsgJ1xuJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWxfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsX2NvZGVjcy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQppbmRleCBjYTg1ZjU3Li4wODkyNjlmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsX2NvZGVjcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CkBAIC01LDcgKzUsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKLWZyb20gZW1haWwudGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCitmcm9tIHRlc3QudGVzdF9lbWFpbC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCiBmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBIZWFkZXIsIGRlY29kZV9oZWFkZXIKIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQpAQCAtNDEsNyArNDEsNyBAQAogSGVsbG8gV29ybGQhID0/aXNvLTIwMjItanA/Yj9HeVJDSlU4bGJTRThKVzhoUENWckpVa2hLaHNvUWc9PT89CiAgPT9pc28tODg1OS0xP3E/R3I9RkM9REZfR290dCE/PSIiIikKICAgICAgICAgZXEoZGVjb2RlX2hlYWRlcihoLmVuY29kZSgpKSwKLSAgICAgICAgICAgWyhiJ0hlbGxvIFdvcmxkIScsIE5vbmUpLAorICAgICAgICAgICBbKGInSGVsbG8gV29ybGQhICcsIE5vbmUpLAogICAgICAgICAgICAgKGInXHgxYiRCJU8lbSE8JW8hPCVrJUkhKlx4MWIoQicsICdpc28tMjAyMi1qcCcpLAogICAgICAgICAgICAgKGInR3JceGZjXHhkZiBHb3R0IScsIGdjb2RlKV0pCiAgICAgICAgIHN1YmplY3RfYnl0ZXMgPSAoYid0ZXN0LWphIFx4YTRceGQ4XHhjNVx4ZWFceGI5XHhjNlx4YTRceGI1JwpAQCAtNzgsMTYgKzc4LDUgQEAKIAogCiAMCi1kZWYgc3VpdGUoKToKLSAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoVGVzdEVtYWlsQXNpYW5Db2RlY3MpKQotICAgIHJldHVybiBzdWl0ZQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdEVtYWlsQXNpYW5Db2RlY3MpCi0KLQotDAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKGRlZmF1bHRUZXN0PSdzdWl0ZScpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZGVmZWN0X2hhbmRsaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2RlZmVjdF9oYW5kbGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDU0MzJkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2RlZmVjdF9oYW5kbGluZy5weQpAQCAtMCwwICsxLDMyMCBAQAoraW1wb3J0IHRleHR3cmFwCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBjb250ZXh0bGliCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKKworCitjbGFzcyBUZXN0RGVmZWN0c0Jhc2U6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorICAgIHJhaXNlX2V4cGVjdGVkID0gRmFsc2UKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9yYWlzZV9wb2ludChzZWxmLCBkZWZlY3QpOgorICAgICAgICB5aWVsZAorCisgICAgZGVmIHRlc3Rfc2FtZV9ib3VuZGFyeV9pbm5lcl9vdXRlcihzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFN1YmplY3Q6IFhYCisgICAgICAgICAgICBGcm9tOiB4eEB4eC5kaworICAgICAgICAgICAgVG86IFhYCisgICAgICAgICAgICBNaW1lLXZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC10eXBlOiBtdWx0aXBhcnQvbWl4ZWQ7CisgICAgICAgICAgICAgICBib3VuZGFyeT0iTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydCIKKworICAgICAgICAgICAgLS1NU19NYWNfT0VfMzA3MTQ3Nzg0N183MjAyNTJfTUlNRV9QYXJ0CisgICAgICAgICAgICBDb250ZW50LXR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsKKyAgICAgICAgICAgICAgIGJvdW5kYXJ5PSJNU19NYWNfT0VfMzA3MTQ3Nzg0N183MjAyNTJfTUlNRV9QYXJ0IgorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQKKyAgICAgICAgICAgIENvbnRlbnQtdHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iSVNPLTg4NTktMSIKKyAgICAgICAgICAgIENvbnRlbnQtdHJhbnNmZXItZW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKKworICAgICAgICAgICAgdGV4dAorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQKKyAgICAgICAgICAgIENvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJJU08tODg1OS0xIgorICAgICAgICAgICAgQ29udGVudC10cmFuc2Zlci1lbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQorCisgICAgICAgICAgICA8SFRNTD48L0hUTUw+CisKKyAgICAgICAgICAgIC0tTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydC0tCisKKyAgICAgICAgICAgIC0tTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydAorICAgICAgICAgICAgQ29udGVudC10eXBlOiBpbWFnZS9naWY7IG5hbWU9Inh4LmdpZiI7CisgICAgICAgICAgICBDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50CisgICAgICAgICAgICBDb250ZW50LXRyYW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgU29tZSByZW1vdmVkIGJhc2U2NCBlbmNvZGVkIGNoYXJzLgorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQtLQorCisgICAgICAgICAgICAiIiIpCisgICAgICAgICMgWFhYIGJldHRlciB3b3VsZCBiZSB0byBhY3R1YWxseSBkZXRlY3QgdGhlIGR1cGxpY2F0ZS4KKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgaW5uZXIgPSBtc2cuZ2V0X3BheWxvYWQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoaW5uZXIsICdkZWZlY3RzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZ2V0X2RlZmVjdHMoaW5uZXIpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhpbm5lcilbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpKQorCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X25vX2JvdW5kYXJ5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRGF0ZTogRnJpLCA2IEFwciAyMDAxIDA5OjIzOjA2IC0wODAwIChHTVQtMDgwMCkKKyAgICAgICAgICAgIEZyb206IGZvb2JhcgorICAgICAgICAgICAgU3ViamVjdDogYnJva2VuIG1haWwKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9yZXBvcnQ7IHJlcG9ydC10eXBlPWRlbGl2ZXJ5LXN0YXR1czsKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20KKworICAgICAgICAgICAgT25lIHBhcnQKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20KKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKworICAgICAgICAgICAgSGVhZGVyOiBBbm90aGVyIHBhcnQKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20tLQorICAgICAgICAgICAgIiIiKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzb3VyY2UpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoKSwgc3RyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KSkKKworICAgIG11bHRpcGFydF9tc2cgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICBEYXRlOiBXZWQsIDE0IE5vdiAyMDA3IDEyOjU2OjIzIEdNVAorICAgICAgICBGcm9tOiBmb29AYmFyLmludmFsaWQKKyAgICAgICAgVG86IGZvb0BiYXIuaW52YWxpZAorICAgICAgICBTdWJqZWN0OiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQgYW5kIG11bHRpcGFydAorICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsKKyAgICAgICAgICAgIGJvdW5kYXJ5PSI9PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0ie30KKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KKworICAgICAgICBUZXN0IG1lc3NhZ2UKKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQorICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICBZV0pqCisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0tLQorICAgICAgICAiIiIpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfaW52YWxpZF9jdGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoCisgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKAorICAgICAgICAgICAgICAgICAgICBzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IikpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLAorICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF9ub19jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMCkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF92YWxpZF9jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgZm9yIGN0ZSBpbiAoJzdiaXQnLCAnOGJpdCcsICdCSU5hcnknKToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coCisgICAgICAgICAgICAgICAgc2VsZi5tdWx0aXBhcnRfbXNnLmZvcm1hdCgiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiK2N0ZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAwLCAiY3RlPSIrY3RlKQorCisgICAgZGVmIHRlc3RfbHlpbmdfbXVsdGlwYXJ0KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRnJvbTogIkFsbGlzb24gRHVubGFwIiA8eHh4QGV4YW1wbGUuY29tPgorICAgICAgICAgICAgVG86IHl5eUBleGFtcGxlLmNvbQorICAgICAgICAgICAgU3ViamVjdDogNjQ0MjMKKyAgICAgICAgICAgIERhdGU6IFN1biwgMTEgSnVsIDIwMDQgMTY6MDk6MjcgLTAzMDAKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsKKworICAgICAgICAgICAgQmxhaCBibGFoIGJsYWgKKyAgICAgICAgICAgICIiIikKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobXNnLCAnZGVmZWN0cycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmdldF9kZWZlY3RzKG1zZylbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmdldF9kZWZlY3RzKG1zZylbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QpKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19zdGFydF9ib3VuZGFyeShzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iQUFBIgorICAgICAgICAgICAgRnJvbTogTWFpbCBEZWxpdmVyeSBTdWJzeXN0ZW0gPHh4eEBleGFtcGxlLmNvbT4KKyAgICAgICAgICAgIFRvOiB5eXlAZXhhbXBsZS5jb20KKworICAgICAgICAgICAgLS1BQUEKKworICAgICAgICAgICAgU3R1ZmYKKworICAgICAgICAgICAgLS1BQUEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbWVzc2FnZS9yZmM4MjIKKworICAgICAgICAgICAgRnJvbTogd2VibWFzdGVyQHB5dGhvbi5vcmcKKyAgICAgICAgICAgIFRvOiB6enpAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iQkJCIgorCisgICAgICAgICAgICAtLUJCQi0tCisKKyAgICAgICAgICAgIC0tQUFBLS0KKworICAgICAgICAgICAgIiIiKQorICAgICAgICAjIFRoZSBtZXNzYWdlIHN0cnVjdHVyZSBpczoKKyAgICAgICAgIworICAgICAgICAjIG11bHRpcGFydC9taXhlZAorICAgICAgICAjICAgIHRleHQvcGxhaW4KKyAgICAgICAgIyAgICBtZXNzYWdlL3JmYzgyMgorICAgICAgICAjICAgICAgICBtdWx0aXBhcnQvbWl4ZWQgWypdCisgICAgICAgICMKKyAgICAgICAgIyBbKl0gVGhpcyBtZXNzYWdlIGlzIG1pc3NpbmcgaXRzIHN0YXJ0IGJvdW5kYXJ5CisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCk6CisgICAgICAgICAgICBvdXRlciA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgYmFkID0gb3V0ZXIuZ2V0X3BheWxvYWQoMSkuZ2V0X3BheWxvYWQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhiYWQpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhiYWQpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KSkKKworICAgIGRlZiB0ZXN0X2ZpcnN0X2xpbmVfaXNfY29udGludWF0aW9uX2hlYWRlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygnIExpbmUgMVxuU3ViamVjdDogdGVzdFxuXG5ib2R5JykKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdib2R5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLmxpbmUsICcgTGluZSAxXG4nKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19oZWFkZXJfYm9keV9zZXBhcmF0b3Ioc2VsZik6CisgICAgICAgICMgT3VyIGhldXJpc3RpYyBpZiB3ZSBzZWUgYSBsaW5lIHRoYXQgZG9lc24ndCBsb29rIGxpa2UgYSBoZWFkZXIgKG5vCisgICAgICAgICMgbGVhZGluZyB3aGl0ZXNwYWNlIGJ1dCBubyAnOicpIGlzIHRvIGFzc3VtZSB0aGF0IHRoZSBibGFuayBsaW5lIHRoYXQKKyAgICAgICAgIyBzZXBhcmF0ZXMgdGhlIGhlYWRlciBmcm9tIHRoZSBib2R5IGlzIG1pc3NpbmcsIGFuZCB0byBzdG9wIHBhcnNpbmcKKyAgICAgICAgIyBoZWFkZXJzIGFuZCBzdGFydCBwYXJzaW5nIHRoZSBib2R5LgorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5NaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiB0ZXN0XG5ub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2JhZF9wYWRkaW5nX2luX2Jhc2U2NF9wYXlsb2FkKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgU3ViamVjdDogdGVzdAorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgZG1rCisgICAgICAgICAgICAiIiIpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdCk6CisgICAgICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBiJ3ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0CisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NAorCisgICAgICAgICAgICBkbVx4MDFrPT09CisgICAgICAgICAgICAiIiIpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCk6CisgICAgICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBiJ3ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfZW5kaW5nX2JvdW5kYXJ5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IDFAaGFycnlkb21haW40LmNvbQorICAgICAgICAgICAgU3ViamVjdDogRndkOiAxCisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7CisgICAgICAgICAgICAgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLTAwMDEwMTAyMDIwMTA4MDkwMDA0MDMwMSIKKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0wMDAxMDEwMjAyMDEwODA5MDAwNDAzMDEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CisKKyAgICAgICAgICAgIEFsdGVybmF0aXZlIDEKKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0wMDAxMDEwMjAyMDEwODA5MDAwNDAzMDEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKKworICAgICAgICAgICAgQWx0ZXJuYXRpdmUgMgorCisgICAgICAgICAgICAiIiIpCisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLkNsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKHNvdXJjZSkKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5nZXRfcGF5bG9hZCgpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoMSkuZ2V0X3BheWxvYWQoKSwgJ0FsdGVybmF0aXZlIDJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5DbG9zZUJvdW5kYXJ5Tm90Rm91bmREZWZlY3RdKQorCisKK2NsYXNzIFRlc3REZWZlY3REZXRlY3Rpb24oVGVzdERlZmVjdHNCYXNlLCBUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBnZXRfZGVmZWN0cyhzZWxmLCBvYmopOgorICAgICAgICByZXR1cm4gb2JqLmRlZmVjdHMKKworCitjbGFzcyBUZXN0RGVmZWN0Q2FwdHVyZShUZXN0RGVmZWN0c0Jhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgY2xhc3MgQ2FwdHVyZVBvbGljeShwb2xpY3kuRW1haWxQb2xpY3kpOgorICAgICAgICBjYXB0dXJlZCA9IE5vbmUKKyAgICAgICAgZGVmIHJlZ2lzdGVyX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICAgICBzZWxmLmNhcHR1cmVkLmFwcGVuZChkZWZlY3QpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucG9saWN5ID0gc2VsZi5DYXB0dXJlUG9saWN5KGNhcHR1cmVkPWxpc3QoKSkKKworICAgIGRlZiBnZXRfZGVmZWN0cyhzZWxmLCBvYmopOgorICAgICAgICByZXR1cm4gc2VsZi5wb2xpY3kuY2FwdHVyZWQKKworCitjbGFzcyBUZXN0RGVmZWN0UmFpc2luZyhUZXN0RGVmZWN0c0Jhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgcG9saWN5ID0gVGVzdERlZmVjdHNCYXNlLnBvbGljeQorICAgIHBvbGljeSA9IHBvbGljeS5jbG9uZShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkKKyAgICByYWlzZV9leHBlY3RlZCA9IFRydWUKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9yYWlzZV9wb2ludChzZWxmLCBkZWZlY3QpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGRlZmVjdCk6CisgICAgICAgICAgICB5aWVsZAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCAzNTJiOWIxLi41Y2M2ZDA0IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQpAQCAtMTYsNiArMTYsNyBAQAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCiAKIGltcG9ydCBlbWFpbAoraW1wb3J0IGVtYWlsLnBvbGljeQogCiBmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBIZWFkZXIsIGRlY29kZV9oZWFkZXIsIG1ha2VfaGVhZGVyCkBAIC0zNiw0MCArMzcsMTQgQEAKIGZyb20gZW1haWwgaW1wb3J0IGJhc2U2NG1pbWUKIGZyb20gZW1haWwgaW1wb3J0IHF1b3ByaW1pbWUKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBydW5fdW5pdHRlc3QsIHVubGluawotZnJvbSBlbWFpbC50ZXN0IGltcG9ydCBfX2ZpbGVfXyBhcyBsYW5kbWFyawotCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bmxpbmsKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBvcGVuZmlsZSwgVGVzdEVtYWlsQmFzZQogCiBOTCA9ICdcbicKIEVNUFRZU1RSSU5HID0gJycKIFNQQUNFID0gJyAnCiAKIAotCi1kZWYgb3BlbmZpbGUoZmlsZW5hbWUsICphcmdzLCAqKmt3cyk6Ci0gICAgcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobGFuZG1hcmspLCAnZGF0YScsIGZpbGVuYW1lKQotICAgIHJldHVybiBvcGVuKHBhdGgsICphcmdzLCAqKmt3cykKLQotCi0KLSMgQmFzZSB0ZXN0IGNsYXNzCi1jbGFzcyBUZXN0RW1haWxCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgbmRpZmZBc3NlcnRFcXVhbChzZWxmLCBmaXJzdCwgc2Vjb25kKToKLSAgICAgICAgIiIiTGlrZSBhc3NlcnRFcXVhbCBleGNlcHQgdXNlIG5kaWZmIGZvciByZWFkYWJsZSBvdXRwdXQuIiIiCi0gICAgICAgIGlmIGZpcnN0ICE9IHNlY29uZDoKLSAgICAgICAgICAgIHNmaXJzdCA9IHN0cihmaXJzdCkKLSAgICAgICAgICAgIHNzZWNvbmQgPSBzdHIoc2Vjb25kKQotICAgICAgICAgICAgcmZpcnN0ID0gW3JlcHIobGluZSkgZm9yIGxpbmUgaW4gc2ZpcnN0LnNwbGl0bGluZXMoKV0KLSAgICAgICAgICAgIHJzZWNvbmQgPSBbcmVwcihsaW5lKSBmb3IgbGluZSBpbiBzc2Vjb25kLnNwbGl0bGluZXMoKV0KLSAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLm5kaWZmKHJmaXJzdCwgcnNlY29uZCkKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihOTCArIE5MLmpvaW4oZGlmZikpCi0KLSAgICBkZWYgX21zZ29iaihzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbmZpbGUoZmluZGZpbGUoZmlsZW5hbWUpKSBhcyBmcDoKLSAgICAgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCkKLQotCi0KICMgVGVzdCB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIE1lc3NhZ2UgY2xhc3MncyBBUEkKIGNsYXNzIFRlc3RNZXNzYWdlQVBJKFRlc3RFbWFpbEJhc2UpOgogICAgIGRlZiB0ZXN0X2dldF9hbGwoc2VsZik6CkBAIC0xOTQsNyArMTY5LDcgQEAKICAgICBkZWYgdGVzdF9tZXNzYWdlX3JmYzgyMl9vbmx5KHNlbGYpOgogICAgICAgICAjIElzc3VlIDc5NzA6IG1lc3NhZ2UvcmZjODIyIG5vdCBpbiBtdWx0aXBhcnQgcGFyc2VkIGJ5CiAgICAgICAgICMgSGVhZGVyUGFyc2VyIGNhdXNlZCBhbiBleGNlcHRpb24gd2hlbiBmbGF0dGVuZWQuCi0gICAgICAgIHdpdGggb3BlbmZpbGUoZmluZGZpbGUoJ21zZ180Ni50eHQnKSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ21zZ180Ni50eHQnKSBhcyBmcDoKICAgICAgICAgICAgIG1zZ2RhdGEgPSBmcC5yZWFkKCkKICAgICAgICAgcGFyc2VyID0gSGVhZGVyUGFyc2VyKCkKICAgICAgICAgbXNnID0gcGFyc2VyLnBhcnNlc3RyKG1zZ2RhdGEpCkBAIC0yMDMsNiArMTc4LDE3IEBACiAgICAgICAgIGdlbi5mbGF0dGVuKG1zZywgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LmdldHZhbHVlKCksIG1zZ2RhdGEpCiAKKyAgICBkZWYgdGVzdF9ieXRlX21lc3NhZ2VfcmZjODIyX29ubHkoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIG5ldyBieXRlcyBoZWFkZXIgcGFyc2VyIGFsc28gcGFzc2VzIHRoaXMuCisgICAgICAgIHdpdGggb3BlbmZpbGUoJ21zZ180Ni50eHQnLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIG1zZ2RhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgcGFyc2VyID0gZW1haWwucGFyc2VyLkJ5dGVzSGVhZGVyUGFyc2VyKCkKKyAgICAgICAgbXNnID0gcGFyc2VyLnBhcnNlYnl0ZXMobXNnZGF0YSkKKyAgICAgICAgb3V0ID0gQnl0ZXNJTygpCisgICAgICAgIGdlbiA9IGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcihvdXQpCisgICAgICAgIGdlbi5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuZ2V0dmFsdWUoKSwgbXNnZGF0YSkKKwogICAgIGRlZiB0ZXN0X2dldF9kZWNvZGVkX3BheWxvYWQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18xMC50eHQnKQpAQCAtMjczLDYgKzI1OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1swXS5zdGFydHN3aXRoKCdGcm9tICcpKQogICAgICAgICBlcSh0ZXh0LCBOTC5qb2luKGxpbmVzWzE6XSkpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLmJhZF9wYXJhbXMKICAgICBkZWYgdGVzdF9iYWRfcGFyYW0oc2VsZik6CiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIkNvbnRlbnQtVHlwZTogYmxhcmc7IGJhejsgYm9vXG4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGFyYW0oJ2JheicpLCAnJykKQEAgLTMwNiw2ICsyOTMsNyBAQAogICAgICAgICBlcShtc2cuZ2V0X3BhcmFtcyhoZWFkZXI9J3gtaGVhZGVyJyksCiAgICAgICAgICAgIFsoJ2ZvbycsICcnKSwgKCdiYXInLCAnb25lJyksICgnYmF6JywgJ3R3bycpXSkKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIuc3BhY2VzX2Fyb3VuZF9wYXJhbV9lcXVhbHMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1fbGliZXJhbChzZWxmKToKICAgICAgICAgbXNnID0gTWVzc2FnZSgpCiAgICAgICAgIG1zZ1snQ29udGVudC1UeXBlJ10gPSAnQ29udGVudC1UeXBlOiBNdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5ID0gIkNQSU1TU01UUEMwNnA1ZjN0RyInCkBAIC0zMjgsMTAgKzMxNiwxMiBAQAogICAgICAgICAjIG1zZy5nZXRfcGFyYW0oIndlaXJkIikKICAgICAgICAgIyB5ZXQuCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnNwYWNlc19hcm91bmRfc2VtaXMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1fZnVua3lfY29udGludWF0aW9uX2xpbmVzKHNlbGYpOgogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18yMi50eHQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgxKS5nZXRfcGFyYW0oJ25hbWUnKSwgJ3dpYmJsZS5KUEcnKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5zZW1pc19pbnNpZGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfZ2V0X3BhcmFtX3dpdGhfc2VtaXNfaW5fcXVvdGVzKHNlbGYpOgogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKAogICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTogaW1hZ2UvcGpwZWc7IG5hbWU9IkppbSZhbXA7JmFtcDtKaWxsIlxuJykKQEAgLTMzOSw2ICszMjksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGFyYW0oJ25hbWUnLCB1bnF1b3RlPUZhbHNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnIkppbSZhbXA7JmFtcDtKaWxsIicpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnF1b3Rlc19pbnNpZGVfcmZjMjIzMV92YWx1ZQogICAgIGRlZiB0ZXN0X2dldF9wYXJhbV93aXRoX3F1b3RlcyhzZWxmKToKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygKICAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGZvbzsgYmFyKjA9ImJhelxcImZvb2JhciI7IGJhcioxPSJcXCJiYXoiJykKQEAgLTUyNyw2ICs1MTgsNyBAQAogICAgICAgICBlcShtc2cudmFsdWVzKCksIFsnT25lIEh1bmRyZWQnLCAnVHdlbnR5JywgJ1RocmVlJywgJ0VsZXZlbiddKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbXNnLnJlcGxhY2VfaGVhZGVyLCAnRm91cnRoJywgJ01pc3NpbmcnKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZzp0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQKICAgICBkZWYgdGVzdF9icm9rZW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CiAgICAgICAgIHggPSAnQXdEcDBQNy8veTZMd0tFQWNQYS82UT05JwogICAgICAgICBtc2cgPSBNZXNzYWdlKCkKQEAgLTUzNCw3ICs1MjYsMTAgQEAKICAgICAgICAgbXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10gPSAnYmFzZTY0JwogICAgICAgICBtc2cuc2V0X3BheWxvYWQoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoZGVjb2RlPVRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzKHgsICdyYXctdW5pY29kZS1lc2NhcGUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDAzXHgwMFx4ZTlceGQwXHhmZVx4ZmZceGZmLlx4OGJceGMwJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4YTFceDAwcFx4ZjZceGJmXHhlOVx4MGYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0KQogCiAgICAgZGVmIHRlc3RfYnJva2VuX3VuaWNvZGVfcGF5bG9hZChzZWxmKToKICAgICAgICAgIyBUaGlzIHRlc3QgaW1wcm92ZXMgY292ZXJhZ2UgYnV0IGlzIG5vdCBhIGNvbXBsaWFuY2UgdGVzdC4KQEAgLTYzMiw2ICs2MjcsMTggQEAKICAgICAgICAgICAgIGFiYwogICAgICAgICAgICAgIiIiKSkKIAorICAgIGRlZiB0ZXN0X3VuaWNvZGVfYm9keV9kZWZhdWx0c190b191dGY4X2VuY29kaW5nKHNlbGYpOgorICAgICAgICAjIElzc3VlIDE0MjkxCisgICAgICAgIG0gPSBNSU1FVGV4dCgnw4kgdGVzdGFiY1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobSksdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CisKKyAgICAgICAgICAgIHc0a2dkR1Z6ZEdGaVl3bz0KKyAgICAgICAgICAgICIiIikpCisKKwogIyBUZXN0IHRoZSBlbWFpbC5lbmNvZGVycyBtb2R1bGUKIGNsYXNzIFRlc3RFbmNvZGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY1Nyw3ICs2NjQsNyBAQAogICAgICAgICBlcShtc2dbJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnXSwgJzdiaXQnKQogICAgICAgICAjIFNpbWlsYXIsIGJ1dCB3aXRoIDhiaXQgZGF0YQogICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gXHhmOCB3b3JsZCcpCi0gICAgICAgIGVxKG1zZ1snY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddLCAnOGJpdCcpCisgICAgICAgIGVxKG1zZ1snY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddLCAnYmFzZTY0JykKICAgICAgICAgIyBBbmQgbm93IHdpdGggYSBkaWZmZXJlbnQgY2hhcnNldAogICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gXHhmOCB3b3JsZCcsIF9jaGFyc2V0PSdpc28tODg1OS0xJykKICAgICAgICAgZXEobXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10sICdxdW90ZWQtcHJpbnRhYmxlJykKQEAgLTEyNDMsNiArMTI1MCw3IEBACiAgICAgICAgICAgICAgPT91dGYtOD9xP19mb2xkaW5nX3doaXRlX3NwYWNlX3dvcmtzPz0iIiIpKydcbicpCiAKIAorCiAjIFRlc3QgbWFuZ2xpbmcgb2YgIkZyb20gIiBsaW5lcyBpbiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UKIGNsYXNzIFRlc3RGcm9tTWFuZ2xpbmcodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTEzMTYsMTMgKzEzMjQsNyBAQAogIyBUZXN0IHRoZSBiYXNpYyBNSU1FQXVkaW8gY2xhc3MKIGNsYXNzIFRlc3RNSU1FQXVkaW8odW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIyBNYWtlIHN1cmUgd2UgcGljayB1cCB0aGUgYXVkaW90ZXN0LmF1IHRoYXQgbGl2ZXMgaW4gZW1haWwvdGVzdC9kYXRhLgotICAgICAgICAjIEluIFB5dGhvbiwgdGhlcmUncyBhbiBhdWRpb3Rlc3QuYXUgbGl2aW5nIGluIExpYi90ZXN0IGJ1dCB0aGF0IGlzbid0Ci0gICAgICAgICMgaW5jbHVkZWQgaW4gc29tZSBiaW5hcnkgZGlzdHJvcyB0aGF0IGRvbid0IGluY2x1ZGUgdGhlIHRlc3QKLSAgICAgICAgIyBwYWNrYWdlLiAgVGhlIHRyYWlsaW5nIGVtcHR5IHN0cmluZyBvbiB0aGUgLmpvaW4oKSBpcyBzaWduaWZpY2FudAotICAgICAgICAjIHNpbmNlIGZpbmRmaWxlKCkgd2lsbCBkbyBhIGRpcm5hbWUoKS4KLSAgICAgICAgZGF0YWRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobGFuZG1hcmspLCAnZGF0YScsICcnKQotICAgICAgICB3aXRoIG9wZW4oZmluZGZpbGUoJ2F1ZGlvdGVzdC5hdScsIGRhdGFkaXIpLCAncmInKSBhcyBmcDoKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnYXVkaW90ZXN0LmF1JywgJ3JiJykgYXMgZnA6CiAgICAgICAgICAgICBzZWxmLl9hdWRpb2RhdGEgPSBmcC5yZWFkKCkKICAgICAgICAgc2VsZi5fYXUgPSBNSU1FQXVkaW8oc2VsZi5fYXVkaW9kYXRhKQogCkBAIC0xODUwLDYgKzE4NTIsNyBAQAogCiAjIFRlc3Qgc29tZSBiYWRseSBmb3JtYXR0ZWQgbWVzc2FnZXMKIGNsYXNzIFRlc3ROb25Db25mb3JtYW50KFRlc3RFbWFpbEJhc2UpOgorCiAgICAgZGVmIHRlc3RfcGFyc2VfbWlzc2luZ19taW5vcl90eXBlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMTQudHh0JykKQEAgLTE4NTcsNiArMTg2MCw3IEBACiAgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF9tYWludHlwZSgpLCAndGV4dCcpCiAgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF9zdWJ0eXBlKCksICdwbGFpbicpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCiAgICAgZGVmIHRlc3Rfc2FtZV9ib3VuZGFyeV9pbm5lcl9vdXRlcihzZWxmKToKICAgICAgICAgdW5sZXNzID0gc2VsZi5hc3NlcnRUcnVlCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzE1LnR4dCcpCkBAIC0xODY3LDE1ICsxODcxLDYyIEBACiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKGlubmVyLmRlZmVjdHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZwogICAgIGRlZiB0ZXN0X211bHRpcGFydF9ub19ib3VuZGFyeShzZWxmKToKICAgICAgICAgdW5sZXNzID0gc2VsZi5hc3NlcnRUcnVlCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzI1LnR4dCcpCiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5nZXRfcGF5bG9hZCgpLCBzdHIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc2cuZGVmZWN0cyksIDIpCi0gICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLCBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKKyAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQogICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdCkpCiAKKyAgICBtdWx0aXBhcnRfbXNnID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgRGF0ZTogV2VkLCAxNCBOb3YgMjAwNyAxMjo1NjoyMyBHTVQKKyAgICAgICAgRnJvbTogZm9vQGJhci5pbnZhbGlkCisgICAgICAgIFRvOiBmb29AYmFyLmludmFsaWQKKyAgICAgICAgU3ViamVjdDogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IGFuZCBtdWx0aXBhcnQKKyAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7CisgICAgICAgICAgICBib3VuZGFyeT0iPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09Int9CisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0KKyAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKKyAgICAgICAgVGVzdCBtZXNzYWdlCisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0KKyAgICAgICAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KKyAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CisKKyAgICAgICAgWVdKagorCisgICAgICAgIC0tPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09LS0KKyAgICAgICAgIiIiKQorCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X211bHRpcGFydF9pbnZhbGlkX2N0ZShzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygKKyAgICAgICAgICAgIHNlbGYubXVsdGlwYXJ0X21zZy5mb3JtYXQoIlxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5kZWZlY3RzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAorICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCkKKworICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfbm9fY3RlX25vX2RlZmVjdChzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNnLmRlZmVjdHMpLCAwKQorCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X211bHRpcGFydF92YWxpZF9jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBmb3IgY3RlIGluICgnN2JpdCcsICc4Yml0JywgJ0JJTmFyeScpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygKKyAgICAgICAgICAgICAgICBzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiB7fSIuZm9ybWF0KGN0ZSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNnLmRlZmVjdHMpLCAwKQorCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlvcGVIZWFkZXIgaW52YWxpZF8xIGFuZCBpbnZhbGlkXzIuCiAgICAgZGVmIHRlc3RfaW52YWxpZF9jb250ZW50X3R5cGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBuZXEgPSBzZWxmLm5kaWZmQXNzZXJ0RXF1YWwKQEAgLTE5MjUsMTUgKzE5NzYsMTggQEAKIGNvdW50ZXIgdG8gUkZDIDI4MjIsIHRoZXJlJ3Mgbm8gc2VwYXJhdGluZyBuZXdsaW5lIGhlcmUKICIiIikKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKICAgICBkZWYgdGVzdF9seWluZ19tdWx0aXBhcnQoc2VsZik6CiAgICAgICAgIHVubGVzcyA9IHNlbGYuYXNzZXJ0VHJ1ZQogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ180MS50eHQnKQogICAgICAgICB1bmxlc3MoaGFzYXR0cihtc2csICdkZWZlY3RzJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5kZWZlY3RzKSwgMikKLSAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQorICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCkpCiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KSkKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKICAgICBkZWYgdGVzdF9taXNzaW5nX3N0YXJ0X2JvdW5kYXJ5KHNlbGYpOgogICAgICAgICBvdXRlciA9IHNlbGYuX21zZ29iaignbXNnXzQyLnR4dCcpCiAgICAgICAgICMgVGhlIG1lc3NhZ2Ugc3RydWN0dXJlIGlzOgpAQCAtMTk0OSwxNyArMjAwMywyOSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShiYWQuZGVmZWN0c1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCkpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCiAgICAgZGVmIHRlc3RfZmlyc3RfbGluZV9pc19jb250aW51YXRpb25faGVhZGVyKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgbSA9ICcgTGluZSAxXG5MaW5lIDJcbkxpbmUgMycKKyAgICAgICAgbSA9ICcgTGluZSAxXG5TdWJqZWN0OiB0ZXN0XG5cbmJvZHknCiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcobSkKLSAgICAgICAgZXEobXNnLmtleXMoKSwgW10pCi0gICAgICAgIGVxKG1zZy5nZXRfcGF5bG9hZCgpLCAnTGluZSAyXG5MaW5lIDMnKQorICAgICAgICBlcShtc2cua2V5cygpLCBbJ1N1YmplY3QnXSkKKyAgICAgICAgZXEobXNnLmdldF9wYXlsb2FkKCksICdib2R5JykKICAgICAgICAgZXEobGVuKG1zZy5kZWZlY3RzKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKG1zZy5kZWZlY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdF0pCiAgICAgICAgIGVxKG1zZy5kZWZlY3RzWzBdLmxpbmUsICcgTGluZSAxXG4nKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X21pc3NpbmdfaGVhZGVyX2JvZHlfc2VwYXJhdG9yKHNlbGYpOgorICAgICAgICAjIE91ciBoZXVyaXN0aWMgaWYgd2Ugc2VlIGEgbGluZSB0aGF0IGRvZXNuJ3QgbG9vayBsaWtlIGEgaGVhZGVyIChubworICAgICAgICAjIGxlYWRpbmcgd2hpdGVzcGFjZSBidXQgbm8gJzonKSBpcyB0byBhc3N1bWUgdGhhdCB0aGUgYmxhbmsgbGluZSB0aGF0CisgICAgICAgICMgc2VwYXJhdGVzIHRoZSBoZWFkZXIgZnJvbSB0aGUgYm9keSBpcyBtaXNzaW5nLCBhbmQgdG8gc3RvcCBwYXJzaW5nCisgICAgICAgICMgaGVhZGVycyBhbmQgc3RhcnQgcGFyc2luZyB0aGUgYm9keS4KKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogdGVzdFxubm90IGEgaGVhZGVyXG5UbzogYWJjXG5cbmJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwobXNnLmRlZmVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3RdKQogCiAKICMgVGVzdCBSRkMgMjA0NyBoZWFkZXIgZW5jb2RpbmcgYW5kIGRlY29kaW5nCkBAIC0xOTcwLDkgKzIwMzYsOSBAQAogIGZvbyBiYXIgPT9tYWMtaWNlbGFuZD9xP3I9OEFrc209OUFyZz04Q3M/PSIiIgogICAgICAgICBkaCA9IGRlY29kZV9oZWFkZXIocykKICAgICAgICAgZXEoZGgsIFsKLSAgICAgICAgICAgIChiJ1JlOicsIE5vbmUpLAorICAgICAgICAgICAgKGInUmU6ICcsIE5vbmUpLAogICAgICAgICAgICAgKGInclx4OGFrc21ceDlhcmdceDhjcycsICdtYWMtaWNlbGFuZCcpLAotICAgICAgICAgICAgKGInYmF6IGZvbyBiYXInLCBOb25lKSwKKyAgICAgICAgICAgIChiJyBiYXogZm9vIGJhciAnLCBOb25lKSwKICAgICAgICAgICAgIChiJ3JceDhha3NtXHg5YXJnXHg4Y3MnLCAnbWFjLWljZWxhbmQnKV0pCiAgICAgICAgIGhlYWRlciA9IG1ha2VfaGVhZGVyKGRoKQogICAgICAgICBlcShzdHIoaGVhZGVyKSwKQEAgLTE5ODEsMzUgKzIwNDcsMzcgQEAKIFJlOiA9P21hYy1pY2VsYW5kP3E/cj04QWtzbT05QXJnPThDcz89IGJheiBmb28gYmFyID0/bWFjLWljZWxhbmQ/cT9yPThBa3NtPz0KICA9P21hYy1pY2VsYW5kP3E/PTlBcmc9OENzPz0iIiIpCiAKLSAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2VhdGVyX3VuaWNvZGUoc2VsZik6CisgICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9rZWVwZXJfdW5pY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIHMgPSAnPT9JU08tODg1OS0xP1E/QW5kcj1FOT89IFBpcmFyZCA8cGlyYXJkQGRvbS5haW4+JwogICAgICAgICBkaCA9IGRlY29kZV9oZWFkZXIocykKICAgICAgICAgZXEoZGgsIFsoYidBbmRyXHhlOScsICdpc28tODg1OS0xJyksCi0gICAgICAgICAgICAgICAgKGInUGlyYXJkIDxwaXJhcmRAZG9tLmFpbj4nLCBOb25lKV0pCisgICAgICAgICAgICAgICAgKGInIFBpcmFyZCA8cGlyYXJkQGRvbS5haW4+JywgTm9uZSldKQogICAgICAgICBoZWFkZXIgPSBzdHIobWFrZV9oZWFkZXIoZGgpKQogICAgICAgICBlcShoZWFkZXIsICdBbmRyXHhlOSBQaXJhcmQgPHBpcmFyZEBkb20uYWluPicpCiAKLSAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2VhdGVyX3VuaWNvZGVfMihzZWxmKToKKyAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2tlZXBlcl91bmljb2RlXzIoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzID0gJ1RoZSA9P2lzby04ODU5LTE/Yj9jWFZwWTJzZ1luSnZkMjRnWm05ND89IGp1bXBlZCBvdmVyIHRoZSA9P2lzby04ODU5LTE/Yj9iR0Y2ZVNCa2IyYz0/PScKICAgICAgICAgZGggPSBkZWNvZGVfaGVhZGVyKHMpCi0gICAgICAgIGVxKGRoLCBbKGInVGhlJywgTm9uZSksIChiJ3F1aWNrIGJyb3duIGZveCcsICdpc28tODg1OS0xJyksCi0gICAgICAgICAgICAgICAgKGInanVtcGVkIG92ZXIgdGhlJywgTm9uZSksIChiJ2xhenkgZG9nJywgJ2lzby04ODU5LTEnKV0pCisgICAgICAgIGVxKGRoLCBbKGInVGhlICcsIE5vbmUpLCAoYidxdWljayBicm93biBmb3gnLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgICAgIChiJyBqdW1wZWQgb3ZlciB0aGUgJywgTm9uZSksIChiJ2xhenkgZG9nJywgJ2lzby04ODU5LTEnKV0pCiAgICAgICAgIGh1ID0gc3RyKG1ha2VfaGVhZGVyKGRoKSkKICAgICAgICAgZXEoaHUsICdUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIHRoZSBsYXp5IGRvZycpCiAKICAgICBkZWYgdGVzdF9yZmMyMDQ3X21pc3Npbmdfd2hpdGVzcGFjZShzZWxmKToKICAgICAgICAgcyA9ICdTbT0/SVNPLTg4NTktMT9CPzlnPT0/PXJnPT9JU08tODg1OS0xP0I/NVE9PT89c2JvcmQnCiAgICAgICAgIGRoID0gZGVjb2RlX2hlYWRlcihzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRoLCBbKHMsIE5vbmUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaCwgWyhiJ1NtJywgTm9uZSksIChiJ1x4ZjYnLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIncmcnLCBOb25lKSwgKGInXHhlNScsICdpc28tODg1OS0xJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidzYm9yZCcsIE5vbmUpXSkKIAogICAgIGRlZiB0ZXN0X3JmYzIwNDdfd2l0aF93aGl0ZXNwYWNlKHNlbGYpOgogICAgICAgICBzID0gJ1NtID0/SVNPLTg4NTktMT9CPzlnPT0/PSByZyA9P0lTTy04ODU5LTE/Qj81UT09Pz0gc2JvcmQnCiAgICAgICAgIGRoID0gZGVjb2RlX2hlYWRlcihzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRoLCBbKGInU20nLCBOb25lKSwgKGInXHhmNicsICdpc28tODg1OS0xJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidyZycsIE5vbmUpLCAoYidceGU1JywgJ2lzby04ODU5LTEnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ3Nib3JkJywgTm9uZSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRoLCBbKGInU20gJywgTm9uZSksIChiJ1x4ZjYnLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInIHJnICcsIE5vbmUpLCAoYidceGU1JywgJ2lzby04ODU5LTEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJyBzYm9yZCcsIE5vbmUpXSkKIAogICAgIGRlZiB0ZXN0X3JmYzIwNDdfQl9iYWRfcGFkZGluZyhzZWxmKToKICAgICAgICAgcyA9ICc9P2lzby04ODU5LTE/Qj8lcz89JwpAQCAtMjAyNyw2ICsyMDk1LDY3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsoYidhbmRyXHhlOT16eicsICdpc28tODY1OS0xJyldKQogCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzEoc2VsZik6CisgICAgICAgICMgMXN0IHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PSknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2EnLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzIoc2VsZik6CisgICAgICAgICMgMm5kIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PSBiKScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYScsICdpc28tODg1OS0xJyksIChiJyBiKScsIE5vbmUpXSkKKworICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N18zKHNlbGYpOgorICAgICAgICAjIDNyZCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NworICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hPz0gPT9JU08tODg1OS0xP1E/Yj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYWInLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzQoc2VsZik6CisgICAgICAgICMgNHRoIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PSAgPT9JU08tODg1OS0xP1E/Yj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYWInLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzVhKHNlbGYpOgorICAgICAgICAjIDV0aCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NyBuZXdsaW5lIGlzIFxyXG4KKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YT89XHJcbiAgICA9P0lTTy04ODU5LTE/UT9iPz0pJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInKCcsIE5vbmUpLCAoYidhYicsICdpc28tODg1OS0xJyksIChiJyknLCBOb25lKV0pCisKKyAgICBkZWYgdGVzdF9yZmMyMDQ3X3JmYzIwNDdfNWIoc2VsZik6CisgICAgICAgICMgNXRoIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3IG5ld2xpbmUgaXMgXG4KKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YT89XG4gICAgPT9JU08tODg1OS0xP1E/Yj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYWInLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzYoc2VsZik6CisgICAgICAgICMgNnRoIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2FfYj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYSBiJywgJ2lzby04ODU5LTEnKSwgKGInKScsIE5vbmUpXSkKKworICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N183KHNlbGYpOgorICAgICAgICAjIDd0aCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NworICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hPz0gPT9JU08tODg1OS0yP1E/X2I/PSknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2EnLCAnaXNvLTg4NTktMScpLCAoYicgYicsICdpc28tODg1OS0yJyksCisgICAgICAgICAgICAgKGInKScsIE5vbmUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKS5lbmNvZGUoKSwgcy5sb3dlcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKSksICcoYSBiKScpCisKKyAgICBkZWYgdGVzdF9tdWx0aWxpbmVfaGVhZGVyKHNlbGYpOgorICAgICAgICBzID0gJz0/d2luZG93cy0xMjUyP3E/PTIyTT1GQ2xsZXJfVD0yMj89XHJcbiA8VC5NdWVsbGVyQHh4eC5jb20+JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInIk1ceGZjbGxlciBUIicsICd3aW5kb3dzLTEyNTInKSwKKyAgICAgICAgICAgICAoYic8VC5NdWVsbGVyQHh4eC5jb20+JywgTm9uZSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1ha2VfaGVhZGVyKGRlY29kZV9oZWFkZXIocykpLmVuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnLmpvaW4ocy5zcGxpdGxpbmVzKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJNw7xsbGVyIFQiIDxULk11ZWxsZXJAeHh4LmNvbT4nKQorCiAKICMgVGVzdCB0aGUgTUlNRU1lc3NhZ2UgY2xhc3MKIGNsYXNzIFRlc3RNSU1FTWVzc2FnZShUZXN0RW1haWxCYXNlKToKQEAgLTI1NTIsNiArMjY4MSwxMyBAQAogICAgICAgICBmb3Igc3VicGFydCBpbiBtc2cud2FsaygpOgogICAgICAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2Uoc3VicGFydCwgTXlNZXNzYWdlKSkKIAorICAgIGRlZiB0ZXN0X2N1c3RvbV9tZXNzYWdlX2RvZXNfbm90X3JlcXVpcmVfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeU1lc3NhZ2UoTWVzc2FnZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coIlN1YmplY3Q6IHRlc3RcblxudGVzdCIsIE15TWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLCBNeU1lc3NhZ2UpKQorCiAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgogICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKCdlbWFpbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG1vZHVsZS5fX2FsbF9fKSwgWwpAQCAtMjYxMCw2ICsyNzQ2LDEzIEBACiAgICAgICAgICAgICgyMDAyLCA0LCAzLCAxNCwgNTgsIDI2LCAwLCAxLCAtMSwgLTI4ODAwKSkKIAogCisgICAgZGVmIHRlc3RfcGFyc2VkYXRlX2FjY2VwdHNfdGltZV93aXRoX2RvdHMoc2VsZik6CisgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBlcSh1dGlscy5wYXJzZWRhdGVfdHooJzUgRmViIDIwMDMgMTMuNDcuMjYgLTA4MDAnKSwKKyAgICAgICAgICAgKDIwMDMsIDIsIDUsIDEzLCA0NywgMjYsIDAsIDEsIC0xLCAtMjg4MDApKQorICAgICAgICBlcSh1dGlscy5wYXJzZWRhdGVfdHooJzUgRmViIDIwMDMgMTMuNDcgLTA4MDAnKSwKKyAgICAgICAgICAgKDIwMDMsIDIsIDUsIDEzLCA0NywgMCwgMCwgMSwgLTEsIC0yODgwMCkpCisKICAgICBkZWYgdGVzdF9wYXJzZWRhdGVfYWNjZXB0YWJsZV90b190aW1lX2Z1bmN0aW9ucyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIHRpbWV0dXAgPSB1dGlscy5wYXJzZWRhdGUoJzUgRmViIDIwMDMgMTM6NDc6MjYgLTA4MDAnKQpAQCAtMjY1Miw3ICsyNzk1LDEwIEBACiAgICAgZGVmIHRlc3RfZXNjYXBlX2R1bXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICB1dGlscy5mb3JtYXRhZGRyKCgnQSAoVmVyeSkgU2lsbHkgUGVyc29uJywgJ3BlcnNvbkBkb20uYWluJykpLAotICAgICAgICAgICAgciciQSBcKFZlcnlcKSBTaWxseSBQZXJzb24iIDxwZXJzb25AZG9tLmFpbj4nKQorICAgICAgICAgICAgciciQSAoVmVyeSkgU2lsbHkgUGVyc29uIiA8cGVyc29uQGRvbS5haW4+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHV0aWxzLnBhcnNlYWRkcihyJyJBIFwoVmVyeVwpIFNpbGx5IFBlcnNvbiIgPHBlcnNvbkBkb20uYWluPicpLAorICAgICAgICAgICAgKCdBIChWZXJ5KSBTaWxseSBQZXJzb24nLCAncGVyc29uQGRvbS5haW4nKSkKICAgICAgICAgYSA9IHInQSBcKFNwZWNpYWxcKSBQZXJzb24nCiAgICAgICAgIGIgPSAncGVyc29uQGRvbS5haW4nCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMucGFyc2VhZGRyKHV0aWxzLmZvcm1hdGFkZHIoKGEsIGIpKSksIChhLCBiKSkKQEAgLTI2NjUsNiArMjgxMSw0NiBAQAogICAgICAgICBiID0gJ3BlcnNvbkBkb20uYWluJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLnBhcnNlYWRkcih1dGlscy5mb3JtYXRhZGRyKChhLCBiKSkpLCAoYSwgYikpCiAKKyAgICBkZWYgdGVzdF9xdW90ZXNfdW5pY29kZV9uYW1lcyhzZWxmKToKKyAgICAgICAgIyBpc3N1ZSAxNjkwNjA4LiAgZW1haWwudXRpbHMuZm9ybWF0YWRkcigpIHNob3VsZCBiZSByZmMyMDQ3IGF3YXJlLgorICAgICAgICBuYW1lID0gIkhcdTAwZTRucyBXXHUwMGZjcnN0IgorICAgICAgICBhZGRyID0gJ3BlcnNvbkBkb20uYWluJworICAgICAgICB1dGY4X2Jhc2U2NCA9ICI9P3V0Zi04P2I/U01Pa2JuTWdWOE84Y25OMD89IDxwZXJzb25AZG9tLmFpbj4iCisgICAgICAgIGxhdGluMV9xdW9wcmkgPSAiPT9pc28tODg1OS0xP3E/SD1FNG5zX1c9RkNyc3Q/PSA8cGVyc29uQGRvbS5haW4+IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdGFkZHIoKG5hbWUsIGFkZHIpKSwgdXRmOF9iYXNlNjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0YWRkcigobmFtZSwgYWRkciksICdpc28tODg1OS0xJyksCisgICAgICAgICAgICBsYXRpbjFfcXVvcHJpKQorCisgICAgZGVmIHRlc3RfYWNjZXB0c19hbnlfY2hhcnNldF9saWtlX29iamVjdChzZWxmKToKKyAgICAgICAgIyBpc3N1ZSAxNjkwNjA4LiAgZW1haWwudXRpbHMuZm9ybWF0YWRkcigpIHNob3VsZCBiZSByZmMyMDQ3IGF3YXJlLgorICAgICAgICBuYW1lID0gIkhcdTAwZTRucyBXXHUwMGZjcnN0IgorICAgICAgICBhZGRyID0gJ3BlcnNvbkBkb20uYWluJworICAgICAgICB1dGY4X2Jhc2U2NCA9ICI9P3V0Zi04P2I/U01Pa2JuTWdWOE84Y25OMD89IDxwZXJzb25AZG9tLmFpbj4iCisgICAgICAgIGZvb2JhciA9ICJGT09CQVIiCisgICAgICAgIGNsYXNzIENoYXJzZXRNb2NrOgorICAgICAgICAgICAgZGVmIGhlYWRlcl9lbmNvZGUoc2VsZiwgc3RyaW5nKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9vYmFyCisgICAgICAgIG1vY2sgPSBDaGFyc2V0TW9jaygpCisgICAgICAgIG1vY2tfZXhwZWN0ZWQgPSAiJXMgPCVzPiIgJSAoZm9vYmFyLCBhZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdGFkZHIoKG5hbWUsIGFkZHIpLCBtb2NrKSwgbW9ja19leHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRhZGRyKChuYW1lLCBhZGRyKSwgQ2hhcnNldCgndXRmLTgnKSksCisgICAgICAgICAgICB1dGY4X2Jhc2U2NCkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcnNldF9saWtlX29iamVjdF9yYWlzZXNfZXJyb3Ioc2VsZik6CisgICAgICAgICMgaXNzdWUgMTY5MDYwOC4gIGVtYWlsLnV0aWxzLmZvcm1hdGFkZHIoKSBzaG91bGQgYmUgcmZjMjA0NyBhd2FyZS4KKyAgICAgICAgbmFtZSA9ICJIXHUwMGU0bnMgV1x1MDBmY3JzdCIKKyAgICAgICAgYWRkciA9ICdwZXJzb25AZG9tLmFpbicKKyAgICAgICAgIyBBIG9iamVjdCB3aXRob3V0IGEgaGVhZGVyX2VuY29kZSBtZXRob2Q6CisgICAgICAgIGJhZF9jaGFyc2V0ID0gb2JqZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHV0aWxzLmZvcm1hdGFkZHIsIChuYW1lLCBhZGRyKSwKKyAgICAgICAgICAgIGJhZF9jaGFyc2V0KQorCisgICAgZGVmIHRlc3RfdW5pY29kZV9hZGRyZXNzX3JhaXNlc19lcnJvcihzZWxmKToKKyAgICAgICAgIyBpc3N1ZSAxNjkwNjA4LiAgZW1haWwudXRpbHMuZm9ybWF0YWRkcigpIHNob3VsZCBiZSByZmMyMDQ3IGF3YXJlLgorICAgICAgICBhZGRyID0gJ3BlcnNcdTAwZjZuQGRvbS5pbicKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVycm9yLCB1dGlscy5mb3JtYXRhZGRyLCAoTm9uZSwgYWRkcikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwgdXRpbHMuZm9ybWF0YWRkciwgKCJOYW1lIiwgYWRkcikpCisKICAgICBkZWYgdGVzdF9uYW1lX3dpdGhfZG90KHNlbGYpOgogICAgICAgICB4ID0gJ0pvaG4gWC4gRG9lIDxqeGRAZXhhbXBsZS5jb20+JwogICAgICAgICB5ID0gJyJKb2huIFguIERvZSIgPGp4ZEBleGFtcGxlLmNvbT4nCkBAIC0yNzEwLDYgKzI4OTYsMTUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJycsICdtZXJ3b2sud29rLndva0B4YW1wbGUuY29tJyksCiAgICAgICAgICAgICB1dGlscy5wYXJzZWFkZHIoJ21lcndvay4gd29rIC4gIHdva0B4YW1wbGUuY29tJykpCiAKKyAgICBkZWYgdGVzdF9mb3JtYXRhZGRyX2RvZXNfbm90X3F1b3RlX3BhcmVuc19pbl9xdW90ZWRfc3RyaW5nKHNlbGYpOgorICAgICAgICBhZGRyID0gKCInZm9vQGV4YW1wbGUuY29tJyAoZm9vQGV4YW1wbGUuY29tKSIsCisgICAgICAgICAgICAgICAgJ2Zvb0BleGFtcGxlLmNvbScpCisgICAgICAgIGFkZHJzdHIgPSAoJyJcJ2Zvb0BleGFtcGxlLmNvbVwnICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvb0BleGFtcGxlLmNvbSkiIDxmb29AZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5wYXJzZWFkZHIoYWRkcnN0ciksIGFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0YWRkcihhZGRyKSwgYWRkcnN0cikKKworCiAgICAgZGVmIHRlc3RfbXVsdGlsaW5lX2Zyb21fY29tbWVudChzZWxmKToKICAgICAgICAgeCA9ICIiIlwKIEZvbwpAQCAtMjk0NSw2ICszMTQwLDcgQEAKIAogCiBjbGFzcyBUZXN0UGFyc2VycyhUZXN0RW1haWxCYXNlKToKKwogICAgIGRlZiB0ZXN0X2hlYWRlcl9wYXJzZXIoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICAjIFBhcnNlIG9ubHkgdGhlIGhlYWRlcnMgb2YgYSBjb21wbGV4IG11bHRpcGFydCBNSU1FIGRvY3VtZW50CkBAIC0yOTU2LDYgKzMxNTIsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtc2cuaXNfbXVsdGlwYXJ0KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZy5nZXRfcGF5bG9hZCgpLCBzdHIpKQogCisgICAgZGVmIHRlc3RfYnl0ZXNfaGVhZGVyX3BhcnNlcihzZWxmKToKKyAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgICMgUGFyc2Ugb25seSB0aGUgaGVhZGVycyBvZiBhIGNvbXBsZXggbXVsdGlwYXJ0IE1JTUUgZG9jdW1lbnQKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnbXNnXzAyLnR4dCcsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgbXNnID0gZW1haWwucGFyc2VyLkJ5dGVzSGVhZGVyUGFyc2VyKCkucGFyc2UoZnApCisgICAgICAgIGVxKG1zZ1snZnJvbSddLCAncHBwLXJlcXVlc3RAenp6Lm9yZycpCisgICAgICAgIGVxKG1zZ1sndG8nXSwgJ3BwcEB6enoub3JnJykKKyAgICAgICAgZXEobXNnLmdldF9jb250ZW50X3R5cGUoKSwgJ211bHRpcGFydC9taXhlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobXNnLmlzX211bHRpcGFydCgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoKSwgc3RyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKSwgYnl0ZXMpKQorCiAgICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9jb250aW51YXRpb24oc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICAjIFRoaXMgbWVzc2FnZSBjb250YWlucyBhIGxpbmUgYWZ0ZXIgdGhlIFN1YmplY3Q6IGhlYWRlciB0aGF0IGhhcyBvbmx5CkBAIC0zMTc4LDE1ICszMzg2LDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdww7ZzdMOhbFxuJy5lbmNvZGUoJ3V0Zi04JykpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nOnRlc3RfaW52YWxpZF9jaGFyc19pbl9iYXNlNjRfcGF5bG9hZAogICAgIGRlZiB0ZXN0XzhiaXRfaW5fYmFzZTY0X2JvZHkoc2VsZik6Ci0gICAgICAgICMgU3RpY2tpbmcgYW4gOGJpdCBieXRlIGluIGEgYmFzZTY0IGJsb2NrIG1ha2VzIGl0IHVuZGVjb2RhYmxlIGJ5Ci0gICAgICAgICMgbm9ybWFsIG1lYW5zLCBzbyB0aGUgYmxvY2sgaXMgcmV0dXJuZWQgdW5kZWNvZGVkLCBidXQgYXMgYnl0ZXMuCisgICAgICAgICMgSWYgd2UgZ2V0IDhiaXQgYnl0ZXMgaW4gYSBiYXNlNjQgYm9keSwgd2UgY2FuIGp1c3QgaWdub3JlIHRoZW0KKyAgICAgICAgIyBhcyBiZWluZyBvdXRzaWRlIHRoZSBiYXNlNjQgYWxwaGFiZXQgYW5kIGRlY29kZSBhbnl3YXkuICBCdXQKKyAgICAgICAgIyB3ZSByZWdpc3RlciBhIGRlZmVjdC4KICAgICAgICAgbSA9IHNlbGYuYm9keXRlc3RfbXNnLmZvcm1hdChjaGFyc2V0PSd1dGYtOCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RlPSdiYXNlNjQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlsaW5lPSdjTU8yYzNSaGJBw6E9JykuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2NNTzJjM1JoYkHDoT1cbicuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgICAgICAgICAgICdww7ZzdGFsJy5lbmNvZGUoJ3V0Zi04JykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2cuZGVmZWN0c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCkKIAogICAgIGRlZiB0ZXN0XzhiaXRfaW5fdXVlbmNvZGVfYm9keShzZWxmKToKICAgICAgICAgIyBTdGlja2luZyBhbiA4Yml0IGJ5dGUgaW4gYSB1dWVuY29kZSBibG9jayBtYWtlcyBpdCB1bmRlY29kYWJsZSBieQpAQCAtMzI2Nyw2ICszNDc5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSwgInRleHQiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9zdWJ0eXBlKCksICJwbFx1RkZGRGluIikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIubm9uX2FzY2lpX2luX3BhcmFtcwogICAgIGRlZiB0ZXN0X2dldF9wYXJhbXNfd2l0aF84Yml0KHNlbGYpOgogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMoCiAgICAgICAgICAgICAnWC1IZWFkZXI6IGZvbz1ceGE3bmU7IGJceGE3cj10d287IGJhej10aHJlZVxuJy5lbmNvZGUoJ2xhdGluLTEnKSkKQEAgLTMyNzYsNiArMzQ4OSw3IEBACiAgICAgICAgICMgWFhYOiBzb21lZGF5IHlvdSBtaWdodCBiZSBhYmxlIHRvIGdldCAnYlx4YTdyJywgZm9yIG5vdyB5b3UgY2FuJ3QuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXJhbSgnYlx4YTdyJywgaGVhZGVyPSd4LWhlYWRlcicpLCBOb25lKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5ub25fYXNjaWlfaW5fcmZjMjIzMV92YWx1ZQogICAgIGRlZiB0ZXN0X2dldF9yZmMyMjMxX3BhcmFtc193aXRoXzhiaXQoc2VsZik6CiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyh0ZXh0d3JhcC5kZWRlbnQoIiIiXAogICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpOwpAQCAtMzUyMSwxMiArMzczNSw3IEBACiAgICAgICAgIGIgPSBCeXRlc0lPKCkKICAgICAgICAgZyA9IGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcihiLCBtYXhoZWFkZXJsZW49MCkKICAgICAgICAgZy5mbGF0dGVuKG1zZywgdW5peGZyb209dW5peGZyb20sIGxpbmVzZXA9c2VsZi5saW5lc2VwKQotICAgICAgICBzZWxmLmFzc2VydEJ5dGVTdHJpbmdzRXF1YWwoZGF0YSwgYi5nZXR2YWx1ZSgpKQotCi0gICAgZGVmIGFzc2VydEJ5dGVTdHJpbmdzRXF1YWwoc2VsZiwgc3RyMSwgc3RyMik6Ci0gICAgICAgICMgTm90IHVzaW5nIHNlbGYuYmxpbmVzZXAgaGVyZSBpcyBpbnRlbnRpb25hbC4gIFRoaXMgd2F5IHRoZSBvdXRwdXQKLSAgICAgICAgIyBpcyBtb3JlIHVzZWZ1bCB3aGVuIHRoZSBmYWlsdXJlIHJlc3VsdHMgaW4gbWl4ZWQgbGluZSBlbmRpbmdzLgotICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChzdHIxLnNwbGl0KGInXG4nKSwgc3RyMi5zcGxpdChiJ1xuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYi5nZXR2YWx1ZSgpKQogCiAKIGNsYXNzIFRlc3RCeXRlc0dlbmVyYXRvcklkZW1wb3RlbnROTChCYXNlVGVzdEJ5dGVzR2VuZXJhdG9ySWRlbXBvdGVudCwKQEAgLTQyOTIsMTEgKzQ1MDEsMTEgQEAKICAgICAgICAgaCA9IG1ha2VfaGVhZGVyKGRlY29kZV9oZWFkZXIocykpCiAgICAgICAgIGVxKGguZW5jb2RlKCksIHMpCiAKLSAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2VhdGVyKHNlbGYpOgorICAgIGRlZiB0ZXN0X3doaXRlc3BhY2Vfa2VlcGVyKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgcyA9ICdTdWJqZWN0OiA9P2tvaTgtcj9iPzhOTFAxOFhTeThFZ3pzRWd4c25Pd2N6WXp0az0/PSA9P2tvaTgtcj9xPz1DQT89IHp6LicKICAgICAgICAgcGFydHMgPSBkZWNvZGVfaGVhZGVyKHMpCi0gICAgICAgIGVxKHBhcnRzLCBbKGInU3ViamVjdDonLCBOb25lKSwgKGInXHhmMFx4ZDJceGNmXHhkN1x4YzVceGQyXHhjYlx4YzEgXHhjZVx4YzEgXHhjNlx4YzlceGNlXHhjMVx4Y2NceGQ4XHhjZVx4ZDlceGNhJywgJ2tvaTgtcicpLCAoYid6ei4nLCBOb25lKV0pCisgICAgICAgIGVxKHBhcnRzLCBbKGInU3ViamVjdDogJywgTm9uZSksIChiJ1x4ZjBceGQyXHhjZlx4ZDdceGM1XHhkMlx4Y2JceGMxIFx4Y2VceGMxIFx4YzZceGM5XHhjZVx4YzFceGNjXHhkOFx4Y2VceGQ5XHhjYScsICdrb2k4LXInKSwgKGInIHp6LicsIE5vbmUpXSkKICAgICAgICAgaGRyID0gbWFrZV9oZWFkZXIocGFydHMpCiAgICAgICAgIGVxKGhkci5lbmNvZGUoKSwKICAgICAgICAgICAgJ1N1YmplY3Q6ID0/a29pOC1yP2I/OE5MUDE4WFN5OEVnenNFZ3hzbk93Y3pZenRuSz89IHp6LicpCkBAIC00MzI2LDYgKzQ1MzUsOSBAQAogCiAjIFRlc3QgUkZDIDIyMzEgaGVhZGVyIHBhcmFtZXRlcnMgKGVuL2RlKWNvZGluZwogY2xhc3MgVGVzdFJGQzIyMzEoVGVzdEVtYWlsQmFzZSk6CisKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfZW5jb2RlZF93aXRoX2RvdWJsZV9xdW90ZXMKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3RlX2luc2lkZV9kb3VibGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfZ2V0X3BhcmFtKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMjkudHh0JykKQEAgLTQ0MTEsMTEgKzQ2MjMsMTUgQEAKIC1NZQogIiIiKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfY2hhcnNldAorICAgICMgSSBjaGFuZ2VkIHRoZSBjaGFyc2V0IG5hbWUsIHRob3VnaCwgYmVjYXVzZSB0aGUgb25lIGluIHRoZSBmaWxlIGlzbid0CisgICAgIyBhIGxlZ2FsIGNoYXJzZXQgbmFtZS4gIFNob3VsZCBhZGQgYSB0ZXN0IGZvciBhbiBpbGxlZ2FsIGNoYXJzZXQuCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9nZXRfY29udGVudF9jaGFyc2V0KHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMzIudHh0JykKICAgICAgICAgZXEobXNnLmdldF9jb250ZW50X2NoYXJzZXQoKSwgJ3VzLWFzY2lpJykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX25vX2RvdWJsZV9xdW90ZXMKICAgICBkZWYgdGVzdF9yZmMyMjMxX3BhcnNlX3JmY19xdW90aW5nKHNlbGYpOgogICAgICAgICBtID0gdGV4dHdyYXAuZGVkZW50KCcnJ1wKICAgICAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ0MjksNiArNDY0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBtc2cuYXNfc3RyaW5nKCkpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfZW5jb2RlZF93aXRoX2RvdWJsZV9xdW90ZXMKICAgICBkZWYgdGVzdF9yZmMyMjMxX3BhcnNlX2V4dHJhX3F1b3Rpbmcoc2VsZik6CiAgICAgICAgIG0gPSB0ZXh0d3JhcC5kZWRlbnQoJycnXAogICAgICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOwpAQCAtNDQ0Miw2ICs0NjU5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG1zZy5hc19zdHJpbmcoKSkKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9ub19sYW5ndWFnZV9vcl9jaGFyc2V0CisgICAgIyBidXQgbmV3IHRlc3QgdXNlcyAqMCogYmVjYXVzZSBvdGhlcndpc2UgbGFuZy9jaGFyc2V0IGlzIG5vdCB2YWxpZC4KKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2VnbWVudGVkX25vcm1hbF92YWx1ZXMKICAgICBkZWYgdGVzdF9yZmMyMjMxX25vX2xhbmd1YWdlX29yX2NoYXJzZXQoc2VsZik6CiAgICAgICAgIG0gPSAnJydcCiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CkBAIC00NDU2LDYgKzQ2NzYsNyBAQAogICAgICAgICAgICAgcGFyYW0sCiAgICAgICAgICAgICAnZmlsZV9fX19DX19ET0NVTUVOVFNfMjBBTkRfMjBTRVRUSU5HU19GQUJJRU5fTE9DQUxfMjBTRVRUSU5HU19URU1QX25zbWFpbC5odG0nKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfbm9fY2hhcnNldAogICAgIGRlZiB0ZXN0X3JmYzIyMzFfbm9fbGFuZ3VhZ2Vfb3JfY2hhcnNldF9pbl9maWxlbmFtZShzZWxmKToKICAgICAgICAgbSA9ICcnJ1wKIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ0NjgsNiArNDY4OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9maWxlbmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAKKyAgICAjIER1cGxpY2F0ZSBvZiBwcmV2aW91cyB0ZXN0PwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfbm9fbGFuZ3VhZ2Vfb3JfY2hhcnNldF9pbl9maWxlbmFtZV9lbmNvZGVkKHNlbGYpOgogICAgICAgICBtID0gJycnXAogQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOwpAQCAtNDQ4MCw2ICs0NzAyLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2ZpbGVuYW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9wYXJ0bHlfZW5jb2RlZCwKKyAgICAjIGJ1dCB0aGUgdGVzdCBiZWxvdyBpcyB3cm9uZyAodGhlIGZpcnN0IHBhcnQgc2hvdWxkIGJlIGRlY29kZWQpLgogICAgIGRlZiB0ZXN0X3JmYzIyMzFfcGFydGx5X2VuY29kZWQoc2VsZik6CiAgICAgICAgIG0gPSAnJydcCiBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7CkBAIC00NTMxLDYgKzQ3NTUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9jaGFyc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV91bmtub3duX2NoYXJzZXRfdHJlYXRlZF9hc19hc2NpaQogICAgIGRlZiB0ZXN0X3JmYzIyMzFfYmFkX2VuY29kaW5nX2luX2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICBtID0gJycnXAogQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOwpAQCAtNDU5Nyw2ICs0ODIyLDcgQEAKICAgICAgICAgZXEobGFuZ3VhZ2UsIE5vbmUpCiAgICAgICAgIGVxKHMsICJGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5zaWRlX2RvdWJsZV9xdW90ZXMKICAgICBkZWYgdGVzdF9yZmMyMjMxX3NpbmdsZV90aWNrX2luX2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICBtID0gIiIiXAogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbzsgbmFtZSowPVwiRnJhbmsnc1wiOyBuYW1lKjE9XCIgRG9jdW1lbnRcIgpAQCAtNDYwNyw2ICs0ODMzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKHBhcmFtLCB0dXBsZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW0sICJGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5fdmFsdWVfd2l0aF9jaGFyc2V0X2FuZF9sYW5nCiAgICAgZGVmIHRlc3RfcmZjMjIzMV90aWNrX2F0dGFja19leHRlbmRlZChzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG0gPSAiIiJcCkBAIC00NjIwLDYgKzQ4NDcsNyBAQAogICAgICAgICBlcShsYW5ndWFnZSwgJ2VuLXVzJykKICAgICAgICAgZXEocywgIkZyYW5rJ3MgRG9jdW1lbnQiKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3NpbmdsZV9xdW90ZV9pbl9ub25fZW5jb2RlZF92YWx1ZQogICAgIGRlZiB0ZXN0X3JmYzIyMzFfdGlja19hdHRhY2soc2VsZik6CiAgICAgICAgIG0gPSAiIiJcCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vOwpAQCAtNDYzMSw2ICs0ODU5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKHBhcmFtLCB0dXBsZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW0sICJ1cy1hc2NpaSdlbi11cydGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9zaW5nbGVfcXVvdGVzX2luc2lkZV9xdW90ZXMKICAgICBkZWYgdGVzdF9yZmMyMjMxX25vX2V4dGVuZGVkX3ZhbHVlcyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG0gPSAiIiJcCkBAIC00NjQwLDYgKzQ4NjksNyBAQAogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG0pCiAgICAgICAgIGVxKG1zZy5nZXRfcGFyYW0oJ25hbWUnKSwgIkZyYW5rJ3MgRG9jdW1lbnQiKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfdGhlbl91bmVuY29kZWRfc2VnbWVudHMKICAgICBkZWYgdGVzdF9yZmMyMjMxX2VuY29kZWRfdGhlbl91bmVuY29kZWRfc2VnbWVudHMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtID0gIiIiXApAQCAtNDY1NSw2ICs0ODg1LDggQEAKICAgICAgICAgZXEobGFuZ3VhZ2UsICdlbi11cycpCiAgICAgICAgIGVxKHMsICdNeSBEb2N1bWVudCBGb3IgWW91JykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV91bmVuY29kZWRfdGhlbl9lbmNvZGVkX3NlZ21lbnRzCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3F1b3RlZF91bmVuY29kZWRfdGhlbl9lbmNvZGVkX3NlZ21lbnRzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV91bmVuY29kZWRfdGhlbl9lbmNvZGVkX3NlZ21lbnRzKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbSA9ICIiIlwKQEAgLTQ2NzgsNyArNDkxMCw3IEBACiBjbGFzcyBUZXN0U2lnbmVkKFRlc3RFbWFpbEJhc2UpOgogCiAgICAgZGVmIF9tc2dfYW5kX29iaihzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbmZpbGUoZmluZGZpbGUoZmlsZW5hbWUpKSBhcyBmcDoKKyAgICAgICAgd2l0aCBvcGVuZmlsZShmaWxlbmFtZSkgYXMgZnA6CiAgICAgICAgICAgICBvcmlnaW5hbCA9IGZwLnJlYWQoKQogICAgICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhvcmlnaW5hbCkKICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLCBtc2cKQEAgLTQ3MTAsMjMgKzQ5NDIsNSBAQAogCiAKIAotZGVmIF90ZXN0Y2xhc3NlcygpOgotICAgIG1vZCA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQotICAgIHJldHVybiBbZ2V0YXR0cihtb2QsIG5hbWUpIGZvciBuYW1lIGluIGRpcihtb2QpIGlmIG5hbWUuc3RhcnRzd2l0aCgnVGVzdCcpXQotCi0KLWRlZiBzdWl0ZSgpOgotICAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKLSAgICBmb3IgdGVzdGNsYXNzIGluIF90ZXN0Y2xhc3NlcygpOgotICAgICAgICBzdWl0ZS5hZGRUZXN0KHVuaXR0ZXN0Lm1ha2VTdWl0ZSh0ZXN0Y2xhc3MpKQotICAgIHJldHVybiBzdWl0ZQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmb3IgdGVzdGNsYXNzIGluIF90ZXN0Y2xhc3NlcygpOgotICAgICAgICBydW5fdW5pdHRlc3QodGVzdGNsYXNzKQotCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKGRlZmF1bHRUZXN0PSdzdWl0ZScpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTE3NDA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQpAQCAtMCwwICsxLDE5OSBAQAoraW1wb3J0IGlvCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZV9mcm9tX3N0cmluZywgbWVzc2FnZV9mcm9tX2J5dGVzCitmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yLCBCeXRlc0dlbmVyYXRvcgorZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZSwgcGFyYW1ldGVyaXplCisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdEdlbmVyYXRvckJhc2U6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorCisgICAgZGVmIG1zZ21ha2VyKHNlbGYsIG1zZywgcG9saWN5PU5vbmUpOgorICAgICAgICBwb2xpY3kgPSBzZWxmLnBvbGljeSBpZiBwb2xpY3kgaXMgTm9uZSBlbHNlIHBvbGljeQorICAgICAgICByZXR1cm4gc2VsZi5tc2dmdW5jKG1zZywgcG9saWN5PXBvbGljeSkKKworICAgIHJlZm9sZF9sb25nX2V4cGVjdGVkID0geworICAgICAgICAwOiB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb20KKyAgICAgICAgICAgIEZyb206IG5vYm9keV95b3Vfd2FudF90b19rbm93QGV4YW1wbGUuY29tCisgICAgICAgICAgICBTdWJqZWN0OiBXZSB0aGUgd2lsbGluZyBsZWQgYnkgdGhlIHVua25vd2luZyBhcmUgZG9pbmcgdGhlCisgICAgICAgICAgICAgaW1wb3NzaWJsZSBmb3IgdGhlIHVuZ3JhdGVmdWwuIFdlIGhhdmUgZG9uZSBzbyBtdWNoIGZvciBzbyBsb25nIHdpdGggc28gbGl0dGxlCisgICAgICAgICAgICAgd2UgYXJlIG5vdyBxdWFsaWZpZWQgdG8gZG8gYW55dGhpbmcgd2l0aCBub3RoaW5nLgorCisgICAgICAgICAgICBOb25lCisgICAgICAgICAgICAiIiIpLAorICAgICAgICAjIEZyb20gaXMgd3JhcHBlZCBiZWNhdXNlIHdyYXBwZWQgaXQgZml0cyBpbiA0MC4KKyAgICAgICAgNDA6IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBUbzogd2hvbV9pdF9tYXlfY29uY2VybkBleGFtcGxlLmNvbQorICAgICAgICAgICAgRnJvbToKKyAgICAgICAgICAgICBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbQorICAgICAgICAgICAgU3ViamVjdDogV2UgdGhlIHdpbGxpbmcgbGVkIGJ5IHRoZQorICAgICAgICAgICAgIHVua25vd2luZyBhcmUgZG9pbmcgdGhlIGltcG9zc2libGUgZm9yCisgICAgICAgICAgICAgdGhlIHVuZ3JhdGVmdWwuIFdlIGhhdmUgZG9uZSBzbyBtdWNoCisgICAgICAgICAgICAgZm9yIHNvIGxvbmcgd2l0aCBzbyBsaXR0bGUgd2UgYXJlIG5vdworICAgICAgICAgICAgIHF1YWxpZmllZCB0byBkbyBhbnl0aGluZyB3aXRoIG5vdGhpbmcuCisKKyAgICAgICAgICAgIE5vbmUKKyAgICAgICAgICAgICIiIiksCisgICAgICAgICMgTmVpdGhlciB0byBub3IgZnJvbSBmaXQgZXZlbiBpZiBwdXQgb24gYSBuZXcgbGluZSwKKyAgICAgICAgIyBzbyB3ZSBsZWF2ZSB0aGVtIHN0aWNraW5nIG91dCBvbiB0aGUgZmlyc3QgbGluZS4KKyAgICAgICAgMjA6IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBUbzogd2hvbV9pdF9tYXlfY29uY2VybkBleGFtcGxlLmNvbQorICAgICAgICAgICAgRnJvbTogbm9ib2R5X3lvdV93YW50X3RvX2tub3dAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIFN1YmplY3Q6IFdlIHRoZQorICAgICAgICAgICAgIHdpbGxpbmcgbGVkIGJ5IHRoZQorICAgICAgICAgICAgIHVua25vd2luZyBhcmUgZG9pbmcKKyAgICAgICAgICAgICB0aGUgaW1wb3NzaWJsZSBmb3IKKyAgICAgICAgICAgICB0aGUgdW5ncmF0ZWZ1bC4gV2UKKyAgICAgICAgICAgICBoYXZlIGRvbmUgc28gbXVjaAorICAgICAgICAgICAgIGZvciBzbyBsb25nIHdpdGggc28KKyAgICAgICAgICAgICBsaXR0bGUgd2UgYXJlIG5vdworICAgICAgICAgICAgIHF1YWxpZmllZCB0byBkbworICAgICAgICAgICAgIGFueXRoaW5nIHdpdGgKKyAgICAgICAgICAgICBub3RoaW5nLgorCisgICAgICAgICAgICBOb25lCisgICAgICAgICAgICAiIiIpLAorICAgICAgICB9CisgICAgcmVmb2xkX2xvbmdfZXhwZWN0ZWRbMTAwXSA9IHJlZm9sZF9sb25nX2V4cGVjdGVkWzBdCisKKyAgICByZWZvbGRfYWxsX2V4cGVjdGVkID0gcmVmb2xkX2xvbmdfZXhwZWN0ZWQuY29weSgpCisgICAgcmVmb2xkX2FsbF9leHBlY3RlZFswXSA9ICgKKyAgICAgICAgICAgICJUbzogd2hvbV9pdF9tYXlfY29uY2VybkBleGFtcGxlLmNvbVxuIgorICAgICAgICAgICAgIkZyb206IG5vYm9keV95b3Vfd2FudF90b19rbm93QGV4YW1wbGUuY29tXG4iCisgICAgICAgICAgICAiU3ViamVjdDogV2UgdGhlIHdpbGxpbmcgbGVkIGJ5IHRoZSB1bmtub3dpbmcgYXJlIGRvaW5nIHRoZSAiCisgICAgICAgICAgICAgICJpbXBvc3NpYmxlIGZvciB0aGUgdW5ncmF0ZWZ1bC4gV2UgaGF2ZSBkb25lIHNvIG11Y2ggZm9yICIKKyAgICAgICAgICAgICAgInNvIGxvbmcgd2l0aCBzbyBsaXR0bGUgd2UgYXJlIG5vdyBxdWFsaWZpZWQgdG8gZG8gYW55dGhpbmcgIgorICAgICAgICAgICAgICAid2l0aCBub3RoaW5nLlxuIgorICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICJOb25lXG4iKQorICAgIHJlZm9sZF9hbGxfZXhwZWN0ZWRbMTAwXSA9ICgKKyAgICAgICAgICAgICJUbzogd2hvbV9pdF9tYXlfY29uY2VybkBleGFtcGxlLmNvbVxuIgorICAgICAgICAgICAgIkZyb206IG5vYm9keV95b3Vfd2FudF90b19rbm93QGV4YW1wbGUuY29tXG4iCisgICAgICAgICAgICAiU3ViamVjdDogV2UgdGhlIHdpbGxpbmcgbGVkIGJ5IHRoZSB1bmtub3dpbmcgYXJlIGRvaW5nIHRoZSAiCisgICAgICAgICAgICAgICAgImltcG9zc2libGUgZm9yIHRoZSB1bmdyYXRlZnVsLiBXZSBoYXZlXG4iCisgICAgICAgICAgICAgICIgZG9uZSBzbyBtdWNoIGZvciBzbyBsb25nIHdpdGggc28gbGl0dGxlIHdlIGFyZSBub3cgcXVhbGlmaWVkICIKKyAgICAgICAgICAgICAgICAidG8gZG8gYW55dGhpbmcgd2l0aCBub3RoaW5nLlxuIgorICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICJOb25lXG4iKQorCisgICAgbGVuZ3RoX3BhcmFtcyA9IFtuIGZvciBuIGluIHJlZm9sZF9sb25nX2V4cGVjdGVkXQorCisgICAgZGVmIGxlbmd0aF9hc19tYXhoZWFkZXJsZW5fcGFyYW1ldGVyKHNlbGYsIG4pOgorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0pKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgbWF4aGVhZGVybGVuPW4sIHBvbGljeT1zZWxmLnBvbGljeSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbbl0pKQorCisgICAgZGVmIGxlbmd0aF9hc19tYXhfbGluZV9sZW5ndGhfcG9saWN5KHNlbGYsIG4pOgorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0pKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKG1heF9saW5lX2xlbmd0aD1uKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbbl0pKQorCisgICAgZGVmIGxlbmd0aF9hc19tYXhoZWFkZXJsZW5fcGFybV9vdmVycmlkZXNfcG9saWN5KHNlbGYsIG4pOgorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0pKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgbWF4aGVhZGVybGVuPW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZShtYXhfbGluZV9sZW5ndGg9MTApKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFtuXSkpCisKKyAgICBkZWYgbGVuZ3RoX2FzX21heF9saW5lX2xlbmd0aF93aXRoX3JlZm9sZF9ub25lX2RvZXNfbm90X2ZvbGQoc2VsZiwgbik6CisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFswXSkpCisgICAgICAgIHMgPSBzZWxmLmlvY2xhc3MoKQorICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUocmVmb2xkX3NvdXJjZT0nbm9uZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGluZV9sZW5ndGg9bikpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKworICAgIGRlZiBsZW5ndGhfYXNfbWF4X2xpbmVfbGVuZ3RoX3dpdGhfcmVmb2xkX2FsbF9mb2xkcyhzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZShyZWZvbGRfc291cmNlPSdhbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xpbmVfbGVuZ3RoPW4pKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoc2VsZi5yZWZvbGRfYWxsX2V4cGVjdGVkW25dKSkKKworICAgIGRlZiB0ZXN0X2NybGZfY29udHJvbF92aWFfcG9saWN5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAiU3ViamVjdDogdGVzdFxyXG5cclxudGVzdCBib2R5XHJcbiIKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3VyY2UKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzb3VyY2UpKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXBvbGljeS5TTVRQKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoZXhwZWN0ZWQpKQorCisgICAgZGVmIHRlc3RfZmxhdHRlbl9saW5lc2VwX292ZXJyaWRlc19wb2xpY3koc2VsZik6CisgICAgICAgIHNvdXJjZSA9ICJTdWJqZWN0OiB0ZXN0XG5cbnRlc3QgYm9keVxuIgorICAgICAgICBleHBlY3RlZCA9IHNvdXJjZQorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNvdXJjZSkpCisgICAgICAgIHMgPSBzZWxmLmlvY2xhc3MoKQorICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBwb2xpY3k9cG9saWN5LlNNVFApCisgICAgICAgIGcuZmxhdHRlbihtc2csIGxpbmVzZXA9J1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKGV4cGVjdGVkKSkKKworCitjbGFzcyBUZXN0R2VuZXJhdG9yKFRlc3RHZW5lcmF0b3JCYXNlLCBUZXN0RW1haWxCYXNlKToKKworICAgIG1zZ2Z1bmMgPSBzdGF0aWNtZXRob2QobWVzc2FnZV9mcm9tX3N0cmluZykKKyAgICBnZW5jbGFzcyA9IEdlbmVyYXRvcgorICAgIGlvY2xhc3MgPSBpby5TdHJpbmdJTworICAgIHR5cCA9IHN0cgorCisKK2NsYXNzIFRlc3RCeXRlc0dlbmVyYXRvcihUZXN0R2VuZXJhdG9yQmFzZSwgVGVzdEVtYWlsQmFzZSk6CisKKyAgICBtc2dmdW5jID0gc3RhdGljbWV0aG9kKG1lc3NhZ2VfZnJvbV9ieXRlcykKKyAgICBnZW5jbGFzcyA9IEJ5dGVzR2VuZXJhdG9yCisgICAgaW9jbGFzcyA9IGlvLkJ5dGVzSU8KKyAgICB0eXAgPSBsYW1iZGEgc2VsZiwgeDogeC5lbmNvZGUoJ2FzY2lpJykKKworICAgIGRlZiB0ZXN0X2N0ZV90eXBlXzdiaXRfaGFuZGxlc191bmtub3duXzhiaXQoc2VsZik6CisgICAgICAgIHNvdXJjZSA9ICgiU3ViamVjdDogTWFpbnRlbmFudCBqZSB2b3VzIHByw6lzZW50ZSBtb24gIgorICAgICAgICAgICAgICAgICAiY29sbMOoZ3VlXG5cbiIpLmVuY29kZSgndXRmLTgnKQorICAgICAgICBleHBlY3RlZCA9ICgnU3ViamVjdDogTWFpbnRlbmFudCBqZSB2b3VzID0/dW5rbm93bi04Yml0P3E/JworICAgICAgICAgICAgICAgICAgICAncHI9QzM9QTlzZW50ZV9tb25fY29sbD1DMz1BOGd1ZT89XG5cbicpLmVuY29kZSgnYXNjaWknKQorICAgICAgICBtc2cgPSBtZXNzYWdlX2Zyb21fYnl0ZXMoc291cmNlKQorICAgICAgICBzID0gaW8uQnl0ZXNJTygpCisgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihzLCBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUoY3RlX3R5cGU9JzdiaXQnKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfY3RlX3R5cGVfN2JpdF90cmFuc2Zvcm1zXzhiaXRfY3RlKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRnJvbTogZm9vQGJhci5jb20KKyAgICAgICAgICAgIFRvOiBEaW5zZGFsZQorICAgICAgICAgICAgU3ViamVjdDogTnVkZ2UgbnVkZ2UsIHdpbmssIHdpbmsKKyAgICAgICAgICAgIE1pbWUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9ImxhdGluLTEiCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKKyAgICAgICAgICAgIG9oIGzDoCBsw6AsIGtub3cgd2hhdCBJIG1lYW4sIGtub3cgd2hhdCBJIG1lYW4/CisgICAgICAgICAgICAiIiIpLmVuY29kZSgnbGF0aW4xJykKKyAgICAgICAgbXNnID0gbWVzc2FnZV9mcm9tX2J5dGVzKHNvdXJjZSkKKyAgICAgICAgZXhwZWN0ZWQgPSAgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIEZyb206IGZvb0BiYXIuY29tCisgICAgICAgICAgICBUbzogRGluc2RhbGUKKyAgICAgICAgICAgIFN1YmplY3Q6IE51ZGdlIG51ZGdlLCB3aW5rLCB3aW5rCisgICAgICAgICAgICBNaW1lLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJpc28tODg1OS0xIgorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQorCisgICAgICAgICAgICBvaCBsPUUwIGw9RTAsIGtub3cgd2hhdCBJIG1lYW4sIGtub3cgd2hhdCBJIG1lYW4/CisgICAgICAgICAgICAiIiIpLmVuY29kZSgnYXNjaWknKQorICAgICAgICBzID0gaW8uQnl0ZXNJTygpCisgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihzLCBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUoY3RlX3R5cGU9JzdiaXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzZXA9J1xuJykpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYTgxZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkKQEAgLTAsMCArMSwxNTE1IEBACitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gZW1haWwgaW1wb3J0IHBvbGljeQorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZSwgcGFyYW1ldGVyaXplCitmcm9tIGVtYWlsIGltcG9ydCBoZWFkZXJyZWdpc3RyeQorZnJvbSBlbWFpbC5oZWFkZXJyZWdpc3RyeSBpbXBvcnQgQWRkcmVzcywgR3JvdXAKKworCitESVRUTyA9IG9iamVjdCgpCisKKworY2xhc3MgVGVzdEhlYWRlclJlZ2lzdHJ5KFRlc3RFbWFpbEJhc2UpOgorCisgICAgZGVmIHRlc3RfYXJiaXRyYXJ5X25hbWVfdW5zdHJ1Y3R1cmVkKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoKQorICAgICAgICBoID0gZmFjdG9yeSgnZm9vYmFyJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGRlZiB0ZXN0X25hbWVfY2FzZV9pZ25vcmVkKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoKQorICAgICAgICAjIFdoaXRlYm94IGNoZWNrIHRoYXQgdGVzdCBpcyB2YWxpZAorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdTdWJqZWN0JywgZmFjdG9yeS5yZWdpc3RyeSkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ1N1YmplY3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyKQorCisgICAgY2xhc3MgRm9vQmFzZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2RlZmF1bHRfYmFzZV9jbGFzcyhzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KGJhc2VfY2xhc3M9c2VsZi5Gb29CYXNlKQorICAgICAgICBoID0gZmFjdG9yeSgnZm9vYmFyJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgc2VsZi5Gb29CYXNlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyKQorCisgICAgY2xhc3MgRm9vRGVmYXVsdDoKKyAgICAgICAgcGFyc2UgPSBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIucGFyc2UKKworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2RlZmF1bHRfY2xhc3Moc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeShkZWZhdWx0X2NsYXNzPXNlbGYuRm9vRGVmYXVsdCkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBzZWxmLkZvb0RlZmF1bHQpCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9kZWZhdWx0X2NsYXNzX29ubHlfb3ZlcnJpZGVzX2RlZmF1bHQoc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeShkZWZhdWx0X2NsYXNzPXNlbGYuRm9vRGVmYXVsdCkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ3N1YmplY3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyKQorCisgICAgZGVmIHRlc3RfZG9udF91c2VfZGVmYXVsdF9tYXAoc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeSh1c2VfZGVmYXVsdF9tYXA9RmFsc2UpCisgICAgICAgIGggPSBmYWN0b3J5KCdzdWJqZWN0JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGRlZiB0ZXN0X21hcF90b190eXBlKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoKQorICAgICAgICBoMSA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgZmFjdG9yeS5tYXBfdG9fdHlwZSgnZm9vYmFyJywgaGVhZGVycmVnaXN0cnkuVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyKQorICAgICAgICBoMiA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgxLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaDEsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgyLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaDIsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcikKKworCitjbGFzcyBUZXN0SGVhZGVyQmFzZShUZXN0RW1haWxCYXNlKToKKworICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeSgpCisKKyAgICBkZWYgbWFrZV9oZWFkZXIoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICByZXR1cm4gc2VsZi5mYWN0b3J5KG5hbWUsIHZhbHVlKQorCisKK2NsYXNzIFRlc3RCYXNlSGVhZGVyRmVhdHVyZXMoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBzdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaCksICd0aGlzIGlzIGEgdGVzdCcpCisKKyAgICBkZWYgdGVzdF9zdWJzdHIoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoWzU6N10sICdpcycpCisKKyAgICBkZWYgdGVzdF9oYXNfbmFtZShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubmFtZSwgJ3N1YmplY3QnKQorCisgICAgZGVmIF90ZXN0X2F0dHJfcm8oc2VsZiwgYXR0cik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBzZXRhdHRyKGgsIGF0dHIsICdmb28nKQorCisgICAgZGVmIHRlc3RfbmFtZV9yZWFkX29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybygnbmFtZScpCisKKyAgICBkZWYgdGVzdF9kZWZlY3RzX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdHRyX3JvKCdkZWZlY3RzJykKKworICAgIGRlZiB0ZXN0X2RlZmVjdHNfaXNfdHVwbGUoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5kZWZlY3RzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGVmZWN0cywgdHVwbGUpCisgICAgICAgICMgTWFrZSBzdXJlIGl0IGlzIHN0aWxsIHRydWUgd2hlbiB0aGVyZSBhcmUgZGVmZWN0cy4KKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5kZWZlY3RzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGVmZWN0cywgdHVwbGUpCisKKyAgICAjIFhYWDogRklYTUUKKyAgICAjZGVmIHRlc3RfQ1JfaW5fdmFsdWUoc2VsZik6CisgICAgIyAgICAjIFhYWDogdGhpcyBhbHNvIHJlLXJhaXNlcyB0aGUgaXNzdWUgb2YgZW1iZWRkZWQgaGVhZGVycywKKyAgICAjICAgICMgbmVlZCB0ZXN0IGFuZCBzb2x1dGlvbiBmb3IgdGhhdC4KKyAgICAjICAgIHZhbHVlID0gJ1xyJy5qb2luKFsndGhpcyBpcycsICcgYSB0ZXN0J10pCisgICAgIyAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsIHZhbHVlKQorICAgICMgICAgc2VsZi5hc3NlcnRFcXVhbChoLCB2YWx1ZSkKKyAgICAjICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9SRkMyMDQ3X3ZhbHVlX2RlY29kZWQoc2VsZik6CisgICAgICAgIHZhbHVlID0gJz0/dXRmLTg/cT90aGlzX2lzX2FfdGVzdD89JworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICd0aGlzIGlzIGEgdGVzdCcpCisKKworY2xhc3MgVGVzdERhdGVIZWFkZXIoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGF0ZXN0cmluZyA9ICdTdW4sIDIzIFNlcCAyMDAxIDIwOjEwOjU1IC0wNzAwJworICAgIHV0Y29mZnNldCA9IGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0tNykKKyAgICB0eiA9IGRhdGV0aW1lLnRpbWV6b25lKHV0Y29mZnNldCkKKyAgICBkdCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMDEsIDksIDIzLCAyMCwgMTAsIDU1LCB0emluZm89dHopCisKKyAgICBkZWYgdGVzdF9wYXJzZV9kYXRlKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kYXRldGltZSwgc2VsZi5kdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRhdGV0aW1lLnV0Y29mZnNldCgpLCBzZWxmLnV0Y29mZnNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRlZmVjdHMsICgpKQorCisgICAgZGVmIHRlc3Rfc2V0X2Zyb21fZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgc2VsZi5kdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kYXRldGltZSwgc2VsZi5kdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRlZmVjdHMsICgpKQorCisgICAgZGVmIHRlc3RfZGF0ZV9oZWFkZXJfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbmlxdWVEYXRlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubWF4X2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGVmZWN0cywgKCkpCisKKyAgICBkZWYgdGVzdF9yZXNlbnRfZGF0ZV9oZWFkZXJfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3Jlc2VudC1kYXRlJywgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuRGF0ZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1heF9jb3VudCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRlZmVjdHMsICgpKQorCisgICAgZGVmIHRlc3Rfbm9fdmFsdWVfaXNfZGVmZWN0KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmRlZmVjdHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5kZWZlY3RzWzBdLCBlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUpCisKKyAgICBkZWYgdGVzdF9kYXRldGltZV9yZWFkX29ubHkoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGguZGF0ZXRpbWUgPSAnZm9vJworCisgICAgZGVmIHRlc3Rfc2V0X2RhdGVfaGVhZGVyX2Zyb21fZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIG0gPSBNZXNzYWdlKHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKKyAgICAgICAgbVsnRGF0ZSddID0gc2VsZi5kdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ0RhdGUnXSwgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ0RhdGUnXS5kYXRldGltZSwgc2VsZi5kdCkKKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0Q29udGVudFR5cGVIZWFkZXIoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGVmIGNvbnRlbnRfdHlwZV9hc192YWx1ZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFyZ3MpOgorICAgICAgICBsID0gbGVuKGFyZ3MpCisgICAgICAgIHBhcm1kaWN0ID0gYXJnc1swXSBpZiBsPjAgZWxzZSB7fQorICAgICAgICBkZWZlY3RzID0gIGFyZ3NbMV0gaWYgbD4xIGVsc2UgW10KKyAgICAgICAgZGVjb2RlZCA9ICBhcmdzWzJdIGlmIGw+MiBhbmQgYXJnc1syXSBpcyBub3QgRElUVE8gZWxzZSBzb3VyY2UKKyAgICAgICAgaGVhZGVyID0gJ0NvbnRlbnQtVHlwZTonICsgJyAnIGlmIHNvdXJjZSBlbHNlICcnCisgICAgICAgIGZvbGRlZCA9IGFyZ3NbM10gaWYgbD4zIGVsc2UgaGVhZGVyICsgc291cmNlICsgJ1xuJworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignQ29udGVudC1UeXBlJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguY29udGVudF90eXBlLCBjb250ZW50X3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5tYWludHlwZSwgbWFpbnR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5zdWJ0eXBlLCBzdWJ0eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgucGFyYW1zLCBwYXJtZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoaC5kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksIGZvbGRlZCkKKworICAgIGNvbnRlbnRfdHlwZV9wYXJhbXMgPSB7CisKKyAgICAgICAgIyBFeGFtcGxlcyBmcm9tIFJGQyAyMDQ1LgorCisgICAgICAgICdSRkNfMjA0NV8xJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkgKFBsYWluIHRleHQpJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIicpLAorCisgICAgICAgICdSRkNfMjA0NV8yJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWknLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnY2hhcnNldCc6ICd1cy1hc2NpaSd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiJyksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzMnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknfSksCisKKyAgICAgICAgIyBSRkMgMjA0NSA1LjIgc2F5cyBzeW50YWN0aWNhbGx5IGludmFsaWQgdmFsdWVzIGFyZSB0byBiZSB0cmVhdGVkIGFzCisgICAgICAgICMgdGV4dC9wbGFpbi4KKworICAgICAgICAnbm9fc3VidHlwZV9pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAndGV4dC8nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ25vX3NsYXNoX2luX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICdmb28nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ2p1bmtfdGV4dF9pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnPGNyYXp5ICJzdHVmZiI+JywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICd0b29fbWFueV9zbGFzaGVzX2luX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICdpbWFnZS9qcGVnL2ZvbycsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAge30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAjIEJ1dCB1bmtub3duIG5hbWVzIGFyZSBPSy4gIFdlIGNvdWxkIG1ha2Ugbm9uLUlBTkEgbmFtZXMgYSBkZWZlY3QsIGJ1dAorICAgICAgICAjIGJ5IG5vdCBkb2luZyBzbyB3ZSBtYWtlIG91cnNlbHZlcyBmdXR1cmUgcHJvb2YuICBUaGUgZmFjdCB0aGF0IHRoZXkKKyAgICAgICAgIyBhcmUgdW5rbm93biB3aWxsIGJlIGRldGVjdGFibGUgYnkgdGhlIGZhY3QgdGhhdCB0aGV5IGRvbid0IGFwcGVhciBpbgorICAgICAgICAjIHRoZSBtaW1lX3JlZ2lzdHJ5Li4uYW5kIHRoZSBhcHBsaWNhdGlvbiBpcyBmcmVlIHRvIGV4dGVuZCB0aGF0IGxpc3QKKyAgICAgICAgIyB0byBoYW5kbGUgdGhlbSBldmVuIGlmIHRoZSBjb3JlIGxpYnJhcnkgZG9lc24ndC4KKworICAgICAgICAndW5rbm93bl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnYmFkL25hbWVzJywKKyAgICAgICAgICAgICdiYWQvbmFtZXMnLAorICAgICAgICAgICAgJ2JhZCcsCisgICAgICAgICAgICAnbmFtZXMnKSwKKworICAgICAgICAjIFRoZSBjb250ZW50IHR5cGUgaXMgY2FzZSBpbnNlbnNpdGl2ZSwgYW5kIENGV1MgaXMgaWdub3JlZC4KKworICAgICAgICAnbWl4ZWRfY2FzZV9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnSW1BZ2UvSlBlZycsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnKSwKKworICAgICAgICAnc3BhY2VzX2luX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICcgIHRleHQgIC8gIHBsYWluICAnLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJyksCisKKyAgICAgICAgJ2Nmd3NfaW5fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJyhmb28pIHRleHQgKGJhcikvKGJheilwbGFpbihzdHVmZiknLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJyksCisKKyAgICAgICAgIyB0ZXN0IHNvbWUgcGFyYW1ldGVycyAobW9yZSB0ZXN0cyBjb3VsZCBiZSBhZGRlZCBmb3IgcGFyYW1ldGVycworICAgICAgICAjIGFzc29jaWF0ZWQgd2l0aCBvdGhlciBjb250ZW50IHR5cGVzLCBidXQgc2luY2UgcGFyYW1ldGVyIHBhcnNpbmcgaXMKKyAgICAgICAgIyBnZW5lcmljIHRoZXkgd291bGQgYmUgcmVkdW5kYW50IGZvciB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbikuCisKKyAgICAgICAgJ2NoYXJzZXRfcGFyYW0nOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXRmLTgnfSksCisKKyAgICAgICAgJ2NhcGl0YWxpemVkX2NoYXJzZXQnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0iVVMtQVNDSUkiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAnVVMtQVNDSUknfSksCisKKyAgICAgICAgJ3Vua25vd25fY2hhcnNldCc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJmT28iJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAnZk9vJ30pLAorCisgICAgICAgICdjYXBpdGFsaXplZF9jaGFyc2V0X3BhcmFtX25hbWVfYW5kX2NvbW1lbnQnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgKGludGVyamVjdGlvbikgQ2hhcnNldD0idXRmLTgiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXRmLTgnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgIyBTaG91bGQgdGhlIHBhcmFtZXRlciBuYW1lIGJlIGxvd2VyY2FzZWQgaGVyZT8KKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBDaGFyc2V0PSJ1dGYtOCInKSwKKworICAgICAgICAjIFNpbmNlIHRoaXMgaXMgcHJldHR5IG11Y2ggdGhlIHVyLW1pbWVoZWFkZXIsIHdlJ2xsIHB1dCBhbGwgdGhlIHRlc3RzCisgICAgICAgICMgdGhhdCBleGVyY2lzZSB0aGUgcGFyYW1ldGVyIHBhcnNpbmcgYW5kIGZvcm1hdHRpbmcgaGVyZS4KKyAgICAgICAgIworICAgICAgICAjIFhYWDogcXVlc3Rpb246IGlzIG1pbmltYWwgcXVvdGluZyBwcmVmZXJyZWQ/CisKKyAgICAgICAgJ3VucXVvdGVkX3BhcmFtX3ZhbHVlJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IHRpdGxlPWZvbycsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyd0aXRsZSc6ICdmb28nfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IHRpdGxlPSJmb28iJyksCisKKyAgICAgICAgJ3BhcmFtX3ZhbHVlX3dpdGhfdHNwZWNpYWxzJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IHRpdGxlPSIoYmFyKWZvbyBibHVlIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyd0aXRsZSc6ICcoYmFyKWZvbyBibHVlJ30pLAorCisgICAgICAgICdwYXJhbV93aXRoX2V4dHJhX3F1b3RlZF93aGl0ZXNwYWNlJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IHRpdGxlPSIgIGEgICAgIGxvb25nICB3YXkgXHQgaG9tZSAgICInLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsndGl0bGUnOiAnICBhICAgICBsb29uZyAgd2F5IFx0IGhvbWUgICAnfSksCisKKyAgICAgICAgJ2JhZF9wYXJhbXMnOiAoCisgICAgICAgICAgICAnYmxhcmc7IGJhejsgYm9vJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2Jheic6ICcnLCAnYm9vJzogJyd9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSozKSwKKworICAgICAgICAnc3BhY2VzX2Fyb3VuZF9wYXJhbV9lcXVhbHMnOiAoCisgICAgICAgICAgICAnTXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeSA9ICJDUElNU1NNVFBDMDZwNWYzdEciJywKKyAgICAgICAgICAgICdtdWx0aXBhcnQvbWl4ZWQnLAorICAgICAgICAgICAgJ211bHRpcGFydCcsCisgICAgICAgICAgICAnbWl4ZWQnLAorICAgICAgICAgICAgeydib3VuZGFyeSc6ICdDUElNU1NNVFBDMDZwNWYzdEcnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ011bHRpcGFydC9taXhlZDsgYm91bmRhcnk9IkNQSU1TU01UUEMwNnA1ZjN0RyInKSwKKworICAgICAgICAnc3BhY2VzX2Fyb3VuZF9zZW1pcyc6ICgKKyAgICAgICAgICAgICgnaW1hZ2UvanBlZzsgbmFtZT0id2liYmxlLkpQRyIgOyB4LW1hYy10eXBlPSI0QTUwNDU0NyIgOyAnCisgICAgICAgICAgICAgICAgJ3gtbWFjLWNyZWF0b3I9IjQ3NEI0RjRFIicpLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICd3aWJibGUuSlBHJywKKyAgICAgICAgICAgICAneC1tYWMtdHlwZSc6ICc0QTUwNDU0NycsCisgICAgICAgICAgICAgJ3gtbWFjLWNyZWF0b3InOiAnNDc0QjRGNEUnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgKCdpbWFnZS9qcGVnOyBuYW1lPSJ3aWJibGUuSlBHIjsgeC1tYWMtdHlwZT0iNEE1MDQ1NDciOyAnCisgICAgICAgICAgICAgICAgJ3gtbWFjLWNyZWF0b3I9IjQ3NEI0RjRFIicpLAorICAgICAgICAgICAgIyBYWFg6IGl0IGNvdWxkIGJlIHRoYXQgd2Ugd2lsbCBldmVudHVhbGx5IHByZWZlciB0byBmb2xkIHN0YXJ0aW5nCisgICAgICAgICAgICAjIGZyb20gdGhlIGRlY29kZWQgdmFsdWUsIGluIHdoaWNoIGNhc2UgdGhlc2Ugc3BhY2VzIGFuZCBzaW1pbGFyCisgICAgICAgICAgICAjIHNwYWNlcyBpbiBvdGhlciB0ZXN0cyB3aWxsIGJlIHdyb25nLgorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IGltYWdlL2pwZWc7IG5hbWU9IndpYmJsZS5KUEciIDsgJworICAgICAgICAgICAgICAgICd4LW1hYy10eXBlPSI0QTUwNDU0NyIgO1xuJworICAgICAgICAgICAgICcgeC1tYWMtY3JlYXRvcj0iNDc0QjRGNEUiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3NlbWlzX2luc2lkZV9xdW90ZXMnOiAoCisgICAgICAgICAgICAnaW1hZ2UvanBlZzsgbmFtZT0iSmltJmFtcDsmYW1wO0ppbGwiJywKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycsCisgICAgICAgICAgICB7J25hbWUnOiAnSmltJmFtcDsmYW1wO0ppbGwnfSksCisKKyAgICAgICAgJ3NpbmdsZV9xdW90ZXNfaW5zaWRlX3F1b3Rlcyc6ICgKKyAgICAgICAgICAgICdpbWFnZS9qcGVnOyBuYW1lPSJKaW0gXCdCb2JcJyBKaWxsIicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeyduYW1lJzogIkppbSAnQm9iJyBKaWxsIn0pLAorCisgICAgICAgICdkb3VibGVfcXVvdGVzX2luc2lkZV9xdW90ZXMnOiAoCisgICAgICAgICAgICByJ2ltYWdlL2pwZWc7IG5hbWU9IkppbSBcIkJvYlwiIEppbGwiJywKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycsCisgICAgICAgICAgICB7J25hbWUnOiAnSmltICJCb2IiIEppbGwnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgcidpbWFnZS9qcGVnOyBuYW1lPSJKaW0gXCJCb2JcIiBKaWxsIicpLAorCisgICAgICAgICMgWFhYOiBUaGlzIHRlc3Qgd29ya3MgZXhjZXB0IGZvciB0aGUgcmVmb2xkaW5nIG9mIHRoZSBoZWFkZXIuICBJJ2xsCisgICAgICAgICMgZGVhbCB3aXRoIHRoYXQgYnVnIHdoZW4gSSBkZWFsIHdpdGggdGhlIG90aGVyIGZvbGRpbmcgYnVncy4KKyAgICAgICAgIydub25fYXNjaWlfaW5fcGFyYW1zJzogKAorICAgICAgICAjICAgICgnZm9vXHhhNy9iYXI7IGJceGE3cj10d287ICcKKyAgICAgICAgIyAgICAgICAgJ2Jhej10aHJceGE3ZScuZW5jb2RlKCdsYXRpbi0xJykuZGVjb2RlKCd1cy1hc2NpaScsCisgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJykpLAorICAgICAgICAjICAgICdmb29cdUZGRkQvYmFyJywKKyAgICAgICAgIyAgICAnZm9vXHVGRkZEJywKKyAgICAgICAgIyAgICAnYmFyJywKKyAgICAgICAgIyAgICB7J2JcdUZGRkRyJzogJ3R3bycsICdiYXonOiAndGhyXHVGRkZEZSd9LAorICAgICAgICAjICAgIFtlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdF0qMywKKyAgICAgICAgIyAgICAnZm9v77+9L2JhcjsgYu+/vXI9InR3byI7IGJhej0idGhy77+9ZSInLAorICAgICAgICAjICAgICksCisKKyAgICAgICAgIyBSRkMgMjIzMSBwYXJhbWV0ZXIgdGVzdHMuCisKKyAgICAgICAgJ3JmYzIyMzFfc2VnbWVudGVkX25vcm1hbF92YWx1ZXMnOiAoCisgICAgICAgICAgICAnaW1hZ2UvanBlZzsgbmFtZSowPSJhYmMiOyBuYW1lKjE9Ii5odG1sIicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeyduYW1lJzogImFiYy5odG1sIn0sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdpbWFnZS9qcGVnOyBuYW1lPSJhYmMuaHRtbCInKSwKKworICAgICAgICAncXVvdGVzX2luc2lkZV9yZmMyMjMxX3ZhbHVlJzogKAorICAgICAgICAgICAgcidpbWFnZS9qcGVnOyBiYXIqMD0iYmF6XCJmb29iYXIiOyBiYXIqMT0iXCJiYXoiJywKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycsCisgICAgICAgICAgICB7J2Jhcic6ICdiYXoiZm9vYmFyImJheid9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICByJ2ltYWdlL2pwZWc7IGJhcj0iYmF6XCJmb29iYXJcImJheiInKSwKKworICAgICAgICAjIFhYWDogVGhpcyB0ZXN0IHdvcmtzIGV4Y2VwdCBmb3IgdGhlIHJlZm9sZGluZyBvZiB0aGUgaGVhZGVyLiAgSSdsbAorICAgICAgICAjIGRlYWwgd2l0aCB0aGF0IGJ1ZyB3aGVuIEkgZGVhbCB3aXRoIHRoZSBvdGhlciBmb2xkaW5nIGJ1Z3MuCisgICAgICAgICMnbm9uX2FzY2lpX3JmYzIyMzFfdmFsdWUnOiAoCisgICAgICAgICMgICAgKCd0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpOyAnCisgICAgICAgICMgICAgICJ0aXRsZSo9dXMtYXNjaWknZW4nVGhpcyUyMGlzJTIwIgorICAgICAgICAjICAgICAnbm90JTIwZlx4YTduJykuZW5jb2RlKCdsYXRpbi0xJykuZGVjb2RlKCd1cy1hc2NpaScsCisgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICMgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAjICAgICd0ZXh0JywKKyAgICAgICAgIyAgICAncGxhaW4nLAorICAgICAgICAjICAgIHsnY2hhcnNldCc6ICd1cy1hc2NpaScsICd0aXRsZSc6ICdUaGlzIGlzIG5vdCBmXHVGRkZEbid9LAorICAgICAgICAjICAgICBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdLAorICAgICAgICAjICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiOyB0aXRsZT0iVGhpcyBpcyBub3QgZu+/vW4iJyksCisKKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF9jaGFyc2V0JzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQqPWFuc2kteDMuNC0xOTY4XCdcJ3VzLWFzY2lpJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIicpLAorCisgICAgICAgICMgVGhpcyBmb2xsb3dzIHRoZSBSRkM6IG5vIGRvdWJsZSBxdW90ZXMgYXJvdW5kIGVuY29kZWQgdmFsdWVzLgorICAgICAgICAncmZjMjIzMV9lbmNvZGVkX25vX2RvdWJsZV9xdW90ZXMnOiAoCisgICAgICAgICAgICAoInRleHQvcGxhaW47IgorICAgICAgICAgICAgICAgICJcdG5hbWUqMCo9JydUaGlzJTIwaXMlMjA7IgorICAgICAgICAgICAgICAgICJcdG5hbWUqMSo9JTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9ImlzIGl0IG5vdC5wZGYiJyksCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ1RoaXMgaXMgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluO1x0bmFtZSowKj1cJ1wnVGhpcyUyMGlzJTIwO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMSo9JTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwO1x0bmFtZSoyPSJpcyBpdCBub3QucGRmIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICMgTWFrZSBzdXJlIHdlIGFsc28gaGFuZGxlIGl0IGlmIHRoZXJlIGFyZSBzcHVycmlvdXMgZG91YmxlIHFvdXRlcy4KKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF93aXRoX2RvdWJsZV9xdW90ZXMnOiAoCisgICAgICAgICAgICAoInRleHQvcGxhaW47IgorICAgICAgICAgICAgICAgICdcdG5hbWUqMCo9InVzLWFzY2lpXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyPSJpcyBpdCBub3QucGRmIicpLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZid9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmIicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjtcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0idXMtYXNjaWlcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7XHRuYW1lKjI9ImlzIGl0IG5vdC5wZGYiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfc2luZ2xlX3F1b3RlX2luc2lkZV9kb3VibGVfcXVvdGVzJzogKAorICAgICAgICAgICAgKCd0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpOycKKyAgICAgICAgICAgICAgICdcdHRpdGxlKjAqPSJ1cy1hc2NpaVwnZW5cJ1RoaXMlMjBpcyUyMHJlYWxseSUyMCI7JworICAgICAgICAgICAgICAgJ1x0dGl0bGUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7JworICAgICAgICAgICAgICAgJ1x0dGl0bGUqMj0iaXNuXCd0IGl0ISInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknLCAndGl0bGUnOiAiVGhpcyBpcyByZWFsbHkgKioqZnVuKioqIGlzbid0IGl0ISJ9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgKCd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSI7ICcKKyAgICAgICAgICAgICAgICd0aXRsZT0iVGhpcyBpcyByZWFsbHkgKioqZnVuKioqIGlzblwndCBpdCEiJyksCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaTtcbicKKyAgICAgICAgICAgICAnXHR0aXRsZSowKj0idXMtYXNjaWlcJ2VuXCdUaGlzJTIwaXMlMjByZWFsbHklMjAiO1xuJworICAgICAgICAgICAgICdcdHRpdGxlKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0dGl0bGUqMj0iaXNuXCd0IGl0ISJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAncmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5fdmFsdWVfd2l0aF9jaGFyc2V0X2FuZF9sYW5nJzogKAorICAgICAgICAgICAgKCdhcHBsaWNhdGlvbi94LWZvbzsnCisgICAgICAgICAgICAgICAgIlx0bmFtZSowKj1cInVzLWFzY2lpJ2VuLXVzJ0ZyYW5rJ3NcIjsgbmFtZSoxKj1cIiBEb2N1bWVudFwiIiksCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb28nLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICd4LWZvbycsCisgICAgICAgICAgICB7J25hbWUnOiAiRnJhbmsncyBEb2N1bWVudCJ9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vOyBuYW1lPSJGcmFua1wncyBEb2N1bWVudCInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vO1x0JworICAgICAgICAgICAgICAgICduYW1lKjAqPSJ1cy1hc2NpaVwnZW4tdXNcJ0ZyYW5rXCdzIjtcbicKKyAgICAgICAgICAgICAnIG5hbWUqMSo9IiBEb2N1bWVudCJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAncmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5fbm9uX2VuY29kZWRfdmFsdWUnOiAoCisgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uL3gtZm9vOycKKyAgICAgICAgICAgICAgICAiXHRuYW1lKjA9XCJ1cy1hc2NpaSdlbi11cydGcmFuaydzXCI7IG5hbWUqMT1cIiBEb2N1bWVudFwiIiksCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb28nLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICd4LWZvbycsCisgICAgICAgICAgICB7J25hbWUnOiAidXMtYXNjaWknZW4tdXMnRnJhbmsncyBEb2N1bWVudCJ9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb287IG5hbWU9InVzLWFzY2lpXCdlbi11c1wnRnJhbmtcJ3MgRG9jdW1lbnQiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbztcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowPSJ1cy1hc2NpaVwnZW4tdXNcJ0ZyYW5rXCdzIjtcbicKKyAgICAgICAgICAgICAnIG5hbWUqMT0iIERvY3VtZW50IlxuJyksCisgICAgICAgICAgICAgKSwKKworICAgICAgICAncmZjMjIzMV9ub19sYW5ndWFnZV9vcl9jaGFyc2V0JzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IE5BTUUqMCo9ZW5nbGlzaF9pc190aGVfZGVmYXVsdC5odG1sJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnZW5nbGlzaF9pc190aGVfZGVmYXVsdC5odG1sJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IE5BTUU9ImVuZ2xpc2hfaXNfdGhlX2RlZmF1bHQuaHRtbCInKSwKKworICAgICAgICAncmZjMjIzMV9lbmNvZGVkX25vX2NoYXJzZXQnOiAoCisgICAgICAgICAgICAoInRleHQvcGxhaW47IgorICAgICAgICAgICAgICAgICdcdG5hbWUqMCo9IlwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMj0iaXMgaXQucGRmIicpLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQucGRmJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgbmFtZT0iVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0LnBkZiInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMCo9IlwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjtcdG5hbWUqMj0iaXMgaXQucGRmIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICMgWFhYOiBzZWUgYmVsb3cuLi50aGUgZmlyc3QgbmFtZSBsaW5lIGhlcmUgc2hvdWxkIGJlICowIG5vdCAqMCouCisgICAgICAgICdyZmMyMjMxX3BhcnRseV9lbmNvZGVkJzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9ImlzIGl0LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0LnBkZid9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdC5wZGYiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluO1x0JworICAgICAgICAgICAgICAgICduYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7XHRuYW1lKjI9ImlzIGl0LnBkZiJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAncmZjMjIzMV9wYXJ0bHlfZW5jb2RlZF8yJzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjE9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMj0iaXMgaXQucGRmIicpLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdUaGlzIGlzIGV2ZW4gbW9yZSAlMkElMkElMkFmdW4lMkElMkElMkElMjBpcyBpdC5wZGYnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgbmFtZT0iVGhpcyBpcyBldmVuIG1vcmUgJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwaXMgaXQucGRmIicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjtcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjE9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7XHRuYW1lKjI9ImlzIGl0LnBkZiJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAncmZjMjIzMV91bmtub3duX2NoYXJzZXRfdHJlYXRlZF9hc19hc2NpaSc6ICgKKyAgICAgICAgICAgICJ0ZXh0L3BsYWluOyBuYW1lKjAqPWJvZ3VzJ3h4J2FzY2lpX2lzX3RoZV9kZWZhdWx0IiwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnYXNjaWlfaXNfdGhlX2RlZmF1bHQnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9ImFzY2lpX2lzX3RoZV9kZWZhdWx0IicpLAorCisgICAgICAgICdyZmMyMjMxX2JhZF9jaGFyYWN0ZXJfaW5fY2hhcnNldF9wYXJhbWV0ZXJfdmFsdWUnOiAoCisgICAgICAgICAgICAidGV4dC9wbGFpbjsgY2hhcnNldCo9YXNjaWknJ3V0Zi04JUUyJTgwJTlEIiwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXRmLThcdUZGRkRcdUZGRkRcdUZGRkQnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdF0sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLThcdUZGRkRcdUZGRkRcdUZGRkQiJyksCisKKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF90aGVuX3VuZW5jb2RlZF9zZWdtZW50cyc6ICgKKyAgICAgICAgICAgICgnYXBwbGljYXRpb24veC1mb287JworICAgICAgICAgICAgICAgICdcdG5hbWUqMCo9InVzLWFzY2lpXCdlbi11c1wnTXkiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjE9IiBEb2N1bWVudCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMj0iIEZvciBZb3UiJyksCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb28nLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICd4LWZvbycsCisgICAgICAgICAgICB7J25hbWUnOiAnTXkgRG9jdW1lbnQgRm9yIFlvdSd9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0iTXkgRG9jdW1lbnQgRm9yIFlvdSInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vO1x0JworICAgICAgICAgICAgICAgICduYW1lKjAqPSJ1cy1hc2NpaVwnZW4tdXNcJ015IjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjE9IiBEb2N1bWVudCI7XHRuYW1lKjI9IiBGb3IgWW91IlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICMgTXkgcmVhZGluZyBvZiB0aGUgUkZDIGlzIHRoYXQgdGhpcyBpcyBhbiBpbnZhbGlkIGhlYWRlci4gIFRoZSBSRkMKKyAgICAgICAgIyBzYXlzIHRoYXQgaWYgY2hhcnNldCBhbmQgbGFuZ3VhZ2UgaW5mb3JtYXRpb24gaXMgZ2l2ZW4sIHRoZSBmaXJzdAorICAgICAgICAjIHNlZ21lbnQgKm11c3QqIGJlIGVuY29kZWQuCisgICAgICAgICdyZmMyMjMxX3VuZW5jb2RlZF90aGVuX2VuY29kZWRfc2VnbWVudHMnOiAoCisgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uL3gtZm9vOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjA9dXMtYXNjaWlcJ2VuLXVzXCdNeTsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iIERvY3VtZW50IjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyKj0iIEZvciBZb3UiJyksCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb28nLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICd4LWZvbycsCisgICAgICAgICAgICB7J25hbWUnOiAnTXkgRG9jdW1lbnQgRm9yIFlvdSd9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vOyBuYW1lPSJNeSBEb2N1bWVudCBGb3IgWW91IicsCisgICAgICAgICAgICAoIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287XHRuYW1lKjA9dXMtYXNjaWknZW4tdXMnTXk7XHQiCisgICAgICAgICAgICAgICAgIyBYWFg6IHRoZSBuZXdsaW5lIGlzIGluIHRoZSB3cm9uZyBwbGFjZSwgY29tZSBiYWNrIGFuZCBmaXgKKyAgICAgICAgICAgICAgICAjIHRoaXMgd2hlbiB0aGUgcmVzdCBvZiB0ZXN0cyBwYXNzLgorICAgICAgICAgICAgICAgICduYW1lKjEqPSIgRG9jdW1lbnQiXG47JworICAgICAgICAgICAgICdcdG5hbWUqMio9IiBGb3IgWW91IlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICMgWFhYOiBJIHdvdWxkIHNheSB0aGlzIG9uZSBzaG91bGQgZGVmYXVsdCB0byBhc2NpaS9lbiBmb3IgdGhlCisgICAgICAgICMgImVuY29kZWQiIHNlZ21lbnQsIHNpbmNlIHRoZSB0aGUgZmlyc3Qgc2VnbWVudCBpcyBub3QgZW5jb2RlZCBhbmQgaXMKKyAgICAgICAgIyBpbiBkb3VibGUgcXVvdGVzLCBtYWtpbmcgdGhlIHZhbHVlIGEgdmFsaWQgbm9uLWVuY29kZWQgc3RyaW5nLiAgVGhlCisgICAgICAgICMgb2xkIHBhcnNlciBkZWNvZGVzIHRoaXMganVzdCBsaWtlIHRoZSBwcmV2aW91cyBjYXNlLCB3aGljaCBtYXkgYmUgdGhlCisgICAgICAgICMgYmV0dGVyIFBvc3RlbCBydWxlLCBidXQgY291bGQgZXF1YWxseSByZXN1bHQgaW4gYm9ya2luZyBoZWFkZXJzIHRoYXQKKyAgICAgICAgIyBpbnRlbnRpYWxseSBoYXZlIHF1b3RlZCBxdW90ZXMgaW4gdGhlbS4gIFdlIGNvdWxkIGdldCB0aGlzIDk4JSByaWdodAorICAgICAgICAjIGlmIHdlIHRyZWF0IGl0IGFzIGEgcXVvdGVkIHN0cmluZyAqdW5sZXNzKiBpdCBtYXRjaGVzIHRoZQorICAgICAgICAjIGNoYXJzZXQnbGFuZyd2YWx1ZSBwYXR0ZXJuIGV4YWN0bHkgKmFuZCogdGhlcmUgaXMgYXQgbGVhc3Qgb25lCisgICAgICAgICMgZW5jb2RlZCBzZWdtZW50LiAgSW1wbGVtZW50aW5nIHRoYXQgYWxnb3JpdGhtIHdpbGwgcmVxdWlyZSBzb21lCisgICAgICAgICMgcmVmYWN0b3JpbmcsIHNvIEkgaGF2ZW4ndCBkb25lIGl0ICh5ZXQpLgorCisgICAgICAgICdyZmMyMjMxX3FvdXRlZF91bmVuY29kZWRfdGhlbl9lbmNvZGVkX3NlZ21lbnRzJzogKAorICAgICAgICAgICAgKCdhcHBsaWNhdGlvbi94LWZvbzsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowPSJ1cy1hc2NpaVwnZW4tdXNcJ015IjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iIERvY3VtZW50IjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyKj0iIEZvciBZb3UiJyksCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb28nLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICd4LWZvbycsCisgICAgICAgICAgICB7J25hbWUnOiAidXMtYXNjaWknZW4tdXMnTXkgRG9jdW1lbnQgRm9yIFlvdSJ9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vOyBuYW1lPSJ1cy1hc2NpaVwnZW4tdXNcJ015IERvY3VtZW50IEZvciBZb3UiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbztcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowPSJ1cy1hc2NpaVwnZW4tdXNcJ015IjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjEqPSIgRG9jdW1lbnQiO1x0bmFtZSoyKj0iIEZvciBZb3UiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICB9CisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdENvbnRlbnRUcmFuc2ZlckVuY29kaW5nKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiBjdGVfYXNfdmFsdWUoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgIGN0ZSwKKyAgICAgICAgICAgICAgICAgICAgICphcmdzKToKKyAgICAgICAgbCA9IGxlbihhcmdzKQorICAgICAgICBkZWZlY3RzID0gIGFyZ3NbMF0gaWYgbD4wIGVsc2UgW10KKyAgICAgICAgZGVjb2RlZCA9ICBhcmdzWzFdIGlmIGw+MSBhbmQgYXJnc1sxXSBpcyBub3QgRElUVE8gZWxzZSBzb3VyY2UKKyAgICAgICAgaGVhZGVyID0gJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6JyArICcgJyBpZiBzb3VyY2UgZWxzZSAnJworICAgICAgICBmb2xkZWQgPSBhcmdzWzJdIGlmIGw+MiBlbHNlIGhlYWRlciArIHNvdXJjZSArICdcbicKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcnLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5jdGUsIGN0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoaC5kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksIGZvbGRlZCkKKworICAgIGN0ZV9wYXJhbXMgPSB7CisKKyAgICAgICAgJ1JGQ18yMTgzXzEnOiAoCisgICAgICAgICAgICAnYmFzZTY0JywKKyAgICAgICAgICAgICdiYXNlNjQnLCksCisKKyAgICAgICAgJ25vX3ZhbHVlJzogKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnN2JpdCcsCisgICAgICAgICAgICBbZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlXSwKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6XG4nLAorICAgICAgICAgICAgKSwKKworICAgICAgICAnanVua19hZnRlcl9jdGUnOiAoCisgICAgICAgICAgICAnN2JpdCBhbmQgYSBidW5jaCBtb3JlJywKKyAgICAgICAgICAgICc3Yml0JywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgfQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RDb250ZW50RGlzcG9zaXRpb24oVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGVmIGNvbnRlbnRfZGlzcF9hc192YWx1ZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF9kaXNwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphcmdzKToKKyAgICAgICAgbCA9IGxlbihhcmdzKQorICAgICAgICBwYXJtZGljdCA9IGFyZ3NbMF0gaWYgbD4wIGVsc2Uge30KKyAgICAgICAgZGVmZWN0cyA9ICBhcmdzWzFdIGlmIGw+MSBlbHNlIFtdCisgICAgICAgIGRlY29kZWQgPSAgYXJnc1syXSBpZiBsPjIgYW5kIGFyZ3NbMl0gaXMgbm90IERJVFRPIGVsc2Ugc291cmNlCisgICAgICAgIGhlYWRlciA9ICdDb250ZW50LURpc3Bvc2l0aW9uOicgKyAnICcgaWYgc291cmNlIGVsc2UgJycKKyAgICAgICAgZm9sZGVkID0gYXJnc1szXSBpZiBsPjMgZWxzZSBoZWFkZXIgKyBzb3VyY2UgKyAnXG4nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguY29udGVudF9kaXNwb3NpdGlvbiwgY29udGVudF9kaXNwb3NpdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnBhcmFtcywgcGFybWRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCBmb2xkZWQpCisKKyAgICBjb250ZW50X2Rpc3BfcGFyYW1zID0geworCisgICAgICAgICMgRXhhbXBsZXMgZnJvbSBSRkMgMjE4My4KKworICAgICAgICAnUkZDXzIxODNfMSc6ICgKKyAgICAgICAgICAgICdpbmxpbmUnLAorICAgICAgICAgICAgJ2lubGluZScsKSwKKworICAgICAgICAnUkZDXzIxODNfMic6ICgKKyAgICAgICAgICAgICgnYXR0YWNobWVudDsgZmlsZW5hbWU9Z2Vub21lLmpwZWc7JworICAgICAgICAgICAgICcgIG1vZGlmaWNhdGlvbi1kYXRlPSJXZWQsIDEyIEZlYiAxOTk3IDE2OjI5OjUxIC0wNTAwIjsnKSwKKyAgICAgICAgICAgICdhdHRhY2htZW50JywKKyAgICAgICAgICAgIHsnZmlsZW5hbWUnOiAnZ2Vub21lLmpwZWcnLAorICAgICAgICAgICAgICdtb2RpZmljYXRpb24tZGF0ZSc6ICdXZWQsIDEyIEZlYiAxOTk3IDE2OjI5OjUxIC0wNTAwJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICgnYXR0YWNobWVudDsgZmlsZW5hbWU9Imdlbm9tZS5qcGVnIjsgJworICAgICAgICAgICAgICAgICAnbW9kaWZpY2F0aW9uLWRhdGU9IldlZCwgMTIgRmViIDE5OTcgMTY6Mjk6NTEgLTA1MDAiJyksCisgICAgICAgICAgICAoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPWdlbm9tZS5qcGVnO1xuJworICAgICAgICAgICAgICcgIG1vZGlmaWNhdGlvbi1kYXRlPSJXZWQsIDEyIEZlYiAxOTk3IDE2OjI5OjUxIC0wNTAwIjtcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAnbm9fdmFsdWUnOiAoCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWVdLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnQ29udGVudC1EaXNwb3NpdGlvbjpcbicpLAorCisgICAgICAgICdpbnZhbGlkX3ZhbHVlJzogKAorICAgICAgICAgICAgJ2FiLi9rJywKKyAgICAgICAgICAgICdhYi4nLAorICAgICAgICAgICAge30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAnaW52YWxpZF92YWx1ZV93aXRoX3BhcmFtcyc6ICgKKyAgICAgICAgICAgICdhYi4vazsgZmlsZW5hbWU9ImZvbyInLAorICAgICAgICAgICAgJ2FiLicsCisgICAgICAgICAgICB7J2ZpbGVuYW1lJzogJ2Zvbyd9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICB9CisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdE1JTUVWZXJzaW9uSGVhZGVyKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiB2ZXJzaW9uX3N0cmluZ19hc19NSU1FX1ZlcnNpb24oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVjdHMpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignTUlNRS1WZXJzaW9uJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC52ZXJzaW9uLCB2ZXJzaW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubWFqb3IsIG1ham9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubWlub3IsIG1pbm9yKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIGRlZmVjdHMpCisgICAgICAgIGlmIHNvdXJjZToKKyAgICAgICAgICAgIHNvdXJjZSA9ICcgJyArIHNvdXJjZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ01JTUUtVmVyc2lvbjonICsgc291cmNlICsgJ1xuJykKKworICAgIHZlcnNpb25fc3RyaW5nX3BhcmFtcyA9IHsKKworICAgICAgICAjIEV4YW1wbGVzIGZyb20gdGhlIFJGQy4KKworICAgICAgICAnUkZDXzIwNDVfMSc6ICgKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdSRkNfMjA0NV8yJzogKAorICAgICAgICAgICAgJzEuMCAocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCknLAorICAgICAgICAgICAgJzEuMCAocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCknLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnUkZDXzIwNDVfMyc6ICgKKyAgICAgICAgICAgICcocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkgMS4wJywKKyAgICAgICAgICAgICcocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkgMS4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzQnOiAoCisgICAgICAgICAgICAnMS4ocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkwJywKKyAgICAgICAgICAgICcxLihwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KTAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAjIE90aGVyIHZhbGlkIHZhbHVlcy4KKworICAgICAgICAnMV8xJzogKAorICAgICAgICAgICAgJzEuMScsCisgICAgICAgICAgICAnMS4xJywKKyAgICAgICAgICAgICcxLjEnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJzJfMSc6ICgKKyAgICAgICAgICAgICcyLjEnLAorICAgICAgICAgICAgJzIuMScsCisgICAgICAgICAgICAnMi4xJywKKyAgICAgICAgICAgIDIsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICd3aGl0ZXNwYWNlJzogKAorICAgICAgICAgICAgJzEgLjAnLAorICAgICAgICAgICAgJzEgLjAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnbGVhZGluZ190cmFpbGluZ193aGl0ZXNwYWNlX2lnbm9yZWQnOiAoCisgICAgICAgICAgICAnICAxLjAgICcsCisgICAgICAgICAgICAnICAxLjAgICcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICMgUmVjb3ZlcmFibGUgaW52YWxpZCB2YWx1ZXMuICBXZSBjYW4gcmVjb3ZlciBoZXJlIG9ubHkgYmVjYXVzZSB3ZQorICAgICAgICAjIGFscmVhZHkgaGF2ZSBhIHZhbGlkIHZhbHVlIGJ5IHRoZSB0aW1lIHdlIGVuY291bnRlciB0aGUgZ2FyYmFnZS4KKyAgICAgICAgIyBBbnl3aGVyZSBlbHNlLCBhbmQgd2UgZG9uJ3Qga25vdyB3aGVyZSB0aGUgZ2FyYmFnZSBlbmRzLgorCisgICAgICAgICdub25fY29tbWVudF9nYXJiYWdlX2FmdGVyJzogKAorICAgICAgICAgICAgJzEuMCA8YWJjPicsCisgICAgICAgICAgICAnMS4wIDxhYmM+JywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAjIFVucmVjb3ZlcmFibGUgaW52YWxpZCB2YWx1ZXMuICBXZSAqY291bGQqIGFwcGx5IG1vcmUgaGV1cmlzdGljcyB0bworICAgICAgICAjIGdldCBzb21laW5nIG91dCBvZiB0aGUgZmlyc3QgdHdvLCBidXQgZG9pbmcgc28gaXMgbm90IHdvcnRoIHRoZQorICAgICAgICAjIGVmZm9ydC4KKworICAgICAgICAnbm9uX2NvbW1lbnRfZ2FyYmFnZV9iZWZvcmUnOiAoCisgICAgICAgICAgICAnPGFiYz4gMS4wJywKKyAgICAgICAgICAgICc8YWJjPiAxLjAnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ25vbl9jb21tZW50X2dhcmJhZ2VfaW5zaWRlJzogKAorICAgICAgICAgICAgJzEuPGFiYz4wJywKKyAgICAgICAgICAgICcxLjxhYmM+MCcsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAndHdvX3BlcmlvZHMnOiAoCisgICAgICAgICAgICAnMS4uMCcsCisgICAgICAgICAgICAnMS4uMCcsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAnMl94JzogKAorICAgICAgICAgICAgJzIueCcsCisgICAgICAgICAgICAnMi54JywKKyAgICAgICAgICAgIE5vbmUsICAjIFRoaXMgY291bGQgYmUgMiwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIG1ha2UgaXQgTm9uZS4KKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ2Zvbyc6ICgKKyAgICAgICAgICAgICdmb28nLAorICAgICAgICAgICAgJ2ZvbycsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAnbWlzc2luZyc6ICgKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlXSksCisKKyAgICAgICAgfQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RBZGRyZXNzSGVhZGVyKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGV4YW1wbGVfcGFyYW1zID0geworCisgICAgICAgICdlbXB0eSc6CisgICAgICAgICAgICAoJzw+JywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICc8PicsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgJzw+JywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnYWRkcmVzc19vbmx5JzoKKyAgICAgICAgICAgICgnemlwcHlAcGluaGVhZC5jb20nLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICd6aXBweUBwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgJ3ppcHB5QHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICAnemlwcHknLAorICAgICAgICAgICAgICdwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ25hbWVfYW5kX2FkZHJlc3MnOgorICAgICAgICAgICAgKCdaYXBocm9kIEJlYmxlYnJ1eCA8emlwcHlAcGluaGVhZC5jb20+JywKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAnWmFwaHJvZCBCZWJsZWJydXggPHppcHB5QHBpbmhlYWQuY29tPicsCisgICAgICAgICAgICAgJ1phcGhyb2QgQmVibGVicnV4JywKKyAgICAgICAgICAgICAnemlwcHlAcGluaGVhZC5jb20nLAorICAgICAgICAgICAgICd6aXBweScsCisgICAgICAgICAgICAgJ3BpbmhlYWQuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAncXVvdGVkX2xvY2FsX3BhcnQnOgorICAgICAgICAgICAgKCdaYXBocm9kIEJlYmxlYnJ1eCA8ImZvbyBiYXIiQHBpbmhlYWQuY29tPicsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgJ1phcGhyb2QgQmVibGVicnV4IDwiZm9vIGJhciJAcGluaGVhZC5jb20+JywKKyAgICAgICAgICAgICAnWmFwaHJvZCBCZWJsZWJydXgnLAorICAgICAgICAgICAgICciZm9vIGJhciJAcGluaGVhZC5jb20nLAorICAgICAgICAgICAgICdmb28gYmFyJywKKyAgICAgICAgICAgICAncGluaGVhZC5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdxdW90ZWRfcGFyZW5zX2luX25hbWUnOgorICAgICAgICAgICAgKHInIkEgXChTcGVjaWFsXCkgUGVyc29uIiA8cGVyc29uQGRvbS5haW4+JywKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAnIkEgKFNwZWNpYWwpIFBlcnNvbiIgPHBlcnNvbkBkb20uYWluPicsCisgICAgICAgICAgICAgJ0EgKFNwZWNpYWwpIFBlcnNvbicsCisgICAgICAgICAgICAgJ3BlcnNvbkBkb20uYWluJywKKyAgICAgICAgICAgICAncGVyc29uJywKKyAgICAgICAgICAgICAnZG9tLmFpbicsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ3F1b3RlZF9iYWNrc2xhc2hlc19pbl9uYW1lJzoKKyAgICAgICAgICAgIChyJyJBcnRodXIgXFxCYWNrc2xhc2hcXCBGb29iYXIiIDxwZXJzb25AZG9tLmFpbj4nLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgIHInIkFydGh1ciBcXEJhY2tzbGFzaFxcIEZvb2JhciIgPHBlcnNvbkBkb20uYWluPicsCisgICAgICAgICAgICAgcidBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJywKKyAgICAgICAgICAgICAncGVyc29uQGRvbS5haW4nLAorICAgICAgICAgICAgICdwZXJzb24nLAorICAgICAgICAgICAgICdkb20uYWluJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnbmFtZV93aXRoX2RvdCc6CisgICAgICAgICAgICAoJ0pvaG4gWC4gRG9lIDxqeGRAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAnIkpvaG4gWC4gRG9lIiA8anhkQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAgJ0pvaG4gWC4gRG9lJywKKyAgICAgICAgICAgICAnanhkQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnanhkJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdxdW90ZWRfc3RyaW5nc19pbl9sb2NhbF9wYXJ0JzoKKyAgICAgICAgICAgICgnIiJleGFtcGxlIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgICciZXhhbXBsZSBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgJyJleGFtcGxlIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnZXhhbXBsZSBleGFtcGxlJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdlc2NhcGVkX3F1b3RlZF9zdHJpbmdzX2luX2xvY2FsX3BhcnQnOgorICAgICAgICAgICAgKHInIlwiZXhhbXBsZVwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICByJyJcImV4YW1wbGVcIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgciciXCJleGFtcGxlXCIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIHInImV4YW1wbGUiIGV4YW1wbGUnLAorICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnZXNjYXBlZF9lc2NhcGVzX2luX2xvY2FsX3BhcnQnOgorICAgICAgICAgICAgKHInIlxcImV4YW1wbGVcXCIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qNSwKKyAgICAgICAgICAgICByJyJcXGV4YW1wbGVcXFxcIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICByJyJcXGV4YW1wbGVcXFxcIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICByJ1xleGFtcGxlXFwgZXhhbXBsZScsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdzcGFjZXNfaW5fdW5xdW90ZWRfbG9jYWxfcGFydF9jb2xsYXBzZWQnOgorICAgICAgICAgICAgKCdtZXJ3b2sgIHdvayAgQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAgJyJtZXJ3b2sgd29rIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgJyJtZXJ3b2sgd29rIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJ21lcndvayB3b2snLAorICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ3NwYWNlc19hcm91bmRfZG90c19pbl9sb2NhbF9wYXJ0X3JlbW92ZWQnOgorICAgICAgICAgICAgKCdtZXJ3b2suIHdvayAuICB3b2tAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICdtZXJ3b2sud29rLndva0BleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgJ21lcndvay53b2sud29rQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnbWVyd29rLndvay53b2snLAorICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgfQorCisgICAgICAgICMgWFhYOiBOZWVkIG1hbnkgbW9yZSBleGFtcGxlcywgYW5kIGluIHBhcnRpY3VsYXIgc29tZSB3aXRoIG5hbWVzIGluCisgICAgICAgICMgdHJhaWxpbmcgY29tbWVudHMsIHdoaWNoIGFyZW4ndCBjdXJyZW50bHkgaGFuZGxlZC4gIGNvbW1lbnRzIGluCisgICAgICAgICMgZ2VuZXJhbCBhcmUgbm90IGhhbmRsZWQgeWV0LgorCisgICAgZGVmIGV4YW1wbGVfYXNfYWRkcmVzcyhzZWxmLCBzb3VyY2UsIGRlZmVjdHMsIGRlY29kZWQsIGRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfc3BlYywgdXNlcm5hbWUsIGRvbWFpbiwgY29tbWVudCk6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzZW5kZXInLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoaC5kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBhID0gaC5hZGRyZXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmdyb3VwcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2FdLCBsaXN0KGguZ3JvdXBzWzBdLmFkZHJlc3NlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2FdLCBsaXN0KGguYWRkcmVzc2VzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCBhZGRyX3NwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgdXNlcm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sIGRvbWFpbikKKyAgICAgICAgIyBYWFg6IHdlIGhhdmUgbm8gY29tbWVudCBzdXBwb3J0IHlldC4KKyAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwoYS5jb21tZW50LCBjb21tZW50KQorCisgICAgZGVmIGV4YW1wbGVfYXNfZ3JvdXAoc2VsZiwgc291cmNlLCBkZWZlY3RzLCBkZWNvZGVkLCBkaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcl9zcGVjLCB1c2VybmFtZSwgZG9tYWluLCBjb21tZW50KToKKyAgICAgICAgc291cmNlID0gJ2Zvbzoge307Jy5mb3JtYXQoc291cmNlKQorICAgICAgICBnZGVjb2RlZCA9ICdmb286IHt9OycuZm9ybWF0KGRlY29kZWQpIGlmIGRlY29kZWQgZWxzZSAnZm9vOjsnCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBnZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoaC5kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzWzBdLmFkZHJlc3NlcywgaC5hZGRyZXNzZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZ3JvdXBzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5hZGRyZXNzZXMpLCAxKQorICAgICAgICBhID0gaC5hZGRyZXNzZXNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsIGRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgYWRkcl9zcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsIHVzZXJuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCBkb21haW4pCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfYWRkcmVzc19saXN0KHNlbGYpOgorICAgICAgICB2YWx1ZSA9ICgnRnJlZCA8ZGluc2RhbGVAcHl0aG9uLm9yZz4sIGZvb0BleGFtcGxlLmNvbSwgJworICAgICAgICAgICAgICAgICAgICAnIkhhcnJ5IFcuIEhhc3RpbmdzIiA8aGFzdHlAZXhhbXBsZS5jb20+JykKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZ3JvdXBzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5hZGRyZXNzZXMpLCAzKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5ncm91cHNbaV0uYWRkcmVzc2VzWzBdLCBoLmFkZHJlc3Nlc1tpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5hZGRyZXNzZXNbMF0pLCAnRnJlZCA8ZGluc2RhbGVAcHl0aG9uLm9yZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoLmFkZHJlc3Nlc1sxXSksICdmb29AZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoLmFkZHJlc3Nlc1syXSksCisgICAgICAgICAgICAnIkhhcnJ5IFcuIEhhc3RpbmdzIiA8aGFzdHlAZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmFkZHJlc3Nlc1syXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnSGFycnkgVy4gSGFzdGluZ3MnKQorCisgICAgZGVmIHRlc3RfY29tcGxleF9hZGRyZXNzX2xpc3Qoc2VsZik6CisgICAgICAgIGV4YW1wbGVzID0gbGlzdChzZWxmLmV4YW1wbGVfcGFyYW1zLnZhbHVlcygpKQorICAgICAgICBzb3VyY2UgPSAoJ2R1bW15IGxpc3Q6OywgYW5vdGhlcjogKGVtcHR5KTssJyArCisgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFswXSBmb3IgeCBpbiBleGFtcGxlc1s6NF1dKSArICcsICcgKworICAgICAgICAgICAgICAgICByJyJBIFwibGlzdFwiIjogJyArCisgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFswXSBmb3IgeCBpbiBleGFtcGxlc1s0OjZdXSkgKyAnOywnICsKKyAgICAgICAgICAgICAgICAgJywgJy5qb2luKFt4WzBdIGZvciB4IGluIGV4YW1wbGVzWzY6XV0pCisgICAgICAgICAgICApCisgICAgICAgICMgWFhYOiB0aGUgZmFjdCB0aGF0IChlbXB0eSkgZGlzYXBwZWFycyBoZXJlIGlzIGEgcG90ZW50aWFsIEFQSSBkZXNpZ24KKyAgICAgICAgIyBidWcuICBXZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBhIHdheSB0byBwcmVzZXJ2ZSBjb21tZW50cy4KKyAgICAgICAgZXhwZWN0ZWQgPSAoJ2R1bW15IGxpc3Q6OywgYW5vdGhlcjo7LCAnICsKKyAgICAgICAgICAgICAgICAgJywgJy5qb2luKFt4WzJdIGZvciB4IGluIGV4YW1wbGVzWzo0XV0pICsgJywgJyArCisgICAgICAgICAgICAgICAgIHInIkEgXCJsaXN0XCIiOiAnICsKKyAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKFt4WzJdIGZvciB4IGluIGV4YW1wbGVzWzQ6Nl1dKSArICc7LCAnICsKKyAgICAgICAgICAgICAgICAgJywgJy5qb2luKFt4WzJdIGZvciB4IGluIGV4YW1wbGVzWzY6XV0pCisgICAgICAgICAgICApCisKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguc3BsaXQoJywnKSwgZXhwZWN0ZWQuc3BsaXQoJywnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5ncm91cHMpLCA3ICsgbGVuKGV4YW1wbGVzKSAtIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5ncm91cHNbMF0uZGlzcGxheV9uYW1lLCAnZHVtbXkgbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5ncm91cHNbMV0uZGlzcGxheV9uYW1lLCAnYW5vdGhlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5ncm91cHNbNl0uZGlzcGxheV9uYW1lLCAnQSAibGlzdCInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmFkZHJlc3NlcyksIGxlbihleGFtcGxlcykpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaC5ncm91cHNbaSsyXS5kaXNwbGF5X25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoLmdyb3Vwc1tpKzJdLmFkZHJlc3Nlc1swXSksIGV4YW1wbGVzW2ldWzJdKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg3LCA3ICsgbGVuKGV4YW1wbGVzKSAtIDYpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaC5ncm91cHNbaV0uZGlzcGxheV9uYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5ncm91cHNbaV0uYWRkcmVzc2VzWzBdKSwgZXhhbXBsZXNbaS0xXVsyXSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGV4YW1wbGVzKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoLmFkZHJlc3Nlc1tpXSksIGV4YW1wbGVzW2ldWzJdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmFkZHJlc3Nlc1tpXS5hZGRyX3NwZWMsIGV4YW1wbGVzW2ldWzRdKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19yZWFkX29ubHkoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzZW5kZXInLCAnYWJjQHh5ei5jb20nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGguYWRkcmVzcyA9ICdmb28nCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzZXNfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc2VuZGVyJywgJ2FiY0B4eXouY29tJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBoLmFkZHJlc3NlcyA9ICdmb28nCisKKyAgICBkZWYgdGVzdF9ncm91cHNfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc2VuZGVyJywgJ2FiY0B4eXouY29tJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBoLmdyb3VwcyA9ICdmb28nCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzZXNfdHlwZXMoc2VsZik6CisgICAgICAgIHNvdXJjZSA9ICdtZSA8d2hvQGV4YW1wbGUuY29tPicKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5hZGRyZXNzZXMsIHR1cGxlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5hZGRyZXNzZXNbMF0sIEFkZHJlc3MpCisKKyAgICBkZWYgdGVzdF9ncm91cHNfdHlwZXMoc2VsZik6CisgICAgICAgIHNvdXJjZSA9ICdtZSA8d2hvQGV4YW1wbGUuY29tPicKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5ncm91cHMsIHR1cGxlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5ncm91cHNbMF0sIEdyb3VwKQorCisgICAgZGVmIHRlc3Rfc2V0X2Zyb21fQWRkcmVzcyhzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgQWRkcmVzcygnbWUnLCAnZm9vJywgJ2V4YW1wbGUuY29tJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgJ21lIDxmb29AZXhhbXBsZS5jb20+JykKKworICAgIGRlZiB0ZXN0X3NldF9mcm9tX0FkZHJlc3NfbGlzdChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgW0FkZHJlc3MoJ21lJywgJ2ZvbycsICdleGFtcGxlLmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcygneW91JywgJ2JhcicsICdleGFtcGxlLmNvbScpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCAnbWUgPGZvb0BleGFtcGxlLmNvbT4sIHlvdSA8YmFyQGV4YW1wbGUuY29tPicpCisKKyAgICBkZWYgdGVzdF9zZXRfZnJvbV9BZGRyZXNzX2FuZF9Hcm91cF9saXN0KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBbQWRkcmVzcygnbWUnLCAnZm9vJywgJ2V4YW1wbGUuY29tJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCgnYmluZycsIFtBZGRyZXNzKCdmaXonLCAneicsICdiLmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcygnemlmJywgJ2YnLCAnYy5jb20nKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcygneW91JywgJ2JhcicsICdleGFtcGxlLmNvbScpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCAnbWUgPGZvb0BleGFtcGxlLmNvbT4sIGJpbmc6IGZpeiA8ekBiLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnemlmIDxmQGMuY29tPjssIHlvdSA8YmFyQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9NDApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0bzogbWUgPGZvb0BleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnIGJpbmc6IGZpeiA8ekBiLmNvbT4sIHppZiA8ZkBjLmNvbT47LFxuJworICAgICAgICAgICAgICAgICAgICAgICAgJyB5b3UgPGJhckBleGFtcGxlLmNvbT5cbicpCisKKyAgICBkZWYgdGVzdF9zZXRfZnJvbV9Hcm91cF9saXN0KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBbR3JvdXAoJ2JpbmcnLCBbQWRkcmVzcygnZml6JywgJ3onLCAnYi5jb20nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ3ppZicsICdmJywgJ2MuY29tJyldKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgJ2Jpbmc6IGZpeiA8ekBiLmNvbT4sIHppZiA8ZkBjLmNvbT47JykKKworCitjbGFzcyBUZXN0QWRkcmVzc0FuZEdyb3VwKFRlc3RFbWFpbEJhc2UpOgorCisgICAgZGVmIF90ZXN0X2F0dHJfcm8oc2VsZiwgb2JqLCBhdHRyKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBzZXRhdHRyKG9iaiwgYXR0ciwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2Rpc3BsYXlfbmFtZV9ybyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdHRyX3JvKEFkZHJlc3MoJ2ZvbycsICdiYXInLCAnYmF6JyksICdkaXNwbGF5X25hbWUnKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc191c2VybmFtZV9ybyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdHRyX3JvKEFkZHJlc3MoJ2ZvbycsICdiYXInLCAnYmF6JyksICd1c2VybmFtZScpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2RvbWFpbl9ybyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdHRyX3JvKEFkZHJlc3MoJ2ZvbycsICdiYXInLCAnYmF6JyksICdkb21haW4nKQorCisgICAgZGVmIHRlc3RfZ3JvdXBfZGlzcGxheV9uYW1lX3JvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oR3JvdXAoJ2ZvbycpLCAnZGlzcGxheV9uYW1lJykKKworICAgIGRlZiB0ZXN0X2dyb3VwX2FkZHJlc3Nlc19ybyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdHRyX3JvKEdyb3VwKCdmb28nKSwgJ2FkZHJlc3NlcycpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2Zyb21fdXNlcm5hbWVfZG9tYWluKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnZm9vJywgJ2JhcicsICdiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2JheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICdiYXJAYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICdmb28gPGJhckBiYXo+JykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZnJvbV9hZGRyX3NwZWMoc2VsZik6CisgICAgICAgIGEgPSBBZGRyZXNzKCdmb28nLCBhZGRyX3NwZWM9J2JhckBiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2JheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICdiYXJAYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICdmb28gPGJhckBiYXo+JykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3Nfd2l0aF9ub19kaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGEgPSBBZGRyZXNzKGFkZHJfc3BlYz0nYmFyQGJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJ2JhckBiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ2JhckBiYXonKQorCisgICAgZGVmIHRlc3RfbnVsbF9hZGRyZXNzKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJzw+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICc8PicpCisKKyAgICBkZWYgdGVzdF9kb21haW5fb25seShzZWxmKToKKyAgICAgICAgIyBUaGlzIGlzbid0IHJlYWxseSBhIHZhbGlkIGFkZHJlc3MuCisgICAgICAgIGEgPSBBZGRyZXNzKGRvbWFpbj0nYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICdAYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnQGJ1enonKQorCisgICAgZGVmIHRlc3RfdXNlcm5hbWVfb25seShzZWxmKToKKyAgICAgICAgIyBUaGlzIGlzbid0IHJlYWxseSBhIHZhbGlkIGFkZHJlc3MuCisgICAgICAgIGEgPSBBZGRyZXNzKHVzZXJuYW1lPSdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJ2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ2J1enonKQorCisgICAgZGVmIHRlc3RfZGlzcGxheV9uYW1lX29ubHkoc2VsZik6CisgICAgICAgIGEgPSBBZGRyZXNzKCdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJzw+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICdidXp6IDw+JykKKworICAgIGRlZiB0ZXN0X3F1b3Rpbmcoc2VsZik6CisgICAgICAgICMgSWRlYWxseSB3ZSdkIGNoZWNrIGV2ZXJ5IHNwZWNpYWwgaW5kaXZpZHVhbGx5LCBidXQgSSdtIG5vdCB1cCBmb3IKKyAgICAgICAgIyB3cml0aW5nIHRoYXQgbWFueSB0ZXN0cy4KKyAgICAgICAgYSA9IEFkZHJlc3MoJ1NhcmEgSi4nLCAnYmFkIG5hbWUnLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnU2FyYSBKLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ2JhZCBuYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJyJiYWQgbmFtZSJAZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJyJTYXJhIEouIiA8ImJhZCBuYW1lIkBleGFtcGxlLmNvbT4nKQorCisgICAgZGVmIHRlc3RfaWw4bihzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoJ8OJcmljJywgJ3dvaycsICdleMOgbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnw4lyaWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICd3b2snKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnZXjDoG1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJ3dva0BleMOgbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ8OJcmljIDx3b2tAZXjDoG1wbGUuY29tPicpCisKKyAgICAjIFhYWDogdGhlcmUgaXMgYW4gQVBJIGRlc2lnbiBpc3N1ZSB0aGF0IG5lZWRzIHRvIGJlIHNvbHZlZCBoZXJlLgorICAgICNkZWYgdGVzdF9ub25fYXNjaWlfdXNlcm5hbWVfcmFpc2VzKHNlbGYpOgorICAgICMgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAjICAgICAgICBBZGRyZXNzKCdmb28nLCAnd8WRaycsICdleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9ub25fYXNjaWlfdXNlcm5hbWVfaW5fYWRkcl9zcGVjX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIGFkZHJfc3BlYz0nd8WRa0BleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2FkZHJfc3BlY19hbmRfdXNlcm5hbWVfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCB1c2VybmFtZT0nYmluZycsIGFkZHJfc3BlYz0nYmFyQGJheicpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2FkZHJfc3BlY19hbmRfZG9tYWluX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgZG9tYWluPSdiaW5nJywgYWRkcl9zcGVjPSdiYXJAYmF6JykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfYWRkcl9zcGVjX2FuZF91c2VybmFtZV9hbmRfZG9tYWluX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgdXNlcm5hbWU9J2JvbmcnLCBkb21haW49J2JpbmcnLCBhZGRyX3NwZWM9J2JhckBiYXonKQorCisgICAgZGVmIHRlc3Rfc3BhY2VfaW5fYWRkcl9zcGVjX3VzZXJuYW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIGFkZHJfc3BlYz0iYmFkIG5hbWVAZXhhbXBsZS5jb20iKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJfc2VwY19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCBhZGRyX3NwZWM9Im5hbWVAZXhbXWFtcGxlLmNvbSIpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9ncm91cChzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuZGlzcGxheV9uYW1lLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICdmb286OycpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9ncm91cF9saXN0KHNlbGYpOgorICAgICAgICBnID0gR3JvdXAoJ2ZvbycsIGFkZHJlc3Nlcz1bXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5hZGRyZXNzZXMsIHR1cGxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnZm9vOjsnKQorCisgICAgZGVmIHRlc3RfbnVsbF9ncm91cChzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZy5kaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5hZGRyZXNzZXMsIHR1cGxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnTm9uZTo7JykKKworICAgIGRlZiB0ZXN0X2dyb3VwX3dpdGhfYWRkcmVzc2VzKHNlbGYpOgorICAgICAgICBhZGRycyA9IFtBZGRyZXNzKCdiJywgJ2InLCAnYycpLCBBZGRyZXNzKCdhJywgJ2InLCdjJyldCisgICAgICAgIGcgPSBHcm91cCgnZm9vJywgYWRkcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5kaXNwbGF5X25hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZShhZGRycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnZm9vOiBiIDxiQGM+LCBhIDxiQGM+OycpCisKKyAgICBkZWYgdGVzdF9ncm91cF93aXRoX2FkZHJlc3Nlc19ub19kaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGFkZHJzID0gW0FkZHJlc3MoJ2InLCAnYicsICdjJyksIEFkZHJlc3MoJ2EnLCAnYicsJ2MnKV0KKyAgICAgICAgZyA9IEdyb3VwKGFkZHJlc3Nlcz1hZGRycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZy5kaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5hZGRyZXNzZXMsIHR1cGxlKGFkZHJzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICdOb25lOiBiIDxiQGM+LCBhIDxiQGM+OycpCisKKyAgICBkZWYgdGVzdF9ncm91cF93aXRoX29uZV9hZGRyZXNzX25vX2Rpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgYWRkcnMgPSBbQWRkcmVzcygnYicsICdiJywgJ2MnKV0KKyAgICAgICAgZyA9IEdyb3VwKGFkZHJlc3Nlcz1hZGRycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZy5kaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5hZGRyZXNzZXMsIHR1cGxlKGFkZHJzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICdiIDxiQGM+JykKKworICAgIGRlZiB0ZXN0X2Rpc3BsYXlfbmFtZV9xdW90aW5nKHNlbGYpOgorICAgICAgICBnID0gR3JvdXAoJ2Zvby5iYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuZGlzcGxheV9uYW1lLCAnZm9vLmJhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5hZGRyZXNzZXMsIHR1cGxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnImZvby5iYXIiOjsnKQorCisgICAgZGVmIHRlc3RfZGlzcGxheV9uYW1lX2JsYW5rc19ub3RfcXVvdGVkKHNlbGYpOgorICAgICAgICBnID0gR3JvdXAoJ2ZvbyBiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuZGlzcGxheV9uYW1lLCAnZm9vIGJhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5hZGRyZXNzZXMsIHR1cGxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnZm9vIGJhcjo7JykKKworICAgIGRlZiB0ZXN0X3NldF9tZXNzYWdlX2hlYWRlcl9mcm9tX2FkZHJlc3Moc2VsZik6CisgICAgICAgIGEgPSBBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgbSA9IE1lc3NhZ2UocG9saWN5PXBvbGljeS5kZWZhdWx0KQorICAgICAgICBtWydUbyddID0gYQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ3RvJ10sICdmb28gPGJhckBleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ3RvJ10uYWRkcmVzc2VzLCAoYSwpKQorCisgICAgZGVmIHRlc3Rfc2V0X21lc3NhZ2VfaGVhZGVyX2Zyb21fZ3JvdXAoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgnZm9vIGJhcicpCisgICAgICAgIG0gPSBNZXNzYWdlKHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKKyAgICAgICAgbVsnVG8nXSA9IGcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWyd0byddLCAnZm9vIGJhcjo7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWyd0byddLmFkZHJlc3NlcywgZy5hZGRyZXNzZXMpCisKKworY2xhc3MgVGVzdEZvbGRpbmcoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGVmIHRlc3Rfc2hvcnRfdW5zdHJ1Y3R1cmVkKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1YmplY3Q6IHRoaXMgaXMgYSB0ZXN0XG4nKQorCisgICAgZGVmIHRlc3RfbG9uZ191bnN0cnVjdHVyZWQoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ1RoaXMgaXMgYSBsb25nIGhlYWRlciAnCisgICAgICAgICAgICAnbGluZSB0aGF0IHdpbGwgbmVlZCB0byBiZSBmb2xkZWQgaW50byB0d28gbGluZXMgJworICAgICAgICAgICAgJ2FuZCB3aWxsIGRlbW9uc3RyYXRlIGJhc2ljIGZvbGRpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1N1YmplY3Q6IFRoaXMgaXMgYSBsb25nIGhlYWRlciBsaW5lIHRoYXQgd2lsbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdG8gYmUgZm9sZGVkIGludG8gdHdvIGxpbmVzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnIGFuZCB3aWxsIGRlbW9uc3RyYXRlIGJhc2ljIGZvbGRpbmdcbicpCisKKyAgICBkZWYgdGVzdF91bnN0cnVjdHVyZWRfc2hvcnRfbWF4X2xpbmVfbGVuZ3RoKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICd0aGlzIGlzIGEgc2hvcnQgaGVhZGVyICcKKyAgICAgICAgICAgICd0aGF0IHdpbGwgYmUgZm9sZGVkIGFueXdheScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD0yMCkpLAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgICAgICBTdWJqZWN0OiB0aGlzIGlzIGEKKyAgICAgICAgICAgICAgICAgc2hvcnQgaGVhZGVyIHRoYXQKKyAgICAgICAgICAgICAgICAgd2lsbCBiZSBmb2xkZWQKKyAgICAgICAgICAgICAgICAgYW55d2F5CisgICAgICAgICAgICAgICAgIiIiKSkKKworICAgIGRlZiB0ZXN0X2ZvbGRfdW5zdHJ1Y3R1cmVkX3NpbmdsZV93b3JkKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwgJ1N1YmplY3Q6IHRlc3RcbicpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF9zaG9ydChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGVzdCB0ZXN0IHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1N1YmplY3Q6IHRlc3QgdGVzdCB0ZXN0XG4nKQorCisgICAgZGVmIHRlc3RfZm9sZF91bnN0cnVjdHVyZWRfd2l0aF9vdmVybG9uZ193b3JkKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICd0aGlzaXNhdmVyeWxvbmdsaW5lY29uc2lzdGluZ29mYScKKyAgICAgICAgICAgICdzaW5nbGV3b3JkdGhhdHdvbnRmaXQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MjApKSwKKyAgICAgICAgICAgICdTdWJqZWN0OiB0aGlzaXNhdmVyeWxvbmdsaW5lY29uc2lzdGluZ29mYXNpbmdsZXdvcmR0aGF0d29udGZpdFxuJykKKworICAgIGRlZiB0ZXN0X2ZvbGRfdW5zdHJ1Y3R1cmVkX3dpdGhfdHdvX292ZXJsb25nX3dvcmRzKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICd0aGlzaXNhdmVyeWxvbmdsaW5lY29uc2lzdGluZ29mYScKKyAgICAgICAgICAgICdzaW5nbGV3b3JkdGhhdHdvbnRmaXQgcGx1c2Fub3RoZXJ2ZXJ5bG9uZ3dvcmR0aGF0d29udGZpdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD0yMCkpLAorICAgICAgICAgICAgJ1N1YmplY3Q6IHRoaXNpc2F2ZXJ5bG9uZ2xpbmVjb25zaXN0aW5nb2Zhc2luZ2xld29yZHRoYXR3b250Zml0XG4nCisgICAgICAgICAgICAgICAgJyBwbHVzYW5vdGhlcnZlcnlsb25nd29yZHRoYXR3b250Zml0XG4nKQorCisgICAgZGVmIHRlc3RfZm9sZF91bnN0cnVjdHVyZWRfd2l0aF9zbGlnaHRseV9sb25nX3dvcmQoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3RoaXNsb25nd29yZGlzbGVzc3RoYW5tYXhsaW5lbGVuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTM1KSksCisgICAgICAgICAgICAnU3ViamVjdDpcbiB0aGlzbG9uZ3dvcmRpc2xlc3N0aGFubWF4bGluZWxlblxuJykKKworICAgIGRlZiB0ZXN0X2ZvbGRfdW5zdHJ1Y3R1cmVkX3dpdGhfY29tbWFzKHNlbGYpOgorICAgICAgICAjIFRoZSBvbGQgd3JhcHBlciB3b3VsZCBmb2xkIHRoaXMgYXQgdGhlIGNvbW1hcy4KKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAiVGhpcyBoZWFkZXIgaXMgaW50ZW5kZWQgdG8gIgorICAgICAgICAgICAgImRlbW9uc3RyYXRlLCBpbiBhIGZhaXJseSBzdXNpbmN0IHdheSwgdGhhdCB3ZSBub3cgZG8gIgorICAgICAgICAgICAgIm5vdCBnaXZlIGEgLCBzcGVjaWFsIHRyZWF0bWVudCBpbiB1bnN0cnVjdHVyZWQgaGVhZGVycy4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9NjApKSwKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICAgICAgU3ViamVjdDogVGhpcyBoZWFkZXIgaXMgaW50ZW5kZWQgdG8gZGVtb25zdHJhdGUsIGluIGEgZmFpcmx5CisgICAgICAgICAgICAgICAgIHN1c2luY3Qgd2F5LCB0aGF0IHdlIG5vdyBkbyBub3QgZ2l2ZSBhICwgc3BlY2lhbCB0cmVhdG1lbnQKKyAgICAgICAgICAgICAgICAgaW4gdW5zdHJ1Y3R1cmVkIGhlYWRlcnMuCisgICAgICAgICAgICAgICAgICIiIikpCisKKyAgICBkZWYgdGVzdF9mb2xkX2FkZHJlc3NfbGlzdChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1RvJywgJyJUaGVvZG9yZSBILiBQZXJmZWN0IiA8eWVzQG1hbi5jb20+LCAnCisgICAgICAgICAgICAnIk15IGFkZHJlc3MgaXMgdmVyeSBsb25nIGJlY2F1c2UgbXkgbmFtZSBpcyBsb25nIiA8Zm9vQGJhci5jb20+LCAnCisgICAgICAgICAgICAnIk9ubHkgQS4gRnJpZW5kIiA8bm9AeWVzLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86ICJUaGVvZG9yZSBILiBQZXJmZWN0IiA8eWVzQG1hbi5jb20+LAorICAgICAgICAgICAgICJNeSBhZGRyZXNzIGlzIHZlcnkgbG9uZyBiZWNhdXNlIG15IG5hbWUgaXMgbG9uZyIgPGZvb0BiYXIuY29tPiwKKyAgICAgICAgICAgICAiT25seSBBLiBGcmllbmQiIDxub0B5ZXMuY29tPgorICAgICAgICAgICAgICIiIikpCisKKyAgICBkZWYgdGVzdF9mb2xkX2RhdGVfaGVhZGVyKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignRGF0ZScsICdTYXQsIDIgRmViIDIwMDIgMTc6MDA6MDYgLTA4MDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0RhdGU6IFNhdCwgMDIgRmViIDIwMDIgMTc6MDA6MDYgLTA4MDBcbicpCisKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2MzZjgwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKQEAgLTAsMCArMSwxOCBAQAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCisKKworY2xhc3MgVGVzdChUZXN0RW1haWxCYXNlKToKKworICAgIHBvbGljeSA9IHBvbGljeS5kZWZhdWx0CisKKyAgICBkZWYgdGVzdF9lcnJvcl9vbl9zZXRpdGVtX2lmX21heF9jb3VudF9leGNlZWRlZChzZWxmKToKKyAgICAgICAgbSA9IHNlbGYuX3N0cl9tc2coIiIpCisgICAgICAgIG1bJ1RvJ10gPSAnYWJjQHh5eicKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIG1bJ1RvJ10gPSAneHl6QGFiYycKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FiZDExYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkKQEAgLTAsMCArMSwzNiBAQAoraW1wb3J0IGlvCitpbXBvcnQgZW1haWwKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQorCisKK2NsYXNzIFRlc3RDdXN0b21NZXNzYWdlKFRlc3RFbWFpbEJhc2UpOgorCisgICAgY2xhc3MgTXlNZXNzYWdlKE1lc3NhZ2UpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9saWN5KToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfcG9saWN5ID0gcG9saWN5CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKworICAgIE15UG9saWN5ID0gVGVzdEVtYWlsQmFzZS5wb2xpY3kuY2xvbmUobGluZXNlcD0nYm9vJykKKworICAgIGRlZiB0ZXN0X2N1c3RvbV9tZXNzYWdlX2dldHNfcG9saWN5X2lmX3Bvc3NpYmxlX2Zyb21fc3RyaW5nKHNlbGYpOgorICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKCJTdWJqZWN0OiBib2d1c1xuXG5tc2dcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5NeU1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZywgc2VsZi5NeU1lc3NhZ2UpKQorICAgICAgICBzZWxmLmFzc2VydElzKG1zZy5jaGVja19wb2xpY3ksIHNlbGYuTXlQb2xpY3kpCisKKyAgICBkZWYgdGVzdF9jdXN0b21fbWVzc2FnZV9nZXRzX3BvbGljeV9pZl9wb3NzaWJsZV9mcm9tX2ZpbGUoc2VsZik6CisgICAgICAgIHNvdXJjZV9maWxlID0gaW8uU3RyaW5nSU8oIlN1YmplY3Q6IGJvZ3VzXG5cbm1zZ1xuIikKKyAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoc291cmNlX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTXlNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5NeVBvbGljeSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLCBzZWxmLk15TWVzc2FnZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobXNnLmNoZWNrX3BvbGljeSwgc2VsZi5NeVBvbGljeSkKKworICAgICMgWFhYIGFkZCB0ZXN0cyBmb3Igb3RoZXIgZnVuY3Rpb25zIHRoYXQgdGFrZSBNZXNzYWdlIGFyZy4KKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BpY2tsZWFibGUucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGlja2xlYWJsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWE4ZDI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BpY2tsZWFibGUucHkKQEAgLTAsMCArMSw3NCBAQAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCBjb3B5CitpbXBvcnQgcGlja2xlCitpbXBvcnQgZW1haWwKK2ltcG9ydCBlbWFpbC5tZXNzYWdlCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEhlYWRlclJlZ2lzdHJ5Citmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZSwgcGFyYW1ldGVyaXplCisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdFBpY2tsZUNvcHlIZWFkZXIoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBoZWFkZXJfZmFjdG9yeSA9IEhlYWRlclJlZ2lzdHJ5KCkKKworICAgIHVuc3RydWN0dXJlZCA9IGhlYWRlcl9mYWN0b3J5KCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKworICAgIGhlYWRlcl9wYXJhbXMgPSB7CisgICAgICAgICdzdWJqZWN0JzogKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JyksCisgICAgICAgICdmcm9tJzogICAgKCdmcm9tJywgICAgJ2Zyb2RvQG1vcmRvci5uZXQnKSwKKyAgICAgICAgJ3RvJzogICAgICAoJ3RvJywgICAgICAnYToga0BiLmNvbSwgeUB6LmNvbTssIGpAZi5jb20nKSwKKyAgICAgICAgJ2RhdGUnOiAgICAoJ2RhdGUnLCAgICAnVHVlLCAyOSBNYXkgMjAxMiAwOToyNDoyNiArMTAwMCcpLAorICAgICAgICB9CisKKyAgICBkZWYgaGVhZGVyX2FzX2RlZXBjb3B5KHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgaGVhZGVyID0gc2VsZi5oZWFkZXJfZmFjdG9yeShuYW1lLCB2YWx1ZSkKKyAgICAgICAgaCA9IGNvcHkuZGVlcGNvcHkoaGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoKSwgc3RyKGhlYWRlcikpCisKKyAgICBkZWYgaGVhZGVyX2FzX3BpY2tsZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGhlYWRlciA9IHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgdmFsdWUpCisgICAgICAgIHAgPSBwaWNrbGUuZHVtcHMoaGVhZGVyKQorICAgICAgICBoID0gcGlja2xlLmxvYWRzKHApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGgpLCBzdHIoaGVhZGVyKSkKKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0UGlja2xlQ29weU1lc3NhZ2UoVGVzdEVtYWlsQmFzZSk6CisKKyAgICAjIE1lc3NhZ2Ugb2JqZWN0cyBhcmUgYSBzZXF1ZW5jZSwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZW0gYSBvbmUtdHVwbGUgaW4KKyAgICAjIG1zZ19wYXJhbXMgc28gdGhleSBnZXQgcGFzc2VkIHRvIHRoZSBwYXJhbWV0ZXJpemVkIHRlc3QgbWV0aG9kIGFzIGEKKyAgICAjIHNpbmdsZSBhcmd1bWVudCBpbnN0ZWFkIG9mIGFzIGEgbGlzdCBvZiBoZWFkZXJzLgorICAgIG1zZ19wYXJhbXMgPSB7fQorCisgICAgIyBOb3RlOiB0aGVyZSB3aWxsIGJlIG5vIGN1c3RvbSBoZWFkZXIgb2JqZWN0cyBpbiB0aGUgcGFyc2VkIG1lc3NhZ2UuCisgICAgbXNnX3BhcmFtc1sncGFyc2VkJ10gPSAoZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyh0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICBEYXRlOiBUdWUsIDI5IE1heSAyMDEyIDA5OjI0OjI2ICsxMDAwCisgICAgICAgIEZyb206IGZyb2RvQG1vcmRvci5uZXQKKyAgICAgICAgVG86IGJpbGJvQHVuZGVyaGlsbC5vcmcKKyAgICAgICAgU3ViamVjdDogaGVscAorCisgICAgICAgIEkgdGhpbmsgSSBmb3Jnb3QgdGhlIHJpbmcuCisgICAgICAgICIiIiksIHBvbGljeT1wb2xpY3kuZGVmYXVsdCksKQorCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddID0gKGVtYWlsLm1lc3NhZ2UuTWVzc2FnZShwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCkKKyAgICBtc2dfcGFyYW1zWydjcmVhdGVkJ11bMF1bJ0RhdGUnXSA9ICdUdWUsIDI5IE1heSAyMDEyIDA5OjI0OjI2ICsxMDAwJworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXVswXVsnRnJvbSddID0gJ2Zyb2RvQG1vcmRvci5uZXQnCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddWzBdWydUbyddID0gJ2JpbGJvQHVuZGVyaGlsbC5vcmcnCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddWzBdWydTdWJqZWN0J10gPSAnaGVscCcKKyAgICBtc2dfcGFyYW1zWydjcmVhdGVkJ11bMF0uc2V0X3BheWxvYWQoJ0kgdGhpbmsgSSBmb3Jnb3QgdGhlIHJpbmcuJykKKworICAgIGRlZiBtc2dfYXNfZGVlcGNvcHkoc2VsZiwgbXNnKToKKyAgICAgICAgbXNnMiA9IGNvcHkuZGVlcGNvcHkobXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZzIuYXNfc3RyaW5nKCksIG1zZy5hc19zdHJpbmcoKSkKKworICAgIGRlZiBtc2dfYXNfcGlja2xlKHNlbGYsIG1zZyk6CisgICAgICAgIHAgPSBwaWNrbGUuZHVtcHMobXNnKQorICAgICAgICBtc2cyID0gcGlja2xlLmxvYWRzKHApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnMi5hc19zdHJpbmcoKSwgbXNnLmFzX3N0cmluZygpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODNiZDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQpAQCAtMCwwICsxLDMyMiBAQAoraW1wb3J0IGlvCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgZW1haWwucG9saWN5CitpbXBvcnQgZW1haWwucGFyc2VyCitpbXBvcnQgZW1haWwuZ2VuZXJhdG9yCitmcm9tIGVtYWlsIGltcG9ydCBoZWFkZXJyZWdpc3RyeQorCitkZWYgbWFrZV9kZWZhdWx0cyhiYXNlX2RlZmF1bHRzLCBkaWZmZXJlbmNlcyk6CisgICAgZGVmYXVsdHMgPSBiYXNlX2RlZmF1bHRzLmNvcHkoKQorICAgIGRlZmF1bHRzLnVwZGF0ZShkaWZmZXJlbmNlcykKKyAgICByZXR1cm4gZGVmYXVsdHMKKworY2xhc3MgUG9saWN5QVBJVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbG9uZ01lc3NhZ2UgPSBUcnVlCisKKyAgICAjIEJhc2UgZGVmYXVsdCB2YWx1ZXMuCisgICAgY29tcGF0MzJfZGVmYXVsdHMgPSB7CisgICAgICAgICdtYXhfbGluZV9sZW5ndGgnOiAgICAgICAgICA3OCwKKyAgICAgICAgJ2xpbmVzZXAnOiAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICdjdGVfdHlwZSc6ICAgICAgICAgICAgICAgICAnOGJpdCcsCisgICAgICAgICdyYWlzZV9vbl9kZWZlY3QnOiAgICAgICAgICBGYWxzZSwKKyAgICAgICAgfQorICAgICMgVGhlc2UgZGVmYXVsdCB2YWx1ZXMgYXJlIHRoZSBvbmVzIHNldCBvbiBlbWFpbC5wb2xpY3kuZGVmYXVsdC4KKyAgICAjIElmIGFueSBvZiB0aGVzZSBkZWZhdWx0cyBjaGFuZ2UsIHRoZSBkb2NzIG11c3QgYmUgdXBkYXRlZC4KKyAgICBwb2xpY3lfZGVmYXVsdHMgPSBjb21wYXQzMl9kZWZhdWx0cy5jb3B5KCkKKyAgICBwb2xpY3lfZGVmYXVsdHMudXBkYXRlKHsKKyAgICAgICAgJ3JhaXNlX29uX2RlZmVjdCc6ICAgICAgICAgIEZhbHNlLAorICAgICAgICAnaGVhZGVyX2ZhY3RvcnknOiAgICAgICAgICAgZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5LAorICAgICAgICAncmVmb2xkX3NvdXJjZSc6ICAgICAgICAgICAgJ2xvbmcnLAorICAgICAgICB9KQorCisgICAgIyBGb3IgZWFjaCBwb2xpY3kgdW5kZXIgdGVzdCwgd2UgZ2l2ZSBoZXJlIHdoYXQgd2UgZXhwZWN0IHRoZSBkZWZhdWx0cyB0bworICAgICMgYmUgZm9yIHRoYXQgcG9saWN5LiAgVGhlIHNlY29uZCBhcmd1bWVudCB0byBtYWtlIGRlZmF1bHRzIGlzIHRoZQorICAgICMgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBiYXNlIGRlZmF1bHRzIGFuZCB0aGF0IGZvciB0aGUgcGFydGljdWxhciBwb2xpY3kuCisgICAgbmV3X3BvbGljeSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgcG9saWNpZXMgPSB7CisgICAgICAgIGVtYWlsLnBvbGljeS5jb21wYXQzMjogbWFrZV9kZWZhdWx0cyhjb21wYXQzMl9kZWZhdWx0cywge30pLAorICAgICAgICBlbWFpbC5wb2xpY3kuZGVmYXVsdDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsIHt9KSwKKyAgICAgICAgZW1haWwucG9saWN5LlNNVFA6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2xpbmVzZXAnOiAnXHJcbid9KSwKKyAgICAgICAgZW1haWwucG9saWN5LkhUVFA6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2xpbmVzZXAnOiAnXHJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xpbmVfbGVuZ3RoJzogTm9uZX0pLAorICAgICAgICBlbWFpbC5wb2xpY3kuc3RyaWN0OiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J3JhaXNlX29uX2RlZmVjdCc6IFRydWV9KSwKKyAgICAgICAgbmV3X3BvbGljeTogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsIHt9KSwKKyAgICAgICAgfQorICAgICMgQ3JlYXRpbmcgYSBuZXcgcG9saWN5IGNyZWF0ZXMgYSBuZXcgaGVhZGVyIGZhY3RvcnkuICBUaGVyZSBpcyBhIHRlc3QKKyAgICAjIGxhdGVyIHRoYXQgcHJvdmVzIHRoaXMuCisgICAgcG9saWNpZXNbbmV3X3BvbGljeV1bJ2hlYWRlcl9mYWN0b3J5J10gPSBuZXdfcG9saWN5LmhlYWRlcl9mYWN0b3J5CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgZm9yIHBvbGljeSwgZXhwZWN0ZWQgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgorICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBvbGljeSwgYXR0ciksIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImNoYW5nZSB7fSBkb2NzL2RvY3N0cmluZ3MgaWYgZGVmYXVsdHMgaGF2ZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2VkIikuZm9ybWF0KHBvbGljeSkpCisKKyAgICBkZWYgdGVzdF9hbGxfYXR0cmlidXRlc19jb3ZlcmVkKHNlbGYpOgorICAgICAgICBmb3IgcG9saWN5LCBleHBlY3RlZCBpbiBzZWxmLnBvbGljaWVzLml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgYXR0ciBpbiBkaXIocG9saWN5KToKKyAgICAgICAgICAgICAgICBpZiAoYXR0ci5zdGFydHN3aXRoKCdfJykgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZ2V0YXR0cihlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3ksIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuRnVuY3Rpb25UeXBlKSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie30gaXMgbm90IGZ1bGx5IHRlc3RlZCIuZm9ybWF0KGF0dHIpKQorCisgICAgZGVmIHRlc3RfYWJjKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBlbWFpbC5wb2xpY3kuUG9saWN5KCkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgYWJzdHJhY3RfbWV0aG9kcyA9ICgnZm9sZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbGRfYmluYXJ5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVhZGVyX2ZldGNoX3BhcnNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVhZGVyX3NvdXJjZV9wYXJzZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlcl9zdG9yZV9wYXJzZScpCisgICAgICAgIGZvciBtZXRob2QgaW4gYWJzdHJhY3RfbWV0aG9kczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obWV0aG9kLCBtc2cpCisKKyAgICBkZWYgdGVzdF9wb2xpY3lfaXNfaW1tdXRhYmxlKHNlbGYpOgorICAgICAgICBmb3IgcG9saWN5LCBkZWZhdWx0cyBpbiBzZWxmLnBvbGljaWVzLml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgYXR0ciBpbiBkZWZhdWx0czoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGF0dHIrIi4qcmVhZC1vbmx5Iik6CisgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocG9saWN5LCBhdHRyLCBOb25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnbm8gYXR0cmlidXRlLipmb28nKToKKyAgICAgICAgICAgICAgICBwb2xpY3kuZm9vID0gTm9uZQorCisgICAgZGVmIHRlc3Rfc2V0X3BvbGljeV9hdHRyc193aGVuX2Nsb25lZChzZWxmKToKKyAgICAgICAgIyBOb25lIG9mIHRoZSBhdHRyaWJ1dGVzIGhhcyBhIGRlZmF1bHQgdmFsdWUgb2YgTm9uZSwgc28gd2Ugc2V0IHRoZW0KKyAgICAgICAgIyBhbGwgdG8gTm9uZSBpbiB0aGUgY2xvbmUgY2FsbCBhbmQgY2hlY2sgdGhhdCBpdCB3b3JrZWQuCisgICAgICAgIGZvciBwb2xpY3ljbGFzcywgZGVmYXVsdHMgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgorICAgICAgICAgICAgdGVzdGF0dHJkaWN0ID0ge2F0dHI6IE5vbmUgZm9yIGF0dHIgaW4gZGVmYXVsdHN9CisgICAgICAgICAgICBwb2xpY3kgPSBwb2xpY3ljbGFzcy5jbG9uZSgqKnRlc3RhdHRyZGljdCkKKyAgICAgICAgICAgIGZvciBhdHRyIGluIGRlZmF1bHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGdldGF0dHIocG9saWN5LCBhdHRyKSkKKworICAgIGRlZiB0ZXN0X3JlamVjdF9ub25fcG9saWN5X2tleXdvcmRfd2hlbl9jYWxsZWQoc2VsZik6CisgICAgICAgIGZvciBwb2xpY3ljbGFzcyBpbiBzZWxmLnBvbGljaWVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHBvbGljeWNsYXNzKHRoaXNfa2V5d29yZF9zaG91bGRfbm90X2JlX3ZhbGlkPU5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgcG9saWN5Y2xhc3MobmV3dGxpbmU9Tm9uZSkKKworICAgIGRlZiB0ZXN0X3BvbGljeV9hZGRpdGlvbihzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLnBvbGljeV9kZWZhdWx0cy5jb3B5KCkKKyAgICAgICAgcDEgPSBlbWFpbC5wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MTAwKQorICAgICAgICBwMiA9IGVtYWlsLnBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD01MCkKKyAgICAgICAgYWRkZWQgPSBwMSArIHAyCisgICAgICAgIGV4cGVjdGVkLnVwZGF0ZShtYXhfbGluZV9sZW5ndGg9NTApCisgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGFkZGVkLCBhdHRyKSwgdmFsdWUpCisgICAgICAgIGFkZGVkID0gcDIgKyBwMQorICAgICAgICBleHBlY3RlZC51cGRhdGUobWF4X2xpbmVfbGVuZ3RoPTEwMCkKKyAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoYWRkZWQsIGF0dHIpLCB2YWx1ZSkKKyAgICAgICAgYWRkZWQgPSBhZGRlZCArIGVtYWlsLnBvbGljeS5kZWZhdWx0CisgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGFkZGVkLCBhdHRyKSwgdmFsdWUpCisKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl9kZWZlY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIER1bW15OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZGVmZWN0cyA9IFtdCisgICAgICAgIG9iaiA9IER1bW15KCkKKyAgICAgICAgZGVmZWN0ID0gb2JqZWN0KCkKKyAgICAgICAgcG9saWN5ID0gZW1haWwucG9saWN5LkVtYWlsUG9saWN5KCkKKyAgICAgICAgcG9saWN5LnJlZ2lzdGVyX2RlZmVjdChvYmosIGRlZmVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouZGVmZWN0cywgW2RlZmVjdF0pCisgICAgICAgIGRlZmVjdDIgPSBvYmplY3QoKQorICAgICAgICBwb2xpY3kucmVnaXN0ZXJfZGVmZWN0KG9iaiwgZGVmZWN0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouZGVmZWN0cywgW2RlZmVjdCwgZGVmZWN0Ml0pCisKKyAgICBjbGFzcyBNeU9iajoKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5kZWZlY3RzID0gW10KKworICAgIGNsYXNzIE15RGVmZWN0KEV4Y2VwdGlvbik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9kZWZlY3RfcmFpc2VzX29uX3N0cmljdChzZWxmKToKKyAgICAgICAgZm9vID0gc2VsZi5NeU9iaigpCisgICAgICAgIGRlZmVjdCA9IHNlbGYuTXlEZWZlY3QoInRoZSB0ZWxseSBpcyBicm9rZW4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5NeURlZmVjdCwgInRoZSB0ZWxseSBpcyBicm9rZW4iKToKKyAgICAgICAgICAgIGVtYWlsLnBvbGljeS5zdHJpY3QuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdCkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9kZWZlY3RfcmVnaXN0ZXJzX2RlZmVjdChzZWxmKToKKyAgICAgICAgZm9vID0gc2VsZi5NeU9iaigpCisgICAgICAgIGRlZmVjdDEgPSBzZWxmLk15RGVmZWN0KCJvbmUiKQorICAgICAgICBlbWFpbC5wb2xpY3kuZGVmYXVsdC5oYW5kbGVfZGVmZWN0KGZvbywgZGVmZWN0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZGVmZWN0cywgW2RlZmVjdDFdKQorICAgICAgICBkZWZlY3QyID0gc2VsZi5NeURlZmVjdCgidHdvIikKKyAgICAgICAgZW1haWwucG9saWN5LmRlZmF1bHQuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmRlZmVjdHMsIFtkZWZlY3QxLCBkZWZlY3QyXSkKKworICAgIGNsYXNzIE15UG9saWN5KGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSk6CisgICAgICAgIGRlZmVjdHMgPSBOb25lCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCBkZWZlY3RzPVtdLCAqKmt3KQorICAgICAgICBkZWYgcmVnaXN0ZXJfZGVmZWN0KHNlbGYsIG9iaiwgZGVmZWN0KToKKyAgICAgICAgICAgIHNlbGYuZGVmZWN0cy5hcHBlbmQoZGVmZWN0KQorCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGRlbl9yZWdpc3Rlcl9kZWZlY3Rfc3RpbGxfcmFpc2VzKHNlbGYpOgorICAgICAgICBmb28gPSBzZWxmLk15T2JqKCkKKyAgICAgICAgZGVmZWN0ID0gc2VsZi5NeURlZmVjdCgidGhlIHRlbGx5IGlzIGJyb2tlbiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzZWxmLk15RGVmZWN0LCAidGhlIHRlbGx5IGlzIGJyb2tlbiIpOgorICAgICAgICAgICAgc2VsZi5NeVBvbGljeShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdCkKKworICAgIGRlZiB0ZXN0X292ZXJyaWRlbl9yZWdpc3Rlcl9kZWZlY3Rfd29ya3Moc2VsZik6CisgICAgICAgIGZvbyA9IHNlbGYuTXlPYmooKQorICAgICAgICBkZWZlY3QxID0gc2VsZi5NeURlZmVjdCgib25lIikKKyAgICAgICAgbXlfcG9saWN5ID0gc2VsZi5NeVBvbGljeSgpCisgICAgICAgIG15X3BvbGljeS5oYW5kbGVfZGVmZWN0KGZvbywgZGVmZWN0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wb2xpY3kuZGVmZWN0cywgW2RlZmVjdDFdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5kZWZlY3RzLCBbXSkKKyAgICAgICAgZGVmZWN0MiA9IHNlbGYuTXlEZWZlY3QoInR3byIpCisgICAgICAgIG15X3BvbGljeS5oYW5kbGVfZGVmZWN0KGZvbywgZGVmZWN0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wb2xpY3kuZGVmZWN0cywgW2RlZmVjdDEsIGRlZmVjdDJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5kZWZlY3RzLCBbXSkKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfaGVhZGVyX2ZhY3Rvcnkoc2VsZik6CisgICAgICAgIGggPSBlbWFpbC5wb2xpY3kuZGVmYXVsdC5oZWFkZXJfZmFjdG9yeSgnVGVzdCcsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm5hbWUsICdUZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisKKyAgICBjbGFzcyBGb286CisgICAgICAgIHBhcnNlID0gaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyLnBhcnNlCisKKyAgICBkZWYgdGVzdF9lYWNoX1BvbGljeV9nZXRzX3VuaXF1ZV9mYWN0b3J5KHNlbGYpOgorICAgICAgICBwb2xpY3kxID0gZW1haWwucG9saWN5LkVtYWlsUG9saWN5KCkKKyAgICAgICAgcG9saWN5MiA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeTEuaGVhZGVyX2ZhY3RvcnkubWFwX3RvX3R5cGUoJ2ZvbycsIHNlbGYuRm9vKQorICAgICAgICBoID0gcG9saWN5MS5oZWFkZXJfZmFjdG9yeSgnZm9vJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgc2VsZi5Gb28pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisgICAgICAgIGggPSBwb2xpY3kyLmhlYWRlcl9mYWN0b3J5KCdmb28nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShoLCBzZWxmLkZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGRlZiB0ZXN0X2Nsb25lX2NvcGllc19mYWN0b3J5KHNlbGYpOgorICAgICAgICBwb2xpY3kxID0gZW1haWwucG9saWN5LkVtYWlsUG9saWN5KCkKKyAgICAgICAgcG9saWN5MiA9IHBvbGljeTEuY2xvbmUoKQorICAgICAgICBwb2xpY3kxLmhlYWRlcl9mYWN0b3J5Lm1hcF90b190eXBlKCdmb28nLCBzZWxmLkZvbykKKyAgICAgICAgaCA9IHBvbGljeTEuaGVhZGVyX2ZhY3RvcnkoJ2ZvbycsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vKQorICAgICAgICBoID0gcG9saWN5Mi5oZWFkZXJfZmFjdG9yeSgnZm9vJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgc2VsZi5Gb28pCisKKyAgICBkZWYgdGVzdF9uZXdfZmFjdG9yeV9vdmVycmlkZXNfZGVmYXVsdChzZWxmKToKKyAgICAgICAgbXlwb2xpY3kgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgICAgICBteWZhY3RvcnkgPSBteXBvbGljeS5oZWFkZXJfZmFjdG9yeQorICAgICAgICBuZXdwb2xpY3kgPSBteXBvbGljeSArIGVtYWlsLnBvbGljeS5zdHJpY3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdwb2xpY3kuaGVhZGVyX2ZhY3RvcnksIG15ZmFjdG9yeSkKKyAgICAgICAgbmV3cG9saWN5ID0gZW1haWwucG9saWN5LnN0cmljdCArIG15cG9saWN5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cG9saWN5LmhlYWRlcl9mYWN0b3J5LCBteWZhY3RvcnkpCisKKyAgICBkZWYgdGVzdF9hZGRpbmdfZGVmYXVsdF9wb2xpY2llc19wcmVzZXJ2ZXNfZGVmYXVsdF9mYWN0b3J5KHNlbGYpOgorICAgICAgICBuZXdwb2xpY3kgPSBlbWFpbC5wb2xpY3kuZGVmYXVsdCArIGVtYWlsLnBvbGljeS5zdHJpY3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdwb2xpY3kuaGVhZGVyX2ZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3BvbGljeS5fX2RpY3RfXywgeydyYWlzZV9vbl9kZWZlY3QnOiBUcnVlfSkKKworICAgICMgWFhYOiBOZWVkIHN1YmNsYXNzaW5nIHRlc3RzLgorICAgICMgRm9yIGFkZGluZyBzdWJjbGFzc2VkIG9iamVjdHMsIG1ha2Ugc3VyZSB0aGUgdXN1YWwgcnVsZXMgYXBwbHkgKHN1YmNsYXNzCisgICAgIyB3aW5zKSwgYnV0IHRoYXQgdGhlIG9yZGVyIHN0aWxsIHdvcmtzIChyaWdodCBvdmVycmlkZXMgbGVmdCkuCisKKworY2xhc3MgVGVzdFBvbGljeVByb3BhZ2F0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICMgVGhlIGFic3RyYWN0IG1ldGhvZHMgYXJlIHVzZWQgYnkgdGhlIHBhcnNlciBidXQgbm90IGJ5IHRoZSB3cmFwcGVyCisgICAgIyBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0LCBzbyBpZiB0aGUgZXhjZXB0aW9uIGdldHMgcmFpc2VkIHdlIGtub3cgdGhhdCB0aGUKKyAgICAjIHBvbGljeSB3YXMgYWN0dWFsbHkgcHJvcGFnYXRlZCBhbGwgdGhlIHdheSB0byBmZWVkcGFyc2VyLgorICAgIGNsYXNzIE15UG9saWN5KGVtYWlsLnBvbGljeS5Qb2xpY3kpOgorICAgICAgICBkZWYgYmFkbWV0aG9kKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigidGVzdCIpCisgICAgICAgIGZvbGQgPSBmb2xkX2JpbmFyeSA9IGhlYWRlcl9mZXRjaF9wYXJzZXIgPSBiYWRtZXRob2QKKyAgICAgICAgaGVhZGVyX3NvdXJjZV9wYXJzZSA9IGhlYWRlcl9zdG9yZV9wYXJzZSA9IGJhZG1ldGhvZAorCisgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX3N0cmluZyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygiU3ViamVjdDogdGVzdFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5NeVBvbGljeSkKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9ieXRlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKGIiU3ViamVjdDogdGVzdFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQorCisgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2ZpbGUoc2VsZik6CisgICAgICAgIGYgPSBpby5TdHJpbmdJTygnU3ViamVjdDogdGVzdFxuXG4nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmLCBwb2xpY3k9c2VsZi5NeVBvbGljeSkKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShzZWxmKToKKyAgICAgICAgZiA9IGlvLkJ5dGVzSU8oYidTdWJqZWN0OiB0ZXN0XG5cbicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmLCBwb2xpY3k9c2VsZi5NeVBvbGljeSkKKworICAgICMgVGhlc2UgYXJlIHJlZHVuZGFudCwgYnV0IHdlIG5lZWQgdGhlbSBmb3IgYmxhY2stYm94IGNvbXBsZXRlbmVzcy4KKworICAgIGRlZiB0ZXN0X3BhcnNlcihzZWxmKToKKyAgICAgICAgcCA9IGVtYWlsLnBhcnNlci5QYXJzZXIocG9saWN5PXNlbGYuTXlQb2xpY3kpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIHAucGFyc2VzdHIoJ1N1YmplY3Q6IHRlc3RcblxuJykKKworICAgIGRlZiB0ZXN0X2J5dGVzX3BhcnNlcihzZWxmKToKKyAgICAgICAgcCA9IGVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcihwb2xpY3k9c2VsZi5NeVBvbGljeSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICAgICAgcC5wYXJzZWJ5dGVzKGInU3ViamVjdDogdGVzdFxuXG4nKQorCisgICAgIyBOb3cgdGhhdCB3ZSd2ZSBlc3RhYmxpc2hlZCB0aGF0IGFsbCB0aGUgcGFyc2UgbWV0aG9kcyBnZXQgdGhlCisgICAgIyBwb2xpY3kgaW4gdG8gZmVlZHBhcnNlciwgd2UgY2FuIHVzZSBtZXNzYWdlX2Zyb21fc3RyaW5nIGZvcgorICAgICMgdGhlIHJlc3Qgb2YgdGhlIHByb3BhZ2F0aW9uIHRlc3RzLgorCisgICAgZGVmIF9tYWtlX21zZyhzZWxmLCBzb3VyY2U9J1N1YmplY3Q6IHRlc3RcblxuJywgcG9saWN5PU5vbmUpOgorICAgICAgICBzZWxmLnBvbGljeSA9IGVtYWlsLnBvbGljeS5kZWZhdWx0LmNsb25lKCkgaWYgcG9saWN5IGlzIE5vbmUgZWxzZSBwb2xpY3kKKyAgICAgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoc291cmNlLCBwb2xpY3k9c2VsZi5wb2xpY3kpCisKKyAgICBkZWYgdGVzdF9wYXJzZXJfcHJvcGFnYXRlc19wb2xpY3lfdG9fbWVzc2FnZShzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fbWFrZV9tc2coKQorICAgICAgICBzZWxmLmFzc2VydElzKG1zZy5wb2xpY3ksIHNlbGYucG9saWN5KQorCisgICAgZGVmIHRlc3RfcGFyc2VyX3Byb3BhZ2F0ZXNfcG9saWN5X3RvX3N1Yl9tZXNzYWdlcyhzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fbWFrZV9tc2codGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFN1YmplY3Q6IG1pbWUgdGVzdAorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkLCBib3VuZGFyeT0iWFhYIgorCisgICAgICAgICAgICAtLVhYWAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKKyAgICAgICAgICAgIHRlc3QKKyAgICAgICAgICAgIC0tWFhYCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KKworICAgICAgICAgICAgdGVzdDIKKyAgICAgICAgICAgIC0tWFhYLS0KKyAgICAgICAgICAgICIiIikpCisgICAgICAgIGZvciBwYXJ0IGluIG1zZy53YWxrKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHBhcnQucG9saWN5LCBzZWxmLnBvbGljeSkKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfcG9saWN5X3Byb3BhZ2F0ZXNfdG9fZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBtc2cgPSBzZWxmLl9tYWtlX21zZygiU3ViamVjdDogdGVzdFxuVG86IGZvb1xuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQuY2xvbmUobGluZXNlcD0nWCcpKQorICAgICAgICBzID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBnID0gZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcihzKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgIlN1YmplY3Q6IHRlc3RYVG86IGZvb1hYIikKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfcG9saWN5X3VzZWRfYnlfYXNfc3RyaW5nKHNlbGYpOgorICAgICAgICBtc2cgPSBzZWxmLl9tYWtlX21zZygiU3ViamVjdDogdGVzdFxuVG86IGZvb1xuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQuY2xvbmUobGluZXNlcD0nWCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5hc19zdHJpbmcoKSwgIlN1YmplY3Q6IHRlc3RYVG86IGZvb1hYIikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3V0aWxzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZGU3NzAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfdXRpbHMucHkKQEAgLTAsMCArMSwxMzYgQEAKK2ltcG9ydCBkYXRldGltZQorZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKK2ltcG9ydCB0ZXN0LnN1cHBvcnQKK2ltcG9ydCB0aW1lCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKKworY2xhc3MgRGF0ZVRpbWVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkYXRlc3RyaW5nID0gJ1N1biwgMjMgU2VwIDIwMDEgMjA6MTA6NTUnCisgICAgZGF0ZWFyZ3MgPSAoMjAwMSwgOSwgMjMsIDIwLCAxMCwgNTUpCisgICAgb2Zmc2V0c3RyaW5nID0gJyAtMDcwMCcKKyAgICB1dGNvZmZzZXQgPSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9LTcpCisgICAgdHogPSBkYXRldGltZS50aW1lem9uZSh1dGNvZmZzZXQpCisgICAgbmFpdmVfZHQgPSBkYXRldGltZS5kYXRldGltZSgqZGF0ZWFyZ3MpCisgICAgYXdhcmVfZHQgPSBkYXRldGltZS5kYXRldGltZSgqZGF0ZWFyZ3MsIHR6aW5mbz10eikKKworICAgIGRlZiB0ZXN0X25haXZlX2RhdGV0aW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdF9kYXRldGltZShzZWxmLm5haXZlX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGVzdHJpbmcgKyAnIC0wMDAwJykKKworICAgIGRlZiB0ZXN0X2F3YXJlX2RhdGV0aW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdF9kYXRldGltZShzZWxmLmF3YXJlX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGVzdHJpbmcgKyBzZWxmLm9mZnNldHN0cmluZykKKworICAgIGRlZiB0ZXN0X3VzZWdtdChzZWxmKToKKyAgICAgICAgdXRjX2R0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoKnNlbGYuZGF0ZWFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbz1kYXRldGltZS50aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0X2RhdGV0aW1lKHV0Y19kdCwgdXNlZ210PVRydWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0ZXN0cmluZyArICcgR01UJykKKworICAgIGRlZiB0ZXN0X3VzZWdtdF93aXRoX25haXZlX2RhdGV0aW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWxzLmZvcm1hdF9kYXRldGltZShzZWxmLm5haXZlX2R0LCB1c2VnbXQ9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3VzZWdtdF93aXRoX25vbl91dGNfZGF0ZXRpbWVfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdXRpbHMuZm9ybWF0X2RhdGV0aW1lKHNlbGYuYXdhcmVfZHQsIHVzZWdtdD1UcnVlKQorCisgICAgZGVmIHRlc3RfcGFyc2VkYXRlX3RvX2RhdGV0aW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgdXRpbHMucGFyc2VkYXRlX3RvX2RhdGV0aW1lKHNlbGYuZGF0ZXN0cmluZyArIHNlbGYub2Zmc2V0c3RyaW5nKSwKKyAgICAgICAgICAgIHNlbGYuYXdhcmVfZHQpCisKKyAgICBkZWYgdGVzdF9wYXJzZWRhdGVfdG9fZGF0ZXRpbWVfbmFpdmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICB1dGlscy5wYXJzZWRhdGVfdG9fZGF0ZXRpbWUoc2VsZi5kYXRlc3RyaW5nICsgJyAtMDAwMCcpLAorICAgICAgICAgICAgc2VsZi5uYWl2ZV9kdCkKKworCitjbGFzcyBMb2NhbHRpbWVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfaXNfdHpfYXdhcmVfZGF5bGlnaHRfdHJ1ZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIFRydWUpCisgICAgICAgIHQgPSB1dGlscy5sb2NhbHRpbWUoKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHQudHppbmZvLCBOb25lKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2lzX3R6X2F3YXJlX2RheWxpZ2h0X2ZhbHNlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgRmFsc2UpCisgICAgICAgIHQgPSB1dGlscy5sb2NhbHRpbWUoKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHQudHppbmZvLCBOb25lKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2RheWxpZ2h0X3RydWVfZHN0X2ZhbHNlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgVHJ1ZSkKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgyMDEyLCAzLCAxMiwgMSwgMSkKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDAsIGlzZHN0PS0xKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZGF5bGlnaHRfZmFsc2VfZHN0X2ZhbHNlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgRmFsc2UpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMiwgMywgMTIsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwLCBpc2RzdD0tMSkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2RheWxpZ2h0X3RydWVfZHN0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDMsIDEyLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCwgaXNkc3Q9MSkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2RheWxpZ2h0X2ZhbHNlX2RzdF90cnVlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgRmFsc2UpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMiwgMywgMTIsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwLCBpc2RzdD0xKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICBAdGVzdC5zdXBwb3J0LnJ1bl93aXRoX3R6KCdFU1QrMDVFRFQsTTMuMi4wLE0xMS4xLjAnKQorICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9lcG9jaF91dGNfZGF5bGlnaHRfdHJ1ZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIFRydWUpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk3MCwgMSwgMSwgdHppbmZvID0gZGF0ZXRpbWUudGltZXpvbmUudXRjKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCkKKyAgICAgICAgdDIgPSB0MCAtIGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz01KQorICAgICAgICB0MiA9IHQyLnJlcGxhY2UodHppbmZvID0gZGF0ZXRpbWUudGltZXpvbmUoZGF0ZXRpbWUudGltZWRlbHRhKGhvdXJzPS01KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgQHRlc3Quc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZXBvY2hfdXRjX2RheWxpZ2h0X2ZhbHNlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgRmFsc2UpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk3MCwgMSwgMSwgdHppbmZvID0gZGF0ZXRpbWUudGltZXpvbmUudXRjKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCkKKyAgICAgICAgdDIgPSB0MCAtIGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz01KQorICAgICAgICB0MiA9IHQyLnJlcGxhY2UodHppbmZvID0gZGF0ZXRpbWUudGltZXpvbmUoZGF0ZXRpbWUudGltZWRlbHRhKGhvdXJzPS01KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2Vwb2NoX25vdHpfZGF5bGlnaHRfdHJ1ZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIFRydWUpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk3MCwgMSwgMSkKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQwLnJlcGxhY2UodHppbmZvPU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9lcG9jaF9ub3R6X2RheWxpZ2h0X2ZhbHNlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgRmFsc2UpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk3MCwgMSwgMSkKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQwLnJlcGxhY2UodHppbmZvPU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgICMgWFhYOiBOZWVkIGEgbW9yZSByb2J1c3QgdGVzdCBmb3IgT2xzb24ncyB0emRhdGEKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICJXaW5kb3dzIGRvZXMgbm90IHVzZSBPbHNvbidzIFRaIGRhdGFiYXNlIikKKyAgICBAdGVzdC5zdXBwb3J0LnJ1bl93aXRoX3R6KCdFdXJvcGUvS2lldicpCisgICAgZGVmIHRlc3RfdmFyaWFibGVfdHpuYW1lKHNlbGYpOgorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5ODQsIDEsIDEsIHR6aW5mbz1kYXRldGltZS50aW1lem9uZS51dGMpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLnR6bmFtZSgpLCAnTVNLJykKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgxOTk0LCAxLCAxLCB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUudXRjKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MS50em5hbWUoKSwgJ0VFVCcpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsX3RvcnR1cmUucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3RvcnR1cmVfdGVzdC5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvdGVzdF9lbWFpbF90b3J0dXJlLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL3RvcnR1cmVfdGVzdC5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkgYi9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQppbmRleCAwOTU4MjBiLi4yZTkwNGNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cworaW1wb3J0IHBpY2tsZQogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtNjEsNyArNjIsMjUgQEAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmCiAKLWNsYXNzIEVudW1lcmF0ZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFBpY2tsZVRlc3Q6CisgICAgIyBIZWxwZXIgdG8gY2hlY2sgcGlja2xhYmlsaXR5CisgICAgZGVmIGNoZWNrX3BpY2tsZShzZWxmLCBpdG9yZywgc2VxKToKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdG9yZykKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIHNlcSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VxWzE6XSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXFbMTpdKQorCitjbGFzcyBFbnVtZXJhdGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgUGlja2xlVGVzdCk6CiAKICAgICBlbnVtID0gZW51bWVyYXRlCiAgICAgc2VxLCByZXMgPSAnYWJjJywgWygwLCdhJyksICgxLCdiJyksICgyLCdjJyldCkBAIC03Myw2ICs5Miw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmVudW0oc2VsZi5zZXEpKSwgc2VsZi5yZXMpCiAgICAgICAgIHNlbGYuZW51bS5fX2RvY19fCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcGlja2xlKHNlbGYuZW51bShzZWxmLnNlcSksIHNlbGYucmVzKQorCiAgICAgZGVmIHRlc3RfZ2V0aXRlbXNlcW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmVudW0oRyhzZWxmLnNlcSkpKSwgc2VsZi5yZXMpCiAgICAgICAgIGUgPSBzZWxmLmVudW0oRygnJykpCkBAIC0xMjYsNyArMTQ4LDcgQEAKICAgICBzZXEgPSByYW5nZSgxMCwyMDAwMCwyKQogICAgIHJlcyA9IGxpc3QoemlwKHJhbmdlKDIwMDAwKSwgc2VxKSkKIAotY2xhc3MgVGVzdFJldmVyc2VkKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RSZXZlcnNlZCh1bml0dGVzdC5UZXN0Q2FzZSwgUGlja2xlVGVzdCk6CiAKICAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEE6CkBAIC0yMTIsNiArMjM0LDEwIEBACiAgICAgICAgIG5naSA9IE5vR2V0SXRlbSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmV2ZXJzZWQsIG5naSkKIAorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgZm9yIGRhdGEgaW4gJ2FiYycsIHJhbmdlKDUpLCB0dXBsZShlbnVtZXJhdGUoJ2FiYycpKSwgcmFuZ2UoMSwxNyw1KToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfcGlja2xlKHJldmVyc2VkKGRhdGEpLCBsaXN0KGRhdGEpWzo6LTFdKQorCiAKIGNsYXNzIEVudW1lcmF0ZVN0YXJ0VGVzdENhc2UoRW51bWVyYXRlVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQppbmRleCAwODNmZDdmLi43Zjk1NDdmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKQEAgLTc1LDYgKzc1LDkgQEAKICAgICAgICAgZXAuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZXAuY2xvc2VkKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBlcC5maWxlbm8pCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZWN0LCAiRVBPTExfQ0xPRVhFQyIpOgorICAgICAgICAgICAgc2VsZWN0LmVwb2xsKHNlbGVjdC5FUE9MTF9DTE9FWEVDKS5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzZWxlY3QuZXBvbGwsIGZsYWdzPTEyMzU2KQogCiAgICAgZGVmIHRlc3RfYmFkY3JlYXRlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGVjdC5lcG9sbCwgMSwgMiwgMykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQppbmRleCA3YTJkZDBjLi41NWU5ZGIzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CkBAIC04LDcgKzgsMTYgQEAKIGltcG9ydCBlcnJubwogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKFRFU1RGTiwgdW5saW5rLCBydW5fdW5pdHRlc3QsIGNhcHR1cmVkX291dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NfY29sbGVjdCwgY3B5dGhvbl9vbmx5KQorICAgICAgICAgICAgICAgICAgICAgICAgICBnY19jb2xsZWN0LCBjcHl0aG9uX29ubHksIG5vX3RyYWNpbmcpCisKK2NsYXNzIE5haXZlRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgorICAgICAgICBzZWxmLnggPSB4CisKK2NsYXNzIFNsb3R0ZWROYWl2ZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIF9fc2xvdHNfXyA9ICgneCcsKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgc2VsZi54ID0geAogCiAjIFhYWCBUaGlzIGlzIG5vdCByZWFsbHkgZW5vdWdoLCBlYWNoICpvcGVyYXRpb24qIHNob3VsZCBiZSB0ZXN0ZWQhCiAKQEAgLTQ2LDggKzU1LDggQEAKICAgICAgICAgICAgIGZwLmNsb3NlKCkKICAgICAgICAgICAgIHVubGluayhURVNURk4pCiAKLSAgICAgICAgc2VsZi5yYWlzZV9jYXRjaChJT0Vycm9yLCAiSU9FcnJvciIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIG9wZW4sICd0aGlzIGZpbGUgZG9lcyBub3QgZXhpc3QnLCAncicpCisgICAgICAgIHNlbGYucmFpc2VfY2F0Y2goT1NFcnJvciwgIk9TRXJyb3IiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcGVuLCAndGhpcyBmaWxlIGRvZXMgbm90IGV4aXN0JywgJ3InKQogCiAgICAgICAgIHNlbGYucmFpc2VfY2F0Y2goSW1wb3J0RXJyb3IsICJJbXBvcnRFcnJvciIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yLCBfX2ltcG9ydF9fLCAidW5kZWZpbmVkX21vZHVsZSIpCkBAIC0xOTIsMTEgKzIwMSwzNSBAQAogICAgICAgICBleGNlcHQgTmFtZUVycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoV2luZG93c0Vycm9yKDEwMDEpKSwgIjEwMDEiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoV2luZG93c0Vycm9yKDEwMDEsICJtZXNzYWdlIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiW0Vycm9yIDEwMDFdIG1lc3NhZ2UiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChXaW5kb3dzRXJyb3IoMTAwMSwgIm1lc3NhZ2UiKS5lcnJubywgMjIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFdpbmRvd3NFcnJvcigxMDAxLCAibWVzc2FnZSIpLndpbmVycm9yLCAxMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhXaW5kb3dzRXJyb3IsIE9TRXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPU0Vycm9yKDEwMDEpKSwgIjEwMDEiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT1NFcnJvcigxMDAxLCAibWVzc2FnZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIltFcnJubyAxMDAxXSBtZXNzYWdlIikKKyAgICAgICAgICAgICMgUE9TSVggZXJybm8gKDkgYWthIEVCQURGKSBpcyB1bnRyYW5zbGF0ZWQKKyAgICAgICAgICAgIHcgPSBPU0Vycm9yKDksICdmb28nLCAnYmFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5lcnJubywgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53aW5lcnJvciwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHcpLCAiW0Vycm5vIDldIGZvbzogJ2JhciciKQorICAgICAgICAgICAgIyBFUlJPUl9QQVRIX05PVF9GT1VORCAod2luIGVycm9yIDMpIGJlY29tZXMgRU5PRU5UICgyKQorICAgICAgICAgICAgdyA9IE9TRXJyb3IoMCwgJ2ZvbycsICdiYXInLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LmVycm5vLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LndpbmVycm9yLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LnN0cmVycm9yLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5maWxlbmFtZSwgJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3KSwgIltFcnJvciAzXSBmb286ICdiYXInIikKKyAgICAgICAgICAgICMgVW5rbm93biB3aW4gZXJyb3IgYmVjb21lcyBFSU5WQUwgKDIyKQorICAgICAgICAgICAgdyA9IE9TRXJyb3IoMCwgJ2ZvbycsIE5vbmUsIDEwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZXJybm8sIDIyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LndpbmVycm9yLCAxMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LnN0cmVycm9yLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5maWxlbmFtZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHcpLCAiW0Vycm9yIDEwMDFdIGZvbyIpCisgICAgICAgICAgICAjIE5vbi1udW1lcmljICJlcnJubyIKKyAgICAgICAgICAgIHcgPSBPU0Vycm9yKCdiYXInLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5lcnJubywgJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcud2luZXJyb3IsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuc3RyZXJyb3IsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LmZpbGVuYW1lLCBOb25lKQogCiAgICAgZGVmIHRlc3RBdHRyaWJ1dGVzKHNlbGYpOgogICAgICAgICAjIHRlc3QgdGhhdCBleGNlcHRpb24gYXR0cmlidXRlcyBhcmUgaGFwcHkKQEAgLTI3MiwxMyArMzA1LDE4IEBACiAgICAgICAgICAgICAgICAgeydhcmdzJyA6ICgnXHUzMDQyJywgMCwgMSwgJ291Y2gnKSwKICAgICAgICAgICAgICAgICAgJ29iamVjdCcgOiAnXHUzMDQyJywgJ3JlYXNvbicgOiAnb3VjaCcsCiAgICAgICAgICAgICAgICAgICdzdGFydCcgOiAwLCAnZW5kJyA6IDF9KSwKKyAgICAgICAgICAgIChOYWl2ZUV4Y2VwdGlvbiwgKCdmb28nLCksCisgICAgICAgICAgICAgICAgeydhcmdzJzogKCdmb28nLCksICd4JzogJ2Zvbyd9KSwKKyAgICAgICAgICAgIChTbG90dGVkTmFpdmVFeGNlcHRpb24sICgnZm9vJywpLAorICAgICAgICAgICAgICAgIHsnYXJncyc6ICgnZm9vJywpLCAneCc6ICdmb28nfSksCiAgICAgICAgIF0KICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBNb3JlIHRlc3RzIGFyZSBpbiB0ZXN0X1dpbmRvd3NFcnJvcgogICAgICAgICAgICAgZXhjZXB0aW9uTGlzdC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgKFdpbmRvd3NFcnJvciwgKDEsICdzdHJFcnJvclN0cicsICdmaWxlbmFtZVN0cicpLAogICAgICAgICAgICAgICAgICAgICB7J2FyZ3MnIDogKDEsICdzdHJFcnJvclN0cicpLAotICAgICAgICAgICAgICAgICAgICAgJ3N0cmVycm9yJyA6ICdzdHJFcnJvclN0cicsICd3aW5lcnJvcicgOiAxLAotICAgICAgICAgICAgICAgICAgICAgJ2Vycm5vJyA6IDIyLCAnZmlsZW5hbWUnIDogJ2ZpbGVuYW1lU3RyJ30pCisgICAgICAgICAgICAgICAgICAgICAnc3RyZXJyb3InIDogJ3N0ckVycm9yU3RyJywgJ3dpbmVycm9yJyA6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAnZXJybm8nIDogMSwgJ2ZpbGVuYW1lJyA6ICdmaWxlbmFtZVN0cid9KQogICAgICAgICAgICAgKQogICAgICAgICBleGNlcHQgTmFtZUVycm9yOgogICAgICAgICAgICAgcGFzcwpAQCAtMjkxLDcgKzMyOSw4IEBACiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgbW9kdWxlIG5hbWUKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZSkuX19tb2R1bGVfXywgJ2J1aWx0aW5zJykKKyAgICAgICAgICAgICAgICBpZiBub3QgdHlwZShlKS5fX25hbWVfXy5lbmRzd2l0aCgnTmFpdmVFeGNlcHRpb24nKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUpLl9fbW9kdWxlX18sICdidWlsdGlucycpCiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgbm8gcmVmIGxlYWtzIGluIEV4Y19zdHIoKQogICAgICAgICAgICAgICAgIHMgPSBzdHIoZSkKICAgICAgICAgICAgICAgICBmb3IgY2hlY2tBcmdOYW1lIGluIGV4cGVjdGVkOgpAQCAtMzYyLDE5ICs0MDEsMzcgQEAKIAogICAgIGRlZiB0ZXN0Q2hhaW5pbmdBdHRycyhzZWxmKToKICAgICAgICAgZSA9IEV4Y2VwdGlvbigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NvbnRleHRfXywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY2F1c2VfXywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCiAKICAgICAgICAgZSA9IFR5cGVFcnJvcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NvbnRleHRfXywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY2F1c2VfXywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCiAKICAgICAgICAgY2xhc3MgTXlFeGNlcHRpb24oRW52aXJvbm1lbnRFcnJvcik6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgZSA9IE15RXhjZXB0aW9uKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY29udGV4dF9fLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuX19jYXVzZV9fLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKKworICAgIGRlZiB0ZXN0Q2hhaW5pbmdEZXNjcmlwdG9ycyhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICBlID0gZXhjCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5fX3N1cHByZXNzX2NvbnRleHRfXykKKworICAgICAgICBlLl9fY29udGV4dF9fID0gTmFtZUVycm9yKCkKKyAgICAgICAgZS5fX2NhdXNlX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLl9fY29udGV4dF9fLCBOYW1lRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZS5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgZS5fX3N1cHByZXNzX2NvbnRleHRfXyA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5fX3N1cHByZXNzX2NvbnRleHRfXykKIAogICAgIGRlZiB0ZXN0S2V5d29yZEFyZ3Moc2VsZik6CiAgICAgICAgICMgdGVzdCB0aGF0IGJ1aWx0aW4gZXhjZXB0aW9uIGRvbid0IHRha2Uga2V5d29yZCBhcmdzLApAQCAtMzg5LDYgKzQ0Niw3IEBACiAgICAgICAgIHggPSBEZXJpdmVkRXhjZXB0aW9uKGZhbmN5X2FyZz00MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZhbmN5X2FyZywgNDIpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0SW5maW5pdGVSZWN1cnNpb24oc2VsZik6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICByZXR1cm4gZigpCkBAIC03MjEsNiArNzc5LDcgQEAKICAgICAgICAgdS5zdGFydCA9IDEwMDAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodSksICJjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVycyBpbiBwb3NpdGlvbiAxMDAwLTQ6IDk2NTIzMDk1MTQ0MzY4NTcyNDk5NyIpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X2JhZGlzaW5zdGFuY2Uoc2VsZik6CiAgICAgICAgICMgQnVnICMyNTQyOiBpZiBpc3N1YmNsYXNzKGUsIE15RXhjZXB0aW9uKSByYWlzZXMgYW4gZXhjZXB0aW9uLAogICAgICAgICAjIGl0IHNob3VsZCBiZSBpZ25vcmVkCkBAIC04MzEsNiArODkwLDcgQEAKICAgICAgICAgICAgIHNlbGYuZmFpbCgiTWVtb3J5RXJyb3Igbm90IHJhaXNlZCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKIAorICAgIEBub190cmFjaW5nCiAgICAgZGVmIHRlc3RfcmVjdXJzaW9uX2Vycm9yX2NsZWFudXAoc2VsZik6CiAgICAgICAgICMgU2FtZSB0ZXN0IGFzIGFib3ZlLCBidXQgd2l0aCAicmVjdXJzaW9uIGV4Y2VlZGVkIiBlcnJvcnMKICAgICAgICAgY2xhc3MgQzoKQEAgLTg1Nyw4ICs5MTcsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT1RESVIsIGNtLmV4Y2VwdGlvbikKIAogCitjbGFzcyBJbXBvcnRFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgICMgU2V0dGluZyAnbmFtZScgYW5kICdwYXRoJyBzaG91bGQgbm90IGJlIGEgcHJvYmxlbS4KKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMubmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLnBhdGgpCisKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoJ3Rlc3QnLCBuYW1lPSdzb21lbW9kdWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMubmFtZSwgJ3NvbWVtb2R1bGUnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMucGF0aCkKKworICAgICAgICBleGMgPSBJbXBvcnRFcnJvcigndGVzdCcsIHBhdGg9J3NvbWVwYXRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMucGF0aCwgJ3NvbWVwYXRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLm5hbWUpCisKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoJ3Rlc3QnLCBwYXRoPSdzb21lcGF0aCcsIG5hbWU9J3NvbWVuYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMubmFtZSwgJ3NvbWVuYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMucGF0aCwgJ3NvbWVwYXRoJykKKworICAgIGRlZiB0ZXN0X25vbl9zdHJfYXJndW1lbnQoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE1Nzc4CisgICAgICAgIGFyZyA9IGInYWJjJworICAgICAgICBleGMgPSBJbXBvcnRFcnJvcihhcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGFyZyksIHN0cihleGMpKQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRXhjZXB0aW9uVGVzdHMpCisgICAgcnVuX3VuaXR0ZXN0KEV4Y2VwdGlvblRlc3RzLCBJbXBvcnRFcnJvclRlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CmluZGV4IDFmN2Y2MzAuLjZiNmMxMmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKQEAgLTY2LDE3ICs2NiwxNyBAQAogICAgID4+PiBnKCkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGcoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKQorICAgIFR5cGVFcnJvcjogZygpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAneCcKIAogICAgID4+PiBnKCooKSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGcoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKQorICAgIFR5cGVFcnJvcjogZygpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAneCcKIAogICAgID4+PiBnKCooKSwgKip7fSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGcoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKQorICAgIFR5cGVFcnJvcjogZygpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAneCcKIAogICAgID4+PiBnKDEpCiAgICAgMSAoKSB7fQpAQCAtMTUxLDcgKzE1MSw3IEBACiAgICAgPj4+IGcoMSwgMiwgMywgKip7J3gnOiA0LCAneSc6IDV9KQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFR5cGVFcnJvcjogZygpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ3gnCisgICAgVHlwZUVycm9yOiBnKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJ3gnCiAKICAgICA+Pj4gZigqKnsxOjJ9KQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKQEAgLTI2MywyOSArMjYzLDgwIEBACiAgICAgPj4+IGYoKip4KQogICAgIDEgMgogCi1BIG9ic2N1cmUgbWVzc2FnZToKK1RvbyBtYW55IGFyZ3VtZW50czoKIAotICAgID4+PiBkZWYgZihhLCBiKToKLSAgICAuLi4gICAgcGFzcwotICAgID4+PiBmKGI9MSkKKyAgICA+Pj4gZGVmIGYoKTogcGFzcworICAgID4+PiBmKDEpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgZXhhY3RseSAyIGFyZ3VtZW50cyAoMSBnaXZlbikKLQotVGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIGluIGluY2x1ZGVzIGtleXdvcmRzOgotCi0gICAgPj4+IGRlZiBmKGEpOgotICAgIC4uLiAgICBwYXNzCi0gICAgPj4+IGYoNiwgYT00LCAqKDEsIDIsIDMpKQorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIDAgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDEgd2FzIGdpdmVuCisgICAgPj4+IGRlZiBmKGEpOiBwYXNzCisgICAgPj4+IGYoMSwgMikKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBleGFjdGx5IDEgcG9zaXRpb25hbCBhcmd1bWVudCAoNSBnaXZlbikKLSAgICA+Pj4gZGVmIGYoYSwgKiwga3cpOgotICAgIC4uLiAgICBwYXNzCi0gICAgPj4+IGYoNiwgNCwga3c9NCkKKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyAxIHBvc2l0aW9uYWwgYXJndW1lbnQgYnV0IDIgd2VyZSBnaXZlbgorICAgID4+PiBkZWYgZihhLCBiPTEpOiBwYXNzCisgICAgPj4+IGYoMSwgMiwgMykKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBleGFjdGx5IDEgcG9zaXRpb25hbCBhcmd1bWVudCAoMyBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBmcm9tIDEgdG8gMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMyB3ZXJlIGdpdmVuCisgICAgPj4+IGRlZiBmKCosIGt3KTogcGFzcworICAgID4+PiBmKDEsIGt3PTMpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgMCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMSBwb3NpdGlvbmFsIGFyZ3VtZW50IChhbmQgMSBrZXl3b3JkLW9ubHkgYXJndW1lbnQpIHdlcmUgZ2l2ZW4KKyAgICA+Pj4gZGVmIGYoKiwga3csIGIpOiBwYXNzCisgICAgPj4+IGYoMSwgMiwgMywgYj0zLCBrdz0zKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIDAgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDMgcG9zaXRpb25hbCBhcmd1bWVudHMgKGFuZCAyIGtleXdvcmQtb25seSBhcmd1bWVudHMpIHdlcmUgZ2l2ZW4KKyAgICA+Pj4gZGVmIGYoYSwgYj0yLCAqLCBrdyk6IHBhc3MKKyAgICA+Pj4gZigyLCAzLCA0LCBrdz00KQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIGZyb20gMSB0byAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAzIHBvc2l0aW9uYWwgYXJndW1lbnRzIChhbmQgMSBrZXl3b3JkLW9ubHkgYXJndW1lbnQpIHdlcmUgZ2l2ZW4KKworVG9vIGZldyBhbmQgbWlzc2luZyBhcmd1bWVudHM6CisKKyAgICA+Pj4gZGVmIGYoYSk6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICdhJworICAgID4+PiBkZWYgZihhLCBiKTogcGFzcworICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDIgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudHM6ICdhJyBhbmQgJ2InCisgICAgPj4+IGRlZiBmKGEsIGIsIGMpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgMyByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50czogJ2EnLCAnYicsIGFuZCAnYycKKyAgICA+Pj4gZGVmIGYoYSwgYiwgYywgZCwgZSk6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyA1IHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnRzOiAnYScsICdiJywgJ2MnLCAnZCcsIGFuZCAnZScKKyAgICA+Pj4gZGVmIGYoYSwgYj00LCBjPTUsIGQ9NSk6IHBhc3MKKyAgICA+Pj4gZihjPTEyLCBiPTkpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICdhJworCitTYW1lIHdpdGgga2V5d29yZCBvbmx5IGFyZ3M6CisKKyAgICA+Pj4gZGVmIGYoKiwgdyk6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAxIHJlcXVpcmVkIGtleXdvcmQtb25seSBhcmd1bWVudDogJ3cnCisgICAgPj4+IGRlZiBmKCosIGEsIGIsIGMsIGQsIGUpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgNSByZXF1aXJlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzOiAnYScsICdiJywgJ2MnLCAnZCcsIGFuZCAnZScKKwogIiIiCiAKIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE4NmIzNAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CkBAIC0wLDAgKzEsNTkzIEBACitmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdW5pdHRlc3QKKwordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKKyAgICBIQVZFX1RIUkVBRFMgPSBUcnVlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgSEFWRV9USFJFQURTID0gRmFsc2UKKworVElNRU9VVCA9IDAuNQorCit0cnk6CisgICAgZnJvbSByZXNvdXJjZSBpbXBvcnQgc2V0cmxpbWl0LCBSTElNSVRfQ09SRSwgZXJyb3IgYXMgcmVzb3VyY2VfZXJyb3IKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwcmVwYXJlX3N1YnByb2Nlc3MgPSBOb25lCitlbHNlOgorICAgIGRlZiBwcmVwYXJlX3N1YnByb2Nlc3MoKToKKyAgICAgICAgIyBkb24ndCBjcmVhdGUgY29yZSBmaWxlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNldHJsaW1pdChSTElNSVRfQ09SRSwgKDAsIDApKQorICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIHJlc291cmNlX2Vycm9yKToKKyAgICAgICAgICAgIHBhc3MKKworZGVmIGV4cGVjdGVkX3RyYWNlYmFjayhsaW5lbm8xLCBsaW5lbm8yLCBoZWFkZXIsIG1pbl9jb3VudD0xKToKKyAgICByZWdleCA9IGhlYWRlcgorICAgIHJlZ2V4ICs9ICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAlcyBpbiBmdW5jXG4nICUgbGluZW5vMQorICAgIHJlZ2V4ICs9ICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAlcyBpbiA8bW9kdWxlPicgJSBsaW5lbm8yCisgICAgaWYgMSA8IG1pbl9jb3VudDoKKyAgICAgICAgcmV0dXJuICdeJyArIChyZWdleCArICdcbicpICogKG1pbl9jb3VudCAtIDEpICsgcmVnZXgKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJ14nICsgcmVnZXggKyAnJCcKKworQGNvbnRleHRtYW5hZ2VyCitkZWYgdGVtcG9yYXJ5X2ZpbGVuYW1lKCk6CisgICAgZmlsZW5hbWUgPSB0ZW1wZmlsZS5ta3RlbXAoKQorICAgIHRyeToKKyAgICAgICAgeWllbGQgZmlsZW5hbWUKKyAgICBmaW5hbGx5OgorICAgICAgICBzdXBwb3J0LnVubGluayhmaWxlbmFtZSkKKworY2xhc3MgRmF1bHRIYW5kbGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBnZXRfb3V0cHV0KHNlbGYsIGNvZGUsIGZpbGVuYW1lPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUnVuIHRoZSBzcGVjaWZpZWQgY29kZSBpbiBQeXRob24gKGluIGEgbmV3IGNoaWxkIHByb2Nlc3MpIGFuZCByZWFkIHRoZQorICAgICAgICBvdXRwdXQgZnJvbSB0aGUgc3RhbmRhcmQgZXJyb3Igb3IgZnJvbSBhIGZpbGUgKGlmIGZpbGVuYW1lIGlzIHNldCkuCisgICAgICAgIFJldHVybiB0aGUgb3V0cHV0IGxpbmVzIGFzIGEgbGlzdC4KKworICAgICAgICBTdHJpcCB0aGUgcmVmZXJlbmNlIGNvdW50IGZyb20gdGhlIHN0YW5kYXJkIGVycm9yIGZvciBQeXRob24gZGVidWcKKyAgICAgICAgYnVpbGQsIGFuZCByZXBsYWNlICJDdXJyZW50IHRocmVhZCAweDAwMDA3ZjhkOGZiZDk3MDAiIGJ5ICJDdXJyZW50CisgICAgICAgIHRocmVhZCBYWFgiLgorICAgICAgICAiIiIKKyAgICAgICAgb3B0aW9ucyA9IHt9CisgICAgICAgIGlmIHByZXBhcmVfc3VicHJvY2VzczoKKyAgICAgICAgICAgIG9wdGlvbnNbJ3ByZWV4ZWNfZm4nXSA9IHByZXBhcmVfc3VicHJvY2VzcworICAgICAgICBwcm9jZXNzID0gc2NyaXB0X2hlbHBlci5zcGF3bl9weXRob24oJy1jJywgY29kZSwgKipvcHRpb25zKQorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCisgICAgICAgIG91dHB1dCA9IHN1cHBvcnQuc3RyaXBfcHl0aG9uX3N0ZGVycihzdGRvdXQpCisgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQorICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnJykKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gZnAucmVhZCgpCisgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuZGVjb2RlKCdhc2NpaScsICdiYWNrc2xhc2hyZXBsYWNlJykKKyAgICAgICAgb3V0cHV0ID0gcmUuc3ViKCdDdXJyZW50IHRocmVhZCAweFswLTlhLWZdKycsCisgICAgICAgICAgICAgICAgICAgICAgICAnQ3VycmVudCB0aHJlYWQgWFhYJywKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCkKKyAgICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdGxpbmVzKCksIGV4aXRjb2RlCisKKyAgICBkZWYgY2hlY2tfZmF0YWxfZXJyb3Ioc2VsZiwgY29kZSwgbGluZV9udW1iZXIsIG5hbWVfcmVnZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPU5vbmUsIGFsbF90aHJlYWRzPVRydWUsIG90aGVyX3JlZ2V4PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgdGhhdCB0aGUgZmF1bHQgaGFuZGxlciBmb3IgZmF0YWwgZXJyb3JzIGlzIGVuYWJsZWQgYW5kIGNoZWNrIHRoZQorICAgICAgICB0cmFjZWJhY2sgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcyBvdXRwdXQuCisKKyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBpZiBhbGxfdGhyZWFkczoKKyAgICAgICAgICAgIGhlYWRlciA9ICdDdXJyZW50IHRocmVhZCBYWFgnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBoZWFkZXIgPSAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KScKKyAgICAgICAgcmVnZXggPSAiIiIKK15GYXRhbCBQeXRob24gZXJyb3I6IHtuYW1lfQorCit7aGVhZGVyfToKKyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIHtsaW5lbm99IGluIDxtb2R1bGU+CisiIiIuc3RyaXAoKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdCgKKyAgICAgICAgICAgIGxpbmVubz1saW5lX251bWJlciwKKyAgICAgICAgICAgIG5hbWU9bmFtZV9yZWdleCwKKyAgICAgICAgICAgIGhlYWRlcj1yZS5lc2NhcGUoaGVhZGVyKSkKKyAgICAgICAgaWYgb3RoZXJfcmVnZXg6CisgICAgICAgICAgICByZWdleCArPSAnfCcgKyBvdGhlcl9yZWdleAorICAgICAgICBvdXRwdXQsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICBvdXRwdXQgPSAnXG4nLmpvaW4ob3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dCwgcmVnZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9yZWFkX251bGwoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fcmVhZF9udWxsKCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICMgSXNzdWUgIzEyNzAwOiBSZWFkIE5VTEwgcmFpc2VzIFNJR0lMTCBvbiBNYWMgT1MgWCBMaW9uCisgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScpCisKKyAgICBkZWYgdGVzdF9zaWdzZWd2KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3NpZ3NlZ3YoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcpCisKKyAgICBkZWYgdGVzdF9zaWdhYnJ0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3NpZ2FicnQoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJ0Fib3J0ZWQnKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKKyAgICAgICAgICAgICAgICAgICAgICJTSUdGUEUgY2Fubm90IGJlIGNhdWdodCBvbiBXaW5kb3dzIikKKyAgICBkZWYgdGVzdF9zaWdmcGUoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc2lnZnBlKCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBleGNlcHRpb24nKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdfc2lnYnVzJyksCisgICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIuX3NpZ2J1cygpIikKKyAgICBkZWYgdGVzdF9zaWdidXMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc2lnYnVzKCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdCdXMgZXJyb3InKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdfc2lnaWxsJyksCisgICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIuX3NpZ2lsbCgpIikKKyAgICBkZWYgdGVzdF9zaWdpbGwoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc2lnaWxsKCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdJbGxlZ2FsIGluc3RydWN0aW9uJykKKworICAgIGRlZiB0ZXN0X2ZhdGFsX2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLl9mYXRhbF9lcnJvcihiJ3h5eicpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDIsCisgICAgICAgICAgICAneHl6JykKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ29wZW5ic2QnKSBhbmQgSEFWRV9USFJFQURTLAorICAgICAgICAgICAgICAgICAgICAgIklzc3VlICMxMjg2ODogc2lnYWx0c3RhY2soKSBkb2Vzbid0IHdvcmsgb24gIgorICAgICAgICAgICAgICAgICAgICAgIk9wZW5CU0QgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggcHRocmVhZCIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdfc3RhY2tfb3ZlcmZsb3cnKSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkIGZhdWx0aGFuZGxlci5fc3RhY2tfb3ZlcmZsb3coKScpCisgICAgZGVmIHRlc3Rfc3RhY2tfb3ZlcmZsb3coc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc3RhY2tfb3ZlcmZsb3coKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdHxCdXMgZXJyb3IpJywKKyAgICAgICAgICAgIG90aGVyX3JlZ2V4PSd1bmFibGUgdG8gcmFpc2UgYSBzdGFjayBvdmVyZmxvdycpCisKKyAgICBkZWYgdGVzdF9naWxfcmVsZWFzZWQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fcmVhZF9udWxsKFRydWUpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScpCisKKyAgICBkZWYgdGVzdF9lbmFibGVfZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitvdXRwdXQgPSBvcGVuKHtmaWxlbmFtZX0sICd3YicpCitmYXVsdGhhbmRsZXIuZW5hYmxlKG91dHB1dCkKK2ZhdWx0aGFuZGxlci5fcmVhZF9udWxsKCkKKyIiIi5zdHJpcCgpLmZvcm1hdChmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSksCisgICAgICAgICAgICAgICAgNCwKKyAgICAgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScsCisgICAgICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF9lbmFibGVfc2luZ2xlX3RocmVhZChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoYWxsX3RocmVhZHM9RmFsc2UpCitmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScsCisgICAgICAgICAgICBhbGxfdGhyZWFkcz1GYWxzZSkKKworICAgIGRlZiB0ZXN0X2Rpc2FibGUoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLmRpc2FibGUoKQorZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorIiIiLnN0cmlwKCkKKyAgICAgICAgbm90X2V4cGVjdGVkID0gJ0ZhdGFsIFB5dGhvbiBlcnJvcicKKyAgICAgICAgc3RkZXJyLCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlKQorICAgICAgICBzdGRlciA9ICdcbicuam9pbihzdGRlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RfZXhwZWN0ZWQgbm90IGluIHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICIlciBpcyBwcmVzZW50IGluICVyIiAlIChub3RfZXhwZWN0ZWQsIHN0ZGVycikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9pc19lbmFibGVkKHNlbGYpOgorICAgICAgICBvcmlnX3N0ZGVyciA9IHN5cy5zdGRlcnIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyByZWdydGVzdCBtYXkgcmVwbGFjZSBzeXMuc3RkZXJyIGJ5IGlvLlN0cmluZ0lPIG9iamVjdCwgYnV0CisgICAgICAgICAgICAjIGZhdWx0aGFuZGxlci5lbmFibGUoKSByZXF1aXJlcyB0aGF0IHN5cy5zdGRlcnIgaGFzIGEgZmlsZW5vKCkKKyAgICAgICAgICAgICMgbWV0aG9kCisgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3lzLl9fc3RkZXJyX18KKworICAgICAgICAgICAgd2FzX2VuYWJsZWQgPSBmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZhdWx0aGFuZGxlci5pc19lbmFibGVkKCkpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmRpc2FibGUoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmF1bHRoYW5kbGVyLmlzX2VuYWJsZWQoKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgaWYgd2FzX2VuYWJsZWQ6CisgICAgICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kaXNhYmxlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBvcmlnX3N0ZGVycgorCisgICAgZGVmIHRlc3RfZGlzYWJsZWRfYnlfZGVmYXVsdChzZWxmKToKKyAgICAgICAgIyBCeSBkZWZhdWx0LCB0aGUgbW9kdWxlIHNob3VsZCBiZSBkaXNhYmxlZAorICAgICAgICBjb2RlID0gImltcG9ydCBmYXVsdGhhbmRsZXI7IHByaW50KGZhdWx0aGFuZGxlci5pc19lbmFibGVkKCkpIgorICAgICAgICByYywgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCItYyIsIGNvZGUpCisgICAgICAgIHN0ZG91dCA9IChzdGRvdXQgKyBzdGRlcnIpLnN0cmlwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIGIiRmFsc2UiKQorCisgICAgZGVmIHRlc3Rfc3lzX3hvcHRpb25zKHNlbGYpOgorICAgICAgICAjIFRlc3QgcHl0aG9uIC1YIGZhdWx0aGFuZGxlcgorICAgICAgICBjb2RlID0gImltcG9ydCBmYXVsdGhhbmRsZXI7IHByaW50KGZhdWx0aGFuZGxlci5pc19lbmFibGVkKCkpIgorICAgICAgICByYywgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCItWCIsICJmYXVsdGhhbmRsZXIiLCAiLWMiLCBjb2RlKQorICAgICAgICBzdGRvdXQgPSAoc3Rkb3V0ICsgc3RkZXJyKS5zdHJpcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiIlRydWUiKQorCisgICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgIiIiCisgICAgICAgIEV4cGxpY2l0bHkgY2FsbCBkdW1wX3RyYWNlYmFjaygpIGZ1bmN0aW9uIGFuZCBjaGVjayBpdHMgb3V0cHV0LgorICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKKworZGVmIGZ1bmNCKCk6CisgICAgaWYge2hhc19maWxlbmFtZX06CisgICAgICAgIHdpdGggb3Blbih7ZmlsZW5hbWV9LCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhmcCwgYWxsX3RocmVhZHM9RmFsc2UpCisgICAgZWxzZToKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGFsbF90aHJlYWRzPUZhbHNlKQorCitkZWYgZnVuY0EoKToKKyAgICBmdW5jQigpCisKK2Z1bmNBKCkKKyIiIi5zdHJpcCgpCisgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdCgKKyAgICAgICAgICAgIGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpLAorICAgICAgICAgICAgaGFzX2ZpbGVuYW1lPWJvb2woZmlsZW5hbWUpLAorICAgICAgICApCisgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgbGluZW5vID0gNgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGluZW5vID0gOAorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOicsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgJXMgaW4gZnVuY0InICUgbGluZW5vLAorICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDExIGluIGZ1bmNBJywKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAxMyBpbiA8bW9kdWxlPicKKyAgICAgICAgXQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2soc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soTm9uZSkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2ZpbGUoc2VsZik6CisgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrKGZpbGVuYW1lKQorCisgICAgZGVmIHRlc3RfdHJ1bmNhdGUoc2VsZik6CisgICAgICAgIG1heGxlbiA9IDUwMAorICAgICAgICBmdW5jX25hbWUgPSAneCcgKiAobWF4bGVuICsgNTApCisgICAgICAgIHRydW5jYXRlZCA9ICd4JyAqIG1heGxlbiArICcuLi4nCisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKKworZGVmIHtmdW5jX25hbWV9KCk6CisgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGFsbF90aHJlYWRzPUZhbHNlKQorCit7ZnVuY19uYW1lfSgpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCisgICAgICAgICAgICBmdW5jX25hbWU9ZnVuY19uYW1lLAorICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6JywKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSA0IGluICVzJyAlIHRydW5jYXRlZCwKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSA2IGluIDxtb2R1bGU+JworICAgICAgICBdCisgICAgICAgIHRyYWNlLCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IEhBVkVfVEhSRUFEUywgJ25lZWQgdGhyZWFkcycpCisgICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrX3RocmVhZHMoc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbCBleHBsaWNpdGx5IGR1bXBfdHJhY2ViYWNrKGFsbF90aHJlYWRzPVRydWUpIGFuZCBjaGVjayB0aGUgb3V0cHV0LgorICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2Zyb20gdGhyZWFkaW5nIGltcG9ydCBUaHJlYWQsIEV2ZW50CitpbXBvcnQgdGltZQorCitkZWYgZHVtcCgpOgorICAgIGlmIHtmaWxlbmFtZX06CisgICAgICAgIHdpdGggb3Blbih7ZmlsZW5hbWV9LCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhmcCwgYWxsX3RocmVhZHM9VHJ1ZSkKKyAgICBlbHNlOgorICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soYWxsX3RocmVhZHM9VHJ1ZSkKKworY2xhc3MgV2FpdGVyKFRocmVhZCk6CisgICAgIyBhdm9pZCBibG9ja2luZyBpZiB0aGUgbWFpbiB0aHJlYWQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKyAgICBkYWVtb24gPSBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIFRocmVhZC5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLnJ1bm5pbmcgPSBFdmVudCgpCisgICAgICAgIHNlbGYuc3RvcCA9IEV2ZW50KCkKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIHNlbGYucnVubmluZy5zZXQoKQorICAgICAgICBzZWxmLnN0b3Aud2FpdCgpCisKK3dhaXRlciA9IFdhaXRlcigpCit3YWl0ZXIuc3RhcnQoKQord2FpdGVyLnJ1bm5pbmcud2FpdCgpCitkdW1wKCkKK3dhaXRlci5zdG9wLnNldCgpCit3YWl0ZXIuam9pbigpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoZmlsZW5hbWU9cmVwcihmaWxlbmFtZSkpCisgICAgICAgIG91dHB1dCwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIG91dHB1dCA9ICdcbicuam9pbihvdXRwdXQpCisgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgbGluZW5vID0gOAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGluZW5vID0gMTAKKyAgICAgICAgcmVnZXggPSAiIiIKK15UaHJlYWQgMHhbMC05YS1mXSs6CisoPzogIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gW19hLXpdKworKXt7MSwzfX0gIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAyMyBpbiBydW4KKyAgRmlsZSAiLip0aHJlYWRpbmcucHkiLCBsaW5lIFswLTldKyBpbiBfYm9vdHN0cmFwX2lubmVyCisgIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gX2Jvb3RzdHJhcAorCitDdXJyZW50IHRocmVhZCBYWFg6CisgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSB7bGluZW5vfSBpbiBkdW1wCisgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAyOCBpbiA8bW9kdWxlPiQKKyIiIi5zdHJpcCgpCisgICAgICAgIHJlZ2V4ID0gcmVnZXguZm9ybWF0KGxpbmVubz1saW5lbm8pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX3RocmVhZHMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfdGhyZWFkcyhOb25lKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfdGhyZWFkc19maWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja190aHJlYWRzKGZpbGVuYW1lKQorCisgICAgZGVmIF9jaGVja19kdW1wX3RyYWNlYmFja3NfbGF0ZXIoc2VsZiwgcmVwZWF0LCBjYW5jZWwsIGZpbGVuYW1lLCBsb29wcyk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBob3cgbWFueSB0aW1lcyB0aGUgdHJhY2ViYWNrIGlzIHdyaXR0ZW4gaW4gdGltZW91dCB4IDIuNSBzZWNvbmRzLAorICAgICAgICBvciB0aW1lb3V0IHggMy41IHNlY29uZHMgaWYgY2FuY2VsIGlzIFRydWU6IDEsIDIgb3IgMyB0aW1lcyBkZXBlbmRpbmcKKyAgICAgICAgb24gcmVwZWF0IGFuZCBjYW5jZWwgb3B0aW9ucy4KKworICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICB0aW1lb3V0X3N0ciA9IHN0cihkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1USU1FT1VUKSkKKyAgICAgICAgY29kZSA9ICIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IHRpbWUKKworZGVmIGZ1bmModGltZW91dCwgcmVwZWF0LCBjYW5jZWwsIGZpbGUsIGxvb3BzKToKKyAgICBmb3IgbG9vcCBpbiByYW5nZShsb29wcyk6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja3NfbGF0ZXIodGltZW91dCwgcmVwZWF0PXJlcGVhdCwgZmlsZT1maWxlKQorICAgICAgICBpZiBjYW5jZWw6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrc19sYXRlcigpCisgICAgICAgIHRpbWUuc2xlZXAodGltZW91dCAqIDUpCisgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkKKwordGltZW91dCA9IHt0aW1lb3V0fQorcmVwZWF0ID0ge3JlcGVhdH0KK2NhbmNlbCA9IHtjYW5jZWx9Citsb29wcyA9IHtsb29wc30KK2lmIHtoYXNfZmlsZW5hbWV9OgorICAgIGZpbGUgPSBvcGVuKHtmaWxlbmFtZX0sICJ3YiIpCitlbHNlOgorICAgIGZpbGUgPSBOb25lCitmdW5jKHRpbWVvdXQsIHJlcGVhdCwgY2FuY2VsLCBmaWxlLCBsb29wcykKK2lmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgZmlsZS5jbG9zZSgpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCisgICAgICAgICAgICB0aW1lb3V0PVRJTUVPVVQsCisgICAgICAgICAgICByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgY2FuY2VsPWNhbmNlbCwKKyAgICAgICAgICAgIGxvb3BzPWxvb3BzLAorICAgICAgICAgICAgaGFzX2ZpbGVuYW1lPWJvb2woZmlsZW5hbWUpLAorICAgICAgICAgICAgZmlsZW5hbWU9cmVwcihmaWxlbmFtZSksCisgICAgICAgICkKKyAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICB0cmFjZSA9ICdcbicuam9pbih0cmFjZSkKKworICAgICAgICBpZiBub3QgY2FuY2VsOgorICAgICAgICAgICAgY291bnQgPSBsb29wcworICAgICAgICAgICAgaWYgcmVwZWF0OgorICAgICAgICAgICAgICAgIGNvdW50ICo9IDIKKyAgICAgICAgICAgIGhlYWRlciA9IHInVGltZW91dCBcKCVzXCkhXG5UaHJlYWQgMHhbMC05YS1mXSs6XG4nICUgdGltZW91dF9zdHIKKyAgICAgICAgICAgIHJlZ2V4ID0gZXhwZWN0ZWRfdHJhY2ViYWNrKDksIDIwLCBoZWFkZXIsIG1pbl9jb3VudD1jb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrc19sYXRlcicpLAorICAgICAgICAgICAgICAgICAgICAgJ25lZWQgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrc19sYXRlcigpJykKKyAgICBkZWYgY2hlY2tfZHVtcF90cmFjZWJhY2tzX2xhdGVyKHNlbGYsIHJlcGVhdD1GYWxzZSwgY2FuY2VsPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1GYWxzZSwgdHdpY2U9RmFsc2UpOgorICAgICAgICBpZiB0d2ljZToKKyAgICAgICAgICAgIGxvb3BzID0gMgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9vcHMgPSAxCisgICAgICAgIGlmIGZpbGU6CisgICAgICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2R1bXBfdHJhY2ViYWNrc19sYXRlcihyZXBlYXQsIGNhbmNlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxvb3BzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfZHVtcF90cmFjZWJhY2tzX2xhdGVyKHJlcGVhdCwgY2FuY2VsLCBOb25lLCBsb29wcykKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrc19sYXRlcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tzX2xhdGVyX3JlcGVhdChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja3NfbGF0ZXIocmVwZWF0PVRydWUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja3NfbGF0ZXJfY2FuY2VsKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrc19sYXRlcihjYW5jZWw9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrc19sYXRlcl9maWxlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrc19sYXRlcihmaWxlPVRydWUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja3NfbGF0ZXJfdHdpY2Uoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tzX2xhdGVyKHR3aWNlPVRydWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgInJlZ2lzdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIucmVnaXN0ZXIiKQorICAgIGRlZiBjaGVja19yZWdpc3RlcihzZWxmLCBmaWxlbmFtZT1GYWxzZSwgYWxsX3RocmVhZHM9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgIHVucmVnaXN0ZXI9RmFsc2UsIGNoYWluPUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlZ2lzdGVyIGEgaGFuZGxlciBkaXNwbGF5aW5nIHRoZSB0cmFjZWJhY2sgb24gYSB1c2VyIHNpZ25hbC4gUmFpc2UgdGhlCisgICAgICAgIHNpZ25hbCBhbmQgY2hlY2sgdGhlIHdyaXR0ZW4gdHJhY2ViYWNrLgorCisgICAgICAgIElmIGNoYWluIGlzIFRydWUsIGNoZWNrIHRoYXQgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyIGlzIGNhbGxlZC4KKworICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN5cworCitkZWYgZnVuYyhzaWdudW0pOgorICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKworZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgaGFuZGxlci5jYWxsZWQgPSBUcnVlCitoYW5kbGVyLmNhbGxlZCA9IEZhbHNlCisKK2V4aXRjb2RlID0gMAorc2lnbnVtID0ge3NpZ251bX0KK3VucmVnaXN0ZXIgPSB7dW5yZWdpc3Rlcn0KK2NoYWluID0ge2NoYWlufQorCitpZiB7aGFzX2ZpbGVuYW1lfToKKyAgICBmaWxlID0gb3Blbih7ZmlsZW5hbWV9LCAid2IiKQorZWxzZToKKyAgICBmaWxlID0gTm9uZQoraWYgY2hhaW46CisgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCitmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBmaWxlPWZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgYWxsX3RocmVhZHM9e2FsbF90aHJlYWRzfSwgY2hhaW49e2NoYWlufSkKK2lmIHVucmVnaXN0ZXI6CisgICAgZmF1bHRoYW5kbGVyLnVucmVnaXN0ZXIoc2lnbnVtKQorZnVuYyhzaWdudW0pCitpZiBjaGFpbiBhbmQgbm90IGhhbmRsZXIuY2FsbGVkOgorICAgIGlmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgIG91dHB1dCA9IGZpbGUKKyAgICBlbHNlOgorICAgICAgICBvdXRwdXQgPSBzeXMuc3RkZXJyCisgICAgcHJpbnQoIkVycm9yOiBzaWduYWwgaGFuZGxlciBub3QgY2FsbGVkISIsIGZpbGU9b3V0cHV0KQorICAgIGV4aXRjb2RlID0gMQoraWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICBmaWxlLmNsb3NlKCkKK3N5cy5leGl0KGV4aXRjb2RlKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KAorICAgICAgICAgICAgZmlsZW5hbWU9cmVwcihmaWxlbmFtZSksCisgICAgICAgICAgICBoYXNfZmlsZW5hbWU9Ym9vbChmaWxlbmFtZSksCisgICAgICAgICAgICBhbGxfdGhyZWFkcz1hbGxfdGhyZWFkcywKKyAgICAgICAgICAgIHNpZ251bT1zaWdudW0sCisgICAgICAgICAgICB1bnJlZ2lzdGVyPXVucmVnaXN0ZXIsCisgICAgICAgICAgICBjaGFpbj1jaGFpbiwKKyAgICAgICAgKQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIHRyYWNlID0gJ1xuJy5qb2luKHRyYWNlKQorICAgICAgICBpZiBub3QgdW5yZWdpc3RlcjoKKyAgICAgICAgICAgIGlmIGFsbF90aHJlYWRzOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0N1cnJlbnQgdGhyZWFkIFhYWDpcbicKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVnZXggPSAnVHJhY2ViYWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJworICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soNywgMjgsIHJlZ2V4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0cmFjZSwgcmVnZXgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCAnJykKKyAgICAgICAgaWYgdW5yZWdpc3RlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhpdGNvZGUsIDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoKQorCisgICAgZGVmIHRlc3RfdW5yZWdpc3RlcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWdpc3Rlcih1bnJlZ2lzdGVyPVRydWUpCisKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl9maWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19yZWdpc3RlcihmaWxlbmFtZT1maWxlbmFtZSkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX3RocmVhZHMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2NoYWluKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKGNoYWluPVRydWUpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZhdWx0SGFuZGxlclRlc3RzKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CmluZGV4IGYzMTI4ODIuLjFlNzA2NDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CkBAIC0yLDE4ICsyLDMzIEBACiBUZXN0cyBmb3IgZmlsZWlucHV0IG1vZHVsZS4KIE5pY2sgTWF0aGV3c29uCiAnJycKLQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgcmUKK2ltcG9ydCBmaWxlaW5wdXQKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHJ1bl91bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluayBhcyBzYWZlX3VubGluawotaW1wb3J0IHN5cywgcmUKKwordHJ5OgorICAgIGltcG9ydCBiejIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBiejIgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IGd6aXAKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBnemlwID0gTm9uZQorCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogZnJvbSBmaWxlaW5wdXQgaW1wb3J0IEZpbGVJbnB1dCwgaG9va19lbmNvZGVkCiAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluayBhcyBzYWZlX3VubGluaworCisKICMgVGhlIGZpbGVpbnB1dCBtb2R1bGUgaGFzIDIgaW50ZXJmYWNlczogdGhlIEZpbGVJbnB1dCBjbGFzcyB3aGljaCBkb2VzCiAjIGFsbCB0aGUgd29yaywgYW5kIGEgZmV3IGZ1bmN0aW9ucyAoaW5wdXQsIGV0Yy4pIHRoYXQgdXNlIGEgZ2xvYmFsIF9zdGF0ZQotIyB2YXJpYWJsZS4gIFdlIG9ubHkgdGVzdCB0aGUgRmlsZUlucHV0IGNsYXNzLCBzaW5jZSB0aGUgb3RoZXIgZnVuY3Rpb25zCi0jIG9ubHkgcHJvdmlkZSBhIHRoaW4gZmFjYWRlIG92ZXIgRmlsZUlucHV0LgorIyB2YXJpYWJsZS4KIAogIyBXcml0ZSBsaW5lcyAoYSBsaXN0IG9mIGxpbmVzKSB0byB0ZW1wIGZpbGUgbnVtYmVyIGksIGFuZCByZXR1cm4gdGhlCiAjIHRlbXAgZmlsZSdzIG5hbWUuCkBAIC0xMjEsNyArMTM2LDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChtLmdyb3VwKDEpKSwgZmkuZmlsZWxpbmVubygpKQogICAgICAgICBmaS5jbG9zZSgpCiAKK2NsYXNzIFVuY29uZGl0aW9uYWxseVJhaXNlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGNlcHRpb25fdHlwZSk6CisgICAgICAgIHNlbGYuZXhjZXB0aW9uX3R5cGUgPSBleGNlcHRpb25fdHlwZQorICAgICAgICBzZWxmLmludm9rZWQgPSBGYWxzZQorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmludm9rZWQgPSBUcnVlCisgICAgICAgIHJhaXNlIHNlbGYuZXhjZXB0aW9uX3R5cGUoKQorCiBjbGFzcyBGaWxlSW5wdXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKICAgICBkZWYgdGVzdF96ZXJvX2J5dGVfZmlsZXMoc2VsZik6CiAgICAgICAgIHQxID0gdDIgPSB0MyA9IHQ0ID0gTm9uZQogICAgICAgICB0cnk6CkBAIC0yMTksMTcgKzI0MywyMCBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJGaWxlSW5wdXQgc2hvdWxkIGNoZWNrIG9wZW5ob29rIGZvciBiZWluZyBjYWxsYWJsZSIpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcGFzcwotICAgICAgICAjIFhYWCBUaGUgcm90MTMgY29kZWMgd2FzIHJlbW92ZWQuCi0gICAgICAgICMgICAgIFNvIHRoaXMgdGVzdCBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIHVzZSBzb21ldGhpbmcgZWxzZS4KLSAgICAgICAgIyAgICAgKE9yIHBlcmhhcHMgdGhlIEFQSSBuZWVkcyB0byBjaGFuZ2Ugc28gd2UgY2FuIGp1c3QgcGFzcwotICAgICAgICAjICAgICBhbiBlbmNvZGluZyByYXRoZXIgdGhhbiB1c2luZyBhIGhvb2s/KQotIyMgICAgICAgICB0cnk6Ci0jIyAgICAgICAgICAgICB0MSA9IHdyaXRlVG1wKDEsIFsiQVxuQiJdLCBtb2RlPSJ3YiIpCi0jIyAgICAgICAgICAgICBmaSA9IEZpbGVJbnB1dChmaWxlcz10MSwgb3Blbmhvb2s9aG9va19lbmNvZGVkKCJyb3QxMyIpKQotIyMgICAgICAgICAgICAgbGluZXMgPSBsaXN0KGZpKQotIyMgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgWyJOXG4iLCAiTyJdKQotIyMgICAgICAgICBmaW5hbGx5OgotIyMgICAgICAgICAgICAgcmVtb3ZlX3RlbXBmaWxlcyh0MSkKKworICAgICAgICBjbGFzcyBDdXN0b21PcGVuSG9vazoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmludm9rZWQgPSBGYWxzZQorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLmludm9rZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW4oKmFyZ3MpCisKKyAgICAgICAgdCA9IHdyaXRlVG1wKDEsIFsiXG4iXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgIGN1c3RvbV9vcGVuX2hvb2sgPSBDdXN0b21PcGVuSG9vaygpCisgICAgICAgIHdpdGggRmlsZUlucHV0KFt0XSwgb3Blbmhvb2s9Y3VzdG9tX29wZW5faG9vaykgYXMgZmk6CisgICAgICAgICAgICBmaS5yZWFkbGluZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdXN0b21fb3Blbl9ob29rLmludm9rZWQsICJvcGVuaG9vayBub3QgaW52b2tlZCIpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgIHRyeToKQEAgLTI1NCw5ICsyODEsNTc2IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZW1vdmVfdGVtcGZpbGVzKHQxKQogCisgICAgZGVmIHRlc3RfZW1wdHlfZmlsZXNfbGlzdF9zcGVjaWZpZWRfdG9fY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVtdKSBhcyBmaToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmkuX2ZpbGVzLCAoJy0nLCkpCisKKyAgICBkZWYgdGVzdF9fZ2V0aXRlbV9fKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIHRoZSBjdXJyZW50CisgICAgICAgICAgIGxpbmUgbnVtYmVyIiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbImxpbmUxXG4iLCAibGluZTJcbiJdKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdKSBhcyBmaToKKyAgICAgICAgICAgIHJldHZhbDEgPSBmaVswXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR2YWwxLCAibGluZTFcbiIpCisgICAgICAgICAgICByZXR2YWwyID0gZmlbMV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0dmFsMiwgImxpbmUyXG4iKQorCisgICAgZGVmIHRlc3RfX2dldGl0ZW1fX2ludmFsaWRfa2V5KHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIGFuIGluZGV4IHVuZXF1YWwgdG8KKyAgICAgICAgICAgdGhlIGxpbmUgbnVtYmVyIiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbImxpbmUxXG4iLCAibGluZTJcbiJdKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdKSBhcyBmaToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBmaVsxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5hcmdzLCAoImFjY2Vzc2luZyBsaW5lcyBvdXQgb2Ygb3JkZXIiLCkpCisKKyAgICBkZWYgdGVzdF9fZ2V0aXRlbV9fZW9mKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIHRoZSBsaW5lIG51bWJlciBidXQgYXQKKyAgICAgICAgICAgZW5kLW9mLWlucHV0IiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVt0XSkgYXMgZmk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGZpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmFyZ3MsICgiZW5kIG9mIGlucHV0IHJlYWNoZWQiLCkpCisKKyAgICBkZWYgdGVzdF9uZXh0ZmlsZV9vc2Vycm9yX2RlbGV0aW5nX2JhY2t1cChzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgRmlsZUlucHV0Lm5leHRmaWxlKCkgd2hlbiB0aGUgYXR0ZW1wdCB0byBkZWxldGUKKyAgICAgICAgICAgdGhlIGJhY2t1cCBmaWxlIHdvdWxkIHJhaXNlIE9TRXJyb3IuICBUaGlzIGVycm9yIGlzIGV4cGVjdGVkIHRvIGJlCisgICAgICAgICAgIHNpbGVudGx5IGlnbm9yZWQiIiIKKworICAgICAgICBvc191bmxpbmtfb3JpZyA9IG9zLnVubGluaworICAgICAgICBvc191bmxpbmtfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgbmV4dChmaSkgIyBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgb3BlbmVkCisgICAgICAgICAgICAgICAgb3MudW5saW5rID0gb3NfdW5saW5rX3JlcGxhY2VtZW50CisgICAgICAgICAgICAgICAgZmkubmV4dGZpbGUoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rID0gb3NfdW5saW5rX29yaWcKKworICAgICAgICAjIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgdGVzdCBzY2VuYXJpbyB3YXMgYWN0dWFsbHkgaGl0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvc191bmxpbmtfcmVwbGFjZW1lbnQuaW52b2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJvcy51bmxpbmsoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfb3NfZnN0YXRfcmFpc2VzX09TRXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5yZWFkbGluZSgpIHdoZW4gb3MuZnN0YXQoKSByYWlzZXMgT1NFcnJvci4KKyAgICAgICAgICAgVGhpcyBleGNlcHRpb24gc2hvdWxkIGJlIHNpbGVudGx5IGRpc2NhcmRlZC4iIiIKKworICAgICAgICBvc19mc3RhdF9vcmlnID0gb3MuZnN0YXQKKyAgICAgICAgb3NfZnN0YXRfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgb3MuZnN0YXQgPSBvc19mc3RhdF9yZXBsYWNlbWVudAorICAgICAgICAgICAgICAgIGZpLnJlYWRsaW5lKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmZzdGF0ID0gb3NfZnN0YXRfb3JpZworCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zX2ZzdGF0X3JlcGxhY2VtZW50Lmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAib3MuZnN0YXQoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihvcywgImNobW9kIiksICJvcy5jaG1vZCBkb2VzIG5vdCBleGlzdCIpCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfb3NfY2htb2RfcmFpc2VzX09TRXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5yZWFkbGluZSgpIHdoZW4gb3MuY2htb2QoKSByYWlzZXMgT1NFcnJvci4KKyAgICAgICAgICAgVGhpcyBleGNlcHRpb24gc2hvdWxkIGJlIHNpbGVudGx5IGRpc2NhcmRlZC4iIiIKKworICAgICAgICBvc19jaG1vZF9vcmlnID0gb3MuY2htb2QKKyAgICAgICAgb3NfY2htb2RfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgb3MuY2htb2QgPSBvc19jaG1vZF9yZXBsYWNlbWVudAorICAgICAgICAgICAgICAgIGZpLnJlYWRsaW5lKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNobW9kID0gb3NfY2htb2Rfb3JpZworCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zX2NobW9kX3JlcGxhY2VtZW50Lmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAib3MuZnN0YXQoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgZGVmIHRlc3RfZmlsZW5vX3doZW5fVmFsdWVFcnJvcl9yYWlzZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEZpbGVub1JhaXNlc1ZhbHVlRXJyb3IoVW5jb25kaXRpb25hbGx5UmFpc2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIFVuY29uZGl0aW9uYWxseVJhaXNlLl9faW5pdF9fKHNlbGYsIFZhbHVlRXJyb3IpCisgICAgICAgICAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX19jYWxsX18oKQorCisgICAgICAgIHVuY29uZGl0aW9uYWxseV9yYWlzZV9WYWx1ZUVycm9yID0gRmlsZW5vUmFpc2VzVmFsdWVFcnJvcigpCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbIlxuIl0pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZW1vdmVfdGVtcGZpbGVzLCB0KQorICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0pIGFzIGZpOgorICAgICAgICAgICAgZmlsZV9iYWNrdXAgPSBmaS5fZmlsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZpLl9maWxlID0gdW5jb25kaXRpb25hbGx5X3JhaXNlX1ZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmaS5maWxlbm8oKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmaS5fZmlsZSA9IGZpbGVfYmFja3VwICMgbWFrZSBzdXJlIHRoZSBmaWxlIGdldHMgY2xlYW5lZCB1cAorCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHVuY29uZGl0aW9uYWxseV9yYWlzZV9WYWx1ZUVycm9yLmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAiX2ZpbGUuZmlsZW5vKCkgd2FzIG5vdCBpbnZva2VkIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgLTEsICJmaWxlbm8oKSBzaG91bGQgcmV0dXJuIC0xIikKKworY2xhc3MgTW9ja0ZpbGVJbnB1dDoKKyAgICAiIiJBIGNsYXNzIHRoYXQgbW9ja3Mgb3V0IGZpbGVpbnB1dC5GaWxlSW5wdXQgZm9yIHVzZSBkdXJpbmcgdW5pdCB0ZXN0cyIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVzPU5vbmUsIGlucGxhY2U9RmFsc2UsIGJhY2t1cD0iIiwgYnVmc2l6ZT0wLAorICAgICAgICAgICAgICAgICBtb2RlPSJyIiwgb3Blbmhvb2s9Tm9uZSk6CisgICAgICAgIHNlbGYuZmlsZXMgPSBmaWxlcworICAgICAgICBzZWxmLmlucGxhY2UgPSBpbnBsYWNlCisgICAgICAgIHNlbGYuYmFja3VwID0gYmFja3VwCisgICAgICAgIHNlbGYuYnVmc2l6ZSA9IGJ1ZnNpemUKKyAgICAgICAgc2VsZi5tb2RlID0gbW9kZQorICAgICAgICBzZWxmLm9wZW5ob29rID0gb3Blbmhvb2sKKyAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50cyA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxhbWJkYTogMCkKKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVzID0ge30KKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siY2xvc2UiXSArPSAxCisKKyAgICBkZWYgbmV4dGZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbIm5leHRmaWxlIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJuZXh0ZmlsZSJdCisKKyAgICBkZWYgZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImZpbGVuYW1lIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJmaWxlbmFtZSJdCisKKyAgICBkZWYgbGluZW5vKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJsaW5lbm8iXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImxpbmVubyJdCisKKyAgICBkZWYgZmlsZWxpbmVubyhzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siZmlsZWxpbmVubyJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1siZmlsZWxpbmVubyJdCisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJmaWxlbm8iXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImZpbGVubyJdCisKKyAgICBkZWYgaXNmaXJzdGxpbmUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImlzZmlyc3RsaW5lIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJpc2ZpcnN0bGluZSJdCisKKyAgICBkZWYgaXNzdGRpbihzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siaXNzdGRpbiJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1siaXNzdGRpbiJdCisKK2NsYXNzIEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgdW5pdCB0ZXN0cyBmb3IgdGhlIGdsb2JhbCBmdW5jdGlvbiBvZgorICAgICAgIHRoZSBmaWxlaW5wdXQgbW9kdWxlLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9vcmlnX3N0YXRlID0gZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICBzZWxmLl9vcmlnX0ZpbGVJbnB1dCA9IGZpbGVpbnB1dC5GaWxlSW5wdXQKKyAgICAgICAgZmlsZWlucHV0LkZpbGVJbnB1dCA9IE1vY2tGaWxlSW5wdXQKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgZmlsZWlucHV0LkZpbGVJbnB1dCA9IHNlbGYuX29yaWdfRmlsZUlucHV0CisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBzZWxmLl9vcmlnX3N0YXRlCisKKyAgICBkZWYgYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oc2VsZiwgbW9ja19maWxlX2lucHV0LCBtZXRob2RfbmFtZSk6CisgICAgICAgICMgYXNzZXJ0IHRoYXQgdGhlIG1ldGhvZCB3aXRoIHRoZSBnaXZlbiBuYW1lIHdhcyBpbnZva2VkIG9uY2UKKyAgICAgICAgYWN0dWFsX2NvdW50ID0gbW9ja19maWxlX2lucHV0Lmludm9jYXRpb25fY291bnRzW21ldGhvZF9uYW1lXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9jb3VudCwgMSwgbWV0aG9kX25hbWUpCisgICAgICAgICMgYXNzZXJ0IHRoYXQgbm8gb3RoZXIgdW5leHBlY3RlZCBtZXRob2RzIHdlcmUgaW52b2tlZAorICAgICAgICBhY3R1YWxfdG90YWxfY291bnQgPSBsZW4obW9ja19maWxlX2lucHV0Lmludm9jYXRpb25fY291bnRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF90b3RhbF9jb3VudCwgMSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfaW5wdXQoQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaW5wdXQoKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmVfYW5kX3N0YXRlX2ZpbGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIGZpbGVpbnB1dC5pbnB1dCgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZQorICAgICAgICAgICBhbmQgaXRzIF9maWxlIGF0dHJpYnV0ZSBpcyBhbHNvIG5vdCBOb25lLiAgRXhwZWN0IFJ1bnRpbWVFcnJvciB0bworICAgICAgICAgICBiZSByYWlzZWQgd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZSBhbmQgZm9yIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gKm5vdCogYmUgbW9kaWZpZWQuIiIiCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLl9maWxlID0gb2JqZWN0KCkKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5pbnB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJpbnB1dCgpIGFscmVhZHkgYWN0aXZlIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhpbnN0YW5jZSwgZmlsZWlucHV0Ll9zdGF0ZSwgImZpbGVpbnB1dC5fc3RhdGUiKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmVfYW5kX3N0YXRlX2ZpbGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgZmlsZWlucHV0LmlucHV0KCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lCisgICAgICAgICAgIGJ1dCBpdHMgX2ZpbGUgYXR0cmlidXRlICppcyogTm9uZS4gIEV4cGVjdCBpdCB0byBjcmVhdGUgYW5kIHJldHVybgorICAgICAgICAgICBhIG5ldyBmaWxlaW5wdXQuRmlsZUlucHV0IG9iamVjdCB3aXRoIGFsbCBtZXRob2QgcGFyYW1ldGVycyBwYXNzZWQKKyAgICAgICAgICAgZXhwbGljaXRseSB0byB0aGUgX19pbml0X18oKSBtZXRob2Q7IGFsc28gZW5zdXJlIHRoYXQKKyAgICAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSBpcyBzZXQgdG8gdGhlIHJldHVybmVkIGluc3RhbmNlLiIiIgorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5fZmlsZSA9IE5vbmUKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHNlbGYuZG9fdGVzdF9jYWxsX2lucHV0KCkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIGZpbGVpbnB1dC5pbnB1dCgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lCisgICAgICAgICAgIEV4cGVjdCBpdCB0byBjcmVhdGUgYW5kIHJldHVybiBhIG5ldyBmaWxlaW5wdXQuRmlsZUlucHV0IG9iamVjdAorICAgICAgICAgICB3aXRoIGFsbCBtZXRob2QgcGFyYW1ldGVycyBwYXNzZWQgZXhwbGljaXRseSB0byB0aGUgX19pbml0X18oKQorICAgICAgICAgICBtZXRob2Q7IGFsc28gZW5zdXJlIHRoYXQgZmlsZWlucHV0Ll9zdGF0ZSBpcyBzZXQgdG8gdGhlIHJldHVybmVkCisgICAgICAgICAgIGluc3RhbmNlLiIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICBzZWxmLmRvX3Rlc3RfY2FsbF9pbnB1dCgpCisKKyAgICBkZWYgZG9fdGVzdF9jYWxsX2lucHV0KHNlbGYpOgorICAgICAgICAiIiJUZXN0cyB0aGF0IGZpbGVpbnB1dC5pbnB1dCgpIGNyZWF0ZXMgYSBuZXcgZmlsZWlucHV0LkZpbGVJbnB1dAorICAgICAgICAgICBvYmplY3QsIHBhc3NpbmcgdGhlIGdpdmVuIHBhcmFtZXRlcnMgdW5tb2RpZmllZCB0bworICAgICAgICAgICBmaWxlaW5wdXQuRmlsZUlucHV0Ll9faW5pdF9fKCkuICBOb3RlIHRoYXQgdGhpcyB0ZXN0IGRlcGVuZHMgb24gdGhlCisgICAgICAgICAgIG1vbmtleSBwYXRjaGluZyBvZiBmaWxlaW5wdXQuRmlsZUlucHV0IGRvbmUgYnkgc2V0VXAoKS4iIiIKKyAgICAgICAgZmlsZXMgPSBvYmplY3QoKQorICAgICAgICBpbnBsYWNlID0gb2JqZWN0KCkKKyAgICAgICAgYmFja3VwID0gb2JqZWN0KCkKKyAgICAgICAgYnVmc2l6ZSA9IG9iamVjdCgpCisgICAgICAgIG1vZGUgPSBvYmplY3QoKQorICAgICAgICBvcGVuaG9vayA9IG9iamVjdCgpCisKKyAgICAgICAgIyBjYWxsIGZpbGVpbnB1dC5pbnB1dCgpIHdpdGggZGlmZmVyZW50IHZhbHVlcyBmb3IgZWFjaCBhcmd1bWVudAorICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaW5wdXQoZmlsZXM9ZmlsZXMsIGlucGxhY2U9aW5wbGFjZSwgYmFja3VwPWJhY2t1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemU9YnVmc2l6ZSwKKyAgICAgICAgICAgIG1vZGU9bW9kZSwgb3Blbmhvb2s9b3Blbmhvb2spCisKKyAgICAgICAgIyBlbnN1cmUgZmlsZWlucHV0Ll9zdGF0ZSB3YXMgc2V0IHRvIHRoZSByZXR1cm5lZCBvYmplY3QKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXN1bHQsIGZpbGVpbnB1dC5fc3RhdGUsICJmaWxlaW5wdXQuX3N0YXRlIikKKworICAgICAgICAjIGVuc3VyZSB0aGUgcGFyYW1ldGVycyB0byBmaWxlaW5wdXQuaW5wdXQoKSB3ZXJlIHBhc3NlZCBkaXJlY3RseQorICAgICAgICAjIHRvIEZpbGVJbnB1dC5fX2luaXRfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZXMsIHJlc3VsdC5maWxlcywgImZpbGVzIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhpbnBsYWNlLCByZXN1bHQuaW5wbGFjZSwgImlucGxhY2UiKQorICAgICAgICBzZWxmLmFzc2VydElzKGJhY2t1cCwgcmVzdWx0LmJhY2t1cCwgImJhY2t1cCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYnVmc2l6ZSwgcmVzdWx0LmJ1ZnNpemUsICJidWZzaXplIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2RlLCByZXN1bHQubW9kZSwgIm1vZGUiKQorICAgICAgICBzZWxmLmFzc2VydElzKG9wZW5ob29rLCByZXN1bHQub3Blbmhvb2ssICJvcGVuaG9vayIpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2Nsb3NlKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmNsb3NlKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgZmlsZWlucHV0LmNsb3NlKCkgZG9lcyBub3RoaW5nIGlmIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgaXMgTm9uZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICBmaWxlaW5wdXQuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgZmlsZWlucHV0LmNsb3NlKCkgaW52b2tlcyBjbG9zZSgpIG9uIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgYW5kIHNldHMgX3N0YXRlPU5vbmUiIiIKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIGZpbGVpbnB1dC5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJjbG9zZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X25leHRmaWxlKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0Lm5leHRmaWxlKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5uZXh0ZmlsZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5uZXh0ZmlsZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0Lm5leHRmaWxlKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUubmV4dGZpbGUoKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgbmV4dGZpbGVfcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1sibmV4dGZpbGUiXSA9IG5leHRmaWxlX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0Lm5leHRmaWxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgIm5leHRmaWxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIG5leHRmaWxlX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfZmlsZW5hbWUoQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuZmlsZW5hbWUoKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVuYW1lKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmZpbGVuYW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZW5hbWUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IGludm9rZXMgZmlsZWlucHV0Ll9zdGF0ZS5maWxlbmFtZSgpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBmaWxlbmFtZV9yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJmaWxlbmFtZSJdID0gZmlsZW5hbWVfcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQuZmlsZW5hbWUoKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiZmlsZW5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgZmlsZW5hbWVfcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9saW5lbm8oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQubGluZW5vKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5saW5lbm8oKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQubGluZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQubGluZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUubGluZW5vKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGxpbmVub19yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJsaW5lbm8iXSA9IGxpbmVub19yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5saW5lbm8oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAibGluZW5vIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIGxpbmVub19yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2ZpbGVsaW5lbm8oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuZmlsZWxpbmVubygpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZWxpbmVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5maWxlbGluZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZWxpbmVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmZpbGVsaW5lbm8oKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgZmlsZWxpbmVub19yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJmaWxlbGluZW5vIl0gPSBmaWxlbGluZW5vX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0LmZpbGVsaW5lbm8oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiZmlsZWxpbmVubyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBmaWxlbGluZW5vX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfZmlsZW5vKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmZpbGVubygpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmZpbGVubygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmZpbGVubygpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBmaWxlbm9fcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1siZmlsZW5vIl0gPSBmaWxlbm9fcmV0dmFsCisgICAgICAgIGluc3RhbmNlLmZpbGVub19yZXR2YWwgPSBmaWxlbm9fcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQuZmlsZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgImZpbGVubyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBmaWxlbm9fcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9pc2ZpcnN0bGluZShCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNmaXJzdGxpbmUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQuaXNmaXJzdGxpbmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgibm8gYWN0aXZlIGlucHV0KCkiLCksIGNtLmV4Y2VwdGlvbi5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmlzZmlyc3RsaW5lKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGlzZmlyc3RsaW5lX3JldHZhbCA9IG9iamVjdCgpCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLnJldHVybl92YWx1ZXNbImlzZmlyc3RsaW5lIl0gPSBpc2ZpcnN0bGluZV9yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJpc2ZpcnN0bGluZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBpc2ZpcnN0bGluZV9yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2lzc3RkaW4oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaXNzdGRpbigpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNzdGRpbigpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5pc3N0ZGluKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNzdGRpbigpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmlzc3RkaW4oKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgaXNzdGRpbl9yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJpc3N0ZGluIl0gPSBpc3N0ZGluX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0Lmlzc3RkaW4oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiaXNzdGRpbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBpc3N0ZGluX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgSW52b2NhdGlvblJlY29yZGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50ID0gMAorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnQgKz0gMQorICAgICAgICBzZWxmLmxhc3RfaW52b2NhdGlvbiA9IChhcmdzLCBrd2FyZ3MpCisKK2NsYXNzIFRlc3RfaG9va19jb21wcmVzc2VkKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaG9va19jb21wcmVzc2VkKCkiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5mYWtlX29wZW4gPSBJbnZvY2F0aW9uUmVjb3JkZXIoKQorCisgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiIiwgMSkKKworICAgIGRlZiB0ZXN0X25vX2V4dChzZWxmKToKKyAgICAgICAgc2VsZi5kb190ZXN0X3VzZV9idWlsdGluX29wZW4oImFiY2QiLCAyKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ3ppcCwgIlJlcXVpcmVzIGd6aXAgYW5kIHpsaWIiKQorICAgIGRlZiB0ZXN0X2d6X2V4dF9mYWtlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9vcGVuID0gZ3ppcC5vcGVuCisgICAgICAgIGd6aXAub3BlbiA9IHNlbGYuZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoInRlc3QuZ3oiLCAzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZ3ppcC5vcGVuID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4uaW52b2NhdGlvbl9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5sYXN0X2ludm9jYXRpb24sICgoInRlc3QuZ3oiLCAzKSwge30pKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoYnoyLCAiUmVxdWlyZXMgYnoyIikKKyAgICBkZWYgdGVzdF9iejJfZXh0X2Zha2Uoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX29wZW4gPSBiejIuQloyRmlsZQorICAgICAgICBiejIuQloyRmlsZSA9IHNlbGYuZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoInRlc3QuYnoyIiwgNCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6Mi5CWjJGaWxlID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4uaW52b2NhdGlvbl9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5sYXN0X2ludm9jYXRpb24sICgoInRlc3QuYnoyIiwgNCksIHt9KSkKKworICAgIGRlZiB0ZXN0X2JsYWhfZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiYWJjZC5ibGFoIiwgNSkKKworICAgIGRlZiB0ZXN0X2d6X2V4dF9idWlsdGluKHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiYWJjZC5HeiIsIDYpCisKKyAgICBkZWYgdGVzdF9iejJfZXh0X2J1aWx0aW4oc2VsZik6CisgICAgICAgIHNlbGYuZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKCJhYmNkLkJ6MiIsIDcpCisKKyAgICBkZWYgZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKHNlbGYsIGZpbGVuYW1lLCBtb2RlKToKKyAgICAgICAgb3JpZ2luYWxfb3BlbiA9IHNlbGYucmVwbGFjZV9idWlsdGluX29wZW4oc2VsZi5mYWtlX29wZW4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnJlcGxhY2VfYnVpbHRpbl9vcGVuKG9yaWdpbmFsX29wZW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5pbnZvY2F0aW9uX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmFrZV9vcGVuLmxhc3RfaW52b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKGZpbGVuYW1lLCBtb2RlKSwge30pKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiByZXBsYWNlX2J1aWx0aW5fb3BlbihuZXdfb3Blbl9mdW5jKToKKyAgICAgICAgb3JpZ2luYWxfb3BlbiA9IGJ1aWx0aW5zLm9wZW4KKyAgICAgICAgYnVpbHRpbnMub3BlbiA9IG5ld19vcGVuX2Z1bmMKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsX29wZW4KKworY2xhc3MgVGVzdF9ob29rX2VuY29kZWQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5ob29rX2VuY29kZWQoKSIiIgorCisgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgIGVuY29kaW5nID0gb2JqZWN0KCkKKyAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfZW5jb2RlZChlbmNvZGluZykKKworICAgICAgICBmYWtlX29wZW4gPSBJbnZvY2F0aW9uUmVjb3JkZXIoKQorICAgICAgICBvcmlnaW5hbF9vcGVuID0gYnVpbHRpbnMub3BlbgorICAgICAgICBidWlsdGlucy5vcGVuID0gZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb2JqZWN0KCkKKyAgICAgICAgICAgIG1vZGUgPSBvYmplY3QoKQorICAgICAgICAgICAgb3Blbl9yZXN1bHQgPSByZXN1bHQoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBidWlsdGlucy5vcGVuID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFrZV9vcGVuLmludm9jYXRpb25fY291bnQsIDEpCisKKyAgICAgICAgYXJncywga3dhcmdzID0gZmFrZV9vcGVuLmxhc3RfaW52b2NhdGlvbgorICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMF0sIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMV0sIG1vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoa3dhcmdzLnBvcCgnZW5jb2RpbmcnKSwgZW5jb2RpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa3dhcmdzKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEJ1ZmZlclNpemVzVGVzdHMsIEZpbGVJbnB1dFRlc3RzKQorICAgIHJ1bl91bml0dGVzdCgKKyAgICAgICAgQnVmZmVyU2l6ZXNUZXN0cywKKyAgICAgICAgRmlsZUlucHV0VGVzdHMsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2lucHV0LAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9jbG9zZSwKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfbmV4dGZpbGUsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVuYW1lLAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9saW5lbm8sCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVsaW5lbm8sCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVubywKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfaXNmaXJzdGxpbmUsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2lzc3RkaW4sCisgICAgICAgIFRlc3RfaG9va19jb21wcmVzc2VkLAorICAgICAgICBUZXN0X2hvb2tfZW5jb2RlZCwKKyAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlvLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKaW5kZXggNTUwNGVhMy4uOTA2OTUyYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKQEAgLTIsNiArMiw3IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCBvcworaW1wb3J0IGlvCiBpbXBvcnQgZXJybm8KIGltcG9ydCB1bml0dGVzdAogZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKQEAgLTM0NywxMCArMzQ4LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDEwKQogICAgICAgICBmLnRydW5jYXRlKDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDEwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VlaygwLCBvcy5TRUVLX0VORCksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZWVrKDAsIGlvLlNFRUtfRU5EKSwgNSkKICAgICAgICAgZi50cnVuY2F0ZSgxNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWsoMCwgb3MuU0VFS19FTkQpLCAxNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWsoMCwgaW8uU0VFS19FTkQpLCAxNSkKICAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdFRydW5jYXRlT25XaW5kb3dzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKaW5kZXggNGQ3YmJiYS4uNTAyMjkyZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CkBAIC04OCw3ICs4OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAiICAtMHgzLnAtMSAgIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICIgICsweDMucC0xICAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KCIgIDI1LmUtMSAgIiksIDIuNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LmZjbXAoZmxvYXQoIiAgLjI1ZS0xICAiKSwgLjAyNSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoIiAgLjI1ZS0xICAiKSwgLjAyNSkKIAogICAgIGRlZiB0ZXN0X2Zsb2F0Y29udmVyc2lvbihzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBjYWxscyB0byBfX2Zsb2F0X18oKSB3b3JrIHByb3Blcmx5CkBAIC04NjAsMTUgKzg2MCwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cigxZTMwMCAqIDFlMzAwICogMCksICJuYW4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cigtMWUzMDAgKiAxZTMwMCAqIDApLCAibmFuIikKIAotICAgIGRlZiBub3Rlc3RfZmxvYXRfbmFuKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoTkFOLmlzX25hbigpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKElORi5pc19uYW4oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoMC4pLmlzX25hbigpKQorICAgIGRlZiB0ZXN0X2luZl9zaWducyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5c2lnbigxLjAsIGZsb2F0KCdpbmYnKSksIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5c2lnbigxLjAsIGZsb2F0KCctaW5mJykpLCAtMS4wKQogCi0gICAgZGVmIG5vdGVzdF9mbG9hdF9pbmYoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShJTkYuaXNfaW5mKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoTkFOLmlzX2luZigpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCgwLikuaXNfaW5mKCkpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ2V0YXR0cihzeXMsICdmbG9hdF9yZXByX3N0eWxlJywgJycpID09ICdzaG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgImFwcGxpZXMgb25seSB3aGVuIHVzaW5nIHNob3J0IGZsb2F0IHJlcHIgc3R5bGUiKQorICAgIGRlZiB0ZXN0X25hbl9zaWducyhzZWxmKToKKyAgICAgICAgIyBXaGVuIHVzaW5nIHRoZSBkdG9hLmMgY29kZSwgdGhlIHNpZ24gb2YgZmxvYXQoJ25hbicpIHNob3VsZAorICAgICAgICAjIGJlIHByZWRpY3RhYmxlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlzaWduKDEuMCwgZmxvYXQoJ25hbicpKSwgMS4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlzaWduKDEuMCwgZmxvYXQoJy1uYW4nKSksIC0xLjApCisKIAogZnJvbUhleCA9IGZsb2F0LmZyb21oZXgKIHRvSGV4ID0gZmxvYXQuaGV4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CmluZGV4IDdmYTk1MGQuLmI2ZTI1NDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CkBAIC0xLDQgKzEsNSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRlc3RGYWlsZWQKK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB0ZXN0LnN1cHBvcnQgYXMgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0yNjMsNiArMjY0LDUxIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoJyIlKmQiJShtYXhzaXplLCAtMTI3KSBzaG91bGQgZmFpbCcpCiAKKyAgICBkZWYgdGVzdF9ub25fYXNjaWkoc2VsZik6CisgICAgICAgIHRlc3Rmb3JtYXQoIlx1MjBhYz0lZiIsICgxLjAsKSwgIlx1MjBhYz0xLjAwMDAwMCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoImFiYyIsICJcdTIwMDc8NSIpLCAiYWJjXHUyMDA3XHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzLCAiXHUyMDA3PDUiKSwgIjEyM1x1MjAwN1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyLjMsICJcdTIwMDc8NiIpLCAiMTIuM1x1MjAwN1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDBqLCAiXHUyMDA3PDQiKSwgIjBqXHUyMDA3XHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMSsyaiwgIlx1MjAwNzw4IiksICIoMSsyailcdTIwMDdcdTIwMDciKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KCJhYmMiLCAiXHUyMDA3PjUiKSwgIlx1MjAwN1x1MjAwN2FiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMywgIlx1MjAwNz41IiksICJcdTIwMDdcdTIwMDcxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMi4zLCAiXHUyMDA3PjYiKSwgIlx1MjAwN1x1MjAwNzEyLjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxKzJqLCAiXHUyMDA3PjgiKSwgIlx1MjAwN1x1MjAwNygxKzJqKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDBqLCAiXHUyMDA3PjQiKSwgIlx1MjAwN1x1MjAwNzBqIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgiYWJjIiwgIlx1MjAwN141IiksICJcdTIwMDdhYmNcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjMsICJcdTIwMDdeNSIpLCAiXHUyMDA3MTIzXHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIuMywgIlx1MjAwN142IiksICJcdTIwMDcxMi4zXHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMSsyaiwgIlx1MjAwN144IiksICJcdTIwMDcoMSsyailcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgwaiwgIlx1MjAwN140IiksICJcdTIwMDcwalx1MjAwNyIpCisKKyAgICBkZWYgdGVzdF9sb2NhbGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9sZGxvYyA9IGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCkKKyAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgJycpCisgICAgICAgIGV4Y2VwdCBsb2NhbGUuRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQ2Fubm90IHNldCBsb2NhbGU6IHt9Ii5mb3JtYXQoZXJyKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9jYWxlY29udiA9IGxvY2FsZS5sb2NhbGVjb252KCkKKyAgICAgICAgICAgIHNlcCA9IGxvY2FsZWNvbnZbJ3Rob3VzYW5kc19zZXAnXQorICAgICAgICAgICAgcG9pbnQgPSBsb2NhbGVjb252WydkZWNpbWFsX3BvaW50J10KKworICAgICAgICAgICAgdGV4dCA9IGZvcm1hdCgxMjM0NTY3ODksICJuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VwLCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnJlcGxhY2Uoc2VwLCAnJyksICcxMjM0NTY3ODknKQorCisgICAgICAgICAgICB0ZXh0ID0gZm9ybWF0KDEyMzQuNSwgIm4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZXAsIHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBvaW50LCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnJlcGxhY2Uoc2VwLCAnJyksICcxMjM0JyArIHBvaW50ICsgJzUnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCBvbGRsb2MpCisKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRm9ybWF0VGVzdCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQppbmRleCAwODRhZTBjLi4xZmFkOTIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQpAQCAtNDAxLDE0ICs0MDEsMTAgQEAKIAogICAgIGRlZiB0ZXN0TWl4aW5nV2l0aERlY2ltYWwoc2VsZik6CiAgICAgICAgICMgRGVjaW1hbCByZWZ1c2VzIG1peGVkIGFyaXRobWV0aWMgKGJ1dCBub3QgbWl4ZWQgY29tcGFyaXNvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGUocykgZm9yICs6ICdGcmFjdGlvbicgYW5kICdEZWNpbWFsJyIsCi0gICAgICAgICAgICBvcGVyYXRvci5hZGQsIEYoMywxMSksIERlY2ltYWwoJzMuMTQxNTkyNicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBUeXBlRXJyb3IsCi0gICAgICAgICAgICAidW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlKHMpIGZvciArOiAnRGVjaW1hbCcgYW5kICdGcmFjdGlvbiciLAotICAgICAgICAgICAgb3BlcmF0b3IuYWRkLCBEZWNpbWFsKCczLjE0MTU5MjYnKSwgRigzLDExKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEYoMywxMSksIERlY2ltYWwoJzMuMTQxNTkyNicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE1OTI2JyksIEYoMywxMSkpCiAKICAgICBkZWYgdGVzdENvbXBhcmlzb25zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoRigxLCAyKSA8IEYoMiwgMykpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zyb3plbi5weSBiL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CmluZGV4IDUyNDNlYmIuLmZkNjc2MWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CkBAIC01LDYgKzUsMTIgQEAKIGltcG9ydCBzeXMKIAogY2xhc3MgRnJvemVuVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbW9kdWxlX2F0dHJzID0gZnJvemVuc2V0KFsnX19idWlsdGluc19fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX25hbWVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nXSkKKyAgICBwYWNrYWdlX2F0dHJzID0gZnJvemVuc2V0KGxpc3QobW9kdWxlX2F0dHJzKSArIFsnX19wYXRoX18nXSkKKwogICAgIGRlZiB0ZXN0X2Zyb3plbihzZWxmKToKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICB0cnk6CkBAIC0xMiw3ICsxOCw5IEBACiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImltcG9ydCBfX2hlbGxvX18gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9faGVsbG9fXy5pbml0aWFsaXplZCwgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX2hlbGxvX18pKSwgNywgZGlyKF9faGVsbG9fXykpCisgICAgICAgICAgICBleHBlY3QgPSBzZXQoc2VsZi5tb2R1bGVfYXR0cnMpCisgICAgICAgICAgICBleHBlY3QuYWRkKCdpbml0aWFsaXplZCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19oZWxsb19fKSksIGV4cGVjdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCiAKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CkBAIC0yMSwxMCArMjksMTMgQEAKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyB4OgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiaW1wb3J0IF9fcGhlbGxvX18gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uaW5pdGlhbGl6ZWQsIFRydWUpCisgICAgICAgICAgICBleHBlY3QgPSBzZXQoc2VsZi5wYWNrYWdlX2F0dHJzKQorICAgICAgICAgICAgZXhwZWN0LmFkZCgnaW5pdGlhbGl6ZWQnKQogICAgICAgICAgICAgaWYgbm90ICJfX3BoZWxsb19fLnNwYW0iIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDgsIGRpcihfX3BoZWxsb19fKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19waGVsbG9fXykpLCBleHBlY3QpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDksIGRpcihfX3BoZWxsb19fKSkKKyAgICAgICAgICAgICAgICBleHBlY3QuYWRkKCdzcGFtJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19waGVsbG9fXykpLCBleHBlY3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uX19wYXRoX18sIFtfX3BoZWxsb19fLl9fbmFtZV9fXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCiAKQEAgLTM0LDggKzQ1LDEzIEBACiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImltcG9ydCBfX3BoZWxsb19fLnNwYW0gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uc3BhbS5pbml0aWFsaXplZCwgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fLnNwYW0pKSwgNykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDkpCisgICAgICAgICAgICBzcGFtX2V4cGVjdCA9IHNldChzZWxmLm1vZHVsZV9hdHRycykKKyAgICAgICAgICAgIHNwYW1fZXhwZWN0LmFkZCgnaW5pdGlhbGl6ZWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZGlyKF9fcGhlbGxvX18uc3BhbSkpLCBzcGFtX2V4cGVjdCkKKyAgICAgICAgICAgIHBoZWxsb19leHBlY3QgPSBzZXQoc2VsZi5wYWNrYWdlX2F0dHJzKQorICAgICAgICAgICAgcGhlbGxvX2V4cGVjdC5hZGQoJ2luaXRpYWxpemVkJykKKyAgICAgICAgICAgIHBoZWxsb19leHBlY3QuYWRkKCdzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGRpcihfX3BoZWxsb19fKSksIHBoZWxsb19leHBlY3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQogCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKaW5kZXggNzFiYzIzZS4uNzAyOGY0NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKQEAgLTIyLDEwICsyMiwyNSBAQAogdGhyZWFkaW5nID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCiAjIHRoZSBkdW1teSBkYXRhIHJldHVybmVkIGJ5IHNlcnZlciBvdmVyIHRoZSBkYXRhIGNoYW5uZWwgd2hlbgotIyBSRVRSLCBMSVNUIGFuZCBOTFNUIGNvbW1hbmRzIGFyZSBpc3N1ZWQKKyMgUkVUUiwgTElTVCwgTkxTVCwgTUxTRCBjb21tYW5kcyBhcmUgaXNzdWVkCiBSRVRSX0RBVEEgPSAnYWJjZGUxMjM0NVxyXG4nICogMTAwMAogTElTVF9EQVRBID0gJ2Zvb1xyXG5iYXJcclxuJwogTkxTVF9EQVRBID0gJ2Zvb1xyXG5iYXJcclxuJworTUxTRF9EQVRBID0gKCJ0eXBlPWNkaXI7cGVybT1lbDt1bmlxdWU9PWtlVk8xK1pGNDsgdGVzdFxyXG4iCisgICAgICAgICAgICAgInR5cGU9cGRpcjtwZXJtPWU7dW5pcXVlPT1rZVZPMStkPzM7IC4uXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1PUy51bml4PXNsaW5rOi9mb29iYXI7cGVybT07dW5pcXVlPT1rZVZPMSs0RzQ7IGZvb2JhclxyXG4iCisgICAgICAgICAgICAgInR5cGU9T1MudW5peD1jaHItMTMvMjk7cGVybT07dW5pcXVlPT1rZVZPMSs1RzQ7IGRldmljZVxyXG4iCisgICAgICAgICAgICAgInR5cGU9T1MudW5peD1ibGstMTEvMTA4O3Blcm09O3VuaXF1ZT09a2VWTzErNkc0OyBibG9ja1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPWF3cjt1bmlxdWU9PWtlVk8xKzhHNDsgd3JpdGFibGVcclxuIgorICAgICAgICAgICAgICJ0eXBlPWRpcjtwZXJtPWNwbWVsO3VuaXF1ZT09a2VWTzErN0c0OyBwcm9taXNjdW91c1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZGlyO3Blcm09O3VuaXF1ZT09a2VWTzErMXQyOyBuby1leGVjXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xK0VHNDsgdHdvIHdvcmRzXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xK0lINDsgIGxlYWRpbmcgc3BhY2VcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErMUc0OyBmaWxlMVxyXG4iCisgICAgICAgICAgICAgInR5cGU9ZGlyO3Blcm09Y3BtZWw7dW5pcXVlPT1rZVZPMSs3RzQ7IGluY29taW5nXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xKzFHNDsgZmlsZTJcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErMUc0OyBmaWxlM1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPXI7dW5pcXVlPT1rZVZPMSsxRzQ7IGZpbGU0XHJcbiIpCiAKIAogY2xhc3MgRHVtbXlEVFBIYW5kbGVyKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgpAQCAtNDksNiArNjQsMTEgQEAKICAgICAgICAgICAgIHNlbGYuZHRwX2Nvbm5fY2xvc2VkID0gVHJ1ZQogCiAgICAgZGVmIHB1c2goc2VsZiwgd2hhdCk6CisgICAgICAgIGlmIHNlbGYuYmFzZWNsYXNzLm5leHRfZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdoYXQgPSBzZWxmLmJhc2VjbGFzcy5uZXh0X2RhdGEKKyAgICAgICAgICAgIHNlbGYuYmFzZWNsYXNzLm5leHRfZGF0YSA9IE5vbmUKKyAgICAgICAgaWYgbm90IHdoYXQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jbG9zZV93aGVuX2RvbmUoKQogICAgICAgICBzdXBlcihEdW1teURUUEhhbmRsZXIsIHNlbGYpLnB1c2god2hhdC5lbmNvZGUoJ2FzY2lpJykpCiAKICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgpAQCAtNjksNiArODksNyBAQAogICAgICAgICBzZWxmLmxhc3RfcmVjZWl2ZWRfY21kID0gTm9uZQogICAgICAgICBzZWxmLmxhc3RfcmVjZWl2ZWRfZGF0YSA9ICcnCiAgICAgICAgIHNlbGYubmV4dF9yZXNwb25zZSA9ICcnCisgICAgICAgIHNlbGYubmV4dF9kYXRhID0gTm9uZQogICAgICAgICBzZWxmLnJlc3QgPSBOb25lCiAgICAgICAgIHNlbGYucHVzaCgnMjIwIHdlbGNvbWUnKQogCkBAIC0xMDQsNyArMTI1LDcgQEAKICAgICAgICAgYWRkciA9IGxpc3QobWFwKGludCwgYXJnLnNwbGl0KCcsJykpKQogICAgICAgICBpcCA9ICclZC4lZC4lZC4lZCcgJXR1cGxlKGFkZHJbOjRdKQogICAgICAgICBwb3J0ID0gKGFkZHJbNF0gKiAyNTYpICsgYWRkcls1XQotICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChpcCwgcG9ydCksIHRpbWVvdXQ9MTApCisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD0yKQogICAgICAgICBzZWxmLmR0cCA9IHNlbGYuZHRwX2hhbmRsZXIocywgYmFzZWNsYXNzPXNlbGYpCiAgICAgICAgIHNlbGYucHVzaCgnMjAwIGFjdGl2ZSBkYXRhIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQogCkBAIC0xMjIsNyArMTQzLDcgQEAKICAgICBkZWYgY21kX2VwcnQoc2VsZiwgYXJnKToKICAgICAgICAgYWYsIGlwLCBwb3J0ID0gYXJnLnNwbGl0KGFyZ1swXSlbMTotMV0KICAgICAgICAgcG9ydCA9IGludChwb3J0KQotICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChpcCwgcG9ydCksIHRpbWVvdXQ9MTApCisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD0yKQogICAgICAgICBzZWxmLmR0cCA9IHNlbGYuZHRwX2hhbmRsZXIocywgYmFzZWNsYXNzPXNlbGYpCiAgICAgICAgIHNlbGYucHVzaCgnMjAwIGFjdGl2ZSBkYXRhIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQogCkBAIC0yMTMsNiArMjM0LDE0IEBACiAgICAgICAgIHNlbGYuZHRwLnB1c2goTkxTVF9EQVRBKQogICAgICAgICBzZWxmLmR0cC5jbG9zZV93aGVuX2RvbmUoKQogCisgICAgZGVmIGNtZF9vcHRzKHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnMjAwIG9wdHMgb2snKQorCisgICAgZGVmIGNtZF9tbHNkKHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnMTI1IG1sc2Qgb2snKQorICAgICAgICBzZWxmLmR0cC5wdXNoKE1MU0RfREFUQSkKKyAgICAgICAgc2VsZi5kdHAuY2xvc2Vfd2hlbl9kb25lKCkKKwogCiBjbGFzcyBEdW1teUZUUFNlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyLCB0aHJlYWRpbmcuVGhyZWFkKToKIApAQCAtMjc0LDExICszMDMsMTEgQEAKICAgICAgICAgX3NzbF9jbG9zaW5nID0gRmFsc2UKIAogICAgICAgICBkZWYgc2VjdXJlX2Nvbm5lY3Rpb24oc2VsZik6Ci0gICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKICAgICAgICAgICAgIHNvY2tldCA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNlcnZlcl9zaWRlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHNvY2tldCkKICAgICAgICAgICAgIHNlbGYuX3NzbF9hY2NlcHRpbmcgPSBUcnVlCiAKQEAgLTMxMyw3ICszNDIsMTAgQEAKICAgICAgICAgICAgICAgICAjIGh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9vcGVuc3NsLXVzZXJzQG9wZW5zc2wub3JnL21zZzYwNzEwLmh0bWwKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLl9zc2xfY2xvc2luZyA9IEZhbHNlCi0gICAgICAgICAgICBzdXBlcihTU0xDb25uZWN0aW9uLCBzZWxmKS5jbG9zZSgpCisgICAgICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdfY2NjJywgRmFsc2UpID09IEZhbHNlOgorICAgICAgICAgICAgICAgIHN1cGVyKFNTTENvbm5lY3Rpb24sIHNlbGYpLmNsb3NlKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGRlZiBoYW5kbGVfcmVhZF9ldmVudChzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3NzbF9hY2NlcHRpbmc6CkBAIC0zODEsMTIgKzQxMywxOCBAQAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubik6CiAgICAgICAgICAgICBEdW1teUZUUEhhbmRsZXIuX19pbml0X18oc2VsZiwgY29ubikKICAgICAgICAgICAgIHNlbGYuc2VjdXJlX2RhdGFfY2hhbm5lbCA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9jY2MgPSBGYWxzZQogCiAgICAgICAgIGRlZiBjbWRfYXV0aChzZWxmLCBsaW5lKToKICAgICAgICAgICAgICIiIlNldCB1cCBzZWN1cmUgY29udHJvbCBjaGFubmVsLiIiIgogICAgICAgICAgICAgc2VsZi5wdXNoKCcyMzQgQVVUSCBUTFMgc3VjY2Vzc2Z1bCcpCiAgICAgICAgICAgICBzZWxmLnNlY3VyZV9jb25uZWN0aW9uKCkKIAorICAgICAgICBkZWYgY21kX2NjYyhzZWxmLCBsaW5lKToKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjIwIFJldmVydGluZyBiYWNrIHRvIGNsZWFyLXRleHQnKQorICAgICAgICAgICAgc2VsZi5fY2NjID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fZG9fc3NsX3NodXRkb3duKCkKKwogICAgICAgICBkZWYgY21kX3Bic3ooc2VsZiwgbGluZSk6CiAgICAgICAgICAgICAiIiJOZWdvdGlhdGUgc2l6ZSBvZiBidWZmZXIgZm9yIHNlY3VyZSBkYXRhIHRyYW5zZmVyLgogICAgICAgICAgICAgRm9yIFRMUy9TU0wgdGhlIG9ubHkgdmFsaWQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgaXMgJzAnLgpAQCAtNDE2LDEzICs0NTQsMTcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlGVFBTZXJ2ZXIoKEhPU1QsIDApKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUCh0aW1lb3V0PTEwKQorICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFAodGltZW91dD0yKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCiAKKyAgICBkZWYgY2hlY2tfZGF0YShzZWxmLCByZWNlaXZlZCwgZXhwZWN0ZWQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZWNlaXZlZCksIGxlbihleHBlY3RlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQsIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfZ2V0d2VsY29tZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5nZXR3ZWxjb21lKCksICcyMjAgd2VsY29tZScpCiAKQEAgLTUwNCw3ICs1NDYsNyBAQAogICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKGRhdGEuZGVjb2RlKCdhc2NpaScpKQogICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgIHNlbGYuY2xpZW50LnJldHJiaW5hcnkoJ3JldHInLCBjYWxsYmFjaykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKHJlY2VpdmVkKSwgUkVUUl9EQVRBKQorICAgICAgICBzZWxmLmNoZWNrX2RhdGEoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQSkKIAogICAgIGRlZiB0ZXN0X3JldHJiaW5hcnlfcmVzdChzZWxmKToKICAgICAgICAgZGVmIGNhbGxiYWNrKGRhdGEpOgpAQCAtNTEyLDIwICs1NTQsMTcgQEAKICAgICAgICAgZm9yIHJlc3QgaW4gKDAsIDEwLCAyMCk6CiAgICAgICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5yZXRyYmluYXJ5KCdyZXRyJywgY2FsbGJhY2ssIHJlc3Q9cmVzdCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQVtyZXN0Ol0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0ncmVzdCB0ZXN0IGNhc2UgJWQgJWQgJWQnICUgKHJlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbignJy5qb2luKHJlY2VpdmVkKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihSRVRSX0RBVEFbcmVzdDpdKSkpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2RhdGEoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQVtyZXN0Ol0pCiAKICAgICBkZWYgdGVzdF9yZXRybGluZXMoc2VsZik6CiAgICAgICAgIHJlY2VpdmVkID0gW10KICAgICAgICAgc2VsZi5jbGllbnQucmV0cmxpbmVzKCdyZXRyJywgcmVjZWl2ZWQuYXBwZW5kKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEEucmVwbGFjZSgnXHJcbicsICcnKSkKKyAgICAgICAgc2VsZi5jaGVja19kYXRhKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEEucmVwbGFjZSgnXHJcbicsICcnKSkKIAogICAgIGRlZiB0ZXN0X3N0b3JiaW5hcnkoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKFJFVFJfREFUQS5lbmNvZGUoJ2FzY2lpJykpCiAgICAgICAgIHNlbGYuY2xpZW50LnN0b3JiaW5hcnkoJ3N0b3InLCBmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9kYXRhLCBSRVRSX0RBVEEpCisgICAgICAgIHNlbGYuY2hlY2tfZGF0YShzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfZGF0YSwgUkVUUl9EQVRBKQogICAgICAgICAjIHRlc3QgbmV3IGNhbGxiYWNrIGFyZwogICAgICAgICBmbGFnID0gW10KICAgICAgICAgZi5zZWVrKDApCkBAIC01NDIsNyArNTgxLDcgQEAKICAgICBkZWYgdGVzdF9zdG9ybGluZXMoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKFJFVFJfREFUQS5yZXBsYWNlKCdcclxuJywgJ1xuJykuZW5jb2RlKCdhc2NpaScpKQogICAgICAgICBzZWxmLmNsaWVudC5zdG9ybGluZXMoJ3N0b3InLCBmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9kYXRhLCBSRVRSX0RBVEEpCisgICAgICAgIHNlbGYuY2hlY2tfZGF0YShzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfZGF0YSwgUkVUUl9EQVRBKQogICAgICAgICAjIHRlc3QgbmV3IGNhbGxiYWNrIGFyZwogICAgICAgICBmbGFnID0gW10KICAgICAgICAgZi5zZWVrKDApCkBAIC01NTgsNiArNTk3LDY0IEBACiAgICAgICAgIHNlbGYuY2xpZW50LmRpcihsYW1iZGEgeDogbC5hcHBlbmQoeCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihsKSwgTElTVF9EQVRBLnJlcGxhY2UoJ1xyXG4nLCAnJykpCiAKKyAgICBkZWYgdGVzdF9tbHNkKHNlbGYpOgorICAgICAgICBsaXN0KHNlbGYuY2xpZW50Lm1sc2QoKSkKKyAgICAgICAgbGlzdChzZWxmLmNsaWVudC5tbHNkKHBhdGg9Jy8nKSkKKyAgICAgICAgbGlzdChzZWxmLmNsaWVudC5tbHNkKHBhdGg9Jy8nLCBmYWN0cz1bJ3NpemUnLCAndHlwZSddKSkKKworICAgICAgICBscyA9IGxpc3Qoc2VsZi5jbGllbnQubWxzZCgpKQorICAgICAgICBmb3IgbmFtZSwgZmFjdHMgaW4gbHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobmFtZSwgc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZhY3RzLCBkaWN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0eXBlJywgZmFjdHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwZXJtJywgZmFjdHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd1bmlxdWUnLCBmYWN0cykKKworICAgICAgICBkZWYgc2V0X2RhdGEoZGF0YSk6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLm5leHRfZGF0YSA9IGRhdGEKKworICAgICAgICBkZWYgdGVzdF9lbnRyeShsaW5lLCB0eXBlPU5vbmUsIHBlcm09Tm9uZSwgdW5pcXVlPU5vbmUsIG5hbWU9Tm9uZSk6CisgICAgICAgICAgICB0eXBlID0gJ3R5cGUnIGlmIHR5cGUgaXMgTm9uZSBlbHNlIHR5cGUKKyAgICAgICAgICAgIHBlcm0gPSAncGVybScgaWYgcGVybSBpcyBOb25lIGVsc2UgcGVybQorICAgICAgICAgICAgdW5pcXVlID0gJ3VuaXF1ZScgaWYgdW5pcXVlIGlzIE5vbmUgZWxzZSB1bmlxdWUKKyAgICAgICAgICAgIG5hbWUgPSAnbmFtZScgaWYgbmFtZSBpcyBOb25lIGVsc2UgbmFtZQorICAgICAgICAgICAgc2V0X2RhdGEobGluZSkKKyAgICAgICAgICAgIF9uYW1lLCBmYWN0cyA9IG5leHQoc2VsZi5jbGllbnQubWxzZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3R5cGUnXSwgdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3Blcm0nXSwgcGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3VuaXF1ZSddLCB1bmlxdWUpCisKKyAgICAgICAgIyBwbGFpbgorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hbWVcclxuJykKKyAgICAgICAgIyAiPSIgaW4gZmFjdCB2YWx1ZQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5PXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lXHJcbicsIHR5cGU9InR5PXBlIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT09dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZVxyXG4nLCB0eXBlPSI9dHlwZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dD15PXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lXHJcbicsIHR5cGU9InQ9eT1wZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9PT09PTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZVxyXG4nLCB0eXBlPSI9PT09IikKKyAgICAgICAgIyBzcGFjZXMgaW4gbmFtZQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hIG1lXHJcbicsIG5hbWU9Im5hIG1lIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lIFxyXG4nLCBuYW1lPSJuYW1lICIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgIG5hbWVcclxuJywgbmFtZT0iIG5hbWUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG4gYW0gIGVcclxuJywgbmFtZT0ibiBhbSAgZSIpCisgICAgICAgICMgIjsiIGluIG5hbWUKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYTttZVxyXG4nLCBuYW1lPSJuYTttZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgO25hbWVcclxuJywgbmFtZT0iO25hbWUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IDtuYW1lO1xyXG4nLCBuYW1lPSI7bmFtZTsiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IDs7OztcclxuJywgbmFtZT0iOzs7OyIpCisgICAgICAgICMgY2FzZSBzZW5zaXRpdmVuZXNzCisgICAgICAgIHNldF9kYXRhKCdUeXBlPXR5cGU7VHlQZT1wZXJtO1VOSVFVRT11bmlxdWU7IG5hbWVcclxuJykKKyAgICAgICAgX25hbWUsIGZhY3RzID0gbmV4dChzZWxmLmNsaWVudC5tbHNkKCkpCisgICAgICAgIGZvciB4IGluIGZhY3RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguaXNsb3dlcigpKQorICAgICAgICAjIG5vIGRhdGEgKGRpcmVjdG9yeSBlbXB0eSkKKyAgICAgICAgc2V0X2RhdGEoJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIHNlbGYuY2xpZW50Lm1sc2QoKSkKKyAgICAgICAgc2V0X2RhdGEoJycpCisgICAgICAgIGZvciB4IGluIHNlbGYuY2xpZW50Lm1sc2QoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgidW5leHBlY3RlZCBkYXRhICVzIiAlIGRhdGEpCisKICAgICBkZWYgdGVzdF9tYWtlcG9ydChzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC5tYWtlcG9ydCgpOgogICAgICAgICAgICAgIyBJUHY0IGlzIGluIHVzZSwganVzdCBtYWtlIHN1cmUgc2VuZF9lcHJ0IGhhcyBub3QgYmVlbiB1c2VkCkBAIC01ODQsNyArNjgxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgIyBiYXNlIHRlc3QKLSAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MTApIGFzIHNlbGYuY2xpZW50OgorICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKICAgICAgICAgICAgIHNlbGYuY2xpZW50LnNlbmRjbWQoJ25vb3AnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2NsaWVudF9jb25uZWN0ZWQoKSkKQEAgLTU5Miw3ICs2ODksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2NsaWVudF9jb25uZWN0ZWQoKSkKIAogICAgICAgICAjIFFVSVQgc2VudCBpbnNpZGUgdGhlIHdpdGggYmxvY2sKLSAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MTApIGFzIHNlbGYuY2xpZW50OgorICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKICAgICAgICAgICAgIHNlbGYuY2xpZW50LnNlbmRjbWQoJ25vb3AnKQogICAgICAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCkBAIC02MDIsNyArNjk5LDcgQEAKICAgICAgICAgIyBmb3JjZSBhIHdyb25nIHJlc3BvbnNlIGNvZGUgdG8gYmUgc2VudCBvbiBRVUlUOiBlcnJvcl9wZXJtCiAgICAgICAgICMgaXMgZXhwZWN0ZWQgYW5kIHRoZSBjb25uZWN0aW9uIGlzIHN1cHBvc2VkIHRvIGJlIGNsb3NlZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0xMCkgYXMgc2VsZi5jbGllbnQ6CisgICAgICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICAgICAgICAgc2VsZi5jbGllbnQuc2VuZGNtZCgnbm9vcCcpCiAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5uZXh0X3Jlc3BvbnNlID0gJzU1MCBlcnJvciBvbiBxdWl0JwpAQCAtNjE2LDYgKzcxMywzMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9jbWQsICdxdWl0JykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19jbGllbnRfY29ubmVjdGVkKCkpCiAKKyAgICBkZWYgdGVzdF9zb3VyY2VfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCisgICAgICAgIHBvcnQgPSBzdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPShIT1NULCBwb3J0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQuc29jay5nZXRzb2NrbmFtZSgpWzFdLCBwb3J0KQorICAgICAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBRERSSU5VU0U6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY291bGRuJ3QgYmluZCB0byBwb3J0ICVkIiAlIHBvcnQpCisgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHRlc3Rfc291cmNlX2FkZHJlc3NfcGFzc2l2ZV9jb25uZWN0aW9uKHNlbGYpOgorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgc2VsZi5jbGllbnQuc291cmNlX2FkZHJlc3MgPSAoSE9TVCwgcG9ydCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC50cmFuc2ZlcmNtZCgnbGlzdCcpIGFzIHNvY2s6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLmdldHNvY2tuYW1lKClbMV0sIHBvcnQpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBRERSSU5VU0U6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY291bGRuJ3QgYmluZCB0byBwb3J0ICVkIiAlIHBvcnQpCisgICAgICAgICAgICByYWlzZQorCiAgICAgZGVmIHRlc3RfcGFyc2UyNTcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnRwbGliLnBhcnNlMjU3KCcyNTcgIi9mb28vYmFyIicpLCAnL2Zvby9iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ0cGxpYi5wYXJzZTI1NygnMjU3ICIvZm9vL2JhciIgY3JlYXRlZCcpLCAnL2Zvby9iYXInKQpAQCAtNjMyLDcgKzc1Myw3IEBACiBjbGFzcyBUZXN0SVB2NkVudmlyb25tZW50KFRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teUZUUFNlcnZlcigoSE9TVCwgMCksIGFmPXNvY2tldC5BRl9JTkVUNikKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teUZUUFNlcnZlcigoJzo6MScsIDApLCBhZj1zb2NrZXQuQUZfSU5FVDYpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKICAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQKCkKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQpAQCAtNjYxLDYgKzc4Miw3IEBACiAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKGRhdGEuZGVjb2RlKCdhc2NpaScpKQogICAgICAgICAgICAgcmVjZWl2ZWQgPSBbXQogICAgICAgICAgICAgc2VsZi5jbGllbnQucmV0cmJpbmFyeSgncmV0cicsIGNhbGxiYWNrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oJycuam9pbihyZWNlaXZlZCkpLCBsZW4oUkVUUl9EQVRBKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQSkKICAgICAgICAgc2VsZi5jbGllbnQuc2V0X3Bhc3YoVHJ1ZSkKICAgICAgICAgcmV0cigpCkBAIC02NzYsNyArNzk4LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlUTFNfRlRQU2VydmVyKChIT1NULCAwKSkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFBfVExTKHRpbWVvdXQ9MTApCisgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFModGltZW91dD0yKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICMgZW5hYmxlIFRMUwogICAgICAgICBzZWxmLmNsaWVudC5hdXRoKCkKQEAgLTY4OSw3ICs4MTEsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVRMU19GVFBTZXJ2ZXIoKEhPU1QsIDApKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFModGltZW91dD0xMCkKKyAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQX1RMUyh0aW1lb3V0PTIpCiAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTc0OSw3ICs4NzEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdHBsaWIuRlRQX1RMUywgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9Q0VSVEZJTEUsIGNvbnRleHQ9Y3R4KQogCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFMoY29udGV4dD1jdHgsIHRpbWVvdXQ9MTApCisgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFMoY29udGV4dD1jdHgsIHRpbWVvdXQ9MikKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2Uoc2VsZi5jbGllbnQuc29jaywgc3NsLlNTTFNvY2tldCkKICAgICAgICAgc2VsZi5jbGllbnQuYXV0aCgpCkBAIC03NjEsNiArODgzLDEzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNvY2suY29udGV4dCwgY3R4KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNvY2ssIHNzbC5TU0xTb2NrZXQpCiAKKyAgICBkZWYgdGVzdF9jY2Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuY2xpZW50LmNjYykKKyAgICAgICAgc2VsZi5jbGllbnQubG9naW4oc2VjdXJlPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLmNsaWVudC5zb2NrLCBzc2wuU1NMU29ja2V0KQorICAgICAgICBzZWxmLmNsaWVudC5jY2MoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmNsaWVudC5zb2NrLnVud3JhcCkKKwogCiBjbGFzcyBUZXN0VGltZW91dHMoVGVzdENhc2UpOgogCkBAIC04NTcsMTMgKzk4Niw4IEBACiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtUZXN0RlRQQ2xhc3MsIFRlc3RUaW1lb3V0c10KLSAgICBpZiBzb2NrZXQuaGFzX2lwdjY6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIER1bW15RlRQU2VydmVyKChIT1NULCAwKSwgYWY9c29ja2V0LkFGX0lORVQ2KQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3RJUHY2RW52aXJvbm1lbnQpCisgICAgaWYgc3VwcG9ydC5JUFY2X0VOQUJMRUQ6CisgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0SVB2NkVudmlyb25tZW50KQogCiAgICAgaWYgc3NsIGlzIG5vdCBOb25lOgogICAgICAgICB0ZXN0cy5leHRlbmQoW1Rlc3RUTFNfRlRQQ2xhc3NNaXhpbiwgVGVzdFRMU19GVFBDbGFzc10pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmNhdHRycy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CmluZGV4IDRkMTkzNjguLmM4ZWQ4MzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CkBAIC0yLDYgKzIsMTUgQEAKIGltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CiAKKworZGVmIGdsb2JhbF9mdW5jdGlvbigpOgorICAgIGRlZiBpbm5lcl9mdW5jdGlvbigpOgorICAgICAgICBjbGFzcyBMb2NhbENsYXNzOgorICAgICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4gTG9jYWxDbGFzcworICAgIHJldHVybiBsYW1iZGE6IGlubmVyX2Z1bmN0aW9uCisKKwogY2xhc3MgRnVuY0F0dHJzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBjbGFzcyBGOgpAQCAtOTYsNiArMTA1LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5maS5hLl9fbmFtZV9fLCAnYScpCiAgICAgICAgIHNlbGYuY2Fubm90X3NldF9hdHRyKHNlbGYuZmkuYSwgIl9fbmFtZV9fIiwgJ2EnLCBBdHRyaWJ1dGVFcnJvcikKIAorICAgIGRlZiB0ZXN0X19fcXVhbG5hbWVfXyhzZWxmKToKKyAgICAgICAgIyBQRVAgMzE1NQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYi5fX3F1YWxuYW1lX18sICdGdW5jQXR0cnNUZXN0LnNldFVwLjxsb2NhbHM+LmInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZ1bmNBdHRyc1Rlc3Quc2V0VXAuX19xdWFsbmFtZV9fLCAnRnVuY0F0dHJzVGVzdC5zZXRVcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX2Z1bmN0aW9uLl9fcXVhbG5hbWVfXywgJ2dsb2JhbF9mdW5jdGlvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX2Z1bmN0aW9uKCkuX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWxfZnVuY3Rpb24uPGxvY2Fscz4uPGxhbWJkYT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9mdW5jdGlvbigpKCkuX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWxfZnVuY3Rpb24uPGxvY2Fscz4uaW5uZXJfZnVuY3Rpb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9mdW5jdGlvbigpKCkoKS5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsb2JhbF9mdW5jdGlvbi48bG9jYWxzPi5pbm5lcl9mdW5jdGlvbi48bG9jYWxzPi5Mb2NhbENsYXNzJykKKyAgICAgICAgc2VsZi5iLl9fcXVhbG5hbWVfXyA9ICdjJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYi5fX3F1YWxuYW1lX18sICdjJykKKyAgICAgICAgc2VsZi5iLl9fcXVhbG5hbWVfXyA9ICdkJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYi5fX3F1YWxuYW1lX18sICdkJykKKyAgICAgICAgIyBfX3F1YWxuYW1lX18gbXVzdCBiZSBhIHN0cmluZworICAgICAgICBzZWxmLmNhbm5vdF9zZXRfYXR0cihzZWxmLmIsICdfX3F1YWxuYW1lX18nLCA3LCBUeXBlRXJyb3IpCisKICAgICBkZWYgdGVzdF9fX2NvZGVfXyhzZWxmKToKICAgICAgICAgbnVtX29uZSwgbnVtX3R3byA9IDcsIDgKICAgICAgICAgZGVmIGEoKTogcGFzcwpAQCAtMzE1LDExICszNDIsMzcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuX19mdW5jX18gaXMgZikKIAogCitjbGFzcyBCdWlsdGluRnVuY3Rpb25Qcm9wZXJ0aWVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBYWFggTm90IHN1cmUgd2hlcmUgdGhpcyBzaG91bGQgcmVhbGx5IGdvIHNpbmNlIEkgY2FuJ3QgZmluZCBhCisgICAgIyB0ZXN0IG1vZHVsZSBzcGVjaWZpY2FsbHkgZm9yIGJ1aWx0aW5fZnVuY3Rpb25fb3JfbWV0aG9kLgorCisgICAgZGVmIHRlc3RfYnVpbHRpbl9fcXVhbG5hbWVfXyhzZWxmKToKKyAgICAgICAgaW1wb3J0IHRpbWUKKworICAgICAgICAjIGJ1aWx0aW4gZnVuY3Rpb246CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuLl9fcXVhbG5hbWVfXywgJ2xlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS50aW1lLl9fcXVhbG5hbWVfXywgJ3RpbWUnKQorCisgICAgICAgICMgYnVpbHRpbiBjbGFzc21ldGhvZDoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0LmZyb21rZXlzLl9fcXVhbG5hbWVfXywgJ2RpY3QuZnJvbWtleXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0Ll9fZ2V0Zm9ybWF0X18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmbG9hdC5fX2dldGZvcm1hdF9fJykKKworICAgICAgICAjIGJ1aWx0aW4gc3RhdGljbWV0aG9kOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ci5tYWtldHJhbnMuX19xdWFsbmFtZV9fLCAnc3RyLm1ha2V0cmFucycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMubWFrZXRyYW5zLl9fcXVhbG5hbWVfXywgJ2J5dGVzLm1ha2V0cmFucycpCisKKyAgICAgICAgIyBidWlsdGluIGJvdW5kIGluc3RhbmNlIG1ldGhvZDoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbMSwgMiwgM10uYXBwZW5kLl9fcXVhbG5hbWVfXywgJ2xpc3QuYXBwZW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7J2Zvbyc6ICdiYXInfS5wb3AuX19xdWFsbmFtZV9fLCAnZGljdC5wb3AnKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChGdW5jdGlvblByb3BlcnRpZXNUZXN0LCBJbnN0YW5jZW1ldGhvZEF0dHJUZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJiaXRyYXJ5RnVuY3Rpb25BdHRyVGVzdCwgRnVuY3Rpb25EaWN0c1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkRvY3N0cmluZ1Rlc3QsIENlbGxUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljTWV0aG9kQXR0cnNUZXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljTWV0aG9kQXR0cnNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRpbkZ1bmN0aW9uUHJvcGVydGllc1Rlc3QpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKaW5kZXggMjcwY2FiMC4uYzQ5MTBhNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKQEAgLTIyNiw2ICsyMjYsNyBAQAogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZikKICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLl9fd3JhcHBlZF9fLCBmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICdmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhbHNvIGEgdGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2Fubm90YXRpb25zX19bJ2EnXSwgJ1RoaXMgaXMgYSBuZXcgYW5ub3RhdGlvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2InLCB3cmFwcGVyLl9fYW5ub3RhdGlvbnNfXykKQEAgLTI0Niw2ICsyNDcsNyBAQAogICAgICAgICBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIod3JhcHBlciwgZiwgKCksICgpKQogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgKCksICgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICd3cmFwcGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2RvY19fLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19hbm5vdGF0aW9uc19fLCB7fSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHdyYXBwZXIsICdhdHRyJykpCkBAIC0yNjMsNiArMjY1LDcgQEAKICAgICAgICAgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIGYsIGFzc2lnbiwgdXBkYXRlKQogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgYXNzaWduLCB1cGRhdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX25hbWVfXywgJ3dyYXBwZXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyYXBwZXIuX19xdWFsbmFtZV9fLCBmLl9fcXVhbG5hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fZG9jX18sIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhIGRpZmZlcmVudCB0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmRpY3RfYXR0ciwgZi5kaWN0X2F0dHIpCkBAIC0zMDksMTcgKzMxMiwxOCBAQAogICAgICAgICBkZWYgd3JhcHBlcigpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZikKLSAgICAgICAgcmV0dXJuIHdyYXBwZXIKKyAgICAgICAgcmV0dXJuIHdyYXBwZXIsIGYKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdXBkYXRlKHNlbGYpOgotICAgICAgICB3cmFwcGVyID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQorICAgICAgICB3cmFwcGVyLCBmID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICdmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhbHNvIGEgdGVzdCcpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBzeXMuZmxhZ3Mub3B0aW1pemUgPD0gMSwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCiAgICAgZGVmIHRlc3RfZGVmYXVsdF91cGRhdGVfZG9jKHNlbGYpOgotICAgICAgICB3cmFwcGVyID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQorICAgICAgICB3cmFwcGVyLCBfID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgJ1RoaXMgaXMgYSB0ZXN0JykKIAogICAgIGRlZiB0ZXN0X25vX3VwZGF0ZShzZWxmKToKQEAgLTMzMiw2ICszMzYsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgKCksICgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICd3cmFwcGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2RvY19fLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIod3JhcHBlciwgJ2F0dHInKSkKIApAQCAtMzUxLDYgKzM1Niw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcHBlcih3cmFwcGVyLCBmLCBhc3NpZ24sIHVwZGF0ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnd3JhcHBlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmF0dHIsICdUaGlzIGlzIGEgZGlmZmVyZW50IHRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuZGljdF9hdHRyLCBmLmRpY3RfYXR0cikKQEAgLTQzNiwxOSArNDQyLDgyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGFkZCwgZCksICIiLmpvaW4oZC5rZXlzKCkpKQogCiBjbGFzcyBUZXN0Q21wVG9LZXkodW5pdHRlc3QuVGVzdENhc2UpOgorCiAgICAgZGVmIHRlc3RfY21wX3RvX2tleShzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkoMyksIGtleSgzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGtleSgzKSwga2V5KDEpKQorICAgICAgICBkZWYgY21wMih4LCB5KToKKyAgICAgICAgICAgIHJldHVybiBpbnQoeCkgLSBpbnQoeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkoNC4wKSwga2V5KCc0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhrZXkoMiksIGtleSgnMzUnKSkKKworICAgIGRlZiB0ZXN0X2NtcF90b19rZXlfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBkZWYgY21wMSh4LCB5KToKKyAgICAgICAgICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQorICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShteWNtcD1jbXAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGtleShvYmo9MyksIGtleShvYmo9MykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihrZXkob2JqPTMpLCBrZXkob2JqPTEpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKSk6CisgICAgICAgICAgICBrZXkoMykgPiAxICAgICMgcmhzIGlzIG5vdCBhIEsgb2JqZWN0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpKToKKyAgICAgICAgICAgIDEgPCBrZXkoMykgICAgIyBsaHMgaXMgbm90IGEgSyBvYmplY3QKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoKSAgICAgICAgICAgICAjIHRvbyBmZXcgYXJncworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShjbXAxLCBOb25lKSAgICMgdG9vIG1hbnkgYXJncworICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShjbXAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBrZXkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG9vIGZldyBhcmdzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGtleShOb25lLCBOb25lKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0b28gbWFueSBhcmdzCisKKyAgICBkZWYgdGVzdF9iYWRfY21wKHNlbGYpOgorICAgICAgICBkZWYgY21wMSh4LCB5KToKKyAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KGNtcDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAga2V5KDMpID4ga2V5KDEpCisKKyAgICAgICAgY2xhc3MgQmFkQ21wOgorICAgICAgICAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gQmFkQ21wKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBrZXkoMykgPiBrZXkoMSkKKworICAgIGRlZiB0ZXN0X29ial9maWVsZChzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXA9Y21wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkoNTApLm9iaiwgNTApCisKKyAgICBkZWYgdGVzdF9zb3J0X2ludChzZWxmKToKICAgICAgICAgZGVmIG15Y21wKHgsIHkpOgogICAgICAgICAgICAgcmV0dXJuIHkgLSB4CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHJhbmdlKDUpLCBrZXk9ZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbNCwgMywgMiwgMSwgMF0pCiAKKyAgICBkZWYgdGVzdF9zb3J0X2ludF9zdHIoc2VsZik6CisgICAgICAgIGRlZiBteWNtcCh4LCB5KToKKyAgICAgICAgICAgIHgsIHkgPSBpbnQoeCksIGludCh5KQorICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisgICAgICAgIHZhbHVlcyA9IFs1LCAnMycsIDcsIDIsICcwJywgJzEnLCA0LCAnMTAnLCAxXQorICAgICAgICB2YWx1ZXMgPSBzb3J0ZWQodmFsdWVzLCBrZXk9ZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpbnQodmFsdWUpIGZvciB2YWx1ZSBpbiB2YWx1ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFswLCAxLCAxLCAyLCAzLCA0LCA1LCA3LCAxMF0pCisKICAgICBkZWYgdGVzdF9oYXNoKHNlbGYpOgogICAgICAgICBkZWYgbXljbXAoeCwgeSk6CiAgICAgICAgICAgICByZXR1cm4geSAtIHgKICAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXApCiAgICAgICAgIGsgPSBrZXkoMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaGFzaCwgaykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKGssIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGssIGNvbGxlY3Rpb25zLkhhc2hhYmxlKQogCiBjbGFzcyBUZXN0VG90YWxPcmRlcmluZyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY3MSw2ICs3NDAsMjIgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6CiAgICAgICAgICAgICAgICAgZnVuYygxNSkKIAorICAgIGRlZiB0ZXN0X2xydV93aXRoX3R5cGVzKHNlbGYpOgorICAgICAgICBmb3IgbWF4c2l6ZSBpbiAoTm9uZSwgMTAwKToKKyAgICAgICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9bWF4c2l6ZSwgdHlwZWQ9VHJ1ZSkKKyAgICAgICAgICAgIGRlZiBzcXVhcmUoeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggKiB4CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZSgzKSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoMykpLCB0eXBlKDkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoMy4wKSwgOS4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNxdWFyZSgzLjApKSwgdHlwZSg5LjApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoeD0zKSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoeD0zKSksIHR5cGUoOSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZSh4PTMuMCksIDkuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoeD0zLjApKSwgdHlwZSg5LjApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUuY2FjaGVfaW5mbygpLmhpdHMsIDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZS5jYWNoZV9pbmZvKCkubWlzc2VzLCA0KQorCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6CiAgICAgdGVzdF9jbGFzc2VzID0gKAogICAgICAgICBUZXN0UGFydGlhbCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKaW5kZXggYzY2ODlhMS4uM2EyNWViMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKQEAgLTEzLDE0ICsxMywxNCBAQAogY2xhc3MgRnV0dXJlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9mdXR1cmUxKHNlbGYpOgotICAgICAgICBzdXBwb3J0LnVubG9hZCgndGVzdF9mdXR1cmUxJykKLSAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2Z1dHVyZTEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X2Z1dHVyZTEucmVzdWx0LCA2KQorICAgICAgICBzdXBwb3J0LnVubG9hZCgnZnV0dXJlX3Rlc3QxJykKKyAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBmdXR1cmVfdGVzdDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdXR1cmVfdGVzdDEucmVzdWx0LCA2KQogCiAgICAgZGVmIHRlc3RfZnV0dXJlMihzZWxmKToKLSAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3Rlc3RfZnV0dXJlMicpCi0gICAgICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9mdXR1cmUyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9mdXR1cmUyLnJlc3VsdCwgNikKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoJ2Z1dHVyZV90ZXN0MicpCisgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgZnV0dXJlX3Rlc3QyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlX3Rlc3QyLnJlc3VsdCwgNikKIAogICAgIGRlZiB0ZXN0X2Z1dHVyZTMoc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5sb2FkKCd0ZXN0X2Z1dHVyZTMnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nYy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2MucHkKaW5kZXggMTAwYzc2Ny4uZDM1ZjllZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2djLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgcnVuX3VuaXR0ZXN0LCBzdHJpcF9weXRob25fc3RkZXJyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHZlcmJvc2UsIHJlZmNvdW50X3Rlc3QsIHJ1bl91bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcF9weXRob25fc3RkZXJyKQogaW1wb3J0IHN5cwogaW1wb3J0IGdjCiBpbXBvcnQgd2Vha3JlZgpAQCAtMzEsNiArMzIsMjAgQEAKICAgICAgICAgIyBnYyBjb2xsZWN0cyBpdC4KICAgICAgICAgc2VsZi53ciA9IHdlYWtyZWYucmVmKEMxMDU1ODIwKDY2NiksIGl0X2hhcHBlbmVkKQogCitjbGFzcyBVbmNvbGxlY3RhYmxlKG9iamVjdCk6CisgICAgIiIiQ3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlIHdpdGggbXVsdGlwbGUgX19kZWxfXyBtZXRob2RzLgorCisgICAgQW4gb2JqZWN0IGluIGEgcmVmZXJlbmNlIGN5Y2xlIHdpbGwgbmV2ZXIgaGF2ZSB6ZXJvIHJlZmVyZW5jZXMsCisgICAgYW5kIHNvIG11c3QgYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuICBJZiBvbmUgb3IgbW9yZSBvYmplY3RzIGluIHRoZQorICAgIGN5Y2xlIGhhdmUgX19kZWxfXyBtZXRob2RzLCB0aGUgZ2MgcmVmdXNlcyB0byBndWVzcyBhbiBvcmRlciwKKyAgICBhbmQgbGVhdmVzIHRoZSBjeWNsZSB1bmNvbGxlY3RlZC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFydG5lcj1Ob25lKToKKyAgICAgICAgaWYgcGFydG5lciBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wYXJ0bmVyID0gVW5jb2xsZWN0YWJsZShwYXJ0bmVyPXNlbGYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnBhcnRuZXIgPSBwYXJ0bmVyCisgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgIHBhc3MKIAogIyMjIFRlc3RzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xNzUsNiArMTkwLDcgQEAKICAgICAgICAgZGVsIGQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnYy5jb2xsZWN0KCksIDIpCiAKKyAgICBAcmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X2ZyYW1lKHNlbGYpOgogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKCkKQEAgLTI0Miw2ICsyNTgsNyBAQAogICAgICMgRm9yIGV4YW1wbGUsIGRpc3Bvc2VkIHR1cGxlcyBhcmUgbm90IGZyZWVkLCBidXQgcmV1c2VkLgogICAgICMgVG8gbWluaW1pemUgdmFyaWF0aW9ucywgdGhvdWdoLCB3ZSBmaXJzdCBzdG9yZSB0aGUgZ2V0X2NvdW50KCkgcmVzdWx0cwogICAgICMgYW5kIGNoZWNrIHRoZW0gYXQgdGhlIGVuZC4KKyAgICBAcmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X2dldF9jb3VudChzZWxmKToKICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgIGEsIGIsIGMgPSBnYy5nZXRfY291bnQoKQpAQCAtMjU1LDYgKzI3Miw3IEBACiAgICAgICAgICMgY3JlYXRlZCAodGhlIGxpc3QpLgogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZCwgYSkKIAorICAgIEByZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfY29sbGVjdF9nZW5lcmF0aW9ucyhzZWxmKToKICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgICMgVGhpcyBvYmplY3Qgd2lsbCAidHJpY2tsZSIgaW50byBnZW5lcmF0aW9uIE4gKyAxIGFmdGVyCkBAIC01MjQsNiArNTQyLDEyNyBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKGIidW5jb2xsZWN0YWJsZSBvYmplY3RzIGF0IHNodXRkb3duIiwgc3RkZXJyKQogCiAKK2NsYXNzIEdDQ2FsbGJhY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAjIFNhdmUgZ2Mgc3RhdGUgYW5kIGRpc2FibGUgaXQuCisgICAgICAgIHNlbGYuZW5hYmxlZCA9IGdjLmlzZW5hYmxlZCgpCisgICAgICAgIGdjLmRpc2FibGUoKQorICAgICAgICBzZWxmLmRlYnVnID0gZ2MuZ2V0X2RlYnVnKCkKKyAgICAgICAgZ2Muc2V0X2RlYnVnKDApCisgICAgICAgIGdjLmNhbGxiYWNrcy5hcHBlbmQoc2VsZi5jYjEpCisgICAgICAgIGdjLmNhbGxiYWNrcy5hcHBlbmQoc2VsZi5jYjIpCisgICAgICAgIHNlbGYub3RoZXJnYXJiYWdlID0gW10KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIyBSZXN0b3JlIGdjIHN0YXRlCisgICAgICAgIGRlbCBzZWxmLnZpc2l0CisgICAgICAgIGdjLmNhbGxiYWNrcy5yZW1vdmUoc2VsZi5jYjEpCisgICAgICAgIGdjLmNhbGxiYWNrcy5yZW1vdmUoc2VsZi5jYjIpCisgICAgICAgIGdjLnNldF9kZWJ1ZyhzZWxmLmRlYnVnKQorICAgICAgICBpZiBzZWxmLmVuYWJsZWQ6CisgICAgICAgICAgICBnYy5lbmFibGUoKQorICAgICAgICAjIGRlc3Ryb3kgYW55IHVuY29sbGVjdGFibGVzCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBmb3Igb2JqIGluIGdjLmdhcmJhZ2U6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgVW5jb2xsZWN0YWJsZSk6CisgICAgICAgICAgICAgICAgb2JqLnBhcnRuZXIgPSBOb25lCisgICAgICAgIGRlbCBnYy5nYXJiYWdlWzpdCisgICAgICAgIGRlbCBzZWxmLm90aGVyZ2FyYmFnZQorICAgICAgICBnYy5jb2xsZWN0KCkKKworICAgIGRlZiBwcmVjbGVhbihzZWxmKToKKyAgICAgICAgIyBSZW1vdmUgYWxsIGZsdWZmIGZyb20gdGhlIHN5c3RlbS4gIEludm9rZSB0aGlzIGZ1bmN0aW9uCisgICAgICAgICMgbWFudWFsbHkgcmF0aGVyIHRoYW4gdGhyb3VnaCBzZWxmLnNldFVwKCkgZm9yIG1heGltdW0KKyAgICAgICAgIyBzYWZldHkuCisgICAgICAgIHNlbGYudmlzaXQgPSBbXQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgZ2FyYmFnZSwgZ2MuZ2FyYmFnZVs6XSA9IGdjLmdhcmJhZ2VbOl0sIFtdCisgICAgICAgIHNlbGYub3RoZXJnYXJiYWdlLmFwcGVuZChnYXJiYWdlKQorICAgICAgICBzZWxmLnZpc2l0ID0gW10KKworICAgIGRlZiBjYjEoc2VsZiwgcGhhc2UsIGluZm8pOgorICAgICAgICBzZWxmLnZpc2l0LmFwcGVuZCgoMSwgcGhhc2UsIGRpY3QoaW5mbykpKQorCisgICAgZGVmIGNiMihzZWxmLCBwaGFzZSwgaW5mbyk6CisgICAgICAgIHNlbGYudmlzaXQuYXBwZW5kKCgyLCBwaGFzZSwgZGljdChpbmZvKSkpCisgICAgICAgIGlmIHBoYXNlID09ICJzdG9wIiBhbmQgaGFzYXR0cihzZWxmLCAiY2xlYW51cCIpOgorICAgICAgICAgICAgIyBDbGVhbiBVbmNvbGxlY3RhYmxlIGZyb20gZ2FyYmFnZQorICAgICAgICAgICAgdWMgPSBbZSBmb3IgZSBpbiBnYy5nYXJiYWdlIGlmIGlzaW5zdGFuY2UoZSwgVW5jb2xsZWN0YWJsZSldCisgICAgICAgICAgICBnYy5nYXJiYWdlWzpdID0gW2UgZm9yIGUgaW4gZ2MuZ2FyYmFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlLCBVbmNvbGxlY3RhYmxlKV0KKyAgICAgICAgICAgIGZvciBlIGluIHVjOgorICAgICAgICAgICAgICAgIGUucGFydG5lciA9IE5vbmUKKworICAgIGRlZiB0ZXN0X2NvbGxlY3Qoc2VsZik6CisgICAgICAgIHNlbGYucHJlY2xlYW4oKQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgIyBBbGdvcml0aG1pY2FsbHkgdmVyaWZ5IHRoZSBjb250ZW50cyBvZiBzZWxmLnZpc2l0CisgICAgICAgICMgYmVjYXVzZSBpdCBpcyBsb25nIGFuZCB0b3J0dW91cy4KKworICAgICAgICAjIENvdW50IHRoZSBudW1iZXIgb2YgdmlzaXRzIHRvIGVhY2ggY2FsbGJhY2sKKyAgICAgICAgbiA9IFt2WzBdIGZvciB2IGluIHNlbGYudmlzaXRdCisgICAgICAgIG4xID0gW2kgZm9yIGkgaW4gbiBpZiBpID09IDFdCisgICAgICAgIG4yID0gW2kgZm9yIGkgaW4gbiBpZiBpID09IDJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobjEsIFsxXSoyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4yLCBbMl0qMikKKworICAgICAgICAjIENvdW50IHRoYXQgd2UgZ290IHRoZSByaWdodCBudW1iZXIgb2Ygc3RhcnQgYW5kIHN0b3AgY2FsbGJhY2tzLgorICAgICAgICBuID0gW3ZbMV0gZm9yIHYgaW4gc2VsZi52aXNpdF0KKyAgICAgICAgbjEgPSBbaSBmb3IgaSBpbiBuIGlmIGkgPT0gInN0YXJ0Il0KKyAgICAgICAgbjIgPSBbaSBmb3IgaSBpbiBuIGlmIGkgPT0gInN0b3AiXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4xLCBbInN0YXJ0Il0qMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuMiwgWyJzdG9wIl0qMikKKworICAgICAgICAjIENoZWNrIHRoYXQgd2UgZ290IHRoZSByaWdodCBpbmZvIGRpY3QgZm9yIGFsbCBjYWxsYmFja3MKKyAgICAgICAgZm9yIHYgaW4gc2VsZi52aXNpdDoKKyAgICAgICAgICAgIGluZm8gPSB2WzJdCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoImdlbmVyYXRpb24iIGluIGluZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoImNvbGxlY3RlZCIgaW4gaW5mbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgidW5jb2xsZWN0YWJsZSIgaW4gaW5mbykKKworICAgIGRlZiB0ZXN0X2NvbGxlY3RfZ2VuZXJhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5wcmVjbGVhbigpCisgICAgICAgIGdjLmNvbGxlY3QoMikKKyAgICAgICAgZm9yIHYgaW4gc2VsZi52aXNpdDoKKyAgICAgICAgICAgIGluZm8gPSB2WzJdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9bImdlbmVyYXRpb24iXSwgMikKKworICAgIGRlZiB0ZXN0X2NvbGxlY3RfZ2FyYmFnZShzZWxmKToKKyAgICAgICAgc2VsZi5wcmVjbGVhbigpCisgICAgICAgICMgRWFjaCBvZiB0aGVzZSBjYXVzZSBmb3VyIG9iamVjdHMgdG8gYmUgZ2FyYmFnZTogVHdvCisgICAgICAgICMgVW5jb2xlY3RhYmxlcyBhbmQgdGhlaXIgaW5zdGFuY2UgZGljdHMuCisgICAgICAgIFVuY29sbGVjdGFibGUoKQorICAgICAgICBVbmNvbGxlY3RhYmxlKCkKKyAgICAgICAgQzEwNTU4MjAoNjY2KQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgZm9yIHYgaW4gc2VsZi52aXNpdDoKKyAgICAgICAgICAgIGlmIHZbMV0gIT0gInN0b3AiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpbmZvID0gdlsyXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvWyJjb2xsZWN0ZWQiXSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mb1sidW5jb2xsZWN0YWJsZSJdLCA4KQorCisgICAgICAgICMgV2Ugc2hvdWxkIG5vdyBoYXZlIHRoZSBVbmNvbGxlY3RhYmxlcyBpbiBnYy5nYXJiYWdlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdjLmdhcmJhZ2UpLCA0KQorICAgICAgICBmb3IgZSBpbiBnYy5nYXJiYWdlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUsIFVuY29sbGVjdGFibGUpCisKKyAgICAgICAgIyBOb3csIGxldCBvdXIgY2FsbGJhY2sgaGFuZGxlIHRoZSBVbmNvbGxlY3RhYmxlIGluc3RhbmNlcworICAgICAgICBzZWxmLmNsZWFudXA9VHJ1ZQorICAgICAgICBzZWxmLnZpc2l0ID0gW10KKyAgICAgICAgZ2MuZ2FyYmFnZVs6XSA9IFtdCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBmb3IgdiBpbiBzZWxmLnZpc2l0OgorICAgICAgICAgICAgaWYgdlsxXSAhPSAic3RvcCI6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGluZm8gPSB2WzJdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9bImNvbGxlY3RlZCJdLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvWyJ1bmNvbGxlY3RhYmxlIl0sIDQpCisKKyAgICAgICAgIyBVbmNvbGxlY3RhYmxlcyBzaG91bGQgYmUgZ29uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihnYy5nYXJiYWdlKSwgMCkKKworCiBjbGFzcyBHQ1RvZ2dsaW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgZ2MuZW5hYmxlKCkKQEAgLTY3Nyw3ICs4MTYsNyBAQAogCiAgICAgdHJ5OgogICAgICAgICBnYy5jb2xsZWN0KCkgIyBEZWxldGUgMm5kIGdlbmVyYXRpb24gZ2FyYmFnZQotICAgICAgICBydW5fdW5pdHRlc3QoR0NUZXN0cywgR0NUb2dnbGluZ1Rlc3RzKQorICAgICAgICBydW5fdW5pdHRlc3QoR0NUZXN0cywgR0NUb2dnbGluZ1Rlc3RzLCBHQ0NhbGxiYWNrVGVzdHMpCiAgICAgZmluYWxseToKICAgICAgICAgZ2Muc2V0X2RlYnVnKGRlYnVnKQogICAgICAgICAjIHRlc3QgZ2MuZW5hYmxlKCkgZXZlbiBpZiBHQyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dkYi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CmluZGV4IGEwMmY1YzcuLjI3ZmNjZDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CkBAIC03LDkgKzcsMTYgQEAKIGltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGxvY2FsZQogCisjIElzIHRoaXMgUHl0aG9uIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCB0aHJlYWRzPwordHJ5OgorICAgIGltcG9ydCBfdGhyZWFkCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX3RocmVhZCA9IE5vbmUKKwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgZmluZGZpbGUsIHB5dGhvbl9pc19vcHRpbWl6ZWQKIAogdHJ5OgpAQCAtMjQsNiArMzEsOSBAQAogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJnZGIgdmVyc2lvbnMgYmVmb3JlIDcuMCBkaWRuJ3Qgc3VwcG9ydCBweXRob24gZW1iZWRkaW5nIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgU2F3OlxuIiArIGdkYl92ZXJzaW9uLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpKQogCitpZiBub3Qgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0X2dkYiBvbmx5IHdvcmtzIG9uIHNvdXJjZSBidWlsZHMgYXQgdGhlIG1vbWVudC4iKQorCiAjIFZlcmlmeSB0aGF0ICJnZGIiIHdhcyBidWlsdCB3aXRoIHRoZSBlbWJlZGRlZCBweXRob24gc3VwcG9ydCBlbmFibGVkOgogY21kID0gIi0tZXZhbC1jb21tYW5kPXB5dGhvbiBpbXBvcnQgc3lzOyBwcmludCBzeXMudmVyc2lvbl9pbmZvIgogcCA9IHN1YnByb2Nlc3MuUG9wZW4oWyJnZGIiLCAiLS1iYXRjaCIsIGNtZF0sCkBAIC0xNDcsNyArMTU3LDYgQEAKIAogICAgICAgICAjIEVuc3VyZSBubyB1bmV4cGVjdGVkIGVycm9yIG1lc3NhZ2VzOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgJycpCi0KICAgICAgICAgcmV0dXJuIG91dAogCiAgICAgZGVmIGdldF9nZGJfcmVwcihzZWxmLCBzb3VyY2UsCkBAIC0xNjgsNyArMTc3LDcgQEAKICAgICAgICAgIyBnZGIgY2FuIGluc2VydCBhZGRpdGlvbmFsICdcbicgYW5kIHNwYWNlIGNoYXJhY3RlcnMgaW4gdmFyaW91cyBwbGFjZXMKICAgICAgICAgIyBpbiBpdHMgb3V0cHV0LCBkZXBlbmRpbmcgb24gdGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbCBpdCdzIGNvbm5lY3RlZAogICAgICAgICAjIHRvICh1c2luZyBpdHMgIndyYXBfaGVyZSIgZnVuY3Rpb24pCi0gICAgICAgIG0gPSByZS5tYXRjaCgnLiojMFxzK2J1aWx0aW5faWRccytcKHNlbGZcPS4qLFxzK3Y9XHMqKC4qPylcKVxzK2F0XHMrUHl0aG9uL2JsdGlubW9kdWxlLmMuKicsCisgICAgICAgIG0gPSByZS5tYXRjaCgnLiojMFxzK2J1aWx0aW5faWRccytcKHNlbGZcPS4qLFxzK3Y9XHMqKC4qPylcKVxzK2F0XHMrXFMqUHl0aG9uL2JsdGlubW9kdWxlLmMuKicsCiAgICAgICAgICAgICAgICAgICAgICBnZGJfb3V0cHV0LCByZS5ET1RBTEwpCiAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGdkYiBvdXRwdXQ6ICVyXG4lcycgJSAoZ2RiX291dHB1dCwgZ2RiX291dHB1dCkpCkBAIC0zMzAsNyArMzM5LDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5faW50ID0gNDIKIGlkKGZvbyknJycpCi0gICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLCBnZGJfcmVwcikKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInPEZvb1woYW5faW50PTQyXCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywgZ2RiX3JlcHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdVbmV4cGVjdGVkIG5ldy1zdHlsZSBjbGFzcyByZW5kZXJpbmcgJXInICUgZ2RiX3JlcHIpCiAKQEAgLTM0Myw3ICszNTIsNyBAQAogZm9vICs9IFsxLCAyLCAzXQogZm9vLmFuX2ludCA9IDQyCiBpZChmb28pJycnKQotICAgICAgICBtID0gcmUubWF0Y2gocic8Rm9vXChhbl9pbnQ9NDJcKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywgZ2RiX3JlcHIpCisgICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsIGdkYl9yZXByKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdVbmV4cGVjdGVkIG5ldy1zdHlsZSBjbGFzcyByZW5kZXJpbmcgJXInICUgZ2RiX3JlcHIpCkBAIC0zNTgsNyArMzY3LDcgQEAKIGZvbyA9IEZvbygoMSwgMiwgMykpCiBmb28uYW5faW50ID0gNDIKIGlkKGZvbyknJycpCi0gICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLCBnZGJfcmVwcikKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInPEZvb1woYW5faW50PTQyXCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywgZ2RiX3JlcHIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0sCiAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J1VuZXhwZWN0ZWQgbmV3LXN0eWxlIGNsYXNzIHJlbmRlcmluZyAlcicgJSBnZGJfcmVwcikKQEAgLTM4NSw3ICszOTQsNyBAQAogCiAgICAgICAgICMgTWF0Y2ggYW55dGhpbmcgZm9yIHRoZSB0eXBlIG5hbWU7IDB4REVBREJFRUYgY291bGQgcG9pbnQgdG8KICAgICAgICAgIyBzb21ldGhpbmcgYXJiaXRyYXJ5IChzZWUgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4MzMwKQotICAgICAgICBwYXR0ZXJuID0gJzwuKiBhdCByZW1vdGUgMHhbMC05YS1mXSs+JworICAgICAgICBwYXR0ZXJuID0gJzwuKiBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nCiAKICAgICAgICAgbSA9IHJlLm1hdGNoKHBhdHRlcm4sIGdkYl9yZXByKQogICAgICAgICBpZiBub3QgbToKQEAgLTQzMSw3ICs0NDAsNyBAQAogICAgICAgICAjICBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODAzMiNtc2cxMDA1MzcgKQogICAgICAgICBnZGJfcmVwciwgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X2dkYl9yZXByKCdpZChfX2J1aWx0aW5zX18uaGVscCknLCBpbXBvcnRfc2l0ZT1UcnVlKQogCi0gICAgICAgIG0gPSByZS5tYXRjaChyJzxfSGVscGVyIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLCBnZGJfcmVwcikKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInPF9IZWxwZXIgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywgZ2RiX3JlcHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdVbmV4cGVjdGVkIHJlbmRlcmluZyAlcicgJSBnZGJfcmVwcikKIApAQCAtNDYyLDcgKzQ3MSw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2F0dHIgPSBmb28KIGlkKGZvbyknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC00NzUsNyArNDg0LDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5fYXR0ciA9IGZvbwogaWQoZm9vKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTQ4OSw3ICs0OTgsNyBAQAogYS5hbl9hdHRyID0gYgogYi5hbl9hdHRyID0gYQogaWQoYSknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTUyNCw3ICs1MzMsNyBAQAogCiAgICAgZGVmIHRlc3RfYnVpbHRpbl9tZXRob2Qoc2VsZik6CiAgICAgICAgIGdkYl9yZXByLCBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfZ2RiX3JlcHIoJ2ltcG9ydCBzeXM7IGlkKHN5cy5zdGRvdXQucmVhZGxpbmVzKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPGJ1aWx0LWluIG1ldGhvZCByZWFkbGluZXMgb2YgX2lvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxidWlsdC1pbiBtZXRob2QgcmVhZGxpbmVzIG9mIF9pby5UZXh0SU9XcmFwcGVyIG9iamVjdCBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01MzksNyArNTQ4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J2J1aWx0aW5faWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHJpbnQgKFB5RnJhbWVPYmplY3QqKSgoKFB5Q29kZU9iamVjdCopdiktPmNvX3pvbWJpZWZyYW1lKSddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnLipccytcJDEgPVxzK0ZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSA8c3RyaW5nPiwgbGluZSAzLCBpbiBmb28gXChcKVxzKy4qJywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcuKlxzK1wkMSA9XHMrRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgPHN0cmluZz4sIGxpbmUgMywgaW4gZm9vIFwoXClccysuKicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuRE9UQUxMKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIChnZGJfb3V0cHV0LCBnZGJfb3V0cHV0KSkKQEAgLTU5Niw3ICs2MDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQogICAgIGJhelwoYSwgYiwgY1wpCiAkJycnKQogCkBAIC02MjUsOSArNjM0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS1kb3duJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQogICAgIGJhelwoYSwgYiwgY1wpCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgMTAsIGluIGJheiBcKGFyZ3M9XCgxLCAyLCAzXClcKQorI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgMTAsIGluIGJheiBcKGFyZ3M9XCgxLCAyLCAzXClcKQogICAgIGlkXCg0MlwpCiAkJycnKQogCkBAIC02NTksMTQgKzY2OCwxMDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1idC1mdWxsJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQogICAgIGJhelwoYSwgYiwgY1wpCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNCwgaW4gZm9vIFwoYT0xLCBiPTIsIGM9M1wpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA0LCBpbiBmb28gXChhPTEsIGI9MiwgYz0zXCkKICAgICBiYXJcKGEsIGIsIGNcKQotI1swLTldKyBGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDEyLCBpbiA8bW9kdWxlPiBcKFwpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSAxMiwgaW4gPG1vZHVsZT4gXChcKQogICAgIGZvb1woMSwgMiwgM1wpCiAnJycpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X3RocmVhZHMoc2VsZik6CisgICAgICAgICdWZXJpZnkgdGhhdCAicHktYnQiIGluZGljYXRlcyB0aHJlYWRzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIHRoZSBHSUwnCisgICAgICAgIGNtZCA9ICcnJworZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAorCitjbGFzcyBUZXN0VGhyZWFkKFRocmVhZCk6CisgICAgIyBUaGVzZSB0aHJlYWRzIHdvdWxkIHJ1biBmb3JldmVyLCBidXQgd2UnbGwgaW50ZXJydXB0IHRoaW5ncyB3aXRoIHRoZQorICAgICMgZGVidWdnZXIKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBpID0gMAorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgIGkgKz0gMQorCit0ID0ge30KK2ZvciBpIGluIHJhbmdlKDQpOgorICAgdFtpXSA9IFRlc3RUaHJlYWQoKQorICAgdFtpXS5zdGFydCgpCisKKyMgVHJpZ2dlciBhIGJyZWFrcG9pbnQgb24gdGhlIG1haW4gdGhyZWFkCitpZCg0MikKKworJycnCisgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0IjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3RocmVhZCBhcHBseSBhbGwgcHktYnQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignV2FpdGluZyBmb3IgdGhlIEdJTCcsIGdkYl9vdXRwdXQpCisKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQtZnVsbCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9Wyd0aHJlYWQgYXBwbHkgYWxsIHB5LWJ0LWZ1bGwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignV2FpdGluZyBmb3IgdGhlIEdJTCcsIGdkYl9vdXRwdXQpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHB5dGhvbl9pc19vcHRpbWl6ZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucyIpCisgICAgIyBTb21lIG9sZGVyIHZlcnNpb25zIG9mIGdkYiB3aWxsIGZhaWwgd2l0aAorICAgICMgICJDYW5ub3QgZmluZCBuZXcgdGhyZWFkczogZ2VuZXJpYyBlcnJvciIKKyAgICAjIHVubGVzcyB3ZSBhZGQgTERfUFJFTE9BRD1QQVRILVRPLWxpYnB0aHJlYWQuc28uMSBhcyBhIHdvcmthcm91bmQKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X2djKHNlbGYpOgorICAgICAgICAnVmVyaWZ5IHRoYXQgInB5LWJ0IiBpbmRpY2F0ZXMgaWYgYSB0aHJlYWQgaXMgZ2FyYmFnZS1jb2xsZWN0aW5nJworICAgICAgICBjbWQgPSAoJ2Zyb20gZ2MgaW1wb3J0IGNvbGxlY3RcbicKKyAgICAgICAgICAgICAgICdpZCg0MilcbicKKyAgICAgICAgICAgICAgICdkZWYgZm9vKCk6XG4nCisgICAgICAgICAgICAgICAnICAgIGNvbGxlY3QoKVxuJworICAgICAgICAgICAgICAgJ2RlZiBiYXIoKTpcbicKKyAgICAgICAgICAgICAgICcgICAgZm9vKClcbicKKyAgICAgICAgICAgICAgICdiYXIoKVxuJykKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQiOgorICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsnYnJlYWsgdXBkYXRlX3JlZnMnLCAnY29udGludWUnLCAncHktYnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignR2FyYmFnZS1jb2xsZWN0aW5nJywgZ2RiX291dHB1dCkKKworICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idC1mdWxsIjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ2JyZWFrIHVwZGF0ZV9yZWZzJywgJ2NvbnRpbnVlJywgJ3B5LWJ0LWZ1bGwnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignR2FyYmFnZS1jb2xsZWN0aW5nJywgZ2RiX291dHB1dCkKKworICAgIEB1bml0dGVzdC5za2lwSWYocHl0aG9uX2lzX29wdGltaXplZCgpLAorICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zIikKKyAgICAjIFNvbWUgb2xkZXIgdmVyc2lvbnMgb2YgZ2RiIHdpbGwgZmFpbCB3aXRoCisgICAgIyAgIkNhbm5vdCBmaW5kIG5ldyB0aHJlYWRzOiBnZW5lcmljIGVycm9yIgorICAgICMgdW5sZXNzIHdlIGFkZCBMRF9QUkVMT0FEPVBBVEgtVE8tbGlicHRocmVhZC5zby4xIGFzIGEgd29ya2Fyb3VuZAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKF90aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWQgc3VwcG9ydCIpCisgICAgZGVmIHRlc3RfcHljZnVuY3Rpb24oc2VsZik6CisgICAgICAgICdWZXJpZnkgdGhhdCAicHktYnQiIGRpc3BsYXlzIGludm9jYXRpb25zIG9mIFB5Q0Z1bmN0aW9uIGluc3RhbmNlcycKKyAgICAgICAgY21kID0gKCdmcm9tIHRpbWUgaW1wb3J0IHNsZWVwXG4nCisgICAgICAgICAgICAgICAnZGVmIGZvbygpOlxuJworICAgICAgICAgICAgICAgJyAgICBzbGVlcCgxKVxuJworICAgICAgICAgICAgICAgJ2RlZiBiYXIoKTpcbicKKyAgICAgICAgICAgICAgICcgICAgZm9vKClcbicKKyAgICAgICAgICAgICAgICdiYXIoKVxuJykKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQiOgorICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0ndGltZV9zbGVlcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydidCcsICdweS1idCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEluKCc8YnVpbHQtaW4gbWV0aG9kIHNsZWVwJywgZ2RiX291dHB1dCkKKworICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idC1mdWxsIjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J3RpbWVfc2xlZXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktYnQtZnVsbCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEluKCcjMCA8YnVpbHQtaW4gbWV0aG9kIHNsZWVwJywgZ2RiX291dHB1dCkKKworCiBjbGFzcyBQeVByaW50VGVzdHMoRGVidWdnZXJUZXN0cyk6CiAgICAgQHVuaXR0ZXN0LnNraXBJZihweXRob25faXNfb3B0aW1pemVkKCksCiAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMiKQpAQCAtNzAwLDcgKzgwMSw3IEBACiAgICAgICAgIGJ0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2Uoc2NyaXB0PXNlbGYuZ2V0X3NhbXBsZV9zY3JpcHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1wcmludCBsZW4nXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIuKlxuYnVpbHRpbiAnbGVuJyA9IDxidWlsdC1pbiBtZXRob2QgbGVuIG9mIG1vZHVsZSBvYmplY3QgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPlxuLioiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIuKlxuYnVpbHRpbiAnbGVuJyA9IDxidWlsdC1pbiBtZXRob2QgbGVuIG9mIG1vZHVsZSBvYmplY3QgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XG4uKiIpCiAKIGNsYXNzIFB5TG9jYWxzVGVzdHMoRGVidWdnZXJUZXN0cyk6CiAgICAgQHVuaXR0ZXN0LnNraXBJZihweXRob25faXNfb3B0aW1pemVkKCksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKaW5kZXggNWY0N2IzZS4uMDZmNjdjMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQpAQCAtNzI4LDI5ICs3MjgsNiBAQAogCiBzeW50YXhfdGVzdHMgPSAiIiIKIAotPj4+IGRlZiBmKCk6Ci0uLi4gICAgIHJldHVybiAyMgotLi4uICAgICB5aWVsZCAxCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIC4uCi1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KLT4+PiBkZWYgZigpOgotLi4uICAgICB5aWVsZCAxCi0uLi4gICAgIHJldHVybiAyMgotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAuLgotU3ludGF4RXJyb3I6ICdyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvcgotCi0icmV0dXJuIE5vbmUiIGlzIG5vdCB0aGUgc2FtZSBhcyAicmV0dXJuIiBpbiBhIGdlbmVyYXRvcjoKLQotPj4+IGRlZiBmKCk6Ci0uLi4gICAgIHlpZWxkIDEKLS4uLiAgICAgcmV0dXJuIE5vbmUKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4KLVN5bnRheEVycm9yOiAncmV0dXJuJyB3aXRoIGFyZ3VtZW50IGluc2lkZSBnZW5lcmF0b3IKLQogVGhlc2UgYXJlIGZpbmU6CiAKID4+PiBkZWYgZigpOgpAQCAtODY2LDIwICs4NDMsNiBAQAogPj4+IHR5cGUoZigpKQogPGNsYXNzICdnZW5lcmF0b3InPgogCi0KLT4+PiBkZWYgZigpOgotLi4uICAgICBpZiAwOgotLi4uICAgICAgICAgbGFtYmRhIHg6ICB4ICAgICAgICAjIHNob3VsZG4ndCB0cmlnZ2VyIGhlcmUKLS4uLiAgICAgICAgIHJldHVybiAgICAgICAgICAgICAgIyBvciBoZXJlCi0uLi4gICAgICAgICBkZWYgZihpKToKLS4uLiAgICAgICAgICAgICByZXR1cm4gMippICAgICAgIyBvciBoZXJlCi0uLi4gICAgICAgICBpZiAwOgotLi4uICAgICAgICAgICAgIHJldHVybiAzICAgICAgICAjIGJ1dCAqdGhpcyogc3Vja3MgKGxpbmUgOCkKLS4uLiAgICAgaWYgMDoKLS4uLiAgICAgICAgIHlpZWxkIDIgICAgICAgICAgICAgIyBiZWNhdXNlIGl0J3MgYSBnZW5lcmF0b3IgKGxpbmUgMTApCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KIFRoaXMgb25lIGNhdXNlZCBhIGNyYXNoIChzZWUgU0YgYnVnIDU2NzUzOCk6CiAKID4+PiBkZWYgZigpOgpAQCAtMTU2NiwxMSArMTUyOSw2IEBACiAgIC4uLgogU3ludGF4RXJyb3I6ICd5aWVsZCcgb3V0c2lkZSBmdW5jdGlvbgogCi0+Pj4gZGVmIGYoKTogcmV0dXJuIGxhbWJkYSB4PSh5aWVsZCk6IDEKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4uCi1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KID4+PiBkZWYgZigpOiB4ID0geWllbGQgPSB5CiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgIC4uLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKaW5kZXggNTA2MzhhMS4uM2VhZGQ1OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CkBAIC0yLDExICsyLDEyIEBACiBUZXN0cyBjb21tb24gdG8gZ2VuZXJpY3BhdGgsIG1hY3BhdGgsIG50cGF0aCBhbmQgcG9zaXhwYXRoCiAiIiIKIAotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWltcG9ydCBvcwogaW1wb3J0IGdlbmVyaWNwYXRoCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBkZWYgc2FmZV9ybWRpcihkaXJuYW1lKToKQEAgLTE0NSw2ICsxNDYsMTYgQEAKICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgInBpcGUiKSwgInJlcXVpcmVzIG9zLnBpcGUoKSIpCisgICAgZGVmIHRlc3RfZXhpc3RzX2ZkKHNlbGYpOgorICAgICAgICByLCB3ID0gb3MucGlwZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKHIpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UocikKKyAgICAgICAgICAgIG9zLmNsb3NlKHcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhyKSkKKwogICAgIGRlZiB0ZXN0X2lzZGlyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQogICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKQEAgLTI1OCwxNSArMjY5LDIxIEBACiAKICAgICBkZWYgdGVzdF9hYnNwYXRoKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEluKCJmb28iLCBzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aCgiZm9vIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmb28iLCBzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChiImZvbyIpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmb28iLCBzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChiImZvbyIpKQogCiAgICAgICAgICMgQWJzcGF0aCByZXR1cm5zIGJ5dGVzIHdoZW4gdGhlIGFyZyBpcyBieXRlcwotICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIGInZlx4ZjJceGYyJywgYicvZm9vJywgYidDOlxcJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5wYXRobW9kdWxlLmFic3BhdGgocGF0aCksIGJ5dGVzKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGZvciBwYXRoIGluIChiJycsIGInZm9vJywgYidmXHhmMlx4ZjInLCBiJy9mb28nLCBiJ0M6XFwnKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5wYXRobW9kdWxlLmFic3BhdGgocGF0aCksIGJ5dGVzKQogCiAgICAgZGVmIHRlc3RfcmVhbHBhdGgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImZvbyIsIHNlbGYucGF0aG1vZHVsZS5yZWFscGF0aCgiZm9vIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmb28iLCBzZWxmLnBhdGhtb2R1bGUucmVhbHBhdGgoYiJmb28iKSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLnJlYWxwYXRoKGIiZm9vIikpCiAKICAgICBkZWYgdGVzdF9ub3JtcGF0aF9pc3N1ZTU4Mjcoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIG5vcm1wYXRoIHByZXNlcnZlcyB1bmljb2RlCkBAIC0yODIsOCArMjk5LDcgQEAKIAogICAgICAgICB1bmljd2QgPSAnXHhlN3dceGYwJwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmc2VuY29kaW5nID0gc3VwcG9ydC5URVNURk5fRU5DT0RJTkcgb3IgImFzY2lpIgotICAgICAgICAgICAgdW5pY3dkLmVuY29kZShmc2VuY29kaW5nKQorICAgICAgICAgICAgb3MuZnNlbmNvZGUodW5pY3dkKQogICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBVbmljb2RlRW5jb2RlRXJyb3IpOgogICAgICAgICAgICAgIyBGUyBlbmNvZGluZyBpcyBwcm9iYWJseSBBU0NJSQogICAgICAgICAgICAgcGFzcwpAQCAtMjk1LDkgKzMxMSwyMCBAQAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLAogICAgICAgICAiTWFjIE9TIFggZGVuaWVzIHRoZSBjcmVhdGlvbiBvZiBhIGRpcmVjdG9yeSB3aXRoIGFuIGludmFsaWQgdXRmOCBuYW1lIikKICAgICBkZWYgdGVzdF9ub25hc2NpaV9hYnNwYXRoKHNlbGYpOgorICAgICAgICBuYW1lID0gYidceGU3d1x4ZjAnCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLmZzZGVjb2RlKG5hbWUpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInRoZSBmaWxlbmFtZSAlYSBpcyBub3QgZGVjb2RhYmxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIHRoZSBBTlNJIGNvZGUgcGFnZSAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKG5hbWUsIHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkpCisKICAgICAgICAgIyBUZXN0IG5vbi1BU0NJSSwgbm9uLVVURjggYnl0ZXMgaW4gdGhlIHBhdGguCi0gICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChiJ1x4ZTd3XHhmMCcpOgotICAgICAgICAgICAgc2VsZi50ZXN0X2Fic3BhdGgoKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLnRlc3RfYWJzcGF0aCgpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5leHBzLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5leHBzLnB5CmluZGV4IDFmNDZhZjEuLjQxMzA0M2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXhwcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmV4cHMucHkKQEAgLTI1NywxMSArMjU3LDE1IEBACiAKICIiIgogCitpbXBvcnQgc3lzCiAKLV9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KKyMgVHJhY2UgZnVuY3Rpb24gY2FuIHRocm93IG9mZiB0aGUgdHVwbGUgcmV1c2UgdGVzdC4KK2lmIGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCk6CisgICAgX190ZXN0X18gPSB7fQorZWxzZToKKyAgICBfX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBpbXBvcnQgc3lzCiAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2dlbmV4cHMKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfZ2VuZXhwcywgdmVyYm9zZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkgYi9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CmluZGV4IDNkOWMwNmEuLjQ4Y2E5NGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19rZXl3b3JkcworZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3Nfa2V5d29yZHMsIGdldGFyZ3Nfa2V5d29yZF9vbmx5CiAKICIiIgogPiBIb3cgYWJvdXQgdGhlIGZvbGxvd2luZyBjb3VudGVycHJvcG9zYWwuIFRoaXMgYWxzbyBjaGFuZ2VzIHNvbWUgb2YKQEAgLTIxNCw2ICsyMTQsMzYgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFZFUllfTEFSR0UgJiBVTExPTkdfTUFYLCBnZXRhcmdzX0soVkVSWV9MQVJHRSkpCiAKK2NsYXNzIFBhcmFkb3g6CisgICAgIlRoaXMgc3RhdGVtZW50IGlzIGZhbHNlLiIKKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworY2xhc3MgQm9vbGVhbl9UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfcAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcChGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoMC4wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoMGopKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcCgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcCh7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoVHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgxLjApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgxaikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKCd4JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKCgxLCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcChbMV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCh7MToyfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKHVuaXR0ZXN0LlRlc3RDYXNlKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBnZXRhcmdzX3AsIFBhcmFkb3goKSkKKwogCiBjbGFzcyBUdXBsZV9UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfdHVwbGUoc2VsZik6CkBAIC0yOTMsNyArMzIzLDg3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1R5cGVFcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCcpCiAKK2NsYXNzIEtleXdvcmRPbmx5X1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9wb3NpdGlvbmFsX2FyZ3Moc2VsZik6CisgICAgICAgICMgdXNpbmcgYWxsIHBvc3NpYmxlIHBvc2l0aW9uYWwgYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiksCisgICAgICAgICAgICAoMSwgMiwgLTEpCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9taXhlZF9hcmdzKHNlbGYpOgorICAgICAgICAjIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwga2V5d29yZF9vbmx5PTMpLAorICAgICAgICAgICAgKDEsIDIsIDMpCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgICMgYWxsIGtleXdvcmRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShyZXF1aXJlZD0xLCBvcHRpb25hbD0yLCBrZXl3b3JkX29ubHk9MyksCisgICAgICAgICAgICAoMSwgMiwgMykKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsX2FyZ3Moc2VsZik6CisgICAgICAgICMgbWlzc2luZyBvcHRpb25hbCBrZXl3b3JkIGFyZ3MsIHNraXBwaW5nIHR1cGxlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkocmVxdWlyZWQ9MSwgb3B0aW9uYWw9MiksCisgICAgICAgICAgICAoMSwgMiwgLTEpCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShyZXF1aXJlZD0xLCBrZXl3b3JkX29ubHk9MyksCisgICAgICAgICAgICAoMSwgLTEsIDMpCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1aXJlZF9hcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSksCisgICAgICAgICAgICAoMSwgLTEsIC0xKQorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkocmVxdWlyZWQ9MSksCisgICAgICAgICAgICAoMSwgLTEsIC0xKQorICAgICAgICAgICAgKQorICAgICAgICAjIHJlcXVpcmVkIGFyZyBtaXNzaW5nCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShvcHRpb25hbD0yKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShrZXl3b3JkX29ubHk9MykKKworICAgIGRlZiB0ZXN0X3Rvb19tYW55X2FyZ3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMyBnaXZlblwpIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAzKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiZnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAzIGFyZ3VtZW50cyBcKDQgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMywga2V5d29yZF9vbmx5PTUpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2tleXdvcmQoc2VsZik6CisgICAgICAgICMgZXh0cmFuZW91cyBrZXl3b3JkIGFyZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIidtb25zdGVyJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iKToKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIG1vbnN0ZXI9NjY2KQorCisgICAgZGVmIHRlc3Rfc3Vycm9nYXRlX2tleXdvcmQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiJ1x1ZGM4MCcgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAqKnsnXHVEQzgwJzogMTB9KQorCiBjbGFzcyBCeXRlc19UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYyhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfYworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfYywgYidhYmMnKSAgIyBsZW4gPiAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19jKGInYScpLCBiJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfYyhieXRlYXJyYXkoYidhJykpLCBiJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfYywgbWVtb3J5dmlldyhiJ2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2MsICdzJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2MsIE5vbmUpCisKICAgICBkZWYgdGVzdF9zKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19zCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19zKCdhYmNceGU5JyksIGInYWJjXHhjM1x4YTknKQpAQCAtNDMwLDggKzU0MCwxMCBAQAogICAgIHRlc3RzID0gWwogICAgICAgICBTaWduZWRfVGVzdENhc2UsCiAgICAgICAgIFVuc2lnbmVkX1Rlc3RDYXNlLAorICAgICAgICBCb29sZWFuX1Rlc3RDYXNlLAogICAgICAgICBUdXBsZV9UZXN0Q2FzZSwKICAgICAgICAgS2V5d29yZHNfVGVzdENhc2UsCisgICAgICAgIEtleXdvcmRPbmx5X1Rlc3RDYXNlLAogICAgICAgICBCeXRlc19UZXN0Q2FzZSwKICAgICAgICAgVW5pY29kZV9UZXN0Q2FzZSwKICAgICBdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dsb2IucHkgYi9MaWIvdGVzdC90ZXN0X2dsb2IucHkKaW5kZXggMTU2MGE2Yi4uNmVlMDhkYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nbG9iLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgVEVTVEZOLCBza2lwX3VubGVzc19zeW1saW5rLCBjYW5fc3ltbGluaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIFRFU1RGTiwgc2tpcF91bmxlc3Nfc3ltbGluaywKKyAgICBjYW5fc3ltbGluaywgY3JlYXRlX2VtcHR5X2ZpbGUpCiBpbXBvcnQgZ2xvYgogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCkBAIC0xNCw4ICsxNSw3IEBACiAgICAgICAgIGJhc2UsIGZpbGUgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYmFzZSk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhiYXNlKQotICAgICAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3cnKQotICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUoZmlsZW5hbWUpCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYudGVtcGRpciA9IFRFU1RGTisiX2RpciIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQppbmRleCAyNjhhNjMzLi42YjMyNmJkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CkBAIC0xMCw3ICsxMCw3IEBACiAKIGNsYXNzIFRva2VuVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIHRlc3RCYWNrc2xhc2goc2VsZik6CisgICAgZGVmIHRlc3RfYmFja3NsYXNoKHNlbGYpOgogICAgICAgICAjIEJhY2tzbGFzaCBtZWFucyBsaW5lIGNvbnRpbnVhdGlvbjoKICAgICAgICAgeCA9IDEgXAogICAgICAgICArIDEKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgeCA9IDAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAwLCAnYmFja3NsYXNoIGVuZGluZyBjb21tZW50JykKIAotICAgIGRlZiB0ZXN0UGxhaW5JbnRlZ2VycyhzZWxmKToKKyAgICBkZWYgdGVzdF9wbGFpbl9pbnRlZ2VycyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKDAwMCksIHR5cGUoMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMHhmZiwgMjU1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDBvMzc3LCAyNTUpCkBAIC01Niw3ICs1Niw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1dlaXJkIG1heHNpemUgdmFsdWUgJXInICUgbWF4c2l6ZSkKIAotICAgIGRlZiB0ZXN0TG9uZ0ludGVnZXJzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xvbmdfaW50ZWdlcnMoc2VsZik6CiAgICAgICAgIHggPSAwCiAgICAgICAgIHggPSAweGZmZmZmZmZmZmZmZmZmZmYKICAgICAgICAgeCA9IDBYZmZmZmZmZmZmZmZmZmZmZgpAQCAtNjYsNyArNjYsNyBAQAogICAgICAgICB4ID0gMGIxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgICAgICAgeCA9IDBCMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExCiAKLSAgICBkZWYgdGVzdEZsb2F0cyhzZWxmKToKKyAgICBkZWYgdGVzdF9mbG9hdHMoc2VsZik6CiAgICAgICAgIHggPSAzLjE0CiAgICAgICAgIHggPSAzMTQuCiAgICAgICAgIHggPSAwLjMxNApAQCAtODAsNyArODAsNyBAQAogICAgICAgICB4ID0gLjNlMTQKICAgICAgICAgeCA9IDMuMWU0CiAKLSAgICBkZWYgdGVzdFN0cmluZ0xpdGVyYWxzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3N0cmluZ19saXRlcmFscyhzZWxmKToKICAgICAgICAgeCA9ICcnOyB5ID0gIiI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMCBhbmQgeCA9PSB5KQogICAgICAgICB4ID0gJ1wnJzsgeSA9ICInIjsgc2VsZi5hc3NlcnRUcnVlKGxlbih4KSA9PSAxIGFuZCB4ID09IHkgYW5kIG9yZCh4KSA9PSAzOSkKICAgICAgICAgeCA9ICciJzsgeSA9ICJcIiI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMSBhbmQgeCA9PSB5IGFuZCBvcmQoeCkgPT0gMzQpCkBAIC0xMjAsMTEgKzEyMCwxOCBAQAogJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCiAKLSAgICBkZWYgdGVzdEVsbGlwc2lzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2VsbGlwc2lzKHNlbGYpOgogICAgICAgICB4ID0gLi4uCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIEVsbGlwc2lzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIi4uIC4iKQogCisgICAgZGVmIHRlc3RfZW9mX2Vycm9yKHNlbGYpOgorICAgICAgICBzYW1wbGVzID0gKCJkZWYgZm9vKCIsICJcbmRlZiBmb28oIiwgImRlZiBmb28oXG4iKQorICAgICAgICBmb3IgcyBpbiBzYW1wbGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgY29tcGlsZShzLCAiPHRlc3Q+IiwgImV4ZWMiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigidW5leHBlY3RlZCBFT0YiLCBzdHIoY20uZXhjZXB0aW9uKSkKKwogY2xhc3MgR3JhbW1hclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgc2luZ2xlX2lucHV0OiBORVdMSU5FIHwgc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10IE5FV0xJTkUKQEAgLTEzNiwxMSArMTQzLDExIEBACiAgICAgIyBleHByX2lucHV0OiB0ZXN0bGlzdCBORVdMSU5FCiAgICAgIyBYWFggSGFyZCB0byB0ZXN0IC0tIHVzZWQgb25seSBpbiBjYWxscyB0byBpbnB1dCgpCiAKLSAgICBkZWYgdGVzdEV2YWxJbnB1dChzZWxmKToKKyAgICBkZWYgdGVzdF9ldmFsX2lucHV0KHNlbGYpOgogICAgICAgICAjIHRlc3RsaXN0IEVORE1BUktFUgogICAgICAgICB4ID0gZXZhbCgnMSwgMCBvciAxJykKIAotICAgIGRlZiB0ZXN0RnVuY2RlZihzZWxmKToKKyAgICBkZWYgdGVzdF9mdW5jZGVmKHNlbGYpOgogICAgICAgICAjIyMgW2RlY29yYXRvcnNdICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUKICAgICAgICAgIyMjIGRlY29yYXRvcjogJ0AnIGRvdHRlZF9uYW1lIFsgJygnIFthcmdsaXN0XSAnKScgXSBORVdMSU5FCiAgICAgICAgICMjIyBkZWNvcmF0b3JzOiBkZWNvcmF0b3IrCkBAIC0zMjQsNyArMzMxLDcgQEAKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCpnKDE9MikpIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCoqZygxPTIpKSIpCiAKLSAgICBkZWYgdGVzdExhbWJkZWYoc2VsZik6CisgICAgZGVmIHRlc3RfbGFtYmRlZihzZWxmKToKICAgICAgICAgIyMjIGxhbWJkZWY6ICdsYW1iZGEnIFt2YXJhcmdzbGlzdF0gJzonIHRlc3QKICAgICAgICAgbDEgPSBsYW1iZGEgOiAwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobDEoKSwgMCkKQEAgLTM0Niw3ICszNTMsNyBAQAogICAgICMjIyBzdG10OiBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RTaW1wbGVTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X3NpbXBsZV9zdG10KHNlbGYpOgogICAgICAgICAjIyMgc2ltcGxlX3N0bXQ6IHNtYWxsX3N0bXQgKCc7JyBzbWFsbF9zdG10KSogWyc7J10KICAgICAgICAgeCA9IDE7IHBhc3M7IGRlbCB4CiAgICAgICAgIGRlZiBmb28oKToKQEAgLTM1Nyw3ICszNjQsNyBAQAogICAgICMjIyBzbWFsbF9zdG10OiBleHByX3N0bXQgfCBwYXNzX3N0bXQgfCBkZWxfc3RtdCB8IGZsb3dfc3RtdCB8IGltcG9ydF9zdG10IHwgZ2xvYmFsX3N0bXQgfCBhY2Nlc3Nfc3RtdAogICAgICMgVGVzdGVkIGJlbG93CiAKLSAgICBkZWYgdGVzdEV4cHJTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X2V4cHJfc3RtdChzZWxmKToKICAgICAgICAgIyAoZXhwcmxpc3QgJz0nKSogZXhwcmxpc3QKICAgICAgICAgMQogICAgICAgICAxLCAyLCAzCkBAIC0zNzAsNyArMzc3LDcgQEAKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ4ICsgMSA9IDEiKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImEgKyAxID0gYiArIDIiKQogCi0gICAgZGVmIHRlc3REZWxTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X2RlbF9zdG10KHNlbGYpOgogICAgICAgICAjICdkZWwnIGV4cHJsaXN0CiAgICAgICAgIGFiYyA9IFsxLDIsM10KICAgICAgICAgeCwgeSwgeiA9IGFiYwpAQCAtMzc5LDE4ICszODYsMTggQEAKICAgICAgICAgZGVsIGFiYwogICAgICAgICBkZWwgeCwgeSwgKHosIHh5eikKIAotICAgIGRlZiB0ZXN0UGFzc1N0bXQoc2VsZik6CisgICAgZGVmIHRlc3RfcGFzc19zdG10KHNlbGYpOgogICAgICAgICAjICdwYXNzJwogICAgICAgICBwYXNzCiAKICAgICAjIGZsb3dfc3RtdDogYnJlYWtfc3RtdCB8IGNvbnRpbnVlX3N0bXQgfCByZXR1cm5fc3RtdCB8IHJhaXNlX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RCcmVha1N0bXQoc2VsZik6CisgICAgZGVmIHRlc3RfYnJlYWtfc3RtdChzZWxmKToKICAgICAgICAgIyAnYnJlYWsnCiAgICAgICAgIHdoaWxlIDE6IGJyZWFrCiAKLSAgICBkZWYgdGVzdENvbnRpbnVlU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9jb250aW51ZV9zdG10KHNlbGYpOgogICAgICAgICAjICdjb250aW51ZScKICAgICAgICAgaSA9IDEKICAgICAgICAgd2hpbGUgaTogaSA9IDA7IGNvbnRpbnVlCkBAIC00NDIsNyArNDQ5LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImNvbnRpbnVlIHRoZW4gYnJlYWsgaW4gdHJ5L2V4Y2VwdCBpbiBsb29wIGJyb2tlbiEiKQogICAgICAgICB0ZXN0X2lubmVyKCkKIAotICAgIGRlZiB0ZXN0UmV0dXJuKHNlbGYpOgorICAgIGRlZiB0ZXN0X3JldHVybihzZWxmKToKICAgICAgICAgIyAncmV0dXJuJyBbdGVzdGxpc3RdCiAgICAgICAgIGRlZiBnMSgpOiByZXR1cm4KICAgICAgICAgZGVmIGcyKCk6IHJldHVybiAxCkBAIC00NTAsMTcgKzQ1Nyw0OSBAQAogICAgICAgICB4ID0gZzIoKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImNsYXNzIGZvbzpyZXR1cm4gMSIpCiAKLSAgICBkZWYgdGVzdFlpZWxkKHNlbGYpOgorICAgIGRlZiB0ZXN0X3lpZWxkKHNlbGYpOgorICAgICAgICAjIEFsbG93ZWQgYXMgc3RhbmRhbG9uZSBzdGF0ZW1lbnQKKyAgICAgICAgZGVmIGcoKTogeWllbGQgMQorICAgICAgICBkZWYgZygpOiB5aWVsZCBmcm9tICgpCisgICAgICAgICMgQWxsb3dlZCBhcyBSSFMgb2YgYXNzaWdubWVudAorICAgICAgICBkZWYgZygpOiB4ID0geWllbGQgMQorICAgICAgICBkZWYgZygpOiB4ID0geWllbGQgZnJvbSAoKQorICAgICAgICAjIE9yZGluYXJ5IHlpZWxkIGFjY2VwdHMgaW1wbGljaXQgdHVwbGVzCisgICAgICAgIGRlZiBnKCk6IHlpZWxkIDEsIDEKKyAgICAgICAgZGVmIGcoKTogeCA9IHlpZWxkIDEsIDEKKyAgICAgICAgIyAneWllbGQgZnJvbScgZG9lcyBub3QKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiB5aWVsZCBmcm9tICgpLCAxIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiB4ID0geWllbGQgZnJvbSAoKSwgMSIpCisgICAgICAgICMgUmVxdWlyZXMgcGFyZW50aGVzZXMgYXMgc3ViZXhwcmVzc2lvbgorICAgICAgICBkZWYgZygpOiAxLCAoeWllbGQgMSkKKyAgICAgICAgZGVmIGcoKTogMSwgKHlpZWxkIGZyb20gKCkpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogMSwgeWllbGQgMSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogMSwgeWllbGQgZnJvbSAoKSIpCisgICAgICAgICMgUmVxdWlyZXMgcGFyZW50aGVzZXMgYXMgY2FsbCBhcmd1bWVudAorICAgICAgICBkZWYgZygpOiBmKCh5aWVsZCAxKSkKKyAgICAgICAgZGVmIGcoKTogZigoeWllbGQgMSksIDEpCisgICAgICAgIGRlZiBnKCk6IGYoKHlpZWxkIGZyb20gKCkpKQorICAgICAgICBkZWYgZygpOiBmKCh5aWVsZCBmcm9tICgpKSwgMSkKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIDEpIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIDEsIDEpIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIGZyb20gKCkpIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIGZyb20gKCksIDEpIikKKyAgICAgICAgIyBOb3QgYWxsb3dlZCBhdCB0b3AgbGV2ZWwKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ5aWVsZCIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieWllbGQgZnJvbSIpCisgICAgICAgICMgTm90IGFsbG93ZWQgYXQgY2xhc3Mgc2NvcGUKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJjbGFzcyBmb286eWllbGQgMSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgZm9vOnlpZWxkIGZyb20gKCkiKQogCi0gICAgZGVmIHRlc3RSYWlzZShzZWxmKToKKworICAgIGRlZiB0ZXN0X3JhaXNlKHNlbGYpOgogICAgICAgICAjICdyYWlzZScgdGVzdCBbJywnIHRlc3RdCiAgICAgICAgIHRyeTogcmFpc2UgUnVudGltZUVycm9yKCdqdXN0IHRlc3RpbmcnKQogICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOiBwYXNzCiAgICAgICAgIHRyeTogcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OiBwYXNzCiAKLSAgICBkZWYgdGVzdEltcG9ydChzZWxmKToKKyAgICBkZWYgdGVzdF9pbXBvcnQoc2VsZik6CiAgICAgICAgICMgJ2ltcG9ydCcgZG90dGVkX2FzX25hbWVzCiAgICAgICAgIGltcG9ydCBzeXMKICAgICAgICAgaW1wb3J0IHRpbWUsIHN5cwpAQCAtNDczLDEzICs1MTIsMTMgQEAKICAgICAgICAgZnJvbSBzeXMgaW1wb3J0IChwYXRoLCBhcmd2KQogICAgICAgICBmcm9tIHN5cyBpbXBvcnQgKHBhdGgsIGFyZ3YsKQogCi0gICAgZGVmIHRlc3RHbG9iYWwoc2VsZik6CisgICAgZGVmIHRlc3RfZ2xvYmFsKHNlbGYpOgogICAgICAgICAjICdnbG9iYWwnIE5BTUUgKCcsJyBOQU1FKSoKICAgICAgICAgZ2xvYmFsIGEKICAgICAgICAgZ2xvYmFsIGEsIGIKICAgICAgICAgZ2xvYmFsIG9uZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2ZSwgc2l4LCBzZXZlbiwgZWlnaHQsIG5pbmUsIHRlbgogCi0gICAgZGVmIHRlc3ROb25sb2NhbChzZWxmKToKKyAgICBkZWYgdGVzdF9ub25sb2NhbChzZWxmKToKICAgICAgICAgIyAnbm9ubG9jYWwnIE5BTUUgKCcsJyBOQU1FKSoKICAgICAgICAgeCA9IDAKICAgICAgICAgeSA9IDAKQEAgLTQ4Nyw3ICs1MjYsNyBAQAogICAgICAgICAgICAgbm9ubG9jYWwgeAogICAgICAgICAgICAgbm9ubG9jYWwgeCwgeQogCi0gICAgZGVmIHRlc3RBc3NlcnQoc2VsZik6CisgICAgZGVmIHRlc3RfYXNzZXJ0KHNlbGYpOgogICAgICAgICAjIGFzc2VydFRydWVzdG10OiAnYXNzZXJ0JyB0ZXN0IFsnLCcgdGVzdF0KICAgICAgICAgYXNzZXJ0IDEKICAgICAgICAgYXNzZXJ0IDEsIDEKQEAgLTUyNiw3ICs1NjUsNyBAQAogICAgICMjIyBjb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RJZihzZWxmKToKKyAgICBkZWYgdGVzdF9pZihzZWxmKToKICAgICAgICAgIyAnaWYnIHRlc3QgJzonIHN1aXRlICgnZWxpZicgdGVzdCAnOicgc3VpdGUpKiBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgaWYgMTogcGFzcwogICAgICAgICBpZiAxOiBwYXNzCkBAIC01MzksNyArNTc4LDcgQEAKICAgICAgICAgZWxpZiAwOiBwYXNzCiAgICAgICAgIGVsc2U6IHBhc3MKIAotICAgIGRlZiB0ZXN0V2hpbGUoc2VsZik6CisgICAgZGVmIHRlc3Rfd2hpbGUoc2VsZik6CiAgICAgICAgICMgJ3doaWxlJyB0ZXN0ICc6JyBzdWl0ZSBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgd2hpbGUgMDogcGFzcwogICAgICAgICB3aGlsZSAwOiBwYXNzCkBAIC01NTQsNyArNTkzLDcgQEAKICAgICAgICAgICAgIHggPSAyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMikKIAotICAgIGRlZiB0ZXN0Rm9yKHNlbGYpOgorICAgIGRlZiB0ZXN0X2ZvcihzZWxmKToKICAgICAgICAgIyAnZm9yJyBleHBybGlzdCAnaW4nIGV4cHJsaXN0ICc6JyBzdWl0ZSBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgZm9yIGkgaW4gMSwgMiwgMzogcGFzcwogICAgICAgICBmb3IgaSwgaiwgayBpbiAoKTogcGFzcwpAQCAtNTgxLDcgKzYyMCw3IEBACiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMiwgM10pCiAKLSAgICBkZWYgdGVzdFRyeShzZWxmKToKKyAgICBkZWYgdGVzdF90cnkoc2VsZik6CiAgICAgICAgICMjIyB0cnlfc3RtdDogJ3RyeScgJzonIHN1aXRlIChleGNlcHRfY2xhdXNlICc6JyBzdWl0ZSkrIFsnZWxzZScgJzonIHN1aXRlXQogICAgICAgICAjIyMgICAgICAgICB8ICd0cnknICc6JyBzdWl0ZSAnZmluYWxseScgJzonIHN1aXRlCiAgICAgICAgICMjIyBleGNlcHRfY2xhdXNlOiAnZXhjZXB0JyBbZXhwciBbJ2FzJyBleHByXV0KQEAgLTYwNCw3ICs2NDMsNyBAQAogICAgICAgICB0cnk6IHBhc3MKICAgICAgICAgZmluYWxseTogcGFzcwogCi0gICAgZGVmIHRlc3RTdWl0ZShzZWxmKToKKyAgICBkZWYgdGVzdF9zdWl0ZShzZWxmKToKICAgICAgICAgIyBzaW1wbGVfc3RtdCB8IE5FV0xJTkUgSU5ERU5UIE5FV0xJTkUqIChzdG10IE5FV0xJTkUqKSsgREVERU5UCiAgICAgICAgIGlmIDE6IHBhc3MKICAgICAgICAgaWYgMToKQEAgLTYxOSw3ICs2NTgsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgIwogCi0gICAgZGVmIHRlc3RUZXN0KHNlbGYpOgorICAgIGRlZiB0ZXN0X3Rlc3Qoc2VsZik6CiAgICAgICAgICMjIyBhbmRfdGVzdCAoJ29yJyBhbmRfdGVzdCkqCiAgICAgICAgICMjIyBhbmRfdGVzdDogbm90X3Rlc3QgKCdhbmQnIG5vdF90ZXN0KSoKICAgICAgICAgIyMjIG5vdF90ZXN0OiAnbm90JyBub3RfdGVzdCB8IGNvbXBhcmlzb24KQEAgLTYzMCw3ICs2NjksNyBAQAogICAgICAgICBpZiBub3QgMSBhbmQgMSBhbmQgMTogcGFzcwogICAgICAgICBpZiAxIGFuZCAxIG9yIDEgYW5kIDEgYW5kIDEgb3Igbm90IDEgYW5kIDE6IHBhc3MKIAotICAgIGRlZiB0ZXN0Q29tcGFyaXNvbihzZWxmKToKKyAgICBkZWYgdGVzdF9jb21wYXJpc29uKHNlbGYpOgogICAgICAgICAjIyMgY29tcGFyaXNvbjogZXhwciAoY29tcF9vcCBleHByKSoKICAgICAgICAgIyMjIGNvbXBfb3A6ICc8J3wnPid8Jz09J3wnPj0nfCc8PSd8JyE9J3wnaW4nfCdub3QnICdpbid8J2lzJ3wnaXMnICdub3QnCiAgICAgICAgIGlmIDE6IHBhc3MKQEAgLTY0NywzNiArNjg2LDM2IEBACiAgICAgICAgIGlmIDEgbm90IGluICgpOiBwYXNzCiAgICAgICAgIGlmIDEgPCAxID4gMSA9PSAxID49IDEgPD0gMSAhPSAxIGluIDEgbm90IGluIDEgaXMgMSBpcyBub3QgMTogcGFzcwogCi0gICAgZGVmIHRlc3RCaW5hcnlNYXNrT3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2JpbmFyeV9tYXNrX29wcyhzZWxmKToKICAgICAgICAgeCA9IDEgJiAxCiAgICAgICAgIHggPSAxIF4gMQogICAgICAgICB4ID0gMSB8IDEKIAotICAgIGRlZiB0ZXN0U2hpZnRPcHMoc2VsZik6CisgICAgZGVmIHRlc3Rfc2hpZnRfb3BzKHNlbGYpOgogICAgICAgICB4ID0gMSA8PCAxCiAgICAgICAgIHggPSAxID4+IDEKICAgICAgICAgeCA9IDEgPDwgMSA+PiAxCiAKLSAgICBkZWYgdGVzdEFkZGl0aXZlT3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2FkZGl0aXZlX29wcyhzZWxmKToKICAgICAgICAgeCA9IDEKICAgICAgICAgeCA9IDEgKyAxCiAgICAgICAgIHggPSAxIC0gMSAtIDEKICAgICAgICAgeCA9IDEgLSAxICsgMSAtIDEgKyAxCiAKLSAgICBkZWYgdGVzdE11bHRpcGxpY2F0aXZlT3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X211bHRpcGxpY2F0aXZlX29wcyhzZWxmKToKICAgICAgICAgeCA9IDEgKiAxCiAgICAgICAgIHggPSAxIC8gMQogICAgICAgICB4ID0gMSAlIDEKICAgICAgICAgeCA9IDEgLyAxICogMSAlIDEKIAotICAgIGRlZiB0ZXN0VW5hcnlPcHMoc2VsZik6CisgICAgZGVmIHRlc3RfdW5hcnlfb3BzKHNlbGYpOgogICAgICAgICB4ID0gKzEKICAgICAgICAgeCA9IC0xCiAgICAgICAgIHggPSB+MQogICAgICAgICB4ID0gfjEgXiAxICYgMSB8IDEgJiAxIF4gLTEKICAgICAgICAgeCA9IC0xKjEvMSArIDEqMSAtIC0tLTEqMQogCi0gICAgZGVmIHRlc3RTZWxlY3RvcnMoc2VsZik6CisgICAgZGVmIHRlc3Rfc2VsZWN0b3JzKHNlbGYpOgogICAgICAgICAjIyMgdHJhaWxlcjogJygnIFt0ZXN0bGlzdF0gJyknIHwgJ1snIHN1YnNjcmlwdCAnXScgfCAnLicgTkFNRQogICAgICAgICAjIyMgc3Vic2NyaXB0OiBleHByIHwgW2V4cHJdICc6JyBbZXhwcl0KIApAQCAtNzA2LDcgKzc0NSw3IEBACiAgICAgICAgIEwuc29ydChrZXk9bGFtYmRhIHg6IHggaWYgaXNpbnN0YW5jZSh4LCB0dXBsZSkgZWxzZSAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTCksICdbMSwgKDEsKSwgKDEsIDIpLCAoMSwgMiwgMyldJykKIAotICAgIGRlZiB0ZXN0QXRvbXMoc2VsZik6CisgICAgZGVmIHRlc3RfYXRvbXMoc2VsZik6CiAgICAgICAgICMjIyBhdG9tOiAnKCcgW3Rlc3RsaXN0XSAnKScgfCAnWycgW3Rlc3RsaXN0XSAnXScgfCAneycgW2RpY3RzZXRtYWtlcl0gJ30nIHwgTkFNRSB8IE5VTUJFUiB8IFNUUklORwogICAgICAgICAjIyMgZGljdHNldG1ha2VyOiAodGVzdCAnOicgdGVzdCAoJywnIHRlc3QgJzonIHRlc3QpKiBbJywnXSkgfCAodGVzdCAoJywnIHRlc3QpKiBbJywnXSkKIApAQCAtNzQxLDcgKzc4MCw3IEBACiAgICAgIyMjIHRlc3RsaXN0OiB0ZXN0ICgnLCcgdGVzdCkqIFsnLCddCiAgICAgIyBUaGVzZSBoYXZlIGJlZW4gZXhlcmNpc2VkIGVub3VnaCBhYm92ZQogCi0gICAgZGVmIHRlc3RDbGFzc2RlZihzZWxmKToKKyAgICBkZWYgdGVzdF9jbGFzc2RlZihzZWxmKToKICAgICAgICAgIyAnY2xhc3MnIE5BTUUgWycoJyBbdGVzdGxpc3RdICcpJ10gJzonIHN1aXRlCiAgICAgICAgIGNsYXNzIEI6IHBhc3MKICAgICAgICAgY2xhc3MgQjIoKTogcGFzcwpAQCAtNzYwLDE0ICs3OTksMTQgQEAKICAgICAgICAgQGNsYXNzX2RlY29yYXRvcgogICAgICAgICBjbGFzcyBHOiBwYXNzCiAKLSAgICBkZWYgdGVzdERpY3Rjb21wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9kaWN0Y29tcHMoc2VsZik6CiAgICAgICAgICMgZGljdG9yc2V0bWFrZXI6ICggKHRlc3QgJzonIHRlc3QgKGNvbXBfZm9yIHwKICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcsJyB0ZXN0ICc6JyB0ZXN0KSogWycsJ10pKSB8CiAgICAgICAgICMgICAgICAgICAgICAgICAgICAgKHRlc3QgKGNvbXBfZm9yIHwgKCcsJyB0ZXN0KSogWycsJ10pKSApCiAgICAgICAgIG51bXMgPSBbMSwgMiwgM10KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7aTppKzEgZm9yIGkgaW4gbnVtc30sIHsxOiAyLCAyOiAzLCAzOiA0fSkKIAotICAgIGRlZiB0ZXN0TGlzdGNvbXBzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xpc3Rjb21wcyhzZWxmKToKICAgICAgICAgIyBsaXN0IGNvbXByZWhlbnNpb24gdGVzdHMKICAgICAgICAgbnVtcyA9IFsxLCAyLCAzLCA0LCA1XQogICAgICAgICBzdHJzID0gWyJBcHBsZSIsICJCYW5hbmEiLCAiQ29jb251dCJdCkBAIC04MzAsNyArODY5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBbKCdCb2VpbmcnLCAnQWlybGluZXInKSwgKCdCb2VpbmcnLCAnRW5naW5lJyksICgnRm9yZCcsICdFbmdpbmUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdNYWNkb25hbGRzJywgJ0NoZWVzZWJ1cmdlcicpXSkKIAotICAgIGRlZiB0ZXN0R2VuZXhwcyhzZWxmKToKKyAgICBkZWYgdGVzdF9nZW5leHBzKHNlbGYpOgogICAgICAgICAjIGdlbmVyYXRvciBleHByZXNzaW9uIHRlc3RzCiAgICAgICAgIGcgPSAoW3ggZm9yIHggaW4gcmFuZ2UoMTApXSBmb3IgeCBpbiByYW5nZSgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCBbeCBmb3IgeCBpbiByYW5nZSgxMCldKQpAQCAtODY1LDcgKzkwNCw3IEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZm9vKHggZm9yIHggaW4gcmFuZ2UoMTApLCAxMDApIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmb28oMTAwLCB4IGZvciB4IGluIHJhbmdlKDEwKSkiKQogCi0gICAgZGVmIHRlc3RDb21wcmVoZW5zaW9uU3BlY2lhbHMoc2VsZik6CisgICAgZGVmIHRlc3RfY29tcHJlaGVuc2lvbl9zcGVjaWFscyhzZWxmKToKICAgICAgICAgIyB0ZXN0IGZvciBvdXRtb3N0IGl0ZXJhYmxlIHByZWNvbXB1dGF0aW9uCiAgICAgICAgIHggPSAxMDsgZyA9IChpIGZvciBpIGluIHJhbmdlKHgpKTsgeCA9IDUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGlzdChnKSksIDEwKQpAQCAtOTA0LDcgKzk0Myw3IEBACiAgICAgICAgIHdpdGggbWFuYWdlcigpIGFzIHgsIG1hbmFnZXIoKToKICAgICAgICAgICAgIHBhc3MKIAotICAgIGRlZiB0ZXN0SWZFbHNlRXhwcihzZWxmKToKKyAgICBkZWYgdGVzdF9pZl9lbHNlX2V4cHIoc2VsZik6CiAgICAgICAgICMgVGVzdCBpZmVsc2UgZXhwcmVzc2lvbnMgaW4gdmFyaW91cyBjYXNlcwogICAgICAgICBkZWYgX2NoZWNrZXZhbChtc2csIHJldCk6CiAgICAgICAgICAgICAiaGVscGVyIHRvIGNoZWNrIHRoYXQgZXZhbHVhdGlvbiBvZiBleHByZXNzaW9ucyBpcyBkb25lIGNvcnJlY3RseSIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQppbmRleCBjZWQyMjZmLi5hZjczOTUzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nemlwLnB5CkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uCiAKIAotY2xhc3MgVGVzdEd6aXAodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTQzLDYgKzQzLDcgQEAKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc2VsZi5maWxlbmFtZSkKIAogCitjbGFzcyBUZXN0R3ppcChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CiAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShkYXRhMSAqIDUwKQpAQCAtNjQsNiArNjUsMjEgQEAKICAgICAgICAgICAgIGQgPSBmLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRhdGExKjUwKQogCisgICAgZGVmIHRlc3RfcmVhZDEoc2VsZik6CisgICAgICAgIHNlbGYudGVzdF93cml0ZSgpCisgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgIG5yZWFkID0gMAorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBkID0gZi5yZWFkMSgpCisgICAgICAgICAgICAgICAgaWYgbm90IGQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChkKQorICAgICAgICAgICAgICAgIG5yZWFkICs9IGxlbihkKQorICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBwb3NpdGlvbiB3YXMgdXBkYXRlZCBjb3JyZWN0bHkgKHNlZSBpc3N1ZTEwNzkxKS4KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCBucmVhZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihibG9ja3MpLCBkYXRhMSAqIDUwKQorCiAgICAgZGVmIHRlc3RfaW9fb25fY2xvc2VkX29iamVjdChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgSS9PIG9wZXJhdGlvbnMgb24gY2xvc2VkIEd6aXBGaWxlIG9iamVjdHMgcmFpc2UgYQogICAgICAgICAjIFZhbHVlRXJyb3IsIGp1c3QgbGlrZSB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbnMgb24gZmlsZSBvYmplY3RzLgpAQCAtMTAwLDE0ICsxMTYsMTQgQEAKICAgICAgICAgIyBCdWcgIzEwNzQyNjEgd2FzIHRyaWdnZXJlZCB3aGVuIHJlYWRpbmcgYSBmaWxlIHRoYXQgY29udGFpbmVkCiAgICAgICAgICMgbWFueSwgbWFueSBtZW1iZXJzLiAgQ3JlYXRlIHN1Y2ggYSBmaWxlIGFuZCB2ZXJpZnkgdGhhdCByZWFkaW5nIGl0CiAgICAgICAgICMgd29ya3MuCi0gICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICd3YicsIDkpIGFzIGY6CisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InLCA5KSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShiJ2EnKQogICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAyMDApOgotICAgICAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgImFiIiwgOSkgYXMgZjogIyBhcHBlbmQKKyAgICAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAiYWIiLCA5KSBhcyBmOiAjIGFwcGVuZAogICAgICAgICAgICAgICAgIGYud3JpdGUoYidhJykKIAogICAgICAgICAjIFRyeSByZWFkaW5nIHRoZSBmaWxlCi0gICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIHpnZmlsZToKKyAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIHpnZmlsZToKICAgICAgICAgICAgIGNvbnRlbnRzID0gYiIiCiAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgIHp0eHQgPSB6Z2ZpbGUucmVhZCg4MTkyKQpAQCAtMTI0LDcgKzE0MCw3IEBACiAgICAgICAgICAgICB3aXRoIGlvLkJ1ZmZlcmVkUmVhZGVyKGYpIGFzIHI6CiAgICAgICAgICAgICAgICAgbGluZXMgPSBbbGluZSBmb3IgbGluZSBpbiByXQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIDUwICogZGF0YTEuc3BsaXRsaW5lcyhUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgNTAgKiBkYXRhMS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogCiAgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CiAgICAgICAgIHNlbGYudGVzdF93cml0ZSgpCkBAIC0zMjMsNiArMzM5LDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgxMDApLCBiJycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5yZWFkLCBsZW4odW5jb21wcmVzc2VkKSkKIAorICAgIGRlZiB0ZXN0X3RleHRpb19yZWFkbGluZXMoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEwNzkxOiBUZXh0SU9XcmFwcGVyLnJlYWRsaW5lcygpIGZhaWxzIHdoZW4gd3JhcHBpbmcgR3ppcEZpbGUuCisgICAgICAgIGxpbmVzID0gKGRhdGExICogNTApLmRlY29kZSgiYXNjaWkiKS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCisgICAgICAgIHNlbGYudGVzdF93cml0ZSgpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAncicpIGFzIGY6CisgICAgICAgICAgICB3aXRoIGlvLlRleHRJT1dyYXBwZXIoZiwgZW5jb2Rpbmc9ImFzY2lpIikgYXMgdDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQucmVhZGxpbmVzKCksIGxpbmVzKQorCiAgICAgZGVmIHRlc3RfZmlsZW9ial9mcm9tX2Zkb3BlbihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTM3ODE6IE9wZW5pbmcgYSBHemlwRmlsZSBmb3Igd3JpdGluZyBmYWlscyB3aGVuIHVzaW5nIGEKICAgICAgICAgIyBmaWxlb2JqIGNyZWF0ZWQgd2l0aCBvcy5mZG9wZW4oKS4KQEAgLTM2NSw4ICszODksMTA5IEBACiAgICAgICAgICAgICBkYXRhYyA9IGd6aXAuY29tcHJlc3MoZGF0YSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3ppcC5kZWNvbXByZXNzKGRhdGFjKSwgZGF0YSkKIAorCitjbGFzcyBUZXN0T3BlbihCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfYmluYXJ5X21vZGVzKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMSAqIDUwCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZCAqIDIpCisKKyAgICBkZWYgdGVzdF9pbXBsaWNpdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBsaWNpdCBiaW5hcnkgbW9kZXMgKG5vICJiIiBvciAidCIgaW4gbW9kZSBzdHJpbmcpLgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMSAqIDUwCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgImEiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZCAqIDIpCisKKyAgICBkZWYgdGVzdF90ZXh0X21vZGVzKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMS5kZWNvZGUoImFzY2lpIikgKiA1MAorICAgICAgICB1bmNvbXByZXNzZWRfcmF3ID0gdW5jb21wcmVzc2VkLnJlcGxhY2UoIlxuIiwgb3MubGluZXNlcCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdykKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgImF0IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdyAqIDIpCisKKyAgICBkZWYgdGVzdF9maWxlb2JqKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWRfYnl0ZXMgPSBkYXRhMSAqIDUwCisgICAgICAgIHVuY29tcHJlc3NlZF9zdHIgPSB1bmNvbXByZXNzZWRfYnl0ZXMuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIGNvbXByZXNzZWQgPSBnemlwLmNvbXByZXNzKHVuY29tcHJlc3NlZF9ieXRlcykKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oaW8uQnl0ZXNJTyhjb21wcmVzc2VkKSwgInIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkX2J5dGVzKQorICAgICAgICB3aXRoIGd6aXAub3Blbihpby5CeXRlc0lPKGNvbXByZXNzZWQpLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkX2J5dGVzKQorICAgICAgICB3aXRoIGd6aXAub3Blbihpby5CeXRlc0lPKGNvbXByZXNzZWQpLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkX3N0cikKKworICAgIGRlZiB0ZXN0X2JhZF9wYXJhbXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbnZhbGlkIHBhcmFtZXRlciBjb21iaW5hdGlvbnMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGd6aXAub3BlbigxMjMuNDU2KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YnQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIiwgZXJyb3JzPSJpZ25vcmUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIG5ld2xpbmU9IlxuIikKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICAjIFRlc3Qgbm9uLWRlZmF1bHQgZW5jb2RpbmcuCisgICAgICAgIHVuY29tcHJlc3NlZCA9IGRhdGExLmRlY29kZSgiYXNjaWkiKSAqIDUwCisgICAgICAgIHVuY29tcHJlc3NlZF9yYXcgPSB1bmNvbXByZXNzZWQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBlbmNvZGluZz0idXRmLTE2IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJ1dGYtMTYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIGVuY29kaW5nPSJ1dGYtMTYiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorCisgICAgZGVmIHRlc3RfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggbm9uLWRlZmF1bHQgZW5jb2RpbmcgZXJyb3IgaGFuZGxlci4KKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYiJmb29ceGZmYmFyIikKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBcCisgICAgICAgICAgICAgICAgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQorCisgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCisgICAgICAgIHVuY29tcHJlc3NlZCA9IGRhdGExLmRlY29kZSgiYXNjaWkiKSAqIDUwCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIsIG5ld2xpbmU9IlxuIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBuZXdsaW5lPSJcciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZGxpbmVzKCksIFt1bmNvbXByZXNzZWRdKQorCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEd6aXApCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEd6aXAsIFRlc3RPcGVuKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hhc2gucHkgYi9MaWIvdGVzdC90ZXN0X2hhc2gucHkKaW5kZXggYzBkZDM0ZC4uMDc3Njc3OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oYXNoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGFzaC5weQpAQCAtMTEzLDggKzExMyw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLnNlcVtpbmRleF0KIAogY2xhc3MgSGFzaEJ1aWx0aW5zVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGhhc2hlc190b19jaGVjayA9IFtyYW5nZSgxMCksCi0gICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmF0ZShyYW5nZSgxMCkpLAorICAgIGhhc2hlc190b19jaGVjayA9IFtlbnVtZXJhdGUocmFuZ2UoMTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgaXRlcihEZWZhdWx0SXRlclNlcSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgaXRlcihsYW1iZGE6IDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgIF0KQEAgLTE2MCw4ICsxNTksOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAga25vd25faGFzaF9vZl9vYmogPSAtMTYwMDkyNTUzMwogCi0gICAgICAgICMgUmFuZG9taXphdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0OgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X2hhc2goc2VsZi5yZXByXyksIGtub3duX2hhc2hfb2Zfb2JqKQorICAgICAgICAjIFJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0OgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlbGYuZ2V0X2hhc2goc2VsZi5yZXByXyksIGtub3duX2hhc2hfb2Zfb2JqKQogCiAgICAgICAgICMgSXQgY2FuIGFsc28gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgc2VlZCB0byAwOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X2hhc2goc2VsZi5yZXByXywgc2VlZD0wKSwga25vd25faGFzaF9vZl9vYmopCkBAIC0xOTMsNiArMTkyLDEyIEBACiAgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goYiIiKSwgMCkKIAorY2xhc3MgTWVtb3J5dmlld0hhc2hSYW5kb21pemF0aW9uVGVzdHMoU3RyaW5nbGlrZUhhc2hSYW5kb21pemF0aW9uVGVzdHMpOgorICAgIHJlcHJfID0gIm1lbW9yeXZpZXcoYidhYmMnKSIKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG1lbW9yeXZpZXcoYiIiKSksIDApCisKIGNsYXNzIERhdGV0aW1lVGVzdHMoSGFzaFJhbmRvbWl6YXRpb25UZXN0cyk6CiAgICAgZGVmIGdldF9oYXNoX2NvbW1hbmQoc2VsZiwgcmVwcl8pOgogICAgICAgICByZXR1cm4gJ2ltcG9ydCBkYXRldGltZTsgcHJpbnQoaGFzaCglcykpJyAlIHJlcHJfCkBAIC0yMTMsNiArMjE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoQnVpbHRpbnNUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJIYXNoUmFuZG9taXphdGlvblRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVzSGFzaFJhbmRvbWl6YXRpb25UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnl2aWV3SGFzaFJhbmRvbWl6YXRpb25UZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRldGltZURhdGVUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRldGltZURhdGV0aW1lVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZXRpbWVUaW1lVGVzdHMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKaW5kZXggMjlkM2ExYy4uMzJmODVlOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCBhcnJheQogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBvcwogaW1wb3J0IHN5cwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTM3LDcgKzM4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTIyNCcsICdTSEEyMjQnLCAnc2hhMjU2JywgJ1NIQTI1NicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzODQnLCAnU0hBMzg0JywgJ3NoYTUxMicsICdTSEE1MTInICkKIAotICAgIF93YXJuX29uX2V4dGVuc2lvbl9pbXBvcnQgPSBDT01QSUxFRF9XSVRIX1BZREVCVUcKKyAgICAjIElzc3VlICMxNDY5MzogZmFsbGJhY2sgbW9kdWxlcyBhcmUgYWx3YXlzIGNvbXBpbGVkIHVuZGVyIFBPU0lYCisgICAgX3dhcm5fb25fZXh0ZW5zaW9uX2ltcG9ydCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBvciBDT01QSUxFRF9XSVRIX1BZREVCVUcKIAogICAgIGRlZiBfY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZShzZWxmLCBtb2R1bGVfbmFtZSk6CiAgICAgICAgICIiIkltcG9ydCBhIG1vZHVsZSBhbmQgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIGl0IG9yIE5vbmUgb24gZmFpbHVyZS4iIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weSBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQppbmRleCA0ZGUwNjIwLi40Y2E3Y2VjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2htYWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CkBAIC0yMzQsNiArMjM0LDE4IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiU3RhbmRhcmQgY29uc3RydWN0b3IgY2FsbCByYWlzZWQgZXhjZXB0aW9uLiIpCiAKKyAgICBkZWYgdGVzdF93aXRoX3N0cl9rZXkoc2VsZik6CisgICAgICAgICMgUGFzcyBhIGtleSBvZiB0eXBlIHN0ciwgd2hpY2ggaXMgYW4gZXJyb3IsIGJlY2F1c2UgaXQgZXhwZWN0cyBhIGtleQorICAgICAgICAjIG9mIHR5cGUgYnl0ZXMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaCA9IGhtYWMuSE1BQygia2V5IikKKworICAgIGRlZiB0ZXN0X2RvdF9uZXdfd2l0aF9zdHJfa2V5KHNlbGYpOgorICAgICAgICAjIFBhc3MgYSBrZXkgb2YgdHlwZSBzdHIsIHdoaWNoIGlzIGFuIGVycm9yLCBiZWNhdXNlIGl0IGV4cGVjdHMgYSBrZXkKKyAgICAgICAgIyBvZiB0eXBlIGJ5dGVzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGggPSBobWFjLm5ldygia2V5IikKKwogICAgIGRlZiB0ZXN0X3dpdGh0ZXh0KHNlbGYpOgogICAgICAgICAjIENvbnN0cnVjdG9yIGNhbGwgd2l0aCB0ZXh0LgogICAgICAgICB0cnk6CkBAIC0zMDIsMTIgKzMxNCwxMjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMS5oZXhkaWdlc3QoKSwgaDIuaGV4ZGlnZXN0KCksCiAgICAgICAgICAgICAiSGV4ZGlnZXN0IG9mIGNvcHkgZG9lc24ndCBtYXRjaCBvcmlnaW5hbCBoZXhkaWdlc3QuIikKIAorY2xhc3MgQ29tcGFyZURpZ2VzdFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfZGlnZXN0KHNlbGYpOgorICAgICAgICAjIFRlc3RpbmcgaW5wdXQgdHlwZSBleGNlcHRpb24gaGFuZGxpbmcKKyAgICAgICAgYSwgYiA9IDEwMCwgMjAwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IDEwMCwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgMjAwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9ICJmb29iYXIiLCBiImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gYiJmb29iYXIiLCAiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVzIG9mIGRpZmZlcmVudCBsZW5ndGhzCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsIGIiZm9vIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBiIlx4ZGVceGFkXHhiZVx4ZWYiLCBiIlx4ZGVceGFkIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVzIG9mIHNhbWUgbGVuZ3RocywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBhLCBiID0gYiJmb29iYXIiLCBiImZvb2JheiIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gYiJceGRlXHhhZFx4YmVceGVmIiwgYiJceGFiXHhhZFx4MWRceGVhIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVzIG9mIHNhbWUgbGVuZ3Rocywgc2FtZSB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gYiJceGRlXHhhZFx4YmVceGVmIiwgYiJceGRlXHhhZFx4YmVceGVmIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZWFycmF5cyBvZiBzYW1lIGxlbmd0aHMsIHNhbWUgdmFsdWVzCisgICAgICAgIGEsIGIgPSBieXRlYXJyYXkoYiJmb29iYXIiKSwgYnl0ZWFycmF5KGIiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVhcnJheXMgb2YgZGlmZmVlbnQgbGVuZ3RocworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGJ5dGVhcnJheShiImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZWFycmF5cyBvZiBzYW1lIGxlbmd0aHMsIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGJ5dGVhcnJheShiImZvb2JhciIpLCBieXRlYXJyYXkoYiJmb29iYXoiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGUgYW5kIGJ5dGVhcnJheSBvZiBzYW1lIGxlbmd0aHMsIHNhbWUgdmFsdWVzCisgICAgICAgIGEsIGIgPSBieXRlYXJyYXkoYiJmb29iYXIiKSwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChiLCBhKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZSBieXRlYXJyYXkgb2YgZGlmZmVlbnQgbGVuZ3RocworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGIiZm9vIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChiLCBhKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZSBhbmQgYnl0ZWFycmF5IG9mIHNhbWUgbGVuZ3RocywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGIiZm9vYmF6IgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChiLCBhKSkKKworICAgICAgICAjIFRlc3Rpbmcgc3RyIG9mIHNhbWUgbGVuZ3RocworICAgICAgICBhLCBiID0gImZvb2JhciIsICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBzdHIgb2YgZGlmZmVlbnQgbGVuZ3RocworICAgICAgICBhLCBiID0gImZvbyIsICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZXMgb2Ygc2FtZSBsZW5ndGhzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIGEsIGIgPSAiZm9vYmFyIiwgImZvb2JheiIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBlcnJvciBjYXNlcworICAgICAgICBhLCBiID0gImZvb2JhciIsIGIiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgMQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSAxMDAsIDIwMAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSAiZm9vw6QiLCAiZm9vw6QiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKworICAgICAgICAjIHN1YmNsYXNzZXMgYXJlIHN1cHBvcnRlZCBieSBpZ25vcmUgX19lcV9fCisgICAgICAgIGNsYXNzIG15c3RyKHN0cik6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBhLCBiID0gbXlzdHIoImZvb2JhciIpLCBteXN0cigiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBteXN0cigiZm9vYmFyIiksICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gbXlzdHIoImZvb2JhciIpLCBteXN0cigiZm9vYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgIGNsYXNzIG15Ynl0ZXMoYnl0ZXMpOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgYSwgYiA9IG15Ynl0ZXMoYiJmb29iYXIiKSwgbXlieXRlcyhiImZvb2JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gbXlieXRlcyhiImZvb2JhciIpLCBiImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBteWJ5dGVzKGIiZm9vYmFyIiksIG15Ynl0ZXMoYiJmb29iYXoiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBUZXN0VmVjdG9yc1Rlc3RDYXNlLAogICAgICAgICBDb25zdHJ1Y3RvclRlc3RDYXNlLAogICAgICAgICBTYW5pdHlUZXN0Q2FzZSwKLSAgICAgICAgQ29weVRlc3RDYXNlCisgICAgICAgIENvcHlUZXN0Q2FzZSwKKyAgICAgICAgQ29tcGFyZURpZ2VzdFRlc3RDYXNlCiAgICAgKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CmluZGV4IGM0ZjgwY2MuLmM1ZDg3OGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKQEAgLTEwMiw3ICsxMDIsOCBAQAogY2xhc3MgSFRNTFBhcnNlclN0cmljdFRlc3RDYXNlKFRlc3RDYXNlQmFzZSk6CiAKICAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWl0ZT1GYWxzZSk6CisgICAgICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUpCiAKICAgICBkZWYgdGVzdF9wcm9jZXNzaW5nX2luc3RydWN0aW9uX29ubHkoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygiPD9wcm9jZXNzaW5nIGluc3RydWN0aW9uPiIsIFsKQEAgLTQ1NSw3ICs0NTYsNyBAQAogICAgICAgICBzZWxmLl9ydW5fY2hlY2soJzxmb3JtIGFjdGlvbj0iL3h4eC5waHA/YT0xJmFtcDtiPTImYW1wIiwgJwogICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGhvZD0icG9zdCI+JywgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnc3RhcnR0YWcnLCAnZm9ybScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2FjdGlvbicsICcveHh4LnBocD9hPTEmYj0yJmFtcCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdhY3Rpb24nLCAnL3h4eC5waHA/YT0xJmI9MiYnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnLCcsIE5vbmUpLCAoJ21ldGhvZCcsICdwb3N0JyldKV0pCiAKICAgICBkZWYgdGVzdF93ZWlyZF9jaGFyc19pbl91bnF1b3RlZF9hdHRyaWJ1dGVfdmFsdWVzKHNlbGYpOgpAQCAtNTQwLDYgKzU0MSwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAudW5lc2NhcGUoJyYjMDAzODsnKSwnJicpCiAgICAgICAgICMgc2VlICMxMjg4OAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAudW5lc2NhcGUoJyYjMTIzOyAnICogMTA1MCksICd7ICcgKiAxMDUwKQorICAgICAgICAjIHNlZSAjMTUxNTYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnVuZXNjYXBlKCcmRWFjdXRlcmljJkVhY3V0ZTtyaWMnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJmFscGhhY2VudGF1cmkmYWxwaGE7Y2VudGF1cmknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICfDiXJpY8OJcmljJmFscGhhY2VudGF1cmnOsWNlbnRhdXJpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnVuZXNjYXBlKCcmY287JyksICcmY287JykKIAogICAgIGRlZiB0ZXN0X2Jyb2tlbl9jb21tZW50cyhzZWxmKToKICAgICAgICAgaHRtbCA9ICgnPCEgbm90IHJlYWxseSBhIGNvbW1lbnQgPicKQEAgLTU5NCw3ICs2MDAsOCBAQAogY2xhc3MgQXR0cmlidXRlc1N0cmljdFRlc3RDYXNlKFRlc3RDYXNlQmFzZSk6CiAKICAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWl0ZT1GYWxzZSk6CisgICAgICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUpCiAKICAgICBkZWYgdGVzdF9hdHRyX3N5bnRheChzZWxmKToKICAgICAgICAgb3V0cHV0ID0gWwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKaW5kZXggNDFlMGRmZC4uYTM1ZWM5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CkBAIC0yNDgsMTggKzI0OCwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2Nvb2tpZXNbInd3dy5hY21lLmNvbSJdWyIvIl1bImJvbyJdLnZhbHVlLCBOb25lKQogCiAgICAgZGVmIHRlc3RfYmFkX21hZ2ljKHNlbGYpOgotICAgICAgICAjIElPRXJyb3JzIChlZy4gZmlsZSBkb2Vzbid0IGV4aXN0KSBhcmUgYWxsb3dlZCB0byBwcm9wYWdhdGUKKyAgICAgICAgIyBPU0Vycm9ycyAoZWcuIGZpbGUgZG9lc24ndCBleGlzdCkgYXJlIGFsbG93ZWQgdG8gcHJvcGFnYXRlCiAgICAgICAgIGZpbGVuYW1lID0gdGVzdC5zdXBwb3J0LlRFU1RGTgogICAgICAgICBmb3IgY29va2llamFyX2NsYXNzIGluIExXUENvb2tpZUphciwgTW96aWxsYUNvb2tpZUphcjoKICAgICAgICAgICAgIGMgPSBjb29raWVqYXJfY2xhc3MoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGMubG9hZChmaWxlbmFtZT0iZm9yIHRoaXMgdGVzdCB0byB3b3JrLCBhIGZpbGUgd2l0aCB0aGlzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVuYW1lIHNob3VsZCBub3QgZXhpc3QiKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgICMgZXhhY3RseSBJT0Vycm9yLCBub3QgTG9hZEVycm9yCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleGMuX19jbGFzc19fLCBJT0Vycm9yKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgICMgYW4gT1NFcnJvciBzdWJjbGFzcyAobGlrZWx5IEZpbGVOb3RGb3VuZEVycm9yKSwgYnV0IG5vdAorICAgICAgICAgICAgICAgICMgTG9hZEVycm9yCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChleGMuX19jbGFzc19fLCBMb2FkRXJyb3IpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgSU9FcnJvciBmb3IgaW52YWxpZCBmaWxlbmFtZSIpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBPU0Vycm9yIGZvciBpbnZhbGlkIGZpbGVuYW1lIikKICAgICAgICAgIyBJbnZhbGlkIGNvbnRlbnRzIG9mIGNvb2tpZXMgZmlsZSAoZWcuIGJhZCBtYWdpYyBzdHJpbmcpCiAgICAgICAgICMgY2F1c2VzIGEgTG9hZEVycm9yLgogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CmluZGV4IDFmMWNhNTguLmU4MzI3ZTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CkBAIC0zNCw2ICszNCwxNSBAQAogICAgICAgICAgICAgICdkaWN0JzogeydrZWVibGVyJyA6ICdFPW1jMid9LAogICAgICAgICAgICAgICdyZXByJzogIjxTaW1wbGVDb29raWU6IGtlZWJsZXI9J0U9bWMyJz4iLAogICAgICAgICAgICAgICdvdXRwdXQnOiAnU2V0LUNvb2tpZToga2VlYmxlcj1FPW1jMid9LAorCisgICAgICAgICAgICAjIENvb2tpZXMgd2l0aCAnOicgY2hhcmFjdGVyIGluIHRoZWlyIG5hbWUuIFRob3VnaCBub3QgbWVudGlvbmVkIGluCisgICAgICAgICAgICAjIFJGQywgc2VydmVycyAvIGJyb3dzZXJzIGFsbG93IGl0LgorCisgICAgICAgICAgICAgeydkYXRhJzogJ2tleTp0ZXJtPXZhbHVlOnRlcm0nLAorICAgICAgICAgICAgICdkaWN0JzogeydrZXk6dGVybScgOiAndmFsdWU6dGVybSd9LAorICAgICAgICAgICAgICdyZXByJzogIjxTaW1wbGVDb29raWU6IGtleTp0ZXJtPSd2YWx1ZTp0ZXJtJz4iLAorICAgICAgICAgICAgICdvdXRwdXQnOiAnU2V0LUNvb2tpZToga2V5OnRlcm09dmFsdWU6dGVybSd9LAorCiAgICAgICAgIF0KIAogICAgICAgICBmb3IgY2FzZSBpbiBjYXNlczoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQppbmRleCAyNGM3MmZmLi5jZjYxNTUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CkBAIC0xODYsNiArMTg2LDIzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKDIpLCBiJ3h0JykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuaXNjbG9zZWQoKSkKIAorICAgIGRlZiB0ZXN0X3BhcnRpYWxfcmVhZGludG9zKHNlbGYpOgorICAgICAgICAjIGlmIHdlIGhhdmUgYSBsZW5naHQsIHRoZSBzeXN0ZW0ga25vd3Mgd2hlbiB0byBjbG9zZSBpdHNlbGYKKyAgICAgICAgIyBzYW1lIGJlaGF2aW91ciB0aGFuIHdoZW4gd2UgcmVhZCB0aGUgd2hvbGUgdGhpbmcgd2l0aCByZWFkKCkKKyAgICAgICAgYm9keSA9ICJIVFRQLzEuMSAyMDAgT2tcclxuQ29udGVudC1MZW5ndGg6IDRcclxuXHJcblRleHQiCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGJvZHkpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2spCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBiID0gYnl0ZWFycmF5KDIpCisgICAgICAgIG4gPSByZXNwLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiKSwgYidUZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzcC5pc2Nsb3NlZCgpKQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGIneHQnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5pc2Nsb3NlZCgpKQorCiAgICAgZGVmIHRlc3RfaG9zdF9wb3J0KHNlbGYpOgogICAgICAgICAjIENoZWNrIGludmFsaWQgaG9zdF9wb3J0CiAKQEAgLTIzNCw2ICsyNTEsMjEgQEAKICAgICAgICAgaWYgcmVzcC5yZWFkKCk6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkRpZCBub3QgZXhwZWN0IHJlc3BvbnNlIGZyb20gSEVBRCByZXF1ZXN0IikKIAorICAgIGRlZiB0ZXN0X3JlYWRpbnRvX2hlYWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHRoZSBsaWJyYXJ5IGRvZXNuJ3QgYXR0ZW1wdCB0byByZWFkIGFueSBkYXRhCisgICAgICAgICMgZnJvbSBhIEhFQUQgcmVxdWVzdC4gIChUaWNrbGVzIFNGIGJ1ZyAjNjIyMDQyLikKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoCisgICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKKyAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogMTQ0MzJcclxuJworICAgICAgICAgICAgJ1xyXG4nLAorICAgICAgICAgICAgTm9FT0ZTdHJpbmdJTykKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJIRUFEIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIGIgPSBieXRlYXJyYXkoNSkKKyAgICAgICAgaWYgcmVzcC5yZWFkaW50byhiKSAhPSAwOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJEaWQgbm90IGV4cGVjdCByZXNwb25zZSBmcm9tIEhFQUQgcmVxdWVzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGInXHgwMCcqNSkKKwogICAgIGRlZiB0ZXN0X3NlbmRfZmlsZShzZWxmKToKICAgICAgICAgZXhwZWN0ZWQgPSAoYidHRVQgL2ZvbyBIVFRQLzEuMVxyXG5Ib3N0OiBleGFtcGxlLmNvbVxyXG4nCiAgICAgICAgICAgICAgICAgICAgIGInQWNjZXB0LUVuY29kaW5nOiBpZGVudGl0eVxyXG5Db250ZW50LUxlbmd0aDonKQpAQCAtMjg5LDE1ICszMjEsMjggQEAKICAgICAgICAgICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJwogICAgICAgICAgICAgJ2FcclxuJwogICAgICAgICAgICAgJ2hlbGxvIHdvcmxcclxuJwotICAgICAgICAgICAgJzFcclxuJwotICAgICAgICAgICAgJ2RcclxuJworICAgICAgICAgICAgJzNcclxuJworICAgICAgICAgICAgJ2QhIFxyXG4nCisgICAgICAgICAgICAnOFxyXG4nCisgICAgICAgICAgICAnYW5kIG5vdyBcclxuJworICAgICAgICAgICAgJzIyXHJcbicKKyAgICAgICAgICAgICdmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50XHJcbicKICAgICAgICAgKQorICAgICAgICBleHBlY3RlZCA9IGInaGVsbG8gd29ybGQhIGFuZCBub3cgZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCcKICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCiAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKICAgICAgICAgcmVzcC5iZWdpbigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGInaGVsbG8gd29ybGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZCkKICAgICAgICAgcmVzcC5jbG9zZSgpCiAKKyAgICAgICAgIyBWYXJpb3VzIHJlYWQgc2l6ZXMKKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMSwgMTIpOgorICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKG4pICsgcmVzcC5yZWFkKG4pICsgcmVzcC5yZWFkKCksIGV4cGVjdGVkKQorICAgICAgICAgICAgcmVzcC5jbG9zZSgpCisKICAgICAgICAgZm9yIHggaW4gKCcnLCAnZm9vXHJcbicpOgogICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIHgpCiAgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCkBAIC0zMDUsOSArMzUwLDY0IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzcC5yZWFkKCkKICAgICAgICAgICAgIGV4Y2VwdCBjbGllbnQuSW5jb21wbGV0ZVJlYWQgYXMgaToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkucGFydGlhbCwgYidoZWxsbyB3b3JsZCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGkpLCdJbmNvbXBsZXRlUmVhZCgxMSBieXRlcyByZWFkKScpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaSksJ0luY29tcGxldGVSZWFkKDExIGJ5dGVzIHJlYWQpJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkucGFydGlhbCwgZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbWVzc2FnZSA9ICdJbmNvbXBsZXRlUmVhZCglZCBieXRlcyByZWFkKScgJSBsZW4oZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGkpLCBleHBlY3RlZF9tZXNzYWdlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGkpLCBleHBlY3RlZF9tZXNzYWdlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0luY29tcGxldGVSZWFkIGV4cGVjdGVkJykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9yZWFkaW50b19jaHVua2VkKHNlbGYpOgorICAgICAgICBjaHVua2VkX3N0YXJ0ID0gKAorICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKKyAgICAgICAgICAgICdhXHJcbicKKyAgICAgICAgICAgICdoZWxsbyB3b3JsXHJcbicKKyAgICAgICAgICAgICczXHJcbicKKyAgICAgICAgICAgICdkISBcclxuJworICAgICAgICAgICAgJzhcclxuJworICAgICAgICAgICAgJ2FuZCBub3cgXHJcbicKKyAgICAgICAgICAgICcyMlxyXG4nCisgICAgICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxyXG4nCisgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJ2hlbGxvIHdvcmxkISBhbmQgbm93IGZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQnCisgICAgICAgIG5leHBlY3RlZCA9IGxlbihleHBlY3RlZCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgxMjgpCisKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIG4gPSByZXNwLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYls6bmV4cGVjdGVkXSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgbmV4cGVjdGVkKQorICAgICAgICByZXNwLmNsb3NlKCkKKworICAgICAgICAjIFZhcmlvdXMgcmVhZCBzaXplcworICAgICAgICBmb3IgbiBpbiByYW5nZSgxLCAxMik6CisgICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgICAgIGkgPSByZXNwLnJlYWRpbnRvKG1bMDpuXSkKKyAgICAgICAgICAgIGkgKz0gcmVzcC5yZWFkaW50byhtW2k6biArIGldKQorICAgICAgICAgICAgaSArPSByZXNwLnJlYWRpbnRvKG1baTpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiWzpuZXhwZWN0ZWRdLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSwgbmV4cGVjdGVkKQorICAgICAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICAgICAgZm9yIHggaW4gKCcnLCAnZm9vXHJcbicpOgorICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIHgpCisgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICAgICAgZXhjZXB0IGNsaWVudC5JbmNvbXBsZXRlUmVhZCBhcyBpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaS5wYXJ0aWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9tZXNzYWdlID0gJ0luY29tcGxldGVSZWFkKCVkIGJ5dGVzIHJlYWQpJyAlIGxlbihleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoaSksIGV4cGVjdGVkX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaSksIGV4cGVjdGVkX21lc3NhZ2UpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnSW5jb21wbGV0ZVJlYWQgZXhwZWN0ZWQnKQogICAgICAgICAgICAgZmluYWxseToKQEAgLTMzMCw2ICs0MzAsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYXNvbiwgJ09LJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuaXNjbG9zZWQoKSkKIAorICAgIGRlZiB0ZXN0X3JlYWRpbnRvX2NodW5rZWRfaGVhZChzZWxmKToKKyAgICAgICAgY2h1bmtlZF9zdGFydCA9ICgKKyAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICAgICAgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCisgICAgICAgICAgICAnYVxyXG4nCisgICAgICAgICAgICAnaGVsbG8gd29ybGRcclxuJworICAgICAgICAgICAgJzFcclxuJworICAgICAgICAgICAgJ2RcclxuJworICAgICAgICApCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkhFQUQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSg1KQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGInXHgwMCcqNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnN0YXR1cywgMjAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhc29uLCAnT0snKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5pc2Nsb3NlZCgpKQorCiAgICAgZGVmIHRlc3RfbmVnYXRpdmVfY29udGVudF9sZW5ndGgoc2VsZik6CiAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KAogICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogLTFcclxuXHJcbkhlbGxvXHJcbicpCkBAIC01NDUsOCArNjY1LDcgQEAKICAgICBkZWYgdGVzdF9sb2NhbF9nb29kX2hvc3RuYW1lKHNlbGYpOgogICAgICAgICAjIFRoZSAodmFsaWQpIGNlcnQgdmFsaWRhdGVzIHRoZSBIVFRQIGhvc3RuYW1lCiAgICAgICAgIGltcG9ydCBzc2wKLSAgICAgICAgZnJvbSB0ZXN0LnNzbF9zZXJ2ZXJzIGltcG9ydCBtYWtlX2h0dHBzX3NlcnZlcgotICAgICAgICBzZXJ2ZXIgPSBtYWtlX2h0dHBzX3NlcnZlcihzZWxmLCBDRVJUX2xvY2FsaG9zdCkKKyAgICAgICAgc2VydmVyID0gc2VsZi5tYWtlX3NlcnZlcihDRVJUX2xvY2FsaG9zdCkKICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECiAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRfbG9jYWxob3N0KQpAQCAtNTU0LDEyICs2NzMsMTIgQEAKICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnL25vbmV4aXN0ZW50JykKICAgICAgICAgcmVzcCA9IGguZ2V0cmVzcG9uc2UoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Auc3RhdHVzLCA0MDQpCisgICAgICAgIGRlbCBzZXJ2ZXIKIAogICAgIGRlZiB0ZXN0X2xvY2FsX2JhZF9ob3N0bmFtZShzZWxmKToKICAgICAgICAgIyBUaGUgKHZhbGlkKSBjZXJ0IGRvZXNuJ3QgdmFsaWRhdGUgdGhlIEhUVFAgaG9zdG5hbWUKICAgICAgICAgaW1wb3J0IHNzbAotICAgICAgICBmcm9tIHRlc3Quc3NsX3NlcnZlcnMgaW1wb3J0IG1ha2VfaHR0cHNfc2VydmVyCi0gICAgICAgIHNlcnZlciA9IG1ha2VfaHR0cHNfc2VydmVyKHNlbGYsIENFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLm1ha2Vfc2VydmVyKENFUlRfZmFrZWhvc3RuYW1lKQogICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKICAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0VSVF9mYWtlaG9zdG5hbWUpCkBAIC01NzcsNiArNjk2LDcgQEAKICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnL25vbmV4aXN0ZW50JykKICAgICAgICAgcmVzcCA9IGguZ2V0cmVzcG9uc2UoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Auc3RhdHVzLCA0MDQpCisgICAgICAgIGRlbCBzZXJ2ZXIKIAogICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoY2xpZW50LCAnSFRUUFNDb25uZWN0aW9uJyksCiAgICAgICAgICAgICAgICAgICAgICAnaHR0cC5jbGllbnQuSFRUUFNDb25uZWN0aW9uIG5vdCBhdmFpbGFibGUnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKaW5kZXggZDc4YWU5YS4uMTcxMzYxZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CkBAIC00NzAsNiArNDcwLDIzIEBACiAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MTcpCiAgICAgICAgIHJldHVybiBGYWxzZQogCisKK2NsYXNzIEF1ZGl0YWJsZUJ5dGVzSU86CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZGF0YXMgPSBbXQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmRhdGFzLmFwcGVuZChkYXRhKQorCisgICAgZGVmIGdldERhdGEoc2VsZik6CisgICAgICAgIHJldHVybiBiJycuam9pbihzZWxmLmRhdGFzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG51bVdyaXRlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGFzKQorCisKIGNsYXNzIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgQmFzZUhUVFBTZXJ2ZXIuCiAKQEAgLTUzNiwyNyArNTUzLDQ5IEBACiAgICAgICAgIHNlbGYudmVyaWZ5X2dldF9jYWxsZWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFstMV0sIGInPGh0bWw+PGJvZHk+RGF0YTwvYm9keT48L2h0bWw+XHJcbicpCiAKLSAgICBkZWYgdGVzdF9oZWFkZXJfYnVmZmVyaW5nKHNlbGYpOgotCi0gICAgICAgIGRlZiBfcmVhZEFuZFJlc2VlayhmKToKLSAgICAgICAgICAgIHBvcyA9IGYudGVsbCgpCi0gICAgICAgICAgICBmLnNlZWsoMCkKLSAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5zZWVrKHBvcykKLSAgICAgICAgICAgIHJldHVybiBkYXRhCisgICAgZGVmIHRlc3RfaGVhZGVyX2J1ZmZlcmluZ19vZl9zZW5kX2Vycm9yKHNlbGYpOgogCiAgICAgICAgIGlucHV0ID0gQnl0ZXNJTyhiJ0dFVCAvIEhUVFAvMS4xXHJcblxyXG4nKQotICAgICAgICBvdXRwdXQgPSBCeXRlc0lPKCkKLSAgICAgICAgc2VsZi5oYW5kbGVyLnJmaWxlID0gaW5wdXQKLSAgICAgICAgc2VsZi5oYW5kbGVyLndmaWxlID0gb3V0cHV0Ci0gICAgICAgIHNlbGYuaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisgICAgICAgIG91dHB1dCA9IEF1ZGl0YWJsZUJ5dGVzSU8oKQorICAgICAgICBoYW5kbGVyID0gU29ja2V0bGVzc1JlcXVlc3RIYW5kbGVyKCkKKyAgICAgICAgaGFuZGxlci5yZmlsZSA9IGlucHV0CisgICAgICAgIGhhbmRsZXIud2ZpbGUgPSBvdXRwdXQKKyAgICAgICAgaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisgICAgICAgIGhhbmRsZXIucmVxdWVzdGxpbmUgPSAnJworICAgICAgICBoYW5kbGVyLmNvbW1hbmQgPSBOb25lCiAKLSAgICAgICAgc2VsZi5oYW5kbGVyLnNlbmRfaGVhZGVyKCdGb28nLCAnZm9vJykKLSAgICAgICAgc2VsZi5oYW5kbGVyLnNlbmRfaGVhZGVyKCdiYXInLCAnYmFyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfcmVhZEFuZFJlc2VlayhvdXRwdXQpLCBiJycpCi0gICAgICAgIHNlbGYuaGFuZGxlci5lbmRfaGVhZGVycygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3JlYWRBbmRSZXNlZWsob3V0cHV0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ0ZvbzogZm9vXHJcbmJhcjogYmFyXHJcblxyXG4nKQorICAgICAgICBoYW5kbGVyLnNlbmRfZXJyb3IoNDE4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDIpCisKKyAgICBkZWYgdGVzdF9oZWFkZXJfYnVmZmVyaW5nX29mX3NlbmRfcmVzcG9uc2Vfb25seShzZWxmKToKKworICAgICAgICBpbnB1dCA9IEJ5dGVzSU8oYidHRVQgLyBIVFRQLzEuMVxyXG5cclxuJykKKyAgICAgICAgb3V0cHV0ID0gQXVkaXRhYmxlQnl0ZXNJTygpCisgICAgICAgIGhhbmRsZXIgPSBTb2NrZXRsZXNzUmVxdWVzdEhhbmRsZXIoKQorICAgICAgICBoYW5kbGVyLnJmaWxlID0gaW5wdXQKKyAgICAgICAgaGFuZGxlci53ZmlsZSA9IG91dHB1dAorICAgICAgICBoYW5kbGVyLnJlcXVlc3RfdmVyc2lvbiA9ICdIVFRQLzEuMScKKworICAgICAgICBoYW5kbGVyLnNlbmRfcmVzcG9uc2Vfb25seSg0MTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Lm51bVdyaXRlcywgMCkKKyAgICAgICAgaGFuZGxlci5lbmRfaGVhZGVycygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Lm51bVdyaXRlcywgMSkKKworICAgIGRlZiB0ZXN0X2hlYWRlcl9idWZmZXJpbmdfb2Zfc2VuZF9oZWFkZXIoc2VsZik6CisKKyAgICAgICAgaW5wdXQgPSBCeXRlc0lPKGInR0VUIC8gSFRUUC8xLjFcclxuXHJcbicpCisgICAgICAgIG91dHB1dCA9IEF1ZGl0YWJsZUJ5dGVzSU8oKQorICAgICAgICBoYW5kbGVyID0gU29ja2V0bGVzc1JlcXVlc3RIYW5kbGVyKCkKKyAgICAgICAgaGFuZGxlci5yZmlsZSA9IGlucHV0CisgICAgICAgIGhhbmRsZXIud2ZpbGUgPSBvdXRwdXQKKyAgICAgICAgaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisKKyAgICAgICAgaGFuZGxlci5zZW5kX2hlYWRlcignRm9vJywgJ2ZvbycpCisgICAgICAgIGhhbmRsZXIuc2VuZF9oZWFkZXIoJ2JhcicsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDApCisgICAgICAgIGhhbmRsZXIuZW5kX2hlYWRlcnMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5nZXREYXRhKCksIGInRm9vOiBmb29cclxuYmFyOiBiYXJcclxuXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Lm51bVdyaXRlcywgMSkKIAogICAgIGRlZiB0ZXN0X2hlYWRlcl91bmJ1ZmZlcmVkX3doZW5fY29udGludWUoc2VsZik6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQppbmRleCA1Yzk5YTU4Li41MTJiYmE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CkBAIC0xMSw5ICsxMSw5IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IGNhbGVuZGFyCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZWFwX3RocmVhZHMsIHZlcmJvc2UsIHRyYW5zaWVudF9pbnRlcm5ldCwgcnVuX3dpdGhfdHoKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZWFwX3RocmVhZHMsIHZlcmJvc2UsIHRyYW5zaWVudF9pbnRlcm5ldCwgcnVuX3dpdGhfdHosIHJ1bl93aXRoX2xvY2FsZQogaW1wb3J0IHVuaXR0ZXN0Ci0KK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZSwgdGltZWRlbHRhCiB0cnk6CiAgICAgaW1wb3J0IHNzbAogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNDMsMTQgKzQzLDMwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hcGxpYi5JbnRlcm5hbGRhdGUydHVwbGUoCiAgICAgICAgICAgICBiJzI1IChJTlRFUk5BTERBVEUgIjAyLUFwci0yMDAwIDAzOjMwOjAwICswMDAwIiknKSkKIAotICAgIGRlZiB0ZXN0X3RoYXRfVGltZTJJbnRlcm5hbGRhdGVfcmV0dXJuc19hX3Jlc3VsdChzZWxmKToKLSAgICAgICAgIyBXZSBjYW4gY2hlY2sgb25seSB0aGF0IGl0IHN1Y2Nlc3NmdWxseSBwcm9kdWNlcyBhIHJlc3VsdCwKLSAgICAgICAgIyBub3QgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSByZXN1bHQgaXRzZWxmLCBzaW5jZSB0aGUgcmVzdWx0Ci0gICAgICAgICMgZGVwZW5kcyBvbiB0aGUgdGltZXpvbmUgdGhlIG1hY2hpbmUgaXMgaW4uCi0gICAgICAgIHRpbWV2YWx1ZXMgPSBbMjAwMDAwMDAwMCwgMjAwMDAwMDAwMC4wLCB0aW1lLmxvY2FsdGltZSgyMDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAnIjE4LU1heS0yMDMzIDA1OjMzOjIwICswMjAwIiddCiAKLSAgICAgICAgZm9yIHQgaW4gdGltZXZhbHVlczoKKworICAgIGRlZiB0aW1ldmFsdWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gWzIwMDAwMDAwMDAsIDIwMDAwMDAwMDAuMCwgdGltZS5sb2NhbHRpbWUoMjAwMDAwMDAwMCksCisgICAgICAgICAgICAgICAgKDIwMzMsIDUsIDE4LCA1LCAzMywgMjAsIC0xLCAtMSwgLTEpLAorICAgICAgICAgICAgICAgICgyMDMzLCA1LCAxOCwgNSwgMzMsIDIwLCAtMSwgLTEsIDEpLAorICAgICAgICAgICAgICAgIGRhdGV0aW1lLmZyb210aW1lc3RhbXAoMjAwMDAwMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lKHRpbWVkZWx0YSgwLCAyKjYwKjYwKSkpLAorICAgICAgICAgICAgICAgICciMTgtTWF5LTIwMzMgMDU6MzM6MjAgKzAyMDAiJ10KKworICAgIEBydW5fd2l0aF9sb2NhbGUoJ0xDX0FMTCcsICdkZV9ERScsICdmcl9GUicpCisgICAgQHJ1bl93aXRoX3R6KCdTVEQtMURTVCcpCisgICAgZGVmIHRlc3RfVGltZTJJbnRlcm5hbGRhdGUoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gJyIxOC1NYXktMjAzMyAwNTozMzoyMCArMDIwMCInCisKKyAgICAgICAgZm9yIHQgaW4gc2VsZi50aW1ldmFsdWVzKCk6CisgICAgICAgICAgICBpbnRlcm5hbCA9IGltYXBsaWIuVGltZTJJbnRlcm5hbGRhdGUodCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50ZXJuYWwsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfdGhhdF9UaW1lMkludGVybmFsZGF0ZV9yZXR1cm5zX2FfcmVzdWx0KHNlbGYpOgorICAgICAgICAjIFdpdGhvdXQgdHpzZXQsIHdlIGNhbiBjaGVjayBvbmx5IHRoYXQgaXQgc3VjY2Vzc2Z1bGx5CisgICAgICAgICMgcHJvZHVjZXMgYSByZXN1bHQsIG5vdCB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHJlc3VsdCBpdHNlbGYsCisgICAgICAgICMgc2luY2UgdGhlIHJlc3VsdCBkZXBlbmRzIG9uIHRoZSB0aW1lem9uZSB0aGUgbWFjaGluZSBpcyBpbi4KKyAgICAgICAgZm9yIHQgaW4gc2VsZi50aW1ldmFsdWVzKCk6CiAgICAgICAgICAgICBpbWFwbGliLlRpbWUySW50ZXJuYWxkYXRlKHQpCiAKIApAQCAtMjY1LDExICsyODEsNTggQEAKICAgICBwb3J0ID0gOTkzCiAgICAgaW1hcF9jbGFzcyA9IElNQVA0X1NTTAogCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBjcmVhdGVfc3NsX2NvbnRleHQoc2VsZik6CisgICAgICAgIHNzbF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgc3NsX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICByZXR1cm4gc3NsX2NvbnRleHQKKworICAgIGRlZiBjaGVja19sb2dpbmNhcGEoc2VsZiwgc2VydmVyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIGNhcCBpbiBzZXJ2ZXIuY2FwYWJpbGl0aWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjYXAsIHN0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0xPR0lORElTQUJMRUQnLCBzZXJ2ZXIuY2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignQVVUSD1QTEFJTicsIHNlcnZlci5jYXBhYmlsaXRpZXMpCisgICAgICAgICAgICBycyA9IHNlcnZlci5sb2dpbihzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3b3JkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyc1swXSwgJ09LJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlcnZlci5sb2dvdXQoKQorCiAgICAgZGVmIHRlc3RfbG9naW5jYXBhKHNlbGYpOgotICAgICAgICBmb3IgY2FwIGluIHNlbGYuc2VydmVyLmNhcGFiaWxpdGllczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjYXAsIHN0cikKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignTE9HSU5ESVNBQkxFRCcsIHNlbGYuc2VydmVyLmNhcGFiaWxpdGllcykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignQVVUSD1QTEFJTicsIHNlbGYuc2VydmVyLmNhcGFiaWxpdGllcykKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQorCisgICAgZGVmIHRlc3RfbG9naW5jYXBhX3dpdGhfY2xpZW50X2NlcnRmaWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCwgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQorCisgICAgZGVmIHRlc3RfbG9naW5jYXBhX3dpdGhfY2xpZW50X3NzbF9jb250ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCisKKyAgICBkZWYgdGVzdF9sb2dvdXQoc2VsZik6CisgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6CisgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0KQorICAgICAgICAgICAgcnMgPSBfc2VydmVyLmxvZ291dCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJzWzBdLCAnQllFJykKKworICAgIGRlZiB0ZXN0X3NzbF9jb250ZXh0X2NlcnRmaWxlX2V4Y2x1c2l2ZShzZWxmKToKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuaW1hcF9jbGFzcywgc2VsZi5ob3N0LCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKKworICAgIGRlZiB0ZXN0X3NzbF9jb250ZXh0X2tleWZpbGVfZXhjbHVzaXZlKHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pbWFwX2NsYXNzLCBzZWxmLmhvc3QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9Q0VSVEZJTEUsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXAucHkgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQppbmRleCA1NTFhZDFiLi5hNjYwMjc4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQpAQCAtMSwxMSArMSwxMiBAQAogaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiAKIGNsYXNzIExvY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU4LDYgKzU5LDEwIEBACiAgICAgICAgICAgICB3aXRoIGltcC5maW5kX21vZHVsZSgnbW9kdWxlXycgKyBtb2QsIHNlbGYudGVzdF9wYXRoKVswXSBhcyBmZDoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZkLmVuY29kaW5nLCBlbmNvZGluZykKIAorICAgICAgICBwYXRoID0gW29zLnBhdGguZGlybmFtZShfX2ZpbGVfXyldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgaW1wLmZpbmRfbW9kdWxlKCdiYWRzeW50YXhfcGVwMzEyMCcsIHBhdGgpCisKICAgICBkZWYgdGVzdF9pc3N1ZTEyNjcoc2VsZik6CiAgICAgICAgIGZvciBtb2QsIGVuY29kaW5nLCBfIGluIHNlbGYudGVzdF9zdHJpbmdzOgogICAgICAgICAgICAgZnAsIGZpbGVuYW1lLCBpbmZvICA9IGltcC5maW5kX21vZHVsZSgnbW9kdWxlXycgKyBtb2QsCkBAIC0xNTAsMTggKzE1NSwyNCBAQAogICAgICAgICAgICAgICAgIG1vZCA9IGltcC5sb2FkX21vZHVsZSh0ZW1wX21vZF9uYW1lLCBmaWxlLCBmaWxlbmFtZSwgaW5mbykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5hLCAxKQogCi0gICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9zb3VyY2UodGVtcF9tb2RfbmFtZSwgdGVtcF9tb2RfbmFtZSArICcucHknKQorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9zb3VyY2UodGVtcF9tb2RfbmFtZSwgdGVtcF9tb2RfbmFtZSArICcucHknKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuYSwgMSkKIAotICAgICAgICAgICAgbW9kID0gaW1wLmxvYWRfY29tcGlsZWQoCi0gICAgICAgICAgICAgICAgdGVtcF9tb2RfbmFtZSwgaW1wLmNhY2hlX2Zyb21fc291cmNlKHRlbXBfbW9kX25hbWUgKyAnLnB5JykpCisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcC5sb2FkX2NvbXBpbGVkKAorICAgICAgICAgICAgICAgICAgICB0ZW1wX21vZF9uYW1lLCBpbXAuY2FjaGVfZnJvbV9zb3VyY2UodGVtcF9tb2RfbmFtZSArICcucHknKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLmEsIDEpCiAKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh0ZXN0X3BhY2thZ2VfbmFtZSk6CiAgICAgICAgICAgICAgICAgb3MubWtkaXIodGVzdF9wYWNrYWdlX25hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oaW5pdF9maWxlX25hbWUsICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKCdiID0gMlxuJykKLSAgICAgICAgICAgIHBhY2thZ2UgPSBpbXAubG9hZF9wYWNrYWdlKHRlc3RfcGFja2FnZV9uYW1lLCB0ZXN0X3BhY2thZ2VfbmFtZSkKKyAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICAgICAgcGFja2FnZSA9IGltcC5sb2FkX3BhY2thZ2UodGVzdF9wYWNrYWdlX25hbWUsIHRlc3RfcGFja2FnZV9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrYWdlLmIsIDIpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KQEAgLTE3NSw2ICsxODYsMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcC5maW5kX21vZHVsZSwgImJhZHN5bnRheF9wZXAzMTIwIiwgW3BhdGhdKQogCisgICAgZGVmIHRlc3RfbG9hZF9keW5hbWljX0ltcG9ydEVycm9yX3BhdGgoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE1NTk1NDkgYWRkZWQgYG5hbWVgIGFuZCBgcGF0aGAgYXR0cmlidXRlcyB0byBJbXBvcnRFcnJvcgorICAgICAgICAjIGluIG9yZGVyIHRvIHByb3ZpZGUgYmV0dGVyIGRldGFpbC4gSXNzdWUgIzEwODU0IGltcGxlbWVudGVkIHRob3NlCisgICAgICAgICMgYXR0cmlidXRlcyBvbiBpbXBvcnQgZmFpbHVyZXMgb2YgZXh0ZW5zaW9ucyBvbiBXaW5kb3dzLgorICAgICAgICBwYXRoID0gJ2JvZ3VzIGZpbGUgcGF0aCcKKyAgICAgICAgbmFtZSA9ICdleHRlbnNpb24nCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGVycjoKKyAgICAgICAgICAgIGltcC5sb2FkX2R5bmFtaWMobmFtZSwgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoLCBlcnIuZXhjZXB0aW9uLnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgZXJyLmV4Y2VwdGlvbi5uYW1lKQorCiAKIGNsYXNzIFJlbG9hZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjA5LDcyICsyMzEsODMgQEAKIAogICAgIHRhZyA9IGltcC5nZXRfdGFnKCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgbm90IGJlIE5vbmUnKQogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgogICAgICAgICAjIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgUEVQIDMxNDcKICAgICAgICAgIyBkZWZpbmVkIC5weWMgZmlsZSAoaS5lLiB1bmRlciBfX3B5Y2FjaGVfXykuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJy9mb28vYmFyL2Jhei9xdXgucHknLCBUcnVlKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9iYXovX19weWNhY2hlX18vcXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX25vX2NhY2hlX3RhZyhzZWxmKToKKyAgICAgICAgIyBOb24gY2FjaGUgdGFnIG1lYW5zIE5vdEltcGxlbWVudGVkRXJyb3IuCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnY2FjaGVfdGFnJywgTm9uZSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgorICAgICAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnd2hhdGV2ZXIucHknKQorCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfbm9fZG90KHNlbGYpOgorICAgICAgICAjIERpcmVjdG9yeSB3aXRoIGEgZG90LCBmaWxlbmFtZSB3aXRob3V0IGRvdC4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vLmJhcicsICdmaWxlJykKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28uYmFyJywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxle30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQogCiAgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3B0aW1pemVkKHNlbGYpOgogICAgICAgICAjIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgUEVQIDMxNDcKICAgICAgICAgIyBkZWZpbmVkIC5weW8gZmlsZSAoaS5lLiB1bmRlciBfX3B5Y2FjaGVfXykuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJy9mb28vYmFyL2Jhei9xdXgucHknLCBGYWxzZSksCi0gICAgICAgICAgICAnL2Zvby9iYXIvYmF6L19fcHljYWNoZV9fL3F1eC57fS5weW8nLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weW8nLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIEZhbHNlKSwgZXhwZWN0KQogCiAgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2VfY3dkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnZm9vLnB5JywgVHJ1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3Muc2VwLmpvaW4oKCdfX3B5Y2FjaGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28ue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKSkpCisgICAgICAgIHBhdGggPSAnZm9vLnB5JworICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ19fcHljYWNoZV9fJywgJ2Zvby57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCiAKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vdmVycmlkZShzZWxmKToKICAgICAgICAgIyBXaGVuIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLCBpdCBjYW4gYmUgYW55IHRydWUtaXNoIG9yIGZhbHNlLWlzaAogICAgICAgICAjIHZhbHVlLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXoucHknLCBbXSksCi0gICAgICAgICAgICAnL2Zvby9iYXIvX19weWNhY2hlX18vYmF6Lnt9LnB5bycuZm9ybWF0KHNlbGYudGFnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgWzE3XSksCi0gICAgICAgICAgICAnL2Zvby9iYXIvX19weWNhY2hlX18vYmF6Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXoucHknKQorICAgICAgICBwYXJ0aWFsX2V4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXoue30ucHknLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtdKSwgcGFydGlhbF9leHBlY3QgKyAnbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFsxN10pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxfZXhwZWN0ICsgJ2MnKQogICAgICAgICAjIEhvd2V2ZXIgaWYgdGhlIGJvb2wtaXNobmVzcyBjYW4ndCBiZSBkZXRlcm1pbmVkLCB0aGUgZXhjZXB0aW9uCiAgICAgICAgICMgcHJvcGFnYXRlcy4KICAgICAgICAgY2xhc3MgQmVhcmlzaDoKICAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKTogcmFpc2UgUnVudGltZUVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgUnVudGltZUVycm9yLAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlLCAnL2Zvby9iYXIvYmF6LnB5JywgQmVhcmlzaCgpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJy9mb28vYmFyL2Jhei5weScsIEJlYXJpc2goKSkKIAotICAgIEB1bml0dGVzdC5za2lwSWYob3MuYWx0c2VwIGlzIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAndGVzdCBtZWFuaW5nZnVsIG9ubHkgd2hlcmUgb3MuYWx0c2VwIGlzIGRlZmluZWQnKQotICAgIGRlZiB0ZXN0X2FsdHNlcF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKLSAgICAgICAgIyBXaW5kb3dzIHBhdGggYW5kIFBFUCAzMTQ3LgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCdcXGZvb1xcYmFyXFxiYXpcXHF1eC5weScsIFRydWUpLAotICAgICAgICAgICAgJ1xcZm9vXFxiYXJcXGJhelxcX19weWNhY2hlX19cXHF1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCi0KLSAgICBAdW5pdHRlc3Quc2tpcElmKG9zLmFsdHNlcCBpcyBOb25lLAotICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgbWVhbmluZ2Z1bCBvbmx5IHdoZXJlIG9zLmFsdHNlcCBpcyBkZWZpbmVkJykKLSAgICBkZWYgdGVzdF9hbHRzZXBfYW5kX3NlcF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKLSAgICAgICAgIyBXaW5kb3dzIHBhdGggYW5kIFBFUCAzMTQ3IHdoZXJlIGFsdHNlcCBpcyByaWdodCBvZiBzZXAuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXIvYmF6XFxxdXgucHknLCBUcnVlKSwKLSAgICAgICAgICAgICdcXGZvb1xcYmFyL2JhelxcX19weWNhY2hlX19cXHF1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCi0KLSAgICBAdW5pdHRlc3Quc2tpcElmKG9zLmFsdHNlcCBpcyBOb25lLAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnNlcCA9PSAnXFwnIGFuZCBvcy5hbHRzZXAgPT0gJy8nLAogICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgbWVhbmluZ2Z1bCBvbmx5IHdoZXJlIG9zLmFsdHNlcCBpcyBkZWZpbmVkJykKICAgICBkZWYgdGVzdF9zZXBfYWx0c2VwX2FuZF9zZXBfY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgV2luZG93cyBwYXRoIGFuZCBQRVAgMzE0NyB3aGVyZSBzZXAgaXMgcmlnaHQgb2YgYWx0c2VwLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCdcXGZvb1xcYmFyXFxiYXovcXV4LnB5JywgVHJ1ZSksCi0gICAgICAgICAgICAnXFxmb29cXGJhclxcYmF6L19fcHljYWNoZV9fL3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgICAgICAnXFxmb29cXGJhclxcYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCiAgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGUoc2VsZik6CiAgICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSBQRVAgMzE0NyBkZWZpbmVkIC5weWMgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvCiAgICAgICAgICMgaXRzIHNvdXJjZS4gIFRoaXMgdGVzdHMgdGhlIGdvb2QgcGF0aC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuc291cmNlX2Zyb21fY2FjaGUoCi0gICAgICAgICAgICAnL2Zvby9iYXIvYmF6L19fcHljYWNoZV9fL3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpLAotICAgICAgICAgICAgJy9mb28vYmFyL2Jhei9xdXgucHknKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuc291cmNlX2Zyb21fY2FjaGUocGF0aCksIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX25vX2NhY2hlX3RhZyhzZWxmKToKKyAgICAgICAgIyBJZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUsIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IuCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2JsYWgnLCAnX19weWNhY2hlX18nLCAnd2hhdGV2ZXIucHljJykKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdjYWNoZV90YWcnLCBOb25lKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICAgICAgaW1wLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpCiAKICAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9iYWRfcGF0aChzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZSBwYXRoIHRvIGEgcHljIGZpbGUgaXMgbm90IGluIFBFUCAzMTQ3IGZvcm1hdCwgYSBWYWx1ZUVycm9yCkBAIC0zMDUsNiArMzM4LDEyIEBACiAgICAgICAgICAgICAnL2Zvby9iYXIvZm9vLmNweXRob24tMzIuZm9vLnB5YycpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX19fZmlsZV9fKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0NycpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgicGVwMzE0NyBtb2R1bGUgYWxyZWFkeSBleGlzdHM6ICVyIiAlIChtLCkpCiAgICAgICAgICMgVGVzdCB0aGF0IGEgcGFja2FnZSdzIF9fZmlsZV9fIHBvaW50cyB0byB0aGUgcmlnaHQgc291cmNlIGRpcmVjdG9yeS4KICAgICAgICAgb3MubWtkaXIoJ3BlcDMxNDcnKQogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQpAQCAtMzE0LDE0ICszNTMsMTYgQEAKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoJ3BlcDMxNDcnKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoY2xlYW51cCkKICAgICAgICAgIyBUb3VjaCB0aGUgX19pbml0X18ucHkgZmlsZS4KLSAgICAgICAgd2l0aCBvcGVuKCdwZXAzMTQ3L19faW5pdF9fLnB5JywgJ3cnKToKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZSgncGVwMzE0Ny9fX2luaXRfXy5weScpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIGV4cGVjdGVkX19fZmlsZV9fID0gb3Muc2VwLmpvaW4oKCcuJywgJ3BlcDMxNDcnLCAnX19pbml0X18ucHknKSkKICAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sIGV4cGVjdGVkX19fZmlsZV9fLCAobS5fX2ZpbGVfXywgbS5fX3BhdGhfXywgc3lzLnBhdGgsIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKSkKICAgICAgICAgIyBFbnN1cmUgd2UgbG9hZCB0aGUgcHljIGZpbGUuCi0gICAgICAgIHN1cHBvcnQuZm9yZ2V0KCdwZXAzMTQ3JykKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3BlcDMxNDcnKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0NycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fX2ZpbGVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zZXAuam9pbigoJy4nLCAncGVwMzE0NycsICdfX2luaXRfXy5weScpKSkKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3BlcDMxNDcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sIGV4cGVjdGVkX19fZmlsZV9fLCAobS5fX2ZpbGVfXywgbS5fX3BhdGhfXywgc3lzLnBhdGgsIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKSkKIAogCiBjbGFzcyBOdWxsSW1wb3J0ZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0LnB5CmluZGV4IGNmZWQxNDIuLjYwNDQ3ZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0LnB5CkBAIC0xLDcgKzEsOCBAQAorIyBXZSBpbXBvcnQgaW1wb3J0bGliICpBU0FQKiBpbiBvcmRlciB0byB0ZXN0ICMxNTM4NgoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgaW1wCi1mcm9tIGltcG9ydGxpYi50ZXN0LmltcG9ydF8gaW1wb3J0IHRlc3RfcmVsYXRpdmVfaW1wb3J0cwotZnJvbSBpbXBvcnRsaWIudGVzdC5pbXBvcnRfIGltcG9ydCB1dGlsIGFzIGltcG9ydGxpYl91dGlsCitmcm9tIHRlc3QudGVzdF9pbXBvcnRsaWIuaW1wb3J0XyBpbXBvcnQgdXRpbCBhcyBpbXBvcnRsaWJfdXRpbAogaW1wb3J0IG1hcnNoYWwKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCkBAIC0xMiwxMSArMTMsMTMgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgZXJybm8KK2ltcG9ydCBzaHV0aWwKIAoraW1wb3J0IHRlc3Quc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKICAgICBFbnZpcm9ubWVudFZhckd1YXJkLCBURVNURk4sIGNoZWNrX3dhcm5pbmdzLCBmb3JnZXQsIGlzX2p5dGhvbiwKICAgICBtYWtlX2xlZ2FjeV9weWMsIHJtdHJlZSwgcnVuX3VuaXR0ZXN0LCBzd2FwX2F0dHIsIHN3YXBfaXRlbSwgdGVtcF91bWFzaywKLSAgICB1bmxpbmssIHVubG9hZCkKKyAgICB1bmxpbmssIHVubG9hZCwgY3JlYXRlX2VtcHR5X2ZpbGUsIGNweXRob25fb25seSkKIGZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogCiAKQEAgLTM0LDYgKzM3LDcgQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgdW5sb2FkKFRFU1RGTikKQEAgLTcxLDYgKzc1LDcgQEAKIAogICAgICAgICAgICAgaWYgVEVTVEZOIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tURVNURk5dCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhURVNURk4pCkBAIC05OCwzMCArMTAzLDUyIEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbWVhbmluZ2Z1bCBvbmx5IG9uIHBvc2l4IHN5c3RlbXMiKQotICAgIGRlZiB0ZXN0X2V4ZWN1dGVfYml0X25vdF9jb3BpZWQoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgNjA3MDogdW5kZXIgcG9zaXggLnB5YyBmaWxlcyBnb3QgdGhlaXIgZXhlY3V0ZSBiaXQgc2V0IGlmCi0gICAgICAgICMgdGhlIC5weSBmaWxlIGhhZCB0aGUgZXhlY3V0ZSBiaXQgc2V0LCBidXQgdGhleSBhcmVuJ3QgZXhlY3V0YWJsZS4KLSAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKDBvMDIyKToKKyAgICBkZWYgdGVzdF9jcmVhdGlvbl9tb2RlKHNlbGYpOgorICAgICAgICBtYXNrID0gMG8wMjIKKyAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKG1hc2spOgogICAgICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmbmFtZSA9IFRFU1RGTiArIG9zLmV4dHNlcCArICJweSIKLSAgICAgICAgICAgICAgICBvcGVuKGZuYW1lLCAndycpLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBvcy5jaG1vZChmbmFtZSwgKHN0YXQuU19JUlVTUiB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JUk9USCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LlNfSVhVU1IgfCBzdGF0LlNfSVhHUlAgfCBzdGF0LlNfSVhPVEgpKQorICAgICAgICAgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKGZuYW1lKQogICAgICAgICAgICAgICAgIGZuID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKGZuYW1lKQogICAgICAgICAgICAgICAgIHVubGluayhmbikKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmbik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWl0aGVyIGEgLnB5YyBvciAucHlvIGZpbGUiKQogICAgICAgICAgICAgICAgIHMgPSBvcy5zdGF0KGZuKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdC5TX0lNT0RFKHMuc3RfbW9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVJPVEgpCisgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSB1bWFzayBpcyByZXNwZWN0ZWQsIGFuZCB0aGUgZXhlY3V0YWJsZSBiaXRzCisgICAgICAgICAgICAgICAgIyBhcmVuJ3Qgc2V0LgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2N0KHN0YXQuU19JTU9ERShzLnN0X21vZGUpKSwgb2N0KDBvNjY2ICYgfm1hc2spKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KICAgICAgICAgICAgICAgICByZW1vdmVfZmlsZXMoVEVTVEZOKQogICAgICAgICAgICAgICAgIHVubG9hZChURVNURk4pCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbWVhbmluZ2Z1bCBvbmx5IG9uIHBvc2l4IHN5c3RlbXMiKQorICAgIGRlZiB0ZXN0X2NhY2hlZF9tb2RlX2lzc3VlXzIwNTEoc2VsZik6CisgICAgICAgIG1vZGUgPSAwbzYwMAorICAgICAgICBzb3VyY2UgPSBURVNURk4gKyAiLnB5IgorICAgICAgICB3aXRoIHNjcmlwdF9oZWxwZXIudGVtcF9kaXIoKSBhcyB0ZW1wZGlyOgorICAgICAgICAgICAgcGF0aCA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQodGVtcGRpciwgVEVTVEZOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleT0ndG9wIHNlY3JldCciKQorICAgICAgICAgICAgb3MuY2htb2QocGF0aCwgbW9kZSkKKyAgICAgICAgICAgIGNvbXBpbGVkID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpCisgICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgdGVtcGRpcikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfX2ltcG9ydF9fKFRFU1RGTikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc3lzLnBhdGgucmVtb3ZlKHRlbXBkaXIpCisKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjb21waWxlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBhIC5weWMgb3IgLnB5byBmaWxlIikKKyAgICAgICAgICAgIHN0YXRfaW5mbyA9IG9zLnN0YXQoY29tcGlsZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvY3Qoc3RhdC5TX0lNT0RFKHN0YXRfaW5mby5zdF9tb2RlKSksIG9jdChtb2RlKSkKKwogICAgIGRlZiB0ZXN0X2ltcF9tb2R1bGUoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGltcCBtb2R1bGUgY2FuIGNvcnJlY3RseSBsb2FkIGFuZCBmaW5kIC5weSBmaWxlcwogICAgICAgICAjIFhYWCAobmNvZ2hsYW4pOiBJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSBzdXBwb3J0LkNsZWFuSW1wb3J0CkBAIC0xNzAsNiArMTk3LDcgQEAKIAogICAgICAgICAjIE5lZWQgdG8gYmUgYWJsZSB0byBsb2FkIGZyb20gY3VycmVudCBkaXIuCiAgICAgICAgIHN5cy5wYXRoLmFwcGVuZCgnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtYWtlX2xlZ2FjeV9weWMoZmlsZW5hbWUpCkBAIC0xODksNiArMjE3LDcgQEAKICAgICAgICAgIyBOZXcgaW4gMi40LCB3ZSBzaG91bGRuJ3QgYmUgYWJsZSB0byBpbXBvcnQgdGhhdCBubyBtYXR0ZXIgaG93IG9mdGVuCiAgICAgICAgICMgd2UgdHJ5LgogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBpZiBURVNURk4gaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbVEVTVEZOXQogICAgICAgICB0cnk6CkBAIC0yNjIsNiArMjkxLDcgQEAKICAgICAgICAgICAgIG9zLnJlbW92ZShzb3VyY2UpCiAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbVEVTVEZOXQogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKHNvdXJjZSkKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKFRFU1RGTikKICAgICAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobW9kLl9fZmlsZV9fKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihleHQsICgnLnB5YycsICcucHlvJykpCkBAIC0yODIsMTIgKzMxMiw2IEBACiAgICAgICAgIGltcG9ydCB0ZXN0LnN1cHBvcnQgYXMgeQogICAgICAgICBzZWxmLmFzc2VydElzKHksIHRlc3Quc3VwcG9ydCwgeS5fX25hbWVfXykKIAotICAgIGRlZiB0ZXN0X2ltcG9ydF9pbml0bGVzc19kaXJlY3Rvcnlfd2FybmluZyhzZWxmKToKLSAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncygoJycsIEltcG9ydFdhcm5pbmcpKToKLSAgICAgICAgICAgICMgSnVzdCBhIHJhbmRvbSBub24tcGFja2FnZSBkaXJlY3Rvcnkgd2UgYWx3YXlzIGV4cGVjdCB0byBiZQotICAgICAgICAgICAgIyBzb21ld2hlcmUgaW4gc3lzLnBhdGguLi4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yLCBfX2ltcG9ydF9fLCAic2l0ZS1wYWNrYWdlcyIpCi0KICAgICBkZWYgdGVzdF9pbXBvcnRfYnlfZmlsZW5hbWUoc2VsZik6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoVEVTVEZOKQogICAgICAgICBlbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQpAQCAtMjk3LDggKzMyMSw2IEBACiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdwYXRoIGlzIG5vdCBlbmNvZGFibGUgdG8ge30nLmZvcm1hdChlbmNvZGluZykpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGM6CiAgICAgICAgICAgICBfX2ltcG9ydF9fKHBhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIkltcG9ydCBieSBmaWxlbmFtZSBpcyBub3Qgc3VwcG9ydGVkLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYy5leGNlcHRpb24uYXJnc1swXSkKIAogICAgIGRlZiB0ZXN0X2ltcG9ydF9pbl9kZWxfZG9lc19ub3RfY3Jhc2goc2VsZik6CiAgICAgICAgICMgSXNzdWUgNDIzNgpAQCAtMzM1LDYgKzM1NywxMiBAQAogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCiAgICAgICAgICAgICByZW1vdmVfZmlsZXMoVEVTVEZOKQogCisgICAgZGVmIHRlc3RfYm9ndXNfZnJvbWxpc3Qoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9faW1wb3J0X18oJ2h0dHAnLCBmcm9tbGlzdD1bJ2JsYWgnXSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJmcm9tbGlzdCBtdXN0IGFsbG93IGJvZ3VzIG5hbWVzIikKKwogCiBjbGFzcyBQeWNSZXdyaXRpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUZXN0IHRoYXQgdGhlIGBjb19maWxlbmFtZWAgYXR0cmlidXRlIG9uIGNvZGUgb2JqZWN0cyBhbHdheXMgcG9pbnRzCkBAIC0zNjIsNiArMzkwLDcgQEAKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZV9uYW1lLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHNlbGYubW9kdWxlX3NvdXJjZSkKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHNlbGYuZGlyX25hbWUpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5zeXNfcGF0aApAQCAtNDAxLDYgKzQzMCw3IEBACiAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzZWxmLmZpbGVfbmFtZSwgZGZpbGU9dGFyZ2V0KQogICAgICAgICBvcy5yZW1vdmUoc2VsZi5maWxlX25hbWUpCiAgICAgICAgIHB5Y19maWxlID0gbWFrZV9sZWdhY3lfcHljKHNlbGYuZmlsZV9uYW1lKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtb2QgPSBzZWxmLmltcG9ydF9tb2R1bGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5tb2R1bGVfZmlsZW5hbWUsIHB5Y19maWxlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5jb2RlX2ZpbGVuYW1lLCB0YXJnZXQpCkBAIC00MDksNyArNDM5LDcgQEAKICAgICBkZWYgdGVzdF9mb3JlaWduX2NvZGUoc2VsZik6CiAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzZWxmLmZpbGVfbmFtZSkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuY29tcGlsZWRfbmFtZSwgInJiIikgYXMgZjoKLSAgICAgICAgICAgIGhlYWRlciA9IGYucmVhZCg4KQorICAgICAgICAgICAgaGVhZGVyID0gZi5yZWFkKDEyKQogICAgICAgICAgICAgY29kZSA9IG1hcnNoYWwubG9hZChmKQogICAgICAgICBjb25zdGFudHMgPSBsaXN0KGNvZGUuY29fY29uc3RzKQogICAgICAgICBmb3JlaWduX2NvZGUgPSB0ZXN0X21haW4uX19jb2RlX18KQEAgLTQ1MSw5ICs0ODEsMTEgQEAKICAgICAgICAgdW5sb2FkKCJ0ZXN0X3RyYWlsaW5nX3NsYXNoIikKIAogICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzY3Ny4KLSAgICBkZWYgX3Rlc3RfVU5DX3BhdGgoc2VsZik6Ci0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAndGVzdF90cmFpbGluZ19zbGFzaC5weScpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCJ0ZXN0ZGF0YSA9ICd0ZXN0X3RyYWlsaW5nX3NsYXNoJyIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICdXaW5kb3dzLXNwZWNpZmljJykKKyAgICBkZWYgdGVzdF9VTkNfcGF0aChzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICd0ZXN0X3VuY19wYXRoLnB5JyksICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoInRlc3RkYXRhID0gJ3Rlc3RfdW5jX3BhdGgnIikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgIyBDcmVhdGUgdGhlIFVOQyBwYXRoLCBsaWtlIFxcbXlob3N0XGMkXGZvb1xiYXIuCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5wYXRoKQogICAgICAgICBpbXBvcnQgc29ja2V0CkBAIC00NjgsMTMgKzUwMCwxNSBAQAogICAgICAgICAgICAgICAgICMgU2VlIGlzc3VlICMxNTMzOAogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBhY2Nlc3MgYWRtaW5pc3RyYXRpdmUgc2hhcmUgJXIiICUgKHVuYywpKQogICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgc3lzLnBhdGguYXBwZW5kKHBhdGgpCi0gICAgICAgIG1vZCA9IF9faW1wb3J0X18oInRlc3RfdHJhaWxpbmdfc2xhc2giKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC50ZXN0ZGF0YSwgJ3Rlc3RfdHJhaWxpbmdfc2xhc2gnKQotICAgICAgICB1bmxvYWQoInRlc3RfdHJhaWxpbmdfc2xhc2giKQotCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgIHRlc3RfVU5DX3BhdGggPSBfdGVzdF9VTkNfcGF0aAorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgdW5jKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKCJ0ZXN0X3VuY19wYXRoIikKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmZhaWwoImNvdWxkIG5vdCBpbXBvcnQgJ3Rlc3RfdW5jX3BhdGgnIGZyb20gJXI6ICVyIgorICAgICAgICAgICAgICAgICAgICAgICUgKHVuYywgZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLnRlc3RkYXRhLCAndGVzdF91bmNfcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2QuX19maWxlX18uc3RhcnRzd2l0aCh1bmMpLCBtb2QuX19maWxlX18pCisgICAgICAgIHVubG9hZCgidGVzdF91bmNfcGF0aCIpCiAKIAogY2xhc3MgUmVsYXRpdmVJbXBvcnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01MTUsNyArNTQ5LDcgQEAKIAogICAgICAgICAjIENoZWNrIHJlbGF0aXZlIGltcG9ydCBmYWlscyB3aXRoIHBhY2thZ2Ugc2V0IHRvIGEgbm9uLXN0cmluZwogICAgICAgICBucyA9IGRpY3QoX19wYWNrYWdlX189b2JqZWN0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNoZWNrX3JlbGF0aXZlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNoZWNrX3JlbGF0aXZlKQogCiAgICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0X3dpdGhvdXRfZnV0dXJlKHNlbGYpOgogICAgICAgICAjIElmIGV4cGxpY2l0IHJlbGF0aXZlIGltcG9ydCBzeW50YXggaXMgdXNlZCwgdGhlbiBkbyBub3QgdHJ5CkBAIC01NjMsNiArNTk3LDcgQEAKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuc291cmNlLCAndycpIGFzIGZwOgogICAgICAgICAgICAgcHJpbnQoJyMgVGhpcyBpcyBhIHRlc3QgZmlsZSB3cml0dGVuIGJ5IHRlc3RfaW1wb3J0LnB5JywgZmlsZT1mcCkKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYXNzZXJ0IHN5cy5wYXRoWzBdID09IG9zLmN1cmRpciwgJ1VuZXhwZWN0ZWQgc3lzLnBhdGhbMF0nCkBAIC02MTAsNiArNjQ1LDcgQEAKICAgICAgICAgcHljX2ZpbGUgPSBtYWtlX2xlZ2FjeV9weWMoc2VsZi5zb3VyY2UpCiAgICAgICAgIG9zLnJlbW92ZShzZWxmLnNvdXJjZSkKICAgICAgICAgdW5sb2FkKFRFU1RGTikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmN1cmRpciwgb3MucGF0aC5yZWxwYXRoKHB5Y19maWxlKSkpCkBAIC02MzAsNiArNjY2LDcgQEAKICAgICAgICAgcHljX2ZpbGUgPSBtYWtlX2xlZ2FjeV9weWMoc2VsZi5zb3VyY2UpCiAgICAgICAgIG9zLnJlbW92ZShzZWxmLnNvdXJjZSkKICAgICAgICAgdW5sb2FkKFRFU1RGTikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19jYWNoZWRfXywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBvcy5wYXRoLnJlbHBhdGgocHljX2ZpbGUpKSkKQEAgLTYzOCw2ICs2NzUsOCBAQAogICAgICAgICAjIExpa2UgdGVzdF9fX2NhY2hlZF9fIGJ1dCBmb3IgcGFja2FnZXMuCiAgICAgICAgIGRlZiBjbGVhbnVwKCk6CiAgICAgICAgICAgICBybXRyZWUoJ3BlcDMxNDcnKQorICAgICAgICAgICAgdW5sb2FkKCdwZXAzMTQ3LmZvbycpCisgICAgICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQogICAgICAgICBvcy5ta2RpcigncGVwMzE0NycpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQogICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weQpAQCAtNjQ1LDggKzY4NCw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQotICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0Ny5mb28nKQogICAgICAgICBpbml0X3B5YyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgKICAgICAgICAgICAgIG9zLnBhdGguam9pbigncGVwMzE0NycsICdfX2luaXRfXy5weScpKQpAQCAtNjYwLDE4ICs2OTgsMjAgQEAKICAgICAgICAgIyBQRVAgMzE0NyBweWMgZmlsZS4KICAgICAgICAgZGVmIGNsZWFudXAoKToKICAgICAgICAgICAgIHJtdHJlZSgncGVwMzE0NycpCisgICAgICAgICAgICB1bmxvYWQoJ3BlcDMxNDcuZm9vJykKKyAgICAgICAgICAgIHVubG9hZCgncGVwMzE0NycpCiAgICAgICAgIG9zLm1rZGlyKCdwZXAzMTQ3JykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCi0gICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQotICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQogICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weQogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKCdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3LmZvbycpCiAgICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQogICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0Ny5mb28nKQogICAgICAgICBpbml0X3B5YyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgKICAgICAgICAgICAgIG9zLnBhdGguam9pbigncGVwMzE0NycsICdfX2luaXRfXy5weScpKQpAQCAtNjgwLDIyICs3MjAsMjU2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLm1vZHVsZXNbJ3BlcDMxNDcuZm9vJ10uX19jYWNoZWRfXywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBmb29fcHljKSkKIAorICAgIGRlZiB0ZXN0X3JlY29tcHV0ZV9weWNfc2FtZV9zZWNvbmQoc2VsZik6CisgICAgICAgICMgRXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZSBkb2Vzbid0IGNoYW5nZSB0aW1lc3RhbXAsIGEgY2hhbmdlIGluCisgICAgICAgICMgc291cmNlIHNpemUgaXMgZW5vdWdoIHRvIHRyaWdnZXIgcmVjb21wdXRhdGlvbiBvZiB0aGUgcHljIGZpbGUuCisgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQorICAgICAgICB1bmxvYWQoVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5zb3VyY2UsICdhJykgYXMgZnA6CisgICAgICAgICAgICBwcmludCgieCA9IDUiLCBmaWxlPWZwKQorICAgICAgICBtID0gX19pbXBvcnRfXyhURVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS54LCA1KQogCi1jbGFzcyBSZWxhdGl2ZUltcG9ydEZyb21JbXBvcnRsaWJUZXN0cyh0ZXN0X3JlbGF0aXZlX2ltcG9ydHMuUmVsYXRpdmVJbXBvcnRzKToKKworY2xhc3MgVGVzdFN5bWJvbGljYWxseUxpbmtlZFBhY2thZ2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHBhY2thZ2VfbmFtZSA9ICdzYW1wbGUnCisgICAgdGFnZ2VkID0gcGFja2FnZV9uYW1lICsgJy10YWdnZWQnCiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuX2ltcG9ydGxpYl91dGlsX2ZsYWcgPSBpbXBvcnRsaWJfdXRpbC51c2luZ19fX2ltcG9ydF9fCi0gICAgICAgIGltcG9ydGxpYl91dGlsLnVzaW5nX19faW1wb3J0X18gPSBUcnVlCisgICAgICAgIHRlc3Quc3VwcG9ydC5ybXRyZWUoc2VsZi50YWdnZWQpCisgICAgICAgIHRlc3Quc3VwcG9ydC5ybXRyZWUoc2VsZi5wYWNrYWdlX25hbWUpCisgICAgICAgIHNlbGYub3JpZ19zeXNfcGF0aCA9IHN5cy5wYXRoWzpdCisKKyAgICAgICAgIyBjcmVhdGUgYSBzYW1wbGUgcGFja2FnZTsgaW1hZ2luZSB5b3UgaGF2ZSBhIHBhY2thZ2Ugd2l0aCBhIHRhZyBhbmQKKyAgICAgICAgIyAgeW91IHdhbnQgdG8gc3ltYm9saWNhbGx5IGxpbmsgaXQgZnJvbSBpdHMgdW50YWdnZWQgbmFtZS4KKyAgICAgICAgb3MubWtkaXIoc2VsZi50YWdnZWQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0LnN1cHBvcnQucm10cmVlLCBzZWxmLnRhZ2dlZCkKKyAgICAgICAgaW5pdF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYudGFnZ2VkLCAnX19pbml0X18ucHknKQorICAgICAgICB0ZXN0LnN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoaW5pdF9maWxlKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoaW5pdF9maWxlKQorCisgICAgICAgICMgbm93IGNyZWF0ZSBhIHN5bWxpbmsgdG8gdGhlIHRhZ2dlZCBwYWNrYWdlCisgICAgICAgICMgc2FtcGxlIC0+IHNhbXBsZS10YWdnZWQKKyAgICAgICAgb3Muc3ltbGluayhzZWxmLnRhZ2dlZCwgc2VsZi5wYWNrYWdlX25hbWUsIHRhcmdldF9pc19kaXJlY3Rvcnk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIHNlbGYucGFja2FnZV9uYW1lKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5pc2RpcihzZWxmLnBhY2thZ2VfbmFtZSksIFRydWUpCisKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfbmFtZSwgJ19faW5pdF9fLnB5JykpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGltcG9ydGxpYl91dGlsLnVzaW5nX19faW1wb3J0X18gPSBzZWxmLl9pbXBvcnRsaWJfdXRpbF9mbGFnCisgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5vcmlnX3N5c19wYXRoCisKKyAgICAjIHJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWU2NzI3CisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgIG5vdCBoYXNhdHRyKHN5cywgJ2dldHdpbmRvd3N2ZXJzaW9uJykKKyAgICAgICAgb3Igc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkgPj0gKDYsIDApLAorICAgICAgICAiV2luZG93cyBWaXN0YSBvciBsYXRlciByZXF1aXJlZCIpCisgICAgQHRlc3Quc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3Rfc3ltbGlua2VkX2Rpcl9pbXBvcnRhYmxlKHNlbGYpOgorICAgICAgICAjIG1ha2Ugc3VyZSBzYW1wbGUgY2FuIG9ubHkgYmUgaW1wb3J0ZWQgZnJvbSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgICAgICAgIHN5cy5wYXRoWzpdID0gWycuJ10KKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKHNlbGYucGFja2FnZV9uYW1lKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9uYW1lLCAnX19pbml0X18ucHknKSkKKworICAgICAgICAjIFRyeSB0byBpbXBvcnQgdGhlIHBhY2thZ2UKKyAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoc2VsZi5wYWNrYWdlX25hbWUpCisKKworQGNweXRob25fb25seQorY2xhc3MgSW1wb3J0bGliQm9vdHN0cmFwVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGhlc2UgdGVzdHMgY2hlY2sgdGhhdCBpbXBvcnRsaWIgaXMgYm9vdHN0cmFwcGVkLgorCisgICAgZGVmIHRlc3RfZnJvemVuX2ltcG9ydGxpYihzZWxmKToKKyAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliJ10KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZCkKKworICAgIGRlZiB0ZXN0X2Zyb3plbl9pbXBvcnRsaWJfaXNfYm9vdHN0cmFwKHNlbGYpOgorICAgICAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQorICAgICAgICBzZWxmLmFzc2VydElzKG1vZCwgX2Jvb3RzdHJhcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sICdpbXBvcnRsaWIuX2Jvb3RzdHJhcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLl9fcGFja2FnZV9fLCAnaW1wb3J0bGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZC5fX2ZpbGVfXy5lbmRzd2l0aCgnX2Jvb3RzdHJhcC5weScpLCBtb2QuX19maWxlX18pCisKKyAgICBkZWYgdGVzdF90aGVyZV9jYW5fYmVfb25seV9vbmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE1Mzg2IHJldmVhbGVkIGEgdHJpY2t5IGxvb3Bob2xlIGluIHRoZSBib290c3RyYXBwaW5nCisgICAgICAgICMgVGhpcyB0ZXN0IGlzIHRlY2huaWNhbGx5IHJlZHVuZGFudCwgc2luY2UgdGhlIGJ1ZyBjYXVzZWQgaW1wb3J0aW5nCisgICAgICAgICMgdGhpcyB0ZXN0IG1vZHVsZSB0byBjcmFzaCBjb21wbGV0ZWx5LCBidXQgaXQgaGVscHMgcHJvdmUgdGhlIHBvaW50CisgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKKyAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliJ10KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWNoaW5lcnkuRmlsZUZpbmRlciwgbW9kLkZpbGVGaW5kZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaW1wLm5ld19tb2R1bGUsIG1vZC5uZXdfbW9kdWxlKQorCisKK2NsYXNzIEltcG9ydFRyYWNlYmFja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgb3MubWtkaXIoVEVTVEZOKQorICAgICAgICBzZWxmLm9sZF9wYXRoID0gc3lzLnBhdGhbOl0KKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIFRFU1RGTikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3lzLnBhdGhbOl0gPSBzZWxmLm9sZF9wYXRoCisgICAgICAgIHJtdHJlZShURVNURk4pCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBtb2QsIGNvbnRlbnRzLCBleHQ9Ii5weSIpOgorICAgICAgICBmbmFtZSA9IG9zLnBhdGguam9pbihURVNURk4sIG1vZCArIGV4dCkKKyAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNvbnRlbnRzKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodW5sb2FkLCBtb2QpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHJldHVybiBmbmFtZQorCisgICAgZGVmIGFzc2VydF90cmFjZWJhY2soc2VsZiwgdGIsIGZpbGVzKToKKyAgICAgICAgZGVkdXBlZF9maWxlcyA9IFtdCisgICAgICAgIHdoaWxlIHRiOgorICAgICAgICAgICAgY29kZSA9IHRiLnRiX2ZyYW1lLmZfY29kZQorICAgICAgICAgICAgZm4gPSBjb2RlLmNvX2ZpbGVuYW1lCisgICAgICAgICAgICBpZiBub3QgZGVkdXBlZF9maWxlcyBvciBmbiAhPSBkZWR1cGVkX2ZpbGVzWy0xXToKKyAgICAgICAgICAgICAgICBkZWR1cGVkX2ZpbGVzLmFwcGVuZChmbikKKyAgICAgICAgICAgIHRiID0gdGIudGJfbmV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkZWR1cGVkX2ZpbGVzKSwgbGVuKGZpbGVzKSwgZGVkdXBlZF9maWxlcykKKyAgICAgICAgZm9yIGZuLCBwYXQgaW4gemlwKGRlZHVwZWRfZmlsZXMsIGZpbGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0LCBmbikKKworICAgIGRlZiB0ZXN0X25vbmV4aXN0ZW50X21vZHVsZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBhc3NlcnRSYWlzZXMoKSBjbGVhcnMgX190cmFjZWJhY2tfXworICAgICAgICAgICAgaW1wb3J0IG5vbmV4aXN0ZW50X3h5enp5CisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiSW1wb3J0RXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfX10pCisKKyAgICBkZWYgdGVzdF9ub25leGlzdGVudF9tb2R1bGVfbmVzdGVkKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICJpbXBvcnQgbm9uZXhpc3RlbnRfeHl6enkiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiSW1wb3J0RXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgJ2Zvby5weSddKQorCisgICAgZGVmIHRlc3RfZXhlY19mYWlsdXJlKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICIxLzAiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgJ2Zvby5weSddKQorCisgICAgZGVmIHRlc3RfZXhlY19mYWlsdXJlX25lc3RlZChzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfbW9kdWxlKCJmb28iLCAiaW1wb3J0IGJhciIpCisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiYmFyIiwgIjEvMCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCAnZm9vLnB5JywgJ2Jhci5weSddKQorCisgICAgIyBBIGZldyBtb3JlIGV4YW1wbGVzIGZyb20gaXNzdWUgIzE1NDI1CisgICAgZGVmIHRlc3Rfc3ludGF4X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICJpbnZhbGlkIHN5bnRheCBpcyBpbnZhbGlkIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGZvbworICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIlN5bnRheEVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX19dKQorCisgICAgZGVmIF9zZXR1cF9icm9rZW5fcGFja2FnZShzZWxmLCBwYXJlbnQsIGNoaWxkKToKKyAgICAgICAgcGtnX25hbWUgPSAiX3BhcmVudF9mb28iCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxvYWQsIHBrZ19uYW1lKQorICAgICAgICBwa2dfcGF0aCA9IG9zLnBhdGguam9pbihURVNURk4sIHBrZ19uYW1lKQorICAgICAgICBvcy5ta2Rpcihwa2dfcGF0aCkKKyAgICAgICAgIyBUb3VjaCB0aGUgX19pbml0X18ucHkKKyAgICAgICAgaW5pdF9wYXRoID0gb3MucGF0aC5qb2luKHBrZ19wYXRoLCAnX19pbml0X18ucHknKQorICAgICAgICB3aXRoIG9wZW4oaW5pdF9wYXRoLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHBhcmVudCkKKyAgICAgICAgYmFyX3BhdGggPSBvcy5wYXRoLmpvaW4ocGtnX3BhdGgsICdiYXIucHknKQorICAgICAgICB3aXRoIG9wZW4oYmFyX3BhdGgsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoY2hpbGQpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHJldHVybiBpbml0X3BhdGgsIGJhcl9wYXRoCisKKyAgICBkZWYgdGVzdF9icm9rZW5fc3VibW9kdWxlKHNlbGYpOgorICAgICAgICBpbml0X3BhdGgsIGJhcl9wYXRoID0gc2VsZi5fc2V0dXBfYnJva2VuX3BhY2thZ2UoIiIsICIxLzAiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgX3BhcmVudF9mb28uYmFyCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgYmFyX3BhdGhdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX2Zyb20oc2VsZik6CisgICAgICAgIGluaXRfcGF0aCwgYmFyX3BhdGggPSBzZWxmLl9zZXR1cF9icm9rZW5fcGFja2FnZSgiIiwgIjEvMCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZyb20gX3BhcmVudF9mb28gaW1wb3J0IGJhcgorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkltcG9ydEVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sIGJhcl9wYXRoXSkKKworICAgIGRlZiB0ZXN0X2Jyb2tlbl9wYXJlbnQoc2VsZik6CisgICAgICAgIGluaXRfcGF0aCwgYmFyX3BhdGggPSBzZWxmLl9zZXR1cF9icm9rZW5fcGFja2FnZSgiMS8wIiwgIiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBfcGFyZW50X2Zvby5iYXIKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCBpbml0X3BhdGhdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX3BhcmVudF9mcm9tKHNlbGYpOgorICAgICAgICBpbml0X3BhdGgsIGJhcl9wYXRoID0gc2VsZi5fc2V0dXBfYnJva2VuX3BhY2thZ2UoIjEvMCIsICIiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIF9wYXJlbnRfZm9vIGltcG9ydCBiYXIKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCBpbml0X3BhdGhdKQorCisgICAgQGNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2ltcG9ydF9idWcoc2VsZik6CisgICAgICAgICMgV2Ugc2ltdWxhdGUgYSBidWcgaW4gaW1wb3J0bGliIGFuZCBjaGVjayB0aGF0IGl0J3Mgbm90IHN0cmlwcGVkCisgICAgICAgICMgYXdheSBmcm9tIHRoZSB0cmFjZWJhY2suCisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiZm9vIiwgIiIpCisgICAgICAgIGltcG9ydGxpYiA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYiddCisgICAgICAgIG9sZF9sb2FkX21vZHVsZSA9IGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKCphcmdzKToKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgICAgIGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUgPSBsb2FkX21vZHVsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sICc8ZnJvemVuIGltcG9ydGxpYicsIF9fZmlsZV9fXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUgPSBvbGRfbG9hZF9tb2R1bGUKIAogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6CiAgICAgcnVuX3VuaXR0ZXN0KEltcG9ydFRlc3RzLCBQeWNhY2hlVGVzdHMsCiAgICAgICAgICAgICAgICAgIFB5Y1Jld3JpdGluZ1Rlc3RzLCBQYXRoc1Rlc3RzLCBSZWxhdGl2ZUltcG9ydFRlc3RzLAogICAgICAgICAgICAgICAgICBPdmVycmlkaW5nSW1wb3J0QnVpbHRpblRlc3RzLAotICAgICAgICAgICAgICAgICBSZWxhdGl2ZUltcG9ydEZyb21JbXBvcnRsaWJUZXN0cykKKyAgICAgICAgICAgICAgICAgSW1wb3J0bGliQm9vdHN0cmFwVGVzdHMsCisgICAgICAgICAgICAgICAgIFRlc3RTeW1ib2xpY2FsbHlMaW5rZWRQYWNrYWdlLAorICAgICAgICAgICAgICAgICBJbXBvcnRUcmFjZWJhY2tUZXN0cykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRob29rcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0aG9va3MucHkKaW5kZXggZWM2NzMwZS4uMmEyMmQxYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRob29rcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGhvb2tzLnB5CkBAIC01MSw3ICs1MSw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD10ZXN0X3BhdGgpOgogICAgICAgICBpZiBwYXRoICE9IHRlc3RfcGF0aDoKLSAgICAgICAgICAgICMgaWYgb3V0IGNsYXNzIGlzIG9uIHN5cy5wYXRoX2hvb2tzLCB3ZSBtdXN0IHJhaXNlCisgICAgICAgICAgICAjIGlmIG91ciBjbGFzcyBpcyBvbiBzeXMucGF0aF9ob29rcywgd2UgbXVzdCByYWlzZQogICAgICAgICAgICAgIyBJbXBvcnRFcnJvciBmb3IgYW55IHBhdGggaXRlbSB0aGF0IHdlIGNhbid0IGhhbmRsZS4KICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKQEAgLTIxNSw3ICsyMTUsNyBAQAogICAgICAgICBzZWxmLmRvVGVzdEltcG9ydHMoaSkKIAogICAgIGRlZiB0ZXN0UGF0aEhvb2soc2VsZik6Ci0gICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChQYXRoSW1wb3J0ZXIpCisgICAgICAgIHN5cy5wYXRoX2hvb2tzLmluc2VydCgwLCBQYXRoSW1wb3J0ZXIpCiAgICAgICAgIHN5cy5wYXRoLmFwcGVuZCh0ZXN0X3BhdGgpCiAgICAgICAgIHNlbGYuZG9UZXN0SW1wb3J0cygpCiAKQEAgLTIyOCw4ICsyMjgsMTAgQEAKICAgICBkZWYgdGVzdEltcFdyYXBwZXIoc2VsZik6CiAgICAgICAgIGkgPSBJbXBXcmFwcGVyKCkKICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoaSkKLSAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKEltcFdyYXBwZXIpCi0gICAgICAgIG1uYW1lcyA9ICgiY29sb3JzeXMiLCAidXJsbGliLnBhcnNlIiwgImRpc3R1dGlscy5jb3JlIikKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuaW5zZXJ0KDAsIEltcFdyYXBwZXIpCisgICAgICAgIG1uYW1lcyA9ICgKKyAgICAgICAgICAgICJjb2xvcnN5cyIsICJ1cmxsaWIucGFyc2UiLCAiZGlzdHV0aWxzLmNvcmUiLCAic3lzIiwKKyAgICAgICAgKQogICAgICAgICBmb3IgbW5hbWUgaW4gbW5hbWVzOgogICAgICAgICAgICAgcGFyZW50ID0gbW5hbWUuc3BsaXQoIi4iKVswXQogICAgICAgICAgICAgZm9yIG4gaW4gbGlzdChzeXMubW9kdWxlcyk6CkBAIC0yMzcsNyArMjM5LDggQEAKICAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25dCiAgICAgICAgIGZvciBtbmFtZSBpbiBtbmFtZXM6CiAgICAgICAgICAgICBtID0gX19pbXBvcnRfXyhtbmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWyJfX2R1bW15X18iXSkKLSAgICAgICAgICAgIG0uX19sb2FkZXJfXyAgIyB0byBtYWtlIHN1cmUgd2UgYWN0dWFsbHkgaGFuZGxlZCB0aGUgaW1wb3J0CisgICAgICAgICAgICAjIHRvIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBoYW5kbGVkIHRoZSBpbXBvcnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG0sICJfX2xvYWRlcl9fIikpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVkMDU4NS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi5weQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIudGVzdC5fX21haW5fXyBpbXBvcnQgdGVzdF9tYWluCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTM0NWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19pbml0X18ucHkKQEAgLTAsMCArMSwzMyBAQAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCB1bml0dGVzdAorCitkZWYgdGVzdF9zdWl0ZShwYWNrYWdlPV9fcGFja2FnZV9fLCBkaXJlY3Rvcnk9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSk6CisgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKKyAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCgnLicsICdfXycpKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBuYW1lKQorICAgICAgICBpZiAob3MucGF0aC5pc2ZpbGUocGF0aCkgYW5kIG5hbWUuc3RhcnRzd2l0aCgndGVzdF8nKSBhbmQKKyAgICAgICAgICAgICAgICBuYW1lLmVuZHN3aXRoKCcucHknKSk6CisgICAgICAgICAgICBzdWJtb2R1bGVfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQobmFtZSlbMF0KKyAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gInswfS57MX0iLmZvcm1hdChwYWNrYWdlLCBzdWJtb2R1bGVfbmFtZSkKKyAgICAgICAgICAgIF9faW1wb3J0X18obW9kdWxlX25hbWUsIGxldmVsPTApCisgICAgICAgICAgICBtb2R1bGVfdGVzdHMgPSB1bml0dGVzdC5maW5kVGVzdENhc2VzKHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXSkKKyAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobW9kdWxlX3Rlc3RzKQorICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgICAgICBwYWNrYWdlX25hbWUgPSAiezB9LnsxfSIuZm9ybWF0KHBhY2thZ2UsIG5hbWUpCisgICAgICAgICAgICBfX2ltcG9ydF9fKHBhY2thZ2VfbmFtZSwgbGV2ZWw9MCkKKyAgICAgICAgICAgIHBhY2thZ2VfdGVzdHMgPSBnZXRhdHRyKHN5cy5tb2R1bGVzW3BhY2thZ2VfbmFtZV0sICd0ZXN0X3N1aXRlJykoKQorICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChwYWNrYWdlX3Rlc3RzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGludWUKKyAgICByZXR1cm4gc3VpdGUKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3RhcnRfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgIHRvcF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHN0YXJ0X2RpcikpCisgICAgdGVzdF9sb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0X2xvYWRlci5kaXNjb3ZlcihzdGFydF9kaXIsIHRvcF9sZXZlbF9kaXI9dG9wX2RpcikpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX21haW5fXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzOTcxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX21haW5fXy5weQpAQCAtMCwwICsxLDIwIEBACisiIiJSdW4gaW1wb3J0bGliJ3MgdGVzdCBzdWl0ZS4KKworU3BlY2lmeWluZyB0aGUgYGAtLWJ1aWx0aW5gYCBmbGFnIHdpbGwgcnVuIHRlc3RzLCB3aGVyZSBhcHBsaWNhYmxlLCB3aXRoCitidWlsdGlucy5fX2ltcG9ydF9fIGluc3RlYWQgb2YgaW1wb3J0bGliLl9faW1wb3J0X18uCisKKyIiIgorZnJvbSAuIGltcG9ydCB0ZXN0X21haW4KKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0V4ZWN1dGUgdGhlIGltcG9ydGxpYiB0ZXN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1aXRlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJ1aWx0aW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIGJ1aWx0aW5zLl9faW1wb3J0X18oKSBpbnN0ZWFkIG9mIGltcG9ydGxpYicpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBhcmdzLmJ1aWx0aW46CisgICAgICAgIHV0aWwudXNpbmdfX19pbXBvcnRfXyA9IFRydWUKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2FiYy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2FiYy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2FiYy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYWJjLnB5CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vX19pbml0X18ucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vX19pbml0X18ucHkKaW5kZXggMzFhM2I1Zi4uMTVjMGFkZSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi9fX2luaXRfXy5weQpAQCAtMSwxMCArMSwxMCBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Citmcm9tIC4uIGltcG9ydCB0ZXN0X3N1aXRlCiBpbXBvcnQgb3MKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuYnVpbHRpbicsIGRpcmVjdG9yeSkKKyAgICByZXR1cm4gdGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuYnVpbHRpbicsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9maW5kZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CmluZGV4IDQwZjY5MGUuLjE0NjUzOGQgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9maW5kZXIucHkKQEAgLTM1LDE0ICszNSwxNCBAQAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIGFzc2VydCAnaW1wb3J0bGliJyBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCiAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUoJ2ltcG9ydGxpYicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfaWdub3JlX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGhlIHZhbHVlIGZvciAncGF0aCcgc2hvdWxkIGFsd2F5cyB0cmlnZ2VyIGEgZmFpbGVkIGltcG9ydC4KICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgogICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsncGtnJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKaW5kZXggMWE4NTM5Yi4uOGUxODZlNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2xvYWRlci5weQpAQCAtMTgsMTAgKzE4LDEwIEBACiAKICAgICBkZWYgdmVyaWZ5KHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSBtb2R1bGUgbWF0Y2hlcyBhZ2FpbnN0IHdoYXQgaXQgc2hvdWxkIGhhdmUuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCiAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBzZWxmLnZlcmlmaWNhdGlvbi5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlLl9fbmFtZV9fIGluIHN5cy5tb2R1bGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX25hbWVfXywgc3lzLm1vZHVsZXMpCiAKICAgICBsb2FkX21vZHVsZSA9IHN0YXRpY21ldGhvZChsYW1iZGEgbmFtZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZShuYW1lKSkKQEAgLTQ5LDIwICs0OSwyMiBAQAogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShidWlsdGluX3V0aWwuTkFNRSk6CiAgICAgICAgICAgICBtb2R1bGUxID0gc2VsZi5sb2FkX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSkKICAgICAgICAgICAgIG1vZHVsZTIgPSBzZWxmLmxvYWRfbW9kdWxlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZTEgaXMgbW9kdWxlMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlMSwgbW9kdWxlMikKIAogICAgIGRlZiB0ZXN0X3VubG9hZGFibGUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnZHNzZHNkZmZmJwogICAgICAgICBhc3NlcnQgbmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiB0ZXN0X2FscmVhZHlfaW1wb3J0ZWQoc2VsZik6CiAgICAgICAgICMgVXNpbmcgdGhlIG5hbWUgb2YgYSBtb2R1bGUgYWxyZWFkeSBpbXBvcnRlZCBidXQgbm90IGEgYnVpbHQtaW4gc2hvdWxkCiAgICAgICAgICMgc3RpbGwgZmFpbC4KICAgICAgICAgYXNzZXJ0IGhhc2F0dHIoaW1wb3J0bGliLCAnX19maWxlX18nKSAgIyBOb3QgYSBidWlsdC1pbi4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZSgnaW1wb3J0bGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ2ltcG9ydGxpYicpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTcyLDEyICs3NCwxMiBAQAogICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgogICAgICAgICAjIFRoZXJlIGlzIG5vIGNvZGUgb2JqZWN0LgogICAgICAgICByZXN1bHQgPSBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmdldF9jb2RlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0IGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X2dldF9zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgVGhlcmUgaXMgbm8gc291cmNlLgogICAgICAgICByZXN1bHQgPSBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmdldF9zb3VyY2UoYnVpbHRpbl91dGlsLk5BTUUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKICAgICAgICAgIyBDYW5ub3QgYmUgYSBwYWNrYWdlLgpAQCAtODgsOCArOTAsOSBAQAogICAgICAgICAjIE1vZHVsZXMgbm90IGJ1aWx0LWluIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KICAgICAgICAgZm9yIG1ldGhfbmFtZSBpbiAoJ2dldF9jb2RlJywgJ2dldF9zb3VyY2UnLCAnaXNfcGFja2FnZScpOgogICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtZXRoX25hbWUpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1ldGhvZChidWlsdGluX3V0aWwuQkFEX05BTUUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJ1aWx0aW5fdXRpbC5CQURfTkFNRSkKIAogCiAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpjb3B5IGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQpjb3B5IHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQppbmRleCA4ZDdjNDlkLi5jMDMzOTIzIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQpAQCAtMSwxMSArMSwxMSBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Citmcm9tIC4uIGltcG9ydCB0ZXN0X3N1aXRlCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHVuaXR0ZXN0CiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgcmV0dXJuIGltcG9ydGxpYi50ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LnNvdXJjZScsIGRpcmVjdG9yeSkKKyAgICByZXR1cm4gdGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuZXh0ZW5zaW9uJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggZTA2MmZiNi4uNzZjNTNlNCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBpbXAKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0xMywxOSArMTQsMjYgQEAKICAgICAgICAgZ29vZF9uYW1lID0gZXh0X3V0aWwuTkFNRQogICAgICAgICBiYWRfbmFtZSA9IGdvb2RfbmFtZS51cHBlcigpCiAgICAgICAgIGFzc2VydCBnb29kX25hbWUgIT0gYmFkX25hbWUKLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcihleHRfdXRpbC5QQVRILAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX0V4dGVuc2lvbkZpbmRlckRldGFpbHMoKSkKKyAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5GaWxlRmluZGVyKGV4dF91dGlsLlBBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9ib290c3RyYXAuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5FWFRFTlNJT05fU1VGRklYRVMpKQogICAgICAgICByZXR1cm4gZmluZGVyLmZpbmRfbW9kdWxlKGJhZF9uYW1lKQogCiAgICAgZGVmIHRlc3RfY2FzZV9zZW5zaXRpdmUoc2VsZik6CiAgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnVuc2V0KCdQWVRIT05DQVNFT0snKQorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuZmluZF9tb2R1bGUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfY2FzZV9pbnNlbnNpdGl2aXR5KHNlbGYpOgogICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi5zZXQoJ1BZVEhPTkNBU0VPSycsICcxJykKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBub3QgaW4gX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdvcy5lbnZpcm9uIGNoYW5nZXMgbm90IHJlZmxlY3RlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX29zLmVudmlyb24nKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5maW5kX21vZHVsZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihsb2FkZXIsICdsb2FkX21vZHVsZScpKQogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQppbmRleCBlYTk3NDgzLi5hNjNjZmRiIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLiBpbXBvcnQgdXRpbAogCkBAIC05LDE1ICs5LDE2IEBACiAgICAgIiIiVGVzdCB0aGUgZmluZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4iIiIKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIGltcG9ydGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcih1dGlsLlBBVEgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9FeHRlbnNpb25GaW5kZXJEZXRhaWxzKCkpCisgICAgICAgIGltcG9ydGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIodXRpbC5QQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUykpCiAgICAgICAgIHJldHVybiBpbXBvcnRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZmluZF9tb2R1bGUodXRpbC5OQU1FKSkKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgRXh0ZW5zaW9uIG1vZHVsZXMgY2Fubm90IGJlIGFuIF9faW5pdF9fIGZvciBhIHBhY2thZ2UuCisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBhbiBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9wYWNrYWdlKHNlbGYpOgpAQCAtMjUsNyArMjYsNyBAQAogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2luX3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgRXh0ZW5zaW9uIG1vZHVsZXMgY2Fubm90IGJlIGFuIF9faW5pdF9fIGZvciBhIHBhY2thZ2UuCisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBhbiBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Vfb3Zlcl9tb2R1bGUoc2VsZik6CkBAIC0zMyw5ICszNCw3IEBACiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRfbW9kdWxlKCdhc2RmamtsOycpIGlzIE5vbmUpCi0KLSAgICAjIFhYWCBSYWlzZSBhbiBleGNlcHRpb24gaWYgc29tZW9uZSB0cmllcyB0byB1c2UgdGhlICdwYXRoJyBhcmd1bWVudD8KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5maW5kX21vZHVsZSgnYXNkZmprbDsnKSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E1YWYyMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weQpAQCAtMCwwICsxLDc5IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIC4gaW1wb3J0IHV0aWwgYXMgZXh0X3V0aWwKK2Zyb20gLi4gaW1wb3J0IGFiYworZnJvbSAuLiBpbXBvcnQgdXRpbAorCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKKworICAgICIiIlRlc3QgbG9hZF9tb2R1bGUoKSBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubG9hZGVyID0gbWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoZXh0X3V0aWwuTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X3V0aWwuRklMRVBBVEgpCisKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoZnVsbG5hbWUpCisKKyAgICBkZWYgdGVzdF9sb2FkX21vZHVsZV9BUEkoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgZGVmYXVsdCBhcmd1bWVudCBmb3IgbG9hZF9tb2R1bGUoKS4KKyAgICAgICAgc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoKQorICAgICAgICBzZWxmLmxvYWRlci5sb2FkX21vZHVsZShOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUoJ1hYWCcpCisKKworICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCisgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCBleHRfdXRpbC5OQU1FKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2ZpbGVfXycsIGV4dF91dGlsLkZJTEVQQVRIKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihleHRfdXRpbC5OQU1FLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcikKKworICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2xhY2tpbmdfcGFyZW50KHNlbGYpOgorICAgICAgICAjIE5vIGV4dGVuc2lvbiBtb2R1bGUgaW4gYSBwYWNrYWdlIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKKyAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCisgICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfYWZ0ZXJfZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBObyBlYXN5IHdheSB0byB0cmlnZ2VyIGEgZmFpbHVyZSBhZnRlciBhIHN1Y2Nlc3NmdWwgaW1wb3J0LgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ2FzZGZqa2w7JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKworICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShleHRfdXRpbC5OQU1FKSkKKyAgICAgICAgZm9yIHN1ZmZpeCBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignc29tZScsICdwYXRoJywgJ3BrZycsICdfX2luaXRfXycgKyBzdWZmaXgpCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcigncGtnJywgcGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIuaXNfcGFja2FnZSgncGtnJykpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoTG9hZGVyVGVzdHMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQpzaW1pbGFyaXR5IGluZGV4IDgwJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKaW5kZXggNDYxMDQyMC4uMWQ5NjlhMSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSAuIGltcG9ydCB1dGlsCiAKIGltcG9ydCBjb2xsZWN0aW9ucwpAQCAtMTQsNyArMTQsOCBAQAogICAgICMgWFhYIFNob3VsZCBpdCBvbmx5IHdvcmsgZm9yIGRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgYW4gZXh0ZW5zaW9uIG1vZHVsZT8KIAogICAgIGRlZiBob29rKHNlbGYsIGVudHJ5KToKLSAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKGVudHJ5KQorICAgICAgICByZXR1cm4gbWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKChtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpKShlbnRyeSkKIAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CiAgICAgICAgICMgUGF0aCBob29rIHNob3VsZCBoYW5kbGUgYSBkaXJlY3Rvcnkgd2hlcmUgYSBrbm93biBleHRlbnNpb24gbW9kdWxlCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi91dGlsLnB5CmluZGV4IGQxNDkxNjkuLmEyNjZkZDkgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBpbXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCkBAIC02LDEwICs3LDkgQEAKIEVYVCA9IE5vbmUKIEZJTEVOQU1FID0gTm9uZQogTkFNRSA9ICdfdGVzdGNhcGknCi1fZmlsZV9leHRzID0gW3hbMF0gZm9yIHggaW4gaW1wLmdldF9zdWZmaXhlcygpIGlmIHhbMl0gPT0gaW1wLkNfRVhURU5TSU9OXQogdHJ5OgogICAgIGZvciBQQVRIIGluIHN5cy5wYXRoOgotICAgICAgICBmb3IgRVhUIGluIF9maWxlX2V4dHM6CisgICAgICAgIGZvciBFWFQgaW4gbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUzoKICAgICAgICAgICAgIEZJTEVOQU1FID0gTkFNRSArIEVYVAogICAgICAgICAgICAgRklMRVBBVEggPSBvcy5wYXRoLmpvaW4oUEFUSCwgRklMRU5BTUUpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oUEFUSCwgRklMRU5BTUUpKToKQEAgLTE4LDQgKzE4LDMgQEAKICAgICAgICAgUEFUSCA9IEVYVCA9IEZJTEVOQU1FID0gRklMRVBBVEggPSBOb25lCiBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICBwYXNzCi1kZWwgX2ZpbGVfZXh0cwpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vX19pbml0X18ucHkKaW5kZXggOGQ3YzQ5ZC4uOWVmMTAzYiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vX19pbml0X18ucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAorZnJvbSAuLiBpbXBvcnQgdGVzdF9zdWl0ZQogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CiAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5zb3VyY2UnLCBkaXJlY3RvcnkpCisgICAgcmV0dXJuIHRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LmZyb3plbicsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKaW5kZXggZGI4ODM3OS4uZmEwYzJhMCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIC4uLiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBmcm9tIC4uIGltcG9ydCBhYmMKIAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0zNSw3ICszNSw3IEBACiAKICAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmQoJzxub3QgcmVhbD4nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlcikKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggNzMlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vdGVzdF9sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQppbmRleCBiNjg1ZWY1Li40YjhlYzE1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQpAQCAtMTAsNTUgKzEwLDcwIEBACiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX19oZWxsb19fJyksIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIG1vZHVsZSA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19oZWxsb19fJykKLSAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX2hlbGxvX18nLCAnX19maWxlX18nOiAnPGZyb3plbj4nLAotICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnJywgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXJ9CisgICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19oZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJycsCisgICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIobW9kdWxlLCBhdHRyKSwgdmFsdWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX19waGVsbG9fXycpLCAgY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgogICAgICAgICAgICAgbW9kdWxlID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfX3BoZWxsb19fJykKLSAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fJywgJ19fZmlsZV9fJzogJzxmcm96ZW4+JywKLSAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfX3BoZWxsb19fJywgJ19fcGF0aF9fJzogWydfX3BoZWxsb19fJ10sCi0gICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcn0KKyAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfX3BoZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgICdfX3BhdGhfXyc6IFsnX19waGVsbG9fXyddLAorICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKICAgICAgICAgICAgICAgICBhdHRyX3ZhbHVlID0gZ2V0YXR0cihtb2R1bGUsIGF0dHIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyX3ZhbHVlLCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgX19waGVsbG9fXy4lcywgJXIgIT0gJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdHRyLCBhdHRyX3ZhbHVlLCB2YWx1ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9sYWNraW5nX3BhcmVudChzZWxmKToKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ19fcGhlbGxvX18nLCAnX19waGVsbG9fXy5zcGFtJyksIFwKICAgICAgICAgICAgICBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICBtb2R1bGUgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19fcGhlbGxvX18uc3BhbScpCi0gICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19waGVsbG9fXy5zcGFtJywgJ19fZmlsZV9fJzogJzxmcm96ZW4+JywKKyAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fLnNwYW0nLAogICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnX19waGVsbG9fXycsCi0gICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyfQorICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGNoZWNrLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGdldGF0dHIobW9kdWxlLCBhdHRyKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cl92YWx1ZSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIF9fcGhlbGxvX18uc3BhbS4lcywgJXIgIT0gJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdHRyLCBhdHRyX3ZhbHVlLCB2YWx1ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdfX2hlbGxvX18nKSwgY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgogICAgICAgICAgICAgbW9kdWxlMSA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19oZWxsb19fJykKICAgICAgICAgICAgIG1vZHVsZTIgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19faGVsbG9fXycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlMSBpcyBtb2R1bGUyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0hlbGxvIHdvcmxkIVxuSGVsbG8gd29ybGQhXG4nKQogCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHIoc2VsZik6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdfX2hlbGxvX18nKSwgY2FwdHVyZWRfc3Rkb3V0KCk6CisgICAgICAgICAgICBtb2R1bGUgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19faGVsbG9fXycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9kdWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxtb2R1bGUgJ19faGVsbG9fXycgKGZyb3plbik+IikKKwogICAgIGRlZiB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUoc2VsZik6CiAgICAgICAgICMgTm8gd2F5IHRvIHRyaWdnZXIgYW4gZXJyb3IgaW4gYSBmcm96ZW4gbW9kdWxlLgogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgogICAgICAgICBhc3NlcnQgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmZpbmRfbW9kdWxlKCdfbm90X3JlYWwnKSBpcyBOb25lCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX25vdF9yZWFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ19ub3RfcmVhbCcpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTc4LDcgKzkzLDcgQEAKICAgICBkZWYgdGVzdF9nZXRfc291cmNlKHNlbGYpOgogICAgICAgICAjIFNob3VsZCBhbHdheXMgcmV0dXJuIE5vbmUuCiAgICAgICAgIHJlc3VsdCA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5nZXRfc291cmNlKCdfX2hlbGxvX18nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0IGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgICMgU2hvdWxkIGJlIGFibGUgdG8gdGVsbCB3aGF0IGlzIGEgcGFja2FnZS4KQEAgLTg2LDE0ICsxMDEsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgKCdfX3BoZWxsb19fLnNwYW0nLCBGYWxzZSkpCiAgICAgICAgIGZvciBuYW1lLCBpc19wYWNrYWdlIGluIHRlc3RfZm9yOgogICAgICAgICAgICAgcmVzdWx0ID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmlzX3BhY2thZ2UobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKHJlc3VsdCkgPT0gaXNfcGFja2FnZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9vbChyZXN1bHQpLCBpc19wYWNrYWdlKQogCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgIyBSYWlzZSBJbXBvcnRFcnJvciBmb3IgbW9kdWxlcyB0aGF0IGFyZSBub3QgZnJvemVuLgogICAgICAgICBmb3IgbWV0aF9uYW1lIGluICgnZ2V0X2NvZGUnLCAnZ2V0X3NvdXJjZScsICdpc19wYWNrYWdlJyk6CiAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwgbWV0aF9uYW1lKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBtZXRob2QoJ2ltcG9ydGxpYicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnaW1wb3J0bGliJykKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpjb3B5IGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQpjb3B5IHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vX19pbml0X18ucHkKaW5kZXggOGQ3YzQ5ZC4uMzY2ZTUzMSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL19faW5pdF9fLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKK2Zyb20gLi4gaW1wb3J0IHRlc3Rfc3VpdGUKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQorICAgIHJldHVybiB0ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5pbXBvcnRfJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQppbmRleCA1MDU2YWU1Li43ODNjZGUxIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQpAQCAtNjcsNyArNjcsNyBAQAogCiAgICAgZGVmIHRlc3RfYnVua19fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICBnbG9iYWxzID0geydfX3BhY2thZ2VfXyc6IDQyfQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCcnLCBnbG9iYWxzLCB7fSwgWydyZWxpbXBvcnQnXSwgMSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDRjZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQpAQCAtMCwwICsxLDY3IEBACitmcm9tIC4uIGltcG9ydCB1dGlsIGFzIGltcG9ydGxpYl90ZXN0X3V0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbAoraW1wb3J0IGltcAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgQmFkTG9hZGVyRmluZGVyOgorICAgIGJhZCA9ICdmaW5lLmJvZ3VzJworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgaWYgZnVsbG5hbWUgPT0gY2xzLmJhZDoKKyAgICAgICAgICAgIHJldHVybiBjbHMKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbG9hZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSk6CisgICAgICAgIGlmIGZ1bGxuYW1lID09IGNscy5iYWQ6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignSSBjYW5ub3QgYmUgbG9hZGVkIScpCisKKworY2xhc3MgQVBJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IEFQSS1zcGVjaWZpYyBkZXRhaWxzIGZvciBfX2ltcG9ydF9fIChlLmcuIHJhaXNpbmcgdGhlIHJpZ2h0CisgICAgZXhjZXB0aW9uIHdoZW4gcGFzc2luZyBpbiBhbiBpbnQgZm9yIHRoZSBtb2R1bGUgbmFtZSkuIiIiCisKKyAgICBkZWYgdGVzdF9uYW1lX3JlcXVpcmVzX3JwYXJpdGlvbihzZWxmKToKKyAgICAgICAgIyBSYWlzZSBUeXBlRXJyb3IgaWYgYSBub24tc3RyaW5nIGlzIHBhc3NlZCBpbiBmb3IgdGhlIG1vZHVsZSBuYW1lLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB1dGlsLmltcG9ydF8oNDIpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9sZXZlbChzZWxmKToKKyAgICAgICAgIyBSYWlzZSBWYWx1ZUVycm9yIHdoZW4gYSBuZWdhdGl2ZSBsZXZlbCBpcyBzcGVjaWZpZWQuCisgICAgICAgICMgUEVQIDMyOCBkaWQgYXdheSB3aXRoIHN5cy5tb2R1bGUgTm9uZSBlbnRyaWVzIGFuZCB0aGUgYW1iaWd1aXR5IG9mCisgICAgICAgICMgYWJzb2x1dGUvcmVsYXRpdmUgaW1wb3J0cy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwuaW1wb3J0Xygnb3MnLCBnbG9iYWxzKCksIGxldmVsPS0xKQorCisgICAgZGVmIHRlc3Rfbm9uZXhpc3RlbnRfZnJvbWxpc3RfZW50cnkoc2VsZik6CisgICAgICAgICMgSWYgc29tZXRoaW5nIGluIGZyb21saXN0IGRvZXNuJ3QgZXhpc3QsIHRoYXQncyBva2F5LgorICAgICAgICAjIGlzc3VlMTU3MTUKKyAgICAgICAgbW9kID0gaW1wLm5ld19tb2R1bGUoJ2ZpbmUnKQorICAgICAgICBtb2QuX19wYXRoX18gPSBbJ1hYWCddCisgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtCYWRMb2FkZXJGaW5kZXJdKToKKyAgICAgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC51bmNhY2hlKCdmaW5lJyk6CisgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2ZpbmUnXSA9IG1vZAorICAgICAgICAgICAgICAgIHV0aWwuaW1wb3J0XygnZmluZScsIGZyb21saXN0PVsnbm90IGhlcmUnXSkKKworICAgIGRlZiB0ZXN0X2Zyb21saXN0X2xvYWRfZXJyb3JfcHJvcGFnYXRlcyhzZWxmKToKKyAgICAgICAgIyBJZiBzb21ldGhpbmcgaW4gZnJvbWxpc3QgdHJpZ2dlcnMgYW4gZXhjZXB0aW9uIG5vdCByZWxhdGVkIHRvIG5vdAorICAgICAgICAjIGV4aXN0aW5nLCBsZXQgdGhhdCBleGNlcHRpb24gcHJvcGFnYXRlLgorICAgICAgICAjIGlzc3VlMTUzMTYKKyAgICAgICAgbW9kID0gaW1wLm5ld19tb2R1bGUoJ2ZpbmUnKQorICAgICAgICBtb2QuX19wYXRoX18gPSBbJ1hYWCddCisgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtCYWRMb2FkZXJGaW5kZXJdKToKKyAgICAgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC51bmNhY2hlKCdmaW5lJyk6CisgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2ZpbmUnXSA9IG1vZAorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB1dGlsLmltcG9ydF8oJ2ZpbmUnLCBmcm9tbGlzdD1bJ2JvZ3VzJ10pCisKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdChBUElUZXN0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkKaW5kZXggNDhkYzY0My4uYmY2ODAyNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CkBAIC0zNCw4ICszNCw5IEBACiAgICAgICAgIG5hbWUgPSAndXNpbmdfTm9uZScKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IE5vbmUKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XyhuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiBjcmVhdGVfbW9jayhzZWxmLCAqbmFtZXMsIHJldHVybl89Tm9uZSk6CiAgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygqbmFtZXMpCkBAIC02NCw3ICs2NSw4IEBACiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdtb2R1bGUnKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaWQobW9kdWxlLm1vZHVsZSksIGlkKHN5cy5tb2R1bGVzWydwa2cubW9kdWxlJ10pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQobW9kdWxlLm1vZHVsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzeXMubW9kdWxlc1sncGtnLm1vZHVsZSddKSkKIAogICAgICMgU2VlIHRlc3RfdXNpbmdfY2FjaGVfYWZ0ZXJfbG9hZGVyKCkgZm9yIHJlYXNvbmluZy4KICAgICBAaW1wb3J0X3V0aWwuaW1wb3J0bGliX29ubHkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKc2ltaWxhcml0eSBpbmRleCA4NSUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CmluZGV4IGI5MDNlOGUuLjI4MTk2MWQgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CkBAIC0xLDYgKzEsNyBAQAogIiIiVGVzdCB0aGF0IHRoZSBzZW1hbnRpY3MgcmVsYXRpbmcgdG8gdGhlICdmcm9tbGlzdCcgYXJndW1lbnQgYXJlIGNvcnJlY3QuIiIiCiBmcm9tIC4uIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKK2ltcG9ydCBpbXAKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBSZXR1cm5WYWx1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zOCwxMSArMzksOSBAQAogICAgIFtvYmplY3QgY2FzZV0uIFRoaXMgaXMgZXZlbiB0cnVlIGlmIHRoZSBvYmplY3QgZG9lcyBub3QgZXhpc3QgW2JhZCBvYmplY3RdLgogCiAgICAgSWYgYSBwYWNrYWdlIGlzIGJlaW5nIGltcG9ydGVkLCB0aGVuIHdoYXQgaXMgbGlzdGVkIGluIGZyb21saXN0IG1heSBiZQotICAgIHRyZWF0ZWQgYXMgYSBtb2R1bGUgdG8gYmUgaW1wb3J0ZWQgW21vZHVsZV0uIEJ1dCBvbmNlIGFnYWluLCBldmVuIGlmCi0gICAgc29tZXRoaW5nIGluIGZyb21saXN0IGRvZXMgbm90IGV4aXN0IGFzIGEgbW9kdWxlLCBubyBlcnJvciBpcyB0aHJvd24KLSAgICBbbm8gbW9kdWxlXS4gQW5kIHRoaXMgZXh0ZW5kcyB0byB3aGF0IGlzIGNvbnRhaW5lZCBpbiBfX2FsbF9fIHdoZW4gJyonIGlzCi0gICAgaW1wb3J0ZWQgW3VzaW5nICpdLiBBbmQgJyonIGRvZXMgbm90IG5lZWQgdG8gYmUgdGhlIG9ubHkgbmFtZSBpbiB0aGUKLSAgICBmcm9tbGlzdCBbdXNpbmcgKiB3aXRoIG90aGVyc10uCisgICAgdHJlYXRlZCBhcyBhIG1vZHVsZSB0byBiZSBpbXBvcnRlZCBbbW9kdWxlXS4gQW5kIHRoaXMgZXh0ZW5kcyB0byB3aGF0IGlzCisgICAgY29udGFpbmVkIGluIF9fYWxsX18gd2hlbiAnKicgaXMgaW1wb3J0ZWQgW3VzaW5nICpdLiBBbmQgJyonIGRvZXMgbm90IG5lZWQKKyAgICB0byBiZSB0aGUgb25seSBuYW1lIGluIHRoZSBmcm9tbGlzdCBbdXNpbmcgKiB3aXRoIG90aGVyc10uCiAKICAgICAiIiIKIApAQCAtNzAsMTQgKzY5LDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdtb2R1bGUnKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5tb2R1bGUuX19uYW1lX18sICdwa2cubW9kdWxlJykKIAotICAgIGRlZiB0ZXN0X25vX21vZHVsZV9mcm9tX3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgW25vIG1vZHVsZV0KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJykgYXMgaW1wb3J0ZXI6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cnLCBmcm9tbGlzdD0nbm9uX2V4aXN0ZW50JykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBoYXNhdHRyKG1vZHVsZSwgJ25vbl9leGlzdGVudCcpKQotCiAgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZCcpIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKc2ltaWxhcml0eSBpbmRleCA4MCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKaW5kZXggM2IxMzBjOS4uNGQ4NWY4MCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weQpAQCAtMSw3ICsxLDEwIEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKK2ltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAoraW1wb3J0IHN5cwogZnJvbSB0eXBlcyBpbXBvcnQgTWV0aG9kVHlwZQogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIAogCiBjbGFzcyBDYWxsaW5nT3JkZXIodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMzMsNiArMzYsMjEgQEAKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtmaXJzdCwgc2Vjb25kXSk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRfdXRpbC5pbXBvcnRfKG1vZF9uYW1lKSwgNDIpCiAKKyAgICBkZWYgdGVzdF9lbXB0eShzZWxmKToKKyAgICAgICAgIyBSYWlzZSBhbiBJbXBvcnRXYXJuaW5nIGlmIHN5cy5tZXRhX3BhdGggaXMgZW1wdHkuCisgICAgICAgIG1vZHVsZV9uYW1lID0gJ25vdGhpbmcnCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bXSk6CisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fZmluZF9tb2R1bGUoJ25vdGhpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3Wy0xXS5jYXRlZ29yeSwgSW1wb3J0V2FybmluZykpCisKIAogY2xhc3MgQ2FsbFNpZ25hdHVyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY0LDcgKzgyLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhcmdzKSwgMikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihrd2FyZ3MpLCAwKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1swXSwgbW9kX25hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFyZ3NbMV0gaXMgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhcmdzWzFdKQogCiAgICAgZGVmIHRlc3Rfd2l0aF9wYXRoKHNlbGYpOgogICAgICAgICAjIFtwYXRoIHNldF0KQEAgLTg0LDcgKzEwMiw3IEBACiAgICAgICAgICAgICAgICAgIyBBc3N1bWluZyBhbGwgYXJndW1lbnRzIGFyZSBwb3NpdGlvbmFsLgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qga3dhcmdzKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1swXSwgbW9kX25hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFyZ3NbMV0gaXMgcGF0aCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMV0sIHBhdGgpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZhMThkYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQpAQCAtMCwwICsxLDExMiBAQAorZnJvbSAuLiBpbXBvcnQgdXRpbAorZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBpbXBvcnRsaWIKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK2NsYXNzIFBhcmVudE1vZHVsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIkltcG9ydGluZyBhIHN1Ym1vZHVsZSBzaG91bGQgaW1wb3J0IHRoZSBwYXJlbnQgbW9kdWxlcy4iIiIKKworICAgIGRlZiB0ZXN0X2ltcG9ydF9wYXJlbnQoc2VsZik6CisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kdWxlJykgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLm1vZHVsZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncGtnJywgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF9iYWRfcGFyZW50KHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cubW9kdWxlJykgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdwa2cnKQorCisgICAgZGVmIHRlc3RfcmFpc2luZ19wYXJlbnRfYWZ0ZXJfaW1wb3J0aW5nX2NoaWxkKHNlbGYpOgorICAgICAgICBkZWYgX19pbml0X18oKToKKyAgICAgICAgICAgIGltcG9ydCBwa2cubW9kdWxlCisgICAgICAgICAgICAxLzAKKyAgICAgICAgbW9jayA9IHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZHVsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3BrZyc6IF9faW5pdF9ffSkKKyAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwa2cubW9kdWxlJywgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3BrZy5tb2R1bGUnLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X3JhaXNpbmdfcGFyZW50X2FmdGVyX3JlbGF0aXZlX2ltcG9ydGluZ19jaGlsZChzZWxmKToKKyAgICAgICAgZGVmIF9faW5pdF9fKCk6CisgICAgICAgICAgICBmcm9tIC4gaW1wb3J0IG1vZHVsZQorICAgICAgICAgICAgMS8wCisgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2R1bGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eydwa2cnOiBfX2luaXRfX30pCisgICAgICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoWmVyb0RpdmlzaW9uRXJyb3IsIEltcG9ydEVycm9yKSk6CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyByYWlzZXMgSW1wb3J0RXJyb3Igb24gdGhlICJmcm9tIC4gaW1wb3J0IG1vZHVsZSIKKyAgICAgICAgICAgICAgICAgICAgIyBsaW5lLCBub3Qgc3VyZSB3aHkuCisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigncGtnJywgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoWmVyb0RpdmlzaW9uRXJyb3IsIEltcG9ydEVycm9yKSk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgICMgWFhYIEZhbHNlCisgICAgICAgICAgICAgICAgI3NlbGYuYXNzZXJ0SW4oJ3BrZy5tb2R1bGUnLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X3JhaXNpbmdfcGFyZW50X2FmdGVyX2RvdWJsZV9yZWxhdGl2ZV9pbXBvcnRpbmdfY2hpbGQoc2VsZik6CisgICAgICAgIGRlZiBfX2luaXRfXygpOgorICAgICAgICAgICAgZnJvbSAuLnN1YnBrZyBpbXBvcnQgbW9kdWxlCisgICAgICAgICAgICAxLzAKKyAgICAgICAgbW9jayA9IHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1YnBrZy5fX2luaXRfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGtnLnN1YnBrZy5tb2R1bGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eydwa2cuc3VicGtnJzogX19pbml0X199KQorICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFplcm9EaXZpc2lvbkVycm9yLCBJbXBvcnRFcnJvcikpOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgcmFpc2VzIEltcG9ydEVycm9yIG9uIHRoZSAiZnJvbSAuLnN1YnBrZyBpbXBvcnQgbW9kdWxlIgorICAgICAgICAgICAgICAgICAgICAjIGxpbmUsIG5vdCBzdXJlIHdoeS4KKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLnN1YnBrZycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigncGtnLnN1YnBrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFplcm9EaXZpc2lvbkVycm9yLCBJbXBvcnRFcnJvcikpOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cuc3VicGtnLm1vZHVsZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigncGtnLnN1YnBrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgICMgWFhYIEZhbHNlCisgICAgICAgICAgICAgICAgI3NlbGYuYXNzZXJ0SW4oJ3BrZy5zdWJwa2cubW9kdWxlJywgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfbm90X3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgVHJ5IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSBmcm9tIGEgbm9uLXBhY2thZ2Ugc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yLgorICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIoc3lzLCAnX19wYXRoX18nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3N5cy5ub19zdWJtb2R1bGVzX2hlcmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnc3lzLm5vX3N1Ym1vZHVsZXNfaGVyZScpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfbm90X3BhY2thZ2VfYnV0X3NpZGVfZWZmZWN0cyhzZWxmKToKKyAgICAgICAgIyBJZiBhIG1vZHVsZSBpbmplY3RzIHNvbWV0aGluZyBpbnRvIHN5cy5tb2R1bGVzIGFzIGEgc2lkZS1lZmZlY3QsIHRoZW4KKyAgICAgICAgIyBwaWNrIHVwIG9uIHRoYXQgZmFjdC4KKyAgICAgICAgbmFtZSA9ICdtb2QnCisgICAgICAgIHN1Ym5hbWUgPSBuYW1lICsgJy5iJworICAgICAgICBkZWYgbW9kdWxlX2luamVjdGlvbigpOgorICAgICAgICAgICAgc3lzLm1vZHVsZXNbc3VibmFtZV0gPSAndG90YWwgYnVuaycKKyAgICAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX21vZHVsZXMoJ21vZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsnbW9kJzogbW9kdWxlX2luamVjdGlvbn0pCisgICAgICAgIHdpdGggbW9ja19tb2R1bGVzIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XyhzdWJuYW1lKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKHN1Ym5hbWUpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoUGFyZW50TW9kdWxlVGVzdHMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzA4NmNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKQEAgLTAsMCArMSw5OCBAQAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKK2Zyb20gLi4gaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAoraW1wb3J0IGltcAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0eXBlcyBpbXBvcnQgTWV0aG9kVHlwZQoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKKworCitjbGFzcyBGaW5kZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBmb3IgUGF0aEZpbmRlci4iIiIKKworICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CisgICAgICAgICMgVGVzdCBOb25lIHJldHVybmVkIHVwb24gbm90IGZpbmRpbmcgYSBzdWl0YWJsZSBmaW5kZXIuCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpKQorCisgICAgZGVmIHRlc3Rfc3lzX3BhdGgoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoIGlzIHVzZWQgd2hlbiAncGF0aCcgaXMgTm9uZS4KKyAgICAgICAgIyBJbXBsaWNpdGx5IHRlc3RzIHRoYXQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaXMgdXNlZC4KKyAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCisgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCisgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6CisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisKKyAgICBkZWYgdGVzdF9wYXRoKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCAncGF0aCcgaXMgdXNlZCB3aGVuIHNldC4KKyAgICAgICAgIyBJbXBsaWNpdGx5IHRlc3RzIHRoYXQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaXMgdXNlZC4KKyAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCisgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCisgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSk6CisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsIFtwYXRoXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKworICAgIGRlZiB0ZXN0X2VtcHR5X2xpc3Qoc2VsZik6CisgICAgICAgICMgQW4gZW1wdHkgbGlzdCBzaG91bGQgbm90IGNvdW50IGFzIGFza2luZyBmb3Igc3lzLnBhdGguCisgICAgICAgIG1vZHVsZSA9ICdtb2R1bGUnCisgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCisgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZSgnbW9kdWxlJywgW10pKQorCisgICAgZGVmIHRlc3RfcGF0aF9ob29rcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgc3lzLnBhdGhfaG9va3MgaXMgdXNlZC4KKyAgICAgICAgIyBUZXN0IHRoYXQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaXMgc2V0LgorICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKKyAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKKyAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCisgICAgICAgIGhvb2sgPSBpbXBvcnRfdXRpbC5tb2NrX3BhdGhfaG9vayhwYXRoLCBpbXBvcnRlcj1pbXBvcnRlcikKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2hvb2tzPVtob29rXSk6CisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsIFtwYXRoXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdLCBpbXBvcnRlcikKKworICAgIGRlZiB0ZXN0X2VtcHR5X3BhdGhfaG9va3Moc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGlmIHN5cy5wYXRoX2hvb2tzIGlzIGVtcHR5IGEgd2FybmluZyBpcyByYWlzZWQsCisgICAgICAgICMgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgZ2V0cyBOb25lIHNldCwgYW5kIFBhdGhGaW5kZXIgcmV0dXJucyBOb25lLgorICAgICAgICBwYXRoX2VudHJ5ID0gJ2JvZ3VzX3BhdGgnCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17fSwgcGF0aF9ob29rcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoX2VudHJ5XSk6CisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZSgnb3MnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoX2VudHJ5XSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3Wy0xXS5jYXRlZ29yeSwgSW1wb3J0V2FybmluZykpCisKKyAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHNob3VsZCBjcmVhdGUgYSBmaW5kZXIgdXNpbmcgdGhlIGN3ZC4KKyAgICAgICAgcGF0aCA9ICcnCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgaG9vayA9IGltcG9ydF91dGlsLm1vY2tfcGF0aF9ob29rKG9zLmN1cmRpciwgaW1wb3J0ZXI9aW1wb3J0ZXIpCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bcGF0aF0sIHBhdGhfaG9va3M9W2hvb2tdKToKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MuY3VyZGlyLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdChGaW5kZXJUZXN0cykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQppbmRleCBhMGY2YjJkLi40NTY5YzI2IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKQEAgLTE5Myw2ICsxOTMsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAnX19ydW5weV9wa2dfXy51bmNsZS5jb3VzaW4nKQogICAgICAgICBzZWxmLnJlbGF0aXZlX2ltcG9ydF90ZXN0KGNyZWF0ZSwgZ2xvYmFsc18sIGNhbGxiYWNrKQogCisgICAgZGVmIHRlc3RfaW1wb3J0X3JlbGF0aXZlX2ltcG9ydF9ub19mcm9tbGlzdChzZWxmKToKKyAgICAgICAgIyBJbXBvcnQgYSByZWxhdGl2ZSBtb2R1bGUgdy8gbm8gZnJvbWxpc3QuCisgICAgICAgIGNyZWF0ZSA9IFsnY3Jhc2guX19pbml0X18nLCAnY3Jhc2gubW9kJ10KKyAgICAgICAgZ2xvYmFsc18gPSBbeydfX3BhY2thZ2VfXyc6ICdjcmFzaCcsICdfX25hbWVfXyc6ICdjcmFzaCd9XQorICAgICAgICBkZWYgY2FsbGJhY2soZ2xvYmFsXyk6CisgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdjcmFzaCcpCisgICAgICAgICAgICBtb2QgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKCdtb2QnLCBnbG9iYWxfLCB7fSwgW10sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX25hbWVfXywgJ2NyYXNoLm1vZCcpCisgICAgICAgIHNlbGYucmVsYXRpdmVfaW1wb3J0X3Rlc3QoY3JlYXRlLCBnbG9iYWxzXywgY2FsbGJhY2spCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fZ2xvYmFscyhzZWxmKToKKyAgICAgICAgIyBObyBnbG9iYWxzIGZvciBhIHJlbGF0aXZlIGltcG9ydCBpcyBhbiBlcnJvci4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdzeXMnLCBsZXZlbD0xKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3V0aWwucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdXRpbC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy91dGlsLnB5CmluZGV4IDY0OWM1ZWQuLjg2YWMwNjUgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy91dGlsLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwCiBpbXBvcnQgdW5pdHRlc3QKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1YmUxMWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weQpAQCAtMCwwICsxLDE3IEBACisiIiJSdW4gUHl0aG9uJ3Mgc3RhbmRhcmQgdGVzdCBzdWl0ZSB1c2luZyBpbXBvcnRsaWIuX19pbXBvcnRfXy4KKworVGVzdHMga25vd24gdG8gZmFpbCBiZWNhdXNlIG9mIGFzc3VtcHRpb25zIHRoYXQgaW1wb3J0bGliIChwcm9wZXJseSkKK2ludmFsaWRhdGVzIGFyZSBhdXRvbWF0aWNhbGx5IHNraXBwZWQgaWYgdGhlIGVudGlyZSB0ZXN0IHN1aXRlIGlzIHJ1bi4KK090aGVyd2lzZSBhbGwgY29tbWFuZC1saW5lIG9wdGlvbnMgdmFsaWQgZm9yIHRlc3QucmVncnRlc3QgYXJlIGFsc28gdmFsaWQgZm9yCit0aGlzIHNjcmlwdC4KKworIiIiCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRsaWIuX19pbXBvcnRfXworICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNsZWFyKCkKKworICAgIHJlZ3J0ZXN0Lm1haW4ocXVpZXQ9VHJ1ZSwgdmVyYm9zZTI9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA2NyUKY29weSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKY29weSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvX19pbml0X18ucHkKaW5kZXggOGQ3YzQ5ZC4uM2VmOTdmMyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvX19pbml0X18ucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAorZnJvbSAuLiBpbXBvcnQgdGVzdF9zdWl0ZQogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CiAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5zb3VyY2UnLCBkaXJlY3RvcnkpCisgICAgcmV0dXJuIHRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfYWJjX2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKaW5kZXggMzI0NTkwNy4uMGQ5MTJiNiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfYWJjX2xvYWRlci5weQpAQCAtMzIsNiArMzIsOSBAQAogICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoCiAKKyAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgcmV0dXJuICc8bW9kdWxlPicKKwogCiBjbGFzcyBTb3VyY2VMb2FkZXJNb2NrKFNvdXJjZU9ubHlMb2FkZXJNb2NrKToKIApAQCAtNDAsOCArNDMsMTAgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgbWFnaWM9aW1wLmdldF9tYWdpYygpKToKICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXRoKQogICAgICAgICBzZWxmLmJ5dGVjb2RlX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5wYXRoKQorICAgICAgICBzZWxmLnNvdXJjZV9zaXplID0gbGVuKHNlbGYuc291cmNlKQogICAgICAgICBkYXRhID0gYnl0ZWFycmF5KG1hZ2ljKQotICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLl93X2xvbmcoc2VsZi5zb3VyY2VfbXRpbWUpKQorICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLnNvdXJjZV9tdGltZSkpCisgICAgICAgIGRhdGEuZXh0ZW5kKGltcG9ydGxpYi5fd19sb25nKHNlbGYuc291cmNlX3NpemUpKQogICAgICAgICBjb2RlX29iamVjdCA9IGNvbXBpbGUoc2VsZi5zb3VyY2UsIHNlbGYucGF0aCwgJ2V4ZWMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X2luaGVyaXQ9VHJ1ZSkKICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlX29iamVjdCkpCkBAIC01Niw5ICs2MSw5IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCiAKLSAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKKyAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKICAgICAgICAgYXNzZXJ0IHBhdGggPT0gc2VsZi5wYXRoCi0gICAgICAgIHJldHVybiBzZWxmLnNvdXJjZV9tdGltZQorICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYuc291cmNlX210aW1lLCAnc2l6ZSc6IHNlbGYuc291cmNlX3NpemV9CiAKICAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6CiAgICAgICAgIHNlbGYud3JpdHRlbltwYXRoXSA9IGJ5dGVzKGRhdGEpCkBAIC0xMDIsOSArMTA3LDEyIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCiAgICAgICAgICAgICBwYXRoID0gc3VwZXIoKS5nZXRfZmlsZW5hbWUobmFtZSkKICAgICAgICAgICAgIGFzc2VydCBsZW4odykgPT0gMQotICAgICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHJldHVybiBwYXRoCiAKKyAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZik6CisgICAgICAgIHJldHVybiAnPG1vZHVsZT4nCisKIAogY2xhc3MgUHlMb2FkZXJDb21wYXRNb2NrKFB5TG9hZGVyTW9jayk6CiAKQEAgLTE0NiwxMSArMTU0LDEyIEBACiAgICAgICAgICAgICBzZWxmLmJ5dGVjb2RlX3RvX3BhdGhbbmFtZV0gPSBkYXRhWydwYXRoJ10KICAgICAgICAgICAgIG1hZ2ljID0gZGF0YS5nZXQoJ21hZ2ljJywgaW1wLmdldF9tYWdpYygpKQogICAgICAgICAgICAgbXRpbWUgPSBpbXBvcnRsaWIuX3dfbG9uZyhkYXRhLmdldCgnbXRpbWUnLCBzZWxmLmRlZmF1bHRfbXRpbWUpKQorICAgICAgICAgICAgc291cmNlX3NpemUgPSBpbXBvcnRsaWIuX3dfbG9uZyhsZW4oc2VsZi5zb3VyY2UpICYgMHhGRkZGRkZGRikKICAgICAgICAgICAgIGlmICdiYycgaW4gZGF0YToKICAgICAgICAgICAgICAgICBiYyA9IGRhdGFbJ2JjJ10KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYmMgPSBzZWxmLmNvbXBpbGVfYmMobmFtZSkKLSAgICAgICAgICAgIHNlbGYubW9kdWxlX2J5dGVjb2RlW25hbWVdID0gbWFnaWMgKyBtdGltZSArIGJjCisgICAgICAgICAgICBzZWxmLm1vZHVsZV9ieXRlY29kZVtuYW1lXSA9IG1hZ2ljICsgbXRpbWUgKyBzb3VyY2Vfc2l6ZSArIGJjCiAKICAgICBkZWYgY29tcGlsZV9iYyhzZWxmLCBuYW1lKToKICAgICAgICAgc291cmNlX3BhdGggPSBzZWxmLm1vZHVsZV9wYXRocy5nZXQobmFtZSwgJzx0ZXN0PicpIG9yICc8dGVzdD4nCkBAIC0xOTgsNyArMjA3LDcgQEAKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIikKICAgICAgICAgICAgIGNvZGVfb2JqZWN0ID0gc3VwZXIoKS5nZXRfY29kZShuYW1lKQogICAgICAgICAgICAgYXNzZXJ0IGxlbih3KSA9PSAxCi0gICAgICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgcmV0dXJuIGNvZGVfb2JqZWN0CiAKIGNsYXNzIFB5TG9hZGVyVGVzdHModGVzdGluZ19hYmMuTG9hZGVyVGVzdHMpOgpAQCAtMjE5LDcgKzIyOCw3IEBACiAgICAgICAgIG1vY2sgPSBzZWxmLm1vY2tlcih7bmFtZTogcGF0aH0pCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gc3lzLm1vZHVsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHN5cy5tb2R1bGVzKQogICAgICAgICBzZWxmLmVxX2F0dHJzKG1vZHVsZSwgX19uYW1lX189bmFtZSwgX19maWxlX189cGF0aCwgX19wYWNrYWdlX189JycsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvYWRlcl9fPW1vY2spCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpKQpAQCAtMjMxLDcgKzI0MCw3IEBACiAgICAgICAgIG1vY2sgPSBzZWxmLm1vY2tlcih7bmFtZTogcGF0aH0pCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gc3lzLm1vZHVsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHN5cy5tb2R1bGVzKQogICAgICAgICBzZWxmLmVxX2F0dHJzKG1vZHVsZSwgX19uYW1lX189bmFtZSwgX19maWxlX189cGF0aCwKICAgICAgICAgICAgICAgICBfX3BhdGhfXz1bb3MucGF0aC5kaXJuYW1lKHBhdGgpXSwgX19wYWNrYWdlX189bmFtZSwKICAgICAgICAgICAgICAgICBfX2xvYWRlcl9fPW1vY2spCkBAIC0yNTcsOCArMjY2LDggQEAKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgbG9hZGVkX21vZHVsZSA9IG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZWRfbW9kdWxlIGlzIG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzeXMubW9kdWxlc1tuYW1lXSBpcyBtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlZF9tb2R1bGUsIG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLm1vZHVsZXNbbmFtZV0sIG1vZHVsZSkKICAgICAgICAgcmV0dXJuIG1vY2ssIG5hbWUKIAogICAgIGRlZiB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUoc2VsZik6CkBAIC0yNzEsNyArMjgwLDcgQEAKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKICAgICAgICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLm1vZHVsZXNbbmFtZV0gaXMgbW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMubW9kdWxlc1tuYW1lXSwgbW9kdWxlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnYmxhaCcpKQogICAgICAgICByZXR1cm4gbW9jawogCkBAIC0yODIsNyArMjkxLDcgQEAKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKICAgICAgICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobmFtZSBub3QgaW4gc3lzLm1vZHVsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIHN5cy5tb2R1bGVzKQogICAgICAgICByZXR1cm4gbW9jawogCiAKQEAgLTM0Miw3ICszNTEsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWdpYywgaW1wLmdldF9tYWdpYygpKQogICAgICAgICBtdGltZSA9IGltcG9ydGxpYi5fcl9sb25nKG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzQ6OF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXRpbWUsIDEpCi0gICAgICAgIGJjID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bODpdCisgICAgICAgIHNvdXJjZV9zaXplID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bODoxMl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9jay5zb3VyY2UpICYgMHhGRkZGRkZGRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIuX3JfbG9uZyhzb3VyY2Vfc2l6ZSkpCisgICAgICAgIGJjID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bMTI6XQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLCBtb2NrLmNvbXBpbGVfYmMobmFtZSkpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CkBAIC00MTIsOCArNDI0LDcgQEAKICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBkb250X3dyaXRlX2J5dGVjb2RlCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoKG5hbWUgaW4gbW9jay5tb2R1bGVfYnl0ZWNvZGUpIGlzIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgZG9udF93cml0ZV9ieXRlY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChuYW1lIGluIG1vY2subW9kdWxlX2J5dGVjb2RlLCBkb250X3dyaXRlX2J5dGVjb2RlKQogCiAgICAgZGVmIHRlc3Rfbm9fYnl0ZWNvZGVfd3JpdHRlbihzZWxmKToKICAgICAgICAgc2VsZi5ydW5fdGVzdChUcnVlKQpAQCAtNDM4LDcgKzQ0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hZ2ljJzogYmFkX21hZ2ljfX0pCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobmFtZSBpbiBtb2NrLm1vZHVsZV9ieXRlY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBtb2NrLm1vZHVsZV9ieXRlY29kZSkKICAgICAgICAgbWFnaWMgPSBtb2NrLm1vZHVsZV9ieXRlY29kZVtuYW1lXVs6NF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWdpYywgaW1wLmdldF9tYWdpYygpKQogCkBAIC00NTEsNyArNDYyLDcgQEAKICAgICAgICAgICAgICAgICB7bmFtZTogeydwYXRoJzogJ3BhdGgvdG8vbW9kLmJ5dGVjb2RlJywgJ210aW1lJzogb2xkX210aW1lfX0pCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobmFtZSBpbiBtb2NrLm1vZHVsZV9ieXRlY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBtb2NrLm1vZHVsZV9ieXRlY29kZSkKICAgICAgICAgbXRpbWUgPSBpbXBvcnRsaWIuX3JfbG9uZyhtb2NrLm1vZHVsZV9ieXRlY29kZVtuYW1lXVs0OjhdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG10aW1lLCBQeVB5Y0xvYWRlck1vY2suZGVmYXVsdF9tdGltZSkKIApAQCAtNDY5LDggKzQ4MCw5IEBACiAgICAgICAgICAgICAgICAgeydwYXRoJzogb3MucGF0aC5qb2luKCdwYXRoJywgJ3RvJywgJ21vZCcpLAogICAgICAgICAgICAgICAgICAnbWFnaWMnOiBiYWRfbWFnaWN9fQogICAgICAgICBtb2NrID0gUHlQeWNMb2FkZXJNb2NrKHtuYW1lOiBOb25lfSwgYmMpCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG5hbWUpCiAKICAgICBkZWYgdGVzdF9ub19ieXRlY29kZShzZWxmKToKICAgICAgICAgIyBNaXNzaW5nIGNvZGUgb2JqZWN0IGJ5dGVjb2RlIHNob3VsZCBsZWFkIHRvIGFuIEVPRkVycm9yLgpAQCAtNTE0LDggKzUyNiw5IEBACiAgICAgICAgICMgSWYgYWxsICpfcGF0aCBtZXRob2RzIHJldHVybiBOb25lLCByYWlzZSBJbXBvcnRFcnJvci4KICAgICAgICAgbmFtZSA9ICdtb2QnCiAgICAgICAgIG1vY2sgPSBQeVB5Y0xvYWRlck1vY2soe25hbWU6IE5vbmV9KQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCiAgICAgZGVmIHRlc3Rfc291cmNlX3BhdGhfSW1wb3J0RXJyb3Ioc2VsZik6CiAgICAgICAgICMgQW4gSW1wb3J0RXJyb3IgZnJvbSBzb3VyY2VfcGF0aCBzaG91bGQgdHJpZ2dlciBhbiBJbXBvcnRFcnJvci4KQEAgLTUzMSw3ICs1NDQsNyBAQAogICAgICAgICBtb2NrID0gUHlQeWNMb2FkZXJNb2NrKHtuYW1lOiBvcy5wYXRoLmpvaW4oJ3BhdGgnLCAndG8nLCAnbW9kJyl9KQogICAgICAgICBiYWRfbWV0aCA9IHR5cGVzLk1ldGhvZFR5cGUocmFpc2VfSW1wb3J0RXJyb3IsIG1vY2spCiAgICAgICAgIG1vY2suYnl0ZWNvZGVfcGF0aCA9IGJhZF9tZXRoCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCiAKIApAQCAtNTkyLDE1ICs2MDUsMTcgQEAKICAgICAgICAgZGVmIHJhaXNlX0lPRXJyb3IocGF0aCk6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCiAgICAgICAgIHNlbGYubG9hZGVyLmdldF9kYXRhID0gcmFpc2VfSU9FcnJvcgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzZWxmLmxvYWRlci5nZXRfc291cmNlKHNlbGYubmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgc2VsZi5uYW1lKQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKICAgICAgICAgIyBQcm9wZXJseSBkZXRlY3Qgd2hlbiBsb2FkaW5nIGEgcGFja2FnZS4KLSAgICAgICAgc2VsZi5zZXRVcChpc19wYWNrYWdlPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKHNlbGYubmFtZSkpCiAgICAgICAgIHNlbGYuc2V0VXAoaXNfcGFja2FnZT1GYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKHNlbGYubmFtZSkpCisgICAgICAgIHNlbGYuc2V0VXAoaXNfcGFja2FnZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2Uoc2VsZi5uYW1lICsgJy5fX2luaXRfXycpKQogCiAgICAgZGVmIHRlc3RfZ2V0X2NvZGUoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoZSBjb2RlIG9iamVjdCBpcyBjcmVhdGVkLgpAQCAtNjE1LDcgKzYzMCw3IEBACiAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRlci5sb2FkX21vZHVsZShzZWxmLm5hbWUpCiAgICAgICAgICAgICBzZWxmLnZlcmlmeV9tb2R1bGUobW9kdWxlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYXRoX18sIFtvcy5wYXRoLmRpcm5hbWUoc2VsZi5wYXRoKV0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5uYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm5hbWUsIHN5cy5tb2R1bGVzKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9zZXR0aW5ncyhzZWxmKToKICAgICAgICAgIyBfX3BhY2thZ2VfXyBuZWVkcyB0byBiZSBzZXQsIHdoaWxlIF9fcGF0aF9fIGlzIHNldCBvbiBpZiB0aGUgbW9kdWxlCkBAIC02NTYsNyArNjcxLDggQEAKICAgICAgICAgaWYgYnl0ZWNvZGVfd3JpdHRlbjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5jYWNoZWQsIHNlbGYubG9hZGVyLndyaXR0ZW4pCiAgICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KGltcC5nZXRfbWFnaWMoKSkKLSAgICAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuX3dfbG9uZyhzZWxmLmxvYWRlci5zb3VyY2VfbXRpbWUpKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoaW1wb3J0bGliLl93X2xvbmcoc2VsZi5sb2FkZXIuc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKGltcG9ydGxpYi5fd19sb25nKHNlbGYubG9hZGVyLnNvdXJjZV9zaXplKSkKICAgICAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZV9vYmplY3QpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRlci53cml0dGVuW3NlbGYuY2FjaGVkXSwgYnl0ZXMoZGF0YSkpCiAKQEAgLTc2MiwxNyArNzc4LDMxIEBACiAgICAgICAgIGV4cGVjdCA9IGlvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoTm9uZSwgVHJ1ZSkuZGVjb2RlKHNvdXJjZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmdldF9zb3VyY2UobmFtZSksIGV4cGVjdCkKIAorCiBjbGFzcyBBYnN0cmFjdE1ldGhvZEltcGxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAiIiJUZXN0IHRoZSBjb25jcmV0ZSBhYnN0cmFjdG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMuIiIiCiAKKyAgICBjbGFzcyBNZXRhUGF0aEZpbmRlcihhYmMuTWV0YVBhdGhGaW5kZXIpOgorICAgICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgorICAgICAgICAgICAgc3VwZXIoKS5maW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aCkKKworICAgIGNsYXNzIFBhdGhFbnRyeUZpbmRlcihhYmMuUGF0aEVudHJ5RmluZGVyKToKKyAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIF8pOgorICAgICAgICAgICAgc3VwZXIoKS5maW5kX21vZHVsZShfKQorCisgICAgICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBfKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9sb2FkZXIoXykKKworICAgIGNsYXNzIEZpbmRlcihhYmMuRmluZGVyKToKKyAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGgpCisKICAgICBjbGFzcyBMb2FkZXIoYWJjLkxvYWRlcik6CiAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICAgICBzdXBlcigpLmxvYWRfbW9kdWxlKGZ1bGxuYW1lKQotCi0gICAgY2xhc3MgRmluZGVyKGFiYy5GaW5kZXIpOgotICAgICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgXyk6Ci0gICAgICAgICAgICBzdXBlcigpLmZpbmRfbW9kdWxlKF8pCisgICAgICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmLCBtb2R1bGUpOgorICAgICAgICAgICAgc3VwZXIoKS5tb2R1bGVfcmVwcihtb2R1bGUpCiAKICAgICBjbGFzcyBSZXNvdXJjZUxvYWRlcihMb2FkZXIsIGFiYy5SZXNvdXJjZUxvYWRlcik6CiAgICAgICAgIGRlZiBnZXRfZGF0YShzZWxmLCBfKToKQEAgLTg0Nyw3ICs4NzcsNyBAQAogICAgICAgICAjIFJlcXVpcmVkIGFic3RyYWN0bWV0aG9kcy4KICAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihpbnMsICdnZXRfZmlsZW5hbWUnLCAnZ2V0X2RhdGEnKQogICAgICAgICAjIE9wdGlvbmFsIGFic3RyYWN0bWV0aG9kcy4KLSAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihpbnMsJ3BhdGhfbXRpbWUnLCAnc2V0X2RhdGEnKQorICAgICAgICBzZWxmLnJhaXNlc19Ob3RJbXBsZW1lbnRlZEVycm9yKGlucywncGF0aF9zdGF0cycsICdzZXRfZGF0YScpCiAKICAgICBkZWYgdGVzdF9QeUxvYWRlcihzZWxmKToKICAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihzZWxmLlB5TG9hZGVyKCksICdzb3VyY2VfcGF0aCcsCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKc2ltaWxhcml0eSBpbmRleCA3NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggNzM3NzdkZS4uMjQxMTczZiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtMSw3ICsxLDkgQEAKICIiIlRlc3QgY2FzZS1zZW5zaXRpdml0eSAoUEVQIDIzNSkuIiIiCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCitpbXBvcnQgaW1wCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCBhcyB0ZXN0X3N1cHBvcnQKQEAgLTE5LDkgKzIxLDExIEBACiAgICAgYXNzZXJ0IG5hbWUgIT0gbmFtZS5sb3dlcigpCiAKICAgICBkZWYgZmluZChzZWxmLCBwYXRoKToKLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcihwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX1NvdXJjZUZpbmRlckRldGFpbHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VsZXNzRmluZGVyRGV0YWlscygpKQorICAgICAgICBmaW5kZXIgPSBtYWNoaW5lcnkuRmlsZUZpbmRlcihwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFUykpCiAgICAgICAgIHJldHVybiBmaW5kZXIuZmluZF9tb2R1bGUoc2VsZi5uYW1lKQogCiAgICAgZGVmIHNlbnNpdGl2aXR5X3Rlc3Qoc2VsZik6CkBAIC0zNyw2ICs0MSw5IEBACiAgICAgZGVmIHRlc3Rfc2Vuc2l0aXZlKHNlbGYpOgogICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnVuc2V0KCdQWVRIT05DQVNFT0snKQorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIHNlbnNpdGl2ZSwgaW5zZW5zaXRpdmUgPSBzZWxmLnNlbnNpdGl2aXR5X3Rlc3QoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2Vuc2l0aXZlLCAnbG9hZF9tb2R1bGUnKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5uYW1lLCBzZW5zaXRpdmUuZ2V0X2ZpbGVuYW1lKHNlbGYubmFtZSkpCkBAIC00NSw2ICs1Miw5IEBACiAgICAgZGVmIHRlc3RfaW5zZW5zaXRpdmUoc2VsZik6CiAgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYuc2V0KCdQWVRIT05DQVNFT0snLCAnMScpCisgICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIHNlbnNpdGl2ZSwgaW5zZW5zaXRpdmUgPSBzZWxmLnNlbnNpdGl2aXR5X3Rlc3QoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2Vuc2l0aXZlLCAnbG9hZF9tb2R1bGUnKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5uYW1lLCBzZW5zaXRpdmUuZ2V0X2ZpbGVuYW1lKHNlbGYubmFtZSkpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CmluZGV4IGM3YTdkOGYuLjkwZjlkMzAgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQpAQCAtMSw1ICsxLDYgQEAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBpbXBvcnRsaWIKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitpbXBvcnQgaW1wb3J0bGliLmFiYwogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4uIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKQEAgLTI0LDEyICsyNSw0OCBAQAogCiAgICAgIiIiCiAKKyAgICBkZWYgdGVzdF9sb2FkX21vZHVsZV9BUEkoc2VsZik6CisgICAgICAgICMgSWYgZnVsbG5hbWUgaXMgbm90IHNwZWNpZmllZCB0aGF0IGFzc3VtZSBzZWxmLm5hbWUgaXMgZGVzaXJlZC4KKyAgICAgICAgY2xhc3MgVGVzdGVyTWl4aW4oaW1wb3J0bGliLmFiYy5Mb2FkZXIpOgorICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKTogcmV0dXJuIGZ1bGxuYW1lCisgICAgICAgICAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKTogcmV0dXJuICc8bW9kdWxlPicKKworICAgICAgICBjbGFzcyBUZXN0ZXIoaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyLCBUZXN0ZXJNaXhpbik6CisgICAgICAgICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgXyk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBfKTogcGFzcworCisgICAgICAgIG5hbWUgPSAnbW9kX25hbWUnCisgICAgICAgIGxvYWRlciA9IFRlc3RlcihuYW1lLCAnc29tZV9wYXRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBsb2FkZXIubG9hZF9tb2R1bGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBsb2FkZXIubG9hZF9tb2R1bGUoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShsb2FkZXIubmFtZSArICdYWFgnKQorCisgICAgZGVmIHRlc3RfZ2V0X2ZpbGVuYW1lX0FQSShzZWxmKToKKyAgICAgICAgIyBJZiBmdWxsbmFtZSBpcyBub3Qgc2V0IHRoZW4gYXNzdW1lIHNlbGYucGF0aCBpcyBkZXNpcmVkLgorICAgICAgICBjbGFzcyBUZXN0ZXIoaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyKToKKyAgICAgICAgICAgIGRlZiBnZXRfY29kZShzZWxmLCBfKTogcGFzcworICAgICAgICAgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgXyk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgXyk6IHBhc3MKKworICAgICAgICBwYXRoID0gJ3NvbWVfcGF0aCcKKyAgICAgICAgbmFtZSA9ICdzb21lX25hbWUnCisgICAgICAgIGxvYWRlciA9IFRlc3RlcihuYW1lLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGgsIGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0aCwgbG9hZGVyLmdldF9maWxlbmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGgsIGxvYWRlci5nZXRfZmlsZW5hbWUoTm9uZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgbG9hZGVyLmdldF9maWxlbmFtZShuYW1lICsgJ1hYWCcpCisKICAgICAjIFtiYXNpY10KICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX3RlbXAnIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignX3RlbXAnLCBzeXMubW9kdWxlcykKICAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfdGVtcCcsICdfX2ZpbGVfXyc6IG1hcHBpbmdbJ190ZW1wJ10sCiAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnJ30KICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBjaGVjay5pdGVtcygpOgpAQCAtMzcsMTAgKzc0LDEwIEBACiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfcGtnLl9faW5pdF9fJykgYXMgbWFwcGluZzoKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ19wa2cnLAorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ19wa2cnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbJ19wa2cuX19pbml0X18nXSkKICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3BrZycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ19wa2cnIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignX3BrZycsIHN5cy5tb2R1bGVzKQogICAgICAgICAgICAgY2hlY2sgPSB7J19fbmFtZV9fJzogJ19wa2cnLCAnX19maWxlX18nOiBtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10sCiAgICAgICAgICAgICAgICAgICAgICAnX19wYXRoX18nOiBbb3MucGF0aC5kaXJuYW1lKG1hcHBpbmdbJ19wa2cuX19pbml0X18nXSldLAogICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJ19wa2cnfQpAQCAtNTAsMTAgKzg3LDEwIEBACiAKICAgICBkZWYgdGVzdF9sYWNraW5nX3BhcmVudChzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycsICdfcGtnLm1vZCcpYXMgbWFwcGluZzoKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ19wa2cubW9kJywKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnLm1vZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1snX3BrZy5tb2QnXSkKICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3BrZy5tb2QnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdfcGtnLm1vZCcgaW4gc3lzLm1vZHVsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdfcGtnLm1vZCcsIHN5cy5tb2R1bGVzKQogICAgICAgICAgICAgY2hlY2sgPSB7J19fbmFtZV9fJzogJ19wa2cubW9kJywgJ19fZmlsZV9fJzogbWFwcGluZ1snX3BrZy5tb2QnXSwKICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfcGtnJ30KICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBjaGVjay5pdGVtcygpOgpAQCAtNjUsMTkgKzEwMiwxNCBAQAogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCiAgICAgICAgICAgICBtb2R1bGVfaWQgPSBpZChtb2R1bGUpCiAgICAgICAgICAgICBtb2R1bGVfZGljdF9pZCA9IGlkKG1vZHVsZS5fX2RpY3RfXykKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nWydfdGVtcCddLCAndycpIGFzIGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZSgidGVzdGluZ192YXIgPSA0MlxuIikKLSAgICAgICAgICAgICMgRm9yIGZpbGVzeXN0ZW1zIHdoZXJlIHRoZSBtdGltZSBpcyBvbmx5IHRvIGEgc2Vjb25kIGdyYW51bGFyaXR5LAotICAgICAgICAgICAgIyBldmVyeXRoaW5nIHRoYXQgaGFzIGhhcHBlbmVkIGFib3ZlIGNhbiBiZSB0b28gZmFzdDsKLSAgICAgICAgICAgICMgZm9yY2UgYW4gbXRpbWUgb24gdGhlIHNvdXJjZSB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgZGlmZmVyZW50Ci0gICAgICAgICAgICAjIHRoYW4gdGhlIG9yaWdpbmFsIG10aW1lLgotICAgICAgICAgICAgbG9hZGVyLnBhdGhfbXRpbWUgPSBzZWxmLmZha2VfbXRpbWUobG9hZGVyLnBhdGhfbXRpbWUpCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdGluZ192YXInIGluIG1vZHVsZS5fX2RpY3RfXywKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Rlc3RpbmdfdmFyJywgbW9kdWxlLl9fZGljdF9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdGluZ192YXInIG5vdCBpbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInswfSIuZm9ybWF0KGxpc3QobW9kdWxlLl9fZGljdF9fLmtleXMoKSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUsIHN5cy5tb2R1bGVzWydfdGVtcCddKQpAQCAtOTUsNyArMTI3LDcgQEAKICAgICAgICAgICAgICAgICBzZXRhdHRyKG9yaWdfbW9kdWxlLCBhdHRyLCB2YWx1ZSkKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nW25hbWVdLCAndycpIGFzIGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZSgnKysrIGJhZCBzeW50YXggKysrJykKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKICAgICAgICAgICAgIGZvciBhdHRyIGluIGF0dHJpYnV0ZXM6CkBAIC0xMDYsMTAgKzEzOCwxMCBAQAogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1snX3RlbXAnXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoJz0nKQotICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgogICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdfdGVtcCcgbm90IGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignX3RlbXAnLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiB0ZXN0X2ZpbGVfZnJvbV9lbXB0eV9zdHJpbmdfZGlyKHNlbGYpOgogICAgICAgICAjIExvYWRpbmcgYSBtb2R1bGUgZm91bmQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgZW50cnkgb24gc3lzLnBhdGggc2hvdWxkCkBAIC0xMTksNyArMTUxLDcgQEAKICAgICAgICAgICAgIGZpbGUud3JpdGUoIiMgdGVzdCBmaWxlIGZvciBpbXBvcnRsaWIiKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX3RlbXAnKToKLSAgICAgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIGZpbGVfcGF0aCkKKyAgICAgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBmaWxlX3BhdGgpCiAgICAgICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX3BhdGgsIG1vZC5fX2ZpbGVfXykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3BhdGgpLApAQCAtMTQ1LDcgKzE3Nyw3IEBACiAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBnZXRhdHRyKGVycm5vLCAnRU9WRVJGTE9XJywgTm9uZSk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IHNldCBtb2RpZmljYXRpb24gdGltZSB0byBsYXJnZSBpbnRlZ2VyICh7fSkiLmZvcm1hdChlKSkKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICBtb2QgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKICAgICAgICAgICAgICMgU2FuaXR5IGNoZWNrcy4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLl9fY2FjaGVkX18sIGNvbXBpbGVkKQpAQCAtMTU5LDcgKzE5MSw3IEBACiAgICAgZGVmIGltcG9ydF8oc2VsZiwgZmlsZSwgbW9kdWxlX25hbWUpOgogICAgICAgICBsb2FkZXIgPSBzZWxmLmxvYWRlcihtb2R1bGVfbmFtZSwgZmlsZSkKICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKG1vZHVsZV9uYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlX25hbWUgaW4gc3lzLm1vZHVsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlX25hbWUsIHN5cy5tb2R1bGVzKQogCiAgICAgZGVmIG1hbmlwdWxhdGVfYnl0ZWNvZGUoc2VsZiwgbmFtZSwgbWFwcGluZywgbWFuaXB1bGF0b3IsICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1GYWxzZSk6CkBAIC0yMTUsMTAgKzI0NywxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgdGVzdCgnX3RlbXAnLCBtYXBwaW5nLCBiY19wYXRoKQogCisgICAgZGVmIF90ZXN0X3BhcnRpYWxfc2l6ZShzZWxmLCB0ZXN0LCAqLCBkZWxfc291cmNlPUZhbHNlKToKKyAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgYmNfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQorICAgICAgICAgICAgdGVzdCgnX3RlbXAnLCBtYXBwaW5nLCBiY19wYXRoKQorCiAgICAgZGVmIF90ZXN0X25vX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgZmlsZV9wYXRoID0gbWFwcGluZ1snX3RlbXAnXSBpZiBub3QgZGVsX3NvdXJjZSBlbHNlIGJjX3BhdGgKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IpOgpAQCAtMjI3LDE2ICsyNjYsMTggQEAKICAgICBkZWYgX3Rlc3Rfbm9uX2NvZGVfbWFyc2hhbChzZWxmLCAqLCBkZWxfc291cmNlPUZhbHNlKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6OF0gKyBtYXJzaGFsLmR1bXBzKGInYWJjZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdICsgbWFyc2hhbC5kdW1wcyhiJ2FiY2QnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIGZpbGVfcGF0aCA9IG1hcHBpbmdbJ190ZW1wJ10gaWYgbm90IGRlbF9zb3VyY2UgZWxzZSBieXRlY29kZV9wYXRoCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhmaWxlX3BhdGgsICdfdGVtcCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnX3RlbXAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucGF0aCwgYnl0ZWNvZGVfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9iYWRfbWFyc2hhbChzZWxmLCAqLCBkZWxfc291cmNlPUZhbHNlKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6OF0gKyBiJzx0ZXN0PicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzoxMl0gKyBiJzx0ZXN0PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICBmaWxlX3BhdGggPSBtYXBwaW5nWydfdGVtcCddIGlmIG5vdCBkZWxfc291cmNlIGVsc2UgYnl0ZWNvZGVfcGF0aAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvcik6CkBAIC0yNTEsNyArMjkyLDcgQEAKIAogY2xhc3MgU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0KEJhZEJ5dGVjb2RlVGVzdCk6CiAKLSAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyCisgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIKIAogICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9lbXB0eV9maWxlKHNlbGYpOgpAQCAtMjYwLDcgKzMwMSw3IEBACiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRfKG1hcHBpbmdbbmFtZV0sIG5hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oYnl0ZWNvZGVfcGF0aCwgJ3JiJykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgMTIpCiAKICAgICAgICAgc2VsZi5fdGVzdF9lbXB0eV9maWxlKHRlc3QpCiAKQEAgLTI2OCw3ICszMDksNyBAQAogICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBieXRlY29kZV9wYXRoKToKICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhtYXBwaW5nW25hbWVdLCBuYW1lKQogICAgICAgICAgICAgd2l0aCBvcGVuKGJ5dGVjb2RlX3BhdGgsICdyYicpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDEyKQogCiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9tYWdpYyh0ZXN0KQogCkBAIC0yNzksNyArMzIwLDcgQEAKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6CiAgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKICAgICAgICAgICAgIHdpdGggb3BlbihieXRlY29kZV9wYXRoLCAncmInKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCA4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKIAogICAgICAgICBzZWxmLl90ZXN0X21hZ2ljX29ubHkodGVzdCkKIApAQCAtMzAxLDExICszNDIsMjIgQEAKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYmNfcGF0aCk6CiAgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKICAgICAgICAgICAgIHdpdGggb3BlbihiY19wYXRoLCAncmInKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCA4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKIAogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfdGltZXN0YW1wKHRlc3QpCiAKICAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgZGVmIHRlc3RfcGFydGlhbF9zaXplKHNlbGYpOgorICAgICAgICAjIFdoZW4gdGhlIHNpemUgaXMgcGFydGlhbCwgcmVnZW5lcmF0ZSB0aGUgLnB5YywgZWxzZQorICAgICAgICAjIHJhaXNlIEVPRkVycm9yLgorICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBiY19wYXRoKToKKyAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhtYXBwaW5nW25hbWVdLCBuYW1lKQorICAgICAgICAgICAgd2l0aCBvcGVuKGJjX3BhdGgsICdyYicpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDEyKQorCisgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9zaXplKHRlc3QpCisKKyAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3Rfbm9fbWFyc2hhbChzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZXJlIGlzIG9ubHkgdGhlIG1hZ2ljIG51bWJlciBhbmQgdGltZXN0YW1wLCByYWlzZSBFT0ZFcnJvci4KICAgICAgICAgc2VsZi5fdGVzdF9ub19tYXJzaGFsKCkKQEAgLTM2NCwxOSArNDE2LDIzIEBACiAKIGNsYXNzIFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3QoQmFkQnl0ZWNvZGVUZXN0KToKIAotICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZWxlc3NGaWxlTG9hZGVyCisgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyCiAKICAgICBkZWYgdGVzdF9lbXB0eV9maWxlKHNlbGYpOgogICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBieXRlY29kZV9wYXRoKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGJ5dGVjb2RlX3BhdGgsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucGF0aCwgYnl0ZWNvZGVfcGF0aCkKIAogICAgICAgICBzZWxmLl90ZXN0X2VtcHR5X2ZpbGUodGVzdCwgZGVsX3NvdXJjZT1UcnVlKQogCiAgICAgZGVmIHRlc3RfcGFydGlhbF9tYWdpYyhzZWxmKToKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhieXRlY29kZV9wYXRoLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9tYWdpYyh0ZXN0LCBkZWxfc291cmNlPVRydWUpCiAKICAgICBkZWYgdGVzdF9tYWdpY19vbmx5KHNlbGYpOgpAQCAtMzg4LDggKzQ0NCwxMCBAQAogCiAgICAgZGVmIHRlc3RfYmFkX21hZ2ljKHNlbGYpOgogICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBieXRlY29kZV9wYXRoKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGJ5dGVjb2RlX3BhdGgsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucGF0aCwgYnl0ZWNvZGVfcGF0aCkKIAogICAgICAgICBzZWxmLl90ZXN0X2JhZF9tYWdpYyh0ZXN0LCBkZWxfc291cmNlPVRydWUpCiAKQEAgLTQwMCw2ICs0NTgsMTMgQEAKIAogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfdGltZXN0YW1wKHRlc3QsIGRlbF9zb3VyY2U9VHJ1ZSkKIAorICAgIGRlZiB0ZXN0X3BhcnRpYWxfc2l6ZShzZWxmKToKKyAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF8oYnl0ZWNvZGVfcGF0aCwgbmFtZSkKKworICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfc2l6ZSh0ZXN0LCBkZWxfc291cmNlPVRydWUpCisKICAgICBkZWYgdGVzdF9ub19tYXJzaGFsKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X25vX21hcnNoYWwoZGVsX3NvdXJjZT1UcnVlKQogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmluZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9maW5kZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQppbmRleCA3YjkwODhkLi44YmMxNmE1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQpAQCAtMSwxMCArMSwxMiBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgbWFrZV9sZWdhY3lfcHljCi1pbXBvcnQgb3MKKworZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogaW1wb3J0IGVycm5vCitpbXBvcnQgaW1wCitpbXBvcnQgb3MKIGltcG9ydCBweV9jb21waWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgbWFrZV9sZWdhY3lfcHljCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwogCkBAIC0zMywxMSArMzUsMTUgQEAKIAogICAgICIiIgogCisgICAgZGVmIGdldF9maW5kZXIoc2VsZiwgcm9vdCk6CisgICAgICAgIGxvYWRlcl9kZXRhaWxzID0gWyhtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVMpXQorICAgICAgICByZXR1cm4gbWFjaGluZXJ5LkZpbGVGaW5kZXIocm9vdCwgKmxvYWRlcl9kZXRhaWxzKQorCiAgICAgZGVmIGltcG9ydF8oc2VsZiwgcm9vdCwgbW9kdWxlKToKLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcihyb290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX1NvdXJjZUZpbmRlckRldGFpbHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VsZXNzRmluZGVyRGV0YWlscygpKQotICAgICAgICByZXR1cm4gZmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2ZpbmRlcihyb290KS5maW5kX21vZHVsZShtb2R1bGUpCiAKICAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgdGVzdCwgY3JlYXRlPU5vbmUsICosIGNvbXBpbGVfPU5vbmUsIHVubGluaz1Ob25lKToKICAgICAgICAgIiIiVGVzdCB0aGUgZmluZGluZyBvZiAndGVzdCcgd2l0aCB0aGUgY3JlYXRpb24gb2YgbW9kdWxlcyBsaXN0ZWQgaW4KQEAgLTEwMiwzOSArMTA4LDIxIEBACiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLmltcG9ydF8ocGtnX2RpciwgJ3BrZy5zdWInKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobG9hZGVyLCAnbG9hZF9tb2R1bGUnKSkKIAotICAgICMgW3N1YiBlbXB0eV0KLSAgICBkZWYgdGVzdF9lbXB0eV9zdWJfZGlyZWN0b3J5KHNlbGYpOgotICAgICAgICBjb250ZXh0ID0gc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuc3ViLl9faW5pdF9fJykKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIEltcG9ydFdhcm5pbmcpCi0gICAgICAgICAgICB3aXRoIGNvbnRleHQgYXMgbWFwcGluZzoKLSAgICAgICAgICAgICAgICBvcy51bmxpbmsobWFwcGluZ1sncGtnLnN1Yi5fX2luaXRfXyddKQotICAgICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmRpcm5hbWUobWFwcGluZ1sncGtnLl9faW5pdF9fJ10pCi0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRXYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKHBrZ19kaXIsICdwa2cuc3ViJykKLQogICAgICMgW3BhY2thZ2Ugb3ZlciBtb2R1bGVzXQogICAgIGRlZiB0ZXN0X3BhY2thZ2Vfb3Zlcl9tb2R1bGUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnX3RlbXAnCiAgICAgICAgIGxvYWRlciA9IHNlbGYucnVuX3Rlc3QobmFtZSwgeyd7MH0uX19pbml0X18nLmZvcm1hdChuYW1lKSwgbmFtZX0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX19pbml0X18nIGluIGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkpCi0KKyAgICAgICAgc2VsZi5hc3NlcnRJbignX19pbml0X18nLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQogCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnYmxhaCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBub3RoaW5nID0gc2VsZi5pbXBvcnRfKG1hcHBpbmdbJy5yb290J10sICdzZGZzYWRzYWRmJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RoaW5nIGlzIE5vbmUpCi0KLSAgICAjIFtlbXB0eSBkaXJdCi0gICAgZGVmIHRlc3RfZW1wdHlfZGlyKHNlbGYpOgotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgSW1wb3J0V2FybmluZykKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0V2FybmluZyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5ydW5fdGVzdCgncGtnJywgeydwa2cuX19pbml0X18nfSwgdW5saW5rPXsncGtnLl9faW5pdF9fJ30pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShub3RoaW5nKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nX2Zvcl9kaXIoc2VsZik6CiAgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyBmcm9tIHN5cy5wYXRoIG1lYW5zIHRvIHNlYXJjaCBpbiB0aGUgY3dkLgotICAgICAgICBmaW5kZXIgPSBfYm9vdHN0cmFwLl9GaWxlRmluZGVyKCcnLCBfYm9vdHN0cmFwLl9Tb3VyY2VGaW5kZXJEZXRhaWxzKCkpCisgICAgICAgIGZpbmRlciA9IG1hY2hpbmVyeS5GaWxlRmluZGVyKCcnLCAobWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKSkKICAgICAgICAgd2l0aCBvcGVuKCdtb2QucHknLCAndycpIGFzIGZpbGU6CiAgICAgICAgICAgICBmaWxlLndyaXRlKCIjIHRlc3QgZmlsZSBmb3IgaW1wb3J0bGliIikKICAgICAgICAgdHJ5OgpAQCAtMTQzLDYgKzEzMSwyMSBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MudW5saW5rKCdtb2QucHknKQogCisgICAgZGVmIHRlc3RfaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICMgaW52YWxpZGF0ZV9jYWNoZXMoKSBzaG91bGQgcmVzZXQgdGhlIG10aW1lLgorICAgICAgICBmaW5kZXIgPSBtYWNoaW5lcnkuRmlsZUZpbmRlcignJywgKG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUykpCisgICAgICAgIGZpbmRlci5fcGF0aF9tdGltZSA9IDQyCisgICAgICAgIGZpbmRlci5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGVyLl9wYXRoX210aW1lLCAtMSkKKworICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTQ4NDYKKyAgICBkZWYgdGVzdF9kaXJfcmVtb3ZhbF9oYW5kbGluZyhzZWxmKToKKyAgICAgICAgbW9kID0gJ21vZCcKKyAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhtb2QpIGFzIG1hcHBpbmc6CisgICAgICAgICAgICBmaW5kZXIgPSBzZWxmLmdldF9maW5kZXIobWFwcGluZ1snLnJvb3QnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGZpbmRlci5maW5kX21vZHVsZShtb2QpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaW5kZXIuZmluZF9tb2R1bGUobW9kKSkKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTc4NzkyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0wLDAgKzEsMzIgQEAKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAorCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CitpbXBvcnQgaW1wCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBQYXRoSG9va1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdCB0aGUgcGF0aCBob29rIGZvciBzb3VyY2UuIiIiCisKKyAgICBkZWYgcGF0aF9ob29rKHNlbGYpOgorICAgICAgICByZXR1cm4gbWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKChtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpKQorCisgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKKyAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKShtYXBwaW5nWycucm9vdCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQorCisgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyB0aGUgY3dkLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnBhdGhfaG9vaygpKCcnKSwgJ2ZpbmRfbW9kdWxlJykpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoUGF0aEhvb2tUZXN0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CmluZGV4IDc5NGEzZGYuLjBjYTUxOTUgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CkBAIC0xLDYgKzEsNiBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAogCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCkBAIC0zNSw4ICszNSw4IEBACiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoc2VsZi5tb2R1bGVfbmFtZSkgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nW3NlbGYubW9kdWxlX25hbWVdLCAnd2InKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoc291cmNlKQotICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcihzZWxmLm1vZHVsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tzZWxmLm1vZHVsZV9uYW1lXSkKKyAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuU291cmNlRmlsZUxvYWRlcihzZWxmLm1vZHVsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nW3NlbGYubW9kdWxlX25hbWVdKQogICAgICAgICAgICAgcmV0dXJuIGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQogCiAgICAgZGVmIGNyZWF0ZV9zb3VyY2Uoc2VsZiwgZW5jb2RpbmcpOgpAQCAtOTcsNyArOTcsNyBAQAogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG1vZHVsZV9uYW1lKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgd2l0aCBvcGVuKG1hcHBpbmdbbW9kdWxlX25hbWVdLCAnd2InKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoc291cmNlKQotICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcihtb2R1bGVfbmFtZSwKKyAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuU291cmNlRmlsZUxvYWRlcihtb2R1bGVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nW21vZHVsZV9uYW1lXSkKICAgICAgICAgICAgIHJldHVybiBsb2FkZXIubG9hZF9tb2R1bGUobW9kdWxlX25hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS91dGlsLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS91dGlsLnB5CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hYmMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hYmMucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5CmluZGV4IDBlY2JlMzkuLmM2MjBjMzcgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FiYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQpAQCAtMzAsMTAgKzMwLDE3IEBACiAgICAgICAgICAgICAgICAiezB9IGlzIG5vdCBhIHN1cGVyY2xhc3Mgb2YgezF9Ii5mb3JtYXQoc3VwZXJjbGFzcywgc2VsZi5fX3Rlc3QpKQogCiAKLWNsYXNzIEZpbmRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBNZXRhUGF0aEZpbmRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBzdXBlcmNsYXNzZXMgPSBbYWJjLkZpbmRlcl0KICAgICBzdWJjbGFzc2VzID0gW21hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LlBhdGhGaW5kZXJdCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5QYXRoRmluZGVyLCBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyXQorCisKK2NsYXNzIFBhdGhFbnRyeUZpbmRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBzdXBlcmNsYXNzZXMgPSBbYWJjLkZpbmRlcl0KKyAgICBzdWJjbGFzc2VzID0gW21hY2hpbmVyeS5GaWxlRmluZGVyXQogCiAKIGNsYXNzIExvYWRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01MCw3ICs1Nyw3IEBACiAKICAgICBzdXBlcmNsYXNzZXMgPSBbYWJjLkxvYWRlcl0KICAgICBzdWJjbGFzc2VzID0gW2FiYy5QeUxvYWRlciwgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyXQorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyXQogCiAKIGNsYXNzIEV4ZWN1dGlvbkxvYWRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01OSw5ICs2NiwxNiBAQAogICAgIHN1YmNsYXNzZXMgPSBbYWJjLlB5TG9hZGVyXQogCiAKK2NsYXNzIEZpbGVMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5SZXNvdXJjZUxvYWRlciwgYWJjLkV4ZWN1dGlvbkxvYWRlcl0KKyAgICBzdWJjbGFzc2VzID0gW21hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLCBtYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXJdCisKKwogY2xhc3MgU291cmNlTG9hZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuUmVzb3VyY2VMb2FkZXIsIGFiYy5FeGVjdXRpb25Mb2FkZXJdCisgICAgc3ViY2xhc3NlcyA9IFttYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcl0KIAogCiBjbGFzcyBQeUxvYWRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNjYyOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weQpAQCAtMCwwICsxLDE4NyBAQAorZnJvbSAuIGltcG9ydCB1dGlsCitpbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIEltcG9ydE1vZHVsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3QgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUuIiIiCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfaW1wb3J0KHNlbGYpOgorICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgdG9wLWxldmVsIG1vZHVsZS4KKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygndG9wX2xldmVsJykgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ3RvcF9sZXZlbCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICd0b3BfbGV2ZWwnKQorCisgICAgZGVmIHRlc3RfYWJzb2x1dGVfcGFja2FnZV9pbXBvcnQoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2Ugd2l0aCBhbiBhYnNvbHV0ZSBuYW1lLgorICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCisgICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCisgICAgICAgIG5hbWUgPSAnezB9Lm1vZCcuZm9ybWF0KHBrZ19uYW1lKQorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X3JlbGF0aXZlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgorICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHRocm91Z2ggYSByZWxhdGl2ZSBpbXBvcnQuCisgICAgICAgIHBrZ19uYW1lID0gJ3BrZycKKyAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKKyAgICAgICAgbW9kdWxlX25hbWUgPSAnbW9kJworICAgICAgICBhYnNvbHV0ZV9uYW1lID0gJ3swfS57MX0nLmZvcm1hdChwa2dfbmFtZSwgbW9kdWxlX25hbWUpCisgICAgICAgIHJlbGF0aXZlX25hbWUgPSAnLnswfScuZm9ybWF0KG1vZHVsZV9uYW1lKQorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIGFic29sdXRlX25hbWUpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHJlbGF0aXZlX25hbWUsIHBrZ19uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBhYnNvbHV0ZV9uYW1lKQorCisgICAgZGVmIHRlc3RfZGVlcF9yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKKyAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmIuX19pbml0X18nLCAnYS5jJ10KKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcykgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EnKQorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuLmMnLCAnYS5iJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ2EuYycpCisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV9pbXBvcnRfd2l0aF9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHdpdGggYW4gYWJzb2x1dGUgbmFtZSB3aXRoCisgICAgICAgICMgdGhlICdwYWNrYWdlJyBhcmd1bWVudCBnaXZlbi4KKyAgICAgICAgcGtnX25hbWUgPSAncGtnJworICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQorICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lLCBwa2dfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKKworICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF93b19wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIFJlbGF0aXZlIGltcG9ydHMgY2Fubm90IGhhcHBlbiB3aXRob3V0IHRoZSAncGFja2FnZScgYXJndW1lbnQgYmVpbmcKKyAgICAgICAgIyBzZXQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuc3VwcG9ydCcpCisKKworICAgIGRlZiB0ZXN0X2xvYWRlZF9vbmNlKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMzU5MTogTW9kdWxlcyBzaG91bGQgb25seSBiZSBsb2FkZWQgb25jZSB3aGVuCisgICAgICAgICMgaW5pdGlhbGl6aW5nIHRoZSBwYXJlbnQgcGFja2FnZSBhdHRlbXB0cyB0byBpbXBvcnQgdGhlCisgICAgICAgICMgbW9kdWxlIGN1cnJlbnRseSBiZWluZyBpbXBvcnRlZC4KKyAgICAgICAgYl9sb2FkX2NvdW50ID0gMAorICAgICAgICBkZWYgbG9hZF9hKCk6CisgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKKyAgICAgICAgZGVmIGxvYWRfYigpOgorICAgICAgICAgICAgbm9ubG9jYWwgYl9sb2FkX2NvdW50CisgICAgICAgICAgICBiX2xvYWRfY291bnQgKz0gMQorICAgICAgICBjb2RlID0geydhJzogbG9hZF9hLCAnYS5iJzogbG9hZF9ifQorICAgICAgICBtb2R1bGVzID0gWydhLl9faW5pdF9fJywgJ2EuYiddCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMsIG1vZHVsZV9jb2RlPWNvZGUpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJfbG9hZF9jb3VudCwgMSkKKworCitjbGFzcyBGaW5kTG9hZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgY2xhc3MgRmFrZU1ldGFGaW5kZXI6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGZpbmRfbW9kdWxlKG5hbWUsIHBhdGg9Tm9uZSk6IHJldHVybiBuYW1lLCBwYXRoCisKKyAgICBkZWYgdGVzdF9zeXNfbW9kdWxlcyhzZWxmKToKKyAgICAgICAgIyBJZiBhIG1vZHVsZSB3aXRoIF9fbG9hZGVyX18gaXMgaW4gc3lzLm1vZHVsZXMsIHRoZW4gcmV0dXJuIGl0LgorICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJworICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICBsb2FkZXIgPSAnYSBsb2FkZXIhJworICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBsb2FkZXIKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisgICAgICAgICAgICBmb3VuZCA9IGltcG9ydGxpYi5maW5kX2xvYWRlcihuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZXIsIGZvdW5kKQorCisgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXNfbG9hZGVyX2lzX05vbmUoc2VsZik6CisgICAgICAgICMgSWYgc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfXyBpcyBOb25lLCByYWlzZSBWYWx1ZUVycm9yLgorICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJworICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IE5vbmUKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5maW5kX2xvYWRlcihuYW1lKQorCisgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKKyAgICAgICAgIyBSZXR1cm4gdGhlIGxvYWRlciBmb3VuZCBvbiBzeXMubWV0YV9wYXRoLgorICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJworICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobmFtZSwgTm9uZSksIGltcG9ydGxpYi5maW5kX2xvYWRlcihuYW1lKSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfcGF0aChzZWxmKToKKyAgICAgICAgIyBTZWFyY2hpbmcgb24gYSBwYXRoIHNob3VsZCB3b3JrLgorICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJworICAgICAgICBwYXRoID0gJ3BhdGggdG8gc29tZSBwbGFjZScKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bc2VsZi5GYWtlTWV0YUZpbmRlcl0pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKG5hbWUsIHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLmZpbmRfbG9hZGVyKG5hbWUsIHBhdGgpKQorCisgICAgZGVmIHRlc3Rfbm90aGluZyhzZWxmKToKKyAgICAgICAgIyBOb25lIGlzIHJldHVybmVkIHVwb24gZmFpbHVyZSB0byBmaW5kIGEgbG9hZGVyLgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShpbXBvcnRsaWIuZmluZF9sb2FkZXIoJ25ldmVyZ29pbmd0b2ZpbmR0aGlzbW9kdWxlJykpCisKKworY2xhc3MgSW52YWxpZGF0ZUNhY2hlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbWV0aG9kX2NhbGxlZChzZWxmKToKKyAgICAgICAgIyBJZiBkZWZpbmVkIHRoZSBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZC4KKyAgICAgICAgY2xhc3MgSW52YWxpZGF0aW5nTnVsbEZpbmRlcjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqaWdub3JlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgPSBGYWxzZQorICAgICAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkID0gVHJ1ZQorCisgICAgICAgIGtleSA9ICdnb2JsZWRlZWdvb2snCisgICAgICAgIG1ldGFfaW5zID0gSW52YWxpZGF0aW5nTnVsbEZpbmRlcigpCisgICAgICAgIHBhdGhfaW5zID0gSW52YWxpZGF0aW5nTnVsbEZpbmRlcigpCisgICAgICAgIHN5cy5tZXRhX3BhdGguaW5zZXJ0KDAsIG1ldGFfaW5zKQorICAgICAgICBzZWxmLmFkZENsZWFudXAobGFtYmRhOiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5fX2RlbGl0ZW1fXyhrZXkpKQorICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtrZXldID0gcGF0aF9pbnMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxhbWJkYTogc3lzLm1ldGFfcGF0aC5yZW1vdmUobWV0YV9pbnMpKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWV0YV9pbnMuY2FsbGVkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aF9pbnMuY2FsbGVkKQorCisgICAgZGVmIHRlc3RfbWV0aG9kX2xhY2tpbmcoc2VsZik6CisgICAgICAgICMgVGhlcmUgc2hvdWxkIGJlIG5vIGlzc3VlcyBpZiB0aGUgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLgorICAgICAgICBrZXkgPSAnZ29iYmxlZGVlZ29vaycKKyAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVba2V5XSA9IGltcC5OdWxsSW1wb3J0ZXIoJ2FiYycpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsYW1iZGE6IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLl9fZGVsaXRlbV9fKGtleSkpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpICAjIFNob3VsZG4ndCB0cmlnZ2VyIGFuIGV4Y2VwdGlvbi4KKworCitjbGFzcyBGcm96ZW5JbXBvcnRsaWJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9ub19mcm96ZW5faW1wb3J0bGliKHNlbGYpOgorICAgICAgICAjIFNob3VsZCBiZSBhYmxlIHRvIGltcG9ydCB3L28gX2Zyb3plbl9pbXBvcnRsaWIgYmVpbmcgZGVmaW5lZC4KKyAgICAgICAgbW9kdWxlID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdpbXBvcnRsaWInLCBibG9ja2VkPVsnX2Zyb3plbl9pbXBvcnRsaWInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKG1vZHVsZS5fX2xvYWRlcl9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyKSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdChJbXBvcnRNb2R1bGVUZXN0cywKKyAgICAgICAgICAgICAgICAgRmluZExvYWRlclRlc3RzLAorICAgICAgICAgICAgICAgICBJbnZhbGlkYXRlQ2FjaGVUZXN0cywKKyAgICAgICAgICAgICAgICAgRnJvemVuSW1wb3J0bGliVGVzdHMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM2YjcxZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKQEAgLTAsMCArMSwxMTUgQEAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitpbXBvcnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2Vha3JlZgorCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKwordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCitlbHNlOgorICAgIGZyb20gdGVzdCBpbXBvcnQgbG9ja190ZXN0cworCisKK0xvY2tUeXBlID0gX2Jvb3RzdHJhcC5fTW9kdWxlTG9jaworRGVhZGxvY2tFcnJvciA9IF9ib290c3RyYXAuX0RlYWRsb2NrRXJyb3IKKworCitpZiB0aHJlYWRpbmcgaXMgbm90IE5vbmU6CisgICAgY2xhc3MgTW9kdWxlTG9ja0FzUkxvY2tUZXN0cyhsb2NrX3Rlc3RzLlJMb2NrVGVzdHMpOgorICAgICAgICBsb2NrdHlwZSA9IHN0YXRpY21ldGhvZChsYW1iZGE6IExvY2tUeXBlKCJzb21lX2xvY2siKSkKKworICAgICAgICAjIF9pc19vd25lZCgpIHVuc3VwcG9ydGVkCisgICAgICAgIHRlc3RfX2lzX293bmVkID0gTm9uZQorICAgICAgICAjIGFjcXVpcmUoYmxvY2tpbmc9RmFsc2UpIHVuc3VwcG9ydGVkCisgICAgICAgIHRlc3RfdHJ5X2FjcXVpcmUgPSBOb25lCisgICAgICAgIHRlc3RfdHJ5X2FjcXVpcmVfY29udGVuZGVkID0gTm9uZQorICAgICAgICAjIGB3aXRoYCB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X3dpdGggPSBOb25lCisgICAgICAgICMgYWNxdWlyZSh0aW1lb3V0PS4uLikgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF90aW1lb3V0ID0gTm9uZQorICAgICAgICAjIF9yZWxlYXNlX3NhdmUoKSB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X3JlbGVhc2Vfc2F2ZV91bmFjcXVpcmVkID0gTm9uZQorCitlbHNlOgorICAgIGNsYXNzIE1vZHVsZUxvY2tBc1JMb2NrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBwYXNzCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAidGhyZWFkcyBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCitjbGFzcyBEZWFkbG9ja0F2b2lkYW5jZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3Qoc2VsZiwgY3JlYXRlX2RlYWRsb2NrKToKKyAgICAgICAgTkxPQ0tTID0gMTAKKyAgICAgICAgbG9ja3MgPSBbTG9ja1R5cGUoc3RyKGkpKSBmb3IgaSBpbiByYW5nZShOTE9DS1MpXQorICAgICAgICBwYWlycyA9IFsobG9ja3NbaV0sIGxvY2tzWyhpKzEpJU5MT0NLU10pIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCisgICAgICAgIGlmIGNyZWF0ZV9kZWFkbG9jazoKKyAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBOVEhSRUFEUyA9IE5MT0NLUyAtIDEKKyAgICAgICAgYmFycmllciA9IHRocmVhZGluZy5CYXJyaWVyKE5USFJFQURTKQorICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgZGVmIF9hY3F1aXJlKGxvY2spOgorICAgICAgICAgICAgIiIiVHJ5IHRvIGFjcXVpcmUgdGhlIGxvY2suIFJldHVybiBUcnVlIG9uIHN1Y2Nlc3MsIEZhbHNlIG9uIGRlYWRsb2NrLiIiIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2suYWNxdWlyZSgpCisgICAgICAgICAgICBleGNlcHQgRGVhZGxvY2tFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIGEsIGIgPSBwYWlycy5wb3AoKQorICAgICAgICAgICAgcmEgPSBfYWNxdWlyZShhKQorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIHJiID0gX2FjcXVpcmUoYikKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChyYSwgcmIpKQorICAgICAgICAgICAgaWYgcmI6CisgICAgICAgICAgICAgICAgYi5yZWxlYXNlKCkKKyAgICAgICAgICAgIGlmIHJhOgorICAgICAgICAgICAgICAgIGEucmVsZWFzZSgpCisgICAgICAgIGxvY2tfdGVzdHMuQnVuY2goZiwgTlRIUkVBRFMpLndhaXRfZm9yX2ZpbmlzaGVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIE5USFJFQURTKQorICAgICAgICByZXR1cm4gcmVzdWx0cworCisgICAgZGVmIHRlc3RfZGVhZGxvY2soc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChUcnVlKQorICAgICAgICAjIE9uZSBvZiB0aGUgdGhyZWFkcyBkZXRlY3RlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBvbiBpdHMgc2Vjb25kCisgICAgICAgICMgYWNxdWlyZSgpIGNhbGwuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cy5jb3VudCgoVHJ1ZSwgRmFsc2UpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSAtIDEpCisKKyAgICBkZWYgdGVzdF9ub19kZWFkbG9jayhzZWxmKToKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYucnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIEZhbHNlKSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cy5jb3VudCgoVHJ1ZSwgVHJ1ZSkpLCBsZW4ocmVzdWx0cykpCisKKworY2xhc3MgTGlmZXRpbWVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9sb2NrX2xpZmV0aW1lKHNlbGYpOgorICAgICAgICBuYW1lID0gInh5enp5IgorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIF9ib290c3RyYXAuX21vZHVsZV9sb2NrcykKKyAgICAgICAgbG9jayA9IF9ib290c3RyYXAuX2dldF9tb2R1bGVfbG9jayhuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIF9ib290c3RyYXAuX21vZHVsZV9sb2NrcykKKyAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihsb2NrKQorICAgICAgICBkZWwgbG9jaworICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIF9ib290c3RyYXAuX21vZHVsZV9sb2NrcykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUod3IoKSkKKworICAgIGRlZiB0ZXN0X2FsbF9sb2NrcyhzZWxmKToKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oX2Jvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKSwgX2Jvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKQorCisKK0BzdXBwb3J0LnJlYXBfdGhyZWFkcworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1vZHVsZUxvY2tBc1JMb2NrVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVhZGxvY2tBdm9pZGFuY2VUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBMaWZldGltZVRlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmM4OTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CkBAIC0wLDAgKzEsMjA4IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgdXRpbAorZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAoraW1wb3J0IGltcAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBNb2R1bGVGb3JMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIuIiIiCisKKyAgICBkZWYgcmV0dXJuX21vZHVsZShzZWxmLCBuYW1lKToKKyAgICAgICAgZnhuID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcihsYW1iZGEgc2VsZiwgbW9kdWxlOiBtb2R1bGUpCisgICAgICAgIHJldHVybiBmeG4oc2VsZiwgbmFtZSkKKworICAgIGRlZiByYWlzZV9leGNlcHRpb24oc2VsZiwgbmFtZSk6CisgICAgICAgIGRlZiB0b193cmFwKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgorICAgICAgICBmeG4gPSB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyKHRvX3dyYXApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZ4bihzZWxmLCBuYW1lKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9uZXdfbW9kdWxlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3aGVuIG5vIG1vZHVsZSBleGlzdHMgaW4gc3lzLm1vZHVsZXMgYSBuZXcgbW9kdWxlIGlzCisgICAgICAgICMgY3JlYXRlZC4KKyAgICAgICAgbW9kdWxlX25hbWUgPSAnYS5iLmMnCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobW9kdWxlX25hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5yZXR1cm5fbW9kdWxlKG1vZHVsZV9uYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGVfbmFtZSwgc3lzLm1vZHVsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBtb2R1bGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X3JlbG9hZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYSBtb2R1bGUgaXMgcmV1c2VkIGlmIGFscmVhZHkgaW4gc3lzLm1vZHVsZXMuCisgICAgICAgIG5hbWUgPSAnYS5iLmMnCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdhLmIuYycpCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgcmV0dXJuZWRfbW9kdWxlID0gc2VsZi5yZXR1cm5fbW9kdWxlKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHJldHVybmVkX21vZHVsZSwgc3lzLm1vZHVsZXNbbmFtZV0pCisKKyAgICBkZWYgdGVzdF9uZXdfbW9kdWxlX2ZhaWx1cmUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgbW9kdWxlIGlzIHJlbW92ZWQgZnJvbSBzeXMubW9kdWxlcyBpZiBhZGRlZCBidXQgYW4KKyAgICAgICAgIyBleGNlcHRpb24gaXMgcmFpc2VkLgorICAgICAgICBuYW1lID0gJ2EuYi5jJworICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgc2VsZi5yYWlzZV9leGNlcHRpb24obmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obmFtZSwgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF9yZWxvYWRfZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYSBmYWlsdXJlIG9uIHJlbG9hZCBsZWF2ZXMgdGhlIG1vZHVsZSBpbi1wbGFjZS4KKyAgICAgICAgbmFtZSA9ICdhLmIuYycKKyAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisgICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQorCisgICAgZGVmIHRlc3RfZGVjb3JhdG9yX2F0dHJzKHNlbGYpOgorICAgICAgICBkZWYgZnhuKHNlbGYsIG1vZHVsZSk6IHBhc3MKKyAgICAgICAgd3JhcHBlZCA9IHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIoZnhuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19uYW1lX18sIGZ4bi5fX25hbWVfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVkLl9fcXVhbG5hbWVfXywgZnhuLl9fcXVhbG5hbWVfXykKKworICAgIGRlZiB0ZXN0X2ZhbHNlX21vZHVsZShzZWxmKToKKyAgICAgICAgIyBJZiBmb3Igc29tZSBvZGQgcmVhc29uIGEgbW9kdWxlIGlzIGNvbnNpZGVyZWQgZmFsc2UsIHN0aWxsIHJldHVybiBpdAorICAgICAgICAjIGZyb20gc3lzLm1vZHVsZXMuCisgICAgICAgIGNsYXNzIEZhbHNlTW9kdWxlKHR5cGVzLk1vZHVsZVR5cGUpOgorICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOiByZXR1cm4gRmFsc2UKKworICAgICAgICBuYW1lID0gJ21vZCcKKyAgICAgICAgbW9kdWxlID0gRmFsc2VNb2R1bGUobmFtZSkKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kdWxlKQorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIGdpdmVuID0gc2VsZi5yZXR1cm5fbW9kdWxlKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGdpdmVuLCBtb2R1bGUpCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX3NldChzZWxmKToKKyAgICAgICAgIyBfX25hbWVfXywgX19sb2FkZXJfXywgYW5kIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgKHdoZW4KKyAgICAgICAgIyBpc19wYWNrYWdlKCkgaXMgZGVmaW5lZDsgdW5kZWZpbmVkIGltcGxpY2l0bHkgdGVzdGVkIGVsc2V3aGVyZSkuCisgICAgICAgIGNsYXNzIEZha2VMb2FkZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXNfcGFja2FnZSk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGtnID0gaXNfcGFja2FnZQorICAgICAgICAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgbmFtZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BrZworICAgICAgICAgICAgQHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIKKyAgICAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKKworICAgICAgICBuYW1lID0gJ3BrZy5tb2QnCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBsb2FkZXIgPSBGYWtlTG9hZGVyKEZhbHNlKQorICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIGxvYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCAncGtnJykKKworICAgICAgICBuYW1lID0gJ3BrZy5zdWInCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBsb2FkZXIgPSBGYWtlTG9hZGVyKFRydWUpCisgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgbG9hZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sIG5hbWUpCisKKworY2xhc3MgU2V0UGFja2FnZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIGZvciBpbXBvcnRsaWIudXRpbC5zZXRfcGFja2FnZS4iIiIKKworICAgIGRlZiB2ZXJpZnkoc2VsZiwgbW9kdWxlLCBleHBlY3QpOgorICAgICAgICAiIiJWZXJpZnkgdGhlIG1vZHVsZSBoYXMgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBfX3BhY2thZ2VfXyBhZnRlcgorICAgICAgICBwYXNzaW5nIHRocm91Z2ggc2V0X3BhY2thZ2UuIiIiCisgICAgICAgIGZ4biA9IGxhbWJkYTogbW9kdWxlCisgICAgICAgIHdyYXBwZWQgPSB1dGlsLnNldF9wYWNrYWdlKGZ4bikKKyAgICAgICAgd3JhcHBlZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0LCBtb2R1bGUuX19wYWNrYWdlX18pCisKKyAgICBkZWYgdGVzdF90b3BfbGV2ZWwoc2VsZik6CisgICAgICAgICMgX19wYWNrYWdlX18gc2hvdWxkIGJlIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIGEgdG9wLWxldmVsIG1vZHVsZS4KKyAgICAgICAgIyBJbXBsaWNpdGx5IHRlc3RzIHdoZW4gcGFja2FnZSBpcyBzZXQgdG8gTm9uZS4KKyAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZHVsZScpCisgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKKyAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAnJykKKworICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgVGVzdCBzZXR0aW5nIF9fcGFja2FnZV9fIGZvciBhIHBhY2thZ2UuCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdwa2cnKQorICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbJzxwYXRoPiddCisgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKKyAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3N1Ym1vZHVsZShzZWxmKToKKyAgICAgICAgIyBUZXN0IF9fcGFja2FnZV9fIGZvciBhIG1vZHVsZSBpbiBhIHBhY2thZ2UuCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdwa2cubW9kJykKKyAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQorICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICdwa2cnKQorCisgICAgZGVmIHRlc3Rfc2V0dGluZ19pZl9taXNzaW5nKHNlbGYpOgorICAgICAgICAjIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgaWYgaXQgaXMgbWlzc2luZy4KKyAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCisgICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKToKKyAgICAgICAgICAgIGRlbGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKQorICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICcnKQorCisgICAgZGVmIHRlc3RfbGVhdmluZ19hbG9uZShzZWxmKToKKyAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyBpcyBzZXQgYW5kIG5vdCBOb25lIHRoZW4gbGVhdmUgaXQgYWxvbmUuCisgICAgICAgIGZvciB2YWx1ZSBpbiAoVHJ1ZSwgRmFsc2UpOgorICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCisgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSB2YWx1ZQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCB2YWx1ZSkKKworICAgIGRlZiB0ZXN0X2RlY29yYXRvcl9hdHRycyhzZWxmKToKKyAgICAgICAgZGVmIGZ4bihtb2R1bGUpOiBwYXNzCisgICAgICAgIHdyYXBwZWQgPSB1dGlsLnNldF9wYWNrYWdlKGZ4bikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVkLl9fbmFtZV9fLCBmeG4uX19uYW1lX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX3F1YWxuYW1lX18sIGZ4bi5fX3F1YWxuYW1lX18pCisKKworY2xhc3MgUmVzb2x2ZU5hbWVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoKS4iIiIKKworICAgIGRlZiB0ZXN0X2Fic29sdXRlKHNlbGYpOgorICAgICAgICAjIGJhY29uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2JhY29uJywgdXRpbC5yZXNvbHZlX25hbWUoJ2JhY29uJywgTm9uZSkpCisKKyAgICBkZWYgdGVzdF9hYm9zbHV0ZV93aXRoaW5fcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBiYWNvbiBpbiBzcGFtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2JhY29uJywgdXRpbC5yZXNvbHZlX25hbWUoJ2JhY29uJywgJ3NwYW0nKSkKKworICAgIGRlZiB0ZXN0X25vX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgLmJhY29uIGluICcnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB1dGlsLnJlc29sdmVfbmFtZSgnLmJhY29uJywgJycpCisKKyAgICBkZWYgdGVzdF9pbl9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIC5iYWNvbiBpbiBzcGFtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NwYW0uZWdncy5iYWNvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5yZXNvbHZlX25hbWUoJy5iYWNvbicsICdzcGFtLmVnZ3MnKSkKKworICAgIGRlZiB0ZXN0X290aGVyX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgLi5iYWNvbiBpbiBzcGFtLmJhY29uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NwYW0uYmFjb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwucmVzb2x2ZV9uYW1lKCcuLmJhY29uJywgJ3NwYW0uZWdncycpKQorCisgICAgZGVmIHRlc3RfZXNjYXBlKHNlbGYpOgorICAgICAgICAjIC4uYmFjb24gaW4gc3BhbQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5yZXNvbHZlX25hbWUoJy4uYmFjb24nLCAnc3BhbScpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAorICAgICAgICAgICAgTW9kdWxlRm9yTG9hZGVyVGVzdHMsCisgICAgICAgICAgICBTZXRQYWNrYWdlVGVzdHMsCisgICAgICAgICAgICBSZXNvbHZlTmFtZVRlc3RzCisgICAgICAgICkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3V0aWwucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3V0aWwucHkKaW5kZXggOTNiN2NkMi4uZWYzMmY3ZCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weQpAQCAtMzUsNyArMzUsNyBAQAogICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICBpZiBuYW1lIGluICgnc3lzJywgJ21hcnNoYWwnLCAnaW1wJyk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICJjYW5ub3QgdW5jYWNoZSB7MH0gYXMgaXQgd2lsbCBicmVhayBfaW1wb3J0bGliIi5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICAgICAgImNhbm5vdCB1bmNhY2hlIHswfSIuZm9ybWF0KG5hbWUpKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbmFtZV0KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtMTI0LDcgKzEyNCwxMSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3lzLm1vZHVsZXNbZnVsbG5hbWVdID0gc2VsZi5tb2R1bGVzW2Z1bGxuYW1lXQogICAgICAgICAgICAgaWYgZnVsbG5hbWUgaW4gc2VsZi5tb2R1bGVfY29kZToKLSAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZV9jb2RlW2Z1bGxuYW1lXSgpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZV9jb2RlW2Z1bGxuYW1lXSgpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXQorICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kdWxlc1tmdWxsbmFtZV0KIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkgYi9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKaW5kZXggNGI3ZWU0ZS4uODBkYjAzYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQpAQCAtNDEsMTEgKzQxLDYgQEAKIAogaW1wb3J0IGJ1aWx0aW5zCiAKLXRyeToKLSAgICAxLzAKLWV4Y2VwdDoKLSAgICB0YiA9IHN5cy5leGNfaW5mbygpWzJdCi0KIGdpdCA9IG1vZC5TdHVwaWRHaXQoKQogCiBjbGFzcyBJc1Rlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTc5LDIzICs3NCwzMSBAQAogCiAKICAgICBkZWYgdGVzdF9leGNsdWRpbmdfcHJlZGljYXRlcyhzZWxmKToKKyAgICAgICAgZ2xvYmFsIHRiCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNidWlsdGluLCAnc3lzLmV4aXQnKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzYnVpbHRpbiwgJ1tdLmFwcGVuZCcpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNjb2RlLCAnbW9kLnNwYW0uX19jb2RlX18nKQotICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZnJhbWUsICd0Yi50Yl9mcmFtZScpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEvMAorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICB0YiA9IHN5cy5leGNfaW5mbygpWzJdCisgICAgICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZnJhbWUsICd0Yi50Yl9mcmFtZScpCisgICAgICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzdHJhY2ViYWNrLCAndGInKQorICAgICAgICAgICAgaWYgaGFzYXR0cih0eXBlcywgJ0dldFNldERlc2NyaXB0b3JUeXBlJyk6CisgICAgICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dldHNldGRlc2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUodGIudGJfZnJhbWUpLmZfbG9jYWxzJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LmlzZ2V0c2V0ZGVzY3JpcHRvcih0eXBlKHRiLnRiX2ZyYW1lKS5mX2xvY2FscykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAjIENsZWFyIHRyYWNlYmFjayBhbmQgYWxsIHRoZSBmcmFtZXMgYW5kIGxvY2FsIHZhcmlhYmxlcyBoYW5naW5nIHRvIGl0LgorICAgICAgICAgICAgdGIgPSBOb25lCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNmdW5jdGlvbiwgJ21vZC5zcGFtJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2Z1bmN0aW9uLCAnbW9kLlN0dXBpZEdpdC5hYnVzZScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNtZXRob2QsICdnaXQuYXJndWUnKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzbW9kdWxlLCAnbW9kJykKLSAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc3RyYWNlYmFjaywgJ3RiJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2RhdGFkZXNjcmlwdG9yLCAnY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5JykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvciwgJyh4IGZvciB4IGluIHJhbmdlKDIpKScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwgJ2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKLSAgICAgICAgaWYgaGFzYXR0cih0eXBlcywgJ0dldFNldERlc2NyaXB0b3JUeXBlJyk6Ci0gICAgICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2V0c2V0ZGVzY3JpcHRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlKHRiLnRiX2ZyYW1lKS5mX2xvY2FscycpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3QuaXNnZXRzZXRkZXNjcmlwdG9yKHR5cGUodGIudGJfZnJhbWUpLmZfbG9jYWxzKSkKICAgICAgICAgaWYgaGFzYXR0cih0eXBlcywgJ01lbWJlckRlc2NyaXB0b3JUeXBlJyk6CiAgICAgICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzbWVtYmVyZGVzY3JpcHRvciwgJ2RhdGV0aW1lLnRpbWVkZWx0YS5kYXlzJykKICAgICAgICAgZWxzZToKQEAgLTI4Miw3ICsyODUsMTAgQEAKICAgICAgICAgY28gPSBjb21waWxlKCJOb25lIiwgZm4sICJleGVjIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldHNvdXJjZWZpbGUoY28pLCBOb25lKQogICAgICAgICBsaW5lY2FjaGUuY2FjaGVbY28uY29fZmlsZW5hbWVdID0gKDEsIE5vbmUsICJOb25lIiwgY28uY29fZmlsZW5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWNhc2UoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGNvKSksIGZuKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1jYXNlKGluc3BlY3QuZ2V0c291cmNlZmlsZShjbykpLCBmbikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRlbCBsaW5lY2FjaGUuY2FjaGVbY28uY29fZmlsZW5hbWVdCiAKICAgICBkZWYgdGVzdF9nZXRmaWxlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0ZmlsZShtb2QuU3R1cGlkR2l0KSwgbW9kLl9fZmlsZV9fKQpAQCAtMzA0LDcgKzMxMCw3IEBACiAgICAgICAgIGdldGxpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzCiAgICAgICAgIGRlZiBtb25rZXkoZmlsZW5hbWUsIG1vZHVsZV9nbG9iYWxzPU5vbmUpOgogICAgICAgICAgICAgaWYgZmlsZW5hbWUgPT0gZm46Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJldHVybiBnZXRsaW5lcyhmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpCiAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcyA9IG1vbmtleQpAQCAtNDA0LDggKzQxMCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBpbnNwZWN0LmZpbmRzb3VyY2UsIGNvKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBpbnNwZWN0LmdldHNvdXJjZSwgY28pCiAgICAgICAgIGxpbmVjYWNoZS5jYWNoZVtjby5jb19maWxlbmFtZV0gPSAoMSwgTm9uZSwgbGluZXMsIGNvLmNvX2ZpbGVuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZmluZHNvdXJjZShjbyksIChsaW5lcywwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldHNvdXJjZShjbyksIGxpbmVzWzBdKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZmluZHNvdXJjZShjbyksIChsaW5lcywwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2UoY28pLCBsaW5lc1swXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRlbCBsaW5lY2FjaGUuY2FjaGVbY28uY29fZmlsZW5hbWVdCiAKIGNsYXNzIFRlc3ROb0VPTChHZXRTb3VyY2VCYXNlKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKQEAgLTY2Miw2ICs2NzEsMTI5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCdmJywgYi5mKSwgaW5zcGVjdC5nZXRtZW1iZXJzKGIsIGluc3BlY3QuaXNtZXRob2QpKQogCiAKK19nbG9iYWxfcmVmID0gb2JqZWN0KCkKK2NsYXNzIFRlc3RHZXRDbG9zdXJlVmFycyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9uYW1lX3Jlc29sdXRpb24oc2VsZik6CisgICAgICAgICMgQmFzaWMgdGVzdCBvZiB0aGUgNCBkaWZmZXJlbnQgcmVzb2x1dGlvbiBtZWNoYW5pc21zCisgICAgICAgIGRlZiBmKG5vbmxvY2FsX3JlZik6CisgICAgICAgICAgICBkZWYgZyhsb2NhbF9yZWYpOgorICAgICAgICAgICAgICAgIHByaW50KGxvY2FsX3JlZiwgbm9ubG9jYWxfcmVmLCBfZ2xvYmFsX3JlZiwgdW5ib3VuZF9yZWYpCisgICAgICAgICAgICByZXR1cm4gZworICAgICAgICBfYXJnID0gb2JqZWN0KCkKKyAgICAgICAgbm9ubG9jYWxfdmFycyA9IHsibm9ubG9jYWxfcmVmIjogX2FyZ30KKyAgICAgICAgZ2xvYmFsX3ZhcnMgPSB7Il9nbG9iYWxfcmVmIjogX2dsb2JhbF9yZWZ9CisgICAgICAgIGJ1aWx0aW5fdmFycyA9IHsicHJpbnQiOiBwcmludH0KKyAgICAgICAgdW5ib3VuZF9uYW1lcyA9IHsidW5ib3VuZF9yZWYifQorICAgICAgICBleHBlY3RlZCA9IGluc3BlY3QuQ2xvc3VyZVZhcnMobm9ubG9jYWxfdmFycywgZ2xvYmFsX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGluX3ZhcnMsIHVuYm91bmRfbmFtZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmKF9hcmcpKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9nZW5lcmF0b3JfY2xvc3VyZShzZWxmKToKKyAgICAgICAgZGVmIGYobm9ubG9jYWxfcmVmKToKKyAgICAgICAgICAgIGRlZiBnKGxvY2FsX3JlZik6CisgICAgICAgICAgICAgICAgcHJpbnQobG9jYWxfcmVmLCBub25sb2NhbF9yZWYsIF9nbG9iYWxfcmVmLCB1bmJvdW5kX3JlZikKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgcmV0dXJuIGcKKyAgICAgICAgX2FyZyA9IG9iamVjdCgpCisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7Im5vbmxvY2FsX3JlZiI6IF9hcmd9CisgICAgICAgIGdsb2JhbF92YXJzID0geyJfZ2xvYmFsX3JlZiI6IF9nbG9iYWxfcmVmfQorICAgICAgICBidWlsdGluX3ZhcnMgPSB7InByaW50IjogcHJpbnR9CisgICAgICAgIHVuYm91bmRfbmFtZXMgPSB7InVuYm91bmRfcmVmIn0KKyAgICAgICAgZXhwZWN0ZWQgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKG5vbmxvY2FsX3ZhcnMsIGdsb2JhbF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbl92YXJzLCB1bmJvdW5kX25hbWVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZihfYXJnKSksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfbWV0aG9kX2Nsb3N1cmUoc2VsZik6CisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBkZWYgZihzZWxmLCBub25sb2NhbF9yZWYpOgorICAgICAgICAgICAgICAgIGRlZiBnKGxvY2FsX3JlZik6CisgICAgICAgICAgICAgICAgICAgIHByaW50KGxvY2FsX3JlZiwgbm9ubG9jYWxfcmVmLCBfZ2xvYmFsX3JlZiwgdW5ib3VuZF9yZWYpCisgICAgICAgICAgICAgICAgcmV0dXJuIGcKKyAgICAgICAgX2FyZyA9IG9iamVjdCgpCisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7Im5vbmxvY2FsX3JlZiI6IF9hcmd9CisgICAgICAgIGdsb2JhbF92YXJzID0geyJfZ2xvYmFsX3JlZiI6IF9nbG9iYWxfcmVmfQorICAgICAgICBidWlsdGluX3ZhcnMgPSB7InByaW50IjogcHJpbnR9CisgICAgICAgIHVuYm91bmRfbmFtZXMgPSB7InVuYm91bmRfcmVmIn0KKyAgICAgICAgZXhwZWN0ZWQgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKG5vbmxvY2FsX3ZhcnMsIGdsb2JhbF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbl92YXJzLCB1bmJvdW5kX25hbWVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoQygpLmYoX2FyZykpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X25vbmxvY2FsX3ZhcnMoc2VsZik6CisgICAgICAgICMgTW9yZSBjb21wbGV4IHRlc3RzIG9mIG5vbmxvY2FsIHJlc29sdXRpb24KKyAgICAgICAgZGVmIF9ub25sb2NhbF92YXJzKGYpOgorICAgICAgICAgICAgcmV0dXJuIGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZikubm9ubG9jYWxzCisKKyAgICAgICAgZGVmIG1ha2VfYWRkZXIoeCk6CisgICAgICAgICAgICBkZWYgYWRkKHkpOgorICAgICAgICAgICAgICAgIHJldHVybiB4ICsgeQorICAgICAgICAgICAgcmV0dXJuIGFkZAorCisgICAgICAgIGRlZiBjdXJyeShmdW5jLCBhcmcxKToKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgYXJnMjogZnVuYyhhcmcxLCBhcmcyKQorCisgICAgICAgIGRlZiBsZXNzX3RoYW4oYSwgYik6CisgICAgICAgICAgICByZXR1cm4gYSA8IGIKKworICAgICAgICAjIFRoZSBpbmZhbW91cyBZIGNvbWJpbmF0b3IuCisgICAgICAgIGRlZiBZKGxlKToKKyAgICAgICAgICAgIGRlZiBnKGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBsZShsYW1iZGEgeDogZihmKSh4KSkKKyAgICAgICAgICAgIFkuZ19yZWYgPSBnCisgICAgICAgICAgICByZXR1cm4gZyhnKQorCisgICAgICAgIGRlZiBjaGVja195X2NvbWJpbmF0b3IoZnVuYyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ub25sb2NhbF92YXJzKGZ1bmMpLCB7J2YnOiBZLmdfcmVmfSkKKworICAgICAgICBpbmMgPSBtYWtlX2FkZGVyKDEpCisgICAgICAgIGFkZF90d28gPSBtYWtlX2FkZGVyKDIpCisgICAgICAgIGdyZWF0ZXJfdGhhbl9maXZlID0gY3VycnkobGVzc190aGFuLCA1KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX25vbmxvY2FsX3ZhcnMoaW5jKSwgeyd4JzogMX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX25vbmxvY2FsX3ZhcnMoYWRkX3R3byksIHsneCc6IDJ9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ub25sb2NhbF92YXJzKGdyZWF0ZXJfdGhhbl9maXZlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2FyZzEnOiA1LCAnZnVuYyc6IGxlc3NfdGhhbn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX25vbmxvY2FsX3ZhcnMoKGxhbWJkYSB4OiBsYW1iZGEgeTogeCArIHkpKDMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J3gnOiAzfSkKKyAgICAgICAgWShjaGVja195X2NvbWJpbmF0b3IpCisKKyAgICBkZWYgdGVzdF9nZXRjbG9zdXJldmFyc19lbXB0eShzZWxmKToKKyAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgIF9lbXB0eSA9IGluc3BlY3QuQ2xvc3VyZVZhcnMoe30sIHt9LCB7fSwgc2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhsYW1iZGE6IFRydWUpLCBfZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmb28pLCBfZW1wdHkpCisKKyAgICBkZWYgdGVzdF9nZXRjbG9zdXJldmFyc19lcnJvcihzZWxmKToKKyAgICAgICAgY2xhc3MgVDogcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRjbG9zdXJldmFycywgbGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGNsb3N1cmV2YXJzLCB7fSkKKworICAgIGRlZiBfcHJpdmF0ZV9nbG9iYWxzKHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiZGVmIGYoKTogcHJpbnQocGF0aCkiIiIKKyAgICAgICAgbnMgPSB7fQorICAgICAgICBleGVjKGNvZGUsIG5zKQorICAgICAgICByZXR1cm4gbnNbImYiXSwgbnMKKworICAgIGRlZiB0ZXN0X2J1aWx0aW5zX2ZhbGxiYWNrKHNlbGYpOgorICAgICAgICBmLCBucyA9IHNlbGYuX3ByaXZhdGVfZ2xvYmFscygpCisgICAgICAgIG5zLnBvcCgiX19idWlsdGluc19fIiwgTm9uZSkKKyAgICAgICAgZXhwZWN0ZWQgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKHt9LCB7fSwgeyJwcmludCI6cHJpbnR9LCB7InBhdGgifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2J1aWx0aW5zX2FzX2RpY3Qoc2VsZik6CisgICAgICAgIGYsIG5zID0gc2VsZi5fcHJpdmF0ZV9nbG9iYWxzKCkKKyAgICAgICAgbnNbIl9fYnVpbHRpbnNfXyJdID0geyJwYXRoIjoxfQorICAgICAgICBleHBlY3RlZCA9IGluc3BlY3QuQ2xvc3VyZVZhcnMoe30sIHt9LCB7InBhdGgiOjF9LCB7InByaW50In0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9idWlsdGluc19hc19tb2R1bGUoc2VsZik6CisgICAgICAgIGYsIG5zID0gc2VsZi5fcHJpdmF0ZV9nbG9iYWxzKCkKKyAgICAgICAgbnNbIl9fYnVpbHRpbnNfXyJdID0gb3MKKyAgICAgICAgZXhwZWN0ZWQgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKHt9LCB7fSwgeyJwYXRoIjpvcy5wYXRofSwgeyJwcmludCJ9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZiksIGV4cGVjdGVkKQorCisKIGNsYXNzIFRlc3RHZXRjYWxsYXJnc0Z1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgYXNzZXJ0RXF1YWxDYWxsQXJncyhzZWxmLCBmdW5jLCBjYWxsX3BhcmFtc19zdHJpbmcsIGxvY3M9Tm9uZSk6CkBAIC0xMTY5LDYgKzEzMDEsOTcyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHJlcHIoc3RhdGUpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzdHIoc3RhdGUpKQogCisgICAgZGVmIHRlc3RfZ2V0Z2VuZXJhdG9ybG9jYWxzKHNlbGYpOgorICAgICAgICBkZWYgZWFjaChsc3QsIGE9Tm9uZSk6CisgICAgICAgICAgICBiPSgxLCAyLCAzKQorICAgICAgICAgICAgZm9yIHYgaW4gbHN0OgorICAgICAgICAgICAgICAgIGlmIHYgPT0gMzoKKyAgICAgICAgICAgICAgICAgICAgYyA9IDEyCisgICAgICAgICAgICAgICAgeWllbGQgdgorCisgICAgICAgIG51bWJlcnMgPSBlYWNoKFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhudW1iZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiBOb25lLCAnbHN0JzogWzEsIDIsIDNdfSkKKyAgICAgICAgbmV4dChudW1iZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG51bWJlcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IE5vbmUsICdsc3QnOiBbMSwgMiwgM10sICd2JzogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2InOiAoMSwgMiwgMyl9KQorICAgICAgICBuZXh0KG51bWJlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2xzdCc6IFsxLCAyLCAzXSwgJ3YnOiAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYic6ICgxLCAyLCAzKX0pCisgICAgICAgIG5leHQobnVtYmVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhudW1iZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiBOb25lLCAnbHN0JzogWzEsIDIsIDNdLCAndic6IDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdiJzogKDEsIDIsIDMpLCAnYyc6IDEyfSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChudW1iZXJzKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhudW1iZXJzKSwge30pCisKKyAgICBkZWYgdGVzdF9nZXRnZW5lcmF0b3Jsb2NhbHNfZW1wdHkoc2VsZik6CisgICAgICAgIGRlZiB5aWVsZF9vbmUoKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgb25lID0geWllbGRfb25lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhvbmUpLCB7fSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChvbmUpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG9uZSksIHt9KQorCisgICAgZGVmIHRlc3RfZ2V0Z2VuZXJhdG9ybG9jYWxzX2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzLCBsYW1iZGEgeDogVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2Fscywgc2V0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzLCAoMiwzKSkKKworCitjbGFzcyBUZXN0U2lnbmF0dXJlT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHNpZ25hdHVyZShmdW5jKToKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuYykKKyAgICAgICAgcmV0dXJuICh0dXBsZSgocGFyYW0ubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgKC4uLiBpZiBwYXJhbS5kZWZhdWx0IGlzIHBhcmFtLmVtcHR5IGVsc2UgcGFyYW0uZGVmYXVsdCksCisgICAgICAgICAgICAgICAgICAgICAgICguLi4gaWYgcGFyYW0uYW5ub3RhdGlvbiBpcyBwYXJhbS5lbXB0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHBhcmFtLmFubm90YXRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICBzdHIocGFyYW0ua2luZCkubG93ZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKSksCisgICAgICAgICAgICAgICAgKC4uLiBpZiBzaWcucmV0dXJuX2Fubm90YXRpb24gaXMgc2lnLmVtcHR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2lnLnJldHVybl9hbm5vdGF0aW9uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vYmplY3Qoc2VsZik6CisgICAgICAgIFMgPSBpbnNwZWN0LlNpZ25hdHVyZQorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihTKCkpLCAnKCknKQorCisgICAgICAgIGRlZiB0ZXN0KHBvLCBwaywgKmFyZ3MsIGtvLCAqKmt3YXJncyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIHBvID0gc2lnLnBhcmFtZXRlcnNbJ3BvJ10ucmVwbGFjZShraW5kPVAuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBwayA9IHNpZy5wYXJhbWV0ZXJzWydwayddCisgICAgICAgIGFyZ3MgPSBzaWcucGFyYW1ldGVyc1snYXJncyddCisgICAgICAgIGtvID0gc2lnLnBhcmFtZXRlcnNbJ2tvJ10KKyAgICAgICAga3dhcmdzID0gc2lnLnBhcmFtZXRlcnNbJ2t3YXJncyddCisKKyAgICAgICAgUygocG8sIHBrLCBhcmdzLCBrbywga3dhcmdzKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ3dyb25nIHBhcmFtZXRlciBvcmRlcicpOgorICAgICAgICAgICAgUygocGssIHBvLCBhcmdzLCBrbywga3dhcmdzKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ3dyb25nIHBhcmFtZXRlciBvcmRlcicpOgorICAgICAgICAgICAgUygocG8sIGFyZ3MsIHBrLCBrbywga3dhcmdzKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ3dyb25nIHBhcmFtZXRlciBvcmRlcicpOgorICAgICAgICAgICAgUygoYXJncywgcG8sIHBrLCBrbywga3dhcmdzKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ3dyb25nIHBhcmFtZXRlciBvcmRlcicpOgorICAgICAgICAgICAgUygocG8sIHBrLCBhcmdzLCBrd2FyZ3MsIGtvKSkKKworICAgICAgICBrd2FyZ3MyID0ga3dhcmdzLnJlcGxhY2UobmFtZT0nYXJncycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lJyk6CisgICAgICAgICAgICBTKChwbywgcGssIGFyZ3MsIGt3YXJnczIsIGtvKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9pbW11dGFiaWxpdHkoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2lnLmZvbyA9ICdiYXInCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2lnLnBhcmFtZXRlcnNbJ2EnXSA9IE5vbmUKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9ub2FyZyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZSh0ZXN0KSwgKCgpLCAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX3dhcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhLCBiOidmb28nKSAtPiAxMjM6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUodGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAnZm9vJywgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMTIzKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl93a3dvbmx5KHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgqLCBhOmZsb2F0LCBiOnN0cikgLT4gaW50OgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCBmbG9hdCwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCBzdHIsICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2NvbXBsZXhfYXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSwgYjonZm9vJz0xMCwgKmFyZ3M6J2JhcicsIHNwYW06J2JheicsIGhhbT0xMjMsICoqa3dhcmdzOmludCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUodGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMTAsICdmb28nLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZ3MnLCAuLi4sICdiYXInLCAidmFyX3Bvc2l0aW9uYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnc3BhbScsIC4uLiwgJ2JheicsICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnaGFtJywgMTIzLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCBpbnQsICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9idWlsdGluX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ25vdCBzdXBwb3J0ZWQgYnkgc2lnbmF0dXJlJyk6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZSh0eXBlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ25vdCBzdXBwb3J0ZWQgYnkgc2lnbmF0dXJlJyk6CisgICAgICAgICAgICAjIHN1cHBvcnQgZm9yICd3cmFwcGVyX2Rlc2NyaXB0b3InCisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZSh0eXBlLl9fY2FsbF9fKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ25vdCBzdXBwb3J0ZWQgYnkgc2lnbmF0dXJlJyk6CisgICAgICAgICAgICAjIHN1cHBvcnQgZm9yICdtZXRob2Qtd3JhcHBlcicKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKG1pbi5fX2NhbGxfXykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNpZ25hdHVyZSBmb3VuZCBmb3IgYnVpbHRpbiBmdW5jdGlvbicpOgorICAgICAgICAgICAgIyBzdXBwb3J0IGZvciAnbWV0aG9kLXdyYXBwZXInCisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShtaW4pCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbm9uX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaXMgbm90IGEgY2FsbGFibGUgb2JqZWN0Jyk6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZSg0MikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uJyk6CisgICAgICAgICAgICBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKDQyKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX21ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdDoKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgYXJnMSwgYXJnMj0xKSAtPiBpbnQ6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1ldGggPSBUZXN0KCkuZm9vCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShtZXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJnMScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZzInLCAxLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fY2xhc3NtZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3Q6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oY2xzLCBhcmcxLCAqLCBhcmcyPTEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtZXRoID0gVGVzdCgpLmZvbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKG1ldGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmcxJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJnMicsIDEsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBtZXRoID0gVGVzdC5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShtZXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJnMScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZzInLCAxLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fc3RhdGljbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0OgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhjbHMsICosIGFyZyk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1ldGggPSBUZXN0KCkuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUobWV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2NscycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZycsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIG1ldGggPSBUZXN0LmZvbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKG1ldGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdjbHMnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9wYXJ0aWFsKHNlbGYpOgorICAgICAgICBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QpKSwgKCgpLCAuLi4pKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiaGFzIGluY29ycmVjdCBhcmd1bWVudHMiKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMSkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJoYXMgaW5jb3JyZWN0IGFyZ3VtZW50cyIpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCBhPTEpKQorCisgICAgICAgIGRlZiB0ZXN0KGEsIGIsICosIGMsIGQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2QnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2QnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMSwgYz0yKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgMiwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2QnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgYj0xLCBjPTIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAxLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIDIsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDAsIGI9MSwgYz0yKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2InLCAxLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIDIsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGRlZiB0ZXN0KGEsICphcmdzLCBiLCAqKmt3YXJncyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJncycsIC4uLiwgLi4uLCAidmFyX3Bvc2l0aW9uYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgLi4uLCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEsIDIsIDMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJncycsIC4uLiwgLi4uLCAidmFyX3Bvc2l0aW9uYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgLi4uLCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMSwgMiwgMywgdGVzdD1UcnVlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxLCAyLCAzLCB0ZXN0PTEsIGI9MCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMCwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgLi4uLCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIGI9MCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJncycsIC4uLiwgLi4uLCAidmFyX3Bvc2l0aW9uYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDAsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCBiPTAsIHRlc3Q9MSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJncycsIC4uLiwgLi4uLCAidmFyX3Bvc2l0aW9uYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDAsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGM6aW50KSAtPiA0MjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzaWcgPSB0ZXN0Ll9fc2lnbmF0dXJlX18gPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbChwYXJ0aWFsKHRlc3QsIDEpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgLi4uLCBpbnQsICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIDQyKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwocGFydGlhbCh0ZXN0LCAxKSwgMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdjJywgLi4uLCBpbnQsICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICA0MikpCisKKyAgICAgICAgcHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHBhcnRpYWwocGFydGlhbCh0ZXN0LCAxKSwgMikpCisKKyAgICAgICAgZGVmIGZvbyhhKToKKyAgICAgICAgICAgIHJldHVybiBhCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKHBhcnRpYWwoZm9vLCBhPTEwKSwgYT0yMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShfZm9vKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIDIwLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorICAgICAgICAjIGNoZWNrIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgc2lkZS1lZmZlY3RzIGluIHNpZ25hdHVyZSgpLAorICAgICAgICAjIGFuZCB0aGUgcGFydGlhbCBvYmplY3QgaXMgc3RpbGwgZnVuY3Rpb25pbmcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKCksIDIwKQorCisgICAgICAgIGRlZiBmb28oYSwgYiwgYyk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYworICAgICAgICBfZm9vID0gcGFydGlhbChwYXJ0aWFsKGZvbywgMSwgYj0yMCksIGI9MzApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoX2ZvbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2InLCAzMCwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKGM9MTApLCAoMSwgMzAsIDEwKSkKKyAgICAgICAgX2ZvbyA9IHBhcnRpYWwoX2ZvbywgMikgIyBub3cgJ2InIGhhcyB0d28gdmFsdWVzIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiaGFzIGluY29ycmVjdCBhcmd1bWVudHMiKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKF9mb28pCisKKyAgICAgICAgZGVmIGZvbyhhLCBiLCBjLCAqLCBkKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjLCBkCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKHBhcnRpYWwoZm9vLCBkPTIwLCBjPTIwKSwgYj0xMCwgZD0zMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShfZm9vKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAxMCwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAyMCwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2QnLCAzMCwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorICAgICAgICBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKF9mb28pLmJpbmQoYT0yMDAsIGI9MTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMjAwLCAxMSwgMjAsIDMwKSkKKworICAgICAgICBkZWYgZm9vKGE9MSwgYj0yLCBjPTMpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKyAgICAgICAgX2ZvbyA9IHBhcnRpYWwoZm9vLCBhPTEwLCBjPTEzKQorICAgICAgICBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKF9mb28pLmJpbmQoMTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTEsIDIsIDEzKSkKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKDExLCAxMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKCpiYS5hcmdzLCAqKmJhLmt3YXJncyksICgxMSwgMTIsIDEzKSkKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKDExLCBiPTEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDExLCAxMiwgMTMpKQorICAgICAgICBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKF9mb28pLmJpbmQoYj0xMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKCpiYS5hcmdzLCAqKmJhLmt3YXJncyksICgxMCwgMTIsIDEzKSkKKyAgICAgICAgX2ZvbyA9IHBhcnRpYWwoX2ZvbywgYj0xMCkKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKDEyLCAxNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKCpiYS5hcmdzLCAqKmJhLmt3YXJncyksICgxMiwgMTQsIDEzKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9kZWNvcmF0ZWQoc2VsZik6CisgICAgICAgIGltcG9ydCBmdW5jdG9vbHMKKworICAgICAgICBkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgICAgICAgICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQorICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKSAtPiBpbnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXIKKworICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBAZGVjb3JhdG9yCisgICAgICAgICAgICBkZWYgYmFyKHNlbGYsIGEsIGIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEZvby5iYXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdzZWxmJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEZvbygpLmJhciksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgaGFuZGxlIG1ldGhvZCB3cmFwcGVycyBjb3JyZWN0bHkKKyAgICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKKyAgICAgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKKyAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3YXJncykgLT4gaW50OgorICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKDQyLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmdW5jKQorICAgICAgICAgICAgbmV3X3BhcmFtcyA9IHR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKVsxOl0KKyAgICAgICAgICAgIHdyYXBwZXIuX19zaWduYXR1cmVfXyA9IHNpZy5yZXBsYWNlKHBhcmFtZXRlcnM9bmV3X3BhcmFtcykKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVyCisKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgQGRlY29yYXRvcgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGEsIGIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEZvby5fX2NhbGxfXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShGb28oKS5fX2NhbGxfXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgY2xhc3MgQ00odHlwZSk6CisgICAgICAgICAgICBkZWYgX19jYWxsX18oY2xzLCBhKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUNNKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBDTSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBkY3QsICosIGZvbz0xKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBkY3QpCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUNNKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKENNKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnbmFtZScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Jhc2VzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZGN0JywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm9vJywgMSwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIENNTSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBkY3QsICosIGZvbz0xKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBkY3QpCisgICAgICAgICAgICBkZWYgX19jYWxsX18oY2xzLCBubSwgYnMsIGR0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZShubSwgYnMsIGR0KQorICAgICAgICBjbGFzcyBDTSh0eXBlLCBtZXRhY2xhc3M9Q01NKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBkY3QsICosIGJhcj0yKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBkY3QpCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUNNKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDTU0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCduYW1lJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYmFzZXMnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkY3QnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdmb28nLCAxLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDTSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ25tJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYnMnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkdCcsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgY2xhc3MgQ00odHlwZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oY2xzLCBuYW1lLCBiYXNlcywgZGN0LCAqLCBiYXI9Mik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19pbml0X18obmFtZSwgYmFzZXMsIGRjdCkKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9Q00pOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKENNKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnbmFtZScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Jhc2VzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZGN0JywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYmFyJywgMiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2NhbGxhYmxlX29iamVjdHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShGb28oKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgY2xhc3MgU3BhbToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgImlzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCIpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoU3BhbSgpKQorCisgICAgICAgIGNsYXNzIEJhcihTcGFtLCBGb28pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQmFyKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIFRvRmFpbDoKKyAgICAgICAgICAgIF9fY2FsbF9fID0gdHlwZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIm5vdCBzdXBwb3J0ZWQgYnkgc2lnbmF0dXJlIik6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShUb0ZhaWwoKSkKKworCisgICAgICAgIGNsYXNzIFdyYXBwZWQ6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIFdyYXBwZWQuX193cmFwcGVkX18gPSBsYW1iZGEgYTogTm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKFdyYXBwZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2xhbWJkYXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoKGxhbWJkYSBhPTEwOiBhKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAxMCwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9lcXVhbGl0eShzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhLCAqLCBiOmludCkgLT4gZmxvYXQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCA0MikKKworICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50KSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGJhcihhLCAqLCBiOmludCkgLT4gaW50OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50KTogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGJhcihhLCAqLCBiOmludD00MikgLT4gZmxvYXQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBiYXIoYSwgKiwgYykgLT4gZmxvYXQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBiYXIoYSwgYjppbnQpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgZGVmIHNwYW0oYjppbnQsIGEpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoc3BhbSksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGZvbygqLCBhLCBiLCBjKTogcGFzcworICAgICAgICBkZWYgYmFyKCosIGMsIGIsIGEpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgZm9vKCosIGE9MSwgYiwgYyk6IHBhc3MKKyAgICAgICAgZGVmIGJhcigqLCBjLCBiLCBhPTEpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgZm9vKHBvcywgKiwgYT0xLCBiLCBjKTogcGFzcworICAgICAgICBkZWYgYmFyKHBvcywgKiwgYywgYiwgYT0xKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGZvbyhwb3MsICosIGEsIGIsIGMpOiBwYXNzCisgICAgICAgIGRlZiBiYXIocG9zLCAqLCBjLCBiLCBhPTEpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgZm9vKHBvcywgKmFyZ3MsIGE9NDIsIGIsIGMsICoqa3dhcmdzOmludCk6IHBhc3MKKyAgICAgICAgZGVmIGJhcihwb3MsICphcmdzLCBjLCBiLCBhPTQyLCAqKmt3YXJnczppbnQpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV91bmhhc2hhYmxlKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEpOiBwYXNzCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScpOgorICAgICAgICAgICAgaGFzaChzaWcpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfc3RyKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGE6aW50PTEsICosIGIsIGM9Tm9uZSwgKiprd2FyZ3MpIC0+IDQyOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKGE6aW50PTEsICosIGIsIGM9Tm9uZSwgKiprd2FyZ3MpIC0+IDQyJykKKworICAgICAgICBkZWYgZm9vKGE6aW50PTEsICphcmdzLCBiLCBjPU5vbmUsICoqa3dhcmdzKSAtPiA0MjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyhhOmludD0xLCAqYXJncywgYiwgYz1Ob25lLCAqKmt3YXJncykgLT4gNDInKQorCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksICcoKScpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfc3RyX3Bvc2l0aW9uYWxfb25seShzZWxmKToKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisKKyAgICAgICAgZGVmIHRlc3QoYV9wbywgKiwgYiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGFfcG8sIGt3YXJncworCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIG5ld19wYXJhbXMgPSBsaXN0KHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKQorICAgICAgICBuZXdfcGFyYW1zWzBdID0gbmV3X3BhcmFtc1swXS5yZXBsYWNlKGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHRlc3QuX19zaWduYXR1cmVfXyA9IHNpZy5yZXBsYWNlKHBhcmFtZXRlcnM9bmV3X3BhcmFtcykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyg8YV9wbz4sICosIGIsICoqa3dhcmdzKScpCisKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKyAgICAgICAgbmV3X3BhcmFtcyA9IGxpc3Qoc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpCisgICAgICAgIG5ld19wYXJhbXNbMF0gPSBuZXdfcGFyYW1zWzBdLnJlcGxhY2UobmFtZT1Ob25lKQorICAgICAgICB0ZXN0Ll9fc2lnbmF0dXJlX18gPSBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKDwwPiwgKiwgYiwgKiprd2FyZ3MpJykKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9yZXBsYWNlX2Fubm8oc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCkgLT4gNDI6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKyAgICAgICAgc2lnID0gc2lnLnJlcGxhY2UocmV0dXJuX2Fubm90YXRpb249Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzaWcucmV0dXJuX2Fubm90YXRpb24sIE5vbmUpCisgICAgICAgIHNpZyA9IHNpZy5yZXBsYWNlKHJldHVybl9hbm5vdGF0aW9uPXNpZy5lbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzaWcucmV0dXJuX2Fubm90YXRpb24sIHNpZy5lbXB0eSkKKyAgICAgICAgc2lnID0gc2lnLnJlcGxhY2UocmV0dXJuX2Fubm90YXRpb249NDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnLnJldHVybl9hbm5vdGF0aW9uLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWcsIGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpKQorCisKK2NsYXNzIFRlc3RQYXJhbWV0ZXJPYmplY3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfa2luZHMoc2VsZik6CisgICAgICAgIFAgPSBpbnNwZWN0LlBhcmFtZXRlcgorICAgICAgICBzZWxmLmFzc2VydFRydWUoUC5QT1NJVElPTkFMX09OTFkgPCBQLlBPU0lUSU9OQUxfT1JfS0VZV09SRCA8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFAuVkFSX1BPU0lUSU9OQUwgPCBQLktFWVdPUkRfT05MWSA8IFAuVkFSX0tFWVdPUkQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUC5QT1NJVElPTkFMX09OTFkpLCAnUE9TSVRJT05BTF9PTkxZJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdQT1NJVElPTkFMX09OTFknIGluIHJlcHIoUC5QT1NJVElPTkFMX09OTFkpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9vYmplY3Qoc2VsZik6CisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignZm9vJywgZGVmYXVsdD0xMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5kZWZhdWx0LCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhwLmFubm90YXRpb24sIHAuZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5raW5kLCBpbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdpbnZhbGlkIHZhbHVlJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignZm9vJywgZGVmYXVsdD0xMCwga2luZD0nMTIzJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ25vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignMScsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX0tFWVdPUkQpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vbi1wb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVyJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcihOb25lLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX0tFWVdPUkQpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlcycpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJ2EnLCBkZWZhdWx0PTQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfUE9TSVRJT05BTCkKKworICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ2EnLCBkZWZhdWx0PTQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09SX0tFWVdPUkQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnKToKKyAgICAgICAgICAgIHAucmVwbGFjZShraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9QT1NJVElPTkFMKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKHApLnN0YXJ0c3dpdGgoJzxQYXJhbWV0ZXInKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIFAgPSBpbnNwZWN0LlBhcmFtZXRlcgorICAgICAgICBwID0gUCgnZm9vJywgZGVmYXVsdD00Miwga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBwKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHAsIDQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgUCgnZm9vJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfdW5oYXNoYWJsZShzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdmb28nLCBkZWZhdWx0PTQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScpOgorICAgICAgICAgICAgaGFzaChwKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9yZXBsYWNlKHNlbGYpOgorICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkKKworICAgICAgICBzZWxmLmFzc2VydElzTm90KHAsIHAucmVwbGFjZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIHAucmVwbGFjZSgpKQorCisgICAgICAgIHAyID0gcC5yZXBsYWNlKGFubm90YXRpb249MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5hbm5vdGF0aW9uLCAxKQorICAgICAgICBwMiA9IHAyLnJlcGxhY2UoYW5ub3RhdGlvbj1wMi5lbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBwMikKKworICAgICAgICBwMiA9IHAyLnJlcGxhY2UobmFtZT0nYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5uYW1lLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwMiwgcCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ25vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJyk6CisgICAgICAgICAgICBwMiA9IHAyLnJlcGxhY2UobmFtZT1wMi5lbXB0eSkKKworICAgICAgICBwMiA9IHAyLnJlcGxhY2UobmFtZT0nZm9vJywgZGVmYXVsdD1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydElzKHAyLmRlZmF1bHQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocDIsIHApCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKG5hbWU9J2ZvbycsIGRlZmF1bHQ9cDIuZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocDIuZGVmYXVsdCwgcDIuZW1wdHkpCisKKworICAgICAgICBwMiA9IHAyLnJlcGxhY2UoZGVmYXVsdD00Miwga2luZD1wMi5QT1NJVElPTkFMX09SX0tFWVdPUkQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIua2luZCwgcDIuUE9TSVRJT05BTF9PUl9LRVlXT1JEKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHAyLCBwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnaW52YWxpZCB2YWx1ZSBmb3InKToKKyAgICAgICAgICAgIHAyID0gcDIucmVwbGFjZShraW5kPXAyLmVtcHR5KQorCisgICAgICAgIHAyID0gcDIucmVwbGFjZShraW5kPXAyLktFWVdPUkRfT05MWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMiwgcCkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfcG9zaXRpb25hbF9vbmx5KHNlbGYpOgorICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoTm9uZSwga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHApLCAnPD4nKQorCisgICAgICAgIHAgPSBwLnJlcGxhY2UobmFtZT0nMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHApLCAnPDE+JykKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfaW1tdXRhYmlsaXR5KHNlbGYpOgorICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoTm9uZSwga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBwLmZvbyA9ICdiYXInCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBwLmtpbmQgPSAxMjMKKworCitjbGFzcyBUZXN0U2lnbmF0dXJlQmluZCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjYWxsKGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZ1bmMpCisgICAgICAgIGJhID0gc2lnLmJpbmQoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gZnVuYygqYmEuYXJncywgKipiYS5rd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9lbXB0eShzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHJldHVybiA0MgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QpLCA0MikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgc3BhbT0xMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgc3BhbT0xKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfdmFyKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGFyZ3MsIGt3YXJncworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QpLCAoKCksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSksICgoMSwpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIpLCAoKDEsIDIpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGZvbz0nYmFyJyksICgoKSwgeydmb28nOiAnYmFyJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBmb289J2JhcicpLCAoKDEsKSwgeydmb28nOiAnYmFyJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBhcmdzPTEwKSwgKCgpLCB7J2FyZ3MnOiAxMH0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCBmb289J2JhcicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoMSwgMiksIHsnZm9vJzogJ2Jhcid9KSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2p1c3RfYXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSwgYiwgYyk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMpLCAoMSwgMiwgMykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMiwgMywgNCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiJ2InIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICInYScgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QpCisKKyAgICAgICAgZGVmIHRlc3QoYSwgYiwgYz0xMCk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzKSwgKDEsIDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyKSwgKDEsIDIsIDEwKSkKKworICAgICAgICBkZWYgdGVzdChhPTEsIGI9MiwgYz0zKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGE9MTAsIGM9MTMpLCAoMTAsIDIsIDEzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYT0xMCksICgxMCwgMiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGI9MTApLCAoMSwgMTAsIDMpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfdmFyYXJnc19vcmRlcihzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGFyZ3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0KSwgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMpLCAoMSwgMiwgMykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9hcmdzX2FuZF92YXJhcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhLCBiLCBjPTMsICphcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjLCBhcmdzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgMywgNCwgNSksICgxLCAyLCAzLCAoNCwgNSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyKSwgKDEsIDIsIDMsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYj0xLCBhPTIpLCAoMiwgMSwgMywgKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiPTIpLCAoMSwgMiwgMywgKCkpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJ2MnIik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMiwgMywgYz00KQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfanVzdF9rd2FyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBrd2FyZ3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0KSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9hcmdzX2FuZF9rd2FyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGM9MywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMsIGt3YXJncworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIpLCAoMSwgMiwgMywge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCBmb289J2JhcicsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCAzLCB7J2Zvbyc6ICdiYXInLCAnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGI9MiwgYT0xLCBmb289J2JhcicsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCAzLCB7J2Zvbyc6ICdiYXInLCAnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGE9MSwgYj0yLCBmb289J2JhcicsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCAzLCB7J2Zvbyc6ICdiYXInLCAnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGI9MiwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgMywgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiPTIsIGM9NCwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgNCwgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCA0LCBmb289J2JhcicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCA0LCB7J2Zvbyc6ICdiYXInfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGM9NSwgYT00LCBiPTMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICg0LCAzLCA1LCB7fSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9rd29ubHkoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCosIGZvbyk6CisgICAgICAgICAgICByZXR1cm4gZm9vCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgZm9vPTEpLCAxKQorCisgICAgICAgIGRlZiB0ZXN0KGEsICosIGZvbz0xLCBiYXIpOgorICAgICAgICAgICAgcmV0dXJuIGZvbworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInYmFyJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlIik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKKworICAgICAgICBkZWYgdGVzdChmb28sICosIGJhcik6CisgICAgICAgICAgICByZXR1cm4gZm9vLCBiYXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIpLCAoMSwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGJhcj0yLCBmb289MSksICgxLCAyKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIGJhcj0yLCBmb289MSwgc3BhbT0xMCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCBiYXI9MikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yLCBzcGFtPSdoYW0nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiYXInIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQorCisgICAgICAgIGRlZiB0ZXN0KGZvbywgKiwgYmFyLCAqKmJpbik6CisgICAgICAgICAgICByZXR1cm4gZm9vLCBiYXIsIGJpbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9MiksICgxLCAyLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGZvbz0xLCBiYXI9MiksICgxLCAyLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgeydzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgc3BhbT0naGFtJywgZm9vPTEsIGJhcj0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgeydzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2ZvbycgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIHNwYW09J2hhbScsIGJhcj0yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9MiwgYmluPTEsIHNwYW09MTApLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCB7J2Jpbic6IDEsICdzcGFtJzogMTB9KSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSwgKmFyZ3MsIGIsIHo9MTAwLCAqKmt3YXJncyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIGJhID0gc2lnLmJpbmQoMTAsIDIwLCBiPTMwLCBjPTQwLCBhcmdzPTUwLCBrd2FyZ3M9NjApCisgICAgICAgICMgd2Ugd29uJ3QgaGF2ZSAneicgYXJndW1lbnQgaW4gdGhlIGJvdW5kIGFyZ3VtZW50cyBvYmplY3QsIGFzIHdlIGRpZG4ndAorICAgICAgICAjIHBhc3MgaXQgdG8gdGhlICdiaW5kJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKGJhLmFyZ3VtZW50cy5pdGVtcygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCdhJywgMTApLCAoJ2FyZ3MnLCAoMjAsKSksICgnYicsIDMwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCB7J2MnOiA0MCwgJ2FyZ3MnOiA1MCwgJ2t3YXJncyc6IDYwfSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLmt3YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2InOiAzMCwgJ2MnOiA0MCwgJ2FyZ3MnOiA1MCwgJ2t3YXJncyc6IDYwfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYS5hcmdzLCAoMTAsIDIwKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX3Bvc2l0aW9uYWxfb25seShzZWxmKToKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisKKyAgICAgICAgZGVmIHRlc3QoYV9wbywgYl9wbywgY19wbz0zLCBmb289NDIsICosIGJhcj01MCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGFfcG8sIGJfcG8sIGNfcG8sIGZvbywgYmFyLCBrd2FyZ3MKKworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBuZXdfcGFyYW1zID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QodHVwbGUoc2lnLnBhcmFtZXRlcnMuaXRlbXMoKSkpCisgICAgICAgIGZvciBuYW1lIGluICgnYV9wbycsICdiX3BvJywgJ2NfcG8nKToKKyAgICAgICAgICAgIG5ld19wYXJhbXNbbmFtZV0gPSBuZXdfcGFyYW1zW25hbWVdLnJlcGxhY2Uoa2luZD1QLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgbmV3X3NpZyA9IHNpZy5yZXBsYWNlKHBhcmFtZXRlcnM9bmV3X3BhcmFtcy52YWx1ZXMoKSkKKyAgICAgICAgdGVzdC5fX3NpZ25hdHVyZV9fID0gbmV3X3NpZworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDQsIDUsIGJhcj02KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgNCwgNSwgNiwge30pKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJwYXJhbWV0ZXIgaXMgcG9zaXRpb25hbCBvbmx5Iik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMiwgY19wbz00KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJwYXJhbWV0ZXIgaXMgcG9zaXRpb25hbCBvbmx5Iik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgYV9wbz0xLCBiX3BvPTIpCisKKworY2xhc3MgVGVzdEJvdW5kQXJndW1lbnRzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYm91bmRfYXJndW1lbnRzX3VuaGFzaGFibGUoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSk6IHBhc3MKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pLmJpbmQoMSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJyk6CisgICAgICAgICAgICBoYXNoKGJhKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c19lcXVhbGl0eShzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhKTogcGFzcworICAgICAgICBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykuYmluZCgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLCBiYSkKKworICAgICAgICBiYTIgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pLmJpbmQoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYSwgYmEyKQorCisgICAgICAgIGJhMyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykuYmluZCgyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGJhLCBiYTMpCisgICAgICAgIGJhMy5hcmd1bWVudHNbJ2EnXSA9IDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYSwgYmEzKQorCisgICAgICAgIGRlZiBiYXIoYik6IHBhc3MKKyAgICAgICAgYmE0ID0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKS5iaW5kKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYmEsIGJhNCkKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KApAQCAtMTE3Niw3ICsyMjc0LDggQEAKICAgICAgICAgVGVzdEludGVycHJldGVyU3RhY2ssIFRlc3RDbGFzc2VzQW5kRnVuY3Rpb25zLCBUZXN0UHJlZGljYXRlcywKICAgICAgICAgVGVzdEdldGNhbGxhcmdzRnVuY3Rpb25zLCBUZXN0R2V0Y2FsbGFyZ3NNZXRob2RzLAogICAgICAgICBUZXN0R2V0Y2FsbGFyZ3NVbmJvdW5kTWV0aG9kcywgVGVzdEdldGF0dHJTdGF0aWMsIFRlc3RHZXRHZW5lcmF0b3JTdGF0ZSwKLSAgICAgICAgVGVzdE5vRU9MCisgICAgICAgIFRlc3ROb0VPTCwgVGVzdFNpZ25hdHVyZU9iamVjdCwgVGVzdFNpZ25hdHVyZUJpbmQsIFRlc3RQYXJhbWV0ZXJPYmplY3QsCisgICAgICAgIFRlc3RCb3VuZEFyZ3VtZW50cywgVGVzdEdldENsb3N1cmVWYXJzCiAgICAgKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pby5weSBiL0xpYi90ZXN0L3Rlc3RfaW8ucHkKaW5kZXggMGMzZTBiOC4uNTczNTM1MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pby5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CkBAIC0xOSwyMCArMTksMjEgQEAKICMgdGVzdCBib3RoIGltcGxlbWVudGF0aW9ucy4gVGhpcyBmaWxlIGhhcyBsb3RzIG9mIGV4YW1wbGVzLgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAoraW1wb3J0IGFiYworaW1wb3J0IGFycmF5CitpbXBvcnQgZXJybm8KK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBvcworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKLWltcG9ydCBhcnJheQotaW1wb3J0IHJhbmRvbQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2Vha3JlZgotaW1wb3J0IGFiYwotaW1wb3J0IHNpZ25hbAotaW1wb3J0IGVycm5vCiBpbXBvcnQgd2FybmluZ3MKLWltcG9ydCBwaWNrbGUKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBjeWNsZSwgY291bnQKK2ltcG9ydCB3ZWFrcmVmCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSBpdGVydG9vbHMgaW1wb3J0IGN5Y2xlLCBjb3VudAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGltcG9ydCBjb2RlY3MKQEAgLTQ5LDcgKzUwLDcgQEAKIAogZGVmIF9kZWZhdWx0X2NodW5rX3NpemUoKToKICAgICAiIiJHZXQgdGhlIGRlZmF1bHQgVGV4dElPV3JhcHBlciBjaHVuayBzaXplIiIiCi0gICAgd2l0aCBvcGVuKF9fZmlsZV9fLCAiciIsIGVuY29kaW5nPSJsYXRpbjEiKSBhcyBmOgorICAgIHdpdGggb3BlbihfX2ZpbGVfXywgInIiLCBlbmNvZGluZz0ibGF0aW4tMSIpIGFzIGY6CiAgICAgICAgIHJldHVybiBmLl9DSFVOS19TSVpFCiAKIApAQCAtNjM0LDYgKzYzNSwxNSBAQAogICAgICAgICBmb3Igb2JqIGluIHRlc3Q6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihvYmosICJfX2RpY3RfXyIpKQogCisgICAgZGVmIHRlc3Rfb3BlbmVyKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiZWdnXG4iKQorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRPTkxZKQorICAgICAgICBkZWYgb3BlbmVyKHBhdGgsIGZsYWdzKToKKyAgICAgICAgICAgIHJldHVybiBmZAorICAgICAgICB3aXRoIHNlbGYub3Blbigibm9uLWV4aXN0ZW50IiwgInIiLCBvcGVuZXI9b3BlbmVyKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgImVnZ1xuIikKKwogICAgIGRlZiB0ZXN0X2ZpbGVpb19jbG9zZWZkKHNlbGYpOgogICAgICAgICAjIElzc3VlICM0ODQxCiAgICAgICAgIHdpdGggc2VsZi5vcGVuKF9fZmlsZV9fLCAncmInKSBhcyBmMSwgXApAQCAtNjk2LDcgKzcwNiw3IEBACiAgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbykKICAgICAgICAgIyBJbnZhbGlkIHdoZW5jZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBidWZpby5zZWVrLCAwLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnVmaW8uc2VlaywgMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnVmaW8uc2VlaywgMCwgOSkKIAogICAgIGRlZiB0ZXN0X292ZXJyaWRlX2Rlc3RydWN0b3Ioc2VsZik6CiAgICAgICAgIHRwID0gc2VsZi50cApAQCAtODYyLDYgKzg3MiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiZ2YiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvKGIpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiZ2YiKQorICAgICAgICByYXdpbyA9IHNlbGYuTW9ja1Jhd0lPKChiImFiYyIsIE5vbmUpKQorICAgICAgICBidWZpbyA9IHNlbGYudHAocmF3aW8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8oYiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJhYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8oYiksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJjYiIpCiAKICAgICBkZWYgdGVzdF9yZWFkbGluZXMoc2VsZik6CiAgICAgICAgIGRlZiBidWZpbygpOgpAQCAtMTI1Myw5ICsxMjY5LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYnVmaW8udGVsbCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYnVmaW8ud3JpdGUsIGIiYWJjZGVmIikKIAotICAgIGRlZiB0ZXN0X21heF9idWZmZXJfc2l6ZV9kZXByZWNhdGlvbihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgibWF4X2J1ZmZlcl9zaXplIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgIGRlZiB0ZXN0X21heF9idWZmZXJfc2l6ZV9yZW1vdmFsKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnRwKHNlbGYuTW9ja1Jhd0lPKCksIDgsIDEyKQogCiAKQEAgLTEzMTEsOSArMTMyNiw4IEBACiAgICAgICAgIHBhaXIgPSBzZWxmLnRwKHNlbGYuTW9ja1Jhd0lPKCksIHNlbGYuTW9ja1Jhd0lPKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuVW5zdXBwb3J0ZWRPcGVyYXRpb24sIHBhaXIuZGV0YWNoKQogCi0gICAgZGVmIHRlc3RfY29uc3RydWN0b3JfbWF4X2J1ZmZlcl9zaXplX2RlcHJlY2F0aW9uKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCJtYXhfYnVmZmVyX3NpemUgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgZGVmIHRlc3RfY29uc3RydWN0b3JfbWF4X2J1ZmZlcl9zaXplX3JlbW92YWwoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudHAoc2VsZi5Nb2NrUmF3SU8oKSwgc2VsZi5Nb2NrUmF3SU8oKSwgOCwgMTIpCiAKICAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl93aXRoX25vdF9yZWFkYWJsZShzZWxmKToKQEAgLTE4MjksMTEgKzE4NDMsMTEgQEAKICAgICAgICAgciA9IHNlbGYuQnl0ZXNJTyhiIlx4YzNceGE5XG5cbiIpCiAgICAgICAgIGIgPSBzZWxmLkJ1ZmZlcmVkUmVhZGVyKHIsIDEwMDApCiAgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYikKLSAgICAgICAgdC5fX2luaXRfXyhiLCBlbmNvZGluZz0ibGF0aW4xIiwgbmV3bGluZT0iXHJcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgImxhdGluMSIpCisgICAgICAgIHQuX19pbml0X18oYiwgZW5jb2Rpbmc9ImxhdGluLTEiLCBuZXdsaW5lPSJcclxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAibGF0aW4tMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5saW5lX2J1ZmZlcmluZywgRmFsc2UpCi0gICAgICAgIHQuX19pbml0X18oYiwgZW5jb2Rpbmc9InV0ZjgiLCBsaW5lX2J1ZmZlcmluZz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJ1dGY4IikKKyAgICAgICAgdC5fX2luaXRfXyhiLCBlbmNvZGluZz0idXRmLTgiLCBsaW5lX2J1ZmZlcmluZz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJ1dGYtOCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5saW5lX2J1ZmZlcmluZywgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXHhlOVxuIiwgdC5yZWFkbGluZSgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHQuX19pbml0X18sIGIsIG5ld2xpbmU9NDIpCkBAIC0xODgwLDExICsxODk0LDI5IEBACiAgICAgICAgIHQud3JpdGUoIkFcckIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIuZ2V0dmFsdWUoKSwgYiJYWVxuWkFcckIiKQogCisgICAgZGVmIHRlc3RfZGVmYXVsdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgb2xkX2Vudmlyb24gPSBkaWN0KG9zLmVudmlyb24pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgdHJ5IHRvIGdldCBhIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nIGRpZmZlcmVudCB0aGFuIHRoZSBjdXJyZW50CisgICAgICAgICAgICAjIGxvY2FsZSBlbmNvZGluZyB0byBjaGVjayB0aGF0IFRleHRJT1dyYXBwZXIoKSB1c2VzIHRoZSBjdXJyZW50CisgICAgICAgICAgICAjIGxvY2FsZSBlbmNvZGluZyBhbmQgbm90IHRoZSB1c2VyIHByZWZlcnJlZCBlbmNvZGluZworICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xDX0FMTCcsICdMQU5HJywgJ0xDX0NUWVBFJyk6CisgICAgICAgICAgICAgICAgaWYga2V5IGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uW2tleV0KKworICAgICAgICAgICAgY3VycmVudF9sb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCisgICAgICAgICAgICBiID0gc2VsZi5CeXRlc0lPKCkKKyAgICAgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgY3VycmVudF9sb2NhbGVfZW5jb2RpbmcpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKKyAgICAgICAgICAgIG9zLmVudmlyb24udXBkYXRlKG9sZF9lbnZpcm9uKQorCiAgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhlIGVuY29kaW5nIGF0dHJpYnV0ZSBpcyBhbHdheXMgc2V0LCBhbmQgdmFsaWQKICAgICAgICAgYiA9IHNlbGYuQnl0ZXNJTygpCi0gICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYiwgZW5jb2Rpbmc9InV0ZjgiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJ1dGY4IikKKyAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihiLCBlbmNvZGluZz0idXRmLTgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJ1dGYtOCIpCiAgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZW5jb2RpbmcgaXMgbm90IE5vbmUpCiAgICAgICAgIGNvZGVjcy5sb29rdXAodC5lbmNvZGluZykKQEAgLTE5NzcsOCArMjAwOSw4IEBACiAgICAgICAgIHRlc3RkYXRhID0gYiJBQUFcbkJCXHgwMEJcbkNDQ1xyREREXHJFRUVcclxuRkZGXHJcbkdHRyIKICAgICAgICAgbm9ybWFsaXplZCA9IHRlc3RkYXRhLnJlcGxhY2UoYiJcclxuIiwgYiJcbiIpLnJlcGxhY2UoYiJcciIsIGIiXG4iKQogICAgICAgICBmb3IgbmV3bGluZSwgZXhwZWN0ZWQgaW4gWwotICAgICAgICAgICAgKE5vbmUsIG5vcm1hbGl6ZWQuZGVjb2RlKCJhc2NpaSIpLnNwbGl0bGluZXMoVHJ1ZSkpLAotICAgICAgICAgICAgKCIiLCB0ZXN0ZGF0YS5kZWNvZGUoImFzY2lpIikuc3BsaXRsaW5lcyhUcnVlKSksCisgICAgICAgICAgICAoTm9uZSwgbm9ybWFsaXplZC5kZWNvZGUoImFzY2lpIikuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSksCisgICAgICAgICAgICAoIiIsIHRlc3RkYXRhLmRlY29kZSgiYXNjaWkiKS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKSwKICAgICAgICAgICAgICgiXG4iLCBbIkFBQVxuIiwgIkJCXHgwMEJcbiIsICJDQ0NcckRERFxyRUVFXHJcbiIsICJGRkZcclxuIiwgIkdHRyJdKSwKICAgICAgICAgICAgICgiXHJcbiIsIFsiQUFBXG5CQlx4MDBCXG5DQ0NcckRERFxyRUVFXHJcbiIsICJGRkZcclxuIiwgIkdHRyJdKSwKICAgICAgICAgICAgICgiXHIiLCAgWyJBQUFcbkJCXHgwMEJcbkNDQ1xyIiwgIkRERFxyIiwgIkVFRVxyIiwgIlxuRkZGXHIiLCAiXG5HR0ciXSksCkBAIC0yMDYzLDcgKzIwOTUsNyBAQAogCiAgICAgZGVmIHRlc3RfYmFzaWNfaW8oc2VsZik6CiAgICAgICAgIGZvciBjaHVua3NpemUgaW4gKDEsIDIsIDMsIDQsIDUsIDE1LCAxNiwgMTcsIDMxLCAzMiwgMzMsIDYzLCA2NCwgNjUpOgotICAgICAgICAgICAgZm9yIGVuYyBpbiAiYXNjaWkiLCAibGF0aW4xIiwgInV0ZjgiIDojICwgInV0Zi0xNi1iZSIsICJ1dGYtMTYtbGUiOgorICAgICAgICAgICAgZm9yIGVuYyBpbiAiYXNjaWkiLCAibGF0aW4tMSIsICJ1dGYtOCIgOiMgLCAidXRmLTE2LWJlIiwgInV0Zi0xNi1sZSI6CiAgICAgICAgICAgICAgICAgZiA9IHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgIncrIiwgZW5jb2Rpbmc9ZW5jKQogICAgICAgICAgICAgICAgIGYuX0NIVU5LX1NJWkUgPSBjaHVua3NpemUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYud3JpdGUoImFiYyIpLCAzKQpAQCAtMjExMyw3ICsyMTQ1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChybGluZXMsIHdsaW5lcykKIAogICAgIGRlZiB0ZXN0X3RlbGxpbmcoc2VsZik6Ci0gICAgICAgIGYgPSBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3KyIsIGVuY29kaW5nPSJ1dGY4IikKKyAgICAgICAgZiA9IHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgIncrIiwgZW5jb2Rpbmc9InV0Zi04IikKICAgICAgICAgcDAgPSBmLnRlbGwoKQogICAgICAgICBmLndyaXRlKCJceGZmXG4iKQogICAgICAgICBwMSA9IGYudGVsbCgpCkBAIC0yMzU5LDYgKzIzOTEsNyBAQAogICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgInciLCBlcnJvcnM9InJlcGxhY2UiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmVycm9ycywgInJlcGxhY2UiKQogCisgICAgQHN1cHBvcnQubm9fdHJhY2luZwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfdGhyZWFkc193cml0ZShzZWxmKToKICAgICAgICAgIyBJc3N1ZTY3NTA6IGNvbmN1cnJlbnQgd3JpdGVzIGNvdWxkIGR1cGxpY2F0ZSBkYXRhCkBAIC0yNjc2LDEyICsyNzA5LDYgQEAKIAogICAgIGRlZiB0ZXN0X2Jsb2NraW5naW9lcnJvcihzZWxmKToKICAgICAgICAgIyBWYXJpb3VzIEJsb2NraW5nSU9FcnJvciBpc3N1ZXMKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkJsb2NraW5nSU9FcnJvcikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkJsb2NraW5nSU9FcnJvciwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkJsb2NraW5nSU9FcnJvciwgMSwgMiwgMywgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkJsb2NraW5nSU9FcnJvciwgMSwgIiIsIE5vbmUpCi0gICAgICAgIGIgPSBzZWxmLkJsb2NraW5nSU9FcnJvcigxLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNoYXJhY3RlcnNfd3JpdHRlbiwgMCkKICAgICAgICAgY2xhc3MgQyhzdHIpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBjID0gQygiIikKQEAgLTI4MjMsNiArMjg1MCw3IEBACiAKICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5CbG9ja2luZ0lPRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sIGVycm5vLkVBR0FJTikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMl0sIGUuY2hhcmFjdGVyc193cml0dGVuKQogICAgICAgICAgICAgICAgICAgICBzZW50Wy0xXSA9IHNlbnRbLTFdWzplLmNoYXJhY3RlcnNfd3JpdHRlbl0KICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKHJmLnJlYWQoKSkKICAgICAgICAgICAgICAgICAgICAgbXNnID0gYidCTE9DS0VEJwpAQCAtMjgzNSw2ICsyODYzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5CbG9ja2luZ0lPRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sIGVycm5vLkVBR0FJTikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMl0sIGUuY2hhcmFjdGVyc193cml0dGVuKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuY2hhcmFjdGVyc193cml0dGVuLCAwKQogICAgICAgICAgICAgICAgICAgICByZWNlaXZlZC5hcHBlbmQocmYucmVhZCgpKQogCkBAIC0yODQ1LDYgKzI4NzQsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdmLmNsb3NlZCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJmLmNsb3NlZCkKIAorICAgIGRlZiB0ZXN0X2NyZWF0ZV9mYWlsKHNlbGYpOgorICAgICAgICAjICd4JyBtb2RlIGZhaWxzIGlmIGZpbGUgaXMgZXhpc3RpbmcKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICd3Jyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvciwgc2VsZi5vcGVuLCBzdXBwb3J0LlRFU1RGTiwgJ3gnKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX3dyaXRlcyhzZWxmKToKKyAgICAgICAgIyAneCcgbW9kZSBvcGVucyBmb3Igd3JpdGluZworICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgJ3hiJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYiJzcGFtIikKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIic3BhbSIsIGYucmVhZCgpKQorCiBjbGFzcyBDTWlzY0lPVGVzdChNaXNjSU9UZXN0KToKICAgICBpbyA9IGlvCiAKQEAgLTI4NjUsMTQgKzI5MDcsMTQgQEAKICAgICAgICAgMS8wCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtIGluICgnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLCAnZnJlZWJzZDcnKSwKLSAgICAgICAgICAgICAgICAgICAgICdpc3N1ZSAjMTI0Mjk6IHNraXAgdGVzdCBvbiBGcmVlQlNEIDw9IDcnKQogICAgIGRlZiBjaGVja19pbnRlcnJ1cHRlZF93cml0ZShzZWxmLCBpdGVtLCBieXRlcywgKipmZG9wZW5fa3dhcmdzKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBhIHBhcnRpYWwgd3JpdGUsIHdoZW4gaXQgZ2V0cyBpbnRlcnJ1cHRlZCwgcHJvcGVybHkKICAgICAgICAgaW52b2tlcyB0aGUgc2lnbmFsIGhhbmRsZXIsIGFuZCBidWJibGVzIHVwIHRoZSBleGNlcHRpb24gcmFpc2VkCiAgICAgICAgIGluIHRoZSBsYXR0ZXIuIiIiCiAgICAgICAgIHJlYWRfcmVzdWx0cyA9IFtdCiAgICAgICAgIGRlZiBfcmVhZCgpOgorICAgICAgICAgICAgaWYgaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKToKKyAgICAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWduYWwuU0lHQUxSTV0pCiAgICAgICAgICAgICBzID0gb3MucmVhZChyLCAxKQogICAgICAgICAgICAgcmVhZF9yZXN1bHRzLmFwcGVuZChzKQogICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X3JlYWQpCkBAIC0yODkwLDcgKzI5MzIsNyBAQAogICAgICAgICAgICAgIyBUaGUgYnVmZmVyZWQgSU8gbGF5ZXIgbXVzdCBjaGVjayBmb3IgcGVuZGluZyBzaWduYWwKICAgICAgICAgICAgICMgaGFuZGxlcnMsIHdoaWNoIGluIHRoaXMgY2FzZSB3aWxsIGludm9rZSBhbGFybV9pbnRlcnJ1cHQoKS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lvLndyaXRlLCBpdGVtICogKDEwMjQgKiAxMDI0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpby53cml0ZSwgaXRlbSAqIChzdXBwb3J0LlBJUEVfTUFYX1NJWkUgLy8gbGVuKGl0ZW0pKSkKICAgICAgICAgICAgIHQuam9pbigpCiAgICAgICAgICAgICAjIFdlIGdvdCBvbmUgYnl0ZSwgZ2V0IGFub3RoZXIgb25lIGFuZCBjaGVjayB0aGF0IGl0IGlzbid0IGEKICAgICAgICAgICAgICMgcmVwZWF0IG9mIHRoZSBmaXJzdCBvbmUuCkBAIC0yOTE3LDYgKzI5NTksNyBAQAogICAgIGRlZiB0ZXN0X2ludGVycnVwdGVkX3dyaXRlX3RleHQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfaW50ZXJydXB0ZWRfd3JpdGUoInh5IiwgYiJ4eSIsIG1vZGU9InciLCBlbmNvZGluZz0iYXNjaWkiKQogCisgICAgQHN1cHBvcnQubm9fdHJhY2luZwogICAgIGRlZiBjaGVja19yZWVudHJhbnRfd3JpdGUoc2VsZiwgZGF0YSwgKipmZG9wZW5fa3dhcmdzKToKICAgICAgICAgZGVmIG9uX2FsYXJtKCphcmdzKToKICAgICAgICAgICAgICMgV2lsbCBiZSBjYWxsZWQgcmVlbnRyYW50bHkgZnJvbSB0aGUgc2FtZSB0aHJlYWQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTljNTRmMQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CkBAIC0wLDAgKzEsMTY0OSBAQAorIyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgorIyAgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorCisiIiJVbml0dGVzdCBmb3IgaXBhZGRyZXNzIG1vZHVsZS4iIiIKKworCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCByZQoraW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBvcGVyYXRvcgoraW1wb3J0IGlwYWRkcmVzcworCitjbGFzcyBCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgT25lIGJpZyBjaGFuZ2UgaW4gaXBhZGRyZXNzIG92ZXIgdGhlIG9yaWdpbmFsIGlwYWRkciBtb2R1bGUgaXMKKyAgICAjIGVycm9yIHJlcG9ydGluZyB0aGF0IHRyaWVzIHRvIGFzc3VtZSB1c2VycyAqZG9uJ3Qga25vdyB0aGUgcnVsZXMqCisgICAgIyBmb3Igd2hhdCBjb25zdGl0dXRlcyBhbiBSRkMgY29tcGxpYW50IElQIGFkZHJlc3MKKworICAgICMgRW5zdXJpbmcgdGhlc2UgZXJyb3JzIGFyZSBlbWl0dGVkIGNvcnJlY3RseSBpbiBhbGwgcmVsZXZhbnQgY2FzZXMKKyAgICAjIG1lYW50IG1vdmluZyB0byBhIG1vcmUgc3lzdGVtYXRpYyB0ZXN0IHN0cnVjdHVyZSB0aGF0IGFsbG93cyB0aGUKKyAgICAjIHRlc3Qgc3RydWN0dXJlIHRvIG1hcCBtb3JlIGRpcmVjdGx5IHRvIHRoZSBtb2R1bGUgc3RydWN0dXJlCisKKyAgICAjIE5vdGUgdGhhdCBpZiB0aGUgY29uc3RydWN0b3JzIGFyZSByZWZhY3RvcmVkIHNvIHRoYXQgYWRkcmVzc2VzIHdpdGgKKyAgICAjIG11bHRpcGxlIHByb2JsZW1zIGdldCBjbGFzc2lmaWVkIGRpZmZlcmVudGx5LCB0aGF0J3MgT0sgLSBqdXN0CisgICAgIyBtb3ZlIHRoZSBhZmZlY3RlZCBleGFtcGxlcyB0byB0aGUgbmV3bHkgYXBwcm9wcmlhdGUgdGVzdCBjYXNlLgorCisgICAgIyBUaGVyZSBpcyBzb21lIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlIG9yaWdpbmFsIHJlbGF0aXZlbHkgYWQgaG9jCisgICAgIyB0ZXN0IHN1aXRlIGFuZCB0aGUgbmV3IHN5c3RlbWF0aWMgdGVzdHMuIFdoaWxlIHNvbWUgcmVkdW5kYW5jeSBpbgorICAgICMgdGVzdGluZyBpcyBjb25zaWRlcmVkIHByZWZlcmFibGUgdG8gYWNjaWRlbnRhbGx5IGRlbGV0aW5nIGEgdmFsaWQKKyAgICAjIHRlc3QsIHRoZSBvcmlnaW5hbCB0ZXN0IHN1aXRlIHdpbGwgbGlrZWx5IGJlIHJlZHVjZWQgb3ZlciB0aW1lIGFzCisgICAgIyByZWR1bmRhbnQgdGVzdHMgYXJlIGlkZW50aWZpZWQuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZmFjdG9yeShzZWxmKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgYXNzZXJ0Q2xlYW5FcnJvcihzZWxmLCBleGNfdHlwZSwgZGV0YWlscywgKmFyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgRW5zdXJlIGV4Y2VwdGlvbiBkb2VzIG5vdCBkaXNwbGF5IGEgY29udGV4dCBieSBkZWZhdWx0CisKKyAgICAgICAgV3JhcHMgdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0UmFpc2VzUmVnZXgKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGFyZ3M6CisgICAgICAgICAgICBkZXRhaWxzID0gZGV0YWlscyAlIGFyZ3MKKyAgICAgICAgY20gPSBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KGV4Y190eXBlLCBkZXRhaWxzKQorICAgICAgICB3aXRoIGNtIGFzIGV4YzoKKyAgICAgICAgICAgIHlpZWxkIGV4YworICAgICAgICAjIEVuc3VyZSB3ZSBwcm9kdWNlIGNsZWFuIHRyYWNlYmFja3Mgb24gZmFpbHVyZQorICAgICAgICBpZiBleGMuZXhjZXB0aW9uLl9fY29udGV4dF9fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4Yy5leGNlcHRpb24uX19zdXBwcmVzc19jb250ZXh0X18pCisKKyAgICBkZWYgYXNzZXJ0QWRkcmVzc0Vycm9yKHNlbGYsIGRldGFpbHMsICphcmdzKToKKyAgICAgICAgIiIiRW5zdXJlIGEgY2xlYW4gQWRkcmVzc1ZhbHVlRXJyb3IiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuYXNzZXJ0Q2xlYW5FcnJvcihpcGFkZHJlc3MuQWRkcmVzc1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLCAqYXJncykKKworICAgIGRlZiBhc3NlcnROZXRtYXNrRXJyb3Ioc2VsZiwgZGV0YWlscywgKmFyZ3MpOgorICAgICAgICAiIiJFbnN1cmUgYSBjbGVhbiBOZXRtYXNrVmFsdWVFcnJvciIiIgorICAgICAgICByZXR1cm4gc2VsZi5hc3NlcnRDbGVhbkVycm9yKGlwYWRkcmVzcy5OZXRtYXNrVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscywgKmFyZ3MpCisKKyAgICBkZWYgYXNzZXJ0SW5zdGFuY2VzRXF1YWwoc2VsZiwgbGhzLCByaHMpOgorICAgICAgICAiIiJDaGVjayBjb25zdHJ1Y3RvciBhcmd1bWVudHMgcHJvZHVjZSBlcXVpdmFsZW50IGluc3RhbmNlcyIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmFjdG9yeShsaHMpLCBzZWxmLmZhY3RvcnkocmhzKSkKKworY2xhc3MgQ29tbW9uVGVzdE1peGluOgorCisgICAgZGVmIHRlc3RfZW1wdHlfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkiKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgiIikKKworICAgIGRlZiB0ZXN0X2Zsb2F0c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUocmVwcigiMS4wIikpKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgxLjApCisKKyAgICBkZWYgdGVzdF9ub3RfYW5faW5kZXhfaXNzdWUxNTU1OShzZWxmKToKKyAgICAgICAgIyBJbXBsZW1lbnRpbmcgX19pbmRleF9fIG1ha2VzIGZvciBhIHZlcnkgbmFzdHkgaW50ZXJhY3Rpb24gd2l0aCB0aGUKKyAgICAgICAgIyBieXRlcyBjb25zdHJ1Y3Rvci4gVGh1cywgd2UgZGlzYWxsb3cgaW1wbGljaXQgdXNlIGFzIGFuIGludGVnZXIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pbmRleCwgc2VsZi5mYWN0b3J5KDEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhleCwgc2VsZi5mYWN0b3J5KDEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBzZWxmLmZhY3RvcnkoMSkpCisKKworY2xhc3MgQ29tbW9uVGVzdE1peGluX3Y0KENvbW1vblRlc3RNaXhpbik6CisKKyAgICBkZWYgdGVzdF9sZWFkaW5nX3plcm9zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKCIwMDAuMDAwLjAwMC4wMDAiLCAiMC4wLjAuMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoIjE5Mi4xNjguMDAwLjAwMSIsICIxOTIuMTY4LjAuMSIpCisKKyAgICBkZWYgdGVzdF9pbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMCwgIjAuMC4wLjAiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKDMyMzIyMzU1MjEsICIxOTIuMTY4LjAuMSIpCisKKyAgICBkZWYgdGVzdF9wYWNrZWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYnl0ZXMuZnJvbWhleCgiMDAwMDAwMDAiKSwgIjAuMC4wLjAiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIiksICIxOTIuMTY4LjAuMSIpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9pbnRzX3JlamVjdGVkKHNlbGYpOgorICAgICAgICBtc2cgPSAiLTEgKDwgMCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY0IGFkZHJlc3MiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZykpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KC0xKQorCisgICAgZGVmIHRlc3RfbGFyZ2VfaW50c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgbXNnID0gIiVkICg+PSAyKiozMikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY0IGFkZHJlc3MiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIDIqKjMyKSk6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoMioqMzIpCisKKyAgICBkZWYgdGVzdF9iYWRfcGFja2VkX2xlbmd0aChzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZExlbmd0aChsZW5ndGgpOgorICAgICAgICAgICAgYWRkciA9IGJ5dGVzKGxlbmd0aCkKKyAgICAgICAgICAgIG1zZyA9ICIlciAobGVuICVkICE9IDQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKGFkZHIsIGxlbmd0aCkpKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRMZW5ndGgoMykKKyAgICAgICAgYXNzZXJ0QmFkTGVuZ3RoKDUpCisKK2NsYXNzIENvbW1vblRlc3RNaXhpbl92NihDb21tb25UZXN0TWl4aW4pOgorCisgICAgZGVmIHRlc3RfbGVhZGluZ196ZXJvcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgiMDAwMDo6MDAwMCIsICI6OiIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoIjAwMDo6YzBhODowMDAxIiwgIjo6YzBhODoxIikKKworICAgIGRlZiB0ZXN0X2ludChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgwLCAiOjoiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKDMyMzIyMzU1MjEsICI6OmMwYTg6MSIpCisKKyAgICBkZWYgdGVzdF9wYWNrZWQoc2VsZik6CisgICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCIwMDAwMDAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgIjo6IikKKyAgICAgICAgYWRkciA9IGJ5dGVzKDEyKSArIGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiOjpjMGE4OjEiKQorICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGJ5dGVzKDEyKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICJjMGE4OjE6OiIpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9pbnRzX3JlamVjdGVkKHNlbGYpOgorICAgICAgICBtc2cgPSAiLTEgKDwgMCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY2IGFkZHJlc3MiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZykpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KC0xKQorCisgICAgZGVmIHRlc3RfbGFyZ2VfaW50c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgbXNnID0gIiVkICg+PSAyKioxMjgpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NiBhZGRyZXNzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAyKioxMjgpKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgyKioxMjgpCisKKyAgICBkZWYgdGVzdF9iYWRfcGFja2VkX2xlbmd0aChzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZExlbmd0aChsZW5ndGgpOgorICAgICAgICAgICAgYWRkciA9IGJ5dGVzKGxlbmd0aCkKKyAgICAgICAgICAgIG1zZyA9ICIlciAobGVuICVkICE9IDE2KSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjYgYWRkcmVzcyIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChhZGRyLCBsZW5ndGgpKSk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkTGVuZ3RoKDE1KQorICAgICAgICBhc3NlcnRCYWRMZW5ndGgoMTcpCisKKworY2xhc3MgQWRkcmVzc1Rlc3RDYXNlX3Y0KEJhc2VUZXN0Q2FzZSwgQ29tbW9uVGVzdE1peGluX3Y0KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzCisKKyAgICBkZWYgdGVzdF9uZXR3b3JrX3Bhc3NlZF9hc19hZGRyZXNzKHNlbGYpOgorICAgICAgICBhZGRyID0gIjEyNy4wLjAuMS8yNCIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiVW5leHBlY3RlZCAnLycgaW4gJXIiLCBhZGRyKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXQoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIkV4cGVjdGVkIDQgb2N0ZXRzIGluICVyIiwgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEyNy4wLjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuNDIuNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyLjQyLjQyLiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI0Mi40Mi40Mi40Mi4uLiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIuNDIuNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiLi4uNDIuNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMDE2LjAxNi4wMTYiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMDE2LjAxNiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIwMTYiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjB4MGEuMHgwYS4weDBhIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjB4MGEuMHgwYSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIweDBhIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIi4iKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiYm9ndXMiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiYm9ndXMuY29tIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEwMDAiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTAwMDAwMDAwMDAwMDAwMCIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxOTIuMTY4LjAuMS5jb20iKQorCisgICAgZGVmIHRlc3RfZW1wdHlfb2N0ZXQoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRPY3RldChhZGRyKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIkVtcHR5IG9jdGV0IG5vdCBwZXJtaXR0ZWQgaW4gJXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjQyLi40Mi40MiIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIuLi4iKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXJzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkT2N0ZXQoYWRkciwgb2N0ZXQpOgorICAgICAgICAgICAgbXNnID0gIk9ubHkgZGVjaW1hbCBkaWdpdHMgcGVybWl0dGVkIGluICVyIGluICVyIiAlIChvY3RldCwgYWRkcikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZykpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIweDBhLjB4MGEuMHgwYS4weDBhIiwgIjB4MGEiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMHhhLjB4MGEuMHgwYS4weDBhIiwgIjB4YSIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCI0Mi40Mi40Mi4tMCIsICItMCIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCI0Mi40Mi40Mi4rMCIsICIrMCIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCI0Mi40Mi40Mi4tNDIiLCAiLTQyIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIisxLisyLiszLjQiLCAiKzEiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMS4yLjMuNGUwIiwgIjRlMCIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIxLjIuMy40OjoiLCAiNDo6IikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjEuYS4yLjMiLCAiYSIpCisKKyAgICBkZWYgdGVzdF9vY3RhbF9kZWNpbWFsX2FtYmlndWl0eShzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE9jdGV0KGFkZHIsIG9jdGV0KToKKyAgICAgICAgICAgIG1zZyA9ICJBbWJpZ3VvdXMgKG9jdGFsL2RlY2ltYWwpIHZhbHVlIGluICVyIG5vdCBwZXJtaXR0ZWQgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAob2N0ZXQsIGFkZHIpKSk6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjAxNi4wMTYuMDE2LjAxNiIsICIwMTYiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMDAxLjAwMC4wMDguMDE2IiwgIjAwOCIpCisKKyAgICBkZWYgdGVzdF9vY3RldF9sZW5ndGgoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRPY3RldChhZGRyLCBvY3RldCk6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCAzIGNoYXJhY3RlcnMgcGVybWl0dGVkIGluICVyIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKG9jdGV0LCBhZGRyKSkpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIwMDAwLjAwMC4wMDAuMDAwIiwgIjAwMDAiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMTIzNDUuNjc4OTkuLTU0MzIxLi05ODc2NSIsICIxMjM0NSIpCisKKyAgICBkZWYgdGVzdF9vY3RldF9saW1pdChzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE9jdGV0KGFkZHIsIG9jdGV0KToKKyAgICAgICAgICAgIG1zZyA9ICJPY3RldCAlZCAoPiAyNTUpIG5vdCBwZXJtaXR0ZWQgaW4gJXIiICUgKG9jdGV0LCBhZGRyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnKSk6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjI1Ny4wLjAuMCIsIDI1NykKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjE5Mi4xNjguMC45OTkiLCA5OTkpCisKKworY2xhc3MgQWRkcmVzc1Rlc3RDYXNlX3Y2KEJhc2VUZXN0Q2FzZSwgQ29tbW9uVGVzdE1peGluX3Y2KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzCisKKyAgICBkZWYgdGVzdF9uZXR3b3JrX3Bhc3NlZF9hc19hZGRyZXNzKHNlbGYpOgorICAgICAgICBhZGRyID0gIjo6MS8yNCIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiVW5leHBlY3RlZCAnLycgaW4gJXIiLCBhZGRyKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfbm90X2Vub3VnaF9wYXJ0cyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkF0IGxlYXN0IDMgcGFydHMgZXhwZWN0ZWQgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKG1zZywgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiRkVEQzo5ODc4IikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X3Rvb19tYW55X2NvbG9ucyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgOCBjb2xvbnMgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI5Ojg6Nzo2OjU6NDozOjoyOjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTA6OTo4Ojc6Njo1OjQ6MzoyOjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjo4Ojc6Njo1OjQ6MzoyOjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiODo3OjY6NTo0OjM6MjoxOjoiKQorICAgICAgICAjIEEgdHJhaWxpbmcgSVB2NCBhZGRyZXNzIGlzIHR3byBwYXJ0cworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTA6OTo4Ojc6Njo1OjQ6Mzo0Mi40Mi40Mi40MiIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl90b29fbWFueV9wYXJ0cyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkV4YWN0bHkgOCBwYXJ0cyBleHBlY3RlZCB3aXRob3V0ICc6OicgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKG1zZywgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjNmZmU6MDowOjA6MDowOjA6MDoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjk6ODo3OjY6NTo0OjM6MjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjc6Njo1OjQ6MzoyOjEiKQorICAgICAgICAjIEEgdHJhaWxpbmcgSVB2NCBhZGRyZXNzIGlzIHR3byBwYXJ0cworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOTo4Ojc6Njo1OjQ6Mzo0Mi40Mi40Mi40MiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI3OjY6NTo0OjM6NDIuNDIuNDIuNDIiKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfdG9vX21hbnlfcGFydHNfd2l0aF9kb3VibGVfY29sb24oc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJFeHBlY3RlZCBhdCBtb3N0IDcgb3RoZXIgcGFydHMgd2l0aCAnOjonIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxOjI6Mzo0Ojo1OjY6Nzo4IikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X3JlcGVhdGVkX2RvdWJsZV9jb2xvbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3Qgb25lICc6OicgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIzZmZlOjoxOjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjE6OjI6OjM6OjQ6NSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIyMDAxOjpkYjo6OjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiM2ZmZTo6MTo6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo6M2ZmZTo6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6M2ZmZTo6MTo6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIzZmZlOjoxOjoxOiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6M2ZmZTo6MTo6MToiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjo6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoJzIwMDE6ZGI4Ojo6MScpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl9sZWFkaW5nX2NvbG9uKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICBtc2cgPSAiTGVhZGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6MjAwMTpkYjg6OjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjE6MjozOjQ6NTo2OjciKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjE6MjozOjQ6NTo2OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6Njo1OjQ6MzoyOjE6OiIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl90cmFpbGluZ19jb2xvbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIlRyYWlsaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKG1zZywgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjIwMDE6ZGI4OjoxOiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxOjI6Mzo0OjU6Njo3OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6OjEuMi4zLjQ6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo6Nzo2OjU6NDozOjI6IikKKworICAgIGRlZiB0ZXN0X2JhZF92NF9wYXJ0X2luKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoYWRkciwgdjRfZXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiJXMgaW4gJXIiLCB2NF9lcnJvciwgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjNmZmU6OjEubmV0IiwgIkV4cGVjdGVkIDQgb2N0ZXRzIGluICcxLm5ldCciKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzUGFydCgiM2ZmZTo6MTI3LjAuMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCA0IG9jdGV0cyBpbiAnMTI3LjAuMSciKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzUGFydCgiOjoxLjIuMyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCA0IG9jdGV0cyBpbiAnMS4yLjMnIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjo6MS4yLjMuNC41IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIDQgb2N0ZXRzIGluICcxLjIuMy40LjUnIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjNmZmU6OjEuMS4xLm5ldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IGRlY2ltYWwgZGlnaXRzIHBlcm1pdHRlZCBpbiAnbmV0JyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiAnMS4xLjEubmV0JyIpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NoYXJhY3RlcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRQYXJ0KGFkZHIsIHBhcnQpOgorICAgICAgICAgICAgbXNnID0gIk9ubHkgaGV4IGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJXIgaW4gJXIiICUgKHBhcnQsIGFkZHIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRQYXJ0KCIzZmZlOjpnb29nIiwgImdvb2ciKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIzZmZlOjotMCIsICItMCIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjNmZmU6OiswIiwgIiswIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6LTEiLCAiLTEiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIxLjIuMy40OjoiLCAiMS4yLjMuNCIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoJzEyMzQ6YXh5OjpiJywgImF4eSIpCisKKyAgICBkZWYgdGVzdF9wYXJ0X2xlbmd0aChzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFBhcnQoYWRkciwgcGFydCk6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCA0IGNoYXJhY3RlcnMgcGVybWl0dGVkIGluICVyIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIHBhcnQsIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjo6MDAwMDAiLCAiMDAwMDAiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIzZmZlOjoxMDAwMCIsICIxMDAwMCIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjAyMDAxOmRiODo6IiwgIjAyMDAxIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgnMjAwMTo4ODg4ODg6OjEnLCAiODg4ODg4IikKKworCitjbGFzcyBOZXRtYXNrVGVzdE1peGluX3Y0KENvbW1vblRlc3RNaXhpbl92NCk6CisgICAgIiIiSW5wdXQgdmFsaWRhdGlvbiBvbiBpbnRlcmZhY2VzIGFuZCBuZXR3b3JrcyBpcyB2ZXJ5IHNpbWlsYXIiIiIKKworICAgIGRlZiB0ZXN0X3NwbGl0X25ldG1hc2soc2VsZik6CisgICAgICAgIGFkZHIgPSAiMS4yLjMuNC8zMi8yNCIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiT25seSBvbmUgJy8nIHBlcm1pdHRlZCBpbiAlciIgJSBhZGRyKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19lcnJvcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRBZGRyZXNzKGFkZHIsIGRldGFpbHMpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihkZXRhaWxzKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIvIiwgIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5IikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiLzgiLCAiQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCJib2d1cyIsICJFeHBlY3RlZCA0IG9jdGV0cyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoImdvb2dsZS5jb20iLCAiRXhwZWN0ZWQgNCBvY3RldHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIxMC84IiwgIkV4cGVjdGVkIDQgb2N0ZXRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiOjoxLjIuMy40IiwgIk9ubHkgZGVjaW1hbCBkaWdpdHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIxLjIuMy4yNTYiLCByZS5lc2NhcGUoIjI1NiAoPiAyNTUpIikpCisKKyAgICBkZWYgdGVzdF9uZXRtYXNrX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE5ldG1hc2soYWRkciwgbmV0bWFzayk6CisgICAgICAgICAgICBtc2cgPSAiJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzayIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnROZXRtYXNrRXJyb3IobXNnICUgbmV0bWFzayk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KCIlcy8lcyIgJSAoYWRkciwgbmV0bWFzaykpCisKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4yLjMuNCIsICIiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCIxLjIuMy40IiwgIjMzIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4yLjMuNCIsICIyNTQuMjU0LjI1NS4yNTYiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCIxLjEuMS4xIiwgIjI1NC54eXouMi4zIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4xLjEuMSIsICIyNDAuMjU1LjAuMCIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMS4xLjEiLCAicHVkZGluZyIpCisKK2NsYXNzIEludGVyZmFjZVRlc3RDYXNlX3Y0KEJhc2VUZXN0Q2FzZSwgTmV0bWFza1Rlc3RNaXhpbl92NCk6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlCisKK2NsYXNzIE5ldHdvcmtUZXN0Q2FzZV92NChCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjQpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsKKworCitjbGFzcyBOZXRtYXNrVGVzdE1peGluX3Y2KENvbW1vblRlc3RNaXhpbl92Nik6CisgICAgIiIiSW5wdXQgdmFsaWRhdGlvbiBvbiBpbnRlcmZhY2VzIGFuZCBuZXR3b3JrcyBpcyB2ZXJ5IHNpbWlsYXIiIiIKKworICAgIGRlZiB0ZXN0X3NwbGl0X25ldG1hc2soc2VsZik6CisgICAgICAgIGFkZHIgPSAiY2FmZTpjYWZlOjovMTI4LzE5MCIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiT25seSBvbmUgJy8nIHBlcm1pdHRlZCBpbiAlciIgJSBhZGRyKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19lcnJvcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRBZGRyZXNzKGFkZHIsIGRldGFpbHMpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihkZXRhaWxzKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIvIiwgIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5IikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiLzgiLCAiQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCJnb29nbGUuY29tIiwgIkF0IGxlYXN0IDMgcGFydHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIxLjIuMy40IiwgIkF0IGxlYXN0IDMgcGFydHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIxMC84IiwgIkF0IGxlYXN0IDMgcGFydHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIxMjM0OmF4eTo6YiIsICJPbmx5IGhleCBkaWdpdHMiKQorCisgICAgZGVmIHRlc3RfbmV0bWFza19lcnJvcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWROZXRtYXNrKGFkZHIsIG5ldG1hc2spOgorICAgICAgICAgICAgbXNnID0gIiVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2siCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0TmV0bWFza0Vycm9yKG1zZyAlIG5ldG1hc2spOgorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgiJXMvJXMiICUgKGFkZHIsIG5ldG1hc2spKQorCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjo6MSIsICIiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAiOjoxIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgIjE6OiIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjo6MSIsICIxMjkiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAicHVkZGluZyIpCisKK2NsYXNzIEludGVyZmFjZVRlc3RDYXNlX3Y2KEJhc2VUZXN0Q2FzZSwgTmV0bWFza1Rlc3RNaXhpbl92Nik6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlCisKK2NsYXNzIE5ldHdvcmtUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjYpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsKKworCitjbGFzcyBGYWN0b3J5RnVuY3Rpb25FcnJvcnMoQmFzZVRlc3RDYXNlKToKKworICAgIGRlZiBhc3NlcnRGYWN0b3J5RXJyb3Ioc2VsZiwgZmFjdG9yeSwga2luZCk6CisgICAgICAgICIiIkVuc3VyZSBhIGNsZWFuIFZhbHVlRXJyb3Igd2l0aCB0aGUgZXhwZWN0ZWQgbWVzc2FnZSIiIgorICAgICAgICBhZGRyID0gImNhbWVsb3QiCisgICAgICAgIG1zZyA9ICclciBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2ICVzJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0Q2xlYW5FcnJvcihWYWx1ZUVycm9yLCBtc2csIGFkZHIsIGtpbmQpOgorICAgICAgICAgICAgZmFjdG9yeShhZGRyKQorCisgICAgZGVmIHRlc3RfaXBfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWN0b3J5RXJyb3IoaXBhZGRyZXNzLmlwX2FkZHJlc3MsICJhZGRyZXNzIikKKworICAgIGRlZiB0ZXN0X2lwX2ludGVyZmFjZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWN0b3J5RXJyb3IoaXBhZGRyZXNzLmlwX2ludGVyZmFjZSwgImludGVyZmFjZSIpCisKKyAgICBkZWYgdGVzdF9pcF9uZXR3b3JrKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhY3RvcnlFcnJvcihpcGFkZHJlc3MuaXBfbmV0d29yaywgIm5ldHdvcmsiKQorCisKK2NsYXNzIENvbXBhcmlzb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICB2NGFkZHIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoMSkKKyAgICB2NG5ldCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygxKQorICAgIHY0aW50ZiA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKDEpCisgICAgdjZhZGRyID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKDEpCisgICAgdjZuZXQgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoMSkKKyAgICB2NmludGYgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgxKQorCisgICAgdjRfYWRkcmVzc2VzID0gW3Y0YWRkciwgdjRpbnRmXQorICAgIHY0X29iamVjdHMgPSB2NF9hZGRyZXNzZXMgKyBbdjRuZXRdCisgICAgdjZfYWRkcmVzc2VzID0gW3Y2YWRkciwgdjZpbnRmXQorICAgIHY2X29iamVjdHMgPSB2Nl9hZGRyZXNzZXMgKyBbdjZuZXRdCisgICAgb2JqZWN0cyA9IHY0X29iamVjdHMgKyB2Nl9vYmplY3RzCisKKyAgICBkZWYgdGVzdF9mb3JlaWduX3R5cGVfZXF1YWxpdHkoc2VsZik6CisgICAgICAgICMgX19lcV9fIHNob3VsZCBuZXZlciByYWlzZSBUeXBlRXJyb3IgZGlyZWN0bHkKKyAgICAgICAgb3RoZXIgPSBvYmplY3QoKQorICAgICAgICBmb3Igb2JqIGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob2JqLCBvdGhlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob2JqID09IG90aGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouX19lcV9fKG90aGVyKSwgTm90SW1wbGVtZW50ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iai5fX25lX18ob3RoZXIpLCBOb3RJbXBsZW1lbnRlZCkKKworICAgIGRlZiB0ZXN0X21peGVkX3R5cGVfZXF1YWxpdHkoc2VsZik6CisgICAgICAgICMgRW5zdXJlIG5vbmUgb2YgdGhlIGludGVybmFsIG9iamVjdHMgYWNjaWRlbnRhbGx5CisgICAgICAgICMgZXhwb3NlIHRoZSByaWdodCBzZXQgb2YgYXR0cmlidXRlcyB0byBiZWNvbWUgImVxdWFsIgorICAgICAgICBmb3IgbGhzIGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgIGZvciByaHMgaW4gc2VsZi5vYmplY3RzOgorICAgICAgICAgICAgICAgIGlmIGxocyBpcyByaHM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsaHMsIHJocykKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5tZW50KHNlbGYpOgorICAgICAgICBmb3Igb2JqIGluIHNlbGYudjRfYWRkcmVzc2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvYmosIHNlbGYudjRuZXQpCisgICAgICAgIGZvciBvYmogaW4gc2VsZi52Nl9hZGRyZXNzZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9iaiwgc2VsZi52Nm5ldCkKKyAgICAgICAgZm9yIG9iaiBpbiBzZWxmLnY0X29iamVjdHMgKyBbc2VsZi52Nm5ldF06CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG9iaiwgc2VsZi52Nm5ldCkKKyAgICAgICAgZm9yIG9iaiBpbiBzZWxmLnY2X29iamVjdHMgKyBbc2VsZi52NG5ldF06CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG9iaiwgc2VsZi52NG5ldCkKKworICAgIGRlZiB0ZXN0X21peGVkX3R5cGVfb3JkZXJpbmcoc2VsZik6CisgICAgICAgIGZvciBsaHMgaW4gc2VsZi5vYmplY3RzOgorICAgICAgICAgICAgZm9yIHJocyBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShsaHMsIHR5cGUocmhzKSkgb3IgaXNpbnN0YW5jZShyaHMsIHR5cGUobGhzKSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGxocyA8IHJocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbGhzID4gcmhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBsaHMgPD0gcmhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBsaHMgPj0gcmhzKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfdHlwZV9rZXkoc2VsZik6CisgICAgICAgICMgd2l0aCBnZXRfbWl4ZWRfdHlwZV9rZXksIHlvdSBjYW4gc29ydCBhZGRyZXNzZXMgYW5kIG5ldHdvcmsuCisgICAgICAgIHY0X29yZGVyZWQgPSBbc2VsZi52NGFkZHIsIHNlbGYudjRuZXQsIHNlbGYudjRpbnRmXQorICAgICAgICB2Nl9vcmRlcmVkID0gW3NlbGYudjZhZGRyLCBzZWxmLnY2bmV0LCBzZWxmLnY2aW50Zl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2NF9vcmRlcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChzZWxmLnY0X29iamVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1pcGFkZHJlc3MuZ2V0X21peGVkX3R5cGVfa2V5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Nl9vcmRlcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChzZWxmLnY2X29iamVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1pcGFkZHJlc3MuZ2V0X21peGVkX3R5cGVfa2V5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2NF9vcmRlcmVkICsgdjZfb3JkZXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi5vYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9aXBhZGRyZXNzLmdldF9taXhlZF90eXBlX2tleSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm90SW1wbGVtZW50ZWQsIGlwYWRkcmVzcy5nZXRfbWl4ZWRfdHlwZV9rZXkob2JqZWN0KSkKKworICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV92ZXJzaW9ucyhzZWxmKToKKyAgICAgICAgIyBUaGVzZSBzaG91bGQgYWx3YXlzIHJhaXNlIFR5cGVFcnJvcgorICAgICAgICB2NGFkZHIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMScpCisgICAgICAgIHY0bmV0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKQorICAgICAgICB2NmFkZHIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykKKyAgICAgICAgdjZuZXQgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY0YWRkci5fX2x0X18sIHY2YWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NGFkZHIuX19ndF9fLCB2NmFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjRuZXQuX19sdF9fLCB2Nm5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NG5ldC5fX2d0X18sIHY2bmV0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjZhZGRyLl9fbHRfXywgdjRhZGRyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY2YWRkci5fX2d0X18sIHY0YWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2Nm5ldC5fX2x0X18sIHY0bmV0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY2bmV0Ll9fZ3RfXywgdjRuZXQpCisKKworCitjbGFzcyBJcGFkZHJVbml0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuaXB2NF9hZGRyZXNzID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy40JykKKyAgICAgICAgc2VsZi5pcHY0X2ludGVyZmFjZSA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzI0JykKKyAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMi4zLjAvMjQnKQorICAgICAgICAjc2VsZi5pcHY0X2hvc3RtYXNrID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEwLjAuMC4xLzAuMjU1LjI1NS4yNTUnKQorICAgICAgICBzZWxmLmlwdjZfYWRkcmVzcyA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKAorICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDowOjA6MScpCisgICAgICAgIHNlbGYuaXB2Nl9pbnRlcmZhY2UgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgKKyAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6MDowOjEvNjQnKQorICAgICAgICBzZWxmLmlwdjZfbmV0d29yayA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo2NTg6MjJhOmNhZmU6Oi82NCcpCisKKyAgICBkZWYgdGVzdFJlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMzInKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSVB2NkludGVyZmFjZSgnOjoxLzEyOCcpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEnKSkpCisKKyAgICAjIGlzc3VlNTcKKyAgICBkZWYgdGVzdEFkZHJlc3NJbnRNYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpICsgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjIuMCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpIC0gMjU2LAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjAuMScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykgKyAoMioqMTYgLSAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6ZmZmZicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjpmZmZmJykgLSAoMioqMTYgLSAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpKQorCisgICAgZGVmIHRlc3RJbnZhbGlkSW50VG9CeXRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLnY0X2ludF90b19wYWNrZWQsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpcGFkZHJlc3MudjRfaW50X3RvX3BhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqKiBpcGFkZHJlc3MuSVBWNExFTkdUSCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLnY2X2ludF90b19wYWNrZWQsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpcGFkZHJlc3MudjZfaW50X3RvX3BhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqKiBpcGFkZHJlc3MuSVBWNkxFTkdUSCkKKworICAgIGRlZiB0ZXN0SW50ZXJuYWxzKHNlbGYpOgorICAgICAgICBmaXJzdCwgbGFzdCA9IGlwYWRkcmVzcy5fZmluZF9hZGRyZXNzX3JhbmdlKFsKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTAnKSwKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTInKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlyc3QsIGxhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTI4LCBpcGFkZHJlc3MuX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoMCwgMTI4KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSVB2NE5ldHdvcmsoJzEuMi4zLjAvMjQnKSIsIHJlcHIoc2VsZi5pcHY0X25ldHdvcmspKQorCisgICAgZGVmIHRlc3RNaXNzaW5nQWRkcmVzc1ZlcnNpb24oc2VsZik6CisgICAgICAgIGNsYXNzIEJyb2tlbihpcGFkZHJlc3MuX0Jhc2VBZGRyZXNzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYnJva2VuID0gQnJva2VuKCcxMjcuMC4wLjEnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTm90SW1wbGVtZW50ZWRFcnJvciwgIkJyb2tlbi4qdmVyc2lvbiIpOgorICAgICAgICAgICAgYnJva2VuLnZlcnNpb24KKworICAgIGRlZiB0ZXN0TWlzc2luZ05ldHdvcmtWZXJzaW9uKHNlbGYpOgorICAgICAgICBjbGFzcyBCcm9rZW4oaXBhZGRyZXNzLl9CYXNlTmV0d29yayk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGJyb2tlbiA9IEJyb2tlbignMTI3LjAuMC4xJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5vdEltcGxlbWVudGVkRXJyb3IsICJCcm9rZW4uKnZlcnNpb24iKToKKyAgICAgICAgICAgIGJyb2tlbi52ZXJzaW9uCisKKyAgICBkZWYgdGVzdE1pc3NpbmdBZGRyZXNzQ2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEJyb2tlbihpcGFkZHJlc3MuX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYnJva2VuID0gQnJva2VuKCcxMjcuMC4wLjEnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTm90SW1wbGVtZW50ZWRFcnJvciwgIkJyb2tlbi4qYWRkcmVzcyIpOgorICAgICAgICAgICAgYnJva2VuLl9hZGRyZXNzX2NsYXNzCisKKyAgICBkZWYgdGVzdEdldE5ldHdvcmsoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2NF9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcyksIDE2OTA5MDU2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MpLCAnMS4yLjMuMCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY2X25ldHdvcmsubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICA0MjU0MDYxNjgyOTE4MjQ2OTQzMzQwMzY0NzI5NDAyMjA5MDc1MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmsubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6OicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLmhvc3RtYXNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnOjpmZmZmOmZmZmY6ZmZmZjpmZmZmJykKKworICAgIGRlZiB0ZXN0SXBGcm9tSW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9pbnRlcmZhY2UuX2lwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKDE2OTA5MDYwKS5faXApCisKKyAgICAgICAgaXB2NCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjIuMy40JykKKyAgICAgICAgaXB2NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6MDowOjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwdjQsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKGludChpcHY0Lm5ldHdvcmtfYWRkcmVzcykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwdjYsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKGludChpcHY2Lm5ldHdvcmtfYWRkcmVzcykpKQorCisgICAgICAgIHY2X2ludCA9IDQyNTQwNjE2ODI5MTgyNDY5NDMzNTQ3NzYyNDgyMDk3OTQ2NjI1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5faXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UodjZfaW50KS5faXApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfbmV0d29yayhzZWxmLmlwdjRfYWRkcmVzcy5faXApLnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfbmV0d29yayhzZWxmLmlwdjZfYWRkcmVzcy5faXApLnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgNikKKworICAgIGRlZiB0ZXN0SXBGcm9tUGFja2VkKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLl9pcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKGInXHgwMVx4MDJceDAzXHgwNCcpLl9pcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzKCcyNTUuMjU0LjI1My4yNTInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKGInXHhmZlx4ZmVceGZkXHhmYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UuaXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAgICAgYidceDIwXHgwMVx4MDZceDU4XHgwMlx4MmFceGNhXHhmZScKKyAgICAgICAgICAgICAgICAgICAgYidceDAyXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMScpLmlwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MoJ2ZmZmY6MjozOjQ6ZmZmZjo6JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyhiJ1x4ZmZceGZmXHgwMFx4MDJceDAwXHgwM1x4MDBceDA0JyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidceGZmXHhmZicgKyBiJ1x4MDAnICogNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcygnOjonKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKGInXHgwMCcgKiAxNikpCisKKyAgICBkZWYgdGVzdEdldElwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjRfaW50ZXJmYWNlLmlwKSwgMTY5MDkwNjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9pbnRlcmZhY2UuaXApLCAnMS4yLjMuNCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY2X2ludGVyZmFjZS5pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgNDI1NDA2MTY4MjkxODI0Njk0MzM1NDc3NjI0ODIwOTc5NDY2MjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9pbnRlcmZhY2UuaXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEnKQorCisgICAgZGVmIHRlc3RHZXROZXRtYXNrKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjRfbmV0d29yay5uZXRtYXNrKSwgNDI5NDk2NzA0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmsubmV0bWFzayksICcyNTUuMjU1LjI1NS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY2X25ldHdvcmsubmV0bWFzayksCisgICAgICAgICAgICAgICAgICAgICAgICAgMzQwMjgyMzY2OTIwOTM4NDYzNDQ0OTI3ODYzMzU4MDU4NjU5ODQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLnByZWZpeGxlbiwgNjQpCisKKyAgICBkZWYgdGVzdFplcm9OZXRtYXNrKHNlbGYpOgorICAgICAgICBpcHY0X3plcm9fbmV0bWFzayA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChpcHY0X3plcm9fbmV0bWFzay5uZXR3b3JrLm5ldG1hc2spLCAwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXB2NF96ZXJvX25ldG1hc2submV0d29yay5faXNfdmFsaWRfbmV0bWFzaygKKyAgICAgICAgICAgICAgICBzdHIoMCkpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXB2NF96ZXJvX25ldG1hc2suX2lzX3ZhbGlkX25ldG1hc2soJzAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwdjRfemVyb19uZXRtYXNrLl9pc192YWxpZF9uZXRtYXNrKCcwLjAuMC4wJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXB2NF96ZXJvX25ldG1hc2suX2lzX3ZhbGlkX25ldG1hc2soJ2ludmFsaWQnKSkKKworICAgICAgICBpcHY2X3plcm9fbmV0bWFzayA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEvMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGlwdjZfemVyb19uZXRtYXNrLm5ldHdvcmsubmV0bWFzayksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcHY2X3plcm9fbmV0bWFzay5uZXR3b3JrLl9pc192YWxpZF9uZXRtYXNrKAorICAgICAgICAgICAgICAgIHN0cigwKSkpCisKKyAgICBkZWYgdGVzdElQdjROZXRBbmRIb3N0bWFza3Moc2VsZik6CisgICAgICAgIG5ldCA9IHNlbGYuaXB2NF9uZXR3b3JrCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc192YWxpZF9uZXRtYXNrKCdpbnZhbGlkJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXQuX2lzX3ZhbGlkX25ldG1hc2soJzEyOC4xMjguMTI4LjEyOCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ldC5faXNfdmFsaWRfbmV0bWFzaygnMTI4LjEyOC4xMjguMTI3JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc192YWxpZF9uZXRtYXNrKCcxMjguMTI4LjEyOC4yNTUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ldC5faXNfdmFsaWRfbmV0bWFzaygnMjU1LjEyOC4xMjguMTI4JykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXQuX2lzX2hvc3RtYXNrKCdpbnZhbGlkJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXQuX2lzX2hvc3RtYXNrKCcxMjguMjU1LjI1NS4yNTUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXQuX2lzX2hvc3RtYXNrKCcyNTUuMjU1LjI1NS4yNTUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXQuX2lzX2hvc3RtYXNrKCcxLjIuMy40JykpCisKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxMjcuMC4wLjAvMC4wLjAuMjU1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyNCwgbmV0LnByZWZpeGxlbikKKworICAgIGRlZiB0ZXN0R2V0QnJvYWRjYXN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjRfbmV0d29yay5icm9hZGNhc3RfYWRkcmVzcyksIDE2OTA5MzExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfbmV0d29yay5icm9hZGNhc3RfYWRkcmVzcyksICcxLjIuMy4yNTUnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2Nl9uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICA0MjU0MDYxNjgyOTE4MjQ2OTQ1MTg1MDM5MTM2NzczMTY0MjM2NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTpmZmZmOmZmZmY6ZmZmZjpmZmZmJykKKworICAgIGRlZiB0ZXN0R2V0UHJlZml4bGVuKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9pbnRlcmZhY2UubmV0d29yay5wcmVmaXhsZW4sIDI0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5wcmVmaXhsZW4sIDY0KQorCisgICAgZGVmIHRlc3RHZXRTdXBlcm5ldChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCgpLnByZWZpeGxlbiwgMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KCkubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMS4yLjIuMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMC4wLjAuMC8wJykubmV0d29yay5zdXBlcm5ldCgpLAorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCcwLjAuMC4wLzAnKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0KCkucHJlZml4bGVuLCA2MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQoKS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjowLzAnKS5uZXR3b3JrLnN1cGVybmV0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZOZXR3b3JrKCc6OjAvMCcpKQorCisgICAgZGVmIHRlc3RHZXRTdXBlcm5ldDMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQoMykucHJlZml4bGVuLCAyMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQoMykubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMS4yLjAuMCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCgzKS5wcmVmaXhsZW4sIDYxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCgzKS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmODo6JykKKworICAgIGRlZiB0ZXN0R2V0U3VwZXJuZXQ0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4bGVuX2RpZmY9MiwgbmV3X3ByZWZpeD0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeD0yNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldChwcmVmaXhsZW5fZGlmZj0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldChuZXdfcHJlZml4PTIyKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4bGVuX2RpZmY9MiwgbmV3X3ByZWZpeD0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeD02NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldChwcmVmaXhsZW5fZGlmZj0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldChuZXdfcHJlZml4PTYyKSkKKworICAgIGRlZiB0ZXN0SG9zdHMoc2VsZik6CisgICAgICAgIGhvc3RzID0gbGlzdChzZWxmLmlwdjRfbmV0d29yay5ob3N0cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDI1NCwgbGVuKGhvc3RzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjEnKSwgaG9zdHNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy4yNTQnKSwgaG9zdHNbLTFdKQorCisgICAgICAgICMgc3BlY2lhbCBjYXNlIHdoZXJlIG9ubHkgMSBiaXQgaXMgbGVmdCBmb3IgYWRkcmVzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzIuMC4wLjAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcyLjAuMC4xJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIuMC4wLjAvMzEnKS5ob3N0cygpKSkKKworICAgIGRlZiB0ZXN0RmFuY3lTdWJuZXR0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cyhuZXdfcHJlZml4PTI3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMobmV3X3ByZWZpeD0yMykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMocHJlZml4bGVuX2RpZmY9MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXg9MjcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cyhuZXdfcHJlZml4PTY4KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMobmV3X3ByZWZpeD02MykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMocHJlZml4bGVuX2RpZmY9NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXg9NjgpKQorCisgICAgZGVmIHRlc3RHZXRTdWJuZXRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygpKVswXS5wcmVmaXhsZW4sIDI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihsaXN0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKCkpWzBdLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4zLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihsaXN0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKCkpWzFdLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4zLjEyOCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMoKSlbMF0ucHJlZml4bGVuLCA2NSkKKworICAgIGRlZiB0ZXN0R2V0U3VibmV0Rm9yU2luZ2xlMzIoc2VsZik6CisgICAgICAgIGlwID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjIuMy40LzMyJykKKyAgICAgICAgc3VibmV0czEgPSBbc3RyKHgpIGZvciB4IGluIGlwLnN1Ym5ldHMoKV0KKyAgICAgICAgc3VibmV0czIgPSBbc3RyKHgpIGZvciB4IGluIGlwLnN1Ym5ldHMoMildCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VibmV0czEsIFsnMS4yLjMuNC8zMiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1Ym5ldHMxLCBzdWJuZXRzMikKKworICAgIGRlZiB0ZXN0R2V0U3VibmV0Rm9yU2luZ2xlMTI4KHNlbGYpOgorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnOjoxLzEyOCcpCisgICAgICAgIHN1Ym5ldHMxID0gW3N0cih4KSBmb3IgeCBpbiBpcC5zdWJuZXRzKCldCisgICAgICAgIHN1Ym5ldHMyID0gW3N0cih4KSBmb3IgeCBpbiBpcC5zdWJuZXRzKDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1Ym5ldHMxLCBbJzo6MS8xMjgnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJuZXRzMSwgc3VibmV0czIpCisKKyAgICBkZWYgdGVzdFN1Ym5ldDIoc2VsZik6CisgICAgICAgIGlwcyA9IFtzdHIoeCkgZm9yIHggaW4gc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygyKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGlwcywKKyAgICAgICAgICAgIFsnMS4yLjMuMC8yNicsICcxLjIuMy42NC8yNicsICcxLjIuMy4xMjgvMjYnLCAnMS4yLjMuMTkyLzI2J10pCisKKyAgICAgICAgaXBzdjYgPSBbc3RyKHgpIGZvciB4IGluIHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMoMildCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBpcHN2NiwKKyAgICAgICAgICAgIFsnMjAwMTo2NTg6MjJhOmNhZmU6Oi82NicsCisgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjQwMDA6Oi82NicsCisgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjgwMDA6Oi82NicsCisgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOmMwMDA6Oi82NiddKQorCisgICAgZGVmIHRlc3RTdWJuZXRGYWlsc0ZvckxhcmdlQ2lkckRpZmYoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9pbnRlcmZhY2UubmV0d29yay5zdWJuZXRzKDkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKDkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuc3VibmV0cyg2NSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMoNjUpKQorCisgICAgZGVmIHRlc3RTdXBlcm5ldEZhaWxzRm9yTGFyZ2VDaWRyRGlmZihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X2ludGVyZmFjZS5uZXR3b3JrLnN1cGVybmV0LCAyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLnN1cGVybmV0LCA2NSkKKworICAgIGRlZiB0ZXN0U3VibmV0RmFpbHNGb3JOZWdhdGl2ZUNpZHJEaWZmKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfaW50ZXJmYWNlLm5ldHdvcmsuc3VibmV0cygtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuc3VibmV0cygtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMoLTEpKQorCisgICAgZGVmIHRlc3RHZXROdW1fQWRkcmVzc2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLm51bV9hZGRyZXNzZXMsIDI1NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoKSlbMF0ubnVtX2FkZHJlc3NlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAxMjgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQoKS5udW1fYWRkcmVzc2VzLCA1MTIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5udW1fYWRkcmVzc2VzLCAxODQ0Njc0NDA3MzcwOTU1MTYxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMoKSlbMF0ubnVtX2FkZHJlc3NlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICA5MjIzMzcyMDM2ODU0Nzc1ODA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0KCkubnVtX2FkZHJlc3NlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAzNjg5MzQ4ODE0NzQxOTEwMzIzMikKKworICAgIGRlZiB0ZXN0Q29udGFpbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuMTI4LzI1JykgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuNC4xLzI0JykgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yaykKKyAgICAgICAgIyBXZSBjYW4gdGVzdCBhZGRyZXNzZXMgYW5kIHN0cmluZyBhcyB3ZWxsLgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMzcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYWRkcjEgaW4gc2VsZi5pcHY0X25ldHdvcmspCisgICAgICAgICMgaXNzdWUgNjEsIGJhZCBuZXR3b3JrIGNvbXBhcmlzb24gb24gbGlrZS1pcCdkIG5ldHdvcmsgb2JqZWN0cworICAgICAgICAjIHdpdGggaWRlbnRpY2FsIGJyb2FkY2FzdCBhZGRyZXNzZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzE2JykuX19jb250YWluc19fKAorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4wLjAuMC8xNScpKSkKKworICAgIGRlZiB0ZXN0TnRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfbmV0d29ya1s1XSksICcxLjIuMy41JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5pcHY0X25ldHdvcmsuX19nZXRpdGVtX18sIDI1NikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29ya1s1XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjo1JykKKworICAgIGRlZiB0ZXN0R2V0aXRlbShzZWxmKToKKyAgICAgICAgIyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvaXBhZGRyLXB5L2lzc3Vlcy9kZXRhaWw/aWQ9MTUKKyAgICAgICAgYWRkciA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTcyLjMxLjI1NS4xMjgvMjU1LjI1NS4yNTUuMjQwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyOCwgYWRkci5wcmVmaXhsZW4pCisgICAgICAgIGFkZHJfbGlzdCA9IGxpc3QoYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcyLjMxLjI1NS4xMjgnLCBzdHIoYWRkcl9saXN0WzBdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcyLjMxLjI1NS4xMjgnLCBzdHIoYWRkclswXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3Mi4zMS4yNTUuMTQzJywgc3RyKGFkZHJfbGlzdFstMV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxNzIuMzEuMjU1LjE0MycsIHN0cihhZGRyWy0xXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9saXN0Wy0xXSwgYWRkclstMV0pCisKKyAgICBkZWYgdGVzdEVxdWFsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfaW50ZXJmYWNlID09CisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfaW50ZXJmYWNlID09CisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MS4yLjMuNC8yNCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9pbnRlcmZhY2UgPT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfaW50ZXJmYWNlID09IDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0KKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlID09CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzYzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzIzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSA9PSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlID09IFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0gMikKKworICAgIGRlZiB0ZXN0Tm90RXF1YWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzI0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfaW50ZXJmYWNlICE9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yMycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MS4yLjMuNC8yNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSAhPSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfaW50ZXJmYWNlICE9IDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9hZGRyZXNzICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy41JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyAhPSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9hZGRyZXNzICE9IFtdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2FkZHJlc3MgIT0gMikKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzIzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9ICcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2ludGVyZmFjZSAhPSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0gMikKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2FkZHJlc3MgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2FkZHJlc3MgIT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfYWRkcmVzcyAhPSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9hZGRyZXNzICE9IDIpCisKKyAgICBkZWYgdGVzdFNsYXNoMzJDb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgICAgICcxLjIuMy40LzI1NS4yNTUuMjU1LjI1NScpKSwgJzEuMi4zLjQvMzInKQorCisgICAgZGVmIHRlc3RTbGFzaDEyOENvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxLzEyOCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOjoxLzEyOCcpCisKKyAgICBkZWYgdGVzdFNsYXNoMENvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8wLjAuMC4wJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnMS4yLjMuNC8wJykKKworICAgIGRlZiB0ZXN0Q29sbGFwc2luZyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IG9ubHkgSVAgYWRkcmVzc2VzIGluY2x1ZGluZyBzb21lIGR1cGxpY2F0ZXMKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4wJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4yJykKKyAgICAgICAgaXA0ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4zJykKKyAgICAgICAgaXA1ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS40JykKKyAgICAgICAgaXA2ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4wJykKKyAgICAgICAgIyBjaGVjayB0aGF0IGFkZHJlc2VzIGFyZSBzdWJzdW1lZCBwcm9wZXJseS4KKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcygKKyAgICAgICAgICAgIFtpcDEsIGlwMiwgaXAzLCBpcDQsIGlwNSwgaXA2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxhcHNlZCksCisgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8zMCcpLAorICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjQvMzInKV0pCisKKyAgICAgICAgIyB0ZXN0IGEgbWl4IG9mIElQIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MgaW5jbHVkaW5nIHNvbWUgZHVwbGljYXRlcworICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjInKQorICAgICAgICBpcDQgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjMnKQorICAgICAgICAjaXA1ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMS4xLjQvMzAnKQorICAgICAgICAjaXA2ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMS4xLjQvMzAnKQorICAgICAgICAjIGNoZWNrIHRoYXQgYWRkcmVzZXMgYXJlIHN1YnN1bWVkIHByb3Blcmx5LgorICAgICAgICBjb2xsYXBzZWQgPSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKFtpcDEsIGlwMiwgaXAzLCBpcDRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGFwc2VkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS4wLzMwJyldKQorCisgICAgICAgICMgdGVzdCBvbmx5IElQIG5ldHdvcmtzCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8yNCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8yNCcpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjIuMC8yNCcpCisgICAgICAgIGlwNCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjMuMC8yNCcpCisgICAgICAgIGlwNSA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjQuMC8yNCcpCisgICAgICAgICMgc3RvcmVkIGluIG5vIHBhcnRpY3VsYXIgb3JkZXIgYi9jIHdlIHdhbnQgQ29sbGFwc2VBZGRyIHRvIGNhbGwKKyAgICAgICAgIyBbXS5zb3J0CisgICAgICAgIGlwNiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8yMicpCisgICAgICAgICMgY2hlY2sgdGhhdCBhZGRyZXNlcyBhcmUgc3Vic3VtZWQgcHJvcGVybHkuCisgICAgICAgIGNvbGxhcHNlZCA9IGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoW2lwMSwgaXAyLCBpcDMsIGlwNCwgaXA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcDZdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGFwc2VkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzIyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjQuMC8yNCcpXSkKKworICAgICAgICAjIHRlc3QgdGhhdCB0d28gYWRkcmVzc2VzIGFyZSBzdXBlcm5ldCdlZCBwcm9wZXJseQorICAgICAgICBjb2xsYXBzZWQgPSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKFtpcDEsIGlwMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsYXBzZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMjMnKV0pCisKKyAgICAgICAgIyB0ZXN0IHNhbWUgSVAgbmV0d29ya3MKKyAgICAgICAgaXBfc2FtZTEgPSBpcF9zYW1lMiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMS8zMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKAorICAgICAgICAgICAgICAgICAgICBbaXBfc2FtZTEsIGlwX3NhbWUyXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtpcF9zYW1lMV0pCisKKyAgICAgICAgIyB0ZXN0IHNhbWUgSVAgYWRkcmVzc2VzCisgICAgICAgIGlwX3NhbWUxID0gaXBfc2FtZTIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcygKKyAgICAgICAgICAgICAgICAgICAgW2lwX3NhbWUxLCBpcF9zYW1lMl0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEvMzInKV0pCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6LzEwMCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6LzEyMCcpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6Lzk2JykKKyAgICAgICAgIyB0ZXN0IHRoYXQgaXB2NiBhZGRyZXNzZXMgYXJlIHN1YnN1bWVkIHByb3Blcmx5LgorICAgICAgICBjb2xsYXBzZWQgPSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKFtpcDEsIGlwMiwgaXAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxhcHNlZCksIFtpcDNdKQorCisgICAgICAgICMgdGhlIHRvZWphbSB0ZXN0CisgICAgICAgIGFkZHJfdHVwbGVzID0gWworICAgICAgICAgICAgICAgIChpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMScpLAorICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykpLAorICAgICAgICAgICAgICAgIChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMjQnKSwKKyAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjovMTIwJykpLAorICAgICAgICAgICAgICAgIChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMzInKSwKKyAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjovMTI4JykpLAorICAgICAgICBdCisgICAgICAgIGZvciBpcDEsIGlwMiBpbiBhZGRyX3R1cGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpcDEsIGlwMl0pCisKKyAgICBkZWYgdGVzdFN1bW1hcml6aW5nKHNlbGYpOgorICAgICAgICAjaXAgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcworICAgICAgICAjaXBuZXQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaworICAgICAgICBzdW1tYXJpemUgPSBpcGFkZHJlc3Muc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMjU1JykKKworICAgICAgICAjIHN1bW1hcml6ZSB3b3JrcyBvbmx5IGZvciBJUHY0ICYgSVB2NgorICAgICAgICBjbGFzcyBJUHY3QWRkcmVzcyhpcGFkZHJlc3MuSVB2NkFkZHJlc3MpOgorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNworICAgICAgICBpcF9pbnZhbGlkMSA9IElQdjdBZGRyZXNzKCc6OjEnKQorICAgICAgICBpcF9pbnZhbGlkMiA9IElQdjdBZGRyZXNzKCc6OjEnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJpemUoaXBfaW52YWxpZDEsIGlwX2ludmFsaWQyKSkKKyAgICAgICAgIyB0ZXN0IHRoYXQgYSBzdW1tYXJ5IG92ZXIgaXA0ICYgaXA2IGZhaWxzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwMSwgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkpCisgICAgICAgICMgdGVzdCBhIC8yNCBpcyBzdW1tYXJpemVkIHByb3Blcmx5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdW1tYXJpemUoaXAxLCBpcDIpKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMC8yNCcpKQorICAgICAgICAjIHRlc3QgYW4gIElQdjQgcmFuZ2UgdGhhdCBpc24ndCBvbiBhIG5ldHdvcmsgYnl0ZSBib3VuZGFyeQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdW1tYXJpemUoaXAxLCBpcDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjAvMjknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjgnKV0pCisgICAgICAgICMgYWxsIQorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoMCkKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKGlwYWRkcmVzcy5JUHY0QWRkcmVzcy5fQUxMX09ORVMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMC4wLjAuMC8wJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qoc3VtbWFyaXplKGlwMSwgaXAyKSkpCisKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE6OicpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmYnKQorICAgICAgICAjIHRlc3QgYSBJUHY2IGlzIHN1bWFtcml6ZWQgcHJvcGVybHkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN1bW1hcml6ZShpcDEsIGlwMikpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOjovMTYnKSkKKyAgICAgICAgIyB0ZXN0IGFuIElQdjYgcmFuZ2UgdGhhdCBpc24ndCBvbiBhIG5ldHdvcmsgYnl0ZSBib3VuZGFyeQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjo6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN1bW1hcml6ZShpcDEsIGlwMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuaXBfbmV0d29yaygnMTo6LzE2JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyOjovMTI4JyldKQorCisgICAgICAgICMgdGVzdCBleGNlcHRpb24gcmFpc2VkIHdoZW4gZmlyc3QgaXMgZ3JlYXRlciB0aGFuIGxhc3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjAuMCcpKSkKKyAgICAgICAgIyB0ZXN0IGV4Y2VwdGlvbiByYWlzZWQgd2hlbiBmaXJzdCBhbmQgbGFzdCBhcmVuJ3QgSVAgYWRkcmVzc2VzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjAuMCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJpemUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMC4wJykpKQorICAgICAgICAjIHRlc3QgZXhjZXB0aW9uIHJhaXNlZCB3aGVuIGZpcnN0IGFuZCBsYXN0IGFyZSBub3Qgc2FtZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4wLjAnKSkpCisKKyAgICBkZWYgdGVzdEFkZHJlc3NDb21wYXJpc29uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4yJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MicpKQorCisgICAgZGVmIHRlc3RJbnRlcmZhY2VDb21wYXJpc29uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxLjEuMS4xJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzEuMS4xLjInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjInKSkKKworICAgIGRlZiB0ZXN0TmV0d29ya0NvbXBhcmlzb24oc2VsZik6CisgICAgICAgICMgaXAxIGFuZCBpcDIgaGF2ZSB0aGUgc2FtZSBuZXR3b3JrIGFkZHJlc3MKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS4wLzI0JykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS4wLzMyJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMi4wLzI0JykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAxIDwgaXAzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAzID4gaXAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAxLmNvbXBhcmVfbmV0d29ya3MoaXAxKSwgMCkKKworICAgICAgICAjIGlmIGFkZHJlc3NlcyBhcmUgdGhlIHNhbWUsIHNvcnQgYnkgbmV0bWFzaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwMS5jb21wYXJlX25ldHdvcmtzKGlwMiksIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwMi5jb21wYXJlX25ldHdvcmtzKGlwMSksIDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDEuY29tcGFyZV9uZXR3b3JrcyhpcDMpLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDMuY29tcGFyZV9uZXR3b3JrcyhpcDEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAxLl9nZXRfbmV0d29ya3Nfa2V5KCkgPCBpcDMuX2dldF9uZXR3b3Jrc19rZXkoKSkKKworICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6MjAwMDo6Lzk2JykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjIwMDE6Oi85NicpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpmZmZmOjIwMDA6Oi85NicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMSA8IGlwMykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMyA+IGlwMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDEuY29tcGFyZV9uZXR3b3JrcyhpcDMpLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMS5fZ2V0X25ldHdvcmtzX2tleSgpIDwgaXAzLl9nZXRfbmV0d29ya3Nfa2V5KCkpCisKKyAgICAgICAgIyBUZXN0IGNvbXBhcmluZyBkaWZmZXJlbnQgcHJvdG9jb2xzLgorICAgICAgICAjIFNob3VsZCBhbHdheXMgcmFpc2UgYSBUeXBlRXJyb3IuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuY29tcGFyZV9uZXR3b3JrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmspCisgICAgICAgIGlwdjYgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjovMCcpCisgICAgICAgIGlwdjQgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMC4wLjAuMC8wJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcHY0Ll9fbHRfXywgaXB2NikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcHY0Ll9fZ3RfXywgaXB2NikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcHY2Ll9fbHRfXywgaXB2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcHY2Ll9fZ3RfXywgaXB2NCkKKworICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWUgMTkuCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjIuMTI4LzI1JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDEgPCBpcDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAxID4gaXAxKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4zLjAvMjQnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAxIDwgaXAyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMiA8IGlwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDEgPiBpcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDIgPiBpcDEpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjMuMC8yNScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDIgPCBpcDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAzIDwgaXAyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMiA+IGlwMykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMyA+IGlwMikKKworICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWUgMjguCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xMC4xMC4wLzMxJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEwLjEwLjAnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMTAuMTAuMi8zMScpCisgICAgICAgIGlwNCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xMC4xMC4yJykKKyAgICAgICAgc29ydGVkID0gW2lwMSwgaXAyLCBpcDMsIGlwNF0KKyAgICAgICAgdW5zb3J0ZWQgPSBbaXAyLCBpcDQsIGlwMSwgaXAzXQorICAgICAgICB1bnNvcnRlZC5zb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQsIHVuc29ydGVkKQorICAgICAgICB1bnNvcnRlZCA9IFtpcDQsIGlwMSwgaXAzLCBpcDJdCisgICAgICAgIHVuc29ydGVkLnNvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCwgdW5zb3J0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXAxLl9fbHRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEwLjEwLjAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcDIuX19sdF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTAuMTAuMTAuMCcpKQorCisgICAgICAgICMgPD0sID49CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMicpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoxJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoyJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoxJykpCisKKyAgICBkZWYgdGVzdFN0cmljdE5ldHdvcmtzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpcGFkZHJlc3MuaXBfbmV0d29yaywgJzE5Mi4xNjguMS4xLzI0JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLmlwX25ldHdvcmssICc6OjEvMTIwJykKKworICAgIGRlZiB0ZXN0T3ZlcmxhcHMoc2VsZik6CisgICAgICAgIG90aGVyID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjIuMy4wLzMwJykKKyAgICAgICAgb3RoZXIyID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjIuMi4wLzI0JykKKyAgICAgICAgb3RoZXIzID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjIuMi42NC8yNicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfbmV0d29yay5vdmVybGFwcyhvdGhlcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X25ldHdvcmsub3ZlcmxhcHMob3RoZXIyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG90aGVyMi5vdmVybGFwcyhvdGhlcjMpKQorCisgICAgZGVmIHRlc3RFbWJlZGRlZElwdjQoc2VsZik6CisgICAgICAgIGlwdjRfc3RyaW5nID0gJzE5Mi4xNjguMC4xJworICAgICAgICBpcHY0ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoaXB2NF9zdHJpbmcpCisgICAgICAgIHY0Y29tcGF0X2lwdjYgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjolcycgJSBpcHY0X3N0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQodjRjb21wYXRfaXB2Ni5pcCksIGludChpcHY0LmlwKSkKKyAgICAgICAgdjRtYXBwZWRfaXB2NiA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OmZmZmY6JXMnICUgaXB2NF9zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodjRtYXBwZWRfaXB2Ni5pcCwgaXB2NC5pcCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yLCBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6MS4xLjEuMToxLjEuMS4xJykKKworICAgICMgSXNzdWUgNjc6IElQdjYgd2l0aCBlbWJlZGRlZCBJUHY0IGFkZHJlc3Mgbm90IHJlY29nbml6ZWQuCisgICAgZGVmIHRlc3RJUHY2QWRkcmVzc1Rvb0xhcmdlKHNlbGYpOgorICAgICAgICAjIFJGQzQyOTEgMi41LjUuMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OkZGRkY6MTkyLjAuMi4xJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OkZGRkY6YzAwMDoyMDEnKSkKKyAgICAgICAgIyBSRkM0MjkxIDIuMiAocGFydCAzKSB4OjpkLmQuZC5kCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ0ZGRkY6OjE5Mi4wLjIuMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnRkZGRjo6YzAwMDoyMDEnKSkKKworICAgIGRlZiB0ZXN0SVBWZXJzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9hZGRyZXNzLnZlcnNpb24sIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2FkZHJlc3MudmVyc2lvbiwgNikKKworICAgIGRlZiB0ZXN0TWF4UHJlZml4TGVuZ3RoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9pbnRlcmZhY2UubWF4X3ByZWZpeGxlbiwgMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5tYXhfcHJlZml4bGVuLCAxMjgpCisKKyAgICBkZWYgdGVzdFBhY2tlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfYWRkcmVzcy5wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceDAxXHgwMlx4MDNceDA0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMjU1LjI1NC4yNTMuMjUyJykucGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhmZlx4ZmVceGZkXHhmYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2FkZHJlc3MucGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHgyMFx4MDFceDA2XHg1OFx4MDJceDJhXHhjYVx4ZmUnCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceDAyXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJ2ZmZmY6MjozOjQ6ZmZmZjo6JykucGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhmZlx4ZmZceDAwXHgwMlx4MDBceDAzXHgwMFx4MDRceGZmXHhmZicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGInXHgwMCcgKiA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjE6MDowOjA6MCcpLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4MDAnICogNiArIGInXHgwMFx4MDEnICsgYidceDAwJyAqIDgpCisKKyAgICBkZWYgdGVzdElwU3RyRnJvbVByZWZpeGxlbihzZWxmKToKKyAgICAgICAgaXB2NCA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzI0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcHY0Ll9pcF9zdHJpbmdfZnJvbV9wcmVmaXgoKSwgJzI1NS4yNTUuMjU1LjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwdjQuX2lwX3N0cmluZ19mcm9tX3ByZWZpeCgyOCksICcyNTUuMjU1LjI1NS4yNDAnKQorCisgICAgZGVmIHRlc3RJcFR5cGUoc2VsZik6CisgICAgICAgIGlwdjRuZXQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4yLjMuNCcpCisgICAgICAgIGlwdjRhZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMi4zLjQnKQorICAgICAgICBpcHY2bmV0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MS4yLjMuNCcpCisgICAgICAgIGlwdjZhZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MS4yLjMuNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrLCB0eXBlKGlwdjRuZXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcywgdHlwZShpcHY0YWRkcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrLCB0eXBlKGlwdjZuZXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2QWRkcmVzcywgdHlwZShpcHY2YWRkcikpCisKKyAgICBkZWYgdGVzdFJlc2VydmVkSXB2NChzZWxmKToKKyAgICAgICAgIyB0ZXN0IG5ldHdvcmtzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAnMjI0LjEuMS4xLzMxJykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjQwLjAuMC4wJykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyNDAuMC4wLjAnKS5pc19yZXNlcnZlZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgJzE5Mi4xNjguMS4xLzE3JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4xNjkuMC4wJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnMTAuMjU1LjI1NS4yNTUnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTEuMC4wLjAnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTEuMC4wLjAnKS5pc19yZXNlcnZlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnMTcyLjMxLjI1NS4yNTUnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTcyLjMyLjAuMCcpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTY5LjI1NC4xLjAvMjQnKS5pc19saW5rX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNjkuMjU0LjEwMC4yMDAvMjQnKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzE2OS4yNTUuMTAwLjIwMC8yNCcpLmlzX2xpbmtfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxMjcuMTAwLjIwMC4yNTQvMzInKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnMTI3LjQyLjAuMC8xNicpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTI4LjAuMC4wJykuaXNfbG9vcGJhY2spCisKKyAgICAgICAgIyB0ZXN0IGFkZHJlc3NlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcwLjAuMC4wJykuaXNfdW5zcGVjaWZpZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIyNC4xLjEuMScpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzI0MC4wLjAuMCcpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjQwLjAuMC4xJykuaXNfcmVzZXJ2ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIzOS4yNTUuMjU1LjI1NScpLmlzX3Jlc2VydmVkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjguMS4xJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjkuMC4wJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnMTAuMjU1LjI1NS4yNTUnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTEuMC4wLjAnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICcxNzIuMzEuMjU1LjI1NScpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxNzIuMzIuMC4wJykuaXNfcHJpdmF0ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE2OS4yNTQuMTAwLjIwMCcpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE2OS4yNTUuMTAwLjIwMCcpLmlzX2xpbmtfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTI3LjEwMC4yMDAuMjU0JykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEyNy40Mi4wLjAnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEyOC4wLjAuMCcpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcwLjAuMC4wJykuaXNfdW5zcGVjaWZpZWQpCisKKyAgICBkZWYgdGVzdFJlc2VydmVkSXB2NihzZWxmKToKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZmZmOjonKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoMioqMTI4IC0gMSkuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZjAwOjonKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZGZmOjonKS5pc19tdWx0aWNhc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmVjZjo6JykuaXNfc2l0ZV9sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmVmZjpmZmZmOmZmZmY6ZmZmZjo6JykuaXNfc2l0ZV9sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJ2ZiZjpmZmZmOjonKS5pc19zaXRlX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmYwMDo6JykuaXNfc2l0ZV9sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmYzAwOjonKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICdmYzAwOmZmZmY6ZmZmZjpmZmZmOjonKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmJmZjpmZmZmOjonKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmUwMDo6JykuaXNfcHJpdmF0ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZWEwOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICdmZWJmOmZmZmY6OicpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICdmZTdmOmZmZmY6OicpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZWMwOjonKS5pc19saW5rX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMDowOjowOjAxJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzo6MS8xMjcnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6JykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjInKS5pc19sb29wYmFjaykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcwOjowJykuaXNfdW5zcGVjaWZpZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjEnKS5pc191bnNwZWNpZmllZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6LzEyNycpLmlzX3Vuc3BlY2lmaWVkKQorCisgICAgICAgICMgdGVzdCBhZGRyZXNzZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmZmZjo6JykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKDIqKjEyOCAtIDEpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmYwMDo6JykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmRmZjo6JykuaXNfbXVsdGljYXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZlY2Y6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZlZmY6ZmZmZjpmZmZmOmZmZmY6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICdmYmY6ZmZmZjo6JykuaXNfc2l0ZV9sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZmMDA6OicpLmlzX3NpdGVfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmMwMDo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnZmMwMDpmZmZmOmZmZmY6ZmZmZjo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZiZmY6ZmZmZjo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZlMDA6OicpLmlzX3ByaXZhdGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmVhMDo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnZmViZjpmZmZmOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnZmU3ZjpmZmZmOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmVjMDo6JykuaXNfbGlua19sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcwOjA6OjA6MDEnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjInKS5pc19sb29wYmFjaykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcwOjowJykuaXNfdW5zcGVjaWZpZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEnKS5pc191bnNwZWNpZmllZCkKKworICAgICAgICAjIHNvbWUgZ2VuZXJpYyBJRVRGIHJlc2VydmVkIGFkZHJlc3NlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMDA6OicpLmlzX3Jlc2VydmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc0MDAwOjoxLzEyOCcpLmlzX3Jlc2VydmVkKQorCisgICAgZGVmIHRlc3RJcHY0TWFwcGVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OmZmZmY6MTkyLjE2OC4xLjEnKS5pcHY0X21hcHBlZCwKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjE2OC4xLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpjMGE4OjEwMScpLmlwdjRfbWFwcGVkLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OmZmZmY6YzBhODoxMDEnKS5pcHY0X21hcHBlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjE2OC4xLjEnKSkKKworICAgIGRlZiB0ZXN0QWRkckV4Y2x1ZGUoc2VsZik6CisgICAgICAgIGFkZHIxID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4wLzI0JykKKyAgICAgICAgYWRkcjIgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4xLjAvMjYnKQorICAgICAgICBhZGRyMyA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4yLjEuMC8yNCcpCisgICAgICAgIGFkZHI0ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEuMS4wJykKKyAgICAgICAgYWRkcjUgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvMzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChsaXN0KGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyMikpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS42NC8yNicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4xLjEyOC8yNScpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjQpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsIGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjEpKSwgW10pCisKKyAgICBkZWYgdGVzdEhhc2goc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxMC4xLjEuMC8yNCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzEwLjEuMS4wLzI0JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4wLzI0JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2goaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4wLzI0JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEuMS4wJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2goaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEuMS4wJykpKQorICAgICAgICAjIGk3MAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMi4zLjQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAgICAgaW50KGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjIuMy40JykuX2lwKSkpKQorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTAuMS4xLjAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTo6JykKKyAgICAgICAgZHVtbXkgPSB7fQorICAgICAgICBkdW1teVtzZWxmLmlwdjRfYWRkcmVzc10gPSBOb25lCisgICAgICAgIGR1bW15W3NlbGYuaXB2Nl9hZGRyZXNzXSA9IE5vbmUKKyAgICAgICAgZHVtbXlbaXAxXSA9IE5vbmUKKyAgICAgICAgZHVtbXlbaXAyXSA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9hZGRyZXNzIGluIGR1bW15KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAyIGluIGR1bW15KQorCisgICAgZGVmIHRlc3RJUEJhc2VzKHNlbGYpOgorICAgICAgICBuZXQgPSBzZWxmLmlwdjRfbmV0d29yaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxLjIuMy4wLzI0JywgbmV0LmNvbXByZXNzZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgbmV0Ll9pcF9pbnRfZnJvbV9wcmVmaXgoMjQpLAorICAgICAgICAgICAgICAgIG5ldC5faXBfaW50X2Zyb21fcHJlZml4KE5vbmUpKQorICAgICAgICBuZXQgPSBzZWxmLmlwdjZfbmV0d29yaworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZXQuX3N0cmluZ19mcm9tX2lwX2ludCwgMioqMTI4ICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZWxmLmlwdjZfYWRkcmVzcy5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuaXB2Nl9hZGRyZXNzLl9pcCksCisgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2FkZHJlc3MuX3N0cmluZ19mcm9tX2lwX2ludChOb25lKSkKKworICAgIGRlZiB0ZXN0SVB2Nk5ldHdvcmtIZWxwZXJzKHNlbGYpOgorICAgICAgICBuZXQgPSBzZWxmLmlwdjZfbmV0d29yaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjY1ODoyMmE6Y2FmZTo6LzY0JywgbmV0LndpdGhfcHJlZml4bGVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjY1ODoyMmE6Y2FmZTo6L2ZmZmY6ZmZmZjpmZmZmOmZmZmY6OicsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0LndpdGhfbmV0bWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTo2NTg6MjJhOmNhZmU6Oi86OmZmZmY6ZmZmZjpmZmZmOmZmZmYnLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldC53aXRoX2hvc3RtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjY1ODoyMmE6Y2FmZTo6LzY0Jywgc3RyKG5ldCkpCisKKyAgICBkZWYgdGVzdElQdjROZXR3b3JrSGVscGVycyhzZWxmKToKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY0X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMuMC8yNCcsIG5ldC53aXRoX3ByZWZpeGxlbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMuMC8yNTUuMjU1LjI1NS4wJywgbmV0LndpdGhfbmV0bWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMuMC8wLjAuMC4yNTUnLCBuZXQud2l0aF9ob3N0bWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMuMC8yNCcsIHN0cihuZXQpKQorCisgICAgZGVmIHRlc3RDb3B5Q29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIGFkZHIxID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4wLzI0JykKKyAgICAgICAgYWRkcjIgPSBpcGFkZHJlc3MuaXBfbmV0d29yayhhZGRyMSkKKyAgICAgICAgYWRkcjMgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjQnKQorICAgICAgICBhZGRyNCA9IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoYWRkcjMpCisgICAgICAgIGFkZHI1ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykKKyAgICAgICAgYWRkcjYgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyMSwgYWRkcjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcjMsIGFkZHI0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHI1LCBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcjUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHI2LCBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcjYpKQorCisgICAgZGVmIHRlc3RDb21wcmVzc0lQdjZBZGRyZXNzKHNlbGYpOgorICAgICAgICB0ZXN0X2FkZHJlc3NlcyA9IHsKKyAgICAgICAgICAgICcxOjI6Mzo0OjU6Njo3OjgnOiAnMToyOjM6NDo1OjY6Nzo4LzEyOCcsCisgICAgICAgICAgICAnMjAwMTowOjA6NDowOjA6MDo4JzogJzIwMDE6MDowOjQ6OjgvMTI4JywKKyAgICAgICAgICAgICcyMDAxOjA6MDo0OjU6Njo3OjgnOiAnMjAwMTo6NDo1OjY6Nzo4LzEyOCcsCisgICAgICAgICAgICAnMjAwMTowOjM6NDo1OjY6Nzo4JzogJzIwMDE6MDozOjQ6NTo2Ojc6OC8xMjgnLAorICAgICAgICAgICAgJzIwMDE6MDozOjQ6NTo2Ojc6OCc6ICcyMDAxOjA6Mzo0OjU6Njo3OjgvMTI4JywKKyAgICAgICAgICAgICcwOjA6MzowOjA6MDowOmZmZmYnOiAnMDowOjM6OmZmZmYvMTI4JywKKyAgICAgICAgICAgICcwOjA6MDo0OjA6MDowOmZmZmYnOiAnOjo0OjA6MDowOmZmZmYvMTI4JywKKyAgICAgICAgICAgICcwOjA6MDowOjU6MDowOmZmZmYnOiAnOjo1OjA6MDpmZmZmLzEyOCcsCisgICAgICAgICAgICAnMTowOjA6NDowOjA6Nzo4JzogJzE6OjQ6MDowOjc6OC8xMjgnLAorICAgICAgICAgICAgJzA6MDowOjA6MDowOjA6MCc6ICc6Oi8xMjgnLAorICAgICAgICAgICAgJzA6MDowOjA6MDowOjA6MC8wJzogJzo6LzAnLAorICAgICAgICAgICAgJzA6MDowOjA6MDowOjA6MSc6ICc6OjEvMTI4JywKKyAgICAgICAgICAgICcyMDAxOjA2NTg6MDIyYTpjYWZlOjAwMDA6MDAwMDowMDAwOjAwMDAvNjYnOgorICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjovNjYnLAorICAgICAgICAgICAgJzo6MS4yLjMuNCc6ICc6OjEwMjozMDQvMTI4JywKKyAgICAgICAgICAgICcxOjI6Mzo0OjU6ZmZmZjoxLjIuMy40JzogJzE6MjozOjQ6NTpmZmZmOjEwMjozMDQvMTI4JywKKyAgICAgICAgICAgICc6Ojc6Njo1OjQ6MzoyOjEnOiAnMDo3OjY6NTo0OjM6MjoxLzEyOCcsCisgICAgICAgICAgICAnOjo3OjY6NTo0OjM6MjowJzogJzA6Nzo2OjU6NDozOjI6MC8xMjgnLAorICAgICAgICAgICAgJzc6Njo1OjQ6MzoyOjE6Oic6ICc3OjY6NTo0OjM6MjoxOjAvMTI4JywKKyAgICAgICAgICAgICcwOjY6NTo0OjM6MjoxOjonOiAnMDo2OjU6NDozOjI6MTowLzEyOCcsCisgICAgICAgICAgICB9CisgICAgICAgIGZvciB1bmNvbXByZXNzZWQsIGNvbXByZXNzZWQgaW4gbGlzdCh0ZXN0X2FkZHJlc3Nlcy5pdGVtcygpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcHJlc3NlZCwgc3RyKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKAorICAgICAgICAgICAgICAgIHVuY29tcHJlc3NlZCkpKQorCisgICAgZGVmIHRlc3RFeHBsb2RlU2hvcnRIYW5kSXBTdHIoc2VsZik6CisgICAgICAgIGFkZHIxID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6OjEnKQorICAgICAgICBhZGRyMiA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTowOjVlZjU6NzlmZDowOjU5ZDphMGU1OmJhMScpCisgICAgICAgIGFkZHIzID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjovOTYnKQorICAgICAgICBhZGRyNCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjE2OC4xNzguMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMS8xMjgnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIxLmV4cGxvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcwMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDEvMTI4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxLzEyOCcpLmV4cGxvZGVkKQorICAgICAgICAjIGlzc3VlIDc3CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6MDAwMDo1ZWY1Ojc5ZmQ6MDAwMDowNTlkOmEwZTU6MGJhMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcjIuZXhwbG9kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMC85NicsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcjMuZXhwbG9kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE5Mi4xNjguMTc4LjEnLCBhZGRyNC5leHBsb2RlZCkKKworICAgIGRlZiB0ZXN0SW50UmVwcmVzZW50YXRpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTY5MDkwNjAsIGludChzZWxmLmlwdjRfYWRkcmVzcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDI1NDA2MTY4MjkxODI0Njk0MzM1NDc3NjI0ODIwOTc5NDY2MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuaXB2Nl9hZGRyZXNzKSkKKworICAgIGRlZiB0ZXN0Rm9yY2VWZXJzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9uZXR3b3JrKDEpLnZlcnNpb24sIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKDEpLnZlcnNpb24sIDYpCisKKyAgICBkZWYgdGVzdFdpdGhTdGFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9pbnRlcmZhY2Uud2l0aF9wcmVmaXhsZW4sICIxLjIuMy40LzI0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLndpdGhfbmV0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiMS4yLjMuNC8yNTUuMjU1LjI1NS4wIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLndpdGhfaG9zdG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIjEuMi4zLjQvMC4wLjAuMjU1IikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2Uud2l0aF9wcmVmaXhsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS82NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS53aXRoX25ldG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS9mZmZmOmZmZmY6ZmZmZjpmZmZmOjonKQorICAgICAgICAjIHRoaXMgcHJvYmFibHkgZG9uJ3QgbWFrZSBtdWNoIHNlbnNlLCBidXQgaXQncyBpbmNsdWRlZCBmb3IKKyAgICAgICAgIyBjb21wYXRpYmlsaXR5IHdpdGggaXB2NAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2Uud2l0aF9ob3N0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzo6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpCisKKyAgICBkZWYgdGVzdE5ldHdvcmtFbGVtZW50Q2FjaGluZyhzZWxmKToKKyAgICAgICAgIyBWNCAtIG1ha2Ugc3VyZSB3ZSdyZSBlbXB0eQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCduZXR3b3JrX2FkZHJlc3MnIGluIHNlbGYuaXB2NF9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnYnJvYWRjYXN0X2FkZHJlc3MnIGluIHNlbGYuaXB2NF9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnaG9zdG1hc2snIGluIHNlbGYuaXB2NF9uZXR3b3JrLl9jYWNoZSkKKworICAgICAgICAjIFY0IC0gcG9wdWxhdGUgYW5kIHRlc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy4wJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy4yNTUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5ob3N0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzAuMC4wLjI1NScpKQorCisgICAgICAgICMgVjQgLSBjaGVjayB3ZSdyZSBjYWNoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdicm9hZGNhc3RfYWRkcmVzcycgaW4gc2VsZi5pcHY0X25ldHdvcmsuX2NhY2hlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2hvc3RtYXNrJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisKKyAgICAgICAgIyBWNiAtIG1ha2Ugc3VyZSB3ZSdyZSBlbXB0eQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdicm9hZGNhc3RfYWRkcmVzcycgaW4gc2VsZi5pcHY2X25ldHdvcmsuX2NhY2hlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdob3N0bWFzaycgaW4gc2VsZi5pcHY2X25ldHdvcmsuX2NhY2hlKQorCisgICAgICAgICMgVjYgLSBwb3B1bGF0ZSBhbmQgdGVzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOjonKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTo2NTg6MjJhOmNhZmU6OicpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5icm9hZGNhc3RfYWRkcmVzcywKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTo2NTg6MjJhOmNhZmU6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLmhvc3RtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjpmZmZmOmZmZmY6ZmZmZjpmZmZmJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MsCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOmZmZmY6ZmZmZjpmZmZmOmZmZmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuaG9zdG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OmZmZmY6ZmZmZjpmZmZmOmZmZmYnKSkKKworICAgICAgICAjIFY2IC0gY2hlY2sgd2UncmUgY2FjaGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYnJvYWRjYXN0X2FkZHJlc3MnIGluIHNlbGYuaXB2Nl9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdob3N0bWFzaycgaW4gc2VsZi5pcHY2X25ldHdvcmsuX2NhY2hlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICAgICAgJ2Jyb2FkY2FzdF9hZGRyZXNzJyBpbiBzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuX2NhY2hlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2hvc3RtYXNrJyBpbiBzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuX2NhY2hlKQorCisgICAgZGVmIHRlc3RUZXJlZG8oc2VsZik6CisgICAgICAgICMgc3RvbGVuIGZyb20gd2lraXBlZGlhCisgICAgICAgIHNlcnZlciA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnNjUuNTQuMjI3LjEyMCcpCisgICAgICAgIGNsaWVudCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjAuMi40NScpCisgICAgICAgIHRlcmVkb19hZGRyID0gJzIwMDE6MDAwMDo0MTM2OmUzNzg6ODAwMDo2M2JmOjNmZmY6ZmRkMicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoc2VydmVyLCBjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKHRlcmVkb19hZGRyKS50ZXJlZG8pCisgICAgICAgIGJhZF9hZGRyID0gJzIwMDA6OjQxMzY6ZTM3ODo4MDAwOjYzYmY6M2ZmZjpmZGQyJworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwYWRkcmVzcy5pcF9hZGRyZXNzKGJhZF9hZGRyKS50ZXJlZG8pCisgICAgICAgIGJhZF9hZGRyID0gJzIwMDE6MDAwMTo0MTM2OmUzNzg6ODAwMDo2M2JmOjNmZmY6ZmRkMicKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuaXBfYWRkcmVzcyhiYWRfYWRkcikudGVyZWRvKQorCisgICAgICAgICMgaTc3CisgICAgICAgIHRlcmVkb19hZGRyID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjA6NWVmNTo3OWZkOjA6NTlkOmEwZTU6YmExJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCc5NC4yNDUuMTIxLjI1MycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzk1LjI2LjI0NC45NCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJlZG9fYWRkci50ZXJlZG8pCisKKyAgICBkZWYgdGVzdHNpeHRvZm91cihzZWxmKToKKyAgICAgICAgc2l4dG9mb3VyYWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAyOmFjMWQ6MmQ2NDo6MScpCisgICAgICAgIGJhZF9hZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDA6YWMxZDoyZDY0OjoxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE3Mi4yOS40NS4xMDAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXh0b2ZvdXJhZGRyLnNpeHRvZm91cikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiYWRfYWRkci5zaXh0b2ZvdXIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaXRlci5weQppbmRleCBlNDI0MzAzLi5iMmYzZTY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CkBAIC0yLDYgKzIsOCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgdW5saW5rLCBjcHl0aG9uX29ubHkKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIAogIyBUZXN0IHJlc3VsdCBvZiB0cmlwbGUgbG9vcCAodG9vIGJpZyB0byBpbmxpbmUpCiBUUklQTEVUUyA9IFsoMCwgMCwgMCksICgwLCAwLCAxKSwgKDAsIDAsIDIpLApAQCAtMjgsNiArMzAsOCBAQAogICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogICAgICAgICBzZWxmLmkgPSByZXMgKyAxCiAgICAgICAgIHJldHVybiByZXMKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCiAKIGNsYXNzIEl0ZXJhdGluZ1NlcXVlbmNlQ2xhc3M6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG4pOgpAQCAtNDksNyArNTMsOSBAQAogY2xhc3MgVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyBIZWxwZXIgdG8gY2hlY2sgdGhhdCBhbiBpdGVyYXRvciByZXR1cm5zIGEgZ2l2ZW4gc2VxdWVuY2UKLSAgICBkZWYgY2hlY2tfaXRlcmF0b3Ioc2VsZiwgaXQsIHNlcSk6CisgICAgZGVmIGNoZWNrX2l0ZXJhdG9yKHNlbGYsIGl0LCBzZXEsIHBpY2tsZT1UcnVlKToKKyAgICAgICAgaWYgcGlja2xlOgorICAgICAgICAgICAgc2VsZi5jaGVja19waWNrbGUoaXQsIHNlcSkKICAgICAgICAgcmVzID0gW10KICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgIHRyeToKQEAgLTYwLDEyICs2NiwzMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgc2VxKQogCiAgICAgIyBIZWxwZXIgdG8gY2hlY2sgdGhhdCBhIGZvciBsb29wIGdlbmVyYXRlcyBhIGdpdmVuIHNlcXVlbmNlCi0gICAgZGVmIGNoZWNrX2Zvcl9sb29wKHNlbGYsIGV4cHIsIHNlcSk6CisgICAgZGVmIGNoZWNrX2Zvcl9sb29wKHNlbGYsIGV4cHIsIHNlcSwgcGlja2xlPVRydWUpOgorICAgICAgICBpZiBwaWNrbGU6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShpdGVyKGV4cHIpLCBzZXEpCiAgICAgICAgIHJlcyA9IFtdCiAgICAgICAgIGZvciB2YWwgaW4gZXhwcjoKICAgICAgICAgICAgIHJlcy5hcHBlbmQodmFsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgc2VxKQogCisgICAgIyBIZWxwZXIgdG8gY2hlY2sgcGlja2xhYmlsaXR5CisgICAgZGVmIGNoZWNrX3BpY2tsZShzZWxmLCBpdG9yZywgc2VxKToKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdG9yZykKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgIyBDYW5ub3QgYXNzZXJ0IHR5cGUgZXF1YWxpdHkgYmVjYXVzZSBkaWN0IGl0ZXJhdG9ycyB1bnBpY2tsZSBhcyBsaXN0CisgICAgICAgICMgaXRlcmF0b3JzLgorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShpdCwgY29sbGVjdGlvbnMuYWJjLkl0ZXJhdG9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQoaXQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIHNlcVsxOl0pCisKICAgICAjIFRlc3QgYmFzaWMgdXNlIG9mIGl0ZXIoKSBmdW5jdGlvbgogICAgIGRlZiB0ZXN0X2l0ZXJfYmFzaWMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihyYW5nZSgxMCkpLCBsaXN0KHJhbmdlKDEwKSkpCkBAIC0xMzgsNyArMTY1LDcgQEAKICAgICAgICAgICAgICAgICBpZiBpID4gMTAwOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yICMgRW1lcmdlbmN5IHN0b3AKICAgICAgICAgICAgICAgICByZXR1cm4gaQotICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoQygpLCAxMCksIGxpc3QocmFuZ2UoMTApKSkKKyAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKEMoKSwgMTApLCBsaXN0KHJhbmdlKDEwKSksIHBpY2tsZT1GYWxzZSkKIAogICAgICMgVGVzdCB0d28tYXJndW1lbnQgaXRlcigpIHdpdGggZnVuY3Rpb24KICAgICBkZWYgdGVzdF9pdGVyX2Z1bmN0aW9uKHNlbGYpOgpAQCAtMTQ2LDcgKzE3Myw3IEBACiAgICAgICAgICAgICBpID0gc3RhdGVbMF0KICAgICAgICAgICAgIHN0YXRlWzBdID0gaSsxCiAgICAgICAgICAgICByZXR1cm4gaQotICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoc3BhbSwgMTApLCBsaXN0KHJhbmdlKDEwKSkpCisgICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihzcGFtLCAxMCksIGxpc3QocmFuZ2UoMTApKSwgcGlja2xlPUZhbHNlKQogCiAgICAgIyBUZXN0IHR3by1hcmd1bWVudCBpdGVyKCkgd2l0aCBmdW5jdGlvbiB0aGF0IHJhaXNlcyBTdG9wSXRlcmF0aW9uCiAgICAgZGVmIHRlc3RfaXRlcl9mdW5jdGlvbl9zdG9wKHNlbGYpOgpAQCAtMTU2LDcgKzE4Myw3IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogICAgICAgICAgICAgc3RhdGVbMF0gPSBpKzEKICAgICAgICAgICAgIHJldHVybiBpCi0gICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihzcGFtLCAyMCksIGxpc3QocmFuZ2UoMTApKSkKKyAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKHNwYW0sIDIwKSwgbGlzdChyYW5nZSgxMCkpLCBwaWNrbGU9RmFsc2UpCiAKICAgICAjIFRlc3QgZXhjZXB0aW9uIHByb3BhZ2F0aW9uIHRocm91Z2ggZnVuY3Rpb24gaXRlcmF0b3IKICAgICBkZWYgdGVzdF9leGNlcHRpb25fZnVuY3Rpb24oc2VsZik6CkBAIC0xOTgsNyArMjI1LDcgQEAKICAgICAgICAgICAgICAgICBpZiBpID09IDEwOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcXVlbmNlQ2xhc3MuX19nZXRpdGVtX18oc2VsZiwgaSkKLSAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChNeVNlcXVlbmNlQ2xhc3MoMjApLCBsaXN0KHJhbmdlKDEwKSkpCisgICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoTXlTZXF1ZW5jZUNsYXNzKDIwKSwgbGlzdChyYW5nZSgxMCkpLCBwaWNrbGU9RmFsc2UpCiAKICAgICAjIFRlc3QgYSBiaWcgcmFuZ2UKICAgICBkZWYgdGVzdF9pdGVyX2JpZ19yYW5nZShzZWxmKToKQEAgLTIzNyw4ICsyNjQsOCBAQAogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIGYgPSBvcGVuKFRFU1RGTiwgInIiKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKGYsIFsiMFxuIiwgIjFcbiIsICIyXG4iLCAiM1xuIiwgIjRcbiJdKQotICAgICAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChmLCBbXSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoZiwgWyIwXG4iLCAiMVxuIiwgIjJcbiIsICIzXG4iLCAiNFxuIl0sIHBpY2tsZT1GYWxzZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoZiwgW10sIHBpY2tsZT1GYWxzZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQppbmRleCA4Y2RjNTk3Li45MGU4NWE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQpAQCAtMzcsNiArMzcsMTMgQEAKICAgICAnVGVzdCBwcmVkaWNhdGUnCiAgICAgcmV0dXJuIHglMj09MQogCitkZWYgdHVwbGVpemUoKmFyZ3MpOgorICAgIHJldHVybiBhcmdzCisKK2RlZiBpcmFuZ2Uobik6CisgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgIHlpZWxkIGkKKwogY2xhc3MgU3RvcE5vdzoKICAgICAnQ2xhc3MgZW11bGF0aW5nIGFuIGVtcHR5IGl0ZXJhYmxlLicKICAgICBkZWYgX19pdGVyX18oc2VsZik6CkBAIC01NSw4ICs2Miw1OSBAQAogICAgICdGYWN0b3JpYWwnCiAgICAgcmV0dXJuIHByb2QocmFuZ2UoMSwgbisxKSkKIAorIyByb290IGxldmVsIG1ldGhvZHMgZm9yIHBpY2tsaW5nIGFiaWxpdHkKK2RlZiB0ZXN0UihyKToKKyAgICByZXR1cm4gclswXQorCitkZWYgdGVzdFIyKHIpOgorICAgIHJldHVybiByWzJdCisKK2RlZiB1bmRlcnRlbih4KToKKyAgICByZXR1cm4geDwxMAorCiBjbGFzcyBUZXN0QmFzaWNPcHModW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgZGVmIHBpY2tsZXRlc3Qoc2VsZiwgaXQsIHN0b3A9NCwgdGFrZT0xLCBjb21wYXJlPU5vbmUpOgorICAgICAgICAiIiJUZXN0IHRoYXQgYW4gaXRlcmF0b3IgaXMgdGhlIHNhbWUgYWZ0ZXIgcGlja2xpbmcsIGFsc28gd2hlbiBwYXJ0LWNvbnN1bWVkIiIiCisgICAgICAgIGRlZiBleHBhbmQoaXQsIGk9MCk6CisgICAgICAgICAgICAjIFJlY3Vyc2l2ZWx5IGV4cGFuZCBpdGVyYWJsZXMsIHdpdGhpbiBzZW5zaWJsZSBib3VuZHMKKyAgICAgICAgICAgIGlmIGkgPiAxMDoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImluZmluaXRlIHJlY3Vyc2lvbiBlbmNvdW50ZXJlZCIpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0LCBzdHIpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGwgPSBsaXN0KGlzbGljZShpdCwgc3RvcCkpCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBpdCAjIGNhbid0IGV4cGFuZCBpdAorICAgICAgICAgICAgcmV0dXJuIFtleHBhbmQoZSwgaSsxKSBmb3IgZSBpbiBsXQorCisgICAgICAgICMgVGVzdCB0aGUgaW5pdGlhbCBjb3B5IGFnYWluc3QgdGhlIG9yaWdpbmFsCisgICAgICAgIGR1bXAgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGkyID0gcGlja2xlLmxvYWRzKGR1bXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdCksIHR5cGUoaTIpKQorICAgICAgICBhLCBiID0gZXhwYW5kKGl0KSwgZXhwYW5kKGkyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCisgICAgICAgIGlmIGNvbXBhcmU6CisgICAgICAgICAgICBjID0gZXhwYW5kKGNvbXBhcmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGMpCisKKyAgICAgICAgIyBUYWtlIGZyb20gdGhlIGNvcHksIGFuZCBjcmVhdGUgYW5vdGhlciBjb3B5IGFuZCBjb21wYXJlIHRoZW0uCisgICAgICAgIGkzID0gcGlja2xlLmxvYWRzKGR1bXApCisgICAgICAgIHRvb2sgPSAwCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHRha2UpOgorICAgICAgICAgICAgICAgIG5leHQoaTMpCisgICAgICAgICAgICAgICAgdG9vayArPSAxCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcGFzcyAjaW4gY2FzZSB0aGVyZSBpcyBsZXNzIGRhdGEgdGhhbiAndGFrZScKKyAgICAgICAgZHVtcCA9IHBpY2tsZS5kdW1wcyhpMykKKyAgICAgICAgaTQgPSBwaWNrbGUubG9hZHMoZHVtcCkKKyAgICAgICAgYSwgYiA9IGV4cGFuZChpMyksIGV4cGFuZChpNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQorICAgICAgICBpZiBjb21wYXJlOgorICAgICAgICAgICAgYyA9IGV4cGFuZChjb21wYXJlW3Rvb2s6XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYyk7CisKICAgICBkZWYgdGVzdF9hY2N1bXVsYXRlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShyYW5nZSgxMCkpKSwgICAgICAgICAgICAgICAjIG9uZSBwb3NpdGlvbmFsIGFyZwogICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMSwgMywgNiwgMTAsIDE1LCAyMSwgMjgsIDM2LCA0NV0pCkBAIC02OSwxMSArMTI3LDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKCdhYmMnKSksIFsnYScsICdhYicsICdhYmMnXSkgICAjIHdvcmtzIHdpdGggbm9uLW51bWVyaWMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUoW10pKSwgW10pICAgICAgICAgICAgICAgICAgIyBlbXB0eSBpdGVyYWJsZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShbN10pKSwgWzddKSAgICAgICAgICAgICAgICAjIGl0ZXJhYmxlIG9mIGxlbmd0aCBvbmUKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhY2N1bXVsYXRlLCByYW5nZSgxMCksIDUpICAgICAgIyB0b28gbWFueSBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYWNjdW11bGF0ZSwgcmFuZ2UoMTApLCA1LCA2KSAgICMgdG9vIG1hbnkgYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFjY3VtdWxhdGUpICAgICAgICAgICAgICAgICAgICAjIHRvbyBmZXcgYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFjY3VtdWxhdGUsIHg9cmFuZ2UoMTApKSAgICAgICAjIHVuZXhwZWN0ZWQga3dkIGFyZwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsIGFjY3VtdWxhdGUoWzEsIFtdXSkpICAgICAjIGFyZ3MgdGhhdCBkb24ndCBhZGQKIAorICAgICAgICBzID0gWzIsIDgsIDksIDUsIDcsIDAsIDMsIDQsIDEsIDZdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKHMsIG1pbikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsyLCAyLCAyLCAyLCAyLCAwLCAwLCAwLCAwLCAwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUocywgbWF4KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgWzIsIDgsIDksIDksIDksIDksIDksIDksIDksIDldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShzLCBvcGVyYXRvci5tdWwpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbMiwgMTYsIDE0NCwgNzIwLCA1MDQwLCAwLCAwLCAwLCAwLCAwXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbGlzdChhY2N1bXVsYXRlKHMsIGNocikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVuYXJ5LW9wZXJhdGlvbgorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYWNjdW11bGF0ZShyYW5nZSgxMCkpKSAgICAgICAgICAgICAgICAgICAgICAjIHRlc3QgcGlja2xpbmcKKwogICAgIGRlZiB0ZXN0X2NoYWluKHNlbGYpOgogCiAgICAgICAgIGRlZiBjaGFpbjIoKml0ZXJhYmxlcyk6CkBAIC05NiwxNCArMTY1LDQzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSg0LCBjaGFpbi5mcm9tX2l0ZXJhYmxlKFsnYWJjJywgJ2RlZiddKSksIGxpc3QoJ2FiY2QnKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBjaGFpbi5mcm9tX2l0ZXJhYmxlKFsyLCAzXSkpCiAKKyAgICBkZWYgdGVzdF9jaGFpbl9yZWR1Y2libGUoc2VsZik6CisgICAgICAgIG9wZXJhdG9ycyA9IFtjb3B5LmRlZXBjb3B5LAorICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHM6IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMocykpXQorICAgICAgICBmb3Igb3BlciBpbiBvcGVyYXRvcnM6CisgICAgICAgICAgICBpdCA9IGNoYWluKCdhYmMnLCAnZGVmJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcGVyKGl0KSksIGxpc3QoJ2FiY2RlZicpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgJ2EnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wZXIoaXQpKSwgbGlzdCgnYmNkZWYnKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wZXIoY2hhaW4oJycpKSksIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDQsIG9wZXIoY2hhaW4oJ2FiYycsICdkZWYnKSkpLCBsaXN0KCdhYmNkJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsIG9wZXIoY2hhaW4oMiwgMykpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY2hhaW4oJ2FiYycsICdkZWYnKSwgY29tcGFyZT1saXN0KCdhYmNkZWYnKSkKKwogICAgIGRlZiB0ZXN0X2NvbWJpbmF0aW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5hdGlvbnMsICdhYmMnKSAgICAgICAjIG1pc3NpbmcgciBhcmd1bWVudAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmF0aW9ucywgJ2FiYycsIDIsIDEpICMgdG9vIG1hbnkgYXJndW1lbnRzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluYXRpb25zLCBOb25lKSAgICAgICAgIyBwb29sIGlzIG5vdCBpdGVyYWJsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21iaW5hdGlvbnMsICdhYmMnLCAtMikgICMgciBpcyBuZWdhdGl2ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29tYmluYXRpb25zKCdhYmMnLCAzMikpLCBbXSkgICAgICMgciA+IG4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbWJpbmF0aW9ucyhyYW5nZSg0KSwgMykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoMCwxLDIpLCAoMCwxLDMpLCAoMCwyLDMpLCAoMSwyLDMpXSkKKworICAgICAgICBmb3Igb3AgaW4gKGxhbWJkYSBhOmEsIGxhbWJkYSBhOnBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYSkpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjb21iaW5hdGlvbnMoJ2FiYycsIDMyKSkpLCBbXSkgICAgICMgciA+IG4KKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGNvbWJpbmF0aW9ucygnQUJDRCcsIDIpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0EnLCdCJyksICgnQScsJ0MnKSwgKCdBJywnRCcpLCAoJ0InLCdDJyksICgnQicsJ0QnKSwgKCdDJywnRCcpXSkKKyAgICAgICAgICAgIHRlc3RJbnRlcm1lZGlhdGUgPSBjb21iaW5hdGlvbnMoJ0FCQ0QnLCAyKQorICAgICAgICAgICAgbmV4dCh0ZXN0SW50ZXJtZWRpYXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKHRlc3RJbnRlcm1lZGlhdGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnQScsJ0MnKSwgKCdBJywnRCcpLCAoJ0InLCdDJyksICgnQicsJ0QnKSwgKCdDJywnRCcpXSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGNvbWJpbmF0aW9ucyhyYW5nZSg0KSwgMykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygwLDEsMiksICgwLDEsMyksICgwLDIsMyksICgxLDIsMyldKQorICAgICAgICAgICAgdGVzdEludGVybWVkaWF0ZSA9IGNvbWJpbmF0aW9ucyhyYW5nZSg0KSwgMykKKyAgICAgICAgICAgIG5leHQodGVzdEludGVybWVkaWF0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcCh0ZXN0SW50ZXJtZWRpYXRlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoMCwxLDMpLCAoMCwyLDMpLCAoMSwyLDMpXSkKKwogCiAgICAgICAgIGRlZiBjb21iaW5hdGlvbnMxKGl0ZXJhYmxlLCByKToKICAgICAgICAgICAgICdQdXJlIHB5dGhvbiB2ZXJzaW9uIHNob3duIGluIHRoZSBkb2NzJwpAQCAtMTU4LDcgKzI1NiwxMSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KGNvbWJpbmF0aW9uczIodmFsdWVzLCByKSkpICMgbWF0Y2hlcyBzZWNvbmQgcHVyZSBweXRob24gdmVyc2lvbgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KGNvbWJpbmF0aW9uczModmFsdWVzLCByKSkpICMgbWF0Y2hlcyBzZWNvbmQgcHVyZSBweXRob24gdmVyc2lvbgogCisgICAgICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGNvbWJpbmF0aW9ucyh2YWx1ZXMsIHIpKSAgICAgICAgICAgICAgICAgIyB0ZXN0IHBpY2tsaW5nCisKICAgICAgICAgIyBUZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbDogIHR1cGxlIHJlLXVzZQorICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXVzZSBpcyBzcGVjaWZpYyB0byBDUHl0aG9uIikKKyAgICBkZWYgdGVzdF9jb21iaW5hdGlvbnNfdHVwbGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNldChtYXAoaWQsIGNvbWJpbmF0aW9ucygnYWJjZGUnLCAzKSkpKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4oc2V0KG1hcChpZCwgbGlzdChjb21iaW5hdGlvbnMoJ2FiY2RlJywgMykpKSkpLCAxKQogCkBAIC0xNjgsOCArMjcwLDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3dyLCAnYWJjJywgMiwgMSkgIyB0b28gbWFueSBhcmd1bWVudHMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjd3IsIE5vbmUpICAgICAgICAjIHBvb2wgaXMgbm90IGl0ZXJhYmxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGN3ciwgJ2FiYycsIC0yKSAgIyByIGlzIG5lZ2F0aXZlCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjd3IoJ0FCQycsIDIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbKCdBJywnQScpLCAoJ0EnLCdCJyksICgnQScsJ0MnKSwgKCdCJywnQicpLCAoJ0InLCdDJyksICgnQycsJ0MnKV0pCisKKyAgICAgICAgZm9yIG9wIGluIChsYW1iZGEgYTphLCBsYW1iZGEgYTpwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGEpKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY3dyKCdBQkMnLCAyKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdBJywnQScpLCAoJ0EnLCdCJyksICgnQScsJ0MnKSwgKCdCJywnQicpLCAoJ0InLCdDJyksICgnQycsJ0MnKV0pCisgICAgICAgICAgICB0ZXN0SW50ZXJtZWRpYXRlID0gY3dyKCdBQkMnLCAyKQorICAgICAgICAgICAgbmV4dCh0ZXN0SW50ZXJtZWRpYXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKHRlc3RJbnRlcm1lZGlhdGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnQScsJ0InKSwgKCdBJywnQycpLCAoJ0InLCdCJyksICgnQicsJ0MnKSwgKCdDJywnQycpXSkKKwogCiAgICAgICAgIGRlZiBjd3IxKGl0ZXJhYmxlLCByKToKICAgICAgICAgICAgICdQdXJlIHB5dGhvbiB2ZXJzaW9uIHNob3duIGluIHRoZSBkb2NzJwpAQCAtMjI4LDcgKzMzNywxMyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KGN3cjEodmFsdWVzLCByKSkpICAgICAgICAgIyBtYXRjaGVzIGZpcnN0IHB1cmUgcHl0aG9uIHZlcnNpb24KICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChjd3IyKHZhbHVlcywgcikpKSAgICAgICAgICMgbWF0Y2hlcyBzZWNvbmQgcHVyZSBweXRob24gdmVyc2lvbgogCisgICAgICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGN3cih2YWx1ZXMscikpICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRlc3QgcGlja2xpbmcKKwogICAgICAgICAjIFRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlsOiAgdHVwbGUgcmUtdXNlCisKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmV1c2UgaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbiIpCisgICAgZGVmIHRlc3RfY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnRfdHVwbGVfcmV1c2Uoc2VsZik6CisgICAgICAgIGN3ciA9IGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNldChtYXAoaWQsIGN3cignYWJjZGUnLCAzKSkpKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4oc2V0KG1hcChpZCwgbGlzdChjd3IoJ2FiY2RlJywgMykpKSkpLCAxKQogCkBAIC0yOTIsNyArNDA3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KHBlcm11dGF0aW9ucyh2YWx1ZXMsIE5vbmUpKSkgIyB0ZXN0IHIgYXMgTm9uZQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChwZXJtdXRhdGlvbnModmFsdWVzKSkpICAgICAgICMgdGVzdCBkZWZhdWx0IHIKIAotICAgICAgICAjIFRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlsOiAgdHVwbGUgcmUtdXNlCisgICAgICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHBlcm11dGF0aW9ucyh2YWx1ZXMsIHIpKSAgICAgICAgICAgICAgICAjIHRlc3QgcGlja2xpbmcKKworICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXN1c2UgaXMgQ1B5dGhvbiBzcGVjaWZpYyIpCisgICAgZGVmIHRlc3RfcGVybXV0YXRpb25zX3R1cGxlX3JldXNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXQobWFwKGlkLCBwZXJtdXRhdGlvbnMoJ2FiY2RlJywgMykpKSksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHNldChtYXAoaWQsIGxpc3QocGVybXV0YXRpb25zKCdhYmNkZScsIDMpKSkpKSwgMSkKIApAQCAtMzQ1LDYgKzQ2MywyNCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXByZXNzLCByYW5nZSg2KSkgICAgICAgICAgICAjIHRvbyBmZXcgYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXByZXNzLCByYW5nZSg2KSwgTm9uZSkgICAgICAjIHRvbyBtYW55IGFyZ3MKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgZm9yIG9wIGluIChsYW1iZGEgYTpjb3B5LmNvcHkoYSksIGxhbWJkYSBhOmNvcHkuZGVlcGNvcHkoYSksIGxhbWJkYSBhOnBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYSkpKToKKyAgICAgICAgICAgIGZvciBkYXRhLCBzZWxlY3RvcnMsIHJlc3VsdDEsIHJlc3VsdDIgaW4gWworICAgICAgICAgICAgICAgICgnQUJDREVGJywgWzEsMCwxLDAsMSwxXSwgJ0FDRUYnLCAnQ0VGJyksCisgICAgICAgICAgICAgICAgKCdBQkNERUYnLCBbMCwwLDAsMCwwLDBdLCAnJywgJycpLAorICAgICAgICAgICAgICAgICgnQUJDREVGJywgWzEsMSwxLDEsMSwxXSwgJ0FCQ0RFRicsICdCQ0RFRicpLAorICAgICAgICAgICAgICAgICgnQUJDREVGJywgWzEsMCwxXSwgJ0FDJywgJ0MnKSwKKyAgICAgICAgICAgICAgICAoJ0FCQycsIFswLDEsMSwxLDEsMV0sICdCQycsICdDJyksCisgICAgICAgICAgICAgICAgXToKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjb21wcmVzcyhkYXRhPWRhdGEsIHNlbGVjdG9ycz1zZWxlY3RvcnMpKSksIGxpc3QocmVzdWx0MSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGNvbXByZXNzKGRhdGEsIHNlbGVjdG9ycykpKSwgbGlzdChyZXN1bHQxKSkKKyAgICAgICAgICAgICAgICB0ZXN0SW50ZXJtZWRpYXRlID0gY29tcHJlc3MoZGF0YSwgc2VsZWN0b3JzKQorICAgICAgICAgICAgICAgIGlmIHJlc3VsdDE6CisgICAgICAgICAgICAgICAgICAgIG5leHQodGVzdEludGVybWVkaWF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKHRlc3RJbnRlcm1lZGlhdGUpKSwgbGlzdChyZXN1bHQyKSkKKworCiAgICAgZGVmIHRlc3RfY291bnQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHppcCgnYWJjJyxjb3VudCgpKSwgWygnYScsIDApLCAoJ2InLCAxKSwgKCdjJywgMildKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6aXAoJ2FiYycsY291bnQoMykpLCBbKCdhJywgMyksICgnYicsIDQpLCAoJ2MnLCA1KV0pCkBAIC0zNzksNyArNTE1LDcgQEAKICAgICAgICAgICAgIGMgPSBjb3VudCh2YWx1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChjb3B5LmNvcHkoYykpLCB2YWx1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChjb3B5LmRlZXBjb3B5KGMpKSwgdmFsdWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQocGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhjKSkpLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChjb3VudCh2YWx1ZSkpCiAKICAgICAgICAgI2NoZWNrIHByb3BlciBpbnRlcm5hbCBlcnJvciBoYW5kbGluZyBmb3IgbGFyZ2UgInN0ZXAnIHNpemVzCiAgICAgICAgIGNvdW50KDEsIG1heHNpemUrNSk7IHN5cy5leGNfaW5mbygpCkBAIC00MjYsNiArNTYyLDcgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByMiA9ICgnY291bnQoJXIsICVyKScgJSAoaSwgaikpLnJlcGxhY2UoJ0wnLCAnJykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIxLCByMikKKyAgICAgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY291bnQoaSwgaikpCiAKICAgICBkZWYgdGVzdF9jeWNsZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDEwLCBjeWNsZSgnYWJjJykpLCBsaXN0KCdhYmNhYmNhYmNhJykpCkBAIC00MzQsNiArNTcxLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUsIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoY3ljbGUoZ2VuMygpKSwxMCkpLCBbMCwxLDIsMCwxLDIsMCwxLDIsMF0pCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGMgPSBjeWNsZSgnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGMpLCAnYScpCisgICAgICAgICNzaW1wbGUgY29weSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCwgYmVjYXVzZSBfX3JlZHVjZV9fIHJldHVybnMKKyAgICAgICAgI2FuIGludGVybmFsIGl0ZXJhdG9yCisgICAgICAgICNzZWxmLmFzc2VydEVxdWFsKHRha2UoMTAsIGNvcHkuY29weShjKSksIGxpc3QoJ2JjYWJjYWJjYWInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDEwLCBjb3B5LmRlZXBjb3B5KGMpKSwgbGlzdCgnYmNhYmNhYmNhYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMTAsIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpKSwgbGlzdCgnYmNhYmNhYmNhYicpKQorICAgICAgICBuZXh0KGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgxMCwgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhjKSkpLCBsaXN0KCdjYWJjYWJjYWJjJykpCisgICAgICAgIHNlbGYucGlja2xldGVzdChjeWNsZSgnYWJjJykpCisKICAgICBkZWYgdGVzdF9ncm91cGJ5KHNlbGYpOgogICAgICAgICAjIENoZWNrIHdoZXRoZXIgaXQgYWNjZXB0cyBhcmd1bWVudHMgY29ycmVjdGx5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGxpc3QoZ3JvdXBieShbXSkpKQpAQCAtNDUyLDE4ICs2MDEsMzcgQEAKICAgICAgICAgICAgICAgICBkdXAuYXBwZW5kKGVsZW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgZHVwKQogCisgICAgICAgICMgQ2hlY2sgbm9ybWFsIHBpY2tsZWQKKyAgICAgICAgZHVwID0gW10KKyAgICAgICAgZm9yIGssIGcgaW4gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhncm91cGJ5KHMsIHRlc3RSKSkpOgorICAgICAgICAgICAgZm9yIGVsZW0gaW4gZzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGssIGVsZW1bMF0pCisgICAgICAgICAgICAgICAgZHVwLmFwcGVuZChlbGVtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIGR1cCkKKwogICAgICAgICAjIENoZWNrIG5lc3RlZCBjYXNlCiAgICAgICAgIGR1cCA9IFtdCi0gICAgICAgIGZvciBrLCBnIGluIGdyb3VwYnkocywgbGFtYmRhIHI6clswXSk6Ci0gICAgICAgICAgICBmb3IgaWssIGlnIGluIGdyb3VwYnkoZywgbGFtYmRhIHI6clsyXSk6CisgICAgICAgIGZvciBrLCBnIGluIGdyb3VwYnkocywgdGVzdFIpOgorICAgICAgICAgICAgZm9yIGlrLCBpZyBpbiBncm91cGJ5KGcsIHRlc3RSMik6CiAgICAgICAgICAgICAgICAgZm9yIGVsZW0gaW4gaWc6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaywgZWxlbVswXSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpaywgZWxlbVsyXSkKICAgICAgICAgICAgICAgICAgICAgZHVwLmFwcGVuZChlbGVtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIGR1cCkKIAorICAgICAgICAjIENoZWNrIG5lc3RlZCBhbmQgcGlja2xlZAorICAgICAgICBkdXAgPSBbXQorICAgICAgICBmb3IgaywgZyBpbiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGdyb3VwYnkocywgdGVzdFIpKSk6CisgICAgICAgICAgICBmb3IgaWssIGlnIGluIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZ3JvdXBieShnLCB0ZXN0UjIpKSk6CisgICAgICAgICAgICAgICAgZm9yIGVsZW0gaW4gaWc6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaywgZWxlbVswXSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpaywgZWxlbVsyXSkKKyAgICAgICAgICAgICAgICAgICAgZHVwLmFwcGVuZChlbGVtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIGR1cCkKKworCiAgICAgICAgICMgQ2hlY2sgY2FzZSB3aGVyZSBpbm5lciBpdGVyYXRvciBpcyBub3QgdXNlZAotICAgICAgICBrZXlzID0gW2sgZm9yIGssIGcgaW4gZ3JvdXBieShzLCBsYW1iZGEgcjpyWzBdKV0KKyAgICAgICAga2V5cyA9IFtrIGZvciBrLCBnIGluIGdyb3VwYnkocywgdGVzdFIpXQogICAgICAgICBleHBlY3RlZGtleXMgPSBzZXQoW3JbMF0gZm9yIHIgaW4gc10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGtleXMpLCBleHBlY3RlZGtleXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGtleXMpLCBsZW4oZXhwZWN0ZWRrZXlzKSkKQEAgLTUzNCw2ICs3MDIsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmaWx0ZXIsIGlzRXZlbiwgMykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZXh0LCBmaWx0ZXIocmFuZ2UoNiksIHJhbmdlKDYpKSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYW5zID0gWzAsMiw0XQorCisgICAgICAgIGMgPSBmaWx0ZXIoaXNFdmVuLCByYW5nZSg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShjKSksIGFucykKKyAgICAgICAgYyA9IGZpbHRlcihpc0V2ZW4sIHJhbmdlKDYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShjKSksIGFucykKKyAgICAgICAgYyA9IGZpbHRlcihpc0V2ZW4sIHJhbmdlKDYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhjKSkpLCBhbnMpCisgICAgICAgIG5leHQoYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpKSwgYW5zWzE6XSkKKyAgICAgICAgYyA9IGZpbHRlcihpc0V2ZW4sIHJhbmdlKDYpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYykKKwogICAgIGRlZiB0ZXN0X2ZpbHRlcmZhbHNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZmlsdGVyZmFsc2UoaXNFdmVuLCByYW5nZSg2KSkpLCBbMSwzLDVdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZmlsdGVyZmFsc2UoTm9uZSwgWzAsMSwwLDIsMF0pKSwgWzAsMCwwXSkKQEAgLTU0NCw2ICs3MjYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZpbHRlcmZhbHNlLCBsYW1iZGEgeDp4LCByYW5nZSg2KSwgNykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmaWx0ZXJmYWxzZSwgaXNFdmVuLCAzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5leHQsIGZpbHRlcmZhbHNlKHJhbmdlKDYpLCByYW5nZSg2KSkpCisgICAgICAgIHNlbGYucGlja2xldGVzdChmaWx0ZXJmYWxzZShpc0V2ZW4sIHJhbmdlKDYpKSkKIAogICAgIGRlZiB0ZXN0X3ppcChzZWxmKToKICAgICAgICAgIyBYWFggVGhpcyBpcyByYXRoZXIgc2lsbHkgbm93IHRoYXQgYnVpbHRpbiB6aXAoKSBjYWxscyB6aXAoKS4uLgpAQCAtNTU2LDE2ICs3MzksMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHppcCgpKSwgbHppcCgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHppcCwgMykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB6aXAsIHJhbmdlKDMpLCAzKQotICAgICAgICAjIENoZWNrIHR1cGxlIHJlLXVzZSAoaW1wbGVtZW50YXRpb24gZGV0YWlsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFt0dXBsZShsaXN0KHBhaXIpKSBmb3IgcGFpciBpbiB6aXAoJ2FiYycsICdkZWYnKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbHppcCgnYWJjJywgJ2RlZicpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtwYWlyIGZvciBwYWlyIGluIHppcCgnYWJjJywgJ2RlZicpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsemlwKCdhYmMnLCAnZGVmJykpCisKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmV1c2UgaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbiIpCisgICAgZGVmIHRlc3RfemlwX3R1cGxlX3JldXNlKHNlbGYpOgogICAgICAgICBpZHMgPSBsaXN0KG1hcChpZCwgemlwKCdhYmMnLCAnZGVmJykpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbihpZHMpLCBtYXgoaWRzKSkKICAgICAgICAgaWRzID0gbGlzdChtYXAoaWQsIGxpc3QoemlwKCdhYmMnLCAnZGVmJykpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdC5mcm9ta2V5cyhpZHMpKSwgbGVuKGlkcykpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGFucyA9IFsoeCx5KSBmb3IgeCwgeSBpbiBjb3B5LmNvcHkoemlwKCdhYmMnLGNvdW50KCkpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsIFsoJ2EnLCAwKSwgKCdiJywgMSksICgnYycsIDIpXSkKKworICAgICAgICBhbnMgPSBbKHgseSkgZm9yIHgsIHkgaW4gY29weS5kZWVwY29weSh6aXAoJ2FiYycsY291bnQoKSkpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgWygnYScsIDApLCAoJ2InLCAxKSwgKCdjJywgMildKQorCisgICAgICAgIGFucyA9IFsoeCx5KSBmb3IgeCwgeSBpbiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHppcCgnYWJjJyxjb3VudCgpKSkpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgWygnYScsIDApLCAoJ2InLCAxKSwgKCdjJywgMildKQorCisgICAgICAgIHRlc3RJbnRlcm1lZGlhdGUgPSB6aXAoJ2FiYycsY291bnQoKSkKKyAgICAgICAgbmV4dCh0ZXN0SW50ZXJtZWRpYXRlKQorICAgICAgICBhbnMgPSBbKHgseSkgZm9yIHgsIHkgaW4gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh0ZXN0SW50ZXJtZWRpYXRlKSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBbKCdiJywgMSksICgnYycsIDIpXSkKKworICAgICAgICBzZWxmLnBpY2tsZXRlc3QoemlwKCdhYmMnLCBjb3VudCgpKSkKKwogICAgIGRlZiB0ZXN0X3ppcGxvbmdlc3Qoc2VsZik6CiAgICAgICAgIGZvciBhcmdzIGluIFsKICAgICAgICAgICAgICAgICBbJ2FiYycsIHJhbmdlKDYpXSwKQEAgLTYwMywxNiArODA1LDI0IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnRGlkIG5vdCByYWlzZSBUeXBlIGluOiAgJyArIHN0bXQpCiAKLSAgICAgICAgIyBDaGVjayB0dXBsZSByZS11c2UgKGltcGxlbWVudGF0aW9uIGRldGFpbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbdHVwbGUobGlzdChwYWlyKSkgZm9yIHBhaXIgaW4gemlwX2xvbmdlc3QoJ2FiYycsICdkZWYnKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCh6aXAoJ2FiYycsICdkZWYnKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3BhaXIgZm9yIHBhaXIgaW4gemlwX2xvbmdlc3QoJ2FiYycsICdkZWYnKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCh6aXAoJ2FiYycsICdkZWYnKSkpCisKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmV1c2UgaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbiIpCisgICAgZGVmIHRlc3RfemlwX2xvbmdlc3RfdHVwbGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIGlkcyA9IGxpc3QobWFwKGlkLCB6aXBfbG9uZ2VzdCgnYWJjJywgJ2RlZicpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW4oaWRzKSwgbWF4KGlkcykpCiAgICAgICAgIGlkcyA9IGxpc3QobWFwKGlkLCBsaXN0KHppcF9sb25nZXN0KCdhYmMnLCAnZGVmJykpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdC5mcm9ta2V5cyhpZHMpKSwgbGVuKGlkcykpCiAKKyAgICBkZWYgdGVzdF96aXBfbG9uZ2VzdF9waWNrbGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHppcF9sb25nZXN0KCJhYmMiLCAiZGVmIikpCisgICAgICAgIHNlbGYucGlja2xldGVzdCh6aXBfbG9uZ2VzdCgiYWJjIiwgImRlZmdoIikpCisgICAgICAgIHNlbGYucGlja2xldGVzdCh6aXBfbG9uZ2VzdCgiYWJjIiwgImRlZmdoIiwgZmlsbHZhbHVlPTEpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoemlwX2xvbmdlc3QoIiIsICJkZWZnaCIpKQorCiAgICAgZGVmIHRlc3RfYnVnXzcyNDQoc2VsZik6CiAKICAgICAgICAgY2xhc3MgUmVwZWF0ZXI6CkBAIC03MTEsMTAgKzkyMSwyNSBAQAogICAgICAgICAgICAgYXJncyA9IG1hcChpdGVyLCBhcmdzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGlzdChwcm9kdWN0KCphcmdzKSkpLCBleHBlY3RlZF9sZW4pCiAKLSAgICAgICAgIyBUZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbDogIHR1cGxlIHJlLXVzZQorICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXVzZSBpcyBzcGVjaWZpYyB0byBDUHl0aG9uIikKKyAgICBkZWYgdGVzdF9wcm9kdWN0X3R1cGxlX3JldXNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXQobWFwKGlkLCBwcm9kdWN0KCdhYmMnLCAnZGVmJykpKSksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHNldChtYXAoaWQsIGxpc3QocHJvZHVjdCgnYWJjJywgJ2RlZicpKSkpKSwgMSkKIAorICAgIGRlZiB0ZXN0X3Byb2R1Y3RfcGlja2xpbmcoc2VsZik6CisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBmb3IgYXJncywgcmVzdWx0IGluIFsKKyAgICAgICAgICAgIChbXSwgWygpXSksICAgICAgICAgICAgICAgICAgICAgIyB6ZXJvIGl0ZXJhYmxlcworICAgICAgICAgICAgKFsnYWInXSwgWygnYScsKSwgKCdiJywpXSksICAgICAjIG9uZSBpdGVyYWJsZQorICAgICAgICAgICAgKFtyYW5nZSgyKSwgcmFuZ2UoMyldLCBbKDAsMCksICgwLDEpLCAoMCwyKSwgKDEsMCksICgxLDEpLCAoMSwyKV0pLCAgICAgIyB0d28gaXRlcmFibGVzCisgICAgICAgICAgICAoW3JhbmdlKDApLCByYW5nZSgyKSwgcmFuZ2UoMyldLCBbXSksICAgICAgICAgICAjIGZpcnN0IGl0ZXJhYmxlIHdpdGggemVybyBsZW5ndGgKKyAgICAgICAgICAgIChbcmFuZ2UoMiksIHJhbmdlKDApLCByYW5nZSgzKV0sIFtdKSwgICAgICAgICAgICMgbWlkZGxlIGl0ZXJhYmxlIHdpdGggemVybyBsZW5ndGgKKyAgICAgICAgICAgIChbcmFuZ2UoMiksIHJhbmdlKDMpLCByYW5nZSgwKV0sIFtdKSwgICAgICAgICAgICMgbGFzdCBpdGVyYWJsZSB3aXRoIHplcm8gbGVuZ3RoCisgICAgICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShwcm9kdWN0KCphcmdzKSkpLCByZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShwcm9kdWN0KCphcmdzKSkpLCByZXN1bHQpCisgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QocHJvZHVjdCgqYXJncykpCisKICAgICBkZWYgdGVzdF9yZXBlYXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXBlYXQob2JqZWN0PSdhJywgdGltZXM9MykpLCBbJ2EnLCAnYScsICdhJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHppcChyYW5nZSgzKSxyZXBlYXQoJ2EnKSksCkBAIC03MzMsMTEgKzk1OCwxNiBAQAogICAgICAgICBsaXN0KHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihyKSwgJ3JlcGVhdCgoMSswaiksIDApJykKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYyA9IHJlcGVhdChvYmplY3Q9J2EnLCB0aW1lcz0xMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGMpLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyLCBjb3B5LmNvcHkoYykpLCBsaXN0KCdhJyAqIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMiwgY29weS5kZWVwY29weShjKSksIGxpc3QoJ2EnICogMikpCisgICAgICAgIHNlbGYucGlja2xldGVzdChyZXBlYXQob2JqZWN0PSdhJywgdGltZXM9MTApKQorCiAgICAgZGVmIHRlc3RfbWFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobWFwKG9wZXJhdG9yLnBvdywgcmFuZ2UoMyksIHJhbmdlKDEsNykpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbMCoqMSwgMSoqMiwgMioqM10pCi0gICAgICAgIGRlZiB0dXBsZWl6ZSgqYXJncyk6Ci0gICAgICAgICAgICByZXR1cm4gYXJncwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobWFwKHR1cGxlaXplLCAnYWJjJywgcmFuZ2UoNSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdhJywwKSwoJ2InLDEpLCgnYycsMildKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobWFwKHR1cGxlaXplLCAnYWJjJywgY291bnQoKSkpLApAQCAtNzUyLDYgKzk4MiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZXh0LCBtYXAoZXJyZnVuYywgWzRdLCBbNV0pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5leHQsIG1hcChvbmVhcmcsIFs0XSwgWzVdKSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYW5zID0gWygnYScsMCksKCdiJywxKSwoJ2MnLDIpXQorCisgICAgICAgIGMgPSBtYXAodHVwbGVpemUsICdhYmMnLCBjb3VudCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGMpKSwgYW5zKQorCisgICAgICAgIGMgPSBtYXAodHVwbGVpemUsICdhYmMnLCBjb3VudCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShjKSksIGFucykKKworICAgICAgICBjID0gbWFwKHR1cGxlaXplLCAnYWJjJywgY291bnQoKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGMpCisKICAgICBkZWYgdGVzdF9zdGFybWFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3Rhcm1hcChvcGVyYXRvci5wb3csIHppcChyYW5nZSgzKSwgcmFuZ2UoMSw3KSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbMCoqMSwgMSoqMiwgMioqM10pCkBAIC03NjYsNiArMTAwOCwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZXh0LCBzdGFybWFwKGVycmZ1bmMsIFsoNCw1KV0pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5leHQsIHN0YXJtYXAob25lYXJnLCBbKDQsNSldKSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYW5zID0gWzAqKjEsIDEqKjIsIDIqKjNdCisKKyAgICAgICAgYyA9IHN0YXJtYXAob3BlcmF0b3IucG93LCB6aXAocmFuZ2UoMyksIHJhbmdlKDEsNykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGMpKSwgYW5zKQorCisgICAgICAgIGMgPSBzdGFybWFwKG9wZXJhdG9yLnBvdywgemlwKHJhbmdlKDMpLCByYW5nZSgxLDcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYykpLCBhbnMpCisKKyAgICAgICAgYyA9IHN0YXJtYXAob3BlcmF0b3IucG93LCB6aXAocmFuZ2UoMyksIHJhbmdlKDEsNykpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYykKKwogICAgIGRlZiB0ZXN0X2lzbGljZShzZWxmKToKICAgICAgICAgZm9yIGFyZ3MgaW4gWyAgICAgICAgICAjIGlzbGljZShhcmdzKSBzaG91bGQgYWdyZWUgd2l0aCByYW5nZShhcmdzKQogICAgICAgICAgICAgICAgICgxMCwgMjAsIDMpLApAQCAtNzk4LDE3ICsxMDUyLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGxpc3QocmFuZ2UoMywgMTApKSkKIAogICAgICAgICAjIFRlc3QgaW52YWxpZCBhcmd1bWVudHMKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgMiwgMywgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIC01LCAxMCwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsIC01LCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsIDEwLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsIDEwLCAwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgJ2EnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgJ2EnLCAxLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgJ2EnLCAxKQorICAgICAgICByYSA9IHJhbmdlKDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzbGljZSwgcmEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNsaWNlLCByYSwgMSwgMiwgMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgLTUsIDEwLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAtNSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIDEsIDEwLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgMSwgMTAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgJ2EnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsICdhJywgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgMSwgJ2EnLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaXN0KGlzbGljZShjb3VudCgpLCAxLCAxMCwgbWF4c2l6ZSkpKSwgMSkKIAogICAgICAgICAjIElzc3VlICMxMDMyMzogIExlc3MgaXNsaWNlIGluIGEgcHJlZGljdGFibGUgc3RhdGUKQEAgLTgxNiw5ICsxMDcxLDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoYywgMSwgMywgNTApKSwgWzFdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYyksIDMpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGZvciBhcmdzIGluIFsgICAgICAgICAgIyBpc2xpY2UoYXJncykgc2hvdWxkIGFncmVlIHdpdGggcmFuZ2UoYXJncykKKyAgICAgICAgICAgICAgICAoMTAsIDIwLCAzKSwKKyAgICAgICAgICAgICAgICAoMTAsIDMsIDIwKSwKKyAgICAgICAgICAgICAgICAoMTAsIDIwKSwKKyAgICAgICAgICAgICAgICAoMTAsIDMpLAorICAgICAgICAgICAgICAgICgyMCwpCisgICAgICAgICAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoaXNsaWNlKHJhbmdlKDEwMCksICphcmdzKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJhbmdlKCphcmdzKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShpc2xpY2UocmFuZ2UoMTAwKSwgKmFyZ3MpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocmFuZ2UoKmFyZ3MpKSkKKyAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChpc2xpY2UocmFuZ2UoMTAwKSwgKmFyZ3MpKQorCiAgICAgZGVmIHRlc3RfdGFrZXdoaWxlKHNlbGYpOgogICAgICAgICBkYXRhID0gWzEsIDMsIDUsIDIwLCAyLCA0LCA2LCA4XQotICAgICAgICB1bmRlcnRlbiA9IGxhbWJkYSB4OiB4PDEwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh0YWtld2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSwgWzEsIDMsIDVdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodGFrZXdoaWxlKHVuZGVydGVuLCBbXSkpLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0YWtld2hpbGUpCkBAIC04MzAsOSArMTA5OCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodCksIFsxLCAxLCAxXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgdCkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weSh0YWtld2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSksIFsxLCAzLCA1XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkodGFrZXdoaWxlKHVuZGVydGVuLCBkYXRhKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgWzEsIDMsIDVdKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QodGFrZXdoaWxlKHVuZGVydGVuLCBkYXRhKSkKKwogICAgIGRlZiB0ZXN0X2Ryb3B3aGlsZShzZWxmKToKICAgICAgICAgZGF0YSA9IFsxLCAzLCA1LCAyMCwgMiwgNCwgNiwgOF0KLSAgICAgICAgdW5kZXJ0ZW4gPSBsYW1iZGEgeDogeDwxMAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZHJvcHdoaWxlKHVuZGVydGVuLCBkYXRhKSksIFsyMCwgMiwgNCwgNiwgOF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkcm9wd2hpbGUodW5kZXJ0ZW4sIFtdKSksIFtdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRyb3B3aGlsZSkKQEAgLTg0MSwxMSArMTExNCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5leHQsIGRyb3B3aGlsZSgxMCwgWyg0LDUpXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5leHQsIGRyb3B3aGlsZShlcnJmdW5jLCBbKDQsNSldKSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShkcm9wd2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSksIFsyMCwgMiwgNCwgNiwgOF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGRyb3B3aGlsZSh1bmRlcnRlbiwgZGF0YSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsyMCwgMiwgNCwgNiwgOF0pCisgICAgICAgIHNlbGYucGlja2xldGVzdChkcm9wd2hpbGUodW5kZXJ0ZW4sIGRhdGEpKQorCiAgICAgZGVmIHRlc3RfdGVlKHNlbGYpOgogICAgICAgICBuID0gMjAwCi0gICAgICAgIGRlZiBpcmFuZ2Uobik6Ci0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKLSAgICAgICAgICAgICAgICB5aWVsZCBpCiAKICAgICAgICAgYSwgYiA9IHRlZShbXSkgICAgICAgICMgdGVzdCBlbXB0eSBpdGVyYXRvcgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFtdKQpAQCAtOTMwLDYgKzEyMDYsNjcgQEAKICAgICAgICAgZGVsIGEKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVmZXJlbmNlRXJyb3IsIGdldGF0dHIsIHAsICdfX2NsYXNzX18nKQogCisgICAgICAgIGFucyA9IGxpc3QoJ2FiYycpCisgICAgICAgIGxvbmdfYW5zID0gbGlzdChyYW5nZSgxMDAwMCkpCisKKyAgICAgICAgIyBjaGVjayBjb3B5CisgICAgICAgIGEsIGIgPSB0ZWUoJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYSkpLCBhbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYikpLCBhbnMpCisgICAgICAgIGEsIGIgPSB0ZWUobGlzdChyYW5nZSgxMDAwMCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGEpKSwgbG9uZ19hbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYikpLCBsb25nX2FucykKKworICAgICAgICAjIGNoZWNrIHBhcnRpYWxseSBjb25zdW1lZCBjb3B5CisgICAgICAgIGEsIGIgPSB0ZWUoJ2FiYycpCisgICAgICAgIHRha2UoMiwgYSkKKyAgICAgICAgdGFrZSgxLCBiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGEpKSwgYW5zWzI6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShiKSksIGFuc1sxOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgYW5zWzI6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBhbnNbMTpdKQorICAgICAgICBhLCBiID0gdGVlKHJhbmdlKDEwMDAwKSkKKyAgICAgICAgdGFrZSgxMDAsIGEpCisgICAgICAgIHRha2UoNjAsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYSkpLCBsb25nX2Fuc1sxMDA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShiKSksIGxvbmdfYW5zWzYwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgbG9uZ19hbnNbMTAwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgbG9uZ19hbnNbNjA6XSkKKworICAgICAgICAjIGNoZWNrIGRlZXBjb3B5CisgICAgICAgIGEsIGIgPSB0ZWUoJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGEpKSwgYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShiKSksIGFucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBhbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgYW5zKQorICAgICAgICBhLCBiID0gdGVlKHJhbmdlKDEwMDAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYSkpLCBsb25nX2FucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYikpLCBsb25nX2FucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBsb25nX2FucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBsb25nX2FucykKKworICAgICAgICAjIGNoZWNrIHBhcnRpYWxseSBjb25zdW1lZCBkZWVwY29weQorICAgICAgICBhLCBiID0gdGVlKCdhYmMnKQorICAgICAgICB0YWtlKDIsIGEpCisgICAgICAgIHRha2UoMSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYSkpLCBhbnNbMjpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShiKSksIGFuc1sxOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgYW5zWzI6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBhbnNbMTpdKQorICAgICAgICBhLCBiID0gdGVlKHJhbmdlKDEwMDAwKSkKKyAgICAgICAgdGFrZSgxMDAsIGEpCisgICAgICAgIHRha2UoNjAsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGEpKSwgbG9uZ19hbnNbMTAwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGIpKSwgbG9uZ19hbnNbNjA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBsb25nX2Fuc1sxMDA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBsb25nX2Fuc1s2MDpdKQorCisgICAgICAgICMgY2hlY2sgcGlja2xlCisgICAgICAgIHNlbGYucGlja2xldGVzdChpdGVyKHRlZSgnYWJjJykpKQorICAgICAgICBhLCBiID0gdGVlKCdhYmMnKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYSwgY29tcGFyZT1hbnMpCisgICAgICAgIHNlbGYucGlja2xldGVzdChiLCBjb21wYXJlPWFucykKKwogICAgIGRlZiB0ZXN0X1N0b3BJdGVyYXRpb24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIHppcCgpKQogCkBAIC05NTUsOSArMTI5MiwyMSBAQAogCiBjbGFzcyBUZXN0RXhhbXBsZXModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIHRlc3RfYWNjdW1sYXRlKHNlbGYpOgorICAgIGRlZiB0ZXN0X2FjY3VtdWxhdGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKFsxLDIsMyw0LDVdKSksIFsxLCAzLCA2LCAxMCwgMTVdKQogCisgICAgZGVmIHRlc3RfYWNjdW11bGF0ZV9yZWR1Y2libGUoc2VsZik6CisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBkYXRhID0gWzEsIDIsIDMsIDQsIDVdCisgICAgICAgIGFjY3VtdWxhdGVkID0gWzEsIDMsIDYsIDEwLCAxNV0KKyAgICAgICAgaXQgPSBhY2N1bXVsYXRlKGRhdGEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoaXQpKSksIGFjY3VtdWxhdGVkWzpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhpdCkpKSwgYWNjdW11bGF0ZWRbMTpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShpdCkpLCBhY2N1bXVsYXRlZFsxOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoaXQpKSwgYWNjdW11bGF0ZWRbMTpdKQorCiAgICAgZGVmIHRlc3RfY2hhaW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihjaGFpbignQUJDJywgJ0RFRicpKSwgJ0FCQ0RFRicpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkgYi9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5CmluZGV4IDEwOGVkMTguLjA1MDNhN2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weQpAQCAtNzgsNyArNzgsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgZXhjOgogICAgICAgICAgICAgZigxLCAyLCAzKQotICAgICAgICBleHBlY3RlZCA9ICJmKCkgdGFrZXMgYXQgbW9zdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzICgzIGdpdmVuKSIKKyAgICAgICAgZXhwZWN0ZWQgPSAiZigpIHRha2VzIGZyb20gMSB0byAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAzIHdlcmUgZ2l2ZW4iCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4Yy5leGNlcHRpb24pLCBleHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0U3ludGF4RXJyb3JGb3JGdW5jdGlvbkNhbGwoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpYjJ0bzMucHkgYi9MaWIvdGVzdC90ZXN0X2xpYjJ0bzMucHkKaW5kZXggMWFmYWY3MC4uZGY0YzM3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saWIydG8zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGliMnRvMy5weQpAQCAtOSw4ICs5LDggQEAKIGRlZiBzdWl0ZSgpOgogICAgIHRlc3RzID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICBmb3IgbSBpbiAodGVzdF9maXhlcnMsIHRlc3RfcHl0cmVlLHRlc3RfdXRpbCwgdGVzdF9yZWZhY3RvciwKLSAgICAgICAgICAgICAgdGVzdF9wYXJzZXIsIHRlc3RfbWFpbl8pOgorICAgIGZvciBtIGluICh0ZXN0X2ZpeGVycywgdGVzdF9weXRyZWUsIHRlc3RfdXRpbCwgdGVzdF9yZWZhY3RvciwgdGVzdF9wYXJzZXIsCisgICAgICAgICAgICAgIHRlc3RfbWFpbl8pOgogICAgICAgICB0ZXN0cy5hZGRUZXN0cyhsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZShtKSkKICAgICByZXR1cm4gdGVzdHMKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9saXN0LnB5CmluZGV4IDg0YjhhZmUuLjVkZjI3ZDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIGxpc3RfdGVzdHMKK2ltcG9ydCBwaWNrbGUKIAogY2xhc3MgTGlzdFRlc3QobGlzdF90ZXN0cy5Db21tb25UZXN0KToKICAgICB0eXBlMnRlc3QgPSBsaXN0CkBAIC02OSw2ICs3MCwzMyBAQAogICAgICAgICBjaGVjaygxMCkgICAgICAgIyBjaGVjayBvdXIgY2hlY2tpbmcgY29kZQogICAgICAgICBjaGVjaygxMDAwMDAwKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgorICAgICAgICAjIFVzZXJsaXN0IGl0ZXJhdG9ycyBkb24ndCBzdXBwb3J0IHBpY2tsaW5nIHlldCBzaW5jZQorICAgICAgICAjIHRoZXkgYXJlIGJhc2VkIG9uIGdlbmVyYXRvcnMuCisgICAgICAgIGRhdGEgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGl0ID0gaXRvcmcgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QoZGF0YSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KGRhdGEpWzE6XSkKKworICAgIGRlZiB0ZXN0X3JldmVyc2VkX3BpY2tsZShzZWxmKToKKyAgICAgICAgZGF0YSA9IHNlbGYudHlwZTJ0ZXN0KFs0LCA1LCA2LCA3XSkKKyAgICAgICAgaXQgPSBpdG9yZyA9IHJldmVyc2VkKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QocmV2ZXJzZWQoZGF0YSkpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChyZXZlcnNlZChkYXRhKSlbMTpdKQogCiAgICAgZGVmIHRlc3Rfbm9fY29tZGF0X2ZvbGRpbmcoc2VsZik6CiAgICAgICAgICMgSXNzdWUgODg0NzogSW4gdGhlIFBHTyBidWlsZCwgdGhlIE1TVkMgbGlua2VyJ3MgQ09NREFUIGZvbGRpbmcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKaW5kZXggOGY3NTc0Yi4uNTFhN2JjYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKQEAgLTExLDcgKzExLDcgQEAKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICB0bG9jcyA9ICgiZW5fVVMuVVRGLTgiLCAiZW5fVVMuSVNPODg1OS0xIiwgImVuX1VTIikKLSAgICAgICAgaWYgaW50KG9zLnVuYW1lKClbMl0uc3BsaXQoJy4nKVswXSkgPCAxMDoKKyAgICAgICAgaWYgaW50KG9zLnVuYW1lKCkucmVsZWFzZS5zcGxpdCgnLicpWzBdKSA8IDEwOgogICAgICAgICAgICAgIyBUaGUgbG9jYWxlIHRlc3Qgd29yayBmaW5lIG9uIE9TWCAxMC42LCBJIChyb25hbGRvdXNzb3JlbikKICAgICAgICAgICAgICMgaGF2ZW4ndCBoYWQgdGltZSB5ZXQgdG8gdmVyaWZ5IGlmIHRlc3RzIHdvcmsgb24gT1NYIDEwLjUKICAgICAgICAgICAgICMgKDEwLjQgaXMga25vd24gdG8gYmUgYmFkKQpAQCAtNDAxLDYgKzQwMSw4IEBACiAgICAgICAgICAgICAjIFVuc3VwcG9ydGVkIGxvY2FsZSBvbiB0aGlzIHN5c3RlbQogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndGVzdCBuZWVkcyBUdXJraXNoIGxvY2FsZScpCiAgICAgICAgIGxvYyA9IGxvY2FsZS5nZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFKQorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoJ2dvdCBsb2NhbGUgJWEnICUgKGxvYywpKQogICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSwgbG9jKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYywgbG9jYWxlLmdldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUpKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKaW5kZXggMmQyNjRmOC4uY2I5MDhmYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQpAQCAtMzcsMTIgKzM3LDExIEBACiBpbXBvcnQgcmUKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzb2NrZXQKLWZyb20gc29ja2V0c2VydmVyIGltcG9ydCBUaHJlYWRpbmdUQ1BTZXJ2ZXIsIFN0cmVhbVJlcXVlc3RIYW5kbGVyCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQsIHJ1bl93aXRoX2xvY2FsZSwgcnVuX3VuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVGVzdEhhbmRsZXIsIE1hdGNoZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBydW5fd2l0aF9sb2NhbGUsIHJ1bl91bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2gsIHJlcXVpcmVzX3psaWIsIFRlc3RIYW5kbGVyLCBNYXRjaGVyKQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC01MCw4ICs0OSwzMSBAQAogaW1wb3J0IHdlYWtyZWYKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgIyBUaGUgZm9sbG93aW5nIGltcG9ydHMgYXJlIG5lZWRlZCBvbmx5IGZvciB0ZXN0cyB3aGljaAorICAgICMgcmVxdWlyZSB0aHJlYWRpbmcKKyAgICBpbXBvcnQgYXN5bmNoYXQKKyAgICBpbXBvcnQgYXN5bmNvcmUKKyAgICBpbXBvcnQgZXJybm8KKyAgICBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBIVFRQU2VydmVyLCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyCisgICAgaW1wb3J0IHNtdHBkCisgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlLCBwYXJzZV9xcworICAgIGZyb20gc29ja2V0c2VydmVyIGltcG9ydCAoVGhyZWFkaW5nVURQU2VydmVyLCBEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcikKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IHdpbjMyZXZ0bG9nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgd2luMzJldnRsb2cgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IHdpbjMyZXZ0bG9ndXRpbAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHdpbjMyZXZ0bG9ndXRpbCA9IE5vbmUKKyAgICB3aW4zMmV2dGxvZyA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgemxpYgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKIAogCiBjbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03OSw5ICsxMDEsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgbG9nZ2luZy5fcmVsZWFzZUxvY2soKQogCi0gICAgICAgICMgU2V0IHR3byB1bnVzZWQgbG9nZ2Vyczogb25lIG5vbi1BU0NJSSBhbmQgb25lIFVuaWNvZGUuCi0gICAgICAgICMgVGhpcyBpcyB0byB0ZXN0IGNvcnJlY3Qgb3BlcmF0aW9uIHdoZW4gc29ydGluZyBleGlzdGluZwotICAgICAgICAjIGxvZ2dlcnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gY29kZS4gU2VlIGlzc3VlIDgyMDEuCisgICAgICAgICMgU2V0IHR3byB1bnVzZWQgbG9nZ2VycwogICAgICAgICBzZWxmLmxvZ2dlcjEgPSBsb2dnaW5nLmdldExvZ2dlcigiXHhhYlx4ZDdceGJiIikKICAgICAgICAgc2VsZi5sb2dnZXIyID0gbG9nZ2luZy5nZXRMb2dnZXIoIlx1MDEzZlx1MDBkNlx1MDA0NyIpCiAKQEAgLTE0Miw4ICsxNjIsNyBAQAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAjIFN0cmluZ0lPLlN0cmluZ0lPIGxhY2tzIGEgcmVzZXQoKSBtZXRob2QuCiAgICAgICAgICAgICBhY3R1YWxfbGluZXMgPSBzdHJlYW0uZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsX2xpbmVzKSwgbGVuKGV4cGVjdGVkX3ZhbHVlcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICclcyB2cy4gJXMnICUgKGFjdHVhbF9saW5lcywgZXhwZWN0ZWRfdmFsdWVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsX2xpbmVzKSwgbGVuKGV4cGVjdGVkX3ZhbHVlcykpCiAgICAgICAgIGZvciBhY3R1YWwsIGV4cGVjdGVkIGluIHppcChhY3R1YWxfbGluZXMsIGV4cGVjdGVkX3ZhbHVlcyk6CiAgICAgICAgICAgICBtYXRjaCA9IHBhdC5zZWFyY2goYWN0dWFsKQogICAgICAgICAgICAgaWYgbm90IG1hdGNoOgpAQCAtMTgxLDE3ICsyMDAsMTcgQEAKIAogICAgICAgICBJTkYubG9nKGxvZ2dpbmcuQ1JJVElDQUwsIG0oKSkKICAgICAgICAgSU5GLmVycm9yKG0oKSkKLSAgICAgICAgSU5GLndhcm4obSgpKQorICAgICAgICBJTkYud2FybmluZyhtKCkpCiAgICAgICAgIElORi5pbmZvKG0oKSkKIAogICAgICAgICBERUIubG9nKGxvZ2dpbmcuQ1JJVElDQUwsIG0oKSkKICAgICAgICAgREVCLmVycm9yKG0oKSkKLSAgICAgICAgREVCLndhcm4gKG0oKSkKLSAgICAgICAgREVCLmluZm8gKG0oKSkKKyAgICAgICAgREVCLndhcm5pbmcobSgpKQorICAgICAgICBERUIuaW5mbyhtKCkpCiAgICAgICAgIERFQi5kZWJ1ZyhtKCkpCiAKICAgICAgICAgIyBUaGVzZSBzaG91bGQgbm90IGxvZy4KLSAgICAgICAgRVJSLndhcm4obSgpKQorICAgICAgICBFUlIud2FybmluZyhtKCkpCiAgICAgICAgIEVSUi5pbmZvKG0oKSkKICAgICAgICAgRVJSLmRlYnVnKG0oKSkKIApAQCAtMjI1LDcgKzI0NCw3IEBACiAgICAgICAgIElORl9FUlIuZXJyb3IobSgpKQogCiAgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBsb2cuCi0gICAgICAgIElORl9FUlIud2FybihtKCkpCisgICAgICAgIElORl9FUlIud2FybmluZyhtKCkpCiAgICAgICAgIElORl9FUlIuaW5mbyhtKCkpCiAgICAgICAgIElORl9FUlIuZGVidWcobSgpKQogCkBAIC0yNDksMTQgKzI2OCwxNCBAQAogICAgICAgICAjIFRoZXNlIHNob3VsZCBsb2cuCiAgICAgICAgIElORl9VTkRFRi5sb2cobG9nZ2luZy5DUklUSUNBTCwgbSgpKQogICAgICAgICBJTkZfVU5ERUYuZXJyb3IobSgpKQotICAgICAgICBJTkZfVU5ERUYud2FybihtKCkpCisgICAgICAgIElORl9VTkRFRi53YXJuaW5nKG0oKSkKICAgICAgICAgSU5GX1VOREVGLmluZm8obSgpKQogICAgICAgICBJTkZfRVJSX1VOREVGLmxvZyhsb2dnaW5nLkNSSVRJQ0FMLCBtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuZXJyb3IobSgpKQogCiAgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBsb2cuCiAgICAgICAgIElORl9VTkRFRi5kZWJ1ZyhtKCkpCi0gICAgICAgIElORl9FUlJfVU5ERUYud2FybihtKCkpCisgICAgICAgIElORl9FUlJfVU5ERUYud2FybmluZyhtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuaW5mbyhtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuZGVidWcobSgpKQogCkBAIC0yOTUsOCArMzE0LDYgQEAKICAgICAgICAgICAgICgnSU5GLkJBRFBBUkVOVCcsICdJTkZPJywgJzQnKSwKICAgICAgICAgXSkKIAotICAgIGRlZiB0ZXN0X2ludmFsaWRfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsb2dnaW5nLmdldExvZ2dlciwgYW55KQogCiBjbGFzcyBCYXNpY0ZpbHRlclRlc3QoQmFzZVRlc3QpOgogCkBAIC0zNTUsNiArMzcyLDEwIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBoYW5kbGVyLnJlbW92ZUZpbHRlcihmaWx0ZXJmdW5jKQogCisgICAgZGVmIHRlc3RfZW1wdHlfZmlsdGVyKHNlbGYpOgorICAgICAgICBmID0gbG9nZ2luZy5GaWx0ZXIoKQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbmFtZSc6ICdzcGFtLmVnZ3MnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuZmlsdGVyKHIpKQogCiAjCiAjICAgRmlyc3QsIHdlIGRlZmluZSBvdXIgbGV2ZWxzLiBUaGVyZSBjYW4gYmUgYXMgbWFueSBhcyB5b3Ugd2FudCAtIHRoZSBvbmx5CkBAIC00OTgsNiArNTE5LDQ3OCBAQAogICAgICAgICAgICAgaGFuZGxlci5yZW1vdmVGaWx0ZXIoZ2FycikKIAogCitjbGFzcyBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfbmFtZShzZWxmKToKKyAgICAgICAgaCA9IGxvZ2dpbmcuSGFuZGxlcigpCisgICAgICAgIGgubmFtZSA9ICdnZW5lcmljJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubmFtZSwgJ2dlbmVyaWMnKQorICAgICAgICBoLm5hbWUgPSAnYW5vdGhlcmdlbmVyaWMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCAnYW5vdGhlcmdlbmVyaWMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBoLmVtaXQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9idWlsdGluX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICAjIFdlIGNhbid0IGFjdHVhbGx5ICp1c2UqIHRvbyBtYW55IGhhbmRsZXJzIGluIHRoZSB0ZXN0cywKKyAgICAgICAgIyBidXQgd2UgY2FuIHRyeSBpbnN0YW50aWF0aW5nIHRoZW0gd2l0aCB2YXJpb3VzIG9wdGlvbnMKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnbGludXgnLCAnZGFyd2luJyk6CisgICAgICAgICAgICBmb3IgZXhpc3RpbmcgaW4gKFRydWUsIEZhbHNlKToKKyAgICAgICAgICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgICAgICAgICBpZiBub3QgZXhpc3Rpbmc6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKKyAgICAgICAgICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5XYXRjaGVkRmlsZUhhbmRsZXIoZm4sIGRlbGF5PVRydWUpCisgICAgICAgICAgICAgICAgaWYgZXhpc3Rpbmc6CisgICAgICAgICAgICAgICAgICAgIGRldiwgaW5vID0gaC5kZXYsIGguaW5vCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGV2LCAtMSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbm8sIC0xKQorICAgICAgICAgICAgICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ1Rlc3QnfSkKKyAgICAgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgICAgICAgICAgIyBOb3cgcmVtb3ZlIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZm4pKQorICAgICAgICAgICAgICAgICAgICAjIFRoZSBuZXh0IGNhbGwgc2hvdWxkIHJlY3JlYXRlIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZXYsIC0xKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguaW5vLCAtMSkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBpZiBleGlzdGluZzoKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgICAgIHNvY2tuYW1lID0gJy92YXIvcnVuL3N5c2xvZycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc29ja25hbWUgPSAnL2Rldi9sb2cnCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuU3lzTG9nSGFuZGxlcihzb2NrbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZmFjaWxpdHksIGguTE9HX1VTRVIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGgudW5peHNvY2tldCkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6ICMgc3lzbG9nZCBtaWdodCBub3QgYmUgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgbWV0aG9kIGluICgnR0VUJywgJ1BPU1QnLCAnUFVUJyk6CisgICAgICAgICAgICBpZiBtZXRob2QgPT0gJ1BVVCc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5oYW5kbGVycy5IVFRQSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9jYWxob3N0JywgJy9sb2cnLCBtZXRob2QpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLkhUVFBIYW5kbGVyKCdsb2NhbGhvc3QnLCAnL2xvZycsIG1ldGhvZCkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuQnVmZmVyaW5nSGFuZGxlcigwKQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaC5zaG91bGRGbHVzaChyKSkKKyAgICAgICAgaC5jbG9zZSgpCisgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLkJ1ZmZlcmluZ0hhbmRsZXIoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoLnNob3VsZEZsdXNoKHIpKQorICAgICAgICBoLmNsb3NlKCkKKworICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAnbnQnLCAnV2F0Y2hlZEZpbGVIYW5kbGVyIG5vdCBhcHByb3ByaWF0ZSBmb3IgV2luZG93cy4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfcmFjZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTQ2MzIgcmVmZXJzLgorICAgICAgICBkZWYgcmVtb3ZlX2xvb3AoZm5hbWUsIHRyaWVzKToKKyAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKHRyaWVzKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMDQgKiByYW5kb20ucmFuZGludCgwLCA0KSkKKworICAgICAgICBkZWxfY291bnQgPSA1MDAKKyAgICAgICAgbG9nX2NvdW50ID0gNTAwCisKKyAgICAgICAgZm9yIGRlbGF5IGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCcubG9nJywgJ3Rlc3RfbG9nZ2luZy0zLScpCisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgICAgIHJlbW92ZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1yZW1vdmVfbG9vcCwgYXJncz0oZm4sIGRlbF9jb3VudCkpCisgICAgICAgICAgICByZW1vdmVyLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHJlbW92ZXIuc3RhcnQoKQorICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyKGZuLCBkZWxheT1kZWxheSkKKyAgICAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXM6ICUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzJykKKyAgICAgICAgICAgIGguc2V0Rm9ybWF0dGVyKGYpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UobG9nX2NvdW50KToKKyAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwNSkKKyAgICAgICAgICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0ZXN0aW5nJyB9KQorICAgICAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICByZW1vdmVyLmpvaW4oKQorICAgICAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZuKToKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorCisKK2NsYXNzIEJhZFN0cmVhbShvYmplY3QpOgorICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdkZWxpYmVyYXRlIG1pc3Rha2UnKQorCitjbGFzcyBUZXN0U3RyZWFtSGFuZGxlcihsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgorICAgIGRlZiBoYW5kbGVFcnJvcihzZWxmLCByZWNvcmQpOgorICAgICAgICBzZWxmLmVycm9yX3JlY29yZCA9IHJlY29yZAorCitjbGFzcyBTdHJlYW1IYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfZXJyb3JfaGFuZGxpbmcoc2VsZik6CisgICAgICAgIGggPSBUZXN0U3RyZWFtSGFuZGxlcihCYWRTdHJlYW0oKSkKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgb2xkX3JhaXNlID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKyAgICAgICAgb2xkX3N0ZGVyciA9IHN5cy5zdGRlcnIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaC5lcnJvcl9yZWNvcmQsIHIpCisgICAgICAgICAgICBoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKEJhZFN0cmVhbSgpKQorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdcblJ1bnRpbWVFcnJvcjogZGVsaWJlcmF0ZSBtaXN0YWtlXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaW8uZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc2lvLmdldHZhbHVlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IG9sZF9yYWlzZQorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9sZF9zdGRlcnIKKworIyAtLSBUaGUgZm9sbG93aW5nIHNlY3Rpb24gY291bGQgYmUgbW92ZWQgaW50byBhIHNlcnZlcl9oZWxwZXIucHkgbW9kdWxlCisjIC0tIGlmIGl0IHByb3ZlcyB0byBiZSBvZiB3aWRlciB1dGlsaXR5IHRoYW4ganVzdCB0ZXN0X2xvZ2dpbmcKKworaWYgdGhyZWFkaW5nOgorICAgIGNsYXNzIFRlc3RTTVRQQ2hhbm5lbChzbXRwZC5TTVRQQ2hhbm5lbCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGRlcml2ZWQgY2xhc3MgaGFzIGhhZCB0byBiZSBjcmVhdGVkIGJlY2F1c2Ugc210cGQgZG9lcyBub3QKKyAgICAgICAgc3VwcG9ydCB1c2Ugb2YgY3VzdG9tIGNoYW5uZWwgbWFwcywgYWx0aG91Z2ggdGhleSBhcmUgYWxsb3dlZCBieQorICAgICAgICBhc3luY29yZSdzIGRlc2lnbi4gSXNzdWUgIzExOTU5IGhhcyBiZWVuIHJhaXNlZCB0byBhZGRyZXNzIHRoaXMsCisgICAgICAgIGFuZCBpZiByZXNvbHZlZCBzYXRpc2ZhY3RvcmlseSwgc29tZSBvZiB0aGlzIGNvZGUgY2FuIGJlIHJlbW92ZWQuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBzb2NrbWFwKToKKyAgICAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubiwgc29ja21hcCkKKyAgICAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKKyAgICAgICAgICAgIHNlbGYuY29ubiA9IGNvbm4KKyAgICAgICAgICAgIHNlbGYuYWRkciA9IGFkZHIKKyAgICAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCisgICAgICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKKyAgICAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9ICcnCisgICAgICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQorICAgICAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KKyAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9ICcnCisgICAgICAgICAgICBzZWxmLmZxZG4gPSBzb2NrZXQuZ2V0ZnFkbigpCisgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnBlZXIgPSBjb25uLmdldHBlZXJuYW1lKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICMgYSByYWNlIGNvbmRpdGlvbiAgbWF5IG9jY3VyIGlmIHRoZSBvdGhlciBlbmQgaXMgY2xvc2luZworICAgICAgICAgICAgICAgICMgYmVmb3JlIHdlIGNhbiBnZXQgdGhlIHBlZXJuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gIT0gZXJybm8uRU5PVENPTk46CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBzZWxmLnB1c2goJzIyMCAlcyAlcycgJSAoc2VsZi5mcWRuLCBzbXRwZC5fX3ZlcnNpb25fXykpCisgICAgICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCisgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQorCisKKyAgICBjbGFzcyBUZXN0U01UUFNlcnZlcihzbXRwZC5TTVRQU2VydmVyKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIHRlc3QgU01UUCBzZXJ2ZXIuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgKGhvc3QsIHBvcnQpIHR1cGxlIHdoaWNoIHRoZSBzZXJ2ZXIgbGlzdGVucyBvbi4KKyAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBhIHBvcnQgdmFsdWUgb2YgemVybzogdGhlIHNlcnZlcidzCisgICAgICAgICAgICAgICAgICAgICAqcG9ydCogYXR0cmlidXRlIHdpbGwgaG9sZCB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICB1c2VkLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBjbGllbnQgY29ubmVjdGlvbnMuCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGNhbGxhYmxlIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHRvIHByb2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nIG1lc3NhZ2VzLiBUaGUgaGFuZGxlciB3aWxsIGJlIHBhc3NlZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNsaWVudCBhZGRyZXNzIHR1cGxlLCB3aG8gdGhlIG1lc3NhZ2UgaXMgZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgbGlzdCBvZiByZWNpcGllbnRzIGFuZCB0aGUgbWVzc2FnZSBkYXRhLgorICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIGludGVydmFsLCBpbiBzZWNvbmRzLCB1c2VkIGluIHRoZSB1bmRlcmx5aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgc2VsZWN0YCBvciA6ZnVuYzpgcG9sbGAgY2FsbCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmM6YGFzeW5jb3JlLmxvb3BgLgorICAgICAgICA6cGFyYW0gc29ja21hcDogQSBkaWN0aW9uYXJ5IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBob2xkCisgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YGFzeW5jb3JlLmRpc3BhdGNoZXJgIGluc3RhbmNlcyB1c2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgYXN5bmNvcmUubG9vcGAuIFRoaXMgYXZvaWRzIGNoYW5naW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgOm1vZDpgYXN5bmNvcmVgIG1vZHVsZSdzIGdsb2JhbCBzdGF0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIGNoYW5uZWxfY2xhc3MgPSBUZXN0U01UUENoYW5uZWwKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCwgc29ja21hcCk6CisgICAgICAgICAgICBzZWxmLl9sb2NhbGFkZHIgPSBhZGRyCisgICAgICAgICAgICBzZWxmLl9yZW1vdGVhZGRyID0gTm9uZQorICAgICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnNvY2ttYXAgPSBzb2NrbWFwCisgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIG1hcD1zb2NrbWFwKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICAgICAgc29jay5zZXRibG9ja2luZygwKQorICAgICAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldChzb2NrLCBtYXA9c29ja21hcCkKKyAgICAgICAgICAgICAgICAjIHRyeSB0byByZS11c2UgYSBzZXJ2ZXIgcG9ydCBpZiBwb3NzaWJsZQorICAgICAgICAgICAgICAgIHNlbGYuc2V0X3JldXNlX2FkZHIoKQorICAgICAgICAgICAgICAgIHNlbGYuYmluZChhZGRyKQorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVsxXQorICAgICAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZXIgPSBoYW5kbGVyCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnBvbGxfaW50ZXJ2YWwgPSBwb2xsX2ludGVydmFsCisKKyAgICAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUmVkZWZpbmVkIG9ubHkgYmVjYXVzZSB0aGUgYmFzZSBjbGFzcyBkb2VzIG5vdCBwYXNzIGluIGEKKyAgICAgICAgICAgIG1hcCwgZm9yY2luZyB1c2Ugb2YgYSBnbG9iYWwgaW4gOm1vZDpgYXN5bmNvcmVgLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIsIHNlbGYuc29ja21hcCkKKworICAgICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgRGVsZWdhdGVzIHRvIHRoZSBoYW5kbGVyIHBhc3NlZCBpbiB0byB0aGUgc2VydmVyJ3MgY29uc3RydWN0b3IuCisKKyAgICAgICAgICAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGJlIGEgdGVzdCBjYXNlIG1ldGhvZC4KKyAgICAgICAgICAgIDpwYXJhbSBwZWVyOiBUaGUgY2xpZW50IChob3N0LCBwb3J0KSB0dXBsZS4KKyAgICAgICAgICAgIDpwYXJhbSBtYWlsZnJvbTogVGhlIGFkZHJlc3Mgb2YgdGhlIHNlbmRlci4KKyAgICAgICAgICAgIDpwYXJhbSByY3B0dG9zOiBUaGUgYWRkcmVzc2VzIG9mIHRoZSByZWNpcGllbnRzLgorICAgICAgICAgICAgOnBhcmFtIGRhdGE6IFRoZSBtZXNzYWdlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVyKHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKQorCisgICAgICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgU3RhcnQgdGhlIHNlcnZlciBydW5uaW5nIG9uIGEgc2VwYXJhdGUgZGFlbW9uIHRocmVhZC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuc2VydmVfZm9yZXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYucG9sbF9pbnRlcnZhbCwpKQorICAgICAgICAgICAgdC5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgICAgIHQuc3RhcnQoKQorCisgICAgICAgIGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYsIHBvbGxfaW50ZXJ2YWwpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBSdW4gdGhlIDptb2Q6YGFzeW5jb3JlYCBsb29wIHVudGlsIG5vcm1hbCB0ZXJtaW5hdGlvbgorICAgICAgICAgICAgY29uZGl0aW9ucyBhcmlzZS4KKyAgICAgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgaW50ZXJ2YWwsIGluIHNlY29uZHMsIHVzZWQgaW4gdGhlIHVuZGVybHlpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgc2VsZWN0YCBvciA6ZnVuYzpgcG9sbGAgY2FsbCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdW5jOmBhc3luY29yZS5sb29wYC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFzeW5jb3JlLmxvb3AocG9sbF9pbnRlcnZhbCwgbWFwPXNlbGYuc29ja21hcCkKKyAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3I6CisgICAgICAgICAgICAgICAgIyBPbiBGcmVlQlNEIDgsIGNsb3NpbmcgdGhlIHNlcnZlciByZXBlYXRhYmx5CisgICAgICAgICAgICAgICAgIyByYWlzZXMgdGhpcyBlcnJvci4gV2Ugc3dhbGxvdyBpdCBpZiB0aGUKKyAgICAgICAgICAgICAgICAjIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuCisgICAgICAgICAgICAgICAgaWYgc2VsZi5jb25uZWN0ZWQgb3Igc2VsZi5hY2NlcHRpbmc6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgZGVmIHN0b3Aoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgU3RvcCB0aGUgdGhyZWFkIGJ5IGNsb3NpbmcgdGhlIHNlcnZlciBpbnN0YW5jZS4KKyAgICAgICAgICAgIFdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkIHRvIHRlcm1pbmF0ZS4KKworICAgICAgICAgICAgOnBhcmFtIHRpbWVvdXQ6IEhvdyBsb25nIHRvIHdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGVybWluYXRlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisKKyAgICBjbGFzcyBDb250cm9sTWl4aW4ob2JqZWN0KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgbWl4aW4gaXMgdXNlZCB0byBzdGFydCBhIHNlcnZlciBvbiBhIHNlcGFyYXRlIHRocmVhZCwgYW5kCisgICAgICAgIHNodXQgaXQgZG93biBwcm9ncmFtbWF0aWNhbGx5LiBSZXF1ZXN0IGhhbmRsaW5nIGlzIHNpbXBsaWZpZWQgLSBpbnN0ZWFkCisgICAgICAgIG9mIG5lZWRpbmcgdG8gZGVyaXZlIGEgc3VpdGFibGUgUmVxdWVzdEhhbmRsZXIgc3ViY2xhc3MsIHlvdSBqdXN0CisgICAgICAgIHByb3ZpZGUgYSBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIHBhc3NlZCBlYWNoIHJlY2VpdmVkIHJlcXVlc3QgdG8gYmUKKyAgICAgICAgcHJvY2Vzc2VkLgorCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB0aGUgcmVxdWVzdC4gVGhpcyBoYW5kbGVyIGlzIGNhbGxlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciB0aHJlYWQsIGVmZmVjdGl2ZWx5IG1lYW5pbmcgdGhhdCByZXF1ZXN0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZCBzZXJpYWxseS4gV2hpbGUgbm90IHF1aXRlIFdlYiBzY2FsZSA7LSksCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHNob3VsZCBiZSBmaW5lIGZvciB0ZXN0aW5nIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBwb2xsaW5nIGludGVydmFsIGluIHNlY29uZHMuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCk6CisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnBvbGxfaW50ZXJ2YWwgPSBwb2xsX2ludGVydmFsCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVyID0gaGFuZGxlcgorICAgICAgICAgICAgc2VsZi5yZWFkeSA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICAgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBDcmVhdGUgYSBkYWVtb24gdGhyZWFkIHRvIHJ1biB0aGUgc2VydmVyLCBhbmQgc3RhcnQgaXQuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLnNlcnZlX2ZvcmV2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnBvbGxfaW50ZXJ2YWwsKSkKKyAgICAgICAgICAgIHQuc2V0RGFlbW9uKFRydWUpCisgICAgICAgICAgICB0LnN0YXJ0KCkKKworICAgICAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUnVuIHRoZSBzZXJ2ZXIuIFNldCB0aGUgcmVhZHkgZmxhZyBiZWZvcmUgZW50ZXJpbmcgdGhlCisgICAgICAgICAgICBzZXJ2aWNlIGxvb3AuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYucmVhZHkuc2V0KCkKKyAgICAgICAgICAgIHN1cGVyKENvbnRyb2xNaXhpbiwgc2VsZikuc2VydmVfZm9yZXZlcihwb2xsX2ludGVydmFsKQorCisgICAgICAgIGRlZiBzdG9wKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFRlbGwgdGhlIHNlcnZlciB0aHJlYWQgdG8gc3RvcCwgYW5kIHdhaXQgZm9yIGl0IHRvIGRvIHNvLgorCisgICAgICAgICAgICA6cGFyYW0gdGltZW91dDogSG93IGxvbmcgdG8gd2FpdCBmb3IgdGhlIHNlcnZlciB0aHJlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0ZXJtaW5hdGUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuc2h1dGRvd24oKQorICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5yZWFkeS5jbGVhcigpCisKKyAgICBjbGFzcyBUZXN0SFRUUFNlcnZlcihDb250cm9sTWl4aW4sIEhUVFBTZXJ2ZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQW4gSFRUUCBzZXJ2ZXIgd2hpY2ggaXMgY29udHJvbGxhYmxlIHVzaW5nIDpjbGFzczpgQ29udHJvbE1peGluYC4KKworICAgICAgICA6cGFyYW0gYWRkcjogQSB0dXBsZSB3aXRoIHRoZSBJUCBhZGRyZXNzIGFuZCBwb3J0IHRvIGxpc3RlbiBvbi4KKyAgICAgICAgOnBhcmFtIGhhbmRsZXI6IEEgaGFuZGxlciBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aXRoIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZSBwYXJhbWV0ZXIgLSB0aGUgcmVxdWVzdCAtIGluIG9yZGVyIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIHRoZSByZXF1ZXN0LgorICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIHBvbGxpbmcgaW50ZXJ2YWwgaW4gc2Vjb25kcy4KKyAgICAgICAgOnBhcmFtIGxvZzogUGFzcyBgYFRydWVgYCB0byBlbmFibGUgbG9nIG1lc3NhZ2VzLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWw9MC41LAorICAgICAgICAgICAgICAgICAgICAgbG9nPUZhbHNlLCBzc2xjdHg9Tm9uZSk6CisgICAgICAgICAgICBjbGFzcyBEZWxlZ2F0aW5nSFRUUFJlcXVlc3RIYW5kbGVyKEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgorICAgICAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lLCBkZWZhdWx0PU5vbmUpOgorICAgICAgICAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ2RvXycpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucHJvY2Vzc19yZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisKKyAgICAgICAgICAgICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5faGFuZGxlcihzZWxmKQorCisgICAgICAgICAgICAgICAgZGVmIGxvZ19tZXNzYWdlKHNlbGYsIGZvcm1hdCwgKmFyZ3MpOgorICAgICAgICAgICAgICAgICAgICBpZiBsb2c6CisgICAgICAgICAgICAgICAgICAgICAgICBzdXBlcihEZWxlZ2F0aW5nSFRUUFJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikubG9nX21lc3NhZ2UoZm9ybWF0LCAqYXJncykKKyAgICAgICAgICAgIEhUVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgRGVsZWdhdGluZ0hUVFBSZXF1ZXN0SGFuZGxlcikKKyAgICAgICAgICAgIENvbnRyb2xNaXhpbi5fX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsKQorICAgICAgICAgICAgc2VsZi5zc2xjdHggPSBzc2xjdHgKKworICAgICAgICBkZWYgZ2V0X3JlcXVlc3Qoc2VsZik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29jaywgYWRkciA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zc2xjdHg6CisgICAgICAgICAgICAgICAgICAgIHNvY2sgPSBzZWxmLnNzbGN0eC53cmFwX3NvY2tldChzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlKQorICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICMgc29ja2V0IGVycm9ycyBhcmUgc2lsZW5jZWQgYnkgdGhlIGNhbGxlciwgcHJpbnQgdGhlbSBoZXJlCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiR290IGFuIGVycm9yOlxuJXNcbiIgJSBlKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICByZXR1cm4gc29jaywgYWRkcgorCisgICAgY2xhc3MgVGVzdFRDUFNlcnZlcihDb250cm9sTWl4aW4sIFRocmVhZGluZ1RDUFNlcnZlcik6CisgICAgICAgICIiIgorICAgICAgICBBIFRDUCBzZXJ2ZXIgd2hpY2ggaXMgY29udHJvbGxhYmxlIHVzaW5nIDpjbGFzczpgQ29udHJvbE1peGluYC4KKworICAgICAgICA6cGFyYW0gYWRkcjogQSB0dXBsZSB3aXRoIHRoZSBJUCBhZGRyZXNzIGFuZCBwb3J0IHRvIGxpc3RlbiBvbi4KKyAgICAgICAgOnBhcmFtIGhhbmRsZXI6IEEgaGFuZGxlciBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aXRoIGEgc2luZ2xlCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgLSB0aGUgcmVxdWVzdCAtIGluIG9yZGVyIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuCisgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgcG9sbGluZyBpbnRlcnZhbCBpbiBzZWNvbmRzLgorICAgICAgICA6YmluZF9hbmRfYWN0aXZhdGU6IElmIFRydWUgKHRoZSBkZWZhdWx0KSwgYmluZHMgdGhlIHNlcnZlciBhbmQgc3RhcnRzIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuaW5nLiBJZiBGYWxzZSwgeW91IG5lZWQgdG8gY2FsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptZXRoOmBzZXJ2ZXJfYmluZGAgYW5kIDptZXRoOmBzZXJ2ZXJfYWN0aXZhdGVgIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29tZSBsYXRlciB0aW1lIGJlZm9yZSBjYWxsaW5nIDptZXRoOmBzdGFydGAsIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2VydmVyIHdpbGwgc2V0IHVwIHRoZSBzb2NrZXQgYW5kIGxpc3RlbiBvbiBpdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IFRydWUKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbD0wLjUsCisgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgIGNsYXNzIERlbGVnYXRpbmdUQ1BSZXF1ZXN0SGFuZGxlcihTdHJlYW1SZXF1ZXN0SGFuZGxlcik6CisKKyAgICAgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5faGFuZGxlcihzZWxmKQorICAgICAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIERlbGVnYXRpbmdUQ1BSZXF1ZXN0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZSkKKyAgICAgICAgICAgIENvbnRyb2xNaXhpbi5fX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsKQorCisgICAgICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKFRlc3RUQ1BTZXJ2ZXIsIHNlbGYpLnNlcnZlcl9iaW5kKCkKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KKworICAgIGNsYXNzIFRlc3RVRFBTZXJ2ZXIoQ29udHJvbE1peGluLCBUaHJlYWRpbmdVRFBTZXJ2ZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBVRFAgc2VydmVyIHdoaWNoIGlzIGNvbnRyb2xsYWJsZSB1c2luZyA6Y2xhc3M6YENvbnRyb2xNaXhpbmAuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgdHVwbGUgd2l0aCB0aGUgSVAgYWRkcmVzcyBhbmQgcG9ydCB0byBsaXN0ZW4gb24uCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB0aGUgcmVxdWVzdC4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBwb2xsaW5nIGludGVydmFsIGZvciBzaHV0ZG93biByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHNlY29uZHMuCisgICAgICAgIDpiaW5kX2FuZF9hY3RpdmF0ZTogSWYgVHJ1ZSAodGhlIGRlZmF1bHQpLCBiaW5kcyB0aGUgc2VydmVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0cyBpdCBsaXN0ZW5pbmcuIElmIEZhbHNlLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgOm1ldGg6YHNlcnZlcl9iaW5kYCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWV0aDpgc2VydmVyX2FjdGl2YXRlYCBhdCBzb21lIGxhdGVyIHRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgY2FsbGluZyA6bWV0aDpgc3RhcnRgLCBzbyB0aGF0IHRoZSBzZXJ2ZXIgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCB1cCB0aGUgc29ja2V0IGFuZCBsaXN0ZW4gb24gaXQuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbD0wLjUsCisgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgIGNsYXNzIERlbGVnYXRpbmdVRFBSZXF1ZXN0SGFuZGxlcihEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyKToKKworICAgICAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLl9oYW5kbGVyKHNlbGYpCisKKyAgICAgICAgICAgICAgICBkZWYgZmluaXNoKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi53ZmlsZS5nZXR2YWx1ZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIGRhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIoRGVsZWdhdGluZ1VEUFJlcXVlc3RIYW5kbGVyLCBzZWxmKS5maW5pc2goKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXIuX2Nsb3NlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgVGhyZWFkaW5nVURQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZWdhdGluZ1VEUFJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlKQorICAgICAgICAgICAgQ29udHJvbE1peGluLl9faW5pdF9fKHNlbGYsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWwpCisgICAgICAgICAgICBzZWxmLl9jbG9zZWQgPSBGYWxzZQorCisgICAgICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKFRlc3RVRFBTZXJ2ZXIsIHNlbGYpLnNlcnZlcl9iaW5kKCkKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KKworICAgICAgICBkZWYgc2VydmVyX2Nsb3NlKHNlbGYpOgorICAgICAgICAgICAgc3VwZXIoVGVzdFVEUFNlcnZlciwgc2VsZikuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlZCA9IFRydWUKKworIyAtIGVuZCBvZiBzZXJ2ZXJfaGVscGVyIHNlY3Rpb24KKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNNVFBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIHNvY2ttYXAgPSB7fQorICAgICAgICBzZXJ2ZXIgPSBUZXN0U01UUFNlcnZlcigoJ2xvY2FsaG9zdCcsIDApLCBzZWxmLnByb2Nlc3NfbWVzc2FnZSwgMC4wMDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ttYXApCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0KQorICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5TTVRQSGFuZGxlcihhZGRyLCAnbWUnLCAneW91JywgJ0xvZycsIHRpbWVvdXQ9NS4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgudG9hZGRycywgWyd5b3UnXSkKKyAgICAgICAgc2VsZi5tZXNzYWdlcyA9IFtdCisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAnSGVsbG8nfSkKKyAgICAgICAgc2VsZi5oYW5kbGVkID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoNS4wKSAgIyAxNDMxNDogZG9uJ3Qgd2FpdCBmb3JldmVyCisgICAgICAgIHNlcnZlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaGFuZGxlZC5pc19zZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5tZXNzYWdlcyksIDEpCisgICAgICAgIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhID0gc2VsZi5tZXNzYWdlc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxmcm9tLCAnbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjcHR0b3MsIFsneW91J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1xuU3ViamVjdDogTG9nXG4nLCBkYXRhKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGF0YS5lbmRzd2l0aCgnXG5cbkhlbGxvJykpCisgICAgICAgIGguY2xvc2UoKQorCisgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYubWVzc2FnZXMuYXBwZW5kKGFyZ3MpCisgICAgICAgIHNlbGYuaGFuZGxlZC5zZXQoKQorCiBjbGFzcyBNZW1vcnlIYW5kbGVyVGVzdChCYXNlVGVzdCk6CiAKICAgICAiIiJUZXN0cyBmb3IgdGhlIE1lbW9yeUhhbmRsZXIuIiIiCkBAIC01MjUsNyArMTAxOCw3IEBACiAgICAgICAgIHNlbGYubWVtX2xvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKICAgICAgICAgIyBUaGlzIHdpbGwgZmx1c2ggYmVjYXVzZSB0aGUgbGV2ZWwgaXMgPj0gbG9nZ2luZy5XQVJOSU5HCi0gICAgICAgIHNlbGYubWVtX2xvZ2dlci53YXJuKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci53YXJuaW5nKHNlbGYubmV4dF9tZXNzYWdlKCkpCiAgICAgICAgIGxpbmVzID0gWwogICAgICAgICAgICAgKCdERUJVRycsICcxJyksCiAgICAgICAgICAgICAoJ0lORk8nLCAnMicpLApAQCAtODcwLDY4ICsxMzYzLDYgQEAKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKIAotY2xhc3MgTG9nUmVjb3JkU3RyZWFtSGFuZGxlcihTdHJlYW1SZXF1ZXN0SGFuZGxlcik6Ci0KLSAgICAiIiJIYW5kbGVyIGZvciBhIHN0cmVhbWluZyBsb2dnaW5nIHJlcXVlc3QuIEl0IHNhdmVzIHRoZSBsb2cgbWVzc2FnZSBpbiB0aGUKLSAgICBUQ1Agc2VydmVyJ3MgJ2xvZ19vdXRwdXQnIGF0dHJpYnV0ZS4iIiIKLQotICAgIFRDUF9MT0dfRU5EID0gIiEhIUVORCEhISIKLQotICAgIGRlZiBoYW5kbGUoc2VsZik6Ci0gICAgICAgICIiIkhhbmRsZSBtdWx0aXBsZSByZXF1ZXN0cyAtIGVhY2ggZXhwZWN0ZWQgdG8gYmUgb2YgNC1ieXRlIGxlbmd0aCwKLSAgICAgICAgZm9sbG93ZWQgYnkgdGhlIExvZ1JlY29yZCBpbiBwaWNrbGUgZm9ybWF0LiBMb2dzIHRoZSByZWNvcmQKLSAgICAgICAgYWNjb3JkaW5nIHRvIHdoYXRldmVyIHBvbGljeSBpcyBjb25maWd1cmVkIGxvY2FsbHkuIiIiCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaHVuayA9IHNlbGYuY29ubmVjdGlvbi5yZWN2KDQpCi0gICAgICAgICAgICBpZiBsZW4oY2h1bmspIDwgNDoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgc2xlbiA9IHN0cnVjdC51bnBhY2soIj5MIiwgY2h1bmspWzBdCi0gICAgICAgICAgICBjaHVuayA9IHNlbGYuY29ubmVjdGlvbi5yZWN2KHNsZW4pCi0gICAgICAgICAgICB3aGlsZSBsZW4oY2h1bmspIDwgc2xlbjoKLSAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rICsgc2VsZi5jb25uZWN0aW9uLnJlY3Yoc2xlbiAtIGxlbihjaHVuaykpCi0gICAgICAgICAgICBvYmogPSBzZWxmLnVucGlja2xlKGNodW5rKQotICAgICAgICAgICAgcmVjb3JkID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKG9iaikKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlX2xvZ19yZWNvcmQocmVjb3JkKQotCi0gICAgZGVmIHVucGlja2xlKHNlbGYsIGRhdGEpOgotICAgICAgICByZXR1cm4gcGlja2xlLmxvYWRzKGRhdGEpCi0KLSAgICBkZWYgaGFuZGxlX2xvZ19yZWNvcmQoc2VsZiwgcmVjb3JkKToKLSAgICAgICAgIyBJZiB0aGUgZW5kLW9mLW1lc3NhZ2VzIHNlbnRpbmVsIGlzIHNlZW4sIHRlbGwgdGhlIHNlcnZlciB0bwotICAgICAgICAjICB0ZXJtaW5hdGUuCi0gICAgICAgIGlmIHNlbGYuVENQX0xPR19FTkQgaW4gcmVjb3JkLm1zZzoKLSAgICAgICAgICAgIHNlbGYuc2VydmVyLmFib3J0ID0gMQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuc2VydmVyLmxvZ19vdXRwdXQgKz0gcmVjb3JkLm1zZyArICJcbiIKLQotCi1jbGFzcyBMb2dSZWNvcmRTb2NrZXRSZWNlaXZlcihUaHJlYWRpbmdUQ1BTZXJ2ZXIpOgotCi0gICAgIiIiQSBzaW1wbGUtbWluZGVkIFRDUCBzb2NrZXQtYmFzZWQgbG9nZ2luZyByZWNlaXZlciBzdWl0YWJsZSBmb3IgdGVzdAotICAgIHB1cnBvc2VzLiIiIgotCi0gICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IDEKLSAgICBsb2dfb3V0cHV0ID0gIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PSdsb2NhbGhvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PWxvZ2dpbmcuaGFuZGxlcnMuREVGQVVMVF9UQ1BfTE9HR0lOR19QT1JULAotICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcj1Mb2dSZWNvcmRTdHJlYW1IYW5kbGVyKToKLSAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLl9faW5pdF9fKHNlbGYsIChob3N0LCBwb3J0KSwgaGFuZGxlcikKLSAgICAgICAgc2VsZi5hYm9ydCA9IEZhbHNlCi0gICAgICAgIHNlbGYudGltZW91dCA9IDAuMQotICAgICAgICBzZWxmLmZpbmlzaGVkID0gdGhyZWFkaW5nLkV2ZW50KCkKLQotICAgIGRlZiBzZXJ2ZV91bnRpbF9zdG9wcGVkKHNlbGYpOgotICAgICAgICB3aGlsZSBub3Qgc2VsZi5hYm9ydDoKLSAgICAgICAgICAgIHJkLCB3ciwgZXggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNvY2tldC5maWxlbm8oKV0sIFtdLCBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGltZW91dCkKLSAgICAgICAgICAgIGlmIHJkOgotICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX3JlcXVlc3QoKQotICAgICAgICAjIE5vdGlmeSB0aGUgbWFpbiB0aHJlYWQgdGhhdCB3ZSdyZSBhYm91dCB0byBleGl0Ci0gICAgICAgIHNlbGYuZmluaXNoZWQuc2V0KCkKLSAgICAgICAgIyBjbG9zZSB0aGUgbGlzdGVuIHNvY2tldAotICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCi0KIAogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIFNvY2tldEhhbmRsZXJUZXN0KEJhc2VUZXN0KToKQEAgLTk0Miw0NCArMTM3MywyNzAgQEAKICAgICAgICAgIiIiU2V0IHVwIGEgVENQIHNlcnZlciB0byByZWNlaXZlIGxvZyBtZXNzYWdlcywgYW5kIGEgU29ja2V0SGFuZGxlcgogICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCiAgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCi0gICAgICAgIHNlbGYudGNwc2VydmVyID0gTG9nUmVjb3JkU29ja2V0UmVjZWl2ZXIocG9ydD0wKQotICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnRjcHNlcnZlci5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQotICAgICAgICBzZWxmLnRocmVhZHMgPSBbCi0gICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi50Y3BzZXJ2ZXIuc2VydmVfdW50aWxfc3RvcHBlZCldCi0gICAgICAgIGZvciB0aHJlYWQgaW4gc2VsZi50aHJlYWRzOgotICAgICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKLQotICAgICAgICBzZWxmLnNvY2tfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuU29ja2V0SGFuZGxlcignbG9jYWxob3N0Jywgc2VsZi5wb3J0KQotICAgICAgICBzZWxmLnNvY2tfaGRsci5zZXRGb3JtYXR0ZXIoc2VsZi5yb290X2Zvcm1hdHRlcikKKyAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIgPSBUZXN0VENQU2VydmVyKGFkZHIsIHNlbGYuaGFuZGxlX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMDEpCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgc2VsZi5zb2NrX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLlNvY2tldEhhbmRsZXIoJ2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgPSAnJwogICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuc29ja19oZGxyKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuU2VtYXBob3JlKDApCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgICIiIlNodXRkb3duIHRoZSBUQ1Agc2VydmVyLiIiIgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnRjcHNlcnZlci5hYm9ydCA9IFRydWUKLSAgICAgICAgICAgIGRlbCBzZWxmLnRjcHNlcnZlcgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCiAgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5zb2NrX2hkbHIpCiAgICAgICAgICAgICBzZWxmLnNvY2tfaGRsci5jbG9zZSgpCi0gICAgICAgICAgICBmb3IgdGhyZWFkIGluIHNlbGYudGhyZWFkczoKLSAgICAgICAgICAgICAgICB0aHJlYWQuam9pbigyLjApCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBCYXNlVGVzdC50ZWFyRG93bihzZWxmKQogCi0gICAgZGVmIGdldF9vdXRwdXQoc2VsZik6Ci0gICAgICAgICIiIkdldCB0aGUgbG9nIG91dHB1dCBhcyByZWNlaXZlZCBieSB0aGUgVENQIHNlcnZlci4iIiIKLSAgICAgICAgIyBTaWduYWwgdGhlIFRDUCByZWNlaXZlciBhbmQgd2FpdCBmb3IgaXQgdG8gdGVybWluYXRlLgotICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmNyaXRpY2FsKExvZ1JlY29yZFN0cmVhbUhhbmRsZXIuVENQX0xPR19FTkQpCi0gICAgICAgIHNlbGYudGNwc2VydmVyLmZpbmlzaGVkLndhaXQoMi4wKQotICAgICAgICByZXR1cm4gc2VsZi50Y3BzZXJ2ZXIubG9nX291dHB1dAorICAgIGRlZiBoYW5kbGVfc29ja2V0KHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBjb25uID0gcmVxdWVzdC5jb25uZWN0aW9uCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjaHVuayA9IGNvbm4ucmVjdig0KQorICAgICAgICAgICAgaWYgbGVuKGNodW5rKSA8IDQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNsZW4gPSBzdHJ1Y3QudW5wYWNrKCI+TCIsIGNodW5rKVswXQorICAgICAgICAgICAgY2h1bmsgPSBjb25uLnJlY3Yoc2xlbikKKyAgICAgICAgICAgIHdoaWxlIGxlbihjaHVuaykgPCBzbGVuOgorICAgICAgICAgICAgICAgIGNodW5rID0gY2h1bmsgKyBjb25uLnJlY3Yoc2xlbiAtIGxlbihjaHVuaykpCisgICAgICAgICAgICBvYmogPSBwaWNrbGUubG9hZHMoY2h1bmspCisgICAgICAgICAgICByZWNvcmQgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQob2JqKQorICAgICAgICAgICAgc2VsZi5sb2dfb3V0cHV0ICs9IHJlY29yZC5tc2cgKyAnXG4nCisgICAgICAgICAgICBzZWxmLmhhbmRsZWQucmVsZWFzZSgpCiAKICAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CiAgICAgICAgICMgVGhlIGxvZyBtZXNzYWdlIHNlbnQgdG8gdGhlIFNvY2tldEhhbmRsZXIgaXMgcHJvcGVybHkgcmVjZWl2ZWQuCiAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ0Y3AiKQogICAgICAgICBsb2dnZXIuZXJyb3IoInNwYW0iKQorICAgICAgICBzZWxmLmhhbmRsZWQuYWNxdWlyZSgpCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiZWdncyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfb3V0cHV0KCksICJzcGFtXG5lZ2dzXG4iKQorICAgICAgICBzZWxmLmhhbmRsZWQuYWNxdWlyZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCAic3BhbVxuZWdnc1xuIikKIAorICAgIGRlZiB0ZXN0X25vc2VydmVyKHNlbGYpOgorICAgICAgICAjIEtpbGwgdGhlIHNlcnZlcgorICAgICAgICBzZWxmLnNlcnZlci5zdG9wKDIuMCkKKyAgICAgICAgI1RoZSBsb2dnaW5nIGNhbGwgc2hvdWxkIHRyeSB0byBjb25uZWN0LCB3aGljaCBzaG91bGQgZmFpbAorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0RlbGliZXJhdGUgbWlzdGFrZScpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmV4Y2VwdGlvbignTmV2ZXIgc2VudCcpCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuZXJyb3IoJ05ldmVyIHNlbnQsIGVpdGhlcicpCisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnNvY2tfaGRsci5yZXRyeVRpbWUgPiBub3cpCisgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5zb2NrX2hkbHIucmV0cnlUaW1lIC0gbm93ICsgMC4wMDEpCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuZXJyb3IoJ05vciB0aGlzJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgRGF0YWdyYW1IYW5kbGVyVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IGZvciBEYXRhZ3JhbUhhbmRsZXIuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIlNldCB1cCBhIFVEUCBzZXJ2ZXIgdG8gcmVjZWl2ZSBsb2cgbWVzc2FnZXMsIGFuZCBhIERhdGFncmFtSGFuZGxlcgorICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCisgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIDApCisgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdFVEUFNlcnZlcihhZGRyLCBzZWxmLmhhbmRsZV9kYXRhZ3JhbSwgMC4wMSkKKyAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgc2VydmVyLnJlYWR5LndhaXQoKQorICAgICAgICBzZWxmLnNvY2tfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuRGF0YWdyYW1IYW5kbGVyKCdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgPSAnJworICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKKyAgICAgICAgc2VsZi5yb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuc29ja19oZGxyKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJTaHV0ZG93biB0aGUgVURQIHNlcnZlci4iIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5zb2NrX2hkbHIpCisgICAgICAgICAgICBzZWxmLnNvY2tfaGRsci5jbG9zZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBCYXNlVGVzdC50ZWFyRG93bihzZWxmKQorCisgICAgZGVmIGhhbmRsZV9kYXRhZ3JhbShzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgc2xlbiA9IHN0cnVjdC5wYWNrKCc+TCcsIDApICMgbGVuZ3RoIG9mIHByZWZpeAorICAgICAgICBwYWNrZXQgPSByZXF1ZXN0LnBhY2tldFtsZW4oc2xlbik6XQorICAgICAgICBvYmogPSBwaWNrbGUubG9hZHMocGFja2V0KQorICAgICAgICByZWNvcmQgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQob2JqKQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgKz0gcmVjb3JkLm1zZyArICdcbicKKyAgICAgICAgc2VsZi5oYW5kbGVkLnNldCgpCisKKyAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CisgICAgICAgICMgVGhlIGxvZyBtZXNzYWdlIHNlbnQgdG8gdGhlIERhdGFncmFtSGFuZGxlciBpcyBwcm9wZXJseSByZWNlaXZlZC4KKyAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInVkcCIpCisgICAgICAgIGxvZ2dlci5lcnJvcigic3BhbSIpCisgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KCkKKyAgICAgICAgc2VsZi5oYW5kbGVkLmNsZWFyKCkKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJlZ2dzIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgInNwYW1cbmVnZ3NcbiIpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFN5c0xvZ0hhbmRsZXJUZXN0KEJhc2VUZXN0KToKKworICAgICIiIlRlc3QgZm9yIFN5c0xvZ0hhbmRsZXIgdXNpbmcgVURQLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiJTZXQgdXAgYSBVRFAgc2VydmVyIHRvIHJlY2VpdmUgbG9nIG1lc3NhZ2VzLCBhbmQgYSBTeXNMb2dIYW5kbGVyCisgICAgICAgIHBvaW50aW5nIHRvIHRoYXQgc2VydmVyJ3MgYWRkcmVzcyBhbmQgcG9ydC4iIiIKKyAgICAgICAgQmFzZVRlc3Quc2V0VXAoc2VsZikKKyAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIgPSBUZXN0VURQU2VydmVyKGFkZHIsIHNlbGYuaGFuZGxlX2RhdGFncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wMSkKKyAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgc2VydmVyLnJlYWR5LndhaXQoKQorICAgICAgICBzZWxmLnNsX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLlN5c0xvZ0hhbmRsZXIoKCdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KSkKKyAgICAgICAgc2VsZi5sb2dfb3V0cHV0ID0gJycKKyAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9sb2dnZXIuaGFuZGxlcnNbMF0pCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnNsX2hkbHIpCisgICAgICAgIHNlbGYuaGFuZGxlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIlNodXRkb3duIHRoZSBVRFAgc2VydmVyLiIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKDIuMCkKKyAgICAgICAgICAgIHNlbGYucm9vdF9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLnNsX2hkbHIpCisgICAgICAgICAgICBzZWxmLnNsX2hkbHIuY2xvc2UoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgQmFzZVRlc3QudGVhckRvd24oc2VsZikKKworICAgIGRlZiBoYW5kbGVfZGF0YWdyYW0oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYubG9nX291dHB1dCA9IHJlcXVlc3QucGFja2V0CisgICAgICAgIHNlbGYuaGFuZGxlZC5zZXQoKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgorICAgICAgICAjIFRoZSBsb2cgbWVzc2FnZSBzZW50IHRvIHRoZSBTeXNMb2dIYW5kbGVyIGlzIHByb3Blcmx5IHJlY2VpdmVkLgorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigic2xoIikKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJzcFx4ZTRtIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgYic8MTE+c3BceGMzXHhhNG1ceDAwJykKKyAgICAgICAgc2VsZi5oYW5kbGVkLmNsZWFyKCkKKyAgICAgICAgc2VsZi5zbF9oZGxyLmFwcGVuZF9udWwgPSBGYWxzZQorICAgICAgICBsb2dnZXIuZXJyb3IoInNwXHhlNG0iKQorICAgICAgICBzZWxmLmhhbmRsZWQud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCBiJzwxMT5zcFx4YzNceGE0bScpCisgICAgICAgIHNlbGYuaGFuZGxlZC5jbGVhcigpCisgICAgICAgIHNlbGYuc2xfaGRsci5pZGVudCA9ICJoXHhlNG0tIgorICAgICAgICBsb2dnZXIuZXJyb3IoInNwXHhlNG0iKQorICAgICAgICBzZWxmLmhhbmRsZWQud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCBiJzwxMT5oXHhjM1x4YTRtLXNwXHhjM1x4YTRtJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgSFRUUEhhbmRsZXJUZXN0KEJhc2VUZXN0KToKKyAgICAiIiJUZXN0IGZvciBIVFRQSGFuZGxlci4iIiIKKworICAgIFBFTUZJTEUgPSAiIiItLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCitNSUlDWFFJQkFBS0JnUURHVDR4UzVyOTFyYkxKUUsyblVEZW5CaEJHNnFGaytiVk9qdUFHQy9MU0hsQW9CbnZHCit6UUczYWdPRytlN2M1ejJYVDhtMmt0T1JMcUczRTRtWW1ieGd5aERyelA2ZWkyQW5jK3Bzem1ueFBvSzNQdWg1CithWFYrWEt0MGJVMEMxbTIrQUNtR0dKMHQzUDQwOGFydDgybk94Qnc4WkhnSWc5RHRwNnhJVUN5T3F3SURBUUFCCitBb0dCQUpGVG5GYm9hS2g1ZVVySXpqbU5yS3NHNDRqRXl5K3ZXdkhOL0ZnU0M0bDEwM0h4aG1XaXVMNUx2M2Y3CiswdE1wMXRYN0Q2eHZId0lHOVZXdnlLYi9DcTlySnNEaWJtRFZJT3Nsbk9XZVFoRytYd0p5aXRSMHBxL0tsSklCCis1TGpPUmNCdzc5NW9LV09BaTZSY09iMU9ONTl0eXNFRlloQUdRTzlrNlZMNjIxZ1JBa0VBL0diK1lYVUxMcGJzCitwaVhOM3E0emNIemVhVkFObzY5dFVaNlRqYVFxTWVUeEU0dE9ZTTBHMFpvU2VIRWRhUDU5QU9aR0tYWE5HU1F5Cisyei9NZGRjWUdRSkJBTWtqTFNZSXBPTEpZMTFqYThPd3dzd0ZHMmhFekhlMGNTOWJ6bysrUi9qYzFiSEE1UjBZCitpNnZBNWlQaSt3b3BQRnZweXRkQm9sN1V1RUJlNXhacnhXTUNRUUNXeEVMUkhpUDJ5V3BFZUxKM2dHRHpvWE1OCitQeWRXamhSanU3QngzQXprVHRmK0Q2bGF3ejErZUdUdUVzczVpMEpLQmtNRXd2d25OMnMxY2UrRXVGNEpBa0JiCitFOTZoMWxBemtWVzVPQWZZT1BZOFJDUEE5MFpPL2hveWc3UHBTeFIwRUN1RHJnRVJSOGdYSWVZVVlmZWpCa0VhCityYWI0Q2ZSb1ZKS0tNMjhZcS94WkFrQnZ1cTY3MEpSQ3dPZ2ZVVGR3dzdXcGRPUUJZUGt6UWNjc0tOQ3NsUVc4CisvRHlXNnkwNm9RdXNTRU5VdnluVDZkcjNMSnh0L05nWlBoWlgyK2sxZVlEVgorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJQ0d6Q0NBWVNnQXdJQkFnSUpBSXE4NGEyUS9PdmxNQTBHQ1NxR1NJYjNEUUVCQlFVQU1CUXhFakFRQmdOVgorQkFNVENXeHZZMkZzYUc5emREQWVGdzB4TVRBMU1qRXhNREl6TXpOYUZ3MDNOVEF6TWpFd016VTFNVGRhTUJReAorRWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXdnWWtDZ1lFQQoreGsrTVV1YS9kYTJ5eVVDdHAxQTNwd1lRUnVxaFpQbTFUbzdnQmd2eTBoNVFLQVo3eHMwQnQyb0Rodm51M09jOQorbDAvSnRwTFRrUzZodHhPSm1KbThZTW9RNjh6K25vdGdKM1BxYk01cDhUNkN0ejdvZVdsMWZseXJkRzFOQXRadAordmdBcGhoaWRMZHorTlBHcTdmTnB6c1FjUEdSNENJUFE3YWVzU0ZBc2pxc0NBd0VBQWFOMU1ITXdIUVlEVlIwTworQkJZRUZMV2FVUE82TjdlZkdpdW9TOWkzRFZZY1V3bjBNRVFHQTFVZEl3UTlNRHVBRkxXYVVQTzZON2VmR2l1bworUzlpM0RWWWNVd24wb1Jpa0ZqQVVNUkl3RUFZRFZRUURFd2xzYjJOaGJHaHZjM1NDQ1FDS3ZPR3RrUHpyNVRBTQorQmdOVkhSTUVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJCUVVBQTRHQkFNSzV3aFBqTE5RSzFJdnZrODhvcUpxcQorNGY4ODlPd2lrR1AwZVVoT0JoYkZsc1pzK2pxNVlaQzJVekh6K2V2ektCbGdBUDF1NGxQL2NCODVDbmp2V3FNKworMWMvbHl3RkhRNkhPZERlUTFMNzJ0U1lNck5PRzRYTm1MbjBoN3J4NkdvVFU3ZGNGUmZzZWFoQkNxOG12MElEdAorSVJiVHB2bEhXUGpzU3ZIejBaT0gKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIiIiU2V0IHVwIGFuIEhUVFAgc2VydmVyIHRvIHJlY2VpdmUgbG9nIG1lc3NhZ2VzLCBhbmQgYSBIVFRQSGFuZGxlcgorICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCisgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCisgICAgICAgIHNlbGYuaGFuZGxlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgaGFuZGxlX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYuY29tbWFuZCA9IHJlcXVlc3QuY29tbWFuZAorICAgICAgICBzZWxmLmxvZ19kYXRhID0gdXJscGFyc2UocmVxdWVzdC5wYXRoKQorICAgICAgICBpZiBzZWxmLmNvbW1hbmQgPT0gJ1BPU1QnOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJsZW4gPSBpbnQocmVxdWVzdC5oZWFkZXJzWydDb250ZW50LUxlbmd0aCddKQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9kYXRhID0gcmVxdWVzdC5yZmlsZS5yZWFkKHJsZW4pCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2RhdGEgPSBOb25lCisgICAgICAgIHJlcXVlc3Quc2VuZF9yZXNwb25zZSgyMDApCisgICAgICAgIHJlcXVlc3QuZW5kX2hlYWRlcnMoKQorICAgICAgICBzZWxmLmhhbmRsZWQuc2V0KCkKKworICAgIGRlZiB0ZXN0X291dHB1dChzZWxmKToKKyAgICAgICAgIyBUaGUgbG9nIG1lc3NhZ2Ugc2VudCB0byB0aGUgSFRUUEhhbmRsZXIgaXMgcHJvcGVybHkgcmVjZWl2ZWQuCisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJodHRwIikKKyAgICAgICAgcm9vdF9sb2dnZXIgPSBzZWxmLnJvb3RfbG9nZ2VyCisgICAgICAgIHJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKKyAgICAgICAgZm9yIHNlY3VyZSBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgICAgIGlmIHNlY3VyZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBzc2wKKyAgICAgICAgICAgICAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZm4sICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5QRU1GSUxFKQorICAgICAgICAgICAgICAgICAgICBzc2xjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgICAgICAgICBzc2xjdHgubG9hZF9jZXJ0X2NoYWluKGZuKQorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgICAgICBzc2xjdHggPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNzbGN0eCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdEhUVFBTZXJ2ZXIoYWRkciwgc2VsZi5oYW5kbGVfcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAxLCBzc2xjdHg9c3NsY3R4KQorICAgICAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgICAgIGhvc3QgPSAnbG9jYWxob3N0OiVkJyAlIHNlcnZlci5zZXJ2ZXJfcG9ydAorICAgICAgICAgICAgc2VjdXJlX2NsaWVudCA9IHNlY3VyZSBhbmQgc3NsY3R4CisgICAgICAgICAgICBzZWxmLmhfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuSFRUUEhhbmRsZXIoaG9zdCwgJy9mcm9iJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cmU9c2VjdXJlX2NsaWVudCkKKyAgICAgICAgICAgIHNlbGYubG9nX2RhdGEgPSBOb25lCisgICAgICAgICAgICByb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuaF9oZGxyKQorCisgICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnR0VUJywgJ1BPU1QnKToKKyAgICAgICAgICAgICAgICBzZWxmLmhfaGRsci5tZXRob2QgPSBtZXRob2QKKyAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZWQuY2xlYXIoKQorICAgICAgICAgICAgICAgIG1zZyA9ICJzcFx4ZTRtIgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfZGF0YS5wYXRoLCAnL2Zyb2InKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21tYW5kLCBtZXRob2QpCisgICAgICAgICAgICAgICAgaWYgbWV0aG9kID09ICdHRVQnOgorICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2VfcXMoc2VsZi5sb2dfZGF0YS5xdWVyeSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2VfcXMoc2VsZi5wb3N0X2RhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnbmFtZSddLCBbJ2h0dHAnXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ2Z1bmNOYW1lJ10sIFsndGVzdF9vdXRwdXQnXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ21zZyddLCBbbXNnXSkKKworICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5oX2hkbHIpCisgICAgICAgICAgICBzZWxmLmhfaGRsci5jbG9zZSgpCiAKIGNsYXNzIE1lbW9yeVRlc3QoQmFzZVRlc3QpOgogCkBAIC0xMDg3LDI4ICsxNzQ0LDM5IEBACiAgICAgZGVmIHRlc3Rfd2FybmluZ3Moc2VsZik6CiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIGxvZ2dpbmcuY2FwdHVyZVdhcm5pbmdzKFRydWUpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQotICAgICAgICAgICAgICAgIGZpbGUgPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICAgICAgaCA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihmaWxlKQotICAgICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaCkKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJJJ20gd2FybmluZyB5b3UuLi4iKQotICAgICAgICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGgpCi0gICAgICAgICAgICAgICAgcyA9IGZpbGUuZ2V0dmFsdWUoKQotICAgICAgICAgICAgICAgIGguY2xvc2UoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmZpbmQoIlVzZXJXYXJuaW5nOiBJJ20gd2FybmluZyB5b3UuLi5cbiIpID4gMCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncywgRmFsc2UpCisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCisgICAgICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICBoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN0cmVhbSkKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCisgICAgICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihoKQorICAgICAgICAgICAgd2FybmluZ3Mud2FybigiSSdtIHdhcm5pbmcgeW91Li4uIikKKyAgICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGgpCisgICAgICAgICAgICBzID0gc3RyZWFtLmdldHZhbHVlKCkKKyAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZmluZCgiVXNlcldhcm5pbmc6IEknbSB3YXJuaW5nIHlvdS4uLlxuIikgPiAwKQogCi0gICAgICAgICAgICAgICAgI1NlZSBpZiBhbiBleHBsaWNpdCBmaWxlIHVzZXMgdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uCi0gICAgICAgICAgICAgICAgZmlsZSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaG93d2FybmluZygiRXhwbGljaXQiLCBVc2VyV2FybmluZywgImR1bW15LnB5IiwgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSwgIkR1bW15IGxpbmUiKQotICAgICAgICAgICAgICAgIHMgPSBmaWxlLmdldHZhbHVlKCkKLSAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZHVtbXkucHk6NDI6IFVzZXJXYXJuaW5nOiBFeHBsaWNpdFxuICBEdW1teSBsaW5lXG4iKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncyhGYWxzZSkKKyAgICAgICAgICAgICNTZWUgaWYgYW4gZXhwbGljaXQgZmlsZSB1c2VzIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgYV9maWxlID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgd2FybmluZ3Muc2hvd3dhcm5pbmcoIkV4cGxpY2l0IiwgVXNlcldhcm5pbmcsICJkdW1teS5weSIsIDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYV9maWxlLCAiRHVtbXkgbGluZSIpCisgICAgICAgICAgICBzID0gYV9maWxlLmdldHZhbHVlKCkKKyAgICAgICAgICAgIGFfZmlsZS5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsCisgICAgICAgICAgICAgICAgImR1bW15LnB5OjQyOiBVc2VyV2FybmluZzogRXhwbGljaXRcbiAgRHVtbXkgbGluZVxuIikKKworICAgIGRlZiB0ZXN0X3dhcm5pbmdzX25vX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICBsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncyhUcnVlKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcuY2FwdHVyZVdhcm5pbmdzLCBGYWxzZSkKKworICAgICAgICAgICAgIyBjb25maXJtIG91ciBhc3N1bXB0aW9uOiBubyBsb2dnZXJzIGFyZSBzZXQKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dlci5oYW5kbGVycywgW10pCisKKyAgICAgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nKCJFeHBsaWNpdCIsIFVzZXJXYXJuaW5nLCAiZHVtbXkucHkiLCA0MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxvZ2dlci5oYW5kbGVycyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobG9nZ2VyLmhhbmRsZXJzWzBdLCBsb2dnaW5nLk51bGxIYW5kbGVyKQogCiAKIGRlZiBmb3JtYXRGdW5jKGZvcm1hdCwgZGF0ZWZtdD1Ob25lKToKQEAgLTE5NjEsNiArMjYyOSw3IEBACiAgICAgICAgICAgICBsb2dnaW5nLmNvbmZpZy5zdG9wTGlzdGVuaW5nKCkKICAgICAgICAgICAgIHQuam9pbigyLjApCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X2xpc3Rlbl9jb25maWdfMTBfb2soc2VsZik6CiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIoanNvbi5kdW1wcyhzZWxmLmNvbmZpZzEwKSkKQEAgLTE5ODAsNiArMjY0OSw3IEBACiAgICAgICAgICAgICAgICAgKCdFUlJPUicsICc0JyksCiAgICAgICAgICAgICBdLCBzdHJlYW09b3V0cHV0KQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9saXN0ZW5fY29uZmlnXzFfb2soc2VsZik6CiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIodGV4dHdyYXAuZGVkZW50KENvbmZpZ0ZpbGVUZXN0LmNvbmZpZzEpKQpAQCAtMTk5NCw2ICsyNjY0LDI3IEBACiAgICAgICAgICAgICAjIE9yaWdpbmFsIGxvZ2dlciBvdXRwdXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAKKyAgICBkZWYgdGVzdF9iYXNlY29uZmlnKHNlbGYpOgorICAgICAgICBkID0geworICAgICAgICAgICAgJ2F0dXBsZSc6ICgxLCAyLCAzKSwKKyAgICAgICAgICAgICdhbGlzdCc6IFsnYScsICdiJywgJ2MnXSwKKyAgICAgICAgICAgICdhZGljdCc6IHsnZCc6ICdlJywgJ2YnOiAzIH0sCisgICAgICAgICAgICAnbmVzdDEnOiAoJ2cnLCAoJ2gnLCAnaScpLCAnaicpLAorICAgICAgICAgICAgJ25lc3QyJzogWydrJywgWydsJywgJ20nXSwgJ24nXSwKKyAgICAgICAgICAgICduZXN0Myc6IFsnbycsICdjZmc6Ly9hbGlzdCcsICdwJ10sCisgICAgICAgIH0KKyAgICAgICAgYmMgPSBsb2dnaW5nLmNvbmZpZy5CYXNlQ29uZmlndXJhdG9yKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYXR1cGxlWzFdJyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWxpc3RbMV0nKSwgJ2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL25lc3QxWzFdWzBdJyksICdoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYy5jb252ZXJ0KCdjZmc6Ly9uZXN0MlsxXVsxXScpLCAnbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWRpY3QuZCcpLCAnZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWRpY3RbZl0nKSwgMykKKyAgICAgICAgdiA9IGJjLmNvbnZlcnQoJ2NmZzovL25lc3QzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnBvcCgxKSwgWydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYmMuY29udmVydCwgJ2NmZzovL25vc3VjaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJjLmNvbnZlcnQsICdjZmc6Ly8hJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGJjLmNvbnZlcnQsICdjZmc6Ly9hZGljdFsyXScpCiAKIGNsYXNzIE1hbmFnZXJUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9tYW5hZ2VyX2xvZ2dlcmNsYXNzKHNlbGYpOgpAQCAtMjAxMiw2ICsyNzAzLDExIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnZWQsIFsnc2hvdWxkIGFwcGVhciBpbiBsb2dnZWQnXSkKIAorICAgIGRlZiB0ZXN0X3NldF9sb2dfcmVjb3JkX2ZhY3Rvcnkoc2VsZik6CisgICAgICAgIG1hbiA9IGxvZ2dpbmcuTWFuYWdlcihOb25lKQorICAgICAgICBleHBlY3RlZCA9IG9iamVjdCgpCisgICAgICAgIG1hbi5zZXRMb2dSZWNvcmRGYWN0b3J5KGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbi5sb2dSZWNvcmRGYWN0b3J5LCBleHBlY3RlZCkKIAogY2xhc3MgQ2hpbGRMb2dnZXJUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9jaGlsZF9sb2dnZXJzKHNlbGYpOgpAQCAtMjExMyw2ICsyODA5LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkVSUk9SLCBtZXNzYWdlPScyJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkNSSVRJQ0FMLCBtZXNzYWdlPSczJykpCiAKK1pFUk8gPSBkYXRldGltZS50aW1lZGVsdGEoMCkKKworY2xhc3MgVVRDKGRhdGV0aW1lLnR6aW5mbyk6CisgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CisgICAgICAgIHJldHVybiBaRVJPCisKKyAgICBkc3QgPSB1dGNvZmZzZXQKKworICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gJ1VUQycKKwordXRjID0gVVRDKCkKIAogY2xhc3MgRm9ybWF0dGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMjE4Niw2ICsyODk0LDcxIEBACiAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignYXNjdGltZScsIHN0eWxlPSckJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnVzZXNUaW1lKCkpCiAKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3N0eWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLkZvcm1hdHRlciwgTm9uZSwgTm9uZSwgJ3gnKQorCisgICAgZGVmIHRlc3RfdGltZShzZWxmKToKKyAgICAgICAgciA9IHNlbGYuZ2V0X3JlY29yZCgpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk5MywgNCwgMjEsIDgsIDMsIDAsIDAsIHV0YykKKyAgICAgICAgIyBXZSB1c2UgTm9uZSB0byBpbmRpY2F0ZSB3ZSB3YW50IHRoZSBsb2NhbCB0aW1lem9uZQorICAgICAgICAjIFdlJ3JlIGVzc2VudGlhbGx5IGNvbnZlcnRpbmcgYSBVVEMgdGltZSB0byBsb2NhbCB0aW1lCisgICAgICAgIHIuY3JlYXRlZCA9IHRpbWUubWt0aW1lKGR0LmFzdGltZXpvbmUoTm9uZSkudGltZXR1cGxlKCkpCisgICAgICAgIHIubXNlY3MgPSAxMjMKKyAgICAgICAgZiA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKGFzY3RpbWUpcyAlKG1lc3NhZ2UpcycpCisgICAgICAgIGYuY29udmVydGVyID0gdGltZS5nbXRpbWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZvcm1hdFRpbWUociksICcxOTkzLTA0LTIxIDA4OjAzOjAwLDEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5mb3JtYXRUaW1lKHIsICclWTolZCcpLCAnMTk5MzoyMScpCisgICAgICAgIGYuZm9ybWF0KHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5hc2N0aW1lLCAnMTk5My0wNC0yMSAwODowMzowMCwxMjMnKQorCitjbGFzcyBUZXN0QnVmZmVyaW5nRm9ybWF0dGVyKGxvZ2dpbmcuQnVmZmVyaW5nRm9ybWF0dGVyKToKKyAgICBkZWYgZm9ybWF0SGVhZGVyKHNlbGYsIHJlY29yZHMpOgorICAgICAgICByZXR1cm4gJ1soJWQpJyAlIGxlbihyZWNvcmRzKQorCisgICAgZGVmIGZvcm1hdEZvb3RlcihzZWxmLCByZWNvcmRzKToKKyAgICAgICAgcmV0dXJuICcoJWQpXScgJSBsZW4ocmVjb3JkcykKKworY2xhc3MgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnJlY29yZHMgPSBbCisgICAgICAgICAgICBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAnb25lJ30pLAorICAgICAgICAgICAgbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ3R3byd9KSwKKyAgICAgICAgXQorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZiA9IGxvZ2dpbmcuQnVmZmVyaW5nRm9ybWF0dGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZi5mb3JtYXQoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdvbmV0d28nLCBmLmZvcm1hdChzZWxmLnJlY29yZHMpKQorCisgICAgZGVmIHRlc3RfY3VzdG9tKHNlbGYpOgorICAgICAgICBmID0gVGVzdEJ1ZmZlcmluZ0Zvcm1hdHRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1soMilvbmV0d28oMildJywgZi5mb3JtYXQoc2VsZi5yZWNvcmRzKSkKKyAgICAgICAgbGYgPSBsb2dnaW5nLkZvcm1hdHRlcignPCUobWVzc2FnZSlzPicpCisgICAgICAgIGYgPSBUZXN0QnVmZmVyaW5nRm9ybWF0dGVyKGxmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdbKDIpPG9uZT48dHdvPigyKV0nLCBmLmZvcm1hdChzZWxmLnJlY29yZHMpKQorCitjbGFzcyBFeGNlcHRpb25UZXN0KEJhc2VUZXN0KToKKyAgICBkZWYgdGVzdF9mb3JtYXR0aW5nKHNlbGYpOgorICAgICAgICByID0gc2VsZi5yb290X2xvZ2dlcgorICAgICAgICBoID0gUmVjb3JkaW5nSGFuZGxlcigpCisgICAgICAgIHIuYWRkSGFuZGxlcihoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2RlbGliZXJhdGUgbWlzdGFrZScpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGxvZ2dpbmcuZXhjZXB0aW9uKCdmYWlsZWQnLCBzdGFja19pbmZvPVRydWUpCisgICAgICAgIHIucmVtb3ZlSGFuZGxlcihoKQorICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgciA9IGgucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5leGNfdGV4dC5zdGFydHN3aXRoKCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FsbCBsYXN0KTpcbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5leGNfdGV4dC5lbmRzd2l0aCgnXG5SdW50aW1lRXJyb3I6ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGliZXJhdGUgbWlzdGFrZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFja19pbmZvLnN0YXJ0c3dpdGgoJ1N0YWNrIChtb3N0IHJlY2VudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhbGwgbGFzdCk6XG4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhY2tfaW5mby5lbmRzd2l0aCgnbG9nZ2luZy5leGNlcHRpb24oXCdmYWlsZWRcJywgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhY2tfaW5mbz1UcnVlKScpKQorCisKIGNsYXNzIExhc3RSZXNvcnRUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9sYXN0X3Jlc29ydChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoZSBsYXN0IHJlc29ydCBoYW5kbGVyCkBAIC0yMTk2LDYgKzI5NjksOCBAQAogICAgICAgICBvbGRfcmFpc2VfZXhjZXB0aW9ucyA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICByb290LmRlYnVnKCdUaGlzIHNob3VsZCBub3QgYXBwZWFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lvLmdldHZhbHVlKCksICcnKQogICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdUaGlzIGlzIHlvdXIgZmluYWwgY2hhbmNlIScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSFcbicpCiAgICAgICAgICAgICAjTm8gaGFuZGxlcnMgYW5kIG5vIGxhc3QgcmVzb3J0LCBzbyAnTm8gaGFuZGxlcnMnIG1lc3NhZ2UKQEAgLTIyMjAsNiArMjk5NSw1ODYgQEAKICAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gb2xkX3JhaXNlX2V4Y2VwdGlvbnMKIAogCitjbGFzcyBGYWtlSGFuZGxlcjoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpZGVudGlmaWVyLCBjYWxsZWQpOgorICAgICAgICBmb3IgbWV0aG9kIGluICgnYWNxdWlyZScsICdmbHVzaCcsICdjbG9zZScsICdyZWxlYXNlJyk6CisgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIG1ldGhvZCwgc2VsZi5yZWNvcmRfY2FsbChpZGVudGlmaWVyLCBtZXRob2QsIGNhbGxlZCkpCisKKyAgICBkZWYgcmVjb3JkX2NhbGwoc2VsZiwgaWRlbnRpZmllciwgbWV0aG9kX25hbWUsIGNhbGxlZCk6CisgICAgICAgIGRlZiBpbm5lcigpOgorICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgne30gLSB7fScuZm9ybWF0KGlkZW50aWZpZXIsIG1ldGhvZF9uYW1lKSkKKyAgICAgICAgcmV0dXJuIGlubmVyCisKKworY2xhc3MgUmVjb3JkaW5nSGFuZGxlcihsb2dnaW5nLk51bGxIYW5kbGVyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihSZWNvcmRpbmdIYW5kbGVyLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYucmVjb3JkcyA9IFtdCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIHJlY29yZCk6CisgICAgICAgICIiIktlZXAgdHJhY2sgb2YgYWxsIHRoZSBlbWl0dGVkIHJlY29yZHMuIiIiCisgICAgICAgIHNlbGYucmVjb3Jkcy5hcHBlbmQocmVjb3JkKQorCisKK2NsYXNzIFNodXRkb3duVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IHN1aXRlIGZvciB0aGUgc2h1dGRvd24gbWV0aG9kLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihTaHV0ZG93blRlc3QsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi5jYWxsZWQgPSBbXQorCisgICAgICAgIHJhaXNlX2V4Y2VwdGlvbnMgPSBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgbG9nZ2luZywgJ3JhaXNlRXhjZXB0aW9ucycsIHJhaXNlX2V4Y2VwdGlvbnMpCisKKyAgICBkZWYgcmFpc2VfZXJyb3Ioc2VsZiwgZXJyb3IpOgorICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgIHJhaXNlIGVycm9yKCkKKyAgICAgICAgcmV0dXJuIGlubmVyCisKKyAgICBkZWYgdGVzdF9ub19mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIGNyZWF0ZSBzb21lIGZha2UgaGFuZGxlcnMKKyAgICAgICAgaGFuZGxlcjAgPSBGYWtlSGFuZGxlcigwLCBzZWxmLmNhbGxlZCkKKyAgICAgICAgaGFuZGxlcjEgPSBGYWtlSGFuZGxlcigxLCBzZWxmLmNhbGxlZCkKKyAgICAgICAgaGFuZGxlcjIgPSBGYWtlSGFuZGxlcigyLCBzZWxmLmNhbGxlZCkKKworICAgICAgICAjIGNyZWF0ZSBsaXZlIHdlYWtyZWYgdG8gdGhvc2UgaGFuZGxlcnMKKyAgICAgICAgaGFuZGxlcnMgPSBtYXAobG9nZ2luZy53ZWFrcmVmLnJlZiwgW2hhbmRsZXIwLCBoYW5kbGVyMSwgaGFuZGxlcjJdKQorCisgICAgICAgIGxvZ2dpbmcuc2h1dGRvd24oaGFuZGxlckxpc3Q9bGlzdChoYW5kbGVycykpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbJzIgLSBhY3F1aXJlJywgJzIgLSBmbHVzaCcsICcyIC0gY2xvc2UnLCAnMiAtIHJlbGVhc2UnLAorICAgICAgICAgICAgICAgICAgICAnMSAtIGFjcXVpcmUnLCAnMSAtIGZsdXNoJywgJzEgLSBjbG9zZScsICcxIC0gcmVsZWFzZScsCisgICAgICAgICAgICAgICAgICAgICcwIC0gYWNxdWlyZScsICcwIC0gZmx1c2gnLCAnMCAtIGNsb3NlJywgJzAgLSByZWxlYXNlJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgc2VsZi5jYWxsZWQpCisKKyAgICBkZWYgX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZChzZWxmLCBtZXRob2QsIGVycm9yKToKKyAgICAgICAgaGFuZGxlciA9IEZha2VIYW5kbGVyKDAsIHNlbGYuY2FsbGVkKQorICAgICAgICBzZXRhdHRyKGhhbmRsZXIsIG1ldGhvZCwgc2VsZi5yYWlzZV9lcnJvcihlcnJvcikpCisgICAgICAgIGhhbmRsZXJzID0gW2xvZ2dpbmcud2Vha3JlZi5yZWYoaGFuZGxlcildCisKKyAgICAgICAgbG9nZ2luZy5zaHV0ZG93bihoYW5kbGVyTGlzdD1saXN0KGhhbmRsZXJzKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcwIC0gcmVsZWFzZScsIHNlbGYuY2FsbGVkWy0xXSkKKworICAgIGRlZiB0ZXN0X3dpdGhfaW9lcnJvcl9pbl9hY3F1aXJlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2FjcXVpcmUnLCBJT0Vycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9pb2Vycm9yX2luX2ZsdXNoKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2ZsdXNoJywgSU9FcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfaW9lcnJvcl9pbl9jbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdjbG9zZScsIElPRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX3ZhbHVlZXJyb3JfaW5fYWNxdWlyZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdhY3F1aXJlJywgVmFsdWVFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfdmFsdWVlcnJvcl9pbl9mbHVzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdmbHVzaCcsIFZhbHVlRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX3ZhbHVlZXJyb3JfaW5fY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnY2xvc2UnLCBWYWx1ZUVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9vdGhlcl9lcnJvcl9pbl9hY3F1aXJlX3dpdGhvdXRfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdhY3F1aXJlJywgSW5kZXhFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfb3RoZXJfZXJyb3JfaW5fZmx1c2hfd2l0aG91dF9yYWlzZShzZWxmKToKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2ZsdXNoJywgSW5kZXhFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfb3RoZXJfZXJyb3JfaW5fY2xvc2Vfd2l0aG91dF9yYWlzZShzZWxmKToKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2Nsb3NlJywgSW5kZXhFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfb3RoZXJfZXJyb3JfaW5fYWNxdWlyZV93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYWNxdWlyZScsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2ZsdXNoX3dpdGhfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdmbHVzaCcsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2Nsb3NlX3dpdGhfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdjbG9zZScsIEluZGV4RXJyb3IpCisKKworY2xhc3MgTW9kdWxlTGV2ZWxNaXNjVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IHN1aXRlIGZvciBzb21lIG1vZHVsZSBsZXZlbCBtZXRob2RzLiIiIgorCisgICAgZGVmIHRlc3RfZGlzYWJsZShzZWxmKToKKyAgICAgICAgb2xkX2Rpc2FibGUgPSBsb2dnaW5nLnJvb3QubWFuYWdlci5kaXNhYmxlCisgICAgICAgICMgY29uZmlybSBvdXIgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvbGRfZGlzYWJsZSwgMCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcuZGlzYWJsZSwgb2xkX2Rpc2FibGUpCisKKyAgICAgICAgbG9nZ2luZy5kaXNhYmxlKDgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcucm9vdC5tYW5hZ2VyLmRpc2FibGUsIDgzKQorCisgICAgZGVmIF90ZXN0X2xvZyhzZWxmLCBtZXRob2QsIGxldmVsPU5vbmUpOgorICAgICAgICBjYWxsZWQgPSBbXQorICAgICAgICBwYXRjaChzZWxmLCBsb2dnaW5nLCAnYmFzaWNDb25maWcnLAorICAgICAgICAgICAgICBsYW1iZGEgKmEsICoqa3c6IGNhbGxlZC5hcHBlbmQoKGEsIGt3KSkpCisKKyAgICAgICAgcmVjb3JkaW5nID0gUmVjb3JkaW5nSGFuZGxlcigpCisgICAgICAgIGxvZ2dpbmcucm9vdC5hZGRIYW5kbGVyKHJlY29yZGluZykKKworICAgICAgICBsb2dfbWV0aG9kID0gZ2V0YXR0cihsb2dnaW5nLCBtZXRob2QpCisgICAgICAgIGlmIGxldmVsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9nX21ldGhvZChsZXZlbCwgInRlc3QgbWU6ICVyIiwgcmVjb3JkaW5nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nX21ldGhvZCgidGVzdCBtZTogJXIiLCByZWNvcmRpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSByZWNvcmRpbmcucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5nZXRNZXNzYWdlKCksICJ0ZXN0IG1lOiAlciIgJSByZWNvcmRpbmcpCisKKyAgICAgICAgZXhwZWN0ZWRfbGV2ZWwgPSBsZXZlbCBpZiBsZXZlbCBpcyBub3QgTm9uZSBlbHNlIGdldGF0dHIobG9nZ2luZywgbWV0aG9kLnVwcGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmxldmVsbm8sIGV4cGVjdGVkX2xldmVsKQorCisgICAgICAgICMgYmFzaWNDb25maWcgd2FzIG5vdCBjYWxsZWQhCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbGVkLCBbXSkKKworICAgIGRlZiB0ZXN0X2xvZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2xvZycsIGxvZ2dpbmcuRVJST1IpCisKKyAgICBkZWYgdGVzdF9kZWJ1ZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2RlYnVnJykKKworICAgIGRlZiB0ZXN0X2luZm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdpbmZvJykKKworICAgIGRlZiB0ZXN0X3dhcm5pbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCd3YXJuaW5nJykKKworICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnZXJyb3InKQorCisgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdjcml0aWNhbCcpCisKKyAgICBkZWYgdGVzdF9zZXRfbG9nZ2VyX2NsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxvZ2dpbmcuc2V0TG9nZ2VyQ2xhc3MsIG9iamVjdCkKKworICAgICAgICBjbGFzcyBNeUxvZ2dlcihsb2dnaW5nLkxvZ2dlcik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbG9nZ2luZy5zZXRMb2dnZXJDbGFzcyhNeUxvZ2dlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLmdldExvZ2dlckNsYXNzKCksIE15TG9nZ2VyKQorCisgICAgICAgIGxvZ2dpbmcuc2V0TG9nZ2VyQ2xhc3MobG9nZ2luZy5Mb2dnZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5nZXRMb2dnZXJDbGFzcygpLCBsb2dnaW5nLkxvZ2dlcikKKworY2xhc3MgTG9nUmVjb3JkVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3Rfc3RyX3JlcChzZWxmKToKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgcyA9IHN0cihyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCc8TG9nUmVjb3JkOiAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZW5kc3dpdGgoJz4nKSkKKworICAgIGRlZiB0ZXN0X2RpY3RfYXJnKHNlbGYpOgorICAgICAgICBoID0gUmVjb3JkaW5nSGFuZGxlcigpCisgICAgICAgIHIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgICAgIHIuYWRkSGFuZGxlcihoKQorICAgICAgICBkID0geydsZXNzJyA6ICdtb3JlJyB9CisgICAgICAgIGxvZ2dpbmcud2FybmluZygnbGVzcyBpcyAlKGxlc3MpcycsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaC5yZWNvcmRzWzBdLmFyZ3MsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5yZWNvcmRzWzBdLm1lc3NhZ2UsICdsZXNzIGlzIG1vcmUnKQorICAgICAgICByLnJlbW92ZUhhbmRsZXIoaCkKKyAgICAgICAgaC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9tdWx0aXByb2Nlc3Npbmcoc2VsZik6CisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5wcm9jZXNzTmFtZSwgJ01haW5Qcm9jZXNzJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZyBhcyBtcAorICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5wcm9jZXNzTmFtZSwgbXAuY3VycmVudF9wcm9jZXNzKCkubmFtZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3Rfb3B0aW9uYWwoc2VsZik6CisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgIE5PVF9OT05FID0gc2VsZi5hc3NlcnRJc05vdE5vbmUKKyAgICAgICAgaWYgdGhyZWFkaW5nOgorICAgICAgICAgICAgTk9UX05PTkUoci50aHJlYWQpCisgICAgICAgICAgICBOT1RfTk9ORShyLnRocmVhZE5hbWUpCisgICAgICAgIE5PVF9OT05FKHIucHJvY2VzcykKKyAgICAgICAgTk9UX05PTkUoci5wcm9jZXNzTmFtZSkKKyAgICAgICAgbG9nX3RocmVhZHMgPSBsb2dnaW5nLmxvZ1RocmVhZHMKKyAgICAgICAgbG9nX3Byb2Nlc3NlcyA9IGxvZ2dpbmcubG9nUHJvY2Vzc2VzCisgICAgICAgIGxvZ19tdWx0aXByb2Nlc3NpbmcgPSBsb2dnaW5nLmxvZ011bHRpcHJvY2Vzc2luZworICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2dnaW5nLmxvZ1RocmVhZHMgPSBGYWxzZQorICAgICAgICAgICAgbG9nZ2luZy5sb2dQcm9jZXNzZXMgPSBGYWxzZQorICAgICAgICAgICAgbG9nZ2luZy5sb2dNdWx0aXByb2Nlc3NpbmcgPSBGYWxzZQorICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgICAgIE5PTkUgPSBzZWxmLmFzc2VydElzTm9uZQorICAgICAgICAgICAgTk9ORShyLnRocmVhZCkKKyAgICAgICAgICAgIE5PTkUoci50aHJlYWROYW1lKQorICAgICAgICAgICAgTk9ORShyLnByb2Nlc3MpCisgICAgICAgICAgICBOT05FKHIucHJvY2Vzc05hbWUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsb2dnaW5nLmxvZ1RocmVhZHMgPSBsb2dfdGhyZWFkcworICAgICAgICAgICAgbG9nZ2luZy5sb2dQcm9jZXNzZXMgPSBsb2dfcHJvY2Vzc2VzCisgICAgICAgICAgICBsb2dnaW5nLmxvZ011bHRpcHJvY2Vzc2luZyA9IGxvZ19tdWx0aXByb2Nlc3NpbmcKKworY2xhc3MgQmFzaWNDb25maWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3Qgc3VpdGUgZm9yIGxvZ2dpbmcuYmFzaWNDb25maWcuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKEJhc2ljQ29uZmlnVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLmhhbmRsZXJzID0gbG9nZ2luZy5yb290LmhhbmRsZXJzCisgICAgICAgIHNlbGYuc2F2ZWRfaGFuZGxlcnMgPSBsb2dnaW5nLl9oYW5kbGVycy5jb3B5KCkKKyAgICAgICAgc2VsZi5zYXZlZF9oYW5kbGVyX2xpc3QgPSBsb2dnaW5nLl9oYW5kbGVyTGlzdFs6XQorICAgICAgICBzZWxmLm9yaWdpbmFsX2xvZ2dpbmdfbGV2ZWwgPSBsb2dnaW5nLnJvb3QubGV2ZWwKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuY2xlYW51cCkKKyAgICAgICAgbG9nZ2luZy5yb290LmhhbmRsZXJzID0gW10KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgZm9yIGggaW4gbG9nZ2luZy5yb290LmhhbmRsZXJzWzpdOgorICAgICAgICAgICAgbG9nZ2luZy5yb290LnJlbW92ZUhhbmRsZXIoaCkKKyAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICBzdXBlcihCYXNpY0NvbmZpZ1Rlc3QsIHNlbGYpLnRlYXJEb3duKCkKKworICAgIGRlZiBjbGVhbnVwKHNlbGYpOgorICAgICAgICBzZXRhdHRyKGxvZ2dpbmcucm9vdCwgJ2hhbmRsZXJzJywgc2VsZi5oYW5kbGVycykKKyAgICAgICAgbG9nZ2luZy5faGFuZGxlcnMuY2xlYXIoKQorICAgICAgICBsb2dnaW5nLl9oYW5kbGVycy51cGRhdGUoc2VsZi5zYXZlZF9oYW5kbGVycykKKyAgICAgICAgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0gPSBzZWxmLnNhdmVkX2hhbmRsZXJfbGlzdAorICAgICAgICBsb2dnaW5nLnJvb3QubGV2ZWwgPSBzZWxmLm9yaWdpbmFsX2xvZ2dpbmdfbGV2ZWwKKworICAgIGRlZiB0ZXN0X25vX2t3YXJncyhzZWxmKToKKyAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygpCisKKyAgICAgICAgIyBoYW5kbGVyIGRlZmF1bHRzIHRvIGEgU3RyZWFtSGFuZGxlciB0byBzeXMuc3RkZXJyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxvZ2dpbmcucm9vdC5oYW5kbGVycyksIDEpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGhhbmRsZXIsIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGVyLnN0cmVhbSwgc3lzLnN0ZGVycikKKworICAgICAgICBmb3JtYXR0ZXIgPSBoYW5kbGVyLmZvcm1hdHRlcgorICAgICAgICAjIGZvcm1hdCBkZWZhdWx0cyB0byBsb2dnaW5nLkJBU0lDX0ZPUk1BVAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdHRlci5fc3R5bGUuX2ZtdCwgbG9nZ2luZy5CQVNJQ19GT1JNQVQpCisgICAgICAgICMgZGF0ZWZtdCBkZWZhdWx0cyB0byBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZvcm1hdHRlci5kYXRlZm10KQorICAgICAgICAjIHN0eWxlIGRlZmF1bHRzIHRvICUKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZvcm1hdHRlci5fc3R5bGUsIGxvZ2dpbmcuUGVyY2VudFN0eWxlKQorCisgICAgICAgICMgbGV2ZWwgaXMgbm90IGV4cGxpY2l0bHkgc2V0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5yb290LmxldmVsLCBzZWxmLm9yaWdpbmFsX2xvZ2dpbmdfbGV2ZWwpCisKKyAgICBkZWYgdGVzdF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhmaWxlbmFtZT0ndGVzdC5sb2cnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxvZ2dpbmcucm9vdC5oYW5kbGVycyksIDEpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGhhbmRsZXIsIGxvZ2dpbmcuRmlsZUhhbmRsZXIpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBsb2dnaW5nLkZpbGVIYW5kbGVyKCd0ZXN0LmxvZycsICdhJykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGV4cGVjdGVkLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIuc3RyZWFtLm1vZGUsIGV4cGVjdGVkLnN0cmVhbS5tb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIuc3RyZWFtLm5hbWUsIGV4cGVjdGVkLnN0cmVhbS5uYW1lKQorCisgICAgZGVmIHRlc3RfZmlsZW1vZGUoc2VsZik6CisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoZmlsZW5hbWU9J3Rlc3QubG9nJywgZmlsZW1vZGU9J3diJykKKworICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdCisgICAgICAgIGV4cGVjdGVkID0gbG9nZ2luZy5GaWxlSGFuZGxlcigndGVzdC5sb2cnLCAnd2InKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoZXhwZWN0ZWQuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5zdHJlYW0ubW9kZSwgZXhwZWN0ZWQuc3RyZWFtLm1vZGUpCisKKyAgICBkZWYgdGVzdF9zdHJlYW0oc2VsZik6CisgICAgICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN0cmVhbS5jbG9zZSkKKyAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhzdHJlYW09c3RyZWFtKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxvZ2dpbmcucm9vdC5oYW5kbGVycyksIDEpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGhhbmRsZXIsIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGVyLnN0cmVhbSwgc3RyZWFtKQorCisgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYpOgorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGZvcm1hdD0nZm9vJykKKworICAgICAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0uZm9ybWF0dGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0dGVyLl9zdHlsZS5fZm10LCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2RhdGVmbXQoc2VsZik6CisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoZGF0ZWZtdD0nYmFyJykKKworICAgICAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0uZm9ybWF0dGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0dGVyLmRhdGVmbXQsICdiYXInKQorCisgICAgZGVmIHRlc3Rfc3R5bGUoc2VsZik6CisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoc3R5bGU9JyQnKQorCisgICAgICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcucm9vdC5oYW5kbGVyc1swXS5mb3JtYXR0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZvcm1hdHRlci5fc3R5bGUsIGxvZ2dpbmcuU3RyaW5nVGVtcGxhdGVTdHlsZSkKKworICAgIGRlZiB0ZXN0X2xldmVsKHNlbGYpOgorICAgICAgICBvbGRfbGV2ZWwgPSBsb2dnaW5nLnJvb3QubGV2ZWwKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcucm9vdC5zZXRMZXZlbCwgb2xkX2xldmVsKQorCisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9NTcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5yb290LmxldmVsLCA1NykKKyAgICAgICAgIyBUZXN0IHRoYXQgc2Vjb25kIGNhbGwgaGFzIG5vIGVmZmVjdAorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPTU4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcucm9vdC5sZXZlbCwgNTcpCisKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGUoc2VsZik6CisgICAgICAgIGFzc2VydFJhaXNlcyA9IHNlbGYuYXNzZXJ0UmFpc2VzCisgICAgICAgIGhhbmRsZXJzID0gW2xvZ2dpbmcuU3RyZWFtSGFuZGxlcigpXQorICAgICAgICBzdHJlYW0gPSBzeXMuc3RkZXJyCisgICAgICAgIGFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmJhc2ljQ29uZmlnLCBmaWxlbmFtZT0ndGVzdC5sb2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW09c3RyZWFtKQorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5iYXNpY0NvbmZpZywgZmlsZW5hbWU9J3Rlc3QubG9nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM9aGFuZGxlcnMpCisgICAgICAgIGFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmJhc2ljQ29uZmlnLCBzdHJlYW09c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVycz1oYW5kbGVycykKKworICAgIGRlZiB0ZXN0X2hhbmRsZXJzKHNlbGYpOgorICAgICAgICBoYW5kbGVycyA9IFsKKyAgICAgICAgICAgIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpLAorICAgICAgICAgICAgbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRvdXQpLAorICAgICAgICAgICAgbG9nZ2luZy5TdHJlYW1IYW5kbGVyKCksCisgICAgICAgIF0KKyAgICAgICAgZiA9IGxvZ2dpbmcuRm9ybWF0dGVyKCkKKyAgICAgICAgaGFuZGxlcnNbMl0uc2V0Rm9ybWF0dGVyKGYpCisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoaGFuZGxlcnM9aGFuZGxlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaGFuZGxlcnNbMF0sIGxvZ2dpbmcucm9vdC5oYW5kbGVyc1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1sxXSwgbG9nZ2luZy5yb290LmhhbmRsZXJzWzFdKQorICAgICAgICBzZWxmLmFzc2VydElzKGhhbmRsZXJzWzJdLCBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGhhbmRsZXJzWzBdLmZvcm1hdHRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaGFuZGxlcnNbMV0uZm9ybWF0dGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhhbmRsZXJzWzJdLmZvcm1hdHRlciwgZikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1swXS5mb3JtYXR0ZXIsIGhhbmRsZXJzWzFdLmZvcm1hdHRlcikKKworICAgIGRlZiBfdGVzdF9sb2coc2VsZiwgbWV0aG9kLCBsZXZlbD1Ob25lKToKKyAgICAgICAgIyBsb2dnaW5nLnJvb3QgaGFzIG5vIGhhbmRsZXJzIHNvIGJhc2ljQ29uZmlnIHNob3VsZCBiZSBjYWxsZWQKKyAgICAgICAgY2FsbGVkID0gW10KKworICAgICAgICBvbGRfYmFzaWNfY29uZmlnID0gbG9nZ2luZy5iYXNpY0NvbmZpZworICAgICAgICBkZWYgbXlfYmFzaWNfY29uZmlnKCphLCAqKmt3KToKKyAgICAgICAgICAgIG9sZF9iYXNpY19jb25maWcoKQorICAgICAgICAgICAgb2xkX2xldmVsID0gbG9nZ2luZy5yb290LmxldmVsCisgICAgICAgICAgICBsb2dnaW5nLnJvb3Quc2V0TGV2ZWwoMTAwKSAgIyBhdm9pZCBoYXZpbmcgbWVzc2FnZXMgaW4gc3RkZXJyCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAobG9nZ2luZy5yb290LnNldExldmVsLCBvbGRfbGV2ZWwpCisgICAgICAgICAgICBjYWxsZWQuYXBwZW5kKChhLCBrdykpCisKKyAgICAgICAgcGF0Y2goc2VsZiwgbG9nZ2luZywgJ2Jhc2ljQ29uZmlnJywgbXlfYmFzaWNfY29uZmlnKQorCisgICAgICAgIGxvZ19tZXRob2QgPSBnZXRhdHRyKGxvZ2dpbmcsIG1ldGhvZCkKKyAgICAgICAgaWYgbGV2ZWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsb2dfbWV0aG9kKGxldmVsLCAidGVzdCBtZSIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dfbWV0aG9kKCJ0ZXN0IG1lIikKKworICAgICAgICAjIGJhc2ljQ29uZmlnIHdhcyBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsZWQsIFsoKCksIHt9KV0pCisKKyAgICBkZWYgdGVzdF9sb2coc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdsb2cnLCBsb2dnaW5nLldBUk5JTkcpCisKKyAgICBkZWYgdGVzdF9kZWJ1ZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2RlYnVnJykKKworICAgIGRlZiB0ZXN0X2luZm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdpbmZvJykKKworICAgIGRlZiB0ZXN0X3dhcm5pbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCd3YXJuaW5nJykKKworICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnZXJyb3InKQorCisgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdjcml0aWNhbCcpCisKKworY2xhc3MgTG9nZ2VyQWRhcHRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihMb2dnZXJBZGFwdGVyVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBvbGRfaGFuZGxlcl9saXN0ID0gbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KKworICAgICAgICBzZWxmLnJlY29yZGluZyA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcucm9vdAorICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlciwgc2VsZi5yZWNvcmRpbmcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnJlY29yZGluZy5jbG9zZSkKKworICAgICAgICBkZWYgY2xlYW51cCgpOgorICAgICAgICAgICAgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0gPSBvbGRfaGFuZGxlcl9saXN0CisKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLnNodXRkb3duKQorICAgICAgICBzZWxmLmFkYXB0ZXIgPSBsb2dnaW5nLkxvZ2dlckFkYXB0ZXIobG9nZ2VyPXNlbGYubG9nZ2VyLCBleHRyYT1Ob25lKQorCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBtc2cgPSAndGVzdGluZyBleGNlcHRpb246ICVyJworICAgICAgICBleGMgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjID0gZQorICAgICAgICAgICAgc2VsZi5hZGFwdGVyLmV4Y2VwdGlvbihtc2csIHNlbGYucmVjb3JkaW5nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYucmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSBzZWxmLnJlY29yZGluZy5yZWNvcmRzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmxldmVsbm8sIGxvZ2dpbmcuRVJST1IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5hcmdzLCAoc2VsZi5yZWNvcmRpbmcsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZXhjX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgKGV4Yy5fX2NsYXNzX18sIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pKQorCisgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CisgICAgICAgIG1zZyA9ICdjcml0aWNhbCB0ZXN0ISAlcicKKyAgICAgICAgc2VsZi5hZGFwdGVyLmNyaXRpY2FsKG1zZywgc2VsZi5yZWNvcmRpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5yZWNvcmRpbmcucmVjb3JkcyksIDEpCisgICAgICAgIHJlY29yZCA9IHNlbGYucmVjb3JkaW5nLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubGV2ZWxubywgbG9nZ2luZy5DUklUSUNBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubXNnLCBtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmFyZ3MsIChzZWxmLnJlY29yZGluZywpKQorCisgICAgZGVmIHRlc3RfaXNfZW5hYmxlZF9mb3Ioc2VsZik6CisgICAgICAgIG9sZF9kaXNhYmxlID0gc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUKKyAgICAgICAgc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUgPSAzMworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLCAnZGlzYWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGlzYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmFkYXB0ZXIuaXNFbmFibGVkRm9yKDMyKSkKKworICAgIGRlZiB0ZXN0X2hhc19oYW5kbGVycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYWRhcHRlci5oYXNIYW5kbGVycygpKQorCisgICAgICAgIGZvciBoYW5kbGVyIGluIHNlbGYubG9nZ2VyLmhhbmRsZXJzOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmFkYXB0ZXIuaGFzSGFuZGxlcnMoKSkKKworCitjbGFzcyBMb2dnZXJUZXN0KEJhc2VUZXN0KToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoTG9nZ2VyVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLnJlY29yZGluZyA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuTG9nZ2VyKG5hbWU9J2JsYWgnKQorICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlciwgc2VsZi5yZWNvcmRpbmcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnJlY29yZGluZy5jbG9zZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcuc2h1dGRvd24pCisKKyAgICBkZWYgdGVzdF9zZXRfaW52YWxpZF9sZXZlbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvZ2dlci5zZXRMZXZlbCwgb2JqZWN0KCkpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIG1zZyA9ICd0ZXN0aW5nIGV4Y2VwdGlvbjogJXInCisgICAgICAgIGV4YyA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBleGMgPSBlCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5leGNlcHRpb24obXNnLCBzZWxmLnJlY29yZGluZykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnJlY29yZGluZy5yZWNvcmRzKSwgMSkKKyAgICAgICAgcmVjb3JkID0gc2VsZi5yZWNvcmRpbmcucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5sZXZlbG5vLCBsb2dnaW5nLkVSUk9SKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5tc2csIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuYXJncywgKHNlbGYucmVjb3JkaW5nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKKworICAgIGRlZiB0ZXN0X2xvZ19pbnZhbGlkX2xldmVsX3dpdGhfcmFpc2Uoc2VsZik6CisgICAgICAgIG9sZF9yYWlzZSA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBsb2dnaW5nLCAncmFpc2VFeGVjcHRpb25zJywgb2xkX3JhaXNlKQorCisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9nZ2VyLmxvZywgJzEwJywgJ3Rlc3QgbWVzc2FnZScpCisKKyAgICBkZWYgdGVzdF9sb2dfaW52YWxpZF9sZXZlbF9ub19yYWlzZShzZWxmKToKKyAgICAgICAgb2xkX3JhaXNlID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIGxvZ2dpbmcsICdyYWlzZUV4ZWNwdGlvbnMnLCBvbGRfcmFpc2UpCisKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQorICAgICAgICBzZWxmLmxvZ2dlci5sb2coJzEwJywgJ3Rlc3QgbWVzc2FnZScpICAjIG5vIGV4Y2VwdGlvbiBoYXBwZW5zCisKKyAgICBkZWYgdGVzdF9maW5kX2NhbGxlcl93aXRoX3N0YWNrX2luZm8oc2VsZik6CisgICAgICAgIGNhbGxlZCA9IFtdCisgICAgICAgIHBhdGNoKHNlbGYsIGxvZ2dpbmcudHJhY2ViYWNrLCAncHJpbnRfc3RhY2snLAorICAgICAgICAgICAgICBsYW1iZGEgZiwgZmlsZTogY2FsbGVkLmFwcGVuZChmaWxlLmdldHZhbHVlKCkpKQorCisgICAgICAgIHNlbGYubG9nZ2VyLmZpbmRDYWxsZXIoc3RhY2tfaW5mbz1UcnVlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNhbGxlZCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1N0YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJywgY2FsbGVkWzBdKQorCisgICAgZGVmIHRlc3RfbWFrZV9yZWNvcmRfd2l0aF9leHRyYV9vdmVyd3JpdGUoc2VsZik6CisgICAgICAgIG5hbWUgPSAnbXkgcmVjb3JkJworICAgICAgICBsZXZlbCA9IDEzCisgICAgICAgIGZuID0gbG5vID0gbXNnID0gYXJncyA9IGV4Y19pbmZvID0gZnVuYyA9IHNpbmZvID0gTm9uZQorICAgICAgICBydiA9IGxvZ2dpbmcuX2xvZ1JlY29yZEZhY3RvcnkobmFtZSwgbGV2ZWwsIGZuLCBsbm8sIG1zZywgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvLCBmdW5jLCBzaW5mbykKKworICAgICAgICBmb3Iga2V5IGluICgnbWVzc2FnZScsICdhc2N0aW1lJykgKyB0dXBsZShydi5fX2RpY3RfXy5rZXlzKCkpOgorICAgICAgICAgICAgZXh0cmEgPSB7a2V5OiAnc29tZSB2YWx1ZSd9CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2VsZi5sb2dnZXIubWFrZVJlY29yZCwgbmFtZSwgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiwgbG5vLCBtc2csIGFyZ3MsIGV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsIHNpbmZvPXNpbmZvKQorCisgICAgZGVmIHRlc3RfbWFrZV9yZWNvcmRfd2l0aF9leHRyYV9ub19vdmVyd3JpdGUoc2VsZik6CisgICAgICAgIG5hbWUgPSAnbXkgcmVjb3JkJworICAgICAgICBsZXZlbCA9IDEzCisgICAgICAgIGZuID0gbG5vID0gbXNnID0gYXJncyA9IGV4Y19pbmZvID0gZnVuYyA9IHNpbmZvID0gTm9uZQorICAgICAgICBleHRyYSA9IHsndmFsaWRfa2V5JzogJ3NvbWUgdmFsdWUnfQorICAgICAgICByZXN1bHQgPSBzZWxmLmxvZ2dlci5tYWtlUmVjb3JkKG5hbWUsIGxldmVsLCBmbiwgbG5vLCBtc2csIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjX2luZm8sIGV4dHJhPWV4dHJhLCBzaW5mbz1zaW5mbykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndmFsaWRfa2V5JywgcmVzdWx0Ll9fZGljdF9fKQorCisgICAgZGVmIHRlc3RfaGFzX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKworICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvZ2dlci5oYXNIYW5kbGVycygpKQorCisgICAgZGVmIHRlc3RfaGFzX2hhbmRsZXJzX25vX3Byb3BhZ2F0ZShzZWxmKToKKyAgICAgICAgY2hpbGRfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2JsYWguY2hpbGQnKQorICAgICAgICBjaGlsZF9sb2dnZXIucHJvcGFnYXRlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjaGlsZF9sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKworICAgIGRlZiB0ZXN0X2lzX2VuYWJsZWRfZm9yKHNlbGYpOgorICAgICAgICBvbGRfZGlzYWJsZSA9IHNlbGYubG9nZ2VyLm1hbmFnZXIuZGlzYWJsZQorICAgICAgICBzZWxmLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUgPSAyMworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgc2VsZi5sb2dnZXIubWFuYWdlciwgJ2Rpc2FibGUnLCBvbGRfZGlzYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvZ2dlci5pc0VuYWJsZWRGb3IoMjIpKQorCisgICAgZGVmIHRlc3Rfcm9vdF9sb2dnZXJfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgcm9vdCA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJycpKQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28nKS5yb290KQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28uYmFyJykucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLmdldExvZ2dlcignZm9vJykucGFyZW50KQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJ1wwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJ2Zvby5iYXInKS5wYXJlbnQpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX25hbWVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxvZ2dpbmcuZ2V0TG9nZ2VyLCBhbnkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbG9nZ2luZy5nZXRMb2dnZXIsIGInZm9vJykKKworCiBjbGFzcyBCYXNlRmlsZVRlc3QoQmFzZVRlc3QpOgogICAgICJCYXNlIGNsYXNzIGZvciBoYW5kbGVyIHRlc3RzIHRoYXQgd3JpdGUgbG9nIGZpbGVzIgogCkBAIC0yMjM5LDEwICszNTk0LDIxIEBACiAgICAgZGVmIGFzc2VydExvZ0ZpbGUoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAiQXNzZXJ0IGEgbG9nIGZpbGUgaXMgdGhlcmUgYW5kIHJlZ2lzdGVyIGl0IGZvciBkZWxldGlvbiIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iTG9nIGZpbGUgJXIgZG9lcyBub3QgZXhpc3QiKQorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJMb2cgZmlsZSAlciBkb2VzIG5vdCBleGlzdCIgJSBmaWxlbmFtZSkKICAgICAgICAgc2VsZi5ybWZpbGVzLmFwcGVuZChmaWxlbmFtZSkKIAogCitjbGFzcyBGaWxlSGFuZGxlclRlc3QoQmFzZUZpbGVUZXN0KToKKyAgICBkZWYgdGVzdF9kZWxheShzZWxmKToKKyAgICAgICAgb3MudW5saW5rKHNlbGYuZm4pCisgICAgICAgIGZoID0gbG9nZ2luZy5GaWxlSGFuZGxlcihzZWxmLmZuLCBkZWxheT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaC5zdHJlYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi5mbikpCisgICAgICAgIGZoLmhhbmRsZShsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaC5zdHJlYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzZWxmLmZuKSkKKyAgICAgICAgZmguY2xvc2UoKQorCiBjbGFzcyBSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdChCYXNlRmlsZVRlc3QpOgogICAgIGRlZiBuZXh0X3JlYyhzZWxmKToKICAgICAgICAgcmV0dXJuIGxvZ2dpbmcuTG9nUmVjb3JkKCduJywgbG9nZ2luZy5ERUJVRywgJ3AnLCAxLApAQCAtMjI2OCwyMCArMzYzNCwxMTcgQEAKICAgICAgICAgcmguY2xvc2UoKQogCiAgICAgZGVmIHRlc3Rfcm9sbG92ZXJfZmlsZW5hbWVzKHNlbGYpOgorICAgICAgICBkZWYgbmFtZXIobmFtZSk6CisgICAgICAgICAgICByZXR1cm4gbmFtZSArICIudGVzdCIKICAgICAgICAgcmggPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIoCiAgICAgICAgICAgICBzZWxmLmZuLCBiYWNrdXBDb3VudD0yLCBtYXhCeXRlcz0xKQorICAgICAgICByaC5uYW1lciA9IG5hbWVyCiAgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQogICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbikKICAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuICsgIi4xIikKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKG5hbWVyKHNlbGYuZm4gKyAiLjEiKSkKICAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuICsgIi4yIikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhzZWxmLmZuICsgIi4zIikpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShuYW1lcihzZWxmLmZuICsgIi4yIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMobmFtZXIoc2VsZi5mbiArICIuMyIpKSkKKyAgICAgICAgcmguY2xvc2UoKQorCisgICAgQHJlcXVpcmVzX3psaWIKKyAgICBkZWYgdGVzdF9yb3RhdG9yKHNlbGYpOgorICAgICAgICBkZWYgbmFtZXIobmFtZSk6CisgICAgICAgICAgICByZXR1cm4gbmFtZSArICIuZ3oiCisKKyAgICAgICAgZGVmIHJvdGF0b3Ioc291cmNlLCBkZXN0KToKKyAgICAgICAgICAgIHdpdGggb3Blbihzb3VyY2UsICJyYiIpIGFzIHNmOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZi5yZWFkKCkKKyAgICAgICAgICAgICAgICBjb21wcmVzc2VkID0gemxpYi5jb21wcmVzcyhkYXRhLCA5KQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihkZXN0LCAid2IiKSBhcyBkZjoKKyAgICAgICAgICAgICAgICAgICAgZGYud3JpdGUoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIG9zLnJlbW92ZShzb3VyY2UpCisKKyAgICAgICAgcmggPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIoCisgICAgICAgICAgICBzZWxmLmZuLCBiYWNrdXBDb3VudD0yLCBtYXhCeXRlcz0xKQorICAgICAgICByaC5yb3RhdG9yID0gcm90YXRvcgorICAgICAgICByaC5uYW1lciA9IG5hbWVyCisgICAgICAgIG0xID0gc2VsZi5uZXh0X3JlYygpCisgICAgICAgIHJoLmVtaXQobTEpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuKQorICAgICAgICBtMiA9IHNlbGYubmV4dF9yZWMoKQorICAgICAgICByaC5lbWl0KG0yKQorICAgICAgICBmbiA9IG5hbWVyKHNlbGYuZm4gKyAiLjEiKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoZm4pCisgICAgICAgIG5ld2xpbmUgPSBvcy5saW5lc2VwCisgICAgICAgIHdpdGggb3BlbihmbiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSBmLnJlYWQoKQorICAgICAgICAgICAgZGF0YSA9IHpsaWIuZGVjb21wcmVzcyhjb21wcmVzc2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZSgiYXNjaWkiKSwgbTEubXNnICsgbmV3bGluZSkKKyAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCisgICAgICAgIGZuID0gbmFtZXIoc2VsZi5mbiArICIuMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShmbikKKyAgICAgICAgd2l0aCBvcGVuKGZuLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGYucmVhZCgpCisgICAgICAgICAgICBkYXRhID0gemxpYi5kZWNvbXByZXNzKGNvbXByZXNzZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCJhc2NpaSIpLCBtMS5tc2cgKyBuZXdsaW5lKQorICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKKyAgICAgICAgZm4gPSBuYW1lcihzZWxmLmZuICsgIi4yIikKKyAgICAgICAgd2l0aCBvcGVuKGZuLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGYucmVhZCgpCisgICAgICAgICAgICBkYXRhID0gemxpYi5kZWNvbXByZXNzKGNvbXByZXNzZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCJhc2NpaSIpLCBtMi5tc2cgKyBuZXdsaW5lKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWVyKHNlbGYuZm4gKyAiLjMiKSkpCiAgICAgICAgIHJoLmNsb3NlKCkKIAogY2xhc3MgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdChCYXNlRmlsZVRlc3QpOgotICAgICMgdGVzdCBtZXRob2RzIGFkZGVkIGJlbG93Ci0gICAgcGFzcworICAgICMgb3RoZXIgdGVzdCBtZXRob2RzIGFkZGVkIGJlbG93CisgICAgZGVmIHRlc3Rfcm9sbG92ZXIoc2VsZik6CisgICAgICAgIGZoID0gbG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIoc2VsZi5mbiwgJ1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2t1cENvdW50PTEpCisgICAgICAgIGZtdCA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKGFzY3RpbWUpcyAlKG1lc3NhZ2UpcycpCisgICAgICAgIGZoLnNldEZvcm1hdHRlcihmbXQpCisgICAgICAgIHIxID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ3Rlc3RpbmcgLSBpbml0aWFsJ30pCisgICAgICAgIGZoLmVtaXQocjEpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuKQorICAgICAgICB0aW1lLnNsZWVwKDEuMSkgICAgIyBhIGxpdHRsZSBvdmVyIGEgc2Vjb25kIC4uLgorICAgICAgICByMiA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0ZXN0aW5nIC0gYWZ0ZXIgZGVsYXknfSkKKyAgICAgICAgZmguZW1pdChyMikKKyAgICAgICAgZmguY2xvc2UoKQorICAgICAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIHNob3VsZCBoYXZlIGEgcmVjZW50IHJvdGF0ZWQgZmlsZSB3aGljaCB3ZQorICAgICAgICAjIGNhbiB0ZXN0IGZvciB0aGUgZXhpc3RlbmNlIG9mLiBIb3dldmVyLCBpbiBwcmFjdGljZSwgb24gc29tZQorICAgICAgICAjIG1hY2hpbmVzIHdoaWNoIHJ1biByZWFsbHkgc2xvd2x5LCB3ZSBkb24ndCBrbm93IGhvdyBmYXIgYmFjaworICAgICAgICAjIGluIHRpbWUgdG8gZ28gdG8gbG9vayBmb3IgdGhlIGxvZyBmaWxlLiBTbywgd2UgZ28gYmFjayBhIGZhaXIKKyAgICAgICAgIyBiaXQsIGFuZCBzdG9wIGFzIHNvb24gYXMgd2Ugc2VlIGEgcm90YXRlZCBmaWxlLiBJbiB0aGVvcnkgdGhpcworICAgICAgICAjIGNvdWxkIG9mIGNvdXJzZSBzdGlsbCBmYWlsLCBidXQgdGhlIGNoYW5jZXMgYXJlIGxvd2VyLgorICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgIG5vdyA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCisgICAgICAgIEdPX0JBQ0sgPSA1ICogNjAgIyBzZWNvbmRzCisgICAgICAgIGZvciBzZWNzIGluIHJhbmdlKEdPX0JBQ0spOgorICAgICAgICAgICAgcHJldiA9IG5vdyAtIGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPXNlY3MpCisgICAgICAgICAgICBmbiA9IHNlbGYuZm4gKyBwcmV2LnN0cmZ0aW1lKCIuJVktJW0tJWRfJUgtJU0tJVMiKQorICAgICAgICAgICAgZm91bmQgPSBvcy5wYXRoLmV4aXN0cyhmbikKKyAgICAgICAgICAgIGlmIGZvdW5kOgorICAgICAgICAgICAgICAgIHNlbGYucm1maWxlcy5hcHBlbmQoZm4pCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgbXNnID0gJ05vIHJvdGF0ZWQgZmlsZXMgZm91bmQsIHdlbnQgYmFjayAlZCBzZWNvbmRzJyAlIEdPX0JBQ0sKKyAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgI3ByaW50IGFkZGl0aW9uYWwgZGlhZ25vc3RpY3MKKyAgICAgICAgICAgIGRuLCBmbiA9IG9zLnBhdGguc3BsaXQoc2VsZi5mbikKKyAgICAgICAgICAgIGZpbGVzID0gW2YgZm9yIGYgaW4gb3MubGlzdGRpcihkbikgaWYgZi5zdGFydHN3aXRoKGZuKV0KKyAgICAgICAgICAgIHByaW50KCdUZXN0IHRpbWU6ICVzJyAlIG5vdy5zdHJmdGltZSgiJVktJW0tJWQgJUgtJU0tJVMiKSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgcHJpbnQoJ1RoZSBvbmx5IG1hdGNoaW5nIGZpbGVzIGFyZTogJXMnICUgZmlsZXMsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIHByaW50KCdDb250ZW50cyBvZiAlczonICUgZikKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRuLCBmKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAncicpIGFzIHRmOgorICAgICAgICAgICAgICAgICAgICBwcmludCh0Zi5yZWFkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgbXNnPW1zZykKKworICAgIGRlZiB0ZXN0X2ludmFsaWQoc2VsZik6CisgICAgICAgIGFzc2VydFJhaXNlcyA9IHNlbGYuYXNzZXJ0UmFpc2VzCisgICAgICAgIGFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm4sICdYJywgZGVsYXk9VHJ1ZSkKKyAgICAgICAgYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5mbiwgJ1cnLCBkZWxheT1UcnVlKQorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmZuLCAnVzcnLCBkZWxheT1UcnVlKQogCiBkZWYgc2VjcygqKmt3KToKICAgICByZXR1cm4gZGF0ZXRpbWUudGltZWRlbHRhKCoqa3cpIC8vIGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPTEpCkBAIC0yMzI5LDQzICszNzkyLDM0IEBACiAgICAgICAgIHJoLmNsb3NlKCkKICAgICBzZXRhdHRyKFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlclRlc3QsICJ0ZXN0X2NvbXB1dGVfcm9sbG92ZXJfJXMiICUgd2hlbiwgdGVzdF9jb21wdXRlX3JvbGxvdmVyKQogCi1jbGFzcyBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gJ250JywgJ1dhdGNoZWRGaWxlSGFuZGxlciBub3QgYXBwcm9wcmlhdGUgZm9yIFdpbmRvd3MuJykKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQotICAgIGRlZiB0ZXN0X3JhY2Uoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzE0NjMyIHJlZmVycy4KLSAgICAgICAgZGVmIHJlbW92ZV9sb29wKGZuYW1lLCB0cmllcyk6Ci0gICAgICAgICAgICBmb3IgXyBpbiByYW5nZSh0cmllcyk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm5hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDA0ICogcmFuZG9tLnJhbmRpbnQoMCwgNCkpCi0KLSAgICAgICAgZGVsX2NvdW50ID0gNTAwCi0gICAgICAgIGxvZ19jb3VudCA9IDUwMAotCi0gICAgICAgIGZvciBkZWxheSBpbiAoRmFsc2UsIFRydWUpOgotICAgICAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgnLmxvZycsICd0ZXN0X2xvZ2dpbmctMy0nKQotICAgICAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAgICAgICByZW1vdmVyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cmVtb3ZlX2xvb3AsIGFyZ3M9KGZuLCBkZWxfY291bnQpKQotICAgICAgICAgICAgcmVtb3Zlci5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICByZW1vdmVyLnN0YXJ0KCkKLSAgICAgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLldhdGNoZWRGaWxlSGFuZGxlcihmbiwgZGVsYXk9ZGVsYXkpCi0gICAgICAgICAgICBmID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUoYXNjdGltZSlzOiAlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcycpCi0gICAgICAgICAgICBoLnNldEZvcm1hdHRlcihmKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKGxvZ19jb3VudCk6Ci0gICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMDUpCi0gICAgICAgICAgICAgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAndGVzdGluZycgfSkKLSAgICAgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcmVtb3Zlci5qb2luKCkKLSAgICAgICAgICAgICAgICBoLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbik6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKLQorQHVuaXR0ZXN0LnNraXBVbmxlc3Mod2luMzJldnRsb2csICd3aW4zMmV2dGxvZy93aW4zMmV2dGxvZ3V0aWwgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgTlRFdmVudExvZ0hhbmRsZXJUZXN0KEJhc2VUZXN0KToKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgbG9ndHlwZSA9ICdBcHBsaWNhdGlvbicKKyAgICAgICAgZWxoID0gd2luMzJldnRsb2cuT3BlbkV2ZW50TG9nKE5vbmUsIGxvZ3R5cGUpCisgICAgICAgIG51bV9yZWNzID0gd2luMzJldnRsb2cuR2V0TnVtYmVyT2ZFdmVudExvZ1JlY29yZHMoZWxoKQorICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5OVEV2ZW50TG9nSGFuZGxlcigndGVzdF9sb2dnaW5nJykKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICdUZXN0IExvZyBNZXNzYWdlJ30pCisgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgIGguY2xvc2UoKQorICAgICAgICAjIE5vdyBzZWUgaWYgdGhlIGV2ZW50IGlzIHJlY29yZGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShudW1fcmVjcyA8IHdpbjMyZXZ0bG9nLkdldE51bWJlck9mRXZlbnRMb2dSZWNvcmRzKGVsaCkpCisgICAgICAgIGZsYWdzID0gd2luMzJldnRsb2cuRVZFTlRMT0dfQkFDS1dBUkRTX1JFQUQgfCBcCisgICAgICAgICAgICAgICAgd2luMzJldnRsb2cuRVZFTlRMT0dfU0VRVUVOVElBTF9SRUFECisgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgR09fQkFDSyA9IDEwMAorICAgICAgICBldmVudHMgPSB3aW4zMmV2dGxvZy5SZWFkRXZlbnRMb2coZWxoLCBmbGFncywgR09fQkFDSykKKyAgICAgICAgZm9yIGUgaW4gZXZlbnRzOgorICAgICAgICAgICAgaWYgZS5Tb3VyY2VOYW1lICE9ICd0ZXN0X2xvZ2dpbmcnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtc2cgPSB3aW4zMmV2dGxvZ3V0aWwuU2FmZUZvcm1hdE1lc3NhZ2UoZSwgbG9ndHlwZSkKKyAgICAgICAgICAgIGlmIG1zZyAhPSAnVGVzdCBMb2cgTWVzc2FnZVxyXG4nOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIG1zZyA9ICdSZWNvcmQgbm90IGZvdW5kIGluIGV2ZW50IGxvZywgd2VudCBiYWNrICVkIHJlY29yZHMnICUgR09fQkFDSworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsIG1zZz1tc2cpCiAKICMgU2V0IHRoZSBsb2NhbGUgdG8gdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBkZWZhdWx0LiAgSSBoYXZlIG5vIGlkZWEKICMgd2h5IHRoZSB0ZXN0IGRvZXMgdGhpcywgYnV0IGluIGFueSBjYXNlIHdlIHNhdmUgdGhlIGN1cnJlbnQgbG9jYWxlCkBAIC0yMzczLDE0ICszODI3LDE3IEBACiBAcnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAnJykKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoQnVpbHRpbkxldmVsc1Rlc3QsIEJhc2ljRmlsdGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgQ3VzdG9tTGV2ZWxzQW5kRmlsdGVyc1Rlc3QsIE1lbW9yeUhhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBDb25maWdGaWxlVGVzdCwgU29ja2V0SGFuZGxlclRlc3QsIE1lbW9yeVRlc3QsCi0gICAgICAgICAgICAgICAgIEVuY29kaW5nVGVzdCwgV2FybmluZ3NUZXN0LCBDb25maWdEaWN0VGVzdCwgTWFuYWdlclRlc3QsCi0gICAgICAgICAgICAgICAgIEZvcm1hdHRlclRlc3QsCi0gICAgICAgICAgICAgICAgIExvZ1JlY29yZEZhY3RvcnlUZXN0LCBDaGlsZExvZ2dlclRlc3QsIFF1ZXVlSGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBMYXN0UmVzb3J0VGVzdCwKLSAgICAgICAgICAgICAgICAgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwgSGFuZGxlclRlc3QsCisgICAgICAgICAgICAgICAgIEN1c3RvbUxldmVsc0FuZEZpbHRlcnNUZXN0LCBIYW5kbGVyVGVzdCwgTWVtb3J5SGFuZGxlclRlc3QsCisgICAgICAgICAgICAgICAgIENvbmZpZ0ZpbGVUZXN0LCBTb2NrZXRIYW5kbGVyVGVzdCwgRGF0YWdyYW1IYW5kbGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgTWVtb3J5VGVzdCwgRW5jb2RpbmdUZXN0LCBXYXJuaW5nc1Rlc3QsIENvbmZpZ0RpY3RUZXN0LAorICAgICAgICAgICAgICAgICBNYW5hZ2VyVGVzdCwgRm9ybWF0dGVyVGVzdCwgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgU3RyZWFtSGFuZGxlclRlc3QsIExvZ1JlY29yZEZhY3RvcnlUZXN0LCBDaGlsZExvZ2dlclRlc3QsCisgICAgICAgICAgICAgICAgIFF1ZXVlSGFuZGxlclRlc3QsIFNodXRkb3duVGVzdCwgTW9kdWxlTGV2ZWxNaXNjVGVzdCwKKyAgICAgICAgICAgICAgICAgQmFzaWNDb25maWdUZXN0LCBMb2dnZXJBZGFwdGVyVGVzdCwgTG9nZ2VyVGVzdCwKKyAgICAgICAgICAgICAgICAgU01UUEhhbmRsZXJUZXN0LCBGaWxlSGFuZGxlclRlc3QsIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LAorICAgICAgICAgICAgICAgICBMYXN0UmVzb3J0VGVzdCwgTG9nUmVjb3JkVGVzdCwgRXhjZXB0aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgU3lzTG9nSGFuZGxlclRlc3QsIEhUVFBIYW5kbGVyVGVzdCwgTlRFdmVudExvZ0hhbmRsZXJUZXN0LAorICAgICAgICAgICAgICAgICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0CiAgICAgICAgICAgICAgICAgKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb25nLnB5IGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CmluZGV4IDNlYmMxZjcuLmI0MTdiZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvbmcucHkKQEAgLTQzLDYgKzQzLDUzIEBACiBEQkxfTUFOVF9ESUcgPSBzeXMuZmxvYXRfaW5mby5tYW50X2RpZwogREJMX01JTl9PVkVSRkxPVyA9IDIqKkRCTF9NQVhfRVhQIC0gMioqKERCTF9NQVhfRVhQIC0gREJMX01BTlRfRElHIC0gMSkKIAorCisjIFB1cmUgUHl0aG9uIHZlcnNpb24gb2YgY29ycmVjdGx5LXJvdW5kZWQgaW50ZWdlci10by1mbG9hdCBjb252ZXJzaW9uLgorZGVmIGludF90b19mbG9hdChuKToKKyAgICAiIiIKKyAgICBDb3JyZWN0bHktcm91bmRlZCBpbnRlZ2VyLXRvLWZsb2F0IGNvbnZlcnNpb24uCisKKyAgICAiIiIKKyAgICAjIENvbnN0YW50cywgZGVwZW5kaW5nIG9ubHkgb24gdGhlIGZsb2F0aW5nLXBvaW50IGZvcm1hdCBpbiB1c2UuCisgICAgIyBXZSB1c2UgYW4gZXh0cmEgMiBiaXRzIG9mIHByZWNpc2lvbiBmb3Igcm91bmRpbmcgcHVycG9zZXMuCisgICAgUFJFQ0lTSU9OID0gc3lzLmZsb2F0X2luZm8ubWFudF9kaWcgKyAyCisgICAgU0hJRlRfTUFYID0gc3lzLmZsb2F0X2luZm8ubWF4X2V4cCAtIFBSRUNJU0lPTgorICAgIFFfTUFYID0gMSA8PCBQUkVDSVNJT04KKyAgICBST1VORF9IQUxGX1RPX0VWRU5fQ09SUkVDVElPTiA9IFswLCAtMSwgLTIsIDEsIDAsIC0xLCAyLCAxXQorCisgICAgIyBSZWR1Y2UgdG8gdGhlIGNhc2Ugd2hlcmUgbiBpcyBwb3NpdGl2ZS4KKyAgICBpZiBuID09IDA6CisgICAgICAgIHJldHVybiAwLjAKKyAgICBlbGlmIG4gPCAwOgorICAgICAgICByZXR1cm4gLWludF90b19mbG9hdCgtbikKKworICAgICMgQ29udmVydCBuIHRvIGEgJ2Zsb2F0aW5nLXBvaW50JyBudW1iZXIgcSAqIDIqKnNoaWZ0LCB3aGVyZSBxIGlzIGFuCisgICAgIyBpbnRlZ2VyIHdpdGggJ1BSRUNJU0lPTicgc2lnbmlmaWNhbnQgYml0cy4gIFdoZW4gc2hpZnRpbmcgbiB0byBjcmVhdGUgcSwKKyAgICAjIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgcSBpcyB0cmVhdGVkIGFzICdzdGlja3knLiAgVGhhdCBpcywgdGhlCisgICAgIyBsZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgcSBpcyBzZXQgaWYgZWl0aGVyIHRoZSBjb3JyZXNwb25kaW5nIGJpdCBvZiBuCisgICAgIyB3YXMgYWxyZWFkeSBzZXQsIG9yIGFueSBvbmUgb2YgdGhlIGJpdHMgb2YgbiBsb3N0IGluIHRoZSBzaGlmdCB3YXMgc2V0LgorICAgIHNoaWZ0ID0gbi5iaXRfbGVuZ3RoKCkgLSBQUkVDSVNJT04KKyAgICBxID0gbiA8PCAtc2hpZnQgaWYgc2hpZnQgPCAwIGVsc2UgKG4gPj4gc2hpZnQpIHwgYm9vbChuICYgfigtMSA8PCBzaGlmdCkpCisKKyAgICAjIFJvdW5kIGhhbGYgdG8gZXZlbiAoYWN0dWFsbHkgcm91bmRzIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIDQsCisgICAgIyByb3VuZGluZyB0aWVzIHRvIGEgbXVsdGlwbGUgb2YgOCkuCisgICAgcSArPSBST1VORF9IQUxGX1RPX0VWRU5fQ09SUkVDVElPTltxICYgN10KKworICAgICMgRGV0ZWN0IG92ZXJmbG93LgorICAgIGlmIHNoaWZ0ICsgKHEgPT0gUV9NQVgpID4gU0hJRlRfTUFYOgorICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJpbnRlZ2VyIHRvbyBsYXJnZSB0byBjb252ZXJ0IHRvIGZsb2F0IikKKworICAgICMgQ2hlY2tzOiBxIGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSwgYW5kIHEqKjIqKnNoaWZ0IGRvZXNuJ3Qgb3ZlcmZsb3cuCisgICAgYXNzZXJ0IHEgJSA0ID09IDAgYW5kIHEgLy8gNCA8PSAyKiooc3lzLmZsb2F0X2luZm8ubWFudF9kaWcpCisgICAgYXNzZXJ0IHEgKiAyKipzaGlmdCA8PSBzeXMuZmxvYXRfaW5mby5tYXgKKworICAgICMgU29tZSBjaXJjdWxhcml0eSBoZXJlLCBzaW5jZSBmbG9hdChxKSBpcyBkb2luZyBhbiBpbnQtdG8tZmxvYXQKKyAgICAjIGNvbnZlcnNpb24uICBCdXQgaGVyZSBxIGlzIG9mIGJvdW5kZWQgc2l6ZSwgYW5kIGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZQorICAgICMgYXMgYSBmbG9hdC4gIEluIGEgbG93LWxldmVsIEMtbGlrZSBsYW5ndWFnZSwgdGhpcyBvcGVyYXRpb24gd291bGQgYmUgYQorICAgICMgc2ltcGxlIGNhc3QgKGUuZy4sIGZyb20gdW5zaWduZWQgbG9uZyBsb25nIHRvIGRvdWJsZSkuCisgICAgcmV0dXJuIG1hdGgubGRleHAoZmxvYXQocSksIHNoaWZ0KQorCisKICMgcHVyZSBQeXRob24gdmVyc2lvbiBvZiBjb3JyZWN0bHktcm91bmRlZCB0cnVlIGRpdmlzaW9uCiBkZWYgdHJ1ZWRpdihhLCBiKToKICAgICAiIiJDb3JyZWN0bHktcm91bmRlZCB0cnVlIGRpdmlzaW9uIGZvciBpbnRlZ2Vycy4iIiIKQEAgLTM2Nyw2ICs0MTQsMjMgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gMTcyOQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChMb25nVHJ1bmMoKSksIDE3MjkpCiAKKyAgICBkZWYgY2hlY2tfZmxvYXRfY29udmVyc2lvbihzZWxmLCBuKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGludCAtPiBmbG9hdCBjb252ZXJzaW9uIGJlaGF2aW91ciBtYXRjaGVzCisgICAgICAgICMgdGhhdCBvZiB0aGUgcHVyZSBQeXRob24gdmVyc2lvbiBhYm92ZS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWN0dWFsID0gZmxvYXQobikKKyAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CisgICAgICAgICAgICBhY3R1YWwgPSAnb3ZlcmZsb3cnCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZXhwZWN0ZWQgPSBpbnRfdG9fZmxvYXQobikKKyAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CisgICAgICAgICAgICBleHBlY3RlZCA9ICdvdmVyZmxvdycKKworICAgICAgICBtc2cgPSAoIkVycm9yIGluIGNvbnZlcnNpb24gb2YgaW50ZWdlciB7fSB0byBmbG9hdC4gICIKKyAgICAgICAgICAgICAgICJHb3Qge30sIGV4cGVjdGVkIHt9LiIuZm9ybWF0KG4sIGFjdHVhbCwgZXhwZWN0ZWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1zZykKKwogICAgIEBzdXBwb3J0LnJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RfZmxvYXRfY29udmVyc2lvbihzZWxmKToKIApAQCAtNDIxLDYgKzQ4NSwyMiBAQAogICAgICAgICAgICAgeSA9IDIqKnAgKiAyKio1MwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoZmxvYXQoeCkpLCB5KQogCisgICAgICAgICMgQ29tcGFyZSBidWlsdGluIGZsb2F0IGNvbnZlcnNpb24gd2l0aCBwdXJlIFB5dGhvbiBpbnRfdG9fZmxvYXQKKyAgICAgICAgIyBmdW5jdGlvbiBhYm92ZS4KKyAgICAgICAgdGVzdF92YWx1ZXMgPSBbCisgICAgICAgICAgICBpbnRfZGJsX21heC0xLCBpbnRfZGJsX21heCwgaW50X2RibF9tYXgrMSwKKyAgICAgICAgICAgIGhhbGZ3YXktMSwgaGFsZndheSwgaGFsZndheSArIDEsCisgICAgICAgICAgICB0b3BfcG93ZXItMSwgdG9wX3Bvd2VyLCB0b3BfcG93ZXIrMSwKKyAgICAgICAgICAgIDIqdG9wX3Bvd2VyLTEsIDIqdG9wX3Bvd2VyLCB0b3BfcG93ZXIqdG9wX3Bvd2VyLAorICAgICAgICBdCisgICAgICAgIHRlc3RfdmFsdWVzLmV4dGVuZChleGFjdF92YWx1ZXMpCisgICAgICAgIGZvciBwIGluIHJhbmdlKC00LCA4KToKKyAgICAgICAgICAgIGZvciB4IGluIHJhbmdlKC0xMjgsIDEyOCk6CisgICAgICAgICAgICAgICAgdGVzdF92YWx1ZXMuYXBwZW5kKDIqKihwKzUzKSArIHgpCisgICAgICAgIGZvciB2YWx1ZSBpbiB0ZXN0X3ZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfY29udmVyc2lvbih2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfY29udmVyc2lvbigtdmFsdWUpCisKICAgICBkZWYgdGVzdF9mbG9hdF9vdmVyZmxvdyhzZWxmKToKICAgICAgICAgZm9yIHggaW4gLTIuMCwgLTEuMCwgMC4wLCAxLjAsIDIuMDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoaW50KHgpKSwgeCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weSBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTNjZjNiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CkBAIC0wLDAgKzEsMTUxNyBAQAorZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24KK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCisgICAgXzRHLCBURVNURk4sIGltcG9ydF9tb2R1bGUsIGJpZ21lbXRlc3QsIHJ1bl91bml0dGVzdCwgdW5saW5rCispCisKK2x6bWEgPSBpbXBvcnRfbW9kdWxlKCJsem1hIikKK2Zyb20gbHptYSBpbXBvcnQgTFpNQUNvbXByZXNzb3IsIExaTUFEZWNvbXByZXNzb3IsIExaTUFFcnJvciwgTFpNQUZpbGUKKworCitjbGFzcyBDb21wcmVzc29yRGVjb21wcmVzc29yVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIyBUZXN0IGVycm9yIGNhc2VzLgorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZm9ybWF0PTMuNDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGNoZWNrPSIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBwcmVzZXQ9ImFzZGYiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBmaWx0ZXJzPTMpCisgICAgICAgICMgQ2FuJ3Qgc3BlY2lmeSBGT1JNQVRfQVVUTyB3aGVuIGNvbXByZXNzaW5nLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZm9ybWF0PWx6bWEuRk9STUFUX0FVVE8pCisgICAgICAgICMgQ2FuJ3Qgc3BlY2lmeSBhIHByZXNldCBhbmQgYSBjdXN0b20gZmlsdGVyIGNoYWluIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihwcmVzZXQ9NywgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyfV0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BRGVjb21wcmVzc29yLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BRGVjb21wcmVzc29yLCBtZW1saW1pdD1iInF3IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9Inp6eiIpCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBtZW1vcnkgbGltaXQgd2l0aCBGSUxURVJfUkFXLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIG1lbWxpbWl0PTB4MTAwMDAwMCkKKyAgICAgICAgIyBDYW4gb25seSBzcGVjaWZ5IGEgY3VzdG9tIGZpbHRlciBjaGFpbiB3aXRoIEZJTFRFUl9SQVcuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIExaTUFEZWNvbXByZXNzb3IsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFEZWNvbXByZXNzb3IoZm9ybWF0PWx6bWEuRk9STUFUX1haLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRGVjb21wcmVzc29yKGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorCisgICAgICAgIGx6YyA9IExaTUFDb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsemMuY29tcHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpjLmNvbXByZXNzLCBiImZvbyIsIGIiYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsemMuZmx1c2gsIGIiYmxhaCIpCisgICAgICAgIGVtcHR5ID0gbHpjLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbHpjLmNvbXByZXNzLCBiInF1dXgiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsemMuZmx1c2gpCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpkLmRlY29tcHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpkLmRlY29tcHJlc3MsIGIiZm9vIiwgYiJiYXIiKQorICAgICAgICBsemQuZGVjb21wcmVzcyhlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBiInF1dXgiKQorCisgICAgZGVmIHRlc3RfYmFkX2ZpbHRlcl9zcGVjKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBmaWx0ZXJzPVtiIndvYnNpdGUiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGZpbHRlcnM9W3sieHl6enkiOiAzfV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIExaTUFDb21wcmVzc29yLCBmaWx0ZXJzPVt7ImlkIjogOTg3NjV9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFDb21wcmVzc29yKGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgImZvbyI6IDB9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFDb21wcmVzc29yKGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwgImZvbyI6IDB9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFDb21wcmVzc29yKGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9YODYsICJmb28iOiAwfV0pCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfYWZ0ZXJfZW9mKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgbHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBiIm55YW4iKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX21lbWxpbWl0KHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFopCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9YWiwgbWVtbGltaXQ9MTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9YWikKKworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX0FMT05FLCBtZW1saW1pdD0xMDI0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX0FMT05FKQorCisgICAgIyBUZXN0IExaTUFEZWNvbXByZXNzb3Igb24ga25vd24tZ29vZCBpbnB1dCBkYXRhLgorCisgICAgZGVmIF90ZXN0X2RlY29tcHJlc3NvcihzZWxmLCBsemQsIGRhdGEsIGNoZWNrLCB1bnVzZWRfZGF0YT1iIiIpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6ZC5lb2YpCisgICAgICAgIG91dCA9IGx6ZC5kZWNvbXByZXNzKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBJTlBVVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQuY2hlY2ssIGNoZWNrKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobHpkLmVvZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQudW51c2VkX2RhdGEsIHVudXNlZF9kYXRhKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2F1dG8oc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFosIGx6bWEuQ0hFQ0tfQ1JDNjQpCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9BTE9ORSwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX3h6KHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1haKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFosIGx6bWEuQ0hFQ0tfQ1JDNjQpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfYWxvbmUoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9BTE9ORSwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX3Jhd18xKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfUkFXXzEsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9yYXdfMihzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1JBV18yLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfcmF3XzMoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzMpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9SQVdfMywgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX3Jhd180KHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfUkFXXzQsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9jaHVua3Moc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBvdXQgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oQ09NUFJFU1NFRF9YWiksIDEwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHpkLmVvZikKKyAgICAgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWltpOmkrMTBdKSkKKyAgICAgICAgb3V0ID0gYiIiLmpvaW4ob3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgSU5QVVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLmNoZWNrLCBsem1hLkNIRUNLX0NSQzY0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobHpkLmVvZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQudW51c2VkX2RhdGEsIGIiIikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl91bnVzZWRfZGF0YShzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIGV4dHJhID0gYiJmb29ibGliYXIiCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9YWiArIGV4dHJhLCBsem1hLkNIRUNLX0NSQzY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWRfZGF0YT1leHRyYSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9iYWRfaW5wdXQoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1JBV18xKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfWFopCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfQUxPTkUpCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9YWikKKworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1haKQorCisgICAgIyBUZXN0IHRoYXQgTFpNQUNvbXByZXNzb3ItPkxaTUFEZWNvbXByZXNzb3IgcHJlc2VydmVzIHRoZSBpbnB1dCBkYXRhLgorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX3h6KHNlbGYpOgorICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3NvcigpCisgICAgICAgIGNkYXRhID0gbHpjLmNvbXByZXNzKElOUFVUKSArIGx6Yy5mbHVzaCgpCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIGNkYXRhLCBsem1hLkNIRUNLX0NSQzY0KQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX2Fsb25lKHNlbGYpOgorICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3Nvcihsem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgY2RhdGEgPSBsemMuY29tcHJlc3MoSU5QVVQpICsgbHpjLmZsdXNoKCkKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgY2RhdGEsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF9yYXcoc2VsZik6CisgICAgICAgIGx6YyA9IExaTUFDb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBjZGF0YSA9IGx6Yy5jb21wcmVzcyhJTlBVVCkgKyBsemMuZmx1c2goKQorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIGNkYXRhLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfY2h1bmtzKHNlbGYpOgorICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3NvcigpCisgICAgICAgIGNkYXRhID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKElOUFVUKSwgMTApOgorICAgICAgICAgICAgY2RhdGEuYXBwZW5kKGx6Yy5jb21wcmVzcyhJTlBVVFtpOmkrMTBdKSkKKyAgICAgICAgY2RhdGEuYXBwZW5kKGx6Yy5mbHVzaCgpKQorICAgICAgICBjZGF0YSA9IGIiIi5qb2luKGNkYXRhKQorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBjZGF0YSwgbHptYS5DSEVDS19DUkM2NCkKKworICAgICMgTFpNQURlY29tcHJlc3NvciBpbnRlbnRpb25hbGx5IGRvZXMgbm90IGhhbmRsZSBjb25jYXRlbmF0ZWQgc3RyZWFtcy4KKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9tdWx0aXN0cmVhbShzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9YWiArIENPTVBSRVNTRURfQUxPTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6bWEuQ0hFQ0tfQ1JDNjQsIHVudXNlZF9kYXRhPUNPTVBSRVNTRURfQUxPTkUpCisKKyAgICAjIFRlc3Qgd2l0aCBpbnB1dHMgbGFyZ2VyIHRoYW4gNEdpQi4KKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF9jb21wcmVzc29yX2JpZ21lbShzZWxmLCBzaXplKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IoKQorICAgICAgICBjZGF0YSA9IGx6Yy5jb21wcmVzcyhiIngiICogc2l6ZSkgKyBsemMuZmx1c2goKQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGRhdGEpLCBzaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGRhdGEuc3RyaXAoYiJ4IikpLCAwKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGRhdGEgPSBOb25lCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTMpCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2JpZ21lbShzZWxmLCBzaXplKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIGJsb2Nrc2l6ZSA9IDEwICogMTAyNCAqIDEwMjQKKyAgICAgICAgYmxvY2sgPSByYW5kb20uZ2V0cmFuZGJpdHMoYmxvY2tzaXplICogOCkudG9fYnl0ZXMoYmxvY2tzaXplLCAibGl0dGxlIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5wdXQgPSBibG9jayAqIChzaXplIC8vIGJsb2Nrc2l6ZSArIDEpCisgICAgICAgICAgICBjZGF0YSA9IGx6bWEuY29tcHJlc3MoaW5wdXQpCisgICAgICAgICAgICBkZGF0YSA9IGx6ZC5kZWNvbXByZXNzKGNkYXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgaW5wdXQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpbnB1dCA9IGNkYXRhID0gZGRhdGEgPSBOb25lCisKKworY2xhc3MgQ29tcHJlc3NEZWNvbXByZXNzRnVuY3Rpb25UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAjIFRlc3QgZXJyb3IgY2FzZXM6CisKKyAgICBkZWYgdGVzdF9iYWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgZm9ybWF0PSJ4eiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5jb21wcmVzcywgYiIiLCBjaGVjaz0ibm9uZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5jb21wcmVzcywgYiIiLCBwcmVzZXQ9ImJsYWgiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgZmlsdGVycz0xMDI0KQorICAgICAgICAjIENhbid0IHNwZWNpZnkgYSBwcmVzZXQgYW5kIGEgY3VzdG9tIGZpbHRlciBjaGFpbiBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5jb21wcmVzcyhiIiIsIHByZXNldD0zLCBmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfTFpNQTJ9XSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuZGVjb21wcmVzcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgYiIiLCBmb3JtYXQ9Imx6bWEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgYiIiLCBtZW1saW1pdD03LjNlOSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKGIiIiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz17fSkKKyAgICAgICAgIyBDYW5ub3Qgc3BlY2lmeSBhIG1lbW9yeSBsaW1pdCB3aXRoIEZJTFRFUl9SQVcuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoYiIiLCBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBtZW1saW1pdD0weDEwMDAwMDApCisgICAgICAgICMgQ2FuIG9ubHkgc3BlY2lmeSBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gd2l0aCBGSUxURVJfUkFXLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKGIiIiwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKGIiIiwgZm9ybWF0PWx6bWEuRk9STUFUX1haLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgICAgIGIiIiwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX21lbWxpbWl0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWiwgbWVtbGltaXQ9MTAyNCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1haLCBmb3JtYXQ9bHptYS5GT1JNQVRfWFosIG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9BTE9ORSwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FLCBtZW1saW1pdD0xMDI0KQorCisgICAgIyBUZXN0IExaTUFEZWNvbXByZXNzb3Igb24ga25vd24tZ29vZCBpbnB1dCBkYXRhLgorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19nb29kX2lucHV0KHNlbGYpOgorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX0FMT05FKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haLCBsem1hLkZPUk1BVF9YWikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9BTE9ORSwgbHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgIENPTVBSRVNTRURfUkFXXzEsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1JBV18yLCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9SQVdfMywgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgIENPTVBSRVNTRURfUkFXXzQsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfaW5jb21wbGV0ZV9pbnB1dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFpbOjEyOF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHptYS5kZWNvbXByZXNzLCBDT01QUkVTU0VEX0FMT05FWzoxMjhdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfMVs6MTI4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfMls6MTI4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfM1s6MTI4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfNFs6MTI4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19iYWRfaW5wdXQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9BTE9ORSwgZm9ybWF0PWx6bWEuRk9STUFUX1haKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWiwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisKKyAgICAjIFRlc3QgdGhhdCBjb21wcmVzcygpLT5kZWNvbXByZXNzKCkgcHJlc2VydmVzIHRoZSBpbnB1dCBkYXRhLgorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwKHNlbGYpOgorICAgICAgICBjZGF0YSA9IGx6bWEuY29tcHJlc3MoSU5QVVQpCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKGNkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBjZGF0YSA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGx6bWEuRk9STUFUX1haKQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKElOUFVULCBsem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoY2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGNkYXRhID0gbHptYS5jb21wcmVzcyhJTlBVVCwgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzQpCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKGNkYXRhLCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAjIFVubGlrZSBMWk1BRGVjb21wcmVzc29yLCBkZWNvbXByZXNzKCkgKmRvZXMqIGhhbmRsZSBjb25jYXRlbmF0ZWQgc3RyZWFtcy4KKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfbXVsdGlzdHJlYW0oc2VsZik6CisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0FMT05FKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCAqIDIpCisKKworY2xhc3MgVGVtcEZpbGU6CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIC0gY3JlYXRlcyBhIGZpbGUsIGFuZCBkZWxldGVzIGl0IG9uIF9fZXhpdF9fLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBkYXRhPWIiIik6CisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQorICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5kYXRhKQorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgdW5saW5rKHNlbGYuZmlsZW5hbWUpCisKKworY2xhc3MgRmlsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJhIikgYXMgZjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfd2l0aF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4pIGFzIGY6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfbW9kZShzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4pOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJyIik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJyYiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAid2IiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImEiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImFiIik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaW5pdF9iYWRfbW9kZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICgzLCAieCIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgIiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAieCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAicnQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgInIrIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJ3dCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAidysiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgInJ3IikKKworICAgIGRlZiB0ZXN0X2luaXRfYmFkX2NoZWNrKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgY2hlY2s9YiJhc2QiKQorICAgICAgICAjIENIRUNLX1VOS05PV04gYW5kIGFueXRoaW5nIGFib3ZlIENIRUNLX0lEX01BWCBzaG91bGQgYmUgaW52YWxpZC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGNoZWNrPWx6bWEuQ0hFQ0tfVU5LTk9XTikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGNoZWNrPWx6bWEuQ0hFQ0tfSURfTUFYICsgMykKKyAgICAgICAgIyBDYW5ub3Qgc3BlY2lmeSBhIGNoZWNrIHdpdGggbW9kZT0iciIuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBjaGVjaz1sem1hLkNIRUNLX05PTkUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBjaGVjaz1sem1hLkNIRUNLX0NSQzMyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19DUkM2NCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGNoZWNrPWx6bWEuQ0hFQ0tfU0hBMjU2KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19VTktOT1dOKQorCisgICAgZGVmIHRlc3RfaW5pdF9iYWRfcHJlc2V0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PTQuMzkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9MTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9MjMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PS0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD0tNykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD0iZm9vIikKKyAgICAgICAgIyBDYW5ub3Qgc3BlY2lmeSBhIHByZXNldCB3aXRoIG1vZGU9InIiLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgcHJlc2V0PTMpCisKKyAgICBkZWYgdGVzdF9pbml0X2JhZF9maWx0ZXJfc3BlYyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGZpbHRlcnM9W2Iid29ic2l0ZSJdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGZpbHRlcnM9W3sieHl6enkiOiAzfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgZmlsdGVycz1beyJpZCI6IDk4NzY1fV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgImZvbyI6IDB9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLCAiZm9vIjogMH1dKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsCisgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfWDg2LCAiZm9vIjogMH1dKQorCisgICAgZGVmIHRlc3RfaW5pdF93aXRoX3ByZXNldF9hbmRfZmlsdGVycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLAorICAgICAgICAgICAgICAgICAgICAgcHJlc2V0PTYsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKworICAgIGRlZiB0ZXN0X2Nsb3NlKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikgYXMgc3JjOgorICAgICAgICAgICAgZiA9IExaTUFGaWxlKHNyYykKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgIyBMWk1BRmlsZS5jbG9zZSgpIHNob3VsZCBub3QgY2xvc2UgdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QuCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNyYy5jbG9zZWQpCisgICAgICAgICAgICAjIFRyeSBjbG9zaW5nIGFuIGFscmVhZHktY2xvc2VkIExaTUFGaWxlLgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNyYy5jbG9zZWQpCisKKyAgICAgICAgIyBUZXN0IHdpdGggYSByZWFsIGZpbGUgb24gZGlzaywgb3BlbmVkIGRpcmVjdGx5IGJ5IExaTUFGaWxlLgorICAgICAgICB3aXRoIFRlbXBGaWxlKFRFU1RGTiwgQ09NUFJFU1NFRF9YWik6CisgICAgICAgICAgICBmID0gTFpNQUZpbGUoVEVTVEZOKQorICAgICAgICAgICAgZnAgPSBmLl9mcAorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICAjIEhlcmUsIExaTUFGaWxlLmNsb3NlKCkgKnNob3VsZCogY2xvc2UgdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QuCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZnAuY2xvc2VkKQorICAgICAgICAgICAgIyBUcnkgY2xvc2luZyBhbiBhbHJlYWR5LWNsb3NlZCBMWk1BRmlsZS4KKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfY2xvc2VkKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNsb3NlZCkKKyAgICAgICAgICAgIGYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNsb3NlZCkKKworICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuY2xvc2VkKQorCisgICAgZGVmIHRlc3RfZmlsZW5vKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5zdXBwb3J0ZWRPcGVyYXRpb24sIGYuZmlsZW5vKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuZmlsZW5vKQorICAgICAgICB3aXRoIFRlbXBGaWxlKFRFU1RGTiwgQ09NUFJFU1NFRF9YWik6CisgICAgICAgICAgICBmID0gTFpNQUZpbGUoVEVTVEZOKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5maWxlbm8oKSwgZi5fZnAuZmlsZW5vKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYuZmlsZW5vKCksIGludCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuZmlsZW5vKQorCisgICAgZGVmIHRlc3Rfc2Vla2FibGUoc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5zZWVrYWJsZSgpKQorICAgICAgICAgICAgZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnNlZWthYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrYWJsZSkKKworICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2Vla2FibGUpCisKKyAgICAgICAgc3JjID0gQnl0ZXNJTyhDT01QUkVTU0VEX1haKQorICAgICAgICBzcmMuc2Vla2FibGUgPSBsYW1iZGE6IEZhbHNlCisgICAgICAgIGYgPSBMWk1BRmlsZShzcmMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2Vla2FibGUpCisKKyAgICBkZWYgdGVzdF9yZWFkYWJsZShzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYucmVhZGFibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRhYmxlKQorCisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkYWJsZSkKKworICAgIGRlZiB0ZXN0X3dyaXRhYmxlKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLndyaXRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi53cml0YWJsZSkKKworICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi53cml0YWJsZSkKKworICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9BTE9ORSkpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBmb3JtYXQ9bHptYS5GT1JNQVRfWFopIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpLCBmb3JtYXQ9bHptYS5GT1JNQVRfQUxPTkUpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzEpLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMiksCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18yKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV18zKSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzMpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzQpLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorCisgICAgZGVmIHRlc3RfcmVhZF8wKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgwKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9BTE9ORSkpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgwKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGZvcm1hdD1sem1hLkZPUk1BVF9YWikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKDApLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWRfMTAoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGNodW5rcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYucmVhZCgxMCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihyZXN1bHQpLCAxMCkKKyAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oY2h1bmtzKSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9yZWFkX211bHRpc3RyZWFtKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqIDUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiA1KQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiArIENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiAyKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMyAqIDQpLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogNCkKKworICAgIGRlZiB0ZXN0X3JlYWRfbXVsdGlzdHJlYW1fYnVmZmVyX3NpemVfYWxpZ25lZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBjYXNlIHdoZXJlIGEgc3RyZWFtIGJvdW5kYXJ5IGNvaW5jaWRlcyB3aXRoIHRoZSBlbmQKKyAgICAgICAgIyBvZiB0aGUgcmF3IHJlYWQgYnVmZmVyLgorICAgICAgICBzYXZlZF9idWZmZXJfc2l6ZSA9IGx6bWEuX0JVRkZFUl9TSVpFCisgICAgICAgIGx6bWEuX0JVRkZFUl9TSVpFID0gbGVuKENPTVBSRVNTRURfWFopCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haICogIDUpKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogNSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGx6bWEuX0JVRkZFUl9TSVpFID0gc2F2ZWRfYnVmZmVyX3NpemUKKworICAgIGRlZiB0ZXN0X3JlYWRfZnJvbV9maWxlKHNlbGYpOgorICAgICAgICB3aXRoIFRlbXBGaWxlKFRFU1RGTiwgQ09NUFJFU1NFRF9YWik6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fZmlsZV93aXRoX2J5dGVzX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlc19maWxlbmFtZSA9IFRFU1RGTi5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRlbXBvcmFyeSBmaWxlIG5hbWUgbmVlZHMgdG8gYmUgQVNDSUkiKQorICAgICAgICB3aXRoIFRlbXBGaWxlKFRFU1RGTiwgQ09NUFJFU1NFRF9YWik6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGJ5dGVzX2ZpbGVuYW1lKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWRfaW5jb21wbGV0ZShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFpbOjEyOF0pKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGYucmVhZCkKKworICAgIGRlZiB0ZXN0X3JlYWRfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3JlYWQxKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQxKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQocmVzdWx0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIiIuam9pbihibG9ja3MpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkMSgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV8wKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZDEoMCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWQxXzEwKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQxKDEwKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGJsb2NrcyksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQxKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWQxX211bHRpc3RyZWFtKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqIDUpKSBhcyBmOgorICAgICAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5yZWFkMSgpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oYmxvY2tzKSwgSU5QVVQgKiA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQxKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWQxX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZDEpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWQxKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZDEsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9wZWVrKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICByZXN1bHQgPSBmLnBlZWsoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihyZXN1bHQpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKElOUFVULnN0YXJ0c3dpdGgocmVzdWx0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICByZXN1bHQgPSBmLnBlZWsoMTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKHJlc3VsdCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoSU5QVVQuc3RhcnRzd2l0aChyZXN1bHQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9wZWVrX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5wZWVrKQorCisgICAgZGVmIHRlc3RfaXRlcmF0b3Ioc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhJTlBVVCkgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaXN0KGl0ZXIoZikpLCBsaW5lcykKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgZm9ybWF0PWx6bWEuRk9STUFUX1haKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV18yKSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaXN0KGl0ZXIoZikpLCBsaW5lcykKKworICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oSU5QVVQpIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lKCksIGxpbmUpCisKKyAgICBkZWYgdGVzdF9yZWFkbGluZXMoc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhJTlBVVCkgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChmLnJlYWRsaW5lcygpLCBsaW5lcykKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgZHN0OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShkc3QsICJ3IiwgZm9ybWF0PWx6bWEuRk9STUFUX1haKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGZvcm1hdD1sem1hLkZPUk1BVF9YWikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciLCBmb3JtYXQ9bHptYS5GT1JNQVRfQUxPTkUpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIsIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9RklMVEVSU19SQVdfMikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVULCBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9RklMVEVSU19SQVdfMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfMTAoc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIHN0YXJ0IGluIHJhbmdlKDAsIGxlbihJTlBVVCksIDEwKToKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVFtzdGFydDpzdGFydCsxMF0pCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dyaXRlX2FwcGVuZChzZWxmKToKKyAgICAgICAgcGFydDEgPSBJTlBVVFs6MTAyNF0KKyAgICAgICAgcGFydDIgPSBJTlBVVFsxMDI0OjE1MzZdCisgICAgICAgIHBhcnQzID0gSU5QVVRbMTUzNjpdCisgICAgICAgIGV4cGVjdGVkID0gYiIiLmpvaW4obHptYS5jb21wcmVzcyh4KSBmb3IgeCBpbiAocGFydDEsIHBhcnQyLCBwYXJ0MykpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MSkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MikKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fZmlsZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHVubGluayhURVNURk4pCisKKyAgICBkZWYgdGVzdF93cml0ZV90b19maWxlX3dpdGhfYnl0ZXNfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ5dGVzX2ZpbGVuYW1lID0gVEVTVEZOLmVuY29kZSgiYXNjaWkiKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiVGVtcG9yYXJ5IGZpbGUgbmFtZSBuZWVkcyB0byBiZSBBU0NJSSIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoYnl0ZXNfZmlsZW5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHVubGluayhURVNURk4pCisKKyAgICBkZWYgdGVzdF93cml0ZV9hcHBlbmRfdG9fZmlsZShzZWxmKToKKyAgICAgICAgcGFydDEgPSBJTlBVVFs6MTAyNF0KKyAgICAgICAgcGFydDIgPSBJTlBVVFsxMDI0OjE1MzZdCisgICAgICAgIHBhcnQzID0gSU5QVVRbMTUzNjpdCisgICAgICAgIGV4cGVjdGVkID0gYiIiLmpvaW4obHptYS5jb21wcmVzcyh4KSBmb3IgeCBpbiAocGFydDEsIHBhcnQyLCBwYXJ0MykpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MSkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MikKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MykKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYud3JpdGUsIGIiZm9vIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLndyaXRlLCBiImJhciIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYud3JpdGUsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYud3JpdGUsICJ0ZXh0IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi53cml0ZSwgNzg5KQorCisgICAgZGVmIHRlc3Rfd3JpdGVsaW5lcyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKElOUFVUKSBhcyBmOgorICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZWxpbmVzKGxpbmVzKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9zZWVrX2ZvcndhcmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2Vlayg1NTUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFs1NTU6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfZm9yd2FyZF9hY3Jvc3Nfc3RyZWFtcyhzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiAyKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlayhsZW4oSU5QVVQpICsgMTIzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbMTIzOl0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2ZvcndhcmRfcmVsYXRpdmVfdG9fY3VycmVudChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5yZWFkKDEwMCkKKyAgICAgICAgICAgIGYuc2VlaygxMjM2LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbMTMzNjpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19mb3J3YXJkX3JlbGF0aXZlX3RvX2VuZChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKC01NTUsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFstNTU1Ol0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2JhY2t3YXJkKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBmLnJlYWQoMTAwMSkKKyAgICAgICAgICAgIGYuc2VlaygyMTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFsyMTE6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfYmFja3dhcmRfYWNyb3NzX3N0cmVhbXMoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haICogMikpIGFzIGY6CisgICAgICAgICAgICBmLnJlYWQobGVuKElOUFVUKSArIDMzMykKKyAgICAgICAgICAgIGYuc2Vlayg3MzcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFs3Mzc6XSArIElOUFVUKQorCisgICAgZGVmIHRlc3Rfc2Vla19iYWNrd2FyZF9yZWxhdGl2ZV90b19lbmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlaygtMTUwLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbLTE1MDpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19wYXN0X2VuZChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKGxlbihJTlBVVCkgKyA5MDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgbGVuKElOUFVUKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3NlZWtfcGFzdF9zdGFydChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKC04OCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKworICAgIGRlZiB0ZXN0X3NlZWtfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCAwKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCAwKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWssIDAsIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWssIDksICgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnNlZWssIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYuc2VlaywgYiJkZXJwIikKKworICAgIGRlZiB0ZXN0X3RlbGwoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIHBvcyA9IDAKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgcG9zKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYucmVhZCgxODMpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBwb3MgKz0gbGVuKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIGxlbihJTlBVVCkpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmb3IgcG9zIGluIHJhbmdlKDAsIGxlbihJTlBVVCksIDE0NCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgcG9zKQorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVRbcG9zOnBvcysxNDRdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgbGVuKElOUFVUKSkKKworICAgIGRlZiB0ZXN0X3RlbGxfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi50ZWxsKQorCisKK2NsYXNzIE9wZW5UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgIHdpdGggbHptYS5vcGVuKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJhYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCBJTlBVVCAqIDIpCisKKyAgICBkZWYgdGVzdF90ZXh0X21vZGVzKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWQgPSBJTlBVVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgdW5jb21wcmVzc2VkX3JhdyA9IHVuY29tcHJlc3NlZC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCisgICAgICAgIHdpdGggbHptYS5vcGVuKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJydCIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInd0IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdykKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgImF0IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdyAqIDIpCisKKyAgICBkZWYgdGVzdF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4pOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oVEVTVEZOLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJhYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDIpCisKKyAgICBkZWYgdGVzdF9iYWRfcGFyYW1zKHNlbGYpOgorICAgICAgICAjIFRlc3QgaW52YWxpZCBwYXJhbWV0ZXIgY29tYmluYXRpb25zLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgIiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAieCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmJ0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEub3BlbihURVNURk4sICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmIiLCBlcnJvcnM9Imlnbm9yZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmIiLCBuZXdsaW5lPSJcbiIpCisKKyAgICBkZWYgdGVzdF9mb3JtYXRfYW5kX2ZpbHRlcnMoc2VsZik6CisgICAgICAgICMgVGVzdCBub24tZGVmYXVsdCBmb3JtYXQgYW5kIGZpbHRlciBjaGFpbi4KKyAgICAgICAgb3B0aW9ucyA9IHsiZm9ybWF0IjogbHptYS5GT1JNQVRfUkFXLCAiZmlsdGVycyI6IEZJTFRFUlNfUkFXXzF9CisgICAgICAgIHdpdGggbHptYS5vcGVuKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMSksICJyYiIsICoqb3B0aW9ucykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3YiIsICoqb3B0aW9ucykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpLCAqKm9wdGlvbnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG5vbi1kZWZhdWx0IGVuY29kaW5nLgorICAgICAgICB1bmNvbXByZXNzZWQgPSBJTlBVVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgdW5jb21wcmVzc2VkX3JhdyA9IHVuY29tcHJlc3NlZC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInd0IiwgZW5jb2Rpbmc9InV0Zi0xNi1sZSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpLmRlY29kZSgidXRmLTE2LWxlIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWRfcmF3KQorICAgICAgICAgICAgYmlvLnNlZWsoMCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInJ0IiwgZW5jb2Rpbmc9InV0Zi0xNi1sZSIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorCisgICAgZGVmIHRlc3RfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpaCBub24tZGVmYXVsdCBlbmNvZGluZyBlcnJvciBoYW5kbGVyLgorICAgICAgICB3aXRoIEJ5dGVzSU8obHptYS5jb21wcmVzcyhiImZvb1x4ZmZiYXIiKSkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAicnQiLCBlbmNvZGluZz0iYXNjaWkiLCBlcnJvcnM9Imlnbm9yZSIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgImZvb2JhciIpCisKKyAgICBkZWYgdGVzdF9uZXdsaW5lKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBleHBsaWNpdCBuZXdsaW5lICh1bml2ZXJzYWwgbmV3bGluZSBtb2RlIGRpc2FibGVkKS4KKyAgICAgICAgdGV4dCA9IElOUFVULmRlY29kZSgiYXNjaWkiKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3dCIsIG5ld2xpbmU9IlxuIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHRleHQpCisgICAgICAgICAgICBiaW8uc2VlaygwKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAicnQiLCBuZXdsaW5lPSJcciIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lcygpLCBbdGV4dF0pCisKKworY2xhc3MgTWlzY2VsbGFuZW91c1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2lzX2NoZWNrX3N1cHBvcnRlZChzZWxmKToKKyAgICAgICAgIyBDSEVDS19OT05FIGFuZCBDSEVDS19DUkMzMiBzaG91bGQgYWx3YXlzIGJlIHN1cHBvcnRlZCwKKyAgICAgICAgIyByZWdhcmRsZXNzIG9mIHRoZSBvcHRpb25zIGxpYmx6bWEgd2FzIGNvbXBpbGVkIHdpdGguCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsem1hLmlzX2NoZWNrX3N1cHBvcnRlZChsem1hLkNIRUNLX05PTkUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19DUkMzMikpCisKKyAgICAgICAgIyBUaGUgLnh6IGZvcm1hdCBzcGVjIGNhbm5vdCBzdG9yZSBjaGVjayBJRHMgYWJvdmUgdGhpcyB2YWx1ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsem1hLmlzX2NoZWNrX3N1cHBvcnRlZChsem1hLkNIRUNLX0lEX01BWCArIDEpKQorCisgICAgICAgICMgVGhpcyB2YWx1ZSBzaG91bGQgbm90IGJlIGEgdmFsaWQgY2hlY2sgSUQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19VTktOT1dOKSkKKworICAgIGRlZiB0ZXN0X19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyhiIm5vdCBhIGRpY3QiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsiaWQiOiAweDEwMH0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyLCAianVuayI6IDEyfSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhsem1hLkxaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXN0IjogOTAwMX0pCisKKyAgICAgICAgIyBUZXN0IHdpdGggcGFyYW1ldGVycyB1c2VkIGJ5IHppcGZpbGUgbW9kdWxlLgorICAgICAgICBwcm9wcyA9IGx6bWEuX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyh7CisgICAgICAgICAgICAgICAgImlkIjogbHptYS5GSUxURVJfTFpNQTEsCisgICAgICAgICAgICAgICAgInBiIjogMiwKKyAgICAgICAgICAgICAgICAibHAiOiAwLAorICAgICAgICAgICAgICAgICJsYyI6IDMsCisgICAgICAgICAgICAgICAgImRpY3Rfc2l6ZSI6IDggPDwgMjAsCisgICAgICAgICAgICB9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3BzLCBiIl1ceDAwXHgwMFx4ODBceDAwIikKKworICAgIGRlZiB0ZXN0X19kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhsem1hLkZJTFRFUl9YODYsIHsic2hvdWxkIGJlIjogYnl0ZXN9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGx6bWEuTFpNQUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhsem1hLkZJTFRFUl9ERUxUQSwgYiJ0b28gbG9uZyIpCisKKyAgICAgICAgIyBUZXN0IHdpdGggcGFyYW1ldGVycyB1c2VkIGJ5IHppcGZpbGUgbW9kdWxlLgorICAgICAgICBmaWx0ZXJzcGVjID0gbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKAorICAgICAgICAgICAgICAgIGx6bWEuRklMVEVSX0xaTUExLCBiIl1ceDAwXHgwMFx4ODBceDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJpZCJdLCBsem1hLkZJTFRFUl9MWk1BMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJwYiJdLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbHRlcnNwZWNbImxwIl0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1sibGMiXSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJkaWN0X3NpemUiXSwgOCA8PCAyMCkKKworICAgIGRlZiB0ZXN0X2ZpbHRlcl9wcm9wZXJ0aWVzX3JvdW5kdHJpcChzZWxmKToKKyAgICAgICAgc3BlYzEgPSBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoCisgICAgICAgICAgICAgICAgbHptYS5GSUxURVJfTFpNQTEsIGIiXVx4MDBceDAwXHg4MFx4MDAiKQorICAgICAgICByZWVuY29kZWQgPSBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoc3BlYzEpCisgICAgICAgIHNwZWMyID0gbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGx6bWEuRklMVEVSX0xaTUExLCByZWVuY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYzEsIHNwZWMyKQorCisKKyMgVGVzdCBkYXRhOgorCitJTlBVVCA9IGIiIiIKK0xBRVJURVMKKworICAgICAgIE8sIGZlYXIgbWUgbm90LgorICAgICAgIEkgc3RheSB0b28gbG9uZzogYnV0IGhlcmUgbXkgZmF0aGVyIGNvbWVzLgorCisgICAgICAgRW50ZXIgUE9MT05JVVMKKworICAgICAgIEEgZG91YmxlIGJsZXNzaW5nIGlzIGEgZG91YmxlIGdyYWNlLAorICAgICAgIE9jY2FzaW9uIHNtaWxlcyB1cG9uIGEgc2Vjb25kIGxlYXZlLgorCitMT1JEIFBPTE9OSVVTCisKKyAgICAgICBZZXQgaGVyZSwgTGFlcnRlcyEgYWJvYXJkLCBhYm9hcmQsIGZvciBzaGFtZSEKKyAgICAgICBUaGUgd2luZCBzaXRzIGluIHRoZSBzaG91bGRlciBvZiB5b3VyIHNhaWwsCisgICAgICAgQW5kIHlvdSBhcmUgc3RheSdkIGZvci4gVGhlcmU7IG15IGJsZXNzaW5nIHdpdGggdGhlZSEKKyAgICAgICBBbmQgdGhlc2UgZmV3IHByZWNlcHRzIGluIHRoeSBtZW1vcnkKKyAgICAgICBTZWUgdGhvdSBjaGFyYWN0ZXIuIEdpdmUgdGh5IHRob3VnaHRzIG5vIHRvbmd1ZSwKKyAgICAgICBOb3IgYW55IHVucHJvcG9ydGlvbmVkIHRob3VnaHQgaGlzIGFjdC4KKyAgICAgICBCZSB0aG91IGZhbWlsaWFyLCBidXQgYnkgbm8gbWVhbnMgdnVsZ2FyLgorICAgICAgIFRob3NlIGZyaWVuZHMgdGhvdSBoYXN0LCBhbmQgdGhlaXIgYWRvcHRpb24gdHJpZWQsCisgICAgICAgR3JhcHBsZSB0aGVtIHRvIHRoeSBzb3VsIHdpdGggaG9vcHMgb2Ygc3RlZWw7CisgICAgICAgQnV0IGRvIG5vdCBkdWxsIHRoeSBwYWxtIHdpdGggZW50ZXJ0YWlubWVudAorICAgICAgIE9mIGVhY2ggbmV3LWhhdGNoJ2QsIHVuZmxlZGdlZCBjb21yYWRlLiBCZXdhcmUKKyAgICAgICBPZiBlbnRyYW5jZSB0byBhIHF1YXJyZWwsIGJ1dCBiZWluZyBpbiwKKyAgICAgICBCZWFyJ3QgdGhhdCB0aGUgb3Bwb3NlZCBtYXkgYmV3YXJlIG9mIHRoZWUuCisgICAgICAgR2l2ZSBldmVyeSBtYW4gdGh5IGVhciwgYnV0IGZldyB0aHkgdm9pY2U7CisgICAgICAgVGFrZSBlYWNoIG1hbidzIGNlbnN1cmUsIGJ1dCByZXNlcnZlIHRoeSBqdWRnbWVudC4KKyAgICAgICBDb3N0bHkgdGh5IGhhYml0IGFzIHRoeSBwdXJzZSBjYW4gYnV5LAorICAgICAgIEJ1dCBub3QgZXhwcmVzcydkIGluIGZhbmN5OyByaWNoLCBub3QgZ2F1ZHk7CisgICAgICAgRm9yIHRoZSBhcHBhcmVsIG9mdCBwcm9jbGFpbXMgdGhlIG1hbiwKKyAgICAgICBBbmQgdGhleSBpbiBGcmFuY2Ugb2YgdGhlIGJlc3QgcmFuayBhbmQgc3RhdGlvbgorICAgICAgIEFyZSBvZiBhIG1vc3Qgc2VsZWN0IGFuZCBnZW5lcm91cyBjaGllZiBpbiB0aGF0LgorICAgICAgIE5laXRoZXIgYSBib3Jyb3dlciBub3IgYSBsZW5kZXIgYmU7CisgICAgICAgRm9yIGxvYW4gb2Z0IGxvc2VzIGJvdGggaXRzZWxmIGFuZCBmcmllbmQsCisgICAgICAgQW5kIGJvcnJvd2luZyBkdWxscyB0aGUgZWRnZSBvZiBodXNiYW5kcnkuCisgICAgICAgVGhpcyBhYm92ZSBhbGw6IHRvIHRoaW5lIG93bnNlbGYgYmUgdHJ1ZSwKKyAgICAgICBBbmQgaXQgbXVzdCBmb2xsb3csIGFzIHRoZSBuaWdodCB0aGUgZGF5LAorICAgICAgIFRob3UgY2Fuc3Qgbm90IHRoZW4gYmUgZmFsc2UgdG8gYW55IG1hbi4KKyAgICAgICBGYXJld2VsbDogbXkgYmxlc3Npbmcgc2Vhc29uIHRoaXMgaW4gdGhlZSEKKworTEFFUlRFUworCisgICAgICAgTW9zdCBodW1ibHkgZG8gSSB0YWtlIG15IGxlYXZlLCBteSBsb3JkLgorCitMT1JEIFBPTE9OSVVTCisKKyAgICAgICBUaGUgdGltZSBpbnZpdGVzIHlvdTsgZ287IHlvdXIgc2VydmFudHMgdGVuZC4KKworTEFFUlRFUworCisgICAgICAgRmFyZXdlbGwsIE9waGVsaWE7IGFuZCByZW1lbWJlciB3ZWxsCisgICAgICAgV2hhdCBJIGhhdmUgc2FpZCB0byB5b3UuCisKK09QSEVMSUEKKworICAgICAgICdUaXMgaW4gbXkgbWVtb3J5IGxvY2snZCwKKyAgICAgICBBbmQgeW91IHlvdXJzZWxmIHNoYWxsIGtlZXAgdGhlIGtleSBvZiBpdC4KKworTEFFUlRFUworCisgICAgICAgRmFyZXdlbGwuCisiIiIKKworQ09NUFJFU1NFRF9YWiA9ICgKKyAgICBiIlx4ZmQ3elhaXHgwMFx4MDBceDA0XHhlNlx4ZDZceGI0Rlx4MDJceDAwIVx4MDFceDE2XHgwMFx4MDBceDAwdC9ceGU1XHhhMyIKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDNceGRmXVx4MDBceDA1XHgxNFx4MDdiWFx4MTlceGNkXHhkZG5ceDk4XHgxNVx4ZTRceGI0XHg5ZCIKKyAgICBiIm9ceDFkXHhjNFx4ZTVcblx4MDNceGNjMmhceGM3XFxceDg2XHhmZlx4ZjhceGUyXHhmY1x4ZTdceGQ5XHhmZTZceGI4KCIKKyAgICBiIlx4YTh3ZFx4YzJcInUublx4MWVceGMzXHhmMlx4OGVceDhkXHg4Zlx4MDJceDE3L1x4YTY9XHhmMFx4YTJceGRmL01ceDg5IgorICAgIGIiXHhiZVx4ZGVceGE3XHgxY3pceDE4LV1ceGQ1XHhlZlx4MTNceDhmclpceDE1XHg4MFx4OGNceGY4XHg4ZG9ceGZhXHgxMiIKKyAgICBiIlx4OWIjei9ceGVmXHhmMFx4ZmFGXHgwMVx4ODJceGEzTVx4OGVceGExdFx4Y2E2IEJGJFx4ZTVRXHhhNFx4OThceGVlXHhkZSIKKyAgICBiImxceGU4XHg3Zlx4ZjBceDlkLGJuXHgwYlx4MTNceGQ0XHhhOFx4ODFceGU0Tlx4YzhceDg2XHgxNTNceGY1eDJceGEyTyIKKyAgICBiIlx4MTNAUVx4YTFceDAwL1x4YTVceGQwT1x4OTdceGRjb1x4YWVceGY3elx4YzRceGNkU1x4YjZ0PFx4MTZceGYyXHg5Y0kjIgorICAgIGIiXHg4OXVkXHhjNjZZXHhkOVx4ZWVceGU2XHhjZVx4MTJdXHhlNVx4ZjBceGFhXHg5Ni1QZVx4YWRlOlx4MDRcdFx4MWJceGY3IgorICAgIGIiXHhkYjdcblx4ODZceDFmcFx4YzhKXHhiYVx4ZjRceGYwVlx4YTlceGRjXHhmMFx4MDIlR1x4ZjlceGRmPT9ceDE1XHgxYiIKKyAgICBiIlx4ZTEoXHhjZVx4ODI9XHhkNklceGFjM1x4MTJceDBjUlx4YjdceGFlXHJceGIxaVx4MDNceDk1XHgwMVx4YmRceGJlXHhmYSIKKyAgICBiIlx4MDJzXHgwMVBceDlkXHg5NlhceGIxMmpceGM4TFx4YThceDg0Ylx4ZjZceGMzXHhkNGMtSFx4OTNvSmxceGQwaVFceGU0ayIKKyAgICBiIlx4ODRceDBiXHhjMVx4YjdceGJjXHhiMVx4MTdceDg4XHhiMVx4Y2E/QFx4ZjZceDA3XHhlYVx4ZTZ4XHhmMUgxMlBceDBmIgorICAgIGIiXHg4YVx4YzlceGVhdXdceGUzXHhiZVx4YWFpXHhhOVdceGQwXHg4MFx4Y2QjY2I1XHg5OVx4ZDhdXHhhOWRceDBjXHhiZCIKKyAgICBiIlx4YTJceGRjV2xceGVkVUdceGJmXHg4OXlGXHhmNzdceDgxdlx4YmQ1XHg5OFx4YmVoOFx4MThXXHgwOFx4ZjBceDFiXHg5OSIKKyAgICBiIjU6XHgxYT9yRFx4OTZceGExXHgwNFx4MGZceGFlXHhiYVx4ODVceGViXHg5ZDVAXHhmNVx4ODNceGQzN1x4ODNceDhhYyIKKyAgICBiIlx4MDZceGQ0XHg5N2lceGNkdFx4MTZTXHg4MmtceGY2S1x4MDF2eVx4ODhceDkxXHg5YjZUXHhkYWVcclx4ZmRdOmtceGJhbCIKKyAgICBiIlx4YTlceGJiYVx4YzM0XHhmOXJceGVifXJceGRiXHhjN1x4ZGIqXHg4Zlx4MDN6XHhkYzhoXHhjY1x4YzlceGQzXHhiY2wiCisgICAgYiJceGE1LVx4Y2JceGVhS1x4YTJceGM1XHgxNVx4YzBceGUzXHhjMVx4ODZaXHhmYlx4ZWJMXHhlMTNceGNmXHg5Y1x4ZTMiCisgICAgYiJceDFkXHhjOVx4ZWRceGMyXHgwNlx4Y2NceGNlIVx4OTJceGU1XHhmZVx4OWNeXHhhNTl3IFx4OWJQXHhhM1BLXHgwOGQiCisgICAgYiJceGY5XHhlMlp9XHhhN1x4YmZceGVkXHhlYiUkXHgwY1x4ODJceGI4L1x4YjBceDAxXHhhOSYsXHhmN3Foe1FceDk2KVx4ZjIiCisgICAgYiJxXHg5Nlx4YzNceDgwXHhiNFx4MTJceGIwXHhiYVx4ZTZvXHhmNCFceGI0W1x4ZDRceDhhd1x4MTBceGY3dFx4MGNceGIzIgorICAgIGIiXHhkOVx4ZDVceGMzYF5ceDgxXHgxMT8/XFxceGE0XHg5OVx4ODVSXHhkNFx4OGVceDgzXHhjOVx4MWVYXHhiZmFceGYxIgorICAgIGIiXHhhY1x4YjBceGVhXHhlYVx4ZDdceGQwXHhhYlx4MThceGUyXHhmMlx4ZWRceGUxXHhiN1x4YzlceDE4XHhjYlNceGU0PiIKKyAgICBiIlx4YzlceDk1SFx4ZThceGNiXHRcciVceGViXHhjNyQub1x4ZjFceGYzUlx4MTdceDFkYlx4YmJceGQ4VVx4YTVeXHhjY1MiCisgICAgYiJceDE2XHgwMVx4ODdceGYzL1x4OTNceGQxXHhmMHZceGMwclx4ZDdceGNjXHhhMkdrelx4Y2FceDgwXHgwZVx4ZmRceGQwIgorICAgIGIiXHg4Ylx4YmJceGQySXhceGIzXHgxZXlceGNhLTBceGUzel5ceGQ2XHhkNlx4OGZfXHhmMVx4OWRQXHg5ZmlceGE3XHhkMSIKKyAgICBiIlx4ZThceDkwXHg4NFx4ZGNceGJmXHhjZGt5XHg4ZVx4ZGNceDgxXHg3Zlx4YTNceGIyK1x4YmZceDA0XHhlZlx4ZDhcXCIKKyAgICBiIlx4YzRceGRmXHhlMVx4YjBceDAxXHhlOVx4OTNceGUzWVx4ZjFceDFkWVx4ZThoXHg4MVx4Y2ZceGYxd1x4Y2NceGI0XHhlZiIKKyAgICBiIiBceDhifFx4MDRceGVhXHg4M2VqXHhiZVx4MWZceGQ0elx4OWNgXHhkM1x4MWFceDkyQVx4MDZceGU1XHg4Zlx4YTlceDEzIgorICAgIGIiXHRceDllPVx4ZmFceDFjXHhlNV9ceDlmJXZceDFib1x4MTFaT1x4ZDhceGY0XHRceGRkTVx4MTYtXHgwNFx4ZmNceDE4PFwiIgorICAgIGIiQ01ceGRkZ35iXHhmNlx4ZWZceDhlXHgwY1x4ZDBceGRlfFx4YTAnXHg4YVx4MGNceGQ2eFx4YWUhSlx4YTZGXHg4OFx4MTV1IgorICAgIGIiXHgwMDhceDE3XHhiYzd5XHhiM1x4ZDh1XHhhY19ceDg1XHg4ZFx4ZTdceGMxQFx4OWNceGVjcWNceGEzI1x4YWRceGYxIgorICAgIGIiXHg5MzVceGI1KV9cclx4ZWMzXVx4MGZvXTVceGQwbXlceDA3XHg5Ylx4ZWVceDgxXHhiNVx4MGZceGNmSytceDAwXHhjMCIKKyAgICBiIlx4ZTRiXHgxMFx4ZTRceDBjXHgxYSBceDliXHhlMFx4OTd0XHhmNlx4YTFceDllXHg4NTBceGJhXHgwY1x4OWFceDhkXHhjOCIKKyAgICBiIlx4OGZceDA3XHhkN1x4YWVceGM4XHhmOStpXHhkY1x4YjlrXHhiMD5mXHgxOVx4Yjhcclx4YThceGY4XHgxZiRceGE1e3AiCisgICAgYiJceGM2XHg4ODBceGNlXHhkYlx4Y2ZceGNhX1x4ODZceGFjXHg4OGg2XHg4YlolJ1x4ZDBcblx4YmZceDBmXHg5Y1wiXHhiYSIKKyAgICBiIlx4ZTVceDg2XHg5Zlx4MGY3WD1tTlhbXHhjY1x4MTlGVVx4YzlceDg2MFx4YmNceDkwYSsqIFx4YWVfJFx4MDNceDFlXHhkMyIKKyAgICBiIlx4Y2RfXHhhMFx4OWNceGRlXHhhZjQ2cVx4YTVceGM5XHg5Mlx4ZDdceGNhXHhlM2BceDlkXHg4NX1ceGI0XHhmZlx4YjMiCisgICAgYiJceDgzXHhmYlx4YjZceGNhXHhhZWBceDBid1x4N2ZceGZjXHhkOFx4YWNWZVx4MTlceGM4XHgxN1x4MGJaXHhhZFx4ODgiCisgICAgYiJceGViI1x4OTdceDAzXHgxM1x4YjFkXHgwZntceDBjXHgwNHdceDA3XHJceDk3XHhiZFx4ZDZceGMxXHhjM0I6XHg5NVx4MDgiCisgICAgYiJeXHgxMFZceGFlYUhceDAyXHhkOVx4ZTNcblxcXHgwMVhceGY2XHg5Y1x4OGFceDA2dSMlXHhiZSpceGExXHgxOHZceDg1IgorICAgIGIiXHhlYyFcdDRceDAwXHgwMFx4MDBceDAwVmo/dUxVXHhmM1x4YTZceDAwXHgwMVx4ZmJceDA3XHg4MVx4MGZceDAwXHgwMHR3IgorICAgIGIiXHg5OVBceGIxXHhjNGdceGZiXHgwMlx4MDBceDAwXHgwMFx4MDBceDA0WVoiCispCisKK0NPTVBSRVNTRURfQUxPTkUgPSAoCisgICAgYiJdXHgwMFx4MDBceDgwXHgwMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwMFx4MDVceDE0XHgwN2JYXHgxOSIKKyAgICBiIlx4Y2RceGRkblx4OThceDE1XHhlNFx4YjRceDlkb1x4MWRceGM0XHhlNVxuXHgwM1x4Y2MyaFx4YzdcXFx4ODZceGZmXHhmOCIKKyAgICBiIlx4ZTJceGZjXHhlN1x4ZDlceGZlNlx4YjgoXHhhOHdkXHhjMlwidS5uXHgxZVx4YzNceGYyXHg4ZVx4OGRceDhmXHgwMiIKKyAgICBiIlx4MTcvXHhhNj1ceGYwXHhhMlx4ZGYvTVx4ODlceGJlXHhkZVx4YTdceDFjelx4MTgtXVx4ZDVceGVmXHgxM1x4OGZyWiIKKyAgICBiIlx4MTVceDgwXHg4Y1x4ZjhceDhkb1x4ZmFceDEyXHg5YiN6L1x4ZWZceGYwXHhmYUZceDAxXHg4Mlx4YTNNXHg4ZVx4YTF0IgorICAgIGIiXHhjYTYgQkYkXHhlNVFceGE0XHg5OFx4ZWVceGRlbFx4ZThceDdmXHhmMFx4OWQsYm5ceDBiXHgxM1x4ZDRceGE4XHg4MSIKKyAgICBiIlx4ZTROXHhjOFx4ODZceDE1M1x4ZjV4Mlx4YTJPXHgxM0BRXHhhMVx4MDAvXHhhNVx4ZDBPXHg5N1x4ZGNvXHhhZVx4Zjd6IgorICAgIGIiXHhjNFx4Y2RTXHhiNnQ8XHgxNlx4ZjJceDljSSNceDg5dWRceGM2NllceGQ5XHhlZVx4ZTZceGNlXHgxMl1ceGU1XHhmMCIKKyAgICBiIlx4YWFceDk2LVBlXHhhZGU6XHgwNFx0XHgxYlx4ZjdceGRiN1xuXHg4Nlx4MWZwXHhjOEpceGJhXHhmNFx4ZjBWXHhhOSIKKyAgICBiIlx4ZGNceGYwXHgwMiVHXHhmOVx4ZGY9P1x4MTVceDFiXHhlMShceGNlXHg4Mj1ceGQ2SVx4YWMzXHgxMlx4MGNSXHhiNyIKKyAgICBiIlx4YWVcclx4YjFpXHgwM1x4OTVceDAxXHhiZFx4YmVceGZhXHgwMnNceDAxUFx4OWRceDk2WFx4YjEyalx4YzhMXHhhOCIKKyAgICBiIlx4ODRiXHhmOFx4MWVwbFx4ZWFqclx4ZDE9XHRceDAzXHhkZFx4MTNceDFiMyFFXHhmOXZWXHhkYUZceGYzXHhkN1x4YjQiCisgICAgYiJceDBjXHhhOVB+XHhlY1x4ZGVFXHhlMzdceGY2XHgxZFx4YzZceGJiXHhkZGMlXHhiNlx4MGZJXHgwN1x4ZjA7XHhhZlx4ZTciCisgICAgYiJceGEwXHg4Ylx4YTdaXHg5OShceGU5XHhlMlx4ZjBvXHgxOD5gXHhlMVx4YWFceGE4XHhkOVx4YTFceGIyfVx4ZTdceDhkIgorICAgIGIiXHg4MzRUXHhiNlx4ZWZceGMxXHhkZVx4ZTNceDk4XHhiY0RceDAzTUFAXHhkOFx4ZWRceGRjXHhjOFx4OTNceDAzXHgxYSIKKyAgICBiIlx4OTNceDBiXHg3Zlx4OTRceDEyXHgwYlx4MDJTYVx4MThceGM5XHhjNVx4OWJUSkV9XHhmNlx4YzhnXHgxNyNaVlx4MDEiCisgICAgYiJceGM5XHg5ZGNceDgzXHgwZT4wXHgxNlx4OTBTXHhiOC9ceDAzeV9ceDE4XHhmYShceGQ3XHgwYnJceGEyXHhiMFx4YmE/IgorICAgIGIiXHg4Y1x4ZTZceDgzQFx4ODRceGRmXHgwMjpceGM1elx4OWVceGE2XHg4NFx4YzlceGY1QmV5WFx4ODNceDFhXHhmMSA6XHQiCisgICAgYiJceGY3XHgxOVx4ZmV4RFxcJkdceGYzXHg4NVlceGEySlx4ZjlceDBidntceDg5XHhmNlx4ZTcpQVx4YWZceDA0b1x4MDAiCisgICAgYiJceDA3NVx4ZDNceGUwXHg3Zlx4OTdceDk4Rlx4MGY/dlx4OTNceGVkVnRUZlx4YjVceDk3XHg4M1x4ZWRceDE5XHhkN1x4MWEiCisgICAgYiIna1x4ZDdceGQ5XHhjNVxcWVx4ZDFceGRjXHgwN1x4MTV8d1x4YmNceGFjZFx4ODdceDA4ZFx4ZWNceGE3XHhmNlx4ODIiCisgICAgYiJceGZjXHhiM1x4OTNceGViXHhiOSBceDhkXHhiYyAsXHhiM1hceGIwXHhkMnNceGQ3XHhkMVx4ZmZ2XHgwNVx4ZGZ9XHhhMiIKKyAgICBiIlx4OTZceGZiJVxuXHhkZlx4YTJceDdmXHgwOC5ceGExNlxuXHhlMFx4MTlceDkzXHg3Zmhcblx4MWNceDhjXHgwZiBceDExIgorICAgIGIiXHhjNkJsXHg5NVx4MTlVfVx4ZTRzXHhiNVx4MTBIXHhlYVx4ODZwQlx4ZTg4XHg5NVx4YmVceDhjWlx4ZGJceGU0XHg5NEEiCisgICAgYiJceDkyXHhiOTt6XHhhYVx4YTd7XHgxYzUhXHhjMFx4YWZceGMxQVx4ZjlceGRhXHhmMCRceGIwXHgwMnFnXHhjOFx4YzcvfCIKKyAgICBiIlx4YWZyXHg5OV5ceDkxXHg4OFx4YmZceDAzXHhkOT1ceGQ3blx4ZGE2ez44XG5ceGM3Olx4YTknXHhiYS5ceDBiXHhlMiIKKyAgICBiIlx4YjVceDFkXHgwZVxuXHg5YVx4OGVceDA2XHg4ZjpceGRkXHg4MidbXHhjM1wid0QkXHhhN3dceGVjcVx4OGMsMVx4OTMiCisgICAgYiJceGQwLFx4YWUyd1x4OTNceDEyJEpkXHgxOW1nXHgwMlx4OTNceDljQVx4OTVceDlkJlx4Y2E4aVx4OWNceGIwO1x4ZTdOUSIKKyAgICBiIlx4MWZyaFx4OGJlTDtceGIwbVx4ZWVceDA3UVx4OWJceGM2XHhkOFx4MDNceGI1XHhkZU5ceGQ0XHhmZVx4OThceGQwXHhkYyIKKyAgICBiIlx4MWFbXHgwNFx4ZGVceDFhXHhmNlx4OTFqXHhmOEVPbGlceDhlQl5ceDFkXHg4Mlx4MDdceGIyXHhiNVJdXHhiN1x4ZDciCisgICAgYiJceGU5XHhhNlx4YzMuXHhmYlx4ZjAtXHhiNGVceDliXHhkZVx4MDNceDg4XHhjNlx4YzFpTlx4MGVceDg0d2JRXHhkZn4iCisgICAgYiJceGU5XHhhNFx4ODg0XHg5NmtNXHhiYylUXHhmM1x4ODlceDk3XHgwZlx4MTQzXHhlNylceGEwXHhiM0JceDAwXHhhOFx4YWYiCisgICAgYiJceDgyXlx4Y2JceGM3Li5ceGRiXHhjN1x0XHg5ZEhceGVlNVx4ZTkjXHhlNk5WXHg5NFx4Y2IkS2tceGUzXHg3ZlxyXHhlM3QiCisgICAgYiJceDEyXHhjZidceGVmUlx4OGJceGY0Mlx4Y2YtTEhceGFjXHhlNVx4MWYwfj9TT1x4ZWJceGMxRVx4MWFceDFjXVx4ZjIiCisgICAgYiJceGM0PFx4MTFceDAyXHgxMFowYSo/XHhlNHJceGZmXHhmYlx4ZmZceGY2XHgxNG5HXHhlYWReXHhkNlx4ZWY4XHhiNnVFSSIKKyAgICBiIlx4OTlcblZceGUyXHhiM1x4OTVceDhlXHg4M1x4ZjZpIVx4YjUmMUZceGIxRFBceGY0IFNPM0Qhd1x4OTlfR1x4N2YrXHg5MCIKKyAgICBiIi5ceGFiXHhiYl1ceDkxPlx4YzkjaDtceDBmNUpceDkxS1x4ZjReLVtceDllXHg4YVxcXHg5NFx4Y2FceGFmXHhmNlx4MTkiCisgICAgYiJceGQ0XHhhMVx4OWJceGM0XHhiOHBceGExXHhhZVx4MTVceGU5clx4ODRceGUwXHhjYXIubCBbXVx4OGJceGFmKzBceGYyZyIKKyAgICBiIlx4MDFhS1lceGRmSVx4Y2YsXG5ceGU4XHhmMFx4ZTdWXHg4MF8jXHhiMlx4ZjJceGE5XHgwNlx4OGM+d1x4ZTJXLFx4ZjQiCisgICAgYiJceDhjXHJceGY5NjNceGY1Slx4Y2MyXHgwNT1rVFx4ZWFVdGlceGU1X1x4Y2VceDFiXHhmYVx4OGRsXHgwMmhceGVmXHhhOCIKKyAgICBiIlx4ZmJmXHg3Zlx4ZmZceGYwXHgxOVx4ZWF4IgorKQorCitGSUxURVJTX1JBV18xID0gW3siaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgInByZXNldCI6IDN9XQorQ09NUFJFU1NFRF9SQVdfMSA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDNceGZkXVx4MDBceDA1XHgxNFx4MDdiWFx4MTlceGNkXHhkZG5ceDk2Y3lxXHhhMVx4ZGRceGVlIgorICAgIGIiXHhmOFx4ZmFtXHhlMydceDg4XHhkM1x4ZmZceGU0XHg5ZSBceGNlUVx4OTFceGE0XHgxNElceGY2XHhiOVx4OWRWTDhceDE1IgorICAgIGIiX1x4MGVceDEyXHhjM1x4ZWJceGJjXHhhNVx4Y2RcbldceDFkJD1SO1x4MWRceGY4azhcdFx4YjF7XHhkNFx4YzUrXHg5ZCIKKyAgICBiIlx4ODdjXHhlNVx4ZWZceDk4XHhiNFx4ZDdTM1x4Y2RceGNjXHhkMlx4ZWRceGE0XHgwZW1ceGU1XHhmNFx4ZGRceGQwYiIKKyAgICBiIlx4YmU0Klx4YWFceDBiXHhjNVx4MDhceDEwXHg4NStceDgxLlx4MTdceGFmOVx4YzliXHhlYVpyQVx4ZTIwXHg3ZnNcInIiCisgICAgYiJceGRhR1x4ODFceGRlXHg5MGN1XHhhNVx4ZGJceGE5LkFceDA4bFx4YjA8XHhmNlx4MDNceGRkT2lceGQwXHhjNVx4YjQiCisgICAgYiJceGVjXHhlY2c0dDZcIlx4YTZceGI4b1x4YjU/XHgxOF59XHhiNn1ceDAzWzpceGViXHgwM1x4YTlcbltceDg5bFx4MTlnIgorICAgIGIiXHgxNlx4YzgyXHhlZFx4MGJceGZiXHg4Nm5ceGEyXHg4NTdAXHg5M1x4Y2Q2VFx4YzN1XHhiMFx0XHhmOVx4MWJceDkxOCIKKyAgICBiIlx4ZmNbXHgxYlx4MWU0XHhiM1x4MTRceDA2UENWXHhhOFwiXHhmNVx4ODF4flx4ZTlceGI1Tlx4OWNLXHg5Zlx4YzZceGMzJSIKKyAgICBiIlx4YzhrOns2XHhlN1x4ZjdceGJkXHgwNVx4MDJceGI0XHhjNFx4YzNceGQzXHhmZFx4YzNceGE4XFxceGZjQFx4YjFGXyIKKyAgICBiIlx4YzhceDkwXHhkOXNVXHg5OFx4YWQ4XHgwNVx4MDdceGRlN0pceDhiTVx4ZDBceGIzO1hceGVjXHg4N1x4ZWZceGFlXHhiMyIKKyAgICBiImVPLFx4YjF6LGRceDExeVx4ZWVqbEJceDAyXHgxZFx4ZjI4XHgxZiNceDg5Nlx4Y2VceDBiXHhmMFx4ZjVceGE5UEtceDBmIgorICAgIGIiXHhiM1x4MTNQXHhkOFx4ODhceGQyXHhhMVx4MDhceDA0Qz9ceGRiXHg5NF9ceDlhXCJceGU5XHhlM2VceDFkXHhkZVx4OWIiCisgICAgYiJceGExXHhlOD5IXHg5OFx4MTA7XHhjNVx4MDMjXHhiNVx4OWQ0XHgwMVx4ZTdceGM1XHhiYSV2XHhhNDlceDk3QVx4ZTBcIiIKKyAgICBiIlx4OGNceGMyMlx4ZTNpXHhjMVx4OWRceGFiM1x4ZGZceGJlXHhmZERtN1x4MWJceDlkXHhhYlx4YjVceDE1bzpKXHg5MiIKKyAgICBiIlx4ZGJceDgxNlx4MTdceGMyT1x4OTlceDFiXHgwZVx4OGRceGYzXHRRXHhlZFx4OGVceDk1Uy9ceDE2TVx4YjJTXHgwNCIKKyAgICBiIlx4MGZceGMzSlx4YzZceGM3XHhlNFx4Y2JceGM1XHhmNFx4ZTdkXHgxNFx4ZTQ9XkJceGZiXHhkM0VceGQzXHgxZVx4Y2QiCisgICAgYiJceDkxXHhhNVx4ZDBHXHg4Zi5ceGY2XHhmOVx4MGJiJlx4ZDlceDlmXHhjMlx4ZmRqXHhhMlx4OWVceGM0XFxceDBlXHgxZEMiCisgICAgYiJ2XHhlOFx4ZDJceDhhP15IXHhlY1x4YWVceGViPlx4ZmVceGI4XHhhYlx4ZDRJcVlceDhjXHhkNEs3XHgxMVx4ZjREXHhkMFciCisgICAgYiJceGE1XHhiZVx4ZWFPXHhiZlx4ZDBceDA0XHhmZGxceDEwXHhhZTVceGQ0VVx4MTlceDA2XHhmOXtceGFhXHhlMFx4ODEiCisgICAgYiJceDBmXHhjZlx4YTNre1x4OTVceGJkXHgxOVx4YTJceGY4XHhlNFx4YTNceDA4TypceGYxXHhmMUItXHhjNyhceDBlUlx4ZmQiCisgICAgYiJARVx4OWZceGQzXHgxZTpceGZkVlx4YjdceDA0WVx4OTRceGViXVx4ODNceGM0XHhhNVx4ZDdceGMwZ1hceDk4XHhjZlx4MGYiCisgICAgYiJceGNkM1x4MDBdblx4MTdceGVjXHhiZFx4YTNZXHg4Nlx4YzVceGYzdVx4ZjYqXHhiZFRceGVkQSRBXHhkOUFceGU3XHg5OCIKKyAgICBiIlx4ZWZceDE0XHgwMlx4OWFceGZkaXdceGVjXHhhMFx4ODdceDExXHhkOSVceGM1XHhlYlx4OGE9XHhhZVx4YzBceGM0XHhjNiIKKyAgICBiIkRceDgwXHg4Zlx4YThceGQxXHhiYnFceGIyXHhjMFx4YTBceGY1Q3FwXHhlZUxceGUzXHhlNVx4ZGMgXHg4NFwiXHhlOSIKKyAgICBiIlx4ODB0XHg4M1x4MDVceGJhXHhmMVx4YzV+XHg5M1x4YzlceGYwXHgwMWNceGNlaXhceDlkXHhlZFx4YzUpbFx4MTYpXHhkMSIKKyAgICBiIlx4MDNAbFx4MDRceDdmXHg4N1x4YTV5blx4MWJceDAxRFx4YWE6XHhkMlx4OTZceGI0XHhiMz9ceGIwXHhmOVx4Y2VceDA3IgorICAgIGIiXHhlYlx4ODFceDAwXHhlNFx4YzNceGY1JV9ceGFlXHhkNFx4ZjlceGViXHhlMlxyaFx4YjIjXHhkNjdRXHgxNkRceDgyaG4iCisgICAgYiJceGQxXHhhM18/cVx4ZjBceGUyXHhhY1x4ZjMxN1x4OWVceGQwX1x4ODN8XHhmMVx4Y2FceGI3XHg5NVNceGFiV1x4MTIiCisgICAgYiJceGZmXHhkZHRceGY2OUxceDAxXHhmMnxceGRhV1x4ZGFceGVlc1x4OThMXHgxOFx4YjhfXHhlOCRceDgyXHhlYVx4ZDYiCisgICAgYiJceGQxRlx4ZDRceDBiXHhjZGtceDAxdmZceDg4aFx4YzNceGFlXHhiOTFceGM3UVx4OWZceGE1R1x4ZDlceGNjXHgxZlx4ZTMiCisgICAgYiI1XHhiMVx4ZGN5XHg3ZklceDhiY3dceDhlXHgxMHJJcFx4MDI6XHgxOXBfXHhjOHZceGNlYVwiXHhjMVx4ZDlceDkxXHgwMyIKKyAgICBiIlx4YmZlXHhiZVx4YTZceGIzXHhhOFx4MTRceDE4XHhjM1x4YWJIKm19XHhjMlx4YzFceDlhfT5sJVx4Y2VceDg0XHg5OSIKKyAgICBiIlx4YjNkXHhhZlx4ZDNceDgyXHgxNVx4ZGZceGMxXHhmYzVmT2dceDliXHhmY1x4OGVeJlx0QFx4Y2VceDlmXHgwNkpceGI4IgorICAgIGIiXHhiNVx4ODZceDFkXHhkYXtceDlmXHhhZVx4YjBceGZmXHgwMlx4ODFyXHg5MnpceDhjTVx4Yjdob1x4YzleXHg5Y1x4YjYiCisgICAgYiJceDljXHhhZVx4ZDFceGM5XHhmNFx4ZGZVN1x4ZDZcXCFceGVhXHgwYlx4OTRrXHhiOVVkflx4OThceGU3XHg4Nlx4OGF6IgorICAgIGIiXHgxMDtceGUzXHgxZFx4ZTVQR1x4ZjhceGE0XHgxMlx4MDV3XHg5OF5ceGM0XHhiMVx4YmJceGZiXHhjZlx4ZTBceDdmIgorICAgIGIiXHgwMzNTZlx4MGMgXHhiMVx4ZjZAXHg5NFx4ZTVceGEzXHhiMlx4YTdceDEwXHg5YVx4YzBceDE0XHhjM3NceGI1eFJEIgorICAgIGIiXHhmNGBXXHhkOVx4ZTVceGQzXHhjZlx4OTFcclRaLVhceGJlXHhiZlx4YjVceGUyXHhlZXxceDFhXHhiZlx4ZmJceDA4IgorICAgIGIiXHg5MVx4ZTFceGZjXHg5YVx4MThceGEzXHg4Ylx4ZDZeXHg4OVx4ZjVbXHhlZlx4ODdceGQxXHgwNlx4MWM3XHhkNlx4YTIiCisgICAgYiJcdFx0UTUvQFNceGMwNVx4ZDJWaEFLXHgwM1ZDXHJceDliXHg5M1x4ZDZNXHhmMXhPXHhhYU9ceGVkXHhiOTxceDBjXHhkYWUiCisgICAgYiIqXHhkMFx4MDdIazZceDlmRytceGExKVx4Y2RceDljbFx4ODdceGRiXHhlMVx4ZTdceGVmS31ceDg3NVx4YWJceGEwXHgxOXUiCisgICAgYiJceGY2KkZceGIzMlx4MDBceDAwXHgwMCIKKykKKworRklMVEVSU19SQVdfMiA9IFt7ImlkIjogbHptYS5GSUxURVJfREVMVEEsICJkaXN0IjogMn0sCisgICAgICAgICAgICAgICAgIHsiaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwKKyAgICAgICAgICAgICAgICAgICJwcmVzZXQiOiBsem1hLlBSRVNFVF9ERUZBVUxUIHwgbHptYS5QUkVTRVRfRVhUUkVNRX1dCitDT01QUkVTU0VEX1JBV18yID0gKAorICAgIGIiXHhlMFx4MDdceDgwXHgwNVx4OTFdXHgwMFx4MDVceDE0XHgwNi1ceGQ0XHhhOGQ/XHhlZlx4YmVceGFmSFx4ZWVceDA0MiIKKyAgICBiIlx4Y2IuXHhiNWdceDhmXHhmYlx4MTRceGFiXHhhNVx4OWZceDAyNXpceGE0XHhkZFx4ZDhcdFt9V1x4ZjhceDBjXHgxZG1IIgorICAgIGIiXHhmYVx4MDVceGZjZ1x4YmFceGU1XHgwMVFceDBiXHg4M1JceGI2QVx4ODg1XHhjMFx4YmFceGVlXG5ceDFjdn5ceGRlOm8iCisgICAgYiJceDA2OkpceGE3XHgxMUNjXHhlYVx4ZjdceGU1Km9ceGY3XHg4M1xcbFx4YmRFXHgxOVx4MWZcclx4YThceDEwXHhiNDIiCisgICAgYiJceDBjYVV7XHhkN1x4Yjh3XHhkY1x4YmVceDFiXHhmYzhceGI0XHhjY1x4ZDM4XFxceGY2XHgxM1x4ZjZceGU3XHg5OFx4ZmEiCisgICAgYiJceGM3W1x4MTdfOVx4ODYlXHhhOFx4ZjhceGFhXHhiOFx4OGRmcyNceDFlPVx4ZWQ8XHg5Mlx4MTBcXHRceGZmXHg4Nlx4ZmIiCisgICAgYiI9XHg5ZTdceDE4XHgxZGZ0XFxceGI1XHgwMVx4OTVRXHhjNVx4MTlceGIzOFx4ZTBceGQ0XHhhYVx4MDdceGMzXHg3Zlx4ZDgiCisgICAgYiJceGEyXHgwMD4tXHhkM1x4OGVceGExI1x4ZmFceDgzQXJBbVx4ZGJKflx4OTNceGEzQlx4ODJceGUwXHhjN1x4Y2MoXHgwOGAiCisgICAgYiJXS1x4YWRceDFiXHg5NGthalx4MDQgXHhkZVx4ZmNceGUxXHhlZFx4YjBceDgyXHg5MVx4ZWZTXHg4NCVceDg2XHhmYmkiCisgICAgYiJceDk5WFx4ZjFCXHhlN1x4OTA7RVx4ZmRlXHg5OFx4ZGFceGNhXHhkNlRceGI0YmdceGE0XG5ceDlhalx4ZDFceDgzXHg5ZV0iCisgICAgYiJcIlx4N2ZNXHhiNVx4MGZyXHhkMlxcXHhhNWp+UFx4MTBHSFx4YmZOKlpceDEwLlx4ODFcdHBFXHg4YVx4MDhceGJlMVx4YmQiCisgICAgYiJceGNkXHhhOVx4ZTFceDhkXHgxZlx4MDRceGY5XHgwZUhceGI5XHhhZVx4ZDZceGMzXHhjMVx4YTVceGE5XHg5NVBceGRjfiIKKyAgICBiIlx4ZmZceDAxXHg5MzBceGE5XHgwNFx4ZjZceDAzXHhmZVx4YjVKS1x4YzNdXHhkZDlceGIxXHhkM1x4ZDdGXHhmNVx4ZDEiCisgICAgYiJceDFlXHhhMFx4MWNfXHhlZFtceDBjXHhhZVx4ZDRceDhiXHg5NDZceGViXHhiZlx4YmJceGUzJGtTe1x4YjVceDgwLGY6U2oiCisgICAgYiJceDBmXHgwOHpceDFjXHhmNVx4ZThceGU2XHhhZVx4OThceGIwUX5yXHgwZlx4YjBceDA1P1x4YjZceDkwXHgxOVx4MDImIgorICAgIGIiXHhjYlx4ODBcdFx4YzRceGVhXHg5Y3x4XHhjZVx4MTBceDljXHhjNXxceGNiZGhoK1x4MGMnXHhjNVx4ODFceGMzM1x4YjUiCisgICAgYiJceDE0cVx4ZDZceGM1XHhlM2BaI1x4ZGNceDhhXHhhYlx4ZGRceGVhXHgwOFx4YzJJXHhlN1x4MDJse1x4ZWNceDE5Nlx4MDYiCisgICAgYiJceDkxXHg4ZFx4ZGNceGQ1XHhiM3hceGUxaHolXHhkMVx4ZjhceGE1XHhkZFx4OTghXHg4Y1x4MWNceGMxXHgxN1JVYVx4YmIiCisgICAgYiJceDk1XHgwZlx4ZTRYXHhlYTFceDBjXHhmMT1SXHhiZVx4YzYwXHhlM1x4YTRceDlhXHg5MGJkXHg5NyRdQlx4MDFceGRkIgorICAgIGIiXHgxZlx4ZTNoMmNceDFlXHhhMExgNFx4YzZ4XHhhM1pceDhhXHJceDE0XVReXHhkOFx4ODlceDFiXHg5MlxyO1x4ZWRZIgorICAgIGIiXHgwY1x4ZWZceDhkOXpceGYzb1x4YjYpZlx4YTldJG5ccnBceDkzXHhkMFx4MTBceGE0XHgwOFx4YjhceGIyXHg4Ylx4YjYiCisgICAgYiJceDhmXHg4MFx4YWU7XHhkY1FceGYxXHhmYVx4OWFceDA2XHg4ZVx4YTVceDBlXHg4Y0tceDljIEBceGFhOlVjWFxuIVx4YzYiCisgICAgYiJceDAyXHgxMlx4Y2JceDFiXCI9XHgxNi5ceDFmXHgxNzZceGYyZz1ceGUxV25ceGU5XHhlMVx4ZDRceGYxT1x4YWRceDE1IgorICAgIGIiXHg4Nlx4ZTlceGEzVFx4YWZceGE5XHhkN0RceGI1XHhkMVczcG50XHgxMVx4YzdWT2pceGI3TVx4YzRpXHhhMVx4ZjEkMyIKKyAgICBiIlx4YmJceGRjXHg4YWZceGIwXHhjNVlcclx4ZDFceGZiXHhmMlx4ZTdLXHhlNlx4YzVod09ceGZlXHg4YzJeJlx4MDdceGQ1IgorICAgIGIiXHgxZlZceDE5XHhmZFxyXHgxNFx4ZDJpPXlaXHhlNm9ceGFmXHhjNlx4YjZceDkyXHg5ZFx4YzRcclx4YjNceGFmd1x4YWMlIgorICAgIGIiXHhjZmNceDFhXHhmMWBdXHhmMlx4MWFceDllXHg4MDhceGVkbVx4ZWRRXHhiMlx4ZmVceGU0aGBbcVx4YWVceGUwXHgwZiIKKyAgICBiIlx4YmEwZ1x4YjZcIk5ceGMzXHhmYlx4Y2ZSXHgxMVx4YzVceDE4KShceGM0MFxcXHhhM1x4MDJceGQ5RyFceGNlXHgxYiIKKyAgICBiIlx4YzFceDk2eFx4YjVceGM4elx4MWZceDAxXHhiNFx4YWZceGRlXHhjMlx4Y2RceDA3XHhlN0hceGIzeVx4YThNXG5cXEFcdCIKKyAgICBiImFyXHhkZE1ceDhiXHg5YVx4ZWFceDg0XHg5YiFceGYxXHg4ZFx4YjFceGYxflx4MWVcclx4YTVIXHhiYVx4ZjFceDg0byIKKyAgICBiIlx4ZGFceDg3XHgwMWhceGU5XHhhMlx4YmVceGJlcU5ceDlkXHg4NFx4MGIhV0dceGRhXHhhMVx4YTVBXHhiN1x4YzdgaiIKKyAgICBiIlx4MTVceGYyXHhlOVx4ZGQ/XHgwMTVCXHhkMn5FXHgwNlx4MTFceGUwXHg5MSFceDA1Xlx4ODBceGRkXHhhOHlceDE1fSIKKyAgICBiIlx4YTEpXHhiMSlceDgxXHgxOFx4ZjRceGY0XHhmOFx4YzBceGVmRFx4ZTNceGRiMmZceDFlXHgxMlx4YWJ1XHhjOVx4OTciCisgICAgYiJceGNkXHgxZVx4YTdceDBjXHgwMng0XzZceDAzXHhjNCR0XHhmMzlceDk0XHgxZD1ceGNiXHhiZnZcXFx4ZjVceGEzXHgxZCIKKyAgICBiIlx4OWQ4amtceDk1XHgxMylmZlx4ZjluXHhjNFx4YTlceGUzXHgwMVx4YjhceGRhXHhmYlx4YWJceGRmTVx4OTlceGZiXHgwNSIKKyAgICBiIlx4ZTBceGU5XHhiMElceGY0RVx4YWJceGUyXHgxNVx4YTNceDAzNVx4ZTdceGRlVFx4ZWVceDgycFx4YjRceDg4XHhkMyIKKyAgICBiIlx4ODkzXHg5Yy9ceGMwXHhkNlx4OGZvdTtceGY2XHg5NVBSXHhhOVx4YjJceGMxXHhlZkZqXHhlMlx4YTckXHhmN2hceGYxIgorICAgIGIiXHhkZksoXHhjOWNceGJhN1x4ZThceGUzKVx4ZGRceGIyLFx4ODNceGZiXHg4NFx4MTgueVx4MThRaVx4ODhceGY4YGgtIgorICAgIGIiXHhlZlx4ZDVceGVkXHg4Y1x0XHhkOFx4YzNeXHgwZlx4MDBceGI3XHhkMFshXHhhZk1ceDliXHhkNy5ceDA3XHhkOFx4ZmIiCisgICAgYiJceGQ5XHhlMi1TK1x4YWE4LFx4YTBceDAzXHgxYiBceGVhXHhhOFx4MDBceGMzXHhhYn5ceGQwJGVceGE1XHg3Zlx4ZjciCisgICAgYiJceDk1UF1ceDEyXHgxOWlceGQ5XHg3Zm9ceDBjXHhkOGdeXHJFXHhhNVx4ODBceDE4XHhjNVx4MDFceDgwXHhhZWtgXHhmZn4iCisgICAgYiJceGI2eVx4ZTcrXHhlNVx4MTFeRFx4YTdceDg1XHgxOFwiIVx4ZDZceGQyXHhhN1x4ZjRceDFlVFx4ZGJceDAyXHhlMTUiCisgICAgYiJceDAyWVx4YmNceDE3NFpceGU3XHg5Y0hceDFjXHhiZlx4MGZceGM2XHhlOWZdXHhjZlx4OGN4XHhiY1x4ZTVceDE1XHg5NCIKKyAgICBiIlx4ZmMzXHhiY1x4YTdUVUhceGYxXHg4NFx4MWJceGY3XHhhOXlceGMwN1x4ODRceGY4WFx4ZDhceGVmXHhmYyBceDFjXHhkOCIKKyAgICBiIiggL1x4ZjJceGI3XHhlY1x4YzFcXFx4OGNceGY2XHg5NVx4YTFceDAzSlx4ODN2UDhceGUxXHhlM1x4YmJ+XHhjMjRrQSIKKyAgICBiIlx4OTh5XHhhMVx4ZjJQXHhlOVx4OWRceGM5Slx4ZjhOXHg5OVx4YjRceGNlYU9ceGRlXHgxNlx4MWVceGMyXHgxOVx4YTciCisgICAgYiJceDAzXHhkMlx4ZTBceDhmOlx4MTVceGYzXHg4NFx4OWVceGVlXHhlNmVceGI4XHgwMnFceGM3QUNceDFlbXdceGZkXHQiCisgICAgYiJceDlhXHgxZXVceGMxXHhhOVx4Y2FDd1VQXHgwMFx4YTVceGY3OEw0dyFceDkxTDIgXHg4N1x4ZDBceGYyXHgwNlx4ODFqIgorICAgIGIiXHg4MDtceDAzVlx4MDZceDg3XHg5Mlx4Y2JceDkwbHZARVx4OGRceDhkXHhhNVx4YTZceGU3WltceGRmXHhkNkVceDAzYD4iCisgICAgYiJceDhmXHhkZVx4YTFiWlx4ODRceGQwXHhhOWBceDA1XHgwZXtceDgwO1x4ZTNceGJlZlx4OGRceDFkXHhlYmsxLlx4ZTMiCisgICAgYiJceGU5Tlx4MTVceGY3XHhkNChceGZhXHhiYlx4MTVceGJkdVx4ZjdceDdmXHg4Nlx4YWUhXHgwM0xceDFkXHhiNVx4YzEiCisgICAgYiJceGI5XHgxMVx4ZGJceGQwXHg5M1x4ZTRceDAyXHhlMVx4ZDJceGNiQmpjX1x4ZTh9ZFx4ZGJceGMzXHhhMFlceGJlXHhjOS8iCisgICAgYiJceDk1XHgwMVx4YTMsXHhlNmJsQFx4MDFceGRicFx4YzJceGNlXHgxNFx4MTY4XHhjMnFceGUzdUhceDg5WFx4YTRceGE5IgorICAgIGIiXHgxOVx4MWRceGMxfVx4N2ZPWFx4MTlceDlmXHhkZFx4YmVceDg1XHg4M1x4ZmZceDk2XHgxZWVceDgyT2BDRj1LXHhlYiRJIgorICAgIGIiXHgxN19ceGVmWFx4OGJKJ3ZceGRlXHgxZitceGQ5LnZceGY4VHZceDE3XHhmMlx4OWY1XHgxOVx4ZTFceGI5XHg5MVx4YThTIgorICAgIGIiXHg4Nlx4YmRceDFhXCIoXHhhNXhceDhkQ1x4MDNYXHg4MVx4OTFceGE4XHgxMVx4YzRwU1x4MTNceGJjXHhmMidKXHhhZSEiCisgICAgYiJceGVmXHhlZlx4ODRHXHRceDhkXHhjNFx4MTBceDEzMlx4MDBvU1x4OWVceGUwXHhlNGRceDhmXHhiOHlceGFjXHhhNlx4OWYiCisgICAgYiIsXHhiOGZceDg3XHJceGRmXHg5ZUVceDBmXHhlMVx4ZDBcXExceDAwXHhiMlx4ZTFoXHg4NFx4ZWZ9XHg5OFx4YThceDExIgorICAgIGIiXHhjY1cjXFxceDgzXHg3Zm9ceGJielx4OGZceDAwIgorKQorCitGSUxURVJTX1JBV18zID0gW3siaWQiOiBsem1hLkZJTFRFUl9JQTY0LCAic3RhcnRfb2Zmc2V0IjogMHgxMDB9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfTFpNQTJ9XQorQ09NUFJFU1NFRF9SQVdfMyA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDNceGRmXVx4MDBceDA1XHgxNFx4MDdiWFx4MTlceGNkXHhkZG5ceDk4XHgxNVx4ZTRceGI0XHg5ZCIKKyAgICBiIm9ceDFkXHhjNFx4ZTVcblx4MDNceGNjMmhceGM3XFxceDg2XHhmZlx4ZjhceGUyXHhmY1x4ZTdceGQ5XHhmZTZceGI4KCIKKyAgICBiIlx4YTh3ZFx4YzJcInUublx4MWVceGMzXHhmMlx4OGVceDhkXHg4Zlx4MDJceDE3L1x4YTY9XHhmMFx4YTJceGRmL01ceDg5IgorICAgIGIiXHhiZVx4ZGVceGE3XHgxY3pceDE4LV1ceGQ1XHhlZlx4MTNceDhmclpceDE1XHg4MFx4OGNceGY4XHg4ZG9ceGZhXHgxMiIKKyAgICBiIlx4OWIjei9ceGVmXHhmMFx4ZmFGXHgwMVx4ODJceGEzTVx4OGVceGExdFx4Y2E2IEJGJFx4ZTVRXHhhNFx4OThceGVlXHhkZSIKKyAgICBiImxceGU4XHg3Zlx4ZjBceDlkLGJuXHgwYlx4MTNceGQ0XHhhOFx4ODFceGU0Tlx4YzhceDg2XHgxNTNceGY1eDJceGEyTyIKKyAgICBiIlx4MTNAUVx4YTFceDAwL1x4YTVceGQwT1x4OTdceGRjb1x4YWVceGY3elx4YzRceGNkU1x4YjZ0PFx4MTZceGYyXHg5Y0kjIgorICAgIGIiXHg4OXVkXHhjNjZZXHhkOVx4ZWVceGU2XHhjZVx4MTJdXHhlNVx4ZjBceGFhXHg5Ni1QZVx4YWRlOlx4MDRcdFx4MWJceGY3IgorICAgIGIiXHhkYjdcblx4ODZceDFmcFx4YzhKXHhiYVx4ZjRceGYwVlx4YTlceGRjXHhmMFx4MDIlR1x4ZjlceGRmPT9ceDE1XHgxYiIKKyAgICBiIlx4ZTEoXHhjZVx4ODI9XHhkNklceGFjM1x4MTJceDBjUlx4YjdceGFlXHJceGIxaVx4MDNceDk1XHgwMVx4YmRceGJlXHhmYSIKKyAgICBiIlx4MDJzXHgwMVBceDlkXHg5NlhceGIxMmpceGM4TFx4YThceDg0Ylx4ZjZceGMzXHhkNGMtSFx4OTNvSmxceGQwaVFceGU0ayIKKyAgICBiIlx4ODRceDBiXHhjMVx4YjdceGJjXHhiMVx4MTdceDg4XHhiMVx4Y2E/QFx4ZjZceDA3XHhlYVx4ZTZ4XHhmMUgxMlBceDBmIgorICAgIGIiXHg4YVx4YzlceGVhdXdceGUzXHhiZVx4YWFpXHhhOVdceGQwXHg4MFx4Y2QjY2I1XHg5OVx4ZDhdXHhhOWRceDBjXHhiZCIKKyAgICBiIlx4YTJceGRjV2xceGVkVUdceGJmXHg4OXlGXHhmNzdceDgxdlx4YmQ1XHg5OFx4YmVoOFx4MThXXHgwOFx4ZjBceDFiXHg5OSIKKyAgICBiIjU6XHgxYT9yRFx4OTZceGExXHgwNFx4MGZceGFlXHhiYVx4ODVceGViXHg5ZDVAXHhmNVx4ODNceGQzN1x4ODNceDhhYyIKKyAgICBiIlx4MDZceGQ0XHg5N2lceGNkdFx4MTZTXHg4MmtceGY2S1x4MDF2eVx4ODhceDkxXHg5YjZUXHhkYWVcclx4ZmRdOmtceGJhbCIKKyAgICBiIlx4YTlceGJiYVx4YzM0XHhmOXJceGVifXJceGRiXHhjN1x4ZGIqXHg4Zlx4MDN6XHhkYzhoXHhjY1x4YzlceGQzXHhiY2wiCisgICAgYiJceGE1LVx4Y2JceGVhS1x4YTJceGM1XHgxNVx4YzBceGUzXHhjMVx4ODZaXHhmYlx4ZWJMXHhlMTNceGNmXHg5Y1x4ZTMiCisgICAgYiJceDFkXHhjOVx4ZWRceGMyXHgwNlx4Y2NceGNlIVx4OTJceGU1XHhmZVx4OWNeXHhhNTl3IFx4OWJQXHhhM1BLXHgwOGQiCisgICAgYiJceGY5XHhlMlp9XHhhN1x4YmZceGVkXHhlYiUkXHgwY1x4ODJceGI4L1x4YjBceDAxXHhhOSYsXHhmN3Foe1FceDk2KVx4ZjIiCisgICAgYiJxXHg5Nlx4YzNceDgwXHhiNFx4MTJceGIwXHhiYVx4ZTZvXHhmNCFceGI0W1x4ZDRceDhhd1x4MTBceGY3dFx4MGNceGIzIgorICAgIGIiXHhkOVx4ZDVceGMzYF5ceDgxXHgxMT8/XFxceGE0XHg5OVx4ODVSXHhkNFx4OGVceDgzXHhjOVx4MWVYXHhiZmFceGYxIgorICAgIGIiXHhhY1x4YjBceGVhXHhlYVx4ZDdceGQwXHhhYlx4MThceGUyXHhmMlx4ZWRceGUxXHhiN1x4YzlceDE4XHhjYlNceGU0PiIKKyAgICBiIlx4YzlceDk1SFx4ZThceGNiXHRcciVceGViXHhjNyQub1x4ZjFceGYzUlx4MTdceDFkYlx4YmJceGQ4VVx4YTVeXHhjY1MiCisgICAgYiJceDE2XHgwMVx4ODdceGYzL1x4OTNceGQxXHhmMHZceGMwclx4ZDdceGNjXHhhMkdrelx4Y2FceDgwXHgwZVx4ZmRceGQwIgorICAgIGIiXHg4Ylx4YmJceGQySXhceGIzXHgxZXlceGNhLTBceGUzel5ceGQ2XHhkNlx4OGZfXHhmMVx4OWRQXHg5ZmlceGE3XHhkMSIKKyAgICBiIlx4ZThceDkwXHg4NFx4ZGNceGJmXHhjZGt5XHg4ZVx4ZGNceDgxXHg3Zlx4YTNceGIyK1x4YmZceDA0XHhlZlx4ZDhcXCIKKyAgICBiIlx4YzRceGRmXHhlMVx4YjBceDAxXHhlOVx4OTNceGUzWVx4ZjFceDFkWVx4ZThoXHg4MVx4Y2ZceGYxd1x4Y2NceGI0XHhlZiIKKyAgICBiIiBceDhifFx4MDRceGVhXHg4M2VqXHhiZVx4MWZceGQ0elx4OWNgXHhkM1x4MWFceDkyQVx4MDZceGU1XHg4Zlx4YTlceDEzIgorICAgIGIiXHRceDllPVx4ZmFceDFjXHhlNV9ceDlmJXZceDFib1x4MTFaT1x4ZDhceGY0XHRceGRkTVx4MTYtXHgwNFx4ZmNceDE4PFwiIgorICAgIGIiQ01ceGRkZ35iXHhmNlx4ZWZceDhlXHgwY1x4ZDBceGRlfFx4YTAnXHg4YVx4MGNceGQ2eFx4YWUhSlx4YTZGXHg4OFx4MTV1IgorICAgIGIiXHgwMDhceDE3XHhiYzd5XHhiM1x4ZDh1XHhhY19ceDg1XHg4ZFx4ZTdceGMxQFx4OWNceGVjcWNceGEzI1x4YWRceGYxIgorICAgIGIiXHg5MzVceGI1KV9cclx4ZWMzXVx4MGZvXTVceGQwbXlceDA3XHg5Ylx4ZWVceDgxXHhiNVx4MGZceGNmSytceDAwXHhjMCIKKyAgICBiIlx4ZTRiXHgxMFx4ZTRceDBjXHgxYSBceDliXHhlMFx4OTd0XHhmNlx4YTFceDllXHg4NTBceGJhXHgwY1x4OWFceDhkXHhjOCIKKyAgICBiIlx4OGZceDA3XHhkN1x4YWVceGM4XHhmOStpXHhkY1x4YjlrXHhiMD5mXHgxOVx4Yjhcclx4YThceGY4XHgxZiRceGE1e3AiCisgICAgYiJceGM2XHg4ODBceGNlXHhkYlx4Y2ZceGNhX1x4ODZceGFjXHg4OGg2XHg4YlolJ1x4ZDBcblx4YmZceDBmXHg5Y1wiXHhiYSIKKyAgICBiIlx4ZTVceDg2XHg5Zlx4MGY3WD1tTlhbXHhjY1x4MTlGVVx4YzlceDg2MFx4YmNceDkwYSsqIFx4YWVfJFx4MDNceDFlXHhkMyIKKyAgICBiIlx4Y2RfXHhhMFx4OWNceGRlXHhhZjQ2cVx4YTVceGM5XHg5Mlx4ZDdceGNhXHhlM2BceDlkXHg4NX1ceGI0XHhmZlx4YjMiCisgICAgYiJceDgzXHhmYlx4YjZceGNhXHhhZWBceDBid1x4N2ZceGZjXHhkOFx4YWNWZVx4MTlceGM4XHgxN1x4MGJaXHhhZFx4ODgiCisgICAgYiJceGViI1x4OTdceDAzXHgxM1x4YjFkXHgwZntceDBjXHgwNHdceDA3XHJceDk3XHhiZFx4ZDZceGMxXHhjM0I6XHg5NVx4MDgiCisgICAgYiJeXHgxMFZceGFlYUhceDAyXHhkOVx4ZTNcblxcXHgwMVhceGY2XHg5Y1x4OGFceDA2dSMlXHhiZSpceGExXHgxOHZceDg1IgorICAgIGIiXHhlYyFcdDRceDAwXHgwMFx4MDAiCispCisKK0ZJTFRFUlNfUkFXXzQgPSBbeyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLCAiZGlzdCI6IDR9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfWDg2LCAic3RhcnRfb2Zmc2V0IjogMHg0MH0sCisgICAgICAgICAgICAgICAgIHsiaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgInByZXNldCI6IDQsICJsYyI6IDJ9XQorQ09NUFJFU1NFRF9SQVdfNCA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDZceDBlXFxceDAwXHgwNVx4MTRceDA3YldceGFhaFx4ZGRceDEwXHhkYydceGQ2XHg5MCxceGM2diIKKyAgICBiIkpxIFx4MTRsXHhiN1x4ODN4Qlx4MGJceDk3Zj0mZnhceGJhXG4+VG5ceGJmXHg4Zlx4ZmJceDFkRlx4Y2FceGMzdl9ceGNhPyIKKyAgICBiIlx4ZmJWPFx4OTIjXHhkNHdceGE2XHg4YVx4ZWJceGY2XHgwM1x4YzBceDAxXHg5NFx4ZDhceDllXHgxM1x4MTJceDk4XHhkMSIKKyAgICBiIipceGZhXWNceGU4XHgxZX5ceGFmXHhiNV1FZ1x4ZmJceDllXHgwMVwiOFx4YjJceDkwXHgwNj1+XHhlOVx4OTFXXHhjZCIKKyAgICBiIlx4ZWNEXHgxMlx4YzdceGZhXHhlMVx4OTFceDA2XHhjN1x4OTlceGI5XHhlM1x4OTAxXHg4N1x4MTl1XHgwZlx4ODY5XHhmZiIKKyAgICBiIlx4YzFceGIwaHd8XHhiMFx4ZGNsXHhjY2tceGIxNm83XHg4NVx4ZWV7WV9iXHhiZlx4YmMkXHhmMz1ceDhkXHg4YndceGU1WiIKKyAgICBiIlx4MDhAXHhjNGttRVx4YWRceGZiXHhmNipceGQ4XHhhZFx4YTFceGZiXHhjNXtceGRlaiwpXHgxZW1CXHgxZjxceGFlY2EiCisgICAgYiJceDgwKFx4ZWVceDA3IFx4ZGZceGU5XHhmOFx4ZWJceDBlLVx4OTdceDg2XHg5MGNceGY5XHhlYSdCXHhmN2BceGQ3XHhiMCIKKyAgICBiIlx4OTJceGJkXHhhMFx4ODJdXHhiZFx4MGVceDBlQlx4MTlceGRjXHg5Nlx4YzZceDE5XHhkODZEXHhmMFx4ZDVceDgzMSIKKyAgICBiIlx4MDNceGI3XHgxY1x4ZjcmNVx4MWFceDhmIFBaJmpceGY4XHg5OFx4MWJvXHhjY1x4ODZceDliU1x4ZDNceGE1XHhjZHUiCisgICAgYiJceGY5JFx4Y2NceDk3b1x4ZTVWflx4ZmJceDk3XHhiNVx4MGJceDE3XHg5Y1x4ZmR4V1x4MTBceGZlcDRceDgwXHhkYUhEWSIKKyAgICBiIlx4ZmEpXHhmZXRceGI1XCJceGQ0XHhkM0ZceDgxXHhmNFx4MTNceDFmXHhlY1x4ZGZceGE1XHgxM1x4ZmNcIlx4OTF4XHhiNyIKKyAgICBiIlx4OTlceGNlXHhjOFx4OTJcblx4ZWJbXHgxMGwqWVx4ZDhceGIxQFx4MDZceGM4b1x4OGQ3clx4ZWJ1XHhmZDVceDBlXHg3ZiIKKyAgICBiIlx4ZjEkVXtcdH1ceDFmUVx4Y2Z4Tlx4OWRceDlmWFhceGU5YFx4ODNceGMxXHgwNlx4ZjRceDg3di1mXHgxMVx4ZGIvXFwiCisgICAgYiJceDA2XHhmZlx4ZDcpQlx4ZjNnXHgwNlx4ODgjMlx4MWVCMjQ0XHg3ZjRxXHRceGM4OTM/bVBYXHg5NVx4YTZhXHhmYilkIgorICAgIGIiXHg5Ylx4ZmNceDk4XHg5YWpceDA0XHhhZVx4OWJceDlkXHgxOXdceGJhXHhmOTJceGZhQVx4MTFcXFx4MTdceDk3QzNceGE0IgorICAgIGIiXHhiYyFceDg4XHhjZG9bXHhlYzpceDAzMFx4OTEuXHg4NVx4ZTBAXFw0XHgxNlx4MTJceDlkXHhjYUp2XHg5N1x4YjA0IgorICAgIGIiXHhhY2tceGNia2ZceGEzc3NceGZjXHgxNl5ceDhjZVx4ODVhXHhhNT0mXHhlY3JceGIzcFx4ZDFFXHhkNVx4ODB5XHhjNyIKKyAgICBiIlx4ZGFceGY2XHhmZWtceGJjVFx4YmZIXHhlZVx4MTVvXHhjNVx4OGNceDgzMFx4ZWNceDFkXHgwMVx4YWVceDBjLWVcXCIKKyAgICBiIlx4OTFceDkwXHg5NFx4YjJceGY4XHg4OFx4OTFceGU4XHgwYlx4YWVceGE3Plx4OThceGY2XHg5Y2tceGQyXHhjNlx4MDgiCisgICAgYiJceGU2XHhhYlx0XHg5OFx4ZjIhXHhhMFx4OGNeXHhhY3FBXHg5OTxceDFjRUdceDk3XHhjOFx4ZjFceGI2XHhiOVx4ODIiCisgICAgYiJceDhkXHhmN1x4MDhzXHg5OGFceGZmXHhlM1x4Y2NceDkyXHgwZVx4ZDJceGI2VVx4ZDdceGQ5XHg4Nlx4N2ZhXHhlNVx4MWMiCisgICAgYiJceDhkVEdAXHRceDFlXHgwZTcqXHhmY1x4ZGVceGJjXTZOXHhmN1x4ZjFceDg0XHg5ZVx4OWZceGNmXHhlOVx4MWVceGI1JyIKKyAgICBiIlx4ZjQ8XHhkZlx4OTlzcVx4ZDBceDlkXHhiZFx4OTlceDBiXHhiNCVwNFx4YmZ7XHhiYlx4OGFceGQyXHgwYlx4YmM9TSIKKyAgICBiIlx4OTRIOlx4ZjVceGE4XHhkNlx4YTRceGM5MFx4YzJEXHhiOVx4ZDNceGE4XHhiMFNceDg3IGBceGEyXHhlYlx4ZjNXXHhjZSIKKyAgICBiIiA3XHhmOU4jXHJceGU2XHhiZVx0XHg5ZFx4ZTdceDgxMVx4ZjlceDEwXHhjMVx4YzJceDE0XHhmNlx4ZmNceGNiYVx4YjciCisgICAgYiJceGIxXHg3Zlx4OTVsXHhlNFx0akFceGVjOlx4MTBceGU1XHhmZVx4YzJcXD1EXHhlMlx4MGNceDBiM11ceGY3XHhjMVx4ZjciCisgICAgYiJceGJjZVpceGIxQVx4ZWFceDE2XHhlNVx4ZmRkZ0ZRXHhlZFx4YWZceDA0XHhhM1x4ZDNceGY4XHhhMnFceDE5Qlx4ZDRyIgorICAgIGIiXHhjNVx4MGNceDlhXHgxNFx4OTRceGVhXHg5MVx4YzRvXHhlNFx4YmJceGI0XHg5OVx4ZjRAXHhkMVx4ZTZceDBjXHhlMyIKKyAgICBiIlx4YzZkXHhhMFFcblx4ZjIvXHhkOFx4YjhTNVx4OGFceDE4Olx4YjVnXHhhY1x4OTVEXHhjZVx4MTdceDA3XHhkNHpceGRhIgorICAgIGIiXHg5MFx4ZTY1XHgwN1x4MTlIIVx0XHhmZHVceDE2XHg4ZVx4MGVSXHgxOVx4ZjRceDhjbFx4MGNceGY5UVx4ZjFceDgwIgorICAgIGIiXHhlM1x4YmZceGQ3T1x4ZjhceDhjXHgxOFx4MGJceDljXHhmMVx4MWZiXHhlMVx0Ulx4YjJceGYxXHhlMUFceGVhIFx4Y2YtIgorICAgIGIiSUdFXHhmMVx4MTRceDk4JFx4ODNceDE1XHhjOVx4ZDhqXHhiZlx4MTlceDBmXHhkNVx4ZDFceGFhXHhiM1x4ZjNceGE1STJzIgorICAgIGIiXHg4ZFx4MTQ1XHhjYVx4ZDVceGQ5M1x4OWNceGI4RDBceGU2XHhhYSVceGQwXHhjMFB9Sk9eaFx4OGVceDA4XHhhZGxWLiIKKyAgICBiIlx4MThceDg4XHgxM1x4MDVvXHhiMFx4MDdceGVhd1x4ZTBceGI2XHhhNFx4ZDUqXHhlNHJceGVmXHgwN0crXHhjMVx4YmVpWyIKKyAgICBiIndceGU4XHhhYkBfXHhlZlx4MTV5XHhlNVx4MTJceGM5V1x4MWIuXHhhZFx4ODUtXHhjMlx4ZjdceGUzbVU2Z1x4OGVTQSIKKyAgICBiIlx4MDEoXHhkM1x4ZGJceDE2XHgxMz1ceGRlXHg5Mlx4ZjksRFx4YjhceDhhXHhiMlx4YjRceGM5XHhjM1x4ZWZuRVx4ZThcXCIKKyAgICBiIlx4YTZceGUyWVx4ZDJceGNmXHhjYlx4OGNceGI2XHhkNVx4ZTlceDFkXHgxZVx4OWFceDhiflx4ZTJceGE2XHJFXHg4NHVWIgorICAgIGIiXHhlZFx4YzZceDk5XHhkZG08XHgxMFtceDBmdVx4MWZceGMxXHgxZDFcblx4Y2Z3XHhiMiUhXHhmMFtceGNlXHg4N1x4ODNCIgorICAgIGIiXHgwOFx4YWEsXHgwOCVkXHhjZWZceDk0XCJceGQ5Zy5ceGM4M1x4Y2JYWSs0XHhlY1x4ODVxQVxuXHgxZD05XHhmMCpceGIxIgorICAgIGIiXHgxZi9ceGYzc1x4ZDYxYlx4N2ZAXHhmYlx4OWRceGUzRlFcXFx4YmRceDgyXHgxZVx4MDBceGYzXHhjZVx4ZDNceGUxIgorICAgIGIiXHhjYSxFXHhmZDdbXHhhYlx4YjZceGI3XHhhYyFtQX1ceGJkXHg5ZDNSNVx4OWNGXHhhYkhceGViXHg5MiljY1x4MTNceGQwIgorICAgIGIiXHhiZFx4ZWVceGU5bntceDFkSUpCXHhhNVx4ZWJceDExXHhlOGB3JmBceDhifUBPeGVcdFx4OGFceDA3XHgwMlx4OTVceGYyIgorICAgIGIiXHhlZFx4ZGF8XHhiMWVceGJlXHhhYVx4YmJnXHgxOUBceGUxWVx4ODc4XHg4NFx4MGZceDhjXHhlM1x4Yzk4XHhmMlx4OWUiCisgICAgYiJceGQ1Tlx4YjVKXHhlZlx4YWIhXHhlMlx4OGRxXHhlMVx4ZTVxXHhjNVx4ZWVceDExV1x4YjdceGU0aypceDAyN1x4YTAiCisgICAgYiJceGEzSlx4ZjRceGQ4bVx4ZDBxXHg5NFx4Y2JceDA3XG46XHhiNmAuXHhlNFx4OWNceDE1K1x4YzApXHhkZVx4ODBYXHhkNCIKKyAgICBiIlx4Y2ZRbVx4MDFceGMyY1BceDFjQVx4ODUnXHhjOVx4YWNceDhiXHhlNlx4YjIpXHhlNlx4ODR0XHgxY1x4OTJceGU0WiIKKyAgICBiIlx4MWNSXHhiMFx4OWVceDk2XHhkMVx4ZmJceDFjXHhhNlx4OGJceGNiYFx4MTBceDEyXVx4ZjJnUlx4OWJGVFx4ZTBceGM4SCIKKyAgICBiIlNceGZiXHhhYzxceDA0XHhjN1x4YzFceGU4XHhlZFBceGY0XHgxNlx4ZGJceGMwXHhkN2VceGMyXHgxN0peXHgxZlx4YWIiCisgICAgYiJceGZmW1x4MDhceDE5XHhiNFx4ZjVceGZiXHgxOVx4YjRceDA0XHhlNWN+J11ceGNiXHhjMkFceGVjXHg5MFx4ZDBceGVkIgorICAgIGIiXHgwNixceGM1S3tceDg2XHgwM1x4YjFceGNkTXhceGRlUVx4OGMzXHhmOVx4OGFceGVhPVx4ODlceGFiYVx4ZDJceGM4OWEiCisgICAgYiJceGQ3Mlx4ZjBceGMzXHgxOVx4OGFceGRmc1x4ZDRceGZkXHhiYlx4ODFiXHhlYUVcIlx4ZDhceGY0ZFx4MGNEXHhmN0lKISIKKyAgICBiIlx4ZTVkXHhiYkdceGU5XHhjYW1ceGFhXHgwZl9yXHg5NVx4OTFOQnFceGNhUFx4Y2VceGE3XHhhOVx4YjVceDEwXHg5NGVQISIKKyAgICBiInxceDg1Nlx4Y2RceGJmSWlyXHhiOGVceDlialBceDk3cVx4YWJ3UzdceDFhXHgwZWhNXHhlN1x4Y2FceDg2P1x4ZGVQfXl+IgorICAgIGIiXHgwZlx4OTVJXHhmY1x4MTNceGUxPFFceDFiXHg4NjhceDFkXHgxMVx4ZGZceDk0XHhmNFx4ODI+clx4YTlrXHg4OFx4Y2IiCisgICAgYiJceGZkXHhjM3ZceGUyXHhiOVx4OGFceDAyXHg4ZXFceDkySVx4ZjhceGY2XHhmMVx4MDNzXHg5Ylx4YjhceGUzXCJceGUzIgorICAgIGIiXHhhOVx4YTU+RFx4YjhceDk2O1x4ZTdceDkyXHhkMTMzXHhlOFx4ZGQnZVx4YzkuXHhkYztceDE3XHgxZlx4ZjVIXHgxM3EiCisgICAgYiJceGE0V1x4MGNceGRiflx4OThceDAxXHhlYlx4ZGZceGUzMlx4MTNceDBmXHhkZHhcbjZceGEwXHRceDEwXHhiNlx4YmIiCisgICAgYiJceGIwXHhjM1x4MThceGI2O1x4OWZqW1x4ZDlceGQ1XHhjOVx4MDZceDhhXHg4N1x4Y2RceGU1XHhlZVx4ZmNceDljLSVAIgorICAgIGIiXHhlZVx4ZTBceGViXHhkMlx4ZTNceGU4XHhmYlx4YzBceDEyMlxcXHhjN1x4YWZceGMyXHhhMU90aFx4YjNceDhmXHg4MiIKKyAgICBiIlx4YjNceDE4XHhhOFx4MDdceGQ1XHhlZV9ceGJlXHhlMFx4MWNBXHgxZV9cclx4OWFceGIwXHgxN1cmXHhhMkRceDkxXHg5NCIKKyAgICBiIlx4MWFceGIyXHhlZlx4ZjJceGRjXHg4NTtYXHhiMCxceGViPi03U1x4ZTVceGNhXHgwNylceDFmcFx4N2ZceGNhUUJMXHhjYSIKKyAgICBiIlx4ZjNceGI5ZFx4ZmNceGI1c3VceGIwXHhjOFx4OTVceDkwXHhlYiopXHhhMHZceGU0XHg5YXtGV1x4ZjRsXHhkZVx4Y2RqIgorICAgIGIiXHgwMCIKKykKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KAorICAgICAgICBDb21wcmVzc29yRGVjb21wcmVzc29yVGVzdENhc2UsCisgICAgICAgIENvbXByZXNzRGVjb21wcmVzc0Z1bmN0aW9uVGVzdENhc2UsCisgICAgICAgIEZpbGVUZXN0Q2FzZSwKKyAgICAgICAgT3BlblRlc3RDYXNlLAorICAgICAgICBNaXNjZWxsYW5lb3VzVGVzdENhc2UsCisgICAgKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkgYi9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKaW5kZXggNjUxMjBmNy4uNTUxNTM1NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQpAQCAtMjIsNiArMjIsMTAgQEAKIAogY2xhc3MgVGVzdEJhc2U6CiAKKyAgICBhbGxfbWFpbGJveF90eXBlcyA9IChtYWlsYm94Lk1lc3NhZ2UsIG1haWxib3guTWFpbGRpck1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpCisKICAgICBkZWYgX2NoZWNrX3NhbXBsZShzZWxmLCBtc2cpOgogICAgICAgICAjIEluc3BlY3QgYSBtYWlsYm94Lk1lc3NhZ2UgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNhbXBsZSBtZXNzYWdlCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2csIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSkKQEAgLTkxLDE0ICs5NSwxNCBAQAogICAgICAgICAgICAgIiIiKQogCiAgICAgZGVmIHRlc3RfYWRkX2ludmFsaWRfOGJpdF9ieXRlc19oZWFkZXIoc2VsZik6Ci0gICAgICAgIGtleSA9IHNlbGYuX2JveC5hZGQoc2VsZi5fbm9uYXNjaWlfbXNnLmVuY29kZSgnbGF0aW4xJykpCisgICAgICAgIGtleSA9IHNlbGYuX2JveC5hZGQoc2VsZi5fbm9uYXNjaWlfbXNnLmVuY29kZSgnbGF0aW4tMScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLl9ib3gpLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2JveC5nZXRfYnl0ZXMoa2V5KSwKLSAgICAgICAgICAgIHNlbGYuX25vbmFzY2lpX21zZy5lbmNvZGUoJ2xhdGluMScpKQorICAgICAgICAgICAgc2VsZi5fbm9uYXNjaWlfbXNnLmVuY29kZSgnbGF0aW4tMScpKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9ub25hc2NpaV9oZWFkZXJfYXNfc3RyaW5nKHNlbGYpOgogICAgICAgICBzdWJqID0gc2VsZi5fbm9uYXNjaWlfbXNnLnNwbGl0bGluZXMoKVsxXQotICAgICAgICBrZXkgPSBzZWxmLl9ib3guYWRkKHN1YmouZW5jb2RlKCdsYXRpbjEnKSkKKyAgICAgICAga2V5ID0gc2VsZi5fYm94LmFkZChzdWJqLmVuY29kZSgnbGF0aW4tMScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2JveC5nZXRfc3RyaW5nKGtleSksCiAgICAgICAgICAgICAnU3ViamVjdDogPT91bmtub3duLThiaXQ/Yj9SbUZzYVc1aGNIVGhjaUJvNFhwb2IzcHpldUZzYk8xMDRYTnonCiAgICAgICAgICAgICAnWVd3dUlFM2hjaUJ5Wlc1a1pXeDA2V3cvPz1cblxuJykKQEAgLTkzMCw4ICs5MzQsNyBAQAogICAgICAgICAjIHRoZSBtdGltZSBhbmQgc2hvdWxkIGNhdXNlIGEgcmUtcmVhZC4gTm90ZSB0aGF0ICJzbGVlcAogICAgICAgICAjIGVtdWxhdGlvbiIgaXMgc3RpbGwgaW4gZWZmZWN0LCBhcyBza2V3ZmFjdG9yIGlzIC0zLgogICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCAnY3VyJywgJ3N0cmF5LWZpbGUnKQotICAgICAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3cnKQotICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShmaWxlbmFtZSkKICAgICAgICAgb3MudW5saW5rKGZpbGVuYW1lKQogICAgICAgICBzZWxmLl9ib3guX3JlZnJlc2goKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVmcmVzaGVkKCkpCkBAIC0xMzc0LDYgKzEzNzcsMTQgQEAKICAgICAgICAgIyBJbml0aWFsaXplIHdpdGggaW52YWxpZCBhcmd1bWVudAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogc2VsZi5fZmFjdG9yeShvYmplY3QoKSkpCiAKKyAgICBkZWYgdGVzdF9hbGxfZU1NX2F0dHJpYnVlc19leGlzdChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAxMjUzNworICAgICAgICBlTU0gPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKF9zYW1wbGVfbWVzc2FnZSkKKyAgICAgICAgbXNnID0gc2VsZi5fZmFjdG9yeShfc2FtcGxlX21lc3NhZ2UpCisgICAgICAgIGZvciBhdHRyIGluIGVNTS5fX2RpY3RfXzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhdHRyIGluIG1zZy5fX2RpY3RfXywKKyAgICAgICAgICAgICAgICAne30gYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0Jy5mb3JtYXQoYXR0cikpCisKICAgICBkZWYgdGVzdF9iZWNvbWVfbWVzc2FnZShzZWxmKToKICAgICAgICAgIyBUYWtlIG9uIHRoZSBzdGF0ZSBvZiBhbm90aGVyIG1lc3NhZ2UKICAgICAgICAgZU1NID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhfc2FtcGxlX21lc3NhZ2UpCkBAIC0xMzg1LDkgKzEzOTYsNyBAQAogICAgICAgICAjIENvcHkgc2VsZidzIGZvcm1hdC1zcGVjaWZpYyBkYXRhIHRvIG90aGVyIG1lc3NhZ2UgZm9ybWF0cy4KICAgICAgICAgIyBUaGlzIHRlc3QgaXMgc3VwZXJmaWNpYWw7IGJldHRlciBvbmVzIGFyZSBpbiBUZXN0TWVzc2FnZUNvbnZlcnNpb24uCiAgICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoKQotICAgICAgICBmb3IgY2xhc3NfIGluIChtYWlsYm94Lk1lc3NhZ2UsIG1haWxib3guTWFpbGRpck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94LkJhYnlsTWVzc2FnZSwgbWFpbGJveC5NTURGTWVzc2FnZSk6CisgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlczoKICAgICAgICAgICAgIG90aGVyX21zZyA9IGNsYXNzXygpCiAgICAgICAgICAgICBtc2cuX2V4cGxhaW5fdG8ob3RoZXJfbXNnKQogICAgICAgICBvdGhlcl9tc2cgPSBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UoKQpAQCAtMTYxOSwzNyArMTYyOCw0NCBAQAogCiAgICAgZGVmIHRlc3RfcGxhaW5fdG9feChzZWxmKToKICAgICAgICAgIyBDb252ZXJ0IE1lc3NhZ2UgdG8gYWxsIGZvcm1hdHMKLSAgICAgICAgZm9yIGNsYXNzXyBpbiAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpOgorICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CiAgICAgICAgICAgICBtc2dfcGxhaW4gPSBtYWlsYm94Lk1lc3NhZ2UoX3NhbXBsZV9tZXNzYWdlKQogICAgICAgICAgICAgbXNnID0gY2xhc3NfKG1zZ19wbGFpbikKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZShtc2cpCiAKICAgICBkZWYgdGVzdF94X3RvX3BsYWluKHNlbGYpOgogICAgICAgICAjIENvbnZlcnQgYWxsIGZvcm1hdHMgdG8gTWVzc2FnZQotICAgICAgICBmb3IgY2xhc3NfIGluIChtYWlsYm94Lk1lc3NhZ2UsIG1haWxib3guTWFpbGRpck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94LkJhYnlsTWVzc2FnZSwgbWFpbGJveC5NTURGTWVzc2FnZSk6CisgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlczoKICAgICAgICAgICAgIG1zZyA9IGNsYXNzXyhfc2FtcGxlX21lc3NhZ2UpCiAgICAgICAgICAgICBtc2dfcGxhaW4gPSBtYWlsYm94Lk1lc3NhZ2UobXNnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2FtcGxlKG1zZ19wbGFpbikKIAogICAgIGRlZiB0ZXN0X3hfZnJvbV9ieXRlcyhzZWxmKToKICAgICAgICAgIyBDb252ZXJ0IGFsbCBmb3JtYXRzIHRvIE1lc3NhZ2UKLSAgICAgICAgZm9yIGNsYXNzXyBpbiAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpOgorICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CiAgICAgICAgICAgICBtc2cgPSBjbGFzc18oX2J5dGVzX3NhbXBsZV9tZXNzYWdlKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2FtcGxlKG1zZykKIAogICAgIGRlZiB0ZXN0X3hfdG9faW52YWxpZChzZWxmKToKICAgICAgICAgIyBDb252ZXJ0IGFsbCBmb3JtYXRzIHRvIGFuIGludmFsaWQgZm9ybWF0Ci0gICAgICAgIGZvciBjbGFzc18gaW4gKG1haWxib3guTWVzc2FnZSwgbWFpbGJveC5NYWlsZGlyTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKToKKyAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGNsYXNzXyhGYWxzZSkpCiAKKyAgICBkZWYgdGVzdF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXNfcmVtb3ZlZF9vbl9jb252ZXJzaW9uKHNlbGYpOgorICAgICAgICByZWZlcmVuY2UgPSB7Y2xhc3NfOiBjbGFzc18oX3NhbXBsZV9tZXNzYWdlKS5fX2RpY3RfXworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzfQorICAgICAgICBmb3IgY2xhc3MxIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CisgICAgICAgICAgICBmb3IgY2xhc3MyIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CisgICAgICAgICAgICAgICAgaWYgY2xhc3MxIGlzIGNsYXNzMjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBjbGFzczEoX3NhbXBsZV9tZXNzYWdlKQorICAgICAgICAgICAgICAgIHRhcmdldCA9IGNsYXNzMihzb3VyY2UpCisgICAgICAgICAgICAgICAgdHlwZV9zcGVjaWZpYyA9IFthIGZvciBhIGluIHJlZmVyZW5jZVtjbGFzczFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGEgbm90IGluIHJlZmVyZW5jZVtjbGFzczJdXQorICAgICAgICAgICAgICAgIGZvciBhdHRyIGluIHR5cGVfc3BlY2lmaWM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oYXR0ciwgdGFyZ2V0Ll9fZGljdF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgIndoaWxlIGNvbnZlcnRpbmcge30gdG8ge30iLmZvcm1hdChjbGFzczEsIGNsYXNzMikpCisKICAgICBkZWYgdGVzdF9tYWlsZGlyX3RvX21haWxkaXIoc2VsZik6CiAgICAgICAgICMgQ29udmVydCBNYWlsZGlyTWVzc2FnZSB0byBNYWlsZGlyTWVzc2FnZQogICAgICAgICBtc2dfbWFpbGRpciA9IG1haWxib3guTWFpbGRpck1lc3NhZ2UoX3NhbXBsZV9tZXNzYWdlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0Y2QwOWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKQEAgLTAsMCArMSwyMjEgQEAKK2ltcG9ydCBtYWlsY2FwCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZXN0LnN1cHBvcnQKK2ltcG9ydCB1bml0dGVzdAorCisjIExvY2F0aW9uIG9mIG1haWxjYXAgZmlsZQorTUFJTENBUEZJTEUgPSB0ZXN0LnN1cHBvcnQuZmluZGZpbGUoIm1haWxjYXAudHh0IikKKworIyBEaWN0IHRvIGFjdCBhcyBtb2NrIG1haWxjYXAgZW50cnkgZm9yIHRoaXMgdGVzdAorIyBUaGUga2V5cyBhbmQgdmFsdWVzIHNob3VsZCBtYXRjaCB0aGUgY29udGVudHMgb2YgTUFJTENBUEZJTEUKK01BSUxDQVBESUNUID0geworICAgICdhcHBsaWNhdGlvbi94LW1vdmllJzoKKyAgICAgICAgW3snY29tcG9zZSc6ICdtb3ZpZW1ha2VyICVzJywKKyAgICAgICAgICAneDExLWJpdG1hcCc6ICciL3Vzci9saWIvWm1haWwvYml0bWFwcy9tb3ZpZS54Ym0iJywKKyAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIk1vdmllIicsCisgICAgICAgICAgJ3ZpZXcnOiAnbW92aWVwbGF5ZXIgJXMnfV0sCisgICAgJ2FwcGxpY2F0aW9uLyonOgorICAgICAgICBbeydjb3Bpb3Vzb3V0cHV0JzogJycsCisgICAgICAgICAgJ3ZpZXcnOiAnZWNobyAiVGhpcyBpcyBcXCIldFxcIiBidXQgICAgICAgIGlzIDUwIFxcJSBHcmVlayB0byBtZSIgXFw7IGNhdCAlcyd9XSwKKyAgICAnYXVkaW8vYmFzaWMnOgorICAgICAgICBbeydlZGl0JzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgJ2NvbXBvc2UnOiAnYXVkaW9jb21wb3NlICVzJywKKyAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIkFuIGF1ZGlvIGZyYWdtZW50IicsCisgICAgICAgICAgJ3ZpZXcnOiAnc2hvd2F1ZGlvICVzJ31dLAorICAgICd2aWRlby9tcGVnJzoKKyAgICAgICAgW3sndmlldyc6ICdtcGVnX3BsYXkgJXMnfV0sCisgICAgJ2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQnOgorICAgICAgICBbeyduZWVkc3Rlcm1pbmFsJzogJycsICd2aWV3JzogJ3BzLXRvLXRlcm1pbmFsICVzJ30sCisgICAgICAgICB7J2NvbXBvc2UnOiAnaWRyYXcgJXMnLCAndmlldyc6ICdwcy10by10ZXJtaW5hbCAlcyd9XSwKKyAgICAnYXBwbGljYXRpb24veC1kdmknOgorICAgICAgICBbeyd2aWV3JzogJ3hkdmkgJXMnfV0sCisgICAgJ21lc3NhZ2UvZXh0ZXJuYWwtYm9keSc6CisgICAgICAgIFt7J2NvbXBvc2V0eXBlZCc6ICdleHRjb21wb3NlICVzJywKKyAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIkEgcmVmZXJlbmNlIHRvIGRhdGEgc3RvcmVkIGluIGFuIGV4dGVybmFsIGxvY2F0aW9uIicsCisgICAgICAgICAgJ25lZWRzdGVybWluYWwnOiAnJywKKyAgICAgICAgICAndmlldyc6ICdzaG93ZXh0ZXJuYWwgJXMgJXthY2Nlc3MtdHlwZX0gJXtuYW1lfSAle3NpdGV9ICAgICAle2RpcmVjdG9yeX0gJXttb2RlfSAle3NlcnZlcn0nfV0sCisgICAgJ3RleHQvcmljaHRleHQnOgorICAgICAgICBbeyd0ZXN0JzogJ3Rlc3QgImBlY2hvICAgICAle2NoYXJzZXR9IHwgdHIgXCdbQS1aXVwnIFwnW2Etel1cJ2AiICA9IGlzby04ODU5LTgnLAorICAgICAgICAgICdjb3Bpb3Vzb3V0cHV0JzogJycsCisgICAgICAgICAgJ3ZpZXcnOiAnc2hvd25vbmFzY2lpIGlzby04ODU5LTggLWUgcmljaHRleHQgLXAgJXMnfV0sCisgICAgJ2ltYWdlL3gteHdpbmRvd2R1bXAnOgorICAgICAgICBbeyd2aWV3JzogJ2Rpc3BsYXkgJXMnfV0sCisgICAgJ2F1ZGlvLyonOgorICAgICAgICBbeyd2aWV3JzogJy91c3IvbG9jYWwvYmluL3Nob3dhdWRpbyAldCd9XSwKKyAgICAndmlkZW8vKic6CisgICAgICAgIFt7J3ZpZXcnOiAnYW5pbWF0ZSAlcyd9XSwKKyAgICAnYXBwbGljYXRpb24vZnJhbWUnOgorICAgICAgICBbeydwcmludCc6ICciY2F0ICVzIHwgbHAiJywgJ3ZpZXcnOiAnc2hvd2ZyYW1lICVzJ31dLAorICAgICdpbWFnZS9yZ2InOgorICAgICAgICBbeyd2aWV3JzogJ2Rpc3BsYXkgJXMnfV0KK30KKworCitjbGFzcyBIZWxwZXJGdW5jdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbGlzdG1haWxjYXBmaWxlcyhzZWxmKToKKyAgICAgICAgIyBUaGUgcmV0dXJuIHZhbHVlIGZvciBsaXN0bWFpbGNhcGZpbGVzKCkgd2lsbCB2YXJ5IGJ5IHN5c3RlbS4KKyAgICAgICAgIyBTbyB2ZXJpZnkgdGhhdCBsaXN0bWFpbGNhcGZpbGVzKCkgcmV0dXJucyBhIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IGlzIG9mCisgICAgICAgICMgbm9uLXplcm8gbGVuZ3RoLgorICAgICAgICBtY2ZpbGVzID0gbWFpbGNhcC5saXN0bWFpbGNhcGZpbGVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1jZmlsZXMsIGxpc3QpCisgICAgICAgIGZvciBtIGluIG1jZmlsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobSwgc3RyKQorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgIyBBY2NvcmRpbmcgdG8gUkZDIDE1MjQsIGlmIE1BSUxDQVBTIGVudiB2YXJpYWJsZSBleGlzdHMsIHVzZSB0aGF0CisgICAgICAgICAgICAjIGFuZCBvbmx5IHRoYXQuCisgICAgICAgICAgICBpZiAiTUFJTENBUFMiIGluIGVudjoKKyAgICAgICAgICAgICAgICBlbnZfbWFpbGNhcHMgPSBlbnZbIk1BSUxDQVBTIl0uc3BsaXQob3MucGF0aHNlcCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZW52X21haWxjYXBzID0gWyIvdGVzdGRpcjEvLm1haWxjYXAiLCAiL3Rlc3RkaXIyL21haWxjYXAiXQorICAgICAgICAgICAgICAgIGVudlsiTUFJTENBUFMiXSA9IG9zLnBhdGhzZXAuam9pbihlbnZfbWFpbGNhcHMpCisgICAgICAgICAgICAgICAgbWNmaWxlcyA9IG1haWxjYXAubGlzdG1haWxjYXBmaWxlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW52X21haWxjYXBzLCBtY2ZpbGVzKQorCisgICAgZGVmIHRlc3RfcmVhZG1haWxjYXBmaWxlKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmVhZG1haWxjYXBmaWxlKCkgdXNpbmcgdGVzdCBmaWxlLiBJdCBzaG91bGQgbWF0Y2ggTUFJTENBUERJQ1QuCisgICAgICAgIHdpdGggb3BlbihNQUlMQ0FQRklMRSwgJ3InKSBhcyBtY2Y6CisgICAgICAgICAgICBkID0gbWFpbGNhcC5yZWFkbWFpbGNhcGZpbGUobWNmKQorICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbChkLCBNQUlMQ0FQRElDVCkKKworICAgIGRlZiB0ZXN0X2xvb2t1cChzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGhvdXQga2V5CisgICAgICAgIGV4cGVjdGVkID0gW3sndmlldyc6ICdtcGVnX3BsYXkgJXMnfSwgeyd2aWV3JzogJ2FuaW1hdGUgJXMnfV0KKyAgICAgICAgYWN0dWFsID0gbWFpbGNhcC5sb29rdXAoTUFJTENBUERJQ1QsICd2aWRlby9tcGVnJykKKyAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAgICAgICAjIFRlc3Qgd2l0aCBrZXkKKyAgICAgICAga2V5ID0gJ2NvbXBvc2UnCisgICAgICAgIGV4cGVjdGVkID0gW3snZWRpdCc6ICdhdWRpb2NvbXBvc2UgJXMnLAorICAgICAgICAgICAgICAgICAgICAgJ2NvbXBvc2UnOiAnYXVkaW9jb21wb3NlICVzJywKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICciQW4gYXVkaW8gZnJhZ21lbnQiJywKKyAgICAgICAgICAgICAgICAgICAgICd2aWV3JzogJ3Nob3dhdWRpbyAlcyd9XQorICAgICAgICBhY3R1YWwgPSBtYWlsY2FwLmxvb2t1cChNQUlMQ0FQRElDVCwgJ2F1ZGlvL2Jhc2ljJywga2V5KQorICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisgICAgZGVmIHRlc3Rfc3Vic3Qoc2VsZik6CisgICAgICAgIHBsaXN0ID0gWydpZD0xJywgJ251bWJlcj0yJywgJ3RvdGFsPTMnXQorICAgICAgICAjIHRlc3QgY2FzZTogKFtmaWVsZCwgTUlNRXR5cGUsIGZpbGVuYW1lLCBwbGlzdD1bXV0sIDxleHBlY3RlZCBzdHJpbmc+KQorICAgICAgICB0ZXN0X2Nhc2VzID0gWworICAgICAgICAgICAgKFsiIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiIiksCisgICAgICAgICAgICAoWyJlY2hvIGZvbyIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gZm9vIiksCisgICAgICAgICAgICAoWyJlY2hvICVzIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyBmb28udHh0IiksCisgICAgICAgICAgICAoWyJlY2hvICV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyBhdWRpby8qIiksCisgICAgICAgICAgICAoWyJlY2hvIFwldCIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gJXQiKSwKKyAgICAgICAgICAgIChbImVjaG8gZm9vIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCIsIHBsaXN0XSwgImVjaG8gZm9vIiksCisgICAgICAgICAgICAoWyJlY2hvICV7dG90YWx9IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCIsIHBsaXN0XSwgImVjaG8gMyIpCisgICAgICAgIF0KKyAgICAgICAgZm9yIHRjIGluIHRlc3RfY2FzZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxjYXAuc3Vic3QoKnRjWzBdKSwgdGNbMV0pCisKKworY2xhc3MgR2V0Y2Fwc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbW9ja19nZXRjYXBzKHNlbGYpOgorICAgICAgICAjIFRlc3QgbWFpbGNhcC5nZXRjYXBzKCkgdXNpbmcgbW9jayBtYWlsY2FwIGZpbGUgaW4gdGhpcyBkaXIuCisgICAgICAgICMgVGVtcG9yYXJpbHkgb3ZlcnJpZGUgYW55IGV4aXN0aW5nIHN5c3RlbSBtYWlsY2FwIGZpbGUgYnkgcG9pbnRpbmcgdGhlCisgICAgICAgICMgTUFJTENBUFMgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gb3VyIG1vY2sgZmlsZS4KKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgIGVudlsiTUFJTENBUFMiXSA9IE1BSUxDQVBGSUxFCisgICAgICAgICAgICBjYXBzID0gbWFpbGNhcC5nZXRjYXBzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKGNhcHMsIE1BSUxDQVBESUNUKQorCisgICAgZGVmIHRlc3Rfc3lzdGVtX21haWxjYXAoc2VsZik6CisgICAgICAgICMgVGVzdCBtYWlsY2FwLmdldGNhcHMoKSB3aXRoIG1haWxjYXAgZmlsZShzKSBvbiBzeXN0ZW0sIGlmIGFueS4KKyAgICAgICAgY2FwcyA9IG1haWxjYXAuZ2V0Y2FwcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjYXBzLCBkaWN0KQorICAgICAgICBtYWlsY2FwZmlsZXMgPSBtYWlsY2FwLmxpc3RtYWlsY2FwZmlsZXMoKQorICAgICAgICBleGlzdGluZ21jZmlsZXMgPSBbbWNmIGZvciBtY2YgaW4gbWFpbGNhcGZpbGVzIGlmIG9zLnBhdGguZXhpc3RzKG1jZildCisgICAgICAgIGlmIGV4aXN0aW5nbWNmaWxlczoKKyAgICAgICAgICAgICMgQXQgbGVhc3QgMSBtYWlsY2FwIGZpbGUgZXhpc3RzLCBzbyB0ZXN0IHRoYXQuCisgICAgICAgICAgICBmb3IgKGssIHYpIGluIGNhcHMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoaywgc3RyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2LCBsaXN0KQorICAgICAgICAgICAgICAgIGZvciBlIGluIHY6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLCBkaWN0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBObyBtYWlsY2FwIGZpbGVzIG9uIHN5c3RlbS4gZ2V0Y2FwcygpIHNob3VsZCByZXR1cm4gZW1wdHkgZGljdC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe30sIGNhcHMpCisKKworY2xhc3MgRmluZG1hdGNoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9maW5kbWF0Y2goc2VsZik6CisKKyAgICAgICAgIyBkZWZhdWx0IGZpbmRtYXRjaCBhcmd1bWVudHMKKyAgICAgICAgYyA9IE1BSUxDQVBESUNUCisgICAgICAgIGZuYW1lID0gImZvby50eHQiCisgICAgICAgIHBsaXN0ID0gWyJhY2Nlc3MtdHlwZT1kZWZhdWx0IiwgIm5hbWU9am9obiIsICJzaXRlPXB5dGhvbi5vcmciLAorICAgICAgICAgICAgICAgICAiZGlyZWN0b3J5PS90bXAiLCAibW9kZT1mb28iLCAic2VydmVyPWJhciJdCisgICAgICAgIGF1ZGlvX2Jhc2ljX2VudHJ5ID0geworICAgICAgICAgICAgJ2VkaXQnOiAnYXVkaW9jb21wb3NlICVzJywKKyAgICAgICAgICAgICdjb21wb3NlJzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIkFuIGF1ZGlvIGZyYWdtZW50IicsCisgICAgICAgICAgICAndmlldyc6ICdzaG93YXVkaW8gJXMnCisgICAgICAgIH0KKyAgICAgICAgYXVkaW9fZW50cnkgPSB7InZpZXciOiAiL3Vzci9sb2NhbC9iaW4vc2hvd2F1ZGlvICV0In0KKyAgICAgICAgdmlkZW9fZW50cnkgPSB7J3ZpZXcnOiAnYW5pbWF0ZSAlcyd9CisgICAgICAgIG1lc3NhZ2VfZW50cnkgPSB7CisgICAgICAgICAgICAnY29tcG9zZXR5cGVkJzogJ2V4dGNvbXBvc2UgJXMnLAorICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBIHJlZmVyZW5jZSB0byBkYXRhIHN0b3JlZCBpbiBhbiBleHRlcm5hbCBsb2NhdGlvbiInLCAnbmVlZHN0ZXJtaW5hbCc6ICcnLAorICAgICAgICAgICAgJ3ZpZXcnOiAnc2hvd2V4dGVybmFsICVzICV7YWNjZXNzLXR5cGV9ICV7bmFtZX0gJXtzaXRlfSAgICAgJXtkaXJlY3Rvcnl9ICV7bW9kZX0gJXtzZXJ2ZXJ9JworICAgICAgICB9CisKKyAgICAgICAgIyB0ZXN0IGNhc2U6IChmaW5kbWF0Y2ggYXJncywgZmluZG1hdGNoIGtleXdvcmQgYXJncywgZXhwZWN0ZWQgb3V0cHV0KQorICAgICAgICAjICAgcG9zaXRpb25hbCBhcmdzOiBjYXBzLCBNSU1FdHlwZQorICAgICAgICAjICAga2V5d29yZCBhcmdzOiBrZXk9InZpZXciLCBmaWxlbmFtZT0iL2Rldi9udWxsIiwgcGxpc3Q9W10KKyAgICAgICAgIyAgIG91dHB1dDogKGNvbW1hbmQgbGluZSwgbWFpbGNhcCBlbnRyeSkKKyAgICAgICAgY2FzZXMgPSBbCisgICAgICAgICAgICAoW3t9LCAidmlkZW8vbXBlZyJdLCB7fSwgKE5vbmUsIE5vbmUpKSwKKyAgICAgICAgICAgIChbYywgImZvby9iYXIiXSwge30sIChOb25lLCBOb25lKSksCisgICAgICAgICAgICAoW2MsICJ2aWRlby9tcGVnIl0sIHt9LCAoJ21wZWdfcGxheSAvZGV2L251bGwnLCB7J3ZpZXcnOiAnbXBlZ19wbGF5ICVzJ30pKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIiwgImVkaXQiXSwge30sICgiYXVkaW9jb21wb3NlIC9kZXYvbnVsbCIsIGF1ZGlvX2Jhc2ljX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyIsICJjb21wb3NlIl0sIHt9LCAoImF1ZGlvY29tcG9zZSAvZGV2L251bGwiLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiLCAiZGVzY3JpcHRpb24iXSwge30sICgnIkFuIGF1ZGlvIGZyYWdtZW50IicsIGF1ZGlvX2Jhc2ljX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyIsICJmb29iYXIiXSwge30sIChOb25lLCBOb25lKSksCisgICAgICAgICAgICAoW2MsICJ2aWRlby8qIl0sIHsiZmlsZW5hbWUiOiBmbmFtZX0sICgiYW5pbWF0ZSAlcyIgJSBmbmFtZSwgdmlkZW9fZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIiwgImNvbXBvc2UiXSwKKyAgICAgICAgICAgICB7ImZpbGVuYW1lIjogZm5hbWV9LAorICAgICAgICAgICAgICgiYXVkaW9jb21wb3NlICVzIiAlIGZuYW1lLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiXSwKKyAgICAgICAgICAgICB7ImtleSI6ICJkZXNjcmlwdGlvbiIsICJmaWxlbmFtZSI6IGZuYW1lfSwKKyAgICAgICAgICAgICAoJyJBbiBhdWRpbyBmcmFnbWVudCInLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vKiJdLAorICAgICAgICAgICAgIHsiZmlsZW5hbWUiOiBmbmFtZX0sCisgICAgICAgICAgICAgKCIvdXNyL2xvY2FsL2Jpbi9zaG93YXVkaW8gYXVkaW8vKiIsIGF1ZGlvX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJtZXNzYWdlL2V4dGVybmFsLWJvZHkiXSwKKyAgICAgICAgICAgICB7InBsaXN0IjogcGxpc3R9LAorICAgICAgICAgICAgICgic2hvd2V4dGVybmFsIC9kZXYvbnVsbCBkZWZhdWx0IGpvaG4gcHl0aG9uLm9yZyAgICAgL3RtcCBmb28gYmFyIiwgbWVzc2FnZV9lbnRyeSkpCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5fcnVuX2Nhc2VzKGNhc2VzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAicG9zaXgiLCAiUmVxdWlyZXMgJ3Rlc3QnIGNvbW1hbmQgb24gc3lzdGVtIikKKyAgICBkZWYgdGVzdF90ZXN0KHNlbGYpOgorICAgICAgICAjIGZpbmRtYXRjaCgpIHdpbGwgYXV0b21hdGljYWxseSBjaGVjayBhbnkgInRlc3QiIGNvbmRpdGlvbnMgYW5kIHNraXAKKyAgICAgICAgIyB0aGUgZW50cnkgaWYgdGhlIGNoZWNrIGZhaWxzLgorICAgICAgICBjYXBzID0geyJ0ZXN0L3Bhc3MiOiBbeyJ0ZXN0IjogInRlc3QgMSAtZXEgMSJ9XSwKKyAgICAgICAgICAgICAgICAidGVzdC9mYWlsIjogW3sidGVzdCI6ICJ0ZXN0IDEgLWVxIDAifV19CisgICAgICAgICMgdGVzdCBjYXNlOiAoZmluZG1hdGNoIGFyZ3MsIGZpbmRtYXRjaCBrZXl3b3JkIGFyZ3MsIGV4cGVjdGVkIG91dHB1dCkKKyAgICAgICAgIyAgIHBvc2l0aW9uYWwgYXJnczogY2FwcywgTUlNRXR5cGUsIGtleSAoInRlc3QiKQorICAgICAgICAjICAga2V5d29yZCBhcmdzOiBOL0EKKyAgICAgICAgIyAgIG91dHB1dDogKGNvbW1hbmQgbGluZSwgbWFpbGNhcCBlbnRyeSkKKyAgICAgICAgY2FzZXMgPSBbCisgICAgICAgICAgICAjIGZpbmRtYXRjaCB3aWxsIHJldHVybiB0aGUgbWFpbGNhcCBlbnRyeSBmb3IgdGVzdC9wYXNzIGJlY2F1c2UgaXQgZXZhbHVhdGVzIHRvIHRydWUKKyAgICAgICAgICAgIChbY2FwcywgInRlc3QvcGFzcyIsICJ0ZXN0Il0sIHt9LCAoInRlc3QgMSAtZXEgMSIsIHsidGVzdCI6ICJ0ZXN0IDEgLWVxIDEifSkpLAorICAgICAgICAgICAgIyBmaW5kbWF0Y2ggd2lsbCByZXR1cm4gTm9uZSBiZWNhdXNlIHRlc3QvZmFpbCBldmFsdWF0ZXMgdG8gZmFsc2UKKyAgICAgICAgICAgIChbY2FwcywgInRlc3QvZmFpbCIsICJ0ZXN0Il0sIHt9LCAoTm9uZSwgTm9uZSkpCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5fcnVuX2Nhc2VzKGNhc2VzKQorCisgICAgZGVmIF9ydW5fY2FzZXMoc2VsZiwgY2FzZXMpOgorICAgICAgICBmb3IgYyBpbiBjYXNlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGNhcC5maW5kbWF0Y2goKmNbMF0sICoqY1sxXSksIGNbMl0pCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoSGVscGVyRnVuY3Rpb25UZXN0LCBHZXRjYXBzVGVzdCwgRmluZG1hdGNoVGVzdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKaW5kZXggOTZhNzBlYy4uODNjMzQ4YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCitpbXBvcnQgdHlwZXMKIAogY2xhc3MgSGVscGVyTWl4aW46CiAgICAgZGVmIGhlbHBlcihzZWxmLCBzYW1wbGUsICpleHRyYSk6CkBAIC0xMTQsNiArMTE1LDIyIEBACiAgICAgICAgIGNvZGVzID0gKEV4Y2VwdGlvblRlc3RDYXNlLnRlc3RfZXhjZXB0aW9ucy5fX2NvZGVfXywpICogY291bnQKICAgICAgICAgbWFyc2hhbC5sb2FkcyhtYXJzaGFsLmR1bXBzKGNvZGVzKSkKIAorICAgIGRlZiB0ZXN0X2RpZmZlcmVudF9maWxlbmFtZXMoc2VsZik6CisgICAgICAgIGNvMSA9IGNvbXBpbGUoIngiLCAiZjEiLCAiZXhlYyIpCisgICAgICAgIGNvMiA9IGNvbXBpbGUoInkiLCAiZjIiLCAiZXhlYyIpCisgICAgICAgIGNvMSwgY28yID0gbWFyc2hhbC5sb2FkcyhtYXJzaGFsLmR1bXBzKChjbzEsIGNvMikpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvMS5jb19maWxlbmFtZSwgImYxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbzIuY29fZmlsZW5hbWUsICJmMiIpCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zYW1lX2ZpbGVuYW1lX3VzZWQoc2VsZik6CisgICAgICAgIHMgPSAiIiJkZWYgZigpOiBwYXNzXG5kZWYgZygpOiBwYXNzIiIiCisgICAgICAgIGNvID0gY29tcGlsZShzLCAibXlmaWxlIiwgImV4ZWMiKQorICAgICAgICBjbyA9IG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcyhjbykpCisgICAgICAgIGZvciBvYmogaW4gY28uY29fY29uc3RzOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLkNvZGVUeXBlKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvLmNvX2ZpbGVuYW1lLCBvYmouY29fZmlsZW5hbWUpCisKIGNsYXNzIENvbnRhaW5lclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBIZWxwZXJNaXhpbik6CiAgICAgZCA9IHsnYXN0cmluZyc6ICdmb29AYmFyLmJhei5zcGFtJywKICAgICAgICAgICdhZmxvYXQnOiA3MjgzLjQzLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CmluZGV4IGRkZGM4ODkuLjcxNTAwM2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hdGgucHkKQEAgLTIsMTEgKzIsMTIgQEAKICMgWFhYWCBTaG91bGQgbm90IGRvIHRlc3RzIGFyb3VuZCB6ZXJvIG9ubHkKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgdmVyYm9zZSwgcmVxdWlyZXNfSUVFRV83NTQKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgbWF0aAogaW1wb3J0IG9zCitpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzeXMKLWltcG9ydCByYW5kb20KIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXNjb25maWcKIApAQCAtNDU3LDEyICs0NTgsMTIgQEAKIAogICAgIGRlZiB0ZXN0Rm1vZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmZtb2QpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsMSknLCBtYXRoLmZtb2QoMTAsMSksIDApCi0gICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsMC41KScsIG1hdGguZm1vZCgxMCwwLjUpLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKDEwLDEuNSknLCBtYXRoLmZtb2QoMTAsMS41KSwgMSkKLSAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsMSknLCBtYXRoLmZtb2QoLTEwLDEpLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwwLjUpJywgbWF0aC5mbW9kKC0xMCwwLjUpLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwxLjUpJywgbWF0aC5mbW9kKC0xMCwxLjUpLCAtMSkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgxMCwgMSknLCBtYXRoLmZtb2QoMTAsIDEpLCAwLjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsIDAuNSknLCBtYXRoLmZtb2QoMTAsIDAuNSksIDAuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgxMCwgMS41KScsIG1hdGguZm1vZCgxMCwgMS41KSwgMS4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwgMSknLCBtYXRoLmZtb2QoLTEwLCAxKSwgLTAuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsIDAuNSknLCBtYXRoLmZtb2QoLTEwLCAwLjUpLCAtMC4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwgMS41KScsIG1hdGguZm1vZCgtMTAsIDEuNSksIC0xLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZm1vZChOQU4sIDEuKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZm1vZCgxLiwgTkFOKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZm1vZChOQU4sIE5BTikpKQpAQCAtNjUwLDYgKzY1MSwzMyBAQAogICAgICAgICBuPSAyKio5MAogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKG1hdGgubG9nMXAobiksIG1hdGgubG9nMXAoZmxvYXQobikpKQogCisgICAgQHJlcXVpcmVzX0lFRUVfNzU0CisgICAgZGVmIHRlc3RMb2cyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGgubG9nMikKKworICAgICAgICAjIENoZWNrIHNvbWUgaW50ZWdlciB2YWx1ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoMSksIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoMiksIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoNCksIDIuMCkKKworICAgICAgICAjIExhcmdlIGludGVnZXIgdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDIqKjEwMjMpLCAxMDIzLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDIqKjEwMjQpLCAxMDI0LjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDIqKjIwMDApLCAyMDAwLjApCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5sb2cyLCAtMS41KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmxvZzIsIE5JTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGgubG9nMihOQU4pKSkKKworICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgICMgbG9nMigpIGlzIG5vdCBhY2N1cmF0ZSBlbm91Z2ggb24gTWFjIE9TIFggVGlnZXIgKDEwLjQpCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbWFjX3ZlcigxMCwgNSkKKyAgICBkZWYgdGVzdExvZzJFeGFjdChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHdlIGdldCBleGFjdCBlcXVhbGl0eSBmb3IgbG9nMiBvZiBwb3dlcnMgb2YgMi4KKyAgICAgICAgYWN0dWFsID0gW21hdGgubG9nMihtYXRoLmxkZXhwKDEuMCwgbikpIGZvciBuIGluIHJhbmdlKC0xMDc0LCAxMDI0KV0KKyAgICAgICAgZXhwZWN0ZWQgPSBbZmxvYXQobikgZm9yIG4gaW4gcmFuZ2UoLTEwNzQsIDEwMjQpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdExvZzEwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGgubG9nMTApCiAgICAgICAgIHNlbGYuZnRlc3QoJ2xvZzEwKDAuMSknLCBtYXRoLmxvZzEwKDAuMSksIC0xKQpAQCAtMTAxMCw3ICsxMDM4LDYgQEAKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X210ZXN0ZmlsZShzZWxmKToKLSAgICAgICAgQUxMT1dFRF9FUlJPUiA9IDIwICAjIHBlcm1pdHRlZCBlcnJvciwgaW4gdWxwcwogICAgICAgICBmYWlsX2ZtdCA9ICJ7fTp7fSh7IXJ9KTogZXhwZWN0ZWQgeyFyfSwgZ290IHshcn0iCiAKICAgICAgICAgZmFpbHVyZXMgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weSBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKaW5kZXggOTI0ODA5OC4uMDRlYzhlNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CkBAIC02NTgsNyArNjU4LDcgQEAKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NpemVvZihzZWxmKToKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCdQMlBQMlBQJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCdQMm5OMlBuJykKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iamVjdC5fX3NpemVvZl9fKGlvLkJ5dGVzSU8oKSksIGJhc2VzaXplKQogICAgICAgICBjaGVjayhpby5CeXRlc0lPKCksIGJhc2VzaXplICkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weSBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weQppbmRleCAwYmZkZGQ5Li5lZTZiMTVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5CkBAIC0xLDYgKzEsNyBAQAogIiIiVW5pdCB0ZXN0cyBmb3IgdGhlIG1lbW9yeXZpZXcKIAotWFhYIFdlIG5lZWQgbW9yZSB0ZXN0cyEgU29tZSB0ZXN0cyBhcmUgaW4gdGVzdF9ieXRlcworICAgU29tZSB0ZXN0cyBhcmUgaW4gdGVzdF9ieXRlcy4gTWFueSB0ZXN0cyB0aGF0IHJlcXVpcmUgX3Rlc3RidWZmZXIubmRhcnJheQorICAgYXJlIGluIHRlc3RfYnVmZmVyLgogIiIiCiAKIGltcG9ydCB1bml0dGVzdApAQCAtMjQsMTUgKzI1LDE0IEBACiAgICAgICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgW3NlbGYucm9fdHlwZSwgc2VsZi5yd190eXBlXSkKIAogICAgIGRlZiBjaGVja19nZXRpdGVtX3dpdGhfdHlwZShzZWxmLCB0cCk6Ci0gICAgICAgIGl0ZW0gPSBzZWxmLmdldGl0ZW1fdHlwZQogICAgICAgICBiID0gdHAoc2VsZi5fc291cmNlKQogICAgICAgICBvbGRyZWZjb3VudCA9IHN5cy5nZXRyZWZjb3VudChiKQogICAgICAgICBtID0gc2VsZi5fdmlldyhiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sIGl0ZW0oYiJhIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtWzBdLCBieXRlcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzVdLCBpdGVtKGIiZiIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTFdLCBpdGVtKGIiZiIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTZdLCBpdGVtKGIiYSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sIG9yZChiImEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1bMF0sIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzVdLCBvcmQoYiJmIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVstMV0sIG9yZChiImYiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy02XSwgb3JkKGIiYSIpKQogICAgICAgICAjIEJvdW5kcyBjaGVja2luZwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBsYW1iZGE6IG1bNl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIGxhbWJkYTogbVstN10pCkBAIC03Niw3ICs3Niw5IEBACiAgICAgICAgIGIgPSBzZWxmLnJ3X3R5cGUoc2VsZi5fc291cmNlKQogICAgICAgICBvbGRyZWZjb3VudCA9IHN5cy5nZXRyZWZjb3VudChiKQogICAgICAgICBtID0gc2VsZi5fdmlldyhiKQotICAgICAgICBtWzBdID0gdHAoYiIwIikKKyAgICAgICAgbVswXSA9IG9yZChiJzEnKQorICAgICAgICBzZWxmLl9jaGVja19jb250ZW50cyh0cCwgYiwgYiIxYmNkZWYiKQorICAgICAgICBtWzA6MV0gPSB0cChiIjAiKQogICAgICAgICBzZWxmLl9jaGVja19jb250ZW50cyh0cCwgYiwgYiIwYmNkZWYiKQogICAgICAgICBtWzE6M10gPSB0cChiIjEyIikKICAgICAgICAgc2VsZi5fY2hlY2tfY29udGVudHModHAsIGIsIGIiMDEyZGVmIikKQEAgLTEwMiwxMCArMTA0LDE3IEBACiAgICAgICAgICMgV3JvbmcgaW5kZXgvc2xpY2UgdHlwZXMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAwLjAsIGIiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgKDAsKSwgYiJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAoc2xpY2UoMCwxLDEpLCAwKSwgYiJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAoMCwgc2xpY2UoMCwxLDEpKSwgYiJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAoMCwpLCBiImEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGl0ZW0sICJhIiwgYiJhIikKKyAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc2xpY2VzCisgICAgICAgIHNsaWNlcyA9IChzbGljZSgwLDEsMSksIHNsaWNlKDAsMSwyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgc2V0aXRlbSwgc2xpY2VzLCBiImEiKQogICAgICAgICAjIFRyeWluZyB0byByZXNpemUgdGhlIG1lbW9yeSBvYmplY3QKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0aXRlbSwgMCwgYiIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRpdGVtLCAwLCBiImFiIikKKyAgICAgICAgZXhjID0gVmFsdWVFcnJvciBpZiBtLmZvcm1hdCA9PSAnYycgZWxzZSBUeXBlRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBzZXRpdGVtLCAwLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Yywgc2V0aXRlbSwgMCwgYiJhYiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGl0ZW0sIHNsaWNlKDEsMSksIGIiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGl0ZW0sIHNsaWNlKDAsMiksIGIiYSIpCiAKQEAgLTE3NSw3ICsxODQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc2hhcGUsICg2LCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0pLCA2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3RyaWRlcywgKHNlbGYuaXRlbXNpemUsKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN1Ym9mZnNldHMsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zdWJvZmZzZXRzLCAoKSkKICAgICAgICAgcmV0dXJuIG0KIAogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfcmVhZG9ubHkoc2VsZik6CkBAIC0yMDksMTIgKzIxOCwxNiBAQAogICAgICAgICAgICAgICAgICMgSWYgdHAgaXMgYSBmYWN0b3J5IHJhdGhlciB0aGFuIGEgcGxhaW4gdHlwZSwgc2tpcAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKKyAgICAgICAgICAgIGNsYXNzIE15VmlldygpOgorICAgICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiYXNlKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tID0gbWVtb3J5dmlldyhiYXNlKQogICAgICAgICAgICAgY2xhc3MgTXlTb3VyY2UodHApOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGNsYXNzIE15T2JqZWN0OgogICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICAgICAgIyBDcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUgdGhyb3VnaCBhIG1lbW9yeXZpZXcgb2JqZWN0CisgICAgICAgICAgICAjIENyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZSB0aHJvdWdoIGEgbWVtb3J5dmlldyBvYmplY3QuCisgICAgICAgICAgICAjIFRoaXMgZXhlcmNpc2VzIG1idWZfY2xlYXIoKS4KICAgICAgICAgICAgIGIgPSBNeVNvdXJjZSh0cChiJ2FiYycpKQogICAgICAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKICAgICAgICAgICAgIG8gPSBNeU9iamVjdCgpCkBAIC0yMjYsNiArMjM5LDE3IEBACiAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3cigpIGlzIE5vbmUsIHdyKCkpCiAKKyAgICAgICAgICAgICMgVGhpcyBleGVyY2lzZXMgbWVtb3J5X2NsZWFyKCkuCisgICAgICAgICAgICBtID0gTXlWaWV3KHRwKGInYWJjJykpCisgICAgICAgICAgICBvID0gTXlPYmplY3QoKQorICAgICAgICAgICAgbS54ID0gbQorICAgICAgICAgICAgbS5vID0gbworICAgICAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihvKQorICAgICAgICAgICAgbSA9IG8gPSBOb25lCisgICAgICAgICAgICAjIFRoZSBjeWNsZSBtdXN0IGJlIGJyb2tlbgorICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod3IoKSBpcyBOb25lLCB3cigpKQorCiAgICAgZGVmIF9jaGVja19yZWxlYXNlZChzZWxmLCBtLCB0cCk6CiAgICAgICAgIGNoZWNrID0gc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAicmVsZWFzZWQiKQogICAgICAgICB3aXRoIGNoZWNrOiBieXRlcyhtKQpAQCAtMjgzLDYgKzMwNyw1MSBAQAogICAgICAgICBpID0gaW8uQnl0ZXNJTyhiJ1paWlonKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGkucmVhZGludG8sIG0pCiAKKyAgICBkZWYgdGVzdF9nZXRidWZfZmFpbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLl92aWV3LCB7fSkKKworICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CisgICAgICAgICMgTWVtb3J5dmlld3Mgb2YgcmVhZG9ubHkgKGhhc2hhYmxlKSB0eXBlcyBhcmUgaGFzaGFibGUsIGFuZCB0aGV5CisgICAgICAgICMgaGFzaCBhcyBoYXNoKG9iai50b2J5dGVzKCkpLgorICAgICAgICB0cCA9IHNlbGYucm9fdHlwZQorICAgICAgICBpZiB0cCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm8gcmVhZC1vbmx5IHR5cGUgdG8gdGVzdCIpCisgICAgICAgIGIgPSB0cChzZWxmLl9zb3VyY2UpCisgICAgICAgIG0gPSBzZWxmLl92aWV3KGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaChiImFiY2RlZiIpKQorICAgICAgICAjIFJlbGVhc2luZyB0aGUgbWVtb3J5dmlldyBrZWVwcyB0aGUgc3RvcmVkIGhhc2ggdmFsdWUgKGFzIHdpdGggd2Vha3JlZnMpCisgICAgICAgIG0ucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaChiImFiY2RlZiIpKQorICAgICAgICAjIEhhc2hpbmcgYSBtZW1vcnl2aWV3IGZvciB0aGUgZmlyc3QgdGltZSBhZnRlciBpdCBpcyByZWxlYXNlZAorICAgICAgICAjIHJlc3VsdHMgaW4gYW4gZXJyb3IgKGFzIHdpdGggd2Vha3JlZnMpLgorICAgICAgICBtID0gc2VsZi5fdmlldyhiKQorICAgICAgICBtLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoYXNoLCBtKQorCisgICAgZGVmIHRlc3RfaGFzaF93cml0YWJsZShzZWxmKToKKyAgICAgICAgIyBNZW1vcnl2aWV3cyBvZiB3cml0YWJsZSB0eXBlcyBhcmUgdW5oYXNoYWJsZQorICAgICAgICB0cCA9IHNlbGYucndfdHlwZQorICAgICAgICBpZiB0cCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm8gd3JpdGFibGUgdHlwZSB0byB0ZXN0IikKKyAgICAgICAgYiA9IHRwKHNlbGYuX3NvdXJjZSkKKyAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaGFzaCwgbSkKKworICAgIGRlZiB0ZXN0X3dlYWtyZWYoc2VsZik6CisgICAgICAgICMgQ2hlY2sgbWVtb3J5dmlld3MgYXJlIHdlYWtyZWZhYmxlCisgICAgICAgIGZvciB0cCBpbiBzZWxmLl90eXBlczoKKyAgICAgICAgICAgIGIgPSB0cChzZWxmLl9zb3VyY2UpCisgICAgICAgICAgICBtID0gc2VsZi5fdmlldyhiKQorICAgICAgICAgICAgTCA9IFtdCisgICAgICAgICAgICBkZWYgY2FsbGJhY2sod3IsIGI9Yik6CisgICAgICAgICAgICAgICAgTC5hcHBlbmQoYikKKyAgICAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYobSwgY2FsbGJhY2spCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIG0pCisgICAgICAgICAgICBkZWwgbQorICAgICAgICAgICAgdGVzdC5zdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhMWzBdLCBiKQorCiAjIFZhcmlhdGlvbnMgb24gc291cmNlIG9iamVjdHMgZm9yIHRoZSBidWZmZXI6IGJ5dGVzLWxpa2Ugb2JqZWN0cywgdGhlbiBhcnJheXMKICMgd2l0aCBpdGVtc2l6ZSA+IDEuCiAjIE5PVEU6IHN1cHBvcnQgZm9yIG11bHRpLWRpbWVuc2lvbmFsIG9iamVjdHMgaXMgdW5pbXBsZW1lbnRlZC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWV0YWNsYXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9tZXRhY2xhc3MucHkKaW5kZXggMjE5YWI5OS4uZTZmZTIwYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tZXRhY2xhc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZXRhY2xhc3MucHkKQEAgLTE1OSw2ICsxNTksNyBAQAogICAgIC4uLiAgICAgYmFyID0gMTIzCiAgICAgLi4uCiAgICAgZFsnX19tb2R1bGVfXyddID0gJ3Rlc3QudGVzdF9tZXRhY2xhc3MnCisgICAgZFsnX19xdWFsbmFtZV9fJ10gPSAnQycKICAgICBkWydmb28nXSA9IDQKICAgICBkWydmb28nXSA9IDQyCiAgICAgZFsnYmFyJ10gPSAxMjMKQEAgLTE3NywxMiArMTc4LDEyIEBACiAgICAgLi4uICAgICBiID0gMjQKICAgICAuLi4KICAgICBtZXRhOiBDICgpCi0gICAgbnM6IFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ2EnLCA0MiksICgnYicsIDI0KV0KKyAgICBuczogWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnX19xdWFsbmFtZV9fJywgJ0MnKSwgKCdhJywgNDIpLCAoJ2InLCAyNCldCiAgICAga3c6IFtdCiAgICAgPj4+IHR5cGUoQykgaXMgZGljdAogICAgIFRydWUKICAgICA+Pj4gcHJpbnQoc29ydGVkKEMuaXRlbXMoKSkpCi0gICAgWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnYScsIDQyKSwgKCdiJywgMjQpXQorICAgIFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ19fcXVhbG5hbWVfXycsICdDJyksICgnYScsIDQyKSwgKCdiJywgMjQpXQogICAgID4+PgogCiBBbmQgYWdhaW4sIHdpdGggYSBfX3ByZXBhcmVfXyBhdHRyaWJ1dGUuCkBAIC0xOTksMTEgKzIwMCwxMiBAQAogICAgIC4uLgogICAgIHByZXBhcmU6IEMgKCkgWygnb3RoZXInLCAnYm9vaCcpXQogICAgIGRbJ19fbW9kdWxlX18nXSA9ICd0ZXN0LnRlc3RfbWV0YWNsYXNzJworICAgIGRbJ19fcXVhbG5hbWVfXyddID0gJ0MnCiAgICAgZFsnYSddID0gMQogICAgIGRbJ2EnXSA9IDIKICAgICBkWydiJ10gPSAzCiAgICAgbWV0YTogQyAoKQotICAgIG5zOiBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdhJywgMiksICgnYicsIDMpXQorICAgIG5zOiBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdfX3F1YWxuYW1lX18nLCAnQycpLCAoJ2EnLCAyKSwgKCdiJywgMyldCiAgICAga3c6IFsoJ290aGVyJywgJ2Jvb2gnKV0KICAgICA+Pj4KIApAQCAtMjQ2LDcgKzI0OCwxMyBAQAogCiAiIiIKIAotX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQoraW1wb3J0IHN5cworCisjIFRyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbHNfXyB3aGljaCBjYXVzZXMgdmFyaW91cyB0ZXN0cyB0byBmYWlsLgoraWYgaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKToKKyAgICBfX3Rlc3RfXyA9IHt9CitlbHNlOgorICAgIF9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weQppbmRleCA0YTY5YjAwLi4wNDI3YmEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5CkBAIC00LDkgKzQsNyBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIHJ1bl91bml0dGVzdCwgZmluZGZpbGUKIGltcG9ydCB1bml0dGVzdAogCi1pbXBvcnQgeG1sLmRvbQogaW1wb3J0IHhtbC5kb20ubWluaWRvbQotaW1wb3J0IHhtbC5wYXJzZXJzLmV4cGF0CiAKIGZyb20geG1sLmRvbS5taW5pZG9tIGltcG9ydCBwYXJzZSwgTm9kZSwgRG9jdW1lbnQsIHBhcnNlU3RyaW5nCiBmcm9tIHhtbC5kb20ubWluaWRvbSBpbXBvcnQgZ2V0RE9NSW1wbGVtZW50YXRpb24KQEAgLTE0LDcgKzEyLDYgQEAKIAogdHN0ZmlsZSA9IGZpbmRmaWxlKCJ0ZXN0LnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQogCi0KICMgVGhlIHRlc3RzIG9mIERvY3VtZW50VHlwZSBpbXBvcnRpbmcgdXNlIHRoZXNlIGhlbHBlcnMgdG8gY29uc3RydWN0CiAjIHRoZSBkb2N1bWVudHMgdG8gd29yayB3aXRoLCBzaW5jZSBub3QgYWxsIERPTSBidWlsZGVycyBhY3R1YWxseQogIyBjcmVhdGUgdGhlIERvY3VtZW50VHlwZSBub2Rlcy4KQEAgLTUwLDcgKzQ3LDcgQEAKIAogICAgIGRlZiBjaGVja1dob2xlVGV4dChzZWxmLCBub2RlLCBzKToKICAgICAgICAgdCA9IG5vZGUud2hvbGVUZXh0Ci0gICAgICAgIHNlbGYuY29uZmlybSh0ID09IHMsICJsb29raW5nIGZvciAlcywgZm91bmQgJXMiICUgKHJlcHIocyksIHJlcHIodCkpKQorICAgICAgICBzZWxmLmNvbmZpcm0odCA9PSBzLCAibG9va2luZyBmb3IgJXIsIGZvdW5kICVyIiAlIChzLCB0KSkKIAogICAgIGRlZiB0ZXN0UGFyc2VGcm9tRmlsZShzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKHRzdGZpbGUpIGFzIGZpbGU6CkBAIC0yODIsNiArMjc5LDcgQEAKIAogICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoImRlZiIsICJnaGkiKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHhtbC5kb20uTm90Rm91bmRFcnIsIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZSwgImZvbyIpCiAgICAgICAgIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZSgiZGVmIikKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAwKQogICAgICAgICBkb20udW5saW5rKCkKQEAgLTI5Myw2ICsyOTEsOCBAQAogICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmciLCAieG1sbnM6cHl0aG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQogICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy5weXRob24ub3JnIiwgInB5dGhvbjphYmNhdHRyIiwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHhtbC5kb20uTm90Rm91bmRFcnIsIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5TLAorICAgICAgICAgICAgImZvbyIsICJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDIpCiAgICAgICAgIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCAiYWJjYXR0ciIpCiAgICAgICAgIHNlbGYuY29uZmlybShsZW4oY2hpbGQuYXR0cmlidXRlcykgPT0gMSkKQEAgLTMwNCwxMSArMzA0LDIzIEBACiAgICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgic3BhbSIsICJqYW0iKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDEpCiAgICAgICAgIG5vZGUgPSBjaGlsZC5nZXRBdHRyaWJ1dGVOb2RlKCJzcGFtIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoeG1sLmRvbS5Ob3RGb3VuZEVyciwgY2hpbGQucmVtb3ZlQXR0cmlidXRlTm9kZSwKKyAgICAgICAgICAgIE5vbmUpCiAgICAgICAgIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5vZGUobm9kZSkKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAwCiAgICAgICAgICAgICAgICAgYW5kIGNoaWxkLmdldEF0dHJpYnV0ZU5vZGUoInNwYW0iKSBpcyBOb25lKQorICAgICAgICBkb20yID0gRG9jdW1lbnQoKQorICAgICAgICBjaGlsZDIgPSBkb20yLmFwcGVuZENoaWxkKGRvbS5jcmVhdGVFbGVtZW50KCJmb28iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoeG1sLmRvbS5Ob3RGb3VuZEVyciwgY2hpbGQucmVtb3ZlQXR0cmlidXRlTm9kZSwKKyAgICAgICAgICAgIG5vZGUpCiAgICAgICAgIGRvbS51bmxpbmsoKQogCisgICAgZGVmIHRlc3RIYXNBdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIGRvbSA9IERvY3VtZW50KCkKKyAgICAgICAgY2hpbGQgPSBkb20uYXBwZW5kQ2hpbGQoZG9tLmNyZWF0ZUVsZW1lbnQoImZvbyIpKQorICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoInNwYW0iLCAiamFtIikKKyAgICAgICAgc2VsZi5jb25maXJtKGNoaWxkLmhhc0F0dHJpYnV0ZSgic3BhbSIpKQorCiAgICAgZGVmIHRlc3RDaGFuZ2VBdHRyKHNlbGYpOgogICAgICAgICBkb20gPSBwYXJzZVN0cmluZygiPGFiYy8+IikKICAgICAgICAgZWwgPSBkb20uZG9jdW1lbnRFbGVtZW50CkBAIC01OTIsNyArNjA0LDEzIEBACiAKICAgICBkZWYgdGVzdEZpcnN0Q2hpbGQoc2VsZik6IHBhc3MKIAotICAgIGRlZiB0ZXN0SGFzQ2hpbGROb2RlcyhzZWxmKTogcGFzcworICAgIGRlZiB0ZXN0SGFzQ2hpbGROb2RlcyhzZWxmKToKKyAgICAgICAgZG9tID0gcGFyc2VTdHJpbmcoIjxkb2M+PGZvby8+PC9kb2M+IikKKyAgICAgICAgZG9jID0gZG9tLmRvY3VtZW50RWxlbWVudAorICAgICAgICBzZWxmLmFzc2VydFRydWUoZG9tLmhhc0NoaWxkTm9kZXMoKSkKKyAgICAgICAgZG9tMiA9IHBhcnNlU3RyaW5nKCI8ZG9jLz4iKQorICAgICAgICBkb2MyID0gZG9tMi5kb2N1bWVudEVsZW1lbnQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkb2MyLmhhc0NoaWxkTm9kZXMoKSkKIAogICAgIGRlZiBfdGVzdENsb25lRWxlbWVudENvcGllc0F0dHJpYnV0ZXMoc2VsZiwgZTEsIGUyLCB0ZXN0KToKICAgICAgICAgYXR0cnMxID0gZTEuYXR0cmlidXRlcwpAQCAtMTA0MSw0MSArMTA1OSw2IEBACiAgICAgICAgICAgICAgICAgInRlc3QgTm9kZUxpc3QuaXRlbSgpIikKICAgICAgICAgZG9jLnVubGluaygpCiAKLSAgICBkZWYgdGVzdFNBWDJET00oc2VsZik6Ci0gICAgICAgIGZyb20geG1sLmRvbSBpbXBvcnQgcHVsbGRvbQotCi0gICAgICAgIHNheDJkb20gPSBwdWxsZG9tLlNBWDJET00oKQotICAgICAgICBzYXgyZG9tLnN0YXJ0RG9jdW1lbnQoKQotICAgICAgICBzYXgyZG9tLnN0YXJ0RWxlbWVudCgiZG9jIiwge30pCi0gICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCi0gICAgICAgIHNheDJkb20uc3RhcnRFbGVtZW50KCJzdWJlbG0iLCB7fSkKLSAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKLSAgICAgICAgc2F4MmRvbS5lbmRFbGVtZW50KCJzdWJlbG0iKQotICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQotICAgICAgICBzYXgyZG9tLmVuZEVsZW1lbnQoImRvYyIpCi0gICAgICAgIHNheDJkb20uZW5kRG9jdW1lbnQoKQotCi0gICAgICAgIGRvYyA9IHNheDJkb20uZG9jdW1lbnQKLSAgICAgICAgcm9vdCA9IGRvYy5kb2N1bWVudEVsZW1lbnQKLSAgICAgICAgKHRleHQxLCBlbG0xLCB0ZXh0MikgPSByb290LmNoaWxkTm9kZXMKLSAgICAgICAgdGV4dDMgPSBlbG0xLmNoaWxkTm9kZXNbMF0KLQotICAgICAgICBzZWxmLmNvbmZpcm0odGV4dDEucHJldmlvdXNTaWJsaW5nIGlzIE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDEubmV4dFNpYmxpbmcgaXMgZWxtMSBhbmQKLSAgICAgICAgICAgICAgICBlbG0xLnByZXZpb3VzU2libGluZyBpcyB0ZXh0MSBhbmQKLSAgICAgICAgICAgICAgICBlbG0xLm5leHRTaWJsaW5nIGlzIHRleHQyIGFuZAotICAgICAgICAgICAgICAgIHRleHQyLnByZXZpb3VzU2libGluZyBpcyBlbG0xIGFuZAotICAgICAgICAgICAgICAgIHRleHQyLm5leHRTaWJsaW5nIGlzIE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDMucHJldmlvdXNTaWJsaW5nIGlzIE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDMubmV4dFNpYmxpbmcgaXMgTm9uZSwgInRlc3RTQVgyRE9NIC0gc2libGluZ3MiKQotCi0gICAgICAgIHNlbGYuY29uZmlybShyb290LnBhcmVudE5vZGUgaXMgZG9jIGFuZAotICAgICAgICAgICAgICAgIHRleHQxLnBhcmVudE5vZGUgaXMgcm9vdCBhbmQKLSAgICAgICAgICAgICAgICBlbG0xLnBhcmVudE5vZGUgaXMgcm9vdCBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0Mi5wYXJlbnROb2RlIGlzIHJvb3QgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDMucGFyZW50Tm9kZSBpcyBlbG0xLCAidGVzdFNBWDJET00gLSBwYXJlbnRzIikKLSAgICAgICAgZG9jLnVubGluaygpCi0KICAgICBkZWYgdGVzdEVuY29kaW5ncyhzZWxmKToKICAgICAgICAgZG9jID0gcGFyc2VTdHJpbmcoJzxmb28+JiN4MjBhYzs8L2Zvbz4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgpLApAQCAtMTA4NCw2ICsxMDY3LDExIEBACiAgICAgICAgICAgICBiJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+PGZvbz5ceGUyXHg4Mlx4YWM8L2Zvbz4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgnaXNvLTg4NTktMTUnKSwKICAgICAgICAgICAgIGInPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMTUiPz48Zm9vPlx4YTQ8L2Zvbz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgndXMtYXNjaWknKSwKKyAgICAgICAgICAgIGInPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXMtYXNjaWkiPz48Zm9vPiYjODM2NDs8L2Zvbz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgndXRmLTE2JyksCisgICAgICAgICAgICAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTE2Ij8+JworICAgICAgICAgICAgJzxmb28+XHUyMGFjPC9mb28+Jy5lbmNvZGUoJ3V0Zi0xNicpKQogCiAgICAgICAgICMgVmVyaWZ5IHRoYXQgY2hhcmFjdGVyIGRlY29kaW5nIGVycm9ycyB0aHJvdyBleGNlcHRpb25zIGluc3RlYWQKICAgICAgICAgIyBvZiBjcmFzaGluZwpAQCAtMTUyMiwxMiArMTUxMCwyMSBAQAogICAgICAgICBkb2MuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUNvbW1lbnQoImZvby0tYmFyIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRvYy50b3htbCkKIAorCiAgICAgZGVmIHRlc3RFbXB0eVhNTE5TVmFsdWUoc2VsZik6CiAgICAgICAgIGRvYyA9IHBhcnNlU3RyaW5nKCI8ZWxlbWVudCB4bWxucz0nJz5cbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxmb28vPlxuPC9lbGVtZW50PiIpCiAgICAgICAgIGRvYzIgPSBwYXJzZVN0cmluZyhkb2MudG94bWwoKSkKICAgICAgICAgc2VsZi5jb25maXJtKGRvYzIubmFtZXNwYWNlVVJJID09IHhtbC5kb20uRU1QVFlfTkFNRVNQQUNFKQogCisgICAgZGVmIHRlc3REb2NSZW1vdmVDaGlsZChzZWxmKToKKyAgICAgICAgZG9jID0gcGFyc2UodHN0ZmlsZSkKKyAgICAgICAgdGl0bGVfdGFnID0gZG9jLmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVElUTEUiKVswXQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyggeG1sLmRvbS5Ob3RGb3VuZEVyciwgZG9jLnJlbW92ZUNoaWxkLCB0aXRsZV90YWcpCisgICAgICAgIG51bV9jaGlsZHJlbl9iZWZvcmUgPSBsZW4oZG9jLmNoaWxkTm9kZXMpCisgICAgICAgIGRvYy5yZW1vdmVDaGlsZChkb2MuY2hpbGROb2Rlc1swXSkKKyAgICAgICAgbnVtX2NoaWxkcmVuX2FmdGVyID0gbGVuKGRvYy5jaGlsZE5vZGVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobnVtX2NoaWxkcmVuX2FmdGVyID09IG51bV9jaGlsZHJlbl9iZWZvcmUgLSAxKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KE1pbmlkb21UZXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5IGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CmluZGV4IDBlMThhYWIuLjIyMzAwMjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKQEAgLTQxNyw2ICs0MTcsMzUgQEAKICAgICAgICAgICAgIG1beF0gPSBiCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1beF0sIGIpCiAKKyAgICBkZWYgdGVzdF9yZWFkX2FsbChzZWxmKToKKyAgICAgICAgbSA9IG1tYXAubW1hcCgtMSwgMTYpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChtLmNsb3NlKQorCisgICAgICAgICMgV2l0aCBubyBwYXJhbWV0ZXJzLCBvciBOb25lIG9yIGEgbmVnYXRpdmUgYXJndW1lbnQsIHJlYWRzIGFsbAorICAgICAgICBtLndyaXRlKGJ5dGVzKHJhbmdlKDE2KSkpCisgICAgICAgIG0uc2VlaygwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgpLCBieXRlcyhyYW5nZSgxNikpKQorICAgICAgICBtLnNlZWsoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoKSwgYnl0ZXMocmFuZ2UoOCwgMTYpKSkKKyAgICAgICAgbS5zZWVrKDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgpLCBiJycpCisgICAgICAgIG0uc2VlaygzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZChOb25lKSwgYnl0ZXMocmFuZ2UoMywgMTYpKSkKKyAgICAgICAgbS5zZWVrKDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKC0xKSwgYnl0ZXMocmFuZ2UoNCwgMTYpKSkKKyAgICAgICAgbS5zZWVrKDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKC0yKSwgYnl0ZXMocmFuZ2UoNSwgMTYpKSkKKyAgICAgICAgbS5zZWVrKDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKC00MiksIGJ5dGVzKHJhbmdlKDksIDE2KSkpCisKKyAgICBkZWYgdGVzdF9yZWFkX2ludmFsaWRfYXJnKHNlbGYpOgorICAgICAgICBtID0gbW1hcC5tbWFwKC0xLCAxNikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG0uY2xvc2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLnJlYWQsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0ucmVhZCwgNS41KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0ucmVhZCwgWzEsIDIsIDNdKQorCiAgICAgZGVmIHRlc3RfZXh0ZW5kZWRfZ2V0c2xpY2Uoc2VsZik6CiAgICAgICAgICMgVGVzdCBleHRlbmRlZCBzbGljaW5nIGJ5IGNvbXBhcmluZyB3aXRoIGxpc3Qgc2xpY2luZy4KICAgICAgICAgcyA9IGJ5dGVzKHJldmVyc2VkKHJhbmdlKDI1NikpKQpAQCAtNTM0LDggKzU2Myw3IEBACiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKG1tYXAuZXJyb3IsIEVudmlyb25tZW50RXJyb3IpKQotICAgICAgICBzZWxmLmFzc2VydEluKCJtbWFwLmVycm9yIiwgc3RyKG1tYXAuZXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydElzKG1tYXAuZXJyb3IsIE9TRXJyb3IpCiAKICAgICBkZWYgdGVzdF9pb19tZXRob2RzKHNlbGYpOgogICAgICAgICBkYXRhID0gYiIwMTIzNDU2Nzg5IgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkgYi9MaWIvdGVzdC90ZXN0X21vZHVsZS5weQppbmRleCAxNTgzNmNhLi5lNWEyNTI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21vZHVsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X21vZHVsZS5weQpAQCAtNSw2ICs1LDE1IEBACiBpbXBvcnQgc3lzCiBNb2R1bGVUeXBlID0gdHlwZShzeXMpCiAKK2NsYXNzIEZ1bGxMb2FkZXI6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbSk6CisgICAgICAgIHJldHVybiAiPG1vZHVsZSAne30nIChjcmFmdGVkKT4iLmZvcm1hdChtLl9fbmFtZV9fKQorCitjbGFzcyBCYXJlTG9hZGVyOgorICAgIHBhc3MKKworCiBjbGFzcyBNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfdW5pbml0aWFsaXplZChzZWxmKToKICAgICAgICAgIyBBbiB1bmluaXRpYWxpemVkIG1vZHVsZSBoYXMgbm8gX19kaWN0X18gb3IgX19uYW1lX18sCkBAIC03MCwxNiArNzksMTAwIEBACiAgICAgICAgIG0gPSBNb2R1bGVUeXBlKCJmb28iKQogICAgICAgICBtLmRlc3Ryb3llZCA9IGRlc3Ryb3llZAogICAgICAgICBzID0gIiIiY2xhc3MgQToKLSAgICBkZWYgX19kZWxfXyhzZWxmLCBkZXN0cm95ZWQ9ZGVzdHJveWVkKToKLSAgICAgICAgZGVzdHJveWVkLmFwcGVuZCgxKQotYSA9IEEoKSIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsKToKKyAgICAgICAgc2VsZi5sID0gbAorICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBzZWxmLmwuYXBwZW5kKDEpCithID0gQShkZXN0cm95ZWQpIiIiCiAgICAgICAgIGV4ZWMocywgbS5fX2RpY3RfXykKICAgICAgICAgZGVsIG0KICAgICAgICAgZ2NfY29sbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVzdHJveWVkLCBbMV0pCiAKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl9taW5pbWFsKHNlbGYpOgorICAgICAgICAjIHJlcHJzIHdoZW4gbW9kdWxlcyBoYXZlIG5vIF9fZmlsZV9fLCBfX25hbWVfXywgb3IgX19sb2FkZXJfXworICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgZGVsIG0uX19uYW1lX18KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnPyc+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfbmFtZShzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJ2Zvbyc+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfbmFtZV9hbmRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBtLl9fZmlsZV9fID0gJy90bXAvZm9vLnB5JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICdmb28nIGZyb20gJy90bXAvZm9vLnB5Jz4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9maWxlbmFtZV9vbmx5KHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgZGVsIG0uX19uYW1lX18KKyAgICAgICAgbS5fX2ZpbGVfXyA9ICcvdG1wL2Zvby5weScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnPycgZnJvbSAnL3RtcC9mb28ucHknPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2JhcmVfbG9hZGVyX2J1dF9ub19uYW1lKHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgZGVsIG0uX19uYW1lX18KKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBCYXJlTG9hZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKG0pLCAiPG1vZHVsZSAnPycgKDxjbGFzcyAndGVzdC50ZXN0X21vZHVsZS5CYXJlTG9hZGVyJz4pPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2Z1bGxfbG9hZGVyX2J1dF9ub19uYW1lKHNlbGYpOgorICAgICAgICAjIG0uX19sb2FkZXJfXy5tb2R1bGVfcmVwcigpIHdpbGwgZmFpbCBiZWNhdXNlIHRoZSBtb2R1bGUgaGFzIG5vCisgICAgICAgICMgbS5fX25hbWVfXy4gIFRoaXMgZXhjZXB0aW9uIHdpbGwgZ2V0IHN1cHByZXNzZWQgYW5kIGluc3RlYWQgdGhlCisgICAgICAgICMgbG9hZGVyJ3MgcmVwciB3aWxsIGJlIHVzZWQuCisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBkZWwgbS5fX25hbWVfXworICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCisgICAgICAgIG0uX19sb2FkZXJfXyA9IEZ1bGxMb2FkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICc/JyAoPGNsYXNzICd0ZXN0LnRlc3RfbW9kdWxlLkZ1bGxMb2FkZXInPik+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfYmFyZV9sb2FkZXIoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCisgICAgICAgIG0uX19sb2FkZXJfXyA9IEJhcmVMb2FkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICdmb28nICg8Y2xhc3MgJ3Rlc3QudGVzdF9tb2R1bGUuQmFyZUxvYWRlcic+KT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9mdWxsX2xvYWRlcihzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KKyAgICAgICAgbS5fX2xvYWRlcl9fID0gRnVsbExvYWRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVwcihtKSwgIjxtb2R1bGUgJ2ZvbycgKGNyYWZ0ZWQpPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2JhcmVfbG9hZGVyX2FuZF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgIyBCZWNhdXNlIHRoZSBsb2FkZXIgaGFzIG5vIG1vZHVsZV9yZXByKCksIHVzZSB0aGUgZmlsZSBuYW1lLgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBCYXJlTG9hZGVyCisgICAgICAgIG0uX19maWxlX18gPSAnL3RtcC9mb28ucHknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJ2ZvbycgZnJvbSAnL3RtcC9mb28ucHknPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2Z1bGxfbG9hZGVyX2FuZF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgIyBFdmVuIHRob3VnaCB0aGUgbW9kdWxlIGhhcyBhbiBfX2ZpbGVfXywgdXNlIF9fbG9hZGVyX18ubW9kdWxlX3JlcHIoKQorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBGdWxsTG9hZGVyCisgICAgICAgIG0uX19maWxlX18gPSAnL3RtcC9mb28ucHknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJ2ZvbycgKGNyYWZ0ZWQpPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl9idWlsdGluKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc3lzKSwgIjxtb2R1bGUgJ3N5cycgKGJ1aWx0LWluKT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfc291cmNlKHNlbGYpOgorICAgICAgICByID0gcmVwcih1bml0dGVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyWzoyNV0sICI8bW9kdWxlICd1bml0dGVzdCcgZnJvbSAnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyWy0xMzpdLCAiX19pbml0X18ucHknPiIpCisKKyAgICAjIGZyb3plbiBhbmQgbmFtZXNwYWNlIG1vZHVsZSByZXBycyBhcmUgdGVzdGVkIGluIGltcG9ydGxpYi4KKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KE1vZHVsZVRlc3RzKQogCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9tb2R1bGVmaW5kZXIucHkKaW5kZXggYTE4NDIxNy4uYzVmYzMyMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tb2R1bGVmaW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tb2R1bGVmaW5kZXIucHkKQEAgLTEsNyArMSw3IEBACi1pbXBvcnQgX19mdXR1cmVfXwogaW1wb3J0IG9zCitpbXBvcnQgZXJybm8KK2ltcG9ydCBzaHV0aWwKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGRpc3R1dGlscy5kaXJfdXRpbAogaW1wb3J0IHRlbXBmaWxlCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtOSw3ICs5LDcgQEAKIGltcG9ydCBtb2R1bGVmaW5kZXIKIAogVEVTVF9ESVIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLVRFU1RfUEFUSCA9IFtURVNUX0RJUiwgb3MucGF0aC5kaXJuYW1lKF9fZnV0dXJlX18uX19maWxlX18pXQorVEVTVF9QQVRIID0gW1RFU1RfRElSLCBvcy5wYXRoLmRpcm5hbWUodGVtcGZpbGUuX19maWxlX18pXQogCiAjIEVhY2ggdGVzdCBkZXNjcmlwdGlvbiBpcyBhIGxpc3Qgb2YgNSBpdGVtczoKICMKQEAgLTE5NiwxMiArMTk2LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gLiBpbXBvcnQgYmFyCiAiIiJdCiAKKwogZGVmIG9wZW5fZmlsZShwYXRoKToKLSAgICAjI3ByaW50ICIjIiwgb3MucGF0aC5hYnNwYXRoKHBhdGgpCiAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShwYXRoKQotICAgIGRpc3R1dGlscy5kaXJfdXRpbC5ta3BhdGgoZGlybmFtZSkKKyAgICB0cnk6CisgICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6CisgICAgICAgICAgICByYWlzZQogICAgIHJldHVybiBvcGVuKHBhdGgsICJ3IikKIAorCiBkZWYgY3JlYXRlX3BhY2thZ2Uoc291cmNlKToKICAgICBvZmkgPSBOb25lCiAgICAgdHJ5OgpAQCAtMjE2LDYgKzIyMSw3IEBACiAgICAgICAgIGlmIG9maToKICAgICAgICAgICAgIG9maS5jbG9zZSgpCiAKKwogY2xhc3MgTW9kdWxlRmluZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9kb190ZXN0KHNlbGYsIGluZm8sIHJlcG9ydD1GYWxzZSk6CiAgICAgICAgIGltcG9ydF90aGlzLCBtb2R1bGVzLCBtaXNzaW5nLCBtYXliZV9taXNzaW5nLCBzb3VyY2UgPSBpbmZvCkBAIC0yMzQsMTkgKzI0MCwxNyBAQAogIyMgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7IHRyYWNlYmFjay5wcmludF9leGMoKQogIyMgICAgICAgICAgICAgICAgc3lzLnBhdGggPSBvcGF0aAogIyMgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBtb2R1bGVzID0gc2V0KG1vZHVsZXMpCi0gICAgICAgICAgICBmb3VuZCA9IHNldChtZi5tb2R1bGVzLmtleXMoKSkKLSAgICAgICAgICAgIG1vcmUgPSBsaXN0KGZvdW5kIC0gbW9kdWxlcykKLSAgICAgICAgICAgIGxlc3MgPSBsaXN0KG1vZHVsZXMgLSBmb3VuZCkKKyAgICAgICAgICAgIG1vZHVsZXMgPSBzb3J0ZWQoc2V0KG1vZHVsZXMpKQorICAgICAgICAgICAgZm91bmQgPSBzb3J0ZWQobWYubW9kdWxlcykKICAgICAgICAgICAgICMgY2hlY2sgaWYgd2UgZm91bmQgd2hhdCB3ZSBleHBlY3RlZCwgbm90IG1vcmUsIG5vdCBsZXNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChtb3JlLCBsZXNzKSwgKFtdLCBbXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCBtb2R1bGVzKQogCiAgICAgICAgICAgICAjIGNoZWNrIGZvciBtaXNzaW5nIGFuZCBtYXliZSBtaXNzaW5nIG1vZHVsZXMKICAgICAgICAgICAgIGJhZCwgbWF5YmUgPSBtZi5hbnlfbWlzc2luZ19tYXliZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhZCwgbWlzc2luZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF5YmUsIG1heWJlX21pc3NpbmcpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBkaXN0dXRpbHMuZGlyX3V0aWwucmVtb3ZlX3RyZWUoVEVTVF9ESVIpCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RfRElSKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKICAgICAgICAgc2VsZi5fZG9fdGVzdChwYWNrYWdlX3Rlc3QpCkBAIC0yNTQsMjUgKzI1OCwyMyBAQAogICAgIGRlZiB0ZXN0X21heWJlKHNlbGYpOgogICAgICAgICBzZWxmLl9kb190ZXN0KG1heWJlX3Rlc3QpCiAKLSAgICBpZiBnZXRhdHRyKF9fZnV0dXJlX18sICJhYnNvbHV0ZV9pbXBvcnQiLCBOb25lKToKKyAgICBkZWYgdGVzdF9tYXliZV9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX2RvX3Rlc3QobWF5YmVfdGVzdF9uZXcpCiAKLSAgICAgICAgZGVmIHRlc3RfbWF5YmVfbmV3KHNlbGYpOgotICAgICAgICAgICAgc2VsZi5fZG9fdGVzdChtYXliZV90ZXN0X25ldykKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV9pbXBvcnRzKHNlbGYpOgorICAgICAgICBzZWxmLl9kb190ZXN0KGFic29sdXRlX2ltcG9ydF90ZXN0KQogCi0gICAgICAgIGRlZiB0ZXN0X2Fic29sdXRlX2ltcG9ydHMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLl9kb190ZXN0KGFic29sdXRlX2ltcG9ydF90ZXN0KQorICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHMoc2VsZik6CisgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3QpCiAKLSAgICAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0cyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3QpCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0c18yKHNlbGYpOgorICAgICAgICBzZWxmLl9kb190ZXN0KHJlbGF0aXZlX2ltcG9ydF90ZXN0XzIpCiAKLSAgICAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0c18yKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdF8yKQorICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHNfMyhzZWxmKToKKyAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdF8zKQogCi0gICAgICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHNfMyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3RfMykKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIGRpc3R1dGlscy5sb2cuc2V0X3RocmVzaG9sZChkaXN0dXRpbHMubG9nLldBUk4pCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTW9kdWxlRmluZGVyVGVzdCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CmluZGV4IDg2YzY4ZGMuLmZlYjdiZDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQpAQCAtMjQ3LDIwICsyNDcsMTYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYW55KHggPiAweDgwIGZvciB4IGluIGUpKQogCiAgICAgZGVmIHRlc3RfYnVnMTU3MjgzMihzZWxmKToKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPj0gMHgxMDAwMDoKLSAgICAgICAgICAgIG15dW5pY2hyID0gY2hyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBteXVuaWNociA9IGxhbWJkYSB4OiBjaHIoMHhEN0MwKyh4Pj4xMCkpICsgY2hyKDB4REMwMCsoeCYweDNGRikpCi0KICAgICAgICAgZm9yIHggaW4gcmFuZ2UoMHgxMDAwMCwgMHgxMTAwMDApOgogICAgICAgICAgICAgIyBBbnkgSVNPIDIwMjIgY29kZWMgd2lsbCBjYXVzZSB0aGUgc2VnZmF1bHQKLSAgICAgICAgICAgIG15dW5pY2hyKHgpLmVuY29kZSgnaXNvXzIwMjJfanAnLCAnaWdub3JlJykKKyAgICAgICAgICAgIGNocih4KS5lbmNvZGUoJ2lzb18yMDIyX2pwJywgJ2lnbm9yZScpCiAKIGNsYXNzIFRlc3RTdGF0ZWZ1bCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdGV4dCA9ICdcdTRFMTZcdTRFMTYnCiAgICAgZW5jb2RpbmcgPSAnaXNvLTIwMjItanAnCiAgICAgZXhwZWN0ZWQgPSBiJ1x4MWIkQkAkQCQnCi0gICAgZXhwZWN0ZWRfcmVzZXQgPSBiJ1x4MWIkQkAkQCRceDFiKEInCisgICAgcmVzZXQgPSBiJ1x4MWIoQicKKyAgICBleHBlY3RlZF9yZXNldCA9IGV4cGVjdGVkICsgcmVzZXQKIAogICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRleHQuZW5jb2RlKHNlbGYuZW5jb2RpbmcpLCBzZWxmLmV4cGVjdGVkX3Jlc2V0KQpAQCAtMjcxLDYgKzI2Nyw4IEBACiAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZShjaGFyKQogICAgICAgICAgICAgZm9yIGNoYXIgaW4gc2VsZi50ZXh0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgc2VsZi5leHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVyLmVuY29kZSgnJywgZmluYWw9VHJ1ZSksIHNlbGYucmVzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2Rlci5lbmNvZGUoJycsIGZpbmFsPVRydWUpLCBiJycpCiAKICAgICBkZWYgdGVzdF9pbmNyZW1lbnRhbGVuY29kZXJfZmluYWwoc2VsZik6CiAgICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0aW5jcmVtZW50YWxlbmNvZGVyKHNlbGYuZW5jb2RpbmcpKCkKQEAgLTI3OSwxMiArMjc3LDE0IEBACiAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZShjaGFyLCBpbmRleCA9PSBsYXN0X2luZGV4KQogICAgICAgICAgICAgZm9yIGluZGV4LCBjaGFyIGluIGVudW1lcmF0ZShzZWxmLnRleHQpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgc2VsZi5leHBlY3RlZF9yZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVyLmVuY29kZSgnJywgZmluYWw9VHJ1ZSksIGInJykKIAogY2xhc3MgVGVzdEhaU3RhdGVmdWwoVGVzdFN0YXRlZnVsKToKICAgICB0ZXh0ID0gJ1x1ODA0YVx1ODA0YScKICAgICBlbmNvZGluZyA9ICdoeicKICAgICBleHBlY3RlZCA9IGInfntBREFEJwotICAgIGV4cGVjdGVkX3Jlc2V0ID0gYid+e0FEQUR+fScKKyAgICByZXNldCA9IGInfn0nCisgICAgZXhwZWN0ZWRfcmVzZXQgPSBleHBlY3RlZCArIHJlc2V0CiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKaW5kZXggYWI2ZDM2YS4uYjcwNzgzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKQEAgLTgsNiArOCw3IEBACiBpbXBvcnQgcXVldWUgYXMgcHlxdWV1ZQogaW1wb3J0IHRpbWUKIGltcG9ydCBpbworaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgZ2MKQEAgLTE3LDYgKzE4LDcgQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCByYW5kb20KIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgc3RydWN0CiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBpbXBvcnQgdGVzdC5zY3JpcHRfaGVscGVyCiAKQEAgLTg0LDYgKzg2LDEzIEBACiAKIFdJTjMyID0gKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiKQogCitmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisKK2RlZiB3YWl0X2Zvcl9oYW5kbGUoaGFuZGxlLCB0aW1lb3V0KToKKyAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGFuZCB0aW1lb3V0IDwgMC4wOgorICAgICAgICB0aW1lb3V0ID0gTm9uZQorICAgIHJldHVybiB3YWl0KFtoYW5kbGVdLCB0aW1lb3V0KQorCiB0cnk6CiAgICAgTUFYRkQgPSBvcy5zeXNjb25mKCJTQ19PUEVOX01BWCIpCiBleGNlcHQ6CkBAIC0xOTcsNiArMjA2LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycmVudC5pZGVudCwgb3MuZ2V0cGlkKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycmVudC5leGl0Y29kZSwgTm9uZSkKIAorICAgIGRlZiB0ZXN0X2RhZW1vbl9hcmd1bWVudChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5UWVBFID09ICJ0aHJlYWRzIjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQnkgZGVmYXVsdCB1c2VzIHRoZSBjdXJyZW50IHByb2Nlc3MncyBkYWVtb24gZmxhZy4KKyAgICAgICAgcHJvYzAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYzAuZGFlbW9uLCBzZWxmLmN1cnJlbnRfcHJvY2VzcygpLmRhZW1vbikKKyAgICAgICAgcHJvYzEgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3QsIGRhZW1vbj1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvYzEuZGFlbW9uKQorICAgICAgICBwcm9jMiA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdCwgZGFlbW9uPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2MyLmRhZW1vbikKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfdGVzdChjbHMsIHEsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICBjdXJyZW50ID0gY2xzLmN1cnJlbnRfcHJvY2VzcygpCkBAIC0yNjIsOSArMjgzLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocCwgc2VsZi5hY3RpdmVfY2hpbGRyZW4oKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4aXRjb2RlLCBOb25lKQogCisgICAgICAgIGpvaW4gPSBUaW1pbmdXcmFwcGVyKHAuam9pbikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpvaW4oMCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwoam9pbi5lbGFwc2VkLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5pc19hbGl2ZSgpLCBUcnVlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoam9pbigtMSksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwoam9pbi5lbGFwc2VkLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5pc19hbGl2ZSgpLCBUcnVlKQorCiAgICAgICAgIHAudGVybWluYXRlKCkKIAotICAgICAgICBqb2luID0gVGltaW5nV3JhcHBlcihwLmpvaW4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoam9pbigpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKGpvaW4uZWxhcHNlZCwgMC4wKQogCkBAIC0zMjksNiArMzU5LDI2IEBACiAgICAgICAgICAgICBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleHBlY3RlZCkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF9zZW50aW5lbChjbHMsIGV2ZW50KToKKyAgICAgICAgZXZlbnQud2FpdCgxMC4wKQorCisgICAgZGVmIHRlc3Rfc2VudGluZWwoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAidGhyZWFkcyI6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXZlbnQgPSBzZWxmLkV2ZW50KCkKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdF9zZW50aW5lbCwgYXJncz0oZXZlbnQsKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHAuc2VudGluZWwKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLmpvaW4pCisgICAgICAgIHNlbnRpbmVsID0gcC5zZW50aW5lbAorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VudGluZWwsIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3YWl0X2Zvcl9oYW5kbGUoc2VudGluZWwsIHRpbWVvdXQ9MC4wKSkKKyAgICAgICAgZXZlbnQuc2V0KCkKKyAgICAgICAgcC5qb2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdhaXRfZm9yX2hhbmRsZShzZW50aW5lbCwgdGltZW91dD1ERUxUQSkpCisKICMKICMKICMKQEAgLTg2OCw2ICs5MTgsMTA0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbCh3YWl0LmVsYXBzZWQsIFRJTUVPVVQxKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3dhaXRmb3JfZihjbHMsIGNvbmQsIHN0YXRlKToKKyAgICAgICAgd2l0aCBjb25kOgorICAgICAgICAgICAgc3RhdGUudmFsdWUgPSAwCisgICAgICAgICAgICBjb25kLm5vdGlmeSgpCisgICAgICAgICAgICByZXN1bHQgPSBjb25kLndhaXRfZm9yKGxhbWJkYSA6IHN0YXRlLnZhbHVlPT00KQorICAgICAgICAgICAgaWYgbm90IHJlc3VsdCBvciBzdGF0ZS52YWx1ZSAhPSA0OgorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfU0hBUkVEQ1RZUEVTLCAnbmVlZHMgc2hhcmVkY3R5cGVzJykKKyAgICBkZWYgdGVzdF93YWl0Zm9yKHNlbGYpOgorICAgICAgICAjIGJhc2VkIG9uIHRlc3QgaW4gdGVzdC9sb2NrX3Rlc3RzLnB5CisgICAgICAgIGNvbmQgPSBzZWxmLkNvbmRpdGlvbigpCisgICAgICAgIHN0YXRlID0gc2VsZi5WYWx1ZSgnaScsIC0xKQorCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3Rfd2FpdGZvcl9mLCBhcmdzPShjb25kLCBzdGF0ZSkpCisgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICB3aXRoIGNvbmQ6CisgICAgICAgICAgICByZXN1bHQgPSBjb25kLndhaXRfZm9yKGxhbWJkYSA6IHN0YXRlLnZhbHVlPT0wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGUudmFsdWUsIDApCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCisgICAgICAgICAgICB3aXRoIGNvbmQ6CisgICAgICAgICAgICAgICAgc3RhdGUudmFsdWUgKz0gMQorICAgICAgICAgICAgICAgIGNvbmQubm90aWZ5KCkKKworICAgICAgICBwLmpvaW4oNSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwLmlzX2FsaXZlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leGl0Y29kZSwgMCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF93YWl0Zm9yX3RpbWVvdXRfZihjbHMsIGNvbmQsIHN0YXRlLCBzdWNjZXNzLCBzZW0pOgorICAgICAgICBzZW0ucmVsZWFzZSgpCisgICAgICAgIHdpdGggY29uZDoKKyAgICAgICAgICAgIGV4cGVjdGVkID0gMC4xCisgICAgICAgICAgICBkdCA9IHRpbWUudGltZSgpCisgICAgICAgICAgICByZXN1bHQgPSBjb25kLndhaXRfZm9yKGxhbWJkYSA6IHN0YXRlLnZhbHVlPT00LCB0aW1lb3V0PWV4cGVjdGVkKQorICAgICAgICAgICAgZHQgPSB0aW1lLnRpbWUoKSAtIGR0CisgICAgICAgICAgICAjIGJvcnJvdyBsb2dpYyBpbiBhc3NlcnRUaW1lb3V0KCkgZnJvbSB0ZXN0L2xvY2tfdGVzdHMucHkKKyAgICAgICAgICAgIGlmIG5vdCByZXN1bHQgYW5kIGV4cGVjdGVkICogMC42IDwgZHQgPCBleHBlY3RlZCAqIDEwLjA6CisgICAgICAgICAgICAgICAgc3VjY2Vzcy52YWx1ZSA9IFRydWUKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKEhBU19TSEFSRURDVFlQRVMsICduZWVkcyBzaGFyZWRjdHlwZXMnKQorICAgIGRlZiB0ZXN0X3dhaXRmb3JfdGltZW91dChzZWxmKToKKyAgICAgICAgIyBiYXNlZCBvbiB0ZXN0IGluIHRlc3QvbG9ja190ZXN0cy5weQorICAgICAgICBjb25kID0gc2VsZi5Db25kaXRpb24oKQorICAgICAgICBzdGF0ZSA9IHNlbGYuVmFsdWUoJ2knLCAwKQorICAgICAgICBzdWNjZXNzID0gc2VsZi5WYWx1ZSgnaScsIEZhbHNlKQorICAgICAgICBzZW0gPSBzZWxmLlNlbWFwaG9yZSgwKQorCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3Rfd2FpdGZvcl90aW1lb3V0X2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oY29uZCwgc3RhdGUsIHN1Y2Nlc3MsIHNlbSkpCisgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQorICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbS5hY3F1aXJlKHRpbWVvdXQ9MTApKQorCisgICAgICAgICMgT25seSBpbmNyZW1lbnQgMyB0aW1lcywgc28gc3RhdGUgPT0gNCBpcyBuZXZlciByZWFjaGVkLgorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMSkKKyAgICAgICAgICAgIHdpdGggY29uZDoKKyAgICAgICAgICAgICAgICBzdGF0ZS52YWx1ZSArPSAxCisgICAgICAgICAgICAgICAgY29uZC5ub3RpZnkoKQorCisgICAgICAgIHAuam9pbig1KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VjY2Vzcy52YWx1ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF93YWl0X3Jlc3VsdChjbHMsIGMsIHBpZCk6CisgICAgICAgIHdpdGggYzoKKyAgICAgICAgICAgIGMubm90aWZ5KCkKKyAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICBpZiBwaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0lOVCkKKworICAgIGRlZiB0ZXN0X3dhaXRfcmVzdWx0KHNlbGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIFByb2Nlc3Nlc01peGluKSBhbmQgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGlkID0gTm9uZQorCisgICAgICAgIGMgPSBzZWxmLkNvbmRpdGlvbigpCisgICAgICAgIHdpdGggYzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy53YWl0KDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLndhaXQoMC4xKSkKKworICAgICAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdF93YWl0X3Jlc3VsdCwgYXJncz0oYywgcGlkKSkKKyAgICAgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy53YWl0KDEwKSkKKyAgICAgICAgICAgIGlmIHBpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlib2FyZEludGVycnVwdCwgYy53YWl0LCAxMCkKKworICAgICAgICAgICAgcC5qb2luKCkKKwogCiBjbGFzcyBfVGVzdEV2ZW50KEJhc2VUZXN0Q2FzZSk6CiAKQEAgLTkxMSw2ICsxMDU5LDM0MCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdhaXQoKSwgVHJ1ZSkKIAogIworIyBUZXN0cyBmb3IgQmFycmllciAtIGFkYXB0ZWQgZnJvbSB0ZXN0cyBpbiB0ZXN0L2xvY2tfdGVzdHMucHkKKyMKKworIyBNYW55IG9mIHRoZSB0ZXN0cyBmb3IgdGhyZWFkaW5nLkJhcnJpZXIgdXNlIGEgbGlzdCBhcyBhbiBhdG9taWMKKyMgY291bnRlcjogYSB2YWx1ZSBpcyBhcHBlbmRlZCB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIsIGFuZCB0aGUKKyMgbGVuZ3RoIG9mIHRoZSBsaXN0IGdpdmVzIHRoZSB2YWx1ZS4gIFdlIHVzZSB0aGUgY2xhc3MgRHVtbXlMaXN0CisjIGZvciB0aGUgc2FtZSBwdXJwb3NlLgorCitjbGFzcyBfRHVtbXlMaXN0KG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHdyYXBwZXIgPSBtdWx0aXByb2Nlc3NpbmcuaGVhcC5CdWZmZXJXcmFwcGVyKHN0cnVjdC5jYWxjc2l6ZSgnaScpKQorICAgICAgICBsb2NrID0gbXVsdGlwcm9jZXNzaW5nLkxvY2soKQorICAgICAgICBzZWxmLl9fc2V0c3RhdGVfXygod3JhcHBlciwgbG9jaykpCisgICAgICAgIHNlbGYuX2xlbmd0aGJ1ZlswXSA9IDAKKworICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICAoc2VsZi5fd3JhcHBlciwgc2VsZi5fbG9jaykgPSBzdGF0ZQorICAgICAgICBzZWxmLl9sZW5ndGhidWYgPSBzZWxmLl93cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkuY2FzdCgnaScpCisKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYuX3dyYXBwZXIsIHNlbGYuX2xvY2spCisKKyAgICBkZWYgYXBwZW5kKHNlbGYsIF8pOgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9sZW5ndGhidWZbMF0gKz0gMQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9sZW5ndGhidWZbMF0KKworZGVmIF93YWl0KCk6CisgICAgIyBBIGNydWRlIHdhaXQveWllbGQgZnVuY3Rpb24gbm90IHJlbHlpbmcgb24gc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMuCisgICAgdGltZS5zbGVlcCgwLjAxKQorCisKK2NsYXNzIEJ1bmNoKG9iamVjdCk6CisgICAgIiIiCisgICAgQSBidW5jaCBvZiB0aHJlYWRzLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lc3BhY2UsIGYsIGFyZ3MsIG4sIHdhaXRfYmVmb3JlX2V4aXQ9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgQ29uc3RydWN0IGEgYnVuY2ggb2YgYG5gIHRocmVhZHMgcnVubmluZyB0aGUgc2FtZSBmdW5jdGlvbiBgZmAuCisgICAgICAgIElmIGB3YWl0X2JlZm9yZV9leGl0YCBpcyBUcnVlLCB0aGUgdGhyZWFkcyB3b24ndCB0ZXJtaW5hdGUgdW50aWwKKyAgICAgICAgZG9fZmluaXNoKCkgaXMgY2FsbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5mID0gZgorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYubiA9IG4KKyAgICAgICAgc2VsZi5zdGFydGVkID0gbmFtZXNwYWNlLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYuZmluaXNoZWQgPSBuYW1lc3BhY2UuRHVtbXlMaXN0KCkKKyAgICAgICAgc2VsZi5fY2FuX2V4aXQgPSBuYW1lc3BhY2UuRXZlbnQoKQorICAgICAgICBpZiBub3Qgd2FpdF9iZWZvcmVfZXhpdDoKKyAgICAgICAgICAgIHNlbGYuX2Nhbl9leGl0LnNldCgpCisgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICAgICAgcCA9IG5hbWVzcGFjZS5Qcm9jZXNzKHRhcmdldD1zZWxmLnRhc2spCisgICAgICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHAuc3RhcnQoKQorCisgICAgZGVmIHRhc2soc2VsZik6CisgICAgICAgIHBpZCA9IG9zLmdldHBpZCgpCisgICAgICAgIHNlbGYuc3RhcnRlZC5hcHBlbmQocGlkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmYoKnNlbGYuYXJncykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuZmluaXNoZWQuYXBwZW5kKHBpZCkKKyAgICAgICAgICAgIHNlbGYuX2Nhbl9leGl0LndhaXQoMzApCisgICAgICAgICAgICBhc3NlcnQgc2VsZi5fY2FuX2V4aXQuaXNfc2V0KCkKKworICAgIGRlZiB3YWl0X2Zvcl9zdGFydGVkKHNlbGYpOgorICAgICAgICB3aGlsZSBsZW4oc2VsZi5zdGFydGVkKSA8IHNlbGYubjoKKyAgICAgICAgICAgIF93YWl0KCkKKworICAgIGRlZiB3YWl0X2Zvcl9maW5pc2hlZChzZWxmKToKKyAgICAgICAgd2hpbGUgbGVuKHNlbGYuZmluaXNoZWQpIDwgc2VsZi5uOgorICAgICAgICAgICAgX3dhaXQoKQorCisgICAgZGVmIGRvX2ZpbmlzaChzZWxmKToKKyAgICAgICAgc2VsZi5fY2FuX2V4aXQuc2V0KCkKKworCitjbGFzcyBBcHBlbmRUcnVlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iaik6CisgICAgICAgIHNlbGYub2JqID0gb2JqCisgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICBzZWxmLm9iai5hcHBlbmQoVHJ1ZSkKKworCitjbGFzcyBfVGVzdEJhcnJpZXIoQmFzZVRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0cyBmb3IgQmFycmllciBvYmplY3RzLgorICAgICIiIgorICAgIE4gPSA1CisgICAgZGVmYXVsdFRpbWVvdXQgPSAzMC4wICAjIFhYWCBTbG93IFdpbmRvd3MgYnVpbGRib3RzIG5lZWQgZ2VuZXJvdXMgdGltZW91dAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmJhcnJpZXIgPSBzZWxmLkJhcnJpZXIoc2VsZi5OLCB0aW1lb3V0PXNlbGYuZGVmYXVsdFRpbWVvdXQpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuYmFycmllci5hYm9ydCgpCisgICAgICAgIHNlbGYuYmFycmllciA9IE5vbmUKKworICAgIGRlZiBEdW1teUxpc3Qoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAndGhyZWFkcyc6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgZWxpZiBzZWxmLlRZUEUgPT0gJ21hbmFnZXInOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubWFuYWdlci5saXN0KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBfRHVtbXlMaXN0KCkKKworICAgIGRlZiBydW5fdGhyZWFkcyhzZWxmLCBmLCBhcmdzKToKKyAgICAgICAgYiA9IEJ1bmNoKHNlbGYsIGYsIGFyZ3MsIHNlbGYuTi0xKQorICAgICAgICBmKCphcmdzKQorICAgICAgICBiLndhaXRfZm9yX2ZpbmlzaGVkKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtdWx0aXBhc3MoY2xzLCBiYXJyaWVyLCByZXN1bHRzLCBuKToKKyAgICAgICAgbSA9IGJhcnJpZXIucGFydGllcworICAgICAgICBhc3NlcnQgbSA9PSBjbHMuTgorICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgIHJlc3VsdHNbMF0uYXBwZW5kKFRydWUpCisgICAgICAgICAgICBhc3NlcnQgbGVuKHJlc3VsdHNbMV0pID09IGkgKiBtCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgcmVzdWx0c1sxXS5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgICAgIGFzc2VydCBsZW4ocmVzdWx0c1swXSkgPT0gKGkgKyAxKSAqIG0KKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFzc2VydCBiYXJyaWVyLm5fd2FpdGluZyA9PSAwCisgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBhc3NlcnQgbm90IGJhcnJpZXIuYnJva2VuCisKKyAgICBkZWYgdGVzdF9iYXJyaWVyKHNlbGYsIHBhc3Nlcz0xKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhIGJhcnJpZXIgaXMgcGFzc2VkIGluIGxvY2tzdGVwCisgICAgICAgICIiIgorICAgICAgICByZXN1bHRzID0gW3NlbGYuRHVtbXlMaXN0KCksIHNlbGYuRHVtbXlMaXN0KCldCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5tdWx0aXBhc3MsIChzZWxmLmJhcnJpZXIsIHJlc3VsdHMsIHBhc3NlcykpCisKKyAgICBkZWYgdGVzdF9iYXJyaWVyXzEwKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IGEgYmFycmllciB3b3JrcyBmb3IgMTAgY29uc2VjdXRpdmUgcnVucworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYudGVzdF9iYXJyaWVyKDEwKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3dhaXRfcmV0dXJuX2YoY2xzLCBiYXJyaWVyLCBxdWV1ZSk6CisgICAgICAgIHJlcyA9IGJhcnJpZXIud2FpdCgpCisgICAgICAgIHF1ZXVlLnB1dChyZXMpCisKKyAgICBkZWYgdGVzdF93YWl0X3JldHVybihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIHRlc3QgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGJhcnJpZXIud2FpdAorICAgICAgICAiIiIKKyAgICAgICAgcXVldWUgPSBzZWxmLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X3dhaXRfcmV0dXJuX2YsIChzZWxmLmJhcnJpZXIsIHF1ZXVlKSkKKyAgICAgICAgcmVzdWx0cyA9IFtxdWV1ZS5nZXQoKSBmb3IgaSBpbiByYW5nZShzZWxmLk4pXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoMCksIDEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfYWN0aW9uX2YoY2xzLCBiYXJyaWVyLCByZXN1bHRzKToKKyAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgaWYgbGVuKHJlc3VsdHMpICE9IDE6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgIGRlZiB0ZXN0X2FjdGlvbihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhlICdhY3Rpb24nIGNhbGxiYWNrCisgICAgICAgICIiIgorICAgICAgICByZXN1bHRzID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICBiYXJyaWVyID0gc2VsZi5CYXJyaWVyKHNlbGYuTiwgYWN0aW9uPUFwcGVuZFRydWUocmVzdWx0cykpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF9hY3Rpb25fZiwgKGJhcnJpZXIsIHJlc3VsdHMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgMSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF9hYm9ydF9mKGNscywgYmFycmllciwgcmVzdWx0czEsIHJlc3VsdHMyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaSA9IGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICBpZiBpID09IGNscy5OLy8yOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIHJlc3VsdHMxLmFwcGVuZChUcnVlKQorICAgICAgICBleGNlcHQgdGhyZWFkaW5nLkJyb2tlbkJhcnJpZXJFcnJvcjoKKyAgICAgICAgICAgIHJlc3VsdHMyLmFwcGVuZChUcnVlKQorICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgYmFycmllci5hYm9ydCgpCisKKyAgICBkZWYgdGVzdF9hYm9ydChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhbiBhYm9ydCB3aWxsIHB1dCB0aGUgYmFycmllciBpbiBhIGJyb2tlbiBzdGF0ZQorICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0czEgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHJlc3VsdHMyID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfYWJvcnRfZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5iYXJyaWVyLCByZXN1bHRzMSwgcmVzdWx0czIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMyKSwgc2VsZi5OLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmJhcnJpZXIuYnJva2VuKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3Jlc2V0X2YoY2xzLCBiYXJyaWVyLCByZXN1bHRzMSwgcmVzdWx0czIsIHJlc3VsdHMzKToKKyAgICAgICAgaSA9IGJhcnJpZXIud2FpdCgpCisgICAgICAgIGlmIGkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICAjIFdhaXQgdW50aWwgdGhlIG90aGVyIHRocmVhZHMgYXJlIGFsbCBpbiB0aGUgYmFycmllci4KKyAgICAgICAgICAgIHdoaWxlIGJhcnJpZXIubl93YWl0aW5nIDwgY2xzLk4tMToKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDAxKQorICAgICAgICAgICAgYmFycmllci5yZXNldCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgICAgICByZXN1bHRzMS5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCB0aHJlYWRpbmcuQnJva2VuQmFycmllckVycm9yOgorICAgICAgICAgICAgICAgIHJlc3VsdHMyLmFwcGVuZChUcnVlKQorICAgICAgICAjIE5vdywgcGFzcyB0aGUgYmFycmllciBhZ2FpbgorICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICByZXN1bHRzMy5hcHBlbmQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3Jlc2V0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IGEgJ3Jlc2V0JyBvbiBhIGJhcnJpZXIgZnJlZXMgdGhlIHdhaXRpbmcgdGhyZWFkcworICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0czEgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHJlc3VsdHMyID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMyA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X3Jlc2V0X2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYmFycmllciwgcmVzdWx0czEsIHJlc3VsdHMyLCByZXN1bHRzMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMxKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czIpLCBzZWxmLk4tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czMpLCBzZWxmLk4pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfYWJvcnRfYW5kX3Jlc2V0X2YoY2xzLCBiYXJyaWVyLCBiYXJyaWVyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0czEsIHJlc3VsdHMyLCByZXN1bHRzMyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGkgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgaWYgaSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICByZXN1bHRzMS5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgZXhjZXB0IHRocmVhZGluZy5Ccm9rZW5CYXJyaWVyRXJyb3I6CisgICAgICAgICAgICByZXN1bHRzMi5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgIGJhcnJpZXIuYWJvcnQoKQorICAgICAgICAjIFN5bmNocm9uaXplIGFuZCByZXNldCB0aGUgYmFycmllci4gIE11c3Qgc3luY2hyb25pemUgZmlyc3Qgc28KKyAgICAgICAgIyB0aGF0IGV2ZXJ5b25lIGhhcyBsZWZ0IGl0IHdoZW4gd2UgcmVzZXQsIGFuZCBhZnRlciBzbyB0aGF0IG5vCisgICAgICAgICMgb25lIGVudGVycyBpdCBiZWZvcmUgdGhlIHJlc2V0LgorICAgICAgICBpZiBiYXJyaWVyMi53YWl0KCkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICBiYXJyaWVyLnJlc2V0KCkKKyAgICAgICAgYmFycmllcjIud2FpdCgpCisgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgIHJlc3VsdHMzLmFwcGVuZChUcnVlKQorCisgICAgZGVmIHRlc3RfYWJvcnRfYW5kX3Jlc2V0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IGEgYmFycmllciBjYW4gYmUgcmVzZXQgYWZ0ZXIgYmVpbmcgYnJva2VuLgorICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0czEgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHJlc3VsdHMyID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMyA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgYmFycmllcjIgPSBzZWxmLkJhcnJpZXIoc2VsZi5OKQorCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF9hYm9ydF9hbmRfcmVzZXRfZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5iYXJyaWVyLCBiYXJyaWVyMiwgcmVzdWx0czEsIHJlc3VsdHMyLCByZXN1bHRzMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMxKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czIpLCBzZWxmLk4tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czMpLCBzZWxmLk4pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfdGltZW91dF9mKGNscywgYmFycmllciwgcmVzdWx0cyk6CisgICAgICAgIGkgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICBpZiBpID09IGNscy5OLy8yOgorICAgICAgICAgICAgIyBPbmUgdGhyZWFkIGlzIGxhdGUhCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEuMCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYmFycmllci53YWl0KDAuNSkKKyAgICAgICAgZXhjZXB0IHRocmVhZGluZy5Ccm9rZW5CYXJyaWVyRXJyb3I6CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChUcnVlKQorCisgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgd2FpdCh0aW1lb3V0KQorICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X3RpbWVvdXRfZiwgKHNlbGYuYmFycmllciwgcmVzdWx0cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCBzZWxmLmJhcnJpZXIucGFydGllcykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF9kZWZhdWx0X3RpbWVvdXRfZihjbHMsIGJhcnJpZXIsIHJlc3VsdHMpOgorICAgICAgICBpID0gYmFycmllci53YWl0KGNscy5kZWZhdWx0VGltZW91dCkKKyAgICAgICAgaWYgaSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgICMgT25lIHRocmVhZCBpcyBsYXRlciB0aGFuIHRoZSBkZWZhdWx0IHRpbWVvdXQKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMS4wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICBleGNlcHQgdGhyZWFkaW5nLkJyb2tlbkJhcnJpZXJFcnJvcjoKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKFRydWUpCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X3RpbWVvdXQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoZSBiYXJyaWVyJ3MgZGVmYXVsdCB0aW1lb3V0CisgICAgICAgICIiIgorICAgICAgICBiYXJyaWVyID0gc2VsZi5CYXJyaWVyKHNlbGYuTiwgdGltZW91dD0wLjUpCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF9kZWZhdWx0X3RpbWVvdXRfZiwgKGJhcnJpZXIsIHJlc3VsdHMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgYmFycmllci5wYXJ0aWVzKQorCisgICAgZGVmIHRlc3Rfc2luZ2xlX3RocmVhZChzZWxmKToKKyAgICAgICAgYiA9IHNlbGYuQmFycmllcigxKQorICAgICAgICBiLndhaXQoKQorICAgICAgICBiLndhaXQoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3Rob3VzYW5kX2YoY2xzLCBiYXJyaWVyLCBwYXNzZXMsIGNvbm4sIGxvY2spOgorICAgICAgICBmb3IgaSBpbiByYW5nZShwYXNzZXMpOgorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIHdpdGggbG9jazoKKyAgICAgICAgICAgICAgICBjb25uLnNlbmQoaSkKKworICAgIGRlZiB0ZXN0X3Rob3VzYW5kKHNlbGYpOgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ21hbmFnZXInOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHBhc3NlcyA9IDEwMDAKKyAgICAgICAgbG9jayA9IHNlbGYuTG9jaygpCisgICAgICAgIGNvbm4sIGNoaWxkX2Nvbm4gPSBzZWxmLlBpcGUoRmFsc2UpCisgICAgICAgIGZvciBqIGluIHJhbmdlKHNlbGYuTik6CisgICAgICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0X3Rob3VzYW5kX2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLmJhcnJpZXIsIHBhc3NlcywgY2hpbGRfY29ubiwgbG9jaykpCisgICAgICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICBmb3IgaSBpbiByYW5nZShwYXNzZXMpOgorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2Uoc2VsZi5OKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4ucmVjdigpLCBpKQorCisjCiAjCiAjCiAKQEAgLTExMzAsNiArMTYxMiw5IEBACiAgICAgdGltZS5zbGVlcCh3YWl0KQogICAgIHJldHVybiB4KngKIAorZGVmIG11bCh4LCB5KToKKyAgICByZXR1cm4geCp5CisKIGNsYXNzIF9UZXN0UG9vbChCYXNlVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYXBwbHkoc2VsZik6CkBAIC0xMTQzLDYgKzE2MjgsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbWFwKHNxciwgbGlzdChyYW5nZSgxMDApKSwgY2h1bmtzaXplPTIwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KG1hcChzcXIsIGxpc3QocmFuZ2UoMTAwKSkpKSkKIAorICAgIGRlZiB0ZXN0X3N0YXJtYXAoc2VsZik6CisgICAgICAgIHBzbWFwID0gc2VsZi5wb29sLnN0YXJtYXAKKyAgICAgICAgdHVwbGVzID0gbGlzdCh6aXAocmFuZ2UoMTApLCByYW5nZSg5LC0xLCAtMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBzbWFwKG11bCwgdHVwbGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KGl0ZXJ0b29scy5zdGFybWFwKG11bCwgdHVwbGVzKSkpCisgICAgICAgIHR1cGxlcyA9IGxpc3QoemlwKHJhbmdlKDEwMCksIHJhbmdlKDk5LC0xLCAtMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBzbWFwKG11bCwgdHVwbGVzLCBjaHVua3NpemU9MjApLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoaXRlcnRvb2xzLnN0YXJtYXAobXVsLCB0dXBsZXMpKSkKKworICAgIGRlZiB0ZXN0X3N0YXJtYXBfYXN5bmMoc2VsZik6CisgICAgICAgIHR1cGxlcyA9IGxpc3QoemlwKHJhbmdlKDEwMCksIHJhbmdlKDk5LC0xLCAtMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucG9vbC5zdGFybWFwX2FzeW5jKG11bCwgdHVwbGVzKS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KGl0ZXJ0b29scy5zdGFybWFwKG11bCwgdHVwbGVzKSkpCisKICAgICBkZWYgdGVzdF9tYXBfY2h1bmtzaXplKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnBvb2wubWFwX2FzeW5jKHNxciwgW10sIGNodW5rc2l6ZT0xKS5nZXQodGltZW91dD1USU1FT1VUMSkKQEAgLTEyMjEsNiArMTcyMCwxNSBAQAogICAgICAgICBwLmNsb3NlKCkKICAgICAgICAgcC5qb2luKCkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKKyAgICAgICAgICAgIEwgPSBsaXN0KHJhbmdlKDEwKSkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gW3NxcihpKSBmb3IgaSBpbiBMXQorICAgICAgICAgICAgd2l0aCBtdWx0aXByb2Nlc3NpbmcuUG9vbCgyKSBhcyBwOgorICAgICAgICAgICAgICAgIHIgPSBwLm1hcF9hc3luYyhzcXIsIEwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLmdldCgpLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBwLm1hcF9hc3luYywgc3FyLCBMKQorCiBkZWYgcmFpc2luZygpOgogICAgIHJhaXNlIEtleUVycm9yKCJrZXkiKQogCkBAIC0xMzIyLDYgKzE4MzAsMTEgQEAKICAgICAjIHJ1biBhZnRlciBhbGwgdGhlIG90aGVyIHRlc3RzIGZvciB0aGUgbWFuYWdlci4gIEl0IHRlc3RzIHRoYXQKICAgICAjIHRoZXJlIGhhdmUgYmVlbiBubyAicmVmZXJlbmNlIGxlYWtzIiBmb3IgdGhlIG1hbmFnZXIncyBzaGFyZWQKICAgICAjIG9iamVjdHMuICBOb3RlIHRoZSBjb21tZW50IGluIF9UZXN0UG9vbC50ZXN0X3Rlcm1pbmF0ZSgpLgorCisgICAgIyBJZiBzb21lIG90aGVyIHRlc3QgdXNpbmcgTWFuYWdlck1peGluLm1hbmFnZXIgZmFpbHMsIHRoZW4gdGhlCisgICAgIyByYWlzZWQgZXhjZXB0aW9uIG1heSBrZWVwIGFsaXZlIGEgZnJhbWUgd2hpY2ggaG9sZHMgYSByZWZlcmVuY2UKKyAgICAjIHRvIGEgbWFuYWdlZCBvYmplY3QuICBUaGlzIHdpbGwgY2F1c2UgdGVzdF9udW1iZXJfb2Zfb2JqZWN0cyB0bworICAgICMgYWxzbyBmYWlsLgogICAgIEFMTE9XRURfVFlQRVMgPSAoJ21hbmFnZXInLCkKIAogICAgIGRlZiB0ZXN0X251bWJlcl9vZl9vYmplY3RzKHNlbGYpOgpAQCAtMTM3Niw3ICsxODg5LDI3IEBACiAgICAgZGVmIHRlc3RfbXltYW5hZ2VyKHNlbGYpOgogICAgICAgICBtYW5hZ2VyID0gTXlNYW5hZ2VyKCkKICAgICAgICAgbWFuYWdlci5zdGFydCgpCisgICAgICAgIHNlbGYuY29tbW9uKG1hbmFnZXIpCisgICAgICAgIG1hbmFnZXIuc2h1dGRvd24oKQogCisgICAgICAgICMgSWYgdGhlIG1hbmFnZXIgcHJvY2VzcyBleGl0ZWQgY2xlYW5seSB0aGVuIHRoZSBleGl0Y29kZQorICAgICAgICAjIHdpbGwgYmUgemVyby4gIE90aGVyd2lzZSAoYWZ0ZXIgYSBzaG9ydCB0aW1lb3V0KQorICAgICAgICAjIHRlcm1pbmF0ZSgpIGlzIHVzZWQsIHJlc3VsdGluZyBpbiBhbiBleGl0Y29kZSBvZiAtU0lHVEVSTS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5hZ2VyLl9wcm9jZXNzLmV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfbXltYW5hZ2VyX2NvbnRleHQoc2VsZik6CisgICAgICAgIHdpdGggTXlNYW5hZ2VyKCkgYXMgbWFuYWdlcjoKKyAgICAgICAgICAgIHNlbGYuY29tbW9uKG1hbmFnZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuYWdlci5fcHJvY2Vzcy5leGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X215bWFuYWdlcl9jb250ZXh0X3ByZXN0YXJ0ZWQoc2VsZik6CisgICAgICAgIG1hbmFnZXIgPSBNeU1hbmFnZXIoKQorICAgICAgICBtYW5hZ2VyLnN0YXJ0KCkKKyAgICAgICAgd2l0aCBtYW5hZ2VyOgorICAgICAgICAgICAgc2VsZi5jb21tb24obWFuYWdlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5hZ2VyLl9wcm9jZXNzLmV4aXRjb2RlLCAwKQorCisgICAgZGVmIGNvbW1vbihzZWxmLCBtYW5hZ2VyKToKICAgICAgICAgZm9vID0gbWFuYWdlci5Gb28oKQogICAgICAgICBiYXIgPSBtYW5hZ2VyLkJhcigpCiAgICAgICAgIGJheiA9IG1hbmFnZXIuYmF6KCkKQEAgLTEzOTksNyArMTkzMiw2IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGJheiksIFtpKmkgZm9yIGkgaW4gcmFuZ2UoMTApXSkKIAotICAgICAgICBtYW5hZ2VyLnNodXRkb3duKCkKIAogIwogIyBUZXN0IG9mIGNvbm5lY3RpbmcgdG8gYSByZW1vdGUgc2VydmVyIGFuZCB1c2luZyB4bWxycGNsaWIgZm9yIHNlcmlhbGl6YXRpb24KQEAgLTE1NzAsNiArMjEwMiw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9sbCgpLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbChwb2xsLmVsYXBzZWQsIDApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb2xsKC0xKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwocG9sbC5lbGFwc2VkLCAwKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9sbChUSU1FT1VUMSksIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKHBvbGwuZWxhcHNlZCwgVElNRU9VVDEpCiAKQEAgLTE3NTUsNiArMjI5MCw0MyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHJlZHVjdGlvbi5yZWN2X2hhbmRsZSwgY29ubikKICAgICAgICAgcC5qb2luKCkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHQoc2VsZik6CisgICAgICAgIGEsIGIgPSBzZWxmLlBpcGUoKQorCisgICAgICAgIHdpdGggYSwgYjoKKyAgICAgICAgICAgIGEuc2VuZCgxNzI5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJlY3YoKSwgMTcyOSkKKyAgICAgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGEuY2xvc2VkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYi5jbG9zZWQpCisKKyAgICAgICAgaWYgc2VsZi5UWVBFID09ICdwcm9jZXNzZXMnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEuY2xvc2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGIuY2xvc2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYS5yZWN2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYi5yZWN2KQorCitjbGFzcyBfVGVzdExpc3RlbmVyKEJhc2VUZXN0Q2FzZSk6CisKKyAgICBBTExPV0VEX1RZUEVTID0gKCdwcm9jZXNzZXMnLCkKKworICAgIGRlZiB0ZXN0X211bHRpcGxlX2JpbmQoc2VsZik6CisgICAgICAgIGZvciBmYW1pbHkgaW4gc2VsZi5jb25uZWN0aW9uLmZhbWlsaWVzOgorICAgICAgICAgICAgbCA9IHNlbGYuY29ubmVjdGlvbi5MaXN0ZW5lcihmYW1pbHk9ZmFtaWx5KQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGwuY2xvc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzZWxmLmNvbm5lY3Rpb24uTGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmFkZHJlc3MsIGZhbWlseSkKKworICAgIGRlZiB0ZXN0X2NvbnRleHQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5jb25uZWN0aW9uLkxpc3RlbmVyKCkgYXMgbDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5jb25uZWN0aW9uLkNsaWVudChsLmFkZHJlc3MpIGFzIGM6CisgICAgICAgICAgICAgICAgd2l0aCBsLmFjY2VwdCgpIGFzIGQ6CisgICAgICAgICAgICAgICAgICAgIGMuc2VuZCgxNzI5KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQucmVjdigpLCAxNzI5KQorCisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGwuYWNjZXB0KQorCiBjbGFzcyBfVGVzdExpc3RlbmVyQ2xpZW50KEJhc2VUZXN0Q2FzZSk6CiAKICAgICBBTExPV0VEX1RZUEVTID0gKCdwcm9jZXNzZXMnLCAndGhyZWFkcycpCkBAIC0xNzkyLDUyICsyMzY0LDEzNSBAQAogICAgICAgICBwLmpvaW4oKQogICAgICAgICBsLmNsb3NlKCkKIAorY2xhc3MgX1Rlc3RQb2xsKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEFMTE9XRURfVFlQRVMgPSAoJ3Byb2Nlc3NlcycsICd0aHJlYWRzJykKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgYSwgYiA9IHNlbGYuUGlwZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKCksIEZhbHNlKQorICAgICAgICBiLnNlbmRfYnl0ZXMoYicnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgpLCBUcnVlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jaGlsZF9zdHJpbmdzKGNscywgY29ubiwgc3RyaW5ncyk6CisgICAgICAgIGZvciBzIGluIHN0cmluZ3M6CisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKyAgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhzKQorICAgICAgICBjb25uLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3N0cmluZ3Moc2VsZik6CisgICAgICAgIHN0cmluZ3MgPSAoYidoZWxsbycsIGInJywgYidhJywgYidiJywgYicnLCBiJ2J5ZScsIGInJywgYidsb3AnKQorICAgICAgICBhLCBiID0gc2VsZi5QaXBlKCkKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fY2hpbGRfc3RyaW5ncywgYXJncz0oYiwgc3RyaW5ncykpCisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIGZvciBzIGluIHN0cmluZ3M6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgyMDApOgorICAgICAgICAgICAgICAgIGlmIGEucG9sbCgwLjAxKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHggPSBhLnJlY3ZfYnl0ZXMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCB4KQorCisgICAgICAgIHAuam9pbigpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NoaWxkX2JvdW5kYXJpZXMoY2xzLCByKToKKyAgICAgICAgIyBQb2xsaW5nIG1heSAicHVsbCIgYSBtZXNzYWdlIGluIHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBidXQgd2UKKyAgICAgICAgIyBkb24ndCB3YW50IGl0IHRvIHB1bGwgb25seSBwYXJ0IG9mIGEgbWVzc2FnZSwgYXMgdGhhdCB3b3VsZAorICAgICAgICAjIGNvcnJ1cHQgdGhlIHBpcGUgZm9yIGFueSBvdGhlciBwcm9jZXNzZXMgd2hpY2ggbWlnaHQgbGF0ZXIKKyAgICAgICAgIyByZWFkIGZyb20gaXQuCisgICAgICAgIHIucG9sbCg1KQorCisgICAgZGVmIHRlc3RfYm91bmRhcmllcyhzZWxmKToKKyAgICAgICAgciwgdyA9IHNlbGYuUGlwZShGYWxzZSkKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fY2hpbGRfYm91bmRhcmllcywgYXJncz0ociwpKQorICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgdGltZS5zbGVlcCgyKQorICAgICAgICBMID0gW2IiZmlyc3QiLCBiInNlY29uZCJdCisgICAgICAgIGZvciBvYmogaW4gTDoKKyAgICAgICAgICAgIHcuc2VuZF9ieXRlcyhvYmopCisgICAgICAgIHcuY2xvc2UoKQorICAgICAgICBwLmpvaW4oKQorICAgICAgICBzZWxmLmFzc2VydEluKHIucmVjdl9ieXRlcygpLCBMKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jaGlsZF9kb250X21lcmdlKGNscywgYik6CisgICAgICAgIGIuc2VuZF9ieXRlcyhiJ2EnKQorICAgICAgICBiLnNlbmRfYnl0ZXMoYidiJykKKyAgICAgICAgYi5zZW5kX2J5dGVzKGInY2QnKQorCisgICAgZGVmIHRlc3RfZG9udF9tZXJnZShzZWxmKToKKyAgICAgICAgYSwgYiA9IHNlbGYuUGlwZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDAuMCksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgwLjEpLCBGYWxzZSkKKworICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl9jaGlsZF9kb250X21lcmdlLCBhcmdzPShiLCkpCisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5yZWN2X2J5dGVzKCksIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDEuMCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDEuMCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5yZWN2X2J5dGVzKCksIGInYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDEuMCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDEuMCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDAuMCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5yZWN2X2J5dGVzKCksIGInY2QnKQorCisgICAgICAgIHAuam9pbigpCisKICMKICMgVGVzdCBvZiBzZW5kaW5nIGNvbm5lY3Rpb24gYW5kIHNvY2tldCBvYmplY3RzIGJldHdlZW4gcHJvY2Vzc2VzCiAjCi0iIiIKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFTX1JFRFVDVElPTiwgInRlc3QgbmVlZHMgbXVsdGlwcm9jZXNzaW5nLnJlZHVjdGlvbiIpCiBjbGFzcyBfVGVzdFBpY2tsaW5nQ29ubmVjdGlvbnMoQmFzZVRlc3RDYXNlKToKIAogICAgIEFMTE9XRURfVFlQRVMgPSAoJ3Byb2Nlc3NlcycsKQogCi0gICAgZGVmIF9saXN0ZW5lcihzZWxmLCBjb25uLCBmYW1pbGllcyk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcucmVkdWN0aW9uIGltcG9ydCByZXNvdXJjZV9zaGFyZXIKKyAgICAgICAgcmVzb3VyY2Vfc2hhcmVyLnN0b3AodGltZW91dD01KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9saXN0ZW5lcihjbHMsIGNvbm4sIGZhbWlsaWVzKToKICAgICAgICAgZm9yIGZhbSBpbiBmYW1pbGllczoKLSAgICAgICAgICAgIGwgPSBzZWxmLmNvbm5lY3Rpb24uTGlzdGVuZXIoZmFtaWx5PWZhbSkKKyAgICAgICAgICAgIGwgPSBjbHMuY29ubmVjdGlvbi5MaXN0ZW5lcihmYW1pbHk9ZmFtKQogICAgICAgICAgICAgY29ubi5zZW5kKGwuYWRkcmVzcykKICAgICAgICAgICAgIG5ld19jb25uID0gbC5hY2NlcHQoKQogICAgICAgICAgICAgY29ubi5zZW5kKG5ld19jb25uKQorICAgICAgICAgICAgbmV3X2Nvbm4uY2xvc2UoKQorICAgICAgICAgICAgbC5jbG9zZSgpCiAKLSAgICAgICAgaWYgc2VsZi5UWVBFID09ICdwcm9jZXNzZXMnOgotICAgICAgICAgICAgbCA9IHNvY2tldC5zb2NrZXQoKQotICAgICAgICAgICAgbC5iaW5kKCgnbG9jYWxob3N0JywgMCkpCi0gICAgICAgICAgICBjb25uLnNlbmQobC5nZXRzb2NrbmFtZSgpKQotICAgICAgICAgICAgbC5saXN0ZW4oMSkKLSAgICAgICAgICAgIG5ld19jb25uLCBhZGRyID0gbC5hY2NlcHQoKQotICAgICAgICAgICAgY29ubi5zZW5kKG5ld19jb25uKQorICAgICAgICBsID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIGwuYmluZCgoJ2xvY2FsaG9zdCcsIDApKQorICAgICAgICBsLmxpc3RlbigxKQorICAgICAgICBjb25uLnNlbmQobC5nZXRzb2NrbmFtZSgpKQorICAgICAgICBuZXdfY29ubiwgYWRkciA9IGwuYWNjZXB0KCkKKyAgICAgICAgY29ubi5zZW5kKG5ld19jb25uKQorICAgICAgICBuZXdfY29ubi5jbG9zZSgpCisgICAgICAgIGwuY2xvc2UoKQogCiAgICAgICAgIGNvbm4ucmVjdigpCiAKLSAgICBkZWYgX3JlbW90ZShzZWxmLCBjb25uKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlbW90ZShjbHMsIGNvbm4pOgogICAgICAgICBmb3IgKGFkZHJlc3MsIG1zZykgaW4gaXRlcihjb25uLnJlY3YsIE5vbmUpOgotICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5jb25uZWN0aW9uLkNsaWVudChhZGRyZXNzKQorICAgICAgICAgICAgY2xpZW50ID0gY2xzLmNvbm5lY3Rpb24uQ2xpZW50KGFkZHJlc3MpCiAgICAgICAgICAgICBjbGllbnQuc2VuZChtc2cudXBwZXIoKSkKICAgICAgICAgICAgIGNsaWVudC5jbG9zZSgpCiAKLSAgICAgICAgaWYgc2VsZi5UWVBFID09ICdwcm9jZXNzZXMnOgotICAgICAgICAgICAgYWRkcmVzcywgbXNnID0gY29ubi5yZWN2KCkKLSAgICAgICAgICAgIGNsaWVudCA9IHNvY2tldC5zb2NrZXQoKQotICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoYWRkcmVzcykKLSAgICAgICAgICAgIGNsaWVudC5zZW5kYWxsKG1zZy51cHBlcigpKQotICAgICAgICAgICAgY2xpZW50LmNsb3NlKCkKKyAgICAgICAgYWRkcmVzcywgbXNnID0gY29ubi5yZWN2KCkKKyAgICAgICAgY2xpZW50ID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIGNsaWVudC5jb25uZWN0KGFkZHJlc3MpCisgICAgICAgIGNsaWVudC5zZW5kYWxsKG1zZy51cHBlcigpKQorICAgICAgICBjbGllbnQuY2xvc2UoKQogCiAgICAgICAgIGNvbm4uY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfcGlja2xpbmcoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5hbGxvd19jb25uZWN0aW9uX3BpY2tsaW5nKCkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcmV0dXJuCi0KICAgICAgICAgZmFtaWxpZXMgPSBzZWxmLmNvbm5lY3Rpb24uZmFtaWxpZXMKIAogICAgICAgICBsY29ubiwgbGNvbm4wID0gc2VsZi5QaXBlKCkKQEAgLTE4NjEsMTYgKzI1MTYsMTkgQEAKIAogICAgICAgICByY29ubi5zZW5kKE5vbmUpCiAKLSAgICAgICAgaWYgc2VsZi5UWVBFID09ICdwcm9jZXNzZXMnOgotICAgICAgICAgICAgbXNnID0gbGF0aW4oJ1RoaXMgY29ubmVjdGlvbiB1c2VzIGEgbm9ybWFsIHNvY2tldCcpCi0gICAgICAgICAgICBhZGRyZXNzID0gbGNvbm4ucmVjdigpCi0gICAgICAgICAgICByY29ubi5zZW5kKChhZGRyZXNzLCBtc2cpKQotICAgICAgICAgICAgaWYgaGFzYXR0cihzb2NrZXQsICdmcm9tZmQnKToKLSAgICAgICAgICAgICAgICBuZXdfY29ubiA9IGxjb25uLnJlY3YoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2Nvbm4ucmVjdigxMDApLCBtc2cudXBwZXIoKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBYWFggT24gV2luZG93cyB3aXRoIFB5Mi42IG5lZWQgdG8gYmFja3BvcnQgZnJvbWZkKCkKLSAgICAgICAgICAgICAgICBkaXNjYXJkID0gbGNvbm4ucmVjdl9ieXRlcygpCisgICAgICAgIG1zZyA9IGxhdGluKCdUaGlzIGNvbm5lY3Rpb24gdXNlcyBhIG5vcm1hbCBzb2NrZXQnKQorICAgICAgICBhZGRyZXNzID0gbGNvbm4ucmVjdigpCisgICAgICAgIHJjb25uLnNlbmQoKGFkZHJlc3MsIG1zZykpCisgICAgICAgIG5ld19jb25uID0gbGNvbm4ucmVjdigpCisgICAgICAgIGJ1ZiA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBzID0gbmV3X2Nvbm4ucmVjdigxMDApCisgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgYnVmLmFwcGVuZChzKQorICAgICAgICBidWYgPSBiJycuam9pbihidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBtc2cudXBwZXIoKSkKKyAgICAgICAgbmV3X2Nvbm4uY2xvc2UoKQogCiAgICAgICAgIGxjb25uLnNlbmQoTm9uZSkKIApAQCAtMTg3OSw3ICsyNTM3LDQ2IEBACiAKICAgICAgICAgbHAuam9pbigpCiAgICAgICAgIHJwLmpvaW4oKQotIiIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgY2hpbGRfYWNjZXNzKGNscywgY29ubik6CisgICAgICAgIHcgPSBjb25uLnJlY3YoKQorICAgICAgICB3LnNlbmQoJ2FsbCBpcyB3ZWxsJykKKyAgICAgICAgdy5jbG9zZSgpCisKKyAgICAgICAgciA9IGNvbm4ucmVjdigpCisgICAgICAgIG1zZyA9IHIucmVjdigpCisgICAgICAgIGNvbm4uc2VuZChtc2cqMikKKworICAgICAgICBjb25uLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2FjY2VzcyhzZWxmKToKKyAgICAgICAgIyBPbiBXaW5kb3dzLCBpZiB3ZSBkbyBub3Qgc3BlY2lmeSBhIGRlc3RpbmF0aW9uIHBpZCB3aGVuCisgICAgICAgICMgdXNpbmcgRHVwSGFuZGxlIHRoZW4gd2UgbmVlZCB0byBiZSBjYXJlZnVsIHRvIHVzZSB0aGUKKyAgICAgICAgIyBjb3JyZWN0IGFjY2VzcyBmbGFncyBmb3IgRHVwbGljYXRlSGFuZGxlKCksIG9yIGVsc2UKKyAgICAgICAgIyBEdXBIYW5kbGUuZGV0YWNoKCkgd2lsbCByYWlzZSBQZXJtaXNzaW9uRXJyb3IuICBGb3IgZXhhbXBsZSwKKyAgICAgICAgIyBmb3IgYSByZWFkIG9ubHkgcGlwZSBoYW5kbGUgd2Ugc2hvdWxkIHVzZQorICAgICAgICAjIGFjY2Vzcz1GSUxFX0dFTkVSSUNfUkVBRC4gIChVbmZvcnR1bmF0ZWx5CisgICAgICAgICMgRFVQTElDQVRFX1NBTUVfQUNDRVNTIGRvZXMgbm90IHdvcmsuKQorICAgICAgICBjb25uLCBjaGlsZF9jb25uID0gc2VsZi5QaXBlKCkKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5jaGlsZF9hY2Nlc3MsIGFyZ3M9KGNoaWxkX2Nvbm4sKSkKKyAgICAgICAgcC5kYWVtb24gPSBUcnVlCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBjaGlsZF9jb25uLmNsb3NlKCkKKworICAgICAgICByLCB3ID0gc2VsZi5QaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgY29ubi5zZW5kKHcpCisgICAgICAgIHcuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIucmVjdigpLCAnYWxsIGlzIHdlbGwnKQorICAgICAgICByLmNsb3NlKCkKKworICAgICAgICByLCB3ID0gc2VsZi5QaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgY29ubi5zZW5kKHIpCisgICAgICAgIHIuY2xvc2UoKQorICAgICAgICB3LnNlbmQoJ2Zvb2JhcicpCisgICAgICAgIHcuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4ucmVjdigpLCAnZm9vYmFyJyoyKQorCiAjCiAjCiAjCkBAIC0yMTc0LDkgKzI4NzEsMTUgQEAKIAogICAgIEB1bml0dGVzdC5za2lwSWYoV0lOMzIsICJza2lwcGVkIG9uIFdpbmRvd3MiKQogICAgIGRlZiB0ZXN0X2ludmFsaWRfaGFuZGxlcyhzZWxmKToKLSAgICAgICAgY29ubiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbig0NDk3NzYwOCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgY29ubi5wb2xsKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24sIC0xKQorICAgICAgICBjb25uID0gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24uQ29ubmVjdGlvbig0NDk3NzYwOCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIElPRXJyb3IpLCBjb25uLnBvbGwpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAjIEhhY2sgcHJpdmF0ZSBhdHRyaWJ1dGUgX2hhbmRsZSB0byBhdm9pZCBwcmludGluZyBhbiBlcnJvcgorICAgICAgICAgICAgIyBpbiBjb25uLl9fZGVsX18KKyAgICAgICAgICAgIGNvbm4uX2hhbmRsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIElPRXJyb3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi5Db25uZWN0aW9uLCAtMSkKIAogIwogIyBGdW5jdGlvbnMgdXNlZCB0byBjcmVhdGUgdGVzdCBjYXNlcyBmcm9tIHRoZSBiYXNlIG9uZXMgaW4gdGhpcyBtb2R1bGUKQEAgLTIxOTUsMTAgKzI4OTgsMTIgQEAKICAgICByZXN1bHQgPSB7fQogICAgIGdsb2IgPSBnbG9iYWxzKCkKICAgICBUeXBlID0gdHlwZS5jYXBpdGFsaXplKCkKKyAgICBBTExfVFlQRVMgPSB7J3Byb2Nlc3NlcycsICd0aHJlYWRzJywgJ21hbmFnZXInfQogCiAgICAgZm9yIG5hbWUgaW4gbGlzdChnbG9iLmtleXMoKSk6CiAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnX1Rlc3QnKToKICAgICAgICAgICAgIGJhc2UgPSBnbG9iW25hbWVdCisgICAgICAgICAgICBhc3NlcnQgc2V0KGJhc2UuQUxMT1dFRF9UWVBFUykgPD0gQUxMX1RZUEVTLCBzZXQoYmFzZS5BTExPV0VEX1RZUEVTKQogICAgICAgICAgICAgaWYgdHlwZSBpbiBiYXNlLkFMTE9XRURfVFlQRVM6CiAgICAgICAgICAgICAgICAgbmV3bmFtZSA9ICdXaXRoJyArIFR5cGUgKyBuYW1lWzE6XQogICAgICAgICAgICAgICAgIGNsYXNzIFRlbXAoYmFzZSwgdW5pdHRlc3QuVGVzdENhc2UsIE1peGluKToKQEAgLTIyMTcsNyArMjkyMiw3IEBACiAgICAgUHJvY2VzcyA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzCiAgICAgbG9jYWxzKCkudXBkYXRlKGdldF9hdHRyaWJ1dGVzKG11bHRpcHJvY2Vzc2luZywgKAogICAgICAgICAnUXVldWUnLCAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsCi0gICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnVmFsdWUnLCAnQXJyYXknLCAnUmF3VmFsdWUnLAorICAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ0JhcnJpZXInLCAnVmFsdWUnLCAnQXJyYXknLCAnUmF3VmFsdWUnLAogICAgICAgICAnUmF3QXJyYXknLCAnY3VycmVudF9wcm9jZXNzJywgJ2FjdGl2ZV9jaGlsZHJlbicsICdQaXBlJywKICAgICAgICAgJ2Nvbm5lY3Rpb24nLCAnSm9pbmFibGVRdWV1ZScsICdQb29sJwogICAgICAgICApKSkKQEAgLTIyMzIsNyArMjkzNyw3IEBACiAgICAgbWFuYWdlciA9IG9iamVjdC5fX25ld19fKG11bHRpcHJvY2Vzc2luZy5tYW5hZ2Vycy5TeW5jTWFuYWdlcikKICAgICBsb2NhbHMoKS51cGRhdGUoZ2V0X2F0dHJpYnV0ZXMobWFuYWdlciwgKAogICAgICAgICAnUXVldWUnLCAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsCi0gICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdWYWx1ZScsICdBcnJheScsICdsaXN0JywgJ2RpY3QnLAorICAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ0JhcnJpZXInLCAnVmFsdWUnLCAnQXJyYXknLCAnbGlzdCcsICdkaWN0JywKICAgICAgICAgJ05hbWVzcGFjZScsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnCiAgICAgICAgICkpKQogCkBAIC0yMjQ1LDcgKzI5NTAsNyBAQAogICAgIFByb2Nlc3MgPSBtdWx0aXByb2Nlc3NpbmcuZHVtbXkuUHJvY2VzcwogICAgIGxvY2FscygpLnVwZGF0ZShnZXRfYXR0cmlidXRlcyhtdWx0aXByb2Nlc3NpbmcuZHVtbXksICgKICAgICAgICAgJ1F1ZXVlJywgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLAotICAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ1ZhbHVlJywgJ0FycmF5JywgJ2N1cnJlbnRfcHJvY2VzcycsCisgICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnQmFycmllcicsICdWYWx1ZScsICdBcnJheScsICdjdXJyZW50X3Byb2Nlc3MnLAogICAgICAgICAnYWN0aXZlX2NoaWxkcmVuJywgJ1BpcGUnLCAnY29ubmVjdGlvbicsICdkaWN0JywgJ2xpc3QnLAogICAgICAgICAnTmFtZXNwYWNlJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcKICAgICAgICAgKSkpCkBAIC0yMjk3LDYgKzMwMDIsNyBAQAogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLm1nci5zaHV0ZG93bigpCisgICAgICAgIHNlbGYubWdyLmpvaW4oKQogCiAgICAgZGVmIHRlc3RfbWFuYWdlcl9pbml0aWFsaXplcihzZWxmKToKICAgICAgICAgbSA9IG11bHRpcHJvY2Vzc2luZy5tYW5hZ2Vycy5TeW5jTWFuYWdlcigpCkBAIC0yMzA0LDYgKzMwMTAsNyBAQAogICAgICAgICBtLnN0YXJ0KGluaXRpYWxpemVyLCAoc2VsZi5ucywpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnMudGVzdCwgMSkKICAgICAgICAgbS5zaHV0ZG93bigpCisgICAgICAgIG0uam9pbigpCiAKICAgICBkZWYgdGVzdF9wb29sX2luaXRpYWxpemVyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG11bHRpcHJvY2Vzc2luZy5Qb29sLCBpbml0aWFsaXplcj0xKQpAQCAtMjMzNiw2ICszMDQzLDggQEAKIGRlZiBwb29sX2luX3Byb2Nlc3MoKToKICAgICBwb29sID0gbXVsdGlwcm9jZXNzaW5nLlBvb2wocHJvY2Vzc2VzPTQpCiAgICAgeCA9IHBvb2wubWFwKF9hZnVuYywgWzEsIDIsIDMsIDQsIDUsIDYsIDddKQorICAgIHBvb2wuY2xvc2UoKQorICAgIHBvb2wuam9pbigpCiAKIGNsYXNzIF9maWxlX2xpa2Uob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGVsZWdhdGUpOgpAQCAtMjM4MCw2ICszMDg5LDE4MCBAQAogICAgICAgICBhc3NlcnQgc2lvLmdldHZhbHVlKCkgPT0gJ2ZvbycKIAogCitjbGFzcyBUZXN0V2FpdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NoaWxkX3Rlc3Rfd2FpdChjbHMsIHcsIHNsb3cpOgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgICAgICBpZiBzbG93OgorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAocmFuZG9tLnJhbmRvbSgpKjAuMSkKKyAgICAgICAgICAgIHcuc2VuZCgoaSwgb3MuZ2V0cGlkKCkpKQorICAgICAgICB3LmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3dhaXQoc2VsZiwgc2xvdz1GYWxzZSk6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKyAgICAgICAgcmVhZGVycyA9IFtdCisgICAgICAgIHByb2NzID0gW10KKyAgICAgICAgbWVzc2FnZXMgPSBbXQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDQpOgorICAgICAgICAgICAgciwgdyA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgICAgIHAgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fY2hpbGRfdGVzdF93YWl0LCBhcmdzPSh3LCBzbG93KSkKKyAgICAgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgcC5zdGFydCgpCisgICAgICAgICAgICB3LmNsb3NlKCkKKyAgICAgICAgICAgIHJlYWRlcnMuYXBwZW5kKHIpCisgICAgICAgICAgICBwcm9jcy5hcHBlbmQocCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLmpvaW4pCisKKyAgICAgICAgd2hpbGUgcmVhZGVyczoKKyAgICAgICAgICAgIGZvciByIGluIHdhaXQocmVhZGVycyk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBtc2cgPSByLnJlY3YoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmVhZGVycy5yZW1vdmUocikKKyAgICAgICAgICAgICAgICAgICAgci5jbG9zZSgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMuYXBwZW5kKG1zZykKKworICAgICAgICBtZXNzYWdlcy5zb3J0KCkKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3J0ZWQoKGksIHAucGlkKSBmb3IgaSBpbiByYW5nZSgxMCkgZm9yIHAgaW4gcHJvY3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVzc2FnZXMsIGV4cGVjdGVkKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jaGlsZF90ZXN0X3dhaXRfc29ja2V0KGNscywgYWRkcmVzcywgc2xvdyk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgcy5jb25uZWN0KGFkZHJlc3MpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgICAgIGlmIHNsb3c6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcChyYW5kb20ucmFuZG9tKCkqMC4xKQorICAgICAgICAgICAgcy5zZW5kYWxsKCgnJXNcbicgJSBpKS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfd2FpdF9zb2NrZXQoc2VsZiwgc2xvdz1GYWxzZSk6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKyAgICAgICAgbCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBsLmJpbmQoKCcnLCAwKSkKKyAgICAgICAgbC5saXN0ZW4oNCkKKyAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgbC5nZXRzb2NrbmFtZSgpWzFdKQorICAgICAgICByZWFkZXJzID0gW10KKyAgICAgICAgcHJvY3MgPSBbXQorICAgICAgICBkaWMgPSB7fQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDQpOgorICAgICAgICAgICAgcCA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zZWxmLl9jaGlsZF90ZXN0X3dhaXRfc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KGFkZHIsIHNsb3cpKQorICAgICAgICAgICAgcC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHByb2NzLmFwcGVuZChwKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuam9pbikKKworICAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgIHIsIF8gPSBsLmFjY2VwdCgpCisgICAgICAgICAgICByZWFkZXJzLmFwcGVuZChyKQorICAgICAgICAgICAgZGljW3JdID0gW10KKyAgICAgICAgbC5jbG9zZSgpCisKKyAgICAgICAgd2hpbGUgcmVhZGVyczoKKyAgICAgICAgICAgIGZvciByIGluIHdhaXQocmVhZGVycyk6CisgICAgICAgICAgICAgICAgbXNnID0gci5yZWN2KDMyKQorICAgICAgICAgICAgICAgIGlmIG5vdCBtc2c6CisgICAgICAgICAgICAgICAgICAgIHJlYWRlcnMucmVtb3ZlKHIpCisgICAgICAgICAgICAgICAgICAgIHIuY2xvc2UoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRpY1tyXS5hcHBlbmQobXNnKQorCisgICAgICAgIGV4cGVjdGVkID0gJycuam9pbignJXNcbicgJSBpIGZvciBpIGluIHJhbmdlKDEwKSkuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGZvciB2IGluIGRpYy52YWx1ZXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLmpvaW4odiksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfd2FpdF9zbG93KHNlbGYpOgorICAgICAgICBzZWxmLnRlc3Rfd2FpdChUcnVlKQorCisgICAgZGVmIHRlc3Rfd2FpdF9zb2NrZXRfc2xvdyhzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0X3dhaXRfc29ja2V0KFRydWUpCisKKyAgICBkZWYgdGVzdF93YWl0X3RpbWVvdXQoc2VsZik6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKworICAgICAgICBleHBlY3RlZCA9IDUKKyAgICAgICAgYSwgYiA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKCkKKworICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2EsIGJdLCBleHBlY3RlZCkKKyAgICAgICAgZGVsdGEgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZGVsdGEsIGV4cGVjdGVkICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbHRhLCBleHBlY3RlZCAqIDAuNSkKKworICAgICAgICBiLnNlbmQoTm9uZSkKKworICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2EsIGJdLCAyMCkKKyAgICAgICAgZGVsdGEgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFthXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRlbHRhLCAwLjQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2lnbmFsX2FuZF9zbGVlcChjbHMsIHNlbSwgcGVyaW9kKToKKyAgICAgICAgc2VtLnJlbGVhc2UoKQorICAgICAgICB0aW1lLnNsZWVwKHBlcmlvZCkKKworICAgIGRlZiB0ZXN0X3dhaXRfaW50ZWdlcihzZWxmKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorCisgICAgICAgIGV4cGVjdGVkID0gMworICAgICAgICBzZW0gPSBtdWx0aXByb2Nlc3NpbmcuU2VtYXBob3JlKDApCisgICAgICAgIGEsIGIgPSBtdWx0aXByb2Nlc3NpbmcuUGlwZSgpCisgICAgICAgIHAgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5zaWduYWxfYW5kX3NsZWVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VtLCBleHBlY3RlZCkpCisKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwLnNlbnRpbmVsLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZW0uYWNxdWlyZSh0aW1lb3V0PTIwKSkKKworICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2EsIHAuc2VudGluZWwsIGJdLCBleHBlY3RlZCArIDIwKQorICAgICAgICBkZWx0YSA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgW3Auc2VudGluZWxdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZGVsdGEsIGV4cGVjdGVkICsgMikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbHRhLCBleHBlY3RlZCAtIDIpCisKKyAgICAgICAgYS5zZW5kKE5vbmUpCisKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthLCBwLnNlbnRpbmVsLCBiXSwgMjApCisgICAgICAgIGRlbHRhID0gdGltZS50aW1lKCkgLSBzdGFydAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbcC5zZW50aW5lbCwgYl0pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkZWx0YSwgMC40KQorCisgICAgICAgIGIuc2VuZChOb25lKQorCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYSwgcC5zZW50aW5lbCwgYl0sIDIwKQorICAgICAgICBkZWx0YSA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgW2EsIHAuc2VudGluZWwsIGJdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZGVsdGEsIDAuNCkKKworICAgICAgICBwLnRlcm1pbmF0ZSgpCisgICAgICAgIHAuam9pbigpCisKKyAgICBkZWYgdGVzdF9uZWdfdGltZW91dChzZWxmKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorICAgICAgICBhLCBiID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoKQorICAgICAgICB0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYV0sIHRpbWVvdXQ9LTEpCisgICAgICAgIHQgPSB0aW1lLnRpbWUoKSAtIHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydExlc3ModCwgMSkKKyAgICAgICAgYS5jbG9zZSgpCisgICAgICAgIGIuY2xvc2UoKQorCiAjCiAjIElzc3VlIDE0MTUxOiBUZXN0IGludmFsaWQgZmFtaWx5IG9uIGludmFsaWQgZW52aXJvbm1lbnQKICMKQEAgLTIzOTcsNiArMzI4MCwzOCBAQAogICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24uTGlzdGVuZXIoJy92YXIvdGVzdC5waXBlJykKIAogIworIyBJc3N1ZSAxMjA5ODogY2hlY2sgc3lzLmZsYWdzIG9mIGNoaWxkIG1hdGNoZXMgdGhhdCBmb3IgcGFyZW50CisjCisKK2NsYXNzIFRlc3RGbGFncyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJ1bl9pbl9ncmFuZGNoaWxkKGNscywgY29ubik6CisgICAgICAgIGNvbm4uc2VuZCh0dXBsZShzeXMuZmxhZ3MpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJ1bl9pbl9jaGlsZChjbHMpOgorICAgICAgICBpbXBvcnQganNvbgorICAgICAgICByLCB3ID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoZHVwbGV4PUZhbHNlKQorICAgICAgICBwID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PWNscy5ydW5faW5fZ3JhbmRjaGlsZCwgYXJncz0odywpKQorICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgZ3JhbmRjaGlsZF9mbGFncyA9IHIucmVjdigpCisgICAgICAgIHAuam9pbigpCisgICAgICAgIHIuY2xvc2UoKQorICAgICAgICB3LmNsb3NlKCkKKyAgICAgICAgZmxhZ3MgPSAodHVwbGUoc3lzLmZsYWdzKSwgZ3JhbmRjaGlsZF9mbGFncykKKyAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhmbGFncykpCisKKyAgICBkZWYgdGVzdF9mbGFncyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGpzb24sIHN1YnByb2Nlc3MKKyAgICAgICAgIyBzdGFydCBjaGlsZCBwcm9jZXNzIHVzaW5nIHVudXN1YWwgZmxhZ3MKKyAgICAgICAgcHJvZyA9ICgnZnJvbSB0ZXN0LnRlc3RfbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBUZXN0RmxhZ3M7ICcgKworICAgICAgICAgICAgICAgICdUZXN0RmxhZ3MucnVuX2luX2NoaWxkKCknKQorICAgICAgICBkYXRhID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoCisgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsICctRScsICctUycsICctTycsICctYycsIHByb2ddKQorICAgICAgICBjaGlsZF9mbGFncywgZ3JhbmRjaGlsZF9mbGFncyA9IGpzb24ubG9hZHMoZGF0YS5kZWNvZGUoJ2FzY2lpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hpbGRfZmxhZ3MsIGdyYW5kY2hpbGRfZmxhZ3MpCisKKyMKICMgVGVzdCBpbnRlcmFjdGlvbiB3aXRoIHNvY2tldCB0aW1lb3V0cyAtIHNlZSBJc3N1ZSAjNjA1NgogIwogCkBAIC0yNDUxLDggKzMzNjYsOCBAQAogIwogCiB0ZXN0Y2FzZXNfb3RoZXIgPSBbT3RoZXJUZXN0LCBUZXN0SW52YWxpZEhhbmRsZSwgVGVzdEluaXRpYWxpemVycywKLSAgICAgICAgICAgICAgICAgICBUZXN0U3RkaW5CYWRmaWxlZGVzY3JpcHRvciwgVGVzdEludmFsaWRGYW1pbHksCi0gICAgICAgICAgICAgICAgICAgVGVzdFRpbWVvdXRzLCBUZXN0Tm9Gb3JrQm9tYl0KKyAgICAgICAgICAgICAgICAgICBUZXN0U3RkaW5CYWRmaWxlZGVzY3JpcHRvciwgVGVzdFdhaXQsIFRlc3RJbnZhbGlkRmFtaWx5LAorICAgICAgICAgICAgICAgICAgIFRlc3RGbGFncywgVGVzdFRpbWVvdXRzLCBUZXN0Tm9Gb3JrQm9tYl0KIAogIwogIwpAQCAtMjQ4OSwxNCArMzQwNCwxOCBAQAogCiAgICAgbG9hZFRlc3RzRnJvbVRlc3RDYXNlID0gdW5pdHRlc3QuZGVmYXVsdFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbVRlc3RDYXNlCiAgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUobG9hZFRlc3RzRnJvbVRlc3RDYXNlKHRjKSBmb3IgdGMgaW4gdGVzdGNhc2VzKQotICAgIHJ1bihzdWl0ZSkKLQotICAgIFRocmVhZHNNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCi0gICAgUHJvY2Vzc2VzTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQotICAgIE1hbmFnZXJNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCi0gICAgTWFuYWdlck1peGluLm1hbmFnZXIuc2h1dGRvd24oKQotCi0gICAgZGVsIFByb2Nlc3Nlc01peGluLnBvb2wsIFRocmVhZHNNaXhpbi5wb29sLCBNYW5hZ2VyTWl4aW4ucG9vbAorICAgIHRyeToKKyAgICAgICAgcnVuKHN1aXRlKQorICAgIGZpbmFsbHk6CisgICAgICAgIFRocmVhZHNNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCisgICAgICAgIFByb2Nlc3Nlc01peGluLnBvb2wudGVybWluYXRlKCkKKyAgICAgICAgTWFuYWdlck1peGluLnBvb2wudGVybWluYXRlKCkKKyAgICAgICAgTWFuYWdlck1peGluLnBvb2wuam9pbigpCisgICAgICAgIE1hbmFnZXJNaXhpbi5tYW5hZ2VyLnNodXRkb3duKCkKKyAgICAgICAgTWFuYWdlck1peGluLm1hbmFnZXIuam9pbigpCisgICAgICAgIFRocmVhZHNNaXhpbi5wb29sLmpvaW4oKQorICAgICAgICBQcm9jZXNzZXNNaXhpbi5wb29sLmpvaW4oKQorICAgICAgICBkZWwgUHJvY2Vzc2VzTWl4aW4ucG9vbCwgVGhyZWFkc01peGluLnBvb2wsIE1hbmFnZXJNaXhpbi5wb29sCiAKIGRlZiBtYWluKCk6CiAgICAgdGVzdF9tYWluKHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKHZlcmJvc2l0eT0yKS5ydW4pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211dGFudHMucHkgYi9MaWIvdGVzdC90ZXN0X211dGFudHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0M2ZhNDcuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdXRhbnRzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkxICswLDAgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4KLWltcG9ydCByYW5kb20KLWltcG9ydCBvcwotCi0jIEZyb20gU0YgYnVnICM0MjIxMjE6ICBJbnNlY3VyaXRpZXMgaW4gZGljdCBjb21wYXJpc29uLgotCi0jIFNhZmV0eSBvZiBjb2RlIGRvaW5nIGNvbXBhcmlzb25zIGhhcyBiZWVuIGFuIGhpc3RvcmljYWwgUHl0aG9uIHdlYWsgc3BvdC4KLSMgVGhlIHByb2JsZW0gaXMgdGhhdCBjb21wYXJpc29uIG9mIHN0cnVjdHVyZXMgd3JpdHRlbiBpbiBDICpuYXR1cmFsbHkqCi0jIHdhbnRzIHRvIGhvbGQgb24gdG8gdGhpbmdzIGxpa2UgdGhlIHNpemUgb2YgdGhlIGNvbnRhaW5lciwgb3IgInRoZQotIyBiaWdnZXN0IiBjb250YWluZWUgc28gZmFyLCBhY3Jvc3MgYSB0cmF2ZXJzYWwgb2YgdGhlIGNvbnRhaW5lcjsgYnV0Ci0jIGNvZGUgdG8gZG8gY29udGFpbmVlIGNvbXBhcmlzb25zIGNhbiBjYWxsIGJhY2sgaW50byBQeXRob24gYW5kIG11dGF0ZQotIyB0aGUgY29udGFpbmVyIGluIGFyYml0cmFyeSB3YXlzIHdoaWxlIHRoZSBDIGxvb3AgaXMgaW4gbWlkc3RyZWFtLiAgSWYgdGhlCi0jIEMgY29kZSBpc24ndCBleHRyZW1lbHkgcGFyYW5vaWQgYWJvdXQgZGlnZ2luZyB0aGluZ3Mgb3V0IG9mIG1lbW9yeSBvbgotIyBlYWNoIHRyaXAsIGFuZCBhcnRpZmljaWFsbHkgYm9vc3RpbmcgcmVmY291bnRzIGZvciB0aGUgZHVyYXRpb24sIGFueXRoaW5nCi0jIGZyb20gaW5maW5pdGUgbG9vcHMgdG8gT1MgY3Jhc2hlcyBjYW4gcmVzdWx0ICh5ZXMsIEkgdXNlIFdpbmRvd3MgPHdpbms+KS4KLSMKLSMgVGhlIG90aGVyIHByb2JsZW0gaXMgdGhhdCBjb2RlIGRlc2lnbmVkIHRvIHByb3Zva2UgYSB3ZWFrbmVzcyBpcyB1c3VhbGx5Ci0jIHdoaXRlLWJveCBjb2RlLCBhbmQgc28gY2F0Y2hlcyBvbmx5IHRoZSBwYXJ0aWN1bGFyIHZ1bG5lcmFiaWxpdGllcyB0aGUKLSMgYXV0aG9yIGtuZXcgdG8gcHJvdGVjdCBhZ2FpbnN0LiAgRm9yIGV4YW1wbGUsIFB5dGhvbidzIGxpc3Quc29ydCgpIGNvZGUKLSMgd2VudCB0aHJ1IG1hbnkgaXRlcmF0aW9ucyBhcyBvbmUgIm5ldyIgdnVsbmVyYWJpbGl0eSBhZnRlciBhbm90aGVyIHdhcwotIyBkaXNjb3ZlcmVkLgotIwotIyBTbyB0aGUgZGljdCBjb21wYXJpc29uIHRlc3QgaGVyZSB1c2VzIGEgYmxhY2stYm94IGFwcHJvYWNoIGluc3RlYWQsCi0jIGdlbmVyYXRpbmcgZGljdHMgb2YgdmFyaW91cyBzaXplcyBhdCByYW5kb20sIGFuZCBwZXJmb3JtaW5nIHJhbmRvbQotIyBtdXRhdGlvbnMgb24gdGhlbSBhdCByYW5kb20gdGltZXMuICBUaGlzIHByb3ZlZCB2ZXJ5IGVmZmVjdGl2ZSwKLSMgdHJpZ2dlcmluZyBhdCBsZWFzdCBzaXggZGlzdGluY3QgZmFpbHVyZSBtb2RlcyB0aGUgZmlyc3QgMjAgdGltZXMgSQotIyByYW4gaXQuICBJbmRlZWQsIGF0IHRoZSBzdGFydCwgdGhlIGRyaXZlciBuZXZlciBnb3QgYmV5b25kIDYgaXRlcmF0aW9ucwotIyBiZWZvcmUgdGhlIHRlc3QgZGllZC4KLQotIyBUaGUgZGljdHMgYXJlIGdsb2JhbCB0byBtYWtlIGl0IGVhc3kgdG8gbXV0YXRlIHRoYW0gZnJvbSB3aXRoaW4gZnVuY3Rpb25zLgotZGljdDEgPSB7fQotZGljdDIgPSB7fQotCi0jIFRoZSBjdXJyZW50IHNldCBvZiBrZXlzIGluIGRpY3QxIGFuZCBkaWN0Mi4gIFRoZXNlIGFyZSBtYXRlcmlhbGl6ZWQgYXMKLSMgbGlzdHMgdG8gbWFrZSBpdCBlYXN5IHRvIHBpY2sgYSBkaWN0IGtleSBhdCByYW5kb20uCi1kaWN0MWtleXMgPSBbXQotZGljdDJrZXlzID0gW10KLQotIyBHbG9iYWwgZmxhZyB0ZWxsaW5nIG1heWJlX211dGF0ZSgpIHdoZXRoZXIgdG8gKmNvbnNpZGVyKiBtdXRhdGluZy4KLW11dGF0ZSA9IDAKLQotIyBJZiBnbG9iYWwgbXV0YXRlIGlzIHRydWUsIGNvbnNpZGVyIG11dGF0aW5nIGEgZGljdC4gIE1heSBvciBtYXkgbm90Ci0jIG11dGF0ZSBhIGRpY3QgZXZlbiBpZiBtdXRhdGUgaXMgdHJ1ZS4gIElmIGl0IGRvZXMgZGVjaWRlIHRvIG11dGF0ZSBhCi0jIGRpY3QsIGl0IHBpY2tzIG9uZSBvZiB7ZGljdDEsIGRpY3QyfSBhdCByYW5kb20sIGFuZCBkZWxldGVzIGEgcmFuZG9tCi0jIGVudHJ5IGZyb20gaXQ7IG9yLCBtb3JlIHJhcmVseSwgYWRkcyBhIHJhbmRvbSBlbGVtZW50LgotCi1kZWYgbWF5YmVfbXV0YXRlKCk6Ci0gICAgZ2xvYmFsIG11dGF0ZQotICAgIGlmIG5vdCBtdXRhdGU6Ci0gICAgICAgIHJldHVybgotICAgIGlmIHJhbmRvbS5yYW5kb20oKSA8IDAuNToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpZiByYW5kb20ucmFuZG9tKCkgPCAwLjU6Ci0gICAgICAgIHRhcmdldCwga2V5cyA9IGRpY3QxLCBkaWN0MWtleXMKLSAgICBlbHNlOgotICAgICAgICB0YXJnZXQsIGtleXMgPSBkaWN0MiwgZGljdDJrZXlzCi0KLSAgICBpZiByYW5kb20ucmFuZG9tKCkgPCAwLjI6Ci0gICAgICAgICMgSW5zZXJ0IGEgbmV3IGtleS4KLSAgICAgICAgbXV0YXRlID0gMCAgICMgZGlzYWJsZSBtdXRhdGlvbiB1bnRpbCBrZXkgaW5zZXJ0ZWQKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIG5ld2tleSA9IEhvcnJpZChyYW5kb20ucmFuZHJhbmdlKDEwMCkpCi0gICAgICAgICAgICBpZiBuZXdrZXkgbm90IGluIHRhcmdldDoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICB0YXJnZXRbbmV3a2V5XSA9IEhvcnJpZChyYW5kb20ucmFuZHJhbmdlKDEwMCkpCi0gICAgICAgIGtleXMuYXBwZW5kKG5ld2tleSkKLSAgICAgICAgbXV0YXRlID0gMQotCi0gICAgZWxpZiBrZXlzOgotICAgICAgICAjIERlbGV0ZSBhIGtleSBhdCByYW5kb20uCi0gICAgICAgIG11dGF0ZSA9IDAgICAjIGRpc2FibGUgbXV0YXRpb24gdW50aWwga2V5IGRlbGV0ZWQKLSAgICAgICAgaSA9IHJhbmRvbS5yYW5kcmFuZ2UobGVuKGtleXMpKQotICAgICAgICBrZXkgPSBrZXlzW2ldCi0gICAgICAgIGRlbCB0YXJnZXRba2V5XQotICAgICAgICBkZWwga2V5c1tpXQotICAgICAgICBtdXRhdGUgPSAxCi0KLSMgQSBob3JyaWQgY2xhc3MgdGhhdCB0cmlnZ2VycyByYW5kb20gbXV0YXRpb25zIG9mIGRpY3QxIGFuZCBkaWN0MiB3aGVuCi0jIGluc3RhbmNlcyBhcmUgY29tcGFyZWQuCi0KLWNsYXNzIEhvcnJpZDoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaSk6Ci0gICAgICAgICMgQ29tcGFyaXNvbiBvdXRjb21lcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgaS4KLSAgICAgICAgc2VsZi5pID0gaQotCi0gICAgICAgICMgQW4gYXJ0aWZpY2lhbCBoYXNoY29kZSBpcyBzZWxlY3RlZCBhdCByYW5kb20gc28gdGhhdCB3ZSBkb24ndAotICAgICAgICAjIGhhdmUgYW55IHN5c3RlbWF0aWMgcmVsYXRpb25zaGlwIGJldHdlZW4gY29tcGFyaXNvbiBvdXRjb21lcwotICAgICAgICAjIChiYXNlZCBvbiBzZWxmLmkgYW5kIG90aGVyLmkpIGFuZCByZWxhdGl2ZSBwb3NpdGlvbiB3aXRoaW4gdGhlCi0gICAgICAgICMgaGFzaCB2ZWN0b3IgKGJhc2VkIG9uIGhhc2hjb2RlKS4KLSAgICAgICAgIyBYWFggVGhpcyBpcyBubyBsb25nZXIgZWZmZWN0aXZlLgotICAgICAgICAjI3NlbGYuaGFzaGNvZGUgPSByYW5kb20ucmFuZHJhbmdlKDEwMDAwMDAwMDApCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiA0MgotICAgICAgICByZXR1cm4gc2VsZi5oYXNoY29kZQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIG1heWJlX211dGF0ZSgpICAgIyBUaGUgcG9pbnQgb2YgdGhlIHRlc3QuCi0gICAgICAgIHJldHVybiBzZWxmLmkgPT0gb3RoZXIuaQotCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiSSBkaWRuJ3QgZXhwZWN0IHNvbWUga2luZCBvZiBTcGFuaXNoIGlucXVpc2l0aW9uISIpCi0KLSAgICBfX2x0X18gPSBfX2xlX18gPSBfX2d0X18gPSBfX2dlX18gPSBfX25lX18KLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJIb3JyaWQoJWQpIiAlIHNlbGYuaQotCi0jIEZpbGwgZGljdCBkIHdpdGggbnVtZW50cmllcyAoSG9ycmlkKGkpLCBIb3JyaWQoaikpIGtleS12YWx1ZSBwYWlycywKLSMgd2hlcmUgaSBhbmQgaiBhcmUgc2VsZWN0ZWQgYXQgcmFuZG9tIGZyb20gdGhlIGNhbmRpZGF0ZXMgbGlzdC4KLSMgUmV0dXJuIGQua2V5cygpIGFmdGVyIGZpbGxpbmcuCi0KLWRlZiBmaWxsX2RpY3QoZCwgY2FuZGlkYXRlcywgbnVtZW50cmllcyk6Ci0gICAgZC5jbGVhcigpCi0gICAgZm9yIGkgaW4gcmFuZ2UobnVtZW50cmllcyk6Ci0gICAgICAgIGRbSG9ycmlkKHJhbmRvbS5jaG9pY2UoY2FuZGlkYXRlcykpXSA9IFwKLSAgICAgICAgICAgIEhvcnJpZChyYW5kb20uY2hvaWNlKGNhbmRpZGF0ZXMpKQotICAgIHJldHVybiBsaXN0KGQua2V5cygpKQotCi0jIFRlc3Qgb25lIHBhaXIgb2YgcmFuZG9tbHkgZ2VuZXJhdGVkIGRpY3RzLCBlYWNoIHdpdGggbiBlbnRyaWVzLgotIyBOb3RlIHRoYXQgZGljdCBjb21wYXJpc29uIGlzIHRyaXZpYWwgaWYgdGhleSBkb24ndCBoYXZlIHRoZSBzYW1lIG51bWJlcgotIyBvZiBlbnRpcmVzICh0aGVuIHRoZSAic2hvcnRlciIgZGljdCBpcyBpbnN0YW50bHkgY29uc2lkZXJlZCB0byBiZSB0aGUKLSMgc21hbGxlciBvbmUsIHdpdGhvdXQgZXZlbiBsb29raW5nIGF0IHRoZSBlbnRyaWVzKS4KLQotZGVmIHRlc3Rfb25lKG4pOgotICAgIGdsb2JhbCBtdXRhdGUsIGRpY3QxLCBkaWN0MiwgZGljdDFrZXlzLCBkaWN0MmtleXMKLQotICAgICMgRmlsbCB0aGUgZGljdHMgd2l0aG91dCBtdXRhdGluZyB0aGVtLgotICAgIG11dGF0ZSA9IDAKLSAgICBkaWN0MWtleXMgPSBmaWxsX2RpY3QoZGljdDEsIHJhbmdlKG4pLCBuKQotICAgIGRpY3Qya2V5cyA9IGZpbGxfZGljdChkaWN0MiwgcmFuZ2UobiksIG4pCi0KLSAgICAjIEVuYWJsZSBtdXRhdGlvbiwgdGhlbiBjb21wYXJlIHRoZSBkaWN0cyBzbyBsb25nIGFzIHRoZXkgaGF2ZSB0aGUKLSAgICAjIHNhbWUgc2l6ZS4KLSAgICBtdXRhdGUgPSAxCi0gICAgaWYgdmVyYm9zZToKLSAgICAgICAgcHJpbnQoInRyeWluZyB3LyBsZW5ndGhzIiwgbGVuKGRpY3QxKSwgbGVuKGRpY3QyKSwgZW5kPScgJykKLSAgICB3aGlsZSBkaWN0MSBhbmQgbGVuKGRpY3QxKSA9PSBsZW4oZGljdDIpOgotICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIi4iLCBlbmQ9JyAnKQotICAgICAgICBjID0gZGljdDEgPT0gZGljdDIKLSAgICBpZiB2ZXJib3NlOgotICAgICAgICBwcmludCgpCi0KLSMgUnVuIHRlc3Rfb25lIG4gdGltZXMuICBBdCB0aGUgc3RhcnQgKGJlZm9yZSB0aGUgYnVncyB3ZXJlIGZpeGVkKSwgMjAKLSMgY29uc2VjdXRpdmUgcnVucyBvZiB0aGlzIHRlc3QgZWFjaCBibGV3IHVwIG9uIG9yIGJlZm9yZSB0aGUgc2l4dGggdGltZQotIyB0ZXN0X29uZSB3YXMgcnVuLiAgU28gbiBkb2Vzbid0IGhhdmUgdG8gYmUgbGFyZ2UgdG8gZ2V0IGFuIGludGVyZXN0aW5nCi0jIHRlc3QuCi0jIE9UT0gsIGNhbGxpbmcgd2l0aCBsYXJnZSBuIGlzIGFsc28gaW50ZXJlc3RpbmcsIHRvIGVuc3VyZSB0aGF0IHRoZSBmaXhlZAotIyBjb2RlIGRvZXNuJ3QgaG9sZCBvbiB0byByZWZjb3VudHMgKnRvbyogbG9uZyAoaW4gd2hpY2ggY2FzZSBtZW1vcnkgd291bGQKLSMgbGVhaykuCi0KLWRlZiB0ZXN0KG4pOgotICAgIGZvciBpIGluIHJhbmdlKG4pOgotICAgICAgICB0ZXN0X29uZShyYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkpCi0KLSMgU2VlIGxhc3QgY29tbWVudCBibG9jayBmb3IgY2x1ZXMgYWJvdXQgZ29vZCB2YWx1ZXMgZm9yIG4uCi10ZXN0KDEwMCkKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQW5vdGhlciBzZWdmYXVsdCBidWcsIGRpc3RpbGxlZCBieSBNaWNoYWVsIEh1ZHNvbiBmcm9tIGEgYy5sLnB5IHBvc3QuCi0KLWNsYXNzIENoaWxkOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAgICAgICBzZWxmLl9fZGljdF9fWydwYXJlbnQnXSA9IHBhcmVudAotICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKLSAgICAgICAgc2VsZi5wYXJlbnQuYSA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuYiA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuYyA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuZCA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuZSA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuZiA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuZyA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuaCA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuaSA9IDEKLSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5wYXJlbnQsIGF0dHIpCi0KLWNsYXNzIFBhcmVudDoKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuYSA9IENoaWxkKHNlbGYpCi0KLSMgSGFyZCB0byBzYXkgd2hhdCB0aGlzIHdpbGwgcHJpbnQhICBNYXkgdmFyeSBmcm9tIHRpbWUgdG8gdGltZS4gIEJ1dAotIyB3ZSdyZSBzcGVjaWZpY2FsbHkgdHJ5aW5nIHRvIHRlc3QgdGhlIHRwX3ByaW50IHNsb3QgaGVyZSwgYW5kIHRoaXMgaXMKLSMgdGhlIGNsZWFyZXN0IHdheSB0byBkbyBpdC4gIFdlIHByaW50IHRoZSByZXN1bHQgdG8gYSB0ZW1wIGZpbGUgc28gdGhhdAotIyB0aGUgZXhwZWN0ZWQtb3V0cHV0IGZpbGUgZG9lc24ndCBuZWVkIHRvIGNoYW5nZS4KLQotZiA9IG9wZW4oVEVTVEZOLCAidyIpCi1wcmludChQYXJlbnQoKS5fX2RpY3RfXywgZmlsZT1mKQotZi5jbG9zZSgpCi1vcy51bmxpbmsoVEVTVEZOKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBBbmQgYW5vdGhlciBjb3JlLWR1bXBlciBmcm9tIE1pY2hhZWwgSHVkc29uLgotCi1kaWN0ID0ge30KLQotIyBGb3JjZSBkaWN0IHRvIG1hbGxvYyBpdHMgdGFibGUuCi1mb3IgaSBpbiByYW5nZSgxLCAxMCk6Ci0gICAgZGljdFtpXSA9IGkKLQotZiA9IG9wZW4oVEVTVEZOLCAidyIpCi0KLWNsYXNzIE1hY2hpYXZlbGxpOgotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgZGljdC5jbGVhcigpCi0KLSAgICAgICAgIyBNaWNoYWVsIHNlejogICJkb2Vzbid0IGNyYXNoIHdpdGhvdXQgdGhpcy4gIGRvbid0IGtub3cgd2h5LiIKLSAgICAgICAgIyBUaW0gc2V6OiAgImx1Y2sgb2YgdGhlIGRyYXc7IGNyYXNoZXMgd2l0aCBvciB3aXRob3V0IGZvciBtZS4iCi0gICAgICAgIHByaW50KGZpbGU9ZikKLQotICAgICAgICByZXR1cm4gcmVwcigibWFjaGlhdmVsbGkiKQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gMAotCi1kaWN0W01hY2hpYXZlbGxpKCldID0gTWFjaGlhdmVsbGkoKQotCi1wcmludChzdHIoZGljdCksIGZpbGU9ZikKLWYuY2xvc2UoKQotb3MudW5saW5rKFRFU1RGTikKLWRlbCBmLCBkaWN0Ci0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQW5kIGFub3RoZXIgY29yZS1kdW1wZXIgZnJvbSBNaWNoYWVsIEh1ZHNvbi4KLQotZGljdCA9IHt9Ci0KLSMgbGV0J3MgZm9yY2UgZGljdCB0byBtYWxsb2MgaXRzIHRhYmxlCi1mb3IgaSBpbiByYW5nZSgxLCAxMCk6Ci0gICAgZGljdFtpXSA9IGkKLQotY2xhc3MgTWFjaGlhdmVsbGkyOgotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBkaWN0LmNsZWFyKCkKLSAgICAgICAgcmV0dXJuIDEKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDAKLQotZGljdFtNYWNoaWF2ZWxsaTIoKV0gPSBNYWNoaWF2ZWxsaTIoKQotCi10cnk6Ci0gICAgZGljdFtNYWNoaWF2ZWxsaTIoKV0KLWV4Y2VwdCBLZXlFcnJvcjoKLSAgICBwYXNzCi0KLWRlbCBkaWN0Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEFuZCBhbm90aGVyIGNvcmUtZHVtcGVyIGZyb20gTWljaGFlbCBIdWRzb24uCi0KLWRpY3QgPSB7fQotCi0jIGxldCdzIGZvcmNlIGRpY3QgdG8gbWFsbG9jIGl0cyB0YWJsZQotZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgotICAgIGRpY3RbaV0gPSBpCi0KLWNsYXNzIE1hY2hpYXZlbGxpMzoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaWQpOgotICAgICAgICBzZWxmLmlkID0gaWQKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBzZWxmLmlkID09IG90aGVyLmlkOgotICAgICAgICAgICAgZGljdC5jbGVhcigpCi0gICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIDAKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICIlcyglcykiJShzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5pZCkKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDAKLQotZGljdFtNYWNoaWF2ZWxsaTMoMSldID0gTWFjaGlhdmVsbGkzKDApCi1kaWN0W01hY2hpYXZlbGxpMygyKV0gPSBNYWNoaWF2ZWxsaTMoMCkKLQotZiA9IG9wZW4oVEVTVEZOLCAidyIpCi10cnk6Ci0gICAgdHJ5OgotICAgICAgICBwcmludChkaWN0W01hY2hpYXZlbGxpMygyKV0sIGZpbGU9ZikKLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLWZpbmFsbHk6Ci0gICAgZi5jbG9zZSgpCi0gICAgb3MudW5saW5rKFRFU1RGTikKLQotZGVsIGRpY3QKLWRlbCBkaWN0MSwgZGljdDIsIGRpY3Qxa2V5cywgZGljdDJrZXlzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25hbWVzcGFjZV9wa2dzLnB5IGIvTGliL3Rlc3QvdGVzdF9uYW1lc3BhY2VfcGtncy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDY3YjEyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9uYW1lc3BhY2VfcGtncy5weQpAQCAtMCwwICsxLDI5NCBAQAoraW1wb3J0IHN5cworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IG9zCisKK2Zyb20gdGVzdC50ZXN0X2ltcG9ydGxpYiBpbXBvcnQgdXRpbAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorCisjIG5lZWRlZCB0ZXN0czoKKyMKKyMgbmVlZCB0byB0ZXN0IHdoZW4gbmVzdGVkLCBzbyB0aGF0IHRoZSB0b3AtbGV2ZWwgcGF0aCBpc24ndCBzeXMucGF0aAorIyBuZWVkIHRvIHRlc3QgZHluYW1pYyBwYXRoIGRldGVjdGlvbiwgYm90aCBhdCB0b3AtbGV2ZWwgYW5kIG5lc3RlZAorIyB3aXRoIGR5bmFtaWMgcGF0aCwgY2hlY2sgd2hlbiBhIGxvYWRlciBpcyByZXR1cm5lZCBvbiBwYXRoIHJlbG9hZCAodGhhdCBpcywKKyMgIHRyeWluZyB0byBzd2l0Y2ggZnJvbSBhIG5hbWVzcGFjZSBwYWNrYWdlIHRvIGEgcmVndWxhciBwYWNrYWdlKQorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgc3lzX21vZHVsZXNfY29udGV4dCgpOgorICAgICIiIgorICAgIE1ha2Ugc3VyZSBzeXMubW9kdWxlcyBpcyB0aGUgc2FtZSBvYmplY3QgYW5kIGhhcyB0aGUgc2FtZSBjb250ZW50CisgICAgd2hlbiBleGl0aW5nIHRoZSBjb250ZXh0IGFzIHdoZW4gZW50ZXJpbmcuCisKKyAgICBTaW1pbGFyIHRvIGltcG9ydGxpYi50ZXN0LnV0aWwudW5jYWNoZSwgYnV0IGRvZXNuJ3QgcmVxdWlyZSBleHBsaWNpdAorICAgIG5hbWVzLgorICAgICIiIgorICAgIHN5c19tb2R1bGVzX3NhdmVkID0gc3lzLm1vZHVsZXMKKyAgICBzeXNfbW9kdWxlc19jb3B5ID0gc3lzLm1vZHVsZXMuY29weSgpCisgICAgdHJ5OgorICAgICAgICB5aWVsZAorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5tb2R1bGVzID0gc3lzX21vZHVsZXNfc2F2ZWQKKyAgICAgICAgc3lzLm1vZHVsZXMuY2xlYXIoKQorICAgICAgICBzeXMubW9kdWxlcy51cGRhdGUoc3lzX21vZHVsZXNfY29weSkKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIG5hbWVzcGFjZV90cmVlX2NvbnRleHQoKiprd2FyZ3MpOgorICAgICIiIgorICAgIFNhdmUgaW1wb3J0IHN0YXRlIGFuZCBzeXMubW9kdWxlcyBjYWNoZSBhbmQgcmVzdG9yZSBpdCBvbiBleGl0LgorICAgIFR5cGljYWwgdXNhZ2U6CisKKyAgICA+Pj4gd2l0aCBuYW1lc3BhY2VfdHJlZV9jb250ZXh0KHBhdGg9WycvdG1wL3h4eXkvcG9ydGlvbjEnLAorICAgIC4uLiAgICAgICAgICcvdG1wL3h4eXkvcG9ydGlvbjInXSk6CisgICAgLi4uICAgICBwYXNzCisgICAgIiIiCisgICAgIyB1c2UgZGVmYXVsdCBtZXRhX3BhdGggYW5kIHBhdGhfaG9va3MgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2UKKyAgICBrd2FyZ3Muc2V0ZGVmYXVsdCgnbWV0YV9wYXRoJywgc3lzLm1ldGFfcGF0aCkKKyAgICBrd2FyZ3Muc2V0ZGVmYXVsdCgncGF0aF9ob29rcycsIHN5cy5wYXRoX2hvb2tzKQorICAgIGltcG9ydF9jb250ZXh0ID0gdXRpbC5pbXBvcnRfc3RhdGUoKiprd2FyZ3MpCisgICAgd2l0aCBpbXBvcnRfY29udGV4dCwgc3lzX21vZHVsZXNfY29udGV4dCgpOgorICAgICAgICB5aWVsZAorCitjbGFzcyBOYW1lc3BhY2VQYWNrYWdlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgU3ViY2xhc3NlcyBzaG91bGQgZGVmaW5lIHNlbGYucm9vdCBhbmQgc2VsZi5wYXRocyAodW5kZXIgdGhhdCByb290KQorICAgIHRvIGJlIGFkZGVkIHRvIHN5cy5wYXRoLgorICAgICIiIgorICAgIHJvb3QgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ25hbWVzcGFjZV9wa2dzJykKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5yZXNvbHZlZF9wYXRocyA9IFsKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJvb3QsIHBhdGgpIGZvciBwYXRoIGluIHNlbGYucGF0aHMKKyAgICAgICAgXQorICAgICAgICBzZWxmLmN0eCA9IG5hbWVzcGFjZV90cmVlX2NvbnRleHQocGF0aD1zZWxmLnJlc29sdmVkX3BhdGhzKQorICAgICAgICBzZWxmLmN0eC5fX2VudGVyX18oKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIFRPRE86IHdpbGwgd2UgZXZlciB3YW50IHRvIHBhc3MgZXhjX2luZm8gdG8gX19leGl0X18/CisgICAgICAgIHNlbGYuY3R4Ll9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCisKK2NsYXNzIFNpbmdsZU5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMSddCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcGFja2FnZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKworICAgIGRlZiB0ZXN0X2NhbnRfaW1wb3J0X290aGVyKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcihzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZvbyksICI8bW9kdWxlICdmb28nIChuYW1lc3BhY2UpPiIpCisKKworY2xhc3MgRHluYW1pY1BhdGhlTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KKworICAgIGRlZiB0ZXN0X2R5bmFtaWNfcGF0aChzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgb25seSAnZm9vLm9uZScgY2FuIGJlIGltcG9ydGVkCisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworCisgICAgICAgICMgTm93IG1vZGlmeSBzeXMucGF0aAorICAgICAgICBzeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucm9vdCwgJ3BvcnRpb24yJykpCisKKyAgICAgICAgIyBBbmQgbWFrZSBzdXJlIGZvby50d28gaXMgbm93IGltcG9ydGFibGUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdwb3J0aW9uMiBmb28gdHdvJykKKworCitjbGFzcyBDb21iaW5lZE5hbWVzcGFjZVBhY2thZ2VzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnYm90aF9wb3J0aW9ucyddCisKKyAgICBkZWYgdGVzdF9pbXBvcnRzKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gdHdvJykKKworCitjbGFzcyBTZXBhcmF0ZWROYW1lc3BhY2VQYWNrYWdlcyhOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3BvcnRpb24xJywgJ3BvcnRpb24yJ10KKworICAgIGRlZiB0ZXN0X2ltcG9ydHMoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAncG9ydGlvbjIgZm9vIHR3bycpCisKKworY2xhc3MgU2VwYXJhdGVkT3ZlcmxhcHBpbmdOYW1lc3BhY2VQYWNrYWdlcyhOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3BvcnRpb24xJywgJ2JvdGhfcG9ydGlvbnMnXQorCisgICAgZGVmIHRlc3RfZmlyc3RfcGF0aF93aW5zKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycpCisKKyAgICBkZWYgdGVzdF9maXJzdF9wYXRoX3dpbnNfYWdhaW4oc2VsZik6CisgICAgICAgIHN5cy5wYXRoLnJldmVyc2UoKQorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gdHdvJykKKworICAgIGRlZiB0ZXN0X2ZpcnN0X3BhdGhfd2luc19pbXBvcnRpbmdfc2Vjb25kX2ZpcnN0KHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycpCisKKworY2xhc3MgU2luZ2xlWmlwTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3RvcF9sZXZlbF9wb3J0aW9uMS56aXAnXQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICBkZWYgdGVzdF9jYW50X2ltcG9ydF9vdGhlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworCisKK2NsYXNzIFNlcGFyYXRlZFppcE5hbWVzcGFjZVBhY2thZ2VzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsndG9wX2xldmVsX3BvcnRpb24xLnppcCcsICdwb3J0aW9uMiddCisKKyAgICBkZWYgdGVzdF9pbXBvcnRzKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorICAgICAgICBzZWxmLmFzc2VydEluKCd0b3BfbGV2ZWxfcG9ydGlvbjEuemlwJywgZm9vLm9uZS5fX2ZpbGVfXykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignLnppcCcsIGZvby50d28uX19maWxlX18pCisKKworY2xhc3MgU2luZ2xlTmVzdGVkWmlwTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ25lc3RlZF9wb3J0aW9uMS56aXAvbmVzdGVkX3BvcnRpb24xJ10KKworICAgIGRlZiB0ZXN0X3NpbXBsZV9wYWNrYWdlKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorCisgICAgZGVmIHRlc3RfY2FudF9pbXBvcnRfb3RoZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworCitjbGFzcyBTZXBhcmF0ZWROZXN0ZWRaaXBOYW1lc3BhY2VQYWNrYWdlcyhOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ25lc3RlZF9wb3J0aW9uMS56aXAvbmVzdGVkX3BvcnRpb24xJywgJ3BvcnRpb24yJ10KKworICAgIGRlZiB0ZXN0X2ltcG9ydHMoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAncG9ydGlvbjIgZm9vIHR3bycpCisgICAgICAgIGZuID0gb3MucGF0aC5qb2luKCduZXN0ZWRfcG9ydGlvbjEuemlwJywgJ25lc3RlZF9wb3J0aW9uMScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZm4sIGZvby5vbmUuX19maWxlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJy56aXAnLCBmb28udHdvLl9fZmlsZV9fKQorCisKK2NsYXNzIExlZ2FjeVN1cHBvcnQoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydub3RfYV9uYW1lc3BhY2VfcGtnJywgJ3BvcnRpb24xJywgJ3BvcnRpb24yJywgJ2JvdGhfcG9ydGlvbnMnXQorCisgICAgZGVmIHRlc3Rfbm9uX25hbWVzcGFjZV9wYWNrYWdlX3Rha2VzX3ByZWNlZGVuY2Uoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRJbignX19pbml0X18nLCBmb28uX19maWxlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ25hbWVzcGFjZScsIHN0cihmb28uX19sb2FkZXJfXykubG93ZXIoKSkKKworCitjbGFzcyBEeW5hbWljUGF0aENhbGN1bGF0aW9uKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncHJvamVjdDEnLCAncHJvamVjdDInXQorCisgICAgZGVmIHRlc3RfcHJvamVjdDNfZmFpbHMoc2VsZik6CisgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDIpCisgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQudHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQuY2hpbGQub25lLmF0dHIsICdwYXJlbnQgY2hpbGQgb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQuY2hpbGQudHdvLmF0dHIsICdwYXJlbnQgY2hpbGQgdHdvJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQudGhyZWUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAyKQorCisgICAgZGVmIHRlc3RfcHJvamVjdDNfc3VjY2VlZHMoc2VsZik6CisgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDIpCisgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQudHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQuY2hpbGQub25lLmF0dHIsICdwYXJlbnQgY2hpbGQgb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQuY2hpbGQudHdvLmF0dHIsICdwYXJlbnQgY2hpbGQgdHdvJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQudGhyZWUKKworICAgICAgICAjIG5vdyBhZGQgcHJvamVjdDMKKyAgICAgICAgc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnJvb3QsICdwcm9qZWN0MycpKQorICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLnRocmVlCisKKyAgICAgICAgIyB0aGUgcGF0aHMgZHluYW1pY2FsbHkgZ2V0IGxvbmdlciwgdG8gaW5jbHVkZSB0aGUgbmV3IGRpcmVjdG9yaWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQuY2hpbGQudGhyZWUuYXR0ciwgJ3BhcmVudCBjaGlsZCB0aHJlZScpCisKKworY2xhc3MgWmlwV2l0aE1pc3NpbmdEaXJlY3RvcnkoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydtaXNzaW5nX2RpcmVjdG9yeS56aXAnXQorCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X21pc3NpbmdfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICAjIFRoaXMgd2lsbCBmYWlsIGJlY2F1c2UgbWlzc2luZ19kaXJlY3RvcnkuemlwIGNvbnRhaW5zOgorICAgICAgICAjICAgTGVuZ3RoICAgICAgRGF0ZSAgICBUaW1lICAgIE5hbWUKKyAgICAgICAgIyAtLS0tLS0tLS0gIC0tLS0tLS0tLS0gLS0tLS0gICAtLS0tCisgICAgICAgICMgICAgICAgIDI5ICAyMDEyLTA1LTAzIDE4OjEzICAgZm9vL29uZS5weQorICAgICAgICAjICAgICAgICAgMCAgMjAxMi0wNS0wMyAyMDo1NyAgIGJhci8KKyAgICAgICAgIyAgICAgICAgMzggIDIwMTItMDUtMDMgMjA6NTcgICBiYXIvdHdvLnB5CisgICAgICAgICMgLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLQorICAgICAgICAjICAgICAgICA2NyAgICAgICAgICAgICAgICAgICAgIDMgZmlsZXMKKworICAgICAgICAjIEJlY2F1c2UgdGhlcmUgaXMgbm8gJ2Zvby8nLCB0aGUgemlwaW1wb3J0ZXIgY3VycmVudGx5IGRvZXNuJ3QKKyAgICAgICAgIyAga25vdyB0aGF0IGZvbyBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlCisKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKworICAgIGRlZiB0ZXN0X3ByZXNlbnRfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICAjIFRoaXMgc3VjY2VlZHMgYmVjYXVzZSB0aGVyZSBpcyBhICJiYXIvIiBpbiB0aGUgemlwIGZpbGUKKyAgICAgICAgaW1wb3J0IGJhci50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYXIudHdvLmF0dHIsICdtaXNzaW5nX2RpcmVjdG9yeSBmb28gdHdvJykKKworCitjbGFzcyBNb2R1bGVBbmROYW1lc3BhY2VQYWNrYWdlSW5TYW1lRGlyKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZSddCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfYmVmb3JlX25hbWVzcGFjZV9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBmaW5kIHRoZSBtb2R1bGUgaW4gcHJlZmVyZW5jZSB0byB0aGUKKyAgICAgICAgIyAgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgIGltcG9ydCBhX3Rlc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhX3Rlc3QuYXR0ciwgJ2luIG1vZHVsZScpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdCgqTmFtZXNwYWNlUGFja2FnZVRlc3QuX19zdWJjbGFzc2VzX18oKSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKaW5kZXggNzMzNWIyMy4uMTlmYjEwYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBpbworaW1wb3J0IHNvY2tldAogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdApAQCAtMjU3LDYgKzI1OCwyNiBAQAogICAgICAgICAgICAgIyB2YWx1ZQogICAgICAgICAgICAgc2V0YXR0cihjbHMsIG5hbWUsIHdyYXBfbWV0aChtZXRoKSkKIAorICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBkZWYgaXNfY29ubmVjdGVkKCk6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZXJ2ZXIsICdmaWxlJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VydmVyLmhlbHAoKQorICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQuZXJyb3IsIEVPRkVycm9yKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgd2l0aCBzZWxmLk5OVFBfQ0xBU1Moc2VsZi5OTlRQX0hPU1QsIHRpbWVvdXQ9VElNRU9VVCwgdXNlbmV0cmM9RmFsc2UpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19jb25uZWN0ZWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuaGVscCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2Nvbm5lY3RlZCgpKQorCisgICAgICAgIHdpdGggc2VsZi5OTlRQX0NMQVNTKHNlbGYuTk5UUF9IT1NULCB0aW1lb3V0PVRJTUVPVVQsIHVzZW5ldHJjPUZhbHNlKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICBzZXJ2ZXIucXVpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNfY29ubmVjdGVkKCkpCisKKwogTmV0d29ya2VkTk5UUFRlc3RzTWl4aW4ud3JhcF9tZXRob2RzKCkKIAogCkBAIC04OTQsNyArOTE1LDcgQEAKIAogICAgIGRlZiBfY2hlY2tfYXJ0aWNsZV9ib2R5KHNlbGYsIGxpbmVzKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzWy0xXS5kZWNvZGUoJ3V0ZjgnKSwgIi0tIFNpZ25lZCBieSBBbmRyw6kuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lc1stMV0uZGVjb2RlKCd1dGYtOCcpLCAiLS0gU2lnbmVkIGJ5IEFuZHLDqS4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzWy0yXSwgYiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzWy0zXSwgYiIuSGVyZSBpcyBhIGRvdC1zdGFydGluZyBsaW5lLiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXNbLTRdLCBiIlRoaXMgaXMganVzdCBhIHRlc3QgYXJ0aWNsZS4iKQpAQCAtMTEzMywxMiArMTE1NCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AsIHN1Y2Nlc3NfcmVzcCkKICAgICAgICAgIyBXaXRoIGFuIGl0ZXJhYmxlIG9mIHRlcm1pbmF0ZWQgbGluZXMKICAgICAgICAgZGVmIGl0ZXJsaW5lcyhiKToKLSAgICAgICAgICAgIHJldHVybiBpdGVyKGIuc3BsaXRsaW5lcyhUcnVlKSkKKyAgICAgICAgICAgIHJldHVybiBpdGVyKGIuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKICAgICAgICAgcmVzcCA9IHNlbGYuX2NoZWNrX3Bvc3RfaWhhdmVfc3ViKGZ1bmMsICphcmdzLCBmaWxlX2ZhY3Rvcnk9aXRlcmxpbmVzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AsIHN1Y2Nlc3NfcmVzcCkKICAgICAgICAgIyBXaXRoIGFuIGl0ZXJhYmxlIG9mIG5vbi10ZXJtaW5hdGVkIGxpbmVzCiAgICAgICAgIGRlZiBpdGVybGluZXMoYik6Ci0gICAgICAgICAgICByZXR1cm4gaXRlcihiLnNwbGl0bGluZXMoRmFsc2UpKQorICAgICAgICAgICAgcmV0dXJuIGl0ZXIoYi5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKSkKICAgICAgICAgcmVzcCA9IHNlbGYuX2NoZWNrX3Bvc3RfaWhhdmVfc3ViKGZ1bmMsICphcmdzLCBmaWxlX2ZhY3Rvcnk9aXRlcmxpbmVzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AsIHN1Y2Nlc3NfcmVzcCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQppbmRleCA2NDY0OTUwLi4yYzlkYWI5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQpAQCAtMSwxMCArMSwxMSBAQAogaW1wb3J0IG50cGF0aAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRlc3RGYWlsZWQKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgdGVzdF9nZW5lcmljcGF0aAogZnJvbSB0ZW1wZmlsZSBpbXBvcnQgVGVtcG9yYXJ5RmlsZQotaW1wb3J0IHVuaXR0ZXN0CiAKIAogZGVmIHRlc3Rlcihmbiwgd2FudFJlc3VsdCk6CkBAIC0yMSw3ICsyMiw5IEBACiAgICAgZm4gPSBmbi5yZXBsYWNlKCdbIicsICdbYiInKQogICAgIGZuID0gZm4ucmVwbGFjZSgiLCAnIiwgIiwgYiciKQogICAgIGZuID0gZm4ucmVwbGFjZSgnLCAiJywgJywgYiInKQotICAgIGdvdFJlc3VsdCA9IGV2YWwoZm4pCisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgZ290UmVzdWx0ID0gZXZhbChmbikKICAgICBpZiBpc2luc3RhbmNlKHdhbnRSZXN1bHQsIHN0cik6CiAgICAgICAgIHdhbnRSZXN1bHQgPSB3YW50UmVzdWx0LmVuY29kZSgnYXNjaWknKQogICAgIGVsaWYgaXNpbnN0YW5jZSh3YW50UmVzdWx0LCB0dXBsZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkgYi9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkKaW5kZXggYmVmM2Q0Yy4uMzQyM2Q0ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnVtZXJpY190b3dlci5weQpAQCAtMTUwLDcgKzE1MCw3IEBACiAgICAgICAgICMgaW50LCBmbG9hdCwgRnJhY3Rpb24sIERlY2ltYWwKICAgICAgICAgdGVzdF92YWx1ZXMgPSBbCiAgICAgICAgICAgICBmbG9hdCgnLWluZicpLAotICAgICAgICAgICAgRCgnLTFlOTk5OTk5OTk5JyksCisgICAgICAgICAgICBEKCctMWU0MjUwMDAwMDAnKSwKICAgICAgICAgICAgIC0xZTMwOCwKICAgICAgICAgICAgIEYoLTIyLCA3KSwKICAgICAgICAgICAgIC0zLjE0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKaW5kZXggN2I5NTYxMi4uNzhkZTI3OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CkBAIC0zMTgsNiArMzE4LDIyIEBACiAgICAgICAgICAgICBbIi1iIl0sIHsnYWN0aW9uJzogJ3N0b3JlJywKICAgICAgICAgICAgICAgICAgICAgICdjYWxsYmFja19rd2FyZ3MnOiAnZm9vJ30pCiAKKyAgICBkZWYgdGVzdF9ub19zaW5nbGVfZGFzaChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRPcHRpb25FcnJvcigKKyAgICAgICAgICAgICJpbnZhbGlkIGxvbmcgb3B0aW9uIHN0cmluZyAnLWRlYnVnJzogIgorICAgICAgICAgICAgIm11c3Qgc3RhcnQgd2l0aCAtLSwgZm9sbG93ZWQgYnkgbm9uLWRhc2giLAorICAgICAgICAgICAgWyItZGVidWciXSkKKworICAgICAgICBzZWxmLmFzc2VydE9wdGlvbkVycm9yKAorICAgICAgICAgICAgIm9wdGlvbiAtZDogaW52YWxpZCBsb25nIG9wdGlvbiBzdHJpbmcgJy1kZWJ1Zyc6IG11c3Qgc3RhcnQgd2l0aCIKKyAgICAgICAgICAgICIgLS0sIGZvbGxvd2VkIGJ5IG5vbi1kYXNoIiwKKyAgICAgICAgICAgIFsiLWQiLCAiLWRlYnVnIl0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRPcHRpb25FcnJvcigKKyAgICAgICAgICAgICJpbnZhbGlkIGxvbmcgb3B0aW9uIHN0cmluZyAnLWRlYnVnJzogIgorICAgICAgICAgICAgIm11c3Qgc3RhcnQgd2l0aCAtLSwgZm9sbG93ZWQgYnkgbm9uLWRhc2giLAorICAgICAgICAgICAgWyItZGVidWciLCAiLS1kZWJ1ZyJdKQorCiBjbGFzcyBUZXN0T3B0aW9uUGFyc2VyKEJhc2VUZXN0KToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYucGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKQEAgLTYzMSw3ICs2NDcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25fbGlzdD1vcHRpb25zKQogCiAgICAgZGVmIHRlc3RfcmVxdWlyZWRfdmFsdWUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VGYWlsKFsiLWEiXSwgIi1hIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VGYWlsKFsiLWEiXSwgIi1hIG9wdGlvbiByZXF1aXJlcyAxIGFyZ3VtZW50IikKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfaW50ZWdlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRQYXJzZUZhaWwoWyItYiIsICI1eCJdLApAQCAtMTAyMyw3ICsxMDM5LDcgQEAKICAgICAgICAgVFlQRV9DSEVDS0VSWyJmaWxlIl0gPSBjaGVja19maWxlCiAKICAgICBkZWYgdGVzdF9maWxldHlwZV9vayhzZWxmKToKLSAgICAgICAgb3BlbihzdXBwb3J0LlRFU1RGTiwgInciKS5jbG9zZSgpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VPSyhbIi0tZmlsZSIsIHN1cHBvcnQuVEVTVEZOLCAiLWFmb28iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnZmlsZSc6IHN1cHBvcnQuVEVTVEZOLCAnYSc6ICdmb28nfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcy5weSBiL0xpYi90ZXN0L3Rlc3Rfb3MucHkKaW5kZXggZWYxNDczMy4uNjIxOWVmZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29zLnB5CkBAIC0xNCwyMCArMTQsNDAgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBtbWFwCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQogaW1wb3J0IHV1aWQKK2ltcG9ydCBhc3luY29yZQoraW1wb3J0IGFzeW5jaGF0CitpbXBvcnQgc29ja2V0CitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgc3RhdAoraW1wb3J0IGxvY2FsZQoraW1wb3J0IGNvZGVjcwordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCiBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogCit3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgb3Muc3RhdF9mbG9hdF90aW1lcyhUcnVlKQorc3QgPSBvcy5zdGF0KF9fZmlsZV9fKQorc3RhdF9zdXBwb3J0c19zdWJzZWNvbmQgPSAoCisgICAgIyBjaGVjayBpZiBmbG9hdCBhbmQgaW50IHRpbWVzdGFtcHMgYXJlIGRpZmZlcmVudAorICAgIChzdC5zdF9hdGltZSAhPSBzdFs3XSkKKyAgICBvciAoc3Quc3RfbXRpbWUgIT0gc3RbOF0pCisgICAgb3IgKHN0LnN0X2N0aW1lICE9IHN0WzldKSkKKwogIyBEZXRlY3Qgd2hldGhlciB3ZSdyZSBvbiBhIExpbnV4IHN5c3RlbSB0aGF0IHVzZXMgdGhlIChub3cgb3V0ZGF0ZWQKICMgYW5kIHVubWFpbnRhaW5lZCkgbGludXh0aHJlYWRzIHRocmVhZGluZyBsaWJyYXJ5LiAgVGhlcmUncyBhbiBpc3N1ZQogIyB3aGVuIGNvbWJpbmluZyBsaW51eHRocmVhZHMgd2l0aCBhIGZhaWxlZCBleGVjdiBjYWxsOiBzZWUKICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTQ5NzAuCi1pZiAoaGFzYXR0cihvcywgImNvbmZzdHJfbmFtZXMiKSBhbmQKLSAgICAiQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTiIgaW4gb3MuY29uZnN0cl9uYW1lcyk6Ci0gICAgbGlicHRocmVhZCA9IG9zLmNvbmZzdHIoIkNTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04iKQotICAgIFVTSU5HX0xJTlVYVEhSRUFEUz0gbGlicHRocmVhZC5zdGFydHN3aXRoKCJsaW51eHRocmVhZHMiKQoraWYgaGFzYXR0cihzeXMsICd0aHJlYWRfaW5mbycpIGFuZCBzeXMudGhyZWFkX2luZm8udmVyc2lvbjoKKyAgICBVU0lOR19MSU5VWFRIUkVBRFMgPSBzeXMudGhyZWFkX2luZm8udmVyc2lvbi5zdGFydHN3aXRoKCJsaW51eHRocmVhZHMiKQogZWxzZToKLSAgICBVU0lOR19MSU5VWFRIUkVBRFM9IEZhbHNlCisgICAgVVNJTkdfTElOVVhUSFJFQURTID0gRmFsc2UKIAogIyBUZXN0cyBjcmVhdGluZyBURVNURk4KIGNsYXNzIEZpbGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMjQsNiArMTQ0LDE4IEBACiAgICAgICAgIHNlbGYuZmRvcGVuX2hlbHBlcigncicpCiAgICAgICAgIHNlbGYuZmRvcGVuX2hlbHBlcigncicsIDEwMCkKIAorICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CisgICAgICAgIFRFU1RGTjIgPSBzdXBwb3J0LlRFU1RGTiArICIuMiIKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCIxIikKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIjIiKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBURVNURk4yKQorICAgICAgICBvcy5yZXBsYWNlKHN1cHBvcnQuVEVTVEZOLCBURVNURk4yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgb3Muc3RhdCwgc3VwcG9ydC5URVNURk4pCisgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAncicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAiMSIpCisKIAogIyBUZXN0IGF0dHJpYnV0ZXMgb24gcmV0dXJuIHZhbHVlcyBmcm9tIG9zLipzdGF0KiBmYW1pbHkuCiBjbGFzcyBTdGF0QXR0cmlidXRlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTQyLDcgKzE3NCw2IEBACiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic3RhdCIpOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaW1wb3J0IHN0YXQKICAgICAgICAgcmVzdWx0ID0gb3Muc3RhdChmbmFtZSkKIAogICAgICAgICAjIE1ha2Ugc3VyZSBkaXJlY3QgYWNjZXNzIHdvcmtzCkBAIC0xNjIsNiArMTkzLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2dldGF0dHIoc3RhdCwgbmFtZSldKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgbWVtYmVycykKIAorICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdF8/dGltZSBhbmQgc3RfP3RpbWVfbnMgZmllbGRzIHJvdWdobHkgYWdyZWUKKyAgICAgICAgIyAodGhleSBzaG91bGQgYWx3YXlzIGFncmVlIHVwIHRvIGFyb3VuZCB0ZW5zLW9mLW1pY3Jvc2Vjb25kcykKKyAgICAgICAgZm9yIG5hbWUgaW4gJ3N0X2F0aW1lIHN0X210aW1lIHN0X2N0aW1lJy5zcGxpdCgpOgorICAgICAgICAgICAgZmxvYXR5ID0gaW50KGdldGF0dHIocmVzdWx0LCBuYW1lKSAqIDEwMDAwMCkKKyAgICAgICAgICAgIG5hbm9zZWNvbmR5ID0gZ2V0YXR0cihyZXN1bHQsIG5hbWUgKyAiX25zIikgLy8gMTAwMDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXR5LCBuYW5vc2Vjb25keSwgZGVsdGE9MikKKwogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXN1bHRbMjAwXQogICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBleGNlcHRpb24gdGhyb3duIikKQEAgLTIwOCw3ICsyNDYsOSBAQAogICAgICAgICAgICAgZm5hbWUgPSBzZWxmLmZuYW1lLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3QgZW5jb2RlICVhIGZvciB0aGUgZmlsZXN5c3RlbSIgJSBzZWxmLmZuYW1lKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXRfYXR0cmlidXRlcyhmbmFtZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmNoZWNrX3N0YXRfYXR0cmlidXRlcyhmbmFtZSkKIAogICAgIGRlZiB0ZXN0X3N0YXR2ZnNfYXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgaWYgbm90IGhhc2F0dHIob3MsICJzdGF0dmZzIik6CkBAIC0yNjUsNiArMzA1LDE0MyBAQAogICAgICAgICBzdDIgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0Mi5zdF9tdGltZSwgaW50KHN0LnN0X210aW1lLWRlbHRhKSkKIAorICAgIGRlZiBfdGVzdF91dGltZShzZWxmLCBmaWxlbmFtZSwgYXR0ciwgdXRpbWUsIGRlbHRhKToKKyAgICAgICAgIyBJc3N1ZSAjMTMzMjcgcmVtb3ZlZCB0aGUgcmVxdWlyZW1lbnQgdG8gcGFzcyBOb25lIGFzIHRoZQorICAgICAgICAjIHNlY29uZCBhcmd1bWVudC4gQ2hlY2sgdGhhdCB0aGUgcHJldmlvdXMgbWV0aG9kcyBvZiBwYXNzaW5nCisgICAgICAgICMgYSB0aW1lIHR1cGxlIG9yIE5vbmUgd29yayBpbiBhZGRpdGlvbiB0byBubyBhcmd1bWVudC4KKyAgICAgICAgc3QwID0gb3Muc3RhdChmaWxlbmFtZSkKKyAgICAgICAgIyBEb2Vzbid0IHNldCBhbnl0aGluZyBuZXcsIGJ1dCBzZXRzIHRoZSB0aW1lIHR1cGxlIHdheQorICAgICAgICB1dGltZShmaWxlbmFtZSwgKGF0dHIoc3QwLCAic3RfYXRpbWUiKSwgYXR0cihzdDAsICJzdF9tdGltZSIpKSkKKyAgICAgICAgIyBTZXR0aW5nIHRoZSB0aW1lIHRvIHRoZSB0aW1lIHlvdSBqdXN0IHJlYWQsIHRoZW4gcmVhZGluZyBhZ2FpbiwKKyAgICAgICAgIyBzaG91bGQgYWx3YXlzIHJldHVybiBleGFjdGx5IHRoZSBzYW1lIHRpbWVzLgorICAgICAgICBzdDEgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0dHIoc3QwLCAic3RfbXRpbWUiKSwgYXR0cihzdDEsICJzdF9tdGltZSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0dHIoc3QwLCAic3RfYXRpbWUiKSwgYXR0cihzdDEsICJzdF9hdGltZSIpKQorICAgICAgICAjIFNldCB0byB0aGUgY3VycmVudCB0aW1lIGluIHRoZSBvbGQgZXhwbGljaXQgd2F5LgorICAgICAgICBvcy51dGltZShmaWxlbmFtZSwgTm9uZSkKKyAgICAgICAgc3QyID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgIyBTZXQgdG8gdGhlIGN1cnJlbnQgdGltZSBpbiB0aGUgbmV3IHdheQorICAgICAgICBvcy51dGltZShmaWxlbmFtZSkKKyAgICAgICAgc3QzID0gb3Muc3RhdChmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChhdHRyKHN0MiwgInN0X210aW1lIiksIGF0dHIoc3QzLCAic3RfbXRpbWUiKSwgZGVsdGE9ZGVsdGEpCisKKyAgICBkZWYgdGVzdF91dGltZShzZWxmKToKKyAgICAgICAgZGVmIHV0aW1lKGZpbGUsIHRpbWVzKToKKyAgICAgICAgICAgIHJldHVybiBvcy51dGltZShmaWxlLCB0aW1lcykKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZShzZWxmLmZuYW1lLCBnZXRhdHRyLCB1dGltZSwgMTApCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWUoc3VwcG9ydC5URVNURk4sIGdldGF0dHIsIHV0aW1lLCAxMCkKKworCisgICAgZGVmIF90ZXN0X3V0aW1lX25zKHNlbGYsIHNldF90aW1lc19ucywgdGVzdF9kaXI9VHJ1ZSk6CisgICAgICAgIGRlZiBnZXRhdHRyX25zKG8sIGF0dHIpOgorICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIobywgYXR0ciArICJfbnMiKQorICAgICAgICB0ZW5fcyA9IDEwICogMTAwMCAqIDEwMDAgKiAxMDAwCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWUoc2VsZi5mbmFtZSwgZ2V0YXR0cl9ucywgc2V0X3RpbWVzX25zLCB0ZW5fcykKKyAgICAgICAgaWYgdGVzdF9kaXI6CisgICAgICAgICAgICBzZWxmLl90ZXN0X3V0aW1lKHN1cHBvcnQuVEVTVEZOLCBnZXRhdHRyX25zLCBzZXRfdGltZXNfbnMsIHRlbl9zKQorCisgICAgZGVmIHRlc3RfdXRpbWVfbnMoc2VsZik6CisgICAgICAgIGRlZiB1dGltZV9ucyhmaWxlLCB0aW1lcyk6CisgICAgICAgICAgICByZXR1cm4gb3MudXRpbWUoZmlsZSwgbnM9dGltZXMpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfbnModXRpbWVfbnMpCisKKyAgICByZXF1aXJlc191dGltZV9kaXJfZmQgPSB1bml0dGVzdC5za2lwVW5sZXNzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19kaXJfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJfZmQgc3VwcG9ydCBmb3IgdXRpbWUgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4iKQorICAgIHJlcXVpcmVzX3V0aW1lX2ZkID0gdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmZCBzdXBwb3J0IGZvciB1dGltZSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCisgICAgcmVxdWlyZXNfdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MgPSB1bml0dGVzdC5za2lwVW5sZXNzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3Mgc3VwcG9ydCBmb3IgdXRpbWUgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4iKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX25vZm9sbG93X3N5bWxpbmtzCisgICAgZGVmIHRlc3RfbHV0aW1lc19ucyhzZWxmKToKKyAgICAgICAgZGVmIGx1dGltZXNfbnMoZmlsZSwgdGltZXMpOgorICAgICAgICAgICAgcmV0dXJuIG9zLnV0aW1lKGZpbGUsIG5zPXRpbWVzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfbnMobHV0aW1lc19ucykKKworICAgIEByZXF1aXJlc191dGltZV9mZAorICAgIGRlZiB0ZXN0X2Z1dGltZXNfbnMoc2VsZik6CisgICAgICAgIGRlZiBmdXRpbWVzX25zKGZpbGUsIHRpbWVzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIG9zLnV0aW1lKGYuZmlsZW5vKCksIG5zPXRpbWVzKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX25zKGZ1dGltZXNfbnMsIHRlc3RfZGlyPUZhbHNlKQorCisgICAgZGVmIF91dGltZV9pbnZhbGlkX2FyZ3VtZW50cyhzZWxmLCBuYW1lLCBhcmcpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ2V0YXR0cihvcywgbmFtZSkoYXJnLCAoNSwgNSksIG5zPSg1LCA1KSkKKworICAgIGRlZiB0ZXN0X3V0aW1lX2ludmFsaWRfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBzZWxmLl91dGltZV9pbnZhbGlkX2FyZ3VtZW50cygndXRpbWUnLCBzZWxmLmZuYW1lKQorCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdGF0X3N1cHBvcnRzX3N1YnNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAib3Muc3RhdCgpIGRvZXNuJ3QgaGFzIGEgc3Vic2Vjb25kIHJlc29sdXRpb24iKQorICAgIGRlZiBfdGVzdF91dGltZV9zdWJzZWNvbmQoc2VsZiwgc2V0X3RpbWVfZnVuYyk6CisgICAgICAgIGFzZWMsIGFtc2VjID0gMSwgOTAxCisgICAgICAgIGF0aW1lID0gYXNlYyArIGFtc2VjICogMWUtMworICAgICAgICBtc2VjLCBtbXNlYyA9IDIsIDkwMQorICAgICAgICBtdGltZSA9IG1zZWMgKyBtbXNlYyAqIDFlLTMKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmZuYW1lCisgICAgICAgIG9zLnV0aW1lKGZpbGVuYW1lLCAoMCwgMCkpCisgICAgICAgIHNldF90aW1lX2Z1bmMoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBvcy5zdGF0X2Zsb2F0X3RpbWVzKFRydWUpCisgICAgICAgIHN0ID0gb3Muc3RhdChmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzdC5zdF9hdGltZSwgYXRpbWUsIHBsYWNlcz0zKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHN0LnN0X210aW1lLCBtdGltZSwgcGxhY2VzPTMpCisKKyAgICBkZWYgdGVzdF91dGltZV9zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIG9zLnV0aW1lKGZpbGVuYW1lLCAoYXRpbWUsIG10aW1lKSkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZmQKKyAgICBkZWYgdGVzdF9mdXRpbWVzX3N1YnNlY29uZChzZWxmKToKKyAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIG9zLnV0aW1lKGYuZmlsZW5vKCksIHRpbWVzPShhdGltZSwgbXRpbWUpKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX3N1YnNlY29uZChzZXRfdGltZSkKKworICAgIEByZXF1aXJlc191dGltZV9mZAorICAgIGRlZiB0ZXN0X2Z1dGltZW5zX3N1YnNlY29uZChzZWxmKToKKyAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIG9zLnV0aW1lKGYuZmlsZW5vKCksIHRpbWVzPShhdGltZSwgbXRpbWUpKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX3N1YnNlY29uZChzZXRfdGltZSkKKworICAgIEByZXF1aXJlc191dGltZV9kaXJfZmQKKyAgICBkZWYgdGVzdF9mdXRpbWVzYXRfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQorICAgICAgICAgICAgZGlyZmQgPSBvcy5vcGVuKGRpcm5hbWUsIG9zLk9fUkRPTkxZKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnV0aW1lKG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpLCBkaXJfZmQ9ZGlyZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzPShhdGltZSwgbXRpbWUpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShkaXJmZCkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MKKyAgICBkZWYgdGVzdF9sdXRpbWVzX3N1YnNlY29uZChzZWxmKToKKyAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpOgorICAgICAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUsIChhdGltZSwgbXRpbWUpLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX2Rpcl9mZAorICAgIGRlZiB0ZXN0X3V0aW1lbnNhdF9zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpCisgICAgICAgICAgICBkaXJmZCA9IG9zLm9wZW4oZGlybmFtZSwgb3MuT19SRE9OTFkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MudXRpbWUob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSksIGRpcl9mZD1kaXJmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXM9KGF0aW1lLCBtdGltZSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKGRpcmZkKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX3N1YnNlY29uZChzZXRfdGltZSkKKwogICAgICMgUmVzdHJpY3QgdGVzdCB0byBXaW4zMiwgc2luY2UgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIG90aGVyCiAgICAgIyBzeXN0ZW1zIHN1cHBvcnQgY2VudGlzZWNvbmRzCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CkBAIC0yOTYsNiArNDczLDE5IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiQ291bGQgbm90IHN0YXQgcGFnZWZpbGUuc3lzIikKIAorICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAicGlwZSIpLCAicmVxdWlyZXMgb3MucGlwZSgpIikKKyAgICAgICAgZGVmIHRlc3RfMTUyNjEoc2VsZik6CisgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IHN0YXQnaW5nIGEgY2xvc2VkIGZkIGRvZXMgbm90IGNhdXNlIGNyYXNoCisgICAgICAgICAgICByLCB3ID0gb3MucGlwZSgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3Muc3RhdChyKSAgICAgICAgICAjIHNob3VsZCBub3QgcmFpc2UgZXJyb3IKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UocikKKyAgICAgICAgICAgICAgICBvcy5jbG9zZSh3KQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjdHg6CisgICAgICAgICAgICAgICAgb3Muc3RhdChyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHguZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FQkFERikKKwogZnJvbSB0ZXN0IGltcG9ydCBtYXBwaW5nX3Rlc3RzCiAKIGNsYXNzIEVudmlyb25UZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CkBAIC00MjcsOCArNjE3LDggQEAKIAogICAgICMgT24gRnJlZUJTRCA8IDcgYW5kIE9TIFggPCAxMC42LCB1bnNldGVudigpIGRvZXNuJ3QgcmV0dXJuIGEgdmFsdWUgKGlzc3VlCiAgICAgIyAjMTM0MTUpLgotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdmcmVlYnNkJywgJ2RhcndpbicpKSwKLSAgICAgICAgICAgICAgICAgICAgICJkdWUgdG8ga25vd24gT1MgYnVnOiBzZWUgaXNzdWUgIzEzNDE1IikKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oNykKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19tYWNfdmVyKDEwLCA2KQogICAgIGRlZiB0ZXN0X3Vuc2V0X2Vycm9yKHNlbGYpOgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKICAgICAgICAgICAgICMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbGltaXRlZCB0byAzMiw3NjcgY2hhcmFjdGVycwpAQCAtNDQyLDcgKzYzMiw3IEBACiBjbGFzcyBXYWxrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3RzIGZvciBvcy53YWxrKCkuIiIiCiAKLSAgICBkZWYgdGVzdF90cmF2ZXJzYWwoc2VsZik6CisgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgZnJvbSBvcy5wYXRoIGltcG9ydCBqb2luCiAKQEAgLTQ1Niw2ICs2NDYsNyBAQAogICAgICAgICAjICAgICAgICAgU1VCMi8gICAgICAgICAgICAgYSBmaWxlIGtpZCBhbmQgYSBkaXJzeW1saW5rIGtpZAogICAgICAgICAjICAgICAgICAgICB0bXAzCiAgICAgICAgICMgICAgICAgICAgIGxpbmsvICAgICAgICAgICBhIHN5bWxpbmsgdG8gVEVTVEZOLjIKKyAgICAgICAgIyAgICAgICAgICAgYnJva2VuX2xpbmsKICAgICAgICAgIyAgICAgICBURVNUMi8KICAgICAgICAgIyAgICAgICAgIHRtcDQgICAgICAgICAgICAgIGEgbG9uZSBmaWxlCiAgICAgICAgIHdhbGtfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMSIpCkBAIC00NjgsNiArNjU5LDggQEAKICAgICAgICAgbGlua19wYXRoID0gam9pbihzdWIyX3BhdGgsICJsaW5rIikKICAgICAgICAgdDJfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMiIpCiAgICAgICAgIHRtcDRfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMiIsICJ0bXA0IikKKyAgICAgICAgbGlua19wYXRoID0gam9pbihzdWIyX3BhdGgsICJsaW5rIikKKyAgICAgICAgYnJva2VuX2xpbmtfcGF0aCA9IGpvaW4oc3ViMl9wYXRoLCAiYnJva2VuX2xpbmsiKQogCiAgICAgICAgICMgQ3JlYXRlIHN0dWZmLgogICAgICAgICBvcy5tYWtlZGlycyhzdWIxMV9wYXRoKQpAQCAtNDg0LDcgKzY3Nyw4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5bWxpbmtfdG9fZGlyID0gb3Muc3ltbGluawogICAgICAgICAgICAgc3ltbGlua190b19kaXIob3MucGF0aC5hYnNwYXRoKHQyX3BhdGgpLCBsaW5rX3BhdGgpCi0gICAgICAgICAgICBzdWIyX3RyZWUgPSAoc3ViMl9wYXRoLCBbImxpbmsiXSwgWyJ0bXAzIl0pCisgICAgICAgICAgICBzeW1saW5rX3RvX2RpcignYnJva2VuJywgYnJva2VuX2xpbmtfcGF0aCkKKyAgICAgICAgICAgIHN1YjJfdHJlZSA9IChzdWIyX3BhdGgsIFsibGluayJdLCBbImJyb2tlbl9saW5rIiwgInRtcDMiXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN1YjJfdHJlZSA9IChzdWIyX3BhdGgsIFtdLCBbInRtcDMiXSkKIApAQCAtNDk2LDYgKzY5MCw3IEBACiAgICAgICAgICMgICAgIGZsaXBwZWQ6ICBURVNURk4sIFNVQjIsIFNVQjEsIFNVQjExCiAgICAgICAgIGZsaXBwZWQgPSBhbGxbMF1bMV1bMF0gIT0gIlNVQjEiCiAgICAgICAgIGFsbFswXVsxXS5zb3J0KCkKKyAgICAgICAgYWxsWzMgLSAyICogZmxpcHBlZF1bLTFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFswXSwgKHdhbGtfcGF0aCwgWyJTVUIxIiwgIlNVQjIiXSwgWyJ0bXAxIl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsxICsgZmxpcHBlZF0sIChzdWIxX3BhdGgsIFsiU1VCMTEiXSwgWyJ0bXAyIl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsyICsgZmxpcHBlZF0sIChzdWIxMV9wYXRoLCBbXSwgW10pKQpAQCAtNTExLDYgKzcwNiw3IEBACiAgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ1NVQjEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbGwpLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFswXSwgKHdhbGtfcGF0aCwgWyJTVUIyIl0sIFsidG1wMSJdKSkKKyAgICAgICAgYWxsWzFdWy0xXS5zb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMV0sIHN1YjJfdHJlZSkKIAogICAgICAgICAjIFdhbGsgYm90dG9tLXVwLgpAQCAtNTIxLDYgKzcxNyw3IEBACiAgICAgICAgICMgICAgIGZsaXBwZWQ6ICBTVUIyLCBTVUIxMSwgU1VCMSwgVEVTVEZOCiAgICAgICAgIGZsaXBwZWQgPSBhbGxbM11bMV1bMF0gIT0gIlNVQjEiCiAgICAgICAgIGFsbFszXVsxXS5zb3J0KCkKKyAgICAgICAgYWxsWzIgLSAyICogZmxpcHBlZF1bLTFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFszXSwgKHdhbGtfcGF0aCwgWyJTVUIxIiwgIlNVQjIiXSwgWyJ0bXAxIl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFtmbGlwcGVkXSwgKHN1YjExX3BhdGgsIFtdLCBbXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsW2ZsaXBwZWQgKyAxXSwgKHN1YjFfcGF0aCwgWyJTVUIxMSJdLCBbInRtcDIiXSkpCkBAIC01NTIsNiArNzQ5LDgyIEBACiAgICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShkaXJuYW1lKQogICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKIAorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZndhbGsnKSwgIlRlc3QgbmVlZHMgb3MuZndhbGsoKSIpCitjbGFzcyBGd2Fsa1Rlc3RzKFdhbGtUZXN0cyk6CisgICAgIiIiVGVzdHMgZm9yIG9zLmZ3YWxrKCkuIiIiCisKKyAgICBkZWYgX2NvbXBhcmVfdG9fd2FsayhzZWxmLCB3YWxrX2t3YXJncywgZndhbGtfa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIGNvbXBhcmUgd2l0aCB3YWxrKCkgcmVzdWx0cy4KKyAgICAgICAgIiIiCisgICAgICAgIHdhbGtfa3dhcmdzID0gd2Fsa19rd2FyZ3MuY29weSgpCisgICAgICAgIGZ3YWxrX2t3YXJncyA9IGZ3YWxrX2t3YXJncy5jb3B5KCkKKyAgICAgICAgZm9yIHRvcGRvd24sIGZvbGxvd19zeW1saW5rcyBpbiBpdGVydG9vbHMucHJvZHVjdCgoVHJ1ZSwgRmFsc2UpLCByZXBlYXQ9Mik6CisgICAgICAgICAgICB3YWxrX2t3YXJncy51cGRhdGUodG9wZG93bj10b3Bkb3duLCBmb2xsb3dsaW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICBmd2Fsa19rd2FyZ3MudXBkYXRlKHRvcGRvd249dG9wZG93biwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKworICAgICAgICAgICAgZXhwZWN0ZWQgPSB7fQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoKip3YWxrX2t3YXJncyk6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRbcm9vdF0gPSAoc2V0KGRpcnMpLCBzZXQoZmlsZXMpKQorCisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsaygqKmZ3YWxrX2t3YXJncyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyb290LCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkW3Jvb3RdLCAoc2V0KGRpcnMpLCBzZXQoZmlsZXMpKSkKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG9fd2FsayhzZWxmKToKKyAgICAgICAga3dhcmdzID0geyd0b3AnOiBzdXBwb3J0LlRFU1RGTn0KKyAgICAgICAgc2VsZi5fY29tcGFyZV90b193YWxrKGt3YXJncywga3dhcmdzKQorCisgICAgZGVmIHRlc3RfZGlyX2ZkKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmZCA9IG9zLm9wZW4oIi4iLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgIHdhbGtfa3dhcmdzID0geyd0b3AnOiBzdXBwb3J0LlRFU1RGTn0KKyAgICAgICAgICAgIGZ3YWxrX2t3YXJncyA9IHdhbGtfa3dhcmdzLmNvcHkoKQorICAgICAgICAgICAgZndhbGtfa3dhcmdzWydkaXJfZmQnXSA9IGZkCisgICAgICAgICAgICBzZWxmLl9jb21wYXJlX3RvX3dhbGsod2Fsa19rd2FyZ3MsIGZ3YWxrX2t3YXJncykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgZGVmIHRlc3RfeWllbGRzX2NvcnJlY3RfZGlyX2ZkKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHJldHVybmVkIGZpbGUgZGVzY3JpcHRvcnMKKyAgICAgICAgZm9yIHRvcGRvd24sIGZvbGxvd19zeW1saW5rcyBpbiBpdGVydG9vbHMucHJvZHVjdCgoVHJ1ZSwgRmFsc2UpLCByZXBlYXQ9Mik6CisgICAgICAgICAgICBhcmdzID0gc3VwcG9ydC5URVNURk4sIHRvcGRvd24sIE5vbmUKKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKCphcmdzLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKToKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIEZEIGlzIHZhbGlkCisgICAgICAgICAgICAgICAgb3MuZnN0YXQocm9vdGZkKQorICAgICAgICAgICAgICAgICMgcmVkdW5kYW50IGNoZWNrCisgICAgICAgICAgICAgICAgb3Muc3RhdChyb290ZmQpCisgICAgICAgICAgICAgICAgIyBjaGVjayB0aGF0IGxpc3RkaXIoKSByZXR1cm5zIGNvbnNpc3RlbnQgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChvcy5saXN0ZGlyKHJvb3RmZCkpLCBzZXQoZGlycykgfCBzZXQoZmlsZXMpKQorCisgICAgZGVmIHRlc3RfZmRfbGVhayhzZWxmKToKKyAgICAgICAgIyBTaW5jZSB3ZSdyZSBvcGVuaW5nIGEgbG90IG9mIEZEcywgd2UgbXVzdCBiZSBjYXJlZnVsIHRvIGF2b2lkIGxlYWtzOgorICAgICAgICAjIHdlIGJvdGggY2hlY2sgdGhhdCBjYWxsaW5nIGZ3YWxrKCkgYSBsYXJnZSBudW1iZXIgb2YgdGltZXMgZG9lc24ndAorICAgICAgICAjIHlpZWxkIEVNRklMRSwgYW5kIHRoYXQgdGhlIG1pbmltdW0gYWxsb2NhdGVkIEZEIGhhc24ndCBjaGFuZ2VkLgorICAgICAgICBtaW5mZCA9IG9zLmR1cCgxKQorICAgICAgICBvcy5jbG9zZShtaW5mZCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKKyAgICAgICAgICAgIGZvciB4IGluIG9zLmZ3YWxrKHN1cHBvcnQuVEVTVEZOKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIG5ld2ZkID0gb3MuZHVwKDEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgbmV3ZmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZmQsIG1pbmZkKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIGNsZWFudXAKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoc3VwcG9ydC5URVNURk4sIHRvcGRvd249RmFsc2UpOgorICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgorICAgICAgICAgICAgICAgIHN0ID0gb3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgICAgICAgICAgaWYgc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihuYW1lLCBkaXJfZmQ9cm9vdGZkKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhuYW1lLCBkaXJfZmQ9cm9vdGZkKQorICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKKworCiBjbGFzcyBNYWtlZGlyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCkBAIC01NzUsMTQgKzg0OCwxMiBAQAogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHN1cHBvcnQuVEVTVEZOLCAnZGlyMScpCiAgICAgICAgIG1vZGUgPSAwbzc3NwogICAgICAgICBvbGRfbWFzayA9IG9zLnVtYXNrKDBvMDIyKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIG1vZGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgbW9kZSwgZXhpc3Rfb2s9RmFsc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgMG83NzYsIGV4aXN0X29rPVRydWUpCi0gICAgICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlPW1vZGUsIGV4aXN0X29rPVRydWUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy51bWFzayhvbGRfbWFzaykKKyAgICAgICAgb3MubWFrZWRpcnMocGF0aCwgbW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIG1vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1ha2VkaXJzLCBwYXRoLCBtb2RlLCBleGlzdF9vaz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIDBvNzc2LCBleGlzdF9vaz1UcnVlKQorICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlPW1vZGUsIGV4aXN0X29rPVRydWUpCisgICAgICAgIG9zLnVtYXNrKG9sZF9tYXNrKQogCiAgICAgZGVmIHRlc3RfZXhpc3Rfb2tfc19pc2dpZF9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5URVNURk4sICdkaXIxJykKQEAgLTU5NCw3ICs4NjUsNyBAQAogICAgICAgICAgICAgICAgICAgICBvcy5sc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfbW9kZSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy5jaG1vZChzdXBwb3J0LlRFU1RGTiwgZXhpc3RpbmdfdGVzdGZuX21vZGUgfCBTX0lTR0lEKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdDYW5ub3Qgc2V0IFNfSVNHSUQgZm9yIGRpci4nKQogICAgICAgICAgICAgaWYgKG9zLmxzdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9tb2RlICYgU19JU0dJRCAhPSBTX0lTR0lEKToKICAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnTm8gc3VwcG9ydCBmb3IgU19JU0dJRCBkaXIgbW9kZS4nKQpAQCAtODQ5LDEwICsxMTIwLDEyIEBACiAKICAgICBkZWYgdGVzdF9mcGF0aGNvbmYoc2VsZik6CiAgICAgICAgIGlmIGhhc2F0dHIob3MsICJmcGF0aGNvbmYiKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2sob3MucGF0aGNvbmYsICJQQ19OQU1FX01BWCIpCiAgICAgICAgICAgICBzZWxmLmNoZWNrKG9zLmZwYXRoY29uZiwgIlBDX05BTUVfTUFYIikKIAogICAgIGRlZiB0ZXN0X2Z0cnVuY2F0ZShzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihvcywgImZ0cnVuY2F0ZSIpOgorICAgICAgICAgICAgc2VsZi5jaGVjayhvcy50cnVuY2F0ZSwgMCkKICAgICAgICAgICAgIHNlbGYuY2hlY2sob3MuZnRydW5jYXRlLCAwKQogCiAgICAgZGVmIHRlc3RfbHNlZWsoc2VsZik6CkBAIC04ODYsNyArMTE1OSw5IEBACiAgICAgICAgIHdpdGggb3BlbihmaWxlMSwgInciKSBhcyBmMToKICAgICAgICAgICAgIGYxLndyaXRlKCJ0ZXN0IikKIAotICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAiciIpIGFzIGYxLCBvcGVuKGZpbGUyLCAiciIpIGFzIGYyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZW9wZW5maWxlKGYxLmZpbGVubygpLCBmMi5maWxlbm8oKSkpCiAKQEAgLTk4OSw4ICsxMjY0LDcgQEAKICAgICAgICAgICAgIG9zLm1rZGlyKHNlbGYuZGlyKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGZvciBmbiBpbiBieXRlc2ZuOgotICAgICAgICAgICAgICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5iZGlyLCBmbiksICJ3IikKLSAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuYmRpciwgZm4pKQogICAgICAgICAgICAgICAgICAgICBmbiA9IG9zLmZzZGVjb2RlKGZuKQogICAgICAgICAgICAgICAgICAgICBpZiBmbiBpbiBzZWxmLnVuaWNvZGVmbjoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR1cGxpY2F0ZSBmaWxlbmFtZSIpCkBAIC0xMDA2LDYgKzEyODAsMTMgQEAKICAgICAgICAgICAgIGV4cGVjdGVkID0gc2VsZi51bmljb2RlZm4KICAgICAgICAgICAgIGZvdW5kID0gc2V0KG9zLmxpc3RkaXIoc2VsZi5kaXIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZCwgZXhwZWN0ZWQpCisgICAgICAgICAgICAjIHRlc3QgbGlzdGRpciB3aXRob3V0IGFyZ3VtZW50cworICAgICAgICAgICAgY3VycmVudF9kaXJlY3RvcnkgPSBvcy5nZXRjd2QoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLmNoZGlyKG9zLnNlcCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChvcy5saXN0ZGlyKCkpLCBzZXQob3MubGlzdGRpcihvcy5zZXApKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3MuY2hkaXIoY3VycmVudF9kaXJlY3RvcnkpCiAKICAgICAgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKICAgICAgICAgICAgIGZvciBmbiBpbiBzZWxmLnVuaWNvZGVmbjoKQEAgLTEyMDksOCArMTQ5MCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGxpbmspLCBvcy5zdGF0KGxpbmspKQogCiAgICAgICAgIGJ5dGVzX2xpbmsgPSBvcy5mc2VuY29kZShsaW5rKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChieXRlc19saW5rKSwgb3Muc3RhdChieXRlc19saW5rKSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQoYnl0ZXNfbGluaykpCiAKICAgICBkZWYgdGVzdF8xMjA4NChzZWxmKToKICAgICAgICAgbGV2ZWwxID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKQpAQCAtMTI2OSw2ICsxNTUyLDIyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmZzZGVjb2RlKGJ5dGVzZm4pLCBmbikKIAogCisKK2NsYXNzIERldmljZUVuY29kaW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFkX2ZkKHNlbGYpOgorICAgICAgICAjIFJldHVybiBOb25lIHdoZW4gYW4gZmQgZG9lc24ndCBhY3R1YWxseSBleGlzdC4KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3MuZGV2aWNlX2VuY29kaW5nKDEyMzQ1NikpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5pc2F0dHkoMCkgYW5kIChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgb3IKKyAgICAgICAgICAgIChoYXNhdHRyKGxvY2FsZSwgJ25sX2xhbmdpbmZvJykgYW5kIGhhc2F0dHIobG9jYWxlLCAnQ09ERVNFVCcpKSksCisgICAgICAgICAgICAndGVzdCByZXF1aXJlcyBhIHR0eSBhbmQgZWl0aGVyIFdpbmRvd3Mgb3IgbmxfbGFuZ2luZm8oQ09ERVNFVCknKQorICAgIGRlZiB0ZXN0X2RldmljZV9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgZW5jb2RpbmcgPSBvcy5kZXZpY2VfZW5jb2RpbmcoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZW5jb2RpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwKGVuY29kaW5nKSkKKworCiBjbGFzcyBQaWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldHBwaWQnKSwgInRlc3QgbmVlZHMgb3MuZ2V0cHBpZCIpCiAgICAgZGVmIHRlc3RfZ2V0cHBpZChzZWxmKToKQEAgLTEyOTAsMTIgKzE1ODksNDcxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHVzZXJfbmFtZSksIDApCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldHByaW9yaXR5JykgYW5kIGhhc2F0dHIob3MsICdzZXRwcmlvcml0eScpLAorICAgICAgICAgICAgICAgICAgICAgIm5lZWRzIG9zLmdldHByaW9yaXR5IGFuZCBvcy5zZXRwcmlvcml0eSIpCitjbGFzcyBQcm9ncmFtUHJpb3JpdHlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZm9yIG9zLmdldHByaW9yaXR5KCkgYW5kIG9zLnNldHByaW9yaXR5KCkuIiIiCisKKyAgICBkZWYgdGVzdF9zZXRfZ2V0X3ByaW9yaXR5KHNlbGYpOgorCisgICAgICAgIGJhc2UgPSBvcy5nZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpKQorICAgICAgICBvcy5zZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpLCBiYXNlICsgMSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV3X3ByaW8gPSBvcy5nZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpKQorICAgICAgICAgICAgaWYgYmFzZSA+PSAxOSBhbmQgbmV3X3ByaW8gPD0gMTk6CisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCisgICAgICAidW5hYmxlIHRvIHJlbGlhYmx5IHRlc3Qgc2V0cHJpb3JpdHkgYXQgY3VycmVudCBuaWNlIGxldmVsIG9mICVzIiAlIGJhc2UpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X3ByaW8sIGJhc2UgKyAxKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnNldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCksIGJhc2UpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVBQ0NFUzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworCitpZiB0aHJlYWRpbmcgaXMgbm90IE5vbmU6CisgICAgY2xhc3MgU2VuZGZpbGVUZXN0U2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIsIHRocmVhZGluZy5UaHJlYWQpOgorCisgICAgICAgIGNsYXNzIEhhbmRsZXIoYXN5bmNoYXQuYXN5bmNfY2hhdCk6CisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uKToKKyAgICAgICAgICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4pCisgICAgICAgICAgICAgICAgc2VsZi5pbl9idWZmZXIgPSBbXQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goYiIyMjAgcmVhZHlcclxuIikKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9yZWFkKHNlbGYpOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlY3YoNDA5NikKKyAgICAgICAgICAgICAgICBzZWxmLmluX2J1ZmZlci5hcHBlbmQoZGF0YSkKKworICAgICAgICAgICAgZGVmIGdldF9kYXRhKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBiJycuam9pbihzZWxmLmluX2J1ZmZlcikKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9jbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgc2VsZi5iaW5kKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQorICAgICAgICAgICAgc2VsZi5ob3N0LCBzZWxmLnBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzoyXQorICAgICAgICAgICAgc2VsZi5oYW5kbGVyX2luc3RhbmNlID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuX2FjdGl2ZV9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorCisgICAgICAgICMgLS0tIHB1YmxpYyBBUEkKKworICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgZGVmIHJ1bm5pbmcoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWN0aXZlCisKKyAgICAgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLnJ1bm5pbmcKKyAgICAgICAgICAgIHNlbGYuX19mbGFnID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuc3RhcnQoc2VsZikKKyAgICAgICAgICAgIHNlbGYuX19mbGFnLndhaXQoKQorCisgICAgICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICAgICAgYXNzZXJ0IHNlbGYucnVubmluZworICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuam9pbigpCisKKyAgICAgICAgZGVmIHdhaXQoc2VsZik6CisgICAgICAgICAgICAjIHdhaXQgZm9yIGhhbmRsZXIgY29ubmVjdGlvbiB0byBiZSBjbG9zZWQsIHRoZW4gc3RvcCB0aGUgc2VydmVyCisgICAgICAgICAgICB3aGlsZSBub3QgZ2V0YXR0cihzZWxmLmhhbmRsZXJfaW5zdGFuY2UsICJjbG9zZWQiLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwMSkKKyAgICAgICAgICAgIHNlbGYuc3RvcCgpCisKKyAgICAgICAgIyAtLS0gaW50ZXJuYWxzCisKKyAgICAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2FjdGl2ZSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX19mbGFnLnNldCgpCisgICAgICAgICAgICB3aGlsZSBzZWxmLl9hY3RpdmUgYW5kIGFzeW5jb3JlLnNvY2tldF9tYXA6CisgICAgICAgICAgICAgICAgc2VsZi5fYWN0aXZlX2xvY2suYWNxdWlyZSgpCisgICAgICAgICAgICAgICAgYXN5bmNvcmUubG9vcCh0aW1lb3V0PTAuMDAxLCBjb3VudD0xKQorICAgICAgICAgICAgICAgIHNlbGYuX2FjdGl2ZV9sb2NrLnJlbGVhc2UoKQorICAgICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKworICAgICAgICBkZWYgaGFuZGxlX2FjY2VwdChzZWxmKToKKyAgICAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLmFjY2VwdCgpCisgICAgICAgICAgICBzZWxmLmhhbmRsZXJfaW5zdGFuY2UgPSBzZWxmLkhhbmRsZXIoY29ubikKKworICAgICAgICBkZWYgaGFuZGxlX2Nvbm5lY3Qoc2VsZik6CisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgaGFuZGxlX3JlYWQgPSBoYW5kbGVfY29ubmVjdAorCisgICAgICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKKyAgICAgICAgICAgIHJhaXNlCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nIGlzIG5vdCBOb25lLCAidGVzdCBuZWVkcyB0aHJlYWRpbmcgbW9kdWxlIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdzZW5kZmlsZScpLCAidGVzdCBuZWVkcyBvcy5zZW5kZmlsZSgpIikKK2NsYXNzIFRlc3RTZW5kZmlsZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBEQVRBID0gYiIxMjM0NWFiY2RlIiAqIDE2ICogMTAyNCAgIyAxNjAgS0IKKyAgICBTVVBQT1JUX0hFQURFUlNfVFJBSUxFUlMgPSBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImxpbnV4IikgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoInNvbGFyaXMiKSBhbmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic3Vub3MiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShjbHMuREFUQSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlciA9IFNlbmRmaWxlVGVzdFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSkKKyAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmNsaWVudCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KSkKKyAgICAgICAgc2VsZi5jbGllbnQuc2V0dGltZW91dCgxKQorICAgICAgICAjIHN5bmNocm9uaXplIGJ5IHdhaXRpbmcgZm9yICIyMjAgcmVhZHkiIHJlc3BvbnNlCisgICAgICAgIHNlbGYuY2xpZW50LnJlY3YoMTAyNCkKKyAgICAgICAgc2VsZi5zb2Nrbm8gPSBzZWxmLmNsaWVudC5maWxlbm8oKQorICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICBzZWxmLmZpbGVubyA9IHNlbGYuZmlsZS5maWxlbm8oKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQorICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCisgICAgICAgIGlmIHNlbGYuc2VydmVyLnJ1bm5pbmc6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKKworICAgIGRlZiBzZW5kZmlsZV93cmFwcGVyKHNlbGYsIHNvY2ssIGZpbGUsIG9mZnNldCwgbmJ5dGVzLCBoZWFkZXJzPVtdLCB0cmFpbGVycz1bXSk6CisgICAgICAgICIiIkEgaGlnaGVyIGxldmVsIHdyYXBwZXIgcmVwcmVzZW50aW5nIGhvdyBhbiBhcHBsaWNhdGlvbiBpcworICAgICAgICBzdXBwb3NlZCB0byB1c2Ugc2VuZGZpbGUoKS4KKyAgICAgICAgIiIiCisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5TVVBQT1JUX0hFQURFUlNfVFJBSUxFUlM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5zZW5kZmlsZShzb2NrLCBmaWxlLCBvZmZzZXQsIG5ieXRlcywgaGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsZXJzKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5zZW5kZmlsZShzb2NrLCBmaWxlLCBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gPT0gZXJybm8uRUNPTk5SRVNFVDoKKyAgICAgICAgICAgICAgICAgICAgIyBkaXNjb25uZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBlbGlmIGVyci5lcnJubyBpbiAoZXJybm8uRUFHQUlOLCBlcnJuby5FQlVTWSk6CisgICAgICAgICAgICAgICAgICAgICMgd2UgaGF2ZSB0byByZXRyeSBzZW5kIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHRlc3Rfc2VuZF93aG9sZV9maWxlKHNlbGYpOgorICAgICAgICAjIG5vcm1hbCBzZW5kCisgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgIG9mZnNldCA9IDAKKyAgICAgICAgbmJ5dGVzID0gNDA5NgorICAgICAgICB3aGlsZSB0b3RhbF9zZW50IDwgbGVuKHNlbGYuREFUQSk6CisgICAgICAgICAgICBzZW50ID0gc2VsZi5zZW5kZmlsZV93cmFwcGVyKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgb2Zmc2V0LCBuYnl0ZXMpCisgICAgICAgICAgICBpZiBzZW50ID09IDA6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIG9mZnNldCArPSBzZW50CisgICAgICAgICAgICB0b3RhbF9zZW50ICs9IHNlbnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZW50IDw9IG5ieXRlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2Zmc2V0LCB0b3RhbF9zZW50KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG90YWxfc2VudCwgbGVuKHNlbGYuREFUQSkpCisgICAgICAgIHNlbGYuY2xpZW50LnNodXRkb3duKHNvY2tldC5TSFVUX1JEV1IpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmdldF9kYXRhKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIGxlbihzZWxmLkRBVEEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuREFUQSkKKworICAgIGRlZiB0ZXN0X3NlbmRfYXRfY2VydGFpbl9vZmZzZXQoc2VsZik6CisgICAgICAgICMgc3RhcnQgc2VuZGluZyBhIGZpbGUgYXQgYSBjZXJ0YWluIG9mZnNldAorICAgICAgICB0b3RhbF9zZW50ID0gMAorICAgICAgICBvZmZzZXQgPSBsZW4oc2VsZi5EQVRBKSAvLyAyCisgICAgICAgIG11c3Rfc2VuZCA9IGxlbihzZWxmLkRBVEEpIC0gb2Zmc2V0CisgICAgICAgIG5ieXRlcyA9IDQwOTYKKyAgICAgICAgd2hpbGUgdG90YWxfc2VudCA8IG11c3Rfc2VuZDoKKyAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNlbmRmaWxlX3dyYXBwZXIoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgIGlmIHNlbnQgPT0gMDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbnQKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbnQgPD0gbmJ5dGVzKQorCisgICAgICAgIHNlbGYuY2xpZW50LnNodXRkb3duKHNvY2tldC5TSFVUX1JEV1IpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmdldF9kYXRhKCkKKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLkRBVEFbbGVuKHNlbGYuREFUQSkgLy8gMjpdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG90YWxfc2VudCwgbGVuKGV4cGVjdGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIGxlbihleHBlY3RlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9vZmZzZXRfb3ZlcmZsb3coc2VsZik6CisgICAgICAgICMgc3BlY2lmeSBhbiBvZmZzZXQgPiBmaWxlIHNpemUKKyAgICAgICAgb2Zmc2V0ID0gbGVuKHNlbGYuREFUQSkgKyA0MDk2CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbnQgPSBvcy5zZW5kZmlsZShzZWxmLnNvY2tubywgc2VsZi5maWxlbm8sIG9mZnNldCwgNDA5NikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgU29sYXJpcyBjYW4gcmFpc2UgRUlOVkFMIGlmIG9mZnNldCA+PSBmaWxlIGxlbmd0aCwgaWdub3JlLgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5WQUw6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgMCkKKyAgICAgICAgc2VsZi5jbGllbnQuc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnZlci53YWl0KCkKKyAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGInJykKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfb2Zmc2V0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCAtMSwgNDA5NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVJTlZBTCkKKworICAgICMgLS0tIGhlYWRlcnMgLyB0cmFpbGVycyB0ZXN0cworCisgICAgaWYgU1VQUE9SVF9IRUFERVJTX1RSQUlMRVJTOgorCisgICAgICAgIGRlZiB0ZXN0X2hlYWRlcnMoc2VsZik6CisgICAgICAgICAgICB0b3RhbF9zZW50ID0gMAorICAgICAgICAgICAgc2VudCA9IG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgMCwgNDA5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVtiIngiICogNTEyXSkKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgb2Zmc2V0ID0gNDA5NgorICAgICAgICAgICAgbmJ5dGVzID0gNDA5NgorICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICBzZW50ID0gc2VsZi5zZW5kZmlsZV93cmFwcGVyKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBuYnl0ZXMpCisgICAgICAgICAgICAgICAgaWYgc2VudCA9PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgICAgIG9mZnNldCArPSBzZW50CisKKyAgICAgICAgICAgIGV4cGVjdGVkX2RhdGEgPSBiIngiICogNTEyICsgc2VsZi5EQVRBCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvdGFsX3NlbnQsIGxlbihleHBlY3RlZF9kYXRhKSkKKyAgICAgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLndhaXQoKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGRhdGEpLCBoYXNoKGV4cGVjdGVkX2RhdGEpKQorCisgICAgICAgIGRlZiB0ZXN0X3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAgICAgVEVTVEZOMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKGIiYWJjZGUiKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyYicpYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MucmVtb3ZlLCBURVNURk4yKQorICAgICAgICAgICAgICAgIG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBmLmZpbGVubygpLCAwLCA0MDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsZXJzPVtiIjEyMzQ1Il0pCisgICAgICAgICAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLndhaXQoKQorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmdldF9kYXRhKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIiYWJjZGUxMjM0NSIpCisKKyAgICAgICAgaWYgaGFzYXR0cihvcywgIlNGX05PRElTS0lPIik6CisgICAgICAgICAgICBkZWYgdGVzdF9mbGFncyhzZWxmKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgMCwgNDA5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9b3MuU0ZfTk9ESVNLSU8pCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gbm90IGluIChlcnJuby5FQlVTWSwgZXJybm8uRUFHQUlOKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKworZGVmIHN1cHBvcnRzX2V4dGVuZGVkX2F0dHJpYnV0ZXMoKToKKyAgICBpZiBub3QgaGFzYXR0cihvcywgInNldHhhdHRyIik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgYiJ1c2VyLnRlc3QiLCBiIiIpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBmaW5hbGx5OgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KKyAgICBrZXJuZWxfdmVyc2lvbiA9IHBsYXRmb3JtLnJlbGVhc2UoKQorICAgIG0gPSByZS5tYXRjaCgiMi42LihcZHsxLDJ9KSIsIGtlcm5lbF92ZXJzaW9uKQorICAgIHJldHVybiBtIGlzIE5vbmUgb3IgaW50KG0uZ3JvdXAoMSkpID49IDM5CisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpLAorICAgICAgICAgICAgICAgICAgICAgIm5vIG5vbi1icm9rZW4gZXh0ZW5kZWQgYXR0cmlidXRlIHN1cHBvcnQiKQorY2xhc3MgRXh0ZW5kZWRBdHRyaWJ1dGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorCisgICAgZGVmIF9jaGVja194YXR0cnNfc3RyKHNlbGYsIHMsIGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0ciwgKiprd2FyZ3MpOgorICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIG9wZW4oZm4sICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9EQVRBKQorICAgICAgICBpbml0X3hhdHRyID0gbGlzdHhhdHRyKGZuKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5pdF94YXR0ciwgbGlzdCkKKyAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiIiIsICoqa3dhcmdzKQorICAgICAgICB4YXR0ciA9IHNldChpbml0X3hhdHRyKQorICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCB4YXR0cikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgYiJ1c2VyLnRlc3QiLCAqKmt3YXJncyksIGIiIikKKyAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiImhlbGxvIiwgb3MuWEFUVFJfUkVQTEFDRSwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIGIidXNlci50ZXN0IiwgKiprd2FyZ3MpLCBiImhlbGxvIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJieWUiLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJieWUiLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QyIiksIGIiZm9vIiwgb3MuWEFUVFJfQ1JFQVRFLCAqKmt3YXJncykKKyAgICAgICAgeGF0dHIuYWRkKCJ1c2VyLnRlc3QyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQorICAgICAgICByZW1vdmV4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisgICAgICAgIHhhdHRyLnJlbW92ZSgidXNlci50ZXN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QyIiksICoqa3dhcmdzKSwgYiJmb28iKQorICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiYSIqMTAyNCwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncyksIGIiYSIqMTAyNCkKKyAgICAgICAgcmVtb3ZleGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKyAgICAgICAgbWFueSA9IHNvcnRlZCgidXNlci50ZXN0e30iLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgxMDApKQorICAgICAgICBmb3IgdGhpbmcgaW4gbWFueToKKyAgICAgICAgICAgIHNldHhhdHRyKGZuLCB0aGluZywgYiJ4IiwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCBzZXQoaW5pdF94YXR0cikgfCBzZXQobWFueSkpCisKKyAgICBkZWYgX2NoZWNrX3hhdHRycyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBkZWYgbWFrZV9ieXRlcyhzKToKKyAgICAgICAgICAgIHJldHVybiBieXRlcyhzLCAiYXNjaWkiKQorICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKHN0ciwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihtYWtlX2J5dGVzLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRycyhvcy5nZXR4YXR0ciwgb3Muc2V0eGF0dHIsIG9zLnJlbW92ZXhhdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubGlzdHhhdHRyKQorCisgICAgZGVmIHRlc3RfbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRycyhvcy5nZXR4YXR0ciwgb3Muc2V0eGF0dHIsIG9zLnJlbW92ZXhhdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubGlzdHhhdHRyLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisKKyAgICBkZWYgdGVzdF9mZHMoc2VsZik6CisgICAgICAgIGRlZiBnZXR4YXR0cihwYXRoLCAqYXJncyk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmdldHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKKyAgICAgICAgZGVmIHNldHhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCisgICAgICAgIGRlZiByZW1vdmV4YXR0cihwYXRoLCAqYXJncyk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZleGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQorICAgICAgICBkZWYgbGlzdHhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICByZXR1cm4gb3MubGlzdHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0cikKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbjMyIHNwZWNpZmljIHRlc3RzIikKK2NsYXNzIFdpbjMyRGVwcmVjYXRlZEJ5dGVzQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9kZXByZWNhdGVkKHNlbGYpOgorICAgICAgICBpbXBvcnQgbnQKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGZvciBmdW5jLCAqYXJncyBpbiAoCisgICAgICAgICAgICAgICAgKG50Ll9nZXRmdWxscGF0aG5hbWUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAobnQuX2lzZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmFjY2VzcywgZmlsZW5hbWUsIG9zLlJfT0spLAorICAgICAgICAgICAgICAgIChvcy5jaGRpciwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5jaG1vZCwgZmlsZW5hbWUsIDBvNzc3KSwKKyAgICAgICAgICAgICAgICAob3MuZ2V0Y3dkYiwpLAorICAgICAgICAgICAgICAgIChvcy5saW5rLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5saXN0ZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmxzdGF0LCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLm1rZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLm9wZW4sIGZpbGVuYW1lLCBvcy5PX1JET05MWSksCisgICAgICAgICAgICAgICAgKG9zLnJlbmFtZSwgZmlsZW5hbWUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Mucm1kaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Muc3RhcnRmaWxlLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLnN0YXQsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MudW5saW5rLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLnV0aW1lLCBmaWxlbmFtZSksCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywgZnVuYywgKmFyZ3MpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3Rfc3ltbGluayhzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0X3Rlcm1pbmFsX3NpemUnKSwgInJlcXVpcmVzIG9zLmdldF90ZXJtaW5hbF9zaXplIikKK2NsYXNzIFRlcm1zaXplVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RvZXNfbm90X2NyYXNoKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBpZiBnZXRfdGVybWluYWxfc2l6ZSgpIHJldHVybnMgYSBtZWFuaW5nZnVsIHZhbHVlLgorCisgICAgICAgIFRoZXJlJ3Mgbm8gZWFzeSBwb3J0YWJsZSB3YXkgdG8gYWN0dWFsbHkgY2hlY2sgdGhlIHNpemUgb2YgdGhlCisgICAgICAgIHRlcm1pbmFsLCBzbyBsZXQncyBjaGVjayBpZiBpdCByZXR1cm5zIHNvbWV0aGluZyBzZW5zaWJsZSBpbnN0ZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2l6ZSA9IG9zLmdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIG9yIGUuZXJybm8gaW4gKGVycm5vLkVJTlZBTCwgZXJybm8uRU5PVFRZKToKKyAgICAgICAgICAgICAgICAjIFVuZGVyIHdpbjMyIGEgZ2VuZXJpYyBPU0Vycm9yIGNhbiBiZSB0aHJvd24gaWYgdGhlCisgICAgICAgICAgICAgICAgIyBoYW5kbGUgY2Fubm90IGJlIHJldHJpZXZlZAorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImZhaWxlZCB0byBxdWVyeSB0ZXJtaW5hbCBzaXplIikKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc2l6ZS5jb2x1bW5zLCAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzaXplLmxpbmVzLCAwKQorCisgICAgZGVmIHRlc3Rfc3R0eV9tYXRjaChzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgaWYgc3R0eSByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdHMKKworICAgICAgICBzdHR5IGFjdHVhbGx5IHRlc3RzIHN0ZGluLCBzbyBnZXRfdGVybWluYWxfc2l6ZSBpcyBpbnZva2VkIG9uCisgICAgICAgIHN0ZGluIGV4cGxpY2l0bHkuIElmIHN0dHkgc3VjY2VlZGVkLCB0aGVuIGdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgc2hvdWxkIHdvcmsgdG9vLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2l6ZSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnc3R0eScsICdzaXplJ10pLmRlY29kZSgpLnNwbGl0KCkKKyAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgic3R0eSBpbnZvY2F0aW9uIGZhaWxlZCIpCisgICAgICAgIGV4cGVjdGVkID0gKGludChzaXplWzFdKSwgaW50KHNpemVbMF0pKSAjIHJldmVyc2VkIG9yZGVyCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWN0dWFsID0gb3MuZ2V0X3Rlcm1pbmFsX3NpemUoc3lzLl9fc3RkaW5fXy5maWxlbm8oKSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIG9yIGUuZXJybm8gaW4gKGVycm5vLkVJTlZBTCwgZXJybm8uRU5PVFRZKToKKyAgICAgICAgICAgICAgICAjIFVuZGVyIHdpbjMyIGEgZ2VuZXJpYyBPU0Vycm9yIGNhbiBiZSB0aHJvd24gaWYgdGhlCisgICAgICAgICAgICAgICAgIyBoYW5kbGUgY2Fubm90IGJlIHJldHJpZXZlZAorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImZhaWxlZCB0byBxdWVyeSB0ZXJtaW5hbCBzaXplIikKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworCitAc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgRmlsZVRlc3RzLAogICAgICAgICBTdGF0QXR0cmlidXRlVGVzdHMsCiAgICAgICAgIEVudmlyb25UZXN0cywKICAgICAgICAgV2Fsa1Rlc3RzLAorICAgICAgICBGd2Fsa1Rlc3RzLAogICAgICAgICBNYWtlZGlyVGVzdHMsCiAgICAgICAgIERldk51bGxUZXN0cywKICAgICAgICAgVVJhbmRvbVRlc3RzLApAQCAtMTMwNyw5ICsyMDY1LDE1IEBACiAgICAgICAgIFdpbjMyS2lsbFRlc3RzLAogICAgICAgICBXaW4zMlN5bWxpbmtUZXN0cywKICAgICAgICAgRlNFbmNvZGluZ1Rlc3RzLAorICAgICAgICBEZXZpY2VFbmNvZGluZ1Rlc3RzLAogICAgICAgICBQaWRUZXN0cywKICAgICAgICAgTG9naW5UZXN0cywKICAgICAgICAgTGlua1Rlc3RzLAorICAgICAgICBUZXN0U2VuZGZpbGUsCisgICAgICAgIFByb2dyYW1Qcmlvcml0eVRlc3RzLAorICAgICAgICBFeHRlbmRlZEF0dHJpYnV0ZVRlc3RzLAorICAgICAgICBXaW4zMkRlcHJlY2F0ZWRCeXRlc0FQSSwKKyAgICAgICAgVGVybXNpemVUZXN0cywKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29zc2F1ZGlvZGV2LnB5IGIvTGliL3Rlc3QvdGVzdF9vc3NhdWRpb2Rldi5weQppbmRleCA5Y2I4OWQ2Li4zOTA4YTA1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zc2F1ZGlvZGV2LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3NzYXVkaW9kZXYucHkKQEAgLTE3MCw2ICsxNzAsMjIgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRzcC5jbG9zZWQpCiAKKyAgICBkZWYgdGVzdF9vbl9jbG9zZWQoc2VsZik6CisgICAgICAgIGRzcCA9IG9zc2F1ZGlvZGV2Lm9wZW4oJ3cnKQorICAgICAgICBkc3AuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3AuZmlsZW5vKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3AucmVhZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLndyaXRlLCBiJ3gnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aud3JpdGVhbGwsIGIneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aub2J1ZmNvdW50KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aub2J1ZmNvdW50KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aub2J1ZmZyZWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5nZXRwdHIpCisKKyAgICAgICAgbWl4ZXIgPSBvc3NhdWRpb2Rldi5vcGVubWl4ZXIoKQorICAgICAgICBtaXhlci5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1peGVyLmZpbGVubykKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weSBiL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weQppbmRleCA4YjNkZjM3Li4yNGVjMmI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5CkBAIC01LDYgKzUsNyBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEVudmlyb25tZW50VmFyR3VhcmQsIHJ1bl91bml0dGVzdAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBPU1hFbnZpcm9ubWVudFZhcmlhYmxlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjcsOCArMjgsNiBAQAogICAgICAgICBzZWxmLl9jaGVja19zeXMoJ1BZVEhPTkVYRUNVVEFCTEUnLCAnPT0nLCAnc3lzLmV4ZWN1dGFibGUnKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZwotCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfTkVYVF9GUkFNRVdPUksnKToKICAgICAgICAgcnVuX3VuaXR0ZXN0KE9TWEVudmlyb25tZW50VmFyaWFibGVUZXN0Q2FzZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQppbmRleCA3MGViOWMwLi5jOTNhMmNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQpAQCAtNTEsNiArNTEsMTAgQEAKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTogKHlpZWxkIDEpKjIiKQogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiByZXR1cm47IHlpZWxkIDEiKQogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB5aWVsZCAxOyByZXR1cm4iKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB5aWVsZCBmcm9tIDEiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB4ID0geWllbGQgZnJvbSAxIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTogZigoeWllbGQgZnJvbSAxKSkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB5aWVsZCAxOyByZXR1cm4gMSIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmb3IgeCBpbiByYW5nZSgzMCk6XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgeWllbGQgeFxuIikKQEAgLTcxNyw2ICs3MjEsMTIgQEAKIAogICAgICMgWFhYIHRlc3RzIGZvciBwaWNrbGluZyBhbmQgdW5waWNrbGluZyBvZiBTVCBvYmplY3RzIHNob3VsZCBnbyBoZXJlCiAKK2NsYXNzIE90aGVyUGFyc2VyQ2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF90d29fYXJnc190b19leHByKHNlbGYpOgorICAgICAgICAjIFNlZSBidWcgIzEyMjY0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5leHByKCJhIiwgImIiKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCkBAIC03MjUsNiArNzM1LDcgQEAKICAgICAgICAgQ29tcGlsZVRlc3RDYXNlLAogICAgICAgICBQYXJzZXJTdGFja0xpbWl0VGVzdENhc2UsCiAgICAgICAgIFNUT2JqZWN0VGVzdENhc2UsCisgICAgICAgIE90aGVyUGFyc2VyQ2FzZSwKICAgICApCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZGIucHkgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQppbmRleCBkMjhiMDQyLi4wZjdhOTg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQpAQCAtMjEsOSArMjEsMTIgQEAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICBzZWxmLnJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KICAgICAgICAgc3lzLnN0ZGluID0gX0Zha2VJbnB1dChzZWxmLmlucHV0KQorICAgICAgICBzZWxmLm9yaWdfdHJhY2UgPSBzeXMuZ2V0dHJhY2UoKSBpZiBoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgZWxzZSBOb25lCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Yyk6CiAgICAgICAgIHN5cy5zdGRpbiA9IHNlbGYucmVhbF9zdGRpbgorICAgICAgICBpZiBzZWxmLm9yaWdfdHJhY2U6CisgICAgICAgICAgICBzeXMuc2V0dHJhY2Uoc2VsZi5vcmlnX3RyYWNlKQogCiAKIGRlZiB0ZXN0X3BkYl9kaXNwbGF5aG9vaygpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQppbmRleCA1MzcxOWQzLi4xZTc4MmNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQpAQCAtMywxMyArMywxNiBAQAogaW1wb3J0IHN5cwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGltcG9ydCB1bml0dGVzdAorZnJvbSBtYXRoIGltcG9ydCBjb3B5c2lnbgogCiBkZWYgZGlzYXNzZW1ibGUoZnVuYyk6CiAgICAgZiA9IFN0cmluZ0lPKCkKICAgICB0bXAgPSBzeXMuc3Rkb3V0CiAgICAgc3lzLnN0ZG91dCA9IGYKLSAgICBkaXMuZGlzKGZ1bmMpCi0gICAgc3lzLnN0ZG91dCA9IHRtcAorICAgIHRyeToKKyAgICAgICAgZGlzLmRpcyhmdW5jKQorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5zdGRvdXQgPSB0bXAKICAgICByZXN1bHQgPSBmLmdldHZhbHVlKCkKICAgICBmLmNsb3NlKCkKICAgICByZXR1cm4gcmVzdWx0CkBAIC0xNyw2ICsyMCw3IEBACiBkZWYgZGlzX3NpbmdsZShsaW5lKToKICAgICByZXR1cm4gZGlzYXNzZW1ibGUoY29tcGlsZShsaW5lLCAnJywgJ3NpbmdsZScpKQogCisKIGNsYXNzIFRlc3RUcmFuZm9ybXModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdW5vdChzZWxmKToKQEAgLTk5LDYgKzEwMywxMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBhc20pCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCVUlMRF9UVVBMRScsIGFzbSkKIAorICAgICAgICAjIExvbmcgdHVwbGVzIHNob3VsZCBiZSBmb2xkZWQgdG9vLgorICAgICAgICBhc20gPSBkaXNfc2luZ2xlKHJlcHIodHVwbGUocmFuZ2UoMTAwMDApKSkpCisgICAgICAgICMgT25lIExPQURfQ09OU1QgZm9yIHRoZSB0dXBsZSwgb25lIGZvciB0aGUgTm9uZSByZXR1cm4gdmFsdWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc20uY291bnQoJ0xPQURfQ09OU1QnKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQlVJTERfVFVQTEUnLCBhc20pCisKICAgICAgICAgIyBCdWcgMTA1MzgxOTogIFR1cGxlIG9mIGNvbnN0YW50cyBtaXNpZGVudGlmaWVkIHdoZW4gcHJlc2VudGVkIHdpdGg6CiAgICAgICAgICMgLiAuIC4gb3Bjb2RlX3dpdGhfYXJnIDEwMCAgIHVuYXJ5X29wY29kZSAgIEJVSUxEX1RVUExFIDEgIC4gLiAuCiAgICAgICAgICMgVGhlIGZvbGxvd2luZyB3b3VsZCBzZWdmYXVsdCB1cG9uIGNvbXBpbGF0aW9uCkBAIC0yMDgsMTQgKzIxOCwxMyBAQAogICAgICAgICAjIG91dCBvZiByYW5nZQogICAgICAgICBhc20gPSBkaXNfc2luZ2xlKCciZnV1IlsxMF0nKQogICAgICAgICBzZWxmLmFzc2VydEluKCdCSU5BUllfU1VCU0NSJywgYXNtKQotICAgICAgICAjIG5vbi1CTVAgY2hhciAoc2VlICM1MDU3KQotICAgICAgICBhc20gPSBkaXNfc2luZ2xlKCciXFUwMDAxMjM0NSJbMF0nKQotICAgICAgICBzZWxmLmFzc2VydEluKCdCSU5BUllfU1VCU0NSJywgYXNtKQotCiAKICAgICBkZWYgdGVzdF9mb2xkaW5nX29mX3VuYXJ5b3BzX29uX2NvbnN0YW50cyhzZWxmKToKICAgICAgICAgZm9yIGxpbmUsIGVsZW0gaW4gKAogICAgICAgICAgICAgKCctMC41JywgJygtMC41KScpLCAgICAgICAgICAgICAgICAgICAgICMgdW5hcnkgbmVnYXRpdmUKKyAgICAgICAgICAgICgnLTAuMCcsICcoLTAuMCknKSwgICAgICAgICAgICAgICAgICAgICAjIC0wLjAKKyAgICAgICAgICAgICgnLSgxLjAtMS4wKScsJygtMC4wKScpLCAgICAgICAgICAgICAgICAjIC0wLjAgYWZ0ZXIgZm9sZGluZworICAgICAgICAgICAgKCctMCcsICcoMCknKSwgICAgICAgICAgICAgICAgICAgICAgICAgICMgLTAKICAgICAgICAgICAgICgnfi0yJywgJygxKScpLCAgICAgICAgICAgICAgICAgICAgICAgICAjIHVuYXJ5IGludmVydAogICAgICAgICAgICAgKCcrMScsICcoMSknKSwgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5hcnkgcG9zaXRpdmUKICAgICAgICAgKToKQEAgLTIyMyw2ICsyMzIsMTMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZWxlbSwgYXNtLCBhc20pCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdVTkFSWV8nLCBhc20pCiAKKyAgICAgICAgIyBDaGVjayB0aGF0IC0wLjAgd29ya3MgYWZ0ZXIgbWFyc2hhbGluZworICAgICAgICBkZWYgbmVnemVybygpOgorICAgICAgICAgICAgcmV0dXJuIC0oMS4wLTEuMCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdVTkFSWV8nLCBkaXNhc3NlbWJsZShuZWd6ZXJvKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvcHlzaWduKDEuMCwgbmVnemVybygpKSA8IDApCisKICAgICAgICAgIyBWZXJpZnkgdGhhdCB1bmZvbGRhYmxlcyBhcmUgc2tpcHBlZAogICAgICAgICBmb3IgbGluZSwgZWxlbSBpbiAoCiAgICAgICAgICAgICAoJy0iYWJjIicsICIoJ2FiYycpIiksICAgICAgICAgICAgICAgICAgIyB1bmFyeSBuZWdhdGl2ZQpAQCAtMjg1LDYgKzMwMSwyNSBAQAogICAgICAgICBhc20gPSBkaXNhc3NlbWJsZShmKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCSU5BUllfQUREJywgYXNtKQogCisgICAgZGVmIHRlc3RfY29uc3RhbnRfZm9sZGluZyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTEyNDQ6IGFnZ3Jlc3NpdmUgY29uc3RhbnQgZm9sZGluZy4KKyAgICAgICAgZXhwcnMgPSBbCisgICAgICAgICAgICAiMyAqIC01IiwKKyAgICAgICAgICAgICItMyAqIDUiLAorICAgICAgICAgICAgIjIgKiAoMyAqIDQpIiwKKyAgICAgICAgICAgICIoMiAqIDMpICogNCIsCisgICAgICAgICAgICAiKC0xLCAyLCAzKSIsCisgICAgICAgICAgICAiKDEsIC0yLCAzKSIsCisgICAgICAgICAgICAiKDEsIDIsIC0zKSIsCisgICAgICAgICAgICAiKDEsIDIsIC0zKSAqIDYiLAorICAgICAgICAgICAgImxhbWJkYSB4OiB4IGluIHsoMyAqIC01KSArICgtMSAtIDYpLCAoMSwgLTIsIDMpICogMiwgTm9uZX0iLAorICAgICAgICBdCisgICAgICAgIGZvciBlIGluIGV4cHJzOgorICAgICAgICAgICAgYXNtID0gZGlzX3NpbmdsZShlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVU5BUllfJywgYXNtLCBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQklOQVJZXycsIGFzbSwgZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JVSUxEXycsIGFzbSwgZSkKKwogY2xhc3MgVGVzdEJ1Z2xldHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYnVnXzExNTEwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weQppbmRleCA2ZDg5MWU1Li40YjE2Y2JiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weQpAQCAtMSw2ICsxLDkgQEAKICMgVGVzdCB0aGUgVW5pY29kZSB2ZXJzaW9ucyBvZiBub3JtYWwgZmlsZSBmdW5jdGlvbnMKICMgb3Blbiwgb3Mub3Blbiwgb3Muc3RhdC4gb3MubGlzdGRpciwgb3MucmVuYW1lLCBvcy5yZW1vdmUsIG9zLm1rZGlyLCBvcy5jaGRpciwgb3Mucm1kaXIKLWltcG9ydCBzeXMsIG9zLCB1bml0dGVzdAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSB1bmljb2RlZGF0YSBpbXBvcnQgbm9ybWFsaXplCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtMzgsOCArNDEsOCBAQAogICAgICAgICAnMTdfXHUyMDAxXHUyMDAxXHUyMDAxQScsCiAgICAgICAgICcxOF9cdTIwMDNcdTIwMDNcdTIwMDNBJywgICMgPT0gTkZDKCdcdTIwMDFcdTIwMDFcdTIwMDFBJykKICAgICAgICAgJzE5X1x1MDAyMFx1MDAyMFx1MDAyMEEnLCAgIyAnXHUwMDIwJyA9PSAnICcgPT0gTkZLQygnXHUyMDAwJykgPT0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgTkZLQygnXHUyMDAxJykgPT0gTkZLQygnXHUyMDAzJykKLV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIE5GS0MoJ1x1MjAwMScpID09IE5GS0MoJ1x1MjAwMycpCisgICAgXSkKIAogCiAjIElzIGl0IFVuaWNvZGUtZnJpZW5kbHk/CkBAIC03MSw3ICs3NCw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5ta2RpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbGVzID0gc2V0KCkKICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5maWxlczoKQEAgLTkwLDE1ICs5MywxNyBAQAogICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShzZWxmLm5vcm1hbF9mb3JtLCBzKQogICAgICAgICByZXR1cm4gcwogCi0gICAgZGVmIF9hcHBseV9mYWlsdXJlKHNlbGYsIGZuLCBmaWxlbmFtZSwgZXhwZWN0ZWRfZXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBjaGVja19mbl9pbl9leGNlcHRpb24gPSBUcnVlKToKKyAgICBkZWYgX2FwcGx5X2ZhaWx1cmUoc2VsZiwgZm4sIGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGNlcHRpb249RmlsZU5vdEZvdW5kRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2ZpbGVuYW1lPVRydWUpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGV4cGVjdGVkX2V4Y2VwdGlvbikgYXMgYzoKICAgICAgICAgICAgIGZuKGZpbGVuYW1lKQogICAgICAgICBleGNfZmlsZW5hbWUgPSBjLmV4Y2VwdGlvbi5maWxlbmFtZQotICAgICAgICAjIHRoZSAiZmlsZW5hbWUiIGV4Y2VwdGlvbiBhdHRyaWJ1dGUgbWF5IGJlIGVuY29kZWQKLSAgICAgICAgaWYgaXNpbnN0YW5jZShleGNfZmlsZW5hbWUsIGJ5dGVzKToKLSAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKLSAgICAgICAgaWYgY2hlY2tfZm5faW5fZXhjZXB0aW9uOgorICAgICAgICAjIGxpc3RkaXIgbWF5IGFwcGVuZCBhIHdpbGRjYXJkIHRvIHRoZSBmaWxlbmFtZQorICAgICAgICBpZiBmbiBpcyBvcy5saXN0ZGlyIGFuZCBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIGV4Y19maWxlbmFtZSwgXywgd2lsZGNhcmQgPSBleGNfZmlsZW5hbWUucnBhcnRpdGlvbihvcy5zZXApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdpbGRjYXJkLCAnKi4qJykKKyAgICAgICAgaWYgY2hlY2tfZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19maWxlbmFtZSwgZmlsZW5hbWUsICJGdW5jdGlvbiAnJXMoJWEpIGZhaWxlZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIGJhZCBmaWxlbmFtZSBpbiB0aGUgZXhjZXB0aW9uOiAlYSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm4uX19uYW1lX18sIGZpbGVuYW1lLCBleGNfZmlsZW5hbWUpKQpAQCAtMTA3LDEzICsxMTIsMTggQEAKICAgICAgICAgIyBQYXNzIG5vbi1leGlzdGluZyBVbmljb2RlIGZpbGVuYW1lcyBhbGwgb3ZlciB0aGUgcGxhY2UuCiAgICAgICAgIGZvciBuYW1lIGluIHNlbGYuZmlsZXM6CiAgICAgICAgICAgICBuYW1lID0gIm5vdF8iICsgbmFtZQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcGVuLCBuYW1lLCBJT0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5zdGF0LCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5jaGRpciwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Mucm1kaXIsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJlbW92ZSwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgICMgbGlzdGRpciBtYXkgYXBwZW5kIGEgd2lsZGNhcmQgdG8gdGhlIGZpbGVuYW1lLCBzbyBkb250IGNoZWNrCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmxpc3RkaXIsIG5hbWUsIE9TRXJyb3IsIEZhbHNlKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcGVuLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5zdGF0LCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5jaGRpciwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Mucm1kaXIsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJlbW92ZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSkKKworICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAjIFdpbmRvd3MgaXMgbHVuYXRpYy4gSXNzdWUgIzEzMzY2LgorICAgICAgICBfbGlzdGRpcl9mYWlsdXJlID0gTm90QURpcmVjdG9yeUVycm9yLCBGaWxlTm90Rm91bmRFcnJvcgorICAgIGVsc2U6CisgICAgICAgIF9saXN0ZGlyX2ZhaWx1cmUgPSBOb3RBRGlyZWN0b3J5RXJyb3IKIAogICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CiAgICAgICAgIGZvciBuYW1lIGluIHNlbGYuZmlsZXM6CkBAIC0xMjEsMTIgKzEzMSwxMyBAQAogICAgICAgICAgICAgZi53cml0ZSgobmFtZSsnXG4nKS5lbmNvZGUoInV0Zi04IikpCiAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgIG9zLnN0YXQobmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSwgc2VsZi5fbGlzdGRpcl9mYWlsdXJlKQogCiAgICAgIyBTa2lwIHRoZSB0ZXN0IG9uIGRhcndpbiwgYmVjYXVzZSBkYXJ3aW4gZG9lcyBub3JtYWxpemUgdGhlIGZpbGVuYW1lIHRvCiAgICAgIyBORkQgKGEgdmFyaWFudCBvZiBVbmljb2RlIE5GRCBmb3JtKS4gTm9ybWFsaXplIHRoZSBmaWxlbmFtZSB0byBORkMsIE5GS0MsCiAgICAgIyBORktEIGluIFB5dGhvbiBpcyB1c2VsZXNzLCBiZWNhdXNlIGRhcndpbiB3aWxsIG5vcm1hbGl6ZSBpdCBsYXRlciBhbmQgc28KICAgICAjIG9wZW4oKSwgb3Muc3RhdCgpLCBldGMuIGRvbid0IHJhaXNlIGFueSBleGNlcHRpb24uCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICdpcnJldmVsYW50IHRlc3Qgb24gTWFjIE9TIFgnKQorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAnaXJyZWxldmFudCB0ZXN0IG9uIE1hYyBPUyBYJykKICAgICBkZWYgdGVzdF9ub3JtYWxpemUoc2VsZik6CiAgICAgICAgIGZpbGVzID0gc2V0KHNlbGYuZmlsZXMpCiAgICAgICAgIG90aGVycyA9IHNldCgpCkBAIC0xMzQsMjEgKzE0NSwyMiBAQAogICAgICAgICAgICAgb3RoZXJzIHw9IHNldChub3JtYWxpemUobmYsIGZpbGUpIGZvciBmaWxlIGluIGZpbGVzKQogICAgICAgICBvdGhlcnMgLT0gZmlsZXMKICAgICAgICAgZm9yIG5hbWUgaW4gb3RoZXJzOgotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcGVuLCBuYW1lLCBJT0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5zdGF0LCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5jaGRpciwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Mucm1kaXIsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJlbW92ZSwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgICMgbGlzdGRpciBtYXkgYXBwZW5kIGEgd2lsZGNhcmQgdG8gdGhlIGZpbGVuYW1lLCBzbyBkb250IGNoZWNrCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmxpc3RkaXIsIG5hbWUsIE9TRXJyb3IsIEZhbHNlKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcGVuLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5zdGF0LCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5jaGRpciwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Mucm1kaXIsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJlbW92ZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSkKIAogICAgICMgU2tpcCB0aGUgdGVzdCBvbiBkYXJ3aW4sIGJlY2F1c2UgZGFyd2luIHVzZXMgYSBub3JtYWxpemF0aW9uIGRpZmZlcmVudAogICAgICMgdGhhbiBQeXRob24gTkZEIG5vcm1hbGl6YXRpb246IGZpbGVuYW1lcyBhcmUgZGlmZmVyZW50IGV2ZW4gaWYgd2UgdXNlCiAgICAgIyBQeXRob24gTkZEIG5vcm1hbGl6YXRpb24uCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICdpcnJldmVsYW50IHRlc3Qgb24gTWFjIE9TIFgnKQorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAnaXJyZWxldmFudCB0ZXN0IG9uIE1hYyBPUyBYJykKICAgICBkZWYgdGVzdF9saXN0ZGlyKHNlbGYpOgogICAgICAgICBzZjAgPSBzZXQoc2VsZi5maWxlcykKLSAgICAgICAgZjEgPSBvcy5saXN0ZGlyKHN1cHBvcnQuVEVTVEZOLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGYxID0gb3MubGlzdGRpcihzdXBwb3J0LlRFU1RGTi5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKSkKICAgICAgICAgZjIgPSBvcy5saXN0ZGlyKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBzZjIgPSBzZXQob3MucGF0aC5qb2luKHN1cHBvcnQuVEVTVEZOLCBmKSBmb3IgZiBpbiBmMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZjAsIHNmMiwgIiVhICE9ICVhIiAlIChzZjAsIHNmMikpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI5Mi5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5CmluZGV4IDExOWM3ZWEuLjZkYThkMmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5CkBAIC00MiwxOSArNDIsNiBAQAogICAgICAgICBzID0gVGVtcGxhdGUoJyR3aG8gbGlrZXMgJCQnKQogICAgICAgICBlcShzLnN1YnN0aXR1dGUoZGljdCh3aG89J3RpbScsIHdoYXQ9J2hhbScpKSwgJ3RpbSBsaWtlcyAkJykKIAotICAgIGRlZiB0ZXN0X2ludmFsaWQoc2VsZik6Ci0gICAgICAgIGNsYXNzIE15UGF0dGVybihUZW1wbGF0ZSk6Ci0gICAgICAgICAgICBwYXR0ZXJuID0gciIiIgotICAgICAgICAgICAgKD86Ci0gICAgICAgICAgICAoP1A8aW52YWxpZD4pICAgICAgICAgICAgfAotICAgICAgICAgICAgKD9QPGVzY2FwZWQ+JShkZWxpbSlzKSAgIHwKLSAgICAgICAgICAgIEAoP1A8bmFtZWQ+JShpZClzKSAgICAgICB8Ci0gICAgICAgICAgICBAeyg/UDxicmFjZWQ+JShpZClzKX0gICAgCi0gICAgICAgICAgICApCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgcyA9IE15UGF0dGVybignJCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHMuc3Vic3RpdHV0ZSwgZGljdCgpKSAKLQogICAgIGRlZiB0ZXN0X3BlcmNlbnRzKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgcyA9IFRlbXBsYXRlKCclKGZvbylzICRmb28gJHtmb299JykKQEAgLTE3Miw2ICsxNTksMjYgQEAKICAgICAgICAgdmFsID0gdC5zYWZlX3N1YnN0aXR1dGUoeydsb2NhdGlvbic6ICdDbGV2ZWxhbmQnfSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWwsICdQeUNvbiBpbiBDbGV2ZWxhbmQnKQogCisgICAgZGVmIHRlc3RfaW52YWxpZF93aXRoX25vX2xpbmVzKHNlbGYpOgorICAgICAgICAjIFRoZSBlcnJvciBmb3JtYXR0aW5nIGZvciBpbnZhbGlkIHRlbXBsYXRlcworICAgICAgICAjIGhhcyBhIHNwZWNpYWwgY2FzZSBmb3Igbm8gZGF0YSB0aGF0IHRoZSBkZWZhdWx0CisgICAgICAgICMgcGF0dGVybiBjYW4ndCB0cmlnZ2VyIChhbHdheXMgaGFzIGF0IGxlYXN0ICckJykKKyAgICAgICAgIyBTbyB3ZSBjcmFmdCBhIHBhdHRlcm4gdGhhdCBpcyBhbHdheXMgaW52YWxpZAorICAgICAgICAjIHdpdGggbm8gbGVhZGluZyBkYXRhLgorICAgICAgICBjbGFzcyBNeVRlbXBsYXRlKFRlbXBsYXRlKToKKyAgICAgICAgICAgIHBhdHRlcm4gPSByIiIiCisgICAgICAgICAgICAgICg/UDxpbnZhbGlkPikgfAorICAgICAgICAgICAgICB1bnJlYWNoYWJsZSgKKyAgICAgICAgICAgICAgICAoP1A8bmFtZWQ+KSAgIHwKKyAgICAgICAgICAgICAgICAoP1A8YnJhY2VkPikgIHwKKyAgICAgICAgICAgICAgICAoP1A8ZXNjYXBlZD4pCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICIiIgorICAgICAgICBzID0gTXlUZW1wbGF0ZSgnJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlcnI6CisgICAgICAgICAgICBzLnN1YnN0aXR1dGUoe30pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpbmUgMSwgY29sIDEnLCBzdHIoZXJyLmV4Y2VwdGlvbikpCisKICAgICBkZWYgdGVzdF91bmljb2RlX3ZhbHVlcyhzZWxmKToKICAgICAgICAgcyA9IFRlbXBsYXRlKCckd2hvIGxpa2VzICR3aGF0JykKICAgICAgICAgZCA9IGRpY3Qod2hvPSd0XHhmZm0nLCB3aGF0PSdmXHhmZVxmZWQnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CmluZGV4IGRmMGY2NGQuLjJlNmI5MGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKQEAgLTE3LDEyICsxNyw3IEBACiAKICAgICBkZWYgdGVzdF9ub25fYm1wX25vcm1hbGl6ZWQoc2VsZik6CiAgICAgICAgIPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgPSAxCi0gICAgICAgICMgT24gd2lkZSBidWlsZHMsIHRoaXMgaXMgbm9ybWFsaXplZCwgYnV0IG9uIG5hcnJvdyBvbmVzIGl0IGlzIG5vdC4gU2VlCi0gICAgICAgICMgIzEyNzQ2LgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCLwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiIiwgZGlyKCkpCi0gICAgICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LmNhc2UuX0V4cGVjdGVkRmFpbHVyZShzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiVW5pY29kZSIsIGRpcigpKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3OTJjMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKQEAgLTAsMCArMSwyMTEgQEAKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IG9zCitpbXBvcnQgc2VsZWN0CitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBlcnJubworZnJvbSBlcnJubyBpbXBvcnQgRUVYSVNUCisKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitjbGFzcyBTdWJPU0Vycm9yKE9TRXJyb3IpOgorICAgIHBhc3MKKworY2xhc3MgU3ViT1NFcnJvcldpdGhJbml0KE9TRXJyb3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCBiYXIpOgorICAgICAgICBzZWxmLmJhciA9IGJhcgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1lc3NhZ2UpCisKK2NsYXNzIFN1Yk9TRXJyb3JXaXRoTmV3KE9TRXJyb3IpOgorICAgIGRlZiBfX25ld19fKGNscywgbWVzc2FnZSwgYmF6KToKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG1lc3NhZ2UpCisgICAgICAgIHNlbGYuYmF6ID0gYmF6CisgICAgICAgIHJldHVybiBzZWxmCisKK2NsYXNzIFN1Yk9TRXJyb3JDb21iaW5lZEluaXRGaXJzdChTdWJPU0Vycm9yV2l0aEluaXQsIFN1Yk9TRXJyb3JXaXRoTmV3KToKKyAgICBwYXNzCisKK2NsYXNzIFN1Yk9TRXJyb3JDb21iaW5lZE5ld0ZpcnN0KFN1Yk9TRXJyb3JXaXRoTmV3LCBTdWJPU0Vycm9yV2l0aEluaXQpOgorICAgIHBhc3MKKworY2xhc3MgU3ViT1NFcnJvcldpdGhTdGFuZGFsb25lSW5pdChPU0Vycm9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBIaWVyYXJjaHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2J1aWx0aW5fZXJyb3JzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE9TRXJyb3IuX19uYW1lX18sICdPU0Vycm9yJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhJT0Vycm9yLCBPU0Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzKEVudmlyb25tZW50RXJyb3IsIE9TRXJyb3IpCisKKyAgICBkZWYgdGVzdF9zb2NrZXRfZXJyb3JzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzKHNvY2tldC5lcnJvciwgSU9FcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb2NrZXQuZ2FpZXJyb3IuX19iYXNlX18sIE9TRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29ja2V0LmhlcnJvci5fX2Jhc2VfXywgT1NFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb2NrZXQudGltZW91dC5fX2Jhc2VfXywgT1NFcnJvcikKKworICAgIGRlZiB0ZXN0X3NlbGVjdF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxlY3QuZXJyb3IsIE9TRXJyb3IpCisKKyAgICAjIG1tYXAuZXJyb3IgaXMgdGVzdGVkIGluIHRlc3RfbW1hcAorCisgICAgX3BlcF9tYXAgPSAiIiIKKyAgICAgICAgKy0tIEJsb2NraW5nSU9FcnJvciAgICAgICAgRUFHQUlOLCBFQUxSRUFEWSwgRVdPVUxEQkxPQ0ssIEVJTlBST0dSRVNTCisgICAgICAgICstLSBDaGlsZFByb2Nlc3NFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDSElMRAorICAgICAgICArLS0gQ29ubmVjdGlvbkVycm9yCisgICAgICAgICAgICArLS0gQnJva2VuUGlwZUVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVBJUEUsIEVTSFVURE9XTgorICAgICAgICAgICAgKy0tIENvbm5lY3Rpb25BYm9ydGVkRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICBFQ09OTkFCT1JURUQKKyAgICAgICAgICAgICstLSBDb25uZWN0aW9uUmVmdXNlZEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgRUNPTk5SRUZVU0VECisgICAgICAgICAgICArLS0gQ29ubmVjdGlvblJlc2V0RXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUNPTk5SRVNFVAorICAgICAgICArLS0gRmlsZUV4aXN0c0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRVhJU1QKKyAgICAgICAgKy0tIEZpbGVOb3RGb3VuZEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU5PRU5UCisgICAgICAgICstLSBJbnRlcnJ1cHRlZEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFSU5UUgorICAgICAgICArLS0gSXNBRGlyZWN0b3J5RXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFSVNESVIKKyAgICAgICAgKy0tIE5vdEFEaXJlY3RvcnlFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTk9URElSCisgICAgICAgICstLSBQZXJtaXNzaW9uRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUFDQ0VTLCBFUEVSTQorICAgICAgICArLS0gUHJvY2Vzc0xvb2t1cEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNSQ0gKKyAgICAgICAgKy0tIFRpbWVvdXRFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVRJTUVET1VUCisgICAgIiIiCisgICAgZGVmIF9tYWtlX21hcChzKToKKyAgICAgICAgX21hcCA9IHt9CisgICAgICAgIGZvciBsaW5lIGluIHMuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoJystICcpCisgICAgICAgICAgICBpZiBub3QgbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhjbmFtZSwgXywgZXJybmFtZXMgPSBsaW5lLnBhcnRpdGlvbignICcpCisgICAgICAgICAgICBmb3IgZXJybmFtZSBpbiBmaWx0ZXIoTm9uZSwgZXJybmFtZXMuc3RyaXAoKS5zcGxpdCgnLCAnKSk6CisgICAgICAgICAgICAgICAgX21hcFtnZXRhdHRyKGVycm5vLCBlcnJuYW1lKV0gPSBnZXRhdHRyKGJ1aWx0aW5zLCBleGNuYW1lKQorICAgICAgICByZXR1cm4gX21hcAorICAgIF9tYXAgPSBfbWFrZV9tYXAoX3BlcF9tYXApCisKKyAgICBkZWYgdGVzdF9lcnJub19tYXBwaW5nKHNlbGYpOgorICAgICAgICAjIFRoZSBPU0Vycm9yIGNvbnN0cnVjdG9yIG1hcHMgZXJybm9zIHRvIHN1YmNsYXNzZXMKKyAgICAgICAgIyBBIHNhbXBsZSB0ZXN0IGZvciB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eQorICAgICAgICBlID0gT1NFcnJvcihFRVhJU1QsICJCYWQgZmlsZSBkZXNjcmlwdG9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBGaWxlRXhpc3RzRXJyb3IpCisgICAgICAgICMgRXhoYXVzdGl2ZSB0ZXN0aW5nCisgICAgICAgIGZvciBlcnJjb2RlLCBleGMgaW4gc2VsZi5fbWFwLml0ZW1zKCk6CisgICAgICAgICAgICBlID0gT1NFcnJvcihlcnJjb2RlLCAiU29tZSBtZXNzYWdlIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgZXhjKQorICAgICAgICBvdGhlcmNvZGVzID0gc2V0KGVycm5vLmVycm9yY29kZSkgLSBzZXQoc2VsZi5fbWFwKQorICAgICAgICBmb3IgZXJyY29kZSBpbiBvdGhlcmNvZGVzOgorICAgICAgICAgICAgZSA9IE9TRXJyb3IoZXJyY29kZSwgIlNvbWUgbWVzc2FnZSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIE9TRXJyb3IpCisKKyAgICBkZWYgdGVzdF90cnlfZXhjZXB0KHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9ICJzb21lX2hvcGVmdWxseV9ub25fZXhpc3RpbmdfZmlsZSIKKworICAgICAgICAjIFRoaXMgY2hlY2tzIHRoYXQgdHJ5IC4uIGV4Y2VwdCBjaGVja3MgdGhlIGNvbmNyZXRlIGV4Y2VwdGlvbgorICAgICAgICAjIChGaWxlTm90Rm91bmRFcnJvcikgYW5kIG5vdCB0aGUgYmFzZSB0eXBlIHNwZWNpZmllZCB3aGVuCisgICAgICAgICMgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0IHdhcyBjYWxsZWQuCisgICAgICAgICMgKGl0IGlzIHRoZXJlZm9yZSBkZWxpYmVyYXRlIHRoYXQgaXQgZG9lc24ndCB1c2UgYXNzZXJ0UmFpc2VzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcGVuKGZpbGVuYW1lKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInNob3VsZCBoYXZlIHJhaXNlZCBhIEZpbGVOb3RGb3VuZEVycm9yIikKKworICAgICAgICAjIEFub3RoZXIgdGVzdCBmb3IgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MudW5saW5rKGZpbGVuYW1lKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInNob3VsZCBoYXZlIHJhaXNlZCBhIEZpbGVOb3RGb3VuZEVycm9yIikKKworCitjbGFzcyBBdHRyaWJ1dGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF93aW5kb3dzX2Vycm9yKHNlbGYpOgorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd3aW5lcnJvcicsIGRpcihPU0Vycm9yKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3dpbmVycm9yJywgZGlyKE9TRXJyb3IpKQorCisgICAgZGVmIHRlc3RfcG9zaXhfZXJyb3Ioc2VsZik6CisgICAgICAgIGUgPSBPU0Vycm9yKEVFWElTVCwgIkZpbGUgYWxyZWFkeSBleGlzdHMiLCAiZm9vLnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgRUVYSVNUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgRUVYSVNUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuc3RyZXJyb3IsICJGaWxlIGFscmVhZHkgZXhpc3RzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbGVuYW1lLCAiZm9vLnR4dCIpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS53aW5lcnJvciwgTm9uZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gIm50IiwgIldpbmRvd3Mtc3BlY2lmaWMgdGVzdCIpCisgICAgZGVmIHRlc3RfZXJybm9fdHJhbnNsYXRpb24oc2VsZik6CisgICAgICAgICMgRVJST1JfQUxSRUFEWV9FWElTVFMgKDE4MykgLT4gRUVYSVNUCisgICAgICAgIGUgPSBPU0Vycm9yKDAsICJGaWxlIGFscmVhZHkgZXhpc3RzIiwgImZvby50eHQiLCAxODMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS53aW5lcnJvciwgMTgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIEVFWElTVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sIEVFWElTVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnN0cmVycm9yLCAiRmlsZSBhbHJlYWR5IGV4aXN0cyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maWxlbmFtZSwgImZvby50eHQiKQorCisgICAgZGVmIHRlc3RfYmxvY2tpbmdpb2Vycm9yKHNlbGYpOgorICAgICAgICBhcmdzID0gKCJhIiwgImIiLCAiYyIsICJkIiwgImUiKQorICAgICAgICBmb3IgbiBpbiByYW5nZSg2KToKKyAgICAgICAgICAgIGUgPSBCbG9ja2luZ0lPRXJyb3IoKmFyZ3NbOm5dKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgZS5jaGFyYWN0ZXJzX3dyaXR0ZW4KKyAgICAgICAgZSA9IEJsb2NraW5nSU9FcnJvcigiYSIsICJiIiwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmNoYXJhY3RlcnNfd3JpdHRlbiwgMykKKyAgICAgICAgZS5jaGFyYWN0ZXJzX3dyaXR0ZW4gPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5jaGFyYWN0ZXJzX3dyaXR0ZW4sIDUpCisKKyAgICAjIFhYWCBWTVNFcnJvciBub3QgdGVzdGVkCisKKworY2xhc3MgRXhwbGljaXRTdWJjbGFzc2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZXJybm9fbWFwcGluZyhzZWxmKToKKyAgICAgICAgIyBXaGVuIGNvbnN0cnVjdGluZyBhbiBPU0Vycm9yIHN1YmNsYXNzLCBlcnJubyBtYXBwaW5nIGlzbid0IGRvbmUKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3IoRUVYSVNULCAiQmFkIGZpbGUgZGVzY3JpcHRvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3ViT1NFcnJvcikKKworICAgIGRlZiB0ZXN0X2luaXRfb3ZlcnJpZGVuKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhJbml0KCJzb21lIG1lc3NhZ2UiLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJhciwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoInNvbWUgbWVzc2FnZSIsKSkKKworICAgIGRlZiB0ZXN0X2luaXRfa3dkYXJncyhzZWxmKToKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3JXaXRoSW5pdCgic29tZSBtZXNzYWdlIiwgYmFyPSJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmFyLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfbmV3X292ZXJyaWRlbihzZWxmKToKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3JXaXRoTmV3KCJzb21lIG1lc3NhZ2UiLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJheiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoInNvbWUgbWVzc2FnZSIsKSkKKworICAgIGRlZiB0ZXN0X25ld19rd2RhcmdzKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhOZXcoInNvbWUgbWVzc2FnZSIsIGJhej0iYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJheiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoInNvbWUgbWVzc2FnZSIsKSkKKworICAgIGRlZiB0ZXN0X2luaXRfbmV3X292ZXJyaWRlbihzZWxmKToKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3JDb21iaW5lZEluaXRGaXJzdCgic29tZSBtZXNzYWdlIiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmF6LCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorICAgICAgICBlID0gU3ViT1NFcnJvckNvbWJpbmVkTmV3Rmlyc3QoInNvbWUgbWVzc2FnZSIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmFyLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJheiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoInNvbWUgbWVzc2FnZSIsKSkKKworICAgIGRlZiB0ZXN0X2luaXRfc3RhbmRhbG9uZShzZWxmKToKKyAgICAgICAgIyBfX2luaXRfXyBkb2Vzbid0IHByb3BhZ2F0ZSB0byBPU0Vycm9yLl9faW5pdF9fIChzZWUgaXNzdWUgIzE1MjI5KQorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhTdGFuZGFsb25lSW5pdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICcnKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKKworaWYgX19uYW1lX189PSJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU2OWUxMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CkBAIC0wLDAgKzEsOTY1IEBACisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorCisiIiIKK1Rlc3Qgc3VpdGUgZm9yIFBFUCAzODAgaW1wbGVtZW50YXRpb24KKworYWRhcHRlZCBmcm9tIG9yaWdpbmFsIHRlc3RzIHdyaXR0ZW4gYnkgR3JlZyBFd2luZworc2VlIDxodHRwOi8vd3d3LmNvc2MuY2FudGVyYnVyeS5hYy5uei9ncmVnLmV3aW5nL3B5dGhvbi95aWVsZC1mcm9tL1lpZWxkRnJvbS1QeXRob24zLjEuMi1yZXY1LnppcD4KKyIiIgorCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBpbworaW1wb3J0IHN5cworaW1wb3J0IGluc3BlY3QKK2ltcG9ydCBwYXJzZXIKKworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZGVycgorCitjbGFzcyBUZXN0UEVQMzgwT3BlcmF0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHNlbWFudGljcy4KKyAgICAiIiIKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpb25fb2ZfaW5pdGlhbF9uZXh0X3RvX3N1YmdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGlvbiBvZiBpbml0aWFsIG5leHQoKSBjYWxsIHRvIHN1YmdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICB5aWVsZCA0MgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICBmb3IgeCBpbiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCA0MiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfcmFpc2luZ19leGNlcHRpb25faW5faW5pdGlhbF9uZXh0X2NhbGwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHJhaXNpbmcgZXhjZXB0aW9uIGluIGluaXRpYWwgbmV4dCgpIGNhbGwKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3BhbmlzaCBpbnF1aXNpdGlvbiBvY2N1cnJlZCIpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIHggaW4gZzEoKToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCAic3BhbmlzaCBpbnF1aXNpdGlvbiBvY2N1cnJlZCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGlvbl9vZl9uZXh0X2NhbGxfdG9fc3ViZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW9uIG9mIG5leHQoKSBjYWxsIHRvIHN1YmdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGVnZ3MiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX2V4Y2VwdGlvbl9pbl9kZWxlZ2F0ZWRfbmV4dF9jYWxsKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCByYWlzaW5nIGV4Y2VwdGlvbiBpbiBkZWxlZ2F0ZWQgbmV4dCgpIGNhbGwKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJob3ZlcmNyYWZ0IGlzIGZ1bGwgb2YgZWVscyIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgeCBpbiBnMSgpOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJob3ZlcmNyYWZ0IGlzIGZ1bGwgb2YgZWVscyIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGlvbl9vZl9zZW5kKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW9uIG9mIHNlbmQoKQorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzEgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICBnID0gZzEoKQorICAgICAgICB5ID0gbmV4dChnKQorICAgICAgICB4ID0gMQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgIHkgPSBnLnNlbmQoeCkKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHksKSkKKyAgICAgICAgICAgICAgICB4ICs9IDEKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJnMSByZWNlaXZlZCAxIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJnMiByZWNlaXZlZCAyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiZzIgcmVjZWl2ZWQgMyIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGVnZ3MiLAorICAgICAgICAgICAgImcxIHJlY2VpdmVkIDQiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9oYW5kbGluZ19leGNlcHRpb25fd2hpbGVfZGVsZWdhdGluZ19zZW5kKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBoYW5kbGluZyBleGNlcHRpb24gd2hpbGUgZGVsZWdhdGluZyAnc2VuZCcKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB4ID0geWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICB4ID0geWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJob3ZlcmNyYWZ0IGlzIGZ1bGwgb2YgZWVscyIpCisgICAgICAgICAgICB4ID0geWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGcxKCkKKyAgICAgICAgICAgIHkgPSBuZXh0KGcpCisgICAgICAgICAgICB4ID0gMQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgICAgIHkgPSBnLnNlbmQoeCkKKyAgICAgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh5LCkpCisgICAgICAgICAgICAgICAgICAgIHggKz0gMQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdG9wSXRlcmF0aW9uIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcixydW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJnMSByZWNlaXZlZCAxIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJnMiByZWNlaXZlZCAyIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpbmdfY2xvc2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpbmcgJ2Nsb3NlJworICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgZyA9IGcxKCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgICAgICB4ID0gbmV4dChnKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIGcuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIgorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfaGFuZGluZ19leGNlcHRpb25fd2hpbGVfZGVsZWdhdGluZ19jbG9zZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgaGFuZGxpbmcgZXhjZXB0aW9uIHdoaWxlIGRlbGVnYXRpbmcgJ2Nsb3NlJworICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJueWJibGVzIGhhdmUgZXhwbG9kZWQgd2l0aCBkZWxpZ2h0IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZyA9IGcxKCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgICAgIHggPSBuZXh0KGcpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgICAgICBnLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCAibnliYmxlcyBoYXZlIGV4cGxvZGVkIHdpdGggZGVsaWdodCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5fX2NvbnRleHRfXywgR2VuZXJhdG9yRXhpdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW5nX3Rocm93KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW5nICd0aHJvdycKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGcgPSBnMSgpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgICAgICB4ID0gbmV4dChnKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgZSA9IFZhbHVlRXJyb3IoInRvbWF0byBlamVjdGVkIikKKyAgICAgICAgICAgIGcudGhyb3coZSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCAidG9tYXRvIGVqZWN0ZWQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIFZhbHVlRXJyb3IiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3ZhbHVlX2F0dHJpYnV0ZV9vZl9TdG9wSXRlcmF0aW9uX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgJ3ZhbHVlJyBhdHRyaWJ1dGUgb2YgU3RvcEl0ZXJhdGlvbiBleGNlcHRpb24KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIHBleChlKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiJXM6ICVzIiAlIChlLl9fY2xhc3NfXy5fX25hbWVfXywgZSkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoInZhbHVlID0gJXMiICUgKGUudmFsdWUsKSkKKyAgICAgICAgZSA9IFN0b3BJdGVyYXRpb24oKQorICAgICAgICBwZXgoZSkKKyAgICAgICAgZSA9IFN0b3BJdGVyYXRpb24oInNwYW0iKQorICAgICAgICBwZXgoZSkKKyAgICAgICAgZS52YWx1ZSA9ICJlZ2dzIgorICAgICAgICBwZXgoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbjogIiwKKyAgICAgICAgICAgICJ2YWx1ZSA9IE5vbmUiLAorICAgICAgICAgICAgIlN0b3BJdGVyYXRpb246IHNwYW0iLAorICAgICAgICAgICAgInZhbHVlID0gc3BhbSIsCisgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbjogc3BhbSIsCisgICAgICAgICAgICAidmFsdWUgPSBlZ2dzIiwKKyAgICAgICAgXSkKKworCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uX3ZhbHVlX2NyYXNoKHNlbGYpOgorICAgICAgICAjIFRoZXJlIHVzZWQgdG8gYmUgYSByZWZjb3VudCBlcnJvciB3aGVuIHRoZSByZXR1cm4gdmFsdWUKKyAgICAgICAgIyBzdG9yZWQgaW4gdGhlIFN0b3BJdGVyYXRpb24gaGFzIGEgcmVmY291bnQgb2YgMS4KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB5aWVsZCAiZzIiCisgICAgICAgICAgICByZXR1cm4gWzQyXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZzEoKSksIFsiZzIiXSkKKworCisgICAgZGVmIHRlc3RfZ2VuZXJhdG9yX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZ2VuZXJhdG9yIHJldHVybiB2YWx1ZQorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgIHJldCA9IHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZXR1cm5lZCAlcyIgJSAocmV0LCkpCisgICAgICAgICAgICByZXQgPSB5aWVsZCBmcm9tIGcyKDQyKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZXR1cm5lZCAlcyIgJSAocmV0LCkpCisgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKHYgPSBOb25lKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICAgICAgaWYgdjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdgorICAgICAgICBmb3IgeCBpbiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBtb3JlIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiZzIgcmV0dXJuZWQgTm9uZSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBtb3JlIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiZzIgcmV0dXJuZWQgNDIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgZWdncyIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpb25fb2ZfbmV4dF90b19ub25fZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW9uIG9mIG5leHQoKSB0byBub24tZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIHJhbmdlKDMpCisgICAgICAgIGZvciB4IGluIGcoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJZaWVsZGVkIDAiLAorICAgICAgICAgICAgIllpZWxkZWQgMSIsCisgICAgICAgICAgICAiWWllbGRlZCAyIiwKKyAgICAgICAgXSkKKworCisgICAgZGVmIHRlc3RfY29udmVyc2lvbl9vZl9zZW5kTm9uZV90b19uZXh0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBjb252ZXJzaW9uIG9mIHNlbmQoTm9uZSkgdG8gbmV4dCgpCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIHJhbmdlKDMpCisgICAgICAgIGdpID0gZygpCisgICAgICAgIGZvciB4IGluIHJhbmdlKDMpOgorICAgICAgICAgICAgeSA9IGdpLnNlbmQoTm9uZSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZDogJXMiICUgKHksKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiWWllbGRlZDogMCIsCisgICAgICAgICAgICAiWWllbGRlZDogMSIsCisgICAgICAgICAgICAiWWllbGRlZDogMiIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW9uX29mX2Nsb3NlX3RvX25vbl9nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2YgY2xvc2UoKSB0byBub24tZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJzdGFydGluZyBnIikKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHJhbmdlKDMpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHNob3VsZCBub3QgYmUgaGVyZSIpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZmluaXNoaW5nIGciKQorICAgICAgICBnaSA9IGcoKQorICAgICAgICBuZXh0KGdpKQorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIG91dHB1dDoKKyAgICAgICAgICAgIGdpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgInN0YXJ0aW5nIGciLAorICAgICAgICAgICAgImZpbmlzaGluZyBnIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpbmdfdGhyb3dfdG9fbm9uX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGluZyAndGhyb3cnIHRvIG5vbi1nZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGciKQorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMTApCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgeCA9IG5leHQoZ2kpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgICAgICBlID0gVmFsdWVFcnJvcigidG9tYXRvIGVqZWN0ZWQiKQorICAgICAgICAgICAgZ2kudGhyb3coZSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCJ0b21hdG8gZWplY3RlZCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGciLAorICAgICAgICAgICAgIllpZWxkZWQgMCIsCisgICAgICAgICAgICAiWWllbGRlZCAxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDIiLAorICAgICAgICAgICAgIllpZWxkZWQgMyIsCisgICAgICAgICAgICAiWWllbGRlZCA0IiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZyIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9hdHRlbXB0aW5nX3RvX3NlbmRfdG9fbm9uX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgYXR0ZW1wdGluZyB0byBzZW5kIHRvIG5vbi1nZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoInN0YXJ0aW5nIGciKQorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMykKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc2hvdWxkIG5vdCBiZSBoZXJlIikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmaW5pc2hpbmcgZyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGdpID0gZygpCisgICAgICAgICAgICBuZXh0KGdpKQorICAgICAgICAgICAgZm9yIHggaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICAgICAgeSA9IGdpLnNlbmQoNDIpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTaG91bGQgbm90IGhhdmUgeWllbGRlZDoiLCB5KQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNlbmQiLCBlLmFyZ3NbMF0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIndhcyBhYmxlIHRvIHNlbmQgaW50byBub24tZ2VuZXJhdG9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAic3RhcnRpbmcgZyIsCisgICAgICAgICAgICAiZmluaXNoaW5nIGciLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX2dldGF0dHJfaGFuZGxpbmcoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHN1Yml0ZXJhdG9yIHdpdGggYSBicm9rZW4gZ2V0YXR0ciBpbXBsZW1lbnRhdGlvbgorICAgICAgICAiIiIKKyAgICAgICAgY2xhc3MgQnJva2VuOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSBCcm9rZW4oKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnaSksIDEpCisgICAgICAgICAgICBnaS5zZW5kKDEpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGdpKSwgMSkKKyAgICAgICAgICAgIGdpLnRocm93KEF0dHJpYnV0ZUVycm9yKQorCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnaSksIDEpCisgICAgICAgICAgICBnaS5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1plcm9EaXZpc2lvbkVycm9yJywgb3V0cHV0LmdldHZhbHVlKCkpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25faW5faW5pdGlhbF9uZXh0X2NhbGwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGV4Y2VwdGlvbiBpbiBpbml0aWFsIG5leHQoKSBjYWxsCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSBhYm91dCB0byB5aWVsZCBmcm9tIGcyIikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSBzaG91bGQgbm90IGJlIGhlcmUiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHlpZWxkIDEvMAorICAgICAgICBkZWYgcnVuKCk6CisgICAgICAgICAgICBnaSA9IGcxKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLHJ1bikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZzEgYWJvdXQgdG8geWllbGQgZnJvbSBnMiIKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2F0dGVtcHRlZF95aWVsZF9mcm9tX2xvb3Aoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGF0dGVtcHRlZCB5aWVsZC1mcm9tIGxvb3AKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxOiBzdGFydGluZyIpCisgICAgICAgICAgICB5aWVsZCAieTEiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxOiBhYm91dCB0byB5aWVsZCBmcm9tIGcyIikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSBzaG91bGQgbm90IGJlIGhlcmUiKQorCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMjogc3RhcnRpbmciKQorICAgICAgICAgICAgeWllbGQgInkyIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMjogYWJvdXQgdG8geWllbGQgZnJvbSBnMSIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGdpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHNob3VsZCBub3QgYmUgaGVyZSIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGdpID0gZzEoKQorICAgICAgICAgICAgZm9yIHkgaW4gZ2k6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkOiAlcyIgJSAoeSwpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sImdlbmVyYXRvciBhbHJlYWR5IGV4ZWN1dGluZyIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBkaWRuJ3QgcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgImcxOiBzdGFydGluZyIsCisgICAgICAgICAgICAiWWllbGRlZDogeTEiLAorICAgICAgICAgICAgImcxOiBhYm91dCB0byB5aWVsZCBmcm9tIGcyIiwKKyAgICAgICAgICAgICJnMjogc3RhcnRpbmciLAorICAgICAgICAgICAgIllpZWxkZWQ6IHkyIiwKKyAgICAgICAgICAgICJnMjogYWJvdXQgdG8geWllbGQgZnJvbSBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9yZXR1cm5pbmdfdmFsdWVfZnJvbV9kZWxlZ2F0ZWRfdGhyb3coc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHJldHVybmluZyB2YWx1ZSBmcm9tIGRlbGVnYXRlZCAndGhyb3cnCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGV4Y2VwdCBMdW5jaEVycm9yOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiQ2F1Z2h0IEx1bmNoRXJyb3IgaW4gZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBsdW5jaCBzYXZlZCIKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgeWV0IG1vcmUgc3BhbSIKKyAgICAgICAgY2xhc3MgTHVuY2hFcnJvcihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworICAgICAgICBnID0gZzEoKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHggPSBuZXh0KGcpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgZSA9IEx1bmNoRXJyb3IoInRvbWF0byBlamVjdGVkIikKKyAgICAgICAgZy50aHJvdyhlKQorICAgICAgICBmb3IgeCBpbiBnOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiQ2F1Z2h0IEx1bmNoRXJyb3IgaW4gZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgeWV0IG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBlZ2dzIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbmV4dF9hbmRfcmV0dXJuX3dpdGhfdmFsdWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IG5leHQgYW5kIHJldHVybiB3aXRoIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKHIpOgorICAgICAgICAgICAgZ2kgPSBnKHIpCisgICAgICAgICAgICBuZXh0KGdpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiByZXN1bWluZyBnIikKKyAgICAgICAgICAgICAgICBuZXh0KGdpKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBTSE9VTEQgTk9UIEJFIEhFUkUiKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImYgY2F1Z2h0ICVzIiAlIChyZXByKGUpLCkpCisgICAgICAgIGRlZiBnKHIpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHN0YXJ0aW5nIikKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmV0dXJuaW5nICVzIiAlIChyLCkpCisgICAgICAgICAgICByZXR1cm4gcgorICAgICAgICBmKE5vbmUpCisgICAgICAgIGYoNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgImcgc3RhcnRpbmciLAorICAgICAgICAgICAgImYgcmVzdW1pbmcgZyIsCisgICAgICAgICAgICAiZyByZXR1cm5pbmcgTm9uZSIsCisgICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbigpIiwKKyAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJmIHJlc3VtaW5nIGciLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nIDQyIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKDQyLCkiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hbmRfcmV0dXJuX3dpdGhfdmFsdWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHNlbmQgYW5kIHJldHVybiB3aXRoIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKHIpOgorICAgICAgICAgICAgZ2kgPSBnKHIpCisgICAgICAgICAgICBuZXh0KGdpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBzZW5kaW5nIHNwYW0gdG8gZyIpCisgICAgICAgICAgICAgICAgZ2kuc2VuZCgic3BhbSIpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIFNIT1VMRCBOT1QgQkUgSEVSRSIpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBjYXVnaHQgJXIiICUgKGUsKSkKKyAgICAgICAgZGVmIGcocik6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc3RhcnRpbmciKQorICAgICAgICAgICAgeCA9IHlpZWxkCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZXR1cm5pbmcgJXMiICUgKHIsKSkKKyAgICAgICAgICAgIHJldHVybiByCisgICAgICAgIGYoTm9uZSkKKyAgICAgICAgZig0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZyBzdGFydGluZyIsCisgICAgICAgICAgICAiZiBzZW5kaW5nIHNwYW0gdG8gZyIsCisgICAgICAgICAgICAiZyByZWNlaXZlZCBzcGFtIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyBOb25lIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKCkiLAorICAgICAgICAgICAgImcgc3RhcnRpbmciLAorICAgICAgICAgICAgImYgc2VuZGluZyBzcGFtIHRvIGciLAorICAgICAgICAgICAgImcgcmVjZWl2ZWQgc3BhbSIsCisgICAgICAgICAgICAiZyByZXR1cm5pbmcgNDIiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oNDIsKSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9jYXRjaGluZ19leGNlcHRpb25fZnJvbV9zdWJnZW5fYW5kX3JldHVybmluZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHRocm93biBpbnRvIGEKKyAgICAgICAgc3ViZ2VuZXJhdG9yIGFuZCByZXR1cm5pbmcgYSB2YWx1ZQorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImlubmVyIGNhdWdodCBWYWx1ZUVycm9yIikKKyAgICAgICAgICAgIHJldHVybiAyCisKKyAgICAgICAgZGVmIG91dGVyKCk6CisgICAgICAgICAgICB2ID0geWllbGQgZnJvbSBpbm5lcigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImlubmVyIHJldHVybmVkICVyIHRvIG91dGVyIiAlIHYpCisgICAgICAgICAgICB5aWVsZCB2CisgICAgICAgIGcgPSBvdXRlcigpCisgICAgICAgIHRyYWNlLmFwcGVuZChuZXh0KGcpKQorICAgICAgICB0cmFjZS5hcHBlbmQoZy50aHJvdyhWYWx1ZUVycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgImlubmVyIGNhdWdodCBWYWx1ZUVycm9yIiwKKyAgICAgICAgICAgICJpbm5lciByZXR1cm5lZCAyIHRvIG91dGVyIiwKKyAgICAgICAgICAgIDIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF90aHJvd2luZ19HZW5lcmF0b3JFeGl0X2ludG9fc3ViZ2VuX3RoYXRfcmV0dXJucyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhyb3dpbmcgR2VuZXJhdG9yRXhpdCBpbnRvIGEgc3ViZ2VuZXJhdG9yIHRoYXQKKyAgICAgICAgY2F0Y2hlcyBpdCBhbmQgcmV0dXJucyBub3JtYWxseS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGYiKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGYiKQorICAgICAgICAgICAgZXhjZXB0IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGciKQorICAgICAgICAgICAgeWllbGQgZnJvbSBmKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBnaS50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgR2VuZXJhdG9yRXhpdDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBHZW5lcmF0b3JFeGl0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiRW50ZXIgZyIsCisgICAgICAgICAgICAiRW50ZXIgZiIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF90aHJvd2luZ19HZW5lcmF0b3JFeGl0X2ludG9fc3ViZ2VuZXJhdG9yX3RoYXRfeWllbGRzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aHJvd2luZyBHZW5lcmF0b3JFeGl0IGludG8gYSBzdWJnZW5lcmF0b3IgdGhhdAorICAgICAgICBjYXRjaGVzIGl0IGFuZCB5aWVsZHMuCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFbnRlciBmIikKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBmIikKKyAgICAgICAgICAgIGV4Y2VwdCBHZW5lcmF0b3JFeGl0OgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGciKQorICAgICAgICAgICAgeWllbGQgZnJvbSBmKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBnaS50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgImdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIEdlbmVyYXRvckV4aXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJFbnRlciBnIiwKKyAgICAgICAgICAgICJFbnRlciBmIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3Rocm93aW5nX0dlbmVyYXRvckV4aXRfaW50b19zdWJnZW5fdGhhdF9yYWlzZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRocm93aW5nIEdlbmVyYXRvckV4aXQgaW50byBhIHN1YmdlbmVyYXRvciB0aGF0CisgICAgICAgIGNhdGNoZXMgaXQgYW5kIHJhaXNlcyBhIGRpZmZlcmVudCBleGNlcHRpb24uCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFbnRlciBmIikKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBmIikKKyAgICAgICAgICAgIGV4Y2VwdCBHZW5lcmF0b3JFeGl0OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlZvcnBhbCBidW5ueSBlbmNvdW50ZXJlZCIpCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGciKQorICAgICAgICAgICAgeWllbGQgZnJvbSBmKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBnaS50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJWb3JwYWwgYnVubnkgZW5jb3VudGVyZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuX19jb250ZXh0X18sIEdlbmVyYXRvckV4aXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIkVudGVyIGciLAorICAgICAgICAgICAgIkVudGVyIGYiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfeWllbGRfZnJvbV9lbXB0eShzZWxmKToKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgZygpKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGluZ19nZW5lcmF0b3JzX2NsYWltX3RvX2JlX3J1bm5pbmcoc2VsZik6CisgICAgICAgICMgQ2hlY2sgd2l0aCBiYXNpYyBpdGVyYXRpb24KKyAgICAgICAgZGVmIG9uZSgpOgorICAgICAgICAgICAgeWllbGQgMAorICAgICAgICAgICAgeWllbGQgZnJvbSB0d28oKQorICAgICAgICAgICAgeWllbGQgMworICAgICAgICBkZWYgdHdvKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgeWllbGQgMgorICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnMSksIFswLCAxLCAyLCAzXSkKKyAgICAgICAgIyBDaGVjayB3aXRoIHNlbmQKKyAgICAgICAgZzEgPSBvbmUoKQorICAgICAgICByZXMgPSBbbmV4dChnMSldCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChnMS5zZW5kKDQyKSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbMCwgMSwgMiwgM10pCisgICAgICAgICMgQ2hlY2sgd2l0aCB0aHJvdworICAgICAgICBjbGFzcyBNeUVycihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMAorICAgICAgICAgICAgZXhjZXB0IE15RXJyOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHlpZWxkIGZyb20gdHdvKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBkZWYgdHdvKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZXhjZXB0IE15RXJyOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcxCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgZXhjZXB0IE15RXJyOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZzEgPSBvbmUoKQorICAgICAgICByZXMgPSBbbmV4dChnMSldCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChnMS50aHJvdyhNeUVycikpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICAjIENoZWNrIHdpdGggY2xvc2UKKyAgICAgICAgY2xhc3MgTXlJdChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDQyCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZl8pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnMS5naV9ydW5uaW5nKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5leHQsIGcxKQorICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIE15SXQoKQorICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIG5leHQoZzEpCisgICAgICAgIGcxLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRvcl9pc192aXNpYmxlX3RvX2RlYnVnZ2VyKHNlbGYpOgorICAgICAgICBkZWYgY2FsbF9zdGFjaygpOgorICAgICAgICAgICAgcmV0dXJuIFtmWzNdIGZvciBmIGluIGluc3BlY3Quc3RhY2soKV0KKworICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCBjYWxsX3N0YWNrKCkKKyAgICAgICAgICAgIHlpZWxkIGNhbGxfc3RhY2soKQorICAgICAgICAgICAgeWllbGQgY2FsbF9zdGFjaygpCisKKyAgICAgICAgZGVmIHNwYW0oZyk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIGcKKworICAgICAgICBkZWYgZWdncyhnKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZworCisgICAgICAgIGZvciBzdGFjayBpbiBzcGFtKGdlbigpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnc3BhbScgaW4gc3RhY2spCisKKyAgICAgICAgZm9yIHN0YWNrIGluIHNwYW0oZWdncyhnZW4oKSkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdzcGFtJyBpbiBzdGFjayBhbmQgJ2VnZ3MnIGluIHN0YWNrKQorCisgICAgZGVmIHRlc3RfY3VzdG9tX2l0ZXJhdG9yX3JldHVybihzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE1NTY4CisgICAgICAgIGNsYXNzIE15SXRlcjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oNDIpCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIHJldAorICAgICAgICAgICAgcmV0ID0geWllbGQgZnJvbSBNeUl0ZXIoKQorICAgICAgICByZXQgPSBOb25lCisgICAgICAgIGxpc3QoZ2VuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LCA0MikKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisgICAgdGVzdF9jbGFzc2VzID0gW1Rlc3RQRVAzODBPcGVyYXRpb25dCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weSBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CmluZGV4IDlkYTJjYWUuLmY1MmQ0YmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGlvCitpbXBvcnQgY29sbGVjdGlvbnMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTcsNiArOCw3IEBACiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBpY2tsZU1vZHVsZVRlc3RzCiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBlcnNpc3RlbnRQaWNrbGVyVGVzdHMKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlclVucGlja2xlck9iamVjdFRlc3RzCitmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdERpc3BhdGNoVGFibGVUZXN0cwogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgQmlnbWVtUGlja2xlVGVzdHMKIAogdHJ5OgpAQCAtODAsNiArODIsMTggQEAKICAgICB1bnBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuX1VucGlja2xlcgogCiAKK2NsYXNzIFB5RGlzcGF0Y2hUYWJsZVRlc3RzKEFic3RyYWN0RGlzcGF0Y2hUYWJsZVRlc3RzKToKKyAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLl9QaWNrbGVyCisgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHBpY2tsZS5kaXNwYXRjaF90YWJsZS5jb3B5KCkKKworCitjbGFzcyBQeUNoYWluRGlzcGF0Y2hUYWJsZVRlc3RzKEFic3RyYWN0RGlzcGF0Y2hUYWJsZVRlc3RzKToKKyAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLl9QaWNrbGVyCisgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLkNoYWluTWFwKHt9LCBwaWNrbGUuZGlzcGF0Y2hfdGFibGUpCisKKwogaWYgaGFzX2NfaW1wbGVtZW50YXRpb246CiAgICAgY2xhc3MgQ1BpY2tsZXJUZXN0cyhQeVBpY2tsZXJUZXN0cyk6CiAgICAgICAgIHBpY2tsZXIgPSBfcGlja2xlLlBpY2tsZXIKQEAgLTEwMSwxNCArMTE1LDI2IEBACiAgICAgICAgIHBpY2tsZXJfY2xhc3MgPSBfcGlja2xlLlBpY2tsZXIKICAgICAgICAgdW5waWNrbGVyX2NsYXNzID0gX3BpY2tsZS5VbnBpY2tsZXIKIAorICAgIGNsYXNzIENEaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgICAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLlBpY2tsZXIKKyAgICAgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUuZGlzcGF0Y2hfdGFibGUuY29weSgpCisKKyAgICBjbGFzcyBDQ2hhaW5EaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgICAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLlBpY2tsZXIKKyAgICAgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5DaGFpbk1hcCh7fSwgcGlja2xlLmRpc3BhdGNoX3RhYmxlKQorCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0cyA9IFtQaWNrbGVUZXN0cywgUHlQaWNrbGVyVGVzdHMsIFB5UGVyc1BpY2tsZXJUZXN0c10KKyAgICB0ZXN0cyA9IFtQaWNrbGVUZXN0cywgUHlQaWNrbGVyVGVzdHMsIFB5UGVyc1BpY2tsZXJUZXN0cywKKyAgICAgICAgICAgICBQeURpc3BhdGNoVGFibGVUZXN0cywgUHlDaGFpbkRpc3BhdGNoVGFibGVUZXN0c10KICAgICBpZiBoYXNfY19pbXBsZW1lbnRhdGlvbjoKICAgICAgICAgdGVzdHMuZXh0ZW5kKFtDUGlja2xlclRlc3RzLCBDUGVyc1BpY2tsZXJUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICBDRHVtcFBpY2tsZV9Mb2FkUGlja2xlLCBEdW1wUGlja2xlX0NMb2FkUGlja2xlLAogICAgICAgICAgICAgICAgICAgICAgIFB5UGlja2xlclVucGlja2xlck9iamVjdFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgIENQaWNrbGVyVW5waWNrbGVyT2JqZWN0VGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgQ0Rpc3BhdGNoVGFibGVUZXN0cywgQ0NoYWluRGlzcGF0Y2hUYWJsZVRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgIEluTWVtb3J5UGlja2xlVGVzdHNdKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHBpY2tsZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CmluZGV4IGQ1Yjg4NmYuLjZhN2I0NWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waXBlcy5weQpAQCAtNzksMjEgKzc5LDYgQEAKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGQpCiAKLSAgICBkZWYgdGVzdFF1b3Rpbmcoc2VsZik6Ci0gICAgICAgIHNhZmV1bnF1b3RlZCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdAJV8tKz06LC4vJwotICAgICAgICB1bmljb2RlX3NhbXBsZSA9ICdceGU5XHhlMFx4ZGYnICAjIGUgKyBhY3V0ZSBhY2NlbnQsIGEgKyBncmF2ZSwgc2hhcnAgcwotICAgICAgICB1bnNhZmUgPSAnImAkXFwhJyArIHVuaWNvZGVfc2FtcGxlCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZSgnJyksICInJyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoc2FmZXVucXVvdGVkKSwgc2FmZXVucXVvdGVkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBpcGVzLnF1b3RlKCd0ZXN0IGZpbGUgbmFtZScpLCAiJ3Rlc3QgZmlsZSBuYW1lJyIpCi0gICAgICAgIGZvciB1IGluIHVuc2FmZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoJ3Rlc3Qlc25hbWUnICUgdSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3Qlc25hbWUnIiAlIHUpCi0gICAgICAgIGZvciB1IGluIHVuc2FmZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoInRlc3QlcyduYW1lJyIgJSB1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIid0ZXN0JXMnXCInXCInbmFtZSdcIidcIicnIiAlIHUpCi0KICAgICBkZWYgdGVzdFJlcHIoc2VsZik6CiAgICAgICAgIHQgPSBwaXBlcy5UZW1wbGF0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih0KSwgIjxUZW1wbGF0ZSBpbnN0YW5jZSwgc3RlcHM9W10+IikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtnLnB5IGIvTGliL3Rlc3QvdGVzdF9wa2cucHkKaW5kZXggYTRkZGIxNS4uMzU1ZWZlNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2cucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2cucHkKQEAgLTIzLDYgKzIzLDggQEAKIGRlZiBmaXhkaXIobHN0KToKICAgICBpZiAiX19idWlsdGluc19fIiBpbiBsc3Q6CiAgICAgICAgIGxzdC5yZW1vdmUoIl9fYnVpbHRpbnNfXyIpCisgICAgaWYgIl9faW5pdGlhbGl6aW5nX18iIGluIGxzdDoKKyAgICAgICAgbHN0LnJlbW92ZSgiX19pbml0aWFsaXppbmdfXyIpCiAgICAgcmV0dXJuIGxzdAogCiAKQEAgLTE5NiwxNCArMTk4LDE1IEBACiAKICAgICAgICAgaW1wb3J0IHQ1CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJywgJ2ZvbycsICdzdHJpbmcnLCAndDUnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJywgJ2ZvbycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcnLCAndDUnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ1LmZvbykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ3N0cmluZyddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnc3RyaW5nJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NS5zdHJpbmcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX25hbWVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXycsICdzcGFtJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdzcGFtJ10pCiAKICAgICBkZWYgdGVzdF82KHNlbGYpOgogICAgICAgICBoaWVyID0gWwpAQCAtMjE5LDE0ICsyMjIsMTQgQEAKICAgICAgICAgaW1wb3J0IHQ2CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NikpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19hbGxfXycsICdfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nLCAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKICAgICAgICAgcyA9ICIiIgogICAgICAgICAgICAgaW1wb3J0IHQ2CiAgICAgICAgICAgICBmcm9tIHQ2IGltcG9ydCAqCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIodDYpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2FsbF9fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VnZ3MnLCAnaGFtJywgJ3NwYW0nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhdGhfXycsICdlZ2dzJywgJ2hhbScsICdzcGFtJ10pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcigpLCBbJ2VnZ3MnLCAnaGFtJywgJ3NlbGYnLCAnc3BhbScsICd0NiddKQogICAgICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYucnVuX2NvZGUocykKQEAgLTI1MiwxOSArMjU1LDE5IEBACiAgICAgICAgIHQ3LCBzdWIsIHN1YnN1YiA9IE5vbmUsIE5vbmUsIE5vbmUKICAgICAgICAgaW1wb3J0IHQ3IGFzIHRhcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIodGFzKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodDcpCiAgICAgICAgIGZyb20gdDcgaW1wb3J0IHN1YiBhcyBzdWJwYXIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHN1YnBhcikpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQ3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN1YikKICAgICAgICAgZnJvbSB0Ny5zdWIgaW1wb3J0IHN1YnN1YiBhcyBzdWJzdWJzdWIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHN1YnN1YnN1YikpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnc3BhbSddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnc3BhbSddKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQ3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN1YikKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdWJzdWIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CmluZGV4IGMzN2U5MzYuLmE4NDI2YjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gaW1wIGltcG9ydCBjYWNoZV9mcm9tX3NvdXJjZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY3JlYXRlX2VtcHR5X2ZpbGUKIAogY2xhc3MgVGVzdEltcG9ydCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAgc2VsZi5wYWNrYWdlX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFja2FnZV9uYW1lKQogICAgICAgICBvcy5ta2RpcihzZWxmLnBhY2thZ2VfZGlyKQotICAgICAgICBvcGVuKG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfZGlyLCAnX19pbml0X18ucHknKSwgJ3cnKS5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfZGlyLCAnX19pbml0X18ucHknKSkKICAgICAgICAgc2VsZi5tb2R1bGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfZGlyLCAnZm9vLnB5JykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQppbmRleCAzYjcyZjA2Li44OGUyZDMzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgdW5sb2FkCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bmxvYWQsIGNoZWNrX3dhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBpbXAKQEAgLTksNyArOSwxMSBAQAogaW1wb3J0IHNodXRpbAogaW1wb3J0IHppcGZpbGUKIAotCisjIE5vdGU6IHBrZ3V0aWwud2Fsa19wYWNrYWdlcyBpcyBjdXJyZW50bHkgdGVzdGVkIGluIHRlc3RfcnVucHkuIFRoaXMgaXMKKyMgYSBoYWNrIHRvIGdldCBhIG1ham9yIGlzc3VlIHJlc29sdmVkIGZvciAzLjNiMi4gTG9uZ2VyIHRlcm0sIGl0IHNob3VsZAorIyBiZSBtb3ZlZCBiYWNrIGhlcmUsIHBlcmhhcHMgYnkgZmFjdG9yaW5nIG91dCB0aGUgaGVscGVyIGNvZGUgZm9yCisjIGNyZWF0aW5nIGludGVyZXN0aW5nIHBhY2thZ2UgbGF5b3V0cyB0byBhIHNlcGFyYXRlIG1vZHVsZS4KKyMgSXNzdWUgIzE1MzQ4IGRlY2xhcmVzIHRoaXMgaXMgaW5kZWVkIGEgZG9kZ3kgaGFjayA7KQogCiBjbGFzcyBQa2d1dGlsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xMzgsMTAgKzE0MiwxMSBAQAogICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2ZvbyddCiAKIAorIyBUaGVzZSB0ZXN0cywgZXNwZWNpYWxseSB0aGUgc2V0dXAgYW5kIGNsZWFudXAsIGFyZSBoaWRlb3VzLiBUaGV5CisjIG5lZWQgdG8gYmUgY2xlYW5lZCB1cCBvbmNlIGlzc3VlIDE0NzE1IGlzIGFkZHJlc3NlZC4KIGNsYXNzIEV4dGVuZFBhdGhUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGNyZWF0ZV9pbml0KHNlbGYsIHBrZ25hbWUpOgogICAgICAgICBkaXJuYW1lID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBkaXJuYW1lKQogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgZGlybmFtZSkKIAogICAgICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgcGtnbmFtZSkKQEAgLTE1NiwyMiArMTYxLDEyIEBACiAgICAgICAgIHdpdGggb3Blbihtb2R1bGVfbmFtZSwgJ3cnKSBhcyBmbDoKICAgICAgICAgICAgIHByaW50KCd2YWx1ZT17fScuZm9ybWF0KHZhbHVlKSwgZmlsZT1mbCkKIAotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIyBDcmVhdGUgMiBkaXJlY3RvcmllcyBvbiBzeXMucGF0aAotICAgICAgICBzZWxmLnBrZ25hbWUgPSAnZm9vJwotICAgICAgICBzZWxmLmRpcm5hbWVfMCA9IHNlbGYuY3JlYXRlX2luaXQoc2VsZi5wa2duYW1lKQotICAgICAgICBzZWxmLmRpcm5hbWVfMSA9IHNlbGYuY3JlYXRlX2luaXQoc2VsZi5wa2duYW1lKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLSAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KLSAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmFyJ10KLSAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmF6J10KLQogICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKLSAgICAgICAgc2VsZi5jcmVhdGVfc3VibW9kdWxlKHNlbGYuZGlybmFtZV8wLCBzZWxmLnBrZ25hbWUsICdiYXInLCAwKQotICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoc2VsZi5kaXJuYW1lXzEsIHNlbGYucGtnbmFtZSwgJ2JheicsIDEpCisgICAgICAgIHBrZ25hbWUgPSAnZm9vJworICAgICAgICBkaXJuYW1lXzAgPSBzZWxmLmNyZWF0ZV9pbml0KHBrZ25hbWUpCisgICAgICAgIGRpcm5hbWVfMSA9IHNlbGYuY3JlYXRlX2luaXQocGtnbmFtZSkKKyAgICAgICAgc2VsZi5jcmVhdGVfc3VibW9kdWxlKGRpcm5hbWVfMCwgcGtnbmFtZSwgJ2JhcicsIDApCisgICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShkaXJuYW1lXzEsIHBrZ25hbWUsICdiYXonLCAxKQogICAgICAgICBpbXBvcnQgZm9vLmJhcgogICAgICAgICBpbXBvcnQgZm9vLmJhegogICAgICAgICAjIEVuc3VyZSB3ZSByZWFkIHRoZSBleHBlY3RlZCB2YWx1ZXMKQEAgLTE4MCw4ICsxNzUsNDUgQEAKIAogICAgICAgICAjIEVuc3VyZSB0aGUgcGF0aCBpcyBzZXQgdXAgY29ycmVjdGx5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGZvby5fX3BhdGhfXyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKFtvcy5wYXRoLmpvaW4oc2VsZi5kaXJuYW1lXzAsIHNlbGYucGtnbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5kaXJuYW1lXzEsIHNlbGYucGtnbmFtZSldKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoW29zLnBhdGguam9pbihkaXJuYW1lXzAsIHBrZ25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRpcm5hbWVfMSwgcGtnbmFtZSldKSkKKworICAgICAgICAjIENsZWFudXAKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzApCisgICAgICAgIHNodXRpbC5ybXRyZWUoZGlybmFtZV8xKQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisgICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmFyJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmF6J10KKworICAgIGRlZiB0ZXN0X21peGVkX25hbWVzcGFjZShzZWxmKToKKyAgICAgICAgcGtnbmFtZSA9ICdmb28nCisgICAgICAgIGRpcm5hbWVfMCA9IHNlbGYuY3JlYXRlX2luaXQocGtnbmFtZSkKKyAgICAgICAgZGlybmFtZV8xID0gc2VsZi5jcmVhdGVfaW5pdChwa2duYW1lKQorICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoZGlybmFtZV8wLCBwa2duYW1lLCAnYmFyJywgMCkKKyAgICAgICAgIyBUdXJuIHRoaXMgaW50byBhIFBFUCA0MjAgbmFtZXNwYWNlIHBhY2thZ2UKKyAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbihkaXJuYW1lXzAsIHBrZ25hbWUsICdfX2luaXRfXy5weScpKQorICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoZGlybmFtZV8xLCBwa2duYW1lLCAnYmF6JywgMSkKKyAgICAgICAgaW1wb3J0IGZvby5iYXIKKyAgICAgICAgaW1wb3J0IGZvby5iYXoKKyAgICAgICAgIyBFbnN1cmUgd2UgcmVhZCB0aGUgZXhwZWN0ZWQgdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmJhci52YWx1ZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uYmF6LnZhbHVlLCAxKQorCisgICAgICAgICMgRW5zdXJlIHRoZSBwYXRoIGlzIHNldCB1cCBjb3JyZWN0bHkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZm9vLl9fcGF0aF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoW29zLnBhdGguam9pbihkaXJuYW1lXzAsIHBrZ25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRpcm5hbWVfMSwgcGtnbmFtZSldKSkKKworICAgICAgICAjIENsZWFudXAKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzApCisgICAgICAgIHNodXRpbC5ybXRyZWUoZGlybmFtZV8xKQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisgICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmFyJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmF6J10KIAogICAgICMgWFhYOiB0ZXN0IC5wa2cgZmlsZXMKIApAQCAtMjI3LDEyICsyNTksNTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCAyKQogCiAKK2NsYXNzIEltcG9ydGxpYk1pZ3JhdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFdpdGggZnVsbCBQRVAgMzAyIHN1cHBvcnQgaW4gdGhlIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnksIHRoZQorICAgICMgUEVQIDMwMiBlbXVsYXRpb24gaW4gdGhpcyBtb2R1bGUgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcKKyAgICAjIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGltcG9ydGxpYiBwcm9wZXIKKworICAgIGRlZiBjaGVja19kZXByZWNhdGVkKHNlbGYpOgorICAgICAgICByZXR1cm4gY2hlY2tfd2FybmluZ3MoCisgICAgICAgICAgICAoIlRoaXMgZW11bGF0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAnaW1wb3J0bGliJyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpKQorCisgICAgZGVmIHRlc3RfaW1wb3J0ZXJfZGVwcmVjYXRlZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX2RlcHJlY2F0ZWQoKToKKyAgICAgICAgICAgIHggPSBwa2d1dGlsLkltcEltcG9ydGVyKCIiKQorCisgICAgZGVmIHRlc3RfbG9hZGVyX2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5jaGVja19kZXByZWNhdGVkKCk6CisgICAgICAgICAgICB4ID0gcGtndXRpbC5JbXBMb2FkZXIoIiIsICIiLCAiIiwgIiIpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9hZGVyX2F2b2lkc19lbXVsYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJzeXMiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHBrZ3V0aWwuZ2V0X2xvYWRlcigib3MiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHBrZ3V0aWwuZ2V0X2xvYWRlcigidGVzdC5zdXBwb3J0IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3Lndhcm5pbmdzKSwgMCkKKworICAgIGRlZiB0ZXN0X2dldF9pbXBvcnRlcl9hdm9pZHNfZW11bGF0aW9uKHNlbGYpOgorICAgICAgICAjIFdlIHVzZSBhbiBpbGxlZ2FsIHBhdGggc28gKm5vbmUqIG9mIHRoZSBwYXRoIGhvb2tzIHNob3VsZCBmaXJlCisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGtndXRpbC5nZXRfaW1wb3J0ZXIoIio/PyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ody53YXJuaW5ncyksIDApCisKKyAgICBkZWYgdGVzdF9pdGVyX2ltcG9ydGVyc19hdm9pZHNfZW11bGF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCkgYXMgdzoKKyAgICAgICAgICAgIGZvciBpbXBvcnRlciBpbiBwa2d1dGlsLml0ZXJfaW1wb3J0ZXJzKCk6IHBhc3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcud2FybmluZ3MpLCAwKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoUGtndXRpbFRlc3RzLCBQa2d1dGlsUEVQMzAyVGVzdHMsIEV4dGVuZFBhdGhUZXN0cywKLSAgICAgICAgICAgICAgICAgTmVzdGVkTmFtZXNwYWNlUGFja2FnZVRlc3QpCisgICAgICAgICAgICAgICAgIE5lc3RlZE5hbWVzcGFjZVBhY2thZ2VUZXN0LCBJbXBvcnRsaWJNaWdyYXRpb25UZXN0cykKICAgICAjIHRoaXMgaXMgbmVjZXNzYXJ5IGlmIHRlc3QgaXMgcnVuIHJlcGVhdGVkIChsaWtlIHdoZW4gZmluZGluZyBsZWFrcykKICAgICBpbXBvcnQgemlwaW1wb3J0CisgICAgaW1wb3J0IGltcG9ydGxpYgogICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jbGVhcigpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQppbmRleCA4NzUxYWE4Li42YWJmNDQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKQEAgLTEsOCArMSw5IEBACi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTU2LDEzICs1NywxMSBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNhdmVfdmVyc2lvbiA9IHN5cy52ZXJzaW9uCi0gICAgICAgIHNlbGYuc2F2ZV9zdWJ2ZXJzaW9uID0gc3lzLnN1YnZlcnNpb24KICAgICAgICAgc2VsZi5zYXZlX21lcmN1cmlhbCA9IHN5cy5fbWVyY3VyaWFsCiAgICAgICAgIHNlbGYuc2F2ZV9wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzeXMudmVyc2lvbiA9IHNlbGYuc2F2ZV92ZXJzaW9uCi0gICAgICAgIHN5cy5zdWJ2ZXJzaW9uID0gc2VsZi5zYXZlX3N1YnZlcnNpb24KICAgICAgICAgc3lzLl9tZXJjdXJpYWwgPSBzZWxmLnNhdmVfbWVyY3VyaWFsCiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IHNlbGYuc2F2ZV9wbGF0Zm9ybQogCkBAIC03Nyw3ICs3Niw3IEBACiAgICAgICAgICAgICAgKCdJcm9uUHl0aG9uJywgJzEuMC4wJywgJycsICcnLCAnJywgJycsICcuTkVUIDIuMC41MDcyNy40MicpKSwKICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAjIGJyYW5jaCBhbmQgcmV2aXNpb24gYXJlIG5vdCAicGFyc2VkIiwgYnV0IGZldGNoZWQKLSAgICAgICAgICAgICMgZnJvbSBzeXMuc3VidmVyc2lvbi4gIElnbm9yZSB0aGVtCisgICAgICAgICAgICAjIGZyb20gc3lzLl9tZXJjdXJpYWwuICBJZ25vcmUgdGhlbQogICAgICAgICAgICAgKG5hbWUsIHZlcnNpb24sIGJyYW5jaCwgcmV2aXNpb24sIGJ1aWxkbm8sIGJ1aWxkZGF0ZSwgY29tcGlsZXIpIFwKICAgICAgICAgICAgICAgICAgICA9IHBsYXRmb3JtLl9zeXNfdmVyc2lvbihpbnB1dCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCkBAIC0xMTMsOCArMTEyLDYgQEAKICAgICAgICAgICAgIGlmIHN1YnZlcnNpb24gaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHN5cywgIl9tZXJjdXJpYWwiKToKICAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5fbWVyY3VyaWFsCi0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzeXMsICJzdWJ2ZXJzaW9uIik6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBzeXMuc3VidmVyc2lvbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzeXMuX21lcmN1cmlhbCA9IHN1YnZlcnNpb24KICAgICAgICAgICAgIGlmIHN5c19wbGF0Zm9ybSBpcyBub3QgTm9uZToKQEAgLTEzNiw2ICsxMzMsMTIgQEAKICAgICBkZWYgdGVzdF91bmFtZShzZWxmKToKICAgICAgICAgcmVzID0gcGxhdGZvcm0udW5hbWUoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KHJlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzBdLCByZXMuc3lzdGVtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1sxXSwgcmVzLm5vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzJdLCByZXMucmVsZWFzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbM10sIHJlcy52ZXJzaW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1s0XSwgcmVzLm1hY2hpbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzVdLCByZXMucHJvY2Vzc29yKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpLCAid2luZG93cyBvbmx5IHRlc3QiKQogICAgIGRlZiB0ZXN0X3VuYW1lX3dpbjMyX0FSQ0hJVEVXNjQzMihzZWxmKToKQEAgLTE2OSw3ICsxNzIsNyBAQAogICAgIGRlZiB0ZXN0X21hY192ZXIoc2VsZik6CiAgICAgICAgIHJlcyA9IHBsYXRmb3JtLm1hY192ZXIoKQogCi0gICAgICAgIGlmIHBsYXRmb3JtLnVuYW1lKClbMF0gPT0gJ0Rhcndpbic6CisgICAgICAgIGlmIHBsYXRmb3JtLnVuYW1lKCkuc3lzdGVtID09ICdEYXJ3aW4nOgogICAgICAgICAgICAgIyBXZSdyZSBvbiBhIE1hY09TWCBzeXN0ZW0sIGNoZWNrIHRoYXQKICAgICAgICAgICAgICMgdGhlIHJpZ2h0IHZlcnNpb24gaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQKICAgICAgICAgICAgIGZkID0gb3MucG9wZW4oJ3N3X3ZlcnMnLCAncicpCkBAIC0yNDcsNiArMjUwLDM4IEBACiAgICAgICAgICAgICApOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGF0Zm9ybS5fcGFyc2VfcmVsZWFzZV9maWxlKGlucHV0KSwgb3V0cHV0KQogCisgICAgZGVmIHRlc3RfcG9wZW4oc2VsZik6CisgICAgICAgIG1zd2luZG93cyA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKKworICAgICAgICBpZiBtc3dpbmRvd3M6CisgICAgICAgICAgICBjb21tYW5kID0gJyJ7fSIgLWMgInByaW50KFwnSGVsbG9cJykiJy5mb3JtYXQoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb21tYW5kID0gIid7fScgLWMgJ3ByaW50KFwiSGVsbG9cIiknIi5mb3JtYXQoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgd2l0aCBwbGF0Zm9ybS5wb3Blbihjb21tYW5kKSBhcyBzdGRvdXQ6CisgICAgICAgICAgICAgICAgaGVsbG8gPSBzdGRvdXQucmVhZCgpLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBzdGRvdXQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8sICJIZWxsbyIpCisKKyAgICAgICAgZGF0YSA9ICdwbG9wJworICAgICAgICBpZiBtc3dpbmRvd3M6CisgICAgICAgICAgICBjb21tYW5kID0gJyJ7fSIgLWMgImltcG9ydCBzeXM7IGRhdGE9c3lzLnN0ZGluLnJlYWQoKTsgZXhpdChsZW4oZGF0YSkpIicKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1hbmQgPSAiJ3t9JyAtYyAnaW1wb3J0IHN5czsgZGF0YT1zeXMuc3RkaW4ucmVhZCgpOyBleGl0KGxlbihkYXRhKSknIgorICAgICAgICBjb21tYW5kID0gY29tbWFuZC5mb3JtYXQoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgd2l0aCBwbGF0Zm9ybS5wb3Blbihjb21tYW5kLCAndycpIGFzIHN0ZGluOgorICAgICAgICAgICAgICAgIHN0ZG91dCA9IHN0ZGluLndyaXRlKGRhdGEpCisgICAgICAgICAgICAgICAgcmV0ID0gc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJldCkKKyAgICAgICAgICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGUgPSByZXQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlID0gcmV0ID4+IDgKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldHVybmNvZGUsIGxlbihkYXRhKSkKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQppbmRleCA1Zjk4MGQwLi5hOWUzNDNlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKQEAgLTU1LDYgKzU1LDEwIEBACiAgICAgICAgIDwvYXJyYXk+CiAgICAgICAgIDxrZXk+YVN0cmluZzwva2V5PgogICAgICAgICA8c3RyaW5nPkRvb2RhaDwvc3RyaW5nPgorICAgICAgICA8a2V5PmFuRW1wdHlEaWN0PC9rZXk+CisgICAgICAgIDxkaWN0Lz4KKyAgICAgICAgPGtleT5hbkVtcHR5TGlzdDwva2V5PgorICAgICAgICA8YXJyYXkvPgogICAgICAgICA8a2V5PmFuSW50PC9rZXk+CiAgICAgICAgIDxpbnRlZ2VyPjcyODwvaW50ZWdlcj4KICAgICAgICAgPGtleT5uZXN0ZWREYXRhPC9rZXk+CkBAIC0xMTIsNiArMTE2LDggQEAKICAgICAgICAgICAgIHNvbWVNb3JlRGF0YSA9IHBsaXN0bGliLkRhdGEoYiI8bG90cyBvZiBiaW5hcnkgZ3Vuaz5cMFwxXDJcMyIgKiAxMCksCiAgICAgICAgICAgICBuZXN0ZWREYXRhID0gW3BsaXN0bGliLkRhdGEoYiI8bG90cyBvZiBiaW5hcnkgZ3Vuaz5cMFwxXDJcMyIgKiAxMCldLAogICAgICAgICAgICAgYURhdGUgPSBkYXRldGltZS5kYXRldGltZSgyMDA0LCAxMCwgMjYsIDEwLCAzMywgMzMpLAorICAgICAgICAgICAgYW5FbXB0eURpY3QgPSBkaWN0KCksCisgICAgICAgICAgICBhbkVtcHR5TGlzdCA9IGxpc3QoKQogICAgICAgICApCiAgICAgICAgIHBsWydceGM1YmVucmFhJ10gPSAiVGhhdCB3YXMgYSB1bmljb2RlIGtleS4iCiAgICAgICAgIHJldHVybiBwbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQppbmRleCBlMzkwMWI4Li5jMDkyOWEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQpAQCAtMTA4LDYgKzEwOCwxMCBAQAogICAgIGRlZiBjbWRfYXBvcChzZWxmLCBhcmcpOgogICAgICAgICBzZWxmLnB1c2goJytPSyBkb25lIG5vdGhpbmcuJykKIAorICAgIGRlZiBjbWRfcXVpdChzZWxmLCBhcmcpOgorICAgICAgICBzZWxmLnB1c2goJytPSyBjbG9zaW5nLicpCisgICAgICAgIHNlbGYuY2xvc2Vfd2hlbl9kb25lKCkKKwogCiBjbGFzcyBEdW1teVBPUDNTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlciwgdGhyZWFkaW5nLlRocmVhZCk6CiAKQEAgLTE2NSwxMCArMTY5LDEwIEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15UE9QM1NlcnZlcigoSE9TVCwgUE9SVCkpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKLSAgICAgICAgc2VsZi5jbGllbnQgPSBwb3BsaWIuUE9QMyhzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQorICAgICAgICBzZWxmLmNsaWVudCA9IHBvcGxpYi5QT1AzKHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQsIHRpbWVvdXQ9MykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCiAKICAgICBkZWYgdGVzdF9nZXR3ZWxjb21lKHNlbGYpOgpAQCAtMjI4LDYgKzIzMiwxMiBAQAogICAgICAgICBzZWxmLmNsaWVudC51aWRsKCkKICAgICAgICAgc2VsZi5jbGllbnQudWlkbCgnZm9vJykKIAorICAgIGRlZiB0ZXN0X3F1aXQoc2VsZik6CisgICAgICAgIHJlc3AgPSBzZWxmLmNsaWVudC5xdWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3ApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuY2xpZW50LnNvY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuY2xpZW50LmZpbGUpCisKIAogU1VQUE9SVFNfU1NMID0gRmFsc2UKIGlmIGhhc2F0dHIocG9wbGliLCAnUE9QM19TU0wnKToKQEAgLTI3NCw2ICsyODQsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBEdW1teVBPUDNIYW5kbGVyLmhhbmRsZV9yZWFkKHNlbGYpCiAKKwogICAgIGNsYXNzIFRlc3RQT1AzX1NTTENsYXNzKFRlc3RQT1AzQ2xhc3MpOgogICAgICAgICAjIHJlcGVhdCBwcmV2aW91cyB0ZXN0cyBieSB1c2luZyBwb3BsaWIuUE9QM19TU0wKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKaW5kZXggYjkzNmRkYS4uNGU3YTM3YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CkBAIC05LDYgKzksNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBvcworaW1wb3J0IGZjbnRsCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBwd2QKIGltcG9ydCBzaHV0aWwKQEAgLTQzLDcgKzQ0LDcgQEAKICAgICAgICAgTk9fQVJHX0ZVTkNUSU9OUyA9IFsgImN0ZXJtaWQiLCAiZ2V0Y3dkIiwgImdldGN3ZGIiLCAidW5hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZXMiLCAiZ2V0bG9hZGF2ZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRlZ2lkIiwgImdldGV1aWQiLCAiZ2V0Z2lkIiwgImdldGdyb3VwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRwaWQiLCAiZ2V0cGdycCIsICJnZXRwcGlkIiwgImdldHVpZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRwaWQiLCAiZ2V0cGdycCIsICJnZXRwcGlkIiwgImdldHVpZCIsICJzeW5jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KIAogICAgICAgICBmb3IgbmFtZSBpbiBOT19BUkdfRlVOQ1RJT05TOgpAQCAtMTI4LDYgKzEyOSw3IEBACiAgICAgICAgICAgICBmcCA9IG9wZW4oc3VwcG9ydC5URVNURk4pCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LmZzdGF0dmZzKGZwLmZpbGVubygpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdHZmcyhmcC5maWxlbm8oKSkpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKIApAQCAtMTQyLDYgKzE0NCwxNTEgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3RydW5jYXRlJyksICJ0ZXN0IG5lZWRzIHBvc2l4LnRydW5jYXRlKCkiKQorICAgIGRlZiB0ZXN0X3RydW5jYXRlKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3JykgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZSgndGVzdCcpCisgICAgICAgICAgICBmcC5mbHVzaCgpCisgICAgICAgIHBvc2l4LnRydW5jYXRlKHN1cHBvcnQuVEVTVEZOLCAwKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ2V0YXR0cihvcywgJ2V4ZWN2ZScsIE5vbmUpIGluIG9zLnN1cHBvcnRzX2ZkLCAidGVzdCBuZWVkcyBleGVjdmUoKSB0byBzdXBwb3J0IHRoZSBmZCBwYXJhbWV0ZXIiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmb3JrJyksICJ0ZXN0IG5lZWRzIG9zLmZvcmsoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3dhaXRwaWQnKSwgInRlc3QgbmVlZHMgb3Mud2FpdHBpZCgpIikKKyAgICBkZWYgdGVzdF9mZXhlY3ZlKHNlbGYpOgorICAgICAgICBmcCA9IG9zLm9wZW4oc3lzLmV4ZWN1dGFibGUsIG9zLk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguc3BsaXQoc3lzLmV4ZWN1dGFibGUpWzBdKQorICAgICAgICAgICAgICAgIHBvc2l4LmV4ZWN2ZShmcCwgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddLCBvcy5lbnZpcm9uKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLndhaXRwaWQocGlkLCAwKSwgKHBpZCwgMCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmcCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICd3YWl0aWQnKSwgInRlc3QgbmVlZHMgcG9zaXgud2FpdGlkKCkiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmb3JrJyksICJ0ZXN0IG5lZWRzIG9zLmZvcmsoKSIpCisgICAgZGVmIHRlc3Rfd2FpdGlkKHNlbGYpOgorICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgaWYgcGlkID09IDA6CisgICAgICAgICAgICBvcy5jaGRpcihvcy5wYXRoLnNwbGl0KHN5cy5leGVjdXRhYmxlKVswXSkKKyAgICAgICAgICAgIHBvc2l4LmV4ZWN2ZShzeXMuZXhlY3V0YWJsZSwgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddLCBvcy5lbnZpcm9uKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzID0gcG9zaXgud2FpdGlkKHBvc2l4LlBfUElELCBwaWQsIHBvc2l4LldFWElURUQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBpZCwgcmVzLnNpX3BpZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdsb2NrZicpLCAidGVzdCBuZWVkcyBwb3NpeC5sb2NrZigpIikKKyAgICBkZWYgdGVzdF9sb2NrZihzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1dST05MWSB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiJ3Rlc3QnKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgcG9zaXgubG9ja2YoZmQsIHBvc2l4LkZfTE9DSywgNCkKKyAgICAgICAgICAgICMgc2VjdGlvbiBpcyBsb2NrZWQKKyAgICAgICAgICAgIHBvc2l4LmxvY2tmKGZkLCBwb3NpeC5GX1VMT0NLLCA0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAncHJlYWQnKSwgInRlc3QgbmVlZHMgcG9zaXgucHJlYWQoKSIpCisgICAgZGVmIHRlc3RfcHJlYWQoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRFdSIHwgb3MuT19DUkVBVCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIGIndGVzdCcpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInZXMnLCBwb3NpeC5wcmVhZChmZCwgMiwgMSkpCisgICAgICAgICAgICAjIHRoZSBmaXJzdCBwcmVhZCgpIHNob3VsZG4ndCBkaXN0dXJiIHRoZSBmaWxlIG9mZnNldAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ3RlJywgcG9zaXgucmVhZChmZCwgMikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdwd3JpdGUnKSwgInRlc3QgbmVlZHMgcG9zaXgucHdyaXRlKCkiKQorICAgIGRlZiB0ZXN0X3B3cml0ZShzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JEV1IgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYid0ZXN0JykKKyAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIHBvc2l4LnB3cml0ZShmZCwgYid4eCcsIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIndHh4dCcsIHBvc2l4LnJlYWQoZmQsIDQpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAncG9zaXhfZmFsbG9jYXRlJyksCisgICAgICAgICJ0ZXN0IG5lZWRzIHBvc2l4LnBvc2l4X2ZhbGxvY2F0ZSgpIikKKyAgICBkZWYgdGVzdF9wb3NpeF9mYWxsb2NhdGUoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19XUk9OTFkgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5wb3NpeF9mYWxsb2NhdGUoZmQsIDAsIDEwKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBpbnN0OgorICAgICAgICAgICAgIyBpc3N1ZTEwODEyLCBaRlMgZG9lc24ndCBhcHBlYXIgdG8gc3VwcG9ydCBwb3NpeF9mYWxsb2NhdGUsCisgICAgICAgICAgICAjIHNvIHNraXAgU29sYXJpcy1iYXNlZCBzaW5jZSB0aGV5IGFyZSBsaWtlbHkgdG8gaGF2ZSBaRlMuCisgICAgICAgICAgICBpZiBpbnN0LmVycm5vICE9IGVycm5vLkVJTlZBTCBvciBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoInN1bm9zIik6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3Bvc2l4X2ZhZHZpc2UnKSwKKyAgICAgICAgInRlc3QgbmVlZHMgcG9zaXgucG9zaXhfZmFkdmlzZSgpIikKKyAgICBkZWYgdGVzdF9wb3NpeF9mYWR2aXNlKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5wb3NpeF9mYWR2aXNlKGZkLCAwLCAwLCBwb3NpeC5QT1NJWF9GQURWX1dJTExORUVEKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mZCwgInRlc3QgbmVlZHMgZmQgc3VwcG9ydCBpbiBvcy51dGltZSIpCisgICAgZGVmIHRlc3RfdXRpbWVfd2l0aF9mZChzZWxmKToKKyAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgudXRpbWUoZmQpCisgICAgICAgICAgICBwb3NpeC51dGltZShmZCwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAoTm9uZSwgTm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBmZCwgKG5vdywgTm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBmZCwgKE5vbmUsIG5vdykpCisgICAgICAgICAgICBwb3NpeC51dGltZShmZCwgKGludChub3cpLCBpbnQobm93KSkpCisgICAgICAgICAgICBwb3NpeC51dGltZShmZCwgKG5vdywgbm93KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvc2l4LnV0aW1lLCBmZCwgKG5vdywgbm93KSwgbnM9KG5vdywgbm93KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvc2l4LnV0aW1lLCBmZCwgKG5vdywgMCksIG5zPShOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvc2l4LnV0aW1lLCBmZCwgKE5vbmUsIE5vbmUpLCBucz0obm93LCAwKSkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCAoaW50KG5vdyksIGludCgobm93IC0gaW50KG5vdykpICogMWU5KSkpCisgICAgICAgICAgICBwb3NpeC51dGltZShmZCwgbnM9KGludChub3cpLCBpbnQoKG5vdyAtIGludChub3cpKSAqIDFlOSkpKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcywgInRlc3QgbmVlZHMgZm9sbG93X3N5bWxpbmtzIHN1cHBvcnQgaW4gb3MudXRpbWUiKQorICAgIGRlZiB0ZXN0X3V0aW1lX25vZm9sbG93X3N5bWxpbmtzKHNlbGYpOgorICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgTm9uZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKE5vbmUsIE5vbmUpLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAobm93LCBOb25lKSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKE5vbmUsIG5vdyksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChpbnQobm93KSwgaW50KG5vdykpLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAobm93LCBub3cpLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnd3JpdGV2JyksICJ0ZXN0IG5lZWRzIHBvc2l4LndyaXRldigpIikKKyAgICBkZWYgdGVzdF93cml0ZXYoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRFdSIHwgb3MuT19DUkVBVCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGV2KGZkLCAoYid0ZXN0MScsIGIndHQyJywgYid0MycpKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ3Rlc3QxdHQydDMnLCBwb3NpeC5yZWFkKGZkLCAxMCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdyZWFkdicpLCAidGVzdCBuZWVkcyBwb3NpeC5yZWFkdigpIikKKyAgICBkZWYgdGVzdF9yZWFkdihzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JEV1IgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYid0ZXN0MXR0MnQzJykKKyAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIGJ1ZiA9IFtieXRlYXJyYXkoaSkgZm9yIGkgaW4gWzUsIDMsIDJdXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeC5yZWFkdihmZCwgYnVmKSwgMTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiJ3Rlc3QxJywgYid0dDInLCBiJ3QzJ10sIFtieXRlcyhpKSBmb3IgaSBpbiBidWZdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKICAgICBkZWYgdGVzdF9kdXAoc2VsZik6CiAgICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICdkdXAnKToKICAgICAgICAgICAgIGZwID0gb3BlbihzdXBwb3J0LlRFU1RGTikKQEAgLTE2Nyw2ICszMTQsMTMgQEAKICAgICAgICAgICAgICAgICBmcDEuY2xvc2UoKQogICAgICAgICAgICAgICAgIGZwMi5jbG9zZSgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnT19DTE9FWEVDJyksICJuZWVkcyBvcy5PX0NMT0VYRUMiKQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjMpCisgICAgZGVmIHRlc3Rfb3NjbG9leGVjKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRPTkxZfG9zLk9fQ0xPRVhFQykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBmZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZEKSAmIGZjbnRsLkZEX0NMT0VYRUMpCisKICAgICBkZWYgdGVzdF9vc2V4bG9jayhzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgIk9fRVhMT0NLIik6CiAgICAgICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sCkBAIC0yMDMsNiArMzU3LDcgQEAKICAgICAgICAgICAgIGZwID0gb3BlbihzdXBwb3J0LlRFU1RGTikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguZnN0YXQoZnAuZmlsZW5vKCkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KGZwLmZpbGVubygpKSkKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogCkBAIC0yNjUsNyArNDIwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguY2hvd24sIHN1cHBvcnQuVEVTVEZOLCAtMSwgLTEpCiAKICAgICAgICAgIyByZS1jcmVhdGUgdGhlIGZpbGUKLSAgICAgICAgb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKS5jbG9zZSgpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHNlbGYuX3Rlc3RfYWxsX2Nob3duX2NvbW1vbihwb3NpeC5jaG93biwgc3VwcG9ydC5URVNURk4pCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnZmNob3duJyksICJ0ZXN0IG5lZWRzIG9zLmZjaG93bigpIikKQEAgLTI5MywxMyArNDQ4LDMyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5jaGRpciwgc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgdGVzdF9saXN0ZGlyKHNlbGYpOgotICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAnbGlzdGRpcicpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQuVEVTVEZOIGluIHBvc2l4Lmxpc3RkaXIob3MuY3VyZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQuVEVTVEZOIGluIHBvc2l4Lmxpc3RkaXIob3MuY3VyZGlyKSkKIAogICAgIGRlZiB0ZXN0X2xpc3RkaXJfZGVmYXVsdChzZWxmKToKLSAgICAgICAgIyBXaGVuIGxpc3RkaXIgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnQsIGl0J3MgdGhlIHNhbWUgYXMgbGlzdGRpcihvcy5jdXJkaXIpCi0gICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICdsaXN0ZGlyJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5URVNURk4gaW4gcG9zaXgubGlzdGRpcigpKQorICAgICAgICAjIFdoZW4gbGlzdGRpciBpcyBjYWxsZWQgd2l0aG91dCBhcmd1bWVudCwKKyAgICAgICAgIyBpdCdzIHRoZSBzYW1lIGFzIGxpc3RkaXIob3MuY3VyZGlyKS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQuVEVTVEZOIGluIHBvc2l4Lmxpc3RkaXIoKSkKKworICAgIGRlZiB0ZXN0X2xpc3RkaXJfYnl0ZXMoc2VsZik6CisgICAgICAgICMgV2hlbiBsaXN0ZGlyIGlzIGNhbGxlZCB3aXRoIGEgYnl0ZXMgb2JqZWN0LAorICAgICAgICAjIHRoZSByZXR1cm5lZCBzdHJpbmdzIGFyZSBvZiB0eXBlIGJ5dGVzLgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pIGluIHBvc2l4Lmxpc3RkaXIoYicuJykpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhwb3NpeC5saXN0ZGlyIGluIG9zLnN1cHBvcnRzX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG5lZWRzIGZkIHN1cHBvcnQgZm9yIHBvc2l4Lmxpc3RkaXIoKSIpCisgICAgZGVmIHRlc3RfbGlzdGRpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocG9zaXguY2xvc2UsIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzb3J0ZWQocG9zaXgubGlzdGRpcignLicpKSwKKyAgICAgICAgICAgIHNvcnRlZChwb3NpeC5saXN0ZGlyKGYpKQorICAgICAgICAgICAgKQorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGZkIG9mZnNldCB3YXMgcmVzZXQgKGlzc3VlICMxMzczOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNvcnRlZChwb3NpeC5saXN0ZGlyKCcuJykpLAorICAgICAgICAgICAgc29ydGVkKHBvc2l4Lmxpc3RkaXIoZikpCisgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9hY2Nlc3Moc2VsZik6CiAgICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICdhY2Nlc3MnKToKQEAgLTMyMSw2ICs0OTUsMzIgQEAKICAgICAgICAgICAgIG9zLmNsb3NlKHJlYWRlcikKICAgICAgICAgICAgIG9zLmNsb3NlKHdyaXRlcikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdwaXBlMicpLCAidGVzdCBuZWVkcyBvcy5waXBlMigpIikKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDI3KQorICAgIGRlZiB0ZXN0X3BpcGUyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnBpcGUyLCAnREVBREJFRUYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnBpcGUyLCAwLCAwKQorCisgICAgICAgICMgdHJ5IGNhbGxpbmcgd2l0aCBmbGFncyA9IDAsIGxpa2Ugb3MucGlwZSgpCisgICAgICAgIHIsIHcgPSBvcy5waXBlMigwKQorICAgICAgICBvcy5jbG9zZShyKQorICAgICAgICBvcy5jbG9zZSh3KQorCisgICAgICAgICMgdGVzdCBmbGFncworICAgICAgICByLCB3ID0gb3MucGlwZTIob3MuT19DTE9FWEVDfG9zLk9fTk9OQkxPQ0spCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCB3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwociwgZmNudGwuRl9HRVRGRCkgJiBmY250bC5GRF9DTE9FWEVDKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwodywgZmNudGwuRl9HRVRGRCkgJiBmY250bC5GRF9DTE9FWEVDKQorICAgICAgICAjIHRyeSByZWFkaW5nIGZyb20gYW4gZW1wdHkgcGlwZTogdGhpcyBzaG91bGQgZmFpbCwgbm90IGJsb2NrCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnJlYWQsIHIsIDEpCisgICAgICAgICMgdHJ5IGEgd3JpdGUgYmlnIGVub3VnaCB0byBmaWxsLXVwIHRoZSBwaXBlOiB0aGlzIHNob3VsZCBlaXRoZXIKKyAgICAgICAgIyBmYWlsIG9yIHBlcmZvcm0gYSBwYXJ0aWFsIHdyaXRlLCBub3QgYmxvY2sKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGUodywgYid4JyAqIHN1cHBvcnQuUElQRV9NQVhfU0laRSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKICAgICBkZWYgdGVzdF91dGltZShzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgJ3V0aW1lJyk6CiAgICAgICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQpAQCAtMzMxLDEzICs1MzEsMTQgQEAKICAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAoaW50KG5vdyksIGludChub3cpKSkKICAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAobm93LCBub3cpKQogCi0gICAgZGVmIF90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHNlbGYsIGNoZmxhZ3NfZnVuYywgdGFyZ2V0X2ZpbGUpOgorICAgIGRlZiBfdGVzdF9jaGZsYWdzX3JlZ3VsYXJfZmlsZShzZWxmLCBjaGZsYWdzX2Z1bmMsIHRhcmdldF9maWxlLCAqKmt3YXJncyk6CiAgICAgICAgIHN0ID0gb3Muc3RhdCh0YXJnZXRfZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc3QsICdzdF9mbGFncycpKQogCiAgICAgICAgICMgWkZTIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGZsYWcgVUZfSU1NVVRBQkxFLgorICAgICAgICBmbGFncyA9IHN0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY2hmbGFnc19mdW5jKHRhcmdldF9maWxlLCBzdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFKQorICAgICAgICAgICAgY2hmbGFnc19mdW5jKHRhcmdldF9maWxlLCBmbGFncywgKiprd2FyZ3MpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgIGlmIGVyci5lcnJubyAhPSBlcnJuby5FT1BOT1RTVVBQOgogICAgICAgICAgICAgICAgIHJhaXNlCkBAIC0zNjEsNiArNTYyLDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnbGNoZmxhZ3MnKSwgJ3Rlc3QgbmVlZHMgb3MubGNoZmxhZ3MoKScpCiAgICAgZGVmIHRlc3RfbGNoZmxhZ3NfcmVndWxhcl9maWxlKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHBvc2l4LmxjaGZsYWdzLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5fdGVzdF9jaGZsYWdzX3JlZ3VsYXJfZmlsZShwb3NpeC5jaGZsYWdzLCBzdXBwb3J0LlRFU1RGTiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ2xjaGZsYWdzJyksICd0ZXN0IG5lZWRzIG9zLmxjaGZsYWdzKCknKQogICAgIGRlZiB0ZXN0X2xjaGZsYWdzX3N5bWxpbmsoc2VsZik6CkBAIC0zNzIsMjUgKzU3NCwyOCBAQAogICAgICAgICBzZWxmLnRlYXJkb3duX2ZpbGVzLmFwcGVuZChfRFVNTVlfU1lNTElOSykKICAgICAgICAgZHVtbXlfc3ltbGlua19zdCA9IG9zLmxzdGF0KF9EVU1NWV9TWU1MSU5LKQogCi0gICAgICAgICMgWkZTIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGZsYWcgVUZfSU1NVVRBQkxFLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwb3NpeC5sY2hmbGFncyhfRFVNTVlfU1lNTElOSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MgfCBzdGF0LlVGX0lNTVVUQUJMRSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVPUE5PVFNVUFA6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIG1zZyA9ICdjaGZsYWcgVUZfSU1NVVRBQkxFIG5vdCBzdXBwb3J0ZWQgYnkgdW5kZXJseWluZyBmcycKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QobXNnKQorICAgICAgICBkZWYgY2hmbGFnc19ub2ZvbGxvdyhwYXRoLCBmbGFncyk6CisgICAgICAgICAgICByZXR1cm4gcG9zaXguY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5ld190ZXN0Zm5fc3QgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgbmV3X2R1bW15X3N5bWxpbmtfc3QgPSBvcy5sc3RhdChfRFVNTVlfU1lNTElOSykKKyAgICAgICAgZm9yIGZuIGluIChwb3NpeC5sY2hmbGFncywgY2hmbGFnc19ub2ZvbGxvdyk6CisgICAgICAgICAgICAjIFpGUyByZXR1cm5zIEVPUE5PVFNVUFAgd2hlbiBhdHRlbXB0aW5nIHRvIHNldCBmbGFnIFVGX0lNTVVUQUJMRS4KKyAgICAgICAgICAgIGZsYWdzID0gZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm4oX0RVTU1ZX1NZTUxJTkssIGZsYWdzKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyAhPSBlcnJuby5FT1BOT1RTVVBQOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIG1zZyA9ICdjaGZsYWcgVUZfSU1NVVRBQkxFIG5vdCBzdXBwb3J0ZWQgYnkgdW5kZXJseWluZyBmcycKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KG1zZykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuZXdfdGVzdGZuX3N0ID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdCA9IG9zLmxzdGF0KF9EVU1NWV9TWU1MSU5LKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rmbl9zdC5zdF9mbGFncywgbmV3X3Rlc3Rmbl9zdC5zdF9mbGFncykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHBvc2l4LmxjaGZsYWdzKF9EVU1NWV9TWU1MSU5LLCBkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdGZuX3N0LnN0X2ZsYWdzLCBuZXdfdGVzdGZuX3N0LnN0X2ZsYWdzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2R1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZuKF9EVU1NWV9TWU1MSU5LLCBkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzKQogCiAgICAgZGVmIHRlc3RfZW52aXJvbihzZWxmKToKICAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgpAQCAtNDM4LDYgKzY0MywyMiBAQAogICAgICAgICAgICAgICAgIG9zLmNoZGlyKGN1cmRpcikKICAgICAgICAgICAgICAgICBzdXBwb3J0LnJtdHJlZShiYXNlX3BhdGgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnZ2V0Z3JvdXBsaXN0JyksICJ0ZXN0IG5lZWRzIHBvc2l4LmdldGdyb3VwbGlzdCgpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHB3ZCwgJ2dldHB3dWlkJyksICJ0ZXN0IG5lZWRzIHB3ZC5nZXRwd3VpZCgpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0dWlkJyksICJ0ZXN0IG5lZWRzIG9zLmdldHVpZCgpIikKKyAgICBkZWYgdGVzdF9nZXRncm91cGxpc3Qoc2VsZik6CisgICAgICAgIHdpdGggb3MucG9wZW4oJ2lkIC1HJykgYXMgaWRnOgorICAgICAgICAgICAgZ3JvdXBzID0gaWRnLnJlYWQoKS5zdHJpcCgpCisgICAgICAgICAgICByZXQgPSBpZGcuY2xvc2UoKQorCisgICAgICAgIGlmIHJldCAhPSBOb25lIG9yIG5vdCBncm91cHM6CisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgibmVlZCB3b3JraW5nICdpZCAtRyciKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZXQoW2ludCh4KSBmb3IgeCBpbiBncm91cHMuc3BsaXQoKV0pLAorICAgICAgICAgICAgc2V0KHBvc2l4LmdldGdyb3VwbGlzdChwd2QuZ2V0cHd1aWQob3MuZ2V0dWlkKCkpWzBdLAorICAgICAgICAgICAgICAgIHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSlbM10pKSkKKwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRlZ2lkJyksICJ0ZXN0IG5lZWRzIG9zLmdldGVnaWQoKSIpCiAgICAgZGVmIHRlc3RfZ2V0Z3JvdXBzKHNlbGYpOgogICAgICAgICB3aXRoIG9zLnBvcGVuKCdpZCAtRycpIGFzIGlkZzoKQEAgLTQ1NSw2ICs2NzYsMzQwIEBACiAgICAgICAgICAgICAgICAgc2V0KFtpbnQoeCkgZm9yIHggaW4gZ3JvdXBzLnNwbGl0KCldKSwKICAgICAgICAgICAgICAgICBzZXQocG9zaXguZ2V0Z3JvdXBzKCkgKyBbcG9zaXguZ2V0ZWdpZCgpXSkpCiAKKyAgICAjIHRlc3RzIGZvciB0aGUgcG9zaXggKmF0IGZ1bmN0aW9ucyBmb2xsb3cKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmFjY2VzcyBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGZvciBvcy5hY2Nlc3MoKSIpCisgICAgZGVmIHRlc3RfYWNjZXNzX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguYWNjZXNzKHN1cHBvcnQuVEVTVEZOLCBvcy5SX09LLCBkaXJfZmQ9ZikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MuY2htb2QgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5jaG1vZCgpIikKKyAgICBkZWYgdGVzdF9jaG1vZF9kaXJfZmQoc2VsZik6CisgICAgICAgIG9zLmNobW9kKHN1cHBvcnQuVEVTVEZOLCBzdGF0LlNfSVJVU1IpCisKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5jaG1vZChzdXBwb3J0LlRFU1RGTiwgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSLCBkaXJfZmQ9ZikKKworICAgICAgICAgICAgcyA9IHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbMF0gJiBzdGF0LlNfSVJXWFUsIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5jaG93biBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLmNob3duKCkiKQorICAgIGRlZiB0ZXN0X2Nob3duX2Rpcl9mZChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5jaG93bihzdXBwb3J0LlRFU1RGTiwgb3MuZ2V0dWlkKCksIG9zLmdldGdpZCgpLCBkaXJfZmQ9ZikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5zdGF0IGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3Muc3RhdCgpIikKKyAgICBkZWYgdGVzdF9zdGF0X2Rpcl9mZChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBvdXRmaWxlOgorICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgidGVzdGxpbmVcbiIpCisKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzMSA9IHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgICAgICBzMiA9IHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4sIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMSwgczIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy51dGltZSgpIikKKyAgICBkZWYgdGVzdF91dGltZV9kaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBOb25lLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCBub3csIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChOb25lLCBOb25lKSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKG5vdywgTm9uZSksIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChOb25lLCBub3cpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAobm93LCAieCIpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAoaW50KG5vdyksIGludChub3cpKSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgKG5vdywgbm93KSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwKKyAgICAgICAgICAgICAgICAgICAgKGludChub3cpLCBpbnQoKG5vdyAtIGludChub3cpKSAqIDFlOSkpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcz0oaW50KG5vdyksIGludCgobm93IC0gaW50KG5vdykpICogMWU5KSkpCisKKyAgICAgICAgICAgICMgdHJ5IGRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIHRvZ2V0aGVyCisgICAgICAgICAgICBpZiBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3M6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyB3aG9vcHMhICB1c2luZyBib3RoIHRvZ2V0aGVyIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4KKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubGluayBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLmxpbmsoKSIpCisgICAgZGVmIHRlc3RfbGlua19kaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgubGluayhzdXBwb3J0LlRFU1RGTiwgc3VwcG9ydC5URVNURk4gKyAnbGluaycsIHNyY19kaXJfZmQ9ZiwgZHN0X2Rpcl9mZD1mKQorICAgICAgICAgICAgIyBzaG91bGQgaGF2ZSBzYW1lIGlub2RlcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKVsxXSwKKyAgICAgICAgICAgICAgICBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKVsxXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm1rZGlyIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MubWtkaXIoKSIpCisgICAgZGVmIHRlc3RfbWtkaXJfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4Lm1rZGlyKHN1cHBvcnQuVEVTVEZOICsgJ2RpcicsIGRpcl9mZD1mKQorICAgICAgICAgICAgcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiArICdkaXInKSAjIHNob3VsZCBub3QgcmFpc2UgZXhjZXB0aW9uCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUoc3VwcG9ydC5URVNURk4gKyAnZGlyJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKChvcy5ta25vZCBpbiBvcy5zdXBwb3J0c19kaXJfZmQpIGFuZCBoYXNhdHRyKHN0YXQsICdTX0lGSUZPJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgcmVxdWlyZXMgYm90aCBzdGF0LlNfSUZJRk8gYW5kIGRpcl9mZCBzdXBwb3J0IGZvciBvcy5ta25vZCgpIikKKyAgICBkZWYgdGVzdF9ta25vZF9kaXJfZmQoc2VsZik6CisgICAgICAgICMgVGVzdCB1c2luZyBta25vZGF0KCkgdG8gY3JlYXRlIGEgRklGTyAodGhlIG9ubHkgdXNlIHNwZWNpZmllZAorICAgICAgICAjIGJ5IFBPU0lYKS4KKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIG1vZGUgPSBzdGF0LlNfSUZJRk8gfCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5ta25vZChzdXBwb3J0LlRFU1RGTiwgbW9kZSwgMCwgZGlyX2ZkPWYpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAjIFNvbWUgb2xkIHN5c3RlbXMgZG9uJ3QgYWxsb3cgdW5wcml2aWxlZ2VkIHVzZXJzIHRvIHVzZQorICAgICAgICAgICAgIyBta25vZCgpLCBvciBvbmx5IHN1cHBvcnQgY3JlYXRpbmcgZGV2aWNlIG5vZGVzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLmVycm5vLCAoZXJybm8uRVBFUk0sIGVycm5vLkVJTlZBTCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdC5TX0lTRklGTyhwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9tb2RlKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5vcGVuIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3Mub3BlbigpIikKKyAgICBkZWYgdGVzdF9vcGVuX2Rpcl9mZChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBvdXRmaWxlOgorICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgidGVzdGxpbmVcbiIpCisgICAgICAgIGEgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgYiA9IHBvc2l4Lm9wZW4oc3VwcG9ydC5URVNURk4sIHBvc2l4Lk9fUkRPTkxZLCBkaXJfZmQ9YSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzID0gcG9zaXgucmVhZChiLCA5KS5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3RsaW5lXG4iLCByZXMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShhKQorICAgICAgICAgICAgcG9zaXguY2xvc2UoYikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnJlYWRsaW5rIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MucmVhZGxpbmsoKSIpCisgICAgZGVmIHRlc3RfcmVhZGxpbmtfZGlyX2ZkKHNlbGYpOgorICAgICAgICBvcy5zeW1saW5rKHN1cHBvcnQuVEVTVEZOLCBzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnJlYWRsaW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKSwKKyAgICAgICAgICAgICAgICBwb3NpeC5yZWFkbGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJywgZGlyX2ZkPWYpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycpCisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucmVuYW1lIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MucmVuYW1lKCkiKQorICAgIGRlZiB0ZXN0X3JlbmFtZV9kaXJfZmQoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHN1cHBvcnQuVEVTVEZOICsgJ3JlbicpCisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgucmVuYW1lKHN1cHBvcnQuVEVTVEZOICsgJ3JlbicsIHN1cHBvcnQuVEVTVEZOLCBzcmNfZGlyX2ZkPWYsIGRzdF9kaXJfZmQ9ZikKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcG9zaXgucmVuYW1lKHN1cHBvcnQuVEVTVEZOICsgJ3JlbicsIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pICMgc2hvdWxkIG5vdCB0aHJvdyBleGNlcHRpb24KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5zeW1saW5rIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3Muc3ltbGluaygpIikKKyAgICBkZWYgdGVzdF9zeW1saW5rX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5zeW1saW5rKHN1cHBvcnQuVEVTVEZOLCBzdXBwb3J0LlRFU1RGTiArICdsaW5rJywgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnJlYWRsaW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKSwgc3VwcG9ydC5URVNURk4pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy51bmxpbmsgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy51bmxpbmsoKSIpCisgICAgZGVmIHRlc3RfdW5saW5rX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHN1cHBvcnQuVEVTVEZOICsgJ2RlbCcpCisgICAgICAgIHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4gKyAnZGVsJykgIyBzaG91bGQgbm90IHRocm93IGV4Y2VwdGlvbgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnZGVsJywgZGlyX2ZkPWYpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOICsgJ2RlbCcpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4gKyAnbGluaycpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubWtmaWZvIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MubWtmaWZvKCkiKQorICAgIGRlZiB0ZXN0X21rZmlmb19kaXJfZmQoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4Lm1rZmlmbyhzdXBwb3J0LlRFU1RGTiwgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGF0LlNfSVNGSUZPKHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X21vZGUpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIHJlcXVpcmVzX3NjaGVkX2ggPSB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF95aWVsZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb24ndCBoYXZlIHNjaGVkdWxpbmcgc3VwcG9ydCIpCisgICAgcmVxdWlyZXNfc2NoZWRfYWZmaW5pdHkgPSB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF9zZXRhZmZpbml0eScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3QgaGF2ZSBzY2hlZCBhZmZpbml0eSBzdXBwb3J0IikKKworICAgIEByZXF1aXJlc19zY2hlZF9oCisgICAgZGVmIHRlc3Rfc2NoZWRfeWllbGQoc2VsZik6CisgICAgICAgICMgVGhpcyBoYXMgbm8gZXJyb3IgY29uZGl0aW9ucyAoYXQgbGVhc3Qgb24gTGludXgpLgorICAgICAgICBwb3NpeC5zY2hlZF95aWVsZCgpCisKKyAgICBAcmVxdWlyZXNfc2NoZWRfaAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF9nZXRfcHJpb3JpdHlfbWF4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIHNjaGVkX2dldF9wcmlvcml0eV9tYXgoKSIpCisgICAgZGVmIHRlc3Rfc2NoZWRfcHJpb3JpdHkoc2VsZik6CisgICAgICAgICMgUm91bmQtcm9iaW4gdXN1YWxseSBoYXMgaW50ZXJlc3RpbmcgcHJpb3JpdGllcy4KKyAgICAgICAgcG9sID0gcG9zaXguU0NIRURfUlIKKyAgICAgICAgbG8gPSBwb3NpeC5zY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbCkKKyAgICAgICAgaGkgPSBwb3NpeC5zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGxvLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoaSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChoaSwgbG8pCisgICAgICAgICMgT1NYIGV2aWRlbnRseSBqdXN0IHJldHVybnMgMTUgd2l0aG91dCBjaGVja2luZyB0aGUgYXJndW1lbnQuCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAiZGFyd2luIjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldF9wcmlvcml0eV9taW4sIC0yMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldF9wcmlvcml0eV9tYXgsIC0yMykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF9zZXRzY2hlZHVsZXInKSwgImNhbid0IGNoYW5nZSBzY2hlZHVsZXIiKQorICAgIGRlZiB0ZXN0X2dldF9hbmRfc2V0X3NjaGVkdWxlcl9hbmRfcGFyYW0oc2VsZik6CisgICAgICAgIHBvc3NpYmxlX3NjaGVkdWxlcnMgPSBbc2NoZWQgZm9yIG5hbWUsIHNjaGVkIGluIHBvc2l4Ll9fZGljdF9fLml0ZW1zKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoIlNDSEVEXyIpXQorICAgICAgICBtaW5lID0gcG9zaXguc2NoZWRfZ2V0c2NoZWR1bGVyKDApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obWluZSwgcG9zc2libGVfc2NoZWR1bGVycykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGFyZW50ID0gcG9zaXguc2NoZWRfZ2V0c2NoZWR1bGVyKG9zLmdldHBwaWQoKSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRVBFUk06CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGFyZW50LCBwb3NzaWJsZV9zY2hlZHVsZXJzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9nZXRzY2hlZHVsZXIsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9nZXRwYXJhbSwgLTEpCisgICAgICAgIHBhcmFtID0gcG9zaXguc2NoZWRfZ2V0cGFyYW0oMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHBhcmFtLnNjaGVkX3ByaW9yaXR5LCBpbnQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnNjaGVkX3NldHNjaGVkdWxlcigwLCBtaW5lLCBwYXJhbSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRVBFUk06CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAjIFBPU0lYIHN0YXRlcyB0aGF0IGNhbGxpbmcgc2NoZWRfc2V0cGFyYW0oKSBvbiBhIHByb2Nlc3Mgd2l0aCBhCisgICAgICAgICMgc2NoZWR1bGluZyBwb2xpY3kgb3RoZXIgdGhhbiBTQ0hFRF9GSUZPIG9yIFNDSEVEX1JSIGlzCisgICAgICAgICMgaW1wbGVtZW50YXRpb24tZGVmaW5lZDogRnJlZUJTRCByZXR1cm5zIEVJTlZBTC4KKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJyk6CisgICAgICAgICAgICBwb3NpeC5zY2hlZF9zZXRwYXJhbSgwLCBwYXJhbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX3NldHBhcmFtLCAtMSwgcGFyYW0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfc2V0c2NoZWR1bGVyLCAtMSwgbWluZSwgcGFyYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXguc2NoZWRfc2V0c2NoZWR1bGVyLCAwLCBtaW5lLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnNjaGVkX3NldHBhcmFtLCAwLCA0MykKKyAgICAgICAgcGFyYW0gPSBwb3NpeC5zY2hlZF9wYXJhbShOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnNjaGVkX3NldHBhcmFtLCAwLCBwYXJhbSkKKyAgICAgICAgbGFyZ2UgPSAyMTQ3NDgzNjQ3MDAKKyAgICAgICAgcGFyYW0gPSBwb3NpeC5zY2hlZF9wYXJhbShsYXJnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIDAsIHBhcmFtKQorICAgICAgICBwYXJhbSA9IHBvc2l4LnNjaGVkX3BhcmFtKHNjaGVkX3ByaW9yaXR5PS1sYXJnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIDAsIHBhcmFtKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgInNjaGVkX3JyX2dldF9pbnRlcnZhbCIpLCAibm8gZnVuY3Rpb24iKQorICAgIGRlZiB0ZXN0X3NjaGVkX3JyX2dldF9pbnRlcnZhbChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW50ZXJ2YWwgPSBwb3NpeC5zY2hlZF9ycl9nZXRfaW50ZXJ2YWwoMCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgVGhpcyBsaWtlbHkgbWVhbnMgdGhhdCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwgaXMgb25seSB2YWxpZCBmb3IKKyAgICAgICAgICAgICMgcHJvY2Vzc2VzIHdpdGggdGhlIFNDSEVEX1JSIHNjaGVkdWxlciBpbiBlZmZlY3QuCisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlZBTDoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgib25seSB3b3JrcyBvbiBTQ0hFRF9SUiBwcm9jZXNzZXMiKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW50ZXJ2YWwsIGZsb2F0KQorICAgICAgICAjIFJlYXNvbmFibGUgY29uc3RyYWludHMsIEkgdGhpbmsuCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGludGVydmFsLCAwLikKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGludGVydmFsLCAxLikKKworICAgIEByZXF1aXJlc19zY2hlZF9hZmZpbml0eQorICAgIGRlZiB0ZXN0X3NjaGVkX2dldGFmZmluaXR5KHNlbGYpOgorICAgICAgICBtYXNrID0gcG9zaXguc2NoZWRfZ2V0YWZmaW5pdHkoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1hc2ssIHNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKG1hc2spLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9nZXRhZmZpbml0eSwgLTEpCisgICAgICAgIGZvciBjcHUgaW4gbWFzazoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjcHUsIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGNwdSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhjcHUsIDEgPDwgMzIpCisKKyAgICBAcmVxdWlyZXNfc2NoZWRfYWZmaW5pdHkKKyAgICBkZWYgdGVzdF9zY2hlZF9zZXRhZmZpbml0eShzZWxmKToKKyAgICAgICAgbWFzayA9IHBvc2l4LnNjaGVkX2dldGFmZmluaXR5KDApCisgICAgICAgIGlmIGxlbihtYXNrKSA+IDE6CisgICAgICAgICAgICAjIEVtcHR5IG1hc2tzIGFyZSBmb3JiaWRkZW4KKyAgICAgICAgICAgIG1hc2sucG9wKCkKKyAgICAgICAgcG9zaXguc2NoZWRfc2V0YWZmaW5pdHkoMCwgbWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeC5zY2hlZF9nZXRhZmZpbml0eSgwKSwgbWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfc2V0YWZmaW5pdHksIDAsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSwgMCwgWy0xMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHBvc2l4LnNjaGVkX3NldGFmZmluaXR5LCAwLCBbMTw8MTI4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfc2V0YWZmaW5pdHksIC0xLCBtYXNrKQorCisgICAgZGVmIHRlc3RfcnRsZF9jb25zdGFudHMoc2VsZik6CisgICAgICAgICMgY2hlY2sgcHJlc2VuY2Ugb2YgbWFqb3IgUlRMRF8qIGNvbnN0YW50cworICAgICAgICBwb3NpeC5SVExEX0xBWlkKKyAgICAgICAgcG9zaXguUlRMRF9OT1cKKyAgICAgICAgcG9zaXguUlRMRF9HTE9CQUwKKyAgICAgICAgcG9zaXguUlRMRF9MT0NBTAorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ1NFRUtfSE9MRScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG5lZWRzIGFuIE9TIHRoYXQgcmVwb3J0cyBmaWxlIGhvbGVzIikKKyAgICBkZWYgdGVzdF9mc19ob2xlcyhzZWxmKToKKyAgICAgICAgIyBFdmVuIGlmIHRoZSBmaWxlc3lzdGVtIGRvZXNuJ3QgcmVwb3J0IGhvbGVzLAorICAgICAgICAjIGlmIHRoZSBPUyBzdXBwb3J0cyBpdCB0aGUgU0VFS18qIGNvbnN0YW50cworICAgICAgICAjIHdpbGwgYmUgZGVmaW5lZCBhbmQgd2lsbCBoYXZlIGEgY29uc2lzdGVudAorICAgICAgICAjIGJlaGF2aW91cjoKKyAgICAgICAgIyBvcy5TRUVLX0RBVEEgPSBjdXJyZW50IHBvc2l0aW9uCisgICAgICAgICMgb3MuU0VFS19IT0xFID0gZW5kIG9mIGZpbGUgcG9zaXRpb24KKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncitiJykgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZShiImhlbGxvIikKKyAgICAgICAgICAgIGZwLmZsdXNoKCkKKyAgICAgICAgICAgIHNpemUgPSBmcC50ZWxsKCkKKyAgICAgICAgICAgIGZubyA9IGZwLmZpbGVubygpCisgICAgICAgICAgICB0cnkgOgorICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHNpemUpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGksIG9zLmxzZWVrKGZubywgaSwgb3MuU0VFS19EQVRBKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc2l6ZSwgb3MubHNlZWsoZm5vLCBpLCBvcy5TRUVLX0hPTEUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmxzZWVrLCBmbm8sIHNpemUsIG9zLlNFRUtfREFUQSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5sc2VlaywgZm5vLCBzaXplLCBvcy5TRUVLX0hPTEUpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciA6CisgICAgICAgICAgICAgICAgIyBTb21lIE9TcyBjbGFpbSB0byBzdXBwb3J0IFNFRUtfSE9MRS9TRUVLX0RBVEEKKyAgICAgICAgICAgICAgICAjIGJ1dCBpdCBpcyBub3QgdHJ1ZS4KKyAgICAgICAgICAgICAgICAjIEZvciBpbnN0YW5jZToKKyAgICAgICAgICAgICAgICAjIGh0dHA6Ly9saXN0cy5mcmVlYnNkLm9yZy9waXBlcm1haWwvZnJlZWJzZC1hbWQ2NC8yMDEyLUphbnVhcnkvMDE0MzMyLmh0bWwKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiT1NFcnJvciByYWlzZWQhIikKKwogY2xhc3MgUG9zaXhHcm91cHNUZXN0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNDkwLDkgKzEwNDUsMTEgQEAKICAgICAgICAgICAgIHBvc2l4LnNldGdyb3Vwcyhncm91cHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChncm91cHMsIHBvc2l4LmdldGdyb3VwcygpKQogCi0KIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChQb3NpeFRlc3RlciwgUG9zaXhHcm91cHNUZXN0ZXIpCisgICAgdHJ5OgorICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChQb3NpeFRlc3RlciwgUG9zaXhHcm91cHNUZXN0ZXIpCisgICAgZmluYWxseToKKyAgICAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQppbmRleCA1OTljODVhLi43YWNhODdkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQpAQCAtMSwxMSArMSwxMSBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHRlc3RfZ2VuZXJpY3BhdGgKLQogaW1wb3J0IGl0ZXJ0b29scwotaW1wb3J0IHBvc2l4cGF0aAogaW1wb3J0IG9zCitpbXBvcnQgcG9zaXhwYXRoCiBpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSBwb3NpeHBhdGggaW1wb3J0IHJlYWxwYXRoLCBhYnNwYXRoLCBkaXJuYW1lLCBiYXNlbmFtZQorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCB0ZXN0X2dlbmVyaWNwYXRoCiAKIHRyeToKICAgICBpbXBvcnQgcG9zaXgKQEAgLTI0NSw3ICsyNDUsOSBAQAogCiAgICAgZGVmIHRlc3RfaXNtb3VudChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJcyhwb3NpeHBhdGguaXNtb3VudCgiLyIpLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydElzKHBvc2l4cGF0aC5pc21vdW50KGIiLyIpLCBUcnVlKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocG9zaXhwYXRoLmlzbW91bnQoYiIvIiksIFRydWUpCiAKICAgICBkZWYgdGVzdF9pc21vdW50X25vbl9leGlzdGVudChzZWxmKToKICAgICAgICAgIyBOb24tZXhpc3RlbnQgbW91bnRwb2ludC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5IGIvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkKaW5kZXggMGM5M2QwZS4uZDQ5MmQ3NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkKQEAgLTIxOSw2ICsyMTksOCBAQAogIG90aGVycy5zaG91bGQubm90LmJlOiBsaWtlLnRoaXN9IiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRG90dGVkUHJldHR5UHJpbnRlcigpLnBmb3JtYXQobyksIGV4cCkKIAorICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICAjU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMzkwNwogICAgIEB0ZXN0LnN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2V0X3JlcHJzKHNlbGYpOgogICAgICAgICAjIFRoaXMgdGVzdCBjcmVhdGVzIGEgY29tcGxleCBhcnJhbmdlbWVudCBvZiBmcm96ZW5zZXRzIGFuZApAQCAtMjQxLDEwICsyNDMsMTIgQEAKICAgICAgICAgIyBDb25zZXF1ZW50bHksIHRoaXMgdGVzdCBpcyBmcmFnaWxlIGFuZAogICAgICAgICAjIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gIFNtYWxsIGNoYW5nZXMgdG8gUHl0aG9uJ3Mgc29ydAogICAgICAgICAjIGFsZ29yaXRobSBjYXVzZSB0aGUgdGVzdCB0byBmYWlsIHdoZW4gaXQgc2hvdWxkIHBhc3MuCisgICAgICAgICMgWFhYIE9yIGNoYW5nZXMgdG8gdGhlIGRpY3Rpb25hcnkgaW1wbG1lbnRhdGlvbi4uLgogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc2V0KCkpLCAnc2V0KCknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNldChyYW5nZSgzKSkpLCAnezAsIDEsIDJ9JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChmcm96ZW5zZXQoKSksICdmcm96ZW5zZXQoKScpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChmcm96ZW5zZXQocmFuZ2UoMykpKSwgJ2Zyb3plbnNldCh7MCwgMSwgMn0pJykKICAgICAgICAgY3ViZV9yZXByX3RndCA9ICIiIlwKIHtmcm96ZW5zZXQoKTogZnJvemVuc2V0KHtmcm96ZW5zZXQoezJ9KSwgZnJvemVuc2V0KHswfSksIGZyb3plbnNldCh7MX0pfSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ByaW50LnB5IGIvTGliL3Rlc3QvdGVzdF9wcmludC5weQppbmRleCA4ZDM3YmJjLi45ZDZkYmVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ByaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHJpbnQucHkKQEAgLTExMSw2ICsxMTEsMzIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwcmludCwgJycsIGVuZD0zKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgcHJpbnQsICcnLCBmaWxlPScnKQogCisgICAgZGVmIHRlc3RfcHJpbnRfZmx1c2goc2VsZik6CisgICAgICAgICMgb3BlcmF0aW9uIG9mIHRoZSBmbHVzaCBmbGFnCisgICAgICAgIGNsYXNzIGZpbGVsaWtlKCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi53cml0dGVuID0gJycKKyAgICAgICAgICAgICAgICBzZWxmLmZsdXNoZWQgPSAwCisgICAgICAgICAgICBkZWYgd3JpdGUoc2VsZiwgc3RyKToKKyAgICAgICAgICAgICAgICBzZWxmLndyaXR0ZW4gKz0gc3RyCisgICAgICAgICAgICBkZWYgZmx1c2goc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5mbHVzaGVkICs9IDEKKworICAgICAgICBmID0gZmlsZWxpa2UoKQorICAgICAgICBwcmludCgxLCBmaWxlPWYsIGVuZD0nJywgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcHJpbnQoMiwgZmlsZT1mLCBlbmQ9JycsIGZsdXNoPVRydWUpCisgICAgICAgIHByaW50KDMsIGZpbGU9ZiwgZmx1c2g9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi53cml0dGVuLCAnMTIzXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZmx1c2hlZCwgMikKKworICAgICAgICAjIGVuc3VyZSBleGNlcHRpb25zIGZyb20gZmx1c2ggYXJlIHBhc3NlZCB0aHJvdWdoCisgICAgICAgIGNsYXNzIG5vZmx1c2goKToKKyAgICAgICAgICAgIGRlZiB3cml0ZShzZWxmLCBzdHIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwcmludCwgMSwgZmlsZT1ub2ZsdXNoKCksIGZsdXNoPVRydWUpCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0UHJpbnQpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkgYi9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5CmluZGV4IGNjNmE4NzIuLjcyNmQ2ZmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weQpAQCAtMTI4LDYgKzEyOCwyOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2dldHRlci5zcGFtLCA4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2dldHRlci5fX2NsYXNzX18uc3BhbS5fX2RvY19fLCAibmV3IGRvY3N0cmluZyIpCiAKKyAgICBkZWYgdGVzdF9wcm9wZXJ0eV9fX2lzYWJzdHJhY3RtZXRob2RfX2Rlc2NyaXB0b3Ioc2VsZik6CisgICAgICAgIGZvciB2YWwgaW4gKFRydWUsIEZhbHNlLCBbXSwgWzFdLCAnJywgJzEnKToKKyAgICAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKKyAgICAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fID0gdmFsCisgICAgICAgICAgICAgICAgZm9vID0gcHJvcGVydHkoZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhDLmZvby5fX2lzYWJzdHJhY3RtZXRob2RfXywgYm9vbCh2YWwpKQorCisgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgcHJvcGVydHkncyBfX2lzYWJzdHJhY3RtZXRob2RfXyBkZXNjcmlwdG9yIGRvZXMgdGhlCisgICAgICAgICMgcmlnaHQgdGhpbmcgd2hlbiBwcmVzZW50ZWQgd2l0aCBhIHZhbHVlIHRoYXQgZmFpbHMgdHJ1dGggdGVzdGluZzoKKyAgICAgICAgY2xhc3MgTm90Qm9vbChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fbm9uemVyb19fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKQorICAgICAgICAgICAgX19sZW5fXyA9IF9fbm9uemVyb19fCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBDKG9iamVjdCk6CisgICAgICAgICAgICAgICAgZGVmIGZvbyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXyA9IE5vdEJvb2woKQorICAgICAgICAgICAgICAgIGZvbyA9IHByb3BlcnR5KGZvbykKKyAgICAgICAgICAgIEMuZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fCisKIAogIyBJc3N1ZSA1ODkwOiBzdWJjbGFzc2VzIG9mIHByb3BlcnR5IGRvIG5vdCBwcmVzZXJ2ZSBtZXRob2QgX19kb2NfXyBzdHJpbmdzCiBjbGFzcyBQcm9wZXJ0eVN1Yihwcm9wZXJ0eSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B0eS5weSBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CmluZGV4IDRmMTI1MWMuLmVmOTUyNjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CkBAIC0yMDUsNiArMjA1LDcgQEAKICAgICAgICAgc2VsZi5vcmlnX3N0ZG91dF9maWxlbm8gPSBwdHkuU1RET1VUX0ZJTEVOTwogICAgICAgICBzZWxmLm9yaWdfcHR5X3NlbGVjdCA9IHB0eS5zZWxlY3QKICAgICAgICAgc2VsZi5mZHMgPSBbXSAgIyBBIGxpc3Qgb2YgZmlsZSBkZXNjcmlwdG9ycyB0byBjbG9zZS4KKyAgICAgICAgc2VsZi5maWxlcyA9IFtdCiAgICAgICAgIHNlbGYuc2VsZWN0X3JmZHNfbGVuZ3RocyA9IFtdCiAgICAgICAgIHNlbGYuc2VsZWN0X3JmZHNfcmVzdWx0cyA9IFtdCiAKQEAgLTIxMiwxMCArMjEzLDE1IEBACiAgICAgICAgIHB0eS5TVERJTl9GSUxFTk8gPSBzZWxmLm9yaWdfc3RkaW5fZmlsZW5vCiAgICAgICAgIHB0eS5TVERPVVRfRklMRU5PID0gc2VsZi5vcmlnX3N0ZG91dF9maWxlbm8KICAgICAgICAgcHR5LnNlbGVjdCA9IHNlbGYub3JpZ19wdHlfc2VsZWN0CisgICAgICAgIGZvciBmaWxlIGluIHNlbGYuZmlsZXM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZvciBmZCBpbiBzZWxmLmZkczoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKLSAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiBfcGlwZShzZWxmKToKQEAgLTIyMyw2ICsyMjksMTEgQEAKICAgICAgICAgc2VsZi5mZHMuZXh0ZW5kKHBpcGVfZmRzKQogICAgICAgICByZXR1cm4gcGlwZV9mZHMKIAorICAgIGRlZiBfc29ja2V0cGFpcihzZWxmKToKKyAgICAgICAgc29ja2V0cGFpciA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgc2VsZi5maWxlcy5leHRlbmQoc29ja2V0cGFpcikKKyAgICAgICAgcmV0dXJuIHNvY2tldHBhaXIKKwogICAgIGRlZiBfbW9ja19zZWxlY3Qoc2VsZiwgcmZkcywgd2ZkcywgeGZkcyk6CiAgICAgICAgICMgVGhpcyB3aWxsIHJhaXNlIEluZGV4RXJyb3Igd2hlbiBubyBtb3JlIGV4cGVjdGVkIGNhbGxzIGV4aXN0LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VsZWN0X3JmZHNfbGVuZ3Rocy5wb3AoMCksIGxlbihyZmRzKSkKQEAgLTIzNCw5ICsyNDUsOCBAQAogICAgICAgICBwdHkuU1RET1VUX0ZJTEVOTyA9IG1vY2tfc3Rkb3V0X2ZkCiAgICAgICAgIG1vY2tfc3RkaW5fZmQsIHdyaXRlX3RvX3N0ZGluX2ZkID0gc2VsZi5fcGlwZSgpCiAgICAgICAgIHB0eS5TVERJTl9GSUxFTk8gPSBtb2NrX3N0ZGluX2ZkCi0gICAgICAgIHNvY2tldHBhaXIgPSBzb2NrZXQuc29ja2V0cGFpcigpCisgICAgICAgIHNvY2tldHBhaXIgPSBzZWxmLl9zb2NrZXRwYWlyKCkKICAgICAgICAgbWFzdGVycyA9IFtzLmZpbGVubygpIGZvciBzIGluIHNvY2tldHBhaXJdCi0gICAgICAgIHNlbGYuZmRzLmV4dGVuZChtYXN0ZXJzKQogCiAgICAgICAgICMgRmVlZCBkYXRhLiAgU21hbGxlciB0aGFuIFBJUEVCVUYuICBUaGVzZSB3cml0ZXMgd2lsbCBub3QgYmxvY2suCiAgICAgICAgIG9zLndyaXRlKG1hc3RlcnNbMV0sIGInZnJvbSBtYXN0ZXInKQpAQCAtMjYzLDkgKzI3Myw4IEBACiAgICAgICAgIHB0eS5TVERPVVRfRklMRU5PID0gbW9ja19zdGRvdXRfZmQKICAgICAgICAgbW9ja19zdGRpbl9mZCwgd3JpdGVfdG9fc3RkaW5fZmQgPSBzZWxmLl9waXBlKCkKICAgICAgICAgcHR5LlNURElOX0ZJTEVOTyA9IG1vY2tfc3RkaW5fZmQKLSAgICAgICAgc29ja2V0cGFpciA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgc29ja2V0cGFpciA9IHNlbGYuX3NvY2tldHBhaXIoKQogICAgICAgICBtYXN0ZXJzID0gW3MuZmlsZW5vKCkgZm9yIHMgaW4gc29ja2V0cGFpcl0KLSAgICAgICAgc2VsZi5mZHMuZXh0ZW5kKG1hc3RlcnMpCiAKICAgICAgICAgb3MuY2xvc2UobWFzdGVyc1sxXSkKICAgICAgICAgc29ja2V0cGFpclsxXS5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgxYTU5NQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQpAQCAtMCwwICsxLDM0NyBAQAoraW1wb3J0IGlvCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKK2ltcG9ydCB4bWwuc2F4CisKK2Zyb20geG1sLnNheC54bWxyZWFkZXIgaW1wb3J0IEF0dHJpYnV0ZXNJbXBsCitmcm9tIHhtbC5kb20gaW1wb3J0IHB1bGxkb20KKworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgZmluZGZpbGUKKworCit0c3RmaWxlID0gZmluZGZpbGUoInRlc3QueG1sIiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCisKKyMgQSBoYW5keSBYTUwgc25pcHBldCwgY29udGFpbmluZyBhdHRyaWJ1dGVzLCBhIG5hbWVzcGFjZSBwcmVmaXgsIGFuZCBhCisjIHNlbGYtY2xvc2luZyB0YWc6CitTTUFMTF9TQU1QTEUgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczp4ZGM9Imh0dHA6Ly93d3cueG1sLmNvbS9ib29rcyI+Cis8IS0tIEEgY29tbWVudCAtLT4KKzx0aXRsZT5JbnRyb2R1Y3Rpb24gdG8gWFNMPC90aXRsZT4KKzxoci8+Cis8cD48eGRjOmF1dGhvciB4ZGM6YXR0cmliPSJwcmVmaXhlZCBhdHRyaWJ1dGUiIGF0dHJpYj0ib3RoZXIgYXR0cmliIj5BLiBOYW1lc3BhY2U8L3hkYzphdXRob3I+PC9wPgorPC9odG1sPiIiIgorCisKK2NsYXNzIFB1bGxET01UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9wYXJzZShzZWxmKToKKyAgICAgICAgIiIiTWluaW1hbCB0ZXN0IG9mIERPTUV2ZW50U3RyZWFtLnBhcnNlKCkiIiIKKworICAgICAgICAjIFRoaXMganVzdCB0ZXN0cyB0aGF0IHBhcnNpbmcgZnJvbSBhIHN0cmVhbSB3b3Jrcy4gQWN0dWFsIHBhcnNlcgorICAgICAgICAjIHNlbWFudGljcyBhcmUgdGVzdGVkIHVzaW5nIHBhcnNlU3RyaW5nIHdpdGggYSBtb3JlIGZvY3VzZWQgWE1MCisgICAgICAgICMgZnJhZ21lbnQuCisKKyAgICAgICAgIyBUZXN0IHdpdGggYSBmaWxlbmFtZToKKyAgICAgICAgaGFuZGxlciA9IHB1bGxkb20ucGFyc2UodHN0ZmlsZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGhhbmRsZXIuc3RyZWFtLmNsb3NlKQorICAgICAgICBsaXN0KGhhbmRsZXIpCisKKyAgICAgICAgIyBUZXN0IHdpdGggYSBmaWxlIG9iamVjdDoKKyAgICAgICAgd2l0aCBvcGVuKHRzdGZpbGUsICJyYiIpIGFzIGZpbjoKKyAgICAgICAgICAgIGxpc3QocHVsbGRvbS5wYXJzZShmaW4pKQorCisgICAgZGVmIHRlc3RfcGFyc2Vfc2VtYW50aWNzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IERPTUV2ZW50U3RyZWFtIHBhcnNpbmcgc2VtYW50aWNzLiIiIgorCisgICAgICAgIGl0ZW1zID0gcHVsbGRvbS5wYXJzZVN0cmluZyhTTUFMTF9TQU1QTEUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgICMgSnVzdCBjaGVjayB0aGUgbm9kZSBpcyBhIERvY3VtZW50OgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihub2RlLCAiY3JlYXRlRWxlbWVudCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRE9DVU1FTlQsIGV2dCkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHRtbCIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4obm9kZS5hdHRyaWJ1dGVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub2RlLmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ4bWxuczp4ZGMiKS52YWx1ZSwKKyAgICAgICAgICAgICAgImh0dHA6Ly93d3cueG1sLmNvbS9ib29rcyIpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpICMgTGluZSBicmVhaworICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICAjIFhYWCAtIEEgY29tbWVudCBzaG91bGQgYmUgcmVwb3J0ZWQgaGVyZSEKKyAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ09NTUVOVCwgZXZ0KQorICAgICAgICAjIExpbmUgYnJlYWsgYWZ0ZXIgc3dhbGxvd2VkIGNvbW1lbnQ6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRpdGxlIiwgbm9kZS50YWdOYW1lKQorICAgICAgICB0aXRsZV9ub2RlID0gbm9kZQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJbnRyb2R1Y3Rpb24gdG8gWFNMIiwgbm9kZS5kYXRhKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGl0bGUiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0aXRsZV9ub2RlIGlzIG5vZGUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImhyIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHIiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInAiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInhkYzphdXRob3IiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ4ZGM6YXV0aG9yIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgICMgWFhYIE5vIEVORF9ET0NVTUVOVCBpdGVtIGlzIGV2ZXIgb2J0YWluZWQ6CisgICAgICAgICNldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICAjc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9ET0NVTUVOVCwgZXZ0KQorCisgICAgZGVmIHRlc3RfZXhwYW5kSXRlbShzZWxmKToKKyAgICAgICAgIiIiRW5zdXJlIGV4cGFuZEl0ZW0gd29ya3MgYXMgZXhwZWN0ZWQuIiIiCisgICAgICAgIGl0ZW1zID0gcHVsbGRvbS5wYXJzZVN0cmluZyhTTUFMTF9TQU1QTEUpCisgICAgICAgICMgTG9vcCB0aHJvdWdoIHRoZSBub2RlcyB1bnRpbCB3ZSBnZXQgdG8gYSAidGl0bGUiIHN0YXJ0IHRhZzoKKyAgICAgICAgZm9yIGV2dCwgaXRlbSBpbiBpdGVtczoKKyAgICAgICAgICAgIGlmIGV2dCA9PSBwdWxsZG9tLlNUQVJUX0VMRU1FTlQgYW5kIGl0ZW0udGFnTmFtZSA9PSAidGl0bGUiOgorICAgICAgICAgICAgICAgIGl0ZW1zLmV4cGFuZE5vZGUoaXRlbSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihpdGVtLmNoaWxkTm9kZXMpKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIFwidGl0bGVcIiBlbGVtZW50IGRldGVjdGVkIGluIFNNQUxMX1NBTVBMRSEiKQorICAgICAgICAjIExvb3AgdW50aWwgd2UgZ2V0IHRvIHRoZSBuZXh0IHN0YXJ0LWVsZW1lbnQ6CisgICAgICAgIGZvciBldnQsIG5vZGUgaW4gaXRlbXM6CisgICAgICAgICAgICBpZiBldnQgPT0gcHVsbGRvbS5TVEFSVF9FTEVNRU5UOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImhyIiwgbm9kZS50YWdOYW1lLAorICAgICAgICAgICAgImV4cGFuZE5vZGUgZGlkIG5vdCBsZWF2ZSBET01FdmVudFN0cmVhbSBpbiB0aGUgY29ycmVjdCBzdGF0ZS4iKQorICAgICAgICAjIEF0dGVtcHQgdG8gZXhwYW5kIGEgc3RhbmRhbG9uZSBlbGVtZW50OgorICAgICAgICBpdGVtcy5leHBhbmROb2RlKG5vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVtcylbMF0sIHB1bGxkb20uQ0hBUkFDVEVSUykKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub2RlLnRhZ05hbWUsICJwIikKKyAgICAgICAgaXRlbXMuZXhwYW5kTm9kZShub2RlKQorICAgICAgICBuZXh0KGl0ZW1zKSAjIFNraXAgY2hhcmFjdGVyIGRhdGEKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub2RlLnRhZ05hbWUsICJodG1sIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIG5leHQoaXRlbXMpCisgICAgICAgIGl0ZW1zLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaXRlbXMucGFyc2VyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShpdGVtcy5zdHJlYW0pCisKKyAgICBAdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgZGVmIHRlc3RfY29tbWVudChzZWxmKToKKyAgICAgICAgIiIiUHVsbERPTSBkb2VzIG5vdCByZWNlaXZlICJjb21tZW50IiBldmVudHMuIiIiCisgICAgICAgIGl0ZW1zID0gcHVsbGRvbS5wYXJzZVN0cmluZyhTTUFMTF9TQU1QTEUpCisgICAgICAgIGZvciBldnQsIF8gaW4gaXRlbXM6CisgICAgICAgICAgICBpZiBldnQgPT0gcHVsbGRvbS5DT01NRU5UOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIGNvbW1lbnQgd2FzIGVuY291bnRlcmVkIikKKworICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICBkZWYgdGVzdF9lbmRfZG9jdW1lbnQoc2VsZik6CisgICAgICAgICIiIlB1bGxET00gZG9lcyBub3QgcmVjZWl2ZSAiZW5kLWRvY3VtZW50IiBldmVudHMuIiIiCisgICAgICAgIGl0ZW1zID0gcHVsbGRvbS5wYXJzZVN0cmluZyhTTUFMTF9TQU1QTEUpCisgICAgICAgICMgUmVhZCBhbGwgb2YgdGhlIG5vZGVzIHVwIHRvIGFuZCBpbmNsdWRpbmcgPC9odG1sPjoKKyAgICAgICAgZm9yIGV2dCwgbm9kZSBpbiBpdGVtczoKKyAgICAgICAgICAgIGlmIGV2dCA9PSBwdWxsZG9tLkVORF9FTEVNRU5UIGFuZCBub2RlLnRhZ05hbWUgPT0gImh0bWwiOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgQXNzZXJ0IHRoYXQgdGhlIG5leHQgbm9kZSBpcyBFTkRfRE9DVU1FTlQ6CisgICAgICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9ET0NVTUVOVCwgZXZ0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgKKyAgICAgICAgICAgICAgICAiUmFuIG91dCBvZiBldmVudHMsIGJ1dCBzaG91bGQgaGF2ZSByZWNlaXZlZCBFTkRfRE9DVU1FTlQiKQorCisKK2NsYXNzIFRob3JvdWdoVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3QgdGhlIGhhcmQtdG8tcmVhY2ggcGFydHMgb2YgcHVsbGRvbS4iIiIKKworICAgIGRlZiB0ZXN0X3Rob3JvdWdoX3BhcnNlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHNvbWUgb2YgdGhlIGhhcmQtdG8tcmVhY2ggcGFydHMgb2YgUHVsbERPTS4iIiIKKyAgICAgICAgc2VsZi5fdGVzdF90aG9yb3VnaChwdWxsZG9tLnBhcnNlKE5vbmUsIHBhcnNlcj1TQVhFeGVyY2lzZXIoKSkpCisKKyAgICBAdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgZGVmIHRlc3Rfc2F4MmRvbV9mYWlsKHNlbGYpOgorICAgICAgICAiIiJTQVgyRE9NIGNhbiJ0IGhhbmRsZSBhIFBJIGJlZm9yZSB0aGUgcm9vdCBlbGVtZW50LiIiIgorICAgICAgICBwZCA9IFNBWDJET01UZXN0SGVscGVyKE5vbmUsIFNBWEV4ZXJjaXNlcigpLCAxMikKKyAgICAgICAgc2VsZi5fdGVzdF90aG9yb3VnaChwZCkKKworICAgIGRlZiB0ZXN0X3Rob3JvdWdoX3NheDJkb20oc2VsZik6CisgICAgICAgICIiIlRlc3Qgc29tZSBvZiB0aGUgaGFyZC10by1yZWFjaCBwYXJ0cyBvZiBTQVgyRE9NLiIiIgorICAgICAgICBwZCA9IFNBWDJET01UZXN0SGVscGVyKE5vbmUsIFNBWDJET01FeGVyY2lzZXIoKSwgMTIpCisgICAgICAgIHNlbGYuX3Rlc3RfdGhvcm91Z2gocGQsIEZhbHNlKQorCisgICAgZGVmIF90ZXN0X3Rob3JvdWdoKHNlbGYsIHBkLCBiZWZvcmVfcm9vdD1UcnVlKToKKyAgICAgICAgIiIiVGVzdCBzb21lIG9mIHRoZSBoYXJkLXRvLXJlYWNoIHBhcnRzIG9mIHRoZSBwYXJzZXIsIHVzaW5nIGEgbW9jaworICAgICAgICBwYXJzZXIuIiIiCisKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0RPQ1VNRU5ULCBldnQpCisgICAgICAgICMgSnVzdCBjaGVjayB0aGUgbm9kZSBpcyBhIERvY3VtZW50OgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihub2RlLCAiY3JlYXRlRWxlbWVudCIpKQorCisgICAgICAgIGlmIGJlZm9yZV9yb290OgorICAgICAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DT01NRU5ULCBldnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhIGNvbW1lbnQiLCBub2RlLmRhdGEpCisgICAgICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlBST0NFU1NJTkdfSU5TVFJVQ1RJT04sIGV2dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRhcmdldCIsIG5vZGUudGFyZ2V0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiZGF0YSIsIG5vZGUuZGF0YSkKKworICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJodG1sIiwgbm9kZS50YWdOYW1lKQorCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DT01NRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImEgY29tbWVudCIsIG5vZGUuZGF0YSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlBST0NFU1NJTkdfSU5TVFJVQ1RJT04sIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGFyZ2V0Iiwgbm9kZS50YXJnZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImRhdGEiLCBub2RlLmRhdGEpCisKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgicCIsIG5vZGUudGFnTmFtZSkKKworICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXh0Iiwgbm9kZS5kYXRhKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgicCIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImh0bWwiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRE9DVU1FTlQsIGV2dCkKKworCitjbGFzcyBTQVhFeGVyY2lzZXIob2JqZWN0KToKKyAgICAiIiJBIGZha2Ugc2F4IHBhcnNlciB0aGF0IGNhbGxzIHNvbWUgb2YgdGhlIGhhcmRlci10by1yZWFjaCBzYXggbWV0aG9kcyB0bworICAgIGVuc3VyZSBpdCBlbWl0cyB0aGUgY29ycmVjdCBldmVudHMiIiIKKworICAgIGRlZiBzZXRDb250ZW50SGFuZGxlcihzZWxmLCBoYW5kbGVyKToKKyAgICAgICAgc2VsZi5faGFuZGxlciA9IGhhbmRsZXIKKworICAgIGRlZiBwYXJzZShzZWxmLCBfKToKKyAgICAgICAgaCA9IHNlbGYuX2hhbmRsZXIKKyAgICAgICAgaC5zdGFydERvY3VtZW50KCkKKworICAgICAgICAjIFRoZSBuZXh0IHR3byBpdGVtcyBlbnN1cmUgdGhhdCBpdGVtcyBwcmVjZWRpbmcgdGhlIGZpcnN0CisgICAgICAgICMgc3RhcnRfZWxlbWVudCBhcmUgcHJvcGVybHkgc3RvcmVkIGFuZCBlbWl0dGVkOgorICAgICAgICBoLmNvbW1lbnQoImEgY29tbWVudCIpCisgICAgICAgIGgucHJvY2Vzc2luZ0luc3RydWN0aW9uKCJ0YXJnZXQiLCAiZGF0YSIpCisKKyAgICAgICAgaC5zdGFydEVsZW1lbnQoImh0bWwiLCBBdHRyaWJ1dGVzSW1wbCh7fSkpCisKKyAgICAgICAgaC5jb21tZW50KCJhIGNvbW1lbnQiKQorICAgICAgICBoLnByb2Nlc3NpbmdJbnN0cnVjdGlvbigidGFyZ2V0IiwgImRhdGEiKQorCisgICAgICAgIGguc3RhcnRFbGVtZW50KCJwIiwgQXR0cmlidXRlc0ltcGwoeyJjbGFzcyI6ICJwYXJhY2xhc3MifSkpCisgICAgICAgIGguY2hhcmFjdGVycygidGV4dCIpCisgICAgICAgIGguZW5kRWxlbWVudCgicCIpCisgICAgICAgIGguZW5kRWxlbWVudCgiaHRtbCIpCisgICAgICAgIGguZW5kRG9jdW1lbnQoKQorCisgICAgZGVmIHN0dWIoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiU3R1YiBtZXRob2QuIERvZXMgbm90aGluZy4iIiIKKyAgICAgICAgcGFzcworICAgIHNldFByb3BlcnR5ID0gc3R1YgorICAgIHNldEZlYXR1cmUgPSBzdHViCisKKworY2xhc3MgU0FYMkRPTUV4ZXJjaXNlcihTQVhFeGVyY2lzZXIpOgorICAgICIiIlRoZSBzYW1lIGFzIFNBWEV4ZXJjaXNlciwgYnV0IHdpdGhvdXQgdGhlIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gYW5kCisgICAgY29tbWVudCBiZWZvcmUgdGhlIHJvb3QgZWxlbWVudCwgYmVjYXVzZSBTMkQgY2FuInQgaGFuZGxlIGl0IiIiCisKKyAgICBkZWYgcGFyc2Uoc2VsZiwgXyk6CisgICAgICAgIGggPSBzZWxmLl9oYW5kbGVyCisgICAgICAgIGguc3RhcnREb2N1bWVudCgpCisgICAgICAgIGguc3RhcnRFbGVtZW50KCJodG1sIiwgQXR0cmlidXRlc0ltcGwoe30pKQorICAgICAgICBoLmNvbW1lbnQoImEgY29tbWVudCIpCisgICAgICAgIGgucHJvY2Vzc2luZ0luc3RydWN0aW9uKCJ0YXJnZXQiLCAiZGF0YSIpCisgICAgICAgIGguc3RhcnRFbGVtZW50KCJwIiwgQXR0cmlidXRlc0ltcGwoeyJjbGFzcyI6ICJwYXJhY2xhc3MifSkpCisgICAgICAgIGguY2hhcmFjdGVycygidGV4dCIpCisgICAgICAgIGguZW5kRWxlbWVudCgicCIpCisgICAgICAgIGguZW5kRWxlbWVudCgiaHRtbCIpCisgICAgICAgIGguZW5kRG9jdW1lbnQoKQorCisKK2NsYXNzIFNBWDJET01UZXN0SGVscGVyKHB1bGxkb20uRE9NRXZlbnRTdHJlYW0pOgorICAgICIiIkFsbG93cyB1cyB0byBkcml2ZSBTQVgyRE9NIGZyb20gYSBET01FdmVudFN0cmVhbS4iIiIKKworICAgIGRlZiByZXNldChzZWxmKToKKyAgICAgICAgc2VsZi5wdWxsZG9tID0gcHVsbGRvbS5TQVgyRE9NKCkKKyAgICAgICAgIyBUaGlzIGNvbnRlbnQgaGFuZGxlciByZWxpZXMgb24gbmFtZXNwYWNlIHN1cHBvcnQKKyAgICAgICAgc2VsZi5wYXJzZXIuc2V0RmVhdHVyZSh4bWwuc2F4LmhhbmRsZXIuZmVhdHVyZV9uYW1lc3BhY2VzLCAxKQorICAgICAgICBzZWxmLnBhcnNlci5zZXRDb250ZW50SGFuZGxlcihzZWxmLnB1bGxkb20pCisKKworY2xhc3MgU0FYMkRPTVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBjb25maXJtKHNlbGYsIHRlc3QsIHRlc3RuYW1lPSJUZXN0Iik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0LCB0ZXN0bmFtZSkKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgU0FYMkRPTSBjYW4gcGFyc2UgZnJvbSBhIHN0cmVhbS4iIiIKKyAgICAgICAgd2l0aCBpby5TdHJpbmdJTyhTTUFMTF9TQU1QTEUpIGFzIGZpbjoKKyAgICAgICAgICAgIHNkID0gU0FYMkRPTVRlc3RIZWxwZXIoZmluLCB4bWwuc2F4Lm1ha2VfcGFyc2VyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihTTUFMTF9TQU1QTEUpKQorICAgICAgICAgICAgZm9yIGV2dCwgbm9kZSBpbiBzZDoKKyAgICAgICAgICAgICAgICBpZiBldnQgPT0gcHVsbGRvbS5TVEFSVF9FTEVNRU5UIGFuZCBub2RlLnRhZ05hbWUgPT0gImh0bWwiOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgIyBCZWNhdXNlIHRoZSBidWZmZXIgaXMgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBYTUwsIGFsbCB0aGUKKyAgICAgICAgICAgICMgbm9kZXMgc2hvdWxkIGhhdmUgYmVlbiBwYXJzZWQgYW5kIGFkZGVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihub2RlLmNoaWxkTm9kZXMpLCAwKQorCisgICAgZGVmIHRlc3RTQVgyRE9NKHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgU0FYMkRPTSBleHBhbmRzIG5vZGVzIGFzIGV4cGVjdGVkLiIiIgorICAgICAgICBzYXgyZG9tID0gcHVsbGRvbS5TQVgyRE9NKCkKKyAgICAgICAgc2F4MmRvbS5zdGFydERvY3VtZW50KCkKKyAgICAgICAgc2F4MmRvbS5zdGFydEVsZW1lbnQoImRvYyIsIHt9KQorICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBzYXgyZG9tLnN0YXJ0RWxlbWVudCgic3ViZWxtIiwge30pCisgICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCisgICAgICAgIHNheDJkb20uZW5kRWxlbWVudCgic3ViZWxtIikKKyAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKKyAgICAgICAgc2F4MmRvbS5lbmRFbGVtZW50KCJkb2MiKQorICAgICAgICBzYXgyZG9tLmVuZERvY3VtZW50KCkKKworICAgICAgICBkb2MgPSBzYXgyZG9tLmRvY3VtZW50CisgICAgICAgIHJvb3QgPSBkb2MuZG9jdW1lbnRFbGVtZW50CisgICAgICAgICh0ZXh0MSwgZWxtMSwgdGV4dDIpID0gcm9vdC5jaGlsZE5vZGVzCisgICAgICAgIHRleHQzID0gZWxtMS5jaGlsZE5vZGVzWzBdCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodGV4dDEucHJldmlvdXNTaWJsaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzKHRleHQxLm5leHRTaWJsaW5nLCBlbG0xKQorICAgICAgICBzZWxmLmFzc2VydElzKGVsbTEucHJldmlvdXNTaWJsaW5nLCB0ZXh0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhlbG0xLm5leHRTaWJsaW5nLCB0ZXh0MikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0Mi5wcmV2aW91c1NpYmxpbmcsIGVsbTEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRleHQyLm5leHRTaWJsaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0ZXh0My5wcmV2aW91c1NpYmxpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRleHQzLm5leHRTaWJsaW5nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdC5wYXJlbnROb2RlLCBkb2MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dDEucGFyZW50Tm9kZSwgcm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhlbG0xLnBhcmVudE5vZGUsIHJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dDIucGFyZW50Tm9kZSwgcm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0My5wYXJlbnROb2RlLCBlbG0xKQorICAgICAgICBkb2MudW5saW5rKCkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KFB1bGxET01UZXN0Q2FzZSwgVGhvcm91Z2hUZXN0Q2FzZSwgU0FYMkRPTVRlc3RDYXNlKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CmluZGV4IGM1YThlOTguLjhlMjAwMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQpAQCAtMTk4LDcgKzE5OCw3IEBACiBtaXNzaW5nX3BhdHRlcm4gPSAibm8gUHl0aG9uIGRvY3VtZW50YXRpb24gZm91bmQgZm9yICclcyciCiAKICMgb3V0cHV0IHBhdHRlcm4gZm9yIG1vZHVsZSB3aXRoIGJhZCBpbXBvcnRzCi1iYWRpbXBvcnRfcGF0dGVybiA9ICJwcm9ibGVtIGluICVzIC0gSW1wb3J0RXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlcyIKK2JhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBJbXBvcnRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICVyIgogCiBkZWYgcnVuX3B5ZG9jKG1vZHVsZV9uYW1lLCAqYXJncywgKiplbnYpOgogICAgICIiIgpAQCAtMjM2LDggKzIzNiw4IEBACiBkZWYgcHJpbnRfZGlmZnModGV4dDEsIHRleHQyKToKICAgICAiUHJpbnRzIHVuaWZpZWQgZGlmZnMgZm9yIHR3byB0ZXh0cyIKICAgICAjIFhYWCBub3cgb2Jzb2xldGUsIHVzZSB1bml0dGVzdCBidWlsdC1pbiBzdXBwb3J0Ci0gICAgbGluZXMxID0gdGV4dDEuc3BsaXRsaW5lcyhUcnVlKQotICAgIGxpbmVzMiA9IHRleHQyLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICBsaW5lczEgPSB0ZXh0MS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCisgICAgbGluZXMyID0gdGV4dDIuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgIGRpZmZzID0gZGlmZmxpYi51bmlmaWVkX2RpZmYobGluZXMxLCBsaW5lczIsIG49MCwgZnJvbWZpbGU9J2V4cGVjdGVkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZmlsZT0nZ290JykKICAgICBwcmludCgnXG4nICsgJycuam9pbihkaWZmcykpCkBAIC0yNTQsNiArMjU0LDggQEAKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxzX18gdW5leHBlY3RlZGx5JykKICAgICBkZWYgdGVzdF9odG1sX2RvYyhzZWxmKToKICAgICAgICAgcmVzdWx0LCBkb2NfbG9jID0gZ2V0X3B5ZG9jX2h0bWwocHlkb2NfbW9kKQogICAgICAgICBtb2RfZmlsZSA9IGluc3BlY3QuZ2V0YWJzZmlsZShweWRvY19tb2QpCkBAIC0yNjksNiArMjcxLDggQEAKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxzX18gdW5leHBlY3RlZGx5JykKICAgICBkZWYgdGVzdF90ZXh0X2RvYyhzZWxmKToKICAgICAgICAgcmVzdWx0LCBkb2NfbG9jID0gZ2V0X3B5ZG9jX3RleHQocHlkb2NfbW9kKQogICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfdGV4dF9wYXR0ZXJuICUgXApAQCAtMzIxLDYgKzMyNSw4IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgJ0RvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlJykKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2Fsc19fIHVuZXhwZWN0ZWRseScpCiAgICAgZGVmIHRlc3RfaGVscF9vdXRwdXRfcmVkaXJlY3Qoc2VsZik6CiAgICAgICAgICMgaXNzdWUgOTQwMjg2LCBpZiBvdXRwdXQgaXMgc2V0IGluIEhlbHBlciwgdGhlbiBhbGwgb3V0cHV0IGZyb20KICAgICAgICAgIyBIZWxwZXIuaGVscCBzaG91bGQgYmUgcmVkaXJlY3RlZApAQCAtMzg4LDExICszOTQsMTAgQEAKICAgICAgICAgbW9kbmFtZSA9ICd0ZXN0bW9kX3h5enp5JwogICAgICAgICB0ZXN0cGFpcnMgPSAoCiAgICAgICAgICAgICAoJ2lfYW1fbm90X2hlcmUnLCAnaV9hbV9ub3RfaGVyZScpLAotICAgICAgICAgICAgKCd0ZXN0LmlfYW1fbm90X2hlcmVfZWl0aGVyJywgJ2lfYW1fbm90X2hlcmVfZWl0aGVyJyksCi0gICAgICAgICAgICAoJ3Rlc3QuaV9hbV9ub3RfaGVyZS5uZWl0aGVyX2FtX2knLCAnaV9hbV9ub3RfaGVyZS5uZWl0aGVyX2FtX2knKSwKLSAgICAgICAgICAgICgnaV9hbV9ub3RfaGVyZS57fScuZm9ybWF0KG1vZG5hbWUpLAotICAgICAgICAgICAgICdpX2FtX25vdF9oZXJlLnt9Jy5mb3JtYXQobW9kbmFtZSkpLAotICAgICAgICAgICAgKCd0ZXN0Lnt9Jy5mb3JtYXQobW9kbmFtZSksIG1vZG5hbWUpLAorICAgICAgICAgICAgKCd0ZXN0LmlfYW1fbm90X2hlcmVfZWl0aGVyJywgJ3Rlc3QuaV9hbV9ub3RfaGVyZV9laXRoZXInKSwKKyAgICAgICAgICAgICgndGVzdC5pX2FtX25vdF9oZXJlLm5laXRoZXJfYW1faScsICd0ZXN0LmlfYW1fbm90X2hlcmUnKSwKKyAgICAgICAgICAgICgnaV9hbV9ub3RfaGVyZS57fScuZm9ybWF0KG1vZG5hbWUpLCAnaV9hbV9ub3RfaGVyZScpLAorICAgICAgICAgICAgKCd0ZXN0Lnt9Jy5mb3JtYXQobW9kbmFtZSksICd0ZXN0Lnt9Jy5mb3JtYXQobW9kbmFtZSkpLAogICAgICAgICAgICAgKQogCiAgICAgICAgIHNvdXJjZWZuID0gb3MucGF0aC5qb2luKFRFU1RGTiwgbW9kbmFtZSkgKyBvcy5leHRzZXAgKyAicHkiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5IGIvTGliL3Rlc3QvdGVzdF9yYWlzZS5weQppbmRleCBlMDJjMWFmLi5iZTVjMWM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkKQEAgLTQsNiArNCw3IEBACiAiIiJUZXN0cyBmb3IgdGhlIHJhaXNlIHN0YXRlbWVudC4iIiIKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CkBAIC03Nyw2ICs3OCwxNiBAQAogICAgICAgICAgICAgICAgIG5lc3RlZF9yZXJhaXNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXJhaXNlKQogCisgICAgZGVmIHRlc3RfcmFpc2VfZnJvbV9Ob25lKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmb28iKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKSBmcm9tIE5vbmUKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGUuX19jb250ZXh0X18sIFR5cGVFcnJvcikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKKwogICAgIGRlZiB0ZXN0X3dpdGhfcmVyYWlzZTEoc2VsZik6CiAgICAgICAgIGRlZiByZXJhaXNlKCk6CiAgICAgICAgICAgICB0cnk6CkBAIC0xMzAsOCArMTQxLDM1IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHJhaXNlIE15RXhjZXB0aW9uCiAKKyAgICBkZWYgdGVzdF9hc3NlcnRfd2l0aF90dXBsZV9hcmcoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFzc2VydCBGYWxzZSwgKDMsKQorICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiKDMsKSIpCisKKwogCiBjbGFzcyBUZXN0Q2F1c2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RDYXVzZVN5bnRheChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciBmcm9tIE5vbmUKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMuX19jYXVzZV9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGMuX19zdXBwcmVzc19jb250ZXh0X18pCisgICAgICAgICAgICAgICAgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fID0gRmFsc2UKKyAgICAgICAgICAgICAgICByYWlzZSBleGMKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgZSA9IGV4YworCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUuX19zdXBwcmVzc19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLl9fY29udGV4dF9fLCBUeXBlRXJyb3IpCisKICAgICBkZWYgdGVzdF9pbnZhbGlkX2NhdXNlKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yIGZyb20gNQpAQCAtMTcxLDYgKzIwOSw3IEBACiAKIAogY2xhc3MgVGVzdFRyYWNlYmFjayh1bml0dGVzdC5UZXN0Q2FzZSk6CisKICAgICBkZWYgdGVzdF9zZXRzX3RyYWNlYmFjayhzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5CmluZGV4IDc3NmQwYzQuLmI1OTMxYmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5CkBAIC0zNCw4ICszNCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmRzZXEsIHNlbGYucmFuZG9tbGlzdChOKSkKIAogICAgIGRlZiB0ZXN0X3NlZWRhcmdzKHNlbGYpOgorICAgICAgICAjIFNlZWQgdmFsdWUgd2l0aCBhIG5lZ2F0aXZlIGhhc2guCisgICAgICAgIGNsYXNzIE15U2VlZChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAtMTcyOQogICAgICAgICBmb3IgYXJnIGluIFtOb25lLCAwLCAwLCAxLCAxLCAtMSwgLTEsIDEwKioyMCwgLSgxMCoqMjApLAotICAgICAgICAgICAgICAgICAgICAzLjE0LCAxKzJqLCAnYScsIHR1cGxlKCdhYmMnKV06CisgICAgICAgICAgICAgICAgICAgIDMuMTQsIDErMmosICdhJywgdHVwbGUoJ2FiYycpLCBNeVNlZWQoKV06CiAgICAgICAgICAgICBzZWxmLmdlbi5zZWVkKGFyZykKICAgICAgICAgZm9yIGFyZyBpbiBbbGlzdChyYW5nZSgzKSksIGRpY3Qob25lPTEpXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5nZW4uc2VlZCwgYXJnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKaW5kZXggZWRlMDc5MS4uZjE4MDQ2ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CkBAIC0zNDEsMTMgKzM0MSwzNSBAQAogCiAgICAgZGVmIHRlc3RfcGlja2xpbmcoc2VsZik6CiAgICAgICAgIHRlc3RjYXNlcyA9IFsoMTMsKSwgKDAsIDExKSwgKC0yMiwgMTApLCAoMjAsIDMsIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgICgxMywgMjEsIDMpLCAoLTIsIDIsIDIpXQorICAgICAgICAgICAgICAgICAgICAgKDEzLCAyMSwgMyksICgtMiwgMiwgMiksICgyKio2NSwgMioqNjUrMildCiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgZm9yIHQgaW4gdGVzdGNhc2VzOgogICAgICAgICAgICAgICAgIHIgPSByYW5nZSgqdCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhyLCBwcm90bykpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocikpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgdGVzdGNhc2VzID0gWygxMywpLCAoMCwgMTEpLCAoLTIyLCAxMCksICgyMCwgMywgLTEpLAorICAgICAgICAgICAgICAgICAgICAgKDEzLCAyMSwgMyksICgtMiwgMiwgMiksICgyKio2NSwgMioqNjUrMildCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgZm9yIHQgaW4gdGVzdGNhc2VzOgorICAgICAgICAgICAgICAgIGl0ID0gaXRvcmcgPSBpdGVyKHJhbmdlKCp0KSkKKyAgICAgICAgICAgICAgICBkYXRhID0gbGlzdChyYW5nZSgqdCkpCisKKyAgICAgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgZGF0YSkKKworICAgICAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBuZXh0KGl0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBkYXRhWzE6XSkKKwogICAgIGRlZiB0ZXN0X29kZF9idWcoc2VsZik6CiAgICAgICAgICMgVGhpcyB1c2VkIHRvIHJhaXNlIGEgIlN5c3RlbUVycm9yOiBOVUxMIHJlc3VsdCB3aXRob3V0IGVycm9yIgogICAgICAgICAjIGJlY2F1c2UgdGhlIHJhbmdlIHZhbGlkYXRpb24gc3RlcCB3YXMgZWF0aW5nIHRoZSBleGNlcHRpb24KQEAgLTUwNyw2ICs1MjksODcgQEAKICAgICAgICAgICAgICAgICBmb3IgayBpbiB2YWx1ZXMgLSB7MH06CiAgICAgICAgICAgICAgICAgICAgIHJbaTpqOmtdCiAKKyAgICBkZWYgdGVzdF9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICB0ZXN0X3JhbmdlcyA9IFtyYW5nZSgwKSwgcmFuZ2UoMCwgLTEpLCByYW5nZSgxLCAxLCAzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UoMSksIHJhbmdlKDUsIDYpLCByYW5nZSg1LCA2LCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UoNSwgNywgMiksIHJhbmdlKDIpLCByYW5nZSgwLCA0LCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UoMCwgNSwgMiksIHJhbmdlKDAsIDYsIDIpXQorICAgICAgICB0ZXN0X3R1cGxlcyA9IGxpc3QobWFwKHR1cGxlLCB0ZXN0X3JhbmdlcykpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IGVxdWFsaXR5IG9mIHJhbmdlcyBtYXRjaGVzIGVxdWFsaXR5IG9mIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICMgdHVwbGVzIGZvciBlYWNoIHBhaXIgZnJvbSB0aGUgdGVzdCBsaXN0cyBhYm92ZS4KKyAgICAgICAgcmFuZ2VzX2VxID0gW2EgPT0gYiBmb3IgYSBpbiB0ZXN0X3JhbmdlcyBmb3IgYiBpbiB0ZXN0X3Jhbmdlc10KKyAgICAgICAgdHVwbGVzX2VxID0gW2EgPT0gYiBmb3IgYSBpbiB0ZXN0X3R1cGxlcyBmb3IgYiBpbiB0ZXN0X3R1cGxlc10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZXNfZXEsIHR1cGxlc19lcSkKKworICAgICAgICAjIENoZWNrIHRoYXQgIT0gY29ycmVjdGx5IGdpdmVzIHRoZSBsb2dpY2FsIG5lZ2F0aW9uIG9mID09CisgICAgICAgIHJhbmdlc19uZSA9IFthICE9IGIgZm9yIGEgaW4gdGVzdF9yYW5nZXMgZm9yIGIgaW4gdGVzdF9yYW5nZXNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2VzX25lLCBbbm90IHggZm9yIHggaW4gcmFuZ2VzX2VxXSkKKworICAgICAgICAjIEVxdWFsIHJhbmdlcyBzaG91bGQgaGF2ZSBlcXVhbCBoYXNoZXMuCisgICAgICAgIGZvciBhIGluIHRlc3RfcmFuZ2VzOgorICAgICAgICAgICAgZm9yIGIgaW4gdGVzdF9yYW5nZXM6CisgICAgICAgICAgICAgICAgaWYgYSA9PSBiOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goYSksIGhhc2goYikpCisKKyAgICAgICAgIyBSYW5nZXMgYXJlIHVuZXF1YWwgdG8gb3RoZXIgdHlwZXMgKGV2ZW4gc2VxdWVuY2UgdHlwZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmFuZ2UoMCkgPT0gKCksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydElzKCgpID09IHJhbmdlKDApLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyYW5nZSgyKSA9PSBbMCwgMV0sIEZhbHNlKQorCisgICAgICAgICMgSHVnZSBpbnRlZ2VycyBhcmVuJ3QgYSBwcm9ibGVtLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlKDAsIDIqKjEwMCAtIDEsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDAsIDIqKjEwMCwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChyYW5nZSgwLCAyKioxMDAgLSAxLCAyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChyYW5nZSgwLCAyKioxMDAsIDIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyYW5nZSgwLCAyKioxMDAsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDAsIDIqKjEwMCArIDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlKDIqKjIwMCwgMioqMjAxIC0gMioqOTksIDIqKjEwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UoMioqMjAwLCAyKioyMDEsIDIqKjEwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChyYW5nZSgyKioyMDAsIDIqKjIwMSAtIDIqKjk5LCAyKioxMDApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKHJhbmdlKDIqKjIwMCwgMioqMjAxLCAyKioxMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyYW5nZSgyKioyMDAsIDIqKjIwMSwgMioqMTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgyKioyMDAsIDIqKjIwMSArIDEsIDIqKjEwMCkpCisKKyAgICAgICAgIyBPcmRlciBjb21wYXJpc29ucyBhcmUgbm90IGltcGxlbWVudGVkIGZvciByYW5nZXMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlKDApIDwgcmFuZ2UoMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2UoMCkgPiByYW5nZSgwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICByYW5nZSgwKSA8PSByYW5nZSgwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICByYW5nZSgwKSA+PSByYW5nZSgwKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICAjIHRlc3QgdGhlIHN0YXJ0LCBzdG9wIGFuZCBzdGVwIGF0dHJpYnV0ZXMgb2YgcmFuZ2Ugb2JqZWN0cworICAgICAgICBzZWxmLmFzc2VydF9hdHRycyhyYW5nZSgwKSwgMCwgMCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMTApLCAwLCAxMCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoLTEwKSwgMCwgLTEwLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRycyhyYW5nZSgwLCAxMCwgMSksIDAsIDEwLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRycyhyYW5nZSgwLCAxMCwgMyksIDAsIDEwLCAzKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRycyhyYW5nZSgxMCwgMCwgLTEpLCAxMCwgMCwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDEwLCAwLCAtMyksIDEwLCAwLCAtMykKKworICAgIGRlZiBhc3NlcnRfYXR0cnMoc2VsZiwgcmFuZ2VvYmosIHN0YXJ0LCBzdG9wLCBzdGVwKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZW9iai5zdGFydCwgc3RhcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2VvYmouc3RvcCwgc3RvcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZW9iai5zdGVwLCBzdGVwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2VvYmouc3RhcnQgPSAwCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2VvYmouc3RvcCA9IDEwCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2VvYmouc3RlcCA9IDEKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGRlbCByYW5nZW9iai5zdGFydAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGRlbCByYW5nZW9iai5zdG9wCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgZGVsIHJhbmdlb2JqLnN0ZXAKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoUmFuZ2VUZXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmUucHkKaW5kZXggOTQwYmEzOS4uOWIwYWE3NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CkBAIC00NjYsNyArNDY2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNwYW4oKSwgc3BhbikKIAogICAgIGRlZiB0ZXN0X3JlX2VzY2FwZShzZWxmKToKLSAgICAgICAgYWxudW1fY2hhcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKKyAgICAgICAgYWxudW1fY2hhcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAnXycKICAgICAgICAgcCA9ICcnLmpvaW4oY2hyKGkpIGZvciBpIGluIHJhbmdlKDI1NikpCiAgICAgICAgIGZvciBjIGluIHA6CiAgICAgICAgICAgICBpZiBjIGluIGFsbnVtX2NoYXJzOgpAQCAtNDc5LDcgKzQ3OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0TWF0Y2gocmUuZXNjYXBlKHApLCBwKQogCiAgICAgZGVmIHRlc3RfcmVfZXNjYXBlX2J5dGUoc2VsZik6Ci0gICAgICAgIGFsbnVtX2NoYXJzID0gKHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cykuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGFsbnVtX2NoYXJzID0gKHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdfJykuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgIHAgPSBieXRlcyhyYW5nZSgyNTYpKQogICAgICAgICBmb3IgaSBpbiBwOgogICAgICAgICAgICAgYiA9IGJ5dGVzKFtpXSkKQEAgLTUyNiwyNCArNTI2LDkyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLmNvbXBpbGUoJ15wYXR0ZXJuJCcsIGZsYWcpLCBOb25lKQogCiAgICAgZGVmIHRlc3Rfc3JlX2NoYXJhY3Rlcl9saXRlcmFscyhzZWxmKToKLSAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTVdOgotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlwlMDNvIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiXCUwM28wIiAlIGksIGNocihpKSsiMCIpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlwlMDNvOCIgJSBpLCBjaHIoaSkrIjgiKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJceCUwMngiICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJceCUwMngwIiAlIGksIGNocihpKSsiMCIpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlx4JTAyeHoiICUgaSwgY2hyKGkpKyJ6IiksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgIlw5MTEiLCAiIikKKyAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTUsIDI1NiwgMHhGRkZGLCAweDEwMDAwLCAweDEwRkZGRl06CisgICAgICAgICAgICBpZiBpIDwgMjU2OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXCUwM28iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwlMDNvMCIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwlMDNvOCIgJSBpLCBjaHIoaSkrIjgiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx4JTAyeCIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHglMDJ4MCIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx4JTAyeHoiICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgICAgICBpZiBpIDwgMHgxMDAwMDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx1JTA0eCIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHUlMDR4MCIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx1JTA0eHoiICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlxVJTA4eCIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcVSUwOHgwIiAlIGksIGNocihpKSsiMCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcVSUwOHh6IiAlIGksIGNocihpKSsieiIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwwIiwgIlwwMDAiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcMDgiLCAiXDAwMDgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcMDEiLCAiXDAwMSIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwwMTgiLCAiXDAwMTgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcNTY3IiwgY2hyKDBvMTY3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcOTExIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJceDEiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx4MXoiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx1MTIzIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcdTEyM3oiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlxVMDAwMTIzNCIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDAxMjM0eiIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDExMDAwMCIsICIiKQogCiAgICAgZGVmIHRlc3Rfc3JlX2NoYXJhY3Rlcl9jbGFzc19saXRlcmFscyhzZWxmKToKKyAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTUsIDI1NiwgMHhGRkZGLCAweDEwMDAwLCAweDEwRkZGRl06CisgICAgICAgICAgICBpZiBpIDwgMjU2OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlb10iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcJW84XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlMDNvXSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlMDNvMF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcJTAzbzhdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHglMDJ4XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x4JTAyeDBdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHglMDJ4el0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgIGlmIGkgPCAweDEwMDAwOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x1JTA0eF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcdSUwNHgwXSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x1JTA0eHpdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcVSUwOHhdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcVSUwOHgwXSIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1xVJTA4eHpdIiAlIGksIGNocihpKSsieiIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1w5MTFdIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXHgxel0iLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcdTEyM3pdIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXFUwMDAxMjM0el0iLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcVTAwMTEwMDAwXSIsICIiKQorCisgICAgZGVmIHRlc3Rfc3JlX2J5dGVfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1XToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXCUwM29dIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1wlMDNvMF0iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXCUwM284XSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltceCUwMnhdIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1x4JTAyeDBdIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1x4JTAyeHpdIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgIltcOTExXSIsICIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXCUwM28iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXCUwM28wIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IiMCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXCUwM284IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IiOCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXHglMDJ4IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlx4JTAyeDAiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiIwIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJceCUwMnh6IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IieiIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcdSIsIGIndScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcVSIsIGInVScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcMCIsIGIiXDAwMCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcMDgiLCBiIlwwMDA4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlwwMSIsIGIiXDAwMSIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcMDE4IiwgYiJcMDAxOCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcNTY3IiwgYnl0ZXMoWzBvMTY3XSkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIlw5MTEiLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiXHgxIiwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIlx4MXoiLCBiIiIpCisKKyAgICBkZWYgdGVzdF9zcmVfYnl0ZV9jbGFzc19saXRlcmFscyhzZWxmKToKKyAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTVdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1wlb10iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1wlbzhdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltcJTAzb10iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1wlMDNvMF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1wlMDNvOF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1x4JTAyeF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1x4JTAyeDBdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltceCUwMnh6XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIltcdV0iLCBiJ3UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiW1xVXSIsIGInVScpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIltcOTExXSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIltceDF6XSIsICIiKQogCiAgICAgZGVmIHRlc3RfYnVnXzExMzI1NChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJyhhKXwoYiknLCAnYicpLnN0YXJ0KDEpLCAtMSkKQEAgLTY1Miw2ICs3MjAsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXRlbS5ncm91cCgwKSBmb3IgaXRlbSBpbiBpdGVyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbIjoiLCAiOjoiLCAiOjo6Il0pCiAKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyIjorIikKKyAgICAgICAgaXRlciA9IHBhdC5maW5kaXRlcigiYTpiOjpjOjo6ZCIsIDEsIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpdGVtLmdyb3VwKDApIGZvciBpdGVtIGluIGl0ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsiOiIsICI6OiIsICI6OjoiXSkKKworICAgICAgICBwYXQgPSByZS5jb21waWxlKHIiOisiKQorICAgICAgICBpdGVyID0gcGF0LmZpbmRpdGVyKCJhOmI6OmM6OjpkIiwgcG9zPTEsIGVuZHBvcz0xMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXRlbS5ncm91cCgwKSBmb3IgaXRlbSBpbiBpdGVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbIjoiLCAiOjoiLCAiOjo6Il0pCisKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyIjorIikKKyAgICAgICAgaXRlciA9IHBhdC5maW5kaXRlcigiYTpiOjpjOjo6ZCIsIGVuZHBvcz0xMCwgcG9zPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2l0ZW0uZ3JvdXAoMCkgZm9yIGl0ZW0gaW4gaXRlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyI6IiwgIjo6IiwgIjo6OiJdKQorCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUociI6KyIpCisgICAgICAgIGl0ZXIgPSBwYXQuZmluZGl0ZXIoImE6Yjo6Yzo6OmQiLCBwb3M9MywgZW5kcG9zPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2l0ZW0uZ3JvdXAoMCkgZm9yIGl0ZW0gaW4gaXRlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyI6OiIsICI6OiJdKQorCiAgICAgZGVmIHRlc3RfYnVnXzkyNjA3NShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLmNvbXBpbGUoJ2J1Z185MjYwNzUnKSBpcyBub3QKICAgICAgICAgICAgICAgICAgICAgIHJlLmNvbXBpbGUoYididWdfOTI2MDc1JykpCkBAIC04MTgsNiArOTA2LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIF9zcmUuY29tcGlsZSwgImFiYyIsIDAsIFtsb25nX292ZXJmbG93XSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfc3JlLmNvbXBpbGUsIHt9LCAwLCBbXSkKIAorICAgIGRlZiB0ZXN0X3NlYXJjaF9kb3RfdW5pY29kZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzYWJjLScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5zZWFyY2goIjEyMy4qLSIsICcxMjNceGU5LScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5zZWFyY2goIjEyMy4qLSIsICcxMjNcdTIwYWMtJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLnNlYXJjaCgiMTIzLiotIiwgJzEyM1xVMDAxMGZmZmYtJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLnNlYXJjaCgiMTIzLiotIiwgJzEyM1x4ZTlcdTIwYWNcVTAwMTBmZmZmLScpKQorCiAgICAgZGVmIHRlc3RfY29tcGlsZShzZWxmKToKICAgICAgICAgIyBUZXN0IHJldHVybiB2YWx1ZSB3aGVuIGdpdmVuIHN0cmluZyBhbmQgcGF0dGVybiBhcyBwYXJhbWV0ZXIKICAgICAgICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoJ3JhbmRvbSBwYXR0ZXJuJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weQppbmRleCBiMGRjNGQ3Li41ODllY2RkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5CkBAIC0zLDEyICszLDE0IEBACiAgIE5pY2sgTWF0aGV3c29uCiAiIiIKIAoraW1wb3J0IGltcAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY3JlYXRlX2VtcHR5X2ZpbGUsIHZlcmJvc2UKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVwciBhcyByICMgRG9uJ3Qgc2hhZG93IGJ1aWx0aW4gcmVwcgogZnJvbSByZXBybGliIGltcG9ydCBSZXByCiBmcm9tIHJlcHJsaWIgaW1wb3J0IHJlY3Vyc2l2ZV9yZXByCkBAIC0xMjksOCArMTMxLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbihzLmZpbmQoIi4uLiIpLCBbMTIsIDEzXSkKIAogICAgIGRlZiB0ZXN0X2xhbWJkYShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIobGFtYmRhIHg6IHgpLnN0YXJ0c3dpdGgoCi0gICAgICAgICAgICAiPGZ1bmN0aW9uIDxsYW1iZGEiKSkKKyAgICAgICAgciA9IHJlcHIobGFtYmRhIHg6IHgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YXJ0c3dpdGgoIjxmdW5jdGlvbiBSZXByVGVzdHMudGVzdF9sYW1iZGEuPGxvY2Fscz4uPGxhbWJkYSIpLCByKQogICAgICAgICAjIFhYWCBhbm9ueW1vdXMgZnVuY3Rpb25zPyAgc2VlIGZ1bmNfcmVwcgogCiAgICAgZGVmIHRlc3RfYnVpbHRpbl9mdW5jdGlvbihzZWxmKToKQEAgLTE5MywyNiArMTk1LDI5IEBACiAgICAgICAgIHIoeSkKICAgICAgICAgcih6KQogCi1kZWYgdG91Y2gocGF0aCwgdGV4dD0nJyk6Ci0gICAgZnAgPSBvcGVuKHBhdGgsICd3JykKLSAgICBmcC53cml0ZSh0ZXh0KQotICAgIGZwLmNsb3NlKCkKK2RlZiB3cml0ZV9maWxlKHBhdGgsIHRleHQpOgorICAgIHdpdGggb3BlbihwYXRoLCAndycsIGVuY29kaW5nPSdBU0NJSScpIGFzIGZwOgorICAgICAgICBmcC53cml0ZSh0ZXh0KQogCiBjbGFzcyBMb25nUmVwclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGxvbmduYW1lID0gJ2FyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbicKKwogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgbG9uZ25hbWUgPSAnYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uJwotICAgICAgICBzZWxmLnBrZ25hbWUgPSBvcy5wYXRoLmpvaW4obG9uZ25hbWUpCi0gICAgICAgIHNlbGYuc3VicGtnbmFtZSA9IG9zLnBhdGguam9pbihsb25nbmFtZSwgbG9uZ25hbWUpCisgICAgICAgIHNlbGYucGtnbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLmxvbmduYW1lKQorICAgICAgICBzZWxmLnN1YnBrZ25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5sb25nbmFtZSwgc2VsZi5sb25nbmFtZSkKICAgICAgICAgIyBNYWtlIHRoZSBwYWNrYWdlIGFuZCBzdWJwYWNrYWdlCiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5wa2duYW1lLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYucGtnbmFtZSkKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYucGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbihzZWxmLnBrZ25hbWUsICdfX2luaXRfXy5weScpKQogICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuc3VicGtnbmFtZSwgaWdub3JlX2Vycm9ycz1UcnVlKQogICAgICAgICBvcy5ta2RpcihzZWxmLnN1YnBrZ25hbWUpCi0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdfX2luaXRfXy5weScpKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCAnX19pbml0X18ucHknKSkKICAgICAgICAgIyBSZW1lbWJlciB3aGVyZSB3ZSBhcmUKICAgICAgICAgc2VsZi5oZXJlID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHNlbGYuaGVyZSkKKyAgICAgICAgIyBXaGVuIHJlZ3J0ZXN0IGlzIHJ1biB3aXRoIGl0cyAtaiBvcHRpb24sIHRoaXMgY29tbWFuZCBhbG9uZSBpcyBub3QKKyAgICAgICAgIyBlbm91Z2guCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGFjdGlvbnMgPSBbXQpAQCAtMjI5LDIwICsyMzQsNDAgQEAKICAgICAgICAgICAgICAgICBvcy5yZW1vdmUocCkKICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCiAKKyAgICBkZWYgX2NoZWNrX3BhdGhfbGltaXRhdGlvbnMoc2VsZiwgbW9kdWxlX25hbWUpOgorICAgICAgICAjIGJhc2UgZGlyZWN0b3J5CisgICAgICAgIHNvdXJjZV9wYXRoX2xlbiA9IGxlbihzZWxmLmhlcmUpCisgICAgICAgICMgYSBwYXRoIHNlcGFyYXRvciArIGBsb25nbmFtZWAgKHR3aWNlKQorICAgICAgICBzb3VyY2VfcGF0aF9sZW4gKz0gMiAqIChsZW4oc2VsZi5sb25nbmFtZSkgKyAxKQorICAgICAgICAjIGEgcGF0aCBzZXBhcmF0b3IgKyBgbW9kdWxlX25hbWVgICsgIi5weSIKKyAgICAgICAgc291cmNlX3BhdGhfbGVuICs9IGxlbihtb2R1bGVfbmFtZSkgKyAxICsgbGVuKCIucHkiKQorICAgICAgICBjYWNoZWRfcGF0aF9sZW4gPSBzb3VyY2VfcGF0aF9sZW4gKyBsZW4oaW1wLmNhY2hlX2Zyb21fc291cmNlKCJ4LnB5IikpIC0gbGVuKCJ4LnB5IikKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnIGFuZCBjYWNoZWRfcGF0aF9sZW4gPj0gMjU4OgorICAgICAgICAgICAgIyBVbmRlciBXaW5kb3dzLCB0aGUgbWF4IHBhdGggbGVuIGlzIDI2MCBpbmNsdWRpbmcgQydzIHRlcm1pbmF0aW5nCisgICAgICAgICAgICAjIE5VTCBjaGFyYWN0ZXIuCisgICAgICAgICAgICAjIChzZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM2NTI0NyUyOHY9dnMuODUlMjkuYXNweCNtYXhwYXRoKQorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidGVzdCBwYXRocyB0b28gbG9uZyAoJWQgY2hhcmFjdGVycykgZm9yIFdpbmRvd3MnIDI2MCBjaGFyYWN0ZXIgbGltaXQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICUgY2FjaGVkX3BhdGhfbGVuKQorICAgICAgICBlbGlmIG9zLm5hbWUgPT0gJ250JyBhbmQgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCJjYWNoZWRfcGF0aF9sZW4gPSIsIGNhY2hlZF9wYXRoX2xlbikKKwogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKLSAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsIHNlbGYucGtnbmFtZSArICcucHknKSkKKyAgICAgICAgc2VsZi5fY2hlY2tfcGF0aF9saW1pdGF0aW9ucyhzZWxmLnBrZ25hbWUpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsIHNlbGYucGtnbmFtZSArICcucHknKSkKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgZnJvbSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uIGltcG9ydCBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24KLSAgICAgICAgZXEocmVwcihhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24pLAotICAgICAgICAgICAiPG1vZHVsZSAnJXMnIGZyb20gJyVzJz4iICUgKGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5fX25hbWVfXywgYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uLl9fZmlsZV9fKSkKLSAgICAgICAgZXEocmVwcihzeXMpLCAiPG1vZHVsZSAnc3lzJyAoYnVpbHQtaW4pPiIpCisgICAgICAgIG1vZHVsZSA9IGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9kdWxlKSwgIjxtb2R1bGUgJXIgZnJvbSAlcj4iICUgKG1vZHVsZS5fX25hbWVfXywgbW9kdWxlLl9fZmlsZV9fKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHN5cyksICI8bW9kdWxlICdzeXMnIChidWlsdC1pbik+IikKIAogICAgIGRlZiB0ZXN0X3R5cGUoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX3BhdGhfbGltaXRhdGlvbnMoJ2ZvbycpCiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAotICAgICAgICB0b3VjaChvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCAnZm9vLnB5JyksICcnJ1wKKyAgICAgICAgd3JpdGVfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCAnZm9vLnB5JyksICcnJ1wKIGNsYXNzIGZvbyhvYmplY3QpOgogICAgIHBhc3MKICcnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgZnJvbSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uIGltcG9ydCBmb28KICAgICAgICAgZXEocmVwcihmb28uZm9vKSwKICAgICAgICAgICAgICAgICI8Y2xhc3MgJyVzLmZvbyc+IiAlIGZvby5fX25hbWVfXykKQEAgLTI1MywzOSArMjc4LDQ2IEBACiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X2NsYXNzKHNlbGYpOgotICAgICAgICB0b3VjaChvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCAnYmFyLnB5JyksICcnJ1wKKyAgICAgICAgc2VsZi5fY2hlY2tfcGF0aF9saW1pdGF0aW9ucygnYmFyJykKKyAgICAgICAgd3JpdGVfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCAnYmFyLnB5JyksICcnJ1wKIGNsYXNzIGJhcjoKICAgICBwYXNzCiAnJycpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIGZyb20gYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uLmFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbiBpbXBvcnQgYmFyCiAgICAgICAgICMgTW9kdWxlIG5hbWUgbWF5IGJlIHByZWZpeGVkIHdpdGggInRlc3QuIiwgZGVwZW5kaW5nIG9uIGhvdyBydW4uCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihiYXIuYmFyKSwgIjxjbGFzcyAnJXMuYmFyJz4iICUgYmFyLl9fbmFtZV9fKQogCiAgICAgZGVmIHRlc3RfaW5zdGFuY2Uoc2VsZik6Ci0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdiYXoucHknKSwgJycnXAorICAgICAgICBzZWxmLl9jaGVja19wYXRoX2xpbWl0YXRpb25zKCdiYXonKQorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdiYXoucHknKSwgJycnXAogY2xhc3MgYmF6OgogICAgIHBhc3MKICcnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgZnJvbSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uIGltcG9ydCBiYXoKICAgICAgICAgaWJheiA9IGJhei5iYXooKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihpYmF6KS5zdGFydHN3aXRoKAogICAgICAgICAgICAgIjwlcy5iYXogb2JqZWN0IGF0IDB4IiAlIGJhei5fX25hbWVfXykpCiAKICAgICBkZWYgdGVzdF9tZXRob2Qoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX3BhdGhfbGltaXRhdGlvbnMoJ3F1eCcpCiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAotICAgICAgICB0b3VjaChvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCAncXV4LnB5JyksICcnJ1wKKyAgICAgICAgd3JpdGVfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCAncXV4LnB5JyksICcnJ1wKIGNsYXNzIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhOgogICAgIGRlZiBhbWV0aG9kKHNlbGYpOiBwYXNzCiAnJycpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIGZyb20gYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uLmFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbiBpbXBvcnQgcXV4CiAgICAgICAgICMgVW5ib3VuZCBtZXRob2RzIGZpcnN0Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKHF1eC5hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS5hbWV0aG9kKS5zdGFydHN3aXRoKAotICAgICAgICAnPGZ1bmN0aW9uIGFtZXRob2QnKSkKKyAgICAgICAgciA9IHJlcHIocXV4LmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLmFtZXRob2QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YXJ0c3dpdGgoJzxmdW5jdGlvbiBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS5hbWV0aG9kJyksIHIpCiAgICAgICAgICMgQm91bmQgbWV0aG9kIG5leHQKICAgICAgICAgaXF1eCA9IHF1eC5hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKGlxdXguYW1ldGhvZCkuc3RhcnRzd2l0aCgKKyAgICAgICAgciA9IHJlcHIoaXF1eC5hbWV0aG9kKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKAogICAgICAgICAgICAgJzxib3VuZCBtZXRob2QgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEuYW1ldGhvZCBvZiA8JXMuYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEgb2JqZWN0IGF0IDB4JyBcCi0gICAgICAgICAgICAlIChxdXguX19uYW1lX18sKSApKQorICAgICAgICAgICAgJSAocXV4Ll9fbmFtZV9fLCkgKSwgcikKIAogICAgIGRlZiB0ZXN0X2J1aWx0aW5fZnVuY3Rpb24oc2VsZik6CiAgICAgICAgICMgWFhYIHRlc3QgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzIHdpdGggcmVhbGx5IGxvbmcgbmFtZXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weSBiL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQppbmRleCBmOGYzNzE3Li4wYjYyOWRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CkBAIC0yMjAsNiArMjIwLDcgQEAKICAgICAgICAgZm9yIGZ1bmMgaW4gKGRvLCBvcGVyYXRvci5ub3RfKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4YywgZnVuYywgQmFkKCkpCiAKKyAgICBAc3VwcG9ydC5ub190cmFjaW5nCiAgICAgZGVmIHRlc3RfcmVjdXJzaW9uKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgY29tcGFyaXNvbiBmb3IgcmVjdXJzaXZlIG9iamVjdHMgZmFpbHMgZ3JhY2VmdWxseQogICAgICAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ydW5weS5weSBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKaW5kZXggNmU5YzRmYy4uOGI0NDNmNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ydW5weS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CkBAIC01LDExICs1LDE1IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHB5X2NvbXBpbGUKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmb3JnZXQsIG1ha2VfbGVnYWN5X3B5YywgcnVuX3VuaXR0ZXN0LCB1bmxvYWQsIHZlcmJvc2UKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCisgICAgZm9yZ2V0LCBtYWtlX2xlZ2FjeV9weWMsIHJ1bl91bml0dGVzdCwgdW5sb2FkLCB2ZXJib3NlLCBub190cmFjaW5nLAorICAgIGNyZWF0ZV9lbXB0eV9maWxlKQogZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKICAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0LCB0ZW1wX2RpcikKIAorCiBpbXBvcnQgcnVucHkKIGZyb20gcnVucHkgaW1wb3J0IF9ydW5fY29kZSwgX3J1bl9tb2R1bGVfY29kZSwgcnVuX21vZHVsZSwgcnVuX3BhdGgKICMgTm90ZTogVGhpcyBtb2R1bGUgY2FuJ3Qgc2FmZWx5IHRlc3QgX3J1bl9tb2R1bGVfYXNfbWFpbiBhcyBpdApAQCAtMTQ1LDcgKzE0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RfcGFja2FnZSkKICAgICAgICAgc2VsZi5jaGVja19jb2RlX2V4ZWN1dGlvbihjcmVhdGVfbnMsIGV4cGVjdGVkX25zKQogCi0KKyMgVE9ETzogVXNlIHNlbGYuYWRkQ2xlYW51cCB0byBnZXQgcmlkIG9mIGEgbG90IG9mIHRyeS1maW5hbGx5IGJsb2NrcwogY2xhc3MgUnVuTW9kdWxlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UsIENvZGVFeGVjdXRpb25NaXhpbik6CiAgICAgIiIiVW5pdCB0ZXN0cyBmb3IgcnVucHkucnVuX21vZHVsZSIiIgogCkBAIC0xNzUsOCArMTc5LDcgQEAKICAgICBkZWYgX2FkZF9wa2dfZGlyKHNlbGYsIHBrZ19kaXIpOgogICAgICAgICBvcy5ta2Rpcihwa2dfZGlyKQogICAgICAgICBwa2dfZm5hbWUgPSBvcy5wYXRoLmpvaW4ocGtnX2RpciwgIl9faW5pdF9fLnB5IikKLSAgICAgICAgcGtnX2ZpbGUgPSBvcGVuKHBrZ19mbmFtZSwgInciKQotICAgICAgICBwa2dfZmlsZS5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKHBrZ19mbmFtZSkKICAgICAgICAgcmV0dXJuIHBrZ19mbmFtZQogCiAgICAgZGVmIF9tYWtlX3BrZyhzZWxmLCBzb3VyY2UsIGRlcHRoLCBtb2RfYmFzZT0icnVucHlfdGVzdCIpOgpAQCAtMjUyLDEwICsyNTUsMTIgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCJSdW5uaW5nIGZyb20gc291cmNlOiIsIG1vZF9uYW1lKQogICAgICAgICAgICAgc2VsZi5jaGVja19jb2RlX2V4ZWN1dGlvbihjcmVhdGVfbnMsIGV4cGVjdGVkX25zKQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kX25hbWUpCiAgICAgICAgICAgICBvcy5yZW1vdmUobW9kX2ZuYW1lKQogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKG1vZF9mbmFtZSkKICAgICAgICAgICAgIHVubG9hZChtb2RfbmFtZSkgICMgSW4gY2FzZSBsb2FkZXIgY2FjaGVzIHBhdGhzCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCJSdW5uaW5nIGZyb20gY29tcGlsZWQ6IiwgbW9kX25hbWUpCiAgICAgICAgICAgICBzZWxmLl9maXhfbnNfZm9yX2xlZ2FjeV9weWMoZXhwZWN0ZWRfbnMsIGFsdGVyX3N5cykKICAgICAgICAgICAgIHNlbGYuY2hlY2tfY29kZV9leGVjdXRpb24oY3JlYXRlX25zLCBleHBlY3RlZF9ucykKQEAgLTI4NSwxMSArMjkwLDEzIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiUnVubmluZyBmcm9tIHNvdXJjZToiLCBwa2dfbmFtZSkKICAgICAgICAgICAgIHNlbGYuY2hlY2tfY29kZV9leGVjdXRpb24oY3JlYXRlX25zLCBleHBlY3RlZF9ucykKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBfX2ltcG9ydF9fKG1vZF9uYW1lKQogICAgICAgICAgICAgb3MucmVtb3ZlKG1vZF9mbmFtZSkKICAgICAgICAgICAgIG1ha2VfbGVnYWN5X3B5Yyhtb2RfZm5hbWUpCiAgICAgICAgICAgICB1bmxvYWQobW9kX25hbWUpICAjIEluIGNhc2UgbG9hZGVyIGNhY2hlcyBwYXRocwogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCJSdW5uaW5nIGZyb20gY29tcGlsZWQ6IiwgcGtnX25hbWUpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgc2VsZi5fZml4X25zX2Zvcl9sZWdhY3lfcHljKGV4cGVjdGVkX25zLCBhbHRlcl9zeXMpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2NvZGVfZXhlY3V0aW9uKGNyZWF0ZV9ucywgZXhwZWN0ZWRfbnMpCiAgICAgICAgIGZpbmFsbHk6CkBAIC0zMDYsOCArMzEzLDcgQEAKICAgICAgICAgICAgIG1vZHVsZV9kaXIgPSBvcy5wYXRoLmpvaW4obW9kdWxlX2RpciwgcGtnX25hbWUpCiAgICAgICAgICMgQWRkIHNpYmxpbmcgbW9kdWxlCiAgICAgICAgIHNpYmxpbmdfZm5hbWUgPSBvcy5wYXRoLmpvaW4obW9kdWxlX2RpciwgInNpYmxpbmcucHkiKQotICAgICAgICBzaWJsaW5nX2ZpbGUgPSBvcGVuKHNpYmxpbmdfZm5hbWUsICJ3IikKLSAgICAgICAgc2libGluZ19maWxlLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUoc2libGluZ19mbmFtZSkKICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCIgIEFkZGVkIHNpYmxpbmcgbW9kdWxlOiIsIHNpYmxpbmdfZm5hbWUpCiAgICAgICAgICMgQWRkIG5lcGhldyBtb2R1bGUKICAgICAgICAgdW5jbGVfZGlyID0gb3MucGF0aC5qb2luKHBhcmVudF9kaXIsICJ1bmNsZSIpCkBAIC0zMTcsOCArMzIzLDcgQEAKICAgICAgICAgc2VsZi5fYWRkX3BrZ19kaXIoY291c2luX2RpcikKICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCIgIEFkZGVkIGNvdXNpbiBwYWNrYWdlOiIsIGNvdXNpbl9kaXIpCiAgICAgICAgIG5lcGhld19mbmFtZSA9IG9zLnBhdGguam9pbihjb3VzaW5fZGlyLCAibmVwaGV3LnB5IikKLSAgICAgICAgbmVwaGV3X2ZpbGUgPSBvcGVuKG5lcGhld19mbmFtZSwgInciKQotICAgICAgICBuZXBoZXdfZmlsZS5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKG5lcGhld19mbmFtZSkKICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCIgIEFkZGVkIG5lcGhldyBtb2R1bGU6IiwgbmVwaGV3X2ZuYW1lKQogCiAgICAgZGVmIF9jaGVja19yZWxhdGl2ZV9pbXBvcnRzKHNlbGYsIGRlcHRoLCBydW5fbmFtZT1Ob25lKToKQEAgLTM0MywxMSArMzQ4LDEzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzaWJsaW5nIiwgZDEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuZXBoZXciLCBkMSkKICAgICAgICAgICAgIGRlbCBkMSAjIEVuc3VyZSBfX2xvYWRlcl9fIGVudHJ5IGRvZXNuJ3Qga2VlcCBmaWxlIG9wZW4KKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBfX2ltcG9ydF9fKG1vZF9uYW1lKQogICAgICAgICAgICAgb3MucmVtb3ZlKG1vZF9mbmFtZSkKICAgICAgICAgICAgIG1ha2VfbGVnYWN5X3B5Yyhtb2RfZm5hbWUpCiAgICAgICAgICAgICB1bmxvYWQobW9kX25hbWUpICAjIEluIGNhc2UgdGhlIGxvYWRlciBjYWNoZXMgcGF0aHMKICAgICAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiUnVubmluZyBmcm9tIGNvbXBpbGVkOiIsIG1vZF9uYW1lKQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIGQyID0gcnVuX21vZHVsZShtb2RfbmFtZSwgcnVuX25hbWU9cnVuX25hbWUpICMgUmVhZCBmcm9tIGJ5dGVjb2RlCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyWyJfX25hbWVfXyJdLCBleHBlY3RlZF9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMlsiX19wYWNrYWdlX18iXSwgcGtnX25hbWUpCkBAIC00MDcsNiArNDE0LDQwIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9kZWxfcGtnKHBrZ19kaXIsIGRlcHRoLCBtb2RfbmFtZSkKIAorICAgIGRlZiB0ZXN0X3BrZ3V0aWxfd2Fsa19wYWNrYWdlcyhzZWxmKToKKyAgICAgICAgIyBUaGlzIGlzIGEgZG9kZ3kgaGFjayB0byB1c2UgdGhlIHRlc3RfcnVucHkgaW5mcmFzdHJ1Y3R1cmUgdG8gdGVzdAorICAgICAgICAjIGlzc3VlICMxNTM0My4gSXNzdWUgIzE1MzQ4IGRlY2xhcmVzIHRoaXMgaXMgaW5kZWVkIGEgZG9kZ3kgaGFjayA7KQorICAgICAgICBpbXBvcnQgcGtndXRpbAorICAgICAgICBtYXhfZGVwdGggPSA0CisgICAgICAgIGJhc2VfbmFtZSA9ICJfX3J1bnB5X3BrZ19fIgorICAgICAgICBwYWNrYWdlX3N1ZmZpeGVzID0gWyJ1bmNsZSIsICJ1bmNsZS5jb3VzaW4iXQorICAgICAgICBtb2R1bGVfc3VmZml4ZXMgPSBbInVuY2xlLmNvdXNpbi5uZXBoZXciLCBiYXNlX25hbWUgKyAiLnNpYmxpbmciXQorICAgICAgICBleHBlY3RlZF9wYWNrYWdlcyA9IHNldCgpCisgICAgICAgIGV4cGVjdGVkX21vZHVsZXMgPSBzZXQoKQorICAgICAgICBmb3IgZGVwdGggaW4gcmFuZ2UoMSwgbWF4X2RlcHRoKToKKyAgICAgICAgICAgIHBrZ19uYW1lID0gIi4iLmpvaW4oW2Jhc2VfbmFtZV0gKiBkZXB0aCkKKyAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLmFkZChwa2dfbmFtZSkKKyAgICAgICAgICAgIGZvciBuYW1lIGluIHBhY2thZ2Vfc3VmZml4ZXM6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMuYWRkKHBrZ19uYW1lICsgIi4iICsgbmFtZSkKKyAgICAgICAgICAgIGZvciBuYW1lIGluIG1vZHVsZV9zdWZmaXhlczoKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9tb2R1bGVzLmFkZChwa2dfbmFtZSArICIuIiArIG5hbWUpCisgICAgICAgIHBrZ19uYW1lID0gIi4iLmpvaW4oW2Jhc2VfbmFtZV0gKiBtYXhfZGVwdGgpCisgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLmFkZChwa2dfbmFtZSkKKyAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5hZGQocGtnX25hbWUgKyAiLnJ1bnB5X3Rlc3QiKQorICAgICAgICBwa2dfZGlyLCBtb2RfZm5hbWUsIG1vZF9uYW1lID0gKAorICAgICAgICAgICAgICAgc2VsZi5fbWFrZV9wa2coIiIsIG1heF9kZXB0aCkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLl9kZWxfcGtnLCBwa2dfZGlyLCBtYXhfZGVwdGgsIG1vZF9uYW1lKQorICAgICAgICBmb3IgZGVwdGggaW4gcmFuZ2UoMiwgbWF4X2RlcHRoKzEpOgorICAgICAgICAgICAgc2VsZi5fYWRkX3JlbGF0aXZlX21vZHVsZXMocGtnX2RpciwgIiIsIGRlcHRoKQorICAgICAgICBmb3IgZmluZGVyLCBtb2RfbmFtZSwgaXNwa2cgaW4gcGtndXRpbC53YWxrX3BhY2thZ2VzKFtwa2dfZGlyXSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmluZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcikKKyAgICAgICAgICAgIGlmIGlzcGtnOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLnJlbW92ZShtb2RfbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5yZW1vdmUobW9kX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVkX3BhY2thZ2VzKSwgMCwgZXhwZWN0ZWRfcGFja2FnZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVkX21vZHVsZXMpLCAwLCBleHBlY3RlZF9tb2R1bGVzKQogCiBjbGFzcyBSdW5QYXRoVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UsIENvZGVFeGVjdXRpb25NaXhpbik6CiAgICAgIiIiVW5pdCB0ZXN0cyBmb3IgcnVucHkucnVuX3BhdGgiIiIKQEAgLTUwNyw2ICs1NDgsNyBAQAogICAgICAgICAgICAgbXNnID0gImNhbid0IGZpbmQgJ19fbWFpbl9fJyBtb2R1bGUgaW4gJXIiICUgemlwX25hbWUKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ltcG9ydF9lcnJvcih6aXBfbmFtZSwgbXNnKQogCisgICAgQG5vX3RyYWNpbmcKICAgICBkZWYgdGVzdF9tYWluX3JlY3Vyc2lvbl9lcnJvcihzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXIsIHRlbXBfZGlyKCkgYXMgZHVtbXlfZGlyOgogICAgICAgICAgICAgbW9kX25hbWUgPSAnX19tYWluX18nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NheC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5CmluZGV4IDEyMjVkNmUuLjhlMDA4ODkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5CkBAIC0yMCw4ICsyMCw4IEBACiBURVNUX1hNTEZJTEUgPSBmaW5kZmlsZSgidGVzdC54bWwiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKIFRFU1RfWE1MRklMRV9PVVQgPSBmaW5kZmlsZSgidGVzdC54bWwub3V0Iiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCiB0cnk6Ci0gICAgVEVTVF9YTUxGSUxFLmVuY29kZSgidXRmOCIpCi0gICAgVEVTVF9YTUxGSUxFX09VVC5lbmNvZGUoInV0ZjgiKQorICAgIFRFU1RfWE1MRklMRS5lbmNvZGUoInV0Zi04IikKKyAgICBURVNUX1hNTEZJTEVfT1VULmVuY29kZSgidXRmLTgiKQogZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZmlsZW5hbWUgaXMgbm90IGVuY29kYWJsZSB0byB1dGY4IikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY2hlZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKaW5kZXggOTFiOGYwYy4uNTBhZGE1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CkBAIC02MywxNSArNjMsMzkgQEAKIAogICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgogICAgICAgICBsID0gW10KLSAgICAgICAgZXZlbnRzID0gW10KICAgICAgICAgZnVuID0gbGFtYmRhIHg6IGwuYXBwZW5kKHgpCiAgICAgICAgIHNjaGVkdWxlciA9IHNjaGVkLnNjaGVkdWxlcih0aW1lLnRpbWUsIHRpbWUuc2xlZXApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NoZWR1bGVyLl9xdWV1ZSwgW10pCi0gICAgICAgIGZvciB4IGluIFswLjA1LCAwLjA0LCAwLjAzLCAwLjAyLCAwLjAxXToKLSAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoc2NoZWR1bGVyLmVudGVyYWJzKHgsIDEsIGZ1biwgKHgsKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NoZWR1bGVyLl9xdWV1ZS5zb3J0KCksIGV2ZW50cy5zb3J0KCkpCisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgIGU1ID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDAuMDUsIDEsIGZ1bikKKyAgICAgICAgZTEgPSBzY2hlZHVsZXIuZW50ZXJhYnMobm93ICsgMC4wMSwgMSwgZnVuKQorICAgICAgICBlMiA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAwLjAyLCAxLCBmdW4pCisgICAgICAgIGU0ID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDAuMDQsIDEsIGZ1bikKKyAgICAgICAgZTMgPSBzY2hlZHVsZXIuZW50ZXJhYnMobm93ICsgMC4wMywgMSwgZnVuKQorICAgICAgICAjIHF1ZXVlIHByb3BlcnR5IGlzIHN1cHBvc2VkIHRvIHJldHVybiBhbiBvcmRlciBsaXN0IG9mCisgICAgICAgICMgdXBjb21pbmcgZXZlbnRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzY2hlZHVsZXIucXVldWUpLCBbZTEsIGUyLCBlMywgZTQsIGU1XSkKKworICAgIGRlZiB0ZXN0X2FyZ3Nfa3dhcmdzKHNlbGYpOgorICAgICAgICBmbGFnID0gW10KKworICAgICAgICBkZWYgZnVuKCphLCAqKmIpOgorICAgICAgICAgICAgZmxhZy5hcHBlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgKDEsMiwzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgeyJmb28iOjF9KQorCisgICAgICAgIHNjaGVkdWxlciA9IHNjaGVkLnNjaGVkdWxlcih0aW1lLnRpbWUsIHRpbWUuc2xlZXApCisgICAgICAgIHogPSBzY2hlZHVsZXIuZW50ZXJhYnMoMC4wMSwgMSwgZnVuLCBhcmd1bWVudD0oMSwyLDMpLCBrd2FyZ3M9eyJmb28iOjF9KQogICAgICAgICBzY2hlZHVsZXIucnVuKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2hlZHVsZXIuX3F1ZXVlLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBbTm9uZV0pCisKKyAgICBkZWYgdGVzdF9ydW5fbm9uX2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBsID0gW10KKyAgICAgICAgZnVuID0gbGFtYmRhIHg6IGwuYXBwZW5kKHgpCisgICAgICAgIHNjaGVkdWxlciA9IHNjaGVkLnNjaGVkdWxlcih0aW1lLnRpbWUsIHRpbWUuc2xlZXApCisgICAgICAgIGZvciB4IGluIFsxMCwgOSwgOCwgNywgNl06CisgICAgICAgICAgICBzY2hlZHVsZXIuZW50ZXIoeCwgMSwgZnVuLCAoeCwpKQorICAgICAgICBzY2hlZHVsZXIucnVuKGJsb2NraW5nPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwsIFtdKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkgYi9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5CmluZGV4IGZiYzg3YWEuLjEyOWExOGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zY29wZS5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3N5bnRheF9lcnJvciwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfc3ludGF4X2Vycm9yLCBjcHl0aG9uX29ubHksIHJ1bl91bml0dGVzdAogCiAKIGNsYXNzIFNjb3BlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDk2LDIzICs0OTYsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigieCIsIHZhcm5hbWVzKQogICAgICAgICBzZWxmLmFzc2VydEluKCJ5IiwgdmFybmFtZXMpCiAKKyAgICBAY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RMb2NhbHNDbGFzc19XaXRoVHJhY2Uoc2VsZik6CiAgICAgICAgICMgSXNzdWUyMzcyODogYWZ0ZXIgdGhlIHRyYWNlIGZ1bmN0aW9uIHJldHVybnMsIHRoZSBsb2NhbHMoKQogICAgICAgICAjIGRpY3Rpb25hcnkgaXMgdXNlZCB0byB1cGRhdGUgYWxsIHZhcmlhYmxlcywgdGhpcyB1c2VkIHRvCiAgICAgICAgICMgaW5jbHVkZSBmcmVlIHZhcmlhYmxlcy4gQnV0IGluIGNsYXNzIHN0YXRlbWVudHMsIGZyZWUKICAgICAgICAgIyB2YXJpYWJsZXMgYXJlIG5vdCBpbnNlcnRlZC4uLgogICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzeXMuc2V0dHJhY2UobGFtYmRhIGEsYixjOk5vbmUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHggPSAxMgorICAgICAgICB4ID0gMTIKIAotICAgICAgICAgICAgY2xhc3MgQzoKLSAgICAgICAgICAgICAgICBkZWYgZihzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBmKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiB4CiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMTIpICMgVXNlZCB0byByYWlzZSBVbmJvdW5kTG9jYWxFcnJvcgotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMTIpICMgVXNlZCB0byByYWlzZSBVbmJvdW5kTG9jYWxFcnJvcgogCiAgICAgZGVmIHRlc3RCb3VuZEFuZEZyZWUoc2VsZik6CiAgICAgICAgICMgdmFyIGlzIGJvdW5kIGFuZCBmcmVlIGluIGNsYXNzCkBAIC01MjcsNiArNTI2LDcgQEAKICAgICAgICAgaW5zdCA9IGYoMykoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3QuYSwgaW5zdC5tKCkpCiAKKyAgICBAY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RJbnRlcmFjdGlvbldpdGhUcmFjZUZ1bmMoc2VsZik6CiAKICAgICAgICAgaW1wb3J0IHN5cwpAQCAtNTQzLDYgKzU0Myw3IEBACiAgICAgICAgIGNsYXNzIFRlc3RDbGFzczoKICAgICAgICAgICAgIHBhc3MKIAorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc3lzLnNldHRyYWNlKHRyYWNlcikKICAgICAgICAgYWRhcHRnZXR0ZXIoImZvbyIsIFRlc3RDbGFzcywgKDEsICIiKSkKICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NlbGVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CmluZGV4IGZlOTJmNDUuLjMxNDRjNTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CkBAIC0xLDggKzEsOSBAQAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzZWxlY3QKK2ltcG9ydCBlcnJubwogaW1wb3J0IG9zCitpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybVs6M10gaW4gKCd3aW4nLCAnb3MyJywgJ3Jpc2NvcycpLAogICAgICAgICAgICAgICAgICAiY2FuJ3QgZWFzaWx5IHRlc3Qgb24gdGhpcyBzeXN0ZW0iKQpAQCAtMjAsNiArMjEsMjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3Quc2VsZWN0LCBbc2VsZi5Ob3BlKCldLCBbXSwgW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZWN0LnNlbGVjdCwgW3NlbGYuQWxtb3N0KCldLCBbXSwgW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZWN0LnNlbGVjdCwgW10sIFtdLCBbXSwgIm5vdCBhIG51bWJlciIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGVjdC5zZWxlY3QsIFtdLCBbXSwgW10sIC0xKQorCisgICAgIyBJc3N1ZSAjMTIzNjc6IGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL3F1ZXJ5LXByLmNnaT9wcj1rZXJuLzE1NTYwNgorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKSwKKyAgICAgICAgICAgICAgICAgICAgICdza2lwIGJlY2F1c2Ugb2YgYSBGcmVlQlNEIGJ1Zzoga2Vybi8xNTU2MDYnKQorICAgIGRlZiB0ZXN0X2Vycm5vKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oX19maWxlX18sICdyYicpIGFzIGZwOgorICAgICAgICAgICAgZmQgPSBmcC5maWxlbm8oKQorICAgICAgICAgICAgZnAuY2xvc2UoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW2ZkXSwgW10sIFtdLCAwKQorICAgICAgICAgICAgZXhjZXB0IHNlbGVjdC5lcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuZXJybm8sIGVycm5vLkVCQURGKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImV4Y2VwdGlvbiBub3QgcmFpc2VkIikKIAogICAgIGRlZiB0ZXN0X3JldHVybmVkX2xpc3RfaWRlbnRpdHkoc2VsZik6CiAgICAgICAgICMgU2VlIGlzc3VlICM4MzI5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CmluZGV4IDY2NDI0NDAuLjhlOWU1ODcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CkBAIC05LDYgKzksNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIAogY2xhc3MgUGFzc1RocnUoRXhjZXB0aW9uKToKICAgICBwYXNzCkBAIC0yMzQsNiArMjM1LDI2IEBACiAgICAgICAgICAgICAgICAgZHVwID0gcGlja2xlLmxvYWRzKHApCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnMueCwgZHVwLngpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgaXRvcmcgPSBpdGVyKHNlbGYucykKKyAgICAgICAgZGF0YSA9IHNlbGYudGhldHlwZShzZWxmLnMpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICMgU2V0IGl0ZXJhdG9ycyB1bnBpY2tsZSBhcyBsaXN0IGl0ZXJhdG9ycyBkdWUgdG8gdGhlCisgICAgICAgICMgdW5kZWZpbmVkIG9yZGVyIG9mIHNldCBpdGVtcy4KKyAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoaXQsIGNvbGxlY3Rpb25zLmFiYy5JdGVyYXRvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50aGV0eXBlKGl0KSwgZGF0YSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkcm9wID0gbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZXR5cGUoaXQpLCBkYXRhIC0gc2VsZi50aGV0eXBlKChkcm9wLCkpKQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHkoc2VsZik6CiAgICAgICAgIGNsYXNzIFRyYWNlcjoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NoZWx2ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5CmluZGV4IDNlNzNmNTIuLjEzYzEyNjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5CkBAIC0yLDcgKzIsNyBAQAogaW1wb3J0IHNoZWx2ZQogaW1wb3J0IGdsb2IKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNdXRhYmxlTWFwcGluZwogZnJvbSB0ZXN0LnRlc3RfZGJtIGltcG9ydCBkYm1faXRlcmF0b3IKIAogZGVmIEwxKHMpOgpAQCAtMTI5LDggKzEyOSw4IEBACiAgICAgICAgIHNoZWx2ZS5TaGVsZihkKVtrZXldID0gWzFdCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oa2V5LmVuY29kZSgndXRmLTgnKSwgZCkKICAgICAgICAgIyBidXQgYSBkaWZmZXJlbnQgb25lIGNhbiBiZSBnaXZlbgotICAgICAgICBzaGVsdmUuU2hlbGYoZCwga2V5ZW5jb2Rpbmc9J2xhdGluMScpW2tleV0gPSBbMV0KLSAgICAgICAgc2VsZi5hc3NlcnRJbihrZXkuZW5jb2RlKCdsYXRpbjEnKSwgZCkKKyAgICAgICAgc2hlbHZlLlNoZWxmKGQsIGtleWVuY29kaW5nPSdsYXRpbi0xJylba2V5XSA9IFsxXQorICAgICAgICBzZWxmLmFzc2VydEluKGtleS5lbmNvZGUoJ2xhdGluLTEnKSwgZCkKICAgICAgICAgIyB3aXRoIGFsbCBjb25zZXF1ZW5jZXMKICAgICAgICAgcyA9IHNoZWx2ZS5TaGVsZihkLCBrZXllbmNvZGluZz0nYXNjaWknKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIHMuX19zZXRpdGVtX18sIGtleSwgWzFdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKaW5kZXggMjVlNGI2ZC4uZDQ0NjNmMzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaGxleC5weQpAQCAtMSw2ICsxLDcgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zLCBzeXMsIGlvCitpbXBvcnQgaW8KIGltcG9ydCBzaGxleAoraW1wb3J0IHN0cmluZworaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0xNzMsNiArMTc0LDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlczogJXMgIT0gJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuZGF0YVtpXVswXSwgbCwgc2VsZi5kYXRhW2ldWzE6XSkpCiAKKyAgICBkZWYgdGVzdFF1b3RlKHNlbGYpOgorICAgICAgICBzYWZldW5xdW90ZWQgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAnQCVfLSs9OiwuLycKKyAgICAgICAgdW5pY29kZV9zYW1wbGUgPSAnXHhlOVx4ZTBceGRmJyAgIyBlICsgYWN1dGUgYWNjZW50LCBhICsgZ3JhdmUsIHNoYXJwIHMKKyAgICAgICAgdW5zYWZlID0gJyJgJFxcIScgKyB1bmljb2RlX3NhbXBsZQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hsZXgucXVvdGUoJycpLCAiJyciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNobGV4LnF1b3RlKHNhZmV1bnF1b3RlZCksIHNhZmV1bnF1b3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaGxleC5xdW90ZSgndGVzdCBmaWxlIG5hbWUnKSwgIid0ZXN0IGZpbGUgbmFtZSciKQorICAgICAgICBmb3IgdSBpbiB1bnNhZmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNobGV4LnF1b3RlKCd0ZXN0JXNuYW1lJyAlIHUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3Qlc25hbWUnIiAlIHUpCisgICAgICAgIGZvciB1IGluIHVuc2FmZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hsZXgucXVvdGUoInRlc3QlcyduYW1lJyIgJSB1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIid0ZXN0JXMnXCInXCInbmFtZSdcIidcIicnIiAlIHUpCisKKwogIyBBbGxvdyB0aGlzIHRlc3QgdG8gYmUgdXNlZCB3aXRoIG9sZCBzaGxleC5weQogaWYgbm90IGdldGF0dHIoc2hsZXgsICJzcGxpdCIsIE5vbmUpOgogICAgIGZvciBtZXRobmFtZSBpbiBkaXIoU2hsZXhUZXN0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKaW5kZXggMWEwMTZiOS4uZWIwZTlhNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKQEAgLTcsOCArNyw5IEBACiBpbXBvcnQgc3RhdAogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAotaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGVycm5vCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgc3VicHJvY2VzcwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBmcm9tIG9zLnBhdGggaW1wb3J0IHNwbGl0ZHJpdmUKQEAgLTIyLDcgKzIzLDcgQEAKIGltcG9ydCB3YXJuaW5ncwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGNoZWNrX3dhcm5pbmdzLCBjYXB0dXJlZF9zdGRvdXQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGNoZWNrX3dhcm5pbmdzLCBjYXB0dXJlZF9zdGRvdXQsIHJlcXVpcmVzX3psaWIKIAogdHJ5OgogICAgIGltcG9ydCBiejIKQEAgLTQwLDExICs0MSw2IEBACiAgICAgVUlEX0dJRF9TVVBQT1JUID0gRmFsc2UKIAogdHJ5OgotICAgIGltcG9ydCB6bGliCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgemxpYiA9IE5vbmUKLQotdHJ5OgogICAgIGltcG9ydCB6aXBmaWxlCiAgICAgWklQX1NVUFBPUlQgPSBUcnVlCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC01Miw3ICs0OCw3IEBACiAKIGRlZiBfZmFrZV9yZW5hbWUoKmFyZ3MsICoqa3dhcmdzKToKICAgICAjIFByZXRlbmQgdGhlIGRlc3RpbmF0aW9uIHBhdGggaXMgb24gYSBkaWZmZXJlbnQgZmlsZXN5c3RlbS4KLSAgICByYWlzZSBPU0Vycm9yKCkKKyAgICByYWlzZSBPU0Vycm9yKGdldGF0dHIoZXJybm8sICdFWERFVicsIDE4KSwgIkludmFsaWQgY3Jvc3MtZGV2aWNlIGxpbmsiKQogCiBkZWYgbW9ja19yZW5hbWUoZnVuYyk6CiAgICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQpAQCAtNjUsNiArNjEsMzEgQEAKICAgICAgICAgICAgIG9zLnJlbmFtZSA9IGJ1aWx0aW5fcmVuYW1lCiAgICAgcmV0dXJuIHdyYXAKIAorZGVmIHdyaXRlX2ZpbGUocGF0aCwgY29udGVudCwgYmluYXJ5PUZhbHNlKToKKyAgICAiIiJXcml0ZSAqY29udGVudCogdG8gYSBmaWxlIGxvY2F0ZWQgYXQgKnBhdGgqLgorCisgICAgSWYgKnBhdGgqIGlzIGEgdHVwbGUgaW5zdGVhZCBvZiBhIHN0cmluZywgb3MucGF0aC5qb2luIHdpbGwgYmUgdXNlZCB0bworICAgIG1ha2UgYSBwYXRoLiAgSWYgKmJpbmFyeSogaXMgdHJ1ZSwgdGhlIGZpbGUgd2lsbCBiZSBvcGVuZWQgaW4gYmluYXJ5CisgICAgbW9kZS4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIHR1cGxlKToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigqcGF0aCkKKyAgICB3aXRoIG9wZW4ocGF0aCwgJ3diJyBpZiBiaW5hcnkgZWxzZSAndycpIGFzIGZwOgorICAgICAgICBmcC53cml0ZShjb250ZW50KQorCitkZWYgcmVhZF9maWxlKHBhdGgsIGJpbmFyeT1GYWxzZSk6CisgICAgIiIiUmV0dXJuIGNvbnRlbnRzIGZyb20gYSBmaWxlIGxvY2F0ZWQgYXQgKnBhdGgqLgorCisgICAgSWYgKnBhdGgqIGlzIGEgdHVwbGUgaW5zdGVhZCBvZiBhIHN0cmluZywgb3MucGF0aC5qb2luIHdpbGwgYmUgdXNlZCB0bworICAgIG1ha2UgYSBwYXRoLiAgSWYgKmJpbmFyeSogaXMgdHJ1ZSwgdGhlIGZpbGUgd2lsbCBiZSBvcGVuZWQgaW4gYmluYXJ5CisgICAgbW9kZS4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIHR1cGxlKToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigqcGF0aCkKKyAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJyBpZiBiaW5hcnkgZWxzZSAncicpIGFzIGZwOgorICAgICAgICByZXR1cm4gZnAucmVhZCgpCisKKwogY2xhc3MgVGVzdFNodXRpbCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC03NywxOSArOTgsNiBAQAogICAgICAgICAgICAgZCA9IHNlbGYudGVtcGRpcnMucG9wKCkKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZCwgb3MubmFtZSBpbiAoJ250JywgJ2N5Z3dpbicpKQogCi0gICAgZGVmIHdyaXRlX2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudD0neHh4Jyk6Ci0gICAgICAgICIiIldyaXRlcyBhIGZpbGUgaW4gdGhlIGdpdmVuIHBhdGguCi0KLQotICAgICAgICBwYXRoIGNhbiBiZSBhIHN0cmluZyBvciBhIHNlcXVlbmNlLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCAobGlzdCwgdHVwbGUpKToKLSAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oKnBhdGgpCi0gICAgICAgIGYgPSBvcGVuKHBhdGgsICd3JykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi53cml0ZShjb250ZW50KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgbWtkdGVtcChzZWxmKToKICAgICAgICAgIiIiQ3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0aGF0IHdpbGwgYmUgY2xlYW5lZCB1cC4KQEAgLTEwMCw2ICsxMDgsNDcgQEAKICAgICAgICAgc2VsZi50ZW1wZGlycy5hcHBlbmQoZCkKICAgICAgICAgcmV0dXJuIGQKIAorICAgIGRlZiB0ZXN0X3JtdHJlZV93b3Jrc19vbl9ieXRlcyhzZWxmKToKKyAgICAgICAgdG1wID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgdmljdGltID0gb3MucGF0aC5qb2luKHRtcCwgJ2tpbGxtZScpCisgICAgICAgIG9zLm1rZGlyKHZpY3RpbSkKKyAgICAgICAgd3JpdGVfZmlsZShvcy5wYXRoLmpvaW4odmljdGltLCAnc29tZWZpbGUnKSwgJ2ZvbycpCisgICAgICAgIHZpY3RpbSA9IG9zLmZzZW5jb2RlKHZpY3RpbSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHZpY3RpbSwgYnl0ZXMpCisgICAgICAgIHNodXRpbC5ybXRyZWUodmljdGltKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X3JtdHJlZV9mYWlsc19vbl9zeW1saW5rKHNlbGYpOgorICAgICAgICB0bXAgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBkaXJfID0gb3MucGF0aC5qb2luKHRtcCwgJ2RpcicpCisgICAgICAgIG9zLm1rZGlyKGRpcl8pCisgICAgICAgIGxpbmsgPSBvcy5wYXRoLmpvaW4odG1wLCAnbGluaycpCisgICAgICAgIG9zLnN5bWxpbmsoZGlyXywgbGluaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLnJtdHJlZSwgbGluaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRpcl8pKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X3JtdHJlZV93b3Jrc19vbl9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZGlyMSA9IG9zLnBhdGguam9pbih0bXAsICdkaXIxJykKKyAgICAgICAgZGlyMiA9IG9zLnBhdGguam9pbihkaXIxLCAnZGlyMicpCisgICAgICAgIGRpcjMgPSBvcy5wYXRoLmpvaW4odG1wLCAnZGlyMycpCisgICAgICAgIGZvciBkIGluIGRpcjEsIGRpcjIsIGRpcjM6CisgICAgICAgICAgICBvcy5ta2RpcihkKQorICAgICAgICBmaWxlMSA9IG9zLnBhdGguam9pbih0bXAsICdmaWxlMScpCisgICAgICAgIHdyaXRlX2ZpbGUoZmlsZTEsICdmb28nKQorICAgICAgICBsaW5rMSA9IG9zLnBhdGguam9pbihkaXIxLCAnbGluazEnKQorICAgICAgICBvcy5zeW1saW5rKGRpcjIsIGxpbmsxKQorICAgICAgICBsaW5rMiA9IG9zLnBhdGguam9pbihkaXIxLCAnbGluazInKQorICAgICAgICBvcy5zeW1saW5rKGRpcjMsIGxpbmsyKQorICAgICAgICBsaW5rMyA9IG9zLnBhdGguam9pbihkaXIxLCAnbGluazMnKQorICAgICAgICBvcy5zeW1saW5rKGZpbGUxLCBsaW5rMykKKyAgICAgICAgIyBtYWtlIHN1cmUgc3ltbGlua3MgYXJlIHJlbW92ZWQgYnV0IG5vdCBmb2xsb3dlZAorICAgICAgICBzaHV0aWwucm10cmVlKGRpcjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZGlyMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkaXIzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZpbGUxKSkKKwogICAgIGRlZiB0ZXN0X3JtdHJlZV9lcnJvcnMoc2VsZik6CiAgICAgICAgICMgZmlsZW5hbWUgaXMgZ3VhcmFudGVlZCBub3QgdG8gZXhpc3QKICAgICAgICAgZmlsZW5hbWUgPSB0ZW1wZmlsZS5ta3RlbXAoKQpAQCAtMTEyLDMwICsxNjEsMzQgQEAKICAgICAgICAgZGVmIHRlc3Rfb25fZXJyb3Ioc2VsZik6CiAgICAgICAgICAgICBzZWxmLmVycm9yU3RhdGUgPSAwCiAgICAgICAgICAgICBvcy5ta2RpcihURVNURk4pCi0gICAgICAgICAgICBzZWxmLmNoaWxkcGF0aCA9IG9zLnBhdGguam9pbihURVNURk4sICdhJykKLSAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYuY2hpbGRwYXRoLCAndycpCi0gICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBURVNURk4pCisKKyAgICAgICAgICAgIHNlbGYuY2hpbGRfZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKFRFU1RGTiwgJ2EnKQorICAgICAgICAgICAgc2VsZi5jaGlsZF9kaXJfcGF0aCA9IG9zLnBhdGguam9pbihURVNURk4sICdiJykKKyAgICAgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoc2VsZi5jaGlsZF9maWxlX3BhdGgpCisgICAgICAgICAgICBvcy5ta2RpcihzZWxmLmNoaWxkX2Rpcl9wYXRoKQogICAgICAgICAgICAgb2xkX2Rpcl9tb2RlID0gb3Muc3RhdChURVNURk4pLnN0X21vZGUKLSAgICAgICAgICAgIG9sZF9jaGlsZF9tb2RlID0gb3Muc3RhdChzZWxmLmNoaWxkcGF0aCkuc3RfbW9kZQorICAgICAgICAgICAgb2xkX2NoaWxkX2ZpbGVfbW9kZSA9IG9zLnN0YXQoc2VsZi5jaGlsZF9maWxlX3BhdGgpLnN0X21vZGUKKyAgICAgICAgICAgIG9sZF9jaGlsZF9kaXJfbW9kZSA9IG9zLnN0YXQoc2VsZi5jaGlsZF9kaXJfcGF0aCkuc3RfbW9kZQogICAgICAgICAgICAgIyBNYWtlIHVud3JpdGFibGUuCi0gICAgICAgICAgICBvcy5jaG1vZChzZWxmLmNoaWxkcGF0aCwgc3RhdC5TX0lSRUFEKQotICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCBzdGF0LlNfSVJFQUQpCisgICAgICAgICAgICBuZXdfbW9kZSA9IHN0YXQuU19JUkVBRHxzdGF0LlNfSUVYRUMKKyAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuY2hpbGRfZmlsZV9wYXRoLCBuZXdfbW9kZSkKKyAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuY2hpbGRfZGlyX3BhdGgsIG5ld19tb2RlKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCBuZXdfbW9kZSkKKworICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNobW9kLCBURVNURk4sIG9sZF9kaXJfbW9kZSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jaG1vZCwgc2VsZi5jaGlsZF9maWxlX3BhdGgsIG9sZF9jaGlsZF9maWxlX21vZGUpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2htb2QsIHNlbGYuY2hpbGRfZGlyX3BhdGgsIG9sZF9jaGlsZF9kaXJfbW9kZSkKIAogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShURVNURk4sIG9uZXJyb3I9c2VsZi5jaGVja19hcmdzX3RvX29uZXJyb3IpCiAgICAgICAgICAgICAjIFRlc3Qgd2hldGhlciBvbmVycm9yIGhhcyBhY3R1YWxseSBiZWVuIGNhbGxlZC4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5lcnJvclN0YXRlLCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgY2FsbCB0byBvbmVycm9yIGZ1bmN0aW9uIGRpZCBub3QgaGFwcGVuLiIpCi0KLSAgICAgICAgICAgICMgTWFrZSB3cml0YWJsZSBhZ2Fpbi4KLSAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgb2xkX2Rpcl9tb2RlKQotICAgICAgICAgICAgb3MuY2htb2Qoc2VsZi5jaGlsZHBhdGgsIG9sZF9jaGlsZF9tb2RlKQotCi0gICAgICAgICAgICAjIENsZWFuIHVwLgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShURVNURk4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXJyb3JTdGF0ZSwgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGNhbGwgdG8gb25lcnJvciBmdW5jdGlvbiBkaWQgbm90ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhcHBlbi4iKQogCiAgICAgZGVmIGNoZWNrX2FyZ3NfdG9fb25lcnJvcihzZWxmLCBmdW5jLCBhcmcsIGV4Yyk6CiAgICAgICAgICMgdGVzdF9ybXRyZWVfZXJyb3JzIGRlbGliZXJhdGVseSBydW5zIHJtdHJlZQotICAgICAgICAjIG9uIGEgZGlyZWN0b3J5IHRoYXQgaXMgY2htb2QgNDAwLCB3aGljaCB3aWxsIGZhaWwuCisgICAgICAgICMgb24gYSBkaXJlY3RvcnkgdGhhdCBpcyBjaG1vZCA1MDAsIHdoaWNoIHdpbGwgZmFpbC4KICAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIGlzIHJ1biB3aGVuIHNodXRpbC5ybXRyZWUgZmFpbHMuCiAgICAgICAgICMgOTkuOSUgb2YgdGhlIHRpbWUgaXQgaW5pdGlhbGx5IGZhaWxzIHRvIHJlbW92ZQogICAgICAgICAjIGEgZmlsZSBpbiB0aGUgZGlyZWN0b3J5LCBzbyB0aGUgZmlyc3QgdGltZSB0aHJvdWdoCkBAIC0xNDQsOTkgKzE5Nyw0MzYgQEAKICAgICAgICAgIyBGVVNFIGV4cGVyaWVuY2VkIGEgZmFpbHVyZSBlYXJsaWVyIGluIHRoZSBwcm9jZXNzCiAgICAgICAgICMgYXQgb3MubGlzdGRpci4gIFRoZSBmaXJzdCBmYWlsdXJlIG1heSBsZWdhbGx5CiAgICAgICAgICMgYmUgZWl0aGVyLgotICAgICAgICBpZiBzZWxmLmVycm9yU3RhdGUgPT0gMDoKLSAgICAgICAgICAgIGlmIGZ1bmMgaXMgb3MucmVtb3ZlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnLCBzZWxmLmNoaWxkcGF0aCkKKyAgICAgICAgaWYgc2VsZi5lcnJvclN0YXRlIDwgMjoKKyAgICAgICAgICAgIGlmIGZ1bmMgaXMgb3MudW5saW5rOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnLCBzZWxmLmNoaWxkX2ZpbGVfcGF0aCkKKyAgICAgICAgICAgIGVsaWYgZnVuYyBpcyBvcy5ybWRpcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgc2VsZi5jaGlsZF9kaXJfcGF0aCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmdW5jLCBvcy5saXN0ZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmMgbXVzdCBiZSBlaXRoZXIgb3MucmVtb3ZlIG9yIG9zLmxpc3RkaXIiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnLCBURVNURk4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmdW5jLCBvcy5saXN0ZGlyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXJnLCBbVEVTVEZOLCBzZWxmLmNoaWxkX2Rpcl9wYXRoXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGV4Y1swXSwgT1NFcnJvcikpCi0gICAgICAgICAgICBzZWxmLmVycm9yU3RhdGUgPSAxCisgICAgICAgICAgICBzZWxmLmVycm9yU3RhdGUgKz0gMQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jLCBvcy5ybWRpcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnLCBURVNURk4pCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhleGNbMF0sIE9TRXJyb3IpKQotICAgICAgICAgICAgc2VsZi5lcnJvclN0YXRlID0gMgorICAgICAgICAgICAgc2VsZi5lcnJvclN0YXRlID0gMworCisgICAgZGVmIHRlc3Rfcm10cmVlX2RvZXNfbm90X2Nob2tlX29uX2ZhaWxpbmdfbHN0YXQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdfbHN0YXQgPSBvcy5sc3RhdAorICAgICAgICAgICAgZGVmIHJhaXNlcihmbiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBpZiBmbiAhPSBURVNURk46CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnX2xzdGF0KGZuKQorICAgICAgICAgICAgb3MubHN0YXQgPSByYWlzZXIKKworICAgICAgICAgICAgb3MubWtkaXIoVEVTVEZOKQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoVEVTVEZOLCAnZm9vJyksICdmb28nKQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShURVNURk4pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5sc3RhdCA9IG9yaWdfbHN0YXQKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaG1vZCcpLCAncmVxdWlyZXMgb3MuY2htb2QnKQorICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5bW9kZV9mb2xsb3dfc3ltbGlua3Moc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgc3JjX2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JheicpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdxdXV4JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKGRzdCwgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgb3Muc3ltbGluayhkc3QsIGRzdF9saW5rKQorICAgICAgICBvcy5jaG1vZChzcmMsIHN0YXQuU19JUldYVXxzdGF0LlNfSVJXWEcpCisgICAgICAgICMgZmlsZSB0byBmaWxlCisgICAgICAgIG9zLmNobW9kKGRzdCwgc3RhdC5TX0lSV1hPKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyYywgZHN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKyAgICAgICAgIyBmb2xsb3cgc3JjIGxpbmsKKyAgICAgICAgb3MuY2htb2QoZHN0LCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKyAgICAgICAgIyBmb2xsb3cgZHN0IGxpbmsKKyAgICAgICAgb3MuY2htb2QoZHN0LCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmMsIGRzdF9saW5rKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKyAgICAgICAgIyBmb2xsb3cgYm90aCBsaW5rcworICAgICAgICBvcy5jaG1vZChkc3QsIHN0YXQuU19JUldYTykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyY19saW5rLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2xjaG1vZCcpLCAncmVxdWlyZXMgb3MubGNobW9kJykKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weW1vZGVfc3ltbGlua190b19zeW1saW5rKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAncXV1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgb3MuY2htb2Qoc3JjLCBzdGF0LlNfSVJXWFV8c3RhdC5TX0lSV1hHKQorICAgICAgICBvcy5jaG1vZChkc3QsIHN0YXQuU19JUldYVSkKKyAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWE98c3RhdC5TX0lSV1hHKQorICAgICAgICAjIGxpbmsgdG8gbGluaworICAgICAgICBvcy5sY2htb2QoZHN0X2xpbmssIHN0YXQuU19JUldYTykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyY19saW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmxzdGF0KHNyY19saW5rKS5zdF9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxzdGF0KGRzdF9saW5rKS5zdF9tb2RlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKyAgICAgICAgIyBzcmMgbGluayAtIHVzZSBjaG1vZAorICAgICAgICBvcy5sY2htb2QoZHN0X2xpbmssIHN0YXQuU19JUldYTykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZHN0IGxpbmsgLSB1c2UgY2htb2QKKyAgICAgICAgb3MubGNobW9kKGRzdF9saW5rLCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmMsIGRzdF9saW5rLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKG9zLCAnbGNobW9kJyksICdyZXF1aXJlcyBvcy5sY2htb2QgdG8gYmUgbWlzc2luZycpCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHltb2RlX3N5bWxpbmtfdG9fc3ltbGlua193b19sY2htb2Qoc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgc3JjX2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JheicpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdxdXV4JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKGRzdCwgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgb3Muc3ltbGluayhkc3QsIGRzdF9saW5rKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjX2xpbmssIGRzdF9saW5rLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpICAjIHNpbGVudCBmYWlsCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weXN0YXRfc3ltbGlua3Moc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgc3JjX2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JheicpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdxdXgnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIHNyY19zdGF0ID0gb3Muc3RhdChzcmMpCisgICAgICAgIG9zLnV0aW1lKHNyYywgKHNyY19zdGF0LnN0X2F0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICBzcmNfc3RhdC5zdF9tdGltZSAtIDQyLjApKSAgIyBlbnN1cmUgZGlmZmVyZW50IG10aW1lcworICAgICAgICB3cml0ZV9maWxlKGRzdCwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3Muc3RhdChzcmMpLnN0X210aW1lLCBvcy5zdGF0KGRzdCkuc3RfbXRpbWUpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgb3Muc3ltbGluayhkc3QsIGRzdF9saW5rKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBvcy5sY2htb2Qoc3JjX2xpbmssIHN0YXQuU19JUldYTykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJykgYW5kIGhhc2F0dHIoc3RhdCwgJ1VGX05PRFVNUCcpOgorICAgICAgICAgICAgb3MubGNoZmxhZ3Moc3JjX2xpbmssIHN0YXQuVUZfTk9EVU1QKQorICAgICAgICBzcmNfbGlua19zdGF0ID0gb3MubHN0YXQoc3JjX2xpbmspCisgICAgICAgICMgZm9sbG93CisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHNodXRpbC5jb3B5c3RhdChzcmNfbGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzcmNfbGlua19zdGF0LnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIGRvbid0IGZvbGxvdworICAgICAgICBzaHV0aWwuY29weXN0YXQoc3JjX2xpbmssIGRzdF9saW5rLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIGRzdF9saW5rX3N0YXQgPSBvcy5sc3RhdChkc3RfbGluaykKKyAgICAgICAgaWYgb3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ3N0X2F0aW1lJywgJ3N0X210aW1lJzoKKyAgICAgICAgICAgICAgICAjIFRoZSBtb2RpZmljYXRpb24gdGltZXMgbWF5IGJlIHRydW5jYXRlZCBpbiB0aGUgbmV3IGZpbGUuCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZ2V0YXR0cihzcmNfbGlua19zdGF0LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKGRzdF9saW5rX3N0YXQsIGF0dHIpICsgMSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcmNfbGlua19zdGF0LnN0X21vZGUsIGRzdF9saW5rX3N0YXQuc3RfbW9kZSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJykgYW5kIGhhc2F0dHIoc3JjX2xpbmtfc3RhdCwgJ3N0X2ZsYWdzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY19saW5rX3N0YXQuc3RfZmxhZ3MsIGRzdF9saW5rX3N0YXQuc3RfZmxhZ3MpCisgICAgICAgICMgdGVsbCB0byBmb2xsb3cgYnV0IGRzdCBpcyBub3QgYSBsaW5rCisgICAgICAgIHNodXRpbC5jb3B5c3RhdChzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhYnMob3Muc3RhdChzcmMpLnN0X210aW1lIC0gb3Muc3RhdChkc3QpLnN0X210aW1lKSA8CisgICAgICAgICAgICAgICAgICAgICAgICAwMDAwMC4xKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2NoZmxhZ3MnKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKGVycm5vLCAnRU9QTk9UU1VQUCcpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoZXJybm8sICdFTk9UU1VQJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIG9zLmNoZmxhZ3MsIEVPUE5PVFNVUFAgJiBFTk9UU1VQIikKKyAgICBkZWYgdGVzdF9jb3B5c3RhdF9oYW5kbGVzX2hhcm1sZXNzX2NoZmxhZ3NfZXJyb3JzKHNlbGYpOgorICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBmaWxlMSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmaWxlMScpCisgICAgICAgIGZpbGUyID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2ZpbGUyJykKKyAgICAgICAgd3JpdGVfZmlsZShmaWxlMSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoZmlsZTIsICd4eHgnKQorCisgICAgICAgIGRlZiBtYWtlX2NoZmxhZ3NfcmFpc2VyKGVycik6CisgICAgICAgICAgICBleCA9IE9TRXJyb3IoKQorCisgICAgICAgICAgICBkZWYgX2NoZmxhZ3NfcmFpc2VyKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgICAgICAgICAgICAgZXguZXJybm8gPSBlcnIKKyAgICAgICAgICAgICAgICByYWlzZSBleAorICAgICAgICAgICAgcmV0dXJuIF9jaGZsYWdzX3JhaXNlcgorICAgICAgICBvbGRfY2hmbGFncyA9IG9zLmNoZmxhZ3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIGVyciBpbiBlcnJuby5FT1BOT1RTVVBQLCBlcnJuby5FTk9UU1VQOgorICAgICAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBtYWtlX2NoZmxhZ3NfcmFpc2VyKGVycikKKyAgICAgICAgICAgICAgICBzaHV0aWwuY29weXN0YXQoZmlsZTEsIGZpbGUyKQorICAgICAgICAgICAgIyBhc3NlcnQgb3RoZXJzIGVycm9ycyBicmVhayBpdAorICAgICAgICAgICAgb3MuY2hmbGFncyA9IG1ha2VfY2hmbGFnc19yYWlzZXIoZXJybm8uRU9QTk9UU1VQUCArIGVycm5vLkVOT1RTVVApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzaHV0aWwuY29weXN0YXQsIGZpbGUxLCBmaWxlMikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBvbGRfY2hmbGFncworCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3NfeGF0dHIKKyAgICBkZWYgdGVzdF9jb3B5eGF0dHIoc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICB3cml0ZV9maWxlKGRzdCwgJ2JhcicpCisKKyAgICAgICAgIyBubyB4YXR0ciA9PSBubyBwcm9ibGVtCisgICAgICAgIHNodXRpbC5fY29weXhhdHRyKHNyYywgZHN0KQorICAgICAgICAjIGNvbW1vbiBjYXNlCisgICAgICAgIG9zLnNldHhhdHRyKHNyYywgJ3VzZXIuZm9vJywgYic0MicpCisgICAgICAgIG9zLnNldHhhdHRyKHNyYywgJ3VzZXIuYmFyJywgYic0MycpCisgICAgICAgIHNodXRpbC5fY29weXhhdHRyKHNyYywgZHN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmxpc3R4YXR0cihzcmMpLCBvcy5saXN0eGF0dHIoZHN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBvcy5nZXR4YXR0cihzcmMsICd1c2VyLmZvbycpLAorICAgICAgICAgICAgICAgIG9zLmdldHhhdHRyKGRzdCwgJ3VzZXIuZm9vJykpCisgICAgICAgICMgY2hlY2sgZXJyb3JzIGRvbid0IGFmZmVjdCBvdGhlciBhdHRycworICAgICAgICBvcy5yZW1vdmUoZHN0KQorICAgICAgICB3cml0ZV9maWxlKGRzdCwgJ2JhcicpCisgICAgICAgIG9zX2Vycm9yID0gT1NFcnJvcihlcnJuby5FUEVSTSwgJ0VQRVJNJykKKworICAgICAgICBkZWYgX3JhaXNlX29uX3VzZXJfZm9vKGZuYW1lLCBhdHRyLCB2YWwsICoqa3dhcmdzKToKKyAgICAgICAgICAgIGlmIGF0dHIgPT0gJ3VzZXIuZm9vJzoKKyAgICAgICAgICAgICAgICByYWlzZSBvc19lcnJvcgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcmlnX3NldHhhdHRyKGZuYW1lLCBhdHRyLCB2YWwsICoqa3dhcmdzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnX3NldHhhdHRyID0gb3Muc2V0eGF0dHIKKyAgICAgICAgICAgIG9zLnNldHhhdHRyID0gX3JhaXNlX29uX3VzZXJfZm9vCisgICAgICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmMsIGRzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3VzZXIuYmFyJywgb3MubGlzdHhhdHRyKGRzdCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5zZXR4YXR0ciA9IG9yaWdfc2V0eGF0dHIKKworICAgICAgICAjIHRlc3QgdGhhdCBzaHV0aWwuY29weXN0YXQgY29waWVzIHhhdHRycworICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3RoZV9vcmlnaW5hbCcpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCBzcmMpCisgICAgICAgIG9zLnNldHhhdHRyKHNyYywgJ3VzZXIudGhlX3ZhbHVlJywgYidmaWRkbHknKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3RoZV9jb3B5JykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsIGRzdCkKKyAgICAgICAgc2h1dGlsLmNvcHlzdGF0KHNyYywgZHN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldHhhdHRyKGRzdCwgJ3VzZXIudGhlX3ZhbHVlJyksIGInZmlkZGx5JykKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc194YXR0cgorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRldWlkJykgYW5kIG9zLmdldGV1aWQoKSA9PSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyb290IHByaXZpbGVnZXMgcmVxdWlyZWQnKQorICAgIGRlZiB0ZXN0X2NvcHl4YXR0cl9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgIyBPbiBMaW51eCwgaXQncyBvbmx5IHBvc3NpYmxlIHRvIGFjY2VzcyBub24tdXNlciB4YXR0ciBmb3Igc3ltbGlua3M7CisgICAgICAgICMgd2hpY2ggaW4gdHVybiByZXF1aXJlIHJvb3QgcHJpdmlsZWdlcy4gVGhpcyB0ZXN0IHNob3VsZCBiZSBleHBhbmRlZAorICAgICAgICAjIGFzIHNvb24gYXMgb3RoZXIgcGxhdGZvcm1zIGdhaW4gc3VwcG9ydCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcy4KKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgc3JjX2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JheicpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd0cnVzdGVkLmZvbycsIGInNDInKQorICAgICAgICBvcy5zZXR4YXR0cihzcmNfbGluaywgJ3RydXN0ZWQuZm9vJywgYic0MycsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAncXV4JykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdiYXInKQorICAgICAgICBvcy5zeW1saW5rKGRzdCwgZHN0X2xpbmspCisgICAgICAgIHNodXRpbC5fY29weXhhdHRyKHNyY19saW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldHhhdHRyKGRzdF9saW5rLCAndHJ1c3RlZC5mb28nLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLCBiJzQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MuZ2V0eGF0dHIsIGRzdCwgJ3RydXN0ZWQuZm9vJykKKyAgICAgICAgc2h1dGlsLl9jb3B5eGF0dHIoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldHhhdHRyKGRzdCwgJ3RydXN0ZWQuZm9vJyksIGInNDMnKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHlfc3ltbGlua3Moc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgc3JjX2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JheicpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBvcy5sY2htb2Qoc3JjX2xpbmssIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUldYTykKKyAgICAgICAgIyBkb24ndCBmb2xsb3cKKyAgICAgICAgc2h1dGlsLmNvcHkoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2xpbmsoZHN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkX2ZpbGUoc3JjKSwgcmVhZF9maWxlKGRzdCkpCisgICAgICAgIG9zLnJlbW92ZShkc3QpCisgICAgICAgICMgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5KHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGRzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZGxpbmsoZHN0KSwgb3MucmVhZGxpbmsoc3JjX2xpbmspKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmxzdGF0KHNyY19saW5rKS5zdF9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5sc3RhdChkc3QpLnN0X21vZGUpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weTJfc3ltbGlua3Moc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgc3JjX2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JheicpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBvcy5sY2htb2Qoc3JjX2xpbmssIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUldYTykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJykgYW5kIGhhc2F0dHIoc3RhdCwgJ1VGX05PRFVNUCcpOgorICAgICAgICAgICAgb3MubGNoZmxhZ3Moc3JjX2xpbmssIHN0YXQuVUZfTk9EVU1QKQorICAgICAgICBzcmNfc3RhdCA9IG9zLnN0YXQoc3JjKQorICAgICAgICBzcmNfbGlua19zdGF0ID0gb3MubHN0YXQoc3JjX2xpbmspCisgICAgICAgICMgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5MihzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzbGluayhkc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRfZmlsZShzcmMpLCByZWFkX2ZpbGUoZHN0KSkKKyAgICAgICAgb3MucmVtb3ZlKGRzdCkKKyAgICAgICAgIyBkb24ndCBmb2xsb3cKKyAgICAgICAgc2h1dGlsLmNvcHkyKHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGRzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZGxpbmsoZHN0KSwgb3MucmVhZGxpbmsoc3JjX2xpbmspKQorICAgICAgICBkc3Rfc3RhdCA9IG9zLmxzdGF0KGRzdCkKKyAgICAgICAgaWYgb3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ3N0X2F0aW1lJywgJ3N0X210aW1lJzoKKyAgICAgICAgICAgICAgICAjIFRoZSBtb2RpZmljYXRpb24gdGltZXMgbWF5IGJlIHRydW5jYXRlZCBpbiB0aGUgbmV3IGZpbGUuCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZ2V0YXR0cihzcmNfbGlua19zdGF0LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKGRzdF9zdGF0LCBhdHRyKSArIDEpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjX2xpbmtfc3RhdC5zdF9tb2RlLCBkc3Rfc3RhdC5zdF9tb2RlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzcmNfc3RhdC5zdF9tb2RlLCBkc3Rfc3RhdC5zdF9tb2RlKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNoZmxhZ3MnKSBhbmQgaGFzYXR0cihzcmNfbGlua19zdGF0LCAnc3RfZmxhZ3MnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjX2xpbmtfc3RhdC5zdF9mbGFncywgZHN0X3N0YXQuc3RfZmxhZ3MpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc194YXR0cgorICAgIGRlZiB0ZXN0X2NvcHkyX3hhdHRyKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjLCAndXNlci5mb28nLCBiJzQyJykKKyAgICAgICAgc2h1dGlsLmNvcHkyKHNyYywgZHN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIG9zLmdldHhhdHRyKHNyYywgJ3VzZXIuZm9vJyksCisgICAgICAgICAgICAgICAgb3MuZ2V0eGF0dHIoZHN0LCAndXNlci5mb28nKSkKKyAgICAgICAgb3MucmVtb3ZlKGRzdCkKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5ZmlsZV9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnc3JjJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdkc3QnKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZHN0X2xpbmsnKQorICAgICAgICBsaW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdsaW5rJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgbGluaykKKyAgICAgICAgIyBkb24ndCBmb2xsb3cKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKGxpbmssIGRzdF9saW5rLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhkc3RfbGluaykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZGxpbmsobGluayksIG9zLnJlYWRsaW5rKGRzdF9saW5rKSkKKyAgICAgICAgIyBmb2xsb3cKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKGxpbmssIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzbGluayhkc3QpKQorCisgICAgZGVmIHRlc3Rfcm10cmVlX3VzZXNfc2FmZV9mZF92ZXJzaW9uX2lmX2F2YWlsYWJsZShzZWxmKToKKyAgICAgICAgX3VzZV9mZF9mdW5jdGlvbnMgPSAoe29zLm9wZW4sIG9zLnN0YXQsIG9zLnVubGluaywgb3Mucm1kaXJ9IDw9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN1cHBvcnRzX2Rpcl9mZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubGlzdGRpciBpbiBvcy5zdXBwb3J0c19mZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdCBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3MpCisgICAgICAgIGlmIF91c2VfZmRfZnVuY3Rpb25zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNodXRpbC5fdXNlX2ZkX2Z1bmN0aW9ucykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzaHV0aWwucm10cmVlLmF2b2lkc19zeW1saW5rX2F0dGFja3MpCisgICAgICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgICAgIGQgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2EnKQorICAgICAgICAgICAgb3MubWtkaXIoZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZWFsX3JtdHJlZSA9IHNodXRpbC5fcm10cmVlX3NhZmVfZmQKKyAgICAgICAgICAgICAgICBjbGFzcyBDYWxsZWQoRXhjZXB0aW9uKTogcGFzcworICAgICAgICAgICAgICAgIGRlZiBfcmFpc2VyKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIENhbGxlZAorICAgICAgICAgICAgICAgIHNodXRpbC5fcm10cmVlX3NhZmVfZmQgPSBfcmFpc2VyCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQ2FsbGVkLCBzaHV0aWwucm10cmVlLCBkKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzaHV0aWwuX3JtdHJlZV9zYWZlX2ZkID0gcmVhbF9ybXRyZWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2h1dGlsLl91c2VfZmRfZnVuY3Rpb25zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzaHV0aWwucm10cmVlLmF2b2lkc19zeW1saW5rX2F0dGFja3MpCiAKICAgICBkZWYgdGVzdF9ybXRyZWVfZG9udF9kZWxldGVfZmlsZShzZWxmKToKICAgICAgICAgIyBXaGVuIGNhbGxlZCBvbiBhIGZpbGUgaW5zdGVhZCBvZiBhIGRpcmVjdG9yeSwgZG9uJ3QgZGVsZXRlIGl0LgogICAgICAgICBoYW5kbGUsIHBhdGggPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKLSAgICAgICAgb3MuZmRvcGVuKGhhbmRsZSkuY2xvc2UoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzaHV0aWwucm10cmVlLCBwYXRoKQorICAgICAgICBvcy5jbG9zZShoYW5kbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEFEaXJlY3RvcnlFcnJvciwgc2h1dGlsLnJtdHJlZSwgcGF0aCkKICAgICAgICAgb3MucmVtb3ZlKHBhdGgpCiAKLSAgICBkZWYgX3dyaXRlX2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6Ci0gICAgICAgIGYgPSBvcGVuKHBhdGgsICJ3IikKLSAgICAgICAgZi53cml0ZShkYXRhKQotICAgICAgICBmLmNsb3NlKCkKLQogICAgIGRlZiB0ZXN0X2NvcHl0cmVlX3NpbXBsZShzZWxmKToKLQotICAgICAgICBkZWYgcmVhZF9kYXRhKHBhdGgpOgotICAgICAgICAgICAgZiA9IG9wZW4ocGF0aCkKLSAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICByZXR1cm4gZGF0YQotCiAgICAgICAgIHNyY19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKICAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbih0ZW1wZmlsZS5ta2R0ZW1wKCksICdkZXN0aW5hdGlvbicpCi0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0LnR4dCcpLCAnMTIzJykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIHNyY19kaXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBvcy5wYXRoLmRpcm5hbWUoZHN0X2RpcikpCisgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0LnR4dCcpLCAnMTIzJykKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicpKQotICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3QudHh0JykpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicpKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QudHh0JykpKQotICAgICAgICAgICAgYWN0dWFsID0gcmVhZF9kYXRhKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCAnMTIzJykKLSAgICAgICAgICAgIGFjdHVhbCA9IHJlYWRfZGF0YShvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgJzQ1NicpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb3IgcGF0aCBpbiAoCi0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdC50eHQnKSwKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0LnR4dCcpLAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksCi0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwKLSAgICAgICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUocGF0aCkKLSAgICAgICAgICAgIGZvciBwYXRoIGluIChzcmNfZGlyLAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoZHN0X2RpcikKLSAgICAgICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgpCisgICAgICAgIHNodXRpbC5jb3B5dHJlZShzcmNfZGlyLCBkc3RfZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0LnR4dCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0LnR4dCcpKSkKKyAgICAgICAgYWN0dWFsID0gcmVhZF9maWxlKChkc3RfZGlyLCAndGVzdC50eHQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsICcxMjMnKQorICAgICAgICBhY3R1YWwgPSByZWFkX2ZpbGUoKGRzdF9kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgJzQ1NicpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weXRyZWVfc3ltbGlua3Moc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmNfZGlyID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdzcmMnKQorICAgICAgICBkc3RfZGlyID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdkc3QnKQorICAgICAgICBzdWJfZGlyID0gb3MucGF0aC5qb2luKHNyY19kaXIsICdzdWInKQorICAgICAgICBvcy5ta2RpcihzcmNfZGlyKQorICAgICAgICBvcy5ta2RpcihzdWJfZGlyKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAnZmlsZS50eHQnKSwgJ2ZvbycpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHN1Yl9kaXIsICdsaW5rJykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3N1Yi9saW5rJykKKyAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ2ZpbGUudHh0JyksCisgICAgICAgICAgICAgICAgICAgc3JjX2xpbmspCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIG9zLmxjaG1vZChzcmNfbGluaywgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hPKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNoZmxhZ3MnKSBhbmQgaGFzYXR0cihzdGF0LCAnVUZfTk9EVU1QJyk6CisgICAgICAgICAgICBvcy5sY2hmbGFncyhzcmNfbGluaywgc3RhdC5VRl9OT0RVTVApCisgICAgICAgIHNyY19zdGF0ID0gb3MubHN0YXQoc3JjX2xpbmspCisgICAgICAgIHNodXRpbC5jb3B5dHJlZShzcmNfZGlyLCBkc3RfZGlyLCBzeW1saW5rcz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsob3MucGF0aC5qb2luKGRzdF9kaXIsICdzdWInLCAnbGluaycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5yZWFkbGluayhvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3N1YicsICdsaW5rJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzcmNfZGlyLCAnZmlsZS50eHQnKSkKKyAgICAgICAgZHN0X3N0YXQgPSBvcy5sc3RhdChkc3RfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3Rfc3RhdC5zdF9tb2RlLCBzcmNfc3RhdC5zdF9tb2RlKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNoZmxhZ3MnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0X3N0YXQuc3RfZmxhZ3MsIHNyY19zdGF0LnN0X2ZsYWdzKQogCiAgICAgZGVmIHRlc3RfY29weXRyZWVfd2l0aF9leGNsdWRlKHNlbGYpOgotCi0gICAgICAgIGRlZiByZWFkX2RhdGEocGF0aCk6Ci0gICAgICAgICAgICBmID0gb3BlbihwYXRoKQotICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHJldHVybiBkYXRhCi0KICAgICAgICAgIyBjcmVhdGluZyBkYXRhCiAgICAgICAgIGpvaW4gPSBvcy5wYXRoLmpvaW4KICAgICAgICAgZXhpc3RzID0gb3MucGF0aC5leGlzdHMKICAgICAgICAgc3JjX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBkc3RfZGlyID0gam9pbih0ZW1wZmlsZS5ta2R0ZW1wKCksICdkZXN0aW5hdGlvbicpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKGpvaW4oc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0LnRtcCcpLCAnMTIzJykKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0LnR4dCcpLCAnMTIzJykKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0LnRtcCcpLCAnMTIzJykKICAgICAgICAgICAgIG9zLm1rZGlyKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJykpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQogICAgICAgICAgICAgb3MubWtkaXIoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJykpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0X2RpcjInLCAndGVzdC50eHQnKSwgJzQ1NicpCiAgICAgICAgICAgICBvcy5ta2Rpcihqb2luKHNyY19kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyJykpCiAgICAgICAgICAgICBvcy5ta2Rpcihqb2luKHNyY19kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicpKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyJywgJ3Rlc3QudHh0JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICc0NTYnKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicsICd0ZXN0LnB5JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICc0NTYnKQotCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicsICd0ZXN0LnB5JyksICc0NTYnKQogCiAgICAgICAgICAgICAjIHRlc3RpbmcgZ2xvYi1saWtlIHBhdHRlcm5zCiAgICAgICAgICAgICB0cnk6CkBAIC0yNDQsMjEgKzYzNCwxOSBAQAogICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5dHJlZShzcmNfZGlyLCBkc3RfZGlyLCBpZ25vcmU9cGF0dGVybnMpCiAgICAgICAgICAgICAgICAgIyBjaGVja2luZyB0aGUgcmVzdWx0OiBzb21lIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgY29waWVkCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0LnR4dCcpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0LnRtcCcpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdC50bXAnKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJykpKQogICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkc3RfZGlyKToKLSAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3RfZGlyKQorICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0X2RpcikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwYXR0ZXJucyA9IHNodXRpbC5pZ25vcmVfcGF0dGVybnMoJyoudG1wJywgJ3N1YmRpcionKQogICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5dHJlZShzcmNfZGlyLCBkc3RfZGlyLCBpZ25vcmU9cGF0dGVybnMpCiAgICAgICAgICAgICAgICAgIyBjaGVja2luZyB0aGUgcmVzdWx0OiBzb21lIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgY29waWVkCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdC50bXAnKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0LnRtcCcpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyJykpKQogICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkc3RfZGlyKToKLSAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3RfZGlyKQorICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0X2RpcikKIAogICAgICAgICAgICAgIyB0ZXN0aW5nIGNhbGxhYmxlLXN0eWxlCiAgICAgICAgICAgICB0cnk6CkBAIC0yNzcsMTMgKzY2NSwxMiBAQAogICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5dHJlZShzcmNfZGlyLCBkc3RfZGlyLCBpZ25vcmU9X2ZpbHRlcikKIAogICAgICAgICAgICAgICAgICMgY2hlY2tpbmcgdGhlIHJlc3VsdDogc29tZSBlbGVtZW50cyBzaG91bGQgbm90IGJlIGNvcGllZAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC5weScpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0LnB5JykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInKSkpCiAKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0X2RpcikKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNyY19kaXIpCiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKG9zLnBhdGguZGlybmFtZShkc3RfZGlyKSkKQEAgLTMwOCwzNSArNjk1LDYgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2hmbGFncycpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoZXJybm8sICdFT1BOT1RTVVBQJykgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihlcnJubywgJ0VOT1RTVVAnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZXMgb3MuY2hmbGFncywgRU9QTk9UU1VQUCAmIEVOT1RTVVAiKQotICAgIGRlZiB0ZXN0X2NvcHlzdGF0X2hhbmRsZXNfaGFybWxlc3NfY2hmbGFnc19lcnJvcnMoc2VsZik6Ci0gICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCi0gICAgICAgIGZpbGUxID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2ZpbGUxJykKLSAgICAgICAgZmlsZTIgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZmlsZTInKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZmlsZTEsICd4eHgnKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZmlsZTIsICd4eHgnKQotCi0gICAgICAgIGRlZiBtYWtlX2NoZmxhZ3NfcmFpc2VyKGVycik6Ci0gICAgICAgICAgICBleCA9IE9TRXJyb3IoKQotCi0gICAgICAgICAgICBkZWYgX2NoZmxhZ3NfcmFpc2VyKHBhdGgsIGZsYWdzKToKLSAgICAgICAgICAgICAgICBleC5lcnJubyA9IGVycgotICAgICAgICAgICAgICAgIHJhaXNlIGV4Ci0gICAgICAgICAgICByZXR1cm4gX2NoZmxhZ3NfcmFpc2VyCi0gICAgICAgIG9sZF9jaGZsYWdzID0gb3MuY2hmbGFncwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgZXJyIGluIGVycm5vLkVPUE5PVFNVUFAsIGVycm5vLkVOT1RTVVA6Ci0gICAgICAgICAgICAgICAgb3MuY2hmbGFncyA9IG1ha2VfY2hmbGFnc19yYWlzZXIoZXJyKQotICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5c3RhdChmaWxlMSwgZmlsZTIpCi0gICAgICAgICAgICAjIGFzc2VydCBvdGhlcnMgZXJyb3JzIGJyZWFrIGl0Ci0gICAgICAgICAgICBvcy5jaGZsYWdzID0gbWFrZV9jaGZsYWdzX3JhaXNlcihlcnJuby5FT1BOT1RTVVBQICsgZXJybm8uRU5PVFNVUCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNodXRpbC5jb3B5c3RhdCwgZmlsZTEsIGZpbGUyKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MuY2hmbGFncyA9IG9sZF9jaGZsYWdzCi0KICAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCiAgICAgZGVmIHRlc3RfZG9udF9jb3B5X2ZpbGVfb250b19zeW1saW5rX3RvX2l0c2VsZihzZWxmKToKICAgICAgICAgIyBidWcgODUxMTIzLgpAQCAtMzY3LDYgKzcyNSw3IEBACiAgICAgICAgICAgICBvcy5ta2RpcihzcmMpCiAgICAgICAgICAgICBvcy5zeW1saW5rKHNyYywgZHN0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLnJtdHJlZSwgZHN0KQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3QsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAKQEAgLTQwNyw5ICs3NjYsOSBAQAogCiAgICAgICAgIHNyY19kaXIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBkc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpLCAnZGVzdGluYXRpb24nKQotICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCisgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0LnR4dCcpLCAnMTIzJykKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicpKQotICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKIAogICAgICAgICBjb3BpZWQgPSBbXQogICAgICAgICBkZWYgX2NvcHkoc3JjLCBkc3QpOgpAQCAtNDI2LDcgKzc4NSw3IEBACiAgICAgICAgIGRzdF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCksICdkZXN0aW5hdGlvbicpCiAgICAgICAgIG9zLnN5bWxpbmsoJ0lET05URVhJU1QnLCBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3QudHh0JykpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInKSkKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVycm9yLCBzaHV0aWwuY29weXRyZWUsIHNyY19kaXIsIGRzdF9kaXIpCiAKICAgICAgICAgIyBhIGRhbmdsaW5nIHN5bWxpbmsgaXMgaWdub3JlZCB3aXRoIHRoZSBwcm9wZXIgZmxhZwpAQCAtNDQyLDcgKzgwMSw3IEBACiAgICAgZGVmIF9jb3B5X2ZpbGUoc2VsZiwgbWV0aG9kKToKICAgICAgICAgZm5hbWUgPSAndGVzdC50eHQnCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCBmbmFtZV0pCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgZm5hbWUpLCAneHh4JykKICAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCBmbmFtZSkKICAgICAgICAgdG1wZGlyMiA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIG1ldGhvZChmaWxlMSwgdG1wZGlyMikKQEAgLTQ3NCwxNCArODMzLDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoZmlsZTFfc3RhdCwgJ3N0X2ZsYWdzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZmlsZTJfc3RhdCwgJ3N0X2ZsYWdzJykpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGwoc2VsZik6CiAgICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIHRvIHRhcgogICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUxJ10sICd4eHgnKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUyJ10sICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsICdmaWxlMScpLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCAnZmlsZTInKSwgJ3h4eCcpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbih0bXBkaXIsICdzdWInKSkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdzdWInLCAnZmlsZTMnXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgJ3N1YicsICdmaWxlMycpLCAneHh4JykKIAogICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgIyBmb3JjZSBzaHV0aWwgdG8gY3JlYXRlIHRoZSBkaXJlY3RvcnkKQEAgLTUyOCwxNiArODg3LDE2IEBACiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIGRpc3QgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZGlzdCcpCiAgICAgICAgIG9zLm1rZGlyKGRpc3QpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbZGlzdCwgJ2ZpbGUxJ10sICd4eHgnKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW2Rpc3QsICdmaWxlMiddLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgoZGlzdCwgJ2ZpbGUxJyksICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKChkaXN0LCAnZmlsZTInKSwgJ3h4eCcpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkaXN0LCAnc3ViJykpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbZGlzdCwgJ3N1YicsICdmaWxlMyddLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgoZGlzdCwgJ3N1YicsICdmaWxlMycpLCAneHh4JykKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKGRpc3QsICdzdWIyJykpCiAgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQogICAgICAgICByZXR1cm4gdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGZpbmRfZXhlY3V0YWJsZSgndGFyJykgYW5kIGZpbmRfZXhlY3V0YWJsZSgnZ3ppcCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdOZWVkIHRoZSB0YXIgY29tbWFuZCB0byBydW4nKQogICAgIGRlZiB0ZXN0X3RhcmZpbGVfdnNfdGFyKHNlbGYpOgpAQCAtNTkyLDEzICs5NTEsMTMgQEAKICAgICAgICAgdGFyYmFsbCA9IGJhc2VfbmFtZSArICcudGFyJwogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModGFyYmFsbCkpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAiUmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaSVBfU1VQUE9SVCwgJ05lZWQgemlwIHN1cHBvcnQgdG8gcnVuJykKICAgICBkZWYgdGVzdF9tYWtlX3ppcGZpbGUoc2VsZik6CiAgICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIHRvIHRhcgogICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUxJ10sICd4eHgnKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUyJ10sICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsICdmaWxlMScpLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCAnZmlsZTInKSwgJ3h4eCcpCiAKICAgICAgICAgdG1wZGlyMiA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgICMgZm9yY2Ugc2h1dGlsIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5CkBAIC02MTYsNyArOTc1LDcgQEAKICAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2FyY2hpdmUnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYWtlX2FyY2hpdmUsIGJhc2VfbmFtZSwgJ3h4eCcpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAiUmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmVfb3duZXJfZ3JvdXAoc2VsZik6CiAgICAgICAgICMgdGVzdGluZyBtYWtlX2FyY2hpdmUgd2l0aCBvd25lciBhbmQgZ3JvdXAsIHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMKICAgICAgICAgIyB0aGlzIHdvcmtzIGV2ZW4gaWYgdGhlcmUncyBub3QgZ2lkL3VpZCBzdXBwb3J0CkBAIC02NDQsNyArMTAwMyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhyZXMpKQogCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAiUmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhVSURfR0lEX1NVUFBPUlQsICJSZXF1aXJlcyBncnAgYW5kIHB3ZCBzdXBwb3J0IikKICAgICBkZWYgdGVzdF90YXJmaWxlX3Jvb3Rfb3duZXIoc2VsZik6CiAgICAgICAgIHRtcGRpciwgdG1wZGlyMiwgYmFzZV9uYW1lID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCkBAIC03MTMsNyArMTA3Miw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRpZmYuYXBwZW5kKGZpbGVfKQogICAgICAgICByZXR1cm4gZGlmZgogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgIlJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfdW5wYWNrX2FyY2hpdmUoc2VsZik6CiAgICAgICAgIGZvcm1hdHMgPSBbJ3RhcicsICdnenRhcicsICd6aXAnXQogICAgICAgICBpZiBCWjJfU1VQUE9SVEVEOgpAQCAtNzY0LDYgKzExMjMsMTYyIEBACiAgICAgICAgIHVucmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdCgnQm9vMicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3VucGFja19mb3JtYXRzKCksIGZvcm1hdHMpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNodXRpbCwgJ2Rpc2tfdXNhZ2UnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGlza191c2FnZSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iKQorICAgIGRlZiB0ZXN0X2Rpc2tfdXNhZ2Uoc2VsZik6CisgICAgICAgIHVzYWdlID0gc2h1dGlsLmRpc2tfdXNhZ2Uob3MuZ2V0Y3dkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih1c2FnZS50b3RhbCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHVzYWdlLnVzZWQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHVzYWdlLmZyZWUsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHVzYWdlLnRvdGFsLCB1c2FnZS51c2VkKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodXNhZ2UudG90YWwsIHVzYWdlLmZyZWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhVSURfR0lEX1NVUFBPUlQsICJSZXF1aXJlcyBncnAgYW5kIHB3ZCBzdXBwb3J0IikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2hvd24nKSwgJ3JlcXVpcmVzIG9zLmNob3duJykKKyAgICBkZWYgdGVzdF9jaG93bihzZWxmKToKKworICAgICAgICAjIGNsZWFuZWQtdXAgYXV0b21hdGljYWxseSBieSBUZXN0U2h1dGlsLnRlYXJEb3duIG1ldGhvZAorICAgICAgICBkaXJuYW1lID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZmlsZW5hbWUgPSB0ZW1wZmlsZS5ta3RlbXAoZGlyPWRpcm5hbWUpCisgICAgICAgIHdyaXRlX2ZpbGUoZmlsZW5hbWUsICd0ZXN0aW5nIGNob3duIGZ1bmN0aW9uJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTG9va3VwRXJyb3IpOgorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyPSdub24tZXhpc2luZyB1c2VybmFtZScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMb29rdXBFcnJvcik6CisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGdyb3VwPSdub24tZXhpc2luZyBncm91cG5hbWUnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgYidzcGFtJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIDMuMTQpCisKKyAgICAgICAgdWlkID0gb3MuZ2V0dWlkKCkKKyAgICAgICAgZ2lkID0gb3MuZ2V0Z2lkKCkKKworICAgICAgICBkZWYgY2hlY2tfY2hvd24ocGF0aCwgdWlkPU5vbmUsIGdpZD1Ob25lKToKKyAgICAgICAgICAgIHMgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICAgICAgaWYgdWlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodWlkLCBzLnN0X3VpZCkKKyAgICAgICAgICAgIGlmIGdpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdpZCwgcy5zdF9naWQpCisKKyAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1aWQsIGdpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZmlsZW5hbWUsIHVpZCwgZ2lkKQorICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZmlsZW5hbWUsIHVpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyPXVpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZmlsZW5hbWUsIHVpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBncm91cD1naWQpCisgICAgICAgIGNoZWNrX2Nob3duKGZpbGVuYW1lLCBnaWQ9Z2lkKQorCisgICAgICAgIHNodXRpbC5jaG93bihkaXJuYW1lLCB1aWQsIGdpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgdWlkLCBnaWQpCisgICAgICAgIHNodXRpbC5jaG93bihkaXJuYW1lLCB1aWQpCisgICAgICAgIGNoZWNrX2Nob3duKGRpcm5hbWUsIHVpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIHVzZXI9dWlkKQorICAgICAgICBjaGVja19jaG93bihkaXJuYW1lLCB1aWQpCisgICAgICAgIHNodXRpbC5jaG93bihkaXJuYW1lLCBncm91cD1naWQpCisgICAgICAgIGNoZWNrX2Nob3duKGRpcm5hbWUsIGdpZD1naWQpCisKKyAgICAgICAgdXNlciA9IHB3ZC5nZXRwd3VpZCh1aWQpWzBdCisgICAgICAgIGdyb3VwID0gZ3JwLmdldGdyZ2lkKGdpZClbMF0KKyAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyLCBncm91cCkKKyAgICAgICAgY2hlY2tfY2hvd24oZmlsZW5hbWUsIHVpZCwgZ2lkKQorICAgICAgICBzaHV0aWwuY2hvd24oZGlybmFtZSwgdXNlciwgZ3JvdXApCisgICAgICAgIGNoZWNrX2Nob3duKGRpcm5hbWUsIHVpZCwgZ2lkKQorCisgICAgZGVmIHRlc3RfY29weV9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgICMgY29weSBhbmQgY29weTIgYm90aCByZXR1cm4gdGhlaXIgZGVzdGluYXRpb24gcGF0aC4KKyAgICAgICAgZm9yIGZuIGluIChzaHV0aWwuY29weSwgc2h1dGlsLmNvcHkyKToKKyAgICAgICAgICAgIHNyY19kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICAgICAgZHN0X2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ2ZvbycpCisgICAgICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgICAgICBydiA9IGZuKHNyYywgZHN0X2RpcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIG9zLnBhdGguam9pbihkc3RfZGlyLCAnZm9vJykpCisgICAgICAgICAgICBydiA9IGZuKHNyYywgb3MucGF0aC5qb2luKGRzdF9kaXIsICdiYXInKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIG9zLnBhdGguam9pbihkc3RfZGlyLCAnYmFyJykpCisKKyAgICBkZWYgdGVzdF9jb3B5ZmlsZV9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgICMgY29weXRyZWUgcmV0dXJucyBpdHMgZGVzdGluYXRpb24gcGF0aC4KKyAgICAgICAgc3JjX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGRzdF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBkc3RfZmlsZSA9IG9zLnBhdGguam9pbihkc3RfZGlyLCAnYmFyJykKKyAgICAgICAgc3JjX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ2ZvbycpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjX2ZpbGUsICdmb28nKQorICAgICAgICBydiA9IHNodXRpbC5jb3B5ZmlsZShzcmNfZmlsZSwgZHN0X2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhydikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZF9maWxlKHNyY19maWxlKSwgcmVhZF9maWxlKGRzdF9maWxlKSkKKworICAgIGRlZiB0ZXN0X2NvcHl0cmVlX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgIyBjb3B5dHJlZSByZXR1cm5zIGl0cyBkZXN0aW5hdGlvbiBwYXRoLgorICAgICAgICBzcmNfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZHN0X2RpciA9IHNyY19kaXIgKyAiZGVzdCIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIGRzdF9kaXIsIFRydWUpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBydiA9IHNodXRpbC5jb3B5dHJlZShzcmNfZGlyLCBkc3RfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnZm9vJ10sIG9zLmxpc3RkaXIocnYpKQorCisKK2NsYXNzIFRlc3RXaGljaCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYudGVtcF9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIHNlbGYudGVtcF9kaXIsIFRydWUpCisgICAgICAgICMgR2l2ZSB0aGUgdGVtcF9maWxlIGFuICIuZXhlIiBzdWZmaXggZm9yIGFsbC4KKyAgICAgICAgIyBJdCdzIG5lZWRlZCBvbiBXaW5kb3dzIGFuZCBub3QgaGFybWZ1bCBvbiBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAgIHNlbGYudGVtcF9maWxlID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRpcj1zZWxmLnRlbXBfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9Ii5leGUiKQorICAgICAgICBvcy5jaG1vZChzZWxmLnRlbXBfZmlsZS5uYW1lLCBzdGF0LlNfSVhVU1IpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnRlbXBfZmlsZS5jbG9zZSkKKyAgICAgICAgc2VsZi5kaXIsIHNlbGYuZmlsZSA9IG9zLnBhdGguc3BsaXQoc2VsZi50ZW1wX2ZpbGUubmFtZSkKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICAjIEdpdmVuIGFuIEVYRSBpbiBhIGRpcmVjdG9yeSwgaXQgc2hvdWxkIGJlIHJldHVybmVkLgorICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLmZpbGUsIHBhdGg9c2VsZi5kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIHNlbGYudGVtcF9maWxlLm5hbWUpCisKKyAgICBkZWYgdGVzdF9mdWxsX3BhdGhfc2hvcnRfY2lyY3VpdChzZWxmKToKKyAgICAgICAgIyBXaGVuIGdpdmVuIHRoZSBmdWxseSBxdWFsaWZpZWQgcGF0aCB0byBhbiBleGVjdXRhYmxlIHRoYXQgZXhpc3RzLAorICAgICAgICAjIGl0IHNob3VsZCBiZSByZXR1cm5lZC4KKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goc2VsZi50ZW1wX2ZpbGUubmFtZSwgcGF0aD1zZWxmLnRlbXBfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGVtcF9maWxlLm5hbWUsIHJ2KQorCisgICAgZGVmIHRlc3Rfbm9uX21hdGNoaW5nX21vZGUoc2VsZik6CisgICAgICAgICMgU2V0IHRoZSBmaWxlIHJlYWQtb25seSBhbmQgYXNrIGZvciB3cml0ZWFibGUgZmlsZXMuCisgICAgICAgIG9zLmNobW9kKHNlbGYudGVtcF9maWxlLm5hbWUsIHN0YXQuU19JUkVBRCkKKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goc2VsZi5maWxlLCBwYXRoPXNlbGYuZGlyLCBtb2RlPW9zLldfT0spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJ2KQorCisgICAgZGVmIHRlc3RfcmVsYXRpdmUoc2VsZik6CisgICAgICAgIG9sZF9jd2QgPSBvcy5nZXRjd2QoKQorICAgICAgICBiYXNlX2RpciwgdGFpbF9kaXIgPSBvcy5wYXRoLnNwbGl0KHNlbGYuZGlyKQorICAgICAgICBvcy5jaGRpcihiYXNlX2RpcikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goc2VsZi5maWxlLCBwYXRoPXRhaWxfZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgb3MucGF0aC5qb2luKHRhaWxfZGlyLCBzZWxmLmZpbGUpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hkaXIob2xkX2N3ZCkKKworICAgIGRlZiB0ZXN0X25vbmV4aXN0ZW50X2ZpbGUoc2VsZik6CisgICAgICAgICMgUmV0dXJuIE5vbmUgd2hlbiBubyBtYXRjaGluZyBleGVjdXRhYmxlIGZpbGUgaXMgZm91bmQgb24gdGhlIHBhdGguCisgICAgICAgIHJ2ID0gc2h1dGlsLndoaWNoKCJmb28uZXhlIiwgcGF0aD1zZWxmLmRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocnYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aGV4dCBjaGVjayBpcyBXaW5kb3dzLW9ubHkiKQorICAgIGRlZiB0ZXN0X3BhdGhleHRfY2hlY2tpbmcoc2VsZik6CisgICAgICAgICMgQXNrIGZvciB0aGUgZmlsZSB3aXRob3V0IHRoZSAiLmV4ZSIgZXh0ZW5zaW9uLCB0aGVuIGVuc3VyZSB0aGF0CisgICAgICAgICMgaXQgZ2V0cyBmb3VuZCBwcm9wZXJseSB3aXRoIHRoZSBleHRlbnNpb24uCisgICAgICAgIHJ2ID0gc2h1dGlsLndoaWNoKHNlbGYudGVtcF9maWxlLm5hbWVbOi00XSwgcGF0aD1zZWxmLmRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRlbXBfZmlsZS5uYW1lLCBydikKKwogCiBjbGFzcyBUZXN0TW92ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTg3Nyw2ICsxMzkyLDU4IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTiwgaWdub3JlX2Vycm9ycz1UcnVlKQogCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIEBtb2NrX3JlbmFtZQorICAgIGRlZiB0ZXN0X21vdmVfZmlsZV9zeW1saW5rKHNlbGYpOgorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCAnYmFyJykKKyAgICAgICAgb3Muc3ltbGluayhzZWxmLnNyY19maWxlLCBkc3QpCisgICAgICAgIHNodXRpbC5tb3ZlKGRzdCwgc2VsZi5kc3RfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKHNlbGYuZHN0X2ZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lZmlsZShzZWxmLnNyY19maWxlLCBzZWxmLmRzdF9maWxlKSkKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBAbW9ja19yZW5hbWUKKyAgICBkZWYgdGVzdF9tb3ZlX2ZpbGVfc3ltbGlua190b19kaXIoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gImJhciIKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgZmlsZW5hbWUpCisgICAgICAgIG9zLnN5bWxpbmsoc2VsZi5zcmNfZmlsZSwgZHN0KQorICAgICAgICBzaHV0aWwubW92ZShkc3QsIHNlbGYuZHN0X2RpcikKKyAgICAgICAgZmluYWxfbGluayA9IG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZmluYWxfbGluaykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVmaWxlKHNlbGYuc3JjX2ZpbGUsIGZpbmFsX2xpbmspKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIEBtb2NrX3JlbmFtZQorICAgIGRlZiB0ZXN0X21vdmVfZGFuZ2xpbmdfc3ltbGluayhzZWxmKToKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2JheicpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdiYXInKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgZHN0KQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsICdxdXV4JykKKyAgICAgICAgc2h1dGlsLm1vdmUoZHN0LCBkc3RfbGluaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGRzdF9saW5rKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLnJlYWxwYXRoKHNyYyksIG9zLnBhdGgucmVhbHBhdGgoZHN0X2xpbmspKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIEBtb2NrX3JlbmFtZQorICAgIGRlZiB0ZXN0X21vdmVfZGlyX3N5bWxpbmsoc2VsZik6CisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdiYXonKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCAnYmFyJykKKyAgICAgICAgb3MubWtkaXIoc3JjKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgZHN0KQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsICdxdXV4JykKKyAgICAgICAgc2h1dGlsLm1vdmUoZHN0LCBkc3RfbGluaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGRzdF9saW5rKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZWZpbGUoc3JjLCBkc3RfbGluaykpCisKKyAgICBkZWYgdGVzdF9tb3ZlX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgcnYgPSBzaHV0aWwubW92ZShzZWxmLnNyY19maWxlLCBzZWxmLmRzdF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuZHN0X2Rpciwgb3MucGF0aC5iYXNlbmFtZShzZWxmLnNyY19maWxlKSkpCisKKyAgICBkZWYgdGVzdF9tb3ZlX2FzX3JlbmFtZV9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIHJ2ID0gc2h1dGlsLm1vdmUoc2VsZi5zcmNfZmlsZSwgb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ2JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCAnYmFyJykpCisKIAogY2xhc3MgVGVzdENvcHlGaWxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtOTg2LDYgKzE1NTMsNyBAQAogICAgICAgICAjIGJ1dCBhIGRpZmZlcmVudCBjYXNlLgogCiAgICAgICAgIHNlbGYuc3JjX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgc2VsZi5zcmNfZGlyLCBUcnVlKQogICAgICAgICBkc3RfZGlyID0gb3MucGF0aC5qb2luKAogICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShzZWxmLnNyY19kaXIpLAogICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoc2VsZi5zcmNfZGlyKS51cHBlcigpKQpAQCAtOTk1LDEzICsxNTYzLDU3IEBACiAgICAgICAgICAgICBzaHV0aWwubW92ZShzZWxmLnNyY19kaXIsIGRzdF9kaXIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihkc3RfZGlyKSkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRzdF9kaXIpOgotICAgICAgICAgICAgICAgIG9zLnJtZGlyKGRzdF9kaXIpCisgICAgICAgICAgICBvcy5ybWRpcihkc3RfZGlyKQogCitjbGFzcyBUZXJtc2l6ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9kb2VzX25vdF9jcmFzaChzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgaWYgZ2V0X3Rlcm1pbmFsX3NpemUoKSByZXR1cm5zIGEgbWVhbmluZ2Z1bCB2YWx1ZS4KKworICAgICAgICBUaGVyZSdzIG5vIGVhc3kgcG9ydGFibGUgd2F5IHRvIGFjdHVhbGx5IGNoZWNrIHRoZSBzaXplIG9mIHRoZQorICAgICAgICB0ZXJtaW5hbCwgc28gbGV0J3MgY2hlY2sgaWYgaXQgcmV0dXJucyBzb21ldGhpbmcgc2Vuc2libGUgaW5zdGVhZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNpemUgPSBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemUoKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzaXplLmNvbHVtbnMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNpemUubGluZXMsIDApCisKKyAgICBkZWYgdGVzdF9vc19lbnZpcm9uX2ZpcnN0KHNlbGYpOgorICAgICAgICAiQ2hlY2sgaWYgZW52aXJvbm1lbnQgdmFyaWFibGVzIGhhdmUgcHJlY2VkZW5jZSIKKworICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgIGVudlsnQ09MVU1OUyddID0gJzc3NycKKyAgICAgICAgICAgIHNpemUgPSBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUuY29sdW1ucywgNzc3KQorCisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgZW52WydMSU5FUyddID0gJzg4OCcKKyAgICAgICAgICAgIHNpemUgPSBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUubGluZXMsIDg4OCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmlzYXR0eShzeXMuX19zdGRvdXRfXy5maWxlbm8oKSksICJub3Qgb24gdHR5IikKKyAgICBkZWYgdGVzdF9zdHR5X21hdGNoKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBpZiBzdHR5IHJldHVybnMgdGhlIHNhbWUgcmVzdWx0cyBpZ25vcmluZyBlbnYKKworICAgICAgICBUaGlzIHRlc3Qgd2lsbCBmYWlsIGlmIHN0ZGluIGFuZCBzdGRvdXQgYXJlIGNvbm5lY3RlZCB0bworICAgICAgICBkaWZmZXJlbnQgdGVybWluYWxzIHdpdGggZGlmZmVyZW50IHNpemVzLiBOZXZlcnRoZWxlc3MsIHN1Y2gKKyAgICAgICAgc2l0dWF0aW9ucyBzaG91bGQgYmUgcHJldHR5IHJhcmUuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzaXplID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydzdHR5JywgJ3NpemUnXSkuZGVjb2RlKCkuc3BsaXQoKQorICAgICAgICBleGNlcHQgKEZpbGVOb3RGb3VuZEVycm9yLCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcik6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJzdHR5IGludm9jYXRpb24gZmFpbGVkIikKKyAgICAgICAgZXhwZWN0ZWQgPSAoaW50KHNpemVbMV0pLCBpbnQoc2l6ZVswXSkpICMgcmV2ZXJzZWQgb3JkZXIKKworICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgIGRlbCBlbnZbJ0xJTkVTJ10KKyAgICAgICAgICAgIGRlbCBlbnZbJ0NPTFVNTlMnXQorICAgICAgICAgICAgYWN0dWFsID0gc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCiAKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RTaHV0aWwsIFRlc3RNb3ZlLCBUZXN0Q29weUZpbGUpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFNodXRpbCwgVGVzdE1vdmUsIFRlc3RDb3B5RmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtc2l6ZVRlc3RzLCBUZXN0V2hpY2gpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKaW5kZXggOGRmMWJmMC4uNmJlMjU5YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKQEAgLTEsMTcgKzEsMTkgQEAKLWltcG9ydCBlcnJubwotaW1wb3J0IGdjCi1pbXBvcnQgb3MKLWltcG9ydCBwaWNrbGUKLWltcG9ydCBzZWxlY3QKLWltcG9ydCBzaWduYWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZworaW1wb3J0IGdjCitpbXBvcnQgcGlja2xlCitpbXBvcnQgc2VsZWN0CitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHN5cywgb3MsIHRpbWUsIGVycm5vCiBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgc3Bhd25fcHl0aG9uCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKIAogaWYgc3lzLnBsYXRmb3JtIGluICgnb3MyJywgJ3Jpc2NvcycpOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJDYW4ndCB0ZXN0IHNpZ25hbCBvbiAlcyIgJSBzeXMucGxhdGZvcm0pCkBAIC01NywxNSArNTksOSBAQAogCiAgICAgZGVmIGhhbmRsZXJBKHNlbGYsIHNpZ251bSwgZnJhbWUpOgogICAgICAgICBzZWxmLmFfY2FsbGVkID0gVHJ1ZQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiaGFuZGxlckEgaW52b2tlZCBmcm9tIHNpZ25hbCAlcyBhdDpcbiVzIiAlICgKLSAgICAgICAgICAgICAgICBzaWdudW0sIHNlbGYuZm9ybWF0X2ZyYW1lKGZyYW1lLCBsaW1pdD0xKSkpCiAKICAgICBkZWYgaGFuZGxlckIoc2VsZiwgc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgIHNlbGYuYl9jYWxsZWQgPSBUcnVlCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50ICgiaGFuZGxlckIgaW52b2tlZCBmcm9tIHNpZ25hbCAlcyBhdDpcbiVzIiAlICgKLSAgICAgICAgICAgICAgICBzaWdudW0sIHNlbGYuZm9ybWF0X2ZyYW1lKGZyYW1lLCBsaW1pdD0xKSkpCiAgICAgICAgIHJhaXNlIEhhbmRsZXJCQ2FsbGVkKHNpZ251bSwgc2VsZi5mb3JtYXRfZnJhbWUoZnJhbWUpKQogCiAgICAgZGVmIHdhaXQoc2VsZiwgY2hpbGQpOgpAQCAtOTIsOCArODgsNiBAQAogCiAgICAgICAgICMgTGV0IHRoZSBzdWItcHJvY2Vzc2VzIGtub3cgd2hvIHRvIHNlbmQgc2lnbmFscyB0by4KICAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoInRlc3QgcnVubmVyJ3MgcGlkIGlzIiwgcGlkKQogCiAgICAgICAgIGNoaWxkID0gaWdub3JpbmdfZWludHIoc3VicHJvY2Vzcy5Qb3BlbiwgWydraWxsJywgJy1IVVAnLCBzdHIocGlkKV0pCiAgICAgICAgIGlmIGNoaWxkOgpAQCAtMTE3LDggKzExMSw2IEBACiAgICAgICAgIGV4Y2VwdCBIYW5kbGVyQkNhbGxlZDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmJfY2FsbGVkKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmFfY2FsbGVkKQotICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgIHByaW50KCJIYW5kbGVyQkNhbGxlZCBleGNlcHRpb24gY2F1Z2h0IikKIAogICAgICAgICBjaGlsZCA9IGlnbm9yaW5nX2VpbnRyKHN1YnByb2Nlc3MuUG9wZW4sIFsna2lsbCcsICctVVNSMicsIHN0cihwaWQpXSkKICAgICAgICAgaWYgY2hpbGQ6CkBAIC0xMzQsOCArMTI2LDcgQEAKICAgICAgICAgICAgICMgbWF5IHJldHVybiBlYXJseS4KICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgIHByaW50KCJLZXlib2FyZEludGVycnVwdCAodGhlIGFsYXJtKCkgd2VudCBvZmYpIikKKyAgICAgICAgICAgIHBhc3MKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5mYWlsKCJTb21lIG90aGVyIGV4Y2VwdGlvbiB3b2tlIHVzIGZyb20gcGF1c2U6ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKQEAgLTE5MSw3ICsxODIsNyBAQAogCiAKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCi1jbGFzcyBCYXNpY1NpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFBvc2l4VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0cml2aWFsX3NpZ25hbF9oYW5kbGVyKHNlbGYsICphcmdzKToKICAgICAgICAgcGFzcwogCkBAIC0yMzMsMzEgKzIyNCw0NCBAQAogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQogY2xhc3MgV2FrZXVwU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBjaGVja193YWtldXAoc2VsZiwgdGVzdF9ib2R5KToKLSAgICAgICAgIyB1c2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkIGFuZCB0byBub3QgY2hhbmdlIHNpZ25hbAotICAgICAgICAjIGhhbmRsaW5nIG9mIHRoZSBwYXJlbnQgcHJvY2VzcworICAgIGRlZiBjaGVja193YWtldXAoc2VsZiwgdGVzdF9ib2R5LCAqc2lnbmFscywgb3JkZXJlZD1UcnVlKToKKyAgICAgICAgIyB1c2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgogICAgICAgICBpbXBvcnQgZmNudGwKICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgaW1wb3J0IHN0cnVjdAorCisgICAgICAgIHNpZ25hbHMgPSB7IXJ9CiAKICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgICAgICBwYXNzCiAKKyAgICAgICAgZGVmIGNoZWNrX3NpZ251bShzaWduYWxzKToKKyAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKHJlYWQsIGxlbihzaWduYWxzKSsxKQorICAgICAgICAgICAgcmFpc2VkID0gc3RydWN0LnVucGFjaygnJXVCJyAlIGxlbihkYXRhKSwgZGF0YSkKKyAgICAgICAgICAgIGlmIG5vdCB7IXJ9OgorICAgICAgICAgICAgICAgIHJhaXNlZCA9IHNldChyYWlzZWQpCisgICAgICAgICAgICAgICAgc2lnbmFscyA9IHNldChzaWduYWxzKQorICAgICAgICAgICAgaWYgcmFpc2VkICE9IHNpZ25hbHM6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlciAhPSAlciIgJSAocmFpc2VkLCBzaWduYWxzKSkKKwogICAgICAgICB7fQogCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCiAgICAgICAgIHJlYWQsIHdyaXRlID0gb3MucGlwZSgpCi0gICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwod3JpdGUsIGZjbnRsLkZfR0VURkwsIDApCi0gICAgICAgIGZsYWdzID0gZmxhZ3MgfCBvcy5PX05PTkJMT0NLCi0gICAgICAgIGZjbnRsLmZjbnRsKHdyaXRlLCBmY250bC5GX1NFVEZMLCBmbGFncykKKyAgICAgICAgZm9yIGZkIGluIChyZWFkLCB3cml0ZSk6CisgICAgICAgICAgICBmbGFncyA9IGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZMLCAwKQorICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyB8IG9zLk9fTk9OQkxPQ0sKKyAgICAgICAgICAgIGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX1NFVEZMLCBmbGFncykKICAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQod3JpdGUpCiAKICAgICAgICAgdGVzdCgpCisgICAgICAgIGNoZWNrX3NpZ251bShzaWduYWxzKQogCiAgICAgICAgIG9zLmNsb3NlKHJlYWQpCiAgICAgICAgIG9zLmNsb3NlKHdyaXRlKQotICAgICAgICAiIiIuZm9ybWF0KHRlc3RfYm9keSkKKyAgICAgICAgIiIiLmZvcm1hdChzaWduYWxzLCBvcmRlcmVkLCB0ZXN0X2JvZHkpCiAKICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogCkBAIC0yODMsNyArMjg3LDcgQEAKICAgICAgICAgICAgIGR0ID0gYWZ0ZXJfdGltZSAtIG1pZF90aW1lCiAgICAgICAgICAgICBpZiBkdCA+PSBUSU1FT1VUX0hBTEY6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyA+PSAlcyIgJSAoZHQsIFRJTUVPVVRfSEFMRikpCi0gICAgICAgICIiIikKKyAgICAgICAgIiIiLCBzaWduYWwuU0lHQUxSTSkKIAogICAgIGRlZiB0ZXN0X3dha2V1cF9mZF9kdXJpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfd2FrZXVwKCIiImRlZiB0ZXN0KCk6CkBAIC0zMDYsNyArMzEwLDMyIEBACiAgICAgICAgICAgICBkdCA9IGFmdGVyX3RpbWUgLSBiZWZvcmVfdGltZQogICAgICAgICAgICAgaWYgZHQgPj0gVElNRU9VVF9IQUxGOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgPj0gJXMiICUgKGR0LCBUSU1FT1VUX0hBTEYpKQotICAgICAgICAiIiIpCisgICAgICAgICIiIiwgc2lnbmFsLlNJR0FMUk0pCisKKyAgICBkZWYgdGVzdF9zaWdudW0oc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfd2FrZXVwKCIiImRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IxLCBoYW5kbGVyKQorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbmFsLlNJR1VTUjEpCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWduYWwuU0lHQUxSTSkKKyAgICAgICAgIiIiLCBzaWduYWwuU0lHVVNSMSwgc2lnbmFsLlNJR0FMUk0pCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgZGVmIHRlc3RfcGVuZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja193YWtldXAoIiIiZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNpZ251bTEgPSBzaWduYWwuU0lHVVNSMQorICAgICAgICAgICAgc2lnbnVtMiA9IHNpZ25hbC5TSUdVU1IyCisKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtMSwgaGFuZGxlcikKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtMiwgaGFuZGxlcikKKworICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCAoc2lnbnVtMSwgc2lnbnVtMikpCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0xKQorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtMikKKyAgICAgICAgICAgICMgVW5ibG9ja2luZyB0aGUgMiBzaWduYWxzIGNhbGxzIHRoZSBDIHNpZ25hbCBoYW5kbGVyIHR3aWNlCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgKHNpZ251bTEsIHNpZ251bTIpKQorICAgICAgICAiIiIsICBzaWduYWwuU0lHVVNSMSwgc2lnbmFsLlNJR1VTUjIsIG9yZGVyZWQ9RmFsc2UpCisKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKIGNsYXNzIFNpZ2ludGVycnVwdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMzE2LDkgKzM0NSw2IEBACiAgICAgICAgIHJlYWQgaXMgaW50ZXJydXB0ZWQgYnkgdGhlIHNpZ25hbCBhbmQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gIFJldHVybiBGYWxzZQogICAgICAgICBpZiBpdCByZXR1cm5zIG5vcm1hbGx5LgogICAgICAgICAiIiIKLSAgICAgICAgY2xhc3MgVGltZW91dChFeGNlcHRpb24pOgotICAgICAgICAgICAgcGFzcwotCiAgICAgICAgICMgdXNlIGEgc3VicHJvY2VzcyB0byBoYXZlIG9ubHkgb25lIHRocmVhZCwgdG8gaGF2ZSBhIHRpbWVvdXQgb24gdGhlCiAgICAgICAgICMgYmxvY2tpbmcgcmVhZCBhbmQgdG8gbm90IHRvdWNoIHNpZ25hbCBoYW5kbGluZyBpbiB0aGlzIHByb2Nlc3MKICAgICAgICAgY29kZSA9ICIiImlmIDE6CkBAIC0zNTksMTggKzM4NSw4IEBACiAgICAgICAgICAgICAgICAgIyB3YWl0IHVudGlsIHRoZSBjaGlsZCBwcm9jZXNzIGlzIGxvYWRlZCBhbmQgaGFzIHN0YXJ0ZWQKICAgICAgICAgICAgICAgICBmaXJzdF9saW5lID0gcHJvY2Vzcy5zdGRvdXQucmVhZGxpbmUoKQogCi0gICAgICAgICAgICAgICAgIyBXYWl0IHRoZSBwcm9jZXNzIHdpdGggYSB0aW1lb3V0IG9mIDUgc2Vjb25kcwotICAgICAgICAgICAgICAgIHRpbWVvdXQgPSB0aW1lLnRpbWUoKSArIDUuMAotICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgPCB0aW1lLnRpbWUoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXQoKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBwcm9jZXNzLnBvbGwoKQotICAgICAgICAgICAgICAgICAgICBpZiBzdGF0dXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKLQotICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgICAgICBleGNlcHQgVGltZW91dDoKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUodGltZW91dD01LjApCisgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDoKICAgICAgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgZWxzZToKQEAgLTQxOSw4ICs0MzUsNiBAQAogCiAgICAgZGVmIHNpZ19hbHJtKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5obmRsX2NhbGxlZCA9IFRydWUKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIlNJR0FMUk0gaGFuZGxlciBpbnZva2VkIiwgYXJncykKIAogICAgIGRlZiBzaWdfdnRhbHJtKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5obmRsX2NhbGxlZCA9IFRydWUKQEAgLTQzMiwyMSArNDQ2LDEzIEBACiAgICAgICAgIGVsaWYgc2VsZi5obmRsX2NvdW50ID09IDM6CiAgICAgICAgICAgICAjIGRpc2FibGUgSVRJTUVSX1ZJUlRVQUwsIHRoaXMgZnVuY3Rpb24gc2hvdWxkbid0IGJlIGNhbGxlZCBhbnltb3JlCiAgICAgICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfVklSVFVBTCwgMCkKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgibGFzdCBTSUdWVEFMUk0gaGFuZGxlciBjYWxsIikKIAogICAgICAgICBzZWxmLmhuZGxfY291bnQgKz0gMQogCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJTSUdWVEFMUk0gaGFuZGxlciBpbnZva2VkIiwgYXJncykKLQogICAgIGRlZiBzaWdfcHJvZihzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuaG5kbF9jYWxsZWQgPSBUcnVlCiAgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2lnbmFsLklUSU1FUl9QUk9GLCAwKQogCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJTSUdQUk9GIGhhbmRsZXIgaW52b2tlZCIsIGFyZ3MpCi0KICAgICBkZWYgdGVzdF9pdGltZXJfZXhjKHNlbGYpOgogICAgICAgICAjIFhYWCBJJ20gYXNzdW1pbmcgLTEgaXMgYW4gaW52YWxpZCBpdGltZXIsIGJ1dCBtYXliZSBzb21lIHBsYXRmb3JtCiAgICAgICAgICMgZGVmaW5lcyBpdCA/CkBAIC00NTksMTAgKzQ2NSw3IEBACiAgICAgZGVmIHRlc3RfaXRpbWVyX3JlYWwoc2VsZik6CiAgICAgICAgIHNlbGYuaXRpbWVyID0gc2lnbmFsLklUSU1FUl9SRUFMCiAgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2VsZi5pdGltZXIsIDEuMCkKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIlxuY2FsbCBwYXVzZSgpLi4uIikKICAgICAgICAgc2lnbmFsLnBhdXNlKCkKLQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaG5kbF9jYWxsZWQsIFRydWUpCiAKICAgICAjIElzc3VlIDM4NjQsIHVua25vd24gaWYgdGhpcyBhZmZlY3RzIGVhcmxpZXIgdmVyc2lvbnMgb2YgZnJlZWJzZCBhbHNvCkBAIC01MTEsMTEgKzUxNCwzNTkgQEAKICAgICAgICAgIyBhbmQgdGhlIGhhbmRsZXIgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhuZGxfY2FsbGVkLCBUcnVlKQogCisKK2NsYXNzIFBlbmRpbmdTaWduYWxzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgcHRocmVhZF9zaWdtYXNrKCksIHB0aHJlYWRfa2lsbCgpLCBzaWdwZW5kaW5nKCkgYW5kIHNpZ3dhaXQoKQorICAgIGZ1bmN0aW9ucy4KKyAgICAiIiIKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3BlbmRpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lncGVuZGluZygpJykKKyAgICBkZWYgdGVzdF9zaWdwZW5kaW5nX2VtcHR5KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5zaWdwZW5kaW5nKCksIHNldCgpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lncGVuZGluZycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWdwZW5kaW5nKCknKQorICAgIGRlZiB0ZXN0X3NpZ3BlbmRpbmcoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICAgICAgaW1wb3J0IG9zCisgICAgICAgICAgICBpbXBvcnQgc2lnbmFsCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCisKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ251bV0pCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCisgICAgICAgICAgICBwZW5kaW5nID0gc2lnbmFsLnNpZ3BlbmRpbmcoKQorICAgICAgICAgICAgaWYgcGVuZGluZyAhPSB7c2lnbnVtfToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzICE9IHslc30nICUgKHBlbmRpbmcsIHNpZ251bSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJaZXJvRGl2aXNpb25FcnJvciBub3QgcmFpc2VkIikKKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9raWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfa2lsbCgpJykKKyAgICBkZWYgdGVzdF9wdGhyZWFkX2tpbGwoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICAgICAgaW1wb3J0IHN5cworCisgICAgICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorCisgICAgICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCisKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZnJlZWJzZDYnOgorICAgICAgICAgICAgICAgICMgSXNzdWUgIzEyMzkyIGFuZCAjMTI0Njk6IHNlbmQgYSBzaWduYWwgdG8gdGhlIG1haW4gdGhyZWFkCisgICAgICAgICAgICAgICAgIyBkb2Vzbid0IHdvcmsgYmVmb3JlIHRoZSBjcmVhdGlvbiBvZiB0aGUgZmlyc3QgdGhyZWFkIG9uCisgICAgICAgICAgICAgICAgIyBGcmVlQlNEIDYKKyAgICAgICAgICAgICAgICBkZWYgbm9vcCgpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bm9vcCkKKyAgICAgICAgICAgICAgICB0aHJlYWQuc3RhcnQoKQorICAgICAgICAgICAgICAgIHRocmVhZC5qb2luKCkKKworICAgICAgICAgICAgdGlkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfa2lsbCh0aWQsIHNpZ251bSkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWmVyb0RpdmlzaW9uRXJyb3Igbm90IHJhaXNlZCIpCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgZGVmIHdhaXRfaGVscGVyKHNlbGYsIGJsb2NrZWQsIHRlc3QpOgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdDogYm9keSBvZiB0aGUgImRlZiB0ZXN0KHNpZ251bSk6IiBmdW5jdGlvbi4KKyAgICAgICAgYmxvY2tlZDogbnVtYmVyIG9mIHRoZSBibG9ja2VkIHNpZ25hbAorICAgICAgICAiIiIKKyAgICAgICAgY29kZSA9ICcnJ2lmIDE6CisgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgaW1wb3J0IHN5cworCisgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgMS8wCisKKyAgICAgICAgJXMKKworICAgICAgICBibG9ja2VkID0gJXMKKyAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR0FMUk0KKworICAgICAgICAjIGNoaWxkOiBibG9jayBhbmQgd2FpdCB0aGUgc2lnbmFsCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtLCBoYW5kbGVyKQorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbYmxvY2tlZF0pCisKKyAgICAgICAgICAgICMgRG8gdGhlIHRlc3RzCisgICAgICAgICAgICB0ZXN0KHNpZ251bSkKKworICAgICAgICAgICAgIyBUaGUgaGFuZGxlciBtdXN0IG5vdCBiZSBjYWxsZWQgb24gdW5ibG9jaworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCBbYmxvY2tlZF0pCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgcHJpbnQoInRoZSBzaWduYWwgaGFuZGxlciBoYXMgYmVlbiBjYWxsZWQiLAorICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICBwcmludCgiZXJyb3I6IHt9Ii5mb3JtYXQoZXJyKSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAnJycgJSAodGVzdC5zdHJpcCgpLCBibG9ja2VkKQorCisgICAgICAgICMgc2lnKndhaXQqIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIHNpZ25hbCBibG9ja2VkOiBzaW5jZSB0aGUgY3VycmVudAorICAgICAgICAjIHByb2Nlc3MgbWlnaHQgaGF2ZSBzZXZlcmFsIHRocmVhZHMgcnVubmluZywgdXNlIGEgc3VicHJvY2VzcyB0byBoYXZlCisgICAgICAgICMgYSBzaW5nbGUgdGhyZWFkLgorICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdCgpJykKKyAgICBkZWYgdGVzdF9zaWd3YWl0KHNlbGYpOgorICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdBTFJNLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICAgICAgcmVjZWl2ZWQgPSBzaWduYWwuc2lnd2FpdChbc2lnbnVtXSkKKyAgICAgICAgICAgIGlmIHJlY2VpdmVkICE9IHNpZ251bToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3JlY2VpdmVkICVzLCBub3QgJXMnICUgKHJlY2VpdmVkLCBzaWdudW0pKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXRpbmZvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXRpbmZvKCknKQorICAgIGRlZiB0ZXN0X3NpZ3dhaXRpbmZvKHNlbGYpOgorICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdBTFJNLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICAgICAgaW5mbyA9IHNpZ25hbC5zaWd3YWl0aW5mbyhbc2lnbnVtXSkKKyAgICAgICAgICAgIGlmIGluZm8uc2lfc2lnbm8gIT0gc2lnbnVtOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiaW5mby5zaV9zaWdubyAhPSAlcyIgJSBzaWdudW0pCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lndGltZWR3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3RpbWVkd2FpdCgpJykKKyAgICBkZWYgdGVzdF9zaWd0aW1lZHdhaXQoc2VsZik6CisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR0FMUk0sICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgICAgICBpbmZvID0gc2lnbmFsLnNpZ3RpbWVkd2FpdChbc2lnbnVtXSwgMTAuMTAwMCkKKyAgICAgICAgICAgIGlmIGluZm8uc2lfc2lnbm8gIT0gc2lnbnVtOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignaW5mby5zaV9zaWdubyAhPSAlcycgJSBzaWdudW0pCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lndGltZWR3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3RpbWVkd2FpdCgpJykKKyAgICBkZWYgdGVzdF9zaWd0aW1lZHdhaXRfcG9sbChzZWxmKToKKyAgICAgICAgIyBjaGVjayB0aGF0IHBvbGxpbmcgd2l0aCBzaWd0aW1lZHdhaXQgd29ya3MKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHQUxSTSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKyAgICAgICAgICAgIGluZm8gPSBzaWduYWwuc2lndGltZWR3YWl0KFtzaWdudW1dLCAwKQorICAgICAgICAgICAgaWYgaW5mby5zaV9zaWdubyAhPSBzaWdudW06CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdpbmZvLnNpX3NpZ25vICE9ICVzJyAlIHNpZ251bSkKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd0aW1lZHdhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lndGltZWR3YWl0KCknKQorICAgIGRlZiB0ZXN0X3NpZ3RpbWVkd2FpdF90aW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdBTFJNLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIHJlY2VpdmVkID0gc2lnbmFsLnNpZ3RpbWVkd2FpdChbc2lnbnVtXSwgMS4wKQorICAgICAgICAgICAgaWYgcmVjZWl2ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJyZWNlaXZlZD0lciIgJSAocmVjZWl2ZWQsKSkKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd0aW1lZHdhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lndGltZWR3YWl0KCknKQorICAgIGRlZiB0ZXN0X3NpZ3RpbWVkd2FpdF9uZWdhdGl2ZV90aW1lb3V0KHNlbGYpOgorICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHQUxSTQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzaWduYWwuc2lndGltZWR3YWl0LCBbc2lnbnVtXSwgLTEuMCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lnd2FpdGluZm8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdGluZm8oKScpCisgICAgZGVmIHRlc3Rfc2lnd2FpdGluZm9faW50ZXJydXB0ZWQoc2VsZik6CisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR1VTUjEsICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgaW1wb3J0IGVycm5vCisKKyAgICAgICAgICAgIGhuZGxfY2FsbGVkID0gVHJ1ZQorICAgICAgICAgICAgZGVmIGFsYXJtX2hhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgaG5kbF9jYWxsZWQgPSBGYWxzZQorCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBhbGFybV9oYW5kbGVyKQorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2lnbmFsLnNpZ3dhaXRpbmZvKFtzaWduYWwuU0lHVVNSMV0pCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUlOVFI6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBobmRsX2NhbGxlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiU0lHQUxSTSBoYW5kbGVyIG5vdCBjYWxsZWQiKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRXhwZWN0ZWQgRUlOVFIgdG8gYmUgcmFpc2VkIGJ5IHNpZ3dhaXRpbmZvIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFeHBlY3RlZCBFSU5UUiB0byBiZSByYWlzZWQgYnkgc2lnd2FpdGluZm8iKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdCgpJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgQHVuaXR0ZXN0LnNraXBJZih0aHJlYWRpbmcgaXMgTm9uZSwgInRlc3QgbmVlZHMgdGhyZWFkaW5nIG1vZHVsZSIpCisgICAgZGVmIHRlc3Rfc2lnd2FpdF90aHJlYWQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBjYWxsaW5nIHNpZ3dhaXQoKSBmcm9tIGEgdGhyZWFkIGRvZXNuJ3Qgc3VzcGVuZCB0aGUgd2hvbGUKKyAgICAgICAgIyBwcm9jZXNzLiBBIG5ldyBpbnRlcnByZXRlciBpcyBzcGF3bmVkIHRvIGF2b2lkIHByb2JsZW1zIHdoZW4gbWl4aW5nCisgICAgICAgICMgdGhyZWFkcyBhbmQgZm9yaygpOiBvbmx5IGFzeW5jLXNhZmUgZnVuY3Rpb25zIGFyZSBhbGxvd2VkIGJldHdlZW4KKyAgICAgICAgIyBmb3JrKCkgYW5kIGV4ZWMoKS4KKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygiLWMiLCAiIiJpZiBUcnVlOgorICAgICAgICAgICAgaW1wb3J0IG9zLCB0aHJlYWRpbmcsIHN5cywgdGltZSwgc2lnbmFsCisKKyAgICAgICAgICAgICMgdGhlIGRlZmF1bHQgaGFuZGxlciB0ZXJtaW5hdGVzIHRoZSBwcm9jZXNzCisgICAgICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorCisgICAgICAgICAgICBkZWYga2lsbF9sYXRlcigpOgorICAgICAgICAgICAgICAgICMgd2FpdCB1bnRpbCB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBpbiBzaWd3YWl0KCkKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQorCisgICAgICAgICAgICAjIHRoZSBzaWduYWwgbXVzdCBiZSBibG9ja2VkIGJ5IGFsbCB0aGUgdGhyZWFkcworICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgICAgIGtpbGxlciA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWtpbGxfbGF0ZXIpCisgICAgICAgICAgICBraWxsZXIuc3RhcnQoKQorICAgICAgICAgICAgcmVjZWl2ZWQgPSBzaWduYWwuc2lnd2FpdChbc2lnbnVtXSkKKyAgICAgICAgICAgIGlmIHJlY2VpdmVkICE9IHNpZ251bToKKyAgICAgICAgICAgICAgICBwcmludCgic2lnd2FpdCgpIHJlY2VpdmVkICVzLCBub3QgJXMiICUgKHJlY2VpdmVkLCBzaWdudW0pLAorICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAgICAga2lsbGVyLmpvaW4oKQorICAgICAgICAgICAgIyB1bmJsb2NrIHRoZSBzaWduYWwsIHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gY2xlYXJlZCBieSBzaWd3YWl0KCkKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgIiIiKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIGRlZiB0ZXN0X3B0aHJlYWRfc2lnbWFza19hcmd1bWVudHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzaWduYWwucHRocmVhZF9zaWdtYXNrLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2ssIDEsIDIsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2ssIDE3MDAsIFtdKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIGRlZiB0ZXN0X3B0aHJlYWRfc2lnbWFzayhzZWxmKToKKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgaW1wb3J0IG9zOyBpbXBvcnQgdGhyZWFkaW5nCisKKyAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAxLzAKKworICAgICAgICBkZWYga2lsbChzaWdudW0pOgorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQorCisgICAgICAgIGRlZiByZWFkX3NpZ21hc2soKToKKyAgICAgICAgICAgIHJldHVybiBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtdKQorCisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisKKyAgICAgICAgIyBJbnN0YWxsIG91ciBzaWduYWwgaGFuZGxlcgorICAgICAgICBvbGRfaGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbnVtLCBoYW5kbGVyKQorCisgICAgICAgICMgVW5ibG9jayBTSUdVU1IxIChhbmQgY29weSB0aGUgb2xkIG1hc2spIHRvIHRlc3Qgb3VyIHNpZ25hbCBoYW5kbGVyCisgICAgICAgIG9sZF9tYXNrID0gc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBraWxsKHNpZ251bSkKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJaZXJvRGl2aXNpb25FcnJvciBub3QgcmFpc2VkIikKKworICAgICAgICAjIEJsb2NrIGFuZCB0aGVuIHJhaXNlIFNJR1VTUjEuIFRoZSBzaWduYWwgaXMgYmxvY2tlZDogdGhlIHNpZ25hbAorICAgICAgICAjIGhhbmRsZXIgaXMgbm90IGNhbGxlZCwgYW5kIHRoZSBzaWduYWwgaXMgbm93IHBlbmRpbmcKKyAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAga2lsbChzaWdudW0pCisKKyAgICAgICAgIyBDaGVjayB0aGUgbmV3IG1hc2sKKyAgICAgICAgYmxvY2tlZCA9IHJlYWRfc2lnbWFzaygpCisgICAgICAgIGlmIHNpZ251bSBub3QgaW4gYmxvY2tlZDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgbm90IGluICVzIiAlIChzaWdudW0sIGJsb2NrZWQpKQorICAgICAgICBpZiBvbGRfbWFzayBeIGJsb2NrZWQgIT0ge3NpZ251bX06CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIF4gJXMgIT0geyVzfSIgJSAob2xkX21hc2ssIGJsb2NrZWQsIHNpZ251bSkpCisKKyAgICAgICAgIyBVbmJsb2NrIFNJR1VTUjEKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB1bmJsb2NrIHRoZSBwZW5kaW5nIHNpZ25hbCBjYWxscyBpbW1lZGlhdGx5IHRoZSBzaWduYWwgaGFuZGxlcgorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBraWxsKHNpZ251bSkKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJaZXJvRGl2aXNpb25FcnJvciBub3QgcmFpc2VkIikKKworICAgICAgICAjIENoZWNrIHRoZSBuZXcgbWFzaworICAgICAgICB1bmJsb2NrZWQgPSByZWFkX3NpZ21hc2soKQorICAgICAgICBpZiBzaWdudW0gaW4gdW5ibG9ja2VkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyBpbiAlcyIgJSAoc2lnbnVtLCB1bmJsb2NrZWQpKQorICAgICAgICBpZiBibG9ja2VkIF4gdW5ibG9ja2VkICE9IHtzaWdudW19OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyBeICVzICE9IHslc30iICUgKGJsb2NrZWQsIHVuYmxvY2tlZCwgc2lnbnVtKSkKKyAgICAgICAgaWYgb2xkX21hc2sgIT0gdW5ibG9ja2VkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyAhPSAlcyIgJSAob2xkX21hc2ssIHVuYmxvY2tlZCkpCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZnJlZWJzZDYnLAorICAgICAgICAiaXNzdWUgIzEyMzkyOiBzZW5kIGEgc2lnbmFsIHRvIHRoZSBtYWluIHRocmVhZCBkb2Vzbid0IHdvcmsgIgorICAgICAgICAiYmVmb3JlIHRoZSBjcmVhdGlvbiBvZiB0aGUgZmlyc3QgdGhyZWFkIG9uIEZyZWVCU0QgNiIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX2tpbGwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9raWxsKCknKQorICAgIGRlZiB0ZXN0X3B0aHJlYWRfa2lsbF9tYWluX3RocmVhZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYSBzaWduYWwgY2FuIGJlIHNlbnQgdG8gdGhlIG1haW4gdGhyZWFkIHdpdGggcHRocmVhZF9raWxsKCkKKyAgICAgICAgIyBiZWZvcmUgYW55IG90aGVyIHRocmVhZCBoYXMgYmVlbiBjcmVhdGVkIChzZWUgaXNzdWUgIzEyMzkyKS4KKyAgICAgICAgY29kZSA9ICIiImlmIFRydWU6CisgICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIHN5cy5leGl0KDMpCisKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIGhhbmRsZXIpCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9raWxsKHRocmVhZGluZy5nZXRfaWRlbnQoKSwgc2lnbmFsLlNJR1VTUjEpCisgICAgICAgICAgICBzeXMuZXhpdCgyKQorICAgICAgICAiIiIKKworICAgICAgICB3aXRoIHNwYXduX3B5dGhvbignLWMnLCBjb2RlKSBhcyBwcm9jZXNzOgorICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIGV4aXRjb2RlID0gcHJvY2Vzcy53YWl0KCkKKyAgICAgICAgICAgIGlmIGV4aXRjb2RlICE9IDM6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDaGlsZCBlcnJvciAoZXhpdCBjb2RlICVzKTogJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4aXRjb2RlLCBzdGRvdXQpKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0cnk6Ci0gICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEJhc2ljU2lnbmFsVGVzdHMsIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzLAorICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChQb3NpeFRlc3RzLCBJbnRlclByb2Nlc3NTaWduYWxUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FrZXVwU2lnbmFsVGVzdHMsIFNpZ2ludGVycnVwdFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0aW1lclRlc3QsIFdpbmRvd3NTaWduYWxUZXN0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRpbWVyVGVzdCwgV2luZG93c1NpZ25hbFRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZW5kaW5nU2lnbmFsc1Rlc3RzKQogICAgIGZpbmFsbHk6CiAgICAgICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQppbmRleCBiYTQyNjQ5Li4yOTI4NmM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NpdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CkBAIC0zOSw2ICszOSw3IEBACiAgICAgICAgIHNlbGYub2xkX2Jhc2UgPSBzaXRlLlVTRVJfQkFTRQogICAgICAgICBzZWxmLm9sZF9zaXRlID0gc2l0ZS5VU0VSX1NJVEUKICAgICAgICAgc2VsZi5vbGRfcHJlZml4ZXMgPSBzaXRlLlBSRUZJWEVTCisgICAgICAgIHNlbGYub3JpZ2luYWxfdmFycyA9IHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMKICAgICAgICAgc2VsZi5vbGRfdmFycyA9IGNvcHkoc3lzY29uZmlnLl9DT05GSUdfVkFSUykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTQ3LDcgKzQ4LDkgQEAKICAgICAgICAgc2l0ZS5VU0VSX0JBU0UgPSBzZWxmLm9sZF9iYXNlCiAgICAgICAgIHNpdGUuVVNFUl9TSVRFID0gc2VsZi5vbGRfc2l0ZQogICAgICAgICBzaXRlLlBSRUZJWEVTID0gc2VsZi5vbGRfcHJlZml4ZXMKLSAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUyA9IHNlbGYub2xkX3ZhcnMKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUyA9IHNlbGYub3JpZ2luYWxfdmFycworICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLmNsZWFyKCkKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy51cGRhdGUoc2VsZi5vbGRfdmFycykKIAogICAgIGRlZiB0ZXN0X21ha2VwYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgbWFrZXBhdGgoKSBoYXZlIGFuIGFic29sdXRlIHBhdGggZm9yIGl0cyBmaXJzdCByZXR1cm4gdmFsdWUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkgYi9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CmluZGV4IDY4Y2NjMjkuLjkzZjE0YzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCitpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbW9ja19zb2NrZXQKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBpbwpAQCAtMjYsNyArMjYsNyBAQAogICAgICAgICByYWlzZSBEdW1teURpc3BhdGNoZXJCcm9rZW4oKQogCiAKLWNsYXNzIFNNVFBEU2VydmVyVGVzdChUZXN0Q2FzZSk6CitjbGFzcyBTTVRQRFNlcnZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKIApAQCAtMzksNiArMzksNyBAQAogICAgICAgICAgICAgY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQogICAgICAgICAgICAgY2hhbm5lbC5oYW5kbGVfcmVhZCgpCiAKKyAgICAgICAgd3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHdyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgd3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgd3JpdGVfbGluZShiJ0RBVEEnKQpAQCAtNDksNyArNTAsNyBAQAogICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKIAogCi1jbGFzcyBTTVRQRENoYW5uZWxUZXN0KFRlc3RDYXNlKToKK2NsYXNzIFNNVFBEQ2hhbm5lbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKICAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQpAQCAtNzgsMzEgKzc5LDk0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAwIEVycm9yOiBiYWQgc3ludGF4XHJcbicpCiAKLSAgICBkZWYgdGVzdF9FSExPX25vdF9pbXBsZW1lbnRlZChzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyB0ZXN0LmV4YW1wbGUnKQorICAgIGRlZiB0ZXN0X0VITE8oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBIRUxQXHJcbicpCisKKyAgICBkZWYgdGVzdF9FSExPX2JhZF9zeW50YXgoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMiBFcnJvcjogY29tbWFuZCAiRUhMTyIgbm90IGltcGxlbWVudGVkXHJcbicpCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDEgU3ludGF4OiBFSExPIGhvc3RuYW1lXHJcbicpCisKKyAgICBkZWYgdGVzdF9FSExPX2R1cGxpY2F0ZShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDMgRHVwbGljYXRlIEhFTE8vRUhMT1xyXG4nKQorCisgICAgZGVmIHRlc3RfRUhMT19IRUxPX2R1cGxpY2F0ZShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDMgRHVwbGljYXRlIEhFTE8vRUhMT1xyXG4nKQogCiAgICAgZGVmIHRlc3RfSEVMTyhzZWxmKToKICAgICAgICAgbmFtZSA9IHNtdHBkLnNvY2tldC5nZXRmcWRuKCkKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyB0ZXN0LmV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAnMjUwIHt9XHJcbicuZm9ybWF0KG5hbWUpLmVuY29kZSgnYXNjaWknKSkKIAorICAgIGRlZiB0ZXN0X0hFTE9fRUhMT19kdXBsaWNhdGUoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIER1cGxpY2F0ZSBIRUxPL0VITE9cclxuJykKKworICAgIGRlZiB0ZXN0X0hFTFAoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTFAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzI1MCBTdXBwb3J0ZWQgY29tbWFuZHM6IEVITE8gSEVMTyBNQUlMIFJDUFQgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ0RBVEEgUlNFVCBOT09QIFFVSVQgVlJGWVxyXG4nKQorCisgICAgZGVmIHRlc3RfSEVMUF9jb21tYW5kKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxQIE1BSUwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzI1MCBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+XHJcbicpCisKKyAgICBkZWYgdGVzdF9IRUxQX2NvbW1hbmRfdW5rbm93bihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMUCBTUEFNJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDEgU3VwcG9ydGVkIGNvbW1hbmRzOiBFSExPIEhFTE8gTUFJTCBSQ1BUICcgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgYidEQVRBIFJTRVQgTk9PUCBRVUlUIFZSRllcclxuJykKKwogICAgIGRlZiB0ZXN0X0hFTE9fYmFkX3N5bnRheChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAxIFN5bnRheDogSEVMTyBob3N0bmFtZVxyXG4nKQogCiAgICAgZGVmIHRlc3RfSEVMT19kdXBsaWNhdGUoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gdGVzdC5leGFtcGxlJykKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyB0ZXN0LmV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPXHJcbicpCiAKKyAgICBkZWYgdGVzdF9IRUxPX3BhcmFtZXRlcl9yZWplY3RlZF93aGVuX2V4dGVuc2lvbnNfbm90X2VuYWJsZWQoc2VsZik6CisgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IEZhbHNlCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8Zm9vQGV4YW1wbGUuY29tPiBTSVpFPTEyMzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+XHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX2FsbG93c19zcGFjZV9hZnRlcl9jb2xvbihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiAgIDxmb29AZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X2V4dGVuZGVkX01BSUxfYWxsb3dzX3NwYWNlX2FmdGVyX2NvbG9uKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ICAgPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMjUwIE9LXHJcbicpCisKICAgICBkZWYgdGVzdF9OT09QKHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidOT09QJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9rXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfSEVMT19OT09QKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidOT09QJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAKICAgICBkZWYgdGVzdF9OT09QX2JhZF9zeW50YXgoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ05PT1AgaGknKQpAQCAtMTEzLDI2ICsxNzcsNDcgQEAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUVVJVCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzIyMSBCeWVcclxuJykKIAorICAgIGRlZiB0ZXN0X0hFTE9fUVVJVChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUVVJVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzIyMSBCeWVcclxuJykKKwogICAgIGRlZiB0ZXN0X1FVSVRfYXJnX2lnbm9yZWQoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1FVSVQgYnllIGJ5ZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzIyMSBCeWVcclxuJykKIAogICAgIGRlZiB0ZXN0X2JhZF9zdGF0ZShzZWxmKToKICAgICAgICAgc2VsZi5jaGFubmVsLnNtdHBfc3RhdGUgPSAnQkFEIFNUQVRFJwotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic0NTEgSW50ZXJuYWwgY29uZnVzaW9uXHJcbicpCiAKICAgICBkZWYgdGVzdF9jb21tYW5kX3Rvb19sb25nKHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb20gJyArCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogJyArCiAgICAgICAgICAgICAgICAgICAgICAgICBiJ2EnICogc2VsZi5jaGFubmVsLmNvbW1hbmRfc2l6ZV9saW1pdCArCiAgICAgICAgICAgICAgICAgICAgICAgICBiJ0BleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDAgRXJyb3I6IGxpbmUgdG9vIGxvbmdcclxuJykKIAotICAgIGRlZiB0ZXN0X2RhdGFfdG9vX2xvbmcoc2VsZik6Ci0gICAgICAgICMgU21hbGwgaGFjay4gU2V0dGluZyBsaW1pdCB0byAySyBvY3RldHMgaGVyZSB3aWxsIHNhdmUgdXMgc29tZSB0aW1lLgotICAgICAgICBzZWxmLmNoYW5uZWwuZGF0YV9zaXplX2xpbWl0ID0gMjA0OAorICAgIGRlZiB0ZXN0X01BSUxfY29tbWFuZF9saW1pdF9leHRlbmRlZF93aXRoX1NJWkUoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIGZpbGxfbGVuID0gc2VsZi5jaGFubmVsLmNvbW1hbmRfc2l6ZV9saW1pdCAtIGxlbignTUFJTCBmcm9tOjxAZXhhbXBsZT4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PCcgKworICAgICAgICAgICAgICAgICAgICAgICAgYidhJyAqIGZpbGxfbGVuICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInQGV4YW1wbGU+IFNJWkU9MTIzNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8JyArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ2EnICogKGZpbGxfbGVuICsgMjYpICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInQGV4YW1wbGU+IFNJWkU9MTIzNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAwIEVycm9yOiBsaW5lIHRvbyBsb25nXHJcbicpCisKKyAgICBkZWYgdGVzdF9kYXRhX2xvbmdlcl90aGFuX2RlZmF1bHRfZGF0YV9zaXplX2xpbWl0KHNlbGYpOgorICAgICAgICAjIEhhY2sgdGhlIGRlZmF1bHQgc28gd2UgZG9uJ3QgaGF2ZSB0byBnZW5lcmF0ZSBzbyBtdWNoIGRhdGEuCisgICAgICAgIHNlbGYuY2hhbm5lbC5kYXRhX3NpemVfbGltaXQgPSAxMDQ4CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQpAQCAtMTQxLDY0ICsyMjYsMTgzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNTUyIEVycm9yOiBUb28gbXVjaCBtYWlsIGRhdGFcclxuJykKIAorICAgIGRlZiB0ZXN0X01BSUxfc2l6ZV9wYXJhbWV0ZXIoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRlJPTTo8ZWdnc0BleGFtcGxlPiBTSVpFPTUxMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX2ludmFsaWRfc2l6ZV9wYXJhbWV0ZXIoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRlJPTTo8ZWdnc0BleGFtcGxlPiBTSVpFPWludmFsaWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz4gW1NQIDxtYWlsLXBhcmFtZXRlcnM+XVxyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9SQ1BUX3Vua25vd25fcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGUk9NOjxlZ2dzQGV4YW1wbGU+IGhhbT1ncmVlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1NTUgTUFJTCBGUk9NIHBhcmFtZXRlcnMgbm90IHJlY29nbml6ZWQgb3Igbm90IGltcGxlbWVudGVkXHJcbicpCisKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGUk9NOjxlZ2dzQGV4YW1wbGU+JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUTzo8ZWdnc0BleGFtcGxlPiBoYW09Z3JlZW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTU1IFJDUFQgVE8gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgaW1wbGVtZW50ZWRcclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfc2l6ZV9wYXJhbWV0ZXJfbGFyZ2VyX3RoYW5fZGVmYXVsdF9kYXRhX3NpemVfbGltaXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hhbm5lbC5kYXRhX3NpemVfbGltaXQgPSAxMDQ4CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRlJPTTo8ZWdnc0BleGFtcGxlPiBTSVpFPTIwOTYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTUyIEVycm9yOiBtZXNzYWdlIHNpemUgZXhjZWVkcyBmaXhlZCBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZVxyXG4nKQorCiAgICAgZGVmIHRlc3RfbmVlZF9NQUlMKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIHRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgYic1MDMgRXJyb3I6IG5lZWQgTUFJTCBjb21tYW5kXHJcbicpCiAKLSAgICBkZWYgdGVzdF9NQUlMX3N5bnRheChzZWxmKToKKyAgICBkZWYgdGVzdF9NQUlMX3N5bnRheF9IRUxPKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb20gZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCi0gICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTo8YWRkcmVzcz5cclxuJykKKyAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz5cclxuJykKIAotICAgIGRlZiB0ZXN0X01BSUxfbWlzc2luZ19mcm9tKHNlbGYpOgorICAgIGRlZiB0ZXN0X01BSUxfc3ludGF4X0VITE8oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbSBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz4gW1NQIDxtYWlsLXBhcmFtZXRlcnM+XVxyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9taXNzaW5nX2FkZHJlc3Moc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTonKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKLSAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOjxhZGRyZXNzPlxyXG4nKQorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPlxyXG4nKQogCiAgICAgZGVmIHRlc3RfTUFJTF9jaGV2cm9ucyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjxlZ2dzQGV4YW1wbGU+JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9rXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9lbXB0eV9jaGV2cm9ucyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjw+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX3F1b3RlZF9sb2NhbHBhcnQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogPCJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwubWFpbGZyb20sICciRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfTUFJTF9xdW90ZWRfbG9jYWxwYXJ0X25vX2FuZ2xlcyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiAiRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwubWFpbGZyb20sICciRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfTUFJTF9xdW90ZWRfbG9jYWxwYXJ0X3dpdGhfc2l6ZShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiA8IkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tPiBTSVpFPTEwMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwubWFpbGZyb20sICciRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfTUFJTF9xdW90ZWRfbG9jYWxwYXJ0X3dpdGhfc2l6ZV9ub19hbmdsZXMoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tIFNJWkU9MTAwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5tYWlsZnJvbSwgJyJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCiAKICAgICBkZWYgdGVzdF9uZXN0ZWRfTUFJTChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgIGInNTAzIEVycm9yOiBuZXN0ZWQgTUFJTCBjb21tYW5kXHJcbicpCiAKKyAgICBkZWYgdGVzdF9WUkZZKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidWUkZZIGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYicyNTIgQ2Fubm90IFZSRlkgdXNlciwgYnV0IHdpbGwgYWNjZXB0IG1lc3NhZ2UgYW5kIGF0dGVtcHQgJyArIFwKKyAgICAgICAgICAgIGInZGVsaXZlcnlcclxuJykKKworICAgIGRlZiB0ZXN0X1ZSRllfc3ludGF4KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidWUkZZJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IFZSRlkgPGFkZHJlc3M+XHJcbicpCisKKyAgICBkZWYgdGVzdF9FWFBOX25vdF9pbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRVhQTicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDIgRVhQTiBub3QgaW1wbGVtZW50ZWRcclxuJykKKworICAgIGRlZiB0ZXN0X25vX0hFTE9fTUFJTChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjxmb29AZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdFxyXG4nKQorCiAgICAgZGVmIHRlc3RfbmVlZF9SQ1BUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgYic1MDMgRXJyb3I6IG5lZWQgUkNQVCBjb21tYW5kXHJcbicpCiAKLSAgICBkZWYgdGVzdF9SQ1BUX3N5bnRheChzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgZGVmIHRlc3RfUkNQVF9zeW50YXhfSEVMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOiBlZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIHRvIGVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgYic1MDEgU3ludGF4OiBSQ1BUIFRPOiA8YWRkcmVzcz5cclxuJykKIAorICAgIGRlZiB0ZXN0X1JDUFRfc3ludGF4X0VITE8oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTogZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCB0byBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTAxIFN5bnRheDogUkNQVCBUTzogPGFkZHJlc3M+IFtTUCA8bWFpbC1wYXJhbWV0ZXJzPl1cclxuJykKKworICAgIGRlZiB0ZXN0X1JDUFRfbG93ZXJjYXNlX3RvX09LKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206IGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgdG86IDxlZ2dzQGV4YW1wbGU+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9ub19IRUxPX1JDUFQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgdG8gZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdFxyXG4nKQorCiAgICAgZGVmIHRlc3RfZGF0YV9kaWFsb2coc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9rXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgIGInMzU0IEVuZCBkYXRhIHdpdGggPENSPjxMRj4uPENSPjxMRj5cclxuJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YVxyXG5tb3JlXHJcbi4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIubWVzc2FnZXMsCiAgICAgICAgICAgICBbKCdwZWVyJywgJ2VnZ3NAZXhhbXBsZScsIFsnc3BhbUBleGFtcGxlJ10sICdkYXRhXG5tb3JlJyldKQogCiAgICAgZGVmIHRlc3RfREFUQV9zeW50YXgoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEgc3BhbScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzUwMSBTeW50YXg6IERBVEFcclxuJykKIAorICAgIGRlZiB0ZXN0X25vX0hFTE9fREFUQShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQSBzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdFxyXG4nKQorCiAgICAgZGVmIHRlc3RfZGF0YV90cmFuc3BhcmVuY3lfc2VjdGlvbl80XzVfMihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCkBAIC0yMDYsNiArNDEwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwucmVjZWl2ZWRfZGF0YSwgJy4nKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfUkNQVChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpoYW1AZXhhbXBsZScpCkBAIC0yMTYsNiArNDIxLDcgQEAKIAogICAgIGRlZiB0ZXN0X21hbnVhbF9zdGF0dXMoc2VsZik6CiAgICAgICAgICMgY2hlY2tzIHRoYXQgdGhlIENoYW5uZWwgaXMgYWJsZSB0byByZXR1cm4gYSBjdXN0b20gc3RhdHVzIG1lc3NhZ2UKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCkBAIC0yMjMsMTAgKzQyOSwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tpc2hcclxuJykKIAogICAgIGRlZiB0ZXN0X1JTRVQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JTRVQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTpmb29AZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCkBAIC0yMzQsNTggKzQ0MSwxMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKICAgICAgICAgICAgIFsoJ3BlZXInLCAnZm9vQGV4YW1wbGUnLCBbJ2VnZ3NAZXhhbXBsZSddLCAnZGF0YScpXSkKIAorICAgIGRlZiB0ZXN0X0hFTE9fUlNFVChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUlNFVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCiAgICAgZGVmIHRlc3RfUlNFVF9zeW50YXgoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JTRVQgaGknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYic1MDEgU3ludGF4OiBSU0VUXHJcbicpCiAKKyAgICBkZWYgdGVzdF91bmtub3duX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1VOS05PV05fQ01EJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDAgRXJyb3I6IGNvbW1hbmQgIlVOS05PV05fQ01EIiBub3QgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3JlY29nbml6ZWRcclxuJykKKwogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9kZXByZWNhdGlvbnMoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fc2VydmVyCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19zZXJ2ZXIgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19saW5lCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19saW5lID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fc3RhdGUKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3N0YXRlID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZ3JlZXRpbmcKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2dyZWV0aW5nID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fbWFpbGZyb20KLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX21haWxmcm9tID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fcmNwdHRvcwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fcmNwdHRvcyA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2RhdGEKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2RhdGEgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19mcWRuCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19mcWRuID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fcGVlcgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fcGVlciA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2Nvbm4KLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2Nvbm4gPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19hZGRyCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19hZGRyID0gJ3NwYW0nCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTTVRQRFNlcnZlclRlc3QsIFNNVFBEQ2hhbm5lbFRlc3QpCisKK2NsYXNzIFNNVFBEQ2hhbm5lbFdpdGhEYXRhU2l6ZUxpbWl0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KKyAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKCdhJywgJ2InKQorICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgIyBTZXQgREFUQSBzaXplIGxpbWl0IHRvIDMyIGJ5dGVzIGZvciBlYXN5IHRlc3RpbmcKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIsIDMyKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc210cGQuREVCVUdTVFJFQU0gPSBzZWxmLm9sZF9kZWJ1Z3N0cmVhbQorCisgICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgbGluZSk6CisgICAgICAgIHNlbGYuY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQorICAgICAgICBzZWxmLmNoYW5uZWwuaGFuZGxlX3JlYWQoKQorCisgICAgZGVmIHRlc3RfZGF0YV9saW1pdF9kaWFsb2coc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzM1NCBFbmQgZGF0YSB3aXRoIDxDUj48TEY+LjxDUj48TEY+XHJcbicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGFcclxubW9yZVxyXG4uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIubWVzc2FnZXMsCisgICAgICAgICAgICBbKCdwZWVyJywgJ2VnZ3NAZXhhbXBsZScsIFsnc3BhbUBleGFtcGxlJ10sICdkYXRhXG5tb3JlJyldKQorCisgICAgZGVmIHRlc3RfZGF0YV9saW1pdF9kaWFsb2dfdG9vX211Y2hfZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInMzU0IEVuZCBkYXRhIHdpdGggPENSPjxMRj4uPENSPjxMRj5cclxuJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInVGhpcyBtZXNzYWdlIGlzIGxvbmdlciB0aGFuIDMyIGJ5dGVzXHJcbi4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzU1MiBFcnJvcjogVG9vIG11Y2ggbWFpbCBkYXRhXHJcbicpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CmluZGV4IDJjYjBkMWEuLmJlZmM0OWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHNlbGVjdAoraW1wb3J0IGVycm5vCiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBtb2NrX3NvY2tldApAQCAtNzIsNiArNzMsMTQgQEAKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQpCiAgICAgICAgIHNtdHAuY2xvc2UoKQogCisgICAgZGVmIHRlc3RTb3VyY2VBZGRyZXNzKHNlbGYpOgorICAgICAgICBtb2NrX3NvY2tldC5yZXBseV93aXRoKGIiMjIwIEhvbGEgbXVuZG8iKQorICAgICAgICAjIGNvbm5lY3RzCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPSgnMTI3LjAuMC4xJywxOTg3NikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5zb3VyY2VfYWRkcmVzcywgKCcxMjcuMC4wLjEnLCAxOTg3NikpCisgICAgICAgIHNtdHAuY2xvc2UoKQorCiAgICAgZGVmIHRlc3RCYXNpYzIoc2VsZik6CiAgICAgICAgIG1vY2tfc29ja2V0LnJlcGx5X3dpdGgoYiIyMjAgSG9sYSBtdW5kbyIpCiAgICAgICAgICMgY29ubmVjdHMsIGluY2x1ZGUgcG9ydCBpbiBob3N0IG5hbWUKQEAgLTIwNCwxNSArMjEzLDI5IEBACiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQogICAgICAgICBzbXRwLnF1aXQoKQogCisgICAgZGVmIHRlc3RTb3VyY2VBZGRyZXNzKHNlbGYpOgorICAgICAgICAjIGNvbm5lY3QKKyAgICAgICAgcG9ydCA9IHN1cHBvcnQuZmluZF91bnVzZWRfcG9ydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgdGltZW91dD0zLCBzb3VyY2VfYWRkcmVzcz0oJzEyNy4wLjAuMScsIHBvcnQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnNvdXJjZV9hZGRyZXNzLCAoJzEyNy4wLjAuMScsIHBvcnQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLmxvY2FsX2hvc3RuYW1lLCAnbG9jYWxob3N0JykKKyAgICAgICAgICAgIHNtdHAucXVpdCgpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBRERSSU5VU0U6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY291bGRuJ3QgYmluZCB0byBwb3J0ICVkIiAlIHBvcnQpCisgICAgICAgICAgICByYWlzZQorCiAgICAgZGVmIHRlc3ROT09QKHNlbGYpOgogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKLSAgICAgICAgZXhwZWN0ZWQgPSAoMjUwLCBiJ09rJykKKyAgICAgICAgZXhwZWN0ZWQgPSAoMjUwLCBiJ09LJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLm5vb3AoKSwgZXhwZWN0ZWQpCiAgICAgICAgIHNtdHAucXVpdCgpCiAKICAgICBkZWYgdGVzdFJTRVQoc2VsZik6CiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQotICAgICAgICBleHBlY3RlZCA9ICgyNTAsIGInT2snKQorICAgICAgICBleHBlY3RlZCA9ICgyNTAsIGInT0snKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAucnNldCgpLCBleHBlY3RlZCkKICAgICAgICAgc210cC5xdWl0KCkKIApAQCAtMjIzLDEwICsyNDYsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLmVobG8oKSwgZXhwZWN0ZWQpCiAgICAgICAgIHNtdHAucXVpdCgpCiAKLSAgICBkZWYgdGVzdFZSRlkoc2VsZik6Ci0gICAgICAgICMgVlJGWSBpc24ndCBpbXBsZW1lbnRlZCBpbiBEZWJ1Z2dpbmdTZXJ2ZXIKKyAgICBkZWYgdGVzdE5vdEltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICAjIEVYUE4gaXNuJ3QgaW1wbGVtZW50ZWQgaW4gRGVidWdnaW5nU2VydmVyCiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQotICAgICAgICBleHBlY3RlZCA9ICg1MDIsIGInRXJyb3I6IGNvbW1hbmQgIlZSRlkiIG5vdCBpbXBsZW1lbnRlZCcpCisgICAgICAgIGV4cGVjdGVkID0gKDUwMiwgYidFWFBOIG5vdCBpbXBsZW1lbnRlZCcpCisgICAgICAgIHNtdHAucHV0Y21kKCdFWFBOJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLmdldHJlcGx5KCksIGV4cGVjdGVkKQorICAgICAgICBzbXRwLnF1aXQoKQorCisgICAgZGVmIHRlc3RWUkZZKHNlbGYpOgorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKKyAgICAgICAgZXhwZWN0ZWQgPSAoMjUyLCBiJ0Nhbm5vdCBWUkZZIHVzZXIsIGJ1dCB3aWxsIGFjY2VwdCBtZXNzYWdlICcgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhbmQgYXR0ZW1wdCBkZWxpdmVyeScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC52cmZ5KCdub2JvZHlAbm93aGVyZS5jb20nKSwgZXhwZWN0ZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC52ZXJpZnkoJ25vYm9keUBub3doZXJlLmNvbScpLCBleHBlY3RlZCkKICAgICAgICAgc210cC5xdWl0KCkKQEAgLTI0Miw3ICsyNzMsOCBAQAogCiAgICAgZGVmIHRlc3RIRUxQKHNlbGYpOgogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLmhlbHAoKSwgYidFcnJvcjogY29tbWFuZCAiSEVMUCIgbm90IGltcGxlbWVudGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLmhlbHAoKSwgYidTdXBwb3J0ZWQgY29tbWFuZHM6IEVITE8gSEVMTyBNQUlMICcgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInUkNQVCBEQVRBIFJTRVQgTk9PUCBRVUlUIFZSRlknKQogICAgICAgICBzbXRwLnF1aXQoKQogCiAgICAgZGVmIHRlc3RTZW5kKHNlbGYpOgpAQCAtNTYwLDYgKzU5Miw5IEBACiAjIFNpbXVsYXRlZCBTTVRQIGNoYW5uZWwgJiBzZXJ2ZXIKIGNsYXNzIFNpbVNNVFBDaGFubmVsKHNtdHBkLlNNVFBDaGFubmVsKToKIAorICAgICMgRm9yIHRlc3RpbmcgZmFpbHVyZXMgaW4gUVVJVCB3aGVuIHVzaW5nIHRoZSBjb250ZXh0IG1hbmFnZXIgQVBJLgorICAgIHF1aXRfcmVzcG9uc2UgPSBOb25lCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXh0cmFfZmVhdHVyZXMsICphcmdzLCAqKmt3KToKICAgICAgICAgc2VsZi5fZXh0cmFmZWF0dXJlcyA9ICcnLmpvaW4oCiAgICAgICAgICAgICBbICIyNTAtezB9XHJcbiIuZm9ybWF0KHgpIGZvciB4IGluIGV4dHJhX2ZlYXR1cmVzIF0pCkBAIC02MTAsMTkgKzY0NSwzMSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTAgTm8gYWNjZXNzIGZvciB5b3UhJykKIAorICAgIGRlZiBzbXRwX1FVSVQoc2VsZiwgYXJnKToKKyAgICAgICAgIyBhcmdzIGlzIGlnbm9yZWQKKyAgICAgICAgaWYgc2VsZi5xdWl0X3Jlc3BvbnNlIGlzIE5vbmU6CisgICAgICAgICAgICBzdXBlcihTaW1TTVRQQ2hhbm5lbCwgc2VsZikuc210cF9RVUlUKGFyZykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucHVzaChzZWxmLnF1aXRfcmVzcG9uc2UpCisgICAgICAgICAgICBzZWxmLmNsb3NlX3doZW5fZG9uZSgpCisKICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgogICAgICAgICByYWlzZQogCiAKIGNsYXNzIFNpbVNNVFBTZXJ2ZXIoc210cGQuU01UUFNlcnZlcik6CiAKKyAgICAjIEZvciB0ZXN0aW5nIGZhaWx1cmVzIGluIFFVSVQgd2hlbiB1c2luZyB0aGUgY29udGV4dCBtYW5hZ2VyIEFQSS4KKyAgICBxdWl0X3Jlc3BvbnNlID0gTm9uZQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICAgc2VsZi5fZXh0cmFfZmVhdHVyZXMgPSBbXQogICAgICAgICBzbXRwZC5TTVRQU2VydmVyLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KQogCiAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKLSAgICAgICAgc2VsZi5fU01UUGNoYW5uZWwgPSBTaW1TTVRQQ2hhbm5lbChzZWxmLl9leHRyYV9mZWF0dXJlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBjb25uLCBhZGRyKQorICAgICAgICBzZWxmLl9TTVRQY2hhbm5lbCA9IFNpbVNNVFBDaGFubmVsKAorICAgICAgICAgICAgc2VsZi5fZXh0cmFfZmVhdHVyZXMsIHNlbGYsIGNvbm4sIGFkZHIpCisgICAgICAgIHNlbGYuX1NNVFBjaGFubmVsLnF1aXRfcmVzcG9uc2UgPSBzZWxmLnF1aXRfcmVzcG9uc2UKIAogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgogICAgICAgICBwYXNzCkBAIC03NTIsNiArNzk5LDI1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNpbV9hdXRoX2NyZWRlbnRpYWxzWydjcmFtLW1kNSddLCBzdHIoZXJyKSkKICAgICAgICAgc210cC5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgd2l0aCBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0KSBhcyBzbXRwOgorICAgICAgICAgICAgY29kZSwgbWVzc2FnZSA9IHNtdHAubm9vcCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsIDI1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc210cGxpYi5TTVRQU2VydmVyRGlzY29ubmVjdGVkLCBzbXRwLnNlbmQsIGInZm9vJykKKyAgICAgICAgd2l0aCBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0KSBhcyBzbXRwOgorICAgICAgICAgICAgc210cC5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNtdHBsaWIuU01UUFNlcnZlckRpc2Nvbm5lY3RlZCwgc210cC5zZW5kLCBiJ2ZvbycpCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9RVUlUX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIHNlbGYuc2Vydi5xdWl0X3Jlc3BvbnNlID0gJzQyMSBRVUlUIEZBSUxFRCcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzbXRwbGliLlNNVFBSZXNwb25zZUV4Y2VwdGlvbikgYXMgZXJyb3I6CisgICAgICAgICAgICB3aXRoIHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQpIGFzIHNtdHA6CisgICAgICAgICAgICAgICAgc210cC5ub29wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJvci5leGNlcHRpb24uc210cF9jb2RlLCA0MjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyb3IuZXhjZXB0aW9uLnNtdHBfZXJyb3IsIGInUVVJVCBGQUlMRUQnKQorICAgICAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2xlYW4gdXAgc2VsZi5zZXJ2LnF1aXRfcmVzcG9uc2UgYmVjYXVzZSBhIG5ldworICAgICAgICAjIHNlcnZlciBpcyBhbHdheXMgaW5zdGFudGlhdGVkIGluIHRoZSBzZXRVcCgpLgorCiAgICAgI1RPRE86IGFkZCB0ZXN0cyBmb3IgY29ycmVjdCBBVVRIIG1ldGhvZCBmYWxsYmFjayBub3cgdGhhdCB0aGUKICAgICAjdGVzdCBpbmZyYXN0cnVjdHVyZSBjYW4gc3VwcG9ydCBpdC4KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5CmluZGV4IDAxOThhYjYuLjg2MjI0ZWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkKQEAgLTQsMjggKzQsNjAgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHNtdHBsaWIKIAorc3NsID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJzc2wiKQorCiBzdXBwb3J0LnJlcXVpcmVzKCJuZXR3b3JrIikKIAorCitjbGFzcyBTbXRwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgdGVzdFNlcnZlciA9ICdzbXRwLmdtYWlsLmNvbScKKyAgICByZW1vdGVQb3J0ID0gMjUKKyAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfc3RhcnR0bHMoc2VsZik6CisgICAgICAgIHN1cHBvcnQuZ2V0X2F0dHJpYnV0ZShzbXRwbGliLCAnU01UUF9TU0wnKQorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHNlbGYudGVzdFNlcnZlcik6CisgICAgICAgICAgICBzZXJ2ZXIgPSBzbXRwbGliLlNNVFAoc2VsZi50ZXN0U2VydmVyLCBzZWxmLnJlbW90ZVBvcnQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VydmVyLnN0YXJ0dGxzKGNvbnRleHQ9c2VsZi5jb250ZXh0KQorICAgICAgICAgICAgZXhjZXB0IHNtdHBsaWIuU01UUEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuYXJnc1swXSA9PSAnU1RBUlRUTFMgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQgYnkgc2VydmVyLic6CisgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LnNraXAoZS5hcmdzWzBdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZXJ2ZXIuZWhsbygpCisgICAgICAgICAgICBzZXJ2ZXIucXVpdCgpCisKKwogY2xhc3MgU210cFNTTFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHRlc3RTZXJ2ZXIgPSAnc210cC5nbWFpbC5jb20nCiAgICAgcmVtb3RlUG9ydCA9IDQ2NQorICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQogCiAgICAgZGVmIHRlc3RfY29ubmVjdChzZWxmKToKICAgICAgICAgc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNtdHBsaWIsICdTTVRQX1NTTCcpCiAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoc2VsZi50ZXN0U2VydmVyKToKICAgICAgICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUF9TU0woc2VsZi50ZXN0U2VydmVyLCBzZWxmLnJlbW90ZVBvcnQpCi0gICAgICAgIHNlcnZlci5laGxvKCkKLSAgICAgICAgc2VydmVyLnF1aXQoKQorICAgICAgICAgICAgc2VydmVyLmVobG8oKQorICAgICAgICAgICAgc2VydmVyLnF1aXQoKQogCiAgICAgZGVmIHRlc3RfY29ubmVjdF9kZWZhdWx0X3BvcnQoc2VsZik6CiAgICAgICAgIHN1cHBvcnQuZ2V0X2F0dHJpYnV0ZShzbXRwbGliLCAnU01UUF9TU0wnKQogICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHNlbGYudGVzdFNlcnZlcik6CiAgICAgICAgICAgICBzZXJ2ZXIgPSBzbXRwbGliLlNNVFBfU1NMKHNlbGYudGVzdFNlcnZlcikKLSAgICAgICAgc2VydmVyLmVobG8oKQotICAgICAgICBzZXJ2ZXIucXVpdCgpCisgICAgICAgICAgICBzZXJ2ZXIuZWhsbygpCisgICAgICAgICAgICBzZXJ2ZXIucXVpdCgpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3VzaW5nX3NzbGNvbnRleHQoc2VsZik6CisgICAgICAgIHN1cHBvcnQuZ2V0X2F0dHJpYnV0ZShzbXRwbGliLCAnU01UUF9TU0wnKQorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHNlbGYudGVzdFNlcnZlcik6CisgICAgICAgICAgICBzZXJ2ZXIgPSBzbXRwbGliLlNNVFBfU1NMKHNlbGYudGVzdFNlcnZlciwgc2VsZi5yZW1vdGVQb3J0LCBjb250ZXh0PXNlbGYuY29udGV4dCkKKyAgICAgICAgICAgIHNlcnZlci5laGxvKCkKKyAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKKwogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU210cFNTTFRlc3QpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU210cFRlc3QsIFNtdHBTU0xUZXN0KQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CmluZGV4IGNjZTBkMWIuLjc3MTZkMzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CkBAIC0yLDExICsyLDE0IEBACiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHVuaXR0ZXN0LmNhc2UgaW1wb3J0IF9FeHBlY3RlZEZhaWx1cmUKIAogaW1wb3J0IGVycm5vCiBpbXBvcnQgaW8KIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzZWxlY3QKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IF90ZXN0Y2FwaQogaW1wb3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCBxdWV1ZQpAQCAtMTgsMzQgKzIxLDE5IEBACiBmcm9tIHdlYWtyZWYgaW1wb3J0IHByb3h5CiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgbWF0aAoraW1wb3J0IHBpY2tsZQoraW1wb3J0IHN0cnVjdAogdHJ5OgogICAgIGltcG9ydCBmY250bAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZjbnRsID0gRmFsc2UKLQotZGVmIHRyeV9hZGRyZXNzKGhvc3QsIHBvcnQ9MCwgZmFtaWx5PXNvY2tldC5BRl9JTkVUKToKLSAgICAiIiJUcnkgdG8gYmluZCBhIHNvY2tldCBvbiB0aGUgZ2l2ZW4gaG9zdDpwb3J0IGFuZCByZXR1cm4gVHJ1ZQotICAgIGlmIHRoYXQgaGFzIGJlZW4gcG9zc2libGUuIiIiCi0gICAgdHJ5OgotICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChmYW1pbHksIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgc29jay5iaW5kKChob3N0LCBwb3J0KSkKLSAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgc29ja2V0LmdhaWVycm9yKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZWxzZToKLSAgICAgICAgc29jay5jbG9zZSgpCi0gICAgICAgIHJldHVybiBUcnVlCi0KLWRlZiBsaW51eF92ZXJzaW9uKCk6Ci0gICAgdHJ5OgotICAgICAgICAjIHBsYXRmb3JtLnJlbGVhc2UoKSBpcyBzb21ldGhpbmcgbGlrZSAnMi42LjMzLjctZGVza3RvcC0ybW5iJwotICAgICAgICB2ZXJzaW9uX3N0cmluZyA9IHBsYXRmb3JtLnJlbGVhc2UoKS5zcGxpdCgnLScpWzBdCi0gICAgICAgIHJldHVybiB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3N0cmluZy5zcGxpdCgnLicpKSkKLSAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgcmV0dXJuIDAsIDAsIDAKK3RyeToKKyAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbXVsdGlwcm9jZXNzaW5nID0gRmFsc2UKIAogSE9TVCA9IHN1cHBvcnQuSE9TVAotTVNHID0gJ01pY2hhZWwgR2lsZml4IHdhcyBoZXJlXHUxMjM0XHJcbicuZW5jb2RlKCd1dGY4JykgIyMgdGVzdCB1bmljb2RlIHN0cmluZyBhbmQgY2FycmlhZ2UgcmV0dXJuCi1TVVBQT1JUU19JUFY2ID0gc29ja2V0Lmhhc19pcHY2IGFuZCB0cnlfYWRkcmVzcygnOjoxJywgZmFtaWx5PXNvY2tldC5BRl9JTkVUNikKK01TRyA9ICdNaWNoYWVsIEdpbGZpeCB3YXMgaGVyZVx1MTIzNFxyXG4nLmVuY29kZSgndXRmLTgnKSAjIyB0ZXN0IHVuaWNvZGUgc3RyaW5nIGFuZCBjYXJyaWFnZSByZXR1cm4KIAogdHJ5OgogICAgIGltcG9ydCBfdGhyZWFkIGFzIHRocmVhZApAQCAtNTQsNiArNDIsMzMgQEAKICAgICB0aHJlYWQgPSBOb25lCiAgICAgdGhyZWFkaW5nID0gTm9uZQogCitkZWYgX2hhdmVfc29ja2V0X2NhbigpOgorICAgICIiIkNoZWNrIHdoZXRoZXIgQ0FOIHNvY2tldHMgYXJlIHN1cHBvcnRlZCBvbiB0aGlzIGhvc3QuIiIiCisgICAgdHJ5OgorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIHNvY2tldC5lcnJvciwgT1NFcnJvcik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGVsc2U6CisgICAgICAgIHMuY2xvc2UoKQorICAgIHJldHVybiBUcnVlCisKK2RlZiBfaGF2ZV9zb2NrZXRfcmRzKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBSRFMgc29ja2V0cyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgaG9zdC4iIiIKKyAgICB0cnk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIFRydWUKKworSEFWRV9TT0NLRVRfQ0FOID0gX2hhdmVfc29ja2V0X2NhbigpCisKK0hBVkVfU09DS0VUX1JEUyA9IF9oYXZlX3NvY2tldF9yZHMoKQorCisjIFNpemUgaW4gYnl0ZXMgb2YgdGhlIGludCB0eXBlCitTSVpFT0ZfSU5UID0gYXJyYXkuYXJyYXkoImkiKS5pdGVtc2l6ZQorCiBjbGFzcyBTb2NrZXRUQ1BUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTc1LDYgKzkwLDYzIEBACiAgICAgICAgIHNlbGYuc2Vydi5jbG9zZSgpCiAgICAgICAgIHNlbGYuc2VydiA9IE5vbmUKIAorY2xhc3MgVGhyZWFkU2FmZUNsZWFudXBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiU3ViY2xhc3Mgb2YgdW5pdHRlc3QuVGVzdENhc2Ugd2l0aCB0aHJlYWQtc2FmZSBjbGVhbnVwIG1ldGhvZHMuCisKKyAgICBUaGlzIHN1YmNsYXNzIHByb3RlY3RzIHRoZSBhZGRDbGVhbnVwKCkgYW5kIGRvQ2xlYW51cHMoKSBtZXRob2RzCisgICAgd2l0aCBhIHJlY3Vyc2l2ZSBsb2NrLgorICAgICIiIgorCisgICAgaWYgdGhyZWFkaW5nOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2VsZi5fY2xlYW51cF9sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKKworICAgICAgICBkZWYgYWRkQ2xlYW51cChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgd2l0aCBzZWxmLl9jbGVhbnVwX2xvY2s6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuYWRkQ2xlYW51cCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgZGVmIGRvQ2xlYW51cHMoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5fY2xlYW51cF9sb2NrOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmRvQ2xlYW51cHMoKmFyZ3MsICoqa3dhcmdzKQorCitjbGFzcyBTb2NrZXRDQU5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRvIGJlIGFibGUgdG8gcnVuIHRoaXMgdGVzdCwgYSBgdmNhbjBgIENBTiBpbnRlcmZhY2UgY2FuIGJlIGNyZWF0ZWQgd2l0aAorICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisgICAgIyBtb2Rwcm9iZSB2Y2FuCisgICAgIyBpcCBsaW5rIGFkZCBkZXYgdmNhbjAgdHlwZSB2Y2FuCisgICAgIyBpZmNvbmZpZyB2Y2FuMCB1cAorICAgICIiIgorICAgIGludGVyZmFjZSA9ICd2Y2FuMCcKKyAgICBidWZzaXplID0gMTI4CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYucy5jbG9zZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zLmJpbmQoKHNlbGYuaW50ZXJmYWNlLCkpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCduZXR3b3JrIGludGVyZmFjZSBgJXNgIGRvZXMgbm90IGV4aXN0JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmludGVyZmFjZSkKKworCitjbGFzcyBTb2NrZXRSRFNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRvIGJlIGFibGUgdG8gcnVuIHRoaXMgdGVzdCwgdGhlIGByZHNgIGtlcm5lbCBtb2R1bGUgbXVzdCBiZSBsb2FkZWQ6CisgICAgIyBtb2Rwcm9iZSByZHMKKyAgICAiIiIKKyAgICBidWZzaXplID0gODE5MgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuc2Vydi5jbG9zZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5wb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zZXJ2KQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3VuYWJsZSB0byBiaW5kIFJEUyBzb2NrZXQnKQorCisKIGNsYXNzIFRocmVhZGFibGVUZXN0OgogICAgICIiIlRocmVhZGFibGUgVGVzdCBjbGFzcwogCkBAIC0xMzIsNiArMjA0LDcgQEAKICAgICAgICAgc2VsZi5jbGllbnRfcmVhZHkgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBzZWxmLmRvbmUgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBzZWxmLnF1ZXVlID0gcXVldWUuUXVldWUoMSkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfY3Jhc2hlZCA9IEZhbHNlCiAKICAgICAgICAgIyBEbyBzb21lIG11bmdpbmcgdG8gc3RhcnQgdGhlIGNsaWVudCB0ZXN0LgogICAgICAgICBtZXRob2RuYW1lID0gc2VsZi5pZCgpCkBAIC0xNDEsOCArMjE0LDEyIEBACiAgICAgICAgIHNlbGYuY2xpZW50X3RocmVhZCA9IHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKAogICAgICAgICAgICAgc2VsZi5jbGllbnRSdW4sICh0ZXN0X21ldGhvZCwpKQogCi0gICAgICAgIHNlbGYuX19zZXRVcCgpCi0gICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlcl9yZWFkeS5pc19zZXQoKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fX3NldFVwKCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY3Jhc2hlZCA9IFRydWUKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnNlcnZlcl9yZWFkeS5zZXQoKQogICAgICAgICBzZWxmLmNsaWVudF9yZWFkeS53YWl0KCkKIApAQCAtMTU4LDEwICsyMzUsMTYgQEAKICAgICAgICAgc2VsZi5zZXJ2ZXJfcmVhZHkud2FpdCgpCiAgICAgICAgIHNlbGYuY2xpZW50U2V0VXAoKQogICAgICAgICBzZWxmLmNsaWVudF9yZWFkeS5zZXQoKQorICAgICAgICBpZiBzZWxmLnNlcnZlcl9jcmFzaGVkOgorICAgICAgICAgICAgc2VsZi5jbGllbnRUZWFyRG93bigpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IGhhc2F0dHIodGVzdF9mdW5jLCAnX19jYWxsX18nKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidGVzdF9mdW5jIG11c3QgYmUgYSBjYWxsYWJsZSBmdW5jdGlvbiIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRlc3RfZnVuYygpCisgICAgICAgIGV4Y2VwdCBfRXhwZWN0ZWRGYWlsdXJlOgorICAgICAgICAgICAgIyBXZSBkZWxpYmVyYXRlbHkgaWdub3JlIGV4cGVjdGVkIGZhaWx1cmVzCisgICAgICAgICAgICBwYXNzCiAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dChlKQogICAgICAgICBmaW5hbGx5OgpAQCAtMjAyLDYgKzI4NSw0OCBAQAogICAgICAgICBzZWxmLmNsaSA9IE5vbmUKICAgICAgICAgVGhyZWFkYWJsZVRlc3QuY2xpZW50VGVhckRvd24oc2VsZikKIAorY2xhc3MgVGhyZWFkZWRDQU5Tb2NrZXRUZXN0KFNvY2tldENBTlRlc3QsIFRocmVhZGFibGVUZXN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSdydW5UZXN0Jyk6CisgICAgICAgIFNvY2tldENBTlRlc3QuX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT1tZXRob2ROYW1lKQorICAgICAgICBUaHJlYWRhYmxlVGVzdC5fX2luaXRfXyhzZWxmKQorCisgICAgZGVmIGNsaWVudFNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmNsaSA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jbGkuYmluZCgoc2VsZi5pbnRlcmZhY2UsKSkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgICMgc2tpcFRlc3Qgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaGVyZSwgYW5kIHdpbGwgYmUgY2FsbGVkIGluIHRoZQorICAgICAgICAgICAgIyBzZXJ2ZXIgaW5zdGVhZAorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIGNsaWVudFRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNsaS5jbG9zZSgpCisgICAgICAgIHNlbGYuY2xpID0gTm9uZQorICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQorCitjbGFzcyBUaHJlYWRlZFJEU1NvY2tldFRlc3QoU29ja2V0UkRTVGVzdCwgVGhyZWFkYWJsZVRlc3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9J3J1blRlc3QnKToKKyAgICAgICAgU29ja2V0UkRTVGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisgICAgICAgIFRocmVhZGFibGVUZXN0Ll9faW5pdF9fKHNlbGYpCisKKyAgICBkZWYgY2xpZW50U2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY2xpID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfUkRTLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgUkRTIHNvY2tldHMgbXVzdCBiZSBib3VuZCBleHBsaWNpdGx5IHRvIHNlbmQgb3IgcmVjZWl2ZSBkYXRhCisgICAgICAgICAgICBzZWxmLmNsaS5iaW5kKChIT1NULCAwKSkKKyAgICAgICAgICAgIHNlbGYuY2xpX2FkZHIgPSBzZWxmLmNsaS5nZXRzb2NrbmFtZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgIyBza2lwVGVzdCBzaG91bGQgbm90IGJlIGNhbGxlZCBoZXJlLCBhbmQgd2lsbCBiZSBjYWxsZWQgaW4gdGhlCisgICAgICAgICAgICAjIHNlcnZlciBpbnN0ZWFkCisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgY2xpZW50VGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuY2xpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5jbGkgPSBOb25lCisgICAgICAgIFRocmVhZGFibGVUZXN0LmNsaWVudFRlYXJEb3duKHNlbGYpCisKIGNsYXNzIFNvY2tldENvbm5lY3RlZFRlc3QoVGhyZWFkZWRUQ1BTb2NrZXRUZXN0KToKICAgICAiIiJTb2NrZXQgdGVzdHMgZm9yIGNsaWVudC1zZXJ2ZXIgY29ubmVjdGlvbi4KIApAQCAtMjU3LDYgKzM4MiwyNDMgQEAKICAgICAgICAgVGhyZWFkYWJsZVRlc3QuY2xpZW50VGVhckRvd24oc2VsZikKIAogCisjIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgdXNlZCBieSB0aGUgc2VuZG1zZygpL3JlY3Ztc2coKSB0ZXN0cy4KKyMgQ29tYmluaW5nLCBmb3IgaW5zdGFuY2UsIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbiBhbmQgVENQVGVzdEJhc2UKKyMgZ2l2ZXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBTb2NrZXRDb25uZWN0ZWRUZXN0LCBidXQgZGlmZmVyZW50CisjIGFkZHJlc3MgZmFtaWxpZXMgY2FuIGJlIHVzZWQsIGFuZCB0aGUgYXR0cmlidXRlcyBzZXJ2X2FkZHIgYW5kCisjIGNsaV9hZGRyIHdpbGwgYmUgc2V0IHRvIHRoZSBhZGRyZXNzZXMgb2YgdGhlIGVuZHBvaW50cy4KKworY2xhc3MgU29ja2V0VGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgYmFzZSBjbGFzcyBmb3Igc29ja2V0IHRlc3RzLgorCisgICAgU3ViY2xhc3NlcyBtdXN0IHByb3ZpZGUgbWV0aG9kcyBuZXdTb2NrZXQoKSB0byByZXR1cm4gYSBuZXcgc29ja2V0CisgICAgYW5kIGJpbmRTb2NrKHNvY2spIHRvIGJpbmQgaXQgdG8gYW4gdW51c2VkIGFkZHJlc3MuCisKKyAgICBDcmVhdGVzIGEgc29ja2V0IHNlbGYuc2VydiBhbmQgc2V0cyBzZWxmLnNlcnZfYWRkciB0byBpdHMgYWRkcmVzcy4KKyAgICAiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ID0gc2VsZi5uZXdTb2NrZXQoKQorICAgICAgICBzZWxmLmJpbmRTZXJ2ZXIoKQorCisgICAgZGVmIGJpbmRTZXJ2ZXIoc2VsZik6CisgICAgICAgICIiIkJpbmQgc2VydmVyIHNvY2tldCBhbmQgc2V0IHNlbGYuc2Vydl9hZGRyIHRvIGl0cyBhZGRyZXNzLiIiIgorICAgICAgICBzZWxmLmJpbmRTb2NrKHNlbGYuc2VydikKKyAgICAgICAgc2VsZi5zZXJ2X2FkZHIgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnYgPSBOb25lCisKKworY2xhc3MgU29ja2V0TGlzdGVuaW5nVGVzdE1peGluKFNvY2tldFRlc3RCYXNlKToKKyAgICAiIiJNaXhpbiB0byBsaXN0ZW4gb24gdGhlIHNlcnZlciBzb2NrZXQuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLnNlcnYubGlzdGVuKDEpCisKKworY2xhc3MgVGhyZWFkZWRTb2NrZXRUZXN0TWl4aW4oVGhyZWFkU2FmZUNsZWFudXBUZXN0Q2FzZSwgU29ja2V0VGVzdEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRhYmxlVGVzdCk6CisgICAgIiIiTWl4aW4gdG8gYWRkIGNsaWVudCBzb2NrZXQgYW5kIGFsbG93IGNsaWVudC9zZXJ2ZXIgdGVzdHMuCisKKyAgICBDbGllbnQgc29ja2V0IGlzIHNlbGYuY2xpIGFuZCBpdHMgYWRkcmVzcyBpcyBzZWxmLmNsaV9hZGRyLiAgU2VlCisgICAgVGhyZWFkYWJsZVRlc3QgZm9yIHVzYWdlIGluZm9ybWF0aW9uLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBUaHJlYWRhYmxlVGVzdC5fX2luaXRfXyhzZWxmKQorCisgICAgZGVmIGNsaWVudFNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmNsaSA9IHNlbGYubmV3Q2xpZW50U29ja2V0KCkKKyAgICAgICAgc2VsZi5iaW5kQ2xpZW50KCkKKworICAgIGRlZiBuZXdDbGllbnRTb2NrZXQoc2VsZik6CisgICAgICAgICIiIlJldHVybiBhIG5ldyBzb2NrZXQgZm9yIHVzZSBhcyBjbGllbnQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLm5ld1NvY2tldCgpCisKKyAgICBkZWYgYmluZENsaWVudChzZWxmKToKKyAgICAgICAgIiIiQmluZCBjbGllbnQgc29ja2V0IGFuZCBzZXQgc2VsZi5jbGlfYWRkciB0byBpdHMgYWRkcmVzcy4iIiIKKyAgICAgICAgc2VsZi5iaW5kU29jayhzZWxmLmNsaSkKKyAgICAgICAgc2VsZi5jbGlfYWRkciA9IHNlbGYuY2xpLmdldHNvY2tuYW1lKCkKKworICAgIGRlZiBjbGllbnRUZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jbGkuY2xvc2UoKQorICAgICAgICBzZWxmLmNsaSA9IE5vbmUKKyAgICAgICAgVGhyZWFkYWJsZVRlc3QuY2xpZW50VGVhckRvd24oc2VsZikKKworCitjbGFzcyBDb25uZWN0ZWRTdHJlYW1UZXN0TWl4aW4oU29ja2V0TGlzdGVuaW5nVGVzdE1peGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGVkU29ja2V0VGVzdE1peGluKToKKyAgICAiIiJNaXhpbiB0byBhbGxvdyBjbGllbnQvc2VydmVyIHN0cmVhbSB0ZXN0cyB3aXRoIGNvbm5lY3RlZCBjbGllbnQuCisKKyAgICBTZXJ2ZXIncyBzb2NrZXQgcmVwcmVzZW50aW5nIGNvbm5lY3Rpb24gdG8gY2xpZW50IGlzIHNlbGYuY2xpX2Nvbm4KKyAgICBhbmQgY2xpZW50J3MgY29ubmVjdGlvbiB0byBzZXJ2ZXIgaXMgc2VsZi5zZXJ2X2Nvbm4uICAoQmFzZWQgb24KKyAgICBTb2NrZXRDb25uZWN0ZWRUZXN0LikKKyAgICAiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgICMgSW5kaWNhdGUgZXhwbGljaXRseSB3ZSdyZSByZWFkeSBmb3IgdGhlIGNsaWVudCB0aHJlYWQgdG8KKyAgICAgICAgIyBwcm9jZWVkIGFuZCB0aGVuIHBlcmZvcm0gdGhlIGJsb2NraW5nIGNhbGwgdG8gYWNjZXB0CisgICAgICAgIHNlbGYuc2VydmVyRXhwbGljaXRSZWFkeSgpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnYuYWNjZXB0KCkKKyAgICAgICAgc2VsZi5jbGlfY29ubiA9IGNvbm4KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jbGlfY29ubi5jbG9zZSgpCisgICAgICAgIHNlbGYuY2xpX2Nvbm4gPSBOb25lCisgICAgICAgIHN1cGVyKCkudGVhckRvd24oKQorCisgICAgZGVmIGNsaWVudFNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLmNsaWVudFNldFVwKCkKKyAgICAgICAgc2VsZi5jbGkuY29ubmVjdChzZWxmLnNlcnZfYWRkcikKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4gPSBzZWxmLmNsaQorCisgICAgZGVmIGNsaWVudFRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZfY29ubi5jbG9zZSgpCisgICAgICAgIHNlbGYuc2Vydl9jb25uID0gTm9uZQorICAgICAgICBzdXBlcigpLmNsaWVudFRlYXJEb3duKCkKKworCitjbGFzcyBVbml4U29ja2V0VGVzdEJhc2UoU29ja2V0VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIFVuaXgtZG9tYWluIHNvY2tldCB0ZXN0cy4iIiIKKworICAgICMgVGhpcyBjbGFzcyBpcyB1c2VkIGZvciBmaWxlIGRlc2NyaXB0b3IgcGFzc2luZyB0ZXN0cywgc28gd2UKKyAgICAjIGNyZWF0ZSB0aGUgc29ja2V0cyBpbiBhIHByaXZhdGUgZGlyZWN0b3J5IHNvIHRoYXQgb3RoZXIgdXNlcnMKKyAgICAjIGNhbid0IHNlbmQgYW55dGhpbmcgdGhhdCBtaWdodCBiZSBwcm9ibGVtYXRpYyBmb3IgYSBwcml2aWxlZ2VkCisgICAgIyB1c2VyIHJ1bm5pbmcgdGhlIHRlc3RzLgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmRpcl9wYXRoID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5ybWRpciwgc2VsZi5kaXJfcGF0aCkKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisKKyAgICBkZWYgYmluZFNvY2soc2VsZiwgc29jayk6CisgICAgICAgIHBhdGggPSB0ZW1wZmlsZS5ta3RlbXAoZGlyPXNlbGYuZGlyX3BhdGgpCisgICAgICAgIHNvY2suYmluZChwYXRoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHBhdGgpCisKK2NsYXNzIFVuaXhTdHJlYW1CYXNlKFVuaXhTb2NrZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVW5peC1kb21haW4gU09DS19TVFJFQU0gdGVzdHMuIiIiCisKKyAgICBkZWYgbmV3U29ja2V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorCisKK2NsYXNzIEluZXRUZXN0QmFzZShTb2NrZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgSVB2NCBzb2NrZXQgdGVzdHMuIiIiCisKKyAgICBob3N0ID0gSE9TVAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi5zZXJ2X2FkZHJbMV0KKworICAgIGRlZiBiaW5kU29jayhzZWxmLCBzb2NrKToKKyAgICAgICAgc3VwcG9ydC5iaW5kX3BvcnQoc29jaywgaG9zdD1zZWxmLmhvc3QpCisKK2NsYXNzIFRDUFRlc3RCYXNlKEluZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVENQLW92ZXItSVB2NCB0ZXN0cy4iIiIKKworICAgIGRlZiBuZXdTb2NrZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisKK2NsYXNzIFVEUFRlc3RCYXNlKEluZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVURQLW92ZXItSVB2NCB0ZXN0cy4iIiIKKworICAgIGRlZiBuZXdTb2NrZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkKKworY2xhc3MgU0NUUFN0cmVhbUJhc2UoSW5ldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBTQ1RQIHRlc3RzIGluIG9uZS10by1vbmUgKFNPQ0tfU1RSRUFNKSBtb2RlLiIiIgorCisgICAgZGVmIG5ld1NvY2tldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQUFJPVE9fU0NUUCkKKworCitjbGFzcyBJbmV0NlRlc3RCYXNlKEluZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgSVB2NiBzb2NrZXQgdGVzdHMuIiIiCisKKyAgICAjIERvbid0IHVzZSAibG9jYWxob3N0IiBoZXJlIC0gaXQgbWF5IG5vdCBoYXZlIGFuIElQdjYgYWRkcmVzcworICAgICMgYXNzaWduZWQgdG8gaXQgYnkgZGVmYXVsdCAoZS5nLiBpbiAvZXRjL2hvc3RzKSwgYW5kIGlmIHNvbWVvbmUKKyAgICAjIGhhcyBhc3NpZ25lZCBpdCBhbiBJUHY0LW1hcHBlZCBhZGRyZXNzLCB0aGVuIGl0J3MgdW5saWtlbHkgdG8KKyAgICAjIHdvcmsgd2l0aCB0aGUgZnVsbCBJUHY2IEFQSS4KKyAgICBob3N0ID0gIjo6MSIKKworY2xhc3MgVURQNlRlc3RCYXNlKEluZXQ2VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIFVEUC1vdmVyLUlQdjYgdGVzdHMuIiIiCisKKyAgICBkZWYgbmV3U29ja2V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX0RHUkFNKQorCisKKyMgVGVzdC1za2lwcGluZyBkZWNvcmF0b3JzIGZvciB1c2Ugd2l0aCBUaHJlYWRhYmxlVGVzdC4KKworZGVmIHNraXBXaXRoQ2xpZW50SWYoY29uZGl0aW9uLCByZWFzb24pOgorICAgICIiIlNraXAgZGVjb3JhdGVkIHRlc3QgaWYgY29uZGl0aW9uIGlzIHRydWUsIGFkZCBjbGllbnRfc2tpcCBkZWNvcmF0b3IuCisKKyAgICBJZiB0aGUgZGVjb3JhdGVkIG9iamVjdCBpcyBub3QgYSBjbGFzcywgc2V0cyBpdHMgYXR0cmlidXRlCisgICAgImNsaWVudF9za2lwIiB0byBhIGRlY29yYXRvciB3aGljaCB3aWxsIHJldHVybiBhbiBlbXB0eSBmdW5jdGlvbgorICAgIGlmIHRoZSB0ZXN0IGlzIHRvIGJlIHNraXBwZWQsIG9yIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpZiBpdCBpcworICAgIG5vdC4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXZvaWQgcnVubmluZyB0aGUgY2xpZW50IHBhcnQgb2YgYQorICAgIHNraXBwZWQgdGVzdCB3aGVuIHVzaW5nIFRocmVhZGFibGVUZXN0LgorICAgICIiIgorICAgIGRlZiBjbGllbnRfcGFzcygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBwYXNzCisgICAgZGVmIHNraXBkZWMob2JqKToKKyAgICAgICAgcmV0dmFsID0gdW5pdHRlc3Quc2tpcChyZWFzb24pKG9iaikKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqLCB0eXBlKToKKyAgICAgICAgICAgIHJldHZhbC5jbGllbnRfc2tpcCA9IGxhbWJkYSBmOiBjbGllbnRfcGFzcworICAgICAgICByZXR1cm4gcmV0dmFsCisgICAgZGVmIG5vc2tpcGRlYyhvYmopOgorICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2Uob2JqLCB0eXBlKSBvciBoYXNhdHRyKG9iaiwgImNsaWVudF9za2lwIikpOgorICAgICAgICAgICAgb2JqLmNsaWVudF9za2lwID0gbGFtYmRhIGY6IGYKKyAgICAgICAgcmV0dXJuIG9iagorICAgIHJldHVybiBza2lwZGVjIGlmIGNvbmRpdGlvbiBlbHNlIG5vc2tpcGRlYworCisKK2RlZiByZXF1aXJlQXR0cnMob2JqLCAqYXR0cmlidXRlcyk6CisgICAgIiIiU2tpcCBkZWNvcmF0ZWQgdGVzdCBpZiBvYmogaXMgbWlzc2luZyBhbnkgb2YgdGhlIGdpdmVuIGF0dHJpYnV0ZXMuCisKKyAgICBTZXRzIGNsaWVudF9za2lwIGF0dHJpYnV0ZSBhcyBza2lwV2l0aENsaWVudElmKCkgZG9lcy4KKyAgICAiIiIKKyAgICBtaXNzaW5nID0gW25hbWUgZm9yIG5hbWUgaW4gYXR0cmlidXRlcyBpZiBub3QgaGFzYXR0cihvYmosIG5hbWUpXQorICAgIHJldHVybiBza2lwV2l0aENsaWVudElmKAorICAgICAgICBtaXNzaW5nLCAiZG9uJ3QgaGF2ZSAiICsgIiwgIi5qb2luKG5hbWUgZm9yIG5hbWUgaW4gbWlzc2luZykpCisKKworZGVmIHJlcXVpcmVTb2NrZXQoKmFyZ3MpOgorICAgICIiIlNraXAgZGVjb3JhdGVkIHRlc3QgaWYgYSBzb2NrZXQgY2Fubm90IGJlIGNyZWF0ZWQgd2l0aCBnaXZlbiBhcmd1bWVudHMuCisKKyAgICBXaGVuIGFuIGFyZ3VtZW50IGlzIGdpdmVuIGFzIGEgc3RyaW5nLCB3aWxsIHVzZSB0aGUgdmFsdWUgb2YgdGhhdAorICAgIGF0dHJpYnV0ZSBvZiB0aGUgc29ja2V0IG1vZHVsZSwgb3Igc2tpcCB0aGUgdGVzdCBpZiBpdCBkb2Vzbid0CisgICAgZXhpc3QuICBTZXRzIGNsaWVudF9za2lwIGF0dHJpYnV0ZSBhcyBza2lwV2l0aENsaWVudElmKCkgZG9lcy4KKyAgICAiIiIKKyAgICBlcnIgPSBOb25lCisgICAgbWlzc2luZyA9IFtvYmogZm9yIG9iaiBpbiBhcmdzIGlmCisgICAgICAgICAgICAgICBpc2luc3RhbmNlKG9iaiwgc3RyKSBhbmQgbm90IGhhc2F0dHIoc29ja2V0LCBvYmopXQorICAgIGlmIG1pc3Npbmc6CisgICAgICAgIGVyciA9ICJkb24ndCBoYXZlICIgKyAiLCAiLmpvaW4obmFtZSBmb3IgbmFtZSBpbiBtaXNzaW5nKQorICAgIGVsc2U6CisgICAgICAgIGNhbGxhcmdzID0gW2dldGF0dHIoc29ja2V0LCBvYmopIGlmIGlzaW5zdGFuY2Uob2JqLCBzdHIpIGVsc2Ugb2JqCisgICAgICAgICAgICAgICAgICAgIGZvciBvYmogaW4gYXJnc10KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKmNhbGxhcmdzKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgICAgICAjIFhYWDogY2hlY2sgZXJybm8/CisgICAgICAgICAgICBlcnIgPSBzdHIoZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHMuY2xvc2UoKQorICAgIHJldHVybiBza2lwV2l0aENsaWVudElmKAorICAgICAgICBlcnIgaXMgbm90IE5vbmUsCisgICAgICAgICJjYW4ndCBjcmVhdGUgc29ja2V0KHswfSk6IHsxfSIuZm9ybWF0KAorICAgICAgICAgICAgIiwgIi5qb2luKHN0cihvKSBmb3IgbyBpbiBhcmdzKSwgZXJyKSkKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMgQmVnaW4gVGVzdHMKIApAQCAtMjgyLDE4ICs2NDQsMTMgQEAKIAogICAgIGRlZiB0ZXN0U29ja2V0RXJyb3Ioc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBzb2NrZXQgbW9kdWxlIGV4Y2VwdGlvbnMKLSAgICAgICAgZGVmIHJhaXNlX2Vycm9yKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIG1zZyA9ICJFcnJvciByYWlzaW5nIHNvY2tldCBleGNlcHRpb24gKCVzKS4iCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBtc2c9bXNnICUgJ3NvY2tldC5lcnJvcicpOgogICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yCi0gICAgICAgIGRlZiByYWlzZV9oZXJyb3IoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIG1zZz1tc2cgJSAnc29ja2V0LmhlcnJvcicpOgogICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmhlcnJvcgotICAgICAgICBkZWYgcmFpc2VfZ2FpZXJyb3IoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIG1zZz1tc2cgJSAnc29ja2V0LmdhaWVycm9yJyk6CiAgICAgICAgICAgICByYWlzZSBzb2NrZXQuZ2FpZXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCByYWlzZV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByYWlzaW5nIHNvY2tldCBleGNlcHRpb24uIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCByYWlzZV9oZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgcmFpc2luZyBzb2NrZXQgZXhjZXB0aW9uLiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgcmFpc2VfZ2FpZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgcmFpc2luZyBzb2NrZXQgZXhjZXB0aW9uLiIpCiAKICAgICBkZWYgdGVzdFNlbmR0b0Vycm9ycyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIHRoYXQgc2VuZHRvIGRvZW5zJ3QgbWFza3MgZmFpbHVyZXMuIFNlZSAjMTAxNjkuCkBAIC0zNjksNiArNzI2LDUyIEBACiAgICAgICAgIGlmIG5vdCBmcWhuIGluIGFsbF9ob3N0X25hbWVzOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJFcnJvciB0ZXN0aW5nIGhvc3QgcmVzb2x1dGlvbiBtZWNoYW5pc21zLiAoZnFkbjogJXMsIGFsbDogJXMpIiAlIChmcWhuLCByZXByKGFsbF9ob3N0X25hbWVzKSkpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ3NldGhvc3RuYW1lJyksICJ0ZXN0IG5lZWRzIHNvY2tldC5zZXRob3N0bmFtZSgpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ2dldGhvc3RuYW1lJyksICJ0ZXN0IG5lZWRzIHNvY2tldC5nZXRob3N0bmFtZSgpIikKKyAgICBkZWYgdGVzdF9zZXRob3N0bmFtZShzZWxmKToKKyAgICAgICAgb2xkaG4gPSBzb2NrZXQuZ2V0aG9zdG5hbWUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrZXQuc2V0aG9zdG5hbWUoJ25ldycpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRVBFUk06CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidGVzdCBzaG91bGQgYmUgcnVuIGFzIHJvb3QiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIHJ1bm5pbmcgdGVzdCBhcyByb290IQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrZXQuZ2V0aG9zdG5hbWUoKSwgJ25ldycpCisgICAgICAgICAgICAjIFNob3VsZCB3b3JrIHdpdGggYnl0ZXMgb2JqZWN0cyB0b28KKyAgICAgICAgICAgIHNvY2tldC5zZXRob3N0bmFtZShiJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2tldC5nZXRob3N0bmFtZSgpLCAnYmFyJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNvY2tldC5zZXRob3N0bmFtZShvbGRobikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnaWZfbmFtZWluZGV4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvY2tldC5pZl9uYW1laW5kZXgoKSBub3QgYXZhaWxhYmxlLicpCisgICAgZGVmIHRlc3RJbnRlcmZhY2VOYW1lSW5kZXgoc2VsZik6CisgICAgICAgIGludGVyZmFjZXMgPSBzb2NrZXQuaWZfbmFtZWluZGV4KCkKKyAgICAgICAgZm9yIGluZGV4LCBuYW1lIGluIGludGVyZmFjZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5kZXgsIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShuYW1lLCBzdHIpCisgICAgICAgICAgICAjIGludGVyZmFjZSBpbmRpY2VzIGFyZSBub24temVybyBpbnRlZ2VycworICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGluZGV4LCAwKQorICAgICAgICAgICAgX2luZGV4ID0gc29ja2V0LmlmX25hbWV0b2luZGV4KG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoX2luZGV4LCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGV4LCBfaW5kZXgpCisgICAgICAgICAgICBfbmFtZSA9IHNvY2tldC5pZl9pbmRleHRvbmFtZShpbmRleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShfbmFtZSwgc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBfbmFtZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnaWZfbmFtZWluZGV4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvY2tldC5pZl9uYW1laW5kZXgoKSBub3QgYXZhaWxhYmxlLicpCisgICAgZGVmIHRlc3RJbnZhbGlkSW50ZXJmYWNlTmFtZUluZGV4KHNlbGYpOgorICAgICAgICAjIHRlc3Qgbm9uZXhpc3RlbnQgaW50ZXJmYWNlIGluZGV4L25hbWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzb2NrZXQuaWZfaW5kZXh0b25hbWUsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc29ja2V0LmlmX25hbWV0b2luZGV4LCAnX0RFQURCRUVGJykKKyAgICAgICAgIyB0ZXN0IHdpdGggaW52YWxpZCB2YWx1ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzb2NrZXQuaWZfbmFtZXRvaW5kZXgsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc29ja2V0LmlmX2luZGV4dG9uYW1lLCAnX0RFQURCRUVGJykKKwogICAgIGRlZiB0ZXN0UmVmQ291bnRHZXROYW1lSW5mbyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIHJlZmVyZW5jZSBjb3VudCBmb3IgZ2V0bmFtZWluZm8KICAgICAgICAgaWYgaGFzYXR0cihzeXMsICJnZXRyZWZjb3VudCIpOgpAQCAtNDIxLDEwICs4MjQsOCBAQAogICAgICAgICAjIEZpbmQgb25lIHNlcnZpY2UgdGhhdCBleGlzdHMsIHRoZW4gY2hlY2sgYWxsIHRoZSByZWxhdGVkIGludGVyZmFjZXMuCiAgICAgICAgICMgSSd2ZSBvcmRlcmVkIHRoaXMgYnkgcHJvdG9jb2xzIHRoYXQgaGF2ZSBib3RoIGEgdGNwIGFuZCB1ZHAKICAgICAgICAgIyBwcm90b2NvbCwgYXQgbGVhc3QgZm9yIG1vZGVybiBMaW51eGVzLgotICAgICAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jykgb3IKLSAgICAgICAgICAgIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJykgb3IKLSAgICAgICAgICAgIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCduZXRic2QnKSBvcgotICAgICAgICAgICAgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nKToKKyAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCgnZnJlZWJzZCcsICduZXRic2QnKSkKKyAgICAgICAgICAgIG9yIHN5cy5wbGF0Zm9ybSBpbiAoJ2xpbnV4JywgJ2RhcndpbicpKToKICAgICAgICAgICAgICMgYXZvaWQgdGhlICdlY2hvJyBzZXJ2aWNlIG9uIHRoaXMgcGxhdGZvcm0sIGFzIHRoZXJlIGlzIGFuCiAgICAgICAgICAgICAjIGFzc3VtcHRpb24gYnJlYWtpbmcgbm9uLXN0YW5kYXJkIHBvcnQvcHJvdG9jb2wgZW50cnkKICAgICAgICAgICAgIHNlcnZpY2VzID0gKCdkYXl0aW1lJywgJ3FvdGQnLCAnZG9tYWluJykKQEAgLTcxOSw3ICsxMTIwLDcgQEAKICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKCdsb2NhbGhvc3QnLCA4MCkKICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKCcxMjcuMC4wLjEnLCA4MCkKICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKE5vbmUsIDgwKQotICAgICAgICBpZiBTVVBQT1JUU19JUFY2OgorICAgICAgICBpZiBzdXBwb3J0LklQVjZfRU5BQkxFRDoKICAgICAgICAgICAgIHNvY2tldC5nZXRhZGRyaW5mbygnOjoxJywgODApCiAgICAgICAgICMgcG9ydCBjYW4gYmUgYSBzdHJpbmcgc2VydmljZSBuYW1lIHN1Y2ggYXMgImh0dHAiLCBhIG51bWVyaWMKICAgICAgICAgIyBwb3J0IG51bWJlciBvciBOb25lCkBAIC03NzIsNyArMTE3MywxMiBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrIGlzIG5vdCBlbmFibGVkJykKICAgICBkZWYgdGVzdF9pZG5hKHNlbGYpOgotICAgICAgICBzdXBwb3J0LnJlcXVpcmVzKCduZXR3b3JrJykKKyAgICAgICAgIyBDaGVjayBmb3IgaW50ZXJuZXQgYWNjZXNzIGJlZm9yZSBydW5uaW5nIHRlc3QgKGlzc3VlICMxMjgwNCkuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2tldC5nZXRob3N0YnluYW1lKCdweXRob24ub3JnJykKKyAgICAgICAgZXhjZXB0IHNvY2tldC5nYWllcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBzb2NrZXQuRUFJX05PREFUQToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdpbnRlcm5ldCBhY2Nlc3MgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCiAgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBiZSBzdWNjZXNzZnVsCiAgICAgICAgIHNvY2tldC5nZXRob3N0YnluYW1lKCfQuNGB0L/Ri9GC0LDQvdC40LUucHl0aG9uLm9yZycpCiAgICAgICAgIHNvY2tldC5nZXRob3N0YnluYW1lX2V4KCfQuNGB0L/Ri9GC0LDQvdC40LUucHl0aG9uLm9yZycpCkBAIC04MzksMTQgKzEyNDUsMjAgQEAKICAgICAgICAgICAgIGZwLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmcCksICI8X2lvLkJ1ZmZlcmVkUmVhZGVyIG5hbWU9LTE+IikKIAotICAgIGRlZiB0ZXN0TGlzdGVuQmFja2xvZzAoc2VsZik6CisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHdpdGggc29jazoKKyAgICAgICAgICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBzb2NrLCBwcm90b2NvbCkKKworICAgIGRlZiB0ZXN0X2xpc3Rlbl9iYWNrbG9nMChzZWxmKToKICAgICAgICAgc3J2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICBzcnYuYmluZCgoSE9TVCwgMCkpCiAgICAgICAgICMgYmFja2xvZyA9IDAKICAgICAgICAgc3J2Lmxpc3RlbigwKQogICAgICAgICBzcnYuY2xvc2UoKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU1VQUE9SVFNfSVBWNiwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfZmxvd2luZm8oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5nZXRuYW1laW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc6OjEnLDAsIDB4ZmZmZmZmZmYpLCAwKQpAQCAtODU0LDYgKzEyNjYsMjIyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzLmJpbmQsICgnOjoxJywgMCwgLTEwKSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9DQU4sICdTb2NrZXRDYW4gcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgQmFzaWNDQU5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0Q3J1Y2lhbENvbnN0YW50cyhzZWxmKToKKyAgICAgICAgc29ja2V0LkFGX0NBTgorICAgICAgICBzb2NrZXQuUEZfQ0FOCisgICAgICAgIHNvY2tldC5DQU5fUkFXCisKKyAgICBkZWYgdGVzdENyZWF0ZVNvY2tldChzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdEJpbmRBbnkoc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgorICAgICAgICAgICAgcy5iaW5kKCgnJywgKSkKKworICAgIGRlZiB0ZXN0VG9vTG9uZ0ludGVyZmFjZU5hbWUoc2VsZik6CisgICAgICAgICMgbW9zdCBzeXN0ZW1zIGxpbWl0IElGTkFNU0laIHRvIDE2LCB0YWtlIDEwMjQgdG8gYmUgc3VyZQorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykgYXMgczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc29ja2V0LmVycm9yLCAnaW50ZXJmYWNlIG5hbWUgdG9vIGxvbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmJpbmQsICgneCcgKiAxMDI0LCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgIkNBTl9SQVdfTE9PUEJBQ0siKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LkNBTl9SQVdfTE9PUEJBQ0sgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0TG9vcGJhY2soc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgorICAgICAgICAgICAgZm9yIGxvb3BiYWNrIGluICgwLCAxKToKKyAgICAgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19MT09QQkFDSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcGJhY2spCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb29wYmFjaywKKyAgICAgICAgICAgICAgICAgICAgcy5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfQ0FOX1JBVywgc29ja2V0LkNBTl9SQVdfTE9PUEJBQ0spKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJDQU5fUkFXX0ZJTFRFUiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzb2NrZXQuQ0FOX1JBV19GSUxURVIgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0RmlsdGVyKHNlbGYpOgorICAgICAgICBjYW5faWQsIGNhbl9tYXNrID0gMHgyMDAsIDB4NzAwCisgICAgICAgIGNhbl9maWx0ZXIgPSBzdHJ1Y3QucGFjaygiPUlJIiwgY2FuX2lkLCBjYW5fbWFzaykKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19GSUxURVIsIGNhbl9maWx0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbl9maWx0ZXIsCisgICAgICAgICAgICAgICAgICAgIHMuZ2V0c29ja29wdChzb2NrZXQuU09MX0NBTl9SQVcsIHNvY2tldC5DQU5fUkFXX0ZJTFRFUiwgOCkpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfQ0FOLCAnU29ja2V0Q2FuIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBDQU5UZXN0KFRocmVhZGVkQ0FOU29ja2V0VGVzdCk6CisKKyAgICAiIiJUaGUgQ0FOIGZyYW1lIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluIDxsaW51eC9jYW4uaD46CisKKyAgICBzdHJ1Y3QgY2FuX2ZyYW1lIHsKKyAgICAgICAgY2FuaWRfdCBjYW5faWQ7ICAvKiAzMiBiaXQgQ0FOX0lEICsgRUZGL1JUUi9FUlIgZmxhZ3MgKi8KKyAgICAgICAgX191OCAgICBjYW5fZGxjOyAvKiBkYXRhIGxlbmd0aCBjb2RlOiAwIC4uIDggKi8KKyAgICAgICAgX191OCAgICBkYXRhWzhdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyAgICB9OworICAgICIiIgorICAgIGNhbl9mcmFtZV9mbXQgPSAiPUlCM3g4cyIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSdydW5UZXN0Jyk6CisgICAgICAgIFRocmVhZGVkQ0FOU29ja2V0VGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgYnVpbGRfY2FuX2ZyYW1lKGNscywgY2FuX2lkLCBkYXRhKToKKyAgICAgICAgIiIiQnVpbGQgYSBDQU4gZnJhbWUuIiIiCisgICAgICAgIGNhbl9kbGMgPSBsZW4oZGF0YSkKKyAgICAgICAgZGF0YSA9IGRhdGEubGp1c3QoOCwgYidceDAwJykKKyAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKGNscy5jYW5fZnJhbWVfZm10LCBjYW5faWQsIGNhbl9kbGMsIGRhdGEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGlzc2VjdF9jYW5fZnJhbWUoY2xzLCBmcmFtZSk6CisgICAgICAgICIiIkRpc3NlY3QgYSBDQU4gZnJhbWUuIiIiCisgICAgICAgIGNhbl9pZCwgY2FuX2RsYywgZGF0YSA9IHN0cnVjdC51bnBhY2soY2xzLmNhbl9mcmFtZV9mbXQsIGZyYW1lKQorICAgICAgICByZXR1cm4gKGNhbl9pZCwgY2FuX2RsYywgZGF0YVs6Y2FuX2RsY10pCisKKyAgICBkZWYgdGVzdFNlbmRGcmFtZShzZWxmKToKKyAgICAgICAgY2YsIGFkZHIgPSBzZWxmLnMucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2YsIGNmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJbMF0sIHNlbGYuaW50ZXJmYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJbMV0sIHNvY2tldC5BRl9DQU4pCisKKyAgICBkZWYgX3Rlc3RTZW5kRnJhbWUoc2VsZik6CisgICAgICAgIHNlbGYuY2YgPSBzZWxmLmJ1aWxkX2Nhbl9mcmFtZSgweDAwLCBiJ1x4MDFceDAyXHgwM1x4MDRceDA1JykKKyAgICAgICAgc2VsZi5jbGkuc2VuZChzZWxmLmNmKQorCisgICAgZGVmIHRlc3RTZW5kTWF4RnJhbWUoc2VsZik6CisgICAgICAgIGNmLCBhZGRyID0gc2VsZi5zLnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNmLCBjZikKKworICAgIGRlZiBfdGVzdFNlbmRNYXhGcmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5jZiA9IHNlbGYuYnVpbGRfY2FuX2ZyYW1lKDB4MDAsIGInXHgwNycgKiA4KQorICAgICAgICBzZWxmLmNsaS5zZW5kKHNlbGYuY2YpCisKKyAgICBkZWYgdGVzdFNlbmRNdWx0aUZyYW1lcyhzZWxmKToKKyAgICAgICAgY2YsIGFkZHIgPSBzZWxmLnMucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2YxLCBjZikKKworICAgICAgICBjZiwgYWRkciA9IHNlbGYucy5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jZjIsIGNmKQorCisgICAgZGVmIF90ZXN0U2VuZE11bHRpRnJhbWVzKHNlbGYpOgorICAgICAgICBzZWxmLmNmMSA9IHNlbGYuYnVpbGRfY2FuX2ZyYW1lKDB4MDcsIGInXHg0NFx4MzNceDIyXHgxMScpCisgICAgICAgIHNlbGYuY2xpLnNlbmQoc2VsZi5jZjEpCisKKyAgICAgICAgc2VsZi5jZjIgPSBzZWxmLmJ1aWxkX2Nhbl9mcmFtZSgweDEyLCBiJ1x4OTlceDIyXHgzMycpCisgICAgICAgIHNlbGYuY2xpLnNlbmQoc2VsZi5jZjIpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfUkRTLCAnUkRTIHNvY2tldHMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgQmFzaWNSRFNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0Q3J1Y2lhbENvbnN0YW50cyhzZWxmKToKKyAgICAgICAgc29ja2V0LkFGX1JEUworICAgICAgICBzb2NrZXQuUEZfUkRTCisKKyAgICBkZWYgdGVzdENyZWF0ZVNvY2tldChzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkgYXMgczoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0U29ja2V0QnVmZmVyU2l6ZShzZWxmKToKKyAgICAgICAgYnVmc2l6ZSA9IDE2Mzg0CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfUkRTLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApIGFzIHM6CisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SQ1ZCVUYsIGJ1ZnNpemUpCisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19TTkRCVUYsIGJ1ZnNpemUpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfUkRTLCAnUkRTIHNvY2tldHMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJEU1Rlc3QoVGhyZWFkZWRSRFNTb2NrZXRUZXN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSdydW5UZXN0Jyk6CisgICAgICAgIFRocmVhZGVkUkRTU29ja2V0VGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLmV2dCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgdGVzdFNlbmRBbmRSZWN2KHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEsIGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGlfYWRkciwgYWRkcikKKworICAgIGRlZiBfdGVzdFNlbmRBbmRSZWN2KHNlbGYpOgorICAgICAgICBzZWxmLmRhdGEgPSBiJ3NwYW0nCisgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RQZWVrKHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSwgc29ja2V0Lk1TR19QRUVLKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YSwgZGF0YSkKKyAgICAgICAgZGF0YSwgYWRkciA9IHNlbGYuc2Vydi5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYXRhLCBkYXRhKQorCisgICAgZGVmIF90ZXN0UGVlayhzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidzcGFtJworICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgJ3JlY3Ztc2cnKQorICAgIGRlZiB0ZXN0U2VuZEFuZFJlY3ZNc2coc2VsZik6CisgICAgICAgIGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkciA9IHNlbGYuc2Vydi5yZWN2bXNnKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEsIGRhdGEpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICdzZW5kbXNnJykKKyAgICBkZWYgX3Rlc3RTZW5kQW5kUmVjdk1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidoZWxsbyAnICogMTAKKyAgICAgICAgc2VsZi5jbGkuc2VuZG1zZyhbc2VsZi5kYXRhXSwgKCksIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RTZW5kQW5kUmVjdk11bHRpKHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGExLCBkYXRhKQorCisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YTIsIGRhdGEpCisKKyAgICBkZWYgX3Rlc3RTZW5kQW5kUmVjdk11bHRpKHNlbGYpOgorICAgICAgICBzZWxmLmRhdGExID0gYidiYWNvbicKKyAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YTEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgICAgIHNlbGYuZGF0YTIgPSBiJ2VnZycKKyAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YTIsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RTZWxlY3Qoc2VsZik6CisgICAgICAgIHIsIHcsIHggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNlcnZdLCBbXSwgW10sIDMuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnNlcnYsIHIpCisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YSwgZGF0YSkKKworICAgIGRlZiBfdGVzdFNlbGVjdChzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidzZWxlY3QnCisgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RDb25nZXN0aW9uKHNlbGYpOgorICAgICAgICAjIHdhaXQgdW50aWwgdGhlIHNlbmRlciBpcyBkb25lCisgICAgICAgIHNlbGYuZXZ0LndhaXQoKQorCisgICAgZGVmIF90ZXN0Q29uZ2VzdGlvbihzZWxmKToKKyAgICAgICAgIyB0ZXN0IHRoZSBiZWhhdmlvciBpbiBjYXNlIG9mIGNvbmdlc3Rpb24KKyAgICAgICAgc2VsZi5kYXRhID0gYidmaWxsJworICAgICAgICBzZWxmLmNsaS5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB0cnkgdG8gbG93ZXIgdGhlIHJlY2VpdmVyJ3Mgc29ja2V0IGJ1ZmZlciBzaXplCisgICAgICAgICAgICBzZWxmLmNsaS5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkNWQlVGLCAxNjM4NCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBmaWxsIHRoZSByZWNlaXZlcidzIHNvY2tldCBidWZmZXIKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgIyBzaWduYWwgdGhlIHJlY2VpdmVyIHdlJ3JlIGRvbmUKKyAgICAgICAgICAgICAgICBzZWxmLmV2dC5zZXQoKQorICAgICAgICAjIHNlbmR0bygpIHNob3VsZCBoYXZlIGZhaWxlZCB3aXRoIEVOT0JVRlMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0JVRlMpCisgICAgICAgICMgYW5kIHdlIHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29uZ2VzdGlvbiBub3RpZmljYXRpb24gdGhyb3VnaCBwb2xsCisgICAgICAgIHIsIHcsIHggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNlcnZdLCBbXSwgW10sIDMuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnNlcnYsIHIpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIEJhc2ljVENQVGVzdChTb2NrZXRDb25uZWN0ZWRUZXN0KToKIApAQCAtOTkzLDYgKzE2MjEsMTg1MiBAQAogICAgIGRlZiBfdGVzdFJlY3ZGcm9tTmVnYXRpdmUoc2VsZik6CiAgICAgICAgIHNlbGYuY2xpLnNlbmR0byhNU0csIDAsIChIT1NULCBzZWxmLnBvcnQpKQogCisjIFRlc3RzIGZvciB0aGUgc2VuZG1zZygpL3JlY3Ztc2coKSBpbnRlcmZhY2UuICBXaGVyZSBwb3NzaWJsZSwgdGhlCisjIHNhbWUgdGVzdCBjb2RlIGlzIHVzZWQgd2l0aCBkaWZmZXJlbnQgZmFtaWxpZXMgYW5kIHR5cGVzIG9mIHNvY2tldAorIyAoZS5nLiBzdHJlYW0sIGRhdGFncmFtKSwgYW5kIHRlc3RzIHVzaW5nIHJlY3Ztc2coKSBhcmUgcmVwZWF0ZWQKKyMgdXNpbmcgcmVjdm1zZ19pbnRvKCkuCisjCisjIFRoZSBnZW5lcmljIHRlc3QgY2xhc3NlcyBzdWNoIGFzIFNlbmRtc2dUZXN0cyBhbmQKKyMgUmVjdm1zZ0dlbmVyaWNUZXN0cyBpbmhlcml0IGZyb20gU2VuZHJlY3Ztc2dCYXNlIGFuZCBleHBlY3QgdG8gYmUKKyMgc3VwcGxpZWQgd2l0aCBzb2NrZXRzIGNsaV9zb2NrIGFuZCBzZXJ2X3NvY2sgcmVwcmVzZW50aW5nIHRoZQorIyBjbGllbnQncyBhbmQgdGhlIHNlcnZlcidzIGVuZCBvZiB0aGUgY29ubmVjdGlvbiByZXNwZWN0aXZlbHksIGFuZAorIyBhdHRyaWJ1dGVzIGNsaV9hZGRyIGFuZCBzZXJ2X2FkZHIgaG9sZGluZyB0aGVpciAobnVtZXJpYyB3aGVyZQorIyBhcHByb3ByaWF0ZSkgYWRkcmVzc2VzLgorIworIyBUaGUgZmluYWwgY29uY3JldGUgdGVzdCBjbGFzc2VzIGNvbWJpbmUgdGhlc2Ugd2l0aCBzdWJjbGFzc2VzIG9mCisjIFNvY2tldFRlc3RCYXNlIHdoaWNoIHNldCB1cCBjbGllbnQgYW5kIHNlcnZlciBzb2NrZXRzIG9mIGEgc3BlY2lmaWMKKyMgdHlwZSwgYW5kIHdpdGggc3ViY2xhc3NlcyBvZiBTZW5kcmVjdm1zZ0Jhc2Ugc3VjaCBhcworIyBTZW5kcmVjdm1zZ0RncmFtQmFzZSBhbmQgU2VuZHJlY3Ztc2dDb25uZWN0ZWRCYXNlIHdoaWNoIG1hcCB0aGVzZQorIyBzb2NrZXRzIHRvIGNsaV9zb2NrIGFuZCBzZXJ2X3NvY2sgYW5kIG92ZXJyaWRlIHRoZSBtZXRob2RzIGFuZAorIyBhdHRyaWJ1dGVzIG9mIFNlbmRyZWN2bXNnQmFzZSB0byBmaWxsIGluIGRlc3RpbmF0aW9uIGFkZHJlc3NlcyBpZgorIyBuZWVkZWQgd2hlbiBzZW5kaW5nLCBjaGVjayBmb3Igc3BlY2lmaWMgZmxhZ3MgaW4gbXNnX2ZsYWdzLCBldGMuCisjCisjIFJlY3Ztc2dJbnRvTWl4aW4gcHJvdmlkZXMgYSB2ZXJzaW9uIG9mIGRvUmVjdm1zZygpIGltcGxlbWVudGVkIHVzaW5nCisjIHJlY3Ztc2dfaW50bygpLgorCisjIFhYWDogbGlrZSB0aGUgb3RoZXIgZGF0YWdyYW0gKFVEUCkgdGVzdHMgaW4gdGhpcyBtb2R1bGUsIHRoZSBjb2RlCisjIGhlcmUgYXNzdW1lcyB0aGF0IGRhdGFncmFtIGRlbGl2ZXJ5IG9uIHRoZSBsb2NhbCBtYWNoaW5lIHdpbGwgYmUKKyMgcmVsaWFibGUuCisKK2NsYXNzIFNlbmRyZWN2bXNnQmFzZShUaHJlYWRTYWZlQ2xlYW51cFRlc3RDYXNlKToKKyAgICAjIEJhc2UgY2xhc3MgZm9yIHNlbmRtc2coKS9yZWN2bXNnKCkgdGVzdHMuCisKKyAgICAjIFRpbWUgaW4gc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBjb25zaWRlcmluZyBhIHRlc3QgZmFpbGVkLCBvcgorICAgICMgTm9uZSBmb3Igbm8gdGltZW91dC4gIE5vdCBhbGwgdGVzdHMgYWN0dWFsbHkgc2V0IGEgdGltZW91dC4KKyAgICBmYWlsX3RpbWVvdXQgPSAzLjAKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50ID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisKKyAgICBkZWYgc2VuZFRvU2VydmVyKHNlbGYsIG1zZyk6CisgICAgICAgICMgU2VuZCBtc2cgdG8gdGhlIHNlcnZlci4KKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpX3NvY2suc2VuZChtc2cpCisKKyAgICAjIFR1cGxlIG9mIGFsdGVybmF0aXZlIGRlZmF1bHQgYXJndW1lbnRzIGZvciBzZW5kbXNnKCkgd2hlbiBjYWxsZWQKKyAgICAjIHZpYSBzZW5kbXNnVG9TZXJ2ZXIoKSAoZS5nLiB0byBpbmNsdWRlIGEgZGVzdGluYXRpb24gYWRkcmVzcykuCisgICAgc2VuZG1zZ190b19zZXJ2ZXJfZGVmYXVsdHMgPSAoKQorCisgICAgZGVmIHNlbmRtc2dUb1NlcnZlcihzZWxmLCAqYXJncyk6CisgICAgICAgICMgQ2FsbCBzZW5kbXNnKCkgb24gc2VsZi5jbGlfc29jayB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMsCisgICAgICAgICMgZmlsbGluZyBpbiBhbnkgYXJndW1lbnRzIHdoaWNoIGFyZSBub3Qgc3VwcGxpZWQgd2l0aCB0aGUKKyAgICAgICAgIyBjb3JyZXNwb25kaW5nIGl0ZW1zIG9mIHNlbGYuc2VuZG1zZ190b19zZXJ2ZXJfZGVmYXVsdHMsIGlmCisgICAgICAgICMgYW55LgorICAgICAgICByZXR1cm4gc2VsZi5jbGlfc29jay5zZW5kbXNnKAorICAgICAgICAgICAgKihhcmdzICsgc2VsZi5zZW5kbXNnX3RvX3NlcnZlcl9kZWZhdWx0c1tsZW4oYXJncyk6XSkpCisKKyAgICBkZWYgZG9SZWN2bXNnKHNlbGYsIHNvY2ssIGJ1ZnNpemUsICphcmdzKToKKyAgICAgICAgIyBDYWxsIHJlY3Ztc2coKSBvbiBzb2NrIHdpdGggZ2l2ZW4gYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzCisgICAgICAgICMgcmVzdWx0LiAgU2hvdWxkIGJlIHVzZWQgZm9yIHRlc3RzIHdoaWNoIGNhbiB1c2UgZWl0aGVyCisgICAgICAgICMgcmVjdm1zZygpIG9yIHJlY3Ztc2dfaW50bygpIC0gUmVjdm1zZ0ludG9NaXhpbiBvdmVycmlkZXMKKyAgICAgICAgIyB0aGlzIG1ldGhvZCB3aXRoIG9uZSB3aGljaCBlbXVsYXRlcyBpdCB1c2luZyByZWN2bXNnX2ludG8oKSwKKyAgICAgICAgIyB0aHVzIGFsbG93aW5nIHRoZSBzYW1lIHRlc3QgdG8gYmUgdXNlZCBmb3IgYm90aCBtZXRob2RzLgorICAgICAgICByZXN1bHQgPSBzb2NrLnJlY3Ztc2coYnVmc2l6ZSwgKmFyZ3MpCisgICAgICAgIHNlbGYucmVnaXN0ZXJSZWN2bXNnUmVzdWx0KHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHJlZ2lzdGVyUmVjdm1zZ1Jlc3VsdChzZWxmLCByZXN1bHQpOgorICAgICAgICAjIENhbGxlZCBieSBkb1JlY3Ztc2coKSB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgcmVjdm1zZygpIG9yCisgICAgICAgICMgcmVjdm1zZ19pbnRvKCkuICBDYW4gYmUgb3ZlcnJpZGRlbiB0byBhcnJhbmdlIGNsZWFudXAgYmFzZWQKKyAgICAgICAgIyBvbiB0aGUgcmV0dXJuZWQgYW5jaWxsYXJ5IGRhdGEsIGZvciBpbnN0YW5jZS4KKyAgICAgICAgcGFzcworCisgICAgZGVmIGNoZWNrUmVjdm1zZ0FkZHJlc3Moc2VsZiwgYWRkcjEsIGFkZHIyKToKKyAgICAgICAgIyBDYWxsZWQgdG8gY29tcGFyZSB0aGUgcmVjZWl2ZWQgYWRkcmVzcyB3aXRoIHRoZSBhZGRyZXNzIG9mCisgICAgICAgICMgdGhlIHBlZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcjEsIGFkZHIyKQorCisgICAgIyBGbGFncyB0aGF0IGFyZSBub3JtYWxseSB1bnNldCBpbiBtc2dfZmxhZ3MKKyAgICBtc2dfZmxhZ3NfY29tbW9uX3Vuc2V0ID0gMAorICAgIGZvciBuYW1lIGluICgiTVNHX0NUUlVOQyIsICJNU0dfT09CIik6CisgICAgICAgIG1zZ19mbGFnc19jb21tb25fdW5zZXQgfD0gZ2V0YXR0cihzb2NrZXQsIG5hbWUsIDApCisKKyAgICAjIEZsYWdzIHRoYXQgYXJlIG5vcm1hbGx5IHNldAorICAgIG1zZ19mbGFnc19jb21tb25fc2V0ID0gMAorCisgICAgIyBGbGFncyBzZXQgd2hlbiBhIGNvbXBsZXRlIHJlY29yZCBoYXMgYmVlbiByZWNlaXZlZCAoZS5nLiBNU0dfRU9SCisgICAgIyBmb3IgU0NUUCkKKyAgICBtc2dfZmxhZ3NfZW9yX2luZGljYXRvciA9IDAKKworICAgICMgRmxhZ3Mgc2V0IHdoZW4gYSBjb21wbGV0ZSByZWNvcmQgaGFzIG5vdCBiZWVuIHJlY2VpdmVkCisgICAgIyAoZS5nLiBNU0dfVFJVTkMgZm9yIGRhdGFncmFtIHNvY2tldHMpCisgICAgbXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yID0gMAorCisgICAgZGVmIGNoZWNrRmxhZ3Moc2VsZiwgZmxhZ3MsIGVvcj1Ob25lLCBjaGVja3NldD0wLCBjaGVja3Vuc2V0PTAsIGlnbm9yZT0wKToKKyAgICAgICAgIyBNZXRob2QgdG8gY2hlY2sgdGhlIHZhbHVlIG9mIG1zZ19mbGFncyByZXR1cm5lZCBieSByZWN2bXNnW19pbnRvXSgpLgorICAgICAgICAjCisgICAgICAgICMgQ2hlY2tzIHRoYXQgYWxsIGJpdHMgaW4gbXNnX2ZsYWdzX2NvbW1vbl9zZXQgYXR0cmlidXRlIGFyZQorICAgICAgICAjIHNldCBpbiAiZmxhZ3MiIGFuZCBhbGwgYml0cyBpbiBtc2dfZmxhZ3NfY29tbW9uX3Vuc2V0IGFyZQorICAgICAgICAjIHVuc2V0LgorICAgICAgICAjCisgICAgICAgICMgVGhlICJlb3IiIGFyZ3VtZW50IHNwZWNpZmllcyB3aGV0aGVyIHRoZSBmbGFncyBzaG91bGQKKyAgICAgICAgIyBpbmRpY2F0ZSB0aGF0IGEgZnVsbCByZWNvcmQgKG9yIGRhdGFncmFtKSBoYXMgYmVlbiByZWNlaXZlZC4KKyAgICAgICAgIyBJZiAiZW9yIiBpcyBOb25lLCBubyBjaGVja3MgYXJlIGRvbmU7IG90aGVyd2lzZSwgY2hlY2tzCisgICAgICAgICMgdGhhdDoKKyAgICAgICAgIworICAgICAgICAjICAqIGlmICJlb3IiIGlzIHRydWUsIGFsbCBiaXRzIGluIG1zZ19mbGFnc19lb3JfaW5kaWNhdG9yIGFyZQorICAgICAgICAjICAgIHNldCBhbmQgYWxsIGJpdHMgaW4gbXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yIGFyZSB1bnNldAorICAgICAgICAjCisgICAgICAgICMgICogaWYgImVvciIgaXMgZmFsc2UsIGFsbCBiaXRzIGluIG1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvcgorICAgICAgICAjICAgIGFyZSBzZXQgYW5kIGFsbCBiaXRzIGluIG1zZ19mbGFnc19lb3JfaW5kaWNhdG9yIGFyZSB1bnNldAorICAgICAgICAjCisgICAgICAgICMgSWYgImNoZWNrc2V0IiBhbmQvb3IgImNoZWNrdW5zZXQiIGFyZSBzdXBwbGllZCwgdGhleSByZXF1aXJlCisgICAgICAgICMgdGhlIGdpdmVuIGJpdHMgdG8gYmUgc2V0IG9yIHVuc2V0IHJlc3BlY3RpdmVseSwgb3ZlcnJpZGluZworICAgICAgICAjIHdoYXQgdGhlIGF0dHJpYnV0ZXMgcmVxdWlyZSBmb3IgdGhvc2UgYml0cy4KKyAgICAgICAgIworICAgICAgICAjIElmIGFueSBiaXRzIGFyZSBzZXQgaW4gImlnbm9yZSIsIHRoZXkgd2lsbCBub3QgYmUgY2hlY2tlZCwKKyAgICAgICAgIyByZWdhcmRsZXNzIG9mIHRoZSBvdGhlciBpbnB1dHMuCisgICAgICAgICMKKyAgICAgICAgIyBXaWxsIHJhaXNlIEV4Y2VwdGlvbiBpZiB0aGUgaW5wdXRzIHJlcXVpcmUgYSBiaXQgdG8gYmUgYm90aAorICAgICAgICAjIHNldCBhbmQgdW5zZXQsIGFuZCBpdCBpcyBub3QgaWdub3JlZC4KKworICAgICAgICBkZWZhdWx0c2V0ID0gc2VsZi5tc2dfZmxhZ3NfY29tbW9uX3NldAorICAgICAgICBkZWZhdWx0dW5zZXQgPSBzZWxmLm1zZ19mbGFnc19jb21tb25fdW5zZXQKKworICAgICAgICBpZiBlb3I6CisgICAgICAgICAgICBkZWZhdWx0c2V0IHw9IHNlbGYubXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3IKKyAgICAgICAgICAgIGRlZmF1bHR1bnNldCB8PSBzZWxmLm1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvcgorICAgICAgICBlbGlmIGVvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRlZmF1bHRzZXQgfD0gc2VsZi5tc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3IKKyAgICAgICAgICAgIGRlZmF1bHR1bnNldCB8PSBzZWxmLm1zZ19mbGFnc19lb3JfaW5kaWNhdG9yCisKKyAgICAgICAgIyBGdW5jdGlvbiBhcmd1bWVudHMgb3ZlcnJpZGUgZGVmYXVsdHMKKyAgICAgICAgZGVmYXVsdHNldCAmPSB+Y2hlY2t1bnNldAorICAgICAgICBkZWZhdWx0dW5zZXQgJj0gfmNoZWNrc2V0CisKKyAgICAgICAgIyBNZXJnZSBhcmd1bWVudHMgd2l0aCByZW1haW5pbmcgZGVmYXVsdHMsIGFuZCBjaGVjayBmb3IgY29uZmxpY3RzCisgICAgICAgIGNoZWNrc2V0IHw9IGRlZmF1bHRzZXQKKyAgICAgICAgY2hlY2t1bnNldCB8PSBkZWZhdWx0dW5zZXQKKyAgICAgICAgaW5ib3RoID0gY2hlY2tzZXQgJiBjaGVja3Vuc2V0ICYgfmlnbm9yZQorICAgICAgICBpZiBpbmJvdGg6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImNvbnRyYWRpY3Rvcnkgc2V0LCB1bnNldCByZXF1aXJlbWVudHMgZm9yIGZsYWdzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiezA6I3h9Ii5mb3JtYXQoaW5ib3RoKSkKKworICAgICAgICAjIENvbXBhcmUgd2l0aCBnaXZlbiBtc2dfZmxhZ3MgdmFsdWUKKyAgICAgICAgbWFzayA9IChjaGVja3NldCB8IGNoZWNrdW5zZXQpICYgfmlnbm9yZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWdzICYgbWFzaywgY2hlY2tzZXQgJiBtYXNrKQorCisKK2NsYXNzIFJlY3Ztc2dJbnRvTWl4aW4oU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIE1peGluIHRvIGltcGxlbWVudCBkb1JlY3Ztc2coKSB1c2luZyByZWN2bXNnX2ludG8oKS4KKworICAgIGRlZiBkb1JlY3Ztc2coc2VsZiwgc29jaywgYnVmc2l6ZSwgKmFyZ3MpOgorICAgICAgICBidWYgPSBieXRlYXJyYXkoYnVmc2l6ZSkKKyAgICAgICAgcmVzdWx0ID0gc29jay5yZWN2bXNnX2ludG8oW2J1Zl0sICphcmdzKQorICAgICAgICBzZWxmLnJlZ2lzdGVyUmVjdm1zZ1Jlc3VsdChyZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHJlc3VsdFswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwocmVzdWx0WzBdLCBidWZzaXplKQorICAgICAgICByZXR1cm4gKGJ5dGVzKGJ1Zls6cmVzdWx0WzBdXSksKSArIHJlc3VsdFsxOl0KKworCitjbGFzcyBTZW5kcmVjdm1zZ0RncmFtRmxhZ3NCYXNlKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBEZWZpbmVzIGZsYWdzIHRvIGJlIGNoZWNrZWQgaW4gbXNnX2ZsYWdzIGZvciBkYXRhZ3JhbSBzb2NrZXRzLgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkubXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yIHwgc29ja2V0Lk1TR19UUlVOQworCisKK2NsYXNzIFNlbmRyZWN2bXNnU0NUUEZsYWdzQmFzZShTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgRGVmaW5lcyBmbGFncyB0byBiZSBjaGVja2VkIGluIG1zZ19mbGFncyBmb3IgU0NUUCBzb2NrZXRzLgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1zZ19mbGFnc19lb3JfaW5kaWNhdG9yKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS5tc2dfZmxhZ3NfZW9yX2luZGljYXRvciB8IHNvY2tldC5NU0dfRU9SCisKKworY2xhc3MgU2VuZHJlY3Ztc2dDb25uZWN0aW9ubGVzc0Jhc2UoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIEJhc2UgY2xhc3MgZm9yIHRlc3RzIG9uIGNvbm5lY3Rpb25sZXNzLW1vZGUgc29ja2V0cy4gIFVzZXJzIG11c3QKKyAgICAjIHN1cHBseSBzb2NrZXRzIG9uIGF0dHJpYnV0ZXMgY2xpIGFuZCBzZXJ2IHRvIGJlIG1hcHBlZCB0bworICAgICMgY2xpX3NvY2sgYW5kIHNlcnZfc29jayByZXNwZWN0aXZlbHkuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vydl9zb2NrKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xpX3NvY2soc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNsaQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlbmRtc2dfdG9fc2VydmVyX2RlZmF1bHRzKHNlbGYpOgorICAgICAgICByZXR1cm4gKFtdLCBbXSwgMCwgc2VsZi5zZXJ2X2FkZHIpCisKKyAgICBkZWYgc2VuZFRvU2VydmVyKHNlbGYsIG1zZyk6CisgICAgICAgIHJldHVybiBzZWxmLmNsaV9zb2NrLnNlbmR0byhtc2csIHNlbGYuc2Vydl9hZGRyKQorCisKK2NsYXNzIFNlbmRyZWN2bXNnQ29ubmVjdGVkQmFzZShTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgQmFzZSBjbGFzcyBmb3IgdGVzdHMgb24gY29ubmVjdGVkIHNvY2tldHMuICBVc2VycyBtdXN0IHN1cHBseQorICAgICMgc29ja2V0cyBvbiBhdHRyaWJ1dGVzIHNlcnZfY29ubiBhbmQgY2xpX2Nvbm4gKHJlcHJlc2VudGluZyB0aGUKKyAgICAjIGNvbm5lY3Rpb25zICp0byogdGhlIHNlcnZlciBhbmQgdGhlIGNsaWVudCksIHRvIGJlIG1hcHBlZCB0bworICAgICMgY2xpX3NvY2sgYW5kIHNlcnZfc29jayByZXNwZWN0aXZlbHkuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vydl9zb2NrKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jbGlfY29ubgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNsaV9zb2NrKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2X2Nvbm4KKworICAgIGRlZiBjaGVja1JlY3Ztc2dBZGRyZXNzKHNlbGYsIGFkZHIxLCBhZGRyMik6CisgICAgICAgICMgQWRkcmVzcyBpcyBjdXJyZW50bHkgInVuc3BlY2lmaWVkIiBmb3IgYSBjb25uZWN0ZWQgc29ja2V0LAorICAgICAgICAjIHNvIHdlIGRvbid0IGV4YW1pbmUgaXQKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFNlbmRyZWN2bXNnU2VydmVyVGltZW91dEJhc2UoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIEJhc2UgY2xhc3MgdG8gc2V0IGEgdGltZW91dCBvbiBzZXJ2ZXIncyBzb2NrZXQuCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXR0aW1lb3V0KHNlbGYuZmFpbF90aW1lb3V0KQorCisKK2NsYXNzIFNlbmRtc2dUZXN0cyhTZW5kcmVjdm1zZ1NlcnZlclRpbWVvdXRCYXNlKToKKyAgICAjIFRlc3RzIGZvciBzZW5kbXNnKCkgd2hpY2ggY2FuIHVzZSBhbnkgc29ja2V0IHR5cGUgYW5kIGRvIG5vdAorICAgICMgaW52b2x2ZSByZWN2bXNnKCkgb3IgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgdGVzdFNlbmRtc2coc2VsZik6CisgICAgICAgICMgU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHdpdGggc2VuZG1zZygpLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddKSwgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dEYXRhR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAjIFNlbmQgZnJvbSBidWZmZXIgb2J0YWluZWQgZnJvbSBhIGdlbmVyYXRvciAobm90IGEgc2VxdWVuY2UpLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnRGF0YUdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcigobyBmb3IgbyBpbiBbTVNHXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnQW5jaWxsYXJ5R2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAjIEdhdGhlciAoZW1wdHkpIGFuY2lsbGFyeSBkYXRhIGZyb20gYSBnZW5lcmF0b3IuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdihsZW4oTVNHKSksIE1TRykKKworICAgIGRlZiBfdGVzdFNlbmRtc2dBbmNpbGxhcnlHZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sIChvIGZvciBvIGluIFtdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dBcnJheShzZWxmKToKKyAgICAgICAgIyBTZW5kIGRhdGEgZnJvbSBhbiBhcnJheSBpbnN0ZWFkIG9mIHRoZSB1c3VhbCBieXRlcyBvYmplY3QuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdihsZW4oTVNHKSksIE1TRykKKworICAgIGRlZiBfdGVzdFNlbmRtc2dBcnJheShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcihbYXJyYXkuYXJyYXkoIkIiLCBNU0cpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dHYXRoZXIoc2VsZik6CisgICAgICAgICMgU2VuZCBtZXNzYWdlIGRhdGEgZnJvbSBtb3JlIHRoYW4gb25lIGJ1ZmZlciAoZ2F0aGVyIHdyaXRlKS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0dhdGhlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHWzozXSwgTVNHWzM6XV0pLCBsZW4oTVNHKSkKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0JhZEFyZ3Moc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBzZW5kbXNnKCkgcmVqZWN0cyBpbnZhbGlkIGFyZ3VtZW50cy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDEwMDApLCBiImRvbmUiKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0JhZEFyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5jbGlfc29jay5zZW5kbXNnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBiIm5vdCBpbiBhbiBpdGVyYWJsZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbb2JqZWN0KCldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHLCBvYmplY3QoKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFtdLCBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFtdLCAwLCBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoYiJkb25lIikKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0JhZENtc2coc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBpbnZhbGlkIGFuY2lsbGFyeSBkYXRhIGl0ZW1zIGFyZSByZWplY3RlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDEwMDApLCBiImRvbmUiKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0JhZENtc2coc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbb2JqZWN0KCldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWyhvYmplY3QoKSwgMCwgYiJkYXRhIildKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWygwLCBvYmplY3QoKSwgYiJkYXRhIildKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWygwLCAwLCBvYmplY3QoKSldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWygwLCAwKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbKDAsIDAsIGIiZGF0YSIsIDQyKV0pCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiZG9uZSIpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0U2VuZG1zZ0JhZE11bHRpQ21zZyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGludmFsaWQgYW5jaWxsYXJ5IGRhdGEgaXRlbXMgYXJlIHJlamVjdGVkIHdoZW4KKyAgICAgICAgIyBtb3JlIHRoYW4gb25lIGl0ZW0gaXMgcHJlc2VudC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDEwMDApLCBiImRvbmUiKQorCisgICAgQHRlc3RTZW5kbXNnQmFkTXVsdGlDbXNnLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2VuZG1zZ0JhZE11bHRpQ21zZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFswLCAwLCBiIiJdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWygwLCAwLCBiIiIpLCBvYmplY3QoKV0pCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiZG9uZSIpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dFeGNlc3NDbXNnUmVqZWN0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgc2VuZG1zZygpIHJlamVjdHMgZXhjZXNzIGFuY2lsbGFyeSBkYXRhIGl0ZW1zCisgICAgICAgICMgd2hlbiB0aGUgbnVtYmVyIHRoYXQgY2FuIGJlIHNlbnQgaXMgbGltaXRlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDEwMDApLCBiImRvbmUiKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0V4Y2Vzc0Ntc2dSZWplY3Qoc2VsZik6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNvY2tldCwgIkNNU0dfU1BBQ0UiKToKKyAgICAgICAgICAgICMgQ2FuIG9ubHkgc2VuZCBvbmUgaXRlbQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCBbKDAsIDAsIGIiIiksICgwLCAwLCBiIiIpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNtLmV4Y2VwdGlvbi5lcnJubykKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoYiJkb25lIikKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0FmdGVyQ2xvc2Uoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBzZW5kbXNnKCkgZmFpbHMgb24gYSBjbG9zZWQgc29ja2V0LgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnQWZ0ZXJDbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5jbGlfc29jay5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsIFtNU0ddKQorCisKK2NsYXNzIFNlbmRtc2dTdHJlYW1UZXN0cyhTZW5kbXNnVGVzdHMpOgorICAgICMgVGVzdHMgZm9yIHNlbmRtc2coKSB3aGljaCByZXF1aXJlIGEgc3RyZWFtIHNvY2tldCBhbmQgZG8gbm90CisgICAgIyBpbnZvbHZlIHJlY3Ztc2coKSBvciByZWN2bXNnX2ludG8oKS4KKworICAgIGRlZiB0ZXN0U2VuZG1zZ0V4cGxpY2l0Tm9uZUFkZHIoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBwZWVyIGFkZHJlc3MgY2FuIGJlIHNwZWNpZmllZCBhcyBOb25lLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnRXhwbGljaXROb25lQWRkcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwgW10sIDAsIE5vbmUpLCBsZW4oTVNHKSkKKworICAgIGRlZiB0ZXN0U2VuZG1zZ1RpbWVvdXQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aW1lb3V0IHdvcmtzIHdpdGggc2VuZG1zZygpLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YoNTEyKSwgYiJhIio1MTIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKworICAgIGRlZiBfdGVzdFNlbmRtc2dUaW1lb3V0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNsaV9zb2NrLnNldHRpbWVvdXQoMC4wMykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LnRpbWVvdXQpOgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtiImEiKjUxMl0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKworICAgICMgWFhYOiB3b3VsZCBiZSBuaWNlIHRvIGhhdmUgbW9yZSB0ZXN0cyBmb3Igc2VuZG1zZyBmbGFncyBhcmd1bWVudC4KKworICAgICMgTGludXggc3VwcG9ydHMgTVNHX0RPTlRXQUlUIHdoZW4gc2VuZGluZywgYnV0IGluIGdlbmVyYWwsIGl0CisgICAgIyBvbmx5IHdvcmtzIHdoZW4gcmVjZWl2aW5nLiAgQ291bGQgYWRkIG90aGVyIHBsYXRmb3JtcyBpZiB0aGV5CisgICAgIyBzdXBwb3J0IGl0IHRvby4KKyAgICBAc2tpcFdpdGhDbGllbnRJZihzeXMucGxhdGZvcm0gbm90IGluIHsibGludXgyIn0sCisgICAgICAgICAgICAgICAgICAgICAgIk1TR19ET05UV0FJVCBub3Qga25vd24gdG8gd29yayBvbiB0aGlzIHBsYXRmb3JtIHdoZW4gIgorICAgICAgICAgICAgICAgICAgICAgICJzZW5kaW5nIikKKyAgICBkZWYgdGVzdFNlbmRtc2dEb250V2FpdChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IE1TR19ET05UV0FJVCBpbiBmbGFncyBjYXVzZXMgbm9uLWJsb2NraW5nIGJlaGF2aW91ci4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDUxMiksIGIiYSIqNTEyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisKKyAgICBAdGVzdFNlbmRtc2dEb250V2FpdC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlbmRtc2dEb250V2FpdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtiImEiKjUxMl0sIFtdLCBzb2NrZXQuTVNHX0RPTlRXQUlUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihjbS5leGNlcHRpb24uZXJybm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJuby5FQUdBSU4sIGVycm5vLkVXT1VMREJMT0NLKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorCisKK2NsYXNzIFNlbmRtc2dDb25uZWN0aW9ubGVzc1Rlc3RzKFNlbmRtc2dUZXN0cyk6CisgICAgIyBUZXN0cyBmb3Igc2VuZG1zZygpIHdoaWNoIHJlcXVpcmUgYSBjb25uZWN0aW9ubGVzcy1tb2RlCisgICAgIyAoZS5nLiBkYXRhZ3JhbSkgc29ja2V0LCBhbmQgZG8gbm90IGludm9sdmUgcmVjdm1zZygpIG9yCisgICAgIyByZWN2bXNnX2ludG8oKS4KKworICAgIGRlZiB0ZXN0U2VuZG1zZ05vRGVzdEFkZHIoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBzZW5kbXNnKCkgZmFpbHMgd2hlbiBubyBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzCisgICAgICAgICMgZ2l2ZW4gZm9yIHVuY29ubmVjdGVkIHNvY2tldC4KKyAgICAgICAgcGFzcworCisgICAgZGVmIF90ZXN0U2VuZG1zZ05vRGVzdEFkZHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc2VsZi5jbGlfc29jay5zZW5kbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzZWxmLmNsaV9zb2NrLnNlbmRtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbXSwgMCwgTm9uZSkKKworCitjbGFzcyBSZWN2bXNnR2VuZXJpY1Rlc3RzKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBUZXN0cyBmb3IgcmVjdm1zZygpIHdoaWNoIGNhbiBhbHNvIGJlIGVtdWxhdGVkIHVzaW5nCisgICAgIyByZWN2bXNnX2ludG8oKSwgYW5kIGNhbiB1c2UgYW55IHNvY2tldCB0eXBlLgorCisgICAgZGVmIHRlc3RSZWN2bXNnKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgYSBzaW1wbGUgbWVzc2FnZSB3aXRoIHJlY3Ztc2dbX2ludG9dKCkuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnRXhwbGljaXREZWZhdWx0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY3Ztc2dbX2ludG9dKCkgd2l0aCBkZWZhdWx0IGFyZ3VtZW50cyBwcm92aWRlZCBleHBsaWNpdGx5LgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnRXhwbGljaXREZWZhdWx0cyhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnU2hvcnRlcihzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGEgbWVzc2FnZSBzbWFsbGVyIHRoYW4gYnVmZmVyLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSArIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dTaG9ydGVyKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICAjIEZyZWVCU0QgPCA4IGRvZXNuJ3QgYWx3YXlzIHNldCB0aGUgTVNHX1RSVU5DIGZsYWcgd2hlbiBhIHRydW5jYXRlZAorICAgICMgZGF0YWdyYW0gaXMgcmVjZWl2ZWQgKGlzc3VlICMxMzAwMSkuCisgICAgQHN1cHBvcnQucmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKDgpCisgICAgZGVmIHRlc3RSZWN2bXNnVHJ1bmMoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBwYXJ0IG9mIG1lc3NhZ2UsIGNoZWNrIGZvciB0cnVuY2F0aW9uIGluZGljYXRvcnMuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpIC0gMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TR1s6LTNdKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9RmFsc2UpCisKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oOCkKKyAgICBkZWYgX3Rlc3RSZWN2bXNnVHJ1bmMoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ1Nob3J0QW5jaWxsYXJ5QnVmKHNlbGYpOgorICAgICAgICAjIFRlc3QgYW5jaWxsYXJ5IGRhdGEgYnVmZmVyIHRvbyBzbWFsbCB0byBob2xkIGFueSBhbmNpbGxhcnkgZGF0YS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ1Nob3J0QW5jaWxsYXJ5QnVmKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dMb25nQW5jaWxsYXJ5QnVmKHNlbGYpOgorICAgICAgICAjIFRlc3QgbGFyZ2UgYW5jaWxsYXJ5IGRhdGEgYnVmZmVyLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMTAyNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0xvbmdBbmNpbGxhcnlCdWYoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0FmdGVyQ2xvc2Uoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCByZWN2bXNnW19pbnRvXSgpIGZhaWxzIG9uIGEgY2xvc2VkIHNvY2tldC4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuZG9SZWN2bXNnLCBzZWxmLnNlcnZfc29jaywgMTAyNCkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dBZnRlckNsb3NlKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dUaW1lb3V0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGltZW91dCB3b3Jrcy4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0dGltZW91dCgwLjAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvUmVjdm1zZywgc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJNU0dfUEVFSyIpCisgICAgZGVmIHRlc3RSZWN2bXNnUGVlayhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IE1TR19QRUVLIGluIGZsYWdzIGVuYWJsZXMgZXhhbWluYXRpb24gb2YgcGVuZGluZworICAgICAgICAjIGRhdGEgd2l0aG91dCBjb25zdW1pbmcgaXQuCisKKyAgICAgICAgIyBSZWNlaXZlIHBhcnQgb2YgZGF0YSB3aXRoIE1TR19QRUVLLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSAtIDMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuTVNHX1BFRUspCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0dbOi0zXSkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgICMgSWdub3JpbmcgTVNHX1RSVU5DIGhlcmUgKHNvIHRoaXMgdGVzdCBpcyB0aGUgc2FtZSBmb3Igc3RyZWFtCisgICAgICAgICMgYW5kIGRhdGFncmFtIHNvY2tldHMpLiAgU29tZSB3b3JkaW5nIGluIFBPU0lYIHNlZW1zIHRvCisgICAgICAgICMgc3VnZ2VzdCB0aGF0IGl0IG5lZWRuJ3QgYmUgc2V0IHdoZW4gcGVla2luZywgYnV0IHRoYXQgbWF5CisgICAgICAgICMganVzdCBiZSBhIHNsaXAuCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWdldGF0dHIoc29ja2V0LCAiTVNHX1RSVU5DIiwgMCkpCisKKyAgICAgICAgIyBSZWNlaXZlIGFsbCBkYXRhIHdpdGggTVNHX1BFRUsuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0Lk1TR19QRUVLKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHNhbWUgZGF0YSBjYW4gc3RpbGwgYmUgcmVjZWl2ZWQgbm9ybWFsbHkuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgQHRlc3RSZWN2bXNnUGVlay5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFJlY3Ztc2dQZWVrKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKKyAgICBkZWYgdGVzdFJlY3Ztc2dGcm9tU2VuZG1zZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyB3aXRoIHJlY3Ztc2dbX2ludG9dKCkgd2hlbiBtZXNzYWdlIGlzIHNlbnQKKyAgICAgICAgIyB1c2luZyBzZW5kbXNnKCkuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHRpbWVvdXQoc2VsZi5mYWlsX3RpbWVvdXQpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgQHRlc3RSZWN2bXNnRnJvbVNlbmRtc2cuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2bXNnRnJvbVNlbmRtc2coc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR1s6M10sIE1TR1szOl1dKSwgbGVuKE1TRykpCisKKworY2xhc3MgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cyhSZWN2bXNnR2VuZXJpY1Rlc3RzKToKKyAgICAjIFRlc3RzIHdoaWNoIHJlcXVpcmUgYSBzdHJlYW0gc29ja2V0IGFuZCBjYW4gdXNlIGVpdGhlciByZWN2bXNnKCkKKyAgICAjIG9yIHJlY3Ztc2dfaW50bygpLgorCisgICAgZGVmIHRlc3RSZWN2bXNnRU9GKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgZW5kLW9mLXN0cmVhbSBpbmRpY2F0b3IgKGIiIiwgcGVlciBzb2NrZXQgY2xvc2VkKS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCAxMDI0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgYiIiKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9Tm9uZSkgIyBNaWdodCBub3QgaGF2ZSBlbmQtb2YtcmVjb3JkIG1hcmtlcgorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0VPRihzZWxmKToKKyAgICAgICAgc2VsZi5jbGlfc29jay5jbG9zZSgpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dPdmVyZmxvdyhzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGEgbWVzc2FnZSBpbiBtb3JlIHRoYW4gb25lIGNodW5rLgorICAgICAgICBzZWcxLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpIC0gMykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPUZhbHNlKQorCisgICAgICAgIHNlZzIsIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIDEwMjQpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgICAgIG1zZyA9IHNlZzEgKyBzZWcyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnT3ZlcmZsb3coc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworCitjbGFzcyBSZWN2bXNnVGVzdHMoUmVjdm1zZ0dlbmVyaWNUZXN0cyk6CisgICAgIyBUZXN0cyBmb3IgcmVjdm1zZygpIHdoaWNoIGNhbiB1c2UgYW55IHNvY2tldCB0eXBlLgorCisgICAgZGVmIHRlc3RSZWN2bXNnQmFkQXJncyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHJlY3Ztc2coKSByZWplY3RzIGludmFsaWQgYXJndW1lbnRzLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgLTEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2J5dGVhcnJheSgxMCldLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCgpLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBvYmplY3QoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMCwgb2JqZWN0KCkpCisKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2cobGVuKE1TRyksIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0JhZEFyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworCitjbGFzcyBSZWN2bXNnSW50b1Rlc3RzKFJlY3Ztc2dJbnRvTWl4aW4sIFJlY3Ztc2dHZW5lcmljVGVzdHMpOgorICAgICMgVGVzdHMgZm9yIHJlY3Ztc2dfaW50bygpIHdoaWNoIGNhbiB1c2UgYW55IHNvY2tldCB0eXBlLgorCisgICAgZGVmIHRlc3RSZWN2bXNnSW50b0JhZEFyZ3Moc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCByZWN2bXNnX2ludG8oKSByZWplY3RzIGludmFsaWQgYXJndW1lbnRzLgorICAgICAgICBidWYgPSBieXRlYXJyYXkobGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbb2JqZWN0KCldLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2IiSSdtIG5vdCB3cml0YWJsZSJdLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1Ziwgb2JqZWN0KCldLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZdLCAtMSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZdLCBvYmplY3QoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZdLCAwLCBvYmplY3QoKSkKKworICAgICAgICBuYnl0ZXMsIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvKFtidWZdLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBieXRlYXJyYXkoTVNHKSkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnSW50b0JhZEFyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0ludG9HZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBpbnRvIGJ1ZmZlciBvYnRhaW5lZCBmcm9tIGEgZ2VuZXJhdG9yIChub3QgYSBzZXF1ZW5jZSkuCisgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShsZW4oTVNHKSkKKyAgICAgICAgbmJ5dGVzLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bygKKyAgICAgICAgICAgIChvIGZvciBvIGluIFtidWZdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KE1TRykpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0ludG9HZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0ludG9BcnJheShzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGludG8gYW4gYXJyYXkgcmF0aGVyIHRoYW4gdGhlIHVzdWFsIGJ5dGVhcnJheS4KKyAgICAgICAgYnVmID0gYXJyYXkuYXJyYXkoIkIiLCBbMF0gKiBsZW4oTVNHKSkKKyAgICAgICAgbmJ5dGVzLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50byhbYnVmXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50b2J5dGVzKCksIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnSW50b0FycmF5KHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dJbnRvU2NhdHRlcihzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGludG8gbXVsdGlwbGUgYnVmZmVycyAoc2NhdHRlciB3cml0ZSkuCisgICAgICAgIGIxID0gYnl0ZWFycmF5KGIiLS0tLSIpCisgICAgICAgIGIyID0gYnl0ZWFycmF5KGIiMDEyMzQ1Njc4OSIpCisgICAgICAgIGIzID0gYnl0ZWFycmF5KGIiLS0tLS0tLS0tLS0tLS0iKQorICAgICAgICBuYnl0ZXMsIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvKAorICAgICAgICAgICAgW2IxLCBtZW1vcnl2aWV3KGIyKVsyOjldLCBiM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4oYiJNYXJ5IGhhZCBhIGxpdHRsZSBsYW1iIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYjEsIGJ5dGVhcnJheShiIk1hcnkiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiMiwgYnl0ZWFycmF5KGIiMDEgaGFkIGEgOSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIzLCBieXRlYXJyYXkoYiJsaXR0bGUgbGFtYi0tLSIpKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dJbnRvU2NhdHRlcihzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoYiJNYXJ5IGhhZCBhIGxpdHRsZSBsYW1iIikKKworCitjbGFzcyBDbXNnTWFjcm9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUZXN0IHRoZSBmdW5jdGlvbnMgQ01TR19MRU4oKSBhbmQgQ01TR19TUEFDRSgpLiAgVGVzdHMKKyAgICAjIGFzc3VtcHRpb25zIHVzZWQgYnkgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpLCB3aGljaCBzaGFyZQorICAgICMgY29kZSB3aXRoIHRoZXNlIGZ1bmN0aW9ucy4KKworICAgICMgTWF0Y2ggdGhlIGRlZmluaXRpb24gaW4gc29ja2V0bW9kdWxlLmMKKyAgICBzb2NrbGVuX3RfbGltaXQgPSBtaW4oMHg3ZmZmZmZmZiwgX3Rlc3RjYXBpLklOVF9NQVgpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfTEVOIikKKyAgICBkZWYgdGVzdENNU0dfTEVOKHNlbGYpOgorICAgICAgICAjIFRlc3QgQ01TR19MRU4oKSB3aXRoIHZhcmlvdXMgdmFsaWQgYW5kIGludmFsaWQgdmFsdWVzLAorICAgICAgICAjIGNoZWNraW5nIHRoZSBhc3N1bXB0aW9ucyB1c2VkIGJ5IHJlY3Ztc2coKSBhbmQgc2VuZG1zZygpLgorICAgICAgICB0b29iaWcgPSBzZWxmLnNvY2tsZW5fdF9saW1pdCAtIHNvY2tldC5DTVNHX0xFTigwKSArIDEKKyAgICAgICAgdmFsdWVzID0gbGlzdChyYW5nZSgyNTcpKSArIGxpc3QocmFuZ2UodG9vYmlnIC0gMjU3LCB0b29iaWcpKQorCisgICAgICAgICMgc3RydWN0IGNtc2doZHIgaGFzIGF0IGxlYXN0IHRocmVlIG1lbWJlcnMsIHR3byBvZiB3aGljaCBhcmUgaW50cworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc29ja2V0LkNNU0dfTEVOKDApLCBhcnJheS5hcnJheSgiaSIpLml0ZW1zaXplICogMikKKyAgICAgICAgZm9yIG4gaW4gdmFsdWVzOgorICAgICAgICAgICAgcmV0ID0gc29ja2V0LkNNU0dfTEVOKG4pCisgICAgICAgICAgICAjIFRoaXMgaXMgaG93IHJlY3Ztc2coKSBjYWxjdWxhdGVzIHRoZSBkYXRhIHNpemUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0IC0gc29ja2V0LkNNU0dfTEVOKDApLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwocmV0LCBzZWxmLnNvY2tsZW5fdF9saW1pdCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzb2NrZXQuQ01TR19MRU4sIC0xKQorICAgICAgICAjIHNlbmRtc2coKSBzaGFyZXMgY29kZSB3aXRoIHRoZXNlIGZ1bmN0aW9ucywgYW5kIHJlcXVpcmVzCisgICAgICAgICMgdGhhdCBpdCByZWplY3QgdmFsdWVzIG92ZXIgdGhlIGxpbWl0LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzb2NrZXQuQ01TR19MRU4sIHRvb2JpZykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfTEVOLCBzeXMubWF4c2l6ZSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICAjIFRlc3QgQ01TR19TUEFDRSgpIHdpdGggdmFyaW91cyB2YWxpZCBhbmQgaW52YWxpZCB2YWx1ZXMsCisgICAgICAgICMgY2hlY2tpbmcgdGhlIGFzc3VtcHRpb25zIHVzZWQgYnkgc2VuZG1zZygpLgorICAgICAgICB0b29iaWcgPSBzZWxmLnNvY2tsZW5fdF9saW1pdCAtIHNvY2tldC5DTVNHX1NQQUNFKDEpICsgMQorICAgICAgICB2YWx1ZXMgPSBsaXN0KHJhbmdlKDI1NykpICsgbGlzdChyYW5nZSh0b29iaWcgLSAyNTcsIHRvb2JpZykpCisKKyAgICAgICAgbGFzdCA9IHNvY2tldC5DTVNHX1NQQUNFKDApCisgICAgICAgICMgc3RydWN0IGNtc2doZHIgaGFzIGF0IGxlYXN0IHRocmVlIG1lbWJlcnMsIHR3byBvZiB3aGljaCBhcmUgaW50cworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGFzdCwgYXJyYXkuYXJyYXkoImkiKS5pdGVtc2l6ZSAqIDIpCisgICAgICAgIGZvciBuIGluIHZhbHVlczoKKyAgICAgICAgICAgIHJldCA9IHNvY2tldC5DTVNHX1NQQUNFKG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXQsIGxhc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXQsIHNvY2tldC5DTVNHX0xFTihuKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHJldCwgbiArIHNvY2tldC5DTVNHX0xFTigwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHJldCwgc2VsZi5zb2NrbGVuX3RfbGltaXQpCisgICAgICAgICAgICBsYXN0ID0gcmV0CisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfU1BBQ0UsIC0xKQorICAgICAgICAjIHNlbmRtc2coKSBzaGFyZXMgY29kZSB3aXRoIHRoZXNlIGZ1bmN0aW9ucywgYW5kIHJlcXVpcmVzCisgICAgICAgICMgdGhhdCBpdCByZWplY3QgdmFsdWVzIG92ZXIgdGhlIGxpbWl0LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzb2NrZXQuQ01TR19TUEFDRSwgdG9vYmlnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzb2NrZXQuQ01TR19TUEFDRSwgc3lzLm1heHNpemUpCisKKworY2xhc3MgU0NNUmlnaHRzVGVzdChTZW5kcmVjdm1zZ1NlcnZlclRpbWVvdXRCYXNlKToKKyAgICAjIFRlc3RzIGZvciBmaWxlIGRlc2NyaXB0b3IgcGFzc2luZyBvbiBVbml4LWRvbWFpbiBzb2NrZXRzLgorCisgICAgIyBJbnZhbGlkIGZpbGUgZGVzY3JpcHRvciB2YWx1ZSB0aGF0J3MgdW5saWtlbHkgdG8gZXZhbHVhdGUgdG8gYQorICAgICMgcmVhbCBGRCBldmVuIGlmIG9uZSBvZiBpdHMgYnl0ZXMgaXMgcmVwbGFjZWQgd2l0aCBhIGRpZmZlcmVudAorICAgICMgdmFsdWUgKHdoaWNoIHNob3VsZG4ndCBhY3R1YWxseSBoYXBwZW4pLgorICAgIGJhZGZkID0gLTB4NTU1NQorCisgICAgZGVmIG5ld0ZEcyhzZWxmLCBuKToKKyAgICAgICAgIyBSZXR1cm4gYSBsaXN0IG9mIG4gZmlsZSBkZXNjcmlwdG9ycyBmb3IgbmV3bHktY3JlYXRlZCBmaWxlcworICAgICAgICAjIGNvbnRhaW5pbmcgdGhlaXIgbGlzdCBpbmRpY2VzIGFzIEFTQ0lJIG51bWJlcnMuCisgICAgICAgIGZkcyA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICAgICAgZmQsIHBhdGggPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy51bmxpbmssIHBhdGgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIGZkKQorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIHN0cihpKS5lbmNvZGUoKSkKKyAgICAgICAgICAgIGZkcy5hcHBlbmQoZmQpCisgICAgICAgIHJldHVybiBmZHMKKworICAgIGRlZiBjaGVja0ZEcyhzZWxmLCBmZHMpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGZpbGUgZGVzY3JpcHRvcnMgaW4gdGhlIGdpdmVuIGxpc3QgY29udGFpbgorICAgICAgICAjIHRoZWlyIGNvcnJlY3QgbGlzdCBpbmRpY2VzIGFzIEFTQ0lJIG51bWJlcnMuCisgICAgICAgIGZvciBuLCBmZCBpbiBlbnVtZXJhdGUoZmRzKToKKyAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZChmZCwgMTAyNCksIHN0cihuKS5lbmNvZGUoKSkKKworICAgIGRlZiByZWdpc3RlclJlY3Ztc2dSZXN1bHQoc2VsZiwgcmVzdWx0KToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuY2xvc2VSZWN2bXNnRkRzLCByZXN1bHQpCisKKyAgICBkZWYgY2xvc2VSZWN2bXNnRkRzKHNlbGYsIHJlY3Ztc2dfcmVzdWx0KToKKyAgICAgICAgIyBDbG9zZSBhbGwgZmlsZSBkZXNjcmlwdG9ycyBzcGVjaWZpZWQgaW4gdGhlIGFuY2lsbGFyeSBkYXRhCisgICAgICAgICMgb2YgdGhlIGdpdmVuIHJldHVybiB2YWx1ZSBmcm9tIHJlY3Ztc2coKSBvciByZWN2bXNnX2ludG8oKS4KKyAgICAgICAgZm9yIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhIGluIHJlY3Ztc2dfcmVzdWx0WzFdOgorICAgICAgICAgICAgaWYgKGNtc2dfbGV2ZWwgPT0gc29ja2V0LlNPTF9TT0NLRVQgYW5kCisgICAgICAgICAgICAgICAgICAgIGNtc2dfdHlwZSA9PSBzb2NrZXQuU0NNX1JJR0hUUyk6CisgICAgICAgICAgICAgICAgZmRzID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICAgICAgICAgIGZkcy5mcm9tYnl0ZXMoY21zZ19kYXRhWzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjbXNnX2RhdGEpIC0gKGxlbihjbXNnX2RhdGEpICUgZmRzLml0ZW1zaXplKV0pCisgICAgICAgICAgICAgICAgZm9yIGZkIGluIGZkczoKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBkZWYgY3JlYXRlQW5kU2VuZEZEcyhzZWxmLCBuKToKKyAgICAgICAgIyBTZW5kIG4gbmV3IGZpbGUgZGVzY3JpcHRvcnMgY3JlYXRlZCBieSBuZXdGRHMoKSB0byB0aGUKKyAgICAgICAgIyBzZXJ2ZXIsIHdpdGggdGhlIGNvbnN0YW50IE1TRyBhcyB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBzZWxmLm5ld0ZEcyhuKSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiBjaGVja1JlY3Ztc2dGRHMoc2VsZiwgbnVtZmRzLCByZXN1bHQsIG1heGNtc2dzPTEsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIENoZWNrIHRoYXQgY29uc3RhbnQgTVNHIHdhcyByZWNlaXZlZCB3aXRoIG51bWZkcyBmaWxlCisgICAgICAgICMgZGVzY3JpcHRvcnMgaW4gYSBtYXhpbXVtIG9mIG1heGNtc2dzIGNvbnRyb2wgbWVzc2FnZXMgKHdoaWNoCisgICAgICAgICMgbXVzdCBjb250YWluIG9ubHkgY29tcGxldGUgaW50ZWdlcnMpLiAgQnkgZGVmYXVsdCwgY2hlY2sKKyAgICAgICAgIyB0aGF0IE1TR19DVFJVTkMgaXMgdW5zZXQsIGJ1dCBpZ25vcmUgYW55IGZsYWdzIGluCisgICAgICAgICMgaWdub3JlZmxhZ3MuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrdW5zZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGFuY2RhdGEsIGxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihhbmNkYXRhKSwgbWF4Y21zZ3MpCisgICAgICAgIGZkcyA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgZm9yIGl0ZW0gaW4gYW5jZGF0YToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpdGVtLCB0dXBsZSkKKyAgICAgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gaXRlbQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuU09MX1NPQ0tFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuU0NNX1JJR0hUUykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjbXNnX2RhdGEsIGJ5dGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY21zZ19kYXRhKSAlIFNJWkVPRl9JTlQsIDApCisgICAgICAgICAgICBmZHMuZnJvbWJ5dGVzKGNtc2dfZGF0YSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmZHMpLCBudW1mZHMpCisgICAgICAgIHNlbGYuY2hlY2tGRHMoZmRzKQorCisgICAgZGVmIHRlc3RGRFBhc3NTaW1wbGUoc2VsZik6CisgICAgICAgICMgUGFzcyBhIHNpbmdsZSBGRCAoYXJyYXkgcmVhZCBmcm9tIGJ5dGVzIG9iamVjdCkuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDEsIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMTAyNDApKQorCisgICAgZGVmIF90ZXN0RkRQYXNzU2ltcGxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoCisgICAgICAgICAgICAgICAgW01TR10sCisgICAgICAgICAgICAgICAgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBzZWxmLm5ld0ZEcygxKSkudG9ieXRlcygpKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdE11bHRpcGxlRkRQYXNzKHNlbGYpOgorICAgICAgICAjIFBhc3MgbXVsdGlwbGUgRkRzIGluIGEgc2luZ2xlIGFycmF5LgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcyg0LCBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKSkKKworICAgIGRlZiBfdGVzdE11bHRpcGxlRkRQYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoNCkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RGRFBhc3NDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICAjIFRlc3QgdXNpbmcgQ01TR19TUEFDRSgpIHRvIGNhbGN1bGF0ZSBhbmNpbGxhcnkgYnVmZmVyIHNpemUuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKAorICAgICAgICAgICAgNCwgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfU1BBQ0UoNCAqIFNJWkVPRl9JTlQpKSkKKworICAgIEB0ZXN0RkRQYXNzQ01TR19TUEFDRS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdEZEUGFzc0NNU0dfU1BBQ0Uoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcyg0KQorCisgICAgZGVmIHRlc3RGRFBhc3NDTVNHX0xFTihzZWxmKToKKyAgICAgICAgIyBUZXN0IHVzaW5nIENNU0dfTEVOKCkgdG8gY2FsY3VsYXRlIGFuY2lsbGFyeSBidWZmZXIgc2l6ZS4KKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dGRHMoMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuQ01TR19MRU4oNCAqIFNJWkVPRl9JTlQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSRkMgMzU0MiBzYXlzIGltcGxlbWVudGF0aW9ucyBtYXkgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTVNHX0NUUlVOQyBpZiB0aGVyZSBpc24ndCBlbm91Z2ggc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3IgdHJhaWxpbmcgcGFkZGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBkZWYgX3Rlc3RGRFBhc3NDTVNHX0xFTihzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDEpCisKKyAgICAjIElzc3VlICMxMjk1ODogVGhlIGZvbGxvd2luZyB0ZXN0IGhhcyBwcm9ibGVtcyBvbiBNYWMgT1MgWAorICAgIEBzdXBwb3J0LmFudGljaXBhdGVfZmFpbHVyZShzeXMucGxhdGZvcm0gPT0gImRhcndpbiIpCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIikKKyAgICBkZWYgdGVzdEZEUGFzc1NlcGFyYXRlKHNlbGYpOgorICAgICAgICAjIFBhc3MgdHdvIEZEcyBpbiB0d28gc2VwYXJhdGUgYXJyYXlzLiAgQXJyYXlzIG1heSBiZSBjb21iaW5lZAorICAgICAgICAjIGludG8gYSBzaW5nbGUgY29udHJvbCBtZXNzYWdlIGJ5IHRoZSBPUy4KKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dGRHMoMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLCAxMDI0MCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNtc2dzPTIpCisKKyAgICBAdGVzdEZEUGFzc1NlcGFyYXRlLmNsaWVudF9za2lwCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBkZWYgX3Rlc3RGRFBhc3NTZXBhcmF0ZShzZWxmKToKKyAgICAgICAgZmQwLCBmZDEgPSBzZWxmLm5ld0ZEcygyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW2ZkMF0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDFdKSldKSwKKyAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgIyBJc3N1ZSAjMTI5NTg6IFRoZSBmb2xsb3dpbmcgdGVzdCBoYXMgcHJvYmxlbXMgb24gTWFjIE9TIFgKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RGRFBhc3NTZXBhcmF0ZU1pblNwYWNlKHNlbGYpOgorICAgICAgICAjIFBhc3MgdHdvIEZEcyBpbiB0d28gc2VwYXJhdGUgYXJyYXlzLCByZWNlaXZpbmcgdGhlbSBpbnRvIHRoZQorICAgICAgICAjIG1pbmltdW0gc3BhY2UgZm9yIHR3byBhcnJheXMuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuQ01TR19MRU4oU0laRU9GX0lOVCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjbXNncz0yLCBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIEB0ZXN0RkRQYXNzU2VwYXJhdGVNaW5TcGFjZS5jbGllbnRfc2tpcAorICAgIEBzdXBwb3J0LmFudGljaXBhdGVfZmFpbHVyZShzeXMucGxhdGZvcm0gPT0gImRhcndpbiIpCisgICAgZGVmIF90ZXN0RkRQYXNzU2VwYXJhdGVNaW5TcGFjZShzZWxmKToKKyAgICAgICAgZmQwLCBmZDEgPSBzZWxmLm5ld0ZEcygyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW2ZkMF0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDFdKSldKSwKKyAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHNlbmRBbmNpbGxhcnlJZlBvc3NpYmxlKHNlbGYsIG1zZywgYW5jZGF0YSk6CisgICAgICAgICMgVHJ5IHRvIHNlbmQgbXNnIGFuZCBhbmNkYXRhIHRvIHNlcnZlciwgYnV0IGlmIHRoZSBzeXN0ZW0KKyAgICAgICAgIyBjYWxsIGZhaWxzLCBqdXN0IHNlbmQgbXNnIHdpdGggbm8gYW5jaWxsYXJ5IGRhdGEuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKFttc2ddLCBhbmNkYXRhKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgICAgICAjIENoZWNrIHRoYXQgaXQgd2FzIHRoZSBzeXN0ZW0gY2FsbCB0aGF0IGZhaWxlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuZXJybm8sIGludCkKKyAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKFttc2ddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKG1zZykpCisKKyAgICBkZWYgdGVzdEZEUGFzc0VtcHR5KHNlbGYpOgorICAgICAgICAjIFRyeSB0byBwYXNzIGFuIGVtcHR5IEZEIGFycmF5LiAgQ2FuIHJlY2VpdmUgZWl0aGVyIG5vIGFycmF5CisgICAgICAgICMgb3IgYW4gZW1wdHkgYXJyYXkuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDAsIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMTAyNDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIGRlZiBfdGVzdEZEUGFzc0VtcHR5KHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRBbmNpbGxhcnlJZlBvc3NpYmxlKE1TRywgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiIildKQorCisgICAgZGVmIHRlc3RGRFBhc3NQYXJ0aWFsSW50KHNlbGYpOgorICAgICAgICAjIFRyeSB0byBwYXNzIGEgdHJ1bmNhdGVkIEZEIGFycmF5LgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMTAyNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBpZ25vcmU9c29ja2V0Lk1TR19DVFJVTkMpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgZm9yIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhIGluIGFuY2RhdGE6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5TT0xfU09DS0VUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX3R5cGUsIHNvY2tldC5TQ01fUklHSFRTKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihjbXNnX2RhdGEpLCBTSVpFT0ZfSU5UKQorCisgICAgZGVmIF90ZXN0RkRQYXNzUGFydGlhbEludChzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kQW5jaWxsYXJ5SWZQb3NzaWJsZSgKKyAgICAgICAgICAgIE1TRywKKyAgICAgICAgICAgIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmJhZGZkXSkudG9ieXRlcygpWzotMV0pXSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RGRFBhc3NQYXJ0aWFsSW50SW5NaWRkbGUoc2VsZik6CisgICAgICAgICMgVHJ5IHRvIHBhc3MgdHdvIEZEIGFycmF5cywgdGhlIGZpcnN0IG9mIHdoaWNoIGlzIHRydW5jYXRlZC4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgaWdub3JlPXNvY2tldC5NU0dfQ1RSVU5DKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oYW5jZGF0YSksIDIpCisgICAgICAgIGZkcyA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgIyBBcnJheXMgbWF5IGhhdmUgYmVlbiBjb21iaW5lZCBpbiBhIHNpbmdsZSBjb250cm9sIG1lc3NhZ2UKKyAgICAgICAgZm9yIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhIGluIGFuY2RhdGE6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5TT0xfU09DS0VUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX3R5cGUsIHNvY2tldC5TQ01fUklHSFRTKQorICAgICAgICAgICAgZmRzLmZyb21ieXRlcyhjbXNnX2RhdGFbOgorICAgICAgICAgICAgICAgICAgICBsZW4oY21zZ19kYXRhKSAtIChsZW4oY21zZ19kYXRhKSAlIGZkcy5pdGVtc2l6ZSldKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oZmRzKSwgMikKKyAgICAgICAgc2VsZi5jaGVja0ZEcyhmZHMpCisKKyAgICBAdGVzdEZEUGFzc1BhcnRpYWxJbnRJbk1pZGRsZS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdEZEUGFzc1BhcnRpYWxJbnRJbk1pZGRsZShzZWxmKToKKyAgICAgICAgZmQwLCBmZDEgPSBzZWxmLm5ld0ZEcygyKQorICAgICAgICBzZWxmLnNlbmRBbmNpbGxhcnlJZlBvc3NpYmxlKAorICAgICAgICAgICAgTVNHLAorICAgICAgICAgICAgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW2ZkMCwgc2VsZi5iYWRmZF0pLnRvYnl0ZXMoKVs6LTFdKSwKKyAgICAgICAgICAgICAoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDFdKSldKQorCisgICAgZGVmIGNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYsIHJlc3VsdCwgaWdub3JlZmxhZ3M9MCk6CisgICAgICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpdGVtcyBhcmUgcmV0dXJuZWQgd2hlbiBkYXRhIGlzCisgICAgICAgICMgdHJ1bmNhdGVkIGluc2lkZSB0aGUgY21zZ2hkciBzdHJ1Y3R1cmUuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmNOb0J1ZlNpemUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZWNlaXZlZCB3aGVuIG5vIGJ1ZmZlciBzaXplCisgICAgICAgICMgaXMgc3BlY2lmaWVkLgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCU0Qgc2VlbXMgdG8gc2V0IE1TR19DVFJVTkMgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgYW4gaXRlbSBoYXMgYmVlbiBwYXJ0aWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlY2VpdmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTm9CdWZTaXplKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jMChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIGlzIHJlY2VpdmVkIHdoZW4gYnVmZmVyIHNpemUgaXMgMC4KKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jMChzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDEpCisKKyAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmV0dXJuZWQgZm9yIHZhcmlvdXMgbm9uLXplcm8KKyAgICAjIChidXQgc3RpbGwgdG9vIHNtYWxsKSBidWZmZXIgc2l6ZXMuCisKKyAgICBkZWYgdGVzdENtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRIZWFkZXIoc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLCAxKSkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICAjIFRoZSBjbXNnaGRyIHN0cnVjdHVyZSBoYXMgYXQgbGVhc3QgdGhyZWUgbWVtYmVycywgdHdvIG9mCisgICAgICAgICMgd2hpY2ggYXJlIGludHMsIHNvIHdlIHN0aWxsIHNob3VsZG4ndCBzZWUgYW55IGFuY2lsbGFyeQorICAgICAgICAjIGRhdGEuCisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRIZWFkZXIoc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJWkVPRl9JTlQgKiAyKSkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuYzJJbnQoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuQ01TR19MRU4oMCkgLSAxKSkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY0xlbjBNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgIyBUaGUgZm9sbG93aW5nIHRlc3RzIHRyeSB0byB0cnVuY2F0ZSB0aGUgY29udHJvbCBtZXNzYWdlIGluIHRoZQorICAgICMgbWlkZGxlIG9mIHRoZSBGRCBhcnJheS4KKworICAgIGRlZiBjaGVja1RydW5jYXRlZEFycmF5KHNlbGYsIGFuY2J1ZiwgbWF4ZGF0YSwgbWluZGF0YT0wKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGZpbGUgZGVzY3JpcHRvciBkYXRhIGlzIHRydW5jYXRlZCB0byBiZXR3ZWVuCisgICAgICAgICMgbWluZGF0YSBhbmQgbWF4ZGF0YSBieXRlcyB3aGVuIHJlY2VpdmVkIHdpdGggYnVmZmVyIHNpemUKKyAgICAgICAgIyBhbmNidWYsIGFuZCB0aGF0IGFueSBjb21wbGV0ZSBmaWxlIGRlc2NyaXB0b3IgbnVtYmVycyBhcmUKKyAgICAgICAgIyB2YWxpZC4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIGFuY2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrc2V0PXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgICAgIGlmIG1pbmRhdGEgPT0gMCBhbmQgYW5jZGF0YSA9PSBbXToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LlNPTF9TT0NLRVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuU0NNX1JJR0hUUykKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKGNtc2dfZGF0YSksIG1pbmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihjbXNnX2RhdGEpLCBtYXhkYXRhKQorICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGZkcy5mcm9tYnl0ZXMoY21zZ19kYXRhWzoKKyAgICAgICAgICAgICAgICBsZW4oY21zZ19kYXRhKSAtIChsZW4oY21zZ19kYXRhKSAlIGZkcy5pdGVtc2l6ZSldKQorICAgICAgICBzZWxmLmNoZWNrRkRzKGZkcykKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEFycmF5KGFuY2J1Zj1zb2NrZXQuQ01TR19MRU4oMCksIG1heGRhdGE9MCkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY0xlbjAoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmNMZW4wUGx1czEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRBcnJheShhbmNidWY9c29ja2V0LkNNU0dfTEVOKDApICsgMSwgbWF4ZGF0YT0xKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTGVuMFBsdXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMikKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEFycmF5KGFuY2J1Zj1zb2NrZXQuQ01TR19MRU4oU0laRU9GX0lOVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhkYXRhPVNJWkVPRl9JTlQpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNMZW4xKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMikKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuMk1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEFycmF5KGFuY2J1Zj1zb2NrZXQuQ01TR19MRU4oMiAqIFNJWkVPRl9JTlQpIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGRhdGE9KDIgKiBTSVpFT0ZfSU5UKSAtIDEpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNMZW4yTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMikKKworCitjbGFzcyBSRkMzNTQyQW5jaWxsYXJ5VGVzdChTZW5kcmVjdm1zZ1NlcnZlclRpbWVvdXRCYXNlKToKKyAgICAjIFRlc3Qgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpIHVzaW5nIHRoZSBhbmNpbGxhcnkgZGF0YQorICAgICMgZmVhdHVyZXMgb2YgdGhlIFJGQyAzNTQyIEFkdmFuY2VkIFNvY2tldHMgQVBJIGZvciBJUHY2LgorICAgICMgQ3VycmVudGx5IHdlIGNhbiBvbmx5IGhhbmRsZSBjZXJ0YWluIGRhdGEgaXRlbXMgKGUuZy4gdHJhZmZpYworICAgICMgY2xhc3MsIGhvcCBsaW1pdCwgTVRVIGRpc2NvdmVyeSBhbmQgZnJhZ21lbnRhdGlvbiBzZXR0aW5ncykKKyAgICAjIHdpdGhvdXQgcmVzb3J0aW5nIHRvIHVucG9ydGFibGUgbWVhbnMgc3VjaCBhcyB0aGUgc3RydWN0IG1vZHVsZSwKKyAgICAjIGJ1dCB0aGUgdGVzdHMgaGVyZSBhcmUgYWltZWQgYXQgdGVzdGluZyB0aGUgYW5jaWxsYXJ5IGRhdGEKKyAgICAjIGhhbmRsaW5nIGluIHNlbmRtc2coKSBhbmQgcmVjdm1zZygpIHJhdGhlciB0aGFuIHRoZSBJUHY2IEFQSQorICAgICMgaXRzZWxmLgorCisgICAgIyBUZXN0IHZhbHVlIHRvIHVzZSB3aGVuIHNldHRpbmcgaG9wIGxpbWl0IG9mIHBhY2tldAorICAgIGhvcF9saW1pdCA9IDIKKworICAgICMgVGVzdCB2YWx1ZSB0byB1c2Ugd2hlbiBzZXR0aW5nIHRyYWZmaWMgY2xhc3Mgb2YgcGFja2V0LgorICAgICMgLTEgbWVhbnMgInVzZSBrZXJuZWwgZGVmYXVsdCIuCisgICAgdHJhZmZpY19jbGFzcyA9IC0xCisKKyAgICBkZWYgYW5jaWxsYXJ5TWFwcGluZyhzZWxmLCBhbmNkYXRhKToKKyAgICAgICAgIyBHaXZlbiBhbmNpbGxhcnkgZGF0YSBsaXN0IGFuY2RhdGEsIHJldHVybiBhIG1hcHBpbmcgZnJvbQorICAgICAgICAjIHBhaXJzIChjbXNnX2xldmVsLCBjbXNnX3R5cGUpIHRvIGNvcnJlc3BvbmRpbmcgY21zZ19kYXRhLgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gKGxldmVsLCB0eXBlKSBwYWlyIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UuCisgICAgICAgIGQgPSB7fQorICAgICAgICBmb3IgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgaW4gYW5jZGF0YToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSksIGQpCisgICAgICAgICAgICBkWyhjbXNnX2xldmVsLCBjbXNnX3R5cGUpXSA9IGNtc2dfZGF0YQorICAgICAgICByZXR1cm4gZAorCisgICAgZGVmIGNoZWNrSG9wTGltaXQoc2VsZiwgYW5jYnVmc2l6ZSwgbWF4aG9wPTI1NSwgaWdub3JlZmxhZ3M9MCk6CisgICAgICAgICMgUmVjZWl2ZSBob3AgbGltaXQgaW50byBhbmNidWZzaXplIGJ5dGVzIG9mIGFuY2lsbGFyeSBkYXRhCisgICAgICAgICMgc3BhY2UuICBDaGVjayB0aGF0IGRhdGEgaXMgTVNHLCBhbmNpbGxhcnkgZGF0YSBpcyBub3QKKyAgICAgICAgIyB0cnVuY2F0ZWQgKGJ1dCBpZ25vcmUgYW55IGZsYWdzIGluIGlnbm9yZWZsYWdzKSwgYW5kIGhvcAorICAgICAgICAjIGxpbWl0IGlzIGJldHdlZW4gMCBhbmQgbWF4aG9wIGluY2x1c2l2ZS4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBhbmNidWZzaXplKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3Vuc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFuY2RhdGEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYW5jZGF0YVswXSwgdHVwbGUpCisgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuSVBWNl9IT1BMSU1JVCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNtc2dfZGF0YSwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGEuZnJvbWJ5dGVzKGNtc2dfZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYVswXSwgbWF4aG9wKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFJlY3ZIb3BMaW1pdChzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyB0aGUgcGFja2V0IGhvcCBsaW1pdCBhcyBhbmNpbGxhcnkgZGF0YS4KKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0KGFuY2J1ZnNpemU9MTAyNDApCisKKyAgICBAdGVzdFJlY3ZIb3BMaW1pdC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFJlY3ZIb3BMaW1pdChzZWxmKToKKyAgICAgICAgIyBOZWVkIHRvIHdhaXQgdW50aWwgc2VydmVyIGhhcyBhc2tlZCB0byByZWNlaXZlIGFuY2lsbGFyeQorICAgICAgICAjIGRhdGEsIGFzIGltcGxlbWVudGF0aW9ucyBhcmUgbm90IHJlcXVpcmVkIHRvIGJ1ZmZlciBpdAorICAgICAgICAjIG90aGVyd2lzZS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RSZWN2SG9wTGltaXRDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmVjZWl2aW5nIGhvcCBsaW1pdCwgdXNpbmcgQ01TR19TUEFDRSB0byBjYWxjdWxhdGUgYnVmZmVyIHNpemUuCisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdChhbmNidWZzaXplPXNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpKQorCisgICAgQHRlc3RSZWN2SG9wTGltaXRDTVNHX1NQQUNFLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0UmVjdkhvcExpbWl0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICAjIENvdWxkIHRlc3QgcmVjZWl2aW5nIGludG8gYnVmZmVyIHNpemVkIHVzaW5nIENNU0dfTEVOLCBidXQgUkZDCisgICAgIyAzNTQyIHNheXMgcG9ydGFibGUgYXBwbGljYXRpb25zIG11c3QgcHJvdmlkZSBzcGFjZSBmb3IgdHJhaWxpbmcKKyAgICAjIHBhZGRpbmcuICBJbXBsZW1lbnRhdGlvbnMgbWF5IHNldCBNU0dfQ1RSVU5DIGlmIHRoZXJlIGlzbid0CisgICAgIyBlbm91Z2ggc3BhY2UgZm9yIHRoZSBwYWRkaW5nLgorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFNldEhvcExpbWl0KHNlbGYpOgorICAgICAgICAjIFRlc3Qgc2V0dGluZyBob3AgbGltaXQgb24gb3V0Z29pbmcgcGFja2V0IGFuZCByZWNlaXZpbmcgaXQKKyAgICAgICAgIyBhdCB0aGUgb3RoZXIgZW5kLgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXQoYW5jYnVmc2l6ZT0xMDI0MCwgbWF4aG9wPXNlbGYuaG9wX2xpbWl0KQorCisgICAgQHRlc3RTZXRIb3BMaW1pdC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNldEhvcExpbWl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfSE9QTElNSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYuaG9wX2xpbWl0XSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiBjaGVja1RyYWZmaWNDbGFzc0FuZEhvcExpbWl0KHNlbGYsIGFuY2J1ZnNpemUsIG1heGhvcD0yNTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9MCk6CisgICAgICAgICMgUmVjZWl2ZSB0cmFmZmljIGNsYXNzIGFuZCBob3AgbGltaXQgaW50byBhbmNidWZzaXplIGJ5dGVzIG9mCisgICAgICAgICMgYW5jaWxsYXJ5IGRhdGEgc3BhY2UuICBDaGVjayB0aGF0IGRhdGEgaXMgTVNHLCBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhIGlzIG5vdCB0cnVuY2F0ZWQgKGJ1dCBpZ25vcmUgYW55IGZsYWdzIGluIGlnbm9yZWZsYWdzKSwKKyAgICAgICAgIyBhbmQgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IGFyZSBpbiByYW5nZSAoaG9wIGxpbWl0IG5vCisgICAgICAgICMgbW9yZSB0aGFuIG1heGhvcCkuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWVENMQVNTLCAxKQorICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIGFuY2J1ZnNpemUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrdW5zZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFuY2RhdGEpLCAyKQorICAgICAgICBhbmNtYXAgPSBzZWxmLmFuY2lsbGFyeU1hcHBpbmcoYW5jZGF0YSkKKworICAgICAgICB0Y2RhdGEgPSBhbmNtYXBbKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X1RDTEFTUyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRjZGF0YSksIFNJWkVPRl9JTlQpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGEuZnJvbWJ5dGVzKHRjZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYVswXSwgMjU1KQorCisgICAgICAgIGhsZGF0YSA9IGFuY21hcFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfSE9QTElNSVQpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihobGRhdGEpLCBTSVpFT0ZfSU5UKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBhLmZyb21ieXRlcyhobGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGFbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGFbMF0sIG1heGhvcCkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFJlY3ZUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyB0cmFmZmljIGNsYXNzIGFuZCBob3AgbGltaXQgYXMgYW5jaWxsYXJ5IGRhdGEuCisgICAgICAgIHNlbGYuY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwKQorCisgICAgQHRlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXRDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmVjZWl2aW5nIHRyYWZmaWMgY2xhc3MgYW5kIGhvcCBsaW1pdCwgdXNpbmcKKyAgICAgICAgIyBDTVNHX1NQQUNFKCkgdG8gY2FsY3VsYXRlIGJ1ZmZlciBzaXplLgorICAgICAgICBzZWxmLmNoZWNrVHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoCisgICAgICAgICAgICBhbmNidWZzaXplPXNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICogMikKKworICAgIEB0ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0Q01TR19TUEFDRS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFJlY3ZUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdENNU0dfU1BBQ0Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZXRUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgIyBUZXN0IHNldHRpbmcgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IG9uIG91dGdvaW5nIHBhY2tldCwKKyAgICAgICAgIyBhbmQgcmVjZWl2aW5nIHRoZW0gYXQgdGhlIG90aGVyIGVuZC4KKyAgICAgICAgc2VsZi5jaGVja1RyYWZmaWNDbGFzc0FuZEhvcExpbWl0KGFuY2J1ZnNpemU9MTAyNDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhob3A9c2VsZi5ob3BfbGltaXQpCisKKyAgICBAdGVzdFNldFRyYWZmaWNDbGFzc0FuZEhvcExpbWl0LmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2V0VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9UQ0xBU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYudHJhZmZpY19jbGFzc10pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfSE9QTElNSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYuaG9wX2xpbWl0XSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0T2RkQ21zZ1NpemUoc2VsZik6CisgICAgICAgICMgVHJ5IHRvIHNlbmQgYW5jaWxsYXJ5IGRhdGEgd2l0aCBmaXJzdCBpdGVtIG9uZSBieXRlIHRvbworICAgICAgICAjIGxvbmcuICBGYWxsIGJhY2sgdG8gc2VuZGluZyB3aXRoIGNvcnJlY3Qgc2l6ZSBpZiB0aGlzIGZhaWxzLAorICAgICAgICAjIGFuZCBjaGVjayB0aGF0IHNlY29uZCBpdGVtIHdhcyBoYW5kbGVkIGNvcnJlY3RseS4KKyAgICAgICAgc2VsZi5jaGVja1RyYWZmaWNDbGFzc0FuZEhvcExpbWl0KGFuY2J1ZnNpemU9MTAyNDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhob3A9c2VsZi5ob3BfbGltaXQpCisKKyAgICBAdGVzdE9kZENtc2dTaXplLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0T2RkQ21zZ1NpemUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmJ5dGVzID0gc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoCisgICAgICAgICAgICAgICAgW01TR10sCisgICAgICAgICAgICAgICAgWyhzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9UQ0xBU1MsCisgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLnRyYWZmaWNfY2xhc3NdKS50b2J5dGVzKCkgKyBiIlx4MDAiKSwKKyAgICAgICAgICAgICAgICAgKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlULAorICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi5ob3BfbGltaXRdKSldKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5lcnJubywgaW50KQorICAgICAgICAgICAgbmJ5dGVzID0gc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoCisgICAgICAgICAgICAgICAgW01TR10sCisgICAgICAgICAgICAgICAgWyhzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9UQ0xBU1MsCisgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLnRyYWZmaWNfY2xhc3NdKSksCisgICAgICAgICAgICAgICAgIChzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9IT1BMSU1JVCwKKyAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYuaG9wX2xpbWl0XSkpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4oTVNHKSkKKworICAgICMgVGVzdHMgZm9yIHByb3BlciBoYW5kbGluZyBvZiB0cnVuY2F0ZWQgYW5jaWxsYXJ5IGRhdGEKKworICAgIGRlZiBjaGVja0hvcExpbWl0VHJ1bmNhdGVkSGVhZGVyKHNlbGYsIGFuY2J1ZnNpemUsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIFJlY2VpdmUgaG9wIGxpbWl0IGludG8gYW5jYnVmc2l6ZSBieXRlcyBvZiBhbmNpbGxhcnkgZGF0YQorICAgICAgICAjIHNwYWNlLCB3aGljaCBzaG91bGQgYmUgdG9vIHNtYWxsIHRvIGNvbnRhaW4gdGhlIGFuY2lsbGFyeQorICAgICAgICAjIGRhdGEgaGVhZGVyIChpZiBhbmNidWZzaXplIGlzIE5vbmUsIHBhc3Mgbm8gc2Vjb25kIGFyZ3VtZW50CisgICAgICAgICMgdG8gcmVjdm1zZygpKS4gIENoZWNrIHRoYXQgZGF0YSBpcyBNU0csIE1TR19DVFJVTkMgaXMgc2V0CisgICAgICAgICMgKHVubGVzcyBpbmNsdWRlZCBpbiBpZ25vcmVmbGFncyksIGFuZCBubyBhbmNpbGxhcnkgZGF0YSBpcworICAgICAgICAjIHJldHVybmVkLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKyAgICAgICAgYXJncyA9ICgpIGlmIGFuY2J1ZnNpemUgaXMgTm9uZSBlbHNlIChhbmNidWZzaXplLCkKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksICphcmdzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RDbXNnVHJ1bmNOb0J1ZlNpemUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZWNlaXZlZCB3aGVuIG5vIGFuY2lsbGFyeQorICAgICAgICAjIGJ1ZmZlciBzaXplIGlzIHByb3ZpZGVkLgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCU0Qgc2VlbXMgdG8gc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1TR19DVFJVTkMgb25seSBpZiBhbiBpdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGhhcyBiZWVuIHBhcnRpYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNlaXZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgQHRlc3RDbXNnVHJ1bmNOb0J1ZlNpemUuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNOb0J1ZlNpemUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFNpbmdsZUNtc2dUcnVuYzAoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZWNlaXZlZCB3aGVuIGFuY2lsbGFyeQorICAgICAgICAjIGJ1ZmZlciBzaXplIGlzIHplcm8uCisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdFRydW5jYXRlZEhlYWRlcihhbmNidWZzaXplPTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIEB0ZXN0U2luZ2xlQ21zZ1RydW5jMC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNpbmdsZUNtc2dUcnVuYzAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgIyBDaGVjayB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIGlzIHJldHVybmVkIGZvciB2YXJpb3VzIG5vbi16ZXJvCisgICAgIyAoYnV0IHN0aWxsIHRvbyBzbWFsbCkgYnVmZmVyIHNpemVzLgorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFNpbmdsZUNtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdFRydW5jYXRlZEhlYWRlcihhbmNidWZzaXplPTEpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuYzEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT0yICogU0laRU9GX0lOVCkKKworICAgIEB0ZXN0U2luZ2xlQ21zZ1RydW5jMkludC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNpbmdsZUNtc2dUcnVuYzJJbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFNpbmdsZUNtc2dUcnVuY0xlbjBNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdFRydW5jYXRlZEhlYWRlcihhbmNidWZzaXplPXNvY2tldC5DTVNHX0xFTigwKSAtIDEpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuY0xlbjBNaW51czEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmNJbkRhdGEoc2VsZik6CisgICAgICAgICMgVGVzdCB0cnVuY2F0aW9uIG9mIGEgY29udHJvbCBtZXNzYWdlIGluc2lkZSBpdHMgYXNzb2NpYXRlZAorICAgICAgICAjIGRhdGEuICBUaGUgbWVzc2FnZSBtYXkgYmUgcmV0dXJuZWQgd2l0aCBpdHMgZGF0YSB0cnVuY2F0ZWQsCisgICAgICAgICMgb3Igbm90IHJldHVybmVkIGF0IGFsbC4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZygKKyAgICAgICAgICAgIHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwgc29ja2V0LkNNU0dfTEVOKFNJWkVPRl9JTlQpIC0gMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGFuY2RhdGEpLCAxKQorICAgICAgICBpZiBhbmNkYXRhOgorICAgICAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhWzBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LklQVjZfSE9QTElNSVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuY0luRGF0YS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNpbmdsZUNtc2dUcnVuY0luRGF0YShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgY2hlY2tUcnVuY2F0ZWRTZWNvbmRIZWFkZXIoc2VsZiwgYW5jYnVmc2l6ZSwgaWdub3JlZmxhZ3M9MCk6CisgICAgICAgICMgUmVjZWl2ZSB0cmFmZmljIGNsYXNzIGFuZCBob3AgbGltaXQgaW50byBhbmNidWZzaXplIGJ5dGVzIG9mCisgICAgICAgICMgYW5jaWxsYXJ5IGRhdGEgc3BhY2UsIHdoaWNoIHNob3VsZCBiZSBsYXJnZSBlbm91Z2ggdG8KKyAgICAgICAgIyBjb250YWluIHRoZSBmaXJzdCBpdGVtLCBidXQgdG9vIHNtYWxsIHRvIGNvbnRhaW4gdGhlIGhlYWRlcgorICAgICAgICAjIG9mIHRoZSBzZWNvbmQuICBDaGVjayB0aGF0IGRhdGEgaXMgTVNHLCBNU0dfQ1RSVU5DIGlzIHNldAorICAgICAgICAjICh1bmxlc3MgaW5jbHVkZWQgaW4gaWdub3JlZmxhZ3MpLCBhbmQgb25seSBvbmUgYW5jaWxsYXJ5CisgICAgICAgICMgZGF0YSBpdGVtIGlzIHJldHVybmVkLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVlRDTEFTUywgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBhbmNidWZzaXplKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LklQUFJPVE9fSVBWNikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihjbXNnX3R5cGUsIHtzb2NrZXQuSVBWNl9UQ0xBU1MsIHNvY2tldC5JUFY2X0hPUExJTUlUfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY21zZ19kYXRhKSwgU0laRU9GX0lOVCkKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgYS5mcm9tYnl0ZXMoY21zZ19kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChhWzBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChhWzBdLCAyNTUpCisKKyAgICAjIFRyeSB0aGUgYWJvdmUgdGVzdCB3aXRoIHZhcmlvdXMgYnVmZmVyIHNpemVzLgorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbmRDbXNnVHJ1bmMwKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgQHRlc3RTZWNvbmRDbXNnVHJ1bmMwLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb25kQ21zZ1RydW5jMChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFNlY29uZENtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRTZWNvbmRIZWFkZXIoc29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkgKyAxKQorCisgICAgQHRlc3RTZWNvbmRDbXNnVHJ1bmMxLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb25kQ21zZ1RydW5jMShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFNlY29uZENtc2dUcnVuYzJJbnQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRTZWNvbmRIZWFkZXIoc29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiBTSVpFT0ZfSU5UKQorCisgICAgQHRlc3RTZWNvbmRDbXNnVHJ1bmMySW50LmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb25kQ21zZ1RydW5jMkludChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFNlY29uZENtc2dUcnVuY0xlbjBNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRTZWNvbmRIZWFkZXIoc29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5DTVNHX0xFTigwKSAtIDEpCisKKyAgICBAdGVzdFNlY29uZENtc2dUcnVuY0xlbjBNaW51czEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZWNvbmRDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0U2Vjb21kQ21zZ1RydW5jSW5EYXRhKHNlbGYpOgorICAgICAgICAjIFRlc3QgdHJ1bmNhdGlvbiBvZiB0aGUgc2Vjb25kIG9mIHR3byBjb250cm9sIG1lc3NhZ2VzIGluc2lkZQorICAgICAgICAjIGl0cyBhc3NvY2lhdGVkIGRhdGEuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWVENMQVNTLCAxKQorICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKAorICAgICAgICAgICAgc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLAorICAgICAgICAgICAgc29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkgKyBzb2NrZXQuQ01TR19MRU4oU0laRU9GX0lOVCkgLSAxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgICAgICBjbXNnX3R5cGVzID0ge3NvY2tldC5JUFY2X1RDTEFTUywgc29ja2V0LklQVjZfSE9QTElNSVR9CisKKyAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhLnBvcCgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgIGNtc2dfdHlwZXMucmVtb3ZlKGNtc2dfdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY21zZ19kYXRhKSwgU0laRU9GX0lOVCkKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgYS5mcm9tYnl0ZXMoY21zZ19kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChhWzBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChhWzBdLCAyNTUpCisKKyAgICAgICAgaWYgYW5jZGF0YToKKyAgICAgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YS5wb3AoMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LklQUFJPVE9fSVBWNikKKyAgICAgICAgICAgIGNtc2dfdHlwZXMucmVtb3ZlKGNtc2dfdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oY21zZ19kYXRhKSwgU0laRU9GX0lOVCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorCisgICAgQHRlc3RTZWNvbWRDbXNnVHJ1bmNJbkRhdGEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZWNvbWRDbXNnVHJ1bmNJbkRhdGEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisKKyMgRGVyaXZlIGNvbmNyZXRlIHRlc3QgY2xhc3NlcyBmb3IgZGlmZmVyZW50IHNvY2tldCB0eXBlcy4KKworY2xhc3MgU2VuZHJlY3Ztc2dVRFBUZXN0QmFzZShTZW5kcmVjdm1zZ0RncmFtRmxhZ3NCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ0Nvbm5lY3Rpb25sZXNzQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkZWRTb2NrZXRUZXN0TWl4aW4sIFVEUFRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRtc2dVRFBUZXN0KFNlbmRtc2dDb25uZWN0aW9ubGVzc1Rlc3RzLCBTZW5kcmVjdm1zZ1VEUFRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dVRFBUZXN0KFJlY3Ztc2dUZXN0cywgU2VuZHJlY3Ztc2dVRFBUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnX2ludG8iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvVURQVGVzdChSZWN2bXNnSW50b1Rlc3RzLCBTZW5kcmVjdm1zZ1VEUFRlc3RCYXNlKToKKyAgICBwYXNzCisKKworY2xhc3MgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UoU2VuZHJlY3Ztc2dEZ3JhbUZsYWdzQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnQ29ubmVjdGlvbmxlc3NCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkZWRTb2NrZXRUZXN0TWl4aW4sIFVEUDZUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVDYiLCAiU09DS19ER1JBTSIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1VEUDZUZXN0KFNlbmRtc2dDb25uZWN0aW9ubGVzc1Rlc3RzLCBTZW5kcmVjdm1zZ1VEUDZUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVDYiLCAiU09DS19ER1JBTSIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1VEUDZUZXN0KFJlY3Ztc2dUZXN0cywgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVDYiLCAiU09DS19ER1JBTSIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9VRFA2VGVzdChSZWN2bXNnSW50b1Rlc3RzLCBTZW5kcmVjdm1zZ1VEUDZUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQUFJPVE9fSVBWNiIpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVDYiLCAiU09DS19ER1JBTSIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1JGQzM1NDJBbmNpbGxhcnlVRFA2VGVzdChSRkMzNTQyQW5jaWxsYXJ5VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQUFJPVE9fSVBWNiIpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVDYiLCAiU09DS19ER1JBTSIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9SRkMzNTQyQW5jaWxsYXJ5VURQNlRlc3QoUmVjdm1zZ0ludG9NaXhpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJGQzM1NDJBbmNpbGxhcnlUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworCitjbGFzcyBTZW5kcmVjdm1zZ1RDUFRlc3RCYXNlKFNlbmRyZWN2bXNnQ29ubmVjdGVkQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluLCBUQ1BUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTZW5kbXNnVENQVGVzdChTZW5kbXNnU3RyZWFtVGVzdHMsIFNlbmRyZWN2bXNnVENQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1RDUFRlc3QoUmVjdm1zZ1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dUQ1BUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnX2ludG8iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvVENQVGVzdChSZWN2bXNnSW50b1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVENQVGVzdEJhc2UpOgorICAgIHBhc3MKKworCitjbGFzcyBTZW5kcmVjdm1zZ1NDVFBTdHJlYW1UZXN0QmFzZShTZW5kcmVjdm1zZ1NDVFBGbGFnc0Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ0Nvbm5lY3RlZEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0ZWRTdHJlYW1UZXN0TWl4aW4sIFNDVFBTdHJlYW1CYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQiLCAiU09DS19TVFJFQU0iLCAiSVBQUk9UT19TQ1RQIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTZW5kbXNnU0NUUFN0cmVhbVRlc3QoU2VuZG1zZ1N0cmVhbVRlc3RzLCBTZW5kcmVjdm1zZ1NDVFBTdHJlYW1UZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnIikKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUIiwgIlNPQ0tfU1RSRUFNIiwgIklQUFJPVE9fU0NUUCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1NDVFBTdHJlYW1UZXN0KFJlY3Ztc2dUZXN0cywgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1NDVFBTdHJlYW1UZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnX2ludG8iKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQiLCAiU09DS19TVFJFQU0iLCAiSVBQUk9UT19TQ1RQIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnSW50b1NDVFBTdHJlYW1UZXN0KFJlY3Ztc2dJbnRvVGVzdHMsIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnU0NUUFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKKworY2xhc3MgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UoU2VuZHJlY3Ztc2dDb25uZWN0ZWRCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluLCBVbml4U3RyZWFtQmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1VuaXhTdHJlYW1UZXN0KFNlbmRtc2dTdHJlYW1UZXN0cywgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkFGX1VOSVgiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dVbml4U3RyZWFtVGVzdChSZWN2bXNnVGVzdHMsIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9Vbml4U3RyZWFtVGVzdChSZWN2bXNnSW50b1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1VuaXhTdHJlYW1UZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIiwgInJlY3Ztc2ciKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJBRl9VTklYIiwgIlNPTF9TT0NLRVQiLCAiU0NNX1JJR0hUUyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1NDTVJpZ2h0c1N0cmVhbVRlc3QoU0NNUmlnaHRzVGVzdCwgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIsICJyZWN2bXNnX2ludG8iKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJBRl9VTklYIiwgIlNPTF9TT0NLRVQiLCAiU0NNX1JJR0hUUyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9TQ01SaWdodHNTdHJlYW1UZXN0KFJlY3Ztc2dJbnRvTWl4aW4sIFNDTVJpZ2h0c1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworCisjIFRlc3QgaW50ZXJydXB0aW5nIHRoZSBpbnRlcnJ1cHRpYmxlIHNlbmQvcmVjZWl2ZSBtZXRob2RzIHdpdGggYQorIyBzaWduYWwgd2hlbiBhIHRpbWVvdXQgaXMgc2V0LiAgVGhlc2UgdGVzdHMgYXZvaWQgaGF2aW5nIG11bHRpcGxlCisjIHRocmVhZHMgYWxpdmUgZHVyaW5nIHRoZSB0ZXN0IHNvIHRoYXQgdGhlIE9TIGNhbm5vdCBkZWxpdmVyIHRoZQorIyBzaWduYWwgdG8gdGhlIHdyb25nIG9uZS4KKworY2xhc3MgSW50ZXJydXB0ZWRUaW1lb3V0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBCYXNlIGNsYXNzIGZvciBpbnRlcnJ1cHRlZCBzZW5kL3JlY2VpdmUgdGVzdHMuICBJbnN0YWxscyBhbgorICAgICMgZW1wdHkgaGFuZGxlciBmb3IgU0lHQUxSTSBhbmQgcmVtb3ZlcyBpdCBvbiB0ZWFyZG93biwgYWxvbmcgd2l0aAorICAgICMgYW55IHNjaGVkdWxlZCBhbGFybXMuCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBvcmlnX2Fscm1faGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2lnbnVtLCBmcmFtZTogTm9uZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdBTFJNLCBvcmlnX2Fscm1faGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuc2V0QWxhcm0sIDApCisKKyAgICAjIFRpbWVvdXQgZm9yIHNvY2tldCBvcGVyYXRpb25zCisgICAgdGltZW91dCA9IDQuMAorCisgICAgIyBQcm92aWRlIHNldEFsYXJtKCkgbWV0aG9kIHRvIHNjaGVkdWxlIGRlbGl2ZXJ5IG9mIFNJR0FMUk0gYWZ0ZXIKKyAgICAjIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzLCBvciBjYW5jZWwgaXQgaWYgemVybywgYW5kIGFuCisgICAgIyBhcHByb3ByaWF0ZSB0aW1lIHZhbHVlIHRvIHVzZS4gIFVzZSBzZXRpdGltZXIoKSBpZiBhdmFpbGFibGUuCisgICAgaWYgaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKToKKyAgICAgICAgYWxhcm1fdGltZSA9IDAuMDUKKworICAgICAgICBkZWYgc2V0QWxhcm0oc2VsZiwgc2Vjb25kcyk6CisgICAgICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUkVBTCwgc2Vjb25kcykKKyAgICBlbHNlOgorICAgICAgICAjIE9sZCBzeXN0ZW1zIG1heSBkZWxpdmVyIHRoZSBhbGFybSB1cCB0byBvbmUgc2Vjb25kIGVhcmx5CisgICAgICAgIGFsYXJtX3RpbWUgPSAyCisKKyAgICAgICAgZGVmIHNldEFsYXJtKHNlbGYsIHNlY29uZHMpOgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKHNlY29uZHMpCisKKworIyBSZXF1aXJlIHNpZ2ludGVycnVwdCgpIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHN5c3RlbSBjYWxscyBhcmUKKyMgaW50ZXJydXB0ZWQgYnkgZGVmYXVsdC4KK0ByZXF1aXJlQXR0cnMoc2lnbmFsLCAic2lnaW50ZXJydXB0IikKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAiYWxhcm0iKSBvciBoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLAorICAgICAgICAgICAgICAgICAgICAgIkRvbid0IGhhdmUgc2lnbmFsLmFsYXJtIG9yIHNpZ25hbC5zZXRpdGltZXIiKQorY2xhc3MgSW50ZXJydXB0ZWRSZWN2VGltZW91dFRlc3QoSW50ZXJydXB0ZWRUaW1lb3V0QmFzZSwgVURQVGVzdEJhc2UpOgorICAgICMgVGVzdCBpbnRlcnJ1cHRpbmcgdGhlIHJlY3YqKCkgbWV0aG9kcyB3aXRoIHNpZ25hbHMgd2hlbiBhCisgICAgIyB0aW1lb3V0IGlzIHNldC4KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2Vydi5zZXR0aW1lb3V0KHNlbGYudGltZW91dCkKKworICAgIGRlZiBjaGVja0ludGVycnVwdGVkUmVjdihzZWxmLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIENoZWNrIHRoYXQgZnVuYygqYXJncywgKiprd2FyZ3MpIHJhaXNlcyBzb2NrZXQuZXJyb3Igd2l0aCBhbgorICAgICAgICAjIGVycm5vIG9mIEVJTlRSIHdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCisgICAgICAgIHNlbGYuc2V0QWxhcm0oc2VsZi5hbGFybV90aW1lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvcikgYXMgY206CisgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGNtLmV4Y2VwdGlvbiwgc29ja2V0LnRpbWVvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FSU5UUikKKworICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2VGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdiwgMTAyNCkKKworICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2SW50b1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3ZfaW50bywgYnl0ZWFycmF5KDEwMjQpKQorCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Zmcm9tVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdmZyb20sIDEwMjQpCisKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdmZyb21JbnRvVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdmZyb21faW50bywgYnl0ZWFycmF5KDEwMjQpKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Ztc2dUaW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYuc2Vydi5yZWN2bXNnLCAxMDI0KQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdm1zZ0ludG9UaW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYuc2Vydi5yZWN2bXNnX2ludG8sIFtieXRlYXJyYXkoMTAyNCldKQorCisKKyMgUmVxdWlyZSBzaWdpbnRlcnJ1cHQoKSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBzeXN0ZW0gY2FsbHMgYXJlCisjIGludGVycnVwdGVkIGJ5IGRlZmF1bHQuCitAcmVxdWlyZUF0dHJzKHNpZ25hbCwgInNpZ2ludGVycnVwdCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgImFsYXJtIikgb3IgaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICJEb24ndCBoYXZlIHNpZ25hbC5hbGFybSBvciBzaWduYWwuc2V0aXRpbWVyIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBJbnRlcnJ1cHRlZFNlbmRUaW1lb3V0VGVzdChJbnRlcnJ1cHRlZFRpbWVvdXRCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkU2FmZUNsZWFudXBUZXN0Q2FzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvY2tldExpc3RlbmluZ1Rlc3RNaXhpbiwgVENQVGVzdEJhc2UpOgorICAgICMgVGVzdCBpbnRlcnJ1cHRpbmcgdGhlIGludGVycnVwdGlibGUgc2VuZCooKSBtZXRob2RzIHdpdGggc2lnbmFscworICAgICMgd2hlbiBhIHRpbWVvdXQgaXMgc2V0LgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4gPSBzZWxmLm5ld1NvY2tldCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnNlcnZfY29ubi5jbG9zZSkKKyAgICAgICAgIyBVc2UgYSB0aHJlYWQgdG8gY29tcGxldGUgdGhlIGNvbm5lY3Rpb24sIGJ1dCB3YWl0IGZvciBpdCB0bworICAgICAgICAjIHRlcm1pbmF0ZSBiZWZvcmUgcnVubmluZyB0aGUgdGVzdCwgc28gdGhhdCB0aGVyZSBpcyBvbmx5IG9uZQorICAgICAgICAjIHRocmVhZCB0byBhY2NlcHQgdGhlIHNpZ25hbC4KKyAgICAgICAgY2xpX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuZG9Db25uZWN0KQorICAgICAgICBjbGlfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5jbGlfY29ubiwgYWRkciA9IHNlbGYuc2Vydi5hY2NlcHQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5jbGlfY29ubi5jbG9zZSkKKyAgICAgICAgY2xpX3RocmVhZC5qb2luKCkKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4uc2V0dGltZW91dChzZWxmLnRpbWVvdXQpCisKKyAgICBkZWYgZG9Db25uZWN0KHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZfY29ubi5jb25uZWN0KHNlbGYuc2Vydl9hZGRyKQorCisgICAgZGVmIGNoZWNrSW50ZXJydXB0ZWRTZW5kKHNlbGYsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgQ2hlY2sgdGhhdCBmdW5jKCphcmdzLCAqKmt3YXJncyksIHJ1biBpbiBhIGxvb3AsIHJhaXNlcworICAgICAgICAjIHNvY2tldC5lcnJvciB3aXRoIGFuIGVycm5vIG9mIEVJTlRSIHdoZW4gaW50ZXJydXB0ZWQgYnkgYQorICAgICAgICAjIHNpZ25hbC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBzZWxmLnNldEFsYXJtKHNlbGYuYWxhcm1fdGltZSkKKyAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGNtLmV4Y2VwdGlvbiwgc29ja2V0LnRpbWVvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FSU5UUikKKworICAgICMgSXNzdWUgIzEyOTU4OiBUaGUgZm9sbG93aW5nIHRlc3RzIGhhdmUgcHJvYmxlbXMgb24gTWFjIE9TIFgKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRTZW5kVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkU2VuZChzZWxmLnNlcnZfY29ubi5zZW5kLCBiImEiKjUxMikKKworICAgIEBzdXBwb3J0LmFudGljaXBhdGVfZmFpbHVyZShzeXMucGxhdGZvcm0gPT0gImRhcndpbiIpCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFNlbmR0b1RpbWVvdXQoc2VsZik6CisgICAgICAgICMgUGFzc2luZyBhbiBhY3R1YWwgYWRkcmVzcyBoZXJlIGFzIFB5dGhvbidzIHdyYXBwZXIgZm9yCisgICAgICAgICMgc2VuZHRvKCkgZG9lc24ndCBhbGxvdyBwYXNzaW5nIGEgemVyby1sZW5ndGggb25lOyBQT1NJWAorICAgICAgICAjIHJlcXVpcmVzIHRoYXQgdGhlIGFkZHJlc3MgaXMgaWdub3JlZCBzaW5jZSB0aGUgc29ja2V0IGlzCisgICAgICAgICMgY29ubmVjdGlvbi1tb2RlLCBob3dldmVyLgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRTZW5kKHNlbGYuc2Vydl9jb25uLnNlbmR0bywgYiJhIio1MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2X2FkZHIpCisKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRTZW5kbXNnVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkU2VuZChzZWxmLnNlcnZfY29ubi5zZW5kbXNnLCBbYiJhIio1MTJdKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBUQ1BDbG9zZXJUZXN0KFRocmVhZGVkVENQU29ja2V0VGVzdCk6CiAKQEAgLTEwNjksMTEgKzM1NDMsOCBAQAogICAgICAgICBwYXNzCiAKICAgICBpZiBoYXNhdHRyKHNvY2tldCwgIlNPQ0tfTk9OQkxPQ0siKToKKyAgICAgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAyOCkKICAgICAgICAgZGVmIHRlc3RJbml0Tm9uQmxvY2tpbmcoc2VsZik6Ci0gICAgICAgICAgICB2ID0gbGludXhfdmVyc2lvbigpCi0gICAgICAgICAgICBpZiB2IDwgKDIsIDYsIDI4KToKLSAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJMaW51eCBrZXJuZWwgMi42LjI4IG9yIGhpZ2hlciByZXF1aXJlZCwgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAiLiIuam9pbihtYXAoc3RyLCB2KSkpCiAgICAgICAgICAgICAjIHJlaW5pdCBzZXJ2ZXIgc29ja2V0CiAgICAgICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQogICAgICAgICAgICAgc2VsZi5zZXJ2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNIHwKQEAgLTExNzUsNyArMzY0Niw3IEBACiAgICAgIiIiCiAKICAgICBidWZzaXplID0gLTEgIyBVc2UgZGVmYXVsdCBidWZmZXIgc2l6ZQotICAgIGVuY29kaW5nID0gJ3V0ZjgnCisgICAgZW5jb2RpbmcgPSAndXRmLTgnCiAgICAgZXJyb3JzID0gJ3N0cmljdCcKICAgICBuZXdsaW5lID0gTm9uZQogCkBAIC0xMzU2LDcgKzM4MjcsNyBAQAogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfcmFpc2VfZWludHIoKToKLSAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yKGVycm5vLkVJTlRSKQorICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IoZXJybm8uRUlOVFIsICJpbnRlcnJ1cHRlZCIpCiAKICAgICBkZWYgX3RleHRpb3dyYXBfbW9ja19zb2NrZXQoc2VsZiwgbW9jaywgYnVmZmVyaW5nPS0xKToKICAgICAgICAgcmF3ID0gc29ja2V0LlNvY2tldElPKG1vY2ssICJyIikKQEAgLTEzOTYsNyArMzg2Nyw3IEBACiAgICAgICAgICAgICBkYXRhID0gYicnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkYXRhID0gJycKLSAgICAgICAgICAgIGV4cGVjdGluZyA9IGV4cGVjdGluZy5kZWNvZGUoJ3V0ZjgnKQorICAgICAgICAgICAgZXhwZWN0aW5nID0gZXhwZWN0aW5nLmRlY29kZSgndXRmLTgnKQogICAgICAgICB3aGlsZSBsZW4oZGF0YSkgIT0gbGVuKGV4cGVjdGluZyk6CiAgICAgICAgICAgICBwYXJ0ID0gZm8ucmVhZChzaXplKQogICAgICAgICAgICAgaWYgbm90IHBhcnQ6CkBAIC0xNTU4LDcgKzQwMjksNyBAQAogICAgICIiIlRlc3RzIGZvciBzb2NrZXQubWFrZWZpbGUoKSBpbiB0ZXh0IG1vZGUgKHJhdGhlciB0aGFuIGJpbmFyeSkiIiIKIAogICAgIHJlYWRfbW9kZSA9ICdyJwotICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmOCcpCisgICAgcmVhZF9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgd3JpdGVfbW9kZSA9ICd3YicKICAgICB3cml0ZV9tc2cgPSBNU0cKICAgICBuZXdsaW5lID0gJycKQEAgLTE1NzAsNyArNDA0MSw3IEBACiAgICAgcmVhZF9tb2RlID0gJ3JiJwogICAgIHJlYWRfbXNnID0gTVNHCiAgICAgd3JpdGVfbW9kZSA9ICd3JwotICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0Zi04JykKICAgICBuZXdsaW5lID0gJycKIAogCkBAIC0xNTc4LDkgKzQwNDksOSBAQAogICAgICIiIlRlc3RzIGZvciBzb2NrZXQubWFrZWZpbGUoKSBpbiB0ZXh0IG1vZGUgKHJhdGhlciB0aGFuIGJpbmFyeSkiIiIKIAogICAgIHJlYWRfbW9kZSA9ICdyJwotICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmOCcpCisgICAgcmVhZF9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgd3JpdGVfbW9kZSA9ICd3JwotICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0Zi04JykKICAgICBuZXdsaW5lID0gJycKIAogCkBAIC0xODUyLDYgKzQzMjMsNzggQEAKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHMuYmluZCwgYWRkcmVzcykKIAorICAgIGRlZiB0ZXN0U3RyTmFtZShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGFuIGFic3RyYWN0IG5hbWUgY2FuIGJlIHBhc3NlZCBhcyBhIHN0cmluZy4KKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcy5iaW5kKCJceDAwcHl0aG9uXHgwMHRlc3RceDAwIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRzb2NrbmFtZSgpLCBiIlx4MDBweXRob25ceDAwdGVzdFx4MDAiKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcy5jbG9zZSgpCisKK2NsYXNzIFRlc3RVbml4RG9tYWluKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQorCisgICAgZGVmIGVuY29kZWQoc2VsZiwgcGF0aCk6CisgICAgICAgICMgUmV0dXJuIHRoZSBnaXZlbiBwYXRoIGVuY29kZWQgaW4gdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nLAorICAgICAgICAjIG9yIHNraXAgdGhlIHRlc3QgaWYgdGhpcyBpcyBub3QgcG9zc2libGUuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBvcy5mc2VuY29kZShwYXRoKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiUGF0aG5hbWUgezAhYX0gY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIGZpbGUgIgorICAgICAgICAgICAgICAgICJzeXN0ZW0gZW5jb2RpbmcgezEhcn0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgcGF0aCwgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKSkKKworICAgIGRlZiBiaW5kKHNlbGYsIHNvY2ssIHBhdGgpOgorICAgICAgICAjIEJpbmQgdGhlIHNvY2tldAorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrLmJpbmQocGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIHN0cihlKSA9PSAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAorICAgICAgICAgICAgICAgICAgICAiUGF0aG5hbWUgezAhYX0gaXMgdG9vIGxvbmcgdG8gc2VydmUgYXMgYSBBRl9VTklYIHBhdGgiCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQocGF0aCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdGVzdFN0ckFkZHIoc2VsZik6CisgICAgICAgICMgVGVzdCBiaW5kaW5nIHRvIGFuZCByZXRyaWV2aW5nIGEgbm9ybWFsIHN0cmluZyBwYXRobmFtZS4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5iaW5kKHNlbGYuc29jaywgcGF0aCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQorCisgICAgZGVmIHRlc3RCeXRlc0FkZHIoc2VsZik6CisgICAgICAgICMgVGVzdCBiaW5kaW5nIHRvIGEgYnl0ZXMgcGF0aG5hbWUuCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIHNlbGYuZW5jb2RlZChwYXRoKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQorCisgICAgZGVmIHRlc3RTdXJyb2dhdGVlc2NhcGVCaW5kKHNlbGYpOgorICAgICAgICAjIFRlc3QgYmluZGluZyB0byBhIHZhbGlkIG5vbi1BU0NJSSBwYXRobmFtZSwgd2l0aCB0aGUKKyAgICAgICAgIyBub24tQVNDSUkgYnl0ZXMgc3VwcGxpZWQgdXNpbmcgc3Vycm9nYXRlZXNjYXBlIGVuY29kaW5nLgorICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOX1VOSUNPREUpCisgICAgICAgIGIgPSBzZWxmLmVuY29kZWQocGF0aCkKKyAgICAgICAgc2VsZi5iaW5kKHNlbGYuc29jaywgYi5kZWNvZGUoImFzY2lpIiwgInN1cnJvZ2F0ZWVzY2FwZSIpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zb2NrLmdldHNvY2tuYW1lKCksIHBhdGgpCisKKyAgICBkZWYgdGVzdFVuZW5jb2RhYmxlQWRkcihzZWxmKToKKyAgICAgICAgIyBUZXN0IGJpbmRpbmcgdG8gYSBwYXRobmFtZSB0aGF0IGNhbm5vdCBiZSBlbmNvZGVkIGluIHRoZQorICAgICAgICAjIGZpbGUgc3lzdGVtIGVuY29kaW5nLgorICAgICAgICBpZiBzdXBwb3J0LlRFU1RGTl9VTkVOQ09EQUJMRSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTm8gdW5lbmNvZGFibGUgZmlsZW5hbWUgYXZhaWxhYmxlIikKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTl9VTkVOQ09EQUJMRSkKKyAgICAgICAgc2VsZi5iaW5kKHNlbGYuc29jaywgcGF0aCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogY2xhc3MgQnVmZmVySU9UZXN0KFNvY2tldENvbm5lY3RlZFRlc3QpOgpAQCAtMjA1MiwxMSArNDU5NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAiU09DS19DTE9FWEVDIG5vdCBkZWZpbmVkIikKIEB1bml0dGVzdC5za2lwVW5sZXNzKGZjbnRsLCAibW9kdWxlIGZjbnRsIG5vdCBhdmFpbGFibGUiKQogY2xhc3MgQ2xvZXhlY0NvbnN0YW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAyOCkKICAgICBkZWYgdGVzdF9TT0NLX0NMT0VYRUMoc2VsZik6Ci0gICAgICAgIHYgPSBsaW51eF92ZXJzaW9uKCkKLSAgICAgICAgaWYgdiA8ICgyLCA2LCAyOCk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJMaW51eCBrZXJuZWwgMi42LjI4IG9yIGhpZ2hlciByZXF1aXJlZCwgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAlICIuIi5qb2luKG1hcChzdHIsIHYpKSkKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPQ0tfU1RSRUFNIHwgc29ja2V0LlNPQ0tfQ0xPRVhFQykgYXMgczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnR5cGUgJiBzb2NrZXQuU09DS19DTE9FWEVDKQpAQCAtMjA3NCwxMSArNDYxNCw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMudHlwZSAmIHNvY2tldC5TT0NLX05PTkJMT0NLKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHRpbWVvdXQoKSwgTm9uZSkKIAorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjgpCiAgICAgZGVmIHRlc3RfU09DS19OT05CTE9DSyhzZWxmKToKLSAgICAgICAgdiA9IGxpbnV4X3ZlcnNpb24oKQotICAgICAgICBpZiB2IDwgKDIsIDYsIDI4KToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkxpbnV4IGtlcm5lbCAyLjYuMjggb3IgaGlnaGVyIHJlcXVpcmVkLCBub3QgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICUgIi4iLmpvaW4obWFwKHN0ciwgdikpKQogICAgICAgICAjIGEgbG90IG9mIGl0IHNlZW1zIHNpbGx5IGFuZCByZWR1bmRhbnQsIGJ1dCBJIHdhbnRlZCB0byB0ZXN0IHRoYXQKICAgICAgICAgIyBjaGFuZ2luZyBiYWNrIGFuZCBmb3J0aCB3b3JrZWQgb2sKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULApAQCAtMjExMSw2ICs0NjQ4LDEwOSBAQAogICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQodCkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICJudCIsICJXaW5kb3dzIHNwZWNpZmljIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKG11bHRpcHJvY2Vzc2luZywgIm5lZWQgbXVsdGlwcm9jZXNzaW5nIikKK2NsYXNzIFRlc3RTb2NrZXRTaGFyaW5nKFNvY2tldFRDUFRlc3QpOgorICAgICMgVGhpcyBtdXN0IGJlIGNsYXNzbWV0aG9kIGFuZCBub3Qgc3RhdGljbWV0aG9kIG9yIG11bHRpcHJvY2Vzc2luZworICAgICMgd29uJ3QgYmUgYWJsZSB0byBib290c3RyYXAgaXQuCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJlbW90ZVByb2Nlc3NTZXJ2ZXIoY2xzLCBxKToKKyAgICAgICAgIyBSZWNyZWF0ZSBzb2NrZXQgZnJvbSBzaGFyZWQgZGF0YQorICAgICAgICBzZGF0YSA9IHEuZ2V0KCkKKyAgICAgICAgbWVzc2FnZSA9IHEuZ2V0KCkKKworICAgICAgICBzID0gc29ja2V0LmZyb21zaGFyZShzZGF0YSkKKyAgICAgICAgczIsIGMgPSBzLmFjY2VwdCgpCisKKyAgICAgICAgIyBTZW5kIHRoZSBtZXNzYWdlCisgICAgICAgIHMyLnNlbmRhbGwobWVzc2FnZSkKKyAgICAgICAgczIuY2xvc2UoKQorICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0U2hhcmUoc2VsZik6CisgICAgICAgICMgVHJhbnNmZXIgdGhlIGxpc3RlbmluZyBzZXJ2ZXIgc29ja2V0IHRvIGFub3RoZXIgcHJvY2VzcworICAgICAgICAjIGFuZCBzZXJ2aWNlIGl0IGZyb20gdGhlcmUuCisKKyAgICAgICAgIyBDcmVhdGUgcHJvY2VzczoKKyAgICAgICAgcSA9IG11bHRpcHJvY2Vzc2luZy5RdWV1ZSgpCisgICAgICAgIHAgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5yZW1vdGVQcm9jZXNzU2VydmVyLCBhcmdzPShxLCkpCisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgICMgR2V0IHRoZSBzaGFyZWQgc29ja2V0IGRhdGEKKyAgICAgICAgZGF0YSA9IHNlbGYuc2Vydi5zaGFyZShwLnBpZCkKKworICAgICAgICAjIFBhc3MgdGhlIHNoYXJlZCBzb2NrZXQgdG8gdGhlIG90aGVyIHByb2Nlc3MKKyAgICAgICAgYWRkciA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIHNlbGYuc2Vydi5jbG9zZSgpCisgICAgICAgIHEucHV0KGRhdGEpCisKKyAgICAgICAgIyBUaGUgZGF0YSB0aGF0IHRoZSBzZXJ2ZXIgd2lsbCBzZW5kIHVzCisgICAgICAgIG1lc3NhZ2UgPSBiInNsYXBtYWhmcm8iCisgICAgICAgIHEucHV0KG1lc3NhZ2UpCisKKyAgICAgICAgIyBDb25uZWN0CisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcikKKyAgICAgICAgIyAgbGlzdGVuIGZvciB0aGUgZGF0YQorICAgICAgICBtID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGRhdGEgPSBzLnJlY3YoMTAwKQorICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIG0uYXBwZW5kKGRhdGEpCisgICAgICAgIHMuY2xvc2UoKQorICAgICAgICByZWNlaXZlZCA9IGIiIi5qb2luKG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQsIG1lc3NhZ2UpCisgICAgICAgIHAuam9pbigpCisKKyAgICBkZWYgdGVzdFNoYXJlTGVuZ3RoKHNlbGYpOgorICAgICAgICBkYXRhID0gc2VsZi5zZXJ2LnNoYXJlKG9zLmdldHBpZCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzb2NrZXQuZnJvbXNoYXJlLCBkYXRhWzotMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNvY2tldC5mcm9tc2hhcmUsIGRhdGErYiJmb28iKQorCisgICAgZGVmIGNvbXBhcmVTb2NrZXRzKHNlbGYsIG9yZywgb3RoZXIpOgorICAgICAgICAjIHNvY2tldCBzaGFyaW5nIGlzIGV4cGVjdGVkIHRvIHdvcmsgb25seSBmb3IgYmxvY2tpbmcgc29ja2V0CisgICAgICAgICMgc2luY2UgdGhlIGludGVybmFsIHB5dGhvbiB0aW1vdXQgdmFsdWUgaXNuJ3QgdHJhbnNmZXJlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcuZ2V0dGltZW91dCgpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZy5nZXR0aW1lb3V0KCksIG90aGVyLmdldHRpbWVvdXQoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZy5mYW1pbHksIG90aGVyLmZhbWlseSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcudHlwZSwgb3RoZXIudHlwZSkKKyAgICAgICAgIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgIjAiIGZvciBwcm90bywgdGhlbgorICAgICAgICAjIGludGVybmFsbHkgd2luZG93cyB3aWxsIGhhdmUgcGlja2VkIHRoZSBjb3JyZWN0IHZhbHVlLgorICAgICAgICAjIFB5dGhvbiBpbnRyb3NwZWN0aW9uIG9uIHRoZSBzb2NrZXQgaG93ZXZlciB3aWxsIHN0aWxsIHJldHVybgorICAgICAgICAjIDAuICBGb3IgdGhlIHNoYXJlZCBzb2NrZXQsIHRoZSBweXRob24gdmFsdWUgaXMgcmVjcmVhdGVkCisgICAgICAgICMgZnJvbSB0aGUgYWN0dWFsIHZhbHVlLCBzbyBpdCBtYXkgbm90IGNvbXBhcmUgY29ycmVjdGx5LgorICAgICAgICBpZiBvcmcucHJvdG8gIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JnLnByb3RvLCBvdGhlci5wcm90bykKKworICAgIGRlZiB0ZXN0U2hhcmVMb2NhbChzZWxmKToKKyAgICAgICAgZGF0YSA9IHNlbGYuc2Vydi5zaGFyZShvcy5nZXRwaWQoKSkKKyAgICAgICAgcyA9IHNvY2tldC5mcm9tc2hhcmUoZGF0YSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jb21wYXJlU29ja2V0cyhzZWxmLnNlcnYsIHMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0VHlwZXMoc2VsZik6CisgICAgICAgIGZhbWlsaWVzID0gW3NvY2tldC5BRl9JTkVULCBzb2NrZXQuQUZfSU5FVDZdCisgICAgICAgIHR5cGVzID0gW3NvY2tldC5TT0NLX1NUUkVBTSwgc29ja2V0LlNPQ0tfREdSQU1dCisgICAgICAgIGZvciBmIGluIGZhbWlsaWVzOgorICAgICAgICAgICAgZm9yIHQgaW4gdHlwZXM6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBzb2NrZXQuc29ja2V0KGYsIHQpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgVGhpcyBjb21iaW5hdGlvbiBpcyBub3Qgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc291cmNlLnNoYXJlKG9zLmdldHBpZCgpKQorICAgICAgICAgICAgICAgICAgICBzaGFyZWQgPSBzb2NrZXQuZnJvbXNoYXJlKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tcGFyZVNvY2tldHMoc291cmNlLCBzaGFyZWQpCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQuY2xvc2UoKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gW0dlbmVyYWxNb2R1bGVUZXN0cywgQmFzaWNUQ1BUZXN0LCBUQ1BDbG9zZXJUZXN0LCBUQ1BUaW1lb3V0VGVzdCwKICAgICAgICAgICAgICBUZXN0RXhjZXB0aW9ucywgQnVmZmVySU9UZXN0LCBCYXNpY1RDUFRlc3QyLCBCYXNpY1VEUFRlc3QsIFVEUFRpbWVvdXRUZXN0IF0KQEAgLTIxMzQsMTEgKzQ3NzQsNDEgQEAKICAgICBdKQogICAgIGlmIGhhc2F0dHIoc29ja2V0LCAic29ja2V0cGFpciIpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoQmFzaWNTb2NrZXRQYWlyVGVzdCkKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4Mic6CisgICAgaWYgaGFzYXR0cihzb2NrZXQsICJBRl9VTklYIik6CisgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0VW5peERvbWFpbikKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4JzoKICAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3RMaW51eEFic3RyYWN0TmFtZXNwYWNlKQogICAgIGlmIGlzVGlwY0F2YWlsYWJsZSgpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoVElQQ1Rlc3QpCiAgICAgICAgIHRlc3RzLmFwcGVuZChUSVBDVGhyZWFkYWJsZVRlc3QpCisgICAgdGVzdHMuZXh0ZW5kKFtCYXNpY0NBTlRlc3QsIENBTlRlc3RdKQorICAgIHRlc3RzLmV4dGVuZChbQmFzaWNSRFNUZXN0LCBSRFNUZXN0XSkKKyAgICB0ZXN0cy5leHRlbmQoWworICAgICAgICBDbXNnTWFjcm9UZXN0cywKKyAgICAgICAgU2VuZG1zZ1VEUFRlc3QsCisgICAgICAgIFJlY3Ztc2dVRFBUZXN0LAorICAgICAgICBSZWN2bXNnSW50b1VEUFRlc3QsCisgICAgICAgIFNlbmRtc2dVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ1VEUDZUZXN0LAorICAgICAgICBSZWN2bXNnUkZDMzU0MkFuY2lsbGFyeVVEUDZUZXN0LAorICAgICAgICBSZWN2bXNnSW50b1JGQzM1NDJBbmNpbGxhcnlVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9VRFA2VGVzdCwKKyAgICAgICAgU2VuZG1zZ1RDUFRlc3QsCisgICAgICAgIFJlY3Ztc2dUQ1BUZXN0LAorICAgICAgICBSZWN2bXNnSW50b1RDUFRlc3QsCisgICAgICAgIFNlbmRtc2dTQ1RQU3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ1NDVFBTdHJlYW1UZXN0LAorICAgICAgICBSZWN2bXNnSW50b1NDVFBTdHJlYW1UZXN0LAorICAgICAgICBTZW5kbXNnVW5peFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dVbml4U3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9Vbml4U3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ1NDTVJpZ2h0c1N0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dJbnRvU0NNUmlnaHRzU3RyZWFtVGVzdCwKKyAgICAgICAgIyBUaGVzZSBhcmUgc2xvdyB3aGVuIHNldGl0aW1lcigpIGlzIG5vdCBhdmFpbGFibGUKKyAgICAgICAgSW50ZXJydXB0ZWRSZWN2VGltZW91dFRlc3QsCisgICAgICAgIEludGVycnVwdGVkU2VuZFRpbWVvdXRUZXN0LAorICAgICAgICBUZXN0U29ja2V0U2hhcmluZywKKyAgICBdKQogCiAgICAgdGhyZWFkX2luZm8gPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQppbmRleCBjYTIzMzAxLi4zNTNmOGZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQpAQCAtMjQ0LDcgKzI0NCw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgKz0gMQogICAgICAgICAgICAgICAgIGlmIHNlbGYuY2FsbGVkID09IDE6CiAgICAgICAgICAgICAgICAgICAgICMgcmFpc2UgdGhlIGV4Y2VwdGlvbiBvbiBmaXJzdCBjYWxsCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGVjdC5lcnJvcihlcnJuby5FSU5UUiwgb3Muc3RyZXJyb3IoZXJybm8uRUlOVFIpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVJTlRSLCBvcy5zdHJlcnJvcihlcnJuby5FSU5UUikpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBSZXR1cm4gcmVhbCBzZWxlY3QgdmFsdWUgZm9yIGNvbnNlY3V0aXZlIGNhbGxzCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbGRfc2VsZWN0KCphcmdzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQppbmRleCA1NTExNTFlLi41MTc2MmNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQpAQCAtNDIsNiArNDIsOSBAQAogT05MWUtFWSA9IGRhdGFfZmlsZSgic3NsX2tleS5wZW0iKQogQllURVNfT05MWUNFUlQgPSBvcy5mc2VuY29kZShPTkxZQ0VSVCkKIEJZVEVTX09OTFlLRVkgPSBvcy5mc2VuY29kZShPTkxZS0VZKQorQ0VSVEZJTEVfUFJPVEVDVEVEID0gZGF0YV9maWxlKCJrZXljZXJ0LnBhc3N3ZC5wZW0iKQorT05MWUtFWV9QUk9URUNURUQgPSBkYXRhX2ZpbGUoInNzbF9rZXkucGFzc3dkLnBlbSIpCitLRVlfUEFTU1dPUkQgPSAic29tZXBhc3MiCiBDQVBBVEggPSBkYXRhX2ZpbGUoImNhcGF0aCIpCiBCWVRFU19DQVBBVEggPSBvcy5mc2VuY29kZShDQVBBVEgpCiAKQEAgLTUzLDYgKzU2LDggQEAKIEJBREtFWSA9IGRhdGFfZmlsZSgiYmFka2V5LnBlbSIpCiBOT0tJQUNFUlQgPSBkYXRhX2ZpbGUoIm5va2lhLnBlbSIpCiAKK0RIRklMRSA9IGRhdGFfZmlsZSgiZGg1MTIucGVtIikKK0JZVEVTX0RIRklMRSA9IG9zLmZzZW5jb2RlKERIRklMRSkKIAogZGVmIGhhbmRsZV9lcnJvcihwcmVmaXgpOgogICAgIGV4Y19mb3JtYXQgPSAnICcuam9pbih0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpKQpAQCAtOTUsNyArMTAwLDE0IEBACiAgICAgICAgIHNzbC5DRVJUX05PTkUKICAgICAgICAgc3NsLkNFUlRfT1BUSU9OQUwKICAgICAgICAgc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgc3NsLk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRQorICAgICAgICBzc2wuT1BfU0lOR0xFX0RIX1VTRQorICAgICAgICBpZiBzc2wuSEFTX0VDREg6CisgICAgICAgICAgICBzc2wuT1BfU0lOR0xFX0VDREhfVVNFCisgICAgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMSwgMCk6CisgICAgICAgICAgICBzc2wuT1BfTk9fQ09NUFJFU1NJT04KICAgICAgICAgc2VsZi5hc3NlcnRJbihzc2wuSEFTX1NOSSwge1RydWUsIEZhbHNlfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzc2wuSEFTX0VDREgsIHtUcnVlLCBGYWxzZX0pCiAKICAgICBkZWYgdGVzdF9yYW5kb20oc2VsZik6CiAgICAgICAgIHYgPSBzc2wuUkFORF9zdGF0dXMoKQpAQCAtMTAzLDYgKzExNSwxNiBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4gUkFORF9zdGF0dXMgaXMgJWQgKCVzKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh2LCAodiBhbmQgInN1ZmZpY2llbnQgcmFuZG9tbmVzcyIpIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN1ZmZpY2llbnQgcmFuZG9tbmVzcyIpKQorCisgICAgICAgIGRhdGEsIGlzX2NyeXB0b2dyYXBoaWMgPSBzc2wuUkFORF9wc2V1ZG9fYnl0ZXMoMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpc19jcnlwdG9ncmFwaGljLCB2ID09IDEpCisgICAgICAgIGlmIHY6CisgICAgICAgICAgICBkYXRhID0gc3NsLlJBTkRfYnl0ZXMoMTYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgMTYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbC5SQU5EX2J5dGVzLCAxNikKKwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzc2wuUkFORF9lZ2QoMSkKICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKQEAgLTMzNyw2ICszNTksMjUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGN0eC53cmFwX3NvY2tldCwgc29jaywgVHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0ic29tZS5ob3N0bmFtZSIpCiAKKyAgICBkZWYgdGVzdF91bmtub3duX2NoYW5uZWxfYmluZGluZyhzZWxmKToKKyAgICAgICAgIyBzaG91bGQgcmFpc2UgVmFsdWVFcnJvciBmb3IgdW5rbm93biB0eXBlCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidW5rbm93bi10eXBlIikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKCJ0bHMtdW5pcXVlIiBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICIndGxzLXVuaXF1ZScgY2hhbm5lbCBiaW5kaW5nIG5vdCBhdmFpbGFibGUiKQorICAgIGRlZiB0ZXN0X3Rsc191bmlxdWVfY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgorICAgICAgICAjIHVuY29ubmVjdGVkIHNob3VsZCByZXR1cm4gTm9uZSBmb3Iga25vd24gdHlwZQorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpKQorICAgICAgICAjIHRoZSBzYW1lIGZvciBzZXJ2ZXItc2lkZQorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKKwogY2xhc3MgQ29udGV4dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEBza2lwX2lmX2Jyb2tlbl91YnVudHVfc3NsCkBAIC00MjcsNiArNDY4LDYwIEBACiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImtleSB2YWx1ZXMgbWlzbWF0Y2giKToKICAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oU1ZOX1BZVEhPTl9PUkdfUk9PVF9DRVJULCBPTkxZS0VZKQorICAgICAgICAjIFBhc3N3b3JkIHByb3RlY3RlZCBrZXkgYW5kIGNlcnQKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPUtFWV9QQVNTV09SRCkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPUtFWV9QQVNTV09SRC5lbmNvZGUoKSkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9Ynl0ZWFycmF5KEtFWV9QQVNTV09SRC5lbmNvZGUoKSkpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oT05MWUNFUlQsIE9OTFlLRVlfUFJPVEVDVEVELCBLRVlfUEFTU1dPUkQpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oT05MWUNFUlQsIE9OTFlLRVlfUFJPVEVDVEVELCBLRVlfUEFTU1dPUkQuZW5jb2RlKCkpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oT05MWUNFUlQsIE9OTFlLRVlfUFJPVEVDVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShLRVlfUEFTU1dPUkQuZW5jb2RlKCkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAic2hvdWxkIGJlIGEgc3RyaW5nIik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9VHJ1ZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPSJiYWRwYXNzIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJjYW5ub3QgYmUgbG9uZ2VyIik6CisgICAgICAgICAgICAjIG9wZW5zc2wgaGFzIGEgZml4ZWQgbGltaXQgb24gdGhlIHBhc3N3b3JkIGJ1ZmZlci4KKyAgICAgICAgICAgICMgUEVNX0JVRlNJWkUgaXMgZ2VuZXJhbGx5IHNldCB0byAxa2IuCisgICAgICAgICAgICAjIFJldHVybiBhIHN0cmluZyBsYXJnZXIgdGhhbiB0aGlzLgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWInYScgKiAxMDI0MDApCisgICAgICAgICMgUGFzc3dvcmQgY2FsbGJhY2sKKyAgICAgICAgZGVmIGdldHBhc3NfdW5pY29kZSgpOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9QQVNTV09SRAorICAgICAgICBkZWYgZ2V0cGFzc19ieXRlcygpOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9QQVNTV09SRC5lbmNvZGUoKQorICAgICAgICBkZWYgZ2V0cGFzc19ieXRlYXJyYXkoKToKKyAgICAgICAgICAgIHJldHVybiBieXRlYXJyYXkoS0VZX1BBU1NXT1JELmVuY29kZSgpKQorICAgICAgICBkZWYgZ2V0cGFzc19iYWRwYXNzKCk6CisgICAgICAgICAgICByZXR1cm4gImJhZHBhc3MiCisgICAgICAgIGRlZiBnZXRwYXNzX2h1Z2UoKToKKyAgICAgICAgICAgIHJldHVybiBiJ2EnICogKDEwMjQgKiAxMDI0KQorICAgICAgICBkZWYgZ2V0cGFzc19iYWRfdHlwZSgpOgorICAgICAgICAgICAgcmV0dXJuIDkKKyAgICAgICAgZGVmIGdldHBhc3NfZXhjZXB0aW9uKCk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2dldHBhc3MgZXJyb3InKQorICAgICAgICBjbGFzcyBHZXRQYXNzQ2FsbGFibGU6CisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEtFWV9QQVNTV09SRAorICAgICAgICAgICAgZGVmIGdldHBhc3Moc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEtFWV9QQVNTV09SRAorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc191bmljb2RlKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19ieXRlcykKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfYnl0ZWFycmF5KQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9R2V0UGFzc0NhbGxhYmxlKCkpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkPUdldFBhc3NDYWxsYWJsZSgpLmdldHBhc3MpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2JhZHBhc3MpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiY2Fubm90IGJlIGxvbmdlciIpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfaHVnZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIm11c3QgcmV0dXJuIGEgc3RyaW5nIik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19iYWRfdHlwZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgImdldHBhc3MgZXJyb3IiKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2V4Y2VwdGlvbikKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhlIHBhc3N3b3JkIGZ1bmN0aW9uIGlzbid0IGNhbGxlZCBpZiBpdCBpc24ndCBuZWVkZWQKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSwgcGFzc3dvcmQ9Z2V0cGFzc19leGNlcHRpb24pCiAKICAgICBkZWYgdGVzdF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2VsZik6CiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKQEAgLTQ0Nyw2ICs1NDIsMTkgQEAKICAgICAgICAgIyBJc3N1ZSAjMTA5ODk6IGNyYXNoIGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgdHlwZSBpcyBpbnZhbGlkCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucywgTm9uZSwgVHJ1ZSkKIAorICAgIGRlZiB0ZXN0X2xvYWRfZGhfcGFyYW1zKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eC5sb2FkX2RoX3BhcmFtcyhESEZJTEUpCisgICAgICAgIGlmIG9zLm5hbWUgIT0gJ250JzoKKyAgICAgICAgICAgIGN0eC5sb2FkX2RoX3BhcmFtcyhCWVRFU19ESEZJTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3R4LmxvYWRfZGhfcGFyYW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5sb2FkX2RoX3BhcmFtcywgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvcikgYXMgY206CisgICAgICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoV1JPTkdDRVJUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PRU5UKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgY206CisgICAgICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoQ0VSVEZJTEUpCisKICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbAogICAgIGRlZiB0ZXN0X3Nlc3Npb25fc3RhdHMoc2VsZik6CiAgICAgICAgIGZvciBwcm90byBpbiBQUk9UT0NPTFM6CkBAIC00NzEsNiArNTc5LDU3IEBACiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgY3R4LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wuSEFTX0VDREgsICJFQ0RIIGRpc2FibGVkIG9uIHRoaXMgT3BlblNTTCBidWlsZCIpCisgICAgZGVmIHRlc3Rfc2V0X2VjZGhfY3VydmUoc2VsZik6CisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgY3R4LnNldF9lY2RoX2N1cnZlKCJwcmltZTI1NnYxIikKKyAgICAgICAgY3R4LnNldF9lY2RoX2N1cnZlKGIicHJpbWUyNTZ2MSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3R4LnNldF9lY2RoX2N1cnZlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5zZXRfZWNkaF9jdXJ2ZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3R4LnNldF9lY2RoX2N1cnZlLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3R4LnNldF9lY2RoX2N1cnZlLCBiImZvbyIpCisKKworY2xhc3MgU1NMRXJyb3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zdHIoc2VsZik6CisgICAgICAgICMgVGhlIHN0cigpIG9mIGEgU1NMRXJyb3IgZG9lc24ndCBpbmNsdWRlIHRoZSBlcnJubworICAgICAgICBlID0gc3NsLlNTTEVycm9yKDEsICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgMSkKKyAgICAgICAgIyBTYW1lIGZvciBhIHN1YmNsYXNzCisgICAgICAgIGUgPSBzc2wuU1NMWmVyb1JldHVybkVycm9yKDEsICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgMSkKKworICAgIGRlZiB0ZXN0X2xpYl9yZWFzb24oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgbGlicmFyeSBhbmQgcmVhc29uIGF0dHJpYnV0ZXMKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgY206CisgICAgICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoQ0VSVEZJTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmxpYnJhcnksICdQRU0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb24sICdOT19TVEFSVF9MSU5FJykKKyAgICAgICAgcyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoIltQRU06IE5PX1NUQVJUX0xJTkVdIG5vIHN0YXJ0IGxpbmUiKSwgcykKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGFwcHJvcHJpYXRlIFNTTEVycm9yIHN1YmNsYXNzIGlzIHJhaXNlZAorICAgICAgICAjICh0aGlzIG9ubHkgdGVzdHMgb25lIG9mIHRoZW0pCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgczoKKyAgICAgICAgICAgIHMuYmluZCgoIjEyNy4wLjAuMSIsIDApKQorICAgICAgICAgICAgcy5saXN0ZW4oNSkKKyAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIGM6CisgICAgICAgICAgICAgICAgYy5jb25uZWN0KHMuZ2V0c29ja25hbWUoKSkKKyAgICAgICAgICAgICAgICBjLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICAgICAgICAgIGMgPSBjdHgud3JhcF9zb2NrZXQoYywgRmFsc2UsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTFdhbnRSZWFkRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgICAgICBjLmRvX2hhbmRzaGFrZSgpCisgICAgICAgICAgICAgICAgcyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuc3RhcnRzd2l0aCgiVGhlIG9wZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlIChyZWFkKSIpLCBzKQorICAgICAgICAgICAgICAgICMgRm9yIGNvbXBhdGliaWxpdHkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQpCisKIAogY2xhc3MgTmV0d29ya2VkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01MzMsMTMgKzY5MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1dSSVRFOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSwgNS4wKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSwgNS4wKQogICAgICAgICAgICAgICAgICMgU1NMIGVzdGFibGlzaGVkCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKICAgICAgICAgICAgIGZpbmFsbHk6CkBAIC02NTksMzcgKzgxNSwzOSBAQAogICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxCiAgICAgICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdKQotICAgICAgICAgICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSkKKyAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdKQogICAgICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5OZWVkZWQgJWQgY2FsbHMgdG8gZG9faGFuZHNoYWtlKCkgdG8gZXN0YWJsaXNoIHNlc3Npb24uXG4iICUgY291bnQpCiAKICAgICBkZWYgdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzdm4ucHl0aG9uLm9yZyIpOgotICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKCJzdm4ucHl0aG9uLm9yZyIsIDQ0MykpCi0gICAgICAgICAgICBpZiBub3QgcGVtOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uIHN2bi5weXRob24ub3JnOjQ0MyEiKQorICAgICAgICBkZWYgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShob3N0LCBwb3J0LCBjZXJ0PU5vbmUpOgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChob3N0KToKKyAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCkpCisgICAgICAgICAgICAgICAgaWYgbm90IHBlbToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKIAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCgic3ZuLnB5dGhvbi5vcmciLCA0NDMpLCBjYV9jZXJ0cz1DRVJURklMRSkKLSAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgeDoKLSAgICAgICAgICAgICAgICAjc2hvdWxkIGZhaWwKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwgY2FfY2VydHM9Q0VSVEZJTEUpCisgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyB4OgorICAgICAgICAgICAgICAgICAgICAjc2hvdWxkIGZhaWwKKyAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiJXNcbiIgJSB4KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiR290IHNlcnZlciBjZXJ0aWZpY2F0ZSAlcyBmb3IgJXM6JXMhIiAlIChwZW0sIGhvc3QsIHBvcnQpKQorCisgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLCBjYV9jZXJ0cz1jZXJ0KQorICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCiAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiR290IHNlcnZlciBjZXJ0aWZpY2F0ZSAlcyBmb3Igc3ZuLnB5dGhvbi5vcmchIiAlIHBlbSkKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5WZXJpZmllZCBjZXJ0aWZpY2F0ZSBmb3IgJXM6JXMgaXNcbiVzXG4iICUgKGhvc3QsIHBvcnQgLHBlbSkpCiAKLSAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCgic3ZuLnB5dGhvbi5vcmciLCA0NDMpLCBjYV9jZXJ0cz1TVk5fUFlUSE9OX09SR19ST09UX0NFUlQpCi0gICAgICAgICAgICBpZiBub3QgcGVtOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uIHN2bi5weXRob24ub3JnOjQ0MyEiKQotICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yIHN2bi5weXRob24ub3JnOjQ0MyBpc1xuJXNcbiIgJSBwZW0pCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoJ3N2bi5weXRob24ub3JnJywgNDQzLCBTVk5fUFlUSE9OX09SR19ST09UX0NFUlQpCisgICAgICAgIGlmIHN1cHBvcnQuSVBWNl9FTkFCTEVEOgorICAgICAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgnaXB2Ni5nb29nbGUuY29tJywgNDQzKQogCiAgICAgZGVmIHRlc3RfY2lwaGVycyhzZWxmKToKICAgICAgICAgcmVtb3RlID0gKCJzdm4ucHl0aG9uLm9yZyIsIDQ0MykKQEAgLTc2Nyw2ICs5MjUsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zc2xjb25uID0gc2VsZi5zZXJ2ZXIuY29udGV4dC53cmFwX3NvY2tldCgKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29jaywgc2VydmVyX3NpZGU9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VsZWN0ZWRfcHJvdG9jb2xzLmFwcGVuZChzZWxmLnNzbGNvbm4uc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkpCiAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAjIFhYWCBWYXJpb3VzIGVycm9ycyBjYW4gaGF2ZSBoYXBwZW5lZCBoZXJlLCBmb3IgZXhhbXBsZQogICAgICAgICAgICAgICAgICAgICAjIGEgbWlzbWF0Y2hpbmcgcHJvdG9jb2wgdmVyc2lvbiwgYW4gaW52YWxpZCBjZXJ0aWZpY2F0ZSwKQEAgLTc4OSw2ICs5NDgsOCBAQAogICAgICAgICAgICAgICAgICAgICBjaXBoZXIgPSBzZWxmLnNzbGNvbm4uY2lwaGVyKCkKICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jaGF0dHk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgc2VydmVyOiBjb25uZWN0aW9uIGNpcGhlciBpcyBub3cgIiArIHN0cihjaXBoZXIpICsgIlxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBzZXJ2ZXI6IHNlbGVjdGVkIHByb3RvY29sIGlzIG5vdyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc3RyKHNlbGYuc3NsY29ubi5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKSkgKyAiXG4iKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgICAgICBkZWYgcmVhZChzZWxmKToKQEAgLTg0Myw2ICsxMDA0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zc2xjb25uID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZSBhbmQgc2VsZi5zZXJ2ZXIuY29ubmVjdGlvbmNoYXR0eToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIHNlcnZlcjogY29ubmVjdGlvbiBpcyBub3cgdW5lbmNyeXB0ZWQuLi5cbiIpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHN0cmlwcGVkID09IGInQ0IgdGxzLXVuaXF1ZSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jb25uZWN0aW9uY2hhdHR5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgc2VydmVyOiByZWFkIENCIHRscy11bmlxdWUgZnJvbSBjbGllbnQsIHNlbmRpbmcgb3VyIENCIGRhdGEuLi5cbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuc3NsY29ubi5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHJlcHIoZGF0YSkuZW5jb2RlKCJ1cy1hc2NpaSIpICsgYiJcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0LnZlcmJvc2UgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLmNvbm5lY3Rpb25jaGF0dHkpOgpAQCAtODYyLDcgKzEwMjgsNyBAQAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY2VydGlmaWNhdGU9Tm9uZSwgc3NsX3ZlcnNpb249Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGNlcnRyZXFzPU5vbmUsIGNhY2VydHM9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PUZhbHNlLCBzdGFydHRsc19zZXJ2ZXI9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgICBucG5fcHJvdG9jb2xzPU5vbmUsIGNpcGhlcnM9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICAgICAgIGlmIGNvbnRleHQ6CiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAogICAgICAgICAgICAgZWxzZToKQEAgLTg3NSw2ICsxMDQxLDggQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWNlcnRzKQogICAgICAgICAgICAgICAgIGlmIGNlcnRpZmljYXRlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRpZmljYXRlKQorICAgICAgICAgICAgICAgIGlmIG5wbl9wcm90b2NvbHM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhucG5fcHJvdG9jb2xzKQogICAgICAgICAgICAgICAgIGlmIGNpcGhlcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfY2lwaGVycyhjaXBoZXJzKQogICAgICAgICAgICAgc2VsZi5jaGF0dHkgPSBjaGF0dHkKQEAgLTg4NCw2ICsxMDUyLDcgQEAKICAgICAgICAgICAgIHNlbGYucG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc29jaykKICAgICAgICAgICAgIHNlbGYuZmxhZyA9IE5vbmUKICAgICAgICAgICAgIHNlbGYuYWN0aXZlID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRfcHJvdG9jb2xzID0gW10KICAgICAgICAgICAgIHNlbGYuY29ubl9lcnJvcnMgPSBbXQogICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQogICAgICAgICAgICAgc2VsZi5kYWVtb24gPSBUcnVlCkBAIC05NTEsMTIgKzExMjAsMTEgQEAKICAgICAgICAgICAgICAgICBkZWYgX2RvX3NzbF9oYW5kc2hha2Uoc2VsZik6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gaW4gKHNzbC5TU0xfRVJST1JfV0FOVF9SRUFELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5TU0xfRVJST1JfV0FOVF9XUklURSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfRU9GOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoc3NsLlNTTFdhbnRSZWFkRXJyb3IsIHNzbC5TU0xXYW50V3JpdGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFT0ZFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdID09IGVycm5vLkVDT05OQUJPUlRFRDoKQEAgLTEwNzksNiArMTI0Nyw3IEBACiAgICAgICAgIExhdW5jaCBhIHNlcnZlciwgY29ubmVjdCBhIGNsaWVudCB0byBpdCBhbmQgdHJ5IHZhcmlvdXMgcmVhZHMKICAgICAgICAgYW5kIHdyaXRlcy4KICAgICAgICAgIiIiCisgICAgICAgIHN0YXRzID0ge30KICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9c2VydmVyX2NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9Y2hhdHR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKQEAgLTExMDQsNyArMTI3MywxNCBAQAogICAgICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25jaGF0dHk6CiAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBjbGllbnQ6ICBjbG9zaW5nIGNvbm5lY3Rpb24uXG4iKQorICAgICAgICAgICAgICAgIHN0YXRzLnVwZGF0ZSh7CisgICAgICAgICAgICAgICAgICAgICdjb21wcmVzc2lvbic6IHMuY29tcHJlc3Npb24oKSwKKyAgICAgICAgICAgICAgICAgICAgJ2NpcGhlcic6IHMuY2lwaGVyKCksCisgICAgICAgICAgICAgICAgICAgICdjbGllbnRfbnBuX3Byb3RvY29sJzogcy5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKQorICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgICAgICBzdGF0c1snc2VydmVyX25wbl9wcm90b2NvbHMnXSA9IHNlcnZlci5zZWxlY3RlZF9wcm90b2NvbHMKKyAgICAgICAgcmV0dXJuIHN0YXRzCiAKICAgICBkZWYgdHJ5X3Byb3RvY29sX2NvbWJvKHNlcnZlcl9wcm90b2NvbCwgY2xpZW50X3Byb3RvY29sLCBleHBlY3Rfc3VjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRzcmVxcz1Ob25lLCBzZXJ2ZXJfb3B0aW9ucz0wLCBjbGllbnRfb3B0aW9ucz0wKToKQEAgLTEyNTYsNyArMTQzMiw4IEBACiAgICAgICAgICAgICAgICAgdC5qb2luKCkKIAogICAgICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbAotICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYyJyksICJuZWVkIFNTTHYyIikKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3BlblNTTCBpcyBjb21waWxlZCB3aXRob3V0IFNTTHYyIHN1cHBvcnQiKQogICAgICAgICBkZWYgdGVzdF9wcm90b2NvbF9zc2x2MihzZWxmKToKICAgICAgICAgICAgICIiIkNvbm5lY3RpbmcgdG8gYW4gU1NMdjIgc2VydmVyIHdpdGggdmFyaW91cyBjbGllbnQgb3B0aW9ucyIiIgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgpAQCAtMTU2Miw2ICsxNzM5LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgIyBjb25zdW1lIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgIHMucmVhZCgpCisKKyAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSBzZW5kbXNnIGV0IGFsIGFyZSBkaXNhbGxvd2VkIHRvIGF2b2lkCisgICAgICAgICAgICAgICAgIyBpbmFkdmVydGVudCBkaXNjbG9zdXJlIG9mIGRhdGEgYW5kL29yIGNvcnJ1cHRpb24KKyAgICAgICAgICAgICAgICAjIG9mIHRoZSBlbmNyeXB0ZWQgZGF0YSBzdHJlYW0KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzLnNlbmRtc2csIFtiImRhdGEiXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzLnJlY3Ztc2csIDEwMCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucmVjdm1zZ19pbnRvLCBieXRlYXJyYXkoMTAwKSkKKwogICAgICAgICAgICAgICAgIHMud3JpdGUoYiJvdmVyXG4iKQogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQogCkBAIC0xNjMwLDYgKzE4MTYsMTM1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5vIHNoYXJlZCBjaXBoZXIiLCBzdHIoc2VydmVyLmNvbm5fZXJyb3JzWzBdKSkKIAorICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygidGxzLXVuaXF1ZSIgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIid0bHMtdW5pcXVlJyBjaGFubmVsIGJpbmRpbmcgbm90IGF2YWlsYWJsZSIpCisgICAgICAgIGRlZiB0ZXN0X3Rsc191bmlxdWVfY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgorICAgICAgICAgICAgIiIiVGVzdCB0bHMtdW5pcXVlIGNoYW5uZWwgYmluZGluZy4iIiIKKyAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCisKKyAgICAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihDRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0cmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNlcnRzPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCisgICAgICAgICAgICB3aXRoIHNlcnZlcjoKKyAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBkYXRhCisgICAgICAgICAgICAgICAgY2JfZGF0YSA9IHMuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpCisgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgZ290IGNoYW5uZWwgYmluZGluZyBkYXRhOiB7MCFyfVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoY2JfZGF0YSkpCisKKyAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGl0IGlzIHNhbmUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShjYl9kYXRhKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNiX2RhdGEpLCAxMikgIyBUcnVlIGZvciBUTFN2MQorCisgICAgICAgICAgICAgICAgIyBhbmQgY29tcGFyZSB3aXRoIHRoZSBwZWVycyB2ZXJzaW9uCisgICAgICAgICAgICAgICAgcy53cml0ZShiIkNCIHRscy11bmlxdWVcbiIpCisgICAgICAgICAgICAgICAgcGVlcl9kYXRhX3JlcHIgPSBzLnJlYWQoKS5zdHJpcCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwZWVyX2RhdGFfcmVwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoY2JfZGF0YSkuZW5jb2RlKCJ1cy1hc2NpaSIpKQorICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorCisgICAgICAgICAgICAgICAgIyBub3csIGFnYWluCisgICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICBuZXdfY2JfZGF0YSA9IHMuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpCisgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgZ290IGFub3RoZXIgY2hhbm5lbCBiaW5kaW5nIGRhdGE6IHswIXJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChuZXdfY2JfZGF0YSkpCisgICAgICAgICAgICAgICAgIyBpcyBpdCByZWFsbHkgdW5pcXVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjYl9kYXRhLCBuZXdfY2JfZGF0YSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShjYl9kYXRhKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNiX2RhdGEpLCAxMikgIyBUcnVlIGZvciBUTFN2MQorICAgICAgICAgICAgICAgIHMud3JpdGUoYiJDQiB0bHMtdW5pcXVlXG4iKQorICAgICAgICAgICAgICAgIHBlZXJfZGF0YV9yZXByID0gcy5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGVlcl9kYXRhX3JlcHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG5ld19jYl9kYXRhKS5lbmNvZGUoInVzLWFzY2lpIikpCisgICAgICAgICAgICAgICAgcy5jbG9zZSgpCisKKyAgICAgICAgZGVmIHRlc3RfY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgZ290IGNvbXByZXNzaW9uOiB7IXJ9XG4iLmZvcm1hdChzdGF0c1snY29tcHJlc3Npb24nXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHN0YXRzWydjb21wcmVzc2lvbiddLCB7IE5vbmUsICdaTElCJywgJ1JMRScgfSkKKworICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNzbCwgJ09QX05PX0NPTVBSRVNTSU9OJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzc2wuT1BfTk9fQ09NUFJFU1NJT04gbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorICAgICAgICBkZWYgdGVzdF9jb21wcmVzc2lvbl9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fQ09NUFJFU1NJT04KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGF0c1snY29tcHJlc3Npb24nXSwgTm9uZSkKKworICAgICAgICBkZWYgdGVzdF9kaF9wYXJhbXMoc2VsZik6CisgICAgICAgICAgICAjIENoZWNrIHdlIGNhbiBnZXQgYSBjb25uZWN0aW9uIHdpdGggZXBoZW1lcmFsIERpZmZpZS1IZWxsbWFuCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfZGhfcGFyYW1zKERIRklMRSkKKyAgICAgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoImtFREgiKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY29udGV4dCwgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICBjaXBoZXIgPSBzdGF0c1siY2lwaGVyIl1bMF0KKyAgICAgICAgICAgIHBhcnRzID0gY2lwaGVyLnNwbGl0KCItIikKKyAgICAgICAgICAgIGlmICJBREgiIG5vdCBpbiBwYXJ0cyBhbmQgIkVESCIgbm90IGluIHBhcnRzIGFuZCAiREhFIiBub3QgaW4gcGFydHM6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJOb24tREggY2lwaGVyOiAiICsgY2lwaGVyWzBdKQorCisgICAgICAgIGRlZiB0ZXN0X3NlbGVjdGVkX25wbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgICAgICMgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkgaXMgTm9uZSB1bmxlc3MgTlBOIGlzIHVzZWQKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGF0c1snY2xpZW50X25wbl9wcm90b2NvbCddLCBOb25lKQorCisgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfTlBOLCAiTlBOIHN1cHBvcnQgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorICAgICAgICBkZWYgdGVzdF9ucG5fcHJvdG9jb2xzKHNlbGYpOgorICAgICAgICAgICAgc2VydmVyX3Byb3RvY29scyA9IFsnaHR0cC8xLjEnLCAnc3BkeS8yJ10KKyAgICAgICAgICAgIHByb3RvY29sX3Rlc3RzID0gWworICAgICAgICAgICAgICAgIChbJ2h0dHAvMS4xJywgJ3NwZHkvMiddLCAnaHR0cC8xLjEnKSwKKyAgICAgICAgICAgICAgICAoWydzcGR5LzInLCAnaHR0cC8xLjEnXSwgJ2h0dHAvMS4xJyksCisgICAgICAgICAgICAgICAgKFsnc3BkeS8yJywgJ3Rlc3QnXSwgJ3NwZHkvMicpLAorICAgICAgICAgICAgICAgIChbJ2FiYycsICdkZWYnXSwgJ2FiYycpCisgICAgICAgICAgICBdCisgICAgICAgICAgICBmb3IgY2xpZW50X3Byb3RvY29scywgZXhwZWN0ZWQgaW4gcHJvdG9jb2xfdGVzdHM6CisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKHNlcnZlcl9wcm90b2NvbHMpCisgICAgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKGNsaWVudF9wcm90b2NvbHMpCisgICAgICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisKKyAgICAgICAgICAgICAgICBtc2cgPSAiZmFpbGVkIHRyeWluZyAlcyAocykgYW5kICVzIChjKS5cbiIgXAorICAgICAgICAgICAgICAgICAgICAgICJ3YXMgZXhwZWN0aW5nICVzLCBidXQgZ290ICUlcyBmcm9tIHRoZSAlJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc3RyKHNlcnZlcl9wcm90b2NvbHMpLCBzdHIoY2xpZW50X3Byb3RvY29scyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihleHBlY3RlZCkpCisgICAgICAgICAgICAgICAgY2xpZW50X3Jlc3VsdCA9IHN0YXRzWydjbGllbnRfbnBuX3Byb3RvY29sJ10KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudF9yZXN1bHQsIGV4cGVjdGVkLCBtc2cgJSAoY2xpZW50X3Jlc3VsdCwgImNsaWVudCIpKQorICAgICAgICAgICAgICAgIHNlcnZlcl9yZXN1bHQgPSBzdGF0c1snc2VydmVyX25wbl9wcm90b2NvbHMnXVstMV0gXAorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oc3RhdHNbJ3NlcnZlcl9ucG5fcHJvdG9jb2xzJ10pIGVsc2UgJ25vdGhpbmcnCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXJfcmVzdWx0LCBleHBlY3RlZCwgbXNnICUgKHNlcnZlcl9yZXN1bHQsICJzZXJ2ZXIiKSkKKwogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9RmFsc2UpOgogICAgIGlmIHN1cHBvcnQudmVyYm9zZToKQEAgLTE2NTcsNyArMTk3Miw3IEBACiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIkNhbid0IHJlYWQgY2VydGlmaWNhdGUgZmlsZSAlciIgJSBmaWxlbmFtZSkKIAotICAgIHRlc3RzID0gW0NvbnRleHRUZXN0cywgQmFzaWNTb2NrZXRUZXN0c10KKyAgICB0ZXN0cyA9IFtDb250ZXh0VGVzdHMsIEJhc2ljU29ja2V0VGVzdHMsIFNTTEVycm9yVGVzdHNdCiAKICAgICBpZiBzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKToKICAgICAgICAgdGVzdHMuYXBwZW5kKE5ldHdvcmtlZFRlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdGF0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZDVlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXQucHkKQEAgLTAsMCArMSw2NiBAQAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgb3MKK2ltcG9ydCBzdGF0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QKKworCitkZWYgZ2V0X21vZGUoZm5hbWU9VEVTVEZOKToKKyAgICByZXR1cm4gc3RhdC5maWxlbW9kZShvcy5sc3RhdChmbmFtZSkuc3RfbW9kZSkKKworCitjbGFzcyBUZXN0RmlsZW1vZGUodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5yZW1vdmUoVEVTVEZOKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihURVNURk4pCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgdGVhckRvd24gPSBzZXRVcAorCisgICAgZGVmIHRlc3RfbW9kZShzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy1yd3gtLS0tLS0nKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzA3MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy0tLS1yd3gtLS0nKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzAwNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy0tLS0tLS1yd3gnKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzQ0NCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy1yLS1yLS1yLS0nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKVs6M10sICctcncnKQorCisgICAgZGVmIHRlc3RfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICBvcy5ta2RpcihURVNURk4pCisgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG83MDApCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJ2Ryd3gtLS0tLS0nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfbW9kZSgpWzBdLCAnZCcpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnc3ltbGluaycpLCAnb3Muc3ltbGluayBub3QgYXZhaWxhYmxlJykKKyAgICBkZWYgdGVzdF9saW5rKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5zeW1saW5rKG9zLmdldGN3ZCgpLCBURVNURk4pCisgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3Qoc3RyKGVycikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKClbMF0sICdsJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdta2ZpZm8nKSwgJ29zLm1rZmlmbyBub3QgYXZhaWxhYmxlJykKKyAgICBkZWYgdGVzdF9maWZvKHNlbGYpOgorICAgICAgICBvcy5ta2ZpZm8oVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfbW9kZSgpLCAncHJ3eC0tLS0tLScpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChUZXN0RmlsZW1vZGUpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKaW5kZXggMzRkMWRjZi4uYzJiZGZkYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKQEAgLTI2LDYgKzI2LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLmNhcHdvcmRzKCdcdGFCY1x0RGVGXHQnKSwgJ0FiYyBEZWYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5jYXB3b3JkcygnXHRhQmNcdERlRlx0JywgJ1x0JyksICdcdEFiY1x0RGVmXHQnKQogCisgICAgZGVmIHRlc3RfYmFzaWNfZm9ybWF0dGVyKHNlbGYpOgorICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb28iKSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vezB9IiwgImJhciIpLCAiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb297MX17MH0tezF9IiwgImJhciIsIDYpLCAiZm9vNmJhci02IikKKwogICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25fc3BlY2lmaWVycyhzZWxmKToKICAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiLXthcmchcn0tIiwgYXJnPSd0ZXN0JyksICItJ3Rlc3QnLSIpCkBAIC0zOCwxNSArNDQsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MCFhfSIsICBjaHIoMjU1KSksICInXFx4ZmYnIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MCFhfSIsICBjaHIoMjU2KSksICInXFx1MDEwMCciKQogCi0gICAgZGVmIHRlc3RfZm9ybWF0dGVyKHNlbGYpOgorICAgIGRlZiB0ZXN0X25hbWVfbG9va3VwKHNlbGYpOgogICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb28iKSwgImZvbyIpCisgICAgICAgIGNsYXNzIEFueUF0dHI6CisgICAgICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHIKKyAgICAgICAgeCA9IEFueUF0dHIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoInswLmx1bWJlcn17MC5qYWNrfSIsIHgpLCAnbHVtYmVyamFjaycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgZm10LmZvcm1hdCgiezAubHVtYmVyfXswLmphY2t9IiwgJycpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb297MH0iLCAiYmFyIiksICJmb29iYXIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoImZvb3sxfXswfS17MX0iLCAiYmFyIiwgNiksICJmb282YmFyLTYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoIi17YXJnIXJ9LSIsIGFyZz0ndGVzdCcpLCAiLSd0ZXN0Jy0iKQorICAgIGRlZiB0ZXN0X2luZGV4X2xvb2t1cChzZWxmKToKKyAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCisgICAgICAgIGxvb2t1cCA9IFsiZWdncyIsICJhbmQiLCAic3BhbSJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiezBbMl19ezBbMF19IiwgbG9va3VwKSwgJ3NwYW1lZ2dzJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGZtdC5mb3JtYXQoInswWzJdfXswWzBdfSIsIFtdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGZtdC5mb3JtYXQoInswWzJdfXswWzBdfSIsIHt9KQogCi0gICAgICAgICMgb3ZlcnJpZGUgZ2V0X3ZhbHVlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZ2V0X3ZhbHVlKHNlbGYpOgogICAgICAgICBjbGFzcyBOYW1lc3BhY2VGb3JtYXR0ZXIoc3RyaW5nLkZvcm1hdHRlcik6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZXNwYWNlPXt9KToKICAgICAgICAgICAgICAgICBzdHJpbmcuRm9ybWF0dGVyLl9faW5pdF9fKHNlbGYpCkBAIC02Niw3ICs4Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgie2dyZWV0aW5nfSwgd29ybGQhIiksICdoZWxsbywgd29ybGQhJykKIAogCi0gICAgICAgICMgb3ZlcnJpZGUgZm9ybWF0X2ZpZWxkICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZm9ybWF0X2ZpZWxkKHNlbGYpOgogICAgICAgICBjbGFzcyBDYWxsRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgZGVmIGZvcm1hdF9maWVsZChzZWxmLCB2YWx1ZSwgZm9ybWF0X3NwZWMpOgogICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXQodmFsdWUoKSwgZm9ybWF0X3NwZWMpCkBAIC03NSwxOCArOTIsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCcqezB9KicsIGxhbWJkYSA6ICdyZXN1bHQnKSwgJypyZXN1bHQqJykKIAogCi0gICAgICAgICMgb3ZlcnJpZGUgY29udmVydF9maWVsZCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfY29udmVydF9maWVsZChzZWxmKToKICAgICAgICAgY2xhc3MgWEZvcm1hdHRlcihzdHJpbmcuRm9ybWF0dGVyKToKICAgICAgICAgICAgIGRlZiBjb252ZXJ0X2ZpZWxkKHNlbGYsIHZhbHVlLCBjb252ZXJzaW9uKToKICAgICAgICAgICAgICAgICBpZiBjb252ZXJzaW9uID09ICd4JzoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoWEZvcm1hdHRlciwgc2VsZikuY29udmVydF9maWVsZCh2YWx1ZSwgY29udmVyc2lvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5jb252ZXJ0X2ZpZWxkKHZhbHVlLCBjb252ZXJzaW9uKQogCiAgICAgICAgIGZtdCA9IFhGb3JtYXR0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoInswIXJ9OnswIXh9IiwgJ2ZvbycsICdmb28nKSwgIidmb28nOk5vbmUiKQogCiAKLSAgICAgICAgIyBvdmVycmlkZSBwYXJzZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9wYXJzZShzZWxmKToKICAgICAgICAgY2xhc3MgQmFyRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgIyByZXR1cm5zIGFuIGl0ZXJhYmxlIHRoYXQgY29udGFpbnMgdHVwbGVzIG9mIHRoZSBmb3JtOgogICAgICAgICAgICAgIyAobGl0ZXJhbF90ZXh0LCBmaWVsZF9uYW1lLCBmb3JtYXRfc3BlYywgY29udmVyc2lvbikKQEAgLTEwMiw3ICsxMTksNyBAQAogICAgICAgICBmbXQgPSBCYXJGb3JtYXR0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoJyp8KzA6XjEwc3wqJywgJ2ZvbycpLCAnKiAgIGZvbyAgICAqJykKIAotICAgICAgICAjIHRlc3QgYWxsIHBhcmFtZXRlcnMgdXNlZAorICAgIGRlZiB0ZXN0X2NoZWNrX3VudXNlZF9hcmdzKHNlbGYpOgogICAgICAgICBjbGFzcyBDaGVja0FsbFVzZWRGb3JtYXR0ZXIoc3RyaW5nLkZvcm1hdHRlcik6CiAgICAgICAgICAgICBkZWYgY2hlY2tfdW51c2VkX2FyZ3Moc2VsZiwgdXNlZF9hcmdzLCBhcmdzLCBrd2FyZ3MpOgogICAgICAgICAgICAgICAgICMgVHJhY2sgd2hpY2ggYXJndW1lbnRzIGFjdHVhbGx5IGdvdCB1c2VkCkBAIC0xMjQsMjggKzE0MSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbXQuZm9ybWF0LCAiezB9IiwgMTAsIDIwLCBpPTEwMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm10LmZvcm1hdCwgIntpfSIsIDEwLCAyMCwgaT0xMDApCiAKLSAgICBkZWYgdGVzdF92Zm9ybWF0X2Fzc2VydChzZWxmKToKLSAgICAgICAgY2xzID0gc3RyaW5nLkZvcm1hdHRlcigpCi0gICAgICAgIGt3YXJncyA9IHsKLSAgICAgICAgICAgICJpIjogMTAwCi0gICAgICAgIH0KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2xzLl92Zm9ybWF0LAotICAgICAgICAgICAgICAgIGNscy5mb3JtYXQsICJ7MH0iLCBrd2FyZ3MsIHNldCgpLCAtMikKLQotICAgIGRlZiB0ZXN0X2NvbnZlcnRfZmllbGQoc2VsZik6Ci0gICAgICAgIGNscyA9IHN0cmluZy5Gb3JtYXR0ZXIoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNscy5mb3JtYXQoInswIXN9IiwgJ2ZvbycpLCAnZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2xzLmZvcm1hdCwgInswIWh9IiwgJ2ZvbycpCi0KLSAgICBkZWYgdGVzdF9nZXRfZmllbGQoc2VsZik6Ci0gICAgICAgIGNscyA9IHN0cmluZy5Gb3JtYXR0ZXIoKQotICAgICAgICBjbGFzcyBNeUNsYXNzOgotICAgICAgICAgICAgbmFtZSA9ICdsdW1iZXJqYWNrJwotICAgICAgICB4ID0gTXlDbGFzcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xzLmZvcm1hdCgiezAubmFtZX0iLCB4KSwgJ2x1bWJlcmphY2snKQotCi0gICAgICAgIGxvb2t1cCA9IFsiZWdncyIsICJhbmQiLCAic3BhbSJdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xzLmZvcm1hdCgiezBbMl19IiwgbG9va3VwKSwgJ3NwYW0nKQorICAgIGRlZiB0ZXN0X3Zmb3JtYXRfcmVjdXJzaW9uX2xpbWl0KHNlbGYpOgorICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKKyAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGt3YXJncyA9IGRpY3QoaT0xMDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgZm10Ll92Zm9ybWF0KCJ7aX0iLCBhcmdzLCBrd2FyZ3MsIHNldCgpLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigicmVjdXJzaW9uIiwgc3RyKGVyci5leGNlcHRpb24pKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKaW5kZXggNmJkYzZlNC4uMDdiYzQ4OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKQEAgLTIsMTAgKzIsMTAgQEAKIAogVGhlcmUgYXJlIGZvdXIgdHlwZXMgb2Ygc3RyaW5nIGxpdGVyYWxzOgogCi0gICAgJ2FiYycgICAtLSBub3JtYWwgc3RyCi0gICAgcidhYmMnICAtLSByYXcgc3RyCi0gICAgYid4eXonICAtLSBub3JtYWwgYnl0ZXMKLSAgICBicid4eXonIC0tIHJhdyBieXRlcworICAgICdhYmMnICAgICAgICAgICAgIC0tIG5vcm1hbCBzdHIKKyAgICByJ2FiYycgICAgICAgICAgICAtLSByYXcgc3RyCisgICAgYid4eXonICAgICAgICAgICAgLS0gbm9ybWFsIGJ5dGVzCisgICAgYnIneHl6JyB8IHJiJ3h5eicgLS0gcmF3IGJ5dGVzCiAKIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbm9ybWFsIGFuZCByYXcgc3RyaW5ncyBpcyBvZiBjb3Vyc2UgdGhhdCBpbiBhCiByYXcgc3RyaW5nLCBcIGVzY2FwZXMgKHdoaWxlIHN0aWxsIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBlbmQgb2YgdGhlCkBAIC0xMDMsMTIgKzEwMywzNCBAQAogCiAgICAgZGVmIHRlc3RfZXZhbF9ieXRlc19yYXcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYnIneCcgIiIiKSwgYid4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByYid4JyAiIiIpLCBiJ3gnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidceDAxJyAiIiIpLCBiJ1xcJyArIGIneDAxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcmInXHgwMScgIiIiKSwgYidcXCcgKyBiJ3gwMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYnInXHgwMScgIiIiKSwgYnl0ZSgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByYidceDAxJyAiIiIpLCBieXRlKDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidceDgxJyAiIiIpLCBiIlxcIiArIGIieDgxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcmInXHg4MScgIiIiKSwgYiJcXCIgKyBiIng4MSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnInXHg4MScgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJiJ1x4ODEnICIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXHUxODgxJyAiIiIpLCBiIlxcIiArIGIidTE4ODEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiByYidcdTE4ODEnICIiIiksIGIiXFwiICsgYiJ1MTg4MSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnInXHUxODgxJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcmInXHUxODgxJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYmInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcnInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnJyJycgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJicicnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBycmInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcmJiJycgIiIiKQorCisgICAgZGVmIHRlc3RfZXZhbF9zdHJfdShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiB1J3gnICIiIiksICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiBVJ1x1MDBlNCcgIiIiKSwgJ8OkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiB1J1xOe0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTfScgIiIiKSwgJ8OkJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiB1cicnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBydScnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBidScnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiB1YicnICIiIikKIAogICAgIGRlZiBjaGVja19lbmNvZGluZyhzZWxmLCBlbmNvZGluZywgZXh0cmE9IiIpOgogICAgICAgICBtb2RuYW1lID0gInh4XyIgKyBlbmNvZGluZy5yZXBsYWNlKCItIiwgIl8iKQpAQCAtMTMxLDcgKzE1Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBzZWxmLmNoZWNrX2VuY29kaW5nLCAidXRmLTgiLCBleHRyYSkKIAogICAgIGRlZiB0ZXN0X2ZpbGVfdXRmOChzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19lbmNvZGluZygidXRmOCIpCisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RpbmcoInV0Zi04IikKIAogICAgIGRlZiB0ZXN0X2ZpbGVfaXNvXzg4NTlfMShzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19lbmNvZGluZygiaXNvLTg4NTktMSIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CmluZGV4IGRjYzczYWIuLjIyMzc0ZDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CkBAIC04LDkgKzgsMTkgQEAKIElTQklHRU5ESUFOID0gc3lzLmJ5dGVvcmRlciA9PSAiYmlnIgogSVMzMkJJVCA9IHN5cy5tYXhzaXplID09IDB4N2ZmZmZmZmYKIAotaW50ZWdlcl9jb2RlcyA9ICdiJywgJ0InLCAnaCcsICdIJywgJ2knLCAnSScsICdsJywgJ0wnLCAncScsICdRJworaW50ZWdlcl9jb2RlcyA9ICdiJywgJ0InLCAnaCcsICdIJywgJ2knLCAnSScsICdsJywgJ0wnLCAncScsICdRJywgJ24nLCAnTicKIGJ5dGVvcmRlcnMgPSAnJywgJ0AnLCAnPScsICc8JywgJz4nLCAnIScKIAorZGVmIGl0ZXJfaW50ZWdlcl9mb3JtYXRzKGJ5dGVvcmRlcnM9Ynl0ZW9yZGVycyk6CisgICAgZm9yIGNvZGUgaW4gaW50ZWdlcl9jb2RlczoKKyAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiBieXRlb3JkZXJzOgorICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCdxJywgJ1EnKSBhbmQKKyAgICAgICAgICAgICAgICBub3QgSEFWRV9MT05HX0xPTkcpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiAoYnl0ZW9yZGVyIG5vdCBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCduJywgJ04nKSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHlpZWxkIGNvZGUsIGJ5dGVvcmRlcgorCiAjIE5hdGl2ZSAncScgcGFja2luZyBpc24ndCBhdmFpbGFibGUgb24gc3lzdGVtcyB0aGF0IGRvbid0IGhhdmUgdGhlIEMKICMgbG9uZyBsb25nIHR5cGUuCiB0cnk6CkBAIC0zMCw3ICs0MCw2IEBACiAgICAgICAgIHJldHVybiBzdHJpbmdfcmV2ZXJzZSh2YWx1ZSkKIAogY2xhc3MgU3RydWN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KICAgICBkZWYgdGVzdF9pc2JpZ2VuZGlhbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoc3RydWN0LnBhY2soJz1pJywgMSlbMF0gPT0gMCksIElTQklHRU5ESUFOKQogCkBAIC0xNDIsMTQgKzE1MSwxMyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICMgc3RhbmRhcmQgaW50ZWdlciBzaXplcwotICAgICAgICBmb3IgY29kZSBpbiBpbnRlZ2VyX2NvZGVzOgotICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiAnPScsICc8JywgJz4nLCAnISc6Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKLSAgICAgICAgICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKGZvcm1hdCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGV4cGVjdGVkX3NpemVbY29kZV0pCisgICAgICAgIGZvciBjb2RlLCBieXRlb3JkZXIgaW4gaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoKCc9JywgJzwnLCAnPicsICchJykpOgorICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKKyAgICAgICAgICAgIHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm9ybWF0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBleHBlY3RlZF9zaXplW2NvZGVdKQogCiAgICAgICAgICMgbmF0aXZlIGludGVnZXIgc2l6ZXMKLSAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJworICAgICAgICBuYXRpdmVfcGFpcnMgPSAnYkInLCAnaEgnLCAnaUknLCAnbEwnLCAnbk4nCiAgICAgICAgIGlmIEhBVkVfTE9OR19MT05HOgogICAgICAgICAgICAgbmF0aXZlX3BhaXJzICs9ICdxUScsCiAgICAgICAgIGZvciBmb3JtYXRfcGFpciBpbiBuYXRpdmVfcGFpcnM6CkBAIC0xNjcsOSArMTc1LDExIEBACiAgICAgICAgIGlmIEhBVkVfTE9OR19MT05HOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoOCwgc3RydWN0LmNhbGNzaXplKCdxJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ2wnKSwgc3RydWN0LmNhbGNzaXplKCdxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbicpLCBzdHJ1Y3QuY2FsY3NpemUoJ2knKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc3RydWN0LmNhbGNzaXplKCduJyksIHN0cnVjdC5jYWxjc2l6ZSgnUCcpKQogCiAgICAgZGVmIHRlc3RfaW50ZWdlcnMoc2VsZik6Ci0gICAgICAgICMgSW50ZWdlciB0ZXN0cyAoYkJoSGlJbExxUSkuCisgICAgICAgICMgSW50ZWdlciB0ZXN0cyAoYkJoSGlJbExxUW5OKS4KICAgICAgICAgaW1wb3J0IGJpbmFzY2lpCiAKICAgICAgICAgY2xhc3MgSW50VGVzdGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE4MywxMSArMTkzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ieXRlb3JkZXIpCiAgICAgICAgICAgICAgICAgc2VsZi5ieXRlc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmb3JtYXQpCiAgICAgICAgICAgICAgICAgc2VsZi5iaXRzaXplID0gc2VsZi5ieXRlc2l6ZSAqIDgKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmNvZGUgaW4gdHVwbGUoJ2JoaWxxJyk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdiaGlscW4nKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaWduZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYubWluX3ZhbHVlID0gLSgyKiooc2VsZi5iaXRzaXplLTEpKQogICAgICAgICAgICAgICAgICAgICBzZWxmLm1heF92YWx1ZSA9IDIqKihzZWxmLmJpdHNpemUtMSkgLSAxCi0gICAgICAgICAgICAgICAgZWxpZiBzZWxmLmNvZGUgaW4gdHVwbGUoJ0JISUxRJyk6CisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLmNvZGUgaW4gdHVwbGUoJ0JISUxRTicpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNpZ25lZCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYubWluX3ZhbHVlID0gMAogICAgICAgICAgICAgICAgICAgICBzZWxmLm1heF92YWx1ZSA9IDIqKnNlbGYuYml0c2l6ZSAtIDEKQEAgLTMxNywxNCArMzI3LDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrLCBzZWxmLmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqKQogCi0gICAgICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6Ci0gICAgICAgICAgICBmb3IgYnl0ZW9yZGVyIGluIGJ5dGVvcmRlcnM6Ci0gICAgICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCdxJywgJ1EnKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZm9yIGNvZGUsIGJ5dGVvcmRlciBpbiBpdGVyX2ludGVnZXJfZm9ybWF0cygpOgorICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKKyAgICAgICAgICAgIHQgPSBJbnRUZXN0ZXIoZm9ybWF0KQorICAgICAgICAgICAgdC5ydW4oKQorCisgICAgZGVmIHRlc3Rfbk5fY29kZShzZWxmKToKKyAgICAgICAgIyBuIGFuZCBOIGRvbid0IGV4aXN0IGluIHN0YW5kYXJkIHNpemVzCisgICAgICAgIGRlZiBhc3NlcnRTdHJ1Y3RFcnJvcihmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYmFkIGNoYXIgaW4gc3RydWN0IGZvcm1hdCIsIHN0cihjbS5leGNlcHRpb24pKQorICAgICAgICBmb3IgY29kZSBpbiAnbk4nOgorICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiAoJz0nLCAnPCcsICc+JywgJyEnKToKICAgICAgICAgICAgICAgICBmb3JtYXQgPSBieXRlb3JkZXIrY29kZQotICAgICAgICAgICAgICAgIHQgPSBJbnRUZXN0ZXIoZm9ybWF0KQotICAgICAgICAgICAgICAgIHQucnVuKCkKKyAgICAgICAgICAgICAgICBhc3NlcnRTdHJ1Y3RFcnJvcihzdHJ1Y3QuY2FsY3NpemUsIGZvcm1hdCkKKyAgICAgICAgICAgICAgICBhc3NlcnRTdHJ1Y3RFcnJvcihzdHJ1Y3QucGFjaywgZm9ybWF0LCAwKQorICAgICAgICAgICAgICAgIGFzc2VydFN0cnVjdEVycm9yKHN0cnVjdC51bnBhY2ssIGZvcm1hdCwgYiIiKQogCiAgICAgZGVmIHRlc3RfcF9jb2RlKHNlbGYpOgogICAgICAgICAjIFRlc3QgcCAoIlBhc2NhbCBzdHJpbmciKSBjb2RlLgpAQCAtMzc4LDE0ICszOTcsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc3RydWN0LnBhY2ssICI+ZiIsIGJpZykKIAogICAgIGRlZiB0ZXN0XzE1MzA1NTkoc2VsZik6Ci0gICAgICAgIGZvciBieXRlb3JkZXIgaW4gJycsICdAJywgJz0nLCAnPCcsICc+JywgJyEnOgotICAgICAgICAgICAgZm9yIGNvZGUgaW4gaW50ZWdlcl9jb2RlczoKLSAgICAgICAgICAgICAgICBpZiAoYnl0ZW9yZGVyIGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ3EnLCAnUScpIGFuZAotICAgICAgICAgICAgICAgICAgICBub3QgSEFWRV9MT05HX0xPTkcpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlciArIGNvZGUKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXQsIDEuMCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXQsIDEuNSkKKyAgICAgICAgZm9yIGNvZGUsIGJ5dGVvcmRlciBpbiBpdGVyX2ludGVnZXJfZm9ybWF0cygpOgorICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyICsgY29kZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXQsIDEuNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgJ1AnLCAxLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgc3RydWN0LnBhY2ssICdQJywgMS41KQogCkBAIC01NTksOSArNTc0LDkgQEAKIAogICAgIGRlZiBjaGVja19zaXplb2Yoc2VsZiwgZm9ybWF0X3N0ciwgbnVtYmVyX29mX2NvZGVzKToKICAgICAgICAgIyBUaGUgc2l6ZSBvZiAnUHlTdHJ1Y3RPYmplY3QnCi0gICAgICAgIHRvdGFsc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzVQJykKKyAgICAgICAgdG90YWxzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnMm4zUCcpCiAgICAgICAgICMgVGhlIHNpemUgdGFrZW4gdXAgYnkgdGhlICdmb3JtYXRjb2RlJyBkeW5hbWljIGFycmF5Ci0gICAgICAgIHRvdGFsc2l6ZSArPSBzdHJ1Y3QuY2FsY3NpemUoJzNQJykgKiAobnVtYmVyX29mX2NvZGVzICsgMSkKKyAgICAgICAgdG90YWxzaXplICs9IHN0cnVjdC5jYWxjc2l6ZSgnUDJuMFAnKSAqIChudW1iZXJfb2ZfY29kZXMgKyAxKQogICAgICAgICBzdXBwb3J0LmNoZWNrX3NpemVvZihzZWxmLCBzdHJ1Y3QuU3RydWN0KGZvcm1hdF9zdHIpLCB0b3RhbHNpemUpCiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKaW5kZXggZDZjNjNiNy4uYTg5ZTk1NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKQEAgLTc4LDggKzc4LDkgQEAKIAogICAgIGRlZiB0ZXN0X2ZpZWxkcyhzZWxmKToKICAgICAgICAgdCA9IHRpbWUuZ210aW1lKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odCksIHQubl9maWVsZHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5uX2ZpZWxkcywgdC5uX3NlcXVlbmNlX2ZpZWxkcyt0Lm5fdW5uYW1lZF9maWVsZHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHQpLCB0Lm5fc2VxdWVuY2VfZmllbGRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubl91bm5hbWVkX2ZpZWxkcywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lm5fZmllbGRzLCB0aW1lLl9TVFJVQ1RfVE1fSVRFTVMpCiAKICAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcihzZWxmKToKICAgICAgICAgdCA9IHRpbWUuc3RydWN0X3RpbWUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQppbmRleCA2MjBjZDhlLi4yNDIwNzcyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CkBAIC0xNSw2ICsxNSw3IEBACiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgZ2MKK2ltcG9ydCB0ZXh0d3JhcAogCiB0cnk6CiAgICAgaW1wb3J0IHJlc291cmNlCkBAIC02MSw2ICs2Miw4IEBACiAgICAgICAgICMgc2h1dGRvd24gdGltZS4gIFRoYXQgZnJ1c3RyYXRlcyB0ZXN0cyB0cnlpbmcgdG8gY2hlY2sgc3RkZXJyIHByb2R1Y2VkCiAgICAgICAgICMgZnJvbSBhIHNwYXduZWQgUHl0aG9uIHByb2Nlc3MuCiAgICAgICAgIGFjdHVhbCA9IHN1cHBvcnQuc3RyaXBfcHl0aG9uX3N0ZGVycihzdGRlcnIpCisgICAgICAgICMgc3RyaXBfcHl0aG9uX3N0ZGVyciBhbHNvIHN0cmlwcyB3aGl0ZXNwYWNlLCBzbyB3ZSBkbyB0b28uCisgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQuc3RyaXAoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1zZykKIAogCkBAIC03Miw2ICs3NSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCA0NykKIAorICAgIGRlZiB0ZXN0X2NhbGxfdGltZW91dChzZWxmKToKKyAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCB0aW1lb3V0IGFyZ3VtZW50OyB3ZSB3YW50IHRvIHRlc3QgdGhhdCB0aGUgY2hpbGQKKyAgICAgICAgIyBwcm9jZXNzIGdldHMga2lsbGVkIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4gIElmIHRoZSBjaGlsZCBpc24ndAorICAgICAgICAjIGtpbGxlZCwgdGhpcyBjYWxsIHdpbGwgZGVhZGxvY2sgc2luY2Ugc3VicHJvY2Vzcy5jYWxsIHdhaXRzIGZvciB0aGUKKyAgICAgICAgIyBjaGlsZC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCwgc3VicHJvY2Vzcy5jYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsICItYyIsICJ3aGlsZSBUcnVlOiBwYXNzIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MC4xKQorCiAgICAgZGVmIHRlc3RfY2hlY2tfY2FsbF96ZXJvKHNlbGYpOgogICAgICAgICAjIGNoZWNrX2NhbGwoKSBmdW5jdGlvbiB3aXRoIHplcm8gcmV0dXJuIGNvZGUKICAgICAgICAgcmMgPSBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoW3N5cy5leGVjdXRhYmxlLCAiLWMiLApAQCAtMTE0LDYgKzEyNiwyMSBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBWYWx1ZUVycm9yIHdoZW4gc3Rkb3V0IGFyZyBzdXBwbGllZC4iKQogICAgICAgICBzZWxmLmFzc2VydEluKCdzdGRvdXQnLCBjLmV4Y2VwdGlvbi5hcmdzWzBdKQogCisgICAgZGVmIHRlc3RfY2hlY2tfb3V0cHV0X3RpbWVvdXQoc2VsZik6CisgICAgICAgICMgY2hlY2tfb3V0cHV0KCkgZnVuY3Rpb24gd2l0aCB0aW1lb3V0IGFyZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQpIGFzIGM6CisgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKKyAgICAgICAgICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzeXMsIHRpbWVcbiIKKyAgICAgICAgICAgICAgICAgICAgICJzeXMuc3Rkb3V0LndyaXRlKCdCREZMJylcbiIKKyAgICAgICAgICAgICAgICAgICAgICJzeXMuc3Rkb3V0LmZsdXNoKClcbiIKKyAgICAgICAgICAgICAgICAgICAgICJ0aW1lLnNsZWVwKDM2MDApIl0sCisgICAgICAgICAgICAgICAgICAgICMgU29tZSBoZWF2aWx5IGxvYWRlZCBidWlsZGJvdHMgKHNwYXJjIERlYmlhbiAzLngpIHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgICAgIyB0aGlzIG11Y2ggdGltZSB0byBzdGFydCBhbmQgcHJpbnQuCisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MykKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgVGltZW91dEV4cGlyZWQuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmV4Y2VwdGlvbi5vdXRwdXQsIGInQkRGTCcpCisKICAgICBkZWYgdGVzdF9jYWxsX2t3YXJncyhzZWxmKToKICAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBrZXl3b3JkIGFyZ3MKICAgICAgICAgbmV3ZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKQEAgLTE2NCw2ICsxOTEsOCBAQAogICAgICAgICBwLndhaXQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3RkZXJyLCBOb25lKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuYmFzZV9wcmVmaXggIT0gc3lzLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICdUZXN0IGlzIG5vdCB2ZW52LWNvbXBhdGlibGUnKQogICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfd2l0aF9jd2Qoc2VsZik6CiAgICAgICAgIHB5dGhvbl9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChzeXMuZXhlY3V0YWJsZSkpCiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsic29tZXRoaW5neW91ZG9udGhhdmUiLCAiLWMiLApAQCAtMTcyLDYgKzIwMSw4IEBACiAgICAgICAgIHAud2FpdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZXR1cm5jb2RlLCA0NykKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmJhc2VfcHJlZml4ICE9IHN5cy5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAnVGVzdCBpcyBub3QgdmVudi1jb21wYXRpYmxlJykKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSwKICAgICAgICAgICAgICAgICAgICAgICJuZWVkIGFuIGluc3RhbGxlZCBQeXRob24uIFNlZSAjNzc3NCIpCiAgICAgZGVmIHRlc3RfZXhlY3V0YWJsZV93aXRob3V0X2N3ZChzZWxmKToKQEAgLTMxMyw2ICszNDQsMzEgQEAKICAgICAgICAgcmMgPSBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCAiLWMiLCBjbWRdLCBzdGRvdXQ9MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMikKIAorICAgIGRlZiB0ZXN0X3N0ZG91dF9kZXZudWxsKHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9yIGkgaW4gcmFuZ2UoMTAyNDApOicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCgieCIgKiAxMDI0KSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgcC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3N0ZGVycl9kZXZudWxsKHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5c1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvciBpIGluIHJhbmdlKDEwMjQwKTonCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgieCIgKiAxMDI0KSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgcC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZGVyciwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3N0ZGluX2Rldm51bGwoc2VsZik6CisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkaW4ucmVhZCgxKSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMKQorICAgICAgICBwLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3RkaW4sIE5vbmUpCisKICAgICBkZWYgdGVzdF9jd2Qoc2VsZik6CiAgICAgICAgIHRtcGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQogICAgICAgICAjIFdlIGNhbm5vdCB1c2Ugb3MucGF0aC5yZWFscGF0aCB0byBjYW5vbmljYWxpemUgdGhlIHBhdGgsCkBAIC00MDEsNiArNDU3LDQxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiImJhbmFuYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLCBiInBpbmVhcHBsZSIpCiAKKyAgICBkZWYgdGVzdF9jb21tdW5pY2F0ZV90aW1lb3V0KHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvcyx0aW1lOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkZXJyLndyaXRlKCJwaW5lYXBwbGVcXG4iKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgxKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgicGVhclxcbiIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKCkpJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQsIHAuY29tbXVuaWNhdGUsICJiYW5hbmEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTAuMykKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgY2FuIGtlZXAgd2FpdGluZyBmb3IgaXQsIGFuZCB0aGF0IHdlIGdldCB0aGUgd2hvbGUgb3V0cHV0CisgICAgICAgICMgYWZ0ZXIgaXQgY29tcGxldGVzLgorICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCAiYmFuYW5hIikKKyAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIuZW5jb2RlKCksIGIicGluZWFwcGxlXG5wZWFyXG4iKQorCisgICAgZGVmIHRlc3RfY29tbXVuaWNhdGVfdGltZW91dF9sYXJnZV9vdXB1dChzZWxmKToKKyAgICAgICAgIyBUZXN0IGFuIGV4cGlyaW5nIHRpbWVvdXQgd2hpbGUgdGhlIGNoaWxkIGlzIG91dHB1dHRpbmcgbG90cyBvZiBkYXRhLgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvcyx0aW1lOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgwLjIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgwLjIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgwLjIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCwgcC5jb21tdW5pY2F0ZSwgdGltZW91dD0wLjQpCisgICAgICAgIChzdGRvdXQsIF8pID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN0ZG91dCksIDQgKiA2NCAqIDEwMjQpCisKICAgICAjIFRlc3QgZm9yIHRoZSBmZCBsZWFrIHJlcG9ydGVkIGluIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNzkxLgogICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX3BpcGVfZmRfbGVhayhzZWxmKToKICAgICAgICAgZm9yIHN0ZGluX3BpcGUgaW4gKEZhbHNlLCBUcnVlKToKQEAgLTQzNywyNCArNTI4LDIxIEBACiAgICAgICAgICMgVGhpcyB0ZXN0IHdpbGwgcHJvYmFibHkgZGVhZGxvY2sgcmF0aGVyIHRoYW4gZmFpbCwgaWYKICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIGRvZXMgbm90IHdvcmsgcHJvcGVybHkuCiAgICAgICAgIHgsIHkgPSBvcy5waXBlKCkKLSAgICAgICAgaWYgbXN3aW5kb3dzOgotICAgICAgICAgICAgcGlwZV9idWYgPSA1MTIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBpcGVfYnVmID0gb3MuZnBhdGhjb25mKHgsICJQQ19QSVBFX0JVRiIpCiAgICAgICAgIG9zLmNsb3NlKHgpCiAgICAgICAgIG9zLmNsb3NlKHkpCiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzLG9zOycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKDQ3KSk7JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoInh5eiIqJWQpOycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKCkpJyAlIHBpcGVfYnVmXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkZXJyLndyaXRlKCJ4IiAqICVkKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5QSVBFX01BWF9TSVpFXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCi0gICAgICAgIHN0cmluZ190b193cml0ZSA9IGIiYWJjIipwaXBlX2J1ZgorICAgICAgICBzdHJpbmdfdG9fd3JpdGUgPSBiImEiICogc3VwcG9ydC5QSVBFX01BWF9TSVpFCiAgICAgICAgIChzdGRvdXQsIHN0ZGVycikgPSBwLmNvbW11bmljYXRlKHN0cmluZ190b193cml0ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIHN0cmluZ190b193cml0ZSkKIApAQCAtNTI5LDggKzYxNyw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz0xKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgIyBCVUc6IGNhbid0IGdpdmUgYSBub24tZW1wdHkgc3RkaW4gYmVjYXVzZSBpdCBicmVha3MgYm90aCB0aGUKLSAgICAgICAgIyBzZWxlY3QtIGFuZCBwb2xsLWJhc2VkIGNvbW11bmljYXRlKCkgaW1wbGVtZW50YXRpb25zLgogICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lMlxubGluZTRcbmxpbmU1XG5saW5lNlxubGluZTdcbmxpbmU4IikKQEAgLTUzOCwxMiArNjI0LDEyIEBACiAgICAgZGVmIHRlc3RfdW5pdmVyc2FsX25ld2xpbmVzX2NvbW11bmljYXRlX3N0ZGluKHNlbGYpOgogICAgICAgICAjIHVuaXZlcnNhbCBuZXdsaW5lcyB0aHJvdWdoIGNvbW11bmljYXRlKCksIHdpdGggb25seSBzdGRpbgogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgJycnXG5pZiBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lMVxcbiIsIHJlcHIocykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lM1xcbiIsIHJlcHIocykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lMVxcbiIsIHJlcHIocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lM1xcbiIsIHJlcHIocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz0xKQogICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgibGluZTFcbmxpbmUzXG4iKQpAQCAtNTYxLDYgKzY0NywzNSBAQAogICAgICAgICBwLmNvbW11bmljYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJldHVybmNvZGUsIDApCiAKKyAgICBkZWYgdGVzdF91bml2ZXJzYWxfbmV3bGluZXNfY29tbXVuaWNhdGVfc3RkaW5fc3Rkb3V0X3N0ZGVycihzZWxmKToKKyAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgdGhyb3VnaCBjb21tdW5pY2F0ZSgpLCB3aXRoIHN0ZGluLCBzdGRvdXQsIHN0ZGVycgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4uYnVmZmVyLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTJcXHIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGIiZWxpbmUyXFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLmJ1ZmZlci5yZWFkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTRcXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTVcXHJcXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGIiZWxpbmU2XFxyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmJ1ZmZlci53cml0ZShiImVsaW5lN1xcclxcbnoiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQorICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgibGluZTFcbmxpbmUzXG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmV0dXJuY29kZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgibGluZTFcbmxpbmUyXG5saW5lM1xubGluZTRcbmxpbmU1XG4iLCBzdGRvdXQpCisgICAgICAgICMgUHl0aG9uIGRlYnVnIGJ1aWxkIHB1c2ggc29tZXRoaW5nIGxpa2UgIls0MjQ0MiByZWZzXVxuIgorICAgICAgICAjIHRvIHN0ZGVyciBhdCBleGl0IG9mIHN1YnByb2Nlc3MuCisgICAgICAgICMgRG9uJ3QgdXNlIGFzc2VydFN0ZGVyckVxdWFsIGJlY2F1c2UgaXQgc3RyaXBzIENSIGFuZCBMRiBmcm9tIG91dHB1dC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0ZGVyci5zdGFydHN3aXRoKCJlbGluZTJcbmVsaW5lNlxuZWxpbmU3XG4iKSkKKwogICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9uZXdsaW5lc19jb21tdW5pY2F0ZV9lbmNvZGluZ3Moc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSB3b3JrcyBmb3IgdmFyaW91cyBlbmNvZGluZ3MsCiAgICAgICAgICMgaW4gcGFydGljdWxhciBmb3IgZW5jb2RpbmdzIGluIHRoZSBVVEYtMTYgYW5kIFVURi0zMiBmYW1pbGllcy4KQEAgLTU5MCw3ICs3MDUsNiBAQAogICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9JycpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZwotCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgJzFcbjJcbjNcbjQnKQogCiAgICAgZGVmIHRlc3Rfbm9fbGVha2luZyhzZWxmKToKQEAgLTY1MCwzMCArNzY0LDMyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VicHJvY2Vzcy5saXN0MmNtZGxpbmUoWydhYicsICcnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FiICIiJykKIAotCiAgICAgZGVmIHRlc3RfcG9sbChzZWxmKToKLSAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMiLCAiaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoMSkiXSkKLSAgICAgICAgY291bnQgPSAwCi0gICAgICAgIHdoaWxlIHAucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKLSAgICAgICAgICAgIGNvdW50ICs9IDEKLSAgICAgICAgIyBXZSBleHBlY3QgdGhhdCB0aGUgcG9sbCBsb29wIHByb2JhYmx5IHdlbnQgYXJvdW5kIGFib3V0IDEwIHRpbWVzLAotICAgICAgICAjIGJ1dCwgYmFzZWQgb24gc3lzdGVtIHNjaGVkdWxpbmcgd2UgY2FuJ3QgY29udHJvbCwgaXQncyBwb3NzaWJsZQotICAgICAgICAjIHBvbGwoKSBuZXZlciByZXR1cm5lZCBOb25lLiAgSXQgInNob3VsZCBiZSIgdmVyeSByYXJlIHRoYXQgaXQKLSAgICAgICAgIyBkaWRuJ3QgZ28gYXJvdW5kIGF0IGxlYXN0IHR3aWNlLgotICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChjb3VudCwgMikKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBvczsgb3MucmVhZCgwLCAxKSJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGluLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwLnBvbGwoKSkKKyAgICAgICAgb3Mud3JpdGUocC5zdGRpbi5maWxlbm8oKSwgYidBJykKKyAgICAgICAgcC53YWl0KCkKICAgICAgICAgIyBTdWJzZXF1ZW50IGludm9jYXRpb25zIHNob3VsZCBqdXN0IHJldHVybiB0aGUgcmV0dXJuY29kZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucG9sbCgpLCAwKQogCi0KICAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgotICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICItYyIsICJpbXBvcnQgdGltZTsgdGltZS5zbGVlcCgyKSJdKQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsICJwYXNzIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC53YWl0KCksIDApCiAgICAgICAgICMgU3Vic2VxdWVudCBpbnZvY2F0aW9ucyBzaG91bGQganVzdCByZXR1cm4gdGhlIHJldHVybmNvZGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLndhaXQoKSwgMCkKIAorICAgIGRlZiB0ZXN0X3dhaXRfdGltZW91dChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIiwgImltcG9ydCB0aW1lOyB0aW1lLnNsZWVwKDAuMSkiXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkKSBhcyBjOgorICAgICAgICAgICAgcC53YWl0KHRpbWVvdXQ9MC4wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiMC4wMSIsIHN0cihjLmV4Y2VwdGlvbikpICAjIEZvciBjb3ZlcmFnZSBvZiBfX3N0cl9fLgorICAgICAgICAjIFNvbWUgaGVhdmlseSBsb2FkZWQgYnVpbGRib3RzIChzcGFyYyBEZWJpYW4gMy54KSByZXF1aXJlIHRoaXMgbXVjaAorICAgICAgICAjIHRpbWUgdG8gc3RhcnQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC53YWl0KHRpbWVvdXQ9MyksIDApCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2J1ZnNpemUoc2VsZik6CiAgICAgICAgICMgYW4gaW52YWxpZCB0eXBlIG9mIHRoZSBidWZzaXplIGFyZ3VtZW50IHNob3VsZCByYWlzZQpAQCAtNzUyLDI1ICs4NjgsMjkgQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAncGFzcyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGluLmNsb3NlKQotICAgICAgICB0aW1lLnNsZWVwKDIpCisgICAgICAgIHAud2FpdCgpCiAgICAgICAgIHAuY29tbXVuaWNhdGUoYiJ4IiAqIDIqKjIwKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdBTFJNJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIHNpZ25hbC5TSUdBTFJNIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ1NJR1VTUjEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUmVxdWlyZXMgc2lnbmFsLlNJR1VTUjEiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdraWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIG9zLmtpbGwiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRwcGlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIG9zLmdldHBwaWQiKQogICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX2VpbnRyKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMjQ5MzogY29tbXVuaWNhdGUoKSBzaG91bGQgaGFuZGxlIEVJTlRSCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgogICAgICAgICAgICAgcGFzcwotICAgICAgICBvbGRfaGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHQUxSTSwgb2xkX2hhbmRsZXIpCisgICAgICAgIG9sZF9oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdVU1IxLCBvbGRfaGFuZGxlcikKIAotICAgICAgICAjIHRoZSBwcm9jZXNzIGlzIHJ1bm5pbmcgZm9yIDIgc2Vjb25kcwotICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAnaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoMiknXQorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICdpbXBvcnQgb3MsIHNpZ25hbDsnCisgICAgICAgICAgICAgICAgJ29zLmtpbGwob3MuZ2V0cHBpZCgpLCBzaWduYWwuU0lHVVNSMSknXQogICAgICAgICBmb3Igc3RyZWFtIGluICgnc3Rkb3V0JywgJ3N0ZGVycicpOgogICAgICAgICAgICAga3cgPSB7c3RyZWFtOiBzdWJwcm9jZXNzLlBJUEV9CiAgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oYXJncywgKiprdykgYXMgcHJvY2VzczoKLSAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgICAgICAjIGNvbW11bmljYXRlKCkgd2lsbCBiZSBpbnRlcnJ1cHRlZCBieSBTSUdBTFJNCisgICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIHdpbGwgYmUgaW50ZXJydXB0ZWQgYnkgU0lHVVNSMQogICAgICAgICAgICAgICAgIHByb2Nlc3MuY29tbXVuaWNhdGUoKQogCiAKQEAgLTEzMDEsNiArMTQyMSwxMSBAQAogICAgICAgICBleGl0Y29kZSA9IHN1YnByb2Nlc3MuY2FsbChbYWJzX3Byb2dyYW0sICItYyIsICJwYXNzIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCiAKKyAgICAgICAgIyBhYnNvbHV0ZSBieXRlcyBwYXRoIGFzIGEgc3RyaW5nCisgICAgICAgIGNtZCA9IGIiJyIgKyBhYnNfcHJvZ3JhbSArIGIiJyAtYyBwYXNzIgorICAgICAgICBleGl0Y29kZSA9IHN1YnByb2Nlc3MuY2FsbChjbWQsIHNoZWxsPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKICAgICAgICAgIyBieXRlcyBwcm9ncmFtLCB1bmljb2RlIFBBVEgKICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgZW52WyJQQVRIIl0gPSBwYXRoCkBAIC0xNDg0LDcgKzE2MDksNyBAQAogICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHAucmV0dXJuY29kZSwgInNpZ2NoaWxkX2lnbm9yZS5weSBleGl0ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiBub24temVybyB3aXRoIHRoaXMgZXJyb3I6XG4lcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVyci5kZWNvZGUoJ3V0ZjgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnIuZGVjb2RlKCd1dGYtOCcpKQogCiAgICAgZGVmIHRlc3Rfc2VsZWN0X3VuYnVmZmVyZWQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExNDU5OiBidWZzaXplPTAgc2hvdWxkIHJlYWxseSBzZXQgdGhlIHBpcGVzIGFzCkBAIC0xNzMxLDI4ICsxODU2LDYgQEAKICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlLnRlYXJEb3duKHNlbGYpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ2V0YXR0cihzdWJwcm9jZXNzLCAnX3Bvc2l4c3VicHJvY2VzcycsIEZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICJfcG9zaXhzdWJwcm9jZXNzIGV4dGVuc2lvbiBtb2R1bGUgbm90IGZvdW5kLiIpCi1jbGFzcyBQcm9jZXNzVGVzdENhc2VQT1NJWFB1cmVQeXRob24oUHJvY2Vzc1Rlc3RDYXNlLCBQT1NJWFByb2Nlc3NUZXN0Q2FzZSk6Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgZ2xvYmFsIHN1YnByb2Nlc3MKLSAgICAgICAgYXNzZXJ0IHN1YnByb2Nlc3MuX3Bvc2l4c3VicHJvY2VzcwotICAgICAgICAjIFJlaW1wb3J0IHN1YnByb2Nlc3Mgd2hpbGUgZm9yY2luZyBfcG9zaXhzdWJwcm9jZXNzIHRvIG5vdCBleGlzdC4KLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnLipfcG9zaXhzdWJwcm9jZXNzIC4qIG5vdCBiZWluZyB1c2VkLionLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKSk6Ci0gICAgICAgICAgICBzdWJwcm9jZXNzID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKAotICAgICAgICAgICAgICAgICAgICAnc3VicHJvY2VzcycsIGJsb2NrZWQ9WydfcG9zaXhzdWJwcm9jZXNzJ10pCi0gICAgICAgIGFzc2VydCBub3Qgc3VicHJvY2Vzcy5fcG9zaXhzdWJwcm9jZXNzCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBnbG9iYWwgc3VicHJvY2VzcwotICAgICAgICAjIFJlaW1wb3J0IHN1YnByb2Nlc3MgYXMgaXQgc2hvdWxkIGJlLCByZXN0b3Jpbmcgb3JkZXIgdG8gdGhlIHVuaXZlcnNlLgotICAgICAgICBzdWJwcm9jZXNzID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdzdWJwcm9jZXNzJykKLSAgICAgICAgYXNzZXJ0IHN1YnByb2Nlc3MuX3Bvc2l4c3VicHJvY2VzcwotCi0KIGNsYXNzIEhlbHBlckZ1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwSWYobXN3aW5kb3dzLCAiZXJybm8gYW5kIEVJTlRSIG1ha2Ugbm8gc2Vuc2Ugb24gd2luZG93cyIpCiAgICAgZGVmIHRlc3RfZWludHJfcmV0cnlfY2FsbChzZWxmKToKQEAgLTE4NjEsNyArMTk2NCw2IEBACiAgICAgdW5pdF90ZXN0cyA9IChQcm9jZXNzVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICBQT1NJWFByb2Nlc3NUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgIFdpbjMyUHJvY2Vzc1Rlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlUE9TSVhQdXJlUHl0aG9uLAogICAgICAgICAgICAgICAgICAgQ29tbWFuZFRlc3RzLAogICAgICAgICAgICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlTm9Qb2xsLAogICAgICAgICAgICAgICAgICAgSGVscGVyRnVuY3Rpb25UZXN0cywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5IGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKaW5kZXggMDc4MDJkNi4uZmNjY2RmNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKQEAgLTksNyArOSw2IEBACiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncyhxdWlldD1UcnVlKToKICAgICAgICAgICAgIGltcG9ydCBiZGIKICAgICAgICAgICAgIGltcG9ydCBjZ2l0YgotICAgICAgICAgICAgaW1wb3J0IGNvZGUKIAogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5iY3BwY29tcGlsZXIKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuY2NvbXBpbGVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQppbmRleCA5MTQyMTZkLi4zMmViMWMwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKQEAgLTgxLDYgKzgxLDQwIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFKCkuZigpLCAnQUUnKQogCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X19fY2xhc3NfX19zZXQoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxMjM3MAorICAgICAgICBjbGFzcyBYKEEpOgorICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZigpCisgICAgICAgICAgICBfX2NsYXNzX18gPSA0MTMKKyAgICAgICAgeCA9IFgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZigpLCAnQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2NsYXNzX18sIDQxMykKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19pbnN0YW5jZW1ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgZihzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoWCgpLmYoKSwgWCkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19jbGFzc21ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKGNscyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworICAgICAgICBzZWxmLmFzc2VydElzKFguZigpLCBYKQorCisgICAgZGVmIHRlc3RfX19jbGFzc19fX3N0YXRpY21ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIHJldHVybiBfX2NsYXNzX18KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhYLmYoKSwgWCkKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFN1cGVyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ZmNkYmYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKQEAgLTAsMCArMSwxOTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgZXJybm8KK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitURVNURk4gPSBzdXBwb3J0LlRFU1RGTgorVEVTVERJUk4gPSBvcy5wYXRoLmJhc2VuYW1lKHRlbXBmaWxlLm1rZHRlbXAoZGlyPScuJykpCisKKworY2xhc3MgVGVzdFN1cHBvcnQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorICAgICAgICBzdXBwb3J0LnJtdHJlZShURVNURElSTikKKyAgICB0ZWFyRG93biA9IHNldFVwCisKKyAgICBkZWYgdGVzdF9pbXBvcnRfbW9kdWxlKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImZ0cGxpYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHVuaXR0ZXN0LlNraXBUZXN0LCBzdXBwb3J0LmltcG9ydF9tb2R1bGUsICJmb28iKQorCisgICAgZGVmIHRlc3RfaW1wb3J0X2ZyZXNoX21vZHVsZShzZWxmKToKKyAgICAgICAgc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCJmdHBsaWIiKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0dHJpYnV0ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc2VsZiwgInRlc3RfZ2V0X2F0dHJpYnV0ZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0X2dldF9hdHRyaWJ1dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHVuaXR0ZXN0LlNraXBUZXN0LCBzdXBwb3J0LmdldF9hdHRyaWJ1dGUsIHNlbGYsICJmb28iKQorCisgICAgQHVuaXR0ZXN0LnNraXAoImZhaWxpbmcgYnVpbGRib3RzIikKKyAgICBkZWYgdGVzdF9nZXRfb3JpZ2luYWxfc3Rkb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBvcnQuZ2V0X29yaWdpbmFsX3N0ZG91dCgpLCBzeXMuc3Rkb3V0KQorCisgICAgZGVmIHRlc3RfdW5sb2FkKHNlbGYpOgorICAgICAgICBpbXBvcnQgc2NoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRJbigic2NoZWQiLCBzeXMubW9kdWxlcykKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoInNjaGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigic2NoZWQiLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X3VubGluayhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInciKSBhcyBmOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzdXBwb3J0LnVubGluayhURVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoVEVTVEZOKSkKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfcm10cmVlKHNlbGYpOgorICAgICAgICBvcy5ta2RpcihURVNURElSTikKKyAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKFRFU1RESVJOLCBURVNURElSTikpCisgICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKFRFU1RESVJOKSkKKyAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCisKKyAgICBkZWYgdGVzdF9mb3JnZXQoc2VsZik6CisgICAgICAgIG1vZF9maWxlbmFtZSA9IFRFU1RGTiArICcucHknCisgICAgICAgIHdpdGggb3Blbihtb2RfZmlsZW5hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIHByaW50KCdmb28gPSAxJywgZmlsZT1mKQorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKFRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oVEVTVEZOLCBzeXMubW9kdWxlcykKKworICAgICAgICAgICAgc3VwcG9ydC5mb3JnZXQoVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihURVNURk4sIHN5cy5tb2R1bGVzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhtb2RfZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF9IT1NUKHNlbGYpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHMuYmluZCgoc3VwcG9ydC5IT1NULCAwKSkKKyAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9maW5kX3VudXNlZF9wb3J0KHNlbGYpOgorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzLmJpbmQoKHN1cHBvcnQuSE9TVCwgcG9ydCkpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfYmluZF9wb3J0KHNlbGYpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHMpCisgICAgICAgIHMubGlzdGVuKDEpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfdGVtcF9jd2Qoc2VsZik6CisgICAgICAgIGhlcmUgPSBvcy5nZXRjd2QoKQorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QobmFtZT1URVNURk4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKG9zLmdldGN3ZCgpKSwgVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKFRFU1RGTikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmJhc2VuYW1lKG9zLmdldGN3ZCgpKSwgaGVyZSkKKworICAgIGRlZiB0ZXN0X3NvcnRkaWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBvcnQuc29ydGRpY3QoezM6MywgMjoyLCAxOjF9KSwgInsxOiAxLCAyOiAyLCAzOiAzfSIpCisKKyAgICBkZWYgdGVzdF9tYWtlX2JhZF9mZChzZWxmKToKKyAgICAgICAgZmQgPSBzdXBwb3J0Lm1ha2VfYmFkX2ZkKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FQkFERikKKworICAgIGRlZiB0ZXN0X2NoZWNrX3N5bnRheF9lcnJvcihzZWxmKToKKyAgICAgICAgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBjbGFzcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvciwgc2VsZiwgIjEiKQorCisgICAgZGVmIHRlc3RfQ2xlYW5JbXBvcnQoc2VsZik6CisgICAgICAgIGltcG9ydCBpbXBvcnRsaWIKKyAgICAgICAgd2l0aCBzdXBwb3J0LkNsZWFuSW1wb3J0KCJhc3luY29yZSIpOgorICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoImFzeW5jb3JlIikKKworICAgIGRlZiB0ZXN0X0RpcnNPblN5c1BhdGgoc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5EaXJzT25TeXNQYXRoKCdmb28nLCAnYmFyJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJmb28iLCBzeXMucGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImJhciIsIHN5cy5wYXRoKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJmb28iLCBzeXMucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiYmFyIiwgc3lzLnBhdGgpCisKKyAgICBkZWYgdGVzdF9jYXB0dXJlZF9zdGRvdXQoc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICAgICAgcHJpbnQoImhlbGxvIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICJoZWxsb1xuIikKKworICAgIGRlZiB0ZXN0X2NhcHR1cmVkX3N0ZGVycihzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHM6CisgICAgICAgICAgICBwcmludCgiaGVsbG8iLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAiaGVsbG9cbiIpCisKKyAgICBkZWYgdGVzdF9jYXB0dXJlZF9zdGRpbihzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGluKCkgYXMgczoKKyAgICAgICAgICAgIHByaW50KCJoZWxsbyIsIGZpbGU9c3lzLnN0ZGluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgImhlbGxvXG4iKQorCisgICAgZGVmIHRlc3RfZ2NfY29sbGVjdChzZWxmKToKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKworICAgIGRlZiB0ZXN0X3B5dGhvbl9pc19vcHRpbWl6ZWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzdXBwb3J0LnB5dGhvbl9pc19vcHRpbWl6ZWQoKSwgYm9vbCkKKworICAgIGRlZiB0ZXN0X3N3YXBfYXR0cihzZWxmKToKKyAgICAgICAgY2xhc3MgT2JqOgorICAgICAgICAgICAgeCA9IDEKKyAgICAgICAgb2JqID0gT2JqKCkKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihvYmosICJ4IiwgNSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iai54LCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iai54LCAxKQorCisgICAgZGVmIHRlc3Rfc3dhcF9pdGVtKHNlbGYpOgorICAgICAgICBEID0geyJpdGVtIjoxfQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9pdGVtKEQsICJpdGVtIiwgNSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERbIml0ZW0iXSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEWyJpdGVtIl0sIDEpCisKKyAgICAjIFhYWCAtZm9sbG93cyBhIGxpc3Qgb2YgdW50ZXN0ZWQgQVBJCisgICAgIyBtYWtlX2xlZ2FjeV9weWMKKyAgICAjIGlzX3Jlc291cmNlX2VuYWJsZWQKKyAgICAjIHJlcXVpcmVzCisgICAgIyBmY21wCisgICAgIyB1bWFrcworICAgICMgZmluZGZpbGUKKyAgICAjIGNoZWNrX3dhcm5pbmdzCisgICAgIyBFbnZpcm9ubWVudFZhckd1YXJkCisgICAgIyBUcmFuc2llbnRSZXNvdXJjZQorICAgICMgdHJhbnNpZW50X2ludGVybmV0CisgICAgIyBydW5fd2l0aF9sb2NhbGUKKyAgICAjIHNldF9tZW1saW1pdAorICAgICMgYmlnbWVtdGVzdAorICAgICMgcHJlY2lzaW9uYmlnbWVtdGVzdAorICAgICMgYmlnYWRkcnNwYWNldGVzdAorICAgICMgcmVxdWlyZXNfcmVzb3VyY2UKKyAgICAjIHJ1bl9kb2N0ZXN0CisgICAgIyB0aHJlYWRpbmdfY2xlYW51cAorICAgICMgcmVhcF90aHJlYWRzCisgICAgIyByZWFwX2NoaWxkcmVuCisgICAgIyBzdHJpcF9weXRob25fc3RkZXJyCisgICAgIyBhcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MKKyAgICAjIGNhbl9zeW1saW5rCisgICAgIyBza2lwX3VubGVzc19zeW1saW5rCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHRlc3RzID0gW1Rlc3RTdXBwb3J0XQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXMucHkgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQppbmRleCBhNTI3NjdhLi4yOTIwYTI5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQpAQCAtMzAzLDYgKzMwMyw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRkbG9wZW5mbGFncygpLCBvbGRmbGFncysxKQogICAgICAgICAgICAgc3lzLnNldGRsb3BlbmZsYWdzKG9sZGZsYWdzKQogCisgICAgQHRlc3Quc3VwcG9ydC5yZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfcmVmY291bnQoc2VsZik6CiAgICAgICAgICMgbiBoZXJlIG11c3QgYmUgYSBnbG9iYWwgaW4gb3JkZXIgZm9yIHRoaXMgdGVzdCB0byBwYXNzIHdoaWxlCiAgICAgICAgICMgdHJhY2luZyB3aXRoIGEgcHl0aG9uIGZ1bmN0aW9uLiAgVHJhY2luZyBjYWxscyBQeUZyYW1lX0Zhc3RUb0xvY2FscwpAQCAtMzQyLDcgKzM0Myw3IEBACiAgICAgIyBUZXN0IHN5cy5fY3VycmVudF9mcmFtZXMoKSBpbiBhIFdJVEhfVEhSRUFEUyBidWlsZC4KICAgICBAdGVzdC5zdXBwb3J0LnJlYXBfdGhyZWFkcwogICAgIGRlZiBjdXJyZW50X2ZyYW1lc193aXRoX3RocmVhZHMoc2VsZik6Ci0gICAgICAgIGltcG9ydCB0aHJlYWRpbmcsIF90aHJlYWQKKyAgICAgICAgaW1wb3J0IHRocmVhZGluZwogICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCiAKICAgICAgICAgIyBTcGF3biBhIHRocmVhZCB0aGF0IGJsb2NrcyBhdCBhIGtub3duIHBsYWNlLiAgVGhlbiB0aGUgbWFpbgpAQCAtMzU2LDcgKzM1Nyw3IEBACiAgICAgICAgICAgICBnNDU2KCkKIAogICAgICAgICBkZWYgZzQ1NigpOgotICAgICAgICAgICAgdGhyZWFkX2luZm8uYXBwZW5kKF90aHJlYWQuZ2V0X2lkZW50KCkpCisgICAgICAgICAgICB0aHJlYWRfaW5mby5hcHBlbmQodGhyZWFkaW5nLmdldF9pZGVudCgpKQogICAgICAgICAgICAgZW50ZXJlZF9nLnNldCgpCiAgICAgICAgICAgICBsZWF2ZV9nLndhaXQoKQogCkBAIC0zNzIsNyArMzczLDcgQEAKIAogICAgICAgICBkID0gc3lzLl9jdXJyZW50X2ZyYW1lcygpCiAKLSAgICAgICAgbWFpbl9pZCA9IF90aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgbWFpbl9pZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQogICAgICAgICBzZWxmLmFzc2VydEluKG1haW5faWQsIGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4odGhyZWFkX2lkLCBkKQogCkBAIC00MTgsNiArNDE5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5idWlsdGluX21vZHVsZV9uYW1lcywgdHVwbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuY29weXJpZ2h0LCBzdHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuZXhlY19wcmVmaXgsIHN0cikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5iYXNlX2V4ZWNfcHJlZml4LCBzdHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuZXhlY3V0YWJsZSwgc3RyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzeXMuZmxvYXRfaW5mbyksIDExKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5mbG9hdF9pbmZvLnJhZGl4LCAyKQpAQCAtNDQ2LDggKzQ0OCwxMCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMubWF4c2l6ZSwgaW50KQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLm1heHVuaWNvZGUsIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMubWF4dW5pY29kZSwgMHgxMEZGRkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMucGxhdGZvcm0sIHN0cikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5wcmVmaXgsIHN0cikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5iYXNlX3ByZWZpeCwgc3RyKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLnZlcnNpb24sIHN0cikKICAgICAgICAgdmkgPSBzeXMudmVyc2lvbl9pbmZvCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2aVs6XSwgdHVwbGUpCkBAIC00NzMsNiArNDc3LDE0IEBACiAgICAgICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmFiaWZsYWdzLCBzdHIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHN5cywgJ3RocmVhZF9pbmZvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfdGhyZWFkX2luZm8oc2VsZik6CisgICAgICAgIGluZm8gPSBzeXMudGhyZWFkX2luZm8KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaW5mbyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaW5mby5uYW1lLCAoJ250JywgJ29zMicsICdwdGhyZWFkJywgJ3NvbGFyaXMnLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihpbmZvLmxvY2ssICgnc2VtYXBob3JlJywgJ211dGV4K2NvbmQnLCBOb25lKSkKKwogICAgIGRlZiB0ZXN0XzQzNTgxKHNlbGYpOgogICAgICAgICAjIENhbid0IHVzZSBzeXMuc3Rkb3V0LCBhcyB0aGlzIGlzIGEgU3RyaW5nSU8gb2JqZWN0IHdoZW4KICAgICAgICAgIyB0aGUgdGVzdCBydW5zIHVuZGVyIHJlZ3J0ZXN0LgpAQCAtNTAwLDcgKzUxMiw3IEBACiAKICAgICBkZWYgdGVzdF9zeXNfZmxhZ3Moc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzeXMuZmxhZ3MpCi0gICAgICAgIGF0dHJzID0gKCJkZWJ1ZyIsICJkaXZpc2lvbl93YXJuaW5nIiwKKyAgICAgICAgYXR0cnMgPSAoImRlYnVnIiwKICAgICAgICAgICAgICAgICAgImluc3BlY3QiLCAiaW50ZXJhY3RpdmUiLCAib3B0aW1pemUiLCAiZG9udF93cml0ZV9ieXRlY29kZSIsCiAgICAgICAgICAgICAgICAgICJub191c2VyX3NpdGUiLCAibm9fc2l0ZSIsICJpZ25vcmVfZW52aXJvbm1lbnQiLCAidmVyYm9zZSIsCiAgICAgICAgICAgICAgICAgICJieXRlc193YXJuaW5nIiwgInF1aWV0IiwgImhhc2hfcmFuZG9taXphdGlvbiIpCkBAIC01MzIsNiArNTQ0LDggQEAKICAgICAgICAgb3V0ID0gcC5jb21tdW5pY2F0ZSgpWzBdLnN0cmlwKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIGInPycpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5iYXNlX3ByZWZpeCAhPSBzeXMucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgaXMgbm90IHZlbnYtY29tcGF0aWJsZScpCiAgICAgZGVmIHRlc3RfZXhlY3V0YWJsZShzZWxmKToKICAgICAgICAgIyBzeXMuZXhlY3V0YWJsZSBzaG91bGQgYmUgYWJzb2x1dGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpLCBzeXMuZXhlY3V0YWJsZSkKQEAgLTU2OCw2ICs1ODIsMzQgQEAKICAgICAgICAgICAgIGV4cGVjdGVkID0gTm9uZQogICAgICAgICBzZWxmLmNoZWNrX2ZzZW5jb2RpbmcoZnNfZW5jb2RpbmcsIGV4cGVjdGVkKQogCisgICAgZGVmIHRlc3RfaW1wbGVtZW50YXRpb24oc2VsZik6CisgICAgICAgICMgVGhpcyB0ZXN0IGFwcGxpZXMgdG8gYWxsIGltcGxlbWVudGF0aW9ucyBlcXVhbGx5LgorCisgICAgICAgIGxldmVscyA9IHsnYWxwaGEnOiAweEEsICdiZXRhJzogMHhCLCAnY2FuZGlkYXRlJzogMHhDLCAncmVsZWFzZSc6IDB4Rn0KKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICduYW1lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ3ZlcnNpb24nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnaGV4dmVyc2lvbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdjYWNoZV90YWcnKSkKKworICAgICAgICB2ZXJzaW9uID0gc3lzLmltcGxlbWVudGF0aW9uLnZlcnNpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJzaW9uWzoyXSwgKHZlcnNpb24ubWFqb3IsIHZlcnNpb24ubWlub3IpKQorCisgICAgICAgIGhleHZlcnNpb24gPSAodmVyc2lvbi5tYWpvciA8PCAyNCB8IHZlcnNpb24ubWlub3IgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24ubWljcm8gPDwgOCB8IGxldmVsc1t2ZXJzaW9uLnJlbGVhc2VsZXZlbF0gPDwgNCB8CisgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi5zZXJpYWwgPDwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuaW1wbGVtZW50YXRpb24uaGV4dmVyc2lvbiwgaGV4dmVyc2lvbikKKworICAgICAgICAjIFBFUCA0MjEgcmVxdWlyZXMgdGhhdCAubmFtZSBiZSBsb3dlciBjYXNlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5pbXBsZW1lbnRhdGlvbi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5pbXBsZW1lbnRhdGlvbi5uYW1lLmxvd2VyKCkpCisKKyAgICBkZWYgdGVzdF9kZWJ1Z21hbGxvY3N0YXRzKHNlbGYpOgorICAgICAgICAjIFRlc3Qgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCkKKyAgICAgICAgZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKKyAgICAgICAgYXJncyA9IFsnLWMnLCAnaW1wb3J0IHN5czsgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCknXQorICAgICAgICByZXQsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiImZyZWUgUHlEaWN0T2JqZWN0cyIsIGVycikKIAogY2xhc3MgU2l6ZW9mVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU5MSwxMiArNjMzLDEyIEBACiAgICAgICAgICMgYm9vbCBvYmplY3RzIGFyZSBub3QgZ2MgdHJhY2tlZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSksIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQogICAgICAgICAjIGJ1dCBsaXN0cyBhcmUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKFtdKSwgdnNpemUoJ1BQJykgKyBnY19oZWFkZXJfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKFtdKSwgdnNpemUoJ1BuJykgKyBnY19oZWFkZXJfc2l6ZSkKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6Ci0gICAgICAgIHZzaXplID0gdGVzdC5zdXBwb3J0LmNhbGN2b2Jqc2l6ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSksIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSwgLTEpLCB2c2l6ZSgnJykgKyBzZWxmLmxvbmdkaWdpdCkKKyAgICAgICAgc2l6ZSA9IHRlc3Quc3VwcG9ydC5jYWxjdm9ianNpemUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKFRydWUpLCBzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSwgLTEpLCBzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQogCiAgICAgZGVmIHRlc3Rfb2JqZWN0dHlwZXMoc2VsZik6CiAgICAgICAgICMgY2hlY2sgYWxsIHR5cGVzIGRlZmluZWQgaW4gT2JqZWN0cy8KQEAgLTYxMyw5ICs2NTUsOSBAQAogICAgICAgICBzYW1wbGVzID0gW2InJywgYid1JyoxMDAwMDBdCiAgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKICAgICAgICAgICAgIHggPSBieXRlYXJyYXkoc2FtcGxlKQotICAgICAgICAgICAgY2hlY2soeCwgdnNpemUoJ2lQUCcpICsgeC5fX2FsbG9jX18oKSkKKyAgICAgICAgICAgIGNoZWNrKHgsIHZzaXplKCdpblAnKSArIHguX19hbGxvY19fKCkpCiAgICAgICAgICMgYnl0ZWFycmF5X2l0ZXJhdG9yCi0gICAgICAgIGNoZWNrKGl0ZXIoYnl0ZWFycmF5KCkpLCBzaXplKCdQUCcpKQorICAgICAgICBjaGVjayhpdGVyKGJ5dGVhcnJheSgpKSwgc2l6ZSgnblAnKSkKICAgICAgICAgIyBjZWxsCiAgICAgICAgIGRlZiBnZXRfY2VsbCgpOgogICAgICAgICAgICAgeCA9IDQyCkBAIC02MjQsMjcgKzY2NiwzMyBAQAogICAgICAgICAgICAgcmV0dXJuIGlubmVyCiAgICAgICAgIGNoZWNrKGdldF9jZWxsKCkuX19jbG9zdXJlX19bMF0sIHNpemUoJ1AnKSkKICAgICAgICAgIyBjb2RlCi0gICAgICAgIGNoZWNrKGdldF9jZWxsKCkuX19jb2RlX18sIHNpemUoJzVpOFBpM1AnKSkKKyAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbC5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQorICAgICAgICBkZWYgZ2V0X2NlbGwyKHgpOgorICAgICAgICAgICAgZGVmIGlubmVyKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgICAgIHJldHVybiBpbm5lcgorICAgICAgICBjaGVjayhnZXRfY2VsbDIuX19jb2RlX18sIHNpemUoJzVpOVBpM1AnKSArIDEpCiAgICAgICAgICMgY29tcGxleAogICAgICAgICBjaGVjayhjb21wbGV4KDAsMSksIHNpemUoJzJkJykpCiAgICAgICAgICMgbWV0aG9kX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQotICAgICAgICBjaGVjayhzdHIubG93ZXIsIHNpemUoJzJQUCcpKQorICAgICAgICBjaGVjayhzdHIubG93ZXIsIHNpemUoJzNQUCcpKQogICAgICAgICAjIGNsYXNzbWV0aG9kX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICAjIFhYWAogICAgICAgICAjIG1lbWJlcl9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgaW1wb3J0IGRhdGV0aW1lCi0gICAgICAgIGNoZWNrKGRhdGV0aW1lLnRpbWVkZWx0YS5kYXlzLCBzaXplKCcyUFAnKSkKKyAgICAgICAgY2hlY2soZGF0ZXRpbWUudGltZWRlbHRhLmRheXMsIHNpemUoJzNQUCcpKQogICAgICAgICAjIGdldHNldF9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgaW1wb3J0IGNvbGxlY3Rpb25zCi0gICAgICAgIGNoZWNrKGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeSwgc2l6ZSgnMlBQJykpCisgICAgICAgIGNoZWNrKGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeSwgc2l6ZSgnM1BQJykpCiAgICAgICAgICMgd3JhcHBlcl9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKLSAgICAgICAgY2hlY2soaW50Ll9fYWRkX18sIHNpemUoJzJQMlAnKSkKKyAgICAgICAgY2hlY2soaW50Ll9fYWRkX18sIHNpemUoJzNQMlAnKSkKICAgICAgICAgIyBtZXRob2Qtd3JhcHBlciAoZGVzY3JpcHRvciBvYmplY3QpCiAgICAgICAgIGNoZWNrKHt9Ll9faXRlcl9fLCBzaXplKCcyUCcpKQogICAgICAgICAjIGRpY3QKLSAgICAgICAgY2hlY2soe30sIHNpemUoJzNQMlAnICsgOConUDJQJykpCisgICAgICAgIGNoZWNrKHt9LCBzaXplKCduMlAnICsgJzJuUG4nICsgOConbjJQJykpCiAgICAgICAgIGxvbmdkaWN0ID0gezE6MSwgMjoyLCAzOjMsIDQ6NCwgNTo1LCA2OjYsIDc6NywgODo4fQotICAgICAgICBjaGVjayhsb25nZGljdCwgc2l6ZSgnM1AyUCcgKyA4KidQMlAnKSArIDE2KnN0cnVjdC5jYWxjc2l6ZSgnUDJQJykpCisgICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCduMlAnICsgJzJuUG4nKSArIDE2KnN0cnVjdC5jYWxjc2l6ZSgnbjJQJykpCiAgICAgICAgICMgZGljdGlvbmFyeS1rZXlpdGVyYXRvcgogICAgICAgICBjaGVjayh7fS5rZXlzKCksIHNpemUoJ1AnKSkKICAgICAgICAgIyBkaWN0aW9uYXJ5LXZhbHVlaXRlcmF0b3IKQEAgLTY1MiwxOCArNzAwLDE4IEBACiAgICAgICAgICMgZGljdGlvbmFyeS1pdGVtaXRlcmF0b3IKICAgICAgICAgY2hlY2soe30uaXRlbXMoKSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGRpY3Rpb25hcnkgaXRlcmF0b3IKLSAgICAgICAgY2hlY2soaXRlcih7fSksIHNpemUoJ1AyUFBQJykpCisgICAgICAgIGNoZWNrKGl0ZXIoe30pLCBzaXplKCdQMm5QbicpKQogICAgICAgICAjIGRpY3Rwcm94eQogICAgICAgICBjbGFzcyBDKG9iamVjdCk6IHBhc3MKICAgICAgICAgY2hlY2soQy5fX2RpY3RfXywgc2l6ZSgnUCcpKQogICAgICAgICAjIEJhc2VFeGNlcHRpb24KLSAgICAgICAgY2hlY2soQmFzZUV4Y2VwdGlvbigpLCBzaXplKCc1UCcpKQorICAgICAgICBjaGVjayhCYXNlRXhjZXB0aW9uKCksIHNpemUoJzVQaScpKQogICAgICAgICAjIFVuaWNvZGVFbmNvZGVFcnJvcgotICAgICAgICBjaGVjayhVbmljb2RlRW5jb2RlRXJyb3IoIiIsICIiLCAwLCAwLCAiIiksIHNpemUoJzVQIDJQMlBQJykpCisgICAgICAgIGNoZWNrKFVuaWNvZGVFbmNvZGVFcnJvcigiIiwgIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVBpIDJQMm5QJykpCiAgICAgICAgICMgVW5pY29kZURlY29kZUVycm9yCi0gICAgICAgIGNoZWNrKFVuaWNvZGVEZWNvZGVFcnJvcigiIiwgYiIiLCAwLCAwLCAiIiksIHNpemUoJzVQIDJQMlBQJykpCisgICAgICAgIGNoZWNrKFVuaWNvZGVEZWNvZGVFcnJvcigiIiwgYiIiLCAwLCAwLCAiIiksIHNpemUoJzVQaSAyUDJuUCcpKQogICAgICAgICAjIFVuaWNvZGVUcmFuc2xhdGVFcnJvcgotICAgICAgICBjaGVjayhVbmljb2RlVHJhbnNsYXRlRXJyb3IoIiIsIDAsIDEsICIiKSwgc2l6ZSgnNVAgMlAyUFAnKSkKKyAgICAgICAgY2hlY2soVW5pY29kZVRyYW5zbGF0ZUVycm9yKCIiLCAwLCAxLCAiIiksIHNpemUoJzVQaSAyUDJuUCcpKQogICAgICAgICAjIGVsbGlwc2VzCiAgICAgICAgIGNoZWNrKEVsbGlwc2lzLCBzaXplKCcnKSkKICAgICAgICAgIyBFbmNvZGluZ01hcApAQCAtNjcxLDkgKzcxOSw5IEBACiAgICAgICAgIHggPSBjb2RlY3MuY2hhcm1hcF9idWlsZChlbmNvZGluZ3MuaXNvODg1OV8zLmRlY29kaW5nX3RhYmxlKQogICAgICAgICBjaGVjayh4LCBzaXplKCczMkIyaUInKSkKICAgICAgICAgIyBlbnVtZXJhdGUKLSAgICAgICAgY2hlY2soZW51bWVyYXRlKFtdKSwgc2l6ZSgnbDNQJykpCisgICAgICAgIGNoZWNrKGVudW1lcmF0ZShbXSksIHNpemUoJ24zUCcpKQogICAgICAgICAjIHJldmVyc2UKLSAgICAgICAgY2hlY2socmV2ZXJzZWQoJycpLCBzaXplKCdQUCcpKQorICAgICAgICBjaGVjayhyZXZlcnNlZCgnJyksIHNpemUoJ25QJykpCiAgICAgICAgICMgZmxvYXQKICAgICAgICAgY2hlY2soZmxvYXQoMCksIHNpemUoJ2QnKSkKICAgICAgICAgIyBzeXMuZmxvYXRpbmZvCkBAIC02ODksNyArNzM3LDcgQEAKICAgICAgICAgY2hlY2soeCwgdnNpemUoJzEyUDNpJyArIENPX01BWEJMT0NLUyonM2knICsgJ1AnICsgZXh0cmFzKidQJykpCiAgICAgICAgICMgZnVuY3Rpb24KICAgICAgICAgZGVmIGZ1bmMoKTogcGFzcwotICAgICAgICBjaGVjayhmdW5jLCBzaXplKCcxMVAnKSkKKyAgICAgICAgY2hlY2soZnVuYywgc2l6ZSgnMTJQJykpCiAgICAgICAgIGNsYXNzIGMoKToKICAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgICAgIGRlZiBmb28oKToKQEAgLTY5OCwxMiArNzQ2LDEyIEBACiAgICAgICAgICAgICBkZWYgYmFyKGNscyk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgIyBzdGF0aWNtZXRob2QKLSAgICAgICAgICAgIGNoZWNrKGZvbywgc2l6ZSgnUCcpKQorICAgICAgICAgICAgY2hlY2soZm9vLCBzaXplKCdQUCcpKQogICAgICAgICAgICAgIyBjbGFzc21ldGhvZAotICAgICAgICAgICAgY2hlY2soYmFyLCBzaXplKCdQJykpCisgICAgICAgICAgICBjaGVjayhiYXIsIHNpemUoJ1BQJykpCiAgICAgICAgICMgZ2VuZXJhdG9yCiAgICAgICAgIGRlZiBnZXRfZ2VuKCk6IHlpZWxkIDEKLSAgICAgICAgY2hlY2soZ2V0X2dlbigpLCBzaXplKCdQaTJQJykpCisgICAgICAgIGNoZWNrKGdldF9nZW4oKSwgc2l6ZSgnUGIyUCcpKQogICAgICAgICAjIGl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKGl0ZXIoJ2FiYycpLCBzaXplKCdsUCcpKQogICAgICAgICAjIGNhbGxhYmxlLWl0ZXJhdG9yCkBAIC03MTIsNyArNzYwLDcgQEAKICAgICAgICAgIyBsaXN0CiAgICAgICAgIHNhbXBsZXMgPSBbW10sIFsxLDIsM10sIFsnMScsICcyJywgJzMnXV0KICAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgotICAgICAgICAgICAgY2hlY2soc2FtcGxlLCB2c2l6ZSgnUFAnKSArIGxlbihzYW1wbGUpKnNlbGYuUCkKKyAgICAgICAgICAgIGNoZWNrKHNhbXBsZSwgdnNpemUoJ1BuJykgKyBsZW4oc2FtcGxlKSpzZWxmLlApCiAgICAgICAgICMgc29ydHdyYXBwZXIgKGxpc3QpCiAgICAgICAgICMgWFhYCiAgICAgICAgICMgY21wd3JhcHBlciAobGlzdCkKQEAgLTcyMCw3ICs3NjgsNyBAQAogICAgICAgICAjIGxpc3RpdGVyYXRvciAobGlzdCkKICAgICAgICAgY2hlY2soaXRlcihbXSksIHNpemUoJ2xQJykpCiAgICAgICAgICMgbGlzdHJldmVyc2VpdGVyYXRvciAobGlzdCkKLSAgICAgICAgY2hlY2socmV2ZXJzZWQoW10pLCBzaXplKCdsUCcpKQorICAgICAgICBjaGVjayhyZXZlcnNlZChbXSksIHNpemUoJ25QJykpCiAgICAgICAgICMgbG9uZwogICAgICAgICBjaGVjaygwLCB2c2l6ZSgnJykpCiAgICAgICAgIGNoZWNrKDEsIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQpAQCAtNzMwLDkgKzc3OCw5IEBACiAgICAgICAgIGNoZWNrKGludChQeUxvbmdfQkFTRSoqMi0xKSwgdnNpemUoJycpICsgMipzZWxmLmxvbmdkaWdpdCkKICAgICAgICAgY2hlY2soaW50KFB5TG9uZ19CQVNFKioyKSwgdnNpemUoJycpICsgMypzZWxmLmxvbmdkaWdpdCkKICAgICAgICAgIyBtZW1vcnl2aWV3Ci0gICAgICAgIGNoZWNrKG1lbW9yeXZpZXcoYicnKSwgc2l6ZSgnUFAyUDJpN1AnKSkKKyAgICAgICAgY2hlY2sobWVtb3J5dmlldyhiJycpLCBzaXplKCdQbmluIDJQMm4yaTVQIDNjUG4nKSkKICAgICAgICAgIyBtb2R1bGUKLSAgICAgICAgY2hlY2sodW5pdHRlc3QsIHNpemUoJzNQJykpCisgICAgICAgIGNoZWNrKHVuaXR0ZXN0LCBzaXplKCdQblAnKSkKICAgICAgICAgIyBOb25lCiAgICAgICAgIGNoZWNrKE5vbmUsIHNpemUoJycpKQogICAgICAgICAjIE5vdEltcGxlbWVudGVkVHlwZQpAQCAtNzUxLDcgKzc5OSw3IEBACiAgICAgICAgICMgcmFuZ2VpdGVyYXRvcgogICAgICAgICBjaGVjayhpdGVyKHJhbmdlKDEpKSwgc2l6ZSgnNGwnKSkKICAgICAgICAgIyByZXZlcnNlCi0gICAgICAgIGNoZWNrKHJldmVyc2VkKCcnKSwgc2l6ZSgnUFAnKSkKKyAgICAgICAgY2hlY2socmV2ZXJzZWQoJycpLCBzaXplKCduUCcpKQogICAgICAgICAjIHJhbmdlCiAgICAgICAgIGNoZWNrKHJhbmdlKDEpLCBzaXplKCc0UCcpKQogICAgICAgICBjaGVjayhyYW5nZSg2NjAwMCksIHNpemUoJzRQJykpCkBAIC03NTksNyArODA3LDcgQEAKICAgICAgICAgIyBmcm96ZW5zZXQKICAgICAgICAgUHlTZXRfTUlOU0laRSA9IDgKICAgICAgICAgc2FtcGxlcyA9IFtbXSwgcmFuZ2UoMTApLCByYW5nZSg1MCldCi0gICAgICAgIHMgPSBzaXplKCczUDJQJyArIFB5U2V0X01JTlNJWkUqJ1BQJyArICdQUCcpCisgICAgICAgIHMgPSBzaXplKCczbjJQJyArIFB5U2V0X01JTlNJWkUqJ25QJyArICduUCcpCiAgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKICAgICAgICAgICAgIG1pbnVzZWQgPSBsZW4oc2FtcGxlKQogICAgICAgICAgICAgaWYgbWludXNlZCA9PSAwOiB0bXAgPSAxCkBAIC03NzMsMTAgKzgyMSwxMCBAQAogICAgICAgICAgICAgICAgIGNoZWNrKHNldChzYW1wbGUpLCBzKQogICAgICAgICAgICAgICAgIGNoZWNrKGZyb3plbnNldChzYW1wbGUpLCBzKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjaGVjayhzZXQoc2FtcGxlKSwgcyArIG5ld3NpemUqc3RydWN0LmNhbGNzaXplKCdsUCcpKQotICAgICAgICAgICAgICAgIGNoZWNrKGZyb3plbnNldChzYW1wbGUpLCBzICsgbmV3c2l6ZSpzdHJ1Y3QuY2FsY3NpemUoJ2xQJykpCisgICAgICAgICAgICAgICAgY2hlY2soc2V0KHNhbXBsZSksIHMgKyBuZXdzaXplKnN0cnVjdC5jYWxjc2l6ZSgnblAnKSkKKyAgICAgICAgICAgICAgICBjaGVjayhmcm96ZW5zZXQoc2FtcGxlKSwgcyArIG5ld3NpemUqc3RydWN0LmNhbGNzaXplKCduUCcpKQogICAgICAgICAjIHNldGl0ZXJhdG9yCi0gICAgICAgIGNoZWNrKGl0ZXIoc2V0KCkpLCBzaXplKCdQM1AnKSkKKyAgICAgICAgY2hlY2soaXRlcihzZXQoKSksIHNpemUoJ1AzbicpKQogICAgICAgICAjIHNsaWNlCiAgICAgICAgIGNoZWNrKHNsaWNlKDApLCBzaXplKCczUCcpKQogICAgICAgICAjIHN1cGVyCkBAIC03ODUsMjggKzgzMyw1NiBAQAogICAgICAgICBjaGVjaygoKSwgdnNpemUoJycpKQogICAgICAgICBjaGVjaygoMSwyLDMpLCB2c2l6ZSgnJykgKyAzKnNlbGYuUCkKICAgICAgICAgIyB0eXBlCi0gICAgICAgICMgKFB5VHlwZU9iamVjdCArIFB5TnVtYmVyTWV0aG9kcyArIFB5TWFwcGluZ01ldGhvZHMgKwotICAgICAgICAjICBQeVNlcXVlbmNlTWV0aG9kcyArIFB5QnVmZmVyUHJvY3MpCi0gICAgICAgIHMgPSB2c2l6ZSgnUDJQMTVQbDRQUDlQUDExUEknKSArIHN0cnVjdC5jYWxjc2l6ZSgnMTZQaTE3UCAzUCAxMFAgMlAgMlAnKQorICAgICAgICAjIHN0YXRpYyB0eXBlOiBQeVR5cGVPYmplY3QKKyAgICAgICAgcyA9IHZzaXplKCdQMm4xNVBsNFBuOVBuMTFQSScpCiAgICAgICAgIGNoZWNrKGludCwgcykKKyAgICAgICAgIyAoUHlUeXBlT2JqZWN0ICsgUHlOdW1iZXJNZXRob2RzICsgUHlNYXBwaW5nTWV0aG9kcyArCisgICAgICAgICMgIFB5U2VxdWVuY2VNZXRob2RzICsgUHlCdWZmZXJQcm9jcyArIDRQKQorICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJJykgKyBzdHJ1Y3QuY2FsY3NpemUoJzM0UCAzUCAxMFAgMlAgNFAnKQorICAgICAgICAjIFNlcGFyYXRlIGJsb2NrIGZvciBQeURpY3RLZXlzT2JqZWN0IHdpdGggNCBlbnRyaWVzCisgICAgICAgIHMgKz0gc3RydWN0LmNhbGNzaXplKCIyblBuIikgKyA0KnN0cnVjdC5jYWxjc2l6ZSgibjJQIikKICAgICAgICAgIyBjbGFzcwogICAgICAgICBjbGFzcyBuZXdzdHlsZWNsYXNzKG9iamVjdCk6IHBhc3MKICAgICAgICAgY2hlY2sobmV3c3R5bGVjbGFzcywgcykKKyAgICAgICAgIyBkaWN0IHdpdGggc2hhcmVkIGtleXMKKyAgICAgICAgY2hlY2sobmV3c3R5bGVjbGFzcygpLl9fZGljdF9fLCBzaXplKCduMlAnICsgJzJuUG4nKSkKICAgICAgICAgIyB1bmljb2RlCi0gICAgICAgIHVzaXplID0gbGVuKCdcMCcuZW5jb2RlKCd1bmljb2RlLWludGVybmFsJykpCi0gICAgICAgIHNhbXBsZXMgPSBbJycsICcxJyoxMDBdCi0gICAgICAgICMgd2UgbmVlZCB0byB0ZXN0IGZvciBib3RoIHNpemVzLCBiZWNhdXNlIHdlIGRvbid0IGtub3cgaWYgdGhlIHN0cmluZwotICAgICAgICAjIGhhcyBiZWVuIGNhY2hlZAorICAgICAgICAjIGVhY2ggdHVwbGUgY29udGFpbnMgYSBzdHJpbmcgYW5kIGl0cyBleHBlY3RlZCBjaGFyYWN0ZXIgc2l6ZQorICAgICAgICAjIGRvbid0IHB1dCBhbnkgc3RhdGljIHN0cmluZ3MgaGVyZSwgYXMgdGhleSBtYXkgY29udGFpbgorICAgICAgICAjIHdjaGFyX3Qgb3IgVVRGLTggcmVwcmVzZW50YXRpb25zCisgICAgICAgIHNhbXBsZXMgPSBbJzEnKjEwMCwgJ1x4ZmYnKjUwLAorICAgICAgICAgICAgICAgICAgICdcdTAxMDAnKjQwLCAnXHVmZmZmJyoxMDAsCisgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTAwMDAnKjMwLCAnXFUwMDEwZmZmZicqMTAwXQorICAgICAgICBhc2NpaWZpZWxkcyA9ICJubmlQIgorICAgICAgICBjb21wYWN0ZmllbGRzID0gYXNjaWlmaWVsZHMgKyAiblBuIgorICAgICAgICB1bmljb2RlZmllbGRzID0gY29tcGFjdGZpZWxkcyArICJQIgogICAgICAgICBmb3IgcyBpbiBzYW1wbGVzOgotICAgICAgICAgICAgYmFzaWNzaXplID0gIHNpemUoJ1BQUGlQJykgKyB1c2l6ZSAqIChsZW4ocykgKyAxKQotICAgICAgICAgICAgY2hlY2socywgYmFzaWNzaXplKQorICAgICAgICAgICAgbWF4Y2hhciA9IG9yZChtYXgocykpCisgICAgICAgICAgICBpZiBtYXhjaGFyIDwgMTI4OgorICAgICAgICAgICAgICAgIEwgPSBzaXplKGFzY2lpZmllbGRzKSArIGxlbihzKSArIDEKKyAgICAgICAgICAgIGVsaWYgbWF4Y2hhciA8IDI1NjoKKyAgICAgICAgICAgICAgICBMID0gc2l6ZShjb21wYWN0ZmllbGRzKSArIGxlbihzKSArIDEKKyAgICAgICAgICAgIGVsaWYgbWF4Y2hhciA8IDY1NTM2OgorICAgICAgICAgICAgICAgIEwgPSBzaXplKGNvbXBhY3RmaWVsZHMpICsgMioobGVuKHMpICsgMSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgTCA9IHNpemUoY29tcGFjdGZpZWxkcykgKyA0KihsZW4ocykgKyAxKQorICAgICAgICAgICAgY2hlY2socywgTCkKKyAgICAgICAgIyB2ZXJpZnkgdGhhdCB0aGUgVVRGLTggc2l6ZSBpcyBhY2NvdW50ZWQgZm9yCisgICAgICAgIHMgPSBjaHIoMHg0MDAwKSAgICMgNCBieXRlcyBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24KKyAgICAgICAgY2hlY2socywgc2l6ZShjb21wYWN0ZmllbGRzKSArIDQpCisgICAgICAgICMgY29tcGlsZSgpIHdpbGwgdHJpZ2dlciB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgVVRGLTgKKyAgICAgICAgIyByZXByZXNlbnRhdGlvbiBhcyBhIHNpZGUgZWZmZWN0CisgICAgICAgIGNvbXBpbGUocywgIjxzdGRpbj4iLCAiZXZhbCIpCisgICAgICAgIGNoZWNrKHMsIHNpemUoY29tcGFjdGZpZWxkcykgKyA0ICsgNCkKKyAgICAgICAgIyBUT0RPOiBhZGQgY2hlY2sgdGhhdCBmb3JjZXMgdGhlIHByZXNlbmNlIG9mIHdjaGFyX3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgIyBUT0RPOiBhZGQgY2hlY2sgdGhhdCBmb3JjZXMgbGF5b3V0IG9mIHVuaWNvZGVmaWVsZHMKICAgICAgICAgIyB3ZWFrcmVmCiAgICAgICAgIGltcG9ydCB3ZWFrcmVmCi0gICAgICAgIGNoZWNrKHdlYWtyZWYucmVmKGludCksIHNpemUoJzJQbDJQJykpCisgICAgICAgIGNoZWNrKHdlYWtyZWYucmVmKGludCksIHNpemUoJzJQbjJQJykpCiAgICAgICAgICMgd2Vha3Byb3h5CiAgICAgICAgICMgWFhYCiAgICAgICAgICMgd2Vha2NhbGxhYmxlcHJveHkKLSAgICAgICAgY2hlY2sod2Vha3JlZi5wcm94eShpbnQpLCBzaXplKCcyUGwyUCcpKQorICAgICAgICBjaGVjayh3ZWFrcmVmLnByb3h5KGludCksIHNpemUoJzJQbjJQJykpCiAKICAgICBkZWYgdGVzdF9weXRob250eXBlcyhzZWxmKToKICAgICAgICAgIyBjaGVjayBhbGwgdHlwZXMgZGVmaW5lZCBpbiBQeXRob24vCkBAIC04MTUsMTAgKzg5MSw3IEBACiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKICAgICAgICAgIyBfYXN0LkFTVAogICAgICAgICBpbXBvcnQgX2FzdAotICAgICAgICBjaGVjayhfYXN0LkFTVCgpLCBzaXplKCcnKSkKLSAgICAgICAgIyBpbXAuTnVsbEltcG9ydGVyCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICAgICAgY2hlY2soaW1wLk51bGxJbXBvcnRlcihzZWxmLmZpbGUubmFtZSksIHNpemUoJycpKQorICAgICAgICBjaGVjayhfYXN0LkFTVCgpLCBzaXplKCdQJykpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgogICAgICAgICBleGNlcHQgVHlwZUVycm9yOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQppbmRleCBlYTJiYjI5Li5mZGY5NThjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQpAQCAtMjUxLDYgKzI1MSw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnVzaW5nX2djID0gZ2MuaXNlbmFibGVkKCkKICAgICAgICAgZ2MuZGlzYWJsZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnVzaW5nX2djOgpAQCAtMzg5LDYgKzM5MCw5IEBACiAKIAogY2xhc3MgUmFpc2luZ1RyYWNlRnVuY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQorCiAgICAgZGVmIHRyYWNlKHNlbGYsIGZyYW1lLCBldmVudCwgYXJnKToKICAgICAgICAgIiIiQSB0cmFjZSBmdW5jdGlvbiB0aGF0IHJhaXNlcyBhbiBleGNlcHRpb24gaW4gcmVzcG9uc2UgdG8gYQogICAgICAgICBzcGVjaWZpYyB0cmFjZSBldmVudC4iIiIKQEAgLTY5Niw2ICs3MDAsMTAgQEAKIAogCiBjbGFzcyBKdW1wVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCisgICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQorCiAgICAgZGVmIGNvbXBhcmVfanVtcF9vdXRwdXQoc2VsZiwgZXhwZWN0ZWQsIHJlY2VpdmVkKToKICAgICAgICAgaWYgcmVjZWl2ZWQgIT0gZXhwZWN0ZWQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoICJPdXRwdXRzIGRvbid0IG1hdGNoOlxuIiArCkBAIC03NDcsNiArNzU1LDggQEAKICAgICBkZWYgdGVzdF8xOF9ub19qdW1wX3RvX25vbl9pbnRlZ2VycyhzZWxmKToKICAgICAgICAgc2VsZi5ydW5fdGVzdChub19qdW1wX3RvX25vbl9pbnRlZ2VycykKICAgICBkZWYgdGVzdF8xOV9ub19qdW1wX3dpdGhvdXRfdHJhY2VfZnVuY3Rpb24oc2VsZik6CisgICAgICAgICMgTXVzdCBzZXQgc3lzLnNldHRyYWNlKE5vbmUpIGluIHNldFVwKCksIGVsc2UgY29uZGl0aW9uIGlzIG5vdAorICAgICAgICAjIHRyaWdnZXJlZC4KICAgICAgICAgbm9fanVtcF93aXRob3V0X3RyYWNlX2Z1bmN0aW9uKCkKICAgICBkZWYgdGVzdF9qdW1wX2Fjcm9zc193aXRoKHNlbGYpOgogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQppbmRleCBhYWJiNmZhLi45MjE5MzYwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQpAQCAtMSwxMSArMSw5IEBACi0iIiJUZXN0cyBmb3Igc3lzY29uZmlnLiIiIgotCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzaHV0aWwKLWZyb20gY29weSBpbXBvcnQgY29weSwgZGVlcGNvcHkKK2Zyb20gY29weSBpbXBvcnQgY29weQogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJ1bl91bml0dGVzdCwgVEVTVEZOLCB1bmxpbmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVkX3N0ZG91dCwgc2tpcF91bmxlc3Nfc3ltbGluaykKQEAgLTE1LDExICsxMywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICBnZXRfcGF0aCwgZ2V0X3BhdGhfbmFtZXMsIF9JTlNUQUxMX1NDSEVNRVMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9nZXRfZGVmYXVsdF9zY2hlbWUsIF9leHBhbmRfdmFycywKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3NjaGVtZV9uYW1lcywgZ2V0X2NvbmZpZ192YXIsIF9tYWluKQoraW1wb3J0IF9vc3hfc3VwcG9ydAogCiBjbGFzcyBUZXN0U3lzQ29uZmlnKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIiIiTWFrZSBhIGNvcHkgb2Ygc3lzLnBhdGgiIiIKICAgICAgICAgc3VwZXIoVGVzdFN5c0NvbmZpZywgc2VsZikuc2V0VXAoKQogICAgICAgICBzZWxmLnN5c19wYXRoID0gc3lzLnBhdGhbOl0KICAgICAgICAgIyBwYXRjaGluZyBvcy51bmFtZQpAQCAtMjgsNyArMjYsNyBAQAogICAgICAgICAgICAgc2VsZi5fdW5hbWUgPSBvcy51bmFtZSgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnVuYW1lID0gTm9uZQotICAgICAgICAgICAgc2VsZi5fdW5hbWUgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9zZXRfdW5hbWUoKCcnLCkqNSkKICAgICAgICAgb3MudW5hbWUgPSBzZWxmLl9nZXRfdW5hbWUKICAgICAgICAgIyBzYXZpbmcgdGhlIGVudmlyb25tZW50CiAgICAgICAgIHNlbGYubmFtZSA9IG9zLm5hbWUKQEAgLTM4LDExICszNiwxNiBAQAogICAgICAgICBzZWxmLmpvaW4gPSBvcy5wYXRoLmpvaW4KICAgICAgICAgc2VsZi5pc2FicyA9IG9zLnBhdGguaXNhYnMKICAgICAgICAgc2VsZi5zcGxpdGRyaXZlID0gb3MucGF0aC5zcGxpdGRyaXZlCi0gICAgICAgIHNlbGYuX2NvbmZpZ192YXJzID0gY29weShzeXNjb25maWcuX0NPTkZJR19WQVJTKQotICAgICAgICBzZWxmLm9sZF9lbnZpcm9uID0gZGVlcGNvcHkob3MuZW52aXJvbikKKyAgICAgICAgc2VsZi5fY29uZmlnX3ZhcnMgPSBzeXNjb25maWcuX0NPTkZJR19WQVJTLCBjb3B5KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpCisgICAgICAgIHNlbGYuX2FkZGVkX2VudnZhcnMgPSBbXQorICAgICAgICBzZWxmLl9jaGFuZ2VkX2VudnZhcnMgPSBbXQorICAgICAgICBmb3IgdmFyIGluICgnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJywgJ1BBVEgnKToKKyAgICAgICAgICAgIGlmIHZhciBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuX2NoYW5nZWRfZW52dmFycy5hcHBlbmQoKHZhciwgb3MuZW52aXJvblt2YXJdKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fYWRkZWRfZW52dmFycy5hcHBlbmQodmFyKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAiIiJSZXN0b3JlIHN5cy5wYXRoIiIiCiAgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5zeXNfcGF0aAogICAgICAgICBzZWxmLl9jbGVhbnVwX3Rlc3RmbigpCiAgICAgICAgIGlmIHNlbGYudW5hbWUgaXMgbm90IE5vbmU6CkBAIC01NiwxOSArNTksMTggQEAKICAgICAgICAgb3MucGF0aC5qb2luID0gc2VsZi5qb2luCiAgICAgICAgIG9zLnBhdGguaXNhYnMgPSBzZWxmLmlzYWJzCiAgICAgICAgIG9zLnBhdGguc3BsaXRkcml2ZSA9IHNlbGYuc3BsaXRkcml2ZQotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gY29weShzZWxmLl9jb25maWdfdmFycykKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5vbGRfZW52aXJvbi5pdGVtcygpOgotICAgICAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoa2V5KSAhPSB2YWx1ZToKLSAgICAgICAgICAgICAgICBvcy5lbnZpcm9uW2tleV0gPSB2YWx1ZQotCi0gICAgICAgIGZvciBrZXkgaW4gbGlzdChvcy5lbnZpcm9uLmtleXMoKSk6Ci0gICAgICAgICAgICBpZiBrZXkgbm90IGluIHNlbGYub2xkX2Vudmlyb246Ci0gICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25ba2V5XQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2VsZi5fY29uZmlnX3ZhcnNbMF0KKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNlbGYuX2NvbmZpZ192YXJzWzFdKQorICAgICAgICBmb3IgdmFyLCB2YWx1ZSBpbiBzZWxmLl9jaGFuZ2VkX2VudnZhcnM6CisgICAgICAgICAgICBvcy5lbnZpcm9uW3Zhcl0gPSB2YWx1ZQorICAgICAgICBmb3IgdmFyIGluIHNlbGYuX2FkZGVkX2VudnZhcnM6CisgICAgICAgICAgICBvcy5lbnZpcm9uLnBvcCh2YXIsIE5vbmUpCiAKICAgICAgICAgc3VwZXIoVGVzdFN5c0NvbmZpZywgc2VsZikudGVhckRvd24oKQogCiAgICAgZGVmIF9zZXRfdW5hbWUoc2VsZiwgdW5hbWUpOgotICAgICAgICBzZWxmLl91bmFtZSA9IHVuYW1lCisgICAgICAgIHNlbGYuX3VuYW1lID0gb3MudW5hbWVfcmVzdWx0KHVuYW1lKQogCiAgICAgZGVmIF9nZXRfdW5hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl91bmFtZQpAQCAtODcsMjEgKzg5LDE5IEBACiAgICAgICAgIHNjaGVtZSA9IGdldF9wYXRocygpCiAgICAgICAgIGRlZmF1bHRfc2NoZW1lID0gX2dldF9kZWZhdWx0X3NjaGVtZSgpCiAgICAgICAgIHdhbnRlZCA9IF9leHBhbmRfdmFycyhkZWZhdWx0X3NjaGVtZSwgTm9uZSkKLSAgICAgICAgd2FudGVkID0gbGlzdCh3YW50ZWQuaXRlbXMoKSkKLSAgICAgICAgd2FudGVkLnNvcnQoKQotICAgICAgICBzY2hlbWUgPSBsaXN0KHNjaGVtZS5pdGVtcygpKQotICAgICAgICBzY2hlbWUuc29ydCgpCisgICAgICAgIHdhbnRlZCA9IHNvcnRlZCh3YW50ZWQuaXRlbXMoKSkKKyAgICAgICAgc2NoZW1lID0gc29ydGVkKHNjaGVtZS5pdGVtcygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjaGVtZSwgd2FudGVkKQogCiAgICAgZGVmIHRlc3RfZ2V0X3BhdGgoc2VsZik6Ci0gICAgICAgICMgeHh4IG1ha2UgcmVhbCB0ZXN0cyBoZXJlCisgICAgICAgICMgWFhYIG1ha2UgcmVhbCB0ZXN0cyBoZXJlCiAgICAgICAgIGZvciBzY2hlbWUgaW4gX0lOU1RBTExfU0NIRU1FUzoKICAgICAgICAgICAgIGZvciBuYW1lIGluIF9JTlNUQUxMX1NDSEVNRVNbc2NoZW1lXToKICAgICAgICAgICAgICAgICByZXMgPSBnZXRfcGF0aChuYW1lLCBzY2hlbWUpCiAKICAgICBkZWYgdGVzdF9nZXRfY29uZmlnX3ZhcnMoc2VsZik6CiAgICAgICAgIGN2YXJzID0gZ2V0X2NvbmZpZ192YXJzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoY3ZhcnMsIGRpY3QpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3ZhcnMsIGRpY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdmFycykKIAogICAgIGRlZiB0ZXN0X2dldF9wbGF0Zm9ybShzZWxmKToKQEAgLTEzNSw4ICsxMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICgnRGFyd2luIEtlcm5lbCBWZXJzaW9uIDguMTEuMTogJwogICAgICAgICAgICAgICAgICAgICAnV2VkIE9jdCAxMCAxODoyMzoyOCBQRFQgMjAwNzsgJwogICAgICAgICAgICAgICAgICAgICAncm9vdDp4bnUtNzkyLjI1LjIwfjEvUkVMRUFTRV9JMzg2JyksICdQb3dlclBDJykpCi0KLQorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4zJwogCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWZuby1zdHJpY3QtYWxpYXNpbmcgLUROREVCVUcgLWcgJwpAQCAtMTUxLDEyICsxNTAsMTEgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5tYXhzaXplID0gbWF4aW50CiAKLQogICAgICAgICBzZWxmLl9zZXRfdW5hbWUoKCdEYXJ3aW4nLCAnbWFjemlhZGUnLCAnOC4xMS4xJywKICAgICAgICAgICAgICAgICAgICAoJ0RhcndpbiBLZXJuZWwgVmVyc2lvbiA4LjExLjE6ICcKICAgICAgICAgICAgICAgICAgICAgJ1dlZCBPY3QgMTAgMTg6MjM6MjggUERUIDIwMDc7ICcKICAgICAgICAgICAgICAgICAgICAgJ3Jvb3Q6eG51LTc5Mi4yNS4yMH4xL1JFTEVBU0VfSTM4NicpLCAnaTM4NicpKQotICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMycKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMycKIAogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1ETkRFQlVHIC1nICcKQEAgLTE3MSw2ICsxNjksNyBAQAogICAgICAgICAgICAgc3lzLm1heHNpemUgPSBtYXhpbnQKIAogICAgICAgICAjIG1hY2Jvb2sgd2l0aCBmYXQgYmluYXJpZXMgKGZhdCwgdW5pdmVyc2FsIG9yIGZhdDY0KQorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC40JwogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHBwYyAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwpAQCAtMTc5LDYgKzE3OCw3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWZhdCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHg4Nl82NCAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKQEAgLTE4NiwxOCArMTg2LDIxIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWludGVsJykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggeDg2XzY0IC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZHluYW1pYyAtRE5ERUJVRyAtZyAtTzMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0MycpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHBwYzY0IC1hcmNoIHg4Nl82NCAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWR5bmFtaWMgLUROREVCVUcgLWcgLU8zJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LXVuaXZlcnNhbCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHg4Nl82NCAtYXJjaCBwcGM2NCAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCkBAIC0yMDYsMTIgKzIwOSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0NjQnKQogCiAgICAgICAgIGZvciBhcmNoIGluICgncHBjJywgJ2kzODYnLCAneDg2XzY0JywgJ3BwYzY0Jyk6CisgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoICVzIC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZHluYW1pYyAtRE5ERUJVRyAtZyAtTzMnJShhcmNoLCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1keW5hbWljIC1ETkRFQlVHIC1nIC1PMycgJSBhcmNoKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtJXMnJShhcmNoLCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtJXMnICUgYXJjaCkKIAogICAgICAgICAjIGxpbnV4IGRlYmlhbiBzYXJnZQogICAgICAgICBvcy5uYW1lID0gJ3Bvc2l4JwpAQCAtMjM5LDggKzI0Myw4IEBACiAgICAgICAgICMgT24gV2luZG93cywgdGhlIEVYRSBuZWVkcyB0byBrbm93IHdoZXJlIHB5dGhvblhZLmRsbCBpcyBhdCBzbyB3ZSBoYXZlCiAgICAgICAgICMgdG8gYWRkIHRoZSBkaXJlY3RvcnkgdG8gdGhlIHBhdGguCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICAgICAgb3MuZW52aXJvblsiUGF0aCJdID0gInt9O3t9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwgb3MuZW52aXJvblsiUGF0aCJdKQorICAgICAgICAgICAgb3MuZW52aXJvblsiUEFUSCJdID0gInt9O3t9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwgb3MuZW52aXJvblsiUEFUSCJdKQogCiAgICAgICAgICMgSXNzdWUgNzg4MAogICAgICAgICBkZWYgZ2V0KHB5dGhvbik6CkBAIC0yNjQsMTIgKzI2OCwxNyBAQAogICAgICAgICAjIHRoZSBnbG9iYWwgc2NoZW1lIG1pcnJvcnMgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gcHJlZml4IGFuZAogICAgICAgICAjIGV4ZWMtcHJlZml4IGJ1dCBub3QgdGhlIHVzZXIgc2NoZW1lLCBzbyB3ZSBoYXZlIHRvIGFkYXB0IHRoZSBwYXRocwogICAgICAgICAjIGJlZm9yZSBjb21wYXJpbmcgKGlzc3VlICM5MTAwKQotICAgICAgICBhZGFwdCA9IHN5cy5wcmVmaXggIT0gc3lzLmV4ZWNfcHJlZml4CisgICAgICAgIGFkYXB0ID0gc3lzLmJhc2VfcHJlZml4ICE9IHN5cy5iYXNlX2V4ZWNfcHJlZml4CiAgICAgICAgIGZvciBuYW1lIGluICgnc3RkbGliJywgJ3BsYXRzdGRsaWInLCAncHVyZWxpYicsICdwbGF0bGliJyk6CiAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdldF9wYXRoKG5hbWUsICdwb3NpeF9wcmVmaXgnKQogICAgICAgICAgICAgaWYgYWRhcHQ6Ci0gICAgICAgICAgICAgICAgZ2xvYmFsX3BhdGggPSBnbG9iYWxfcGF0aC5yZXBsYWNlKHN5cy5leGVjX3ByZWZpeCwgc3lzLnByZWZpeCkKLSAgICAgICAgICAgICAgICBiYXNlID0gYmFzZS5yZXBsYWNlKHN5cy5leGVjX3ByZWZpeCwgc3lzLnByZWZpeCkKKyAgICAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdsb2JhbF9wYXRoLnJlcGxhY2Uoc3lzLmV4ZWNfcHJlZml4LCBzeXMuYmFzZV9wcmVmaXgpCisgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2UucmVwbGFjZShzeXMuZXhlY19wcmVmaXgsIHN5cy5iYXNlX3ByZWZpeCkKKyAgICAgICAgICAgIGVsaWYgc3lzLmJhc2VfcHJlZml4ICE9IHN5cy5wcmVmaXg6CisgICAgICAgICAgICAgICAgIyB2aXJ0dWFsIGVudmlyb25tZW50PyBMaWtld2lzZSwgd2UgaGF2ZSB0byBhZGFwdCB0aGUgcGF0aHMKKyAgICAgICAgICAgICAgICAjIGJlZm9yZSBjb21wYXJpbmcKKyAgICAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdsb2JhbF9wYXRoLnJlcGxhY2Uoc3lzLmJhc2VfcHJlZml4LCBzeXMucHJlZml4KQorICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLnJlcGxhY2Uoc3lzLmJhc2VfcHJlZml4LCBzeXMucHJlZml4KQogICAgICAgICAgICAgdXNlcl9wYXRoID0gZ2V0X3BhdGgobmFtZSwgJ3Bvc2l4X3VzZXInKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyX3BhdGgsIGdsb2JhbF9wYXRoLnJlcGxhY2UoYmFzZSwgdXNlciwgMSkpCiAKQEAgLTI4Niw3ICsyOTUsNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obGRmbGFncywgbGRzaGFyZWQpCiAKLQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIiwgInRlc3Qgb25seSByZWxldmFudCBvbiBNYWNPU1giKQogICAgIGRlZiB0ZXN0X3BsYXRmb3JtX2luX3N1YnByb2Nlc3Moc2VsZik6CiAgICAgICAgIG15X3BsYXRmb3JtID0gc3lzY29uZmlnLmdldF9wbGF0Zm9ybSgpCkBAIC0zMTIsMjggKzMyMCw1OCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wbGF0Zm9ybSwgdGVzdF9wbGF0Zm9ybSkKIAotCiAgICAgICAgICMgVGVzdCB3aXRoIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBpbiB0aGUgZW52aXJvbm1lbnQsIGFuZAogICAgICAgICAjIHVzaW5nIGEgdmFsdWUgdGhhdCBpcyB1bmxpa2VseSB0byBiZSB0aGUgZGVmYXVsdCBvbmUuCiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIGVudlsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMScKIAotICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbCi0gICAgICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGUsICctYycsCi0gICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXNjb25maWc7IHByaW50KHN5c2NvbmZpZy5nZXRfcGxhdGZvcm0oKSknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICBzdGRlcnI9b3BlbignL2Rldi9udWxsJyksCi0gICAgICAgICAgICBlbnY9ZW52KQotICAgICAgICB0ZXN0X3BsYXRmb3JtID0gcC5jb21tdW5pY2F0ZSgpWzBdLnN0cmlwKCkKLSAgICAgICAgdGVzdF9wbGF0Zm9ybSA9IHRlc3RfcGxhdGZvcm0uZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgIHN0YXR1cyA9IHAud2FpdCgpCisgICAgICAgIHdpdGggb3BlbignL2Rldi9udWxsJykgYXMgZGV2X251bGw6CisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbCisgICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlLCAnLWMnLAorICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5c2NvbmZpZzsgcHJpbnQoc3lzY29uZmlnLmdldF9wbGF0Zm9ybSgpKScsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgIHN0ZGVycj1kZXZfbnVsbCwKKyAgICAgICAgICAgICAgICBlbnY9ZW52KQorICAgICAgICAgICAgdGVzdF9wbGF0Zm9ybSA9IHAuY29tbXVuaWNhdGUoKVswXS5zdHJpcCgpCisgICAgICAgICAgICB0ZXN0X3BsYXRmb3JtID0gdGVzdF9wbGF0Zm9ybS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgIHN0YXR1cyA9IHAud2FpdCgpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcGxhdGZvcm0sIHRlc3RfcGxhdGZvcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcGxhdGZvcm0sIHRlc3RfcGxhdGZvcm0pCisKKyAgICBkZWYgdGVzdF9zcmNkaXIoc2VsZik6CisgICAgICAgICMgU2VlIElzc3VlcyAjMTUzMjIsICMxNTM2NC4KKyAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKHNyY2RpciksIHNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoc3JjZGlyKSwgc3JjZGlyKQorCisgICAgICAgIGlmIHN5c2NvbmZpZy5fUFlUSE9OX0JVSUxEOgorICAgICAgICAgICAgIyBUaGUgcHl0aG9uIGV4ZWN1dGFibGUgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBzbyBzcmNkaXIKKyAgICAgICAgICAgICMgc2hvdWxkIGJlIGEgZnVsbCBzb3VyY2UgY2hlY2tvdXQuCisgICAgICAgICAgICBQeXRob25faCA9IG9zLnBhdGguam9pbihzcmNkaXIsICdJbmNsdWRlJywgJ1B5dGhvbi5oJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhQeXRob25faCksIFB5dGhvbl9oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5c2NvbmZpZy5faXNfcHl0aG9uX3NvdXJjZV9kaXIoc3JjZGlyKSkKKyAgICAgICAgZWxpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZGlybmFtZShzeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNkaXIpCisKKyAgICBkZWYgdGVzdF9zcmNkaXJfaW5kZXBlbmRlbnRfb2ZfY3dkKHNlbGYpOgorICAgICAgICAjIHNyY2RpciBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2YgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKKyAgICAgICAgIyBTZWUgSXNzdWVzICMxNTMyMiwgIzE1MzY0LgorICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKCcuLicpCisgICAgICAgICAgICBzcmNkaXIyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hkaXIoY3dkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY2Rpciwgc3JjZGlyMikKIAogCiBjbGFzcyBNYWtlZmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKwogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpLAogICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgaXMgbm90IFdpbmRvd3MgY29tcGF0aWJsZScpCiAgICAgZGVmIHRlc3RfZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CmluZGV4IGYzMmViOGMuLmM3YmY3NzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKQEAgLTIxLDYgKzIxLDEwIEBACiAgICAgaW1wb3J0IGJ6MgogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGJ6MiA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgbHptYQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGx6bWEgPSBOb25lCiAKIGRlZiBtZDVzdW0oZGF0YSk6CiAgICAgcmV0dXJuIG1kNShkYXRhKS5oZXhkaWdlc3QoKQpAQCAtMjksNiArMzMsNyBAQAogdGFybmFtZSA9IHN1cHBvcnQuZmluZGZpbGUoInRlc3R0YXIudGFyIikKIGd6aXBuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0ZXN0dGFyLnRhci5neiIpCiBiejJuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0ZXN0dGFyLnRhci5iejIiKQoreHpuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0ZXN0dGFyLnRhci54eiIpCiB0bXBuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0bXAudGFyIikKIAogbWQ1X3JlZ3R5cGUgPSAiNjVmNDc3YzgxOGFkOWUxNWY3ZmVhYjBjNmQzNzc0MmYiCkBAIC01MSwxMyArNTYsMTAgQEAKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfcmVndWxhcl9maWxlKHNlbGYpOgogICAgICAgICB0YXJpbmZvID0gc2VsZi50YXIuZ2V0bWVtYmVyKCJ1c3Rhci9yZWd0eXBlIikKLSAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgogICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoKGxlbihkYXRhKSwgbWQ1c3VtKGRhdGEpKSA9PSAodGFyaW5mby5zaXplLCBtZDVfcmVndHlwZSksCiAgICAgICAgICAgICAgICAgICAgICJyZWd1bGFyIGZpbGUgZXh0cmFjdGlvbiBmYWlsZWQiKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZm9iai5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9maWxlb2JqX3JlYWRsaW5lcyhzZWxmKToKICAgICAgICAgc2VsZi50YXIuZXh0cmFjdCgidXN0YXIvcmVndHlwZSIsIFRFTVBESVIpCkBAIC02NSw4ICs2Nyw3IEBACiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oVEVNUERJUiwgInVzdGFyL3JlZ3R5cGUiKSwgInIiKSBhcyBmb2JqMToKICAgICAgICAgICAgIGxpbmVzMSA9IGZvYmoxLnJlYWRsaW5lcygpCiAKLSAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgogICAgICAgICAgICAgZm9iajIgPSBpby5UZXh0SU9XcmFwcGVyKGZvYmopCiAgICAgICAgICAgICBsaW5lczIgPSBmb2JqMi5yZWFkbGluZXMoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzMSA9PSBsaW5lczIsCkBAIC03NiwyMSArNzcsMTYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lczJbODNdID09CiAgICAgICAgICAgICAgICAgICAgICJJIHdpbGwgZ2xhZGx5IGFkbWl0IHRoYXQgUHl0aG9uIGlzIG5vdCB0aGUgZmFzdGVzdCBydW5uaW5nIHNjcmlwdGluZyBsYW5ndWFnZS5cbiIsCiAgICAgICAgICAgICAgICAgICAgICJmaWxlb2JqLnJlYWRsaW5lcygpIGZhaWxlZCIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb2JqLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfaXRlcihzZWxmKToKICAgICAgICAgc2VsZi50YXIuZXh0cmFjdCgidXN0YXIvcmVndHlwZSIsIFRFTVBESVIpCiAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhci5nZXRtZW1iZXIoInVzdGFyL3JlZ3R5cGUiKQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKFRFTVBESVIsICJ1c3Rhci9yZWd0eXBlIiksICJyVSIpIGFzIGZvYmoxOgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKFRFTVBESVIsICJ1c3Rhci9yZWd0eXBlIiksICJyIikgYXMgZm9iajE6CiAgICAgICAgICAgICBsaW5lczEgPSBmb2JqMS5yZWFkbGluZXMoKQotICAgICAgICBmb2JqMiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqMjoKICAgICAgICAgICAgIGxpbmVzMiA9IGxpc3QoaW8uVGV4dElPV3JhcHBlcihmb2JqMikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXMxID09IGxpbmVzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZW9iai5fX2l0ZXJfXygpIGZhaWxlZCIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb2JqMi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9maWxlb2JqX3NlZWsoc2VsZik6CiAgICAgICAgIHNlbGYudGFyLmV4dHJhY3QoInVzdGFyL3JlZ3R5cGUiLCBURU1QRElSKQpAQCAtMTQyLDE3ICsxMzgsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICJyZWFkKCkgYWZ0ZXIgcmVhZGxpbmUoKSBmYWlsZWQiKQogICAgICAgICBmb2JqLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X2ZpbGVvYmpfdGV4dChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSgidXN0YXIvcmVndHlwZSIpIGFzIGZvYmo6CisgICAgICAgICAgICBmb2JqID0gaW8uVGV4dElPV3JhcHBlcihmb2JqKQorICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpLmVuY29kZSgiaXNvODg1OS0xIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWQ1c3VtKGRhdGEpLCBtZDVfcmVndHlwZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb2JqLnNlZWsoMTAwKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICMgSXNzdWUgIzEzODE1OiBzZWVrKCkgY29tcGxhaW5lZCBhYm91dCBhIG1pc3NpbmcKKyAgICAgICAgICAgICAgICAjIGZsdXNoKCkgbWV0aG9kLgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgic2Vla2luZyBmYWlsZWQgaW4gdGV4dCBtb2RlIikKKwogICAgICMgVGVzdCBpZiBzeW1ib2xpYyBhbmQgaGFyZCBsaW5rcyBhcmUgcmVzb2x2ZWQgYnkgZXh0cmFjdGZpbGUoKS4gIFRoZQogICAgICMgdGVzdCBsaW5rIG1lbWJlcnMgZWFjaCBwb2ludCB0byBhIHJlZ3VsYXIgbWVtYmVyIHdob3NlIGRhdGEgaXMKICAgICAjIHN1cHBvc2VkIHRvIGJlIGV4cG9ydGVkLgogICAgIGRlZiBfdGVzdF9maWxlb2JqX2xpbmsoc2VsZiwgbG5rdHlwZSwgcmVndHlwZSk6Ci0gICAgICAgIGEgPSBzZWxmLnRhci5leHRyYWN0ZmlsZShsbmt0eXBlKQotICAgICAgICBiID0gc2VsZi50YXIuZXh0cmFjdGZpbGUocmVndHlwZSkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKGxua3R5cGUpIGFzIGEsIHNlbGYudGFyLmV4dHJhY3RmaWxlKHJlZ3R5cGUpIGFzIGI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEubmFtZSwgYi5uYW1lKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgYS5jbG9zZSgpCi0gICAgICAgICAgICBiLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfbGluazEoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZW9ial9saW5rKCJ1c3Rhci9sbmt0eXBlIiwgInVzdGFyL3JlZ3R5cGUiKQpAQCAtMjA0LDEzICsyMDcsMTUgQEAKICAgICAgICAgICAgIF9vcGVuID0gZ3ppcC5HemlwRmlsZQogICAgICAgICBlbGlmIHNlbGYubW9kZS5lbmRzd2l0aCgiOmJ6MiIpOgogICAgICAgICAgICAgX29wZW4gPSBiejIuQloyRmlsZQorICAgICAgICBlbGlmIHNlbGYubW9kZS5lbmRzd2l0aCgiOnh6Iik6CisgICAgICAgICAgICBfb3BlbiA9IGx6bWEuTFpNQUZpbGUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIF9vcGVuID0gb3BlbgorICAgICAgICAgICAgX29wZW4gPSBpby5GaWxlSU8KIAogICAgICAgICBmb3IgY2hhciBpbiAoYidcMCcsIGInYScpOgogICAgICAgICAgICAgIyBUZXN0IGlmIEVPRkhlYWRlckVycm9yICgnXDAnKSBhbmQgSW52YWxpZEhlYWRlckVycm9yICgnYScpCiAgICAgICAgICAgICAjIGFyZSBpZ25vcmVkIGNvcnJlY3RseS4KLSAgICAgICAgICAgIHdpdGggX29wZW4odG1wbmFtZSwgIndiIikgYXMgZm9iajoKKyAgICAgICAgICAgIHdpdGggX29wZW4odG1wbmFtZSwgInciKSBhcyBmb2JqOgogICAgICAgICAgICAgICAgIGZvYmoud3JpdGUoY2hhciAqIDEwMjQpCiAgICAgICAgICAgICAgICAgZm9iai53cml0ZSh0YXJmaWxlLlRhckluZm8oImZvbyIpLnRvYnVmKCkpCiAKQEAgLTIyNSw2ICsyMzAsMTAgQEAKIGNsYXNzIE1pc2NSZWFkVGVzdChDb21tb25SZWFkVGVzdCk6CiAKICAgICBkZWYgdGVzdF9ub19uYW1lX2FyZ3VtZW50KHNlbGYpOgorICAgICAgICBpZiBzZWxmLm1vZGUuZW5kc3dpdGgoKCJiejIiLCAieHoiKSk6CisgICAgICAgICAgICAjIEJaMkZpbGUgYW5kIExaTUFGaWxlIGhhdmUgbm8gbmFtZSBhdHRyaWJ1dGUuCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJubyBuYW1lIGF0dHJpYnV0ZSIpCisKICAgICAgICAgd2l0aCBvcGVuKHNlbGYudGFybmFtZSwgInJiIikgYXMgZm9iajoKICAgICAgICAgICAgIHRhciA9IHRhcmZpbGUub3BlbihmaWxlb2JqPWZvYmosIG1vZGU9c2VsZi5tb2RlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXIubmFtZSwgb3MucGF0aC5hYnNwYXRoKGZvYmoubmFtZSkpCkBAIC0yNTQsOSArMjYzLDggQEAKICAgICAgICAgICAgIHQgPSB0YXIubmV4dCgpCiAgICAgICAgICAgICBuYW1lID0gdC5uYW1lCiAgICAgICAgICAgICBvZmZzZXQgPSB0Lm9mZnNldAotICAgICAgICAgICAgZiA9IHRhci5leHRyYWN0ZmlsZSh0KQotICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIHdpdGggdGFyLmV4dHJhY3RmaWxlKHQpIGFzIGY6CisgICAgICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICB0YXIuY2xvc2UoKQogCkBAIC0yNjUsMTAgKzI3MywxMiBAQAogICAgICAgICAgICAgX29wZW4gPSBnemlwLkd6aXBGaWxlCiAgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6YnoyIik6CiAgICAgICAgICAgICBfb3BlbiA9IGJ6Mi5CWjJGaWxlCisgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6eHoiKToKKyAgICAgICAgICAgIF9vcGVuID0gbHptYS5MWk1BRmlsZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgX29wZW4gPSBvcGVuCi0gICAgICAgIGZvYmogPSBfb3BlbihzZWxmLnRhcm5hbWUsICJyYiIpCi0gICAgICAgIHRyeToKKyAgICAgICAgICAgIF9vcGVuID0gaW8uRmlsZUlPCisKKyAgICAgICAgd2l0aCBfb3BlbihzZWxmLnRhcm5hbWUpIGFzIGZvYmo6CiAgICAgICAgICAgICBmb2JqLnNlZWsob2Zmc2V0KQogCiAgICAgICAgICAgICAjIFRlc3QgaWYgdGhlIHRhcmZpbGUgc3RhcnRzIHdpdGggdGhlIHNlY29uZCBtZW1iZXIuCkBAIC0yODEsOCArMjkxLDYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFyLmV4dHJhY3RmaWxlKHQpLnJlYWQoKSwgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgInNlZWsgYmFjayBkaWQgbm90IHdvcmsiKQogICAgICAgICAgICAgdGFyLmNsb3NlKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvYmouY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZmFpbF9jb21wKHNlbGYpOgogICAgICAgICAjIEZvciBHemlwIGFuZCBCejIgVGVzdHM6IGZhaWwgd2l0aCBhIFJlYWRFcnJvciBvbiBhbiB1bmNvbXByZXNzZWQgZmlsZS4KQEAgLTQyOCwyNyArNDM2LDI2IEBACiAgICAgICAgIGZvciB0YXJpbmZvIGluIHNlbGYudGFyOgogICAgICAgICAgICAgaWYgbm90IHRhcmluZm8uaXNyZWcoKToKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgYnVmID0gZm9iai5yZWFkKDUxMikKLSAgICAgICAgICAgICAgICBleGNlcHQgdGFyZmlsZS5TdHJlYW1FcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzaW1wbGUgcmVhZC10aHJvdWdoIHVzaW5nIFRhckZpbGUuZXh0cmFjdGZpbGUoKSBmYWlsZWQiKQotICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBmb2JqLmNsb3NlKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykgYXMgZm9iajoKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBidWYgPSBmb2JqLnJlYWQoNTEyKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgdGFyZmlsZS5TdHJlYW1FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgic2ltcGxlIHJlYWQtdGhyb3VnaCB1c2luZyBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgZmFpbGVkIikKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICBkZWYgdGVzdF9maWxlb2JqX3JlZ3VsYXJfZmlsZShzZWxmKToKICAgICAgICAgdGFyaW5mbyA9IHNlbGYudGFyLm5leHQoKSAjIGdldCAicmVndHlwZSIgKGNhbid0IHVzZSBnZXRtZW1iZXIpCi0gICAgICAgIGZvYmogPSBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKQotICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgorICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgobGVuKGRhdGEpLCBtZDVzdW0oZGF0YSkpID09ICh0YXJpbmZvLnNpemUsIG1kNV9yZWd0eXBlKSwKICAgICAgICAgICAgICAgICAicmVndWxhciBmaWxlIGV4dHJhY3Rpb24gZmFpbGVkIikKIAogICAgIGRlZiB0ZXN0X3Byb3Zva2Vfc3RyZWFtX2Vycm9yKHNlbGYpOgogICAgICAgICB0YXJpbmZvcyA9IHNlbGYudGFyLmdldG1lbWJlcnMoKQotICAgICAgICBmID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mb3NbMF0pICMgcmVhZCB0aGUgZmlyc3QgbWVtYmVyCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuU3RyZWFtRXJyb3IsIGYucmVhZCkKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvc1swXSkgYXMgZjogIyByZWFkIHRoZSBmaXJzdCBtZW1iZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuU3RyZWFtRXJyb3IsIGYucmVhZCkKIAogICAgIGRlZiB0ZXN0X2NvbXBhcmVfbWVtYmVycyhzZWxmKToKICAgICAgICAgdGFyMSA9IHRhcmZpbGUub3Blbih0YXJuYW1lLCBlbmNvZGluZz0iaXNvODg1OS0xIikKQEAgLTUyNiw2ICs1MzMsMTggQEAKICAgICAgICAgICAgIHRlc3RmdW5jKGJ6Mm5hbWUsICJyfCoiKQogICAgICAgICAgICAgdGVzdGZ1bmMoYnoybmFtZSwgInJ8YnoyIikKIAorICAgICAgICBpZiBsem1hOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgdGFybmFtZSwgbW9kZT0icjp4eiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB0YXJuYW1lLCBtb2RlPSJyfHh6IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHh6bmFtZSwgbW9kZT0icjoiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgeHpuYW1lLCBtb2RlPSJyfCIpCisKKyAgICAgICAgICAgIHRlc3RmdW5jKHh6bmFtZSwgInIiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicjoqIikKKyAgICAgICAgICAgIHRlc3RmdW5jKHh6bmFtZSwgInI6eHoiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicnwqIikKKyAgICAgICAgICAgIHRlc3RmdW5jKHh6bmFtZSwgInJ8eHoiKQorCiAgICAgZGVmIHRlc3RfZGV0ZWN0X2ZpbGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfbW9kZXMoc2VsZi5fdGVzdGZ1bmNfZmlsZSkKIApAQCAtNzIzLDcgKzc0Miw3IEBACiAgICAgICAgICMgUmV0dXJuIFRydWUgaWYgdGhlIHBsYXRmb3JtIGtub3dzIHRoZSBzdF9ibG9ja3Mgc3RhdCBhdHRyaWJ1dGUgYW5kCiAgICAgICAgICMgdXNlcyBzdF9ibG9ja3MgdW5pdHMgb2YgNTEyIGJ5dGVzLCBhbmQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgYWJsZSB0bwogICAgICAgICAjIHN0b3JlIGhvbGVzIGluIGZpbGVzLgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImxpbnV4MiI6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJsaW51eCIpOgogICAgICAgICAgICAgIyBMaW51eCBldmlkZW50aWFsbHkgaGFzIDUxMiBieXRlIHN0X2Jsb2NrcyB1bml0cy4KICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInNwYXJzZS10ZXN0IikKICAgICAgICAgICAgIHdpdGggb3BlbihuYW1lLCAid2IiKSBhcyBmb2JqOgpAQCAtOTEzLDcgKzkzMiw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZvciBuYW1lIGluICgiZm9vIiwgImJhciIsICJiYXoiKToKICAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIG5hbWUpCi0gICAgICAgICAgICAgICAgb3BlbihuYW1lLCAid2IiKS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShuYW1lKQogCiAgICAgICAgICAgICBleGNsdWRlID0gb3MucGF0aC5pc2ZpbGUKIApAQCAtOTQwLDcgKzk1OSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZvciBuYW1lIGluICgiZm9vIiwgImJhciIsICJiYXoiKToKICAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIG5hbWUpCi0gICAgICAgICAgICAgICAgb3BlbihuYW1lLCAid2IiKS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShuYW1lKQogCiAgICAgICAgICAgICBkZWYgZmlsdGVyKHRhcmluZm8pOgogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUodGFyaW5mby5uYW1lKSA9PSAiYmFyIjoKQEAgLTk3OSw3ICs5OTgsNyBAQAogICAgICAgICAjIGFuZCBjb21wYXJlIHRoZSBzdG9yZWQgbmFtZSB3aXRoIHRoZSBvcmlnaW5hbC4KICAgICAgICAgZm9vID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJmb28iKQogICAgICAgICBpZiBub3QgZGlyOgotICAgICAgICAgICAgb3Blbihmb28sICJ3IikuY2xvc2UoKQorICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShmb28pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvcy5ta2Rpcihmb28pCiAKQEAgLTEwOTYsNiArMTExNSw5IEBACiAgICAgICAgICAgICBkYXRhID0gZGVjLmRlY29tcHJlc3MoZGF0YSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZGVjLnVudXNlZF9kYXRhKSA9PSAwLAogICAgICAgICAgICAgICAgICAgICAiZm91bmQgdHJhaWxpbmcgZGF0YSIpCisgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCJ4eiIpOgorICAgICAgICAgICAgd2l0aCBsem1hLkxaTUFGaWxlKHRtcG5hbWUpIGFzIGZvYmo6CisgICAgICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB3aXRoIG9wZW4odG1wbmFtZSwgInJiIikgYXMgZm9iajoKICAgICAgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKQEAgLTEzMzksNyArMTM2MSw3IEBACiAgICAgICAgIHNlbGYuX3Rlc3RfdW5pY29kZV9maWxlbmFtZSgidXRmNyIpCiAKICAgICBkZWYgdGVzdF91dGY4X2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICBzZWxmLl90ZXN0X3VuaWNvZGVfZmlsZW5hbWUoInV0ZjgiKQorICAgICAgICBzZWxmLl90ZXN0X3VuaWNvZGVfZmlsZW5hbWUoInV0Zi04IikKIAogICAgIGRlZiBfdGVzdF91bmljb2RlX2ZpbGVuYW1lKHNlbGYsIGVuY29kaW5nKToKICAgICAgICAgdGFyID0gdGFyZmlsZS5vcGVuKHRtcG5hbWUsICJ3IiwgZm9ybWF0PXNlbGYuZm9ybWF0LCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPSJzdHJpY3QiKQpAQCAtMTQxOCw3ICsxNDQwLDcgQEAKICAgICBkZWYgdGVzdF9iYWRfcGF4X2hlYWRlcihzZWxmKToKICAgICAgICAgIyBUZXN0IGZvciBpc3N1ZSAjODYzMy4gR05VIHRhciA8PSAxLjIzIGNyZWF0ZXMgcmF3IGJpbmFyeSBmaWVsZHMKICAgICAgICAgIyB3aXRob3V0IGEgaGRyY2hhcnNldD1CSU5BUlkgaGVhZGVyLgotICAgICAgICBmb3IgZW5jb2RpbmcsIG5hbWUgaW4gKCgidXRmOCIsICJwYXgvYmFkLXBheC1cdWRjZTRcdWRjZjZcdWRjZmMiKSwKKyAgICAgICAgZm9yIGVuY29kaW5nLCBuYW1lIGluICgoInV0Zi04IiwgInBheC9iYWQtcGF4LVx1ZGNlNFx1ZGNmNlx1ZGNmYyIpLAogICAgICAgICAgICAgICAgICgiaXNvODg1OS0xIiwgInBheC9iYWQtcGF4LVx4ZTRceGY2XHhmYyIpLCk6CiAgICAgICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0YXJuYW1lLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKSBhcyB0YXI6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtMTQzMyw3ICsxNDU1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JpbmFyeV9oZWFkZXIoc2VsZik6CiAgICAgICAgICMgVGVzdCBhIFBPU0lYLjEtMjAwOCBjb21wYXRpYmxlIGhlYWRlciB3aXRoIGEgaGRyY2hhcnNldD1CSU5BUlkgZmllbGQuCi0gICAgICAgIGZvciBlbmNvZGluZywgbmFtZSBpbiAoKCJ1dGY4IiwgInBheC9oZHJjaGFyc2V0LVx1ZGNlNFx1ZGNmNlx1ZGNmYyIpLAorICAgICAgICBmb3IgZW5jb2RpbmcsIG5hbWUgaW4gKCgidXRmLTgiLCAicGF4L2hkcmNoYXJzZXQtXHVkY2U0XHVkY2Y2XHVkY2ZjIiksCiAgICAgICAgICAgICAgICAgKCJpc284ODU5LTEiLCAicGF4L2hkcmNoYXJzZXQtXHhlNFx4ZjZceGZjIiksKToKICAgICAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRhcm5hbWUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9InN1cnJvZ2F0ZWVzY2FwZSIpIGFzIHRhcjoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xNDU4LDEyICsxNDgwLDkgQEAKICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odGFybmFtZSwgZW5jb2Rpbmc9Imlzbzg4NTktMSIpIGFzIHNyYzoKICAgICAgICAgICAgIHQgPSBzcmMuZ2V0bWVtYmVyKCJ1c3Rhci9yZWd0eXBlIikKICAgICAgICAgICAgIHQubmFtZSA9ICJmb28iCi0gICAgICAgICAgICBmID0gc3JjLmV4dHJhY3RmaWxlKHQpCi0gICAgICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNyYy5leHRyYWN0ZmlsZSh0KSBhcyBmOgogICAgICAgICAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHNlbGYudGFybmFtZSwgbW9kZSkgYXMgdGFyOgogICAgICAgICAgICAgICAgICAgICB0YXIuYWRkZmlsZSh0LCBmKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiBfdGVzdChzZWxmLCBuYW1lcz1bImJhciJdLCBmaWxlb2JqPU5vbmUpOgogICAgICAgICB3aXRoIHRhcmZpbGUub3BlbihzZWxmLnRhcm5hbWUsIGZpbGVvYmo9ZmlsZW9iaikgYXMgdGFyOgpAQCAtMTUxMCw2ICsxNTI5LDEyIEBACiAgICAgICAgIHNlbGYuX2NyZWF0ZV90ZXN0dGFyKCJ3OmJ6MiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHRtcG5hbWUsICJhIikKIAorICAgIGRlZiB0ZXN0X2FwcGVuZF9sem1hKHNlbGYpOgorICAgICAgICBpZiBsem1hIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJsem1hIG1vZHVsZSBub3QgYXZhaWxhYmxlIikKKyAgICAgICAgc2VsZi5fY3JlYXRlX3Rlc3R0YXIoInc6eHoiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB0bXBuYW1lLCAiYSIpCisKICAgICAjIEFwcGVuZCBtb2RlIGlzIHN1cHBvc2VkIHRvIGZhaWwgaWYgdGhlIHRhcmZpbGUgdG8gYXBwZW5kIHRvCiAgICAgIyBkb2VzIG5vdCBlbmQgd2l0aCBhIHplcm8gYmxvY2suCiAgICAgZGVmIF90ZXN0X2Vycm9yKHNlbGYsIGRhdGEpOgpAQCAtMTc4OCw2ICsxODEzLDIxIEBACiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9pbnB1dCgicjpiejIiKQogCiAKK2NsYXNzIEx6bWFNaXNjUmVhZFRlc3QoTWlzY1JlYWRUZXN0KToKKyAgICB0YXJuYW1lID0geHpuYW1lCisgICAgbW9kZSA9ICJyOnh6IgorY2xhc3MgTHptYVVzdGFyUmVhZFRlc3QoVXN0YXJSZWFkVGVzdCk6CisgICAgdGFybmFtZSA9IHh6bmFtZQorICAgIG1vZGUgPSAicjp4eiIKK2NsYXNzIEx6bWFTdHJlYW1SZWFkVGVzdChTdHJlYW1SZWFkVGVzdCk6CisgICAgdGFybmFtZSA9IHh6bmFtZQorICAgIG1vZGUgPSAicnx4eiIKK2NsYXNzIEx6bWFXcml0ZVRlc3QoV3JpdGVUZXN0KToKKyAgICBtb2RlID0gInc6eHoiCitjbGFzcyBMem1hU3RyZWFtV3JpdGVUZXN0KFN0cmVhbVdyaXRlVGVzdCk6CisgICAgbW9kZSA9ICJ3fHh6IgorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnVubGluayhURU1QRElSKQogICAgIG9zLm1ha2VkaXJzKFRFTVBESVIpCkBAIC0xODUwLDYgKzE4OTAsMjAgQEAKICAgICAgICAgICAgIEJ6MlBhcnRpYWxSZWFkVGVzdCwKICAgICAgICAgXQogCisgICAgaWYgbHptYToKKyAgICAgICAgIyBDcmVhdGUgdGVzdHRhci50YXIueHogYW5kIGFkZCBsem1hLXNwZWNpZmljIHRlc3RzLgorICAgICAgICBzdXBwb3J0LnVubGluayh4em5hbWUpCisgICAgICAgIHdpdGggbHptYS5MWk1BRmlsZSh4em5hbWUsICJ3IikgYXMgdGFyOgorICAgICAgICAgICAgdGFyLndyaXRlKGRhdGEpCisKKyAgICAgICAgdGVzdHMgKz0gWworICAgICAgICAgICAgTHptYU1pc2NSZWFkVGVzdCwKKyAgICAgICAgICAgIEx6bWFVc3RhclJlYWRUZXN0LAorICAgICAgICAgICAgTHptYVN0cmVhbVJlYWRUZXN0LAorICAgICAgICAgICAgTHptYVdyaXRlVGVzdCwKKyAgICAgICAgICAgIEx6bWFTdHJlYW1Xcml0ZVRlc3QsCisgICAgICAgIF0KKwogICAgIHRyeToKICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQogICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CmluZGV4IDk1ZWViZjMuLjExZTk1ZTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CkBAIC0zNiw2ICszNiw3IEBACiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYudGhyZWFkLmpvaW4oKQorICAgICAgICBkZWwgc2VsZi50aHJlYWQgICMgQ2xlYXIgb3V0IGFueSBkYW5nbGluZyBUaHJlYWQgb2JqZWN0cy4KIAogICAgIGRlZiB0ZXN0QmFzaWMoc2VsZik6CiAgICAgICAgICMgY29ubmVjdHMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CmluZGV4IDUwY2YzYjQuLmQ3OWYzMTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQpAQCAtMjEsNyArMjEsNyBAQAogCiAjIFRFU1RfRklMRVMgbWF5IG5lZWQgdG8gYmUgdHdlYWtlZCBmb3Igc3lzdGVtcyBkZXBlbmRpbmcgb24gdGhlIG1heGltdW0KICMgbnVtYmVyIG9mIGZpbGVzIHRoYXQgY2FuIGJlIG9wZW5lZCBhdCBvbmUgdGltZSAoc2VlIHVsaW1pdCAtbikKLWlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29wZW5ic2QzJywgJ29wZW5ic2Q0Jyk6CitpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnb3BlbmJzZCcpOgogICAgIFRFU1RfRklMRVMgPSA0OAogZWxzZToKICAgICBURVNUX0ZJTEVTID0gMTAwCkBAIC0zMSw3ICszMSw3IEBACiAjIHRocmVhZHMgaXMgbm90IGRvbmUgaGVyZS4KIAogIyBDb21tb24gZnVuY3Rpb25hbGl0eS4KLWNsYXNzIFRDKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBzdHJfY2hlY2sgPSByZS5jb21waWxlKHIiW2EtekEtWjAtOV8tXXs2fSQiKQogCkBAIC00NSwxMSArNDUsNiBAQAogICAgICAgICBzZWxmLl93YXJuaW5nc19tYW5hZ2VyLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCiAKIAotICAgIGRlZiBmYWlsT25FeGNlcHRpb24oc2VsZiwgd2hhdCwgZWk9Tm9uZSk6Ci0gICAgICAgIGlmIGVpIGlzIE5vbmU6Ci0gICAgICAgICAgICBlaSA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgIHNlbGYuZmFpbCgiJXMgcmFpc2VkICVzOiAlcyIgJSAod2hhdCwgZWlbMF0sIGVpWzFdKSkKLQogICAgIGRlZiBuYW1lQ2hlY2soc2VsZiwgbmFtZSwgZGlyLCBwcmUsIHN1Zik6CiAgICAgICAgIChuZGlyLCBuYmFzZSkgPSBvcy5wYXRoLnNwbGl0KG5hbWUpCiAgICAgICAgIG5wcmUgID0gbmJhc2VbOmxlbihwcmUpXQpAQCAtNjgsOSArNjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgInJhbmRvbSBzdHJpbmcgJyVzJyBkb2VzIG5vdCBtYXRjaCAvXlthLXpBLVowLTlfLV17Nn0kLyIKICAgICAgICAgICAgICAgICAgICAgICUgbmJhc2UpCiAKLXRlc3RfY2xhc3NlcyA9IFtdCiAKLWNsYXNzIHRlc3RfZXhwb3J0cyhUQyk6CitjbGFzcyBUZXN0RXhwb3J0cyhCYXNlVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2V4cG9ydHMoc2VsZik6CiAgICAgICAgICMgVGhlcmUgYXJlIG5vIHN1cnByaXNpbmcgc3ltYm9scyBpbiB0aGUgdGVtcGZpbGUgbW9kdWxlCiAgICAgICAgIGRpY3QgPSB0ZW1wZmlsZS5fX2RpY3RfXwpAQCAtOTcsMTAgKzkxLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbih1bmV4cCkgPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGtleXM6ICVzIiAlIHVuZXhwKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfZXhwb3J0cykKIAotCi1jbGFzcyB0ZXN0X19SYW5kb21OYW1lU2VxdWVuY2UoVEMpOgorY2xhc3MgVGVzdFJhbmRvbU5hbWVTZXF1ZW5jZShCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGludGVybmFsIGl0ZXJhdG9yIG9iamVjdCBfUmFuZG9tTmFtZVNlcXVlbmNlLiIiIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTI4LDEzICsxMjAsMTAgQEAKIAogICAgICAgICBpID0gMAogICAgICAgICByID0gc2VsZi5yCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBzIGluIHI6Ci0gICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICAgICAgaWYgaSA9PSAyMDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIml0ZXJhdGlvbiIpCisgICAgICAgIGZvciBzIGluIHI6CisgICAgICAgICAgICBpICs9IDEKKyAgICAgICAgICAgIGlmIGkgPT0gMjA6CisgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmb3JrJyksCiAgICAgICAgICJvcy5mb3JrIGlzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QiKQpAQCAtMTY3LDEwICsxNTYsOCBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNoaWxkX3ZhbHVlLCBwYXJlbnRfdmFsdWUpCiAKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X19SYW5kb21OYW1lU2VxdWVuY2UpCiAKLQotY2xhc3MgdGVzdF9fY2FuZGlkYXRlX3RlbXBkaXJfbGlzdChUQyk6CitjbGFzcyBUZXN0Q2FuZGlkYXRlVGVtcGRpckxpc3QoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBfY2FuZGlkYXRlX3RlbXBkaXJfbGlzdC4iIiIKIAogICAgIGRlZiB0ZXN0X25vbmVtcHR5X2xpc3Qoc2VsZik6CkBAIC0yMDksMTMgKzE5NiwxMSBAQAogICAgICAgICAgICAgIyBOb3QgcHJhY3RpY2FsIHRvIHRyeSB0byB2ZXJpZnkgdGhlIHByZXNlbmNlIG9mIE9TLXNwZWNpZmljCiAgICAgICAgICAgICAjIHBhdGhzIGluIHRoaXMgbGlzdC4KIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X19jYW5kaWRhdGVfdGVtcGRpcl9saXN0KQotCiAKICMgV2UgdGVzdCBfZ2V0X2RlZmF1bHRfdGVtcGRpciBieSB0ZXN0aW5nIGdldHRlbXBkaXIuCiAKIAotY2xhc3MgdGVzdF9fZ2V0X2NhbmRpZGF0ZV9uYW1lcyhUQyk6CitjbGFzcyBUZXN0R2V0Q2FuZGlkYXRlTmFtZXMoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBfZ2V0X2NhbmRpZGF0ZV9uYW1lcy4iIiIKIAogICAgIGRlZiB0ZXN0X3JldHZhbChzZWxmKToKQEAgLTIzMCwxMCArMjE1LDggQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSBpcyBiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX2dldF9jYW5kaWRhdGVfbmFtZXMpCiAKLQotY2xhc3MgdGVzdF9fbWtzdGVtcF9pbm5lcihUQyk6CitjbGFzcyBUZXN0TWtzdGVtcElubmVyKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gX21rc3RlbXBfaW5uZXIuIiIiCiAKICAgICBjbGFzcyBta3N0ZW1wZWQ6CkBAIC0yNTgsMTAgKzI0MSw3IEBACiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIsIGJpbj0xKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSA9IHNlbGYubWtzdGVtcGVkKGRpciwgcHJlLCBzdWYsIGJpbikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIl9ta3N0ZW1wX2lubmVyIikKKyAgICAgICAgZmlsZSA9IHNlbGYubWtzdGVtcGVkKGRpciwgcHJlLCBzdWYsIGJpbikKIAogICAgICAgICBzZWxmLm5hbWVDaGVjayhmaWxlLm5hbWUsIGRpciwgcHJlLCBzdWYpCiAgICAgICAgIHJldHVybiBmaWxlCkBAIC0zNTMsMTAgKzMzMyw4IEBACiAgICAgICAgIG9zLmxzZWVrKGYuZmQsIDAsIG9zLlNFRUtfU0VUKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWQoZi5mZCwgMjApLCBiImJsYXQiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX21rc3RlbXBfaW5uZXIpCiAKLQotY2xhc3MgdGVzdF9nZXR0ZW1wcHJlZml4KFRDKToKK2NsYXNzIFRlc3RHZXRUZW1wUHJlZml4KEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBnZXR0ZW1wcHJlZml4KCkuIiIiCiAKICAgICBkZWYgdGVzdF9zYW5lX3RlbXBsYXRlKHNlbGYpOgpAQCAtMzc2LDE5ICszNTQsMTQgQEAKICAgICAgICAgZCA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSIiKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwID0gb3MucGF0aC5qb2luKGQsIHApCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHAsIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIm9zLm9wZW4iKQorICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHAsIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCiAgICAgICAgICAgICBvcy5jbG9zZShmZCkKICAgICAgICAgICAgIG9zLnVubGluayhwKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3Mucm1kaXIoZCkKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X2dldHRlbXBwcmVmaXgpCiAKLQotY2xhc3MgdGVzdF9nZXR0ZW1wZGlyKFRDKToKK2NsYXNzIFRlc3RHZXRUZW1wRGlyKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBnZXR0ZW1wZGlyKCkuIiIiCiAKICAgICBkZWYgdGVzdF9kaXJlY3RvcnlfZXhpc3RzKHNlbGYpOgpAQCAtNDA2LDEyICszNzksOSBAQAogICAgICAgICAjIHNuZWFreToganVzdCBpbnN0YW50aWF0ZSBhIE5hbWVkVGVtcG9yYXJ5RmlsZSwgd2hpY2gKICAgICAgICAgIyBkZWZhdWx0cyB0byB3cml0aW5nIGludG8gdGhlIGRpcmVjdG9yeSByZXR1cm5lZCBieQogICAgICAgICAjIGdldHRlbXBkaXIuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQotICAgICAgICAgICAgZmlsZS53cml0ZShiImJsYXQiKQotICAgICAgICAgICAgZmlsZS5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjcmVhdGUgZmlsZSBpbiAlcyIgJSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQorICAgICAgICBmaWxlLndyaXRlKGIiYmxhdCIpCisgICAgICAgIGZpbGUuY2xvc2UoKQogCiAgICAgZGVmIHRlc3Rfc2FtZV90aGluZyhzZWxmKToKICAgICAgICAgIyBnZXR0ZW1wZGlyIGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIG9iamVjdApAQCAtNDIwLDIzICszOTAsMTggQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSBpcyBiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfZ2V0dGVtcGRpcikKIAotCi1jbGFzcyB0ZXN0X21rc3RlbXAoVEMpOgorY2xhc3MgVGVzdE1rc3RlbXAoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IG1rc3RlbXAoKS4iIiIKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgKGZkLCBuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKLSAgICAgICAgICAgIChuZGlyLCBuYmFzZSkgPSBvcy5wYXRoLnNwbGl0KG5hbWUpCi0gICAgICAgICAgICBhZGlyID0gb3MucGF0aC5hYnNwYXRoKGRpcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRpciwgbmRpciwKLSAgICAgICAgICAgICAgICAiRGlyZWN0b3J5ICclcycgaW5jb3JyZWN0bHkgcmV0dXJuZWQgYXMgJyVzJyIgJSAoYWRpciwgbmRpcikpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta3N0ZW1wIikKKyAgICAgICAgKGZkLCBuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKKyAgICAgICAgKG5kaXIsIG5iYXNlKSA9IG9zLnBhdGguc3BsaXQobmFtZSkKKyAgICAgICAgYWRpciA9IG9zLnBhdGguYWJzcGF0aChkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRpciwgbmRpciwKKyAgICAgICAgICAgICJEaXJlY3RvcnkgJyVzJyBpbmNvcnJlY3RseSByZXR1cm5lZCBhcyAnJXMnIiAlIChhZGlyLCBuZGlyKSkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLm5hbWVDaGVjayhuYW1lLCBkaXIsIHByZSwgc3VmKQpAQCAtNDYxLDE5ICs0MjYsMTQgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X21rc3RlbXApCiAKLQotY2xhc3MgdGVzdF9ta2R0ZW1wKFRDKToKK2NsYXNzIFRlc3RNa2R0ZW1wKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBta2R0ZW1wKCkuIiIiCiAKICAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIik6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5hbWUgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta2R0ZW1wIikKKyAgICAgICAgbmFtZSA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLm5hbWVDaGVjayhuYW1lLCBkaXIsIHByZSwgc3VmKQpAQCAtNTI4LDEwICs0ODgsOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfbWtkdGVtcCkKIAotCi1jbGFzcyB0ZXN0X21rdGVtcChUQyk6CitjbGFzcyBUZXN0TWt0ZW1wKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBta3RlbXAoKS4iIiIKIAogICAgICMgRm9yIHNhZmV0eSwgYWxsIHVzZSBvZiBta3RlbXAgbXVzdCBvY2N1ciBpbiBhIHByaXZhdGUgZGlyZWN0b3J5LgpAQCAtNTYwLDEwICs1MTgsNyBAQAogICAgICAgICAgICAgc2VsZi5fdW5saW5rKHNlbGYubmFtZSkKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgcHJlPSIiLCBzdWY9IiIpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlID0gc2VsZi5ta3RlbXBlZChzZWxmLmRpciwgcHJlLCBzdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta3RlbXAiKQorICAgICAgICBmaWxlID0gc2VsZi5ta3RlbXBlZChzZWxmLmRpciwgcHJlLCBzdWYpCiAKICAgICAgICAgc2VsZi5uYW1lQ2hlY2soZmlsZS5uYW1lLCBzZWxmLmRpciwgcHJlLCBzdWYpCiAgICAgICAgIHJldHVybiBmaWxlCkBAIC01OTAsMjMgKzU0NSwxOCBAQAogIyMgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lV2FybmluZywKICMjICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUubWt0ZW1wLCBkaXI9c2VsZi5kaXIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9ta3RlbXApCi0KIAogIyBXZSB0ZXN0IF9UZW1wb3JhcnlGaWxlV3JhcHBlciBieSB0ZXN0aW5nIE5hbWVkVGVtcG9yYXJ5RmlsZS4KIAogCi1jbGFzcyB0ZXN0X05hbWVkVGVtcG9yYXJ5RmlsZShUQyk6CitjbGFzcyBUZXN0TmFtZWRUZW1wb3JhcnlGaWxlKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBOYW1lZFRlbXBvcmFyeUZpbGUoKS4iIiIKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiLCBkZWxldGU9VHJ1ZSk6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlPWRlbGV0ZSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIk5hbWVkVGVtcG9yYXJ5RmlsZSIpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGU9ZGVsZXRlKQogCiAgICAgICAgIHNlbGYubmFtZUNoZWNrKGZpbGUubmFtZSwgZGlyLCBwcmUsIHN1ZikKICAgICAgICAgcmV0dXJuIGZpbGUKQEAgLTY1OSwxMSArNjA5LDggQEAKICAgICAgICAgZiA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCiAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCiAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xvc2UiKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgICMgQSBOYW1lZFRlbXBvcmFyeUZpbGUgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIKQEAgLTY3NywxOCArNjI0LDE0IEBACiAKICAgICAjIEhvdyB0byB0ZXN0IHRoZSBtb2RlIGFuZCBidWZzaXplIHBhcmFtZXRlcnM/CiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9OYW1lZFRlbXBvcmFyeUZpbGUpCiAKLWNsYXNzIHRlc3RfU3Bvb2xlZFRlbXBvcmFyeUZpbGUoVEMpOgorY2xhc3MgVGVzdFNwb29sZWRUZW1wb3JhcnlGaWxlKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBTcG9vbGVkVGVtcG9yYXJ5RmlsZSgpLiIiIgogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBtYXhfc2l6ZT0wLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIpOgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlID0gdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGUobWF4X3NpemU9bWF4X3NpemUsIGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJTcG9vbGVkVGVtcG9yYXJ5RmlsZSIpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT1tYXhfc2l6ZSwgZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKIAogICAgICAgICByZXR1cm4gZmlsZQogCkBAIC03NzYsMTEgKzcxOSw4IEBACiAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5fcm9sbGVkKQogICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNsb3NlIikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfY2xvc2VfYWZ0ZXJfcm9sbG92ZXIoc2VsZik6CiAgICAgICAgICMgQSBTcG9vbGVkVGVtcG9yYXJ5RmlsZSBjYW4gYmUgY2xvc2VkIG1hbnkgdGltZXMgd2l0aG91dCBlcnJvcgpAQCAtNzg4LDExICs3MjgsOCBAQAogICAgICAgICBmLndyaXRlKGInYWJjXG4nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5fcm9sbGVkKQogICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNsb3NlIikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfYm91bmRfbWV0aG9kcyhzZWxmKToKICAgICAgICAgIyBJdCBzaG91bGQgYmUgT0sgdG8gc3RlYWwgYSBib3VuZCBtZXRob2QgZnJvbSBhIFNwb29sZWRUZW1wb3JhcnlGaWxlCkBAIC04NzgsNjYgKzgxNSw3NiBAQAogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdXNlX2Nsb3NlZCkKIAotCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfU3Bvb2xlZFRlbXBvcmFyeUZpbGUpCi0KLQotY2xhc3MgdGVzdF9UZW1wb3JhcnlGaWxlKFRDKToKLSAgICAiIiJUZXN0IFRlbXBvcmFyeUZpbGUoKS4iIiIKLQotICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgotICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY2FuIGNyZWF0ZSBmaWxlcwotICAgICAgICAjIE5vIHBvaW50IGluIHRlc3RpbmcgdGhlIG5hbWUgcGFyYW1zIC0gdGhlIGZpbGUgaGFzIG5vIG5hbWUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiVGVtcG9yYXJ5RmlsZSIpCi0KLSAgICBkZWYgdGVzdF9oYXNfbm9fbmFtZShzZWxmKToKLSAgICAgICAgIyBUZW1wb3JhcnlGaWxlIGNyZWF0ZXMgZmlsZXMgd2l0aCBubyBuYW1lcyAob24gdGhpcyBzeXN0ZW0pCi0gICAgICAgIGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICBmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZShkaXI9ZGlyKQotICAgICAgICBmLndyaXRlKGInYmxhdCcpCi0KLSAgICAgICAgIyBTbmVha3k6IGJlY2F1c2UgdGhpcyBmaWxlIGhhcyBubyBuYW1lLCBpdCBzaG91bGQgbm90IHByZXZlbnQKLSAgICAgICAgIyB1cyBmcm9tIHJlbW92aW5nIHRoZSBkaXJlY3RvcnkgaXQgd2FzIGNyZWF0ZWQgaW4uCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgZWkgPSBzeXMuZXhjX2luZm8oKQotICAgICAgICAgICAgIyBjbGVhbnVwCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJybWRpciIsIGVpKQotCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfY2xvc2Uoc2VsZik6Ci0gICAgICAgICMgQSBUZW1wb3JhcnlGaWxlIGNhbiBiZSBjbG9zZWQgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCi0gICAgICAgIGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKLSAgICAgICAgZi53cml0ZShiJ2FiY1xuJykKLSAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjbG9zZSIpCi0KLSAgICAjIEhvdyB0byB0ZXN0IHRoZSBtb2RlIGFuZCBidWZzaXplIHBhcmFtZXRlcnM/Ci0gICAgZGVmIHRlc3RfbW9kZV9hbmRfZW5jb2Rpbmcoc2VsZik6Ci0KLSAgICAgICAgZGVmIHJvdW5kdHJpcChpbnB1dCwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgqYXJncywgKiprd2FyZ3MpIGFzIGZpbGVvYmo6Ci0gICAgICAgICAgICAgICAgZmlsZW9iai53cml0ZShpbnB1dCkKLSAgICAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlucHV0LCBmaWxlb2JqLnJlYWQoKSkKLQotICAgICAgICByb3VuZHRyaXAoYiIxMjM0IiwgIncrYiIpCi0gICAgICAgIHJvdW5kdHJpcCgiYWJkY1xuIiwgIncrIikKLSAgICAgICAgcm91bmR0cmlwKCJcdTAzOUIiLCAidysiLCBlbmNvZGluZz0idXRmLTE2IikKLSAgICAgICAgcm91bmR0cmlwKCJmb29cclxuIiwgIncrIiwgbmV3bGluZT0iIikKKyAgICBkZWYgdGVzdF90cnVuY2F0ZV93aXRoX3NpemVfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICAjIEEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUgY2FuIGJlIHRydW5jYXRlZCB0byB6ZXJvIHNpemUKKyAgICAgICAgZiA9IHRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlKG1heF9zaXplPTEwKQorICAgICAgICBmLndyaXRlKGInYWJjZGVmZ1xuJykKKyAgICAgICAgZi5zZWVrKDApCisgICAgICAgIGYudHJ1bmNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuX3JvbGxlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9maWxlLmdldHZhbHVlKCksIGInJykKKyAgICAgICAgIyBBIFNwb29sZWRUZW1wb3JhcnlGaWxlIGNhbiBiZSB0cnVuY2F0ZWQgdG8gYSBzcGVjaWZpYyBzaXplCisgICAgICAgIGYgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT0xMCkKKyAgICAgICAgZi53cml0ZShiJ2FiY2RlZmdcbicpCisgICAgICAgIGYudHJ1bmNhdGUoNCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLl9yb2xsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5fZmlsZS5nZXR2YWx1ZSgpLCBiJ2FiY2QnKQorICAgICAgICAjIEEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUgcm9sbHMgb3ZlciBpZiB0cnVuY2F0ZWQgdG8gbGFyZ2Ugc2l6ZQorICAgICAgICBmID0gdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGUobWF4X3NpemU9MTApCisgICAgICAgIGYud3JpdGUoYidhYmNkZWZnXG4nKQorICAgICAgICBmLnRydW5jYXRlKDIwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5fcm9sbGVkKQorICAgICAgICBpZiBoYXNfc3RhdDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZnN0YXQoZi5maWxlbm8oKSkuc3Rfc2l6ZSwgMjApCiAKIAogaWYgdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlIGlzIG5vdCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlOgotICAgIHRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9UZW1wb3JhcnlGaWxlKQorCisgICAgY2xhc3MgVGVzdFRlbXBvcmFyeUZpbGUoQmFzZVRlc3RDYXNlKToKKyAgICAgICAgIiIiVGVzdCBUZW1wb3JhcnlGaWxlKCkuIiIiCisKKyAgICAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY2FuIGNyZWF0ZSBmaWxlcworICAgICAgICAgICAgIyBObyBwb2ludCBpbiB0ZXN0aW5nIHRoZSBuYW1lIHBhcmFtcyAtIHRoZSBmaWxlIGhhcyBubyBuYW1lLgorICAgICAgICAgICAgdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisKKyAgICAgICAgZGVmIHRlc3RfaGFzX25vX25hbWUoc2VsZik6CisgICAgICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY3JlYXRlcyBmaWxlcyB3aXRoIG5vIG5hbWVzIChvbiB0aGlzIHN5c3RlbSkKKyAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICAgICAgZiA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoZGlyPWRpcikKKyAgICAgICAgICAgIGYud3JpdGUoYidibGF0JykKKworICAgICAgICAgICAgIyBTbmVha3k6IGJlY2F1c2UgdGhpcyBmaWxlIGhhcyBubyBuYW1lLCBpdCBzaG91bGQgbm90IHByZXZlbnQKKyAgICAgICAgICAgICMgdXMgZnJvbSByZW1vdmluZyB0aGUgZGlyZWN0b3J5IGl0IHdhcyBjcmVhdGVkIGluLgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAjIGNsZWFudXAKKyAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihkaXIpCisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBkZWYgdGVzdF9tdWx0aXBsZV9jbG9zZShzZWxmKToKKyAgICAgICAgICAgICMgQSBUZW1wb3JhcnlGaWxlIGNhbiBiZSBjbG9zZWQgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCisgICAgICAgICAgICBmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgICAgICBmLndyaXRlKGInYWJjXG4nKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgICMgSG93IHRvIHRlc3QgdGhlIG1vZGUgYW5kIGJ1ZnNpemUgcGFyYW1ldGVycz8KKyAgICAgICAgZGVmIHRlc3RfbW9kZV9hbmRfZW5jb2Rpbmcoc2VsZik6CisKKyAgICAgICAgICAgIGRlZiByb3VuZHRyaXAoaW5wdXQsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCphcmdzLCAqKmt3YXJncykgYXMgZmlsZW9iajoKKyAgICAgICAgICAgICAgICAgICAgZmlsZW9iai53cml0ZShpbnB1dCkKKyAgICAgICAgICAgICAgICAgICAgZmlsZW9iai5zZWVrKDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGZpbGVvYmoucmVhZCgpKQorCisgICAgICAgICAgICByb3VuZHRyaXAoYiIxMjM0IiwgIncrYiIpCisgICAgICAgICAgICByb3VuZHRyaXAoImFiZGNcbiIsICJ3KyIpCisgICAgICAgICAgICByb3VuZHRyaXAoIlx1MDM5QiIsICJ3KyIsIGVuY29kaW5nPSJ1dGYtMTYiKQorICAgICAgICAgICAgcm91bmR0cmlwKCJmb29cclxuIiwgIncrIiwgbmV3bGluZT0iIikKIAogCiAjIEhlbHBlciBmb3IgdGVzdF9kZWxfb25fc2h1dGRvd24KQEAgLTk1NiwxNiArOTAzLDEzIEBACiAgICAgICAgICAgICBkLmNsZWFyKCkKICAgICAgICAgICAgIGQudXBkYXRlKGMpCiAKLWNsYXNzIHRlc3RfVGVtcG9yYXJ5RGlyZWN0b3J5KFRDKToKK2NsYXNzIFRlc3RUZW1wb3JhcnlEaXJlY3RvcnkoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IFRlbXBvcmFyeURpcmVjdG9yeSgpLiIiIgogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIsIHJlY3Vyc2U9MSk6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRtcCA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiVGVtcG9yYXJ5RGlyZWN0b3J5IikKKyAgICAgICAgdG1wID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCiAgICAgICAgIHNlbGYubmFtZUNoZWNrKHRtcC5uYW1lLCBkaXIsIHByZSwgc3VmKQogICAgICAgICAjIENyZWF0ZSBhIHN1YmRpcmVjdG9yeSBhbmQgc29tZSBmaWxlcwogICAgICAgICBpZiByZWN1cnNlOgpAQCAtMTA4OSwxMSArMTAzMyw4IEBACiAgICAgICAgICMgQ2FuIGJlIGNsZWFuZWQtdXAgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCiAgICAgICAgIGQgPSBzZWxmLmRvX2NyZWF0ZSgpCiAgICAgICAgIGQuY2xlYW51cCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGQuY2xlYW51cCgpCi0gICAgICAgICAgICBkLmNsZWFudXAoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xlYW51cCIpCisgICAgICAgIGQuY2xlYW51cCgpCisgICAgICAgIGQuY2xlYW51cCgpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgICMgQ2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIKQEAgLTExMDQsMTAgKzEwNDUsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWUpKQogCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9UZW1wb3JhcnlEaXJlY3RvcnkpCi0KIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5IGIvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weQppbmRleCA5MDVkZDRjLi5iYjRhODUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkKQEAgLTExLDcgKzExLDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWZyb20gdGV4dHdyYXAgaW1wb3J0IFRleHRXcmFwcGVyLCB3cmFwLCBmaWxsLCBkZWRlbnQKK2Zyb20gdGV4dHdyYXAgaW1wb3J0IFRleHRXcmFwcGVyLCB3cmFwLCBmaWxsLCBkZWRlbnQsIGluZGVudAogCiAKIGNsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC05MSw2ICs5MSwxNCBAQAogICAgICAgICByZXN1bHQgPSB3cmFwcGVyLmZpbGwodGV4dCkKICAgICAgICAgc2VsZi5jaGVjayhyZXN1bHQsICdcbicuam9pbihleHBlY3QpKQogCisgICAgICAgIHRleHQgPSAiXHRUZXN0XHRkZWZhdWx0XHRcdHRhYnNpemUuIgorICAgICAgICBleHBlY3QgPSBbIiAgICAgICAgVGVzdCAgICBkZWZhdWx0ICAgICAgICAgdGFic2l6ZS4iXQorICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgODAsIGV4cGVjdCkKKworICAgICAgICB0ZXh0ID0gIlx0VGVzdFx0Y3VzdG9tXHRcdHRhYnNpemUuIgorICAgICAgICBleHBlY3QgPSBbIiAgICBUZXN0ICAgIGN1c3RvbSAgICAgIHRhYnNpemUuIl0KKyAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDgwLCBleHBlY3QsIHRhYnNpemU9NCkKKwogICAgIGRlZiB0ZXN0X2ZpeF9zZW50ZW5jZV9lbmRpbmdzKHNlbGYpOgogICAgICAgICB3cmFwcGVyID0gVGV4dFdyYXBwZXIoNjAsIGZpeF9zZW50ZW5jZV9lbmRpbmdzPVRydWUpCiAKQEAgLTU4NiwxMSArNTk0LDE0NyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgZGVkZW50KHRleHQpKQogCiAKKyMgVGVzdCB0ZXh0d3JhcC5pbmRlbnQKK2NsYXNzIEluZGVudFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFRoZSBleGFtcGxlcyB1c2VkIGZvciB0ZXN0cy4gSWYgYW55IG9mIHRoZXNlIGNoYW5nZSwgdGhlIGV4cGVjdGVkCisgICAgIyByZXN1bHRzIGluIHRoZSB2YXJpb3VzIHRlc3QgY2FzZXMgbXVzdCBhbHNvIGJlIHVwZGF0ZWQuCisgICAgIyBUaGUgcm91bmR0cmlwIGNhc2VzIGFyZSBzZXBhcmF0ZSwgYmVjYXVzZSB0ZXh0d3JhcC5kZWRlbnQgZG9lc24ndAorICAgICMgaGFuZGxlIFdpbmRvd3MgbGluZSBlbmRpbmdzCisgICAgUk9VTkRUUklQX0NBU0VTID0gKAorICAgICAgIyBCYXNpYyB0ZXN0IGNhc2UKKyAgICAgICJIaS5cblRoaXMgaXMgYSB0ZXN0LlxuVGVzdGluZy4iLAorICAgICAgIyBJbmNsdWRlIGEgYmxhbmsgbGluZQorICAgICAgIkhpLlxuVGhpcyBpcyBhIHRlc3QuXG5cblRlc3RpbmcuIiwKKyAgICAgICMgSW5jbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcworICAgICAgIlxuSGkuXG5UaGlzIGlzIGEgdGVzdC5cblRlc3RpbmcuXG4iLAorICAgICkKKyAgICBDQVNFUyA9IFJPVU5EVFJJUF9DQVNFUyArICgKKyAgICAgICMgVXNlIFdpbmRvd3MgbGluZSBlbmRpbmdzCisgICAgICAiSGkuXHJcblRoaXMgaXMgYSB0ZXN0LlxyXG5UZXN0aW5nLlxyXG4iLAorICAgICAgIyBQYXRob2xvZ2ljYWwgY2FzZQorICAgICAgIlxuSGkuXHJcblRoaXMgaXMgYSB0ZXN0LlxuXHJcblRlc3RpbmcuXHJcblxuIiwKKyAgICApCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfbm9tYXJnaW5fZGVmYXVsdChzZWxmKToKKyAgICAgICAgIyBpbmRlbnQgc2hvdWxkIGRvIG5vdGhpbmcgaWYgJ3ByZWZpeCcgaXMgZW1wdHkuCisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCAnJyksIHRleHQpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfbm9tYXJnaW5fZXhwbGljaXRfZGVmYXVsdChzZWxmKToKKyAgICAgICAgIyBUaGUgc2FtZSBhcyB0ZXN0X2luZGVudF9ub21hcmdpbiwgYnV0IGV4cGxpY2l0bHkgcmVxdWVzdGluZworICAgICAgICAjIHRoZSBkZWZhdWx0IGJlaGF2aW91ciBieSBwYXNzaW5nIE5vbmUgYXMgdGhlIHByZWRpY2F0ZQorICAgICAgICBmb3IgdGV4dCBpbiBzZWxmLkNBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgJycsIE5vbmUpLCB0ZXh0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X25vbWFyZ2luX2FsbF9saW5lcyhzZWxmKToKKyAgICAgICAgIyBUaGUgc2FtZSBhcyB0ZXN0X2luZGVudF9ub21hcmdpbiwgYnV0IHVzaW5nIHRoZSBvcHRpb25hbAorICAgICAgICAjIHByZWRpY2F0ZSBhcmd1bWVudAorICAgICAgICBwcmVkaWNhdGUgPSBsYW1iZGEgbGluZTogVHJ1ZQorICAgICAgICBmb3IgdGV4dCBpbiBzZWxmLkNBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgJycsIHByZWRpY2F0ZSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfbm9fbGluZXMoc2VsZik6CisgICAgICAgICMgRXhwbGljaXRseSBza2lwIGluZGVudGluZyBhbnkgbGluZXMKKyAgICAgICAgcHJlZGljYXRlID0gbGFtYmRhIGxpbmU6IEZhbHNlCisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCAnICAgICcsIHByZWRpY2F0ZSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfc3BhY2VzKHNlbGYpOgorICAgICAgICAjIEEgd2hpdGVzcGFjZSBwcmVmaXggc2hvdWxkIHJvdW5kdHJpcCB3aXRoIGRlZGVudAorICAgICAgICBmb3IgdGV4dCBpbiBzZWxmLlJPVU5EVFJJUF9DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVkZW50KGluZGVudCh0ZXh0LCAnICAgICcpKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF90YWJzKHNlbGYpOgorICAgICAgICAjIEEgd2hpdGVzcGFjZSBwcmVmaXggc2hvdWxkIHJvdW5kdHJpcCB3aXRoIGRlZGVudAorICAgICAgICBmb3IgdGV4dCBpbiBzZWxmLlJPVU5EVFJJUF9DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVkZW50KGluZGVudCh0ZXh0LCAnXHRcdCcpKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF9taXhlZChzZWxmKToKKyAgICAgICAgIyBBIHdoaXRlc3BhY2UgcHJlZml4IHNob3VsZCByb3VuZHRyaXAgd2l0aCBkZWRlbnQKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5ST1VORFRSSVBfQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZGVudChpbmRlbnQodGV4dCwgJyBcdCAgXHQgJykpLCB0ZXh0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X2RlZmF1bHQoc2VsZik6CisgICAgICAgICMgVGVzdCBkZWZhdWx0IGluZGVudGluZyBvZiBsaW5lcyB0aGF0IGFyZSBub3Qgd2hpdGVzcGFjZSBvbmx5CisgICAgICAgIHByZWZpeCA9ICcgICcKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgIyBCYXNpYyB0ZXN0IGNhc2UKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMKKyAgICAgICAgICAiXG4gIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgVGVzdGluZy5cbiIsCisgICAgICAgICAgIyBVc2UgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICAgICAgICAiICBIaS5cclxuICBUaGlzIGlzIGEgdGVzdC5cclxuICBUZXN0aW5nLlxyXG4iLAorICAgICAgICAgICMgUGF0aG9sb2dpY2FsIGNhc2UKKyAgICAgICAgICAiXG4gIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxuXHJcbiAgVGVzdGluZy5cclxuXG4iLAorICAgICAgICApCisgICAgICAgIGZvciB0ZXh0LCBleHBlY3QgaW4gemlwKHNlbGYuQ0FTRVMsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsIHByZWZpeCksIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9leHBsaWNpdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICAjIFRlc3QgZGVmYXVsdCBpbmRlbnRpbmcgb2YgbGluZXMgdGhhdCBhcmUgbm90IHdoaXRlc3BhY2Ugb25seQorICAgICAgICBwcmVmaXggPSAnICAnCisgICAgICAgIGV4cGVjdGVkID0gKAorICAgICAgICAgICMgQmFzaWMgdGVzdCBjYXNlCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGEgYmxhbmsgbGluZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cblxuICBUZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJsYW5rIGxpbmVzCisgICAgICAgICAgIlxuICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFRlc3RpbmcuXG4iLAorICAgICAgICAgICMgVXNlIFdpbmRvd3MgbGluZSBlbmRpbmdzCisgICAgICAgICAgIiAgSGkuXHJcbiAgVGhpcyBpcyBhIHRlc3QuXHJcbiAgVGVzdGluZy5cclxuIiwKKyAgICAgICAgICAjIFBhdGhvbG9naWNhbCBjYXNlCisgICAgICAgICAgIlxuICBIaS5cclxuICBUaGlzIGlzIGEgdGVzdC5cblxyXG4gIFRlc3RpbmcuXHJcblxuIiwKKyAgICAgICAgKQorICAgICAgICBmb3IgdGV4dCwgZXhwZWN0IGluIHppcChzZWxmLkNBU0VTLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCBwcmVmaXgsIE5vbmUpLCBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfYWxsX2xpbmVzKHNlbGYpOgorICAgICAgICAjIEFkZCAncHJlZml4JyB0byBhbGwgbGluZXMsIGluY2x1ZGluZyB3aGl0ZXNwYWNlLW9ubHkgb25lcy4KKyAgICAgICAgcHJlZml4ID0gJyAgJworICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgICAjIEJhc2ljIHRlc3QgY2FzZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBhIGJsYW5rIGxpbmUKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFxuICBUZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJsYW5rIGxpbmVzCisgICAgICAgICAgIiAgXG4gIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgVGVzdGluZy5cbiIsCisgICAgICAgICAgIyBVc2UgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICAgICAgICAiICBIaS5cclxuICBUaGlzIGlzIGEgdGVzdC5cclxuICBUZXN0aW5nLlxyXG4iLAorICAgICAgICAgICMgUGF0aG9sb2dpY2FsIGNhc2UKKyAgICAgICAgICAiICBcbiAgSGkuXHJcbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFxyXG4gIFRlc3RpbmcuXHJcbiAgXG4iLAorICAgICAgICApCisgICAgICAgIHByZWRpY2F0ZSA9IGxhbWJkYSBsaW5lOiBUcnVlCisgICAgICAgIGZvciB0ZXh0LCBleHBlY3QgaW4gemlwKHNlbGYuQ0FTRVMsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsIHByZWZpeCwgcHJlZGljYXRlKSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X2VtcHR5X2xpbmVzKHNlbGYpOgorICAgICAgICAjIEFkZCAncHJlZml4JyBzb2xlbHkgdG8gd2hpdGVzcGFjZS1vbmx5IGxpbmVzLgorICAgICAgICBwcmVmaXggPSAnICAnCisgICAgICAgIGV4cGVjdGVkID0gKAorICAgICAgICAgICMgQmFzaWMgdGVzdCBjYXNlCisgICAgICAgICAgIkhpLlxuVGhpcyBpcyBhIHRlc3QuXG5UZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGEgYmxhbmsgbGluZQorICAgICAgICAgICJIaS5cblRoaXMgaXMgYSB0ZXN0LlxuICBcblRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMKKyAgICAgICAgICAiICBcbkhpLlxuVGhpcyBpcyBhIHRlc3QuXG5UZXN0aW5nLlxuIiwKKyAgICAgICAgICAjIFVzZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgICAgICJIaS5cclxuVGhpcyBpcyBhIHRlc3QuXHJcblRlc3RpbmcuXHJcbiIsCisgICAgICAgICAgIyBQYXRob2xvZ2ljYWwgY2FzZQorICAgICAgICAgICIgIFxuSGkuXHJcblRoaXMgaXMgYSB0ZXN0LlxuICBcclxuVGVzdGluZy5cclxuICBcbiIsCisgICAgICAgICkKKyAgICAgICAgcHJlZGljYXRlID0gbGFtYmRhIGxpbmU6IG5vdCBsaW5lLnN0cmlwKCkKKyAgICAgICAgZm9yIHRleHQsIGV4cGVjdCBpbiB6aXAoc2VsZi5DQVNFUywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgcHJlZml4LCBwcmVkaWNhdGUpLCBleHBlY3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFdyYXBUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvbmdXb3JkVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRlbnRUZXN0Q2FzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWRlbnRUZXN0Q2FzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZGVudFRlc3RDYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZW50VGVzdENhc2UpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkKaW5kZXggNzc5MTkzNS4uY2ZjNjg0MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkKQEAgLTExLDggKzExLDggQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBpbXBvcnRfbW9kdWxlLCBydW5fdW5pdHRlc3QsIFRFU1RGTgotdGhyZWFkID0gaW1wb3J0X21vZHVsZSgnX3RocmVhZCcpCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAorICAgIHZlcmJvc2UsIGltcG9ydF9tb2R1bGUsIHJ1bl91bml0dGVzdCwgVEVTVEZOLCByZWFwX3RocmVhZHMsIGZvcmdldCwgdW5saW5rKQogdGhyZWFkaW5nID0gaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykKIAogZGVmIHRhc2soTiwgZG9uZSwgZG9uZV90YXNrcywgZXJyb3JzKToKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgIGVycm9ycy5hcHBlbmQoZS53aXRoX3RyYWNlYmFjayhOb25lKSkKICAgICBmaW5hbGx5OgotICAgICAgICBkb25lX3Rhc2tzLmFwcGVuZCh0aHJlYWQuZ2V0X2lkZW50KCkpCisgICAgICAgIGRvbmVfdGFza3MuYXBwZW5kKHRocmVhZGluZy5nZXRfaWRlbnQoKSkKICAgICAgICAgZmluaXNoZWQgPSBsZW4oZG9uZV90YXNrcykgPT0gTgogICAgICAgICBpZiBmaW5pc2hlZDoKICAgICAgICAgICAgIGRvbmUuc2V0KCkKQEAgLTYyLDcgKzYyLDcgQEAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYubnVtY2FsbHMgPSAwCiAgICAgICAgIHNlbGYueCA9IDAKLSAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkLmFsbG9jYXRlX2xvY2soKQorICAgICAgICBzZWxmLmxvY2sgPSB0aHJlYWRpbmcuTG9jaygpCiAKICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgbmFtZSwgcGF0aD1Ob25lKToKICAgICAgICAgIyBTaW11bGF0ZSBzb21lIHRocmVhZC11bnNhZmUgYmVoYXZpb3VyLiBJZiBjYWxscyB0byBmaW5kX21vZHVsZSgpCkBAIC0xMTMsNyArMTEzLDkgQEAKICAgICAgICAgICAgIGRvbmVfdGFza3MgPSBbXQogICAgICAgICAgICAgZG9uZS5jbGVhcigpCiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShOKToKLSAgICAgICAgICAgICAgICB0aHJlYWQuc3RhcnRfbmV3X3RocmVhZCh0YXNrLCAoTiwgZG9uZSwgZG9uZV90YXNrcywgZXJyb3JzLCkpCisgICAgICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXRhc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oTiwgZG9uZSwgZG9uZV90YXNrcywgZXJyb3JzLCkpCisgICAgICAgICAgICAgICAgdC5zdGFydCgpCiAgICAgICAgICAgICBkb25lLndhaXQoNjApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVycm9ycykKICAgICAgICAgICAgIGlmIHZlcmJvc2U6CkBAIC0xMjQsNyArMTI2LDcgQEAKIAogICAgIGRlZiB0ZXN0X3BhcmFsbGVsX21ldGFfcGF0aChzZWxmKToKICAgICAgICAgZmluZGVyID0gRmluZGVyKCkKLSAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoZmluZGVyKQorICAgICAgICBzeXMubWV0YV9wYXRoLmluc2VydCgwLCBmaW5kZXIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuY2hlY2tfcGFyYWxsZWxfbW9kdWxlX2luaXQoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGZpbmRlci5udW1jYWxscywgMCkKQEAgLTE0Myw3ICsxNDUsNyBAQAogICAgICAgICBkZWYgcGF0aF9ob29rKHBhdGgpOgogICAgICAgICAgICAgZmluZGVyLmZpbmRfbW9kdWxlKCcnKQogICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKLSAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKHBhdGhfaG9vaykKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuaW5zZXJ0KDAsIHBhdGhfaG9vaykKICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoZmx1c2hpbmdfZmluZGVyKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIEZsdXNoIHRoZSBjYWNoZSBhIGZpcnN0IHRpbWUKQEAgLTE4NSw3ICsxODcsNyBAQAogICAgICAgICAgICAgY29udGVudHMgPSBjb250ZW50cyAlIHsnZGVsYXknOiBkZWxheX0KICAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oVEVTVEZOLCBuYW1lICsgIi5weSIpLCAid2IiKSBhcyBmOgogICAgICAgICAgICAgICAgIGYud3JpdGUoY29udGVudHMuZW5jb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5tb2R1bGVzLnBvcCwgbmFtZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChmb3JnZXQsIG5hbWUpCiAKICAgICAgICAgcmVzdWx0cyA9IFtdCiAgICAgICAgIGRlZiBpbXBvcnRfYWIoKToKQEAgLTIwMiw5ICsyMDQsMzcgQEAKICAgICAgICAgdDIuam9pbigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHJlc3VsdHMpLCB7J2EnLCAnYid9KQogCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3RfaW1wb3J0KHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKKyAgICAgICAgICAgIGRlZiB0YXJnZXQoKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgcmFuZG9tCisgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9dGFyZ2V0KQorICAgICAgICAgICAgdC5zdGFydCgpCisgICAgICAgICAgICB0LmpvaW4oKSIiIgorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnBhdGgucmVtb3ZlLCBvcy5jdXJkaXIpCisgICAgICAgIGZpbGVuYW1lID0gVEVTVEZOICsgIi5weSIKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShjb2RlLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubGluaywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChmb3JnZXQsIFRFU1RGTikKKyAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCiAKKworQHJlYXBfdGhyZWFkcwogZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUaHJlYWRlZEltcG9ydFRlc3RzKQorICAgIG9sZF9zd2l0Y2hpbnRlcnZhbCA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIG9sZF9zd2l0Y2hpbnRlcnZhbCA9IHN5cy5nZXRzd2l0Y2hpbnRlcnZhbCgpCisgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCgwLjAwMDAwMDAxKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgcGFzcworICAgIHRyeToKKyAgICAgICAgcnVuX3VuaXR0ZXN0KFRocmVhZGVkSW1wb3J0VGVzdHMpCisgICAgZmluYWxseToKKyAgICAgICAgaWYgb2xkX3N3aXRjaGludGVydmFsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKG9sZF9zd2l0Y2hpbnRlcnZhbCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQppbmRleCAxN2JlODRiLi5iYjhkOWI2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQpAQCAtMTc1LDcgKzE3NSw3IEBACiAgICAgICAgIGV4Y2VwdGlvbiA9IGN0eXBlcy5weV9vYmplY3QoQXN5bmNFeGMpCiAKICAgICAgICAgIyBGaXJzdCBjaGVjayBpdCB3b3JrcyB3aGVuIHNldHRpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZSBzYW1lIHRocmVhZC4KLSAgICAgICAgdGlkID0gX3RocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICB0aWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXN1bHQgPSBzZXRfYXN5bmNfZXhjKGN0eXBlcy5jX2xvbmcodGlkKSwgZXhjZXB0aW9uKQpAQCAtMjA0LDcgKzIwNCw3IEBACiAKICAgICAgICAgY2xhc3MgV29ya2VyKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgICAgICAgICBzZWxmLmlkID0gX3RocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICAgICAgICAgIHNlbGYuaWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgICAgICAgICBzZWxmLmZpbmlzaGVkID0gRmFsc2UKIAogICAgICAgICAgICAgICAgIHRyeToKQEAgLTQwOSw2ICs0MDksMTQgQEAKICAgICAgICAgdC5kYWVtb24gPSBUcnVlCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZGFlbW9uJyBpbiByZXByKHQpKQogCisgICAgZGVmIHRlc3RfZGVhbW9uX3BhcmFtKHNlbGYpOgorICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodC5kYWVtb24pCisgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKGRhZW1vbj1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0LmRhZW1vbikKKyAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQoZGFlbW9uPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0LmRhZW1vbikKKwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmb3JrJyksICd0ZXN0IG5lZWRzIGZvcmsoKScpCiAgICAgZGVmIHRlc3RfZHVtbXlfdGhyZWFkX2FmdGVyX2Zvcmsoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzE0MzA4OiBhIGR1bW15IHRocmVhZCBpbiB0aGUgYWN0aXZlIGxpc3QgZG9lc24ndCBtZXNzIHVwCkBAIC03NDIsNiArNzUwLDEwIEBACiAgICAgICAgIHRocmVhZC5zdGFydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgc2V0YXR0ciwgdGhyZWFkLCAiZGFlbW9uIiwgVHJ1ZSkKIAorICAgIGRlZiB0ZXN0X3JlbGVhc2luZ191bmFjcXVpcmVkX2xvY2soc2VsZik6CisgICAgICAgIGxvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbG9jay5yZWxlYXNlKQorCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAndGVzdCBtYWNvc3ggcHJvYmxlbScpCiAgICAgZGVmIHRlc3RfcmVjdXJzaW9uX2xpbWl0KHNlbGYpOgogICAgICAgICAjIElzc3VlIDk2NzAKQEAgLTgwMyw2ICs4MTUsNyBAQAogY2xhc3MgQmFycmllclRlc3RzKGxvY2tfdGVzdHMuQmFycmllclRlc3RzKToKICAgICBiYXJyaWVydHlwZSA9IHN0YXRpY21ldGhvZCh0aHJlYWRpbmcuQmFycmllcikKIAorCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChMb2NrVGVzdHMsIFB5UkxvY2tUZXN0cywgQ1JMb2NrVGVzdHMsIEV2ZW50VGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25Bc1JMb2NrVGVzdHMsIENvbmRpdGlvblRlc3RzLApAQCAtODEwLDcgKzgyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZEpvaW5PblNodXRkb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nRXhjZXB0aW9uVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXJyaWVyVGVzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhcnJpZXJUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkc2lnbmFscy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkc2lnbmFscy5weQppbmRleCBlMGFmMzFkLi5mOTc1YTc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZHNpZ25hbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWRzaWduYWxzLnB5CkBAIC0xNCwxMCArMTQsOCBAQAogcHJvY2Vzc19waWQgPSBvcy5nZXRwaWQoKQogc2lnbmFsbGVkX2FsbD10aHJlYWQuYWxsb2NhdGVfbG9jaygpCiAKLSMgSXNzdWUgIzExMjIzOiBMb2NrcyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYSBtdXRleCBhbmQgYSBjb25kaXRpb24gdmFyaWFibGUgb2YKLSMgdGhlIHB0aHJlYWQgbGlicmFyeSBvbiBGcmVlQlNENi4gUE9TSVggY29uZGl0aW9uIHZhcmlhYmxlcyBjYW5ub3QgYmUKLSMgaW50ZXJydXB0ZWQgYnkgc2lnbmFscyAoc2VlIHB0aHJlYWRfY29uZF93YWl0IG1hbnVhbCBwYWdlKS4KLVVTSU5HX1BUSFJFQURfQ09ORCA9IChzeXMucGxhdGZvcm0gPT0gJ2ZyZWVic2Q2JykKK1VTSU5HX1BUSFJFQURfQ09ORCA9IChzeXMudGhyZWFkX2luZm8ubmFtZSA9PSAncHRocmVhZCcKKyAgICAgICAgICAgICAgICAgICAgICBhbmQgc3lzLnRocmVhZF9pbmZvLmxvY2sgPT0gJ211dGV4K2NvbmQnKQogCiBkZWYgcmVnaXN0ZXJTaWduYWxzKGZvcl91c3IxLCBmb3JfdXNyMiwgZm9yX2Fscm0pOgogICAgIHVzcjEgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IxLCBmb3JfdXNyMSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQppbmRleCBjZTU3ZDg3Li42M2UxNDUzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CkBAIC00LDcgKzQsMTcgQEAKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXNjb25maWcKIGltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncworaW1wb3J0IHBsYXRmb3JtCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKKworIyBNYXggeWVhciBpcyBvbmx5IGxpbWl0ZWQgYnkgdGhlIHNpemUgb2YgQyBpbnQuCitTSVpFT0ZfSU5UID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdTSVpFT0ZfSU5UJykgb3IgNAorVElNRV9NQVhZRUFSID0gKDEgPDwgOCAqIFNJWkVPRl9JTlQgLSAxKSAtIDEKK1RJTUVfTUlOWUVBUiA9IC1USU1FX01BWFlFQVIgLSAxCisKIAogY2xhc3MgVGltZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTcsOSArMjcsNTMgQEAKICAgICAgICAgdGltZS50aW1lem9uZQogICAgICAgICB0aW1lLnR6bmFtZQogCisgICAgZGVmIHRlc3RfdGltZShzZWxmKToKKyAgICAgICAgdGltZS50aW1lKCkKKyAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8oJ3RpbWUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluZm8ubW9ub3RvbmljKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5mby5hZGp1c3RhYmxlKQorCiAgICAgZGVmIHRlc3RfY2xvY2soc2VsZik6CiAgICAgICAgIHRpbWUuY2xvY2soKQogCisgICAgICAgIGluZm8gPSB0aW1lLmdldF9jbG9ja19pbmZvKCdjbG9jaycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmZvLm1vbm90b25pYykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbmZvLmFkanVzdGFibGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdjbG9ja19nZXR0aW1lJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5jbG9ja19nZXR0aW1lKCknKQorICAgIGRlZiB0ZXN0X2Nsb2NrX3JlYWx0aW1lKHNlbGYpOgorICAgICAgICB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ2Nsb2NrX2dldHRpbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLmNsb2NrX2dldHRpbWUoKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnQ0xPQ0tfTU9OT1RPTklDJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5DTE9DS19NT05PVE9OSUMnKQorICAgIGRlZiB0ZXN0X2Nsb2NrX21vbm90b25pYyhzZWxmKToKKyAgICAgICAgYSA9IHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX01PTk9UT05JQykKKyAgICAgICAgYiA9IHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX01PTk9UT05JQykKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYSwgYikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ2Nsb2NrX2dldHJlcycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuY2xvY2tfZ2V0cmVzKCknKQorICAgIGRlZiB0ZXN0X2Nsb2NrX2dldHJlcyhzZWxmKToKKyAgICAgICAgcmVzID0gdGltZS5jbG9ja19nZXRyZXModGltZS5DTE9DS19SRUFMVElNRSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHJlcywgMC4wKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChyZXMsIDEuMCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ2Nsb2NrX3NldHRpbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLmNsb2NrX3NldHRpbWUoKScpCisgICAgZGVmIHRlc3RfY2xvY2tfc2V0dGltZShzZWxmKToKKyAgICAgICAgdCA9IHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLmNsb2NrX3NldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSwgdCkKKyAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBoYXNhdHRyKHRpbWUsICdDTE9DS19NT05PVE9OSUMnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLmNsb2NrX3NldHRpbWUsIHRpbWUuQ0xPQ0tfTU9OT1RPTklDLCAwKQorCiAgICAgZGVmIHRlc3RfY29udmVyc2lvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5jdGltZShzZWxmLnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuYXNjdGltZSh0aW1lLmxvY2FsdGltZShzZWxmLnQpKSkKQEAgLTI3LDYgKzgxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi50KSkKIAogICAgIGRlZiB0ZXN0X3NsZWVwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0aW1lLnNsZWVwLCAtMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdGltZS5zbGVlcCwgLTEpCiAgICAgICAgIHRpbWUuc2xlZXAoMS4yKQogCiAgICAgZGVmIHRlc3Rfc3RyZnRpbWUoc2VsZik6CkBAIC00NywyOCArMTAzLDM0IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoJyVmJykKIAotICAgIGRlZiBfYm91bmRzX2NoZWNraW5nKHNlbGYsIGZ1bmM9dGltZS5zdHJmdGltZSk6CisgICAgZGVmIF9ib3VuZHNfY2hlY2tpbmcoc2VsZiwgZnVuYyk6CiAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgc3RyZnRpbWUoKSBjaGVja3MgdGhlIGJvdW5kcyBvZiB0aGUgdmFyaW91cyBwYXJ0cwotICAgICAgICAjb2YgdGhlIHRpbWUgdHVwbGUgKDAgaXMgdmFsaWQgZm9yICphbGwqIHZhbHVlcykuCisgICAgICAgICMgb2YgdGhlIHRpbWUgdHVwbGUgKDAgaXMgdmFsaWQgZm9yICphbGwqIHZhbHVlcykuCiAKICAgICAgICAgIyBUaGUgeWVhciBmaWVsZCBpcyB0ZXN0ZWQgYnkgb3RoZXIgdGVzdCBjYXNlcyBhYm92ZQogCiAgICAgICAgICMgQ2hlY2sgbW9udGggWzEsIDEyXSArIHplcm8gc3VwcG9ydAorICAgICAgICBmdW5jKCgxOTAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAtMSkpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEyLCAxLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIC0xLCAxLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEzLCAxLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgICMgQ2hlY2sgZGF5IG9mIG1vbnRoIFsxLCAzMV0gKyB6ZXJvIHN1cHBvcnQKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMCwgMCwgMCwgMCwgMCwgMSwgLTEpKQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAzMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAtMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAzMiwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICAjIENoZWNrIGhvdXIgWzAsIDIzXQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAyMywgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAtMSwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAyNCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICAjIENoZWNrIG1pbnV0ZSBbMCwgNTldCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDU5LCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIC0xLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCkBAIC03OCwxNSArMTQwLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIDAsIC0xLCAwLCAxLCAtMSkpCiAgICAgICAgICMgQzk5IG9ubHkgcmVxdWlyZXMgYWxsb3dpbmcgZm9yIG9uZSBsZWFwIHNlY29uZCwgYnV0IFB5dGhvbidzIGRvY3Mgc2F5CiAgICAgICAgICMgYWxsb3cgdHdvIGxlYXAgc2Vjb25kcyAoMC4uNjEpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDYwLCAwLCAxLCAtMSkpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDYxLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIDAsIDYyLCAwLCAxLCAtMSkpCiAgICAgICAgICMgTm8gY2hlY2sgZm9yIHVwcGVyLWJvdW5kIGRheSBvZiB3ZWVrOwogICAgICAgICAjICB2YWx1ZSBmb3JjZWQgaW50byByYW5nZSBieSBhIGBgJSA3YGAgY2FsY3VsYXRpb24uCiAgICAgICAgICMgU3RhcnQgY2hlY2sgYXQgLTIgc2luY2UgZ2V0dG1hcmcoKSBpbmNyZW1lbnRzIHZhbHVlIGJlZm9yZSB0YWtpbmcKICAgICAgICAgIyAgbW9kdWxvLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDAsIC0xLCAxLCAtMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDAsICs2LCAxLCAtMSkpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAwLCAwLCAtMiwgMSwgLTEpKQogICAgICAgICAjIENoZWNrIGRheSBvZiB0aGUgeWVhciBbMSwgMzY2XSArIHplcm8gc3VwcG9ydAorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAtMSkpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDAsIDAsIDM2NiwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAwLCAwLCAwLCAtMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLApAQCAtOTYsMTIgKzE2NCwxMyBAQAogICAgICAgICBzZWxmLl9ib3VuZHNfY2hlY2tpbmcobGFtYmRhIHR1cDogdGltZS5zdHJmdGltZSgnJywgdHVwKSkKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdmFsdWVzX2Zvcl96ZXJvKHNlbGYpOgotICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHVzaW5nIGFsbCB6ZXJvcyB1c2VzIHRoZSBwcm9wZXIgZGVmYXVsdCB2YWx1ZXMuCi0gICAgICAgICMgTm8gdGVzdCBmb3IgZGF5bGlnaHQgc2F2aW5ncyBzaW5jZSBzdHJmdGltZSgpIGRvZXMgbm90IGNoYW5nZSBvdXRwdXQKLSAgICAgICAgIyBiYXNlZCBvbiBpdHMgdmFsdWUuCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdXNpbmcgYWxsIHplcm9zIHVzZXMgdGhlIHByb3BlciBkZWZhdWx0CisgICAgICAgICMgdmFsdWVzLiAgTm8gdGVzdCBmb3IgZGF5bGlnaHQgc2F2aW5ncyBzaW5jZSBzdHJmdGltZSgpIGRvZXMKKyAgICAgICAgIyBub3QgY2hhbmdlIG91dHB1dCBiYXNlZCBvbiBpdHMgdmFsdWUgYW5kIG5vIHRlc3QgZm9yIHllYXIKKyAgICAgICAgIyBiZWNhdXNlIHN5c3RlbXMgdmFyeSBpbiB0aGVpciBzdXBwb3J0IGZvciB5ZWFyIDAuCiAgICAgICAgIGV4cGVjdGVkID0gIjIwMDAgMDEgMDEgMDAgMDAgMDAgMSAwMDEiCiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgotICAgICAgICAgICAgcmVzdWx0ID0gdGltZS5zdHJmdGltZSgiJVkgJW0gJWQgJUggJU0gJVMgJXcgJWoiLCAoMCwpKjkpCisgICAgICAgICAgICByZXN1bHQgPSB0aW1lLnN0cmZ0aW1lKCIlWSAlbSAlZCAlSCAlTSAlUyAldyAlaiIsICgyMDAwLCkrKDAsKSo4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXN1bHQpCiAKICAgICBkZWYgdGVzdF9zdHJwdGltZShzZWxmKToKQEAgLTEyOCwxMSArMTk3LDEzIEBACiAgICAgICAgIHRpbWUuYXNjdGltZSh0aW1lLmdtdGltZShzZWxmLnQpKQogCiAgICAgICAgICMgTWF4IHllYXIgaXMgb25seSBsaW1pdGVkIGJ5IHRoZSBzaXplIG9mIEMgaW50LgotICAgICAgICBzaXplb2ZfaW50ID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdTSVpFT0ZfSU5UJykgb3IgNAotICAgICAgICBiaWd5ZWFyID0gKDEgPDwgOCAqIHNpemVvZl9pbnQgLSAxKSAtIDEKLSAgICAgICAgYXNjID0gdGltZS5hc2N0aW1lKChiaWd5ZWFyLCA2LCAxKSArICgwLCkqNikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc2NbLWxlbihzdHIoYmlneWVhcikpOl0sIHN0cihiaWd5ZWFyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGltZS5hc2N0aW1lLCAoYmlneWVhciArIDEsKSArICgwLCkqOCkKKyAgICAgICAgZm9yIGJpZ3llYXIgaW4gVElNRV9NQVhZRUFSLCBUSU1FX01JTllFQVI6CisgICAgICAgICAgICBhc2MgPSB0aW1lLmFzY3RpbWUoKGJpZ3llYXIsIDYsIDEpICsgKDAsKSAqIDYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzY1stbGVuKHN0cihiaWd5ZWFyKSk6XSwgc3RyKGJpZ3llYXIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0aW1lLmFzY3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChUSU1FX01BWFlFQVIgKyAxLCkgKyAoMCwpICogOCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGltZS5hc2N0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoVElNRV9NSU5ZRUFSIC0gMSwpICsgKDAsKSAqIDgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGltZS5hc2N0aW1lLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRpbWUuYXNjdGltZSwgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGltZS5hc2N0aW1lLCAoMCwpICogMTApCkBAIC0xNTUsOCArMjI2LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLmN0aW1lKHRlc3R2YWwpWzIwOl0sIHN0cih5ZWFyKSkKIAotICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIodGltZSwgInR6c2V0IiksCi0gICAgICAgICJ0aW1lIG1vZHVsZSBoYXMgbm8gYXR0cmlidXRlIHR6c2V0IikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICJ0enNldCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIG1vZHVsZSBoYXMgbm8gYXR0cmlidXRlIHR6c2V0IikKICAgICBkZWYgdGVzdF90enNldChzZWxmKToKIAogICAgICAgICBmcm9tIG9zIGltcG9ydCBlbnZpcm9uCkBAIC0yMDgsMTEgKzI3OSwxMyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0aW1lLmdtdGltZSh4bWFzMjAwMiksIHRpbWUubG9jYWx0aW1lKHhtYXMyMDAyKSkKIAogICAgICAgICAgICAgIyBJc3N1ZSAjMTE4ODY6IEF1c3RyYWxpYW4gRWFzdGVybiBTdGFuZGFyZCBUaW1lIChVVEMrMTApIGlzIGNhbGxlZAotICAgICAgICAgICAgIyAiRVNUIiAoYXMgRWFzdGVybiBTdGFuZGFyZCBUaW1lLCBVVEMtNSkgaW5zdGVhZCBvZiAiQUVTVCIgb24gc29tZQotICAgICAgICAgICAgIyBvcGVyYXRpbmcgc3lzdGVtcyAoZS5nLiBGcmVlQlNEKSwgd2hpY2ggaXMgd3JvbmcuIFNlZSBmb3IgZXhhbXBsZQotICAgICAgICAgICAgIyB0aGlzIGJ1ZzogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTkzODEwCisgICAgICAgICAgICAjICJFU1QiIChhcyBFYXN0ZXJuIFN0YW5kYXJkIFRpbWUsIFVUQy01KSBpbnN0ZWFkIG9mICJBRVNUIgorICAgICAgICAgICAgIyAobm9uLURTVCB0aW1lem9uZSksIGFuZCAiRURUIiBpbnN0ZWFkIG9mICJBRURUIiAoRFNUIHRpbWV6b25lKSwKKyAgICAgICAgICAgICMgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyAoZS5nLiBGcmVlQlNEKSwgd2hpY2ggaXMgd3JvbmcuIFNlZSBmb3IKKyAgICAgICAgICAgICMgZXhhbXBsZSB0aGlzIGJ1ZzoKKyAgICAgICAgICAgICMgaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTkzODEwCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHRpbWUudHpuYW1lWzBdLCAoJ0FFU1QnICdFU1QnKSwgdGltZS50em5hbWVbMF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGltZS50em5hbWVbMV0gPT0gJ0FFRFQnLCBzdHIodGltZS50em5hbWVbMV0pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWUudHpuYW1lWzFdIGluICgnQUVEVCcsICdFRFQnKSwgc3RyKHRpbWUudHpuYW1lWzFdKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRpbWUudHpuYW1lKSwgMikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5kYXlsaWdodCwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS50aW1lem9uZSwgLTM2MDAwKQpAQCAtMjM1LDcgKzMwOCw3IEBACiAgICAgICAgICMgcmVzdWx0cyEpLgogICAgICAgICBmb3IgZnVuYyBpbiB0aW1lLmN0aW1lLCB0aW1lLmdtdGltZSwgdGltZS5sb2NhbHRpbWU6CiAgICAgICAgICAgICBmb3IgdW5yZWFzb25hYmxlIGluIC0xZTIwMCwgMWUyMDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywgdW5yZWFzb25hYmxlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGZ1bmMsIHVucmVhc29uYWJsZSkKIAogICAgIGRlZiB0ZXN0X2N0aW1lX3dpdGhvdXRfYXJnKHNlbGYpOgogICAgICAgICAjIE5vdCBzdXJlIGhvdyB0byBjaGVjayB0aGUgdmFsdWVzLCBzaW5jZSB0aGUgY2xvY2sgY291bGQgdGljawpAQCAtMjU4LDYgKzMzMSwxMTcgQEAKICAgICAgICAgdDEgPSB0aW1lLm1rdGltZShsdDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwodDEsIHQwLCBkZWx0YT0wLjIpCiAKKyAgICBkZWYgdGVzdF9ta3RpbWUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE3MjY2ODcKKyAgICAgICAgZm9yIHQgaW4gKC0yLCAtMSwgMCwgMSk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHQgPSB0aW1lLmxvY2FsdGltZSh0KQorICAgICAgICAgICAgZXhjZXB0IChPdmVyZmxvd0Vycm9yLCBPU0Vycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5ta3RpbWUodHQpLCB0KQorCisgICAgIyBJc3N1ZSAjMTMzMDk6IHBhc3NpbmcgZXh0cmVtZSB2YWx1ZXMgdG8gbWt0aW1lKCkgb3IgbG9jYWx0aW1lKCkKKyAgICAjIGJvcmtzIHRoZSBnbGliYydzIGludGVybmFsIHRpbWV6b25lIGRhdGEuCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MocGxhdGZvcm0ubGliY192ZXIoKVswXSAhPSAnZ2xpYmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJkaXNhYmxlZCBiZWNhdXNlIG9mIGEgYnVnIGluIGdsaWJjLiBJc3N1ZSAjMTMzMDkiKQorICAgIGRlZiB0ZXN0X21rdGltZV9lcnJvcihzZWxmKToKKyAgICAgICAgIyBJdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIHJlbGlhYmx5IG1ha2UgbWt0aW1lIHJldHVybiBlcnJvcgorICAgICAgICAjIG9uIGFsbCBwbGF0Zm9tLiAgVGhpcyB3aWxsIG1ha2Ugc3VyZSB0aGF0IG5vIG90aGVyIGV4Y2VwdGlvbgorICAgICAgICAjIHRoYW4gT3ZlcmZsb3dFcnJvciBpcyByYWlzZWQgZm9yIGFuIGV4dHJlbWUgdmFsdWUuCisgICAgICAgIHR0ID0gdGltZS5nbXRpbWUoc2VsZi50KQorICAgICAgICB0em5hbWUgPSB0aW1lLnN0cmZ0aW1lKCclWicsIHR0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHR6bmFtZSwgJ0xNVCcpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRpbWUubWt0aW1lKCgtMSwgMSwgMSwgMCwgMCwgMCwgLTEsIC0xLCAtMSkpCisgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUuc3RyZnRpbWUoJyVaJywgdHQpLCB0em5hbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdtb25vdG9uaWMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLm1vbm90b25pYycpCisgICAgZGVmIHRlc3RfbW9ub3RvbmljKHNlbGYpOgorICAgICAgICB0MSA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgdGltZS5zbGVlcCgwLjEpCisgICAgICAgIHQyID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBkdCA9IHQyIC0gdDEKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHQyLCB0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChkdCwgMC4xLCBkZWx0YT0wLjIpCisKKyAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8oJ21vbm90b25pYycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmZvLm1vbm90b25pYykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbmZvLmFkanVzdGFibGUpCisKKyAgICBkZWYgdGVzdF9wZXJmX2NvdW50ZXIoc2VsZik6CisgICAgICAgIHRpbWUucGVyZl9jb3VudGVyKCkKKworICAgIGRlZiB0ZXN0X3Byb2Nlc3NfdGltZShzZWxmKToKKyAgICAgICAgIyBwcm9jZXNzX3RpbWUoKSBzaG91bGQgbm90IGluY2x1ZGUgdGltZSBzcGVuZCBkdXJpbmcgYSBzbGVlcAorICAgICAgICBzdGFydCA9IHRpbWUucHJvY2Vzc190aW1lKCkKKyAgICAgICAgdGltZS5zbGVlcCgwLjEwMCkKKyAgICAgICAgc3RvcCA9IHRpbWUucHJvY2Vzc190aW1lKCkKKyAgICAgICAgIyB1c2UgMjAgbXMgYmVjYXVzZSBwcm9jZXNzX3RpbWUoKSBoYXMgdXN1YWxseSBhIHJlc29sdXRpb24gb2YgMTUgbXMKKyAgICAgICAgIyBvbiBXaW5kb3dzCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzdG9wIC0gc3RhcnQsIDAuMDIwKQorCisgICAgICAgIGluZm8gPSB0aW1lLmdldF9jbG9ja19pbmZvKCdwcm9jZXNzX3RpbWUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5mby5tb25vdG9uaWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5mby5hZGp1c3RhYmxlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnbW9ub3RvbmljJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5tb25vdG9uaWMnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ2Nsb2NrX3NldHRpbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLmNsb2NrX3NldHRpbWUnKQorICAgIGRlZiB0ZXN0X21vbm90b25pY19zZXR0aW1lKHNlbGYpOgorICAgICAgICB0MSA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcmVhbHRpbWUgPSB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSkKKyAgICAgICAgIyBqdW1wIGJhY2t3YXJkIHdpdGggYW4gb2Zmc2V0IG9mIDEgaG91cgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLmNsb2NrX3NldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSwgcmVhbHRpbWUgLSAzNjAwKQorICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoZXJyKQorICAgICAgICB0MiA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgdGltZS5jbG9ja19zZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUsIHJlYWx0aW1lKQorICAgICAgICAjIG1vbm90b25pYyBtdXN0IG5vdCBiZSBhZmZlY3RlZCBieSBzeXN0ZW0gY2xvY2sgdXBkYXRlcworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbCh0MiwgdDEpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTM4NDc6IGNoZWNrIGZvciBsb2NhbHRpbWUoKSBmYWlsdXJlCisgICAgICAgIGludmFsaWRfdGltZV90ID0gTm9uZQorICAgICAgICBmb3IgdGltZV90IGluICgtMSwgMioqMzAsIDIqKjMzLCAyKio2MCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGltZS5sb2NhbHRpbWUodGltZV90KQorICAgICAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibmVlZCA2NC1iaXQgdGltZV90IikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIGludmFsaWRfdGltZV90ID0gdGltZV90CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgaW52YWxpZF90aW1lX3QgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInVuYWJsZSB0byBmaW5kIGFuIGludmFsaWQgdGltZV90IHZhbHVlIikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCB0aW1lLmxvY2FsdGltZSwgaW52YWxpZF90aW1lX3QpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHRpbWUuY3RpbWUsIGludmFsaWRfdGltZV90KQorCisgICAgZGVmIHRlc3RfZ2V0X2Nsb2NrX2luZm8oc2VsZik6CisgICAgICAgIGNsb2NrcyA9IFsnY2xvY2snLCAncGVyZl9jb3VudGVyJywgJ3Byb2Nlc3NfdGltZScsICd0aW1lJ10KKyAgICAgICAgaWYgaGFzYXR0cih0aW1lLCAnbW9ub3RvbmljJyk6CisgICAgICAgICAgICBjbG9ja3MuYXBwZW5kKCdtb25vdG9uaWMnKQorCisgICAgICAgIGZvciBuYW1lIGluIGNsb2NrczoKKyAgICAgICAgICAgIGluZm8gPSB0aW1lLmdldF9jbG9ja19pbmZvKG5hbWUpCisgICAgICAgICAgICAjc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm8sIGRpY3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mby5pbXBsZW1lbnRhdGlvbiwgc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbmZvLmltcGxlbWVudGF0aW9uLCAnJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvLm1vbm90b25pYywgYm9vbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvLnJlc29sdXRpb24sIGZsb2F0KQorICAgICAgICAgICAgIyAwLjAgPCByZXNvbHV0aW9uIDw9IDEuMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGluZm8ucmVzb2x1dGlvbiwgMC4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoaW5mby5yZXNvbHV0aW9uLCAxLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mby5hZGp1c3RhYmxlLCBib29sKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHRpbWUuZ2V0X2Nsb2NrX2luZm8sICd4eHgnKQorCisKIGNsYXNzIFRlc3RMb2NhbGUodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5vbGRsb2MgPSBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwpCkBAIC0yNzYsMTkgKzQ2MCwxMiBAQAogCiAKIGNsYXNzIF9CYXNlWWVhclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGFjY2VwdDJkeWVhciA9IE5vbmUKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5zYXZlZF9hY2NlcHQyZHllYXIgPSB0aW1lLmFjY2VwdDJkeWVhcgotICAgICAgICB0aW1lLmFjY2VwdDJkeWVhciA9IHNlbGYuYWNjZXB0MmR5ZWFyCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHRpbWUuYWNjZXB0MmR5ZWFyID0gc2VsZi5zYXZlZF9hY2NlcHQyZHllYXIKLQogICAgIGRlZiB5ZWFyc3RyKHNlbGYsIHkpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIAogY2xhc3MgX1Rlc3RBc2N0aW1lWWVhcjoKKyAgICBfZm9ybWF0ID0gJyVkJworCiAgICAgZGVmIHllYXJzdHIoc2VsZiwgeSk6CiAgICAgICAgIHJldHVybiB0aW1lLmFzY3RpbWUoKHksKSArICgwLCkgKiA4KS5zcGxpdCgpWy0xXQogCkBAIC0yOTgsMTE0ICs0NzUsMjExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDEyMzQ1Njc4OSksICcxMjM0NTY3ODknKQogCiBjbGFzcyBfVGVzdFN0cmZ0aW1lWWVhcjoKLSAgICBkZWYgeWVhcnN0cihzZWxmLCB5KToKLSAgICAgICAgcmV0dXJuIHRpbWUuc3RyZnRpbWUoJyVZJywgKHksKSArICgwLCkgKiA4KS5zcGxpdCgpWy0xXQogCi0gICAgZGVmIHRlc3RfbGFyZ2VfeWVhcihzZWxmKToKKyAgICAjIElzc3VlIDEzMzA1OiAgRm9yIHllYXJzIDwgMTAwMCwgdGhlIHZhbHVlIGlzIG5vdCBhbHdheXMKKyAgICAjIHBhZGRlZCB0byA0IGRpZ2l0cyBhY3Jvc3MgcGxhdGZvcm1zLiAgVGhlIEMgc3RhbmRhcmQKKyAgICAjIGFzc3VtZXMgeWVhciA+PSAxOTAwLCBzbyBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBudW1iZXIKKyAgICAjIG9mIGRpZ2l0cy4KKworICAgIGlmIHRpbWUuc3RyZnRpbWUoJyVZJywgKDEsKSArICgwLCkgKiA4KSA9PSAnMDAwMSc6CisgICAgICAgIF9mb3JtYXQgPSAnJTA0ZCcKKyAgICBlbHNlOgorICAgICAgICBfZm9ybWF0ID0gJyVkJworCisgICAgZGVmIHllYXJzdHIoc2VsZiwgeSk6CisgICAgICAgIHJldHVybiB0aW1lLnN0cmZ0aW1lKCclWScsICh5LCkgKyAoMCwpICogOCkKKworICAgIGRlZiB0ZXN0XzRkeWVhcihzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHdlIGNhbiByZXR1cm4gdGhlIHplcm8gcGFkZGVkIHZhbHVlLgorICAgICAgICBpZiBzZWxmLl9mb3JtYXQgPT0gJyUwNGQnOgorICAgICAgICAgICAgc2VsZi50ZXN0X3llYXIoJyUwNGQnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGVmIHllYXI0ZCh5KToKKyAgICAgICAgICAgICAgICByZXR1cm4gdGltZS5zdHJmdGltZSgnJTRZJywgKHksKSArICgwLCkgKiA4KQorICAgICAgICAgICAgc2VsZi50ZXN0X3llYXIoJyUwNGQnLCBmdW5jPXllYXI0ZCkKKworICAgIGRlZiBza2lwX2lmX25vdF9zdXBwb3J0ZWQoeSk6CisgICAgICAgIG1zZyA9ICJzdHJmdGltZSgpIGlzIGxpbWl0ZWQgdG8gWzE7IDk5OTldIHdpdGggVmlzdWFsIFN0dWRpbyIKICAgICAgICAgIyBDaGVjayB0aGF0IGl0IGRvZXNuJ3QgY3Jhc2ggZm9yIHllYXIgPiA5OTk5CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHRleHQgPSBzZWxmLnllYXJzdHIoMTIzNDUpCisgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCclWScsICh5LCkgKyAoMCwpICogOCkKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAjIHN0cmZ0aW1lKCkgaXMgbGltaXRlZCB0byBbMTsgOTk5OV0gd2l0aCBWaXN1YWwgU3R1ZGlvCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCAnMTIzNDUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigxMjM0NTY3ODkpLCAnMTIzNDU2Nzg5JykKKyAgICAgICAgICAgIGNvbmQgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29uZCA9IFRydWUKKyAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXBVbmxlc3MoY29uZCwgbXNnKQogCi1jbGFzcyBfVGVzdDJkWWVhcihfQmFzZVllYXJUZXN0KToKLSAgICBhY2NlcHQyZHllYXIgPSAxCisgICAgQHNraXBfaWZfbm90X3N1cHBvcnRlZCgxMDAwMCkKKyAgICBkZWYgdGVzdF9sYXJnZV95ZWFyKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS50ZXN0X2xhcmdlX3llYXIoKQogCi0gICAgZGVmIHRlc3RfeWVhcihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigwKSwgJzIwMDAnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoNjkpLCAnMTk2OScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cig2OCksICcyMDY4JykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDk5KSwgJzE5OTknKQorICAgIEBza2lwX2lmX25vdF9zdXBwb3J0ZWQoMCkKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkudGVzdF9uZWdhdGl2ZSgpCiAKLSAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnllYXJzdHIsIC0xKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnllYXJzdHIsIDEwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi55ZWFyc3RyLCA5OTkpCisgICAgZGVsIHNraXBfaWZfbm90X3N1cHBvcnRlZAorCiAKIGNsYXNzIF9UZXN0NGRZZWFyKF9CYXNlWWVhclRlc3QpOgotICAgIGFjY2VwdDJkeWVhciA9IDAKKyAgICBfZm9ybWF0ID0gJyVkJwogCi0gICAgZGVmIHRlc3RfeWVhcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnllYXJzdHIoMSksICAgICAoJzEnLCAnMDAwMScpKQotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYueWVhcnN0cig2OCksICAgKCc2OCcsICcwMDY4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi55ZWFyc3RyKDY5KSwgICAoJzY5JywgJzAwNjknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnllYXJzdHIoOTkpLCAgICgnOTknLCAnMDA5OScpKQotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYueWVhcnN0cig5OTkpLCAoJzk5OScsICcwOTk5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDk5OTkpLCAnOTk5OScpCisgICAgZGVmIHRlc3RfeWVhcihzZWxmLCBmbXQ9Tm9uZSwgZnVuYz1Ob25lKToKKyAgICAgICAgZm10ID0gZm10IG9yIHNlbGYuX2Zvcm1hdAorICAgICAgICBmdW5jID0gZnVuYyBvciBzZWxmLnllYXJzdHIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDEpLCAgICBmbXQgJSAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoNjgpLCAgIGZtdCAlIDY4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoNjkpLCAgIGZtdCAlIDY5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoOTkpLCAgIGZtdCAlIDk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoOTk5KSwgIGZtdCAlIDk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDk5OTkpLCBmbXQgJSA5OTk5KQorCisgICAgZGVmIHRlc3RfbGFyZ2VfeWVhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoMTIzNDUpLCAnMTIzNDUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigxMjM0NTY3ODkpLCAnMTIzNDU2Nzg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoVElNRV9NQVhZRUFSKSwgc3RyKFRJTUVfTUFYWUVBUikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYueWVhcnN0ciwgVElNRV9NQVhZRUFSICsgMSkKIAogICAgIGRlZiB0ZXN0X25lZ2F0aXZlKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXh0ID0gc2VsZi55ZWFyc3RyKC0xKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICMgc3RyZnRpbWUoKSBpcyBsaW1pdGVkIHRvIFsxOyA5OTk5XSB3aXRoIFZpc3VhbCBTdHVkaW8KLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLmFzc2VydEluKHRleHQsICgnLTEnLCAnLTAwMScpKQotCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKC0xKSwgc2VsZi5fZm9ybWF0ICUgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKC0xMjM0KSwgJy0xMjM0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoLTEyMzQ1NiksICctMTIzNDU2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoLTEyMzQ1Njc4OSksIHN0cigtMTIzNDU2Nzg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoLTEyMzQ1Njc4OTApLCBzdHIoLTEyMzQ1Njc4OTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cihUSU1FX01JTllFQVIgKyAxOTAwKSwgc3RyKFRJTUVfTUlOWUVBUiArIDE5MDApKQorICAgICAgICAjIElzc3VlICMxMzMxMjogaXQgbWF5IHJldHVybiB3cm9uZyB2YWx1ZSBmb3IgeWVhciA8IFRJTUVfTUlOWUVBUiArIDE5MDAKKyAgICAgICAgIyBTa2lwIHRoZSB2YWx1ZSB0ZXN0LCBidXQgY2hlY2sgdGhhdCBubyBlcnJvciBpcyByYWlzZWQKKyAgICAgICAgc2VsZi55ZWFyc3RyKFRJTUVfTUlOWUVBUikKKyAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cihUSU1FX01JTllFQVIpLCBzdHIoVElNRV9NSU5ZRUFSKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi55ZWFyc3RyLCBUSU1FX01JTllFQVIgLSAxKQogCiAKLSAgICBkZWYgdGVzdF9ta3RpbWUoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzE3MjY2ODcKLSAgICAgICAgZm9yIHQgaW4gKC0yLCAtMSwgMCwgMSk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdHQgPSB0aW1lLmxvY2FsdGltZSh0KQotICAgICAgICAgICAgZXhjZXB0IChPdmVyZmxvd0Vycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5ta3RpbWUodHQpLCB0KQotICAgICAgICAjIEl0IG1heSBub3QgYmUgcG9zc2libGUgdG8gcmVsaWFibHkgbWFrZSBta3RpbWUgcmV0dXJuIGVycm9yCi0gICAgICAgICMgb24gYWxsIHBsYXRmb20uICBUaGlzIHdpbGwgbWFrZSBzdXJlIHRoYXQgbm8gb3RoZXIgZXhjZXB0aW9uCi0gICAgICAgICMgdGhhbiBPdmVyZmxvd0Vycm9yIGlzIHJhaXNlZCBmb3IgYW4gZXh0cmVtZSB2YWx1ZS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5ta3RpbWUoKC0xLCAxLCAxLCAwLCAwLCAwLCAtMSwgLTEsIC0xKSkKLSAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLWNsYXNzIFRlc3RBc2N0aW1lQWNjZXB0MmRZZWFyKF9UZXN0QXNjdGltZVllYXIsIF9UZXN0MmRZZWFyKToKLSAgICBwYXNzCi0KLWNsYXNzIFRlc3RTdHJmdGltZUFjY2VwdDJkWWVhcihfVGVzdFN0cmZ0aW1lWWVhciwgX1Rlc3QyZFllYXIpOgotICAgIHBhc3MKLQogY2xhc3MgVGVzdEFzY3RpbWU0ZHllYXIoX1Rlc3RBc2N0aW1lWWVhciwgX1Rlc3Q0ZFllYXIpOgogICAgIHBhc3MKIAogY2xhc3MgVGVzdFN0cmZ0aW1lNGR5ZWFyKF9UZXN0U3RyZnRpbWVZZWFyLCBfVGVzdDRkWWVhcik6CiAgICAgcGFzcwogCi1jbGFzcyBUZXN0MmR5ZWFyQm9vbChfVGVzdEFzY3RpbWVZZWFyLCBfVGVzdDJkWWVhcik6Ci0gICAgYWNjZXB0MmR5ZWFyID0gVHJ1ZQogCi1jbGFzcyBUZXN0NGR5ZWFyQm9vbChfVGVzdEFzY3RpbWVZZWFyLCBfVGVzdDRkWWVhcik6Ci0gICAgYWNjZXB0MmR5ZWFyID0gRmFsc2UKK2NsYXNzIFRlc3RQeXRpbWUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5pbnZhbGlkX3ZhbHVlcyA9ICgKKyAgICAgICAgICAgIC0oMiAqKiAxMDApLCAyICoqIDEwMCwKKyAgICAgICAgICAgIC0oMi4wICoqIDEwMC4wKSwgMi4wICoqIDEwMC4wLAorICAgICAgICApCiAKLWNsYXNzIFRlc3RBY2NlcHQyWWVhckJhZChfVGVzdEFzY3RpbWVZZWFyLCBfQmFzZVllYXJUZXN0KToKLSAgICBjbGFzcyBYOgotICAgICAgICBkZWYgX19ib29sX18oc2VsZik6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2JvbycpCi0gICAgYWNjZXB0MmR5ZWFyID0gWCgpCi0gICAgZGVmIHRlc3RfMmR5ZWFyKHNlbGYpOgotICAgICAgICBwYXNzCi0gICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLnllYXJzdHIsIDIwMCkKKyAgICBkZWYgdGVzdF90aW1lX3Qoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAorICAgICAgICBmb3Igb2JqLCB0aW1lX3QgaW4gKAorICAgICAgICAgICAgKDAsIDApLAorICAgICAgICAgICAgKC0xLCAtMSksCisgICAgICAgICAgICAoLTEuMCwgLTEpLAorICAgICAgICAgICAgKC0xLjksIC0xKSwKKyAgICAgICAgICAgICgxLjAsIDEpLAorICAgICAgICAgICAgKDEuOSwgMSksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZV90KG9iaiksIHRpbWVfdCkKIAorICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcHl0aW1lX29iamVjdF90b190aW1lX3QsIGludmFsaWQpCisKKyAgICBkZWYgdGVzdF90aW1ldmFsKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1ldmFsCisgICAgICAgIGZvciBvYmosIHRpbWV2YWwgaW4gKAorICAgICAgICAgICAgKDAsICgwLCAwKSksCisgICAgICAgICAgICAoLTEsICgtMSwgMCkpLAorICAgICAgICAgICAgKC0xLjAsICgtMSwgMCkpLAorICAgICAgICAgICAgKDFlLTYsICgwLCAxKSksCisgICAgICAgICAgICAoLTFlLTYsICgtMSwgOTk5OTk5KSksCisgICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDApKSwKKyAgICAgICAgICAgICgxLjEyMzQ1NjAsICgxLCAxMjM0NTYpKSwKKyAgICAgICAgICAgICgxLjEyMzQ1NjksICgxLCAxMjM0NTYpKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTYwLCAoLTIsIDg3NjU0NCkpLAorICAgICAgICAgICAgKC0xLjEyMzQ1NjEsICgtMiwgODc2NTQzKSksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbChvYmopLCB0aW1ldmFsKQorCisgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwsIGludmFsaWQpCisKKyAgICBkZWYgdGVzdF90aW1lc3BlYyhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMKKyAgICAgICAgZm9yIG9iaiwgdGltZXNwZWMgaW4gKAorICAgICAgICAgICAgKDAsICgwLCAwKSksCisgICAgICAgICAgICAoLTEsICgtMSwgMCkpLAorICAgICAgICAgICAgKC0xLjAsICgtMSwgMCkpLAorICAgICAgICAgICAgKDFlLTksICgwLCAxKSksCisgICAgICAgICAgICAoLTFlLTksICgtMSwgOTk5OTk5OTk5KSksCisgICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDAwMDApKSwKKyAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3ODkpKSwKKyAgICAgICAgICAgICgxLjEyMzQ1Njc4OTksICgxLCAxMjM0NTY3ODkpKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTY3ODkwLCAoLTIsIDg3NjU0MzIxMSkpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjEwKSksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMob2JqKSwgdGltZXNwZWMpCisKKyAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsIGludmFsaWQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X2xvY2FsdGltZV90aW1lem9uZShzZWxmKToKKworICAgICAgICAjIEdldCB0aGUgbG9jYWx0aW1lIGFuZCBleGFtaW5lIGl0IGZvciB0aGUgb2Zmc2V0IGFuZCB6b25lLgorICAgICAgICBsdCA9IHRpbWUubG9jYWx0aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobHQsICJ0bV9nbXRvZmYiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobHQsICJ0bV96b25lIikpCisKKyAgICAgICAgIyBTZWUgaWYgdGhlIG9mZnNldCBhbmQgem9uZSBhcmUgc2ltaWxhciB0byB0aGUgbW9kdWxlCisgICAgICAgICMgYXR0cmlidXRlcy4KKyAgICAgICAgaWYgbHQudG1fZ210b2ZmIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGhhc2F0dHIodGltZSwgInRpbWV6b25lIikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx0LnRtX2dtdG9mZiwgLVt0aW1lLnRpbWV6b25lLCB0aW1lLmFsdHpvbmVdW2x0LnRtX2lzZHN0XSkKKyAgICAgICAgaWYgbHQudG1fem9uZSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBoYXNhdHRyKHRpbWUsICJ0em5hbWUiKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHQudG1fem9uZSwgdGltZS50em5hbWVbbHQudG1faXNkc3RdKQorCisgICAgICAgICMgVHJ5IGFuZCBtYWtlIFVOSVggdGltZXMgZnJvbSB0aGUgbG9jYWx0aW1lIGFuZCBhIDktdHVwbGUKKyAgICAgICAgIyBjcmVhdGVkIGZyb20gdGhlIGxvY2FsdGltZS4gVGVzdCB0byBzZWUgdGhhdCB0aGUgdGltZXMgYXJlCisgICAgICAgICMgdGhlIHNhbWUuCisgICAgICAgIHQgPSB0aW1lLm1rdGltZShsdCk7IHQ5ID0gdGltZS5ta3RpbWUobHRbOjldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIHQ5KQorCisgICAgICAgICMgTWFrZSBsb2NhbHRpbWVzIGZyb20gdGhlIFVOSVggdGltZXMgYW5kIGNvbXBhcmUgdGhlbSB0bworICAgICAgICAjIHRoZSBvcmlnaW5hbCBsb2NhbHRpbWUsIHRodXMgbWFraW5nIGEgcm91bmQgdHJpcC4KKyAgICAgICAgbmV3X2x0ID0gdGltZS5sb2NhbHRpbWUodCk7IG5ld19sdDkgPSB0aW1lLmxvY2FsdGltZSh0OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQsIGx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdC50bV9nbXRvZmYsIGx0LnRtX2dtdG9mZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQudG1fem9uZSwgbHQudG1fem9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQ5LCBsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQudG1fZ210b2ZmLCBsdC50bV9nbXRvZmYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0OS50bV96b25lLCBsdC50bV96b25lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGltZS5fU1RSVUNUX1RNX0lURU1TID09IDExLCAibmVlZHMgdG1fem9uZSBzdXBwb3J0IikKKyAgICBkZWYgdGVzdF9zdHJwdGltZV90aW1lem9uZShzZWxmKToKKyAgICAgICAgdCA9IHRpbWUuc3RycHRpbWUoIlVUQyIsICIlWiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50bV96b25lLCAnVVRDJykKKyAgICAgICAgdCA9IHRpbWUuc3RycHRpbWUoIiswNTAwIiwgIiV6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRtX2dtdG9mZiwgNSAqIDM2MDApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X3Nob3J0X3RpbWVzKHNlbGYpOgorCisgICAgICAgIGltcG9ydCBwaWNrbGUKKworICAgICAgICAjIExvYWQgYSBzaG9ydCB0aW1lIHN0cnVjdHVyZSB1c2luZyBwaWNrbGUuCisgICAgICAgIHN0ID0gYiJjdGltZVxuc3RydWN0X3RpbWVcbnAwXG4oKEkyMDA3XG5JOFxuSTExXG5JMVxuSTI0XG5JNDlcbkk1XG5JMjIzXG5JMVxudHAxXG4oZHAyXG50cDNcblJwNFxuLiIKKyAgICAgICAgbHQgPSBwaWNrbGUubG9hZHMoc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobHQudG1fZ210b2ZmLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKGx0LnRtX3pvbmUsIE5vbmUpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVGltZVRlc3RDYXNlLAogICAgICAgICBUZXN0TG9jYWxlLAotICAgICAgICBUZXN0QXNjdGltZUFjY2VwdDJkWWVhciwKLSAgICAgICAgVGVzdFN0cmZ0aW1lQWNjZXB0MmRZZWFyLAogICAgICAgICBUZXN0QXNjdGltZTRkeWVhciwKICAgICAgICAgVGVzdFN0cmZ0aW1lNGR5ZWFyLAotICAgICAgICBUZXN0MmR5ZWFyQm9vbCwKLSAgICAgICAgVGVzdDRkeWVhckJvb2wsCi0gICAgICAgIFRlc3RBY2NlcHQyWWVhckJhZCkKKyAgICAgICAgVGVzdFB5dGltZSkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKaW5kZXggYjZhOWNhMS4uMjEzZTliNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CkBAIC0yODksNiArMjg5LDY0IEBACiAgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAyOSkgKDEsIDMwKQogICAgIFNUUklORyAgICAgJ1IiQUJDIicgICAgICAoMSwgMzEpICgxLCAzNykKIAorICAgID4+PiBkdW1wX3Rva2VucygidSdhYmMnICsgVSdhYmMnIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgInUnYWJjJyIgICAgICAoMSwgMCkgKDEsIDYpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA3KSAoMSwgOCkKKyAgICBTVFJJTkcgICAgICJVJ2FiYyciICAgICAgKDEsIDkpICgxLCAxNSkKKyAgICA+Pj4gZHVtcF90b2tlbnMoJ3UiYWJjIiArIFUiYWJjIicpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICd1ImFiYyInICAgICAgKDEsIDApICgxLCA2KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgNykgKDEsIDgpCisgICAgU1RSSU5HICAgICAnVSJhYmMiJyAgICAgICgxLCA5KSAoMSwgMTUpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImInYWJjJyArIEInYWJjJyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICJiJ2FiYyciICAgICAgKDEsIDApICgxLCA2KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgNykgKDEsIDgpCisgICAgU1RSSU5HICAgICAiQidhYmMnIiAgICAgICgxLCA5KSAoMSwgMTUpCisgICAgPj4+IGR1bXBfdG9rZW5zKCdiImFiYyIgKyBCImFiYyInKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAnYiJhYmMiJyAgICAgICgxLCAwKSAoMSwgNikKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDcpICgxLCA4KQorICAgIFNUUklORyAgICAgJ0IiYWJjIicgICAgICAoMSwgOSkgKDEsIDE1KQorICAgID4+PiBkdW1wX3Rva2VucygiYnInYWJjJyArIGJSJ2FiYycgKyBCcidhYmMnICsgQlInYWJjJyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICJicidhYmMnIiAgICAgKDEsIDApICgxLCA3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgOCkgKDEsIDkpCisgICAgU1RSSU5HICAgICAiYlInYWJjJyIgICAgICgxLCAxMCkgKDEsIDE3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMTgpICgxLCAxOSkKKyAgICBTVFJJTkcgICAgICJCcidhYmMnIiAgICAgKDEsIDIwKSAoMSwgMjcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAyOCkgKDEsIDI5KQorICAgIFNUUklORyAgICAgIkJSJ2FiYyciICAgICAoMSwgMzApICgxLCAzNykKKyAgICA+Pj4gZHVtcF90b2tlbnMoJ2JyImFiYyIgKyBiUiJhYmMiICsgQnIiYWJjIiArIEJSImFiYyInKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAnYnIiYWJjIicgICAgICgxLCAwKSAoMSwgNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDgpICgxLCA5KQorICAgIFNUUklORyAgICAgJ2JSImFiYyInICAgICAoMSwgMTApICgxLCAxNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDE4KSAoMSwgMTkpCisgICAgU1RSSU5HICAgICAnQnIiYWJjIicgICAgICgxLCAyMCkgKDEsIDI3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKKyAgICBTVFJJTkcgICAgICdCUiJhYmMiJyAgICAgKDEsIDMwKSAoMSwgMzcpCisgICAgPj4+IGR1bXBfdG9rZW5zKCJyYidhYmMnICsgckInYWJjJyArIFJiJ2FiYycgKyBSQidhYmMnIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgInJiJ2FiYyciICAgICAoMSwgMCkgKDEsIDcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA4KSAoMSwgOSkKKyAgICBTVFJJTkcgICAgICJyQidhYmMnIiAgICAgKDEsIDEwKSAoMSwgMTcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAxOCkgKDEsIDE5KQorICAgIFNUUklORyAgICAgIlJiJ2FiYyciICAgICAoMSwgMjApICgxLCAyNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDI4KSAoMSwgMjkpCisgICAgU1RSSU5HICAgICAiUkInYWJjJyIgICAgICgxLCAzMCkgKDEsIDM3KQorICAgID4+PiBkdW1wX3Rva2VucygncmIiYWJjIiArIHJCImFiYyIgKyBSYiJhYmMiICsgUkIiYWJjIicpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICdyYiJhYmMiJyAgICAgKDEsIDApICgxLCA3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgOCkgKDEsIDkpCisgICAgU1RSSU5HICAgICAnckIiYWJjIicgICAgICgxLCAxMCkgKDEsIDE3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMTgpICgxLCAxOSkKKyAgICBTVFJJTkcgICAgICdSYiJhYmMiJyAgICAgKDEsIDIwKSAoMSwgMjcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAyOCkgKDEsIDI5KQorICAgIFNUUklORyAgICAgJ1JCImFiYyInICAgICAoMSwgMzApICgxLCAzNykKKwogT3BlcmF0b3JzCiAKICAgICA+Pj4gZHVtcF90b2tlbnMoImRlZiBkMjIoYSwgYiwgYz0yLCBkPTIsICprKTogcGFzcyIpCkBAIC01NjMsMTUgKzYyMSwyOCBAQAogICAgIE5BTUUgICAgICAgJ2dyw7xuJyAgICAgICAgKDIsIDApICgyLCA0KQogICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMiwgNSkgKDIsIDYpCiAgICAgU1RSSU5HICAgICAiJ2dyZWVuJyIgICAgICgyLCA3KSAoMiwgMTQpCisKK0xlZ2FjeSB1bmljb2RlIGxpdGVyYWxzOgorCisgICAgPj4+IGR1bXBfdG9rZW5zKCLDlnJ0ZXIgPSB1J3BsYWNlcydcXG5ncsO8biA9IFUnZ3JlZW4nIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ8OWcnRlcicgICAgICAgKDEsIDApICgxLCA1KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgNikgKDEsIDcpCisgICAgU1RSSU5HICAgICAidSdwbGFjZXMnIiAgICgxLCA4KSAoMSwgMTcpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgMTcpICgxLCAxOCkKKyAgICBOQU1FICAgICAgICdncsO8bicgICAgICAgICgyLCAwKSAoMiwgNCkKKyAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDIsIDUpICgyLCA2KQorICAgIFNUUklORyAgICAgIlUnZ3JlZW4nIiAgICAoMiwgNykgKDIsIDE1KQogIiIiCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0b2tlbml6ZSBpbXBvcnQgKHRva2VuaXplLCBfdG9rZW5pemUsIHVudG9rZW5pemUsIE5VTUJFUiwgTkFNRSwgT1AsCi0gICAgICAgICAgICAgICAgICAgICBTVFJJTkcsIEVORE1BUktFUiwgdG9rX25hbWUsIGRldGVjdF9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgIFNUUklORywgRU5ETUFSS0VSLCBFTkNPRElORywgdG9rX25hbWUsIGRldGVjdF9lbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgIG9wZW4gYXMgdG9rZW5pemVfb3BlbikKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCiBpbXBvcnQgb3MsIHN5cywgZ2xvYgoraW1wb3J0IHRva2VuCiAKIGRlZiBkdW1wX3Rva2VucyhzKToKICAgICAiIiJQcmludCBvdXQgdGhlIHRva2VucyBpbiBzIGluIGEgdGFibGUgZm9ybWF0LgpAQCAtNjAwLDcgKzY3MSw3IEBACiAgICAgICAgIGYuY2xvc2UoKQogICAgIHRva2VuczEgPSBbdG9rWzoyXSBmb3IgdG9rIGluIHRva2VuX2xpc3RdCiAgICAgbmV3X2J5dGVzID0gdW50b2tlbml6ZSh0b2tlbnMxKQotICAgIHJlYWRsaW5lID0gKGxpbmUgZm9yIGxpbmUgaW4gbmV3X2J5dGVzLnNwbGl0bGluZXMoMSkpLl9fbmV4dF9fCisgICAgcmVhZGxpbmUgPSAobGluZSBmb3IgbGluZSBpbiBuZXdfYnl0ZXMuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkuX19uZXh0X18KICAgICB0b2tlbnMyID0gW3Rva1s6Ml0gZm9yIHRvayBpbiB0b2tlbml6ZShyZWFkbGluZSldCiAgICAgcmV0dXJuIHRva2VuczEgPT0gdG9rZW5zMgogCkBAIC04OTUsNiArOTY2LDM1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZwLmVuY29kaW5nLCAndXRmLTgtc2lnJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAubW9kZSwgJ3InKQogCisgICAgZGVmIHRlc3RfZmlsZW5hbWVfaW5fZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAjIFdoZW4gcG9zc2libGUsIGluY2x1ZGUgdGhlIGZpbGUgbmFtZSBpbiB0aGUgZXhjZXB0aW9uLgorICAgICAgICBwYXRoID0gJ3NvbWVfZmlsZV9wYXRoJworICAgICAgICBsaW5lcyA9ICgKKyAgICAgICAgICAgIGIncHJpbnQoIlx4ZGYiKScsICMgTGF0aW4tMTogTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKKyAgICAgICAgICAgICkKKyAgICAgICAgY2xhc3MgQnVuazoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lcywgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gcGF0aAorICAgICAgICAgICAgICAgIHNlbGYuX2xpbmVzID0gbGluZXMKKyAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCA9IDAKKworICAgICAgICAgICAgZGVmIHJlYWRsaW5lKHNlbGYpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2luZGV4ID09IGxlbihsaW5lcyk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZXNbc2VsZi5faW5kZXhdCisgICAgICAgICAgICAgICAgc2VsZi5faW5kZXggKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBpbnMgPSBCdW5rKGxpbmVzLCBwYXRoKQorICAgICAgICAgICAgIyBNYWtlIHN1cmUgbGFja2luZyBhIG5hbWUgaXNuJ3QgYW4gaXNzdWUuCisgICAgICAgICAgICBkZWwgaW5zLm5hbWUKKyAgICAgICAgICAgIGRldGVjdF9lbmNvZGluZyhpbnMucmVhZGxpbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJy4qe30nLmZvcm1hdChwYXRoKSk6CisgICAgICAgICAgICBpbnMgPSBCdW5rKGxpbmVzLCBwYXRoKQorICAgICAgICAgICAgZGV0ZWN0X2VuY29kaW5nKGlucy5yZWFkbGluZSkKKworCiBjbGFzcyBUZXN0VG9rZW5pemUoVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdG9rZW5pemUoc2VsZik6CkBAIC05MzYsNiArMTAzNiw3OCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlbmNvZGluZ191c2VkLCBlbmNvZGluZykKIAorICAgIGRlZiBhc3NlcnRFeGFjdFR5cGVFcXVhbChzZWxmLCBvcHN0ciwgKm9wdHlwZXMpOgorICAgICAgICB0b2tlbnMgPSBsaXN0KHRva2VuaXplKEJ5dGVzSU8ob3BzdHIuZW5jb2RlKCd1dGYtOCcpKS5yZWFkbGluZSkpCisgICAgICAgIG51bV9vcHR5cGVzID0gbGVuKG9wdHlwZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRva2VucyksIDIgKyBudW1fb3B0eXBlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b2tlbi50b2tfbmFtZVt0b2tlbnNbMF0uZXhhY3RfdHlwZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udG9rX25hbWVbRU5DT0RJTkddKQorICAgICAgICBmb3IgaSBpbiByYW5nZShudW1fb3B0eXBlcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRva2VuLnRva19uYW1lW3Rva2Vuc1tpICsgMV0uZXhhY3RfdHlwZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnRva19uYW1lW29wdHlwZXNbaV1dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRva2VuLnRva19uYW1lW3Rva2Vuc1sxICsgbnVtX29wdHlwZXNdLmV4YWN0X3R5cGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnRva19uYW1lW3Rva2VuLkVORE1BUktFUl0pCisKKyAgICBkZWYgdGVzdF9leGFjdF90eXBlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcoKScsIHRva2VuLkxQQVIsIHRva2VuLlJQQVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ1tdJywgdG9rZW4uTFNRQiwgdG9rZW4uUlNRQikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnOicsIHRva2VuLkNPTE9OKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcsJywgdG9rZW4uQ09NTUEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzsnLCB0b2tlbi5TRU1JKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcrJywgdG9rZW4uUExVUykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLScsIHRva2VuLk1JTlVTKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcqJywgdG9rZW4uU1RBUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLycsIHRva2VuLlNMQVNIKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCd8JywgdG9rZW4uVkJBUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnJicsIHRva2VuLkFNUEVSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc8JywgdG9rZW4uTEVTUykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPicsIHRva2VuLkdSRUFURVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJz0nLCB0b2tlbi5FUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLicsIHRva2VuLkRPVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnJScsIHRva2VuLlBFUkNFTlQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ3t9JywgdG9rZW4uTEJSQUNFLCB0b2tlbi5SQlJBQ0UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJz09JywgdG9rZW4uRVFFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnIT0nLCB0b2tlbi5OT1RFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPD0nLCB0b2tlbi5MRVNTRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJz49JywgdG9rZW4uR1JFQVRFUkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCd+JywgdG9rZW4uVElMREUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ14nLCB0b2tlbi5DSVJDVU1GTEVYKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc8PCcsIHRva2VuLkxFRlRTSElGVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPj4nLCB0b2tlbi5SSUdIVFNISUZUKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcqKicsIHRva2VuLkRPVUJMRVNUQVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJys9JywgdG9rZW4uUExVU0VRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCctPScsIHRva2VuLk1JTkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcqPScsIHRva2VuLlNUQVJFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLz0nLCB0b2tlbi5TTEFTSEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCclPScsIHRva2VuLlBFUkNFTlRFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnJj0nLCB0b2tlbi5BTVBFUkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCd8PScsIHRva2VuLlZCQVJFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnXj0nLCB0b2tlbi5DSVJDVU1GTEVYRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ149JywgdG9rZW4uQ0lSQ1VNRkxFWEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc8PD0nLCB0b2tlbi5MRUZUU0hJRlRFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPj49JywgdG9rZW4uUklHSFRTSElGVEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcqKj0nLCB0b2tlbi5ET1VCTEVTVEFSRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJy8vJywgdG9rZW4uRE9VQkxFU0xBU0gpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJy8vPScsIHRva2VuLkRPVUJMRVNMQVNIRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ0AnLCB0b2tlbi5BVCkKKworICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdhKioyK2IqKjI9PWMqKjInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUUsIHRva2VuLkRPVUJMRVNUQVIsIE5VTUJFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5QTFVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUUsIHRva2VuLkRPVUJMRVNUQVIsIE5VTUJFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5FUUVRVUFMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUUsIHRva2VuLkRPVUJMRVNUQVIsIE5VTUJFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnezEsIDIsIDN9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5MQlJBQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uTlVNQkVSLCB0b2tlbi5DT01NQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5OVU1CRVIsIHRva2VuLkNPTU1BLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLk5VTUJFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5SQlJBQ0UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ14oeCAmIDB4MSknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLkNJUkNVTUZMRVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uTFBBUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5OQU1FLCB0b2tlbi5BTVBFUiwgdG9rZW4uTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLlJQQVIpCiAKIF9fdGVzdF9fID0geyJkb2N0ZXN0cyIgOiBkb2N0ZXN0cywgJ2RlY2lzdG10JzogZGVjaXN0bXR9CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzLnB5CmluZGV4IGNmZTEzYWMuLjdhMjUwNjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy5weQpAQCAtNiw4ICs2LDkgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTgsOCArMTksOCBAQAogICAgICMgYW5kIHJ1biB0aGUgdGVzdHMgaW4gdGhhdCBjYXNlIHRvbz8KICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgndGVzdCBpcnJlbGV2YW50IGZvciBhbiBpbnN0YWxsZWQgUHl0aG9uJykKIAotc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdwcm9qZWN0YmFzZScpCi1iYXNlcGF0aCA9IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgc3JjZGlyLCAnVG9vbHMnKQorYmFzZXBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAnVG9vbHMnKQogc2NyaXB0c2RpciA9IG9zLnBhdGguam9pbihiYXNlcGF0aCwgJ3NjcmlwdHMnKQogCiAKQEAgLTQwLDcgKzQxLDcgQEAKICAgICAjIGFkZGVkIGZvciBhIHNjcmlwdCBpdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHdoaXRlbGlzdCBiZWxvdy4KIAogICAgICMgc2NyaXB0cyB0aGF0IGhhdmUgaW5kZXBlbmRlbnQgdGVzdHMuCi0gICAgd2hpdGVsaXN0ID0gWydyZWluZGVudC5weSddCisgICAgd2hpdGVsaXN0ID0gWydyZWluZGVudC5weScsICdwZGVwcy5weScsICdncHJvZjJodG1sJ10KICAgICAjIHNjcmlwdHMgdGhhdCBjYW4ndCBiZSBpbXBvcnRlZCB3aXRob3V0IHJ1bm5pbmcKICAgICBibGFja2xpc3QgPSBbJ21ha2VfY3R5cGUucHknXQogICAgICMgc2NyaXB0cyB0aGF0IHVzZSB3aW5kb3dzLW9ubHkgbW9kdWxlcwpAQCAtNzksNyArODAsOCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNjcmlwdHNkaXIsICdwZGVwcy5weScpCi0gICAgICAgIHNlbGYucGRlcHMgPSBpbXAubG9hZF9zb3VyY2UoJ3BkZXBzJywgcGF0aCkKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdwZGVwcycsIHBhdGgpCisgICAgICAgIHNlbGYucGRlcHMgPSBsb2FkZXIubG9hZF9tb2R1bGUoKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3Moc2VsZik6CkBAIC05OSw2ICsxMDEsMzUgQEAKICAgICAgICAgc2VsZi5wZGVwcy5pbnZlcnNlKHsnYSc6IFtdfSkKIAogCitjbGFzcyBHcHJvZjJodG1sVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNjcmlwdHNkaXIsICdncHJvZjJodG1sLnB5JykKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdncHJvZjJodG1sJywgcGF0aCkKKyAgICAgICAgc2VsZi5ncHJvZiA9IGxvYWRlci5sb2FkX21vZHVsZSgpCisgICAgICAgIG9sZGFyZ3YgPSBzeXMuYXJndgorICAgICAgICBkZWYgZml4dXAoKToKKyAgICAgICAgICAgIHN5cy5hcmd2ID0gb2xkYXJndgorICAgICAgICBzZWxmLmFkZENsZWFudXAoZml4dXApCisgICAgICAgIHN5cy5hcmd2ID0gW10KKworICAgIGRlZiB0ZXN0X2dwcm9mKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxNDUwODogdGhpcyB1c2VkIHRvIGZhaWwgd2l0aCBhbiBOYW1lRXJyb3IuCisgICAgICAgIHdpdGggbW9jay5wYXRjaC5vYmplY3Qoc2VsZi5ncHJvZiwgJ3dlYmJyb3dzZXInKSBhcyB3bW9jaywgXAorICAgICAgICAgICAgICAgIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRtcGRpcjoKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2FiYycpCisgICAgICAgICAgICBvcGVuKGZuLCAndycpLmNsb3NlKCkKKyAgICAgICAgICAgIHN5cy5hcmd2ID0gWydncHJvZjJodG1sJywgZm5dCisgICAgICAgICAgICBzZWxmLmdwcm9mLm1haW4oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUod21vY2sub3Blbi5jYWxsZWQpCisKKworIyBSdW4gdGhlIHRlc3RzIGluIFRvb2xzL3BhcnNlci90ZXN0X3VucGFyc2UucHkKK3dpdGggc3VwcG9ydC5EaXJzT25TeXNQYXRoKG9zLnBhdGguam9pbihiYXNlcGF0aCwgJ3BhcnNlcicpKToKKyAgICBmcm9tIHRlc3RfdW5wYXJzZSBpbXBvcnQgVW5wYXJzZVRlc3RDYXNlCisgICAgZnJvbSB0ZXN0X3VucGFyc2UgaW1wb3J0IERpcmVjdG9yeVRlc3RDYXNlCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCpbb2JqIGZvciBvYmogaW4gZ2xvYmFscygpLnZhbHVlcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CmluZGV4IDQ2MWQxZDguLmFjM2ExYTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQpAQCAtMTAyLDYgKzEwMiw3IEBACiBjbGFzcyBUZXN0TGluZUNvdW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiV2hpdGUtYm94IHRlc3Rpbmcgb2YgbGluZS1jb3VudGluZywgdmlhIHJ1bmZ1bmMiIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzZWxmLnRyYWNlciA9IFRyYWNlKGNvdW50PTEsIHRyYWNlPTAsIGNvdW50ZnVuY3M9MCwgY291bnRjYWxsZXJzPTApCiAgICAgICAgIHNlbGYubXlfcHlfZmlsZW5hbWUgPSBmaXhfZXh0X3B5KF9fZmlsZV9fKQogCkBAIC0xOTIsNiArMTkzLDcgQEAKICAgICAiIiJBIHNpbXBsZSBzYW5pdHkgdGVzdCBvZiBsaW5lLWNvdW50aW5nLCB2aWEgcnVuY3R4IChleGVjKSIiIgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5teV9weV9maWxlbmFtZSA9IGZpeF9leHRfcHkoX19maWxlX18pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogCiAgICAgZGVmIHRlc3RfZXhlY19jb3VudHMoc2VsZik6CiAgICAgICAgIHNlbGYudHJhY2VyID0gVHJhY2UoY291bnQ9MSwgdHJhY2U9MCwgY291bnRmdW5jcz0wLCBjb3VudGNhbGxlcnM9MCkKQEAgLTIxOCw2ICsyMjAsNyBAQAogY2xhc3MgVGVzdEZ1bmNzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJXaGl0ZS1ib3ggdGVzdGluZyBvZiBmdW5jcyB0cmFjaW5nIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0wLCB0cmFjZT0wLCBjb3VudGZ1bmNzPTEpCiAgICAgICAgIHNlbGYuZmlsZW1vZCA9IG15X2ZpbGVfYW5kX21vZG5hbWUoKQogCkBAIC0yNDIsNiArMjQ1LDggQEAKICAgICAgICAgfQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHJhY2VyLnJlc3VsdHMoKS5jYWxsZWRmdW5jcywgZXhwZWN0ZWQpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAncHJlLWV4aXN0aW5nIHRyYWNlIGZ1bmN0aW9uIHRocm93cyBvZmYgbWVhc3VyZW1lbnRzJykKICAgICBkZWYgdGVzdF9pbnN0X21ldGhvZF9jYWxsaW5nKHNlbGYpOgogICAgICAgICBvYmogPSBUcmFjZWRDbGFzcygyMCkKICAgICAgICAgc2VsZi50cmFjZXIucnVuZnVuYyhvYmouaW5zdF9tZXRob2RfY2FsbGluZywgMSkKQEAgLTI1Nyw5ICsyNjIsMTIgQEAKIGNsYXNzIFRlc3RDYWxsZXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJXaGl0ZS1ib3ggdGVzdGluZyBvZiBjYWxsZXJzIHRyYWNpbmciIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzZWxmLnRyYWNlciA9IFRyYWNlKGNvdW50PTAsIHRyYWNlPTAsIGNvdW50Y2FsbGVycz0xKQogICAgICAgICBzZWxmLmZpbGVtb2QgPSBteV9maWxlX2FuZF9tb2RuYW1lKCkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICdwcmUtZXhpc3RpbmcgdHJhY2UgZnVuY3Rpb24gdGhyb3dzIG9mZiBtZWFzdXJlbWVudHMnKQogICAgIGRlZiB0ZXN0X2xvb3BfY2FsbGVyX2ltcG9ydGluZyhzZWxmKToKICAgICAgICAgc2VsZi50cmFjZXIucnVuZnVuYyh0cmFjZWRfZnVuY19pbXBvcnRpbmdfY2FsbGVyLCAxKQogCkBAIC0yODAsNiArMjg4LDkgQEAKIAogIyBDcmVhdGVkIHNlcGFyYXRlbHkgZm9yIGlzc3VlICMzODIxCiBjbGFzcyBUZXN0Q292ZXJhZ2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHJtdHJlZShURVNURk4pCiAgICAgICAgIHVubGluayhURVNURk4pCkBAIC0zMDUsMTMgKzMxNiwxMyBAQAogICAgICAgICAjIElnbm9yZSBhbGwgZmlsZXMsIG5vdGhpbmcgc2hvdWxkIGJlIHRyYWNlZCBub3IgcHJpbnRlZAogICAgICAgICBsaWJwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmRpcm5hbWUob3MuX19maWxlX18pKQogICAgICAgICAjIHN5cy5wcmVmaXggZG9lcyBub3Qgd29yayB3aGVuIHJ1bm5pbmcgZnJvbSBhIGNoZWNrb3V0Ci0gICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeCwgbGlicGF0aF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCisgICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnBhdGhdLCB0cmFjZT0wLCBjb3VudD0xKQogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIHNlbGYuX2NvdmVyYWdlKHRyYWNlcikKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoVEVTVEZOKToKICAgICAgICAgICAgIGZpbGVzID0gb3MubGlzdGRpcihURVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXMsIFsnX2ltcG9ydGxpYi5jb3ZlciddKSAgIyBJZ25vcmUgX19pbXBvcnRfXwogCiAgICAgZGVmIHRlc3RfaXNzdWU5OTM2KHNlbGYpOgogICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZSh0cmFjZT0wLCBjb3VudD0xKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCA0NzUyZDM3Li41YmNlMmFmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMjQ2LDYgKzI0NiwyMSBAQAogICAgICAgICBzZWxmLmNoZWNrX3plcm9fZGl2KGJsb2Nrc1swXSkKICAgICAgICAgc2VsZi5hc3NlcnRJbignaW5uZXJfcmFpc2UoKSAjIE1hcmtlcicsIGJsb2Nrc1syXSkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHRfc3VwcHJlc3Npb24oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24KKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvciBmcm9tIE5vbmUKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIF86CisgICAgICAgICAgICBlID0gXworICAgICAgICBsaW5lcyA9IHNlbGYuZ2V0X3JlcG9ydChlKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbMF0uc3RhcnRzd2l0aCgnVHJhY2ViYWNrJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1sxXS5zdGFydHN3aXRoKCcgIEZpbGUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignWmVyb0RpdmlzaW9uRXJyb3IgZnJvbSBOb25lJywgbGluZXNbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1szXS5zdGFydHN3aXRoKCdaZXJvRGl2aXNpb25FcnJvcicpKQorCiAgICAgZGVmIHRlc3RfY2F1c2VfYW5kX2NvbnRleHQoc2VsZik6CiAgICAgICAgICMgV2hlbiBib3RoIGEgY2F1c2UgYW5kIGEgY29udGV4dCBhcmUgc2V0LCBvbmx5IHRoZSBjYXVzZSBzaG91bGQgYmUKICAgICAgICAgIyBkaXNwbGF5ZWQgYW5kIHRoZSBjb250ZXh0IHNob3VsZCBiZSBtdXRlZC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkgYi9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5CmluZGV4IDZlOTM0ZmIuLmU0MTcxMWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90dXBsZS5weQpAQCAtMSw2ICsxLDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2VxX3Rlc3RzCiAKIGltcG9ydCBnYworaW1wb3J0IHBpY2tsZQogCiBjbGFzcyBUdXBsZVRlc3Qoc2VxX3Rlc3RzLkNvbW1vblRlc3QpOgogICAgIHR5cGUydGVzdCA9IHR1cGxlCkBAIC0xNjQsNiArMTY1LDM0IEBACiAgICAgICAgIGNoZWNrKDEwKSAgICAgICAjIGNoZWNrIG91ciBjaGVja2luZyBjb2RlCiAgICAgICAgIGNoZWNrKDEwMDAwMDApCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGUoc2VsZik6CisgICAgICAgICMgVXNlcmxpc3QgaXRlcmF0b3JzIGRvbid0IHN1cHBvcnQgcGlja2xpbmcgeWV0IHNpbmNlCisgICAgICAgICMgdGhleSBhcmUgYmFzZWQgb24gZ2VuZXJhdG9ycy4KKyAgICAgICAgZGF0YSA9IHNlbGYudHlwZTJ0ZXN0KFs0LCA1LCA2LCA3XSkKKyAgICAgICAgaXRvcmcgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QoZGF0YSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KGRhdGEpWzE6XSkKKworICAgIGRlZiB0ZXN0X3JldmVyc2VkX3BpY2tsZShzZWxmKToKKyAgICAgICAgZGF0YSA9IHNlbGYudHlwZTJ0ZXN0KFs0LCA1LCA2LCA3XSkKKyAgICAgICAgaXRvcmcgPSByZXZlcnNlZChkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KHJldmVyc2VkKGRhdGEpKSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBuZXh0KGl0KQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QocmV2ZXJzZWQoZGF0YSkpWzE6XSkKKwogICAgIGRlZiB0ZXN0X25vX2NvbWRhdF9mb2xkaW5nKHNlbGYpOgogICAgICAgICAjIElzc3VlIDg4NDc6IEluIHRoZSBQR08gYnVpbGQsIHRoZSBNU1ZDIGxpbmtlcidzIENPTURBVCBmb2xkaW5nCiAgICAgICAgICMgb3B0aW1pemF0aW9uIGNhdXNlcyBmYWlsdXJlcyBpbiBjb2RlIHRoYXQgcmVsaWVzIG9uIGRpc3RpbmN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5IGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQppbmRleCA4YTk4YTAzLi4zMWViZDljIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKQEAgLTEsOSArMSwxMSBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gcGFydCA2LCBidWlsdC1pbiB0eXBlcwogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBydW5fd2l0aF9sb2NhbGUKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cworaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgbG9jYWxlCitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBUeXBlc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTY5LDggKzU3MSw1NzQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHR1cGxlLl9faXRlbXNpemVfXywgMCkKIAogCitjbGFzcyBNYXBwaW5nUHJveHlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbWFwcGluZ3Byb3h5ID0gdHlwZXMuTWFwcGluZ1Byb3h5VHlwZQorCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIHVzZXJkaWN0KGRpY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1hcHBpbmcgPSB7J3gnOiAxLCAneSc6IDJ9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZyksIG1hcHBpbmcpCisgICAgICAgIG1hcHBpbmcgPSB1c2VyZGljdCh4PTEsIHk9MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKSwgbWFwcGluZykKKyAgICAgICAgbWFwcGluZyA9IGNvbGxlY3Rpb25zLkNoYWluTWFwKHsneCc6IDF9LCB7J3knOiAyfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKSwgbWFwcGluZykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubWFwcGluZ3Byb3h5LCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm1hcHBpbmdwcm94eSwgKCJhIiwgInR1cGxlIikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5tYXBwaW5ncHJveHksIFsiYSIsICJsaXN0Il0pCisKKyAgICBkZWYgdGVzdF9tZXRob2RzKHNlbGYpOgorICAgICAgICBhdHRycyA9IHNldChkaXIoc2VsZi5tYXBwaW5ncHJveHkoe30pKSkgLSBzZXQoZGlyKG9iamVjdCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRycywgeworICAgICAgICAgICAgICdfX2NvbnRhaW5zX18nLAorICAgICAgICAgICAgICdfX2dldGl0ZW1fXycsCisgICAgICAgICAgICAgJ19faXRlcl9fJywKKyAgICAgICAgICAgICAnX19sZW5fXycsCisgICAgICAgICAgICAgJ2NvcHknLAorICAgICAgICAgICAgICdnZXQnLAorICAgICAgICAgICAgICdpdGVtcycsCisgICAgICAgICAgICAgJ2tleXMnLAorICAgICAgICAgICAgICd2YWx1ZXMnLAorICAgICAgICB9KQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkoeydhJzogJ0EnLCAnYic6ICdCJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1snYSddLCAnQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1snYiddLCAnQicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCB2aWV3Ll9fZ2V0aXRlbV9fLCAneHh4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgnYScpLCAnQScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHZpZXcuZ2V0KCd4eHgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneHh4JywgNDIpLCA0MikKKworICAgIGRlZiB0ZXN0X21pc3Npbmcoc2VsZik6CisgICAgICAgIGNsYXNzIGRpY3RtaXNzaW5nKGRpY3QpOgorICAgICAgICAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAgcmV0dXJuICJtaXNzaW5nPSVzIiAlIGtleQorCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkaWN0bWlzc2luZyh4PTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ3gnXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3Wyd5J10sICdtaXNzaW5nPXknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd4JyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3knKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneScsIDQyKSwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgneCcgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgneScgaW4gdmlldykKKworICAgIGRlZiB0ZXN0X2N1c3RvbWRpY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIGN1c3RvbWRpY3QoZGljdCk6CisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAgaWYga2V5ID09ICdtYWdpYyc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpY3QuX19jb250YWluc19fKHNlbGYsIGtleSkKKworICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKCgnaXRlcicsKSkKKworICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDUwMAorCisgICAgICAgICAgICBkZWYgY29weShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2NvcHknCisKKyAgICAgICAgICAgIGRlZiBrZXlzKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAna2V5cycKKworICAgICAgICAgICAgZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnaXRlbXMnCisKKyAgICAgICAgICAgIGRlZiB2YWx1ZXMoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICd2YWx1ZXMnCisKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICAgICAgICAgIHJldHVybiAiZ2V0aXRlbT0lcyIgJSBkaWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSkKKworICAgICAgICAgICAgZGVmIGdldChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuICJnZXQ9JXMiICUgZGljdC5nZXQoc2VsZiwga2V5LCAnZGVmYXVsdD0lcicgJSBkZWZhdWx0KQorCisgICAgICAgIGN1c3RvbSA9IGN1c3RvbWRpY3QoeydrZXknOiAndmFsdWUnfSkKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KGN1c3RvbSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdrZXknIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbWFnaWMnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3h4eCcgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3WydrZXknXSwgJ2dldGl0ZW09dmFsdWUnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgdmlldy5fX2dldGl0ZW1fXywgJ3h4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUodmlldyksICgnaXRlcicsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odmlldyksIDUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmNvcHkoKSwgJ2NvcHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCdrZXknKSwgJ2dldD12YWx1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3h4eCcpLCAnZ2V0PWRlZmF1bHQ9Tm9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5pdGVtcygpLCAnaXRlbXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcua2V5cygpLCAna2V5cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy52YWx1ZXMoKSwgJ3ZhbHVlcycpCisKKyAgICBkZWYgdGVzdF9jaGFpbm1hcChzZWxmKToKKyAgICAgICAgZDEgPSB7J3gnOiAxfQorICAgICAgICBkMiA9IHsneSc6IDJ9CisgICAgICAgIG1hcHBpbmcgPSBjb2xsZWN0aW9ucy5DaGFpbk1hcChkMSwgZDIpCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3gnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgneScgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgneicgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3Wyd4J10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sneSddLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgdmlldy5fX2dldGl0ZW1fXywgJ3onKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHNvcnRlZCh2aWV3KSksICgneCcsICd5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZpZXcpLCAyKQorICAgICAgICBjb3B5ID0gdmlldy5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChjb3B5LCBtYXBwaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY29weSwgY29sbGVjdGlvbnMuQ2hhaW5NYXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29weSwgbWFwcGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneCcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd5JyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHZpZXcuZ2V0KCd6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoc29ydGVkKHZpZXcuaXRlbXMoKSkpLCAoKCd4JywgMSksICgneScsIDIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShzb3J0ZWQodmlldy5rZXlzKCkpKSwgKCd4JywgJ3knKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShzb3J0ZWQodmlldy52YWx1ZXMoKSkpLCAoMSwgMikpCisKKyAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KGRpY3QuZnJvbWtleXMoJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2EnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYicgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdjJyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd4eHgnIGluIHZpZXcpCisKKyAgICBkZWYgdGVzdF92aWV3cyhzZWxmKToKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKQorICAgICAgICBrZXlzID0gdmlldy5rZXlzKCkKKyAgICAgICAgdmFsdWVzID0gdmlldy52YWx1ZXMoKQorICAgICAgICBpdGVtcyA9IHZpZXcuaXRlbXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoa2V5cyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodmFsdWVzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVtcyksIFtdKQorICAgICAgICBtYXBwaW5nWydrZXknXSA9ICd2YWx1ZScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGtleXMpLCBbJ2tleSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodmFsdWVzKSwgWyd2YWx1ZSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlbXMpLCBbKCdrZXknLCAndmFsdWUnKV0pCisKKyAgICBkZWYgdGVzdF9sZW4oc2VsZik6CisgICAgICAgIGZvciBleHBlY3RlZCBpbiByYW5nZSg2KToKKyAgICAgICAgICAgIGRhdGEgPSBkaWN0LmZyb21rZXlzKCdhYmNkZSdbOmV4cGVjdGVkXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkYXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odmlldyksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfaXRlcmF0b3JzKHNlbGYpOgorICAgICAgICBrZXlzID0gKCd4JywgJ3knKQorICAgICAgICB2YWx1ZXMgPSAoMSwgMikKKyAgICAgICAgaXRlbXMgPSB0dXBsZSh6aXAoa2V5cywgdmFsdWVzKSkKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KGRpY3QoaXRlbXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh2aWV3KSwgc2V0KGtleXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh2aWV3LmtleXMoKSksIHNldChrZXlzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldy52YWx1ZXMoKSksIHNldCh2YWx1ZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh2aWV3Lml0ZW1zKCkpLCBzZXQoaXRlbXMpKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSB7J2tleTEnOiAyNywgJ2tleTInOiA1MSwgJ2tleTMnOiA5M30KKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KG9yaWdpbmFsKQorICAgICAgICBjb3B5ID0gdmlldy5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNvcHkpLCBkaWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHksIG9yaWdpbmFsKQorICAgICAgICBvcmlnaW5hbFsna2V5MSddID0gNzAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3WydrZXkxJ10sIDcwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlbJ2tleTEnXSwgMjcpCisKKworY2xhc3MgQ2xhc3NDcmVhdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIGRlZiBfX2luaXRfXyhjbHMsIG5hbWUsIGJhc2VzLCBucywgKiprdyk6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBucykKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMsICoqa3cpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYgX19wcmVwYXJlX18obWNscywgbmFtZSwgYmFzZXMsICoqa3cpOgorICAgICAgICAgICAgbnMgPSBzdXBlcigpLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzKQorICAgICAgICAgICAgbnNbInkiXSA9IDEKKyAgICAgICAgICAgIG5zLnVwZGF0ZShrdykKKyAgICAgICAgICAgIHJldHVybiBucworCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX25hbWVfXywgIkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19iYXNlc19fLCAob2JqZWN0LCkpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3Nfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiLCAoaW50LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIGludCkpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3NfbWV0YShzZWxmKToKKyAgICAgICAgTWV0YSA9IHNlbGYuTWV0YQorICAgICAgICBzZXR0aW5ncyA9IHsibWV0YWNsYXNzIjogTWV0YSwgInoiOiAyfQorICAgICAgICAjIFdlIGRvIHRoaXMgdHdpY2UgdG8gbWFrZSBzdXJlIHRoZSBwYXNzZWQgaW4gZGljdCBpc24ndCBtdXRhdGVkCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIgKyBzdHIoaSksICgpLCBzZXR0aW5ncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDLCBNZXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueiwgMikKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19leGVjX2JvZHkoc2VsZik6CisgICAgICAgIE1ldGEgPSBzZWxmLk1ldGEKKyAgICAgICAgZGVmIGZ1bmMobnMpOgorICAgICAgICAgICAgbnNbIngiXSA9IDAKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsICgpLCB7Im1ldGFjbGFzcyI6IE1ldGEsICJ6IjogMn0sIGZ1bmMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDLCBNZXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy56LCAyKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX2V4ZWNfYm9keShzZWxmKToKKyAgICAgICAgI1Rlc3QgdGhhdCBrZXl3b3JkcyBhcmUgcGFzc2VkIHRvIHRoZSBtZXRhY2xhc3M6CisgICAgICAgIGRlZiBtZXRhX2Z1bmMobmFtZSwgYmFzZXMsIG5zLCAqKmt3KToKKyAgICAgICAgICAgIHJldHVybiBuYW1lLCBiYXNlcywgbnMsIGt3CisgICAgICAgIHJlcyA9IHR5cGVzLm5ld19jbGFzcygiWCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50LCBvYmplY3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChtZXRhY2xhc3M9bWV0YV9mdW5jLCB4PTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgKCJYIiwgKGludCwgb2JqZWN0KSwge30sIHsieCI6IDB9KSkKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGRlZmF1bHRzL2tleXdvcmRzOgorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKCksIHt9LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19uYW1lX18sICJDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYmFzZXNfXywgKG9iamVjdCwpKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX21ldGFfd2l0aF9iYXNlKHNlbGYpOgorICAgICAgICBNZXRhID0gc2VsZi5NZXRhCisgICAgICAgIGRlZiBmdW5jKG5zKToKKyAgICAgICAgICAgIG5zWyJ4Il0gPSAwCisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MobmFtZT0iQyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXM9KGludCwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3ZHM9ZGljdChtZXRhY2xhc3M9TWV0YSwgej0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2JvZHk9ZnVuYykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQywgaW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEMsIE1ldGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy54LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnosIDIpCisKKyAgICAjIE1hbnkgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgZGVyaXZlZCBmcm9tIHRlc3RfZGVzY3IucHkKKyAgICBkZWYgdGVzdF9wcmVwYXJlX2NsYXNzKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3Qgb2YgbWV0YWNsYXNzIGRlcml2YXRpb24KKyAgICAgICAgZXhwZWN0ZWRfbnMgPSB7fQorICAgICAgICBjbGFzcyBBKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZS5fX25ld19fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKCphcmdzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRfbnMKKworICAgICAgICBCID0gdHlwZXMubmV3X2NsYXNzKCJCIiwgKG9iamVjdCwpKQorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKG9iamVjdCwpLCB7Im1ldGFjbGFzcyI6IEF9KQorCisgICAgICAgICMgVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3Mgb2YgRCBpcyBBIHJhdGhlciB0aGFuIHR5cGUuCisgICAgICAgIG1ldGEsIG5zLCBrd2RzID0gdHlwZXMucHJlcGFyZV9jbGFzcygiRCIsIChCLCBDKSwgeyJtZXRhY2xhc3MiOiB0eXBlfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtZXRhLCBBKQorICAgICAgICBzZWxmLmFzc2VydElzKG5zLCBleHBlY3RlZF9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oa3dkcyksIDApCisKKyAgICBkZWYgdGVzdF9tZXRhY2xhc3NfZGVyaXZhdGlvbihzZWxmKToKKyAgICAgICAgIyBpc3N1ZTEyOTQyMzI6IGNvcnJlY3QgbWV0YWNsYXNzIGNhbGN1bGF0aW9uCisgICAgICAgIG5ld19jYWxscyA9IFtdICAjIHRvIGNoZWNrIHRoZSBvcmRlciBvZiBfX25ld19fIGNhbGxzCisgICAgICAgIGNsYXNzIEFNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKToKKyAgICAgICAgICAgICAgICBuZXdfY2FsbHMuYXBwZW5kKCdBTWV0YScpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHt9CisKKyAgICAgICAgY2xhc3MgQk1ldGEoQU1ldGEpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKToKKyAgICAgICAgICAgICAgICBuZXdfY2FsbHMuYXBwZW5kKCdCTWV0YScpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgbnMgPSBzdXBlcigpLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzKQorICAgICAgICAgICAgICAgIG5zWydCTWV0YV93YXNfaGVyZSddID0gVHJ1ZQorICAgICAgICAgICAgICAgIHJldHVybiBucworCisgICAgICAgIEEgPSB0eXBlcy5uZXdfY2xhc3MoIkEiLCAoKSwgeyJtZXRhY2xhc3MiOiBBTWV0YX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQiA9IHR5cGVzLm5ld19jbGFzcygiQiIsICgpLCB7Im1ldGFjbGFzcyI6IEJNZXRhfSkKKyAgICAgICAgIyBCTWV0YS5fX25ld19fIGNhbGxzIEFNZXRhLl9fbmV3X18gd2l0aCBzdXBlcjoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKEEsIEIpKQorICAgICAgICAjIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIEJNZXRhOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTWV0YScsICdBTWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorICAgICAgICAjIEJNZXRhLl9fcHJlcGFyZV9fIHNob3VsZCd2ZSBiZWVuIGNhbGxlZDoKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBDLl9fZGljdF9fKQorCisgICAgICAgICMgVGhlIG9yZGVyIG9mIHRoZSBiYXNlcyBzaG91bGRuJ3QgbWF0dGVyOgorICAgICAgICBDMiA9IHR5cGVzLm5ld19jbGFzcygiQzIiLCAoQiwgQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQzIuX19kaWN0X18pCisKKyAgICAgICAgIyBDaGVjayBjb3JyZWN0IG1ldGFjbGFzcyBjYWxjdWxhdGlvbiB3aGVuIGEgbWV0YWNsYXNzIGlzIGRlY2xhcmVkOgorICAgICAgICBEID0gdHlwZXMubmV3X2NsYXNzKCJEIiwgKEMsKSwgeyJtZXRhY2xhc3MiOiB0eXBlfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBELl9fZGljdF9fKQorCisgICAgICAgIEUgPSB0eXBlcy5uZXdfY2xhc3MoIkUiLCAoQywpLCB7Im1ldGFjbGFzcyI6IEFNZXRhfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBFLl9fZGljdF9fKQorCisgICAgZGVmIHRlc3RfbWV0YWNsYXNzX292ZXJyaWRlX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICAjIFNwZWNpYWwgY2FzZTogdGhlIGdpdmVuIG1ldGFjbGFzcyBpc24ndCBhIGNsYXNzLAorICAgICAgICAjIHNvIHRoZXJlIGlzIG5vIG1ldGFjbGFzcyBjYWxjdWxhdGlvbi4KKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9c2VsZi5NZXRhKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtYXJrZXIgPSBvYmplY3QoKQorICAgICAgICBkZWYgZnVuYygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIG1hcmtlcgorCisgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoKSwgeyJtZXRhY2xhc3MiOiBmdW5jfSkKKyAgICAgICAgWSA9IHR5cGVzLm5ld19jbGFzcygiWSIsIChvYmplY3QsKSwgeyJtZXRhY2xhc3MiOiBmdW5jfSkKKyAgICAgICAgWiA9IHR5cGVzLm5ld19jbGFzcygiWiIsIChBLCksIHsibWV0YWNsYXNzIjogZnVuY30pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWFya2VyLCBYKQorICAgICAgICBzZWxmLmFzc2VydElzKG1hcmtlciwgWSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYXJrZXIsIFopCisKKyAgICBkZWYgdGVzdF9tZXRhY2xhc3Nfb3ZlcnJpZGVfY2FsbGFibGUoc2VsZik6CisgICAgICAgICMgVGhlIGdpdmVuIG1ldGFjbGFzcyBpcyBhIGNsYXNzLAorICAgICAgICAjIGJ1dCBub3QgYSBkZXNjZW5kYW50IG9mIHR5cGUuCisgICAgICAgIG5ld19jYWxscyA9IFtdICAjIHRvIGNoZWNrIHRoZSBvcmRlciBvZiBfX25ld19fIGNhbGxzCisgICAgICAgIHByZXBhcmVfY2FsbHMgPSBbXSAgIyB0byB0cmFjayBfX3ByZXBhcmVfXyBjYWxscworICAgICAgICBjbGFzcyBBTm90TWV0YToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQU5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscykKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1jbHMsIG5hbWUsIGJhc2VzKToKKyAgICAgICAgICAgICAgICBwcmVwYXJlX2NhbGxzLmFwcGVuZCgnQU5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiB7fQorCisgICAgICAgIGNsYXNzIEJOb3RNZXRhKEFOb3RNZXRhKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQk5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscykKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1jbHMsIG5hbWUsIGJhc2VzKToKKyAgICAgICAgICAgICAgICBwcmVwYXJlX2NhbGxzLmFwcGVuZCgnQk5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzKQorCisgICAgICAgIEEgPSB0eXBlcy5uZXdfY2xhc3MoIkEiLCAoKSwgeyJtZXRhY2xhc3MiOiBBTm90TWV0YX0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQU5vdE1ldGEsIHR5cGUoQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBCID0gdHlwZXMubmV3X2NsYXNzKCJCIiwgKCksIHsibWV0YWNsYXNzIjogQk5vdE1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsIChBLCBCKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEMyID0gdHlwZXMubmV3X2NsYXNzKCJDMiIsIChCLCBBKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICAjIFRoaXMgaXMgYSBUeXBlRXJyb3IsIGJlY2F1c2Ugb2YgYSBtZXRhY2xhc3MgY29uZmxpY3Q6CisgICAgICAgICMgQk5vdE1ldGEgaXMgbmVpdGhlciBhIHN1YmNsYXNzLCBub3IgYSBzdXBlcmNsYXNzIG9mIHR5cGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgRCA9IHR5cGVzLm5ld19jbGFzcygiRCIsIChDLCksIHsibWV0YWNsYXNzIjogdHlwZX0pCisKKyAgICAgICAgRSA9IHR5cGVzLm5ld19jbGFzcygiRSIsIChDLCksIHsibWV0YWNsYXNzIjogQU5vdE1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgRiA9IHR5cGVzLm5ld19jbGFzcygiRiIsIChvYmplY3QoKSwgQykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoRikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBGMiA9IHR5cGVzLm5ld19jbGFzcygiRjIiLCAoQywgb2JqZWN0KCkpKQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgICMgVHlwZUVycm9yOiBCTm90TWV0YSBpcyBuZWl0aGVyIGEKKyAgICAgICAgIyBzdWJjbGFzcywgbm9yIGEgc3VwZXJjbGFzcyBvZiBpbnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgWCA9IHR5cGVzLm5ld19jbGFzcygiWCIsIChDLCBpbnQoKSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoaW50KCksIEMpKQorCisKK2NsYXNzIFNpbXBsZU5hbWVzcGFjZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIpCisgICAgICAgIG5zMyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgqKmRpY3QoeD0xLCB5PTIpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgxLCAyLCAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5zMS5fX2RpY3RfXyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczEpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obnMyLl9fZGljdF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMiksIHsneSc6IDIsICd4JzogMX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5zMy5fX2RpY3RfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczMpLCB7J3knOiAyLCAneCc6IDF9KQorCisgICAgZGVmIHRlc3RfdW5ib3VuZChzZWxmKToKKyAgICAgICAgbnMxID0gdmFycyh0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKSkKKyAgICAgICAgbnMyID0gdmFycyh0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIsIHsneSc6IDIsICd4JzogMX0pCisKKyAgICBkZWYgdGVzdF91bmRlcmx5aW5nX2RpY3Qoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEsIHk9MikKKyAgICAgICAgbnMzID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKGE9VHJ1ZSwgYj1GYWxzZSkKKyAgICAgICAgbWFwcGluZyA9IG5zMy5fX2RpY3RfXworICAgICAgICBkZWwgbnMzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuX19kaWN0X18sIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMi5fX2RpY3RfXywgeyd5JzogMiwgJ3gnOiAxfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXBwaW5nLCBkaWN0KGE9VHJ1ZSwgYj1GYWxzZSkpCisKKyAgICBkZWYgdGVzdF9hdHRyZ2V0KHNlbGYpOgorICAgICAgICBucyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEsIHk9Miwgdz0zKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMueCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy55LCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLncsIDMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgbnMuegorCisgICAgZGVmIHRlc3RfYXR0cnNldChzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yLCB3PTMpCisgICAgICAgIG5zMS5hID0gJ3NwYW0nCisgICAgICAgIG5zMS5iID0gJ2hhbScKKyAgICAgICAgbnMyLnogPSA0CisgICAgICAgIG5zMi50aGV0YSA9IE5vbmUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMS5fX2RpY3RfXywgZGljdChhPSdzcGFtJywgYj0naGFtJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLl9fZGljdF9fLCBkaWN0KHg9MSwgeT0yLCB3PTMsIHo9NCwgdGhldGE9Tm9uZSkpCisKKyAgICBkZWYgdGVzdF9hdHRyZGVsKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIsIHc9MykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGRlbCBuczEuc3BhbQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGRlbCBuczIuc3BhbQorCisgICAgICAgIGRlbCBuczIueQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdCh3PTMsIHg9MSkpCisgICAgICAgIG5zMi55ID0gJ3NwYW0nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczIpLCBkaWN0KHc9MywgeD0xLCB5PSdzcGFtJykpCisgICAgICAgIGRlbCBuczIueQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdCh3PTMsIHg9MSkpCisKKyAgICAgICAgbnMxLnNwYW0gPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczEpLCBkaWN0KHNwYW09NSkpCisgICAgICAgIGRlbCBuczEuc3BhbQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwge30pCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIsIHc9MykKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyLnggPSAic3BhbSIKKyAgICAgICAgbnMyLl95ID0gNQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczEpLCAibmFtZXNwYWNlKHc9MywgeD0xLCB5PTIpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG5zMiksICJuYW1lc3BhY2UoX3k9NSwgeD0nc3BhbScpIikKKworICAgIGRlZiB0ZXN0X25lc3RlZChzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKGE9MSwgYj0yKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD1uczEpCisgICAgICAgIG5zMi5zcGFtID0gbnMxCisgICAgICAgIG5zMi5oYW0gPSAnPycKKyAgICAgICAgbnMyLnNwYW0gPSBuczMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwgZGljdChhPTEsIGI9MikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczIpLCBkaWN0KHNwYW09bnMzLCBoYW09Jz8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIuc3BhbSwgbnMzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMzKSwgZGljdCh4PW5zMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMzLnguYSwgMSkKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZShzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKGM9J2Nvb2tpZScpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEpCisgICAgICAgIG5zMS5zcGFtID0gbnMxCisgICAgICAgIG5zMi5zcGFtID0gbnMzCisgICAgICAgIG5zMy5zcGFtID0gbnMyCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuc3BhbSwgbnMxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMS5zcGFtLnNwYW0sIG5zMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuc3BhbS5zcGFtLCBuczEuc3BhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIuc3BhbSwgbnMzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMy5zcGFtLCBuczIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLnNwYW0uc3BhbSwgbnMyKQorCisgICAgZGVmIHRlc3RfcmVjdXJzaXZlX3JlcHIoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShjPSdjb29raWUnKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xKQorICAgICAgICBuczEuc3BhbSA9IG5zMQorICAgICAgICBuczIuc3BhbSA9IG5zMworICAgICAgICBuczMuc3BhbSA9IG5zMgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lc3BhY2UoYz0nY29va2llJywgc3BhbT1uYW1lc3BhY2UoLi4uKSkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZXNwYWNlKHNwYW09bmFtZXNwYWNlKHNwYW09bmFtZXNwYWNlKC4uLiksIHg9MSkpIikKKworICAgIGRlZiB0ZXN0X2FzX2RpY3Qoc2VsZik6CisgICAgICAgIG5zID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHNwYW09J3NwYW1zcGFtc3BhbScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbGVuKG5zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpdGVyKG5zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAnc3BhbScgaW4gbnMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbnNbJ3NwYW0nXQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVHlwZXNUZXN0cykKKyAgICBydW5fdW5pdHRlc3QoVHlwZXNUZXN0cywgTWFwcGluZ1Byb3h5VGVzdHMsIENsYXNzQ3JlYXRpb25UZXN0cywKKyAgICAgICAgICAgICAgICAgU2ltcGxlTmFtZXNwYWNlVGVzdHMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdWNuLnB5IGIvTGliL3Rlc3QvdGVzdF91Y24ucHkKaW5kZXggZmQ2MjBmMC4uNjhhMzIxOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91Y24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91Y24ucHkKQEAgLTgsOCArOCwxMSBAQAogIiIiIyIKIAogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdW5pY29kZWRhdGEKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGh0dHAuY2xpZW50IGltcG9ydCBIVFRQRXhjZXB0aW9uCitmcm9tIHRlc3QudGVzdF9ub3JtYWxpemF0aW9uIGltcG9ydCBjaGVja192ZXJzaW9uCiAKIGNsYXNzIFVuaWNvZGVOYW1lc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01OSw4ICs2Miw2IEBACiAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2FzY2lpX2xldHRlcnMoc2VsZik6Ci0gICAgICAgIGltcG9ydCB1bmljb2RlZGF0YQotCiAgICAgICAgIGZvciBjaGFyIGluICIiLmpvaW4obWFwKGNociwgcmFuZ2Uob3JkKCJhIiksIG9yZCgieiIpKSkpOgogICAgICAgICAgICAgbmFtZSA9ICJMQVRJTiBTTUFMTCBMRVRURVIgJXMiICUgY2hhci51cHBlcigpCiAgICAgICAgICAgICBjb2RlID0gdW5pY29kZWRhdGEubG9va3VwKG5hbWUpCkBAIC04MSw3ICs4Miw2IEBACiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkhBTkdVTCBTWUxMQUJMRSBIV0VPSyIsICJcdWQ2ZjgiKQogICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKCJIQU5HVUwgU1lMTEFCTEUgSElIIiwgIlx1ZDdhMyIpCiAKLSAgICAgICAgaW1wb3J0IHVuaWNvZGVkYXRhCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHVuaWNvZGVkYXRhLm5hbWUsICJcdWQ3YTQiKQogCiAgICAgZGVmIHRlc3RfY2prX3VuaWZpZWRfaWRlb2dyYXBocyhzZWxmKToKQEAgLTk3LDE0ICs5NywxMSBAQAogICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKCJDSksgVU5JRklFRCBJREVPR1JBUEgtMkI4MUQiLCAiXFUwMDAyQjgxRCIpCiAKICAgICBkZWYgdGVzdF9ibXBfY2hhcmFjdGVycyhzZWxmKToKLSAgICAgICAgaW1wb3J0IHVuaWNvZGVkYXRhCi0gICAgICAgIGNvdW50ID0gMAogICAgICAgICBmb3IgY29kZSBpbiByYW5nZSgweDEwMDAwKToKICAgICAgICAgICAgIGNoYXIgPSBjaHIoY29kZSkKICAgICAgICAgICAgIG5hbWUgPSB1bmljb2RlZGF0YS5uYW1lKGNoYXIsIE5vbmUpCiAgICAgICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZWRhdGEubG9va3VwKG5hbWUpLCBjaGFyKQotICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKIAogICAgIGRlZiB0ZXN0X21pc2Nfc3ltYm9scyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja2xldHRlcigiUElMQ1JPVyBTSUdOIiwgIlx1MDBiNiIpCkBAIC0xMTIsOCArMTA5LDg1IEBACiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkhBTEZXSURUSCBLQVRBS0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLIiwgIlx1RkY5RiIpCiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQSIsICJcdUZGNDEiKQogCisgICAgZGVmIHRlc3RfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBhbGlhc2VzIGRlZmluZWQgaW4gdGhlIE5hbWVBbGlhc2VzLnR4dCBmaWxlIHdvcmsuCisgICAgICAgICMgVGhpcyBzaG91bGQgYmUgdXBkYXRlZCB3aGVuIG5ldyBhbGlhc2VzIGFyZSBhZGRlZCBvciB0aGUgZmlsZQorICAgICAgICAjIHNob3VsZCBiZSBkb3dubG9hZGVkIGFuZCBwYXJzZWQgaW5zdGVhZC4gIFNlZSAjMTI3NTMuCisgICAgICAgIGFsaWFzZXMgPSBbCisgICAgICAgICAgICAoJ0xBVElOIENBUElUQUwgTEVUVEVSIEdIQScsIDB4MDFBMiksCisgICAgICAgICAgICAoJ0xBVElOIFNNQUxMIExFVFRFUiBHSEEnLCAweDAxQTMpLAorICAgICAgICAgICAgKCdLQU5OQURBIExFVFRFUiBMTExBJywgMHgwQ0RFKSwKKyAgICAgICAgICAgICgnTEFPIExFVFRFUiBGTyBGT04nLCAweDBFOUQpLAorICAgICAgICAgICAgKCdMQU8gTEVUVEVSIEZPIEZBWScsIDB4MEU5RiksCisgICAgICAgICAgICAoJ0xBTyBMRVRURVIgUk8nLCAweDBFQTMpLAorICAgICAgICAgICAgKCdMQU8gTEVUVEVSIExPJywgMHgwRUE1KSwKKyAgICAgICAgICAgICgnVElCRVRBTiBNQVJLIEJLQS0gU0hPRyBHSSBNR08gUkdZQU4nLCAweDBGRDApLAorICAgICAgICAgICAgKCdZSSBTWUxMQUJMRSBJVEVSQVRJT04gTUFSSycsIDB4QTAxNSksCisgICAgICAgICAgICAoJ1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQnLCAweEZFMTgpLAorICAgICAgICAgICAgKCdCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRlRIT1JBIFNLTElST04gQ0hST01BIFZBU0lTJywgMHgxRDBDNSkKKyAgICAgICAgXQorICAgICAgICBmb3IgYWxpYXMsIGNvZGVwb2ludCBpbiBhbGlhc2VzOgorICAgICAgICAgICAgc2VsZi5jaGVja2xldHRlcihhbGlhcywgY2hyKGNvZGVwb2ludCkpCisgICAgICAgICAgICBuYW1lID0gdW5pY29kZWRhdGEubmFtZShjaHIoY29kZXBvaW50KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmFtZSwgYWxpYXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVkYXRhLmxvb2t1cChhbGlhcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLmxvb2t1cChuYW1lKSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLnVjZF8zXzJfMC5sb29rdXAoYWxpYXMpCisKKyAgICBkZWYgdGVzdF9hbGlhc2VzX25hbWVzX2luX3B1YV9yYW5nZShzZWxmKToKKyAgICAgICAgIyBXZSBhcmUgc3RvcmluZyBhbGlhc2VzIGluIHRoZSBQVUEgMTUsIGJ1dCB0aGVpciBuYW1lcyBzaG91bGRuJ3QgbGVhaworICAgICAgICBmb3IgY3AgaW4gcmFuZ2UoMHhmMDAwMCwgMHhmMDEwMCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLm5hbWUoY2hyKGNwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICdubyBzdWNoIG5hbWUnKQorCisgICAgZGVmIHRlc3RfbmFtZWRfc2VxdWVuY2VzX25hbWVzX2luX3B1YV9yYW5nZShzZWxmKToKKyAgICAgICAgIyBXZSBhcmUgc3RvcmluZyBuYW1lZCBzZXEgaW4gdGhlIFBVQSAxNSwgYnV0IHRoZWlyIG5hbWVzIHNob3VsZG4ndCBsZWFrCisgICAgICAgIGZvciBjcCBpbiByYW5nZSgweGYwMTAwLCAweGYwZmZmKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEubmFtZShjaHIoY3ApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgJ25vIHN1Y2ggbmFtZScpCisKKyAgICBkZWYgdGVzdF9uYW1lZF9zZXF1ZW5jZXNfc2FtcGxlKHNlbGYpOgorICAgICAgICAjIENoZWNrIGEgZmV3IG5hbWVkIHNlcXVlbmNlcy4gIFNlZSAjMTI3NTMuCisgICAgICAgIHNlcXVlbmNlcyA9IFsKKyAgICAgICAgICAgICgnTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBUSUxERScsICdcdTAwNzJcdTAzMDMnKSwKKyAgICAgICAgICAgICgnVEFNSUwgU1lMTEFCTEUgU0FJJywgJ1x1MEJCOFx1MEJDOCcpLAorICAgICAgICAgICAgKCdUQU1JTCBTWUxMQUJMRSBNT08nLCAnXHUwQkFFXHUwQkNCJyksCisgICAgICAgICAgICAoJ1RBTUlMIFNZTExBQkxFIE5OT08nLCAnXHUwQkEzXHUwQkNCJyksCisgICAgICAgICAgICAoJ1RBTUlMIENPTlNPTkFOVCBLU1MnLCAnXHUwQjk1XHUwQkNEXHUwQkI3XHUwQkNEJyksCisgICAgICAgIF0KKyAgICAgICAgZm9yIHNlcW5hbWUsIGNvZGVwb2ludHMgaW4gc2VxdWVuY2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlZGF0YS5sb29rdXAoc2VxbmFtZSksIGNvZGVwb2ludHMpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKHNlcW5hbWUsIE5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgICAgICB1bmljb2RlZGF0YS51Y2RfM18yXzAubG9va3VwKHNlcW5hbWUpCisKKyAgICBkZWYgdGVzdF9uYW1lZF9zZXF1ZW5jZXNfZnVsbChzZWxmKToKKyAgICAgICAgIyBDaGVjayBhbGwgdGhlIG5hbWVkIHNlcXVlbmNlcworICAgICAgICB1cmwgPSAoImh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLyVzL3VjZC9OYW1lZFNlcXVlbmNlcy50eHQiICUKKyAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLnVuaWRhdGFfdmVyc2lvbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdGRhdGEgPSBzdXBwb3J0Lm9wZW5fdXJscmVzb3VyY2UodXJsLCBlbmNvZGluZz0idXRmLTgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2s9Y2hlY2tfdmVyc2lvbikKKyAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBIVFRQRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkNvdWxkIG5vdCByZXRyaWV2ZSAiICsgdXJsKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdGRhdGEuY2xvc2UpCisgICAgICAgIGZvciBsaW5lIGluIHRlc3RkYXRhOgorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgaWYgbm90IGxpbmUgb3IgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlcW5hbWUsIGNvZGVwb2ludHMgPSBsaW5lLnNwbGl0KCc7JykKKyAgICAgICAgICAgIGNvZGVwb2ludHMgPSAnJy5qb2luKGNocihpbnQoY3AsIDE2KSkgZm9yIGNwIGluIGNvZGVwb2ludHMuc3BsaXQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZWRhdGEubG9va3VwKHNlcW5hbWUpLCBjb2RlcG9pbnRzKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5jaGVja2xldHRlcihzZXFuYW1lLCBOb25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEudWNkXzNfMl8wLmxvb2t1cChzZXFuYW1lKQorCiAgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgotICAgICAgICBpbXBvcnQgdW5pY29kZWRhdGEKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB1bmljb2RlZGF0YS5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHVuaWNvZGVkYXRhLm5hbWUsICd4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdW5pY29kZWRhdGEubG9va3VwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CmluZGV4IDE5YjA2YTAuLmIxM2E5MGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKQEAgLTUsMTcgKzUsMTMgQEAKIChjKSBDb3B5cmlnaHQgQ05SSSwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gTk8gV0FSUkFOVFkuCiAKICIiIiMiCitpbXBvcnQgX3N0cmluZwogaW1wb3J0IGNvZGVjcwogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc3RyaW5nX3Rlc3RzCi1pbXBvcnQgX3N0cmluZwotCi0jIGRlY29yYXRvciB0byBza2lwIHRlc3RzIG9uIG5hcnJvdyBidWlsZHMKLXJlcXVpcmVzX3dpZGVfYnVpbGQgPSB1bml0dGVzdC5za2lwSWYoc3lzLm1heHVuaWNvZGUgPT0gNjU1MzUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB3aWRlIGJ1aWxkJykKIAogIyBFcnJvciBoYW5kbGluZyAoYmFkIGRlY29kZXIgcmV0dXJuKQogZGVmIHNlYXJjaF9mdW5jdGlvbihlbmNvZGluZyk6CkBAIC0xNzUsNiArMTcxLDE1IEBACiAKICAgICBkZWYgdGVzdF9maW5kKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuQ29tbW9uVGVzdC50ZXN0X2ZpbmQoc2VsZikKKyAgICAgICAgIyB0ZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIG1lbWNociBmYXN0IHBhdGgKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDEwMCwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDEwMicpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDIwMScpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDEyMCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDIyMCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgxMDAsICdhJyAqIDEwMCArICdcVTAwMTAwMzA0JywgJ2ZpbmQnLCAnXFUwMDEwMDMwNCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1xVMDAxMDAzMDQnLCAnZmluZCcsICdcVTAwMTAwMjA0JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnYScgKiAxMDAgKyAnXFUwMDEwMDMwNCcsICdmaW5kJywgJ1xVMDAxMDIwMDQnKQorICAgICAgICAjIGNoZWNrIG1peGVkIGFyZ3VtZW50IHR5cGVzCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KDAsICAnYWJjZGVmZ2hpYWJjJywgJ2ZpbmQnLCAnYWJjJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoOSwgICdhYmNkZWZnaGlhYmMnLCAnZmluZCcsICdhYmMnLCAxKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCgtMSwgJ2FiY2RlZmdoaWFiYycsICdmaW5kJywgJ2RlZicsIDQpCkBAIC0xODQsNiArMTg5LDE0IEBACiAKICAgICBkZWYgdGVzdF9yZmluZChzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9yZmluZChzZWxmKQorICAgICAgICAjIHRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgbWVtcmNociBmYXN0IHBhdGgKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICdcdTAxMDInICsgJ2EnICogMTAwICwgJ3JmaW5kJywgJ1x1MDEwMicpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ1x1MDEwMicgKyAnYScgKiAxMDAgLCAncmZpbmQnLCAnXHUwMjAxJykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXHUwMTAyJyArICdhJyAqIDEwMCAsICdyZmluZCcsICdcdTAxMjAnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdcdTAxMDInICsgJ2EnICogMTAwICwgJ3JmaW5kJywgJ1x1MDIyMCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnXFUwMDEwMDMwNCcgKyAnYScgKiAxMDAsICdyZmluZCcsICdcVTAwMTAwMzA0JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXFUwMDEwMDMwNCcgKyAnYScgKiAxMDAsICdyZmluZCcsICdcVTAwMTAwMjA0JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXFUwMDEwMDMwNCcgKyAnYScgKiAxMDAsICdyZmluZCcsICdcVTAwMTAyMDA0JykKICAgICAgICAgIyBjaGVjayBtaXhlZCBhcmd1bWVudCB0eXBlcwogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCg5LCAgICdhYmNkZWZnaGlhYmMnLCAncmZpbmQnLCAnYWJjJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoMTIsICAnYWJjZGVmZ2hpYWJjJywgJ3JmaW5kJywgJycpCkBAIC0yODAsNiArMjkzLDEyIEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KCdvbmVAdHdvIXRocmVlIScsICdvbmUhdHdvIXRocmVlIScsICdyZXBsYWNlJywgJyEnLCAnQCcsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgJ3JlcGxhY2UnLnJlcGxhY2UsICJyIiwgNDIpCiAKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9yZXBsYWNlX2lkKHNlbGYpOgorICAgICAgICBwYXR0ZXJuID0gJ2FiYycKKyAgICAgICAgdGV4dCA9ICdhYmMgZGVmJworICAgICAgICBzZWxmLmFzc2VydElzKHRleHQucmVwbGFjZShwYXR0ZXJuLCBwYXR0ZXJuKSwgdGV4dCkKKwogICAgIGRlZiB0ZXN0X2J5dGVzX2NvbXBhcmlzb24oc2VsZik6CiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBCeXRlc1dhcm5pbmcpCkBAIC0zNTAsNiArMzY5LDggQEAKICAgICBkZWYgdGVzdF9pc2xvd2VyKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuTWl4aW5TdHJVbmljb2RlVXNlclN0cmluZ1Rlc3QudGVzdF9pc2xvd2VyKHNlbGYpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KEZhbHNlLCAnXHUxRkZjJywgJ2lzbG93ZXInKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdcdTIxNjcnLmlzbG93ZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdcdTIxNzcnLmlzbG93ZXIoKSkKICAgICAgICAgIyBub24tQk1QLCB1cHBlcmNhc2UKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnXFUwMDAxMDQwMScuaXNsb3dlcigpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdcVTAwMDEwNDI3Jy5pc2xvd2VyKCkpCkBAIC0zNjQsNiArMzg1LDggQEAKICAgICAgICAgc3RyaW5nX3Rlc3RzLk1peGluU3RyVW5pY29kZVVzZXJTdHJpbmdUZXN0LnRlc3RfaXN1cHBlcihzZWxmKQogICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKToKICAgICAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KEZhbHNlLCAnXHUxRkZjJywgJ2lzdXBwZXInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1x1MjE2NycuaXN1cHBlcigpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdcdTIxNzcnLmlzdXBwZXIoKSkKICAgICAgICAgIyBub24tQk1QLCB1cHBlcmNhc2UKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdcVTAwMDEwNDAxJy5pc3VwcGVyKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnXFUwMDAxMDQyNycuaXN1cHBlcigpKQpAQCAtNTIwLDcgKzU0Myw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtZXRoKHMpLCAnJWEuJXMoKSBpcyBGYWxzZScgJSAocywgbWV0aF9uYW1lKSkKIAogCi0gICAgQHJlcXVpcmVzX3dpZGVfYnVpbGQKICAgICBkZWYgdGVzdF9sb3dlcihzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9sb3dlcihzZWxmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwNDI3Jy5sb3dlcigpLCAnXFUwMDAxMDQ0RicpCkBAIC01MzAsOCArNTUyLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTA0NEZcVTAwMDEwNDRGJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0RicubG93ZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAneFxVMDAwMTA0NEZ4XFUwMDAxMDQ0RicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgScubG93ZXIoKSwgJ++sgScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDEzMCcubG93ZXIoKSwgJ1x1MDA2OVx1MDMwNycpCisgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQSBVKzAzQTMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy5sb3dlcigpLCAnXHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMzQ1XHUwM2EzJy5sb3dlcigpLCAnXHUwMzQ1XHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycubG93ZXIoKSwgJ2FcdTAzNDVcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzYScubG93ZXIoKSwgJ2FcdTAzNDVcdTAzYzNhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycubG93ZXIoKSwgJ2FcdTAzNDVcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwM2EzXHUwMzQ1Jy5sb3dlcigpLCAnYVx1MDNjMlx1MDM0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhM1x1MDM0NSAnLmxvd2VyKCksICdcdTAzYzNcdTAzNDUgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDA4ZmZmZScubG93ZXIoKSwgJ1xVMDAwOGZmZmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTIxNzcnLmxvd2VyKCksICdcdTIxNzcnKQogCi0gICAgQHJlcXVpcmVzX3dpZGVfYnVpbGQKKyAgICBkZWYgdGVzdF9jYXNlZm9sZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmNhc2Vmb2xkKCksICdoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hFTGxvJy5jYXNlZm9sZCgpLCAnaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfDnycuY2FzZWZvbGQoKSwgJ3NzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBJy5jYXNlZm9sZCgpLCAnZmknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzYTMnLmNhc2Vmb2xkKCksICdcdTAzYzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzJy5jYXNlZm9sZCgpLCAnYVx1MDNiOVx1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDBiNScuY2FzZWZvbGQoKSwgJ1x1MDNiYycpCisKICAgICBkZWYgdGVzdF91cHBlcihzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF91cHBlcihzZWxmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwNDRGJy51cHBlcigpLCAnXFUwMDAxMDQyNycpCkBAIC01NDEsOCArNTgzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTA0MjdcVTAwMDEwNDI3JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0RicudXBwZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnWFxVMDAwMTA0MjdYXFUwMDAxMDQyNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgScudXBwZXIoKSwgJ0ZJJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMTMwJy51cHBlcigpLCAnXHUwMTMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy51cHBlcigpLCAnXHUwM2EzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnw58nLnVwcGVyKCksICdTUycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MWZkMicudXBwZXIoKSwgJ1x1MDM5OVx1MDMwOFx1MDMwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwOGZmZmUnLnVwcGVyKCksICdcVTAwMDhmZmZlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUyMTc3Jy51cHBlcigpLCAnXHUyMTY3JykKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCiAgICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9jYXBpdGFsaXplKHNlbGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTA0NEYnLmNhcGl0YWxpemUoKSwgJ1xVMDAwMTA0MjcnKQpAQCAtNTU0LDggKzYwMiwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDI3XFUwMDAxMDQ0RicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLmNhcGl0YWxpemUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnWFxVMDAwMTA0NEZ4XFUwMDAxMDQ0RicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hcdTAxMzAnLmNhcGl0YWxpemUoKSwgJ0hcdTAwNjlcdTAzMDcnKQorICAgICAgICBleHAgPSAnXHUwMzk5XHUwMzA4XHUwMzAwXHUwMDY5XHUwMzA3JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTFmZDJcdTAxMzAnLmNhcGl0YWxpemUoKSwgZXhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIFubmlzaCcuY2FwaXRhbGl6ZSgpLCAnRklubmlzaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLmNhcGl0YWxpemUoKSwgJ0FcdTAzNDVcdTAzYzInKQogCi0gICAgQHJlcXVpcmVzX3dpZGVfYnVpbGQKICAgICBkZWYgdGVzdF90aXRsZShzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLk1peGluU3RyVW5pY29kZVVzZXJTdHJpbmdUZXN0LnRlc3RfdGl0bGUoc2VsZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDQ0RicudGl0bGUoKSwgJ1xVMDAwMTA0MjcnKQpAQCAtNTY5LDggKzYyMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDI3XFUwMDAxMDQ0RiBcVTAwMDEwNDI3XFUwMDAxMDQ0RicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYgWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0RicudGl0bGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnWFxVMDAwMTA0NEZ4XFUwMDAxMDQ0RiBYXFUwMDAxMDQ0RnhcVTAwMDEwNDRGJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBTk5JU0gnLnRpdGxlKCksICdGaW5uaXNoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDNhMyBcdTFmYTF4eScudGl0bGUoKSwgJ0FcdTAzYzIgXHUxZmE5eHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwM2EzQScudGl0bGUoKSwgJ0FcdTAzYzNhJykKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCiAgICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3Rfc3dhcGNhc2Uoc2VsZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDQ0Ricuc3dhcGNhc2UoKSwgJ1xVMDAwMTA0MjcnKQpAQCAtNTgzLDYgKzYzNywxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDI3XFUwMDAxMDQ0RicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLnN3YXBjYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3hcVTAwMDEwNDRGWFxVMDAwMTA0MjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIEnLnN3YXBjYXNlKCksICdGSScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDEzMCcuc3dhcGNhc2UoKSwgJ1x1MDA2OVx1MDMwNycpCisgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQSBVKzAzQTMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy5zd2FwY2FzZSgpLCAnXHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMzQ1XHUwM2EzJy5zd2FwY2FzZSgpLCAnXHUwMzk5XHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycuc3dhcGNhc2UoKSwgJ2FcdTAzOTlcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzYScuc3dhcGNhc2UoKSwgJ2FcdTAzOTlcdTAzYzNBJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycuc3dhcGNhc2UoKSwgJ2FcdTAzOTlcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwM2EzXHUwMzQ1Jy5zd2FwY2FzZSgpLCAnYVx1MDNjMlx1MDM5OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhM1x1MDM0NSAnLnN3YXBjYXNlKCksICdcdTAzYzNcdTAzOTkgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy5zd2FwY2FzZSgpLCAnXHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnw58nLnN3YXBjYXNlKCksICdTUycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MWZkMicuc3dhcGNhc2UoKSwgJ1x1MDM5OVx1MDMwOFx1MDMwMCcpCiAKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIFVuaWNvZGUgY29udGFpbnMgbWV0aG9kCkBAIC03NzYsNyArODQzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezAhc30nLmZvcm1hdChHKCdkYXRhJykpLCAnc3RyaW5nIGlzIGRhdGEnKQogCiAgICAgICAgIG1zZyA9ICdvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcgaXMgZGVwcmVjYXRlZCcKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChtc2csIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChtc2csIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezA6XjEwfScuZm9ybWF0KEUoJ2RhdGEnKSksICcgRShkYXRhKSAgJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3swOl4xMHN9Jy5mb3JtYXQoRSgnZGF0YScpKSwgJyBFKGRhdGEpICAnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezA6PjE1c30nLmZvcm1hdChHKCdkYXRhJykpLCAnIHN0cmluZyBpcyBkYXRhJykKQEAgLTg1OCw2ICs5MjUsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAnJywgJyMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsICcnLCAnIzIwJykKIAorICAgICAgICAjIE5vbi1BU0NJSQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ7MDpzfXsxOnN9Ii5mb3JtYXQoIkFCQyIsICJcdTA0MTBcdTA0MTFcdTA0MTIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQUJDXHUwNDEwXHUwNDExXHUwNDEyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiezA6LjNzfSIuZm9ybWF0KCJBQkNcdTA0MTBcdTA0MTFcdTA0MTIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQUJDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiezA6LjBzfSIuZm9ybWF0KCJBQkNcdTA0MTBcdTA0MTFcdTA0MTIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdF9tYXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuZm9ybWF0X21hcCh7fSksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhJy5mb3JtYXRfbWFwKHt9KSwgJ2EnKQpAQCAtOTkwLDYgKzEwNjUsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJWYnICUgSU5GLCAnaW5mJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJUYnICUgSU5GLCAnSU5GJykKIAorICAgICAgICAjIFBFUCAzOTMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJS4xcycgJSAiYVx4ZTlcdTIwYWMiLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyUuMnMnICUgImFceGU5XHUyMGFjIiwgJ2FceGU5JykKKwogICAgIGRlZiB0ZXN0X3N0YXJ0c3dpdGhfZW5kc3dpdGhfZXJyb3JzKHNlbGYpOgogICAgICAgICBmb3IgbWV0aCBpbiAoJ2Zvbycuc3RhcnRzd2l0aCwgJ2ZvbycuZW5kc3dpdGgpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgpAQCAtMTAxNCwxMCArMTA5MywxMyBAQAogICAgICAgICBjbGFzcyBVbmljb2RlU3ViY2xhc3Moc3RyKToKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3RyKFVuaWNvZGVTdWJjbGFzcygndW5pY29kZSBzdWJjbGFzcyBiZWNvbWVzIHVuaWNvZGUnKSksCi0gICAgICAgICAgICAndW5pY29kZSBzdWJjbGFzcyBiZWNvbWVzIHVuaWNvZGUnCi0gICAgICAgICkKKyAgICAgICAgZm9yIHRleHQgaW4gKCdhc2NpaScsICdceGU5JywgJ1x1MjBhYycsICdcVTAwMTBGRkZGJyk6CisgICAgICAgICAgICBzdWJjbGFzcyA9IFVuaWNvZGVTdWJjbGFzcyh0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc3ViY2xhc3MpLCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3ViY2xhc3MpLCBsZW4odGV4dCkpCisgICAgICAgICAgICBpZiB0ZXh0ID09ICdhc2NpaSc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJjbGFzcy5lbmNvZGUoJ2FzY2lpJyksIGInYXNjaWknKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ViY2xhc3MuZW5jb2RlKCd1dGYtOCcpLCBiJ2FzY2lpJykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgc3RyKCdzdHJpbmdzIGFyZSBjb252ZXJ0ZWQgdG8gdW5pY29kZScpLApAQCAtMTEyMywxNSArMTIwNSwxMiBAQAogICAgIGRlZiB0ZXN0X2NvZGVjc191dGY4KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmVuY29kZSgndXRmLTgnKSwgYicnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTIwYWMnLmVuY29kZSgndXRmLTgnKSwgYidceGUyXHg4Mlx4YWMnKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA9PSA2NTUzNToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1ZDgwMFx1ZGMwMicuZW5jb2RlKCd1dGYtOCcpLCBiJ1x4ZjBceDkwXHg4MFx4ODInKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHVkODRkXHVkYzU2Jy5lbmNvZGUoJ3V0Zi04JyksIGInXHhmMFx4YTNceDkxXHg5NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTAwMDInLmVuY29kZSgndXRmLTgnKSwgYidceGYwXHg5MFx4ODBceDgyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAyMzQ1NicuZW5jb2RlKCd1dGYtOCcpLCBiJ1x4ZjBceGEzXHg5MVx4OTYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdWQ4MDAnLmVuY29kZSgndXRmLTgnLCAnc3Vycm9nYXRlcGFzcycpLCBiJ1x4ZWRceGEwXHg4MCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1ZGMwMCcuZW5jb2RlKCd1dGYtOCcsICdzdXJyb2dhdGVwYXNzJyksIGInXHhlZFx4YjBceDgwJykKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPT0gNjU1MzU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgICgnXHVkODAwXHVkYzAyJyoxMDAwKS5lbmNvZGUoJ3V0Zi04JyksCi0gICAgICAgICAgICAgICAgYidceGYwXHg5MFx4ODBceDgyJyoxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnXFUwMDAxMDAwMicqMTApLmVuY29kZSgndXRmLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZjBceDkwXHg4MFx4ODInKjEwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgJ1x1NmI2M1x1NzhiYVx1MzA2Ylx1OGEwMFx1MzA0Nlx1MzA2OFx1N2ZmYlx1OGEzM1x1MzA2ZicKICAgICAgICAgICAgICdcdTMwNTVcdTMwOGNcdTMwNjZcdTMwNDRcdTMwN2VcdTMwNWJcdTMwOTNcdTMwMDJcdTRlMDAnCkBAIC0xMzQ0LDE0ICsxNDIzLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdHIsIGIiaGVsbG8iLCAidGVzdC51bmljb2RlMiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgImhlbGxvIi5lbmNvZGUsICJ0ZXN0LnVuaWNvZGUxIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiaGVsbG8iLmVuY29kZSwgInRlc3QudW5pY29kZTIiKQotICAgICAgICAjIGV4ZWN1dGVzIFB5VW5pY29kZV9FbmNvZGUoKQotICAgICAgICBpbXBvcnQgaW1wCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICBpbXAuZmluZF9tb2R1bGUsCi0gICAgICAgICAgICAibm9uLWV4aXN0aW5nIG1vZHVsZSIsCi0gICAgICAgICAgICBbIm5vbi1leGlzdGluZyBkaXIiXQotICAgICAgICApCiAKICAgICAgICAgIyBFcnJvciBoYW5kbGluZyAod3JvbmcgYXJndW1lbnRzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJoZWxsbyIuZW5jb2RlLCA0MiwgNDIsIDQyKQpAQCAtMTM2OSwxOCArMTQ0MCwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCdhc2NpaScpLCBiJ2hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmLTcnKSwgYidoZWxsbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0Zi04JyksIGInaGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGY4JyksIGInaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGYtOCcpLCBiJ2hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmLTE2LWxlJyksIGInaFwwMDBlXDAwMGxcMDAwbFwwMDBvXDAwMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0Zi0xNi1iZScpLCBiJ1wwMDBoXDAwMGVcMDAwbFwwMDBsXDAwMG8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCdsYXRpbi0xJyksIGInaGVsbG8nKQogCisgICAgICAgICMgRGVmYXVsdCBlbmNvZGluZyBpcyB1dGYtOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTI2MDMnLmVuY29kZSgpLCBiJ1x4ZTJceDk4XHg4MycpCisKICAgICAgICAgIyBSb3VuZHRyaXAgc2FmZXR5IGZvciBCTVAgKGp1c3QgdGhlIGZpcnN0IDEwMjQgY2hhcnMpCiAgICAgICAgIGZvciBjIGluIHJhbmdlKDEwMjQpOgogICAgICAgICAgICAgdSA9IGNocihjKQogICAgICAgICAgICAgZm9yIGVuY29kaW5nIGluICgndXRmLTcnLCAndXRmLTgnLCAndXRmLTE2JywgJ3V0Zi0xNi1sZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1dGYtMTYtYmUnLCAncmF3X3VuaWNvZGVfZXNjYXBlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVfZXNjYXBlJywgJ3VuaWNvZGVfaW50ZXJuYWwnKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQorICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAgICAgIyB1bmljb2RlLWludGVybmFsIGhhcyBiZWVuIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKIAogICAgICAgICAjIFJvdW5kdHJpcCBzYWZldHkgZm9yIEJNUCAoanVzdCB0aGUgZmlyc3QgMjU2IGNoYXJzKQogICAgICAgICBmb3IgYyBpbiByYW5nZSgyNTYpOgpAQCAtMTM5NSwxOCArMTQ3MywyMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUuZW5jb2RlKGVuY29kaW5nKSxlbmNvZGluZyksIHUpCiAKICAgICAgICAgIyBSb3VuZHRyaXAgc2FmZXR5IGZvciBub24tQk1QIChqdXN0IGEgZmV3IGNoYXJzKQotICAgICAgICB1ID0gJ1xVMDAwMTAwMDFcVTAwMDIwMDAyXFUwMDAzMDAwM1xVMDAwNDAwMDRcVTAwMDUwMDA1JwotICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCd1dGYtOCcsICd1dGYtMTYnLCAndXRmLTE2LWxlJywgJ3V0Zi0xNi1iZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIydyYXdfdW5pY29kZV9lc2NhcGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICd1bmljb2RlX2VzY2FwZScsICd1bmljb2RlX2ludGVybmFsJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAKLSAgICAgICAgIyBVVEYtOCBtdXN0IGJlIHJvdW5kdHJpcCBzYWZlIGZvciBhbGwgVUNTLTIgY29kZSBwb2ludHMKLSAgICAgICAgIyBUaGlzIGV4Y2x1ZGVzIHN1cnJvZ2F0ZXM6IGluIHRoZSBmdWxsIHJhbmdlLCB0aGVyZSB3b3VsZCBiZQotICAgICAgICAjIGEgc3Vycm9nYXRlIHBhaXIgKFx1ZGJmZlx1ZGMwMCksIHdoaWNoIGdldHMgY29udmVydGVkIGJhY2sKLSAgICAgICAgIyB0byBhIG5vbi1CTVAgY2hhcmFjdGVyIChcVTAwMTBmYzAwKQotICAgICAgICB1ID0gJycuam9pbihtYXAoY2hyLCBsaXN0KHJhbmdlKDAsMHhkODAwKSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJhbmdlKDB4ZTAwMCwweDEwMDAwKSkpKQorICAgICAgICAgICAgdSA9ICdcVTAwMDEwMDAxXFUwMDAyMDAwMlxVMDAwMzAwMDNcVTAwMDQwMDA0XFUwMDA1MDAwNScKKyAgICAgICAgICAgIGZvciBlbmNvZGluZyBpbiAoJ3V0Zi04JywgJ3V0Zi0xNicsICd1dGYtMTYtbGUnLCAndXRmLTE2LWJlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jhd191bmljb2RlX2VzY2FwZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmljb2RlX2VzY2FwZScsICd1bmljb2RlX2ludGVybmFsJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKKworICAgICAgICAjIFVURi04IG11c3QgYmUgcm91bmR0cmlwIHNhZmUgZm9yIGFsbCBjb2RlIHBvaW50cworICAgICAgICAjIChleGNlcHQgc3Vycm9nYXRlcywgd2hpY2ggYXJlIGZvcmJpZGRlbikuCisgICAgICAgIHUgPSAnJy5qb2luKG1hcChjaHIsIGxpc3QocmFuZ2UoMCwgMHhkODAwKSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJhbmdlKDB4ZTAwMCwgMHgxMTAwMDApKSkpCiAgICAgICAgIGZvciBlbmNvZGluZyBpbiAoJ3V0Zi04JywpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKIApAQCAtMTU5MSwxNyArMTY3MSwzOSBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsICd0XHR0XHQnLmV4cGFuZHRhYnMsIHN5cy5tYXhzaXplKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZXhwYW5kdGFic19vcHRpbWl6YXRpb24oc2VsZik6CisgICAgICAgIHMgPSAnYWJjJworICAgICAgICBzZWxmLmFzc2VydElzKHMuZXhwYW5kdGFicygpLCBzKQorCiAgICAgZGVmIHRlc3RfcmFpc2VNZW1FcnJvcihzZWxmKToKLSAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgZnJlZWxpc3QgY29udGFpbnMgYSBjb25zaXN0ZW50IG9iamVjdCwgZXZlbgotICAgICAgICAjIHdoZW4gYSBzdHJpbmcgYWxsb2NhdGlvbiBmYWlscyB3aXRoIGEgTWVtb3J5RXJyb3IuCi0gICAgICAgICMgVGhpcyB1c2VkIHRvIGNyYXNoIHRoZSBpbnRlcnByZXRlciwKLSAgICAgICAgIyBvciBsZWFrIHJlZmVyZW5jZXMgd2hlbiB0aGUgbnVtYmVyIHdhcyBzbWFsbGVyLgotICAgICAgICBjaGFyd2lkdGggPSA0IGlmIHN5cy5tYXh1bmljb2RlID49IDB4MTAwMDAgZWxzZSAyCi0gICAgICAgICMgTm90ZTogc3lzLm1heHNpemUgaXMgaGFsZiBvZiB0aGUgYWN0dWFsIG1heCBhbGxvY2F0aW9uIGJlY2F1c2Ugb2YKLSAgICAgICAgIyB0aGUgc2lnbmVkbmVzcyBvZiBQeV9zc2l6ZV90LgotICAgICAgICBhbGxvYyA9IGxhbWJkYTogImEiICogKHN5cy5tYXhzaXplIC8vIGNoYXJ3aWR0aCAqIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE1lbW9yeUVycm9yLCBhbGxvYykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIGFsbG9jKQorICAgICAgICBpZiBzdHJ1Y3QuY2FsY3NpemUoJ1AnKSA9PSA4OgorICAgICAgICAgICAgIyA2NCBiaXRzIHBvaW50ZXJzCisgICAgICAgICAgICBhc2NpaV9zdHJ1Y3Rfc2l6ZSA9IDQ4CisgICAgICAgICAgICBjb21wYWN0X3N0cnVjdF9zaXplID0gNzIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgMzIgYml0cyBwb2ludGVycworICAgICAgICAgICAgYXNjaWlfc3RydWN0X3NpemUgPSAyNAorICAgICAgICAgICAgY29tcGFjdF9zdHJ1Y3Rfc2l6ZSA9IDM2CisKKyAgICAgICAgZm9yIGNoYXIgaW4gKCdhJywgJ1x4ZTknLCAnXHUyMGFjJywgJ1xVMDAxMGZmZmYnKToKKyAgICAgICAgICAgIGNvZGUgPSBvcmQoY2hhcikKKyAgICAgICAgICAgIGlmIGNvZGUgPCAweDEwMDoKKyAgICAgICAgICAgICAgICBjaGFyX3NpemUgPSAxICAjIHNpemVvZihQeV9VQ1MxKQorICAgICAgICAgICAgICAgIHN0cnVjdF9zaXplID0gYXNjaWlfc3RydWN0X3NpemUKKyAgICAgICAgICAgIGVsaWYgY29kZSA8IDB4MTAwMDA6CisgICAgICAgICAgICAgICAgY2hhcl9zaXplID0gMiAgIyBzaXplb2YoUHlfVUNTMikKKyAgICAgICAgICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IGNvbXBhY3Rfc3RydWN0X3NpemUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2hhcl9zaXplID0gNCAgIyBzaXplb2YoUHlfVUNTNCkKKyAgICAgICAgICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IGNvbXBhY3Rfc3RydWN0X3NpemUKKyAgICAgICAgICAgICMgTm90ZTogc3lzLm1heHNpemUgaXMgaGFsZiBvZiB0aGUgYWN0dWFsIG1heCBhbGxvY2F0aW9uIGJlY2F1c2Ugb2YKKyAgICAgICAgICAgICMgdGhlIHNpZ25lZG5lc3Mgb2YgUHlfc3NpemVfdC4gU3RyaW5ncyBvZiBtYXhsZW4tMSBzaG91bGQgaW4gcHJpbmNpcGxlCisgICAgICAgICAgICAjIGJlIGFsbG9jYXRhYmxlLCBnaXZlbiBlbm91Z2ggbWVtb3J5LgorICAgICAgICAgICAgbWF4bGVuID0gKChzeXMubWF4c2l6ZSAtIHN0cnVjdF9zaXplKSAvLyBjaGFyX3NpemUpCisgICAgICAgICAgICBhbGxvYyA9IGxhbWJkYTogY2hhciAqIG1heGxlbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIGFsbG9jKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIGFsbG9jKQogCiAgICAgZGVmIHRlc3RfZm9ybWF0X3N1YmNsYXNzKHNlbGYpOgogICAgICAgICBjbGFzcyBTKHN0cik6CkBAIC0xNjE0LDExICsxNzE2LDEwIEBACiAgICAgIyBUZXN0IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkKICAgICBkZWYgdGVzdF9mcm9tX2Zvcm1hdChzZWxmKToKICAgICAgICAgc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjdHlwZXMnKQotICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgcHl0aG9uYXBpLCBweV9vYmplY3QsIGNfaW50Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID09IDY1NTM1OgotICAgICAgICAgICAgbmFtZSA9ICJQeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXQiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lID0gIlB5VW5pY29kZVVDUzRfRnJvbUZvcm1hdCIKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IChweXRob25hcGksIHB5X29iamVjdCwKKyAgICAgICAgICAgIGNfaW50LCBjX2xvbmcsIGNfbG9uZ2xvbmcsIGNfc3NpemVfdCwKKyAgICAgICAgICAgIGNfdWludCwgY191bG9uZywgY191bG9uZ2xvbmcsIGNfc2l6ZV90KQorICAgICAgICBuYW1lID0gIlB5VW5pY29kZV9Gcm9tRm9ybWF0IgogICAgICAgICBfUHlVbmljb2RlX0Zyb21Gb3JtYXQgPSBnZXRhdHRyKHB5dGhvbmFwaSwgbmFtZSkKICAgICAgICAgX1B5VW5pY29kZV9Gcm9tRm9ybWF0LnJlc3R5cGUgPSBweV9vYmplY3QKIApAQCAtMTYzOSwxMyArMTc0MCw0MCBAQAogICAgICAgICAgICAgJ3N0cmluZywgZ290IGEgbm9uLUFTQ0lJIGJ5dGU6IDB4ZTkkJywKICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tRm9ybWF0LCBiJ3VuaWNvZGVceGU5PSVzJywgJ2FzY2lpJykKIAorICAgICAgICAjIHRlc3QgIiVjIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWMnLCBjX2ludCgweGFiY2QpKSwgJ1x1YWJjZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclYycsIGNfaW50KDB4MTBmZmZmKSksICdcVTAwMTBmZmZmJykKIAotICAgICAgICAjIG90aGVyIHRlc3RzCisgICAgICAgICMgdGVzdCAiJSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUnKSwgJyUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJSUnKSwgJyUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJSVzJyksICclcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYidbJSVdJyksICdbJV0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJSUlcycsIGInYWJjJyksICclYWJjJykKKworICAgICAgICAjIHRlc3QgaW50ZWdlciBmb3JtYXRzICglaSwgJWQsICV1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTAzaScsIGNfaW50KDEwKSksICcwMTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTAuNGknLCBjX2ludCgxMCkpLCAnMDAxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclaScsIGNfaW50KC0xMjMpKSwgJy0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWxpJywgY19sb25nKC0xMjMpKSwgJy0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWxsaScsIGNfbG9uZ2xvbmcoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclemknLCBjX3NzaXplX3QoLTEyMykpLCAnLTEyMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVkJywgY19pbnQoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGQnLCBjX2xvbmcoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGxkJywgY19sb25nbG9uZygtMTIzKSksICctMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyV6ZCcsIGNfc3NpemVfdCgtMTIzKSksICctMTIzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJXUnLCBjX3VpbnQoMTIzKSksICcxMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWx1JywgY191bG9uZygxMjMpKSwgJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGx1JywgY191bG9uZ2xvbmcoMTIzKSksICcxMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJXp1JywgY19zaXplX3QoMTIzKSksICcxMjMnKQorCisgICAgICAgICMgdGVzdCAlQQogICAgICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclJUE6JUEnLCAnYWJjXHhlOVx1YWJjZFxVMDAxMGZmZmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHIiJUE6J2FiY1x4ZTlcdWFiY2RcVTAwMTBmZmZmJyIpCiAKKyAgICAgICAgIyB0ZXN0ICVWCiAgICAgICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChiJ3JlcHI9JVYnLCAnYWJjJywgYid4eXonKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsICdyZXByPWFiYycpCiAKQEAgLTE2NTksNiArMTc4NywxMyBAQAogICAgICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoYidyZXByPSVWJywgTm9uZSwgYidhYmNceGZmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCAncmVwcj1hYmNcdWZmZmQnKQogCisgICAgICAgICMgbm90IHN1cHBvcnRlZDogY29weSB0aGUgcmF3IGZvcm1hdCBzdHJpbmcuIHRoZXNlIHRlc3RzIGFyZSBqdXN0IGhlcmUKKyAgICAgICAgIyB0byBjaGVjayBmb3IgY3Jhc2hzIGFuZCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgYXMgc3BlY2lmaWNhdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUxJXMnLCBiJ2FiYycpLCAnJXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTFhYmMnKSwgJyUxYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUraScsIGNfaW50KDEwKSksICclK2knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJS4lcycsIGInYWJjJyksICclLiVzJykKKwogICAgICMgVGVzdCBQeVVuaWNvZGVfQXNXaWRlQ2hhcigpCiAgICAgZGVmIHRlc3RfYXN3aWRlY2hhcihzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfYXN3aWRlY2hhcgpAQCAtMTcxOSw2ICsxODU0LDUxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgbmNoYXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2NoYXIsIG5vbmJtcCArICdcMCcpCiAKKyAgICBkZWYgdGVzdF9zdWJjbGFzc19hZGQoc2VsZik6CisgICAgICAgIGNsYXNzIFMoc3RyKToKKyAgICAgICAgICAgIGRlZiBfX2FkZF9fKHNlbGYsIG8pOgorICAgICAgICAgICAgICAgIHJldHVybiAiMyIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTKCI0IikgKyBTKCI1IiksICIzIikKKyAgICAgICAgY2xhc3MgUyhzdHIpOgorICAgICAgICAgICAgZGVmIF9faWFkZF9fKHNlbGYsIG8pOgorICAgICAgICAgICAgICAgIHJldHVybiAiMyIKKyAgICAgICAgcyA9IFMoIjEiKQorICAgICAgICBzICs9ICI0IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsICIzIikKKworICAgIGRlZiB0ZXN0X2VuY29kZV9kZWNpbWFsKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgdW5pY29kZV9lbmNvZGVkZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCcxMjMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCdcdTA2NjMuXHUwNjYxXHUwNjY0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiczLjE0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyAzLjE0ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV9lbmNvZGVkZWNpbWFsLCAiMTIzXHUyMGFjIiwgInN0cmljdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBWYWx1ZUVycm9yLAorICAgICAgICAgICAgIl4nZGVjaW1hbCcgY29kZWMgY2FuJ3QgZW5jb2RlIGNoYXJhY3RlciIsCisgICAgICAgICAgICB1bmljb2RlX2VuY29kZWRlY2ltYWwsICIxMjNcdTIwYWMiLCAicmVwbGFjZSIpCisKKyAgICBkZWYgdGVzdF90cmFuc2Zvcm1fZGVjaW1hbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfdHJhbnNmb3JtZGVjaW1hbHRvYXNjaWkgYXMgdHJhbnNmb3JtX2RlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnMTIzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJ1x1MDY2My5cdTA2NjFcdTA2NjQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMy4xNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJzEyM1x1MjBhYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxMjNcdTIwYWMnKQorCisgICAgZGVmIHRlc3RfZ2V0bmV3YXJncyhzZWxmKToKKyAgICAgICAgdGV4dCA9ICdhYmMnCisgICAgICAgIGFyZ3MgPSB0ZXh0Ll9fZ2V0bmV3YXJnc19fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChhcmdzWzBdLCB0ZXh0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sIHRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFyZ3MpLCAxKQorCiAKIGNsYXNzIFN0cmluZ01vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Zvcm1hdHRlcl9wYXJzZXIoc2VsZik6CkBAIC0xNzcwLDQyICsxOTUwLDYgQEAKICAgICAgICAgICAgIF1dKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9zdHJpbmcuZm9ybWF0dGVyX2ZpZWxkX25hbWVfc3BsaXQsIDEpCiAKLSAgICBkZWYgdGVzdF9lbmNvZGVfZGVjaW1hbChzZWxmKToKLSAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfZW5jb2RlZGVjaW1hbAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgnMTIzJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgnXHUwNjYzLlx1MDY2MVx1MDY2NCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMy4xNCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCJcTntFTSBTUEFDRX0zLjE0XE57RU4gU1BBQ0V9IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicgMy4xNCAnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfZW5jb2RlZGVjaW1hbCwgIjEyM1x1MjBhYyIsICJzdHJpY3QiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjIiwgInJlcGxhY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMz8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjIiwgImlnbm9yZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhYyIsICJ4bWxjaGFycmVmcmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzJiM4MzY0OycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWMiLCAiYmFja3NsYXNocmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzXFx1MjBhYycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWNcTntFTSBTUEFDRX0iLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzPyAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjXHUyMGFjIiwgInJlcGxhY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMz8/JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhY1x1MDY2MCIsICJyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjM/MCcpCi0KLSAgICBkZWYgdGVzdF90cmFuc2Zvcm1fZGVjaW1hbChzZWxmKToKLSAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfdHJhbnNmb3JtZGVjaW1hbHRvYXNjaWkgYXMgdHJhbnNmb3JtX2RlY2ltYWwKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnMTIzJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEyMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJ1x1MDY2My5cdTA2NjFcdTA2NjQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMy4xNCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJzEyM1x1MjBhYycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMjNcdTIwYWMnKQotCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGUucHkKaW5kZXggNmMyMDExYS4uZmFhOGRhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGUucHkKQEAgLTYsNyArNiw3IEBACiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIHJtdHJlZSwKLSAgICBURVNURk5fRU5DT0RJTkcsIFRFU1RGTl9VTklDT0RFLCBURVNURk5fVU5FTkNPREFCTEUpCisgICAgVEVTVEZOX0VOQ09ESU5HLCBURVNURk5fVU5JQ09ERSwgVEVTVEZOX1VORU5DT0RBQkxFLCBjcmVhdGVfZW1wdHlfZmlsZSkKIAogaWYgbm90IG9zLnBhdGguc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXM6CiAgICAgdHJ5OgpAQCAtNTYsMTYgKzU2LDIwIEBACiAgICAgICAgICMgU2hvdWxkIGJlIGFibGUgdG8gcmVuYW1lIHRoZSBmaWxlIHVzaW5nIGVpdGhlciBuYW1lLgogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUxKSkgIyBtdXN0IGV4aXN0LgogICAgICAgICBvcy5yZW5hbWUoZmlsZW5hbWUxLCBmaWxlbmFtZTIgKyAiLm5ldyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTErIi5uZXciKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUxICsgJy5uZXcnKSkKICAgICAgICAgb3MucmVuYW1lKGZpbGVuYW1lMSArICIubmV3IiwgZmlsZW5hbWUyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMSArICcubmV3JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTIpKQogCiAgICAgICAgIHNodXRpbC5jb3B5KGZpbGVuYW1lMSwgZmlsZW5hbWUyICsgIi5uZXciKQogICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUxICsgIi5uZXciKSAjIHJlbW92ZSB1c2luZyBlcXVpdiBuYW1lLgogICAgICAgICAjIEFuZCBhIGNvdXBsZSBvZiBtb3Zlcywgb25lIHVzaW5nIGVhY2ggbmFtZS4KICAgICAgICAgc2h1dGlsLm1vdmUoZmlsZW5hbWUxLCBmaWxlbmFtZTIgKyAiLm5ldyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZmlsZW5hbWUxICsgJy5uZXcnKSkKICAgICAgICAgc2h1dGlsLm1vdmUoZmlsZW5hbWUxICsgIi5uZXciLCBmaWxlbmFtZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZmlsZW5hbWUyICsgJy5uZXcnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMSkpCiAgICAgICAgICMgTm90ZSAtIGR1ZSB0byB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2h1dGlsLm1vdmUsCiAgICAgICAgICMgaXQgdHJpZXMgYSByZW5hbWUgZmlyc3QuICBUaGlzIG9ubHkgZmFpbHMgb24gV2luZG93cyB3aGVuIG9uCkBAIC03MywxMCArNzcsMTIgQEAKICAgICAgICAgIyBTbyB3ZSB0ZXN0IHRoZSBzaHV0aWwuY29weTIgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSB0aGluZyBtb3N0CiAgICAgICAgICMgbGlrZWx5IHRvIGZhaWwuCiAgICAgICAgIHNodXRpbC5jb3B5MihmaWxlbmFtZTEsIGZpbGVuYW1lMiArICIubmV3IikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMSArICcubmV3JykpCiAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZTEgKyAiLm5ldyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZmlsZW5hbWUyICsgJy5uZXcnKSkKIAogICAgIGRlZiBfZG9fZGlyZWN0b3J5KHNlbGYsIG1ha2VfbmFtZSwgY2hkaXJfbmFtZSk6Ci0gICAgICAgIGN3ZCA9IG9zLmdldGN3ZGIoKQorICAgICAgICBjd2QgPSBvcy5nZXRjd2QoKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG1ha2VfbmFtZSk6CiAgICAgICAgICAgICBybXRyZWUobWFrZV9uYW1lKQogICAgICAgICBvcy5ta2RpcihtYWtlX25hbWUpCkBAIC05OSw4ICsxMDUsNyBAQAogICAgICMgdG9wLWxldmVsICd0ZXN0JyBmdW5jdGlvbnMgd291bGQgYmUgaWYgdGhleSBjb3VsZCB0YWtlIHBhcmFtcwogICAgIGRlZiBfdGVzdF9zaW5nbGUoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICByZW1vdmVfaWZfZXhpc3RzKGZpbGVuYW1lKQotICAgICAgICBmID0gb3BlbihmaWxlbmFtZSwgInciKQotICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUoZmlsZW5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX2RvX3NpbmdsZShmaWxlbmFtZSkKICAgICAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CmluZGV4IDk3NDQyNTYuLjk5YWEwMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQpAQCAtMjEsNyArMjEsNyBAQAogY2xhc3MgVW5pY29kZU1ldGhvZHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgdXBkYXRlIHRoaXMsIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICcyMWI5MGYxYWVkMDAwODFiODFjYTc5NDJiMjIxOTZhZjA5MDAxNWEwJworICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnYmY3YTc4ZjFhNTMyNDIxYjUwMzM2MDAxMDJlMjNhOTIwNDRkYmJhOScKIAogICAgIGRlZiB0ZXN0X21ldGhvZF9jaGVja3N1bShzZWxmKToKICAgICAgICAgaCA9IGhhc2hsaWIuc2hhMSgpCkBAIC04MCw3ICs4MCw3IEBACiBjbGFzcyBVbmljb2RlRnVuY3Rpb25zVGVzdChVbmljb2RlRGF0YWJhc2VUZXN0KToKIAogICAgICMgdXBkYXRlIHRoaXMsIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdjMjNkZmMwYjVlYWYzY2EyYWFkMzJkNzMzZGU5NmJiMTgyY2NkYTUwJworICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnMTdmZTJmMTJiNzg4ZTRmZmY1NDc5YjQ2OWM0NDA0YmI2ZWNmODQxZicKICAgICBkZWYgdGVzdF9mdW5jdGlvbl9jaGVja3N1bShzZWxmKToKICAgICAgICAgZGF0YSA9IFtdCiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtMTA4LDYgKzEwOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kaWdpdCgnXHUyMTViJywgTm9uZSksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kaWdpdCgnXHUyNDY4JyksIDkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kaWdpdCgnXFUwMDAyMDAwMCcsIE5vbmUpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGlnaXQoJ1xVMDAwMUQ3RkQnKSwgNykKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuZGlnaXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5kaWdpdCwgJ3h4JykKQEAgLTEyMCw2ICsxMjEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIubnVtZXJpYygnXHUyNDY4JyksIDkuMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLm51bWVyaWMoJ1x1YTYyNycpLCA3LjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5udW1lcmljKCdcVTAwMDIwMDAwJywgTm9uZSksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5udW1lcmljKCdcVTAwMDEwMTJBJyksIDkwMDApCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLm51bWVyaWMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5udW1lcmljLCAneHgnKQpAQCAtMTMxLDYgKzEzMyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kZWNpbWFsKCdcdTIxNWInLCBOb25lKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRlY2ltYWwoJ1x1MjQ2OCcsIE5vbmUpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGVjaW1hbCgnXFUwMDAyMDAwMCcsIE5vbmUpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGVjaW1hbCgnXFUwMDAxRDdGRCcpLCA3KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5kZWNpbWFsKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuZGVjaW1hbCwgJ3h4JykKQEAgLTE0MSw2ICsxNDQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuY2F0ZWdvcnkoJ2EnKSwgJ0xsJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmNhdGVnb3J5KCdBJyksICdMdScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5jYXRlZ29yeSgnXFUwMDAyMDAwMCcpLCAnTG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuY2F0ZWdvcnkoJ1xVMDAwMTAxMkEnKSwgJ05vJykKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuY2F0ZWdvcnkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5jYXRlZ29yeSwgJ3h4JykKQEAgLTMwOCwxNCArMzEyLDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaW5lcyksIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlx1JS40eCBzaG91bGQgbm90IGJlIGEgbGluZWJyZWFrIiAlIGkpCiAKLSAgICBkZWYgdGVzdF9VQ1M0KHNlbGYpOgotICAgICAgICAjIHVuaWNvZGVkYXRhIHNob3VsZCB3b3JrIHdpdGggY29kZSBwb2ludHMgb3V0c2lkZSB0aGUgQk1QCi0gICAgICAgICMgZXZlbiBvbiBhIG5hcnJvdyBVbmljb2RlIGJ1aWxkCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5jYXRlZ29yeSgiXFUwMDAxMDEyQSIpLCAiTm8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIubnVtZXJpYygiXFUwMDAxMDEyQSIpLCA5MDAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGVjaW1hbCgiXFUwMDAxRDdGRCIpLCA3KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGlnaXQoIlxVMDAwMUQ3RkQiKSwgNykKLQogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoCiAgICAgICAgIFVuaWNvZGVNaXNjVGVzdCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKaW5kZXggYzZmNmY2MS4uMjJhZGE1NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKQEAgLTI5OCw2ICsyOTgsMTAgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYudW5mYWtlaHR0cCgpCiAKKyAgICBkZWYgdGVzdF9VUkxvcGVuZXJfZGVwcmVjYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICB3YXJuID0gdXJsbGliLnJlcXVlc3QuVVJMb3BlbmVyKCkKKwogY2xhc3MgdXJscmV0cmlldmVfRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0IHVybGxpYi51cmxyZXRyaWV2ZSgpIG9uIGxvY2FsIGZpbGVzIiIiCiAKQEAgLTMzMSw3ICszMzUsNyBAQAogICAgIGRlZiBjb25zdHJ1Y3RMb2NhbEZpbGVVcmwoc2VsZiwgZmlsZVBhdGgpOgogICAgICAgICBmaWxlUGF0aCA9IG9zLnBhdGguYWJzcGF0aChmaWxlUGF0aCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZVBhdGguZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgICAgIGZpbGVQYXRoLmVuY29kZSgidXRmLTgiKQogICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImZpbGVQYXRoIGlzIG5vdCBlbmNvZGFibGUgdG8gdXRmOCIpCiAgICAgICAgIHJldHVybiAiZmlsZTovLyVzIiAlIHVybGxpYi5yZXF1ZXN0LnBhdGhuYW1lMnVybChmaWxlUGF0aCkKQEAgLTM4NCwxMSArMzg4LDExIEBACiAKICAgICBkZWYgdGVzdF9yZXBvcnRob29rKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXBvcnRob29rIHdvcmtzLgotICAgICAgICBkZWYgaG9va3Rlc3Rlcihjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSwgY291bnRfaG9sZGVyPVswXSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY291bnQsIGludCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShibG9ja19zaXplLCBpbnQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodG90YWxfc2l6ZSwgaW50KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudCwgY291bnRfaG9sZGVyWzBdKQorICAgICAgICBkZWYgaG9va3Rlc3RlcihibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUsIGNvdW50X2hvbGRlcj1bMF0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJsb2NrX2NvdW50LCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYmxvY2tfcmVhZF9zaXplLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmlsZV9zaXplLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJsb2NrX2NvdW50LCBjb3VudF9ob2xkZXJbMF0pCiAgICAgICAgICAgICBjb3VudF9ob2xkZXJbMF0gPSBjb3VudF9ob2xkZXJbMF0gKyAxCiAgICAgICAgIHNlY29uZF90ZW1wID0gIiVzLjIiICUgc3VwcG9ydC5URVNURk4KICAgICAgICAgc2VsZi5yZWdpc3RlckZpbGVGb3JDbGVhblVwKHNlY29uZF90ZW1wKQpAQCAtMzk5LDggKzQwMyw4IEBACiAgICAgZGVmIHRlc3RfcmVwb3J0aG9va18wX2J5dGVzKHNlbGYpOgogICAgICAgICAjIFRlc3Qgb24gemVybyBsZW5ndGggZmlsZS4gU2hvdWxkIGNhbGwgcmVwb3J0aG9vayBvbmx5IDEgdGltZS4KICAgICAgICAgcmVwb3J0ID0gW10KLSAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKLSAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSkpCisgICAgICAgIGRlZiBob29rdGVzdGVyKGJsb2NrX2NvdW50LCBibG9ja19yZWFkX3NpemUsIGZpbGVfc2l6ZSwgX3JlcG9ydD1yZXBvcnQpOgorICAgICAgICAgICAgX3JlcG9ydC5hcHBlbmQoKGJsb2NrX2NvdW50LCBibG9ja19yZWFkX3NpemUsIGZpbGVfc2l6ZSkpCiAgICAgICAgIHNyY0ZpbGVOYW1lID0gc2VsZi5jcmVhdGVOZXdUZW1wRmlsZSgpCiAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKHNlbGYuY29uc3RydWN0TG9jYWxGaWxlVXJsKHNyY0ZpbGVOYW1lKSwKICAgICAgICAgICAgIHN1cHBvcnQuVEVTVEZOLCBob29rdGVzdGVyKQpAQCAtNDEwLDMxICs0MTQsMzEgQEAKICAgICBkZWYgdGVzdF9yZXBvcnRob29rXzVfYnl0ZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBvbiA1IGJ5dGUgZmlsZS4gU2hvdWxkIGNhbGwgcmVwb3J0aG9vayBvbmx5IDIgdGltZXMgKG9uY2Ugd2hlbgogICAgICAgICAjIHRoZSAibmV0d29yayBjb25uZWN0aW9uIiBpcyBlc3RhYmxpc2hlZCBhbmQgb25jZSB3aGVuIHRoZSBibG9jayBpcwotICAgICAgICAjIHJlYWQpLiBTaW5jZSB0aGUgYmxvY2sgc2l6ZSBpcyA4MTkyIGJ5dGVzLCBvbmx5IG9uZSBibG9jayByZWFkIGlzCi0gICAgICAgICMgcmVxdWlyZWQgdG8gcmVhZCB0aGUgZW50aXJlIGZpbGUuCisgICAgICAgICMgcmVhZCkuCiAgICAgICAgIHJlcG9ydCA9IFtdCi0gICAgICAgIGRlZiBob29rdGVzdGVyKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplLCBfcmVwb3J0PXJlcG9ydCk6Ci0gICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUpKQorICAgICAgICBkZWYgaG9va3Rlc3RlcihibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKKyAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUpKQogICAgICAgICBzcmNGaWxlTmFtZSA9IHNlbGYuY3JlYXRlTmV3VGVtcEZpbGUoYiJ4IiAqIDUpCiAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKHNlbGYuY29uc3RydWN0TG9jYWxGaWxlVXJsKHNyY0ZpbGVOYW1lKSwKICAgICAgICAgICAgIHN1cHBvcnQuVEVTVEZOLCBob29rdGVzdGVyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXBvcnQpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsxXSwgODE5MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMl0sIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzBdWzFdLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFsxXVsxXSwgNSkKIAogICAgIGRlZiB0ZXN0X3JlcG9ydGhvb2tfODE5M19ieXRlcyhzZWxmKToKICAgICAgICAgIyBUZXN0IG9uIDgxOTMgYnl0ZSBmaWxlLiBTaG91bGQgY2FsbCByZXBvcnRob29rIG9ubHkgMyB0aW1lcyAob25jZQogICAgICAgICAjIHdoZW4gdGhlICJuZXR3b3JrIGNvbm5lY3Rpb24iIGlzIGVzdGFibGlzaGVkLCBvbmNlIGZvciB0aGUgbmV4dCA4MTkyCiAgICAgICAgICMgYnl0ZXMsIGFuZCBvbmNlIGZvciB0aGUgbGFzdCBieXRlKS4KICAgICAgICAgcmVwb3J0ID0gW10KLSAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKLSAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSkpCisgICAgICAgIGRlZiBob29rdGVzdGVyKGJsb2NrX2NvdW50LCBibG9ja19yZWFkX3NpemUsIGZpbGVfc2l6ZSwgX3JlcG9ydD1yZXBvcnQpOgorICAgICAgICAgICAgX3JlcG9ydC5hcHBlbmQoKGJsb2NrX2NvdW50LCBibG9ja19yZWFkX3NpemUsIGZpbGVfc2l6ZSkpCiAgICAgICAgIHNyY0ZpbGVOYW1lID0gc2VsZi5jcmVhdGVOZXdUZW1wRmlsZShiIngiICogODE5MykKICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJscmV0cmlldmUoc2VsZi5jb25zdHJ1Y3RMb2NhbEZpbGVVcmwoc3JjRmlsZU5hbWUpLAogICAgICAgICAgICAgc3VwcG9ydC5URVNURk4sIGhvb2t0ZXN0ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlcG9ydCksIDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzBdWzFdLCA4MTkyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsyXSwgODE5MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMV0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzFdWzFdLCA4MTkyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFsyXVsxXSwgMSkKIAogCiBjbGFzcyB1cmxyZXRyaWV2ZV9IdHRwVGVzdHModW5pdHRlc3QuVGVzdENhc2UsIEZha2VIVFRQTWl4aW4pOgpAQCAtMTI0NSw2ICsxMjQ5LDI4IEBACiAjICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdHAuZnRwLnNvY2suZ2V0dGltZW91dCgpLCAzMCkKICMgICAgICAgICBmdHAuY2xvc2UoKQogCitjbGFzcyBSZXF1ZXN0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QuIiIiCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X3ZhbHVlcyhzZWxmKToKKyAgICAgICAgUmVxdWVzdCA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QKKyAgICAgICAgcmVxdWVzdCA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdHRVQnKQorICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIiwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdQT1NUJykKKworICAgIGRlZiB0ZXN0X3dpdGhfbWV0aG9kX2FyZyhzZWxmKToKKyAgICAgICAgUmVxdWVzdCA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QKKyAgICAgICAgcmVxdWVzdCA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIsIG1ldGhvZD0nSEVBRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5tZXRob2QsICdIRUFEJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ0hFQUQnKQorICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIiwge30sIG1ldGhvZD0nSEVBRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5tZXRob2QsICdIRUFEJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ0hFQUQnKQorICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIiwgbWV0aG9kPSdHRVQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnR0VUJykKKyAgICAgICAgcmVxdWVzdC5tZXRob2QgPSAnSEVBRCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ0hFQUQnKQogCiAKIGRlZiB0ZXN0X21haW4oKToKQEAgLTEyNjEsNiArMTI4Nyw3IEBACiAgICAgICAgIFV0aWxpdHlfVGVzdHMsCiAgICAgICAgIFVSTG9wZW5lcl9UZXN0cywKICAgICAgICAgI0ZUUFdyYXBwZXJUZXN0cywKKyAgICAgICAgUmVxdWVzdFRlc3RzLAogICAgICkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKaW5kZXggM2FjZTY2ZS4uN2FlMTU1MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQpAQCAtNSw2ICs1LDcgQEAKIGltcG9ydCBpbwogaW1wb3J0IHNvY2tldAogaW1wb3J0IGFycmF5CitpbXBvcnQgc3lzCiAKIGltcG9ydCB1cmxsaWIucmVxdWVzdAogIyBUaGUgcHJveHkgYnlwYXNzIG1ldGhvZCBpbXBvcnRlZCBiZWxvdyBoYXMgbG9naWMgc3BlY2lmaWMgdG8gdGhlIE9TWApAQCAtMTgsNiArMTksMjIgQEAKICMgcGFyc2Vfa2Vxdl9saXN0LCBwYXJzZV9odHRwX2xpc3QsIEhUVFBEaWdlc3RBdXRoSGFuZGxlcgogCiBjbGFzcyBUcml2aWFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfX19hbGxfXyhzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgd2hpY2ggbmFtZXMgYXJlIGV4cG9zZWQKKyAgICAgICAgZm9yIG1vZHVsZSBpbiAncmVxdWVzdCcsICdyZXNwb25zZScsICdwYXJzZScsICdlcnJvcicsICdyb2JvdHBhcnNlcic6CisgICAgICAgICAgICBjb250ZXh0ID0ge30KKyAgICAgICAgICAgIGV4ZWMoJ2Zyb20gdXJsbGliLiVzIGltcG9ydCAqJyAlIG1vZHVsZSwgY29udGV4dCkKKyAgICAgICAgICAgIGRlbCBjb250ZXh0WydfX2J1aWx0aW5zX18nXQorICAgICAgICAgICAgaWYgbW9kdWxlID09ICdyZXF1ZXN0JyBhbmQgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgICAgIHUsIHAgPSBjb250ZXh0LnBvcCgndXJsMnBhdGhuYW1lJyksIGNvbnRleHQucG9wKCdwYXRobmFtZTJ1cmwnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodS5fX21vZHVsZV9fLCAnbnR1cmwycGF0aCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLl9fbW9kdWxlX18sICdudHVybDJwYXRoJykKKyAgICAgICAgICAgIGZvciBrLCB2IGluIGNvbnRleHQuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuX19tb2R1bGVfXywgJ3VybGxpYi4lcycgJSBtb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICIlciBpcyBleHBvc2VkIGluICd1cmxsaWIuJXMnIGJ1dCBkZWZpbmVkIGluICVyIiAlCisgICAgICAgICAgICAgICAgICAgIChrLCBtb2R1bGUsIHYuX19tb2R1bGVfXykpCisKICAgICBkZWYgdGVzdF90cml2aWFsKHNlbGYpOgogICAgICAgICAjIEEgY291cGxlIHRyaXZpYWwgdGVzdHMKIApAQCAtNTM2LDEwICs1NTMsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IsIG8ub3BlbiwgcmVxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG8uY2FsbHMsIFsoaGFuZGxlcnNbMF0sICJodHRwX29wZW4iLCAocmVxLCksIHt9KV0pCiAKLSMjICAgICBkZWYgdGVzdF9lcnJvcihzZWxmKToKLSMjICAgICAgICAgIyBYWFggdGhpcyBkb2Vzbid0IGFjdHVhbGx5IHNlZW0gdG8gYmUgdXNlZCBpbiBzdGFuZGFyZCBsaWJyYXJ5LAotIyMgICAgICAgICAjICBidXQgc2hvdWxkIHJlYWxseSBiZSB0ZXN0ZWQgYW55d2F5Li4uCi0KICAgICBkZWYgdGVzdF9odHRwX2Vycm9yKHNlbGYpOgogICAgICAgICAjIFhYWCBodHRwX2Vycm9yX2RlZmF1bHQKICAgICAgICAgIyBodHRwIGVycm9ycyBhcmUgYSBzcGVjaWFsIGNhc2UKQEAgLTU2Nyw2ICs1ODAsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaGFuZGxlciwgbWV0aG9kX25hbWUpLCBnb3RbOjJdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBnb3RbMl0pCiAKKwogICAgIGRlZiB0ZXN0X3Byb2Nlc3NvcnMoc2VsZik6CiAgICAgICAgICMgKl9yZXF1ZXN0IC8gKl9yZXNwb25zZSBtZXRob2RzIGdldCBjYWxsZWQgYXBwcm9wcmlhdGVseQogICAgICAgICBvID0gT3BlbmVyRGlyZWN0b3IoKQpAQCAtNjAyLDEwICs2MTYsMzAgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXJnc1sxXSBpcyBOb25lIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoYXJnc1sxXSwgTW9ja1Jlc3BvbnNlKSkKIAorICAgIGRlZiB0ZXN0X21ldGhvZF9kZXByZWNhdGlvbnMoc2VsZik6CisgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmFkZF9kYXRhKCJkYXRhIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuZ2V0X2RhdGEoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5oYXNfZGF0YSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmdldF9ob3N0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuZ2V0X3NlbGVjdG9yKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuaXNfdW52ZXJpZmlhYmxlKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuZ2V0X29yaWdpbl9yZXFfaG9zdCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmdldF90eXBlKCkKKwogCiBkZWYgc2FuZXBhdGhuYW1lMnVybChwYXRoKToKICAgICB0cnk6Ci0gICAgICAgIHBhdGguZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgcGF0aC5lbmNvZGUoInV0Zi04IikKICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgicGF0aCBpcyBub3QgZW5jb2RhYmxlIHRvIHV0ZjgiKQogICAgIHVybHBhdGggPSB1cmxsaWIucmVxdWVzdC5wYXRobmFtZTJ1cmwocGF0aCkKQEAgLTk1Nyw4ICs5OTEsOCBAQAogICAgICAgICBuZXdyZXEgPSBoLmh0dHBfcmVxdWVzdChyZXEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY2ouYWNoX3JlcSwgcmVxKQogICAgICAgICBzZWxmLmFzc2VydElzKGNqLmFjaF9yZXEsIG5ld3JlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X29yaWdpbl9yZXFfaG9zdCgpLCAiZXhhbXBsZS5jb20iKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlcS5pc191bnZlcmlmaWFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEub3JpZ2luX3JlcV9ob3N0LCAiZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlcS51bnZlcmlmaWFibGUpCiAgICAgICAgIG5ld3IgPSBoLmh0dHBfcmVzcG9uc2UocmVxLCByKQogICAgICAgICBzZWxmLmFzc2VydElzKGNqLmVjX3JlcSwgcmVxKQogICAgICAgICBzZWxmLmFzc2VydElzKGNqLmVjX3IsIHIpCkBAIC05OTAsNyArMTAyNCw3IEBACiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG8ucmVxLmdldF9tZXRob2QoKSwgIkdFVCIpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG8ucmVxLmhhc19kYXRhKCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoby5yZXEuZGF0YSkKIAogICAgICAgICAgICAgICAgICMgbm93IGl0J3MgYSBHRVQsIHRoZXJlIHNob3VsZCBub3QgYmUgaGVhZGVycyByZWdhcmRpbmcgY29udGVudAogICAgICAgICAgICAgICAgICMgKHBvc3NpYmx5IGRyYWdnZWQgZnJvbSBiZWZvcmUgYmVpbmcgYSBQT1NUKQpAQCAtMTEwNiw5ICsxMTQwLDkgQEAKICAgICAgICAgaGFuZGxlcnMgPSBhZGRfb3JkZXJlZF9tb2NrX2hhbmRsZXJzKG8sIG1ldGhfc3BlYykKIAogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAiYWNtZS5leGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJhY21lLmV4YW1wbGUuY29tIikKICAgICAgICAgciA9IG8ub3BlbihyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhoYW5kbGVyc1swXSwgImh0dHBfb3BlbiIpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVwWzA6Ml0gZm9yIHR1cCBpbiBvLmNhbGxzXSkKQEAgLTExMTksMTMgKzExNTMsMTMgQEAKICAgICAgICAgcGggPSB1cmxsaWIucmVxdWVzdC5Qcm94eUhhbmRsZXIoZGljdChodHRwPSJwcm94eS5leGFtcGxlLmNvbSIpKQogICAgICAgICBvLmFkZF9oYW5kbGVyKHBoKQogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnBlcmwub3JnLyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cucGVybC5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LnBlcmwub3JnIikKICAgICAgICAgciA9IG8ub3BlbihyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJwcm94eS5leGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJwcm94eS5leGFtcGxlLmNvbSIpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cucHl0aG9uLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cucHl0aG9uLm9yZyIpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LnB5dGhvbi5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LnB5dGhvbi5vcmciKQogICAgICAgICBkZWwgb3MuZW52aXJvblsnbm9fcHJveHknXQogCiAgICAgZGVmIHRlc3RfcHJveHlfbm9fcHJveHlfYWxsKHNlbGYpOgpAQCAtMTEzNCw5ICsxMTY4LDkgQEAKICAgICAgICAgcGggPSB1cmxsaWIucmVxdWVzdC5Qcm94eUhhbmRsZXIoZGljdChodHRwPSJwcm94eS5leGFtcGxlLmNvbSIpKQogICAgICAgICBvLmFkZF9oYW5kbGVyKHBoKQogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LnB5dGhvbi5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LnB5dGhvbi5vcmciKQogICAgICAgICByID0gby5vcGVuKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5weXRob24ub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5weXRob24ub3JnIikKICAgICAgICAgZGVsIG9zLmVudmlyb25bJ25vX3Byb3h5J10KIAogCkBAIC0xMTUwLDkgKzExODQsOSBAQAogICAgICAgICBoYW5kbGVycyA9IGFkZF9vcmRlcmVkX21vY2tfaGFuZGxlcnMobywgbWV0aF9zcGVjKQogCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cuZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LmV4YW1wbGUuY29tIikKICAgICAgICAgciA9IG8ub3BlbihyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoaGFuZGxlcnNbMF0sICJodHRwc19vcGVuIildLAogICAgICAgICAgICAgICAgICAgICAgICAgIFt0dXBbMDoyXSBmb3IgdHVwIGluIG8uY2FsbHNdKQogCkBAIC0xMTY1LDcgKzExOTksNyBAQAogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwczovL3d3dy5leGFtcGxlLmNvbS8iKQogICAgICAgICByZXEuYWRkX2hlYWRlcigiUHJveHktQXV0aG9yaXphdGlvbiIsIkZvb0JhciIpCiAgICAgICAgIHJlcS5hZGRfaGVhZGVyKCJVc2VyLUFnZW50IiwiR3JhaWwiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LmV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5leGFtcGxlLmNvbSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlcS5fdHVubmVsX2hvc3QpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQogICAgICAgICAjIFZlcmlmeSBQcm94eS1BdXRob3JpemF0aW9uIGdldHMgdHVubmVsZWQgdG8gcmVxdWVzdC4KQEAgLTExNzYsOSArMTIxMCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCgiVXNlci1BZ2VudCIsIkdyYWlsIiksCiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHNfaGFuZGxlci5odHRwY29ubi5yZXFfaGVhZGVycykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmVxLl90dW5uZWxfaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9oZWFkZXIoIlByb3h5LWF1dGhvcml6YXRpb24iKSwiRm9vQmFyIikKIAorICAgICMgVE9ETzogVGhpcyBzaG91bGQgYmUgb25seSBmb3IgT1NYCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAib25seSByZWxldmFudCBmb3IgT1NYIikKICAgICBkZWYgdGVzdF9vc3hfcHJveHlfYnlwYXNzKHNlbGYpOgogICAgICAgICBieXBhc3MgPSB7CiAgICAgICAgICAgICAnZXhjbHVkZV9zaW1wbGUnOiBGYWxzZSwKQEAgLTEyOTgsNiArMTMzNCwyNiBAQAogICAgICAgICAjIF90ZXN0X2Jhc2ljX2F1dGggY2FsbGVkIC5vcGVuKCkgdHdpY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlbmVyLnJlY29yZGVkLCBbImRpZ2VzdCIsICJiYXNpYyJdKjIpCiAKKyAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9hdXRoX2RpZ2VzdF9oYW5kbGVyKHNlbGYpOgorICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCisgICAgICAgICMgV2hpbGUgdXNpbmcgRGlnZXN0QXV0aEhhbmRsZXIKKyAgICAgICAgZGlnZXN0X2F1dGhfaGFuZGxlciA9IHVybGxpYi5yZXF1ZXN0LkhUVFBEaWdlc3RBdXRoSGFuZGxlcihOb25lKQorICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXIoCisgICAgICAgICAgICA0MDEsICdXV1ctQXV0aGVudGljYXRlOiBLZXJiZXJvc1xyXG5cclxuJykKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGRpZ2VzdF9hdXRoX2hhbmRsZXIpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Isb3BlbmVyLm9wZW4sImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQorCisgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfYXV0aF9iYXNpY19oYW5kbGVyKHNlbGYpOgorICAgICAgICAjIFdoaWxlIHVzaW5nIEJhc2ljQXV0aEhhbmRsZXIKKyAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorICAgICAgICBiYXNpY19hdXRoX2hhbmRsZXIgPSB1cmxsaWIucmVxdWVzdC5IVFRQQmFzaWNBdXRoSGFuZGxlcihOb25lKQorICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXIoCisgICAgICAgICAgICA0MDEsICdXV1ctQXV0aGVudGljYXRlOiBOVExNXHJcblxyXG4nKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYmFzaWNfYXV0aF9oYW5kbGVyKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLG9wZW5lci5vcGVuLCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikKKwogICAgIGRlZiBfdGVzdF9iYXNpY19hdXRoKHNlbGYsIG9wZW5lciwgYXV0aF9oYW5kbGVyLCBhdXRoX2hlYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsbSwgaHR0cF9oYW5kbGVyLCBwYXNzd29yZF9tYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfdXJsLCBwcm90ZWN0ZWRfdXJsKToKQEAgLTEzMzUsNiArMTM5MSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGh0dHBfaGFuZGxlci5yZXF1ZXN0cyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaHR0cF9oYW5kbGVyLnJlcXVlc3RzWzBdLmhhc19oZWFkZXIoYXV0aF9oZWFkZXIpKQogCisKIGNsYXNzIE1pc2NUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9idWlsZF9vcGVuZXIoc2VsZik6CkBAIC0xMzkwLDExICsxNDQ3LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlBPU1QiLCBzZWxmLnBvc3QuZ2V0X21ldGhvZCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJHRVQiLCBzZWxmLmdldC5nZXRfbWV0aG9kKCkpCiAKLSAgICBkZWYgdGVzdF9hZGRfZGF0YShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmdldC5oYXNfZGF0YSgpKQorICAgIGRlZiB0ZXN0X2RhdGEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5nZXQuZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiR0VUIiwgc2VsZi5nZXQuZ2V0X21ldGhvZCgpKQotICAgICAgICBzZWxmLmdldC5hZGRfZGF0YSgic3BhbSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmdldC5oYXNfZGF0YSgpKQorICAgICAgICBzZWxmLmdldC5kYXRhID0gInNwYW0iCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmdldC5kYXRhKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJQT1NUIiwgc2VsZi5nZXQuZ2V0X21ldGhvZCgpKQogCiAgICAgZGVmIHRlc3RfZ2V0X2Z1bGxfdXJsKHNlbGYpOgpAQCAtMTQwMiwzNiArMTQ1OSwzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0LmdldF9mdWxsX3VybCgpKQogCiAgICAgZGVmIHRlc3Rfc2VsZWN0b3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi9+amVyZW15LyIsIHNlbGYuZ2V0LmdldF9zZWxlY3RvcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvfmplcmVteS8iLCBzZWxmLmdldC5zZWxlY3RvcikKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnLyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8iLCByZXEuZ2V0X3NlbGVjdG9yKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8iLCByZXEuc2VsZWN0b3IpCiAKICAgICBkZWYgdGVzdF9nZXRfdHlwZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHR0cCIsIHNlbGYuZ2V0LmdldF90eXBlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImh0dHAiLCBzZWxmLmdldC50eXBlKQogCiAgICAgZGVmIHRlc3RfZ2V0X2hvc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgc2VsZi5nZXQuZ2V0X2hvc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCBzZWxmLmdldC5ob3N0KQogCiAgICAgZGVmIHRlc3RfZ2V0X2hvc3RfdW5xdW90ZShzZWxmKToKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy4lNzB5dGhvbi5vcmcvIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCByZXEuZ2V0X2hvc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCByZXEuaG9zdCkKIAogICAgIGRlZiB0ZXN0X3Byb3h5KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZ2V0Lmhhc19wcm94eSgpKQogICAgICAgICBzZWxmLmdldC5zZXRfcHJveHkoInd3dy5wZXJsLm9yZyIsICJodHRwIikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZ2V0Lmhhc19wcm94eSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHNlbGYuZ2V0LmdldF9vcmlnaW5fcmVxX2hvc3QoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnBlcmwub3JnIiwgc2VsZi5nZXQuZ2V0X2hvc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCBzZWxmLmdldC5vcmlnaW5fcmVxX2hvc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5wZXJsLm9yZyIsIHNlbGYuZ2V0Lmhvc3QpCiAKICAgICBkZWYgdGVzdF93cmFwcGVkX3VybChzZWxmKToKICAgICAgICAgcmVxID0gUmVxdWVzdCgiPFVSTDpodHRwOi8vd3d3LnB5dGhvbi5vcmc+IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCByZXEuZ2V0X2hvc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCByZXEuaG9zdCkKIAogICAgIGRlZiB0ZXN0X3VybF9mcmFnbWVudChzZWxmKToKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnLz9xcz1xdWVyeSNmcmFnbWVudD10cnVlIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLz9xcz1xdWVyeSIsIHJlcS5nZXRfc2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLz9xcz1xdWVyeSIsIHJlcS5zZWxlY3RvcikKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnLyNmdW49dHJ1ZSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8iLCByZXEuZ2V0X3NlbGVjdG9yKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8iLCByZXEuc2VsZWN0b3IpCiAKICAgICAgICAgIyBJc3N1ZSAxMTcwMzogZ2V0dXJsKCkgb21pdHMgZnJhZ21lbnQgaW4gdGhlIG9yaWdpbmFsIFVSTC4KICAgICAgICAgdXJsID0gJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGlicmFyeS91cmxsaWIyLmh0bWwjT0snCkBAIC0xNDQzLDcgKzE1MDAsOSBAQAogICAgIElzc3VlIDEzMjExIHJldmVhbHMgdGhhdCBIVFRQRXJyb3IgZGlkbid0IGltcGxlbWVudCB0aGUgVVJMRXJyb3IKICAgICBpbnRlcmZhY2UgZXZlbiB0aG91Z2ggSFRUUEVycm9yIGlzIGEgc3ViY2xhc3Mgb2YgVVJMRXJyb3IuCiAKLSAgICA+Pj4gZXJyID0gdXJsbGliLmVycm9yLkhUVFBFcnJvcihtc2c9J3NvbWV0aGluZyBiYWQgaGFwcGVuZWQnLCB1cmw9Tm9uZSwgY29kZT1Ob25lLCBoZHJzPU5vbmUsIGZwPU5vbmUpCisgICAgPj4+IG1zZyA9ICdzb21ldGhpbmcgYmFkIGhhcHBlbmVkJworICAgID4+PiB1cmwgPSBjb2RlID0gaGRycyA9IGZwID0gTm9uZQorICAgID4+PiBlcnIgPSB1cmxsaWIuZXJyb3IuSFRUUEVycm9yKHVybCwgY29kZSwgbXNnLCBoZHJzLCBmcCkKICAgICA+Pj4gYXNzZXJ0IGhhc2F0dHIoZXJyLCAncmVhc29uJykKICAgICA+Pj4gZXJyLnJlYXNvbgogICAgICdzb21ldGhpbmcgYmFkIGhhcHBlbmVkJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CmluZGV4IDllMWNlNWIuLjZlZjQyMDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKQEAgLTQ3NCw2ICs0NzQsMTMgQEAKICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQogCisgICAgZGVmIHRlc3RfaHR0cHNfd2l0aF9jYWRlZmF1bHQoc2VsZik6CisgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKKyAgICAgICAgIyBTZWxmLXNpZ25lZCBjZXJ0IHNob3VsZCBmYWlsIHZlcmlmaWNhdGlvbiB3aXRoIHN5c3RlbSBjZXJ0aWZpY2F0ZSBzdG9yZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGVmYXVsdD1UcnVlKQorCiAgICAgZGVmIHRlc3Rfc2VuZGluZ19oZWFkZXJzKHNlbGYpOgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9zZXJ2ZXIoKQogICAgICAgICByZXEgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KCJodHRwOi8vbG9jYWxob3N0OiVzLyIgJSBoYW5kbGVyLnBvcnQsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKaW5kZXggNWZjYjRjYi4uZmM1NTI3ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQpAQCAtODMsMTIgKzgzLDEzIEBACiAgICAgZGVmIHRlc3RfY2xvc2Uoc2VsZik6CiAgICAgICAgICMgY2FsbGluZyAuY2xvc2UoKSBvbiB1cmxsaWIyJ3MgcmVzcG9uc2Ugb2JqZWN0cyBzaG91bGQgY2xvc2UgdGhlCiAgICAgICAgICMgdW5kZXJseWluZyBzb2NrZXQKLQotICAgICAgICByZXNwb25zZSA9IF91cmxvcGVuX3dpdGhfcmV0cnkoImh0dHA6Ly93d3cucHl0aG9uLm9yZy8iKQotICAgICAgICBzb2NrID0gcmVzcG9uc2UuZnAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBzb2NrLmNsb3NlZCkKLSAgICAgICAgcmVzcG9uc2UuY2xvc2UoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc29jay5jbG9zZWQpCisgICAgICAgIHVybCA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIgorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHVybCk6CisgICAgICAgICAgICByZXNwb25zZSA9IF91cmxvcGVuX3dpdGhfcmV0cnkodXJsKQorICAgICAgICAgICAgc29jayA9IHJlc3BvbnNlLmZwCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IHNvY2suY2xvc2VkKQorICAgICAgICAgICAgcmVzcG9uc2UuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNvY2suY2xvc2VkKQogCiBjbGFzcyBPdGhlck5ldHdvcmtUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKaW5kZXggODY4ZWQyNC4uNjM4MTA3MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CkBAIC01Miw2ICs1MiwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBzdHIoa2V5KSArICchISEnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKFQoKDEsMikpKSksICIwISEhIikKIAorICAgIGRlZiB0ZXN0X3VzZXJsaXN0X2NvcHkoc2VsZik6CisgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbNiwgOCwgMSwgOSwgMV0pCisgICAgICAgIHYgPSB1LmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSh1KSwgdHlwZSh2KSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFVzZXJMaXN0VGVzdCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CmluZGV4IDdhOGI5MzIuLmQ1ZDBjODkgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKQEAgLTE3LDExICsxNywxMSBAQAogICAgICMgT3ZlcndyaXRlIHRoZSB0aHJlZSB0ZXN0aW5nIG1ldGhvZHMsIGJlY2F1c2UgVXNlclN0cmluZwogICAgICMgY2FuJ3QgY29wZSB3aXRoIGFyZ3VtZW50cyBwcm9wYWdhdGVkIHRvIFVzZXJTdHJpbmcKICAgICAjIChhbmQgd2UgZG9uJ3QgdGVzdCB3aXRoIHN1YmNsYXNzZXMpCi0gICAgZGVmIGNoZWNrZXF1YWwoc2VsZiwgcmVzdWx0LCBvYmplY3QsIG1ldGhvZG5hbWUsICphcmdzKToKKyAgICBkZWYgY2hlY2tlcXVhbChzZWxmLCByZXN1bHQsIG9iamVjdCwgbWV0aG9kbmFtZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgcmVzdWx0ID0gc2VsZi5maXh0eXBlKHJlc3VsdCkKICAgICAgICAgb2JqZWN0ID0gc2VsZi5maXh0eXBlKG9iamVjdCkKICAgICAgICAgIyB3ZSBkb24ndCBmaXggdGhlIGFyZ3VtZW50cywgYmVjYXVzZSBVc2VyU3RyaW5nIGNhbid0IGNvcGUgd2l0aCBpdAotICAgICAgICByZWFscmVzdWx0ID0gZ2V0YXR0cihvYmplY3QsIG1ldGhvZG5hbWUpKCphcmdzKQorICAgICAgICByZWFscmVzdWx0ID0gZ2V0YXR0cihvYmplY3QsIG1ldGhvZG5hbWUpKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIHJlc3VsdCwKICAgICAgICAgICAgIHJlYWxyZXN1bHQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXVpZC5weSBiL0xpYi90ZXN0L3Rlc3RfdXVpZC5weQppbmRleCA0M2ZhNjU2Li43YmM1OWVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3V1aWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91dWlkLnB5CkBAIC00NzEsMTQgKzQ3MSwxNCBAQAogICAgICAgICBpZiBwaWQgPT0gMDoKICAgICAgICAgICAgIG9zLmNsb3NlKGZkc1swXSkKICAgICAgICAgICAgIHZhbHVlID0gdXVpZC51dWlkNCgpCi0gICAgICAgICAgICBvcy53cml0ZShmZHNbMV0sIHZhbHVlLmhleC5lbmNvZGUoJ2xhdGluMScpKQorICAgICAgICAgICAgb3Mud3JpdGUoZmRzWzFdLCB2YWx1ZS5oZXguZW5jb2RlKCdsYXRpbi0xJykpCiAgICAgICAgICAgICBvcy5fZXhpdCgwKQogCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvcy5jbG9zZShmZHNbMV0pCiAgICAgICAgICAgICBwYXJlbnRfdmFsdWUgPSB1dWlkLnV1aWQ0KCkuaGV4CiAgICAgICAgICAgICBvcy53YWl0cGlkKHBpZCwgMCkKLSAgICAgICAgICAgIGNoaWxkX3ZhbHVlID0gb3MucmVhZChmZHNbMF0sIDEwMCkuZGVjb2RlKCdsYXRpbjEnKQorICAgICAgICAgICAgY2hpbGRfdmFsdWUgPSBvcy5yZWFkKGZkc1swXSwgMTAwKS5kZWNvZGUoJ2xhdGluLTEnKQogCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHBhcmVudF92YWx1ZSwgY2hpbGRfdmFsdWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdmVudi5weSBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Njk2ODQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5CkBAIC0wLDAgKzEsMjAzIEBACisiIiIKK1Rlc3QgaGFybmVzcyBmb3IgdGhlIHZlbnYgbW9kdWxlLgorCitDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBWaW5heSBTYWppcC4KK0xpY2Vuc2VkIHRvIHRoZSBQU0YgdW5kZXIgYSBjb250cmlidXRvciBhZ3JlZW1lbnQuCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChjYXB0dXJlZF9zdGRvdXQsIGNhcHR1cmVkX3N0ZGVyciwgcnVuX3VuaXR0ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc3ltbGluaykKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHZlbnYKKworY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIHZlbnYgdGVzdHMuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZW52X2RpciA9IG9zLnBhdGgucmVhbHBhdGgodGVtcGZpbGUubWtkdGVtcCgpKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBzZWxmLmJpbmRpciA9ICdTY3JpcHRzJworICAgICAgICAgICAgc2VsZi5weWRvY25hbWUgPSAncHlkb2MucHknCisgICAgICAgICAgICBzZWxmLmxpYiA9ICgnTGliJywpCisgICAgICAgICAgICBzZWxmLmluY2x1ZGUgPSAnSW5jbHVkZScKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYmluZGlyID0gJ2JpbicKKyAgICAgICAgICAgIHNlbGYucHlkb2NuYW1lID0gJ3B5ZG9jJworICAgICAgICAgICAgc2VsZi5saWIgPSAoJ2xpYicsICdweXRob24lcycgJSBzeXMudmVyc2lvbls6M10pCisgICAgICAgICAgICBzZWxmLmluY2x1ZGUgPSAnaW5jbHVkZScKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAnX19QWVZFTlZfTEFVTkNIRVJfXycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5lbnZpcm9uWydfX1BZVkVOVl9MQVVOQ0hFUl9fJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBzeXMuZXhlY3V0YWJsZQorICAgICAgICBzZWxmLmV4ZSA9IG9zLnBhdGguc3BsaXQoZXhlY3V0YWJsZSlbLTFdCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5lbnZfZGlyKQorCisgICAgZGVmIHJ1bl93aXRoX2NhcHR1cmUoc2VsZiwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIGVycm9yOgorICAgICAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gb3V0cHV0LmdldHZhbHVlKCksIGVycm9yLmdldHZhbHVlKCkKKworICAgIGRlZiBnZXRfZW52X2ZpbGUoc2VsZiwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuZW52X2RpciwgKmFyZ3MpCisKKyAgICBkZWYgZ2V0X3RleHRfZmlsZV9jb250ZW50cyhzZWxmLCAqYXJncyk6CisgICAgICAgIHdpdGggb3BlbihzZWxmLmdldF9lbnZfZmlsZSgqYXJncyksICdyJykgYXMgZjoKKyAgICAgICAgICAgIHJlc3VsdCA9IGYucmVhZCgpCisgICAgICAgIHJldHVybiByZXN1bHQKKworY2xhc3MgQmFzaWNUZXN0KEJhc2VUZXN0KToKKyAgICAiIiJUZXN0IHZlbnYgbW9kdWxlIGZ1bmN0aW9uYWxpdHkuIiIiCisKKyAgICBkZWYgaXNkaXIoc2VsZiwgKmFyZ3MpOgorICAgICAgICBmbiA9IHNlbGYuZ2V0X2Vudl9maWxlKCphcmdzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihmbikpCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhlIGNyZWF0ZSBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgYXJndW1lbnRzLgorICAgICAgICAiIiIKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYucnVuX3dpdGhfY2FwdHVyZSh2ZW52LmNyZWF0ZSwgc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLmlzZGlyKHNlbGYuYmluZGlyKQorICAgICAgICBzZWxmLmlzZGlyKHNlbGYuaW5jbHVkZSkKKyAgICAgICAgc2VsZi5pc2Rpcigqc2VsZi5saWIpCisgICAgICAgIGRhdGEgPSBzZWxmLmdldF90ZXh0X2ZpbGVfY29udGVudHMoJ3B5dmVudi5jZmcnKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICgnX19QWVZFTlZfTEFVTkNIRVJfXycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gb3MuZW52aXJvbik6CisgICAgICAgICAgICBleGVjdXRhYmxlID0gIG9zLmVudmlyb25bJ19fUFlWRU5WX0xBVU5DSEVSX18nXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9IHN5cy5leGVjdXRhYmxlCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmRpcm5hbWUoZXhlY3V0YWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaG9tZSA9ICVzJyAlIHBhdGgsIGRhdGEpCisgICAgICAgIGRhdGEgPSBzZWxmLmdldF90ZXh0X2ZpbGVfY29udGVudHMoc2VsZi5iaW5kaXIsIHNlbGYucHlkb2NuYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGF0YS5zdGFydHN3aXRoKCcjISVzJXMnICUgKHNlbGYuZW52X2Rpciwgb3Muc2VwKSkpCisgICAgICAgIGZuID0gc2VsZi5nZXRfZW52X2ZpbGUoc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZm4pOiAgIyBkaWFnbm9zdGljcyBmb3IgV2luZG93cyBidWlsZGJvdCBmYWlsdXJlcworICAgICAgICAgICAgYmQgPSBzZWxmLmdldF9lbnZfZmlsZShzZWxmLmJpbmRpcikKKyAgICAgICAgICAgIHByaW50KCdDb250ZW50cyBvZiAlcjonICUgYmQpCisgICAgICAgICAgICBwcmludCgnICAgICVyJyAlIG9zLmxpc3RkaXIoYmQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pLCAnRmlsZSAlciBzaG91bGQgZXhpc3QuJyAlIGZuKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucHJlZml4ICE9IHN5cy5iYXNlX3ByZWZpeCwgJ1Rlc3Qgbm90IGFwcHJvcHJpYXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiBhIHZlbnYnKQorICAgIGRlZiB0ZXN0X3ByZWZpeGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBwcmVmaXggdmFsdWVzIGFyZSBhcyBleHBlY3RlZC4KKyAgICAgICAgIiIiCisgICAgICAgICNjaGVjayBvdXIgcHJlZml4ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuYmFzZV9wcmVmaXgsIHN5cy5wcmVmaXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmJhc2VfZXhlY19wcmVmaXgsIHN5cy5leGVjX3ByZWZpeCkKKworICAgICAgICAjIGNoZWNrIGEgdmVudidzIHByZWZpeGVzCisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLnJ1bl93aXRoX2NhcHR1cmUodmVudi5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgZW52cHkgPSBvcy5wYXRoLmpvaW4oc2VsZi5lbnZfZGlyLCBzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgIGNtZCA9IFtlbnZweSwgJy1jJywgTm9uZV0KKyAgICAgICAgZm9yIHByZWZpeCwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKCdwcmVmaXgnLCBzZWxmLmVudl9kaXIpLAorICAgICAgICAgICAgKCdwcmVmaXgnLCBzZWxmLmVudl9kaXIpLAorICAgICAgICAgICAgKCdiYXNlX3ByZWZpeCcsIHN5cy5wcmVmaXgpLAorICAgICAgICAgICAgKCdiYXNlX2V4ZWNfcHJlZml4Jywgc3lzLmV4ZWNfcHJlZml4KSk6CisgICAgICAgICAgICBjbWRbMl0gPSAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLiVzKScgJSBwcmVmaXgKKyAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZXhwZWN0ZWQuZW5jb2RlKCkpCisKKyAgICBkZWYgdGVzdF9vdmVyd3JpdGVfZXhpc3Rpbmcoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGNvbnRyb2wgb2Ygb3ZlcndyaXRpbmcgYW4gZXhpc3RpbmcgZW52aXJvbm1lbnQgZGlyZWN0b3J5LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdmVudi5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcihjbGVhcj1UcnVlKQorICAgICAgICBidWlsZGVyLmNyZWF0ZShzZWxmLmVudl9kaXIpCisKKyAgICBkZWYgdGVzdF91cGdyYWRlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB1cGdyYWRpbmcgYW4gZXhpc3RpbmcgZW52aXJvbm1lbnQgZGlyZWN0b3J5LgorICAgICAgICAiIiIKKyAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcih1cGdyYWRlPVRydWUpCisgICAgICAgIHNlbGYucnVuX3dpdGhfY2FwdHVyZShidWlsZGVyLmNyZWF0ZSwgc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLmlzZGlyKHNlbGYuYmluZGlyKQorICAgICAgICBzZWxmLmlzZGlyKHNlbGYuaW5jbHVkZSkKKyAgICAgICAgc2VsZi5pc2Rpcigqc2VsZi5saWIpCisgICAgICAgIGZuID0gc2VsZi5nZXRfZW52X2ZpbGUoc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZm4pOiAgIyBkaWFnbm9zdGljcyBmb3IgV2luZG93cyBidWlsZGJvdCBmYWlsdXJlcworICAgICAgICAgICAgYmQgPSBzZWxmLmdldF9lbnZfZmlsZShzZWxmLmJpbmRpcikKKyAgICAgICAgICAgIHByaW50KCdDb250ZW50cyBvZiAlcjonICUgYmQpCisgICAgICAgICAgICBwcmludCgnICAgICVyJyAlIG9zLmxpc3RkaXIoYmQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pLCAnRmlsZSAlciBzaG91bGQgZXhpc3QuJyAlIGZuKQorCisgICAgZGVmIHRlc3RfaXNvbGF0aW9uKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBpc29sYXRpb24gZnJvbSBzeXN0ZW0gc2l0ZS1wYWNrYWdlcworICAgICAgICAiIiIKKyAgICAgICAgZm9yIHNzcCwgcyBpbiAoKFRydWUsICd0cnVlJyksIChGYWxzZSwgJ2ZhbHNlJykpOgorICAgICAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcihjbGVhcj1UcnVlLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1zc3ApCisgICAgICAgICAgICBidWlsZGVyLmNyZWF0ZShzZWxmLmVudl9kaXIpCisgICAgICAgICAgICBkYXRhID0gc2VsZi5nZXRfdGV4dF9maWxlX2NvbnRlbnRzKCdweXZlbnYuY2ZnJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2luY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMgPSAlc1xuJyAlIHMsIGRhdGEpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhjYW5fc3ltbGluaygpLCAnTmVlZHMgc3ltbGlua3MnKQorICAgIGRlZiB0ZXN0X3N5bWxpbmtpbmcoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHN5bWxpbmtpbmcgd29ya3MgYXMgZXhwZWN0ZWQKKyAgICAgICAgIiIiCisgICAgICAgIGZvciB1c2wgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIoY2xlYXI9VHJ1ZSwgc3ltbGlua3M9dXNsKQorICAgICAgICAgICAgYnVpbGRlci5jcmVhdGUoc2VsZi5lbnZfZGlyKQorICAgICAgICAgICAgZm4gPSBzZWxmLmdldF9lbnZfZmlsZShzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgICAgICAjIERvbid0IHRlc3Qgd2hlbiBGYWxzZSwgYmVjYXVzZSBlLmcuICdweXRob24nIGlzIGFsd2F5cworICAgICAgICAgICAgIyBzeW1saW5rZWQgdG8gJ3B5dGhvbjMuMycgaW4gdGhlIGVudiwgZXZlbiB3aGVuIHN5bWxpbmtpbmcgaW4KKyAgICAgICAgICAgICMgZ2VuZXJhbCBpc24ndCB3YW50ZWQuCisgICAgICAgICAgICBpZiB1c2w6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGZuKSkKKworICAgICMgSWYgYSB2ZW52IGlzIGNyZWF0ZWQgZnJvbSBhIHNvdXJjZSBidWlsZCBhbmQgdGhhdCB2ZW52IGlzIHVzZWQgdG8KKyAgICAjIHJ1biB0aGUgdGVzdCwgdGhlIHB5dmVudi5jZmcgaW4gdGhlIHZlbnYgY3JlYXRlZCBpbiB0aGUgdGVzdCB3aWxsCisgICAgIyBwb2ludCB0byB0aGUgdmVudiBiZWluZyB1c2VkIHRvIHJ1biB0aGUgdGVzdCwgYW5kIHdlIGxvc2UgdGhlIGxpbmsKKyAgICAjIHRvIHRoZSBzb3VyY2UgYnVpbGQgLSBzbyBQeXRob24gY2FuJ3QgaW5pdGlhbGlzZSBwcm9wZXJseS4KKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wcmVmaXggIT0gc3lzLmJhc2VfcHJlZml4LCAnVGVzdCBub3QgYXBwcm9wcmlhdGUgJworICAgICAgICAgICAgICAgICAgICAgJ2luIGEgdmVudicpCisgICAgZGVmIHRlc3RfZXhlY3V0YWJsZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgc3lzLmV4ZWN1dGFibGUgdmFsdWUgaXMgYXMgZXhwZWN0ZWQuCisgICAgICAgICIiIgorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIpCisgICAgICAgIGVudnB5ID0gb3MucGF0aC5qb2luKG9zLnBhdGgucmVhbHBhdGgoc2VsZi5lbnZfZGlyKSwgc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICBjbWQgPSBbZW52cHksICctYycsICdpbXBvcnQgc3lzOyBwcmludChzeXMuZXhlY3V0YWJsZSknXQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGVudnB5LmVuY29kZSgpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX3N5bWxpbmsoKSwgJ05lZWRzIHN5bWxpbmtzJykKKyAgICBkZWYgdGVzdF9leGVjdXRhYmxlX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBzeXMuZXhlY3V0YWJsZSB2YWx1ZSBpcyBhcyBleHBlY3RlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5lbnZfZGlyKQorICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKGNsZWFyPVRydWUsIHN5bWxpbmtzPVRydWUpCisgICAgICAgIGJ1aWxkZXIuY3JlYXRlKHNlbGYuZW52X2RpcikKKyAgICAgICAgZW52cHkgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5yZWFscGF0aChzZWxmLmVudl9kaXIpLCBzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgIGNtZCA9IFtlbnZweSwgJy1jJywgJ2ltcG9ydCBzeXM7IHByaW50KHN5cy5leGVjdXRhYmxlKSddCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZW52cHkuZW5jb2RlKCkpCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBydW5fdW5pdHRlc3QoQmFzaWNUZXN0KQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5IGIvTGliL3Rlc3QvdGVzdF93YWl0My5weQppbmRleCA3ODZlNjBiLi5iZDA2YzhkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkKQEAgLTE5LDEzICsxOSwxNiBAQAogCiBjbGFzcyBXYWl0M1Rlc3QoRm9ya1dhaXQpOgogICAgIGRlZiB3YWl0X2ltcGwoc2VsZiwgY3BpZCk6Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgIyBUaGlzIG1hbnkgaXRlcmF0aW9ucyBjYW4gYmUgcmVxdWlyZWQsIHNpbmNlIHNvbWUgcHJldmlvdXNseSBydW4KKyAgICAgICAgIyB0ZXN0cyAoZS5nLiB0ZXN0X2N0eXBlcykgY291bGQgaGF2ZSBzcGF3bmVkIGEgbG90IG9mIGNoaWxkcmVuCisgICAgICAgICMgdmVyeSBxdWlja2x5LgorICAgICAgICBmb3IgaSBpbiByYW5nZSgzMCk6CiAgICAgICAgICAgICAjIHdhaXQzKCkgc2hvdWxkbid0IGhhbmcsIGJ1dCBzb21lIG9mIHRoZSBidWlsZGJvdHMgc2VlbSB0byBoYW5nCiAgICAgICAgICAgICAjIGluIHRoZSBmb3JraW5nIHRlc3RzLiAgVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGZpeCB0aGUgcHJvYmxlbS4KICAgICAgICAgICAgIHNwaWQsIHN0YXR1cywgcnVzYWdlID0gb3Mud2FpdDMob3MuV05PSEFORykKICAgICAgICAgICAgIGlmIHNwaWQgPT0gY3BpZDoKICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgdGltZS5zbGVlcCgxLjApCisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwaWQsIGNwaWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAiY2F1c2UgPSAlZCwgZXhpdCA9ICVkIiAlIChzdGF0dXMmMHhmZiwgc3RhdHVzPj44KSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5CmluZGV4IDc5YmU4MzUuLjk1M2IyODIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weQpAQCAtNTEyLDEyICs1MTIsMTEgQEAKICAgICBkZWYgdGVzdF9zaG93d2FybmluZ19ub3RfY2FsbGFibGUoc2VsZik6CiAgICAgICAgIHdpdGggb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXNlbGYubW9kdWxlKToKICAgICAgICAgICAgIHNlbGYubW9kdWxlLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1Vc2VyV2FybmluZykKLSAgICAgICAgICAgIG9sZF9zaG93d2FybmluZyA9IHNlbGYubW9kdWxlLnNob3d3YXJuaW5nCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5zaG93d2FybmluZyA9IHByaW50CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfb3V0cHV0KCdzdGRvdXQnKToKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKCdXYXJuaW5nIScpCiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5zaG93d2FybmluZyA9IDIzCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm1vZHVsZS53YXJuLCAiV2FybmluZyEiKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS5zaG93d2FybmluZyA9IG9sZF9zaG93d2FybmluZworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm1vZHVsZS53YXJuLCAiV2FybmluZyEiKQogCiAgICAgZGVmIHRlc3Rfc2hvd193YXJuaW5nX291dHB1dChzZWxmKToKICAgICAgICAgIyBXaXRoIHNob3dhcm5pbmcoKSBtaXNzaW5nLCBtYWtlIHN1cmUgdGhhdCBvdXRwdXQgaXMgb2theS4KQEAgLTU0NywxMCArNTQ2LDEzIEBACiAgICAgICAgIGdsb2JhbHNfZGljdCA9IGdsb2JhbHMoKQogICAgICAgICBvbGRmaWxlID0gZ2xvYmFsc19kaWN0WydfX2ZpbGVfXyddCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXNlbGYubW9kdWxlKSBhcyB3OgorICAgICAgICAgICAgY2F0Y2ggPSBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlPXNlbGYubW9kdWxlKQorICAgICAgICAgICAgd2l0aCBjYXRjaCBhcyB3OgogICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1Vc2VyV2FybmluZykKICAgICAgICAgICAgICAgICBnbG9iYWxzX2RpY3RbJ19fZmlsZV9fJ10gPSBOb25lCiAgICAgICAgICAgICAgICAgb3JpZ2luYWxfd2FybmluZ3Mud2FybigndGVzdCcsIFVzZXJXYXJuaW5nKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4odykpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBnbG9iYWxzX2RpY3RbJ19fZmlsZV9fJ10gPSBvbGRmaWxlCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weSBiL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQppbmRleCBhMDhmNjZiLi4zOThjNTNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CkBAIC05LDYgKzksOCBAQAogZnJvbSB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIgaW1wb3J0IG1ha2Vfc2VydmVyCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgQnl0ZXNJTywgQnVmZmVyZWRSZWFkZXIKIGZyb20gc29ja2V0c2VydmVyIGltcG9ydCBCYXNlU2VydmVyCitmcm9tIHBsYXRmb3JtIGltcG9ydCBweXRob25faW1wbGVtZW50YXRpb24KKwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKQEAgLTEyOSw5ICsxMzEsMTEgQEAKIGNsYXNzIEludGVncmF0aW9uVGVzdHMoVGVzdENhc2UpOgogCiAgICAgZGVmIGNoZWNrX2hlbGxvKHNlbGYsIG91dCwgaGFzX2xlbmd0aD1UcnVlKToKKyAgICAgICAgcHl2ZXIgPSAocHl0aG9uX2ltcGxlbWVudGF0aW9uKCkgKyAiLyIgKworICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uLnNwbGl0KClbMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LAogICAgICAgICAgICAgKCJIVFRQLzEuMCAyMDAgT0tcclxuIgotICAgICAgICAgICAgIlNlcnZlcjogV1NHSVNlcnZlci8wLjIgUHl0aG9uLyIrc3lzLnZlcnNpb24uc3BsaXQoKVswXSsiXHJcbiIKKyAgICAgICAgICAgICJTZXJ2ZXI6IFdTR0lTZXJ2ZXIvMC4yICIgKyBweXZlciArIlxyXG4iCiAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXHJcbiIKICAgICAgICAgICAgICJEYXRlOiBNb24sIDA1IEp1biAyMDA2IDE4OjQ5OjU0IEdNVFxyXG4iICsKICAgICAgICAgICAgIChoYXNfbGVuZ3RoIGFuZCAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG4iIG9yICIiKSArCkBAIC0xODUsOSArMTg5LDExIEBACiAgICAgICAgIG91dCwgZXJyID0gcnVuX2Ftb2NrKHZhbGlkYXRvcihhcHApKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZXJyLmVuZHN3aXRoKCciR0VUIC8gSFRUUC8xLjAiIDIwMCA0XG4nKSkKICAgICAgICAgdmVyID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgcHkgID0gcHl0aG9uX2ltcGxlbWVudGF0aW9uKCkuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIHB5dmVyID0gcHkgKyBiIi8iICsgdmVyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgYiJIVFRQLzEuMCAyMDAgT0tcclxuIgotICAgICAgICAgICAgICAgIGIiU2VydmVyOiBXU0dJU2VydmVyLzAuMiBQeXRob24vIiArIHZlciArIGIiXHJcbiIKKyAgICAgICAgICAgICAgICBiIlNlcnZlcjogV1NHSVNlcnZlci8wLjIgIisgcHl2ZXIgKyBiIlxyXG4iCiAgICAgICAgICAgICAgICAgYiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLThcclxuIgogICAgICAgICAgICAgICAgIGIiRGF0ZTogV2VkLCAyNCBEZWMgMjAwOCAxMzoyOTozMiBHTVRcclxuIgogICAgICAgICAgICAgICAgIGIiXHJcbiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKaW5kZXggYjdhOTk2Yy4uZGExYWQwOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKQEAgLTEsMjggKzEsMzQgQEAKICMgeG1sLmV0cmVlIHRlc3QuICBUaGlzIGZpbGUgY29udGFpbnMgZW5vdWdoIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0CiAjIGFsbCBpbmNsdWRlZCBjb21wb25lbnRzIHdvcmsgYXMgdGhleSBzaG91bGQuCiAjIExhcmdlIHBhcnRzIGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUgdXBzdHJlYW0gdGVzdCBzdWl0ZS4KLQotIyBJTVBPUlRBTlQ6IHRoZSBzYW1lIGRvY3Rlc3RzIGFyZSBydW4gZnJvbSAidGVzdF94bWxfZXRyZWVfYyIgaW4KLSMgb3JkZXIgdG8gZW5zdXJlIGNvbnNpc3RlbmN5IGJldHdlZW4gdGhlIEMgaW1wbGVtZW50YXRpb24gYW5kIHRoZQotIyBQeXRob24gaW1wbGVtZW50YXRpb24uCisjCisjIFBMRUFTRSB3cml0ZSBhbGwgbmV3IHRlc3RzIHVzaW5nIHRoZSBzdGFuZGFyZCB1bml0dGVzdCBpbmZyYXN0cnVjdHVyZSBhbmQKKyMgbm90IGRvY3Rlc3QuCisjCisjIElNUE9SVEFOVDogdGhlIHNhbWUgdGVzdHMgYXJlIHJ1biBmcm9tICJ0ZXN0X3htbF9ldHJlZV9jIiBpbiBvcmRlcgorIyB0byBlbnN1cmUgY29uc2lzdGVuY3kgYmV0d2VlbiB0aGUgQyBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIFB5dGhvbgorIyBpbXBsZW1lbnRhdGlvbi4KICMKICMgRm9yIHRoaXMgcHVycG9zZSwgdGhlIG1vZHVsZS1sZXZlbCAiRVQiIHN5bWJvbCBpcyB0ZW1wb3JhcmlseQogIyBtb25rZXktcGF0Y2hlZCB3aGVuIHJ1bm5pbmcgdGhlICJ0ZXN0X3htbF9ldHJlZV9jIiB0ZXN0IHN1aXRlLgogIyBEb24ndCByZS1pbXBvcnQgInhtbC5ldHJlZS5FbGVtZW50VHJlZSIgbW9kdWxlIGluIHRoZSBkb2NzdHJpbmcsCiAjIGV4Y2VwdCBpZiB0aGUgdGVzdCBpcyBzcGVjaWZpYyB0byB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgogCi1pbXBvcnQgc3lzCiBpbXBvcnQgaHRtbAoraW1wb3J0IGlvCitpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBmaW5kZmlsZSwgdW5saW5rLCBpbXBvcnRfZnJlc2hfbW9kdWxlLCBnY19jb2xsZWN0CiAKLWZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZSBhcyBFVAorcHlFVCA9IE5vbmUKK0VUID0gTm9uZQogCiBTSU1QTEVfWE1MRklMRSA9IGZpbmRmaWxlKCJzaW1wbGUueG1sIiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCiB0cnk6Ci0gICAgU0lNUExFX1hNTEZJTEUuZW5jb2RlKCJ1dGY4IikKKyAgICBTSU1QTEVfWE1MRklMRS5lbmNvZGUoInV0Zi04IikKIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImZpbGVuYW1lIGlzIG5vdCBlbmNvZGFibGUgdG8gdXRmOCIpCiBTSU1QTEVfTlNfWE1MRklMRSA9IGZpbmRmaWxlKCJzaW1wbGUtbnMueG1sIiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCkBAIC01Nyw2ICs2MywyMiBAQAogPC9ib2R5PgogIiIiCiAKK1NBTVBMRV9YTUxfTlNfRUxFTVMgPSAiIiIKKzxyb290PgorPGg6dGFibGUgeG1sbnM6aD0iaGVsbG8iPgorICA8aDp0cj4KKyAgICA8aDp0ZD5BcHBsZXM8L2g6dGQ+CisgICAgPGg6dGQ+QmFuYW5hczwvaDp0ZD4KKyAgPC9oOnRyPgorPC9oOnRhYmxlPgorCis8Zjp0YWJsZSB4bWxuczpmPSJmb28iPgorICA8ZjpuYW1lPkFmcmljYW4gQ29mZmVlIFRhYmxlPC9mOm5hbWU+CisgIDxmOndpZHRoPjgwPC9mOndpZHRoPgorICA8ZjpsZW5ndGg+MTIwPC9mOmxlbmd0aD4KKzwvZjp0YWJsZT4KKzwvcm9vdD4KKyIiIgogCiBkZWYgc2FuaXR5KCk6CiAgICAgIiIiCkBAIC0xODgsMTAgKzIxMCw4IEBACiAKICAgICBUaGVzZSBtZXRob2RzIHJldHVybiBhbiBpdGVyYWJsZS4gU2VlIGJ1ZyA2NDcyLgogCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXIoInRhZyIpLl9fbmV4dF9fKQogICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyZmluZCgidGFnIikuX19uZXh0X18pCiAgICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXJmaW5kKCIqIikuX19uZXh0X18pCi0gICAgPj4+IGNoZWNrX21ldGhvZCh0cmVlLml0ZXIoInRhZyIpLl9fbmV4dF9fKQogICAgID4+PiBjaGVja19tZXRob2QodHJlZS5pdGVyZmluZCgidGFnIikuX19uZXh0X18pCiAgICAgPj4+IGNoZWNrX21ldGhvZCh0cmVlLml0ZXJmaW5kKCIqIikuX19uZXh0X18pCiAKQEAgLTI3MCw0MiArMjkwLDYgQEAKICAgICAnPHRhZz5oZWxsbzwvdGFnPicKICAgICAiIiIKIAotIyBPbmx5IHdpdGggUHl0aG9uIGltcGxlbWVudGF0aW9uCi1kZWYgc2ltcGxlZmluZCgpOgotICAgICIiIgotICAgIFRlc3QgZmluZCBtZXRob2RzIHVzaW5nIHRoZSBlbGVtZW50cGF0aCBmYWxsYmFjay4KLQotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKLQotICAgID4+PiBDdXJyZW50RWxlbWVudFBhdGggPSBFbGVtZW50VHJlZS5FbGVtZW50UGF0aAotICAgID4+PiBFbGVtZW50VHJlZS5FbGVtZW50UGF0aCA9IEVsZW1lbnRUcmVlLl9TaW1wbGVFbGVtZW50UGF0aCgpCi0gICAgPj4+IGVsZW0gPSBFbGVtZW50VHJlZS5YTUwoU0FNUExFX1hNTCkKLSAgICA+Pj4gZWxlbS5maW5kKCJ0YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiBFbGVtZW50VHJlZS5FbGVtZW50VHJlZShlbGVtKS5maW5kKCJ0YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0YWciKQotICAgICd0ZXh0JwotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0b2ciKQotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0b2ciLCAiZGVmYXVsdCIpCi0gICAgJ2RlZmF1bHQnCi0gICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRUcmVlKGVsZW0pLmZpbmR0ZXh0KCJ0YWciKQotICAgICd0ZXh0JwotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInRhZyIpKQotICAgIFsndGFnJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJywgJ3RhZyddCi0KLSAgICBQYXRoIHN5bnRheCBkb2Vzbid0IHdvcmsgaW4gdGhpcyBjYXNlLgotCi0gICAgPj4+IGVsZW0uZmluZCgic2VjdGlvbi90YWciKQotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJzZWN0aW9uL3RhZyIpCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgic2VjdGlvbi90YWciKSkKLSAgICBbXQotCi0gICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoID0gQ3VycmVudEVsZW1lbnRQYXRoCi0gICAgIiIiCi0KIGRlZiBmaW5kKCk6CiAgICAgIiIiCiAgICAgVGVzdCBmaW5kIG1ldGhvZHMgKGluY2x1ZGluZyB4cGF0aCBzeW50YXgpLgpAQCAtNDYwLDE3ICs0NDQsMTkgQEAKICAgICAiIiIKICAgICBDaGVjayB0aGF0IHRoZSBwYXRoIGNhY2hlIGJlaGF2ZXMgc2FuZWx5LgogCisgICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAorCiAgICAgPj4+IGVsZW0gPSBFVC5YTUwoU0FNUExFX1hNTCkKICAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoMTApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQotICAgID4+PiBjYWNoZV9sZW5fMTAgPSBsZW4oRVQuRWxlbWVudFBhdGguX2NhY2hlKQorICAgID4+PiBjYWNoZV9sZW5fMTAgPSBsZW4oRWxlbWVudFBhdGguX2NhY2hlKQogICAgID4+PiBmb3IgaSBpbiByYW5nZSgxMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCi0gICAgPj4+IGxlbihFVC5FbGVtZW50UGF0aC5fY2FjaGUpID09IGNhY2hlX2xlbl8xMAorICAgID4+PiBsZW4oRWxlbWVudFBhdGguX2NhY2hlKSA9PSBjYWNoZV9sZW5fMTAKICAgICBUcnVlCiAgICAgPj4+IGZvciBpIGluIHJhbmdlKDIwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKLSAgICA+Pj4gbGVuKEVULkVsZW1lbnRQYXRoLl9jYWNoZSkgPiBjYWNoZV9sZW5fMTAKKyAgICA+Pj4gbGVuKEVsZW1lbnRQYXRoLl9jYWNoZSkgPiBjYWNoZV9sZW5fMTAKICAgICBUcnVlCiAgICAgPj4+IGZvciBpIGluIHJhbmdlKDYwMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCi0gICAgPj4+IGxlbihFVC5FbGVtZW50UGF0aC5fY2FjaGUpIDwgNTAwCisgICAgPj4+IGxlbihFbGVtZW50UGF0aC5fY2FjaGUpIDwgNTAwCiAgICAgVHJ1ZQogICAgICIiIgogCkBAIC05MDIsNjUgKzg4OCw2IEBACiAgICAgIiIiCiAgICAgRVQuWE1MKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/Pjx4bWwgLz4iICUgZW5jb2RpbmcpCiAKLWRlZiBlbmNvZGluZygpOgotICAgIHIiIiIKLSAgICBUZXN0IGVuY29kaW5nIGlzc3Vlcy4KLQotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKLSAgICA+Pj4gZWxlbS50ZXh0ID0gImFiYyIKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWc+YWJjPC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICBiJzx0YWc+YWJjPC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikKLSAgICBiJzx0YWc+YWJjPC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgIGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/PlxuPHRhZz5hYmM8L3RhZz4iCi0KLSAgICA+Pj4gZWxlbS50ZXh0ID0gIjwmXCJcJz4iCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgIGInPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikgIyBjZGF0YSBjaGFyYWN0ZXJzCi0gICAgYic8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpCi0gICAgYic8P3htbCB2ZXJzaW9uPVwnMS4wXCcgZW5jb2Rpbmc9XCdpc28tODg1OS0xXCc/PlxuPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotCi0gICAgPj4+IGVsZW0uYXR0cmliWyJrZXkiXSA9ICI8JlwiXCc+IgotICAgID4+PiBlbGVtLnRleHQgPSBOb25lCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgYic8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICBiJzw/eG1sIHZlcnNpb249XCcxLjBcJyBlbmNvZGluZz1cJ2lzby04ODU5LTFcJz8+XG48dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicKLQotICAgID4+PiBlbGVtLnRleHQgPSAnXHhlNVx4ZjZceGY2PD4nCi0gICAgPj4+IGVsZW0uYXR0cmliLmNsZWFyKCkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWc+XHhlNVx4ZjZceGY2Jmx0OyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgIGInPHRhZz5ceGMzXHhhNVx4YzNceGI2XHhjM1x4YjYmbHQ7Jmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8dGFnPiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgIGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/PlxuPHRhZz5ceGU1XHhmNlx4ZjYmbHQ7Jmd0OzwvdGFnPiIKLQotICAgID4+PiBlbGVtLmF0dHJpYlsia2V5Il0gPSAnXHhlNVx4ZjZceGY2PD4nCi0gICAgPj4+IGVsZW0udGV4dCA9IE5vbmUKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWcga2V5PSJceGU1XHhmNlx4ZjYmbHQ7Jmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgIGInPHRhZyBrZXk9Ilx4YzNceGE1XHhjM1x4YjZceGMzXHhiNiZsdDsmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8dGFnIGtleT0iJiMyMjk7JiMyNDY7JiMyNDY7Jmx0OyZndDsiIC8+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgIGInPD94bWwgdmVyc2lvbj1cJzEuMFwnIGVuY29kaW5nPVwnaXNvLTg4NTktMVwnPz5cbjx0YWcga2V5PSJceGU1XHhmNlx4ZjYmbHQ7Jmd0OyIgLz4nCi0gICAgIiIiCi0KIGRlZiBtZXRob2RzKCk6CiAgICAgciIiIgogICAgIFRlc3Qgc2VyaWFsaXphdGlvbiBtZXRob2RzLgpAQCAtOTc5LDM2ICs5MDYsNiBAQAogICAgICcxIDwgMlxuJwogICAgICIiIgogCi1kZWYgaXRlcmF0b3JzKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBpdGVyYXRvcnMuCi0KLSAgICA+Pj4gZSA9IEVULlhNTCgiPGh0bWw+PGJvZHk+dGhpcyBpcyBhIDxpPnBhcmFncmFwaDwvaT4uPC9ib2R5Pi4uPC9odG1sPiIpCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGUuaXRlcigpKQotICAgIFsnaHRtbCcsICdib2R5JywgJ2knXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlLmZpbmQoImJvZHkiKS5pdGVyKCkpCi0gICAgWydib2R5JywgJ2knXQotICAgID4+PiBzdW1tYXJpemUobmV4dChlLml0ZXIoKSkpCi0gICAgJ2h0bWwnCi0gICAgPj4+ICIiLmpvaW4oZS5pdGVydGV4dCgpKQotICAgICd0aGlzIGlzIGEgcGFyYWdyYXBoLi4uJwotICAgID4+PiAiIi5qb2luKGUuZmluZCgiYm9keSIpLml0ZXJ0ZXh0KCkpCi0gICAgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguJwotICAgID4+PiBuZXh0KGUuaXRlcnRleHQoKSkKLSAgICAndGhpcyBpcyBhICcKLQotICAgIE1ldGhvZCBpdGVycGFyc2Ugc2hvdWxkIHJldHVybiBhbiBpdGVyYXRvci4gU2VlIGJ1ZyA2NDcyLgotCi0gICAgPj4+IHNvdXJjZWZpbGUgPSBzZXJpYWxpemUoZSwgdG9fc3RyaW5nPUZhbHNlKQotICAgID4+PiBuZXh0KEVULml0ZXJwYXJzZShzb3VyY2VmaWxlKSkgICMgZG9jdGVzdDogK0VMTElQU0lTCi0gICAgKCdlbmQnLCA8RWxlbWVudCAnaScgYXQgMHguLi4+KQotCi0gICAgPj4+IHRyZWUgPSBFVC5FbGVtZW50VHJlZShOb25lKQotICAgID4+PiB0cmVlLml0ZXIoKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBBdHRyaWJ1dGVFcnJvcjogJ05vbmVUeXBlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnaXRlcicKLSAgICAiIiIKLQogRU5USVRZX1hNTCA9ICIiIlwKIDwhRE9DVFlQRSBwb2ludHMgWwogPCFFTlRJVFkgJSB1c2VyLWVudGl0aWVzIFNZU1RFTSAndXNlci1lbnRpdGllcy54bWwnPgpAQCAtMTA0OSwyNiArOTQ2LDYgQEAKICAgICAnPGRvY3VtZW50PnRleHQ8L2RvY3VtZW50PicKICAgICAiIiIKIAotZGVmIGVycm9yKHhtbCk6Ci0gICAgIiIiCi0KLSAgICBUZXN0IGVycm9yIGhhbmRsaW5nLgotCi0gICAgPj4+IGlzc3ViY2xhc3MoRVQuUGFyc2VFcnJvciwgU3ludGF4RXJyb3IpCi0gICAgVHJ1ZQotICAgID4+PiBlcnJvcigiZm9vIikucG9zaXRpb24KLSAgICAoMSwgMCkKLSAgICA+Pj4gZXJyb3IoIjx0YWc+JmZvbzs8L3RhZz4iKS5wb3NpdGlvbgotICAgICgxLCA1KQotICAgID4+PiBlcnJvcigiZm9vYmFyPCIpLnBvc2l0aW9uCi0gICAgKDEsIDYpCi0KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIEVULlhNTCh4bWwpCi0gICAgZXhjZXB0IEVULlBhcnNlRXJyb3I6Ci0gICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKVsxXQotCiBkZWYgbmFtZXNwYWNlKCk6CiAgICAgIiIiCiAgICAgVGVzdCBuYW1lc3BhY2UgaXNzdWVzLgpAQCAtMTI1Niw4ICsxMTMzLDggQEAKIAogICAgID4+PiBFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsICc8dGVzdGluZyY+JykpCiAgICAgYic8P3Rlc3QgPHRlc3RpbmcmPj8+JwotICAgID4+PiBFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsICc8dGVzdGluZyY+XHhlMycpLCAnbGF0aW4xJykKLSAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2xhdGluMSc/Plxcbjw/dGVzdCA8dGVzdGluZyY+XFx4ZTM/PiIKKyAgICA+Pj4gRVQudG9zdHJpbmcoRVQuUEkoJ3Rlc3QnLCAnPHRlc3RpbmcmPlx4ZTMnKSwgJ2xhdGluLTEnKQorICAgIGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nbGF0aW4tMSc/Plxcbjw/dGVzdCA8dGVzdGluZyY+XFx4ZTM/PiIKICAgICAiIiIKIAogIwpAQCAtMTMzNiwyMSArMTIxMywyMCBAQAogPC9kb2N1bWVudD4KICIiIi5mb3JtYXQoaHRtbC5lc2NhcGUoU0lNUExFX1hNTEZJTEUsIFRydWUpKQogCisKIGRlZiB4aW5jbHVkZV9sb2FkZXIoaHJlZiwgcGFyc2U9InhtbCIsIGVuY29kaW5nPU5vbmUpOgogICAgIHRyeToKICAgICAgICAgZGF0YSA9IFhJTkNMVURFW2hyZWZdCiAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICByYWlzZSBJT0Vycm9yKCJyZXNvdXJjZSBub3QgZm91bmQiKQorICAgICAgICByYWlzZSBPU0Vycm9yKCJyZXNvdXJjZSBub3QgZm91bmQiKQogICAgIGlmIHBhcnNlID09ICJ4bWwiOgotICAgICAgICBmcm9tIHhtbC5ldHJlZS5FbGVtZW50VHJlZSBpbXBvcnQgWE1MCi0gICAgICAgIHJldHVybiBYTUwoZGF0YSkKKyAgICAgICAgZGF0YSA9IEVULlhNTChkYXRhKQogICAgIHJldHVybiBkYXRhCiAKIGRlZiB4aW5jbHVkZSgpOgogICAgIHIiIiIKICAgICBCYXNpYyBpbmNsdXNpb24gZXhhbXBsZSAoWEluY2x1ZGUgQy4xKQogCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZSBhcyBFVAogICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKIAogICAgID4+PiBkb2N1bWVudCA9IHhpbmNsdWRlX2xvYWRlcigiQzEueG1sIikKQEAgLTE0MDUsMjYgKzEyODEsMTAgQEAKICAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoIkM1LnhtbCIpCiAgICAgPj4+IEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIHhpbmNsdWRlX2xvYWRlcikKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgSU9FcnJvcjogcmVzb3VyY2Ugbm90IGZvdW5kCisgICAgT1NFcnJvcjogcmVzb3VyY2Ugbm90IGZvdW5kCiAgICAgPj4+ICMgcHJpbnQoc2VyaWFsaXplKGRvY3VtZW50KSkgIyBDNQogICAgICIiIgogCi1kZWYgeGluY2x1ZGVfZGVmYXVsdCgpOgotICAgICIiIgotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKLQotICAgID4+PiBkb2N1bWVudCA9IHhpbmNsdWRlX2xvYWRlcigiZGVmYXVsdC54bWwiKQotICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50KQotICAgID4+PiBwcmludChzZXJpYWxpemUoZG9jdW1lbnQpKSAjIGRlZmF1bHQKLSAgICA8ZG9jdW1lbnQ+Ci0gICAgICA8cD5FeGFtcGxlLjwvcD4KLSAgICAgIDxyb290PgotICAgICAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+Ci0gICAgICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsCi0gICAgICAgPGVtcHR5LWVsZW1lbnQgLz4KLSAgICA8L3Jvb3Q+Ci0gICAgPC9kb2N1bWVudD4KLSAgICAiIiIKIAogIwogIyBiYWRseSBmb3JtYXR0ZWQgeGk6aW5jbHVkZSB0YWdzCkBAIC0xNjEyLDcgKzE0NzIsNyBAQAogCiBjbGFzcyBFeGNlcHRpb25GaWxlOgogICAgIGRlZiByZWFkKHNlbGYsIHgpOgotICAgICAgICByYWlzZSBJT0Vycm9yCisgICAgICAgIHJhaXNlIE9TRXJyb3IKIAogZGVmIHhtbHRvb2xraXQ2MCgpOgogICAgICIiIgpAQCAtMTYyMCw3ICsxNDgwLDcgQEAKICAgICBIYW5kbGUgY3Jhc2ggaW4gc3RyZWFtIHNvdXJjZS4KICAgICA+Pj4gdHJlZSA9IEVULnBhcnNlKEV4Y2VwdGlvbkZpbGUoKSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgSU9FcnJvcgorICAgIE9TRXJyb3IKIAogICAgICIiIgogCkBAIC0xODU0LDYgKzE3MTQsNjU1IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAorY2xhc3MgQmFzaWNFbGVtZW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYXVnbWVudGF0aW9uX3R5cGVfZXJyb3JzKHNlbGYpOgorICAgICAgICBlID0gRVQuRWxlbWVudCgnam9lJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlLmFwcGVuZCwgJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGUuZXh0ZW5kLCBbRVQuRWxlbWVudCgnYmFyJyksICdmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlLmluc2VydCwgMCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9jeWNsaWNfZ2Moc2VsZik6CisgICAgICAgIGNsYXNzIER1bW15OgorICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgVGVzdCB0aGUgc2hvcnRlc3QgY3ljbGU6IGQtPmVsZW1lbnQtPmQKKyAgICAgICAgZCA9IER1bW15KCkKKyAgICAgICAgZC5kdW1teXJlZiA9IEVULkVsZW1lbnQoJ2pvZScsIGF0dHI9ZCkKKyAgICAgICAgd3JlZiA9IHdlYWtyZWYucmVmKGQpCisgICAgICAgIGRlbCBkCisgICAgICAgIGdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cmVmKCkpCisKKyAgICAgICAgIyBBIGxvbmdlciBjeWNsZTogZC0+ZS0+ZTItPmQKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoJ2pvZScpCisgICAgICAgIGQgPSBEdW1teSgpCisgICAgICAgIGQuZHVtbXlyZWYgPSBlCisgICAgICAgIHdyZWYgPSB3ZWFrcmVmLnJlZihkKQorICAgICAgICBlMiA9IEVULlN1YkVsZW1lbnQoZSwgJ2ZvbycsIGF0dHI9ZCkKKyAgICAgICAgZGVsIGQsIGUsIGUyCisgICAgICAgIGdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cmVmKCkpCisKKyAgICAgICAgIyBBIGN5Y2xlIGJldHdlZW4gRWxlbWVudCBvYmplY3RzIGFzIGNoaWxkcmVuIG9mIG9uZSBhbm90aGVyCisgICAgICAgICMgZTEtPmUyLT5lMy0+ZTEKKyAgICAgICAgZTEgPSBFVC5FbGVtZW50KCdlMScpCisgICAgICAgIGUyID0gRVQuRWxlbWVudCgnZTInKQorICAgICAgICBlMyA9IEVULkVsZW1lbnQoJ2UzJykKKyAgICAgICAgZTEuYXBwZW5kKGUyKQorICAgICAgICBlMi5hcHBlbmQoZTIpCisgICAgICAgIGUzLmFwcGVuZChlMSkKKyAgICAgICAgd3JlZiA9IHdlYWtyZWYucmVmKGUxKQorICAgICAgICBkZWwgZTEsIGUyLCBlMworICAgICAgICBnY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUod3JlZigpKQorCisgICAgZGVmIHRlc3Rfd2Vha3JlZihzZWxmKToKKyAgICAgICAgZmxhZyA9IEZhbHNlCisgICAgICAgIGRlZiB3cmVmX2NiKHcpOgorICAgICAgICAgICAgbm9ubG9jYWwgZmxhZworICAgICAgICAgICAgZmxhZyA9IFRydWUKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoJ2UnKQorICAgICAgICB3cmVmID0gd2Vha3JlZi5yZWYoZSwgd3JlZl9jYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmVmKCkudGFnLCAnZScpCisgICAgICAgIGRlbCBlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZywgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmVmKCksIE5vbmUpCisKKworY2xhc3MgRWxlbWVudFRyZWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pc3R5cGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5QYXJzZUVycm9yLCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRVQuUU5hbWUsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5FbGVtZW50VHJlZSwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULkVsZW1lbnQsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5UcmVlQnVpbGRlciwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlhNTFBhcnNlciwgdHlwZSkKKworICAgIGRlZiB0ZXN0X0VsZW1lbnRfc3ViY2xhc3NfdHJpdmlhbChzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KEVULkVsZW1lbnQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG15ZSA9IE15RWxlbWVudCgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG15ZSwgRVQuRWxlbWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG15ZSwgTXlFbGVtZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS50YWcsICdmb28nKQorCisgICAgICAgICMgdGVzdCB0aGF0IGF0dHJpYnV0ZSBhc3NpZ25tZW50IHdvcmtzIChpc3N1ZSAxNDg0OSkKKyAgICAgICAgbXllLnRleHQgPSAiam9lIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS50ZXh0LCAiam9lIikKKworICAgIGRlZiB0ZXN0X0VsZW1lbnRfc3ViY2xhc3NfY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIE15RWxlbWVudChFVC5FbGVtZW50KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWcsIGF0dHJpYj17fSwgKipleHRyYSk6CisgICAgICAgICAgICAgICAgc3VwZXIoTXlFbGVtZW50LCBzZWxmKS5fX2luaXRfXyh0YWcgKyAnX18nLCBhdHRyaWIsICoqZXh0cmEpCisKKyAgICAgICAgbXllID0gTXlFbGVtZW50KCdmb28nLCB7J2EnOiAxLCAnYic6IDJ9LCBjPTMsIGQ9NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWUudGFnLCAnZm9vX18nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChteWUuaXRlbXMoKSksCisgICAgICAgICAgICBbKCdhJywgMSksICgnYicsIDIpLCAoJ2MnLCAzKSwgKCdkJywgNCldKQorCisgICAgZGVmIHRlc3RfRWxlbWVudF9zdWJjbGFzc19uZXdfbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBNeUVsZW1lbnQoRVQuRWxlbWVudCk6CisgICAgICAgICAgICBkZWYgbmV3bWV0aG9kKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRhZworCisgICAgICAgIG15ZSA9IE15RWxlbWVudCgnam9lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWUubmV3bWV0aG9kKCksICdqb2UnKQorCisKK2NsYXNzIEVsZW1lbnRJdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF9pbGlzdChzZWxmLCBlbGVtLCB0YWc9Tm9uZSk6CisgICAgICAgIHJldHVybiBzdW1tYXJpemVfbGlzdChlbGVtLml0ZXIodGFnKSkKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBkb2MgPSBFVC5YTUwoIjxodG1sPjxib2R5PnRoaXMgaXMgYSA8aT5wYXJhZ3JhcGg8L2k+LjwvYm9keT4uLjwvaHRtbD4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGRvYyksIFsnaHRtbCcsICdib2R5JywgJ2knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MuZmluZCgnYm9keScpKSwgWydib2R5JywgJ2knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGRvYy5pdGVyKCkpLnRhZywgJ2h0bWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4oZG9jLml0ZXJ0ZXh0KCkpLCAndGhpcyBpcyBhIHBhcmFncmFwaC4uLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihkb2MuZmluZCgnYm9keScpLml0ZXJ0ZXh0KCkpLAorICAgICAgICAgICAgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGRvYy5pdGVydGV4dCgpKSwgJ3RoaXMgaXMgYSAnKQorCisgICAgICAgICMgaXRlcnBhcnNlIHNob3VsZCByZXR1cm4gYW4gaXRlcmF0b3IKKyAgICAgICAgc291cmNlZmlsZSA9IHNlcmlhbGl6ZShkb2MsIHRvX3N0cmluZz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KEVULml0ZXJwYXJzZShzb3VyY2VmaWxlKSlbMF0sICdlbmQnKQorCisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdHJlZS5pdGVyKQorCisgICAgZGVmIHRlc3RfY29ybmVycyhzZWxmKToKKyAgICAgICAgIyBzaW5nbGUgcm9vdCwgbm8gc3ViZWxlbWVudHMKKyAgICAgICAgYSA9IEVULkVsZW1lbnQoJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGEpLCBbJ2EnXSkKKworICAgICAgICAjIG9uZSBjaGlsZAorICAgICAgICBiID0gRVQuU3ViRWxlbWVudChhLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYScsICdiJ10pCisKKyAgICAgICAgIyBvbmUgY2hpbGQgYW5kIG9uZSBncmFuZGNoaWxkCisgICAgICAgIGMgPSBFVC5TdWJFbGVtZW50KGIsICdjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJywgJ2InLCAnYyddKQorCisgICAgICAgICMgdHdvIGNoaWxkcmVuLCBvbmx5IGZpcnN0IHdpdGggZ3JhbmRjaGlsZAorICAgICAgICBkID0gRVQuU3ViRWxlbWVudChhLCAnZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYScsICdiJywgJ2MnLCAnZCddKQorCisgICAgICAgICMgcmVwbGFjZSBmaXJzdCBjaGlsZCBieSBzZWNvbmQKKyAgICAgICAgYVswXSA9IGFbMV0KKyAgICAgICAgZGVsIGFbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJywgJ2QnXSkKKworICAgIGRlZiB0ZXN0X2l0ZXJfYnlfdGFnKHNlbGYpOgorICAgICAgICBkb2MgPSBFVC5YTUwoJycnCisgICAgICAgICAgICA8ZG9jdW1lbnQ+CisgICAgICAgICAgICAgICAgPGhvdXNlPgorICAgICAgICAgICAgICAgICAgICA8cm9vbT5iZWRyb29tMTwvcm9vbT4KKyAgICAgICAgICAgICAgICAgICAgPHJvb20+YmVkcm9vbTI8L3Jvb20+CisgICAgICAgICAgICAgICAgPC9ob3VzZT4KKyAgICAgICAgICAgICAgICA8c2hlZD5ub3RoaW5nIGhlcmUKKyAgICAgICAgICAgICAgICA8L3NoZWQ+CisgICAgICAgICAgICAgICAgPGhvdXNlPgorICAgICAgICAgICAgICAgICAgICA8cm9vbT5iZWRyb29tODwvcm9vbT4KKyAgICAgICAgICAgICAgICA8L2hvdXNlPgorICAgICAgICAgICAgPC9kb2N1bWVudD4nJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MsICdyb29tJyksIFsncm9vbSddICogMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MsICdob3VzZScpLCBbJ2hvdXNlJ10gKiAyKQorCisgICAgICAgICMgbWFrZSBzdXJlIGJvdGggdGFnPU5vbmUgYW5kIHRhZz0nKicgcmV0dXJuIGFsbCB0YWdzCisgICAgICAgIGFsbF90YWdzID0gWydkb2N1bWVudCcsICdob3VzZScsICdyb29tJywgJ3Jvb20nLAorICAgICAgICAgICAgICAgICAgICAnc2hlZCcsICdob3VzZScsICdyb29tJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MpLCBhbGxfdGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MsICcqJyksIGFsbF90YWdzKQorCisKK2NsYXNzIFRyZWVCdWlsZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgc2FtcGxlMSA9ICgnPCFET0NUWVBFIGh0bWwgUFVCTElDJworICAgICAgICAnICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiInCisgICAgICAgICcgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPicKKyAgICAgICAgJzxodG1sPnRleHQ8L2h0bWw+JykKKworICAgIHNhbXBsZTIgPSAnJyc8dG9wbGV2ZWw+c29tZXRleHQ8L3RvcGxldmVsPicnJworCisgICAgZGVmIHRlc3RfZHVtbXlfYnVpbGRlcihzZWxmKToKKyAgICAgICAgY2xhc3MgQmFzZUR1bW15QnVpbGRlcjoKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBjbGFzcyBEdW1teUJ1aWxkZXIoQmFzZUR1bW15QnVpbGRlcik6CisgICAgICAgICAgICBkYXRhID0gc3RhcnQgPSBlbmQgPSBsYW1iZGEgKmE6IE5vbmUKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PUR1bW15QnVpbGRlcigpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLmNsb3NlKCksIDQyKQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9QmFzZUR1bW15QnVpbGRlcigpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLmNsb3NlKCksIDQyKQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9b2JqZWN0KCkpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGFyc2VyLmNsb3NlKCkpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlUcmVlQnVpbGRlcihFVC5UcmVlQnVpbGRlcik6CisgICAgICAgICAgICBkZWYgZm9vYmFyKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHJldHVybiB4ICogMgorCisgICAgICAgIHRiID0gTXlUcmVlQnVpbGRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGIuZm9vYmFyKDEwKSwgMjApCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD10YikKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorCisgICAgICAgIGUgPSBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGFnLCAnaHRtbCcpCisKKyAgICBkZWYgdGVzdF9lbGVtZW50X2ZhY3Rvcnkoc2VsZik6CisgICAgICAgIGxzdCA9IFtdCisgICAgICAgIGRlZiBteWZhY3RvcnkodGFnLCBhdHRyaWIpOgorICAgICAgICAgICAgbm9ubG9jYWwgbHN0CisgICAgICAgICAgICBsc3QuYXBwZW5kKHRhZykKKyAgICAgICAgICAgIHJldHVybiBFVC5FbGVtZW50KHRhZywgYXR0cmliKQorCisgICAgICAgIHRiID0gRVQuVHJlZUJ1aWxkZXIoZWxlbWVudF9mYWN0b3J5PW15ZmFjdG9yeSkKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD10YikKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUyKQorICAgICAgICBwYXJzZXIuY2xvc2UoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbJ3RvcGxldmVsJ10pCisKKyAgICBkZWYgdGVzdF9kb2N0eXBlKHNlbGYpOgorICAgICAgICBjbGFzcyBEb2N0eXBlUGFyc2VyOgorICAgICAgICAgICAgX2RvY3R5cGUgPSBOb25lCisKKyAgICAgICAgICAgIGRlZiBkb2N0eXBlKHNlbGYsIG5hbWUsIHB1YmlkLCBzeXN0ZW0pOgorICAgICAgICAgICAgICAgIHNlbGYuX2RvY3R5cGUgPSAobmFtZSwgcHViaWQsIHN5c3RlbSkKKworICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kb2N0eXBlCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1Eb2N0eXBlUGFyc2VyKCkpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5jbG9zZSgpLAorICAgICAgICAgICAgKCdodG1sJywgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJywKKyAgICAgICAgICAgICAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCcpKQorCisKK2NsYXNzIFhpbmNsdWRlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF9teV9sb2FkZXIoc2VsZiwgaHJlZiwgcGFyc2UpOgorICAgICAgICAjIFVzZWQgdG8gYXZvaWQgYSB0ZXN0LWRlcGVuZGVuY3kgcHJvYmxlbSB3aGVyZSB0aGUgZGVmYXVsdCBsb2FkZXIKKyAgICAgICAgIyBvZiBFbGVtZW50SW5jbHVkZSB1c2VzIHRoZSBweUVUIHBhcnNlciBmb3IgY0VUIHRlc3RzLgorICAgICAgICBpZiBwYXJzZSA9PSAneG1sJzoKKyAgICAgICAgICAgIHdpdGggb3BlbihocmVmLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgIHJldHVybiBFVC5wYXJzZShmKS5nZXRyb290KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgdGVzdF94aW5jbHVkZV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKKyAgICAgICAgZG9jID0geGluY2x1ZGVfbG9hZGVyKCdkZWZhdWx0LnhtbCcpCisgICAgICAgIEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jLCBzZWxmLl9teV9sb2FkZXIpCisgICAgICAgIHMgPSBzZXJpYWxpemUoZG9jKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc3RyaXAoKSwgJycnPGRvY3VtZW50PgorICA8cD5FeGFtcGxlLjwvcD4KKyAgPHJvb3Q+CisgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PgorICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsCisgICA8ZW1wdHktZWxlbWVudCAvPgorPC9yb290PgorPC9kb2N1bWVudD4nJycpCisKKworY2xhc3MgWE1MUGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgc2FtcGxlMSA9ICc8ZmlsZT48bGluZT4yMjwvbGluZT48L2ZpbGU+JworICAgIHNhbXBsZTIgPSAoJzwhRE9DVFlQRSBodG1sIFBVQkxJQycKKyAgICAgICAgJyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iJworICAgICAgICAnICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4nCisgICAgICAgICc8aHRtbD50ZXh0PC9odG1sPicpCisKKyAgICBkZWYgX2NoZWNrX3NhbXBsZV9lbGVtZW50KHNlbGYsIGUpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGFnLCAnZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZVswXS50YWcsICdsaW5lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlWzBdLnRleHQsICcyMicpCisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl9hcmdzKHNlbGYpOgorICAgICAgICAjIFBvc2l0aW9uYWwgYXJncy4gVGhlIGZpcnN0IChodG1sKSBpcyBub3Qgc3VwcG9ydGVkLCBidXQgc2hvdWxkIGJlCisgICAgICAgICMgbmV2ZXJ0aGVsZXNzIGNvcnJlY3RseSBhY2NlcHRlZC4KKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKE5vbmUsIEVULlRyZWVCdWlsZGVyKCksICd1dGYtOCcpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKyAgICAgICAgc2VsZi5fY2hlY2tfc2FtcGxlX2VsZW1lbnQocGFyc2VyLmNsb3NlKCkpCisKKyAgICAgICAgIyBOb3cgYXMga2V5d29yZCBhcmdzLgorICAgICAgICBwYXJzZXIyID0gRVQuWE1MUGFyc2VyKGVuY29kaW5nPSd1dGYtOCcsIGh0bWw9W3t9XSwgdGFyZ2V0PUVULlRyZWVCdWlsZGVyKCkpCisgICAgICAgIHBhcnNlcjIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZV9lbGVtZW50KHBhcnNlcjIuY2xvc2UoKSkKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeVBhcnNlcihFVC5YTUxQYXJzZXIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBwYXJzZXIgPSBNeVBhcnNlcigpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKyAgICAgICAgc2VsZi5fY2hlY2tfc2FtcGxlX2VsZW1lbnQocGFyc2VyLmNsb3NlKCkpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc19kb2N0eXBlKHNlbGYpOgorICAgICAgICBfZG9jdHlwZSA9IE5vbmUKKyAgICAgICAgY2xhc3MgTXlQYXJzZXJXaXRoRG9jdHlwZShFVC5YTUxQYXJzZXIpOgorICAgICAgICAgICAgZGVmIGRvY3R5cGUoc2VsZiwgbmFtZSwgcHViaWQsIHN5c3RlbSk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgX2RvY3R5cGUKKyAgICAgICAgICAgICAgICBfZG9jdHlwZSA9IChuYW1lLCBwdWJpZCwgc3lzdGVtKQorCisgICAgICAgIHBhcnNlciA9IE15UGFyc2VyV2l0aERvY3R5cGUoKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTIpCisgICAgICAgIHBhcnNlci5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2RvY3R5cGUsCisgICAgICAgICAgICAoJ2h0bWwnLCAnLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4nLAorICAgICAgICAgICAgICdodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkJykpCisKKworY2xhc3MgTmFtZXNwYWNlUGFyc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9maW5kX3dpdGhfbmFtZXNwYWNlKHNlbGYpOgorICAgICAgICBuc21hcCA9IHsnaCc6ICdoZWxsbycsICdmJzogJ2Zvbyd9CisgICAgICAgIGRvYyA9IEVULmZyb21zdHJpbmcoU0FNUExFX1hNTF9OU19FTEVNUykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkb2MuZmluZGFsbCgne2hlbGxvfXRhYmxlJywgbnNtYXApKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZG9jLmZpbmRhbGwoJy4vL3toZWxsb310ZCcsIG5zbWFwKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRvYy5maW5kYWxsKCcuLy97Zm9vfW5hbWUnLCBuc21hcCkpLCAxKQorCisKK2NsYXNzIEVsZW1lbnRTbGljaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF9lbGVtX3RhZ3Moc2VsZiwgZWxlbWxpc3QpOgorICAgICAgICByZXR1cm4gW2UudGFnIGZvciBlIGluIGVsZW1saXN0XQorCisgICAgZGVmIF9zdWJlbGVtX3RhZ3Moc2VsZiwgZWxlbSk6CisgICAgICAgIHJldHVybiBzZWxmLl9lbGVtX3RhZ3MobGlzdChlbGVtKSkKKworICAgIGRlZiBfbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oc2VsZiwgbnVtY2hpbGRyZW4pOgorICAgICAgICAiIiJDcmVhdGUgYW4gRWxlbWVudCB3aXRoIGEgdGFnICdhJywgd2l0aCB0aGUgZ2l2ZW4gYW1vdW50IG9mIGNoaWxkcmVuCisgICAgICAgICAgIG5hbWVkICdhMCcsICdhMScgLi4uIGFuZCBzbyBvbi4KKworICAgICAgICAiIiIKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoJ2EnKQorICAgICAgICBmb3IgaSBpbiByYW5nZShudW1jaGlsZHJlbik6CisgICAgICAgICAgICBFVC5TdWJFbGVtZW50KGUsICdhJXMnICUgaSkKKyAgICAgICAgcmV0dXJuIGUKKworICAgIGRlZiB0ZXN0X2dldHNsaWNlX3NpbmdsZV9pbmRleChzZWxmKToKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDEwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZVsxXS50YWcsICdhMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZVstMl0udGFnLCAnYTgnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIGxhbWJkYTogZVsxMl0pCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZV9yYW5nZShzZWxmKToKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVszOl0pLCBbJ2EzJywgJ2E0JywgJ2E1J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzo2XSksIFsnYTMnLCAnYTQnLCAnYTUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVszOjE2XSksIFsnYTMnLCAnYTQnLCAnYTUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVszOjVdKSwgWydhMycsICdhNCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzM6LTFdKSwgWydhMycsICdhNCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzoyXSksIFsnYTAnLCAnYTEnXSkKKworICAgIGRlZiB0ZXN0X2dldHNsaWNlX3N0ZXBzKHNlbGYpOgorICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oMTApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs4OjEwOjFdKSwgWydhOCcsICdhOSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzo6M10pLCBbJ2EwJywgJ2EzJywgJ2E2JywgJ2E5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbOjo4XSksIFsnYTAnLCAnYTgnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVsxOjo4XSksIFsnYTEnLCAnYTknXSkKKworICAgIGRlZiB0ZXN0X2dldHNsaWNlX25lZ2F0aXZlX3N0ZXBzKHNlbGYpOgorICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzo6LTFdKSwgWydhMycsICdhMicsICdhMScsICdhMCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzo6LTJdKSwgWydhMycsICdhMSddKQorCisgICAgZGVmIHRlc3RfZGVsc2xpY2Uoc2VsZik6CisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig0KQorICAgICAgICBkZWwgZVswOjJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EyJywgJ2EzJ10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgIGRlbCBlWzA6XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgW10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgIGRlbCBlWzo6LTFdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbXSkKKworICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKyAgICAgICAgZGVsIGVbOjotMl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTAnLCAnYTInXSkKKworICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKyAgICAgICAgZGVsIGVbMTo6Ml0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTAnLCAnYTInXSkKKworICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oMikKKyAgICAgICAgZGVsIGVbOjoyXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgWydhMSddKQorCisKK2NsYXNzIElPVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgICMgVGVzdCBlbmNvZGluZyBpc3N1ZXMuCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICBlbGVtLnRleHQgPSAiYWJjIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwgJzx0YWc+YWJjPC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IiksCisgICAgICAgICAgICAgICAgYic8dGFnPmFiYzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpLAorICAgICAgICAgICAgICAgIGInPHRhZz5hYmM8L3RhZz4nKQorICAgICAgICBmb3IgZW5jIGluICgiaXNvLTg4NTktMSIsICJ1dGYtMTYiLCAidXRmLTMyIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz1lbmMpLAorICAgICAgICAgICAgICAgICAgICAoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iCisgICAgICAgICAgICAgICAgICAgICAiPHRhZz5hYmM8L3RhZz4iICUgZW5jKS5lbmNvZGUoZW5jKSkKKworICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS50ZXh0ID0gIjwmXCJcJz4iCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0pLCAnPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IiksCisgICAgICAgICAgICAgICAgYic8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicpCisgICAgICAgIGZvciBlbmMgaW4gKCJpc28tODg1OS0xIiwgInV0Zi0xNiIsICJ1dGYtMzIiKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPWVuYyksCisgICAgICAgICAgICAgICAgICAgICgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICI8dGFnPiZsdDsmYW1wO1wiJyZndDs8L3RhZz4iICUgZW5jKS5lbmNvZGUoZW5jKSkKKworICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS5hdHRyaWJbImtleSJdID0gIjwmXCJcJz4iCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0pLCAnPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWcga2V5PSImbHQ7JmFtcDsmcXVvdDtcJyZndDsiIC8+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIiksCisgICAgICAgICAgICAgICAgYic8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicpCisgICAgICAgIGZvciBlbmMgaW4gKCJpc28tODg1OS0xIiwgInV0Zi0xNiIsICJ1dGYtMzIiKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPWVuYyksCisgICAgICAgICAgICAgICAgICAgICgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICI8dGFnIGtleT1cIiZsdDsmYW1wOyZxdW90OycmZ3Q7XCIgLz4iICUgZW5jKS5lbmNvZGUoZW5jKSkKKworICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS50ZXh0ID0gJ1x4ZTVceGY2XHhmNjw+JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwgJzx0YWc+XHhlNVx4ZjZceGY2Jmx0OyZndDs8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWc+XHhjM1x4YTVceGMzXHhiNlx4YzNceGI2Jmx0OyZndDs8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWc+JiMyMjk7JiMyNDY7JiMyNDY7Jmx0OyZndDs8L3RhZz4nKQorICAgICAgICBmb3IgZW5jIGluICgiaXNvLTg4NTktMSIsICJ1dGYtMTYiLCAidXRmLTMyIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz1lbmMpLAorICAgICAgICAgICAgICAgICAgICAoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iCisgICAgICAgICAgICAgICAgICAgICAiPHRhZz7DpcO2w7YmbHQ7Jmd0OzwvdGFnPiIgJSBlbmMpLmVuY29kZShlbmMpKQorCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICBlbGVtLmF0dHJpYlsia2V5Il0gPSAnXHhlNVx4ZjZceGY2PD4nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0pLCAnPHRhZyBrZXk9Ilx4ZTVceGY2XHhmNiZsdDsmZ3Q7IiAvPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpLAorICAgICAgICAgICAgICAgIGInPHRhZyBrZXk9Ilx4YzNceGE1XHhjM1x4YjZceGMzXHhiNiZsdDsmZ3Q7IiAvPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpLAorICAgICAgICAgICAgICAgIGInPHRhZyBrZXk9IiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7IiAvPicpCisgICAgICAgIGZvciBlbmMgaW4gKCJpc28tODg1OS0xIiwgInV0Zi0xNiIsICJ1dGYtMTZsZSIsICJ1dGYtMTZiZSIsICJ1dGYtMzIiKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPWVuYyksCisgICAgICAgICAgICAgICAgICAgICgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICI8dGFnIGtleT1cIsOlw7bDtiZsdDsmZ3Q7XCIgLz4iICUgZW5jKS5lbmNvZGUoZW5jKSkKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgdHJlZS53cml0ZShURVNURk4pCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiJycnPHNpdGUgLz4nJycpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b190ZXh0X2ZpbGUoc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGY6CisgICAgICAgICAgICB0cmVlLndyaXRlKGYsIGVuY29kaW5nPSd1bmljb2RlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiJycnPHNpdGUgLz4nJycpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b19iaW5hcnlfZmlsZShzZWxmKToKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKEVULlhNTCgnJyc8c2l0ZSAvPicnJykpCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIGY6CisgICAgICAgICAgICB0cmVlLndyaXRlKGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fYmluYXJ5X2ZpbGVfd2l0aF9ib20oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICAjIHRlc3QgQk9NIHdyaXRpbmcgdG8gYnVmZmVyZWQgZmlsZQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgdHJlZS53cml0ZShmLCBlbmNvZGluZz0ndXRmLTE2JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAnJyc8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtMTYnPz5cbicnJworICAgICAgICAgICAgICAgICAgICAnJyc8c2l0ZSAvPicnJy5lbmNvZGUoInV0Zi0xNiIpKQorICAgICAgICAjIHRlc3QgQk9NIHdyaXRpbmcgdG8gbm9uLWJ1ZmZlcmVkIGZpbGUKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJywgYnVmZmVyaW5nPTApIGFzIGY6CisgICAgICAgICAgICB0cmVlLndyaXRlKGYsIGVuY29kaW5nPSd1dGYtMTYnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNsb3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksCisgICAgICAgICAgICAgICAgICAgICcnJzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J3V0Zi0xNic/PlxuJycnCisgICAgICAgICAgICAgICAgICAgICcnJzxzaXRlIC8+JycnLmVuY29kZSgidXRmLTE2IikpCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fc3RyaW5naW8oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZSgpCisgICAgICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCcnJzw/eG1sIHZlcnNpb249IjEuMCI/PjxzaXRlPjwvc2l0ZT4nJycpCisgICAgICAgIHRyZWUucGFyc2Uoc3RyZWFtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyZWUuZ2V0cm9vdCgpLnRhZywgJ3NpdGUnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fc3RyaW5naW8oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHRyZWUud3JpdGUoc3RyZWFtLCBlbmNvZGluZz0ndW5pY29kZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmdldHZhbHVlKCksICcnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX2J5dGVzaW8oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZSgpCisgICAgICAgIHJhdyA9IGlvLkJ5dGVzSU8oYicnJzw/eG1sIHZlcnNpb249IjEuMCI/PjxzaXRlPjwvc2l0ZT4nJycpCisgICAgICAgIHRyZWUucGFyc2UocmF3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyZWUuZ2V0cm9vdCgpLnRhZywgJ3NpdGUnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fYnl0ZXNpbyhzZWxmKToKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKEVULlhNTCgnJyc8c2l0ZSAvPicnJykpCisgICAgICAgIHJhdyA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB0cmVlLndyaXRlKHJhdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXcuZ2V0dmFsdWUoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgY2xhc3MgZHVtbXk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X3JlYWRfZnJvbV91c2VyX3RleHRfcmVhZGVyKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygnJyc8P3htbCB2ZXJzaW9uPSIxLjAiPz48c2l0ZT48L3NpdGU+JycnKQorICAgICAgICByZWFkZXIgPSBzZWxmLmR1bW15KCkKKyAgICAgICAgcmVhZGVyLnJlYWQgPSBzdHJlYW0ucmVhZAorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoKQorICAgICAgICB0cmVlLnBhcnNlKHJlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmdldHJvb3QoKS50YWcsICdzaXRlJykKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX3VzZXJfdGV4dF93cml0ZXIoc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHdyaXRlciA9IHNlbGYuZHVtbXkoKQorICAgICAgICB3cml0ZXIud3JpdGUgPSBzdHJlYW0ud3JpdGUKKyAgICAgICAgdHJlZS53cml0ZSh3cml0ZXIsIGVuY29kaW5nPSd1bmljb2RlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uZ2V0dmFsdWUoKSwgJycnPHNpdGUgLz4nJycpCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fdXNlcl9iaW5hcnlfcmVhZGVyKHNlbGYpOgorICAgICAgICByYXcgPSBpby5CeXRlc0lPKGInJyc8P3htbCB2ZXJzaW9uPSIxLjAiPz48c2l0ZT48L3NpdGU+JycnKQorICAgICAgICByZWFkZXIgPSBzZWxmLmR1bW15KCkKKyAgICAgICAgcmVhZGVyLnJlYWQgPSByYXcucmVhZAorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoKQorICAgICAgICB0cmVlLnBhcnNlKHJlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmdldHJvb3QoKS50YWcsICdzaXRlJykKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKCkKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX3VzZXJfYmluYXJ5X3dyaXRlcihzZWxmKToKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKEVULlhNTCgnJyc8c2l0ZSAvPicnJykpCisgICAgICAgIHJhdyA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB3cml0ZXIgPSBzZWxmLmR1bW15KCkKKyAgICAgICAgd3JpdGVyLndyaXRlID0gcmF3LndyaXRlCisgICAgICAgIHRyZWUud3JpdGUod3JpdGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhdy5nZXR2YWx1ZSgpLCBiJycnPHNpdGUgLz4nJycpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b191c2VyX2JpbmFyeV93cml0ZXJfd2l0aF9ib20oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICByYXcgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgd3JpdGVyID0gc2VsZi5kdW1teSgpCisgICAgICAgIHdyaXRlci53cml0ZSA9IHJhdy53cml0ZQorICAgICAgICB3cml0ZXIuc2Vla2FibGUgPSBsYW1iZGE6IFRydWUKKyAgICAgICAgd3JpdGVyLnRlbGwgPSByYXcudGVsbAorICAgICAgICB0cmVlLndyaXRlKHdyaXRlciwgZW5jb2Rpbmc9InV0Zi0xNiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3LmdldHZhbHVlKCksCisgICAgICAgICAgICAgICAgJycnPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTE2Jz8+XG4nJycKKyAgICAgICAgICAgICAgICAnJyc8c2l0ZSAvPicnJy5lbmNvZGUoInV0Zi0xNiIpKQorCisgICAgZGVmIHRlc3RfdG9zdHJpbmdsaXN0X2ludmFyaWFudChzZWxmKToKKyAgICAgICAgcm9vdCA9IEVULmZyb21zdHJpbmcoJzx0YWc+Zm9vPC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIEVULnRvc3RyaW5nKHJvb3QsICd1bmljb2RlJyksCisgICAgICAgICAgICAnJy5qb2luKEVULnRvc3RyaW5nbGlzdChyb290LCAndW5pY29kZScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIEVULnRvc3RyaW5nKHJvb3QsICd1dGYtMTYnKSwKKyAgICAgICAgICAgIGInJy5qb2luKEVULnRvc3RyaW5nbGlzdChyb290LCAndXRmLTE2JykpKQorCisKK2NsYXNzIFBhcnNlRXJyb3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlBhcnNlRXJyb3IoKSwgU3ludGF4RXJyb3IpCisKKyAgICBkZWYgX2dldF9lcnJvcihzZWxmLCBzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgRVQuZnJvbXN0cmluZyhzKQorICAgICAgICBleGNlcHQgRVQuUGFyc2VFcnJvciBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGUKKworICAgIGRlZiB0ZXN0X2Vycm9yX3Bvc2l0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2dldF9lcnJvcignZm9vJykucG9zaXRpb24sICgxLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfZXJyb3IoJzx0YWc+JmZvbzs8L3RhZz4nKS5wb3NpdGlvbiwgKDEsIDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2dldF9lcnJvcignZm9vYmFyPCcpLnBvc2l0aW9uLCAoMSwgNikpCisKKyAgICBkZWYgdGVzdF9lcnJvcl9jb2RlKHNlbGYpOgorICAgICAgICBpbXBvcnQgeG1sLnBhcnNlcnMuZXhwYXQuZXJyb3JzIGFzIEVSUk9SUworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2dldF9lcnJvcignZm9vJykuY29kZSwKKyAgICAgICAgICAgICAgICBFUlJPUlMuY29kZXNbRVJST1JTLlhNTF9FUlJPUl9TWU5UQVhdKQorCisKK2NsYXNzIEtleXdvcmRBcmdzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUZXN0IHZhcmlvdXMgaXNzdWVzIHdpdGgga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIHRvIEVULkVsZW1lbnQKKyAgICAjIGNvbnN0cnVjdG9yIGFuZCBtZXRob2RzCisgICAgZGVmIHRlc3RfaXNzdWUxNDgxOChzZWxmKToKKyAgICAgICAgeCA9IEVULlhNTCgiPGE+Zm9vPC9hPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5maW5kKCdhJywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeC5maW5kKHBhdGg9J2EnLCBuYW1lc3BhY2VzPU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZmluZHRleHQoJ2EnLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB4LmZpbmR0ZXh0KHBhdGg9J2EnLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5maW5kYWxsKCdhJywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeC5maW5kYWxsKHBhdGg9J2EnLCBuYW1lc3BhY2VzPU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoeC5pdGVyZmluZCgnYScsIE5vbmUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHguaXRlcmZpbmQocGF0aD0nYScsIG5hbWVzcGFjZXM9Tm9uZSkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQuRWxlbWVudCgnYScpLmF0dHJpYiwge30pCisgICAgICAgIGVsZW1lbnRzID0gWworICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSksCisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgYXR0cmliPWRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSksCisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgZGljdChocmVmPSIjIiksIGlkPSJmb28iKSwKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBocmVmPSIjIiwgaWQ9ImZvbyIpLAorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSwgaHJlZj0iIyIsIGlkPSJmb28iKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgZSBpbiBlbGVtZW50czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50YWcsICdhJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hdHRyaWIsIGRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSkKKworICAgICAgICBlMiA9IEVULlN1YkVsZW1lbnQoZWxlbWVudHNbMF0sICdmb29iYXInLCBhdHRyaWI9eydrZXkxJzogJ3ZhbHVlMSd9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUyLmF0dHJpYlsna2V5MSddLCAndmFsdWUxJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbXVzdCBiZSBkaWN0LCBub3Qgc3RyJyk6CisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgIkknbSBub3QgYSBkaWN0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ211c3QgYmUgZGljdCwgbm90IHN0cicpOgorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGF0dHJpYj0iSSdtIG5vdCBhIGRpY3QiKQorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHB5RVQsICdvbmx5IGZvciB0aGUgUHl0aG9uIHZlcnNpb24nKQorY2xhc3MgTm9BY2NlbGVyYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGVzdCB0aGF0IHRoZSBDIGFjY2VsZXJhdG9yIHdhcyBub3QgaW1wb3J0ZWQgZm9yIHB5RVQKKyAgICBkZWYgdGVzdF9jb3JyZWN0X2ltcG9ydF9weUVUKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5RVQuRWxlbWVudC5fX21vZHVsZV9fLCAneG1sLmV0cmVlLkVsZW1lbnRUcmVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweUVULlN1YkVsZW1lbnQuX19tb2R1bGVfXywgJ3htbC5ldHJlZS5FbGVtZW50VHJlZScpCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCiBjbGFzcyBDbGVhbkNvbnRleHQob2JqZWN0KToKICAgICAiIiJQcm92aWRlIGRlZmF1bHQgbmFtZXNwYWNlIG1hcHBpbmcgYW5kIHBhdGggY2FjaGUuIiIiCiAgICAgY2hlY2t3YXJuaW5ncyA9IE5vbmUKQEAgLTE4NzIsNDQgKzIzODEsNjkgQEAKICAgICAgICAgICAgICgiVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4gICIKICAgICAgICAgICAgICAiVXNlIC4rIGluc3RlYWQuIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwKICAgICAgICAgICAgICgiVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4gICIKLSAgICAgICAgICAgICAiVXNlIC4rIGluc3RlYWQuIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyksCi0gICAgICAgICAgICAjIFhNTFBhcnNlci5kb2N0eXBlKCkgaXMgZGVwcmVjYXRlZC4KLSAgICAgICAgICAgICgiVGhpcyBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGRlcHJlY2F0ZWQuICBEZWZpbmUgZG9jdHlwZS4uICIKLSAgICAgICAgICAgICAibWV0aG9kIG9uIHRoZSBUcmVlQnVpbGRlciB0YXJnZXQuIiwgRGVwcmVjYXRpb25XYXJuaW5nKSkKKyAgICAgICAgICAgICAiVXNlIC4rIGluc3RlYWQuIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpCiAgICAgICAgIHNlbGYuY2hlY2t3YXJuaW5ncyA9IHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKmRlcHJlY2F0aW9ucywgcXVpZXQ9cXVpZXQpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKLSAgICAgICAgc2VsZi5fbnNtYXAgPSBFbGVtZW50VHJlZS5fbmFtZXNwYWNlX21hcAotICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gRWxlbWVudFRyZWUuRWxlbWVudFBhdGguX2NhY2hlCisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAorICAgICAgICBzZWxmLl9uc21hcCA9IEVULnJlZ2lzdGVyX25hbWVzcGFjZS5fbmFtZXNwYWNlX21hcAogICAgICAgICAjIENvcHkgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIG1hcHBpbmcKLSAgICAgICAgRWxlbWVudFRyZWUuX25hbWVzcGFjZV9tYXAgPSBzZWxmLl9uc21hcC5jb3B5KCkKKyAgICAgICAgc2VsZi5fbnNtYXBfY29weSA9IHNlbGYuX25zbWFwLmNvcHkoKQogICAgICAgICAjIENvcHkgdGhlIHBhdGggY2FjaGUgKHNob3VsZCBiZSBlbXB0eSkKLSAgICAgICAgRWxlbWVudFRyZWUuRWxlbWVudFBhdGguX2NhY2hlID0gc2VsZi5fcGF0aF9jYWNoZS5jb3B5KCkKKyAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IEVsZW1lbnRQYXRoLl9jYWNoZQorICAgICAgICBFbGVtZW50UGF0aC5fY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlLmNvcHkoKQogICAgICAgICBzZWxmLmNoZWNrd2FybmluZ3MuX19lbnRlcl9fKCkKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZQorICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFBhdGgKICAgICAgICAgIyBSZXN0b3JlIG1hcHBpbmcgYW5kIHBhdGggY2FjaGUKLSAgICAgICAgRWxlbWVudFRyZWUuX25hbWVzcGFjZV9tYXAgPSBzZWxmLl9uc21hcAotICAgICAgICBFbGVtZW50VHJlZS5FbGVtZW50UGF0aC5fY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCisgICAgICAgIHNlbGYuX25zbWFwLmNsZWFyKCkKKyAgICAgICAgc2VsZi5fbnNtYXAudXBkYXRlKHNlbGYuX25zbWFwX2NvcHkpCisgICAgICAgIEVsZW1lbnRQYXRoLl9jYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKICAgICAgICAgc2VsZi5jaGVja3dhcm5pbmdzLl9fZXhpdF9fKCphcmdzKQogCiAKLWRlZiB0ZXN0X21haW4obW9kdWxlX25hbWU9J3htbC5ldHJlZS5FbGVtZW50VHJlZScpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUKK2RlZiB0ZXN0X21haW4obW9kdWxlPU5vbmUpOgorICAgICMgV2hlbiBpbnZva2VkIHdpdGhvdXQgYSBtb2R1bGUsIHJ1bnMgdGhlIFB5dGhvbiBFVCB0ZXN0cyBieSBsb2FkaW5nIHB5RVQuCisgICAgIyBPdGhlcndpc2UsIHVzZXMgdGhlIGdpdmVuIG1vZHVsZSBhcyB0aGUgRVQuCisgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIGdsb2JhbCBweUVUCisgICAgICAgIHB5RVQgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCd4bWwuZXRyZWUuRWxlbWVudFRyZWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkPVsnX2VsZW1lbnR0cmVlJ10pCisgICAgICAgIG1vZHVsZSA9IHB5RVQKIAotICAgIHVzZV9weV9tb2R1bGUgPSAobW9kdWxlX25hbWUgPT0gJ3htbC5ldHJlZS5FbGVtZW50VHJlZScpCisgICAgZ2xvYmFsIEVUCisgICAgRVQgPSBtb2R1bGUKIAotICAgICMgVGhlIHNhbWUgZG9jdGVzdHMgYXJlIHVzZWQgZm9yIGJvdGggdGhlIFB5dGhvbiBhbmQgdGhlIEMgaW1wbGVtZW50YXRpb25zCi0gICAgYXNzZXJ0IHRlc3RfeG1sX2V0cmVlLkVULl9fbmFtZV9fID09IG1vZHVsZV9uYW1lCisgICAgdGVzdF9jbGFzc2VzID0gWworICAgICAgICBFbGVtZW50U2xpY2luZ1Rlc3QsCisgICAgICAgIEJhc2ljRWxlbWVudFRlc3QsCisgICAgICAgIElPVGVzdCwKKyAgICAgICAgUGFyc2VFcnJvclRlc3QsCisgICAgICAgIFhpbmNsdWRlVGVzdCwKKyAgICAgICAgRWxlbWVudFRyZWVUZXN0LAorICAgICAgICBFbGVtZW50SXRlclRlc3QsCisgICAgICAgIFRyZWVCdWlsZGVyVGVzdCwKKyAgICAgICAgXQogCi0gICAgIyBYWFggdGhlIEMgbW9kdWxlIHNob3VsZCBnaXZlIHRoZSBzYW1lIHdhcm5pbmdzIGFzIHRoZSBQeXRob24gbW9kdWxlCi0gICAgd2l0aCBDbGVhbkNvbnRleHQocXVpZXQ9bm90IHVzZV9weV9tb2R1bGUpOgotICAgICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfeG1sX2V0cmVlLCB2ZXJib3NpdHk9VHJ1ZSkKKyAgICAjIFRoZXNlIHRlc3RzIHdpbGwgb25seSBydW4gZm9yIHRoZSBwdXJlLVB5dGhvbiB2ZXJzaW9uIHRoYXQgZG9lc24ndCBpbXBvcnQKKyAgICAjIF9lbGVtZW50dHJlZS4gV2UgY2FuJ3QgdXNlIHNraXBVbmxlc3MgaGVyZSwgYmVjYXVzZSBweUVUIGlzIGZpbGxlZCBpbiBvbmx5CisgICAgIyBhZnRlciB0aGUgbW9kdWxlIGlzIGxvYWRlZC4KKyAgICBpZiBweUVUOgorICAgICAgICB0ZXN0X2NsYXNzZXMuZXh0ZW5kKFsKKyAgICAgICAgICAgIE5vQWNjZWxlcmF0b3JUZXN0LAorICAgICAgICAgICAgXSkKIAotICAgICMgVGhlIG1vZHVsZSBzaG91bGQgbm90IGJlIGNoYW5nZWQgYnkgdGhlIHRlc3RzCi0gICAgYXNzZXJ0IHRlc3RfeG1sX2V0cmVlLkVULl9fbmFtZV9fID09IG1vZHVsZV9uYW1lCisgICAgdHJ5OgorICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorCisgICAgICAgICMgWFhYIHRoZSBDIG1vZHVsZSBzaG91bGQgZ2l2ZSB0aGUgc2FtZSB3YXJuaW5ncyBhcyB0aGUgUHl0aG9uIG1vZHVsZQorICAgICAgICB3aXRoIENsZWFuQ29udGV4dChxdWlldD0obW9kdWxlIGlzIG5vdCBweUVUKSk6CisgICAgICAgICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHN5cy5tb2R1bGVzW19fbmFtZV9fXSwgdmVyYm9zaXR5PVRydWUpCisgICAgZmluYWxseToKKyAgICAgICAgIyBkb24ndCBpbnRlcmZlcmUgd2l0aCBzdWJzZXF1ZW50IHRlc3RzCisgICAgICAgIEVUID0gcHlFVCA9IE5vbmUKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQppbmRleCAyZmYxMThmLi5lNDRjNmNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKQEAgLTEsMzYgKzEsMTEgQEAKICMgeG1sLmV0cmVlIHRlc3QgZm9yIGNFbGVtZW50VHJlZQotCitpbXBvcnQgc3lzLCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF8yRworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKIGltcG9ydCB1bml0dGVzdAogCi1jRVQgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3htbC5ldHJlZS5jRWxlbWVudFRyZWUnKQotCi0KLSMgY0VsZW1lbnRUcmVlIHNwZWNpZmljIHRlc3RzCi0KLWRlZiBzYW5pdHkoKToKLSAgICByIiIiCi0gICAgSW1wb3J0IHNhbml0eS4KLQotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgY0VsZW1lbnRUcmVlCi0KLSAgICBJc3N1ZSAjNjY5Ny4KLQotICAgID4+PiBlID0gY0VsZW1lbnRUcmVlLkVsZW1lbnQoJ2EnKQotICAgID4+PiBnZXRhdHRyKGUsICdcdUQ4MDAnKSAgICAgICAgICAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAuLi4KLSAgICBVbmljb2RlRW5jb2RlRXJyb3I6IC4uLgotCi0gICAgPj4+IHAgPSBjRWxlbWVudFRyZWUuWE1MUGFyc2VyKCkKLSAgICA+Pj4gcC52ZXJzaW9uLnNwbGl0KClbMF0KLSAgICAnRXhwYXQnCi0gICAgPj4+IGdldGF0dHIocCwgJ1x1RDgwMCcpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAuLi4KLSAgICBBdHRyaWJ1dGVFcnJvcjogJ1hNTFBhcnNlcicgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ1x1ZDgwMCcKLSAgICAiIiIKK2NFVCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3htbC5ldHJlZS5FbGVtZW50VHJlZScsIGZyZXNoPVsnX2VsZW1lbnR0cmVlJ10pCitjRVRfYWxpYXMgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCd4bWwuZXRyZWUuY0VsZW1lbnRUcmVlJywgZnJlc2g9WydfZWxlbWVudHRyZWUnLCAneG1sLmV0cmVlJ10pCiAKIAogY2xhc3MgTWlzY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ3LDI3ICsyMiw2NCBAQAogICAgICAgICAgICAgZGF0YSA9IE5vbmUKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjRVQsICdyZXF1aXJlcyBfZWxlbWVudHRyZWUnKQorY2xhc3MgVGVzdEFsaWFzV29ya2luZyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUZXN0IHRoYXQgdGhlIGNFVCBhbGlhcyBtb2R1bGUgaXMgYWxpdmUKKyAgICBkZWYgdGVzdF9hbGlhc193b3JraW5nKHNlbGYpOgorICAgICAgICBlID0gY0VUX2FsaWFzLkVsZW1lbnQoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50YWcsICdmb28nKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNFVCwgJ3JlcXVpcmVzIF9lbGVtZW50dHJlZScpCitjbGFzcyBUZXN0QWNjZWxlcmF0b3JJbXBvcnRlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUZXN0IHRoYXQgdGhlIEMgYWNjZWxlcmF0b3Igd2FzIGltcG9ydGVkLCBhcyBleHBlY3RlZAorICAgIGRlZiB0ZXN0X2NvcnJlY3RfaW1wb3J0X2NFVChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjRVQuU3ViRWxlbWVudC5fX21vZHVsZV9fLCAnX2VsZW1lbnR0cmVlJykKKworICAgIGRlZiB0ZXN0X2NvcnJlY3RfaW1wb3J0X2NFVF9hbGlhcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjRVRfYWxpYXMuU3ViRWxlbWVudC5fX21vZHVsZV9fLCAnX2VsZW1lbnR0cmVlJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjRVQsICdyZXF1aXJlcyBfZWxlbWVudHRyZWUnKQorQHN1cHBvcnQuY3B5dGhvbl9vbmx5CitjbGFzcyBTaXplb2ZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZWxlbWVudHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCc1UCcpCisgICAgICAgICMgZXh0cmEKKyAgICAgICAgc2VsZi5leHRyYSA9IHN0cnVjdC5jYWxjc2l6ZSgnUGlpUDRQJykKKworICAgIGNoZWNrX3NpemVvZiA9IHN1cHBvcnQuY2hlY2tfc2l6ZW9mCisKKyAgICBkZWYgdGVzdF9lbGVtZW50KHNlbGYpOgorICAgICAgICBlID0gY0VULkVsZW1lbnQoJ2EnKQorICAgICAgICBzZWxmLmNoZWNrX3NpemVvZihlLCBzZWxmLmVsZW1lbnRzaXplKQorCisgICAgZGVmIHRlc3RfZWxlbWVudF93aXRoX2F0dHJpYihzZWxmKToKKyAgICAgICAgZSA9IGNFVC5FbGVtZW50KCdhJywgaHJlZj0nYWJvdXQ6JykKKyAgICAgICAgc2VsZi5jaGVja19zaXplb2YoZSwgc2VsZi5lbGVtZW50c2l6ZSArIHNlbGYuZXh0cmEpCisKKyAgICBkZWYgdGVzdF9lbGVtZW50X3dpdGhfY2hpbGRyZW4oc2VsZik6CisgICAgICAgIGUgPSBjRVQuRWxlbWVudCgnYScpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgY0VULlN1YkVsZW1lbnQoZSwgJ3NwYW4nKQorICAgICAgICAjIHNob3VsZCBoYXZlIHNwYWNlIGZvciA4IGNoaWxkcmVuIG5vdworICAgICAgICBzZWxmLmNoZWNrX3NpemVvZihlLCBzZWxmLmVsZW1lbnRzaXplICsgc2VsZi5leHRyYSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5jYWxjc2l6ZSgnOFAnKSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUsIHRlc3RfeG1sX2V0cmVlX2MKIAogICAgICMgUnVuIHRoZSB0ZXN0cyBzcGVjaWZpYyB0byB0aGUgQyBpbXBsZW1lbnRhdGlvbgotICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF94bWxfZXRyZWVfYywgdmVyYm9zaXR5PVRydWUpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgIE1pc2NUZXN0cywKKyAgICAgICAgVGVzdEFsaWFzV29ya2luZywKKyAgICAgICAgVGVzdEFjY2VsZXJhdG9ySW1wb3J0ZWQsCisgICAgICAgIFNpemVvZlRlc3QsCisgICAgICAgICkKIAotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1pc2NUZXN0cykKKyAgICAjIFJ1biB0aGUgc2FtZSB0ZXN0IHN1aXRlIGFzIHRoZSBQeXRob24gbW9kdWxlCisgICAgdGVzdF94bWxfZXRyZWUudGVzdF9tYWluKG1vZHVsZT1jRVQpCiAKLSAgICAjIEFzc2lnbiB0aGUgQyBpbXBsZW1lbnRhdGlvbiBiZWZvcmUgcnVubmluZyB0aGUgZG9jdGVzdHMKLSAgICAjIFBhdGNoIHRoZSBfX25hbWVfXywgdG8gcHJldmVudCBjb25mdXNpb24gd2l0aCB0aGUgcHVyZSBQeXRob24gdGVzdAotICAgIHB5RVQgPSB0ZXN0X3htbF9ldHJlZS5FVAotICAgIHB5X19uYW1lX18gPSB0ZXN0X3htbF9ldHJlZS5fX25hbWVfXwotICAgIHRlc3RfeG1sX2V0cmVlLkVUID0gY0VUCi0gICAgaWYgX19uYW1lX18gIT0gJ19fbWFpbl9fJzoKLSAgICAgICAgdGVzdF94bWxfZXRyZWUuX19uYW1lX18gPSBfX25hbWVfXwotICAgIHRyeToKLSAgICAgICAgIyBSdW4gdGhlIHNhbWUgdGVzdCBzdWl0ZSBhcyB4bWwuZXRyZWUuRWxlbWVudFRyZWUKLSAgICAgICAgdGVzdF94bWxfZXRyZWUudGVzdF9tYWluKG1vZHVsZV9uYW1lPSd4bWwuZXRyZWUuY0VsZW1lbnRUcmVlJykKLSAgICBmaW5hbGx5OgotICAgICAgICB0ZXN0X3htbF9ldHJlZS5FVCA9IHB5RVQKLSAgICAgICAgdGVzdF94bWxfZXRyZWUuX19uYW1lX18gPSBweV9fbmFtZV9fCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKaW5kZXggMzgxNDE5MS4uMTZmODVjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKQEAgLTI0LDYgKzI0LDggQEAKICAgICAgICAgICAnYXNob3J0bG9uZyc6IDIsCiAgICAgICAgICAgJ2Fub3RoZXJsaXN0JzogWycuenl4LjQxJ10sCiAgICAgICAgICAgJ2FiYXNlNjQnOiB4bWxycGNsaWIuQmluYXJ5KGIibXkgZG9nIGhhcyBmbGVhcyIpLAorICAgICAgICAgICdiNjRieXRlcyc6IGIibXkgZG9nIGhhcyBmbGVhcyIsCisgICAgICAgICAgJ2I2NGJ5dGVhcnJheSc6IGJ5dGVhcnJheShiIm15IGRvZyBoYXMgZmxlYXMiKSwKICAgICAgICAgICAnYm9vbGVhbic6IEZhbHNlLAogICAgICAgICAgICd1bmljb2RlJzogJ1x1NDAwMFx1NjAwMFx1ODAwMCcsCiAgICAgICAgICAgJ3VrZXlcdTQwMDAnOiAncmVndWxhciB2YWx1ZScsCkBAIC00NCwyNyArNDYsNTQgQEAKICAgICBkZWYgdGVzdF9kdW1wX2JhcmVfZGF0ZXRpbWUoc2VsZik6CiAgICAgICAgICMgVGhpcyBjaGVja3MgdGhhdCBhbiB1bndyYXBwZWQgZGF0ZXRpbWUuZGF0ZSBvYmplY3QgY2FuIGJlIGhhbmRsZWQKICAgICAgICAgIyBieSB0aGUgbWFyc2hhbGxpbmcgY29kZS4gIFRoaXMgY2FuJ3QgYmUgZG9uZSB2aWEgdGVzdF9kdW1wX2xvYWQoKQotICAgICAgICAjIHNpbmNlIHdpdGggdXNlX2RhdGV0aW1lIHNldCB0byAxIHRoZSB1bm1hcnNoYWxsZXIgd291bGQgY3JlYXRlCisgICAgICAgICMgc2luY2Ugd2l0aCB1c2VfYnVpbHRpbl90eXBlcyBzZXQgdG8gMSB0aGUgdW5tYXJzaGFsbGVyIHdvdWxkIGNyZWF0ZQogICAgICAgICAjIGRhdGV0aW1lIG9iamVjdHMgZm9yIHRoZSAnZGF0ZXRpbWVbMTIzXScga2V5cyBhcyB3ZWxsCiAgICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwNSwgMiwgMTAsIDExLCA0MSwgMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIHhtbHJwY2xpYi5EYXRlVGltZSgnMjAwNTAyMTBUMTE6NDE6MjMnKSkKICAgICAgICAgcyA9IHhtbHJwY2xpYi5kdW1wcygoZHQsKSkKLSAgICAgICAgKG5ld2R0LCksIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIE5vbmUpCiAKLSAgICAgICAgKG5ld2R0LCksIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIHhtbHJwY2xpYi5EYXRlVGltZSgnMjAwNTAyMTBUMTE6NDE6MjMnKSkKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCBkYXRldGltZS5kYXRldGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCB4bWxycGNsaWIuRGF0ZVRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT1UcnVlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgZGF0ZXRpbWUuZGF0ZXRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT1GYWxzZSkKKyAgICAgICAgKG5ld2R0LCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXdkdCksIHhtbHJwY2xpYi5EYXRlVGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKwogCiAgICAgZGVmIHRlc3RfZGF0ZXRpbWVfYmVmb3JlXzE5MDAoc2VsZik6CiAgICAgICAgICMgc2FtZSBhcyBiZWZvcmUgYnV0IHdpdGggYSBkYXRlIGJlZm9yZSAxOTAwCiAgICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMSwgIDIsIDEwLCAxMSwgNDEsIDIzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LCB4bWxycGNsaWIuRGF0ZVRpbWUoJzAwMDEwMjEwVDExOjQxOjIzJykpCiAgICAgICAgIHMgPSB4bWxycGNsaWIuZHVtcHMoKGR0LCkpCi0gICAgICAgIChuZXdkdCwpLCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT0xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBOb25lKQogCi0gICAgICAgIChuZXdkdCwpLCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT0wKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCB4bWxycGNsaWIuRGF0ZVRpbWUoJzAwMDEwMjEwVDExOjQxOjIzJykpCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgZGF0ZXRpbWUuZGF0ZXRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgeG1scnBjbGliLkRhdGVUaW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQogCiAgICAgZGVmIHRlc3RfYnVnXzExNjQ5MTIgKHNlbGYpOgogICAgICAgICBkID0geG1scnBjbGliLkRhdGVUaW1lKCkKQEAgLTEyNSw2ICsxNTQsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbS5kdW1wX2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1scnBjbGliLk1JTklOVC0xLCBkdW1teV93cml0ZSkKIAorICAgIGRlZiB0ZXN0X2R1bXBfZG91YmxlKHNlbGYpOgorICAgICAgICB4bWxycGNsaWIuZHVtcHMoKGZsb2F0KDIgKiogMzQpLCkpCisgICAgICAgIHhtbHJwY2xpYi5kdW1wcygoZmxvYXQoeG1scnBjbGliLk1BWElOVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQoeG1scnBjbGliLk1JTklOVCkpKQorICAgICAgICB4bWxycGNsaWIuZHVtcHMoKGZsb2F0KHhtbHJwY2xpYi5NQVhJTlQgKyA0MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQoeG1scnBjbGliLk1JTklOVCAtIDQyKSkpCisKKyAgICAgICAgZGVmIGR1bW15X3dyaXRlKHMpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG0gPSB4bWxycGNsaWIuTWFyc2hhbGxlcigpCisgICAgICAgIG0uZHVtcF9kb3VibGUoeG1scnBjbGliLk1BWElOVCwgZHVtbXlfd3JpdGUpCisgICAgICAgIG0uZHVtcF9kb3VibGUoeG1scnBjbGliLk1JTklOVCwgZHVtbXlfd3JpdGUpCisgICAgICAgIG0uZHVtcF9kb3VibGUoeG1scnBjbGliLk1BWElOVCArIDQyLCBkdW1teV93cml0ZSkKKyAgICAgICAgbS5kdW1wX2RvdWJsZSh4bWxycGNsaWIuTUlOSU5UIC0gNDIsIGR1bW15X3dyaXRlKQorCiAgICAgZGVmIHRlc3RfZHVtcF9ub25lKHNlbGYpOgogICAgICAgICB2YWx1ZSA9IGFsaXN0ICsgW05vbmVdCiAgICAgICAgIGFyZzEgPSAoYWxpc3QgKyBbTm9uZV0sKQpAQCAtMTMzLDYgKzE3OCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxycGNsaWIubG9hZHMoc3RyZylbMF1bMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeG1scnBjbGliLmR1bXBzLCAoYXJnMSwpKQogCisgICAgZGVmIHRlc3RfZHVtcF9ieXRlcyhzZWxmKToKKyAgICAgICAgc2FtcGxlID0gYiJteSBkb2cgaGFzIGZsZWFzIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNhbXBsZSwgeG1scnBjbGliLkJpbmFyeShzYW1wbGUpKQorICAgICAgICBmb3IgdHlwZV8gaW4gYnl0ZXMsIGJ5dGVhcnJheSwgeG1scnBjbGliLkJpbmFyeToKKyAgICAgICAgICAgIHZhbHVlID0gdHlwZV8oc2FtcGxlKQorICAgICAgICAgICAgcyA9IHhtbHJwY2xpYi5kdW1wcygodmFsdWUsKSkKKworICAgICAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgICAgICAobmV3dmFsdWUsKSA9IHJlc3VsdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXd2YWx1ZSwgc2FtcGxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld3ZhbHVlKSwgYnl0ZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpCisgICAgICAgICAgICAobmV3dmFsdWUsKSA9IHJlc3VsdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXd2YWx1ZSwgc2FtcGxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld3ZhbHVlKSwgeG1scnBjbGliLkJpbmFyeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKICAgICBkZWYgdGVzdF9nZXRfaG9zdF9pbmZvKHNlbGYpOgogICAgICAgICAjIHNlZSBidWcgIzM2MTMsIHRoaXMgcmFpc2VkIGEgVHlwZUVycm9yCiAgICAgICAgIHRyYW5zcCA9IHhtbHJwYy5jbGllbnQuVHJhbnNwb3J0KCkKQEAgLTE0MCw5ICsyMDQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2hvc3QudGxkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgZFhObGNnPT0nKV0sIHt9KSkKIAotICAgIGRlZiB0ZXN0X2R1bXBfYnl0ZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeG1scnBjbGliLmR1bXBzLCAoYiJteSBkb2cgaGFzIGZsZWFzIiwpKQotCiAgICAgZGVmIHRlc3Rfc3NsX3ByZXNlbmNlKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgc3NsCkBAIC05ODAsMTAgKzEwNDEsNDQgQEAKICAgICAgICAgICAgIGxlbihjb250ZW50KSkKIAogCitjbGFzcyBVc2VCdWlsdGluVHlwZXNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF91c2VfYnVpbHRpbl90eXBlcyhzZWxmKToKKyAgICAgICAgIyBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fIGFjY2VwdHMgdXNlX2J1aWx0aW5fdHlwZXMsIHdoaWNoCisgICAgICAgICMgbWFrZXMgYWxsIGRpc3BhdGNoIG9mIGJpbmFyeSBkYXRhIGFzIGJ5dGVzIGluc3RhbmNlcywgYW5kIGFsbAorICAgICAgICAjIGRpc3BhdGNoIG9mIGRhdGV0aW1lIGFyZ3VtZW50IGFzIGRhdGV0aW1lLmRhdGV0aW1lIGluc3RhbmNlcy4KKyAgICAgICAgc2VsZi5sb2cgPSBbXQorICAgICAgICBleHBlY3RlZF9ieXRlcyA9IGIibXkgZG9nIGhhcyBmbGVhcyIKKyAgICAgICAgZXhwZWN0ZWRfZGF0ZSA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMDgsIDUsIDI2LCAxOCwgMjUsIDEyKQorICAgICAgICBtYXJzaGFsZWQgPSB4bWxycGNsaWIuZHVtcHMoKGV4cGVjdGVkX2J5dGVzLCBleHBlY3RlZF9kYXRlKSwgJ2Zvb2JhcicpCisgICAgICAgIGRlZiBmb29iYXIoKmFyZ3MpOgorICAgICAgICAgICAgc2VsZi5sb2cuZXh0ZW5kKGFyZ3MpCisgICAgICAgIGhhbmRsZXIgPSB4bWxycGMuc2VydmVyLlNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIoCisgICAgICAgICAgICBhbGxvd19ub25lPVRydWUsIGVuY29kaW5nPU5vbmUsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIGhhbmRsZXIucmVnaXN0ZXJfZnVuY3Rpb24oZm9vYmFyKQorICAgICAgICBoYW5kbGVyLl9tYXJzaGFsZWRfZGlzcGF0Y2gobWFyc2hhbGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmxvZyksIDIpCisgICAgICAgIG15Ynl0ZXMsIG15ZGF0ZSA9IHNlbGYubG9nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2csIFtleHBlY3RlZF9ieXRlcywgZXhwZWN0ZWRfZGF0ZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShteWRhdGUpLCBkYXRldGltZS5kYXRldGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG15Ynl0ZXMpLCBieXRlcykKKworICAgIGRlZiB0ZXN0X2NnaWhhbmRsZXJfaGFzX3VzZV9idWlsdGluX3R5cGVzX2ZsYWcoc2VsZik6CisgICAgICAgIGhhbmRsZXIgPSB4bWxycGMuc2VydmVyLkNHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLnVzZV9idWlsdGluX3R5cGVzKQorCisgICAgZGVmIHRlc3RfeG1scnBjc2VydmVyX2hhc191c2VfYnVpbHRpbl90eXBlc19mbGFnKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSB4bWxycGMuc2VydmVyLlNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDApLAorICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIudXNlX2J1aWx0aW5fdHlwZXMpCisKKwogQHN1cHBvcnQucmVhcF90aHJlYWRzCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgeG1scnBjX3Rlc3RzID0gW1hNTFJQQ1Rlc3RDYXNlLCBIZWxwZXJUZXN0Q2FzZSwgRGF0ZVRpbWVUZXN0Q2FzZSwKICAgICAgICAgIEJpbmFyeVRlc3RDYXNlLCBGYXVsdFRlc3RDYXNlXQorICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoVXNlQnVpbHRpblR5cGVzVGVzdENhc2UpCiAgICAgeG1scnBjX3Rlc3RzLmFwcGVuZChTaW1wbGVTZXJ2ZXJUZXN0Q2FzZSkKICAgICB4bWxycGNfdGVzdHMuYXBwZW5kKEtlZXBhbGl2ZVNlcnZlclRlc3RDYXNlMSkKICAgICB4bWxycGNfdGVzdHMuYXBwZW5kKEtlZXBhbGl2ZVNlcnZlclRlc3RDYXNlMikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weSBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQppbmRleCBkNzJmOGFjLi5kZmI1ZjlhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCi1pbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCBlcnJubwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN5cwpAQCAtNDksNyArNDksNyBAQAogCiAgICAgICAgICMgUGVyZm9ybSBhIG1pbmltYWwgc2FuaXR5IGNoZWNrIG9uIHRoZSByZXN1bHQsIGp1c3QgdG8gYmUgc3VyZQogICAgICAgICAjIHRoZSByZXF1ZXN0IG1lYW5zIHdoYXQgd2UgdGhpbmsgaXQgbWVhbnMuCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShidWlsZGVycywgY29sbGVjdGlvbnMuU2VxdWVuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShidWlsZGVycywgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoW3ggZm9yIHggaW4gYnVpbGRlcnMgaWYgIjMueCIgaW4geF0sIGJ1aWxkZXJzKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQppbmRleCA1MWQ4YjQ1Li4yZTUyYzY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CkBAIC0xLDkgKzEsMyBAQAotIyBXZSBjYW4gdGVzdCBwYXJ0IG9mIHRoZSBtb2R1bGUgd2l0aG91dCB6bGliLgotdHJ5OgotICAgIGltcG9ydCB6bGliCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgemxpYiA9IE5vbmUKLQogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKQEAgLTE5LDcgKzEzLDcgQEAKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kaW50LCByYW5kb20KIGZyb20gdW5pdHRlc3QgaW1wb3J0IHNraXBVbmxlc3MKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCBmaW5kZmlsZSwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlLCB1bmxpbmssIHJlcXVpcmVzX3psaWIsIHJlcXVpcmVzX2J6MiwgcmVxdWlyZXNfbHptYQogCiBURVNURk4yID0gVEVTVEZOICsgIjIiCiBURVNURk5ESVIgPSBURVNURk4gKyAiZCIKQEAgLTI2OSw0NCArMjYzLDQ0IEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X29wZW5fZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICM3NjEwOiBjYWxscyB0byByZWFkbGluZSgpIGludGVybGVhdmVkIHdpdGggY2FsbHMgdG8gcmVhZCgpLgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfcmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9pdGVybGluZXNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2xvd19jb21wcmVzc2lvbihzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgZm9yIGNhc2VzIHdoZXJlIGNvbXByZXNzZWQgZGF0YSBpcyBsYXJnZXIgdGhhbiBvcmlnaW5hbC4iIiIKICAgICAgICAgIyBDcmVhdGUgdGhlIFpJUCBhcmNoaXZlCkBAIC0zMTksNiArMzEzLDEwMyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzEnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzInKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9vcGVuX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfcmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZXNfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9sb3dfY29tcHJlc3Npb25fYnppcDIoc2VsZik6CisgICAgICAgICIiIkNoZWNrIGZvciBjYXNlcyB3aGVyZSBjb21wcmVzc2VkIGRhdGEgaXMgbGFyZ2VyIHRoYW4gb3JpZ2luYWwuIiIiCisgICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIsIHppcGZpbGUuWklQX0JaSVAyKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCJzdHJmaWxlIiwgJzEyJykKKworICAgICAgICAjIEdldCBhbiBvcGVuIG9iamVjdCBmb3Igc3RyZmlsZQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAiciIsIHppcGZpbGUuWklQX0JaSVAyKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHdpdGggemlwZnAub3Blbigic3RyZmlsZSIpIGFzIG9wZW5vYmo6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMicpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X29wZW5fbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2x6bWEoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzc2MTA6IGNhbGxzIHRvIHJlYWRsaW5lKCkgaW50ZXJsZWF2ZWQgd2l0aCBjYWxscyB0byByZWFkKCkuCisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX2l0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2xvd19jb21wcmVzc2lvbl9sem1hKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBmb3IgY2FzZXMgd2hlcmUgY29tcHJlc3NlZCBkYXRhIGlzIGxhcmdlciB0aGFuIG9yaWdpbmFsLiIiIgorICAgICAgICAjIENyZWF0ZSB0aGUgWklQIGFyY2hpdmUKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciLCB6aXBmaWxlLlpJUF9MWk1BKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCJzdHJmaWxlIiwgJzEyJykKKworICAgICAgICAjIEdldCBhbiBvcGVuIG9iamVjdCBmb3Igc3RyZmlsZQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAiciIsIHppcGZpbGUuWklQX0xaTUEpIGFzIHppcGZwOgorICAgICAgICAgICAgd2l0aCB6aXBmcC5vcGVuKCJzdHJmaWxlIikgYXMgb3Blbm9iajoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicxJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicyJykKKwogICAgIGRlZiB0ZXN0X2Fic29sdXRlX2FyY25hbWVzKHNlbGYpOgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZnA6CiAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sICIvYWJzb2x1dGUiKQpAQCAtMzc3LDcgKzQ2OCw3IEBACiAgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZnAucmVhZChURVNURk4pLCBmLnJlYWQoKSkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3Blcl9maWxlX2NvbXByZXNzaW9uKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGZpbGVzIHdpdGhpbiBhIFppcCBhcmNoaXZlIGNhbiBoYXZlIGRpZmZlcmVudAogICAgICAgICBjb21wcmVzc2lvbiBvcHRpb25zLiIiIgpAQCAtNDQ2LDE5ICs1MzcsMzIgQEAKICAgICAgICAgIyByZW1vdmUgdGhlIHRlc3QgZmlsZSBzdWJkaXJlY3RvcmllcwogICAgICAgICBzaHV0aWwucm10cmVlKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgJ3ppcHRlc3QyZGlyJykpCiAKLSAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbihzZWxmKToKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9zdG9yZWQoc2VsZik6CiAgICAgICAgIHppcGZwID0gemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IikKICAgICAgICAgemlwZnAud3JpdGVzdHIoImEudHh0IiwgImhlbGxvIHdvcmxkIiwgY29tcHJlc3NfdHlwZT16aXBmaWxlLlpJUF9TVE9SRUQpCi0gICAgICAgIGlmIHpsaWI6Ci0gICAgICAgICAgICB6aXBmcC53cml0ZXN0cigiYi50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX0RFRkxBVEVEKQotCiAgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKCdhLnR4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mby5jb21wcmVzc190eXBlLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICAgICAgaWYgemxpYjoKLSAgICAgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKCdiLnR4dCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfREVGTEFURUQpCisgICAgQHJlcXVpcmVzX3psaWIKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9kZWZsYXRlZChzZWxmKToKKyAgICAgICAgemlwZnAgPSB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciKQorICAgICAgICB6aXBmcC53cml0ZXN0cigiYi50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX0RFRkxBVEVEKQorICAgICAgICBpbmZvID0gemlwZnAuZ2V0aW5mbygnYi50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3Rfd3JpdGVzdHJfY29tcHJlc3Npb25fYnppcDIoc2VsZik6CisgICAgICAgIHppcGZwID0gemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IikKKyAgICAgICAgemlwZnAud3JpdGVzdHIoImIudHh0IiwgImhlbGxvIHdvcmxkIiwgY29tcHJlc3NfdHlwZT16aXBmaWxlLlpJUF9CWklQMikKKyAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2IudHh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9sem1hKHNlbGYpOgorICAgICAgICB6aXBmcCA9IHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIpCisgICAgICAgIHppcGZwLndyaXRlc3RyKCJiLnR4dCIsICJoZWxsbyB3b3JsZCIsIGNvbXByZXNzX3R5cGU9emlwZmlsZS5aSVBfTFpNQSkKKyAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2IudHh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX0xaTUEpCiAKICAgICBkZWYgemlwX3Rlc3Rfd3JpdGVzdHJfcGVybWlzc2lvbnMoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdyaXRlc3RyIGNyZWF0ZXMgZmlsZXMgd2l0aCBtb2RlIDA2MDAsCkBAIC01MTQsNyArNjE4LDEyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmcC53cml0ZSwgVEVTVEZOKQogCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisKKworCisKKworICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfdW5pY29kZV9maWxlbmFtZXMoc2VsZik6CiAgICAgICAgICMgYnVnICMxMDgwMQogICAgICAgICBmbmFtZSA9IGZpbmRmaWxlKCd6aXBfY3A0MzdfaGVhZGVyLnppcCcpCkBAIC02MjMsMTEgKzczMiwyMSBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIHRlc3RfYWJzb2x1dGVfYXJjbmFtZXMoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IiwgemlwZmlsZS5aSVBfU1RPUkVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1ppcDY0PVRydWUpIGFzIHppcGZwOgpAQCAtNzU2LDggKzg3NSw0MCBAQAogICAgICAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ODBceDAxXHgwMFx4MDBceDAwJwogICAgICAgICAgICAgYidceDAwYWZpbGVQS1x4MDVceDA2XHgwMFx4MDBceDAwXHgwMFx4MDFceDAwJwogICAgICAgICAgICAgYidceDAxXHgwMDNceDAwXHgwMFx4MDAzXHgwMFx4MDBceDAwXHgwMFx4MDAnKSwKKyAgICAgICAgemlwZmlsZS5aSVBfQlpJUDI6ICgKKyAgICAgICAgICAgIGInUEtceDAzXHgwNFx4MTRceDAzXHgwMFx4MDBceDBjXHgwMG51XHgwYz1GQScKKyAgICAgICAgICAgIGInS0U4XHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBhZicKKyAgICAgICAgICAgIGInaWxlQlpoOTFBWSZTWVx4ZDRceGE4XHhjYScKKyAgICAgICAgICAgIGInXHg3Zlx4MDBceDAwXHgwZlx4MTFceDgwQFx4MDBceDA2RFx4OTBceDgwIFx4MDAgXHhhNScKKyAgICAgICAgICAgIGInUFx4ZDkhXHgwM1x4MDNceDEzXHgxM1x4MTNceDg5XHhhOVx4YTlceGMydTU6XHg5ZicKKyAgICAgICAgICAgIGInXHg4Ylx4YjkiXHg5YyhIalRlP1x4ODBQS1x4MDFceDAyXHgxNCcKKyAgICAgICAgICAgIGInXHgwM1x4MTRceDAzXHgwMFx4MDBceDBjXHgwMG51XHgwYz1GQUtFOCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMCBceDgwXHg4MFx4ODFceDAwXHgwMFx4MDBceDAwYWZpbGVQSycKKyAgICAgICAgICAgIGInXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMDNceDAwXHgwMFx4MDBbXHgwMCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMCcpLAorICAgICAgICB6aXBmaWxlLlpJUF9MWk1BOiAoCisgICAgICAgICAgICBiJ1BLXHgwM1x4MDRceDE0XHgwM1x4MDBceDAwXHgwZVx4MDBudVx4MGM9RkEnCisgICAgICAgICAgICBiJ0tFXHgxYlx4MDBceDAwXHgwMG5ceDAwXHgwMFx4MDBceDA1XHgwMFx4MDBceDAwYWYnCisgICAgICAgICAgICBiJ2lsZVx0XHgwNFx4MDVceDAwXVx4MDBceDAwXHgwMFx4MDRceDAwNFx4MTlJJworICAgICAgICAgICAgYidceGVlXHg4ZFx4ZTlceDE3XHg4OTozYFx0cSEuOFx4MDBQSycKKyAgICAgICAgICAgIGInXHgwMVx4MDJceDE0XHgwM1x4MTRceDAzXHgwMFx4MDBceDBlXHgwMG51XHgwYz1GQScKKyAgICAgICAgICAgIGInS0VceDFiXHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMCBceDgwXHg4MFx4ODFceDAwXHgwMFx4MDBceDAwYWZpbCcKKyAgICAgICAgICAgIGInZVBLXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMDNceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMD5ceDAwXHgwMFx4MDBceDAwXHgwMCcpLAogICAgIH0KIAorICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX3ZlcnNpb24oc2VsZik6CisgICAgICAgICMgRmlsZSBoYXMgYW4gZXh0cmFjdF92ZXJzaW9uIG9mIDEyMAorICAgICAgICBkYXRhID0gKGInUEtceDAzXHgwNHhceDAwXHgwMFx4MDBceDAwXHgwMCFwXHhhMUBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAnCisgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwXHgwMHhQS1x4MDFceDAyeFx4MDN4XHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgYidceDAwIXBceGExQFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDFceDAwXHgwMCcKKyAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDgwXHgwMVx4MDBceDAwXHgwMFx4MDB4UEtceDA1XHgwNicKKyAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMC9ceDAwXHgwMFx4MDBceDFmXHgwMFx4MDBceDAwXHgwMFx4MDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCB6aXBmaWxlLlppcEZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlvLkJ5dGVzSU8oZGF0YSksICdyJykKKwogICAgIGRlZiB0ZXN0X3VuaWNvZGVfZmlsZW5hbWVzKHNlbGYpOgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4sICJ3IikgYXMgemY6CiAgICAgICAgICAgICB6Zi53cml0ZXN0cigiZm9vLnR4dCIsICJUZXN0IGZvciB1bmljb2RlIGZpbGVuYW1lIikKQEAgLTkyMiw2ICsxMDczLDE3IEBACiAgICAgICAgIGNhdWdodC4iIiIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInciLCAtMSkKIAorICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX2NvbXByZXNzaW9uKHNlbGYpOgorICAgICAgICAjIGRhdGEgaXMgZGVjbGFyZWQgYXMgc2hydW5rLCBidXQgYWN0dWFsbHkgZGVmbGF0ZWQKKyAgICAgICAgZGF0YSA9IChiJ1BLXHgwM1x4MDQuXHgwMFx4MDBceDAwXHgwMVx4MDBceGU0Q1x4YTFAXHgwMFx4MDBceDAwJworICAgICAgICBiJ1x4MDBceDAyXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDFceDAwXHgwMFx4MDB4XHgwM1x4MDBQS1x4MDEnCisgICAgICAgIGInXHgwMi5ceDAzLlx4MDBceDAwXHgwMFx4MDFceDAwXHhlNENceGExQFx4MDBceDAwXHgwMFx4MDBceDAyXHgwMFx4MDAnCisgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAnCisgICAgICAgIGInXHg4MFx4MDFceDAwXHgwMFx4MDBceDAweFBLXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMCcKKyAgICAgICAgYicvXHgwMFx4MDBceDAwIVx4MDBceDAwXHgwMFx4MDBceDAwJykKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoaW8uQnl0ZXNJTyhkYXRhKSwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgemlwZi5vcGVuLCAneCcpCisKICAgICBkZWYgdGVzdF9udWxsX2J5dGVfaW5fZmlsZW5hbWUoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgYSBmaWxlbmFtZSBjb250YWluaW5nIGEgbnVsbCBieXRlIGlzIHByb3Blcmx5CiAgICAgICAgIHRlcm1pbmF0ZWQuIiIiCkBAIC0xMDIzLDEwICsxMTg1LDE4IEBACiAgICAgZGVmIHRlc3RfdGVzdHppcF93aXRoX2JhZF9jcmNfc3RvcmVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3Rlc3R6aXBfd2l0aF9iYWRfY3JjX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3Rlc3R6aXBfd2l0aF9iYWRfY3JjX2J6aXAyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF90ZXN0emlwX3dpdGhfYmFkX2NyY19sem1hKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgY2hlY2tfcmVhZF93aXRoX2JhZF9jcmMoc2VsZiwgY29tcHJlc3Npb24pOgogICAgICAgICAiIiJUZXN0cyB0aGF0IGZpbGVzIHdpdGggYmFkIENSQ3MgcmFpc2UgYSBCYWRaaXBGaWxlIGV4Y2VwdGlvbiB3aGVuIHJlYWQuIiIiCiAgICAgICAgIHppcGRhdGEgPSBzZWxmLnppcHNfd2l0aF9iYWRfY3JjW2NvbXByZXNzaW9uXQpAQCAtMTA1MSwxMCArMTIyMSwxOCBAQAogICAgIGRlZiB0ZXN0X3JlYWRfd2l0aF9iYWRfY3JjX3N0b3JlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkX3dpdGhfYmFkX2NyY19kZWZsYXRlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkX3dpdGhfYmFkX2NyY19iemlwMihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZF93aXRoX2JhZF9jcmNfbHptYShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIGNoZWNrX3JlYWRfcmV0dXJuX3NpemUoc2VsZiwgY29tcHJlc3Npb24pOgogICAgICAgICAjIElzc3VlICM5ODM3OiBaaXBFeHRGaWxlLnJlYWQoKSBzaG91bGRuJ3QgcmV0dXJuIG1vcmUgYnl0ZXMKICAgICAgICAgIyB0aGFuIHJlcXVlc3RlZC4KQEAgLTEwNzEsMTAgKzEyNDksMTggQEAKICAgICBkZWYgdGVzdF9yZWFkX3JldHVybl9zaXplX3N0b3JlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yZWFkX3JldHVybl9zaXplKHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRfcmV0dXJuX3NpemVfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcmVhZF9yZXR1cm5fc2l6ZSh6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkX3JldHVybl9zaXplX2J6aXAyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlYWRfcmV0dXJuX3NpemUoemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRfcmV0dXJuX3NpemVfbHptYShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWFkX3JldHVybl9zaXplKHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgdGVzdF9lbXB0eV96aXBmaWxlKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgY3JlYXRpbmcgYSBmaWxlIGluICd3JyBvciAnYScgbW9kZSBhbmQgY2xvc2luZyB3aXRob3V0CiAgICAgICAgICMgYWRkaW5nIGFueSBmaWxlcyB0byB0aGUgYXJjaGl2ZXMgY3JlYXRlcyBhIHZhbGlkIGVtcHR5IFpJUCBmaWxlCkBAIC0xMTYxLDcgKzEzNDcsNyBAQAogICAgICAgICBzZWxmLnppcDIuc2V0cGFzc3dvcmQoYiJwZXJsIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLnppcDIucmVhZCwgInplcm8iKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfZ29vZF9wYXNzd29yZChzZWxmKToKICAgICAgICAgc2VsZi56aXAuc2V0cGFzc3dvcmQoYiJweXRob24iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuemlwLnJlYWQoInRlc3QudHh0IiksIHNlbGYucGxhaW4pCkBAIC0xMjExLDExICsxMzk3LDIxIEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgemlwX29wZW5fdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6CiAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCiAKQEAgLTEyNTEsMTEgKzE0NDcsMjEgQEAKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9vcGVuX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X29wZW5fYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X29wZW5fbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIHppcF9yYW5kb21fb3Blbl90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKIApAQCAtMTI3OSwxMyArMTQ4NSwyMyBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmFuZG9tX29wZW5fYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQogCi1Ac2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisKK0ByZXF1aXJlc196bGliCiBjbGFzcyBUZXN0c1dpdGhNdWx0aXBsZU9wZW5zKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQpAQCAtMTQ3NywzMiArMTY5Myw4MiBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICM3NjEwOiBjYWxscyB0byByZWFkbGluZSgpIGludGVybGVhdmVkIHdpdGggY2FsbHMgdG8gcmVhZCgpLgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZV9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRsaW5lc19kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYucmVhZGxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9pdGVybGluZXNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLml0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLml0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3JlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lc19sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgogICAgICAgICAgICAgb3MucmVtb3ZlKGZuKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlNjQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGU2NC5weQppbmRleCAwZTdkNzNmLi5hOGZiN2FiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGU2NC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGU2NC5weQpAQCAtMTEsMTIgKzExLDYgQEAKICAgICAgICAgJ3Rlc3QgcmVxdWlyZXMgbG9hZHMgb2YgZGlzay1zcGFjZSBieXRlcyBhbmQgYSBsb25nIHRpbWUgdG8gcnVuJwogICAgICkKIAotIyBXZSBjYW4gdGVzdCBwYXJ0IG9mIHRoZSBtb2R1bGUgd2l0aG91dCB6bGliLgotdHJ5OgotICAgIGltcG9ydCB6bGliCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgemxpYiA9IE5vbmUKLQogaW1wb3J0IHppcGZpbGUsIG9zLCB1bml0dGVzdAogaW1wb3J0IHRpbWUKIGltcG9ydCBzeXMKQEAgLTI0LDcgKzE4LDcgQEAKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHRlbXBmaWxlIGltcG9ydCBUZW1wb3JhcnlGaWxlCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCByZXF1aXJlc196bGliCiAKIFRFU1RGTjIgPSBURVNURk4gKyAiMiIKIApAQCAtODEsMTIgKzc1LDEyIEBACiAgICAgICAgIGZvciBmIGluIFRlbXBvcmFyeUZpbGUoKSwgVEVTVEZOMjoKICAgICAgICAgICAgIHNlbGYuemlwVGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBpZiB6bGliOgotICAgICAgICBkZWYgdGVzdERlZmxhdGVkKHNlbGYpOgotICAgICAgICAgICAgIyBUcnkgdGhlIHRlbXAgZmlsZSBmaXJzdC4gIElmIHdlIGRvIFRFU1RGTjIgZmlyc3QsIHRoZW4gaXQgaG9ncwotICAgICAgICAgICAgIyBnaWdhYnl0ZXMgb2YgZGlzayBzcGFjZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LgotICAgICAgICAgICAgZm9yIGYgaW4gVGVtcG9yYXJ5RmlsZSgpLCBURVNURk4yOgotICAgICAgICAgICAgICAgIHNlbGYuemlwVGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKKyAgICBAcmVxdWlyZXNfemxpYgorICAgIGRlZiB0ZXN0RGVmbGF0ZWQoc2VsZik6CisgICAgICAgICMgVHJ5IHRoZSB0ZW1wIGZpbGUgZmlyc3QuICBJZiB3ZSBkbyBURVNURk4yIGZpcnN0LCB0aGVuIGl0IGhvZ3MKKyAgICAgICAgIyBnaWdhYnl0ZXMgb2YgZGlzayBzcGFjZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LgorICAgICAgICBmb3IgZiBpbiBUZW1wb3JhcnlGaWxlKCksIFRFU1RGTjI6CisgICAgICAgICAgICBzZWxmLnppcFRlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGZvciBmbmFtZSBpbiBURVNURk4sIFRFU1RGTjI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CmluZGV4IGRmNWZmOWQuLmY3Y2I4YjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CkBAIC05LDEyICs5LDYgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0aG9va3MgaW1wb3J0IEltcG9ydEhvb2tzQmFzZVRlc3RDYXNlLCB0ZXN0X3NyYywgdGVzdF9jbwogCi0jIHNvbWUgdGVzdHMgY2FuIGJlIHJhbiBldmVuIHdpdGhvdXQgemxpYgotdHJ5OgotICAgIGltcG9ydCB6bGliCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgemxpYiA9IE5vbmUKLQogZnJvbSB6aXBmaWxlIGltcG9ydCBaaXBGaWxlLCBaaXBJbmZvLCBaSVBfU1RPUkVELCBaSVBfREVGTEFURUQKIAogaW1wb3J0IHppcGltcG9ydApAQCAtMjUsNyArMTksNyBAQAogZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGV4dHJhY3RfdGIsIGV4dHJhY3Rfc3RhY2ssIHByaW50X3RiCiByYWlzZV9zcmMgPSAnZGVmIGRvX3JhaXNlKCk6IHJhaXNlIFR5cGVFcnJvclxuJwogCi1kZWYgbWFrZV9weWMoY28sIG10aW1lKToKK2RlZiBtYWtlX3B5YyhjbywgbXRpbWUsIHNpemUpOgogICAgIGRhdGEgPSBtYXJzaGFsLmR1bXBzKGNvKQogICAgIGlmIHR5cGUobXRpbWUpIGlzIHR5cGUoMC4wKToKICAgICAgICAgIyBNYWMgbXRpbWVzIG5lZWQgYSBiaXQgb2Ygc3BlY2lhbCBjYXNpbmcKQEAgLTMzLDE0ICsyNywxNCBAQAogICAgICAgICAgICAgbXRpbWUgPSBpbnQobXRpbWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtdGltZSA9IGludCgtMHgxMDAwMDAwMDAgKyBpbnQobXRpbWUpKQotICAgIHB5YyA9IGltcC5nZXRfbWFnaWMoKSArIHN0cnVjdC5wYWNrKCI8aSIsIGludChtdGltZSkpICsgZGF0YQorICAgIHB5YyA9IGltcC5nZXRfbWFnaWMoKSArIHN0cnVjdC5wYWNrKCI8aWkiLCBpbnQobXRpbWUpLCBzaXplICYgMHhGRkZGRkZGRikgKyBkYXRhCiAgICAgcmV0dXJuIHB5YwogCiBkZWYgbW9kdWxlX3BhdGhfdG9fZG90dGVkX25hbWUocGF0aCk6CiAgICAgcmV0dXJuIHBhdGgucmVwbGFjZShvcy5zZXAsICcuJykKIAogTk9XID0gdGltZS50aW1lKCkKLXRlc3RfcHljID0gbWFrZV9weWModGVzdF9jbywgTk9XKQordGVzdF9weWMgPSBtYWtlX3B5Yyh0ZXN0X2NvLCBOT1csIGxlbih0ZXN0X3NyYykpCiAKIAogVEVTVE1PRCA9ICJ6aXB0ZXN0bW9kdWxlIgpAQCAtMjExLDYgKzIwNSwxMCBAQAogICAgICAgICAgICAgbW9kID0gemkubG9hZF9tb2R1bGUoVEVTVFBBQ0spCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmdldF9maWxlbmFtZShURVNUUEFDSyksIG1vZC5fX2ZpbGVfXykKIAorICAgICAgICAgICAgZXhpc3RpbmdfcGFja19wYXRoID0gX19pbXBvcnRfXyhURVNUUEFDSykuX19wYXRoX19bMF0KKyAgICAgICAgICAgIGV4cGVjdGVkX3BhdGhfcGF0aCA9IG9zLnBhdGguam9pbihURU1QX1pJUCwgVEVTVFBBQ0spCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXN0aW5nX3BhY2tfcGF0aCwgZXhwZWN0ZWRfcGF0aF9wYXRoKQorCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmlzX3BhY2thZ2UocGFja2RpciArICdfX2luaXRfXycpLCBGYWxzZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuaXNfcGFja2FnZShwYWNrZGlyICsgVEVTVFBBQ0syKSwgVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuaXNfcGFja2FnZShwYWNrZGlyMiArIFRFU1RNT0QpLCBGYWxzZSkKQEAgLTI5OSw3ICsyOTcsNyBAQAogICAgICAgICAgICAgcmV0dXJuIF9fZmlsZV9fCiAgICAgICAgIGlmIF9fbG9hZGVyX18uZ2V0X2RhdGEoInNvbWUuZGF0YSIpICE9IGIic29tZSBkYXRhIjoKICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJiYWQgZGF0YSIpXG4iIiIKLSAgICAgICAgcHljID0gbWFrZV9weWMoY29tcGlsZShzcmMsICI8Pz8/PiIsICJleGVjIiksIE5PVykKKyAgICAgICAgcHljID0gbWFrZV9weWMoY29tcGlsZShzcmMsICI8Pz8/PiIsICJleGVjIiksIE5PVywgbGVuKHNyYykpCiAgICAgICAgIGZpbGVzID0ge1RFU1RNT0QgKyBweWNfZXh0OiAoTk9XLCBweWMpLAogICAgICAgICAgICAgICAgICAic29tZS5kYXRhIjogKE5PVywgInNvbWUgZGF0YSIpfQogICAgICAgICBzZWxmLmRvVGVzdChweWNfZXh0LCBmaWxlcywgVEVTVE1PRCkKQEAgLTMxOSw3ICszMTcsNyBAQAogICAgICAgICBzZWxmLmRvVGVzdCgiLnB5IiwgZmlsZXMsIFRFU1RNT0QsIGNhbGw9c2VsZi5hc3NlcnRNb2R1bGVTb3VyY2UpCiAKICAgICBkZWYgdGVzdEdldENvbXBpbGVkU291cmNlKHNlbGYpOgotICAgICAgICBweWMgPSBtYWtlX3B5Yyhjb21waWxlKHRlc3Rfc3JjLCAiPD8/Pz4iLCAiZXhlYyIpLCBOT1cpCisgICAgICAgIHB5YyA9IG1ha2VfcHljKGNvbXBpbGUodGVzdF9zcmMsICI8Pz8/PiIsICJleGVjIiksIE5PVywgbGVuKHRlc3Rfc3JjKSkKICAgICAgICAgZmlsZXMgPSB7VEVTVE1PRCArICIucHkiOiAoTk9XLCB0ZXN0X3NyYyksCiAgICAgICAgICAgICAgICAgIFRFU1RNT0QgKyBweWNfZXh0OiAoTk9XLCBweWMpfQogICAgICAgICBzZWxmLmRvVGVzdChweWNfZXh0LCBmaWxlcywgVEVTVE1PRCwgY2FsbD1zZWxmLmFzc2VydE1vZHVsZVNvdXJjZSkKQEAgLTM5Miw3ICszOTAsNyBAQAogICAgICAgICAgICAgb3MucmVtb3ZlKGZpbGVuYW1lKQogCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKK0BzdXBwb3J0LnJlcXVpcmVzX3psaWIKIGNsYXNzIENvbXByZXNzZWRaaXBJbXBvcnRUZXN0Q2FzZShVbmNvbXByZXNzZWRaaXBJbXBvcnRUZXN0Q2FzZSk6CiAgICAgY29tcHJlc3Npb24gPSBaSVBfREVGTEFURUQKIApAQCAtNDE3LDcgKzQxNSw3IEBACiAKICAgICBkZWYgdGVzdEVtcHR5RmlsZShzZWxmKToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVE1PRCkKLSAgICAgICAgb3BlbihURVNUTU9ELCAndysnKS5jbG9zZSgpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoVEVTVE1PRCkKICAgICAgICAgc2VsZi5hc3NlcnRaaXBGYWlsdXJlKFRFU1RNT0QpCiAKICAgICBkZWYgdGVzdEZpbGVVbnJlYWRhYmxlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKaW5kZXggYTU1OGQ3ZC4uMGM5M2E4YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CkBAIC0xNTYsMjAgKzE1NiwxOSBAQAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfRG9jVGVzdFJ1bm5lci52ZXJib3NlX2ZsYWcsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9FeGFtcGxlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfZGVidWcsCi0gICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlLAotICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWQsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF90ZXN0c291cmNlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfdHJhaWxpbmdfc3BhY2VfaW5fdGVzdCwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X0RvY1Rlc3RTdWl0ZSwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X0RvY1Rlc3RGaW5kZXIsCiAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICMgVGhlc2UgcmVtYWluaW5nIHRlc3RzIGFyZSB0aGUgb25lcyB3aGljaCBuZWVkIGFjY2VzcworICAgICAgICAgICAgICAgICMgVGhlc2UgdGVzdHMgYXJlIHRoZSBvbmVzIHdoaWNoIG5lZWQgYWNjZXNzCiAgICAgICAgICAgICAgICAgIyB0byB0aGUgZGF0YSBmaWxlcywgc28gd2UgZG9uJ3QgcnVuIHRoZW0KICAgICAgICAgICAgICAgICBmYWlsX2R1ZV90b19taXNzaW5nX2RhdGFfZmlsZXMgPSBbCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9Eb2NGaWxlU3VpdGUsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF90ZXN0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X3VuaXR0ZXN0X3JlcG9ydGZsYWdzLAogICAgICAgICAgICAgICAgIF0KKwogICAgICAgICAgICAgICAgIGZvciBvYmogaW4ga25vd25fZ29vZF90ZXN0czoKICAgICAgICAgICAgICAgICAgICAgX3J1bl9vYmplY3RfZG9jdGVzdChvYmosIHRlc3RfemlwcGVkX2RvY3Rlc3QpCiAgICAgICAgICAgICBmaW5hbGx5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96bGliLnB5IGIvTGliL3Rlc3QvdGVzdF96bGliLnB5CmluZGV4IDYwMDgxZTIuLmQ2MzdjMmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKQEAgLTcsMTAgKzcsMTYgQEAKIAogemxpYiA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnemxpYicpCiAKLXRyeToKLSAgICBpbXBvcnQgbW1hcAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIG1tYXAgPSBOb25lCisKK2NsYXNzIFZlcnNpb25UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9saWJyYXJ5X3ZlcnNpb24oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHRoZSBtYWpvciB2ZXJzaW9uIG9mIHRoZSBhY3R1YWwgbGlicmFyeSBpbiB1c2UgbWF0Y2hlcyB0aGUKKyAgICAgICAgIyBtYWpvciB2ZXJzaW9uIHRoYXQgd2Ugd2VyZSBjb21waWxlZCBhZ2FpbnN0LiBXZSBjYW4ndCBndWFyYW50ZWUgdGhhdAorICAgICAgICAjIHRoZSBtaW5vciB2ZXJzaW9ucyB3aWxsIG1hdGNoIChldmVuIG9uIHRoZSBtYWNoaW5lIG9uIHdoaWNoIHRoZSBtb2R1bGUKKyAgICAgICAgIyB3YXMgY29tcGlsZWQpLCBhbmQgdGhlIEFQSSBpcyBzdGFibGUgYmV0d2VlbiBtaW5vciB2ZXJzaW9ucywgc28KKyAgICAgICAgIyB0ZXN0aW5nIG9ubHkgdGhlIG1ham9yIHZlcnNpb25zIGF2b2lkcyBzcHVyaW91cyBmYWlsdXJlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLlpMSUJfUlVOVElNRV9WRVJTSU9OWzBdLCB6bGliLlpMSUJfVkVSU0lPTlswXSkKIAogCiBjbGFzcyBDaGVja3N1bVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE3MywxMCArMTc5LDggQEAKICAgICBkZWYgdGVzdF9iaWdfZGVjb21wcmVzc19idWZmZXIoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHNlbGYuY2hlY2tfYmlnX2RlY29tcHJlc3NfYnVmZmVyKHNpemUsIHpsaWIuZGVjb21wcmVzcykKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTEsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfbGVuZ3RoX292ZXJmbG93KHNlbGYsIHNpemUpOgotICAgICAgICBpZiBzaXplIDwgXzRHICsgMTAwOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm90IGVub3VnaCBmcmVlIG1lbW9yeSwgbmVlZCBhdCBsZWFzdCA0IEdCIikKICAgICAgICAgZGF0YSA9IGIneCcgKiBzaXplCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHpsaWIuY29tcHJlc3MsIGRhdGEsIDEpCkBAIC00MjEsNiArNDI1LDM1IEBACiAgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGNvLmZsdXNoKCksIGIiIikgIyBSZXR1cm5zIG5vdGhpbmcKIAorICAgIGRlZiB0ZXN0X2RpY3Rpb25hcnkoc2VsZik6CisgICAgICAgIGggPSBIQU1MRVRfU0NFTkUKKyAgICAgICAgIyBCdWlsZCBhIHNpbXVsYXRlZCBkaWN0aW9uYXJ5IG91dCBvZiB0aGUgd29yZHMgaW4gSEFNTEVULgorICAgICAgICB3b3JkcyA9IGguc3BsaXQoKQorICAgICAgICByYW5kb20uc2h1ZmZsZSh3b3JkcykKKyAgICAgICAgemRpY3QgPSBiJycuam9pbih3b3JkcykKKyAgICAgICAgIyBVc2UgaXQgdG8gY29tcHJlc3MgSEFNTEVULgorICAgICAgICBjbyA9IHpsaWIuY29tcHJlc3NvYmooemRpY3Q9emRpY3QpCisgICAgICAgIGNkID0gY28uY29tcHJlc3MoaCkgKyBjby5mbHVzaCgpCisgICAgICAgICMgVmVyaWZ5IHRoYXQgaXQgd2lsbCBkZWNvbXByZXNzIHdpdGggdGhlIGRpY3Rpb25hcnkuCisgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaih6ZGljdD16ZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkY28uZGVjb21wcmVzcyhjZCkgKyBkY28uZmx1c2goKSwgaCkKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBpdCBmYWlscyB3aGVuIG5vdCBnaXZlbiB0aGUgZGljdGlvbmFyeS4KKyAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoemxpYi5lcnJvciwgZGNvLmRlY29tcHJlc3MsIGNkKQorCisgICAgZGVmIHRlc3RfZGljdGlvbmFyeV9zdHJlYW1pbmcoc2VsZik6CisgICAgICAgICMgVGhpcyBzaW11bGF0ZXMgdGhlIHJldXNlIG9mIGEgY29tcHJlc3NvciBvYmplY3QgZm9yIGNvbXByZXNzaW5nCisgICAgICAgICMgc2V2ZXJhbCBzZXBhcmF0ZSBkYXRhIHN0cmVhbXMuCisgICAgICAgIGNvID0gemxpYi5jb21wcmVzc29iaih6ZGljdD1IQU1MRVRfU0NFTkUpCisgICAgICAgIGRvID0gemxpYi5kZWNvbXByZXNzb2JqKHpkaWN0PUhBTUxFVF9TQ0VORSkKKyAgICAgICAgcGllY2UgPSBIQU1MRVRfU0NFTkVbMTAwMDoxNTAwXQorICAgICAgICBkMCA9IGNvLmNvbXByZXNzKHBpZWNlKSArIGNvLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBkMSA9IGNvLmNvbXByZXNzKHBpZWNlWzEwMDpdKSArIGNvLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBkMiA9IGNvLmNvbXByZXNzKHBpZWNlWzotMTAwXSkgKyBjby5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkby5kZWNvbXByZXNzKGQwKSwgcGllY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG8uZGVjb21wcmVzcyhkMSksIHBpZWNlWzEwMDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvLmRlY29tcHJlc3MoZDIpLCBwaWVjZVs6LTEwMF0pCisKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2luY29tcGxldGVfc3RyZWFtKHNlbGYpOgogICAgICAgICAjIFRoaXMgaXMgJ2ZvbycsIGRlZmxhdGVkCiAgICAgICAgIHggPSBiJ3hceDljS1x4Y2JceGNmXHgwN1x4MDBceDAyXHg4Mlx4MDFFJwpAQCAtNDM0LDYgKzQ2NywyNiBAQAogICAgICAgICB5ICs9IGRjby5mbHVzaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgYidmb28nKQogCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19lb2Yoc2VsZik6CisgICAgICAgIHggPSBiJ3hceDljS1x4Y2JceGNmXHgwN1x4MDBceDAyXHg4Mlx4MDFFJyAgIyAnZm9vJworICAgICAgICBkY28gPSB6bGliLmRlY29tcHJlc3NvYmooKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRjby5lb2YpCisgICAgICAgIGRjby5kZWNvbXByZXNzKHhbOi01XSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorICAgICAgICBkY28uZGVjb21wcmVzcyh4Wy01Ol0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkY28uZW9mKQorICAgICAgICBkY28uZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGNvLmVvZikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfZW9mX2luY29tcGxldGVfc3RyZWFtKHNlbGYpOgorICAgICAgICB4ID0gYid4XHg5Y0tceGNiXHhjZlx4MDdceDAwXHgwMlx4ODJceDAxRScgICMgJ2ZvbycKKyAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorICAgICAgICBkY28uZGVjb21wcmVzcyh4WzotNV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGNvLmVvZikKKyAgICAgICAgZGNvLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorCiAgICAgaWYgaGFzYXR0cih6bGliLmNvbXByZXNzb2JqKCksICJjb3B5Iik6CiAgICAgICAgIGRlZiB0ZXN0X2NvbXByZXNzY29weShzZWxmKToKICAgICAgICAgICAgICMgVGVzdCBjb3B5aW5nIGEgY29tcHJlc3Npb24gb2JqZWN0CkBAIC01MTAsMTAgKzU2Myw4IEBACiAgICAgICAgIGRlY29tcHJlc3MgPSBsYW1iZGEgczogZC5kZWNvbXByZXNzKHMpICsgZC5mbHVzaCgpCiAgICAgICAgIHNlbGYuY2hlY2tfYmlnX2RlY29tcHJlc3NfYnVmZmVyKHNpemUsIGRlY29tcHJlc3MpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTEpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0xLCBkcnlfcnVuPUZhbHNlKQogICAgIGRlZiB0ZXN0X2xlbmd0aF9vdmVyZmxvdyhzZWxmLCBzaXplKToKLSAgICAgICAgaWYgc2l6ZSA8IF80RyArIDEwMDoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vdCBlbm91Z2ggZnJlZSBtZW1vcnksIG5lZWQgYXQgbGVhc3QgNCBHQiIpCiAgICAgICAgIGRhdGEgPSBiJ3gnICogc2l6ZQogICAgICAgICBjID0gemxpYi5jb21wcmVzc29iaigxKQogICAgICAgICBkID0gemxpYi5kZWNvbXByZXNzb2JqKCkKQEAgLTYxNCw2ICs2NjUsNyBAQAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgIFZlcnNpb25UZXN0Q2FzZSwKICAgICAgICAgQ2hlY2tzdW1UZXN0Q2FzZSwKICAgICAgICAgQ2hlY2tzdW1CaWdCdWZmZXJUZXN0Q2FzZSwKICAgICAgICAgRXhjZXB0aW9uVGVzdENhc2UsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90aHJlYWRlZF9pbXBvcnRfaGFuZ2Vycy5weSBiL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CmluZGV4IGFkZjAzZTMuLjU0ODRlNjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CisrKyBiL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CkBAIC0zNSw4ICszNSwxMSBAQAogICAgICAgICAoIm9zLnBhdGguYWJzcGF0aCIsIG9zLnBhdGguYWJzcGF0aCwgKCcuJywpKSwKICAgICAgICAgXToKIAotICAgIHQgPSBXb3JrZXIoZnVuYywgYXJncykKLSAgICB0LnN0YXJ0KCkKLSAgICB0LmpvaW4oVElNRU9VVCkKLSAgICBpZiB0LmlzX2FsaXZlKCk6Ci0gICAgICAgIGVycm9ycy5hcHBlbmQoIiVzIGFwcGVhcmVkIHRvIGhhbmciICUgbmFtZSkKKyAgICB0cnk6CisgICAgICAgIHQgPSBXb3JrZXIoZnVuYywgYXJncykKKyAgICAgICAgdC5zdGFydCgpCisgICAgICAgIHQuam9pbihUSU1FT1VUKQorICAgICAgICBpZiB0LmlzX2FsaXZlKCk6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCIlcyBhcHBlYXJlZCB0byBoYW5nIiAlIG5hbWUpCisgICAgZmluYWxseToKKyAgICAgICAgZGVsIHQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rva2VuaXplX3Rlc3RzLnR4dCBiL0xpYi90ZXN0L3Rva2VuaXplX3Rlc3RzLnR4dAppbmRleCAwNmM4M2IwLi4yYzVmYjEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90b2tlbml6ZV90ZXN0cy50eHQKKysrIGIvTGliL3Rlc3QvdG9rZW5pemVfdGVzdHMudHh0CkBAIC0xMTQsOCArMTE0LDEyIEBACiB5ID0gYiJhYmMiICsgQiJBQkMiCiB4ID0gYnInYWJjJyArIEJyJ0FCQycgKyBiUidBQkMnICsgQlInQUJDJwogeSA9IGJyImFiYyIgKyBCciJBQkMiICsgYlIiQUJDIiArIEJSIkFCQyIKK3ggPSByYidhYmMnICsgckInQUJDJyArIFJiJ0FCQycgKyBSQidBQkMnCit5ID0gcmIiYWJjIiArIHJCIkFCQyIgKyBSYiJBQkMiICsgUkIiQUJDIgogeCA9IGJyJ1xcJyArIEJSJ1xcJworeCA9IHJiJ1xcJyArIFJCJ1xcJwogeCA9IGJyJ1wnJyArICcnCit4ID0gcmInXCcnICsgJycKIHkgPSBicicnJwogZm9vIGJhciBcXAogYmF6JycnICsgQlInJycKQEAgLTEyNCw2ICsxMjgsMTAgQEAKIGJhciBcXCBiYXoKICIiIiArIGJSJycnc3BhbQogJycnCit5ID0gckIiIiJmb28KK2JhciBcXCBiYXoKKyIiIiArIFJiJycnc3BhbQorJycnCiAKICMgSW5kZW50YXRpb24KIGlmIDE6CmRpZmYgLS1naXQgYS9MaWIvdGV4dHdyYXAucHkgYi9MaWIvdGV4dHdyYXAucHkKaW5kZXggZGZiNDAwNS4uNzAyNGQ0ZCAxMDA2NDQKLS0tIGEvTGliL3RleHR3cmFwLnB5CisrKyBiL0xpYi90ZXh0d3JhcC5weQpAQCAtNSw5ICs1LDkgQEAKICMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogIyBXcml0dGVuIGJ5IEdyZWcgV2FyZCA8Z3dhcmRAcHl0aG9uLm5ldD4KIAotaW1wb3J0IHN0cmluZywgcmUKK2ltcG9ydCByZQogCi1fX2FsbF9fID0gWydUZXh0V3JhcHBlcicsICd3cmFwJywgJ2ZpbGwnLCAnZGVkZW50J10KK19fYWxsX18gPSBbJ1RleHRXcmFwcGVyJywgJ3dyYXAnLCAnZmlsbCcsICdkZWRlbnQnLCAnaW5kZW50J10KIAogIyBIYXJkY29kZSB0aGUgcmVjb2duaXplZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgdG8gdGhlIFVTLUFTQ0lJCiAjIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4gIFRoZSBtYWluIHJlYXNvbiBmb3IgZG9pbmcgdGhpcyBpcyB0aGF0IGluCkBAIC0zOSw4ICszOSwxMSBAQAogICAgICAgICBvZiB3cmFwcGVkIG91dHB1dDsgYWxzbyBjb3VudHMgdG93YXJkcyBlYWNoIGxpbmUncyB3aWR0aC4KICAgICAgIGV4cGFuZF90YWJzIChkZWZhdWx0OiB0cnVlKQogICAgICAgICBFeHBhbmQgdGFicyBpbiBpbnB1dCB0ZXh0IHRvIHNwYWNlcyBiZWZvcmUgZnVydGhlciBwcm9jZXNzaW5nLgotICAgICAgICBFYWNoIHRhYiB3aWxsIGJlY29tZSAxIC4uIDggc3BhY2VzLCBkZXBlbmRpbmcgb24gaXRzIHBvc2l0aW9uIGluCi0gICAgICAgIGl0cyBsaW5lLiAgSWYgZmFsc2UsIGVhY2ggdGFiIGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyLgorICAgICAgICBFYWNoIHRhYiB3aWxsIGJlY29tZSAwIC4uICd0YWJzaXplJyBzcGFjZXMsIGRlcGVuZGluZyBvbiBpdHMgcG9zaXRpb24KKyAgICAgICAgaW4gaXRzIGxpbmUuICBJZiBmYWxzZSwgZWFjaCB0YWIgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuCisgICAgICB0YWJzaXplIChkZWZhdWx0OiA4KQorICAgICAgICBFeHBhbmQgdGFicyBpbiBpbnB1dCB0ZXh0IHRvIDAgLi4gJ3RhYnNpemUnIHNwYWNlcywgdW5sZXNzCisgICAgICAgICdleHBhbmRfdGFicycgaXMgZmFsc2UuCiAgICAgICByZXBsYWNlX3doaXRlc3BhY2UgKGRlZmF1bHQ6IHRydWUpCiAgICAgICAgIFJlcGxhY2UgYWxsIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgaW5wdXQgdGV4dCBieSBzcGFjZXMKICAgICAgICAgYWZ0ZXIgdGFiIGV4cGFuc2lvbi4gIE5vdGUgdGhhdCBpZiBleHBhbmRfdGFicyBpcyBmYWxzZSBhbmQKQEAgLTEwMCw3ICsxMDMsOCBAQAogICAgICAgICAgICAgICAgICBmaXhfc2VudGVuY2VfZW5kaW5ncz1GYWxzZSwKICAgICAgICAgICAgICAgICAgYnJlYWtfbG9uZ193b3Jkcz1UcnVlLAogICAgICAgICAgICAgICAgICBkcm9wX3doaXRlc3BhY2U9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgYnJlYWtfb25faHlwaGVucz1UcnVlKToKKyAgICAgICAgICAgICAgICAgYnJlYWtfb25faHlwaGVucz1UcnVlLAorICAgICAgICAgICAgICAgICB0YWJzaXplPTgpOgogICAgICAgICBzZWxmLndpZHRoID0gd2lkdGgKICAgICAgICAgc2VsZi5pbml0aWFsX2luZGVudCA9IGluaXRpYWxfaW5kZW50CiAgICAgICAgIHNlbGYuc3Vic2VxdWVudF9pbmRlbnQgPSBzdWJzZXF1ZW50X2luZGVudApAQCAtMTEwLDYgKzExNCw3IEBACiAgICAgICAgIHNlbGYuYnJlYWtfbG9uZ193b3JkcyA9IGJyZWFrX2xvbmdfd29yZHMKICAgICAgICAgc2VsZi5kcm9wX3doaXRlc3BhY2UgPSBkcm9wX3doaXRlc3BhY2UKICAgICAgICAgc2VsZi5icmVha19vbl9oeXBoZW5zID0gYnJlYWtfb25faHlwaGVucworICAgICAgICBzZWxmLnRhYnNpemUgPSB0YWJzaXplCiAKIAogICAgICMgLS0gUHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjMsNyArMTI4LDcgQEAKICAgICAgICAgYmVjb21lcyAiIGZvbyAgICBiYXIgIGJheiIuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLmV4cGFuZF90YWJzOgotICAgICAgICAgICAgdGV4dCA9IHRleHQuZXhwYW5kdGFicygpCisgICAgICAgICAgICB0ZXh0ID0gdGV4dC5leHBhbmR0YWJzKHNlbGYudGFic2l6ZSkKICAgICAgICAgaWYgc2VsZi5yZXBsYWNlX3doaXRlc3BhY2U6CiAgICAgICAgICAgICB0ZXh0ID0gdGV4dC50cmFuc2xhdGUoc2VsZi51bmljb2RlX3doaXRlc3BhY2VfdHJhbnMpCiAgICAgICAgIHJldHVybiB0ZXh0CkBAIC0zODEsNiArMzg2LDI1IEBACiAgICAgICAgIHRleHQgPSByZS5zdWIocicoP20pXicgKyBtYXJnaW4sICcnLCB0ZXh0KQogICAgIHJldHVybiB0ZXh0CiAKKworZGVmIGluZGVudCh0ZXh0LCBwcmVmaXgsIHByZWRpY2F0ZT1Ob25lKToKKyAgICAiIiJBZGRzICdwcmVmaXgnIHRvIHRoZSBiZWdpbm5pbmcgb2Ygc2VsZWN0ZWQgbGluZXMgaW4gJ3RleHQnLgorCisgICAgSWYgJ3ByZWRpY2F0ZScgaXMgcHJvdmlkZWQsICdwcmVmaXgnIHdpbGwgb25seSBiZSBhZGRlZCB0byB0aGUgbGluZXMKKyAgICB3aGVyZSAncHJlZGljYXRlKGxpbmUpJyBpcyBUcnVlLiBJZiAncHJlZGljYXRlJyBpcyBub3QgcHJvdmlkZWQsCisgICAgaXQgd2lsbCBkZWZhdWx0IHRvIGFkZGluZyAncHJlZml4JyB0byBhbGwgbm9uLWVtcHR5IGxpbmVzIHRoYXQgZG8gbm90CisgICAgY29uc2lzdCBzb2xlbHkgb2Ygd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgorICAgICIiIgorICAgIGlmIHByZWRpY2F0ZSBpcyBOb25lOgorICAgICAgICBkZWYgcHJlZGljYXRlKGxpbmUpOgorICAgICAgICAgICAgcmV0dXJuIGxpbmUuc3RyaXAoKQorCisgICAgZGVmIHByZWZpeGVkX2xpbmVzKCk6CisgICAgICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcyhUcnVlKToKKyAgICAgICAgICAgIHlpZWxkIChwcmVmaXggKyBsaW5lIGlmIHByZWRpY2F0ZShsaW5lKSBlbHNlIGxpbmUpCisgICAgcmV0dXJuICcnLmpvaW4ocHJlZml4ZWRfbGluZXMoKSkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICNwcmludCBkZWRlbnQoIlx0Zm9vXG5cdGJhciIpCiAgICAgI3ByaW50IGRlZGVudCgiICBcdGhlbGxvIHRoZXJlXG4gIFx0ICBob3cgYXJlIHlvdT8iKQpkaWZmIC0tZ2l0IGEvTGliL3RocmVhZGluZy5weSBiL0xpYi90aHJlYWRpbmcucHkKaW5kZXggNThmZmE3ZS4uNmMzNGQ0OSAxMDA2NDQKLS0tIGEvTGliL3RocmVhZGluZy5weQorKysgYi9MaWIvdGhyZWFkaW5nLnB5CkBAIC0zLDcgKzMsMTEgQEAKIGltcG9ydCBzeXMgYXMgX3N5cwogaW1wb3J0IF90aHJlYWQKIAotZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lLCBzbGVlcCBhcyBfc2xlZXAKK2Zyb20gdGltZSBpbXBvcnQgc2xlZXAgYXMgX3NsZWVwCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIGZyb20gdHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjIGFzIF9mb3JtYXRfZXhjCiBmcm9tIF93ZWFrcmVmc2V0IGltcG9ydCBXZWFrU2V0CiAKQEAgLTE5LDEyICsyMywxMiBAQAogCiBfX2FsbF9fID0gWydhY3RpdmVfY291bnQnLCAnQ29uZGl0aW9uJywgJ2N1cnJlbnRfdGhyZWFkJywgJ2VudW1lcmF0ZScsICdFdmVudCcsCiAgICAgICAgICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ1RocmVhZCcsICdCYXJyaWVyJywKLSAgICAgICAgICAgJ1RpbWVyJywgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZSddCisgICAgICAgICAgICdUaW1lcicsICdUaHJlYWRFcnJvcicsICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQogCiAjIFJlbmFtZSBzb21lIHN0dWZmIHNvICJmcm9tIHRocmVhZGluZyBpbXBvcnQgKiIgaXMgc2FmZQogX3N0YXJ0X25ld190aHJlYWQgPSBfdGhyZWFkLnN0YXJ0X25ld190aHJlYWQKIF9hbGxvY2F0ZV9sb2NrID0gX3RocmVhZC5hbGxvY2F0ZV9sb2NrCi1fZ2V0X2lkZW50ID0gX3RocmVhZC5nZXRfaWRlbnQKK2dldF9pZGVudCA9IF90aHJlYWQuZ2V0X2lkZW50CiBUaHJlYWRFcnJvciA9IF90aHJlYWQuZXJyb3IKIHRyeToKICAgICBfQ1JMb2NrID0gX3RocmVhZC5STG9jawpAQCAtMzQsNDAgKzM4LDYgQEAKIGRlbCBfdGhyZWFkCiAKIAotIyBEZWJ1ZyBzdXBwb3J0IChhZGFwdGVkIGZyb20gaWhvb2tzLnB5KS4KLQotX1ZFUkJPU0UgPSBGYWxzZQotCi1pZiBfX2RlYnVnX186Ci0KLSAgICBjbGFzcyBfVmVyYm9zZShvYmplY3QpOgotCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICAgICAgaWYgdmVyYm9zZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBfVkVSQk9TRQotICAgICAgICAgICAgc2VsZi5fdmVyYm9zZSA9IHZlcmJvc2UKLQotICAgICAgICBkZWYgX25vdGUoc2VsZiwgZm9ybWF0LCAqYXJncyk6Ci0gICAgICAgICAgICBpZiBzZWxmLl92ZXJib3NlOgotICAgICAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCAlIGFyZ3MKLSAgICAgICAgICAgICAgICAjIElzc3VlICM0MTg4OiBjYWxsaW5nIGN1cnJlbnRfdGhyZWFkKCkgY2FuIGluY3VyIGFuIGluZmluaXRlCi0gICAgICAgICAgICAgICAgIyByZWN1cnNpb24gaWYgaXQgaGFzIHRvIGNyZWF0ZSBhIER1bW15VGhyZWFkIG9uIHRoZSBmbHkuCi0gICAgICAgICAgICAgICAgaWRlbnQgPSBfZ2V0X2lkZW50KCkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBfYWN0aXZlW2lkZW50XS5uYW1lCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gIjxPUyB0aHJlYWQgJWQ+IiAlIGlkZW50Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gIiVzOiAlc1xuIiAlIChuYW1lLCBmb3JtYXQpCi0gICAgICAgICAgICAgICAgX3N5cy5zdGRlcnIud3JpdGUoZm9ybWF0KQotCi1lbHNlOgotICAgICMgRGlzYWJsZSB0aGlzIHdoZW4gdXNpbmcgInB5dGhvbiAtTyIKLSAgICBjbGFzcyBfVmVyYm9zZShvYmplY3QpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZGVmIF9ub3RlKHNlbGYsICphcmdzKToKLSAgICAgICAgICAgIHBhc3MKLQogIyBTdXBwb3J0IGZvciBwcm9maWxlIGFuZCB0cmFjZSBob29rcwogCiBfcHJvZmlsZV9ob29rID0gTm9uZQpAQCAtODUsMTcgKzU1LDE0IEBACiAKIExvY2sgPSBfYWxsb2NhdGVfbG9jawogCi1kZWYgUkxvY2sodmVyYm9zZT1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgotICAgIGlmIHZlcmJvc2UgaXMgTm9uZToKLSAgICAgICAgdmVyYm9zZSA9IF9WRVJCT1NFCi0gICAgaWYgKF9fZGVidWdfXyBhbmQgdmVyYm9zZSkgb3IgX0NSTG9jayBpcyBOb25lOgotICAgICAgICByZXR1cm4gX1B5UkxvY2sodmVyYm9zZSwgKmFyZ3MsICoqa3dhcmdzKQorZGVmIFJMb2NrKCphcmdzLCAqKmt3YXJncyk6CisgICAgaWYgX0NSTG9jayBpcyBOb25lOgorICAgICAgICByZXR1cm4gX1B5UkxvY2soKmFyZ3MsICoqa3dhcmdzKQogICAgIHJldHVybiBfQ1JMb2NrKCphcmdzLCAqKmt3YXJncykKIAotY2xhc3MgX1JMb2NrKF9WZXJib3NlKToKK2NsYXNzIF9STG9jazoKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICBfVmVyYm9zZS5fX2luaXRfXyhzZWxmLCB2ZXJib3NlKQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5fYmxvY2sgPSBfYWxsb2NhdGVfbG9jaygpCiAgICAgICAgIHNlbGYuX293bmVyID0gTm9uZQogICAgICAgICBzZWxmLl9jb3VudCA9IDAKQEAgLTExMCwzNyArNzcsMjUgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgb3duZXIsIHNlbGYuX2NvdW50KQogCiAgICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD0tMSk6Ci0gICAgICAgIG1lID0gX2dldF9pZGVudCgpCisgICAgICAgIG1lID0gZ2V0X2lkZW50KCkKICAgICAgICAgaWYgc2VsZi5fb3duZXIgPT0gbWU6CiAgICAgICAgICAgICBzZWxmLl9jb3VudCA9IHNlbGYuX2NvdW50ICsgMQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmFjcXVpcmUoJXMpOiByZWN1cnNpdmUgc3VjY2VzcyIsIHNlbGYsIGJsb2NraW5nKQogICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgcmMgPSBzZWxmLl9ibG9jay5hY3F1aXJlKGJsb2NraW5nLCB0aW1lb3V0KQogICAgICAgICBpZiByYzoKICAgICAgICAgICAgIHNlbGYuX293bmVyID0gbWUKICAgICAgICAgICAgIHNlbGYuX2NvdW50ID0gMQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmFjcXVpcmUoJXMpOiBpbml0aWFsIHN1Y2Nlc3MiLCBzZWxmLCBibG9ja2luZykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogZmFpbHVyZSIsIHNlbGYsIGJsb2NraW5nKQogICAgICAgICByZXR1cm4gcmMKIAogICAgIF9fZW50ZXJfXyA9IGFjcXVpcmUKIAogICAgIGRlZiByZWxlYXNlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9vd25lciAhPSBfZ2V0X2lkZW50KCk6CisgICAgICAgIGlmIHNlbGYuX293bmVyICE9IGdldF9pZGVudCgpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIikKICAgICAgICAgc2VsZi5fY291bnQgPSBjb3VudCA9IHNlbGYuX2NvdW50IC0gMQogICAgICAgICBpZiBub3QgY291bnQ6CiAgICAgICAgICAgICBzZWxmLl9vd25lciA9IE5vbmUKICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLnJlbGVhc2UoKQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLnJlbGVhc2UoKTogZmluYWwgcmVsZWFzZSIsIHNlbGYpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMucmVsZWFzZSgpOiBub24tZmluYWwgcmVsZWFzZSIsIHNlbGYpCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgdCwgdiwgdGIpOgogICAgICAgICBzZWxmLnJlbGVhc2UoKQpAQCAtMTUwLDEyICsxMDUsMTAgQEAKICAgICBkZWYgX2FjcXVpcmVfcmVzdG9yZShzZWxmLCBzdGF0ZSk6CiAgICAgICAgIHNlbGYuX2Jsb2NrLmFjcXVpcmUoKQogICAgICAgICBzZWxmLl9jb3VudCwgc2VsZi5fb3duZXIgPSBzdGF0ZQotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYWNxdWlyZV9yZXN0b3JlKCkiLCBzZWxmKQogCiAgICAgZGVmIF9yZWxlYXNlX3NhdmUoc2VsZik6Ci0gICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9yZWxlYXNlX3NhdmUoKSIsIHNlbGYpCisgICAgICAgIGlmIHNlbGYuX2NvdW50ID09IDA6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCByZWxlYXNlIHVuLWFjcXVpcmVkIGxvY2siKQogICAgICAgICBjb3VudCA9IHNlbGYuX2NvdW50CiAgICAgICAgIHNlbGYuX2NvdW50ID0gMAogICAgICAgICBvd25lciA9IHNlbGYuX293bmVyCkBAIC0xNjQsMTggKzExNywxNCBAQAogICAgICAgICByZXR1cm4gKGNvdW50LCBvd25lcikKIAogICAgIGRlZiBfaXNfb3duZWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9vd25lciA9PSBfZ2V0X2lkZW50KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX293bmVyID09IGdldF9pZGVudCgpCiAKIF9QeVJMb2NrID0gX1JMb2NrCiAKIAotZGVmIENvbmRpdGlvbigqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfQ29uZGl0aW9uKCphcmdzLCAqKmt3YXJncykKK2NsYXNzIENvbmRpdGlvbjoKIAotY2xhc3MgX0NvbmRpdGlvbihfVmVyYm9zZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jaz1Ob25lLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICBfVmVyYm9zZS5fX2luaXRfXyhzZWxmLCB2ZXJib3NlKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NrPU5vbmUpOgogICAgICAgICBpZiBsb2NrIGlzIE5vbmU6CiAgICAgICAgICAgICBsb2NrID0gUkxvY2soKQogICAgICAgICBzZWxmLl9sb2NrID0gbG9jawpAQCAtMjM0LDIzICsxODMsMTYgQEAKICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICB3YWl0ZXIuYWNxdWlyZSgpCiAgICAgICAgICAgICAgICAgZ290aXQgPSBUcnVlCi0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0KCk6IGdvdCBpdCIsIHNlbGYpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgPiAwOgogICAgICAgICAgICAgICAgICAgICBnb3RpdCA9IHdhaXRlci5hY3F1aXJlKFRydWUsIHRpbWVvdXQpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZ290aXQgPSB3YWl0ZXIuYWNxdWlyZShGYWxzZSkKICAgICAgICAgICAgICAgICBpZiBub3QgZ290aXQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXQoJXMpOiB0aW1lZCBvdXQiLCBzZWxmLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93YWl0ZXJzLnJlbW92ZSh3YWl0ZXIpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXQoJXMpOiBnb3QgaXQiLCBzZWxmLCB0aW1lb3V0KQogICAgICAgICAgICAgcmV0dXJuIGdvdGl0CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9hY3F1aXJlX3Jlc3RvcmUoc2F2ZWRfc3RhdGUpCkBAIC0yNjYsMTkgKzIwOCw5IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgd2FpdHRpbWUgPSBlbmR0aW1lIC0gX3RpbWUoKQogICAgICAgICAgICAgICAgICAgICBpZiB3YWl0dGltZSA8PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXRfZm9yKCVyLCAlcik6IFRpbWVkIG91dC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0X2ZvciglciwgJXIpOiBXYWl0aW5nIHdpdGggdGltZW91dD0lcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0LCB3YWl0dGltZSkKICAgICAgICAgICAgIHNlbGYud2FpdCh3YWl0dGltZSkKICAgICAgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMud2FpdF9mb3IoJXIsICVyKTogU3VjY2Vzcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0KQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgbm90aWZ5KHNlbGYsIG49MSk6CkBAIC0yODcsMTEgKzIxOSw3IEBACiAgICAgICAgIF9fd2FpdGVycyA9IHNlbGYuX3dhaXRlcnMKICAgICAgICAgd2FpdGVycyA9IF9fd2FpdGVyc1s6bl0KICAgICAgICAgaWYgbm90IHdhaXRlcnM6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMubm90aWZ5KCk6IG5vIHdhaXRlcnMiLCBzZWxmKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX25vdGUoIiVzLm5vdGlmeSgpOiBub3RpZnlpbmcgJWQgd2FpdGVyJXMiLCBzZWxmLCBuLAotICAgICAgICAgICAgICAgICAgIG4hPTEgYW5kICJzIiBvciAiIikKICAgICAgICAgZm9yIHdhaXRlciBpbiB3YWl0ZXJzOgogICAgICAgICAgICAgd2FpdGVyLnJlbGVhc2UoKQogICAgICAgICAgICAgdHJ5OgpAQCAtMzA1LDE3ICsyMzMsMTMgQEAKICAgICBub3RpZnlBbGwgPSBub3RpZnlfYWxsCiAKIAotZGVmIFNlbWFwaG9yZSgqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfU2VtYXBob3JlKCphcmdzLCAqKmt3YXJncykKLQotY2xhc3MgX1NlbWFwaG9yZShfVmVyYm9zZSk6CitjbGFzcyBTZW1hcGhvcmU6CiAKICAgICAjIEFmdGVyIFRpbSBQZXRlcnMnIHNlbWFwaG9yZSBjbGFzcywgYnV0IG5vdCBxdWl0ZSB0aGUgc2FtZSAobm8gbWF4aW11bSkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0xLCB2ZXJib3NlPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0xKToKICAgICAgICAgaWYgdmFsdWUgPCAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VtYXBob3JlIGluaXRpYWwgdmFsdWUgbXVzdCBiZSA+PSAwIikKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKICAgICAgICAgc2VsZi5fY29uZCA9IENvbmRpdGlvbihMb2NrKCkpCiAgICAgICAgIHNlbGYuX3ZhbHVlID0gdmFsdWUKIApAQCAtMzI4LDkgKzI1Miw2IEBACiAgICAgICAgIHdoaWxlIHNlbGYuX3ZhbHVlID09IDA6CiAgICAgICAgICAgICBpZiBub3QgYmxvY2tpbmc6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogYmxvY2tlZCB3YWl0aW5nLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBibG9ja2luZywgc2VsZi5fdmFsdWUpCiAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CkBAIC0zNDEsOSArMjYyLDYgQEAKICAgICAgICAgICAgIHNlbGYuX2NvbmQud2FpdCh0aW1lb3V0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSBzZWxmLl92YWx1ZSAtIDEKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlOiBzdWNjZXNzLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBzZWxmLl92YWx1ZSkKICAgICAgICAgICAgIHJjID0gVHJ1ZQogICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogICAgICAgICByZXR1cm4gcmMKQEAgLTM1Myw5ICsyNzEsNiBAQAogICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQogICAgICAgICBzZWxmLl92YWx1ZSA9IHNlbGYuX3ZhbHVlICsgMQotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5yZWxlYXNlOiBzdWNjZXNzLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHNlbGYuX3ZhbHVlKQogICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCiAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKQEAgLTM2MywzMCArMjc4LDIzIEBACiAgICAgICAgIHNlbGYucmVsZWFzZSgpCiAKIAotZGVmIEJvdW5kZWRTZW1hcGhvcmUoKmFyZ3MsICoqa3dhcmdzKToKLSAgICByZXR1cm4gX0JvdW5kZWRTZW1hcGhvcmUoKmFyZ3MsICoqa3dhcmdzKQotCi1jbGFzcyBfQm91bmRlZFNlbWFwaG9yZShfU2VtYXBob3JlKToKK2NsYXNzIEJvdW5kZWRTZW1hcGhvcmUoU2VtYXBob3JlKToKICAgICAiIiJTZW1hcGhvcmUgdGhhdCBjaGVja3MgdGhhdCAjIHJlbGVhc2VzIGlzIDw9ICMgYWNxdWlyZXMiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1NlbWFwaG9yZS5fX2luaXRfXyhzZWxmLCB2YWx1ZSwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSk6CisgICAgICAgIFNlbWFwaG9yZS5fX2luaXRfXyhzZWxmLCB2YWx1ZSkKICAgICAgICAgc2VsZi5faW5pdGlhbF92YWx1ZSA9IHZhbHVlCiAKICAgICBkZWYgcmVsZWFzZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5fdmFsdWUgPj0gc2VsZi5faW5pdGlhbF92YWx1ZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlNlbWFwaG9yZSByZWxlYXNlZCB0b28gbWFueSB0aW1lcyIpCi0gICAgICAgIHJldHVybiBfU2VtYXBob3JlLnJlbGVhc2Uoc2VsZikKKyAgICAgICAgcmV0dXJuIFNlbWFwaG9yZS5yZWxlYXNlKHNlbGYpCiAKIAotZGVmIEV2ZW50KCphcmdzLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJuIF9FdmVudCgqYXJncywgKiprd2FyZ3MpCi0KLWNsYXNzIF9FdmVudChfVmVyYm9zZSk6CitjbGFzcyBFdmVudDoKIAogICAgICMgQWZ0ZXIgVGltIFBldGVycycgZXZlbnQgY2xhc3MgKHdpdGhvdXQgaXNfcG9zdGVkKCkpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuX2NvbmQgPSBDb25kaXRpb24oTG9jaygpKQogICAgICAgICBzZWxmLl9mbGFnID0gRmFsc2UKIApAQCAtNDM2LDEzICszNDQsMTMgQEAKICMgc2luY2UgdGhlIHByZXZpb3VzIGN5Y2xlLiAgSW4gYWRkaXRpb24sIGEgJ3Jlc2V0dGluZycgc3RhdGUgZXhpc3RzIHdoaWNoIGlzCiAjIHNpbWlsYXIgdG8gJ2RyYWluaW5nJyBleGNlcHQgdGhhdCB0aHJlYWRzIGxlYXZlIHdpdGggYSBCcm9rZW5CYXJyaWVyRXJyb3IsCiAjIGFuZCBhICdicm9rZW4nIHN0YXRlIGluIHdoaWNoIGFsbCB0aHJlYWRzIGdldCB0aGUgZXhjZXB0aW9uLgotY2xhc3MgQmFycmllcihfVmVyYm9zZSk6CitjbGFzcyBCYXJyaWVyOgogICAgICIiIgogICAgIEJhcnJpZXIuICBVc2VmdWwgZm9yIHN5bmNocm9uaXppbmcgYSBmaXhlZCBudW1iZXIgb2YgdGhyZWFkcwogICAgIGF0IGtub3duIHN5bmNocm9uaXphdGlvbiBwb2ludHMuICBUaHJlYWRzIGJsb2NrIG9uICd3YWl0KCknIGFuZCBhcmUKICAgICBzaW11bHRhbmVvdXNseSBvbmNlIHRoZXkgaGF2ZSBhbGwgbWFkZSB0aGF0IGNhbGwuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUsIHZlcmJvc2U9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIGEgYmFycmllciwgaW5pdGlhbGlzZWQgdG8gJ3BhcnRpZXMnIHRocmVhZHMuCiAgICAgICAgICdhY3Rpb24nIGlzIGEgY2FsbGFibGUgd2hpY2gsIHdoZW4gc3VwcGxpZWQsIHdpbGwgYmUgY2FsbGVkCkBAIC00NTEsNyArMzU5LDYgQEAKICAgICAgICAgSWYgYSAndGltZW91dCcgaXMgcHJvdmlkZWQsIGl0IGlzIHVzZXMgYXMgdGhlIGRlZmF1bHQgZm9yCiAgICAgICAgIGFsbCBzdWJzZXF1ZW50ICd3YWl0KCknIGNhbGxzLgogICAgICAgICAiIiIKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKICAgICAgICAgc2VsZi5fY29uZCA9IENvbmRpdGlvbihMb2NrKCkpCiAgICAgICAgIHNlbGYuX2FjdGlvbiA9IGFjdGlvbgogICAgICAgICBzZWxmLl90aW1lb3V0ID0gdGltZW91dApAQCAtNjEyLDcgKzUxOSw3IEBACiAKICMgTWFpbiBjbGFzcyBmb3IgdGhyZWFkcwogCi1jbGFzcyBUaHJlYWQoX1ZlcmJvc2UpOgorY2xhc3MgVGhyZWFkOgogCiAgICAgX19pbml0aWFsaXplZCA9IEZhbHNlCiAgICAgIyBOZWVkIHRvIHN0b3JlIGEgcmVmZXJlbmNlIHRvIHN5cy5leGNfaW5mbyBmb3IgcHJpbnRpbmcKQEAgLTYyNSwxNiArNTMyLDE4IEBACiAgICAgI1hYWCBfX2V4Y19jbGVhciA9IF9zeXMuZXhjX2NsZWFyCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgYXJncz0oKSwga3dhcmdzPU5vbmUsIHZlcmJvc2U9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGFyZ3M9KCksIGt3YXJncz1Ob25lLCAqLCBkYWVtb249Tm9uZSk6CiAgICAgICAgIGFzc2VydCBncm91cCBpcyBOb25lLCAiZ3JvdXAgYXJndW1lbnQgbXVzdCBiZSBOb25lIGZvciBub3ciCi0gICAgICAgIF9WZXJib3NlLl9faW5pdF9fKHNlbGYsIHZlcmJvc2UpCiAgICAgICAgIGlmIGt3YXJncyBpcyBOb25lOgogICAgICAgICAgICAga3dhcmdzID0ge30KICAgICAgICAgc2VsZi5fdGFyZ2V0ID0gdGFyZ2V0CiAgICAgICAgIHNlbGYuX25hbWUgPSBzdHIobmFtZSBvciBfbmV3bmFtZSgpKQogICAgICAgICBzZWxmLl9hcmdzID0gYXJncwogICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3MKLSAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBzZWxmLl9zZXRfZGFlbW9uKCkKKyAgICAgICAgaWYgZGFlbW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBkYWVtb24KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2RhZW1vbmljID0gY3VycmVudF90aHJlYWQoKS5kYWVtb24KICAgICAgICAgc2VsZi5faWRlbnQgPSBOb25lCiAgICAgICAgIHNlbGYuX3N0YXJ0ZWQgPSBFdmVudCgpCiAgICAgICAgIHNlbGYuX3N0b3BwZWQgPSBGYWxzZQpAQCAtNjUyLDEwICs1NjEsNiBAQAogICAgICAgICAgICAgc2VsZi5fYmxvY2suX19pbml0X18oKQogICAgICAgICBzZWxmLl9zdGFydGVkLl9yZXNldF9pbnRlcm5hbF9sb2NrcygpCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgICMgT3ZlcnJpZGRlbiBpbiBfTWFpblRocmVhZCBhbmQgX0R1bW15VGhyZWFkCi0gICAgICAgIHJldHVybiBjdXJyZW50X3RocmVhZCgpLmRhZW1vbgotCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBhc3NlcnQgc2VsZi5faW5pdGlhbGl6ZWQsICJUaHJlYWQuX19pbml0X18oKSB3YXMgbm90IGNhbGxlZCIKICAgICAgICAgc3RhdHVzID0gImluaXRpYWwiCkBAIC02NzUsOCArNTgwLDYgQEAKIAogICAgICAgICBpZiBzZWxmLl9zdGFydGVkLmlzX3NldCgpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ0aHJlYWRzIGNhbiBvbmx5IGJlIHN0YXJ0ZWQgb25jZSIpCi0gICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLnN0YXJ0KCk6IHN0YXJ0aW5nIHRocmVhZCIsIHNlbGYpCiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2xpbWJvW3NlbGZdID0gc2VsZgogICAgICAgICB0cnk6CkBAIC03MTcsNyArNjIwLDcgQEAKICAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgX3NldF9pZGVudChzZWxmKToKLSAgICAgICAgc2VsZi5faWRlbnQgPSBfZ2V0X2lkZW50KCkKKyAgICAgICAgc2VsZi5faWRlbnQgPSBnZXRfaWRlbnQoKQogCiAgICAgZGVmIF9ib290c3RyYXBfaW5uZXIoc2VsZik6CiAgICAgICAgIHRyeToKQEAgLTcyNiwyNCArNjI5LDE3IEBACiAgICAgICAgICAgICB3aXRoIF9hY3RpdmVfbGltYm9fbG9jazoKICAgICAgICAgICAgICAgICBfYWN0aXZlW3NlbGYuX2lkZW50XSA9IHNlbGYKICAgICAgICAgICAgICAgICBkZWwgX2xpbWJvW3NlbGZdCi0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiB0aHJlYWQgc3RhcnRlZCIsIHNlbGYpCiAKICAgICAgICAgICAgIGlmIF90cmFjZV9ob29rOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9ib290c3RyYXAoKTogcmVnaXN0ZXJpbmcgdHJhY2UgaG9vayIsIHNlbGYpCiAgICAgICAgICAgICAgICAgX3N5cy5zZXR0cmFjZShfdHJhY2VfaG9vaykKICAgICAgICAgICAgIGlmIF9wcm9maWxlX2hvb2s6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiByZWdpc3RlcmluZyBwcm9maWxlIGhvb2siLCBzZWxmKQogICAgICAgICAgICAgICAgIF9zeXMuc2V0cHJvZmlsZShfcHJvZmlsZV9ob29rKQogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5ydW4oKQogICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IHJhaXNlZCBTeXN0ZW1FeGl0Iiwgc2VsZikKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IHVuaGFuZGxlZCBleGNlcHRpb24iLCBzZWxmKQogICAgICAgICAgICAgICAgICMgSWYgc3lzLnN0ZGVyciBpcyBubyBtb3JlIChtb3N0IGxpa2VseSBmcm9tIGludGVycHJldGVyCiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93bikgdXNlIHNlbGYuX3N0ZGVyci4gIE90aGVyd2lzZSBzdGlsbCB1c2Ugc3lzIChhcyBpbgogICAgICAgICAgICAgICAgICMgX3N5cykgaW4gY2FzZSBzeXMuc3RkZXJyIHdhcyByZWRlZmluZWQgc2luY2UgdGhlIGNyZWF0aW9uIG9mCkBAIC03NzQsOSArNjcwLDYgQEAKICAgICAgICAgICAgICAgICAgICAgIyBob2c7IGRlbGV0aW5nIGV2ZXJ5dGhpbmcgZWxzZSBpcyBqdXN0IGZvciB0aG9yb3VnaG5lc3MKICAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IG5vcm1hbCByZXR1cm4iLCBzZWxmKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAjIFByZXZlbnQgYSByYWNlIGluCiAgICAgICAgICAgICAgICAgIyB0ZXN0X3RocmVhZGluZy50ZXN0X25vX3JlZmN5Y2xlX3Rocm91Z2hfdGFyZ2V0IHdoZW4KQEAgLTc5MCw3ICs2ODMsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgIyBXZSBkb24ndCBjYWxsIHNlbGYuX2RlbGV0ZSgpIGJlY2F1c2UgaXQgYWxzbwogICAgICAgICAgICAgICAgICAgICAjIGdyYWJzIF9hY3RpdmVfbGltYm9fbG9jay4KLSAgICAgICAgICAgICAgICAgICAgZGVsIF9hY3RpdmVbX2dldF9pZGVudCgpXQorICAgICAgICAgICAgICAgICAgICBkZWwgX2FjdGl2ZVtnZXRfaWRlbnQoKV0KICAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKIApAQCAtODI2LDcgKzcxOSw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBfYWN0aXZlX2xpbWJvX2xvY2s6Ci0gICAgICAgICAgICAgICAgZGVsIF9hY3RpdmVbX2dldF9pZGVudCgpXQorICAgICAgICAgICAgICAgIGRlbCBfYWN0aXZlW2dldF9pZGVudCgpXQogICAgICAgICAgICAgICAgICMgVGhlcmUgbXVzdCBub3QgYmUgYW55IHB5dGhvbiBjb2RlIGJldHdlZW4gdGhlIHByZXZpb3VzIGxpbmUKICAgICAgICAgICAgICAgICAjIGFuZCBhZnRlciB0aGUgbG9jayBpcyByZWxlYXNlZC4gIE90aGVyd2lzZSBhIHRyYWNpbmcgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAjIGNvdWxkIHRyeSB0byBhY3F1aXJlIHRoZSBsb2NrIGFnYWluIGluIHRoZSBzYW1lIHRocmVhZCwgKGluCkBAIC04NDMsMjkgKzczNiwxOCBAQAogICAgICAgICBpZiBzZWxmIGlzIGN1cnJlbnRfdGhyZWFkKCk6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCBqb2luIGN1cnJlbnQgdGhyZWFkIikKIAotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fc3RvcHBlZDoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5qb2luKCk6IHdhaXRpbmcgdW50aWwgdGhyZWFkIHN0b3BzIiwgc2VsZikKLQogICAgICAgICBzZWxmLl9ibG9jay5hY3F1aXJlKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wcGVkOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9ibG9jay53YWl0KCkKLSAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmpvaW4oKTogdGhyZWFkIHN0b3BwZWQiLCBzZWxmKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkZWFkbGluZSA9IF90aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0b3BwZWQ6CiAgICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gZGVhZGxpbmUgLSBfdGltZSgpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRlbGF5IDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuam9pbigpOiB0aW1lZCBvdXQiLCBzZWxmKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYmxvY2sud2FpdChkZWxheSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5qb2luKCk6IHRocmVhZCBzdG9wcGVkIiwgc2VsZikKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLnJlbGVhc2UoKQogCkBAIC05MTcsMTAgKzc5OSw3IEBACiAKICMgVGhlIHRpbWVyIGNsYXNzIHdhcyBjb250cmlidXRlZCBieSBJdGFtYXIgU2h0dWxsLVRyYXVyaW5nCiAKLWRlZiBUaW1lcigqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfVGltZXIoKmFyZ3MsICoqa3dhcmdzKQotCi1jbGFzcyBfVGltZXIoVGhyZWFkKToKK2NsYXNzIFRpbWVyKFRocmVhZCk6CiAgICAgIiIiQ2FsbCBhIGZ1bmN0aW9uIGFmdGVyIGEgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzOgogCiAgICAgdCA9IFRpbWVyKDMwLjAsIGYsIGFyZ3M9W10sIGt3YXJncz17fSkKQEAgLTk1MiwyNiArODMxLDE4IEBACiBjbGFzcyBfTWFpblRocmVhZChUaHJlYWQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT0iTWFpblRocmVhZCIpCisgICAgICAgIFRocmVhZC5fX2luaXRfXyhzZWxmLCBuYW1lPSJNYWluVGhyZWFkIiwgZGFlbW9uPUZhbHNlKQogICAgICAgICBzZWxmLl9zdGFydGVkLnNldCgpCiAgICAgICAgIHNlbGYuX3NldF9pZGVudCgpCiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2FjdGl2ZVtzZWxmLl9pZGVudF0gPSBzZWxmCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCiAgICAgZGVmIF9leGl0ZnVuYyhzZWxmKToKICAgICAgICAgc2VsZi5fc3RvcCgpCiAgICAgICAgIHQgPSBfcGlja1NvbWVOb25EYWVtb25UaHJlYWQoKQotICAgICAgICBpZiB0OgotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzOiB3YWl0aW5nIGZvciBvdGhlciB0aHJlYWRzIiwgc2VsZikKICAgICAgICAgd2hpbGUgdDoKICAgICAgICAgICAgIHQuam9pbigpCiAgICAgICAgICAgICB0ID0gX3BpY2tTb21lTm9uRGFlbW9uVGhyZWFkKCkKLSAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXM6IGV4aXRpbmciLCBzZWxmKQogICAgICAgICBzZWxmLl9kZWxldGUoKQogCiBkZWYgX3BpY2tTb21lTm9uRGFlbW9uVGhyZWFkKCk6CkBAIC05OTIsNyArODYzLDcgQEAKIGNsYXNzIF9EdW1teVRocmVhZChUaHJlYWQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT1fbmV3bmFtZSgiRHVtbXktJWQiKSkKKyAgICAgICAgVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9X25ld25hbWUoIkR1bW15LSVkIiksIGRhZW1vbj1UcnVlKQogCiAgICAgICAgICMgVGhyZWFkLl9ibG9jayBjb25zdW1lcyBhbiBPUy1sZXZlbCBsb2NraW5nIHByaW1pdGl2ZSwgd2hpY2gKICAgICAgICAgIyBjYW4gbmV2ZXIgYmUgdXNlZCBieSBhIF9EdW1teVRocmVhZC4gIFNpbmNlIGEgX0R1bW15VGhyZWFkCkBAIC0xMDA0LDkgKzg3NSw2IEBACiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2FjdGl2ZVtzZWxmLl9pZGVudF0gPSBzZWxmCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KICAgICBkZWYgX3N0b3Aoc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMTAxOCw5ICs4ODYsOCBAQAogCiBkZWYgY3VycmVudF90aHJlYWQoKToKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfYWN0aXZlW19nZXRfaWRlbnQoKV0KKyAgICAgICAgcmV0dXJuIF9hY3RpdmVbZ2V0X2lkZW50KCldCiAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAjI3ByaW50ICJjdXJyZW50X3RocmVhZCgpOiBubyBjdXJyZW50IHRocmVhZCBmb3IiLCBfZ2V0X2lkZW50KCkKICAgICAgICAgcmV0dXJuIF9EdW1teVRocmVhZCgpCiAKIGN1cnJlbnRUaHJlYWQgPSBjdXJyZW50X3RocmVhZApAQCAtMTA3Nyw3ICs5NDQsNyBAQAogICAgICAgICAgICAgaWYgdGhyZWFkIGlzIGN1cnJlbnQ6CiAgICAgICAgICAgICAgICAgIyBUaGVyZSBpcyBvbmx5IG9uZSBhY3RpdmUgdGhyZWFkLiBXZSByZXNldCB0aGUgaWRlbnQgdG8KICAgICAgICAgICAgICAgICAjIGl0cyBuZXcgdmFsdWUgc2luY2UgaXQgY2FuIGhhdmUgY2hhbmdlZC4KLSAgICAgICAgICAgICAgICBpZGVudCA9IF9nZXRfaWRlbnQoKQorICAgICAgICAgICAgICAgIGlkZW50ID0gZ2V0X2lkZW50KCkKICAgICAgICAgICAgICAgICB0aHJlYWQuX2lkZW50ID0gaWRlbnQKICAgICAgICAgICAgICAgICBuZXdfYWN0aXZlW2lkZW50XSA9IHRocmVhZAogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi90aW1laXQucHkgYi9MaWIvdGltZWl0LnB5CmluZGV4IDFhZTU5ZTAuLjRmN2QyOGYgMTAwNjQ0Ci0tLSBhL0xpYi90aW1laXQucHkKKysrIGIvTGliL3RpbWVpdC5weQpAQCAtOSwxNCArOSwxNSBAQAogTGlicmFyeSB1c2FnZTogc2VlIHRoZSBUaW1lciBjbGFzcy4KIAogQ29tbWFuZCBsaW5lIHVzYWdlOgotICAgIHB5dGhvbiB0aW1laXQucHkgWy1uIE5dIFstciBOXSBbLXMgU10gWy10XSBbLWNdIFstaF0gWy0tXSBbc3RhdGVtZW50XQorICAgIHB5dGhvbiB0aW1laXQucHkgWy1uIE5dIFstciBOXSBbLXMgU10gWy10XSBbLWNdIFstcF0gWy1oXSBbLS1dIFtzdGF0ZW1lbnRdCiAKIE9wdGlvbnM6CiAgIC1uLy0tbnVtYmVyIE46IGhvdyBtYW55IHRpbWVzIHRvIGV4ZWN1dGUgJ3N0YXRlbWVudCcgKGRlZmF1bHQ6IHNlZSBiZWxvdykKICAgLXIvLS1yZXBlYXQgTjogaG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSB0aW1lciAoZGVmYXVsdCAzKQogICAtcy8tLXNldHVwIFM6IHN0YXRlbWVudCB0byBiZSBleGVjdXRlZCBvbmNlIGluaXRpYWxseSAoZGVmYXVsdCAncGFzcycpCi0gIC10Ly0tdGltZTogdXNlIHRpbWUudGltZSgpIChkZWZhdWx0IG9uIFVuaXgpCi0gIC1jLy0tY2xvY2s6IHVzZSB0aW1lLmNsb2NrKCkgKGRlZmF1bHQgb24gV2luZG93cykKKyAgLXAvLS1wcm9jZXNzOiB1c2UgdGltZS5wcm9jZXNzX3RpbWUoKSAoZGVmYXVsdCBpcyB0aW1lLnBlcmZfY291bnRlcigpKQorICAtdC8tLXRpbWU6IHVzZSB0aW1lLnRpbWUoKSAoZGVwcmVjYXRlZCkKKyAgLWMvLS1jbG9jazogdXNlIHRpbWUuY2xvY2soKSAoZGVwcmVjYXRlZCkKICAgLXYvLS12ZXJib3NlOiBwcmludCByYXcgdGltaW5nIHJlc3VsdHM7IHJlcGVhdCBmb3IgbW9yZSBkaWdpdHMgcHJlY2lzaW9uCiAgIC1oLy0taGVscDogcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlIGFuZCBleGl0CiAgIC0tOiBzZXBhcmF0ZSBvcHRpb25zIGZyb20gc3RhdGVtZW50LCB1c2Ugd2hlbiBzdGF0ZW1lbnQgc3RhcnRzIHdpdGggLQpAQCAtNjYsMjMgKzY3LDE3IEBACiBkdW1teV9zcmNfbmFtZSA9ICI8dGltZWl0LXNyYz4iCiBkZWZhdWx0X251bWJlciA9IDEwMDAwMDAKIGRlZmF1bHRfcmVwZWF0ID0gMwotCi1pZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKLSAgICAjIE9uIFdpbmRvd3MsIHRoZSBiZXN0IHRpbWVyIGlzIHRpbWUuY2xvY2soKQotICAgIGRlZmF1bHRfdGltZXIgPSB0aW1lLmNsb2NrCi1lbHNlOgotICAgICMgT24gbW9zdCBvdGhlciBwbGF0Zm9ybXMgdGhlIGJlc3QgdGltZXIgaXMgdGltZS50aW1lKCkKLSAgICBkZWZhdWx0X3RpbWVyID0gdGltZS50aW1lCitkZWZhdWx0X3RpbWVyID0gdGltZS5wZXJmX2NvdW50ZXIKIAogIyBEb24ndCBjaGFuZ2UgdGhlIGluZGVudGF0aW9uIG9mIHRoZSB0ZW1wbGF0ZTsgdGhlIHJlaW5kZW50KCkgY2FsbHMKICMgaW4gVGltZXIuX19pbml0X18oKSBkZXBlbmQgb24gc2V0dXAgYmVpbmcgaW5kZW50ZWQgNCBzcGFjZXMgYW5kIHN0bXQKICMgYmVpbmcgaW5kZW50ZWQgOCBzcGFjZXMuCiB0ZW1wbGF0ZSA9ICIiIgogZGVmIGlubmVyKF9pdCwgX3RpbWVyKToKLSAgICAlKHNldHVwKXMKKyAgICB7c2V0dXB9CiAgICAgX3QwID0gX3RpbWVyKCkKICAgICBmb3IgX2kgaW4gX2l0OgotICAgICAgICAlKHN0bXQpcworICAgICAgICB7c3RtdH0KICAgICBfdDEgPSBfdGltZXIoKQogICAgIHJldHVybiBfdDEgLSBfdDAKICIiIgpAQCAtMTI2LDkgKzEyMSw5IEBACiAgICAgICAgICAgICBzdG10ID0gcmVpbmRlbnQoc3RtdCwgOCkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0dXAsIHN0cik6CiAgICAgICAgICAgICAgICAgc2V0dXAgPSByZWluZGVudChzZXR1cCwgNCkKLSAgICAgICAgICAgICAgICBzcmMgPSB0ZW1wbGF0ZSAlIHsnc3RtdCc6IHN0bXQsICdzZXR1cCc6IHNldHVwfQorICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlLmZvcm1hdChzdG10PXN0bXQsIHNldHVwPXNldHVwKQogICAgICAgICAgICAgZWxpZiBjYWxsYWJsZShzZXR1cCk6Ci0gICAgICAgICAgICAgICAgc3JjID0gdGVtcGxhdGUgJSB7J3N0bXQnOiBzdG10LCAnc2V0dXAnOiAnX3NldHVwKCknfQorICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlLmZvcm1hdChzdG10PXN0bXQsIHNldHVwPSdfc2V0dXAoKScpCiAgICAgICAgICAgICAgICAgbnNbJ19zZXR1cCddID0gc2V0dXAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2V0dXAgaXMgbmVpdGhlciBhIHN0cmluZyBub3IgY2FsbGFibGUiKQpAQCAtMjU1LDkgKzI1MCwxMCBAQAogICAgICAgICBhcmdzID0gc3lzLmFyZ3ZbMTpdCiAgICAgaW1wb3J0IGdldG9wdAogICAgIHRyeToKLSAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJncywgIm46czpyOnRjdmgiLAorICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmdzLCAibjpzOnI6dGNwdmgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm51bWJlcj0iLCAic2V0dXA9IiwgInJlcGVhdD0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUiLCAiY2xvY2siLCAidmVyYm9zZSIsICJoZWxwIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZSIsICJjbG9jayIsICJwcm9jZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJib3NlIiwgImhlbHAiXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIGVycjoKICAgICAgICAgcHJpbnQoZXJyKQogICAgICAgICBwcmludCgidXNlIC1oLy0taGVscCBmb3IgY29tbWFuZCBsaW5lIGhlbHAiKQpAQCAtMjgyLDYgKzI3OCw4IEBACiAgICAgICAgICAgICB0aW1lciA9IHRpbWUudGltZQogICAgICAgICBpZiBvIGluICgiLWMiLCAiLS1jbG9jayIpOgogICAgICAgICAgICAgdGltZXIgPSB0aW1lLmNsb2NrCisgICAgICAgIGlmIG8gaW4gKCItcCIsICItLXByb2Nlc3MiKToKKyAgICAgICAgICAgIHRpbWVyID0gdGltZS5wcm9jZXNzX3RpbWUKICAgICAgICAgaWYgbyBpbiAoIi12IiwgIi0tdmVyYm9zZSIpOgogICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmVjaXNpb24gKz0gMQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvX19pbml0X18ucHkgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQppbmRleCBkZTg1YmY5Li44MDYzZGQ2IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9fX2luaXRfXy5weQorKysgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQpAQCAtMzAsMTYgKzMwLDE4IEBACiB0ay5tYWlubG9vcCgpCiAiIiIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogaW1wb3J0IHN5cwogaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CiAgICAgIyBBdHRlbXB0IHRvIGNvbmZpZ3VyZSBUY2wvVGsgd2l0aG91dCByZXF1aXJpbmcgUEFUSAogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgX2ZpeAorCitpbXBvcnQgd2FybmluZ3MKKwogaW1wb3J0IF90a2ludGVyICMgSWYgdGhpcyBmYWlscyB5b3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrCiBUY2xFcnJvciA9IF90a2ludGVyLlRjbEVycm9yCiBmcm9tIHRraW50ZXIuY29uc3RhbnRzIGltcG9ydCAqCiAKKwogd2FudG9iamVjdHMgPSAxCiAKIFRrVmVyc2lvbiA9IGZsb2F0KF90a2ludGVyLlRLX1ZFUlNJT04pCkBAIC0xNTcsNiArMTU5LDcgQEAKICAgICBTdWJjbGFzc2VzIFN0cmluZ1ZhciwgSW50VmFyLCBEb3VibGVWYXIsIEJvb2xlYW5WYXIgYXJlIHNwZWNpYWxpemF0aW9ucwogICAgIHRoYXQgY29uc3RyYWluIHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGdldCgpLiIiIgogICAgIF9kZWZhdWx0ID0gIiIKKyAgICBfdGsgPSBOb25lCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lLCB2YWx1ZT1Ob25lLCBuYW1lPU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3QgYSB2YXJpYWJsZQogCkBAIC0xNjcsNiArMTcwLDExIEBACiAgICAgICAgIElmIE5BTUUgbWF0Y2hlcyBhbiBleGlzdGluZyB2YXJpYWJsZSBhbmQgVkFMVUUgaXMgb21pdHRlZAogICAgICAgICB0aGVuIHRoZSBleGlzdGluZyB2YWx1ZSBpcyByZXRhaW5lZC4KICAgICAgICAgIiIiCisgICAgICAgICMgY2hlY2sgZm9yIHR5cGUgb2YgTkFNRSBwYXJhbWV0ZXIgdG8gb3ZlcnJpZGUgd2VpcmQgZXJyb3IgbWVzc2FnZQorICAgICAgICAjIHJhaXNlZCBmcm9tIE1vZHVsZXMvX3RraW50ZXIuYzpTZXRWYXIgbGlrZToKKyAgICAgICAgIyBUeXBlRXJyb3I6IHNldHZhcigpIHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMgKDIgZ2l2ZW4pCisgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5hbWUgbXVzdCBiZSBhIHN0cmluZyIpCiAgICAgICAgIGdsb2JhbCBfdmFybnVtCiAgICAgICAgIGlmIG5vdCBtYXN0ZXI6CiAgICAgICAgICAgICBtYXN0ZXIgPSBfZGVmYXVsdF9yb290CkBAIC0xNzgsMTggKzE4NiwyMSBAQAogICAgICAgICAgICAgc2VsZi5fbmFtZSA9ICdQWV9WQVInICsgcmVwcihfdmFybnVtKQogICAgICAgICAgICAgX3Zhcm51bSArPSAxCiAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5zZXQodmFsdWUpCisgICAgICAgICAgICBzZWxmLmluaXRpYWxpemUodmFsdWUpCiAgICAgICAgIGVsaWYgbm90IHNlbGYuX3RrLmNhbGwoImluZm8iLCAiZXhpc3RzIiwgc2VsZi5fbmFtZSk6Ci0gICAgICAgICAgICBzZWxmLnNldChzZWxmLl9kZWZhdWx0KQorICAgICAgICAgICAgc2VsZi5pbml0aWFsaXplKHNlbGYuX2RlZmF1bHQpCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICIiIlVuc2V0IHRoZSB2YXJpYWJsZSBpbiBUY2wuIiIiCi0gICAgICAgIHNlbGYuX3RrLmdsb2JhbHVuc2V0dmFyKHNlbGYuX25hbWUpCisgICAgICAgIGlmIChzZWxmLl90ayBpcyBub3QgTm9uZSBhbmQgc2VsZi5fdGsuY2FsbCgiaW5mbyIsICJleGlzdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSkpOgorICAgICAgICAgICAgc2VsZi5fdGsuZ2xvYmFsdW5zZXR2YXIoc2VsZi5fbmFtZSkKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBpbiBUY2wuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCiAgICAgZGVmIHNldChzZWxmLCB2YWx1ZSk6CiAgICAgICAgICIiIlNldCB0aGUgdmFyaWFibGUgdG8gVkFMVUUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl90ay5nbG9iYWxzZXR2YXIoc2VsZi5fbmFtZSwgdmFsdWUpCisgICAgaW5pdGlhbGl6ZSA9IHNldAogICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB2YWx1ZSBvZiB2YXJpYWJsZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKQpAQCAtMjY0LDEyICsyNzUsNiBAQAogICAgICAgICAiIiIKICAgICAgICAgVmFyaWFibGUuX19pbml0X18oc2VsZiwgbWFzdGVyLCB2YWx1ZSwgbmFtZSkKIAotICAgIGRlZiBzZXQoc2VsZiwgdmFsdWUpOgotICAgICAgICAiIiJTZXQgdGhlIHZhcmlhYmxlIHRvIHZhbHVlLCBjb252ZXJ0aW5nIGJvb2xlYW5zIHRvIGludGVnZXJzLiIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBib29sKToKLSAgICAgICAgICAgIHZhbHVlID0gaW50KHZhbHVlKQotICAgICAgICByZXR1cm4gVmFyaWFibGUuc2V0KHNlbGYsIHZhbHVlKQotCiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgYXMgYW4gaW50ZWdlci4iIiIKICAgICAgICAgcmV0dXJuIGdldGludChzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCkBAIC0zMTAsNyArMzE1LDEwIEBACiAKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBhcyBhIGJvb2wuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl90ay5nZXRib29sZWFuKHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdldGJvb2xlYW4oc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpKQorICAgICAgICBleGNlcHQgVGNsRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGxpdGVyYWwgZm9yIGdldGJvb2xlYW4oKSIpCiAKIGRlZiBtYWlubG9vcChuPTApOgogICAgICIiIlJ1biB0aGUgbWFpbiBsb29wIG9mIFRjbC4iIiIKQEAgLTMyMiw3ICszMzAsMTAgQEAKIAogZGVmIGdldGJvb2xlYW4ocyk6CiAgICAgIiIiQ29udmVydCB0cnVlIGFuZCBmYWxzZSB0byBpbnRlZ2VyIHZhbHVlcyAxIGFuZCAwLiIiIgotICAgIHJldHVybiBfZGVmYXVsdF9yb290LnRrLmdldGJvb2xlYW4ocykKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBfZGVmYXVsdF9yb290LnRrLmdldGJvb2xlYW4ocykKKyAgICBleGNlcHQgVGNsRXJyb3I6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbGl0ZXJhbCBmb3IgZ2V0Ym9vbGVhbigpIikKIAogIyBNZXRob2RzIGRlZmluZWQgb24gYm90aCB0b3BsZXZlbCBhbmQgaW50ZXJpb3Igd2lkZ2V0cwogY2xhc3MgTWlzYzoKQEAgLTQxMiw3ICs0MjMsMTAgQEAKICAgICBnZXRkb3VibGUgPSBmbG9hdAogICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIHMpOgogICAgICAgICAiIiJSZXR1cm4gYSBib29sZWFuIHZhbHVlIGZvciBUY2wgYm9vbGVhbiB2YWx1ZXMgdHJ1ZSBhbmQgZmFsc2UgZ2l2ZW4gYXMgcGFyYW1ldGVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRib29sZWFuKHMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGJvb2xlYW4ocykKKyAgICAgICAgZXhjZXB0IFRjbEVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBsaXRlcmFsIGZvciBnZXRib29sZWFuKCkiKQogICAgIGRlZiBmb2N1c19zZXQoc2VsZik6CiAgICAgICAgICIiIkRpcmVjdCBpbnB1dCBmb2N1cyB0byB0aGlzIHdpZGdldC4KIApAQCAtMTE4NSw3ICsxMTk5LDYgQEAKICAgICAgICAgcmV0dXJuIChlLCkKICAgICBkZWYgX3JlcG9ydF9leGNlcHRpb24oc2VsZik6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiIiIgotICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgIGV4YywgdmFsLCB0YiA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgIHJvb3QgPSBzZWxmLl9yb290KCkKICAgICAgICAgcm9vdC5yZXBvcnRfY2FsbGJhY2tfZXhjZXB0aW9uKGV4YywgdmFsLCB0YikKQEAgLTEyNjAsNiArMTI3MywxMyBAQAogICAgICAgICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYWNlJywgJ3NsYXZlcycsIHNlbGYuX3cpKV0KICAgICAjIEdyaWQgbWV0aG9kcyB0aGF0IGFwcGx5IHRvIHRoZSBtYXN0ZXIKKyAgICBkZWYgZ3JpZF9hbmNob3Ioc2VsZiwgYW5jaG9yPU5vbmUpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiVGhlIGFuY2hvciB2YWx1ZSBjb250cm9scyBob3cgdG8gcGxhY2UgdGhlIGdyaWQgd2l0aGluIHRoZQorICAgICAgICBtYXN0ZXIgd2hlbiBubyByb3cvY29sdW1uIGhhcyBhbnkgd2VpZ2h0LgorCisgICAgICAgIFRoZSBkZWZhdWx0IGFuY2hvciBpcyBudy4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKCdncmlkJywgJ2FuY2hvcicsIHNlbGYuX3csIGFuY2hvcikKKyAgICBhbmNob3IgPSBncmlkX2FuY2hvcgogICAgIGRlZiBncmlkX2Jib3goc2VsZiwgY29sdW1uPU5vbmUsIHJvdz1Ob25lLCBjb2wyPU5vbmUsIHJvdzI9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiBhIHR1cGxlIG9mIGludGVnZXIgY29vcmRpbmF0ZXMgZm9yIHRoZSBib3VuZGluZwogICAgICAgICBib3ggb2YgdGhpcyB3aWRnZXQgY29udHJvbGxlZCBieSB0aGUgZ2VvbWV0cnkgbWFuYWdlciBncmlkLgpAQCAtMTI3OCw3ICsxMjk4LDYgQEAKICAgICAgICAgaWYgY29sMiBpcyBub3QgTm9uZSBhbmQgcm93MiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFyZ3MgPSBhcmdzICsgKGNvbDIsIHJvdzIpCiAgICAgICAgIHJldHVybiBzZWxmLl9nZXRpbnRzKHNlbGYudGsuY2FsbCgqYXJncykpIG9yIE5vbmUKLQogICAgIGJib3ggPSBncmlkX2Jib3gKICAgICBkZWYgX2dyaWRfY29uZmlndXJlKHNlbGYsIGNvbW1hbmQsIGluZGV4LCBjbmYsIGt3KToKICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24uIiIiCkBAIC0xNTM3LDYgKzE1NTYsMTQgQEAKICAgICAgICAgdGhlIGZvY3VzLiBSZXR1cm4gY3VycmVudCBmb2N1cyBtb2RlbCBpZiBNT0RFTCBpcyBOb25lLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdmb2N1c21vZGVsJywgc2VsZi5fdywgbW9kZWwpCiAgICAgZm9jdXNtb2RlbCA9IHdtX2ZvY3VzbW9kZWwKKyAgICBkZWYgd21fZm9yZ2V0KHNlbGYsIHdpbmRvdyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJUaGUgd2luZG93IHdpbGwgYmUgdW5tYXBwZW5kIGZyb20gdGhlIHNjcmVlbiBhbmQgd2lsbCBubyBsb25nZXIKKyAgICAgICAgYmUgbWFuYWdlZCBieSB3bS4gdG9wbGV2ZWwgd2luZG93cyB3aWxsIGJlIHRyZWF0ZWQgbGlrZSBmcmFtZQorICAgICAgICB3aW5kb3dzIG9uY2UgdGhleSBhcmUgbm8gbG9uZ2VyIG1hbmFnZWQgYnkgd20sIGhvd2V2ZXIsIHRoZSBtZW51CisgICAgICAgIG9wdGlvbiBjb25maWd1cmF0aW9uIHdpbGwgYmUgcmVtZW1iZXJlZCBhbmQgdGhlIG1lbnVzIHdpbGwgcmV0dXJuCisgICAgICAgIG9uY2UgdGhlIHdpZGdldCBpcyBtYW5hZ2VkIGFnYWluLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ZvcmdldCcsIHdpbmRvdykKKyAgICBmb3JnZXQgPSB3bV9mb3JnZXQKICAgICBkZWYgd21fZnJhbWUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBpZGVudGlmaWVyIGZvciBkZWNvcmF0aXZlIGZyYW1lIG9mIHRoaXMgd2lkZ2V0IGlmIHByZXNlbnQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ZyYW1lJywgc2VsZi5fdykKQEAgLTE1OTAsNiArMTYxNywzMSBAQAogICAgICAgICBOb25lIGlzIGdpdmVuLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdpY29ubmFtZScsIHNlbGYuX3csIG5ld05hbWUpCiAgICAgaWNvbm5hbWUgPSB3bV9pY29ubmFtZQorICAgIGRlZiB3bV9pY29ucGhvdG8oc2VsZiwgZGVmYXVsdD1GYWxzZSwgKmFyZ3MpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiU2V0cyB0aGUgdGl0bGViYXIgaWNvbiBmb3IgdGhpcyB3aW5kb3cgYmFzZWQgb24gdGhlIG5hbWVkIHBob3RvCisgICAgICAgIGltYWdlcyBwYXNzZWQgdGhyb3VnaCBhcmdzLiBJZiBkZWZhdWx0IGlzIFRydWUsIHRoaXMgaXMgYXBwbGllZCB0bworICAgICAgICBhbGwgZnV0dXJlIGNyZWF0ZWQgdG9wbGV2ZWxzIGFzIHdlbGwuCisKKyAgICAgICAgVGhlIGRhdGEgaW4gdGhlIGltYWdlcyBpcyB0YWtlbiBhcyBhIHNuYXBzaG90IGF0IHRoZSB0aW1lIG9mCisgICAgICAgIGludm9jYXRpb24uIElmIHRoZSBpbWFnZXMgYXJlIGxhdGVyIGNoYW5nZWQsIHRoaXMgaXMgbm90IHJlZmxlY3RlZAorICAgICAgICB0byB0aGUgdGl0bGViYXIgaWNvbnMuIE11bHRpcGxlIGltYWdlcyBhcmUgYWNjZXB0ZWQgdG8gYWxsb3cKKyAgICAgICAgZGlmZmVyZW50IGltYWdlcyBzaXplcyB0byBiZSBwcm92aWRlZC4gVGhlIHdpbmRvdyBtYW5hZ2VyIG1heSBzY2FsZQorICAgICAgICBwcm92aWRlZCBpY29ucyB0byBhbiBhcHByb3ByaWF0ZSBzaXplLgorCisgICAgICAgIE9uIFdpbmRvd3MsIHRoZSBpbWFnZXMgYXJlIHBhY2tlZCBpbnRvIGEgV2luZG93cyBpY29uIHN0cnVjdHVyZS4KKyAgICAgICAgVGhpcyB3aWxsIG92ZXJyaWRlIGFuIGljb24gc3BlY2lmaWVkIHRvIHdtX2ljb25iaXRtYXAsIGFuZCB2aWNlCisgICAgICAgIHZlcnNhLgorCisgICAgICAgIE9uIFgsIHRoZSBpbWFnZXMgYXJlIGFycmFuZ2VkIGludG8gdGhlIF9ORVRfV01fSUNPTiBYIHByb3BlcnR5LAorICAgICAgICB3aGljaCBtb3N0IG1vZGVybiB3aW5kb3cgbWFuYWdlcnMgc3VwcG9ydC4gQW4gaWNvbiBzcGVjaWZpZWQgYnkKKyAgICAgICAgd21faWNvbmJpdG1hcCBtYXkgZXhpc3Qgc2ltdXVsdGFuZW91c2x5LgorCisgICAgICAgIE9uIE1hY2ludG9zaCwgdGhpcyBjdXJyZW50bHkgZG9lcyBub3RoaW5nLiIiIgorICAgICAgICBpZiBkZWZhdWx0OgorICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3bScsICdpY29ucGhvdG8nLCBzZWxmLl93LCAiLWRlZmF1bHQiLCAqYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd20nLCAnaWNvbnBob3RvJywgc2VsZi5fdywgKmFyZ3MpCisgICAgaWNvbnBob3RvID0gd21faWNvbnBob3RvCiAgICAgZGVmIHdtX2ljb25wb3NpdGlvbihzZWxmLCB4PU5vbmUsIHk9Tm9uZSk6CiAgICAgICAgICIiIlNldCB0aGUgcG9zaXRpb24gb2YgdGhlIGljb24gb2YgdGhpcyB3aWRnZXQgdG8gWCBhbmQgWS4gUmV0dXJuCiAgICAgICAgIGEgdHVwbGUgb2YgdGhlIGN1cnJlbnQgdmFsdWVzIG9mIFggYW5kIFggaWYgTm9uZSBpcyBnaXZlbi4iIiIKQEAgLTE2MDEsNiArMTY1MywxMiBAQAogICAgICAgICB2YWx1ZSBpZiBOb25lIGlzIGdpdmVuLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdpY29ud2luZG93Jywgc2VsZi5fdywgcGF0aE5hbWUpCiAgICAgaWNvbndpbmRvdyA9IHdtX2ljb253aW5kb3cKKyAgICBkZWYgd21fbWFuYWdlKHNlbGYsIHdpZGdldCk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJUaGUgd2lkZ2V0IHNwZWNpZmllZCB3aWxsIGJlY29tZSBhIHN0YW5kIGFsb25lIHRvcC1sZXZlbCB3aW5kb3cuCisgICAgICAgIFRoZSB3aW5kb3cgd2lsbCBiZSBkZWNvcmF0ZWQgd2l0aCB0aGUgd2luZG93IG1hbmFnZXJzIHRpdGxlIGJhciwKKyAgICAgICAgZXRjLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoJ3dtJywgJ21hbmFnZScsIHdpZGdldCkKKyAgICBtYW5hZ2UgPSB3bV9tYW5hZ2UKICAgICBkZWYgd21fbWF4c2l6ZShzZWxmLCB3aWR0aD1Ob25lLCBoZWlnaHQ9Tm9uZSk6CiAgICAgICAgICIiIlNldCBtYXggV0lEVEggYW5kIEhFSUdIVCBmb3IgdGhpcyB3aWRnZXQuIElmIHRoZSB3aW5kb3cgaXMgZ3JpZGRlZAogICAgICAgICB0aGUgdmFsdWVzIGFyZSBnaXZlbiBpbiBncmlkIHVuaXRzLiBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWVzIGlmIE5vbmUKQEAgLTE2ODksNyArMTc0Nyw3IEBACiAgICAgICAgICMgZW5zdXJlIHRoYXQgc2VsZi50ayBpcyBhbHdheXMgX3NvbWV0aGluZ18uCiAgICAgICAgIHNlbGYudGsgPSBOb25lCiAgICAgICAgIGlmIGJhc2VOYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBpbXBvcnQgc3lzLCBvcworICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCiAgICAgICAgICAgICBiYXNlTmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChiYXNlTmFtZSkKICAgICAgICAgICAgIGlmIGV4dCBub3QgaW4gKCcucHknLCAnLnB5YycsICcucHlvJyk6CkBAIC0xNzYzLDcgKzE4MjEsNyBAQAogICAgICAgICAgICAgZXhlYyhvcGVuKGJhc2VfcHkpLnJlYWQoKSwgZGlyKQogICAgIGRlZiByZXBvcnRfY2FsbGJhY2tfZXhjZXB0aW9uKHNlbGYsIGV4YywgdmFsLCB0Yik6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiBJdCByZXBvcnRzIGV4Y2VwdGlvbiBvbiBzeXMuc3RkZXJyLiIiIgotICAgICAgICBpbXBvcnQgdHJhY2ViYWNrLCBzeXMKKyAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJFeGNlcHRpb24gaW4gVGtpbnRlciBjYWxsYmFja1xuIikKICAgICAgICAgc3lzLmxhc3RfdHlwZSA9IGV4YwogICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbApAQCAtMjA4OCwyNSArMjE0Niw0NSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbChzZWxmLl93LCAnaW52b2tlJykKIAorCiAjIEluZGljZXM6CiAjIFhYWCBJIGRvbid0IGxpa2UgdGhlc2UgLS0gdGFrZSB0aGVtIGF3YXkKIGRlZiBBdEVuZCgpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRFbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ2VuZCcKKworCiBkZWYgQXRJbnNlcnQoKmFyZ3MpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRJbnNlcnQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBzID0gJ2luc2VydCcKICAgICBmb3IgYSBpbiBhcmdzOgogICAgICAgICBpZiBhOiBzID0gcyArICgnICcgKyBhKQogICAgIHJldHVybiBzCisKKwogZGVmIEF0U2VsRmlyc3QoKToKKyAgICB3YXJuaW5ncy53YXJuKCJ0a2ludGVyLkF0U2VsRmlyc3Qgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ3NlbC5maXJzdCcKKworCiBkZWYgQXRTZWxMYXN0KCk6CisgICAgd2FybmluZ3Mud2FybigidGtpbnRlci5BdFNlbExhc3Qgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ3NlbC5sYXN0JworCisKIGRlZiBBdCh4LCB5PU5vbmUpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBpZiB5IGlzIE5vbmU6CiAgICAgICAgIHJldHVybiAnQCVyJyAlICh4LCkKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gJ0AlciwlcicgJSAoeCwgeSkKIAorCiBjbGFzcyBDYW52YXMoV2lkZ2V0LCBYVmlldywgWVZpZXcpOgogICAgICIiIkNhbnZhcyB3aWRnZXQgdG8gZGlzcGxheSBncmFwaGljYWwgZWxlbWVudHMgbGlrZSBsaW5lcyBvciB0ZXh0LiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgY25mPXt9LCAqKmt3KToKQEAgLTI2OTIsNiArMjc3MCwxMCBAQAogICAgIGRlZiB1bnBvc3Qoc2VsZik6CiAgICAgICAgICIiIlVubWFwIGEgbWVudS4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICd1bnBvc3QnKQorICAgIGRlZiB4cG9zaXRpb24oc2VsZiwgaW5kZXgpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB4LXBvc2l0aW9uIG9mIHRoZSBsZWZ0bW9zdCBwaXhlbCBvZiB0aGUgbWVudSBpdGVtCisgICAgICAgIGF0IElOREVYLiIiIgorICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbChzZWxmLl93LCAneHBvc2l0aW9uJywgaW5kZXgpKQogICAgIGRlZiB5cG9zaXRpb24oc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHktcG9zaXRpb24gb2YgdGhlIHRvcG1vc3QgcGl4ZWwgb2YgdGhlIG1lbnUgaXRlbSBhdCBJTkRFWC4iIiIKICAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoCkBAIC0yODUxLDYgKzI5MzMsMjUgQEAKICAgICAgICAgcmVsYXRpb24gT1AgaXMgc2F0aXNmaWVkLiBPUCBpcyBvbmUgb2YgPCwgPD0sID09LCA+PSwgPiwgb3IgIT0uIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGJvb2xlYW4oc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgc2VsZi5fdywgJ2NvbXBhcmUnLCBpbmRleDEsIG9wLCBpbmRleDIpKQorICAgIGRlZiBjb3VudChzZWxmLCBpbmRleDEsIGluZGV4MiwgKmFyZ3MpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiQ291bnRzIHRoZSBudW1iZXIgb2YgcmVsZXZhbnQgdGhpbmdzIGJldHdlZW4gdGhlIHR3byBpbmRpY2VzLgorICAgICAgICBJZiBpbmRleDEgaXMgYWZ0ZXIgaW5kZXgyLCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBuZWdhdGl2ZSBudW1iZXIKKyAgICAgICAgKGFuZCB0aGlzIGhvbGRzIGZvciBlYWNoIG9mIHRoZSBwb3NzaWJsZSBvcHRpb25zKS4KKworICAgICAgICBUaGUgYWN0dWFsIGl0ZW1zIHdoaWNoIGFyZSBjb3VudGVkIGRlcGVuZHMgb24gdGhlIG9wdGlvbnMgZ2l2ZW4gYnkKKyAgICAgICAgYXJncy4gVGhlIHJlc3VsdCBpcyBhIGxpc3Qgb2YgaW50ZWdlcnMsIG9uZSBmb3IgdGhlIHJlc3VsdCBvZiBlYWNoCisgICAgICAgIGNvdW50aW5nIG9wdGlvbiBnaXZlbi4gVmFsaWQgY291bnRpbmcgb3B0aW9ucyBhcmUgImNoYXJzIiwKKyAgICAgICAgImRpc3BsYXljaGFycyIsICJkaXNwbGF5aW5kaWNlcyIsICJkaXNwbGF5bGluZXMiLCAiaW5kaWNlcyIsCisgICAgICAgICJsaW5lcyIsICJ4cGl4ZWxzIiBhbmQgInlwaXhlbHMiLiBUaGVyZSBpcyBhbiBhZGRpdGlvbmFsIHBvc3NpYmxlCisgICAgICAgIG9wdGlvbiAidXBkYXRlIiwgd2hpY2ggaWYgZ2l2ZW4gdGhlbiBhbGwgc3Vic2VxdWVudCBvcHRpb25zIGVuc3VyZQorICAgICAgICB0aGF0IGFueSBwb3NzaWJsZSBvdXQgb2YgZGF0ZSBpbmZvcm1hdGlvbiBpcyByZWNhbGN1bGF0ZWQuIiIiCisgICAgICAgIGFyZ3MgPSBbJy0lcycgJSBhcmcgZm9yIGFyZyBpbiBhcmdzIGlmIG5vdCBhcmcuc3RhcnRzd2l0aCgnLScpXQorICAgICAgICBhcmdzICs9IFtpbmRleDEsIGluZGV4Ml0KKyAgICAgICAgcmVzID0gc2VsZi50ay5jYWxsKHNlbGYuX3csICdjb3VudCcsICphcmdzKSBvciBOb25lCisgICAgICAgIGlmIHJlcyBpcyBub3QgTm9uZSBhbmQgbGVuKGFyZ3MpIDw9IDM6CisgICAgICAgICAgICByZXR1cm4gKHJlcywgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHJlcwogICAgIGRlZiBkZWJ1ZyhzZWxmLCBib29sZWFuPU5vbmUpOgogICAgICAgICAiIiJUdXJuIG9uIHRoZSBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVja3Mgb2YgdGhlIEItVHJlZSBpbnNpZGUgdGhlIHRleHQKICAgICAgICAgd2lkZ2V0IGFjY29yZGluZyB0byBCT09MRUFOLiIiIgpAQCAtMzAxMyw2ICszMTE0LDI0IEBACiAgICAgZGVmIG1hcmtfcHJldmlvdXMoc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHByZXZpb3VzIG1hcmsgYmVmb3JlIElOREVYLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKHNlbGYuX3csICdtYXJrJywgJ3ByZXZpb3VzJywgaW5kZXgpIG9yIE5vbmUKKyAgICBkZWYgcGVlcl9jcmVhdGUoc2VsZiwgbmV3UGF0aE5hbWUsIGNuZj17fSwgKiprdyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJDcmVhdGVzIGEgcGVlciB0ZXh0IHdpZGdldCB3aXRoIHRoZSBnaXZlbiBuZXdQYXRoTmFtZSwgYW5kIGFueQorICAgICAgICBvcHRpb25hbCBzdGFuZGFyZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEJ5IGRlZmF1bHQgdGhlIHBlZXIgd2lsbAorICAgICAgICBoYXZlIHRoZSBzYW1lIHN0YXJ0IGFuZCBhbmQgZW5kIGxpbmUgYXMgdGhlIHBhcmVudCB3aWRnZXQsIGJ1dAorICAgICAgICB0aGVzZSBjYW4gYmUgb3ZlcnJpZGVuIHdpdGggdGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdwZWVyJywgJ2NyZWF0ZScsIG5ld1BhdGhOYW1lLAorICAgICAgICAgICAgKnNlbGYuX29wdGlvbnMoY25mLCBrdykpCisgICAgZGVmIHBlZXJfbmFtZXMoc2VsZik6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBwZWVycyBvZiB0aGlzIHdpZGdldCAodGhpcyBkb2VzIG5vdCBpbmNsdWRlCisgICAgICAgIHRoZSB3aWRnZXQgaXRzZWxmKS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAncGVlcicsICduYW1lcycpKQorICAgIGRlZiByZXBsYWNlKHNlbGYsIGluZGV4MSwgaW5kZXgyLCBjaGFycywgKmFyZ3MpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiUmVwbGFjZXMgdGhlIHJhbmdlIG9mIGNoYXJhY3RlcnMgYmV0d2VlbiBpbmRleDEgYW5kIGluZGV4MiB3aXRoCisgICAgICAgIHRoZSBnaXZlbiBjaGFyYWN0ZXJzIGFuZCB0YWdzIHNwZWNpZmllZCBieSBhcmdzLgorCisgICAgICAgIFNlZSB0aGUgbWV0aG9kIGluc2VydCBmb3Igc29tZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGFyZ3MsIGFuZCB0aGUKKyAgICAgICAgbWV0aG9kIGRlbGV0ZSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGluZGljZXMuIiIiCisgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAncmVwbGFjZScsIGluZGV4MSwgaW5kZXgyLCBjaGFycywgKmFyZ3MpCiAgICAgZGVmIHNjYW5fbWFyayhzZWxmLCB4LCB5KToKICAgICAgICAgIiIiUmVtZW1iZXIgdGhlIGN1cnJlbnQgWCwgWSBjb29yZGluYXRlcy4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdzY2FuJywgJ21hcmsnLCB4LCB5KQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvX2ZpeC5weSBiL0xpYi90a2ludGVyL19maXgucHkKaW5kZXggNWE2OWQ4OS4uNWYzMmQyNSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX2ZpeC5weQorKysgYi9MaWIvdGtpbnRlci9fZml4LnB5CkBAIC00NiwxMCArNDYsMTAgQEAKICAgICAgICAgICAgIHMgPSAiXFwiICsgc1szOl0KICAgICAgICAgcmV0dXJuIHMKIAotcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsInRjbCIpCitwcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCJ0Y2wiKQogaWYgbm90IG9zLnBhdGguZXhpc3RzKHByZWZpeCk6CiAgICAgIyBkZXZkaXIvLi4vdGNsdGsvbGliCi0gICAgcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsIG9zLnBhdGgucGFyZGlyLCAidGNsdGsiLCAibGliIikKKyAgICBwcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCBvcy5wYXRoLnBhcmRpciwgInRjbHRrIiwgImxpYiIpCiAgICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKHByZWZpeCkKICMgaWYgdGhpcyBkb2VzIG5vdCBleGlzdCwgbm8gZnVydGhlciBzZWFyY2ggaXMgbmVlZGVkCiBpZiBvcy5wYXRoLmV4aXN0cyhwcmVmaXgpOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvZmlsZWRpYWxvZy5weSBiL0xpYi90a2ludGVyL2ZpbGVkaWFsb2cucHkKaW5kZXggOThkMmQ1Yy4uM2ZmYjI1MiAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZmlsZWRpYWxvZy5weQorKysgYi9MaWIvdGtpbnRlci9maWxlZGlhbG9nLnB5CkBAIC0zMDYsNyArMzA2LDYgQEAKICAgICBkZWYgX2ZpeHJlc3VsdChzZWxmLCB3aWRnZXQsIHJlc3VsdCk6CiAgICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgICMga2VlcCBkaXJlY3RvcnkgYW5kIGZpbGVuYW1lIHVudGlsIG5leHQgdGltZQotICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICAjIGNvbnZlcnQgVGNsIHBhdGggb2JqZWN0cyB0byBzdHJpbmdzCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN0cmluZwpAQCAtMzMzLDcgKzMzMiw2IEBACiAgICAgICAgICAgICAjIG11bHRpcGxlIHJlc3VsdHM6CiAgICAgICAgICAgICByZXN1bHQgPSB0dXBsZShbZ2V0YXR0cihyLCAic3RyaW5nIiwgcikgZm9yIHIgaW4gcmVzdWx0XSkKICAgICAgICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgICAgICBwYXRoLCBmaWxlID0gb3MucGF0aC5zcGxpdChyZXN1bHRbMF0pCiAgICAgICAgICAgICAgICAgc2VsZi5vcHRpb25zWyJpbml0aWFsZGlyIl0gPSBwYXRoCiAgICAgICAgICAgICAgICAgIyBkb24ndCBzZXQgaW5pdGlhbGZpbGUgb3IgZmlsZW5hbWUsIGFzIHdlIGhhdmUgbXVsdGlwbGUgb2YgdGhlc2UKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL2ZvbnQucHkgYi9MaWIvdGtpbnRlci9mb250LnB5CmluZGV4IDU0MjViMDYuLjQ5MjkyNDEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL2ZvbnQucHkKKysrIGIvTGliL3RraW50ZXIvZm9udC5weQpAQCAtMiwyNyArMiwyNyBAQAogIwogIyB3cml0dGVuIGJ5IEZyZWRyaWsgTHVuZGgsIEZlYnJ1YXJ5IDE5OTgKICMKLSMgRklYTUU6IHNob3VsZCBhZGQgJ2Rpc3BsYXlvZicgb3B0aW9uIHdoZXJlIHJlbGV2YW50IChhY3R1YWwsIGZhbWlsaWVzLAotIyAgICAgICAgbWVhc3VyZSwgYW5kIG1ldHJpY3MpCi0jCiAKIF9fdmVyc2lvbl9fID0gIjAuOSIKIAoraW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHRraW50ZXIKIAorCiAjIHdlaWdodC9zbGFudAogTk9STUFMID0gIm5vcm1hbCIKIFJPTUFOID0gInJvbWFuIgogQk9MRCAgID0gImJvbGQiCiBJVEFMSUMgPSAiaXRhbGljIgogCisKIGRlZiBuYW1ldG9mb250KG5hbWUpOgogICAgICIiIkdpdmVuIHRoZSBuYW1lIG9mIGEgdGsgbmFtZWQgZm9udCwgcmV0dXJucyBhIEZvbnQgcmVwcmVzZW50YXRpb24uCiAgICAgIiIiCiAgICAgcmV0dXJuIEZvbnQobmFtZT1uYW1lLCBleGlzdHM9VHJ1ZSkKIAotY2xhc3MgRm9udDoKIAorY2xhc3MgRm9udDoKICAgICAiIiJSZXByZXNlbnRzIGEgbmFtZWQgZm9udC4KIAogICAgIENvbnN0cnVjdG9yIG9wdGlvbnMgYXJlOgpAQCAtNDQsNiArNDQsOCBAQAogCiAgICAgIiIiCiAKKyAgICBjb3VudGVyID0gaXRlcnRvb2xzLmNvdW50KDEpCisKICAgICBkZWYgX3NldChzZWxmLCBrdyk6CiAgICAgICAgIG9wdGlvbnMgPSBbXQogICAgICAgICBmb3IgaywgdiBpbiBrdy5pdGVtcygpOgpAQCAtNjMsNyArNjUsOCBAQAogICAgICAgICAgICAgb3B0aW9uc1thcmdzW2ldWzE6XV0gPSBhcmdzW2krMV0KICAgICAgICAgcmV0dXJuIG9wdGlvbnMKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290PU5vbmUsIGZvbnQ9Tm9uZSwgbmFtZT1Ob25lLCBleGlzdHM9RmFsc2UsICoqb3B0aW9ucyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3Q9Tm9uZSwgZm9udD1Ob25lLCBuYW1lPU5vbmUsIGV4aXN0cz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgKipvcHRpb25zKToKICAgICAgICAgaWYgbm90IHJvb3Q6CiAgICAgICAgICAgICByb290ID0gdGtpbnRlci5fZGVmYXVsdF9yb290CiAgICAgICAgIGlmIGZvbnQ6CkBAIC03Miw3ICs3NSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmb250ID0gc2VsZi5fc2V0KG9wdGlvbnMpCiAgICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgbmFtZSA9ICJmb250IiArIHN0cihpZChzZWxmKSkKKyAgICAgICAgICAgIG5hbWUgPSAiZm9udCIgKyBzdHIobmV4dChzZWxmLmNvdW50ZXIpKQogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAKICAgICAgICAgaWYgZXhpc3RzOgpAQCAtMTE4LDE0ICsxMjEsMTcgQEAKICAgICAgICAgIlJldHVybiBhIGRpc3RpbmN0IGNvcHkgb2YgdGhlIGN1cnJlbnQgZm9udCIKICAgICAgICAgcmV0dXJuIEZvbnQoc2VsZi5fcm9vdCwgKipzZWxmLmFjdHVhbCgpKQogCi0gICAgZGVmIGFjdHVhbChzZWxmLCBvcHRpb249Tm9uZSk6CisgICAgZGVmIGFjdHVhbChzZWxmLCBvcHRpb249Tm9uZSwgZGlzcGxheW9mPU5vbmUpOgogICAgICAgICAiUmV0dXJuIGFjdHVhbCBmb250IGF0dHJpYnV0ZXMiCisgICAgICAgIGFyZ3MgPSAoKQorICAgICAgICBpZiBkaXNwbGF5b2Y6CisgICAgICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mKQogICAgICAgICBpZiBvcHRpb246Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY2FsbCgiZm9udCIsICJhY3R1YWwiLCBzZWxmLm5hbWUsICItIitvcHRpb24pCisgICAgICAgICAgICBhcmdzID0gYXJncyArICgnLScgKyBvcHRpb24sICkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsKCJmb250IiwgImFjdHVhbCIsIHNlbGYubmFtZSwgKmFyZ3MpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fbWtkaWN0KAotICAgICAgICAgICAgICAgIHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAiYWN0dWFsIiwgc2VsZi5uYW1lKSkKLSAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJhY3R1YWwiLCBzZWxmLm5hbWUsICphcmdzKSkpCiAKICAgICBkZWYgY2dldChzZWxmLCBvcHRpb24pOgogICAgICAgICAiR2V0IGZvbnQgYXR0cmlidXRlIgpAQCAtMTM4LDM3ICsxNDQsNDcgQEAKICAgICAgICAgICAgICAgICAgICpzZWxmLl9zZXQob3B0aW9ucykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fbWtkaWN0KAotICAgICAgICAgICAgICAgIHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAiY29uZmlnIiwgc2VsZi5uYW1lKSkKLSAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJjb25maWciLCBzZWxmLm5hbWUpKSkKIAogICAgIGNvbmZpZ3VyZSA9IGNvbmZpZwogCi0gICAgZGVmIG1lYXN1cmUoc2VsZiwgdGV4dCk6CisgICAgZGVmIG1lYXN1cmUoc2VsZiwgdGV4dCwgZGlzcGxheW9mPU5vbmUpOgogICAgICAgICAiUmV0dXJuIHRleHQgd2lkdGgiCi0gICAgICAgIHJldHVybiBpbnQoc2VsZi5fY2FsbCgiZm9udCIsICJtZWFzdXJlIiwgc2VsZi5uYW1lLCB0ZXh0KSkKKyAgICAgICAgYXJncyA9ICh0ZXh0LCkKKyAgICAgICAgaWYgZGlzcGxheW9mOgorICAgICAgICAgICAgYXJncyA9ICgnLWRpc3BsYXlvZicsIGRpc3BsYXlvZiwgdGV4dCkKKyAgICAgICAgcmV0dXJuIGludChzZWxmLl9jYWxsKCJmb250IiwgIm1lYXN1cmUiLCBzZWxmLm5hbWUsICphcmdzKSkKIAotICAgIGRlZiBtZXRyaWNzKHNlbGYsICpvcHRpb25zKToKKyAgICBkZWYgbWV0cmljcyhzZWxmLCAqb3B0aW9ucywgKiprdyk6CiAgICAgICAgICIiIlJldHVybiBmb250IG1ldHJpY3MuCiAKICAgICAgICAgRm9yIGJlc3QgcGVyZm9ybWFuY2UsIGNyZWF0ZSBhIGR1bW15IHdpZGdldAogICAgICAgICB1c2luZyB0aGlzIGZvbnQgYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QuIiIiCi0KKyAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGRpc3BsYXlvZiA9IGt3LnBvcCgnZGlzcGxheW9mJywgTm9uZSkKKyAgICAgICAgaWYgZGlzcGxheW9mOgorICAgICAgICAgICAgYXJncyA9ICgnLWRpc3BsYXlvZicsIGRpc3BsYXlvZikKICAgICAgICAgaWYgb3B0aW9uczoKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzICsgc2VsZi5fZ2V0KG9wdGlvbnMpCiAgICAgICAgICAgICByZXR1cm4gaW50KAotICAgICAgICAgICAgICAgIHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSwgc2VsZi5fZ2V0KG9wdGlvbnMpKQotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWxsKCJmb250IiwgIm1ldHJpY3MiLCBzZWxmLm5hbWUsICphcmdzKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlcyA9IHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSkpCisgICAgICAgICAgICByZXMgPSBzZWxmLl9zcGxpdChzZWxmLl9jYWxsKCJmb250IiwgIm1ldHJpY3MiLCBzZWxmLm5hbWUsICphcmdzKSkKICAgICAgICAgICAgIG9wdGlvbnMgPSB7fQogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHJlcyksIDIpOgogICAgICAgICAgICAgICAgIG9wdGlvbnNbcmVzW2ldWzE6XV0gPSBpbnQocmVzW2krMV0pCiAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucwogCi1kZWYgZmFtaWxpZXMocm9vdD1Ob25lKToKKworZGVmIGZhbWlsaWVzKHJvb3Q9Tm9uZSwgZGlzcGxheW9mPU5vbmUpOgogICAgICJHZXQgZm9udCBmYW1pbGllcyAoYXMgYSB0dXBsZSkiCiAgICAgaWYgbm90IHJvb3Q6CiAgICAgICAgIHJvb3QgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKLSAgICByZXR1cm4gcm9vdC50ay5zcGxpdGxpc3Qocm9vdC50ay5jYWxsKCJmb250IiwgImZhbWlsaWVzIikpCisgICAgYXJncyA9ICgpCisgICAgaWYgZGlzcGxheW9mOgorICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mKQorICAgIHJldHVybiByb290LnRrLnNwbGl0bGlzdChyb290LnRrLmNhbGwoImZvbnQiLCAiZmFtaWxpZXMiLCAqYXJncykpCisKIAogZGVmIG5hbWVzKHJvb3Q9Tm9uZSk6CiAgICAgIkdldCBuYW1lcyBvZiBkZWZpbmVkIGZvbnRzIChhcyBhIHR1cGxlKSIKQEAgLTE3Niw2ICsxOTIsNyBAQAogICAgICAgICByb290ID0gdGtpbnRlci5fZGVmYXVsdF9yb290CiAgICAgcmV0dXJuIHJvb3QudGsuc3BsaXRsaXN0KHJvb3QudGsuY2FsbCgiZm9udCIsICJuYW1lcyIpKQogCisKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgdGVzdCBzdHVmZgogCkBAIC0xOTgsMTAgKzIxNSwxMCBAQAogCiAgICAgcHJpbnQoZi5tZWFzdXJlKCJoZWxsbyIpLCBmLm1ldHJpY3MoImxpbmVzcGFjZSIpKQogCi0gICAgcHJpbnQoZi5tZXRyaWNzKCkpCisgICAgcHJpbnQoZi5tZXRyaWNzKGRpc3BsYXlvZj1yb290KSkKIAogICAgIGYgPSBGb250KGZvbnQ9KCJDb3VyaWVyIiwgMjAsICJib2xkIikpCi0gICAgcHJpbnQoZi5tZWFzdXJlKCJoZWxsbyIpLCBmLm1ldHJpY3MoImxpbmVzcGFjZSIpKQorICAgIHByaW50KGYubWVhc3VyZSgiaGVsbG8iKSwgZi5tZXRyaWNzKCJsaW5lc3BhY2UiLCBkaXNwbGF5b2Y9cm9vdCkpCiAKICAgICB3ID0gdGtpbnRlci5MYWJlbChyb290LCB0ZXh0PSJIZWxsbywgd29ybGQiLCBmb250PWYpCiAgICAgdy5wYWNrKCkKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc4Y2M5MgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CkBAIC0wLDAgKzEsMTY1IEBACitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0a2ludGVyIGltcG9ydCBWYXJpYWJsZSwgU3RyaW5nVmFyLCBJbnRWYXIsIERvdWJsZVZhciwgQm9vbGVhblZhciwgVGsKKworCitjbGFzcyBWYXIoVmFyaWFibGUpOgorCisgICAgX2RlZmF1bHQgPSAiZGVmYXVsdCIKKyAgICBzaWRlX2VmZmVjdCA9IEZhbHNlCisKKyAgICBkZWYgc2V0KHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5zaWRlX2VmZmVjdCA9IFRydWUKKyAgICAgICAgc3VwZXIoKS5zZXQodmFsdWUpCisKKworY2xhc3MgVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnJvb3QgPSBUaygpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYucm9vdC5kZXN0cm95KCkKKworCitjbGFzcyBUZXN0VmFyaWFibGUoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IFZhcmlhYmxlKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiwgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIodiksIHIiXlBZX1ZBUihcZCspJCIpCisKKyAgICBkZWYgdGVzdF9uYW1lX2FuZF92YWx1ZShzZWxmKToKKyAgICAgICAgdiA9IFZhcmlhYmxlKHNlbGYucm9vdCwgInNhbXBsZSBzdHJpbmciLCAidmFybmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNhbXBsZSBzdHJpbmciLCB2LmdldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ2YXJuYW1lIiwgc3RyKHYpKQorCisgICAgZGVmIHRlc3RfX19kZWxfXyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAidmFybmFtZSIpKQorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290LCAic2FtcGxlIHN0cmluZyIsICJ2YXJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJ2YXJuYW1lIikpCisgICAgICAgIGRlbCB2CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgInZhcm5hbWUiKSkKKworICAgIGRlZiB0ZXN0X2RvbnRfdW5zZXRfbm90X2V4aXN0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJ2YXJuYW1lIikpCisgICAgICAgIHYxID0gVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKKyAgICAgICAgdjIgPSBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQorICAgICAgICBkZWwgdjEKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAibmFtZSIpKQorICAgICAgICAjIHNob3VsZG4ndCByYWlzZSBleGNlcHRpb24KKyAgICAgICAgZGVsIHYyCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgIm5hbWUiKSkKKworICAgIGRlZiB0ZXN0X19fZXFfXyhzZWxmKToKKyAgICAgICAgIyB2YWx1ZXMgZG9lc24ndCBtYXR0ZXIsIG9ubHkgY2xhc3MgYW5kIG5hbWUgYXJlIGNoZWNrZWQKKyAgICAgICAgdjEgPSBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9ImFiYyIpCisgICAgICAgIHYyID0gVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPSJhYmMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYxLCB2MikKKworICAgICAgICB2MyA9IFZhcmlhYmxlKHNlbGYucm9vdCwgbmFtZT0iYWJjIikKKyAgICAgICAgdjQgPSBTdHJpbmdWYXIoc2VsZi5yb290LCBuYW1lPSJhYmMiKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYzLCB2NCkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfbmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPTEyMykKKworICAgIGRlZiB0ZXN0X2luaXRpYWxpemUoc2VsZik6CisgICAgICAgIHYgPSBWYXIoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYuc2lkZV9lZmZlY3QpCisgICAgICAgIHYuc2V0KCJ2YWx1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2LnNpZGVfZWZmZWN0KQorCisKK2NsYXNzIFRlc3RTdHJpbmdWYXIoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IFN0cmluZ1ZhcihzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiIsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9nZXQoc2VsZik6CisgICAgICAgIHYgPSBTdHJpbmdWYXIoc2VsZi5yb290LCAiYWJjIiwgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhYmMiLCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidmFsdWUiLCB2LmdldCgpKQorCisKK2NsYXNzIFRlc3RJbnRWYXIoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IEludFZhcihzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdiA9IEludFZhcihzZWxmLnJvb3QsIDEyMywgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyMywgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIzNDUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDM0NSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWUoc2VsZik6CisgICAgICAgIHYgPSBJbnRWYXIoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICJ2YWx1ZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMzQ1LjAiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorCisKK2NsYXNzIFRlc3REb3VibGVWYXIoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IERvdWJsZVZhcihzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMC4wLCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICB2ID0gRG91YmxlVmFyKHNlbGYucm9vdCwgMS4yMywgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDEuMjMsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMy40NSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMy40NSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldF9mcm9tX2ludChzZWxmKToKKyAgICAgICAgdiA9IERvdWJsZVZhcihzZWxmLnJvb3QsIDEuMjMsICJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgxLjIzLCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjMuNDUiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDMuNDUsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiNDU2IikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCg0NTYsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3ZhbHVlKHNlbGYpOgorICAgICAgICB2ID0gRG91YmxlVmFyKHNlbGYucm9vdCwgbmFtZT0ibmFtZSIpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAidmFsdWUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorCisKK2NsYXNzIFRlc3RCb29sZWFuVmFyKFRlc3RCYXNlKToKKworICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHYgPSBCb29sZWFuVmFyKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdiA9IEJvb2xlYW5WYXIoc2VsZi5yb290LCBUcnVlLCAibmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoVHJ1ZSwgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIwIikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChGYWxzZSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWVfZG9tYWluKHNlbGYpOgorICAgICAgICB2ID0gQm9vbGVhblZhcihzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIxLjAiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorCisKK3Rlc3RzX2d1aSA9IChUZXN0VmFyaWFibGUsIFRlc3RTdHJpbmdWYXIsIFRlc3RJbnRWYXIsCisgICAgICAgICAgICAgVGVzdERvdWJsZVZhciwgVGVzdEJvb2xlYW5WYXIpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0c19ndWkpCmRpZmYgLS1naXQgYS9MaWIvdG9rZW4ucHkgYi9MaWIvdG9rZW4ucHkKaW5kZXggNmI1MzIwZC4uMzFmYWUwYSAxMDA3NTUKLS0tIGEvTGliL3Rva2VuLnB5CisrKyBiL0xpYi90b2tlbi5weQpAQCAtNzAsNyArNzAsNyBAQAogCiB0b2tfbmFtZSA9IHt2YWx1ZTogbmFtZQogICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGdsb2JhbHMoKS5pdGVtcygpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnQpfQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KSBhbmQgbm90IG5hbWUuc3RhcnRzd2l0aCgnXycpfQogX19hbGxfXy5leHRlbmQodG9rX25hbWUudmFsdWVzKCkpCiAKIGRlZiBJU1RFUk1JTkFMKHgpOgpkaWZmIC0tZ2l0IGEvTGliL3Rva2VuaXplLnB5IGIvTGliL3Rva2VuaXplLnB5CmluZGV4IDU5MDgxZDMuLmQ2Njk0MTIgMTAwNjQ0Ci0tLSBhL0xpYi90b2tlbml6ZS5weQorKysgYi9MaWIvdG9rZW5pemUucHkKQEAgLTQ1LDYgKzQ1LDUxIEBACiBFTkNPRElORyA9IE5fVE9LRU5TICsgMgogdG9rX25hbWVbRU5DT0RJTkddID0gJ0VOQ09ESU5HJwogTl9UT0tFTlMgKz0gMworRVhBQ1RfVE9LRU5fVFlQRVMgPSB7CisgICAgJygnOiAgIExQQVIsCisgICAgJyknOiAgIFJQQVIsCisgICAgJ1snOiAgIExTUUIsCisgICAgJ10nOiAgIFJTUUIsCisgICAgJzonOiAgIENPTE9OLAorICAgICcsJzogICBDT01NQSwKKyAgICAnOyc6ICAgU0VNSSwKKyAgICAnKyc6ICAgUExVUywKKyAgICAnLSc6ICAgTUlOVVMsCisgICAgJyonOiAgIFNUQVIsCisgICAgJy8nOiAgIFNMQVNILAorICAgICd8JzogICBWQkFSLAorICAgICcmJzogICBBTVBFUiwKKyAgICAnPCc6ICAgTEVTUywKKyAgICAnPic6ICAgR1JFQVRFUiwKKyAgICAnPSc6ICAgRVFVQUwsCisgICAgJy4nOiAgIERPVCwKKyAgICAnJSc6ICAgUEVSQ0VOVCwKKyAgICAneyc6ICAgTEJSQUNFLAorICAgICd9JzogICBSQlJBQ0UsCisgICAgJz09JzogIEVRRVFVQUwsCisgICAgJyE9JzogIE5PVEVRVUFMLAorICAgICc8PSc6ICBMRVNTRVFVQUwsCisgICAgJz49JzogIEdSRUFURVJFUVVBTCwKKyAgICAnfic6ICAgVElMREUsCisgICAgJ14nOiAgIENJUkNVTUZMRVgsCisgICAgJzw8JzogIExFRlRTSElGVCwKKyAgICAnPj4nOiAgUklHSFRTSElGVCwKKyAgICAnKionOiAgRE9VQkxFU1RBUiwKKyAgICAnKz0nOiAgUExVU0VRVUFMLAorICAgICctPSc6ICBNSU5FUVVBTCwKKyAgICAnKj0nOiAgU1RBUkVRVUFMLAorICAgICcvPSc6ICBTTEFTSEVRVUFMLAorICAgICclPSc6ICBQRVJDRU5URVFVQUwsCisgICAgJyY9JzogIEFNUEVSRVFVQUwsCisgICAgJ3w9JzogIFZCQVJFUVVBTCwKKyAgICAnXj0nOiBDSVJDVU1GTEVYRVFVQUwsCisgICAgJzw8PSc6IExFRlRTSElGVEVRVUFMLAorICAgICc+Pj0nOiBSSUdIVFNISUZURVFVQUwsCisgICAgJyoqPSc6IERPVUJMRVNUQVJFUVVBTCwKKyAgICAnLy8nOiAgRE9VQkxFU0xBU0gsCisgICAgJy8vPSc6IERPVUJMRVNMQVNIRVFVQUwsCisgICAgJ0AnOiAgIEFUCit9CiAKIGNsYXNzIFRva2VuSW5mbyhjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdUb2tlbkluZm8nLCAndHlwZSBzdHJpbmcgc3RhcnQgZW5kIGxpbmUnKSk6CiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtNTIsNiArOTcsMTMgQEAKICAgICAgICAgcmV0dXJuICgnVG9rZW5JbmZvKHR5cGU9JXMsIHN0cmluZz0lciwgc3RhcnQ9JXIsIGVuZD0lciwgbGluZT0lciknICUKICAgICAgICAgICAgICAgICBzZWxmLl9yZXBsYWNlKHR5cGU9YW5ub3RhdGVkX3R5cGUpKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGV4YWN0X3R5cGUoc2VsZik6CisgICAgICAgIGlmIHNlbGYudHlwZSA9PSBPUCBhbmQgc2VsZi5zdHJpbmcgaW4gRVhBQ1RfVE9LRU5fVFlQRVM6CisgICAgICAgICAgICByZXR1cm4gRVhBQ1RfVE9LRU5fVFlQRVNbc2VsZi5zdHJpbmddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50eXBlCisKIGRlZiBncm91cCgqY2hvaWNlcyk6IHJldHVybiAnKCcgKyAnfCcuam9pbihjaG9pY2VzKSArICcpJwogZGVmIGFueSgqY2hvaWNlcyk6IHJldHVybiBncm91cCgqY2hvaWNlcykgKyAnKicKIGRlZiBtYXliZSgqY2hvaWNlcyk6IHJldHVybiBncm91cCgqY2hvaWNlcykgKyAnPycKQEAgLTc1LDYgKzEyNyw4IEBACiBJbWFnbnVtYmVyID0gZ3JvdXAocidbMC05XStbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQogTnVtYmVyID0gZ3JvdXAoSW1hZ251bWJlciwgRmxvYXRudW1iZXIsIEludG51bWJlcikKIAorU3RyaW5nUHJlZml4ID0gcicoPzpbYkJdW3JSXT98W3JSXVtiQl0/fFt1VV0pPycKKwogIyBUYWlsIGVuZCBvZiAnIHN0cmluZy4KIFNpbmdsZSA9IHIiW14nXFxdKig/OlxcLlteJ1xcXSopKiciCiAjIFRhaWwgZW5kIG9mICIgc3RyaW5nLgpAQCAtODMsMTAgKzEzNywxMCBAQAogU2luZ2xlMyA9IHIiW14nXFxdKig/Oig/OlxcLnwnKD8hJycpKVteJ1xcXSopKicnJyIKICMgVGFpbCBlbmQgb2YgIiIiIHN0cmluZy4KIERvdWJsZTMgPSByJ1teIlxcXSooPzooPzpcXC58Iig/ISIiKSlbXiJcXF0qKSoiIiInCi1UcmlwbGUgPSBncm91cCgiW2JCXT9bclJdPycnJyIsICdbYkJdP1tyUl0/IiIiJykKK1RyaXBsZSA9IGdyb3VwKFN0cmluZ1ByZWZpeCArICInJyciLCBTdHJpbmdQcmVmaXggKyAnIiIiJykKICMgU2luZ2xlLWxpbmUgJyBvciAiIHN0cmluZy4KLVN0cmluZyA9IGdyb3VwKHIiW2JCXT9bclJdPydbXlxuJ1xcXSooPzpcXC5bXlxuJ1xcXSopKiciLAotICAgICAgICAgICAgICAgcidbYkJdP1tyUl0/IlteXG4iXFxdKig/OlxcLlteXG4iXFxdKikqIicpCitTdHJpbmcgPSBncm91cChTdHJpbmdQcmVmaXggKyByIidbXlxuJ1xcXSooPzpcXC5bXlxuJ1xcXSopKiciLAorICAgICAgICAgICAgICAgU3RyaW5nUHJlZml4ICsgciciW15cbiJcXF0qKD86XFwuW15cbiJcXF0qKSoiJykKIAogIyBCZWNhdXNlIG9mIGxlZnRtb3N0LXRoZW4tbG9uZ2VzdCBtYXRjaCBzZW1hbnRpY3MsIGJlIHN1cmUgdG8gcHV0IHRoZQogIyBsb25nZXN0IG9wZXJhdG9ycyBmaXJzdCAoZS5nLiwgaWYgPSBjYW1lIGJlZm9yZSA9PSwgPT0gd291bGQgZ2V0CkBAIC0xMDQsOSArMTU4LDkgQEAKIFRva2VuID0gSWdub3JlICsgUGxhaW5Ub2tlbgogCiAjIEZpcnN0IChvciBvbmx5KSBsaW5lIG9mICcgb3IgIiBzdHJpbmcuCi1Db250U3RyID0gZ3JvdXAociJbYkJdP1tyUl0/J1teXG4nXFxdKig/OlxcLlteXG4nXFxdKikqIiArCitDb250U3RyID0gZ3JvdXAoU3RyaW5nUHJlZml4ICsgciInW15cbidcXF0qKD86XFwuW15cbidcXF0qKSoiICsKICAgICAgICAgICAgICAgICBncm91cCgiJyIsIHInXFxccj9cbicpLAotICAgICAgICAgICAgICAgIHInW2JCXT9bclJdPyJbXlxuIlxcXSooPzpcXC5bXlxuIlxcXSopKicgKworICAgICAgICAgICAgICAgIFN0cmluZ1ByZWZpeCArIHInIlteXG4iXFxdKig/OlxcLlteXG4iXFxdKikqJyArCiAgICAgICAgICAgICAgICAgZ3JvdXAoJyInLCByJ1xcXHI/XG4nKSkKIFBzZXVkb0V4dHJhcyA9IGdyb3VwKHInXFxccj9cbicsIENvbW1lbnQsIFRyaXBsZSkKIFBzZXVkb1Rva2VuID0gV2hpdGVzcGFjZSArIGdyb3VwKFBzZXVkb0V4dHJhcywgTnVtYmVyLCBGdW5ueSwgQ29udFN0ciwgTmFtZSkKQEAgLTExNCwzNyArMTY4LDQ5IEBACiBkZWYgX2NvbXBpbGUoZXhwcik6CiAgICAgcmV0dXJuIHJlLmNvbXBpbGUoZXhwciwgcmUuVU5JQ09ERSkKIAotdG9rZW5wcm9nLCBwc2V1ZG9wcm9nLCBzaW5nbGUzcHJvZywgZG91YmxlM3Byb2cgPSBtYXAoCi0gICAgX2NvbXBpbGUsIChUb2tlbiwgUHNldWRvVG9rZW4sIFNpbmdsZTMsIERvdWJsZTMpKQotZW5kcHJvZ3MgPSB7IiciOiBfY29tcGlsZShTaW5nbGUpLCAnIic6IF9jb21waWxlKERvdWJsZSksCi0gICAgICAgICAgICAiJycnIjogc2luZ2xlM3Byb2csICciIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJyJycnIjogc2luZ2xlM3Byb2csICdyIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiYicnJyI6IHNpbmdsZTNwcm9nLCAnYiIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgImJyJycnIjogc2luZ2xlM3Byb2csICdiciIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgIlInJyciOiBzaW5nbGUzcHJvZywgJ1IiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJCJycnIjogc2luZ2xlM3Byb2csICdCIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiYlInJyciOiBzaW5nbGUzcHJvZywgJ2JSIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiQnInJyciOiBzaW5nbGUzcHJvZywgJ0JyIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiQlInJyciOiBzaW5nbGUzcHJvZywgJ0JSIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAncic6IE5vbmUsICdSJzogTm9uZSwgJ2InOiBOb25lLCAnQic6IE5vbmV9CitlbmRwYXRzID0geyInIjogU2luZ2xlLCAnIic6IERvdWJsZSwKKyAgICAgICAgICAgIicnJyI6IFNpbmdsZTMsICciIiInOiBEb3VibGUzLAorICAgICAgICAgICAicicnJyI6IFNpbmdsZTMsICdyIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgImInJyciOiBTaW5nbGUzLCAnYiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJSJycnIjogU2luZ2xlMywgJ1IiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiQicnJyI6IFNpbmdsZTMsICdCIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgImJyJycnIjogU2luZ2xlMywgJ2JyIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgImJSJycnIjogU2luZ2xlMywgJ2JSIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIkJyJycnIjogU2luZ2xlMywgJ0JyIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIkJSJycnIjogU2luZ2xlMywgJ0JSIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgInJiJycnIjogU2luZ2xlMywgJ3JiIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIlJiJycnIjogU2luZ2xlMywgJ1JiIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgInJCJycnIjogU2luZ2xlMywgJ3JCIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIlJCJycnIjogU2luZ2xlMywgJ1JCIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgInUnJyciOiBTaW5nbGUzLCAndSIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJSJycnIjogU2luZ2xlMywgJ1IiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiVScnJyI6IFNpbmdsZTMsICdVIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgJ3InOiBOb25lLCAnUic6IE5vbmUsICdiJzogTm9uZSwgJ0InOiBOb25lLAorICAgICAgICAgICAndSc6IE5vbmUsICdVJzogTm9uZX0KIAogdHJpcGxlX3F1b3RlZCA9IHt9CiBmb3IgdCBpbiAoIicnJyIsICciIiInLAogICAgICAgICAgICJyJycnIiwgJ3IiIiInLCAiUicnJyIsICdSIiIiJywKICAgICAgICAgICAiYicnJyIsICdiIiIiJywgIkInJyciLCAnQiIiIicsCiAgICAgICAgICAgImJyJycnIiwgJ2JyIiIiJywgIkJyJycnIiwgJ0JyIiIiJywKLSAgICAgICAgICAiYlInJyciLCAnYlIiIiInLCAiQlInJyciLCAnQlIiIiInKToKKyAgICAgICAgICAiYlInJyciLCAnYlIiIiInLCAiQlInJyciLCAnQlIiIiInLAorICAgICAgICAgICJyYicnJyIsICdyYiIiIicsICJyQicnJyIsICdyQiIiIicsCisgICAgICAgICAgIlJiJycnIiwgJ1JiIiIiJywgIlJCJycnIiwgJ1JCIiIiJywKKyAgICAgICAgICAidScnJyIsICd1IiIiJywgIlUnJyciLCAnVSIiIicsCisgICAgICAgICAgKToKICAgICB0cmlwbGVfcXVvdGVkW3RdID0gdAogc2luZ2xlX3F1b3RlZCA9IHt9CiBmb3IgdCBpbiAoIiciLCAnIicsCiAgICAgICAgICAgInInIiwgJ3IiJywgIlInIiwgJ1IiJywKICAgICAgICAgICAiYiciLCAnYiInLCAiQiciLCAnQiInLAogICAgICAgICAgICJiciciLCAnYnIiJywgIkJyJyIsICdCciInLAotICAgICAgICAgICJiUiciLCAnYlIiJywgIkJSJyIsICdCUiInICk6CisgICAgICAgICAgImJSJyIsICdiUiInLCAiQlInIiwgJ0JSIicgLAorICAgICAgICAgICJyYiciLCAncmIiJywgInJCJyIsICdyQiInLAorICAgICAgICAgICJSYiciLCAnUmIiJywgIlJCJyIsICdSQiInICwKKyAgICAgICAgICAidSciLCAndSInLCAiVSciLCAnVSInLAorICAgICAgICAgICk6CiAgICAgc2luZ2xlX3F1b3RlZFt0XSA9IHQKIAotZGVsIF9jb21waWxlCi0KIHRhYnNpemUgPSA4CiAKIGNsYXNzIFRva2VuRXJyb3IoRXhjZXB0aW9uKTogcGFzcwpAQCAtMjgxLDYgKzM0NywxMCBAQAogCiAgICAgSWYgbm8gZW5jb2RpbmcgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBkZWZhdWx0IG9mICd1dGYtOCcgd2lsbCBiZSByZXR1cm5lZC4KICAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIGZpbGVuYW1lID0gcmVhZGxpbmUuX19zZWxmX18ubmFtZQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgZmlsZW5hbWUgPSBOb25lCiAgICAgYm9tX2ZvdW5kID0gRmFsc2UKICAgICBlbmNvZGluZyA9IE5vbmUKICAgICBkZWZhdWx0ID0gJ3V0Zi04JwpAQCAtMjk3LDcgKzM2NywxMCBAQAogICAgICAgICAgICAgIyBwZXIgZGVmYXVsdCBlbmNvZGluZy4KICAgICAgICAgICAgIGxpbmVfc3RyaW5nID0gbGluZS5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJpbnZhbGlkIG9yIG1pc3NpbmcgZW5jb2RpbmcgZGVjbGFyYXRpb24iKQorICAgICAgICAgICAgbXNnID0gImludmFsaWQgb3IgbWlzc2luZyBlbmNvZGluZyBkZWNsYXJhdGlvbiIKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG1zZyA9ICd7fSBmb3IgeyFyfScuZm9ybWF0KG1zZywgZmlsZW5hbWUpCisgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcihtc2cpCiAKICAgICAgICAgbWF0Y2hlcyA9IGNvb2tpZV9yZS5maW5kYWxsKGxpbmVfc3RyaW5nKQogICAgICAgICBpZiBub3QgbWF0Y2hlczoKQEAgLTMwNywxMiArMzgwLDIxIEBACiAgICAgICAgICAgICBjb2RlYyA9IGxvb2t1cChlbmNvZGluZykKICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgogICAgICAgICAgICAgIyBUaGlzIGJlaGF2aW91ciBtaW1pY3MgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgotICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoInVua25vd24gZW5jb2Rpbmc6ICIgKyBlbmNvZGluZykKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZW5jb2Rpbmc6ICIgKyBlbmNvZGluZworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBlbmNvZGluZyBmb3IgeyFyfToge30iLmZvcm1hdChmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nKQorICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IobXNnKQogCiAgICAgICAgIGlmIGJvbV9mb3VuZDoKICAgICAgICAgICAgIGlmIGVuY29kaW5nICE9ICd1dGYtOCc6CiAgICAgICAgICAgICAgICAgIyBUaGlzIGJlaGF2aW91ciBtaW1pY3MgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgotICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCdlbmNvZGluZyBwcm9ibGVtOiB1dGYtOCcpCisgICAgICAgICAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gJ2VuY29kaW5nIHByb2JsZW06IHV0Zi04JworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdlbmNvZGluZyBwcm9ibGVtIGZvciB7IXJ9OiB1dGYtOCcuZm9ybWF0KGZpbGVuYW1lKQorICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKG1zZykKICAgICAgICAgICAgIGVuY29kaW5nICs9ICctc2lnJwogICAgICAgICByZXR1cm4gZW5jb2RpbmcKIApAQCAtNDY5LDcgKzU1MSw3IEBACiAgICAgICAgICAgICBjb250aW51ZWQgPSAwCiAKICAgICAgICAgd2hpbGUgcG9zIDwgbWF4OgotICAgICAgICAgICAgcHNldWRvbWF0Y2ggPSBwc2V1ZG9wcm9nLm1hdGNoKGxpbmUsIHBvcykKKyAgICAgICAgICAgIHBzZXVkb21hdGNoID0gX2NvbXBpbGUoUHNldWRvVG9rZW4pLm1hdGNoKGxpbmUsIHBvcykKICAgICAgICAgICAgIGlmIHBzZXVkb21hdGNoOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzY2FuIGZvciB0b2tlbnMKICAgICAgICAgICAgICAgICBzdGFydCwgZW5kID0gcHNldWRvbWF0Y2guc3BhbigxKQogICAgICAgICAgICAgICAgIHNwb3MsIGVwb3MsIHBvcyA9IChsbnVtLCBzdGFydCksIChsbnVtLCBlbmQpLCBlbmQKQEAgLTQ4NSw3ICs1NjcsNyBAQAogICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHRva2VuLmVuZHN3aXRoKCJcbiIpCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhDT01NRU5ULCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIHRyaXBsZV9xdW90ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBlbmRwcm9nc1t0b2tlbl0KKyAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHNbdG9rZW5dKQogICAgICAgICAgICAgICAgICAgICBlbmRtYXRjaCA9IGVuZHByb2cubWF0Y2gobGluZSwgcG9zKQogICAgICAgICAgICAgICAgICAgICBpZiBlbmRtYXRjaDogICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBvbiBvbmUgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gZW5kbWF0Y2guZW5kKDApCkBAIC01MDEsOCArNTgzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjNdIGluIHNpbmdsZV9xdW90ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuWy0xXSA9PSAnXG4nOiAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgc3Ryc3RhcnQgPSAobG51bSwgc3RhcnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gKGVuZHByb2dzW2luaXRpYWxdIG9yIGVuZHByb2dzW3Rva2VuWzFdXSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nc1t0b2tlblsyXV0pCisgICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1tpbml0aWFsXSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHNbdG9rZW5bMV1dIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0c1t0b2tlblsyXV0pCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250c3RyLCBuZWVkY29udCA9IGxpbmVbc3RhcnQ6XSwgMQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGxpbmUgPSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtNTMzLDI3ICs2MTYsNjUgQEAKIGRlZiBnZW5lcmF0ZV90b2tlbnMocmVhZGxpbmUpOgogICAgIHJldHVybiBfdG9rZW5pemUocmVhZGxpbmUsIE5vbmUpCiAKK2RlZiBtYWluKCk6CisgICAgaW1wb3J0IGFyZ3BhcnNlCisKKyAgICAjIEhlbHBlciBlcnJvciBoYW5kbGluZyByb3V0aW5lcworICAgIGRlZiBwZXJyb3IobWVzc2FnZSk6CisgICAgICAgIHByaW50KG1lc3NhZ2UsIGZpbGU9c3lzLnN0ZGVycikKKworICAgIGRlZiBlcnJvcihtZXNzYWdlLCBmaWxlbmFtZT1Ob25lLCBsb2NhdGlvbj1Ob25lKToKKyAgICAgICAgaWYgbG9jYXRpb246CisgICAgICAgICAgICBhcmdzID0gKGZpbGVuYW1lLCkgKyBsb2NhdGlvbiArIChtZXNzYWdlLCkKKyAgICAgICAgICAgIHBlcnJvcigiJXM6JWQ6JWQ6IGVycm9yOiAlcyIgJSBhcmdzKQorICAgICAgICBlbGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgcGVycm9yKCIlczogZXJyb3I6ICVzIiAlIChmaWxlbmFtZSwgbWVzc2FnZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwZXJyb3IoImVycm9yOiAlcyIgJSBtZXNzYWdlKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgIyBQYXJzZSB0aGUgYXJndW1lbnRzIGFuZCBvcHRpb25zCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0ncHl0aG9uIC1tIHRva2VuaXplJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KGRlc3Q9J2ZpbGVuYW1lJywgbmFyZ3M9Jz8nLAorICAgICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj0nZmlsZW5hbWUucHknLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndGhlIGZpbGUgdG8gdG9rZW5pemU7IGRlZmF1bHRzIHRvIHN0ZGluJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZScsICctLWV4YWN0JywgZGVzdD0nZXhhY3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzcGxheSB0b2tlbiBuYW1lcyB1c2luZyB0aGUgZXhhY3QgdHlwZScpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIHRyeToKKyAgICAgICAgIyBUb2tlbml6ZSB0aGUgaW5wdXQKKyAgICAgICAgaWYgYXJncy5maWxlbmFtZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gYXJncy5maWxlbmFtZQorICAgICAgICAgICAgd2l0aCBidWlsdGlucy5vcGVuKGZpbGVuYW1lLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgIHRva2VucyA9IGxpc3QodG9rZW5pemUoZi5yZWFkbGluZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWxlbmFtZSA9ICI8c3RkaW4+IgorICAgICAgICAgICAgdG9rZW5zID0gX3Rva2VuaXplKHN5cy5zdGRpbi5yZWFkbGluZSwgTm9uZSkKKworICAgICAgICAjIE91dHB1dCB0aGUgdG9rZW5pemF0aW9uCisgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbnM6CisgICAgICAgICAgICB0b2tlbl90eXBlID0gdG9rZW4udHlwZQorICAgICAgICAgICAgaWYgYXJncy5leGFjdDoKKyAgICAgICAgICAgICAgICB0b2tlbl90eXBlID0gdG9rZW4uZXhhY3RfdHlwZQorICAgICAgICAgICAgdG9rZW5fcmFuZ2UgPSAiJWQsJWQtJWQsJWQ6IiAlICh0b2tlbi5zdGFydCArIHRva2VuLmVuZCkKKyAgICAgICAgICAgIHByaW50KCIlLTIwcyUtMTVzJS0xNXIiICUKKyAgICAgICAgICAgICAgICAgICh0b2tlbl9yYW5nZSwgdG9rX25hbWVbdG9rZW5fdHlwZV0sIHRva2VuLnN0cmluZykpCisgICAgZXhjZXB0IEluZGVudGF0aW9uRXJyb3IgYXMgZXJyOgorICAgICAgICBsaW5lLCBjb2x1bW4gPSBlcnIuYXJnc1sxXVsxOjNdCisgICAgICAgIGVycm9yKGVyci5hcmdzWzBdLCBmaWxlbmFtZSwgKGxpbmUsIGNvbHVtbikpCisgICAgZXhjZXB0IFRva2VuRXJyb3IgYXMgZXJyOgorICAgICAgICBsaW5lLCBjb2x1bW4gPSBlcnIuYXJnc1sxXQorICAgICAgICBlcnJvcihlcnIuYXJnc1swXSwgZmlsZW5hbWUsIChsaW5lLCBjb2x1bW4pKQorICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlcnI6CisgICAgICAgIGVycm9yKGVyciwgZmlsZW5hbWUpCisgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgICAgICBlcnJvcihlcnIpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICBwcmludCgiaW50ZXJydXB0ZWRcbiIpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgIHBlcnJvcigidW5leHBlY3RlZCBlcnJvcjogJXMiICUgZXJyKQorICAgICAgICByYWlzZQorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgICMgUXVpY2sgc2FuaXR5IGNoZWNrCi0gICAgcyA9IGInJydkZWYgcGFyc2VsaW5lKHNlbGYsIGxpbmUpOgotICAgICAgICAgICAgIiIiUGFyc2UgdGhlIGxpbmUgaW50byBhIGNvbW1hbmQgbmFtZSBhbmQgYSBzdHJpbmcgY29udGFpbmluZwotICAgICAgICAgICAgdGhlIGFyZ3VtZW50cy4gIFJldHVybnMgYSB0dXBsZSBjb250YWluaW5nIChjb21tYW5kLCBhcmdzLCBsaW5lKS4KLSAgICAgICAgICAgICdjb21tYW5kJyBhbmQgJ2FyZ3MnIG1heSBiZSBOb25lIGlmIHRoZSBsaW5lIGNvdWxkbid0IGJlIHBhcnNlZC4KLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIGxpbmUKLSAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAnPyc6Ci0gICAgICAgICAgICAgICAgbGluZSA9ICdoZWxwICcgKyBsaW5lWzE6XQotICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICchJzoKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdkb19zaGVsbCcpOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gJ3NoZWxsICcgKyBsaW5lWzE6XQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBsaW5lCi0gICAgICAgICAgICBpLCBuID0gMCwgbGVuKGxpbmUpCi0gICAgICAgICAgICB3aGlsZSBpIDwgbiBhbmQgbGluZVtpXSBpbiBzZWxmLmlkZW50Y2hhcnM6IGkgPSBpKzEKLSAgICAgICAgICAgIGNtZCwgYXJnID0gbGluZVs6aV0sIGxpbmVbaTpdLnN0cmlwKCkKLSAgICAgICAgICAgIHJldHVybiBjbWQsIGFyZywgbGluZQotICAgICcnJwotICAgIGZvciB0b2sgaW4gdG9rZW5pemUoaXRlcihzLnNwbGl0bGluZXMoKSkuX19uZXh0X18pOgotICAgICAgICBwcmludCh0b2spCisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdHJhY2UucHkgYi9MaWIvdHJhY2UucHkKaW5kZXggODUwMzY5Yi4uMzE3YjVmZCAxMDA2NDQKLS0tIGEvTGliL3RyYWNlLnB5CisrKyBiL0xpYi90cmFjZS5weQpAQCAtMzksOCArMzksOCBAQAogCiAgICMgY3JlYXRlIGEgVHJhY2Ugb2JqZWN0LCB0ZWxsaW5nIGl0IHdoYXQgdG8gaWdub3JlLCBhbmQgd2hldGhlciB0bwogICAjIGRvIHRyYWNpbmcgb3IgbGluZS1jb3VudGluZyBvciBib3RoLgotICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsXSwgdHJhY2U9MCwKLSAgICAgICAgICAgICAgICAgICAgY291bnQ9MSkKKyAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAorICAgICAgICAgICAgICAgICAgICAgICB0cmFjZT0wLCBjb3VudD0xKQogICAjIHJ1biB0aGUgbmV3IGNvbW1hbmQgdXNpbmcgdGhlIGdpdmVuIHRyYWNlcgogICB0cmFjZXIucnVuKCdtYWluKCknKQogICAjIG1ha2UgYSByZXBvcnQsIHBsYWNpbmcgb3V0cHV0IGluIC90bXAKQEAgLTQ4LDE5ICs0OCwyMCBAQAogICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIGNvdmVyZGlyPSIvdG1wIikKICIiIgogX19hbGxfXyA9IFsnVHJhY2UnLCAnQ292ZXJhZ2VSZXN1bHRzJ10KLWltcG9ydCBpbwogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWltcG9ydCB0aW1lCiBpbXBvcnQgdG9rZW4KIGltcG9ydCB0b2tlbml6ZQogaW1wb3J0IGluc3BlY3QKIGltcG9ydCBnYwogaW1wb3J0IGRpcwogaW1wb3J0IHBpY2tsZQotZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybiBhcyBfd2FybgordHJ5OgorICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0yNDQsOCArMjQ1LDcgQEAKICAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGZpbGVuYW1lIGRvZXMgbm90IHJlZmVyIHRvIGEgZmlsZQogICAgICAgICB3ZSB3YW50IHRvIGhhdmUgcmVwb3J0ZWQuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gKGZpbGVuYW1lID09ICI8c3RyaW5nPiIgb3IKLSAgICAgICAgICAgICAgICBmaWxlbmFtZS5zdGFydHN3aXRoKCI8ZG9jdGVzdCAiKSkKKyAgICAgICAgcmV0dXJuIGZpbGVuYW1lLnN0YXJ0c3dpdGgoJzwnKSBhbmQgZmlsZW5hbWUuZW5kc3dpdGgoJz4nKQogCiAgICAgZGVmIHVwZGF0ZShzZWxmLCBvdGhlcik6CiAgICAgICAgICIiIk1lcmdlIGluIHRoZSBkYXRhIGZyb20gYW5vdGhlciBDb3ZlcmFnZVJlc3VsdHMiIiIKQEAgLTQ3Nyw3ICs0NzcsNyBAQAogICAgICAgICBzZWxmLl9jYWxsZXJfY2FjaGUgPSB7fQogICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCiAgICAgICAgIGlmIHRpbWluZzoKLSAgICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBfdGltZSgpCiAgICAgICAgIGlmIGNvdW50Y2FsbGVyczoKICAgICAgICAgICAgIHNlbGYuZ2xvYmFsdHJhY2UgPSBzZWxmLmdsb2JhbHRyYWNlX3RyYWNrY2FsbGVycwogICAgICAgICBlbGlmIGNvdW50ZnVuY3M6CkBAIC02MTUsNyArNjE1LDcgQEAKICAgICAgICAgICAgIHNlbGYuY291bnRzW2tleV0gPSBzZWxmLmNvdW50cy5nZXQoa2V5LCAwKSArIDEKIAogICAgICAgICAgICAgaWYgc2VsZi5zdGFydF90aW1lOgotICAgICAgICAgICAgICAgIHByaW50KCclLjJmJyAlICh0aW1lLnRpbWUoKSAtIHNlbGYuc3RhcnRfdGltZSksIGVuZD0nICcpCisgICAgICAgICAgICAgICAgcHJpbnQoJyUuMmYnICUgKF90aW1lKCkgLSBzZWxmLnN0YXJ0X3RpbWUpLCBlbmQ9JyAnKQogICAgICAgICAgICAgYm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKQogICAgICAgICAgICAgcHJpbnQoIiVzKCVkKTogJXMiICUgKGJuYW1lLCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykpLCBlbmQ9JycpCkBAIC02MjgsNyArNjI4LDcgQEAKICAgICAgICAgICAgIGxpbmVubyA9IGZyYW1lLmZfbGluZW5vCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RhcnRfdGltZToKLSAgICAgICAgICAgICAgICBwcmludCgnJS4yZicgJSAodGltZS50aW1lKCkgLSBzZWxmLnN0YXJ0X3RpbWUpLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgIHByaW50KCclLjJmJyAlIChfdGltZSgpIC0gc2VsZi5zdGFydF90aW1lKSwgZW5kPScgJykKICAgICAgICAgICAgIGJuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkKICAgICAgICAgICAgIHByaW50KCIlcyglZCk6ICVzIiAlIChibmFtZSwgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pKSwgZW5kPScnKQpAQCAtNzUwLDEwICs3NTAsMTAgQEAKICAgICAgICAgICAgICAgICAjIHNob3VsZCBJIGFsc28gY2FsbCBleHBhbmR1c2VyPyAoYWZ0ZXIgYWxsLCBjb3VsZCB1c2UgJEhPTUUpCiAKICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkcHJlZml4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAibGliIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICJsaWIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkZXhlY19wcmVmaXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgImxpYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICJsaWIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5ub3JtcGF0aChzKQogICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlYmFjay5weSBiL0xpYi90cmFjZWJhY2sucHkKaW5kZXggOGQ0ZTk2ZS4uZWViOWU3MyAxMDA2NDQKLS0tIGEvTGliL3RyYWNlYmFjay5weQorKysgYi9MaWIvdHJhY2ViYWNrLnB5CkBAIC0xMTksMTUgKzExOSwxNiBAQAogICAgICAgICBzZWVuID0gc2V0KCkKICAgICBzZWVuLmFkZChleGMpCiAgICAgaXRzID0gW10KKyAgICBjb250ZXh0ID0gZXhjLl9fY29udGV4dF9fCiAgICAgY2F1c2UgPSBleGMuX19jYXVzZV9fCiAgICAgaWYgY2F1c2UgaXMgbm90IE5vbmUgYW5kIGNhdXNlIG5vdCBpbiBzZWVuOgotICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNhdXNlLCBOb25lLCBzZWVuKSkKKyAgICAgICAgaXRzLmFwcGVuZChfaXRlcl9jaGFpbihjYXVzZSwgRmFsc2UsIHNlZW4pKQogICAgICAgICBpdHMuYXBwZW5kKFsoX2NhdXNlX21lc3NhZ2UsIE5vbmUpXSkKLSAgICBlbHNlOgotICAgICAgICBjb250ZXh0ID0gZXhjLl9fY29udGV4dF9fCi0gICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNvbnRleHQgbm90IGluIHNlZW46Ci0gICAgICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNvbnRleHQsIE5vbmUsIHNlZW4pKQotICAgICAgICAgICAgaXRzLmFwcGVuZChbKF9jb250ZXh0X21lc3NhZ2UsIE5vbmUpXSkKKyAgICBlbGlmIChjb250ZXh0IGlzIG5vdCBOb25lIGFuZAorICAgICAgICAgIG5vdCBleGMuX19zdXBwcmVzc19jb250ZXh0X18gYW5kCisgICAgICAgICAgY29udGV4dCBub3QgaW4gc2Vlbik6CisgICAgICAgIGl0cy5hcHBlbmQoX2l0ZXJfY2hhaW4oY29udGV4dCwgTm9uZSwgc2VlbikpCisgICAgICAgIGl0cy5hcHBlbmQoWyhfY29udGV4dF9tZXNzYWdlLCBOb25lKV0pCiAgICAgaXRzLmFwcGVuZChbKGV4YywgY3VzdG9tX3RiIG9yIGV4Yy5fX3RyYWNlYmFja19fKV0pCiAgICAgIyBpdGVydG9vbHMuY2hhaW4gaXMgaW4gYW4gZXh0ZW5zaW9uIG1vZHVsZSBhbmQgbWF5IGJlIHVuYXZhaWxhYmxlCiAgICAgZm9yIGl0IGluIGl0czoKZGlmZiAtLWdpdCBhL0xpYi90dXJ0bGUucHkgYi9MaWIvdHVydGxlLnB5CmluZGV4IGFjMGMzMmMuLmE0NDc0MzMgMTAwNjQ0Ci0tLSBhL0xpYi90dXJ0bGUucHkKKysrIGIvTGliL3R1cnRsZS5weQpAQCAtMTA4LDcgKzEwOCw2IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCBtYXRoCiBpbXBvcnQgdGltZQotaW1wb3J0IG9zCiBpbXBvcnQgaW5zcGVjdAogCiBmcm9tIG9zLnBhdGggaW1wb3J0IGlzZmlsZSwgc3BsaXQsIGpvaW4KZGlmZiAtLWdpdCBhL0xpYi90eXBlcy5weSBiL0xpYi90eXBlcy5weQppbmRleCBhYjM1NGQxLi5jZmQwOWVhIDEwMDY0NAotLS0gYS9MaWIvdHlwZXMucHkKKysrIGIvTGliL3R5cGVzLnB5CkBAIC0xMiw2ICsxMiw4IEBACiBGdW5jdGlvblR5cGUgPSB0eXBlKF9mKQogTGFtYmRhVHlwZSA9IHR5cGUobGFtYmRhOiBOb25lKSAgICAgICAgICMgU2FtZSBhcyBGdW5jdGlvblR5cGUKIENvZGVUeXBlID0gdHlwZShfZi5fX2NvZGVfXykKK01hcHBpbmdQcm94eVR5cGUgPSB0eXBlKHR5cGUuX19kaWN0X18pCitTaW1wbGVOYW1lc3BhY2UgPSB0eXBlKHN5cy5pbXBsZW1lbnRhdGlvbikKIAogZGVmIF9nKCk6CiAgICAgeWllbGQgMQpAQCAtMzksMyArNDEsNjEgQEAKIE1lbWJlckRlc2NyaXB0b3JUeXBlID0gdHlwZShGdW5jdGlvblR5cGUuX19nbG9iYWxzX18pCiAKIGRlbCBzeXMsIF9mLCBfZywgX0MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgZm9yIGV4cG9ydAorCisKKyMgUHJvdmlkZSBhIFBFUCAzMTE1IGNvbXBsaWFudCBtZWNoYW5pc20gZm9yIGNsYXNzIGNyZWF0aW9uCitkZWYgbmV3X2NsYXNzKG5hbWUsIGJhc2VzPSgpLCBrd2RzPU5vbmUsIGV4ZWNfYm9keT1Ob25lKToKKyAgICAiIiJDcmVhdGUgYSBjbGFzcyBvYmplY3QgZHluYW1pY2FsbHkgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcy4iIiIKKyAgICBtZXRhLCBucywga3dkcyA9IHByZXBhcmVfY2xhc3MobmFtZSwgYmFzZXMsIGt3ZHMpCisgICAgaWYgZXhlY19ib2R5IGlzIG5vdCBOb25lOgorICAgICAgICBleGVjX2JvZHkobnMpCisgICAgcmV0dXJuIG1ldGEobmFtZSwgYmFzZXMsIG5zLCAqKmt3ZHMpCisKK2RlZiBwcmVwYXJlX2NsYXNzKG5hbWUsIGJhc2VzPSgpLCBrd2RzPU5vbmUpOgorICAgICIiIkNhbGwgdGhlIF9fcHJlcGFyZV9fIG1ldGhvZCBvZiB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzLgorCisgICAgUmV0dXJucyAobWV0YWNsYXNzLCBuYW1lc3BhY2UsIGt3ZHMpIGFzIGEgMy10dXBsZQorCisgICAgKm1ldGFjbGFzcyogaXMgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcworICAgICpuYW1lc3BhY2UqIGlzIHRoZSBwcmVwYXJlZCBjbGFzcyBuYW1lc3BhY2UKKyAgICAqa3dkcyogaXMgYW4gdXBkYXRlZCBjb3B5IG9mIHRoZSBwYXNzZWQgaW4ga3dkcyBhcmd1bWVudCB3aXRoIGFueQorICAgICdtZXRhY2xhc3MnIGVudHJ5IHJlbW92ZWQuIElmIG5vIGt3ZHMgYXJndW1lbnQgaXMgcGFzc2VkIGluLCB0aGlzIHdpbGwKKyAgICBiZSBhbiBlbXB0eSBkaWN0LgorICAgICIiIgorICAgIGlmIGt3ZHMgaXMgTm9uZToKKyAgICAgICAga3dkcyA9IHt9CisgICAgZWxzZToKKyAgICAgICAga3dkcyA9IGRpY3Qoa3dkcykgIyBEb24ndCBhbHRlciB0aGUgcHJvdmlkZWQgbWFwcGluZworICAgIGlmICdtZXRhY2xhc3MnIGluIGt3ZHM6CisgICAgICAgIG1ldGEgPSBrd2RzLnBvcCgnbWV0YWNsYXNzJykKKyAgICBlbHNlOgorICAgICAgICBpZiBiYXNlczoKKyAgICAgICAgICAgIG1ldGEgPSB0eXBlKGJhc2VzWzBdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWV0YSA9IHR5cGUKKyAgICBpZiBpc2luc3RhbmNlKG1ldGEsIHR5cGUpOgorICAgICAgICAjIHdoZW4gbWV0YSBpcyBhIHR5cGUsIHdlIGZpcnN0IGRldGVybWluZSB0aGUgbW9zdC1kZXJpdmVkIG1ldGFjbGFzcworICAgICAgICAjIGluc3RlYWQgb2YgaW52b2tpbmcgdGhlIGluaXRpYWwgY2FuZGlkYXRlIGRpcmVjdGx5CisgICAgICAgIG1ldGEgPSBfY2FsY3VsYXRlX21ldGEobWV0YSwgYmFzZXMpCisgICAgaWYgaGFzYXR0cihtZXRhLCAnX19wcmVwYXJlX18nKToKKyAgICAgICAgbnMgPSBtZXRhLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzLCAqKmt3ZHMpCisgICAgZWxzZToKKyAgICAgICAgbnMgPSB7fQorICAgIHJldHVybiBtZXRhLCBucywga3dkcworCitkZWYgX2NhbGN1bGF0ZV9tZXRhKG1ldGEsIGJhc2VzKToKKyAgICAiIiJDYWxjdWxhdGUgdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MuIiIiCisgICAgd2lubmVyID0gbWV0YQorICAgIGZvciBiYXNlIGluIGJhc2VzOgorICAgICAgICBiYXNlX21ldGEgPSB0eXBlKGJhc2UpCisgICAgICAgIGlmIGlzc3ViY2xhc3Mod2lubmVyLCBiYXNlX21ldGEpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgaXNzdWJjbGFzcyhiYXNlX21ldGEsIHdpbm5lcik6CisgICAgICAgICAgICB3aW5uZXIgPSBiYXNlX21ldGEKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMgZWxzZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtZXRhY2xhc3MgY29uZmxpY3Q6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgbWV0YWNsYXNzIG9mIGEgZGVyaXZlZCBjbGFzcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIChub24tc3RyaWN0KSBzdWJjbGFzcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAib2YgdGhlIG1ldGFjbGFzc2VzIG9mIGFsbCBpdHMgYmFzZXMiKQorICAgIHJldHVybiB3aW5uZXIKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9jYXNlLnB5IGIvTGliL3VuaXR0ZXN0L2Nhc2UucHkKaW5kZXggZTYyN2NjYS4uMjhmMGEyZCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L2Nhc2UucHkKKysrIGIvTGliL3VuaXR0ZXN0L2Nhc2UucHkKQEAgLTksOCArOSw3IEBACiBpbXBvcnQgY29sbGVjdGlvbnMKIAogZnJvbSAuIGltcG9ydCByZXN1bHQKLWZyb20gLnV0aWwgaW1wb3J0IChzdHJjbGFzcywgc2FmZV9yZXByLCBzb3J0ZWRfbGlzdF9kaWZmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgIHVub3JkZXJhYmxlX2xpc3RfZGlmZmVyZW5jZSwgX2NvdW50X2RpZmZfYWxsX3B1cnBvc2UsCitmcm9tIC51dGlsIGltcG9ydCAoc3RyY2xhc3MsIHNhZmVfcmVwciwgX2NvdW50X2RpZmZfYWxsX3B1cnBvc2UsCiAgICAgICAgICAgICAgICAgICAgX2NvdW50X2RpZmZfaGFzaGFibGUpCiAKIF9fdW5pdHRlc3QgPSBUcnVlCkBAIC0xMDQsOSArMTAzLDkgQEAKIGNsYXNzIF9Bc3NlcnRSYWlzZXNCYXNlQ29udGV4dChvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cGVjdGVkLCB0ZXN0X2Nhc2UsIGNhbGxhYmxlX29iaj1Ob25lLAotICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4PU5vbmUpOgogICAgICAgICBzZWxmLmV4cGVjdGVkID0gZXhwZWN0ZWQKLSAgICAgICAgc2VsZi5mYWlsdXJlRXhjZXB0aW9uID0gdGVzdF9jYXNlLmZhaWx1cmVFeGNlcHRpb24KKyAgICAgICAgc2VsZi50ZXN0X2Nhc2UgPSB0ZXN0X2Nhc2UKICAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUgPSBjYWxsYWJsZV9vYmouX19uYW1lX18KQEAgLTExNyw2ICsxMTYsMjQgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZF9yZWdleCwgKGJ5dGVzLCBzdHIpKToKICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gcmUuY29tcGlsZShleHBlY3RlZF9yZWdleCkKICAgICAgICAgc2VsZi5leHBlY3RlZF9yZWdleCA9IGV4cGVjdGVkX3JlZ2V4CisgICAgICAgIHNlbGYubXNnID0gTm9uZQorCisgICAgZGVmIF9yYWlzZUZhaWx1cmUoc2VsZiwgc3RhbmRhcmRNc2cpOgorICAgICAgICBtc2cgPSBzZWxmLnRlc3RfY2FzZS5fZm9ybWF0TWVzc2FnZShzZWxmLm1zZywgc3RhbmRhcmRNc2cpCisgICAgICAgIHJhaXNlIHNlbGYudGVzdF9jYXNlLmZhaWx1cmVFeGNlcHRpb24obXNnKQorCisgICAgZGVmIGhhbmRsZShzZWxmLCBuYW1lLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICBJZiBjYWxsYWJsZV9vYmogaXMgTm9uZSwgYXNzZXJ0UmFpc2VzL1dhcm5zIGlzIGJlaW5nIHVzZWQgYXMgYQorICAgICAgICBjb250ZXh0IG1hbmFnZXIsIHNvIGNoZWNrIGZvciBhICdtc2cnIGt3YXJnIGFuZCByZXR1cm4gc2VsZi4KKyAgICAgICAgSWYgY2FsbGFibGVfb2JqIGlzIG5vdCBOb25lLCBjYWxsIGl0IHBhc3NpbmcgYXJncyBhbmQga3dhcmdzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLm1zZyA9IGt3YXJncy5wb3AoJ21zZycsIE5vbmUpCisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICB3aXRoIHNlbGY6CisgICAgICAgICAgICBjYWxsYWJsZV9vYmooKmFyZ3MsICoqa3dhcmdzKQorCiAKIAogY2xhc3MgX0Fzc2VydFJhaXNlc0NvbnRleHQoX0Fzc2VydFJhaXNlc0Jhc2VDb250ZXh0KToKQEAgLTEzMiwxMSArMTQ5LDEwIEBACiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgZXhjX25hbWUgPSBzdHIoc2VsZi5leHBlY3RlZCkKICAgICAgICAgICAgIGlmIHNlbGYub2JqX25hbWU6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCJ7MH0gbm90IHJhaXNlZCBieSB7MX0iCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZXhjX25hbWUsIHNlbGYub2JqX25hbWUpKQorICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgie30gbm90IHJhaXNlZCBieSB7fSIuZm9ybWF0KGV4Y19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oInswfSBub3QgcmFpc2VkIgotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGV4Y19uYW1lKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoInt9IG5vdCByYWlzZWQiLmZvcm1hdChleGNfbmFtZSkpCiAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGV4Y190eXBlLCBzZWxmLmV4cGVjdGVkKToKICAgICAgICAgICAgICMgbGV0IHVuZXhwZWN0ZWQgZXhjZXB0aW9ucyBwYXNzIHRocm91Z2gKICAgICAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTQ3LDggKzE2Myw4IEBACiAKICAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSBzZWxmLmV4cGVjdGVkX3JlZ2V4CiAgICAgICAgIGlmIG5vdCBleHBlY3RlZF9yZWdleC5zZWFyY2goc3RyKGV4Y192YWx1ZSkpOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCciJXMiIGRvZXMgbm90IG1hdGNoICIlcyInICUKLSAgICAgICAgICAgICAgICAgICAgIChleHBlY3RlZF9yZWdleC5wYXR0ZXJuLCBzdHIoZXhjX3ZhbHVlKSkpCisgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoJyJ7fSIgZG9lcyBub3QgbWF0Y2ggInt9IicuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwgc3RyKGV4Y192YWx1ZSkpKQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAKQEAgLTE5MiwxNCArMjA4LDEzIEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgIyBOb3cgd2Ugc2ltcGx5IHRyeSB0byBjaG9vc2UgYSBoZWxwZnVsIGZhaWx1cmUgbWVzc2FnZQogICAgICAgICBpZiBmaXJzdF9tYXRjaGluZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbignIiVzIiBkb2VzIG5vdCBtYXRjaCAiJXMiJyAlCi0gICAgICAgICAgICAgICAgICAgICAoc2VsZi5leHBlY3RlZF9yZWdleC5wYXR0ZXJuLCBzdHIoZmlyc3RfbWF0Y2hpbmcpKSkKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgnInt9IiBkb2VzIG5vdCBtYXRjaCAie30iJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sIHN0cihmaXJzdF9tYXRjaGluZykpKQogICAgICAgICBpZiBzZWxmLm9ial9uYW1lOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCJ7MH0gbm90IHRyaWdnZXJlZCBieSB7MX0iCi0gICAgICAgICAgICAgICAgLmZvcm1hdChleGNfbmFtZSwgc2VsZi5vYmpfbmFtZSkpCisgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoInt9IG5vdCB0cmlnZ2VyZWQgYnkge30iLmZvcm1hdChleGNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCJ7MH0gbm90IHRyaWdnZXJlZCIKLSAgICAgICAgICAgICAgICAuZm9ybWF0KGV4Y19uYW1lKSkKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgie30gbm90IHRyaWdnZXJlZCIuZm9ybWF0KGV4Y19uYW1lKSkKIAogCiBjbGFzcyBUZXN0Q2FzZShvYmplY3QpOgpAQCAtNDUyLDcgKzQ2Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUZXN0UmVzdWx0IGhhcyBubyBhZGRFeHBlY3RlZEZhaWx1cmUgbWV0aG9kLCByZXBvcnRpbmcgYXMgcGFzc2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYWRkU3VjY2VzcyhzZWxmKQotCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZXN1bHQuc3RvcFRlc3Qoc2VsZikKICAgICAgICAgICAgIGlmIG9yaWdfcmVzdWx0IGlzIE5vbmU6CkBAIC01MjYsNyArNTQxLDYgQEAKICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgIHJldHVybiAgJyVzIDogJXMnICUgKHNhZmVfcmVwcihzdGFuZGFyZE1zZyksIHNhZmVfcmVwcihtc2cpKQogCi0KICAgICBkZWYgYXNzZXJ0UmFpc2VzKHNlbGYsIGV4Y0NsYXNzLCBjYWxsYWJsZU9iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJGYWlsIHVubGVzcyBhbiBleGNlcHRpb24gb2YgY2xhc3MgZXhjQ2xhc3MgaXMgdGhyb3duCiAgICAgICAgICAgIGJ5IGNhbGxhYmxlT2JqIHdoZW4gaW52b2tlZCB3aXRoIGFyZ3VtZW50cyBhcmdzIGFuZCBrZXl3b3JkCkBAIC01NDEsNiArNTU1LDkgQEAKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFNvbWVFeGNlcHRpb24pOgogICAgICAgICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogCisgICAgICAgICAgIEFuIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgJ21zZycgY2FuIGJlIHByb3ZpZGVkIHdoZW4gYXNzZXJ0UmFpc2VzCisgICAgICAgICAgIGlzIHVzZWQgYXMgYSBjb250ZXh0IG9iamVjdC4KKwogICAgICAgICAgICBUaGUgY29udGV4dCBtYW5hZ2VyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBleGNlcHRpb24gYXMKICAgICAgICAgICAgdGhlICdleGNlcHRpb24nIGF0dHJpYnV0ZS4gVGhpcyBhbGxvd3MgeW91IHRvIGluc3BlY3QgdGhlCiAgICAgICAgICAgIGV4Y2VwdGlvbiBhZnRlciB0aGUgYXNzZXJ0aW9uOjoKQEAgLTU1MSwyNSArNTY4LDI1IEBACiAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV9leGNlcHRpb24uZXJyb3JfY29kZSwgMykKICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0UmFpc2VzQ29udGV4dChleGNDbGFzcywgc2VsZiwgY2FsbGFibGVPYmopCi0gICAgICAgIGlmIGNhbGxhYmxlT2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dAotICAgICAgICB3aXRoIGNvbnRleHQ6Ci0gICAgICAgICAgICBjYWxsYWJsZU9iaigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0UmFpc2VzJywgY2FsbGFibGVPYmosIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBhc3NlcnRXYXJucyhzZWxmLCBleHBlY3RlZF93YXJuaW5nLCBjYWxsYWJsZV9vYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiRmFpbCB1bmxlc3MgYSB3YXJuaW5nIG9mIGNsYXNzIHdhcm5DbGFzcyBpcyB0cmlnZ2VyZWQKLSAgICAgICAgICAgYnkgY2FsbGFibGVPYmogd2hlbiBpbnZva2VkIHdpdGggYXJndW1lbnRzIGFyZ3MgYW5kIGtleXdvcmQKKyAgICAgICAgICAgYnkgY2FsbGFibGVfb2JqIHdoZW4gaW52b2tlZCB3aXRoIGFyZ3VtZW50cyBhcmdzIGFuZCBrZXl3b3JkCiAgICAgICAgICAgIGFyZ3VtZW50cyBrd2FyZ3MuICBJZiBhIGRpZmZlcmVudCB0eXBlIG9mIHdhcm5pbmcgaXMKICAgICAgICAgICAgdHJpZ2dlcmVkLCBpdCB3aWxsIG5vdCBiZSBoYW5kbGVkOiBkZXBlbmRpbmcgb24gdGhlIG90aGVyCiAgICAgICAgICAgIHdhcm5pbmcgZmlsdGVyaW5nIHJ1bGVzIGluIGVmZmVjdCwgaXQgbWlnaHQgYmUgc2lsZW5jZWQsIHByaW50ZWQKICAgICAgICAgICAgb3V0LCBvciByYWlzZWQgYXMgYW4gZXhjZXB0aW9uLgogCi0gICAgICAgICAgIElmIGNhbGxlZCB3aXRoIGNhbGxhYmxlT2JqIG9taXR0ZWQgb3IgTm9uZSwgd2lsbCByZXR1cm4gYQorICAgICAgICAgICBJZiBjYWxsZWQgd2l0aCBjYWxsYWJsZV9vYmogb21pdHRlZCBvciBOb25lLCB3aWxsIHJldHVybiBhCiAgICAgICAgICAgIGNvbnRleHQgb2JqZWN0IHVzZWQgbGlrZSB0aGlzOjoKIAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhTb21lV2FybmluZyk6CiAgICAgICAgICAgICAgICAgICAgIGRvX3NvbWV0aGluZygpCiAKKyAgICAgICAgICAgQW4gb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAnbXNnJyBjYW4gYmUgcHJvdmlkZWQgd2hlbiBhc3NlcnRXYXJucworICAgICAgICAgICBpcyB1c2VkIGFzIGEgY29udGV4dCBvYmplY3QuCisKICAgICAgICAgICAgVGhlIGNvbnRleHQgbWFuYWdlciBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgZmlyc3QgbWF0Y2hpbmcKICAgICAgICAgICAgd2FybmluZyBhcyB0aGUgJ3dhcm5pbmcnIGF0dHJpYnV0ZTsgc2ltaWxhcmx5LCB0aGUgJ2ZpbGVuYW1lJwogICAgICAgICAgICBhbmQgJ2xpbmVubycgYXR0cmlidXRlcyBnaXZlIHlvdSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGluZQpAQCAtNTgyLDEwICs1OTksNyBAQAogICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGVfd2FybmluZy5zb21lX2F0dHJpYnV0ZSwgMTQ3KQogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRXYXJuc0NvbnRleHQoZXhwZWN0ZWRfd2FybmluZywgc2VsZiwgY2FsbGFibGVfb2JqKQotICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ci0gICAgICAgIHdpdGggY29udGV4dDoKLSAgICAgICAgICAgIGNhbGxhYmxlX29iaigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0V2FybnMnLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBfZ2V0QXNzZXJ0RXF1YWxpdHlGdW5jKHNlbGYsIGZpcnN0LCBzZWNvbmQpOgogICAgICAgICAiIiJHZXQgYSBkZXRhaWxlZCBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciB0aGUgdHlwZXMgb2YgdGhlIHR3byBhcmdzLgpAQCAtOTUxLDQ4ICs5NjUsNiBAQAogCiAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQogCi0gICAgZGVmIGFzc2VydFNhbWVFbGVtZW50cyhzZWxmLCBleHBlY3RlZF9zZXEsIGFjdHVhbF9zZXEsIG1zZz1Ob25lKToKLSAgICAgICAgIiIiQW4gdW5vcmRlcmVkIHNlcXVlbmNlIHNwZWNpZmljIGNvbXBhcmlzb24uCi0KLSAgICAgICAgUmFpc2VzIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBsaXN0aW5nIHdoaWNoIGVsZW1lbnRzIG9mIGV4cGVjdGVkX3NlcQotICAgICAgICBhcmUgbWlzc2luZyBmcm9tIGFjdHVhbF9zZXEgYW5kIHZpY2UgdmVyc2EgaWYgYW55LgotCi0gICAgICAgIER1cGxpY2F0ZSBlbGVtZW50cyBhcmUgaWdub3JlZCB3aGVuIGNvbXBhcmluZyAqZXhwZWN0ZWRfc2VxKiBhbmQKLSAgICAgICAgKmFjdHVhbF9zZXEqLiBJdCBpcyB0aGUgZXF1aXZhbGVudCBvZiBgYGFzc2VydEVxdWFsKHNldChleHBlY3RlZCksCi0gICAgICAgIHNldChhY3R1YWwpKWBgIGJ1dCBpdCB3b3JrcyB3aXRoIHNlcXVlbmNlcyBvZiB1bmhhc2hhYmxlIG9iamVjdHMgYXMKLSAgICAgICAgd2VsbC4KLSAgICAgICAgIiIiCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ2Fzc2VydFNhbWVFbGVtZW50cyBpcyBkZXByZWNhdGVkJywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGV4cGVjdGVkID0gc2V0KGV4cGVjdGVkX3NlcSkKLSAgICAgICAgICAgIGFjdHVhbCA9IHNldChhY3R1YWxfc2VxKQotICAgICAgICAgICAgbWlzc2luZyA9IHNvcnRlZChleHBlY3RlZC5kaWZmZXJlbmNlKGFjdHVhbCkpCi0gICAgICAgICAgICB1bmV4cGVjdGVkID0gc29ydGVkKGFjdHVhbC5kaWZmZXJlbmNlKGV4cGVjdGVkKSkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgICMgRmFsbCBiYWNrIHRvIHNsb3dlciBsaXN0LWNvbXBhcmUgaWYgYW55IG9mIHRoZSBvYmplY3RzIGFyZQotICAgICAgICAgICAgIyBub3QgaGFzaGFibGUuCi0gICAgICAgICAgICBleHBlY3RlZCA9IGxpc3QoZXhwZWN0ZWRfc2VxKQotICAgICAgICAgICAgYWN0dWFsID0gbGlzdChhY3R1YWxfc2VxKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGV4cGVjdGVkLnNvcnQoKQotICAgICAgICAgICAgICAgIGFjdHVhbC5zb3J0KCkKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbWlzc2luZywgdW5leHBlY3RlZCA9IHVub3JkZXJhYmxlX2xpc3RfZGlmZmVyZW5jZShleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWlzc2luZywgdW5leHBlY3RlZCA9IHNvcnRlZF9saXN0X2RpZmZlcmVuY2UoZXhwZWN0ZWQsIGFjdHVhbCkKLSAgICAgICAgZXJyb3JzID0gW10KLSAgICAgICAgaWYgbWlzc2luZzoKLSAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoJ0V4cGVjdGVkLCBidXQgbWlzc2luZzpcbiAgICAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlX3JlcHIobWlzc2luZykpCi0gICAgICAgIGlmIHVuZXhwZWN0ZWQ6Ci0gICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCdVbmV4cGVjdGVkLCBidXQgcHJlc2VudDpcbiAgICAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlX3JlcHIodW5leHBlY3RlZCkpCi0gICAgICAgIGlmIGVycm9yczoKLSAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJ1xuJy5qb2luKGVycm9ycykKLSAgICAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQotCiAKICAgICBkZWYgYXNzZXJ0Q291bnRFcXVhbChzZWxmLCBmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSk6CiAgICAgICAgICIiIkFuIHVub3JkZXJlZCBzZXF1ZW5jZSBjb21wYXJpc29uIGFzc2VydGluZyB0aGF0IHRoZSBzYW1lIGVsZW1lbnRzLApAQCAtMTAzNyw4ICsxMDA5LDggQEAKICAgICAgICAgICAgIGlmIChsZW4oZmlyc3QpID4gc2VsZi5fZGlmZlRocmVzaG9sZCBvcgogICAgICAgICAgICAgICAgIGxlbihzZWNvbmQpID4gc2VsZi5fZGlmZlRocmVzaG9sZCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fYmFzZUFzc2VydEVxdWFsKGZpcnN0LCBzZWNvbmQsIG1zZykKLSAgICAgICAgICAgIGZpcnN0bGluZXMgPSBmaXJzdC5zcGxpdGxpbmVzKFRydWUpCi0gICAgICAgICAgICBzZWNvbmRsaW5lcyA9IHNlY29uZC5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICBmaXJzdGxpbmVzID0gZmlyc3Quc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQorICAgICAgICAgICAgc2Vjb25kbGluZXMgPSBzZWNvbmQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgaWYgbGVuKGZpcnN0bGluZXMpID09IDEgYW5kIGZpcnN0LnN0cmlwKCdcclxuJykgPT0gZmlyc3Q6CiAgICAgICAgICAgICAgICAgZmlyc3RsaW5lcyA9IFtmaXJzdCArICdcbiddCiAgICAgICAgICAgICAgICAgc2Vjb25kbGluZXMgPSBbc2Vjb25kICsgJ1xuJ10KQEAgLTExMDYsMTUgKzEwNzgsMTUgQEAKICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4OiBSZWdleCAocmUgcGF0dGVybiBvYmplY3Qgb3Igc3RyaW5nKSBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgICB0byBiZSBmb3VuZCBpbiBlcnJvciBtZXNzYWdlLgogICAgICAgICAgICAgY2FsbGFibGVfb2JqOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQuCisgICAgICAgICAgICBtc2c6IE9wdGlvbmFsIG1lc3NhZ2UgdXNlZCBpbiBjYXNlIG9mIGZhaWx1cmUuIENhbiBvbmx5IGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBhc3NlcnRSYWlzZXNSZWdleCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogICAgICAgICAgICAgYXJnczogRXh0cmEgYXJncy4KICAgICAgICAgICAgIGt3YXJnczogRXh0cmEga3dhcmdzLgogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRSYWlzZXNDb250ZXh0KGV4cGVjdGVkX2V4Y2VwdGlvbiwgc2VsZiwgY2FsbGFibGVfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgpCi0gICAgICAgIGlmIGNhbGxhYmxlX29iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLSAgICAgICAgd2l0aCBjb250ZXh0OgotICAgICAgICAgICAgY2FsbGFibGVfb2JqKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFJhaXNlc1JlZ2V4JywgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpCiAKICAgICBkZWYgYXNzZXJ0V2FybnNSZWdleChzZWxmLCBleHBlY3RlZF93YXJuaW5nLCBleHBlY3RlZF9yZWdleCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZV9vYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKQEAgLTExMjgsMTUgKzExMDAsMTQgQEAKICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4OiBSZWdleCAocmUgcGF0dGVybiBvYmplY3Qgb3Igc3RyaW5nKSBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgICB0byBiZSBmb3VuZCBpbiBlcnJvciBtZXNzYWdlLgogICAgICAgICAgICAgY2FsbGFibGVfb2JqOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQuCisgICAgICAgICAgICBtc2c6IE9wdGlvbmFsIG1lc3NhZ2UgdXNlZCBpbiBjYXNlIG9mIGZhaWx1cmUuIENhbiBvbmx5IGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBhc3NlcnRXYXJuc1JlZ2V4IGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAgICAgICAgICAgICBhcmdzOiBFeHRyYSBhcmdzLgogICAgICAgICAgICAga3dhcmdzOiBFeHRyYSBrd2FyZ3MuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFdhcm5zQ29udGV4dChleHBlY3RlZF93YXJuaW5nLCBzZWxmLCBjYWxsYWJsZV9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4KQotICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ci0gICAgICAgIHdpdGggY29udGV4dDoKLSAgICAgICAgICAgIGNhbGxhYmxlX29iaigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0V2FybnNSZWdleCcsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKQogCiAgICAgZGVmIGFzc2VydFJlZ2V4KHNlbGYsIHRleHQsIGV4cGVjdGVkX3JlZ2V4LCBtc2c9Tm9uZSk6CiAgICAgICAgICIiIkZhaWwgdGhlIHRlc3QgdW5sZXNzIHRoZSB0ZXh0IG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIiIKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9tYWluLnB5IGIvTGliL3VuaXR0ZXN0L21haW4ucHkKaW5kZXggNTVkNGU0Yi4uYTI1YTJmOCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L21haW4ucHkKKysrIGIvTGliL3VuaXR0ZXN0L21haW4ucHkKQEAgLTEsOCArMSw4IEBACiAiIiJVbml0dGVzdCBtYWluIHByb2dyYW0iIiIKIAogaW1wb3J0IHN5cworaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKLWltcG9ydCB0eXBlcwogCiBmcm9tIC4gaW1wb3J0IGxvYWRlciwgcnVubmVyCiBmcm9tIC5zaWduYWxzIGltcG9ydCBpbnN0YWxsSGFuZGxlcgpAQCAtNzcsNiArNzcsNyBAQAogZGVmIF9jb252ZXJ0X25hbWVzKG5hbWVzKToKICAgICByZXR1cm4gW19jb252ZXJ0X25hbWUobmFtZSkgZm9yIG5hbWUgaW4gbmFtZXNdCiAKKwogY2xhc3MgVGVzdFByb2dyYW0ob2JqZWN0KToKICAgICAiIiJBIGNvbW1hbmQtbGluZSBwcm9ncmFtIHRoYXQgcnVucyBhIHNldCBvZiB0ZXN0czsgdGhpcyBpcyBwcmltYXJpbHkKICAgICAgICBmb3IgbWFraW5nIHRlc3QgbW9kdWxlcyBjb252ZW5pZW50bHkgZXhlY3V0YWJsZS4KQEAgLTE0MywzMyArMTQ0LDkgQEAKICAgICAgICAgICAgIHNlbGYuX2RvX2Rpc2NvdmVyeShhcmd2WzI6XSkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGltcG9ydCBnZXRvcHQKLSAgICAgICAgbG9uZ19vcHRzID0gWydoZWxwJywgJ3ZlcmJvc2UnLCAncXVpZXQnLCAnZmFpbGZhc3QnLCAnY2F0Y2gnLCAnYnVmZmVyJ10KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3B0aW9ucywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJndlsxOl0sICdoSHZxZmNiJywgbG9uZ19vcHRzKQotICAgICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKLSAgICAgICAgICAgIHNlbGYudXNhZ2VFeGl0KG1zZykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGZvciBvcHQsIHZhbHVlIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBpZiBvcHQgaW4gKCctaCcsJy1IJywnLS1oZWxwJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi51c2FnZUV4aXQoKQotICAgICAgICAgICAgaWYgb3B0IGluICgnLXEnLCctLXF1aWV0Jyk6Ci0gICAgICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSAwCi0gICAgICAgICAgICBpZiBvcHQgaW4gKCctdicsJy0tdmVyYm9zZScpOgotICAgICAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gMgotICAgICAgICAgICAgaWYgb3B0IGluICgnLWYnLCctLWZhaWxmYXN0Jyk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5mYWlsZmFzdCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWxmYXN0ID0gVHJ1ZQotICAgICAgICAgICAgICAgICMgU2hvdWxkIHRoaXMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIC1mIGlzIG5vdCB2YWxpZD8KLSAgICAgICAgICAgIGlmIG9wdCBpbiAoJy1jJywnLS1jYXRjaCcpOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuY2F0Y2hicmVhayBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmNhdGNoYnJlYWsgPSBUcnVlCi0gICAgICAgICAgICAgICAgIyBTaG91bGQgdGhpcyByYWlzZSBhbiBleGNlcHRpb24gaWYgLWMgaXMgbm90IHZhbGlkPwotICAgICAgICAgICAgaWYgb3B0IGluICgnLWInLCctLWJ1ZmZlcicpOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuYnVmZmVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gVHJ1ZQotICAgICAgICAgICAgICAgICMgU2hvdWxkIHRoaXMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIC1iIGlzIG5vdCB2YWxpZD8KKyAgICAgICAgcGFyc2VyID0gc2VsZi5fZ2V0T3B0UGFyc2VyKCkKKyAgICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3ZbMTpdKQorICAgICAgICBzZWxmLl9zZXRBdHRyaWJ1dGVzRnJvbU9wdGlvbnMob3B0aW9ucykKIAogICAgICAgICBpZiBsZW4oYXJncykgPT0gMCBhbmQgc2VsZi5tb2R1bGUgaXMgTm9uZToKICAgICAgICAgICAgICMgdGhpcyBhbGxvd3MgInB5dGhvbiAtbSB1bml0dGVzdCAtdiIgdG8gc3RpbGwgd29yayBmb3IKQEAgLTE5NywxNCArMTc0LDE0IEBACiAgICAgICAgICAgICBzZWxmLnRlc3QgPSBzZWxmLnRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKHNlbGYudGVzdE5hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZSkKIAotICAgIGRlZiBfZG9fZGlzY292ZXJ5KHNlbGYsIGFyZ3YsIExvYWRlcj1sb2FkZXIuVGVzdExvYWRlcik6Ci0gICAgICAgICMgaGFuZGxlIGNvbW1hbmQgbGluZSBhcmdzIGZvciB0ZXN0IGRpc2NvdmVyeQotICAgICAgICBzZWxmLnByb2dOYW1lID0gJyVzIGRpc2NvdmVyJyAlIHNlbGYucHJvZ05hbWUKLSAgICAgICAgaW1wb3J0IG9wdHBhcnNlCisgICAgZGVmIF9nZXRPcHRQYXJzZXIoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCiAgICAgICAgIHBhcnNlci5wcm9nID0gc2VsZi5wcm9nTmFtZQogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXYnLCAnLS12ZXJib3NlJywgZGVzdD0ndmVyYm9zZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1ZlcmJvc2Ugb3V0cHV0JywgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1xJywgJy0tcXVpZXQnLCBkZXN0PSdxdWlldCcsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1F1aWV0IG91dHB1dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisKICAgICAgICAgaWYgc2VsZi5mYWlsZmFzdCAhPSBGYWxzZToKICAgICAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctZicsICctLWZhaWxmYXN0JywgZGVzdD0nZmFpbGZhc3QnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3RvcCBvbiBmaXJzdCBmYWlsIG9yIGVycm9yJywKQEAgLTIxNywyMCArMTk0LDkgQEAKICAgICAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctYicsICctLWJ1ZmZlcicsIGRlc3Q9J2J1ZmZlcicsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdCdWZmZXIgc3Rkb3V0IGFuZCBzdGRlcnIgZHVyaW5nIHRlc3RzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXN0YXJ0LWRpcmVjdG9yeScsIGRlc3Q9J3N0YXJ0JywgZGVmYXVsdD0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRpcmVjdG9yeSB0byBzdGFydCBkaXNjb3ZlcnkgKCcuJyBkZWZhdWx0KSIpCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcCcsICctLXBhdHRlcm4nLCBkZXN0PSdwYXR0ZXJuJywgZGVmYXVsdD0ndGVzdCoucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXR0ZXJuIHRvIG1hdGNoIHRlc3RzICgndGVzdCoucHknIGRlZmF1bHQpIikKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy10JywgJy0tdG9wLWxldmVsLWRpcmVjdG9yeScsIGRlc3Q9J3RvcCcsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVG9wIGxldmVsIGRpcmVjdG9yeSBvZiBwcm9qZWN0IChkZWZhdWx0cyB0byBzdGFydCBkaXJlY3RvcnkpJykKKyAgICAgICAgcmV0dXJuIHBhcnNlcgogCi0gICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQotICAgICAgICBpZiBsZW4oYXJncykgPiAzOgotICAgICAgICAgICAgc2VsZi51c2FnZUV4aXQoKQotCi0gICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiB6aXAoKCdzdGFydCcsICdwYXR0ZXJuJywgJ3RvcCcpLCBhcmdzKToKLSAgICAgICAgICAgIHNldGF0dHIob3B0aW9ucywgbmFtZSwgdmFsdWUpCi0KKyAgICBkZWYgX3NldEF0dHJpYnV0ZXNGcm9tT3B0aW9ucyhzZWxmLCBvcHRpb25zKToKICAgICAgICAgIyBvbmx5IHNldCBvcHRpb25zIGZyb20gdGhlIHBhcnNpbmcgaGVyZQogICAgICAgICAjIGlmIHRoZXkgd2VyZW4ndCBzZXQgZXhwbGljaXRseSBpbiB0aGUgY29uc3RydWN0b3IKICAgICAgICAgaWYgc2VsZi5mYWlsZmFzdCBpcyBOb25lOgpAQCAtMjQyLDYgKzIwOCwzMSBAQAogCiAgICAgICAgIGlmIG9wdGlvbnMudmVyYm9zZToKICAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gMgorICAgICAgICBlbGlmIG9wdGlvbnMucXVpZXQ6CisgICAgICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IDAKKworICAgIGRlZiBfYWRkRGlzY292ZXJ5T3B0aW9ucyhzZWxmLCBwYXJzZXIpOgorICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXMnLCAnLS1zdGFydC1kaXJlY3RvcnknLCBkZXN0PSdzdGFydCcsIGRlZmF1bHQ9Jy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXJlY3RvcnkgdG8gc3RhcnQgZGlzY292ZXJ5ICgnLicgZGVmYXVsdCkiKQorICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1wYXR0ZXJuJywgZGVzdD0ncGF0dGVybicsIGRlZmF1bHQ9J3Rlc3QqLnB5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0dGVybiB0byBtYXRjaCB0ZXN0cyAoJ3Rlc3QqLnB5JyBkZWZhdWx0KSIpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsICctLXRvcC1sZXZlbC1kaXJlY3RvcnknLCBkZXN0PSd0b3AnLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RvcCBsZXZlbCBkaXJlY3Rvcnkgb2YgcHJvamVjdCAoZGVmYXVsdHMgdG8gc3RhcnQgZGlyZWN0b3J5KScpCisKKyAgICBkZWYgX2RvX2Rpc2NvdmVyeShzZWxmLCBhcmd2LCBMb2FkZXI9bG9hZGVyLlRlc3RMb2FkZXIpOgorICAgICAgICAjIGhhbmRsZSBjb21tYW5kIGxpbmUgYXJncyBmb3IgdGVzdCBkaXNjb3ZlcnkKKyAgICAgICAgc2VsZi5wcm9nTmFtZSA9ICclcyBkaXNjb3ZlcicgJSBzZWxmLnByb2dOYW1lCisgICAgICAgIHBhcnNlciA9IHNlbGYuX2dldE9wdFBhcnNlcigpCisgICAgICAgIHNlbGYuX2FkZERpc2NvdmVyeU9wdGlvbnMocGFyc2VyKQorCisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQorICAgICAgICBpZiBsZW4oYXJncykgPiAzOgorICAgICAgICAgICAgc2VsZi51c2FnZUV4aXQoKQorCisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiB6aXAoKCdzdGFydCcsICdwYXR0ZXJuJywgJ3RvcCcpLCBhcmdzKToKKyAgICAgICAgICAgIHNldGF0dHIob3B0aW9ucywgbmFtZSwgdmFsdWUpCisKKyAgICAgICAgc2VsZi5fc2V0QXR0cmlidXRlc0Zyb21PcHRpb25zKG9wdGlvbnMpCiAKICAgICAgICAgc3RhcnRfZGlyID0gb3B0aW9ucy5zdGFydAogICAgICAgICBwYXR0ZXJuID0gb3B0aW9ucy5wYXR0ZXJuCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbW9jay5weSBiL0xpYi91bml0dGVzdC9tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1NTcwYWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvbW9jay5weQpAQCAtMCwwICsxLDIyMTEgQEAKKyMgbW9jay5weQorIyBUZXN0IHRvb2xzIGZvciBtb2NraW5nIGFuZCBwYXRjaGluZy4KKyMgTWFpbnRhaW5lZCBieSBNaWNoYWVsIEZvb3JkCisjIEJhY2twb3J0IGZvciBvdGhlciB2ZXJzaW9ucyBvZiBQeXRob24gYXZhaWxhYmxlIGZyb20KKyMgaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL21vY2sKKworX19hbGxfXyA9ICgKKyAgICAnTW9jaycsCisgICAgJ01hZ2ljTW9jaycsCisgICAgJ3BhdGNoJywKKyAgICAnc2VudGluZWwnLAorICAgICdERUZBVUxUJywKKyAgICAnQU5ZJywKKyAgICAnY2FsbCcsCisgICAgJ2NyZWF0ZV9hdXRvc3BlYycsCisgICAgJ0ZJTFRFUl9ESVInLAorICAgICdOb25DYWxsYWJsZU1vY2snLAorICAgICdOb25DYWxsYWJsZU1hZ2ljTW9jaycsCisgICAgJ21vY2tfb3BlbicsCisgICAgJ1Byb3BlcnR5TW9jaycsCispCisKKworX192ZXJzaW9uX18gPSAnMS4wJworCisKK2ltcG9ydCBpbnNwZWN0CitpbXBvcnQgcHByaW50CitpbXBvcnQgc3lzCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworCitCYXNlRXhjZXB0aW9ucyA9IChCYXNlRXhjZXB0aW9uLCkKK2lmICdqYXZhJyBpbiBzeXMucGxhdGZvcm06CisgICAgIyBqeXRob24KKyAgICBpbXBvcnQgamF2YQorICAgIEJhc2VFeGNlcHRpb25zID0gKEJhc2VFeGNlcHRpb24sIGphdmEubGFuZy5UaHJvd2FibGUpCisKKworRklMVEVSX0RJUiA9IFRydWUKKworIyBXb3JrYXJvdW5kIGZvciBpc3N1ZSAjMTIzNzAKKyMgV2l0aG91dCB0aGlzLCB0aGUgX19jbGFzc19fIHByb3BlcnRpZXMgd291bGRuJ3QgYmUgc2V0IGNvcnJlY3RseQorX3NhZmVfc3VwZXIgPSBzdXBlcgorCitkZWYgX2lzX2luc3RhbmNlX21vY2sob2JqKToKKyAgICAjIGNhbid0IHVzZSBpc2luc3RhbmNlIG9uIE1vY2sgb2JqZWN0cyBiZWNhdXNlIHRoZXkgb3ZlcnJpZGUgX19jbGFzc19fCisgICAgIyBUaGUgYmFzZSBjbGFzcyBmb3IgYWxsIG1vY2tzIGlzIE5vbkNhbGxhYmxlTW9jaworICAgIHJldHVybiBpc3N1YmNsYXNzKHR5cGUob2JqKSwgTm9uQ2FsbGFibGVNb2NrKQorCisKK2RlZiBfaXNfZXhjZXB0aW9uKG9iaik6CisgICAgcmV0dXJuICgKKyAgICAgICAgaXNpbnN0YW5jZShvYmosIEJhc2VFeGNlcHRpb25zKSBvcgorICAgICAgICBpc2luc3RhbmNlKG9iaiwgdHlwZSkgYW5kIGlzc3ViY2xhc3Mob2JqLCBCYXNlRXhjZXB0aW9ucykKKyAgICApCisKKworY2xhc3MgX3Nsb3R0ZWQob2JqZWN0KToKKyAgICBfX3Nsb3RzX18gPSBbJ2EnXQorCisKK0Rlc2NyaXB0b3JUeXBlcyA9ICgKKyAgICB0eXBlKF9zbG90dGVkLmEpLAorICAgIHByb3BlcnR5LAorKQorCisKK2RlZiBfZ2V0c2lnbmF0dXJlKGZ1bmMsIHNraXBmaXJzdCwgaW5zdGFuY2U9RmFsc2UpOgorICAgIGlmIGlzaW5zdGFuY2UoZnVuYywgdHlwZSkgYW5kIG5vdCBpbnN0YW5jZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnVuYyA9IGZ1bmMuX19pbml0X18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNraXBmaXJzdCA9IFRydWUKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGZ1bmMsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAjIGZvciBjbGFzc2VzIHdoZXJlIGluc3RhbmNlIGlzIFRydWUgd2UgZW5kIHVwIGhlcmUgdG9vCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZ1bmMgPSBmdW5jLl9fY2FsbF9fCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgdHJ5OgorICAgICAgICBhcmdzcGVjID0gaW5zcGVjdC5nZXRmdWxsYXJnc3BlYyhmdW5jKQorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICMgQyBmdW5jdGlvbiAvIG1ldGhvZCwgcG9zc2libHkgaW5oZXJpdGVkIG9iamVjdCgpLl9faW5pdF9fCisgICAgICAgIHJldHVybgorCisgICAgcmVnYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHksIGt3b25seWRlZiwgYW5uID0gYXJnc3BlYworCisKKyAgICAjIGluc3RhbmNlIG1ldGhvZHMgYW5kIGNsYXNzbWV0aG9kcyBuZWVkIHRvIGxvc2UgdGhlIHNlbGYgYXJndW1lbnQKKyAgICBpZiBnZXRhdHRyKGZ1bmMsICdfX3NlbGZfXycsIE5vbmUpIGlzIG5vdCBOb25lOgorICAgICAgICByZWdhcmdzID0gcmVnYXJnc1sxOl0KKyAgICBpZiBza2lwZmlyc3Q6CisgICAgICAgICMgdGhpcyBjb25kaXRpb24gYW5kIHRoZSBhYm92ZSBvbmUgYXJlIG5ldmVyIGJvdGggVHJ1ZSAtIHdoeT8KKyAgICAgICAgcmVnYXJncyA9IHJlZ2FyZ3NbMTpdCisKKyAgICBzaWduYXR1cmUgPSBpbnNwZWN0LmZvcm1hdGFyZ3NwZWMoCisgICAgICAgIHJlZ2FyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywKKyAgICAgICAga3dvbmx5LCBrd29ubHlkZWYsIGFubiwgZm9ybWF0dmFsdWU9bGFtYmRhIHZhbHVlOiAiIikKKyAgICByZXR1cm4gc2lnbmF0dXJlWzE6LTFdLCBmdW5jCisKKworZGVmIF9jaGVja19zaWduYXR1cmUoZnVuYywgbW9jaywgc2tpcGZpcnN0LCBpbnN0YW5jZT1GYWxzZSk6CisgICAgaWYgbm90IF9jYWxsYWJsZShmdW5jKToKKyAgICAgICAgcmV0dXJuCisKKyAgICByZXN1bHQgPSBfZ2V0c2lnbmF0dXJlKGZ1bmMsIHNraXBmaXJzdCwgaW5zdGFuY2UpCisgICAgaWYgcmVzdWx0IGlzIE5vbmU6CisgICAgICAgIHJldHVybgorICAgIHNpZ25hdHVyZSwgZnVuYyA9IHJlc3VsdAorCisgICAgIyBjYW4ndCB1c2Ugc2VsZiBiZWNhdXNlICJzZWxmIiBpcyBjb21tb24gYXMgYW4gYXJndW1lbnQgbmFtZQorICAgICMgdW5mb3J0dW5hdGVseSBldmVuIG5vdCBpbiB0aGUgZmlyc3QgcGxhY2UKKyAgICBzcmMgPSAibGFtYmRhIF9tb2NrX3NlbGYsICVzOiBOb25lIiAlIHNpZ25hdHVyZQorICAgIGNoZWNrc2lnID0gZXZhbChzcmMsIHt9KQorICAgIF9jb3B5X2Z1bmNfZGV0YWlscyhmdW5jLCBjaGVja3NpZykKKyAgICB0eXBlKG1vY2spLl9tb2NrX2NoZWNrX3NpZyA9IGNoZWNrc2lnCisKKworZGVmIF9jb3B5X2Z1bmNfZGV0YWlscyhmdW5jLCBmdW5jb3B5KToKKyAgICBmdW5jb3B5Ll9fbmFtZV9fID0gZnVuYy5fX25hbWVfXworICAgIGZ1bmNvcHkuX19kb2NfXyA9IGZ1bmMuX19kb2NfXworICAgICMgd2UgZXhwbGljaXRseSBkb24ndCBjb3B5IGZ1bmMuX19kaWN0X18gaW50byB0aGlzIGNvcHkgYXMgaXQgd291bGQKKyAgICAjIGV4cG9zZSBvcmlnaW5hbCBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGJlIG1vY2tlZAorICAgIGZ1bmNvcHkuX19tb2R1bGVfXyA9IGZ1bmMuX19tb2R1bGVfXworICAgIGZ1bmNvcHkuX19kZWZhdWx0c19fID0gZnVuYy5fX2RlZmF1bHRzX18KKyAgICBmdW5jb3B5Ll9fa3dkZWZhdWx0c19fID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworCisKK2RlZiBfY2FsbGFibGUob2JqKToKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZSk6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgaWYgZ2V0YXR0cihvYmosICdfX2NhbGxfXycsIE5vbmUpIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCisKK2RlZiBfaXNfbGlzdChvYmopOgorICAgICMgY2hlY2tzIGZvciBsaXN0IG9yIHR1cGxlcworICAgICMgWFhYWCBiYWRseSBuYW1lZCEKKyAgICByZXR1cm4gdHlwZShvYmopIGluIChsaXN0LCB0dXBsZSkKKworCitkZWYgX2luc3RhbmNlX2NhbGxhYmxlKG9iaik6CisgICAgIiIiR2l2ZW4gYW4gb2JqZWN0LCByZXR1cm4gVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGNhbGxhYmxlLgorICAgIEZvciBjbGFzc2VzLCByZXR1cm4gVHJ1ZSBpZiBpbnN0YW5jZXMgd291bGQgYmUgY2FsbGFibGUuIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqLCB0eXBlKToKKyAgICAgICAgIyBhbHJlYWR5IGFuIGluc3RhbmNlCisgICAgICAgIHJldHVybiBnZXRhdHRyKG9iaiwgJ19fY2FsbF9fJywgTm9uZSkgaXMgbm90IE5vbmUKKworICAgICMgKmNvdWxkKiBiZSBicm9rZW4gYnkgYSBjbGFzcyBvdmVycmlkaW5nIF9fbXJvX18gb3IgX19kaWN0X18gdmlhCisgICAgIyBhIG1ldGFjbGFzcworICAgIGZvciBiYXNlIGluIChvYmosKSArIG9iai5fX21yb19fOgorICAgICAgICBpZiBiYXNlLl9fZGljdF9fLmdldCgnX19jYWxsX18nKSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCisKKworZGVmIF9zZXRfc2lnbmF0dXJlKG1vY2ssIG9yaWdpbmFsLCBpbnN0YW5jZT1GYWxzZSk6CisgICAgIyBjcmVhdGVzIGEgZnVuY3Rpb24gd2l0aCBzaWduYXR1cmUgKCphcmdzLCAqKmt3YXJncykgdGhhdCBkZWxlZ2F0ZXMgdG8gYQorICAgICMgbW9jay4gSXQgc3RpbGwgZG9lcyBzaWduYXR1cmUgY2hlY2tpbmcgYnkgY2FsbGluZyBhIGxhbWJkYSB3aXRoIHRoZSBzYW1lCisgICAgIyBzaWduYXR1cmUgYXMgdGhlIG9yaWdpbmFsLgorICAgIGlmIG5vdCBfY2FsbGFibGUob3JpZ2luYWwpOgorICAgICAgICByZXR1cm4KKworICAgIHNraXBmaXJzdCA9IGlzaW5zdGFuY2Uob3JpZ2luYWwsIHR5cGUpCisgICAgcmVzdWx0ID0gX2dldHNpZ25hdHVyZShvcmlnaW5hbCwgc2tpcGZpcnN0LCBpbnN0YW5jZSkKKyAgICBpZiByZXN1bHQgaXMgTm9uZToKKyAgICAgICAgIyB3YXMgYSBDIGZ1bmN0aW9uIChlLmcuIG9iamVjdCgpLl9faW5pdF9fICkgdGhhdCBjYW4ndCBiZSBtb2NrZWQKKyAgICAgICAgcmV0dXJuCisKKyAgICBzaWduYXR1cmUsIGZ1bmMgPSByZXN1bHQKKworICAgIHNyYyA9ICJsYW1iZGEgJXM6IE5vbmUiICUgc2lnbmF0dXJlCisgICAgY2hlY2tzaWcgPSBldmFsKHNyYywge30pCisgICAgX2NvcHlfZnVuY19kZXRhaWxzKGZ1bmMsIGNoZWNrc2lnKQorCisgICAgbmFtZSA9IG9yaWdpbmFsLl9fbmFtZV9fCisgICAgaWYgbm90IG5hbWUuaXNpZGVudGlmaWVyKCk6CisgICAgICAgIG5hbWUgPSAnZnVuY29weScKKyAgICBjb250ZXh0ID0geydfY2hlY2tzaWdfJzogY2hlY2tzaWcsICdtb2NrJzogbW9ja30KKyAgICBzcmMgPSAiIiJkZWYgJXMoKmFyZ3MsICoqa3dhcmdzKToKKyAgICBfY2hlY2tzaWdfKCphcmdzLCAqKmt3YXJncykKKyAgICByZXR1cm4gbW9jaygqYXJncywgKiprd2FyZ3MpIiIiICUgbmFtZQorICAgIGV4ZWMgKHNyYywgY29udGV4dCkKKyAgICBmdW5jb3B5ID0gY29udGV4dFtuYW1lXQorICAgIF9zZXR1cF9mdW5jKGZ1bmNvcHksIG1vY2spCisgICAgcmV0dXJuIGZ1bmNvcHkKKworCitkZWYgX3NldHVwX2Z1bmMoZnVuY29weSwgbW9jayk6CisgICAgZnVuY29weS5tb2NrID0gbW9jaworCisgICAgIyBjYW4ndCB1c2UgaXNpbnN0YW5jZSB3aXRoIG1vY2tzCisgICAgaWYgbm90IF9pc19pbnN0YW5jZV9tb2NrKG1vY2spOgorICAgICAgICByZXR1cm4KKworICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfaGFzX2NhbGxzKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9oYXNfY2FsbHMoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfYW55X2NhbGwoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2FueV9jYWxsKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgcmVzZXRfbW9jaygpOgorICAgICAgICBmdW5jb3B5Lm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCisgICAgICAgIGZ1bmNvcHkubW9ja19jYWxscyA9IF9DYWxsTGlzdCgpCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIHJldCA9IGZ1bmNvcHkucmV0dXJuX3ZhbHVlCisgICAgICAgIGlmIF9pc19pbnN0YW5jZV9tb2NrKHJldCkgYW5kIG5vdCByZXQgaXMgbW9jazoKKyAgICAgICAgICAgIHJldC5yZXNldF9tb2NrKCkKKworICAgIGZ1bmNvcHkuY2FsbGVkID0gRmFsc2UKKyAgICBmdW5jb3B5LmNhbGxfY291bnQgPSAwCisgICAgZnVuY29weS5jYWxsX2FyZ3MgPSBOb25lCisgICAgZnVuY29weS5jYWxsX2FyZ3NfbGlzdCA9IF9DYWxsTGlzdCgpCisgICAgZnVuY29weS5tZXRob2RfY2FsbHMgPSBfQ2FsbExpc3QoKQorICAgIGZ1bmNvcHkubW9ja19jYWxscyA9IF9DYWxsTGlzdCgpCisKKyAgICBmdW5jb3B5LnJldHVybl92YWx1ZSA9IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgZnVuY29weS5zaWRlX2VmZmVjdCA9IG1vY2suc2lkZV9lZmZlY3QKKyAgICBmdW5jb3B5Ll9tb2NrX2NoaWxkcmVuID0gbW9jay5fbW9ja19jaGlsZHJlbgorCisgICAgZnVuY29weS5hc3NlcnRfY2FsbGVkX3dpdGggPSBhc3NlcnRfY2FsbGVkX3dpdGgKKyAgICBmdW5jb3B5LmFzc2VydF9jYWxsZWRfb25jZV93aXRoID0gYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgKKyAgICBmdW5jb3B5LmFzc2VydF9oYXNfY2FsbHMgPSBhc3NlcnRfaGFzX2NhbGxzCisgICAgZnVuY29weS5hc3NlcnRfYW55X2NhbGwgPSBhc3NlcnRfYW55X2NhbGwKKyAgICBmdW5jb3B5LnJlc2V0X21vY2sgPSByZXNldF9tb2NrCisKKyAgICBtb2NrLl9tb2NrX2RlbGVnYXRlID0gZnVuY29weQorCisKK2RlZiBfaXNfbWFnaWMobmFtZSk6CisgICAgcmV0dXJuICdfXyVzX18nICUgbmFtZVsyOi0yXSA9PSBuYW1lCisKKworY2xhc3MgX1NlbnRpbmVsT2JqZWN0KG9iamVjdCk6CisgICAgIkEgdW5pcXVlLCBuYW1lZCwgc2VudGluZWwgb2JqZWN0LiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICdzZW50aW5lbC4lcycgJSBzZWxmLm5hbWUKKworCitjbGFzcyBfU2VudGluZWwob2JqZWN0KToKKyAgICAiIiJBY2Nlc3MgYXR0cmlidXRlcyB0byByZXR1cm4gYSBuYW1lZCBvYmplY3QsIHVzYWJsZSBhcyBhIHNlbnRpbmVsLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fc2VudGluZWxzID0ge30KKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSA9PSAnX19iYXNlc19fJzoKKyAgICAgICAgICAgICMgV2l0aG91dCB0aGlzIGhlbHAodW5pdHRlc3QubW9jaykgcmFpc2VzIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NlbnRpbmVscy5zZXRkZWZhdWx0KG5hbWUsIF9TZW50aW5lbE9iamVjdChuYW1lKSkKKworCitzZW50aW5lbCA9IF9TZW50aW5lbCgpCisKK0RFRkFVTFQgPSBzZW50aW5lbC5ERUZBVUxUCitfbWlzc2luZyA9IHNlbnRpbmVsLk1JU1NJTkcKK19kZWxldGVkID0gc2VudGluZWwuREVMRVRFRAorCisKK2RlZiBfY29weSh2YWx1ZSk6CisgICAgaWYgdHlwZSh2YWx1ZSkgaW4gKGRpY3QsIGxpc3QsIHR1cGxlLCBzZXQpOgorICAgICAgICByZXR1cm4gdHlwZSh2YWx1ZSkodmFsdWUpCisgICAgcmV0dXJuIHZhbHVlCisKKworX2FsbG93ZWRfbmFtZXMgPSBzZXQoCisgICAgWworICAgICAgICAncmV0dXJuX3ZhbHVlJywgJ19tb2NrX3JldHVybl92YWx1ZScsICdzaWRlX2VmZmVjdCcsCisgICAgICAgICdfbW9ja19zaWRlX2VmZmVjdCcsICdfbW9ja19wYXJlbnQnLCAnX21vY2tfbmV3X3BhcmVudCcsCisgICAgICAgICdfbW9ja19uYW1lJywgJ19tb2NrX25ld19uYW1lJworICAgIF0KKykKKworCitkZWYgX2RlbGVnYXRpbmdfcHJvcGVydHkobmFtZSk6CisgICAgX2FsbG93ZWRfbmFtZXMuYWRkKG5hbWUpCisgICAgX3RoZV9uYW1lID0gJ19tb2NrXycgKyBuYW1lCisgICAgZGVmIF9nZXQoc2VsZiwgbmFtZT1uYW1lLCBfdGhlX25hbWU9X3RoZV9uYW1lKToKKyAgICAgICAgc2lnID0gc2VsZi5fbW9ja19kZWxlZ2F0ZQorICAgICAgICBpZiBzaWcgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIF90aGVfbmFtZSkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoc2lnLCBuYW1lKQorICAgIGRlZiBfc2V0KHNlbGYsIHZhbHVlLCBuYW1lPW5hbWUsIF90aGVfbmFtZT1fdGhlX25hbWUpOgorICAgICAgICBzaWcgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCisgICAgICAgIGlmIHNpZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1tfdGhlX25hbWVdID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNldGF0dHIoc2lnLCBuYW1lLCB2YWx1ZSkKKworICAgIHJldHVybiBwcm9wZXJ0eShfZ2V0LCBfc2V0KQorCisKKworY2xhc3MgX0NhbGxMaXN0KGxpc3QpOgorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKKyAgICAgICAgICAgIHJldHVybiBsaXN0Ll9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSkKKyAgICAgICAgbGVuX3ZhbHVlID0gbGVuKHZhbHVlKQorICAgICAgICBsZW5fc2VsZiA9IGxlbihzZWxmKQorICAgICAgICBpZiBsZW5fdmFsdWUgPiBsZW5fc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbl9zZWxmIC0gbGVuX3ZhbHVlICsgMSk6CisgICAgICAgICAgICBzdWJfbGlzdCA9IHNlbGZbaTppK2xlbl92YWx1ZV0KKyAgICAgICAgICAgIGlmIHN1Yl9saXN0ID09IHZhbHVlOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gcHByaW50LnBmb3JtYXQobGlzdChzZWxmKSkKKworCitkZWYgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHBhcmVudCwgdmFsdWUsIG5hbWUsIG5ld19uYW1lKToKKyAgICBpZiBub3QgX2lzX2luc3RhbmNlX21vY2sodmFsdWUpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiAoKHZhbHVlLl9tb2NrX25hbWUgb3IgdmFsdWUuX21vY2tfbmV3X25hbWUpIG9yCisgICAgICAgICh2YWx1ZS5fbW9ja19wYXJlbnQgaXMgbm90IE5vbmUpIG9yCisgICAgICAgICh2YWx1ZS5fbW9ja19uZXdfcGFyZW50IGlzIG5vdCBOb25lKSk6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgX3BhcmVudCA9IHBhcmVudAorICAgIHdoaWxlIF9wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICMgc2V0dGluZyBhIG1vY2sgKHZhbHVlKSBhcyBhIGNoaWxkIG9yIHJldHVybiB2YWx1ZSBvZiBpdHNlbGYKKyAgICAgICAgIyBzaG91bGQgbm90IG1vZGlmeSB0aGUgbW9jaworICAgICAgICBpZiBfcGFyZW50IGlzIHZhbHVlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIF9wYXJlbnQgPSBfcGFyZW50Ll9tb2NrX25ld19wYXJlbnQKKworICAgIGlmIG5ld19uYW1lOgorICAgICAgICB2YWx1ZS5fbW9ja19uZXdfcGFyZW50ID0gcGFyZW50CisgICAgICAgIHZhbHVlLl9tb2NrX25ld19uYW1lID0gbmV3X25hbWUKKyAgICBpZiBuYW1lOgorICAgICAgICB2YWx1ZS5fbW9ja19wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgdmFsdWUuX21vY2tfbmFtZSA9IG5hbWUKKyAgICByZXR1cm4gVHJ1ZQorCisKKworY2xhc3MgQmFzZShvYmplY3QpOgorICAgIF9tb2NrX3JldHVybl92YWx1ZSA9IERFRkFVTFQKKyAgICBfbW9ja19zaWRlX2VmZmVjdCA9IE5vbmUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcGFzcworCisKKworY2xhc3MgTm9uQ2FsbGFibGVNb2NrKEJhc2UpOgorICAgICIiIkEgbm9uLWNhbGxhYmxlIHZlcnNpb24gb2YgYE1vY2tgIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3KToKKyAgICAgICAgIyBldmVyeSBpbnN0YW5jZSBoYXMgaXRzIG93biBjbGFzcworICAgICAgICAjIHNvIHdlIGNhbiBjcmVhdGUgbWFnaWMgbWV0aG9kcyBvbiB0aGUKKyAgICAgICAgIyBjbGFzcyB3aXRob3V0IHN0b21waW5nIG9uIG90aGVyIG1vY2tzCisgICAgICAgIG5ldyA9IHR5cGUoY2xzLl9fbmFtZV9fLCAoY2xzLCksIHsnX19kb2NfXyc6IGNscy5fX2RvY19ffSkKKyAgICAgICAgaW5zdGFuY2UgPSBvYmplY3QuX19uZXdfXyhuZXcpCisgICAgICAgIHJldHVybiBpbnN0YW5jZQorCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgICAgICBzZWxmLCBzcGVjPU5vbmUsIHdyYXBzPU5vbmUsIG5hbWU9Tm9uZSwgc3BlY19zZXQ9Tm9uZSwKKyAgICAgICAgICAgIHBhcmVudD1Ob25lLCBfc3BlY19zdGF0ZT1Ob25lLCBfbmV3X25hbWU9JycsIF9uZXdfcGFyZW50PU5vbmUsCisgICAgICAgICAgICAqKmt3YXJncworICAgICAgICApOgorICAgICAgICBpZiBfbmV3X3BhcmVudCBpcyBOb25lOgorICAgICAgICAgICAgX25ld19wYXJlbnQgPSBwYXJlbnQKKworICAgICAgICBfX2RpY3RfXyA9IHNlbGYuX19kaWN0X18KKyAgICAgICAgX19kaWN0X19bJ19tb2NrX3BhcmVudCddID0gcGFyZW50CisgICAgICAgIF9fZGljdF9fWydfbW9ja19uYW1lJ10gPSBuYW1lCisgICAgICAgIF9fZGljdF9fWydfbW9ja19uZXdfbmFtZSddID0gX25ld19uYW1lCisgICAgICAgIF9fZGljdF9fWydfbW9ja19uZXdfcGFyZW50J10gPSBfbmV3X3BhcmVudAorCisgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3BlYyA9IHNwZWNfc2V0CisgICAgICAgICAgICBzcGVjX3NldCA9IFRydWUKKworICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQorCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jaGlsZHJlbiddID0ge30KKyAgICAgICAgX19kaWN0X19bJ19tb2NrX3dyYXBzJ10gPSB3cmFwcworICAgICAgICBfX2RpY3RfX1snX21vY2tfZGVsZWdhdGUnXSA9IE5vbmUKKworICAgICAgICBfX2RpY3RfX1snX21vY2tfY2FsbGVkJ10gPSBGYWxzZQorICAgICAgICBfX2RpY3RfX1snX21vY2tfY2FsbF9hcmdzJ10gPSBOb25lCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jYWxsX2NvdW50J10gPSAwCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jYWxsX2FyZ3NfbGlzdCddID0gX0NhbGxMaXN0KCkKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX21vY2tfY2FsbHMnXSA9IF9DYWxsTGlzdCgpCisKKyAgICAgICAgX19kaWN0X19bJ21ldGhvZF9jYWxscyddID0gX0NhbGxMaXN0KCkKKworICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQorCisgICAgICAgIF9zYWZlX3N1cGVyKE5vbkNhbGxhYmxlTW9jaywgc2VsZikuX19pbml0X18oCisgICAgICAgICAgICBzcGVjLCB3cmFwcywgbmFtZSwgc3BlY19zZXQsIHBhcmVudCwKKyAgICAgICAgICAgIF9zcGVjX3N0YXRlCisgICAgICAgICkKKworCisgICAgZGVmIGF0dGFjaF9tb2NrKHNlbGYsIG1vY2ssIGF0dHJpYnV0ZSk6CisgICAgICAgICIiIgorICAgICAgICBBdHRhY2ggYSBtb2NrIGFzIGFuIGF0dHJpYnV0ZSBvZiB0aGlzIG9uZSwgcmVwbGFjaW5nIGl0cyBuYW1lIGFuZAorICAgICAgICBwYXJlbnQuIENhbGxzIHRvIHRoZSBhdHRhY2hlZCBtb2NrIHdpbGwgYmUgcmVjb3JkZWQgaW4gdGhlCisgICAgICAgIGBtZXRob2RfY2FsbHNgIGFuZCBgbW9ja19jYWxsc2AgYXR0cmlidXRlcyBvZiB0aGlzIG9uZS4iIiIKKyAgICAgICAgbW9jay5fbW9ja19wYXJlbnQgPSBOb25lCisgICAgICAgIG1vY2suX21vY2tfbmV3X3BhcmVudCA9IE5vbmUKKyAgICAgICAgbW9jay5fbW9ja19uYW1lID0gJycKKyAgICAgICAgbW9jay5fbW9ja19uZXdfbmFtZSA9IE5vbmUKKworICAgICAgICBzZXRhdHRyKHNlbGYsIGF0dHJpYnV0ZSwgbW9jaykKKworCisgICAgZGVmIG1vY2tfYWRkX3NwZWMoc2VsZiwgc3BlYywgc3BlY19zZXQ9RmFsc2UpOgorICAgICAgICAiIiJBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKKyAgICAgICAgbGlzdCBvZiBzdHJpbmdzLiBPbmx5IGF0dHJpYnV0ZXMgb24gdGhlIGBzcGVjYCBjYW4gYmUgZmV0Y2hlZCBhcworICAgICAgICBhdHRyaWJ1dGVzIGZyb20gdGhlIG1vY2suCisKKyAgICAgICAgSWYgYHNwZWNfc2V0YCBpcyBUcnVlIHRoZW4gb25seSBhdHRyaWJ1dGVzIG9uIHRoZSBzcGVjIGNhbiBiZSBzZXQuIiIiCisgICAgICAgIHNlbGYuX21vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQpCisKKworICAgIGRlZiBfbW9ja19hZGRfc3BlYyhzZWxmLCBzcGVjLCBzcGVjX3NldCk6CisgICAgICAgIF9zcGVjX2NsYXNzID0gTm9uZQorCisgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmUgYW5kIG5vdCBfaXNfbGlzdChzcGVjKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3BlYywgdHlwZSk6CisgICAgICAgICAgICAgICAgX3NwZWNfY2xhc3MgPSBzcGVjCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9zcGVjX2NsYXNzID0gX2dldF9jbGFzcyhzcGVjKQorCisgICAgICAgICAgICBzcGVjID0gZGlyKHNwZWMpCisKKyAgICAgICAgX19kaWN0X18gPSBzZWxmLl9fZGljdF9fCisgICAgICAgIF9fZGljdF9fWydfc3BlY19jbGFzcyddID0gX3NwZWNfY2xhc3MKKyAgICAgICAgX19kaWN0X19bJ19zcGVjX3NldCddID0gc3BlY19zZXQKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX21ldGhvZHMnXSA9IHNwZWMKKworCisgICAgZGVmIF9fZ2V0X3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgcmV0ID0gc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUKKyAgICAgICAgaWYgc2VsZi5fbW9ja19kZWxlZ2F0ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldCA9IHNlbGYuX21vY2tfZGVsZWdhdGUucmV0dXJuX3ZhbHVlCisKKyAgICAgICAgaWYgcmV0IGlzIERFRkFVTFQ6CisgICAgICAgICAgICByZXQgPSBzZWxmLl9nZXRfY2hpbGRfbW9jaygKKyAgICAgICAgICAgICAgICBfbmV3X3BhcmVudD1zZWxmLCBfbmV3X25hbWU9JygpJworICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWUgPSByZXQKKyAgICAgICAgcmV0dXJuIHJldAorCisKKyAgICBkZWYgX19zZXRfcmV0dXJuX3ZhbHVlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgaWYgc2VsZi5fbW9ja19kZWxlZ2F0ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX21vY2tfZGVsZWdhdGUucmV0dXJuX3ZhbHVlID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIF9jaGVja19hbmRfc2V0X3BhcmVudChzZWxmLCB2YWx1ZSwgTm9uZSwgJygpJykKKworICAgIF9fcmV0dXJuX3ZhbHVlX2RvYyA9ICJUaGUgdmFsdWUgdG8gYmUgcmV0dXJuZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuIgorICAgIHJldHVybl92YWx1ZSA9IHByb3BlcnR5KF9fZ2V0X3JldHVybl92YWx1ZSwgX19zZXRfcmV0dXJuX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmV0dXJuX3ZhbHVlX2RvYykKKworCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9fY2xhc3NfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fc3BlY19jbGFzcyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NwZWNfY2xhc3MKKworICAgIGNhbGxlZCA9IF9kZWxlZ2F0aW5nX3Byb3BlcnR5KCdjYWxsZWQnKQorICAgIGNhbGxfY291bnQgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbF9jb3VudCcpCisgICAgY2FsbF9hcmdzID0gX2RlbGVnYXRpbmdfcHJvcGVydHkoJ2NhbGxfYXJncycpCisgICAgY2FsbF9hcmdzX2xpc3QgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbF9hcmdzX2xpc3QnKQorICAgIG1vY2tfY2FsbHMgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnbW9ja19jYWxscycpCisKKworICAgIGRlZiBfX2dldF9zaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgZGVsZWdhdGVkID0gc2VsZi5fbW9ja19kZWxlZ2F0ZQorICAgICAgICBpZiBkZWxlZ2F0ZWQgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX3NpZGVfZWZmZWN0CisgICAgICAgIHJldHVybiBkZWxlZ2F0ZWQuc2lkZV9lZmZlY3QKKworICAgIGRlZiBfX3NldF9zaWRlX2VmZmVjdChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHZhbHVlID0gX3RyeV9pdGVyKHZhbHVlKQorICAgICAgICBkZWxlZ2F0ZWQgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCisgICAgICAgIGlmIGRlbGVnYXRlZCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fbW9ja19zaWRlX2VmZmVjdCA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkZWxlZ2F0ZWQuc2lkZV9lZmZlY3QgPSB2YWx1ZQorCisgICAgc2lkZV9lZmZlY3QgPSBwcm9wZXJ0eShfX2dldF9zaWRlX2VmZmVjdCwgX19zZXRfc2lkZV9lZmZlY3QpCisKKworICAgIGRlZiByZXNldF9tb2NrKHNlbGYpOgorICAgICAgICAiUmVzdG9yZSB0aGUgbW9jayBvYmplY3QgdG8gaXRzIGluaXRpYWwgc3RhdGUuIgorICAgICAgICBzZWxmLmNhbGxlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuY2FsbF9hcmdzID0gTm9uZQorICAgICAgICBzZWxmLmNhbGxfY291bnQgPSAwCisgICAgICAgIHNlbGYubW9ja19jYWxscyA9IF9DYWxsTGlzdCgpCisgICAgICAgIHNlbGYuY2FsbF9hcmdzX2xpc3QgPSBfQ2FsbExpc3QoKQorICAgICAgICBzZWxmLm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCisKKyAgICAgICAgZm9yIGNoaWxkIGluIHNlbGYuX21vY2tfY2hpbGRyZW4udmFsdWVzKCk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoaWxkLCBfU3BlY1N0YXRlKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2hpbGQucmVzZXRfbW9jaygpCisKKyAgICAgICAgcmV0ID0gc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUKKyAgICAgICAgaWYgX2lzX2luc3RhbmNlX21vY2socmV0KSBhbmQgcmV0IGlzIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0LnJlc2V0X21vY2soKQorCisKKyAgICBkZWYgY29uZmlndXJlX21vY2soc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAiIiJTZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayB0aHJvdWdoIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgIEF0dHJpYnV0ZXMgcGx1cyByZXR1cm4gdmFsdWVzIGFuZCBzaWRlIGVmZmVjdHMgY2FuIGJlIHNldCBvbiBjaGlsZAorICAgICAgICBtb2NrcyB1c2luZyBzdGFuZGFyZCBkb3Qgbm90YXRpb24gYW5kIHVucGFja2luZyBhIGRpY3Rpb25hcnkgaW4gdGhlCisgICAgICAgIG1ldGhvZCBjYWxsOgorCisgICAgICAgID4+PiBhdHRycyA9IHsnbWV0aG9kLnJldHVybl92YWx1ZSc6IDMsICdvdGhlci5zaWRlX2VmZmVjdCc6IEtleUVycm9yfQorICAgICAgICA+Pj4gbW9jay5jb25maWd1cmVfbW9jaygqKmF0dHJzKSIiIgorICAgICAgICBmb3IgYXJnLCB2YWwgaW4gc29ydGVkKGt3YXJncy5pdGVtcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2Ugc29ydCBvbiB0aGUgbnVtYmVyIG9mIGRvdHMgc28gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXR0cmlidXRlcyBhcmUgc2V0IGJlZm9yZSB3ZSBzZXQgYXR0cmlidXRlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXR0cmlidXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1sYW1iZGEgZW50cnk6IGVudHJ5WzBdLmNvdW50KCcuJykpOgorICAgICAgICAgICAgYXJncyA9IGFyZy5zcGxpdCgnLicpCisgICAgICAgICAgICBmaW5hbCA9IGFyZ3MucG9wKCkKKyAgICAgICAgICAgIG9iaiA9IHNlbGYKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBhcmdzOgorICAgICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCBlbnRyeSkKKyAgICAgICAgICAgIHNldGF0dHIob2JqLCBmaW5hbCwgdmFsKQorCisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5hbWUgPT0gJ19tb2NrX21ldGhvZHMnOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKKyAgICAgICAgZWxpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9tb2NrX21ldGhvZHMgb3IgbmFtZSBpbiBfYWxsX21hZ2ljczoKKyAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSBuYW1lKQorICAgICAgICBlbGlmIF9pc19tYWdpYyhuYW1lKToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fbW9ja19jaGlsZHJlbi5nZXQobmFtZSkKKyAgICAgICAgaWYgcmVzdWx0IGlzIF9kZWxldGVkOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKKyAgICAgICAgZWxpZiByZXN1bHQgaXMgTm9uZToKKyAgICAgICAgICAgIHdyYXBzID0gTm9uZQorICAgICAgICAgICAgaWYgc2VsZi5fbW9ja193cmFwcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIFhYWFggc2hvdWxkIHdlIGdldCB0aGUgYXR0cmlidXRlIHdpdGhvdXQgdHJpZ2dlcmluZyBjb2RlCisgICAgICAgICAgICAgICAgIyBleGVjdXRpb24/CisgICAgICAgICAgICAgICAgd3JhcHMgPSBnZXRhdHRyKHNlbGYuX21vY2tfd3JhcHMsIG5hbWUpCisKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2dldF9jaGlsZF9tb2NrKAorICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmLCBuYW1lPW5hbWUsIHdyYXBzPXdyYXBzLCBfbmV3X25hbWU9bmFtZSwKKyAgICAgICAgICAgICAgICBfbmV3X3BhcmVudD1zZWxmCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdICA9IHJlc3VsdAorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShyZXN1bHQsIF9TcGVjU3RhdGUpOgorICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlX2F1dG9zcGVjKAorICAgICAgICAgICAgICAgIHJlc3VsdC5zcGVjLCByZXN1bHQuc3BlY19zZXQsIHJlc3VsdC5pbnN0YW5jZSwKKyAgICAgICAgICAgICAgICByZXN1bHQucGFyZW50LCByZXN1bHQubmFtZQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXSAgPSByZXN1bHQKKworICAgICAgICByZXR1cm4gcmVzdWx0CisKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgX25hbWVfbGlzdCA9IFtzZWxmLl9tb2NrX25ld19uYW1lXQorICAgICAgICBfcGFyZW50ID0gc2VsZi5fbW9ja19uZXdfcGFyZW50CisgICAgICAgIGxhc3QgPSBzZWxmCisKKyAgICAgICAgZG90ID0gJy4nCisgICAgICAgIGlmIF9uYW1lX2xpc3QgPT0gWycoKSddOgorICAgICAgICAgICAgZG90ID0gJycKKyAgICAgICAgc2VlbiA9IHNldCgpCisgICAgICAgIHdoaWxlIF9wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsYXN0ID0gX3BhcmVudAorCisgICAgICAgICAgICBfbmFtZV9saXN0LmFwcGVuZChfcGFyZW50Ll9tb2NrX25ld19uYW1lICsgZG90KQorICAgICAgICAgICAgZG90ID0gJy4nCisgICAgICAgICAgICBpZiBfcGFyZW50Ll9tb2NrX25ld19uYW1lID09ICcoKSc6CisgICAgICAgICAgICAgICAgZG90ID0gJycKKworICAgICAgICAgICAgX3BhcmVudCA9IF9wYXJlbnQuX21vY2tfbmV3X3BhcmVudAorCisgICAgICAgICAgICAjIHVzZSBpZHMgaGVyZSBzbyBhcyBub3QgdG8gY2FsbCBfX2hhc2hfXyBvbiB0aGUgbW9ja3MKKyAgICAgICAgICAgIGlmIGlkKF9wYXJlbnQpIGluIHNlZW46CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlZW4uYWRkKGlkKF9wYXJlbnQpKQorCisgICAgICAgIF9uYW1lX2xpc3QgPSBsaXN0KHJldmVyc2VkKF9uYW1lX2xpc3QpKQorICAgICAgICBfZmlyc3QgPSBsYXN0Ll9tb2NrX25hbWUgb3IgJ21vY2snCisgICAgICAgIGlmIGxlbihfbmFtZV9saXN0KSA+IDE6CisgICAgICAgICAgICBpZiBfbmFtZV9saXN0WzFdIG5vdCBpbiAoJygpJywgJygpLicpOgorICAgICAgICAgICAgICAgIF9maXJzdCArPSAnLicKKyAgICAgICAgX25hbWVfbGlzdFswXSA9IF9maXJzdAorICAgICAgICBuYW1lID0gJycuam9pbihfbmFtZV9saXN0KQorCisgICAgICAgIG5hbWVfc3RyaW5nID0gJycKKyAgICAgICAgaWYgbmFtZSBub3QgaW4gKCdtb2NrJywgJ21vY2suJyk6CisgICAgICAgICAgICBuYW1lX3N0cmluZyA9ICcgbmFtZT0lcicgJSBuYW1lCisKKyAgICAgICAgc3BlY19zdHJpbmcgPSAnJworICAgICAgICBpZiBzZWxmLl9zcGVjX2NsYXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3BlY19zdHJpbmcgPSAnIHNwZWM9JXInCisgICAgICAgICAgICBpZiBzZWxmLl9zcGVjX3NldDoKKyAgICAgICAgICAgICAgICBzcGVjX3N0cmluZyA9ICcgc3BlY19zZXQ9JXInCisgICAgICAgICAgICBzcGVjX3N0cmluZyA9IHNwZWNfc3RyaW5nICUgc2VsZi5fc3BlY19jbGFzcy5fX25hbWVfXworICAgICAgICByZXR1cm4gIjwlcyVzJXMgaWQ9JyVzJz4iICUgKAorICAgICAgICAgICAgdHlwZShzZWxmKS5fX25hbWVfXywKKyAgICAgICAgICAgIG5hbWVfc3RyaW5nLAorICAgICAgICAgICAgc3BlY19zdHJpbmcsCisgICAgICAgICAgICBpZChzZWxmKQorICAgICAgICApCisKKworICAgIGRlZiBfX2Rpcl9fKHNlbGYpOgorICAgICAgICAiIiJGaWx0ZXIgdGhlIG91dHB1dCBvZiBgZGlyKG1vY2spYCB0byBvbmx5IHVzZWZ1bCBtZW1iZXJzLiIiIgorICAgICAgICBpZiBub3QgRklMVEVSX0RJUjoKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19kaXJfXyhzZWxmKQorCisgICAgICAgIGV4dHJhcyA9IHNlbGYuX21vY2tfbWV0aG9kcyBvciBbXQorICAgICAgICBmcm9tX3R5cGUgPSBkaXIodHlwZShzZWxmKSkKKyAgICAgICAgZnJvbV9kaWN0ID0gbGlzdChzZWxmLl9fZGljdF9fKQorCisgICAgICAgIGZyb21fdHlwZSA9IFtlIGZvciBlIGluIGZyb21fdHlwZSBpZiBub3QgZS5zdGFydHN3aXRoKCdfJyldCisgICAgICAgIGZyb21fZGljdCA9IFtlIGZvciBlIGluIGZyb21fZGljdCBpZiBub3QgZS5zdGFydHN3aXRoKCdfJykgb3IKKyAgICAgICAgICAgICAgICAgICAgIF9pc19tYWdpYyhlKV0KKyAgICAgICAgcmV0dXJuIHNvcnRlZChzZXQoZXh0cmFzICsgZnJvbV90eXBlICsgZnJvbV9kaWN0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChzZWxmLl9tb2NrX2NoaWxkcmVuKSkpCisKKworICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGlmIG5hbWUgaW4gX2FsbG93ZWRfbmFtZXM6CisgICAgICAgICAgICAjIHByb3BlcnR5IHNldHRlcnMgZ28gdGhyb3VnaCBoZXJlCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorICAgICAgICBlbGlmIChzZWxmLl9zcGVjX3NldCBhbmQgc2VsZi5fbW9ja19tZXRob2RzIGlzIG5vdCBOb25lIGFuZAorICAgICAgICAgICAgbmFtZSBub3QgaW4gc2VsZi5fbW9ja19tZXRob2RzIGFuZAorICAgICAgICAgICAgbmFtZSBub3QgaW4gc2VsZi5fX2RpY3RfXyk6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIG5hbWUpCisgICAgICAgIGVsaWYgbmFtZSBpbiBfdW5zdXBwb3J0ZWRfbWFnaWNzOgorICAgICAgICAgICAgbXNnID0gJ0F0dGVtcHRpbmcgdG8gc2V0IHVuc3VwcG9ydGVkIG1hZ2ljIG1ldGhvZCAlci4nICUgbmFtZQorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobXNnKQorICAgICAgICBlbGlmIG5hbWUgaW4gX2FsbF9tYWdpY3M6CisgICAgICAgICAgICBpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmUgYW5kIG5hbWUgbm90IGluIHNlbGYuX21vY2tfbWV0aG9kczoKKyAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIG5hbWUpCisKKyAgICAgICAgICAgIGlmIG5vdCBfaXNfaW5zdGFuY2VfbW9jayh2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2V0YXR0cih0eXBlKHNlbGYpLCBuYW1lLCBfZ2V0X21ldGhvZChuYW1lLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgb3JpZ2luYWwgPSB2YWx1ZQorICAgICAgICAgICAgICAgIHZhbHVlID0gbGFtYmRhICphcmdzLCAqKmt3OiBvcmlnaW5hbChzZWxmLCAqYXJncywgKiprdykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBvbmx5IHNldCBfbmV3X25hbWUgYW5kIG5vdCBuYW1lIHNvIHRoYXQgbW9ja19jYWxscyBpcyB0cmFja2VkCisgICAgICAgICAgICAgICAgIyBidXQgbm90IG1ldGhvZCBjYWxscworICAgICAgICAgICAgICAgIF9jaGVja19hbmRfc2V0X3BhcmVudChzZWxmLCB2YWx1ZSwgTm9uZSwgbmFtZSkKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHR5cGUoc2VsZiksIG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gPSB2YWx1ZQorICAgICAgICBlbGlmIG5hbWUgPT0gJ19fY2xhc3NfXyc6CisgICAgICAgICAgICBzZWxmLl9zcGVjX2NsYXNzID0gdmFsdWUKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHNlbGYsIHZhbHVlLCBuYW1lLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdID0gdmFsdWUKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKworCisgICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBuYW1lIGluIF9hbGxfbWFnaWNzIGFuZCBuYW1lIGluIHR5cGUoc2VsZikuX19kaWN0X186CisgICAgICAgICAgICBkZWxhdHRyKHR5cGUoc2VsZiksIG5hbWUpCisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICMgZm9yIG1hZ2ljIG1ldGhvZHMgdGhhdCBhcmUgc3RpbGwgTWFnaWNQcm94eSBvYmplY3RzIGFuZAorICAgICAgICAgICAgICAgICMgbm90IHNldCBvbiB0aGUgaW5zdGFuY2UgaXRzZWxmCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbmFtZSBpbiBzZWxmLl9fZGljdF9fOgorICAgICAgICAgICAgb2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpCisKKyAgICAgICAgb2JqID0gc2VsZi5fbW9ja19jaGlsZHJlbi5nZXQobmFtZSwgX21pc3NpbmcpCisgICAgICAgIGlmIG9iaiBpcyBfZGVsZXRlZDoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIGlmIG9iaiBpcyBub3QgX21pc3Npbmc6CisgICAgICAgICAgICBkZWwgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXQorICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdID0gX2RlbGV0ZWQKKworCisKKyAgICBkZWYgX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKHNlbGYsIGFyZ3MsIGt3YXJncyk6CisgICAgICAgIG5hbWUgPSBzZWxmLl9tb2NrX25hbWUgb3IgJ21vY2snCisgICAgICAgIHJldHVybiBfZm9ybWF0X2NhbGxfc2lnbmF0dXJlKG5hbWUsIGFyZ3MsIGt3YXJncykKKworCisgICAgZGVmIF9mb3JtYXRfbW9ja19mYWlsdXJlX21lc3NhZ2Uoc2VsZiwgYXJncywga3dhcmdzKToKKyAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuQWN0dWFsIGNhbGw6ICVzJworICAgICAgICBleHBlY3RlZF9zdHJpbmcgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZShhcmdzLCBrd2FyZ3MpCisgICAgICAgIGNhbGxfYXJncyA9IHNlbGYuY2FsbF9hcmdzCisgICAgICAgIGlmIGxlbihjYWxsX2FyZ3MpID09IDM6CisgICAgICAgICAgICBjYWxsX2FyZ3MgPSBjYWxsX2FyZ3NbMTpdCisgICAgICAgIGFjdHVhbF9zdHJpbmcgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZSgqY2FsbF9hcmdzKQorICAgICAgICByZXR1cm4gbWVzc2FnZSAlIChleHBlY3RlZF9zdHJpbmcsIGFjdHVhbF9zdHJpbmcpCisKKworICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgorCisgICAgICAgIFJhaXNlcyBhbiBBc3NlcnRpb25FcnJvciBpZiB0aGUgYXJncyBhbmQga2V5d29yZCBhcmdzIHBhc3NlZCBpbiBhcmUKKyAgICAgICAgZGlmZmVyZW50IHRvIHRoZSBsYXN0IGNhbGwgdG8gdGhlIG1vY2suIiIiCisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIGlmIHNlbGYuY2FsbF9hcmdzIGlzIE5vbmU6CisgICAgICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKGFyZ3MsIGt3YXJncykKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdFeHBlY3RlZCBjYWxsOiAlc1xuTm90IGNhbGxlZCcgJSAoZXhwZWN0ZWQsKSkKKworICAgICAgICBpZiBzZWxmLmNhbGxfYXJncyAhPSAoYXJncywga3dhcmdzKToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdF9tb2NrX2ZhaWx1cmVfbWVzc2FnZShhcmdzLCBrd2FyZ3MpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisKKworICAgIGRlZiBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGV4YWN0bHkgb25jZSBhbmQgd2l0aCB0aGUgc3BlY2lmaWVkCisgICAgICAgIGFyZ3VtZW50cy4iIiIKKyAgICAgICAgc2VsZiA9IF9tb2NrX3NlbGYKKyAgICAgICAgaWYgbm90IHNlbGYuY2FsbF9jb3VudCA9PSAxOgorICAgICAgICAgICAgbXNnID0gKCJFeHBlY3RlZCB0byBiZSBjYWxsZWQgb25jZS4gQ2FsbGVkICVzIHRpbWVzLiIgJQorICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsbF9jb3VudCkKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKKyAgICAgICAgcmV0dXJuIHNlbGYuYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKKworCisgICAgZGVmIGFzc2VydF9oYXNfY2FsbHMoc2VsZiwgY2FsbHMsIGFueV9vcmRlcj1GYWxzZSk6CisgICAgICAgICIiImFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNhbGxzLgorICAgICAgICBUaGUgYG1vY2tfY2FsbHNgIGxpc3QgaXMgY2hlY2tlZCBmb3IgdGhlIGNhbGxzLgorCisgICAgICAgIElmIGBhbnlfb3JkZXJgIGlzIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlbiB0aGUgY2FsbHMgbXVzdCBiZQorICAgICAgICBzZXF1ZW50aWFsLiBUaGVyZSBjYW4gYmUgZXh0cmEgY2FsbHMgYmVmb3JlIG9yIGFmdGVyIHRoZQorICAgICAgICBzcGVjaWZpZWQgY2FsbHMuCisKKyAgICAgICAgSWYgYGFueV9vcmRlcmAgaXMgVHJ1ZSB0aGVuIHRoZSBjYWxscyBjYW4gYmUgaW4gYW55IG9yZGVyLCBidXQKKyAgICAgICAgdGhleSBtdXN0IGFsbCBhcHBlYXIgaW4gYG1vY2tfY2FsbHNgLiIiIgorICAgICAgICBpZiBub3QgYW55X29yZGVyOgorICAgICAgICAgICAgaWYgY2FsbHMgbm90IGluIHNlbGYubW9ja19jYWxsczoKKyAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ0NhbGxzIG5vdCBmb3VuZC5cbkV4cGVjdGVkOiAlclxuJworICAgICAgICAgICAgICAgICAgICAnQWN0dWFsOiAlcicgJSAoY2FsbHMsIHNlbGYubW9ja19jYWxscykKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBhbGxfY2FsbHMgPSBsaXN0KHNlbGYubW9ja19jYWxscykKKworICAgICAgICBub3RfZm91bmQgPSBbXQorICAgICAgICBmb3Iga2FsbCBpbiBjYWxsczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhbGxfY2FsbHMucmVtb3ZlKGthbGwpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBub3RfZm91bmQuYXBwZW5kKGthbGwpCisgICAgICAgIGlmIG5vdF9mb3VuZDoKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorICAgICAgICAgICAgICAgICclciBub3QgYWxsIGZvdW5kIGluIGNhbGwgbGlzdCcgJSAodHVwbGUobm90X2ZvdW5kKSwpCisgICAgICAgICAgICApCisKKworICAgIGRlZiBhc3NlcnRfYW55X2NhbGwoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgorCisgICAgICAgIFRoZSBhc3NlcnQgcGFzc2VzIGlmIHRoZSBtb2NrIGhhcyAqZXZlciogYmVlbiBjYWxsZWQsIHVubGlrZQorICAgICAgICBgYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQgYGFzc2VydF9jYWxsZWRfb25jZV93aXRoYCB0aGF0IG9ubHkgcGFzcyBpZgorICAgICAgICB0aGUgY2FsbCBpcyB0aGUgbW9zdCByZWNlbnQgb25lLiIiIgorICAgICAgICBrYWxsID0gY2FsbCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGlmIGthbGwgbm90IGluIHNlbGYuY2FsbF9hcmdzX2xpc3Q6CisgICAgICAgICAgICBleHBlY3RlZF9zdHJpbmcgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZShhcmdzLCBrd2FyZ3MpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAnJXMgY2FsbCBub3QgZm91bmQnICUgZXhwZWN0ZWRfc3RyaW5nCisgICAgICAgICAgICApCisKKworICAgIGRlZiBfZ2V0X2NoaWxkX21vY2soc2VsZiwgKiprdyk6CisgICAgICAgICIiIkNyZWF0ZSB0aGUgY2hpbGQgbW9ja3MgZm9yIGF0dHJpYnV0ZXMgYW5kIHJldHVybiB2YWx1ZS4KKyAgICAgICAgQnkgZGVmYXVsdCBjaGlsZCBtb2NrcyB3aWxsIGJlIHRoZSBzYW1lIHR5cGUgYXMgdGhlIHBhcmVudC4KKyAgICAgICAgU3ViY2xhc3NlcyBvZiBNb2NrIG1heSB3YW50IHRvIG92ZXJyaWRlIHRoaXMgdG8gY3VzdG9taXplIHRoZSB3YXkKKyAgICAgICAgY2hpbGQgbW9ja3MgYXJlIG1hZGUuCisKKyAgICAgICAgRm9yIG5vbi1jYWxsYWJsZSBtb2NrcyB0aGUgY2FsbGFibGUgdmFyaWFudCB3aWxsIGJlIHVzZWQgKHJhdGhlciB0aGFuCisgICAgICAgIGFueSBjdXN0b20gc3ViY2xhc3MpLiIiIgorICAgICAgICBfdHlwZSA9IHR5cGUoc2VsZikKKyAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MoX3R5cGUsIENhbGxhYmxlTWl4aW4pOgorICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhfdHlwZSwgTm9uQ2FsbGFibGVNYWdpY01vY2spOgorICAgICAgICAgICAgICAgIGtsYXNzID0gTWFnaWNNb2NrCisgICAgICAgICAgICBlbGlmIGlzc3ViY2xhc3MoX3R5cGUsIE5vbkNhbGxhYmxlTW9jaykgOgorICAgICAgICAgICAgICAgIGtsYXNzID0gTW9jaworICAgICAgICBlbHNlOgorICAgICAgICAgICAga2xhc3MgPSBfdHlwZS5fX21yb19fWzFdCisgICAgICAgIHJldHVybiBrbGFzcygqKmt3KQorCisKKworZGVmIF90cnlfaXRlcihvYmopOgorICAgIGlmIG9iaiBpcyBOb25lOgorICAgICAgICByZXR1cm4gb2JqCisgICAgaWYgX2lzX2V4Y2VwdGlvbihvYmopOgorICAgICAgICByZXR1cm4gb2JqCisgICAgaWYgX2NhbGxhYmxlKG9iaik6CisgICAgICAgIHJldHVybiBvYmoKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBpdGVyKG9iaikKKyAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAjIFhYWFggYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKKyAgICAgICAgIyBidXQgdGhpcyB3aWxsIGJsb3cgdXAgb24gZmlyc3QgY2FsbCAtIHNvIG1heWJlIHdlIHNob3VsZCBmYWlsIGVhcmx5PworICAgICAgICByZXR1cm4gb2JqCisKKworCitjbGFzcyBDYWxsYWJsZU1peGluKEJhc2UpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWM9Tm9uZSwgc2lkZV9lZmZlY3Q9Tm9uZSwgcmV0dXJuX3ZhbHVlPURFRkFVTFQsCisgICAgICAgICAgICAgICAgIHdyYXBzPU5vbmUsIG5hbWU9Tm9uZSwgc3BlY19zZXQ9Tm9uZSwgcGFyZW50PU5vbmUsCisgICAgICAgICAgICAgICAgIF9zcGVjX3N0YXRlPU5vbmUsIF9uZXdfbmFtZT0nJywgX25ld19wYXJlbnQ9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLl9fZGljdF9fWydfbW9ja19yZXR1cm5fdmFsdWUnXSA9IHJldHVybl92YWx1ZQorCisgICAgICAgIF9zYWZlX3N1cGVyKENhbGxhYmxlTWl4aW4sIHNlbGYpLl9faW5pdF9fKAorICAgICAgICAgICAgc3BlYywgd3JhcHMsIG5hbWUsIHNwZWNfc2V0LCBwYXJlbnQsCisgICAgICAgICAgICBfc3BlY19zdGF0ZSwgX25ld19uYW1lLCBfbmV3X3BhcmVudCwgKiprd2FyZ3MKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorCisKKyAgICBkZWYgX21vY2tfY2hlY2tfc2lnKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgc3R1YiBtZXRob2QgdGhhdCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBvbmUgd2l0aCBhIHNwZWNpZmljIHNpZ25hdHVyZQorICAgICAgICBwYXNzCisKKworICAgIGRlZiBfX2NhbGxfXyhfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIGNhbid0IHVzZSBzZWxmIGluLWNhc2UgYSBmdW5jdGlvbiAvIG1ldGhvZCB3ZSBhcmUgbW9ja2luZyB1c2VzIHNlbGYKKyAgICAgICAgIyBpbiB0aGUgc2lnbmF0dXJlCisgICAgICAgIF9tb2NrX3NlbGYuX21vY2tfY2hlY2tfc2lnKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIF9tb2NrX3NlbGYuX21vY2tfY2FsbCgqYXJncywgKiprd2FyZ3MpCisKKworICAgIGRlZiBfbW9ja19jYWxsKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIHNlbGYuY2FsbGVkID0gVHJ1ZQorICAgICAgICBzZWxmLmNhbGxfY291bnQgKz0gMQorICAgICAgICBzZWxmLmNhbGxfYXJncyA9IF9DYWxsKChhcmdzLCBrd2FyZ3MpLCB0d289VHJ1ZSkKKyAgICAgICAgc2VsZi5jYWxsX2FyZ3NfbGlzdC5hcHBlbmQoX0NhbGwoKGFyZ3MsIGt3YXJncyksIHR3bz1UcnVlKSkKKworICAgICAgICBfbmV3X25hbWUgPSBzZWxmLl9tb2NrX25ld19uYW1lCisgICAgICAgIF9uZXdfcGFyZW50ID0gc2VsZi5fbW9ja19uZXdfcGFyZW50CisgICAgICAgIHNlbGYubW9ja19jYWxscy5hcHBlbmQoX0NhbGwoKCcnLCBhcmdzLCBrd2FyZ3MpKSkKKworICAgICAgICBzZWVuID0gc2V0KCkKKyAgICAgICAgc2tpcF9uZXh0X2RvdCA9IF9uZXdfbmFtZSA9PSAnKCknCisgICAgICAgIGRvX21ldGhvZF9jYWxscyA9IHNlbGYuX21vY2tfcGFyZW50IGlzIG5vdCBOb25lCisgICAgICAgIG5hbWUgPSBzZWxmLl9tb2NrX25hbWUKKyAgICAgICAgd2hpbGUgX25ld19wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0aGlzX21vY2tfY2FsbCA9IF9DYWxsKChfbmV3X25hbWUsIGFyZ3MsIGt3YXJncykpCisgICAgICAgICAgICBpZiBfbmV3X3BhcmVudC5fbW9ja19uZXdfbmFtZToKKyAgICAgICAgICAgICAgICBkb3QgPSAnLicKKyAgICAgICAgICAgICAgICBpZiBza2lwX25leHRfZG90OgorICAgICAgICAgICAgICAgICAgICBkb3QgPSAnJworCisgICAgICAgICAgICAgICAgc2tpcF9uZXh0X2RvdCA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgX25ld19wYXJlbnQuX21vY2tfbmV3X25hbWUgPT0gJygpJzoKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9uZXh0X2RvdCA9IFRydWUKKworICAgICAgICAgICAgICAgIF9uZXdfbmFtZSA9IF9uZXdfcGFyZW50Ll9tb2NrX25ld19uYW1lICsgZG90ICsgX25ld19uYW1lCisKKyAgICAgICAgICAgIGlmIGRvX21ldGhvZF9jYWxsczoKKyAgICAgICAgICAgICAgICBpZiBfbmV3X25hbWUgPT0gbmFtZToKKyAgICAgICAgICAgICAgICAgICAgdGhpc19tZXRob2RfY2FsbCA9IHRoaXNfbW9ja19jYWxsCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGhpc19tZXRob2RfY2FsbCA9IF9DYWxsKChuYW1lLCBhcmdzLCBrd2FyZ3MpKQorICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50Lm1ldGhvZF9jYWxscy5hcHBlbmQodGhpc19tZXRob2RfY2FsbCkKKworICAgICAgICAgICAgICAgIGRvX21ldGhvZF9jYWxscyA9IF9uZXdfcGFyZW50Ll9tb2NrX3BhcmVudCBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgIGlmIGRvX21ldGhvZF9jYWxsczoKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IF9uZXdfcGFyZW50Ll9tb2NrX25hbWUgKyAnLicgKyBuYW1lCisKKyAgICAgICAgICAgIF9uZXdfcGFyZW50Lm1vY2tfY2FsbHMuYXBwZW5kKHRoaXNfbW9ja19jYWxsKQorICAgICAgICAgICAgX25ld19wYXJlbnQgPSBfbmV3X3BhcmVudC5fbW9ja19uZXdfcGFyZW50CisKKyAgICAgICAgICAgICMgdXNlIGlkcyBoZXJlIHNvIGFzIG5vdCB0byBjYWxsIF9faGFzaF9fIG9uIHRoZSBtb2NrcworICAgICAgICAgICAgX25ld19wYXJlbnRfaWQgPSBpZChfbmV3X3BhcmVudCkKKyAgICAgICAgICAgIGlmIF9uZXdfcGFyZW50X2lkIGluIHNlZW46CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlZW4uYWRkKF9uZXdfcGFyZW50X2lkKQorCisgICAgICAgIHJldF92YWwgPSBERUZBVUxUCisgICAgICAgIGVmZmVjdCA9IHNlbGYuc2lkZV9lZmZlY3QKKyAgICAgICAgaWYgZWZmZWN0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgX2lzX2V4Y2VwdGlvbihlZmZlY3QpOgorICAgICAgICAgICAgICAgIHJhaXNlIGVmZmVjdAorCisgICAgICAgICAgICBpZiBub3QgX2NhbGxhYmxlKGVmZmVjdCk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV4dChlZmZlY3QpCisgICAgICAgICAgICAgICAgaWYgX2lzX2V4Y2VwdGlvbihyZXN1bHQpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSByZXN1bHQKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICAgICAgICAgIHJldF92YWwgPSBlZmZlY3QoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgaWYgcmV0X3ZhbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgICAgIHJldF92YWwgPSBzZWxmLnJldHVybl92YWx1ZQorCisgICAgICAgIGlmIChzZWxmLl9tb2NrX3dyYXBzIGlzIG5vdCBOb25lIGFuZAorICAgICAgICAgICAgIHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlIGlzIERFRkFVTFQpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21vY2tfd3JhcHMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBpZiByZXRfdmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICByZXRfdmFsID0gc2VsZi5yZXR1cm5fdmFsdWUKKyAgICAgICAgcmV0dXJuIHJldF92YWwKKworCisKK2NsYXNzIE1vY2soQ2FsbGFibGVNaXhpbiwgTm9uQ2FsbGFibGVNb2NrKToKKyAgICAiIiIKKyAgICBDcmVhdGUgYSBuZXcgYE1vY2tgIG9iamVjdC4gYE1vY2tgIHRha2VzIHNldmVyYWwgb3B0aW9uYWwgYXJndW1lbnRzCisgICAgdGhhdCBzcGVjaWZ5IHRoZSBiZWhhdmlvdXIgb2YgdGhlIE1vY2sgb2JqZWN0OgorCisgICAgKiBgc3BlY2A6IFRoaXMgY2FuIGJlIGVpdGhlciBhIGxpc3Qgb2Ygc3RyaW5ncyBvciBhbiBleGlzdGluZyBvYmplY3QgKGEKKyAgICAgIGNsYXNzIG9yIGluc3RhbmNlKSB0aGF0IGFjdHMgYXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBtb2NrIG9iamVjdC4gSWYKKyAgICAgIHlvdSBwYXNzIGluIGFuIG9iamVjdCB0aGVuIGEgbGlzdCBvZiBzdHJpbmdzIGlzIGZvcm1lZCBieSBjYWxsaW5nIGRpciBvbgorICAgICAgdGhlIG9iamVjdCAoZXhjbHVkaW5nIHVuc3VwcG9ydGVkIG1hZ2ljIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMpLiBBY2Nlc3NpbmcKKyAgICAgIGFueSBhdHRyaWJ1dGUgbm90IGluIHRoaXMgbGlzdCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICAgIElmIGBzcGVjYCBpcyBhbiBvYmplY3QgKHJhdGhlciB0aGFuIGEgbGlzdCBvZiBzdHJpbmdzKSB0aGVuCisgICAgICBgbW9jay5fX2NsYXNzX19gIHJldHVybnMgdGhlIGNsYXNzIG9mIHRoZSBzcGVjIG9iamVjdC4gVGhpcyBhbGxvd3MgbW9ja3MKKyAgICAgIHRvIHBhc3MgYGlzaW5zdGFuY2VgIHRlc3RzLgorCisgICAgKiBgc3BlY19zZXRgOiBBIHN0cmljdGVyIHZhcmlhbnQgb2YgYHNwZWNgLiBJZiB1c2VkLCBhdHRlbXB0aW5nIHRvICpzZXQqCisgICAgICBvciBnZXQgYW4gYXR0cmlidXRlIG9uIHRoZSBtb2NrIHRoYXQgaXNuJ3Qgb24gdGhlIG9iamVjdCBwYXNzZWQgYXMKKyAgICAgIGBzcGVjX3NldGAgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgKiBgc2lkZV9lZmZlY3RgOiBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgTW9jayBpcyBjYWxsZWQuIFNlZQorICAgICAgdGhlIGBzaWRlX2VmZmVjdGAgYXR0cmlidXRlLiBVc2VmdWwgZm9yIHJhaXNpbmcgZXhjZXB0aW9ucyBvcgorICAgICAgZHluYW1pY2FsbHkgY2hhbmdpbmcgcmV0dXJuIHZhbHVlcy4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBzYW1lCisgICAgICBhcmd1bWVudHMgYXMgdGhlIG1vY2ssIGFuZCB1bmxlc3MgaXQgcmV0dXJucyBgREVGQVVMVGAsIHRoZSByZXR1cm4KKyAgICAgIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlLgorCisgICAgICBJZiBgc2lkZV9lZmZlY3RgIGlzIGFuIGl0ZXJhYmxlIHRoZW4gZWFjaCBjYWxsIHRvIHRoZSBtb2NrIHdpbGwgcmV0dXJuCisgICAgICB0aGUgbmV4dCB2YWx1ZSBmcm9tIHRoZSBpdGVyYWJsZS4gSWYgYW55IG9mIHRoZSBtZW1iZXJzIG9mIHRoZSBpdGVyYWJsZQorICAgICAgYXJlIGV4Y2VwdGlvbnMgdGhleSB3aWxsIGJlIHJhaXNlZCBpbnN0ZWFkIG9mIHJldHVybmVkLgorCisgICAgICBJZiBgc2lkZV9lZmZlY3RgIGlzIGFuIGl0ZXJhYmxlIHRoZW4gZWFjaCBjYWxsIHRvIHRoZSBtb2NrIHdpbGwgcmV0dXJuCisgICAgICB0aGUgbmV4dCB2YWx1ZSBmcm9tIHRoZSBpdGVyYWJsZS4KKworICAgICogYHJldHVybl92YWx1ZWA6IFRoZSB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4gQnkgZGVmYXVsdAorICAgICAgdGhpcyBpcyBhIG5ldyBNb2NrIChjcmVhdGVkIG9uIGZpcnN0IGFjY2VzcykuIFNlZSB0aGUKKyAgICAgIGByZXR1cm5fdmFsdWVgIGF0dHJpYnV0ZS4KKworICAgICogYHdyYXBzYDogSXRlbSBmb3IgdGhlIG1vY2sgb2JqZWN0IHRvIHdyYXAuIElmIGB3cmFwc2AgaXMgbm90IE5vbmUgdGhlbgorICAgICAgY2FsbGluZyB0aGUgTW9jayB3aWxsIHBhc3MgdGhlIGNhbGwgdGhyb3VnaCB0byB0aGUgd3JhcHBlZCBvYmplY3QKKyAgICAgIChyZXR1cm5pbmcgdGhlIHJlYWwgcmVzdWx0KS4gQXR0cmlidXRlIGFjY2VzcyBvbiB0aGUgbW9jayB3aWxsIHJldHVybiBhCisgICAgICBNb2NrIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QKKyAgICAgIChzbyBhdHRlbXB0aW5nIHRvIGFjY2VzcyBhbiBhdHRyaWJ1dGUgdGhhdCBkb2Vzbid0IGV4aXN0IHdpbGwgcmFpc2UgYW4KKyAgICAgIGBBdHRyaWJ1dGVFcnJvcmApLgorCisgICAgICBJZiB0aGUgbW9jayBoYXMgYW4gZXhwbGljaXQgYHJldHVybl92YWx1ZWAgc2V0IHRoZW4gY2FsbHMgYXJlIG5vdCBwYXNzZWQKKyAgICAgIHRvIHRoZSB3cmFwcGVkIG9iamVjdCBhbmQgdGhlIGByZXR1cm5fdmFsdWVgIGlzIHJldHVybmVkIGluc3RlYWQuCisKKyAgICAqIGBuYW1lYDogSWYgdGhlIG1vY2sgaGFzIGEgbmFtZSB0aGVuIGl0IHdpbGwgYmUgdXNlZCBpbiB0aGUgcmVwciBvZiB0aGUKKyAgICAgIG1vY2suIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nLiBUaGUgbmFtZSBpcyBwcm9wYWdhdGVkIHRvIGNoaWxkCisgICAgICBtb2Nrcy4KKworICAgIE1vY2tzIGNhbiBhbHNvIGJlIGNhbGxlZCB3aXRoIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cy4gVGhlc2Ugd2lsbCBiZQorICAgIHVzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYWZ0ZXIgaXQgaXMgY3JlYXRlZC4KKyAgICAiIiIKKworCisKK2RlZiBfZG90X2xvb2t1cCh0aGluZywgY29tcCwgaW1wb3J0X3BhdGgpOgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGdldGF0dHIodGhpbmcsIGNvbXApCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBfX2ltcG9ydF9fKGltcG9ydF9wYXRoKQorICAgICAgICByZXR1cm4gZ2V0YXR0cih0aGluZywgY29tcCkKKworCitkZWYgX2ltcG9ydGVyKHRhcmdldCk6CisgICAgY29tcG9uZW50cyA9IHRhcmdldC5zcGxpdCgnLicpCisgICAgaW1wb3J0X3BhdGggPSBjb21wb25lbnRzLnBvcCgwKQorICAgIHRoaW5nID0gX19pbXBvcnRfXyhpbXBvcnRfcGF0aCkKKworICAgIGZvciBjb21wIGluIGNvbXBvbmVudHM6CisgICAgICAgIGltcG9ydF9wYXRoICs9ICIuJXMiICUgY29tcAorICAgICAgICB0aGluZyA9IF9kb3RfbG9va3VwKHRoaW5nLCBjb21wLCBpbXBvcnRfcGF0aCkKKyAgICByZXR1cm4gdGhpbmcKKworCitkZWYgX2lzX3N0YXJ0ZWQocGF0Y2hlcik6CisgICAgIyBYWFhYIGhvcnJpYmxlCisgICAgcmV0dXJuIGhhc2F0dHIocGF0Y2hlciwgJ2lzX2xvY2FsJykKKworCitjbGFzcyBfcGF0Y2gob2JqZWN0KToKKworICAgIGF0dHJpYnV0ZV9uYW1lID0gTm9uZQorICAgIF9hY3RpdmVfcGF0Y2hlcyA9IHNldCgpCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgICAgICBzZWxmLCBnZXR0ZXIsIGF0dHJpYnV0ZSwgbmV3LCBzcGVjLCBjcmVhdGUsCisgICAgICAgICAgICBzcGVjX3NldCwgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwga3dhcmdzCisgICAgICAgICk6CisgICAgICAgIGlmIG5ld19jYWxsYWJsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5ldyBpcyBub3QgREVGQVVMVDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHVzZSAnbmV3JyBhbmQgJ25ld19jYWxsYWJsZScgdG9nZXRoZXIiCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgYXV0b3NwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgJ2F1dG9zcGVjJyBhbmQgJ25ld19jYWxsYWJsZScgdG9nZXRoZXIiCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuZ2V0dGVyID0gZ2V0dGVyCisgICAgICAgIHNlbGYuYXR0cmlidXRlID0gYXR0cmlidXRlCisgICAgICAgIHNlbGYubmV3ID0gbmV3CisgICAgICAgIHNlbGYubmV3X2NhbGxhYmxlID0gbmV3X2NhbGxhYmxlCisgICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKKyAgICAgICAgc2VsZi5jcmVhdGUgPSBjcmVhdGUKKyAgICAgICAgc2VsZi5oYXNfbG9jYWwgPSBGYWxzZQorICAgICAgICBzZWxmLnNwZWNfc2V0ID0gc3BlY19zZXQKKyAgICAgICAgc2VsZi5hdXRvc3BlYyA9IGF1dG9zcGVjCisgICAgICAgIHNlbGYua3dhcmdzID0ga3dhcmdzCisgICAgICAgIHNlbGYuYWRkaXRpb25hbF9wYXRjaGVycyA9IFtdCisKKworICAgIGRlZiBjb3B5KHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gX3BhdGNoKAorICAgICAgICAgICAgc2VsZi5nZXR0ZXIsIHNlbGYuYXR0cmlidXRlLCBzZWxmLm5ldywgc2VsZi5zcGVjLAorICAgICAgICAgICAgc2VsZi5jcmVhdGUsIHNlbGYuc3BlY19zZXQsCisgICAgICAgICAgICBzZWxmLmF1dG9zcGVjLCBzZWxmLm5ld19jYWxsYWJsZSwgc2VsZi5rd2FyZ3MKKyAgICAgICAgKQorICAgICAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gc2VsZi5hdHRyaWJ1dGVfbmFtZQorICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMgPSBbCisgICAgICAgICAgICBwLmNvcHkoKSBmb3IgcCBpbiBzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnMKKyAgICAgICAgXQorICAgICAgICByZXR1cm4gcGF0Y2hlcgorCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgZnVuYyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZnVuYywgdHlwZSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNvcmF0ZV9jbGFzcyhmdW5jKQorICAgICAgICByZXR1cm4gc2VsZi5kZWNvcmF0ZV9jYWxsYWJsZShmdW5jKQorCisKKyAgICBkZWYgZGVjb3JhdGVfY2xhc3Moc2VsZiwga2xhc3MpOgorICAgICAgICBmb3IgYXR0ciBpbiBkaXIoa2xhc3MpOgorICAgICAgICAgICAgaWYgbm90IGF0dHIuc3RhcnRzd2l0aChwYXRjaC5URVNUX1BSRUZJWCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGdldGF0dHIoa2xhc3MsIGF0dHIpCisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihhdHRyX3ZhbHVlLCAiX19jYWxsX18iKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBwYXRjaGVyID0gc2VsZi5jb3B5KCkKKyAgICAgICAgICAgIHNldGF0dHIoa2xhc3MsIGF0dHIsIHBhdGNoZXIoYXR0cl92YWx1ZSkpCisgICAgICAgIHJldHVybiBrbGFzcworCisKKyAgICBkZWYgZGVjb3JhdGVfY2FsbGFibGUoc2VsZiwgZnVuYyk6CisgICAgICAgIGlmIGhhc2F0dHIoZnVuYywgJ3BhdGNoaW5ncycpOgorICAgICAgICAgICAgZnVuYy5wYXRjaGluZ3MuYXBwZW5kKHNlbGYpCisgICAgICAgICAgICByZXR1cm4gZnVuYworCisgICAgICAgIEB3cmFwcyhmdW5jKQorICAgICAgICBkZWYgcGF0Y2hlZCgqYXJncywgKiprZXl3YXJncyk6CisgICAgICAgICAgICBleHRyYV9hcmdzID0gW10KKyAgICAgICAgICAgIGVudGVyZWRfcGF0Y2hlcnMgPSBbXQorCisgICAgICAgICAgICBleGNfaW5mbyA9IHR1cGxlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcGF0Y2hpbmcgaW4gcGF0Y2hlZC5wYXRjaGluZ3M6CisgICAgICAgICAgICAgICAgICAgIGFyZyA9IHBhdGNoaW5nLl9fZW50ZXJfXygpCisgICAgICAgICAgICAgICAgICAgIGVudGVyZWRfcGF0Y2hlcnMuYXBwZW5kKHBhdGNoaW5nKQorICAgICAgICAgICAgICAgICAgICBpZiBwYXRjaGluZy5hdHRyaWJ1dGVfbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleXdhcmdzLnVwZGF0ZShhcmcpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcGF0Y2hpbmcubmV3IGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9hcmdzLmFwcGVuZChhcmcpCisKKyAgICAgICAgICAgICAgICBhcmdzICs9IHR1cGxlKGV4dHJhX2FyZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa2V5d2FyZ3MpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgaWYgKHBhdGNoaW5nIG5vdCBpbiBlbnRlcmVkX3BhdGNoZXJzIGFuZAorICAgICAgICAgICAgICAgICAgICBfaXNfc3RhcnRlZChwYXRjaGluZykpOgorICAgICAgICAgICAgICAgICAgICAjIHRoZSBwYXRjaGVyIG1heSBoYXZlIGJlZW4gc3RhcnRlZCwgYnV0IGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAjIHJhaXNlZCB3aGlsc3QgZW50ZXJpbmcgb25lIG9mIGl0cyBhZGRpdGlvbmFsX3BhdGNoZXJzCisgICAgICAgICAgICAgICAgICAgIGVudGVyZWRfcGF0Y2hlcnMuYXBwZW5kKHBhdGNoaW5nKQorICAgICAgICAgICAgICAgICMgUGFzcyB0aGUgZXhjZXB0aW9uIHRvIF9fZXhpdF9fCisgICAgICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgICMgcmUtcmFpc2UgdGhlIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZvciBwYXRjaGluZyBpbiByZXZlcnNlZChlbnRlcmVkX3BhdGNoZXJzKToKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hpbmcuX19leGl0X18oKmV4Y19pbmZvKQorCisgICAgICAgIHBhdGNoZWQucGF0Y2hpbmdzID0gW3NlbGZdCisgICAgICAgIHJldHVybiBwYXRjaGVkCisKKworICAgIGRlZiBnZXRfb3JpZ2luYWwoc2VsZik6CisgICAgICAgIHRhcmdldCA9IHNlbGYuZ2V0dGVyKCkKKyAgICAgICAgbmFtZSA9IHNlbGYuYXR0cmlidXRlCisKKyAgICAgICAgb3JpZ2luYWwgPSBERUZBVUxUCisgICAgICAgIGxvY2FsID0gRmFsc2UKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnaW5hbCA9IHRhcmdldC5fX2RpY3RfX1tuYW1lXQorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBLZXlFcnJvcik6CisgICAgICAgICAgICBvcmlnaW5hbCA9IGdldGF0dHIodGFyZ2V0LCBuYW1lLCBERUZBVUxUKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9jYWwgPSBUcnVlCisKKyAgICAgICAgaWYgbm90IHNlbGYuY3JlYXRlIGFuZCBvcmlnaW5hbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCisgICAgICAgICAgICAgICAgIiVzIGRvZXMgbm90IGhhdmUgdGhlIGF0dHJpYnV0ZSAlciIgJSAodGFyZ2V0LCBuYW1lKQorICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gb3JpZ2luYWwsIGxvY2FsCisKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICIiIlBlcmZvcm0gdGhlIHBhdGNoLiIiIgorICAgICAgICBuZXcsIHNwZWMsIHNwZWNfc2V0ID0gc2VsZi5uZXcsIHNlbGYuc3BlYywgc2VsZi5zcGVjX3NldAorICAgICAgICBhdXRvc3BlYywga3dhcmdzID0gc2VsZi5hdXRvc3BlYywgc2VsZi5rd2FyZ3MKKyAgICAgICAgbmV3X2NhbGxhYmxlID0gc2VsZi5uZXdfY2FsbGFibGUKKyAgICAgICAgc2VsZi50YXJnZXQgPSBzZWxmLmdldHRlcigpCisKKyAgICAgICAgIyBub3JtYWxpc2UgRmFsc2UgdG8gTm9uZQorICAgICAgICBpZiBzcGVjIGlzIEZhbHNlOgorICAgICAgICAgICAgc3BlYyA9IE5vbmUKKyAgICAgICAgaWYgc3BlY19zZXQgaXMgRmFsc2U6CisgICAgICAgICAgICBzcGVjX3NldCA9IE5vbmUKKyAgICAgICAgaWYgYXV0b3NwZWMgaXMgRmFsc2U6CisgICAgICAgICAgICBhdXRvc3BlYyA9IE5vbmUKKworICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIGFuZCBhdXRvc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3Qgc3BlY2lmeSBzcGVjIGFuZCBhdXRvc3BlYyIpCisgICAgICAgIGlmICgoc3BlYyBpcyBub3QgTm9uZSBvciBhdXRvc3BlYyBpcyBub3QgTm9uZSkgYW5kCisgICAgICAgICAgICBzcGVjX3NldCBub3QgaW4gKFRydWUsIE5vbmUpKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgcHJvdmlkZSBleHBsaWNpdCBzcGVjX3NldCAqYW5kKiBzcGVjIG9yIGF1dG9zcGVjIikKKworICAgICAgICBvcmlnaW5hbCwgbG9jYWwgPSBzZWxmLmdldF9vcmlnaW5hbCgpCisKKyAgICAgICAgaWYgbmV3IGlzIERFRkFVTFQgYW5kIGF1dG9zcGVjIGlzIE5vbmU6CisgICAgICAgICAgICBpbmhlcml0ID0gRmFsc2UKKyAgICAgICAgICAgIGlmIHNwZWMgaXMgVHJ1ZToKKyAgICAgICAgICAgICAgICAjIHNldCBzcGVjIHRvIHRoZSBvYmplY3Qgd2UgYXJlIHJlcGxhY2luZworICAgICAgICAgICAgICAgIHNwZWMgPSBvcmlnaW5hbAorICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHNwZWNfc2V0ID0gb3JpZ2luYWwKKyAgICAgICAgICAgICAgICAgICAgc3BlYyA9IE5vbmUKKyAgICAgICAgICAgIGVsaWYgc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzcGVjX3NldCBpcyBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzcGVjX3NldCA9IHNwZWMKKyAgICAgICAgICAgICAgICAgICAgc3BlYyA9IE5vbmUKKyAgICAgICAgICAgIGVsaWYgc3BlY19zZXQgaXMgVHJ1ZToKKyAgICAgICAgICAgICAgICBzcGVjX3NldCA9IG9yaWdpbmFsCisKKyAgICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmUgb3Igc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgb3JpZ2luYWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCB1c2UgJ3NwZWMnIHdpdGggY3JlYXRlPVRydWUiKQorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3JpZ2luYWwsIHR5cGUpOgorICAgICAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIHBhdGNoaW5nIG91dCBhIGNsYXNzIGFuZCB0aGVyZSBpcyBhIHNwZWMKKyAgICAgICAgICAgICAgICAgICAgaW5oZXJpdCA9IFRydWUKKworICAgICAgICAgICAgS2xhc3MgPSBNYWdpY01vY2sKKyAgICAgICAgICAgIF9rd2FyZ3MgPSB7fQorICAgICAgICAgICAgaWYgbmV3X2NhbGxhYmxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIEtsYXNzID0gbmV3X2NhbGxhYmxlCisgICAgICAgICAgICBlbGlmIHNwZWMgaXMgbm90IE5vbmUgb3Igc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGhpc19zcGVjID0gc3BlYworICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0aGlzX3NwZWMgPSBzcGVjX3NldAorICAgICAgICAgICAgICAgIGlmIF9pc19saXN0KHRoaXNfc3BlYyk6CisgICAgICAgICAgICAgICAgICAgIG5vdF9jYWxsYWJsZSA9ICdfX2NhbGxfXycgbm90IGluIHRoaXNfc3BlYworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG5vdF9jYWxsYWJsZSA9IG5vdCBjYWxsYWJsZSh0aGlzX3NwZWMpCisgICAgICAgICAgICAgICAgaWYgbm90X2NhbGxhYmxlOgorICAgICAgICAgICAgICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisKKyAgICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgX2t3YXJnc1snc3BlYyddID0gc3BlYworICAgICAgICAgICAgaWYgc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgX2t3YXJnc1snc3BlY19zZXQnXSA9IHNwZWNfc2V0CisKKyAgICAgICAgICAgICMgYWRkIGEgbmFtZSB0byBtb2NrcworICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2UoS2xhc3MsIHR5cGUpIGFuZAorICAgICAgICAgICAgICAgIGlzc3ViY2xhc3MoS2xhc3MsIE5vbkNhbGxhYmxlTW9jaykgYW5kIHNlbGYuYXR0cmlidXRlKToKKyAgICAgICAgICAgICAgICBfa3dhcmdzWyduYW1lJ10gPSBzZWxmLmF0dHJpYnV0ZQorCisgICAgICAgICAgICBfa3dhcmdzLnVwZGF0ZShrd2FyZ3MpCisgICAgICAgICAgICBuZXcgPSBLbGFzcygqKl9rd2FyZ3MpCisKKyAgICAgICAgICAgIGlmIGluaGVyaXQgYW5kIF9pc19pbnN0YW5jZV9tb2NrKG5ldyk6CisgICAgICAgICAgICAgICAgIyB3ZSBjYW4gb25seSB0ZWxsIGlmIHRoZSBpbnN0YW5jZSBzaG91bGQgYmUgY2FsbGFibGUgaWYgdGhlCisgICAgICAgICAgICAgICAgIyBzcGVjIGlzIG5vdCBhIGxpc3QKKyAgICAgICAgICAgICAgICB0aGlzX3NwZWMgPSBzcGVjCisgICAgICAgICAgICAgICAgaWYgc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHRoaXNfc3BlYyA9IHNwZWNfc2V0CisgICAgICAgICAgICAgICAgaWYgKG5vdCBfaXNfbGlzdCh0aGlzX3NwZWMpIGFuZCBub3QKKyAgICAgICAgICAgICAgICAgICAgX2luc3RhbmNlX2NhbGxhYmxlKHRoaXNfc3BlYykpOgorICAgICAgICAgICAgICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisKKyAgICAgICAgICAgICAgICBfa3dhcmdzLnBvcCgnbmFtZScpCisgICAgICAgICAgICAgICAgbmV3LnJldHVybl92YWx1ZSA9IEtsYXNzKF9uZXdfcGFyZW50PW5ldywgX25ld19uYW1lPScoKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX2t3YXJncykKKyAgICAgICAgZWxpZiBhdXRvc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgc3BlYyBpcyBpZ25vcmVkLCBuZXcgKm11c3QqIGJlIGRlZmF1bHQsIHNwZWNfc2V0IGlzIHRyZWF0ZWQKKyAgICAgICAgICAgICMgYXMgYSBib29sZWFuLiBTaG91bGQgd2UgY2hlY2sgc3BlYyBpcyBub3QgTm9uZSBhbmQgdGhhdCBzcGVjX3NldAorICAgICAgICAgICAgIyBpcyBhIGJvb2w/CisgICAgICAgICAgICBpZiBuZXcgaXMgbm90IERFRkFVTFQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiYXV0b3NwZWMgY3JlYXRlcyB0aGUgbW9jayBmb3IgeW91LiBDYW4ndCBzcGVjaWZ5ICIKKyAgICAgICAgICAgICAgICAgICAgImF1dG9zcGVjIGFuZCBuZXcuIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIG9yaWdpbmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCB1c2UgJ2F1dG9zcGVjJyB3aXRoIGNyZWF0ZT1UcnVlIikKKyAgICAgICAgICAgIHNwZWNfc2V0ID0gYm9vbChzcGVjX3NldCkKKyAgICAgICAgICAgIGlmIGF1dG9zcGVjIGlzIFRydWU6CisgICAgICAgICAgICAgICAgYXV0b3NwZWMgPSBvcmlnaW5hbAorCisgICAgICAgICAgICBuZXcgPSBjcmVhdGVfYXV0b3NwZWMoYXV0b3NwZWMsIHNwZWNfc2V0PXNwZWNfc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uYW1lPXNlbGYuYXR0cmlidXRlLCAqKmt3YXJncykKKyAgICAgICAgZWxpZiBrd2FyZ3M6CisgICAgICAgICAgICAjIGNhbid0IHNldCBrZXl3b3JkIGFyZ3Mgd2hlbiB3ZSBhcmVuJ3QgY3JlYXRpbmcgdGhlIG1vY2sKKyAgICAgICAgICAgICMgWFhYWCBJZiBuZXcgaXMgYSBNb2NrIHdlIGNvdWxkIGNhbGwgbmV3LmNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBwYXNzIGt3YXJncyB0byBhIG1vY2sgd2UgYXJlbid0IGNyZWF0aW5nIikKKworICAgICAgICBuZXdfYXR0ciA9IG5ldworCisgICAgICAgIHNlbGYudGVtcF9vcmlnaW5hbCA9IG9yaWdpbmFsCisgICAgICAgIHNlbGYuaXNfbG9jYWwgPSBsb2NhbAorICAgICAgICBzZXRhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSwgbmV3X2F0dHIpCisgICAgICAgIGlmIHNlbGYuYXR0cmlidXRlX25hbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBleHRyYV9hcmdzID0ge30KKyAgICAgICAgICAgIGlmIHNlbGYubmV3IGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgZXh0cmFfYXJnc1tzZWxmLmF0dHJpYnV0ZV9uYW1lXSA9ICBuZXcKKyAgICAgICAgICAgIGZvciBwYXRjaGluZyBpbiBzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnM6CisgICAgICAgICAgICAgICAgYXJnID0gcGF0Y2hpbmcuX19lbnRlcl9fKCkKKyAgICAgICAgICAgICAgICBpZiBwYXRjaGluZy5uZXcgaXMgREVGQVVMVDoKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJncy51cGRhdGUoYXJnKQorICAgICAgICAgICAgcmV0dXJuIGV4dHJhX2FyZ3MKKworICAgICAgICByZXR1cm4gbmV3CisKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2luZm8pOgorICAgICAgICAiIiJVbmRvIHRoZSBwYXRjaC4iIiIKKyAgICAgICAgaWYgbm90IF9pc19zdGFydGVkKHNlbGYpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdzdG9wIGNhbGxlZCBvbiB1bnN0YXJ0ZWQgcGF0Y2hlcicpCisKKyAgICAgICAgaWYgc2VsZi5pc19sb2NhbCBhbmQgc2VsZi50ZW1wX29yaWdpbmFsIGlzIG5vdCBERUZBVUxUOgorICAgICAgICAgICAgc2V0YXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUsIHNlbGYudGVtcF9vcmlnaW5hbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRlbGF0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuY3JlYXRlIGFuZCBub3QgaGFzYXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUpOgorICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBwcm94eSBvYmplY3RzIGxpa2UgZGphbmdvIHNldHRpbmdzCisgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUsIHNlbGYudGVtcF9vcmlnaW5hbCkKKworICAgICAgICBkZWwgc2VsZi50ZW1wX29yaWdpbmFsCisgICAgICAgIGRlbCBzZWxmLmlzX2xvY2FsCisgICAgICAgIGRlbCBzZWxmLnRhcmdldAorICAgICAgICBmb3IgcGF0Y2hlciBpbiByZXZlcnNlZChzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnMpOgorICAgICAgICAgICAgaWYgX2lzX3N0YXJ0ZWQocGF0Y2hlcik6CisgICAgICAgICAgICAgICAgcGF0Y2hlci5fX2V4aXRfXygqZXhjX2luZm8pCisKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgIiIiQWN0aXZhdGUgYSBwYXRjaCwgcmV0dXJuaW5nIGFueSBjcmVhdGVkIG1vY2suIiIiCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX19lbnRlcl9fKCkKKyAgICAgICAgc2VsZi5fYWN0aXZlX3BhdGNoZXMuYWRkKHNlbGYpCisgICAgICAgIHJldHVybiByZXN1bHQKKworCisgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgICIiIlN0b3AgYW4gYWN0aXZlIHBhdGNoLiIiIgorICAgICAgICBzZWxmLl9hY3RpdmVfcGF0Y2hlcy5kaXNjYXJkKHNlbGYpCisgICAgICAgIHJldHVybiBzZWxmLl9fZXhpdF9fKCkKKworCisKK2RlZiBfZ2V0X3RhcmdldCh0YXJnZXQpOgorICAgIHRyeToKKyAgICAgICAgdGFyZ2V0LCBhdHRyaWJ1dGUgPSB0YXJnZXQucnNwbGl0KCcuJywgMSkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiTmVlZCBhIHZhbGlkIHRhcmdldCB0byBwYXRjaC4gWW91IHN1cHBsaWVkOiAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldCwpKQorICAgIGdldHRlciA9IGxhbWJkYTogX2ltcG9ydGVyKHRhcmdldCkKKyAgICByZXR1cm4gZ2V0dGVyLCBhdHRyaWJ1dGUKKworCitkZWYgX3BhdGNoX29iamVjdCgKKyAgICAgICAgdGFyZ2V0LCBhdHRyaWJ1dGUsIG5ldz1ERUZBVUxULCBzcGVjPU5vbmUsCisgICAgICAgIGNyZWF0ZT1GYWxzZSwgc3BlY19zZXQ9Tm9uZSwgYXV0b3NwZWM9Tm9uZSwKKyAgICAgICAgbmV3X2NhbGxhYmxlPU5vbmUsICoqa3dhcmdzCisgICAgKToKKyAgICAiIiIKKyAgICBwYXRjaCB0aGUgbmFtZWQgbWVtYmVyIChgYXR0cmlidXRlYCkgb24gYW4gb2JqZWN0IChgdGFyZ2V0YCkgd2l0aCBhIG1vY2sKKyAgICBvYmplY3QuCisKKyAgICBgcGF0Y2gub2JqZWN0YCBjYW4gYmUgdXNlZCBhcyBhIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIEFyZ3VtZW50cyBgbmV3YCwgYHNwZWNgLCBgY3JlYXRlYCwgYHNwZWNfc2V0YCwKKyAgICBgYXV0b3NwZWNgIGFuZCBgbmV3X2NhbGxhYmxlYCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIGBwYXRjaGAuIExpa2UKKyAgICBgcGF0Y2hgLCBgcGF0Y2gub2JqZWN0YCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgZm9yIGNvbmZpZ3VyaW5nCisgICAgdGhlIG1vY2sgb2JqZWN0IGl0IGNyZWF0ZXMuCisKKyAgICBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLm9iamVjdGAgaG9ub3VycyBgcGF0Y2guVEVTVF9QUkVGSVhgCisgICAgZm9yIGNob29zaW5nIHdoaWNoIG1ldGhvZHMgdG8gd3JhcC4KKyAgICAiIiIKKyAgICBnZXR0ZXIgPSBsYW1iZGE6IHRhcmdldAorICAgIHJldHVybiBfcGF0Y2goCisgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwKKyAgICAgICAgc3BlY19zZXQsIGF1dG9zcGVjLCBuZXdfY2FsbGFibGUsIGt3YXJncworICAgICkKKworCitkZWYgX3BhdGNoX211bHRpcGxlKHRhcmdldCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncyk6CisgICAgIiIiUGVyZm9ybSBtdWx0aXBsZSBwYXRjaGVzIGluIGEgc2luZ2xlIGNhbGwuIEl0IHRha2VzIHRoZSBvYmplY3QgdG8gYmUKKyAgICBwYXRjaGVkIChlaXRoZXIgYXMgYW4gb2JqZWN0IG9yIGEgc3RyaW5nIHRvIGZldGNoIHRoZSBvYmplY3QgYnkgaW1wb3J0aW5nKQorICAgIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHBhdGNoZXM6OgorCisgICAgICAgIHdpdGggcGF0Y2gubXVsdGlwbGUoc2V0dGluZ3MsIEZJUlNUX1BBVENIPSdvbmUnLCBTRUNPTkRfUEFUQ0g9J3R3bycpOgorICAgICAgICAgICAgLi4uCisKKyAgICBVc2UgYERFRkFVTFRgIGFzIHRoZSB2YWx1ZSBpZiB5b3Ugd2FudCBgcGF0Y2gubXVsdGlwbGVgIHRvIGNyZWF0ZQorICAgIG1vY2tzIGZvciB5b3UuIEluIHRoaXMgY2FzZSB0aGUgY3JlYXRlZCBtb2NrcyBhcmUgcGFzc2VkIGludG8gYSBkZWNvcmF0ZWQKKyAgICBmdW5jdGlvbiBieSBrZXl3b3JkLCBhbmQgYSBkaWN0aW9uYXJ5IGlzIHJldHVybmVkIHdoZW4gYHBhdGNoLm11bHRpcGxlYCBpcworICAgIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBgcGF0Y2gubXVsdGlwbGVgIGNhbiBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gVGhlIGFyZ3VtZW50cyBgc3BlY2AsIGBzcGVjX3NldGAsIGBjcmVhdGVgLAorICAgIGBhdXRvc3BlY2AgYW5kIGBuZXdfY2FsbGFibGVgIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgYHBhdGNoYC4gVGhlc2UKKyAgICBhcmd1bWVudHMgd2lsbCBiZSBhcHBsaWVkIHRvICphbGwqIHBhdGNoZXMgZG9uZSBieSBgcGF0Y2gubXVsdGlwbGVgLgorCisgICAgV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5tdWx0aXBsZWAgaG9ub3VycyBgcGF0Y2guVEVTVF9QUkVGSVhgCisgICAgZm9yIGNob29zaW5nIHdoaWNoIG1ldGhvZHMgdG8gd3JhcC4KKyAgICAiIiIKKyAgICBpZiB0eXBlKHRhcmdldCkgaXMgc3RyOgorICAgICAgICBnZXR0ZXIgPSBsYW1iZGE6IF9pbXBvcnRlcih0YXJnZXQpCisgICAgZWxzZToKKyAgICAgICAgZ2V0dGVyID0gbGFtYmRhOiB0YXJnZXQKKworICAgIGlmIG5vdCBrd2FyZ3M6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAnTXVzdCBzdXBwbHkgYXQgbGVhc3Qgb25lIGtleXdvcmQgYXJndW1lbnQgd2l0aCBwYXRjaC5tdWx0aXBsZScKKyAgICAgICAgKQorICAgICMgbmVlZCB0byB3cmFwIGluIGEgbGlzdCBmb3IgcHl0aG9uIDMsIHdoZXJlIGl0ZW1zIGlzIGEgdmlldworICAgIGl0ZW1zID0gbGlzdChrd2FyZ3MuaXRlbXMoKSkKKyAgICBhdHRyaWJ1dGUsIG5ldyA9IGl0ZW1zWzBdCisgICAgcGF0Y2hlciA9IF9wYXRjaCgKKyAgICAgICAgZ2V0dGVyLCBhdHRyaWJ1dGUsIG5ldywgc3BlYywgY3JlYXRlLCBzcGVjX3NldCwKKyAgICAgICAgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwge30KKyAgICApCisgICAgcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9IGF0dHJpYnV0ZQorICAgIGZvciBhdHRyaWJ1dGUsIG5ldyBpbiBpdGVtc1sxOl06CisgICAgICAgIHRoaXNfcGF0Y2hlciA9IF9wYXRjaCgKKyAgICAgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwgc3BlY19zZXQsCisgICAgICAgICAgICBhdXRvc3BlYywgbmV3X2NhbGxhYmxlLCB7fQorICAgICAgICApCisgICAgICAgIHRoaXNfcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9IGF0dHJpYnV0ZQorICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMuYXBwZW5kKHRoaXNfcGF0Y2hlcikKKyAgICByZXR1cm4gcGF0Y2hlcgorCisKK2RlZiBwYXRjaCgKKyAgICAgICAgdGFyZ2V0LCBuZXc9REVGQVVMVCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsCisgICAgICAgIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncworICAgICk6CisgICAgIiIiCisgICAgYHBhdGNoYCBhY3RzIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gSW5zaWRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiBvciB3aXRoIHN0YXRlbWVudCwgdGhlIGB0YXJnZXRgCisgICAgaXMgcGF0Y2hlZCB3aXRoIGEgYG5ld2Agb2JqZWN0LiBXaGVuIHRoZSBmdW5jdGlvbi93aXRoIHN0YXRlbWVudCBleGl0cworICAgIHRoZSBwYXRjaCBpcyB1bmRvbmUuCisKKyAgICBJZiBgbmV3YCBpcyBvbWl0dGVkLCB0aGVuIHRoZSB0YXJnZXQgaXMgcmVwbGFjZWQgd2l0aCBhCisgICAgYE1hZ2ljTW9ja2AuIElmIGBwYXRjaGAgaXMgdXNlZCBhcyBhIGRlY29yYXRvciBhbmQgYG5ld2AgaXMKKyAgICBvbWl0dGVkLCB0aGUgY3JlYXRlZCBtb2NrIGlzIHBhc3NlZCBpbiBhcyBhbiBleHRyYSBhcmd1bWVudCB0byB0aGUKKyAgICBkZWNvcmF0ZWQgZnVuY3Rpb24uIElmIGBwYXRjaGAgaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciB0aGUgY3JlYXRlZAorICAgIG1vY2sgaXMgcmV0dXJuZWQgYnkgdGhlIGNvbnRleHQgbWFuYWdlci4KKworICAgIGB0YXJnZXRgIHNob3VsZCBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSBgJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZSdgLiBUaGUKKyAgICBgdGFyZ2V0YCBpcyBpbXBvcnRlZCBhbmQgdGhlIHNwZWNpZmllZCBvYmplY3QgcmVwbGFjZWQgd2l0aCB0aGUgYG5ld2AKKyAgICBvYmplY3QsIHNvIHRoZSBgdGFyZ2V0YCBtdXN0IGJlIGltcG9ydGFibGUgZnJvbSB0aGUgZW52aXJvbm1lbnQgeW91IGFyZQorICAgIGNhbGxpbmcgYHBhdGNoYCBmcm9tLiBUaGUgdGFyZ2V0IGlzIGltcG9ydGVkIHdoZW4gdGhlIGRlY29yYXRlZCBmdW5jdGlvbgorICAgIGlzIGV4ZWN1dGVkLCBub3QgYXQgZGVjb3JhdGlvbiB0aW1lLgorCisgICAgVGhlIGBzcGVjYCBhbmQgYHNwZWNfc2V0YCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSBgTWFnaWNNb2NrYAorICAgIGlmIHBhdGNoIGlzIGNyZWF0aW5nIG9uZSBmb3IgeW91LgorCisgICAgSW4gYWRkaXRpb24geW91IGNhbiBwYXNzIGBzcGVjPVRydWVgIG9yIGBzcGVjX3NldD1UcnVlYCwgd2hpY2ggY2F1c2VzCisgICAgcGF0Y2ggdG8gcGFzcyBpbiB0aGUgb2JqZWN0IGJlaW5nIG1vY2tlZCBhcyB0aGUgc3BlYy9zcGVjX3NldCBvYmplY3QuCisKKyAgICBgbmV3X2NhbGxhYmxlYCBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgY2xhc3MsIG9yIGNhbGxhYmxlIG9iamVjdCwKKyAgICB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIGNyZWF0ZSB0aGUgYG5ld2Agb2JqZWN0LiBCeSBkZWZhdWx0IGBNYWdpY01vY2tgIGlzCisgICAgdXNlZC4KKworICAgIEEgbW9yZSBwb3dlcmZ1bCBmb3JtIG9mIGBzcGVjYCBpcyBgYXV0b3NwZWNgLiBJZiB5b3Ugc2V0IGBhdXRvc3BlYz1UcnVlYAorICAgIHRoZW4gdGhlIG1vY2sgd2l0aCBiZSBjcmVhdGVkIHdpdGggYSBzcGVjIGZyb20gdGhlIG9iamVjdCBiZWluZyByZXBsYWNlZC4KKyAgICBBbGwgYXR0cmlidXRlcyBvZiB0aGUgbW9jayB3aWxsIGFsc28gaGF2ZSB0aGUgc3BlYyBvZiB0aGUgY29ycmVzcG9uZGluZworICAgIGF0dHJpYnV0ZSBvZiB0aGUgb2JqZWN0IGJlaW5nIHJlcGxhY2VkLiBNZXRob2RzIGFuZCBmdW5jdGlvbnMgYmVpbmcKKyAgICBtb2NrZWQgd2lsbCBoYXZlIHRoZWlyIGFyZ3VtZW50cyBjaGVja2VkIGFuZCB3aWxsIHJhaXNlIGEgYFR5cGVFcnJvcmAgaWYKKyAgICB0aGV5IGFyZSBjYWxsZWQgd2l0aCB0aGUgd3Jvbmcgc2lnbmF0dXJlLiBGb3IgbW9ja3MgcmVwbGFjaW5nIGEgY2xhc3MsCisgICAgdGhlaXIgcmV0dXJuIHZhbHVlICh0aGUgJ2luc3RhbmNlJykgd2lsbCBoYXZlIHRoZSBzYW1lIHNwZWMgYXMgdGhlIGNsYXNzLgorCisgICAgSW5zdGVhZCBvZiBgYXV0b3NwZWM9VHJ1ZWAgeW91IGNhbiBwYXNzIGBhdXRvc3BlYz1zb21lX29iamVjdGAgdG8gdXNlIGFuCisgICAgYXJiaXRyYXJ5IG9iamVjdCBhcyB0aGUgc3BlYyBpbnN0ZWFkIG9mIHRoZSBvbmUgYmVpbmcgcmVwbGFjZWQuCisKKyAgICBCeSBkZWZhdWx0IGBwYXRjaGAgd2lsbCBmYWlsIHRvIHJlcGxhY2UgYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0LiBJZgorICAgIHlvdSBwYXNzIGluIGBjcmVhdGU9VHJ1ZWAsIGFuZCB0aGUgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QsIHBhdGNoIHdpbGwKKyAgICBjcmVhdGUgdGhlIGF0dHJpYnV0ZSBmb3IgeW91IHdoZW4gdGhlIHBhdGNoZWQgZnVuY3Rpb24gaXMgY2FsbGVkLCBhbmQKKyAgICBkZWxldGUgaXQgYWdhaW4gYWZ0ZXJ3YXJkcy4gVGhpcyBpcyB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdHMgYWdhaW5zdAorICAgIGF0dHJpYnV0ZXMgdGhhdCB5b3VyIHByb2R1Y3Rpb24gY29kZSBjcmVhdGVzIGF0IHJ1bnRpbWUuIEl0IGlzIG9mZiBieSBieQorICAgIGRlZmF1bHQgYmVjYXVzZSBpdCBjYW4gYmUgZGFuZ2Vyb3VzLiBXaXRoIGl0IHN3aXRjaGVkIG9uIHlvdSBjYW4gd3JpdGUKKyAgICBwYXNzaW5nIHRlc3RzIGFnYWluc3QgQVBJcyB0aGF0IGRvbid0IGFjdHVhbGx5IGV4aXN0IQorCisgICAgUGF0Y2ggY2FuIGJlIHVzZWQgYXMgYSBgVGVzdENhc2VgIGNsYXNzIGRlY29yYXRvci4gSXQgd29ya3MgYnkKKyAgICBkZWNvcmF0aW5nIGVhY2ggdGVzdCBtZXRob2QgaW4gdGhlIGNsYXNzLiBUaGlzIHJlZHVjZXMgdGhlIGJvaWxlcnBsYXRlCisgICAgY29kZSB3aGVuIHlvdXIgdGVzdCBtZXRob2RzIHNoYXJlIGEgY29tbW9uIHBhdGNoaW5ncyBzZXQuIGBwYXRjaGAgZmluZHMKKyAgICB0ZXN0cyBieSBsb29raW5nIGZvciBtZXRob2QgbmFtZXMgdGhhdCBzdGFydCB3aXRoIGBwYXRjaC5URVNUX1BSRUZJWGAuCisgICAgQnkgZGVmYXVsdCB0aGlzIGlzIGB0ZXN0YCwgd2hpY2ggbWF0Y2hlcyB0aGUgd2F5IGB1bml0dGVzdGAgZmluZHMgdGVzdHMuCisgICAgWW91IGNhbiBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIHByZWZpeCBieSBzZXR0aW5nIGBwYXRjaC5URVNUX1BSRUZJWGAuCisKKyAgICBQYXRjaCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgd2l0aCB0aGUgd2l0aCBzdGF0ZW1lbnQuIEhlcmUgdGhlCisgICAgcGF0Y2hpbmcgYXBwbGllcyB0byB0aGUgaW5kZW50ZWQgYmxvY2sgYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50LiBJZiB5b3UKKyAgICB1c2UgImFzIiB0aGVuIHRoZSBwYXRjaGVkIG9iamVjdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBuYW1lIGFmdGVyIHRoZQorICAgICJhcyI7IHZlcnkgdXNlZnVsIGlmIGBwYXRjaGAgaXMgY3JlYXRpbmcgYSBtb2NrIG9iamVjdCBmb3IgeW91LgorCisgICAgYHBhdGNoYCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUgcGFzc2VkIHRvCisgICAgdGhlIGBNb2NrYCAob3IgYG5ld19jYWxsYWJsZWApIG9uIGNvbnN0cnVjdGlvbi4KKworICAgIGBwYXRjaC5kaWN0KC4uLilgLCBgcGF0Y2gubXVsdGlwbGUoLi4uKWAgYW5kIGBwYXRjaC5vYmplY3QoLi4uKWAgYXJlCisgICAgYXZhaWxhYmxlIGZvciBhbHRlcm5hdGUgdXNlLWNhc2VzLgorICAgICIiIgorICAgIGdldHRlciwgYXR0cmlidXRlID0gX2dldF90YXJnZXQodGFyZ2V0KQorICAgIHJldHVybiBfcGF0Y2goCisgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwKKyAgICAgICAgc3BlY19zZXQsIGF1dG9zcGVjLCBuZXdfY2FsbGFibGUsIGt3YXJncworICAgICkKKworCitjbGFzcyBfcGF0Y2hfZGljdChvYmplY3QpOgorICAgICIiIgorICAgIFBhdGNoIGEgZGljdGlvbmFyeSwgb3IgZGljdGlvbmFyeSBsaWtlIG9iamVjdCwgYW5kIHJlc3RvcmUgdGhlIGRpY3Rpb25hcnkKKyAgICB0byBpdHMgb3JpZ2luYWwgc3RhdGUgYWZ0ZXIgdGhlIHRlc3QuCisKKyAgICBgaW5fZGljdGAgY2FuIGJlIGEgZGljdGlvbmFyeSBvciBhIG1hcHBpbmcgbGlrZSBjb250YWluZXIuIElmIGl0IGlzIGEKKyAgICBtYXBwaW5nIHRoZW4gaXQgbXVzdCBhdCBsZWFzdCBzdXBwb3J0IGdldHRpbmcsIHNldHRpbmcgYW5kIGRlbGV0aW5nIGl0ZW1zCisgICAgcGx1cyBpdGVyYXRpbmcgb3ZlciBrZXlzLgorCisgICAgYGluX2RpY3RgIGNhbiBhbHNvIGJlIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIGRpY3Rpb25hcnksIHdoaWNoCisgICAgd2lsbCB0aGVuIGJlIGZldGNoZWQgYnkgaW1wb3J0aW5nIGl0LgorCisgICAgYHZhbHVlc2AgY2FuIGJlIGEgZGljdGlvbmFyeSBvZiB2YWx1ZXMgdG8gc2V0IGluIHRoZSBkaWN0aW9uYXJ5LiBgdmFsdWVzYAorICAgIGNhbiBhbHNvIGJlIGFuIGl0ZXJhYmxlIG9mIGAoa2V5LCB2YWx1ZSlgIHBhaXJzLgorCisgICAgSWYgYGNsZWFyYCBpcyBUcnVlIHRoZW4gdGhlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkIGJlZm9yZSB0aGUgbmV3CisgICAgdmFsdWVzIGFyZSBzZXQuCisKKyAgICBgcGF0Y2guZGljdGAgY2FuIGFsc28gYmUgY2FsbGVkIHdpdGggYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIHRvIHNldAorICAgIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeTo6CisKKyAgICAgICAgd2l0aCBwYXRjaC5kaWN0KCdzeXMubW9kdWxlcycsIG15bW9kdWxlPU1vY2soKSwgb3RoZXJfbW9kdWxlPU1vY2soKSk6CisgICAgICAgICAgICAuLi4KKworICAgIGBwYXRjaC5kaWN0YCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgZGVjb3JhdG9yIG9yIGNsYXNzCisgICAgZGVjb3JhdG9yLiBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLmRpY3RgIGhvbm91cnMKKyAgICBgcGF0Y2guVEVTVF9QUkVGSVhgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5fZGljdCwgdmFsdWVzPSgpLCBjbGVhcj1GYWxzZSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGluX2RpY3QsIHN0cik6CisgICAgICAgICAgICBpbl9kaWN0ID0gX2ltcG9ydGVyKGluX2RpY3QpCisgICAgICAgIHNlbGYuaW5fZGljdCA9IGluX2RpY3QKKyAgICAgICAgIyBzdXBwb3J0IGFueSBhcmd1bWVudCBzdXBwb3J0ZWQgYnkgZGljdCguLi4pIGNvbnN0cnVjdG9yCisgICAgICAgIHNlbGYudmFsdWVzID0gZGljdCh2YWx1ZXMpCisgICAgICAgIHNlbGYudmFsdWVzLnVwZGF0ZShrd2FyZ3MpCisgICAgICAgIHNlbGYuY2xlYXIgPSBjbGVhcgorICAgICAgICBzZWxmLl9vcmlnaW5hbCA9IE5vbmUKKworCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGYsIHR5cGUpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVjb3JhdGVfY2xhc3MoZikKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAgIGRlZiBfaW5uZXIoKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgc2VsZi5fcGF0Y2hfZGljdCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3cpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYuX3VucGF0Y2hfZGljdCgpCisKKyAgICAgICAgcmV0dXJuIF9pbm5lcgorCisKKyAgICBkZWYgZGVjb3JhdGVfY2xhc3Moc2VsZiwga2xhc3MpOgorICAgICAgICBmb3IgYXR0ciBpbiBkaXIoa2xhc3MpOgorICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGdldGF0dHIoa2xhc3MsIGF0dHIpCisgICAgICAgICAgICBpZiAoYXR0ci5zdGFydHN3aXRoKHBhdGNoLlRFU1RfUFJFRklYKSBhbmQKKyAgICAgICAgICAgICAgICAgaGFzYXR0cihhdHRyX3ZhbHVlLCAiX19jYWxsX18iKSk6CisgICAgICAgICAgICAgICAgZGVjb3JhdG9yID0gX3BhdGNoX2RpY3Qoc2VsZi5pbl9kaWN0LCBzZWxmLnZhbHVlcywgc2VsZi5jbGVhcikKKyAgICAgICAgICAgICAgICBkZWNvcmF0ZWQgPSBkZWNvcmF0b3IoYXR0cl92YWx1ZSkKKyAgICAgICAgICAgICAgICBzZXRhdHRyKGtsYXNzLCBhdHRyLCBkZWNvcmF0ZWQpCisgICAgICAgIHJldHVybiBrbGFzcworCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAiIiJQYXRjaCB0aGUgZGljdC4iIiIKKyAgICAgICAgc2VsZi5fcGF0Y2hfZGljdCgpCisKKworICAgIGRlZiBfcGF0Y2hfZGljdChzZWxmKToKKyAgICAgICAgdmFsdWVzID0gc2VsZi52YWx1ZXMKKyAgICAgICAgaW5fZGljdCA9IHNlbGYuaW5fZGljdAorICAgICAgICBjbGVhciA9IHNlbGYuY2xlYXIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnaW5hbCA9IGluX2RpY3QuY29weSgpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgZGljdCBsaWtlIG9iamVjdCB3aXRoIG5vIGNvcHkgbWV0aG9kCisgICAgICAgICAgICAjIG11c3Qgc3VwcG9ydCBpdGVyYXRpb24gb3ZlciBrZXlzCisgICAgICAgICAgICBvcmlnaW5hbCA9IHt9CisgICAgICAgICAgICBmb3Iga2V5IGluIGluX2RpY3Q6CisgICAgICAgICAgICAgICAgb3JpZ2luYWxba2V5XSA9IGluX2RpY3Rba2V5XQorICAgICAgICBzZWxmLl9vcmlnaW5hbCA9IG9yaWdpbmFsCisKKyAgICAgICAgaWYgY2xlYXI6CisgICAgICAgICAgICBfY2xlYXJfZGljdChpbl9kaWN0KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGluX2RpY3QudXBkYXRlKHZhbHVlcykKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBkaWN0IGxpa2Ugb2JqZWN0IHdpdGggbm8gdXBkYXRlIG1ldGhvZAorICAgICAgICAgICAgZm9yIGtleSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgaW5fZGljdFtrZXldID0gdmFsdWVzW2tleV0KKworCisgICAgZGVmIF91bnBhdGNoX2RpY3Qoc2VsZik6CisgICAgICAgIGluX2RpY3QgPSBzZWxmLmluX2RpY3QKKyAgICAgICAgb3JpZ2luYWwgPSBzZWxmLl9vcmlnaW5hbAorCisgICAgICAgIF9jbGVhcl9kaWN0KGluX2RpY3QpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5fZGljdC51cGRhdGUob3JpZ2luYWwpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGZvciBrZXkgaW4gb3JpZ2luYWw6CisgICAgICAgICAgICAgICAgaW5fZGljdFtrZXldID0gb3JpZ2luYWxba2V5XQorCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAiIiJVbnBhdGNoIHRoZSBkaWN0LiIiIgorICAgICAgICBzZWxmLl91bnBhdGNoX2RpY3QoKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHN0YXJ0ID0gX19lbnRlcl9fCisgICAgc3RvcCA9IF9fZXhpdF9fCisKKworZGVmIF9jbGVhcl9kaWN0KGluX2RpY3QpOgorICAgIHRyeToKKyAgICAgICAgaW5fZGljdC5jbGVhcigpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBrZXlzID0gbGlzdChpbl9kaWN0KQorICAgICAgICBmb3Iga2V5IGluIGtleXM6CisgICAgICAgICAgICBkZWwgaW5fZGljdFtrZXldCisKKworZGVmIF9wYXRjaF9zdG9wYWxsKCk6CisgICAgIiIiU3RvcCBhbGwgYWN0aXZlIHBhdGNoZXMuIiIiCisgICAgZm9yIHBhdGNoIGluIGxpc3QoX3BhdGNoLl9hY3RpdmVfcGF0Y2hlcyk6CisgICAgICAgIHBhdGNoLnN0b3AoKQorCisKK3BhdGNoLm9iamVjdCA9IF9wYXRjaF9vYmplY3QKK3BhdGNoLmRpY3QgPSBfcGF0Y2hfZGljdAorcGF0Y2gubXVsdGlwbGUgPSBfcGF0Y2hfbXVsdGlwbGUKK3BhdGNoLnN0b3BhbGwgPSBfcGF0Y2hfc3RvcGFsbAorcGF0Y2guVEVTVF9QUkVGSVggPSAndGVzdCcKKworbWFnaWNfbWV0aG9kcyA9ICgKKyAgICAibHQgbGUgZ3QgZ2UgZXEgbmUgIgorICAgICJnZXRpdGVtIHNldGl0ZW0gZGVsaXRlbSAiCisgICAgImxlbiBjb250YWlucyBpdGVyICIKKyAgICAiaGFzaCBzdHIgc2l6ZW9mICIKKyAgICAiZW50ZXIgZXhpdCAiCisgICAgImRpdm1vZCBuZWcgcG9zIGFicyBpbnZlcnQgIgorICAgICJjb21wbGV4IGludCBmbG9hdCBpbmRleCAiCisgICAgInRydW5jIGZsb29yIGNlaWwgIgorICAgICJib29sIG5leHQgIgorKQorCitudW1lcmljcyA9ICJhZGQgc3ViIG11bCBkaXYgZmxvb3JkaXYgbW9kIGxzaGlmdCByc2hpZnQgYW5kIHhvciBvciBwb3cgIgoraW5wbGFjZSA9ICcgJy5qb2luKCdpJXMnICUgbiBmb3IgbiBpbiBudW1lcmljcy5zcGxpdCgpKQorcmlnaHQgPSAnICcuam9pbignciVzJyAlIG4gZm9yIG4gaW4gbnVtZXJpY3Muc3BsaXQoKSkKKworIyBub3QgaW5jbHVkaW5nIF9fcHJlcGFyZV9fLCBfX2luc3RhbmNlY2hlY2tfXywgX19zdWJjbGFzc2NoZWNrX18KKyMgKGFzIHRoZXkgYXJlIG1ldGFjbGFzcyBtZXRob2RzKQorIyBfX2RlbF9fIGlzIG5vdCBzdXBwb3J0ZWQgYXQgYWxsIGFzIGl0IGNhdXNlcyBwcm9ibGVtcyBpZiBpdCBleGlzdHMKKworX25vbl9kZWZhdWx0cyA9IHNldCgnX18lc19fJyAlIG1ldGhvZCBmb3IgbWV0aG9kIGluIFsKKyAgICAnZ2V0JywgJ3NldCcsICdkZWxldGUnLCAncmV2ZXJzZWQnLCAnbWlzc2luZycsICdyZWR1Y2UnLCAncmVkdWNlX2V4JywKKyAgICAnZ2V0aW5pdGFyZ3MnLCAnZ2V0bmV3YXJncycsICdnZXRzdGF0ZScsICdzZXRzdGF0ZScsICdnZXRmb3JtYXQnLAorICAgICdzZXRmb3JtYXQnLCAncmVwcicsICdkaXInLCAnc3ViY2xhc3NlcycsICdmb3JtYXQnLAorXSkKKworCitkZWYgX2dldF9tZXRob2QobmFtZSwgZnVuYyk6CisgICAgIlR1cm5zIGEgY2FsbGFibGUgb2JqZWN0IChsaWtlIGEgbW9jaykgaW50byBhIHJlYWwgZnVuY3Rpb24iCisgICAgZGVmIG1ldGhvZChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHJldHVybiBmdW5jKHNlbGYsICphcmdzLCAqKmt3KQorICAgIG1ldGhvZC5fX25hbWVfXyA9IG5hbWUKKyAgICByZXR1cm4gbWV0aG9kCisKKworX21hZ2ljcyA9IHNldCgKKyAgICAnX18lc19fJyAlIG1ldGhvZCBmb3IgbWV0aG9kIGluCisgICAgJyAnLmpvaW4oW21hZ2ljX21ldGhvZHMsIG51bWVyaWNzLCBpbnBsYWNlLCByaWdodF0pLnNwbGl0KCkKKykKKworX2FsbF9tYWdpY3MgPSBfbWFnaWNzIHwgX25vbl9kZWZhdWx0cworCitfdW5zdXBwb3J0ZWRfbWFnaWNzID0gc2V0KFsKKyAgICAnX19nZXRhdHRyX18nLCAnX19zZXRhdHRyX18nLAorICAgICdfX2luaXRfXycsICdfX25ld19fJywgJ19fcHJlcGFyZV9fJworICAgICdfX2luc3RhbmNlY2hlY2tfXycsICdfX3N1YmNsYXNzY2hlY2tfXycsCisgICAgJ19fZGVsX18nCitdKQorCitfY2FsY3VsYXRlX3JldHVybl92YWx1ZSA9IHsKKyAgICAnX19oYXNoX18nOiBsYW1iZGEgc2VsZjogb2JqZWN0Ll9faGFzaF9fKHNlbGYpLAorICAgICdfX3N0cl9fJzogbGFtYmRhIHNlbGY6IG9iamVjdC5fX3N0cl9fKHNlbGYpLAorICAgICdfX3NpemVvZl9fJzogbGFtYmRhIHNlbGY6IG9iamVjdC5fX3NpemVvZl9fKHNlbGYpLAorfQorCitfcmV0dXJuX3ZhbHVlcyA9IHsKKyAgICAnX19sdF9fJzogTm90SW1wbGVtZW50ZWQsCisgICAgJ19fZ3RfXyc6IE5vdEltcGxlbWVudGVkLAorICAgICdfX2xlX18nOiBOb3RJbXBsZW1lbnRlZCwKKyAgICAnX19nZV9fJzogTm90SW1wbGVtZW50ZWQsCisgICAgJ19faW50X18nOiAxLAorICAgICdfX2NvbnRhaW5zX18nOiBGYWxzZSwKKyAgICAnX19sZW5fXyc6IDAsCisgICAgJ19fZXhpdF9fJzogRmFsc2UsCisgICAgJ19fY29tcGxleF9fJzogMWosCisgICAgJ19fZmxvYXRfXyc6IDEuMCwKKyAgICAnX19ib29sX18nOiBUcnVlLAorICAgICdfX2luZGV4X18nOiAxLAorfQorCisKK2RlZiBfZ2V0X2VxKHNlbGYpOgorICAgIGRlZiBfX2VxX18ob3RoZXIpOgorICAgICAgICByZXRfdmFsID0gc2VsZi5fX2VxX18uX21vY2tfcmV0dXJuX3ZhbHVlCisgICAgICAgIGlmIHJldF92YWwgaXMgbm90IERFRkFVTFQ6CisgICAgICAgICAgICByZXR1cm4gcmV0X3ZhbAorICAgICAgICByZXR1cm4gc2VsZiBpcyBvdGhlcgorICAgIHJldHVybiBfX2VxX18KKworZGVmIF9nZXRfbmUoc2VsZik6CisgICAgZGVmIF9fbmVfXyhvdGhlcik6CisgICAgICAgIGlmIHNlbGYuX19uZV9fLl9tb2NrX3JldHVybl92YWx1ZSBpcyBub3QgREVGQVVMVDoKKyAgICAgICAgICAgIHJldHVybiBERUZBVUxUCisgICAgICAgIHJldHVybiBzZWxmIGlzIG5vdCBvdGhlcgorICAgIHJldHVybiBfX25lX18KKworZGVmIF9nZXRfaXRlcihzZWxmKToKKyAgICBkZWYgX19pdGVyX18oKToKKyAgICAgICAgcmV0X3ZhbCA9IHNlbGYuX19pdGVyX18uX21vY2tfcmV0dXJuX3ZhbHVlCisgICAgICAgIGlmIHJldF92YWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgIHJldHVybiBpdGVyKFtdKQorICAgICAgICAjIGlmIHJldF92YWwgd2FzIGFscmVhZHkgYW4gaXRlcmF0b3IsIHRoZW4gY2FsbGluZyBpdGVyIG9uIGl0IHNob3VsZAorICAgICAgICAjIHJldHVybiB0aGUgaXRlcmF0b3IgdW5jaGFuZ2VkCisgICAgICAgIHJldHVybiBpdGVyKHJldF92YWwpCisgICAgcmV0dXJuIF9faXRlcl9fCisKK19zaWRlX2VmZmVjdF9tZXRob2RzID0geworICAgICdfX2VxX18nOiBfZ2V0X2VxLAorICAgICdfX25lX18nOiBfZ2V0X25lLAorICAgICdfX2l0ZXJfXyc6IF9nZXRfaXRlciwKK30KKworCisKK2RlZiBfc2V0X3JldHVybl92YWx1ZShtb2NrLCBtZXRob2QsIG5hbWUpOgorICAgIGZpeGVkID0gX3JldHVybl92YWx1ZXMuZ2V0KG5hbWUsIERFRkFVTFQpCisgICAgaWYgZml4ZWQgaXMgbm90IERFRkFVTFQ6CisgICAgICAgIG1ldGhvZC5yZXR1cm5fdmFsdWUgPSBmaXhlZAorICAgICAgICByZXR1cm4KKworICAgIHJldHVybl9jYWx1bGF0b3IgPSBfY2FsY3VsYXRlX3JldHVybl92YWx1ZS5nZXQobmFtZSkKKyAgICBpZiByZXR1cm5fY2FsdWxhdG9yIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSByZXR1cm5fY2FsdWxhdG9yKG1vY2spCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgWFhYWCB3aHkgZG8gd2UgcmV0dXJuIEF0dHJpYnV0ZUVycm9yIGhlcmU/CisgICAgICAgICAgICAjICAgICAgc2V0IGl0IGFzIGEgc2lkZV9lZmZlY3QgaW5zdGVhZD8KKyAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIG1ldGhvZC5yZXR1cm5fdmFsdWUgPSByZXR1cm5fdmFsdWUKKyAgICAgICAgcmV0dXJuCisKKyAgICBzaWRlX2VmZmVjdG9yID0gX3NpZGVfZWZmZWN0X21ldGhvZHMuZ2V0KG5hbWUpCisgICAgaWYgc2lkZV9lZmZlY3RvciBpcyBub3QgTm9uZToKKyAgICAgICAgbWV0aG9kLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3Rvcihtb2NrKQorCisKKworY2xhc3MgTWFnaWNNaXhpbihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIF9zYWZlX3N1cGVyKE1hZ2ljTWl4aW4sIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLl9tb2NrX3NldF9tYWdpY3MoKQorCisKKyAgICBkZWYgX21vY2tfc2V0X21hZ2ljcyhzZWxmKToKKyAgICAgICAgdGhlc2VfbWFnaWNzID0gX21hZ2ljcworCisgICAgICAgIGlmIHNlbGYuX21vY2tfbWV0aG9kcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRoZXNlX21hZ2ljcyA9IF9tYWdpY3MuaW50ZXJzZWN0aW9uKHNlbGYuX21vY2tfbWV0aG9kcykKKworICAgICAgICAgICAgcmVtb3ZlX21hZ2ljcyA9IHNldCgpCisgICAgICAgICAgICByZW1vdmVfbWFnaWNzID0gX21hZ2ljcyAtIHRoZXNlX21hZ2ljcworCisgICAgICAgICAgICBmb3IgZW50cnkgaW4gcmVtb3ZlX21hZ2ljczoKKyAgICAgICAgICAgICAgICBpZiBlbnRyeSBpbiB0eXBlKHNlbGYpLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSB1bm5lZWRlZCBtYWdpYyBtZXRob2RzCisgICAgICAgICAgICAgICAgICAgIGRlbGF0dHIoc2VsZiwgZW50cnkpCisKKyAgICAgICAgIyBkb24ndCBvdmVyd3JpdGUgZXhpc3RpbmcgYXR0cmlidXRlcyBpZiBjYWxsZWQgYSBzZWNvbmQgdGltZQorICAgICAgICB0aGVzZV9tYWdpY3MgPSB0aGVzZV9tYWdpY3MgLSBzZXQodHlwZShzZWxmKS5fX2RpY3RfXykKKworICAgICAgICBfdHlwZSA9IHR5cGUoc2VsZikKKyAgICAgICAgZm9yIGVudHJ5IGluIHRoZXNlX21hZ2ljczoKKyAgICAgICAgICAgIHNldGF0dHIoX3R5cGUsIGVudHJ5LCBNYWdpY1Byb3h5KGVudHJ5LCBzZWxmKSkKKworCisKK2NsYXNzIE5vbkNhbGxhYmxlTWFnaWNNb2NrKE1hZ2ljTWl4aW4sIE5vbkNhbGxhYmxlTW9jayk6CisgICAgIiIiQSB2ZXJzaW9uIG9mIGBNYWdpY01vY2tgIHRoYXQgaXNuJ3QgY2FsbGFibGUuIiIiCisgICAgZGVmIG1vY2tfYWRkX3NwZWMoc2VsZiwgc3BlYywgc3BlY19zZXQ9RmFsc2UpOgorICAgICAgICAiIiJBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKKyAgICAgICAgbGlzdCBvZiBzdHJpbmdzLiBPbmx5IGF0dHJpYnV0ZXMgb24gdGhlIGBzcGVjYCBjYW4gYmUgZmV0Y2hlZCBhcworICAgICAgICBhdHRyaWJ1dGVzIGZyb20gdGhlIG1vY2suCisKKyAgICAgICAgSWYgYHNwZWNfc2V0YCBpcyBUcnVlIHRoZW4gb25seSBhdHRyaWJ1dGVzIG9uIHRoZSBzcGVjIGNhbiBiZSBzZXQuIiIiCisgICAgICAgIHNlbGYuX21vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQpCisgICAgICAgIHNlbGYuX21vY2tfc2V0X21hZ2ljcygpCisKKworCitjbGFzcyBNYWdpY01vY2soTWFnaWNNaXhpbiwgTW9jayk6CisgICAgIiIiCisgICAgTWFnaWNNb2NrIGlzIGEgc3ViY2xhc3Mgb2YgTW9jayB3aXRoIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zCisgICAgb2YgbW9zdCBvZiB0aGUgbWFnaWMgbWV0aG9kcy4gWW91IGNhbiB1c2UgTWFnaWNNb2NrIHdpdGhvdXQgaGF2aW5nIHRvCisgICAgY29uZmlndXJlIHRoZSBtYWdpYyBtZXRob2RzIHlvdXJzZWxmLgorCisgICAgSWYgeW91IHVzZSB0aGUgYHNwZWNgIG9yIGBzcGVjX3NldGAgYXJndW1lbnRzIHRoZW4gKm9ubHkqIG1hZ2ljCisgICAgbWV0aG9kcyB0aGF0IGV4aXN0IGluIHRoZSBzcGVjIHdpbGwgYmUgY3JlYXRlZC4KKworICAgIEF0dHJpYnV0ZXMgYW5kIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBgTWFnaWNNb2NrYCB3aWxsIGFsc28gYmUgYE1hZ2ljTW9ja3NgLgorICAgICIiIgorICAgIGRlZiBtb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0PUZhbHNlKToKKyAgICAgICAgIiIiQWRkIGEgc3BlYyB0byBhIG1vY2suIGBzcGVjYCBjYW4gZWl0aGVyIGJlIGFuIG9iamVjdCBvciBhCisgICAgICAgIGxpc3Qgb2Ygc3RyaW5ncy4gT25seSBhdHRyaWJ1dGVzIG9uIHRoZSBgc3BlY2AgY2FuIGJlIGZldGNoZWQgYXMKKyAgICAgICAgYXR0cmlidXRlcyBmcm9tIHRoZSBtb2NrLgorCisgICAgICAgIElmIGBzcGVjX3NldGAgaXMgVHJ1ZSB0aGVuIG9ubHkgYXR0cmlidXRlcyBvbiB0aGUgc3BlYyBjYW4gYmUgc2V0LiIiIgorICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQorICAgICAgICBzZWxmLl9tb2NrX3NldF9tYWdpY3MoKQorCisKKworY2xhc3MgTWFnaWNQcm94eShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXJlbnQpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgbSA9IHNlbGYuY3JlYXRlX21vY2soKQorICAgICAgICByZXR1cm4gbSgqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgY3JlYXRlX21vY2soc2VsZik6CisgICAgICAgIGVudHJ5ID0gc2VsZi5uYW1lCisgICAgICAgIHBhcmVudCA9IHNlbGYucGFyZW50CisgICAgICAgIG0gPSBwYXJlbnQuX2dldF9jaGlsZF9tb2NrKG5hbWU9ZW50cnksIF9uZXdfbmFtZT1lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX25ld19wYXJlbnQ9cGFyZW50KQorICAgICAgICBzZXRhdHRyKHBhcmVudCwgZW50cnksIG0pCisgICAgICAgIF9zZXRfcmV0dXJuX3ZhbHVlKHBhcmVudCwgbSwgZW50cnkpCisgICAgICAgIHJldHVybiBtCisKKyAgICBkZWYgX19nZXRfXyhzZWxmLCBvYmosIF90eXBlPU5vbmUpOgorICAgICAgICByZXR1cm4gc2VsZi5jcmVhdGVfbW9jaygpCisKKworCitjbGFzcyBfQU5ZKG9iamVjdCk6CisgICAgIkEgaGVscGVyIG9iamVjdCB0aGF0IGNvbXBhcmVzIGVxdWFsIHRvIGV2ZXJ5dGhpbmcuIgorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPEFOWT4nCisKK0FOWSA9IF9BTlkoKQorCisKKworZGVmIF9mb3JtYXRfY2FsbF9zaWduYXR1cmUobmFtZSwgYXJncywga3dhcmdzKToKKyAgICBtZXNzYWdlID0gJyVzKCUlcyknICUgbmFtZQorICAgIGZvcm1hdHRlZF9hcmdzID0gJycKKyAgICBhcmdzX3N0cmluZyA9ICcsICcuam9pbihbcmVwcihhcmcpIGZvciBhcmcgaW4gYXJnc10pCisgICAga3dhcmdzX3N0cmluZyA9ICcsICcuam9pbihbCisgICAgICAgICclcz0lcicgJSAoa2V5LCB2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4ga3dhcmdzLml0ZW1zKCkKKyAgICBdKQorICAgIGlmIGFyZ3Nfc3RyaW5nOgorICAgICAgICBmb3JtYXR0ZWRfYXJncyA9IGFyZ3Nfc3RyaW5nCisgICAgaWYga3dhcmdzX3N0cmluZzoKKyAgICAgICAgaWYgZm9ybWF0dGVkX2FyZ3M6CisgICAgICAgICAgICBmb3JtYXR0ZWRfYXJncyArPSAnLCAnCisgICAgICAgIGZvcm1hdHRlZF9hcmdzICs9IGt3YXJnc19zdHJpbmcKKworICAgIHJldHVybiBtZXNzYWdlICUgZm9ybWF0dGVkX2FyZ3MKKworCisKK2NsYXNzIF9DYWxsKHR1cGxlKToKKyAgICAiIiIKKyAgICBBIHR1cGxlIGZvciBob2xkaW5nIHRoZSByZXN1bHRzIG9mIGEgY2FsbCB0byBhIG1vY2ssIGVpdGhlciBpbiB0aGUgZm9ybQorICAgIGAoYXJncywga3dhcmdzKWAgb3IgYChuYW1lLCBhcmdzLCBrd2FyZ3MpYC4KKworICAgIElmIGFyZ3Mgb3Iga3dhcmdzIGFyZSBlbXB0eSB0aGVuIGEgY2FsbCB0dXBsZSB3aWxsIGNvbXBhcmUgZXF1YWwgdG8KKyAgICBhIHR1cGxlIHdpdGhvdXQgdGhvc2UgdmFsdWVzLiBUaGlzIG1ha2VzIGNvbXBhcmlzb25zIGxlc3MgdmVyYm9zZTo6CisKKyAgICAgICAgX0NhbGwoKCduYW1lJywgKCksIHt9KSkgPT0gKCduYW1lJywpCisgICAgICAgIF9DYWxsKCgnbmFtZScsICgxLCksIHt9KSkgPT0gKCduYW1lJywgKDEsKSkKKyAgICAgICAgX0NhbGwoKCgpLCB7J2EnOiAnYid9KSkgPT0gKHsnYSc6ICdiJ30sKQorCisgICAgVGhlIGBfQ2FsbGAgb2JqZWN0IHByb3ZpZGVzIGEgdXNlZnVsIHNob3J0Y3V0IGZvciBjb21wYXJpbmcgd2l0aCBjYWxsOjoKKworICAgICAgICBfQ2FsbCgoKDEsIDIpLCB7J2EnOiAzfSkpID09IGNhbGwoMSwgMiwgYT0zKQorICAgICAgICBfQ2FsbCgoJ2ZvbycsICgxLCAyKSwgeydhJzogM30pKSA9PSBjYWxsLmZvbygxLCAyLCBhPTMpCisKKyAgICBJZiB0aGUgX0NhbGwgaGFzIG5vIG5hbWUgdGhlbiBpdCB3aWxsIG1hdGNoIGFueSBuYW1lLgorICAgICIiIgorICAgIGRlZiBfX25ld19fKGNscywgdmFsdWU9KCksIG5hbWU9Tm9uZSwgcGFyZW50PU5vbmUsIHR3bz1GYWxzZSwKKyAgICAgICAgICAgICAgICBmcm9tX2thbGw9VHJ1ZSk6CisgICAgICAgIG5hbWUgPSAnJworICAgICAgICBhcmdzID0gKCkKKyAgICAgICAga3dhcmdzID0ge30KKyAgICAgICAgX2xlbiA9IGxlbih2YWx1ZSkKKyAgICAgICAgaWYgX2xlbiA9PSAzOgorICAgICAgICAgICAgbmFtZSwgYXJncywga3dhcmdzID0gdmFsdWUKKyAgICAgICAgZWxpZiBfbGVuID09IDI6CisgICAgICAgICAgICBmaXJzdCwgc2Vjb25kID0gdmFsdWUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlyc3QsIHN0cik6CisgICAgICAgICAgICAgICAgbmFtZSA9IGZpcnN0CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWNvbmQsIHR1cGxlKToKKyAgICAgICAgICAgICAgICAgICAgYXJncyA9IHNlY29uZAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IHNlY29uZAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzLCBrd2FyZ3MgPSBmaXJzdCwgc2Vjb25kCisgICAgICAgIGVsaWYgX2xlbiA9PSAxOgorICAgICAgICAgICAgdmFsdWUsID0gdmFsdWUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAgICAgbmFtZSA9IHZhbHVlCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKKyAgICAgICAgICAgICAgICBhcmdzID0gdmFsdWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAga3dhcmdzID0gdmFsdWUKKworICAgICAgICBpZiB0d286CisgICAgICAgICAgICByZXR1cm4gdHVwbGUuX19uZXdfXyhjbHMsIChhcmdzLCBrd2FyZ3MpKQorCisgICAgICAgIHJldHVybiB0dXBsZS5fX25ld19fKGNscywgKG5hbWUsIGFyZ3MsIGt3YXJncykpCisKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0oKSwgbmFtZT1Ob25lLCBwYXJlbnQ9Tm9uZSwgdHdvPUZhbHNlLAorICAgICAgICAgICAgICAgICBmcm9tX2thbGw9VHJ1ZSk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgc2VsZi5mcm9tX2thbGwgPSBmcm9tX2thbGwKKworCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG90aGVyIGlzIEFOWToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxlbl9vdGhlciA9IGxlbihvdGhlcikKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHNlbGZfbmFtZSA9ICcnCisgICAgICAgIGlmIGxlbihzZWxmKSA9PSAyOgorICAgICAgICAgICAgc2VsZl9hcmdzLCBzZWxmX2t3YXJncyA9IHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGZfbmFtZSwgc2VsZl9hcmdzLCBzZWxmX2t3YXJncyA9IHNlbGYKKworICAgICAgICBvdGhlcl9uYW1lID0gJycKKyAgICAgICAgaWYgbGVuX290aGVyID09IDA6CisgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSAoKSwge30KKyAgICAgICAgZWxpZiBsZW5fb3RoZXIgPT0gMzoKKyAgICAgICAgICAgIG90aGVyX25hbWUsIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9IG90aGVyCisgICAgICAgIGVsaWYgbGVuX290aGVyID09IDE6CisgICAgICAgICAgICB2YWx1ZSwgPSBvdGhlcgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgorICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MgPSB2YWx1ZQorICAgICAgICAgICAgICAgIG90aGVyX2t3YXJncyA9IHt9CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAgICAgb3RoZXJfbmFtZSA9IHZhbHVlCisgICAgICAgICAgICAgICAgb3RoZXJfYXJncywgb3RoZXJfa3dhcmdzID0gKCksIHt9CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MgPSAoKQorICAgICAgICAgICAgICAgIG90aGVyX2t3YXJncyA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGxlbiAyCisgICAgICAgICAgICAjIGNvdWxkIGJlIChuYW1lLCBhcmdzKSBvciAobmFtZSwga3dhcmdzKSBvciAoYXJncywga3dhcmdzKQorICAgICAgICAgICAgZmlyc3QsIHNlY29uZCA9IG90aGVyCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpcnN0LCBzdHIpOgorICAgICAgICAgICAgICAgIG90aGVyX25hbWUgPSBmaXJzdAorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2Vjb25kLCB0dXBsZSk6CisgICAgICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9IHNlY29uZCwge30KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSAoKSwgc2Vjb25kCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9IGZpcnN0LCBzZWNvbmQKKworICAgICAgICBpZiBzZWxmX25hbWUgYW5kIG90aGVyX25hbWUgIT0gc2VsZl9uYW1lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyB0aGlzIG9yZGVyIGlzIGltcG9ydGFudCBmb3IgQU5ZIHRvIHdvcmshCisgICAgICAgIHJldHVybiAob3RoZXJfYXJncywgb3RoZXJfa3dhcmdzKSA9PSAoc2VsZl9hcmdzLCBzZWxmX2t3YXJncykKKworCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiBzZWxmLm5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBfQ2FsbCgoJycsIGFyZ3MsIGt3YXJncyksIG5hbWU9JygpJykKKworICAgICAgICBuYW1lID0gc2VsZi5uYW1lICsgJygpJworICAgICAgICByZXR1cm4gX0NhbGwoKHNlbGYubmFtZSwgYXJncywga3dhcmdzKSwgbmFtZT1uYW1lLCBwYXJlbnQ9c2VsZikKKworCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICBpZiBzZWxmLm5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBfQ2FsbChuYW1lPWF0dHIsIGZyb21fa2FsbD1GYWxzZSkKKyAgICAgICAgbmFtZSA9ICclcy4lcycgJSAoc2VsZi5uYW1lLCBhdHRyKQorICAgICAgICByZXR1cm4gX0NhbGwobmFtZT1uYW1lLCBwYXJlbnQ9c2VsZiwgZnJvbV9rYWxsPUZhbHNlKQorCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLmZyb21fa2FsbDoKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgb3IgJ2NhbGwnCisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJygpJyk6CisgICAgICAgICAgICAgICAgbmFtZSA9ICdjYWxsJXMnICUgbmFtZQorICAgICAgICAgICAgcmV0dXJuIG5hbWUKKworICAgICAgICBpZiBsZW4oc2VsZikgPT0gMjoKKyAgICAgICAgICAgIG5hbWUgPSAnY2FsbCcKKyAgICAgICAgICAgIGFyZ3MsIGt3YXJncyA9IHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5hbWUsIGFyZ3MsIGt3YXJncyA9IHNlbGYKKyAgICAgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnY2FsbCcKKyAgICAgICAgICAgIGVsaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnKCknKToKKyAgICAgICAgICAgICAgICBuYW1lID0gJ2NhbGwuJXMnICUgbmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuYW1lID0gJ2NhbGwlcycgJSBuYW1lCisgICAgICAgIHJldHVybiBfZm9ybWF0X2NhbGxfc2lnbmF0dXJlKG5hbWUsIGFyZ3MsIGt3YXJncykKKworCisgICAgZGVmIGNhbGxfbGlzdChzZWxmKToKKyAgICAgICAgIiIiRm9yIGEgY2FsbCBvYmplY3QgdGhhdCByZXByZXNlbnRzIG11bHRpcGxlIGNhbGxzLCBgY2FsbF9saXN0YAorICAgICAgICByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGludGVybWVkaWF0ZSBjYWxscyBhcyB3ZWxsIGFzIHRoZQorICAgICAgICBmaW5hbCBjYWxsLiIiIgorICAgICAgICB2YWxzID0gW10KKyAgICAgICAgdGhpbmcgPSBzZWxmCisgICAgICAgIHdoaWxlIHRoaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgdGhpbmcuZnJvbV9rYWxsOgorICAgICAgICAgICAgICAgIHZhbHMuYXBwZW5kKHRoaW5nKQorICAgICAgICAgICAgdGhpbmcgPSB0aGluZy5wYXJlbnQKKyAgICAgICAgcmV0dXJuIF9DYWxsTGlzdChyZXZlcnNlZCh2YWxzKSkKKworCitjYWxsID0gX0NhbGwoZnJvbV9rYWxsPUZhbHNlKQorCisKKworZGVmIGNyZWF0ZV9hdXRvc3BlYyhzcGVjLCBzcGVjX3NldD1GYWxzZSwgaW5zdGFuY2U9RmFsc2UsIF9wYXJlbnQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgX25hbWU9Tm9uZSwgKiprd2FyZ3MpOgorICAgICIiIkNyZWF0ZSBhIG1vY2sgb2JqZWN0IHVzaW5nIGFub3RoZXIgb2JqZWN0IGFzIGEgc3BlYy4gQXR0cmlidXRlcyBvbiB0aGUKKyAgICBtb2NrIHdpbGwgdXNlIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvbiB0aGUgYHNwZWNgIG9iamVjdCBhcyB0aGVpcgorICAgIHNwZWMuCisKKyAgICBGdW5jdGlvbnMgb3IgbWV0aG9kcyBiZWluZyBtb2NrZWQgd2lsbCBoYXZlIHRoZWlyIGFyZ3VtZW50cyBjaGVja2VkCisgICAgdG8gY2hlY2sgdGhhdCB0aGV5IGFyZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBzaWduYXR1cmUuCisKKyAgICBJZiBgc3BlY19zZXRgIGlzIFRydWUgdGhlbiBhdHRlbXB0aW5nIHRvIHNldCBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgZXhpc3QKKyAgICBvbiB0aGUgc3BlYyBvYmplY3Qgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgSWYgYSBjbGFzcyBpcyB1c2VkIGFzIGEgc3BlYyB0aGVuIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIG1vY2sgKHRoZQorICAgIGluc3RhbmNlIG9mIHRoZSBjbGFzcykgd2lsbCBoYXZlIHRoZSBzYW1lIHNwZWMuIFlvdSBjYW4gdXNlIGEgY2xhc3MgYXMgdGhlCisgICAgc3BlYyBmb3IgYW4gaW5zdGFuY2Ugb2JqZWN0IGJ5IHBhc3NpbmcgYGluc3RhbmNlPVRydWVgLiBUaGUgcmV0dXJuZWQgbW9jaworICAgIHdpbGwgb25seSBiZSBjYWxsYWJsZSBpZiBpbnN0YW5jZXMgb2YgdGhlIG1vY2sgYXJlIGNhbGxhYmxlLgorCisgICAgYGNyZWF0ZV9hdXRvc3BlY2AgYWxzbyB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2VkIHRvCisgICAgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBjcmVhdGVkIG1vY2suIiIiCisgICAgaWYgX2lzX2xpc3Qoc3BlYyk6CisgICAgICAgICMgY2FuJ3QgcGFzcyBhIGxpc3QgaW5zdGFuY2UgdG8gdGhlIG1vY2sgY29uc3RydWN0b3IgYXMgaXQgd2lsbCBiZQorICAgICAgICAjIGludGVycHJldGVkIGFzIGEgbGlzdCBvZiBzdHJpbmdzCisgICAgICAgIHNwZWMgPSB0eXBlKHNwZWMpCisKKyAgICBpc190eXBlID0gaXNpbnN0YW5jZShzcGVjLCB0eXBlKQorCisgICAgX2t3YXJncyA9IHsnc3BlYyc6IHNwZWN9CisgICAgaWYgc3BlY19zZXQ6CisgICAgICAgIF9rd2FyZ3MgPSB7J3NwZWNfc2V0Jzogc3BlY30KKyAgICBlbGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgIyBOb25lIHdlIG1vY2sgd2l0aCBhIG5vcm1hbCBtb2NrIHdpdGhvdXQgYSBzcGVjCisgICAgICAgIF9rd2FyZ3MgPSB7fQorCisgICAgX2t3YXJncy51cGRhdGUoa3dhcmdzKQorCisgICAgS2xhc3MgPSBNYWdpY01vY2sKKyAgICBpZiB0eXBlKHNwZWMpIGluIERlc2NyaXB0b3JUeXBlczoKKyAgICAgICAgIyBkZXNjcmlwdG9ycyBkb24ndCBoYXZlIGEgc3BlYworICAgICAgICAjIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHR5cGUgdGhleSByZXR1cm4KKyAgICAgICAgX2t3YXJncyA9IHt9CisgICAgZWxpZiBub3QgX2NhbGxhYmxlKHNwZWMpOgorICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisgICAgZWxpZiBpc190eXBlIGFuZCBpbnN0YW5jZSBhbmQgbm90IF9pbnN0YW5jZV9jYWxsYWJsZShzcGVjKToKKyAgICAgICAgS2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jaworCisgICAgX25ld19uYW1lID0gX25hbWUKKyAgICBpZiBfcGFyZW50IGlzIE5vbmU6CisgICAgICAgICMgZm9yIGEgdG9wIGxldmVsIG9iamVjdCBubyBfbmV3X25hbWUgc2hvdWxkIGJlIHNldAorICAgICAgICBfbmV3X25hbWUgPSAnJworCisgICAgbW9jayA9IEtsYXNzKHBhcmVudD1fcGFyZW50LCBfbmV3X3BhcmVudD1fcGFyZW50LCBfbmV3X25hbWU9X25ld19uYW1lLAorICAgICAgICAgICAgICAgICBuYW1lPV9uYW1lLCAqKl9rd2FyZ3MpCisKKyAgICBpZiBpc2luc3RhbmNlKHNwZWMsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAjIHNob3VsZCBvbmx5IGhhcHBlbiBhdCB0aGUgdG9wIGxldmVsIGJlY2F1c2Ugd2UgZG9uJ3QKKyAgICAgICAgIyByZWN1cnNlIGZvciBmdW5jdGlvbnMKKyAgICAgICAgbW9jayA9IF9zZXRfc2lnbmF0dXJlKG1vY2ssIHNwZWMpCisgICAgZWxzZToKKyAgICAgICAgX2NoZWNrX3NpZ25hdHVyZShzcGVjLCBtb2NrLCBpc190eXBlLCBpbnN0YW5jZSkKKworICAgIGlmIF9wYXJlbnQgaXMgbm90IE5vbmUgYW5kIG5vdCBpbnN0YW5jZToKKyAgICAgICAgX3BhcmVudC5fbW9ja19jaGlsZHJlbltfbmFtZV0gPSBtb2NrCisKKyAgICBpZiBpc190eXBlIGFuZCBub3QgaW5zdGFuY2UgYW5kICdyZXR1cm5fdmFsdWUnIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMsIHNwZWNfc2V0LCBpbnN0YW5jZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmFtZT0nKCknLCBfcGFyZW50PW1vY2spCisKKyAgICBmb3IgZW50cnkgaW4gZGlyKHNwZWMpOgorICAgICAgICBpZiBfaXNfbWFnaWMoZW50cnkpOgorICAgICAgICAgICAgIyBNYWdpY01vY2sgYWxyZWFkeSBkb2VzIHRoZSB1c2VmdWwgbWFnaWMgbWV0aG9kcyBmb3IgdXMKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgIyBYWFhYIGRvIHdlIG5lZWQgYSBiZXR0ZXIgd2F5IG9mIGdldHRpbmcgYXR0cmlidXRlcyB3aXRob3V0CisgICAgICAgICMgdHJpZ2dlcmluZyBjb2RlIGV4ZWN1dGlvbiAoPykgUHJvYmFibHkgbm90IC0gd2UgbmVlZCB0aGUgYWN0dWFsCisgICAgICAgICMgb2JqZWN0IHRvIG1vY2sgaXQgc28gd2Ugd291bGQgcmF0aGVyIHRyaWdnZXIgYSBwcm9wZXJ0eSB0aGFuIG1vY2sKKyAgICAgICAgIyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvci4gTGlrZXdpc2Ugd2Ugd2FudCB0byBtb2NrIG91dCBkeW5hbWljYWxseQorICAgICAgICAjIHByb3ZpZGVkIGF0dHJpYnV0ZXMuCisgICAgICAgICMgWFhYWCB3aGF0IGFib3V0IGF0dHJpYnV0ZXMgdGhhdCByYWlzZSBleGNlcHRpb25zIG90aGVyIHRoYW4KKyAgICAgICAgIyBBdHRyaWJ1dGVFcnJvciBvbiBiZWluZyBmZXRjaGVkPworICAgICAgICAjIHdlIGNvdWxkIGJlIHJlc2lsaWVudCBhZ2FpbnN0IGl0LCBvciBjYXRjaCBhbmQgcHJvcGFnYXRlIHRoZQorICAgICAgICAjIGV4Y2VwdGlvbiB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgZmV0Y2hlZCBmcm9tIHRoZSBtb2NrCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdpbmFsID0gZ2V0YXR0cihzcGVjLCBlbnRyeSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBrd2FyZ3MgPSB7J3NwZWMnOiBvcmlnaW5hbH0KKyAgICAgICAgaWYgc3BlY19zZXQ6CisgICAgICAgICAgICBrd2FyZ3MgPSB7J3NwZWNfc2V0Jzogb3JpZ2luYWx9CisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3JpZ2luYWwsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAgICAgbmV3ID0gX1NwZWNTdGF0ZShvcmlnaW5hbCwgc3BlY19zZXQsIG1vY2ssIGVudHJ5LCBpbnN0YW5jZSkKKyAgICAgICAgICAgIG1vY2suX21vY2tfY2hpbGRyZW5bZW50cnldID0gbmV3CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXJlbnQgPSBtb2NrCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNwZWMsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAgICAgICAgIHBhcmVudCA9IG1vY2subW9jaworCisgICAgICAgICAgICBuZXcgPSBNYWdpY01vY2socGFyZW50PXBhcmVudCwgbmFtZT1lbnRyeSwgX25ld19uYW1lPWVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50PXBhcmVudCwgKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrLl9tb2NrX2NoaWxkcmVuW2VudHJ5XSA9IG5ldworICAgICAgICAgICAgc2tpcGZpcnN0ID0gX211c3Rfc2tpcChzcGVjLCBlbnRyeSwgaXNfdHlwZSkKKyAgICAgICAgICAgIF9jaGVja19zaWduYXR1cmUob3JpZ2luYWwsIG5ldywgc2tpcGZpcnN0PXNraXBmaXJzdCkKKworICAgICAgICAjIHNvIGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggX3NldF9zaWduYXR1cmUgYmVjb21lIGluc3RhbmNlIGF0dHJpYnV0ZXMsCisgICAgICAgICMgKnBsdXMqIHRoZWlyIHVuZGVybHlpbmcgbW9jayBleGlzdHMgaW4gX21vY2tfY2hpbGRyZW4gb2YgdGhlIHBhcmVudAorICAgICAgICAjIG1vY2suIEFkZGluZyB0byBfbW9ja19jaGlsZHJlbiBtYXkgYmUgdW5uZWNlc3Nhcnkgd2hlcmUgd2UgYXJlIGFsc28KKyAgICAgICAgIyBzZXR0aW5nIGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZT8KKyAgICAgICAgaWYgaXNpbnN0YW5jZShuZXcsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAgICAgc2V0YXR0cihtb2NrLCBlbnRyeSwgbmV3KQorCisgICAgcmV0dXJuIG1vY2sKKworCitkZWYgX211c3Rfc2tpcChzcGVjLCBlbnRyeSwgaXNfdHlwZSk6CisgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3BlYywgdHlwZSk6CisgICAgICAgIGlmIGVudHJ5IGluIGdldGF0dHIoc3BlYywgJ19fZGljdF9fJywge30pOgorICAgICAgICAgICAgIyBpbnN0YW5jZSBhdHRyaWJ1dGUgLSBzaG91bGRuJ3Qgc2tpcAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHNwZWMgPSBzcGVjLl9fY2xhc3NfXworCisgICAgZm9yIGtsYXNzIGluIHNwZWMuX19tcm9fXzoKKyAgICAgICAgcmVzdWx0ID0ga2xhc3MuX19kaWN0X18uZ2V0KGVudHJ5LCBERUZBVUxUKQorICAgICAgICBpZiByZXN1bHQgaXMgREVGQVVMVDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0LCAoc3RhdGljbWV0aG9kLCBjbGFzc21ldGhvZCkpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBpc190eXBlCisKKyAgICAjIHNob3VsZG4ndCBnZXQgaGVyZSB1bmxlc3MgZnVuY3Rpb24gaXMgYSBkeW5hbWljYWxseSBwcm92aWRlZCBhdHRyaWJ1dGUKKyAgICAjIFhYWFggdW50ZXN0ZWQgYmVoYXZpb3VyCisgICAgcmV0dXJuIGlzX3R5cGUKKworCitkZWYgX2dldF9jbGFzcyhvYmopOgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIG9iai5fX2NsYXNzX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICMgaXQgaXMgcG9zc2libGUgZm9yIG9iamVjdHMgdG8gaGF2ZSBubyBfX2NsYXNzX18KKyAgICAgICAgcmV0dXJuIHR5cGUob2JqKQorCisKK2NsYXNzIF9TcGVjU3RhdGUob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjLCBzcGVjX3NldD1GYWxzZSwgcGFyZW50PU5vbmUsCisgICAgICAgICAgICAgICAgIG5hbWU9Tm9uZSwgaWRzPU5vbmUsIGluc3RhbmNlPUZhbHNlKToKKyAgICAgICAgc2VsZi5zcGVjID0gc3BlYworICAgICAgICBzZWxmLmlkcyA9IGlkcworICAgICAgICBzZWxmLnNwZWNfc2V0ID0gc3BlY19zZXQKKyAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgc2VsZi5pbnN0YW5jZSA9IGluc3RhbmNlCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworCitGdW5jdGlvblR5cGVzID0gKAorICAgICMgcHl0aG9uIGZ1bmN0aW9uCisgICAgdHlwZShjcmVhdGVfYXV0b3NwZWMpLAorICAgICMgaW5zdGFuY2UgbWV0aG9kCisgICAgdHlwZShBTlkuX19lcV9fKSwKKykKKworCitmaWxlX3NwZWMgPSBOb25lCisKKworZGVmIG1vY2tfb3Blbihtb2NrPU5vbmUsIHJlYWRfZGF0YT0nJyk6CisgICAgIiIiCisgICAgQSBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbW9jayB0byByZXBsYWNlIHRoZSB1c2Ugb2YgYG9wZW5gLiBJdCB3b3JrcworICAgIGZvciBgb3BlbmAgY2FsbGVkIGRpcmVjdGx5IG9yIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBUaGUgYG1vY2tgIGFyZ3VtZW50IGlzIHRoZSBtb2NrIG9iamVjdCB0byBjb25maWd1cmUuIElmIGBOb25lYCAodGhlCisgICAgZGVmYXVsdCkgdGhlbiBhIGBNYWdpY01vY2tgIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91LCB3aXRoIHRoZSBBUEkgbGltaXRlZAorICAgIHRvIG1ldGhvZHMgb3IgYXR0cmlidXRlcyBhdmFpbGFibGUgb24gc3RhbmRhcmQgZmlsZSBoYW5kbGVzLgorCisgICAgYHJlYWRfZGF0YWAgaXMgYSBzdHJpbmcgZm9yIHRoZSBgcmVhZGAgbWV0aG9kIG9mIHRoZSBmaWxlIGhhbmRsZSB0byByZXR1cm4uCisgICAgVGhpcyBpcyBhbiBlbXB0eSBzdHJpbmcgYnkgZGVmYXVsdC4KKyAgICAiIiIKKyAgICBnbG9iYWwgZmlsZV9zcGVjCisgICAgaWYgZmlsZV9zcGVjIGlzIE5vbmU6CisgICAgICAgIGltcG9ydCBfaW8KKyAgICAgICAgZmlsZV9zcGVjID0gbGlzdChzZXQoZGlyKF9pby5UZXh0SU9XcmFwcGVyKSkudW5pb24oc2V0KGRpcihfaW8uQnl0ZXNJTykpKSkKKworICAgIGlmIG1vY2sgaXMgTm9uZToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhuYW1lPSdvcGVuJywgc3BlYz1vcGVuKQorCisgICAgaGFuZGxlID0gTWFnaWNNb2NrKHNwZWM9ZmlsZV9zcGVjKQorICAgIGhhbmRsZS53cml0ZS5yZXR1cm5fdmFsdWUgPSBOb25lCisgICAgaGFuZGxlLl9fZW50ZXJfXy5yZXR1cm5fdmFsdWUgPSBoYW5kbGUKKyAgICBoYW5kbGUucmVhZC5yZXR1cm5fdmFsdWUgPSByZWFkX2RhdGEKKworICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gaGFuZGxlCisgICAgcmV0dXJuIG1vY2sKKworCitjbGFzcyBQcm9wZXJ0eU1vY2soTW9jayk6CisgICAgIiIiCisgICAgQSBtb2NrIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9wZXJ0eSwgb3Igb3RoZXIgZGVzY3JpcHRvciwgb24gYSBjbGFzcy4KKyAgICBgUHJvcGVydHlNb2NrYCBwcm92aWRlcyBgX19nZXRfX2AgYW5kIGBfX3NldF9fYCBtZXRob2RzIHNvIHlvdSBjYW4gc3BlY2lmeQorICAgIGEgcmV0dXJuIHZhbHVlIHdoZW4gaXQgaXMgZmV0Y2hlZC4KKworICAgIEZldGNoaW5nIGEgYFByb3BlcnR5TW9ja2AgaW5zdGFuY2UgZnJvbSBhbiBvYmplY3QgY2FsbHMgdGhlIG1vY2ssIHdpdGgKKyAgICBubyBhcmdzLiBTZXR0aW5nIGl0IGNhbGxzIHRoZSBtb2NrIHdpdGggdGhlIHZhbHVlIGJlaW5nIHNldC4KKyAgICAiIiIKKyAgICBkZWYgX2dldF9jaGlsZF9tb2NrKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIE1hZ2ljTW9jaygqKmt3YXJncykKKworICAgIGRlZiBfX2dldF9fKHNlbGYsIG9iaiwgb2JqX3R5cGUpOgorICAgICAgICByZXR1cm4gc2VsZigpCisgICAgZGVmIF9fc2V0X18oc2VsZiwgb2JqLCB2YWwpOgorICAgICAgICBzZWxmKHZhbCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9yZXN1bHQucHkgYi9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5CmluZGV4IDQ0YmYxODYuLjk3ZTU0MjYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9yZXN1bHQucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weQpAQCAtMSw2ICsxLDUgQEAKICIiIlRlc3QgcmVzdWx0IG9iamVjdCIiIgogCi1pbXBvcnQgb3MKIGltcG9ydCBpbwogaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvX19pbml0X18ucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC9fX2luaXRfXy5weQppbmRleCA5OWI3MzBiLi5jZGFlOGE3IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC9fX2luaXRfXy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC9fX2luaXRfXy5weQpAQCAtMTQsNiArMTQsNyBAQAogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RuYW1lKQogICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0KICAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlKSkKKyAgICBzdWl0ZS5hZGRUZXN0KGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgndW5pdHRlc3QudGVzdC50ZXN0bW9jaycpKQogICAgIHJldHVybiBzdWl0ZQogCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L190ZXN0X3dhcm5pbmdzLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvX3Rlc3Rfd2FybmluZ3MucHkKaW5kZXggZDBiZTE4ZC4uNWNiZmI1MyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvX3Rlc3Rfd2FybmluZ3MucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvX3Rlc3Rfd2FybmluZ3MucHkKQEAgLTEwLDcgKzEwLDYgQEAKIFNlZSAjMTA1MzUuCiAiIiIKIAotaW1wb3J0IGlvCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CmluZGV4IGExZDIwZWIuLmQ0M2ZlNWEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcHJvZHVjdAogCiAKIGNsYXNzIFRlc3RfQXNzZXJ0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xNDUsNiArMTQ2LDE0IEBACiAgICAgICAgIHNlbGYudGVzdGFibGVUcnVlLl9mb3JtYXRNZXNzYWdlKG9uZSwgJ1x1RkZGRCcpCiAKICAgICBkZWYgYXNzZXJ0TWVzc2FnZXMoc2VsZiwgbWV0aG9kTmFtZSwgYXJncywgZXJyb3JzKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoYXQgbWV0aG9kTmFtZSgqYXJncykgcmFpc2VzIHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2VzLgorICAgICAgICBlcnJvcnMgc2hvdWxkIGJlIGEgbGlzdCBvZiA0IHJlZ2V4IHRoYXQgbWF0Y2ggdGhlIGVycm9yIHdoZW46CisgICAgICAgICAgMSkgbG9uZ01lc3NhZ2UgPSBGYWxzZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICAyKSBsb25nTWVzc2FnZSA9IEZhbHNlIGFuZCBtc2cgcGFzc2VkOworICAgICAgICAgIDMpIGxvbmdNZXNzYWdlID0gVHJ1ZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICA0KSBsb25nTWVzc2FnZSA9IFRydWUgYW5kIG1zZyBwYXNzZWQ7CisgICAgICAgICIiIgogICAgICAgICBkZWYgZ2V0TWV0aG9kKGkpOgogICAgICAgICAgICAgdXNlVGVzdGFibGVGYWxzZSAgPSBpIDwgMgogICAgICAgICAgICAgaWYgdXNlVGVzdGFibGVGYWxzZToKQEAgLTI4NCwzICsyOTMsNjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIl51bmV4cGVjdGVkbHkgaWRlbnRpY2FsOiBOb25lJCIsICJeb29wcyQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXnVuZXhwZWN0ZWRseSBpZGVudGljYWw6IE5vbmUkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl51bmV4cGVjdGVkbHkgaWRlbnRpY2FsOiBOb25lIDogb29wcyQiXSkKKworCisgICAgZGVmIGFzc2VydE1lc3NhZ2VzQ00oc2VsZiwgbWV0aG9kTmFtZSwgYXJncywgZnVuYywgZXJyb3JzKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoYXQgdGhlIGNvcnJlY3QgZXJyb3IgbWVzc2FnZXMgYXJlIHJhaXNlZCB3aGlsZSBleGVjdXRpbmc6CisgICAgICAgICAgd2l0aCBtZXRob2QoKmFyZ3MpOgorICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgKmVycm9ycyogc2hvdWxkIGJlIGEgbGlzdCBvZiA0IHJlZ2V4IHRoYXQgbWF0Y2ggdGhlIGVycm9yIHdoZW46CisgICAgICAgICAgMSkgbG9uZ01lc3NhZ2UgPSBGYWxzZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICAyKSBsb25nTWVzc2FnZSA9IEZhbHNlIGFuZCBtc2cgcGFzc2VkOworICAgICAgICAgIDMpIGxvbmdNZXNzYWdlID0gVHJ1ZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICA0KSBsb25nTWVzc2FnZSA9IFRydWUgYW5kIG1zZyBwYXNzZWQ7CisgICAgICAgICIiIgorICAgICAgICBwID0gcHJvZHVjdCgoc2VsZi50ZXN0YWJsZUZhbHNlLCBzZWxmLnRlc3RhYmxlVHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICh7fSwgeyJtc2ciOiAib29wcyJ9KSkKKyAgICAgICAgZm9yIChjbHMsIGt3YXJncyksIGVyciBpbiB6aXAocCwgZXJyb3JzKToKKyAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoY2xzLCBtZXRob2ROYW1lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KGNscy5mYWlsdXJlRXhjZXB0aW9uLCBlcnIpOgorICAgICAgICAgICAgICAgIHdpdGggbWV0aG9kKCphcmdzLCAqKmt3YXJncykgYXMgY206CisgICAgICAgICAgICAgICAgICAgIGZ1bmMoKQorCisgICAgZGVmIHRlc3RBc3NlcnRSYWlzZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0UmFpc2VzJywgKFR5cGVFcnJvciwpLCBsYW1iZGE6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15UeXBlRXJyb3Igbm90IHJhaXNlZCQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlR5cGVFcnJvciBub3QgcmFpc2VkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15UeXBlRXJyb3Igbm90IHJhaXNlZCA6IG9vcHMkJ10pCisKKyAgICBkZWYgdGVzdEFzc2VydFJhaXNlc1JlZ2V4KHNlbGYpOgorICAgICAgICAjIHRlc3QgZXJyb3Igbm90IHJhaXNlZAorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFJhaXNlc1JlZ2V4JywgKFR5cGVFcnJvciwgJ3VudXNlZCByZWdleCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeVHlwZUVycm9yIG5vdCByYWlzZWQkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15UeXBlRXJyb3Igbm90IHJhaXNlZCQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVHlwZUVycm9yIG5vdCByYWlzZWQgOiBvb3BzJCddKQorICAgICAgICAjIHRlc3QgZXJyb3IgcmFpc2VkIGJ1dCB3aXRoIHdyb25nIG1lc3NhZ2UKKyAgICAgICAgZGVmIHJhaXNlX3dyb25nX21lc3NhZ2UoKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlc0NNKCdhc3NlcnRSYWlzZXNSZWdleCcsIChUeXBlRXJyb3IsICdyZWdleCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfd3JvbmdfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iIDogb29wcyQnXSkKKworICAgIGRlZiB0ZXN0QXNzZXJ0V2FybnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0V2FybnMnLCAoVXNlcldhcm5pbmcsKSwgbGFtYmRhOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeVXNlcldhcm5pbmcgbm90IHRyaWdnZXJlZCQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQgOiBvb3BzJCddKQorCisgICAgZGVmIHRlc3RBc3NlcnRXYXJuc1JlZ2V4KHNlbGYpOgorICAgICAgICAjIHRlc3QgZXJyb3Igbm90IHJhaXNlZAorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFdhcm5zUmVnZXgnLCAoVXNlcldhcm5pbmcsICd1bnVzZWQgcmVnZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkIDogb29wcyQnXSkKKyAgICAgICAgIyB0ZXN0IHdhcm5pbmcgcmFpc2VkIGJ1dCB3aXRoIHdyb25nIG1lc3NhZ2UKKyAgICAgICAgZGVmIHJhaXNlX3dyb25nX21lc3NhZ2UoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0V2FybnNSZWdleCcsIChVc2VyV2FybmluZywgJ3JlZ2V4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV93cm9uZ19tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeInJlZ2V4IiBkb2VzIG5vdCBtYXRjaCAiZm9vIiQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIgOiBvb3BzJCddKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5CmluZGV4IGM3NGE1MzkuLmZkYjJlNzggMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkKQEAgLTQsNiArNCw3IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IHdlYWtyZWYKIGltcG9ydCBpbnNwZWN0CiAKIGZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKQEAgLTM4NiwyNyArMzg3LDYyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShGb28oKS5pZCgpLCBzdHIpCiAKIAotICAgICMgIklmIHJlc3VsdCBpcyBvbWl0dGVkIG9yIE5vbmUsIGEgdGVtcG9yYXJ5IHJlc3VsdCBvYmplY3QgaXMgY3JlYXRlZAotICAgICMgYW5kIHVzZWQsIGJ1dCBpcyBub3QgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGNhbGxlci4gQXMgVGVzdENhc2Ugb3ducyB0aGUKKyAgICAjICJJZiByZXN1bHQgaXMgb21pdHRlZCBvciBOb25lLCBhIHRlbXBvcmFyeSByZXN1bHQgb2JqZWN0IGlzIGNyZWF0ZWQsCisgICAgIyB1c2VkLCBhbmQgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGNhbGxlci4gQXMgVGVzdENhc2Ugb3ducyB0aGUKICAgICAjIHRlbXBvcmFyeSByZXN1bHQgc3RhcnRUZXN0UnVuIGFuZCBzdG9wVGVzdFJ1biBhcmUgY2FsbGVkLgogCiAgICAgZGVmIHRlc3RfcnVuX191c2VzX2RlZmF1bHRUZXN0UmVzdWx0KHNlbGYpOgogICAgICAgICBldmVudHMgPSBbXQorICAgICAgICBkZWZhdWx0UmVzdWx0ID0gTG9nZ2luZ1Jlc3VsdChldmVudHMpCiAKICAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgogICAgICAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoJ3Rlc3QnKQogCiAgICAgICAgICAgICBkZWYgZGVmYXVsdFRlc3RSZXN1bHQoc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIExvZ2dpbmdSZXN1bHQoZXZlbnRzKQorICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0UmVzdWx0CiAKICAgICAgICAgIyBNYWtlIHJ1bigpIGZpbmQgYSByZXN1bHQgb2JqZWN0IG9uIGl0cyBvd24KLSAgICAgICAgRm9vKCd0ZXN0JykucnVuKCkKKyAgICAgICAgcmVzdWx0ID0gRm9vKCd0ZXN0JykucnVuKCkKIAorICAgICAgICBzZWxmLmFzc2VydElzKHJlc3VsdCwgZGVmYXVsdFJlc3VsdCkKICAgICAgICAgZXhwZWN0ZWQgPSBbJ3N0YXJ0VGVzdFJ1bicsICdzdGFydFRlc3QnLCAndGVzdCcsICdhZGRTdWNjZXNzJywKICAgICAgICAgICAgICdzdG9wVGVzdCcsICdzdG9wVGVzdFJ1biddCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzLCBleHBlY3RlZCkKIAorCisgICAgIyAiVGhlIHJlc3VsdCBvYmplY3QgaXMgcmV0dXJuZWQgdG8gcnVuJ3MgY2FsbGVyIgorICAgIGRlZiB0ZXN0X3J1bl9fcmV0dXJuc19naXZlbl9yZXN1bHQoc2VsZik6CisKKyAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKworICAgICAgICByZXR2YWwgPSBGb28oJ3Rlc3QnKS5ydW4ocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgcmVzdWx0KQorCisKKyAgICAjICJUaGUgc2FtZSBlZmZlY3QgW2FzIG1ldGhvZCBydW5dIG1heSBiZSBoYWQgYnkgc2ltcGx5IGNhbGxpbmcgdGhlCisgICAgIyBUZXN0Q2FzZSBpbnN0YW5jZS4iCisgICAgZGVmIHRlc3RfY2FsbF9faW52b2tpbmdfYW5faW5zdGFuY2VfZGVsZWdhdGVzX3RvX3J1bihzZWxmKToKKyAgICAgICAgcmVzdWx0SW4gPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKyAgICAgICAgcmVzdWx0T3V0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisKKyAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgZGVmIHJ1bihzZWxmLCByZXN1bHQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmVzdWx0LCByZXN1bHRJbikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0T3V0CisKKyAgICAgICAgcmV0dmFsID0gRm9vKCd0ZXN0JykocmVzdWx0SW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIHJlc3VsdE91dCkKKworCiAgICAgZGVmIHRlc3RTaG9ydERlc2NyaXB0aW9uV2l0aG91dERvY3N0cmluZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5zaG9ydERlc2NyaXB0aW9uKCkpCiAKQEAgLTExNDAsNyArMTE3Niw2IEBACiAgICAgICAgICAgICAoc2VsZi5hc3NlcnRfLCAoVHJ1ZSwpKSwKICAgICAgICAgICAgIChzZWxmLmZhaWxVbmxlc3NSYWlzZXMsIChUeXBlRXJyb3IsIGxhbWJkYSBfOiAzLjE0ICsgJ3NwYW0nKSksCiAgICAgICAgICAgICAoc2VsZi5mYWlsSWYsIChGYWxzZSwpKSwKLSAgICAgICAgICAgIChzZWxmLmFzc2VydFNhbWVFbGVtZW50cywgKFsxLCAxLCAyLCAzXSwgWzEsIDIsIDNdKSksCiAgICAgICAgICAgICAoc2VsZi5hc3NlcnREaWN0Q29udGFpbnNTdWJzZXQsIChkaWN0KGE9MSwgYj0yKSwgZGljdChhPTEsIGI9MiwgYz0zKSkpLAogICAgICAgICAgICAgKHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwLCAoS2V5RXJyb3IsICdmb28nLCBsYW1iZGE6IHt9Wydmb28nXSkpLAogICAgICAgICAgICAgKHNlbGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcywgKCdiYXInLCAnYmFyJykpLApAQCAtMTE0OSwxOCArMTE4NCwyMCBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICAgICAgbWV0aCgqYXJncykKIAotICAgIGRlZiB0ZXN0RGVwcmVjYXRlZEZhaWxNZXRob2RzKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgdGhlIGRlcHJlY2F0ZWQgZmFpbCogbWV0aG9kcyBnZXQgcmVtb3ZlZCBpbiAzLjMiIiIKKyAgICAjIGRpc2FibGUgdGhpcyB0ZXN0IGZvciBub3cuIFdoZW4gdGhlIHZlcnNpb24gd2hlcmUgdGhlIGZhaWwqIG1ldGhvZHMgd2lsbAorICAgICMgYmUgcmVtb3ZlZCBpcyBkZWNpZGVkLCByZS1lbmFibGUgaXQgYW5kIHVwZGF0ZSB0aGUgdmVyc2lvbgorICAgIGRlZiBfdGVzdERlcHJlY2F0ZWRGYWlsTWV0aG9kcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHRoZSBkZXByZWNhdGVkIGZhaWwqIG1ldGhvZHMgZ2V0IHJlbW92ZWQgaW4gMy54IiIiCiAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDMpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGRlcHJlY2F0ZWRfbmFtZXMgPSBbCiAgICAgICAgICAgICAnZmFpbElmRXF1YWwnLCAnZmFpbFVubGVzc0VxdWFsJywgJ2ZhaWxVbmxlc3NBbG1vc3RFcXVhbCcsCiAgICAgICAgICAgICAnZmFpbElmQWxtb3N0RXF1YWwnLCAnZmFpbFVubGVzcycsICdmYWlsVW5sZXNzUmFpc2VzJywgJ2ZhaWxJZicsCi0gICAgICAgICAgICAnYXNzZXJ0U2FtZUVsZW1lbnRzJywgJ2Fzc2VydERpY3RDb250YWluc1N1YnNldCcsCisgICAgICAgICAgICAnYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0JywKICAgICAgICAgXQogICAgICAgICBmb3IgZGVwcmVjYXRlZF9uYW1lIGluIGRlcHJlY2F0ZWRfbmFtZXM6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKLSAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYsIGRlcHJlY2F0ZWRfbmFtZSkgICMgcmVtb3ZlIHRoZXNlIGluIDMuMworICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgZGVwcmVjYXRlZF9uYW1lKSAgIyByZW1vdmUgdGhlc2UgaW4gMy54CiAKICAgICBkZWYgdGVzdERlZXBjb3B5KHNlbGYpOgogICAgICAgICAjIElzc3VlOiA1NjYwCkBAIC0xMjY4LDMgKzEzMDUsMTEgQEAKICAgICAgICAgICAgIGtsYXNzKCd0ZXN0X3NvbWV0aGluZycpLnJ1bihyZXN1bHQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHQuZXJyb3JzKSwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnRlc3RzUnVuLCAxKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3ROb0N5Y2xlcyhzZWxmKToKKyAgICAgICAgY2FzZSA9IHVuaXR0ZXN0LlRlc3RDYXNlKCkKKyAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihjYXNlKQorICAgICAgICB3aXRoIHN1cHBvcnQuZGlzYWJsZV9nYygpOgorICAgICAgICAgICAgZGVsIGNhc2UKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uod3IoKSkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKaW5kZXggZjdlMzFhNS4uZDFiOWVmNSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKQEAgLTIzOSw3ICsyMzksNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3NkYXNmYXNmYXNkZicpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgc2Rhc2Zhc2Zhc2RmIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiTm8gbW9kdWxlIG5hbWVkICdzZGFzZmFzZmFzZGYnIikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgSW1wb3J0RXJyb3IiKQogCkBAIC02MTksNyArNjE5LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ3NkYXNmYXNmYXNkZiddKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiTm8gbW9kdWxlIG5hbWVkIHNkYXNmYXNmYXNkZiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIk5vIG1vZHVsZSBuYW1lZCAnc2Rhc2Zhc2Zhc2RmJyIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzIGZhaWxlZCB0byByYWlzZSBJbXBvcnRFcnJvciIpCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weQppbmRleCBkNWQwZjVhLi45Nzk0ODY4IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5CkBAIC0xMzEsMjMgKzEzMSw2IEBACiAgICAgICAgIEZha2VSdW5uZXIudGVzdCA9IE5vbmUKICAgICAgICAgRmFrZVJ1bm5lci5yYWlzZUVycm9yID0gRmFsc2UKIAotICAgIGRlZiB0ZXN0SGVscEFuZFVua25vd24oc2VsZik6Ci0gICAgICAgIHByb2dyYW0gPSBzZWxmLnByb2dyYW0KLSAgICAgICAgZGVmIHVzYWdlRXhpdChtc2c9Tm9uZSk6Ci0gICAgICAgICAgICBwcm9ncmFtLm1zZyA9IG1zZwotICAgICAgICAgICAgcHJvZ3JhbS5leGl0ID0gVHJ1ZQotICAgICAgICBwcm9ncmFtLnVzYWdlRXhpdCA9IHVzYWdlRXhpdAotCi0gICAgICAgIGZvciBvcHQgaW4gJy1oJywgJy1IJywgJy0taGVscCc6Ci0gICAgICAgICAgICBwcm9ncmFtLmV4aXQgPSBGYWxzZQotICAgICAgICAgICAgcHJvZ3JhbS5wYXJzZUFyZ3MoW05vbmUsIG9wdF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvZ3JhbS5leGl0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvZ3JhbS5tc2cpCi0KLSAgICAgICAgcHJvZ3JhbS5wYXJzZUFyZ3MoW05vbmUsICctJCddKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvZ3JhbS5leGl0KQotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShwcm9ncmFtLm1zZykKLQogICAgIGRlZiB0ZXN0VmVyYm9zaXR5KHNlbGYpOgogICAgICAgICBwcm9ncmFtID0gc2VsZi5wcm9ncmFtCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL19faW5pdF9fLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdkN2FlOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworaGVyZSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKK2xvYWRlciA9IHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyCisKK2RlZiBsb2FkX3Rlc3RzKCphcmdzKToKKyAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCisgICAgZm9yIGZuIGluIG9zLmxpc3RkaXIoaGVyZSk6CisgICAgICAgIGlmIGZuLnN0YXJ0c3dpdGgoInRlc3QiKSBhbmQgZm4uZW5kc3dpdGgoIi5weSIpOgorICAgICAgICAgICAgbW9kbmFtZSA9ICJ1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLiIgKyBmbls6LTNdCisgICAgICAgICAgICBfX2ltcG9ydF9fKG1vZG5hbWUpCisgICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1ttb2RuYW1lXQorICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUpKQorICAgIHJldHVybiBzdWl0ZQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ3Mzg3OQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKQEAgLTAsMCArMSwyMyBAQAoraW1wb3J0IHN5cworCitkZWYgaXNfaW5zdGFuY2Uob2JqLCBrbGFzcyk6CisgICAgIiIiVmVyc2lvbiBvZiBpc19pbnN0YW5jZSB0aGF0IGRvZXNuJ3QgYWNjZXNzIF9fY2xhc3NfXyIiIgorICAgIHJldHVybiBpc3N1YmNsYXNzKHR5cGUob2JqKSwga2xhc3MpCisKKworY2xhc3MgU29tZUNsYXNzKG9iamVjdCk6CisgICAgY2xhc3NfYXR0cmlidXRlID0gTm9uZQorCisgICAgZGVmIHdpYmJsZShzZWxmKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFgob2JqZWN0KToKKyAgICBwYXNzCisKKworZGVmIGV4YW1pbmVfd2FybmluZ3MoZnVuYyk6CisgICAgZGVmIHdyYXBwZXIoKToKKyAgICAgICAgd2l0aCBjYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgd3M6CisgICAgICAgICAgICBmdW5jKHdzKQorICAgIHJldHVybiB3cmFwcGVyCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0Y2FsbGFibGUucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0Y2FsbGFibGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IyZGQwMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RjYWxsYWJsZS5weQpAQCAtMCwwICsxLDE0NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMiBNaWNoYWVsIEZvb3JkICYgdGhlIG1vY2sgdGVhbQorIyBFLW1haWw6IGZ1enp5bWFuIEFUIHZvaWRzcGFjZSBET1Qgb3JnIERPVCB1aworIyBodHRwOi8vd3d3LnZvaWRzcGFjZS5vcmcudWsvcHl0aG9uL21vY2svCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IGlzX2luc3RhbmNlLCBYLCBTb21lQ2xhc3MKKworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCisgICAgTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywKKyAgICBOb25DYWxsYWJsZU1vY2ssIHBhdGNoLCBjcmVhdGVfYXV0b3NwZWMsCisgICAgQ2FsbGFibGVNaXhpbgorKQorCisKKworY2xhc3MgVGVzdENhbGxhYmxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBhc3NlcnROb3RDYWxsYWJsZShzZWxmLCBtb2NrKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19pbnN0YW5jZShtb2NrLCBDYWxsYWJsZU1peGluKSkKKworCisgICAgZGVmIHRlc3Rfbm9uX2NhbGxhYmxlKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBOb25DYWxsYWJsZU1hZ2ljTW9jaygpLCBOb25DYWxsYWJsZU1vY2soKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnX19jYWxsX18nKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9jay5fX2NsYXNzX18uX19uYW1lX18sIHJlcHIobW9jaykpCisKKworICAgIGRlZiB0ZXN0X2hlaXJhcmNoeShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTWFnaWNNb2NrLCBNb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTm9uQ2FsbGFibGVNYWdpY01vY2ssIE5vbkNhbGxhYmxlTW9jaykpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIG9uZSA9IE5vbkNhbGxhYmxlTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUob25lLm9uZSksIE1vY2spKQorCisgICAgICAgIHR3byA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh0d28udHdvKSwgTWFnaWNNb2NrKSkKKworCisgICAgZGVmIHRlc3Rfc3ViY2xhc3NlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTW9ja1N1YihNb2NrKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBvbmUgPSBNb2NrU3ViKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZShvbmUub25lKSwgTW9ja1N1YikpCisKKyAgICAgICAgY2xhc3MgTWFnaWNTdWIoTWFnaWNNb2NrKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0d28gPSBNYWdpY1N1YigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUodHdvLnR3byksIE1hZ2ljU3ViKSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlYyhzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjPVRydWUpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKworICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKGluc3RhbmNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zcGVjX3NldChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjX3NldD1UcnVlKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19pbnN0YW5jZShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjPVgoKSkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUobW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zcGVjX3NldF9pbnN0YW5jZShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjX3NldD1YKCkpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19jYWxsYWJsZV9jbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ2FsbGFibGVYKFgpOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBTdWIoQ2FsbGFibGVYKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNdWx0aShTb21lQ2xhc3MsIFN1Yik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9yIGFyZyBpbiAnc3BlYycsICdzcGVjX3NldCc6CisgICAgICAgICAgICBmb3IgS2xhc3MgaW4gQ2FsbGFibGVYLCBTdWIsIE11bHRpOgorICAgICAgICAgICAgICAgIHdpdGggcGF0Y2goJyVzLlgnICUgX19uYW1lX18sICoqe2FyZzogS2xhc3N9KSBhcyBtb2NrOgorICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICAgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoaW5zdGFuY2UsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICAgICAgICAgICMgaW5oZXJpdGVkIHNwZWMKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyYmF6JykKKworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBpbnN0YW5jZSgpCisgICAgICAgICAgICAgICAgICAgICMgaW5zdGFuY2UgaXMgY2FsbGFibGUsIHJlc3VsdCBoYXMgbm8gc3BlYworICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0KDMsIDIsIDEpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgzLCAyLCAxKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuZm9vKDMsIDIsIDEpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5mb28uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMywgMiwgMSkKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9wc2VjKHNlbGYpOgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFgpCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UpCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhYKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX2luc3RhbmNlKHNlbGYpOgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFNvbWVDbGFzcywgaW5zdGFuY2U9VHJ1ZSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgIG1vY2sud2liYmxlKCkKKyAgICAgICAgbW9jay53aWJibGUuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay53aWJibGUsICdzb21lJywgICdhcmdzJykKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdGhlbHBlcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJmYjI5MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5CkBAIC0wLDAgKzEsODg5IEBACitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCisgICAgY2FsbCwgX0NhbGwsIGNyZWF0ZV9hdXRvc3BlYywgTWFnaWNNb2NrLAorICAgIE1vY2ssIEFOWSwgX0NhbGxMaXN0LCBwYXRjaCwgUHJvcGVydHlNb2NrCispCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCisKK2NsYXNzIFNvbWVDbGFzcyhvYmplY3QpOgorICAgIGRlZiBvbmUoc2VsZiwgYSwgYik6CisgICAgICAgIHBhc3MKKyAgICBkZWYgdHdvKHNlbGYpOgorICAgICAgICBwYXNzCisgICAgZGVmIHRocmVlKHNlbGYsIGE9Tm9uZSk6CisgICAgICAgIHBhc3MKKworCisKK2NsYXNzIEFueVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW55KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEFOWSwgb2JqZWN0KCkpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKEFOWSkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoQU5ZKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jayhmb289QU5ZKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChmb289QU5ZKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEFOWSksICc8QU5ZPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKEFOWSksICc8QU5ZPicpCisKKworICAgIGRlZiB0ZXN0X2FueV9hbmRfZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jayhkYXRldGltZS5ub3coKSwgZm9vPWRhdGV0aW1lLm5vdygpKQorCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKEFOWSwgZm9vPUFOWSkKKworCisgICAgZGVmIHRlc3RfYW55X21vY2tfY2FsbHNfY29tcGFyaXNvbl9vcmRlcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBkID0gZGF0ZXRpbWUubm93KCkKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgZm9yIGQgaW4gZGF0ZXRpbWUubm93KCksIEZvbygpOgorICAgICAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKworICAgICAgICAgICAgbW9jayhkLCBmb289ZCwgYmFyPWQpCisgICAgICAgICAgICBtb2NrLm1ldGhvZChkLCB6aW5nYT1kLCBhbHBoYT1kKQorICAgICAgICAgICAgbW9jaygpLm1ldGhvZChhMT1kLCB6OTk9ZCkKKworICAgICAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAgICAgY2FsbChBTlksIGZvbz1BTlksIGJhcj1BTlkpLAorICAgICAgICAgICAgICAgIGNhbGwubWV0aG9kKEFOWSwgemluZ2E9QU5ZLCBhbHBoYT1BTlkpLAorICAgICAgICAgICAgICAgIGNhbGwoKSwgY2FsbCgpLm1ldGhvZChhMT1BTlksIHo5OT1BTlkpCisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBtb2NrLm1vY2tfY2FsbHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisKKworCitjbGFzcyBDYWxsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9jYWxsX3dpdGhfY2FsbChzZWxmKToKKyAgICAgICAga2FsbCA9IF9DYWxsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoKCksKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKHt9LCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKCkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsIHt9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoKSwge30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJ2ZvbycsKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCdiYXInLCAoKSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnYmF6Jywge30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJ3NwYW0nLCAoKSwge30pKSkKKworICAgICAgICBrYWxsID0gX0NhbGwoKCgxLCAyLCAzKSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgoMSwgMiwgMyksKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgMykpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoKDEsIDIsIDMpLCB7fSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDMpLCB7fSkpKQorCisgICAgICAgIGthbGwgPSBfQ2FsbCgoKDEsIDIsIDQpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgMykpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCAzKSwge30pKSkKKworICAgICAgICBrYWxsID0gX0NhbGwoKCdmb28nLCAoMSwgMiwgNCksKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCA0KSkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDQpLCB7fSkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnYmFyJywgKDEsIDIsIDQpKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCdiYXInLCAoMSwgMiwgNCksIHt9KSkpCisKKyAgICAgICAga2FsbCA9IF9DYWxsKCh7J2EnOiAzfSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKCksIHsnYSc6IDN9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCB7J2EnOiAzfSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgoKSwgeydhJzogM30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoeydhJzogM30sKSkpCisKKworICAgIGRlZiB0ZXN0X2VtcHR5X19DYWxsKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCgpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCgpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKHt9LCkpCisKKworICAgIGRlZiB0ZXN0X25hbWVkX2VtcHR5X2NhbGwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoJ2ZvbycsICgpLCB7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsKCksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgoKSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICh7fSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgnYmFyJywpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgnYmFyJywgKCkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgnYmFyJywge30pKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX3dpdGhfYXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoMSwgMiwgMyksIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgoMSwgMiwgMyksKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgxLCAyLCAzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoMSwgMiwgMyksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoKDEsIDIsIDMpLCB7fSkpCisKKworICAgIGRlZiB0ZXN0X25hbWVkX2NhbGxfd2l0aF9hcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCdmb28nLCAoMSwgMiwgMyksIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKDEsIDIsIDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgxLCAyLCAzKSwge30pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCgxLCAyLCAzKSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgoMSwgMiwgMyksIHt9KSkKKworCisgICAgZGVmIHRlc3RfY2FsbF93aXRoX2t3YXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoKSwgZGljdChhPTMsIGI9NCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKGRpY3QoYT0zLCBiPTQpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCBkaWN0KGE9MywgYj00KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoKSwgZGljdChhPTMsIGI9NCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgoKSwgZGljdChhPTMsIGI9NCkpKQorCisKKyAgICBkZWYgdGVzdF9uYW1lZF9jYWxsX3dpdGhfa3dhcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCdmb28nLCAoKSwgZGljdChhPTMsIGI9NCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCBkaWN0KGE9MywgYj00KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoKSwgZGljdChhPTMsIGI9NCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKGRpY3QoYT0zLCBiPTQpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCgpLCBkaWN0KGE9MywgYj00KSkpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfd2l0aF9hcmdzX2NhbGxfZW1wdHlfbmFtZShzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoMSwgMiwgMyksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBjYWxsKDEsIDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoMSwgMiwgMyksIGFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxsKDEsIDIsIDMpIGluIFthcmdzXSkKKworCisgICAgZGVmIHRlc3RfY2FsbF9uZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChfQ2FsbCgoKDEsIDIsIDMpLCkpLCBjYWxsKDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF9DYWxsKCgoMSwgMiwgMyksKSkgIT0gY2FsbCgxLCAyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9DYWxsKCgoMSwgMiksIHt9KSkgIT0gY2FsbCgxLCAyLCAzKSkKKworCisgICAgZGVmIHRlc3RfY2FsbF9ub25fdHVwbGVzKHNlbGYpOgorICAgICAgICBrYWxsID0gX0NhbGwoKCgxLCAyLCAzKSwpKQorICAgICAgICBmb3IgdmFsdWUgaW4gMSwgTm9uZSwgc2VsZiwgaW50OgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa2FsbCA9PSB2YWx1ZSkKKworCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKF9DYWxsKCkpLCAnY2FsbCgpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKF9DYWxsKCgnZm9vJywpKSksICdjYWxsLmZvbygpJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoX0NhbGwoKCgxLCAyLCAzKSwgeydhJzogJ2InfSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbCgxLCAyLCAzLCBhPSdiJykiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoX0NhbGwoKCdiYXInLCAoMSwgMiwgMyksIHsnYSc6ICdiJ30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGwuYmFyKDEsIDIsIDMsIGE9J2InKSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwpLCAnY2FsbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNhbGwpLCAnY2FsbCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoKSksICdjYWxsKCknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY2FsbCgxKSksICdjYWxsKDEpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoeno9J3RoaW5nJykpLCAiY2FsbCh6ej0ndGhpbmcnKSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoKS5mb28pLCAnY2FsbCgpLmZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKDEpLmZvby5iYXIoYT0zKS5iaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnY2FsbCgpLmZvby5iYXIoKS5iaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIoY2FsbCgpLmZvbygxLCAyLCBhPTMpKSwKKyAgICAgICAgICAgICJjYWxsKCkuZm9vKDEsIDIsIGE9MykiCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoKSgpKSwgImNhbGwoKSgpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoMSkoMikpLCAiY2FsbCgpKDIpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIoY2FsbCgpKCkuYmFyKCkuYmF6LmJlZXAoMSkpLAorICAgICAgICAgICAgImNhbGwoKSgpLmJhcigpLmJhei5iZWVwKDEpIgorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2NhbGwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgpLCAoJycsICgpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgnZm9vJywgJ2JhcicsIG9uZT0zLCB0d289NCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCcnLCAoJ2ZvbycsICdiYXInKSwgeydvbmUnOiAzLCAndHdvJzogNH0pKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyLCAzKQorICAgICAgICBtb2NrKGE9MywgYj02KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbGwoMSwgMiwgMyksIGNhbGwoYT0zLCBiPTYpXSkKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9jYWxsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwuZm9vKDEpLCAoJ2ZvbycsICgxLCksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsLmJhci5iYXooZmlzaD0nZWdncycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgnYmFyLmJheicsICgpLCB7J2Zpc2gnOiAnZWdncyd9KSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suZm9vKDEsIDIgLDMpCisgICAgICAgIG1vY2suYmFyLmJheihhPTMsIGI9NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbY2FsbC5mb28oMSwgMiwgMyksIGNhbGwuYmFyLmJheihhPTMsIGI9NildKQorCisKKyAgICBkZWYgdGVzdF9leHRlbmRlZF9jYWxsKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBjYWxsKDEpLmZvbygyKS5iYXIoMywgYT00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgKCcoKS5mb28oKS5iYXInLCAoMywpLCBkaWN0KGE9NCkpKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKDEsIDIsIGE9MywgYj00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLCBjYWxsKDEsIDIsIGE9MywgYj00KSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtb2NrLmNhbGxfYXJncywgY2FsbCgxLCAyLCAzKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFtjYWxsKDEsIDIsIGE9MywgYj00KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbCgxLCAyLCBhPTMsIGI9NCldKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrLmZvbygxKS5iYXIoKSgpLmJhei5iZWVwKGE9NikKKworICAgICAgICBsYXN0X2NhbGwgPSBjYWxsLmZvbygxKS5iYXIoKSgpLmJhei5iZWVwKGE9NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHNbLTFdLCBsYXN0X2NhbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBsYXN0X2NhbGwuY2FsbF9saXN0KCkpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfbGlzdChzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsKDEpLmNhbGxfbGlzdCgpLCBtb2NrLm1vY2tfY2FsbHMpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soMSkubWV0aG9kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgxKS5tZXRob2QoMikuY2FsbF9saXN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5tb2NrX2NhbGxzKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKDEpLm1ldGhvZCgyKSgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoMSkubWV0aG9kKDIpKDMpLmNhbGxfbGlzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2subW9ja19jYWxscykKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgaW50KG1vY2soMSkubWV0aG9kKDIpKDMpLmZvby5iYXIuYmF6KDQpKDUpKQorICAgICAgICBrYWxsID0gY2FsbCgxKS5tZXRob2QoMikoMykuZm9vLmJhci5iYXooNCkoNSkuX19pbnRfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbC5jYWxsX2xpc3QoKSwgbW9jay5tb2NrX2NhbGxzKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX2FueShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsLCBBTlkpCisKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIGludChtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywgW0FOWV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0FOWV0sIG0ubW9ja19jYWxscykKKworCisgICAgZGVmIHRlc3RfdHdvX2FyZ3NfY2FsbChzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoMSwgMiksIHsnYSc6IDN9KSwgdHdvPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFyZ3MpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sICgxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzWzFdLCB7J2EnOiAzfSkKKworICAgICAgICBvdGhlcl9hcmdzID0gX0NhbGwoKCgxLCAyKSwgeydhJzogM30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIG90aGVyX2FyZ3MpCisKKworY2xhc3MgU3BlY1NpZ25hdHVyZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIF9jaGVja19zb21lY2xhc3NfbW9jayhzZWxmLCBtb2NrKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdmb28nKQorICAgICAgICBtb2NrLm9uZSgxLCAyKQorICAgICAgICBtb2NrLm9uZS5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sub25lLmFzc2VydF9jYWxsZWRfd2l0aCwgMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLm9uZSwgMSkKKworICAgICAgICBtb2NrLnR3bygpCisgICAgICAgIG1vY2sudHdvLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLnR3by5hc3NlcnRfY2FsbGVkX3dpdGgsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay50d28sIDEpCisKKyAgICAgICAgbW9jay50aHJlZSgpCisgICAgICAgIG1vY2sudGhyZWUuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sudGhyZWUuYXNzZXJ0X2NhbGxlZF93aXRoLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2sudGhyZWUsIDMsIDIpCisKKyAgICAgICAgbW9jay50aHJlZSgxKQorICAgICAgICBtb2NrLnRocmVlLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorCisgICAgICAgIG1vY2sudGhyZWUoYT0xKQorICAgICAgICBtb2NrLnRocmVlLmFzc2VydF9jYWxsZWRfd2l0aChhPTEpCisKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBmb3Igc3BlYyBpbiAoU29tZUNsYXNzLCBTb21lQ2xhc3MoKSk6CisgICAgICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zb21lY2xhc3NfbW9jayhtb2NrKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKGYsIHJldHVybl92YWx1ZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksICdmb28nKQorCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vLCByZXR1cm5fdmFsdWU9J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCAnZm9vJykKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfcmVzZXRfbW9jayhzZWxmKToKKyAgICAgICAgbSA9IGNyZWF0ZV9hdXRvc3BlYyhpbnQpCisgICAgICAgIGludChtKQorICAgICAgICBtLnJlc2V0X21vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19pbnRfXy5jYWxsX2NvdW50LCAwKQorCisKKyAgICBkZWYgdGVzdF9tb2NraW5nX3VuYm91bmRfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIGZvbyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBwID0gcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycpCisgICAgICAgIG1vY2tfZm9vID0gcC5zdGFydCgpCisgICAgICAgIEZvbygpLmZvbygxKQorCisgICAgICAgIG1vY2tfZm9vLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfdW5ib3VuZF9tZXRob2RzKHNlbGYpOgorICAgICAgICAjIHNlZSBtb2NrIGlzc3VlIDEyOAorICAgICAgICAjIHRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbCB1bnRpbCB0aGUgaXNzdWUgaXMgZml4ZWQKKyAgICAgICAgcmV0dXJuCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAga2xhc3MgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBpbnN0YW5jZSA9IGtsYXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZS5mb28sIDEpCisKKyAgICAgICAgIyBOb3RlOiBubyB0eXBlIGNoZWNraW5nIG9uIHRoZSAic2VsZiIgcGFyYW1ldGVyCisgICAgICAgIGtsYXNzLmZvbygxKQorICAgICAgICBrbGFzcy5mb28uYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwga2xhc3MuZm9vKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfa2V5d29yZF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgYSA9IDMKKyAgICAgICAgbSA9IGNyZWF0ZV9hdXRvc3BlYyhGb28sIGE9JzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uYSwgJzMnKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfa2V5d29yZF9vbmx5X2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhLCAqLCBiPU5vbmUpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG0gPSBjcmVhdGVfYXV0b3NwZWMoZm9vKQorICAgICAgICBtKDEpCisgICAgICAgIG0uYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbSwgMSwgMikKKworICAgICAgICBtKDIsIGI9MykKKyAgICAgICAgbS5hc3NlcnRfY2FsbGVkX3dpdGgoMiwgYj0zKQorCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9hc19pbnN0YW5jZV9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIG9iaiA9IFNvbWVDbGFzcygpCisgICAgICAgIGRlZiBmKGEpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBvYmouZiA9IGYKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKG9iaikKKyAgICAgICAgbW9jay5mKCdiaW5nJykKKyAgICAgICAgbW9jay5mLmFzc2VydF9jYWxsZWRfd2l0aCgnYmluZycpCisKKworICAgIGRlZiB0ZXN0X3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgIyBiZWNhdXNlIHNwZWMgYXMgYSBsaXN0IG9mIHN0cmluZ3MgaW4gdGhlIG1vY2sgY29uc3RydWN0b3IgbWVhbnMKKyAgICAgICAgIyBzb21ldGhpbmcgdmVyeSBkaWZmZXJlbnQgd2UgdHJlYXQgYSBsaXN0IGluc3RhbmNlIGFzIHRoZSB0eXBlLgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFtdKQorICAgICAgICBtb2NrLmFwcGVuZCgnZm9vJykKKyAgICAgICAgbW9jay5hcHBlbmQuYXNzZXJ0X2NhbGxlZF93aXRoKCdmb28nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnZm9vJykKKworICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9IFtdCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIG1vY2suZm9vLmFwcGVuZCgzKQorICAgICAgICBtb2NrLmZvby5hcHBlbmQuYXNzZXJ0X2NhbGxlZF93aXRoKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLmZvbywgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YihTb21lQ2xhc3MpOgorICAgICAgICAgICAgYXR0ciA9IFNvbWVDbGFzcygpCisKKyAgICAgICAgc3ViX21vY2sgPSBjcmVhdGVfYXV0b3NwZWMoU3ViKQorCisgICAgICAgIGZvciBtb2NrIGluIChzdWJfbW9jaywgc3ViX21vY2suYXR0cik6CisgICAgICAgICAgICBzZWxmLl9jaGVja19zb21lY2xhc3NfbW9jayhtb2NrKQorCisKKyAgICBkZWYgdGVzdF9idWlsdGluX2Z1bmN0aW9uc190eXBlcyhzZWxmKToKKyAgICAgICAgIyB3ZSBjb3VsZCByZXBsYWNlIGJ1aWx0aW4gZnVuY3Rpb25zIC8gbWV0aG9kcyB3aXRoIGEgZnVuY3Rpb24KKyAgICAgICAgIyB3aXRoICphcmdzIC8gKiprd2FyZ3Mgc2lnbmF0dXJlLiBVc2luZyB0aGUgYnVpbHRpbiBtZXRob2QgdHlwZQorICAgICAgICAjIGFzIGEgc3BlYyBzZWVtcyB0byB3b3JrIGZhaXJseSB3ZWxsIHRob3VnaC4KKyAgICAgICAgY2xhc3MgQnVpbHRpblN1YmNsYXNzKGxpc3QpOgorICAgICAgICAgICAgZGVmIGJhcihzZWxmLCBhcmcpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNvcnRlZCA9IHNvcnRlZAorICAgICAgICAgICAgYXR0ciA9IHt9CisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhCdWlsdGluU3ViY2xhc3MpCisgICAgICAgIG1vY2suYXBwZW5kKDMpCisgICAgICAgIG1vY2suYXBwZW5kLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5hcHBlbmQsICdmb28nKQorCisgICAgICAgIG1vY2suYmFyKCdmb28nKQorICAgICAgICBtb2NrLmJhci5hc3NlcnRfY2FsbGVkX3dpdGgoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5iYXIsICdmb28nLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suYmFyLCAnZm9vJykKKworICAgICAgICBtb2NrLnNvcnRlZChbMSwgMl0pCisgICAgICAgIG1vY2suc29ydGVkLmFzc2VydF9jYWxsZWRfd2l0aChbMSwgMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLnNvcnRlZCwgJ2ZvbycpCisKKyAgICAgICAgbW9jay5hdHRyLnBvcCgzKQorICAgICAgICBtb2NrLmF0dHIucG9wLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5hdHRyLCAnZm9vJykKKworCisgICAgZGVmIHRlc3RfbWV0aG9kX2NhbGxzKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWIoU29tZUNsYXNzKToKKyAgICAgICAgICAgIGF0dHIgPSBTb21lQ2xhc3MoKQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoU3ViKQorICAgICAgICBtb2NrLm9uZSgxLCAyKQorICAgICAgICBtb2NrLnR3bygpCisgICAgICAgIG1vY2sudGhyZWUoMykKKworICAgICAgICBleHBlY3RlZCA9IFtjYWxsLm9uZSgxLCAyKSwgY2FsbC50d28oKSwgY2FsbC50aHJlZSgzKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgZXhwZWN0ZWQpCisKKyAgICAgICAgbW9jay5hdHRyLm9uZSgxLCAyKQorICAgICAgICBtb2NrLmF0dHIudHdvKCkKKyAgICAgICAgbW9jay5hdHRyLnRocmVlKDMpCisKKyAgICAgICAgZXhwZWN0ZWQuZXh0ZW5kKAorICAgICAgICAgICAgW2NhbGwuYXR0ci5vbmUoMSwgMiksIGNhbGwuYXR0ci50d28oKSwgY2FsbC5hdHRyLnRocmVlKDMpXQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIGV4cGVjdGVkKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzKHNlbGYpOgorICAgICAgICBjbGFzcyBCdWlsdGluU3ViY2xhc3MobGlzdCk6CisgICAgICAgICAgICBhdHRyID0ge30KKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEJ1aWx0aW5TdWJjbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnQsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW50LCBtb2NrLmF0dHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2tbJ2ZvbyddLCBNYWdpY01vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmF0dHJbJ2ZvbyddLCBNYWdpY01vY2spCisKKworICAgIGRlZiB0ZXN0X3NwZWNfc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBTdWIoU29tZUNsYXNzKToKKyAgICAgICAgICAgIGF0dHIgPSBTb21lQ2xhc3MoKQorCisgICAgICAgIGZvciBzcGVjIGluIChTdWIsIFN1YigpKToKKyAgICAgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoc3BlYywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NvbWVjbGFzc19tb2NrKG1vY2spCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBtb2NrLCAnZm9vJywgJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbW9jay5hdHRyLCAnZm9vJywgJ2JhcicpCisKKworICAgIGRlZiB0ZXN0X2Rlc2NyaXB0b3JzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGYoY2xzLCBhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZyhhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQmFyKEZvbyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQmF6KFNvbWVDbGFzcywgQmFyKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmb3Igc3BlYyBpbiAoRm9vLCBGb28oKSwgQmFyLCBCYXIoKSwgQmF6LCBCYXooKSk6CisgICAgICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMpCisgICAgICAgICAgICBtb2NrLmYoMSwgMikKKyAgICAgICAgICAgIG1vY2suZi5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyKQorCisgICAgICAgICAgICBtb2NrLmcoMywgNCkKKyAgICAgICAgICAgIG1vY2suZy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgzLCA0KQorCisKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIGNsYXNzIEEob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBhKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGZvbyA9ICdmb28gYmFyIGJheicKKyAgICAgICAgICAgIGJhciA9IGZvbworCisgICAgICAgIEEuQiA9IEEKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhBKQorCisgICAgICAgIG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suQi5jYWxsZWQpCisKKyAgICAgICAgbW9jay5hKCkKKyAgICAgICAgbW9jay5CLmEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbY2FsbC5hKCksIGNhbGwuQi5hKCldKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQS5mb28sIEEuYmFyKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vY2suZm9vLCBtb2NrLmJhcikKKyAgICAgICAgbW9jay5mb28ubG93ZXIoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5iYXIubG93ZXIuYXNzZXJ0X2NhbGxlZF93aXRoKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX2luaGVyaXRhbmNlX2Zvcl9jbGFzc2VzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBhKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiBmKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3NfbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChjbGFzc19tb2NrLCBjbGFzc19tb2NrKCkpCisKKyAgICAgICAgZm9yIHRoaXNfbW9jayBpbiBjbGFzc19tb2NrLCBjbGFzc19tb2NrKCk6CisgICAgICAgICAgICB0aGlzX21vY2suYSgpCisgICAgICAgICAgICB0aGlzX21vY2suYS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aGlzX21vY2suYSwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgdGhpc19tb2NrLCAnYicpCisKKyAgICAgICAgaW5zdGFuY2VfbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28oKSkKKyAgICAgICAgaW5zdGFuY2VfbW9jay5hKCkKKyAgICAgICAgaW5zdGFuY2VfbW9jay5hLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2VfbW9jay5hLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlX21vY2ssICdiJykKKworICAgICAgICAjIFRoZSByZXR1cm4gdmFsdWUgaXNuJ3QgaXNuJ3QgY2FsbGFibGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZV9tb2NrKQorCisgICAgICAgIGluc3RhbmNlX21vY2suQmFyLmYoKQorICAgICAgICBpbnN0YW5jZV9tb2NrLkJhci5mLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZV9tb2NrLkJhciwgJ2cnKQorCisgICAgICAgIGluc3RhbmNlX21vY2suQmFyKCkuZigpCisgICAgICAgIGluc3RhbmNlX21vY2suQmFyKCkuZi5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2VfbW9jay5CYXIoKSwgJ2cnKQorCisKKyAgICBkZWYgdGVzdF9pbmhlcml0KHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGEgPSAzCisKKyAgICAgICAgRm9vLkZvbyA9IEZvbworCisgICAgICAgICMgY2xhc3MKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZSwgJ2InKQorCisgICAgICAgIGF0dHJfaW5zdGFuY2UgPSBtb2NrLkZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBhdHRyX2luc3RhbmNlLCAnYicpCisKKyAgICAgICAgIyBpbnN0YW5jZQorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisKKyAgICAgICAgIyBhdHRyaWJ1dGUgaW5zdGFuY2UKKyAgICAgICAgY2FsbF9yZXN1bHQgPSBtb2NrLkZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBjYWxsX3Jlc3VsdCwgJ2InKQorCisKKyAgICBkZWYgdGVzdF9idWlsdGlucyhzZWxmKToKKyAgICAgICAgIyB1c2VkIHRvIGZhaWwgd2l0aCBpbmZpbml0ZSByZWN1cnNpb24KKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKDEpCisKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKGludCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKCdmb28nKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoc3RyKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoe30pCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhkaWN0KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoW10pCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhsaXN0KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoc2V0KCkpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhzZXQpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYygxLjApCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhmbG9hdCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKDFqKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoY29tcGxleCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKEZhbHNlKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoVHJ1ZSkKKworCisgICAgZGVmIHRlc3RfZnVuY3Rpb24oc2VsZik6CisgICAgICAgIGRlZiBmKGEsIGIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIpCisKKyAgICAgICAgZi5mID0gZgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5mKQorICAgICAgICBtb2NrLmYoMywgNCkKKyAgICAgICAgbW9jay5mLmFzc2VydF9jYWxsZWRfd2l0aCgzLCA0KQorCisKKyAgICBkZWYgdGVzdF9za2lwX2F0dHJpYnV0ZWVycm9ycyhzZWxmKToKKyAgICAgICAgY2xhc3MgUmFpc2VyKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19nZXRfXyhzZWxmLCBvYmosIHR5cGU9Tm9uZSk6CisgICAgICAgICAgICAgICAgaWYgb2JqIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdDYW4gb25seSBiZSBhY2Nlc3NlZCB2aWEgYW4gaW5zdGFuY2UnKQorCisgICAgICAgIGNsYXNzIFJhaXNlckNsYXNzKG9iamVjdCk6CisgICAgICAgICAgICByYWlzZXIgPSBSYWlzZXIoKQorCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZXhpc3RpbmcoYSwgYik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGEgKyBiCisKKyAgICAgICAgcyA9IGNyZWF0ZV9hdXRvc3BlYyhSYWlzZXJDbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGEgeDogcy5leGlzdGluZygxLCAyLCAzKSkKKyAgICAgICAgcy5leGlzdGluZygxLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBzLm5vbmV4aXN0aW5nKQorCisgICAgICAgICMgY2hlY2sgd2UgY2FuIGZldGNoIHRoZSByYWlzZXIgYXR0cmlidXRlIGFuZCBpdCBoYXMgbm8gc3BlYworICAgICAgICBvYmogPSBzLnJhaXNlcgorICAgICAgICBvYmouZm9vLCBvYmouYmFyCisKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9jbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYSwgYj0zKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBtb2NrKDEpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSkKKworICAgICAgICBtb2NrKDQsIDUpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDQsIDUpCisKKworICAgIGRlZiB0ZXN0X2NsYXNzX3dpdGhfbm9faW5pdChzZWxmKToKKyAgICAgICAgIyB0aGlzIHVzZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uCisgICAgICAgICMgZHVlIHRvIHRyeWluZyB0byBnZXQgYSBzaWduYXR1cmUgZnJvbSBvYmplY3QuX19pbml0X18KKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhGb28pCisKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9jYWxsYWJsZShzZWxmKToKKyAgICAgICAgY2xhc3MgQ2FsbGFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoQ2FsbGFibGUpCisgICAgICAgIG1vY2soKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLCAnYScpCisKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSkKKyAgICAgICAgaW5zdGFuY2UoYT0nYScpCisgICAgICAgIGluc3RhbmNlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGE9J2EnKQorICAgICAgICBpbnN0YW5jZSgnYScpCisgICAgICAgIGluc3RhbmNlLmFzc2VydF9jYWxsZWRfd2l0aCgnYScpCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhDYWxsYWJsZSgpKQorICAgICAgICBtb2NrKGE9J2EnKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGE9J2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgIG1vY2soJ2EnKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgnYScpCisKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ub25jYWxsYWJsZShzZWxmKToKKyAgICAgICAgY2xhc3MgTm9uQ2FsbGFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhOb25DYWxsYWJsZSkKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlLCAnYScpCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhOb25DYWxsYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaywgJ2EnKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfbm9uZShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBiYXIgPSBOb25lCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIG5vbmUgPSBtb2NrLmJhcgorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2Uobm9uZSwgdHlwZShOb25lKSkKKworICAgICAgICBub25lLmZvbygpCisgICAgICAgIG5vbmUuZm9vLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfZnVuY3Rpb25zX3dpdGhfc2VsZl9pbl9vZGRfcGxhY2Uoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIGYoYSwgc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGEgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBhLmYoc2VsZj0xMCkKKyAgICAgICAgYS5mLmFzc2VydF9jYWxsZWRfd2l0aChzZWxmPTEwKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19wcm9wZXJ0eShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDMKKworICAgICAgICBmb28gPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBtb2NrX3Byb3BlcnR5ID0gZm9vLmZvbworCisgICAgICAgICMgbm8gc3BlYyBvbiBwcm9wZXJ0aWVzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2tfcHJvcGVydHksIE1hZ2ljTW9jaykpCisgICAgICAgIG1vY2tfcHJvcGVydHkoMSwgMiwgMykKKyAgICAgICAgbW9ja19wcm9wZXJ0eS5hYmMoNCwgNSwgNikKKyAgICAgICAgbW9ja19wcm9wZXJ0eS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgICAgICBtb2NrX3Byb3BlcnR5LmFiYy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCg0LCA1LCA2KQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19zbG90cyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSBbJ2EnXQorCisgICAgICAgIGZvbyA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIG1vY2tfc2xvdCA9IGZvby5hCisKKyAgICAgICAgIyBubyBzcGVjIG9uIHNsb3RzCisgICAgICAgIG1vY2tfc2xvdCgxLCAyLCAzKQorICAgICAgICBtb2NrX3Nsb3QuYWJjKDQsIDUsIDYpCisgICAgICAgIG1vY2tfc2xvdC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgICAgICBtb2NrX3Nsb3QuYWJjLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDQsIDUsIDYpCisKKworY2xhc3MgVGVzdENhbGxMaXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FyZ3NfbGlzdF9jb250YWluc19jYWxsX2xpc3Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suY2FsbF9hcmdzX2xpc3QsIF9DYWxsTGlzdCkKKworICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgIG1vY2soYT0zKQorICAgICAgICBtb2NrKDMsIDQpCisgICAgICAgIG1vY2soYj02KQorCisgICAgICAgIGZvciBrYWxsIGluIGNhbGwoMSwgMiksIGNhbGwoYT0zKSwgY2FsbCgzLCA0KSwgY2FsbChiPTYpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGthbGwgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKworICAgICAgICBjYWxscyA9IFtjYWxsKGE9MyksIGNhbGwoMywgNCldCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxscyBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBjYWxscyA9IFtjYWxsKDEsIDIpLCBjYWxsKGE9MyldCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxscyBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBjYWxscyA9IFtjYWxsKDMsIDQpLCBjYWxsKGI9NildCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxscyBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBjYWxscyA9IFtjYWxsKDMsIDQpXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbHMgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNhbGwoJ2Zpc2gnKSBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFtjYWxsKCdmaXNoJyldIGluIG1vY2suY2FsbF9hcmdzX2xpc3QpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfbGlzdF9zdHIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrLmZvbyhhPTMpCisgICAgICAgIG1vY2suZm9vLmJhcigpLmJheignZmlzaCcsIGNhdD0nZG9nJykKKworICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgICAgICJbY2FsbCgxLCAyKSxcbiIKKyAgICAgICAgICAgICIgY2FsbC5mb28oYT0zKSxcbiIKKyAgICAgICAgICAgICIgY2FsbC5mb28uYmFyKCksXG4iCisgICAgICAgICAgICAiIGNhbGwuZm9vLmJhcigpLmJheignZmlzaCcsIGNhdD0nZG9nJyldIgorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vY2subW9ja19jYWxscyksIGV4cGVjdGVkKQorCisKKyAgICBkZWYgdGVzdF9wcm9wZXJ0eW1vY2soc2VsZik6CisgICAgICAgIHAgPSBwYXRjaCgnJXMuU29tZUNsYXNzLm9uZScgJSBfX25hbWVfXywgbmV3X2NhbGxhYmxlPVByb3BlcnR5TW9jaykKKyAgICAgICAgbW9jayA9IHAuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBTb21lQ2xhc3Mub25lCisgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICAgICAgcyA9IFNvbWVDbGFzcygpCisgICAgICAgICAgICBzLm9uZQorICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtjYWxsKCksIGNhbGwoKV0pCisKKyAgICAgICAgICAgIHMub25lID0gMworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtjYWxsKCksIGNhbGwoKSwgY2FsbCgzKV0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9wcm9wZXJ0eW1vY2tfcmV0dXJudmFsdWUoc2VsZik6CisgICAgICAgIG0gPSBNYWdpY01vY2soKQorICAgICAgICBwID0gUHJvcGVydHlNb2NrKCkKKyAgICAgICAgdHlwZShtKS5mb28gPSBwCisKKyAgICAgICAgcmV0dXJuZWQgPSBtLmZvbworICAgICAgICBwLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJldHVybmVkLCBNYWdpY01vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShyZXR1cm5lZCwgUHJvcGVydHlNb2NrKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmNmMDg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQpAQCAtMCwwICsxLDQwMyBAQAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrLCBNYWdpY01vY2ssIF9tYWdpY3MKKworCisKK2NsYXNzIFRlc3RNb2NraW5nTWFnaWNNZXRob2RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2RlbGV0aW5nX21hZ2ljX21ldGhvZHMoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX2dldGl0ZW1fXycpKQorCisgICAgICAgIG1vY2suX19nZXRpdGVtX18gPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9jaywgJ19fZ2V0aXRlbV9fJykpCisKKyAgICAgICAgZGVsIG1vY2suX19nZXRpdGVtX18KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX2dldGl0ZW1fXycpKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY21vY2tfZGVsKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgIyBiZWZvcmUgdXNpbmcgZ2V0aXRlbQorICAgICAgICBkZWwgbW9jay5fX2dldGl0ZW1fXworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgICMgdGhpcyB0aW1lIHVzZSBpdCBmaXJzdAorICAgICAgICBtb2NrWydmb28nXQorICAgICAgICBkZWwgbW9jay5fX2dldGl0ZW1fXworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZF93cmFwcGluZyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBkZWYgZihzZWxmLCBuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLCAnZmlzaCcKKworICAgICAgICBtb2NrLl9fZ2V0aXRlbV9fID0gZgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suX19nZXRpdGVtX18gaXMgZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrWydmb28nXSwgKG1vY2ssICdmaXNoJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fX2dldGl0ZW1fXygnZm9vJyksIChtb2NrLCAnZmlzaCcpKQorCisgICAgICAgIG1vY2suX19nZXRpdGVtX18gPSBtb2NrCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLl9fZ2V0aXRlbV9fIGlzIG1vY2spCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZHNfaXNvbGF0ZWRfYmV0d2Vlbl9tb2NrcyhzZWxmKToKKyAgICAgICAgbW9jazEgPSBNb2NrKCkKKyAgICAgICAgbW9jazIgPSBNb2NrKCkKKworICAgICAgICBtb2NrMS5fX2l0ZXJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jazEpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGxpc3QobW9jazIpKQorCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb2NrKSwgIjxNb2NrIGlkPSclcyc+IiAlIGlkKG1vY2spKQorICAgICAgICBtb2NrLl9fcmVwcl9fID0gbGFtYmRhIHM6ICdmb28nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb2NrKSwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb2NrKSwgb2JqZWN0Ll9fc3RyX18obW9jaykpCisgICAgICAgIG1vY2suX19zdHJfXyA9IGxhbWJkYSBzOiAnZm9vJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb2NrKSwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X2RpY3RfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBtb2NrWydmb28nXSkKKyAgICAgICAgZGVmIF9kZWwoKToKKyAgICAgICAgICAgIGRlbCBtb2NrWydmb28nXQorICAgICAgICBkZWYgX3NldCgpOgorICAgICAgICAgICAgbW9ja1snZm9vJ10gPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX2RlbCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfc2V0KQorCisgICAgICAgIF9kaWN0ID0ge30KKyAgICAgICAgZGVmIGdldGl0ZW0ocywgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gX2RpY3RbbmFtZV0KKyAgICAgICAgZGVmIHNldGl0ZW0ocywgbmFtZSwgdmFsdWUpOgorICAgICAgICAgICAgX2RpY3RbbmFtZV0gPSB2YWx1ZQorICAgICAgICBkZWYgZGVsaXRlbShzLCBuYW1lKToKKyAgICAgICAgICAgIGRlbCBfZGljdFtuYW1lXQorCisgICAgICAgIG1vY2suX19zZXRpdGVtX18gPSBzZXRpdGVtCisgICAgICAgIG1vY2suX19nZXRpdGVtX18gPSBnZXRpdGVtCisgICAgICAgIG1vY2suX19kZWxpdGVtX18gPSBkZWxpdGVtCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisgICAgICAgIG1vY2tbJ2ZvbyddID0gJ2JhcicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZGljdCwgeydmb28nOiAnYmFyJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9ja1snZm9vJ10sICdiYXInKQorICAgICAgICBkZWwgbW9ja1snZm9vJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZGljdCwge30pCisKKworICAgIGRlZiB0ZXN0X251bWVyaWMoc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0gbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnZhbHVlID0gMAorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBtb2NrICsgMykKKworICAgICAgICBkZWYgYWRkKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgIG1vY2sudmFsdWUgKz0gb3RoZXIKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIG1vY2suX19hZGRfXyA9IGFkZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgKyAzLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sudmFsdWUsIDMpCisKKyAgICAgICAgZGVsIG1vY2suX19hZGRfXworICAgICAgICBkZWYgaWFkZChtb2NrKToKKyAgICAgICAgICAgIG1vY2sgKz0gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlhZGQsIG1vY2spCisgICAgICAgIG1vY2suX19pYWRkX18gPSBhZGQKKyAgICAgICAgbW9jayArPSA2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaywgb3JpZ2luYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay52YWx1ZSwgOSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogMyArIG1vY2spCisgICAgICAgIG1vY2suX19yYWRkX18gPSBhZGQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3ICsgbW9jaywgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnZhbHVlLCAxNikKKworCisgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICAjIHRlc3QgZGVsZWdhdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobW9jayksIE1vY2suX19oYXNoX18obW9jaykpCisKKyAgICAgICAgZGVmIF9oYXNoKHMpOgorICAgICAgICAgICAgcmV0dXJuIDMKKyAgICAgICAgbW9jay5fX2hhc2hfXyA9IF9oYXNoCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtb2NrKSwgMykKKworCisgICAgZGVmIHRlc3Rfbm9uemVybyhzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbChtKSkKKworICAgICAgICBtLl9fYm9vbF9fID0gbGFtYmRhIHM6IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChtKSkKKworCisgICAgZGVmIHRlc3RfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBkZWYgY29tcChzLCBvKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIG1vY2suX19sdF9fID0gbW9jay5fX2d0X18gPSBtb2NrLl9fbGVfXyA9IG1vY2suX19nZV9fID0gY29tcAorICAgICAgICBzZWxmLiBhc3NlcnRUcnVlKG1vY2sgPCAzKQorICAgICAgICBzZWxmLiBhc3NlcnRUcnVlKG1vY2sgPiAzKQorICAgICAgICBzZWxmLiBhc3NlcnRUcnVlKG1vY2sgPD0gMykKKyAgICAgICAgc2VsZi4gYXNzZXJ0VHJ1ZShtb2NrID49IDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpIDwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBvYmplY3QoKSA8IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPCBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpID4gb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBvYmplY3QoKSA+IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPiBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpIDw9IG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogb2JqZWN0KCkgPD0gTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA8PSBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpID49IG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogb2JqZWN0KCkgPj0gTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA+PSBNYWdpY01vY2soKSkKKworCisgICAgZGVmIHRlc3RfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgPT0gbW9jaywgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrID09IG1vY2ssIGJvb2wpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgIT0gbW9jaywgRmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jayAhPSBtb2NrLCBib29sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IG9iamVjdCgpLCBGYWxzZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayAhPSBvYmplY3QoKSwgVHJ1ZSkKKworICAgICAgICAgICAgZGVmIGVxKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPT0gMworICAgICAgICAgICAgbW9jay5fX2VxX18gPSBlcQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2sgPT0gMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jayA9PSA0KQorCisgICAgICAgICAgICBkZWYgbmUoc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA9PSAzCisgICAgICAgICAgICBtb2NrLl9fbmVfXyA9IG5lCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jayAhPSAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrICE9IDQpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2suX19lcV9fLnJldHVybl92YWx1ZSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgPT0gMywgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IDMsIFRydWUpCisKKyAgICAgICAgbW9jay5fX25lX18ucmV0dXJuX3ZhbHVlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgIT0gMywgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IDMsIEZhbHNlKQorCisKKyAgICBkZWYgdGVzdF9sZW5fY29udGFpbnNfaXRlcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGVuLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGl0ZXIsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiAnZm9vJyBpbiBtb2NrKQorCisgICAgICAgIG1vY2suX19sZW5fXyA9IGxhbWJkYSBzOiA2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2spLCA2KQorCisgICAgICAgIG1vY2suX19jb250YWluc19fID0gbGFtYmRhIHMsIG86IG8gPT0gMworICAgICAgICBzZWxmLmFzc2VydFRydWUoMyBpbiBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDYgaW4gbW9jaykKKworICAgICAgICBtb2NrLl9faXRlcl9fID0gbGFtYmRhIHM6IGl0ZXIoJ2Zvb2JhcmJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgbGlzdCgnZm9vYmFyYmF6JykpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljbW9jayhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisKKyAgICAgICAgbW9jay5fX2l0ZXJfXy5yZXR1cm5fdmFsdWUgPSBpdGVyKFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbMSwgMiwgM10pCisKKyAgICAgICAgZ2V0YXR0cihtb2NrLCAnX19ib29sX18nKS5yZXR1cm5fdmFsdWUgPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ19fbm9uemVyb19fJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChtb2NrKSkKKworICAgICAgICBmb3IgZW50cnkgaW4gX21hZ2ljczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vY2ssIGVudHJ5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX2ltYWdpbmVyeV9fJykpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21vY2tfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jayA9PSBvYmplY3QoKSwgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgIT0gb2JqZWN0KCksIGJvb2wpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IG9iamVjdCgpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IG9iamVjdCgpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgPT0gbW9jaywgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IG1vY2ssIEZhbHNlKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY21vY2tfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChtb2NrKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV4KG1vY2spLCAxaikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChtb2NrKSwgMS4wKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG9iamVjdCgpLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2NrKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG1vY2spLCBvYmplY3QuX19oYXNoX18obW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vY2spLCBvYmplY3QuX19zdHJfXyhtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJvb2wobW9jaykpCisKKyAgICAgICAgIyBpbiBQeXRob24gMyBvY3QgYW5kIGhleCB1c2UgX19pbmRleF9fCisgICAgICAgICMgc28gdGhlc2UgdGVzdHMgYXJlIGZvciBfX2luZGV4X18gaW4gcHkzaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9jdChtb2NrKSwgJzBvMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4KG1vY2spLCAnMHgxJykKKyAgICAgICAgIyBob3cgdG8gdGVzdCBfX3NpemVvZl9fID8KKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kc19hbmRfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgSXRlcmFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX2l0ZXJfXykKKworICAgICAgICBtb2NrLl9faXRlcl9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisKKyAgICAgICAgY2xhc3MgTm9uSXRlcmFibGUob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1Ob25JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX2l0ZXJfXykKKworICAgICAgICBkZWYgc2V0X2ludCgpOgorICAgICAgICAgICAgbW9jay5fX2ludF9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRfaW50KQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soc3BlYz1JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldF9pbnQpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZHNfYW5kX3NwZWNfc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBJdGVyYWJsZShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX2l0ZXJfXykKKworICAgICAgICBtb2NrLl9faXRlcl9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisKKyAgICAgICAgY2xhc3MgTm9uSXRlcmFibGUob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9Tm9uSXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IG1vY2suX19pdGVyX18pCisKKyAgICAgICAgZGVmIHNldF9pbnQoKToKKyAgICAgICAgICAgIG1vY2suX19pbnRfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2ludCkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKHNwZWNfc2V0PUl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2ludCkKKworCisgICAgZGVmIHRlc3Rfc2V0dGluZ191bnN1cHBvcnRlZF9tYWdpY19tZXRob2Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBkZWYgc2V0X3NldGF0dHIoKToKKyAgICAgICAgICAgIG1vY2suX19zZXRhdHRyX18gPSBsYW1iZGEgc2VsZiwgbmFtZTogTm9uZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2V0IHVuc3VwcG9ydGVkIG1hZ2ljIG1ldGhvZCAnX19zZXRhdHRyX18nLiIsCisgICAgICAgICAgICBzZXRfc2V0YXR0cgorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfYW5kX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIGF0dHIgPSBtb2NrLmZvbworICAgICAgICBkZWYgX2dldF90eXBlKG9iaik6CisgICAgICAgICAgICAjIHRoZSB0eXBlIG9mIGV2ZXJ5IG1vY2sgKG9yIG1hZ2ljbW9jaykgaXMgYSBjdXN0b20gc3ViY2xhc3MKKyAgICAgICAgICAgICMgc28gdGhlIHJlYWwgdHlwZSBpcyB0aGUgc2Vjb25kIGluIHRoZSBtcm8KKyAgICAgICAgICAgIHJldHVybiB0eXBlKG9iaikuX19tcm9fX1sxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9nZXRfdHlwZShhdHRyKSwgTWFnaWNNb2NrKQorCisgICAgICAgIHJldHVybmVkID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2dldF90eXBlKHJldHVybmVkKSwgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzX2FyZV9tYWdpY19tb2NrcyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLl9fZ2V0aXRlbV9fLCBNYWdpY01vY2spCisKKyAgICAgICAgbW9ja1sxXVsyXS5fX2dldGl0ZW1fXy5yZXR1cm5fdmFsdWUgPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9ja1sxXVsyXVszXSwgMykKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kX3Jlc2V0X21vY2soc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBzdHIobW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2suX19zdHJfXy5jYWxsZWQpCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5fX3N0cl9fLmNhbGxlZCkKKworCisgICAgZGVmIHRlc3RfZGlyKHNlbGYpOgorICAgICAgICAjIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgZm9yIG1vY2sgaW4gTW9jaygpLCBNYWdpY01vY2soKToKKyAgICAgICAgICAgIGRlZiBfZGlyKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBbJ2ZvbyddCisgICAgICAgICAgICBtb2NrLl9fZGlyX18gPSBfZGlyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihtb2NrKSwgWydmb28nXSkKKworCisgICAgQHVuaXR0ZXN0LnNraXBJZignUHlQeScgaW4gc3lzLnZlcnNpb24sICJUaGlzIGZhaWxzIGRpZmZlcmVudGx5IG9uIHB5cHkiKQorICAgIGRlZiB0ZXN0X2JvdW5kX21ldGhvZHMoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKworICAgICAgICAjIFhYWFggc2hvdWxkIHRoaXMgYmUgYW4gZXhwZWN0ZWQgZmFpbHVyZSBpbnN0ZWFkPworCisgICAgICAgICMgdGhpcyBzZWVtcyBsaWtlIGl0IHNob3VsZCB3b3JrLCBidXQgaXMgaGFyZCB0byBkbyB3aXRob3V0IGludHJvZHVjaW5nCisgICAgICAgICMgb3RoZXIgYXBpIGluY29uc2lzdGVuY2llcy4gRmFpbHVyZSBtZXNzYWdlIGNvdWxkIGJlIGJldHRlciB0aG91Z2guCisgICAgICAgIG0uX19pdGVyX18gPSBbM10uX19pdGVyX18KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpdGVyLCBtKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RfdHlwZShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKE1hZ2ljTW9jayk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9vID0gRm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZvby5fX2ludF9fLCBGb28pCisKKworICAgIGRlZiB0ZXN0X2Rlc2NyaXB0b3JfZnJvbV9jbGFzcyhzZWxmKToKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIHR5cGUobSkuX19zdHJfXy5yZXR1cm5fdmFsdWUgPSAnZm9vJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtKSwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X2l0ZXJhYmxlX2FzX2l0ZXJfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBtID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbS5fX2l0ZXJfXy5yZXR1cm5fdmFsdWUgPSBbMSwgMiwgM10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG0pLCBbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgWzEsIDIsIDNdKQorCisgICAgICAgIG0uX19pdGVyX18ucmV0dXJuX3ZhbHVlID0gaXRlcihbNCwgNSwgNl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgWzQsIDUsIDZdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobSksIFtdKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0ZmQxYTEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQpAQCAtMCwwICsxLDEyNjggQEAKK2ltcG9ydCBjb3B5CitpbXBvcnQgc3lzCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IGlzX2luc3RhbmNlCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0ICgKKyAgICBjYWxsLCBERUZBVUxULCBwYXRjaCwgc2VudGluZWwsCisgICAgTWFnaWNNb2NrLCBNb2NrLCBOb25DYWxsYWJsZU1vY2ssCisgICAgTm9uQ2FsbGFibGVNYWdpY01vY2ssIF9DYWxsTGlzdCwKKyAgICBjcmVhdGVfYXV0b3NwZWMKKykKKworCitjbGFzcyBJdGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRoaW5nID0gaXRlcihbJ3RoaXMnLCAnaXMnLCAnYW4nLCAnaXRlciddKQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIG5leHQoc2VsZik6CisgICAgICAgIHJldHVybiBuZXh0KHNlbGYudGhpbmcpCisKKyAgICBfX25leHRfXyA9IG5leHQKKworCisKK2NsYXNzIE1vY2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgIyBpZiBfX2FsbF9fIGlzIGJhZGx5IGRlZmluZWQgdGhlbiBpbXBvcnQgKiB3aWxsIHJhaXNlIGFuIGVycm9yCisgICAgICAgICMgV2UgaGF2ZSB0byBleGVjIGl0IGJlY2F1c2UgeW91IGNhbid0IGltcG9ydCAqIGluc2lkZSBhIG1ldGhvZAorICAgICAgICAjIGluIFB5dGhvbiAzCisgICAgICAgIGV4ZWMoImZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKiIpCisKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLmNhbGxlZCwgImNhbGxlZCBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfY291bnQgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtb2NrLnJldHVybl92YWx1ZSwgTW9jayksCisgICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuX3ZhbHVlIG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfYXJncyBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzX2xpc3Qgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kX2NhbGxzIG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorCisgICAgICAgICMgQ2FuJ3QgdXNlIGhhc2F0dHIgZm9yIHRoaXMgdGVzdCBhcyBpdCBhbHdheXMgcmV0dXJucyBUcnVlIG9uIGEgbW9jaworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdfaXRlbXMnIGluIG1vY2suX19kaWN0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQgbW9jayBzaG91bGQgbm90IGhhdmUgJ19pdGVtcycgYXR0cmlidXRlIikKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtb2NrLl9tb2NrX3BhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmVudCBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9jay5fbW9ja19tZXRob2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kcyBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9tb2NrX2NoaWxkcmVuLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRyZW4gbm90IGluaXRpYWxpc2VkIGluY29ycmVjdGx5IikKKworCisgICAgZGVmIHRlc3RfcmV0dXJuX3ZhbHVlX2luX2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9jay5yZXR1cm5fdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm4gdmFsdWUgaW4gY29uc3RydWN0b3Igbm90IGhvbm91cmVkIikKKworCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2sobmFtZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZm9vJywgcmVwcihtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiJyVzJyIgJSBpZChtb2NrKSwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrcyA9IFsoTW9jaygpLCAnbW9jaycpLCAoTW9jayhuYW1lPSdiYXInKSwgJ2JhcicpXQorICAgICAgICBmb3IgbW9jaywgbmFtZSBpbiBtb2NrczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzLmJhcicgJSBuYW1lLCByZXByKG1vY2suYmFyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzLmZvbygpJyAlIG5hbWUsIHJlcHIobW9jay5mb28oKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCclcy5mb28oKS5iaW5nJyAlIG5hbWUsIHJlcHIobW9jay5mb28oKS5iaW5nKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzKCknICUgbmFtZSwgcmVwcihtb2NrKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignJXMoKSgpJyAlIG5hbWUsIHJlcHIobW9jaygpKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignJXMoKSgpLmZvby5iYXIuYmF6KCkuYmluZycgJSBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG1vY2soKSgpLmZvby5iYXIuYmF6KCkuYmluZykpCisKKworICAgIGRlZiB0ZXN0X3JlcHJfd2l0aF9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBYKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKQorICAgICAgICBzZWxmLmFzc2VydEluKCIgc3BlYz0nWCcgIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVgoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWM9J1gnICIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9WCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWNfc2V0PSdYJyAiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWNfc2V0PSdYJyAiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCwgbmFtZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWM9J1gnICIsIHJlcHIobW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdmb28nICIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2sobmFtZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigic3BlYyIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJzcGVjIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInNwZWMiLCByZXByKG1vY2spKQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorCisgICAgICAgIGRlZiBlZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKCdrYWJsb29pZScpCisKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IGVmZmVjdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvciwgbW9jaywgMSwgMiwgZmlzaD0zKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCBmaXNoPTMpCisKKyAgICAgICAgcmVzdWx0cyA9IFsxLCAyLCAzXQorICAgICAgICBkZWYgZWZmZWN0KCk6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0cy5wb3AoKQorICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gZWZmZWN0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFszLCAyLCAxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGUgZWZmZWN0IG5vdCB1c2VkIGNvcnJlY3RseSIpCisKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9c2VudGluZWwuU2lkZUVmZmVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNpZGVfZWZmZWN0LCBzZW50aW5lbC5TaWRlRWZmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAic2lkZSBlZmZlY3QgaW4gY29uc3RydWN0b3Igbm90IHVzZWQiKQorCisgICAgICAgIGRlZiBzaWRlX2VmZmVjdCgpOgorICAgICAgICAgICAgcmV0dXJuIERFRkFVTFQKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9c2lkZV9lZmZlY3QsIHJldHVybl92YWx1ZT1zZW50aW5lbC5SRVRVUk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCBzZW50aW5lbC5SRVRVUk4pCisKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKCdqYXZhJyBpbiBzeXMucGxhdGZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIHRlc3Qgb25seSBhcHBsaWVzIHRvIEp5dGhvbicpCisgICAgZGVmIHRlc3RfamF2YV9leGNlcHRpb25fc2lkZV9lZmZlY3Qoc2VsZik6CisgICAgICAgIGltcG9ydCBqYXZhCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PWphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uKCJCb29tISIpKQorCisgICAgICAgICMgY2FuJ3QgdXNlIGFzc2VydFJhaXNlcyB3aXRoIGphdmEgZXhjZXB0aW9ucworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2NrKDEsIDIsIGZpc2g9MykKKyAgICAgICAgZXhjZXB0IGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdqYXZhIGV4Y2VwdGlvbiBub3QgcmFpc2VkJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSwyLCBmaXNoPTMpCisKKworICAgIGRlZiB0ZXN0X3Jlc2V0X21vY2soc2VsZik6CisgICAgICAgIHBhcmVudCA9IE1vY2soKQorICAgICAgICBzcGVjID0gWyJzb21ldGhpbmciXQorICAgICAgICBtb2NrID0gTW9jayhuYW1lPSJjaGlsZCIsIHBhcmVudD1wYXJlbnQsIHNwZWM9c3BlYykKKyAgICAgICAgbW9jayhzZW50aW5lbC5Tb21ldGhpbmcsIHNvbWV0aGluZz1zZW50aW5lbC5Tb21ldGhpbmdFbHNlKQorICAgICAgICBzb21ldGhpbmcgPSBtb2NrLnNvbWV0aGluZworICAgICAgICBtb2NrLnNvbWV0aGluZygpCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSBzZW50aW5lbC5TaWRlRWZmZWN0CisgICAgICAgIHJldHVybl92YWx1ZSA9IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgICAgIHJldHVybl92YWx1ZSgpCisKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX21vY2tfbmFtZSwgImNoaWxkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSBpbmNvcnJlY3RseSByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fbW9ja19wYXJlbnQsIHBhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGFyZW50IGluY29ycmVjdGx5IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9tb2NrX21ldGhvZHMsIHNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZHMgaW5jb3JyZWN0bHkgcmVzZXQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5jYWxsZWQsICJjYWxsZWQgbm90IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDAsICJjYWxsX2NvdW50IG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsIE5vbmUsICJjYWxsX2FyZ3Mgbm90IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbXSwgImNhbGxfYXJnc19saXN0IG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZF9jYWxscyBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5OiAlciAhPSAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgKG1vY2subWV0aG9kX2NhbGxzLCBbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbXSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc2lkZV9lZmZlY3QsIHNlbnRpbmVsLlNpZGVFZmZlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzaWRlX2VmZmVjdCBpbmNvcnJlY3RseSByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5yZXR1cm5fdmFsdWUsIHJldHVybl92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybl92YWx1ZSBpbmNvcnJlY3RseSByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmV0dXJuX3ZhbHVlLmNhbGxlZCwgInJldHVybiB2YWx1ZSBtb2NrIG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fbW9ja19jaGlsZHJlbiwgeydzb21ldGhpbmcnOiBzb21ldGhpbmd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRyZW4gcmVzZXQgaW5jb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc29tZXRoaW5nLCBzb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZHJlbiBpbmNvcnJlY3RseSBjbGVhcmVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLnNvbWV0aGluZy5jYWxsZWQsICJjaGlsZCBub3QgcmVzZXQiKQorCisKKyAgICBkZWYgdGVzdF9yZXNldF9tb2NrX3JlY3Vyc2lvbihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IG1vY2sKKworICAgICAgICAjIHVzZWQgdG8gY2F1c2UgcmVjdXJzaW9uCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisKKworICAgIGRlZiB0ZXN0X2NhbGwoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG1vY2sucmV0dXJuX3ZhbHVlLCBNb2NrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJEZWZhdWx0IHJldHVybl92YWx1ZSBzaG91bGQgYmUgYSBNb2NrIikKKworICAgICAgICByZXN1bHQgPSBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGlmZmVyZW50IHJlc3VsdCBmcm9tIGNvbnNlY3V0aXZlIGNhbGxzIikKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKworICAgICAgICByZXRfdmFsID0gbW9jayhzZW50aW5lbC5BcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLmNhbGxlZCwgImNhbGxlZCBub3Qgc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDEsICJjYWxsX2NvdW50IGluY29yZWVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsICgoc2VudGluZWwuQXJnLCksIHt9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzIG5vdCBzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFsoKHNlbnRpbmVsLkFyZywpLCB7fSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsX2FyZ3NfbGlzdCBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKworICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IHNlbnRpbmVsLlJldHVyblZhbHVlCisgICAgICAgIHJldF92YWwgPSBtb2NrKHNlbnRpbmVsLkFyZywga2V5PXNlbnRpbmVsLktleUFyZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXRfdmFsLCBzZW50aW5lbC5SZXR1cm5WYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb3JyZWN0IHJldHVybiB2YWx1ZSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDIsICJjYWxsX2NvdW50IGluY29ycmVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwgeydrZXknOiBzZW50aW5lbC5LZXlBcmd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzIG5vdCBzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFsKKyAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksIHt9KSwKKyAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksIHsna2V5Jzogc2VudGluZWwuS2V5QXJnfSkKKyAgICAgICAgXSwKKyAgICAgICAgICAgICJjYWxsX2FyZ3NfbGlzdCBub3Qgc2V0IikKKworCisgICAgZGVmIHRlc3RfY2FsbF9hcmdzX2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygpCisgICAgICAgIG1vY2soc2VudGluZWwuQXJnKQorICAgICAgICBtb2NrKGt3PXNlbnRpbmVsLkt3YXJnKQorICAgICAgICBtb2NrKHNlbnRpbmVsLkFyZywga3c9c2VudGluZWwuS3dhcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3NfbGlzdCwgWworICAgICAgICAgICAgKCksCisgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCksCisgICAgICAgICAgICAoeyJrdyI6IHNlbnRpbmVsLkt3YXJnfSwpLAorICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwgeyJrdyI6IHNlbnRpbmVsLkt3YXJnfSkKKyAgICAgICAgXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCB7Imt3Ijogc2VudGluZWwuS3dhcmd9KSkKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF93aXRoKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soKQorCisgICAgICAgICMgV2lsbCByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgZmFpbHMKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgsIDEpCisKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKQorCisgICAgICAgIG1vY2soMSwgMiwgMywgYT0nZmlzaCcsIGI9J25vdGhpbmcnKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzLCBhPSdmaXNoJywgYj0nbm90aGluZycpCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfb25jZV93aXRoKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soKQorCisgICAgICAgICMgV2lsbCByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgZmFpbHMKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKQorCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKQorCisgICAgICAgIG1vY2soJ2ZvbycsICdiYXInLCBiYXo9MikKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgJ2JhcicsIGJhej0yKQorCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIG1vY2soJ2ZvbycsICdiYXInLCBiYXo9MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgIGxhbWJkYTogbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnYm9iJywgJ2JhcicsIGJhej0yKQorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9hY2Nlc3NfcmV0dXJuc19tb2NrcyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzb21ldGhpbmcgPSBtb2NrLnNvbWV0aGluZworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2Uoc29tZXRoaW5nLCBNb2NrKSwgImF0dHJpYnV0ZSBpc24ndCBhIG1vY2siKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc29tZXRoaW5nLCBzb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcmVudCBhdHRyaWJ1dGVzIHJldHVybmVkIGZvciBzYW1lIG5hbWUiKQorCisgICAgICAgICMgVXNhZ2UgZXhhbXBsZQorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nLnJldHVybl92YWx1ZSA9IDMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc29tZXRoaW5nKCksIDMsICJtZXRob2QgcmV0dXJuZWQgd3JvbmcgdmFsdWUiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jay5zb21ldGhpbmcuY2FsbGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZCBkaWRuJ3QgcmVjb3JkIGJlaW5nIGNhbGxlZCIpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfaGF2ZV9uYW1lX2FuZF9wYXJlbnRfc2V0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNvbWV0aGluZyA9IG1vY2suc29tZXRoaW5nCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcuX21vY2tfbmFtZSwgInNvbWV0aGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZSBuYW1lIG5vdCBzZXQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcuX21vY2tfcGFyZW50LCBtb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGUgcGFyZW50IG5vdCBzZXQgY29ycmVjdGx5IikKKworCisgICAgZGVmIHRlc3RfbWV0aG9kX2NhbGxzX3JlY29yZGVkKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nKDMsIGZpc2g9Tm9uZSkKKyAgICAgICAgbW9jay5zb21ldGhpbmdfZWxzZS5zb21ldGhpbmcoNiwgY2FrZT1zZW50aW5lbC5DYWtlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5zb21ldGhpbmdfZWxzZS5tZXRob2RfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsoInNvbWV0aGluZyIsICg2LCksIHsnY2FrZSc6IHNlbnRpbmVsLkNha2V9KV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2QgY2FsbHMgbm90IHJlY29yZGVkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsKKyAgICAgICAgICAgICgic29tZXRoaW5nIiwgKDMsKSwgeydmaXNoJzogTm9uZX0pLAorICAgICAgICAgICAgKCJzb21ldGhpbmdfZWxzZS5zb21ldGhpbmciLCAoNiwpLCB7J2Nha2UnOiBzZW50aW5lbC5DYWtlfSkKKyAgICAgICAgXSwKKyAgICAgICAgICAgICJtZXRob2QgY2FsbHMgbm90IHJlY29yZGVkIGNvcnJlY3RseSIpCisKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jYWxsc19jb21wYXJlX2Vhc2lseShzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsICgpLCB7fSldKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcoJ2RpZmZlcmVudCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsICgnZGlmZmVyZW50JywpKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygnc29tZXRoaW5nJywgKCdkaWZmZXJlbnQnLCksIHt9KV0pCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZyh4PTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsIHsneCc6IDF9KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsICgpLCB7J3gnOiAxfSldKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcoJ2RpZmZlcmVudCcsIHNvbWU9J21vcmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbCisgICAgICAgICAgICAoJ3NvbWV0aGluZycsICgnZGlmZmVyZW50JywpLCB7J3NvbWUnOiAnbW9yZSd9KQorICAgICAgICBdKQorCisKKyAgICBkZWYgdGVzdF9vbmx5X2FsbG93ZWRfbWV0aG9kc19leGlzdChzZWxmKToKKyAgICAgICAgZm9yIHNwZWMgaW4gWydzb21ldGhpbmcnXSwgKCdzb21ldGhpbmcnLCk6CisgICAgICAgICAgICBmb3IgYXJnIGluICdzcGVjJywgJ3NwZWNfc2V0JzoKKyAgICAgICAgICAgICAgICBtb2NrID0gTW9jaygqKnthcmc6IHNwZWN9KQorCisgICAgICAgICAgICAgICAgIyB0aGlzIHNob3VsZCBiZSBhbGxvd2VkCisgICAgICAgICAgICAgICAgbW9jay5zb21ldGhpbmcKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ3NvbWV0aGluZ19lbHNlJyIsCisgICAgICAgICAgICAgICAgICAgIGdldGF0dHIsIG1vY2ssICdzb21ldGhpbmdfZWxzZScKKyAgICAgICAgICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2Zyb21fc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICB4ID0gMworICAgICAgICAgICAgX19zb21ldGhpbmdfXyA9IE5vbmUKKyAgICAgICAgICAgIGRlZiB5KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKG1vY2spOgorICAgICAgICAgICAgIyBzaG91bGQgd29yaworICAgICAgICAgICAgbW9jay54CisgICAgICAgICAgICBtb2NrLnkKKyAgICAgICAgICAgIG1vY2suX19zb21ldGhpbmdfXworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAneiciLAorICAgICAgICAgICAgICAgIGdldGF0dHIsIG1vY2ssICd6JworICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnX19mb29iYXJfXyciLAorICAgICAgICAgICAgICAgIGdldGF0dHIsIG1vY2ssICdfX2Zvb2Jhcl9fJworICAgICAgICAgICAgKQorCisgICAgICAgIHRlc3RfYXR0cmlidXRlcyhNb2NrKHNwZWM9U29tZXRoaW5nKSkKKyAgICAgICAgdGVzdF9hdHRyaWJ1dGVzKE1vY2soc3BlYz1Tb21ldGhpbmcoKSkpCisKKworICAgIGRlZiB0ZXN0X3dyYXBzX2NhbGxzKHNlbGYpOgorICAgICAgICByZWFsID0gTW9jaygpCisKKyAgICAgICAgbW9jayA9IE1vY2sod3JhcHM9cmVhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksIHJlYWwoKSkKKworICAgICAgICByZWFsLnJlc2V0X21vY2soKQorCisgICAgICAgIG1vY2soMSwgMiwgZmlzaD0zKQorICAgICAgICByZWFsLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCBmaXNoPTMpCisKKworICAgIGRlZiB0ZXN0X3dyYXBzX2NhbGxfd2l0aF9ub25kZWZhdWx0X3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgcmVhbCA9IE1vY2soKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHdyYXBzPXJlYWwpCisgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gMworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlYWwuY2FsbGVkKQorCisKKyAgICBkZWYgdGVzdF93cmFwc19hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBjbGFzcyBSZWFsKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBNb2NrKCkKKworICAgICAgICByZWFsID0gUmVhbCgpCisKKyAgICAgICAgbW9jayA9IE1vY2sod3JhcHM9cmVhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmF0dHJpYnV0ZSgpLCByZWFsLmF0dHJpYnV0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBtb2NrLmZpc2gpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtb2NrLmF0dHJpYnV0ZSwgcmVhbC5hdHRyaWJ1dGUpCisgICAgICAgIHJlc3VsdCA9IG1vY2suYXR0cmlidXRlLmZyb2coMSwgMiwgZmlzaD0zKQorICAgICAgICBSZWFsLmF0dHJpYnV0ZS5mcm9nLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCBmaXNoPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBSZWFsLmF0dHJpYnV0ZS5mcm9nKCkpCisKKworICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbmFsX3NpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1BdHRyaWJ1dGVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIG1vY2spCisKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9QXR0cmlidXRlRXJyb3IoJ2ZvbycpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbW9jaykKKworCisgICAgZGVmIHRlc3RfYmFzZWV4Y2VwdGlvbmFsX3NpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1LZXlib2FyZEludGVycnVwdCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5Ym9hcmRJbnRlcnJ1cHQsIG1vY2spCisKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9S2V5Ym9hcmRJbnRlcnJ1cHQoJ2ZvbycpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlib2FyZEludGVycnVwdCwgbW9jaykKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF93aXRoX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBc3NlcnRpb25FcnJvciwgJ05vdCBjYWxsZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCkKKworCisgICAgZGVmIHRlc3RfX25hbWVfXyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBtb2NrLl9fbmFtZV9fKQorCisgICAgICAgIG1vY2suX19uYW1lX18gPSAnZm9vJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX19uYW1lX18sICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX2xpc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIFN1YihsaXN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1TdWIoWydmb28nXSkpCisKKyAgICAgICAgbW9jay5hcHBlbmQoMykKKyAgICAgICAgbW9jay5hcHBlbmQuYXNzZXJ0X2NhbGxlZF93aXRoKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnZm9vJykKKworCisgICAgZGVmIHRlc3Rfc3BlY19jbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9jaywgWCkpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2ssIFgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9jay5fX2NsYXNzX18sIFgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9jaygpLl9fY2xhc3NfXy5fX25hbWVfXywgJ01vY2snKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2ssIFgpKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9jaywgWCkpCisKKworICAgIGRlZiB0ZXN0X3NldHRpbmdfYXR0cmlidXRlX3dpdGhfc3BlY19zZXQoc2VsZik6CisgICAgICAgIGNsYXNzIFgob2JqZWN0KToKKyAgICAgICAgICAgIHkgPSAzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKQorICAgICAgICBtb2NrLnggPSAnZm9vJworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgpCisgICAgICAgIGRlZiBzZXRfYXR0cigpOgorICAgICAgICAgICAgbW9jay54ID0gJ2ZvbycKKworICAgICAgICBtb2NrLnkgPSAnZm9vJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2F0dHIpCisKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIGN1cnJlbnQgPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHJlY3Vyc2lvbmxpbWl0LCBjdXJyZW50KQorCisgICAgICAgICMgY2FuJ3QgdXNlIHN5cy5tYXhpbnQgYXMgdGhpcyBkb2Vzbid0IGV4aXN0IGluIFB5dGhvbiAzCisgICAgICAgIHN5cy5zZXRyZWN1cnNpb25saW1pdChpbnQoMTBlOCkpCisgICAgICAgICMgdGhpcyBzZWdmYXVsdHMgd2l0aG91dCB0aGUgZml4IGluIHBsYWNlCisgICAgICAgIGNvcHkuY29weShNb2NrKCkpCisKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzX3dpdGhfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgY2xhc3MgU3ViQ2xhc3MoTW9jayk6CisgICAgICAgICAgICBkZWYgX2dldChzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMworICAgICAgICAgICAgZGVmIF9zZXQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignc3RyYW5nZSBlcnJvcicpCisgICAgICAgICAgICBzb21lX2F0dHJpYnV0ZSA9IHByb3BlcnR5KF9nZXQsIF9zZXQpCisKKyAgICAgICAgcyA9IFN1YkNsYXNzKHNwZWNfc2V0PVN1YkNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc29tZV9hdHRyaWJ1dGUsIDMpCisKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHMuc29tZV9hdHRyaWJ1dGUgPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgdGVzdCkKKworICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcy5mb28gPSAnYmFyJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworCisgICAgZGVmIHRlc3Rfc2V0dGluZ19jYWxsKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX2NhbGwoYSkKKworICAgICAgICB0eXBlKG1vY2spLl9fY2FsbF9fID0gX19jYWxsX18KKyAgICAgICAgbW9jaygnb25lJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoJ29uZScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLCAnb25lJywgJ3R3bycpCisKKworICAgIGRlZiB0ZXN0X2RpcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBhdHRycyA9IHNldChkaXIobW9jaykpCisgICAgICAgIHR5cGVfYXR0cnMgPSBzZXQoW20gZm9yIG0gaW4gZGlyKE1vY2spIGlmIG5vdCBtLnN0YXJ0c3dpdGgoJ18nKV0pCisKKyAgICAgICAgIyBhbGwgcHVibGljIGF0dHJpYnV0ZXMgZnJvbSB0aGUgdHlwZSBhcmUgaW5jbHVkZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgdHlwZV9hdHRycyAtIGF0dHJzKQorCisgICAgICAgICMgY3JlYXRlcyB0aGVzZSBhdHRyaWJ1dGVzCisgICAgICAgIG1vY2suYSwgbW9jay5iCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2EnLCBkaXIobW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2InLCBkaXIobW9jaykpCisKKyAgICAgICAgIyBpbnN0YW5jZSBhdHRyaWJ1dGVzCisgICAgICAgIG1vY2suYyA9IG1vY2suZCA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYycsIGRpcihtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZCcsIGRpcihtb2NrKSkKKworICAgICAgICAjIG1hZ2ljIG1ldGhvZHMKKyAgICAgICAgbW9jay5fX2l0ZXJfXyA9IGxhbWJkYSBzOiBpdGVyKFtdKQorICAgICAgICBzZWxmLmFzc2VydEluKCdfX2l0ZXJfXycsIGRpcihtb2NrKSkKKworCisgICAgZGVmIHRlc3RfZGlyX2Zyb21fc3BlYyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz11bml0dGVzdC5UZXN0Q2FzZSkKKyAgICAgICAgdGVzdGNhc2VfYXR0cnMgPSBzZXQoZGlyKHVuaXR0ZXN0LlRlc3RDYXNlKSkKKyAgICAgICAgYXR0cnMgPSBzZXQoZGlyKG1vY2spKQorCisgICAgICAgICMgYWxsIGF0dHJpYnV0ZXMgZnJvbSB0aGUgc3BlYyBhcmUgaW5jbHVkZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgdGVzdGNhc2VfYXR0cnMgLSBhdHRycykKKworICAgICAgICAjIHNoYWRvdyBhIHN5cyBhdHRyaWJ1dGUKKyAgICAgICAgbW9jay52ZXJzaW9uID0gMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihtb2NrKS5jb3VudCgndmVyc2lvbicpLCAxKQorCisKKyAgICBkZWYgdGVzdF9maWx0ZXJfZGlyKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KG1vY2ssICdGSUxURVJfRElSJywgRmFsc2UpCisgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBhdHRycyA9IHNldChkaXIoTW9jaygpKSkKKyAgICAgICAgICAgIHR5cGVfYXR0cnMgPSBzZXQoZGlyKE1vY2spKQorCisgICAgICAgICAgICAjIEFMTCBhdHRyaWJ1dGVzIGZyb20gdGhlIHR5cGUgYXJlIGluY2x1ZGVkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCB0eXBlX2F0dHJzIC0gYXR0cnMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9jb25maWd1cmVfbW9jayhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soZm9vPSdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLCAnYmFyJykKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKGZvbz0nYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvbywgJ2JhcicpCisKKyAgICAgICAga3dhcmdzID0geydzaWRlX2VmZmVjdCc6IEtleUVycm9yLCAnZm9vLmJhci5yZXR1cm5fdmFsdWUnOiAzMywKKyAgICAgICAgICAgICAgICAgICdmb28nOiBNYWdpY01vY2soKX0KKyAgICAgICAgbW9jayA9IE1vY2soKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLmJhcigpLCAzMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suZm9vLCBNYWdpY01vY2spCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLmNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5iYXIoKSwgMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgYXNzZXJ0UmFpc2VzV2l0aE1zZyhzZWxmLCBleGNlcHRpb24sIG1lc3NhZ2UsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgbmVlZGVkIGJlY2F1c2UgYXNzZXJ0UmFpc2VzUmVnZXggZG9lc24ndCB3b3JrIGVhc2lseSB3aXRoIG5ld2xpbmVzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBpbnN0YW5jZSA9IHN5cy5leGNfaW5mbygpWzFdCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5zdGFuY2UsIGV4Y2VwdGlvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnRXhjZXB0aW9uICVyIG5vdCByYWlzZWQnICUgKGV4Y2VwdGlvbiwpKQorCisgICAgICAgIG1zZyA9IHN0cihpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIG1lc3NhZ2UpCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfd2l0aF9mYWlsdXJlX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1vY2sgPSBOb25DYWxsYWJsZU1vY2soKQorCisgICAgICAgIGV4cGVjdGVkID0gIm1vY2soMSwgJzInLCAzLCBiYXI9J2ZvbycpIgorICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5Ob3QgY2FsbGVkJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwgbWVzc2FnZSAlIChleHBlY3RlZCwpLAorICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgsIDEsICcyJywgMywgYmFyPSdmb28nCisgICAgICAgICkKKworICAgICAgICBtb2NrLmZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykKKworCisgICAgICAgIGFzc2VydGVycyA9IFsKKyAgICAgICAgICAgIG1vY2suZm9vLmFzc2VydF9jYWxsZWRfd2l0aCwgbW9jay5mb28uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgKKyAgICAgICAgXQorICAgICAgICBmb3IgbWV0aCBpbiBhc3NlcnRlcnM6CisgICAgICAgICAgICBhY3R1YWwgPSAiZm9vKDEsICcyJywgMywgZm9vPSdmb28nKSIKKyAgICAgICAgICAgIGV4cGVjdGVkID0gImZvbygxLCAnMicsIDMsIGJhcj0nZm9vJykiCisgICAgICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsIGFjdHVhbCksCisgICAgICAgICAgICAgICAgbWV0aCwgMSwgJzInLCAzLCBiYXI9J2ZvbycKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGp1c3Qga3dhcmdzCisgICAgICAgIGZvciBtZXRoIGluIGFzc2VydGVyczoKKyAgICAgICAgICAgIGFjdHVhbCA9ICJmb28oMSwgJzInLCAzLCBmb289J2ZvbycpIgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAiZm9vKGJhcj0nZm9vJykiCisgICAgICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsIGFjdHVhbCksCisgICAgICAgICAgICAgICAgbWV0aCwgYmFyPSdmb28nCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBqdXN0IGFyZ3MKKyAgICAgICAgZm9yIG1ldGggaW4gYXNzZXJ0ZXJzOgorICAgICAgICAgICAgYWN0dWFsID0gImZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykiCisgICAgICAgICAgICBleHBlY3RlZCA9ICJmb28oMSwgMiwgMykiCisgICAgICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsIGFjdHVhbCksCisgICAgICAgICAgICAgICAgbWV0aCwgMSwgMiwgMworICAgICAgICAgICAgKQorCisgICAgICAgICMgZW1wdHkKKyAgICAgICAgZm9yIG1ldGggaW4gYXNzZXJ0ZXJzOgorICAgICAgICAgICAgYWN0dWFsID0gImZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykiCisgICAgICAgICAgICBleHBlY3RlZCA9ICJmb28oKSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnRXhwZWN0ZWQgY2FsbDogJXNcbkFjdHVhbCBjYWxsOiAlcycKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzV2l0aE1zZygKKyAgICAgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwgbWVzc2FnZSAlIChleHBlY3RlZCwgYWN0dWFsKSwgbWV0aAorICAgICAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9tb2NrX2NhbGxzKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKworICAgICAgICAjIG5lZWQgdG8gZG8gdGhpcyBiZWNhdXNlIE1hZ2ljTW9jay5tb2NrX2NhbGxzIHVzZWQgdG8ganVzdCByZXR1cm4KKyAgICAgICAgIyBhIE1hZ2ljTW9jayB3aGljaCBhbHNvIHJldHVybmVkIGEgTWFnaWNNb2NrIHdoZW4gX19lcV9fIHdhcyBjYWxsZWQKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2NrLm1vY2tfY2FsbHMgPT0gW10sIFRydWUpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soKQorICAgICAgICBleHBlY3RlZCA9IFsoJycsICgpLCB7fSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKworICAgICAgICBtb2NrLmZvbygpCisgICAgICAgIGV4cGVjdGVkLmFwcGVuZChjYWxsLmZvbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisgICAgICAgICMgaW50ZXJtZWRpYXRlIG1vY2tfY2FsbHMgd29yayB0b28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5tb2NrX2NhbGxzLCBbKCcnLCAoKSwge30pXSkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygpLmZvbygxLCAyLCAzLCBhPTQsIGI9NSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJycsICgpLCB7fSksICgnKCkuZm9vJywgKDEsIDIsIDMpLCBkaWN0KGE9NCwgYj01KSkKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5yZXR1cm5fdmFsdWUuZm9vLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygnJywgKDEsIDIsIDMpLCBkaWN0KGE9NCwgYj01KSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sucmV0dXJuX3ZhbHVlLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygnZm9vJywgKDEsIDIsIDMpLCBkaWN0KGE9NCwgYj01KSldKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKCkuZm9vLmJhcigpLmJheigpCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCcnLCAoKSwge30pLCAoJygpLmZvby5iYXInLCAoKSwge30pLAorICAgICAgICAgICAgKCcoKS5mb28uYmFyKCkuYmF6JywgKCksIHt9KQorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsLmZvby5iYXIoKS5iYXooKS5jYWxsX2xpc3QoKSkKKworICAgICAgICBmb3Iga3dhcmdzIGluIGRpY3QoKSwgZGljdChuYW1lPSdiYXInKToKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBpbnQobW9jay5mb28pCisgICAgICAgICAgICBleHBlY3RlZCA9IFsoJ2Zvby5fX2ludF9fJywgKCksIHt9KV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKworICAgICAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygqKmt3YXJncykKKyAgICAgICAgICAgIG1vY2suYSgpKCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gWygnYScsICgpLCB7fSksICgnYSgpJywgKCksIHt9KV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5hKCkubW9ja19jYWxscywgW2NhbGwoKV0pCisKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrKDEpKDIpKDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgY2FsbCgxKSgyKSgzKS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLm1vY2tfY2FsbHMsIGNhbGwoMikoMykuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSgpLm1vY2tfY2FsbHMsIGNhbGwoMykuY2FsbF9saXN0KCkpCisKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrKDEpKDIpKDMpLmEuYi5jKDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCgxKSgyKSgzKS5hLmIuYyg0KS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoMikoMykuYS5iLmMoNCkuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSgpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoMykuYS5iLmMoNCkuY2FsbF9saXN0KCkpCisKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBpbnQobW9jaygpLmZvby5iYXIoKS5iYXooKSkKKyAgICAgICAgICAgIGxhc3RfY2FsbCA9ICgnKCkuZm9vLmJhcigpLmJheigpLl9faW50X18nLCAoKSwge30pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxsc1stMV0sIGxhc3RfY2FsbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwuZm9vLmJhcigpLmJheigpLl9faW50X18oKS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLmZvby5iYXIoKS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsLmJheigpLl9faW50X18oKS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLmZvby5iYXIoKS5iYXoubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCgpLl9faW50X18oKS5jYWxsX2xpc3QoKSkKKworCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YmNsYXNzKE1vY2spOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBTdWJjbGFzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgU3ViY2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrKCksIFN1YmNsYXNzKQorCisgICAgICAgIGNsYXNzIFN1YmNsYXNzKE1vY2spOgorICAgICAgICAgICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2soKiprd2FyZ3MpCisKKyAgICAgICAgbW9jayA9IFN1YmNsYXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG1vY2suZm9vLCBTdWJjbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG1vY2soKSwgU3ViY2xhc3MpCisKKworICAgIGRlZiB0ZXN0X2FyZ19saXN0cyhzZWxmKToKKyAgICAgICAgbW9ja3MgPSBbCisgICAgICAgICAgICBNb2NrKCksCisgICAgICAgICAgICBNYWdpY01vY2soKSwKKyAgICAgICAgICAgIE5vbkNhbGxhYmxlTW9jaygpLAorICAgICAgICAgICAgTm9uQ2FsbGFibGVNYWdpY01vY2soKQorICAgICAgICBdCisKKyAgICAgICAgZGVmIGFzc2VydF9hdHRycyhtb2NrKToKKyAgICAgICAgICAgIG5hbWVzID0gJ2NhbGxfYXJnc19saXN0JywgJ21ldGhvZF9jYWxscycsICdtb2NrX2NhbGxzJworICAgICAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICAgICAgYXR0ciA9IGdldGF0dHIobW9jaywgbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYXR0ciwgX0NhbGxMaXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhdHRyLCBsaXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0ciwgW10pCisKKyAgICAgICAgZm9yIG1vY2sgaW4gbW9ja3M6CisgICAgICAgICAgICBhc3NlcnRfYXR0cnMobW9jaykKKworICAgICAgICAgICAgaWYgY2FsbGFibGUobW9jayk6CisgICAgICAgICAgICAgICAgbW9jaygpCisgICAgICAgICAgICAgICAgbW9jaygxLCAyKQorICAgICAgICAgICAgICAgIG1vY2soYT0zKQorCisgICAgICAgICAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXR0cnMobW9jaykKKworICAgICAgICAgICAgbW9jay5mb28oKQorICAgICAgICAgICAgbW9jay5mb28uYmFyKDEsIGE9MykKKyAgICAgICAgICAgIG1vY2suZm9vKDEpLmJhcigpLmJheigzKQorCisgICAgICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHJzKG1vY2spCisKKworICAgIGRlZiB0ZXN0X2NhbGxfYXJnc190d29fdHVwbGUoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCBhPTMpCisgICAgICAgIG1vY2soMiwgYj00KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2suY2FsbF9hcmdzKSwgMikKKyAgICAgICAgYXJncywga3dhcmdzID0gbW9jay5jYWxsX2FyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoMiwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGt3YXJncywgZGljdChiPTQpKQorCisgICAgICAgIGV4cGVjdGVkX2xpc3QgPSBbKCgxLCksIGRpY3QoYT0zKSksICgoMiwpLCBkaWN0KGI9NCkpXQorICAgICAgICBmb3IgZXhwZWN0ZWQsIGNhbGxfYXJncyBpbiB6aXAoZXhwZWN0ZWRfbGlzdCwgbW9jay5jYWxsX2FyZ3NfbGlzdCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjYWxsX2FyZ3MpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZFswXSwgY2FsbF9hcmdzWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZFsxXSwgY2FsbF9hcmdzWzFdKQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9pdGVyYXRvcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9aXRlcihbMSwgMiwgM10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9WydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PSdnaGknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWydnJywgJ2gnLCAnaSddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PUZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2soKSwgRm9vKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PUl0ZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKSwgbW9jaygpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ3RoaXMnLCAnaXMnLCAnYW4nLCAnaXRlciddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9pdGVyYXRvcl9leGNlcHRpb25zKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrOgorICAgICAgICAgICAgaXRlcmFibGUgPSAoVmFsdWVFcnJvciwgMywgS2V5RXJyb3IsIDYpCisgICAgICAgICAgICBtID0gS2xhc3Moc2lkZV9lZmZlY3Q9aXRlcmFibGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtKCksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSgpLCA2KQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9zZXR0aW5nX2l0ZXJhdG9yKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSBpdGVyKFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKyAgICAgICAgc2lkZV9lZmZlY3QgPSBtb2NrLnNpZGVfZWZmZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzaWRlX2VmZmVjdCwgdHlwZShpdGVyKFtdKSkpCisKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IFsnYScsICdiJywgJ2MnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorICAgICAgICBzaWRlX2VmZmVjdCA9IG1vY2suc2lkZV9lZmZlY3QKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNpZGVfZWZmZWN0LCB0eXBlKGl0ZXIoW10pKSkKKworICAgICAgICB0aGlzX2l0ZXIgPSBJdGVyKCkKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IHRoaXNfaXRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpLCBtb2NrKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsndGhpcycsICdpcycsICdhbicsICdpdGVyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9jay5zaWRlX2VmZmVjdCwgdGhpc19pdGVyKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfaGFzX2NhbGxzX2FueV9vcmRlcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgIG1vY2soYT0zKQorICAgICAgICBtb2NrKDMsIDQpCisgICAgICAgIG1vY2soYj02KQorICAgICAgICBtb2NrKGI9NikKKworICAgICAgICBrYWxscyA9IFsKKyAgICAgICAgICAgIGNhbGwoMSwgMiksICh7J2EnOiAzfSwpLAorICAgICAgICAgICAgKCgzLCA0KSwpLCAoKCksIHsnYSc6IDN9KSwKKyAgICAgICAgICAgICgnJywgKDEsIDIpKSwgKCcnLCB7J2EnOiAzfSksCisgICAgICAgICAgICAoJycsICgxLCAyKSwge30pLCAoJycsICgpLCB7J2EnOiAzfSkKKyAgICAgICAgXQorICAgICAgICBmb3Iga2FsbCBpbiBrYWxsczoKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhba2FsbF0sIGFueV9vcmRlcj1UcnVlKQorCisgICAgICAgIGZvciBrYWxsIGluIGNhbGwoMSwgJzInKSwgY2FsbChiPTMpLCBjYWxsKCksIDMsIE5vbmUsICdmb28nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2hhc19jYWxscywKKyAgICAgICAgICAgICAgICBba2FsbF0sIGFueV9vcmRlcj1UcnVlCisgICAgICAgICAgICApCisKKyAgICAgICAga2FsbF9saXN0cyA9IFsKKyAgICAgICAgICAgIFtjYWxsKDEsIDIpLCBjYWxsKGI9NildLAorICAgICAgICAgICAgW2NhbGwoMywgNCksIGNhbGwoMSwgMildLAorICAgICAgICAgICAgW2NhbGwoYj02KSwgY2FsbChiPTYpXSwKKyAgICAgICAgXQorCisgICAgICAgIGZvciBrYWxsX2xpc3QgaW4ga2FsbF9saXN0czoKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhrYWxsX2xpc3QsIGFueV9vcmRlcj1UcnVlKQorCisgICAgICAgIGthbGxfbGlzdHMgPSBbCisgICAgICAgICAgICBbY2FsbChiPTYpLCBjYWxsKGI9NiksIGNhbGwoYj02KV0sCisgICAgICAgICAgICBbY2FsbCgxLCAyKSwgY2FsbCgxLCAyKV0sCisgICAgICAgICAgICBbY2FsbCgzLCA0KSwgY2FsbCgxLCAyKSwgY2FsbCg1LCA3KV0sCisgICAgICAgICAgICBbY2FsbChiPTYpLCBjYWxsKDMsIDQpLCBjYWxsKGI9NiksIGNhbGwoMSwgMiksIGNhbGwoYj02KV0sCisgICAgICAgIF0KKyAgICAgICAgZm9yIGthbGxfbGlzdCBpbiBrYWxsX2xpc3RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2hhc19jYWxscywKKyAgICAgICAgICAgICAgICBrYWxsX2xpc3QsIGFueV9vcmRlcj1UcnVlCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfaGFzX2NhbGxzKHNlbGYpOgorICAgICAgICBrYWxsczEgPSBbCisgICAgICAgICAgICAgICAgY2FsbCgxLCAyKSwgKHsnYSc6IDN9LCksCisgICAgICAgICAgICAgICAgKCgzLCA0KSwpLCBjYWxsKGI9NiksCisgICAgICAgICAgICAgICAgKCcnLCAoMSwpLCB7J2InOiA2fSksCisgICAgICAgIF0KKyAgICAgICAga2FsbHMyID0gW2NhbGwuZm9vKCksIGNhbGwuYmFyKDEpXQorICAgICAgICBrYWxsczIuZXh0ZW5kKGNhbGwuc3BhbSgpLmJheihhPTMpLmNhbGxfbGlzdCgpKQorICAgICAgICBrYWxsczIuZXh0ZW5kKGNhbGwuYmFtKHNldCgpLCBmb289e30pLmZpc2goWzFdKS5jYWxsX2xpc3QoKSkKKworICAgICAgICBtb2NrcyA9IFtdCisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgICAgICBtb2NrKGE9MykKKyAgICAgICAgICAgIG1vY2soMywgNCkKKyAgICAgICAgICAgIG1vY2soYj02KQorICAgICAgICAgICAgbW9jaygxLCBiPTYpCisgICAgICAgICAgICBtb2Nrcy5hcHBlbmQoKG1vY2ssIGthbGxzMSkpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLmZvbygpCisgICAgICAgIG1vY2suYmFyKDEpCisgICAgICAgIG1vY2suc3BhbSgpLmJheihhPTMpCisgICAgICAgIG1vY2suYmFtKHNldCgpLCBmb289e30pLmZpc2goWzFdKQorICAgICAgICBtb2Nrcy5hcHBlbmQoKG1vY2ssIGthbGxzMikpCisKKyAgICAgICAgZm9yIG1vY2ssIGthbGxzIGluIG1vY2tzOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGthbGxzKSk6CisgICAgICAgICAgICAgICAgZm9yIHN0ZXAgaW4gMSwgMiwgMzoKKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgPSBrYWxsc1tpOmkrc3RlcF0KKyAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfaGFzX2NhbGxzKHRoZXNlKQorCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbih0aGVzZSkgPiAxOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfaGFzX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocmV2ZXJzZWQodGhlc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfYW55X2NhbGwoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrKGE9MykKKyAgICAgICAgbW9jaygxLCBiPTYpCisKKyAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwoMSwgMikKKyAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwoYT0zKQorICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbCgxLCBiPTYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsLAorICAgICAgICAgICAgMSwgMworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbCwKKyAgICAgICAgICAgIGE9NAorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X21vY2tfY2FsbHNfY3JlYXRlX2F1dG9zcGVjKHNlbGYpOgorICAgICAgICBkZWYgZihhLCBiKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgb2JqID0gSXRlcigpCisgICAgICAgIG9iai5mID0gZgorCisgICAgICAgIGZ1bmNzID0gWworICAgICAgICAgICAgY3JlYXRlX2F1dG9zcGVjKGYpLAorICAgICAgICAgICAgY3JlYXRlX2F1dG9zcGVjKG9iaikuZgorICAgICAgICBdCisgICAgICAgIGZvciBmdW5jIGluIGZ1bmNzOgorICAgICAgICAgICAgZnVuYygxLCAyKQorICAgICAgICAgICAgZnVuYygzLCA0KQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGZ1bmMubW9ja19jYWxscywgW2NhbGwoMSwgMiksIGNhbGwoMywgNCldCisgICAgICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X21vY2tfYWRkX3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIF9PbmUob2JqZWN0KToKKyAgICAgICAgICAgIG9uZSA9IDEKKyAgICAgICAgY2xhc3MgX1R3byhvYmplY3QpOgorICAgICAgICAgICAgdHdvID0gMgorICAgICAgICBjbGFzcyBBbnl0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgb25lID0gdHdvID0gdGhyZWUgPSAnZm91cicKKworICAgICAgICBrbGFzc2VzID0gWworICAgICAgICAgICAgTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrCisgICAgICAgIF0KKyAgICAgICAgZm9yIEtsYXNzIGluIGxpc3Qoa2xhc3Nlcyk6CisgICAgICAgICAgICBrbGFzc2VzLmFwcGVuZChsYW1iZGEgSz1LbGFzczogSyhzcGVjPUFueXRoaW5nKSkKKyAgICAgICAgICAgIGtsYXNzZXMuYXBwZW5kKGxhbWJkYSBLPUtsYXNzOiBLKHNwZWNfc2V0PUFueXRoaW5nKSkKKworICAgICAgICBmb3IgS2xhc3MgaW4ga2xhc3NlczoKKyAgICAgICAgICAgIGZvciBrd2FyZ3MgaW4gZGljdCgpLCBkaWN0KHNwZWNfc2V0PVRydWUpOgorICAgICAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICAgICAgI25vIGVycm9yCisgICAgICAgICAgICAgICAgbW9jay5vbmUsIG1vY2sudHdvLCBtb2NrLnRocmVlCisKKyAgICAgICAgICAgICAgICBmb3IgT25lLCBUd28gaW4gWyhfT25lLCBfVHdvKSwgKFsnb25lJ10sIFsndHdvJ10pXToKKyAgICAgICAgICAgICAgICAgICAgZm9yIGt3YXJncyBpbiBkaWN0KCksIGRpY3Qoc3BlY19zZXQ9VHJ1ZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLm1vY2tfYWRkX3NwZWMoT25lLCAqKmt3YXJncykKKworICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAndHdvJworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICd0aHJlZScKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICdzcGVjX3NldCcgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbW9jaywgJ3RocmVlJywgTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5tb2NrX2FkZF9zcGVjKFR3bywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ29uZScKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sudHdvCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ3RocmVlJworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ3NwZWNfc2V0JyBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBtb2NrLCAndGhyZWUnLCBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgIyBub3RlIHRoYXQgY3JlYXRpbmcgYSBtb2NrLCBzZXR0aW5nIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgYW5kCisgICAgICAgICAgICAjICp0aGVuKiBzZXR0aW5nIGEgc3BlYyBkb2Vzbid0IHdvcmsuIE5vdCB0aGUgaW50ZW5kZWQgdXNlIGNhc2UKKworCisgICAgZGVmIHRlc3RfbW9ja19hZGRfc3BlY19tYWdpY19tZXRob2RzKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jazoKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICBpbnQobW9jaykKKworICAgICAgICAgICAgbW9jay5tb2NrX2FkZF9zcGVjKG9iamVjdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW50LCBtb2NrKQorCisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgbW9ja1snZm9vJ10KKyAgICAgICAgICAgIG1vY2suX19pbnRfXy5yZXR1cm5fdmFsdWUgPTQKKworICAgICAgICAgICAgbW9jay5tb2NrX2FkZF9zcGVjKGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG1vY2spLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG1vY2tbJ2ZvbyddKQorCisKKyAgICBkZWYgdGVzdF9hZGRpbmdfY2hpbGRfbW9jayhzZWxmKToKKyAgICAgICAgZm9yIEtsYXNzIGluIE5vbkNhbGxhYmxlTW9jaywgTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jazoKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisKKyAgICAgICAgICAgIG1vY2suZm9vID0gTW9jaygpCisgICAgICAgICAgICBtb2NrLmZvbygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtjYWxsLmZvbygpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbC5mb28oKV0pCisKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICBtb2NrLmJhciA9IE1vY2sobmFtZT0nbmFtZScpCisgICAgICAgICAgICBtb2NrLmJhcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbXSkKKworICAgICAgICAgICAgIyBtb2NrIHdpdGggYW4gZXhpc3RpbmcgX25ld19wYXJlbnQgYnV0IG5vIG5hbWUKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICBtb2NrLmJheiA9IE1hZ2ljTW9jaygpKCkKKyAgICAgICAgICAgIG1vY2suYmF6KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtdKQorCisKKyAgICBkZWYgdGVzdF9hZGRpbmdfcmV0dXJuX3ZhbHVlX21vY2soc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBNYWdpY01vY2soKQorCisgICAgICAgICAgICBtb2NrKCkoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtjYWxsKCksIGNhbGwoKSgpXSkKKworCisgICAgZGVmIHRlc3RfbWFuYWdlcl9tb2NrKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIG9uZSA9ICdvbmUnCisgICAgICAgICAgICB0d28gPSAndHdvJworICAgICAgICBtYW5hZ2VyID0gTW9jaygpCisgICAgICAgIHAxID0gcGF0Y2gub2JqZWN0KEZvbywgJ29uZScpCisgICAgICAgIHAyID0gcGF0Y2gub2JqZWN0KEZvbywgJ3R3bycpCisKKyAgICAgICAgbW9ja19vbmUgPSBwMS5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwMS5zdG9wKQorICAgICAgICBtb2NrX3R3byA9IHAyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAyLnN0b3ApCisKKyAgICAgICAgbWFuYWdlci5hdHRhY2hfbW9jayhtb2NrX29uZSwgJ29uZScpCisgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2sobW9ja190d28sICd0d28nKQorCisgICAgICAgIEZvby50d28oKQorICAgICAgICBGb28ub25lKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXIubW9ja19jYWxscywgW2NhbGwudHdvKCksIGNhbGwub25lKCldKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzX21vY2tfY2FsbHMoc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBtID0gS2xhc3MoKQorICAgICAgICAgICAgbS5fX2ludF9fID0gTW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICAgICAgICAgIG0uX19mbG9hdF9fID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT0zLjApCisgICAgICAgICAgICBpbnQobSkKKyAgICAgICAgICAgIGZsb2F0KG0pCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBbY2FsbC5fX2ludF9fKCksIGNhbGwuX19mbG9hdF9fKCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxscywgW10pCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9kZWxldGlvbihzZWxmKToKKyAgICAgICAgIyB0aGlzIGJlaGF2aW91ciBpc24ndCAqdXNlZnVsKiwgYnV0IGF0IGxlYXN0IGl0J3Mgbm93IHRlc3RlZC4uLgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNb2NrOgorICAgICAgICAgICAgbSA9IEtsYXNzKCkKKyAgICAgICAgICAgIG9yaWdpbmFsID0gbS5mb28KKyAgICAgICAgICAgIG0uZm9vID0gMworICAgICAgICAgICAgZGVsIG0uZm9vCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZm9vLCBvcmlnaW5hbCkKKworICAgICAgICAgICAgbmV3ID0gbS5mb28gPSBNb2NrKCkKKyAgICAgICAgICAgIGRlbCBtLmZvbworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmZvbywgbmV3KQorCisKKyAgICBkZWYgdGVzdF9tb2NrX3BhcmVudHMoc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBtID0gS2xhc3MoKQorICAgICAgICAgICAgb3JpZ2luYWxfcmVwciA9IHJlcHIobSkKKyAgICAgICAgICAgIG0ucmV0dXJuX3ZhbHVlID0gbQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtKCksIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksIG9yaWdpbmFsX3JlcHIpCisKKyAgICAgICAgICAgIG0ucmVzZXRfbW9jaygpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0oKSwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgb3JpZ2luYWxfcmVwcikKKworICAgICAgICAgICAgbSA9IEtsYXNzKCkKKyAgICAgICAgICAgIG0uYiA9IG0uYQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmFtZT0nbW9jay5hJyIsIHJlcHIobS5iKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYSciLCByZXByKG0uYSkpCisgICAgICAgICAgICBtLnJlc2V0X21vY2soKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmFtZT0nbW9jay5hJyIsIHJlcHIobS5iKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYSciLCByZXByKG0uYSkpCisKKyAgICAgICAgICAgIG0gPSBLbGFzcygpCisgICAgICAgICAgICBvcmlnaW5hbF9yZXByID0gcmVwcihtKQorICAgICAgICAgICAgbS5hID0gbSgpCisgICAgICAgICAgICBtLmEucmV0dXJuX3ZhbHVlID0gbQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksIG9yaWdpbmFsX3JlcHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobS5hKCkpLCBvcmlnaW5hbF9yZXByKQorCisKKyAgICBkZWYgdGVzdF9hdHRhY2hfbW9jayhzZWxmKToKKyAgICAgICAgY2xhc3NlcyA9IE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2ssIE5vbkNhbGxhYmxlTW9jaworICAgICAgICBmb3IgS2xhc3MgaW4gY2xhc3NlczoKKyAgICAgICAgICAgIGZvciBLbGFzczIgaW4gY2xhc3NlczoKKyAgICAgICAgICAgICAgICBtID0gS2xhc3MoKQorCisgICAgICAgICAgICAgICAgbTIgPSBLbGFzczIobmFtZT0nZm9vJykKKyAgICAgICAgICAgICAgICBtLmF0dGFjaF9tb2NrKG0yLCAnYmFyJykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5iYXIsIG0yKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYmFyJyIsIHJlcHIobTIpKQorCisgICAgICAgICAgICAgICAgbS5iYXIuYmF6KDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIFtjYWxsLmJhci5iYXooMSldKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHMsIFtjYWxsLmJhci5iYXooMSldKQorCisKKyAgICBkZWYgdGVzdF9hdHRhY2hfbW9ja19yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIGNsYXNzZXMgPSBNb2NrLCBNYWdpY01vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1vY2sKKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2ssIE1hZ2ljTW9jazoKKyAgICAgICAgICAgIGZvciBLbGFzczIgaW4gY2xhc3NlczoKKyAgICAgICAgICAgICAgICBtID0gS2xhc3MoKQorCisgICAgICAgICAgICAgICAgbTIgPSBLbGFzczIobmFtZT0nZm9vJykKKyAgICAgICAgICAgICAgICBtLmF0dGFjaF9tb2NrKG0yLCAncmV0dXJuX3ZhbHVlJykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobSgpLCBtMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuYW1lPSdtb2NrKCknIiwgcmVwcihtMikpCisKKyAgICAgICAgICAgICAgICBtMi5mb28oKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBjYWxsKCkuZm9vKCkuY2FsbF9saXN0KCkpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9kZWxldGlvbihzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gTW9jaygpLCBNYWdpY01vY2soKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vY2ssICdtJykpCisKKyAgICAgICAgICAgIGRlbCBtb2NrLm0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnbScpKQorCisgICAgICAgICAgICBkZWwgbW9jay5mCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ2YnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnZicpCisKKworICAgIGRlZiB0ZXN0X2NsYXNzX2Fzc2lnbmFibGUoc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UobW9jaywgaW50KQorCisgICAgICAgICAgICBtb2NrLl9fY2xhc3NfXyA9IGludAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2ssIGludCkKKyAgICAgICAgICAgIG1vY2suZm9vCisKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMDkxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKQEAgLTAsMCArMSwxNzg1IEBACisjIENvcHlyaWdodCAoQykgMjAwNy0yMDEyIE1pY2hhZWwgRm9vcmQgJiB0aGUgbW9jayB0ZWFtCisjIEUtbWFpbDogZnV6enltYW4gQVQgdm9pZHNwYWNlIERPVCBvcmcgRE9UIHVrCisjIGh0dHA6Ly93d3cudm9pZHNwYWNlLm9yZy51ay9weXRob24vbW9jay8KKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrIGltcG9ydCBzdXBwb3J0Citmcm9tIHVuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCBpbXBvcnQgU29tZUNsYXNzLCBpc19pbnN0YW5jZQorCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0ICgKKyAgICBOb25DYWxsYWJsZU1vY2ssIENhbGxhYmxlTWl4aW4sIHBhdGNoLCBzZW50aW5lbCwKKyAgICBNYWdpY01vY2ssIE1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBwYXRjaCwgX3BhdGNoLAorICAgIERFRkFVTFQsIGNhbGwsIF9nZXRfdGFyZ2V0CispCisKKworYnVpbHRpbl9zdHJpbmcgPSAnYnVpbHRpbnMnCisKK1BUTW9kdWxlID0gc3lzLm1vZHVsZXNbX19uYW1lX19dCitNT0ROQU1FID0gJyVzLlBUTW9kdWxlJyAlIF9fbmFtZV9fCisKKworZGVmIF9nZXRfcHJveHkob2JqLCBnZXRfb25seT1UcnVlKToKKyAgICBjbGFzcyBQcm94eShvYmplY3QpOgorICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihvYmosIG5hbWUpCisgICAgaWYgbm90IGdldF9vbmx5OgorICAgICAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAgICAgc2V0YXR0cihvYmosIG5hbWUsIHZhbHVlKQorICAgICAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICBkZWxhdHRyKG9iaiwgbmFtZSkKKyAgICAgICAgUHJveHkuX19zZXRhdHRyX18gPSBfX3NldGF0dHJfXworICAgICAgICBQcm94eS5fX2RlbGF0dHJfXyA9IF9fZGVsYXR0cl9fCisgICAgcmV0dXJuIFByb3h5KCkKKworCisjIGZvciB1c2UgaW4gdGhlIHRlc3QKK3NvbWV0aGluZyAgPSBzZW50aW5lbC5Tb21ldGhpbmcKK3NvbWV0aGluZ19lbHNlICA9IHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UKKworCitjbGFzcyBGb28ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYSk6CisgICAgICAgIHBhc3MKKyAgICBkZWYgZihzZWxmLCBhKToKKyAgICAgICAgcGFzcworICAgIGRlZiBnKHNlbGYpOgorICAgICAgICBwYXNzCisgICAgZm9vID0gJ2JhcicKKworICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgICAgICBkZWYgYShzZWxmKToKKyAgICAgICAgICAgIHBhc3MKKworZm9vX25hbWUgPSAnJXMuRm9vJyAlIF9fbmFtZV9fCisKKworZGVmIGZ1bmN0aW9uKGEsIGI9Rm9vKToKKyAgICBwYXNzCisKKworY2xhc3MgQ29udGFpbmVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnZhbHVlcyA9IHt9CisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlc1tuYW1lXQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgc2VsZi52YWx1ZXNbbmFtZV0gPSB2YWx1ZQorCisgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIG5hbWUpOgorICAgICAgICBkZWwgc2VsZi52YWx1ZXNbbmFtZV0KKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi52YWx1ZXMpCisKKworCitjbGFzcyBQYXRjaFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIGFzc2VydE5vdENhbGxhYmxlKHNlbGYsIG9iaiwgbWFnaWM9VHJ1ZSk6CisgICAgICAgIE1vY2tDbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisgICAgICAgIGlmIG5vdCBtYWdpYzoKKyAgICAgICAgICAgIE1vY2tDbGFzcyA9IE5vbkNhbGxhYmxlTW9jaworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb2JqKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2Uob2JqLCBNb2NrQ2xhc3MpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2luc3RhbmNlKG9iaiwgQ2FsbGFibGVNaXhpbikpCisKKworICAgIGRlZiB0ZXN0X3NpbmdsZV9wYXRjaG9iamVjdChzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZCkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZCwgInVucGF0Y2hlZCIpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dpdGhfbm9uZShzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgTm9uZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKFNvbWV0aGluZy5hdHRyaWJ1dGUsICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9wYXRjaG9iamVjdChzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorICAgICAgICAgICAgbmV4dF9hdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbDIKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLlBhdGNoZWQpCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnbmV4dF9hdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkMikKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5uZXh0X2F0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5uZXh0X2F0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwyLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9vYmplY3RfbG9va3VwX2lzX3F1aXRlX2xhenkoc2VsZik6CisgICAgICAgIGdsb2JhbCBzb21ldGhpbmcKKyAgICAgICAgb3JpZ2luYWwgPSBzb21ldGhpbmcKKyAgICAgICAgQHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18sIHNlbnRpbmVsLlNvbWV0aGluZzIpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29tZXRoaW5nID0gc2VudGluZWwucmVwbGFjZW1lbnRfdmFsdWUKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLnJlcGxhY2VtZW50X3ZhbHVlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc29tZXRoaW5nID0gb3JpZ2luYWwKKworCisgICAgZGVmIHRlc3RfcGF0Y2goc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisgICAgICAgIEBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKQorICAgICAgICBAcGF0Y2goJyVzLnNvbWV0aGluZ19lbHNlJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmdfZWxzZSwgc2VudGluZWwuU29tZXRoaW5nRWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmdfZWxzZSwgc2VudGluZWwuU29tZXRoaW5nRWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworICAgICAgICAjIFRlc3QgdGhlIHBhdGNoaW5nIGFuZCByZXN0b3Jpbmcgd29ya3MgYSBzZWNvbmQgdGltZQorICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZ19lbHNlLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBzZW50aW5lbC5IYW5kbGUKKyAgICAgICAgQHBhdGNoKCclcy5vcGVuJyAlIGJ1aWx0aW5fc3RyaW5nLCBtb2NrKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVuKCdmaWxlbmFtZScsICdyJyksIHNlbnRpbmVsLkhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZW4gbm90IHBhdGNoZWQiKQorICAgICAgICB0ZXN0KCkKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcGVuLCBtb2NrLCAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfY2xhc3NfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUnICUgX19uYW1lX18sCisgICAgICAgICAgICAgICBzZW50aW5lbC5DbGFzc0F0dHJpYnV0ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGluZWwuQ2xhc3NBdHRyaWJ1dGUsICJ1bnBhdGNoZWQiKQorICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShQVE1vZHVsZS5Tb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd2l0aF9kZWZhdWx0X21vY2soc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3Qob2JqZWN0KToKKyAgICAgICAgICAgIHNvbWV0aGluZyA9IHNlbnRpbmVsLk9yaWdpbmFsCisgICAgICAgICAgICBzb21ldGhpbmcyID0gc2VudGluZWwuT3JpZ2luYWwyCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChUZXN0LCAnc29tZXRoaW5nJykKKyAgICAgICAgZGVmIHRlc3QobW9jayk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2ssIFRlc3Quc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9jayBub3QgcGFzc2VkIGludG8gdGVzdCBmdW5jdGlvbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaywgTWFnaWNNb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCB3aXRoIHR3byBhcmd1bWVudHMgZGlkIG5vdCBjcmVhdGUgYSBtb2NrIikKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFRlc3QsICdzb21ldGhpbmcnKQorICAgICAgICBAcGF0Y2gub2JqZWN0KFRlc3QsICdzb21ldGhpbmcyJykKKyAgICAgICAgZGVmIHRlc3QodGhpczEsIHRoaXMyLCBtb2NrMSwgbW9jazIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGlzMSwgc2VudGluZWwudGhpczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYXRjaGVkIGZ1bmN0aW9uIGRpZG4ndCByZWNlaXZlIGluaXRpYWwgYXJndW1lbnQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGlzMiwgc2VudGluZWwudGhpczIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYXRjaGVkIGZ1bmN0aW9uIGRpZG4ndCByZWNlaXZlIHNlY29uZCBhcmd1bWVudCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sxLCBUZXN0LnNvbWV0aGluZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2NrIG5vdCBwYXNzZWQgaW50byB0ZXN0IGZ1bmN0aW9uIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jazIsIFRlc3Quc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Vjb25kIE1vY2sgbm90IHBhc3NlZCBpbnRvIHRlc3QgZnVuY3Rpb24iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2syLCBNYWdpY01vY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIHdpdGggdHdvIGFyZ3VtZW50cyBkaWQgbm90IGNyZWF0ZSBhIG1vY2siKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2syLCBNYWdpY01vY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIHdpdGggdHdvIGFyZ3VtZW50cyBkaWQgbm90IGNyZWF0ZSBhIG1vY2siKQorCisgICAgICAgICAgICAjIEEgaGFjayB0byB0ZXN0IHRoYXQgbmV3IG1vY2tzIGFyZSBwYXNzZWQgdGhlIHNlY29uZCB0aW1lCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG91dGVyTW9jazEsIG1vY2sxLCAidW5leHBlY3RlZCB2YWx1ZSBmb3IgbW9jazEiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvdXRlck1vY2syLCBtb2NrMiwgInVuZXhwZWN0ZWQgdmFsdWUgZm9yIG1vY2sxIikKKyAgICAgICAgICAgIHJldHVybiBtb2NrMSwgbW9jazIKKworICAgICAgICBvdXRlck1vY2sxID0gb3V0ZXJNb2NrMiA9IE5vbmUKKyAgICAgICAgb3V0ZXJNb2NrMSwgb3V0ZXJNb2NrMiA9IHRlc3Qoc2VudGluZWwudGhpczEsIHNlbnRpbmVsLnRoaXMyKQorCisgICAgICAgICMgVGVzdCB0aGF0IGV4ZWN1dGluZyBhIHNlY29uZCB0aW1lIGNyZWF0ZXMgbmV3IG1vY2tzCisgICAgICAgIHRlc3Qoc2VudGluZWwudGhpczEsIHNlbnRpbmVsLnRoaXMyKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3NwZWMoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVNvbWVDbGFzcykKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcywgTW9ja1NvbWVDbGFzcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShTb21lQ2xhc3Mud2liYmxlLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogU29tZUNsYXNzLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dpdGhfc3BlYyhzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdjbGFzc19hdHRyaWJ1dGUnLCBzcGVjPVNvbWVDbGFzcykKKyAgICAgICAgZGVmIHRlc3QoTW9ja0F0dHJpYnV0ZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUsIE1vY2tBdHRyaWJ1dGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZS53aWJibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGE6IFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVsnd2liYmxlJ10pCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLndpYmJsZSwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IFNvbWVDbGFzcy5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93aXRoX3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdjbGFzc19hdHRyaWJ1dGUnLCBzcGVjPVsnd2liYmxlJ10pCisgICAgICAgIGRlZiB0ZXN0KE1vY2tBdHRyaWJ1dGUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLCBNb2NrQXR0cmlidXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUud2liYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X25lc3RlZF9wYXRjaF93aXRoX3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgIyByZWdyZXNzaW9uIHRlc3QgZm9yIG5lc3RlZCBkZWNvcmF0b3JzCisgICAgICAgIEBwYXRjaCgnJXMub3BlbicgJSBidWlsdGluX3N0cmluZykKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWM9Wyd3aWJibGUnXSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcywgTW9ja09wZW4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLndpYmJsZSwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IFNvbWVDbGFzcy5ub3Rfd2liYmxlKQorICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zcGVjX2FzX2Jvb2xlYW4oc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICAjIFNob3VsZCBub3QgcmFpc2UgYXR0cmlidXRlIGVycm9yCisgICAgICAgICAgICBNb2NrU29tZUNsYXNzLndpYmJsZQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBNb2NrU29tZUNsYXNzLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX29iamVjdF93aXRoX3NwZWNfYXNfYm9vbGVhbihzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChQVE1vZHVsZSwgJ1NvbWVDbGFzcycsIHNwZWM9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcywgTW9ja1NvbWVDbGFzcykKKyAgICAgICAgICAgICMgU2hvdWxkIG5vdCByYWlzZSBhdHRyaWJ1dGUgZXJyb3IKKyAgICAgICAgICAgIE1vY2tTb21lQ2xhc3Mud2liYmxlCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IE1vY2tTb21lQ2xhc3Mubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfY2xhc3NfYWN0c193aXRoX3NwZWNfaXNfaW5oZXJpdGVkKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrU29tZUNsYXNzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShNb2NrU29tZUNsYXNzLCBNYWdpY01vY2spKQorICAgICAgICAgICAgaW5zdGFuY2UgPSBNb2NrU29tZUNsYXNzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUoaW5zdGFuY2UpCisgICAgICAgICAgICAjIFNob3VsZCBub3QgcmFpc2UgYXR0cmlidXRlIGVycm9yCisgICAgICAgICAgICBpbnN0YW5jZS53aWJibGUKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogaW5zdGFuY2Uubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9jcmVhdGVfbW9ja3Nfbm9uX2V4aXN0ZW50X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuZnJvb2JsZScgJSBidWlsdGluX3N0cmluZywgc2VudGluZWwuRnJvb2JsZSwgY3JlYXRlPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyb29ibGUsIHNlbnRpbmVsLkZyb29ibGUpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgbGFtYmRhOiBmcm9vYmxlKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93aXRoX2NyZWF0ZV9tb2Nrc19ub25fZXhpc3RlbnRfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdmcm9vYmxlJywgc2VudGluZWwuRnJvb2JsZSwgY3JlYXRlPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcy5mcm9vYmxlLCBzZW50aW5lbC5Gcm9vYmxlKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoU29tZUNsYXNzLCAnZnJvb2JsZScpKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93b250X2NyZWF0ZV9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBAcGF0Y2goJyVzLmZyb29ibGUnICUgYnVpbHRpbl9zdHJpbmcsIHNlbnRpbmVsLkZyb29ibGUpCisgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJvb2JsZSwgc2VudGluZWwuRnJvb2JsZSkKKworICAgICAgICAgICAgdGVzdCgpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2hpbmcgbm9uIGV4aXN0ZW50IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgbGFtYmRhOiBmcm9vYmxlKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93b250X2NyZWF0ZV9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2Zyb29ibGUnLCBzZW50aW5lbC5Gcm9vYmxlKQorICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1BhdGNoaW5nIG5vbiBleGlzdGVudCBhdHRyaWJ1dGVzIHNob3VsZCBmYWlsJykKKworICAgICAgICAgICAgdGVzdCgpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2hpbmcgbm9uIGV4aXN0ZW50IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoU29tZUNsYXNzLCAnZnJvb2JsZScpKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3N0YXRpY19tZXRob2RzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiB3b290KCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbnRpbmVsLlN0YXRpYworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnd29vdCcsIHN0YXRpY21ldGhvZChsYW1iZGE6IHNlbnRpbmVsLlBhdGNoZWQpKQorICAgICAgICBkZWYgYW5vbnltb3VzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby53b290KCksIHNlbnRpbmVsLlBhdGNoZWQpCisgICAgICAgIGFub255bW91cygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28ud29vdCgpLCBzZW50aW5lbC5TdGF0aWMpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2xvY2FsKHNlbGYpOgorICAgICAgICBmb28gPSBzZW50aW5lbC5Gb28KKyAgICAgICAgQHBhdGNoLm9iamVjdChzZW50aW5lbCwgJ0ZvbycsICdGb28nKQorICAgICAgICBkZWYgYW5vbnltb3VzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnRpbmVsLkZvbywgJ0ZvbycpCisgICAgICAgIGFub255bW91cygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50aW5lbC5Gb28sIGZvbykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc2xvdHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCdGb28nLCkKKworICAgICAgICBmb28gPSBGb28oKQorICAgICAgICBmb28uRm9vID0gc2VudGluZWwuRm9vCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChmb28sICdGb28nLCAnRm9vJykKKyAgICAgICAgZGVmIGFub255bW91cygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uRm9vLCAnRm9vJykKKyAgICAgICAgYW5vbnltb3VzKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5Gb28sIHNlbnRpbmVsLkZvbykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3RfY2xhc3NfZGVjb3JhdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgdGVzdF9tZXRob2Qob3RoZXJfc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5QYXRjaGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBkZWYgbm90X3Rlc3RfbWV0aG9kKG90aGVyX3NlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLXRlc3QgbWV0aG9kIHBhdGNoZWQiKQorCisgICAgICAgIEZvbyA9IHBhdGNoLm9iamVjdChTb21ldGhpbmcsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkKShGb28pCisKKyAgICAgICAgZiA9IEZvbygpCisgICAgICAgIGYudGVzdF9tZXRob2QoKQorICAgICAgICBmLm5vdF90ZXN0X21ldGhvZCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfY2xhc3NfZGVjb3JhdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgdGVzdF9tZXRob2Qob3RoZXJfc2VsZiwgbW9ja19zb21ldGhpbmcpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgZGVmIG5vdF90ZXN0X21ldGhvZChvdGhlcl9zZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi10ZXN0IG1ldGhvZCBwYXRjaGVkIikKKyAgICAgICAgRm9vID0gcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykoRm9vKQorCisgICAgICAgIGYgPSBGb28oKQorICAgICAgICBmLnRlc3RfbWV0aG9kKCkKKyAgICAgICAgZi5ub3RfdGVzdF9tZXRob2QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3R3aWNlKHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisgICAgICAgICAgICBuZXh0X2F0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsMgorCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZCkKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21ldGhpbmcsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5QYXRjaGVkLCAidW5wYXRjaGVkIikKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0KHNlbGYpOgorICAgICAgICBmb28gPSB7J2luaXRpYWwnOiBvYmplY3QoKSwgJ290aGVyJzogJ3NvbWV0aGluZyd9CisgICAgICAgIG9yaWdpbmFsID0gZm9vLmNvcHkoKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbykKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGZvb1snYSddID0gMworICAgICAgICAgICAgZGVsIGZvb1snaW5pdGlhbCddCisgICAgICAgICAgICBmb29bJ290aGVyJ10gPSAnc29tZXRoaW5nIGVsc2UnCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZvbyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvb1snYSddLCAnYicpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgWygnYScsICdiJyldKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZm9vKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vWydhJ10sICdiJykKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfd2l0aF9jb250YWluZXJfb2JqZWN0KHNlbGYpOgorICAgICAgICBmb28gPSBDb250YWluZXIoKQorICAgICAgICBmb29bJ2luaXRpYWwnXSA9IG9iamVjdCgpCisgICAgICAgIGZvb1snb3RoZXInXSA9ICAnc29tZXRoaW5nJworCisgICAgICAgIG9yaWdpbmFsID0gZm9vLnZhbHVlcy5jb3B5KCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBmb29bJ2EnXSA9IDMKKyAgICAgICAgICAgIGRlbCBmb29bJ2luaXRpYWwnXQorICAgICAgICAgICAgZm9vWydvdGhlciddID0gJ3NvbWV0aGluZyBlbHNlJworCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZm9vLnZhbHVlcyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvb1snYSddLCAnYicpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF93aXRoX2NsZWFyKHNlbGYpOgorICAgICAgICBmb28gPSB7J2luaXRpYWwnOiBvYmplY3QoKSwgJ290aGVyJzogJ3NvbWV0aGluZyd9CisgICAgICAgIG9yaWdpbmFsID0gZm9vLmNvcHkoKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgY2xlYXI9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7fSkKKyAgICAgICAgICAgIGZvb1snYSddID0gMworICAgICAgICAgICAgZm9vWydvdGhlciddID0gJ3NvbWV0aGluZyBlbHNlJworCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCBvcmlnaW5hbCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30sIGNsZWFyPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgeydhJzogJ2InfSkKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCBbKCdhJywgJ2InKV0sIGNsZWFyPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgeydhJzogJ2InfSkKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfd2l0aF9jb250YWluZXJfb2JqZWN0X2FuZF9jbGVhcihzZWxmKToKKyAgICAgICAgZm9vID0gQ29udGFpbmVyKCkKKyAgICAgICAgZm9vWydpbml0aWFsJ10gPSBvYmplY3QoKQorICAgICAgICBmb29bJ290aGVyJ10gPSAgJ3NvbWV0aGluZycKKworICAgICAgICBvcmlnaW5hbCA9IGZvby52YWx1ZXMuY29weSgpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCBjbGVhcj1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCB7fSkKKyAgICAgICAgICAgIGZvb1snYSddID0gMworICAgICAgICAgICAgZm9vWydvdGhlciddID0gJ3NvbWV0aGluZyBlbHNlJworCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9LCBjbGVhcj1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCB7J2EnOiAnYid9KQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X25hbWVfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBmb28gPSB7fQorCisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBvYmplY3QoKSkKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIG9iamVjdCgpLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgb2JqZWN0KCkpCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbykKKyAgICAgICAgZGVmIHNvbWVfbmFtZSgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZV9uYW1lLl9fbmFtZV9fLCAnc29tZV9uYW1lJykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIGZvbyA9IHt9CisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcmFpc2UgTmFtZUVycm9yKCdLb25yYWQnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnTmFtZUVycm9yIG5vdCByYWlzZWQgYnkgdGVzdCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHt9KQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3dpdGhfc3RyaW5nKHNlbGYpOgorICAgICAgICBAcGF0Y2guZGljdCgnb3MuZW52aXJvbicsIHsna29ucmFkX2RlbG9uZyc6ICdzb21lIHZhbHVlJ30pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdrb25yYWRfZGVsb25nJywgb3MuZW52aXJvbikKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGVzY3JpcHRvcihzZWxmKToKKyAgICAgICAgIyB3b3VsZCBiZSBzb21lIGVmZm9ydCB0byBmaXggdGhpcyAtIHdlIGNvdWxkIHNwZWNpYWwgY2FzZSB0aGUKKyAgICAgICAgIyBidWlsdGluIGRlc2NyaXB0b3JzOiBjbGFzc21ldGhvZCwgcHJvcGVydHksIHN0YXRpY21ldGhvZAorICAgICAgICByZXR1cm4KKyAgICAgICAgY2xhc3MgTm90aGluZyhvYmplY3QpOgorICAgICAgICAgICAgZm9vID0gTm9uZQorCisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgZm9vID0ge30KKworICAgICAgICAgICAgQHBhdGNoLm9iamVjdChOb3RoaW5nLCAnZm9vJywgMikKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGtsYXNzKGNscyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjbHMsIFNvbWV0aGluZykKKworICAgICAgICAgICAgQHBhdGNoLm9iamVjdChOb3RoaW5nLCAnZm9vJywgMikKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBzdGF0aWMoYXJnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJnCisKKyAgICAgICAgICAgIEBwYXRjaC5kaWN0KGZvbykKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGtsYXNzX2RpY3QoY2xzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNscywgU29tZXRoaW5nKQorCisgICAgICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgc3RhdGljX2RpY3QoYXJnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJnCisKKyAgICAgICAgIyB0aGVzZSB3aWxsIHJhaXNlIGV4Y2VwdGlvbnMgaWYgcGF0Y2hpbmcgZGVzY3JpcHRvcnMgaXMgYnJva2VuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLnN0YXRpYygnZjAwJyksICdmMDAnKQorICAgICAgICBTb21ldGhpbmcua2xhc3MoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5zdGF0aWNfZGljdCgnZjAwJyksICdmMDAnKQorICAgICAgICBTb21ldGhpbmcua2xhc3NfZGljdCgpCisKKyAgICAgICAgc29tZXRoaW5nID0gU29tZXRoaW5nKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcuc3RhdGljKCdmMDAnKSwgJ2YwMCcpCisgICAgICAgIHNvbWV0aGluZy5rbGFzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLnN0YXRpY19kaWN0KCdmMDAnKSwgJ2YwMCcpCisgICAgICAgIHNvbWV0aGluZy5rbGFzc19kaWN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19zZXQoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVNvbWVDbGFzcywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0NsYXNzKToKKyAgICAgICAgICAgIE1vY2tDbGFzcy56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworICAgICAgICBAcGF0Y2gub2JqZWN0KHN1cHBvcnQsICdTb21lQ2xhc3MnLCBzcGVjPVNvbWVDbGFzcywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0NsYXNzKToKKyAgICAgICAgICAgIE1vY2tDbGFzcy56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBNb2NrQ2xhc3MueiA9ICdmb28nCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChzdXBwb3J0LCAnU29tZUNsYXNzJywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0NsYXNzKToKKyAgICAgICAgICAgIE1vY2tDbGFzcy56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworCisgICAgZGVmIHRlc3Rfc3BlY19zZXRfaW5oZXJpdChzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBpbnN0YW5jZSA9IE1vY2tDbGFzcygpCisgICAgICAgICAgICBpbnN0YW5jZS56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3RhcnRfc3RvcChzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSBzb21ldGhpbmcKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29tZXRoaW5nLCBvcmlnaW5hbCkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vY2ssIG9yaWdpbmFsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIG1vY2spCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvbWV0aGluZywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3N0b3Bfd2l0aG91dF9zdGFydChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCAnYmFyJywgMykKKworICAgICAgICAjIGNhbGxpbmcgc3RvcCB3aXRob3V0IHN0YXJ0IHVzZWQgdG8gcHJvZHVjZSBhIHZlcnkgb2JzY3VyZSBlcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHBhdGNoZXIuc3RvcCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfc3RhcnRfc3RvcChzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSBzb21ldGhpbmcKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChQVE1vZHVsZSwgJ3NvbWV0aGluZycsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvbWV0aGluZywgb3JpZ2luYWwpCisgICAgICAgIHJlcGxhY2VkID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwbGFjZWQsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIHJlcGxhY2VkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3N0YXJ0X3N0b3Aoc2VsZik6CisgICAgICAgIGQgPSB7J2Zvbyc6ICdiYXInfQorICAgICAgICBvcmlnaW5hbCA9IGQuY29weSgpCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5kaWN0KGQsIFsoJ3NwYW0nLCAnZWdncycpXSwgY2xlYXI9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBvcmlnaW5hbCkKKworICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7J3NwYW0nOiAnZWdncyd9KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF9jbGFzc19kZWNvcmF0b3Ioc2VsZik6CisgICAgICAgIHRoaXMgPSBzZWxmCisgICAgICAgIGQgPSB7J3NwYW0nOiAnZWdncyd9CisgICAgICAgIG9yaWdpbmFsID0gZC5jb3B5KCkKKworICAgICAgICBjbGFzcyBUZXN0KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgdGVzdF9maXJzdChzZWxmKToKKyAgICAgICAgICAgICAgICB0aGlzLmFzc2VydEVxdWFsKGQsIHsnZm9vJzogJ2Jhcid9KQorICAgICAgICAgICAgZGVmIHRlc3Rfc2Vjb25kKHNlbGYpOgorICAgICAgICAgICAgICAgIHRoaXMuYXNzZXJ0RXF1YWwoZCwgeydmb28nOiAnYmFyJ30pCisKKyAgICAgICAgVGVzdCA9IHBhdGNoLmRpY3QoZCwgeydmb28nOiAnYmFyJ30sIGNsZWFyPVRydWUpKFRlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdCA9IFRlc3QoKQorCisgICAgICAgIHRlc3QudGVzdF9maXJzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdC50ZXN0X3NlY29uZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdCA9IFRlc3QoKQorCisgICAgICAgIHRlc3QudGVzdF9maXJzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdC50ZXN0X3NlY29uZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X2dldF9vbmx5X3Byb3h5KHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9ICdmb28nCisgICAgICAgIGNsYXNzIFNvbWV0aGluZ0Vsc2U6CisgICAgICAgICAgICBmb28gPSAnZm9vJworCisgICAgICAgIGZvciB0aGluZyBpbiBTb21ldGhpbmcsIFNvbWV0aGluZ0Vsc2UsIFNvbWV0aGluZygpLCBTb21ldGhpbmdFbHNlOgorICAgICAgICAgICAgcHJveHkgPSBfZ2V0X3Byb3h5KHRoaW5nKQorCisgICAgICAgICAgICBAcGF0Y2gub2JqZWN0KHByb3h5LCAnZm9vJywgJ2JhcicpCisgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJveHkuZm9vLCAnYmFyJykKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm94eS5mb28sICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGluZy5mb28sICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZm9vJywgcHJveHkuX19kaWN0X18pCisKKworICAgIGRlZiB0ZXN0X2dldF9zZXRfZGVsZXRlX3Byb3h5KHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9ICdmb28nCisgICAgICAgIGNsYXNzIFNvbWV0aGluZ0Vsc2U6CisgICAgICAgICAgICBmb28gPSAnZm9vJworCisgICAgICAgIGZvciB0aGluZyBpbiBTb21ldGhpbmcsIFNvbWV0aGluZ0Vsc2UsIFNvbWV0aGluZygpLCBTb21ldGhpbmdFbHNlOgorICAgICAgICAgICAgcHJveHkgPSBfZ2V0X3Byb3h5KFNvbWV0aGluZywgZ2V0X29ubHk9RmFsc2UpCisKKyAgICAgICAgICAgIEBwYXRjaC5vYmplY3QocHJveHksICdmb28nLCAnYmFyJykKKyAgICAgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm94eS5mb28sICdiYXInKQorICAgICAgICAgICAgdGVzdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3h5LmZvbywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoaW5nLmZvbywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdmb28nLCBwcm94eS5fX2RpY3RfXykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7J3NpZGVfZWZmZWN0JzogS2V5RXJyb3IsICdmb28uYmFyLnJldHVybl92YWx1ZSc6IDMzLAorICAgICAgICAgICAgICAgICAgJ2Zvbyc6IE1hZ2ljTW9jaygpfQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgKiprd2FyZ3MpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5iYXIoKSwgMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9vYmplY3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7J3NpZGVfZWZmZWN0JzogS2V5RXJyb3IsICdmb28uYmFyLnJldHVybl92YWx1ZSc6IDMzLAorICAgICAgICAgICAgICAgICAgJ2Zvbyc6IE1hZ2ljTW9jaygpfQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsICoqa3dhcmdzKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28uYmFyKCksIDMzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5mb28sIE1hZ2ljTW9jaykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0geydmb28nOiAnYmFyJ30KKyAgICAgICAgY29weSA9IG9yaWdpbmFsLmNvcHkoKQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5kaWN0KG9yaWdpbmFsLCBmb289MywgYmFyPTQsIGJhej01KQorICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdpbmFsLCBkaWN0KGZvbz0zLCBiYXI9NCwgYmF6PTUpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdpbmFsLCBjb3B5KQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgQm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGYoc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGcoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZm9vID0gJ2JhcicKKworICAgICAgICAgICAgY2xhc3MgQmFyKG9iamVjdCk6CisgICAgICAgICAgICAgICAgZGVmIGEoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgX3Rlc3QobW9jayk6CisgICAgICAgICAgICBtb2NrKDEpCisgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorCisgICAgICAgIGRlZiBfdGVzdDIobW9jayk6CisgICAgICAgICAgICBtb2NrLmYoMSkKKyAgICAgICAgICAgIG1vY2suZi5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5mKQorCisgICAgICAgICAgICBtb2NrLmcoKQorICAgICAgICAgICAgbW9jay5nLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suZywgMSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdoJykKKworICAgICAgICAgICAgbW9jay5mb28ubG93ZXIoKQorICAgICAgICAgICAgbW9jay5mb28ubG93ZXIuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLmZvbywgJ2JhcicpCisKKyAgICAgICAgICAgIG1vY2suQmFyKCkKKyAgICAgICAgICAgIG1vY2suQmFyLmFzc2VydF9jYWxsZWRfd2l0aCgpCisKKyAgICAgICAgICAgIG1vY2suQmFyLmEoKQorICAgICAgICAgICAgbW9jay5CYXIuYS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLkJhci5hLCAxKQorCisgICAgICAgICAgICBtb2NrLkJhcigpLmEoKQorICAgICAgICAgICAgbW9jay5CYXIoKS5hLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suQmFyKCkuYSwgMSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suQmFyLCAnYicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5CYXIoKSwgJ2InKQorCisgICAgICAgIGRlZiBmdW5jdGlvbihtb2NrKToKKyAgICAgICAgICAgIF90ZXN0KG1vY2spCisgICAgICAgICAgICBfdGVzdDIobW9jaykKKyAgICAgICAgICAgIF90ZXN0Mihtb2NrKDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2NrLCBGb28pCisgICAgICAgICAgICByZXR1cm4gbW9jaworCisgICAgICAgIHRlc3QgPSBwYXRjaChmb29fbmFtZSwgYXV0b3NwZWM9VHJ1ZSkoZnVuY3Rpb24pCisKKyAgICAgICAgbW9jayA9IHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KEZvbywgbW9jaykKKyAgICAgICAgIyB0ZXN0IHBhdGNoaW5nIGEgc2Vjb25kIHRpbWUgd29ya3MKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbX19uYW1lX19dCisgICAgICAgIHRlc3QgPSBwYXRjaC5vYmplY3QobW9kdWxlLCAnRm9vJywgYXV0b3NwZWM9VHJ1ZSkoZnVuY3Rpb24pCisKKyAgICAgICAgbW9jayA9IHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KEZvbywgbW9jaykKKyAgICAgICAgIyB0ZXN0IHBhdGNoaW5nIGEgc2Vjb25kIHRpbWUgd29ya3MKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLmZ1bmN0aW9uJyAlIF9fbmFtZV9fLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBkZWYgdGVzdChtb2NrKToKKyAgICAgICAgICAgIGZ1bmN0aW9uKDEpCisgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKDIsIDMpCisgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX3dpdGgoMiwgMykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmdW5jdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBmdW5jdGlvbiwgJ2ZvbycpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX2tleXdvcmRzKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLmZ1bmN0aW9uJyAlIF9fbmFtZV9fLCBhdXRvc3BlYz1UcnVlLAorICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPTMpCisgICAgICAgIGRlZiB0ZXN0KG1vY2tfZnVuY3Rpb24pOgorICAgICAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwoZnVuY3Rpb24uYWJjLCAnZm9vJykKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigxLCAyKQorCisgICAgICAgIHJlc3VsdCA9IHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgMykKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfd2l0aF9uZXcoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuZnVuY3Rpb24nICUgX19uYW1lX18sIG5ldz0zLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBhdGNoZXIuc3RhcnQpCisKKyAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbX19uYW1lX19dCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QobW9kdWxlLCAnZnVuY3Rpb24nLCBuZXc9MywgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwYXRjaGVyLnN0YXJ0KQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY193aXRoX29iamVjdChzZWxmKToKKyAgICAgICAgY2xhc3MgQmFyKEZvbyk6CisgICAgICAgICAgICBleHRyYSA9IFtdCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBhdXRvc3BlYz1CYXIpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2ssIEJhcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmV4dHJhLCBsaXN0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfaW5oZXJpdHMoc2VsZik6CisgICAgICAgIEZvb0NsYXNzID0gRm9vCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaywgRm9vQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaygzKSwgRm9vQ2xhc3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19uYW1lKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIGF1dG9zcGVjPVRydWUpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nRm9vJyIsIHJlcHIobW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nRm9vLmYnIiwgcmVwcihtb2NrLmYpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J0ZvbygpJyIsIHJlcHIobW9jayhOb25lKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nRm9vKCkuZiciLCByZXByKG1vY2soTm9uZSkuZikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF90cmFjZWJhY2tzKHNlbGYpOgorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCBvYmplY3QoKSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBlcnIgPSBzeXMuZXhjX2luZm8oKQorCisgICAgICAgIHJlc3VsdCA9IHVuaXR0ZXN0LlRleHRUZXN0UmVzdWx0KE5vbmUsIE5vbmUsIDApCisgICAgICAgIHRyYWNlYmFjayA9IHJlc3VsdC5fZXhjX2luZm9fdG9fc3RyaW5nKGVyciwgc2VsZikKKyAgICAgICAgc2VsZi5hc3NlcnRJbigncmFpc2UgQXNzZXJ0aW9uRXJyb3InLCB0cmFjZWJhY2spCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9wYXRjaChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9Tm9uQ2FsbGFibGVNYWdpY01vY2spCisKKyAgICAgICAgbTEgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgbTIgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm90KG0xLCBtMikKKyAgICAgICAgZm9yIG1vY2sgaW4gbTEsIG0yOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShtMSkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX3BhdGNoX29iamVjdChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChGb28sICdmJywgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTWFnaWNNb2NrKQorCisgICAgICAgIG0xID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisgICAgICAgIG0yID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtMSwgbTIpCisgICAgICAgIGZvciBtb2NrIGluIG0xLCBtMjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUobTEpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9rZXl3b3JkX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgY2xhc3MgQmFyKG9iamVjdCk6CisgICAgICAgICAgICBrd2FyZ3MgPSBOb25lCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIEJhci5rd2FyZ3MgPSBrd2FyZ3MKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1CYXIsIGFyZzE9MSwgYXJnMj0yKQorICAgICAgICBtID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShtKSwgQmFyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCYXIua3dhcmdzLCBkaWN0KGFyZzE9MSwgYXJnMj0yKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBCYXIob2JqZWN0KToKKyAgICAgICAgICAgIGt3YXJncyA9IE5vbmUKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgQmFyLmt3YXJncyA9IGt3YXJncworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPUJhciwgc3BlYz1CYXIpCisgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJhci5rd2FyZ3MsIGRpY3Qoc3BlYz1CYXIpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1CYXIsIHNwZWNfc2V0PUJhcikKKyAgICAgICAgcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmFyLmt3YXJncywgZGljdChzcGVjX3NldD1CYXIpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2NyZWF0ZShzZWxmKToKKyAgICAgICAgbm9uX2V4aXN0ZW50X2F0dHIgPSAnJXMud2VlZWVlJyAlIGZvb19uYW1lCisgICAgICAgIHAgPSBwYXRjaChub25fZXhpc3RlbnRfYXR0ciwgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHAuc3RhcnQpCisKKyAgICAgICAgcCA9IHBhdGNoKG5vbl9leGlzdGVudF9hdHRyLCBuZXdfY2FsbGFibGU9Tm9uQ2FsbGFibGVNb2NrLAorICAgICAgICAgICAgICAgICAgY3JlYXRlPVRydWUpCisgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShtLCBtYWdpYz1GYWxzZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9pbmNvbXBhdGlibGVfd2l0aF9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgcGF0Y2gsIGZvb19uYW1lLCBuZXc9b2JqZWN0KCksIG5ld19jYWxsYWJsZT1NYWdpY01vY2sKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsIHBhdGNoLm9iamVjdCwgRm9vLCAnZicsIG5ldz1vYmplY3QoKSwKKyAgICAgICAgICAgIG5ld19jYWxsYWJsZT1NYWdpY01vY2sKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfaW5jb21wYXRpYmxlX3dpdGhfYXV0b3NwZWMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgcGF0Y2gsIGZvb19uYW1lLCBuZXdfY2FsbGFibGU9TWFnaWNNb2NrLAorICAgICAgICAgICAgYXV0b3NwZWM9VHJ1ZQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgcGF0Y2gub2JqZWN0LCBGb28sICdmJywgbmV3X2NhbGxhYmxlPU1hZ2ljTW9jaywKKyAgICAgICAgICAgIGF1dG9zcGVjPVRydWUKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfaW5oZXJpdF9mb3JfbW9ja3Moc2VsZik6CisgICAgICAgIGNsYXNzIE1vY2tTdWIoTW9jayk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgTW9ja0NsYXNzZXMgPSAoCisgICAgICAgICAgICBOb25DYWxsYWJsZU1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBNYWdpY01vY2ssIE1vY2ssIE1vY2tTdWIKKyAgICAgICAgKQorICAgICAgICBmb3IgS2xhc3MgaW4gTW9ja0NsYXNzZXM6CisgICAgICAgICAgICBmb3IgYXJnIGluICdzcGVjJywgJ3NwZWNfc2V0JzoKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSB7YXJnOiBUcnVlfQorICAgICAgICAgICAgICAgIHAgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPUtsYXNzLCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IG0ucmV0dXJuX3ZhbHVlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZSwgJ3gnKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9pbmhlcml0X25vbl9tb2NrKHNlbGYpOgorICAgICAgICBjbGFzcyBOb3RBTW9jayhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKKworICAgICAgICBwID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1Ob3RBTW9jaywgc3BlYz1UcnVlKQorICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtLCBOb3RBTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbSwgJ3JldHVybl92YWx1ZScpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zcGVjLCBGb28pCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9jbGFzc19kZWNvcmF0aW5nKHNlbGYpOgorICAgICAgICB0ZXN0ID0gc2VsZgorICAgICAgICBvcmlnaW5hbCA9IEZvbworICAgICAgICBjbGFzcyBTb21lVGVzdChvYmplY3QpOgorCisgICAgICAgICAgICBkZWYgX3Rlc3Qoc2VsZiwgbW9ja19mb28pOgorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXNOb3QoRm9vLCBvcmlnaW5hbCkKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydElzKEZvbywgbW9ja19mb28pCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRJc0luc3RhbmNlKEZvbywgU29tZUNsYXNzKQorCisgICAgICAgICAgICBkZWYgdGVzdF90d28oc2VsZiwgbW9ja19mb28pOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QobW9ja19mb28pCisgICAgICAgICAgICBkZWYgdGVzdF9vbmUoc2VsZiwgbW9ja19mb28pOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QobW9ja19mb28pCisKKyAgICAgICAgU29tZVRlc3QgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPVNvbWVDbGFzcykoU29tZVRlc3QpCisgICAgICAgIFNvbWVUZXN0KCkudGVzdF9vbmUoKQorICAgICAgICBTb21lVGVzdCgpLnRlc3RfdHdvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBwYXRjaGVyMSA9IHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPTEsIGc9MikKKyAgICAgICAgcGF0Y2hlcjIgPSBwYXRjaC5tdWx0aXBsZShGb28sIGY9MSwgZz0yKQorCisgICAgICAgIGZvciBwYXRjaGVyIGluIHBhdGNoZXIxLCBwYXRjaGVyMjoKKyAgICAgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCAyKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9MywgZz00KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCA0KQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9ub19rd2FyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhdGNoLm11bHRpcGxlLCBmb29fbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGF0Y2gubXVsdGlwbGUsIEZvbykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfY3JlYXRlX21vY2tzKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28KKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxULCBnPTMsIGZvbz1ERUZBVUxUKQorICAgICAgICBkZWYgdGVzdChmLCBmb28pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmYsIGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZm9vLCBmb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZiwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmb28sIE1hZ2ljTW9jaykpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2NyZWF0ZV9tb2Nrc19kaWZmZXJlbnRfb3JkZXIoc2VsZik6CisgICAgICAgICMgYnVnIHJldmVhbGVkIGJ5IEp5dGhvbiEKKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDMpCisgICAgICAgIHBhdGNoZXIuYXR0cmlidXRlX25hbWUgPSAnZicKKworICAgICAgICBvdGhlciA9IHBhdGNoLm9iamVjdChGb28sICdnJywgREVGQVVMVCkKKyAgICAgICAgb3RoZXIuYXR0cmlidXRlX25hbWUgPSAnZycKKyAgICAgICAgcGF0Y2hlci5hZGRpdGlvbmFsX3BhdGNoZXJzID0gW290aGVyXQorCisgICAgICAgIEBwYXRjaGVyCisgICAgICAgIGRlZiB0ZXN0KGcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZywgZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIDMpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX3N0YWNrZWRfZGVjb3JhdG9ycyhzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9REVGQVVMVCkKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmb289REVGQVVMVCkKKyAgICAgICAgQHBhdGNoKGZvb19uYW1lICsgJy5nJykKKyAgICAgICAgZGVmIHRlc3QxKGcsICoqa3dhcmdzKToKKyAgICAgICAgICAgIF90ZXN0KGcsICoqa3dhcmdzKQorCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxUKQorICAgICAgICBAcGF0Y2goZm9vX25hbWUgKyAnLmcnKQorICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGZvbz1ERUZBVUxUKQorICAgICAgICBkZWYgdGVzdDIoZywgKiprd2FyZ3MpOgorICAgICAgICAgICAgX3Rlc3QoZywgKiprd2FyZ3MpCisKKyAgICAgICAgQHBhdGNoKGZvb19uYW1lICsgJy5nJykKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPURFRkFVTFQpCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZm9vPURFRkFVTFQpCisgICAgICAgIGRlZiB0ZXN0MyhnLCAqKmt3YXJncyk6CisgICAgICAgICAgICBfdGVzdChnLCAqKmt3YXJncykKKworICAgICAgICBkZWYgX3Rlc3QoZywgKiprd2FyZ3MpOgorICAgICAgICAgICAgZiA9IGt3YXJncy5wb3AoJ2YnKQorICAgICAgICAgICAgZm9vID0ga3dhcmdzLnBvcCgnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa3dhcmdzKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZiwgZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmcsIGcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5mb28sIGZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGcsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZm9vLCBNYWdpY01vY2spKQorCisgICAgICAgIHRlc3QxKCkKKyAgICAgICAgdGVzdDIoKQorICAgICAgICB0ZXN0MygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2NyZWF0ZV9tb2Nrc19wYXRjaGVyKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28KKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxULCBnPTMsIGZvbz1ERUZBVUxUKQorCisgICAgICAgIHJlc3VsdCA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gcmVzdWx0WydmJ10KKyAgICAgICAgICAgIGZvbyA9IHJlc3VsdFsnZm9vJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHJlc3VsdCksIHNldChbJ2YnLCAnZm9vJ10pKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZiwgZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmZvbywgZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGYsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZm9vLCBNYWdpY01vY2spKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9kZWNvcmF0aW5nX2NsYXNzKHNlbGYpOgorICAgICAgICB0ZXN0ID0gc2VsZgorICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28KKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIGNsYXNzIFNvbWVUZXN0KG9iamVjdCk6CisKKyAgICAgICAgICAgIGRlZiBfdGVzdChzZWxmLCBmLCBmb28pOgorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRJcyhGb28uZiwgZikKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydEVxdWFsKEZvby5nLCAzKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXMoRm9vLmZvbywgZm9vKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmLCBNYWdpY01vY2spKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmb28sIE1hZ2ljTW9jaykpCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxmLCBmLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QoZiwgZm9vKQorICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYsIGYsIGZvbyk6CisgICAgICAgICAgICAgICAgc2VsZi5fdGVzdChmLCBmb28pCisKKyAgICAgICAgU29tZVRlc3QgPSBwYXRjaC5tdWx0aXBsZSgKKyAgICAgICAgICAgIGZvb19uYW1lLCBmPURFRkFVTFQsIGc9MywgZm9vPURFRkFVTFQKKyAgICAgICAgKShTb21lVGVzdCkKKworICAgICAgICB0aGluZyA9IFNvbWVUZXN0KCkKKyAgICAgICAgdGhpbmcudGVzdF9vbmUoKQorICAgICAgICB0aGluZy50ZXN0X3R3bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfY3JlYXRlKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2gubXVsdGlwbGUoRm9vLCBibGFtPSdibGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHBhdGNoZXIuc3RhcnQpCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm11bHRpcGxlKEZvbywgYmxhbT0nYmxhbScsIGNyZWF0ZT1UcnVlKQorICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uYmxhbSwgJ2JsYW0nKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoRm9vLCAnYmxhbScpKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9zcGVjX3NldChzZWxmKToKKyAgICAgICAgIyBpZiBzcGVjX3NldCB3b3JrcyB0aGVuIHdlIGNhbiBhc3N1bWUgdGhhdCBzcGVjIGFuZCBhdXRvc3BlYyBhbHNvCisgICAgICAgICMgd29yayBhcyB0aGUgdW5kZXJseWluZyBtYWNoaW5lcnkgaXMgdGhlIHNhbWUKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm11bHRpcGxlKEZvbywgZm9vPURFRkFVTFQsIHNwZWNfc2V0PVsnYScsICdiJ10pCisgICAgICAgIHJlc3VsdCA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mb28sIHJlc3VsdFsnZm9vJ10pCisgICAgICAgICAgICBGb28uZm9vLmEoMSkKKyAgICAgICAgICAgIEZvby5mb28uYigyKQorICAgICAgICAgICAgRm9vLmZvby5hLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICAgICAgRm9vLmZvby5iLmFzc2VydF9jYWxsZWRfd2l0aCgyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIEZvby5mb28sICdjJywgTm9uZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX25ld19jYWxsYWJsZShzZWxmKToKKyAgICAgICAgY2xhc3MgVGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gubXVsdGlwbGUoCisgICAgICAgICAgICBGb28sIGY9REVGQVVMVCwgZz1ERUZBVUxULCBuZXdfY2FsbGFibGU9VGhpbmcKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZiwgcmVzdWx0WydmJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5nLCByZXN1bHRbJ2cnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShGb28uZiwgVGhpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRm9vLmcsIFRoaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGb28uZiwgRm9vLmcpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9uZXN0ZWRfcGF0Y2hfZmFpbHVyZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnbWlzc2luZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIGRlZiB0aGluZzEoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ21pc3NpbmcnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBkZWYgdGhpbmcyKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdtaXNzaW5nJywgMSkKKyAgICAgICAgZGVmIHRoaW5nMygpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZvciBmdW5jIGluIHRoaW5nMSwgdGhpbmcyLCB0aGluZzM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZnVuYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfZmFpbHVyZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28uZm9vCisKKyAgICAgICAgZGVmIGNyYXNoZXIoKToKKyAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignY3Jhc2hlcicpCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmb28nLCBuZXdfY2FsbGFibGU9Y3Jhc2hlcikKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgZGVmIHRoaW5nMSgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZm9vJywgbmV3X2NhbGxhYmxlPWNyYXNoZXIpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIGRlZiB0aGluZzIoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIG5ld19jYWxsYWJsZT1jcmFzaGVyKQorICAgICAgICBkZWYgdGhpbmczKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9yIGZ1bmMgaW4gdGhpbmcxLCB0aGluZzIsIHRoaW5nMzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgZnVuYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZm9vLCBvcmlnaW5hbF9mb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gJ2YnCisKKyAgICAgICAgZ29vZCA9IHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgZ29vZC5hdHRyaWJ1dGVfbmFtZSA9ICdnJworCisgICAgICAgIGJhZCA9IHBhdGNoLm9iamVjdChGb28sICdtaXNzaW5nJywgMSkKKyAgICAgICAgYmFkLmF0dHJpYnV0ZV9uYW1lID0gJ21pc3NpbmcnCisKKyAgICAgICAgZm9yIGFkZGl0aW9uYWxzIGluIFtnb29kLCBiYWRdLCBbYmFkLCBnb29kXToKKyAgICAgICAgICAgIHBhdGNoZXIuYWRkaXRpb25hbF9wYXRjaGVycyA9IGFkZGl0aW9uYWxzCisKKyAgICAgICAgICAgIEBwYXRjaGVyCisgICAgICAgICAgICBkZWYgZnVuYygpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGZ1bmMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfbmV3X2NhbGxhYmxlX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vLmZvbworCisgICAgICAgIGRlZiBjcmFzaGVyKCk6CisgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IoJ2NyYXNoZXInKQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIHBhdGNoZXIuYXR0cmlidXRlX25hbWUgPSAnZicKKworICAgICAgICBnb29kID0gcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBnb29kLmF0dHJpYnV0ZV9uYW1lID0gJ2cnCisKKyAgICAgICAgYmFkID0gcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIG5ld19jYWxsYWJsZT1jcmFzaGVyKQorICAgICAgICBiYWQuYXR0cmlidXRlX25hbWUgPSAnZm9vJworCisgICAgICAgIGZvciBhZGRpdGlvbmFscyBpbiBbZ29vZCwgYmFkXSwgW2JhZCwgZ29vZF06CisgICAgICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMgPSBhZGRpdGlvbmFscworCisgICAgICAgICAgICBAcGF0Y2hlcgorICAgICAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgZnVuYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZm9vLCBvcmlnaW5hbF9mb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX3N0cmluZ19zdWJjbGFzc2VzKHNlbGYpOgorICAgICAgICBGb28gPSB0eXBlKCdGb28nLCAoc3RyLCksIHsnZmlzaCc6ICd0YXN0eSd9KQorICAgICAgICBmb28gPSBGb28oKQorICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vLCBmaXNoPSduZWFybHkgZ29uZScpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5maXNoLCAnbmVhcmx5IGdvbmUnKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5maXNoLCAndGFzdHknKQorCisKKyAgICBAcGF0Y2goJ3VuaXR0ZXN0Lm1vY2sucGF0Y2guVEVTVF9QUkVGSVgnLCAnZm9vJykKKyAgICBkZWYgdGVzdF9wYXRjaF90ZXN0X3ByZWZpeChzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICB0aGluZyA9ICdvcmlnaW5hbCcKKworICAgICAgICAgICAgZGVmIGZvb19vbmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGhpbmcKKyAgICAgICAgICAgIGRlZiBmb29fdHdvKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRoaW5nCisgICAgICAgICAgICBkZWYgdGVzdF9vbmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGhpbmcKKyAgICAgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50aGluZworCisgICAgICAgIEZvbyA9IHBhdGNoLm9iamVjdChGb28sICd0aGluZycsICdjaGFuZ2VkJykoRm9vKQorCisgICAgICAgIGZvbyA9IEZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmZvb19vbmUoKSwgJ2NoYW5nZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5mb29fdHdvKCksICdjaGFuZ2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udGVzdF9vbmUoKSwgJ29yaWdpbmFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udGVzdF90d28oKSwgJ29yaWdpbmFsJykKKworCisgICAgQHBhdGNoKCd1bml0dGVzdC5tb2NrLnBhdGNoLlRFU1RfUFJFRklYJywgJ2JhcicpCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF90ZXN0X3ByZWZpeChzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgYmFyX29uZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZGljdCh0aGVfZGljdCkKKyAgICAgICAgICAgIGRlZiBiYXJfdHdvKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBkaWN0KHRoZV9kaWN0KQorICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBkaWN0KHRoZV9kaWN0KQorICAgICAgICAgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBkaWN0KHRoZV9kaWN0KQorCisgICAgICAgIHRoZV9kaWN0ID0geydrZXknOiAnb3JpZ2luYWwnfQorICAgICAgICBGb28gPSBwYXRjaC5kaWN0KHRoZV9kaWN0LCBrZXk9J2NoYW5nZWQnKShGb28pCisKKyAgICAgICAgZm9vID1Gb28oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5iYXJfb25lKCksIHsna2V5JzogJ2NoYW5nZWQnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uYmFyX3R3bygpLCB7J2tleSc6ICdjaGFuZ2VkJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnRlc3Rfb25lKCksIHsna2V5JzogJ29yaWdpbmFsJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnRlc3RfdHdvKCksIHsna2V5JzogJ29yaWdpbmFsJ30pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfc3BlY19tb2NrX3JlcHIoc2VsZik6CisgICAgICAgIGZvciBhcmcgaW4gKCdzcGVjJywgJ2F1dG9zcGVjJywgJ3NwZWNfc2V0Jyk6CisgICAgICAgICAgICBwID0gcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgKip7YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nU29tZUNsYXNzJyIsIHJlcHIobSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J1NvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIobS5jbGFzc19hdHRyaWJ1dGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdTb21lQ2xhc3MoKSciLCByZXByKG0oKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J1NvbWVDbGFzcygpLmNsYXNzX2F0dHJpYnV0ZSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihtKCkuY2xhc3NfYXR0cmlidXRlKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbmVzdGVkX2F1dG9zcGVjX3JlcHIoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJ3VuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCcsIGF1dG9zcGVjPVRydWUpIGFzIG06CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nc3VwcG9ydC5Tb21lQ2xhc3Mud2liYmxlKCknIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihtLlNvbWVDbGFzcy53aWJibGUoKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nc3VwcG9ydC5Tb21lQ2xhc3MoKS53aWJibGUoKSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG0uU29tZUNsYXNzKCkud2liYmxlKCkpKQorCisKKworICAgIGRlZiB0ZXN0X21vY2tfY2FsbHNfd2l0aF9wYXRjaChzZWxmKToKKyAgICAgICAgZm9yIGFyZyBpbiAoJ3NwZWMnLCAnYXV0b3NwZWMnLCAnc3BlY19zZXQnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCAqKnthcmc6IFRydWV9KQorICAgICAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG0ud2liYmxlKCkKKworICAgICAgICAgICAgICAgIGthbGxzID0gW2NhbGwud2liYmxlKCldCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIGthbGxzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHMsIGthbGxzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS53aWJibGUubW9ja19jYWxscywgW2NhbGwoKV0pCisKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtKCkKKyAgICAgICAgICAgICAgICBrYWxscy5hcHBlbmQoY2FsbCgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBrYWxscykKKworICAgICAgICAgICAgICAgIHJlc3VsdC53aWJibGUoKQorICAgICAgICAgICAgICAgIGthbGxzLmFwcGVuZChjYWxsKCkud2liYmxlKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIGthbGxzKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQubW9ja19jYWxscywgW2NhbGwud2liYmxlKCldKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LndpYmJsZS5tb2NrX2NhbGxzLCBbY2FsbCgpXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5tZXRob2RfY2FsbHMsIFtjYWxsLndpYmJsZSgpXSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfaW1wb3J0c19sYXppbHkoc2VsZik6CisgICAgICAgIHN5cy5tb2R1bGVzLnBvcCgnc3F1aXp6JywgTm9uZSkKKworICAgICAgICBwMSA9IHBhdGNoKCdzcXVpenouc3F1b3p6JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IsIHAxLnN0YXJ0KQorCisgICAgICAgIHNxdWl6eiA9IE1vY2soKQorICAgICAgICBzcXVpenouc3F1b3p6ID0gNgorICAgICAgICBzeXMubW9kdWxlc1snc3F1aXp6J10gPSBzcXVpenoKKyAgICAgICAgcDEgPSBwYXRjaCgnc3F1aXp6LnNxdW96eicpCisgICAgICAgIHNxdWl6ei5zcXVvenogPSAzCisgICAgICAgIHAxLnN0YXJ0KCkKKyAgICAgICAgcDEuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1aXp6LnNxdW96eiwgMykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfcHJvcG9ncmF0ZXNfZXhjX29uX2V4aXQoc2VsZik6CisgICAgICAgIGNsYXNzIGhvbGRlcjoKKyAgICAgICAgICAgIGV4Y19pbmZvID0gTm9uZSwgTm9uZSwgTm9uZQorCisgICAgICAgIGNsYXNzIGN1c3RvbV9wYXRjaChfcGF0Y2gpOgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV0eXBlPU5vbmUsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgICAgICAgICBfcGF0Y2guX19leGl0X18oc2VsZiwgZXR5cGUsIHZhbCwgdGIpCisgICAgICAgICAgICAgICAgaG9sZGVyLmV4Y19pbmZvID0gZXR5cGUsIHZhbCwgdGIKKyAgICAgICAgICAgIHN0b3AgPSBfX2V4aXRfXworCisgICAgICAgIGRlZiB3aXRoX2N1c3RvbV9wYXRjaCh0YXJnZXQpOgorICAgICAgICAgICAgZ2V0dGVyLCBhdHRyaWJ1dGUgPSBfZ2V0X3RhcmdldCh0YXJnZXQpCisgICAgICAgICAgICByZXR1cm4gY3VzdG9tX3BhdGNoKAorICAgICAgICAgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBERUZBVUxULCBOb25lLCBGYWxzZSwgTm9uZSwKKyAgICAgICAgICAgICAgICBOb25lLCBOb25lLCB7fQorICAgICAgICAgICAgKQorCisgICAgICAgIEB3aXRoX2N1c3RvbV9wYXRjaCgnc3F1aXp6LnNxdW96eicpCisgICAgICAgIGRlZiB0ZXN0KG1vY2spOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB0ZXN0KQorICAgICAgICBzZWxmLmFzc2VydElzKGhvbGRlci5leGNfaW5mb1swXSwgUnVudGltZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShob2xkZXIuZXhjX2luZm9bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiB2YWx1ZSBub3QgcHJvcGdhdGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaG9sZGVyLmV4Y19pbmZvWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24gdHJhY2ViYWNrIG5vdCBwcm9wZ2F0ZWQnKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYW5kX3NwZWNzKHNlbGYpOgorICAgICAgICBmb3Iga3dhcmcgaW4gKCdzcGVjJywgJ3NwZWNfc2V0JywgJ2F1dG9zcGVjJyk6CisgICAgICAgICAgICBwID0gcGF0Y2goJyVzLmRvZXNub3RleGlzdCcgJSBfX25hbWVfXywgY3JlYXRlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgKip7a3dhcmc6IFRydWV9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwLnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCBsYW1iZGE6IGRvZXNub3RleGlzdCkKKworICAgICAgICAgICAgIyBjaGVjayB0aGF0IHNwZWMgd2l0aCBjcmVhdGUgaXMgaW5ub2N1b3VzIGlmIHRoZSBvcmlnaW5hbCBleGlzdHMKKyAgICAgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBjcmVhdGU9VHJ1ZSwgKip7a3dhcmc6IFRydWV9KQorICAgICAgICAgICAgcC5zdGFydCgpCisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9zcGVjcyhzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSBQVE1vZHVsZQorICAgICAgICBmb3Iga3dhcmcgaW4gKCdzcGVjJywgJ3NwZWNfc2V0Jyk6CisgICAgICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgYXV0b3NwZWM9MCwgKip7a3dhcmc6IDB9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwLnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhQVE1vZHVsZSwgb3JpZ2luYWwpCisKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdhdXRvc3BlYycpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWNfc2V0PTAsICoqe2t3YXJnOiAwfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcC5zdGFydCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUFRNb2R1bGUsIG9yaWdpbmFsKQorCisgICAgICAgIGZvciBrd2FyZyBpbiAoJ3NwZWNfc2V0JywgJ2F1dG9zcGVjJyk6CisgICAgICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlYz0wLCAqKntrd2FyZzogMH0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHAuc3RhcnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFBUTW9kdWxlLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3Rfc3BlY3NfZmFsc2VfaW5zdGVhZF9vZl9ub25lKHNlbGYpOgorICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlYz1GYWxzZSwgc3BlY19zZXQ9RmFsc2UsIGF1dG9zcGVjPUZhbHNlKQorICAgICAgICBtb2NrID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgbm8gc3BlYyBzaG91bGQgaGF2ZSBiZWVuIHNldCwgc28gYXR0cmlidXRlIGFjY2VzcyBzaG91bGQgbm90IGZhaWwKKyAgICAgICAgICAgIG1vY2suZG9lc19ub3RfZXhpc3QKKyAgICAgICAgICAgIG1vY2suZG9lc19ub3RfZXhpc3QgPSAzCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9mYWxzZXlfc3BlYyhzZWxmKToKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdhdXRvc3BlYycsICdzcGVjX3NldCcpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsICoqe2t3YXJnOiAwfSkKKyAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbSwgJ2RvZXNub3RleGl0JykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3Rfc3BlY19zZXRfdHJ1ZShzZWxmKToKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdhdXRvc3BlYycpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWNfc2V0PVRydWUsICoqe2t3YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9lc25vdGV4aXN0JywgJ3NvbWV0aGluZycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG0sICdkb2Vzbm90ZXhpc3QnKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9jYWxsYWJsZV9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgIHNwZWMgPSAoJ19fY2FsbF9fJywpCisgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjPXNwZWMpCisgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhbGxhYmxlKG0pKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3Rfbm90X2NhbGxhYmxlX3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgc3BlYyA9ICgnZm9vJywgJ2JhcicpCisgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjPXNwZWMpCisgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjYWxsYWJsZShtKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3N0b3BhbGwoc2VsZik6CisgICAgICAgIHVubGluayA9IG9zLnVubGluaworICAgICAgICBjaGRpciA9IG9zLmNoZGlyCisgICAgICAgIHBhdGggPSBvcy5wYXRoCisgICAgICAgIHBhdGNoKCdvcy51bmxpbmsnLCBzb21ldGhpbmcpLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2goJ29zLmNoZGlyJywgc29tZXRoaW5nX2Vsc2UpLnN0YXJ0KCkKKworICAgICAgICBAcGF0Y2goJ29zLnBhdGgnKQorICAgICAgICBkZWYgcGF0Y2hlZChtb2NrX3BhdGgpOgorICAgICAgICAgICAgcGF0Y2guc3RvcGFsbCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG9zLnBhdGgsIG1vY2tfcGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MudW5saW5rLCB1bmxpbmspCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG9zLmNoZGlyLCBjaGRpcikKKworICAgICAgICBwYXRjaGVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhvcy5wYXRoLCBwYXRoKQorCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RzZW50aW5lbC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RzZW50aW5lbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmRhNjhlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHNlbnRpbmVsLnB5CkBAIC0wLDAgKzEsMjggQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBzZW50aW5lbCwgREVGQVVMVAorCisKK2NsYXNzIFNlbnRpbmVsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdFNlbnRpbmVscyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50aW5lbC53aGF0ZXZlciwgc2VudGluZWwud2hhdGV2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbnRpbmVsIG5vdCBzdG9yZWQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlbnRpbmVsLndoYXRldmVyLCBzZW50aW5lbC53aGF0ZXZlcmVsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbnRpbmVsIHNob3VsZCBiZSB1bmlxdWUnKQorCisKKyAgICBkZWYgdGVzdFNlbnRpbmVsTmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VudGluZWwud2hhdGV2ZXIpLCAnc2VudGluZWwud2hhdGV2ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzZW50aW5lbCBuYW1lIGluY29ycmVjdCcpCisKKworICAgIGRlZiB0ZXN0REVGQVVMVChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERFRkFVTFQgaXMgc2VudGluZWwuREVGQVVMVCkKKworICAgIGRlZiB0ZXN0QmFzZXMoc2VsZik6CisgICAgICAgICMgSWYgdGhpcyBkb2Vzbid0IHJhaXNlIGFuIEF0dHJpYnV0ZUVycm9yIHRoZW4gaGVscChtb2NrKSBpcyBicm9rZW4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogc2VudGluZWwuX19iYXNlc19fKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0d2l0aC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3R3aXRoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMGNmYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0d2l0aC5weQpAQCAtMCwwICsxLDE3NiBAQAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHdhcm5pbmdzIGltcG9ydCBjYXRjaF93YXJuaW5ncworCitmcm9tIHVuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCBpbXBvcnQgaXNfaW5zdGFuY2UKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTWFnaWNNb2NrLCBNb2NrLCBwYXRjaCwgc2VudGluZWwsIG1vY2tfb3BlbiwgY2FsbAorCisKKworc29tZXRoaW5nICA9IHNlbnRpbmVsLlNvbWV0aGluZworc29tZXRoaW5nX2Vsc2UgID0gc2VudGluZWwuU29tZXRoaW5nRWxzZQorCisKKworY2xhc3MgV2l0aFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nMik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nMiwgInVucGF0Y2hlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nMiwgInVucGF0Y2hlZCIpCisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdwb3cnKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJwYXRjaCBzd2FsbG93ZWQgZXhjZXB0aW9uIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfYXMoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykgYXMgbW9ja19zb21ldGhpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG1vY2tfc29tZXRoaW5nLCBNYWdpY01vY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaGluZyB3cm9uZyB0eXBlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfb2JqZWN0X3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIHNvbWV0aGluZyA9ICdmb28nCisgICAgICAgIG9yaWdpbmFsID0gRm9vLnNvbWV0aGluZworICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChGb28sICdzb21ldGhpbmcnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRm9vLnNvbWV0aGluZywgb3JpZ2luYWwsICJ1bnBhdGNoZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5zb21ldGhpbmcsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9uZXN0ZWQoc2VsZik6CisgICAgICAgIHdpdGggY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpOgorICAgICAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZywgcGF0Y2goJyVzLnNvbWV0aGluZ19lbHNlJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZ19lbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywgInVucGF0Y2hlZCIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmdfZWxzZSwgbW9ja19zb21ldGhpbmdfZWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nX2Vsc2UsIHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X3NwZWNpZmllZChzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5QYXRjaGVkKSBhcyBtb2NrX3NvbWV0aGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2tfc29tZXRoaW5nLCBzZW50aW5lbC5QYXRjaGVkLCAid3JvbmcgcGF0Y2giKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorCisKKyAgICBkZWYgdGVzdENvbnRleHRNYW5hZ2VyTW9ja2luZyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLl9fZW50ZXJfXyA9IE1vY2soKQorICAgICAgICBtb2NrLl9fZXhpdF9fID0gTW9jaygpCisgICAgICAgIG1vY2suX19leGl0X18ucmV0dXJuX3ZhbHVlID0gRmFsc2UKKworICAgICAgICB3aXRoIG1vY2sgYXMgbToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbW9jay5fX2VudGVyX18ucmV0dXJuX3ZhbHVlKQorICAgICAgICBtb2NrLl9fZW50ZXJfXy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBtb2NrLl9fZXhpdF9fLmFzc2VydF9jYWxsZWRfd2l0aChOb25lLCBOb25lLCBOb25lKQorCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfd2l0aF9tYWdpY19tb2NrKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAgICAgICAgJ2ZvbycgKyAzCisgICAgICAgIG1vY2suX19lbnRlcl9fLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLl9fZXhpdF9fLmNhbGxlZCkKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfc2FtZV9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuUGF0Y2hlZCkgYXMgbW9ja19zb21ldGhpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorCisgICAgICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pIGFzIG1vY2tfYWdhaW46CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfYWdhaW4sICJ1bnBhdGNoZWQiKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN0b3JlZCB3aXRoIHdyb25nIGluc3RhbmNlIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLCAibm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfaW1icmljYXRlZChzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywgInVucGF0Y2hlZCIpCisKKyAgICAgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZ19lbHNlJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZ19lbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nX2Vsc2UsIG1vY2tfc29tZXRoaW5nX2Vsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZ19lbHNlLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlKQorCisKKyAgICBkZWYgdGVzdF9kaWN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgZm9vID0ge30KKyAgICAgICAgd2l0aCBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHt9KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIHdpdGggcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7J2EnOiAnYid9KQorICAgICAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignS29ucmFkJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywge30pCisKKworCitjbGFzcyBUZXN0TW9ja09wZW4odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbW9ja19vcGVuKHNlbGYpOgorICAgICAgICBtb2NrID0gbW9ja19vcGVuKCkKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMub3BlbicgJSBfX25hbWVfXywgbW9jaywgY3JlYXRlPVRydWUpIGFzIHBhdGNoZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHBhdGNoZWQsIG1vY2spCisgICAgICAgICAgICBvcGVuKCdmb28nKQorCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X21vY2tfb3Blbl9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIG1vY2sgPSBtb2NrX29wZW4oKQorICAgICAgICBoYW5kbGUgPSBtb2NrLnJldHVybl92YWx1ZQorICAgICAgICB3aXRoIHBhdGNoKCclcy5vcGVuJyAlIF9fbmFtZV9fLCBtb2NrLCBjcmVhdGU9VHJ1ZSk6CisgICAgICAgICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGY6CisgICAgICAgICAgICAgICAgZi5yZWFkKCkKKworICAgICAgICBleHBlY3RlZF9jYWxscyA9IFtjYWxsKCdmb28nKSwgY2FsbCgpLl9fZW50ZXJfXygpLCBjYWxsKCkucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsKCkuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZF9jYWxscykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmLCBoYW5kbGUpCisKKworICAgIGRlZiB0ZXN0X2V4cGxpY2l0X21vY2soc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrX29wZW4obW9jaykKKworICAgICAgICB3aXRoIHBhdGNoKCclcy5vcGVuJyAlIF9fbmFtZV9fLCBtb2NrLCBjcmVhdGU9VHJ1ZSkgYXMgcGF0Y2hlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocGF0Y2hlZCwgbW9jaykKKyAgICAgICAgICAgIG9wZW4oJ2ZvbycpCisKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJykKKworCisgICAgZGVmIHRlc3RfcmVhZF9kYXRhKHNlbGYpOgorICAgICAgICBtb2NrID0gbW9ja19vcGVuKHJlYWRfZGF0YT0nZm9vJykKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMub3BlbicgJSBfX25hbWVfXywgbW9jaywgY3JlYXRlPVRydWUpOgorICAgICAgICAgICAgaCA9IG9wZW4oJ2JhcicpCisgICAgICAgICAgICByZXN1bHQgPSBoLnJlYWQoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAnZm9vJykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9lcnJvci5weSBiL0xpYi91cmxsaWIvZXJyb3IucHkKaW5kZXggNDBhZGQ0MS4uYzFkZmM0MCAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9lcnJvci5weQorKysgYi9MaWIvdXJsbGliL2Vycm9yLnB5CkBAIC0xMyw2ICsxMyw5IEBACiAKIGltcG9ydCB1cmxsaWIucmVzcG9uc2UKIAorX19hbGxfXyA9IFsnVVJMRXJyb3InLCAnSFRUUEVycm9yJywgJ0NvbnRlbnRUb29TaG9ydEVycm9yJ10KKworCiAjIGRvIHRoZXNlIGVycm9yIGNsYXNzZXMgbWFrZSBzZW5zZT8KICMgbWFrZSBzdXJlIGFsbCBvZiB0aGUgSU9FcnJvciBzdHVmZiBpcyBvdmVycmlkZGVuLiAgd2UganVzdCB3YW50IHRvIGJlCiAjIHN1YnR5cGVzLgpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5IGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CmluZGV4IGQ2ZjlmOWEuLjY3YjRjNzkgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcmVxdWVzdC5weQorKysgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKQEAgLTg5LDE0ICs4OSwxNiBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCBwb3NpeHBhdGgKLWltcG9ydCByYW5kb20KIGltcG9ydCByZQogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHdhcm5pbmdzCiAKKwogZnJvbSB1cmxsaWIuZXJyb3IgaW1wb3J0IFVSTEVycm9yLCBIVFRQRXJyb3IsIENvbnRlbnRUb29TaG9ydEVycm9yCiBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgKAogICAgIHVybHBhcnNlLCB1cmxzcGxpdCwgdXJsam9pbiwgdW53cmFwLCBxdW90ZSwgdW5xdW90ZSwKQEAgLTExMiwyMSArMTE0LDQwIEBACiBlbHNlOgogICAgIF9oYXZlX3NzbCA9IFRydWUKIAorX19hbGxfXyA9IFsKKyAgICAjIENsYXNzZXMKKyAgICAnUmVxdWVzdCcsICdPcGVuZXJEaXJlY3RvcicsICdCYXNlSGFuZGxlcicsICdIVFRQRGVmYXVsdEVycm9ySGFuZGxlcicsCisgICAgJ0hUVFBSZWRpcmVjdEhhbmRsZXInLCAnSFRUUENvb2tpZVByb2Nlc3NvcicsICdQcm94eUhhbmRsZXInLAorICAgICdIVFRQUGFzc3dvcmRNZ3InLCAnSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbScsCisgICAgJ0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlcicsICdIVFRQQmFzaWNBdXRoSGFuZGxlcicsICdQcm94eUJhc2ljQXV0aEhhbmRsZXInLAorICAgICdBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyJywgJ0hUVFBEaWdlc3RBdXRoSGFuZGxlcicsICdQcm94eURpZ2VzdEF1dGhIYW5kbGVyJywKKyAgICAnSFRUUEhhbmRsZXInLCAnRmlsZUhhbmRsZXInLCAnRlRQSGFuZGxlcicsICdDYWNoZUZUUEhhbmRsZXInLAorICAgICdVbmtub3duSGFuZGxlcicsICdIVFRQRXJyb3JQcm9jZXNzb3InLAorICAgICMgRnVuY3Rpb25zCisgICAgJ3VybG9wZW4nLCAnaW5zdGFsbF9vcGVuZXInLCAnYnVpbGRfb3BlbmVyJywKKyAgICAncGF0aG5hbWUydXJsJywgJ3VybDJwYXRobmFtZScsICdnZXRwcm94aWVzJywKKyAgICAjIExlZ2FjeSBpbnRlcmZhY2UKKyAgICAndXJscmV0cmlldmUnLCAndXJsY2xlYW51cCcsICdVUkxvcGVuZXInLCAnRmFuY3lVUkxvcGVuZXInLAorXQorCiAjIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudAogX192ZXJzaW9uX18gPSBzeXMudmVyc2lvbls6M10KIAogX29wZW5lciA9IE5vbmUKIGRlZiB1cmxvcGVuKHVybCwgZGF0YT1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKLSAgICAgICAgICAgICosIGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSk6CisgICAgICAgICAgICAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUsIGNhZGVmYXVsdD1GYWxzZSk6CiAgICAgZ2xvYmFsIF9vcGVuZXIKLSAgICBpZiBjYWZpbGUgb3IgY2FwYXRoOgorICAgIGlmIGNhZmlsZSBvciBjYXBhdGggb3IgY2FkZWZhdWx0OgogICAgICAgICBpZiBub3QgX2hhdmVfc3NsOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU1NMIHN1cHBvcnQgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1NTTHYyCi0gICAgICAgIGlmIGNhZmlsZSBvciBjYXBhdGg6CisgICAgICAgIGlmIGNhZmlsZSBvciBjYXBhdGggb3IgY2FkZWZhdWx0OgogICAgICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGUsIGNhcGF0aCkKKyAgICAgICAgICAgIGlmIGNhZmlsZSBvciBjYXBhdGg6CisgICAgICAgICAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlLCBjYXBhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lID0gVHJ1ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWUgPSBGYWxzZQpAQCAtMTQyLDE3ICsxNjMsNzggQEAKICAgICBnbG9iYWwgX29wZW5lcgogICAgIF9vcGVuZXIgPSBvcGVuZXIKIAotIyBUT0RPKGpoeWx0b24pOiBNYWtlIHRoaXMgd29yayB3aXRoIHRoZSBzYW1lIGdsb2JhbCBvcGVuZXIuCi1fdXJsb3BlbmVyID0gTm9uZQorX3VybF90ZW1wZmlsZXMgPSBbXQogZGVmIHVybHJldHJpZXZlKHVybCwgZmlsZW5hbWU9Tm9uZSwgcmVwb3J0aG9vaz1Ob25lLCBkYXRhPU5vbmUpOgotICAgIGdsb2JhbCBfdXJsb3BlbmVyCi0gICAgaWYgbm90IF91cmxvcGVuZXI6Ci0gICAgICAgIF91cmxvcGVuZXIgPSBGYW5jeVVSTG9wZW5lcigpCi0gICAgcmV0dXJuIF91cmxvcGVuZXIucmV0cmlldmUodXJsLCBmaWxlbmFtZSwgcmVwb3J0aG9vaywgZGF0YSkKKyAgICAiIiIKKyAgICBSZXRyaWV2ZSBhIFVSTCBpbnRvIGEgdGVtcG9yYXJ5IGxvY2F0aW9uIG9uIGRpc2suCisKKyAgICBSZXF1aXJlcyBhIFVSTCBhcmd1bWVudC4gSWYgYSBmaWxlbmFtZSBpcyBwYXNzZWQsIGl0IGlzIHVzZWQgYXMKKyAgICB0aGUgdGVtcG9yYXJ5IGZpbGUgbG9jYXRpb24uIFRoZSByZXBvcnRob29rIGFyZ3VtZW50IHNob3VsZCBiZQorICAgIGEgY2FsbGFibGUgdGhhdCBhY2NlcHRzIGEgYmxvY2sgbnVtYmVyLCBhIHJlYWQgc2l6ZSwgYW5kIHRoZQorICAgIHRvdGFsIGZpbGUgc2l6ZSBvZiB0aGUgVVJMIHRhcmdldC4gVGhlIGRhdGEgYXJndW1lbnQgc2hvdWxkIGJlCisgICAgdmFsaWQgVVJMIGVuY29kZWQgZGF0YS4KKworICAgIElmIGEgZmlsZW5hbWUgaXMgcGFzc2VkIGFuZCB0aGUgVVJMIHBvaW50cyB0byBhIGxvY2FsIHJlc291cmNlLAorICAgIHRoZSByZXN1bHQgaXMgYSBjb3B5IGZyb20gbG9jYWwgZmlsZSB0byBuZXcgZmlsZS4KKworICAgIFJldHVybnMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBwYXRoIHRvIHRoZSBuZXdseSBjcmVhdGVkCisgICAgZGF0YSBmaWxlIGFzIHdlbGwgYXMgdGhlIHJlc3VsdGluZyBIVFRQTWVzc2FnZSBvYmplY3QuCisgICAgIiIiCisgICAgdXJsX3R5cGUsIHBhdGggPSBzcGxpdHR5cGUodXJsKQorCisgICAgd2l0aCBjb250ZXh0bGliLmNsb3NpbmcodXJsb3Blbih1cmwsIGRhdGEpKSBhcyBmcDoKKyAgICAgICAgaGVhZGVycyA9IGZwLmluZm8oKQorCisgICAgICAgICMgSnVzdCByZXR1cm4gdGhlIGxvY2FsIHBhdGggYW5kIHRoZSAiaGVhZGVycyIgZm9yIGZpbGU6Ly8KKyAgICAgICAgIyBVUkxzLiBObyBzZW5zZSBpbiBwZXJmb3JtaW5nIGEgY29weSB1bmxlc3MgcmVxdWVzdGVkLgorICAgICAgICBpZiB1cmxfdHlwZSA9PSAiZmlsZSIgYW5kIG5vdCBmaWxlbmFtZToKKyAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKHBhdGgpLCBoZWFkZXJzCisKKyAgICAgICAgIyBIYW5kbGUgdGVtcG9yYXJ5IGZpbGUgc2V0dXAuCisgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgdGZwID0gb3BlbihmaWxlbmFtZSwgJ3diJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRmcCA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGU9RmFsc2UpCisgICAgICAgICAgICBmaWxlbmFtZSA9IHRmcC5uYW1lCisgICAgICAgICAgICBfdXJsX3RlbXBmaWxlcy5hcHBlbmQoZmlsZW5hbWUpCisKKyAgICAgICAgd2l0aCB0ZnA6CisgICAgICAgICAgICByZXN1bHQgPSBmaWxlbmFtZSwgaGVhZGVycworICAgICAgICAgICAgYnMgPSAxMDI0KjgKKyAgICAgICAgICAgIHNpemUgPSAtMQorICAgICAgICAgICAgcmVhZCA9IDAKKyAgICAgICAgICAgIGJsb2NrbnVtID0gMAorICAgICAgICAgICAgaWYgImNvbnRlbnQtbGVuZ3RoIiBpbiBoZWFkZXJzOgorICAgICAgICAgICAgICAgIHNpemUgPSBpbnQoaGVhZGVyc1siQ29udGVudC1MZW5ndGgiXSkKKworICAgICAgICAgICAgaWYgcmVwb3J0aG9vazoKKyAgICAgICAgICAgICAgICByZXBvcnRob29rKGJsb2NrbnVtLCAwLCBzaXplKQorCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGJsb2NrID0gZnAucmVhZChicykKKyAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2s6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcmVhZCArPSBsZW4oYmxvY2spCisgICAgICAgICAgICAgICAgdGZwLndyaXRlKGJsb2NrKQorICAgICAgICAgICAgICAgIGJsb2NrbnVtICs9IDEKKyAgICAgICAgICAgICAgICBpZiByZXBvcnRob29rOgorICAgICAgICAgICAgICAgICAgICByZXBvcnRob29rKGJsb2NrbnVtLCBsZW4oYmxvY2spLCBzaXplKQorCisgICAgaWYgc2l6ZSA+PSAwIGFuZCByZWFkIDwgc2l6ZToKKyAgICAgICAgcmFpc2UgQ29udGVudFRvb1Nob3J0RXJyb3IoCisgICAgICAgICAgICAicmV0cmlldmFsIGluY29tcGxldGU6IGdvdCBvbmx5ICVpIG91dCBvZiAlaSBieXRlcyIKKyAgICAgICAgICAgICUgKHJlYWQsIHNpemUpLCByZXN1bHQpCisKKyAgICByZXR1cm4gcmVzdWx0CiAKIGRlZiB1cmxjbGVhbnVwKCk6Ci0gICAgaWYgX3VybG9wZW5lcjoKLSAgICAgICAgX3VybG9wZW5lci5jbGVhbnVwKCkKKyAgICBmb3IgdGVtcF9maWxlIGluIF91cmxfdGVtcGZpbGVzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy51bmxpbmsodGVtcF9maWxlKQorICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlbCBfdXJsX3RlbXBmaWxlc1s6XQogICAgIGdsb2JhbCBfb3BlbmVyCiAgICAgaWYgX29wZW5lcjoKICAgICAgICAgX29wZW5lciA9IE5vbmUKQEAgLTE3OCw3ICsyNjAsOCBAQAogY2xhc3MgUmVxdWVzdDoKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGRhdGE9Tm9uZSwgaGVhZGVycz17fSwKLSAgICAgICAgICAgICAgICAgb3JpZ2luX3JlcV9ob3N0PU5vbmUsIHVudmVyaWZpYWJsZT1GYWxzZSk6CisgICAgICAgICAgICAgICAgIG9yaWdpbl9yZXFfaG9zdD1Ob25lLCB1bnZlcmlmaWFibGU9RmFsc2UsCisgICAgICAgICAgICAgICAgIG1ldGhvZD1Ob25lKToKICAgICAgICAgIyB1bndyYXAoJzxVUkw6dHlwZTovL2hvc3QvcGF0aD4nKSAtLT4gJ3R5cGU6Ly9ob3N0L3BhdGgnCiAgICAgICAgIHNlbGYuZnVsbF91cmwgPSB1bndyYXAodXJsKQogICAgICAgICBzZWxmLmZ1bGxfdXJsLCBzZWxmLmZyYWdtZW50ID0gc3BsaXR0YWcoc2VsZi5mdWxsX3VybCkKQEAgLTE5Miw2ICsyNzUsNyBAQAogICAgICAgICAgICAgb3JpZ2luX3JlcV9ob3N0ID0gcmVxdWVzdF9ob3N0KHNlbGYpCiAgICAgICAgIHNlbGYub3JpZ2luX3JlcV9ob3N0ID0gb3JpZ2luX3JlcV9ob3N0CiAgICAgICAgIHNlbGYudW52ZXJpZmlhYmxlID0gdW52ZXJpZmlhYmxlCisgICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCiAgICAgICAgIHNlbGYuX3BhcnNlKCkKIAogICAgIGRlZiBfcGFyc2Uoc2VsZik6CkBAIC0yMDMsNDEgKzI4Nyw2MCBAQAogICAgICAgICAgICAgc2VsZi5ob3N0ID0gdW5xdW90ZShzZWxmLmhvc3QpCiAKICAgICBkZWYgZ2V0X21ldGhvZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5kYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZC4iIiIKKyAgICAgICAgaWYgc2VsZi5tZXRob2QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5tZXRob2QKKyAgICAgICAgZWxpZiBzZWxmLmRhdGEgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gIlBPU1QiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gIkdFVCIKIAotICAgICMgQmVnaW4gZGVwcmVjYXRlZCBtZXRob2RzCi0KLSAgICBkZWYgYWRkX2RhdGEoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKLQotICAgIGRlZiBoYXNfZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSBpcyBub3QgTm9uZQotCi0gICAgZGVmIGdldF9kYXRhKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5kYXRhCi0KICAgICBkZWYgZ2V0X2Z1bGxfdXJsKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmZyYWdtZW50OgogICAgICAgICAgICAgcmV0dXJuICclcyMlcycgJSAoc2VsZi5mdWxsX3VybCwgc2VsZi5mcmFnbWVudCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmZ1bGxfdXJsCiAKKyAgICAjIEJlZ2luIGRlcHJlY2F0ZWQgbWV0aG9kcworCisgICAgZGVmIGFkZF9kYXRhKHNlbGYsIGRhdGEpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5hZGRfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorCisgICAgZGVmIGhhc19kYXRhKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5oYXNfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSBpcyBub3QgTm9uZQorCisgICAgZGVmIGdldF9kYXRhKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQorCiAgICAgZGVmIGdldF90eXBlKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfdHlwZSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYudHlwZQogCiAgICAgZGVmIGdldF9ob3N0KHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfaG9zdCBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYuaG9zdAogCiAgICAgZGVmIGdldF9zZWxlY3RvcihzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X3NlbGVjdG9yIG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi5zZWxlY3RvcgogCiAgICAgZGVmIGlzX3VudmVyaWZpYWJsZShzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuaXNfdW52ZXJpZmlhYmxlIG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi51bnZlcmlmaWFibGUKIAogICAgIGRlZiBnZXRfb3JpZ2luX3JlcV9ob3N0KHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfb3JpZ2luX3JlcV9ob3N0IG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi5vcmlnaW5fcmVxX2hvc3QKIAogICAgICMgRW5kIGRlcHJlY2F0ZWQgbWV0aG9kcwpAQCAtNjgyLDggKzc4NSw4IEBACiAgICAgICAgIHNlbGYucHJveGllcyA9IHByb3hpZXMKICAgICAgICAgZm9yIHR5cGUsIHVybCBpbiBwcm94aWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICclc19vcGVuJyAlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBwcm94eT11cmwsIHR5cGU9dHlwZSwgbWV0aD1zZWxmLnByb3h5X29wZW46IFwKLSAgICAgICAgICAgICAgICAgICAgbWV0aChyLCBwcm94eSwgdHlwZSkpCisgICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBwcm94eT11cmwsIHR5cGU9dHlwZSwgbWV0aD1zZWxmLnByb3h5X29wZW46CisgICAgICAgICAgICAgICAgICAgICAgICBtZXRoKHIsIHByb3h5LCB0eXBlKSkKIAogICAgIGRlZiBwcm94eV9vcGVuKHNlbGYsIHJlcSwgcHJveHksIHR5cGUpOgogICAgICAgICBvcmlnX3R5cGUgPSByZXEudHlwZQpAQCAtODI1LDE3ICs5MjgsMjMgQEAKICAgICAgICAgICAgIHNlbGYucmV0cmllZCArPSAxCiAKICAgICAgICAgaWYgYXV0aHJlcToKLSAgICAgICAgICAgIG1vID0gQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnJ4LnNlYXJjaChhdXRocmVxKQotICAgICAgICAgICAgaWYgbW86Ci0gICAgICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQotICAgICAgICAgICAgICAgIGlmIHF1b3RlIG5vdCBpbiBbIiciLCAnIiddOgotICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJCYXNpYyBBdXRoIFJlYWxtIHdhcyB1bnF1b3RlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcsIDIpCi0gICAgICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2Jhc2ljJzoKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJldHJ5X2h0dHBfYmFzaWNfYXV0aChob3N0LCByZXEsIHJlYWxtKQotICAgICAgICAgICAgICAgICAgICBpZiByZXNwb25zZSBhbmQgcmVzcG9uc2UuY29kZSAhPSA0MDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHJpZWQgPSAwCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZQorICAgICAgICAgICAgc2NoZW1lID0gYXV0aHJlcS5zcGxpdCgpWzBdCisgICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSAhPSAnYmFzaWMnOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFic3RyYWN0QmFzaWNBdXRoSGFuZGxlciBkb2VzIG5vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3VwcG9ydCB0aGUgZm9sbG93aW5nIHNjaGVtZTogJyVzJyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtbyA9IEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5yeC5zZWFyY2goYXV0aHJlcSkKKyAgICAgICAgICAgICAgICBpZiBtbzoKKyAgICAgICAgICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQorICAgICAgICAgICAgICAgICAgICBpZiBxdW90ZSBub3QgaW4gWyciJywiJyJdOgorICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQmFzaWMgQXV0aCBSZWFsbSB3YXMgdW5xdW90ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyV2FybmluZywgMikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXRyeV9odHRwX2Jhc2ljX2F1dGgoaG9zdCwgcmVxLCByZWFsbSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlc3BvbnNlIGFuZCByZXNwb25zZS5jb2RlICE9IDQwMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHJpZWQgPSAwCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UKIAogICAgIGRlZiByZXRyeV9odHRwX2Jhc2ljX2F1dGgoc2VsZiwgaG9zdCwgcmVxLCByZWFsbSk6CiAgICAgICAgIHVzZXIsIHB3ID0gc2VsZi5wYXNzd2QuZmluZF91c2VyX3Bhc3N3b3JkKHJlYWxtLCBob3N0KQpAQCAtODc4LDkgKzk4Nyw5IEBACiAgICAgICAgIHJldHVybiByZXNwb25zZQogCiAKLWRlZiByYW5kb21ieXRlcyhuKToKLSAgICAiIiJSZXR1cm4gbiByYW5kb20gYnl0ZXMuIiIiCi0gICAgcmV0dXJuIG9zLnVyYW5kb20obikKKyMgUmV0dXJuIG4gcmFuZG9tIGJ5dGVzLgorX3JhbmRvbWJ5dGVzID0gb3MudXJhbmRvbQorCiAKIGNsYXNzIEFic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXI6CiAgICAgIyBEaWdlc3QgYXV0aGVudGljYXRpb24gaXMgc3BlY2lmaWVkIGluIFJGQyAyNjE3LgpAQCAtOTIxLDYgKzEwMzAsOSBAQAogICAgICAgICAgICAgc2NoZW1lID0gYXV0aHJlcS5zcGxpdCgpWzBdCiAgICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSA9PSAnZGlnZXN0JzoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXRyeV9odHRwX2RpZ2VzdF9hdXRoKHJlcSwgYXV0aHJlcSkKKyAgICAgICAgICAgIGVsaWYgc2NoZW1lLmxvd2VyKCkgIT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyIGRvZXMgbm90IHN1cHBvcnQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHRoZSBmb2xsb3dpbmcgc2NoZW1lOiAnJXMnIiAlIHNjaGVtZSkKIAogICAgIGRlZiByZXRyeV9odHRwX2RpZ2VzdF9hdXRoKHNlbGYsIHJlcSwgYXV0aCk6CiAgICAgICAgIHRva2VuLCBjaGFsbGVuZ2UgPSBhdXRoLnNwbGl0KCcgJywgMSkKQEAgLTk0MSw3ICsxMDUzLDcgQEAKICAgICAgICAgIyBhdXRoZW50aWNhdGlvbiwgYW5kIHRvIHByb3ZpZGUgc29tZSBtZXNzYWdlIGludGVncml0eSBwcm90ZWN0aW9uLgogICAgICAgICAjIFRoaXMgaXNuJ3QgYSBmYWJ1bG91cyBlZmZvcnQsIGJ1dCBpdCdzIHByb2JhYmx5IEdvb2QgRW5vdWdoLgogICAgICAgICBzID0gIiVzOiVzOiVzOiIgJSAoc2VsZi5ub25jZV9jb3VudCwgbm9uY2UsIHRpbWUuY3RpbWUoKSkKLSAgICAgICAgYiA9IHMuZW5jb2RlKCJhc2NpaSIpICsgcmFuZG9tYnl0ZXMoOCkKKyAgICAgICAgYiA9IHMuZW5jb2RlKCJhc2NpaSIpICsgX3JhbmRvbWJ5dGVzKDgpCiAgICAgICAgIGRpZyA9IGhhc2hsaWIuc2hhMShiKS5oZXhkaWdlc3QoKQogICAgICAgICByZXR1cm4gZGlnWzoxNl0KIApAQCAtMTA2Niw3ICsxMTc4LDcgQEAKICAgICAgICAgaWYgcmVxdWVzdC5kYXRhIGlzIG5vdCBOb25lOiAgIyBQT1NUCiAgICAgICAgICAgICBkYXRhID0gcmVxdWVzdC5kYXRhCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMgb3IgYW4gaXRlcmFibGUgb2YgYnl0ZXMuICJcCisgICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMgb3IgYW4gaXRlcmFibGUgb2YgYnl0ZXMuICIgXAogICAgICAgICAgICAgICAgICAgICAgICJJdCBjYW5ub3QgYmUgb2YgdHlwZSBzdHIuIgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdDb250ZW50LXR5cGUnKToKQEAgLTExNjIsNyArMTI3NCw2IEBACiAgICAgaHR0cF9yZXF1ZXN0ID0gQWJzdHJhY3RIVFRQSGFuZGxlci5kb19yZXF1ZXN0XwogCiBpZiBoYXNhdHRyKGh0dHAuY2xpZW50LCAnSFRUUFNDb25uZWN0aW9uJyk6Ci0gICAgaW1wb3J0IHNzbAogCiAgICAgY2xhc3MgSFRUUFNIYW5kbGVyKEFic3RyYWN0SFRUUEhhbmRsZXIpOgogCkBAIC0xMTc3LDYgKzEyODgsOCBAQAogCiAgICAgICAgIGh0dHBzX3JlcXVlc3QgPSBBYnN0cmFjdEhUVFBIYW5kbGVyLmRvX3JlcXVlc3RfCiAKKyAgICBfX2FsbF9fLmFwcGVuZCgnSFRUUFNIYW5kbGVyJykKKwogY2xhc3MgSFRUUENvb2tpZVByb2Nlc3NvcihCYXNlSGFuZGxlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvb2tpZWphcj1Ob25lKToKICAgICAgICAgaW1wb3J0IGh0dHAuY29va2llamFyCkBAIC0xNDYzLDYgKzE1NzYsOSBAQAogCiAgICAgIyBDb25zdHJ1Y3RvcgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm94aWVzPU5vbmUsICoqeDUwOSk6CisgICAgICAgIG1zZyA9ICIlKGNsYXNzKXMgc3R5bGUgb2YgaW52b2tpbmcgcmVxdWVzdHMgaXMgZGVwcmVjYXRlZC4gIiBcCisgICAgICAgICAgICAgICJVc2UgbmV3ZXIgdXJsb3BlbiBmdW5jdGlvbnMvbWV0aG9kcyIgJSB7J2NsYXNzJzogc2VsZi5fX2NsYXNzX18uX19uYW1lX199CisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MykKICAgICAgICAgaWYgcHJveGllcyBpcyBOb25lOgogICAgICAgICAgICAgcHJveGllcyA9IGdldHByb3hpZXMoKQogICAgICAgICBhc3NlcnQgaGFzYXR0cihwcm94aWVzLCAna2V5cycpLCAicHJveGllcyBtdXN0IGJlIGEgbWFwcGluZyIKQEAgLTE1NDIsNiArMTY1OCw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZSkodXJsKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBuYW1lKSh1cmwsIGRhdGEpCisgICAgICAgIGV4Y2VwdCBIVFRQRXJyb3I6CisgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ3NvY2tldCBlcnJvcicsIG1zZykud2l0aF90cmFjZWJhY2soc3lzLmV4Y19pbmZvKClbMl0pCiAKQEAgLTE2NjIsNyArMTc4MCw2IEBACiAgICAgICAgICAgICAgICAgaWYgcHJveHlfYnlwYXNzKHJlYWxob3N0KToKICAgICAgICAgICAgICAgICAgICAgaG9zdCA9IHJlYWxob3N0CiAKLSAgICAgICAgICAgICNwcmludCAicHJveHkgdmlhIGh0dHA6IiwgaG9zdCwgc2VsZWN0b3IKICAgICAgICAgaWYgbm90IGhvc3Q6IHJhaXNlIElPRXJyb3IoJ2h0dHAgZXJyb3InLCAnbm8gaG9zdCBnaXZlbicpCiAKICAgICAgICAgaWYgcHJveHlfcGFzc3dkOgpAQCAtMTc2MSw4ICsxODc4LDggQEAKIAogICAgIGRlZiBvcGVuX2xvY2FsX2ZpbGUoc2VsZiwgdXJsKToKICAgICAgICAgIiIiVXNlIGxvY2FsIGZpbGUuIiIiCi0gICAgICAgIGltcG9ydCBtaW1ldHlwZXMsIGVtYWlsLnV0aWxzCi0gICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgICAgICAgIGltcG9ydCBlbWFpbC51dGlscworICAgICAgICBpbXBvcnQgbWltZXR5cGVzCiAgICAgICAgIGhvc3QsIGZpbGUgPSBzcGxpdGhvc3QodXJsKQogICAgICAgICBsb2NhbG5hbWUgPSB1cmwycGF0aG5hbWUoZmlsZSkKICAgICAgICAgdHJ5OgpAQCAtMTc5Niw3ICsxOTEzLDYgQEAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodXJsLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVVJMRXJyb3IoJ2Z0cCBlcnJvcicsICdwcm94eSBzdXBwb3J0IGZvciBmdHAgcHJvdG9jb2wgY3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCcpCiAgICAgICAgIGltcG9ydCBtaW1ldHlwZXMKLSAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KICAgICAgICAgaG9zdCwgcGF0aCA9IHNwbGl0aG9zdCh1cmwpCiAgICAgICAgIGlmIG5vdCBob3N0OiByYWlzZSBVUkxFcnJvcignZnRwIGVycm9yJywgJ25vIGhvc3QgZ2l2ZW4nKQogICAgICAgICBob3N0LCBwb3J0ID0gc3BsaXRwb3J0KGhvc3QpCkBAIC0xODc5LDcgKzE5OTUsNyBAQAogICAgICAgICBtc2cuYXBwZW5kKCdDb250ZW50LXR5cGU6ICVzJyAlIHR5cGUpCiAgICAgICAgIGlmIGVuY29kaW5nID09ICdiYXNlNjQnOgogICAgICAgICAgICAgIyBYWFggaXMgdGhpcyBlbmNvZGluZy9kZWNvZGluZyBvaz8KLSAgICAgICAgICAgIGRhdGEgPSBiYXNlNjQuZGVjb2RlYnl0ZXMoZGF0YS5lbmNvZGUoJ2FzY2lpJykpLmRlY29kZSgnbGF0aW4xJykKKyAgICAgICAgICAgIGRhdGEgPSBiYXNlNjQuZGVjb2RlYnl0ZXMoZGF0YS5lbmNvZGUoJ2FzY2lpJykpLmRlY29kZSgnbGF0aW4tMScpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkYXRhID0gdW5xdW90ZShkYXRhKQogICAgICAgICBtc2cuYXBwZW5kKCdDb250ZW50LUxlbmd0aDogJWQnICUgbGVuKGRhdGEpKQpAQCAtMTk3Miw3ICsyMDg4LDYgQEAKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzKQogICAgICAgICBzdHVmZiA9IGhlYWRlcnNbJ3d3dy1hdXRoZW50aWNhdGUnXQotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnWyBcdF0qKFteIFx0XSspWyBcdF0rcmVhbG09IihbXiJdKikiJywgc3R1ZmYpCiAgICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKQEAgLTE5OTgsNyArMjExMyw2IEBACiAgICAgICAgICAgICBVUkxvcGVuZXIuaHR0cF9lcnJvcl9kZWZhdWx0KHNlbGYsIHVybCwgZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmNvZGUsIGVycm1zZywgaGVhZGVycykKICAgICAgICAgc3R1ZmYgPSBoZWFkZXJzWydwcm94eS1hdXRoZW50aWNhdGUnXQotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnWyBcdF0qKFteIFx0XSspWyBcdF0rcmVhbG09IihbXiJdKikiJywgc3R1ZmYpCiAgICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKQEAgLTIyOTAsOCArMjQwNCw2IEBACiAgICAgICAnZXhjZXB0aW9ucyc6IFsnZm9vLmJhcicsICcqLmJhci5jb20nLCAnMTI3LjAuMC4xJywgJzEwLjEnLCAnMTAuMC8xNiddCiAgICAgfQogICAgICIiIgotICAgIGltcG9ydCByZQotICAgIGltcG9ydCBzb2NrZXQKICAgICBmcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gKIAogICAgIGhvc3Rvbmx5LCBwb3J0ID0gc3BsaXRwb3J0KGhvc3QpCkBAIC0yMzk0LDcgKzI1MDYsNiBAQAogICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBwcm94eVNlcnZlci5zcGxpdCgnOycpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wsIGFkZHJlc3MgPSBwLnNwbGl0KCc9JywgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICMgU2VlIGlmIGFkZHJlc3MgaGFzIGEgdHlwZTovLyBwcmVmaXgKLSAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCByZQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlLm1hdGNoKCdeKFteLzpdKyk6Ly8nLCBhZGRyZXNzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzID0gJyVzOi8vJXMnICUgKHByb3RvY29sLCBhZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgcHJveGllc1twcm90b2NvbF0gPSBhZGRyZXNzCkBAIC0yNDI2LDcgKzI1MzcsNiBAQAogICAgIGRlZiBwcm94eV9ieXBhc3NfcmVnaXN0cnkoaG9zdCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCB3aW5yZWcKLSAgICAgICAgICAgIGltcG9ydCByZQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAjIFN0ZCBtb2R1bGVzLCBzbyBzaG91bGQgYmUgYXJvdW5kIC0gYnV0IHlvdSBuZXZlciBrbm93IQogICAgICAgICAgICAgcmV0dXJuIDAKQEAgLTI0NzAsNyArMjU4MCw2IEBACiAgICAgICAgICAgICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCIqIiwgciIuKiIpICAgICAjIGNoYW5nZSBnbG9iIHNlcXVlbmNlCiAgICAgICAgICAgICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCI/IiwgciIuIikgICAgICAjIGNoYW5nZSBnbG9iIGNoYXIKICAgICAgICAgICAgIGZvciB2YWwgaW4gaG9zdDoKLSAgICAgICAgICAgICAgICAjIHByaW50ICIlcyA8LS0+ICVzIiAlKCB0ZXN0LCB2YWwgKQogICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKHRlc3QsIHZhbCwgcmUuSSk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgIHJldHVybiAwCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3Jlc3BvbnNlLnB5IGIvTGliL3VybGxpYi9yZXNwb25zZS5weQppbmRleCBmZmFhNWZhLi4xY2YxZDFhIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3Jlc3BvbnNlLnB5CisrKyBiL0xpYi91cmxsaWIvcmVzcG9uc2UucHkKQEAgLTM3LDEyICszNywxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQoc2VsZiksIHNlbGYuZnApCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIGlmIHNlbGYuZnA6CisgICAgICAgICAgICBzZWxmLmZwLmNsb3NlKCkKKyAgICAgICAgc2VsZi5mcCA9IE5vbmUKICAgICAgICAgc2VsZi5yZWFkID0gTm9uZQogICAgICAgICBzZWxmLnJlYWRsaW5lID0gTm9uZQogICAgICAgICBzZWxmLnJlYWRsaW5lcyA9IE5vbmUKICAgICAgICAgc2VsZi5maWxlbm8gPSBOb25lCi0gICAgICAgIGlmIHNlbGYuZnA6IHNlbGYuZnAuY2xvc2UoKQotICAgICAgICBzZWxmLmZwID0gTm9uZQorICAgICAgICBzZWxmLl9faXRlcl9fID0gTm9uZQorICAgICAgICBzZWxmLl9fbmV4dF9fID0gTm9uZQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3V1aWQucHkgYi9MaWIvdXVpZC5weQppbmRleCA1Njg0YWQ3Li4wZGYwNzQzIDEwMDY0NAotLS0gYS9MaWIvdXVpZC5weQorKysgYi9MaWIvdXVpZC5weQpAQCAtNDQwLDcgKzQ0MCw3IEBACiAgICAgaW1wb3J0IHN5cwogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgaW1wb3J0IG9zCi0gICAgICAgIGlmIGludChvcy51bmFtZSgpWzJdLnNwbGl0KCcuJylbMF0pID49IDk6CisgICAgICAgIGlmIGludChvcy51bmFtZSgpLnJlbGVhc2Uuc3BsaXQoJy4nKVswXSkgPj0gOToKICAgICAgICAgICAgIF91dWlkX2dlbmVyYXRlX3JhbmRvbSA9IF91dWlkX2dlbmVyYXRlX3RpbWUgPSBOb25lCiAKICAgICAjIE9uIFdpbmRvd3MgcHJpb3IgdG8gMjAwMCwgVXVpZENyZWF0ZSBnaXZlcyBhIFVVSUQgY29udGFpbmluZyB0aGUKZGlmZiAtLWdpdCBhL0xpYi92ZW52L19faW5pdF9fLnB5IGIvTGliL3ZlbnYvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQyZGViNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMzk4IEBACisiIiIKK1ZpcnR1YWwgZW52aXJvbm1lbnQgKHZlbnYpIHBhY2thZ2UgZm9yIFB5dGhvbi4gQmFzZWQgb24gUEVQIDQwNS4KKworQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgVmluYXkgU2FqaXAuCitMaWNlbnNlZCB0byB0aGUgUFNGIHVuZGVyIGEgY29udHJpYnV0b3IgYWdyZWVtZW50LgorCit1c2FnZTogcHl0aG9uIC1tIHZlbnYgWy1oXSBbLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlc10gWy0tc3ltbGlua3NdIFstLWNsZWFyXQorICAgICAgICAgICAgWy0tdXBncmFkZV0KKyAgICAgICAgICAgIEVOVl9ESVIgW0VOVl9ESVIgLi4uXQorCitDcmVhdGVzIHZpcnR1YWwgUHl0aG9uIGVudmlyb25tZW50cyBpbiBvbmUgb3IgbW9yZSB0YXJnZXQgZGlyZWN0b3JpZXMuCisKK3Bvc2l0aW9uYWwgYXJndW1lbnRzOgorICBFTlZfRElSICAgICAgICAgICAgICAgQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4KKworb3B0aW9uYWwgYXJndW1lbnRzOgorICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICBHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICBzaXRlLXBhY2thZ2VzIGRpci4KKyAgLS1zeW1saW5rcyAgICAgICAgICAgIEF0dGVtcHQgdG8gc3ltbGluayByYXRoZXIgdGhhbiBjb3B5LgorICAtLWNsZWFyICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQgYWxyZWFkeSBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiBub3Qgc3BlY2lmaWVkIGFuZCB0aGUgZGlyZWN0b3J5IGV4aXN0cywgYW4gZXJyb3IgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlZC4KKyAgLS11cGdyYWRlICAgICAgICAgICAgIFVwZ3JhZGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiBoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4KKyIiIgoraW1wb3J0IGJhc2U2NAoraW1wb3J0IGlvCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZwordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCitjbGFzcyBDb250ZXh0OgorICAgICIiIgorICAgIEhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGEgY3VycmVudCB2ZW52IGNyZWF0aW9uL3VwZ3JhZGUgcmVxdWVzdC4KKyAgICAiIiIKKyAgICBwYXNzCisKKworY2xhc3MgRW52QnVpbGRlcjoKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIGV4aXN0cyB0byBhbGxvdyB2aXJ0dWFsIGVudmlyb25tZW50IGNyZWF0aW9uIHRvIGJlCisgICAgY3VzdG9taXNlZC4gVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZGV0ZXJtaW5lIHRoZSBidWlsZGVyJ3MKKyAgICBiZWhhdmlvdXIgd2hlbiBjYWxsZWQgdXBvbiB0byBjcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50LgorCisgICAgQnkgZGVmYXVsdCwgdGhlIGJ1aWxkZXIgbWFrZXMgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzIGRpcgorICAgIGF2YWlsYWJsZSB0byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudC4KKworICAgIEJ5IGRlZmF1bHQsIHRoZSBjcmVhdGlvbiBwcm9jZXNzIHVzZXMgc3ltbGlua3Mgd2hlcmV2ZXIgcG9zc2libGUuCisKKyAgICA6cGFyYW0gc3lzdGVtX3NpdGVfcGFja2FnZXM6IElmIFRydWUsIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyIGlzIGF2YWlsYWJsZSB0byBjcmVhdGVkIGVudmlyb25tZW50cy4KKyAgICA6cGFyYW0gY2xlYXI6IElmIFRydWUgYW5kIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGV4aXN0cywgaXQgaXMgZGVsZXRlZC4KKyAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgaWYgdGhlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvciBpcworICAgICAgICAgICAgICAgICAgcmFpc2VkLgorICAgIDpwYXJhbSBzeW1saW5rczogSWYgVHJ1ZSwgYXR0ZW1wdCB0byBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHkgZmlsZXMgaW50bworICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgICA6cGFyYW0gdXBncmFkZTogSWYgVHJ1ZSwgdXBncmFkZSBhbiBleGlzdGluZyB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHVwZ3JhZGU9RmFsc2UpOgorICAgICAgICBzZWxmLnN5c3RlbV9zaXRlX3BhY2thZ2VzID0gc3lzdGVtX3NpdGVfcGFja2FnZXMKKyAgICAgICAgc2VsZi5jbGVhciA9IGNsZWFyCisgICAgICAgIHNlbGYuc3ltbGlua3MgPSBzeW1saW5rcworICAgICAgICBzZWxmLnVwZ3JhZGUgPSB1cGdyYWRlCisKKyAgICBkZWYgY3JlYXRlKHNlbGYsIGVudl9kaXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4KKworICAgICAgICA6cGFyYW0gZW52X2RpcjogVGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IGluLgorCisgICAgICAgICIiIgorICAgICAgICBlbnZfZGlyID0gb3MucGF0aC5hYnNwYXRoKGVudl9kaXIpCisgICAgICAgIGNvbnRleHQgPSBzZWxmLmVuc3VyZV9kaXJlY3RvcmllcyhlbnZfZGlyKQorICAgICAgICBzZWxmLmNyZWF0ZV9jb25maWd1cmF0aW9uKGNvbnRleHQpCisgICAgICAgIHNlbGYuc2V0dXBfcHl0aG9uKGNvbnRleHQpCisgICAgICAgIGlmIG5vdCBzZWxmLnVwZ3JhZGU6CisgICAgICAgICAgICBzZWxmLnNldHVwX3NjcmlwdHMoY29udGV4dCkKKyAgICAgICAgICAgIHNlbGYucG9zdF9zZXR1cChjb250ZXh0KQorCisgICAgZGVmIGVuc3VyZV9kaXJlY3RvcmllcyhzZWxmLCBlbnZfZGlyKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSB0aGUgZGlyZWN0b3JpZXMgZm9yIHRoZSBlbnZpcm9ubWVudC4KKworICAgICAgICBSZXR1cm5zIGEgY29udGV4dCBvYmplY3Qgd2hpY2ggaG9sZHMgcGF0aHMgaW4gdGhlIGVudmlyb25tZW50LAorICAgICAgICBmb3IgdXNlIGJ5IHN1YnNlcXVlbnQgbG9naWMuCisgICAgICAgICIiIgorCisgICAgICAgIGRlZiBjcmVhdGVfaWZfbmVlZGVkKGQpOgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGQpOgorICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGQpCisKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZW52X2RpcikgYW5kIG5vdCAoc2VsZi5jbGVhciBvciBzZWxmLnVwZ3JhZGUpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRGlyZWN0b3J5IGV4aXN0czogJXMnICUgZW52X2RpcikKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZW52X2RpcikgYW5kIHNlbGYuY2xlYXI6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKGVudl9kaXIpCisgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KCkKKyAgICAgICAgY29udGV4dC5lbnZfZGlyID0gZW52X2RpcgorICAgICAgICBjb250ZXh0LmVudl9uYW1lID0gb3MucGF0aC5zcGxpdChlbnZfZGlyKVsxXQorICAgICAgICBjb250ZXh0LnByb21wdCA9ICcoJXMpICcgJSBjb250ZXh0LmVudl9uYW1lCisgICAgICAgIGNyZWF0ZV9pZl9uZWVkZWQoZW52X2RpcikKKyAgICAgICAgZW52ID0gb3MuZW52aXJvbgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBlbnY6CisgICAgICAgICAgICBleGVjdXRhYmxlID0gb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleGVjdXRhYmxlID0gc3lzLmV4ZWN1dGFibGUKKyAgICAgICAgZGlybmFtZSwgZXhlbmFtZSA9IG9zLnBhdGguc3BsaXQob3MucGF0aC5hYnNwYXRoKGV4ZWN1dGFibGUpKQorICAgICAgICBjb250ZXh0LmV4ZWN1dGFibGUgPSBleGVjdXRhYmxlCisgICAgICAgIGNvbnRleHQucHl0aG9uX2RpciA9IGRpcm5hbWUKKyAgICAgICAgY29udGV4dC5weXRob25fZXhlID0gZXhlbmFtZQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIGJpbm5hbWUgPSAnU2NyaXB0cycKKyAgICAgICAgICAgIGluY3BhdGggPSAnSW5jbHVkZScKKyAgICAgICAgICAgIGxpYnBhdGggPSBvcy5wYXRoLmpvaW4oZW52X2RpciwgJ0xpYicsICdzaXRlLXBhY2thZ2VzJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJpbm5hbWUgPSAnYmluJworICAgICAgICAgICAgaW5jcGF0aCA9ICdpbmNsdWRlJworICAgICAgICAgICAgbGlicGF0aCA9IG9zLnBhdGguam9pbihlbnZfZGlyLCAnbGliJywgJ3B5dGhvbiVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLCAnc2l0ZS1wYWNrYWdlcycpCisgICAgICAgIGNvbnRleHQuaW5jX3BhdGggPSBwYXRoID0gb3MucGF0aC5qb2luKGVudl9kaXIsIGluY3BhdGgpCisgICAgICAgIGNyZWF0ZV9pZl9uZWVkZWQocGF0aCkKKyAgICAgICAgY3JlYXRlX2lmX25lZWRlZChsaWJwYXRoKQorICAgICAgICBjb250ZXh0LmJpbl9wYXRoID0gYmlucGF0aCA9IG9zLnBhdGguam9pbihlbnZfZGlyLCBiaW5uYW1lKQorICAgICAgICBjb250ZXh0LmJpbl9uYW1lID0gYmlubmFtZQorICAgICAgICBjb250ZXh0LmVudl9leGUgPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgZXhlbmFtZSkKKyAgICAgICAgY3JlYXRlX2lmX25lZWRlZChiaW5wYXRoKQorICAgICAgICByZXR1cm4gY29udGV4dAorCisgICAgZGVmIGNyZWF0ZV9jb25maWd1cmF0aW9uKHNlbGYsIGNvbnRleHQpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGluZGljYXRpbmcgd2hlcmUgdGhlIGVudmlyb25tZW50J3MgUHl0aG9uCisgICAgICAgIHdhcyBjb3BpZWQgZnJvbSwgYW5kIHdoZXRoZXIgdGhlIHN5c3RlbSBzaXRlLXBhY2thZ2VzIHNob3VsZCBiZSBtYWRlCisgICAgICAgIGF2YWlsYWJsZSBpbiB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGNvbnRleHQuY2ZnX3BhdGggPSBwYXRoID0gb3MucGF0aC5qb2luKGNvbnRleHQuZW52X2RpciwgJ3B5dmVudi5jZmcnKQorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3cnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgnaG9tZSA9ICVzXG4nICUgY29udGV4dC5weXRob25fZGlyKQorICAgICAgICAgICAgaWYgc2VsZi5zeXN0ZW1fc2l0ZV9wYWNrYWdlczoKKyAgICAgICAgICAgICAgICBpbmNsID0gJ3RydWUnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluY2wgPSAnZmFsc2UnCisgICAgICAgICAgICBmLndyaXRlKCdpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzID0gJXNcbicgJSBpbmNsKQorICAgICAgICAgICAgZi53cml0ZSgndmVyc2lvbiA9ICVkLiVkLiVkXG4nICUgc3lzLnZlcnNpb25faW5mb1s6M10pCisKKyAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgIGRlZiBpbmNsdWRlX2JpbmFyeShzZWxmLCBmKToKKyAgICAgICAgICAgIGlmIGYuZW5kc3dpdGgoKCcucHlkJywgJy5kbGwnKSk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnN0YXJ0c3dpdGgoJ3B5dGhvbicpIGFuZCBmLmVuZHN3aXRoKCcuZXhlJykKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBzeW1saW5rX29yX2NvcHkoc2VsZiwgc3JjLCBkc3QpOgorICAgICAgICAiIiIKKyAgICAgICAgVHJ5IHN5bWxpbmtpbmcgYSBmaWxlLCBhbmQgaWYgdGhhdCBmYWlscywgZmFsbCBiYWNrIHRvIGNvcHlpbmcuCisgICAgICAgICIiIgorICAgICAgICBmb3JjZV9jb3B5ID0gbm90IHNlbGYuc3ltbGlua3MKKyAgICAgICAgaWYgbm90IGZvcmNlX2NvcHk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNsaW5rKGRzdCk6ICMgY2FuJ3QgbGluayB0byBpdHNlbGYhCisgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBkc3QpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOiAgICMgbWF5IG5lZWQgdG8gdXNlIGEgbW9yZSBzcGVjaWZpYyBleGNlcHRpb24KKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnVW5hYmxlIHRvIHN5bWxpbmsgJXIgdG8gJXInLCBzcmMsIGRzdCkKKyAgICAgICAgICAgICAgICBmb3JjZV9jb3B5ID0gVHJ1ZQorICAgICAgICBpZiBmb3JjZV9jb3B5OgorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNyYywgZHN0KQorCisgICAgZGVmIHNldHVwX3B5dGhvbihzZWxmLCBjb250ZXh0KToKKyAgICAgICAgIiIiCisgICAgICAgIFNldCB1cCBhIFB5dGhvbiBleGVjdXRhYmxlIGluIHRoZSBlbnZpcm9ubWVudC4KKworICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAiIiIKKyAgICAgICAgYmlucGF0aCA9IGNvbnRleHQuYmluX3BhdGgKKyAgICAgICAgZXhlbmFtZSA9IGNvbnRleHQucHl0aG9uX2V4ZQorICAgICAgICBwYXRoID0gY29udGV4dC5lbnZfZXhlCisgICAgICAgIGNvcGllciA9IHNlbGYuc3ltbGlua19vcl9jb3B5CisgICAgICAgIGNvcGllcihjb250ZXh0LmV4ZWN1dGFibGUsIHBhdGgpCisgICAgICAgIGRpcm5hbWUgPSBjb250ZXh0LnB5dGhvbl9kaXIKKyAgICAgICAgaWYgb3MubmFtZSAhPSAnbnQnOgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNsaW5rKHBhdGgpOgorICAgICAgICAgICAgICAgIG9zLmNobW9kKHBhdGgsIDBvNzU1KQorICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiAoJ3B5dGhvbicsICdweXRob24zJyk6CisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBzdWZmaXgpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKGV4ZW5hbWUsIHBhdGgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdWJkaXIgPSAnRExMcycKKyAgICAgICAgICAgIGluY2x1ZGUgPSBzZWxmLmluY2x1ZGVfYmluYXJ5CisgICAgICAgICAgICBmaWxlcyA9IFtmIGZvciBmIGluIG9zLmxpc3RkaXIoZGlybmFtZSkgaWYgaW5jbHVkZShmKV0KKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBmKQorICAgICAgICAgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBmKQorICAgICAgICAgICAgICAgIGlmIGRzdCAhPSBjb250ZXh0LmVudl9leGU6ICAjIGFscmVhZHkgZG9uZSwgYWJvdmUKKyAgICAgICAgICAgICAgICAgICAgY29waWVyKHNyYywgZHN0KQorICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBzdWJkaXIpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGRpcm5hbWUpOgorICAgICAgICAgICAgICAgIGZpbGVzID0gW2YgZm9yIGYgaW4gb3MubGlzdGRpcihkaXJuYW1lKSBpZiBpbmNsdWRlKGYpXQorICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgZikKKyAgICAgICAgICAgICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGJpbnBhdGgsIGYpCisgICAgICAgICAgICAgICAgICAgIGNvcGllcihzcmMsIGRzdCkKKyAgICAgICAgICAgICMgY29weSBpbml0LnRjbCBvdmVyCisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhjb250ZXh0LnB5dGhvbl9kaXIpOgorICAgICAgICAgICAgICAgIGlmICdpbml0LnRjbCcgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIHRjbGRpciA9IG9zLnBhdGguYmFzZW5hbWUocm9vdCkKKyAgICAgICAgICAgICAgICAgICAgdGNsZGlyID0gb3MucGF0aC5qb2luKGNvbnRleHQuZW52X2RpciwgJ0xpYicsIHRjbGRpcikKKyAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnModGNsZGlyKQorICAgICAgICAgICAgICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4ocm9vdCwgJ2luaXQudGNsJykKKyAgICAgICAgICAgICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRjbGRpciwgJ2luaXQudGNsJykKKyAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNyYywgZHN0KQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgZGVmIHNldHVwX3NjcmlwdHMoc2VsZiwgY29udGV4dCk6CisgICAgICAgICIiIgorICAgICAgICBTZXQgdXAgc2NyaXB0cyBpbnRvIHRoZSBjcmVhdGVkIGVudmlyb25tZW50IGZyb20gYSBkaXJlY3RvcnkuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaW5zdGFsbHMgdGhlIGRlZmF1bHQgc2NyaXB0cyBpbnRvIHRoZSBlbnZpcm9ubWVudAorICAgICAgICBiZWluZyBjcmVhdGVkLiBZb3UgY2FuIHByZXZlbnQgdGhlIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGJ5IG92ZXJyaWRpbmcKKyAgICAgICAgdGhpcyBtZXRob2QgaWYgeW91IHJlYWxseSBuZWVkIHRvLCBvciBpZiB5b3UgbmVlZCB0byBzcGVjaWZ5CisgICAgICAgIGEgZGlmZmVyZW50IGxvY2F0aW9uIGZvciB0aGUgc2NyaXB0cyB0byBpbnN0YWxsLiBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgJ3NjcmlwdHMnIGRpcmVjdG9yeSBpbiB0aGUgdmVudiBwYWNrYWdlIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZgorICAgICAgICBzY3JpcHRzIHRvIGluc3RhbGwuCisgICAgICAgICIiIgorICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgJ3NjcmlwdHMnKQorICAgICAgICBzZWxmLmluc3RhbGxfc2NyaXB0cyhjb250ZXh0LCBwYXRoKQorCisgICAgZGVmIHBvc3Rfc2V0dXAoc2VsZiwgY29udGV4dCk6CisgICAgICAgICIiIgorICAgICAgICBIb29rIGZvciBwb3N0LXNldHVwIG1vZGlmaWNhdGlvbiBvZiB0aGUgdmVudi4gU3ViY2xhc3NlcyBtYXkgaW5zdGFsbAorICAgICAgICBhZGRpdGlvbmFsIHBhY2thZ2VzIG9yIHNjcmlwdHMgaGVyZSwgYWRkIGFjdGl2YXRpb24gc2hlbGwgc2NyaXB0cywgZXRjLgorCisgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICIiIgorICAgICAgICBwYXNzCisKKyAgICBkZWYgcmVwbGFjZV92YXJpYWJsZXMoc2VsZiwgdGV4dCwgY29udGV4dCk6CisgICAgICAgICIiIgorICAgICAgICBSZXBsYWNlIHZhcmlhYmxlIHBsYWNlaG9sZGVycyBpbiBzY3JpcHQgdGV4dCB3aXRoIGNvbnRleHQtc3BlY2lmaWMKKyAgICAgICAgdmFyaWFibGVzLgorCisgICAgICAgIFJldHVybiB0aGUgdGV4dCBwYXNzZWQgaW4gLCBidXQgd2l0aCB2YXJpYWJsZXMgcmVwbGFjZWQuCisKKyAgICAgICAgOnBhcmFtIHRleHQ6IFRoZSB0ZXh0IGluIHdoaWNoIHRvIHJlcGxhY2UgcGxhY2Vob2xkZXIgdmFyaWFibGVzLgorICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAiIiIKKyAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgnX19WRU5WX0RJUl9fJywgY29udGV4dC5lbnZfZGlyKQorICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCdfX1ZFTlZfTkFNRV9fJywgY29udGV4dC5wcm9tcHQpCisgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ19fVkVOVl9CSU5fTkFNRV9fJywgY29udGV4dC5iaW5fbmFtZSkKKyAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgnX19WRU5WX1BZVEhPTl9fJywgY29udGV4dC5lbnZfZXhlKQorICAgICAgICByZXR1cm4gdGV4dAorCisgICAgZGVmIGluc3RhbGxfc2NyaXB0cyhzZWxmLCBjb250ZXh0LCBwYXRoKToKKyAgICAgICAgIiIiCisgICAgICAgIEluc3RhbGwgc2NyaXB0cyBpbnRvIHRoZSBjcmVhdGVkIGVudmlyb25tZW50IGZyb20gYSBkaXJlY3RvcnkuCisKKyAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgOnBhcmFtIHBhdGg6ICAgIEFic29sdXRlIHBhdGhuYW1lIG9mIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgU2NyaXB0cyBpbiB0aGUgJ2NvbW1vbicgc3ViZGlyZWN0b3J5IG9mIHRoaXMgZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRob3NlIGluIHRoZSBkaXJlY3RvcnkgbmFtZWQgZm9yIHRoZSBwbGF0Zm9ybQorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcnVuIG9uLCBhcmUgaW5zdGFsbGVkIGluIHRoZSBjcmVhdGVkIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgUGxhY2Vob2xkZXIgdmFyaWFibGVzIGFyZSByZXBsYWNlZCB3aXRoIGVudmlyb25tZW50LQorICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdmFsdWVzLgorICAgICAgICAiIiIKKyAgICAgICAgYmlucGF0aCA9IGNvbnRleHQuYmluX3BhdGgKKyAgICAgICAgcGxlbiA9IGxlbihwYXRoKQorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoKToKKyAgICAgICAgICAgIGlmIHJvb3QgPT0gcGF0aDogIyBhdCB0b3AtbGV2ZWwsIHJlbW92ZSBpcnJlbGV2YW50IGRpcnMKKyAgICAgICAgICAgICAgICBmb3IgZCBpbiBkaXJzWzpdOgorICAgICAgICAgICAgICAgICAgICBpZiBkIG5vdCBpbiAoJ2NvbW1vbicsIG9zLm5hbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZSAjIGlnbm9yZSBmaWxlcyBpbiB0b3AgbGV2ZWwKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIHNyY2ZpbGUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikKKyAgICAgICAgICAgICAgICBzdWZmaXggPSByb290W3BsZW46XS5zcGxpdChvcy5zZXApWzI6XQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdWZmaXg6CisgICAgICAgICAgICAgICAgICAgIGRzdGRpciA9IGJpbnBhdGgKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkc3RkaXIgPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgKnN1ZmZpeCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0ZGlyKToKKyAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoZHN0ZGlyKQorICAgICAgICAgICAgICAgIGRzdGZpbGUgPSBvcy5wYXRoLmpvaW4oZHN0ZGlyLCBmKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzcmNmaWxlLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKKyAgICAgICAgICAgICAgICBpZiBzcmNmaWxlLmVuZHN3aXRoKCcuZXhlJyk6CisgICAgICAgICAgICAgICAgICAgIG1vZGUgPSAnd2InCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9ICd3JworICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVwbGFjZV92YXJpYWJsZXMoZGF0YSwgY29udGV4dCkKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZHN0ZmlsZSwgbW9kZSkgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShkYXRhKQorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNmaWxlLCBkc3RmaWxlKQorCisKK2RlZiBjcmVhdGUoZW52X2Rpciwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLCBzeW1saW5rcz1GYWxzZSk6CisgICAgIiIiCisgICAgQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4KKworICAgIEJ5IGRlZmF1bHQsIG1ha2VzIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcyBkaXIgYXZhaWxhYmxlIHRvCisgICAgdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQuCisKKyAgICA6cGFyYW0gZW52X2RpcjogVGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IGluLgorICAgIDpwYXJhbSBzeXN0ZW1fc2l0ZV9wYWNrYWdlczogSWYgVHJ1ZSwgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXIgaXMgYXZhaWxhYmxlIHRvIHRoZSBlbnZpcm9ubWVudC4KKyAgICA6cGFyYW0gY2xlYXI6IElmIFRydWUgYW5kIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGV4aXN0cywgaXQgaXMgZGVsZXRlZC4KKyAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgaWYgdGhlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvciBpcworICAgICAgICAgICAgICAgICAgcmFpc2VkLgorICAgIDpwYXJhbSBzeW1saW5rczogSWYgVHJ1ZSwgYXR0ZW1wdCB0byBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHkgZmlsZXMgaW50bworICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgICAiIiIKKyAgICBidWlsZGVyID0gRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1zeXN0ZW1fc2l0ZV9wYWNrYWdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI9Y2xlYXIsIHN5bWxpbmtzPXN5bWxpbmtzKQorICAgIGJ1aWxkZXIuY3JlYXRlKGVudl9kaXIpCisKK2RlZiBtYWluKGFyZ3M9Tm9uZSk6CisgICAgY29tcGF0aWJsZSA9IFRydWUKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgICAgICBjb21wYXRpYmxlID0gRmFsc2UKKyAgICBlbGlmIG5vdCBoYXNhdHRyKHN5cywgJ2Jhc2VfcHJlZml4Jyk6CisgICAgICAgIGNvbXBhdGlibGUgPSBGYWxzZQorICAgIGlmIG5vdCBjb21wYXRpYmxlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUaGlzIHNjcmlwdCBpcyBvbmx5IGZvciB1c2Ugd2l0aCBQeXRob24gMy4zJykKKyAgICBlbHNlOgorICAgICAgICBpbXBvcnQgYXJncGFyc2UKKworICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPV9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudHMgaW4gb25lIG9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vcmUgdGFyZ2V0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yaWVzLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz0nT25jZSBhbiBlbnZpcm9ubWVudCBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlZCwgeW91IG1heSB3aXNoIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmF0ZSBpdCwgZS5nLiBieSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNpbmcgYW4gYWN0aXZhdGUgc2NyaXB0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbiBpdHMgYmluIGRpcmVjdG9yeS4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdkaXJzJywgbWV0YXZhcj0nRU5WX0RJUicsIG5hcmdzPScrJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc3lzdGVtLXNpdGUtcGFja2FnZXMnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3N5c3RlbV9zaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbSBzaXRlLXBhY2thZ2VzIGRpci4nKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICB1c2Vfc3ltbGlua3MgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdXNlX3N5bWxpbmtzID0gVHJ1ZQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXN5bWxpbmtzJywgZGVmYXVsdD11c2Vfc3ltbGlua3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nc3ltbGlua3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RyeSB0byB1c2Ugc3ltbGlua3MgcmF0aGVyIHRoYW4gY29waWVzLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2hlbiBzeW1saW5rcyBhcmUgbm90IHRoZSBkZWZhdWx0IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHBsYXRmb3JtLicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2xlYXInLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NsZWFyJywgaGVscD0nRGVsZXRlIHRoZSBlbnZpcm9ubWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RvcnkgaWYgaXQgYWxyZWFkeSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdHMuIElmIG5vdCBzcGVjaWZpZWQgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvcicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBpcyByYWlzZWQuJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS11cGdyYWRlJywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1cGdyYWRlJywgaGVscD0nVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuJykKKyAgICAgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisgICAgICAgIGlmIG9wdGlvbnMudXBncmFkZSBhbmQgb3B0aW9ucy5jbGVhcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3lvdSBjYW5ub3Qgc3VwcGx5IC0tdXBncmFkZSBhbmQgLS1jbGVhciB0b2dldGhlci4nKQorICAgICAgICBidWlsZGVyID0gRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1vcHRpb25zLnN5c3RlbV9zaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1vcHRpb25zLmNsZWFyLCBzeW1saW5rcz1vcHRpb25zLnN5bWxpbmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRlPW9wdGlvbnMudXBncmFkZSkKKyAgICAgICAgZm9yIGQgaW4gb3B0aW9ucy5kaXJzOgorICAgICAgICAgICAgYnVpbGRlci5jcmVhdGUoZCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICByYyA9IDEKKyAgICB0cnk6CisgICAgICAgIG1haW4oKQorICAgICAgICByYyA9IDAKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHByaW50KCdFcnJvcjogJXMnICUgZSwgZmlsZT1zeXMuc3RkZXJyKQorICAgIHN5cy5leGl0KHJjKQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvX19tYWluX18ucHkgYi9MaWIvdmVudi9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTI0MjNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvX19tYWluX18ucHkKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IHN5cworZnJvbSAuIGltcG9ydCBtYWluCisKK3JjID0gMQordHJ5OgorICAgIG1haW4oKQorICAgIHJjID0gMAorZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgIHByaW50KCdFcnJvcjogJXMnICUgZSwgZmlsZT1zeXMuc3RkZXJyKQorc3lzLmV4aXQocmMpCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L0FjdGl2YXRlLnBzMSBiL0xpYi92ZW52L3NjcmlwdHMvbnQvQWN0aXZhdGUucHMxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNWVmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL250L0FjdGl2YXRlLnBzMQpAQCAtMCwwICsxLDM0IEBACiskZW52OlZJUlRVQUxfRU5WPSJfX1ZFTlZfRElSX18iDQorDQorIyBSZXZlcnQgdG8gb3JpZ2luYWwgdmFsdWVzDQoraWYgKFRlc3QtUGF0aCBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUKSB7DQorICAgIGNvcHktaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUIGZ1bmN0aW9uOnByb21wdA0KKyAgICByZW1vdmUtaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgZW52OlBZVEhPTkhPTUUNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QQVRIKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEggZW52OlBBVEgNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QQVRIDQorfQ0KKw0KKyMgU2V0IHRoZSBwcm9tcHQgdG8gaW5jbHVkZSB0aGUgZW52IG5hbWUNCitjb3B5LWl0ZW0gZnVuY3Rpb246cHJvbXB0IGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQNCitmdW5jdGlvbiBwcm9tcHQgew0KKyAgICBXcml0ZS1Ib3N0IC1Ob05ld2xpbmUgLUZvcmVncm91bmRDb2xvciBHcmVlbiAnW19fVkVOVl9OQU1FX19dJw0KKyAgICBfT0xEX1ZJUlRVQUxfUFJPTVBUDQorfQ0KKw0KKyMgQ2xlYXIgUFlUSE9OSE9NRQ0KK2lmIChUZXN0LVBhdGggZW52OlBZVEhPTkhPTUUpIHsNCisgICAgY29weS1pdGVtIGVudjpQWVRIT05IT01FIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRQ0KKyAgICByZW1vdmUtaXRlbSBlbnY6UFlUSE9OSE9NRQ0KK30NCisNCisjIEFkZCB0aGUgdmVudiB0byB0aGUgUEFUSA0KK2NvcHktaXRlbSBlbnY6UEFUSCBlbnY6X09MRF9WSVJUVUFMX1BBVEgNCiskZW52OlBBVEggPSAiJGVudjpWSVJUVUFMX0VOVlxfX1ZFTlZfQklOX05BTUVfXzskZW52OlBBVEgiDQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9udC9EZWFjdGl2YXRlLnBzMSBiL0xpYi92ZW52L3NjcmlwdHMvbnQvRGVhY3RpdmF0ZS5wczEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QxZTk2YgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvRGVhY3RpdmF0ZS5wczEKQEAgLTAsMCArMSwxOSBAQAorIyBSZXZlcnQgdG8gb3JpZ2luYWwgdmFsdWVzDQoraWYgKFRlc3QtUGF0aCBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUKSB7DQorICAgIGNvcHktaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUIGZ1bmN0aW9uOnByb21wdA0KKyAgICByZW1vdmUtaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgZW52OlBZVEhPTkhPTUUNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QQVRIKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEggZW52OlBBVEgNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QQVRIDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52OlZJUlRVQUxfRU5WKSB7DQorICAgIHJlbW92ZS1pdGVtIGVudjpWSVJUVUFMX0VOVg0KK30NCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L2FjdGl2YXRlLmJhdCBiL0xpYi92ZW52L3NjcmlwdHMvbnQvYWN0aXZhdGUuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NWU2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL250L2FjdGl2YXRlLmJhdApAQCAtMCwwICsxLDMxIEBACitAZWNobyBvZmYNCitzZXQgVklSVFVBTF9FTlY9X19WRU5WX0RJUl9fDQorDQoraWYgbm90IGRlZmluZWQgUFJPTVBUICgNCisgICAgc2V0IFBST01QVD0kUCRHDQorKQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BST01QVCAoDQorICAgIHNldCBQUk9NUFQ9JV9PTERfVklSVFVBTF9QUk9NUFQlDQorKQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgKA0KKyAgICAgc2V0IFBZVEhPTkhPTUU9JV9PTERfVklSVFVBTF9QWVRIT05IT01FJQ0KKykNCisNCitzZXQgX09MRF9WSVJUVUFMX1BST01QVD0lUFJPTVBUJQ0KK3NldCBQUk9NUFQ9X19WRU5WX05BTUVfXyVQUk9NUFQlDQorDQoraWYgZGVmaW5lZCBQWVRIT05IT01FICgNCisgICAgIHNldCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRT0lUFlUSE9OSE9NRSUNCisgICAgIHNldCBQWVRIT05IT01FPQ0KKykNCisNCitpZiBkZWZpbmVkIF9PTERfVklSVFVBTF9QQVRIIHNldCBQQVRIPSVfT0xEX1ZJUlRVQUxfUEFUSCU7IGdvdG8gU0tJUFBBVEgNCisNCitzZXQgX09MRF9WSVJUVUFMX1BBVEg9JVBBVEglDQorDQorOlNLSVBQQVRIDQorc2V0IFBBVEg9JVZJUlRVQUxfRU5WJVxfX1ZFTlZfQklOX05BTUVfXzslUEFUSCUNCisNCis6RU5EDQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9udC9kZWFjdGl2YXRlLmJhdCBiL0xpYi92ZW52L3NjcmlwdHMvbnQvZGVhY3RpdmF0ZS5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJkYTViMQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvZGVhY3RpdmF0ZS5iYXQKQEAgLTAsMCArMSwxNyBAQAorQGVjaG8gb2ZmDQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUFJPTVBUICgNCisgICAgc2V0IFBST01QVD0lX09MRF9WSVJUVUFMX1BST01QVCUNCispDQorc2V0IF9PTERfVklSVFVBTF9QUk9NUFQ9DQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSAoDQorICAgICBzZXQgUFlUSE9OSE9NRT0lX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUlDQorICAgICBzZXQgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUU9DQorKQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BBVEggc2V0IFBBVEg9JV9PTERfVklSVFVBTF9QQVRIJQ0KKw0KK3NldCBfT0xEX1ZJUlRVQUxfUEFUSD0NCisNCis6RU5EDQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9udC9weWRvYy5weSBiL0xpYi92ZW52L3NjcmlwdHMvbnQvcHlkb2MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmMmRiNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvcHlkb2MucHkKQEAgLTAsMCArMSw0IEBACisjIV9fVkVOVl9QWVRIT05fXworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgc3lzLCBweWRvYworICAgIHN5cy5leGl0KHB5ZG9jLmNsaSgpKQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9hY3RpdmF0ZSBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvYWN0aXZhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI0MTQ1MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvYWN0aXZhdGUKQEAgLTAsMCArMSw3NiBAQAorIyBUaGlzIGZpbGUgbXVzdCBiZSB1c2VkIHdpdGggInNvdXJjZSBiaW4vYWN0aXZhdGUiICpmcm9tIGJhc2gqCisjIHlvdSBjYW5ub3QgcnVuIGl0IGRpcmVjdGx5CisKK2RlYWN0aXZhdGUgKCkgeworICAgICMgcmVzZXQgb2xkIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgIGlmIFsgLW4gIiRfT0xEX1ZJUlRVQUxfUEFUSCIgXSA7IHRoZW4KKyAgICAgICAgUEFUSD0iJF9PTERfVklSVFVBTF9QQVRIIgorICAgICAgICBleHBvcnQgUEFUSAorICAgICAgICB1bnNldCBfT0xEX1ZJUlRVQUxfUEFUSAorICAgIGZpCisgICAgaWYgWyAtbiAiJF9PTERfVklSVFVBTF9QWVRIT05IT01FIiBdIDsgdGhlbgorICAgICAgICBQWVRIT05IT01FPSIkX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUiCisgICAgICAgIGV4cG9ydCBQWVRIT05IT01FCisgICAgICAgIHVuc2V0IF9PTERfVklSVFVBTF9QWVRIT05IT01FCisgICAgZmkKKworICAgICMgVGhpcyBzaG91bGQgZGV0ZWN0IGJhc2ggYW5kIHpzaCwgd2hpY2ggaGF2ZSBhIGhhc2ggY29tbWFuZCB0aGF0IG11c3QKKyAgICAjIGJlIGNhbGxlZCB0byBnZXQgaXQgdG8gZm9yZ2V0IHBhc3QgY29tbWFuZHMuICBXaXRob3V0IGZvcmdldHRpbmcKKyAgICAjIHBhc3QgY29tbWFuZHMgdGhlICRQQVRIIGNoYW5nZXMgd2UgbWFkZSBtYXkgbm90IGJlIHJlc3BlY3RlZAorICAgIGlmIFsgLW4gIiRCQVNIIiAtbyAtbiAiJFpTSF9WRVJTSU9OIiBdIDsgdGhlbgorICAgICAgICBoYXNoIC1yCisgICAgZmkKKworICAgIGlmIFsgLW4gIiRfT0xEX1ZJUlRVQUxfUFMxIiBdIDsgdGhlbgorICAgICAgICBQUzE9IiRfT0xEX1ZJUlRVQUxfUFMxIgorICAgICAgICBleHBvcnQgUFMxCisgICAgICAgIHVuc2V0IF9PTERfVklSVFVBTF9QUzEKKyAgICBmaQorCisgICAgdW5zZXQgVklSVFVBTF9FTlYKKyAgICBpZiBbICEgIiQxIiA9ICJub25kZXN0cnVjdGl2ZSIgXSA7IHRoZW4KKyAgICAjIFNlbGYgZGVzdHJ1Y3QhCisgICAgICAgIHVuc2V0IC1mIGRlYWN0aXZhdGUKKyAgICBmaQorfQorCisjIHVuc2V0IGlycmVsYXZlbnQgdmFyaWFibGVzCitkZWFjdGl2YXRlIG5vbmRlc3RydWN0aXZlCisKK1ZJUlRVQUxfRU5WPSJfX1ZFTlZfRElSX18iCitleHBvcnQgVklSVFVBTF9FTlYKKworX09MRF9WSVJUVUFMX1BBVEg9IiRQQVRIIgorUEFUSD0iJFZJUlRVQUxfRU5WL19fVkVOVl9CSU5fTkFNRV9fOiRQQVRIIgorZXhwb3J0IFBBVEgKKworIyB1bnNldCBQWVRIT05IT01FIGlmIHNldAorIyB0aGlzIHdpbGwgZmFpbCBpZiBQWVRIT05IT01FIGlzIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nICh3aGljaCBpcyBiYWQgYW55d2F5KQorIyBjb3VsZCB1c2UgYGlmIChzZXQgLXU7IDogJFBZVEhPTkhPTUUpIDtgIGluIGJhc2gKK2lmIFsgLW4gIiRQWVRIT05IT01FIiBdIDsgdGhlbgorICAgIF9PTERfVklSVFVBTF9QWVRIT05IT01FPSIkUFlUSE9OSE9NRSIKKyAgICB1bnNldCBQWVRIT05IT01FCitmaQorCitpZiBbIC16ICIkVklSVFVBTF9FTlZfRElTQUJMRV9QUk9NUFQiIF0gOyB0aGVuCisgICAgX09MRF9WSVJUVUFMX1BTMT0iJFBTMSIKKyAgICBpZiBbICJ4X19WRU5WX05BTUVfXyIgIT0geCBdIDsgdGhlbgorCVBTMT0iX19WRU5WX05BTUVfXyRQUzEiCisgICAgZWxzZQorICAgIGlmIFsgImBiYXNlbmFtZSBcIiRWSVJUVUFMX0VOVlwiYCIgPSAiX18iIF0gOyB0aGVuCisgICAgICAgICMgc3BlY2lhbCBjYXNlIGZvciBBc3BlbiBtYWdpYyBkaXJlY3RvcmllcworICAgICAgICAjIHNlZSBodHRwOi8vd3d3LnpldGFkZXYuY29tL3NvZnR3YXJlL2FzcGVuLworICAgICAgICBQUzE9IltgYmFzZW5hbWUgXGBkaXJuYW1lIFwiJFZJUlRVQUxfRU5WXCJcYGBdICRQUzEiCisgICAgZWxzZQorICAgICAgICBQUzE9IihgYmFzZW5hbWUgXCIkVklSVFVBTF9FTlZcImApJFBTMSIKKyAgICBmaQorICAgIGZpCisgICAgZXhwb3J0IFBTMQorZmkKKworIyBUaGlzIHNob3VsZCBkZXRlY3QgYmFzaCBhbmQgenNoLCB3aGljaCBoYXZlIGEgaGFzaCBjb21tYW5kIHRoYXQgbXVzdAorIyBiZSBjYWxsZWQgdG8gZ2V0IGl0IHRvIGZvcmdldCBwYXN0IGNvbW1hbmRzLiAgV2l0aG91dCBmb3JnZXR0aW5nCisjIHBhc3QgY29tbWFuZHMgdGhlICRQQVRIIGNoYW5nZXMgd2UgbWFkZSBtYXkgbm90IGJlIHJlc3BlY3RlZAoraWYgWyAtbiAiJEJBU0giIC1vIC1uICIkWlNIX1ZFUlNJT04iIF0gOyB0aGVuCisgICAgaGFzaCAtcgorZmkKZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvcHlkb2MgYi9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L3B5ZG9jCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkyMzM3NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L3B5ZG9jCkBAIC0wLDAgKzEsNSBAQAorIyFfX1ZFTlZfUFlUSE9OX18KK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHN5cywgcHlkb2MKKyAgICBzeXMuZXhpdChweWRvYy5jbGkoKSkKKwpkaWZmIC0tZ2l0IGEvTGliL3dlYmJyb3dzZXIucHkgYi9MaWIvd2ViYnJvd3Nlci5weQppbmRleCA2Zjk2N2I2Li5jZTViNDhlIDEwMDY0NAotLS0gYS9MaWIvd2ViYnJvd3Nlci5weQorKysgYi9MaWIvd2ViYnJvd3Nlci5weQpAQCAtMjMyLDE3ICsyMzIsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PShzZWxmLnJlZGlyZWN0X3N0ZG91dCBhbmQgaW5vdXQgb3IgTm9uZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1pbm91dCwgc3RhcnRfbmV3X3Nlc3Npb249VHJ1ZSkKICAgICAgICAgaWYgcmVtb3RlOgotICAgICAgICAgICAgIyB3YWl0IGZpdmUgc2Vjb25kcy4gSWYgdGhlIHN1YnByb2Nlc3MgaXMgbm90IGZpbmlzaGVkLCB0aGUKKyAgICAgICAgICAgICMgd2FpdCBhdCBtb3N0IGZpdmUgc2Vjb25kcy4gSWYgdGhlIHN1YnByb2Nlc3MgaXMgbm90IGZpbmlzaGVkLCB0aGUKICAgICAgICAgICAgICMgcmVtb3RlIGludm9jYXRpb24gaGFzIChob3BlZnVsbHkpIHN0YXJ0ZWQgYSBuZXcgaW5zdGFuY2UuCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0gICAgICAgICAgICByYyA9IHAucG9sbCgpCi0gICAgICAgICAgICBpZiByYyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoNCkKLSAgICAgICAgICAgICAgICByYyA9IHAucG9sbCgpCi0gICAgICAgICAgICAgICAgaWYgcmMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgICMgaWYgcmVtb3RlIGNhbGwgZmFpbGVkLCBvcGVuKCkgd2lsbCB0cnkgZGlyZWN0IGludm9jYXRpb24KLSAgICAgICAgICAgIHJldHVybiBub3QgcmMKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYyA9IHAud2FpdCg1KQorICAgICAgICAgICAgICAgICMgaWYgcmVtb3RlIGNhbGwgZmFpbGVkLCBvcGVuKCkgd2lsbCB0cnkgZGlyZWN0IGludm9jYXRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4gbm90IHJjCisgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbGlmIHNlbGYuYmFja2dyb3VuZDoKICAgICAgICAgICAgIGlmIHAucG9sbCgpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTI5OSw2ICsyOTYsMTggQEAKICAgICBiYWNrZ3JvdW5kID0gVHJ1ZQogCiAKK2NsYXNzIENocm9tZShVbml4QnJvd3Nlcik6CisgICAgIkxhdW5jaGVyIGNsYXNzIGZvciBHb29nbGUgQ2hyb21lIGJyb3dzZXIuIgorCisgICAgcmVtb3RlX2FyZ3MgPSBbJyVhY3Rpb24nLCAnJXMnXQorICAgIHJlbW90ZV9hY3Rpb24gPSAiIgorICAgIHJlbW90ZV9hY3Rpb25fbmV3d2luID0gIi0tbmV3LXdpbmRvdyIKKyAgICByZW1vdGVfYWN0aW9uX25ld3RhYiA9ICIiCisgICAgYmFja2dyb3VuZCA9IFRydWUKKworQ2hyb21pdW0gPSBDaHJvbWUKKworCiBjbGFzcyBPcGVyYShVbml4QnJvd3Nlcik6CiAgICAgIkxhdW5jaGVyIGNsYXNzIGZvciBPcGVyYSBicm93c2VyLiIKIApAQCAtNDM2LDYgKzQ0NSwxNCBAQAogCiBkZWYgcmVnaXN0ZXJfWF9icm93c2VycygpOgogCisgICAgIyB1c2UgeGRnLW9wZW4gaWYgYXJvdW5kCisgICAgaWYgX2lzY29tbWFuZCgieGRnLW9wZW4iKToKKyAgICAgICAgcmVnaXN0ZXIoInhkZy1vcGVuIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoInhkZy1vcGVuIikpCisKKyAgICAjIFRoZSBkZWZhdWx0IEdOT01FMyBicm93c2VyCisgICAgaWYgIkdOT01FX0RFU0tUT1BfU0VTU0lPTl9JRCIgaW4gb3MuZW52aXJvbiBhbmQgX2lzY29tbWFuZCgiZ3Zmcy1vcGVuIik6CisgICAgICAgIHJlZ2lzdGVyKCJndmZzLW9wZW4iLCBOb25lLCBCYWNrZ3JvdW5kQnJvd3NlcigiZ3Zmcy1vcGVuIikpCisKICAgICAjIFRoZSBkZWZhdWx0IEdOT01FIGJyb3dzZXIKICAgICBpZiAiR05PTUVfREVTS1RPUF9TRVNTSU9OX0lEIiBpbiBvcy5lbnZpcm9uIGFuZCBfaXNjb21tYW5kKCJnbm9tZS1vcGVuIik6CiAgICAgICAgIHJlZ2lzdGVyKCJnbm9tZS1vcGVuIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoImdub21lLW9wZW4iKSkKQEAgLTQ2Niw2ICs0ODMsMTEgQEAKICAgICBpZiBfaXNjb21tYW5kKCJza2lwc3RvbmUiKToKICAgICAgICAgcmVnaXN0ZXIoInNraXBzdG9uZSIsIE5vbmUsIEJhY2tncm91bmRCcm93c2VyKCJza2lwc3RvbmUiKSkKIAorICAgICMgR29vZ2xlIENocm9tZS9DaHJvbWl1bSBicm93c2VycworICAgIGZvciBicm93c2VyIGluICgiZ29vZ2xlLWNocm9tZSIsICJjaHJvbWUiLCAiY2hyb21pdW0iLCAiY2hyb21pdW0tYnJvd3NlciIpOgorICAgICAgICBpZiBfaXNjb21tYW5kKGJyb3dzZXIpOgorICAgICAgICAgICAgcmVnaXN0ZXIoYnJvd3NlciwgTm9uZSwgQ2hyb21lKGJyb3dzZXIpKQorCiAgICAgIyBPcGVyYSwgcXVpdGUgcG9wdWxhcgogICAgIGlmIF9pc2NvbW1hbmQoIm9wZXJhIik6CiAgICAgICAgIHJlZ2lzdGVyKCJvcGVyYSIsIE5vbmUsIE9wZXJhKCJvcGVyYSIpKQpkaWZmIC0tZ2l0IGEvTGliL3dzZ2lyZWYuZWdnLWluZm8gYi9MaWIvd3NnaXJlZi5lZ2ctaW5mbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBiNzg5My4uMDAwMDAwMAotLS0gYS9MaWIvd3NnaXJlZi5lZ2ctaW5mbworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotTWV0YWRhdGEtVmVyc2lvbjogMS4wCi1OYW1lOiB3c2dpcmVmCi1WZXJzaW9uOiAwLjEuMgotU3VtbWFyeTogV1NHSSAoUEVQIDMzMykgUmVmZXJlbmNlIExpYnJhcnkKLUF1dGhvcjogUGhpbGxpcCBKLiBFYnkKLUF1dGhvci1lbWFpbDogd2ViLXNpZ0BweXRob24ub3JnCi1MaWNlbnNlOiBQU0Ygb3IgWlBMCi1QbGF0Zm9ybTogVU5LTk9XTgpkaWZmIC0tZ2l0IGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weSBiL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKaW5kZXggYWY4MmY5NS4uYTYwMTVmYiAxMDA2NDQKLS0tIGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQorKysgYi9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CkBAIC0xNCwxMyArMTQsMTQgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1cmxsaWIucGFyc2UKIGZyb20gd3NnaXJlZi5oYW5kbGVycyBpbXBvcnQgU2ltcGxlSGFuZGxlcgorZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX2ltcGxlbWVudGF0aW9uCiAKIF9fdmVyc2lvbl9fID0gIjAuMiIKIF9fYWxsX18gPSBbJ1dTR0lTZXJ2ZXInLCAnV1NHSVJlcXVlc3RIYW5kbGVyJywgJ2RlbW9fYXBwJywgJ21ha2Vfc2VydmVyJ10KIAogCiBzZXJ2ZXJfdmVyc2lvbiA9ICJXU0dJU2VydmVyLyIgKyBfX3ZlcnNpb25fXwotc3lzX3ZlcnNpb24gPSAiUHl0aG9uLyIgKyBzeXMudmVyc2lvbi5zcGxpdCgpWzBdCitzeXNfdmVyc2lvbiA9IHB5dGhvbl9pbXBsZW1lbnRhdGlvbigpICsgIi8iICsgc3lzLnZlcnNpb24uc3BsaXQoKVswXQogc29mdHdhcmVfdmVyc2lvbiA9IHNlcnZlcl92ZXJzaW9uICsgJyAnICsgc3lzX3ZlcnNpb24KIAogCmRpZmYgLS1naXQgYS9MaWIveGRybGliLnB5IGIvTGliL3hkcmxpYi5weQppbmRleCA0ZTQ4Njc3Li44NmU2MjRmIDEwMDY0NAotLS0gYS9MaWIveGRybGliLnB5CisrKyBiL0xpYi94ZHJsaWIucHkKQEAgLTE0MSwxMSArMTQxLDcgQEAKICAgICAgICAgZGF0YSA9IHNlbGYuX19idWZbaTpqXQogICAgICAgICBpZiBsZW4oZGF0YSkgPCA0OgogICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKLSAgICAgICAgeCA9IHN0cnVjdC51bnBhY2soJz5MJywgZGF0YSlbMF0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGludCh4KQotICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiB4CisgICAgICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKCc+TCcsIGRhdGEpWzBdCiAKICAgICBkZWYgdW5wYWNrX2ludChzZWxmKToKICAgICAgICAgaSA9IHNlbGYuX19wb3MKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL19faW5pdF9fLnB5IGIvTGliL3htbC9kb20vX19pbml0X18ucHkKaW5kZXggNDQwMWJkZi4uOTdjZjlhNiAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20vX19pbml0X18ucHkKKysrIGIvTGliL3htbC9kb20vX19pbml0X18ucHkKQEAgLTE3LDYgKzE3LDcgQEAKIAogY2xhc3MgTm9kZToKICAgICAiIiJDbGFzcyBnaXZpbmcgdGhlIE5vZGVUeXBlIGNvbnN0YW50cy4iIiIKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgIyBET00gaW1wbGVtZW50YXRpb25zIG1heSB1c2UgdGhpcyBhcyBhIGJhc2UgY2xhc3MgZm9yIHRoZWlyIG93bgogICAgICMgTm9kZSBpbXBsZW1lbnRhdGlvbnMuICBJZiB0aGV5IGRvbid0LCB0aGUgY29uc3RhbnRzIGRlZmluZWQgaGVyZQpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vZG9tcmVnLnB5IGIvTGliL3htbC9kb20vZG9tcmVnLnB5CmluZGV4IGNiMzViYjAuLjhjM2Q5MDEgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL2RvbXJlZy5weQorKysgYi9MaWIveG1sL2RvbS9kb21yZWcucHkKQEAgLTIsOCArMiw2IEBACiBkaXJlY3RseS4gSW5zdGVhZCwgdGhlIGZ1bmN0aW9ucyBnZXRET01JbXBsZW1lbnRhdGlvbiBhbmQKIHJlZ2lzdGVyRE9NSW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGltcG9ydGVkIGZyb20geG1sLmRvbS4iIiIKIAotZnJvbSB4bWwuZG9tLm1pbmljb21wYXQgaW1wb3J0ICogICMgaXNpbnN0YW5jZSwgU3RyaW5nVHlwZXMKLQogIyBUaGlzIGlzIGEgbGlzdCBvZiB3ZWxsLWtub3duIGltcGxlbWVudGF0aW9ucy4gIFdlbGwta25vd24gbmFtZXMKICMgc2hvdWxkIGJlIHB1Ymxpc2hlZCBieSBwb3N0aW5nIHRvIHhtbC1zaWdAcHl0aG9uLm9yZywgYW5kIGFyZQogIyBzdWJzZXF1ZW50bHkgcmVjb3JkZWQgaW4gdGhpcyBmaWxlLgpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vZXhwYXRidWlsZGVyLnB5IGIvTGliL3htbC9kb20vZXhwYXRidWlsZGVyLnB5CmluZGV4IGE5OGZlMDMuLmYwNzRhYjkgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL2V4cGF0YnVpbGRlci5weQorKysgYi9MaWIveG1sL2RvbS9leHBhdGJ1aWxkZXIucHkKQEAgLTMzLDggKzMzLDYgQEAKIGZyb20geG1sLmRvbS5taW5pZG9tIGltcG9ydCBfYXBwZW5kX2NoaWxkLCBfc2V0X2F0dHJpYnV0ZV9ub2RlCiBmcm9tIHhtbC5kb20uTm9kZUZpbHRlciBpbXBvcnQgTm9kZUZpbHRlcgogCi1mcm9tIHhtbC5kb20ubWluaWNvbXBhdCBpbXBvcnQgKgotCiBURVhUX05PREUgPSBOb2RlLlRFWFRfTk9ERQogQ0RBVEFfU0VDVElPTl9OT0RFID0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUKIERPQ1VNRU5UX05PREUgPSBOb2RlLkRPQ1VNRU5UX05PREUKQEAgLTI4MywyNyArMjgxLDIzIEBACiAgICAgICAgIGVsaWYgY2hpbGROb2RlcyBhbmQgY2hpbGROb2Rlc1stMV0ubm9kZVR5cGUgPT0gVEVYVF9OT0RFOgogICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZXNbLTFdCiAgICAgICAgICAgICB2YWx1ZSA9IG5vZGUuZGF0YSArIGRhdGEKLSAgICAgICAgICAgIGQgPSBub2RlLl9fZGljdF9fCi0gICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCisgICAgICAgICAgICBub2RlLmRhdGEgPSB2YWx1ZQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBub2RlID0gbWluaWRvbS5UZXh0KCkKLSAgICAgICAgICAgIGQgPSBub2RlLl9fZGljdF9fCi0gICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IGRhdGEKLSAgICAgICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgICAgIG5vZGUuZGF0YSA9IGRhdGEKKyAgICAgICAgICAgIG5vZGUub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgX2FwcGVuZF9jaGlsZChzZWxmLmN1ck5vZGUsIG5vZGUpCiAKICAgICBkZWYgY2hhcmFjdGVyX2RhdGFfaGFuZGxlcihzZWxmLCBkYXRhKToKICAgICAgICAgY2hpbGROb2RlcyA9IHNlbGYuY3VyTm9kZS5jaGlsZE5vZGVzCiAgICAgICAgIGlmIGNoaWxkTm9kZXMgYW5kIGNoaWxkTm9kZXNbLTFdLm5vZGVUeXBlID09IFRFWFRfTk9ERToKICAgICAgICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzWy0xXQotICAgICAgICAgICAgZCA9IG5vZGUuX19kaWN0X18KLSAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gbm9kZS5kYXRhICsgZGF0YQorICAgICAgICAgICAgbm9kZS5kYXRhID0gbm9kZS5kYXRhICsgZGF0YQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIG5vZGUgPSBtaW5pZG9tLlRleHQoKQotICAgICAgICBkID0gbm9kZS5fX2RpY3RfXwotICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IG5vZGUuZGF0YSArIGRhdGEKLSAgICAgICAgZFsnb3duZXJEb2N1bWVudCddID0gc2VsZi5kb2N1bWVudAorICAgICAgICBub2RlLmRhdGEgPSBub2RlLmRhdGEgKyBkYXRhCisgICAgICAgIG5vZGUub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgX2FwcGVuZF9jaGlsZChzZWxmLmN1ck5vZGUsIG5vZGUpCiAKICAgICBkZWYgZW50aXR5X2RlY2xfaGFuZGxlcihzZWxmLCBlbnRpdHlOYW1lLCBpc19wYXJhbWV0ZXJfZW50aXR5LCB2YWx1ZSwKQEAgLTM2MywxMSArMzU3LDggQEAKICAgICAgICAgICAgICAgICBhID0gbWluaWRvbS5BdHRyKGF0dHJpYnV0ZXNbaV0sIEVNUFRZX05BTUVTUEFDRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIEVNUFRZX1BSRUZJWCkKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXNbaSsxXQotICAgICAgICAgICAgICAgIGQgPSBhLmNoaWxkTm9kZXNbMF0uX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgZCA9IGEuX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICAgICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgICAgICAgICBhLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgICAgICBhLm93bmVyRG9jdW1lbnQgPSBzZWxmLmRvY3VtZW50CiAgICAgICAgICAgICAgICAgX3NldF9hdHRyaWJ1dGVfbm9kZShub2RlLCBhKQogCiAgICAgICAgIGlmIG5vZGUgaXMgbm90IHNlbGYuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OgpAQCAtNzYxLDE1ICs3NTIsMTMgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBhID0gbWluaWRvbS5BdHRyKCJ4bWxucyIsIFhNTE5TX05BTUVTUEFDRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieG1sbnMiLCBFTVBUWV9QUkVGSVgpCi0gICAgICAgICAgICAgICAgZCA9IGEuY2hpbGROb2Rlc1swXS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdXJpCi0gICAgICAgICAgICAgICAgZCA9IGEuX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB1cmkKLSAgICAgICAgICAgICAgICBkWydvd25lckRvY3VtZW50J10gPSBzZWxmLmRvY3VtZW50CisgICAgICAgICAgICAgICAgYS52YWx1ZSA9IHVyaQorICAgICAgICAgICAgICAgIGEub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgICAgICAgICBfc2V0X2F0dHJpYnV0ZV9ub2RlKG5vZGUsIGEpCiAgICAgICAgICAgICBkZWwgc2VsZi5fbnNfb3JkZXJlZF9wcmVmaXhlc1s6XQogCiAgICAgICAgIGlmIGF0dHJpYnV0ZXM6CisgICAgICAgICAgICBub2RlLl9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgICAgICAgICBfYXR0cnMgPSBub2RlLl9hdHRycwogICAgICAgICAgICAgX2F0dHJzTlMgPSBub2RlLl9hdHRyc05TCiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oYXR0cmlidXRlcyksIDIpOgpAQCAtNzg1LDEyICs3NzQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuYW1lLCBFTVBUWV9QUkVGSVgpCiAgICAgICAgICAgICAgICAgICAgIF9hdHRyc1thbmFtZV0gPSBhCiAgICAgICAgICAgICAgICAgICAgIF9hdHRyc05TWyhFTVBUWV9OQU1FU1BBQ0UsIGFuYW1lKV0gPSBhCi0gICAgICAgICAgICAgICAgZCA9IGEuY2hpbGROb2Rlc1swXS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgICAgICAgICBkID0gYS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKLSAgICAgICAgICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICAgICAgICAgIGRbJ293bmVyRWxlbWVudCddID0gbm9kZQorICAgICAgICAgICAgICAgIGEub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgICAgICAgICBhLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgICAgICBhLm93bmVyRWxlbWVudCA9IG5vZGUKIAogICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgIyBUaGlzIG9ubHkgYWRkcyBzb21lIGFzc2VydHMgdG8gdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS9taW5pZG9tLnB5IGIvTGliL3htbC9kb20vbWluaWRvbS5weQppbmRleCBmMjNhZDA1Li4yOGU1MDMwIDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS9taW5pZG9tLnB5CisrKyBiL0xpYi94bWwvZG9tL21pbmlkb20ucHkKQEAgLTE0LDcgKzE0LDYgQEAKICAqIFNBWCAyIG5hbWVzcGFjZXMKICIiIgogCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgaW8KIGltcG9ydCB4bWwuZG9tCiAKQEAgLTQ3LDI1ICs0NiwyNSBAQAogICAgICAgICByZXR1cm4gc2VsZi50b3ByZXR0eXhtbCgiIiwgIiIsIGVuY29kaW5nKQogCiAgICAgZGVmIHRvcHJldHR5eG1sKHNlbGYsIGluZGVudD0iXHQiLCBuZXdsPSJcbiIsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICAjIGluZGVudCA9IHRoZSBpbmRlbnRhdGlvbiBzdHJpbmcgdG8gcHJlcGVuZCwgcGVyIGxldmVsCi0gICAgICAgICMgbmV3bCA9IHRoZSBuZXdsaW5lIHN0cmluZyB0byBhcHBlbmQKLSAgICAgICAgdXNlX2VuY29kaW5nID0gInV0Zi04IiBpZiBlbmNvZGluZyBpcyBOb25lIGVsc2UgZW5jb2RpbmcKLSAgICAgICAgd3JpdGVyID0gY29kZWNzLmdldHdyaXRlcih1c2VfZW5jb2RpbmcpKGlvLkJ5dGVzSU8oKSkKKyAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIHdyaXRlciA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdyaXRlciA9IGlvLlRleHRJT1dyYXBwZXIoaW8uQnl0ZXNJTygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSJ4bWxjaGFycmVmcmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9J1xuJykKICAgICAgICAgaWYgc2VsZi5ub2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREU6CiAgICAgICAgICAgICAjIENhbiBwYXNzIGVuY29kaW5nIG9ubHkgdG8gZG9jdW1lbnQsIHRvIHB1dCBpdCBpbnRvIFhNTCBoZWFkZXIKICAgICAgICAgICAgIHNlbGYud3JpdGV4bWwod3JpdGVyLCAiIiwgaW5kZW50LCBuZXdsLCBlbmNvZGluZykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYud3JpdGV4bWwod3JpdGVyLCAiIiwgaW5kZW50LCBuZXdsKQogICAgICAgICBpZiBlbmNvZGluZyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHdyaXRlci5zdHJlYW0uZ2V0dmFsdWUoKS5kZWNvZGUodXNlX2VuY29kaW5nKQorICAgICAgICAgICAgcmV0dXJuIHdyaXRlci5nZXR2YWx1ZSgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gd3JpdGVyLnN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgICAgICByZXR1cm4gd3JpdGVyLmRldGFjaCgpLmdldHZhbHVlKCkKIAogICAgIGRlZiBoYXNDaGlsZE5vZGVzKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmNoaWxkTm9kZXM6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBib29sKHNlbGYuY2hpbGROb2RlcykKIAogICAgIGRlZiBfZ2V0X2NoaWxkTm9kZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmNoaWxkTm9kZXMKQEAgLTI4NiwxMCArMjg1LDEwIEBACiAgICAgY2hpbGROb2RlcyA9IHNlbGYuY2hpbGROb2RlcwogICAgIGlmIGNoaWxkTm9kZXM6CiAgICAgICAgIGxhc3QgPSBjaGlsZE5vZGVzWy0xXQotICAgICAgICBub2RlLl9fZGljdF9fWyJwcmV2aW91c1NpYmxpbmciXSA9IGxhc3QKLSAgICAgICAgbGFzdC5fX2RpY3RfX1sibmV4dFNpYmxpbmciXSA9IG5vZGUKKyAgICAgICAgbm9kZS5wcmV2aW91c1NpYmxpbmcgPSBsYXN0CisgICAgICAgIGxhc3QubmV4dFNpYmxpbmcgPSBub2RlCiAgICAgY2hpbGROb2Rlcy5hcHBlbmQobm9kZSkKLSAgICBub2RlLl9fZGljdF9fWyJwYXJlbnROb2RlIl0gPSBzZWxmCisgICAgbm9kZS5wYXJlbnROb2RlID0gc2VsZgogCiBkZWYgX2luX2RvY3VtZW50KG5vZGUpOgogICAgICMgcmV0dXJuIFRydWUgaWZmIG5vZGUgaXMgcGFydCBvZiBhIGRvY3VtZW50IHRyZWUKQEAgLTM0Miw5ICszNDEsMTAgQEAKIAogCiBjbGFzcyBBdHRyKE5vZGUpOgorICAgIF9fc2xvdHNfXz0oJ19uYW1lJywgJ192YWx1ZScsICduYW1lc3BhY2VVUkknLAorICAgICAgICAgICAgICAgJ19wcmVmaXgnLCAnY2hpbGROb2RlcycsICdfbG9jYWxOYW1lJywgJ293bmVyRG9jdW1lbnQnLCAnb3duZXJFbGVtZW50JykKICAgICBub2RlVHlwZSA9IE5vZGUuQVRUUklCVVRFX05PREUKICAgICBhdHRyaWJ1dGVzID0gTm9uZQotICAgIG93bmVyRWxlbWVudCA9IE5vbmUKICAgICBzcGVjaWZpZWQgPSBGYWxzZQogICAgIF9pc19pZCA9IEZhbHNlCiAKQEAgLTM1MiwxMiArMzUyLDExIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcU5hbWUsIG5hbWVzcGFjZVVSST1FTVBUWV9OQU1FU1BBQ0UsIGxvY2FsTmFtZT1Ob25lLAogICAgICAgICAgICAgICAgICBwcmVmaXg9Tm9uZSk6Ci0gICAgICAgICMgc2tpcCBzZXRhdHRyIGZvciBwZXJmb3JtYW5jZQotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWyJub2RlTmFtZSJdID0gZFsibmFtZSJdID0gcU5hbWUKLSAgICAgICAgZFsibmFtZXNwYWNlVVJJIl0gPSBuYW1lc3BhY2VVUkkKLSAgICAgICAgZFsicHJlZml4Il0gPSBwcmVmaXgKLSAgICAgICAgZFsnY2hpbGROb2RlcyddID0gTm9kZUxpc3QoKQorICAgICAgICBzZWxmLm93bmVyRWxlbWVudCA9IE5vbmUKKyAgICAgICAgc2VsZi5fbmFtZSA9IHFOYW1lCisgICAgICAgIHNlbGYubmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJCisgICAgICAgIHNlbGYuX3ByZWZpeCA9IHByZWZpeAorICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCiAKICAgICAgICAgIyBBZGQgdGhlIHNpbmdsZSBjaGlsZCBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2YgdGhlIGF0dHIKICAgICAgICAgc2VsZi5jaGlsZE5vZGVzLmFwcGVuZChUZXh0KCkpCkBAIC0zNjUsOSArMzY0LDEwIEBACiAgICAgICAgICMgbm9kZVZhbHVlIGFuZCB2YWx1ZSBhcmUgc2V0IGVsc2V3aGVyZQogCiAgICAgZGVmIF9nZXRfbG9jYWxOYW1lKHNlbGYpOgotICAgICAgICBpZiAnbG9jYWxOYW1lJyBpbiBzZWxmLl9fZGljdF9fOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X19bJ2xvY2FsTmFtZSddCi0gICAgICAgIHJldHVybiBzZWxmLm5vZGVOYW1lLnNwbGl0KCI6IiwgMSlbLTFdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2NhbE5hbWUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubm9kZU5hbWUuc3BsaXQoIjoiLCAxKVstMV0KIAogICAgIGRlZiBfZ2V0X25hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLm5hbWUKQEAgLTM3NSwyMCArMzc1LDMwIEBACiAgICAgZGVmIF9nZXRfc3BlY2lmaWVkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5zcGVjaWZpZWQKIAotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGlmIG5hbWUgaW4gKCJ2YWx1ZSIsICJub2RlVmFsdWUiKToKLSAgICAgICAgICAgIGRbInZhbHVlIl0gPSBkWyJub2RlVmFsdWUiXSA9IHZhbHVlCi0gICAgICAgICAgICBkMiA9IHNlbGYuY2hpbGROb2Rlc1swXS5fX2RpY3RfXwotICAgICAgICAgICAgZDJbImRhdGEiXSA9IGQyWyJub2RlVmFsdWUiXSA9IHZhbHVlCi0gICAgICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCi0gICAgICAgIGVsaWYgbmFtZSBpbiAoIm5hbWUiLCAibm9kZU5hbWUiKToKLSAgICAgICAgICAgIGRbIm5hbWUiXSA9IGRbIm5vZGVOYW1lIl0gPSB2YWx1ZQotICAgICAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZFtuYW1lXSA9IHZhbHVlCisgICAgZGVmIF9nZXRfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRlZiBfc2V0X25hbWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9uYW1lID0gdmFsdWUKKyAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCisKKyAgICBub2RlTmFtZSA9IG5hbWUgPSBwcm9wZXJ0eShfZ2V0X25hbWUsIF9zZXRfbmFtZSkKKworICAgIGRlZiBfZ2V0X3ZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWUKKworICAgIGRlZiBfc2V0X3ZhbHVlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fdmFsdWUgPSB2YWx1ZQorICAgICAgICBzZWxmLmNoaWxkTm9kZXNbMF0uZGF0YSA9IHZhbHVlCisgICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQorICAgICAgICBzZWxmLmNoaWxkTm9kZXNbMF0uZGF0YSA9IHZhbHVlCisKKyAgICBub2RlVmFsdWUgPSB2YWx1ZSA9IHByb3BlcnR5KF9nZXRfdmFsdWUsIF9zZXRfdmFsdWUpCisKKyAgICBkZWYgX2dldF9wcmVmaXgoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9wcmVmaXgKIAogICAgIGRlZiBfc2V0X3ByZWZpeChzZWxmLCBwcmVmaXgpOgogICAgICAgICBuc3VyaSA9IHNlbGYubmFtZXNwYWNlVVJJCkBAIC0zOTYsMjIgKzQwNiwxNiBAQAogICAgICAgICAgICAgaWYgbnN1cmkgYW5kIG5zdXJpICE9IFhNTE5TX05BTUVTUEFDRToKICAgICAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5hbWVzcGFjZUVycigKICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgdXNlIG9mICd4bWxucycgcHJlZml4IGZvciB0aGUgd3JvbmcgbmFtZXNwYWNlIikKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgZFsncHJlZml4J10gPSBwcmVmaXgKKyAgICAgICAgc2VsZi5fcHJlZml4ID0gcHJlZml4CiAgICAgICAgIGlmIHByZWZpeCBpcyBOb25lOgogICAgICAgICAgICAgbmV3TmFtZSA9IHNlbGYubG9jYWxOYW1lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBuZXdOYW1lID0gIiVzOiVzIiAlIChwcmVmaXgsIHNlbGYubG9jYWxOYW1lKQogICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudDoKICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKLSAgICAgICAgZFsnbm9kZU5hbWUnXSA9IGRbJ25hbWUnXSA9IG5ld05hbWUKKyAgICAgICAgc2VsZi5uYW1lID0gbmV3TmFtZQogCi0gICAgZGVmIF9zZXRfdmFsdWUoc2VsZiwgdmFsdWUpOgotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudDoKLSAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKLSAgICAgICAgc2VsZi5jaGlsZE5vZGVzWzBdLmRhdGEgPSB2YWx1ZQorICAgIHByZWZpeCA9IHByb3BlcnR5KF9nZXRfcHJlZml4LCBfc2V0X3ByZWZpeCkKIAogICAgIGRlZiB1bmxpbmsoc2VsZik6CiAgICAgICAgICMgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjYWxsIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uCkBAIC01ODYsOCArNTkwLDggQEAKICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLl9vd25lckVsZW1lbnQpCiAgICAgICAgICAgICBkZWwgc2VsZi5fYXR0cnNbbi5ub2RlTmFtZV0KICAgICAgICAgICAgIGRlbCBzZWxmLl9hdHRyc05TWyhuLm5hbWVzcGFjZVVSSSwgbi5sb2NhbE5hbWUpXQotICAgICAgICAgICAgaWYgJ293bmVyRWxlbWVudCcgaW4gbi5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICBuLl9fZGljdF9fWydvd25lckVsZW1lbnQnXSA9IE5vbmUKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobiwgJ293bmVyRWxlbWVudCcpOgorICAgICAgICAgICAgICAgIG4ub3duZXJFbGVtZW50ID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQpAQCAtNTk4LDggKzYwMiw4IEBACiAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5fb3duZXJFbGVtZW50KQogICAgICAgICAgICAgZGVsIHNlbGYuX2F0dHJzTlNbKG4ubmFtZXNwYWNlVVJJLCBuLmxvY2FsTmFtZSldCiAgICAgICAgICAgICBkZWwgc2VsZi5fYXR0cnNbbi5ub2RlTmFtZV0KLSAgICAgICAgICAgIGlmICdvd25lckVsZW1lbnQnIGluIG4uX19kaWN0X186Ci0gICAgICAgICAgICAgICAgbi5fX2RpY3RfX1snb3duZXJFbGVtZW50J10gPSBOb25lCisgICAgICAgICAgICBpZiBoYXNhdHRyKG4sICdvd25lckVsZW1lbnQnKToKKyAgICAgICAgICAgICAgICBuLm93bmVyRWxlbWVudCA9IE5vbmUKICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKQEAgLTY1OSw2ICs2NjMsOSBAQAogX25vX3R5cGUgPSBUeXBlSW5mbyhOb25lLCBOb25lKQogCiBjbGFzcyBFbGVtZW50KE5vZGUpOgorICAgIF9fc2xvdHNfXz0oJ293bmVyRG9jdW1lbnQnLCAncGFyZW50Tm9kZScsICd0YWdOYW1lJywgJ25vZGVOYW1lJywgJ3ByZWZpeCcsCisgICAgICAgICAgICAgICAnbmFtZXNwYWNlVVJJJywgJ19sb2NhbE5hbWUnLCAnY2hpbGROb2RlcycsICdfYXR0cnMnLCAnX2F0dHJzTlMnLAorICAgICAgICAgICAgICAgJ25leHRTaWJsaW5nJywgJ3ByZXZpb3VzU2libGluZycpCiAgICAgbm9kZVR5cGUgPSBOb2RlLkVMRU1FTlRfTk9ERQogICAgIG5vZGVWYWx1ZSA9IE5vbmUKICAgICBzY2hlbWFUeXBlID0gX25vX3R5cGUKQEAgLTY3NCw0MSArNjgxLDU3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGFnTmFtZSwgbmFtZXNwYWNlVVJJPUVNUFRZX05BTUVTUEFDRSwgcHJlZml4PU5vbmUsCiAgICAgICAgICAgICAgICAgIGxvY2FsTmFtZT1Ob25lKToKKyAgICAgICAgc2VsZi5wYXJlbnROb2RlID0gTm9uZQogICAgICAgICBzZWxmLnRhZ05hbWUgPSBzZWxmLm5vZGVOYW1lID0gdGFnTmFtZQogICAgICAgICBzZWxmLnByZWZpeCA9IHByZWZpeAogICAgICAgICBzZWxmLm5hbWVzcGFjZVVSSSA9IG5hbWVzcGFjZVVSSQogICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCisgICAgICAgIHNlbGYubmV4dFNpYmxpbmcgPSBzZWxmLnByZXZpb3VzU2libGluZyA9IE5vbmUKIAotICAgICAgICBzZWxmLl9hdHRycyA9IHt9ICAgIyBhdHRyaWJ1dGVzIGFyZSBkb3VibGUtaW5kZXhlZDoKLSAgICAgICAgc2VsZi5fYXR0cnNOUyA9IHt9ICMgICAgdGFnTmFtZSAtPiBBdHRyaWJ1dGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgVVJJLGxvY2FsTmFtZSAtPiBBdHRyaWJ1dGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIGZ1dHVyZTogY29uc2lkZXIgbGF6eSBnZW5lcmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9mIGF0dHJpYnV0ZSBvYmplY3RzIHRoaXMgaXMgdG9vIHRyaWNreQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3Igbm93IGJlY2F1c2Ugb2YgaGVhZGFjaGVzIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbmFtZXNwYWNlcy4KKyAgICAgICAgIyBBdHRyaWJ1dGUgZGljdGlvbmFyaWVzIGFyZSBsYXppbHkgY3JlYXRlZAorICAgICAgICAjIGF0dHJpYnV0ZXMgYXJlIGRvdWJsZS1pbmRleGVkOgorICAgICAgICAjICAgIHRhZ05hbWUgLT4gQXR0cmlidXRlCisgICAgICAgICMgICAgVVJJLGxvY2FsTmFtZSAtPiBBdHRyaWJ1dGUKKyAgICAgICAgIyBpbiB0aGUgZnV0dXJlOiBjb25zaWRlciBsYXp5IGdlbmVyYXRpb24KKyAgICAgICAgIyBvZiBhdHRyaWJ1dGUgb2JqZWN0cyB0aGlzIGlzIHRvbyB0cmlja3kKKyAgICAgICAgIyBmb3Igbm93IGJlY2F1c2Ugb2YgaGVhZGFjaGVzIHdpdGgKKyAgICAgICAgIyBuYW1lc3BhY2VzLgorICAgICAgICBzZWxmLl9hdHRycyA9IE5vbmUKKyAgICAgICAgc2VsZi5fYXR0cnNOUyA9IE5vbmUKKworICAgIGRlZiBfZW5zdXJlX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9hdHRycyA9IHt9CisgICAgICAgICAgICBzZWxmLl9hdHRyc05TID0ge30KIAogICAgIGRlZiBfZ2V0X2xvY2FsTmFtZShzZWxmKToKLSAgICAgICAgaWYgJ2xvY2FsTmFtZScgaW4gc2VsZi5fX2RpY3RfXzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fWydsb2NhbE5hbWUnXQotICAgICAgICByZXR1cm4gc2VsZi50YWdOYW1lLnNwbGl0KCI6IiwgMSlbLTFdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2NhbE5hbWUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudGFnTmFtZS5zcGxpdCgiOiIsIDEpWy0xXQogCiAgICAgZGVmIF9nZXRfdGFnTmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYudGFnTmFtZQogCiAgICAgZGVmIHVubGluayhzZWxmKToKLSAgICAgICAgZm9yIGF0dHIgaW4gbGlzdChzZWxmLl9hdHRycy52YWx1ZXMoKSk6Ci0gICAgICAgICAgICBhdHRyLnVubGluaygpCisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gbGlzdChzZWxmLl9hdHRycy52YWx1ZXMoKSk6CisgICAgICAgICAgICAgICAgYXR0ci51bmxpbmsoKQogICAgICAgICBzZWxmLl9hdHRycyA9IE5vbmUKICAgICAgICAgc2VsZi5fYXR0cnNOUyA9IE5vbmUKICAgICAgICAgTm9kZS51bmxpbmsoc2VsZikKIAogICAgIGRlZiBnZXRBdHRyaWJ1dGUoc2VsZiwgYXR0bmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzW2F0dG5hbWVdLnZhbHVlCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHJldHVybiAiIgogCiAgICAgZGVmIGdldEF0dHJpYnV0ZU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9hdHRyc05TWyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSldLnZhbHVlCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTcxOCwxNCArNzQxLDExIEBACiAgICAgICAgIGF0dHIgPSBzZWxmLmdldEF0dHJpYnV0ZU5vZGUoYXR0bmFtZSkKICAgICAgICAgaWYgYXR0ciBpcyBOb25lOgogICAgICAgICAgICAgYXR0ciA9IEF0dHIoYXR0bmFtZSkKLSAgICAgICAgICAgICMgZm9yIHBlcmZvcm1hbmNlCi0gICAgICAgICAgICBkID0gYXR0ci5fX2RpY3RfXwotICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKLSAgICAgICAgICAgIGRbIm93bmVyRG9jdW1lbnQiXSA9IHNlbGYub3duZXJEb2N1bWVudAorICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlICMgYWxzbyBzZXRzIG5vZGVWYWx1ZQorICAgICAgICAgICAgYXR0ci5vd25lckRvY3VtZW50ID0gc2VsZi5vd25lckRvY3VtZW50CiAgICAgICAgICAgICBzZWxmLnNldEF0dHJpYnV0ZU5vZGUoYXR0cikKICAgICAgICAgZWxpZiB2YWx1ZSAhPSBhdHRyLnZhbHVlOgotICAgICAgICAgICAgZCA9IGF0dHIuX19kaWN0X18KLSAgICAgICAgICAgIGRbInZhbHVlIl0gPSBkWyJub2RlVmFsdWUiXSA9IHZhbHVlCisgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUKICAgICAgICAgICAgIGlmIGF0dHIuaXNJZDoKICAgICAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZikKIApAQCAtNzMzLDMzICs3NTMsMzMgQEAKICAgICAgICAgcHJlZml4LCBsb2NhbG5hbWUgPSBfbnNzcGxpdChxdWFsaWZpZWROYW1lKQogICAgICAgICBhdHRyID0gc2VsZi5nZXRBdHRyaWJ1dGVOb2RlTlMobmFtZXNwYWNlVVJJLCBsb2NhbG5hbWUpCiAgICAgICAgIGlmIGF0dHIgaXMgTm9uZToKLSAgICAgICAgICAgICMgZm9yIHBlcmZvcm1hbmNlCiAgICAgICAgICAgICBhdHRyID0gQXR0cihxdWFsaWZpZWROYW1lLCBuYW1lc3BhY2VVUkksIGxvY2FsbmFtZSwgcHJlZml4KQotICAgICAgICAgICAgZCA9IGF0dHIuX19kaWN0X18KLSAgICAgICAgICAgIGRbInByZWZpeCJdID0gcHJlZml4Ci0gICAgICAgICAgICBkWyJub2RlTmFtZSJdID0gcXVhbGlmaWVkTmFtZQotICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKLSAgICAgICAgICAgIGRbIm93bmVyRG9jdW1lbnQiXSA9IHNlbGYub3duZXJEb2N1bWVudAorICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlCisgICAgICAgICAgICBhdHRyLm93bmVyRG9jdW1lbnQgPSBzZWxmLm93bmVyRG9jdW1lbnQKICAgICAgICAgICAgIHNlbGYuc2V0QXR0cmlidXRlTm9kZShhdHRyKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZCA9IGF0dHIuX19kaWN0X18KICAgICAgICAgICAgIGlmIHZhbHVlICE9IGF0dHIudmFsdWU6Ci0gICAgICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKKyAgICAgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUKICAgICAgICAgICAgICAgICBpZiBhdHRyLmlzSWQ6CiAgICAgICAgICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmKQogICAgICAgICAgICAgaWYgYXR0ci5wcmVmaXggIT0gcHJlZml4OgotICAgICAgICAgICAgICAgIGRbInByZWZpeCJdID0gcHJlZml4Ci0gICAgICAgICAgICAgICAgZFsibm9kZU5hbWUiXSA9IHF1YWxpZmllZE5hbWUKKyAgICAgICAgICAgICAgICBhdHRyLnByZWZpeCA9IHByZWZpeAorICAgICAgICAgICAgICAgIGF0dHIubm9kZU5hbWUgPSBxdWFsaWZpZWROYW1lCiAKICAgICBkZWYgZ2V0QXR0cmlidXRlTm9kZShzZWxmLCBhdHRybmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnMuZ2V0KGF0dHJuYW1lKQogCiAgICAgZGVmIGdldEF0dHJpYnV0ZU5vZGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBzZWxmLl9hdHRyc05TLmdldCgobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpKQogCiAgICAgZGVmIHNldEF0dHJpYnV0ZU5vZGUoc2VsZiwgYXR0cik6CiAgICAgICAgIGlmIGF0dHIub3duZXJFbGVtZW50IG5vdCBpbiAoTm9uZSwgc2VsZik6CiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLkludXNlQXR0cmlidXRlRXJyKCJhdHRyaWJ1dGUgbm9kZSBhbHJlYWR5IG93bmVkIikKKyAgICAgICAgc2VsZi5fZW5zdXJlX2F0dHJpYnV0ZXMoKQogICAgICAgICBvbGQxID0gc2VsZi5fYXR0cnMuZ2V0KGF0dHIubmFtZSwgTm9uZSkKICAgICAgICAgaWYgb2xkMSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYucmVtb3ZlQXR0cmlidXRlTm9kZShvbGQxKQpAQCAtNzc4LDYgKzc5OCw4IEBACiAgICAgc2V0QXR0cmlidXRlTm9kZU5TID0gc2V0QXR0cmlidXRlTm9kZQogCiAgICAgZGVmIHJlbW92ZUF0dHJpYnV0ZShzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RGb3VuZEVycigpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGF0dHIgPSBzZWxmLl9hdHRyc1tuYW1lXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC03ODUsNiArODA3LDggQEAKICAgICAgICAgc2VsZi5yZW1vdmVBdHRyaWJ1dGVOb2RlKGF0dHIpCiAKICAgICBkZWYgcmVtb3ZlQXR0cmlidXRlTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRyc05TIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgYXR0ciA9IHNlbGYuX2F0dHJzTlNbKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKV0KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtODA3LDkgKzgzMSwxMyBAQAogICAgIHJlbW92ZUF0dHJpYnV0ZU5vZGVOUyA9IHJlbW92ZUF0dHJpYnV0ZU5vZGUKIAogICAgIGRlZiBoYXNBdHRyaWJ1dGUoc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIG5hbWUgaW4gc2VsZi5fYXR0cnMKIAogICAgIGRlZiBoYXNBdHRyaWJ1dGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSBpbiBzZWxmLl9hdHRyc05TCiAKICAgICBkZWYgZ2V0RWxlbWVudHNCeVRhZ05hbWUoc2VsZiwgbmFtZSk6CkBAIC04NTAsNiArODc4LDcgQEAKICAgICAgICAgICAgIHdyaXRlci53cml0ZSgiLz4lcyIlKG5ld2wpKQogCiAgICAgZGVmIF9nZXRfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX2F0dHJpYnV0ZXMoKQogICAgICAgICByZXR1cm4gTmFtZWROb2RlTWFwKHNlbGYuX2F0dHJzLCBzZWxmLl9hdHRyc05TLCBzZWxmKQogCiAgICAgZGVmIGhhc0F0dHJpYnV0ZXMoc2VsZik6CkBAIC04NzQsNyArOTAzLDcgQEAKICAgICAgICAgaWYgX2dldF9jb250YWluaW5nX2VudHJlZihzZWxmKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyKCkKICAgICAgICAgaWYgbm90IGlkQXR0ci5faXNfaWQ6Ci0gICAgICAgICAgICBpZEF0dHIuX19kaWN0X19bJ19pc19pZCddID0gVHJ1ZQorICAgICAgICAgICAgaWRBdHRyLl9pc19pZCA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX21hZ2ljX2lkX25vZGVzICs9IDEKICAgICAgICAgICAgIHNlbGYub3duZXJEb2N1bWVudC5fbWFnaWNfaWRfY291bnQgKz0gMQogICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYpCkBAIC04ODcsMTkgKzkxNiwyMCBAQAogCiBkZWYgX3NldF9hdHRyaWJ1dGVfbm9kZShlbGVtZW50LCBhdHRyKToKICAgICBfY2xlYXJfaWRfY2FjaGUoZWxlbWVudCkKKyAgICBlbGVtZW50Ll9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgZWxlbWVudC5fYXR0cnNbYXR0ci5uYW1lXSA9IGF0dHIKICAgICBlbGVtZW50Ll9hdHRyc05TWyhhdHRyLm5hbWVzcGFjZVVSSSwgYXR0ci5sb2NhbE5hbWUpXSA9IGF0dHIKIAogICAgICMgVGhpcyBjcmVhdGVzIGEgY2lyY3VsYXIgcmVmZXJlbmNlLCBidXQgRWxlbWVudC51bmxpbmsoKQogICAgICMgYnJlYWtzIHRoZSBjeWNsZSBzaW5jZSB0aGUgcmVmZXJlbmNlcyB0byB0aGUgYXR0cmlidXRlCiAgICAgIyBkaWN0aW9uYXJpZXMgYXJlIHRvc3NlZC4KLSAgICBhdHRyLl9fZGljdF9fWydvd25lckVsZW1lbnQnXSA9IGVsZW1lbnQKLQorICAgIGF0dHIub3duZXJFbGVtZW50ID0gZWxlbWVudAogCiBjbGFzcyBDaGlsZGxlc3M6CiAgICAgIiIiTWl4aW4gdGhhdCBtYWtlcyBjaGlsZGxlc3MtbmVzcyBlYXN5IHRvIGltcGxlbWVudCBhbmQgYXZvaWRzCiAgICAgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIE5vZGUgbWV0aG9kcyB0aGF0IGRlYWwgd2l0aCBjaGlsZHJlbi4KICAgICAiIiIKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgYXR0cmlidXRlcyA9IE5vbmUKICAgICBjaGlsZE5vZGVzID0gRW1wdHlOb2RlTGlzdCgpCkBAIC05MzgsNTQgKzk2OCw0OSBAQAogCiBjbGFzcyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oQ2hpbGRsZXNzLCBOb2RlKToKICAgICBub2RlVHlwZSA9IE5vZGUuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFCisgICAgX19zbG90c19fID0gKCd0YXJnZXQnLCAnZGF0YScpCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZ2V0LCBkYXRhKToKLSAgICAgICAgc2VsZi50YXJnZXQgPSBzZWxmLm5vZGVOYW1lID0gdGFyZ2V0Ci0gICAgICAgIHNlbGYuZGF0YSA9IHNlbGYubm9kZVZhbHVlID0gZGF0YQorICAgICAgICBzZWxmLnRhcmdldCA9IHRhcmdldAorICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCiAKLSAgICBkZWYgX2dldF9kYXRhKHNlbGYpOgorICAgICMgbm9kZVZhbHVlIGlzIGFuIGFsaWFzIGZvciBkYXRhCisgICAgZGVmIF9nZXRfbm9kZVZhbHVlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhCi0gICAgZGVmIF9zZXRfZGF0YShzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKKyAgICBkZWYgX3NldF9ub2RlVmFsdWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCisgICAgbm9kZVZhbHVlID0gcHJvcGVydHkoX2dldF9ub2RlVmFsdWUsIF9zZXRfbm9kZVZhbHVlKQogCi0gICAgZGVmIF9nZXRfdGFyZ2V0KHNlbGYpOgorICAgICMgbm9kZU5hbWUgaXMgYW4gYWxpYXMgZm9yIHRhcmdldAorICAgIGRlZiBfZ2V0X25vZGVOYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50YXJnZXQKLSAgICBkZWYgX3NldF90YXJnZXQoc2VsZiwgdmFsdWUpOgotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWyd0YXJnZXQnXSA9IGRbJ25vZGVOYW1lJ10gPSB2YWx1ZQotCi0gICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgaWYgbmFtZSA9PSAiZGF0YSIgb3IgbmFtZSA9PSAibm9kZVZhbHVlIjoKLSAgICAgICAgICAgIHNlbGYuX19kaWN0X19bJ2RhdGEnXSA9IHNlbGYuX19kaWN0X19bJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgZWxpZiBuYW1lID09ICJ0YXJnZXQiIG9yIG5hbWUgPT0gIm5vZGVOYW1lIjoKLSAgICAgICAgICAgIHNlbGYuX19kaWN0X19bJ3RhcmdldCddID0gc2VsZi5fX2RpY3RfX1snbm9kZU5hbWUnXSA9IHZhbHVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0gdmFsdWUKKyAgICBkZWYgX3NldF9ub2RlTmFtZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYudGFyZ2V0ID0gdmFsdWUKKyAgICBub2RlTmFtZSA9IHByb3BlcnR5KF9nZXRfbm9kZU5hbWUsIF9zZXRfbm9kZU5hbWUpCiAKICAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIik6CiAgICAgICAgIHdyaXRlci53cml0ZSgiJXM8PyVzICVzPz4lcyIgJSAoaW5kZW50LHNlbGYudGFyZ2V0LCBzZWxmLmRhdGEsIG5ld2wpKQogCiAKIGNsYXNzIENoYXJhY3RlckRhdGEoQ2hpbGRsZXNzLCBOb2RlKToKKyAgICBfX3Nsb3RzX189KCdfZGF0YScsICdvd25lckRvY3VtZW50JywncGFyZW50Tm9kZScsICdwcmV2aW91c1NpYmxpbmcnLCAnbmV4dFNpYmxpbmcnKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLm93bmVyRG9jdW1lbnQgPSBzZWxmLnBhcmVudE5vZGUgPSBOb25lCisgICAgICAgIHNlbGYucHJldmlvdXNTaWJsaW5nID0gc2VsZi5uZXh0U2libGluZyA9IE5vbmUKKyAgICAgICAgc2VsZi5fZGF0YSA9ICcnCisgICAgICAgIE5vZGUuX19pbml0X18oc2VsZikKKwogICAgIGRlZiBfZ2V0X2xlbmd0aChzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGEpCiAgICAgX19sZW5fXyA9IF9nZXRfbGVuZ3RoCiAKICAgICBkZWYgX2dldF9kYXRhKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfX1snZGF0YSddCisgICAgICAgIHJldHVybiBzZWxmLl9kYXRhCiAgICAgZGVmIF9zZXRfZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSBkYXRhCisgICAgICAgIHNlbGYuX2RhdGEgPSBkYXRhCiAKLSAgICBfZ2V0X25vZGVWYWx1ZSA9IF9nZXRfZGF0YQotICAgIF9zZXRfbm9kZVZhbHVlID0gX3NldF9kYXRhCi0KLSAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBpZiBuYW1lID09ICJkYXRhIiBvciBuYW1lID09ICJub2RlVmFsdWUiOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1snZGF0YSddID0gc2VsZi5fX2RpY3RfX1snbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1tuYW1lXSA9IHZhbHVlCisgICAgZGF0YSA9IG5vZGVWYWx1ZSA9IHByb3BlcnR5KF9nZXRfZGF0YSwgX3NldF9kYXRhKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBkYXRhID0gc2VsZi5kYXRhCkBAIC0xMDQyLDEwICsxMDY3LDcgQEAKIAogCiBjbGFzcyBUZXh0KENoYXJhY3RlckRhdGEpOgotICAgICMgTWFrZSBzdXJlIHdlIGRvbid0IGFkZCBhbiBpbnN0YW5jZSBfX2RpY3RfXyBpZiB3ZSBkb24ndCBhbHJlYWR5Ci0gICAgIyBoYXZlIG9uZSwgYXQgbGVhc3Qgd2hlbiB0aGF0J3MgcG9zc2libGU6Ci0gICAgIyBYWFggdGhpcyBkb2VzIG5vdCB3b3JrLCBDaGFyYWN0ZXJEYXRhIGlzIGFuIG9sZC1zdHlsZSBjbGFzcwotICAgICMgX19zbG90c19fID0gKCkKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgbm9kZVR5cGUgPSBOb2RlLlRFWFRfTk9ERQogICAgIG5vZGVOYW1lID0gIiN0ZXh0IgpAQCAtMTExMiw5ICsxMTM0LDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgaWYgY29udGVudDoKLSAgICAgICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgICAgICBkWydkYXRhJ10gPSBjb250ZW50Ci0gICAgICAgICAgICBkWydub2RlVmFsdWUnXSA9IGNvbnRlbnQKKyAgICAgICAgICAgIHNlbGYuZGF0YSA9IGNvbnRlbnQKICAgICAgICAgICAgIHJldHVybiBzZWxmCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpAQCAtMTE2MCw3ICsxMTgwLDggQEAKICAgICBub2RlTmFtZSA9ICIjY29tbWVudCIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5ub2RlVmFsdWUgPSBkYXRhCisgICAgICAgIENoYXJhY3RlckRhdGEuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5fZGF0YSA9IGRhdGEKIAogICAgIGRlZiB3cml0ZXhtbChzZWxmLCB3cml0ZXIsIGluZGVudD0iIiwgYWRkaW5kZW50PSIiLCBuZXdsPSIiKToKICAgICAgICAgaWYgIi0tIiBpbiBzZWxmLmRhdGE6CkBAIC0xMTY5LDEwICsxMTkwLDcgQEAKIAogCiBjbGFzcyBDREFUQVNlY3Rpb24oVGV4dCk6Ci0gICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3QgYWRkIGFuIGluc3RhbmNlIF9fZGljdF9fIGlmIHdlIGRvbid0IGFscmVhZHkKLSAgICAjIGhhdmUgb25lLCBhdCBsZWFzdCB3aGVuIHRoYXQncyBwb3NzaWJsZToKLSAgICAjIFhYWCB0aGlzIGRvZXMgbm90IHdvcmssIFRleHQgaXMgYW4gb2xkLXN0eWxlIGNsYXNzCi0gICAgIyBfX3Nsb3RzX18gPSAoKQorICAgIF9fc2xvdHNfXyA9ICgpCiAKICAgICBub2RlVHlwZSA9IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFCiAgICAgbm9kZU5hbWUgPSAiI2NkYXRhLXNlY3Rpb24iCkBAIC0xMjUyLDggKzEyNzAsNyBAQAogY2xhc3MgSWRlbnRpZmllZDoKICAgICAiIiJNaXgtaW4gY2xhc3MgdGhhdCBzdXBwb3J0cyB0aGUgcHVibGljSWQgYW5kIHN5c3RlbUlkIGF0dHJpYnV0ZXMuIiIiCiAKLSAgICAjIFhYWCB0aGlzIGRvZXMgbm90IHdvcmssIHRoaXMgaXMgYW4gb2xkLXN0eWxlIGNsYXNzCi0gICAgIyBfX3Nsb3RzX18gPSAncHVibGljSWQnLCAnc3lzdGVtSWQnCisgICAgX19zbG90c19fID0gJ3B1YmxpY0lkJywgJ3N5c3RlbUlkJwogCiAgICAgZGVmIF9pZGVudGlmaWVkX21peGluX2luaXQoc2VsZiwgcHVibGljSWQsIHN5c3RlbUlkKToKICAgICAgICAgc2VsZi5wdWJsaWNJZCA9IHB1YmxpY0lkCkBAIC0xNTA0LDE4ICsxNTIxLDE5IEBACiAgICAgICAgIG5vZGUub3duZXJEb2N1bWVudC5faWRfc2VhcmNoX3N0YWNrPSBOb25lCiAKIGNsYXNzIERvY3VtZW50KE5vZGUsIERvY3VtZW50TFMpOgorICAgIF9fc2xvdHNfXyA9ICgnX2VsZW1faW5mbycsICdkb2N0eXBlJywKKyAgICAgICAgICAgICAgICAgJ19pZF9zZWFyY2hfc3RhY2snLCAnY2hpbGROb2RlcycsICdfaWRfY2FjaGUnKQogICAgIF9jaGlsZF9ub2RlX3R5cGVzID0gKE5vZGUuRUxFTUVOVF9OT0RFLCBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlLkNPTU1FTlRfTk9ERSwgTm9kZS5ET0NVTUVOVF9UWVBFX05PREUpCiAKKyAgICBpbXBsZW1lbnRhdGlvbiA9IERPTUltcGxlbWVudGF0aW9uKCkKICAgICBub2RlVHlwZSA9IE5vZGUuRE9DVU1FTlRfTk9ERQogICAgIG5vZGVOYW1lID0gIiNkb2N1bWVudCIKICAgICBub2RlVmFsdWUgPSBOb25lCiAgICAgYXR0cmlidXRlcyA9IE5vbmUKLSAgICBkb2N0eXBlID0gTm9uZQogICAgIHBhcmVudE5vZGUgPSBOb25lCiAgICAgcHJldmlvdXNTaWJsaW5nID0gbmV4dFNpYmxpbmcgPSBOb25lCiAKLSAgICBpbXBsZW1lbnRhdGlvbiA9IERPTUltcGxlbWVudGF0aW9uKCkKIAogICAgICMgRG9jdW1lbnQgYXR0cmlidXRlcyBmcm9tIExldmVsIDMgKFdEIDkgQXByaWwgMjAwMikKIApAQCAtMTUzMCw2ICsxNTQ4LDcgQEAKICAgICBfbWFnaWNfaWRfY291bnQgPSAwCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZG9jdHlwZSA9IE5vbmUKICAgICAgICAgc2VsZi5jaGlsZE5vZGVzID0gTm9kZUxpc3QoKQogICAgICAgICAjIG1hcHBpbmcgb2YgKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSAtPiBFbGVtZW50SW5mbwogICAgICAgICAjICAgICAgICBhbmQgdGFnTmFtZSAtPiBFbGVtZW50SW5mbwpAQCAtMTc3MSwxMiArMTc5MCwxMiBAQAogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RTdXBwb3J0ZWRFcnIoImNhbm5vdCBpbXBvcnQgZG9jdW1lbnQgdHlwZSBub2RlcyIpCiAgICAgICAgIHJldHVybiBfY2xvbmVfbm9kZShub2RlLCBkZWVwLCBzZWxmKQogCi0gICAgZGVmIHdyaXRleG1sKHNlbGYsIHdyaXRlciwgaW5kZW50PSIiLCBhZGRpbmRlbnQ9IiIsIG5ld2w9IiIsCi0gICAgICAgICAgICAgICAgIGVuY29kaW5nID0gTm9uZSk6CisgICAgZGVmIHdyaXRleG1sKHNlbGYsIHdyaXRlciwgaW5kZW50PSIiLCBhZGRpbmRlbnQ9IiIsIG5ld2w9IiIsIGVuY29kaW5nPU5vbmUpOgogICAgICAgICBpZiBlbmNvZGluZyBpcyBOb25lOgogICAgICAgICAgICAgd3JpdGVyLndyaXRlKCc8P3htbCB2ZXJzaW9uPSIxLjAiID8+JytuZXdsKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgd3JpdGVyLndyaXRlKCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSIlcyI/PiVzJyAlIChlbmNvZGluZywgbmV3bCkpCisgICAgICAgICAgICB3cml0ZXIud3JpdGUoJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IiVzIj8+JXMnICUgKAorICAgICAgICAgICAgICAgIGVuY29kaW5nLCBuZXdsKSkKICAgICAgICAgZm9yIG5vZGUgaW4gc2VsZi5jaGlsZE5vZGVzOgogICAgICAgICAgICAgbm9kZS53cml0ZXhtbCh3cml0ZXIsIGluZGVudCwgYWRkaW5kZW50LCBuZXdsKQogCkBAIC0xODE1LDE3ICsxODM0LDE1IEBACiAgICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGVOb2RlKG4pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbGVtZW50ID0gTm9uZQotICAgICAgICAjIGF2b2lkIF9fc2V0YXR0cl9fCi0gICAgICAgIGQgPSBuLl9fZGljdF9fCi0gICAgICAgIGRbJ3ByZWZpeCddID0gcHJlZml4Ci0gICAgICAgIGRbJ2xvY2FsTmFtZSddID0gbG9jYWxOYW1lCi0gICAgICAgIGRbJ25hbWVzcGFjZVVSSSddID0gbmFtZXNwYWNlVVJJCi0gICAgICAgIGRbJ25vZGVOYW1lJ10gPSBuYW1lCisgICAgICAgIG4ucHJlZml4ID0gcHJlZml4CisgICAgICAgIG4uX2xvY2FsTmFtZSA9IGxvY2FsTmFtZQorICAgICAgICBuLm5hbWVzcGFjZVVSSSA9IG5hbWVzcGFjZVVSSQorICAgICAgICBuLm5vZGVOYW1lID0gbmFtZQogICAgICAgICBpZiBuLm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFOgotICAgICAgICAgICAgZFsndGFnTmFtZSddID0gbmFtZQorICAgICAgICAgICAgbi50YWdOYW1lID0gbmFtZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBhdHRyaWJ1dGUgbm9kZQotICAgICAgICAgICAgZFsnbmFtZSddID0gbmFtZQorICAgICAgICAgICAgbi5uYW1lID0gbmFtZQogICAgICAgICAgICAgaWYgZWxlbWVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5vZGUobikKICAgICAgICAgICAgICAgICBpZiBpc19pZDoKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL3B1bGxkb20ucHkgYi9MaWIveG1sL2RvbS9wdWxsZG9tLnB5CmluZGV4IGQ1YWM4YjIuLjQzNTA0ZjcgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL3B1bGxkb20ucHkKKysrIGIvTGliL3htbC9kb20vcHVsbGRvbS5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCB4bWwuc2F4CiBpbXBvcnQgeG1sLnNheC5oYW5kbGVyCi1pbXBvcnQgdHlwZXMKIAogU1RBUlRfRUxFTUVOVCA9ICJTVEFSVF9FTEVNRU5UIgogRU5EX0VMRU1FTlQgPSAiRU5EX0VMRU1FTlQiCkBAIC0zMzQsMTAgKzMzMyw3IEBACiAgICAgcmV0dXJuIERPTUV2ZW50U3RyZWFtKHN0cmVhbSwgcGFyc2VyLCBidWZzaXplKQogCiBkZWYgcGFyc2VTdHJpbmcoc3RyaW5nLCBwYXJzZXI9Tm9uZSk6Ci0gICAgdHJ5OgotICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogCiAgICAgYnVmc2l6ZSA9IGxlbihzdHJpbmcpCiAgICAgYnVmID0gU3RyaW5nSU8oc3RyaW5nKQpkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKaW5kZXggZjk0YzQ4Yy4uZWE0ZmE3YSAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CkBAIC02OCw4ICs2OCw5IEBACiAgICAgInRvc3RyaW5nIiwgInRvc3RyaW5nbGlzdCIsCiAgICAgIlRyZWVCdWlsZGVyIiwKICAgICAiVkVSU0lPTiIsCi0gICAgIlhNTCIsCisgICAgIlhNTCIsICJYTUxJRCIsCiAgICAgIlhNTFBhcnNlciIsICJYTUxUcmVlQnVpbGRlciIsCisgICAgInJlZ2lzdGVyX25hbWVzcGFjZSIsCiAgICAgXQogCiBWRVJTSU9OID0gIjEuMy4wIgpAQCAtOTksMzQgKzEwMCwxMSBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHJlCiBpbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBpbworaW1wb3J0IGNvbnRleHRsaWIKIAorZnJvbSAuIGltcG9ydCBFbGVtZW50UGF0aAogCi1jbGFzcyBfU2ltcGxlRWxlbWVudFBhdGg6Ci0gICAgIyBlbXVsYXRlIHByZS0xLjIgZmluZC9maW5kdGV4dC9maW5kYWxsIGJlaGF2aW91cgotICAgIGRlZiBmaW5kKHNlbGYsIGVsZW1lbnQsIHRhZywgbmFtZXNwYWNlcz1Ob25lKToKLSAgICAgICAgZm9yIGVsZW0gaW4gZWxlbWVudDoKLSAgICAgICAgICAgIGlmIGVsZW0udGFnID09IHRhZzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbQotICAgICAgICByZXR1cm4gTm9uZQotICAgIGRlZiBmaW5kdGV4dChzZWxmLCBlbGVtZW50LCB0YWcsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKToKLSAgICAgICAgZWxlbSA9IHNlbGYuZmluZChlbGVtZW50LCB0YWcpCi0gICAgICAgIGlmIGVsZW0gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBkZWZhdWx0Ci0gICAgICAgIHJldHVybiBlbGVtLnRleHQgb3IgIiIKLSAgICBkZWYgaXRlcmZpbmQoc2VsZiwgZWxlbWVudCwgdGFnLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgICAgICBpZiB0YWdbOjNdID09ICIuLy8iOgotICAgICAgICAgICAgZm9yIGVsZW0gaW4gZWxlbWVudC5pdGVyKHRhZ1szOl0pOgotICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KLSAgICAgICAgZm9yIGVsZW0gaW4gZWxlbWVudDoKLSAgICAgICAgICAgIGlmIGVsZW0udGFnID09IHRhZzoKLSAgICAgICAgICAgICAgICB5aWVsZCBlbGVtCi0gICAgZGVmIGZpbmRhbGwoc2VsZiwgZWxlbWVudCwgdGFnLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgICAgICByZXR1cm4gbGlzdChzZWxmLml0ZXJmaW5kKGVsZW1lbnQsIHRhZywgbmFtZXNwYWNlcykpCi0KLXRyeToKLSAgICBmcm9tIC4gaW1wb3J0IEVsZW1lbnRQYXRoCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgRWxlbWVudFBhdGggPSBfU2ltcGxlRWxlbWVudFBhdGgoKQogCiAjIwogIyBQYXJzZXIgZXJyb3IuICBUaGlzIGlzIGEgc3ViY2xhc3Mgb2YgPGI+U3ludGF4RXJyb3I8L2I+LgpAQCAtMTQ4LDkgKzEyNiw5IEBACiAjIEBkZWZyZXR1cm4gZmxhZwogCiBkZWYgaXNlbGVtZW50KGVsZW1lbnQpOgotICAgICMgRklYTUU6IG5vdCBzdXJlIGFib3V0IHRoaXM7IG1pZ2h0IGJlIGEgYmV0dGVyIGlkZWEgdG8gbG9vawotICAgICMgZm9yIHRhZy9hdHRyaWIvdGV4dCBhdHRyaWJ1dGVzCi0gICAgcmV0dXJuIGlzaW5zdGFuY2UoZWxlbWVudCwgRWxlbWVudCkgb3IgaGFzYXR0cihlbGVtZW50LCAidGFnIikKKyAgICAjIEZJWE1FOiBub3Qgc3VyZSBhYm91dCB0aGlzOworICAgICMgaXNpbnN0YW5jZShlbGVtZW50LCBFbGVtZW50KSBvciBsb29rIGZvciB0YWcvYXR0cmliL3RleHQgYXR0cmlidXRlcworICAgIHJldHVybiBoYXNhdHRyKGVsZW1lbnQsICd0YWcnKQogCiAjIwogIyBFbGVtZW50IGNsYXNzLiAgVGhpcyBjbGFzcyBkZWZpbmVzIHRoZSBFbGVtZW50IGludGVyZmFjZSwgYW5kCkBAIC0yMDUsNiArMTgzLDkgQEAKICAgICAjIGNvbnN0cnVjdG9yCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGFnLCBhdHRyaWI9e30sICoqZXh0cmEpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhdHRyaWIsIGRpY3QpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhdHRyaWIgbXVzdCBiZSBkaWN0LCBub3QgJXMiICUgKAorICAgICAgICAgICAgICAgIGF0dHJpYi5fX2NsYXNzX18uX19uYW1lX18sKSkKICAgICAgICAgYXR0cmliID0gYXR0cmliLmNvcHkoKQogICAgICAgICBhdHRyaWIudXBkYXRlKGV4dHJhKQogICAgICAgICBzZWxmLnRhZyA9IHRhZwpAQCAtMjk4LDcgKzI3OSw3IEBACiAgICAgIyBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBhZGQuCiAKICAgICBkZWYgYXBwZW5kKHNlbGYsIGVsZW1lbnQpOgotICAgICAgICAjIGFzc2VydCBpc2VsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2lzX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgc2VsZi5fY2hpbGRyZW4uYXBwZW5kKGVsZW1lbnQpCiAKICAgICAjIwpAQCAtMzA4LDggKzI4OSw4IEBACiAgICAgIyBAc2luY2UgMS4zCiAKICAgICBkZWYgZXh0ZW5kKHNlbGYsIGVsZW1lbnRzKToKLSAgICAgICAgIyBmb3IgZWxlbWVudCBpbiBlbGVtZW50czoKLSAgICAgICAgIyAgICAgYXNzZXJ0IGlzZWxlbWVudChlbGVtZW50KQorICAgICAgICBmb3IgZWxlbWVudCBpbiBlbGVtZW50czoKKyAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pc19lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgIHNlbGYuX2NoaWxkcmVuLmV4dGVuZChlbGVtZW50cykKIAogICAgICMjCkBAIC0zMTgsOSArMjk5LDEzIEBACiAgICAgIyBAcGFyYW0gaW5kZXggV2hlcmUgdG8gaW5zZXJ0IHRoZSBuZXcgc3ViZWxlbWVudC4KIAogICAgIGRlZiBpbnNlcnQoc2VsZiwgaW5kZXgsIGVsZW1lbnQpOgotICAgICAgICAjIGFzc2VydCBpc2VsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2lzX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgc2VsZi5fY2hpbGRyZW4uaW5zZXJ0KGluZGV4LCBlbGVtZW50KQogCisgICAgZGVmIF9hc3NlcnRfaXNfZWxlbWVudChzZWxmLCBlKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZSwgRWxlbWVudCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2V4cGVjdGVkIGFuIEVsZW1lbnQsIG5vdCAlcycgJSB0eXBlKGUpLl9fbmFtZV9fKQorCiAgICAgIyMKICAgICAjIFJlbW92ZXMgYSBtYXRjaGluZyBzdWJlbGVtZW50LiAgVW5saWtlIHRoZSA8Yj5maW5kPC9iPiBtZXRob2RzLAogICAgICMgdGhpcyBtZXRob2QgY29tcGFyZXMgZWxlbWVudHMgYmFzZWQgb24gaWRlbnRpdHksIG5vdCBvbiB0YWcKQEAgLTgwOSw1OSArNzk0LDM4IEBACiAgICAgIyAgICAgTm9uZSBmb3Igb25seSBpZiBub3QgVVMtQVNDSUkgb3IgVVRGLTggb3IgVW5pY29kZS4gIE5vbmUgaXMgZGVmYXVsdC4KIAogICAgIGRlZiB3cml0ZShzZWxmLCBmaWxlX29yX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgICAgIHhtbF9kZWNsYXJhdGlvbj1Ob25lLAogICAgICAgICAgICAgICBkZWZhdWx0X25hbWVzcGFjZT1Ob25lLAogICAgICAgICAgICAgICBtZXRob2Q9Tm9uZSk6Ci0gICAgICAgICMgYXNzZXJ0IHNlbGYuX3Jvb3QgaXMgbm90IE5vbmUKICAgICAgICAgaWYgbm90IG1ldGhvZDoKICAgICAgICAgICAgIG1ldGhvZCA9ICJ4bWwiCiAgICAgICAgIGVsaWYgbWV0aG9kIG5vdCBpbiBfc2VyaWFsaXplOgotICAgICAgICAgICAgIyBGSVhNRTogcmFpc2UgYW4gSW1wb3J0RXJyb3IgZm9yIGMxNG4gaWYgRWxlbWVudEMxNE4gaXMgbWlzc2luZz8KICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24gbWV0aG9kICVyIiAlIG1ldGhvZCkKICAgICAgICAgaWYgbm90IGVuY29kaW5nOgogICAgICAgICAgICAgaWYgbWV0aG9kID09ICJjMTRuIjoKICAgICAgICAgICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCIKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSAidXMtYXNjaWkiCi0gICAgICAgIGVsaWYgZW5jb2RpbmcgPT0gc3RyOiAgIyBseG1sLmV0cmVlIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICAgICBlbmNvZGluZyA9ICJ1bmljb2RlIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZy5sb3dlcigpCi0gICAgICAgIGlmIGhhc2F0dHIoZmlsZV9vcl9maWxlbmFtZSwgIndyaXRlIik6Ci0gICAgICAgICAgICBmaWxlID0gZmlsZV9vcl9maWxlbmFtZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgZW5jb2RpbmcgIT0gInVuaWNvZGUiOgotICAgICAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVfb3JfZmlsZW5hbWUsICJ3YiIpCisgICAgICAgIHdpdGggX2dldF93cml0ZXIoZmlsZV9vcl9maWxlbmFtZSwgZW5jb2RpbmcpIGFzIHdyaXRlOgorICAgICAgICAgICAgaWYgbWV0aG9kID09ICJ4bWwiIGFuZCAoeG1sX2RlY2xhcmF0aW9uIG9yCisgICAgICAgICAgICAgICAgICAgICh4bWxfZGVjbGFyYXRpb24gaXMgTm9uZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nIG5vdCBpbiAoInV0Zi04IiwgInVzLWFzY2lpIiwgInVuaWNvZGUiKSkpOgorICAgICAgICAgICAgICAgIGRlY2xhcmVkX2VuY29kaW5nID0gZW5jb2RpbmcKKyAgICAgICAgICAgICAgICBpZiBlbmNvZGluZyA9PSAidW5pY29kZSI6CisgICAgICAgICAgICAgICAgICAgICMgUmV0cmlldmUgdGhlIGRlZmF1bHQgZW5jb2RpbmcgZm9yIHRoZSB4bWwgZGVjbGFyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGxvY2FsZQorICAgICAgICAgICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgICAgICAgICAgICAgICAgd3JpdGUoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iICUgKAorICAgICAgICAgICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZywpKQorICAgICAgICAgICAgaWYgbWV0aG9kID09ICJ0ZXh0IjoKKyAgICAgICAgICAgICAgICBfc2VyaWFsaXplX3RleHQod3JpdGUsIHNlbGYuX3Jvb3QpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVfb3JfZmlsZW5hbWUsICJ3IikKLSAgICAgICAgaWYgZW5jb2RpbmcgIT0gInVuaWNvZGUiOgotICAgICAgICAgICAgZGVmIHdyaXRlKHRleHQpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGUud3JpdGUodGV4dC5lbmNvZGUoZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIF9yYWlzZV9zZXJpYWxpemF0aW9uX2Vycm9yKHRleHQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3cml0ZSA9IGZpbGUud3JpdGUKLSAgICAgICAgaWYgbWV0aG9kID09ICJ4bWwiIGFuZCAoeG1sX2RlY2xhcmF0aW9uIG9yCi0gICAgICAgICAgICAgICAgKHhtbF9kZWNsYXJhdGlvbiBpcyBOb25lIGFuZAotICAgICAgICAgICAgICAgICBlbmNvZGluZyBub3QgaW4gKCJ1dGYtOCIsICJ1cy1hc2NpaSIsICJ1bmljb2RlIikpKToKLSAgICAgICAgICAgIGRlY2xhcmVkX2VuY29kaW5nID0gZW5jb2RpbmcKLSAgICAgICAgICAgIGlmIGVuY29kaW5nID09ICJ1bmljb2RlIjoKLSAgICAgICAgICAgICAgICAjIFJldHJpZXZlIHRoZSBkZWZhdWx0IGVuY29kaW5nIGZvciB0aGUgeG1sIGRlY2xhcmF0aW9uCi0gICAgICAgICAgICAgICAgaW1wb3J0IGxvY2FsZQotICAgICAgICAgICAgICAgIGRlY2xhcmVkX2VuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKLSAgICAgICAgICAgIHdyaXRlKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/PlxuIiAlIGRlY2xhcmVkX2VuY29kaW5nKQotICAgICAgICBpZiBtZXRob2QgPT0gInRleHQiOgotICAgICAgICAgICAgX3NlcmlhbGl6ZV90ZXh0KHdyaXRlLCBzZWxmLl9yb290KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcW5hbWVzLCBuYW1lc3BhY2VzID0gX25hbWVzcGFjZXMoc2VsZi5fcm9vdCwgZGVmYXVsdF9uYW1lc3BhY2UpCi0gICAgICAgICAgICBzZXJpYWxpemUgPSBfc2VyaWFsaXplW21ldGhvZF0KLSAgICAgICAgICAgIHNlcmlhbGl6ZSh3cml0ZSwgc2VsZi5fcm9vdCwgcW5hbWVzLCBuYW1lc3BhY2VzKQotICAgICAgICBpZiBmaWxlX29yX2ZpbGVuYW1lIGlzIG5vdCBmaWxlOgotICAgICAgICAgICAgZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgcW5hbWVzLCBuYW1lc3BhY2VzID0gX25hbWVzcGFjZXMoc2VsZi5fcm9vdCwgZGVmYXVsdF9uYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgc2VyaWFsaXplID0gX3NlcmlhbGl6ZVttZXRob2RdCisgICAgICAgICAgICAgICAgc2VyaWFsaXplKHdyaXRlLCBzZWxmLl9yb290LCBxbmFtZXMsIG5hbWVzcGFjZXMpCiAKICAgICBkZWYgd3JpdGVfYzE0bihzZWxmLCBmaWxlKToKICAgICAgICAgIyBseG1sLmV0cmVlIGNvbXBhdGliaWxpdHkuICB1c2Ugb3V0cHV0IG1ldGhvZCBpbnN0ZWFkCkBAIC04NzAsNiArODM0LDU4IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIHNlcmlhbGl6YXRpb24gc3VwcG9ydAogCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIF9nZXRfd3JpdGVyKGZpbGVfb3JfZmlsZW5hbWUsIGVuY29kaW5nKToKKyAgICAjIHJldHVybnMgdGV4dCB3cml0ZSBtZXRob2QgYW5kIHJlbGVhc2UgYWxsIHJlc291cnNlcyBhZnRlciB1c2luZworICAgIHRyeToKKyAgICAgICAgd3JpdGUgPSBmaWxlX29yX2ZpbGVuYW1lLndyaXRlCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAjIGZpbGVfb3JfZmlsZW5hbWUgaXMgYSBmaWxlIG5hbWUKKyAgICAgICAgaWYgZW5jb2RpbmcgPT0gInVuaWNvZGUiOgorICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZV9vcl9maWxlbmFtZSwgInciKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZV9vcl9maWxlbmFtZSwgInciLCBlbmNvZGluZz1lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0ieG1sY2hhcnJlZnJlcGxhY2UiKQorICAgICAgICB3aXRoIGZpbGU6CisgICAgICAgICAgICB5aWVsZCBmaWxlLndyaXRlCisgICAgZWxzZToKKyAgICAgICAgIyBmaWxlX29yX2ZpbGVuYW1lIGlzIGEgZmlsZS1saWtlIG9iamVjdAorICAgICAgICAjIGVuY29kaW5nIGRldGVybWluZXMgaWYgaXQgaXMgYSB0ZXh0IG9yIGJpbmFyeSB3cml0ZXIKKyAgICAgICAgaWYgZW5jb2RpbmcgPT0gInVuaWNvZGUiOgorICAgICAgICAgICAgIyB1c2UgYSB0ZXh0IHdyaXRlciBhcyBpcworICAgICAgICAgICAgeWllbGQgd3JpdGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgd3JhcCBhIGJpbmFyeSB3cml0ZXIgd2l0aCBUZXh0SU9XcmFwcGVyCisgICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlX29yX2ZpbGVuYW1lLCBpby5CdWZmZXJlZElPQmFzZSk6CisgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBmaWxlX29yX2ZpbGVuYW1lCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpbGVfb3JfZmlsZW5hbWUsIGlvLlJhd0lPQmFzZSk6CisgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBpby5CdWZmZXJlZFdyaXRlcihmaWxlX29yX2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICAjIEtlZXAgdGhlIG9yaWdpbmFsIGZpbGUgb3BlbiB3aGVuIHRoZSBCdWZmZXJlZFdyaXRlciBpcworICAgICAgICAgICAgICAgICAgICAjIGRlc3Ryb3llZAorICAgICAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhmaWxlLmRldGFjaCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgdG8gaGFuZGxlIHBhc3NlZCBvYmplY3RzIHRoYXQgYXJlbid0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAjIElPQmFzZSBoaWVyYXJjaHksIGJ1dCBqdXN0IGhhdmUgYSB3cml0ZSBtZXRob2QKKyAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGlvLkJ1ZmZlcmVkSU9CYXNlKCkKKyAgICAgICAgICAgICAgICAgICAgZmlsZS53cml0YWJsZSA9IGxhbWJkYTogVHJ1ZQorICAgICAgICAgICAgICAgICAgICBmaWxlLndyaXRlID0gd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUZXh0SU9XcmFwcGVyIHVzZXMgdGhpcyBtZXRob2RzIHRvIGRldGVybWluZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBCT00gKGZvciBVVEYtMTYsIGV0Yykgc2hvdWxkIGJlIGFkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnNlZWthYmxlID0gZmlsZV9vcl9maWxlbmFtZS5zZWVrYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS50ZWxsID0gZmlsZV9vcl9maWxlbmFtZS50ZWxsCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBmaWxlID0gaW8uVGV4dElPV3JhcHBlcihmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0ieG1sY2hhcnJlZnJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9IlxuIikKKyAgICAgICAgICAgICAgICAjIEtlZXAgdGhlIG9yaWdpbmFsIGZpbGUgb3BlbiB3aGVuIHRoZSBUZXh0SU9XcmFwcGVyIGlzCisgICAgICAgICAgICAgICAgIyBkZXN0cm95ZWQKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhmaWxlLmRldGFjaCkKKyAgICAgICAgICAgICAgICB5aWVsZCBmaWxlLndyaXRlCisKIGRlZiBfbmFtZXNwYWNlcyhlbGVtLCBkZWZhdWx0X25hbWVzcGFjZT1Ob25lKToKICAgICAjIGlkZW50aWZ5IG5hbWVzcGFjZXMgdXNlZCBpbiB0aGlzIHRyZWUKIApAQCAtOTA5LDExICs5MjUsNyBAQAogICAgICAgICAgICAgX3JhaXNlX3NlcmlhbGl6YXRpb25fZXJyb3IocW5hbWUpCiAKICAgICAjIHBvcHVsYXRlIHFuYW1lIGFuZCBuYW1lc3BhY2VzIHRhYmxlCi0gICAgdHJ5OgotICAgICAgICBpdGVyYXRlID0gZWxlbS5pdGVyCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICBpdGVyYXRlID0gZWxlbS5nZXRpdGVyYXRvciAjIGNFVCBjb21wYXRpYmlsaXR5Ci0gICAgZm9yIGVsZW0gaW4gaXRlcmF0ZSgpOgorICAgIGZvciBlbGVtIGluIGVsZW0uaXRlcigpOgogICAgICAgICB0YWcgPSBlbGVtLnRhZwogICAgICAgICBpZiBpc2luc3RhbmNlKHRhZywgUU5hbWUpOgogICAgICAgICAgICAgaWYgdGFnLnRleHQgbm90IGluIHFuYW1lczoKQEAgLTEwODUsNiArMTA5Nyw4IEBACiAgICAgIyBkdWJsaW4gY29yZQogICAgICJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI6ICJkYyIsCiB9CisjIEZvciB0ZXN0cyBhbmQgdHJvdWJsZXNob290aW5nCityZWdpc3Rlcl9uYW1lc3BhY2UuX25hbWVzcGFjZV9tYXAgPSBfbmFtZXNwYWNlX21hcAogCiBkZWYgX3JhaXNlX3NlcmlhbGl6YXRpb25fZXJyb3IodGV4dCk6CiAgICAgcmFpc2UgVHlwZUVycm9yKApAQCAtMTE1MywyMiArMTE2NywxMyBAQAogIyBAZGVmcmV0dXJuIHN0cmluZwogCiBkZWYgdG9zdHJpbmcoZWxlbWVudCwgZW5jb2Rpbmc9Tm9uZSwgbWV0aG9kPU5vbmUpOgotICAgIGNsYXNzIGR1bW15OgotICAgICAgICBwYXNzCi0gICAgZGF0YSA9IFtdCi0gICAgZmlsZSA9IGR1bW15KCkKLSAgICBmaWxlLndyaXRlID0gZGF0YS5hcHBlbmQKLSAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShmaWxlLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKLSAgICBpZiBlbmNvZGluZyBpbiAoc3RyLCAidW5pY29kZSIpOgotICAgICAgICByZXR1cm4gIiIuam9pbihkYXRhKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBiIiIuam9pbihkYXRhKQorICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCkgaWYgZW5jb2RpbmcgPT0gJ3VuaWNvZGUnIGVsc2UgaW8uQnl0ZXNJTygpCisgICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoc3RyZWFtLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKKyAgICByZXR1cm4gc3RyZWFtLmdldHZhbHVlKCkKIAogIyMKICMgR2VuZXJhdGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIFhNTCBlbGVtZW50LCBpbmNsdWRpbmcgYWxsCi0jIHN1YmVsZW1lbnRzLiAgSWYgZW5jb2RpbmcgaXMgRmFsc2UsIHRoZSBzdHJpbmcgaXMgcmV0dXJuZWQgYXMgYQotIyBzZXF1ZW5jZSBvZiBzdHJpbmcgZnJhZ21lbnRzOyBvdGhlcndpc2UgaXQgaXMgYSBzZXF1ZW5jZSBvZgotIyBieXRlc3RyaW5ncy4KKyMgc3ViZWxlbWVudHMuCiAjCiAjIEBwYXJhbSBlbGVtZW50IEFuIEVsZW1lbnQgaW5zdGFuY2UuCiAjIEBrZXlwYXJhbSBlbmNvZGluZyBPcHRpb25hbCBvdXRwdXQgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLgpAQCAtMTE3OSwxNSArMTE4NCwyOSBAQAogIyBAZGVmcmV0dXJuIHNlcXVlbmNlCiAjIEBzaW5jZSAxLjMKIAorY2xhc3MgX0xpc3REYXRhU3RyZWFtKGlvLkJ1ZmZlcmVkSU9CYXNlKToKKyAgICAiIiIgQW4gYXV4aWxpYXJ5IHN0cmVhbSBhY2N1bXVsYXRpbmcgaW50byBhIGxpc3QgcmVmZXJlbmNlCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxzdCk6CisgICAgICAgIHNlbGYubHN0ID0gbHN0CisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgYik6CisgICAgICAgIHNlbGYubHN0LmFwcGVuZChiKQorCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5sc3QpCisKIGRlZiB0b3N0cmluZ2xpc3QoZWxlbWVudCwgZW5jb2Rpbmc9Tm9uZSwgbWV0aG9kPU5vbmUpOgotICAgIGNsYXNzIGR1bW15OgotICAgICAgICBwYXNzCi0gICAgZGF0YSA9IFtdCi0gICAgZmlsZSA9IGR1bW15KCkKLSAgICBmaWxlLndyaXRlID0gZGF0YS5hcHBlbmQKLSAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShmaWxlLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKLSAgICAjIEZJWE1FOiBtZXJnZSBzbWFsbCBmcmFnbWVudHMgaW50byBsYXJnZXIgcGFydHMKLSAgICByZXR1cm4gZGF0YQorICAgIGxzdCA9IFtdCisgICAgc3RyZWFtID0gX0xpc3REYXRhU3RyZWFtKGxzdCkKKyAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShzdHJlYW0sIGVuY29kaW5nLCBtZXRob2Q9bWV0aG9kKQorICAgIHJldHVybiBsc3QKIAogIyMKICMgV3JpdGVzIGFuIGVsZW1lbnQgdHJlZSBvciBlbGVtZW50IHN0cnVjdHVyZSB0byBzeXMuc3Rkb3V0LiAgVGhpcwpAQCAtMTUwOSwyNCArMTUyOCwzMCBAQAogICAgICAgICBzZWxmLnRhcmdldCA9IHNlbGYuX3RhcmdldCA9IHRhcmdldAogICAgICAgICBzZWxmLl9lcnJvciA9IGV4cGF0LmVycm9yCiAgICAgICAgIHNlbGYuX25hbWVzID0ge30gIyBuYW1lIG1lbW8gY2FjaGUKLSAgICAgICAgIyBjYWxsYmFja3MKKyAgICAgICAgIyBtYWluIGNhbGxiYWNrcwogICAgICAgICBwYXJzZXIuRGVmYXVsdEhhbmRsZXJFeHBhbmQgPSBzZWxmLl9kZWZhdWx0Ci0gICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnQKLSAgICAgICAgcGFyc2VyLkVuZEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fZW5kCi0gICAgICAgIHBhcnNlci5DaGFyYWN0ZXJEYXRhSGFuZGxlciA9IHNlbGYuX2RhdGEKLSAgICAgICAgIyBvcHRpb25hbCBjYWxsYmFja3MKLSAgICAgICAgcGFyc2VyLkNvbW1lbnRIYW5kbGVyID0gc2VsZi5fY29tbWVudAotICAgICAgICBwYXJzZXIuUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IHNlbGYuX3BpCisgICAgICAgIGlmIGhhc2F0dHIodGFyZ2V0LCAnc3RhcnQnKToKKyAgICAgICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnQKKyAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdlbmQnKToKKyAgICAgICAgICAgIHBhcnNlci5FbmRFbGVtZW50SGFuZGxlciA9IHNlbGYuX2VuZAorICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ2RhdGEnKToKKyAgICAgICAgICAgIHBhcnNlci5DaGFyYWN0ZXJEYXRhSGFuZGxlciA9IHRhcmdldC5kYXRhCisgICAgICAgICMgbWlzY2VsbGFuZW91cyBjYWxsYmFja3MKKyAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdjb21tZW50Jyk6CisgICAgICAgICAgICBwYXJzZXIuQ29tbWVudEhhbmRsZXIgPSB0YXJnZXQuY29tbWVudAorICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ3BpJyk6CisgICAgICAgICAgICBwYXJzZXIuUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IHRhcmdldC5waQogICAgICAgICAjIGxldCBleHBhdCBkbyB0aGUgYnVmZmVyaW5nLCBpZiBzdXBwb3J0ZWQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLmJ1ZmZlcl90ZXh0ID0gMQorICAgICAgICAgICAgcGFyc2VyLmJ1ZmZlcl90ZXh0ID0gMQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgdXNlIG5ldy1zdHlsZSBhdHRyaWJ1dGUgaGFuZGxpbmcsIGlmIHN1cHBvcnRlZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9wYXJzZXIub3JkZXJlZF9hdHRyaWJ1dGVzID0gMQotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLnNwZWNpZmllZF9hdHRyaWJ1dGVzID0gMQotICAgICAgICAgICAgcGFyc2VyLlN0YXJ0RWxlbWVudEhhbmRsZXIgPSBzZWxmLl9zdGFydF9saXN0CisgICAgICAgICAgICBwYXJzZXIub3JkZXJlZF9hdHRyaWJ1dGVzID0gMQorICAgICAgICAgICAgcGFyc2VyLnNwZWNpZmllZF9hdHRyaWJ1dGVzID0gMQorICAgICAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdzdGFydCcpOgorICAgICAgICAgICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnRfbGlzdAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuX2RvY3R5cGUgPSBOb25lCkBAIC0xNTcwLDQ0ICsxNTk1LDI5IEBACiAgICAgICAgICAgICAgICAgYXR0cmliW2ZpeG5hbWUoYXR0cmliX2luW2ldKV0gPSBhdHRyaWJfaW5baSsxXQogICAgICAgICByZXR1cm4gc2VsZi50YXJnZXQuc3RhcnQodGFnLCBhdHRyaWIpCiAKLSAgICBkZWYgX2RhdGEoc2VsZiwgdGV4dCk6Ci0gICAgICAgIHJldHVybiBzZWxmLnRhcmdldC5kYXRhKHRleHQpCi0KICAgICBkZWYgX2VuZChzZWxmLCB0YWcpOgogICAgICAgICByZXR1cm4gc2VsZi50YXJnZXQuZW5kKHNlbGYuX2ZpeG5hbWUodGFnKSkKIAotICAgIGRlZiBfY29tbWVudChzZWxmLCBkYXRhKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29tbWVudCA9IHNlbGYudGFyZ2V0LmNvbW1lbnQKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNvbW1lbnQoZGF0YSkKLQotICAgIGRlZiBfcGkoc2VsZiwgdGFyZ2V0LCBkYXRhKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGkgPSBzZWxmLnRhcmdldC5waQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcGkodGFyZ2V0LCBkYXRhKQotCiAgICAgZGVmIF9kZWZhdWx0KHNlbGYsIHRleHQpOgogICAgICAgICBwcmVmaXggPSB0ZXh0WzoxXQogICAgICAgICBpZiBwcmVmaXggPT0gIiYiOgogICAgICAgICAgICAgIyBkZWFsIHdpdGggdW5kZWZpbmVkIGVudGl0aWVzCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi50YXJnZXQuZGF0YShzZWxmLmVudGl0eVt0ZXh0WzE6LTFdXSkKKyAgICAgICAgICAgICAgICBkYXRhX2hhbmRsZXIgPSBzZWxmLnRhcmdldC5kYXRhCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YV9oYW5kbGVyKHNlbGYuZW50aXR5W3RleHRbMTotMV1dKQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIGZyb20geG1sLnBhcnNlcnMgaW1wb3J0IGV4cGF0CiAgICAgICAgICAgICAgICAgZXJyID0gZXhwYXQuZXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICJ1bmRlZmluZWQgZW50aXR5ICVzOiBsaW5lICVkLCBjb2x1bW4gJWQiICUKLSAgICAgICAgICAgICAgICAgICAgKHRleHQsIHNlbGYuX3BhcnNlci5FcnJvckxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlci5FcnJvckNvbHVtbk51bWJlcikKKyAgICAgICAgICAgICAgICAgICAgKHRleHQsIHNlbGYucGFyc2VyLkVycm9yTGluZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICBlcnIuY29kZSA9IDExICMgWE1MX0VSUk9SX1VOREVGSU5FRF9FTlRJVFkKLSAgICAgICAgICAgICAgICBlcnIubGluZW5vID0gc2VsZi5fcGFyc2VyLkVycm9yTGluZU51bWJlcgotICAgICAgICAgICAgICAgIGVyci5vZmZzZXQgPSBzZWxmLl9wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIKKyAgICAgICAgICAgICAgICBlcnIubGluZW5vID0gc2VsZi5wYXJzZXIuRXJyb3JMaW5lTnVtYmVyCisgICAgICAgICAgICAgICAgZXJyLm9mZnNldCA9IHNlbGYucGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyCiAgICAgICAgICAgICAgICAgcmFpc2UgZXJyCiAgICAgICAgIGVsaWYgcHJlZml4ID09ICI8IiBhbmQgdGV4dFs6OV0gPT0gIjwhRE9DVFlQRSI6CiAgICAgICAgICAgICBzZWxmLl9kb2N0eXBlID0gW10gIyBpbnNpZGUgYSBkb2N0eXBlIGRlY2xhcmF0aW9uCkBAIC0xNjI1LDE2ICsxNjM1LDE2IEBACiAgICAgICAgICAgICAgICAgdHlwZSA9IHNlbGYuX2RvY3R5cGVbMV0KICAgICAgICAgICAgICAgICBpZiB0eXBlID09ICJQVUJMSUMiIGFuZCBuID09IDQ6CiAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHR5cGUsIHB1YmlkLCBzeXN0ZW0gPSBzZWxmLl9kb2N0eXBlCisgICAgICAgICAgICAgICAgICAgIGlmIHB1YmlkOgorICAgICAgICAgICAgICAgICAgICAgICAgcHViaWQgPSBwdWJpZFsxOi0xXQogICAgICAgICAgICAgICAgIGVsaWYgdHlwZSA9PSAiU1lTVEVNIiBhbmQgbiA9PSAzOgogICAgICAgICAgICAgICAgICAgICBuYW1lLCB0eXBlLCBzeXN0ZW0gPSBzZWxmLl9kb2N0eXBlCiAgICAgICAgICAgICAgICAgICAgIHB1YmlkID0gTm9uZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGlmIHB1YmlkOgotICAgICAgICAgICAgICAgICAgICBwdWJpZCA9IHB1YmlkWzE6LTFdCiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLnRhcmdldCwgImRvY3R5cGUiKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXJnZXQuZG9jdHlwZShuYW1lLCBwdWJpZCwgc3lzdGVtWzE6LTFdKQotICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5kb2N0eXBlIGlzIG5vdCBzZWxmLl9YTUxQYXJzZXJfX2RvY3R5cGU6CisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLmRvY3R5cGUgIT0gc2VsZi5fWE1MUGFyc2VyX19kb2N0eXBlOgogICAgICAgICAgICAgICAgICAgICAjIHdhcm4gYWJvdXQgZGVwcmVjYXRlZCBjYWxsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1hNTFBhcnNlcl9fZG9jdHlwZShuYW1lLCBwdWJpZCwgc3lzdGVtWzE6LTFdKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmRvY3R5cGUobmFtZSwgcHViaWQsIHN5c3RlbVsxOi0xXSkKQEAgLTE2NjUsNyArMTY3NSw3IEBACiAKICAgICBkZWYgZmVlZChzZWxmLCBkYXRhKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLlBhcnNlKGRhdGEsIDApCisgICAgICAgICAgICBzZWxmLnBhcnNlci5QYXJzZShkYXRhLCAwKQogICAgICAgICBleGNlcHQgc2VsZi5fZXJyb3IgYXMgdjoKICAgICAgICAgICAgIHNlbGYuX3JhaXNlZXJyb3IodikKIApAQCAtMTY3NywxMiArMTY4NywxMDAgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLlBhcnNlKCIiLCAxKSAjIGVuZCBvZiBkYXRhCisgICAgICAgICAgICBzZWxmLnBhcnNlci5QYXJzZSgiIiwgMSkgIyBlbmQgb2YgZGF0YQogICAgICAgICBleGNlcHQgc2VsZi5fZXJyb3IgYXMgdjoKICAgICAgICAgICAgIHNlbGYuX3JhaXNlZXJyb3IodikKLSAgICAgICAgdHJlZSA9IHNlbGYudGFyZ2V0LmNsb3NlKCkKLSAgICAgICAgZGVsIHNlbGYudGFyZ2V0LCBzZWxmLl9wYXJzZXIgIyBnZXQgcmlkIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMKLSAgICAgICAgcmV0dXJuIHRyZWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY2xvc2VfaGFuZGxlciA9IHNlbGYudGFyZ2V0LmNsb3NlCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBjbG9zZV9oYW5kbGVyKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgZ2V0IHJpZCBvZiBjaXJjdWxhciByZWZlcmVuY2VzCisgICAgICAgICAgICBkZWwgc2VsZi5wYXJzZXIsIHNlbGYuX3BhcnNlcgorICAgICAgICAgICAgZGVsIHNlbGYudGFyZ2V0LCBzZWxmLl90YXJnZXQKKworCisjIEltcG9ydCB0aGUgQyBhY2NlbGVyYXRvcnMKK3RyeToKKyAgICAjIEVsZW1lbnQsIFN1YkVsZW1lbnQsIFBhcnNlRXJyb3IsIFRyZWVCdWlsZGVyLCBYTUxQYXJzZXIKKyAgICBmcm9tIF9lbGVtZW50dHJlZSBpbXBvcnQgKgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgIyBPdmVyd3JpdGUgJ0VsZW1lbnRUcmVlLnBhcnNlJyBhbmQgJ2l0ZXJwYXJzZScgdG8gdXNlIHRoZSBDIFhNTFBhcnNlcgorCisgICAgY2xhc3MgRWxlbWVudFRyZWUoRWxlbWVudFRyZWUpOgorICAgICAgICBkZWYgcGFyc2Uoc2VsZiwgc291cmNlLCBwYXJzZXI9Tm9uZSk6CisgICAgICAgICAgICBjbG9zZV9zb3VyY2UgPSBGYWxzZQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc291cmNlLCAncmVhZCcpOgorICAgICAgICAgICAgICAgIHNvdXJjZSA9IG9wZW4oc291cmNlLCAncmInKQorICAgICAgICAgICAgICAgIGNsb3NlX3NvdXJjZSA9IFRydWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBwYXJzZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gc291cmNlLnJlYWQoNjU1MzYpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHBhcnNlci5jbG9zZSgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VyID0gWE1MUGFyc2VyKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHBhcnNlci5fcGFyc2Uoc291cmNlKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb290CisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIGNsb3NlX3NvdXJjZToKKyAgICAgICAgICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKKworICAgIGNsYXNzIGl0ZXJwYXJzZToKKyAgICAgICAgcm9vdCA9IE5vbmUKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIGV2ZW50cz1Ob25lKToKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBGYWxzZQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZmlsZSwgJ3JlYWQnKToKKyAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlLCAncmInKQorICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9maWxlID0gZmlsZQorICAgICAgICAgICAgc2VsZi5fZXZlbnRzID0gW10KKyAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAorICAgICAgICAgICAgc2VsZi5fZXJyb3IgPSBOb25lCisgICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290ID0gTm9uZQorICAgICAgICAgICAgYiA9IFRyZWVCdWlsZGVyKCkKKyAgICAgICAgICAgIHNlbGYuX3BhcnNlciA9IFhNTFBhcnNlcihiKQorICAgICAgICAgICAgc2VsZi5fcGFyc2VyLl9zZXRldmVudHMoc2VsZi5fZXZlbnRzLCBldmVudHMpCisKKyAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBzZWxmLl9ldmVudHNbc2VsZi5faW5kZXhdCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0KKyAgICAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yOgorICAgICAgICAgICAgICAgICAgICBlID0gc2VsZi5fZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3IgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9wYXJzZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdAorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZV9maWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICAjIGxvYWQgZXZlbnQgYnVmZmVyCisgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2V2ZW50c1s6XQorICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQoMTYzODQpCisgICAgICAgICAgICAgICAgaWYgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yID0gZXhjCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHNlbGYuX3BhcnNlci5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlciA9IE5vbmUKKworICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAjIGNvbXBhdGliaWxpdHkKIFhNTFRyZWVCdWlsZGVyID0gWE1MUGFyc2VyCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL2NFbGVtZW50VHJlZS5weSBiL0xpYi94bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5CmluZGV4IGE2ZjEyN2EuLjM2OGU2NzkgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5CkBAIC0xLDMgKzEsMyBAQAotIyBXcmFwcGVyIG1vZHVsZSBmb3IgX2VsZW1lbnR0cmVlCisjIERlcHJlY2F0ZWQgYWxpYXMgZm9yIHhtbC5ldHJlZS5FbGVtZW50VHJlZQogCi1mcm9tIF9lbGVtZW50dHJlZSBpbXBvcnQgKgorZnJvbSB4bWwuZXRyZWUuRWxlbWVudFRyZWUgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL0xpYi94bWwvcGFyc2Vycy9leHBhdC5weSBiL0xpYi94bWwvcGFyc2Vycy9leHBhdC5weQppbmRleCBhODA1YjgyLi5iY2JlOWZiIDEwMDY0NAotLS0gYS9MaWIveG1sL3BhcnNlcnMvZXhwYXQucHkKKysrIGIvTGliL3htbC9wYXJzZXJzL2V4cGF0LnB5CkBAIC0xLDYgKzEsNCBAQAogIiIiSW50ZXJmYWNlIHRvIHRoZSBFeHBhdCBub24tdmFsaWRhdGluZyBYTUwgcGFyc2VyLiIiIgotX192ZXJzaW9uX18gPSAnJFJldmlzaW9uJCcKLQogaW1wb3J0IHN5cwogCiBmcm9tIHB5ZXhwYXQgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvY2xpZW50LnB5IGIvTGliL3htbHJwYy9jbGllbnQucHkKaW5kZXggOTdkNWFhYy4uYTc3OWU2NiAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9jbGllbnQucHkKKysrIGIvTGliL3htbHJwYy9jbGllbnQucHkKQEAgLTEyOCw4ICsxMjgsMTEgQEAKICIiIgogCiBpbXBvcnQgYmFzZTY0CitpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCBodHRwLmNsaWVudAoraW1wb3J0IHVybGxpYi5wYXJzZQogZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBlcnJubwpAQCAtMTQyLDE3ICsxNDUsMTMgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgSW50ZXJuYWwgc3R1ZmYKIAotdHJ5OgotICAgIGltcG9ydCBkYXRldGltZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGRhdGV0aW1lID0gTm9uZQotCiBkZWYgZXNjYXBlKHMpOgogICAgIHMgPSBzLnJlcGxhY2UoIiYiLCAiJmFtcDsiKQogICAgIHMgPSBzLnJlcGxhY2UoIjwiLCAiJmx0OyIpCiAgICAgcmV0dXJuIHMucmVwbGFjZSgiPiIsICImZ3Q7IiwpCiAKLV9fdmVyc2lvbl9fID0gIjEuMC4xIgorIyB1c2VkIGluIFVzZXItQWdlbnQgaGVhZGVyIHNlbnQKK19fdmVyc2lvbl9fID0gc3lzLnZlcnNpb25bOjNdCiAKICMgeG1scnBjIGludGVnZXIgbGltaXRzCiBNQVhJTlQgPSAgMioqMzEtMQpAQCAtMjUyLDIxICsyNTEsMzMgQEAKICMgV3JhcHBlciBmb3IgWE1MLVJQQyBEYXRlVGltZSB2YWx1ZXMuICBUaGlzIGNvbnZlcnRzIGEgdGltZSB2YWx1ZSB0bwogIyB0aGUgZm9ybWF0IHVzZWQgYnkgWE1MLVJQQy4KICMgPHA+Ci0jIFRoZSB2YWx1ZSBjYW4gYmUgZ2l2ZW4gYXMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdAotIyAieXl5eW1tZGRUaGg6bW06c3MiLCBhcyBhIDktaXRlbSB0aW1lIHR1cGxlIChhcyByZXR1cm5lZCBieQorIyBUaGUgdmFsdWUgY2FuIGJlIGdpdmVuIGFzIGEgZGF0ZXRpbWUgb2JqZWN0LCBhcyBhIHN0cmluZyBpbiB0aGUKKyMgZm9ybWF0ICJ5eXl5bW1kZFRoaDptbTpzcyIsIGFzIGEgOS1pdGVtIHRpbWUgdHVwbGUgKGFzIHJldHVybmVkIGJ5CiAjIHRpbWUubG9jYWx0aW1lKCkpLCBvciBhbiBpbnRlZ2VyIHZhbHVlIChhcyByZXR1cm5lZCBieSB0aW1lLnRpbWUoKSkuCiAjIFRoZSB3cmFwcGVyIHVzZXMgdGltZS5sb2NhbHRpbWUoKSB0byBjb252ZXJ0IGFuIGludGVnZXIgdG8gYSB0aW1lCiAjIHR1cGxlLgogIwotIyBAcGFyYW0gdmFsdWUgVGhlIHRpbWUsIGdpdmVuIGFzIGFuIElTTyA4NjAxIHN0cmluZywgYSB0aW1lCi0jICAgICAgICAgICAgICB0dXBsZSwgb3IgYSBpbnRlZ2VyIHRpbWUgdmFsdWUuCisjIEBwYXJhbSB2YWx1ZSBUaGUgdGltZSwgZ2l2ZW4gYXMgYSBkYXRldGltZSBvYmplY3QsIGFuIElTTyA4NjAxIHN0cmluZywKKyMgICAgICAgICAgICAgIGEgdGltZSB0dXBsZSwgb3IgYW4gaW50ZWdlciB0aW1lIHZhbHVlLgorCisKKyMgSXNzdWUgIzEzMzA1OiBkaWZmZXJlbnQgZm9ybWF0IGNvZGVzIGFjcm9zcyBwbGF0Zm9ybXMKK19kYXkwID0gZGF0ZXRpbWUoMSwgMSwgMSkKK2lmIF9kYXkwLnN0cmZ0aW1lKCclWScpID09ICcwMDAxJzogICAgICAjIE1hYyBPUyBYCisgICAgZGVmIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSk6CisgICAgICAgIHJldHVybiB2YWx1ZS5zdHJmdGltZSgiJVklbSVkVCVIOiVNOiVTIikKK2VsaWYgX2RheTAuc3RyZnRpbWUoJyU0WScpID09ICcwMDAxJzogICAjIExpbnV4CisgICAgZGVmIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSk6CisgICAgICAgIHJldHVybiB2YWx1ZS5zdHJmdGltZSgiJTRZJW0lZFQlSDolTTolUyIpCitlbHNlOgorICAgIGRlZiBfaXNvODYwMV9mb3JtYXQodmFsdWUpOgorICAgICAgICByZXR1cm4gdmFsdWUuc3RyZnRpbWUoIiVZJW0lZFQlSDolTTolUyIpLnpmaWxsKDE3KQorZGVsIF9kYXkwCisKIAogZGVmIF9zdHJmdGltZSh2YWx1ZSk6Ci0gICAgaWYgZGF0ZXRpbWU6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRhdGV0aW1lLmRhdGV0aW1lKToKLSAgICAgICAgICAgIHJldHVybiAiJTA0ZCUwMmQlMDJkVCUwMmQ6JTAyZDolMDJkIiAlICgKLSAgICAgICAgICAgICAgICB2YWx1ZS55ZWFyLCB2YWx1ZS5tb250aCwgdmFsdWUuZGF5LAotICAgICAgICAgICAgICAgIHZhbHVlLmhvdXIsIHZhbHVlLm1pbnV0ZSwgdmFsdWUuc2Vjb25kKQorICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRhdGV0aW1lKToKKyAgICAgICAgcmV0dXJuIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSkKIAogICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCAodHVwbGUsIHRpbWUuc3RydWN0X3RpbWUpKToKICAgICAgICAgaWYgdmFsdWUgPT0gMDoKQEAgLTI5MSw5ICszMDIsOSBAQAogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBEYXRlVGltZSk6CiAgICAgICAgICAgICBzID0gc2VsZi52YWx1ZQogICAgICAgICAgICAgbyA9IG90aGVyLnZhbHVlCi0gICAgICAgIGVsaWYgZGF0ZXRpbWUgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lLmRhdGV0aW1lKToKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6CiAgICAgICAgICAgICBzID0gc2VsZi52YWx1ZQotICAgICAgICAgICAgbyA9IG90aGVyLnN0cmZ0aW1lKCIlWSVtJWRUJUg6JU06JVMiKQorICAgICAgICAgICAgbyA9IF9pc284NjAxX2Zvcm1hdChvdGhlcikKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG90aGVyLCBzdHIpOgogICAgICAgICAgICAgcyA9IHNlbGYudmFsdWUKICAgICAgICAgICAgIG8gPSBvdGhlcgpAQCAtMzYxLDggKzM3Miw3IEBACiAgICAgcmV0dXJuIHZhbHVlCiAKIGRlZiBfZGF0ZXRpbWVfdHlwZShkYXRhKToKLSAgICB0ID0gdGltZS5zdHJwdGltZShkYXRhLCAiJVklbSVkVCVIOiVNOiVTIikKLSAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUoKnR1cGxlKHQpWzo2XSkKKyAgICByZXR1cm4gZGF0ZXRpbWUuc3RycHRpbWUoZGF0YSwgIiVZJW0lZFQlSDolTTolUyIpCiAKICMjCiAjIFdyYXBwZXIgZm9yIGJpbmFyeSBkYXRhLiAgVGhpcyBjYW4gYmUgdXNlZCB0byB0cmFuc3BvcnQgYW55IGtpbmQKQEAgLTM3Nyw4ICszODcsOCBAQAogICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICBkYXRhID0gYiIiCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlCisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMgb3IgYnl0ZWFycmF5LCBub3QgJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5fX2NsYXNzX18uX19uYW1lX18pCiAgICAgICAgICAgICBkYXRhID0gYnl0ZXMoZGF0YSkgICMgTWFrZSBhIGNvcHkgb2YgdGhlIGJ5dGVzIQogICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCkBAIC00MDgsNyArNDE4LDYgQEAKICAgICAgICAgb3V0LndyaXRlKCI8dmFsdWU+PGJhc2U2ND5cbiIpCiAgICAgICAgIGVuY29kZWQgPSBiYXNlNjQuZW5jb2RlYnl0ZXMoc2VsZi5kYXRhKQogICAgICAgICBvdXQud3JpdGUoZW5jb2RlZC5kZWNvZGUoJ2FzY2lpJykpCi0gICAgICAgIG91dC53cml0ZSgnXG4nKQogICAgICAgICBvdXQud3JpdGUoIjwvYmFzZTY0PjwvdmFsdWU+XG4iKQogCiBkZWYgX2JpbmFyeShkYXRhKToKQEAgLTUyMiwxNSArNTMxLDYgQEAKICAgICAgICAgd3JpdGUoIjx2YWx1ZT48bmlsLz48L3ZhbHVlPiIpCiAgICAgZGlzcGF0Y2hbdHlwZShOb25lKV0gPSBkdW1wX25pbAogCi0gICAgZGVmIGR1bXBfaW50KHNlbGYsIHZhbHVlLCB3cml0ZSk6Ci0gICAgICAgICMgaW4gY2FzZSBpbnRzIGFyZSA+IDMyIGJpdHMKLSAgICAgICAgaWYgdmFsdWUgPiBNQVhJTlQgb3IgdmFsdWUgPCBNSU5JTlQ6Ci0gICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJpbnQgZXhjZWVkcyBYTUwtUlBDIGxpbWl0cyIpCi0gICAgICAgIHdyaXRlKCI8dmFsdWU+PGludD4iKQotICAgICAgICB3cml0ZShzdHIodmFsdWUpKQotICAgICAgICB3cml0ZSgiPC9pbnQ+PC92YWx1ZT5cbiIpCi0gICAgI2Rpc3BhdGNoW2ludF0gPSBkdW1wX2ludAotCiAgICAgZGVmIGR1bXBfYm9vbChzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgICB3cml0ZSgiPHZhbHVlPjxib29sZWFuPiIpCiAgICAgICAgIHdyaXRlKHZhbHVlIGFuZCAiMSIgb3IgIjAiKQpAQCAtNTQ1LDYgKzU0NSw5IEBACiAgICAgICAgIHdyaXRlKCI8L2ludD48L3ZhbHVlPlxuIikKICAgICBkaXNwYXRjaFtpbnRdID0gZHVtcF9sb25nCiAKKyAgICAjIGJhY2t3YXJkIGNvbXBhdGlibGUKKyAgICBkdW1wX2ludCA9IGR1bXBfbG9uZworCiAgICAgZGVmIGR1bXBfZG91YmxlKHNlbGYsIHZhbHVlLCB3cml0ZSk6CiAgICAgICAgIHdyaXRlKCI8dmFsdWU+PGRvdWJsZT4iKQogICAgICAgICB3cml0ZShyZXByKHZhbHVlKSkKQEAgLTU1Nyw2ICs1NjAsMTQgQEAKICAgICAgICAgd3JpdGUoIjwvc3RyaW5nPjwvdmFsdWU+XG4iKQogICAgIGRpc3BhdGNoW3N0cl0gPSBkdW1wX3VuaWNvZGUKIAorICAgIGRlZiBkdW1wX2J5dGVzKHNlbGYsIHZhbHVlLCB3cml0ZSk6CisgICAgICAgIHdyaXRlKCI8dmFsdWU+PGJhc2U2ND5cbiIpCisgICAgICAgIGVuY29kZWQgPSBiYXNlNjQuZW5jb2RlYnl0ZXModmFsdWUpCisgICAgICAgIHdyaXRlKGVuY29kZWQuZGVjb2RlKCdhc2NpaScpKQorICAgICAgICB3cml0ZSgiPC9iYXNlNjQ+PC92YWx1ZT5cbiIpCisgICAgZGlzcGF0Y2hbYnl0ZXNdID0gZHVtcF9ieXRlcworICAgIGRpc3BhdGNoW2J5dGVhcnJheV0gPSBkdW1wX2J5dGVzCisKICAgICBkZWYgZHVtcF9hcnJheShzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgICBpID0gaWQodmFsdWUpCiAgICAgICAgIGlmIGkgaW4gc2VsZi5tZW1vOgpAQCAtNTg5LDEyICs2MDAsMTEgQEAKICAgICAgICAgZGVsIHNlbGYubWVtb1tpXQogICAgIGRpc3BhdGNoW2RpY3RdID0gZHVtcF9zdHJ1Y3QKIAotICAgIGlmIGRhdGV0aW1lOgotICAgICAgICBkZWYgZHVtcF9kYXRldGltZShzZWxmLCB2YWx1ZSwgd3JpdGUpOgotICAgICAgICAgICAgd3JpdGUoIjx2YWx1ZT48ZGF0ZVRpbWUuaXNvODYwMT4iKQotICAgICAgICAgICAgd3JpdGUoX3N0cmZ0aW1lKHZhbHVlKSkKLSAgICAgICAgICAgIHdyaXRlKCI8L2RhdGVUaW1lLmlzbzg2MDE+PC92YWx1ZT5cbiIpCi0gICAgICAgIGRpc3BhdGNoW2RhdGV0aW1lLmRhdGV0aW1lXSA9IGR1bXBfZGF0ZXRpbWUKKyAgICBkZWYgZHVtcF9kYXRldGltZShzZWxmLCB2YWx1ZSwgd3JpdGUpOgorICAgICAgICB3cml0ZSgiPHZhbHVlPjxkYXRlVGltZS5pc284NjAxPiIpCisgICAgICAgIHdyaXRlKF9zdHJmdGltZSh2YWx1ZSkpCisgICAgICAgIHdyaXRlKCI8L2RhdGVUaW1lLmlzbzg2MDE+PC92YWx1ZT5cbiIpCisgICAgZGlzcGF0Y2hbZGF0ZXRpbWVdID0gZHVtcF9kYXRldGltZQogCiAgICAgZGVmIGR1bXBfaW5zdGFuY2Uoc2VsZiwgdmFsdWUsIHdyaXRlKToKICAgICAgICAgIyBjaGVjayBmb3Igc3BlY2lhbCB3cmFwcGVycwpAQCAtNjI4LDcgKzYzOCw3IEBACiAgICAgIyBhbmQgYWdhaW4sIGlmIHlvdSBkb24ndCB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiBpbiBoZXJlLAogICAgICMgdGhhdCdzIHBlcmZlY3RseSBvay4KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgc2VsZi5fdHlwZSA9IE5vbmUKICAgICAgICAgc2VsZi5fc3RhY2sgPSBbXQogICAgICAgICBzZWxmLl9tYXJrcyA9IFtdCkBAIC02MzYsOSArNjQ2LDggQEAKICAgICAgICAgc2VsZi5fbWV0aG9kbmFtZSA9IE5vbmUKICAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSAidXRmLTgiCiAgICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5fc3RhY2suYXBwZW5kCi0gICAgICAgIHNlbGYuX3VzZV9kYXRldGltZSA9IHVzZV9kYXRldGltZQotICAgICAgICBpZiB1c2VfZGF0ZXRpbWUgYW5kIG5vdCBkYXRldGltZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInRoZSBkYXRldGltZSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCisgICAgICAgIHNlbGYuX3VzZV9kYXRldGltZSA9IHVzZV9idWlsdGluX3R5cGVzIG9yIHVzZV9kYXRldGltZQorICAgICAgICBzZWxmLl91c2VfYnl0ZXMgPSB1c2VfYnVpbHRpbl90eXBlcwogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAjIHJldHVybiByZXNwb25zZSB0dXBsZSBhbmQgdGFyZ2V0IG1ldGhvZApAQCAtNzUwLDYgKzc1OSw4IEBACiAgICAgZGVmIGVuZF9iYXNlNjQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHZhbHVlID0gQmluYXJ5KCkKICAgICAgICAgdmFsdWUuZGVjb2RlKGRhdGEuZW5jb2RlKCJhc2NpaSIpKQorICAgICAgICBpZiBzZWxmLl91c2VfYnl0ZXM6CisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmRhdGEKICAgICAgICAgc2VsZi5hcHBlbmQodmFsdWUpCiAgICAgICAgIHNlbGYuX3ZhbHVlID0gMAogICAgIGRpc3BhdGNoWyJiYXNlNjQiXSA9IGVuZF9iYXNlNjQKQEAgLTg2MSwyMyArODcyLDI2IEBACiAjCiAjIHJldHVybiBBIChwYXJzZXIsIHVubWFyc2hhbGxlcikgdHVwbGUuCiAKLWRlZiBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPUZhbHNlKToKK2RlZiBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgIiIiZ2V0cGFyc2VyKCkgLT4gcGFyc2VyLCB1bm1hcnNoYWxsZXIKIAogICAgIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgZmFzdGVzdCBhdmFpbGFibGUgcGFyc2VyLCBhbmQgYXR0YWNoIGl0CiAgICAgdG8gYW4gdW5tYXJzaGFsbGluZyBvYmplY3QuICBSZXR1cm4gYm90aCBvYmplY3RzLgogICAgICIiIgotICAgIGlmIHVzZV9kYXRldGltZSBhbmQgbm90IGRhdGV0aW1lOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0aGUgZGF0ZXRpbWUgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUiKQogICAgIGlmIEZhc3RQYXJzZXIgYW5kIEZhc3RVbm1hcnNoYWxsZXI6Ci0gICAgICAgIGlmIHVzZV9kYXRldGltZToKKyAgICAgICAgaWYgdXNlX2J1aWx0aW5fdHlwZXM6CiAgICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lX3R5cGUKKyAgICAgICAgICAgIG1rYnl0ZXMgPSBiYXNlNjQuZGVjb2RlYnl0ZXMKKyAgICAgICAgZWxpZiB1c2VfZGF0ZXRpbWU6CisgICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lX3R5cGUKKyAgICAgICAgICAgIG1rYnl0ZXMgPSBfYmluYXJ5CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lCi0gICAgICAgIHRhcmdldCA9IEZhc3RVbm1hcnNoYWxsZXIoVHJ1ZSwgRmFsc2UsIF9iaW5hcnksIG1rZGF0ZXRpbWUsIEZhdWx0KQorICAgICAgICAgICAgbWtieXRlcyA9IF9iaW5hcnkKKyAgICAgICAgdGFyZ2V0ID0gRmFzdFVubWFyc2hhbGxlcihUcnVlLCBGYWxzZSwgbWtieXRlcywgbWtkYXRldGltZSwgRmF1bHQpCiAgICAgICAgIHBhcnNlciA9IEZhc3RQYXJzZXIodGFyZ2V0KQogICAgIGVsc2U6Ci0gICAgICAgIHRhcmdldCA9IFVubWFyc2hhbGxlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lKQorICAgICAgICB0YXJnZXQgPSBVbm1hcnNoYWxsZXIodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSwgdXNlX2J1aWx0aW5fdHlwZXM9dXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgIGlmIEZhc3RQYXJzZXI6CiAgICAgICAgICAgICBwYXJzZXIgPSBGYXN0UGFyc2VyKHRhcmdldCkKICAgICAgICAgZWxzZToKQEAgLTkxNSw3ICs5MjksNyBAQAogCiAgICAgICAgIGVuY29kaW5nOiB0aGUgcGFja2V0IGVuY29kaW5nIChkZWZhdWx0IGlzIFVURi04KQogCi0gICAgQWxsIDgtYml0IHN0cmluZ3MgaW4gdGhlIGRhdGEgc3RydWN0dXJlIGFyZSBhc3N1bWVkIHRvIHVzZSB0aGUKKyAgICBBbGwgYnl0ZSBzdHJpbmdzIGluIHRoZSBkYXRhIHN0cnVjdHVyZSBhcmUgYXNzdW1lZCB0byB1c2UgdGhlCiAgICAgcGFja2V0IGVuY29kaW5nLiAgVW5pY29kZSBzdHJpbmdzIGFyZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCwKICAgICB3aGVyZSBuZWNlc3NhcnkuCiAgICAgIiIiCkBAIC05NzQsNyArOTg4LDcgQEAKICMgICAgIChOb25lIGlmIG5vdCBwcmVzZW50KS4KICMgQHNlZSBGYXVsdAogCi1kZWYgbG9hZHMoZGF0YSwgdXNlX2RhdGV0aW1lPUZhbHNlKToKK2RlZiBsb2FkcyhkYXRhLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAiIiJkYXRhIC0+IHVubWFyc2hhbGxlZCBkYXRhLCBtZXRob2QgbmFtZQogCiAgICAgQ29udmVydCBhbiBYTUwtUlBDIHBhY2tldCB0byB1bm1hcnNoYWxsZWQgZGF0YSBwbHVzIGEgbWV0aG9kCkBAIC05ODMsNyArOTk3LDcgQEAKICAgICBJZiB0aGUgWE1MLVJQQyBwYWNrZXQgcmVwcmVzZW50cyBhIGZhdWx0IGNvbmRpdGlvbiwgdGhpcyBmdW5jdGlvbgogICAgIHJhaXNlcyBhIEZhdWx0IGV4Y2VwdGlvbi4KICAgICAiIiIKLSAgICBwLCB1ID0gZ2V0cGFyc2VyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUpCisgICAgcCwgdSA9IGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lLCB1c2VfYnVpbHRpbl90eXBlcz11c2VfYnVpbHRpbl90eXBlcykKICAgICBwLmZlZWQoZGF0YSkKICAgICBwLmNsb3NlKCkKICAgICByZXR1cm4gdS5jbG9zZSgpLCB1LmdldG1ldGhvZG5hbWUoKQpAQCAtMTA4NSw3ICsxMDk5LDcgQEAKICAgICAiIiJIYW5kbGVzIGFuIEhUVFAgdHJhbnNhY3Rpb24gdG8gYW4gWE1MLVJQQyBzZXJ2ZXIuIiIiCiAKICAgICAjIGNsaWVudCBpZGVudGlmaWVyIChtYXkgYmUgb3ZlcnJpZGRlbikKLSAgICB1c2VyX2FnZW50ID0gInhtbHJwY2xpYi5weS8lcyAoYnkgd3d3LnB5dGhvbndhcmUuY29tKSIgJSBfX3ZlcnNpb25fXworICAgIHVzZXJfYWdlbnQgPSAiUHl0aG9uLXhtbHJwYy8lcyIgJSBfX3ZlcnNpb25fXwogCiAgICAgI2lmIHRydWUsIHdlJ2xsIHJlcXVlc3QgZ3ppcCBlbmNvZGluZwogICAgIGFjY2VwdF9nemlwX2VuY29kaW5nID0gVHJ1ZQpAQCAtMTA5NSw4ICsxMTA5LDkgQEAKICAgICAjIHRoYXQgdGhleSBjYW4gZGVjb2RlIHN1Y2ggYSByZXF1ZXN0CiAgICAgZW5jb2RlX3RocmVzaG9sZCA9IE5vbmUgI05vbmUgPSBkb24ndCBlbmNvZGUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgc2VsZi5fdXNlX2RhdGV0aW1lID0gdXNlX2RhdGV0aW1lCisgICAgICAgIHNlbGYuX3VzZV9idWlsdGluX3R5cGVzID0gdXNlX2J1aWx0aW5fdHlwZXMKICAgICAgICAgc2VsZi5fY29ubmVjdGlvbiA9IChOb25lLCBOb25lKQogICAgICAgICBzZWxmLl9leHRyYV9oZWFkZXJzID0gW10KIApAQCAtMTE1Nyw3ICsxMTcyLDggQEAKIAogICAgIGRlZiBnZXRwYXJzZXIoc2VsZik6CiAgICAgICAgICMgZ2V0IHBhcnNlciBhbmQgdW5tYXJzaGFsbGVyCi0gICAgICAgIHJldHVybiBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPXNlbGYuX3VzZV9kYXRldGltZSkKKyAgICAgICAgcmV0dXJuIGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9c2VsZi5fdXNlX2RhdGV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPXNlbGYuX3VzZV9idWlsdGluX3R5cGVzKQogCiAgICAgIyMKICAgICAjIEdldCBhdXRob3JpemF0aW9uIGluZm8gZnJvbSBob3N0IHBhcmFtZXRlcgpAQCAtMTE3NSw3ICsxMTkxLDYgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShob3N0LCB0dXBsZSk6CiAgICAgICAgICAgICBob3N0LCB4NTA5ID0gaG9zdAogCi0gICAgICAgIGltcG9ydCB1cmxsaWIucGFyc2UKICAgICAgICAgYXV0aCwgaG9zdCA9IHVybGxpYi5wYXJzZS5zcGxpdHVzZXIoaG9zdCkKIAogICAgICAgICBpZiBhdXRoOgpAQCAtMTM2NCwxMSArMTM3OSwxMCBAQAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVyaSwgdHJhbnNwb3J0PU5vbmUsIGVuY29kaW5nPU5vbmUsIHZlcmJvc2U9RmFsc2UsCi0gICAgICAgICAgICAgICAgIGFsbG93X25vbmU9RmFsc2UsIHVzZV9kYXRldGltZT1GYWxzZSk6CisgICAgICAgICAgICAgICAgIGFsbG93X25vbmU9RmFsc2UsIHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICAjIGVzdGFibGlzaCBhICJsb2dpY2FsIiBzZXJ2ZXIgY29ubmVjdGlvbgogCiAgICAgICAgICMgZ2V0IHRoZSB1cmwKLSAgICAgICAgaW1wb3J0IHVybGxpYi5wYXJzZQogICAgICAgICB0eXBlLCB1cmkgPSB1cmxsaWIucGFyc2Uuc3BsaXR0eXBlKHVyaSkKICAgICAgICAgaWYgdHlwZSBub3QgaW4gKCJodHRwIiwgImh0dHBzIik6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJ1bnN1cHBvcnRlZCBYTUwtUlBDIHByb3RvY29sIikKQEAgLTEzNzgsOSArMTM5MiwxMSBAQAogCiAgICAgICAgIGlmIHRyYW5zcG9ydCBpcyBOb25lOgogICAgICAgICAgICAgaWYgdHlwZSA9PSAiaHR0cHMiOgotICAgICAgICAgICAgICAgIHRyYW5zcG9ydCA9IFNhZmVUcmFuc3BvcnQodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSkKKyAgICAgICAgICAgICAgICBoYW5kbGVyID0gU2FmZVRyYW5zcG9ydAogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cmFuc3BvcnQgPSBUcmFuc3BvcnQodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSkKKyAgICAgICAgICAgICAgICBoYW5kbGVyID0gVHJhbnNwb3J0CisgICAgICAgICAgICB0cmFuc3BvcnQgPSBoYW5kbGVyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPXVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBzZWxmLl9fdHJhbnNwb3J0ID0gdHJhbnNwb3J0CiAKICAgICAgICAgc2VsZi5fX2VuY29kaW5nID0gZW5jb2Rpbmcgb3IgJ3V0Zi04JwpkaWZmIC0tZ2l0IGEvTGliL3htbHJwYy9zZXJ2ZXIucHkgYi9MaWIveG1scnBjL3NlcnZlci5weQppbmRleCBmZDE3MDI2Li41NGUxNzI2IDEwMDY0NAotLS0gYS9MaWIveG1scnBjL3NlcnZlci5weQorKysgYi9MaWIveG1scnBjL3NlcnZlci5weQpAQCAtMTYwLDExICsxNjAsMTMgQEAKICAgICBjYW4gYmUgaW5zdGFuY2VkIHdoZW4gdXNlZCBieSB0aGUgTXVsdGlQYXRoWE1MUlBDU2VydmVyCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsCisgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgc2VsZi5mdW5jcyA9IHt9CiAgICAgICAgIHNlbGYuaW5zdGFuY2UgPSBOb25lCiAgICAgICAgIHNlbGYuYWxsb3dfbm9uZSA9IGFsbG93X25vbmUKICAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nIG9yICd1dGYtOCcKKyAgICAgICAgc2VsZi51c2VfYnVpbHRpbl90eXBlcyA9IHVzZV9idWlsdGluX3R5cGVzCiAKICAgICBkZWYgcmVnaXN0ZXJfaW5zdGFuY2Uoc2VsZiwgaW5zdGFuY2UsIGFsbG93X2RvdHRlZF9uYW1lcz1GYWxzZSk6CiAgICAgICAgICIiIlJlZ2lzdGVycyBhbiBpbnN0YW5jZSB0byByZXNwb25kIHRvIFhNTC1SUEMgcmVxdWVzdHMuCkBAIC0yNDUsNyArMjQ3LDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGFyYW1zLCBtZXRob2QgPSBsb2FkcyhkYXRhKQorICAgICAgICAgICAgcGFyYW1zLCBtZXRob2QgPSBsb2FkcyhkYXRhLCB1c2VfYnVpbHRpbl90eXBlcz1zZWxmLnVzZV9idWlsdGluX3R5cGVzKQogCiAgICAgICAgICAgICAjIGdlbmVyYXRlIHJlc3BvbnNlCiAgICAgICAgICAgICBpZiBkaXNwYXRjaF9tZXRob2QgaXMgbm90IE5vbmU6CkBAIC01NzUsMTAgKzU3NywxMSBAQAogICAgIF9zZW5kX3RyYWNlYmFja19oZWFkZXIgPSBGYWxzZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyPVNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLCBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKKyAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICBzZWxmLmxvZ1JlcXVlc3RzID0gbG9nUmVxdWVzdHMKIAotICAgICAgICBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFsbG93X25vbmUsIGVuY29kaW5nKQorICAgICAgICBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFsbG93X25vbmUsIGVuY29kaW5nLCB1c2VfYnVpbHRpbl90eXBlcykKICAgICAgICAgc29ja2V0c2VydmVyLlRDUFNlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlciwgYmluZF9hbmRfYWN0aXZhdGUpCiAKICAgICAgICAgIyBbQnVnICMxMjIyNzkwXSBJZiBwb3NzaWJsZSwgc2V0IGNsb3NlLW9uLWV4ZWMgZmxhZzsgaWYgYQpAQCAtNTk4LDEwICs2MDEsMTEgQEAKICAgICBNYWtlIHN1cmUgdGhhdCB0aGUgcmVxdWVzdEhhbmRsZXIgYWNjZXB0cyB0aGUgcGF0aHMgaW4gcXVlc3Rpb24uCiAgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyPVNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLCBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKKyAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogCiAgICAgICAgIFNpbXBsZVhNTFJQQ1NlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlciwgbG9nUmVxdWVzdHMsIGFsbG93X25vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgYmluZF9hbmRfYWN0aXZhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgYmluZF9hbmRfYWN0aXZhdGUsIHVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBzZWxmLmRpc3BhdGNoZXJzID0ge30KICAgICAgICAgc2VsZi5hbGxvd19ub25lID0gYWxsb3dfbm9uZQogICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2Rpbmcgb3IgJ3V0Zi04JwpAQCAtNjMxLDggKzYzNSw4IEBACiBjbGFzcyBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlcihTaW1wbGVYTUxSUENEaXNwYXRjaGVyKToKICAgICAiIiJTaW1wbGUgaGFuZGxlciBmb3IgWE1MLVJQQyBkYXRhIHBhc3NlZCB0aHJvdWdoIENHSS4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lKToKLSAgICAgICAgU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBhbGxvd19ub25lLCBlbmNvZGluZykKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgorICAgICAgICBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFsbG93X25vbmUsIGVuY29kaW5nLCB1c2VfYnVpbHRpbl90eXBlcykKIAogICAgIGRlZiBoYW5kbGVfeG1scnBjKHNlbGYsIHJlcXVlc3RfdGV4dCk6CiAgICAgICAgICIiIkhhbmRsZSBhIHNpbmdsZSBYTUwtUlBDIHJlcXVlc3QiIiIKQEAgLTkyNyw5ICs5MzEsMTAgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlcj1Eb2NYTUxSUENSZXF1ZXN0SGFuZGxlciwKICAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKLSAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSk6CisgICAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgU2ltcGxlWE1MUlBDU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyLCBsb2dSZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25vbmUsIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25vbmUsIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBYTUxSUENEb2NHZW5lcmF0b3IuX19pbml0X18oc2VsZikKIAogY2xhc3MgRG9jQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoICAgQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIsCkBAIC05NTksOCArOTY0LDEzIEBACiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBwcmludCgnUnVubmluZyBYTUwtUlBDIHNlcnZlciBvbiBwb3J0IDgwMDAnKQogICAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKQogICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCiAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCi0gICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgIHByaW50KCdTZXJ2aW5nIFhNTC1SUEMgb24gbG9jYWxob3N0IHBvcnQgODAwMCcpCisgICAgdHJ5OgorICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKKyAgICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIHN5cy5leGl0KDApCmRpZmYgLS1naXQgYS9MaWIvemlwZmlsZS5weSBiL0xpYi96aXBmaWxlLnB5CmluZGV4IDQzNWEzZTkuLjIwOWRjNGEgMTAwNjQ0Ci0tLSBhL0xpYi96aXBmaWxlLnB5CisrKyBiL0xpYi96aXBmaWxlLnB5CkBAIC0yMiw3ICsyMiwxOCBAQAogICAgIHpsaWIgPSBOb25lCiAgICAgY3JjMzIgPSBiaW5hc2NpaS5jcmMzMgogCi1fX2FsbF9fID0gWyJCYWRaaXBGaWxlIiwgIkJhZFppcGZpbGUiLCAiZXJyb3IiLCAiWklQX1NUT1JFRCIsICJaSVBfREVGTEFURUQiLAordHJ5OgorICAgIGltcG9ydCBiejIgIyBXZSBtYXkgbmVlZCBpdHMgY29tcHJlc3Npb24gbWV0aG9kCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYnoyID0gTm9uZQorCit0cnk6CisgICAgaW1wb3J0IGx6bWEgIyBXZSBtYXkgbmVlZCBpdHMgY29tcHJlc3Npb24gbWV0aG9kCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbHptYSA9IE5vbmUKKworX19hbGxfXyA9IFsiQmFkWmlwRmlsZSIsICJCYWRaaXBmaWxlIiwgImVycm9yIiwKKyAgICAgICAgICAgIlpJUF9TVE9SRUQiLCAiWklQX0RFRkxBVEVEIiwgIlpJUF9CWklQMiIsICJaSVBfTFpNQSIsCiAgICAgICAgICAgICJpc196aXBmaWxlIiwgIlppcEluZm8iLCAiWmlwRmlsZSIsICJQeVppcEZpbGUiLCAiTGFyZ2VaaXBGaWxlIl0KIAogY2xhc3MgQmFkWmlwRmlsZShFeGNlcHRpb24pOgpAQCAtNDUsOCArNTYsMTcgQEAKICMgY29uc3RhbnRzIGZvciBaaXAgZmlsZSBjb21wcmVzc2lvbiBtZXRob2RzCiBaSVBfU1RPUkVEID0gMAogWklQX0RFRkxBVEVEID0gOAorWklQX0JaSVAyID0gMTIKK1pJUF9MWk1BID0gMTQKICMgT3RoZXIgWklQIGNvbXByZXNzaW9uIG1ldGhvZHMgbm90IHN1cHBvcnRlZAogCitERUZBVUxUX1ZFUlNJT04gPSAyMAorWklQNjRfVkVSU0lPTiA9IDQ1CitCWklQMl9WRVJTSU9OID0gNDYKK0xaTUFfVkVSU0lPTiA9IDYzCisjIHdlIHJlY29nbml6ZSAoYnV0IG5vdCBuZWNlc3NhcmlseSBzdXBwb3J0KSBhbGwgZmVhdHVyZXMgdXAgdG8gdGhhdCB2ZXJzaW9uCitNQVhfRVhUUkFDVF9WRVJTSU9OID0gNjMKKwogIyBCZWxvdyBhcmUgc29tZSBmb3JtYXRzIGFuZCBhc3NvY2lhdGVkIGRhdGEgZm9yIHJlYWRpbmcvd3JpdGluZyBoZWFkZXJzIHVzaW5nCiAjIHRoZSBzdHJ1Y3QgbW9kdWxlLiAgVGhlIG5hbWVzIGFuZCBzdHJ1Y3R1cmVzIG9mIGhlYWRlcnMvcmVjb3JkcyBhcmUgdGhvc2UgdXNlZAogIyBpbiB0aGUgUEtXQVJFIGRlc2NyaXB0aW9uIG9mIHRoZSBaSVAgZmlsZSBmb3JtYXQ6CkBAIC0zMTMsOCArMzMzLDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQXNzdW1lIGV2ZXJ5dGhpbmcgZWxzZSBpcyB1bml4LXkKICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3N5c3RlbSA9IDMgICAgICAgICAgIyBTeXN0ZW0gd2hpY2ggY3JlYXRlZCBaSVAgYXJjaGl2ZQotICAgICAgICBzZWxmLmNyZWF0ZV92ZXJzaW9uID0gMjAgICAgICAgICMgVmVyc2lvbiB3aGljaCBjcmVhdGVkIFpJUCBhcmNoaXZlCi0gICAgICAgIHNlbGYuZXh0cmFjdF92ZXJzaW9uID0gMjAgICAgICAgIyBWZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0IGFyY2hpdmUKKyAgICAgICAgc2VsZi5jcmVhdGVfdmVyc2lvbiA9IERFRkFVTFRfVkVSU0lPTiAgIyBWZXJzaW9uIHdoaWNoIGNyZWF0ZWQgWklQIGFyY2hpdmUKKyAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSBERUZBVUxUX1ZFUlNJT04gIyBWZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0IGFyY2hpdmUKICAgICAgICAgc2VsZi5yZXNlcnZlZCA9IDAgICAgICAgICAgICAgICAjIE11c3QgYmUgemVybwogICAgICAgICBzZWxmLmZsYWdfYml0cyA9IDAgICAgICAgICAgICAgICMgWklQIGZsYWcgYml0cwogICAgICAgICBzZWxmLnZvbHVtZSA9IDAgICAgICAgICAgICAgICAgICMgVm9sdW1lIG51bWJlciBvZiBmaWxlIGhlYWRlcgpAQCAtMzQxLDYgKzM2MSw3IEBACiAKICAgICAgICAgZXh0cmEgPSBzZWxmLmV4dHJhCiAKKyAgICAgICAgbWluX3ZlcnNpb24gPSAwCiAgICAgICAgIGlmIGZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIG9yIGNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKICAgICAgICAgICAgICMgRmlsZSBpcyBsYXJnZXIgdGhhbiB3aGF0IGZpdHMgaW50byBhIDQgYnl0ZSBpbnRlZ2VyLAogICAgICAgICAgICAgIyBmYWxsIGJhY2sgdG8gdGhlIFpJUDY0IGV4dGVuc2lvbgpAQCAtMzQ5LDkgKzM3MCwxNSBAQAogICAgICAgICAgICAgICAgICAgICAxLCBzdHJ1Y3QuY2FsY3NpemUoZm10KS00LCBmaWxlX3NpemUsIGNvbXByZXNzX3NpemUpCiAgICAgICAgICAgICBmaWxlX3NpemUgPSAweGZmZmZmZmZmCiAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gMHhmZmZmZmZmZgotICAgICAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSBtYXgoNDUsIHNlbGYuZXh0cmFjdF92ZXJzaW9uKQotICAgICAgICAgICAgc2VsZi5jcmVhdGVfdmVyc2lvbiA9IG1heCg0NSwgc2VsZi5leHRyYWN0X3ZlcnNpb24pCisgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IFpJUDY0X1ZFUlNJT04KIAorICAgICAgICBpZiBzZWxmLmNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgorICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoQlpJUDJfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisgICAgICAgIGVsaWYgc2VsZi5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoTFpNQV9WRVJTSU9OLCBtaW5fdmVyc2lvbikKKworICAgICAgICBzZWxmLmV4dHJhY3RfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgc2VsZi5leHRyYWN0X3ZlcnNpb24pCisgICAgICAgIHNlbGYuY3JlYXRlX3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHNlbGYuY3JlYXRlX3ZlcnNpb24pCiAgICAgICAgIGZpbGVuYW1lLCBmbGFnX2JpdHMgPSBzZWxmLl9lbmNvZGVGaWxlbmFtZUZsYWdzKCkKICAgICAgICAgaGVhZGVyID0gc3RydWN0LnBhY2soc3RydWN0RmlsZUhlYWRlciwgc3RyaW5nRmlsZUhlYWRlciwKICAgICAgICAgICAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24sIHNlbGYucmVzZXJ2ZWQsIGZsYWdfYml0cywKQEAgLTQ2MSw2ICs0ODgsMTI2IEBACiAgICAgICAgIHNlbGYuX1VwZGF0ZUtleXMoYykKICAgICAgICAgcmV0dXJuIGMKIAorCitjbGFzcyBMWk1BQ29tcHJlc3NvcjoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fY29tcCA9IE5vbmUKKworICAgIGRlZiBfaW5pdChzZWxmKToKKyAgICAgICAgcHJvcHMgPSBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeydpZCc6IGx6bWEuRklMVEVSX0xaTUExfSkKKyAgICAgICAgc2VsZi5fY29tcCA9IGx6bWEuTFpNQUNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPVsKKyAgICAgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfTFpNQTEsIHByb3BzKQorICAgICAgICBdKQorICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJzxCQkgnLCA5LCA0LCBsZW4ocHJvcHMpKSArIHByb3BzCisKKyAgICBkZWYgY29tcHJlc3Moc2VsZiwgZGF0YSk6CisgICAgICAgIGlmIHNlbGYuX2NvbXAgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbml0KCkgKyBzZWxmLl9jb21wLmNvbXByZXNzKGRhdGEpCisgICAgICAgIHJldHVybiBzZWxmLl9jb21wLmNvbXByZXNzKGRhdGEpCisKKyAgICBkZWYgZmx1c2goc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2NvbXAgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbml0KCkgKyBzZWxmLl9jb21wLmZsdXNoKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbXAuZmx1c2goKQorCisKK2NsYXNzIExaTUFEZWNvbXByZXNzb3I6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2RlY29tcCA9IE5vbmUKKyAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9IGInJworICAgICAgICBzZWxmLmVvZiA9IEZhbHNlCisKKyAgICBkZWYgZGVjb21wcmVzcyhzZWxmLCBkYXRhKToKKyAgICAgICAgaWYgc2VsZi5fZGVjb21wIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkICs9IGRhdGEKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl91bmNvbnN1bWVkKSA8PSA0OgorICAgICAgICAgICAgICAgIHJldHVybiBiJycKKyAgICAgICAgICAgIHBzaXplLCA9IHN0cnVjdC51bnBhY2soJzxIJywgc2VsZi5fdW5jb25zdW1lZFsyOjRdKQorICAgICAgICAgICAgaWYgbGVuKHNlbGYuX3VuY29uc3VtZWQpIDw9IDQgKyBwc2l6ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gYicnCisKKyAgICAgICAgICAgIHNlbGYuX2RlY29tcCA9IGx6bWEuTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9WworICAgICAgICAgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfTFpNQTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZFs0OjQgKyBwc2l6ZV0pCisgICAgICAgICAgICBdKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX3VuY29uc3VtZWRbNCArIHBzaXplOl0KKyAgICAgICAgICAgIGRlbCBzZWxmLl91bmNvbnN1bWVkCisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVjb21wLmRlY29tcHJlc3MoZGF0YSkKKyAgICAgICAgc2VsZi5lb2YgPSBzZWxmLl9kZWNvbXAuZW9mCisgICAgICAgIHJldHVybiByZXN1bHQKKworCitjb21wcmVzc29yX25hbWVzID0geworICAgIDA6ICdzdG9yZScsCisgICAgMTogJ3NocmluaycsCisgICAgMjogJ3JlZHVjZScsCisgICAgMzogJ3JlZHVjZScsCisgICAgNDogJ3JlZHVjZScsCisgICAgNTogJ3JlZHVjZScsCisgICAgNjogJ2ltcGxvZGUnLAorICAgIDc6ICd0b2tlbml6ZScsCisgICAgODogJ2RlZmxhdGUnLAorICAgIDk6ICdkZWZsYXRlNjQnLAorICAgIDEwOiAnaW1wbG9kZScsCisgICAgMTI6ICdiemlwMicsCisgICAgMTQ6ICdsem1hJywKKyAgICAxODogJ3RlcnNlJywKKyAgICAxOTogJ2x6NzcnLAorICAgIDk3OiAnd2F2cGFjaycsCisgICAgOTg6ICdwcG1kJywKK30KKworZGVmIF9jaGVja19jb21wcmVzc2lvbihjb21wcmVzc2lvbik6CisgICAgaWYgY29tcHJlc3Npb24gPT0gWklQX1NUT1JFRDoKKyAgICAgICAgcGFzcworICAgIGVsaWYgY29tcHJlc3Npb24gPT0gWklQX0RFRkxBVEVEOgorICAgICAgICBpZiBub3QgemxpYjoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgemxpYiBtb2R1bGUiKQorICAgIGVsaWYgY29tcHJlc3Npb24gPT0gWklQX0JaSVAyOgorICAgICAgICBpZiBub3QgYnoyOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiQ29tcHJlc3Npb24gcmVxdWlyZXMgdGhlIChtaXNzaW5nKSBiejIgbW9kdWxlIikKKyAgICBlbGlmIGNvbXByZXNzaW9uID09IFpJUF9MWk1BOgorICAgICAgICBpZiBub3QgbHptYToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgbHptYSBtb2R1bGUiKQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCisKKworZGVmIF9nZXRfY29tcHJlc3Nvcihjb21wcmVzc190eXBlKToKKyAgICBpZiBjb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgcmV0dXJuIHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sCisgICAgICAgICAgICAgemxpYi5ERUZMQVRFRCwgLTE1KQorICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6CisgICAgICAgIHJldHVybiBiejIuQloyQ29tcHJlc3NvcigpCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICByZXR1cm4gTFpNQUNvbXByZXNzb3IoKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBOb25lCisKKworZGVmIF9nZXRfZGVjb21wcmVzc29yKGNvbXByZXNzX3R5cGUpOgorICAgIGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX1NUT1JFRDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgorICAgICAgICByZXR1cm4gemxpYi5kZWNvbXByZXNzb2JqKC0xNSkKKyAgICBlbGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgorICAgICAgICByZXR1cm4gYnoyLkJaMkRlY29tcHJlc3NvcigpCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICByZXR1cm4gTFpNQURlY29tcHJlc3NvcigpCisgICAgZWxzZToKKyAgICAgICAgZGVzY3IgPSBjb21wcmVzc29yX25hbWVzLmdldChjb21wcmVzc190eXBlKQorICAgICAgICBpZiBkZXNjcjoKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzaW9uIHR5cGUgJWQgKCVzKSIgJSAoY29tcHJlc3NfdHlwZSwgZGVzY3IpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3Npb24gdHlwZSAlZCIgJSAoY29tcHJlc3NfdHlwZSwpKQorCisKIGNsYXNzIFppcEV4dEZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgogICAgICIiIkZpbGUtbGlrZSBvYmplY3QgZm9yIHJlYWRpbmcgYW4gYXJjaGl2ZSBtZW1iZXIuCiAgICAgICAgSXMgcmV0dXJuZWQgYnkgWmlwRmlsZS5vcGVuKCkuCkBAIC00ODIsMTMgKzYyOSwxMiBAQAogICAgICAgICBzZWxmLl9jbG9zZV9maWxlb2JqID0gY2xvc2VfZmlsZW9iagogCiAgICAgICAgIHNlbGYuX2NvbXByZXNzX3R5cGUgPSB6aXBpbmZvLmNvbXByZXNzX3R5cGUKLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSA9IHppcGluZm8uY29tcHJlc3Nfc2l6ZQogICAgICAgICBzZWxmLl9jb21wcmVzc19sZWZ0ID0gemlwaW5mby5jb21wcmVzc19zaXplCisgICAgICAgIHNlbGYuX2xlZnQgPSB6aXBpbmZvLmZpbGVfc2l6ZQogCi0gICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgotICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gemxpYi5kZWNvbXByZXNzb2JqKC0xNSkKLSAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9IGInJworICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBfZ2V0X2RlY29tcHJlc3NvcihzZWxmLl9jb21wcmVzc190eXBlKQogCisgICAgICAgIHNlbGYuX2VvZiA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAogCkBAIC01NjMsNyArNzA5LDExIEBACiAgICAgICAgICIiIlJldHVybnMgYnVmZmVyZWQgYnl0ZXMgd2l0aG91dCBhZHZhbmNpbmcgdGhlIHBvc2l0aW9uLiIiIgogICAgICAgICBpZiBuID4gbGVuKHNlbGYuX3JlYWRidWZmZXIpIC0gc2VsZi5fb2Zmc2V0OgogICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJlYWQobikKLSAgICAgICAgICAgIHNlbGYuX29mZnNldCAtPSBsZW4oY2h1bmspCisgICAgICAgICAgICBpZiBsZW4oY2h1bmspID4gc2VsZi5fb2Zmc2V0OgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBjaHVuayArIHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0KKyAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCAtPSBsZW4oY2h1bmspCiAKICAgICAgICAgIyBSZXR1cm4gdXAgdG8gNTEyIGJ5dGVzIHRvIHJlZHVjZSBhbGxvY2F0aW9uIG92ZXJoZWFkIGZvciB0aWdodCBsb29wcy4KICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0OiBzZWxmLl9vZmZzZXQgKyA1MTJdCkBAIC01NzUsODAgKzcyNSwxMjMgQEAKICAgICAgICAgIiIiUmVhZCBhbmQgcmV0dXJuIHVwIHRvIG4gYnl0ZXMuCiAgICAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBOb25lLCBvciBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4uCiAgICAgICAgICIiIgotICAgICAgICBidWYgPSBiJycKLSAgICAgICAgaWYgbiBpcyBOb25lOgotICAgICAgICAgICAgbiA9IC0xCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBuIDwgMDoKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkMShuKQotICAgICAgICAgICAgZWxpZiBuID4gbGVuKGJ1Zik6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZDEobiAtIGxlbihidWYpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gYnVmCi0gICAgICAgICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gYnVmCi0gICAgICAgICAgICBidWYgKz0gZGF0YQorICAgICAgICBpZiBuIGlzIE5vbmUgb3IgbiA8IDA6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fZW9mOgorICAgICAgICAgICAgICAgIGJ1ZiArPSBzZWxmLl9yZWFkMShzZWxmLk1BWF9OKQorICAgICAgICAgICAgcmV0dXJuIGJ1ZgogCi0gICAgZGVmIF91cGRhdGVfY3JjKHNlbGYsIG5ld2RhdGEsIGVvZik6CisgICAgICAgIGVuZCA9IG4gKyBzZWxmLl9vZmZzZXQKKyAgICAgICAgaWYgZW5kIDwgbGVuKHNlbGYuX3JlYWRidWZmZXIpOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQorICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICByZXR1cm4gYnVmCisKKyAgICAgICAgbiA9IGVuZCAtIGxlbihzZWxmLl9yZWFkYnVmZmVyKQorICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKKyAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICB3aGlsZSBuID4gMCBhbmQgbm90IHNlbGYuX2VvZjoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShuKQorICAgICAgICAgICAgaWYgbiA8IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gZGF0YQorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IG4KKyAgICAgICAgICAgICAgICBidWYgKz0gZGF0YVs6bl0KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgYnVmICs9IGRhdGEKKyAgICAgICAgICAgIG4gLT0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBidWYKKworICAgIGRlZiBfdXBkYXRlX2NyYyhzZWxmLCBuZXdkYXRhKToKICAgICAgICAgIyBVcGRhdGUgdGhlIENSQyB1c2luZyB0aGUgZ2l2ZW4gZGF0YS4KICAgICAgICAgaWYgc2VsZi5fZXhwZWN0ZWRfY3JjIGlzIE5vbmU6CiAgICAgICAgICAgICAjIE5vIG5lZWQgdG8gY29tcHV0ZSB0aGUgQ1JDIGlmIHdlIGRvbid0IGhhdmUgYSByZWZlcmVuY2UgdmFsdWUKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLl9ydW5uaW5nX2NyYyA9IGNyYzMyKG5ld2RhdGEsIHNlbGYuX3J1bm5pbmdfY3JjKSAmIDB4ZmZmZmZmZmYKICAgICAgICAgIyBDaGVjayB0aGUgQ1JDIGlmIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKLSAgICAgICAgaWYgZW9mIGFuZCBzZWxmLl9ydW5uaW5nX2NyYyAhPSBzZWxmLl9leHBlY3RlZF9jcmM6CisgICAgICAgIGlmIHNlbGYuX2VvZiBhbmQgc2VsZi5fcnVubmluZ19jcmMgIT0gc2VsZi5fZXhwZWN0ZWRfY3JjOgogICAgICAgICAgICAgcmFpc2UgQmFkWmlwRmlsZSgiQmFkIENSQy0zMiBmb3IgZmlsZSAlciIgJSBzZWxmLm5hbWUpCiAKICAgICBkZWYgcmVhZDEoc2VsZiwgbik6CiAgICAgICAgICIiIlJlYWQgdXAgdG8gbiBieXRlcyB3aXRoIGF0IG1vc3Qgb25lIHJlYWQoKSBzeXN0ZW0gY2FsbC4iIiIKIAotICAgICAgICAjIFNpbXBsaWZ5IGFsZ29yaXRobSAoYnJhbmNoaW5nKSBieSB0cmFuc2Zvcm1pbmcgbmVnYXRpdmUgbiB0byBsYXJnZSBuLgotICAgICAgICBpZiBuIDwgMCBvciBuIGlzIE5vbmU6Ci0gICAgICAgICAgICBuID0gc2VsZi5NQVhfTgorICAgICAgICBpZiBuIGlzIE5vbmUgb3IgbiA8IDA6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICBkYXRhID0gc2VsZi5fcmVhZDEoc2VsZi5NQVhfTikKKyAgICAgICAgICAgIGJ1ZiArPSBkYXRhCisgICAgICAgICAgICByZXR1cm4gYnVmCiAKLSAgICAgICAgIyBCeXRlcyBhdmFpbGFibGUgaW4gcmVhZCBidWZmZXIuCi0gICAgICAgIGxlbl9yZWFkYnVmZmVyID0gbGVuKHNlbGYuX3JlYWRidWZmZXIpIC0gc2VsZi5fb2Zmc2V0CisgICAgICAgIGVuZCA9IG4gKyBzZWxmLl9vZmZzZXQKKyAgICAgICAgaWYgZW5kIDwgbGVuKHNlbGYuX3JlYWRidWZmZXIpOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQorICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICByZXR1cm4gYnVmCisKKyAgICAgICAgbiA9IGVuZCAtIGxlbihzZWxmLl9yZWFkYnVmZmVyKQorICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKKyAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICBpZiBuID4gMDoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShuKQorICAgICAgICAgICAgaWYgbiA8IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gZGF0YQorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IG4KKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVs6bl0KKyAgICAgICAgICAgIGJ1ZiArPSBkYXRhCisgICAgICAgIHJldHVybiBidWYKKworICAgIGRlZiBfcmVhZDEoc2VsZiwgbik6CisgICAgICAgICMgUmVhZCB1cCB0byBuIGNvbXByZXNzZWQgYnl0ZXMgd2l0aCBhdCBtb3N0IG9uZSByZWFkKCkgc3lzdGVtIGNhbGwsCisgICAgICAgICMgZGVjcnlwdCBhbmQgZGVjb21wcmVzcyB0aGVtLgorICAgICAgICBpZiBzZWxmLl9lb2Ygb3IgbiA8PSAwOgorICAgICAgICAgICAgcmV0dXJuIGInJwogCiAgICAgICAgICMgUmVhZCBmcm9tIGZpbGUuCi0gICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX2xlZnQgPiAwIGFuZCBuID4gbGVuX3JlYWRidWZmZXIgKyBsZW4oc2VsZi5fdW5jb25zdW1lZCk6Ci0gICAgICAgICAgICBuYnl0ZXMgPSBuIC0gbGVuX3JlYWRidWZmZXIgLSBsZW4oc2VsZi5fdW5jb25zdW1lZCkKLSAgICAgICAgICAgIG5ieXRlcyA9IG1heChuYnl0ZXMsIHNlbGYuTUlOX1JFQURfU0laRSkKLSAgICAgICAgICAgIG5ieXRlcyA9IG1pbihuYnl0ZXMsIHNlbGYuX2NvbXByZXNzX2xlZnQpCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgorICAgICAgICAgICAgIyMgSGFuZGxlIHVuY29uc3VtZWQgZGF0YS4KKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsCisgICAgICAgICAgICBpZiBuID4gbGVuKGRhdGEpOgorICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fcmVhZDIobiAtIGxlbihkYXRhKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMihuKQogCi0gICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZW9iai5yZWFkKG5ieXRlcykKLSAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX2xlZnQgLT0gbGVuKGRhdGEpCi0KLSAgICAgICAgICAgIGlmIGRhdGEgYW5kIHNlbGYuX2RlY3J5cHRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZXMobWFwKHNlbGYuX2RlY3J5cHRlciwgZGF0YSkpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX1NUT1JFRDoKLSAgICAgICAgICAgICAgICBzZWxmLl91cGRhdGVfY3JjKGRhdGEsIGVvZj0oc2VsZi5fY29tcHJlc3NfbGVmdD09MCkpCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFByZXBhcmUgZGVmbGF0ZWQgYnl0ZXMgZm9yIGRlY29tcHJlc3Npb24uCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCArPSBkYXRhCi0KLSAgICAgICAgIyBIYW5kbGUgdW5jb25zdW1lZCBkYXRhLgotICAgICAgICBpZiAobGVuKHNlbGYuX3VuY29uc3VtZWQpID4gMCBhbmQgbiA+IGxlbl9yZWFkYnVmZmVyIGFuZAotICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQsCi0gICAgICAgICAgICAgICAgbWF4KG4gLSBsZW5fcmVhZGJ1ZmZlciwgc2VsZi5NSU5fUkVBRF9TSVpFKQotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkID0gc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbAotICAgICAgICAgICAgZW9mID0gbGVuKHNlbGYuX3VuY29uc3VtZWQpID09IDAgYW5kIHNlbGYuX2NvbXByZXNzX2xlZnQgPT0gMAotICAgICAgICAgICAgaWYgZW9mOgorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9TVE9SRUQ6CisgICAgICAgICAgICBzZWxmLl9lb2YgPSBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAKKyAgICAgICAgZWxpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgICAgIG4gPSBtYXgobiwgc2VsZi5NSU5fUkVBRF9TSVpFKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKGRhdGEsIG4pCisgICAgICAgICAgICBzZWxmLl9lb2YgPSAoc2VsZi5fZGVjb21wcmVzc29yLmVvZiBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAgYW5kCisgICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsKQorICAgICAgICAgICAgaWYgc2VsZi5fZW9mOgogICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fZGVjb21wcmVzc29yLmZsdXNoKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgc2VsZi5fZW9mID0gc2VsZi5fZGVjb21wcmVzc29yLmVvZiBvciBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAKIAotICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2NyYyhkYXRhLCBlb2Y9ZW9mKQotICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgIGRhdGEgPSBkYXRhWzpzZWxmLl9sZWZ0XQorICAgICAgICBzZWxmLl9sZWZ0IC09IGxlbihkYXRhKQorICAgICAgICBpZiBzZWxmLl9sZWZ0IDw9IDA6CisgICAgICAgICAgICBzZWxmLl9lb2YgPSBUcnVlCisgICAgICAgIHNlbGYuX3VwZGF0ZV9jcmMoZGF0YSkKKyAgICAgICAgcmV0dXJuIGRhdGEKIAotICAgICAgICAjIFJlYWQgZnJvbSBidWZmZXIuCi0gICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDogc2VsZi5fb2Zmc2V0ICsgbl0KLSAgICAgICAgc2VsZi5fb2Zmc2V0ICs9IGxlbihkYXRhKQorICAgIGRlZiBfcmVhZDIoc2VsZiwgbik6CisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX2xlZnQgPD0gMDoKKyAgICAgICAgICAgIHJldHVybiBiJycKKworICAgICAgICBuID0gbWF4KG4sIHNlbGYuTUlOX1JFQURfU0laRSkKKyAgICAgICAgbiA9IG1pbihuLCBzZWxmLl9jb21wcmVzc19sZWZ0KQorCisgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlb2JqLnJlYWQobikKKyAgICAgICAgc2VsZi5fY29tcHJlc3NfbGVmdCAtPSBsZW4oZGF0YSkKKworICAgICAgICBpZiBzZWxmLl9kZWNyeXB0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhID0gYnl0ZXMobWFwKHNlbGYuX2RlY3J5cHRlciwgZGF0YSkpCiAgICAgICAgIHJldHVybiBkYXRhCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CkBAIC02NjcsNyArODYwLDggQEAKICAgICBmaWxlOiBFaXRoZXIgdGhlIHBhdGggdG8gdGhlIGZpbGUsIG9yIGEgZmlsZS1saWtlIG9iamVjdC4KICAgICAgICAgICBJZiBpdCBpcyBhIHBhdGgsIHRoZSBmaWxlIHdpbGwgYmUgb3BlbmVkIGFuZCBjbG9zZWQgYnkgWmlwRmlsZS4KICAgICBtb2RlOiBUaGUgbW9kZSBjYW4gYmUgZWl0aGVyIHJlYWQgInIiLCB3cml0ZSAidyIgb3IgYXBwZW5kICJhIi4KLSAgICBjb21wcmVzc2lvbjogWklQX1NUT1JFRCAobm8gY29tcHJlc3Npb24pIG9yIFpJUF9ERUZMQVRFRCAocmVxdWlyZXMgemxpYikuCisgICAgY29tcHJlc3Npb246IFpJUF9TVE9SRUQgKG5vIGNvbXByZXNzaW9uKSwgWklQX0RFRkxBVEVEIChyZXF1aXJlcyB6bGliKSwKKyAgICAgICAgICAgICAgICAgWklQX0JaSVAyIChyZXF1aXJlcyBiejIpIG9yIFpJUF9MWk1BIChyZXF1aXJlcyBsem1hKS4KICAgICBhbGxvd1ppcDY0OiBpZiBUcnVlIFppcEZpbGUgd2lsbCBjcmVhdGUgZmlsZXMgd2l0aCBaSVA2NCBleHRlbnNpb25zIHdoZW4KICAgICAgICAgICAgICAgICBuZWVkZWQsIG90aGVyd2lzZSBpdCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoaXMgd291bGQKICAgICAgICAgICAgICAgICBiZSBuZWNlc3NhcnkuCkBAIC02ODEsMTQgKzg3NSw3IEBACiAgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3IiwgImEiKToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignWmlwRmlsZSgpIHJlcXVpcmVzIG1vZGUgInIiLCAidyIsIG9yICJhIicpCiAKLSAgICAgICAgaWYgY29tcHJlc3Npb24gPT0gWklQX1NUT1JFRDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiBjb21wcmVzc2lvbiA9PSBaSVBfREVGTEFURUQ6Ci0gICAgICAgICAgICBpZiBub3QgemxpYjoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgemxpYiBtb2R1bGUiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKGNvbXByZXNzaW9uKQogCiAgICAgICAgIHNlbGYuX2FsbG93WmlwNjQgPSBhbGxvd1ppcDY0CiAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IEZhbHNlCkBAIC04MTQsNiArMTAwMSw5IEBACiAgICAgICAgICAgICAoeC5jcmVhdGVfdmVyc2lvbiwgeC5jcmVhdGVfc3lzdGVtLCB4LmV4dHJhY3RfdmVyc2lvbiwgeC5yZXNlcnZlZCwKICAgICAgICAgICAgICAgICB4LmZsYWdfYml0cywgeC5jb21wcmVzc190eXBlLCB0LCBkLAogICAgICAgICAgICAgICAgIHguQ1JDLCB4LmNvbXByZXNzX3NpemUsIHguZmlsZV9zaXplKSA9IGNlbnRkaXJbMToxMl0KKyAgICAgICAgICAgIGlmIHguZXh0cmFjdF92ZXJzaW9uID4gTUFYX0VYVFJBQ1RfVkVSU0lPTjoKKyAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJ6aXAgZmlsZSB2ZXJzaW9uICUuMWYiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LmV4dHJhY3RfdmVyc2lvbiAvIDEwKSkKICAgICAgICAgICAgIHgudm9sdW1lLCB4LmludGVybmFsX2F0dHIsIHguZXh0ZXJuYWxfYXR0ciA9IGNlbnRkaXJbMTU6MThdCiAgICAgICAgICAgICAjIENvbnZlcnQgZGF0ZS90aW1lIGNvZGUgdG8gKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbiwgc2VjKQogICAgICAgICAgICAgeC5fcmF3X3RpbWUgPSB0CkBAIC04MzYsMTAgKzEwMjYsNyBAQAogCiAgICAgZGVmIG5hbWVsaXN0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGZpbGUgbmFtZXMgaW4gdGhlIGFyY2hpdmUuIiIiCi0gICAgICAgIGwgPSBbXQotICAgICAgICBmb3IgZGF0YSBpbiBzZWxmLmZpbGVsaXN0OgotICAgICAgICAgICAgbC5hcHBlbmQoZGF0YS5maWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGwKKyAgICAgICAgcmV0dXJuIFtkYXRhLmZpbGVuYW1lIGZvciBkYXRhIGluIHNlbGYuZmlsZWxpc3RdCiAKICAgICBkZWYgaW5mb2xpc3Qoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY2xhc3MgWmlwSW5mbyBpbnN0YW5jZXMgZm9yIGZpbGVzIGluIHRoZQpAQCAtOTUwLDYgKzExMzcsMTQgQEAKICAgICAgICAgaWYgZmhlYWRlcltfRkhfRVhUUkFfRklFTERfTEVOR1RIXToKICAgICAgICAgICAgIHplZl9maWxlLnJlYWQoZmhlYWRlcltfRkhfRVhUUkFfRklFTERfTEVOR1RIXSkKIAorICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDIwOgorICAgICAgICAgICAgIyBaaXAgMi43OiBjb21wcmVzc2VkIHBhdGNoZWQgZGF0YQorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3NlZCBwYXRjaGVkIGRhdGEgKGZsYWcgYml0IDUpIikKKworICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDQwOgorICAgICAgICAgICAgIyBzdHJvbmcgZW5jcnlwdGlvbgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3Ryb25nIGVuY3J5cHRpb24gKGZsYWcgYml0IDYpIikKKwogICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDgwMDoKICAgICAgICAgICAgICMgVVRGLTggZmlsZW5hbWUKICAgICAgICAgICAgIGZuYW1lX3N0ciA9IGZuYW1lLmRlY29kZSgidXRmLTgiKQpAQCAtMTA3MCwxMSArMTI2NSw3IEBACiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gd3JpdGUgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRCBhbmQgbm90IHpsaWI6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCi0gICAgICAgICAgICAgICAgICAiQ29tcHJlc3Npb24gcmVxdWlyZXMgdGhlIChtaXNzaW5nKSB6bGliIG1vZHVsZSIpCi0gICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgbm90IGluIChaSVBfU1RPUkVELCBaSVBfREVGTEFURUQpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKHppbmZvLmNvbXByZXNzX3R5cGUpCiAgICAgICAgIGlmIHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2FsbG93WmlwNjQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKCJGaWxlc2l6ZSB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQpAQCAtMTExMiw2ICsxMzAzLDkgQEAKICAgICAgICAgemluZm8uZmlsZV9zaXplID0gc3Quc3Rfc2l6ZQogICAgICAgICB6aW5mby5mbGFnX2JpdHMgPSAweDAwCiAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcworICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKKyAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCiAKICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQpAQCAtMTEyNSwxNyArMTMxOSwxMyBAQAogICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKCkpCiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBjbXByID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCiAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6CiAgICAgICAgICAgICAjIE11c3Qgb3ZlcndyaXRlIENSQyBhbmQgc2l6ZXMgd2l0aCBjb3JyZWN0IGRhdGEgbGF0ZXIKICAgICAgICAgICAgIHppbmZvLkNSQyA9IENSQyA9IDAKICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplID0gMAogICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gZmlsZV9zaXplID0gMAogICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKCkpCi0gICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKLSAgICAgICAgICAgICAgICBjbXByID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVGTEFURUQsIC0xNSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY21wciA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZCgxMDI0ICogOCkKICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgpAQCAtMTE4OCwxMyArMTM3OCwxNSBAQAogICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgZGF0YQogICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKKyAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgogCiAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCiAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKICAgICAgICAgemluZm8uQ1JDID0gY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmICAgICAgICMgQ1JDLTMyIGNoZWNrc3VtCi0gICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgotICAgICAgICAgICAgY28gPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAotICAgICAgICAgICAgICAgICB6bGliLkRFRkxBVEVELCAtMTUpCisgICAgICAgIGNvID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCisgICAgICAgIGlmIGNvOgogICAgICAgICAgICAgZGF0YSA9IGNvLmNvbXByZXNzKGRhdGEpICsgY28uZmx1c2goKQogICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGxlbihkYXRhKSAgICAjIENvbXByZXNzZWQgc2l6ZQogICAgICAgICBlbHNlOgpAQCAtMTI0NiwxOCArMTQzOCwyMiBAQAogICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0ID0gemluZm8uaGVhZGVyX29mZnNldAogCiAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHppbmZvLmV4dHJhCisgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSAwCiAgICAgICAgICAgICAgICAgaWYgZXh0cmE6CiAgICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGEgWklQNjQgZmllbGQgdG8gdGhlIGV4dHJhJ3MKICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHN0cnVjdC5wYWNrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8SEgnICsgJ1EnKmxlbihleHRyYSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgOCpsZW4oZXh0cmEpLCAqZXh0cmEpICsgZXh0cmFfZGF0YQogCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfdmVyc2lvbiA9IG1heCg0NSwgemluZm8uZXh0cmFjdF92ZXJzaW9uKQotICAgICAgICAgICAgICAgICAgICBjcmVhdGVfdmVyc2lvbiA9IG1heCg0NSwgemluZm8uY3JlYXRlX3ZlcnNpb24pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF92ZXJzaW9uID0gemluZm8uZXh0cmFjdF92ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZV92ZXJzaW9uID0gemluZm8uY3JlYXRlX3ZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBaSVA2NF9WRVJTSU9OCiAKKyAgICAgICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9CWklQMjoKKyAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoQlpJUDJfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisgICAgICAgICAgICAgICAgZWxpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IG1heChMWk1BX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQorCisgICAgICAgICAgICAgICAgZXh0cmFjdF92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCB6aW5mby5leHRyYWN0X3ZlcnNpb24pCisgICAgICAgICAgICAgICAgY3JlYXRlX3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHppbmZvLmNyZWF0ZV92ZXJzaW9uKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGZsYWdfYml0cyA9IHppbmZvLl9lbmNvZGVGaWxlbmFtZUZsYWdzKCkKICAgICAgICAgICAgICAgICAgICAgY2VudGRpciA9IHN0cnVjdC5wYWNrKHN0cnVjdENlbnRyYWxEaXIsCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dCBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CmluZGV4IGRlMmY1Y2IuLmZhMDRiOTcgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CisrKyBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CkBAIC04LDcwICs4LDEyNSBAQAogYW4gSW5zdGFsbGVyIHBhY2thZ2UgZnJvbSB0aGUgaW5zdGFsbGF0aW9uIHBsdXMgb3RoZXIgZmlsZXMgaW4gYGByZXNvdXJjZXNgYCAKIGFuZCBgYHNjcmlwdHNgYCBhbmQgcGxhY2VkIHRoYXQgb24gYSBgYC5kbWdgYCBkaXNrIGltYWdlLgogCi1BcyBvZiBQeXRob24gMi43LnggYW5kIDMuMiwgUFNGIHByYWN0aWNlIGlzIHRvIGJ1aWxkIHR3byBpbnN0YWxsZXIgdmFyaWFudHMKLWZvciBlYWNoIHJlbGVhc2U6CitBcyBvZiBQeXRob24gMy4zLjAsIFBTRiBwcmFjdGljZSBpcyB0byBidWlsZCB0d28gaW5zdGFsbGVyIHZhcmlhbnRzCitmb3IgZWFjaCByZWxlYXNlLgogCiAxLiAgMzItYml0LW9ubHksIGkzODYgYW5kIFBQQyB1bml2ZXJzYWwsIGNhcGFibGUgb24gcnVubmluZyBvbiBhbGwgbWFjaGluZXMKLSAgICBzdXBwb3J0ZWQgYnkgTWFjIE9TIFggMTAuMy45IHRocm91Z2ggKGF0IGxlYXN0KSAxMC42OjoKKyAgICBzdXBwb3J0ZWQgYnkgTWFjIE9TIFggMTAuNSB0aHJvdWdoIChhdCBsZWFzdCkgMTAuODo6CiAKLSAgICAgICAgcHl0aG9uIGJ1aWxkLWluc3RhbGxlci5weSBcCisgICAgICAgIC91c3IvYmluL3B5dGhvbiBidWlsZC1pbnN0YWxsZXIucHkgXAorICAgICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNS5zZGsgXAorICAgICAgICAgICAgLS11bml2ZXJzYWwtYXJjaHM9MzItYml0IFwKKyAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC41CisKKyAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcworCisgICAgICAgICogTkN1cnNlcyA1LjkgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTAzNykKKyAgICAgICAgKiBTUUxpdGUgMy43LjEzCisgICAgICAgICogWFogNS4wLjMKKworICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIGBgVGNsL1RrIDguNGBgIChjdXJyZW50bHkgOC40LjE5KSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCisKKyAgICAtIHJlY29tbWVuZGVkIGJ1aWxkIGVudmlyb25tZW50OgorCisgICAgICAgICogTWFjIE9TIFggMTAuNS44IEludGVsIG9yIFBQQworICAgICAgICAqIFhjb2RlIDMuMS40CisgICAgICAgICogYGBNYWNPU1gxMC41YGAgU0RLCisgICAgICAgICogYGBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuNWBgCisgICAgICAgICogQXBwbGUgYGBnY2MtNC4yYGAKKyAgICAgICAgKiBzeXN0ZW0gUHl0aG9uIDIuNSBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorCisgICAgLSBhbHRlcm5hdGUgYnVpbGQgZW52aXJvbm1lbnRzOgorCisgICAgICAgICogTWFjIE9TIFggMTAuNi44IHdpdGggWGNvZGUgMy4yLjYKKyAgICAgICAgICAgIC0gbmVlZCB0byBjaGFuZ2UgYGAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy97VGNsLFRrfS5mcmFtZXdvcmsvVmVyc2lvbi9DdXJyZW50YGAgdG8gYGA4LjRgYAorICAgICAgICAqIE5vdGUgWGNvZGUgNC4qIGRvZXMgbm90IHN1cHBvcnQgYnVpbGRpbmcgZm9yIFBQQyBzbyBjYW5ub3QgYmUgdXNlZCBmb3IgdGhpcyBidWlsZAorCisyLiAgNjQtYml0IC8gMzItYml0LCB4ODZfNjQgYW5kIGkzODYgdW5pdmVyc2FsLCBmb3IgT1MgWCAxMC42IChhbmQgbGF0ZXIpOjoKKworICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKKyAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjYuc2RrIFwKKyAgICAgICAgICAgIC0tdW5pdmVyc2FsLWFyY2hzPWludGVsIFwKKyAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC42CisKKyAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcworCisgICAgICAgICogTkN1cnNlcyA1LjkgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTAzNykKKyAgICAgICAgKiBTUUxpdGUgMy43LjEzCisgICAgICAgICogWFogNS4wLjMKKworICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIFRjbC9UayA4LjUuOSAob3IgbGF0ZXIpIHRvIGJlIGluc3RhbGxlZCBmb3IgYnVpbGRpbmcKKworICAgIC0gcmVjb21tZW5kZWQgYnVpbGQgZW52aXJvbm1lbnQ6CisKKyAgICAgICAgKiBNYWMgT1MgWCAxMC42LjggKG9yIGxhdGVyKQorICAgICAgICAqIFhjb2RlIDMuMi42CisgICAgICAgICogYGBNYWNPU1gxMC42YGAgU0RLCisgICAgICAgICogYGBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuNmBgCisgICAgICAgICogQXBwbGUgYGBnY2MtNC4yYGAKKyAgICAgICAgKiBzeXN0ZW0gUHl0aG9uIDIuNiBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorCisgICAgLSBhbHRlcm5hdGUgYnVpbGQgZW52aXJvbm1lbnRzOgorCisgICAgICAgICogbm9uZS4gIFhjb2RlIDQueCBjdXJyZW50bHkgc3VwcGxpZXMgdHdvIEMgY29tcGlsZXJzLgorICAgICAgICAgIGBgbGx2bS1nY2MtNC4yLjFgYCBoYXMgYmVlbiBmb3VuZCB0byBtaXNjb21waWxlIFB5dGhvbiAzLjMueCBhbmQKKyAgICAgICAgICBwcm9kdWNlIGEgbm9uLWZ1bmN0aW9uYWwgUHl0aG9uIGV4ZWN1dGFibGUuICBBcyBpdCBhcHBlYXJzIHRvIGJlCisgICAgICAgICAgY29uc2lkZXJlZCBhIG1pZ3JhdGlvbiBhaWQgYnkgQXBwbGUgYW5kIGlzIG5vdCBsaWtlbHkgdG8gYmUgZml4ZWQsCisgICAgICAgICAgaXRzIHVzZSBzaG91bGQgYmUgYXZvaWRlZC4gIFRoZSBvdGhlciBjb21waWxlciwgYGBjbGFuZ2BgLCBoYXMgYmVlbgorICAgICAgICAgIHVuZGVyZ29pbmcgcmFwaWQgZGV2ZWxvcG1lbnQuICBXaGlsZSBpdCBhcHBlYXJzIHRvIGhhdmUgYmVjb21lCisgICAgICAgICAgcHJvZHVjdGlvbi1yZWFkeSBpbiB0aGUgbW9zdCByZWNlbnQgWGNvZGUgNCByZWxlYXNlcyAoWGNvZGUgNC40LjEKKyAgICAgICAgICBhcyBvZiB0aGlzIHdyaXRpbmcpLCB0aGVyZSBhcmUgc3RpbGwgc29tZSBvcGVuIGlzc3VlcyB3aGVuCisgICAgICAgICAgYnVpbGRpbmcgUHl0aG9uIGFuZCB0aGVyZSBoYXMgbm90IHlldCBiZWVuIHRoZSBsZXZlbCBvZiBleHBvc3VyZSBpbgorICAgICAgICAgIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHRoYXQgdGhlIFhjb2RlIDMgZ2NjLTQuMiBjb21waWxlciBoYXMgaGFkLgorCisKKyogICBGb3IgUHl0aG9uIDIuNy54IGFuZCAzLjIueCwgdGhlIDMyLWJpdC1vbmx5IGluc3RhbGxlciB3YXMgY29uZmlndXJlZCB0bworICAgIHN1cHBvcnQgTWFjIE9TIFggMTAuMy45IHRocm91Z2ggKGF0IGxlYXN0KSAxMC42LiAgQmVjYXVzZSBpdCBpcworICAgIGJlbGlldmVkIHRoYXQgdGhlcmUgYXJlIGZldyBzeXN0ZW1zIHN0aWxsIHJ1bm5pbmcgT1MgWCAxMC4zIG9yIDEwLjQKKyAgICBhbmQgYmVjYXVzZSBpdCBoYXMgYmVjb21lIGluY3JlYXNpbmdseSBkaWZmaWN1bHQgdG8gdGVzdCBhbmQKKyAgICBzdXBwb3J0IHRoZSBkaWZmZXJlbmNlcyBpbiB0aGVzZSBlYXJsaWVyIHN5c3RlbXMsIGFzIG9mIFB5dGhvbiAzLjMuMCB0aGUgUFNGCisgICAgMzItYml0IGluc3RhbGxlciBubyBsb25nZXIgc3VwcG9ydHMgdGhlbS4gIEZvciByZWZlcmVuY2UgaW4gYnVpbGRpbmcgc3VjaAorICAgIGFuIGluc3RhbGxlciB5b3Vyc2VsZiwgdGhlIGRldGFpbHMgYXJlOjoKKworICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKICAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayBcCiAgICAgICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz0zMi1iaXQgXAogICAgICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjMgCi0gICAgICAgICAgICAjIFRoZXNlIGFyZSB0aGUgY3VycmVudCBkZWZhdWx0IG9wdGlvbnMKIAogICAgIC0gYnVpbGRzIHRoZSBmb2xsb3dpbmcgdGhpcmQtcGFydHkgbGlicmFyaWVzCiAKICAgICAgICAgKiBCemlwMgotICAgICAgICAqIFpsaWIgMS4yLjMKKyAgICAgICAgKiBOQ3Vyc2VzCiAgICAgICAgICogR05VIFJlYWRsaW5lIChHUEwpCiAgICAgICAgICogU1FMaXRlIDMKLSAgICAgICAgKiBOQ3Vyc2VzCisgICAgICAgICogWFoKKyAgICAgICAgKiBabGliIDEuMi4zCiAgICAgICAgICogT3JhY2xlIFNsZWVweWNhdCBEQiA0LjggKFB5dGhvbiAyLnggb25seSkKIAogICAgIC0gcmVxdWlyZXMgQWN0aXZlU3RhdGUgYGBUY2wvVGsgOC40YGAgKGN1cnJlbnRseSA4LjQuMTkpIHRvIGJlIGluc3RhbGxlZCBmb3IgYnVpbGRpbmcKIAotICAgIC0gY3VycmVudCB0YXJnZXQgYnVpbGQgZW52aXJvbm1lbnQ6CisgICAgLSByZWNvbW1lbmRlZCBidWlsZCBlbnZpcm9ubWVudDoKICAgICAgICAgCiAgICAgICAgICogTWFjIE9TIFggMTAuNS44IFBQQyBvciBJbnRlbAogICAgICAgICAqIFhjb2RlIDMuMS40IChvciBsYXRlcikKICAgICAgICAgKiBgYE1hY09TWDEwLjR1YGAgU0RLIChsYXRlciBTREtzIGRvIG5vdCBzdXBwb3J0IFBQQyBHMyBwcm9jZXNzb3JzKQogICAgICAgICAqIGBgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjNgYAogICAgICAgICAqIEFwcGxlIGBgZ2NjLTQuMGBgCi0gICAgICAgICogUHl0aG9uIDIubiAobiA+PSA0KSBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorICAgICAgICAqIHN5c3RlbSBQeXRob24gMi41IGZvciBkb2N1bWVudGF0aW9uIGJ1aWxkIHdpdGggU3BoaW54CiAKICAgICAtIGFsdGVybmF0ZSBidWlsZCBlbnZpcm9ubWVudHM6CiAKLSAgICAgICAgKiBNYWMgT1MgWCAxMC40LjExIHdpdGggWGNvZGUgMi41Ci0gICAgICAgICogTWFjIE9TIFggMTAuNi42IHdpdGggWGNvZGUgMy4yLjUKKyAgICAgICAgKiBNYWMgT1MgWCAxMC42Ljggd2l0aCBYY29kZSAzLjIuNgogICAgICAgICAgICAgLSBuZWVkIHRvIGNoYW5nZSBgYC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL3tUY2wsVGt9LmZyYW1ld29yay9WZXJzaW9uL0N1cnJlbnRgYCB0byBgYDguNGBgCiAKLTIuICA2NC1iaXQgLyAzMi1iaXQsIHg4Nl82NCBhbmQgaTM4NiB1bml2ZXJzYWwsIGZvciBPUyBYIDEwLjYgKGFuZCBsYXRlcik6OgotCi0gICAgICAgIHB5dGhvbiBidWlsZC1pbnN0YWxsZXIucHkgXAotICAgICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNi5zZGsgXAotICAgICAgICAgICAgLS11bml2ZXJzYWwtYXJjaHM9aW50ZWwgXAotICAgICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjYKLQotICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCi0gICAgCi0gICAgICAgICogcmVhZGxpbmUgbW9kdWxlIGxpbmtzIHdpdGggQXBwbGUgQlNEIGVkaXRsaW5lIChsaWJlZGl0KQotICAgICAgICAqIGJ1aWxkcyBPcmFjbGUgU2xlZXB5Y2F0IERCIDQuOCAoUHl0aG9uIDIueCBvbmx5KQotCi0gICAgLSByZXF1aXJlcyBBY3RpdmVTdGF0ZSBUY2wvVGsgOC41LjkgKG9yIGxhdGVyKSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCi0KLSAgICAtIGN1cnJlbnQgdGFyZ2V0IGJ1aWxkIGVudmlyb25tZW50OgotICAgICAgICAKLSAgICAgICAgKiBNYWMgT1MgWCAxMC42LjYgKG9yIGxhdGVyKQotICAgICAgICAqIFhjb2RlIDMuMi41IChvciBsYXRlcikKLSAgICAgICAgKiBgYE1hY09TWDEwLjZgYCBTREsKLSAgICAgICAgKiBgYE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0xMC42YGAKLSAgICAgICAgKiBBcHBsZSBgYGdjYy00LjJgYAotICAgICAgICAqIFB5dGhvbiAyLm4gKG4gPj0gNCkgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgd2l0aCBTcGhpbngKLQotICAgIC0gYWx0ZXJuYXRlIGJ1aWxkIGVudmlyb25tZW50czoKLQotICAgICAgICAqIG5vbmUKIAogCiBHZW5lcmFsIFByZXJlcXVpc2l0ZXMKQEAgLTg3LDYgKzE0MiwxMSBAQAogKiBJdCBpcyBzYWZlc3QgdG8gc3RhcnQgZWFjaCB2YXJpYW50IGJ1aWxkIHdpdGggYW4gZW1wdHkgc291cmNlIGRpcmVjdG9yeQogICBwb3B1bGF0ZWQgd2l0aCBhIGZyZXNoIGNvcHkgb2YgdGhlIHVudGFycmVkIHNvdXJjZS4KIAorKiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSByZW1vdmUgYW55IGV4aXN0aW5nIGluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZQorICBQeXRob24gYmVpbmcgYnVpbHQ6OgorCisgICAgICBzdWRvIHJtIC1yZiAvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvbi5uCisKIAogVGhlIFJlY2lwZQogLS0tLS0tLS0tLQpAQCAtMTA3LDkgKzE2Nyw5IEBACiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGJ1aWxkIGEgNC13YXkgdW5pdmVyc2FsIGluc3RhbGxlciB0aGF0IHJ1bnMgb24gCi1PUyBYIExlb3BhcmQgb3IgbGF0ZXI6OgorT1MgWCAxMC41IExlb3BhcmQgb3IgbGF0ZXI6OgogCi0gIHB5dGhvbiAyLjYgL2J1aWxkLWluc3RhbGxlci5weSBcCisgICAgL3Vzci9iaW4vcHl0aG9uIC9idWlsZC1pbnN0YWxsZXIucHkgXAogICAgICAgICAtLWRlcC10YXJnZXQ9MTAuNQogICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz1hbGwKICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNS5zZGsKQEAgLTEyMCw3ICsxODAsOCBAQAogdmFyaWFudHMgY2FuIG9ubHkgYmUgcnVuIG9uIEc1IG1hY2hpbmVzIHJ1bm5pbmcgMTAuNS4gIE5vdGUgdGhhdCwKIHdoaWxlIE9TIFggMTAuNiBpcyBvbmx5IHN1cHBvcnRlZCBvbiBJbnRlbC1iYXNlZCBtYWNoaW5lcywgaXQgaXMgcG9zc2libGUKIHRvIHJ1biBgYHBwY2BgICgzMi1iaXQpIGV4ZWN1dGFibGVzIHVubW9kaWZpZWQgdGhhbmtzIHRvIHRoZSBSb3NldHRhIHBwYwotZW11bGF0aW9uIGluIE9TIFggMTAuNSBhbmQgMTAuNi4KK2VtdWxhdGlvbiBpbiBPUyBYIDEwLjUgYW5kIDEwLjYuICBUaGUgNC13YXkgaW5zdGFsbGVyIHZhcmlhbnQgbXVzdCBiZQorYnVpbHQgd2l0aCBYY29kZSAzLiAgSXQgaXMgbm90IHJlZ3VsYXJseSBidWlsdCBvciB0ZXN0ZWQuCiAKIE90aGVyIGBgLS11bml2ZXJzYWwtYXJjaHNgYCBvcHRpb25zIGFyZSBgYDY0LWJpdGBgIChgYHg4Nl82NGBgLCBgYHBwYzY0YGApLAogYW5kIGBgMy13YXlgYCAoYGBwcGNgYCwgYGBpMzg2YGAsIGBgeDg2XzY0YGApLiAgTm9uZSBvZiB0aGVzZSBvcHRpb25zCkBAIC0xMzMsMTUgKzE5NCwyMSBAQAogSWRlYWxseSwgdGhlIHJlc3VsdGluZyBiaW5hcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkIGFuZCB0aGUgdGVzdCBzdWl0ZSBydW4KIG9uIGFsbCBzdXBwb3J0ZWQgT1MgWCByZWxlYXNlcyBhbmQgYXJjaGl0ZWN0dXJlcy4gIEFzIGEgcHJhY3RpY2FsIG1hdHRlciwKIHRoYXQgaXMgZ2VuZXJhbGx5IG5vdCBwb3NzaWJsZS4gIEF0IGEgbWluaW11bSwgdmFyaWFudCAxIHNob3VsZCBiZSBydW4gb24KLWF0IGxlYXN0IG9uZSBJbnRlbCwgb25lIFBQQyBHNCwgYW5kIG9uZSBQUEMgRzMgc3lzdGVtIGFuZCBvbmUgZWFjaCBvZiAKLU9TIFggMTAuNiwgMTAuNSwgMTAuNCwgYW5kIDEwLjMuOS4gIE5vdCBhbGwgdGVzdHMgcnVuIG9uIDEwLjMuOS4KLVZhcmlhbnQgMiBzaG91bGQgYmUgcnVuIG9uIDEwLjYgaW4gYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBtb2Rlcy46OgorYSBQUEMgRzQgc3lzdGVtIHdpdGggT1MgWCAxMC41IGFuZCBhdCBsZWFzdCBvbmUgSW50ZWwgc3lzdGVtIHJ1bm5pbmcgT1MgWAorMTAuOCwgMTAuNywgMTAuNiwgb3IgMTAuNS4gIFZhcmlhbnQgMiBzaG91bGQgYmUgcnVuIG9uIDEwLjgsIDEwLjcsIGFuZCAxMC42CitzeXN0ZW1zIGluIGJvdGggMzItYml0IGFuZCA2NC1iaXQgbW9kZXMuOjoKIAotICAgIGFyY2ggLWkzODYgL3Vzci9sb2NhbC9iaW4vcHl0aG9ubi5uIC1tIHRlc3QucmVncnRlc3QgLXcgLXUgYWxsIAotICAgIGFyY2ggLVg4Nl82NCAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4gLW0gdGVzdC5yZWdydGVzdCAtdyAtdSBhbGwKKyAgICAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4gLW0gdGVzdCAtdyAtdSBhbGwsLWxhcmdlZmlsZQorICAgIC91c3IvbG9jYWwvYmluL3B5dGhvbm4ubi0zMiAtbSB0ZXN0IC13IC11IGFsbAogICAgIAogQ2VydGFpbiB0ZXN0cyB3aWxsIGJlIHNraXBwZWQgYW5kIHNvbWUgY2F1c2UgdGhlIGludGVycHJldGVyIHRvIGZhaWwKIHdoaWNoIHdpbGwgbGlrZWx5IGdlbmVyYXRlIGBgUHl0aG9uIHF1aXQgdW5leHBlY3RlZGx5YGAgYWxlcnQgbWVzc2FnZXMKLXRvIGJlIGdlbmVyYXRlZCBhdCBzZXZlcmFsIHBvaW50cyBkdXJpbmcgYSB0ZXN0IHJ1bi4gIFRoZXNlIGNhbgotYmUgaWdub3JlZC4KK3RvIGJlIGdlbmVyYXRlZCBhdCBzZXZlcmFsIHBvaW50cyBkdXJpbmcgYSB0ZXN0IHJ1bi4gIFRoZXNlIGFyZSBub3JtYWwKK2R1cmluZyB0ZXN0aW5nIGFuZCBjYW4gYmUgaWdub3JlZC4KKworSXQgaXMgYWxzbyByZWNvbW1lbmQgdG8gbGF1bmNoIElETEUgYW5kIHZlcmlmeSB0aGF0IGl0IGlzIGF0IGxlYXN0CitmdW5jdGlvbmFsLiAgRG91YmxlLWNsaWNrIG9uIHRoZSBJRExFIGFwcCBpY29uIGluIGBgL0FwcGxpY2F0aW9ucy9QeXRob25uLm5gYC4KK0l0IHNob3VsZCBhbHNvIGJlIHRlc3RlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmU6OgorCisgICAgL3Vzci9sb2NhbC9iaW4vaWRsZW4ubgogCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5IGIvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQppbmRleCBiYTkyMDEyLi5iZDBjNDc2IDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CisrKyBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKQEAgLTEsNyArMSw3IEBACi0jIS91c3IvYmluL3B5dGhvbgorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAiIiIKIFRoaXMgc2NyaXB0IGlzIHVzZWQgdG8gYnVpbGQgIm9mZmljaWFsIiB1bml2ZXJzYWwgaW5zdGFsbGVycyBvbiBNYWMgT1MgWC4KLUl0IHJlcXVpcmVzIGF0IGxlYXN0IE1hYyBPUyBYIDEwLjQsIFhjb2RlIDIuMiBhbmQgdGhlIDEwLjR1IFNESyBmb3IKK0l0IHJlcXVpcmVzIGF0IGxlYXN0IE1hYyBPUyBYIDEwLjUsIFhjb2RlIDMsIGFuZCB0aGUgMTAuNHUgU0RLIGZvcgogMzItYml0IGJ1aWxkcy4gIDY0LWJpdCBvciBmb3VyLXdheSB1bml2ZXJzYWwgYnVpbGRzIHJlcXVpcmUgYXQgbGVhc3QKIE9TIFggMTAuNSBhbmQgdGhlIDEwLjUgU0RLLgogCkBAIC0xMCwxOCArMTAsNDEgQEAKIHdoaWNoIGlzIHVzZWQgdG8gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24sIGN1cnJlbnRseSByZXF1aXJlcyBhdCBsZWFzdAogUHl0aG9uIDIuNC4KIAorSW4gYWRkaXRpb24gdG8gd2hhdCBpcyBzdXBwbGllZCB3aXRoIE9TIFggMTAuNSsgYW5kIFhjb2RlIDMrLCB0aGUgc2NyaXB0CityZXF1aXJlcyBhbiBpbnN0YWxsZWQgdmVyc2lvbiBvZiBoZyBhbmQgYSB0aGlyZC1wYXJ0eSB2ZXJzaW9uIG9mCitUY2wvVGsgOC40IChmb3IgT1MgWCAxMC40IGFuZCAxMC41IGRlcGxveW1lbnQgdGFyZ2V0cykgb3IgVGNsL1RLIDguNQorKGZvciAxMC42IG9yIGxhdGVyKSBpbnN0YWxsZWQgaW4gL0xpYnJhcnkvRnJhbWV3b3Jrcy4gIFdoZW4gaW5zdGFsbGVkLAordGhlIFB5dGhvbiBidWlsdCBieSB0aGlzIHNjcmlwdCB3aWxsIGF0dGVtcHQgdG8gZHluYW1pY2FsbHkgbGluayBmaXJzdCB0bworVGNsIGFuZCBUayBmcmFtZXdvcmtzIGluIC9MaWJyYXJ5L0ZyYW1ld29ya3MgaWYgYXZhaWxhYmxlIG90aGVyd2lzZSBmYWxsCitiYWNrIHRvIHRoZSBvbmVzIGluIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmsuICBGb3IgdGhlIGJ1aWxkLCB3ZSByZWNvbW1lbmQKK2luc3RhbGxpbmcgdGhlIG1vc3QgcmVjZW50IEFjdGl2ZVRjbCA4LjQgb3IgOC41IHZlcnNpb24uCisKKzMyLWJpdC1vbmx5IGluc3RhbGxlciBidWlsZHMgYXJlIHN0aWxsIHBvc3NpYmxlIG9uIE9TIFggMTAuNCB3aXRoIFhjb2RlIDIuNQorYW5kIHRoZSBpbnN0YWxsYXRpb24gb2YgYWRkaXRpb25hbCBjb21wb25lbnRzLCBzdWNoIGFzIGEgbmV3ZXIgUHl0aG9uCisoMi41IGlzIG5lZWRlZCBmb3IgUHl0aG9uIHBhcnNlciB1cGRhdGVzKSwgaGcsIGFuZCBzdm4gKGZvciB0aGUgZG9jdW1lbnRhdGlvbgorYnVpbGQpLgorCiBVc2FnZTogc2VlIFVTQUdFIHZhcmlhYmxlIGluIHRoZSBzY3JpcHQuCiAiIiIKLWltcG9ydCBwbGF0Zm9ybSwgb3MsIHN5cywgZ2V0b3B0LCB0ZXh0d3JhcCwgc2h1dGlsLCB1cmxsaWIyLCBzdGF0LCB0aW1lLCBwd2QKLWltcG9ydCBncnAKK2ltcG9ydCBwbGF0Zm9ybSwgb3MsIHN5cywgZ2V0b3B0LCB0ZXh0d3JhcCwgc2h1dGlsLCBzdGF0LCB0aW1lLCBwd2QsIGdycAordHJ5OgorICAgIGltcG9ydCB1cmxsaWIyIGFzIHVybGxpYl9yZXF1ZXN0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0IGFzIHVybGxpYl9yZXF1ZXN0CisKK1NUQVRfMG83NTUgPSAoIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUiB8IHN0YXQuU19JWFVTUgorICAgICAgICAgICAgIHwgc3RhdC5TX0lSR1JQIHwgICAgICAgICAgICAgICAgc3RhdC5TX0lYR1JQCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJPVEggfCAgICAgICAgICAgICAgICBzdGF0LlNfSVhPVEggKQorCitTVEFUXzBvNzc1ID0gKCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IgfCBzdGF0LlNfSVhVU1IKKyAgICAgICAgICAgICB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JV0dSUCB8IHN0YXQuU19JWEdSUAorICAgICAgICAgICAgIHwgc3RhdC5TX0lST1RIIHwgICAgICAgICAgICAgICAgc3RhdC5TX0lYT1RIICkKIAogSU5DTFVERV9USU1FU1RBTVAgPSAxCiBWRVJCT1NFID0gMQogCiBmcm9tIHBsaXN0bGliIGltcG9ydCBQbGlzdAogCi1pbXBvcnQgTWFjT1MKLQogdHJ5OgogICAgIGZyb20gcGxpc3RsaWIgaW1wb3J0IHdyaXRlUGxpc3QKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTQyLDIwICs2NSwzNSBAQAogICAgICAgICBpZiBsbi5zdGFydHN3aXRoKHZhcmlhYmxlKToKICAgICAgICAgICAgIHZhbHVlID0gbG5bbGVuKHZhcmlhYmxlKTpdLnN0cmlwKCkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVsxOi0xXQotICAgIHJhaXNlIFJ1bnRpbWVFcnJvciwgIkNhbm5vdCBmaW5kIHZhcmlhYmxlICVzIiAlIHZhcmlhYmxlWzotMV0KKyAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBmaW5kIHZhcmlhYmxlICVzIiAlIHZhcmlhYmxlWzotMV0pCisKK19jYWNoZV9nZXRWZXJzaW9uID0gTm9uZQogCiBkZWYgZ2V0VmVyc2lvbigpOgotICAgIHJldHVybiBncmVwVmFsdWUob3MucGF0aC5qb2luKFNSQ0RJUiwgJ2NvbmZpZ3VyZScpLCAnUEFDS0FHRV9WRVJTSU9OJykKKyAgICBnbG9iYWwgX2NhY2hlX2dldFZlcnNpb24KKyAgICBpZiBfY2FjaGVfZ2V0VmVyc2lvbiBpcyBOb25lOgorICAgICAgICBfY2FjaGVfZ2V0VmVyc2lvbiA9IGdyZXBWYWx1ZSgKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihTUkNESVIsICdjb25maWd1cmUnKSwgJ1BBQ0tBR0VfVkVSU0lPTicpCisgICAgcmV0dXJuIF9jYWNoZV9nZXRWZXJzaW9uCiAKIGRlZiBnZXRWZXJzaW9uVHVwbGUoKToKICAgICByZXR1cm4gdHVwbGUoW2ludChuKSBmb3IgbiBpbiBnZXRWZXJzaW9uKCkuc3BsaXQoJy4nKV0pCiAKK2RlZiBnZXRWZXJzaW9uTWFqb3JNaW5vcigpOgorICAgIHJldHVybiB0dXBsZShbaW50KG4pIGZvciBuIGluIGdldFZlcnNpb24oKS5zcGxpdCgnLicsIDIpXSkKKworX2NhY2hlX2dldEZ1bGxWZXJzaW9uID0gTm9uZQorCiBkZWYgZ2V0RnVsbFZlcnNpb24oKToKKyAgICBnbG9iYWwgX2NhY2hlX2dldEZ1bGxWZXJzaW9uCisgICAgaWYgX2NhY2hlX2dldEZ1bGxWZXJzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gX2NhY2hlX2dldEZ1bGxWZXJzaW9uCiAgICAgZm4gPSBvcy5wYXRoLmpvaW4oU1JDRElSLCAnSW5jbHVkZScsICdwYXRjaGxldmVsLmgnKQogICAgIGZvciBsbiBpbiBvcGVuKGZuKToKICAgICAgICAgaWYgJ1BZX1ZFUlNJT04nIGluIGxuOgotICAgICAgICAgICAgcmV0dXJuIGxuLnNwbGl0KClbLTFdWzE6LTFdCi0gICAgcmFpc2UgUnVudGltZUVycm9yLCAiQ2Fubm90IGZpbmQgZnVsbCB2ZXJzaW9uPz8iCisgICAgICAgICAgICBfY2FjaGVfZ2V0RnVsbFZlcnNpb24gPSBsbi5zcGxpdCgpWy0xXVsxOi0xXQorICAgICAgICAgICAgcmV0dXJuIF9jYWNoZV9nZXRGdWxsVmVyc2lvbgorICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGZpbmQgZnVsbCB2ZXJzaW9uPz8iKQogCiAjIFRoZSBkaXJlY3Rvcnkgd2UnbGwgdXNlIHRvIGNyZWF0ZSB0aGUgYnVpbGQgKHdpbGwgYmUgZXJhc2VkIGFuZCByZWNyZWF0ZWQpCiBXT1JLRElSID0gIi90bXAvX3B5IgpAQCAtMTExLDEzICsxNDksMTUgQEAKIERFUFRBUkdFVCA9ICcxMC4zJwogCiB0YXJnZXRfY2NfbWFwID0gewotICAgICAgICAnMTAuMyc6ICdnY2MtNC4wJywKLSAgICAgICAgJzEwLjQnOiAnZ2NjLTQuMCcsCi0gICAgICAgICcxMC41JzogJ2djYy00LjAnLAotICAgICAgICAnMTAuNic6ICdnY2MtNC4yJywKKyAgICAgICAgJzEwLjMnOiAoJ2djYy00LjAnLCAnZysrLTQuMCcpLAorICAgICAgICAnMTAuNCc6ICgnZ2NjLTQuMCcsICdnKystNC4wJyksCisgICAgICAgICcxMC41JzogKCdnY2MtNC4yJywgJ2crKy00LjInKSwKKyAgICAgICAgJzEwLjYnOiAoJ2djYy00LjInLCAnZysrLTQuMicpLAorICAgICAgICAnMTAuNyc6ICgnY2xhbmcnLCAnY2xhbmcrKycpLAorICAgICAgICAnMTAuOCc6ICgnY2xhbmcnLCAnY2xhbmcrKycpLAogfQogCi1DQyA9IHRhcmdldF9jY19tYXBbREVQVEFSR0VUXQorQ0MsIENYWCA9IHRhcmdldF9jY19tYXBbREVQVEFSR0VUXQogCiBQWVRIT05fMyA9IGdldFZlcnNpb25UdXBsZSgpID49ICgzLCAwKQogCkBAIC0xMzUsNiArMTc1LDEzIEBACiAgICAgLS11bml2ZXJzYWwtYXJjaHM9eCAgdW5pdmVyc2FsIGFyY2hpdGVjdHVyZXMgKG9wdGlvbnM6ICUoVU5JVkVSU0FMT1BUUylyLCBkZWZhdWx0OiAlKFVOSVZFUlNBTEFSQ0hTKXIpCiAiIiIpJSBnbG9iYWxzKCkKIAorIyBEaWN0IG9mIG9iamVjdCBmaWxlIG5hbWVzIHdpdGggc2hhcmVkIGxpYnJhcnkgbmFtZXMgdG8gY2hlY2sgYWZ0ZXIgYnVpbGRpbmcuCisjIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgd2UgZW5kZWQgdXAgZHluYW1pY2FsbHkgbGlua2luZyB3aXRoIHRoZSBzaGFyZWQKKyMgbGlicmFyeSBwYXRocyBhbmQgdmVyc2lvbnMgd2UgZXhwZWN0ZWQuICBGb3IgZXhhbXBsZToKKyMgICBFWFBFQ1RFRF9TSEFSRURfTElCU1snX3RraW50ZXIuc28nXSA9IFsKKyMgICAgICAgICAgICAgICAgICAgICAgICcvTGlicmFyeS9GcmFtZXdvcmtzL1RjbC5mcmFtZXdvcmsvVmVyc2lvbnMvOC41L1RjbCcsCisjICAgICAgICAgICAgICAgICAgICAgICAnL0xpYnJhcnkvRnJhbWV3b3Jrcy9Uay5mcmFtZXdvcmsvVmVyc2lvbnMvOC41L1RrJ10KK0VYUEVDVEVEX1NIQVJFRF9MSUJTID0ge30KIAogIyBJbnN0cnVjdGlvbnMgZm9yIGJ1aWxkaW5nIGxpYnJhcmllcyB0aGF0IGFyZSBuZWNlc3NhcnkgZm9yIGJ1aWxkaW5nIGEKICMgYmF0dGVyaWVzIGluY2x1ZGVkIHB5dGhvbi4KQEAgLTE0Myw2ICsxOTAsNzEgQEAKIGRlZiBsaWJyYXJ5X3JlY2lwZXMoKToKICAgICByZXN1bHQgPSBbXQogCisgICAgTFRfMTBfNSA9IGJvb2woREVQVEFSR0VUIDwgJzEwLjUnKQorCisgICAgcmVzdWx0LmV4dGVuZChbCisgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgbmFtZT0iWFogNS4wLjMiLAorICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly90dWthYW5pLm9yZy94ei94ei01LjAuMy50YXIuZ3oiLAorICAgICAgICAgICAgICBjaGVja3N1bT0nZmVmZTUyZjllY2Q1MjFkZTJhOGNlMzhjMjFhMjc1NzQnLAorICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKKyAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nJywKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICApLAorICAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgIG5hbWU9Ik5DdXJzZXMgNS45IiwKKyAgICAgICAgICAgICAgdXJsPSJodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9uY3Vyc2VzL25jdXJzZXMtNS45LnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSc4Y2I5YzQxMmU1ZjJkOTZiYzZmNDU5YWE4YzYyODJhMScsCisgICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WworICAgICAgICAgICAgICAgICAgIi0tZW5hYmxlLXdpZGVjIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4IiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4LWJpbmRpbmciLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1hZGEiLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1jdXJzZXMtaCIsCisgICAgICAgICAgICAgICAgICAiLS1lbmFibGUtc2hhcmVkIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGgtc2hhcmVkIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtZGVidWciLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1ub3JtYWwiLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC10ZXN0cyIsCisgICAgICAgICAgICAgICAgICAiLS13aXRob3V0LW1hbnBhZ2VzIiwKKyAgICAgICAgICAgICAgICAgICItLWRhdGFkaXI9L3Vzci9zaGFyZSIsCisgICAgICAgICAgICAgICAgICAiLS1zeXNjb25mZGlyPS9ldGMiLAorICAgICAgICAgICAgICAgICAgIi0tc2hhcmVkc3RhdGVkaXI9L3Vzci9jb20iLAorICAgICAgICAgICAgICAgICAgIi0td2l0aC10ZXJtaW5mby1kaXJzPS91c3Ivc2hhcmUvdGVybWluZm8iLAorICAgICAgICAgICAgICAgICAgIi0td2l0aC1kZWZhdWx0LXRlcm1pbmZvLWRpcj0vdXNyL3NoYXJlL3Rlcm1pbmZvIiwKKyAgICAgICAgICAgICAgICAgICItLWxpYmRpcj0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliIiUoZ2V0VmVyc2lvbigpLCksCisgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgIHBhdGNoc2NyaXB0cz1bCisgICAgICAgICAgICAgICAgICAoImZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvLzUuOS9uY3Vyc2VzLTUuOS0yMDEyMDYxNi1wYXRjaC5zaC5iejIiLAorICAgICAgICAgICAgICAgICAgICJmNTRiZjAyYTM0OWY5NmE3YzRmMGQwMDkyMmYzYTBkNCIpLAorICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgIHVzZUxERmxhZ3M9RmFsc2UsCisgICAgICAgICAgICAgIGluc3RhbGw9J21ha2UgJiYgbWFrZSBpbnN0YWxsIERFU1RESVI9JXMgJiYgY2QgJXMvdXNyL2xvY2FsL2xpYiAmJiBsbiAtZnMgLi4vLi4vLi4vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliL2xpYiogLiclKAorICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKKyAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnKSksCisgICAgICAgICAgICAgICAgICBnZXRWZXJzaW9uKCksCisgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICksCisgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuNy4xMyIsCisgICAgICAgICAgICAgIHVybD0iaHR0cDovL3d3dy5zcWxpdGUub3JnL3NxbGl0ZS1hdXRvY29uZi0zMDcxMzAwLnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSdjOTdkZjQwM2U4YTNkNWI2N2JiNDA4ZmNkNmFhYmQ4ZScsCisgICAgICAgICAgICAgIGV4dHJhX2NmbGFncz0oJy1PcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFM0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzNfUEFSRU5USEVTSVMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfUlRSRUUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9UQ0w9MCAnCisgICAgICAgICAgICAgICAgICclcycgJSAoJycsJy1EU1FMSVRFX1dJVEhPVVRfWk9ORU1BTExPQyAnKVtMVF8xMF81XSksCisgICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WworICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXRocmVhZHNhZmUnLAorICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXNoYXJlZD1ubycsCisgICAgICAgICAgICAgICAgICAnLS1lbmFibGUtc3RhdGljPXllcycsCisgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLXJlYWRsaW5lJywKKyAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZycsCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICApLAorICAgICAgICBdKQorCiAgICAgaWYgREVQVEFSR0VUIDwgJzEwLjUnOgogICAgICAgICByZXN1bHQuZXh0ZW5kKFsKICAgICAgICAgICBkaWN0KApAQCAtMTUwLDggKzI2Miw4IEBACiAgICAgICAgICAgICAgIHVybD0iaHR0cDovL2J6aXAub3JnLzEuMC42L2J6aXAyLTEuMC42LnRhci5neiIsCiAgICAgICAgICAgICAgIGNoZWNrc3VtPScwMGI1MTZmNDcwNGQ0YTdjYjUwYTFkOTdlNmU4ZTE1YicsCiAgICAgICAgICAgICAgIGNvbmZpZ3VyZT1Ob25lLAotICAgICAgICAgICAgICBpbnN0YWxsPSdtYWtlIGluc3RhbGwgQ0M9JXMgUFJFRklYPSVzL3Vzci9sb2NhbC8gQ0ZMQUdTPSItYXJjaCAlcyAtaXN5c3Jvb3QgJXMiJyUoCi0gICAgICAgICAgICAgICAgICBDQywKKyAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBpbnN0YWxsIENDPSVzIENYWD0lcywgUFJFRklYPSVzL3Vzci9sb2NhbC8gQ0ZMQUdTPSItYXJjaCAlcyAtaXN5c3Jvb3QgJXMiJyUoCisgICAgICAgICAgICAgICAgICBDQywgQ1hYLAogICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKICAgICAgICAgICAgICAgICAgICcgLWFyY2ggJy5qb2luKEFSQ0hMSVNUKSwKICAgICAgICAgICAgICAgICAgIFNES1BBVEgsCkBAIC0xNjIsOCArMjc0LDggQEAKICAgICAgICAgICAgICAgdXJsPSJodHRwOi8vd3d3Lmd6aXAub3JnL3psaWIvemxpYi0xLjIuMy50YXIuZ3oiLAogICAgICAgICAgICAgICBjaGVja3N1bT0nZGViYzYyNzU4NzE2YTE2OWRmOWY2MmU2YWIyYmM2MzQnLAogICAgICAgICAgICAgICBjb25maWd1cmU9Tm9uZSwKLSAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBpbnN0YWxsIENDPSVzIHByZWZpeD0lcy91c3IvbG9jYWwvIENGTEFHUz0iLWFyY2ggJXMgLWlzeXNyb290ICVzIiclKAotICAgICAgICAgICAgICAgICAgQ0MsCisgICAgICAgICAgICAgIGluc3RhbGw9J21ha2UgaW5zdGFsbCBDQz0lcyBDWFg9JXMsIHByZWZpeD0lcy91c3IvbG9jYWwvIENGTEFHUz0iLWFyY2ggJXMgLWlzeXNyb290ICVzIiclKAorICAgICAgICAgICAgICAgICAgQ0MsIENYWCwKICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnKSksCiAgICAgICAgICAgICAgICAgICAnIC1hcmNoICcuam9pbihBUkNITElTVCksCiAgICAgICAgICAgICAgICAgICBTREtQQVRILApAQCAtMTc4LDU4ICsyOTAsMTIgQEAKICAgICAgICAgICAgICAgcGF0Y2hlcz1bCiAgICAgICAgICAgICAgICAgICAjIFRoZSByZWFkbGluZSBtYWludGFpbmVycyBkb24ndCBkbyBhY3R1YWwgbWljcm8gcmVsZWFzZXMsIGJ1dAogICAgICAgICAgICAgICAgICAgIyBqdXN0IHNoaXAgYSBzZXQgb2YgcGF0Y2hlcy4KLSAgICAgICAgICAgICAgICAgICdodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9yZWFkbGluZS9yZWFkbGluZS02LjEtcGF0Y2hlcy9yZWFkbGluZTYxLTAwMScsCi0gICAgICAgICAgICAgICAgICAnaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvcmVhZGxpbmUvcmVhZGxpbmUtNi4xLXBhdGNoZXMvcmVhZGxpbmU2MS0wMDInLAorICAgICAgICAgICAgICAgICAgKCdodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9yZWFkbGluZS9yZWFkbGluZS02LjEtcGF0Y2hlcy9yZWFkbGluZTYxLTAwMScsCisgICAgICAgICAgICAgICAgICAgJ2M2NDJmMmU4NGQ4MjA4ODRiMGJmOWZkMTc2YmM2YzNmJyksCisgICAgICAgICAgICAgICAgICAoJ2h0dHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L3JlYWRsaW5lL3JlYWRsaW5lLTYuMS1wYXRjaGVzL3JlYWRsaW5lNjEtMDAyJywKKyAgICAgICAgICAgICAgICAgICAnMWE3Njc4MWExZWE3MzRlODMxNTg4Mjg1ZGI3ZWM5YjEnKSwKICAgICAgICAgICAgICAgXQogICAgICAgICAgICksCi0gICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuNy40IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vd3d3LnNxbGl0ZS5vcmcvc3FsaXRlLWF1dG9jb25mLTMwNzA0MDAudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09JzhmMGM2OTBiZmIzM2MzY2JiYzI0NzFjM2Q5YmEwMTU4JywKLSAgICAgICAgICAgICAgY29uZmlndXJlX2Vudj0oJ0NGTEFHUz0iLU9zJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLURTUUxJVEVfRU5BQkxFX0ZUUzMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtRFNRTElURV9FTkFCTEVfRlRTM19QQVJFTlRIRVNJUycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1EU1FMSVRFX0VOQUJMRV9SVFJFRScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1EU1FMSVRFX1RDTD0wJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciJyksCi0gICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WwotICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXRocmVhZHNhZmUnLAotICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXNoYXJlZD1ubycsCi0gICAgICAgICAgICAgICAgICAnLS1lbmFibGUtc3RhdGljPXllcycsCi0gICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLXJlYWRsaW5lJywKLSAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZycsCi0gICAgICAgICAgICAgIF0KLSAgICAgICAgICApLAotICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9Ik5DdXJzZXMgNS41IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9uY3Vyc2VzL25jdXJzZXMtNS41LnRhci5neiIsCi0gICAgICAgICAgICAgIGNoZWNrc3VtPSdlNzNjMWFjMTBiNGJmYzQ2ZGI0M2IyZGRmZDYyNDRlZicsCi0gICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WwotICAgICAgICAgICAgICAgICAgIi0tZW5hYmxlLXdpZGVjIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4IiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtYWRhIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtcHJvZ3MiLAotICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1jdXJzZXMtaCIsCi0gICAgICAgICAgICAgICAgICAiLS1lbmFibGUtc2hhcmVkIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGgtc2hhcmVkIiwKLSAgICAgICAgICAgICAgICAgICItLWRhdGFkaXI9L3Vzci9zaGFyZSIsCi0gICAgICAgICAgICAgICAgICAiLS1zeXNjb25mZGlyPS9ldGMiLAotICAgICAgICAgICAgICAgICAgIi0tc2hhcmVkc3RhdGVkaXI9L3Vzci9jb20iLAotICAgICAgICAgICAgICAgICAgIi0td2l0aC10ZXJtaW5mby1kaXJzPS91c3Ivc2hhcmUvdGVybWluZm8iLAotICAgICAgICAgICAgICAgICAgIi0td2l0aC1kZWZhdWx0LXRlcm1pbmZvLWRpcj0vdXNyL3NoYXJlL3Rlcm1pbmZvIiwKLSAgICAgICAgICAgICAgICAgICItLWxpYmRpcj0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliIiUoZ2V0VmVyc2lvbigpLCksCi0gICAgICAgICAgICAgICAgICAiLS1lbmFibGUtdGVybWNhcCIsCi0gICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgIHBhdGNoZXM9WwotICAgICAgICAgICAgICAgICAgIm5jdXJzZXMtNS41LnBhdGNoIiwKLSAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgdXNlTERGbGFncz1GYWxzZSwKLSAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSAmJiBtYWtlIGluc3RhbGwgREVTVERJUj0lcyAmJiBjZCAlcy91c3IvbG9jYWwvbGliICYmIGxuIC1mcyAuLi8uLi8uLi9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8lcy9saWIvbGliKiAuJyUoCi0gICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykpLAotICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKLSAgICAgICAgICAgICAgICAgIGdldFZlcnNpb24oKSwKLSAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgKSwKICAgICAgICAgXSkKIAogICAgIGlmIG5vdCBQWVRIT05fMzoKQEAgLTI5OCw5ICszNjQsNyBAQAogICAgICAgICAgICAgc291cmNlPSIvcHlkb2NzIiwKICAgICAgICAgICAgIHJlYWRtZT0iIiJcCiAgICAgICAgICAgICAgICAgVGhpcyBwYWNrYWdlIGluc3RhbGxzIHRoZSBweXRob24gZG9jdW1lbnRhdGlvbiBhdCBhIGxvY2F0aW9uCi0gICAgICAgICAgICAgICAgdGhhdCBpcyB1c2VhYmxlIGZvciBweWRvYyBhbmQgSURMRS4gSWYgeW91IGhhdmUgaW5zdGFsbGVkIFhjb2RlCi0gICAgICAgICAgICAgICAgaXQgd2lsbCBhbHNvIGluc3RhbGwgYSBsaW5rIHRvIHRoZSBkb2N1bWVudGF0aW9uIGluCi0gICAgICAgICAgICAgICAgL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uL1B5dGhvbgorICAgICAgICAgICAgICAgIHRoYXQgaXMgdXNlYWJsZSBmb3IgcHlkb2MgYW5kIElETEUuCiAgICAgICAgICAgICAgICAgIiIiLAogICAgICAgICAgICAgcG9zdGZsaWdodD0ic2NyaXB0cy9wb3N0ZmxpZ2h0LmRvY3VtZW50YXRpb24iLAogICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCkBAIC0zMjYsNyArMzkwLDcgQEAKICAgICAgICAgKSwKICAgICBdCiAKLSAgICBpZiBERVBUQVJHRVQgPCAnMTAuNCc6CisgICAgaWYgREVQVEFSR0VUIDwgJzEwLjQnIGFuZCBub3QgUFlUSE9OXzM6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoCiAgICAgICAgICAgICBkaWN0KAogICAgICAgICAgICAgICAgIG5hbWU9IlB5dGhvblN5c3RlbUZpeGVzIiwKQEAgLTM1OCw3ICs0MjIsNyBAQAogICAgICIiIgogICAgIFJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIG5hbWVkIGZpbGUKICAgICAiIiIKLSAgICByZXR1cm4gb3BlbihmbiwgJ3JiJykucmVhZCgpCisgICAgcmV0dXJuIG9wZW4oZm4sICdyJykucmVhZCgpCiAKIGRlZiBydW5Db21tYW5kKGNvbW1hbmRsaW5lKToKICAgICAiIiIKQEAgLTM3MCw3ICs0MzQsNyBAQAogICAgIHhpdCA9IGZkLmNsb3NlKCkKICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZGF0YSkKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yLCAiY29tbWFuZCBmYWlsZWQ6ICVzIiUoY29tbWFuZGxpbmUsKQorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNvbW1hbmQgZmFpbGVkOiAlcyIlKGNvbW1hbmRsaW5lLCkpCiAKICAgICBpZiBWRVJCT1NFOgogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGRhdGEpOyBzeXMuc3Rkb3V0LmZsdXNoKCkKQEAgLTM4MSw3ICs0NDUsNyBAQAogICAgIHhpdCA9IGZkLmNsb3NlKCkKICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZGF0YSkKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yLCAiY29tbWFuZCBmYWlsZWQ6ICVzIiUoY29tbWFuZGxpbmUsKQorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNvbW1hbmQgZmFpbGVkOiAlcyIlKGNvbW1hbmRsaW5lLCkpCiAKICAgICByZXR1cm4gZGF0YQogCkBAIC00MjMsMzkgKzQ4Nyw2MCBAQAogICAgICMgQmVjYXVzZSB3ZSBvbmx5IHN1cHBvcnQgZHluYW1pYyBsb2FkIG9mIG9ubHkgb25lIG1ham9yL21pbm9yIHZlcnNpb24gb2YKICAgICAjIFRjbC9UaywgZW5zdXJlOgogICAgICMgMS4gdGhlcmUgYXJlIG5vIHVzZXItaW5zdGFsbGVkIGZyYW1ld29ya3Mgb2YgVGNsL1RrIHdpdGggdmVyc2lvbgotICAgICMgICAgICAgaGlnaGVyIHRoYW4gdGhlIEFwcGxlLXN1cHBsaWVkIHN5c3RlbSB2ZXJzaW9uCi0gICAgIyAyLiB0aGVyZSBpcyBhIHVzZXItaW5zdGFsbGVkIGZyYW1ld29yayBpbiAvTGlicmFyeS9GcmFtZXdvcmtzIHdpdGggdGhlCi0gICAgIyAgICAgICBzYW1lIHZlcnNpb24gYXMgdGhlIHN5c3RlbSB2ZXJzaW9uLiAgVGhpcyBhbGxvd3MgdXNlcnMgdG8gY2hvb3NlCi0gICAgIyAgICAgICB0byBpbnN0YWxsIGEgbmV3ZXIgcGF0Y2ggbGV2ZWwuCisgICAgIyAgICAgICBoaWdoZXIgdGhhbiB0aGUgQXBwbGUtc3VwcGxpZWQgc3lzdGVtIHZlcnNpb24gaW4KKyAgICAjICAgICAgIFNES1JPT1QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrcworICAgICMgMi4gdGhlcmUgaXMgYSB1c2VyLWluc3RhbGxlZCBmcmFtZXdvcmsgKHVzdWFsbHkgQWN0aXZlVGNsKSBpbiAob3IgbGlua2VkCisgICAgIyAgICAgICBpbikgU0RLUk9PVC9MaWJyYXJ5L0ZyYW1ld29ya3Mgd2l0aCB0aGUgc2FtZSB2ZXJzaW9uIGFzIHRoZSBzeXN0ZW0KKyAgICAjICAgICAgIHZlcnNpb24uIFRoaXMgYWxsb3dzIHVzZXJzIHRvIGNob29zZSB0byBpbnN0YWxsIGEgbmV3ZXIgcGF0Y2ggbGV2ZWwuCiAKKyAgICBmcmFtZXdvcmtzID0ge30KICAgICBmb3IgZnJhbWV3b3JrIGluIFsnVGNsJywgJ1RrJ106Ci0gICAgICAgICNmdyA9IGRpY3QobG93ZXI9ZnJhbWV3b3JrLmxvd2VyKCksCi0gICAgICAgICMgICAgICAgICAgICB1cHBlcj1mcmFtZXdvcmsudXBwZXIoKSwKLSAgICAgICAgIyAgICAgICAgICAgIGNhcD1mcmFtZXdvcmsuY2FwaXRhbGl6ZSgpKQotICAgICAgICAjZndwdGggPSAiTGlicmFyeS9GcmFtZXdvcmtzLyUoY2FwKXMuZnJhbWV3b3JrLyUobG93ZXIpc0NvbmZpZy5zaCIgJSBmdwotICAgICAgICBmd3B0aCA9ICdMaWJyYXJ5L0ZyYW1ld29ya3MvVGNsLmZyYW1ld29yay9WZXJzaW9ucy9DdXJyZW50JworICAgICAgICBmd3B0aCA9ICdMaWJyYXJ5L0ZyYW1ld29ya3MvJXMuZnJhbWV3b3JrL1ZlcnNpb25zL0N1cnJlbnQnICUgZnJhbWV3b3JrCiAgICAgICAgIHN5c2Z3ID0gb3MucGF0aC5qb2luKFNES1BBVEgsICdTeXN0ZW0nLCBmd3B0aCkKLSAgICAgICAgbGliZncgPSBvcy5wYXRoLmpvaW4oJy8nLCBmd3B0aCkKKyAgICAgICAgbGliZncgPSBvcy5wYXRoLmpvaW4oU0RLUEFUSCwgZndwdGgpCiAgICAgICAgIHVzcmZ3ID0gb3MucGF0aC5qb2luKG9zLmdldGVudignSE9NRScpLCBmd3B0aCkKLSAgICAgICAgI3ZlcnNpb24gPSAiJSh1cHBlcilzX1ZFUlNJT04iICUgZncKKyAgICAgICAgZnJhbWV3b3Jrc1tmcmFtZXdvcmtdID0gb3MucmVhZGxpbmsoc3lzZncpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsaWJmdyk6CisgICAgICAgICAgICBmYXRhbCgiUGxlYXNlIGluc3RhbGwgYSBsaW5rIHRvIGEgY3VycmVudCAlcyAlcyBhcyAlcyBzbyAiCisgICAgICAgICAgICAgICAgICAgICJ0aGUgdXNlciBjYW4gb3ZlcnJpZGUgdGhlIHN5c3RlbSBmcmFtZXdvcmsuIgorICAgICAgICAgICAgICAgICAgICAlIChmcmFtZXdvcmssIGZyYW1ld29ya3NbZnJhbWV3b3JrXSwgbGliZncpKQogICAgICAgICBpZiBvcy5yZWFkbGluayhsaWJmdykgIT0gb3MucmVhZGxpbmsoc3lzZncpOgogICAgICAgICAgICAgZmF0YWwoIlZlcnNpb24gb2YgJXMgbXVzdCBtYXRjaCAlcyIgJSAobGliZncsIHN5c2Z3KSApCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHVzcmZ3KToKICAgICAgICAgICAgIGZhdGFsKCJQbGVhc2UgcmVuYW1lICVzIHRvIGF2b2lkIHBvc3NpYmxlIGR5bmFtaWMgbG9hZCBpc3N1ZXMuIgogICAgICAgICAgICAgICAgICAgICAlIHVzcmZ3KQogCisgICAgaWYgZnJhbWV3b3Jrc1snVGNsJ10gIT0gZnJhbWV3b3Jrc1snVGsnXToKKyAgICAgICAgZmF0YWwoIlRoZSBUY2wgYW5kIFRrIGZyYW1ld29ya3MgYXJlIG5vdCB0aGUgc2FtZSB2ZXJzaW9uLiIpCisKKyAgICAjIGFkZCBmaWxlcyB0byBjaGVjayBhZnRlciBidWlsZAorICAgIEVYUEVDVEVEX1NIQVJFRF9MSUJTWydfdGtpbnRlci5zbyddID0gWworICAgICAgICAgICAgIi9MaWJyYXJ5L0ZyYW1ld29ya3MvVGNsLmZyYW1ld29yay9WZXJzaW9ucy8lcy9UY2wiCisgICAgICAgICAgICAgICAgJSBmcmFtZXdvcmtzWydUY2wnXSwKKyAgICAgICAgICAgICIvTGlicmFyeS9GcmFtZXdvcmtzL1RrLmZyYW1ld29yay9WZXJzaW9ucy8lcy9UayIKKyAgICAgICAgICAgICAgICAlIGZyYW1ld29ya3NbJ1RrJ10sCisgICAgICAgICAgICBdCisKICAgICAjIFJlbW92ZSBpbmhlcml0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoIG1pZ2h0IGluZmx1ZW5jZSBidWlsZAogICAgIGVudmlyb25fdmFyX3ByZWZpeGVzID0gWydDUEFUSCcsICdDX0lOQ0xVREVfJywgJ0RZTERfJywgJ0xBTkcnLCAnTENfJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTERfJywgJ0xJQlJBUllfJywgJ1BBVEgnLCAnUFlUSE9OJ10KICAgICBmb3IgZXYgaW4gbGlzdChvcy5lbnZpcm9uKToKICAgICAgICAgZm9yIHByZWZpeCBpbiBlbnZpcm9uX3Zhcl9wcmVmaXhlczoKICAgICAgICAgICAgIGlmIGV2LnN0YXJ0c3dpdGgocHJlZml4KSA6Ci0gICAgICAgICAgICAgICAgcHJpbnQgIklORk86IGRlbGV0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlICVzPSVzIiAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldiwgb3MuZW52aXJvbltldl0pCisgICAgICAgICAgICAgICAgcHJpbnQoIklORk86IGRlbGV0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlICVzPSVzIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldiwgb3MuZW52aXJvbltldl0pKQogICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uW2V2XQogCi0gICAgb3MuZW52aXJvblsnUEFUSCddID0gJy9iaW46L3NiaW46L3Vzci9iaW46L3Vzci9zYmluJwotICAgIHByaW50ICJTZXR0aW5nIGRlZmF1bHQgUEFUSDogJXMiJShvcy5lbnZpcm9uWydQQVRIJ10pCisgICAgYmFzZV9wYXRoID0gJy9iaW46L3NiaW46L3Vzci9iaW46L3Vzci9zYmluJworICAgIGlmICdTREtfVE9PTFNfQklOJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICBiYXNlX3BhdGggPSBvcy5lbnZpcm9uWydTREtfVE9PTFNfQklOJ10gKyAnOicgKyBiYXNlX3BhdGgKKyAgICAjIFhjb2RlIDIuNSBvbiBPUyBYIDEwLjQgZG9lcyBub3QgaW5jbHVkZSBTZXRGaWxlIGluIGl0cyB1c3IvYmluOworICAgICMgYWRkIGl0cyBmaXhlZCBsb2NhdGlvbiBoZXJlIGlmIGl0IGV4aXN0cworICAgIE9MRF9ERVZFTE9QRVJfVE9PTFMgPSAnL0RldmVsb3Blci9Ub29scycKKyAgICBpZiBvcy5wYXRoLmlzZGlyKE9MRF9ERVZFTE9QRVJfVE9PTFMpOgorICAgICAgICBiYXNlX3BhdGggPSBiYXNlX3BhdGggKyAnOicgKyBPTERfREVWRUxPUEVSX1RPT0xTCisgICAgb3MuZW52aXJvblsnUEFUSCddID0gYmFzZV9wYXRoCisgICAgcHJpbnQoIlNldHRpbmcgZGVmYXVsdCBQQVRIOiAlcyIlKG9zLmVudmlyb25bJ1BBVEgnXSkpCiAKIAogZGVmIHBhcnNlT3B0aW9ucyhhcmdzPU5vbmUpOgpAQCAtNDYzLDcgKzU0OCw3IEBACiAgICAgUGFyc2UgYXJndW1lbnRzIGFuZCB1cGRhdGUgZ2xvYmFsIHNldHRpbmdzLgogICAgICIiIgogICAgIGdsb2JhbCBXT1JLRElSLCBERVBTUkMsIFNES1BBVEgsIFNSQ0RJUiwgREVQVEFSR0VUCi0gICAgZ2xvYmFsIFVOSVZFUlNBTE9QVFMsIFVOSVZFUlNBTEFSQ0hTLCBBUkNITElTVCwgQ0MKKyAgICBnbG9iYWwgVU5JVkVSU0FMT1BUUywgVU5JVkVSU0FMQVJDSFMsIEFSQ0hMSVNULCBDQywgQ1hYCiAKICAgICBpZiBhcmdzIGlzIE5vbmU6CiAgICAgICAgIGFyZ3MgPSBzeXMuYXJndlsxOl0KQEAgLTQ3MiwxOCArNTU3LDE4IEBACiAgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KGFyZ3MsICc/aGInLAogICAgICAgICAgICAgICAgIFsgJ2J1aWxkLWRpcj0nLCAndGhpcmQtcGFydHk9JywgJ3Nkay1wYXRoPScgLCAnc3JjLWRpcj0nLAogICAgICAgICAgICAgICAgICAgJ2RlcC10YXJnZXQ9JywgJ3VuaXZlcnNhbC1hcmNocz0nLCAnaGVscCcgXSkKLSAgICBleGNlcHQgZ2V0b3B0LmVycm9yLCBtc2c6Ci0gICAgICAgIHByaW50IG1zZworICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0RXJyb3I6CisgICAgICAgIHByaW50KHN5cy5leGNfaW5mbygpWzFdKQogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgaWYgYXJnczoKLSAgICAgICAgcHJpbnQgIkFkZGl0aW9uYWwgYXJndW1lbnRzIgorICAgICAgICBwcmludCgiQWRkaXRpb25hbCBhcmd1bWVudHMiKQogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgZGVwdGFyZ2V0ID0gTm9uZQogICAgIGZvciBrLCB2IGluIG9wdGlvbnM6CiAgICAgICAgIGlmIGsgaW4gKCctaCcsICctPycsICctLWhlbHAnKToKLSAgICAgICAgICAgIHByaW50IFVTQUdFCisgICAgICAgICAgICBwcmludChVU0FHRSkKICAgICAgICAgICAgIHN5cy5leGl0KDApCiAKICAgICAgICAgZWxpZiBrIGluICgnLWQnLCAnLS1idWlsZC1kaXInKToKQEAgLTUxMSwyNyArNTk2LDI4IEBACiAgICAgICAgICAgICAgICAgICAgICMgdGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCA9IGRlZmF1bHRfdGFyZ2V0X21hcC5nZXQodiwgJzEwLjMnKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCB2CisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcih2KQogCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCBrCisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKGspCiAKICAgICBTUkNESVI9b3MucGF0aC5hYnNwYXRoKFNSQ0RJUikKICAgICBXT1JLRElSPW9zLnBhdGguYWJzcGF0aChXT1JLRElSKQogICAgIFNES1BBVEg9b3MucGF0aC5hYnNwYXRoKFNES1BBVEgpCiAgICAgREVQU1JDPW9zLnBhdGguYWJzcGF0aChERVBTUkMpCiAKLSAgICBDQz10YXJnZXRfY2NfbWFwW0RFUFRBUkdFVF0KKyAgICBDQywgQ1hYPXRhcmdldF9jY19tYXBbREVQVEFSR0VUXQogCi0gICAgcHJpbnQgIlNldHRpbmdzOiIKLSAgICBwcmludCAiICogU291cmNlIGRpcmVjdG9yeToiLCBTUkNESVIKLSAgICBwcmludCAiICogQnVpbGQgZGlyZWN0b3J5OiAiLCBXT1JLRElSCi0gICAgcHJpbnQgIiAqIFNESyBsb2NhdGlvbjogICAgIiwgU0RLUEFUSAotICAgIHByaW50ICIgKiBUaGlyZC1wYXJ0eSBzb3VyY2U6IiwgREVQU1JDCi0gICAgcHJpbnQgIiAqIERlcGxveW1lbnQgdGFyZ2V0OiIsIERFUFRBUkdFVAotICAgIHByaW50ICIgKiBVbml2ZXJzYWwgYXJjaGl0ZWN0dXJlczoiLCBBUkNITElTVAotICAgIHByaW50ICIgKiBDIGNvbXBpbGVyOiIsIENDCi0gICAgcHJpbnQgIiIKKyAgICBwcmludCgiU2V0dGluZ3M6IikKKyAgICBwcmludCgiICogU291cmNlIGRpcmVjdG9yeToiLCBTUkNESVIpCisgICAgcHJpbnQoIiAqIEJ1aWxkIGRpcmVjdG9yeTogIiwgV09SS0RJUikKKyAgICBwcmludCgiICogU0RLIGxvY2F0aW9uOiAgICAiLCBTREtQQVRIKQorICAgIHByaW50KCIgKiBUaGlyZC1wYXJ0eSBzb3VyY2U6IiwgREVQU1JDKQorICAgIHByaW50KCIgKiBEZXBsb3ltZW50IHRhcmdldDoiLCBERVBUQVJHRVQpCisgICAgcHJpbnQoIiAqIFVuaXZlcnNhbCBhcmNoaXRlY3R1cmVzOiIsIEFSQ0hMSVNUKQorICAgIHByaW50KCIgKiBDIGNvbXBpbGVyOiIsIENDKQorICAgIHByaW50KCIgKiBDKysgY29tcGlsZXI6IiwgQ1hYKQorICAgIHByaW50KCIiKQogCiAKIApAQCAtNTc2LDMxICs2NjIsMTggQEAKICAgICAgICAgeGl0ID0gZnAuY2xvc2UoKQogICAgICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGRhdGEpCi0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICJDYW5ub3QgZXh0cmFjdCAlcyIlKGFyY2hpdmVOYW1lLCkKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGV4dHJhY3QgJXMiJShhcmNoaXZlTmFtZSwpKQogCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsIHJldHZhbCkKIAogICAgIGZpbmFsbHk6CiAgICAgICAgIG9zLmNoZGlyKGN1cmRpcikKIAotS05PV05TSVpFUyA9IHsKLSAgICAiaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvcmVhZGxpbmUvcmVhZGxpbmUtNS4xLnRhci5neiI6IDc5NTI3NDIsCi0gICAgImh0dHA6Ly9kb3dubG9hZHMuc2xlZXB5Y2F0LmNvbS9kYi00LjQuMjAudGFyLmd6IjogMjAzMDI3NiwKLX0KLQogZGVmIGRvd25sb2FkVVJMKHVybCwgZm5hbWUpOgogICAgICIiIgogICAgIERvd25sb2FkIHRoZSBjb250ZW50cyBvZiB0aGUgdXJsIGludG8gdGhlIGZpbGUuCiAgICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBzaXplID0gb3MucGF0aC5nZXRzaXplKGZuYW1lKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgaWYgS05PV05TSVpFUy5nZXQodXJsKSA9PSBzaXplOgotICAgICAgICAgICAgcHJpbnQgIlVzaW5nIGV4aXN0aW5nIGZpbGUgZm9yIiwgdXJsCi0gICAgICAgICAgICByZXR1cm4KLSAgICBmcEluID0gdXJsbGliMi51cmxvcGVuKHVybCkKKyAgICBmcEluID0gdXJsbGliX3JlcXVlc3QudXJsb3Blbih1cmwpCiAgICAgZnBPdXQgPSBvcGVuKGZuYW1lLCAnd2InKQogICAgIGJsb2NrID0gZnBJbi5yZWFkKDEwMjQwKQogICAgIHRyeToKQEAgLTYxNSw2ICs2ODgsMjQgQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcGFzcwogCitkZWYgdmVyaWZ5VGhpcmRQYXJ0eUZpbGUodXJsLCBjaGVja3N1bSwgZm5hbWUpOgorICAgICIiIgorICAgIERvd25sb2FkIGZpbGUgZnJvbSB1cmwgdG8gZmlsZW5hbWUgZm5hbWUgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KKyAgICBBYm9ydCBpZiBmaWxlIGNvbnRlbnRzIGRvZXMgbm90IG1hdGNoIHN1cHBsaWVkIG1kNSBjaGVja3N1bS4KKyAgICAiIiIKKyAgICBuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmbmFtZSkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbmFtZSk6CisgICAgICAgIHByaW50KCJVc2luZyBsb2NhbCBjb3B5IG9mICVzIiUobmFtZSwpKQorICAgIGVsc2U6CisgICAgICAgIHByaW50KCJEaWQgbm90IGZpbmQgbG9jYWwgY29weSBvZiAlcyIlKG5hbWUsKSkKKyAgICAgICAgcHJpbnQoIkRvd25sb2FkaW5nICVzIiUobmFtZSwpKQorICAgICAgICBkb3dubG9hZFVSTCh1cmwsIGZuYW1lKQorICAgICAgICBwcmludCgiQXJjaGl2ZSBmb3IgJXMgc3RvcmVkIGFzICVzIiUobmFtZSwgZm5hbWUpKQorICAgIGlmIG9zLnN5c3RlbSgKKyAgICAgICAgICAgICdNRDU9JChvcGVuc3NsIG1kNSAlcykgOyB0ZXN0ICIke01ENSMjKj0gfSIgPSAiJXMiJworICAgICAgICAgICAgICAgICUgKHNoZWxsUXVvdGUoZm5hbWUpLCBjaGVja3N1bSkgKToKKyAgICAgICAgZmF0YWwoJ01ENSBjaGVja3N1bSBtaXNtYXRjaCBmb3IgZmlsZSAlcycgJSBmbmFtZSkKKwogZGVmIGJ1aWxkUmVjaXBlKHJlY2lwZSwgYmFzZWRpciwgYXJjaExpc3QpOgogICAgICIiIgogICAgIEJ1aWxkIHNvZnR3YXJlIHVzaW5nIGEgcmVjaXBlLiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlCkBAIC02MzUsMTcgKzcyNiw4IEBACiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKERFUFNSQyk6CiAgICAgICAgIG9zLm1rZGlyKERFUFNSQykKIAotCi0gICAgaWYgb3MucGF0aC5leGlzdHMoc291cmNlQXJjaGl2ZSk6Ci0gICAgICAgIHByaW50ICJVc2luZyBsb2NhbCBjb3B5IG9mICVzIiUobmFtZSwpCi0KLSAgICBlbHNlOgotICAgICAgICBwcmludCAiRGlkIG5vdCBmaW5kIGxvY2FsIGNvcHkgb2YgJXMiJShuYW1lLCkKLSAgICAgICAgcHJpbnQgIkRvd25sb2FkaW5nICVzIiUobmFtZSwpCi0gICAgICAgIGRvd25sb2FkVVJMKHVybCwgc291cmNlQXJjaGl2ZSkKLSAgICAgICAgcHJpbnQgIkFyY2hpdmUgZm9yICVzIHN0b3JlZCBhcyAlcyIlKG5hbWUsIHNvdXJjZUFyY2hpdmUpCi0KLSAgICBwcmludCAiRXh0cmFjdGluZyBhcmNoaXZlIGZvciAlcyIlKG5hbWUsKQorICAgIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgcmVjaXBlWydjaGVja3N1bSddLCBzb3VyY2VBcmNoaXZlKQorICAgIHByaW50KCJFeHRyYWN0aW5nIGFyY2hpdmUgZm9yICVzIiUobmFtZSwpKQogICAgIGJ1aWxkRGlyPW9zLnBhdGguam9pbihXT1JLRElSLCAnX2JsZCcpCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJ1aWxkRGlyKToKICAgICAgICAgb3MubWtkaXIoYnVpbGREaXIpCkBAIC02NTUsMTggKzczNywzMSBAQAogICAgIGlmICdidWlsZERpcicgaW4gcmVjaXBlOgogICAgICAgICBvcy5jaGRpcihyZWNpcGVbJ2J1aWxkRGlyJ10pCiAKLQotICAgIGZvciBmbiBpbiByZWNpcGUuZ2V0KCdwYXRjaGVzJywgKCkpOgotICAgICAgICBpZiBmbi5zdGFydHN3aXRoKCdodHRwOi8vJyk6Ci0gICAgICAgICAgICAjIERvd25sb2FkIHRoZSBwYXRjaCBiZWZvcmUgYXBwbHlpbmcgaXQuCi0gICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKERFUFNSQywgb3MucGF0aC5iYXNlbmFtZShmbikpCi0gICAgICAgICAgICBkb3dubG9hZFVSTChmbiwgcGF0aCkKLSAgICAgICAgICAgIGZuID0gcGF0aAotCi0gICAgICAgIGZuID0gb3MucGF0aC5qb2luKGN1cmRpciwgZm4pCisgICAgZm9yIHBhdGNoIGluIHJlY2lwZS5nZXQoJ3BhdGNoZXMnLCAoKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0Y2gsIHR1cGxlKToKKyAgICAgICAgICAgIHVybCwgY2hlY2tzdW0gPSBwYXRjaAorICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oREVQU1JDLCBvcy5wYXRoLmJhc2VuYW1lKHVybCkpCisgICAgICAgICAgICB2ZXJpZnlUaGlyZFBhcnR5RmlsZSh1cmwsIGNoZWNrc3VtLCBmbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcGF0Y2ggaXMgYSBmaWxlIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihjdXJkaXIsIHBhdGNoKQogICAgICAgICBydW5Db21tYW5kKCdwYXRjaCAtcCVzIDwgJXMnJShyZWNpcGUuZ2V0KCdwYXRjaGxldmVsJywgMSksCiAgICAgICAgICAgICBzaGVsbFF1b3RlKGZuKSwpKQogCisgICAgZm9yIHBhdGNoc2NyaXB0IGluIHJlY2lwZS5nZXQoJ3BhdGNoc2NyaXB0cycsICgpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRjaHNjcmlwdCwgdHVwbGUpOgorICAgICAgICAgICAgdXJsLCBjaGVja3N1bSA9IHBhdGNoc2NyaXB0CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihERVBTUkMsIG9zLnBhdGguYmFzZW5hbWUodXJsKSkKKyAgICAgICAgICAgIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgY2hlY2tzdW0sIGZuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBwYXRjaCBpcyBhIGZpbGUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKGN1cmRpciwgcGF0Y2hzY3JpcHQpCisgICAgICAgIGlmIGZuLmVuZHN3aXRoKCcuYnoyJyk6CisgICAgICAgICAgICBydW5Db21tYW5kKCdidW56aXAyIC1mayAlcycgJSBzaGVsbFF1b3RlKGZuKSkKKyAgICAgICAgICAgIGZuID0gZm5bOi00XQorICAgICAgICBydW5Db21tYW5kKCdzaCAlcycgJSBzaGVsbFF1b3RlKGZuKSkKKyAgICAgICAgb3MudW5saW5rKGZuKQorCiAgICAgaWYgY29uZmlndXJlIGlzIG5vdCBOb25lOgogICAgICAgICBjb25maWd1cmVfYXJncyA9IFsKICAgICAgICAgICAgICItLXByZWZpeD0vdXNyL2xvY2FsIiwKQEAgLTY4NSw0MCArNzgwLDQ0IEBACiAKICAgICAgICAgaWYgcmVjaXBlLmdldCgndXNlTERGbGFncycsIDEpOgogICAgICAgICAgICAgY29uZmlndXJlX2FyZ3MuZXh0ZW5kKFsKLSAgICAgICAgICAgICAgICAiQ0ZMQUdTPS1hcmNoICVzIC1pc3lzcm9vdCAlcyAtSSVzL3Vzci9sb2NhbC9pbmNsdWRlIiUoCisgICAgICAgICAgICAgICAgIkNGTEFHUz0lcy1tbWFjb3N4LXZlcnNpb24tbWluPSVzIC1hcmNoICVzIC1pc3lzcm9vdCAlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1JJXMvdXNyL2xvY2FsL2luY2x1ZGUiJSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5nZXQoJ2V4dHJhX2NmbGFncycsICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICcgLWFyY2ggJy5qb2luKGFyY2hMaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoU0RLUEFUSClbMTotMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKGJhc2VkaXIpWzE6LTFdLCksCi0gICAgICAgICAgICAgICAgIkxERkxBR1M9LXN5c2xpYnJvb3QsJXMgLUwlcy91c3IvbG9jYWwvbGliIC1hcmNoICVzIiUoCisgICAgICAgICAgICAgICAgIkxERkxBR1M9LW1tYWNvc3gtdmVyc2lvbi1taW49JXMgLXN5c2xpYnJvb3QsJXMgLUwlcy91c3IvbG9jYWwvbGliIC1hcmNoICVzIiUoCisgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCwKICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShTREtQQVRIKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShiYXNlZGlyKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oYXJjaExpc3QpKSwKICAgICAgICAgICAgIF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb25maWd1cmVfYXJncy5leHRlbmQoWwotICAgICAgICAgICAgICAgICJDRkxBR1M9LWFyY2ggJXMgLWlzeXNyb290ICVzIC1JJXMvdXNyL2xvY2FsL2luY2x1ZGUiJSgKKyAgICAgICAgICAgICAgICAiQ0ZMQUdTPSVzLW1tYWNvc3gtdmVyc2lvbi1taW49JXMgLWFyY2ggJXMgLWlzeXNyb290ICVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUklcy91c3IvbG9jYWwvaW5jbHVkZSIlKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLmdldCgnZXh0cmFfY2ZsYWdzJywgJycpLAorICAgICAgICAgICAgICAgICAgICAgICAgREVQVEFSR0VULAogICAgICAgICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oYXJjaExpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShTREtQQVRIKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoYmFzZWRpcilbMTotMV0sKSwKICAgICAgICAgICAgIF0pCiAKICAgICAgICAgaWYgJ2NvbmZpZ3VyZV9wb3N0JyBpbiByZWNpcGU6Ci0gICAgICAgICAgICBjb25maWd1cmVfYXJncyA9IGNvbmZpZ3VyZV9hcmdzID0gbGlzdChyZWNpcGVbJ2NvbmZpZ3VyZV9wb3N0J10pCisgICAgICAgICAgICBjb25maWd1cmVfYXJncyA9IGNvbmZpZ3VyZV9hcmdzICsgbGlzdChyZWNpcGVbJ2NvbmZpZ3VyZV9wb3N0J10pCiAKICAgICAgICAgY29uZmlndXJlX2FyZ3MuaW5zZXJ0KDAsIGNvbmZpZ3VyZSkKICAgICAgICAgY29uZmlndXJlX2FyZ3MgPSBbIHNoZWxsUXVvdGUoYSkgZm9yIGEgaW4gY29uZmlndXJlX2FyZ3MgXQogCi0gICAgICAgIGlmICdjb25maWd1cmVfZW52JyBpbiByZWNpcGU6Ci0gICAgICAgICAgICBjb25maWd1cmVfYXJncy5pbnNlcnQoMCwgcmVjaXBlWydjb25maWd1cmVfZW52J10pCi0KLSAgICAgICAgcHJpbnQgIlJ1bm5pbmcgY29uZmlndXJlIGZvciAlcyIlKG5hbWUsKQorICAgICAgICBwcmludCgiUnVubmluZyBjb25maWd1cmUgZm9yICVzIiUobmFtZSwpKQogICAgICAgICBydW5Db21tYW5kKCcgJy5qb2luKGNvbmZpZ3VyZV9hcmdzKSArICcgMj4mMScpCiAKLSAgICBwcmludCAiUnVubmluZyBpbnN0YWxsIGZvciAlcyIlKG5hbWUsKQorICAgIHByaW50KCJSdW5uaW5nIGluc3RhbGwgZm9yICVzIiUobmFtZSwpKQogICAgIHJ1bkNvbW1hbmQoJ3sgJyArIGluc3RhbGwgKyAnIDt9IDI+JjEnKQogCi0gICAgcHJpbnQgIkRvbmUgJXMiJShuYW1lLCkKLSAgICBwcmludCAiIgorICAgIHByaW50KCJEb25lICVzIiUobmFtZSwpKQorICAgIHByaW50KCIiKQogCiAgICAgb3MuY2hkaXIoY3VyZGlyKQogCkBAIC03MjYsOSArODI1LDkgQEAKICAgICAiIiIKICAgICBCdWlsZCBvdXIgZGVwZW5kZW5jaWVzIGludG8gJFdPUktESVIvbGlicmFyaWVzL3Vzci9sb2NhbAogICAgICIiIgotICAgIHByaW50ICIiCi0gICAgcHJpbnQgIkJ1aWxkaW5nIHJlcXVpcmVkIGxpYnJhcmllcyIKLSAgICBwcmludCAiIgorICAgIHByaW50KCIiKQorICAgIHByaW50KCJCdWlsZGluZyByZXF1aXJlZCBsaWJyYXJpZXMiKQorICAgIHByaW50KCIiKQogICAgIHVuaXZlcnNhbCA9IG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykKICAgICBvcy5ta2Rpcih1bml2ZXJzYWwpCiAgICAgb3MubWFrZWRpcnMob3MucGF0aC5qb2luKHVuaXZlcnNhbCwgJ3VzcicsICdsb2NhbCcsICdsaWInKSkKQEAgLTc0Miw3ICs4NDEsNyBAQAogZGVmIGJ1aWxkUHl0aG9uRG9jcygpOgogICAgICMgVGhpcyBzdG9yZXMgdGhlIGRvY3VtZW50YXRpb24gYXMgUmVzb3VyY2VzL0VuZ2xpc2gubHByb2ovRG9jdW1lbnRhdGlvbgogICAgICMgaW5zaWRlIHRoZSBmcmFtd29yay4gcHlkb2MgYW5kIElETEUgd2lsbCBwaWNrIGl0IHVwIHRoZXJlLgotICAgIHByaW50ICJJbnN0YWxsIHB5dGhvbiBkb2N1bWVudGF0aW9uIgorICAgIHByaW50KCJJbnN0YWxsIHB5dGhvbiBkb2N1bWVudGF0aW9uIikKICAgICByb290RGlyID0gb3MucGF0aC5qb2luKFdPUktESVIsICdfcm9vdCcpCiAgICAgYnVpbGREaXIgPSBvcy5wYXRoLmpvaW4oJy4uLy4uL0RvYycpCiAgICAgZG9jZGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdweWRvY3MnKQpAQCAtNzU3LDcgKzg1Niw3IEBACiAKIAogZGVmIGJ1aWxkUHl0aG9uKCk6Ci0gICAgcHJpbnQgIkJ1aWxkaW5nIGEgdW5pdmVyc2FsIHB5dGhvbiBmb3IgJXMgYXJjaGl0ZWN0dXJlcyIgJSBVTklWRVJTQUxBUkNIUworICAgIHByaW50KCJCdWlsZGluZyBhIHVuaXZlcnNhbCBweXRob24gZm9yICVzIGFyY2hpdGVjdHVyZXMiICUgVU5JVkVSU0FMQVJDSFMpCiAKICAgICBidWlsZERpciA9IG9zLnBhdGguam9pbihXT1JLRElSLCAnX2JsZCcsICdweXRob24nKQogICAgIHJvb3REaXIgPSBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ19yb290JykKQEAgLTc4NSw3ICs4ODQsNyBAQAogICAgICMgd2lsbCBmaW5kIHRoZW0gZHVyaW5nIGl0cyBleHRlbnNpb24gaW1wb3J0IHNhbml0eSBjaGVja3MuCiAgICAgb3MuZW52aXJvblsnRFlMRF9MSUJSQVJZX1BBVEgnXSA9IG9zLnBhdGguam9pbihXT1JLRElSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnLCAndXNyJywgJ2xvY2FsJywgJ2xpYicpCi0gICAgcHJpbnQgIlJ1bm5pbmcgY29uZmlndXJlLi4uIgorICAgIHByaW50KCJSdW5uaW5nIGNvbmZpZ3VyZS4uLiIpCiAgICAgcnVuQ29tbWFuZCgiJXMgLUMgLS1lbmFibGUtZnJhbWV3b3JrIC0tZW5hYmxlLXVuaXZlcnNhbHNkaz0lcyAiCiAgICAgICAgICAgICAgICAiLS13aXRoLXVuaXZlcnNhbC1hcmNocz0lcyAiCiAgICAgICAgICAgICAgICAiJXMgIgpAQCAtNzk3LDE5ICs4OTYsMTkgQEAKICAgICAgICAgc2hlbGxRdW90ZShXT1JLRElSKVsxOi0xXSwKICAgICAgICAgc2hlbGxRdW90ZShXT1JLRElSKVsxOi0xXSkpCiAKLSAgICBwcmludCAiUnVubmluZyBtYWtlIgorICAgIHByaW50KCJSdW5uaW5nIG1ha2UiKQogICAgIHJ1bkNvbW1hbmQoIm1ha2UiKQogCi0gICAgcHJpbnQgIlJ1bm5pbmcgbWFrZSBpbnN0YWxsIgorICAgIHByaW50KCJSdW5uaW5nIG1ha2UgaW5zdGFsbCIpCiAgICAgcnVuQ29tbWFuZCgibWFrZSBpbnN0YWxsIERFU1RESVI9JXMiJSgKICAgICAgICAgc2hlbGxRdW90ZShyb290RGlyKSkpCiAKLSAgICBwcmludCAiUnVubmluZyBtYWtlIGZyYW1ld29ya2luc3RhbGxleHRyYXMiCisgICAgcHJpbnQoIlJ1bm5pbmcgbWFrZSBmcmFtZXdvcmtpbnN0YWxsZXh0cmFzIikKICAgICBydW5Db21tYW5kKCJtYWtlIGZyYW1ld29ya2luc3RhbGxleHRyYXMgREVTVERJUj0lcyIlKAogICAgICAgICBzaGVsbFF1b3RlKHJvb3REaXIpKSkKIAogICAgIGRlbCBvcy5lbnZpcm9uWydEWUxEX0xJQlJBUllfUEFUSCddCi0gICAgcHJpbnQgIkNvcHlpbmcgcmVxdWlyZWQgc2hhcmVkIGxpYnJhcmllcyIKKyAgICBwcmludCgiQ29weWluZyByZXF1aXJlZCBzaGFyZWQgbGlicmFyaWVzIikKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycsICdMaWJyYXJ5JykpOgogICAgICAgICBydW5Db21tYW5kKCJtdiAlcy8qICVzIiUoCiAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbigKQEAgLTgyMCwxNiArOTE5LDE2IEBACiAgICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLCBnZXRWZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgJ2xpYicpKSkpCiAKLSAgICBwcmludCAiRml4IGZpbGUgbW9kZXMiCisgICAgcHJpbnQoIkZpeCBmaWxlIG1vZGVzIikKICAgICBmcm1EaXIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsICdQeXRob24uZnJhbWV3b3JrJykKICAgICBnaWQgPSBncnAuZ2V0Z3JuYW0oJ2FkbWluJykuZ3JfZ2lkCiAKKyAgICBzaGFyZWRfbGliX2Vycm9yID0gRmFsc2UKICAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKGZybURpcik6CiAgICAgICAgIGZvciBkbiBpbiBkaXJuYW1lczoKLSAgICAgICAgICAgIG9zLmNobW9kKG9zLnBhdGguam9pbihkaXJwYXRoLCBkbiksIDA3NzUpCisgICAgICAgICAgICBvcy5jaG1vZChvcy5wYXRoLmpvaW4oZGlycGF0aCwgZG4pLCBTVEFUXzBvNzc1KQogICAgICAgICAgICAgb3MuY2hvd24ob3MucGF0aC5qb2luKGRpcnBhdGgsIGRuKSwgLTEsIGdpZCkKIAotCiAgICAgICAgIGZvciBmbiBpbiBmaWxlbmFtZXM6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhmbik6CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTg0MCw2ICs5MzksMTkgQEAKICAgICAgICAgICAgIG9zLmNobW9kKHAsIHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSB8IHN0YXQuU19JV0dSUCkKICAgICAgICAgICAgIG9zLmNob3duKHAsIC0xLCBnaWQpCiAKKyAgICAgICAgICAgIGlmIGZuIGluIEVYUEVDVEVEX1NIQVJFRF9MSUJTOgorICAgICAgICAgICAgICAgICMgY2hlY2sgdG8gc2VlIHRoYXQgdGhpcyBmaWxlIHdhcyBsaW5rZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAjIGV4cGVjdGVkIGxpYnJhcnkgcGF0aCBhbmQgdmVyc2lvbgorICAgICAgICAgICAgICAgIGRhdGEgPSBjYXB0dXJlQ29tbWFuZCgib3Rvb2wgLUwgJXMiICUgc2hlbGxRdW90ZShwKSkKKyAgICAgICAgICAgICAgICBmb3Igc2wgaW4gRVhQRUNURURfU0hBUkVEX0xJQlNbZm5dOgorICAgICAgICAgICAgICAgICAgICBpZiAoIlx0JXMgIiAlIHNsKSBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJFeHBlY3RlZCBzaGFyZWQgbGliICVzIHdhcyBub3QgbGlua2VkIHdpdGggJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNsLCBwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9saWJfZXJyb3IgPSBUcnVlCisKKyAgICBpZiBzaGFyZWRfbGliX2Vycm9yOgorICAgICAgICBmYXRhbCgiVW5leHBlY3RlZCBzaGFyZWQgbGlicmFyeSBlcnJvcnMuIikKKwogICAgIGlmIFBZVEhPTl8zOgogICAgICAgICBMRFZFUlNJT049Tm9uZQogICAgICAgICBWRVJTSU9OPU5vbmUKQEAgLTg2MywxOSArOTc1LDI2IEBACiAKICAgICAjIFdlIGFkZGVkIHNvbWUgZGlyZWN0b3JpZXMgdG8gdGhlIHNlYXJjaCBwYXRoIGR1cmluZyB0aGUgY29uZmlndXJlCiAgICAgIyBwaGFzZS4gUmVtb3ZlIHRob3NlIGJlY2F1c2UgdGhvc2UgZGlyZWN0b3JpZXMgd29uJ3QgYmUgdGhlcmUgb24KLSAgICAjIHRoZSBlbmQtdXNlcnMgc3lzdGVtLgotICAgIHBhdGggPW9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywgJ1B5dGhvbi5mcmFtZXdvcmsnLAotICAgICAgICAgICAgICAgICdWZXJzaW9ucycsIHZlcnNpb24sICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCksCi0gICAgICAgICAgICAgICAgJ2NvbmZpZycgKyBjb25maWdfc3VmZml4LCAnTWFrZWZpbGUnKQotICAgIGZwID0gb3BlbihwYXRoLCAncicpCi0gICAgZGF0YSA9IGZwLnJlYWQoKQotICAgIGZwLmNsb3NlKCkKKyAgICAjIHRoZSBlbmQtdXNlcnMgc3lzdGVtLiBBbHNvIHJlbW92ZSB0aGUgZGlyZWN0b3JpZXMgZnJvbSBfc3lzY29uZmlnZGF0YS5weQorICAgICMgKGFkZGVkIGluIDMuMykgaWYgaXQgZXhpc3RzLgogCi0gICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnLUwlcy9saWJyYXJpZXMvdXNyL2xvY2FsL2xpYiclKFdPUktESVIsKSwgJycpCi0gICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnLUklcy9saWJyYXJpZXMvdXNyL2xvY2FsL2luY2x1ZGUnJShXT1JLRElSLCksICcnKQotICAgIGZwID0gb3BlbihwYXRoLCAndycpCi0gICAgZnAud3JpdGUoZGF0YSkKLSAgICBmcC5jbG9zZSgpCisgICAgcGF0aF90b19saWIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24uZnJhbWV3b3JrJywgJ1ZlcnNpb25zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiwgJ2xpYicsICdweXRob24lcyclKHZlcnNpb24sKSkKKyAgICBwYXRocyA9IFtvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdjb25maWcnICsgY29uZmlnX3N1ZmZpeCwgJ01ha2VmaWxlJyksCisgICAgICAgICAgICAgb3MucGF0aC5qb2luKHBhdGhfdG9fbGliLCAnX3N5c2NvbmZpZ2RhdGEucHknKV0KKyAgICBmb3IgcGF0aCBpbiBwYXRoczoKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKKyAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICBmcC5jbG9zZSgpCisKKyAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnIC1MJXMvbGlicmFyaWVzL3Vzci9sb2NhbC9saWInJShXT1JLRElSLCksICcnKQorICAgICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCcgLUklcy9saWJyYXJpZXMvdXNyL2xvY2FsL2luY2x1ZGUnJShXT1JLRElSLCksICcnKQorICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQorICAgICAgICBmcC53cml0ZShkYXRhKQorICAgICAgICBmcC5jbG9zZSgpCiAKICAgICAjIEFkZCBzeW1saW5rcyBpbiAvdXNyL2xvY2FsL2JpbiwgdXNpbmcgcmVsYXRpdmUgbGlua3MKICAgICB1c3JfbG9jYWxfYmluID0gb3MucGF0aC5qb2luKHJvb3REaXIsICd1c3InLCAnbG9jYWwnLCAnYmluJykKQEAgLTkwNywxNyArMTAyNiwxNyBAQAogCiAgICAgIyBUaGlzIG9uZSBpcyBub3QgaGFuZHkgYXMgYSB0ZW1wbGF0ZSB2YXJpYWJsZQogICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoJyRQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSJywgJy9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yaycpCi0gICAgZnAgPSBvcGVuKG91dFBhdGgsICd3YicpCisgICAgZnAgPSBvcGVuKG91dFBhdGgsICd3JykKICAgICBmcC53cml0ZShkYXRhKQogICAgIGZwLmNsb3NlKCkKIAogZGVmIHBhdGNoU2NyaXB0KGluUGF0aCwgb3V0UGF0aCk6CiAgICAgZGF0YSA9IGZpbGVDb250ZW50cyhpblBhdGgpCiAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnQFBZVkVSQCcsIGdldFZlcnNpb24oKSkKLSAgICBmcCA9IG9wZW4ob3V0UGF0aCwgJ3diJykKKyAgICBmcCA9IG9wZW4ob3V0UGF0aCwgJ3cnKQogICAgIGZwLndyaXRlKGRhdGEpCiAgICAgZnAuY2xvc2UoKQotICAgIG9zLmNobW9kKG91dFBhdGgsIDA3NTUpCisgICAgb3MuY2htb2Qob3V0UGF0aCwgU1RBVF8wbzc1NSkKIAogCiAKQEAgLTkzNCw3ICsxMDUzLDcgQEAKICAgICAgICAgcmVhZG1lID0gdGV4dHdyYXAuZGVkZW50KHJlY2lwZVsncmVhZG1lJ10pCiAgICAgICAgIGlzUmVxdWlyZWQgPSByZWNpcGUuZ2V0KCdyZXF1aXJlZCcsIFRydWUpCiAKLSAgICAgICAgcHJpbnQgIi0gYnVpbGRpbmcgcGFja2FnZSAlcyIlKHBrZ25hbWUsKQorICAgICAgICBwcmludCgiLSBidWlsZGluZyBwYWNrYWdlICVzIiUocGtnbmFtZSwpKQogCiAgICAgICAgICMgU3Vic3RpdHV0ZSBzb21lIHZhcmlhYmxlcwogICAgICAgICB0ZXh0dmFycyA9IGRpY3QoCkBAIC05NzksNyArMTA5OCw3IEBACiAgICAgICAgICAgICBwYXRjaFNjcmlwdChwb3N0ZmxpZ2h0LCBvcy5wYXRoLmpvaW4ocnNyY0RpciwgJ3Bvc3RmbGlnaHQnKSkKIAogICAgICAgICB2ZXJzID0gZ2V0RnVsbFZlcnNpb24oKQotICAgICAgICBtYWpvciwgbWlub3IgPSBtYXAoaW50LCBnZXRWZXJzaW9uKCkuc3BsaXQoJy4nLCAyKSkKKyAgICAgICAgbWFqb3IsIG1pbm9yID0gZ2V0VmVyc2lvbk1ham9yTWlub3IoKQogICAgICAgICBwbCA9IFBsaXN0KAogICAgICAgICAgICAgICAgIENGQnVuZGxlR2V0SW5mb1N0cmluZz0iUHl0aG9uLiVzICVzIiUocGtnbmFtZSwgdmVycywpLAogICAgICAgICAgICAgICAgIENGQnVuZGxlSWRlbnRpZmllcj0nb3JnLnB5dGhvbi5QeXRob24uJXMnJShwa2duYW1lLCksCkBAIC0xMDE2LDcgKzExMzUsNyBAQAogZGVmIG1ha2VNcGtnUGxpc3QocGF0aCk6CiAKICAgICB2ZXJzID0gZ2V0RnVsbFZlcnNpb24oKQotICAgIG1ham9yLCBtaW5vciA9IG1hcChpbnQsIGdldFZlcnNpb24oKS5zcGxpdCgnLicsIDIpKQorICAgIG1ham9yLCBtaW5vciA9IGdldFZlcnNpb25NYWpvck1pbm9yKCkKIAogICAgIHBsID0gUGxpc3QoCiAgICAgICAgICAgICBDRkJ1bmRsZUdldEluZm9TdHJpbmc9IlB5dGhvbiAlcyIlKHZlcnMsKSwKQEAgLTExMjcsNyArMTI0Niw3IEBACiAgICAgIyBDdXN0b20gaWNvbiBmb3IgdGhlIERNRywgc2hvd24gd2hlbiB0aGUgRE1HIGlzIG1vdW50ZWQuCiAgICAgc2h1dGlsLmNvcHkoIi4uL0ljb25zL0Rpc2sgSW1hZ2UuaWNucyIsCiAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oV09SS0RJUiwgIm1udCIsIHZvbG5hbWUsICIuVm9sdW1lSWNvbi5pY25zIikpCi0gICAgcnVuQ29tbWFuZCgiL0RldmVsb3Blci9Ub29scy9TZXRGaWxlIC1hIEMgJXMvIiUoCisgICAgcnVuQ29tbWFuZCgiU2V0RmlsZSAtYSBDICVzLyIlKAogICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgIm1udCIsIHZvbG5hbWUpKSwpKQogCiAgICAgcnVuQ29tbWFuZCgiaGRpdXRpbCBkZXRhY2ggJXMiJShzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAibW50Iiwgdm9sbmFtZSkpKSkKQEAgLTExNjgsNiArMTI4Nyw3IEBACiAKICAgICBvcy5lbnZpcm9uWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9IERFUFRBUkdFVAogICAgIG9zLmVudmlyb25bJ0NDJ10gPSBDQworICAgIG9zLmVudmlyb25bJ0NYWCddID0gQ1hYCiAKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhXT1JLRElSKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShXT1JLRElSKQpAQCAtMTE5OCw3ICsxMzE4LDcgQEAKIAogICAgIGZvbGRlciA9IG9zLnBhdGguam9pbihXT1JLRElSLCAiX3Jvb3QiLCAiQXBwbGljYXRpb25zIiwgIlB5dGhvbiAlcyIlKAogICAgICAgICBnZXRWZXJzaW9uKCksKSkKLSAgICBvcy5jaG1vZChmb2xkZXIsIDA3NTUpCisgICAgb3MuY2htb2QoZm9sZGVyLCBTVEFUXzBvNzU1KQogICAgIHNldEljb24oZm9sZGVyLCAiLi4vSWNvbnMvUHl0aG9uIEZvbGRlci5pY25zIikKIAogICAgICMgQ3JlYXRlIHRoZSBpbnN0YWxsZXIKQEAgLTEyMTEsOSArMTMzMSw5IEBACiAgICAgc2h1dGlsLmNvcHkoJy4uLy4uL0xJQ0VOU0UnLCBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2luc3RhbGxlcicsICdMaWNlbnNlLnR4dCcpKQogCiAgICAgZnAgPSBvcGVuKG9zLnBhdGguam9pbihXT1JLRElSLCAnaW5zdGFsbGVyJywgJ0J1aWxkLnR4dCcpLCAndycpCi0gICAgcHJpbnQgPj4gZnAsICIjIEJVSUxEIElORk8iCi0gICAgcHJpbnQgPj4gZnAsICIjIERhdGU6IiwgdGltZS5jdGltZSgpCi0gICAgcHJpbnQgPj4gZnAsICIjIEJ5OiIsIHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSkucHdfZ2Vjb3MKKyAgICBmcC53cml0ZSgiIyBCVUlMRCBJTkZPXG4iKQorICAgIGZwLndyaXRlKCIjIERhdGU6ICVzXG4iICUgdGltZS5jdGltZSgpKQorICAgIGZwLndyaXRlKCIjIEJ5OiAlc1xuIiAlIHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSkucHdfZ2Vjb3MpCiAgICAgZnAuY2xvc2UoKQogCiAgICAgIyBBbmQgY29weSBpdCB0byBhIERNRwpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L25jdXJzZXMtNS41LnBhdGNoIGIvTWFjL0J1aWxkU2NyaXB0L25jdXJzZXMtNS41LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWFiM2QzLi4wMDAwMDAwCi0tLSBhL01hYy9CdWlsZFNjcmlwdC9uY3Vyc2VzLTUuNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLWRpZmYgLXIgLXUgbmN1cnNlcy01LjUtb3JpZy90ZXN0L01ha2VmaWxlLmluIG5jdXJzZXMtNS41L3Rlc3QvTWFrZWZpbGUuaW4KLS0tLSBuY3Vyc2VzLTUuNS1vcmlnL3Rlc3QvTWFrZWZpbGUuaW4JMjAwNi0wMy0yNCAxMjo0Nzo0MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBuY3Vyc2VzLTUuNS90ZXN0L01ha2VmaWxlLmluCTIwMDYtMDMtMjQgMTI6NDc6NTAuMDAwMDAwMDAwICswMTAwCi1AQCAtNzUsNyArNzUsNyBAQAotIE1BVEhfTElCCT0gQE1BVEhfTElCQAotIAotIExECQk9IEBMREAKLS1MSU5LCQk9IEBMSU5LX1RFU1RTQCAkKExJQlRPT0xfTElOSykgJChDQykgJChDRkxBR1MpCi0rTElOSwkJPSBATElOS19URVNUU0AgJChMSUJUT09MX0xJTkspICQoQ0MpIAotIAotIHVzRkxBR1MJCT0gQExEX01PREVMQCBATE9DQUxfTERGTEFHU0AgQExERkxBR1NACi0gCi1kaWZmIC1ydSBuY3Vyc2VzLTUuNS1vcmlnL25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jIG5jdXJzZXMtNS41L25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jCi0tLS0gbmN1cnNlcy01LjUtb3JpZy9uY3Vyc2VzL3RpbmZvL3JlYWRfZW50cnkuYyAyMDA0LTAxLTExIDAyOjU3OjA1LjAwMDAwMDAwMCArMDEwMAotKysrIG5jdXJzZXMtNS41L25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jICAgICAgMjAwNi0wMy0yNSAyMjo0OTozOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NzQsNyArNDc0LDcgQEAKLSAgICAgfQotIAotICAgICAvKiB0cnVuY2F0ZSB0aGUgdGVybWluYWwgbmFtZSB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyAqLwotLSAgICAodm9pZCkgc3ByaW50Zih0dG4sICIlYy8lLipzIiwgKnRuLCAoaW50KSBzaXplb2YodHRuKSAtIDMsIHRuKTsKLSsgICAgKHZvaWQpIHNwcmludGYodHRuLCAiJXgvJS4qcyIsICp0biwgKGludCkgc2l6ZW9mKHR0bikgLSAzLCB0bik7Ci0gCi0gICAgIC8qIFRoaXMgaXMgU3lzdGVtIFYgYmVoYXZpb3IsIGluIGNvbmp1bmN0aW9uIHdpdGggb3VyIHJlcXVpcmVtZW50cyBmb3IKLSAgICAgICogd3JpdGluZyB0ZXJtaW5mbyBlbnRyaWVzLgotZGlmZiAtcnUgbmN1cnNlcy01LjUtb3JpZy9jb25maWd1cmUgbmN1cnNlcy01LjUvY29uZmlndXJlCi0tLS0gbmN1cnNlcy01LjUtb3JpZy9jb25maWd1cmUJMjAwNS0wOS0yNCAyMzo1MDo1MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBuY3Vyc2VzLTUuNS9jb25maWd1cmUJMjAwNi0wMy0yNiAyMjoyNDo1OS4wMDAwMDAwMDAgKzAyMDAKLUBAIC01MDI3LDcgKzUwMjcsNyBAQAotIAlkYXJ3aW4qKQotIAkJRVhUUkFfQ0ZMQUdTPSItbm8tY3BwLXByZWNvbXAiCi0gCQlDQ19TSEFSRURfT1BUUz0iLWR5bmFtaWMiCi0tCQlNS19TSEFSRURfTElCPSckKENDKSAtZHluYW1pY2xpYiAtaW5zdGFsbF9uYW1lICQoREVTVERJUikkKGxpYmRpcikvYGJhc2VuYW1lICRAYCAtY29tcGF0aWJpbGl0eV92ZXJzaW9uICQoQUJJX1ZFUlNJT04pIC1jdXJyZW50X3ZlcnNpb24gJChBQklfVkVSU0lPTikgLW8gJEAnCi0rCQlNS19TSEFSRURfTElCPSckKENDKSAkKENGTEFHUykgLWR5bmFtaWNsaWIgLWluc3RhbGxfbmFtZSAkKERFU1RESVIpJChsaWJkaXIpL2BiYXNlbmFtZSAkQGAgLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkKEFCSV9WRVJTSU9OKSAtY3VycmVudF92ZXJzaW9uICQoQUJJX1ZFUlNJT04pIC1vICRAJwotIAkJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPWFiaQotIAkJY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeD15ZXMKLSAJCTs7CmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS50eHQgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS50eHQKaW5kZXggZjFiZWRhMC4uOWFjNTJkMCAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUudHh0CisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnR4dApAQCAtNSw4ICs1LDE1IEBACiBJbnN0YWxsYXRpb24gcmVxdWlyZXMgYXBwcm94aW1hdGVseSAkSU5TVEFMTF9TSVpFIE1CIG9mIGRpc2sgc3BhY2UsCiBpZ25vcmUgdGhlIG1lc3NhZ2UgdGhhdCBpdCB3aWxsIHRha2UgemVybyBieXRlcy4KIAotWW91IG11c3QgaW5zdGFsbCBvbnRvIHlvdXIgY3VycmVudCBib290IGRpc2ssIGV2ZW4gdGhvdWdoIHRoZQotaW5zdGFsbGVyIGRvZXMgbm90IGVuZm9yY2UgdGhpcywgb3RoZXJ3aXNlIHRoaW5ncyB3aWxsIG5vdCB3b3JrLgorSWYgeW91IGFyZSBhdHRlbXB0aW5nIHRvIGluc3RhbGwgb24gYW4gT1MgWCAxMC44IHN5c3RlbSwgeW91IG1heQorc2VlIGEgbWVzc2FnZSB0aGF0IFB5dGhvbiBjYW4ndCBiZSBpbnN0YWxsZWQgYmVjYXVzZSBpdCBpcyBmcm9tIGFuCit1bmlkZW50aWZpZWQgZGV2ZWxvcGVyLiAgVGhpcyBpcyBiZWNhdXNlIHRoaXMgUHl0aG9uIGluc3RhbGxlcgorcGFja2FnZSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCB0aGUgR2F0ZWtlZXBlciBzZWN1cml0eSBmZWF0dXJlCitpbnRyb2R1Y2VkIGluIE9TIFggMTAuOC4gIFRvIGFsbG93IFB5dGhvbiB0byBiZSBpbnN0YWxsZWQsIHlvdQorY2FuIG92ZXJyaWRlIHRoZSBHYXRla2VlcGVyIHBvbGljeSBmb3IgdGhpcyBpbnN0YWxsLiAgSW4gdGhlIEZpbmRlciwKK2luc3RlYWQgb2YgZG91YmxlLWNsaWNraW5nLCBjb250cm9sLWNsaWNrIG9yIHJpZ2h0IGNsaWNrIHRoZSAiUHl0aG9uIgoraW5zdGFsbGVyIHBhY2thZ2UgaWNvbi4gIFRoZW4gc2VsZWN0ICJPcGVuIHVzaW5nIC4uLiBJbnN0YWxsZXIiIGZyb20KK3RoZSBjb250ZXh0dWFsIG1lbnUgdGhhdCBhcHBlYXJzLgogCiBQeXRob24gY29uc2lzdHMgb2YgdGhlIFB5dGhvbiBwcm9ncmFtbWluZyBsYW5ndWFnZSBpbnRlcnByZXRlciwgcGx1cwogYSBzZXQgb2YgcHJvZ3JhbXMgdG8gYWxsb3cgZWFzeSBhY2Nlc3MgdG8gaXQgZm9yIE1hYyB1c2VycyBpbmNsdWRpbmcKQEAgLTE2LDEwICsyMywxMSBAQAogCiAgICAgICAgICAgICAgICAgICAgICoqKiogSU1QT1JUQU5UICoqKioKICAgICAgICAgICAgICAgICAgICAgCi1CZWZvcmUgdXNpbmcgSURMRSBvciBvdGhlciBwcm9ncmFtcyB1c2luZyB0aGUgdGtpbnRlciBncmFwaGljYWwgdXNlcgotaW50ZXJmYWNlIHRvb2xraXQsIHZpc2l0IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvCi1mb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zCi1vZiBUY2wvVGsgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIE1hYyBPUyBYLgorVG8gdXNlIElETEUgb3Igb3RoZXIgcHJvZ3JhbXMgdGhhdCB1c2UgdGhlIHRraW50ZXIgZ3JhcGhpY2FsIHVzZXIKK2ludGVyZmFjZSB0b29sa2l0LCB5b3UgbWF5IG5lZWQgdG8gaW5zdGFsbCBhIHRoaXJkLXBhcnR5IHZlcnNpb24gb2YKK3RoZSBUY2wvVGsgZnJhbWV3b3Jrcy4gIFZpc2l0IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvCitmb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zIG9mCitUY2wvVGsgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLgogCiAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioKIApAQCAtMzIsNSArNDAsMTMgQEAKIHdlbGwuIERvdWJsZS1jbGljayBvbiB0aGUgIlVwZGF0ZSBTaGVsbCBQcm9maWxlIiBjb21tYW5kIHRvIGFkZCB0aGUKICJiaW4iIGRpcmVjdG9yeSBpbnNpZGUgdGhlIGZyYW1ld29yayB0byB5b3VyIHNoZWxsJ3Mgc2VhcmNoIHBhdGguCiAKK1lvdSBtdXN0IGluc3RhbGwgb250byB5b3VyIGN1cnJlbnQgYm9vdCBkaXNrLCBldmVuIHRob3VnaCB0aGUKK2luc3RhbGxlciBkb2VzIG5vdCBlbmZvcmNlIHRoaXMsIG90aGVyd2lzZSB0aGluZ3Mgd2lsbCBub3Qgd29yay4KKworWW91IGNhbiB2ZXJpZnkgdGhlIGludGVncml0eSBvZiB0aGUgZGlzayBpbWFnZSBmaWxlIGNvbnRhaW5pbmcgdGhlCitpbnN0YWxsZXIgcGFja2FnZSBhbmQgdGhpcyBSZWFkTWUgZmlsZSBieSBjb21wYXJpbmcgaXRzIG1kNSBjaGVja3N1bQorYW5kIHNpemUgd2l0aCB0aGUgdmFsdWVzIHB1Ymxpc2hlZCBvbiB0aGUgcmVsZWFzZSBwYWdlIGxpbmtlZCBhdAoraHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkLworCiBNb3JlIGluZm9ybWF0aW9uIG9uIFB5dGhvbiBpbiBnZW5lcmFsIGNhbiBiZSBmb3VuZCBhdAogaHR0cDovL3d3dy5weXRob24ub3JnLgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKaW5kZXggZDIwOWIxMC4uODZmYmY2MyAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCkBAIC0xLDggKzEsOCBAQAote1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMDM4XGNvY29hc3VicnRmMzUwCit7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjExMzhcY29jb2FzdWJydGY0NzAKIHtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTt9CiB7XGNvbG9ydGJsO1xyZWQyNTVcZ3JlZW4yNTVcYmx1ZTI1NTt9CiBccGFwZXJ3MTE5MDRccGFwZXJoMTY4MzZcbWFyZ2wxNDQwXG1hcmdyMTQ0MFx2aWV3dzk2NDBcdmlld2gxMDYyMFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccWxccW5hdHVyYWwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIAogXGIgUHl0aG9uICRGVUxMX1ZFUlNJT04KQEAgLTIwLDkgKzIwLDkgQEAKIFwKIAogXGIgTk9URTogCi1cYjAgVGhpcyBwYWNrYWdlIHdpbGwgYnkgZGVmYXVsdCBub3QgdXBkYXRlIHlvdXIgc2hlbGwgcHJvZmlsZSBhbmQgd2lsbCBhbHNvIG5vdCBpbnN0YWxsIGZpbGVzIGluIC91c3IvbG9jYWwuICBEb3VibGUtY2xpY2sgCitcYjAgVGhpcyBwYWNrYWdlIHdpbGwgbm90IHVwZGF0ZSB5b3VyIHNoZWxsIHByb2ZpbGUgYnkgZGVmYXVsdC4gIERvdWJsZS1jbGljayAKIFxiIFVwZGF0ZSBTaGVsbCBQcm9maWxlCi1cYjAgIGF0IGFueSB0aW1lIHRvIG1ha2UgJEZVTExfVkVSU0lPTiB0aGUgZGVmYXVsdCBQeXRob24uXAorXGIwICBhdCBhbnkgdGltZSB0byBtYWtlICRGVUxMX1ZFUlNJT04gdGhlIGRlZmF1bHQgUHl0aG9uIDMgdmVyc2lvbi4gIFRoaXMgdmVyc2lvbiBjYW4gY28tZXhpc3Qgd2l0aCBvdGhlciBpbnN0YWxsZWQgdmVyc2lvbnMgb2YgUHl0aG9uIDMgYW5kIFB5dGhvbiAyLlwKIFwKIAogXGIgSU1QT1JUQU5UOgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uCmluZGV4IDMxZmJmMmYuLmM0YmE2MTYgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZG9jdW1lbnRhdGlvbgorKysgYi9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmRvY3VtZW50YXRpb24KQEAgLTUsMTkgKzUsMTAgQEAKIEZXS19ET0NESVJfU1VCUEFUSD0iUmVzb3VyY2VzL0VuZ2xpc2gubHByb2ovRG9jdW1lbnRhdGlvbiIKIEZXS19ET0NESVI9IiR7RldLfS8ke0ZXS19ET0NESVJfU1VCUEFUSH0iCiBBUFBESVI9Ii9BcHBsaWNhdGlvbnMvUHl0aG9uICR7UFlWRVJ9IgotREVWX0RPQ0RJUj0iL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uIgogU0hBUkVfRElSPSIke0ZXS30vc2hhcmUiCiBTSEFSRV9ET0NESVI9IiR7U0hBUkVfRElSfS9kb2MvcHl0aG9uJHtQWVZFUn0iCiBTSEFSRV9ET0NESVJfVE9fRldLPSIuLi8uLi8uLiIKIAotIyBtYWtlIGxpbmsgaW4gL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uLyBmb3IgWGNvZGUgdXNlcnMKLWlmIFsgLWQgIiR7REVWX0RPQ0RJUn0iIF07IHRoZW4KLSAgICBpZiBbICEgLWQgIiR7REVWX0RPQ0RJUn0vUHl0aG9uIiBdOyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICIke0RFVl9ET0NESVJ9L1B5dGhvbiIKLSAgICBmaQotICAgIGxuIC1maHMgIiR7RldLX0RPQ0RJUn0iICIke0RFVl9ET0NESVJ9L1B5dGhvbi9SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAke1BZVkVSfSIKLWZpCi0KICMgbWFrZSBsaW5rIGluIC9BcHBsaWNhdGlvbnMvUHl0aG9uIG0ubi8gZm9yIEZpbmRlciB1c2VycwogaWYgWyAtZCAiJHtBUFBESVJ9IiBdOyB0aGVuCiAgICAgbG4gLWZocyAiJHtGV0tfRE9DRElSfS9pbmRleC5odG1sIiAiJHtBUFBESVJ9L1B5dGhvbiBEb2N1bWVudGF0aW9uLmh0bWwiCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yayBiL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCmluZGV4IDlmYzkxNTEuLmViMDgyOTcgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCisrKyBiL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCkBAIC04LDE0ICs4LDI0IEBACiAKICIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAotICAgIC14IGJhZHN5bnRheCAteCBzaXRlLXBhY2thZ2VzIFwKKyAgICAtZiAteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfSIKIAogIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLVdpIC1PIFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCi0gICAgLXggYmFkc3ludGF4IC14IHNpdGUtcGFja2FnZXMgXAorICAgIC1mIC14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9IgogCisiJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtV2kgXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIFwKKyAgICAtZiAteCBiYWRzeW50YXggXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L3NpdGUtcGFja2FnZXMiCisKKyIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSAtTyBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAorICAgIC1mIC14IGJhZHN5bnRheCBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vc2l0ZS1wYWNrYWdlcyIKKwogY2hncnAgLVIgYWRtaW4gIiR7RldLfSIKIGNobW9kIC1SIGcrdyAiJHtGV0t9IgogCmRpZmYgLS1naXQgYS9NYWMvTWFrZWZpbGUuaW4gYi9NYWMvTWFrZWZpbGUuaW4KaW5kZXggOGE2MmE5MC4uMzU0YzFmZCAxMDA2NDQKLS0tIGEvTWFjL01ha2VmaWxlLmluCisrKyBiL01hYy9NYWtlZmlsZS5pbgpAQCAtNDAsMTQgKzQwLDEzIEBACiBJTlNUQUxMX0RBVEE9QElOU1RBTExfREFUQUAKIExOPUBMTkAKIFNUUklQRkxBRz0tcwotQ1BNQUM9L0RldmVsb3Blci9Ub29scy9DcE1hYworQ1BNQUM9Q3BNYWMKIAogQVBQVEVNUExBVEU9JChzcmNkaXIpL1Jlc291cmNlcy9hcHAKLUFQUFNVQkRJUlM9TWFjT1MgUmVzb3VyY2VzIAorQVBQU1VCRElSUz1NYWNPUyBSZXNvdXJjZXMKIGNvbXBpbGVhbGw9JChzcmNkaXIpLy4uL0xpYi9jb21waWxlYWxsLnB5CiAKLWluc3RhbGxhcHBzOiBpbnN0YWxsX1B5dGhvbiBpbnN0YWxsX3B5dGhvbncgaW5zdGFsbF9QeXRob25MYXVuY2hlciBpbnN0YWxsX0lETEUgXAotCWNoZWNrYXBwbGVweXRob24KK2luc3RhbGxhcHBzOiBpbnN0YWxsX1B5dGhvbiBpbnN0YWxsX3B5dGhvbncgaW5zdGFsbF9QeXRob25MYXVuY2hlciBpbnN0YWxsX0lETEUKIAogaW5zdGFsbF9weXRob253OiBweXRob253CiAJJChJTlNUQUxMX1BST0dSQU0pICQoU1RSSVBGTEFHKSBweXRob253ICIkKERFU1RESVIpJChwcmVmaXgpL2Jpbi9weXRob253JChWRVJTSU9OKSIKQEAgLTcyLDcgKzcxLDcgQEAKIAlmb3IgZm4gaW4gcHl0aG9uMyBweXRob253MyBpZGxlMyBweWRvYzMgcHl0aG9uMy1jb25maWcgXAogCQkgIHB5dGhvbiQoVkVSU0lPTikgcHl0aG9udyQoVkVSU0lPTikgaWRsZSQoVkVSU0lPTikgXAogCQkgIHB5ZG9jJChWRVJTSU9OKSBweXRob24kKFZFUlNJT04pLWNvbmZpZyAydG8zIFwKLQkJICAydG8zLSQoVkVSU0lPTikgO1wKKwkJICAydG8zLSQoVkVSU0lPTikgcHl2ZW52IHB5dmVudi0kKFZFUlNJT04pIDtcCiAJZG8gXAogCQlsbiAtZnMgIiQocHJlZml4KS9iaW4vJCR7Zm59IiAiJChERVNURElSKSQoRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYKS9iaW4vJCR7Zm59IiA7XAogCWRvbmUKQEAgLTkzLDcgKzkyLDcgQEAKIAkJJChJTlNUQUxMKSAtZCAtbSAkKERJUk1PREUpICIkKERFU1RESVIpJChGUkFNRVdPUktVTklYVE9PTFNQUkVGSVgpL2JpbiIgO1wKIAlmaQogCWZvciBmbiBpbiBweXRob24kKFZFUlNJT04pIHB5dGhvbnckKFZFUlNJT04pIGlkbGUkKFZFUlNJT04pIFwKLQkJICBweWRvYyQoVkVSU0lPTikgcHl0aG9uJChWRVJTSU9OKS1jb25maWcgMnRvMy0kKFZFUlNJT04pO1wKKwkJICBweWRvYyQoVkVSU0lPTikgcHl0aG9uJChWRVJTSU9OKS1jb25maWcgMnRvMy0kKFZFUlNJT04pIHB5dmVudi0kKFZFUlNJT04pIDtcCiAJZG8gXAogCQlsbiAtZnMgIiQocHJlZml4KS9iaW4vJCR7Zm59IiAiJChERVNURElSKSQoRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYKS9iaW4vJCR7Zm59IiA7XAogCWRvbmUKQEAgLTE5NiwxNCArMTk1LDYgQEAKIAkJIiQoREVTVERJUikkKHByZWZpeCkvc2hhcmUvZG9jL3B5dGhvbiQoVkVSU0lPTikvZXhhbXBsZXMvVG9vbHMiIDsgXAogCQljaG1vZCAtUiB1Z28rclgsZ28tdyAiJChERVNURElSKSQocHJlZml4KS9zaGFyZS9kb2MvcHl0aG9uJChWRVJTSU9OKS9leGFtcGxlcy9Ub29scyIKIAotCi1jaGVja2FwcGxlcHl0aG9uOiAkKHNyY2RpcikvVG9vbHMvZml4YXBwbGVweXRob24yMy5weQotCUBpZiAhICQoUlVOU0hBUkVEKSAkKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvZml4YXBwbGVweXRob24yMy5weSAtbjsgdGhlbiBcCi0JCWVjaG8gIiogV0FSTklORzogQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgd2lsbCBoYXZlIHRyb3VibGUgYnVpbGRpbmcgZXh0ZW5zaW9ucyBmcm9tIG5vdyBvbi4iOyBcCi0JCWVjaG8gIiogV0FSTklORzogUnVuICQoc3JjZGlyKS9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5IHdpdGggXCJzdWRvXCIgdG8gZml4IHRoaXMuIjsgXAotCWZpCi0KLQogY2xlYW46CiAJcm0gcHl0aG9udwogCWNkIFB5dGhvbkxhdW5jaGVyICYmIG1ha2UgY2xlYW4KZGlmZiAtLWdpdCBhL01hYy9SRUFETUUgYi9NYWMvUkVBRE1FCmluZGV4IDY4NTNkYjQuLmY3YmM2YzMgMTAwNjQ0Ci0tLSBhL01hYy9SRUFETUUKKysrIGIvTWFjL1JFQURNRQpAQCAtMSw2ICsxLDEzIEBACi09PT09PT09PT09PT0KLU1hY09TWCBOb3RlcwotPT09PT09PT09PT09Cis9PT09PT09PT09PT09PT09PT09PT09PT09CitQeXRob24gb24gTWFjIE9TIFggUkVBRE1FCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKzpBdXRob3JzOgorICAgIEphY2sgSmFuc2VuICgyMDA0LTA3KSwKKyAgICBSb25hbGQgT3Vzc29yZW4gKDIwMTAtMDQpLAorICAgIE5lZCBEZWlseSAoMjAxMi0wNikKKworOlZlcnNpb246IDMuMy4wCiAKIFRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgYSBxdWljayBvdmVydmlldyBvZiBzb21lIE1hYyBPUyBYIHNwZWNpZmljIGZlYXR1cmVzIGluCiB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KQEAgLTEyLDExICsxOSwxMSBAQAogICBfYEJ1aWxkaW5nIGFuZCB1c2luZyBhIGZyYW1ld29yay1iYXNlZCBQeXRob24gb24gTWFjIE9TIFhgIGZvciBtb3JlIAogICBpbmZvcm1hdGlvbiBvbiBmcmFtZXdvcmtzLgogCi0gIElmIHRoZSBvcHRpb25hbCBkaXJlY3RvcnkgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBmcmFtZXdvcmsgaXQgaW5zdGFsbGVkCisgIElmIHRoZSBvcHRpb25hbCBkaXJlY3RvcnkgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBmcmFtZXdvcmsgaXMgaW5zdGFsbGVkCiAgIGludG8gdGhhdCBkaXJlY3RvcnkuIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5zdGFsbCBhIHB5dGhvbiBmcmFtZXdvcmsgaW50bwogICB5b3VyIGhvbWUgZGlyZWN0b3J5OjoKIAotICAgICAkIGNvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcms9L1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3MKKyAgICAgJCAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcms9L1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3MKICAgICAgJCBtYWtlICYmIG1ha2UgaW5zdGFsbAogCiAgIFRoaXMgd2lsbCBpbnN0YWxsIHRoZSBmcmFtZXdvcmsgaXRzZWxmIGluIGBgL1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3NgYCwKQEAgLTMzLDkgKzQwLDEwIEBACiAgIENyZWF0ZSBhIHVuaXZlcnNhbCBiaW5hcnkgYnVpbGQgb2Ygb2YgUHl0aG9uLiBUaGlzIGNhbiBiZSB1c2VkIHdpdGggYm90aAogICByZWd1bGFyIGFuZCBmcmFtZXdvcmsgYnVpbGRzLgogCi0gIFRoZSBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXMgd2hpY2ggT1NYIFNESyBzaG91bGQgYmUgdXNlZCB0byBwZXJmb3JtIHRoZQotICBidWlsZC4gVGhpcyBkZWZhdWx0cyB0byBgYC9EZXZlbG9wZXIvU0RLcy9NYWNPU1guMTAuNHUuc2RrYGAsIHNwZWNpZnkgCi0gIGBgL2BgIHdoZW4gYnVpbGRpbmcgb24gYSAxMC41IHN5c3RlbSwgZXNwZWNpYWxseSB3aGVuIGJ1aWxkaW5nIDY0LWJpdCBjb2RlLgorICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVzIHdoaWNoIE9TIFggU0RLIHNob3VsZCBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlCisgIGJ1aWxkLiAgSWYgeGNvZGVidWlsZCBpcyBhdmFpbGFibGUgYW5kIGNvbmZpZ3VyZWQsIHRoaXMgZGVmYXVsdHMgdG8KKyAgdGhlIFhjb2RlIGRlZmF1bHQgTWFjT1MgWCBTREssIG90aGVyd2lzZSBgYC9EZXZlbG9wZXIvU0RLcy9NYWNPU1guMTAuNHUuc2RrYGAKKyAgaWYgYXZhaWxhYmxlIG9yIGBgL2BgIGlmIG5vdC4KIAogICBTZWUgdGhlIHNlY3Rpb24gX2BCdWlsZGluZyBhbmQgdXNpbmcgYSB1bml2ZXJzYWwgYmluYXJ5IG9mIFB5dGhvbiBvbiBNYWMgT1MgWGAKICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCkBAIC00Myw3ICs1MSw5IEBACiAqIGBgLS13aXRoLXVuaXZlcmFsLWFyY2hzPVZBTFVFYGAKIAogICBTcGVjaWZ5IHRoZSBraW5kIG9mIHVuaXZlcnNhbCBiaW5hcnkgdGhhdCBzaG91bGQgYmUgY3JlYXRlZC4gVGhpcyBvcHRpb24gaXMgCi0gIG9ubHkgdmFsaWQgd2hlbiBgYC0tZW5hYmxlLXVuaXZlcnNhbHNka2BgIGlzIHNwZWNpZmllZC4KKyAgb25seSB2YWxpZCB3aGVuIGBgLS1lbmFibGUtdW5pdmVyc2Fsc2RrYGAgaXMgc3BlY2lmaWVkLiAgVGhlIGRlZmF1bHQgaXMKKyAgYGAzMi1iaXRgYCBpZiBhIGJ1aWxkaW5nIHdpdGggYSBTREsgdGhhdCBzdXBwb3J0cyBQUEMsIG90aGVyd2lzZSBkZWZhdWx0cworICB0byBgYGludGVsYGAuCiAKIAogQnVpbGRpbmcgYW5kIHVzaW5nIGEgdW5pdmVyc2FsIGJpbmFyeSBvZiBQeXRob24gb24gTWFjIE9TIFgKQEAgLTUyLDkgKzYyLDE0IEBACiAxLiBXaGF0IGlzIGEgdW5pdmVyc2FsIGJpbmFyeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkIG9mIFB5dGhvbiBjb250YWlucyBvYmplY3QgY29kZSBmb3IgYm90aCBQUEMgYW5kIGkzODYKLWFuZCBjYW4gdGhlcmVmb3JlIHJ1biBhdCBuYXRpdmUgc3BlZWQgb24gYm90aCBjbGFzc2ljIHBvd2VycGMgYmFzZWQgbWFjcyBhbmQKLXRoZSBuZXdlciBpbnRlbCBiYXNlZCBtYWNzLgorQSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkIG9mIFB5dGhvbiBjb250YWlucyBvYmplY3QgY29kZSBmb3IgbW9yZSB0aGFuIG9uZQorQ1BVIGFyY2hpdGVjdHVyZS4gIEEgdW5pdmVyc2FsIE9TIFggZXhlY3V0YWJsZSBmaWxlIG9yIGxpYnJhcnkgY29tYmluZXMgdGhlCithcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSBpbnRvIG9uZSBmaWxlIGFuZCBjYW4gdGhlcmVmb3JlIHJ1biBhdCBuYXRpdmUKK3NwZWVkIG9uIGFsbCBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy4gIFVuaXZlcnNhbCBmaWxlcyB3ZXJlIGludHJvZHVjZWQgaW4KK09TIFggMTAuNCB0byBhZGQgc3VwcG9ydCBmb3IgSW50ZWwtYmFzZWQgTWFjcyB0byB0aGUgZXhpc3RpbmcgUG93ZXJQQyAoUFBDKQorbWFjaGluZXMuICBJbiBPUyBYIDEwLjUgc3VwcG9ydCB3YXMgZXh0ZW5kZWQgdG8gNjQtYml0IEludGVsIGFuZCA2NC1iaXQgUFBDCithcmNoaXRlY3R1cmVzLiAgSXQgaXMgcG9zc2libGUgdG8gYnVpbGQgUHl0aG9uIHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMKK29mIGFyY2hpdGVjdHVyZXMgZGVwZW5kaW5nIG9uIHRoZSBidWlsZCB0b29scyBhbmQgT1MgWCB2ZXJzaW9uIGluIHVzZS4KIAogMi4gSG93IGRvIEkgYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTY3LDM4ICs4Miw1NSBAQAogICAkIG1ha2UgaW5zdGFsbAogCiBUaGlzIGZsYWcgY2FuIGJlIHVzZWQgd2l0aCBhIGZyYW1ld29yayBidWlsZCBvZiBweXRob24sIGJ1dCBhbHNvIHdpdGggYSBjbGFzc2ljCi11bml4IGJ1aWxkLiBFaXRoZXIgd2F5IHlvdSB3aWxsIGhhdmUgdG8gYnVpbGQgcHl0aG9uIG9uIE1hYyBPUyBYIDEwLjQgKG9yIGxhdGVyKQotd2l0aCBYY29kZSAyLjEgKG9yIGxhdGVyKS4gWW91IGFsc28gaGF2ZSB0byBpbnN0YWxsIHRoZSAxMC40dSBTREsgd2hlbiAKLWluc3RhbGxpbmcgWGNvZGUuCit1bml4IGJ1aWxkLiBVbml2ZXJzYWwgYnVpbGRzIHdlcmUgZmlyc3Qgc3VwcG9ydGVkIHdpdGggT1MgWCAxMC40IHdpdGggWGNvZGUgMi4xCithbmQgdGhlIDEwLjR1IFNESy4gIFN0YXJ0aW5nIHdpdGggWGNvZGUgMyBhbmQgT1MgWCAxMC41LCBtb3JlIGNvbmZpZ3VyYXRpb25zIGFyZQorYXZhaWxhYmxlLgogCi0yLjEgRmxhdm91cnMgb2YgdW5pdmVyc2FsIGJpbmFyaWVzCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisyLjEgRmxhdm9ycyBvZiB1bml2ZXJzYWwgYmluYXJpZXMKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCi1JdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIG51bWJlciBvZiBmbGF2b3VycyBvZiB0aGUgdW5pdmVyc2FsIGJpbmFyeSBidWlsZCwKLXRoZSBkZWZhdWx0IGlzIGEgMzItYml0IG9ubHkgYmluYXJ5IChpMzg2IGFuZCBwcGMpLiBUaGUgZmxhdm91ciBjYW4gYmUKLXNwZWNpZmllZCB1c2luZyB0aGUgb3B0aW9uIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNocz1WQUxVRWBgLiBUaGUgZm9sbG93aW5nCitJdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIG51bWJlciBvZiBmbGF2b3JzIG9mIHRoZSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkLAordGhlIGRlZmF1bHQgaXMgYSAzMi1iaXQgb25seSBiaW5hcnkgKGkzODYgYW5kIHBwYykgaW4gYnVpbGQgZW52aXJvbm1lbnRzIHRoYXQKK3N1cHBvcnQgcHBjICgxMC40IHdpdGggWGNvZGUgMiwgMTAuNSBhbmQgMTAuNiB3aXRoIFhjb2RlIDMpIG9yIGFuCitJbnRlbC0zMi8tNjQtYml0IGJpbmFyeSAoaTM4NiBhbmQgWDg2XzY0KSBpbiBidWlsZCBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QKK3N1cHBvcnQgcHBjIChYY29kZSA0IG9uIDEwLjYgYW5kIGxhdGVyIHN5c3RlbXMpLiAgVGhlIGZsYXZvciBjYW4gYmUgc3BlY2lmaWVkCit1c2luZyB0aGUgY29uZmlndXJlIG9wdGlvbiBgYC0td2l0aC11bml2ZXJzYWwtYXJjaHM9VkFMVUVgYC4gVGhlIGZvbGxvd2luZwogdmFsdWVzIGFyZSBhdmFpbGFibGU6CiAKKyAgKiBgYGludGVsYGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAKKwogICAqIGBgMzItYml0YGA6ICAgYGBwcGNgYCwgYGBpMzg2YGAKIAorICAqIGBgMy13YXlgYDoJICBgYGkzODZgYCwgYGB4ODZfNjRgYCwgYGBwcGNgYAorCiAgICogYGA2NC1iaXRgYDogICBgYHBwYzY0YGAsIGBgeDg2XzY0YGAKIAogICAqIGBgYWxsYGA6ICAgICAgYGBwcGNgYCwgYGBwcGM2NGBgLCBgYGkzODZgYCwgYGB4ODZfNjRgYAogCi0gICogYGAzLXdheWBgOgkgIGBgcHBjYGAsIGBgaTM4NmBgIGFuZCBgYHg4Nl82NGBgCi0KLSAgKiBgYGludGVsYGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAKLQogVG8gYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5IHRoYXQgaW5jbHVkZXMgYSA2NC1iaXQgYXJjaGl0ZWN0dXJlLCB5b3UgbXVzdCBidWlsZAotb24gYSBzeXN0ZW0gcnVubmluZyBPU1ggMTAuNSBvciBsYXRlci4gVGhlIGBgYWxsYGAgZmxhdm91ciBjYW4gb25seSBiZSBidWlsdCBvbgotT1NYIDEwLjUuCitvbiBhIHN5c3RlbSBydW5uaW5nIE9TIFggMTAuNSBvciBsYXRlci4gIFRoZSBgYGFsbGBgIGFuZCBgYDY0LWJpdGBgIGZsYXZvcnMgY2FuCitvbmx5IGJlIGJ1aWx0IHdpdGggYW4gMTAuNSBTREsgYmVjYXVzZSBgYHBwYzY0YGAgc3VwcG9ydCB3YXMgb25seSBpbmNsdWRlZCB3aXRoCitPUyBYIDEwLjUuICBBbHRob3VnaCBsZWdhY3kgYGBwcGNgYCBzdXBwb3J0IHdhcyBpbmNsdWRlZCB3aXRoIFhjb2RlIDMgb24gT1MgWAorMTAuNiwgaXQgd2FzIHJlbW92ZWQgaW4gWGNvZGUgNCwgdmVyc2lvbnMgb2Ygd2hpY2ggd2VyZSByZWxlYXNlZCBvbiBPUyBYIDEwLjYKK2FuZCB3aGljaCBpcyB0aGUgY3VycmVudCBzdGFuZGFyZCBmb3IgT1MgWCAxMC43IGFuZCAxMC44LiAgVG8gc3VtbWFyaXplLCB0aGUKK2ZvbGxvd2luZyBjb21iaW5hdGlvbnMgb2YgU0RLcyBhbmQgdW5pdmVyc2FsLWFyY2hzIGZsYXZvcnMgYXJlIGF2YWlsYWJsZToKIAotVGhlIG1ha2VmaWxlIGZvciBhIGZyYW1ld29yayBidWlsZCB3aWxsIGluc3RhbGwgYGBweXRob24zMmBgIGFuZCBgYHB5dGhvbnczMmBgIAotYmluYXJpZXMgd2hlbiB0aGUgdW5pdmVyc2FsIGFyY2hpdGVjdXJlcyBpbmNsdWRlcyBhdCBsZWFzdCBvbmUgMzItYml0IGFyY2hpdGVjdHVyZQotKHRoYXQgaXMsIGZvciBhbGwgZmxhdm91cnMgYnV0IGBgNjQtYml0YGApLgorICAqIDEwLjR1IFNESyB3aXRoIFhjb2RlIDIgc3VwcG9ydHMgYGAzMi1iaXRgYCBvbmx5CiAKLVJ1bm5pbmcgYSBzcGVjaWZpYyBhcmNoaWN0dXJlCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorICAqIDEwLjUgU0RLIHdpdGggWGNvZGUgMy4xLnggc3VwcG9ydHMgYWxsIGZsYXZvcnMKKworICAqIDEwLjYgU0RLIHdpdGggWGNvZGUgMy4yLnggc3VwcG9ydHMgYGBpbnRlbGBgLCBgYDMtd2F5YGAsIGFuZCBgYDMyLWJpdGBgCisKKyAgKiAxMC42IFNESyB3aXRoIFhjb2RlIDQgc3VwcG9ydHMgYGBpbnRlbGBgIG9ubHkKKworICAqIDEwLjcgYW5kIDEwLjggU0RLcyB3aXRoIFhjb2RlIDQgc3VwcG9ydCBgYGludGVsYGAgb25seQorCitUaGUgbWFrZWZpbGUgZm9yIGEgZnJhbWV3b3JrIGJ1aWxkIHdpbGwgYWxzbyBpbnN0YWxsIGBgcHl0aG9uMy4zLTMyYGAKK2JpbmFyaWVzIHdoZW4gdGhlIHVuaXZlcnNhbCBhcmNoaXRlY3R1cmUgaW5jbHVkZXMgYXQgbGVhc3Qgb25lIDMyLWJpdAorYXJjaGl0ZWN0dXJlICh0aGF0IGlzLCBmb3IgYWxsIGZsYXZvcnMgYnV0IGBgNjQtYml0YGApLgorCitSdW5uaW5nIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKIFlvdSBjYW4gcnVuIGNvZGUgdXNpbmcgYSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgdXNpbmcgdGhlIGBgYXJjaGBgIGNvbW1hbmQ6OgogCkBAIC0xMTMsNiArMTQ1LDE0IEBACiB3cmFwcGVyIHRvb2xzIHRoYXQgZXhlY3V0ZSB0aGUgcmVhbCBpbnRlcnByZXRlciB3aXRob3V0IGVuc3VyaW5nIHRoYXQgdGhlCiByZWFsIGludGVycHJldGVyIHJ1bnMgd2l0aCB0aGUgc2FtZSBhcmNoaXRlY3R1cmUuCiAKK1VzaW5nIGBgYXJjaGBgIGlzIG5vdCBhIHBlcmZlY3Qgc29sdXRpb24gYXMgdGhlIHNlbGVjdGVkIGFyY2hpdGVjdHVyZSB3aWxsCitub3QgYXV0b21hdGljYWxseSBjYXJyeSB0aHJvdWdoIHRvIHN1YnByb2Nlc3NlcyBsYXVuY2hlZCBieSBwcm9ncmFtcyBhbmQgdGVzdHMKK3VuZGVyIHRoYXQgUHl0aG9uLiAgSWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgUHl0aG9uIGludGVycHJldGVycyBsYXVuY2hlZCBpbgorc3VicHJvY2Vzc2VzIGFsc28gcnVuIGluIDMyLWJpdC1tb2RlIGlmIHRoZSBtYWluIGludGVycHJldGVyIGRvZXMsIHVzZQorYSBgYHB5dGhvbjMuMy0zMmBgIGJpbmFyeSBhbmQgdXNlIHRoZSB2YWx1ZSBvZiBgYHN5cy5leGVjdXRhYmxlYGAgYXMgdGhlCitgYHN1YnByb2Nlc3NgYCBgYFBvcGVuYGAgZXhlY3V0YWJsZSB2YWx1ZS4KKworCiBCdWlsZGluZyBhbmQgdXNpbmcgYSBmcmFtZXdvcmstYmFzZWQgUHl0aG9uIG9uIE1hYyBPUyBYLgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtMTIyLDE3ICsxNjIsMTcgQEAKIAogVGhlIG1haW4gcmVhc29uIGlzIGJlY2F1c2UgeW91IHdhbnQgdG8gY3JlYXRlIEdVSSBwcm9ncmFtcyBpbiBQeXRob24uIFdpdGggdGhlCiBleGNlcHRpb24gb2YgWDExL1hEYXJ3aW4tYmFzZWQgR1VJIHRvb2xraXRzIGFsbCBHVUkgcHJvZ3JhbXMgbmVlZCB0byBiZSBydW4gCi1mcm9tIGEgZnVsbGJsb3duIE1hY09TWCBhcHBsaWNhdGlvbiAoYSAiLmFwcCIgYnVuZGxlKS4KK2Zyb20gYSBNYWMgT1NYIGFwcGxpY2F0aW9uIGJ1bmRsZSAoIi5hcHAiKS4KIAogV2hpbGUgaXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY3JlYXRlIGEgLmFwcCB3aXRob3V0IHVzaW5nIGZyYW1ld29ya3MgeW91CiB3aWxsIGhhdmUgdG8gZG8gdGhlIHdvcmsgeW91cnNlbGYgaWYgeW91IHJlYWxseSB3YW50IHRoaXMuCiAKIEEgc2Vjb25kIHJlYXNvbiBmb3IgdXNpbmcgZnJhbWV3b3JrcyBpcyB0aGF0IHRoZXkgcHV0IFB5dGhvbi1yZWxhdGVkIGl0ZW1zIGluCiBvbmx5IHR3byBwbGFjZXM6ICIvTGlicmFyeS9GcmFtZXdvcmsvUHl0aG9uLmZyYW1ld29yayIgYW5kIAotIi9BcHBsaWNhdGlvbnMvTWFjUHl0aG9uIDxWRVJTSU9OPiIgd2hlcmUgYGA8VkVSU0lPTj5gYCBjYW4gYmUgZS5nLiAiMi42IiwKLSIzLjEiLCBldGMuLiAgVGhpcyBzaW1wbGlmaWVzIG1hdHRlcnMgZm9yIHVzZXJzIGluc3RhbGxpbmcgCisiL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+IiB3aGVyZSBgYDxWRVJTSU9OPmBgIGNhbiBiZSBlLmcuICIzLjMiLAorIjIuNyIsIGV0Yy4gIFRoaXMgc2ltcGxpZmllcyBtYXR0ZXJzIGZvciB1c2VycyBpbnN0YWxsaW5nCiBQeXRob24gZnJvbSBhIGJpbmFyeSBkaXN0cmlidXRpb24gaWYgdGhleSB3YW50IHRvIGdldCByaWQgb2YgaXQgYWdhaW4uIE1vcmVvdmVyLAotZHVlIHRvIHRoZSB3YXkgZnJhbWV3b3JrcyB3b3JrIGEgdXNlciB3aXRob3V0IGFkbWluIHByaXZpbGVnZXMgY2FuIGluc3RhbGwgYSAKK2R1ZSB0byB0aGUgd2F5IGZyYW1ld29ya3Mgd29yaywgYSB1c2VyIHdpdGhvdXQgYWRtaW4gcHJpdmlsZWdlcyBjYW4gaW5zdGFsbCBhCiBiaW5hcnkgZGlzdHJpYnV0aW9uIGluIGhpcyBvciBoZXIgaG9tZSBkaXJlY3Rvcnkgd2l0aG91dCByZWNvbXBpbGF0aW9uLgogCiAyLiBIb3cgZG9lcyBhIGZyYW1ld29yayBQeXRob24gZGlmZmVyIGZyb20gYSBub3JtYWwgc3RhdGljIFB5dGhvbj8KQEAgLTE0OCwxOCArMTg4LDI1IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFllcywgcHJvYmFibHkuICBJZiB5b3Ugd2FudCBUa2ludGVyIHN1cHBvcnQgeW91IG5lZWQgdG8gZ2V0IHRoZSBPU1ggQXF1YVRrIAotZGlzdHJpYnV0aW9uLCB0aGlzIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0IG9uIE1hYyBPUyBYIDEwLjQgb3IgbGF0ZXIuIElmCi15b3Ugd2FudCB3eFB5dGhvbiB5b3UgbmVlZCB0byBnZXQgdGhhdC4gSWYgeW91IHdhbnQgQ29jb2EgeW91IG5lZWQgdG8gZ2V0Ci1QeU9iakMuIAorZGlzdHJpYnV0aW9uLCB0aGlzIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0IG9uIE1hYyBPUyBYIDEwLjQgb3IgbGF0ZXIuICBCZQorYXdhcmUsIHRob3VnaCwgdGhhdCB0aGUgQ29jb2EtYmFzZWQgQXF1YVRrJ3Mgc3VwcGxpZWQgc3RhcnRpbmcgd2l0aCBPUyBYCisxMC42IGhhdmUgcHJvdmVuIHRvIGJlIHVuc3RhYmxlLiAgSWYgcG9zc2libGUsIHlvdSBzaG91bGQgY29uc2lkZXIKK2luc3RhbGxpbmcgYSBuZXdlciB2ZXJzaW9uIGJlZm9yZSBidWlsZGluZyBvbiBPUyBYIDEwLjYgb3IgbGF0ZXIsIHN1Y2ggYXMKK3RoZSBBY3RpdmVUY2wgOC41LiAgU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvLiAgSWYgeW91CithcmUgYnVpbGRpbmcgd2l0aCBhbiBTREssIGVuc3VyZSB0aGF0IHRoZSBuZXdlciBUY2wgYW5kIFRrIGZyYW1ld29ya3MgYXJlCitzZWVuIGluIHRoZSBTREsncyBgYExpYnJhcnkvRnJhbWV3b3Jrc2BgIGRpcmVjdG9yeTsgeW91IG1heSBuZWVkIHRvCittYW51YWxseSBjcmVhdGUgc3ltbGlua3MgdG8gdGhlaXIgaW5zdGFsbGVkIGxvY2F0aW9uLCBgYC9MaWJyYXJ5L0ZyYW1ld29ya3NgYC4KK0lmIHlvdSB3YW50IHd4UHl0aG9uIHlvdSBuZWVkIHRvIGdldCB0aGF0LgorSWYgeW91IHdhbnQgQ29jb2EgeW91IG5lZWQgdG8gZ2V0IFB5T2JqQy4KIAogNC4gSG93IGRvIEkgYnVpbGQgYSBmcmFtZXdvcmsgUHl0aG9uPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhIE1ha2VmaWxlIHRoYXQgd2lsbCBjcmVhdGUgYSBjb3VwbGUgb2YgcHl0aG9uLXJlbGF0ZWQKLWFwcGxpY2F0aW9ucyAoZnVsbGJsb3duIE9TWCAuYXBwIGFwcGxpY2F0aW9ucywgdGhhdCBpcykgaW4KLSIvQXBwbGljYXRpb25zL01hY1B5dGhvbiA8VkVSU0lPTj4iLCBhbmQgYSBoaWRkZW4gaGVscGVyIGFwcGxpY2F0aW9uIFB5dGhvbi5hcHAgCi1pbnNpZGUgdGhlIFB5dGhvbi5mcmFtZXdvcmssIGFuZCB1bml4IHRvb2xzICJweXRob24iIGFuZCAicHl0aG9udyIgaW50byAKLS91c3IvbG9jYWwvYmluLiAgSW4gYWRkaXRpb24gaXQgaGFzIGEgdGFyZ2V0ICJpbnN0YWxsbWFjc3VidHJlZSIgdGhhdCBpbnN0YWxscyAKK2FwcGxpY2F0aW9ucyAoZnVsbC1ibG93biBPU1ggLmFwcCBhcHBsaWNhdGlvbnMsIHRoYXQgaXMpIGluCisiL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+IiwgYW5kIGEgaGlkZGVuIGhlbHBlciBhcHBsaWNhdGlvbiBQeXRob24uYXBwCitpbnNpZGUgdGhlIFB5dGhvbi5mcmFtZXdvcmssIGFuZCB1bml4IHRvb2xzICJweXRob24iIGFuZCAicHl0aG9udyIgaW50bworL3Vzci9sb2NhbC9iaW4uICBJbiBhZGRpdGlvbiBpdCBoYXMgYSB0YXJnZXQgImluc3RhbGxtYWNzdWJ0cmVlIiB0aGF0IGluc3RhbGxzCiB0aGUgcmVsZXZhbnQgcG9ydGlvbnMgb2YgdGhlIE1hYyBzdWJ0cmVlIGludG8gdGhlIFB5dGhvbi5mcmFtZXdvcmsuCiAKIEl0IGlzIG5vcm1hbGx5IGludm9rZWQgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSBtYWluIE1ha2VmaWxlLCBhcyB0aGUgbGFzdCBzdGVwCkBAIC0xNzEsMTcgKzIxOCwxNSBAQAogIAogIDMuIG1ha2UgaW5zdGFsbAogCi1UaGlzIHNlcXVlbmNlIHdpbGwgcHV0IHRoZSBmcmFtZXdvcmsgaW4gL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmssCi10aGUgYXBwbGljYXRpb25zIGluICIvQXBwbGljYXRpb25zL01hY1B5dGhvbiA8VkVSU0lPTj4iIGFuZCB0aGUgdW5peCB0b29scyBpbiAKLS91c3IvbG9jYWwvYmluLgorVGhpcyBzZXF1ZW5jZSB3aWxsIHB1dCB0aGUgZnJhbWV3b3JrIGluIGBgL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmtgYCwKK3RoZSBhcHBsaWNhdGlvbnMgaW4gYGAvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj5gYCBhbmQgdGhlIHVuaXggdG9vbHMgaW4gCitgYC91c3IvbG9jYWwvYmluYGAuCiAKLUluc3RhbGxpbmcgaW4gYW5vdGhlciBwbGFjZSwgZm9yIGluc3RhbmNlICRIT01FL0xpYnJhcnkvRnJhbWV3b3JrcyBpZiB5b3UgaGF2ZQotbm8gYWRtaW4gcHJpdmlsZWdlcyBvbiB5b3VyIG1hY2hpbmUsIGhhcyBvbmx5IGJlZW4gdGVzdGVkIHZlcnkgbGlnaHRseS4gVGhpcwotY2FuIGJlIGRvbmUgYnkgY29uZmlndXJpbmcgd2l0aCAtLWVuYWJsZS1mcmFtZXdvcms9JEhPTUUvTGlicmFyeS9GcmFtZXdvcmtzLgotVGhlIG90aGVyIHR3byBkaXJlY3RvcmllcywgIi9BcHBsaWNhdGlvbnMvTWFjUHl0aG9uLTxWRVJTSU9OPiIgYW5kCi0vdXNyL2xvY2FsL2Jpbiwgd2lsbCB0aGVuIGFsc28gYmUgZGVwb3NpdGVkIGluICRIT01FLiBUaGlzIGlzIHN1Yi1vcHRpbWFsIGZvcgotdGhlIHVuaXggdG9vbHMsIHdoaWNoIHlvdSB3b3VsZCB3YW50IGluICRIT01FL2JpbiwgYnV0IHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvCi1maXggdGhpcyByaWdodCBub3cuCitJbnN0YWxsaW5nIGluIGFub3RoZXIgcGxhY2UsIGZvciBpbnN0YW5jZSBgYCRIT01FL0xpYnJhcnkvRnJhbWV3b3Jrc2BgIGlmIHlvdQoraGF2ZSBubyBhZG1pbiBwcml2aWxlZ2VzIG9uIHlvdXIgbWFjaGluZSwgaXMgcG9zc2libGUuIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZAorYnkgY29uZmlndXJpbmcgd2l0aCBgYC0tZW5hYmxlLWZyYW1ld29yaz0kSE9NRS9MaWJyYXJ5L0ZyYW1ld29ya3NgYC4KK1RoZSBvdGhlciB0d28gZGlyZWN0b3JpZXMgd2lsbCB0aGVuIGFsc28gYmUgaW5zdGFsbGVkIGluIHlvdXIgaG9tZSBkaXJlY3RvcnksCithdCBgYCRIT01FL0FwcGxpY2F0aW9ucy9QeXRob24tPFZFUlNJT04+YGAgYW5kIGBgJEhPTUUvYmluYGAuCiAKIElmIHlvdSB3YW50IHRvIGluc3RhbGwgc29tZSBwYXJ0LCBidXQgbm90IGFsbCwgcmVhZCB0aGUgbWFpbiBNYWtlZmlsZS4gVGhlCiBmcmFtZXdvcmtpbnN0YWxsIGlzIGNvbXBvc2VkIG9mIGEgY291cGxlIG9mIHN1Yi10YXJnZXRzIHRoYXQgaW5zdGFsbCB0aGUKQEAgLTE4OSw3ICsyMzQsNyBAQAogCiBUaGVyZSBpcyBhbiBleHRyYSB0YXJnZXQgZnJhbWV3b3JraW5zdGFsbGV4dHJhcyB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZQogbm9ybWFsIGZyYW1ld29ya2luc3RhbGwgd2hpY2ggaW5zdGFsbHMgdGhlIFRvb2xzIGRpcmVjdG9yeSBpbnRvCi0iL0FwcGxpY2F0aW9ucy9NYWNQeXRob24gPFZFUlNJT04+IiwgdGhpcyBpcyB1c2VmdWwgZm9yIGJpbmFyeQorIi9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPiIsIHRoaXMgaXMgdXNlZnVsIGZvciBiaW5hcnkKIGRpc3RyaWJ1dGlvbnMuCiAKIFdoYXQgZG8gYWxsIHRoZXNlIHByb2dyYW1zIGRvPwpAQCAtMjAyLDI0ICsyNDcsNDEgQEAKIGRvdWJsZS1jbGljayBhIC5weSwgLnB5YyBvciAucHl3IGZpbGUuIEZvciB0aGUgZmlyc3QgdHdvIGl0IGNyZWF0ZXMgYSBUZXJtaW5hbAogd2luZG93IGFuZCBydW5zIHRoZSBzY3JpcHRzIHdpdGggdGhlIG5vcm1hbCBjb21tYW5kLWxpbmUgUHl0aG9uLiBGb3IgdGhlCiBsYXR0ZXIgaXQgcnVucyB0aGUgc2NyaXB0IGluIHRoZSBQeXRob24uYXBwIGludGVycHJldGVyIHNvIHRoZSBzY3JpcHQgY2FuIGRvCi1HVUktdGhpbmdzLiBLZWVwIHRoZSAiYWx0IiBrZXkgZGVwcmVzc2VkIHdoaWxlIGRyYWdnaW5nIG9yIGRvdWJsZS1jbGlja2luZyBhCi1zY3JpcHQgdG8gc2V0IHJ1bnRpbWUgb3B0aW9ucy4gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgc2V0IG9uY2UgYW5kIGZvciBhbGwKK0dVSS10aGluZ3MuIEtlZXAgdGhlIGBgT3B0aW9uYGAga2V5IGRlcHJlc3NlZCB3aGlsZSBkcmFnZ2luZyBvciBkb3VibGUtY2xpY2tpbmcKK2Egc2NyaXB0IHRvIHNldCBydW50aW1lIG9wdGlvbnMuIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHNldCBwZXJzaXN0ZW50bHkKIHRocm91Z2ggUHl0aG9uTGF1bmNoZXIncyBwcmVmZXJlbmNlcyBkaWFsb2cuCiAKLVRoZSBjb21tYW5kbGluZSBzY3JpcHRzIC91c3IvbG9jYWwvYmluL3B5dGhvbiBhbmQgcHl0aG9udyBjYW4gYmUgdXNlZCB0byBydW4KLW5vbi1HVUkgYW5kIEdVSSBweXRob24gc2NyaXB0cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHJlc3BlY3RpdmVseS4KK1RoZSBwcm9ncmFtIGBgcHl0aG9ueC54YGAgcnVucyBweXRob24gc2NyaXB0cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBWYXJpb3VzCitjb21wYXRpYmlsaXR5IGFsaWFzZXMgYXJlIGFsc28gaW5zdGFsbGVkLCBpbmNsdWRpbmcgYGBweXRob253eC54YGAgd2hpY2gKK2luIGVhcmx5IHJlbGVhc2VzIG9mIFB5dGhvbiBvbiBPUyBYIHdhcyByZXF1aXJlZCB0byBydW4gR1VJIHByb2dyYW1zLiAgSW4KK2N1cnJlbnQgcmVsZWFzZXMsIHRoZSBgYHB5dGhvbngueGBgIGFuZCBgYHB5dGhvbnd4LnhgYCBjb21tYW5kcyBhcmUgaWRlbnRpY2FsLgogCiBIb3cgZG8gSSBjcmVhdGUgYSBiaW5hcnkgZGlzdHJpYnV0aW9uPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotR28gdG8gdGhlIGRpcmVjdG9yeSAiTWFjL09TWC9CdWlsZFNjcmlwdCIuIFRoZXJlIHlvdSdsbCBmaW5kIGEgc2NyaXB0IAotImJ1aWxkLWluc3RhbGxlci5weSIgdGhhdCBkb2VzIGFsbCB0aGUgd29yay4gVGhpcyB3aWxsIGRvd25sb2FkIGFuZCBidWlsZAorRG93bmxvYWQgYW5kIHVucGFjayB0aGUgc291cmNlIHJlbGVhc2UgZnJvbSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvLgorR28gdG8gdGhlIGRpcmVjdG9yeSBgYE1hYy9CdWlsZFNjcmlwdGBgLiBUaGVyZSB5b3Ugd2lsbCBmaW5kIGEgc2NyaXB0CitgYGJ1aWxkLWluc3RhbGxlci5weWBgIHRoYXQgZG9lcyBhbGwgdGhlIHdvcmsuIFRoaXMgd2lsbCBkb3dubG9hZCBhbmQgYnVpbGQKIGEgbnVtYmVyIG9mIDNyZC1wYXJ0eSBsaWJhcmllcywgY29uZmlndXJlcyBhbmQgYnVpbGRzIGEgZnJhbWV3b3JrIFB5dGhvbiwKIGluc3RhbGxzIGl0LCBjcmVhdGVzIHRoZSBpbnN0YWxsZXIgcGFja2FnZSBmaWxlcyBhbmQgdGhlbiBwYWNrcyB0aGlzIGluIGEKLURNRyBpbWFnZS4KK0RNRyBpbWFnZS4gIFRoZSBzY3JpcHQgYWxzbyBidWlsZHMgYW4gSFRNTCBjb3B5IG9mIHRoZSBjdXJyZW50IFB5dGhvbgorZG9jdW1lbnRhdGlvbiBzZXQgZm9yIHRoaXMgcmVsZWFzZSBmb3IgaW5jbHVzaW9uIGluIHRoZSBmcmFtZXdvcmsuICBUaGUKK2luc3RhbGxlciBwYWNrYWdlIHdpbGwgY3JlYXRlIGxpbmtzIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB1c2UgYnkgSURMRSwKK3B5ZG9jLCBzaGVsbCB1c2VycywgYW5kIEZpbmRlciB1c2VyLgogCi1UaGUgc2NyaXB0IHdpbGwgYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5LCB5b3UnbGwgdGhlcmVmb3JlIGhhdmUgdG8gcnVuIHRoaXMKK1RoZSBzY3JpcHQgd2lsbCBidWlsZCBhIHVuaXZlcnNhbCBiaW5hcnkgc28geW91J2xsIHRoZXJlZm9yZSBoYXZlIHRvIHJ1biB0aGlzCiBzY3JpcHQgb24gTWFjIE9TIFggMTAuNCBvciBsYXRlciBhbmQgd2l0aCBYY29kZSAyLjEgb3IgbGF0ZXIgaW5zdGFsbGVkLgorSG93ZXZlciwgdGhlIFB5dGhvbiBidWlsZCBwcm9jZXNzIGl0c2VsZiBoYXMgc2V2ZXJhbCBidWlsZCBkZXBlbmRlbmNpZXMgbm90CithdmFpbGFibGUgb3V0IG9mIHRoZSBib3ggd2l0aCBPUyBYIDEwLjQgc28geW91IG1heSBoYXZlIHRvIGluc3RhbGwKK2FkZGl0aW9uYWwgc29mdHdhcmUgYmV5b25kIHdoYXQgaXMgcHJvdmlkZWQgd2l0aCBYY29kZSAyLiAgT1MgWCAxMC41Citwcm92aWRlcyBhIHJlY2VudCBlbm91Z2ggc3lzdGVtIFB5dGhvbiAoaW4gYGAvdXNyL2JpbmBgKSB0byBidWlsZAordGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIHNldC4gIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB1c2UgU0RLcyBhbmQvb3Igb2xkZXIKK3ZlcnNpb25zIG9mIFhjb2RlIHRvIGJ1aWxkIGluc3RhbGxlcnMgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIG9sZGVyIHN5c3RlbXMKK29uIGEgbmV3ZXIgc3lzdGVtIGJ1dCB0aGlzIG1heSBub3QgYmUgY29tcGxldGVseSBmb29scHJvb2Ygc28gdGhlIHJlc3VsdGluZworZXhlY3V0YWJsZXMsIHNoYXJlZCBsaWJyYXJpZXMsIGFuZCBgYC5zb2BgIGJ1bmRsZXMgc2hvdWxkIGJlIGNhcmVmdWxseQorZXhhbWluZWQgYW5kIHRlc3RlZCBvbiBhbGwgc3VwcG9ydGVkIHN5c3RlbXMgZm9yIHByb3BlciBkeW5hbWljIGxpbmtpbmcKK2RlcGVuZGVuY2llcy4gIEl0IGlzIHNhZmVzdCB0byBidWlsZCB0aGUgZGlzdHJpYnV0aW9uIG9uIGEgc3lzdGVtIHJ1bm5pbmcgdGhlCittaW5pbXVtIE9TIFggdmVyc2lvbiBzdXBwb3J0ZWQuCiAKIEFsbCBvZiB0aGlzIGlzIG5vcm1hbGx5IGRvbmUgY29tcGxldGVseSBpc29sYXRlZCBpbiAvdG1wL19weSwgc28gaXQgZG9lcyBub3QKIHVzZSB5b3VyIG5vcm1hbCBidWlsZCBkaXJlY3Rvcnkgbm9yIGRvZXMgaXQgaW5zdGFsbCBpbnRvIC8uCkBAIC0yNDQsNyArMzA2LDcgQEAKICAgIGNvbmZpZ3VyZTogV0FSTklORzogICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiAKIFRoaXMgYWxtb3N0IGFsd2F5cyBtZWFucyB5b3UgYXJlIHRyeWluZyB0byBidWlsZCBhIHVuaXZlcnNhbCBiaW5hcnkgZm9yCi1QeXRob24gYW5kIGhhdmUgbGliYXJpZXMgaW4gYGAvdXNyL2xvY2FsYGAgdGhhdCBkb24ndCBjb250YWluIHRoZSByZXF1aXJlZAorUHl0aG9uIGFuZCBoYXZlIGxpYnJhcmllcyBpbiBgYC91c3IvbG9jYWxgYCB0aGF0IGRvbid0IGNvbnRhaW4gdGhlIHJlcXVpcmVkCiBhcmNoaXRlY3R1cmVzLiBUZW1wb3JhcmlseSBtb3ZlIGBgL3Vzci9sb2NhbGBgIGFzaWRlIHRvIGZpbmlzaCB0aGUgYnVpbGQuCiAKIApAQCAtMjUzLDcgKzMxNSw3IEBACiAKIFVuaW5zdGFsbGluZyBhIGZyYW1ld29yayBjYW4gYmUgZG9uZSBieSBtYW51YWxseSByZW1vdmluZyBhbGwgYml0cyB0aGF0IGdvdCBpbnN0YWxsZWQuCiBUaGF0J3MgdHJ1ZSBmb3IgYm90aCBpbnN0YWxsYXRpb25zIGZyb20gc291cmNlIGFuZCBpbnN0YWxsYXRpb25zIHVzaW5nIHRoZSBiaW5hcnkgaW5zdGFsbGVyLgotU2FkbHkgZW5vdWdoIE9TWCBkb2VzIG5vdCBoYXZlIGEgY2VudHJhbCB1bmluc3RhbGxlci4KK09TIFggZG9lcyBub3QgcHJvdmlkZSBhIGNlbnRyYWwgdW5pbnN0YWxsZXIuCiAKIFRoZSBtYWluIGJpdCBvZiBhIGZyYW1ld29yayBpbnN0YWxsIGlzIHRoZSBmcmFtZXdvcmsgaXRzZWxmLCBpbnN0YWxsZWQgaW4KIGBgL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrYGAuIFRoaXMgY2FuIGNvbnRhaW4gbXVsdGlwbGUgdmVyc2lvbnMKQEAgLTI2NywxNCArMzI5LDEyIEBACiBBbmQgbGFzdGx5IGEgZnJhbWV3b3JrIGluc3RhbGxhdGlvbiBpbnN0YWxscyBmaWxlcyBpbiBgYC91c3IvbG9jYWwvYmluYGAsIGFsbCBvZgogdGhlbSBzeW1ib2xpYyBsaW5rcyB0byBmaWxlcyBpbiBgYC9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy9YLlkvYmluYGAuCiAKLU9kZHMgYW5kIGVuZHMKLT09PT09PT09PT09PT0KIAotU29tZXRoaW5nIHRvIHRha2Ugbm90ZSBvZiBpcyB0aGF0IHRoZSAiLnJzcmMiIGZpbGVzIGluIHRoZSBkaXN0cmlidXRpb24gYXJlCi1ub3QgYWN0dWFsbHkgcmVzb3VyY2UgZmlsZXMsIHRoZXkncmUgQXBwbGVTaW5nbGUgZW5jb2RlZCByZXNvdXJjZSBmaWxlcy4gVGhlCi1tYWNyZXNvdXJjZSBtb2R1bGUgYW5kIHRoZSBNYWMvT1NYL01ha2VmaWxlIGNhdGVyIGZvciB0aGlzLCBhbmQgY3JlYXRlCi0iLnJzcmMuZGYucnNyYyIgZmlsZXMgb24gdGhlIGZseSB0aGF0IGFyZSBub3JtYWwgZGF0YWZvcmstYmFzZWQgcmVzb3VyY2UKLWZpbGVzLgorUmVzb3VyY2VzCis9PT09PT09PT0KIAotCUphY2sgSmFuc2VuLCBKYWNrLkphbnNlbkBjd2kubmwsIDE1LUp1bC0yMDA0LgotCVJvbmFsZCBPdXNzb3JlbiwgUm9uYWxkT3Vzc29yZW5AbWFjLmNvbSwgMzAtQXByaWwtMjAxMAorICAqICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjLworCisgICogIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9jb21tdW5pdHkvc2lncy9jdXJyZW50L3B5dGhvbm1hYy1zaWcvCisKKyAgKiAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvZml4YXBwbGVweXRob24yMy5weSBiL01hYy9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGI5NWIzLi4wMDAwMDAwCi0tLSBhL01hYy9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0iIiJmaXhhcHBsZXB5dGhvbjIzIC0gRml4IEFwcGxlLWluc3RhbGxlZCBQeXRob24gMi4zIChvbiBNYWMgT1MgWCAxMC4zKQotCi1QeXRob24gMi4zIChhbmQgMi4zLlggZm9yIFg8NSkgaGF2ZSB0aGUgcHJvYmxlbSB0aGF0IGJ1aWxkaW5nIGFuIGV4dGVuc2lvbgotZm9yIGEgZnJhbWV3b3JrIGluc3RhbGxhdGlvbiBtYXkgYWNjaWRlbnRhbGx5IHBpY2sgdXAgdGhlIGZyYW1ld29yawotb2YgYSBuZXdlciBQeXRob24sIGluIHN0ZWFkIG9mIHRoZSBvbmUgdGhhdCB3YXMgdXNlZCB0byBidWlsZCB0aGUgZXh0ZW5zaW9uLgotCi1UaGlzIHNjcmlwdCBtb2RpZmllcyB0aGUgTWFrZWZpbGUgKGluIC4uLi9saWIvcHl0aG9uMi4zL2NvbmZpZykgdG8gdXNlCi10aGUgbmV3ZXIgbWV0aG9kIG9mIGxpbmtpbmcgZXh0ZW5zaW9ucyB3aXRoICItdW5kZWZpbmVkIGR5bmFtaWNfbG9va3VwIgotd2hpY2ggZml4ZXMgdGhpcyBwcm9ibGVtLgotCi1UaGUgc2NyaXB0IHdpbGwgZmlyc3QgY2hlY2sgYWxsIHByZXJlcXVpc2l0ZXMsIGFuZCByZXR1cm4gYSB6ZXJvIGV4aXQKLXN0YXR1cyBhbHNvIHdoZW4gbm90aGluZyBuZWVkcyB0byBiZSBmaXhlZC4KLSIiIgotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgcGxhdGZvcm0KLQotTUFLRUZJTEU9Jy9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvMi4zL2xpYi9weXRob24yLjMvY29uZmlnL01ha2VmaWxlJwotQ0hBTkdFUz0oKAotICAgICdMRFNIQVJFRD1cdCQoQ0MpICQoTERGTEFHUykgLWJ1bmRsZSAtZnJhbWV3b3JrICQoUFlUSE9ORlJBTUVXT1JLKVxuJywKLSAgICAnTERTSEFSRUQ9XHQkKENDKSAkKExERkxBR1MpIC1idW5kbGUgLXVuZGVmaW5lZCBkeW5hbWljX2xvb2t1cFxuJwotICAgICksKAotICAgICdCTERTSEFSRUQ9XHQkKENDKSAkKExERkxBR1MpIC1idW5kbGUgLWZyYW1ld29yayAkKFBZVEhPTkZSQU1FV09SSylcbicsCi0gICAgJ0JMRFNIQVJFRD1cdCQoQ0MpICQoTERGTEFHUykgLWJ1bmRsZSAtdW5kZWZpbmVkIGR5bmFtaWNfbG9va3VwXG4nCi0gICAgKSwoCi0gICAgJ0NDPVx0XHRnY2NcbicsCi0gICAgJ0NDPVx0XHQvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nY2NcbicKLSAgICApLCgKLSAgICAnQ1hYPVx0XHRjKytcbicsCi0gICAgJ0NYWD1cdFx0L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjMvbGliL3B5dGhvbjIuMy9jb25maWcvUGFudGhlclB5dGhvbkZpeC9ydW4tZysrXG4nCi0pKQotCi1HQ0NfU0NSSVBUPScvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nY2MnCi1HWFhfU0NSSVBUPScvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nKysnCi1TQ1JJUFQ9IiIiIyEvYmluL3NoCi1leHBvcnQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjMKLWV4ZWMgJXMgIiR7QH0iCi0iIiIKLQotZGVmIGZpbmRsaW5lKGxpbmVzLCBzdGFydCk6Ci0gICAgIiIicmV0dXJuIGxpbmUgc3RhcnRpbmcgd2l0aCBnaXZlbiBzdHJpbmcgb3IgLTEiIiIKLSAgICBmb3IgaSBpbiByYW5nZShsZW4obGluZXMpKToKLSAgICAgICAgaWYgbGluZXNbaV1bOmxlbihzdGFydCldID09IHN0YXJ0OgotICAgICAgICAgICAgcmV0dXJuIGkKLSAgICByZXR1cm4gLTEKLQotZGVmIGZpeChtYWtlZmlsZSwgZG9fYXBwbHkpOgotICAgICIiIkZpeCB0aGUgTWFrZWZpbGUsIGlmIHJlcXVpcmVkLiIiIgotICAgIGZpeGVkID0gRmFsc2UKLSAgICBsaW5lcyA9IG9wZW4obWFrZWZpbGUpLnJlYWRsaW5lcygpCi0KLSAgICBmb3Igb2xkLCBuZXcgaW4gQ0hBTkdFUzoKLSAgICAgICAgaSA9IGZpbmRsaW5lKGxpbmVzLCBuZXcpCi0gICAgICAgIGlmIGkgPj0gMDoKLSAgICAgICAgICAgICMgQWxyZWFkeSBmaXhlZAotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaSA9IGZpbmRsaW5lKGxpbmVzLCBvbGQpCi0gICAgICAgIGlmIGkgPCAwOgotICAgICAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IFB5dGhvbiBpbnN0YWxsYXRpb24gbm90IGZpeGVkIChhcHBlYXJzIGJyb2tlbiknKQotICAgICAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IG1pc3NpbmcgbGluZTonLCBvbGQpCi0gICAgICAgICAgICByZXR1cm4gMgotICAgICAgICBsaW5lc1tpXSA9IG5ldwotICAgICAgICBmaXhlZCA9IFRydWUKLQotICAgIGlmIGZpeGVkOgotICAgICAgICBpZiBkb19hcHBseToKLSAgICAgICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBGaXggdG8gQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgYXBwbGllZCcpCi0gICAgICAgICAgICBvcy5yZW5hbWUobWFrZWZpbGUsIG1ha2VmaWxlICsgJ34nKQotICAgICAgICAgICAgb3BlbihtYWtlZmlsZSwgJ3cnKS53cml0ZWxpbmVzKGxpbmVzKQotICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBGaXggdG8gQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgc2hvdWxkIGJlIGFwcGxpZWQnKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICBlbHNlOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogTm8gZml4IG5lZWRlZCwgYXBwZWFycyB0byBoYXZlIGJlZW4gYXBwbGllZCBiZWZvcmUnKQotICAgICAgICByZXR1cm4gMAotCi1kZWYgbWFrZXNjcmlwdChmaWxlbmFtZSwgY29tcGlsZXIpOgotICAgICIiIkNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0IGZvciBhIGNvbXBpbGVyIiIiCi0gICAgZGlybmFtZSA9IG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpWzBdCi0gICAgaWYgbm90IG9zLmFjY2VzcyhkaXJuYW1lLCBvcy5YX09LKToKLSAgICAgICAgb3MubWtkaXIoZGlybmFtZSwgMG83NTUpCi0gICAgZnAgPSBvcGVuKGZpbGVuYW1lLCAndycpCi0gICAgZnAud3JpdGUoU0NSSVBUICUgY29tcGlsZXIpCi0gICAgZnAuY2xvc2UoKQotICAgIG9zLmNobW9kKGZpbGVuYW1lLCAwbzc1NSkKLSAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogQ3JlYXRlZCcsIGZpbGVuYW1lKQotCi1kZWYgbWFpbigpOgotICAgICMgQ2hlY2sgZm9yIC1uIG9wdGlvbgotICAgIGlmIGxlbihzeXMuYXJndikgPiAxIGFuZCBzeXMuYXJndlsxXSA9PSAnLW4nOgotICAgICAgICBkb19hcHBseSA9IEZhbHNlCi0gICAgZWxzZToKLSAgICAgICAgZG9fYXBwbHkgPSBUcnVlCi0gICAgIyBGaXJzdCBjaGVjayBPUyB2ZXJzaW9uCi0gICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAnbGl0dGxlJzoKLSAgICAgICAgIyBBbGwgaW50ZWwgbWFjcyBhcmUgZmluZQotICAgICAgICBwcmludCgiZml4YXBwbHlweXRob24yMzogbm8gZml4IGlzIG5lZWRlZCBvbiBNYWNPU1ggb24gSW50ZWwiKQotICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgb3N2ZXIgPSAgcGxhdGZvcm0ubWFjX3ZlcigpCi0gICAgaWYgb3N2ZXIgIT0gJzEwLjMnIGFuZCBvcy52ZXIgPCAnMTAuMy4nOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogbm8gZml4IG5lZWRlZCBvbiBNYWNPU1ggPCAxMC4zJykKLSAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgIGlmIG9zdmVyID49ICcxMC40JzoKLSAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IG5vIGZpeCBuZWVkZWQgb24gTWFjT1NYID49IDEwLjQnKQotICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgIyBUZXN0IHRoYXQgYSBmcmFtZXdvcmsgUHl0aG9uIGlzIGluZGVlZCBpbnN0YWxsZWQKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoTUFLRUZJTEUpOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogUHl0aG9uIGZyYW1ld29yayBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW5zdGFsbGVkICg/KSwgbm90aGluZyBmaXhlZCcpCi0gICAgICAgIHN5cy5leGl0KDApCi0gICAgIyBDaGVjayB0aGF0IHdlIGNhbiBhY3R1YWxseSB3cml0ZSB0aGUgZmlsZQotICAgIGlmIGRvX2FwcGx5IGFuZCBub3Qgb3MuYWNjZXNzKE1BS0VGSUxFLCBvcy5XX09LKToKLSAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IE5vIHdyaXRlIHBlcm1pc3Npb24sIHBsZWFzZSBydW4gd2l0aCAic3VkbyInKQotICAgICAgICBzeXMuZXhpdCgyKQotICAgICMgQ3JlYXRlIHRoZSBzaGVsbCBzY3JpcHRzCi0gICAgaWYgZG9fYXBwbHk6Ci0gICAgICAgIGlmIG5vdCBvcy5hY2Nlc3MoR0NDX1NDUklQVCwgb3MuWF9PSyk6Ci0gICAgICAgICAgICBtYWtlc2NyaXB0KEdDQ19TQ1JJUFQsICJnY2MiKQotICAgICAgICBpZiBub3Qgb3MuYWNjZXNzKEdYWF9TQ1JJUFQsIG9zLlhfT0spOgotICAgICAgICAgICAgbWFrZXNjcmlwdChHWFhfU0NSSVBULCAiZysrIikKLSAgICAjICBGaW5hbGx5IGZpeCB0aGUgbWFrZWZpbGUKLSAgICBydiA9IGZpeChNQUtFRklMRSwgZG9fYXBwbHkpCi0gICAgI3N5cy5leGl0KHJ2KQotICAgIHN5cy5leGl0KDApCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvcHl0aG9udy5jIGIvTWFjL1Rvb2xzL3B5dGhvbncuYwppbmRleCAzMGM4MmFjLi4xZDJkYjM4IDEwMDY0NAotLS0gYS9NYWMvVG9vbHMvcHl0aG9udy5jCisrKyBiL01hYy9Ub29scy9weXRob253LmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxkbGZjbi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPFB5dGhvbi5oPgorI2luY2x1ZGUgPG1hY2gtby9keWxkLmg+CiAKIAogZXh0ZXJuIGNoYXIqKiBlbnZpcm9uOwpAQCAtMTUwLDYgKzE1MSw1MyBAQAogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICAgIGNoYXIqIGV4ZWNfcGF0aCA9IGdldF9weXRob25fcGF0aCgpOworICAgIHN0YXRpYyBjaGFyIHBhdGhbUEFUSF9NQVggKiAyXTsKKyAgICBzdGF0aWMgY2hhciByZWFsX3BhdGhbUEFUSF9NQVggKiAyXTsKKyAgICBpbnQgc3RhdHVzOworICAgIHVpbnQzMl90IHNpemUgPSBQQVRIX01BWCAqIDI7CisKKyAgICAvKiBTZXQgdGhlIG9yaWdpbmFsIGV4ZWN1dGFibGUgcGF0aCBpbiB0aGUgZW52aXJvbm1lbnQuICovCisgICAgc3RhdHVzID0gX05TR2V0RXhlY3V0YWJsZVBhdGgocGF0aCwgJnNpemUpOworICAgIGlmIChzdGF0dXMgPT0gMCkgeworICAgICAgICAvKgorICAgICAgICAgKiBOb3RlOiBkb24ndCBjYWxsICdyZWFscGF0aCcsIHRoYXQgd2lsbAorICAgICAgICAgKiBlcmFzZSBzeW1saW5rIGluZm9ybWF0aW9uLCBhbmQgdGhhdAorICAgICAgICAgKiBicmVha3MgInB5dmVudiAtLXN5bWxpbmsiCisgICAgICAgICAqCisgICAgICAgICAqIEl0IGlzIG5pY2UgdG8gaGF2ZSB0aGUgZGlyZWN0b3J5IG5hbWUKKyAgICAgICAgICogYXMgYSBjbGVhbmVkIHVwIGFic29sdXRlIHBhdGggdGhvdWdoLAorICAgICAgICAgKiB0aGVyZWZvcmUgY2FsbCByZWFscGF0aCBvbiBkaXJuYW1lKHBhdGgpCisgICAgICAgICAqLworICAgICAgICBjaGFyKiBzbGFzaCA9IHN0cnJjaHIocGF0aCwgJy8nKTsKKyAgICAgICAgaWYgKHNsYXNoKSB7CisgICAgICAgICAgICBjaGFyICByZXBsYWNlZDsKKyAgICAgICAgICAgIHJlcGxhY2VkID0gc2xhc2hbMV07CisgICAgICAgICAgICBzbGFzaFsxXSA9IDA7CisgICAgICAgICAgICBpZiAocmVhbHBhdGgocGF0aCwgcmVhbF9wYXRoKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZXJyKDEsICJyZWFscGF0aDogJXMiLCBwYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNsYXNoWzFdID0gcmVwbGFjZWQ7CisgICAgICAgICAgICBpZiAoc3RybGNhdChyZWFsX3BhdGgsIHNsYXNoLCBzaXplb2YocmVhbF9wYXRoKSkgPiBzaXplb2YocmVhbF9wYXRoKSkgeworICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChyZWFscGF0aCgiLiIsIHJlYWxfcGF0aCkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RybGNhdChyZWFsX3BhdGgsICIvIiwgc2l6ZW9mKHJlYWxfcGF0aCkpID4gc2l6ZW9mKHJlYWxfcGF0aCkpIHsKKyAgICAgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgICAgICAgICBlcnIoMSwgInJlYWxwYXRoOiAlcyIsIHBhdGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cmxjYXQocmVhbF9wYXRoLCBwYXRoLCBzaXplb2YocmVhbF9wYXRoKSkgPiBzaXplb2YocmVhbF9wYXRoKSkgeworICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzZXRlbnYoIl9fUFlWRU5WX0xBVU5DSEVSX18iLCByZWFsX3BhdGgsIDEpOworICAgIH0KIAogICAgIC8qCiAgICAgICogTGV0IGFyZ3ZbMF0gcmVmZXIgdG8gdGhlIG5ldyBpbnRlcnByZXRlci4gVGhpcyBpcyBuZWVkZWQgdG8KZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgppbmRleCA2MmRiOWMxLi45ZjVlMmExIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrIGIvTWFrZWZpbGUucHJlLmluCkBAIC0zNCw3ICszNCw3IEBACiBMSU5LQ0M9CQlATElOS0NDQAogQVI9CQlAQVJACiBSQU5MSUI9CQlAUkFOTElCQAotU1ZOVkVSU0lPTj0JQFNWTlZFUlNJT05ACitSRUFERUxGPQlAUkVBREVMRkAKIFNPQUJJPQkJQFNPQUJJQAogTERWRVJTSU9OPQlATERWRVJTSU9OQAogSEdWRVJTSU9OPQlASEdWRVJTSU9OQApAQCAtNTksNiArNTksOCBAQAogIyBBbHNvLCBtYWtpbmcgdGhlbSByZWFkLW9ubHkgc2VlbXMgdG8gYmUgYSBnb29kIGlkZWEuLi4KIElOU1RBTExfU0hBUkVEPSAke0lOU1RBTEx9IC1tIDU1NQogCitNS0RJUl9QPQlATUtESVJfUEAKKwogTUFLRVNFVFVQPSAgICAgICQoc3JjZGlyKS9Nb2R1bGVzL21ha2VzZXR1cAogCiAjIENvbXBpbGVyIG9wdGlvbnMKQEAgLTc0LDcgKzc2LDcgQEAKICMgQm90aCBDUFBGTEFHUyBhbmQgTERGTEFHUyBuZWVkIHRvIGNvbnRhaW4gdGhlIHNoZWxsJ3MgdmFsdWUgZm9yIHNldHVwLnB5IHRvCiAjIGJlIGFibGUgdG8gYnVpbGQgZXh0ZW5zaW9uIG1vZHVsZXMgdXNpbmcgdGhlIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBpbiB0aGUKICMgZW52aXJvbm1lbnQgdmFyaWFibGVzCi1QWV9DUFBGTEFHUz0JLUkuIC1JSW5jbHVkZSAtSSQoc3JjZGlyKS9JbmNsdWRlICQoQ09ORklHVVJFX0NQUEZMQUdTKSAkKENQUEZMQUdTKQorUFlfQ1BQRkxBR1M9CS1JLiAtSSQoc3JjZGlyKS9JbmNsdWRlICQoQ09ORklHVVJFX0NQUEZMQUdTKSAkKENQUEZMQUdTKQogUFlfTERGTEFHUz0JJChDT05GSUdVUkVfTERGTEFHUykgJChMREZMQUdTKQogTk9fQVNfTkVFREVEPQlATk9fQVNfTkVFREVEQAogTERMQVNUPQkJQExETEFTVEAKQEAgLTE5Miw2ICsxOTQsMTAgQEAKIFBZVEhPTj0JCXB5dGhvbiQoRVhFKQogQlVJTERQWVRIT049CXB5dGhvbiQoQlVJTERFWEUpCiAKK1BZVEhPTl9GT1JfQlVJTEQ9QFBZVEhPTl9GT1JfQlVJTERACitfUFlUSE9OX0hPU1RfUExBVEZPUk09QF9QWVRIT05fSE9TVF9QTEFURk9STUAKK0hPU1RfR05VX1RZUEU9ICBAaG9zdEAKKwogIyBUaGUgdGFzayB0byBydW4gd2hpbGUgaW5zdHJ1bWVudCB3aGVuIGJ1aWxkaW5nIHRoZSBwcm9maWxlLW9wdCB0YXJnZXQKIFBST0ZJTEVfVEFTSz0JJChzcmNkaXIpL1Rvb2xzL3B5YmVuY2gvcHliZW5jaC5weSAtbiAyIC0td2l0aC1nYyAtLXdpdGgtc3lzY2hlY2sKICNQUk9GSUxFX1RBU0s9CSQoc3JjZGlyKS9MaWIvdGVzdC9yZWdydGVzdC5weQpAQCAtMjM0LDIwICsyNDAsNDEgQEAKICMgUGFyc2VyCiBQR0VOPQkJUGFyc2VyL3BnZW4kKEVYRSkKIAorUFNSQ1M9CQlcCisJCVBhcnNlci9hY2NlbGVyLmMgXAorCQlQYXJzZXIvZ3JhbW1hcjEuYyBcCisJCVBhcnNlci9saXN0bm9kZS5jIFwKKwkJUGFyc2VyL25vZGUuYyBcCisJCVBhcnNlci9wYXJzZXIuYyBcCisJCVBhcnNlci9iaXRzZXQuYyBcCisJCVBhcnNlci9tZXRhZ3JhbW1hci5jIFwKKwkJUGFyc2VyL2ZpcnN0c2V0cy5jIFwKKwkJUGFyc2VyL2dyYW1tYXIuYyBcCisJCVBhcnNlci9wZ2VuLmMKKwogUE9CSlM9CQlcCiAJCVBhcnNlci9hY2NlbGVyLm8gXAogCQlQYXJzZXIvZ3JhbW1hcjEubyBcCiAJCVBhcnNlci9saXN0bm9kZS5vIFwKIAkJUGFyc2VyL25vZGUubyBcCiAJCVBhcnNlci9wYXJzZXIubyBcCi0JCVBhcnNlci9wYXJzZXRvay5vIFwKIAkJUGFyc2VyL2JpdHNldC5vIFwKIAkJUGFyc2VyL21ldGFncmFtbWFyLm8gXAogCQlQYXJzZXIvZmlyc3RzZXRzLm8gXAogCQlQYXJzZXIvZ3JhbW1hci5vIFwKIAkJUGFyc2VyL3BnZW4ubwogCi1QQVJTRVJfT0JKUz0JJChQT0JKUykgUGFyc2VyL215cmVhZGxpbmUubyBQYXJzZXIvdG9rZW5pemVyLm8KK1BBUlNFUl9PQkpTPQkkKFBPQkpTKSBQYXJzZXIvbXlyZWFkbGluZS5vIFBhcnNlci9wYXJzZXRvay5vIFBhcnNlci90b2tlbml6ZXIubworCitQR1NSQ1M9CQlcCisJCU9iamVjdHMvb2JtYWxsb2MuYyBcCisJCVB5dGhvbi9keW5hbWljX2Fubm90YXRpb25zLmMgXAorCQlQeXRob24vbXlzbnByaW50Zi5jIFwKKwkJUHl0aG9uL3B5Y3R5cGUuYyBcCisJCVBhcnNlci90b2tlbml6ZXJfcGdlbi5jIFwKKwkJUGFyc2VyL3ByaW50Z3JhbW1hci5jIFwKKwkJUGFyc2VyL3BhcnNldG9rX3BnZW4uYyBcCisJCVBhcnNlci9wZ2VubWFpbi5jCiAKIFBHT0JKUz0JCVwKIAkJT2JqZWN0cy9vYm1hbGxvYy5vIFwKQEAgLTI1NiwxMyArMjgzLDE2IEBACiAJCVB5dGhvbi9weWN0eXBlLm8gXAogCQlQYXJzZXIvdG9rZW5pemVyX3BnZW4ubyBcCiAJCVBhcnNlci9wcmludGdyYW1tYXIubyBcCisJCVBhcnNlci9wYXJzZXRva19wZ2VuLm8gXAogCQlQYXJzZXIvcGdlbm1haW4ubwogCiBQQVJTRVJfSEVBREVSUz0gXAotCQlQYXJzZXIvcGFyc2VyLmggXAotCQlQYXJzZXIvdG9rZW5pemVyLmgKKwkJJChzcmNkaXIpL1BhcnNlci9wYXJzZXIuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3BhcnNldG9rLmggXAorCQkkKHNyY2RpcikvUGFyc2VyL3Rva2VuaXplci5oCiAKLVBHRU5PQkpTPQkkKFBHRU5NQUlOKSAkKFBPQkpTKSAkKFBHT0JKUykKK1BHRU5TUkNTPQkkKFBTUkNTKSAkKFBHU1JDUykKK1BHRU5PQkpTPQkkKFBPQkpTKSAkKFBHT0JKUykKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQVNUCkBAIC0yOTksNyArMzI5LDYgQEAKIAkJUHl0aG9uL2NvZGVjcy5vIFwKIAkJUHl0aG9uL2R5bmFtaWNfYW5ub3RhdGlvbnMubyBcCiAJCVB5dGhvbi9lcnJvcnMubyBcCi0JCVB5dGhvbi9mcm96ZW4ubyBcCiAJCVB5dGhvbi9mcm96ZW5tYWluLm8gXAogCQlQeXRob24vZnV0dXJlLm8gXAogCQlQeXRob24vZ2V0YXJncy5vIFwKQEAgLTM2NywxMSArMzk2LDEyIEBACiAJCU9iamVjdHMvbWVtb3J5b2JqZWN0Lm8gXAogCQlPYmplY3RzL21ldGhvZG9iamVjdC5vIFwKIAkJT2JqZWN0cy9tb2R1bGVvYmplY3QubyBcCisJCU9iamVjdHMvbmFtZXNwYWNlb2JqZWN0Lm8gXAogCQlPYmplY3RzL29iamVjdC5vIFwKIAkJT2JqZWN0cy9vYm1hbGxvYy5vIFwKIAkJT2JqZWN0cy9jYXBzdWxlLm8gXAogCQlPYmplY3RzL3Jhbmdlb2JqZWN0Lm8gXAotICAgICAgICAgICAgICAgIE9iamVjdHMvc2V0b2JqZWN0Lm8gXAorCQlPYmplY3RzL3NldG9iamVjdC5vIFwKIAkJT2JqZWN0cy9zbGljZW9iamVjdC5vIFwKIAkJT2JqZWN0cy9zdHJ1Y3RzZXEubyBcCiAJCU9iamVjdHMvdHVwbGVvYmplY3QubyBcCkBAIC0zODAsMTAgKzQxMCwxMSBAQAogCQlPYmplY3RzL3VuaWNvZGVjdHlwZS5vIFwKIAkJT2JqZWN0cy93ZWFrcmVmb2JqZWN0Lm8KIAorU1lTQ09ORklHREFUQT0kKHNyY2RpcikvTGliL19zeXNjb25maWdkYXRhLnB5CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIG9iamVjdHMgdGhhdCBnZXQgbGlua2VkIGludG8gdGhlIFB5dGhvbiBsaWJyYXJ5Ci1MSUJSQVJZX09CSlM9CVwKK0xJQlJBUllfT0JKU19PTUlUX0ZST1pFTj0JXAogCQlNb2R1bGVzL2dldGJ1aWxkaW5mby5vIFwKIAkJJChQQVJTRVJfT0JKUykgXAogCQkkKE9CSkVDVF9PQkpTKSBcCkBAIC0zOTIsMTIgKzQyMywxNiBAQAogCQkkKFNJR05BTF9PQkpTKSBcCiAJCSQoTU9ET0JKUykKIAorTElCUkFSWV9PQkpTPQlcCisJCSQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKSBcCisJCVB5dGhvbi9mcm96ZW4ubworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFJ1bGVzCiAKICMgRGVmYXVsdCB0YXJnZXQKIGFsbDoJCWJ1aWxkX2FsbAotYnVpbGRfYWxsOgkkKEJVSUxEUFlUSE9OKSBvbGRzaGFyZWRtb2RzIHNoYXJlZG1vZHMgZ2RiaG9va3MgTW9kdWxlcy9fdGVzdGVtYmVkCitidWlsZF9hbGw6CSQoQlVJTERQWVRIT04pICQoU1lTQ09ORklHREFUQSkgb2xkc2hhcmVkbW9kcyBzaGFyZWRtb2RzIGdkYmhvb2tzIE1vZHVsZXMvX3Rlc3RlbWJlZAogCiAjIENvbXBpbGUgYSBiaW5hcnkgd2l0aCBnY2MgcHJvZmlsZSBndWlkZWQgb3B0aW1pemF0aW9uLgogcHJvZmlsZS1vcHQ6CkBAIC00MTUsMTAgKzQ1MCwxMSBAQAogCSQoTUFLRSkgYWxsIENGTEFHUz0iJChDRkxBR1MpIC1mcHJvZmlsZS1nZW5lcmF0ZSIgTElCUz0iJChMSUJTKSAtbGdjb3YiCiAKIHJ1bl9wcm9maWxlX3Rhc2s6Ci0JLi8kKEJVSUxEUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykKKwk6ICMgRklYTUU6IGNhbid0IHJ1biBmb3IgYSBjcm9zcyBidWlsZAorCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoUFJPRklMRV9UQVNLKQogCiBidWlsZF9hbGxfdXNlX3Byb2ZpbGU6Ci0JJChNQUtFKSBhbGwgQ0ZMQUdTPSIkKENGTEFHUykgLWZwcm9maWxlLXVzZSIKKwkkKE1BS0UpIGFsbCBDRkxBR1M9IiQoQ0ZMQUdTKSAtZnByb2ZpbGUtdXNlIC1mcHJvZmlsZS1jb3JyZWN0aW9uIgogCiBjb3ZlcmFnZToKIAlAZWNobyAiQnVpbGRpbmcgd2l0aCBzdXBwb3J0IGZvciBjb3ZlcmFnZSBjaGVja2luZzoiCkBAIC00MzAsMTIgKzQ2NiwxNSBAQAogJChCVUlMRFBZVEhPTik6CU1vZHVsZXMvcHl0aG9uLm8gJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChQWTNMSUJSQVJZKQogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgTW9kdWxlcy9weXRob24ubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCi1wbGF0Zm9ybTogJChCVUlMRFBZVEhPTikKLQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtRSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludChnZXRfcGxhdGZvcm0oKSsiLSIrc3lzLnZlcnNpb25bMDozXSknID5wbGF0Zm9ybQorcGxhdGZvcm06ICQoQlVJTERQWVRIT04pICQoU1lTQ09ORklHREFUQSkKKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludChnZXRfcGxhdGZvcm0oKSsiLSIrc3lzLnZlcnNpb25bMDozXSknID5wbGF0Zm9ybQogCisjIEdlbmVyYXRlIHRoZSBzeXNjb25maWcgYnVpbGQtdGltZSBkYXRhCiskKFNZU0NPTkZJR0RBVEEpOiAkKEJVSUxEUFlUSE9OKQorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1TIC1tIHN5c2NvbmZpZyAtLWdlbmVyYXRlLXBvc2l4LXZhcnMKIAogIyBCdWlsZCB0aGUgc2hhcmVkIG1vZHVsZXMKLXNoYXJlZG1vZHM6ICQoQlVJTERQWVRIT04pCitzaGFyZWRtb2RzOiAkKEJVSUxEUFlUSE9OKSAkKFNZU0NPTkZJR0RBVEEpCiAgICAgICAgIGlmIHdoaWNoIGdldG9wdCA+L2Rldi9udWxsOyB0aGVuIFwKIAkgIG1mbGFncz1gZ2V0b3B0IHMgJCRNQUtFRkxBR1MgMj4vZGV2L251bGwgfCBzZWQgJ3MvIC0tLiovIC8nYDsgXAogCWVsc2UgXApAQCAtNDQzLDcgKzQ4Miw3IEBACiAJZmk7IFwKIAljYXNlICQkbWZsYWdzIGluICIqIC1zICoiKSBxdWlldD0tcTsgZXNhYzsgXAogCSQoUlVOU0hBUkVEKSBDQz0nJChDQyknIExEU0hBUkVEPSckKEJMRFNIQVJFRCknIE9QVD0nJChPUFQpJyBcCi0JCS4vJChCVUlMRFBZVEhPTikgLUUgJChzcmNkaXIpL3NldHVwLnB5ICQkcXVpZXQgYnVpbGQKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2Rpcikvc2V0dXAucHkgJCRxdWlldCBidWlsZAogCiAjIEJ1aWxkIHN0YXRpYyBsaWJyYXJ5CiAjIGF2b2lkIGxvbmcgY29tbWFuZCBsaW5lcywgc2FtZSBhcyBMSUJSQVJZX09CSlMKQEAgLTQ1Miw3ICs0OTEsNyBAQAogCSQoQVIpICQoQVJGTEFHUykgJEAgTW9kdWxlcy9nZXRidWlsZGluZm8ubwogCSQoQVIpICQoQVJGTEFHUykgJEAgJChQQVJTRVJfT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKRUNUX09CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKFBZVEhPTl9PQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChQWVRIT05fT0JKUykgUHl0aG9uL2Zyb3plbi5vCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRFVMRV9PQkpTKSAkKFNJR05BTF9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChNT0RPQkpTKQogCSQoUkFOTElCKSAkQApAQCAtNDk5LDcgKzUzOCw3IEBACiAJCS1pbnN0YWxsX25hbWUgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvVmVyc2lvbnMvJChWRVJTSU9OKS8kKFBZVEhPTkZSQU1FV09SSykgXAogCQktY29tcGF0aWJpbGl0eV92ZXJzaW9uICQoVkVSU0lPTikgXAogCQktY3VycmVudF92ZXJzaW9uICQoVkVSU0lPTikgXAotCQktZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uICQoTElCUyk7IAorCQktZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uICQoTElCUyk7CiAJJChJTlNUQUxMKSAtZCAtbSAkKERJUk1PREUpICBcCiAJCSQoUFlUSE9ORlJBTUVXT1JLRElSKS9WZXJzaW9ucy8kKFZFUlNJT04pL1Jlc291cmNlcy9FbmdsaXNoLmxwcm9qCiAJJChJTlNUQUxMX0RBVEEpICQoUkVTU1JDRElSKS9JbmZvLnBsaXN0IFwKQEAgLTU1MCw2ICs1ODksMTggQEAKIAkkKExJTktDQykgJChQWV9MREZMQUdTKSAkKExJTktGT1JTSEFSRUQpIC1vICRAIE1vZHVsZXMvX3Rlc3RlbWJlZC5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW1wb3J0bGliCisKK01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWI6IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikKKwkkKExJTktDQykgJChQWV9MREZMQUdTKSAtbyAkQCBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQorCitQeXRob24vaW1wb3J0bGliLmg6ICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCisJJChNQUtFKSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliCisJLi9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliIFwKKwkJJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQeXRob24vaW1wb3J0bGliLmgKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNwZWNpYWwgcnVsZXMgZm9yIG9iamVjdCBmaWxlcwogCiBNb2R1bGVzL2dldGJ1aWxkaW5mby5vOiAkKFBBUlNFUl9PQkpTKSBcCkBAIC01NjAsNyArNjExLDYgQEAKIAkJJChNT0RPQkpTKSBcCiAJCSQoc3JjZGlyKS9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jCiAJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgXAotCSAgICAgIC1EU1ZOVkVSU0lPTj0iXCJgTENfQUxMPUMgJChTVk5WRVJTSU9OKWBcIiIgXAogCSAgICAgIC1ESEdWRVJTSU9OPSJcImBMQ19BTEw9QyAkKEhHVkVSU0lPTilgXCIiIFwKIAkgICAgICAtREhHVEFHPSJcImBMQ19BTEw9QyAkKEhHVEFHKWBcIiIgXAogCSAgICAgIC1ESEdCUkFOQ0g9IlwiYExDX0FMTD1DICQoSEdCUkFOQ0gpYFwiIiBcCkBAIC01NzcsNiArNjI3LDkgQEAKIE1vZHVsZXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCiAJJChNQUlOQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCiAKK01vZHVsZXMvX3Rlc3RlbWJlZC5vOiAkKHNyY2RpcikvTW9kdWxlcy9fdGVzdGVtYmVkLmMKKwkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvX3Rlc3RlbWJlZC5jCisKIFB5dGhvbi9keW5sb2FkX3NobGliLm86ICQoc3JjZGlyKS9QeXRob24vZHlubG9hZF9zaGxpYi5jIE1ha2VmaWxlCiAJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgXAogCQktRFNPQUJJPSciJChTT0FCSSkiJyBcCkBAIC01ODksMTIgKzY0MiwxMyBAQAogCiAkKElPX09CSlMpOiAkKElPX0gpCiAKLSMgVXNlIGEgc3RhbXAgZmlsZSB0byBwcmV2ZW50IG1ha2UgLWogaW52b2tpbmcgcGdlbiB0d2ljZQotJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKTogUGFyc2VyL3BnZW4uc3RhbXAKLVBhcnNlci9wZ2VuLnN0YW1wOiAkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkKLQkJLUAkKElOU1RBTEwpIC1kIEluY2x1ZGUKKyQoR1JBTU1BUl9IKTogJChHUkFNTUFSX0lOUFVUKSAkKFBHRU5TUkNTKQorCQlAJChNS0RJUl9QKSBJbmNsdWRlCisJCSQoTUFLRSkgJChQR0VOKQogCQkkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotCQktdG91Y2ggUGFyc2VyL3BnZW4uc3RhbXAKKyQoR1JBTU1BUl9DKTogJChHUkFNTUFSX0gpICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOU1JDUykKKwkJJChNQUtFKSAkKEdSQU1NQVJfSCkKKwkJdG91Y2ggJChHUkFNTUFSX0MpCiAKICQoUEdFTik6CSQoUEdFTk9CSlMpCiAJCSQoQ0MpICQoT1BUKSAkKFBZX0xERkxBR1MpICQoUEdFTk9CSlMpICQoTElCUykgLW8gJChQR0VOKQpAQCAtNjA1LDEzICs2NTksMTUgQEAKIFBhcnNlci9tZXRhZ3JhbW1hci5vOgkkKHNyY2RpcikvUGFyc2VyL21ldGFncmFtbWFyLmMKIAogUGFyc2VyL3Rva2VuaXplcl9wZ2VuLm86CSQoc3JjZGlyKS9QYXJzZXIvdG9rZW5pemVyLmMKK1BhcnNlci9wYXJzZXRva19wZ2VuLm86CSQoc3JjZGlyKS9QYXJzZXIvcGFyc2V0b2suYworUGFyc2VyL3ByaW50Z3JhbW1hci5vOiAkKHNyY2RpcikvUGFyc2VyL3ByaW50Z3JhbW1hci5jCiAKIFBhcnNlci9wZ2VubWFpbi5vOgkkKHNyY2RpcikvSW5jbHVkZS9wYXJzZXRvay5oCiAKICQoQVNUX0gpOiAkKEFTVF9BU0RMKSAkKEFTRExHRU5fRklMRVMpCiAJJChBU0RMR0VOKSAtaCAkKEFTVF9IX0RJUikgJChBU1RfQVNETCkKIAotJChBU1RfQyk6ICQoQVNUX0FTREwpICQoQVNETEdFTl9GSUxFUykKKyQoQVNUX0MpOiAkKEFTVF9IKSAkKEFTVF9BU0RMKSAkKEFTRExHRU5fRklMRVMpCiAJJChBU0RMR0VOKSAtYyAkKEFTVF9DX0RJUikgJChBU1RfQVNETCkKIAogUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoR1JBTU1BUl9IKSAkKEFTVF9IKQpAQCAtNjMyLDIwICs2ODgsMjkgQEAKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvcGFydGl0aW9uLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvc3BsaXQuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmggXAotCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmggXAotCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaAorCitVTklDT0RFX0RFUFMgPSAkKEJZVEVTVFJfREVQUykgXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvYXNjaWlsaWIuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91Y3MxbGliLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMmxpYi5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VjczRsaWIuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKIAogT2JqZWN0cy9ieXRlc29iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9ieXRlc29iamVjdC5jICQoQllURVNUUl9ERVBTKQogCiBPYmplY3RzL2J5dGVhcnJheW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYyAkKEJZVEVTVFJfREVQUykKIAotT2JqZWN0cy91bmljb2Rlb2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyBcCi0JCQkJJChCWVRFU1RSX0RFUFMpCitPYmplY3RzL3VuaWNvZGVvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvdW5pY29kZW9iamVjdC5jICQoVU5JQ09ERV9ERVBTKQogCiBPYmplY3RzL2RpY3RvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmgKIE9iamVjdHMvc2V0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCkBAIC02NTMsMTEgKzcxOCwxMiBAQAogJChPUENPREVUQVJHRVRTX0gpOiAkKE9QQ09ERVRBUkdFVEdFTl9GSUxFUykKIAkkKE9QQ09ERVRBUkdFVEdFTikgJChPUENPREVUQVJHRVRTX0gpCiAKLVB5dGhvbi9jZXZhbC5vOiAkKE9QQ09ERVRBUkdFVFNfSCkgUHl0aG9uL2NldmFsX2dpbC5oCitQeXRob24vY2V2YWwubzogJChPUENPREVUQVJHRVRTX0gpICQoc3JjZGlyKS9QeXRob24vY2V2YWxfZ2lsLmgKIAogUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLm86ICQoc3JjZGlyKS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYyBcCi0JCQkJJChCWVRFU1RSX0RFUFMpIFwKLQkJCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZm9ybWF0dGVyLmgKKwkJCQkkKEJZVEVTVFJfREVQUykKKworUHl0aG9uL2Zyb3plbi5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGxpYi5oCiAKIE9iamVjdHMvdHlwZW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy90eXBlc2xvdHMuaW5jCiAkKHNyY2RpcikvT2JqZWN0cy90eXBlc2xvdHMuaW5jOiAkKHNyY2RpcikvSW5jbHVkZS90eXBlc2xvdHMuaCAkKHNyY2RpcikvT2JqZWN0cy90eXBlc2xvdHMucHkKQEAgLTY2Nyw4OSArNzMzLDg5IEBACiAjIEhlYWRlciBmaWxlcwogCiBQWVRIT05fSEVBREVSUz0gXAotCQlJbmNsdWRlL1B5dGhvbi1hc3QuaCBcCi0JCUluY2x1ZGUvUHl0aG9uLmggXAotCQlJbmNsdWRlL2Fic3RyYWN0LmggXAotCQlJbmNsdWRlL2FjY3UuaCBcCi0JCUluY2x1ZGUvYXNkbC5oIFwKLQkJSW5jbHVkZS9hc3QuaCBcCi0gICAgICAgICAgICAgICAgSW5jbHVkZS9ibHRpbm1vZHVsZS5oIFwKLQkJSW5jbHVkZS9iaXRzZXQuaCBcCi0JCUluY2x1ZGUvYm9vbG9iamVjdC5oIFwKLQkJSW5jbHVkZS9ieXRlc19tZXRob2RzLmggXAotCQlJbmNsdWRlL2J5dGVhcnJheW9iamVjdC5oIFwKLQkJSW5jbHVkZS9ieXRlc29iamVjdC5oIFwKLQkJSW5jbHVkZS9jZWxsb2JqZWN0LmggXAotCQlJbmNsdWRlL2NldmFsLmggXAotCQlJbmNsdWRlL2NsYXNzb2JqZWN0LmggXAotCQlJbmNsdWRlL2NvZGUuaCBcCi0JCUluY2x1ZGUvY29kZWNzLmggXAotCQlJbmNsdWRlL2NvbXBpbGUuaCBcCi0JCUluY2x1ZGUvY29tcGxleG9iamVjdC5oIFwKLQkJSW5jbHVkZS9kZXNjcm9iamVjdC5oIFwKLQkJSW5jbHVkZS9kaWN0b2JqZWN0LmggXAotCQlJbmNsdWRlL2R0b2EuaCBcCi0JCUluY2x1ZGUvZHluYW1pY19hbm5vdGF0aW9ucy5oIFwKLQkJSW5jbHVkZS9lbnVtb2JqZWN0LmggXAotCQlJbmNsdWRlL2VycmNvZGUuaCBcCi0JCUluY2x1ZGUvZXZhbC5oIFwKLQkJSW5jbHVkZS9maWxlb2JqZWN0LmggXAotCQlJbmNsdWRlL2ZpbGV1dGlscy5oIFwKLQkJSW5jbHVkZS9mbG9hdG9iamVjdC5oIFwKLQkJSW5jbHVkZS9mcmFtZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9mdW5jb2JqZWN0LmggXAotCQlJbmNsdWRlL2dlbm9iamVjdC5oIFwKLQkJSW5jbHVkZS9pbXBvcnQuaCBcCi0JCUluY2x1ZGUvaW50cmNoZWNrLmggXAotCQlJbmNsdWRlL2l0ZXJvYmplY3QuaCBcCi0JCUluY2x1ZGUvbGlzdG9iamVjdC5oIFwKLQkJSW5jbHVkZS9sb25naW50cmVwci5oIFwKLQkJSW5jbHVkZS9sb25nb2JqZWN0LmggXAotCQlJbmNsdWRlL21hcnNoYWwuaCBcCi0JCUluY2x1ZGUvbWVtb3J5b2JqZWN0LmggXAotCQlJbmNsdWRlL21ldGFncmFtbWFyLmggXAotCQlJbmNsdWRlL21ldGhvZG9iamVjdC5oIFwKLQkJSW5jbHVkZS9tb2RzdXBwb3J0LmggXAotCQlJbmNsdWRlL21vZHVsZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9ub2RlLmggXAotCQlJbmNsdWRlL29iamVjdC5oIFwKLQkJSW5jbHVkZS9vYmppbXBsLmggXAotCQlJbmNsdWRlL29wY29kZS5oIFwKLQkJSW5jbHVkZS9vc2RlZnMuaCBcCi0JCUluY2x1ZGUvcGFyc2V0b2suaCBcCi0JCUluY2x1ZGUvcGF0Y2hsZXZlbC5oIFwKLQkJSW5jbHVkZS9wZ2VuLmggXAotCQlJbmNsdWRlL3BnZW5oZWFkZXJzLmggXAotCQlJbmNsdWRlL3B5YXJlbmEuaCBcCi0JCUluY2x1ZGUvcHlhdG9taWMuaCBcCi0JCUluY2x1ZGUvcHljYXBzdWxlLmggXAotCQlJbmNsdWRlL3B5Y3R5cGUuaCBcCi0JCUluY2x1ZGUvcHlkZWJ1Zy5oIFwKLQkJSW5jbHVkZS9weWVycm9ycy5oIFwKLQkJSW5jbHVkZS9weWZwZS5oIFwKLQkJSW5jbHVkZS9weW1hdGguaCBcCi0JCUluY2x1ZGUvcHlnZXRvcHQuaCBcCi0JCUluY2x1ZGUvcHltZW0uaCBcCi0JCUluY2x1ZGUvcHlwb3J0LmggXAotCQlJbmNsdWRlL3B5c3RhdGUuaCBcCi0JCUluY2x1ZGUvcHlzdHJjbXAuaCBcCi0JCUluY2x1ZGUvcHlzdHJ0b2QuaCBcCi0JCUluY2x1ZGUvcHl0aG9ucnVuLmggXAotCQlJbmNsdWRlL3B5dGhyZWFkLmggXAotCQlJbmNsdWRlL3B5dGltZS5oIFwKLQkJSW5jbHVkZS9yYW5nZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9zZXRvYmplY3QuaCBcCi0JCUluY2x1ZGUvc2xpY2VvYmplY3QuaCBcCi0JCUluY2x1ZGUvc3RydWN0bWVtYmVyLmggXAotCQlJbmNsdWRlL3N0cnVjdHNlcS5oIFwKLQkJSW5jbHVkZS9zeW10YWJsZS5oIFwKLQkJSW5jbHVkZS9zeXNtb2R1bGUuaCBcCi0JCUluY2x1ZGUvdHJhY2ViYWNrLmggXAotCQlJbmNsdWRlL3R1cGxlb2JqZWN0LmggXAotCQlJbmNsdWRlL3Vjbmhhc2guaCBcCi0JCUluY2x1ZGUvdW5pY29kZW9iamVjdC5oIFwKLQkJSW5jbHVkZS93YXJuaW5ncy5oIFwKLQkJSW5jbHVkZS93ZWFrcmVmb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9QeXRob24uaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Fic3RyYWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9hY2N1LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9hc2RsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9hc3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2JsdGlubW9kdWxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9iaXRzZXQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Jvb2xvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2J5dGVhcnJheW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYnl0ZXNvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NlbGxvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NldmFsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jbGFzc29iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY29kZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY29kZWNzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jb21waWxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9kZXNjcm9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZGljdG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZHRvYS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZHluYW1pY19hbm5vdGF0aW9ucy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZW51bW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZXJyY29kZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZXZhbC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZmlsZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZmlsZXV0aWxzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9mbG9hdG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZnJhbWVvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Z1bmNvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2dlbm9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvaW1wb3J0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9pbnRyY2hlY2suaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2l0ZXJvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2xpc3RvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2xvbmdpbnRyZXByLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9sb25nb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tYXJzaGFsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tZW1vcnlvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21ldGFncmFtbWFyLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tZXRob2RvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21vZHN1cHBvcnQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21vZHVsZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9ub2RlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9vYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29iamltcGwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29wY29kZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvb3NkZWZzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9wYXRjaGxldmVsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuaGVhZGVycy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlhcmVuYS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlhdG9taWMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Y2Fwc3VsZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHljdHlwZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlkZWJ1Zy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHllcnJvcnMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZnBlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weW1hdGguaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Z2V0b3B0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weW1hY3JvLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weW1lbS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlwb3J0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0YXRlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0cmNtcC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlzdHJ0b2QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGhvbnJ1bi5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHl0aHJlYWQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGltZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcmFuZ2VvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3NldG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc2xpY2VvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3N0cnVjdG1lbWJlci5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc3RydWN0c2VxLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9zeW10YWJsZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc3lzbW9kdWxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS90cmFjZWJhY2suaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3R1cGxlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS91Y25oYXNoLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS93YXJuaW5ncy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvd2Vha3JlZm9iamVjdC5oIFwKIAkJcHljb25maWcuaCBcCiAJCSQoUEFSU0VSX0hFQURFUlMpCiAKQEAgLTc1OCw2NSArODI0LDU2IEBACiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotIyBUZXN0IHRoZSBpbnRlcnByZXRlciAodHdpY2UsIG9uY2Ugd2l0aG91dCAucHljIGZpbGVzLCBvbmNlIHdpdGgpCitURVNUT1BUUz0JJChFWFRSQVRFU1RPUFRTKQorVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKK1RFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CitURVNUVElNRU9VVD0JMzYwMAorCisjIFJ1biBhIGJhc2ljIHNldCBvZiByZWdyZXNzaW9uIHRlc3RzLgorIyBUaGlzIGV4Y2x1ZGVzIHNvbWUgdGVzdHMgdGhhdCBhcmUgcGFydGljdWxhcmx5IHJlc291cmNlLWludGVuc2l2ZS4KK3Rlc3Q6CQlhbGwgcGxhdGZvcm0KKwkJJChURVNUUlVOTkVSKSAkKFRFU1RPUFRTKQorCisjIFJ1biB0aGUgZnVsbCB0ZXN0IHN1aXRlIHR3aWNlIC0gb25jZSB3aXRob3V0IC5weWMgZmlsZXMsIGFuZCBvbmNlIHdpdGguCiAjIEluIHRoZSBwYXN0LCB3ZSd2ZSBoYWQgcHJvYmxlbXMgd2hlcmUgYnVncyBpbiB0aGUgbWFyc2hhbGxpbmcgb3IKICMgZWxzZXdoZXJlIGNhdXNlZCBieXRlY29kZSByZWFkIGZyb20gLnB5YyBmaWxlcyB0byBiZWhhdmUgZGlmZmVyZW50bHkKICMgdGhhbiBieXRlY29kZSBnZW5lcmF0ZWQgZGlyZWN0bHkgZnJvbSBhIC5weSBzb3VyY2UgZmlsZS4gIFNvbWV0aW1lcwotIyB0aGUgYnl0ZWNvZGUgcmVhZCBmcm9tIGEgLnB5YyBmaWxlIGhhZCB0aGUgYnVnLCBzb210aW1lcyB0aGUgZGlyZWN0bHkKKyMgdGhlIGJ5dGVjb2RlIHJlYWQgZnJvbSBhIC5weWMgZmlsZSBoYWQgdGhlIGJ1Zywgc29tZXRpbWVzIHRoZSBkaXJlY3RseQogIyBnZW5lcmF0ZWQgYnl0ZWNvZGUuICBUaGlzIGlzIHNvbWV0aW1lcyBhIHZlcnkgc2h5IGJ1ZyBuZWVkaW5nIGEgbG90IG9mCiAjIHNhbXBsZSBkYXRhLgotCi1URVNUT1BUUz0JLWwgJChFWFRSQVRFU1RPUFRTKQotVEVTVFBST0c9CSQoc3JjZGlyKS9MaWIvdGVzdC9yZWdydGVzdC5weQotVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgLVdkIC1FIC1SIC1iYiAkKFRFU1RQWVRIT05PUFRTKQotdGVzdDoJCWFsbCBwbGF0Zm9ybQotCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKLQkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChURVNUT1BUUykKLQkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFRFU1RPUFRTKQotCiB0ZXN0YWxsOglhbGwgcGxhdGZvcm0KIAkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCi0JCSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL0xpYi9jb21waWxlYWxsLnB5CisJCSQoVEVTVFBZVEhPTikgLUUgJChzcmNkaXIpL0xpYi9jb21waWxlYWxsLnB5CiAJCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAtdWFsbCAkKFRFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCisJCS0kKFRFU1RSVU5ORVIpIC11IGFsbCAkKFRFU1RPUFRTKQorCQkkKFRFU1RSVU5ORVIpIC11IGFsbCAkKFRFU1RPUFRTKQogCi0jICBSdW4gdGhlIHVuaXRlc3RzIGZvciBib3RoIGFyY2hpdGVjdHVyZXMgaW4gYSBVbml2ZXJzYWwgYnVpbGQgb24gT1NYCi0jICBNdXN0IGJlIHJ1biBvbiBhbiBJbnRlbCBib3guCisjIFJ1biB0aGUgdGVzdCBzdWl0ZSBmb3IgYm90aCBhcmNoaXRlY3R1cmVzIGluIGEgVW5pdmVyc2FsIGJ1aWxkIG9uIE9TWC4KKyMgTXVzdCBiZSBydW4gb24gYW4gSW50ZWwgYm94LgogdGVzdHVuaXZlcnNhbDoJYWxsIHBsYXRmb3JtCiAJCWlmIFsgYGFyY2hgICE9ICdpMzg2JyBdO3RoZW4gXAogCQkJZWNobyAiVGhpcyBjYW4gb25seSBiZSB1c2VkIG9uIE9TWC9pMzg2IiA7XAogCQkJZXhpdCAxIDtcCiAJCWZpCi0JCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAtdWFsbCAkKFRFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCi0JCSQoUlVOU0hBUkVEKSAvdXNyL2xpYmV4ZWMvb2FoL3RyYW5zbGF0ZSAuLyQoQlVJTERQWVRIT04pIC1FICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgLXUgYWxsICQoVEVTVE9QVFMpCisJCSQoUlVOU0hBUkVEKSAvdXNyL2xpYmV4ZWMvb2FoL3RyYW5zbGF0ZSBcCisJCQkuLyQoQlVJTERQWVRIT04pIC1FIC1tIHRlc3QgLWogMCAtdSBhbGwgJChURVNUT1BUUykKIAotCi0jIExpa2UgdGVzdGFsbCwgYnV0IHdpdGggYSBzaW5nbGUgcGFzcyBvbmx5Ci0jIHJ1biBhbiBvcHRpb25hbCBzY3JpcHQgdG8gaW5jbHVkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZCBlbnZpcm9ubWVudAorIyBMaWtlIHRlc3RhbGwsIGJ1dCB3aXRoIG9ubHkgb25lIHBhc3MgYW5kIHdpdGhvdXQgbXVsdGlwbGUgcHJvY2Vzc2VzLgorIyBSdW4gYW4gb3B0aW9uYWwgc2NyaXB0IHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIGVudmlyb25tZW50LgogYnVpbGRib3R0ZXN0OglhbGwgcGxhdGZvcm0KIAkJLUBpZiB3aGljaCBweWJ1aWxkYm90LmlkZW50aWZ5ID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCiAJCQlweWJ1aWxkYm90LmlkZW50aWZ5ICJDQz0nJChDQyknIiAiQ1hYPSckKENYWCknIjsgXAogCQlmaQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsIC1yd1cgJChURVNUT1BUUykKKwkJJChURVNUUlVOTkVSKSAtaiAxIC11IGFsbCAtVyAtLXRpbWVvdXQ9JChURVNUVElNRU9VVCkgJChURVNUT1BUUykKIAogUVVJQ0tURVNUT1BUUz0JJChURVNUT1BUUykgLXggdGVzdF9zdWJwcm9jZXNzIHRlc3RfaW8gdGVzdF9saWIydG8zIFwKIAkJdGVzdF9tdWx0aWJ5dGVjb2RlYyB0ZXN0X3VybGxpYjJfbG9jYWxuZXQgdGVzdF9pdGVydG9vbHMgXAogCQl0ZXN0X211bHRpcHJvY2Vzc2luZyB0ZXN0X21haWxib3ggdGVzdF9zb2NrZXQgdGVzdF9wb2xsIFwKLQkJdGVzdF9zZWxlY3QgdGVzdF96aXBmaWxlCisJCXRlc3Rfc2VsZWN0IHRlc3RfemlwZmlsZSB0ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcwogcXVpY2t0ZXN0OglhbGwgcGxhdGZvcm0KLQkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCi0JCS0kKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoUVVJQ0tURVNUT1BUUykKLQkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFFVSUNLVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgJChRVUlDS1RFU1RPUFRTKQogCi1NRU1URVNUT1BUUz0gICAgJChRVUlDS1RFU1RPUFRTKSAteCB0ZXN0X2RsIHRlc3RfX19hbGxfXyB0ZXN0X2ZvcmsxIFwKLQkJdGVzdF9sb25nZXhwCi1tZW10ZXN0OglhbGwgcGxhdGZvcm0KLQkJLXJtIC1mICQoc3JjZGlyKS9MaWIvdGVzdC8qLnB5W2NvXQotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKE1FTVRFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoTUVNVEVTVE9QVFMpCiAKIGluc3RhbGw6IGFsdGluc3RhbGwgYmluaW5zdGFsbAogCkBAIC04NTcsNyArOTE0LDcgQEAKIAlkb25lCiAJJChJTlNUQUxMX1BST0dSQU0pICQoQlVJTERQWVRIT04pICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChMRFZFUlNJT04pJChFWEUpCiAJLWlmIHRlc3QgIiQoVkVSU0lPTikiICE9ICIkKExEVkVSU0lPTikiOyB0aGVuIFwKLQkJaWYgdGVzdCAtZiAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKSQoVkVSU0lPTikkKEVYRSkgLW8gLWggJChERVNURElSKSQoQklORElSKS8kKFBZVEhPTikkKFZFUlNJT04pJChFWEUpOyBcCisJCWlmIHRlc3QgLWYgJChERVNURElSKSQoQklORElSKS9weXRob24kKFZFUlNJT04pJChFWEUpIC1vIC1oICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChWRVJTSU9OKSQoRVhFKTsgXAogCQl0aGVuIHJtIC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChWRVJTSU9OKSQoRVhFKTsgXAogCQlmaTsgXAogCQkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgcHl0aG9uJChMRFZFUlNJT04pJChFWEUpIHB5dGhvbiQoVkVSU0lPTikkKEVYRSkpOyBcCkBAIC04NzgsMTEgKzkzNSwxMSBAQAogCWZpCiAKIGJpbmluc3RhbGw6IGFsdGJpbmluc3RhbGwKLQktaWYgdGVzdCAtZiAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKTMkKEVYRSkgLW8gLWggJChERVNURElSKSQoQklORElSKS8kKFBZVEhPTikzJChFWEUpOyBcCi0JdGhlbiBybSAtZiAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKTMkKEVYRSk7IFwKKwktaWYgdGVzdCAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbjMkKEVYRSkgLW8gLWggJChERVNURElSKSQoQklORElSKS9weXRob24zJChFWEUpOyBcCisJdGhlbiBybSAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbjMkKEVYRSk7IFwKIAllbHNlIHRydWU7IFwKIAlmaQotCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSBweXRob24kKFZFUlNJT04pJChFWEUpICQoUFlUSE9OKTMkKEVYRSkpCisJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIC1zIHB5dGhvbiQoVkVSU0lPTikkKEVYRSkgcHl0aG9uMyQoRVhFKSkKIAktaWYgdGVzdCAiJChWRVJTSU9OKSIgIT0gIiQoTERWRVJTSU9OKSI7IHRoZW4gXAogCQlybSAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbiQoVkVSU0lPTiktY29uZmlnOyBcCiAJCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSAtcyBweXRob24kKExEVkVSU0lPTiktY29uZmlnIHB5dGhvbiQoVkVSU0lPTiktY29uZmlnKTsgXApAQCAtODk5LDYgKzk1Niw4IEBACiAJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIC1zIHB5ZG9jJChWRVJTSU9OKSBweWRvYzMpCiAJLXJtIC1mICQoREVTVERJUikkKEJJTkRJUikvMnRvMwogCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSAtcyAydG8zLSQoVkVSU0lPTikgMnRvMykKKwktcm0gLWYgJChERVNURElSKSQoQklORElSKS9weXZlbnYKKwkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgLXMgcHl2ZW52LSQoVkVSU0lPTikgcHl2ZW52KQogCiAjIEluc3RhbGwgdGhlIG1hbnVhbCBwYWdlCiBtYW5pbnN0YWxsOgpAQCAtOTI0LDI1ICs5ODMsNDcgQEAKIAkJdGVzdC9jamtlbmNvZGluZ3MgdGVzdC9kZWNpbWFsdGVzdGRhdGEgdGVzdC94bWx0ZXN0ZGF0YSBcCiAJCXRlc3Qvc3VicHJvY2Vzc2RhdGEgdGVzdC9zbmRoZHJkYXRhIFwKIAkJdGVzdC90cmFjZWRtb2R1bGVzIHRlc3QvZW5jb2RlZF9tb2R1bGVzIFwKLQkJY29uY3VycmVudCBjb25jdXJyZW50L2Z1dHVyZXMgZW5jb2RpbmdzIFwKLQkJZW1haWwgZW1haWwvbWltZSBlbWFpbC90ZXN0IGVtYWlsL3Rlc3QvZGF0YSBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2ZvbyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjEgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xL2ZvbyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjIgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yL2ZvbyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudCBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEvcGFyZW50L2NoaWxkIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MiBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIvcGFyZW50IFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0Mi9wYXJlbnQvY2hpbGQgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QzIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0My9wYXJlbnQgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QzL3BhcmVudC9jaGlsZCBcCisgICAgICAgICAgICAgICAgdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlIFwKKyAgICAgICAgICAgICAgICB0ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0IFwKKwkJY29sbGVjdGlvbnMgY29uY3VycmVudCBjb25jdXJyZW50L2Z1dHVyZXMgZW5jb2RpbmdzIFwKKwkJZW1haWwgZW1haWwvbWltZSB0ZXN0L3Rlc3RfZW1haWwgdGVzdC90ZXN0X2VtYWlsL2RhdGEgXAogCQlodG1sIGpzb24gdGVzdC9qc29uX3Rlc3RzIGh0dHAgZGJtIHhtbHJwYyBcCiAJCXNxbGl0ZTMgc3FsaXRlMy90ZXN0IFwKIAkJbG9nZ2luZyBjc3Ygd3NnaXJlZiB1cmxsaWIgXAogCQlsaWIydG8zIGxpYjJ0bzMvZml4ZXMgbGliMnRvMy9wZ2VuMiBsaWIydG8zL3Rlc3RzIFwKLQkJbGliMnRvMy90ZXN0cy9kYXRhIGxpYjJ0bzMvdGVzdHMvZGF0YS9maXhlcnMgbGliMnRvMy90ZXN0cy9kYXRhL2ZpeGVycy9teWZpeGVzIFwKKwkJbGliMnRvMy90ZXN0cy9kYXRhIGxpYjJ0bzMvdGVzdHMvZGF0YS9maXhlcnMgXAorCQlsaWIydG8zL3Rlc3RzL2RhdGEvZml4ZXJzL215Zml4ZXMgXAogCQljdHlwZXMgY3R5cGVzL3Rlc3QgY3R5cGVzL21hY2hvbGliIGlkbGVsaWIgaWRsZWxpYi9JY29ucyBcCiAJCWRpc3R1dGlscyBkaXN0dXRpbHMvY29tbWFuZCBkaXN0dXRpbHMvdGVzdHMgJChYTUxMSUJTVUJESVJTKSBcCi0JCWltcG9ydGxpYiBpbXBvcnRsaWIvdGVzdCBpbXBvcnRsaWIvdGVzdC9idWlsdGluIFwKLQkJaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uIGltcG9ydGxpYi90ZXN0L2Zyb3plbiBcCi0JCWltcG9ydGxpYi90ZXN0L2ltcG9ydF8gaW1wb3J0bGliL3Rlc3Qvc291cmNlIFwKKwkJaW1wb3J0bGliIHRlc3QvdGVzdF9pbXBvcnRsaWIgdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluIFwKKwkJdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24gdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4gXAorCQl0ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8gdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UgXAogCQl0dXJ0bGVkZW1vIFwKIAkJbXVsdGlwcm9jZXNzaW5nIG11bHRpcHJvY2Vzc2luZy9kdW1teSBcCi0JCXVuaXR0ZXN0IHVuaXR0ZXN0L3Rlc3QgXAorCQl1bml0dGVzdCB1bml0dGVzdC90ZXN0IHVuaXR0ZXN0L3Rlc3QvdGVzdG1vY2sgXAorCQl2ZW52IHZlbnYvc2NyaXB0cyB2ZW52L3NjcmlwdHMvcG9zaXggXAogCQljdXJzZXMgcHlkb2NfZGF0YSAkKE1BQ0hERVBTKQogbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAkKHNyY2RpcikvTW9kdWxlcy94eG1vZHVsZS5jCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtV2kgLWMgImltcG9ydCBsaWIydG8zLnB5Z3JhbSwgbGliMnRvMy5wYXRjb21wO2xpYjJ0bzMucGF0Y29tcC5QYXR0ZXJuQ29tcGlsZXIoKSIKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLWMgImltcG9ydCBsaWIydG8zLnB5Z3JhbSwgbGliMnRvMy5wYXRjb21wO2xpYjJ0bzMucGF0Y29tcC5QYXR0ZXJuQ29tcGlsZXIoKSIKIAlAZm9yIGkgaW4gJChTQ1JJUFRESVIpICQoTElCREVTVCk7IFwKIAlkbyBcCiAJCWlmIHRlc3QgISAtZCAkKERFU1RESVIpJCRpOyB0aGVuIFwKQEAgLTk2Miw3ICsxMDQzLDcgQEAKIAkJZWxzZQl0cnVlOyBcCiAJCWZpOyBcCiAJZG9uZQotCUBmb3IgaSBpbiAkKHNyY2RpcikvTGliLyoucHkgJChzcmNkaXIpL0xpYi8qLmVnZy1pbmZvIDsgXAorCUBmb3IgaSBpbiAkKHNyY2RpcikvTGliLyoucHkgOyBcCiAJZG8gXAogCQlpZiB0ZXN0IC14ICQkaTsgdGhlbiBcCiAJCQkkKElOU1RBTExfU0NSSVBUKSAkJGkgJChERVNURElSKSQoTElCREVTVCk7IFwKQEAgLTEwMDMsMjEgKzEwODQsMjEgQEAKIAkJCSQoREVTVERJUikkKExJQkRFU1QpL2Rpc3R1dGlscy90ZXN0cyA7IFwKIAlmaQogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1XaSAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCiAJCS1kICQoTElCREVTVCkgLWYgXAogCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKIAkJJChERVNURElSKSQoTElCREVTVCkKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1XaSAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLU8gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCiAJCS1kICQoTElCREVTVCkgLWYgXAogCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKIAkJJChERVNURElSKSQoTElCREVTVCkKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAogCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAogCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKIAkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKIApAQCAtMTExMyw3ICsxMTk0LDcgQEAKICMgSW5zdGFsbCB0aGUgZHluYW1pY2FsbHkgbG9hZGFibGUgbW9kdWxlcwogIyBUaGlzIGdvZXMgaW50byAkKGV4ZWNfcHJlZml4KQogc2hhcmVkaW5zdGFsbDogc2hhcmVkbW9kcwotCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pIC1FICQoc3JjZGlyKS9zZXR1cC5weSBpbnN0YWxsIFwKKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2Rpcikvc2V0dXAucHkgaW5zdGFsbCBcCiAJICAgCS0tcHJlZml4PSQocHJlZml4KSBcCiAJCS0taW5zdGFsbC1zY3JpcHRzPSQoQklORElSKSBcCiAJCS0taW5zdGFsbC1wbGF0bGliPSQoREVTVFNIQVJFRCkgXApAQCAtMTE4OCwxMyArMTI2OSwxMyBAQAogIyBUaGlzIGluc3RhbGxzIGEgZmV3IG9mIHRoZSB1c2VmdWwgc2NyaXB0cyBpbiBUb29scy9zY3JpcHRzCiBzY3JpcHRzaW5zdGFsbDoKIAlTUkNESVI9JChzcmNkaXIpICQoUlVOU0hBUkVEKSBcCi0JLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9zZXR1cC5weSBpbnN0YWxsIFwKKwkkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3NldHVwLnB5IGluc3RhbGwgXAogCS0tcHJlZml4PSQocHJlZml4KSBcCiAJLS1pbnN0YWxsLXNjcmlwdHM9JChCSU5ESVIpIFwKIAktLXJvb3Q9JChERVNURElSKS8KIAogIyBCdWlsZCB0aGUgdG9wbGV2ZWwgTWFrZWZpbGUKLU1ha2VmaWxlLnByZTogTWFrZWZpbGUucHJlLmluIGNvbmZpZy5zdGF0dXMKK01ha2VmaWxlLnByZTogJChzcmNkaXIpL01ha2VmaWxlLnByZS5pbiBjb25maWcuc3RhdHVzCiAJQ09ORklHX0ZJTEVTPU1ha2VmaWxlLnByZSBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgY29uZmlnLnN0YXR1cwogCSQoTUFLRSkgLWYgTWFrZWZpbGUucHJlIE1ha2VmaWxlCiAKQEAgLTEyMzcsNiArMTMxOCwxMCBAQAogCWV0YWdzIEluY2x1ZGUvKi5oOyBcCiAJZm9yIGkgaW4gJChTUkNESVJTKTsgZG8gZXRhZ3MgLWEgJCRpLyouW2NoXTsgZG9uZQogCisjIFRvdWNoIGdlbmVyYXRlZCBmaWxlcwordG91Y2g6CisJaGcgLS1jb25maWcgZXh0ZW5zaW9ucy50b3VjaD1Ub29scy9oZy9oZ3RvdWNoLnB5IHRvdWNoIC12CisKICMgU2FuaXRhdGlvbiB0YXJnZXRzIC0tIGNsZWFuIGxlYXZlcyBsaWJyYXJpZXMsIGV4ZWN1dGFibGVzIGFuZCB0YWdzCiAjIGZpbGVzLCB3aGljaCBjbG9iYmVyIHJlbW92ZXMgYXMgd2VsbAogcHljcmVtb3ZhbDoKQEAgLTEyNjEsMTQgKzEzNDYsMTUgQEAKIAlmaW5kIGJ1aWxkIC1uYW1lICdmZmljb25maWcuaCcgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKIAlmaW5kIGJ1aWxkIC1uYW1lICdmZmljb25maWcucHknIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCiAJLXJtIC1mICQoc3JjZGlyKS9MaWIvbGliMnRvMy8qR3JhbW1hcioucGlja2xlCi0JLXJtIC1mIE1vZHVsZXMvX3Rlc3RlbWJlZAorCS1ybSAtZiAkKFNZU0NPTkZJR0RBVEEpCisJLXJtIC1mIE1vZHVsZXMvX3Rlc3RlbWJlZCBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliCiAKIHByb2ZpbGUtcmVtb3ZhbDoKIAlmaW5kIC4gLW5hbWUgJyouZ2M/PycgLWV4ZWMgcm0gLWYge30gJzsnCiAKIGNsb2JiZXI6IGNsZWFuIHByb2ZpbGUtcmVtb3ZhbAogCS1ybSAtZiAkKEJVSUxEUFlUSE9OKSAkKFBHRU4pICQoTElCUkFSWSkgJChMRExJQlJBUlkpICQoRExMTElCUkFSWSkgXAotCQl0YWdzIFRBR1MgUGFyc2VyL3BnZW4uc3RhbXAgXAorCQl0YWdzIFRBR1MgXAogCQljb25maWcuY2FjaGUgY29uZmlnLmxvZyBweWNvbmZpZy5oIE1vZHVsZXMvY29uZmlnLmMKIAktcm0gLXJmIGJ1aWxkIHBsYXRmb3JtCiAJLXJtIC1yZiAkKFBZVEhPTkZSQU1FV09SS0RJUikKQEAgLTEyOTksOCArMTM4NSw3IEBACiAjIEZpbmQgZmlsZXMgd2l0aCBmdW5ueSBuYW1lcwogZnVubnk6CiAJZmluZCAkKFNVQkRJUlMpICQoU1VCRElSU1RPTykgXAotCQktbmFtZSAuc3ZuIC1wcnVuZSBcCi0JCS1vIC10eXBlIGQgXAorCQktdHlwZSBkIFwKIAkJLW8gLW5hbWUgJyouW2Noc10nIFwKIAkJLW8gLW5hbWUgJyoucHknIFwKIAkJLW8gLW5hbWUgJyoucHl3JyBcCkBAIC0xMzM5LDEzICsxNDI0LDEzIEBACiBQeXRob24vdGhyZWFkLm86IEBUSFJFQURIRUFERVJTQAogCiAjIERlY2xhcmUgdGFyZ2V0cyB0aGF0IGFyZW4ndCByZWFsIGZpbGVzCi0uUEhPTlk6IGFsbCBidWlsZF9hbGwgc2hhcmVkbW9kcyBvbGRzaGFyZWRtb2RzIHRlc3QgcXVpY2t0ZXN0IG1lbXRlc3QKKy5QSE9OWTogYWxsIGJ1aWxkX2FsbCBzaGFyZWRtb2RzIG9sZHNoYXJlZG1vZHMgdGVzdCBxdWlja3Rlc3QKIC5QSE9OWTogaW5zdGFsbCBhbHRpbnN0YWxsIG9sZHNoYXJlZGluc3RhbGwgYmluaW5zdGFsbCBhbHRiaW5pbnN0YWxsCiAuUEhPTlk6IG1hbmluc3RhbGwgbGliaW5zdGFsbCBpbmNsaW5zdGFsbCBsaWJhaW5zdGFsbCBzaGFyZWRpbnN0YWxsCiAuUEhPTlk6IGZyYW1ld29ya2luc3RhbGwgZnJhbWV3b3JraW5zdGFsbGZyYW1ld29yayBmcmFtZXdvcmtpbnN0YWxsc3RydWN0dXJlCiAuUEhPTlk6IGZyYW1ld29ya2luc3RhbGxtYWNsaWIgZnJhbWV3b3JraW5zdGFsbGFwcHMgZnJhbWV3b3JraW5zdGFsbHVuaXh0b29scwogLlBIT05ZOiBmcmFtZXdvcmthbHRpbnN0YWxsdW5peHRvb2xzIHJlY2hlY2sgYXV0b2NvbmYgY2xlYW4gY2xvYmJlciBkaXN0Y2xlYW4KLS5QSE9OWTogc21lbGx5IGZ1bm55IHBhdGNoY2hlY2sKKy5QSE9OWTogc21lbGx5IGZ1bm55IHBhdGNoY2hlY2sgdG91Y2gKIC5QSE9OWTogZ2RiaG9va3MKIAogIyBJRiBZT1UgUFVUIEFOWVRISU5HIEhFUkUgSVQgV0lMTCBHTyBBV0FZCmRpZmYgLS1naXQgYS9NaXNjL0FDS1MgYi9NaXNjL0FDS1MKaW5kZXggYTQ2ZWU4NC4uODhlOTJkNyAxMDA2NDQKLS0tIGEvTWlzYy9BQ0tTCisrKyBiL01pc2MvQUNLUwpAQCAtMTEsOCArMTEsMTEgQEAKIFBTOiBJbiB0aGUgc3RhbmRhcmQgUHl0aG9uIGRpc3RyaWJ1dGlvbiwgdGhpcyBmaWxlIGlzIGVuY29kZWQgaW4gVVRGLTgKIGFuZCB0aGUgbGlzdCBpcyBpbiByb3VnaCBhbHBoYWJldGljYWwgb3JkZXIgYnkgbGFzdCBuYW1lcy4KIAorUmFqaXYgQWJyYWhhbQogRGF2aWQgQWJyYWhhbXMKK01hcmMgQWJyYW1vd2l0egogUm9uIEFkYW0KK0FsaSBBZnNoYXIKIEppbSBBaGxzdHJvbQogRmFyaGFuIEFobWFkCiBNYXR0aGV3IEFocmVucwpAQCAtMzAsNiArMzMsNyBAQAogRXJpayBBbmRlcnPDqW4KIE9saXZlciBBbmRyaWNoCiBSb3NzIEFuZHJ1cworSnVhbmNhcmxvIEHDsWV6CiBKw6lyw6lteSBBbmdlcgogSm9uIEFuZ2xpbgogw4lyaWMgQXJhdWpvCkBAIC0zNywxMiArNDEsMTIgQEAKIEphc29uIEFzYmFocgogRGF2aWQgQXNjaGVyCiBDaHJpcyBBdExlZQorQXltZXJpYyBBdWd1c3RpbgogSm9obiBBeWNvY2sKLUphbi1IZWluIELDvGhybWFuCiBEb25vdmFuIEJhYXJkYQogQXR0aWxhIEJhYm8KLUFsZm9uc28gQmFjaWVybwogTWFyY2luIEJhY2hyeQorQWxmb25zbyBCYWNpZXJvCiBEd2F5bmUgQmFpbGV5CiBTdGlnIEJha2tlbgogR3JlZyBCYWxsCkBAIC01NSwyMCArNTksMjIgQEAKIEFudG9uIEJhcmtvdnNreQogTmljayBCYXJuZXMKIFF1ZW50aW4gQmFybmVzCitEYXZpZCBCYXJuZXR0CiBSaWNoYXJkIEJhcnJhbgogQ2VzYXIgRWR1YXJkbyBCYXJyb3MKIERlcyBCYXJyeQogVWxmIEJhcnRlbHQKK1Bpb3IgQmFzdGlkYQogTmljayBCYXN0aW4KIEplZmYgQmF1ZXIKLU1pa2UgQmF5ZXIKIE1pY2hhZWwgUiBCYXgKIEFudGhvbnkgQmF4dGVyCitNaWtlIEJheWVyCiBTYW11ZWwgTC4gQmF5ZXIKIERvbmFsZCBCZWF1ZHJ5CiBEYXZpZCBCZWF6bGV5Ci1Sb2JpbiBCZWNrZXIKIE5lYWwgQmVja2VyCitSb2JpbiBCZWNrZXIKIFRvcnN0ZW4gQmVja2VyCiBCaWxsIEJlZGZvcmQKIFN0ZWZhbiBCZWhuZWwKQEAgLTc5LDYgKzg1LDcgQEAKIEVsaSBCZW5kZXJza3kKIEFuZHJldyBCZW5uZXR0cwogQW5keSBCZW5za3kKK0V6cmEgQmVyY2gKIE1pY2hlbCBWYW4gZGVuIEJlcmdoCiBKdWxpYW4gQmVybWFuCiBCcmljZSBCZXJuYQpAQCAtOTMsNiArMTAwLDcgQEAKIFBoaWxpcHBlIEJpb25kaQogU3R1YXJ0IEJpc2hvcAogUm95IEJpeGxlcgorUmVuYXVkIEJsYW5jaAogTWlrZSBCbGFuZAogTWFydGluIEJsZXNzCiBQYWJsbyBCbGV5ZXIKQEAgLTEwMiwxMSArMTEwLDEzIEBACiBQYXVsIEJvZGRpZQogTWF0dGhldyBCb2VkaWNrZXIKIERhdmlkIEJvbGVuCi1Gb3Jlc3QgQm9uZAogR2F3YWluIEJvbHRvbgorRm9yZXN0IEJvbmQKIEdyZWdvcnkgQm9uZAorTWF0aWFzIEJvcmRlc2UKIEp1cmplbiBCb3MKIFBldGVyIEJvc2NoCitEYW4gQm9zd2VsbAogRXJpYyBCb3VjawogVGhpZXJyeSBCb3VzY2gKIFNlYmFzdGlhbiBCb3ZpbmcKQEAgLTExNSwyMSArMTI1LDI1IEBACiBHZW9yZyBCcmFuZGwKIENocmlzdG9waGVyIEJyYW5ub24KIFRlcnJlbmNlIEJyYW5ub24KK0VyaWsgQnJheQogQnJpYW4gQnJhemlsCiBEYXZlIEJyZW5uYW4KIFRvbSBCcmlkZ21hbgorQW50aG9ueSBCcmlnZ3MKIFRvYmlhcyBCcmluawogUmljaGFyZCBCcm9kaWUKIE1pY2hhZWwgQnJvZ2h0b24KIERhbmllbCBCcm90c2t5CiBKZWFuIEJyb3V3ZXJzCiBHYXJ5IFMuIEJyb3duCitUaXR1cyBCcm93bgogT2xlZyBCcm95dG1hbm4KIERhdmUgQnJ1ZWNrCiBGcmFuY2lzY28gTWFydMOtbiBCcnVndcOpCiBGbG9yaXMgQnJ1eW5vb2doZQogU3RhbiBCdWJyb3Vza2kKIEVyaWsgZGUgQnVlZ2VyCitKYW4tSGVpbiBCw7xocm1hbgogRGljayBCdWx0ZXJtYW4KIEJpbGwgQnVtZ2FybmVyCiBKaW1teSBCdXJnZXR0CkBAIC0xMzksMTQgKzE1MywxNSBAQAogVGFybiBXZWlzbmVyIEJ1cnRvbgogTGVlIEJ1c2J5CiBSYWxwaCBCdXRsZXIKK05pY29sYXMgQ2Fkb3UKIEpwIENhbGRlcm9uZQogQXJuYXVkIENhbG1ldHRlcwogRGFuaWVsIENhbHZlbG8KIFRvbnkgQ2FtcGJlbGwKIEJyZXR0IENhbm5vbgogTWlrZSBDYXJsdG9uCitQaWVycmUgQ2FycmllcgogVGVycnkgQ2Fycm9sbAotRGFtaWVuIENhc3NvdQogTG9yZW56byBNLiBDYXR1Y2NpCiBEb25uIENhdmUKIENoYXJsZXMgQ2F6YWJvbgpAQCAtMTU3LDkgKzE3MiwxMCBAQAogSm9obiBDaGFuZGxlcgogSHllLVNoaWsgQ2hhbmcKIEplZmZyZXkgQ2hhbmcKLU1pdGNoIENoYXBtYW4KLUdyZWcgQ2hhcG1hbgorR29kZWZyb2lkIENoYXBlbGxlCiBCcmFkIENoYXBtYW4KK0dyZWcgQ2hhcG1hbgorTWl0Y2ggQ2hhcG1hbgogRGF2aWQgQ2hhdW0KIE5pY29sYXMgQ2hhdXZhdAogSmVycnkgQ2hlbgpAQCAtMTcyLDkgKzE4OCwxMSBAQAogVmFkaW0gQ2h1Z3Vub3YKIERhdmlkIENpbmVnZQogQ3JhaWcgQ2l0cm8KK0NocmlzIENsYXJrCiBNaWtlIENsYXJrc29uCiBBbmRyZXcgQ2xlZ2cKIEJyYWQgQ2xlbWVudHMKK1JvYmJpZSBDbGVtb25zCiBTdGV2ZSBDbGlmdAogSGVydsOpIENvYXRhbmhheQogTmljayBDb2dobGFuCkBAIC0xODUsOCArMjAzLDkgQEAKIEplZmZlcnkgQ29sbGlucwogUm9iZXJ0IENvbGxpbnMKIFBhdWwgQ29sb21pZXRzCi1EZW52ZXIgQ29uZXliZWFyZQorQ2hyaXN0b3BoZSBDb21iZWxsZXMKIEdlcmVteSBDb25kcmEKK0RlbnZlciBDb25leWJlYXJlCiBKdWFuIEpvc8OpIENvbnRpCiBNYXR0IENvbndheQogRGF2aWQgTS4gQ29va2UKQEAgLTIxMiw2ICsyMzEsNyBAQAogQW50b25pbyBDdW5pCiBCcmlhbiBDdXJ0aW4KIExpc2FuZHJvIERhbGNpbgorRGFycmVuIERhbGUKIEFuZHJldyBEYWxrZQogTGFycyBEYW1lcm93CiBFdmFuIERhbmRyZWEKQEAgLTIyMCwxMCArMjQwLDEzIEBACiBCZW4gRGFybmVsbAogS3VzaGFsIERhcwogSm9uYXRoYW4gRGFzdGVlbAorUGllcnJlLVl2ZXMgRGF2aWQKK1hhdmllciBkZSBHYXllCiBKb2huIERlR29vZAogTmVkIERlaWx5CiBWaW5jZW50IERlbGZ0CiBBcm5hdWQgRGVsb2JlbGxlCitLb25yYWQgRGVsb25nCiBFcmlrIERlbWFpbmUKIEpvaG4gRGVubmlzCiBSb2dlciBEZXYKQEAgLTIzOSw2ICsyNjIsNyBAQAogSHVtYmVydG8gRGlvZ2VuZXMKIFl2ZXMgRGlvbm5lCiBEYW5pZWwgRGl0dG1hcgorSm9zaXAgRGpvbG9uZ2EKIEphcm9taXIgRG9sZWNlawogSXNtYWlsIERvbm1legogTWFyY29zIERvbm9sbwpAQCAtMjU4LDExICsyODIsMTEgQEAKIEFuZHkgRHVzdG1hbgogR2FyeSBEdXphbgogRXVnZW5lIER2dXJlY2hlbnNraQotSm9zaXAgRHpvbG9uZ2EKIE1heGltIER6dW1hbmVua28KIFdhbHRlciBEw7Zyd2FsZAogSGFucyBFY2thcmR0CiBSb2RvbHBobyBFY2toYXJkdAorSm9obiBFZG1vbmRzCiBHcmFudCBFZHdhcmRzCiBKb2huIEVocmVzbWFuCiBUYWwgRWluYXQKQEAgLTI3MCwyOSArMjk0LDM1IEBACiBBbmRyZXcgRWxhbmQKIEp1bGllbiDDiWxpZQogTGFuY2UgRWxsaW5naGF1cworRGFuaWVsIEVsbGlzCiBEYXZpZCBFbHkKIEplZmYgRXBsZXIKK0plZmYgTWNOZWlsCiBUb20gRXBwZXJseQogU3RvZmZlbCBFcmFzbXVzCiBKw7xyZ2VuIEEuIEVyaGFyZAogTWljaGFlbCBFcm5zdAogQmVuIEVzY290bwogQW5keSBFc2tpbHNzb24KK0FuZHLDqSBFc3BhemUKIFN0ZWZhbiBFc3NlcgogTmljb2xhcyBFc3RpYmFscwotU3RlcGhlbiBEIEV2YW5zCiBDYXJleSBFdmFucworU3RlcGhlbiBEIEV2YW5zCiBUaW0gRXZlcmV0dAogUGF1bCBFdmVyaXR0CiBEYXZpZCBFdmVybHkKIERhbmllbCBFdmVycworV2luc3RvbiBFd2VydAogR3JlZyBFd2luZwogTWFydGlqbiBGYWFzc2VuCiBDbG92aXMgRmFicmljaW8KIEFuZHJlYXMgRmFlcmJlcgogQmlsbCBGYW5jaGVyCitNaWNoYWVsIEZhcnJlbGwKIFRyb3kgSi4gRmFycmVsbAogTWFyayBGYXZhcworQm9yaXMgRmVsZAogTmllbHMgRmVyZ3Vzb24KIFNlYmFzdGlhbiBGZXJuYW5kZXoKIEZsb3JpYW4gRmVzdGkKQEAgLTMwOSwxMCArMzM5LDEzIEBACiBBbWF1cnkgRm9yZ2VvdCBkJ0FyYwogRG91ZyBGb3J0CiBKb2huIEZvdWh5CitBbmRyZXcgRnJhbmNpcwogTWFydGluIEZyYW5rbGluCitCcnVjZSBGcmVkZXJpa3NlbgogUm9iaW4gRnJpZWRyaWNoCiBCcmFkbGV5IEZyb2VobGUKIEl2YW4gRnJvaG5lCitNYXR0aGlhcyBGdWNocwogSmltIEZ1bHRvbgogVGFkYXlvc2hpIEZ1bmFiYQogR3lybyBGdW5jaApAQCAtMzQ3LDkgKzM4MCwxMiBAQAogSm9uYXRoYW4gR2lkZHkKIEpvaGFubmVzIEdpanNiZXJzCiBNaWNoYWVsIEdpbGZpeAorWWFubmljayBHaW5ncmFzCitNaWNoYWVsIEdvZGVyYmF1ZXIKIENocmlzdG9waCBHb2hsa2UKIFRpbSBHb2xkZW4KIEd1aWxoZXJtZSBHb27Dp2FsdmVzCitUaWFnbyBHb27Dp2FsdmVzCiBDaHJpcyBHb25uZXJtYW4KIERhdmlkIEdvb2RnZXIKIEhhbnMgZGUgR3JhYWZmCkBAIC0zNjIsMTUgKzM5OCwxOCBAQAogTWljaGFlbCBHdXJhdmFnZQogTGFycyBHdXN0w6RiZWwKIFRob21hcyBHw7x0dGxlcgorSm9uYXMgSC4KIEJhcnJ5IEhhZGRvdwogUGhpbGlwcCBIYWdlbWVpc3RlcgogUGF1bCB0ZW4gSGFnZW4KIFJhc211cyBIYWhuCiBQZXRlciBIYWlnaHQKIFbDoWNsYXYgSGFpc21hbgorV2Fsa2VyIEhhbGUgSVYKIEJvYiBIYWxsZXkKIEplc3NlIEhhbGxpbwogSnVuIEhhbWFubworQWxleGFuZHJlIEhhbWVsaW4KIE1hcmsgSGFtbW9uZAogTWFudXMgSGFuZAogTWlsdG9uIEwuIEhhbmtpbnMKQEAgLTM4MCw2ICs0MTksNyBAQAogRGVyZWsgSGFybGFuZAogSmFzb24gSGFycGVyCiBCcmlhbiBIYXJyaW5nCitKb25hdGhhbiBIYXJ0bGV5CiBMYXJyeSBIYXN0aW5ncwogU2hhbmUgSGF0aGF3YXkKIFJ5Y2hhcmRlIEhhd2tlcwpAQCAtMzkwLDYgKzQzMCw3IEBACiBNYWx0ZSBIZWxtZXJ0CiBMYW5jZSBGaW5uIEhlbHN0ZW4KIEpvbmF0aGFuIEhlbmRyeQorTWljaGFlbCBIZW5yeQogSmFtZXMgSGVuc3RyaWRnZQogS2FzdW4gSGVyYXRoCiBDaHJpcyBIZXJib3J0aApAQCAtNDAxLDEwICs0NDIsMTAgQEAKIE1hZ251cyBMLiBIZXRsYW5kCiBSYXltb25kIEhldHRpbmdlcgogS2V2YW4gSGV5ZG9uCitLZWxzZXkgSGlnaHRvd2VyCiBKYXNvbiBIaWxkZWJyYW5kCiBSaWNoaWUgSGluZGxlCiBLb25yYWQgSGluc2VuCi1NaWNoYWVsIEhlbnJ5CiBEYXZpZCBIb2JsZXkKIFRpbSBIb2NoYmVyZwogSm9lcmctQ3lyaWwgSG9laGxlCkBAIC00MTcsNiArNDU4LDcgQEAKIEdlcnJpdCBIb2xsCiBTaGFuZSBIb2xsb3dheQogUnVuZSBIb2xtCitUaG9tYXMgSG9sbWVzCiBQaGlsaXAgSG9tYnVyZwogTmFvZnVtaSBIb25kYQogSmVmZnJleSBIb25pZwpAQCAtNDI1LDIyICs0NjcsMjcgQEAKIEJyaWFuIEhvb3BlcgogUmFuZGFsbCBIb3BwZXIKIE5hZGF2IEhvcmVzaAorQWxvbiBIb3JldgogSmFuIEhvc2FuZwogS2VuIEhvd2FyZAogQnJhZCBIb3dlcwogTWlrZSBIb3kKIENoaWgtSGFvIEh1YW5nCitDaHJpc3RpYW4gSHVkb24KIExhd3JlbmNlIEh1ZHNvbgogTWljaGFlbCBIdWRzb24KIEppbSBIdWd1bmluCiBHcmVnIEh1bXBocmV5cwogRXJpYyBIdXNzCitUYWloeXVuIEh3YW5nCiBKZXJlbXkgSHlsdG9uCiBMdWR3aWcgSMOkaG5lCiBHZXJoYXJkIEjDpHJpbmcKIEZyZWRyaWsgSMOlw6VyZAorQ2F0YWxpbiBJYWNvYgogTWloYWkgSWJhbmVzY3UKIEFsaSBJa2luY2kKK0Fhcm9uIElsZXMKIExhcnMgSW1taXNjaAogQm9iYnkgSW1wb2xsb25pYQogTWVhZG9yIEluZ2UKQEAgLTQ1OSwxMSArNTA2LDE0IEBACiBKYWNrIEphbnNlbgogQmlsbCBKYW5zc2VuCiBUaG9tYXMgSmFyb3NjaAotWmJ5c3playBKxJlkcnplamV3c2tpLVN6bWVrCitKdWhhbmEgSmF1aGlhaW5lbgorWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1laworSnVsaWVuIEplaGFubmV0CiBEcmV3IEplbmtpbnMKIEZsZW1taW5nIEtqw6ZyIEplbnNlbgogTXVuU2ljIEplb25nCiBDaHJpcyBKZXJkb25laworSmltIEpld2V0dAogT3JqYW4gSm9oYW5zZW4KIEZyZWRyaWsgSm9oYW5zc29uCiBHcmVnb3J5IEsuIEpvaG5zb24KQEAgLTQ3MSwxMyArNTIxLDE1IEBACiBNYXR0IEpvaW5lcgogVGhvbWFzIEpvbGxhbnMKIE5pY29sYXMgSm9seQorQnJpYW4gSy4gSm9uZXMKIEV2YW4gSm9uZXMKIEplcmVteSBKb25lcwogUmljaGFyZCBKb25lcwogSXJtZW4gZGUgSm9uZwogTHVjYXMgZGUgSm9uZ2UKLUpvaG4gSm9yZ2Vuc2VuCitLcmlzdGrDoW4gVmFsdXIgSsOzbnNzb24KIEplbnMgQi4gSm9yZ2Vuc2VuCitKb2huIEpvcmdlbnNlbgogU2lqaW4gSm9zZXBoCiBBbmRyZWFzIEp1bmcKIFRhdHRvbyBNYWJvbnpvIEsuCkBAIC00ODUsMjcgKzUzNywyOSBAQAogQm9iIEthaG4KIEt1cnQgQi4gS2Fpc2VyCiBUYW1pdG8gS2FqaXlhbWEKK0phbiBLYWxpc3pld3NraQogUGV0ZXIgdmFuIEthbXBlbgogUmFmZSBLYXBsYW4KIEphY29iIEthcGxhbi1Nb3NzCi1KYW4gS2FsaXN6ZXdza2kKK1BlciDDmHl2aW5kIEthcmxzZW4KIExvdSBLYXRlcwogSGlyb2FraSBLYXdhaQogU2ViYXN0aWVuIEtlaW0KIFJ5YW4gS2VsbHkKIERhbiBLZW5pZ3NiZXJnCi1Sb2JlcnQgS2VybgogUmFuZGFsbCBLZXJuCitSb2JlcnQgS2VybgogTWFnbnVzIEtlc3NsZXIKIExhd3JlbmNlIEtlc3RlbG9vdAogVml2ZWsgS2hlcmEKLUFraXJhIEtpdGFkYQogTWFkcyBLaWlsZXJpY2gKK0phc29uIEtpbGxlbgogVGFlayBKb28gS2ltCiBXLiBUcmV2b3IgS2luZwogUGF1bCBLaXBwZXMKIFN0ZXZlIEtpcnNjaAogU2ViYXN0aWFuIEtpcnNjaGUKK0FraXJhIEtpdGFkYQogUm9uIEtsYXRjaGtvCiBSZWlkIEtsZWNrbmVyCiBCYXN0aWFuIEtsZWluZWlkYW0KQEAgLTUyMCw2ICs1NzQsOCBAQAogR3JlZyBLb2NoYW5za2kKIERhbW9uIEtvaGxlcgogTWFya28gS29odGFsYQorSmFjZWsgS29uaWVjem55CivQnNCw0YDQuiDQmtC+0YDQtdC90LHQtdGA0LMKIEFya2FkeSBLb3BseWFyb3YKIFZsYWQgS29yb2xldgogSm9zZXBoIEtvc2h5CkBAIC01MzEsMzEgKzU4NywzNiBAQAogTWljaGFlbCBLcmVtZXIKIEZhYmlhbiBLcmV1dHoKIEPDqWRyaWMgS3JpZXIKK1BlZHJvIEtyb2dlcgogSGFubnUgS3Jvc2luZwogQW5kcmVqIEtycGljCiBJdmFuIEtyc3RpxIcKIEFuZHJldyBLdWNobGluZworSm9uIEt1aG4KIFZsYWRpbWlyIEt1c2huaXIKIFJvc3MgTGFnZXJ3YWxsCiBDYW1lcm9uIExhaXJkCiBKZWFuLUJhcHRpc3RlICJKaWJhIiBMYW15CitSb25hbiBMYW15CiBUb3JzdGVuIExhbmRzY2hvZmYKIMWBdWthc3ogTGFuZ2EKIFRpbm8gTGFuZ2UKIEFuZHJldyBMYW5nbWVhZAogRGV0bGVmIExhbm5lcnQKIFNvcmVuIExhcnNlbgorQW1vcyBMYXR0ZWllcgogUGllcnMgTGF1ZGVyCiBCZW4gTGF1cmllCiBTaW1vbiBMYXcKIEp1bGlhIExhd2FsbAogQ2hyaXMgTGF3cmVuY2UKIEJyaWFuIExlYWlyCitNYXRoaWV1IExlZHVjLUhhbWVsCitDaHJpc3RvcGhlciBMZWUKK0lueWVvbCBMZWUKIEphbWVzIExlZQogSm9obiBKLiBMZWUKLUlueWVvbCBMZWUKIFRob21hcyBMZWUKLUNocmlzdG9waGVyIExlZQogVGVubmVzc2VlIExlZXV3ZW5idXJnCiBMdWMgTGVmZWJ2cmUKIFZpbmNlbnQgTGVnb2xsCkBAIC01NjgsNiArNjI5LDcgQEAKIE1hcmMtQW5kcmUgTGVtYnVyZwogSm9obiBMZW50b24KIENocmlzdG9waGVyIFR1ciBMZXNuaWV3c2tpLUxhYXMKK0FsYWluIExldWZyb3kKIE1hcmsgTGV2aW5zb24KIFdpbGxpYW0gTGV3aXMKIEFraXJhIExpCkBAIC01ODQsNiArNjQ2LDcgQEAKIEdyZWdvciBMaW5nbAogTmljayBMb2Nrd29vZAogU3RlcGhhbmllIExvY2t3b29kCitIdWdvIExvcGVzIFRhdmFyZXMKIEFubmUgTG9yZAogVG9tIExvcmVkbwogSnVzdGluIExvdmUKQEAgLTU5Nyw2ICs2NjAsNyBAQAogSmltIEx5bmNoCiBNaWthZWwgTHluZ3ZpZwogTWFydGluIHZvbiBMw7Z3aXMKK0d1aWxsZXJtbyBMw7NwZXotQW5nbGFkYQogQW5kcmV3IEkgTWFjSW50eXJlCiBUaW0gTWFjS2VuemllCiBOaWNrIE1hY2xhcmVuCkBAIC02MDYsNiArNjcwLDcgQEAKIERhdmlkIE1hbGNvbG0KIEtlbiBNYW5oZWltZXIKIFZsYWRpbWlyIE1hcmFuZ296b3YKK0NvbGluIE1hcmMKIERhdmlkIE1hcmVrCiBEb3VnIE1hcmllbgogU3ZlbiBNYXJuYWNoCkBAIC02MTMsOCArNjc4LDEwIEBACiBBbnRob255IE1hcnRpbgogT3dlbiBNYXJ0aW4KIFPDqWJhc3RpZW4gTWFydGluaQorU2lkbmV5IFNhbiBNYXJ0w61uCiBSb2dlciBNYXNzZQogTmljayBNYXRoZXdzb24KK1NpbW9uIE1hdGhpZXUKIEdyYWhhbSBNYXR0aGV3cwogRGlldGVyIE1hdXJlcgogQXJuYXVkIE1hemluCkBAIC02MjUsOCArNjkyLDggQEAKIE1pY2hhZWwgTWNMYXkKIE1hcmsgTWMgTWFob24KIEdvcmRvbiBNY01pbGxhbgotQ2FvbGFuIE1jTmFtYXJhCiBBbmRyZXcgTWNOYW1hcmEKK0Nhb2xhbiBNY05hbWFyYQogQ3JhaWcgTWNQaGVldGVycwogTGFtYmVydCBNZWVydGVucwogQmlsbCB2YW4gTWVsbGUKQEAgLTYzNiw0OSArNzAzLDU3IEBACiBMdWtlIE1ld2J1cm4KIENhcmwgTWV5ZXIKIE1pa2UgTWV5ZXIKK1Bpb3RyIE1leWVyCitBbGV4aXMgTcOpdGFpcmVhdQogU3RldmVuIE1pYWxlCiBUcmVudCBNaWNrCiBUb20gTWlkZGxldG9uCiBTdGFuIE1paGFpCiBTdGVmYW4gTWloYWlsYQogQXJpc3RvdGVsaXMgTWlrcm9wb3Vsb3MKLURhbWllbiBNaWxsZXIKIENoYWQgTWlsbGVyCitEYW1pZW4gTWlsbGVyCiBKYXNvbiBWLiBNaWxsZXIKIEpheSBULiBNaWxsZXIKIFJvbWFuIE1pbG5lcgorSnVsaWVuIE1pb3R0ZQogQW5kcmlpIFYuIE1pc2hrb3Zza3lpCi1EdXN0aW4gSi4gTWl0Y2hlbGwKIERvbSBNaXRjaGVsbAorRHVzdGluIEouIE1pdGNoZWxsCitadWJpbiBNaXRocmEKIEZsb3JpYW4gTWxhZGl0c2NoCiBEb3VnIE1vZW4KIFRoZSBEcmFnb24gRGUgTW9uc3luZQogU2tpcCBNb250YW5hcm8KK1BldGVyIE1vb2R5CiBQYXVsIE1vb3JlCiBEZXJlayBNb3JyCiBKYW1lcyBBIE1vcnJpc29uCitEZXJlayBNY1RhdmlzaCBNb3VuY2UKIFBhYmxvIE1vdXpvCiBNaGVyIE1vdnNpc3lhbgogUnVzbGFuIE1zdG9pCi1Tam9lcmQgTXVsbGVuZGVyCitNaWNoYWVsIE11bGljaAogU2FwZSBNdWxsZW5kZXIKK1Nqb2VyZCBNdWxsZW5kZXIKIE1pY2hhZWwgTXVsbGVyCiBOZWlsIE11bGxlcgorTG91aXMgTXVucm8KIFIuIERhdmlkIE11cnJheQotUGlvdHIgTWV5ZXIKIEpvaG4gTmFnbGUKIFRha2FoaXJvIE5ha2F5YW1hCiBUcmF2ZXJzIE5hcmFuCiBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkKIFZpbG1vcyBOZWJlaGFqCiBGcmVkcmlrIE5laHIKLVRyZW50IE5lbHNvbgogVG9ueSBOZWxzb24KK1RyZW50IE5lbHNvbgogQ2hhZCBOZXR6ZXIKIE1heCBOZXVuaMO2ZmZlcgogR2VvcmdlIE5ldmlsbGUtTmVpbAogSm9oYW5uZXMgTmljb2xhaQogU2FtdWVsIE5pY29sYXJ5CitKb25hdGhhbiBOaWVob2YKIEd1c3Rhdm8gTmllbWV5ZXIKIE9zY2FyIE5pZXJzdHJhc3oKIEhydm9qZSBOaWtzaWMKQEAgLTY5Niw2ICs3NzEsOCBAQAogSm9obiBPJ0Nvbm5vcgogS2V2aW4gTydDb25ub3IKIFRpbSBPJ01hbGxleQorSmFtZXMgT2FrbGV5CitKb24gT2JlcmhlaWRlCiBQYXNjYWwgT2Jlcm5kb2VyZmVyCiBKZWZmcmV5IE9sbGllCiBBZGFtIE9sc2VuCkBAIC03MjAsMTIgKzc5NywxNyBAQAogQWxleGFuZHJlIFBhcmVudGVhdQogRGFuIFBhcmlzaWVuCiBIYXJyaSBQYXNhbmVuCitHYcOrbCBQYXNncmltYXVkCiBKb2UgUGV0ZXJzb24KIFJhbmR5IFBhdXNjaAogU2FtdWVsZSBQZWRyb25pCitKdXN0aW4gUGVlbAogTWFyY2VsIHZhbiBkZXIgUGVpamwKK0JlcmtlciBQZWtzYWcKIFN0ZXZlbiBQZW1iZXJ0b24KIFNhbnRpYWdvIFBlcmVzw7NuCitHZW9yZ2UgUGVyaXN0ZXJha2lzCitNYXRoaWV1IFBlcnJlYXVsdAogTWFyayBQZXJyZWdvCiBUcmV2b3IgUGVycmluCiBHYWJyaWVsIGRlIFBlcnRodWlzCkBAIC03MzQsNiArODE2LDcgQEAKIEpvZSBQZXRlcnNvbgogQ2hyaXMgUGV0cmlsbGkKIEJqb3JuIFBldHRlcnNlbgorUm9ubnkgUGZhbm5zY2htaWR0CiBHZW9mZiBQaGlsYnJpY2sKIEdhdnJpZSBQaGlsaXBzb24KIEFkcmlhbiBQaGlsbGlwcwpAQCAtNzQ5LDYgKzgzMiw3IEBACiBBbnRvaW5lIFBpdHJvdQogSmVhbi1GcmFuw6dvaXMgUGnDqXJvbm5lCiBPbGVnIFBsYWtob3RueXVrCitSZW1pIFBvaW50ZWwKIEd1aWxoZXJtZSBQb2xvCiBNaWNoYWVsIFBvbXJhbmluZwogSXVzdGluIFBvcApAQCAtNzU3LDEzICs4NDEsMTUgQEAKIEFtcml0IFByZW0KIFBhdWwgUHJlc2NvZAogRG9ub3ZhbiBQcmVzdG9uCitQYXVsIFByaWNlCiBKeXJraSBQdWxsaWFpbmVuCiBTdGV2ZSBQdXJjZWxsCi1GZXJuYW5kbyBQw6lyZXoKIEVkdWFyZG8gUMOpcmV6CitGZXJuYW5kbyBQw6lyZXoKIFBpZXJyZSBRdWVudGVsCiBCcmlhbiBRdWlubGFuCiBBbmRlcnMgUXZpc3QKK0rDqXLDtG1lIFJhZGl4CiBCdXJ0b24gUmFkb25zCiBKZWZmIFJhbW5hbmkKIEJyb2RpZSBSYW8KQEAgLTc3OSwxNyArODY1LDIxIEBACiBHYXJldGggUmVlcwogU3RldmUgUmVldmVzCiBMZW5uYXJ0IFJlZ2Vicm8KK0pvaG4gUmVnZWhyCitGZWRlcmljbyBSZWdoZW56YW5pCiBPZmlyIFJlaWNoZW5iZXJnCiBTZWFuIFJlaWZzY2huZWlkZXIKIE1pY2hhZWwgUC4gUmVpbGx5CiBCZXJuaGFyZCBSZWl0ZXIKIFN0ZXZlbiBSZWl6CiBSb2VsYW5kIFJlbmdlbGluaworQW50b2luZSBSZXZlcnNhdAogRmzDoXZpbyBSaWJlaXJvCi1UaW0gUmljZQogRnJhbmNlc2NvIFJpY2NpYXJkaQorVGltIFJpY2UKIEphbiBQaWV0ZXIgUmllZ2VsCiBBcm1pbiBSaWdvCitBcmMgUmlsZXkKIE5pY2hvbGFzIFJpbGV5CiBKZWFuLUNsYXVkZSBSaW1iYXVsdAogVmxhZCBSaXNjdXRpYQpAQCAtNzk4LDE3ICs4ODgsMjEgQEAKIEFudGhvbnkgUm9hY2gKIENhcmwgUm9iYmVuCiBNYXJrIFJvYmVydHMKLUppbSBSb2JpbnNvbgogQW5keSBSb2JpbnNvbgorSmltIFJvYmluc29uCiBNYXJrIFJvZGR5CiBLZXZpbiBSb2RnZXJzCiBHaWFtcGFvbG8gUm9kb2xhCitFbHNvbiBSb2RyaWd1ZXoKIEFkaSBSb2liYW4KK0x1aXMgUm9qYXMKIE1pa2UgUm9tYmVyZwogQXJtaW4gUm9uYWNoZXIKIENhc2UgUm9vbGUKIFRpbW90aHkgUm9zY29lCitFcmlrIFJvc2UKIEppbSBSb3NraW5kCitCcmlhbiBSb3NuZXIKIEp1c3QgdmFuIFJvc3N1bQogSHVnbyB2YW4gUm9zc3VtCiBTYXNraWEgdmFuIFJvc3N1bQpAQCAtODI0LDcgKzkxOCw5IEBACiBKZWZmIFJ1c2gKIFNhbSBSdXNoaW5nCiBNYXJrIFJ1c3NlbGwKK1J1c3R5IFJ1c3NlbGwKIE5pY2sgUnVzc28KK1BhdHJpY2sgU2FiaW4KIFPDqWJhc3RpZW4gU2FibMOpCiBTdW1hbiBTYWhhCiBIYWppbWUgU2FpdG91CkBAIC04MzIsNiArOTI4LDcgQEAKIFJpY2ggU2FsegogS2V2aW4gU2FtYm9ybgogQWRyaWFuIFNhbXBzb24KK0phbWVzIFNhbmRlcnMKIElseWEgU2FuZGxlcgogTWFyayBTYXBpcm8KIFR5IFNhcm5hCkBAIC04NTYsMTQgKzk1MywxNSBAQAogU3RlZmFuIFNjaHdhcnplcgogRGlldG1hciBTY2h3ZXJ0YmVyZ2VyCiBGZWRlcmljbyBTY2h3aW5kdAotU3RldmVuIFNjb3R0CiBCYXJyeSBTY290dAorU3RldmVuIFNjb3R0CiBOaWNrIFNlaWRlbm1hbgogxb1pZ2EgU2VpbG5hY2h0CiBZdXJ5IFNlbGl2YW5vdgogRnJlZCBTZWxscwogSml3b24gU2VvCi1Sb2dlciBTZXJ3eQorScOxaWdvIFNlcm5hCitSb2dlciBELiBTZXJ3eQogSmVycnkgU2V1dHRlcgogRGVuaXMgU2V2ZXJzb24KIElhbiBTZXllcgpAQCAtODgyLDE3ICs5ODAsMjEgQEAKIFRpbSBTaWxrCiBLaXJpbGwgU2ltb25vdgogTmF0aGFuIFBhdWwgU2ltb25zCitBZGFtIFNpbXBraW5zCiBKYW5uZSBTaW5ra29uZW4KIEdlb3JnZSBTaXBlCiBKLiBTaXBwcmVsbAogS3JhZ2VuIFNpdGFrZXIKLUVyaWMgVi4gU21pdGgKIENocmlzdG9waGVyIFNtaXRoCitFcmljIFYuIFNtaXRoCiBHcmVnb3J5IFAuIFNtaXRoCitNYXJrIFNtaXRoCiBSYWZhbCBTbW90cnp5aworRXJpYyBTbm93CiBEaXJrIFNvZWRlCiBQYXVsIFNva29sb3Zza3kKIENvZHkgU29tZXJ2aWxsZQorRWRvYXJkbyBTcGFkb2xpbmkKIENsYXkgU3BlbmNlCiBTdGVmYW4gU3BlcmxpbmcKIFBlciBTcGlsbGluZwpAQCAtOTAyLDkgKzEwMDQsMTIgQEAKIFJhakdvcGFsIFNyaW5pdmFzYW4KIFF1ZW50aW4gU3RhZmZvcmQtRnJhc2VyCiBGcmFuayBTdGFqYW5vCitKb2VsIFN0YW5sZXkKIE9saXZlciBTdGVlbGUKIEdyZWcgU3RlaW4KK0JhcnVjaCBTdGVyaW4KIENocmlzIFN0ZXJuCitBbGV4IFN0ZXdhcnQKIFZpY3RvciBTdGlubmVyCiBSaWNoYXJkIFN0b2FrbGV5CiBQZXRlciBTdG9laHIKQEAgLTkzMiw4ICsxMDM3LDggQEAKIFdpbGxpYW0gVGFua3NsZXkKIENocmlzdGlhbiBUYW56ZXIKIFN0ZXZlbiBUYXNjaHVrCi1Nb250eSBUYXlsb3IKIEFteSBUYXlsb3IKK01vbnR5IFRheWxvcgogQW5hdG9seSBUZWNodG9uaWsKIE1pa2hhaWwgVGVyZWtob3YKIFJpY2hhcmQgTS4gVGV3CkBAIC05NTAsMTMgKzEwNTUsMTcgQEAKIEphc29uIFRpc2hsZXIKIENocmlzdGlhbiBUaXNtZXIKIEZyYW5rIEouIFRvYmluCi1SIExpbmRzYXkgVG9kZAogQmVubmV0dCBUb2RkCitSIExpbmRzYXkgVG9kZAorRXVnZW5lIFRvZGVyCiBFcmlrIFRvbGxlcnVkCiBNYXRpYXMgVG9yY2hpbnNreQogU2FuZHJvIFRvc2kKIFJpY2hhcmQgVG93bnNlbmQKK0RhdmlkIFRvd25zaGVuZAogTGF1cmVuY2UgVHJhdHQKK0FsYmVydG8gVHJldmlubworTWF0dGhpYXMgVHJvZmZhZXMKIEpvaG4gVHJvbXAKIEphc29uIFRyb3dicmlkZ2UKIEFudGhvbnkgVHVpbmluZ2EKQEAgLTk4OSw2ICsxMDk4LDcgQEAKIEthbm5hbiBWaWpheWFuCiBLdXJ0IFZpbGUKIE5vcm1hbiBWaW5lCitQYXVsaSBWaXJ0YW5lbgogRnJhbmsgVmlzc2VyCiBKb2hhbm5lcyBWb2dlbAogU2pvZXJkIGRlIFZyaWVzCkBAIC0xMDIzLDEwICsxMTMzLDEwIEBACiBGcmFuayBXaWVyemJpY2tpCiBCcnljZSAiWm9va28iIFdpbGNveC1PJ0hlYXJuCiBKYWt1YiBXaWxrCitHZXJhbGQgUy4gV2lsbGlhbXMKIEphc29uIFdpbGxpYW1zCiBKb2huIFdpbGxpYW1zCiBTdWUgV2lsbGlhbXMKLUdlcmFsZCBTLiBXaWxsaWFtcwogRnJhbmsgV2lsbGlzb24KIEdyZWcgVi4gV2lsc29uCiBKIERlcmVrIFdpbHNvbgpAQCAtMTA0NCw4ICsxMTU0LDkgQEAKIEtsYXVzLUp1ZXJnZW4gV29sZgogRGFuIFdvbGZlCiBSaWNoYXJkIFdvbGZmCi1EYXJyZW4gV29ycmFsbAorQWRhbSBXb29kYmVjawogR29yZG9uIFdvcmxleQorRGFycmVuIFdvcnJhbGwKIFRob21hcyBXb3V0ZXJzCiBIZWlrbyBXdW5kcmFtCiBEb3VnIFd5YXR0CkBAIC0xMDU0LDYgKzExNjUsNyBAQAogSGlyb2thenUgWWFtYW1vdG8KIEthLVBpbmcgWWVlCiBKYXNvbiBZZW8KK0V1bmdKdW4gWWkKIEJvYiBZb2Rsb3dza2kKIERhbm55IFlvbwogR2VvcmdlIFlvc2hpZGEKZGlmZiAtLWdpdCBhL01pc2MvTkVXUyBiL01pc2MvTkVXUwppbmRleCBiMzMzYzBjLi5mNTliMWI4IDEwMDY0NAotLS0gYS9NaXNjL05FV1MKKysrIGIvTWlzYy9ORVdTCkBAIC0yLDcgKzIsNyBAQAogUHl0aG9uIE5ld3MKICsrKysrKysrKysrCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi40CitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMQogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogKlJlbGVhc2UgZGF0ZTogWFgtWFgtWFhYWCoKQEAgLTEwLDYgKzEwLDY1IEBACiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAorTGlicmFyeQorLS0tLS0tLQorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworVGVzdHMKKy0tLS0tCisKK0J1aWxkCistLS0tLQorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzExOTY0OiBEb2N1bWVudCBhIGNoYW5nZSBpbiB2My4yIHRvIHRoZSBiZWhhdmlvciBvZiB0aGUgaW5kZW50CisgIHBhcmFtZXRlciBvZiBqc29uIGVuY29kaW5nIG9wZXJhdGlvbnMuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIFJlbGVhc2UgQ2FuZGlkYXRlIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiBYWC1TZXAtMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1NzgxOiBGaXggdHdvIHNtYWxsIHJhY2UgY29uZGl0aW9ucyBpbiBpbXBvcnQncyBtb2R1bGUgbG9ja2luZy4KKworTGlicmFyeQorLS0tLS0tLQorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIFJlbGVhc2UgQ2FuZGlkYXRlIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyNS1BdWctMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1NTczOiBtZW1vcnl2aWV3IGNvbXBhcmlzb25zIGFyZSBub3cgcGVyZm9ybWVkIGJ5IHZhbHVlIHdpdGggZnVsbAorICBzdXBwb3J0IGZvciBhbnkgdmFsaWQgc3RydWN0IG1vZHVsZSBmb3JtYXQgZGVmaW5pdGlvbi4gIAorCistIElzc3VlICMxNTMxNjogV2hlbiBhbiBpdGVtIGluIHRoZSBmcm9tbGlzdCBmb3IgX19pbXBvcnRfXyBkb2Vzbid0IGV4aXN0LAorICBkb24ndCByYWlzZSBhbiBlcnJvciwgYnV0IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgcGFydCBvZiBhbiBpbXBvcnQgZG8KKyAgbGV0IHRoYXQgcHJvcGFnYXRlLgorCistIElzc3VlICMxNTc3ODogZW5zdXJlIHRoYXQgc3RyKEltcG9ydEVycm9yKG1zZykpIHJldHVybnMgYSBzdHIKKyAgZXZlbiB3aGVuIG1zZyBpc24ndCBhIHN0ci4KKworLSBJc3N1ZSAjMjA1MTogU291cmNlIGZpbGUgcGVybWlzc2lvbiBiaXRzIGFyZSBvbmNlIGFnYWluIGNvcnJlY3RseQorICBjb3BpZWQgdG8gdGhlIGNhY2hlZCBieXRlY29kZSBmaWxlLiAoVGhlIG1pZ3JhdGlvbiB0byBpbXBvcnRsaWIKKyAgcmVpbnRyb2R1Y2VkIHRoaXMgcHJvYmxlbSBiZWNhdXNlIHRoZXNlIHdhcyBubyByZWdyZXNzaW9uIHRlc3QuIEEgdGVzdAorICBoYXMgYmVlbiBhZGRlZCBhcyBwYXJ0IG9mIHRoaXMgcGF0Y2gpCisKIC0gSXNzdWUgIzE1NzYxOiBGaXggY3Jhc2ggd2hlbiBQWVRIT05FWEVDVVRBQkxFIGlzIHNldCBvbiBNYWMgT1MgWC4KIAogLSBJc3N1ZSAjMTU3MjY6IEZpeCBpbmNvcnJlY3QgYm91bmRzIGNoZWNraW5nIGluIFB5U3RhdGVfRmluZE1vZHVsZS4KQEAgLTE4LDkzICs3Nyw4IEBACiAtIElzc3VlICMxNTYwNDogVXBkYXRlIHVzZXMgb2YgUHlPYmplY3RfSXNUcnVlKCkgdG8gY2hlY2sgZm9yIGFuZCBoYW5kbGUKICAgZXJyb3JzIGNvcnJlY3RseS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzEzMTE5OiBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIGFyZSBub3cgdXNpbmcgIlxyXG4iIG5ld2xpbmUgb24KLSAgV2luZG93cywgYXMgUHl0aG9uIDIuCi0KLS0gSXNzdWUgIzE0NTc5OiBGaXggQ1ZFLTIwMTItMjEzNTogdnVsbmVyYWJpbGl0eSBpbiB0aGUgdXRmLTE2IGRlY29kZXIgYWZ0ZXIKLSAgZXJyb3IgaGFuZGxpbmcuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTQwNDogUmVmbGVhayBpbiBQeU1ldGhvZE9iamVjdCByZXByLgotCi0tIElzc3VlICMxNTM5NDogQW4gaXNzdWUgaW4gUHlNb2R1bGVfQ3JlYXRlIHRoYXQgY2F1c2VkIHJlZmVyZW5jZXMgdG8KLSAgYmUgbGVha2VkIG9uIHNvbWUgZXJyb3IgcGF0aHMgaGFzIGJlZW4gZml4ZWQuICBQYXRjaCBieSBKdWxpYSBMYXdhbGwuCi0KLS0gSXNzdWUgIzE1MzY4OiBBbiBpc3N1ZSB0aGF0IGNhdXNlZCBieXRlY29kZSBnZW5lcmF0aW9uIHRvIGJlCi0gIG5vbi1kZXRlcm1pbmlzdGljIHdoZW4gdXNpbmcgcmFuZG9taXplZCBoYXNoaW5nICgtUikgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzE1MDIwOiBUaGUgcHJvZ3JhbSBuYW1lIHVzZWQgdG8gc2VhcmNoIGZvciBQeXRob24ncyBwYXRoIGlzIG5vdwotICAicHl0aG9uMyIgdW5kZXIgVW5peCwgbm90ICJweXRob24iLgotCi0tIElzc3VlICMxNTAzMzogRml4IHRoZSBleGl0IHN0YXR1cyBidWcgd2hlbiBtb2R1bGVzIGludm9rZWQgdXNpbmcgLW0gc3dpdGgsCi0gIHJldHVybiB0aGUgcHJvcGVyIGZhaWx1cmUgcmV0dXJuIHZhbHVlICgxKS4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSmVmZiBLbnVwcC4KLQotLSBJc3N1ZSAjMTIyNjg6IEZpbGUgcmVhZGxpbmUsIHJlYWRsaW5lcyBhbmQgcmVhZCgpIG9yIHJlYWRhbGwoKSBtZXRob2RzCi0gIG5vIGxvbmdlciBsb3NlIGRhdGEgd2hlbiBhbiB1bmRlcmx5aW5nIHJlYWQgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQuCi0gIElPRXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCBkdWUgdG8gYSByZWFkIHN5c3RlbSBjYWxsIHJldHVybmluZyBFSU5UUgotICBmcm9tIHdpdGhpbiB0aGVzZSBtZXRob2RzLgotCi0tIElzc3VlICMxNTE0MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gZGVhbGxvY2F0aW5nIGluc3RhbmNlcyBvZiB0eXBlcwotICBjcmVhdGVkIHVzaW5nIFB5VHlwZV9Gcm9tU3BlYygpLgotCi0tIElzc3VlICMxMDA1MzogRG9uJ3QgY2xvc2UgRkRzIHdoZW4gRmlsZUlPLl9faW5pdF9fIGZhaWxzLiBMb29zZWx5IGJhc2VkIG9uCi0gIHRoZSB3b3JrIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICMxNDc3NTogRml4IGEgcG90ZW50aWFsIHF1YWRyYXRpYyBkaWN0IGJ1aWxkLXVwIGR1ZSB0byB0aGUgZ2FyYmFnZQotICBjb2xsZWN0b3IgcmVwZWF0ZWRseSB0cnlpbmcgdG8gdW50cmFjayBkaWN0cy4KLQotLSBJc3N1ZSAjMTQ0OTQ6IEZpeCBfX2Z1dHVyZV9fLnB5IGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB0byBub3RlIHRoYXQKLSAgYWJzb2x1dGUgaW1wb3J0cyBhcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gMy4wIGluc3RlYWQgb2YgMi43LgotICBQYXRjaCBieSBTdmVuIE1hcm5hY2guCi0KLS0gSXNzdWUgIzE0NzYxOiBGaXggcG90ZW50aWFsIGxlYWsgb24gYW4gZXJyb3IgY2FzZSBpbiB0aGUgaW1wb3J0IG1hY2hpbmVyeS4KLQotLSBJc3N1ZSAjMTQ2OTk6IEZpeCBjYWxsaW5nIHRoZSBjbGFzc21ldGhvZCBkZXNjcmlwdG9yIGRpcmVjdGx5LgotCi0tIElzc3VlICMxNDQzMzogUHJldmVudCBtc3ZjcnQgY3Jhc2ggaW4gaW50ZXJhY3RpdmUgcHJvbXB0IHdoZW4gc3RkaW4KLSAgaXMgY2xvc2VkLgotCi0tIElzc3VlICMxMTYwMyAoYWdhaW4pOiBTZXR0aW5nIF9fcmVwcl9fIHRvIF9fc3RyX18gbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvcgotICB3aGVuIHJlcHIoKSBvciBzdHIoKSBpcyBjYWxsZWQgb24gc3VjaCBhbiBvYmplY3QuCi0KLS0gSXNzdWUgIzE0NjU4OiBGaXggYmluZGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGEgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbiBvZiBhCi0gIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KLQotLSBJc3N1ZSAjMTQ2MzA6IEZpeCBhIG1lbW9yeSBhY2Nlc3MgYnVnIGZvciBpbnN0YW5jZXMgb2YgYSBzdWJjbGFzcyBvZiBpbnQKLSAgd2l0aCB2YWx1ZSAwLgotCi0tIElzc3VlICMxNDYxMjogRml4IGp1bXBpbmcgYXJvdW5kIHdpdGggYmxvY2tzIGJ5IHNldHRpbmcgZl9saW5lbm8uCi0KLS0gSXNzdWUgIzE0NjA3OiBGaXgga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3aGljaCBzdGFydGVkIHdpdGggYGBfX2BgLgotCi0tIElzc3VlICMxMzg4OTogQ2hlY2sgYW5kIChpZiBuZWNlc3NhcnkpIHNldCBGUFUgY29udHJvbCB3b3JkIGJlZm9yZSBjYWxsaW5nCi0gIGFueSBvZiB0aGUgZHRvYS5jIHN0cmluZyA8LT4gZmxvYXQgY29udmVyc2lvbiBmdW5jdGlvbnMsIG9uIE1TVkMgYnVpbGRzIG9mCi0gIFB5dGhvbi4gIFRoaXMgZml4ZXMgaXNzdWVzIHdoZW4gZW1iZWRkaW5nIFB5dGhvbiBpbiBhIERlbHBoaSBhcHAuCi0KLS0gSXNzdWUgIzE0NDc0OiBTYXZlIGFuZCByZXN0b3JlIGV4Y2VwdGlvbiBzdGF0ZSBpbiB0aHJlYWQuc3RhcnRfbmV3X3RocmVhZCgpCi0gIHdoaWxlIHdyaXRpbmcgZXJyb3IgbWVzc2FnZSBpZiB0aGUgdGhyZWFkIGxlYXZlcyBhIHVuaGFuZGxlZCBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzEzMDE5OiBGaXggcG90ZW50aWFsIHJlZmVyZW5jZSBsZWFrcyBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaAotICBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxNDM3ODogRml4IGNvbXBpbGluZyBhc3QuSW1wb3J0RnJvbSBub2RlcyB3aXRoIGEgIl9fZnV0dXJlX18iIHN0cmluZyBhcwotICB0aGUgbW9kdWxlIG5hbWUgdGhhdCB3YXMgbm90IGludGVybmVkLgotCi0tIElzc3VlICMxNDMzMTogVXNlIHNpZ25pZmljYW50bHkgbGVzcyBzdGFjayBzcGFjZSB3aGVuIGltcG9ydGluZyBtb2R1bGVzIGJ5Ci0gIGFsbG9jYXRpbmcgcGF0aCBidWZmZXJzIG9uIHRoZSBoZWFwIGluc3RlYWQgb2YgdGhlIHN0YWNrLgotCi0tIElzc3VlICMxNDMzNDogUHJldmVudCBpbiBhIHNlZ2ZhdWx0IGluIHR5cGUuX19nZXRhdHRyaWJ1dGVfXyB3aGVuIGl0IHdhcyBub3QKLSAgcGFzc2VkIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE0Njk2Mjk6IEFsbG93IGN5Y2xlcyB0aHJvdWdoIGFuIG9iamVjdCdzIF9fZGljdF9fIHNsb3QgdG8gYmUKLSAgY29sbGVjdGVkLiAoRm9yIGV4YW1wbGUgaWYgYGB4Ll9fZGljdF9fIGlzIHhgYCkuCi0KLS0gSXNzdWUgIzE0MTcyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBtYXJzaGFsbGluZyBhIGJ1ZmZlci1saWtlIG9iamVjdAotICAob3RoZXIgdGhhbiBhIGJ5dGVzIG9iamVjdCkuCi0KLS0gSXNzdWUgIzEzNTIxOiBkaWN0LnNldGRlZmF1bHQoKSBub3cgZG9lcyBvbmx5IG9uZSBsb29rdXAgZm9yIHRoZSBnaXZlbiBrZXksCi0gIG1ha2luZyBpdCAiYXRvbWljIiBmb3IgbWFueSBwdXJwb3Nlcy4gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCi0KLS0gSXNzdWUgIzE0NDcxOiBGaXggYSBwb3NzaWJsZSBidWZmZXIgb3ZlcnJ1biBpbiB0aGUgd2lucmVnIG1vZHVsZS4KKy0gSXNzdWUgIzE0ODQ2OiBpbXBvcnRsaWIuRmlsZUZpbmRlciBub3cgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB0aGUKKyAgZGlyZWN0b3J5IGJlaW5nIHNlYXJjaGVkIGlzIHJlbW92ZWQgYWZ0ZXIgYSBwcmV2aW91cyBpbXBvcnQgYXR0ZW1wdAogCiBMaWJyYXJ5CiAtLS0tLS0tCkBAIC0xMTIsNiArODYsOSBAQAogLSBJc3N1ZSAjMTMzNzA6IEVuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcwogICBjb21waWxlZCB1c2luZyB0aGUgY2xhbmcgY29tcGlsZXIKIAorLSBJc3N1ZSAjMTMwNzI6IFRoZSBhcnJheSBtb2R1bGUncyAndScgZm9ybWF0IGNvZGUgaXMgbm93IGRlcHJlY2F0ZWQgYW5kCisgIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gNC4wLgorCiAtIElzc3VlICMxNTU0NDogRml4IERlY2ltYWwuX19mbG9hdF9fIHRvIHdvcmsgd2l0aCBwYXlsb2FkLWNhcnJ5aW5nIE5hTnMuCiAKIC0gSXNzdWUgIzE1MjQ5OiBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMgRnJvbSBsaW5lcyAod2hlbgpAQCAtMTE5LDkgKzk2LDE1IEBACiAKIC0gSXNzdWUgIzE1Nzc3OiBGaXggYSByZWZsZWFrIGluIF9wb3NpeHN1YnByb2Nlc3MuCiAKKy0gSXNzdWUgIyM2NjUxOTQ6IFVwZGF0ZSBlbWFpbC51dGlscy5sb2NhbHRpbWUgdG8gdXNlIGRhdGV0aW1lLmFzdGltZXpvbmUgYW5kCisgIGNvcnJlY3RseSBoYW5kbGUgaGlzdG9yaWMgY2hhbmdlcyBpbiBVVEMgb2Zmc2V0cy4KKwogLSBJc3N1ZSAjMTUxOTk6IEZpeCBKYXZhU2NyaXB0J3MgZGVmYXVsdCBNSU1FIHR5cGUgdG8gYXBwbGljYXRpb24vamF2YXNjcmlwdC4KICAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgogCistIElzc3VlICMxMjY0MzogY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGUgbm93IHJlc3BlY3RzIHN5cy5leGNlcHRob29rIHdoZW4KKyAgZGlzcGxheWluZyBleGNlcHRpb25zIChQYXRjaCBieSBBYXJvbiBJbGVzKQorCiAtIElzc3VlICMxMzU3OTogc3RyaW5nLkZvcm1hdHRlciBub3cgdW5kZXJzdGFuZHMgdGhlICdhJyBjb252ZXJzaW9uIHNwZWNpZmllci4KIAogLSBJc3N1ZSAjMTU1OTU6IEZpeCBzdWJwcm9jZXNzLlBvcGVuKHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQpAQCAtMTMwLDIwICsxMTMsNDk3IEBACiAtIElzc3VlICMxNTQ3NzogSW4gY21hdGggYW5kIG1hdGggbW9kdWxlcywgYWRkIHdvcmthcm91bmQgZm9yIHBsYXRmb3JtcyB3aG9zZQogICBzeXN0ZW0tc3VwcGxpZWQgbG9nMXAgZnVuY3Rpb24gZG9lc24ndCByZXNwZWN0IHNpZ25zIG9mIHplcm9zLgogCistIElzc3VlICMxNTcxNTogaW1wb3J0bGliLl9faW1wb3J0X18oKSB3aWxsIHNpbGVuY2UgYW4gSW1wb3J0RXJyb3Igd2hlbiB0aGUgdXNlCisgIG9mIGZyb21saXN0IGxlYWRzIHRvIGEgZmFpbGVkIGltcG9ydC4KKworLSBJc3N1ZSAjMTQ2Njk6IEZpeCBwaWNrbGluZyBvZiBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBvbiBNYWNPU1gKKyAgYnkgc2VuZGluZy9yZWNlaXZpbmcgYW4gYWNrbm93bGVkZ21lbnQgYWZ0ZXIgZmlsZSBkZXNjcmlwdG9yIHRyYW5zZmVyLgorICBUZXN0UGlja2xpbmdDb25uZWN0aW9uIGhhcyBiZWVuIHJlZW5hYmxlZCBmb3IgTWFjT1NYLgorCiAtIElzc3VlICMxMTA2MjogRml4IGFkZGluZyBhIG1lc3NhZ2UgZnJvbSBmaWxlIHRvIEJhYnlsIG1haWxib3guCiAKIC0gSXNzdWUgIzE1NjQ2OiBQcmV2ZW50IGVxdWl2YWxlbnQgb2YgYSBmb3JrIGJvbWIgd2hlbiB1c2luZwogICBtdWx0aXByb2Nlc3Npbmcgb24gV2luZG93cyB3aXRob3V0IHRoZSAiaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJyIKICAgaWRpb20uCiAKLS0gSXNzdWUgIzE1NDI0OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBhcnJheSBvYmplY3RzLgotICBQYXRjaCBieSBMdWR3aWcgSMOkaG5lLgorLSBJc3N1ZSAjMTU2Nzg6IEZpeCBJRExFIG1lbnVzIHdoZW4gc3RhcnRlZCBmcm9tIE9TIFggY29tbWFuZCBsaW5lCisgICgzLjMuMGIyIHJlZ3Jlc3Npb24pLgorCitDIEFQSQorLS0tLS0KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0Njc0OiBBZGQgYSBkaXNjdXNzaW9uIG9mIHRoZSBqc29uIG1vZHVsZSdzIHN0YW5kYXJkIGNvbXBsaWFuY2UuCisgIFBhdGNoIGJ5IENocmlzIFJlYmVydC4KKworLSBDcmVhdGUgYSAnQ29uY3VycmVudCBFeGVjdXRpb24nIHNlY3Rpb24gaW4gdGhlIGRvY3MsIGFuZCBzcGxpdCB1cCB0aGUKKyAgJ09wdGlvbmFsIE9wZXJhdGluZyBTeXN0ZW0gU2VydmljZXMnIHNlY3Rpb24gdG8gdXNlIGEgbW9yZSB1c2VyLWNlbnRyaWMKKyAgY2xhc3NpZmljYXRpb24gc2NoZW1lIChzcGxpdHRpbmcgdGhlbSBhY3Jvc3MgdGhlIG5ldyBDRSBzZWN0aW9uLCBJUEMgYW5kCisgIHRleHQgcHJvY2Vzc2luZykuIE9wZXJhdGluZyBzeXN0ZW0gbGltaXRhdG9ucyBjYW4gYmUgcmVmbGVjdGVkIHdpdGgKKyAgdGhlIFNwaGlueCA6cGxhdGZvcm06IHRhZywgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGFzIHBhcnQgb2YgdGhlIFRhYmxlIG9mCisgIENvbnRlbnRzLgorCistIElzc3VlICM0OTY2OiBCcmluZyB0aGUgc2VxdWVuY2UgZG9jcyB1cCB0byBkYXRlIGZvciB0aGUgUHkzayB0cmFuc2l0aW9uCisgIGFuZCB0aGUgbWFueSBsYW5ndWFnZSBlbmhhbmNlbWVudHMgc2luY2UgdGhleSB3ZXJlIG9yaWdpbmFsIHdyaXR0ZW4KKworLSBUaGUgInBhdGggaW1wb3J0ZXIiIG1pc25vbWVyIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggRXJpYyBTbm93J3MKKyAgbW9yZS1hd2t3YXJkLWJ1dC1hdC1sZWFzdC1ub3Qtd3Jvbmcgc3VnZ2VzdGlvbiBvZiAicGF0aCBiYXNlZCBmaW5kZXIiIGluCisgIHRoZSBpbXBvcnQgc3lzdGVtIHJlZmVyZW5jZSBkb2NzCisKKy0gSXNzdWUgIzE1NjQwOiBEb2N1bWVudCBpbXBvcnRsaWIuYWJjLkZpbmRlciBhcyBkZXByZWNhdGVkLgorCistIElzc3VlICMxNTYzMDogQWRkIGFuIGV4YW1wbGUgZm9yICJjb250aW51ZSIgc3RtdCBpbiB0aGUgdHV0b3JpYWwuIFBhdGNoIGJ5CisgIERhbmllbCBFbGxpcy4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE1NzQ3OiBaRlMgYWx3YXlzIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZQorICBVRl9JTU1VVEFCTEUgZmxhZyAodmlhIGVpdGhlciBjaGZsYWdzIG9yIGxjaGZsYWdzKTsgcmVmYWN0b3IgYWZmZWN0ZWQKKyAgdGVzdHMgaW4gdGVzdF9wb3NpeC5weSB0byBhY2NvdW50IGZvciB0aGlzLgorCistIElzc3VlICMxNTI4NTogUmVmYWN0b3IgdGhlIGFwcHJvYWNoIGZvciB0ZXN0aW5nIGNvbm5lY3QgdGltZW91dHMgdXNpbmcKKyAgdHdvIGV4dGVybmFsIGhvc3RzIHRoYXQgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIHR5cGUKKyAgb2YgdGVzdC4KKworLSBJc3N1ZSAjMTU3NDM6IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBtZXRob2QgdXNhZ2UgaW4gdXJsbGliIHRlc3RzLiBQYXRjaCBieQorICBKZWZmIEtudXBwLgorCistIElzc3VlICMxNTYxNTogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBqc29uIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQKKyAgaW5wdXQgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCisKK0J1aWxkCistLS0tLQorCistIE91dHB1dCBsaWIgZmlsZXMgZm9yIFBHTyBidWlsZCBpbnRvIFBHTyBkaXJlY3RvcnkuCisKKy0gUGljayB1cCAzMi1iaXQgbGF1bmNoZXIgZnJvbSBQR08gZGlyZWN0b3J5IG9uIDY0LWJpdCBQR08gYnVpbGQuCisKKy0gRHJvcCBQQ1xweXRob25fbnQuaCBhcyBpdCdzIG5vdCB1c2VkLiBBZGQgaW5wdXQgZGVwZW5kZW5jeSBvbiBjdXN0b20KKyAgYnVpbGQgc3RlcC4KKworLSBJc3N1ZSAjMTU1MTE6IERyb3AgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBweXRob254eS5saWIgZnJvbSBfZGVjaW1hbAorICBhbWQ2NCBjb25maWd1cmF0aW9uLgorCistIEFkZCBtaXNzaW5nIFBHSS9QR08gY29uZmlndXJhdGlvbnMgZm9yIHB5d2xhdW5jaGVyLgorCistIElzc3VlICMxNTY0NTogRW5zdXJlIDJ0bzMgZ3JhbW1hciBwaWNrbGVzIGFyZSBwcm9wZXJseSBpbnN0YWxsZWQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQmV0YSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAxMi1BdWctMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1NTY4OiBGaXggdGhlIHJldHVybiB2YWx1ZSBvZiAieWllbGQgZnJvbSIgd2hlbiBTdG9wSXRlcmF0aW9uIGlzCisgIHJhaXNlZCBieSBhIGN1c3RvbSBpdGVyYXRvci4KKworLSBJc3N1ZSAjMTMxMTk6IHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgYXJlIG5vdyB1c2luZyAiXHJcbiIgbmV3bGluZSBvbgorICBXaW5kb3dzLCBhcyBQeXRob24gMi4KKworLSBJc3N1ZSAjMTU1MzQ6IEZpeCB0aGUgZmFzdC1zZWFyY2ggZnVuY3Rpb24gZm9yIG5vbi1BU0NJSSBVbmljb2RlIHN0cmluZ3MuCisKKy0gSXNzdWUgIzE1NTA4OiBGaXggdGhlIGRvY3N0cmluZyBmb3IgX19pbXBvcnRfXyB0byBoYXZlIHRoZSBwcm9wZXIgZGVmYXVsdAorICB2YWx1ZSBvZiAwIGZvciAnbGV2ZWwnIGFuZCB0byBub3QgbWVudGlvbiBuZWdhdGl2ZSBsZXZlbHMgc2luY2UgdGhleSBhcmUgbm90CisgIHN1cHBvcnRlZC4KKworLSBJc3N1ZSAjMTU0MjU6IEVsaW1pbmF0ZWQgdHJhY2ViYWNrIG5vaXNlIGZyb20gbW9yZSBzaXR1YXRpb25zIGludm9sdmluZworICBpbXBvcnRsaWIuCisKKy0gSXNzdWUgIzE0NTc4OiBTdXBwb3J0IG1vZHVsZXMgcmVnaXN0ZXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeSBhZ2Fpbi4KKworLSBJc3N1ZSAjMTU0NjY6IFN0b3AgdXNpbmcgVFlQRV9JTlQ2NCBpbiBtYXJzaGFsLCB0byBtYWtlIGltcG9ydGxpYi5oIChhbmQgb3RoZXIKKyAgYnl0ZSBjb2RlIGZpbGVzKSBlcXVhbCBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IHN5c3RlbXMuCisKKy0gSXNzdWUgIzE2OTIzMzU6IE1vdmUgaW5pdGlhbCBleGNlcHRpb24gYXJncyBhc3NpZ25tZW50IHRvCisgICJCYXNlRXhjZXB0aW9uLl9fbmV3X18iIHRvIGhlbHAgcGlja2xpbmcgb2YgbmFpdmUgc3ViY2xhc3Nlcy4KKworLSBJc3N1ZSAjMTI4MzQ6IEZpeCBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKSBmb3Igbm9uLWNvbnRpZ3VvdXMgYXJyYXlzLgorCistIElzc3VlICMxNTQ1NjogRml4IGNvZGUgX19zaXplb2ZfXyBhZnRlciAjMTIzOTkgY2hhbmdlLiAgUGF0Y2ggYnkgU2VyaGl5CisgIFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTU0MDQ6IFJlZmxlYWsgaW4gUHlNZXRob2RPYmplY3QgcmVwci4KKworLSBJc3N1ZSAjMTUzOTQ6IEFuIGlzc3VlIGluIFB5TW9kdWxlX0NyZWF0ZSB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvIGJlIGxlYWtlZAorICBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgorCistIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZSBub24tZGV0ZXJtaW5pc3RpYworICBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjMTUyMDI6IENvbnNpc3RlbnRseSB1c2UgdGhlIG5hbWUgImZvbGxvd19zeW1saW5rcyIgZm9yIG5ldyBwYXJhbWV0ZXJzCisgIGluIG9zIGFuZCBzaHV0aWwgZnVuY3Rpb25zLgorCistIElzc3VlICMxNTMxNDogX19tYWluX18uX19sb2FkZXJfXyBpcyBub3cgc2V0IGNvcnJlY3RseSBkdXJpbmcgaW50ZXJwcmV0ZXIKKyAgc3RhcnR1cC4KKworLSBJc3N1ZSAjMTUxMTE6IFdoZW4gYSBtb2R1bGUgaW1wb3J0ZWQgdXNpbmcgJ2Zyb20gaW1wb3J0JyBoYXMgYW4gSW1wb3J0RXJyb3IKKyAgaW5zaWRlIGl0c2VsZiwgZG9uJ3QgbWFzayB0aGF0IGZhY3QgYmVoaW5kIGEgZ2VuZXJpYyBJbXBvcnRFcnJvciBmb3IgdGhlCisgIG1vZHVsZSBpdHNlbGYuCisKKy0gSXNzdWUgIzE1MjkzOiBBZGQgR0Mgc3VwcG9ydCB0byB0aGUgQVNUIGJhc2Ugbm9kZSB0eXBlLgorCistIElzc3VlICMxNTI5MTogRml4IGEgbWVtb3J5IGxlYWsgd2hlcmUgQVNUIG5vZGVzIHdoZXJlIG5vdCBwcm9wZXJseQorICBkZWFsbG9jYXRlZC4KKworLSBJc3N1ZSAjMTUxMTA6IEZpeCB0aGUgdHJhY2ViYWNrcyBnZW5lcmF0ZWQgYnkgImltcG9ydCB4eHgiIHRvIG5vdCBzaG93IHRoZQorICBpbXBvcnRsaWIgc3RhY2sgZnJhbWVzLgorCistIElzc3VlICMxNTAyMDogVGhlIHByb2dyYW0gbmFtZSB1c2VkIHRvIHNlYXJjaCBmb3IgUHl0aG9uJ3MgcGF0aCBpcyBub3cKKyAgInB5dGhvbjMiIHVuZGVyIFVuaXgsIG5vdCAicHl0aG9uIi4KKworLSBJc3N1ZSAjMTUwMzM6IEZpeCB0aGUgZXhpdCBzdGF0dXMgYnVnIHdoZW4gbW9kdWxlcyBpbnZva2VkIHVzaW5nIC1tIHN3aXRoLAorICByZXR1cm4gdGhlIHByb3BlciBmYWlsdXJlIHJldHVybiB2YWx1ZSAoMSkuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEplZmYgS251cHAuCisKKy0gSXNzdWUgIzE1MjI5OiBBbiBPU0Vycm9yIHN1YmNsYXNzIHdob3NlIF9faW5pdF9fIGRvZXNuJ3QgY2FsbCBiYWNrCisgIE9TRXJyb3IuX19pbml0X18gY291bGQgcHJvZHVjZSBpbmNvbXBsZXRlIGluc3RhbmNlcywgbGVhZGluZyB0byBjcmFzaGVzIHdoZW4KKyAgY2FsbGluZyBzdHIoKSBvbiB0aGVtLgorCistIElzc3VlIDE1MzA3OiBWaXJ0dWFsIGVudmlyb25tZW50cyBub3cgdXNlIHN5bWxpbmtzIHdpdGggZnJhbWV3b3JrIGJ1aWxkcyBvbgorICBNYWMgT1MgWCwgbGlrZSBvdGhlciBQT1NJWCBidWlsZHMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTU0MjQ6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGFycmF5IG9iamVjdHMuICBQYXRjaCBieQorICBMdWR3aWcgSMOkaG5lLgorCistIElzc3VlICMxNTU3NjogQWxsb3cgZXh0ZW5zaW9uIG1vZHVsZXMgdG8gYWN0IGFzIGEgcGFja2FnZSdzIF9faW5pdF9fIG1vZHVsZS4KKworLSBJc3N1ZSAjMTU1MDI6IEhhdmUgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkgd29yayBvbiBzeXMubWV0YV9wYXRoIGluc3RlYWQKKyAgb2Ygc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisKKy0gSXNzdWUgIzE1MTYzOiBQeWRvYyBzaG91bGRuJ3QgbGlzdCBfX2xvYWRlcl9fIGFzIG1vZHVsZSBkYXRhLgorCistIElzc3VlICMxNTQ3MTogRG8gbm90IHVzZSBtdXRhYmxlIG9iamVjdHMgYXMgZGVmYXVsdHMgZm9yCisgIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkuCisKKy0gSXNzdWUgIzE1NTU5OiBUbyBhdm9pZCBhIHByb2JsZW1hdGljIGZhaWx1cmUgbW9kZSB3aGVuIHBhc3NlZCB0byB0aGUgYnl0ZXMKKyAgY29uc3RydWN0b3IsIG9iamVjdHMgaW4gdGhlIGlwYWRkcmVzcyBtb2R1bGUgbm8gbG9uZ2VyIGltcGxlbWVudCBfX2luZGV4X18KKyAgKHRoZXkgc3RpbGwgaW1wbGVtZW50IF9faW50X18gYXMgYXBwcm9wcmlhdGUpCisKKy0gSXNzdWUgIzE1NTQ2OiBGaXggaGFuZGxpbmcgb2YgcGF0aG9sb2dpY2FsIGlucHV0IGRhdGEgaW4gdGhlIHBlZWsoKSBhbmQKKyAgcmVhZDEoKSBtZXRob2RzIG9mIHRoZSBCWjJGaWxlLCBHemlwRmlsZSBhbmQgTFpNQUZpbGUgY2xhc3Nlcy4KIAogLSBJc3N1ZSAjMTMwNTI6IEZpeCBJRExFIGNyYXNoaW5nIHdoZW4gcmVwbGFjZSBzdHJpbmcgaW4gU2VhcmNoL1JlcGxhY2UgZGlhbG9nCiAgIGVuZGVkIHdpdGggJ1wnLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KIAotLSBJc3N1ZSAjMTU1Mzg6IEZpeCBjb21waWxhdGlvbiBvZiB0aGUgZ2V0bmFtZWluZm8oKSAvIGdldGFkZHJpbmZvKCkKLSAgZW11bGF0aW9uIGNvZGUuICBQYXRjaCBieSBQaGlsaXBwIEhhZ2VtZWlzdGVyLgorLSBJc3N1ZSAjMTI2NTU6IEluc3RlYWQgb2YgcmVxdWlyaW5nIGEgY3VzdG9tIHR5cGUsIG9zLnNjaGVkX2dldGFmZmluaXR5IGFuZAorICBvcy5zY2hlZF9zZXRhZmZpbml0eSBub3cgdXNlIHJlZ3VsYXIgc2V0cyBvZiBpbnRlZ2VycyB0byByZXByZXNlbnQgdGhlIENQVXMgYQorICBwcm9jZXNzIGlzIHJlc3RyaWN0ZWQgdG8uCisKKy0gSXNzdWUgIzE1NTM4OiBGaXggY29tcGlsYXRpb24gb2YgdGhlIGdldG5hbWVpbmZvKCkgLyBnZXRhZGRyaW5mbygpIGVtdWxhdGlvbgorICBjb2RlLiAgUGF0Y2ggYnkgUGhpbGlwcCBIYWdlbWVpc3Rlci4KKworLSBJc3N1ZSAjMTU1MTk6IFByb3Blcmx5IGV4cG9zZSBXaW5kb3dzUmVnaXN0cnlGaW5kZXIgaW4gaW1wb3J0bGliIChhbmQgdXNlIHRoZQorICBjb3JyZWN0IHRlcm0gZm9yIGl0KS4gT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgorCistIElzc3VlICMxNTUwMjogQnJpbmcgdGhlIGltcG9ydGxpYiBBQkNzIGludG8gbGluZSB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZQorICBpbXBvcnQgcHJvdG9jb2xzIGdpdmVuIFBFUCA0MjAuIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KKworLSBJc3N1ZSAjMTU0OTk6IExhdW5jaGluZyBhIHdlYmJyb3dzZXIgaW4gVW5peCB1c2VkIHRvIHNsZWVwIGZvciBhIGZldyBzZWNvbmRzLgorICBPcmlnaW5hbCBwYXRjaCBieSBBbnRvbiBCYXJrb3Zza3kuCisKKy0gSXNzdWUgIzE1NDYzOiBUaGUgZmF1bHRoYW5kbGVyIG1vZHVsZSB0cnVuY2F0ZXMgc3RyaW5ncyB0byA1MDAgY2hhcmFjdGVycywKKyAgaW5zdGVhZCBvZiAxMDAsIHRvIGJlIGFibGUgdG8gZGlzcGxheSBsb25nIGZpbGUgcGF0aHMuCisKKy0gSXNzdWUgIzYwNTY6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIHVzZSBzZXRibG9ja2luZyhUcnVlKSBvbiB0aGUgc29ja2V0cyBpdAorICB1c2VzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgSiBEZXJlayBXaWxzb24uCisKKy0gSXNzdWUgIzE1MzY0OiBGaXggc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKSB0byBiZSBhbiBhYnNvbHV0ZSBwYXRoLgorCistIElzc3VlICMxNTA0MTogVXBkYXRlICJzZWUgYWxzbyIgbGlzdCBpbiB0a2ludGVyIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzE1NDEzOiBvcy50aW1lcygpIGhhZCBkaXNhcHBlYXJlZCB1bmRlciBXaW5kb3dzLgorCistIElzc3VlICMxNTQwMjogQW4gaXNzdWUgaW4gdGhlIHN0cnVjdCBtb2R1bGUgdGhhdCBjYXVzZWQgc3lzLmdldHNpemVvZiB0bworICByZXR1cm4gaW5jb3JyZWN0IHJlc3VsdHMgZm9yIHN0cnVjdC5TdHJ1Y3QgaW5zdGFuY2VzIGhhcyBiZWVuIGZpeGVkLiAgSW5pdGlhbAorICBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTIzMjogV2hlbiBtYW5nbGVfZnJvbSBpcyBUcnVlLCBlbWFpbC5HZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzCisgIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAnRnJvbSAnIHRoYXQgb2NjdXIgaW4gYSBNSU1FIHByZWFtYmxlIG9yIGVwaWxvZ3VlLgorCistIElzc3VlICMxNTA5NDogSW5jb3JyZWN0bHkgcGxhY2VkICNlbmRpZiBpbiBfdGtpbnRlci5jLiAgUGF0Y2ggYnkgU2VyaGl5CisgIFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTM5MjI6IGFyZ3BhcnNlIG5vIGxvbmdlciBpbmNvcnJlY3RseSBzdHJpcHMgJy0tJ3MgdGhhdCBhcHBlYXIgYWZ0ZXIKKyAgdGhlIGZpcnN0IG9uZS4KKworLSBJc3N1ZSAjMTIzNTM6IGFyZ3BhcnNlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFyZ3VtZW50IHZhbHVlcy4KKworLSBJc3N1ZSAjMTAwMTcsIGlzc3VlICMxNDk5ODogRml4IFR5cGVFcnJvciB1c2luZyBwcHJpbnQgb24gZGljdGlvbmFyaWVzIHdpdGgKKyAgdXNlci1kZWZpbmVkIHR5cGVzIGFzIGtleXMgb3Igb3RoZXIgdW5vcmRlcmFibGUga2V5cy4KKworLSBJc3N1ZSAjMTUzOTc6IGluc3BlY3QuZ2V0bW9kdWxlbmFtZSgpIGlzIG5vdyBiYXNlZCBkaXJlY3RseSBvbiBpbXBvcnRsaWIgdmlhIGEKKyAgbmV3IGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzKCkgQVBJLgorCistIElzc3VlICMxNDYzNTogdGVsbmV0bGliIHdpbGwgdXNlIHBvbGwoKSByYXRoZXIgdGhhbiBzZWxlY3QoKSB3aGVuIHBvc3NpYmxlIHRvCisgIGF2b2lkIGZhaWxpbmcgZHVlIHRvIHRoZSBzZWxlY3QoKSBmaWxlIGRlc2NyaXB0b3IgbGltaXQuCisKKy0gSXNzdWUgIzE1MTgwOiBDbGFyaWZ5IHBvc2l4cGF0aC5qb2luKCkgZXJyb3IgbWVzc2FnZSB3aGVuIG1peGluZyBzdHIgJiBieXRlcy4KKworLSBJc3N1ZSAjMTUzNDM6IHBrZ3V0aWwgbm93IGluY2x1ZGVzIGFuIGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcyBpbXBsZW1lbnRhdGlvbiBmb3IKKyAgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyIChzaW1pbGFyIHRvIHRoZSB3YXkgaXQgYWxyZWFkeSBoYW5kbGVkCisgIHppcGltcG9ydC56aXBpbXBvcnRlcikuCisKKy0gSXNzdWUgIzE1MzE0OiBydW5weSBub3cgc2V0cyBfX21haW5fXy5fX2xvYWRlcl9fIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMTUzNTc6IFRoZSBpbXBvcnQgZW11bGF0aW9uIGluIHBrZ3V0aWwgaXMgbm93IGRlcHJlY2F0ZWQuIHBrZ3V0aWwgdXNlcworICBpbXBvcnRsaWIgaW50ZXJuYWxseSByYXRoZXIgdGhhbiB0aGUgZW11bGF0aW9uLgorCistIElzc3VlICMxNTIzMzogUHl0aG9uIG5vdyBndWFyYW50ZWVzIHRoYXQgY2FsbGFibGVzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYXRleGl0CisgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbiBhIGRldGVybWluaXN0aWMgb3JkZXIuCisKKy0gSXNzdWUgIzE1MjM4OiBzaHV0aWwuY29weXN0YXQgbm93IGNvcGllcyBMaW51eCAiZXh0ZW5kZWQgYXR0cmlidXRlcyIuCisKKy0gSXNzdWUgIzE1MjMwOiBydW5weS5ydW5fcGF0aCBub3cgY29ycmVjdGx5IHNldHMgX19wYWNrYWdlX18gYXMgZGVzY3JpYmVkIGluCisgIHRoZSBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxNTMxNTogU3VwcG9ydCBWUyAyMDEwIGluIGRpc3R1dGlscyBjeWd3aW5jb21waWxlci4KKworLSBJc3N1ZSAjMTUyOTQ6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcGtndXRpbC5leHRlbmRfcGF0aCgpJ3MgaGFuZGxpbmcgb2YgbmVzdGVkCisgIG5hbWVzcGFjZSBwYWNrYWdlcy4KKworLSBJc3N1ZSAjMTUwNTY6IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpIGFuZCBzb3VyY2VfZnJvbV9jYWNoZSgpIHJhaXNlCisgIE5vdEltcGxlbWVudGVkRXJyb3Igd2hlbiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIHNldCB0byBOb25lLgorCistIElzc3VlICMxNTI1NjogR3JhbW1hdGljYWwgbWlzdGFrZSBpbiBleGNlcHRpb24gcmFpc2VkIGJ5IGltcC5maW5kX21vZHVsZSgpLgorCistIElzc3VlICM1OTMxOiB3c2dpcmVmIGVudmlyb24gdmFyaWFibGUgU0VSVkVSX1NPRlRXQVJFIHdpbGwgc3BlY2lmeSBhbgorICBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0ZXJtIGxpa2UgQ1B5dGhvbiwgSnl0aG9uIGluc3RlYWQgb2YgZ2VuZXJpYyAiUHl0aG9uIi4KKworLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAibWF4X2J1ZmZlcl9zaXplIiBvZiBCdWZmZXJlZFdyaXRlciBhbmQKKyAgQnVmZmVyZWRSV1BhaXIsIGZyb20gdGhlIGlvIG1vZHVsZS4KKworLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAidmVyc2lvbiIgb2YgYXJncGFyc2UuQXJndW1lbnRQYXJzZXIuCisKKy0gSXNzdWUgIzE0ODE0OiBJbXBsZW1lbnQgbW9yZSBjb25zaXN0ZW50IG9yZGVyaW5nIGFuZCBzb3J0aW5nIGJlaGF2aW91ciBmb3IKKyAgaXBhZGRyZXNzIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0ODE0OiBpcGFkZHJlc3MgbmV0d29yayBvYmplY3RzIGNvcnJlY3RseSByZXR1cm4gTm90SW1wbGVtZW50ZWQgd2hlbgorICBjb21wYXJlZCB0byBhcmJpdHJhcnkgb2JqZWN0cyBpbnN0ZWFkIG9mIHJhaXNpbmcgVHlwZUVycm9yLgorCistIElzc3VlICMxNDk5MDogQ29ycmVjdGx5IGZhaWwgd2l0aCBTeW50YXhFcnJvciBvbiBpbnZhbGlkIGVuY29kaW5nIGRlY2xhcmF0aW9uLgorCistIElzc3VlICMxNDgxNDogaXBhZGRyZXNzIG5vdyBwcm92aWRlcyBtb3JlIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2VzIHdoZW4KKyAgY29uc3RydWN0aW5nIGluc3RhbmNlcyBkaXJlY3RseSAoY2hhbmdlcyBwZXJtaXR0ZWQgZHVyaW5nIGJldGEgZHVlIHRvCisgIHByb3Zpc2lvbmFsIEFQSSBzdGF0dXMpLgorCistIElzc3VlICMxNTI0NzogRmlsZUlPIG5vdyByYWlzZXMgYW4gZXJyb3Igd2hlbiBnaXZlbiBhIGZpbGUgZGVzY3JpcHRvciBwb2ludGluZworICB0byBhIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTUyNjE6IFN0b3Agb3Muc3RhdChmZCkgY3Jhc2hpbmcgb24gV2luZG93cyB3aGVuIGZkIG5vdCBvcGVuLgorCistIElzc3VlICMxNTE2NjogSW1wbGVtZW50IGltcC5nZXRfdGFnKCkgdXNpbmcgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZy4KKworLSBJc3N1ZSAjMTUyMTA6IENhdGNoIEtleUVycm9yIHdoZW4gaW1wb3J0bGliLl9faW5pdF9fIGNhbid0IGZpbmQKKyAgX2Zyb3plbl9pbXBvcnRsaWIgaW4gc3lzLm1vZHVsZXMsIG5vdCBJbXBvcnRFcnJvci4KKworLSBJc3N1ZSAjMTUwMzA6IGltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXIgbm93IHN1cHBvcnRzIHRoZSBuZXcgc291cmNlIHNpemUKKyAgaGVhZGVyIGZpZWxkIGluIC5weWMgZmlsZXMuCisKKy0gSXNzdWUgIzUzNDY6IFByZXNlcnZlIHBlcm1pc3Npb25zIG9mIG1ib3gsIE1NREYgYW5kIEJhYnlsIG1haWxib3ggZmlsZXMgb24KKyAgZmx1c2goKS4KKworLSBJc3N1ZSAjMTA1NzE6IEZpeCB0aGUgIi0tc2lnbiIgb3B0aW9uIG9mIGRpc3R1dGlscycgdXBsb2FkIGNvbW1hbmQuICBQYXRjaCBieQorICBKYWt1YiBXaWxrLgorCistIElzc3VlICM5NTU5OiBJZiBtZXNzYWdlcyB3ZXJlIG9ubHkgYWRkZWQsIGEgbmV3IGZpbGUgaXMgbm8gbG9uZ2VyIGNyZWF0ZWQgYW5kCisgIHJlbmFtZWQgb3ZlciB0aGUgb2xkIGZpbGUgd2hlbiBmbHVzaCgpIGlzIGNhbGxlZCBvbiBhbiBtYm94LCBNTURGIG9yIEJhYnlsCisgIG1haWxib3guCisKKy0gSXNzdWUgMTA5MjQ6IEZpeGVkIGNyeXB0Lm1rc2FsdCgpIHRvIHVzZSBhIFJORyB0aGF0IGlzIHN1aXRhYmxlIGZvcgorICBjcnlwdG9ncmFwaGljIHB1cnBvc2UuCisKKy0gSXNzdWUgIzE1MTg0OiBFbnN1cmUgY29uc2lzdGVudCByZXN1bHRzIG9mIE9TIFggY29uZmlndXJhdGlvbiB0YWlsb3JpbmcgZm9yCisgIHVuaXZlcnNhbCBidWlsZHMgYnkgZmFjdG9yaW5nIG91dCBjb21tb24gT1MgWC1zcGVjaWZpYyBjdXN0b21pemF0aW9ucyBmcm9tCisgIHN5c2NvbmZpZywgZGlzdHV0aWxzLnN5c2NvbmZpZywgZGlzdHV0aWxzLnV0aWwsIGFuZCBkaXN0dXRpbHMudW5peGNjb21waWxlcgorICBpbnRvIGEgbmV3IG1vZHVsZSBfb3N4X3N1cHBvcnQuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMxNTYxMDogUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgoKSBub3cgdXNlcyBhICdsZXZlbCcgb2YgMCBpbnN0ZWFkIG9mIC0xLgorCistIElzc3VlcyAjMTUxNjksICMxNDU5OTogU3RyaXAgb3V0IHRoZSBDIGltcGxlbWVudGF0aW9uIG9mCisgIGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpIHVzZWQgYnkgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgYW5kCisgIHVzZWQgdGhlIFB5dGhvbiBjb2RlIGluc3RlYWQuIExlYWRzIHRvIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkgdG8gbm90CisgIHRyeSB0byBpbmZlciB0aGUgc291cmNlIHBhdGggZnJvbSB0aGUgYnl0ZWNvZGUgcGF0aCBhcworICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSBkb2VzLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcworICBvZiB0eXBlIGN0eXBlcy5jX3VpbnQzMiBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgorCistIElzc3VlICMxNTE5NDogVXBkYXRlIGxpYmZmaSB0byB0aGUgMy4wLjExIHJlbGVhc2UuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxNTQ1ODogcHl0aG9uLWNvbmZpZyBnZXRzIGEgbmV3IG9wdGlvbiAtLWNvbmZpZ2RpciB0byBwcmludCB0aGUgJExJQlBMCisgIHZhbHVlLgorCistIE1vdmUgaW1wb3J0bGliLnRlc3QuYmVuY2htYXJrIHRvIFRvb2xzL2ltcG9ydGJlbmNoLgorCistIElzc3VlICMxMjYwNTogVGhlIGdkYiBob29rcyBmb3IgZGVidWdnaW5nIENQeXRob24gKHdpdGhpbiBUb29scy9nZGIpIGhhdmUgYmVlbgorICBlbmhhbmNlZCB0byBzaG93IGluZm9ybWF0aW9uIG9uIG1vcmUgQyBmcmFtZXMgcmVsZXZhbnQgdG8gQ1B5dGhvbiB3aXRoaW4gdGhlCisgICJweS1idCIgYW5kICJweS1idC1mdWxsIiBjb21tYW5kczoKKyAgICAqIEMgZnJhbWVzIHRoYXQgYXJlIHdhaXRpbmcgb24gdGhlIEdJTAorICAgICogQyBmcmFtZXMgdGhhdCBhcmUgZ2FyYmFnZS1jb2xsZWN0aW5nCisgICAgKiBDIGZyYW1lcyB0aGF0IGFyZSBkdWUgdG8gdGhlIGludm9jYXRpb24gb2YgYSBQeUNGdW5jdGlvbgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1NDQ0OiBVc2UgcHJvcGVyIHNwZWxsaW5nIGZvciBub24tQVNDSUkgY29udHJpYnV0b3IgbmFtZXMuICBQYXRjaAorICBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTI5NTogUmVvcmdhbml6ZSBhbmQgcmV3cml0ZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiB0aGUgaW1wb3J0IHN5c3RlbS4KKworLSBJc3N1ZSAjMTUyMzA6IENsZWFybHkgZG9jdW1lbnQgc29tZSBvZiB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIHJ1bnB5IG1vZHVsZSBhbmQKKyAgbnVkZ2UgcmVhZGVycyB0b3dhcmRzIGltcG9ydGxpYiB3aGVuIGFwcHJvcHJpYXRlLgorCistIElzc3VlICMxNTA1MzogQ29weSBQeXRob24gMy4zIGltcG9ydCBsb2NrIGNoYW5nZSBub3RpY2UgdG8gYWxsIHJlbGV2YW50CisgIGZ1bmN0aW9ucyBpbiBpbXAgaW5zdGVhZCBvZiBqdXN0IGF0IHRoZSB0b3Agb2YgdGhlIHJlbGV2YW50IHNlY3Rpb24uCisKKy0gSXNzdWUgIzE1Mjg4OiBMaW5rIHRvIHRoZSB0ZXJtICJsb2FkZXIiIGluIG5vdGVzIGluIHBrZ3V0aWwgYWJvdXQgaG93IHRoaW5ncworICB3b24ndCB3b3JrIGFzIGV4cGVjdGVkIGluIFB5dGhvbiAzLjMgYW5kIG1hcmsgdGhlIHJlcXVpc2l0ZSBmdW5jdGlvbnMgYXMKKyAgImNoYW5nZWQiIHNpbmNlIHRoZXkgd2lsbCBubyBsb25nZXIgd29yayB3aXRoIG1vZHVsZXMgZGlyZWN0bHkgaW1wb3J0ZWQgYnkKKyAgaW1wb3J0IGl0c2VsZi4KKworLSBJc3N1ZSAjMTM1NTc6IENsYXJpZnkgZWZmZWN0IG9mIGdpdmluZyB0d28gZGlmZmVyZW50IG5hbWVzcGFjZXMgdG8gZXhlYyBvcgorICBleGVjZmlsZSgpLgorCistIElzc3VlICMxNTI1MDogRG9jdW1lbnQgdGhhdCBmaWxlY21wLmRpcmNtcCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCisgIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgX19zaXplb2ZfXyB0ZXN0cyBpbnRvIHRlc3Rfc3VwcG9ydC4gIFBhdGNoIGJ5CisgIFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MzIwOiBNYWtlIGl0ZXJhdGluZyB0aGUgbGlzdCBvZiB0ZXN0cyB0aHJlYWQtc2FmZSB3aGVuIHJ1bm5pbmcgdGVzdHMKKyAgaW4gbXVsdGlwcm9jZXNzIG1vZGUuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorCistIElzc3VlICMxNTE2ODogTW92ZSBpbXBvcnRsaWIudGVzdCB0byB0ZXN0LnRlc3RfaW1wb3J0bGliLgorCistIElzc3VlICMxNTA5MTogUmVhY3RpdmF0ZSBhIHRlc3Qgb24gVU5JWCB3aGljaCB3YXMgZmFpbGluZyB0aGFua3MgdG8gYQorICBmb3Jnb3R0ZW4gaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkgY2FsbC4KKworLSBJc3N1ZSAjMTUyMzA6IEFkb3B0ZWQgYSBtb3JlIHN5c3RlbWF0aWMgYXBwcm9hY2ggaW4gdGhlIHJ1bnB5IHRlc3RzLgorCistIElzc3VlICMxNTMwMDogRW5zdXJlIHRoZSB0ZW1wb3JhcnkgdGVzdCB3b3JraW5nIGRpcmVjdG9yaWVzIGFyZSBpbiB0aGUgc2FtZQorICBwYXJlbnQgZm9sZGVyIHdoZW4gcnVubmluZyB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZSBmcm9tIGEgUHl0aG9uIGJ1aWxkLgorICBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KKworLSBJc3N1ZSAjMTUyODQ6IFNraXAge3NlbmQscmVjdn1tc2cgdGVzdHMgaW4gdGVzdF9zb2NrZXQgd2hlbiBJUHY2IGlzIG5vdAorICBlbmFibGVkLiBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gSXNzdWUgIzE1Mjc3OiBGaXggYSByZXNvdXJjZSBsZWFrIGluIHN1cHBvcnQucHkgd2hlbiBJUHY2IGlzIGRpc2FibGVkLiAgUGF0Y2gKKyAgYnkgQnJpYW4gQnJhemlsLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTE3MTU6IEZpeCBtdWx0aWFyY2ggZGV0ZWN0aW9uIHdpdGhvdXQgaGF2aW5nIERlYmlhbiBkZXZlbG9wbWVudCB0b29scworICAoZHBrZy1kZXYpIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMTUwMzc6IEJ1aWxkIE9TIFggaW5zdGFsbGVycyB3aXRoIGxvY2FsIGNvcHkgb2YgbmN1cnNlcyA1LjkgbGlicmFyaWVzCisgIHRvIGF2b2lkIGN1cnNlcy51bmdldF93Y2ggYnVnIHByZXNlbnQgaW4gb2xkZXIgdmVyc2lvbnMgb2YgbmN1cnNlcyBzdWNoIGFzCisgIHRob3NlIHNoaXBwZWQgd2l0aCBPUyBYLgorCistIElzc3VlICMxNTU2MDogRml4IGJ1aWxkaW5nIF9zcWxpdGUzIGV4dGVuc2lvbiBvbiBPUyBYIHdpdGggYW4gU0RLLiAgQWxzbywgZm9yCisgIE9TIFggaW5zdGFsbGVycywgZW5zdXJlIGNvbnNpc3RlbnQgc3FsaXRlMyBiZWhhdmlvciBhbmQgZmVhdHVyZSBhdmFpbGFiaWxpdHkKKyAgYnkgYnVpbGRpbmcgYSBsb2NhbCBjb3B5IG9mIGxpYnNxbGl0ZTMgcmF0aGVyIHRoYW4gZGVwZW5kaW5nIG9uIHRoZSB3aWRlIHJhbmdlCisgIG9mIHZlcnNpb25zIHN1cHBsaWVkIHdpdGggdmFyaW91cyBPUyBYIHJlbGVhc2VzLgorCistIElzc3VlICM4ODQ3OiBEaXNhYmxlIENPTURBVCBmb2xkaW5nIGluIFdpbmRvd3MgUEdPIGJ1aWxkcy4KKworLSBJc3N1ZSAjMTQwMTg6IEZpeCBPUyBYIFRjbC9UayBmcmFtZXdvcmsgY2hlY2tpbmcgd2hlbiB1c2luZyBPUyBYIFNES3MuCisKKy0gSXNzdWUgIzE1NDMxOiBBZGQgX2ZyZWV6ZV9pbXBvcnRsaWIgcHJvamVjdCB0byByZWdlbmVyYXRlIGltcG9ydGxpYi5oIG9uCisgIFdpbmRvd3MuIFBhdGNoIGJ5IEtyaXN0asOhbiBWYWx1ciBKw7Nuc3Nvbi4KKworLSBJc3N1ZSAjMTQxOTc6IEZvciBPUyBYIGZyYW1ld29yayBidWlsZHMsIGVuc3VyZSBsaW5rcyB0byB0aGUgc2hhcmVkIGxpYnJhcnkKKyAgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgcHJvcGVyIEFCSSBzdWZmaXguCisKKy0gSXNzdWUgIzE0MzMwOiBGb3IgY3Jvc3MgYnVpbGRzLCBkb24ndCB1c2UgaG9zdCBweXRob24sIHVzZSBob3N0IHNlYXJjaCBwYXRocworICBmb3IgaG9zdCBjb21waWxlci4KKworLSBJc3N1ZSAjMTUyMzU6IEFsbG93IEJlcmtsZXkgREIgdmVyc2lvbnMgdXAgdG8gNS4zIHRvIGJ1aWxkIHRoZSBkYm0gbW9kdWxlLgorCistIElzc3VlICMxNTI2ODogU2VhcmNoIGN1cnNlcy5oIGluIC91c3IvaW5jbHVkZS9uY3Vyc2Vzdy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBCZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDI3LUp1bi0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBGaXggYSAobW9zdCBsaWtlbHkpIHZlcnkgcmFyZSBtZW1vcnkgbGVhayB3aGVuIGNhbGxpbmcgbWFpbigpIGFuZCBub3QgYmVpbmcKKyAgYWJsZSB0byBkZWNvZGUgYSBjb21tYW5kLWxpbmUgYXJndW1lbnQuCisKKy0gSXNzdWUgIzE0ODE1OiBVc2UgUHlfc3NpemVfdCBpbnN0ZWFkIG9mIGxvbmcgZm9yIHRoZSBvYmplY3QgaGFzaCwgdG8KKyAgcHJlc2VydmUgYWxsIDY0IGJpdHMgb2YgaGFzaCBvbiBXaW42NC4KKworLSBJc3N1ZSAjMTIyNjg6IEZpbGUgcmVhZGxpbmUsIHJlYWRsaW5lcyBhbmQgcmVhZCgpIG9yIHJlYWRhbGwoKSBtZXRob2RzCisgIG5vIGxvbmdlciBsb3NlIGRhdGEgd2hlbiBhbiB1bmRlcmx5aW5nIHJlYWQgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQuCisgIElPRXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCBkdWUgdG8gYSByZWFkIHN5c3RlbSBjYWxsIHJldHVybmluZyBFSU5UUgorICBmcm9tIHdpdGhpbiB0aGVzZSBtZXRob2RzLgorCistIElzc3VlICMxMTYyNjogQWRkIF9TaXplVCBmdW5jdGlvbnMgdG8gc3RhYmxlIEFCSS4KKworLSBJc3N1ZSAjMTUxNDY6IEFkZCBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTUxNDI6IEZpeCByZWZlcmVuY2UgbGVhayB3aGVuIGRlYWxsb2NhdGluZyBpbnN0YW5jZXMgb2YgdHlwZXMKKyAgY3JlYXRlZCB1c2luZyBQeVR5cGVfRnJvbVNwZWMoKS4KKworLSBJc3N1ZSAjMTUwNDI6IEFkZCBQeVN0YXRlX0FkZE1vZHVsZSBhbmQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUuIEFkZCB2ZXJzaW9uCisgIGd1YXJkIGZvciBQeV9MSU1JVEVEX0FQSSBhZGRpdGlvbnMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTAwNTM6IERvbid0IGNsb3NlIEZEcyB3aGVuIEZpbGVJTy5fX2luaXRfXyBmYWlscy4gTG9vc2VseSBiYXNlZCBvbgorICB0aGUgd29yayBieSBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjMTUwOTY6IFJlbW92ZWQgc3VwcG9ydCBmb3IgdXInJyBhcyB0aGUgcmF3IG5vdGF0aW9uIGlzbid0CisgIGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi54J3MgcmF3IHVuaWNvZGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTM3ODM6IEdlbmVyYXRvciBvYmplY3RzIG5vdyB1c2UgdGhlIGlkZW50aWZpZXIgQVBJcyBpbnRlcm5hbGx5CisKKy0gSXNzdWUgIzE0ODc0OiBSZXN0b3JlIGNoYXJtYXAgZGVjb2Rpbmcgc3BlZWQgdG8gcHJlLVBFUCAzOTMgbGV2ZWxzLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTAyNjogdXRmLTE2IGVuY29kaW5nIGlzIG5vdyBzaWduaWZpY2FudGx5IGZhc3RlciAodXAgdG8gMTB4KS4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTEwMjI6IG9wZW4oKSBhbmQgaW8uVGV4dElPV3JhcHBlciBhcmUgbm93IGNhbGxpbmcKKyAgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBpbnN0ZWFkIG9mIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgIGluIHRleHQgbW9kZSBpZiB0aGUgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZC4gRG9uJ3QgY2hhbmdlIHRlbXBvcmFyeSB0aGUKKyAgbG9jYWxlIGVuY29kaW5nIHVzaW5nIGxvY2FsZS5zZXRsb2NhbGUoKSwgdXNlIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZworICBpbnN0ZWFkIG9mIHRoZSB1c2VyIHByZWZlcnJlZCBlbmNvZGluZy4KKworLSBJc3N1ZSAjMTQ2NzM6IEFkZCBFcmljIFNub3cncyBzeXMuaW1wbGVtZW50YXRpb24gaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzE1MDM4OiBPcHRpbWl6ZSBweXRob24gTG9ja3Mgb24gV2luZG93cy4KKworTGlicmFyeQorLS0tLS0tLQogCiAtIElzc3VlICM5ODAzOiBEb24ndCBjbG9zZSBJRExFIG9uIHNhdmluZyBpZiBicmVha3BvaW50IGlzIG9wZW4uCiAgIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgpAQCAtMTYzLDYzICs2MjMsMTUwIEBACiAtIElzc3VlICMxNTQ4NzogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgYnVmZmVyZWQgSS9PIG9iamVjdHMuCiAgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzYwNTY6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIHVzZSBzZXRibG9ja2luZyhUcnVlKSBvbiB0aGUKLSAgc29ja2V0cyBpdCB1c2VzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgSiBEZXJlayBXaWxzb24uCistIElzc3VlICMxNTUxNDogQ29ycmVjdCBfX3NpemVvZl9fIHN1cHBvcnQgZm9yIGNwdV9zZXQuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzE1MDQxOiB1cGRhdGUgInNlZSBhbHNvIiBsaXN0IGluIHRraW50ZXIgZG9jdW1lbnRhdGlvbi4KKy0gSXNzdWUgIzE1MTg3OiBCdWdmaXg6IHJlbW92ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgdGVzdF9zaHV0aWwgd2FzIGxlYXZpbmcKKyAgYmVoaW5kLgogCi0tIElzc3VlICMxNTQwMjogQW4gaXNzdWUgaW4gdGhlIHN0cnVjdCBtb2R1bGUgdGhhdCBjYXVzZWQgc3lzLmdldHNpemVvZiB0bwotICByZXR1cm4gaW5jb3JyZWN0IHJlc3VsdHMgZm9yIHN0cnVjdC5TdHJ1Y3QgaW5zdGFuY2VzIGhhcyBiZWVuIGZpeGVkLgotICBJbml0aWFsIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCistIElzc3VlICMxNTE3NzogQWRkZWQgZGlyX2ZkIHBhcmFtZXRlciB0byBvcy5md2FsaygpLgogCi0tIElzc3VlICMxNTIzMjogd2hlbiBtYW5nbGVfZnJvbSBpcyBUcnVlLCBlbWFpbC5HZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzCi0gIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAnRnJvbSAnIHRoYXQgb2NjdXIgaW4gYSBNSU1FIHByZWFtYmxlIG9yIGVwaWxvZ3VlLgorLSBJc3N1ZSAjMTUxNzY6IENsYXJpZmllZCBiZWhhdmlvciwgZG9jdW1lbnRhdGlvbiwgYW5kIGltcGxlbWVudGF0aW9uCisgIG9mIG9zLmxpc3RkaXIoKS4KIAotLSBJc3N1ZSAjMTM5MjI6IGFyZ3BhcnNlIG5vIGxvbmdlciBpbmNvcnJlY3RseSBzdHJpcHMgJy0tJ3MgdGhhdCBhcHBlYXIKLSAgYWZ0ZXIgdGhlIGZpcnN0IG9uZS4KKy0gSXNzdWUgIzE1MDYxOiBSZS1pbXBsZW1lbnRlZCBobWFjLmNvbXBhcmVfZGlnZXN0KCkgaW4gQyB0byBwcmV2ZW50IGZ1cnRoZXIKKyAgdGltaW5nIGFuYWx5c2lzIGFuZCB0byBzdXBwb3J0IGFsbCBidWZmZXIgcHJvdG9jb2wgYXdhcmUgb2JqZWN0cyBhcyB3ZWxsIGFzCisgIEFTQ0lJIG9ubHkgc3RyIGluc3RhbmNlcyBzYWZlbHkuCiAKLS0gSXNzdWUgIzEyMzUzOiBhcmdwYXJzZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgbnVsbCBhcmd1bWVudCB2YWx1ZXMuCistIElzc3VlICMxNTE2NDogQ2hhbmdlIHJldHVybiB2YWx1ZSBvZiBwbGF0Zm9ybS51bmFtZSgpIGZyb20gYQorICBwbGFpbiB0dXBsZSB0byBhIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUuCiAKLS0gSXNzdWVzICMxMDAxNyBhbmQgIzE0OTk4OiBGaXggVHlwZUVycm9yIHVzaW5nIHBwcmludCBvbiBkaWN0aW9uYXJpZXMgd2l0aAotICB1c2VyLWRlZmluZWQgdHlwZXMgYXMga2V5cyBvciBvdGhlciB1bm9yZGVyYWJsZSBrZXlzLgorLSBTdXBwb3J0IE1hZ2VpYSBMaW51eCBpbiB0aGUgcGxhdGZvcm0gbW9kdWxlLgogCi0tIElzc3VlICMxNDYzNTogdGVsbmV0bGliIHdpbGwgdXNlIHBvbGwoKSByYXRoZXIgdGhhbiBzZWxlY3QoKSB3aGVuIHBvc3NpYmxlCi0gIHRvIGF2b2lkIGZhaWxpbmcgZHVlIHRvIHRoZSBzZWxlY3QoKSBmaWxlIGRlc2NyaXB0b3IgbGltaXQuCistIElzc3VlICMxMTY3ODogU3VwcG9ydCBBcmNoIGxpbnV4IGluIHRoZSBwbGF0Zm9ybSBtb2R1bGUuCiAKLS0gSXNzdWUgIzE1MTgwOiBDbGFyaWZ5IHBvc2l4cGF0aC5qb2luKCkgZXJyb3IgbWVzc2FnZSB3aGVuIG1peGluZyBzdHIgJiBieXRlcworLSBJc3N1ZSAjMTUxMTg6IENoYW5nZSByZXR1cm4gdmFsdWUgb2Ygb3MudW5hbWUoKSBhbmQgb3MudGltZXMoKSBmcm9tCisgIHBsYWluIHR1cGxlcyB0byBpbW11dGFibGUgaXRlcmFibGUgb2JqZWN0cyB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMKKyAgKHN0cnVjdHNlcSBvYmplY3RzKS4KIAotLSBJc3N1ZSAjMTUyMzA6IHJ1bnB5LnJ1bl9wYXRoIG5vdyBjb3JyZWN0bHkgc2V0cyBfX3BhY2thZ2VfXyBhcyBkZXNjcmliZWQKLSAgaW4gdGhlIGRvY3VtZW50YXRpb24KKy0gU3BlZWQgdXAgX2RlY2ltYWwgYnkgYW5vdGhlciAxMC0xNSUgYnkgY2FjaGluZyB0aGUgdGhyZWFkIGxvY2FsIGNvbnRleHQKKyAgdGhhdCB3YXMgbGFzdCBhY2Nlc3NlZC4gSW4gdGhlIHBpIGJlbmNobWFyayAoNjQtYml0IHBsYXRmb3JtLCBwcmVjPTkpLAorICBfZGVjaW1hbCBpcyBub3cgb25seSAxLjV4IHNsb3dlciB0aGFuIGZsb2F0LgogCi0tIElzc3VlICMxNDk5MDogQ29ycmVjdGx5IGZhaWwgd2l0aCBTeW50YXhFcnJvciBvbiBpbnZhbGlkIGVuY29kaW5nCi0gIGRlY2xhcmF0aW9uLgorLSBSZW1vdmUgdGhlIHBhY2thZ2luZyBtb2R1bGUsIHdoaWNoIGlzIG5vdCByZWFkeSBmb3IgcHJpbWUgdGltZS4KIAotLSBJc3N1ZSAjMTUyNDc6IEZpbGVJTyBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gZ2l2ZW4gYSBmaWxlIGRlc2NyaXB0b3IKLSAgcG9pbnRpbmcgdG8gYSBkaXJlY3RvcnkuCistIElzc3VlICMxNTE1NDogQWRkICJkaXJfZmQiIHBhcmFtZXRlciB0byBvcy5ybWRpciwgcmVtb3ZlICJybWRpciIKKyAgcGFyYW1ldGVyIGZyb20gb3MucmVtb3ZlIC8gb3MudW5saW5rLgogCi0tIElzc3VlICM1MzQ2OiBQcmVzZXJ2ZSBwZXJtaXNzaW9ucyBvZiBtYm94LCBNTURGIGFuZCBCYWJ5bCBtYWlsYm94Ci0gIGZpbGVzIG9uIGZsdXNoKCkuCistIElzc3VlICM0NDg5OiBBZGQgYSBzaHV0aWwucm10cmVlIHRoYXQgaXNuJ3Qgc3VzY2VwdGlibGUgdG8gc3ltbGluayBhdHRhY2tzLgorICBJdCBpcyB1c2VkIGF1dG9tYXRpY2FsbHkgb24gcGxhdGZvcm1zIHN1cHBvcnRpbmcgdGhlIG5lY2Vzc2FyeSBvcy5vcGVuYXQoKQorICBhbmQgb3MudW5saW5rYXQoKSBmdW5jdGlvbnMuIE1haW4gY29kZSBieSBNYXJ0aW4gdm9uIEzDtndpcy4KIAotLSBJc3N1ZSAjMTA1NzE6IEZpeCB0aGUgIi0tc2lnbiIgb3B0aW9uIG9mIGRpc3R1dGlscycgdXBsb2FkIGNvbW1hbmQuCi0gIFBhdGNoIGJ5IEpha3ViIFdpbGsuCistIElzc3VlICMxNTE1NjogSFRNTFBhcnNlciBub3cgdXNlcyB0aGUgbmV3ICJodG1sLmVudGl0aWVzLmh0bWw1IiBkaWN0aW9uYXJ5LgogCi0tIElzc3VlICM5NTU5OiBJZiBtZXNzYWdlcyB3ZXJlIG9ubHkgYWRkZWQsIGEgbmV3IGZpbGUgaXMgbm8gbG9uZ2VyCi0gIGNyZWF0ZWQgYW5kIHJlbmFtZWQgb3ZlciB0aGUgb2xkIGZpbGUgd2hlbiBmbHVzaCgpIGlzIGNhbGxlZCBvbiBhbgotICBtYm94LCBNTURGIG9yIEJhYnlsIG1haWxib3guCistIElzc3VlICMxMTExMzogYWRkIGEgbmV3ICJodG1sNSIgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBuYW1lZCBjaGFyYWN0ZXIKKyAgcmVmZXJlbmNlcyBkZWZpbmVkIGJ5IHRoZSBIVE1MNSBzdGFuZGFyZCBhbmQgdGhlIGVxdWl2YWxlbnQgVW5pY29kZQorICBjaGFyYWN0ZXIocykgdG8gdGhlIGh0bWwuZW50aXRpZXMgbW9kdWxlLgorCistIElzc3VlICMxNTExNDogdGhlIHN0cmljdCBtb2RlIG9mIEhUTUxQYXJzZXIgYW5kIHRoZSBIVE1MUGFyc2VFcnJvciBleGNlcHRpb24KKyAgYXJlIGRlcHJlY2F0ZWQgbm93IHRoYXQgdGhlIHBhcnNlciBpcyBhYmxlIHRvIHBhcnNlIGludmFsaWQgbWFya3VwLgorCistIElzc3VlICMzNjY1OiBcdSBhbmQgXFUgZXNjYXBlcyBhcmUgbm93IHN1cHBvcnRlZCBpbiB1bmljb2RlIHJlZ3VsYXIKKyAgZXhwcmVzc2lvbnMuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTE1MzogQWRkZWQgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMgdG8gc2ltcGxpZnkgd2hpdGUgYm94CisgIHRlc3Rpbmcgb2YgZ2VuZXJhdG9yIHN0YXRlIHVwZGF0ZXMKKworLSBJc3N1ZSAjMTMwNjI6IEFkZGVkIGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMgdG8gc2ltcGxpZnkgdGVzdGluZyBzdGF0ZWZ1bAorICBjbG9zdXJlcworCistIElzc3VlICMxMTAyNDogRml4ZXMgYW5kIGFkZGl0aW9uYWwgdGVzdHMgZm9yIFRpbWUySW50ZXJuYWxkYXRlLgorCistIElzc3VlICMxNDYyNjogTGFyZ2UgcmVmYWN0b3Jpbmcgb2YgZnVuY3Rpb25zIC8gcGFyYW1ldGVycyBpbiB0aGUgb3MgbW9kdWxlLgorICBNYW55IGZ1bmN0aW9ucyBub3cgc3VwcG9ydCAiZGlyX2ZkIiBhbmQgImZvbGxvd19zeW1saW5rcyIgcGFyYW1ldGVyczsKKyAgc29tZSBhbHNvIHN1cHBvcnQgYWNjZXB0aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGluIHBsYWNlIG9mIG9mIGEgcGF0aAorICBzdHJpbmcuICBBZGRlZCBvcy5zdXBwb3J0XyogY29sbGVjdGlvbnMgYXMgTEJZTCBoZWxwZXJzLiAgUmVtb3ZlZCBtYW55CisgIGZ1bmN0aW9ucyBvbmx5IHByZXZpb3VzbHkgc2VlbiBpbiAzLjMgYWxwaGEgcmVsZWFzZXMgKG9mdGVuIHN0YXJ0aW5nIHdpdGgKKyAgImYiIG9yICJsIiwgb3IgZW5kaW5nIHdpdGggImF0IikuICBPcmlnaW5hbGx5IHN1Z2dlc3RlZCBieSBTZXJoaXkgU3RvcmNoYWthOworICBpbXBsZW1lbnRlZCBieSBMYXJyeSBIYXN0aW5ncy4KKworLSBJc3N1ZSAjMTUwMDg6IEltcGxlbWVudCBQRVAgMzYyICJTaWduYXR1cmUgT2JqZWN0cyIuCisgIFBhdGNoIGJ5IFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlOiAjMTUxMzg6IGJhc2U2NC51cmxzYWZlX3tlbixkZX1jb2RlKCkgYXJlIG5vdyAzLTR4IGZhc3Rlci4KKworLSBJc3N1ZSAjNDQ0NTgyOiBBZGQgc2h1dGlsLndoaWNoLCBmb3IgZmluZGluZyBwcm9ncmFtcyBvbiB0aGUgc3lzdGVtIHBhdGguCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWsgRGVtYWluZSwgd2l0aCBsYXRlciBpdGVyYXRpb25zIGJ5IEphbiBLaWxsaWFuCisgIGFuZCBCcmlhbiBDdXJ0aW4uCisKKy0gSXNzdWUgIzE0ODM3OiBTU0wgZXJyb3JzIG5vdyBoYXZlIGBgbGlicmFyeWBgIGFuZCBgYHJlYXNvbmBgIGF0dHJpYnV0ZXMKKyAgZGVzY3JpYmluZyBwcmVjaXNlbHkgd2hhdCBoYXBwZW5lZCBhbmQgaW4gd2hpY2ggT3BlblNTTCBzdWJtb2R1bGUuICBUaGUKKyAgc3RyKCkgb2YgYSBTU0xFcnJvciBpcyBhbHNvIGVuaGFuY2VkIGFjY29yZGluZ2x5LgorCistIElzc3VlICM5NTI3OiBkYXRldGltZS5hc3RpbWV6b25lKCkgbWV0aG9kIHdpbGwgbm93IHN1cHBseSBhIGNsYXNzCisgIHRpbWV6b25lIGluc3RhbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN5c3RlbSBsb2NhbCB0aW1lem9uZSB3aGVuCisgIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cy4KIAogLSBJc3N1ZSAjMTQ2NTM6IGVtYWlsLnV0aWxzLm1rdGltZV90eigpIG5vIGxvbmdlciByZWxpZXMgb24gc3lzdGVtCiAgIG1rdGltZSgpIHdoZW4gdGltZXpvbmUgb2ZmZXN0IGlzIHN1cHBsaWVkLgogCistIElzc3VlICMxNDY4NDogemxpYi5jb21wcmVzc29iaigpIGFuZCB6bGliLmRlY29tcHJlc3NvYmooKSBub3cgc3VwcG9ydCB0aGUgdXNlCisgIG9mIHByZWRlZmluZWQgY29tcHJlc3Npb24gZGljdGlvbmFyaWVzLiBPcmlnaW5hbCBwYXRjaCBieSBTYW0gUnVzaGluZy4KKwogLSBGaXggR3ppcEZpbGUncyBoYW5kbGluZyBvZiBmaWxlbmFtZXMgZ2l2ZW4gYXMgYnl0ZXMgb2JqZWN0cy4KIAorLSBJc3N1ZSAjMTQ3NzI6IFJldHVybiBkZXN0aW5hdGlvbiB2YWx1ZXMgZnJvbSBzb21lIHNodXRpbCBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzE1MDY0OiBJbXBsZW1lbnQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIGZvciBtdWx0aXByb2Nlc3NpbmcgdHlwZXMKKwogLSBJc3N1ZSAjMTUxMDE6IE1ha2UgcG9vbCBmaW5hbGl6ZXIgYXZvaWQgam9pbmluZyBjdXJyZW50IHRocmVhZC4KIAorLSBJc3N1ZSAjMTQ2NTc6IFRoZSBmcm96ZW4gaW5zdGFuY2Ugb2YgaW1wb3J0bGliIHVzZWQgZm9yIGJvb3RzdHJhcCBpcyBub3cKKyAgYWxzbyB0aGUgbW9kdWxlIGltcG9ydGVkIGFzIGltcG9ydGxpYi5fYm9vdHN0cmFwLgorCistIElzc3VlICMxNDA1NTogQWRkIF9fc2l6ZW9mX18gc3VwcG9ydCB0byBfZWxlbWVudHRyZWUuCisKKy0gSXNzdWUgIzE1MDU0OiBBIGJ1ZyBpbiB0b2tlbml6ZS50b2tlbml6ZSB0aGF0IGNhdXNlZCBzdHJpbmcgbGl0ZXJhbHMKKyAgd2l0aCAnYicgcHJlZml4ZXMgdG8gYmUgaW5jb3JyZWN0bHkgdG9rZW5pemVkIGhhcyBiZWVuIGZpeGVkLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTAwNjogQWxsb3cgZXF1YWxpdHkgY29tcGFyaXNvbiBiZXR3ZWVuIG5haXZlIGFuZCBhd2FyZQorICB0aW1lIG9yIGRhdGV0aW1lIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0OTgyOiBEb2N1bWVudCB0aGF0IHBrZ3V0aWwncyBpdGVyYXRpb24gZnVuY3Rpb25zIHJlcXVpcmUgdGhlCisgIG5vbi1zdGFuZGFyZCBpdGVyX21vZHVsZXMoKSBtZXRob2QgdG8gYmUgZGVmaW5lZCBieSBhbiBpbXBvcnRlciAoc29tZXRoaW5nCisgIHRoZSBpbXBvcnRsaWIgaW1wb3J0ZXJzIGRvIG5vdCBkZWZpbmUpLgorCiAtIElzc3VlICMxNTAzNjogTWFpbGJveCBubyBsb25nZXIgdGhyb3dzIGFuIGVycm9yIGlmIGEgZmx1c2ggaXMgZG9uZQogICBiZXR3ZWVuIG9wZXJhdGlvbnMgd2hlbiByZW1vdmluZyBvciBjaGFuZ2luZyBtdWx0aXBsZSBpdGVtcyBpbiBtYm94LAogICBNTURGLCBvciBCYWJ5bCBtYWlsYm94ZXMuCiAKLS0gSXNzdWUgIzEwMTMzOiBNYWtlIG11bHRpcHJvY2Vzc2luZyBkZWFsbG9jYXRlIGJ1ZmZlciBpZiBzb2NrZXQgcmVhZAotICBmYWlscy4gIFBhdGNoIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCistIElzc3VlICMxNDA1OTogSW1wbGVtZW50IG11bHRpcHJvY2Vzc2luZy5CYXJyaWVyLgorCistIElzc3VlICMxNTA2MTogVGhlIGluYXBwcm9wcmlhdGVseSBuYW1lZCBobWFjLnNlY3VyZV9jb21wYXJlIGhhcyBiZWVuCisgIHJlbmFtZWQgdG8gaG1hYy5jb21wYXJlX2RpZ2VzdCwgcmVzdHJpY3RlZCB0byBvcGVyYXRpbmcgb24gYnl0ZXMgaW5wdXRzCisgIG9ubHkgYW5kIGhhZCBpdHMgZG9jdW1lbnRhdGlvbiB1cGRhdGVkIHRvIG1vcmUgYWNjdXJhdGVseSByZWZsZWN0IGJvdGggaXRzCisgIGludGVudCBhbmQgaXRzIGxpbWl0YXRpb25zCisKKy0gSXNzdWUgIzEzODQxOiBNYWtlIGNoaWxkIHByb2Nlc3NlcyBleGl0IHVzaW5nIHN5cy5leGl0KCkgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMTQ5MzY6IGN1cnNlc19wYW5lbCB3YXMgY29udmVydGVkIHRvIFBFUCAzMTIxIGFuZCBQRVAgMzg0IEFQSS4KKyAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNjY3NTQ2OiBPbiBwbGF0Zm9ybXMgc3VwcG9ydGluZyB0bV96b25lIGFuZCB0bV9nbXRvZmYgZmllbGRzCisgIGluIHN0cnVjdCB0bSwgdGltZS5zdHJ1Y3RfdGltZSBvYmplY3RzIHJldHVybmVkIGJ5IHRpbWUuZ210aW1lKCksCisgIHRpbWUubG9jYWx0aW1lKCkgYW5kIHRpbWUuc3RycHRpbWUoKSBmdW5jdGlvbnMgbm93IGhhdmUgdG1fem9uZSBhbmQKKyAgdG1fZ210b2ZmIGF0dHJpYnV0ZXMuICBPcmlnaW5hbCBwYXRjaCBieSBQYXVsIEJvZGRpZS4KKworLSBSZW5hbWUgYWRqdXN0ZWQgYXR0cmlidXRlIHRvIGFkanVzdGFibGUgaW4gdGltZS5nZXRfY2xvY2tfaW5mbygpIHJlc3VsdC4KKworLSBJc3N1ZSAjMzUxODogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gbm9uLWV4aXN0ZW50IEJhc2VNYW5hZ2VyLmZyb21fYWRkcmVzcygpCisgIG1ldGhvZC4KKworLSBJc3N1ZSAjMTM4NTc6IEFkZGVkIHRleHR3cmFwLmluZGVudCgpIGZ1bmN0aW9uIChpbml0aWFsIHBhdGNoIGJ5IEV6cmEKKyAgQmVyY2gpCisKKy0gSXNzdWUgIzI3MzY6IEFkZGVkIGRhdGV0aW1lLnRpbWVzdGFtcCgpIG1ldGhvZC4KIAogLSBJc3N1ZSAjMTM4NTQ6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIHByb3Blcmx5IGhhbmRsZSBub24taW50ZWdlcgogICBub24tc3RyaW5nIGFyZ3VtZW50IHRvIFN5c3RlbUV4aXQuCkBAIC0yMjcsMTQgKzc3NCwxNzEgQEAKIC0gSXNzdWUgIzEyMTU3OiBNYWtlIHBvb2wubWFwKCkgZW1wdHkgaXRlcmFibGVzIGNvcnJlY3RseS4gIEluaXRpYWwKICAgcGF0Y2ggYnkgbW91YWQuCiAKKy0gSXNzdWUgIzExODIzOiBkaXNhc3NlbWJseSBub3cgc2hvd3MgYXJndW1lbnQgY291bnRzIG9uIGNhbGxzIHdpdGgga2V5d29yZCBhcmdzLgorCistIElzc3VlICMxNDcxMTogb3Muc3RhdF9mbG9hdF90aW1lcygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuCisKKy0gTFpNQUZpbGUgbm93IGFjY2VwdHMgdGhlIG1vZGVzICJyYiIvIndiIi8iYWIiIGFzIHN5bm9ueW1zIG9mICJyIi8idyIvImEiLgorCistIFRoZSBiejIgYW5kIGx6bWEgbW9kdWxlcyBub3cgZWFjaCBjb250YWluIGFuIG9wZW4oKSBmdW5jdGlvbiwgYWxsb3dpbmcKKyAgY29tcHJlc3NlZCBmaWxlcyB0byByZWFkaWx5IGJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgYXMgd2VsbCBhcyBiaW5hcnkgbW9kZS4KKworLSBCWjJGaWxlLl9faW5pdF9fKCkgYW5kIExaTUFGaWxlLl9faW5pdF9fKCkgbm93IGFjY2VwdCBhIGZpbGUgb2JqZWN0IGFzIHRoZWlyCisgIGZpcnN0IGFyZ3VtZW50LCByYXRoZXIgdGhhbiByZXF1aXJpbmcgYSBzZXBhcmF0ZSAiZmlsZW9iaiIgYXJndW1lbnQuCisKKy0gZ3ppcC5vcGVuKCkgbm93IGFjY2VwdHMgZmlsZSBvYmplY3RzIGFzIHdlbGwgYXMgZmlsZW5hbWVzLgorCiAtIElzc3VlICMxNDk5Mjogb3MubWFrZWRpcnMocGF0aCwgZXhpc3Rfb2s9VHJ1ZSkgd291bGQgcmFpc2UgYW4gT1NFcnJvcgogICB3aGVuIHRoZSBwYXRoIGV4aXN0ZWQgYW5kIGhhZCB0aGUgU19JU0dJRCBtb2RlIGJpdCBzZXQgd2hlbiBpdCB3YXMKICAgbm90IGV4cGxpY2l0bHkgYXNrZWQgZm9yLiAgVGhpcyBpcyBubyBsb25nZXIgYW4gZXhjZXB0aW9uIGFzIG1rZGlyCiAgIGNhbm5vdCBjb250cm9sIGlmIHRoZSBPUyBzZXRzIHRoYXQgYml0IGZvciBpdCBvciBub3QuCiAKKy0gSXNzdWUgIzE0OTg5OiBNYWtlIHRoZSBDR0kgZW5hYmxlIG9wdGlvbiB0byBodHRwLnNlcnZlciBhdmFpbGFibGUgdmlhIGNvbW1hbmQKKyAgbGluZS4KKworLSBJc3N1ZSAjMTQ5ODc6IEFkZCBhIG1pc3NpbmcgaW1wb3J0IHN0YXRlbWVudCB0byBpbnNwZWN0LgorCistIElzc3VlICMxMDc5OiBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlciBub3cgY29ycmVjdGx5IHBhcnNlcyBhbGwgdGhlIGV4YW1wbGVzCisgIGluIFJGQzIwNDcuICBUaGVyZSBpcyBhIG5lY2Vzc2FyeSB2aXNpYmxlIGJlaGF2aW9yIGNoYW5nZTogdGhlIGxlYWRpbmcgYW5kL29yCisgIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb24gQVNDSUkgcGFydHMgaXMgbm93IHByZXNlcnZlZC4KKworLSBJc3N1ZSAjMTQ5Njk6IEJldHRlciBoYW5kbGluZyBvZiBleGNlcHRpb24gY2hhaW5pbmcgaW4gY29udGV4dGxpYi5FeGl0U3RhY2sKKwogLSBJc3N1ZSAjMTQ5NjI6IFVwZGF0ZSB0ZXh0IGNvbG9yaW5nIGluIElETEUgc2hlbGwgd2luZG93IGFmdGVyIGNoYW5naW5nCiAgIG9wdGlvbnMuICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KIAorLSBJc3N1ZSAjMTQ5NjM6IENvbnZlcnQgY29udGV4dGxpYi5FeGl0U3RhY2suX19leGl0X18gdG8gdXNlIGFuIGl0ZXJhdGl2ZQorICBhbGdvcml0aG0gKFBhdGNoIGJ5IEFsb24gSG9yZXYpCisKKy0gSXNzdWUgIzE0Nzg1OiBBZGQgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCkgdG8gaGVscCBkZWJ1ZyBsb3ctbGV2ZWwgbWVtb3J5CisgIGFsbG9jYXRpb24gaXNzdWVzCisKKy0gSXNzdWUgIzE0NDQzOiBFbnN1cmUgdGhhdCAucHkgZmlsZXMgYXJlIGJ5dGUtY29tcGlsZWQgd2l0aCB0aGUgY29ycmVjdCBQeXRob24KKyAgZXhlY3V0YWJsZSB3aXRoaW4gYmRpc3RfcnBtIGV2ZW4gb24gb2xkZXIgdmVyc2lvbnMgb2YgUlBNCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICMxMzc4MzogSW5hZHZlcnRlbnQgYWRkaXRpb25zIHRvIHRoZSBwdWJsaWMgQyBBUEkgaW4gdGhlIFBFUCAzODAKKyAgaW1wbGVtZW50YXRpb24gaGF2ZSBlaXRoZXIgYmVlbiByZW1vdmVkIG9yIG1hcmtlZCBhcyBwcml2YXRlIGludGVyZmFjZXMuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTAwMDogU3VwcG9ydCB0aGUgInVuaXF1ZSIgeDMyIGFyY2hpdGVjdHVyZSBpbiBfcG9zaXhzdWJwcm9jZXNzLmMuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTUwODE6IERvY3VtZW50IFB5U3RhdGVfRmluZE1vZHVsZS4KKyAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNDgxNDogQWRkZWQgZmlyc3QgZHJhZnQgb2YgaXBhZGRyZXNzIG1vZHVsZSBBUEkgcmVmZXJlbmNlCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxNDc2OTogdGVzdF9jYXBpIG5vdyBoYXMgU2tpcGl0ZW1UZXN0LCB3aGljaCBjbGV2ZXJseSBjaGVja3MKKyAgZm9yICJwYXJpdHkiIGJldHdlZW4gUHlBcmdfUGFyc2VUdXBsZSgpIGFuZCB0aGUgUHl0aG9uL2dldGFyZ3MuYyBzdGF0aWMKKyAgZnVuY3Rpb24gc2tpcGl0ZW0oKSBmb3IgYWxsIHBvc3NpYmxlICJmb3JtYXQgdW5pdHMiLgorCistIHRlc3Rfbm50cGxpYiBub3cgdG9sZXJhdGVzIGJlaW5nIHJ1biBmcm9tIGJlaGluZCBOTlRQIGdhdGV3YXlzIHRoYXQgYWRkCisgICJYLUFudGl2aXJ1cyIgaGVhZGVycyB0byBhcnRpY2xlcworCistIElzc3VlICMxNTA0MzogdGVzdF9nZGIgaXMgbm93IHNraXBwZWQgZW50aXJlbHkgaWYgZ2RiIHNlY3VyaXR5IHNldHRpbmdzCisgIGJsb2NrIGxvYWRpbmcgb2YgdGhlIGdkYiBob29rcworCistIElzc3VlICMxNDk2MzogQWRkIHRlc3QgY2FzZXMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyBiZWhhdmlvdXIKKyAgaW4gY29udGV4dGxpYi5FeGl0U3RhY2sgKEluaXRpYWwgcGF0Y2ggYnkgQWxvbiBIb3JldikKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEzNTkwOiBJbXByb3ZlIHN1cHBvcnQgZm9yIE9TIFggWGNvZGUgNDoKKyAgICAqIFRyeSB0byBhdm9pZCBidWlsZGluZyBQeXRob24gb3IgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBwcm9ibGVtYXRpYworICAgICAgbGx2bS1nY2MgY29tcGlsZXIuCisgICAgKiBTaW5jZSBYY29kZSA0IHJlbW92ZXMgcHBjIHN1cHBvcnQsIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG5vdworICAgICAgY2hlY2sgZm9yIHBwYyBjb21waWxlciBzdXBwb3J0IGFuZCBhdXRvbWF0aWNhbGx5IHJlbW92ZSBwcGMgYW5kCisgICAgICBwcGM2NCBhcmNocyB3aGVuIG5vdCBhdmFpbGFibGUuCisgICAgKiBTaW5jZSBYY29kZSA0IG5vIGxvbmdlciBpbnN0YWxsIFNES3MgaW4gZGVmYXVsdCBsb2NhdGlvbnMsCisgICAgICBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcyBub3cgcmV2ZXJ0IHRvIHVzaW5nIGluc3RhbGxlZCBoZWFkZXJzCisgICAgICBhbmQgbGlicyBpZiB0aGUgU0RLIHVzZWQgdG8gYnVpbGQgdGhlIGludGVycHJldGVyIGlzIG5vdAorICAgICAgYXZhaWxhYmxlLgorICAgICogVXBkYXRlIC4vY29uZmlndXJlIHRvIHVzZSBiZXR0ZXIgZGVmYXVsdHMgZm9yIHVuaXZlcnNhbCBidWlsZHM7CisgICAgICBpbiBwYXJ0aWN1bGFyLCAtLWVuYWJsZS11bml2ZXJzYWxzZGs9eWVzIHVzZXMgdGhlIFhjb2RlIGRlZmF1bHQKKyAgICAgIFNESyBhbmQgLS13aXRoLXVuaXZlcnNhbC1hcmNocyBub3cgZGVmYXVsdHMgdG8gImludGVsIiBpZiBwcGMKKyAgICAgIG5vdCBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzE0MjI1OiBGaXggVW5pY29kZSBzdXBwb3J0IGZvciBjdXJzZXMgKCMxMjU2Nykgb24gT1MgWAorCistIElzc3VlICMxNDkyODogRml4IGltcG9ydGxpYiBib290c3RyYXAgaXNzdWVzIGJ5IHVzaW5nIGEgY3VzdG9tIGV4ZWN1dGFibGUKKyAgKE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIpIHRvIGJ1aWxkIFB5dGhvbi9pbXBvcnRsaWIuaC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSA0PworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMzEtTWF5LTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDgzNTogTWFrZSBwbGlzdGxpYiBvdXRwdXQgZW1wdHkgYXJyYXlzICYgZGljdHMgbGlrZSBPUyBYLgorICBQYXRjaCBieSBTaWRuZXkgU2FuIE1hcnTDrW4uCisKKy0gSXNzdWUgIzE0NzQ0OiBVc2UgdGhlIG5ldyBfUHlVbmljb2RlV3JpdGVyIGludGVybmFsIEFQSSB0byBzcGVlZCB1cAorICBzdHIlYXJncyBhbmQgc3RyLmZvcm1hdChhcmdzKS4KKworLSBJc3N1ZSAjMTQ5MzA6IE1ha2UgbWVtb3J5dmlldyBvYmplY3RzIHdlYWtyZWZhYmxlLgorCistIElzc3VlICMxNDc3NTogRml4IGEgcG90ZW50aWFsIHF1YWRyYXRpYyBkaWN0IGJ1aWxkLXVwIGR1ZSB0byB0aGUgZ2FyYmFnZQorICBjb2xsZWN0b3IgcmVwZWF0ZWRseSB0cnlpbmcgdG8gdW50cmFjayBkaWN0cy4KKworLSBJc3N1ZSAjMTQ4NTc6IGZpeCByZWdyZXNzaW9uIGluIHJlZmVyZW5jZXMgdG8gUEVQIDMxMzUgaW1wbGljaXQgX19jbGFzc19fCisgIGNsb3N1cmUgdmFyaWFibGUgKFJlb3BlbnMgaXNzdWUgIzEyMzcwKQorCistIElzc3VlICMxNDcxMiAoUEVQIDQwNSk6IFZpcnR1YWwgZW52aXJvbm1lbnRzLiBJbXBsZW1lbnRlZCBieSBWaW5heSBTYWppcC4KKworLSBJc3N1ZSAjMTQ2NjAgKFBFUCA0MjApOiBOYW1lc3BhY2UgcGFja2FnZXMuIEltcGxlbWVudGVkIGJ5IEVyaWMgU21pdGguCisKKy0gSXNzdWUgIzE0NDk0OiBGaXggX19mdXR1cmVfXy5weSBhbmQgaXRzIGRvY3VtZW50YXRpb24gdG8gbm90ZSB0aGF0CisgIGFic29sdXRlIGltcG9ydHMgYXJlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGluIDMuMCBpbnN0ZWFkIG9mIDIuNy4KKyAgUGF0Y2ggYnkgU3ZlbiBNYXJuYWNoLgorCistIElzc3VlICM5MjYwOiBBIGZpbmVyLWdyYWluZWQgaW1wb3J0IGxvY2suICBNb3N0IG9mIHRoZSBpbXBvcnQgc2VxdWVuY2UKKyAgbm93IHVzZXMgcGVyLW1vZHVsZSBsb2NrcyByYXRoZXIgdGhhbiB0aGUgZ2xvYmFsIGltcG9ydCBsb2NrLCBlbGltaW5hdGluZworICB3ZWxsLWtub3duIGlzc3VlcyB3aXRoIHRocmVhZHMgYW5kIGltcG9ydHMuCisKKy0gSXNzdWUgIzE0NjI0OiBVVEYtMTYgZGVjb2RpbmcgaXMgbm93IDN4IHRvIDR4IGZhc3RlciBvbiB2YXJpb3VzIGlucHV0cy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBhc2RsX3NlcSBhbmQgYXNkbF9pbnRfc2VxIGFyZSBub3cgUHlfc3NpemVfdCBzaXplZC4KKworLSBJc3N1ZSAjMTQxMzMgKFBFUCA0MTUpOiBJbXBsZW1lbnQgc3VwcHJlc3Npb24gb2YgX19jb250ZXh0X18gZGlzcGxheSB3aXRoIGFuCisgIGF0dHJpYnV0ZSBvbiBCYXNlRXhjZXB0aW9uLiBUaGlzIHJlcGxhY2VzIHRoZSBvcmlnaW5hbCBtZWNoYW5pc20gb2YgUEVQIDQwOS4KKworLSBJc3N1ZSAjMTQ0MTc6IE11dGF0aW5nIGEgZGljdCBkdXJpbmcgbG9va3VwIG5vdyByZXN0YXJ0cyB0aGUgbG9va3VwIGluc3RlYWQKKyAgb2YgcmFpc2luZyBhIFJ1bnRpbWVFcnJvciAodW5kb2VzIGlzc3VlICMxNDIwNSkuCisKKy0gSXNzdWUgIzE0NzM4OiBTcGVlZC11cCBVVEYtOCBkZWNvZGluZyBvbiBub24tQVNDSUkgZGF0YS4gIFBhdGNoIGJ5IFNlcmhpeQorICBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE0NzAwOiBGaXggdHdvIGJyb2tlbiBhbmQgdW5kZWZpbmVkLWJlaGF2aW91ci1pbmR1Y2luZyBvdmVyZmxvdyBjaGVja3MKKyAgaW4gb2xkLXN0eWxlIHN0cmluZyBmb3JtYXR0aW5nLgorCistIElzc3VlICMxNDcwNTogVGhlIFB5QXJnX1BhcnNlKCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCB0aGUgJ3AnIGZvcm1hdAorICB1bml0LCB3aGljaCBhY2NlcHRzIGEgImJvb2xlYW4gcHJlZGljYXRlIiBhcmd1bWVudC4gIEl0IGNvbnZlcnRzIGFueSBQeXRob24KKyAgdmFsdWUgaW50byBhbiBpbnRlZ2VyLS0wIGlmIGl0IGlzICJmYWxzZSIsIGFuZCAxIG90aGVyd2lzZS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNDY5MDogVXNlIG1vbm90b25pYyBjbG9jayBpbnN0ZWFkIG9mIHN5c3RlbSBjbG9jayBpbiB0aGUgc2NoZWQsCisgIHN1YnByb2Nlc3MgYW5kIHRyYWNlIG1vZHVsZXMuCisKKy0gSXNzdWUgIzE0OTU4OiBDaGFuZ2UgSURMRSBzeXN0YXggaGlnaGxpZ2h0aW5nIHRvIHJlY29nbml6ZSBhbGwgc3RyaW5nIGFuZAorICBieXRlIGxpdGVyYWxzIHN1cHBvcnRlZCBpbiBQeXRob24gMy4zLgorCiAtIElzc3VlICMxMDk5NzogUHJldmVudCBhIGR1cGxpY2F0ZSBlbnRyeSBpbiBJRExFJ3MgIlJlY2VudCBGaWxlcyIgbWVudS4KIAogLSBJc3N1ZSAjMTQ0NDM6IFRlbGwgcnBtYnVpbGQgdG8gdXNlIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgUHl0aG9uIGluCkBAIC0yNDMsMjkgKzk0Nyw3MCBAQAogLSBJc3N1ZSAjMTQ5Mjk6IFN0b3AgSWRsZSAzLnggZnJvbSBjbG9zaW5nIG9uIFVuaWNvZGUgZGVjb2RlIGVycm9ycyB3aGVuCiAgIGdyZXBwaW5nLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KIAorLSBJc3N1ZSAjMTI1MTU6IGVtYWlsIG5vdyByZWdpc3RlcnMgYSBkZWZlY3QgaWYgaXQgZ2V0cyB0byBFT0Ygd2hpbGUgcGFyc2luZworICBhIE1JTUUgcGFydCB3aXRob3V0IHNlZWluZyB0aGUgY2xvc2luZyBNSU1FIGJvdW5kYXJ5LgorCiAtIElzc3VlICMxMjUxMDogQXR0ZW1wdGluZyB0byBnZXQgaW52YWxpZCB0b29sdGlwIG5vIGxvbmdlciBjbG9zZXMgSWRsZS4KICAgT3RoZXIgdG9vbHRpcHNzIGhhdmUgYmVlbiBjb3JyZWN0ZWQgb3IgaW1wcm92ZWQgYW5kIHRoZSBudW1iZXIgb2YgdGVzdHMKICAgaGFzIGJlZW4gdHJpcGxlZC4gT3JpZ2luYWwgcGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzE2NzI1Njg6IGVtYWlsIG5vdyBhbHdheXMgZGVjb2RlcyBiYXNlNjQgcGF5bG9hZHMsIGFkZGluZyBwYWRkaW5nIGFuZAorICBpZ25vcmluZyBub24tYmFzZTY0LWFscGhhYmV0IGNoYXJhY3RlcnMgaWYgbmVlZGVkLCBhbmQgcmVnaXN0ZXJpbmcgZGVmZWN0cworICBmb3IgYW55IHN1Y2ggcHJvYmxlbXMuCisKKy0gSXNzdWUgIzE0OTI1OiBlbWFpbCBub3cgcmVnaXN0ZXJzIGEgZGVmZWN0IHdoZW4gdGhlIHBhcnNlciBkZWNpZGVzIHRoYXQgdGhlcmUKKyAgaXMgYSBtaXNzaW5nIGhlYWRlci9ib2R5IHNlcGFyYXRvciBsaW5lLiAgTWFsZm9ybWVkSGVhZGVyRGVmZWN0LCB3aGljaCB0aGUKKyAgZXhpc3RpbmcgY29kZSB3b3VsZCBuZXZlciBhY3R1YWxseSBnZW5lcmF0ZSwgaXMgZGVwcmVjYXRlZC4KKwogLSBJc3N1ZSAjMTAzNjU6IEZpbGUgb3BlbiBkaWFsb2cgbm93IHdvcmtzIGluc3RlYWQgb2YgY3Jhc2hpbmcgZXZlbiB3aGVuCiAgIHRoZSBwYXJlbnQgd2luZG93IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGRpYWxvZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzg3Mzk6IFVwZGF0ZWQgc210cGQgdG8gc3VwcG9ydCBSRkMgNTMyMSwgYW5kIGFkZGVkIHN1cHBvcnQgZm9yIHRoZQorICBSRkMgMTg3MCBTSVpFIGV4dGVuc2lvbi4KKworLSBJc3N1ZSAjNjY1MTk0OiBBZGRlZCBhIGxvY2FsdGltZSBmdW5jdGlvbiB0byBlbWFpbC51dGlscyB0byBwcm92aWRlIGFuCisgIGF3YXJlIGxvY2FsIGRhdGV0aW1lIGZvciB1c2UgaW4gc2V0dGluZyBEYXRlIGhlYWRlcnMuCisKKy0gSXNzdWUgIzEyNTg2OiBBZGRlZCBuZXcgcHJvdmlzaW9uYWwgcG9saWNpZXMgdGhhdCBpbXBsZW1lbnQgY29udmVuaWVudAorICB1bmljb2RlIHN1cHBvcnQgZm9yIGVtYWlsIGhlYWRlcnMuICBTZWUgV2hhdCdzIE5ldyBmb3IgZGV0YWlscy4KKworLSBJc3N1ZSAjMTQ3MzE6IFJlZmFjdG9yZWQgZW1haWwgUG9saWN5IGZyYW1ld29yayB0byBzdXBwb3J0IGZ1bGwgYmFja3dhcmQKKyAgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjIgYnkgZGVmYXVsdCB5ZXQgYWxsb3cgZm9yIHRoZSBpbnRyb2R1Y3Rpb24gb2YKKyAgbmV3IGZlYXR1cmVzIHRocm91Z2ggbmV3IHBvbGljaWVzLiAgTm90ZSB0aGF0IFBvbGljeS5tdXN0X2JlXzdiaXQgaXMgcmVuYW1lZAorICB0byBjdGVfdHlwZS4KKwogLSBJc3N1ZSAjMTQ4NzY6IFVzZSB1c2VyLXNlbGVjdGVkIGZvbnQgZm9yIGhpZ2hsaWdodCBjb25maWd1cmF0aW9uLgogCiAtIElzc3VlICMxNDkyMDogRml4IHRoZSBoZWxwKHVybGxpYi5wYXJzZSkgZmFpbHVyZSBvbiBsb2NhbGUgQyBvbiB0ZXJtaW5hbHMuCiAgIEhhdmUgYXNjaWkgY2hhcmFjdGVycyBpbiBoZWxwLgogCistIElzc3VlICMxNDU0ODogTWFrZSBtdWx0aXByb2Nlc3NpbmcgZmluYWxpemVycyBjaGVjayBwaWQgYmVmb3JlCisgIHJ1bm5pbmcgdG8gY29wZSB3aXRoIHBvc3NpYmlsaXR5IG9mIGdjIHJ1bm5pbmcganVzdCBhZnRlciBmb3JrLgorCiAtIElzc3VlICMxNDg2MzogVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG9zLmZkb3BlbigpIHRvIHJlZmxlY3QgdGhlCiAgIGZhY3QgdGhhdCBpdCdzIG9ubHkgYSB0aGluIHdyYXBwZXIgYXJvdW5kIG9wZW4oKSBhbnltb3JlLgogCiAtIElzc3VlICMxNDAzNjogQWRkIGFuIGFkZGl0aW9uYWwgY2hlY2sgdG8gdmFsaWRhdGUgdGhhdCBwb3J0IGluIHVybHBhcnNlIGRvZXMKICAgbm90IGdvIGluIGlsbGVnYWwgcmFuZ2UgYW5kIHJldHVybnMgTm9uZS4KIAorLSBJc3N1ZSAjMTQ4NjI6IEFkZCBtaXNzaW5nIG5hbWVzIHRvIG9zLl9fYWxsX18KKwogLSBJc3N1ZSAjMTQ4NzU6IFVzZSBmbG9hdCgnaW5mJykgaW5zdGVhZCBvZiBmbG9hdCgnMWU2NjY2NicpIGluIHRoZSBqc29uIG1vZHVsZS4KIAorLSBJc3N1ZSAjMTM1ODU6IEFkZGVkIGNvbnRleHRsaWIuRXhpdFN0YWNrCisKKy0gUEVQIDMxNDQsIElzc3VlICMxNDgxNDogQWRkZWQgdGhlIGlwYWRkcmVzcyBtb2R1bGUKKwogLSBJc3N1ZSAjMTQ0MjY6IENvcnJlY3QgdGhlIERhdGUgZm9ybWF0IGluIEV4cGlyZXMgYXR0cmlidXRlIG9mIFNldC1Db29raWUKICAgSGVhZGVyIGluIENvb2tpZS5weS4KIAorLSBJc3N1ZSAjMTQ1ODg6IFRoZSB0eXBlcyBtb2R1bGUgbm93IHByb3ZpZGUgbmV3X2NsYXNzKCkgYW5kIHByZXBhcmVfY2xhc3MoKQorICBmdW5jdGlvbnMgdG8gc3VwcG9ydCBQRVAgMzExNSBjb21wbGlhbnQgZHluYW1pYyBjbGFzcyBjcmVhdGlvbi4gUGF0Y2ggYnkKKyAgRGFuaWVsIFVyYmFuIGFuZCBOaWNrIENvZ2hsYW4uCisKKy0gSXNzdWUgIzEzMTUyOiBBbGxvdyB0byBzcGVjaWZ5IGEgY3VzdG9tIHRhYnNpemUgZm9yIGV4cGFuZGluZyB0YWJzIGluCisgIHRleHR3cmFwLiBQYXRjaCBieSBKb2huIEZldWVyc3RlaW4uCisKIC0gSXNzdWUgIzE0NzIxOiBTZW5kIHRoZSBjb3JyZWN0ICdDb250ZW50LWxlbmd0aDogMCcgaGVhZGVyIHdoZW4gdGhlIGJvZHkgaXMgYW4KICAgZW1wdHkgc3RyaW5nICcnLiBJbml0aWFsIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEFydmUgS251ZHNlbi4KIApAQCAtMjc5LDI1ICsxMDI0LDc2IEBACiAgIHdoZW4gdGhlIGZpcnN0IHBhcnQgb2YgYSBkb3R0ZWQgbmFtZSBpcyBub3QgYSBwYWNrYWdlLiBQYXRjaCBieQogICBYYXZpZXIgZGUgR2F5ZS4KIAorLSBJc3N1ZSAjMTIwOTg6IG11bHRpcHJvY2Vzc2luZyBvbiBXaW5kb3dzIG5vdyBzdGFydHMgY2hpbGQgcHJvY2Vzc2VzCisgIHVzaW5nIHRoZSBzYW1lIHN5cy5mbGFncyBhcyB0aGUgY3VycmVudCBwcm9jZXNzLiAgSW5pdGlhbCBwYXRjaCBieQorICBTZXJnZXkgTWV6ZW50c2V2LgorCistIElzc3VlICMxMzAzMTogU21hbGwgc3BlZWQtdXAgZm9yIHRhcmZpbGUgd2hlbiB1bnppcHBpbmcgdGFyZmlsZXMuCisgIFBhdGNoIGJ5IEp1c3RpbiBQZWVsLgorCistIElzc3VlICMxNDc4MDogdXJsbGliLnJlcXVlc3QudXJsb3BlbigpIG5vdyBoYXMgYSBgYGNhZGVmYXVsdGBgIGFyZ3VtZW50CisgIHRvIHVzZSB0aGUgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZS4gIEluaXRpYWwgcGF0Y2ggYnkgSmFtZXMgT2FrbGV5LgorCiAtIElzc3VlICMxNDgyOTogRml4IGJpc2VjdCBhbmQgcmFuZ2UoKSBpbmRleGluZyB3aXRoIGxhcmdlIGluZGljZXMKICAgKD49IDIgKiogMzIpIHVuZGVyIDY0LWJpdCBXaW5kb3dzLgogCistIElzc3VlICMxNDczMjogVGhlIF9jc3YgbW9kdWxlIG5vdyB1c2VzIFBFUCAzMTIxIG1vZHVsZSBpbml0aWFsaXphdGlvbi4KKyAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNDgwOTogQWRkIEhUVFAgc3RhdHVzIGNvZGVzIGludHJvZHVjZWQgYnkgUkZDIDY1ODUgdG8gaHR0cC5zZXJ2ZXIKKyAgYW5kIGh0dHAuY2xpZW50LiBQYXRjaCBieSBFdW5nSnVuIFlpLgorCiAtIElzc3VlICMxNDc3NzogdGtpbnRlciBtYXkgcmV0dXJuIHVuZGVjb2RlZCBVVEYtOCBieXRlcyBhcyBhIHN0cmluZyB3aGVuCiAgIGFjY2Vzc2luZyB0aGUgVGsgY2xpcGJvYXJkLiAgTW9kaWZ5IGNsaXBib2FkX2dldCgpIHRvIGZpcnN0IHJlcXVlc3QgdHlwZQogICBVVEY4X1NUUklORyB3aGVuIG5vIHNwZWNpZmljIHR5cGUgaXMgcmVxdWVzdGVkIGluIGFuIFgxMSB3aW5kb3dpbmcKICAgZW52aXJvbm1lbnQsIGZhbGxpbmcgYmFjayB0byB0aGUgY3VycmVudCBkZWZhdWx0IHR5cGUgU1RSSU5HIGlmIHRoYXQgZmFpbHMuCiAgIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgogCistIElzc3VlICMxNDc3MzogRml4IG9zLmZ3YWxrKCkgZmFpbGluZyBvbiBkYW5nbGluZyBzeW1saW5rcy4KKwogLSBJc3N1ZSAjMTI1NDE6IEJlIGxlbmllbnQgd2l0aCBxdW90ZXMgYXJvdW5kIFJlYWxtIGZpZWxkIG9mIEhUVFAgQmFzaWMKICAgQXV0aGVudGF0aW9uIGluIHVybGxpYjIuCiAKKy0gSXNzdWUgIzE0ODA3OiBtb3ZlIHVuZG9jdW1lbnRlZCB0YXJmaWxlLmZpbGVtb2RlKCkgdG8gc3RhdC5maWxlbW9kZSgpIGFuZCBhZGQKKyAgZG9jIGVudHJ5LiBBZGQgdGFyZmlsZS5maWxlbW9kZSBhbGlhcyB3aXRoIGRlcHJlY2F0aW9uIHdhcm5pbmcuCisKKy0gSXNzdWUgIzEzODE1OiBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgbm93IHJldHVybnMgaW8uQnVmZmVyZWRSZWFkZXIgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ1MzI6IEFkZCBhIHNlY3VyZV9jb21wYXJlKCkgaGVscGVyIHRvIHRoZSBobWFjIG1vZHVsZSwgdG8gbWl0aWdhdGUKKyAgdGltaW5nIGF0dGFja3MuIFBhdGNoIGJ5IEpvbiBPYmVyaGVpZGUuCisKKy0gQWRkIGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZSgpLgorCistIElzc3VlICMxNDM2NjogU3VwcG9ydCBsem1hIGNvbXByZXNzaW9uIGluIHppcCBmaWxlcy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTM5NTk6IEludHJvZHVjZSBpbXBvcnRsaWIuZmluZF9sb2FkZXIoKSBhbmQgZG9jdW1lbnQKKyAgaW1wLmZpbmRfbW9kdWxlL2xvYWRfbW9kdWxlIGFzIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzE0MDgyOiBzaHV0aWwuY29weTIoKSBub3cgY29waWVzIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIGlmIHBvc3NpYmxlLgorICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCisKKy0gSXNzdWUgIzEzOTU5OiBNYWtlIGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlci5sb2FkX21vZHVsZSgpL2dldF9maWxlbmFtZSgpIGFuZAorICBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIubG9hZF9tb2R1bGUoKSBoYXZlIHRoZWlyIHNpbmdsZQorICBhcmd1bWVudCBiZSBvcHRpb25hbC4gQWxsb3dzIGZvciB0aGUgcmVwbGFjZW1lbnQgKGFuZCB0aHVzIGRlcHJlY2F0aW9uKSBvZgorICBpbXAubG9hZF9zb3VyY2UoKS9sb2FkX3BhY2thZ2UoKS9sb2FkX2NvbXBpbGVkKCkuCisKKy0gSXNzdWUgIzEzOTU5OiBpbXAuZ2V0X3N1ZmZpeGVzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgdGhlIG5ldworICBhdHRyaWJ1dGVzIG9uIGltcG9ydGxpYi5tYWNoaW5lcnk6IFNPVVJDRV9TVUZGSVhFUywgREVCVUdfQllURUNPREVfU1VGRklYRVMsCisgIE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUywgQllURUNPREVfU1VGRklYRVMsIGFuZCBFWFRFTlNJT05fU1VGRklYRVMuIFRoaXMKKyAgbGVkIHRvIGFuIGluZGlyZWN0IGRlcHJlY2F0aW9uIG9mIGluc3BlY3QuZ2V0bW9kdWxlaW5mbygpLgorCiAtIElzc3VlICMxNDY2MjogUHJldmVudCBzaHV0aWwgZmFpbHVyZXMgb24gT1MgWCB3aGVuIGRlc3RpbmF0aW9uIGRvZXMgbm90CiAgIHN1cHBvcnQgY2hmbGFnIG9wZXJhdGlvbnMuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCiAKIC0gSXNzdWUgIzE0MTU3OiBGaXggdGltZS5zdHJwdGltZSBmYWlsaW5nIHdpdGhvdXQgYSB5ZWFyIG9uIEZlYnJ1YXJ5IDI5dGguCiAgIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KIAotLSBJc3N1ZSAjMTQ3Njg6IG9zLnBhdGguZXhwYW5kdXNlcignfi9hJykgZG9lc24ndCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBIT01FIGlzICcvJy4KKy0gSXNzdWUgIzE0NzUzOiBNYWtlIG11bHRpcHJvY2Vzc2luZydzIGhhbmRsaW5nIG9mIG5lZ2F0aXZlIHRpbWVvdXRzCisgIHRoZSBzYW1lIGFzIGl0IHdhcyBpbiBQeXRob24gMy4yLgorCistIElzc3VlICMxNDU4MzogRml4IGltcG9ydGxpYiBidWcgd2hlbiBhIHBhY2thZ2UncyBfX2luaXRfXy5weSB3b3VsZCBmaXJzdAorICBpbXBvcnQgb25lIG9mIGl0cyBtb2R1bGVzIHRoZW4gcmFpc2UgYW4gZXJyb3IuCiAKIC0gSXNzdWUgIzE0NzQxOiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciBFbGxpcHNpcyAoJy4uLicpIGluIHBhcnNlciBtb2R1bGUuCiAKQEAgLTMwNiw2ICsxMTAyLDEzOCBAQAogCiAtIElzc3VlICMxNDcwMTogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3IgJ3JhaXNlIC4uLiBmcm9tJyBpbiBwYXJzZXIgbW9kdWxlLgogCistIEFkZCBzdXBwb3J0IGZvciB0aW1lb3V0cyB0byB0aGUgYWNxdWlyZSgpIG1ldGhvZHMgb2YKKyAgbXVsdGlwcm9jZXNzaW5nJ3MgbG9jay9zZW1hcGhvcmUvY29uZGl0aW9uIHByb3hpZXMuCisKKy0gSXNzdWUgIzEzOTg5OiBBZGQgc3VwcG9ydCBmb3IgdGV4dCBtb2RlIHRvIGd6aXAub3BlbigpLgorCistIElzc3VlICMxNDEyNzogVGhlIG9zLnN0YXQoKSByZXN1bHQgb2JqZWN0IG5vdyBwcm92aWRlcyB0aHJlZSBhZGRpdGlvbmFsCisgIGZpZWxkczogc3RfY3RpbWVfbnMsIHN0X210aW1lX25zLCBhbmQgc3RfYXRpbWVfbnMsIHByb3ZpZGluZyB0aG9zZSB0aW1lcyBhcyBhbgorICBpbnRlZ2VyIHdpdGggbmFub3NlY29uZCByZXNvbHV0aW9uLiAgVGhlIGZ1bmN0aW9ucyBvcy51dGltZSgpLCBvcy5sdXRpbWVzKCksCisgIGFuZCBvcy5mdXRpbWVzKCkgbm93IGFjY2VwdCBhIG5ldyBwYXJhbWV0ZXIsIG5zLCB3aGljaCBhY2NlcHRzIG10aW1lIGFuZCBhdGltZQorICBhcyBpbnRlZ2VycyB3aXRoIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4KKworLSBJc3N1ZSAjMTQxMjcgYW5kICMxMDE0ODogc2h1dGlsLmNvcHlzdGF0IG5vdyBwcmVzZXJ2ZXMgZXhhY3QgbXRpbWUgYW5kIGF0aW1lCisgIG9uIGZpbGVzeXN0ZW1zIHByb3ZpZGluZyBuYW5vc2Vjb25kIHJlc29sdXRpb24uCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxNDY5NTogQnJpbmcgVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgc3VwcG9ydCB1cCB0byBkYXRlIHdpdGgKKyAgdGhlIFB5dGhvbiAzLjMgR3JhbW1hci4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzE0NDcyOiBVcGRhdGUgLmdpdGlnbm9yZS4gUGF0Y2ggYnkgTWF0ZWogQ2VwbC4KKworLSBVcGdyYWRlIFdpbmRvd3MgbGlicmFyeSB2ZXJzaW9uczogYnppcCAxLjAuNiwgT3BlblNTTCAxLjAuMWMuCisKKy0gSXNzdWUgIzE0NjkzOiBVbmRlciBub24tV2luZG93cyBwbGF0Zm9ybXMsIGhhc2hsaWIncyBmYWxsYmFjayBtb2R1bGVzIGFyZQorICBhbHdheXMgY29tcGlsZWQsIGV2ZW4gaWYgT3BlblNTTCBpcyBwcmVzZW50IGF0IGJ1aWxkIHRpbWUuCisKKy0gSXNzdWUgIzEzMjEwOiBXaW5kb3dzIGJ1aWxkIG5vdyB1c2VzIFZTMjAxMCwgcG9ydGVkIGZyb20gVlMyMDA4LgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0NTg4OiBUaGUgbGFuZ3VhZ2UgcmVmZXJlbmNlIG5vdyBhY2N1cmF0ZWx5IGRvY3VtZW50cyB0aGUgUHl0aG9uIDMKKyAgY2xhc3MgZGVmaW5pdGlvbiBwcm9jZXNzLiBQYXRjaCBieSBOaWNrIENvZ2hsYW4uCisKKy0gSXNzdWUgIzE0OTQzOiBDb3JyZWN0IGEgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZSBmb3Igd2lucmVnLk9wZW5LZXkKKyAgYW5kIGNvcnJlY3RseSBsaXN0IHRoZSBhcmd1bWVudCBuYW1lcyBpbiB0aGUgZnVuY3Rpb24ncyBleHBsYW5hdGlvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMDEtTWF5LTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDY5OTogRml4IGNhbGxpbmcgdGhlIGNsYXNzbWV0aG9kIGRlc2NyaXB0b3IgZGlyZWN0bHkuCisKKy0gSXNzdWUgIzE0NDMzOiBQcmV2ZW50IG1zdmNydCBjcmFzaCBpbiBpbnRlcmFjdGl2ZSBwcm9tcHQgd2hlbiBzdGRpbiBpcyBjbG9zZWQuCisKKy0gSXNzdWUgIzE0NTIxOiBNYWtlIHJlc3VsdCBvZiBmbG9hdCgnbmFuJykgYW5kIGZsb2F0KCctbmFuJykgbW9yZSBjb25zaXN0ZW50CisgIGFjcm9zcyBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzE0NjQ2OiBfX2ltcG9ydF9fKCkgc2V0cyBfX2xvYWRlcl9fIGlmIHRoZSBsb2FkZXIgZGlkIG5vdC4KKworLSBJc3N1ZSAjMTQ2MDU6IE5vIGxvbmdlciBoYXZlIGltcGxpY2l0IGVudHJpZXMgaW4gc3lzLm1ldGFfcGF0aC4gSWYKKyAgc3lzLm1ldGFfcGF0aCBpcyBmb3VuZCB0byBiZSBlbXB0eSwgcmFpc2UgSW1wb3J0V2FybmluZy4KKworLSBJc3N1ZSAjMTQ2MDU6IE5vIGxvbmdlciBoYXZlIGltcGxpY2l0IGVudHJpZXMgaW4gc3lzLnBhdGhfaG9va3MuIElmCisgIHN5cy5wYXRoX2hvb2tzIGlzIGZvdW5kIHRvIGJlIGVtcHR5LCBhIHdhcm5pbmcgd2lsbCBiZSByYWlzZWQuIE5vbmUgaXMgbm93CisgIGluc2VydGVkIGludG8gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaWYgbm8gZmluZGVyIHdhcyBkaXNjb3ZlcmVkLiBUaGlzIGFsc28KKyAgbWVhbnMgaW1wLk51bGxJbXBvcnRlciBpcyBubyBsb25nZXIgaW1wbGljaXRseSB1c2VkLgorCistIElzc3VlICMxMzkwMzogSW1wbGVtZW50IFBFUCA0MTIuIEluZGl2aWR1YWwgZGljdGlvbmFyeSBpbnN0YW5jZXMgY2FuIG5vdyBzaGFyZQorICB0aGVpciBrZXlzIHdpdGggb3RoZXIgZGljdGlvbmFyaWVzLiBDbGFzc2VzIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgdG8gc2hhcmUKKyAgdGhlaXIgaW5zdGFuY2UgZGljdGlvbmFyeSBrZXlzIGZvciBpbXByb3ZlZCBtZW1vcnkgYW5kIHBlcmZvcm1hbmNlLgorCistIElzc3VlICMxMTYwMyAoYWdhaW4pOiBTZXR0aW5nIF9fcmVwcl9fIHRvIF9fc3RyX18gbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvcgorICB3aGVuIHJlcHIoKSBvciBzdHIoKSBpcyBjYWxsZWQgb24gc3VjaCBhbiBvYmplY3QuCisKKy0gSXNzdWUgIzE0NjU4OiBGaXggYmluZGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGEgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbiBvZiBhCisgIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KKworLSBJc3N1ZSAjMTQ2MzA6IEZpeCBhIG1lbW9yeSBhY2Nlc3MgYnVnIGZvciBpbnN0YW5jZXMgb2YgYSBzdWJjbGFzcyBvZiBpbnQKKyAgd2l0aCB2YWx1ZSAwLgorCistIElzc3VlICMxNDMzOTogU3BlZWQgaW1wcm92ZW1lbnRzIHRvIGJpbiwgb2N0IGFuZCBoZXggZnVuY3Rpb25zLiAgUGF0Y2ggYnkKKyAgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTQwOTg6IE5ldyBmdW5jdGlvbnMgUHlFcnJfR2V0RXhjSW5mbyBhbmQgUHlFcnJfU2V0RXhjSW5mby4KKyAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KKworLSBJc3N1ZSAjMTQzODU6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgYSBjdXN0b20gdHlwZSBmb3IgdGhlIF9fYnVpbHRpbnNfXworICBuYW1lc3BhY2UsIGluc3RlYWQgb2YgYSBkaWN0LiBJdCBjYW4gYmUgdXNlZCBmb3Igc2FuZGJveGluZyBmb3IgZXhhbXBsZS4KKyAgUmFpc2UgYWxzbyBhIE5hbWVFcnJvciBpbnN0ZWFkIG9mIEltcG9ydEVycm9yIGlmIF9fYnVpbGRfY2xhc3NfXyBuYW1lIGlmIG5vdAorICBmb3VuZCBpbiBfX2J1aWx0aW5zX18uCisKKy0gSXNzdWUgIzEyNTk5OiBCZSBtb3JlIHN0cmljdCBpbiBhY2NlcHRpbmcgTm9uZSBjb21wYXJlZCB0byBhIGZhbHNlLWxpa2UKKyAgb2JqZWN0IGZvciBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlciBhbmQKKyAgaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLgorCistIElzc3VlICMxNDYxMjogRml4IGp1bXBpbmcgYXJvdW5kIHdpdGggYmxvY2tzIGJ5IHNldHRpbmcgZl9saW5lbm8uCisKKy0gSXNzdWUgIzE0NTkyOiBBdHRlbXB0aW5nIGEgcmVsYXRpdmUgaW1wb3J0IHcvbyBfX3BhY2thZ2VfXyBvciBfX25hbWVfXyBzZXQgaW4KKyAgZ2xvYmFscyByYWlzZXMgYSBLZXlFcnJvci4KKworLSBJc3N1ZSAjMTQ2MDc6IEZpeCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIHdoaWNoIHN0YXJ0ZWQgd2l0aCBgYF9fYGAuCisKKy0gSXNzdWUgIzEwODU0OiBUaGUgSW1wb3J0RXJyb3IgcmFpc2VkIHdoZW4gYW4gZXh0ZW5zaW9uIG1vZHVsZSBvbiBXaW5kb3dzCisgIGZhaWxzIHRvIGltcG9ydCBub3cgdXNlcyB0aGUgbmV3IHBhdGggYW5kIG5hbWUgYXR0cmlidXRlcyBmcm9tCisgIElzc3VlICMxNTU5NTQ5LgorCistIElzc3VlICMxMzg4OTogQ2hlY2sgYW5kIChpZiBuZWNlc3NhcnkpIHNldCBGUFUgY29udHJvbCB3b3JkIGJlZm9yZSBjYWxsaW5nCisgIGFueSBvZiB0aGUgZHRvYS5jIHN0cmluZyA8LT4gZmxvYXQgY29udmVyc2lvbiBmdW5jdGlvbnMsIG9uIE1TVkMgYnVpbGRzIG9mCisgIFB5dGhvbi4gIFRoaXMgZml4ZXMgaXNzdWVzIHdoZW4gZW1iZWRkaW5nIFB5dGhvbiBpbiBhIERlbHBoaSBhcHAuCisKKy0gX19pbXBvcnRfXygpIG5vdyBtYXRjaGVzIFBFUCAzMjggYW5kIGRvY3VtZW50YXRpb24gYnkgZGVmYXVsdGluZyAnaW5kZXgnIHRvIDAKKyAgaW5zdGVhZCBvZiAtMSBhbmQgcmVtb3Zpbmcgc3VwcG9ydCBmb3IgbmVnYXRpdmUgdmFsdWVzLgorCistIElzc3VlICMyMzc3OiBNYWtlIGltcG9ydGxpYiB0aGUgaW1wbGVtZW50YXRpb24gb2YgX19pbXBvcnRfXygpLgorCistIElzc3VlICMxNTU5NTQ5OiBJbXBvcnRFcnJvciBub3cgaGFzICduYW1lJyBhbmQgJ3BhdGgnIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc2V0CisgIHVzaW5nIGtleXdvcmQgYXJndW1lbnRzIHRvIGl0cyBjb25zdHJ1Y3Rvci4gVGhleSBhcmUgY3VycmVudGx5IG5vdCBzZXQgYnkKKyAgaW1wb3J0IGFzIHRoZXkgYXJlIG1lYW50IGZvciB1c2UgYnkgaW1wb3J0bGliLgorCistIElzc3VlICMxNDQ3NDogU2F2ZSBhbmQgcmVzdG9yZSBleGNlcHRpb24gc3RhdGUgaW4gdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKQorICB3aGlsZSB3cml0aW5nIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHRocmVhZCBsZWF2ZXMgYSB1bmhhbmRsZWQgZXhjZXB0aW9uLgorCistIElzc3VlICMxMzAxOTogRml4IHBvdGVudGlhbCByZWZlcmVuY2UgbGVha3MgaW4gYnl0ZWFycmF5LmV4dGVuZCgpLiAgUGF0Y2gKKyAgYnkgU3VtYW4gU2FoYS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNDc2ODogb3MucGF0aC5leHBhbmR1c2VyKCd+L2EnKSBkb2Vzbid0IHdvcmtzIGNvcnJlY3RseSB3aGVuIEhPTUUgaXMgJy8nLgorCistIElzc3VlICMxNDM3MTogU3VwcG9ydCBiemlwMiBpbiB6aXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKIC0gSXNzdWUgIzEzMTgzOiBGaXggcGRiIHNraXBwaW5nIGZyYW1lcyBhZnRlciBoaXR0aW5nIGEgYnJlYWtwb2ludCBhbmQgcnVubmluZwogICBzdGVwLiAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKQEAgLTMxNiw5ICsxMjQ0LDI1IEBACiAKIC0gSXNzdWUgIzkxNTQ6IEZpeCBwYXJzZXIgbW9kdWxlIHRvIHVuZGVyc3RhbmQgZnVuY3Rpb24gYW5ub3RhdGlvbnMuCiAKKy0gSXNzdWUgIzYwODU6IEluIGh0dHAuc2VydmVyLnB5IFNpbXBsZUhUVFBTZXJ2ZXIuYWRkcmVzc19zdHJpbmcgcmV0dXJucyB0aGUKKyAgY2xpZW50IGlwIGFkZHJlc3MgaW5zdGVhZCBjbGllbnQgaG9zdG5hbWUuIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTQzMDk6IERlcHJlY2F0ZSB0aW1lLmNsb2NrKCksIHVzZSB0aW1lLnBlcmZfY291bnRlcigpIG9yCisgIHRpbWUucHJvY2Vzc190aW1lKCkgaW5zdGVhZC4KKworLSBJc3N1ZSAjMTQ0Mjg6IEltcGxlbWVudCB0aGUgUEVQIDQxOC4gQWRkIHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSwKKyAgdGltZS5wZXJmX2NvdW50ZXIoKSBhbmQgdGltZS5wcm9jZXNzX3RpbWUoKSBmdW5jdGlvbnMsIGFuZCByZW5hbWUKKyAgdGltZS5zdGVhZHkoKSB0byB0aW1lLm1vbm90b25pYygpLgorCistIElzc3VlICMxNDY0NjogaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIoKSBub3cgc2V0cyBfX2xvYWRlcl9fIGFuZAorICBfX3BhY2thZ2VfXyAod2hlbiBwb3NzaWJsZSkuCisKIC0gSXNzdWUgIzE0NjY0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIEB1bml0dGVzdC5za2lwe0lmLFVubGVzc30gb24gYQogICB0ZXN0IGNsYXNzIHRoYXQgZG9lc24ndCBpbmhlcml0IGZyb20gVGVzdENhc2UgKGkuZS4gYSBtaXhpbikuCiAKKy0gSXNzdWUgIzQ4OTI6IG11bHRpcHJvY2Vzc2luZyBDb25uZWN0aW9ucyBjYW4gbm93IGJlIHRyYW5zZmVycmVkIG92ZXIKKyAgbXVsdGlwcm9jZXNzaW5nIENvbm5lY3Rpb25zLiAgUGF0Y2ggYnkgUmljaGFyZCBPdWRrZXJrIChzYnQpLgorCiAtIElzc3VlICMxNDE2MDogVGFyRmlsZS5leHRyYWN0ZmlsZSgpIGZhaWxlZCB0byByZXNvbHZlIHN5bWJvbGljIGxpbmtzIHdoZW4KICAgdGhlIGxpbmtzIHdlcmUgbm90IGxvY2F0ZWQgaW4gYW4gYXJjaGl2ZSBzdWJkaXJlY3RvcnkuCiAKQEAgLTMyOCwxNTggKzEyNzIsMTAwIEBACiAtIElzc3VlICMxMzY4NDogRml4IGh0dHBsaWIgdHVubmVsIGlzc3VlIG9mIGluZmluaXRlIGxvb3BzIGZvciBjZXJ0YWluIHNpdGVzCiAgIHdoaWNoIHNlbmQgRU9GIHdpdGhvdXQgdHJhaWxpbmcgXHJcbi4KIAorLSBJc3N1ZSAjMTQ2MDU6IEFkZCBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIsIGltcG9ydGxpYi5tYWNoaW5lcnkuKEZpbGVGaW5kZXIsCisgIFNvdXJjZUZpbGVMb2FkZXIsIFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBFeHRlbnNpb25GaWxlTG9hZGVyKS4KKworLSBJc3N1ZSAjMTM5NTk6IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpL3NvdXJjZV9mcm9tX2NhY2hlKCkgbm93IGZvbGxvdworICBvcy5wYXRoLmpvaW4oKS9zcGxpdCgpIHNlbWFudGljcyBmb3IgcGF0aCBtYW5pcHVsYXRpb24gaW5zdGVhZCBvZiBpdHMgcHJpb3IsCisgIGN1c3RvbSBzZW1hbnRpY3Mgb2YgY2FyaW5nIHRoZSByaWdodC1tb3N0IHBhdGggc2VwYXJhdG9yIGZvcndhcmQgaW4gcGF0aAorICBqb2luaW5nLgorCistIElzc3VlICMyMTkzOiBBbGxvdyAiOiIgY2hhcmFjdGVyIGluIENvb2tpZSBOQU1FIHZhbHVlcy4KKworLSBJc3N1ZSAjMTQ2Mjk6IHRva2VuaXplci5kZXRlY3RfZW5jb2Rpbmcgd2lsbCBzcGVjaWZ5IHRoZSBmaWxlbmFtZSBpbiB0aGUKKyAgU3ludGF4RXJyb3IgZXhjZXB0aW9uIGlmIGZvdW5kIGF0IHJlYWRsaW5lLl9fc2VsZl9fLm5hbWUuCisKIC0gSXNzdWUgIzE0NjI5OiBSYWlzZSBTeW50YXhFcnJvciBpbiB0b2tlbml6ZXIuZGV0ZWN0X2VuY29kaW5nIGlmIHRoZQogICBmaXJzdCB0d28gbGluZXMgaGF2ZSBub24tVVRGLTggY2hhcmFjdGVycyB3aXRob3V0IGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uLgogCiAtIElzc3VlICMxNDMwODogRml4IGFuIGV4Y2VwdGlvbiB3aGVuIGEgImR1bW15IiB0aHJlYWQgaXMgaW4gdGhlIHRocmVhZGluZwogICBtb2R1bGUncyBhY3RpdmUgbGlzdCBhZnRlciBhIGZvcmsoKS4KIAorLSBJc3N1ZSAjMTE3NTA6IFRoZSBXaW5kb3dzIEFQSSBmdW5jdGlvbnMgc2NhdHRlcmVkIGluIHRoZSBfc3VicHJvY2VzcyBhbmQKKyAgX211bHRpcHJvY2Vzc2luZy53aW4zMiBtb2R1bGVzIG5vdyBsaXZlIGluIGEgc2luZ2xlIG1vZHVsZSAiX3dpbmFwaSIuCisgIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjMTQwODc6IG11bHRpcHJvY2Vzc2luZzogYWRkIENvbmRpdGlvbi53YWl0X2ZvcigpLiBQYXRjaCBieSBzYnQuCisKIC0gSXNzdWUgIzE0NTM4OiBIVE1MUGFyc2VyIGNhbiBub3cgcGFyc2UgY29ycmVjdGx5IHN0YXJ0IHRhZ3MgdGhhdCBjb250YWluCiAgIGEgYmFyZSAnLycuCiAKIC0gSXNzdWUgIzE0NDUyOiBTeXNMb2dIYW5kbGVyIG5vIGxvbmdlciBpbnNlcnRzIGEgVVRGLTggQk9NIGludG8gdGhlIG1lc3NhZ2UuCiAKKy0gSXNzdWUgIzE0Mzg2OiBFeHBvc2UgdGhlIGRpY3RfcHJveHkgaW50ZXJuYWwgdHlwZSBhcyB0eXBlcy5NYXBwaW5nUHJveHlUeXBlLgorCistIElzc3VlICMxMzk1OTogTWFrZSBpbXAucmVsb2FkKCkgYWx3YXlzIHVzZSBhIG1vZHVsZSdzIF9fbG9hZGVyX18gdG8gcGVyZm9ybQorICB0aGUgcmVsb2FkLgorCistIElzc3VlICMxMzk1OTogQWRkIGltcC5weSBhbmQgcmVuYW1lIHRoZSBidWlsdC1pbiBtb2R1bGUgdG8gX2ltcCwgYWxsb3dpbmcgZm9yCisgIHJlLWltcGxlbWVudGluZyBwYXJ0cyBvZiB0aGUgbW9kdWxlIGluIHB1cmUgUHl0aG9uLgorCiAtIElzc3VlICMxMzQ5NjogRml4IHBvdGVudGlhbCBvdmVyZmxvdyBpbiBiaXNlY3QuYmlzZWN0IGFsZ29yaXRobSB3aGVuIGFwcGxpZWQKICAgdG8gYSBjb2xsZWN0aW9uIG9mIHNpemUgPiBzeXMubWF4c2l6ZSAvIDIuCiAKKy0gSGF2ZSBpbXBvcnRsaWIgdGFrZSBhZHZhbnRhZ2Ugb2YgSW1wb3J0RXJyb3IncyBuZXcgJ25hbWUnIGFuZCAncGF0aCcKKyAgYXR0cmlidXRlcy4KKwogLSBJc3N1ZSAjMTQzOTk6IHppcGZpbGUgbm93IHJlY29nbml6ZXMgdGhhdCB0aGUgYXJjaGl2ZSBoYXMgYmVlbiBtb2RpZmllZCBldmVuCiAgIGlmIG9ubHkgdGhlIGNvbW1lbnQgaXMgY2hhbmdlZC4gIEluIGFkZGl0aW9uLCB0aGUgVHlwZUVycm9yIHRoYXQgcmVzdWx0cyBmcm9tCiAgIHRyeWluZyB0byBzZXQgYSBub24tYmluYXJ5IHZhbHVlIGFzIGEgY29tbWVudCBpcyBub3cgbm93IHJhaXNlZCBhdCB0aGUgdGltZQogICB0aGUgY29tbWVudCBpcyBzZXQgcmF0aGVyIHRoYW4gYXQgdGhlIHRpbWUgdGhlIHppcGZpbGUgaXMgd3JpdHRlbi4KIAorLSB0cmFjZS5Db3ZlcmFnZVJlc3VsdHMuaXNfaWdub3JlZF9maWxlbmFtZSgpIG5vdyBpZ25vcmVzIGFueSBuYW1lIHRoYXQgc3RhcnRzCisgIHdpdGggIjwiIGFuZCBlbmRzIHdpdGggIj4iIGluc3RlYWQgb2Ygc3BlY2lhbC1jYXNpbmcgIjxzdHJpbmc+IiBhbmQKKyAgIjxkb2N0ZXN0ICIuCisKKy0gSXNzdWUgIzEyNTM3OiBUaGUgbWFpbGJveCBtb2R1bGUgbm8gbG9uZ2VyIGRlcGVuZHMgb24ga25vd2xlZGdlIG9mIGludGVybmFsCisgIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIGVtYWlsIHBhY2thZ2UgTWVzc2FnZSBvYmplY3QuCisKIC0gSXNzdWUgIzc5Nzg6IHNvY2tldHNlcnZlciBub3cgcmVzdGFydHMgdGhlIHNlbGVjdCgpIGNhbGwgd2hlbiBFSU5UUiBpcwogICByZXR1cm5lZC4gIFRoaXMgYXZvaWRzIGNyYXNoaW5nIHRoZSBzZXJ2ZXIgbG9vcCB3aGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLgogICBQYXRjaCBieSBKZXJ6eSBLb3plcmEuCiAKKy0gSXNzdWUgIzE0NTIyOiBBdm9pZCBkdXBsaWNhdGluZyBzb2NrZXQgaGFuZGxlcyBpbiBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi4KKyAgUGF0Y2ggYnkgc2J0LgorCistIERvbid0IFB5X0RFQ1JFRiBOVUxMIHZhcmlhYmxlIGluIGlvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuCisKKy0gSXNzdWUgIzg1MTU6IFNldCBfX2ZpbGVfXyB3aGVuIHJ1biBmaWxlIGluIElETEUuCisgIEluaXRpYWwgcGF0Y2ggYnkgQnJ1Y2UgRnJlZGVyaWtzZW4uCisKIC0gSXNzdWUgIzE0NDk2OiBGaXggd3JvbmcgbmFtZSBpbiBpZGxlbGliL3RhYmJlZHBhZ2VzLnB5LgogICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCiAKKy0gSXNzdWUgIzMwMzM6IEFkZCBkaXNwbGF5b2YgcGFyYW1ldGVyIHRvIHRraW50ZXIgZm9udC4gUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCisKIC0gSXNzdWUgIzE0NDgyOiBSYWlzZSBhIFZhbHVlRXJyb3IsIG5vdCBhIE5hbWVFcnJvciwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCiAgIGEgbXVsdGlwcm9jZXNzaW5nIENsaWVudCBvciBMaXN0ZW5lciB3aXRoIGFuIEFGX1VOSVggdHlwZSBhZGRyZXNzIHVuZGVyCiAgIFdpbmRvd3MuICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCiAKKy0gSXNzdWUgIzgwMjMxMDogR2VuZXJhdGUgYWx3YXlzIHVuaXF1ZSB0a2ludGVyIGZvbnQgbmFtZXMgaWYgbm90IGRpcmVjdGx5IHBhc3NlZC4KKwogLSBJc3N1ZSAjMTQxNTE6IFJhaXNlIGEgVmFsdWVFcnJvciwgbm90IGEgTmFtZUVycm9yLCB3aGVuIHRyeWluZyB0byBjcmVhdGUKICAgYSBtdWx0aXByb2Nlc3NpbmcgQ2xpZW50IG9yIExpc3RlbmVyIHdpdGggYW4gQUZfUElQRSB0eXBlIGFkZHJlc3MgdW5kZXIKICAgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLiAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgogCi0tIElzc3VlICMxMzg3Mjogc29ja2V0LmRldGFjaCgpIG5vdyBtYXJrcyB0aGUgc29ja2V0IGNsb3NlZCAoYXMgbWlycm9yZWQKLSAgaW4gdGhlIHNvY2tldCByZXByKCkpLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCistIElzc3VlICMxNDQ5MzogVXNlIGd2ZnMtb3BlbiBvciB4ZGctb3BlbiBpbiB3ZWJicm93c2VyLgogCi0tIElzc3VlICMxNDQwNjogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiB1c2luZyBgYGNvbmN1cnJlbnQuZnV0dXJlcy53YWl0KAotICByZXR1cm5fd2hlbj1BTExfQ09NUExFVEVEKWBgLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCitCdWlsZAorLS0tLS0KIAotLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKLSAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZAotICBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleSBiaW5kaW5ncy4KLSAgVGhlcmUgd2FzIHByZXZpb3VzbHkgYSBidWcgaW4gb25lIG9mIHRoZSBkZWZhdWx0cy4KLQotLSBJc3N1ZSAjMTAzNDA6IGFzeW5jb3JlIC0gcHJvcGVybHkgaGFuZGxlIEVJTlZBTCBpbiBkaXNwYXRjaGVyIGNvbnN0cnVjdG9yIG9uCi0gIE9TWDsgYXZvaWQgdG8gY2FsbCBoYW5kbGVfY29ubmVjdCBpbiBjYXNlIG9mIGEgZGlzY29ubmVjdGVkIHNvY2tldCB3aGljaAotICB3YXMgbm90IG1lYW50IHRvIGNvbm5lY3QuCi0KLS0gSXNzdWUgIzEyNzU3OiBGaXggdGhlIHNraXBwaW5nIG9mIGRvY3Rlc3RzIHdoZW4gcHl0aG9uIGlzIHJ1biB3aXRoIC1PTyBzbwotICB0aGF0IGl0IHdvcmtzIGluIHVuaXR0ZXN0J3MgdmVyYm9zZSBtb2RlIGFzIHdlbGwgYXMgbm9uLXZlcmJvc2UgbW9kZS4KLQotLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncwotICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKSAoUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8pCi0KLS0gSXNzdWUgIzEzNjk0OiBhc3luY2hyb25vdXMgY29ubmVjdCBpbiBhc3luY29yZS5kaXNwYXRjaGVyIGRvZXMgbm90IHNldCBhZGRyCi0gIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjMTE2ODY6IEFkZGVkIG1pc3NpbmcgZW50cmllcyB0byBlbWFpbCBwYWNrYWdlIF9fYWxsX18gbGlzdHMKLSAgKG1vc3RseSB0aGUgbmV3IEJ5dGVzIGNsYXNzZXMpLgotCi0tIElzc3VlICMxMDQ4NDogRml4IHRoZSBDR0lIVFRQU2VydmVyJ3MgUEFUSF9JTkZPIGhhbmRsaW5nIHByb2JsZW0uCi0KLS0gSXNzdWUgIzExMTk5OiBGaXggdGhlIHdpdGggdXJsbGliIHdoaWNoIGhhbmdzIG9uIHBhcnRpY3VsYXIgZnRwIHVybHMuCi0KLS0gSXNzdWUgIzE0MDYyOiBIZWFkZXIgb2JqZWN0cyBub3cgY29ycmVjdGx5IHJlc3BlY3QgdGhlICdsaW5lc2VwJyBzZXR0aW5nCi0gIHdoZW4gcHJvY2Vzc2VkIGJ5IEJ5dGVzUGFyc2VyICh3aGljaCBzbXRwbGliLlNNVFAuc2VuZF9tZXNzYWdlIHVzZXMpLgotCi0tIElzc3VlICMxNDI5MTogRW1haWwgbm93IGRlZmF1bHRzIHRvIHV0Zi04IGZvciBub24tQVNDSUkgdW5pY29kZSBoZWFkZXJzCi0gIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIDIuNy4KLQotLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KLQotLSBJc3N1ZSAjMTQxODQ6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uCi0gIE1hYyBPUyBYIHRvIGF2b2lkIGludGVycHJldGVyIGNyYXNoZXMgd2hlbiB1c2luZyB0aHJlYWRzIG9uIDEwLjcuCi0KLS0gSXNzdWUgIzEwNTQzOiBGaXggdW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgd2l0aCBKeXRob24gYnl0ZWNvZGUgZmlsZXMuCi0KLS0gSXNzdWUgIzE0MjUyOiBGaXggc3VicHJvY2Vzcy5Qb3Blbi50ZXJtaW5hdGUoKSB0byBub3QgcmFpc2UgYW4gZXJyb3IgdW5kZXIKLSAgV2luZG93cyB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZC4KLQotLSBJc3N1ZSAjMTQxOTU6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIHdlYWtyZWYuV2Vha1NldCBpbnN0YW5jZXMgdG8gaW5jb3JyZWN0bHkKLSAgcmV0dXJuIFRydWUgZm9yIGEgV2Vha1NldCBpbnN0YW5jZSAnYScgaW4gYm90aCAnYSA8IGEnIGFuZCAnYSA+IGEnIGhhcyBiZWVuCi0gIGZpeGVkLgotCi0tIElzc3VlICMxNDE3NzogbWFyc2hhbC5sb2FkcygpIG5vdyByYWlzZXMgVHlwZUVycm9yIHdoZW4gZ2l2ZW4gYW4gdW5pY29kZQotICBzdHJpbmcuICBQYXRjaCBieSBHdWlsaGVybWUgR29uw6dhbHZlcy4KLQotLSBJc3N1ZSAjMTQxNTk6IEZpeCB0aGUgbGVuKCkgb2Ygd2VhayBjb250YWluZXJzIChXZWFrU2V0LCBXZWFrS2V5RGljdGlvbmFyeSwKLSAgV2Vha1ZhbHVlRGljdGlvbmFyeSkgdG8gcmV0dXJuIGEgYmV0dGVyIGFwcHJveGltYXRpb24gd2hlbiBzb21lIG9iamVjdHMKLSAgYXJlIGRlYWQgb3IgZHlpbmcuICBNb3Jlb3ZlciwgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5vdyBPKDEpIHJhdGhlciB0aGFuCi0gIE8obikuCi0KLS0gSXNzdWUgIzEzMTI1OiBTaWxlbmNlIHNwdXJpb3VzIHRlc3RfbGliMnRvMyBvdXRwdXQgd2hlbiBpbiBub24tdmVyYm9zZSBtb2RlLgotICBQYXRjaCBieSBNaWtoYWlsIE5vdmlrb3YuCi0KLS0gSXNzdWUgIzEzNDQ3OiBBZGQgYSB0ZXN0IGZpbGUgdG8gaG9zdCByZWdyZXNzaW9uIHRlc3RzIGZvciBidWdzIGluIHRoZQotICBzY3JpcHRzIGZvdW5kIGluIHRoZSBUb29scyBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzgwMzM6IHNxbGl0ZTM6IEZpeCA2NC1iaXQgaW50ZWdlciBoYW5kbGluZyBpbiB1c2VyIGZ1bmN0aW9ucwotICBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gSW5pdGlhbCBwYXRjaCBieSBQaGlsaXBwZSBEZXZhbGtlbmVlci4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzY0OTM6IEFuIGlzc3VlIGluIGN0eXBlcyBvbiBXaW5kb3dzIHRoYXQgY2F1c2VkIHN0cnVjdHVyZSBiaXRmaWVsZHMKLSAgb2YgdHlwZSBjdHlwZXMuY191aW50MzIgYW5kIHdpZHRoIDMyIHRvIGluY29ycmVjdGx5IGJlIHNldCBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjMTUwMDA6IFN1cHBvcnQgdGhlICJ1bmlxdWUiIHgzMiBhcmNoaXRlY3R1cmUgaW4gX3Bvc2l4c3VicHJvY2Vzcy5jLgotCi0tIElzc3VlICM5MDQxOiBBbiBpc3N1ZSBpbiBjdHlwZXMuY19sb25nZG91YmxlLCBjdHlwZXMuY19kb3VibGUsIGFuZAotICBjdHlwZXMuY19mbG9hdCB0aGF0IGNhdXNlZCBhbiBpbmNvcnJlY3QgZXhjZXB0aW9uIHRvIGJlIHJldHVybmVkIGluIHRoZQotICBjYXNlIG9mIG92ZXJmbG93IGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNDIxMjogVGhlIHJlIG1vZHVsZSBkaWRuJ3QgcmV0YWluIGEgcmVmZXJlbmNlIHRvIGJ1ZmZlcnMgaXQgd2FzCi0gIHNjYW5uaW5nLCByZXN1bHRpbmcgaW4gc2VnZmF1bHRzLgorLSAibWFrZSB0b3VjaCIgd2lsbCBub3cgdG91Y2ggZ2VuZXJhdGVkIGZpbGVzIHRoYXQgYXJlIGNoZWNrZWQgaW50byBNZXJjdXJpYWwsCisgIGFmdGVyIGEgImhnIHVwZGF0ZSIgd2hpY2ggZmFpbGVkIHRvIGJyaW5nIHRoZSB0aW1lc3RhbXBzIGludG8gdGhlIHJpZ2h0IG9yZGVyLgogCiBUZXN0cwogLS0tLS0KIAotLSBJc3N1ZSAjMTU3NDc6IFpGUyBhbHdheXMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlCi0gIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZAotICB0ZXN0cyBpbiB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCi0KLS0gSXNzdWUgIzE1Mjg1OiBSZWZhY3RvciB0aGUgYXBwcm9hY2ggZm9yIHRlc3RpbmcgY29ubmVjdCB0aW1lb3V0cyB1c2luZwotICB0d28gZXh0ZXJuYWwgaG9zdHMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgdHlwZQotICBvZiB0ZXN0LgotCi0tIElzc3VlICMxNTYxNTogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBqc29uIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQKLSAgaW5wdXQgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCi0KLS0gSXNzdWUgIzE1NDk2OiBBZGQgZGlyZWN0b3J5IHJlbW92YWwgaGVscGVycyBmb3IgdGVzdHMgb24gV2luZG93cy4KLSAgUGF0Y2ggYnkgSmVyZW15IEtsb3RoLgotCi0tIElzc3VlICMxNTQ2NzogTW92ZSBoZWxwZXJzIGZvciBfX3NpemVvZl9fIHRlc3RzIGludG8gdGVzdF9zdXBwb3J0LgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTMyMDogTWFrZSBpdGVyYXRpbmcgdGhlIGxpc3Qgb2YgdGVzdHMgdGhyZWFkLXNhZmUgd2hlbiBydW5uaW5nCi0gIHRlc3RzIGluIG11bHRpcHJvY2VzcyBtb2RlLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KLQotLSBJc3N1ZSAjMTUyMzA6IEFkb3B0ZWQgYSBtb3JlIHN5c3RlbWF0aWMgYXBwcm9hY2ggaW4gdGhlIHJ1bnB5IHRlc3RzCi0KLS0gSXNzdWUgIzE1MzAwOiBFbnN1cmUgdGhlIHRlbXBvcmFyeSB0ZXN0IHdvcmtpbmcgZGlyZWN0b3JpZXMgYXJlIGluIHRoZSBzYW1lCi0gIHBhcmVudCBmb2xkZXIgd2hlbiBydW5uaW5nIHRlc3RzIGluIG11bHRpcHJvY2VzcyBtb2RlIGZyb20gYSBQeXRob24gYnVpbGQuCi0gIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIHRlc3Rfbm50cGxpYiBub3cgdG9sZXJhdGVzIGJlaW5nIHJ1biBmcm9tIGJlaGluZCBOTlRQIGdhdGV3YXlzIHRoYXQgYWRkCi0gICJYLUFudGl2aXJ1cyIgaGVhZGVycyB0byBhcnRpY2xlcwotCi0tIElzc3VlICMxNTA0MzogdGVzdF9nZGIgaXMgbm93IHNraXBwZWQgZW50aXJlbHkgaWYgZ2RiIHNlY3VyaXR5IHNldHRpbmdzCi0gIGJsb2NrIGxvYWRpbmcgb2YgdGhlIGdkYiBob29rcwotCiAtIElzc3VlICMxNDAyNjogSW4gdGVzdF9jbWRfbGluZV9zY3JpcHQsIGNoZWNrIHRoYXQgc3lzLmFyZ3YgaXMgcG9wdWxhdGVkCiAgIGNvcnJlY3RseSBmb3IgdGhlIHZhcmlvdXMgaW52b2NhdGlvbiBhcHByb2FjaGVzIChQYXRjaCBieSBKYXNvbiBZZW8pCiAKQEAgLTQ4OSwxMjIgKzEzNzUsMzEwIEBACiAtIElzc3VlICMxNDU4OTogVXBkYXRlIGNlcnRpZmljYXRlIGNoYWluIGZvciBzaGEyNTYudGJzLWludGVybmV0LmNvbSwgZml4aW5nCiAgIGEgdGVzdCBmYWlsdXJlIGluIHRlc3Rfc3NsLgogCi1CdWlsZAotLS0tLS0KKy0gSXNzdWUgIzE0MzU1OiBSZWdydGVzdCBub3cgc3VwcG9ydHMgdGhlIHN0YW5kYXJkIHVuaXR0ZXN0IHRlc3QgbG9hZGluZywgYW5kCisgIHdpbGwgdXNlIGl0IGlmIGEgdGVzdCBmaWxlIGNvbnRhaW5zIG5vIGB0ZXN0X21haW5gIG1ldGhvZC4KIAotLSBJc3N1ZSAjMTU2NDU6IEVuc3VyZSAydG8zIGdyYW1tYXIgcGlja2xlcyBhcmUgcHJvcGVybHkgaW5zdGFsbGVkLgotCi0tIElzc3VlICMxNTU2MDogRml4IGJ1aWxkaW5nIF9zcWxpdGUzIGV4dGVuc2lvbiBvbiBPUyBYIHdpdGggYW4gU0RLLgotCi0tIElzc3VlICM4ODQ3OiBEaXNhYmxlIENPTURBVCBmb2xkaW5nIGluIFdpbmRvd3MgUEdPIGJ1aWxkcy4KLQotLSBJc3N1ZSAjMTQxOTc6IEZvciBPUyBYIGZyYW1ld29yayBidWlsZHMsIGVuc3VyZSBsaW5rcyB0byB0aGUgc2hhcmVkCi0gIGxpYnJhcnkgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgcHJvcGVyIEFCSSBzdWZmaXguCi0KLS0gSXNzdWUgIzE0NDcyOiBVcGRhdGUgLmdpdGlnbm9yZS4gUGF0Y2ggYnkgTWF0ZWogQ2VwbC4KLQotLSBUaGUgV2luZG93cyBidWlsZCBub3cgdXNlcyBPcGVuU1NMIDEuMC4waiBhbmQgYnppcDIgMS4wLjYuCi0KLS0gSXNzdWUgIzE0NTU3OiBGaXggZXh0ZW5zaW9ucyBidWlsZCBvbiBIUC1VWC4gUGF0Y2ggYnkgQWRpIFJvaWJhbi4KLQotLSBJc3N1ZSAjMTQ0Mzc6IEZpeCBidWlsZGluZyB0aGUgX2lvIG1vZHVsZSB1bmRlciBDeWd3aW4uCi0KLS0gSXNzdWUgIzE0Mzg3OiBEbyBub3QgaW5jbHVkZSBhY2N1LmggZnJvbSBQeXRob24uaC4KLQotLSBJc3N1ZSAjMTQzNTk6IE9ubHkgdXNlIE9fQ0xPRVhFQyBpbiBfcG9zaXhtb2R1bGUuYyBpZiBpdCBpcyBkZWZpbmVkLgotICBCYXNlZCBvbiBwYXRjaCBmcm9tIEhlcnbDqSBDb2F0YW5oYXkuCi0KLS0gSXNzdWUgIzE0MDE4OiBGaXggT1MgWCBUY2wvVGsgZnJhbWV3b3JrIGNoZWNraW5nIHdoZW4gdXNpbmcgT1MgWCBTREtzLgotCi1Eb2N1bWVudGF0aW9uCitUb29scyAvIERlbW9zCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzExOTY0OiBEb2N1bWVudCBhIGNoYW5nZSBpbiB2My4yIHRvIHRoZSBiZWhhdmlvciBvZiB0aGUgaW5kZW50Ci0gIHBhcmFtZXRlciBvZiBqc29uIGVuY29kaW5nIG9wZXJhdGlvbnMuCistIElzc3VlICMzNTYxOiBUaGUgV2luZG93cyBpbnN0YWxsZXIgbm93IGhhcyBhbiBvcHRpb24sIG9mZiBieSBkZWZhdWx0LCBmb3IKKyAgcGxhY2luZyB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBpbnRvIHRoZSBzeXN0ZW0gIlBhdGgiIGVudmlyb25tZW50IHZhcmlhYmxlLgogCi0tIElzc3VlICMxNDY3NDogQWRkIGEgZGlzY3Vzc2lvbiBvZiB0aGUganNvbiBtb2R1bGUncyBzdGFuZGFyZCBjb21wbGlhbmNlLgotICBQYXRjaCBieSBDaHJpcyBSZWJlcnQuCi0KLS0gSXNzdWUgIzE1NjMwOiBBZGQgYW4gZXhhbXBsZSBmb3IgImNvbnRpbnVlIiBzdG10IGluIHRoZSB0dXRvcmlhbC4gUGF0Y2ggYnkKLSAgRGFuaWVsIEVsbGlzLgotCi0tIElzc3VlICMxNTQ0NDogVXNlIHByb3BlciBzcGVsbGluZyBmb3Igbm9uLUFTQ0lJIGNvbnRyaWJ1dG9yIG5hbWVzLiAgUGF0Y2gKLSAgYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAxNTQ4MjogUHJvcGVybHkgZG9jdW1lbnQgdGhlIGRlZmF1bHQgJ2xldmVsJyB2YWx1ZSBmb3IgX19pbXBvcnRfXygpCi0gIHdoaWxlIHdhcm5pbmcgYWJvdXQgdXNpbmcgbmVnYXRpdmUgdmFsdWVzLgotCi0tIElzc3VlICMxNTIzMDogQ2xlYXJseSBkb2N1bWVudCBzb21lIG9mIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgcnVucHkKLSAgbW9kdWxlIGFuZCBudWRnZSByZWFkZXJzIHRvd2FyZHMgaW1wb3J0bGliIHdoZW4gYXBwcm9wcmlhdGUuCi0KLS0gSXNzdWUgIzEzNTU3OiBDbGFyaWZ5IGVmZmVjdCBvZiBnaXZpbmcgdHdvIGRpZmZlcmVudCBuYW1lc3BhY2VzIHRvIGV4ZWMgb3IKLSAgZXhlY2ZpbGUoKS4KLQotLSBJc3N1ZSAjODc5OTogRml4IGFuZCBpbXByb3ZlIHRoZSB0aHJlYWRpbmcuQ29uZGl0aW9uIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzE0OTQzOiBDb3JyZWN0IGEgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZSBmb3Igd2lucmVnLk9wZW5LZXkKLSAgYW5kIGNvcnJlY3RseSBsaXN0IHRoZSBhcmd1bWVudCBuYW1lcyBpbiB0aGUgZnVuY3Rpb24ncyBleHBsYW5hdGlvbi4KLQotLSBJc3N1ZSAjMTQwMzQ6IGFkZGVkIHRoZSBhcmdwYXJzZSB0dXRvcmlhbC4KLQotLSBJc3N1ZSAjMTUyNTA6IERvY3VtZW50IHRoYXQgZmlsZWNtcC5kaXJjbXAgY29tcGFyZXMgZmlsZXMgc2hhbGxvd2x5LiBQYXRjaAotICBjb250cmlidXRlZCBieSBDaHJpcyBKZXJkb25lay4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0Njk1OiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciBzdGFycmVkIGFzc2lnbm1lbnRzIGluCi0gIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5LgorLSBJc3N1ZSAjMTMxNjU6IHN0cmluZ2JlbmNoIGlzIG5vdyBhdmFpbGFibGUgaW4gdGhlIFRvb2xzL3N0cmluZ2JlbmNoIGZvbGRlci4KKyAgSXQgdXNlZCB0byBsaXZlIGluIGl0cyBvd24gU1ZOIHByb2plY3QuCiAKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0qUmVsZWFzZSBkYXRlOiAxMC1BcHItMjAxMioKKypSZWxlYXNlIGRhdGU6IDAxLUFwci0yMDEyKgogCi1CdWlsZAotLS0tLS0KK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxNDM4NzogV29yayBhcm91bmQgYSBwcm9ibGVtIGJ1aWxkaW5nIGV4dGVuc2lvbiBtb2R1bGVzIHVuZGVyIFdpbmRvd3MKLSAgYnkgdW5kZWZpbmluZyBgYHNtYWxsYGAgYmVmb3JlIHVzZSBpbiB0aGUgUHl0aG9uIGhlYWRlcnMuCistIElzc3VlICMxNjgzMzY4OiBvYmplY3QuX19uZXdfXyBhbmQgb2JqZWN0Ll9faW5pdF9fIHJhaXNlIGEgVHlwZUVycm9yIGlmIHRoZXkKKyAgYXJlIHBhc3NlZCBhcmd1bWVudHMgYW5kIHRoZWlyIGNvbXBsZW1lbnRhcnkgbWV0aG9kIGlzIG5vdCBvdmVycmlkZGVuLgogCistIElzc3VlICMxNDM3ODogRml4IGNvbXBpbGluZyBhc3QuSW1wb3J0RnJvbSBub2RlcyB3aXRoIGEgIl9fZnV0dXJlX18iIHN0cmluZyBhcworICB0aGUgbW9kdWxlIG5hbWUgdGhhdCB3YXMgbm90IGludGVybmVkLgogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMyByZWxlYXNlIGNhbmRpZGF0ZSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0gSXNzdWUgIzE0MzMxOiBVc2Ugc2lnbmlmaWNhbnRseSBsZXNzIHN0YWNrIHNwYWNlIHdoZW4gaW1wb3J0aW5nIG1vZHVsZXMgYnkKKyAgYWxsb2NhdGluZyBwYXRoIGJ1ZmZlcnMgb24gdGhlIGhlYXAgaW5zdGVhZCBvZiB0aGUgc3RhY2suCiAKLSpSZWxlYXNlIGRhdGU6IDE4LU1hci0yMDEyKgorLSBJc3N1ZSAjMTQzMzQ6IFByZXZlbnQgaW4gYSBzZWdmYXVsdCBpbiB0eXBlLl9fZ2V0YXR0cmlidXRlX18gd2hlbiBpdCB3YXMgbm90CisgIHBhc3NlZCBzdHJpbmdzLgorCistIElzc3VlICMxNDY5NjI5OiBBbGxvdyBjeWNsZXMgdGhyb3VnaCBhbiBvYmplY3QncyBfX2RpY3RfXyBzbG90IHRvIGJlCisgIGNvbGxlY3RlZC4gKEZvciBleGFtcGxlIGlmIGBgeC5fX2RpY3RfXyBpcyB4YGApLgorCistIElzc3VlICMxNDIwNTogZGljdCBsb29rdXAgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZSBkaWN0IGlzIG1vZGlmaWVkCisgIGR1cmluZyBhIGxvb2t1cC4KKworLSBJc3N1ZSAjMTQyMjA6IFdoZW4gYSBnZW5lcmF0b3IgaXMgZGVsZWdhdGluZyB0byBhbm90aGVyIGl0ZXJhdG9yIHdpdGggdGhlCisgIHlpZWxkIGZyb20gc3ludGF4LCBpdCBuZWVkcyB0byBoYXZlIGl0cyBgYGdpX3J1bm5pbmdgYCBmbGFnIHNldCB0byBUcnVlLgorCistIElzc3VlICMxNDQzNTogUmVtb3ZlIGRlZGljYXRlZCBibG9jayBhbGxvY2F0b3IgZnJvbSBmbG9hdG9iamVjdC5jIGFuZCByZWx5CisgIG9uIHRoZSBQeU9iamVjdF9NYWxsb2MoKSBhcGkgbGlrZSBhbGwgb3RoZXIgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ0NzE6IEZpeCBhIHBvc3NpYmxlIGJ1ZmZlciBvdmVycnVuIGluIHRoZSB3aW5yZWcgbW9kdWxlLgorCistIElzc3VlICMxNDI4ODogQWxsb3cgdGhlIHNlcmlhbGl6YXRpb24gb2YgYnVpbHRpbiBpdGVyYXRvcnMKIAogTGlicmFyeQogLS0tLS0tLQogCi0tIElzc3VlICM2ODg0OiBGaXggbG9uZy1zdGFuZGluZyBidWdzIHdpdGggTUFOSUZFU1QuaW4gcGFyc2luZyBpbiBkaXN0dXRpbHMKLSAgb24gV2luZG93cy4KKy0gSXNzdWUgIzE0MzAwOiBVbmRlciBXaW5kb3dzLCBzb2NrZXRzIGNyZWF0ZWQgdXNpbmcgc29ja2V0LmR1cCgpIG5vdyBhbGxvdworICBvdmVybGFwcGVkIEkvTy4gIFBhdGNoIGJ5IHNidC4KIAotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCistIElzc3VlICMxMzg3Mjogc29ja2V0LmRldGFjaCgpIG5vdyBtYXJrcyB0aGUgc29ja2V0IGNsb3NlZCAoYXMgbWlycm9yZWQKKyAgaW4gdGhlIHNvY2tldCByZXByKCkpLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCisKKy0gSXNzdWUgIzE0NDA2OiBGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVuIHVzaW5nIGBgY29uY3VycmVudC5mdXR1cmVzLndhaXQoCisgIHJldHVybl93aGVuPUFMTF9DT01QTEVURUQpYGAuICBQYXRjaCBieSBNYXR0IEpvaW5lci4KKworLSBJc3N1ZSAjNTEzNjogZGVwcmVjYXRlIG9sZCwgdW51c2VkIGZ1bmN0aW9ucyBmcm9tIHRraW50ZXIuCisKKy0gSXNzdWUgIzE0NDA5OiBJRExFIG5vdyBwcm9wZXJseSBleGVjdXRlcyBjb21tYW5kcyBpbiB0aGUgU2hlbGwgd2luZG93CisgIHdoZW4gaXQgY2Fubm90IHJlYWQgdGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQKKyAgaGFzIHRvIHVzZSB0aGUgYnVpbHQtaW4gZGVmYXVsdCBrZXkgYmluZGluZ3MuCisgIFRoZXJlIHdhcyBwcmV2aW91c2x5IGEgYnVnIGluIG9uZSBvZiB0aGUgZGVmYXVsdHMuCisKKy0gSXNzdWUgIzE0NDE2OiBzeXNsb2cgbm93IGRlZmluZXMgdGhlIExPR19PREVMQVkgYW5kIExPR19BVVRIUFJJViBjb25zdGFudHMKKyAgaWYgdGhleSBhcmUgZGVmaW5lZCBpbiA8c3lzbG9nLmg+LgorCistIElETEUgY2FuIGJlIGxhdW5jaGVkIGFzIHB5dGhvbiAtbSBpZGxlbGliCisKKy0gSXNzdWUgIzE0Mjk1OiBBZGQgdW5pdHRlc3QubW9jaworCistIElzc3VlICM3NjUyOiBBZGQgLS13aXRoLXN5c3RlbS1saWJtcGRlYyBvcHRpb24gdG8gY29uZmlndXJlIGZvciBsaW5raW5nCisgIHRoZSBfZGVjaW1hbCBtb2R1bGUgYWdhaW5zdCBhbiBpbnN0YWxsZWQgbGlibXBkZWMuCisKKy0gSXNzdWUgIzE0MzgwOiBNSU1FVGV4dCBub3cgZGVmYXVsdHMgdG8gdXRmLTggd2hlbiBwYXNzZWQgbm9uLUFTQ0lJIHVuaWNvZGUKKyAgd2l0aCBubyBjaGFyc2V0IHNwZWNpZmllZC4KKworLSBJc3N1ZSAjMTAzNDA6IGFzeW5jb3JlIC0gcHJvcGVybHkgaGFuZGxlIEVJTlZBTCBpbiBkaXNwYXRjaGVyIGNvbnN0cnVjdG9yIG9uCisgIE9TWDsgYXZvaWQgdG8gY2FsbCBoYW5kbGVfY29ubmVjdCBpbiBjYXNlIG9mIGEgZGlzY29ubmVjdGVkIHNvY2tldCB3aGljaAorICB3YXMgbm90IG1lYW50IHRvIGNvbm5lY3QuCisKKy0gSXNzdWUgIzE0MjA0OiBUaGUgc3NsIG1vZHVsZSBub3cgaGFzIHN1cHBvcnQgZm9yIHRoZSBOZXh0IFByb3RvY29sCisgIE5lZ290aWF0aW9uIGV4dGVuc2lvbiwgaWYgYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nIE9wZW5TU0wgbGlicmFyeS4KKyAgUGF0Y2ggYnkgQ29saW4gTWFyYy4KKworLSBJc3N1ZSAjMzAzNTogVW51c2VkIGZ1bmN0aW9ucyBmcm9tIHRraW50ZXIgYXJlIG1hcmtlZCBhcyBwZW5kaW5nIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzEyNzU3OiBGaXggdGhlIHNraXBwaW5nIG9mIGRvY3Rlc3RzIHdoZW4gcHl0aG9uIGlzIHJ1biB3aXRoIC1PTyBzbworICB0aGF0IGl0IHdvcmtzIGluIHVuaXR0ZXN0J3MgdmVyYm9zZSBtb2RlIGFzIHdlbGwgYXMgbm9uLXZlcmJvc2UgbW9kZS4KKworLSBJc3N1ZSAjNzY1MjogSW50ZWdyYXRlIHRoZSBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGxpYm1wZGVjIGxpYnJhcnkgdG8gc3BlZWQKKyAgdXAgdGhlIGRlY2ltYWwgbW9kdWxlLiBQZXJmb3JtYW5jZSBnYWlucyBvZiB0aGUgbmV3IEMgaW1wbGVtZW50YXRpb24gYXJlCisgIGJldHdlZW4gMTB4IGFuZCAxMDB4LCBkZXBlbmRpbmcgb24gdGhlIGFwcGxpY2F0aW9uLgorCistIElzc3VlICMzNTczOiBJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzCisgIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mIGZpbGUocykpIChQYXRjaCBieSBHdWlsaGVybWUgUG9sbykKKworLSBJc3N1ZSAjMTQyNjk6IFNNVFBEIG5vdyBjb25mb3JtcyB0byB0aGUgUkZDIGFuZCByZXF1aXJlcyBhIEhFTE8gY29tbWFuZAorICBiZWZvcmUgTUFJTCwgUkNQVCwgb3IgREFUQS4KKworLSBJc3N1ZSAjMTM2OTQ6IGFzeW5jaHJvbm91cyBjb25uZWN0IGluIGFzeW5jb3JlLmRpc3BhdGNoZXIgZG9lcyBub3Qgc2V0IGFkZHIKKyAgYXR0cmlidXRlLgorCistIElzc3VlICMxNDM0NDogZml4ZWQgdGhlIHJlcHIgb2YgZW1haWwucG9saWN5IG9iamVjdHMuCisKKy0gSXNzdWUgIzExNjg2OiBBZGRlZCBtaXNzaW5nIGVudHJpZXMgdG8gZW1haWwgcGFja2FnZSBfX2FsbF9fIGxpc3RzCisgIChtb3N0bHkgdGhlIG5ldyBCeXRlcyBjbGFzc2VzKS4KKworLSBJc3N1ZSAjMTQzMzU6IG11bHRpcHJvY2Vzc2luZydzIGN1c3RvbSBQaWNrbGVyIHN1YmNsYXNzIG5vdyBpbmhlcml0cyBmcm9tCisgIHRoZSBDLWFjY2VsZXJhdGVkIGltcGxlbWVudGF0aW9uLiAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICMxMDQ4NDogRml4IHRoZSBDR0lIVFRQU2VydmVyJ3MgUEFUSF9JTkZPIGhhbmRsaW5nIHByb2JsZW0uCisKKy0gSXNzdWUgIzExMTk5OiBGaXggdGhlIHdpdGggdXJsbGliIHdoaWNoIGhhbmdzIG9uIHBhcnRpY3VsYXIgZnRwIHVybHMuCisKKy0gSW1wcm92ZSB0aGUgbWVtb3J5IHV0aWxpemF0aW9uIGFuZCBzcGVlZCBvZiBmdW5jdG9vbHMubHJ1X2NhY2hlLgorCistIElzc3VlICMxNDIyMjogVXNlIHRoZSBuZXcgdGltZS5zdGVhZHkoKSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRpbWUudGltZSgpIGZvcgorICB0aW1lb3V0IGluIHF1ZXVlIGFuZCB0aHJlYWRpbmcgbW9kdWxlcyB0byBub3QgYmUgYWZmZWN0ZWQgb2Ygc3lzdGVtIHRpbWUKKyAgdXBkYXRlLgorCistIElzc3VlICMxMzI0ODogUmVtb3ZlIGxpYjJ0bzMucHl0cmVlLkJhc2UuZ2V0X3ByZWZpeC9zZXRfcHJlZml4LgogCiAtIElzc3VlICMxNDIzNDogQ1ZFLTIwMTItMDg3NjogUmFuZG9taXplIGhhc2hlcyBvZiB4bWwgYXR0cmlidXRlcyBpbiB0aGUgaGFzaAogICB0YWJsZSBpbnRlcm5hbCB0byB0aGUgcHlleHBhdCBtb2R1bGUncyBjb3B5IG9mIHRoZSBleHBhdCBsaWJyYXJ5IHRvIGF2b2lkIGEKICAgZGVuaWFsIG9mIHNlcnZpY2UgZHVlIHRvIGhhc2ggY29sbGlzaW9ucy4gIFBhdGNoIGJ5IERhdmlkIE1hbGNvbG0gd2l0aCBzb21lCiAgIG1vZGlmaWNhdGlvbnMgYnkgdGhlIGV4cGF0IHByb2plY3QuCiAKKy0gSXNzdWUgIzE0MjAwOiBJZGxlIHNoZWxsIGNyYXNoIG9uIHByaW50aW5nIG5vbi1CTVAgdW5pY29kZSBjaGFyYWN0ZXIuCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4zIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLSBJc3N1ZSAjMTI4MTg6IGZvcm1hdCBhZGRyZXNzIG5vIGxvbmdlciBuZWVkbGVzc2x5IFwgZXNjYXBlcyAoKXMgaW4gbmFtZXMgd2hlbgorICB0aGUgbmFtZSBlbmRzIHVwIGJlaW5nIHF1b3RlZC4KIAotKlJlbGVhc2UgZGF0ZTogMjQtRmViLTIwMTIqCistIElzc3VlICMxNDA2MjogQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBmb2xkcyBIZWFkZXIgb2JqZWN0cywKKyAgaW5jbHVkaW5nIHVzaW5nIGxpbmVzZXAgd2hlbiBmb2xkaW5nLgorCistIElzc3VlICMxMzgzOTogV2hlbiBpbnZva2VkIG9uIHRoZSBjb21tYW5kLWxpbmUsIHRoZSBwc3RhdHMgbW9kdWxlIG5vdworICBhY2NlcHRzIHNldmVyYWwgZmlsZW5hbWVzIG9mIHByb2ZpbGUgc3RhdCBmaWxlcyBhbmQgbWVyZ2VzIHRoZW0gYWxsLgorICBQYXRjaCBieSBNYXR0IEpvaW5lci4KKworLSBJc3N1ZSAjMTQyOTE6IEVtYWlsIG5vdyBkZWZhdWx0cyB0byB1dGYtOCBmb3Igbm9uLUFTQ0lJIHVuaWNvZGUgaGVhZGVycworICBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuICBUaGlzIGZpeGVzIGEgcmVncmVzc2lvbiByZWxhdGl2ZSB0byAyLjcuCisKKy0gSXNzdWUgIzk4OTcxMjogU3VwcG9ydCB1c2luZyBUayB3aXRob3V0IGEgbWFpbmxvb3AuCisKKy0gSXNzdWUgIzUyMTk6IFByZXZlbnQgZXZlbnQgaGFuZGxlciBjYXNjYWRlIGluIElETEUuCisKKy0gSXNzdWUgIzM4MzU6IFJlZnVzZSB0byB1c2UgdW50aHJlYWRlZCBUY2wgaW4gdGhyZWFkZWQgUHl0aG9uLgorCistIElzc3VlICMyODQzOiBBZGQgbmV3IFRrIEFQSSB0byBUa2ludGVyLgorCistIElzc3VlICMxNDE4NDogSW5jcmVhc2UgdGhlIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZHMgb24KKyAgTWFjIE9TIFggdG8gYXZvaWQgaW50ZXJwcmV0ZXIgY3Jhc2hlcyB3aGVuIHVzaW5nIHRocmVhZHMgb24gMTAuNy4KKworLSBJc3N1ZSAjMTQxODA6IGRhdGV0aW1lLmRhdGUuZnJvbXRpbWVzdGFtcCgpLAorICBkYXRldGltZS5kYXRldGltZS5mcm9tdGltZXN0YW1wKCkgYW5kIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoKQorICBub3cgcmFpc2UgYW4gT1NFcnJvciBpbnN0ZWFkIG9mIFZhbHVlRXJyb3IgaWYgbG9jYWx0aW1lKCkgb3IgZ210aW1lKCkgZmFpbGVkLgorCistIElzc3VlICMxNDE4MDogdGltZS5jdGltZSgpLCBnbXRpbWUoKSwgdGltZS5sb2NhbHRpbWUoKSwKKyAgZGF0ZXRpbWUuZGF0ZS5mcm9tdGltZXN0YW1wKCksIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoKSBhbmQKKyAgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgpIG5vdyByYWlzZXMgYW4gT3ZlcmZsb3dFcnJvciwgaW5zdGVhZCBvZgorICBhIFZhbHVlRXJyb3IsIGlmIHRoZSB0aW1lc3RhbXAgZG9lcyBub3QgZml0IGluIHRpbWVfdC4KKworLSBJc3N1ZSAjMTQxODA6IGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoKSBhbmQKKyAgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgpIG5vdyByb3VuZCBtaWNyb3NlY29uZHMgdG93YXJkcyB6ZXJvCisgIGluc3RlYWQgb2Ygcm91bmRpbmcgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgYXdheSBmcm9tIHplcm8uCisKKy0gSXNzdWUgIzEwNTQzOiBGaXggdW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgd2l0aCBKeXRob24gYnl0ZWNvZGUgZmlsZXMuCisKKy0gSXNzdWUgIzExNzg4NjM6IFNlcGFyYXRlIGluaXRpYWxpc2F0aW9uIGZyb20gc2V0dGluZyB3aGVuIGluaXRpYWxpemluZworICBUa2ludGVyLlZhcmlhYmxlczsgaGFybW9uaXplIGV4Y2VwdGlvbnMgdG8gVmFsdWVFcnJvcjsgb25seSBkZWxldGUgdmFyaWFibGVzCisgIHRoYXQgaGF2ZSBub3QgYmVlbiBkZWxldGVkOyBhc3NlcnQgdGhhdCB2YXJpYWJsZSBuYW1lcyBhcmUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTQxMDQ6IEltcGxlbWVudCB0aW1lLm1vbm90b25pYygpIG9uIE1hYyBPUyBYLCBwYXRjaCB3cml0dGVuIGJ5CisgIE5pY2hvbGFzIFJpbGV5LgorCistIElzc3VlICMxMzM5NDogdGhlIGFpZmMgbW9kdWxlIG5vdyB1c2VzIHdhcm5pbmdzLndhcm4oKSB0byBzaWduYWwgd2FybmluZ3MuCisKKy0gSXNzdWUgIzE0MjUyOiBGaXggc3VicHJvY2Vzcy5Qb3Blbi50ZXJtaW5hdGUoKSB0byBub3QgcmFpc2UgYW4gZXJyb3IgdW5kZXIKKyAgV2luZG93cyB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZC4KKworLSBJc3N1ZSAjMTQyMjM6IGN1cnNlcy5hZGRjaCgpIGlzIG5vIG1vcmUgbGltaXRlZCB0byB0aGUgcmFuZ2UgMC0yNTUgd2hlbiB0aGUKKyAgUHl0aG9uIGN1cnNlcyBpcyBub3QgbGlua2VkIHRvIGxpYm5jdXJzZXN3LiBJdCB3YXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQKKyAgaW4gUHl0aG9uIDMuM2ExLgorCistIElzc3VlICMxNDE2ODogQ2hlY2sgZm9yIHByZXNlbmNlIG9mIEVsZW1lbnQuX2F0dHJzIGluIG1pbmlkb20gYmVmb3JlCisgIGFjY2Vzc2luZyBpdC4KKworLSBJc3N1ZSAjMTIzMjg6IEZpeCBtdWx0aXByb2Nlc3NpbmcncyB1c2Ugb2Ygb3ZlcmxhcHBlZCBJL08gb24gV2luZG93cy4KKyAgQWxzbywgYWRkIGEgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdChybGlzdCwgdGltZW91dD1Ob25lKSBmdW5jdGlvbgorICBmb3IgcG9sbGluZyBtdWx0aXBsZSBvYmplY3RzIGF0IG9uY2UuICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzE0MDA3OiBBY2NlcHQgaW5jb21wbGV0ZSBUcmVlQnVpbGRlciBvYmplY3RzIChtaXNzaW5nIHN0YXJ0LCBlbmQsCisgIGRhdGEgb3IgY2xvc2UgbWV0aG9kKSBmb3IgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBhcyB3ZWxsLgorICBEcm9wIHRoZSBuby1vcCBUcmVlQnVpbGRlcigpLnhtbCgpIG1ldGhvZCBmcm9tIHRoZSBDIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMxNDIxMDogcGRiIG5vdyBoYXMgdGFiLWNvbXBsZXRpb24gbm90IG9ubHkgZm9yIGNvbW1hbmQgbmFtZXMsIGJ1dAorICBhbHNvIGZvciB0aGVpciBhcmd1bWVudHMsIHdoZXJldmVyIHBvc3NpYmxlLgorCistIElzc3VlICMxNDMxMDogU29ja2V0cyBjYW4gbm93IGJlIHdpdGggb3RoZXIgcHJvY2Vzc2VzIG9uIFdpbmRvd3MgdXNpbmcKKyAgdGhlIGFwaSBzb2NrZXQuc29ja2V0LnNoYXJlKCkgYW5kIHNvY2tldC5mcm9tc2hhcmUoKS4KKworLSBJc3N1ZSAjMTA1NzY6IFRoZSBnYyBtb2R1bGUgbm93IGhhcyBhICdjYWxsYmFja3MnIG1lbWJlciB0aGF0IHdpbGwgZ2V0CisgIGNhbGxlZCB3aGVuIGdhcmJhZ2UgY29sbGVjdGlvbiB0YWtlcyBwbGFjZS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzE0NTU3OiBGaXggZXh0ZW5zaW9ucyBidWlsZCBvbiBIUC1VWC4gUGF0Y2ggYnkgQWRpIFJvaWJhbi4KKworLSBJc3N1ZSAjMTQzODc6IERvIG5vdCBpbmNsdWRlIGFjY3UuaCBmcm9tIFB5dGhvbi5oLgorCistIElzc3VlICMxNDM1OTogT25seSB1c2UgT19DTE9FWEVDIGluIF9wb3NpeG1vZHVsZS5jIGlmIGl0IGlzIGRlZmluZWQuCisgIEJhc2VkIG9uIHBhdGNoIGZyb20gSGVydsOpIENvYXRhbmhheS4KKworLSBJc3N1ZSAjMTQzMjE6IERvIG5vdCBydW4gcGdlbiBkdXJpbmcgdGhlIGJ1aWxkIGlmIGZpbGVzIGFyZSB1cCB0byBkYXRlLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0MDM0OiBhZGRlZCB0aGUgYXJncGFyc2UgdHV0b3JpYWwuCisKKy0gSXNzdWUgIzE0MzI0OiBGaXggY29uZmlndXJlIHRlc3RzIGZvciBjcm9zcyBidWlsZHMuCisKKy0gSXNzdWUgIzE0MzI3OiBDYWxsIEFDX0NBTk9OSUNBTF9IT1NUIGluIGNvbmZpZ3VyZS5hYyBhbmQgY2hlY2sgaW4KKyAgY29uZmlnLntndWVzcyxzdWJ9LiBEb24ndCB1c2UgdW5hbWUgY2FsbHMgZm9yIGNyb3NzIGJ1aWxkcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzkwNDE6IEFuIGlzc3VlIGluIGN0eXBlcy5jX2xvbmdkb3VibGUsIGN0eXBlcy5jX2RvdWJsZSwgYW5kCisgIGN0eXBlcy5jX2Zsb2F0IHRoYXQgY2F1c2VkIGFuIGluY29ycmVjdCBleGNlcHRpb24gdG8gYmUgcmV0dXJuZWQgaW4gdGhlCisgIGNhc2Ugb2Ygb3ZlcmZsb3cgaGFzIGJlZW4gZml4ZWQuCisKKy0gSXNzdWUgIzE0MjEyOiBUaGUgcmUgbW9kdWxlIGRpZG4ndCByZXRhaW4gYSByZWZlcmVuY2UgdG8gYnVmZmVycyBpdCB3YXMKKyAgc2Nhbm5pbmcsIHJlc3VsdGluZyBpbiBzZWdmYXVsdHMuCisKKy0gSXNzdWUgIzE0MjU5OiBUaGUgZmluZGl0ZXIoKSBtZXRob2Qgb2YgcmUgb2JqZWN0cyBkaWQgbm90IHRha2UgYW55CisgIGtleXdvcmQgYXJndW1lbnRzLCBjb250cmFyeSB0byB0aGUgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTAxNDI6IFN1cHBvcnQgZm9yIFNFRUtfSE9MRS9TRUVLX0RBVEEgKGZvciBleGFtcGxlLCB1bmRlciBaRlMpLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTQ0NDI6IEFkZCBtaXNzaW5nIGVycm5vIGltcG9ydCBpbiB0ZXN0X3NtdHBsaWIuCisKKy0gSXNzdWUgIzgzMTU6IChwYXJ0aWFsIGZpeCkgcHl0aG9uIC1tIHVuaXR0ZXN0IHRlc3QudGVzdF9lbWFpbCBub3cgd29ya3MuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDA1LU1hci0yMDEyKgogCiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTM3MDM6IG9DRVJULTIwMTEtMDAzOiBhZGQgLVIgY29tbWFuZC1saW5lIG9wdGlvbiBhbmQgUFlUSE9OSEFTSFNFRUQKLSAgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRvIHByb3ZpZGUgYW4gb3B0LWluIHdheSB0byBwcm90ZWN0IGFnYWluc3QgZGVuaWFsIG9mCi0gIHNlcnZpY2UgYXR0YWNrcyBkdWUgdG8gaGFzaCBjb2xsaXNpb25zIHdpdGhpbiB0aGUgZGljdCBhbmQgc2V0IHR5cGVzLiAgUGF0Y2gKLSAgYnkgRGF2aWQgTWFsY29sbSwgYmFzZWQgb24gd29yayBieSBWaWN0b3IgU3Rpbm5lci4KKy0gSXNzdWUgIzE0MTcyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBtYXJzaGFsbGluZyBhIGJ1ZmZlci1saWtlIG9iamVjdAorICAob3RoZXIgdGhhbiBhIGJ5dGVzIG9iamVjdCkuCisKKy0gSXNzdWUgIzEzNTIxOiBkaWN0LnNldGRlZmF1bHQoKSBub3cgZG9lcyBvbmx5IG9uZSBsb29rdXAgZm9yIHRoZSBnaXZlbiBrZXksCisgIG1ha2luZyBpdCAiYXRvbWljIiBmb3IgbWFueSBwdXJwb3Nlcy4gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCisKKy0gUEVQIDQwOSwgSXNzdWUgIzYyMTA6ICJyYWlzZSBYIGZyb20gTm9uZSIgaXMgbm93IHN1cHBvcnRlZCBhcyBhIG1lYW5zIG9mCisgIHN1cHByZXNzaW5nIHRoZSBkaXNwbGF5IG9mIHRoZSBjaGFpbmVkIGV4Y2VwdGlvbiBjb250ZXh0LiBUaGUgY2hhaW5lZAorICBjb250ZXh0IHN0aWxsIHJlbWFpbnMgYXZhaWxhYmxlIGFzIHRoZSBfX2NvbnRleHRfXyBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzEwMTgxOiBOZXcgbWVtb3J5dmlldyBpbXBsZW1lbnRhdGlvbiBmaXhlcyBtdWx0aXBsZSBvd25lcnNoaXAKKyAgYW5kIGxpZmV0aW1lIGlzc3VlcyBvZiBkeW5hbWljYWxseSBhbGxvY2F0ZWQgUHlfYnVmZmVyIG1lbWJlcnMgKCM5OTkwKQorICBhcyB3ZWxsIGFzIGNyYXNoZXMgKCM4MzA1LCAjNzQzMykuIE1hbnkgbmV3IGZlYXR1cmVzIGhhdmUgYmVlbiBhZGRlZAorICAoU2VlIHdoYXRzbmV3LzMuMyksIGFuZCB0aGUgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkIGV4dGVuc2l2ZWx5LgorICBUaGUgbmRhcnJheSB0ZXN0IG9iamVjdCBmcm9tIF90ZXN0YnVmZmVyLmMgaW1wbGVtZW50cyBhbGwgYXNwZWN0cyBvZgorICBQRVAtMzExOCwgc28gZnVydGhlciBkZXZlbG9wbWVudCB0b3dhcmRzIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbgorICBvZiB0aGUgUEVQIGNhbiBwcm9jZWVkIGluIGEgdGVzdC1kcml2ZW4gbWFubmVyLgorCisgIFRoYW5rcyB0byBOaWNrIENvZ2hsYW4sIEFudG9pbmUgUGl0cm91IGFuZCBQYXVsaSBWaXJ0YW5lbiBmb3IgcmV2aWV3CisgIGFuZCBtYW55IGlkZWFzLgorCistIElzc3VlICMxMjgzNDogRml4IGluY29ycmVjdCByZXN1bHRzIG9mIG1lbW9yeXZpZXcudG9ieXRlcygpIGZvcgorICBub24tY29udGlndW91cyBhcnJheXMuCisKKy0gSXNzdWUgIzUyMzE6IEludHJvZHVjZSBtZW1vcnl2aWV3LmNhc3QoKSBtZXRob2QgdGhhdCBhbGxvd3MgY2hhbmdpbmcKKyAgZm9ybWF0IGFuZCBzaGFwZSB3aXRob3V0IG1ha2luZyBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgbWVtb3J5LgogCiAtIElzc3VlICMxNDA4NDogRml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgd2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUgd2l0aCBhCiAgIGJhZCBlbmNvZGluZy4KIAorLSBVcGdyYWRlIFVuaWNvZGUgZGF0YSB0byBVbmljb2RlIDYuMS4KKworLSBJc3N1ZSAjMTQwNDA6IFJlbW92ZSByYXJlbHkgdXNlZCBmaWxlIG5hbWUgc3VmZml4ZXMgZm9yIEMgZXh0ZW5zaW9ucworICAodW5kZXIgUE9TSVggbWFpbmx5KS4KKworLSBJc3N1ZSAjMTQwNTE6IEFsbG93IGFyYml0cmFyeSBhdHRyaWJ1dGVzIHRvIGJlIHNldCBvZiBjbGFzc21ldGhvZCBhbmQKKyAgc3RhdGljbWV0aG9kLgorCistIElzc3VlICMxMzcwMzogb0NFUlQtMjAxMS0wMDM6IFJhbmRvbWl6ZSBoYXNoZXMgb2Ygc3RyIGFuZCBieXRlcyB0byBwcm90ZWN0CisgIGFnYWluc3QgZGVuaWFsIG9mIHNlcnZpY2UgYXR0YWNrcyBkdWUgdG8gaGFzaCBjb2xsaXNpb25zIHdpdGhpbiB0aGUgZGljdCBhbmQKKyAgc2V0IHR5cGVzLiAgUGF0Y2ggYnkgRGF2aWQgTWFsY29sbSwgYmFzZWQgb24gd29yayBieSBWaWN0b3IgU3Rpbm5lci4KKwogLSBJc3N1ZSAjMTMwMjA6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIHdoZW4gYWxsb2NhdGluZyBhIHN0cnVjdHNlcXVlbmNlIG9iamVjdAogICBmYWlscy4gIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCiAKQEAgLTYxMyw2ICsxNjg3LDkgQEAKIC0gSXNzdWUgIzExMjM1OiBGaXggT3ZlcmZsb3dFcnJvciB3aGVuIHRyeWluZyB0byBpbXBvcnQgYSBzb3VyY2UgZmlsZSB3aG9zZQogICBtb2RpZmljYXRpb24gdGltZSBkb2Vzbid0IGZpdCBpbiBhIDMyLWJpdCB0aW1lc3RhbXAuCiAKKy0gSXNzdWUgIzEyNzA1OiBBIFN5bnRheEVycm9yIGV4Y2VwdGlvbiBpcyBub3cgcmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0bworICBjb21waWxlIG11bHRpcGxlIHN0YXRlbWVudHMgYXMgYSBzaW5nbGUgaW50ZXJhY3RpdmUgc3RhdGVtZW50LgorCiAtIEZpeCB0aGUgYnVpbHRpbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gY29kZSB0byBzdG9yZSB0aGUgaW5pdCBmdW5jdGlvbiBmb3IKICAgZnV0dXJlIHJlaW5pdGlhbGl6YXRpb24uCiAKQEAgLTYyNCw2ICsxNzAxLDM3IEBACiAtIElzc3VlICMxMzYyOTogUmVudW1iZXIgdGhlIHRva2VucyBpbiB0b2tlbi5oIHNvIHRoYXQgdGhleSBtYXRjaCB0aGUgaW5kZXhlcwogICBpbnRvIF9QeVBhcnNlcl9Ub2tlbk5hbWVzLgogCistIElzc3VlICMxMzc1MjogQWRkIGEgY2FzZWZvbGQoKSBtZXRob2QgdG8gc3RyLgorCistIElzc3VlICMxMzc2MTogQWRkIGEgImZsdXNoIiBrZXl3b3JkIGFyZ3VtZW50IHRvIHRoZSBwcmludCgpIGZ1bmN0aW9uLAorICB1c2VkIHRvIGVuc3VyZSBmbHVzaGluZyB0aGUgb3V0cHV0IHN0cmVhbS4KKworLSBJc3N1ZSAjMTM2NDU6IHB5YyBmaWxlcyBub3cgY29udGFpbiB0aGUgc2l6ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UKKyAgY29kZSwgdG8gYXZvaWQgdGltZXN0YW1wIGNvbGxpc2lvbnMgKGVzcGVjaWFsbHkgb24gZmlsZXN5c3RlbXMgd2l0aCBhIGxvdworICB0aW1lc3RhbXAgcmVzb2x1dGlvbikgd2hlbiBjaGVja2luZyBmb3IgZnJlc2huZXNzIG9mIHRoZSBieXRlY29kZS4KKworLSBQRVAgMzgwLCBJc3N1ZSAjMTE2ODI6IEFkZCAieWllbGQgZnJvbSA8eD4iIHRvIHN1cHBvcnQgZWFzeSBkZWxlZ2F0aW9uIHRvCisgIHN1YmdlbmVyYXRvcnMgKGluaXRpYWwgcGF0Y2ggYnkgR3JlZyBFd2luZywgaW50ZWdyYXRpb24gaW50byAzLjMgYnkKKyAgUmVuYXVkIEJsYW5jaCwgUnlhbiBLZWxseSwgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1layBhbmQgTmljayBDb2dobGFuKQorCistIElzc3VlICMxMzc0ODogUmF3IGJ5dGVzIGxpdGVyYWxzIGNhbiBub3cgYmUgd3JpdHRlbiB3aXRoIHRoZSBgYHJiYGAgcHJlZml4CisgIGFzIHdlbGwgYXMgYGBicmBgLgorCistIElzc3VlICMxMjczNjogVXNlIGZ1bGwgdW5pY29kZSBjYXNlIG1hcHBpbmdzIGZvciB1cHBlciwgbG93ZXIsIGFuZCB0aXRsZSBjYXNlLgorCistIElzc3VlICMxMjc2MDogQWRkIGEgY3JlYXRlIG1vZGUgdG8gb3BlbigpLiBQYXRjaCBieSBEYXZpZCBUb3duc2hlbmQuCisKKy0gSXNzdWUgIzEzNzM4OiBTaW1wbGlmeSBpbXBsZW1lbnRhdGlvbiBvZiBieXRlcy5sb3dlcigpIGFuZCBieXRlcy51cHBlcigpLgorCistIElzc3VlICMxMzU3NzogQnVpbHQtaW4gbWV0aG9kcyBhbmQgZnVuY3Rpb25zIG5vdyBoYXZlIGEgX19xdWFsbmFtZV9fLgorICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzY2OTU6IEZ1bGwgZ2FyYmFnZSBjb2xsZWN0aW9uIHJ1bnMgbm93IGNsZWFyIHRoZSBmcmVlbGlzdCBvZiBzZXQKKyAgb2JqZWN0cy4gIEluaXRpYWwgcGF0Y2ggYnkgTWF0dGhpYXMgVHJvZmZhZXMuCisKKy0gRml4IE9TRXJyb3IuX19pbml0X18gYW5kIE9TRXJyb3IuX19uZXdfXyBzbyB0aGF0IGVhY2ggb2YgdGhlbSBjYW4gYmUKKyAgb3ZlcnJpZGVuIGFuZCB0YWtlIGFkZGl0aW9uYWwgYXJndW1lbnRzIChmb2xsb3d1cCB0byBpc3N1ZSAjMTI1NTUpLgorCiAtIEZpeCB0aGUgZml4IGZvciBpc3N1ZSAjMTIxNDk6IGl0IHdhcyBpbmNvcnJlY3QsIGFsdGhvdWdoIGl0IGhhZCB0aGUgc2lkZQogICBlZmZlY3Qgb2YgYXBwZWFyaW5nIHRvIHJlc29sdmUgdGhlIGlzc3VlLiAgVGhhbmtzIHRvIE1hcmsgU2hhbm5vbiBmb3IKICAgbm90aWNpbmcuCkBAIC02MzQsMjYgKzE3NDIsNjggQEAKIC0gSXNzdWUgIzExMTQ3OiBGaXggYW4gdW51c2VkIGFyZ3VtZW50IGluIF9QeV9BTk5PVEFURV9NRU1PUllfT1JERVIuICAoRml4CiAgIGdpdmVuIGJ5IENhbXBiZWxsIEJhcnRvbikuCiAKKy0gSXNzdWUgIzEzNTAzOiBVc2UgYSBtb3JlIGVmZmljaWVudCByZWR1Y3Rpb24gZm9ybWF0IGZvciBieXRlYXJyYXlzIHdpdGgKKyAgcGlja2xlIHByb3RvY29sID49IDMuICBUaGUgb2xkIHJlZHVjdGlvbiBmb3JtYXQgaXMga2VwdCB3aXRoIG9sZGVyIHByb3RvY29scworICBpbiBvcmRlciB0byBhbGxvdyB1bnBpY2tsaW5nIHVuZGVyIFB5dGhvbiAyLiAgUGF0Y2ggYnkgSXJtZW4gZGUgSm9uZy4KKwogLSBJc3N1ZSAjNzExMTogUHl0aG9uIGNhbiBub3cgYmUgcnVuIHdpdGhvdXQgYSBzdGRpbiwgc3Rkb3V0IG9yIHN0ZGVycgogICBzdHJlYW0uICBJdCB3YXMgYWxyZWFkeSB0aGUgY2FzZSB3aXRoIFB5dGhvbiAyLiAgSG93ZXZlciwgdGhlIGNvcnJlc3BvbmRpbmcKICAgc3lzIG1vZHVsZSBlbnRyaWVzIGFyZSBub3cgc2V0IHRvIE5vbmUgKGluc3RlYWQgb2YgYW4gdW51c2FibGUgZmlsZSBvYmplY3QpLgogCistIElzc3VlICMxMTg0OTogRW5zdXJlIHRoYXQgZnJlZSgpZCBtZW1vcnkgYXJlbmFzIGFyZSByZWFsbHkgcmVsZWFzZWQKKyAgb24gUE9TSVggc3lzdGVtcyBzdXBwb3J0aW5nIGFub255bW91cyBtZW1vcnkgbWFwcGluZ3MuICBQYXRjaCBieQorICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzEzNDUyOiBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbCgpIGRvZXNuJ3Qgc3VwcG9ydCBlcnJvciBoYW5kbGVycworICBkaWZmZXJlbnQgdGhhbiAic3RyaWN0IiBhbnltb3JlLiBUaGUgY2FsbGVyIHdhcyB1bmFibGUgdG8gY29tcHV0ZSB0aGUKKyAgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlcjogaXQgZGVwZW5kcyBvbiB0aGUgZXJyb3IgaGFuZGxlci4KKworLSBQRVAgMzE1NSAvIGlzc3VlICMxMzQ0ODogUXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4KKwogLSBJc3N1ZSAjMTM0MzY6IEZpeCBhIGJvZ3VzIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBBU1Qgb2JqZWN0IHdhcyBwYXNzZWQKICAgYW4gaW52YWxpZCBpbnRlZ2VyIHZhbHVlLgogCistIElzc3VlICMxMzQxMTogbWVtb3J5dmlldyBvYmplY3RzIGFyZSBub3cgaGFzaGFibGUgd2hlbiB0aGUgdW5kZXJseWluZworICBvYmplY3QgaXMgaGFzaGFibGUuCisKIC0gSXNzdWUgIzEzMzM4OiBIYW5kbGUgYWxsIGVudW1lcmF0aW9ucyBpbiBfUHlfQU5OT1RBVEVfTUVNT1JZX09SREVSCiAgIHRvIGFsbG93IGNvbXBpbGluZyBleHRlbnNpb24gbW9kdWxlcyB3aXRoIC1Xc3dpdGNoLWVudW0gb24gZ2NjLgogICBJbml0aWFsIHBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgogCistIElzc3VlICMxMDIyNzogQWRkIGFuIGFsbG9jYXRpb24gY2FjaGUgZm9yIGEgc2luZ2xlIHNsaWNlIG9iamVjdC4gIFBhdGNoIGJ5CisgIFN0ZWZhbiBCZWhuZWwuCisKKy0gSXNzdWUgIzEzMzkzOiBCdWZmZXJlZFJlYWRlci5yZWFkMSgpIG5vdyBhc2tzIHRoZSBmdWxsIHJlcXVlc3RlZCBzaXplIHRvCisgIHRoZSByYXcgc3RyZWFtIGluc3RlYWQgb2YgbGltaXRpbmcgaXRzZWxmIHRvIHRoZSBidWZmZXIgc2l6ZS4KKworLSBJc3N1ZSAjMTMzOTI6IFdyaXRpbmcgYSBweWMgZmlsZSBzaG91bGQgbm93IGJlIGF0b21pYyB1bmRlciBXaW5kb3dzIGFzIHdlbGwuCisKIC0gSXNzdWUgIzEzMzMzOiBUaGUgVVRGLTcgZGVjb2RlciBub3cgYWNjZXB0cyBsb25lIHN1cnJvZ2F0ZXMgKHRoZSBlbmNvZGVyCiAgIGFscmVhZHkgYWNjZXB0cyB0aGVtKS4KIAorLSBJc3N1ZSAjMTMzODk6IEZ1bGwgZ2FyYmFnZSBjb2xsZWN0aW9uIHBhc3NlcyBub3cgY2xlYXIgdGhlIGZyZWVsaXN0cyBmb3IKKyAgbGlzdCBhbmQgZGljdCBvYmplY3RzLiAgVGhleSBhbHJlYWR5IGNsZWFyZWQgb3RoZXIgZnJlZWxpc3RzIGluIHRoZQorICBpbnRlcnByZXRlci4KKworLSBJc3N1ZSAjMTMzMjc6IFJlbW92ZSB0aGUgbmVlZCBmb3IgYW4gZXhwbGljaXQgTm9uZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50CisgIHRvIG9zLnV0aW1lLCBvcy5sdXRpbWVzLCBvcy5mdXRpbWVzLCBvcy5mdXRpbWVucywgb3MuZnV0aW1lc2F0LCBpbgorICBvcmRlciB0byB1cGRhdGUgdG8gdGhlIGN1cnJlbnQgdGltZS4gQWxzbyBhZGRlZCBrZXl3b3JkIGFyZ3VtZW50CisgIGhhbmRsaW5nIHRvIG9zLnV0aW1lbnNhdCBpbiBvcmRlciB0byByZW1vdmUgdGhlIG5lZWQgZm9yIGV4cGxpY2l0IE5vbmUuCisKKy0gSXNzdWUgIzEzMzUwOiBTaW1wbGlmeSBzb21lIEMgY29kZSBieSByZXBsYWNpbmcgbW9zdCB1c2FnZXMgb2YKKyAgUHlVbmljb2RlX0Zvcm1hdCBieSBQeVVuaWNvZGVfRnJvbUZvcm1hdC4KKwogLSBJc3N1ZSAjMTMzNDI6IGlucHV0KCkgdXNlZCB0byBpZ25vcmUgc3lzLnN0ZGluJ3MgYW5kIHN5cy5zdGRvdXQncyB1bmljb2RlCiAgIGVycm9yIGhhbmRsZXIgaW4gaW50ZXJhY3RpdmUgbW9kZSAod2hlbiBjYWxsaW5nIGludG8gUHlPU19SZWFkbGluZSgpKS4KIAorLSBJc3N1ZSAjOTg5NjogQWRkIHN0YXJ0LCBzdG9wLCBhbmQgc3RlcCBhdHRyaWJ1dGVzIHRvIHJhbmdlIG9iamVjdHMuCisKIC0gSXNzdWUgIzEzMzQzOiBGaXggYSBTeXN0ZW1FcnJvciB3aGVuIGEgbGFtYmRhIGV4cHJlc3Npb24gdXNlcyBhIGdsb2JhbAotICB2YXJpYWJsZSBpbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIGtleXdvcmQtb25seSBhcmd1bWVudDoKLSAgKGxhbWJkYSAqLCBhcmc9R0xPQkFMX05BTUU6IE5vbmUpCisgIHZhcmlhYmxlIGluIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50OiBgYGxhbWJkYSAqLAorICBhcmc9R0xPQkFMX05BTUU6IE5vbmVgYAorCistIElzc3VlICMxMjc5NzogQWRkZWQgY3VzdG9tIG9wZW5lciBwYXJhbWV0ZXIgdG8gYnVpbHRpbiBvcGVuKCkgYW5kCisgIEZpbGVJTy5vcGVuKCkuCiAKIC0gSXNzdWUgIzEwNTE5OiBBdm9pZCB1bm5lY2Vzc2FyeSByZWN1cnNpdmUgZnVuY3Rpb24gY2FsbHMgaW4KICAgc2V0b2JqZWN0LmMuCkBAIC02NjMsMjEgKzE4MTMsNDMgQEAKIC0gSXNzdWUgIzEzMDE4OiBGaXggcmVmZXJlbmNlIGxlYWtzIGluIGVycm9yIHBhdGhzIGluIGRpY3RvYmplY3QuYy4KICAgUGF0Y2ggYnkgU3VtYW4gU2FoYS4KIAorLSBJc3N1ZSAjMTMyMDE6IERlZmluZSAnPT0nIGFuZCAnIT0nIHRvIGNvbXBhcmUgcmFuZ2Ugb2JqZWN0cyBiYXNlZCBvbgorICB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mIGNvbXBhcmluZyBiYXNlZCBvbgorICBvYmplY3QgaWRlbnRpdHkpLgorCiAtIElzc3VlICMxMjk0MjMyOiBJbiBhIGZldyBjYXNlcyBpbnZvbHZpbmcgbWV0YWNsYXNzIGluaGVyaXRhbmNlLCB0aGUKICAgaW50ZXJwcmV0ZXIgd291bGQgc29tZXRpbWVzIGludm9rZSB0aGUgd3JvbmcgbWV0YWNsYXNzIHdoZW4gYnVpbGRpbmcgYSBuZXcKICAgY2xhc3Mgb2JqZWN0LiBUaGVzZSBjYXNlcyBub3cgYmVoYXZlIGNvcnJlY3RseS4gUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgogCistIElzc3VlICMxMjc1MzogQWRkIHN1cHBvcnQgZm9yIFVuaWNvZGUgbmFtZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMuCisgIEJvdGggYGB1bmljb2RlZGF0YS5sb29rdXAoKWBgIGFuZCAnXE57Li4ufScgbm93IHJlc29sdmUgYWxpYXNlcywKKyAgYW5kIGBgdW5pY29kZWRhdGEubG9va3VwKClgYCByZXNvbHZlcyBuYW1lZCBzZXF1ZW5jZXMgdG9vLgorCistIElzc3VlICMxMjE3MDogVGhlIGNvdW50KCksIGZpbmQoKSwgcmZpbmQoKSwgaW5kZXgoKSBhbmQgcmluZGV4KCkgbWV0aG9kcworICBvZiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgbm93IGFjY2VwdCBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMjU1CisgIGFzIHRoZWlyIGZpcnN0IGFyZ3VtZW50LiAgUGF0Y2ggYnkgUGV0cmkgTGVodGluZW4uCisKIC0gSXNzdWUgIzEyNjA0OiBWVFJBQ0UgbWFjcm8gZXhwYW5kZWQgdG8gbm8tb3AgaW4gX3NyZS5jIHRvIGF2b2lkIGNvbXBpbGVyCiAgIHdhcm5pbmdzLiBQYXRjaCBieSBKb3NoIFRyaXBsZXR0IGFuZCBQZXRyaSBMZWh0aW5lbi4KIAorLSBJc3N1ZSAjMTIyODE6IFJld3JpdGUgdGhlIE1CQ1MgY29kZWMgdG8gaGFuZGxlIGNvcnJlY3RseSByZXBsYWNlIGFuZCBpZ25vcmUKKyAgZXJyb3IgaGFuZGxlcnMgb24gYWxsIFdpbmRvd3MgdmVyc2lvbnMuIFRoZSBNQkNTIGNvZGVjIGlzIG5vdyBzdXBwb3J0aW5nIGFsbAorICBlcnJvciBoYW5kbGVycywgaW5zdGVhZCBvZiBvbmx5IHJlcGxhY2UgdG8gZW5jb2RlIGFuZCBpZ25vcmUgdG8gZGVjb2RlLgorCiAtIElzc3VlICMxMzE4ODogV2hlbiBjYWxsZWQgd2l0aG91dCBhbiBleHBsaWNpdCB0cmFjZWJhY2sgYXJndW1lbnQsCiAgIGdlbmVyYXRvci50aHJvdygpIG5vdyBnZXRzIHRoZSB0cmFjZWJhY2sgZnJvbSB0aGUgcGFzc2VkIGV4Y2VwdGlvbidzCiAgIGBgX190cmFjZWJhY2tfX2BgIGF0dHJpYnV0ZS4gIFBhdGNoIGJ5IFBldHJpIExlaHRpbmVuLgogCistIElzc3VlICMxMzE0NjogV3JpdGluZyBhIHB5YyBmaWxlIGlzIG5vdyBhdG9taWMgdW5kZXIgUE9TSVguCisKIC0gSXNzdWUgIzc4MzM6IEV4dGVuc2lvbiBtb2R1bGVzIGJ1aWx0IHVzaW5nIGRpc3R1dGlscyBvbiBXaW5kb3dzIHdpbGwgbm8KICAgbG9uZ2VyIGluY2x1ZGUgYSAibWFuaWZlc3QiIHRvIHByZXZlbnQgdGhlbSBmYWlsaW5nIGF0IGltcG9ydCB0aW1lIGluIHNvbWUKICAgZW1iZWRkZWQgc2l0dWF0aW9ucy4KIAorLSBQRVAgMzE1MSAvIGlzc3VlICMxMjU1NTogcmV3b3JraW5nIHRoZSBPUyBhbmQgSU8gZXhjZXB0aW9uIGhpZXJhcmNoeS4KKworLSBBZGQgaW50ZXJuYWwgQVBJIGZvciBzdGF0aWMgc3RyaW5ncyAoX1B5X2lkZW50aWZpZXIgZXQgYWwuKS4KKwogLSBJc3N1ZSAjMTMwNjM6IHRoZSBXaW5kb3dzIGVycm9yIEVSUk9SX05PX0RBVEEgKG51bWJlcmVkIDIzMiBhbmQgZGVzY3JpYmVkCiAgIGFzICJUaGUgcGlwZSBpcyBiZWluZyBjbG9zZWQiKSBpcyBub3cgbWFwcGVkIHRvIFBPU0lYIGVycm5vIEVQSVBFCiAgIChwcmV2aW91c2x5IEVJTlZBTCkuCkBAIC02ODUsNiArMTg1NywxNiBAQAogLSBJc3N1ZSAjMTI5MTE6IEZpeCBtZW1vcnkgY29uc3VtcHRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgcmVwcigpIG9mIGh1Z2UKICAgdHVwbGVzIG9yIGxpc3RzLgogCistIFBFUCAzOTM6IGZsZXhpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbi4gVGhhbmtzIHRvIFRvcnN0ZW4gQmVja2VyIGZvciB0aGUKKyAgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgYW5kIFZpY3RvciBTdGlubmVyIGZvciB2YXJpb3VzIGJ1ZyBmaXhlcy4KKworLSBJc3N1ZSAjMTQwODE6IFRoZSAnc2VwJyBhbmQgJ21heHNwbGl0JyBwYXJhbWV0ZXIgdG8gc3RyLnNwbGl0LCBieXRlcy5zcGxpdCwKKyAgYW5kIGJ5dGVhcnJheS5zcGxpdCBtYXkgbm93IGJlIHBhc3NlZCBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTMwMTI6IFRoZSAna2VlcGVuZHMnIHBhcmFtZXRlciB0byBzdHIuc3BsaXRsaW5lcyBtYXkgbm93IGJlIHBhc3NlZAorICBhcyBhIGtleXdvcmQgYXJndW1lbnQ6ICAibXlfc3RyaW5nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkiLiAgVGhlIHNhbWUKKyAgY2hhbmdlIGFsc28gYXBwbGllcyB0byBieXRlcy5zcGxpdGxpbmVzIGFuZCBieXRlYXJyYXkuc3BsaXRsaW5lcy4KKwogLSBJc3N1ZSAjNzczMjogRG9uJ3Qgb3BlbiBhIGRpcmVjdG9yeSBhcyBhIGZpbGUgYW55bW9yZSB3aGlsZSBpbXBvcnRpbmcgYQogICBtb2R1bGUuIElnbm9yZSB0aGUgZGlyZWNvdHJ5IGlmIGl0cyBuYW1lIG1hdGNocyB0aGUgbW9kdWxlIG5hbWUgKGUuZy4KICAgIl9faW5pdF9fLnB5IikgYW5kIHJhaXNlIGEgSW1wb3J0RXJyb3IgaW5zdGVhZC4KQEAgLTY5Niw2ICsxODc4LDkgQEAKICAgbGlzdF9yZXBlYXQgKGxpc3RvYmplY3QuYykgYW5kIGlzbGljZV9uZXh0IChpdGVydG9vbHNtb2R1bGUuYykuICBUaGVzZSBidWdzCiAgIGNhdXNlZCB0ZXN0IGZhaWx1cmVzIHdpdGggcmVjZW50IHZlcnNpb25zIG9mIENsYW5nLgogCistIElzc3VlICMxMjkwNDogb3MudXRpbWUsIG9zLmZ1dGltZXMsIG9zLmx1dGltZXMsIGFuZCBvcy5mdXRpbWVzYXQgbm93IHdyaXRlCisgIGF0aW1lIGFuZCBtdGltZSB3aXRoIG5hbm9zZWNvbmQgcHJlY2lzaW9uIG9uIG1vZGVybiBQT1NJWCBwbGF0Zm9ybXMuCisKIC0gSXNzdWUgIzEyODAyOiB0aGUgV2luZG93cyBlcnJvciBFUlJPUl9ESVJFQ1RPUlkgKG51bWJlcmVkIDI2NykgaXMgbm93CiAgIG1hcHBlZCB0byBQT1NJWCBlcnJubyBFTk9URElSIChwcmV2aW91c2x5IEVJTlZBTCkuCiAKQEAgLTcwNSwzNyArMTg5MCwzMjkgQEAKIC0gSXNzdWUgIzEyNzkxOiBCcmVhayByZWZlcmVuY2UgY3ljbGVzIGVhcmx5IHdoZW4gYSBnZW5lcmF0b3IgZXhpdHMgd2l0aAogICBhbiBleGNlcHRpb24uCiAKKy0gSXNzdWUgIzEyNzczOiBNYWtlIF9fZG9jX18gbXV0YWJsZSBvbiB1c2VyLWRlZmluZWQgY2xhc3Nlcy4KKworLSBJc3N1ZSAjMTI3NjY6IFJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGNyZWF0aW5nIGEgY2xhc3Mgd2l0aCBhIGNsYXNzIHZhcmlhYmxlCisgIHRoYXQgY29uZmxpY3RzIHdpdGggYSBuYW1lIGluIF9fc2xvdHNfXy4KKwogLSBJc3N1ZSAjMTIyNjY6IEZpeCBzdHIuY2FwaXRhbGl6ZSgpIHRvIGNvcnJlY3RseSB1cHBlcmNhc2UvbG93ZXJjYXNlCiAgIHRpdGxlY2FzZWQgYW5kIGNhc2VkIG5vbi1sZXR0ZXIgY2hhcmFjdGVycy4KIAorLSBJc3N1ZSAjMTI3MzI6IEluIG5hcnJvdyB1bmljb2RlIGJ1aWxkcywgYWxsb3cgVW5pY29kZSBpZGVudGlmaWVycyB3aGljaCBmYWxsCisgIG91dHNpZGUgdGhlIEJNUC4KKworLSBJc3N1ZSAjMTI1NzU6IFZhbGlkYXRlIHVzZXItZ2VuZXJhdGVkIEFTVCBiZWZvcmUgaXQgaXMgY29tcGlsZWQuCisKKy0gTWFrZSB0eXBlKE5vbmUpLCB0eXBlKEVsbGlwc2lzKSwgYW5kIHR5cGUoTm90SW1wbGVtZW50ZWQpIGNhbGxhYmxlLiBUaGV5CisgIHJldHVybiB0aGUgcmVzcGVjdGl2ZSBzaW5nbGV0b24gaW5zdGFuY2VzLgorCistIEZvcmJpZCBzdW1taW5nIGJ5dGVzIHdpdGggc3VtKCkuCisKKy0gVmVyaWZ5IHRoZSB0eXBlcyBvZiBBU1Qgc3RyaW5ncyBhbmQgaWRlbnRpZmllcnMgcHJvdmlkZWQgYnkgdGhlIHVzZXIgYmVmb3JlCisgIGNvbXBpbGluZyB0aGVtLgorCistIElzc3VlICMxMjY0NzogVGhlIE5vbmUgb2JqZWN0IG5vdyBoYXMgYSBfX2Jvb2xfXygpIG1ldGhvZCB0aGF0IHJldHVybnMgRmFsc2UuCisgIEZvcm1lcmx5LCBib29sKE5vbmUpIHJldHVybmVkIEZhbHNlIG9ubHkgYmVjYXVzZSBvZiBzcGVjaWFsIGNhc2UgbG9naWMKKyAgaW4gUHlPYmplY3RfSXNUcnVlKCkuCisKKy0gSXNzdWUgIzEyNTc5OiBzdHIuZm9ybWF0X21hcCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIHVzZWQgb24gYQorICBmb3JtYXQgc3RyaW5nIHRoYXQgY29udGFpbnMgcG9zaXRpb25hbCBmaWVsZHMuIEluaXRpYWwgcGF0Y2ggYnkKKyAgSnVsaWFuIEJlcm1hbi4KKworLSBJc3N1ZSAjMTAyNzE6IEFsbG93IHdhcm5pbmdzLnNob3d3YXJuaW5nKCkgYmUgYW55IGNhbGxhYmxlLgorCistIElzc3VlICMxMTYyNzogRml4IHNlZ2ZhdWx0IHdoZW4gX19uZXdfXyBvbiBhIGV4Y2VwdGlvbiByZXR1cm5zIGEKKyAgbm9uLWV4Y2VwdGlvbiBjbGFzcy4KKworLSBJc3N1ZSAjMTIxNDk6IFVwZGF0ZSB0aGUgbWV0aG9kIGNhY2hlIGFmdGVyIGEgdHlwZSdzIGRpY3Rpb25hcnkgZ2V0cworICBjbGVhcmVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gIFRoaXMgZml4ZXMgYSBzZWdmYXVsdCB3aGVuIGFuIGluc3RhbmNlCisgIGFuZCBpdHMgdHlwZSBnZXQgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlLCBhbmQgdGhlIGluc3RhbmNlJ3MKKyAgZGVhbGxvY2F0b3IgY2FsbHMgb25lIG9mIHRoZSBtZXRob2RzIG9uIHRoZSB0eXBlIChlLmcuIHdoZW4gc3ViY2xhc3NpbmcKKyAgSU9CYXNlKS4gIERpYWdub3NpcyBhbmQgcGF0Y2ggYnkgRGF2aWRlIFJpenpvLgorCistIElzc3VlICM5NjExLCAjOTAxNTogRmlsZUlPLnJlYWQoKSBjbGFtcHMgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzk2NDI6IFVuaWZvcm1pemUgdGhlIHRlc3RzIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIG1iY3MgY29kZWMsIGFkZAorICBhIG5ldyBIQVZFX01CQ1MgZGVmaW5lLgorCistIElzc3VlICM5NjQyOiBGaXggZmlsZXN5c3RlbSBlbmNvZGluZyBpbml0aWFsaXphdGlvbjogdXNlIHRoZSBBTlNJIGNvZGUgcGFnZQorICBvbiBXaW5kb3dzIGlmIHRoZSBtYmNzIGNvZGVjIGlzIG5vdCBhdmFpbGFibGUsIGFuZCBmYWlsIHdpdGggYSBmYXRhbCBlcnJvciBpZgorICB3ZSBjYW5ub3QgZ2V0IHRoZSBsb2NhbGUgZW5jb2RpbmcgKGlmIG5sX2xhbmdpbmZvKENPREVTRVQpIGlzIG5vdCBhdmFpbGFibGUpCisgIGluc3RlYWQgb2YgdXNpbmcgVVRGLTguCisKKy0gV2hlbiBhIGdlbmVyYXRvciB5aWVsZHMsIGRvIG5vdCByZXRhaW4gdGhlIGNhbGxlcidzIGV4Y2VwdGlvbiBzdGF0ZSBvbiB0aGUKKyAgZ2VuZXJhdG9yLgorCistIElzc3VlICMxMjQ3NTogUHJldmVudCBnZW5lcmF0b3JzIGZyb20gbGVha2luZyB0aGVpciBleGNlcHRpb24gc3RhdGUgaW50byB0aGUKKyAgY2FsbGVyJ3MgZnJhbWUgYXMgdGhleSByZXR1cm4gZm9yIHRoZSBsYXN0IHRpbWUuCisKKy0gSXNzdWUgIzEyMjkxOiBZb3UgY2FuIG5vdyBsb2FkIG11bHRpcGxlIG1hcnNoYWxsZWQgb2JqZWN0cyBmcm9tIGEgc3RyZWFtLAorICB3aXRoIG90aGVyIGRhdGEgaW50ZXJsZWF2ZWQgYmV0d2VlbiBtYXJzaGFsbGVkIG9iamVjdHMuCisKKy0gSXNzdWUgIzEyMzU2OiBXaGVuIHJlcXVpcmVkIHBvc2l0aW9uYWwgb3Iga2V5d29yZC1vbmx5IGFyZ3VtZW50cyBhcmUgbm90CisgIGdpdmVuLCBwcm9kdWNlIGEgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZSB3aGljaCBpbmNsdWRlcyB0aGUgbmFtZShzKSBvZiB0aGUKKyAgbWlzc2luZyBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzEyMzcwOiBGaXggc3VwZXIgd2l0aCBubyBhcmd1bWVudHMgd2hlbiBfX2NsYXNzX18gaXMgb3ZlcnJpZGVuIGluIHRoZQorICBjbGFzcyBib2R5LgorCistIElzc3VlICMxMjA4NDogb3Muc3RhdCBvbiBXaW5kb3dzIG5vdyB3b3JrcyBwcm9wZXJseSB3aXRoIHJlbGF0aXZlIHN5bWJvbGljCisgIGxpbmtzIHdoZW4gY2FsbGVkIGZyb20gYW55IGRpcmVjdG9yeS4KKworLSBMb29zZW4gdHlwZSByZXN0cmljdGlvbnMgb24gdGhlIF9fZGlyX18gbWV0aG9kLiBfX2Rpcl9fIGNhbiBub3cgcmV0dXJuIGFueQorICBzZXF1ZW5jZSwgd2hpY2ggd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBsaXN0IGFuZCBzb3J0ZWQgYnkgZGlyKCkuCisKKy0gSXNzdWUgIzEyMjY1OiBNYWtlIGVycm9yIG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IHBhc3NpbmcgYW4gaW52YWxpZCBzZXQgb2YKKyAgYXJndW1lbnRzIHRvIGEgZnVuY3Rpb24gbW9yZSBpbmZvcm1hdGl2ZS4KKworLSBJc3N1ZSAjMTIyMjU6IFN0aWxsIGFsbG93IFB5dGhvbiB0byBidWlsZCBpZiBQeXRob24gaXMgbm90IGluIGl0cyBoZyByZXBvIG9yCisgIG1lcmN1cmlhbCBpcyBub3QgaW5zdGFsbGVkLgorCistIElzc3VlICMxMTk1OiBteV9mZ2V0cygpIG5vdyBhbHdheXMgY2xlYXJzIGVycm9ycyBiZWZvcmUgY2FsbGluZyBmZ2V0cygpLiBGaXgKKyAgdGhlIGZvbGxvd2luZyBjYXNlOiBzeXMuc3RkaW4ucmVhZCgpIHN0b3BwZWQgd2l0aCBDVFJMK2QgKGVuZCBvZiBmaWxlKSwKKyAgcmF3X2lucHV0KCkgaW50ZXJydXB0ZWQgYnkgQ1RSTCtjLgorCistIElzc3VlICMxMjIxNjogQWxsb3cgdW5leHBlY3RlZCBFT0YgZXJyb3JzIHRvIGhhcHBlbiBvbiBhbnkgbGluZSBvZiB0aGUgZmlsZS4KKworLSBJc3N1ZSAjMTIxOTk6IFRoZSBUcnlFeGNlcHQgYW5kIFRyeUZpbmFsbHkgYW5kIEFTVCBub2RlcyBoYXZlIGJlZW4gdW5pZmllZAorICBpbnRvIGEgVHJ5IG5vZGUuCisKKy0gSXNzdWUgIzk2NzA6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uCisgIE1hYyBPUyBYIGFuZCBGcmVlQlNEIHRvIHJlZHVjZSB0aGUgY2hhbmNlcyBvZiBhIGNyYXNoIGluc3RlYWQgb2YgYQorICAibWF4aW11bSByZWN1cnNpb24gZGVwdGgiIFJ1bnRpbWVFcnJvciBleGNlcHRpb24uCisgIChwYXRjaCBieSBSb25hbGQgT3Vzc29yZW4pCisKKy0gSXNzdWUgIzEyMTA2OiBUaGUgdXNlIG9mIHRoZSBtdWx0aXBsZS13aXRoIHNob3J0aGFuZCBzeW50YXggaXMgbm93IHJlZmxlY3RlZAorICBpbiB0aGUgQVNULgorCistIElzc3VlICMxMjE5MDogVHJ5IHRvIHVzZSB0aGUgc2FtZSBmaWxlbmFtZSBvYmplY3Qgd2hlbiBjb21waWxpbmcgdW5tYXJzaGFsbGluZworICBhIGNvZGUgb2JqZWN0cyBpbiB0aGUgc2FtZSBmaWxlLgorCistIElzc3VlICMxMjE2NjogTW92ZSBpbXBsZW1lbnRhdGlvbnMgb2YgZGlyKCkgc3BlY2lhbGl6ZWQgZm9yIHZhcmlvdXMgdHlwZXMgaW50bworICB0aGUgX19kaXJfXygpIG1ldGhvZHMgb2YgdGhvc2UgdHlwZXMuCisKKy0gSXNzdWUgIzU3MTU6IEluIHNvY2tldHNlcnZlciwgY2xvc2UgdGhlIHNlcnZlciBzb2NrZXQgaW4gdGhlIGNoaWxkIHByb2Nlc3MuCisKKy0gQ29ycmVjdCBsb29rdXAgb2YgX19kaXJfXyBvbiBvYmplY3RzLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgY2F1c2VzIGVycm9ycworICBiZXNpZGVzIEF0dHJpYnV0ZUVycm9yIGZvdW5kIG9uIGxvb2t1cCB0byBiZSBwcm9wYWdhdGVkLgorCistIElzc3VlICMxMjA2MDogVXNlIHNpZ19hdG9taWNfdCB0eXBlIGFuZCB2b2xhdGlsZSBrZXl3b3JkIGluIHRoZSBzaWduYWwKKyAgbW9kdWxlLiBQYXRjaCB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTc0NjY1NjogQWRkZWQgdGhlIGlmX25hbWVpbmRleCwgaWZfaW5kZXh0b25hbWUsIGlmX25hbWV0b2luZGV4CisgIG1ldGhvZHMgdG8gdGhlIHNvY2tldCBtb2R1bGUuCisKKy0gSXNzdWUgIzEyMDQ0OiBGaXhlZCBzdWJwcm9jZXNzLlBvcGVuIHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciB0bworICB3YWl0IGZvciB0aGUgcHJvY2VzcyB0byBlbmQgd2hlbiBleGl0aW5nIHRoZSBjb250ZXh0IHRvIGF2b2lkIHVuaW50ZW50aW9uYWxseQorICBsZWF2aW5nIHpvbWJpZSBwcm9jZXNzZXMgYXJvdW5kLgorCistIElzc3VlICMxMTk1OiBGaXggaW5wdXQoKSBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBDVFJMK2QgYW5kIHRoZW4gQ1RSTCtjLAorICBjbGVhciB0aGUgZW5kLW9mLWZpbGUgaW5kaWNhdG9yIGFmdGVyIENUUkwrZC4KKworLSBJc3N1ZSAjMTg1NjogQXZvaWQgY3Jhc2hlcyBhbmQgbG9ja3VwcyB3aGVuIGRhZW1vbiB0aHJlYWRzIHJ1biB3aGlsZSB0aGUKKyAgaW50ZXJwcmV0ZXIgaXMgc2h1dHRpbmcgZG93bjsgaW5zdGVhZCwgdGhlc2UgdGhyZWFkcyBhcmUgbm93IGtpbGxlZCB3aGVuCisgIHRoZXkgdHJ5IHRvIHRha2UgdGhlIEdJTC4KKworLSBJc3N1ZSAjOTc1NjogV2hlbiBjYWxsaW5nIGEgbWV0aG9kIGRlc2NyaXB0b3Igb3IgYSBzbG90IHdyYXBwZXIgZGVzY3JpcHRvciwKKyAgdGhlIGNoZWNrIG9mIHRoZSBvYmplY3QgdHlwZSBkb2Vzbid0IHJlYWQgdGhlIF9fY2xhc3NfXyBhdHRyaWJ1dGUgYW55bW9yZS4KKyAgRml4IGEgY3Jhc2ggaWYgYSBjbGFzcyBvdmVycmlkZSBpdHMgX19jbGFzc19fIGF0dHJpYnV0ZSAoZS5nLiBhIHByb3h5IG9mIHRoZQorICBzdHIgdHlwZSkuIFBhdGNoIHdyaXR0ZW4gYnkgQW5kcmVhcyBTdMO8aHJrLgorCistIElzc3VlICMxMDUxNzogQWZ0ZXIgZm9yaygpLCByZWluaXRpYWxpemUgdGhlIFRMUyB1c2VkIGJ5IHRoZSBQeUdJTFN0YXRlXyoKKyAgQVBJcywgdG8gYXZvaWQgYSBjcmFzaCB3aXRoIHRoZSBwdGhyZWFkIGltcGxlbWVudGF0aW9uIGluIFJIRUwgNS4gIFBhdGNoCisgIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTA5MTQ6IEluaXRpYWxpemUgY29ycmVjdGx5IHRoZSBmaWxlc3lzdGVtIGNvZGVjIHdoZW4gY3JlYXRpbmcgYSBuZXcKKyAgc3ViaW50ZXJwcmV0ZXIgdG8gZml4IGEgYm9vdHN0cmFwIGlzc3VlIHdpdGggY29kZWNzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgYXMKKyAgdGhlIElTTy04ODU5LTE1IGNvZGVjLgorCistIElzc3VlICMxMTkxODogT1MvMiBhbmQgVk1TIGFyZSBubyBtb3JlIHN1cHBvcnRlZCBiZWNhdXNlIG9mIHRoZSBsYWNrIG9mCisgIG1haW50YWluZXIuCisKKy0gSXNzdWUgIzY3ODA6IGZpeCBzdGFydHMvZW5kc3dpdGggZXJyb3IgbWVzc2FnZSB0byBtZW50aW9uIHRoYXQgdHVwbGVzIGFyZQorICBhY2NlcHRlZCB0b28uCisKKy0gSXNzdWUgIzUwNTc6IGZpeCBhIGJ1ZyBpbiB0aGUgcGVlcGhvbGVyIHRoYXQgbGVkIHRvIG5vbi1wb3J0YWJsZSBweWMgZmlsZXMKKyAgYmV0d2VlbiBuYXJyb3cgYW5kIHdpZGUgYnVpbGRzIHdoaWxlIG9wdGltaXppbmcgQklOQVJZX1NVQlNDUiBvbiBub24tQk1QCisgIGNoYXJzIChlLmcuICJcVTAwMDEyMzQ1IlswXSkuCisKKy0gSXNzdWUgIzExODQ1OiBGaXggdHlwbyBpbiByYW5nZW9iamVjdC5jIHRoYXQgY2F1c2VkIGEgY3Jhc2ggaW4KKyAgY29tcHV0ZV9zbGljZV9pbmRpY2VzLiAgUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgorCistIElzc3VlICM1NjczOiBBZGRlZCBhIGB0aW1lb3V0YCBrZXl3b3JkIGFyZ3VtZW50IHRvIHN1YnByb2Nlc3MuUG9wZW4ud2FpdCwKKyAgc3VicHJvY2Vzcy5Qb3Blbi5jb21tdW5pY2F0ZWQsIHN1YnByb2Nlc3MuY2FsbCwgc3VicHJvY2Vzcy5jaGVja19jYWxsLCBhbmQKKyAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQuICBJZiB0aGUgYmxvY2tpbmcgb3BlcmF0aW9uIHRha2VzIG1vcmUgdGhhbiBgdGltZW91dGAKKyAgc2Vjb25kcywgdGhlIGBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCistIElzc3VlICMxMTY1MDogUHlPU19TdGRpb1JlYWRsaW5lKCkgcmV0cmllcyBmZ2V0cygpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZAorICAoRUlOVFIpLCBmb3IgZXhhbXBsZSBpZiB0aGUgcHJvZ3JhbSBpcyBzdG9wcGVkIHdpdGggQ1RSTCt6IG9uIE1hYyBPUyBYLiBQYXRjaAorICB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbmNvaXMgTmF0YWxpLgorCistIElzc3VlICM5MzE5OiBJbmNsdWRlIHRoZSBmaWxlbmFtZSBpbiAiTm9uLVVURjggY29kZSAuLi4iIHN5bnRheCBlcnJvci4KKworLSBJc3N1ZSAjMTA3ODU6IFN0b3JlIHRoZSBmaWxlbmFtZSBhcyBVbmljb2RlIGluIHRoZSBQeXRob24gcGFyc2VyLgorCistIElzc3VlICMxMTYxOTogX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKCkgZG9lc24ndCBlbmNvZGUgdGhlIHBhdGggdG8gYnl0ZXMKKyAgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMTA5OTg6IFJlbW92ZSBtZW50aW9ucyBvZiAtUSwgc3lzLmZsYWdzLmRpdmlzaW9uX3dhcm5pbmcgYW5kCisgIFB5X0RpdmlzaW9uV2FybmluZ0ZsYWcgbGVmdCBvdmVyIGZyb20gUHl0aG9uIDIuCisKKy0gSXNzdWUgIzExMjQ0OiBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgcGVlcGhvbGVyIGNoZWNrIHRoYXQgd2FzIHByZXZlbnRpbmcKKyAgbmVnYXRpdmUgemVyb3MgZnJvbSBiZWluZyBjb25zdGFudC1mb2xkZWQgcHJvcGVybHkuCisKKy0gSXNzdWUgIzExMzk1OiBpby5GaWxlSU8oKS53cml0ZSgpIGNsYW1wcyB0aGUgZGF0YSBsZW5ndGggdG8gMzIsNzY3IGJ5dGVzIG9uCisgIFdpbmRvd3MgaWYgdGhlIGZpbGUgaXMgYSBUVFkgdG8gd29ya2Fyb3VuZCBhIFdpbmRvd3MgYnVnLiBUaGUgV2luZG93cyBjb25zb2xlCisgIHJldHVybnMgYW4gZXJyb3IgKDEyOiBub3QgZW5vdWdoIHNwYWNlIGVycm9yKSBvbiB3cml0aW5nIGludG8gc3Rkb3V0IGlmCisgIHN0ZG91dCBtb2RlIGlzIGJpbmFyeSBhbmQgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gNjYsMDAwIGJ5dGVzIChvciBsZXNzLAorICBkZXBlbmRpbmcgb24gaGVhcCB1c2FnZSkuCisKKy0gSXNzdWUgIzExMzIwOiBmaXggYm9ndXMgbWVtb3J5IG1hbmFnZW1lbnQgaW4gTW9kdWxlcy9nZXRwYXRoLmMsIGxlYWRpbmcgdG8KKyAgYSBwb3NzaWJsZSBjcmFzaCB3aGVuIGNhbGxpbmcgUHlfU2V0UGF0aCgpLgorCistIElzc3VlICMxMTQzMjogQSBidWcgd2FzIGludHJvZHVjZWQgaW4gc3VicHJvY2Vzcy5Qb3BlbiBvbiBwb3NpeCBzeXN0ZW1zIHdpdGgKKyAgMy4yLjAgd2hlcmUgdGhlIHN0ZG91dCBvciBzdGRlcnIgZmlsZSBkZXNjcmlwdG9yIGJlaW5nIHRoZSBzYW1lIGFzIHRoZSBzdGRpbgorICBmaWxlIGRlc2NyaXB0b3Igd291bGQgcmFpc2UgYW4gZXhjZXB0aW9uLiB3ZWJicm93c2VyLm9wZW4gd291bGQgZmFpbC4gZml4ZWQuCisKKy0gSXNzdWUgIzk4NTY6IENoYW5nZSBvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcKKyAgdG8gYmUgYSBEZXByZWNhdGlvbldhcm5pbmcuIEluIDMuMiBpdCB3YXMgYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLgorICBJbiAzLjQgaXQgd2lsbCBiZSBhIFR5cGVFcnJvci4KKworLSBJc3N1ZSAjMTEyNDQ6IFRoZSBwZWVwaG9sZSBvcHRpbWl6ZXIgaXMgbm93IGFibGUgdG8gY29uc3RhbnQtZm9sZAorICBhcmJpdHJhcmlseSBjb21wbGV4IGV4cHJlc3Npb25zLiAgVGhpcyBhbHNvIGZpeGVzIGEgMy4yIHJlZ3Jlc3Npb24gd2hlcmUKKyAgb3BlcmF0aW9ucyBpbnZvbHZpbmcgbmVnYXRpdmUgbnVtYmVycyB3ZXJlIG5vdCBjb25zdGFudC1mb2xkZWQuCisKKy0gSXNzdWUgIzExNDUwOiBEb24ndCB0cnVuY2F0ZSBoZyB2ZXJzaW9uIGluZm8gaW4gUHlfR2V0QnVpbGRJbmZvKCkgd2hlbgorICB0aGVyZSBhcmUgbWFueSB0YWdzIChlLmcuIHdoZW4gdXNpbmcgbXEpLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgorCistIElzc3VlICMxMTMzNTogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiBsaXN0LnNvcnQgd2hlbiB0aGUga2V5IGZ1bmN0aW9uCisgIHRocm93cyBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzg5MjM6IFdoZW4gYSBzdHJpbmcgaXMgZW5jb2RlZCB0byBVVEYtOCBpbiBzdHJpY3QgbW9kZSwgdGhlIHJlc3VsdCBpcworICBjYWNoZWQgaW50byB0aGUgb2JqZWN0LiBFeGFtcGxlczogc3RyLmVuY29kZSgpLCBzdHIuZW5jb2RlKCd1dGYtOCcpLAorICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKCkgYW5kIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodW5pY29kZSwgInV0Zi04IiwKKyAgTlVMTCkuCisKKy0gSXNzdWUgIzEwODMxOiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIHN1cHBvcnRzICVsaSwgJWxsaSBhbmQgJXppIGZvcm1hdHMuCisKKy0gSXNzdWUgIzEwODI5OiBSZWZhY3RvciBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpLCB1c2UgdGhlIHNhbWUgZnVuY3Rpb24gdG8gcGFyc2UKKyAgdGhlIGZvcm1hdCBzdHJpbmcgaW4gdGhlIDMgc3RlcHMsIGZpeCBjcmFzaHMgb24gaW52YWxpZCBmb3JtYXQgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTMwMDc6IHdoaWNoZGIgc2hvdWxkIHJlY29nbml6ZSBnZGJtIDEuOSBtYWdpYyBudW1iZXJzLgorCistIElzc3VlICMxMTI0NjogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlViIpIHRvIGRlY29kZSB0aGUgYnl0ZSBzdHJpbmcgZnJvbQorICBVVEYtOCAod2l0aCByZXBsYWNlIGVycm9yIGhhbmRsZXIpIGluc3RlYWQgb2YgSVNPLTg4NTktMSAoaW4gc3RyaWN0IG1vZGUpLgorICBQYXRjaCB3cml0dGVuIGJ5IFJheSBBbGxlbi4KKworLSBJc3N1ZSAjMTEyODY6IFJhaXNlIGEgVmFsdWVFcnJvciBmcm9tIGNhbGxpbmcgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIgd2l0aAorICBhIGJ1ZmZlciBzdHJ1Y3QgaGF2aW5nIGEgTlVMTCBkYXRhIHBvaW50ZXIuCisKKy0gSXNzdWUgIzExMjcyOiBPbiBXaW5kb3dzLCBpbnB1dCgpIHN0cmlwcyAnXHInIChhbmQgbm90IG9ubHkgJ1xuJyksIGFuZAorICBzeXMuc3RkaW4gdXNlcyB1bml2ZXJzYWwgbmV3bGluZSAocmVwbGFjZSAnXHJcbicgYnkgJ1xuJykuCisKKy0gaXNzdWUgIzExODI4OiBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aCBkb24ndCBhY2NlcHQgTm9uZSBhcyBzbGljZSBpbmRleC4KKyAgUGF0Y2ggYnkgVG9yc3RlbiBCZWNrZXIuCisKKy0gSXNzdWUgIzEwODMwOiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCIlYyIpIGZvciBub24tQk1QIGNoYXJhY3RlcnMgb24KKyAgbmFycm93IGJ1aWxkLgorCistIElzc3VlICMxMTE2ODogUmVtb3ZlIGZpbGVuYW1lIGRlYnVnIHZhcmlhYmxlIGZyb20gUHlFdmFsX0V2YWxGcmFtZUV4KCkuCisgIEl0IGVuY29kZWQgdGhlIFVuaWNvZGUgZmlsZW5hbWUgdG8gVVRGLTgsIGJ1dCB0aGUgZW5jb2RpbmcgZmFpbHMgb24KKyAgdW5kZWNvZGFibGUgZmlsZW5hbWUgKG9uIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzKSB3aGljaCByYWlzZXMgYW4gdW5leHBlY3RlZAorICBVbmljb2RlRW5jb2RlRXJyb3Igb24gcmVjdXJzaW9uIGxpbWl0LgorCistIElzc3VlICMxMTE4NzogUmVtb3ZlIGJvb3RzdHJhcCBjb2RlICh1c2UgQVNDSUkpIG9mCisgIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSwgaXQgd2FzIHJlcGxhY2VkIGJ5IGEgYmV0dGVyIGZhbGxiYWNrICh1c2UgdGhlCisgIGxvY2FsZSBlbmNvZGluZykgaW4gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpLgorCistIENoZWNrIGZvciBOVUxMIHJlc3VsdCBpbiBQeVR5cGVfRnJvbVNwZWMuCisKKy0gSXNzdWUgIzEwNTE2OiBOZXcgY29weSgpIGFuZCBjbGVhcigpIG1ldGhvZHMgZm9yIGxpc3RzIGFuZCBieXRlYXJyYXlzLgorCistIElzc3VlICMxMTM4NjogYnl0ZWFycmF5LnBvcCgpIG5vdyB0aHJvd3MgSW5kZXhFcnJvciB3aGVuIHRoZSBieXRlYXJyYXkgaXMKKyAgZW1wdHksIGluc3RlYWQgb2YgT3ZlcmZsb3dFcnJvci4KKworLSBJc3N1ZSAjMTIzODA6IFRoZSByanVzdCwgbGp1c3QgYW5kIGNlbnRlciBtZXRob2RzIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkKKyAgbm93IGFjY2VwdCBhIGJ5dGVhcnJheSBhcmd1bWVudC4KKwogTGlicmFyeQogLS0tLS0tLQogCistIElzc3VlICMxNDE5NTogQW4gaXNzdWUgdGhhdCBjYXVzZWQgd2Vha3JlZi5XZWFrU2V0IGluc3RhbmNlcyB0byBpbmNvcnJlY3RseQorICByZXR1cm4gVHJ1ZSBmb3IgYSBXZWFrU2V0IGluc3RhbmNlICdhJyBpbiBib3RoICdhIDwgYScgYW5kICdhID4gYScgaGFzIGJlZW4KKyAgZml4ZWQuCisKKy0gSXNzdWUgIzE0MTY2OiBQaWNrbGVyIG9iamVjdHMgbm93IGhhdmUgYW4gb3B0aW9uYWwgYGBkaXNwYXRjaF90YWJsZWBgCisgIGF0dHJpYnV0ZSB3aGljaCBhbGxvd3MgdG8gc2V0IGN1c3RvbSBwZXItcGlja2xlciByZWR1Y3Rpb24gZnVuY3Rpb25zLgorICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzE0MTc3OiBtYXJzaGFsLmxvYWRzKCkgbm93IHJhaXNlcyBUeXBlRXJyb3Igd2hlbiBnaXZlbiBhbiB1bmljb2RlCisgIHN0cmluZy4gIFBhdGNoIGJ5IEd1aWxoZXJtZSBHb27Dp2FsdmVzLgorCistIElzc3VlICMxMzU1MDogUmVtb3ZlIHRoZSBkZWJ1ZyBtYWNoaW5lcnkgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZTogcmVtb3ZlCisgIHZlcmJvc2UgYXJndW1lbnRzIGZyb20gYWxsIHRocmVhZGluZyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzE0MTU5OiBGaXggdGhlIGxlbigpIG9mIHdlYWsgY29udGFpbmVycyAoV2Vha1NldCwgV2Vha0tleURpY3Rpb25hcnksCisgIFdlYWtWYWx1ZURpY3Rpb25hcnkpIHRvIHJldHVybiBhIGJldHRlciBhcHByb3hpbWF0aW9uIHdoZW4gc29tZSBvYmplY3RzCisgIGFyZSBkZWFkIG9yIGR5aW5nLiAgTW9yZW92ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3cgTygxKSByYXRoZXIgdGhhbgorICBPKG4pLgorCistIElzc3VlICMxMzEyNTogU2lsZW5jZSBzcHVyaW91cyB0ZXN0X2xpYjJ0bzMgb3V0cHV0IHdoZW4gaW4gbm9uLXZlcmJvc2UgbW9kZS4KKyAgUGF0Y2ggYnkgTWlraGFpbCBOb3Zpa292LgorCistIElzc3VlICMxMTg0MTogRml4IGNvbXBhcmlzb24gYnVnIHdpdGggJ3JjJyB2ZXJzaW9ucyBpbiBwYWNrYWdpbmcudmVyc2lvbi4KKyAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KKworLSBJc3N1ZSAjMTM0NDc6IEFkZCBhIHRlc3QgZmlsZSB0byBob3N0IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJ1Z3MgaW4gdGhlCisgIHNjcmlwdHMgZm91bmQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjNjg4NDogRml4IGxvbmctc3RhbmRpbmcgYnVncyB3aXRoIE1BTklGRVNULmluIHBhcnNpbmcgaW4gZGlzdHV0aWxzCisgIG9uIFdpbmRvd3MuICBBbHNvIGZpeGVkIGluIHBhY2thZ2luZy4KKworLSBJc3N1ZSAjODAzMzogc3FsaXRlMzogRml4IDY0LWJpdCBpbnRlZ2VyIGhhbmRsaW5nIGluIHVzZXIgZnVuY3Rpb25zCisgIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBJbml0aWFsIHBhdGNoIGJ5IFBoaWxpcHBlIERldmFsa2VuZWVyLgorCiAtIEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIHNsYXNoZXMgaW4gdGhlIHN0YXJ0IHRhZy4KIAorLSBJc3N1ZSAjMTM2NDE6IERlY29kaW5nIGZ1bmN0aW9ucyBpbiB0aGUgYmFzZTY0IG1vZHVsZSBub3cgYWNjZXB0IEFTQ0lJLW9ubHkKKyAgdW5pY29kZSBzdHJpbmdzLiAgUGF0Y2ggYnkgQ2F0YWxpbiBJYWNvYi4KKworLSBJc3N1ZSAjMTQwNDM6IFNwZWVkIHVwIGltcG9ydGxpYidzIF9GaWxlRmluZGVyIGJ5IGF0IGxlYXN0IDh4LCBhbmQgYWRkIGEKKyAgbmV3IGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpIGZ1bmN0aW9uLgorCiAtIElzc3VlICMxNDAwMTogQ1ZFLTIwMTItMDg0NTogeG1scnBjOiBGaXggYW4gZW5kbGVzcyBsb29wIGluCiAgIFNpbXBsZVhNTFJQQ1NlcnZlciB1cG9uIG1hbGZvcm1lZCBQT1NUIHJlcXVlc3QuCiAKKy0gSXNzdWUgIzEzOTYxOiBNb3ZlIGltcG9ydGxpYiBvdmVyIHRvIHVzaW5nIG9zLnJlcGxhY2UoKSBmb3IgYXRvbWljIHJlbmFtaW5nLgorCistIERvIGF3YXkgd2l0aCBhbWJpZ3VvdXMgbGV2ZWwgdmFsdWVzIChhcyBzdWdnZXN0ZWQgYnkgUEVQIDMyOCkgaW4KKyAgaW1wb3J0bGliLl9faW1wb3J0X18oKSBieSByYWlzaW5nIFZhbHVlRXJyb3Igd2hlbiBsZXZlbCA8IDAuCisKIC0gSXNzdWUgIzI0ODk6IHB0eS5zcGF3biBjb3VsZCBjb25zdW1lIDEwMCUgY3B1IHdoZW4gaXQgZW5jb3VudGVyZWQgYW4gRU9GLgogCiAtIElzc3VlICMxMzAxNDogRml4IGEgcG9zc2libGUgcmVmZXJlbmNlIGxlYWsgaW4gU1NMU29ja2V0LmdldHBlZXJjZXJ0KCkuCiAKKy0gSXNzdWUgIzEzNzc3OiBBZGQgUEZfU1lTVEVNIHNvY2tldHMgb24gT1MgWC4KKyAgUGF0Y2ggYnkgTWljaGFlbCBHb2RlcmJhdWVyLgorCiAtIElzc3VlICMxMzAxNTogRml4IGEgcG9zc2libGUgcmVmZXJlbmNlIGxlYWsgaW4gZGVmYXVsdGRpY3QuX19yZXByX18uCiAgIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCiAKLS0gSXNzdWUgIzEzMjYxMTM6IGRpc3R1dGlscycgYnVpbGRfZXh0IGNvbW1hbmQgLS1saWJyYXJpZXMgb3B0aW9uIG5vdwotICBjb3JyZWN0bHkgcGFyc2VzIG11bHRpcGxlIHZhbHVlcyBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSBvciBjb21tYXMuCistIElzc3VlICMxMzI2MTEzOiBkaXN0dXRpbHMnIGFuZCBwYWNrYWdpbmcncyBidWlsZF9leHQgY29tbWFuZHMgb3B0aW9uIG5vdworICBjb3JyZWN0bHkgcGFyc2VzIG11bHRpcGxlIHZhbHVlcyAoc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2Ugb3IgY29tbWFzKSBnaXZlbgorICB0byB0aGVpciAtLWxpYnJhcmllcyBvcHRpb24uCiAKIC0gSXNzdWUgIzEwMjg3OiBubnRwbGliIG5vdyBxdWVyaWVzIHRoZSBzZXJ2ZXIncyBDQVBBQklMSVRJRVMgZmlyc3QgYmVmb3JlCiAgIHNlbmRpbmcgTU9ERSBSRUFERVIsIGFuZCBvbmx5IHNlbmRzIGl0IGlmIG5vdCBhbHJlYWR5IGluIFJFQURFUiBtb2RlLgogICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCiAKLS0gSXNzdWUgIzEzOTc5OiBBIGJ1ZyBpbiBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkgdGhhdCBjYXVzZWQKLSAgdGhlIHdyb25nIGxpYnJhcnkgbmFtZSB0byBiZSByZXR1cm5lZCBoYXMgYmVlbiBmaXhlZC4KLQogLSBJc3N1ZSAjMTM5OTM6IEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIGJyb2tlbiBlbmQgdGFncyB3aGVuCiAgIHN0cmljdD1GYWxzZS4KIAorLSBJc3N1ZSAjMTM5MzA6IGxpYjJ0bzMgbm93IHN1cHBvcnRzIHdyaXRpbmcgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCisgIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCisgIHN1ZmZpeC4KKwogLSBJc3N1ZSAjOTc1MDogRml4IHNxbGl0ZTMuQ29ubmVjdGlvbi5pdGVyZHVtcCBvbiB0YWJsZXMgYW5kIGZpZWxkcwogICB3aXRoIGEgbmFtZSB0aGF0IGlzIGEga2V5d29yZCBvciBjb250YWlucyBxdW90ZXMuIFBhdGNoIGJ5IE1hcmtvCiAgIEtvaHRhbGEuCkBAIC03NjMsNiArMjI0MCwyOCBAQAogLSBJc3N1ZSAjMTM5NjA6IEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIGJyb2tlbiBjb21tZW50cyB3aGVuCiAgIHN0cmljdD1GYWxzZS4KIAorLSBJc3N1ZSAjMTM5MjE6IFVuZG9jdW1lbnQgYW5kIGNsZWFuIHVwIHNxbGl0ZTMuT3B0aW1pemVkVW5pY29kZSwKKyAgd2hpY2ggaXMgb2Jzb2xldGUgaW4gUHl0aG9uIDMueC4gSXQncyBub3cgYWxpYXNlZCB0byBzdHIgZm9yCisgIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorCistIFdoZW4gJycgaXMgYSBwYXRoIChlLmcuIGluIHN5cy5wYXRoKSwgbWFrZSBzdXJlIF9fZmlsZV9fIHVzZXMgdGhlIGN1cnJlbnQKKyAgd29ya2luZyBkaXJlY3RvcnkgaW5zdGVhZCBvZiAnJyBpbiBpbXBvcnRsaWIuCisKKy0gSXNzdWUgIzEzNjA5OiBBZGQgdHdvIGZ1bmN0aW9ucyB0byBxdWVyeSB0aGUgdGVybWluYWwgc2l6ZToKKyAgb3MuZ2V0X3Rlcm1pbmFsX3NpemUgKGxvdyBsZXZlbCkgYW5kIHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSAoaGlnaCBsZXZlbCkuCisgIFBhdGNoIGJ5IFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsuCisKKy0gSXNzdWUgIzEzODQ1OiBPbiBXaW5kb3dzLCB0aW1lLnRpbWUoKSBub3cgdXNlcyBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpCisgIGluc3RlYWQgb2YgZnRpbWUoKSB0byBoYXZlIGEgcmVzb2x1dGlvbiBvZiAxMDAgbnMgaW5zdGVhZCBvZiAxIG1zICh0aGUgY2xvY2sKKyAgYWNjdXJhY3kgaXMgYmV0d2VlbiAwLjUgbXMgYW5kIDE1IG1zKS4KKworLSBJc3N1ZSAjMTM4NDY6IEFkZCB0aW1lLm1vbm90b25pYygpLCBtb25vdG9uaWMgY2xvY2suCisKKy0gSXNzdWUgIzgxODQ6IG11bHRpcHJvY2Vzc2luZzogT24gV2luZG93cywgZG9uJ3Qgc2V0IFNPX1JFVVNFQUREUiBvbgorICBDb25uZWN0aW9uIHNvY2tldHMsIGFuZCBzZXQgRklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0Ugb24gbmFtZWQgcGlwZXMsIHRvCisgIG1ha2Ugc3VyZSB0d28gbGlzdGVuZXJzIGNhbid0IGJpbmQgdG8gdGhlIHNhbWUgc29ja2V0L3BpcGUgKG9yIGFueSBleGlzdGluZworICBzb2NrZXQvcGlwZSkuCisKIC0gSXNzdWUgIzkwMjE6IEFkZCBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGNvcHkgbW9kdWxlIGRvY3VtZW50YXRpb24uCiAKIC0gSXNzdWUgIzYwMDU6IEV4YW1wbGVzIGluIHRoZSBzb2NrZXQgbGlicmFyeSBkb2N1bWVudGF0aW9uIHVzZSBzZW5kYWxsLCB3aGVyZQpAQCAtNzc2LDggKzIyNzUsMTUgQEAKIC0gSXNzdWUgIzk2NDQzNzogTWFrZSBJRExFIGhlbHAgd2luZG93IG5vbi1tb2RhbC4KICAgUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8gYW5kIFJvZ2VyIFNlcnd5LgogCistIElzc3VlICMxMzczNDogQWRkIG9zLmZ3YWxrKCksIGEgZGlyZWN0b3J5IHdhbGtpbmcgZnVuY3Rpb24geWllbGRpbmcgZmlsZQorICBkZXNjcmlwdG9ycy4KKwogLSBJc3N1ZSAjMjk0NTogTWFrZSB0aGUgZGlzdHV0aWxzIHVwbG9hZCBjb21tYW5kIGF3YXJlIG9mIGJkaXN0X3JwbSBwcm9kdWN0cy4KIAorLSBJc3N1ZSAjMTM3MTI6IHB5c2V0dXAgY3JlYXRlIHNob3VsZCBub3QgY29udmVydCBwYWNrYWdlX2RhdGEgdG8gZXh0cmFfZmlsZXMuCisKKy0gSXNzdWUgIzExODA1OiBwYWNrYWdlX2RhdGEgaW4gc2V0dXAuY2ZnIHNob3VsZCBhbGxvdyBtb3JlIHRoYW4gb25lIHZhbHVlLgorCiAtIElzc3VlICMxMzkzMzogSURMRSBhdXRvLWNvbXBsZXRlIGRpZCBub3Qgd29yayB3aXRoIHNvbWUgaW1wb3J0ZWQKICAgbW9kdWxlLCBsaWtlIGhhc2hsaWIuICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCiAKQEAgLTc4OCw2ICsyMjk0LDkgQEAKIC0gSXNzdWUgIzEzNTA2OiBBZGQgJycgdG8gcGF0aCBmb3IgSURMRSBTaGVsbCB3aGVuIHN0YXJ0ZWQgYW5kIHJlc3RhcnRlZCB3aXRoIFJlc3RhcnQgU2hlbGwuCiAgIE9yaWdpbmFsIHBhdGNoZXMgYnkgTWFyY28gU2NhdGFnbGluaSBhbmQgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzg4Mjg6IEFkZCBuZXcgZnVuY3Rpb24gb3MucmVwbGFjZSgpLCBmb3IgY3Jvc3MtcGxhdGZvcm0gcmVuYW1pbmcKKyAgd2l0aCBvdmVyd3JpdGluZy4KKwogLSBJc3N1ZSAjMTM4NDg6IG9wZW4oKSBhbmQgdGhlIEZpbGVJTyBjb25zdHJ1Y3RvciBub3cgY2hlY2sgZm9yIE5VTAogICBjaGFyYWN0ZXJzIGluIHRoZSBmaWxlIG5hbWUuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCiAKQEAgLTgwMCw2ICsyMzA5LDE3IEBACiAtIElzc3VlICMxMzg4NTogQ1ZFLTIwMTEtMzM4OTogdGhlIF9zc2wgbW9kdWxlIHdvdWxkIGFsd2F5cyBkaXNhYmxlIHRoZSBDQkMKICAgSVYgYXR0YWNrIGNvdW50ZXJtZWFzdXJlLgogCistIElzc3VlICMxMzg0NzogdGltZS5sb2NhbHRpbWUoKSBhbmQgdGltZS5nbXRpbWUoKSBub3cgcmFpc2UgYW4gT1NFcnJvciBpbnN0ZWFkCisgIG9mIFZhbHVlRXJyb3Igb24gZmFpbHVyZS4gdGltZS5jdGltZSgpIGFuZCB0aW1lLmFzY3RpbWUoKSBub3cgcmFpc2VzIGFuCisgIE9TRXJyb3IgaWYgbG9jYWx0aW1lKCkgZmFpbGVkLiB0aW1lLmNsb2NrKCkgbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUKKyAgcHJvY2Vzc29yIHRpbWUgdXNlZCBpcyBub3QgYXZhaWxhYmxlIG9yIGl0cyB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQKKworLSBJc3N1ZSAjMTM4NjI6IEZpeCBzcHVyaW91cyBmYWlsdXJlIGluIHRlc3RfemxpYiBkdWUgdG8gcnVudGltZS9jb21waWxlIHRpbWUKKyAgbWlub3IgdmVyc2lvbnMgbm90IG1hdGNoaW5nLgorCistIElzc3VlICMxMjgwNDogRml4IHRlc3Rfc29ja2V0IGFuZCB0ZXN0X3VybGxpYjJuZXQgZmFpbHVyZXMgd2hlbiBydW5uaW5nIHRlc3RzCisgIG9uIGEgc3lzdGVtIHdpdGhvdXQgaW50ZXJuZXQgYWNjZXNzLgorCiAtIElzc3VlICMxMzc3MjogSW4gb3Muc3ltbGluaygpIHVuZGVyIFdpbmRvd3MsIGRvIG5vdCB0cnkgdG8gZ3Vlc3MgdGhlIGxpbmsKICAgdGFyZ2V0J3MgdHlwZSAoZmlsZSBvciBkaXJlY3RvcnkpLiAgVGhlIGRldGVjdGlvbiB3YXMgYnVnZ3kgYW5kIG1hZGUgdGhlCiAgIGNhbGwgbm9uLWF0b21pYyAodGhlcmVmb3JlIHByb25lIHRvIHJhY2UgY29uZGl0aW9ucykuCkBAIC04MTUsNiArMjMzNSwxMSBAQAogLSBJc3N1ZSAjMTM4MDM6IFVuZGVyIFNvbGFyaXMsIGRpc3R1dGlscyBkb2Vzbid0IGluY2x1ZGUgYml0bmVzcwogICBpbiB0aGUgZGlyZWN0b3J5IG5hbWUuCiAKKy0gSXNzdWUgIzEwMjc4OiBBZGQgdGltZS53YWxsY2xvY2soKSBmdW5jdGlvbiwgbW9ub3RvbmljIGNsb2NrLgorCistIElzc3VlICMxMzgwOTogRml4IHJlZ3Jlc3Npb24gd2hlcmUgYnoyIG1vZHVsZSB3b3VsZG4ndCB3b3JrIHdoZW4gdGhyZWFkcyBhcmUKKyAgZGlzYWJsZWQuIE9yaWdpbmFsIHBhdGNoIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjLgorCiAtIElzc3VlICMxMzU4OTogRml4IHNvbWUgc2VyaWFsaXphdGlvbiBwcmltaXRpdmVzIGluIHRoZSBhaWZjIG1vZHVsZS4KICAgUGF0Y2ggYnkgT2xlZyBQbGFraG90bnl1ay4KIApAQCAtODMxLDYgKzIzNTYsMTEgQEAKIC0gSXNzdWUgIzEzNTAyOiB0aHJlYWRpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIEV2ZW50LndhaXQoKSB0aGF0IG1hZGUgaXQKICAgcmV0dXJuIEZhbHNlIHdoZW4gdGhlIGV2ZW50IHdhcyBzZXQgYW5kIGNsZWFyZWQgcmlnaHQgYWZ0ZXIuCiAKKy0gSXNzdWUgIzk5OTM6IFdoZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYXJlIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtcywKKyAgYW5kIHRoZSBzb3VyY2UgaXMgYSBzeW1saW5rLCBzaHV0aWwubW92ZSgpIG5vdyByZWNyZWF0ZXMgYSBzeW1saW5rIG9uIHRoZQorICBkZXN0aW5hdGlvbiBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIGZpbGUgY29udGVudHMuICBQYXRjaCBieSBKb25hdGhhbiBOaWVob2YKKyAgYW5kIEh5bmVrIFNjaGxhd2Fjay4KKwogLSBJc3N1ZSAjMTI5MjY6IEZpeCBhIGJ1ZyBpbiB0YXJmaWxlJ3MgbGluayBleHRyYWN0aW9uLgogCiAtIElzc3VlICMxMzY5NjogRml4IHRoZSAzMDIgUmVsYXRpdmUgVVJMIFJlZGlyZWN0aW9uIHByb2JsZW0uCkBAIC04MzgsMTUgKzIzNjgsNDQgQEAKIC0gSXNzdWUgIzEzNjM2OiBXZWFrIGNpcGhlcnMgYXJlIG5vdyBkaXNhYmxlZCBieSBkZWZhdWx0IGluIHRoZSBzc2wgbW9kdWxlCiAgIChleGNlcHQgd2hlbiBTU0x2MiBpcyBleHBsaWNpdGx5IGFza2VkIGZvcikuCiAKKy0gSXNzdWUgIzEyNzE1OiBBZGQgYW4gb3B0aW9uYWwgc3ltbGlua3MgYXJndW1lbnQgdG8gc2h1dGlsIGZ1bmN0aW9ucworICAoY29weWZpbGUsIGNvcHltb2RlLCBjb3B5c3RhdCwgY29weSwgY29weTIpLiAgV2hlbiB0aGF0IHBhcmFtZXRlciBpcworICB0cnVlLCBzeW1saW5rcyBhcmVuJ3QgZGVyZWZlcmVuY2VkIGFuZCB0aGUgb3BlcmF0aW9uIGluc3RlYWQgYWN0cyBvbiB0aGUKKyAgc3ltbGluayBpdHNlbGYgKG9yIGNyZWF0ZXMgb25lLCBpZiByZWxldmFudCkuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCisKKy0gQWRkIGEgZmxhZ3MgcGFyYW1ldGVyIHRvIHNlbGVjdC5lcG9sbC4KKwogLSBJc3N1ZSAjMTI3OTg6IFVwZGF0ZWQgdGhlIG1pbWV0eXBlcyBkb2N1bWVudGF0aW9uLgogCistIElzc3VlICMxMzYyNjogQWRkIHN1cHBvcnQgZm9yIFNTTCBEaWZmaWUtSGVsbG1hbiBrZXkgZXhjaGFuZ2UsIHRocm91Z2ggdGhlCisgIFNTTENvbnRleHQubG9hZF9kaF9wYXJhbXMoKSBtZXRob2QgYW5kIHRoZSBzc2wuT1BfU0lOR0xFX0RIX1VTRSBvcHRpb24uCisKIC0gSXNzdWUgIzExMDA2OiBEb24ndCBpc3N1ZSBsb3cgbGV2ZWwgd2FybmluZyBpbiBzdWJwcm9jZXNzIHdoZW4gcGlwZTIoKSBmYWlscy4KIAorLSBJc3N1ZSAjMTM2MjA6IFN1cHBvcnQgZm9yIENocm9tZSBicm93c2VyIGluIHdlYmJyb3dzZXIuICBQYXRjaCBjb250cmlidXRlZAorICBieSBBcm5hdWQgQ2FsbWV0dGVzLgorCiAtIElzc3VlICMxMTgyOTogRml4IGNvZGUgZXhlY3V0aW9uIGhvbGVzIGluIGluc3BlY3QuZ2V0YXR0cl9zdGF0aWMgZm9yCiAgIG1ldGFjbGFzc2VzIHdpdGggbWV0YWNsYXNzZXMuIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KIAorLSBJc3N1ZSAjMTI3MDg6IEFkZCBzdGFybWFwKCkgYW5kIHN0YXJtYXBfYXN5bmMoKSBtZXRob2RzIChzaW1pbGFyIHRvCisgIGl0ZXJ0b29scy5zdGFybWFwKCkpIHRvIG11bHRpcHJvY2Vzc2luZy5Qb29sLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCiAtIElzc3VlICMxNzg1OiBGaXggaW5zcGVjdCBhbmQgcHlkb2Mgd2l0aCBtaXNiZWhhdmluZyBkZXNjcmlwdG9ycy4KIAorLSBJc3N1ZSAjMTM2Mzc6ICJhMmIiIGZ1bmN0aW9ucyBpbiB0aGUgYmluYXNjaWkgbW9kdWxlIG5vdyBhY2NlcHQgQVNDSUktb25seQorICB1bmljb2RlIHN0cmluZ3MuCisKKy0gSXNzdWUgIzEzNjM0OiBBZGQgc3VwcG9ydCBmb3IgcXVlcnlpbmcgYW5kIGRpc2FibGluZyBTU0wgY29tcHJlc3Npb24uCisKKy0gSXNzdWUgIzEzNjI3OiBBZGQgc3VwcG9ydCBmb3IgU1NMIEVsbGlwdGljIEN1cnZlLWJhc2VkIERpZmZpZS1IZWxsbWFuCisgIGtleSBleGNoYW5nZSwgdGhyb3VnaCB0aGUgU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZSgpIG1ldGhvZCBhbmQgdGhlCisgIHNzbC5PUF9TSU5HTEVfRUNESF9VU0Ugb3B0aW9uLgorCistIElzc3VlICMxMzYzNTogQWRkIHNzbC5PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIHNvIHRoYXQgU1NMIHNlcnZlcnMKKyAgY2hvb3NlIHRoZSBjaXBoZXIgYmFzZWQgb24gdGhlaXIgb3duIHByZWZlcmVuY2VzLCByYXRoZXIgdGhhbiBvbiB0aGUKKyAgY2xpZW50J3MuCisKIC0gSXNzdWUgIzExODEzOiBGaXggaW5zcGVjdC5nZXRhdHRyX3N0YXRpYyBmb3IgbW9kdWxlcy4gUGF0Y2ggYnkgQW5kcmVhcwogICBTdMO8aHJrLgogCkBAIC04NTksMjcgKzI0MTgsNjIgQEAKIC0gSXNzdWUgIzgwMzU6IHVybGxpYjogRml4IGEgYnVnIHdoZXJlIHRoZSBjbGllbnQgY291bGQgcmVtYWluIHN0dWNrIGFmdGVyIGEKICAgcmVkaXJlY3Rpb24gb3IgYW4gZXJyb3IuCiAKKy0gSXNzdWUgIzEzNTYwOiBvcy5zdHJlcnJvcigpIG5vdyB1c2VzIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mCisgIFVURi04LgorCistIElzc3VlICMxMzU2MDogQWRkIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoKSwgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoKQorICBhbmQgUHlVbmljb2RlX0VuY29kZUxvY2FsZSgpIGZ1bmN0aW9ucyB0byB0aGUgQyBBUEkgdG8gZGVjb2RlL2VuY29kZSBmcm9tL3RvCisgIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4KKworLSBJc3N1ZSAjODM3MzogVGhlIGZpbGVzeXN0ZW0gcGF0aCBvZiBBRl9VTklYIHNvY2tldHMgbm93IHVzZXMgdGhlIGZpbGVzeXN0ZW0KKyAgZW5jb2RpbmcgYW5kIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciwgcmF0aGVyIHRoYW4gVVRGLTguICBQYXRjaAorICBieSBEYXZpZCBXYXRzb24uCisKIC0gSXNzdWUgIzEwMzUwOiBSZWFkIGFuZCBzYXZlIGVycm5vIGJlZm9yZSBjYWxsaW5nIGEgZnVuY3Rpb24gd2hpY2ggbWlnaHQKICAgb3ZlcndyaXRlIGl0LiAgT3JpZ2luYWwgcGF0Y2ggYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KIAorLSBJc3N1ZSAjMTE2MTA6IEludHJvZHVjZSBhIG1vcmUgZ2VuZXJhbCB3YXkgdG8gZGVjbGFyZSBhYnN0cmFjdCBwcm9wZXJ0aWVzLgorCiAtIElzc3VlICMxMzU5MTogQSBidWcgaW4gaW1wb3J0bGliIGhhcyBiZWVuIGZpeGVkIHRoYXQgY2F1c2VkIGltcG9ydF9tb2R1bGUKICAgdG8gbG9hZCBhIG1vZHVsZSB0d2ljZS4KIAotLSBJc3N1ZSAjNDYyNTogSWYgSURMRSBjYW5ub3Qgd3JpdGUgdG8gaXRzIHJlY2VudCBmaWxlIG9yIGJyZWFrcG9pbnQKLSAgZmlsZXMsIGRpc3BsYXkgYSBtZXNzYWdlIHBvcHVwIGFuZCBjb250aW51ZSByYXRoZXIgdGhhbiBjcmFzaC4KLSAgKG9yaWdpbmFsIHBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQorLSBJc3N1ZSAjNDYyNTogSWYgSURMRSBjYW5ub3Qgd3JpdGUgdG8gaXRzIHJlY2VudCBmaWxlIG9yIGJyZWFrcG9pbnQgZmlsZXMsCisgIGRpc3BsYXkgYSBtZXNzYWdlIHBvcHVwIGFuZCBjb250aW51ZSByYXRoZXIgdGhhbiBjcmFzaC4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIFJvZ2VyIFNlcnd5LgogCi0tIElzc3VlICM1OTA1OiB0aW1lLnN0cmZ0aW1lKCkgaXMgbm93IHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIGluc3RlYWQgb2YKLSAgVVRGLTgsIGlmIHRoZSB3Y3NmdGltZSgpIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUuCistIElzc3VlICMxMzQ0OSBzY2hlZC5zY2hlZHVsZXIucnVuKCkgbWV0aG9kIGhhcyBhIG5ldyAiYmxvY2tpbmciIHBhcmFtZXRlciB3aGljaAorICB3aGVuIHNldCB0byBGYWxzZSBtYWtlcyBydW4oKSBleGVjdXRlIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0byBleHBpcmUKKyAgc29vbmVzdCAoaWYgYW55KSBhbmQgdGhlbiByZXR1cm4uICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2zDoC4KKworLSBJc3N1ZSAjODY4NCBzY2hlZC5zY2hlZHVsZXIgY2xhc3MgY2FuIGJlIHNhZmVseSB1c2VkIGluIG11bHRpLXRocmVhZGVkCisgIGVudmlyb25tZW50cy4gIFBhdGNoIGJ5IEpvc2lhaCBDYXJsc29uIGFuZCBHaWFtcGFvbG8gUm9kb2zDoC4KKworLSBBbGlhcyByZXNvdXJjZS5lcnJvciB0byBPU0Vycm9yIGFsYSBQRVAgMzE1MS4KKworLSBJc3N1ZSAjNTY4OTogQWRkIHN1cHBvcnQgZm9yIGx6bWEgY29tcHJlc3Npb24gdG8gdGhlIHRhcmZpbGUgbW9kdWxlLgorCistIElzc3VlICMxMzI0ODogVHVybiAzLjIncyBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGludG8gMy4zJ3MKKyAgRGVwcmVjYXRpb25XYXJuaW5nLiAgSXQgY292ZXJzICdjZ2kuZXNjYXBlJywgJ2ltcG9ydGxpYi5hYmMuUHlMb2FkZXInLAorICAnaW1wb3J0bGliLmFiYy5QeVB5Y0xvYWRlcicsICdubnRwbGliLk5OVFAueGd0aXRsZScsICdubnRwbGliLk5OVFAueHBhdGgnLAorICBhbmQgcHJpdmF0ZSBhdHRyaWJ1dGVzIG9mICdzbXRwZC5TTVRQQ2hhbm5lbCcuCisKKy0gSXNzdWUgIzU5MDUsICMxMzU2MDogdGltZS5zdHJmdGltZSgpIGlzIG5vdyB1c2luZyB0aGUgY3VycmVudCBsb2NhbGUKKyAgZW5jb2RpbmcsIGluc3RlYWQgb2YgVVRGLTgsIGlmIHRoZSB3Y3NmdGltZSgpIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUuCiAKIC0gSXNzdWUgIzg2NDE6IFVwZGF0ZSBJRExFIDMgc3ludGF4IGNvbG9yaW5nIHRvIHJlY29nbml6ZSBiIi4uIiBhbmQgbm90IHUiLi4iLgogICBQYXRjaCBieSBUYWwgRWluYXQuCiAKKy0gSXNzdWUgIzEzNDY0OiBBZGQgYSByZWFkaW50bygpIG1ldGhvZCB0byBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2UuICBQYXRjaAorICBieSBKb24gS3Vobi4KKwogLSB0YXJmaWxlLnB5OiBDb3JyZWN0bHkgZGV0ZWN0IGJ6aXAyIGNvbXByZXNzZWQgc3RyZWFtcyB3aXRoIGJsb2Nrc2l6ZXMKICAgb3RoZXIgdGhhbiA5MDBrLgogCiAtIElzc3VlICMxMzQzOTogRml4IG1hbnkgZXJyb3JzIGluIHR1cnRsZSBkb2NzdHJpbmdzLgogCistIElzc3VlICM2NzE1OiBBZGQgYSBtb2R1bGUgJ2x6bWEnIGZvciBjb21wcmVzc2lvbiB1c2luZyB0aGUgTFpNQSBhbGdvcml0aG0uCisgIFRoYW5rcyB0byBQZXIgw5h5dmluZCBLYXJsc2VuIGZvciB0aGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbi4KKwogLSBJc3N1ZSAjMTM0ODc6IE1ha2UgaW5zcGVjdC5nZXRtb2R1bGUgcm9idXN0IGFnYWluc3QgY2hhbmdlcyBkb25lIHRvCiAgIHN5cy5tb2R1bGVzIHdoaWxlIGl0IGlzIGl0ZXJhdGluZyBvdmVyIGl0LgogCkBAIC04ODksMTUgKzI0ODMsMzEgQEAKIC0gSXNzdWUgIzEzNDQ0OiBXaGVuIHN0ZG91dCBoYXMgYmVlbiBjbG9zZWQgZXhwbGljaXRseSwgd2Ugc2hvdWxkIG5vdCBhdHRlbXB0CiAgIHRvIGZsdXNoIGl0IGF0IHNodXRkb3duIGFuZCBwcmludCBhbiBlcnJvci4KIAorLSBJc3N1ZSAjMTI1Njc6IFRoZSBjdXJzZXMgbW9kdWxlIHVzZXMgVW5pY29kZSBmdW5jdGlvbnMgZm9yIFVuaWNvZGUgYXJndW1lbnRzCisgIHdoZW4gaXQgaXMgbGlua2VkIHRvIHRoZSBuY3Vyc2VzIGxpYnJhcnkuIEl0IGVuY29kZXMgYWxzbyBVbmljb2RlIHN0cmluZ3MgdG8KKyAgdGhlIGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mIFVURi04LgorCiAtIElzc3VlICMxMjg1NjogRW5zdXJlIGNoaWxkIHByb2Nlc3NlcyBkbyBub3QgaW5oZXJpdCB0aGUgcGFyZW50J3MgcmFuZG9tCiAgIHNlZWQgZm9yIGZpbGVuYW1lIGdlbmVyYXRpb24gaW4gdGhlIHRlbXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IEJyaWFuCiAgIEhhcnJpbmcuCiAKKy0gSXNzdWUgIzk5NTc6IFNwb29sZWRUZW1wb3JhcnlGaWxlLnRydW5jYXRlKCkgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgc2l6ZQorICBwYXJhbWV0ZXIsIGFzIG90aGVyIGZpbGUtbGlrZSBvYmplY3RzLiAgUGF0Y2ggYnkgUnlhbiBLZWxseS4KKwogLSBJc3N1ZSAjMTM0NTg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIHRoZSBzc2wgbW9kdWxlIHdoZW4gZGVjb2RpbmcgYQogICBjZXJ0aWZpY2F0ZSB3aXRoIGEgc3ViamVjdEFsdE5hbWUuICBQYXRjaCBieSBSb2JlcnQgWGlhby4KIAogLSBJc3N1ZSAjMTM0MTU6IG9zLnVuc2V0ZW52KCkgZG9lc24ndCBpZ25vcmUgZXJyb3JzIGFueW1vcmUuCiAKKy0gSXNzdWUgIzEzMjQ1OiBzY2hlZC5zY2hlZHVsZXIgY2xhc3MgY29uc3RydWN0b3IncyB0aW1lZnVuYyBhbmQKKyAgZGVsYXlmdW5jdCBwYXJhbWV0ZXJzIGFyZSBub3cgb3B0aW9uYWwuCisgIHNjaGVkdWxlci5lbnRlciBhbmQgc2NoZWR1bGVyLmVudGVyYWJzIG1ldGhvZHMgZ2FpbmVkIGEgbmV3IGt3YXJncyBwYXJhbWV0ZXIuCisgIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrLgorCistIElzc3VlICMxMjMyODogVW5kZXIgV2luZG93cywgcmVmYWN0b3IgaGFuZGxpbmcgb2YgQ3RybC1DIGV2ZW50cyBhbmQKKyAgbWFrZSBfbXVsdGlwcm9jZXNzaW5nLndpbjMyLldhaXRGb3JNdWx0aXBsZU9iamVjdHMgaW50ZXJydXB0aWJsZSB3aGVuCisgIHRoZSB3YWl0X2ZsYWcgcGFyYW1ldGVyIGlzIGZhbHNlLiAgUGF0Y2ggYnkgc2J0LgorCiAtIElzc3VlICMxMzMyMjogRml4IEJ1ZmZlcmVkV3JpdGVyLndyaXRlKCkgdG8gZW5zdXJlIHRoYXQgQmxvY2tpbmdJT0Vycm9yIGlzCiAgIHJhaXNlZCB3aGVuIHRoZSB3cmFwcGVkIHJhdyBmaWxlIGlzIG5vbi1ibG9ja2luZyBhbmQgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLgogICBQcmV2aW91cyBjb2RlIGFzc3VtZWQgdGhhdCB0aGUgcmF3IHdyaXRlKCkgd291bGQgcmFpc2UgQmxvY2tpbmdJT0Vycm9yLCBidXQKQEAgLTkxMCwxMyArMjUyMCwyNSBAQAogICBub2RlIHdoZW4gaXQgaXMgdGhlIG9ubHkgY2hpbGQgb2YgYW4gZWxlbWVudC4gIEluaXRpYWwgcGF0Y2ggYnkgRGFuCiAgIEtlbmlnc2JlcmcuCiAKKy0gSXNzdWUgIzEzMzc0OiBUaGUgV2luZG93cyBieXRlcyBBUEkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiB0aGUgb3MgbW9kdWxlLiBVc2UKKyAgVW5pY29kZSBmaWxlbmFtZXMgaW5zdGVhZCBvZiBieXRlcyBmaWxlbmFtZXMgdG8gbm90IGRlcGVuZCBvbiB0aGUgQU5TSSBjb2RlCisgIHBhZ2UgYW55bW9yZSBhbmQgdG8gc3VwcG9ydCBhbnkgZmlsZW5hbWUuCisKKy0gSXNzdWUgIzEzMjk3OiBVc2UgYnl0ZXMgdHlwZSB0byBzZW5kIGFuZCByZWNlaXZlIGJpbmFyeSBkYXRhIHRocm91Z2ggWE1MUlBDLgorCistIElzc3VlICM2Mzk3OiBTdXBwb3J0ICIvZGV2L3BvbGwiIHBvbGxpbmcgb2JqZWN0cyBpbiBzZWxlY3QgbW9kdWxlLAorICB1bmRlciBTb2xhcmlzICYgZGVyaXZhdGl2ZXMuCisKIC0gSXNzdWVzICMxNzQ1NzYxLCAjNzU1NjcwLCAjMTMzNTcsICMxMjYyOSwgIzEyMDAzMTM6IEhUTUxQYXJzZXIgbm93IGNvcnJlY3RseQogICBoYW5kbGVzIG5vbi12YWxpZCBhdHRyaWJ1dGVzLCBpbmNsdWRpbmcgYWRqYWNlbnQgYW5kIHVucXVvdGVkIGF0dHJpYnV0ZXMuCiAKLS0gSXNzdWUgIzEzMTkzOiBGaXggZGlzdHV0aWxzLmZpbGVsaXN0LkZpbGVMaXN0IHVuZGVyIFdpbmRvd3MuCistIElzc3VlICMxMzE5MzogRml4IGRpc3R1dGlscy5maWxlbGlzdC5GaWxlTGlzdCBhbmQgcGFja2FnaW5nLm1hbmlmZXN0Lk1hbmlmZXN0CisgIHVuZGVyIFdpbmRvd3MuCiAKIC0gSXNzdWUgIzEzMzg0OiBSZW1vdmUgdW5uZWNlc3NhcnkgX19mdXR1cmVfXyBpbXBvcnQgaW4gTGliL3JhbmRvbS5weQogCistIElzc3VlICMxMzE0OTogU3BlZWQgdXAgYXBwZW5kLW9ubHkgU3RyaW5nSU8gb2JqZWN0cy4KKwogLSBJc3N1ZSAjMTMzNzM6IG11bHRpcHJvY2Vzc2luZy5RdWV1ZS5nZXQoKSBjb3VsZCBzb21ldGltZXMgYmxvY2sgaW5kZWZpbml0ZWx5CiAgIHdoZW4gY2FsbGVkIHdpdGggYSB0aW1lb3V0LiAgUGF0Y2ggYnkgQXJuYXVkIFlzbWFsLgogCkBAIC05MzIsMTEgKzI1NTQsMjAgQEAKIC0gSXNzdWUgIzEzMzM5OiBGaXggY29tcGlsZSBlcnJvciBpbiBwb3NpeG1vZHVsZS5jIGR1ZSB0byBtaXNzaW5nIHNlbWljb2xvbi4KICAgVGhhbmtzIHRvIFJvYmVydCBYaWFvLgogCistIEJ5dGUgY29tcGlsYXRpb24gaW4gcGFja2FnaW5nIGlzIG5vdyBpc29sYXRlZCBmcm9tIHRoZSBjYWxsaW5nIFB5dGhvbiAtQiBvcgorICAtTyBvcHRpb25zLCBpbnN0ZWFkIG9mIGJlaW5nIGRpc2FsbG93ZWQgdW5kZXIgLUIgb3IgYnVnZ3kgdW5kZXIgLU8uCisKIC0gSXNzdWUgIzEwNTcwOiBjdXJzZXMucHV0cCgpIGFuZCBjdXJzZXMudHBhcm0oKSBhcmUgbm93IGV4cGVjdGluZyBhIGJ5dGUKICAgc3RyaW5nLCBpbnN0ZWFkIG9mIGEgVW5pY29kZSBzdHJpbmcuCiAKKy0gSXNzdWUgIzEzMjk1OiBodHRwLnNlcnZlciBub3cgcHJvZHVjZXMgdmFsaWQgSFRNTCA0LjAxIHN0cmljdC4KKwogLSBJc3N1ZSAjMjg5MjogcHJlc2VydmUgaXRlcnBhcnNlIGV2ZW50cyBpbiBjYXNlIG9mIFN5bnRheEVycm9yLgogCistIElzc3VlICMxMzI4NzogdXJsbGliLnJlcXVlc3QgYW5kIHVybGxpYi5lcnJvciBub3cgY29udGFpbnMgYW4gX19hbGxfXworICBhdHRyaWJ1dGUgdG8gZXhwb3NlIG9ubHkgcmVsZXZhbnQgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLiAgUGF0Y2ggYnkgRmxvcmVudAorICBYaWNsdW5hLgorCiAtIElzc3VlICM2NzA2NjQ6IEZpeCBIVE1MUGFyc2VyIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhlIGNvbnRlbnQgb2YKICAgYGA8c2NyaXB0Pi4uLjwvc2NyaXB0PmBgIGFuZCBgYDxzdHlsZT4uLi48L3N0eWxlPmBgLgogCkBAIC05NDYsNiArMjU3Nyw5IEBACiAtIElzc3VlICMxMzI5NjogRml4IElETEUgdG8gY2xlYXIgY29tcGlsZSBfX2Z1dHVyZV9fIGZsYWdzIG9uIHNoZWxsIHJlc3RhcnQuCiAgIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKIAorLSBGaXggdGhlIHhtbHJwYy5jbGllbnQgdXNlciBhZ2VudCB0byByZXR1cm4gc29tZXRoaW5nIHNpbWlsYXIgdG8KKyAgdXJsbGliLnJlcXVlc3QgdXNlciBhZ2VudDogIlB5dGhvbi14bWxycGMvMy4zIi4KKwogLSBJc3N1ZSAjMTMyOTM6IEJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gdHJ5aW5nIHRvIG1hcnNoYWwgYnl0ZXMgdXNpbmcKICAgeG1scnBjLmNsaWVudC4KIApAQCAtOTU2LDUxICsyNTkwLDgxIEBACiAtIElzc3VlICMxMzI3MzogZml4IGEgYnVnIHRoYXQgcHJldmVudGVkIEhUTUxQYXJzZXIgdG8gcHJvcGVybHkgZGV0ZWN0IHNvbWUKICAgdGFncyB3aGVuIHN0cmljdD1GYWxzZS4KIAorLSBJc3N1ZSAjMTExODM6IEFkZCBmaW5lci1ncmFpbmVkIGV4Y2VwdGlvbnMgdG8gdGhlIHNzbCBtb2R1bGUsIHNvIHRoYXQKKyAgeW91IGRvbid0IGhhdmUgdG8gaW5zcGVjdCB0aGUgZXhjZXB0aW9uJ3MgYXR0cmlidXRlcyBpbiB0aGUgY29tbW9uIGNhc2UuCisKKy0gSXNzdWUgIzEzMjE2OiBBZGQgY3A2NTAwMSBjb2RlYywgdGhlIFdpbmRvd3MgVVRGLTggKENQX1VURjgpLgorCistIElzc3VlICMxMzIyNjogQWRkIFJUTERfeHh4IGNvbnN0YW50cyB0byB0aGUgb3MgbW9kdWxlLiBUaGVzZSBjb25zdGFudHMgY2FuIGJlCisgIHVzZWQgd2l0aCBzeXMuc2V0ZGxvcGVuZmxhZ3MoKS4KKworLSBJc3N1ZSAjMTAyNzg6IEFkZCBjbG9ja19nZXRyZXMoKSwgY2xvY2tfZ2V0dGltZSgpIGFuZCBDTE9DS194eHggY29uc3RhbnRzIHRvCisgIHRoZSB0aW1lIG1vZHVsZS4gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfTU9OT1RPTklDKSBwcm92aWRlcyBhCisgIG1vbm90b25pYyBjbG9jaworCiAtIElzc3VlICMxMDMzMjogbXVsdGlwcm9jZXNzaW5nOiBmaXggYSByYWNlIGNvbmRpdGlvbiB3aGVuIGEgUG9vbCBpcyBjbG9zZWQKICAgYmVmb3JlIGFsbCB0YXNrcyBoYXZlIGNvbXBsZXRlZC4KIAogLSBJc3N1ZSAjMTMyNTU6IHdyb25nIGRvY3N0cmluZ3MgaW4gYXJyYXkgbW9kdWxlLgogCistIElzc3VlICM4NTQwOiBSZW1vdmUgZGVwcmVjYXRlZCBDb250ZXh0Ll9jbGFtcCBhdHRyaWJ1dGUgaW4gRGVjaW1hbCBtb2R1bGUuCisKKy0gSXNzdWUgIzEzMjM1OiBBZGRlZCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIHRvIHdhcm4oKSBtZXRob2QgYW5kIGZ1bmN0aW9uLgorCiAtIElzc3VlICM5MTY4OiBub3cgc210cGQgaXMgYWJsZSB0byBiaW5kIHByaXZpbGVnZWQgcG9ydC4KIAogLSBJc3N1ZSAjMTI1Mjk6IGZpeCBjZ2kucGFyc2VfaGVhZGVyIGlzc3VlIG9uIHN0cmluZ3Mgd2l0aCBkb3VibGUtcXVvdGVzIGFuZAogICBzZW1pY29sb25zIHRvZ2V0aGVyLiBQYXRjaCBieSBCZW4gRGFybmVsbCBhbmQgUGV0cmkgTGVodGluZW4uCiAKLS0gSXNzdWUgIzEyNDQ4OiBzbXRwbGliIG5vdyBmbHVzaGVzIHN0ZG91dCB3aGlsZSBydW5uaW5nIGBgcHl0aG9uIC1tIHNtdHBsaWJgYAotICBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSBwcm9tcHQgY29ycmVjdGx5LgorLSBJc3N1ZSAjMTMyMjc6IGZ1bmN0b29scy5scnVfY2FjaGUoKSBub3cgaGFzIGEgb3B0aW9uIHRvIGRpc3Rpbmd1aXNoCisgIGNhbGxzIHdpdGggZGlmZmVyZW50IGFyZ3VtZW50IHR5cGVzLgogCiAtIElzc3VlICM2MDkwOiB6aXBmaWxlIHJhaXNlcyBhIFZhbHVlRXJyb3Igd2hlbiBhIGRvY3VtZW50IHdpdGggYSB0aW1lc3RhbXAKICAgZWFybGllciB0aGFuIDE5ODAgaXMgcHJvdmlkZWQuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFBldHJpIExlaHRpbmVuLgogCistIElzc3VlICMxMzE1MDogc3lzY29uZmlnIG5vIGxvbmdlciBwYXJzZXMgdGhlIE1ha2VmaWxlIGFuZCBjb25maWcuaCBmaWxlcworICB3aGVuIGltcG9ydGVkLCBpbnN0ZWFkIGRvaW5nIGl0IGF0IGJ1aWxkIHRpbWUuICBUaGlzIG1ha2VzIGltcG9ydGluZworICBzeXNjb25maWcgZmFzdGVyIGFuZCByZWR1Y2VzIFB5dGhvbiBzdGFydHVwIHRpbWUgYnkgMjAlLgorCistIElzc3VlICMxMjQ0ODogc210cGxpYiBub3cgZmx1c2hlcyBzdGRvdXQgd2hpbGUgcnVubmluZyBgYHB5dGhvbiAtbSBzbXRwbGliYGAKKyAgaW4gb3JkZXIgdG8gZGlzcGxheSB0aGUgcHJvbXB0IGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMTI0NTQ6IFRoZSBtYWlsYm94IG1vZHVsZSBpcyBub3cgdXNpbmcgQVNDSUksIGluc3RlYWQgb2YgdGhlIGxvY2FsZQorICBlbmNvZGluZywgdG8gcmVhZCBhbmQgd3JpdGUgTUggbWFpbGJveGVzICgubWhfc2VxdWVuY2VzIGZpbGVzKS4KKwogLSBJc3N1ZSAjMTMxOTQ6IHpsaWIuY29tcHJlc3NvYmooKS5jb3B5KCkgYW5kIHpsaWIuZGVjb21wcmVzc29iaigpLmNvcHkoKSBhcmUKICAgbm93IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgogCistIGlzc3VlICMxNjczMDA3OiB1cmxsaWIyICB0byBzdXBwb3J0IEhFQUQgcmVxdWVzdCB2aWEgbmV3IG1ldGhvZCBhcmd1bWVudC4KKyAgUGF0Y2ggY29udHJpYnV0aW9ucyBieSBEYXZpZCBTdGFuZWssIFBhdHJpY2sgV2VzdGVyaG9mZiBhbmQgRXppbyBNZWxvdHRpLgorCistIElzc3VlICMxMjM4NjogcGFja2FnaW5nIGRvZXMgbm90IGZhaWwgYW55bW9yZSB3aGVuIHdyaXRpbmcgdGhlIFJFU09VUkNFUworICBmaWxlLgorCiAtIElzc3VlICMxMzE1ODogRml4IGRlY29kaW5nIGFuZCBlbmNvZGluZyBvZiBHTlUgdGFyIHNwZWNpZmljIGJhc2UtMjU2IG51bWJlcgogICBmaWVsZHMgaW4gdGFyZmlsZS4KIAotLSBJc3N1ZSAjMTMxNzc6ICBGdW5jdG9vbHMgbHJ1X2NhY2hlKCkgbm8gbG9uZ2VyIGNhbGxzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbgotICBpbnNpZGUgYW4gZXhjZXB0aW9uIGhhbmRsZXIuICBUaGlzIG1ha2VzIHRyYWNlYmFja3MgZWFzaWVyIHRvIHJlYWQgYmVjYXVzZQotICBjaGFpbmVkIGV4Y2VwdGlvbnMgYXJlIGF2b2lkZWQuCi0KIC0gSXNzdWUgIzEzMDI1OiBtaW1ldHlwZXMgaXMgbm93IHJlYWRpbmcgTUlNRSB0eXBlcyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcsCiAgIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZy4KIAogLSBJc3N1ZSAjMTA2NTM6IE9uIFdpbmRvd3MsIHVzZSBzdHJmdGltZSgpIGluc3RlYWQgb2Ygd2NzZnRpbWUoKSBiZWNhdXNlCiAgIHdjc2Z0aW1lKCkgZG9lc24ndCBmb3JtYXQgdGltZSB6b25lIGNvcnJlY3RseS4KIAorLSBJc3N1ZSAjMTMxNTA6IFRoZSB0b2tlbml6ZSBtb2R1bGUgZG9lc24ndCBjb21waWxlIGxhcmdlIHJlZ3VsYXIgZXhwcmVzc2lvbnMKKyAgYXQgc3RhcnR1cCBhbnltb3JlLgorCiAtIElzc3VlICMxMTE3MTogRml4IGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lIHdoZW4gUHl0aG9uIHdhcwogICBjb25maWd1cmVkIHdpdGggZGlmZmVyZW50IHByZWZpeCBhbmQgZXhlYy1wcmVmaXguCiAKLS0gSXNzdWUgIzExMjU0OiBUZWFjaCBkaXN0dXRpbHMgdG8gY29tcGlsZSAucHljIGFuZCAucHlvIGZpbGVzIGluCistIElzc3VlICMxMTI1NDogVGVhY2ggZGlzdHV0aWxzIGFuZCBwYWNrYWdpbmcgdG8gY29tcGlsZSAucHljIGFuZCAucHlvIGZpbGVzIGluCiAgIFBFUCAzMTQ3LWNvbXBsaWFudCBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllcy4KIAotLSBJc3N1ZSAjMTEyNTA6IEJhY2sgcG9ydCBmaXggZnJvbSAzLjMgYnJhbmNoLCBzbyB0aGF0IDJ0bzMgY2FuIGhhbmRsZSBmaWxlcwotICB3aXRoIGxpbmUgZmVlZHMuICBUaGlzIHdhcyBwb3J0ZWQgZnJvbSB0aGUgc2FuZGJveCB0byB0aGUgMy4zIGJyYW5jaCwgYnV0Ci0gIGRpZG4ndCBtYWtlIGl0IGludG8gMy4yLgotCiAtIElzc3VlICM3MzY3OiBGaXggcGtndXRpbC53YWxrX3BhdGhzIHRvIHNraXAgZGlyZWN0b3JpZXMgd2hvc2UKICAgY29udGVudHMgY2Fubm90IGJlIHJlYWQuCiAKKy0gSXNzdWUgIzMxNjM6IFRoZSBzdHJ1Y3QgbW9kdWxlIGdldHMgbmV3IGZvcm1hdCBjaGFyYWN0ZXJzICduJyBhbmQgJ04nCisgIHN1cHBvcnRpbmcgQyBpbnRlZ2VyIHR5cGVzIGBgc3NpemVfdGBgIGFuZCBgYHNpemVfdGBgLCByZXNwZWN0aXZlbHkuCisKIC0gSXNzdWUgIzEzMDk5OiBGaXggc3FsaXRlMy5DdXJzb3IubGFzdHJvd2lkIHVuZGVyIGEgVHVya2lzaCBsb2NhbGUuCiAgIFJlcG9ydGVkIGFuZCBkaWFnbm9zZWQgYnkgVGhvbWFzIEtsdXl2ZXIuCiAKQEAgLTEwMjEsMTMgKzI2ODUsMjkgQEAKICAgd2l0aCBpbnZhbGlkIGhleCBlc2NhcGUgc2VxdWVuY2VzLCBsaWtlIGInXHgwJy4KICAgKE9yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4pCiAKLS0gSXNzdWUgIzg5MzM6IGRpc3R1dGlscycgUEtHLUlORk8gZmlsZXMgd2lsbCBub3cgY29ycmVjdGx5IHJlcG9ydAotICBNZXRhZGF0YS1WZXJzaW9uOiAxLjEgaW5zdGVhZCBvZiAxLjAgaWYgYSBDbGFzc2lmaWVyIG9yIERvd25sb2FkLVVSTCBmaWVsZCBpcwotICBwcmVzZW50LgorLSBJc3N1ZSAjMTIzMDY6IEV4cG9zZSB0aGUgcnVudGltZSB2ZXJzaW9uIG9mIHRoZSB6bGliIEMgbGlicmFyeSBhcyBhIGNvbnN0YW50LAorICBaTElCX1JVTlRJTUVfVkVSU0lPTiwgaW4gdGhlIHpsaWIgbW9kdWxlLiBQYXRjaCBieSBUb3JzdGVuIExhbmRzY2hvZmYuCiAKLS0gSXNzdWUgIzk1NjE6IGRpc3R1dGlscyBub3cgcmVhZHMgYW5kIHdyaXRlcyBlZ2ctaW5mbyBmaWxlcyB1c2luZyBVVEYtOCwKKy0gSXNzdWUgIzEyOTU5OiBBZGQgY29sbGVjdGlvbnMuQ2hhaW5NYXAgdG8gY29sbGVjdGlvbnMuX19hbGxfXy4KKworLSBJc3N1ZSAjODkzMzogZGlzdHV0aWxzJyBQS0ctSU5GTyBmaWxlcyBhbmQgcGFja2FnaW5nJ3MgTUVUQURBVEEgZmlsZXMgd2lsbAorICBub3cgY29ycmVjdGx5IHJlcG9ydCBNZXRhZGF0YS1WZXJzaW9uOiAxLjEgaW5zdGVhZCBvZiAxLjAgaWYgYSBDbGFzc2lmaWVyIG9yCisgIERvd25sb2FkLVVSTCBmaWVsZCBpcyBwcmVzZW50LgorCistIElzc3VlICMxMjU2NzogQWRkIGN1cnNlcy51bmdldF93Y2goKSBmdW5jdGlvbi4gUHVzaCBhIGNoYXJhY3RlciBzbyB0aGUgbmV4dAorICBnZXRfd2NoKCkgd2lsbCByZXR1cm4gaXQuCisKKy0gSXNzdWUgIzk1NjE6IGRpc3R1dGlscyBhbmQgcGFja2FnaW5nIG5vdyB3cml0ZXMgZWdnLWluZm8gZmlsZXMgdXNpbmcgVVRGLTgsCiAgIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZy4KIAorLSBJc3N1ZSAjODI4NjogVGhlIGRpc3R1dGlscyBjb21tYW5kIHNkaXN0IHdpbGwgcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2UgaW5zdGVhZAorICBvZiBjcmFzaGluZyB3aGVuIGFuIGludmFsaWQgcGF0aCBpcyBnaXZlbiBpbiB0aGUgbWFuaWZlc3QgdGVtcGxhdGUuCisKKy0gSXNzdWUgIzEyODQxOiB0YXJmaWxlIHVubmVjZXNzYXJpbHkgY2hlY2tlZCB0aGUgZXhpc3RlbmNlIG9mIG51bWVyaWNhbCB1c2VyCisgIGFuZCBncm91cCBpZHMgb24gZXh0cmFjdGlvbi4gSWYgb25lIG9mIHRoZW0gZGlkIG5vdCBleGlzdCB0aGUgcmVzcGVjdGl2ZSBpZAorICBvZiB0aGUgY3VycmVudCB1c2VyIChpLmUuIHJvb3QpIHdhcyB1c2VkIGZvciB0aGUgZmlsZSBhbmQgb3duZXJzaGlwCisgIGluZm9ybWF0aW9uIHdhcyBsb3N0LgorCiAtIElzc3VlICMxMjg4ODogRml4IGEgYnVnIGluIEhUTUxQYXJzZXIudW5lc2NhcGUgdGhhdCBwcmV2ZW50ZWQgaXQgdG8gZXNjYXBlCiAgIG1vcmUgdGhhbiAxMjggZW50aXRpZXMuICBQYXRjaCBieSBQZXRlciBPdHRlbi4KIApAQCAtMTAzNSw2ICsyNzE1LDE2IEBACiAKIC0gSXNzdWUgIzEyNjM2OiBJRExFIHJlYWRzIHRoZSBjb2RpbmcgY29va2llIHdoZW4gZXhlY3V0aW5nIGEgUHl0aG9uIHNjcmlwdC4KIAorLSBJc3N1ZSAjMTI0OTQ6IE9uIGVycm9yLCBjYWxsKCksIGNoZWNrX2NhbGwoKSwgY2hlY2tfb3V0cHV0KCkgYW5kCisgIGdldHN0YXR1c291dHB1dCgpIGZ1bmN0aW9ucyBvZiB0aGUgc3VicHJvY2VzcyBtb2R1bGUgbm93IGtpbGwgdGhlIHByb2Nlc3MsCisgIHJlYWQgaXRzIHN0YXR1cyAodG8gYXZvaWQgem9tYmlzKSBhbmQgY2xvc2UgcGlwZXMuCisKKy0gSXNzdWUgIzEyNzIwOiBFeHBvc2UgbG93LWxldmVsIExpbnV4IGV4dGVuZGVkIGZpbGUgYXR0cmlidXRlIGZ1bmN0aW9ucyBpbiBvcy4KKworLSBJc3N1ZSAjMTA5NDY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZHMgYmRpc3RfZHVtYiwgYmRpc3Rfd2luaW5zdCBhbmQgYmRpc3RfbXNpCisgIG5vdyByZXNwZWN0IGEgLS1za2lwLWJ1aWxkIG9wdGlvbiBnaXZlbiB0byBiZGlzdC4gIFRoZSBwYWNrYWdpbmcgY29tbWFuZHMKKyAgd2VyZSBmaXhlZCB0b28uCisKIC0gSXNzdWUgIzEyODQ3OiBGaXggYSBjcmFzaCB3aXRoIG5lZ2F0aXZlIFBVVCBhbmQgTE9OR19CSU5QVVQgYXJndW1lbnRzIGluCiAgIHRoZSBDIHBpY2tsZSBpbXBsZW1lbnRhdGlvbi4KIApAQCAtMTA0NCwyMDEgKzI3MzQsNDcgQEAKIC0gSXNzdWUgIzEyMjg3OiBGaXggYSBzdGFjayBjb3JydXB0aW9uIGluIG9zc2F1ZGlvZGV2IG1vZHVsZSB3aGVuIHRoZSBGRCBpcwogICBncmVhdGVyIHRoYW4gRkRfU0VUU0laRS4KIAorLSBJc3N1ZSAjMTI4Mzk6IEZpeCBjcmFzaCBpbiB6bGliIG1vZHVsZSBkdWUgdG8gdmVyc2lvbiBtaXNtYXRjaC4KKyAgRml4IGJ5IFJpY2hhcmQgTS4gVGV3LgorCistIElzc3VlICM5OTIzOiBUaGUgbWFpbGNhcCBtb2R1bGUgbm93IGNvcnJlY3RseSB1c2VzIHRoZSBwbGF0Zm9ybSBwYXRoCisgIHNlcGFyYXRvciBmb3IgdGhlIE1BSUxDQVAgZW52aXJvbm1lbnQgdmFyaWFibGUgb24gbm9uLVBPU0lYIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMTI4MzU6IEZvbGxvdyB1cCB0byAjNjU2MCB0aGF0IHVuY29uZGl0aW9uYWxseSBwcmV2ZW50cyB1c2Ugb2YgdGhlCisgIHVuZW5jcnlwdGVkIHNlbmRtc2cvcmVjdm1zZyBBUElzIG9uIFNTTCB3cmFwcGVkIHNvY2tldHMuIFBhdGNoIGJ5IERhdmlkCisgIFdhdHNvbi4KKworLSBJc3N1ZSAjMTI4MDM6IFNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluKCkgbm93IGFjY2VwdHMgYSBwYXNzd29yZCBhcmd1bWVudAorICB0byBiZSB1c2VkIGlmIHRoZSBwcml2YXRlIGtleSBpcyBlbmNyeXB0ZWQuICBQYXRjaCBieSBBZGFtIFNpbXBraW5zLgorCiAtIElzc3VlICMxMTY1NzogRml4IHNlbmRpbmcgZmlsZSBkZXNjcmlwdG9ycyBvdmVyIDI1NSBvdmVyIGEgbXVsdGlwcm9jZXNzaW5nCiAgIFBpcGUuCiAKLS0gSXNzdWUgIzEzMDA3OiB3aGljaGRiIHNob3VsZCByZWNvZ25pemUgZ2RibSAxLjkgbWFnaWMgbnVtYmVycy4KKy0gSXNzdWUgIzEyODExOiB0YWJuYW5ueS5jaGVjaygpIG5vdyBwcm9tcHRseSBjbG9zZXMgY2hlY2tlZCBmaWxlcy4gUGF0Y2ggYnkKKyAgQW50aG9ueSBCcmlnZ3MuCisKKy0gSXNzdWUgIzY1NjA6IFRoZSBzZW5kbXNnL3JlY3Ztc2cgQVBJIGlzIG5vdyBleHBvc2VkIGJ5IHRoZSBzb2NrZXQgbW9kdWxlCisgIHdoZW4gcHJvdmlkZWQgYnkgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0sIHN1cHBvcnRpbmcgcHJvY2Vzc2luZyBvZgorICBhbmNpbGxhcnkgZGF0YSBpbiBwdXJlIFB5dGhvbiBjb2RlLiBQYXRjaCBieSBEYXZpZCBXYXRzb24gYW5kIEhlaWtvIFd1bmRyYW0uCisKKy0gSXNzdWUgIzEyMzI2OiBPbiBMaW51eCwgc3lzLnBsYXRmb3JtIGRvZXNuJ3QgY29udGFpbiB0aGUgbWFqb3IgdmVyc2lvbgorICBhbnltb3JlLiBJdCBpcyBub3cgYWx3YXlzICdsaW51eCcsIGluc3RlYWQgb2YgJ2xpbnV4Micgb3IgJ2xpbnV4MycgZGVwZW5kaW5nCisgIG9uIHRoZSBMaW51eCB2ZXJzaW9uIHVzZWQgdG8gYnVpbGQgUHl0aG9uLgogCiAtIElzc3VlICMxMjIxMzogRml4IGEgYnVmZmVyaW5nIGJ1ZyB3aXRoIGludGVybGVhdmVkIHJlYWRzIGFuZCB3cml0ZXMgdGhhdAogICBjb3VsZCBhcHBlYXIgb24gQnVmZmVyZWRSYW5kb20gc3RyZWFtcy4KIAorLSBJc3N1ZSAjMTI3Nzg6IFJlZHVjZSBtZW1vcnkgY29uc3VtcHRpb24gd2hlbiBKU09OLWVuY29kaW5nIGEgbGFyZ2UKKyAgY29udGFpbmVyIG9mIG1hbnkgc21hbGwgb2JqZWN0cy4KKwogLSBJc3N1ZSAjMTI2NTA6IEZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGEgc3VicHJvY2Vzcy5Qb3BlbiBjb3VsZCBsZWFrCiAgIHJlc291cmNlcyAoRkQvem9tYmllKSB3aGVuIGtpbGxlZCBhdCB0aGUgd3JvbmcgdGltZS4KIAotLSBJc3N1ZSAjMTA4NjA6IGh0dHAuY2xpZW50IG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBhbiBlbXB0eSBwb3J0IGFmdGVyIHBvcnQKLSAgZGVsaW1pdGVyIGluIFVSTHMuCistIElzc3VlICMxMjc0NDogRml4IGluZWZmaWNpZW50IHJlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzIGJldHdlZW4gMioqMzEgYW5kCisgIDIqKjYzIG9uIHN5c3RlbXMgd2l0aCBhIDY0LWJpdCBDICJsb25nIi4KIAotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzY4MDc6IFJ1biBtc2lzdXBwb3J0Lm1hayBlYXJsaWVyLgotCi0tIElzc3VlICMxMDU4MDogTWlub3IgZ3JhbW1hciBjaGFuZ2UgaW4gV2luZG93cyBpbnN0YWxsZXIuCi0KLS0gSXNzdWUgIzEzMzI2OiBDbGVhbiBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyBjb3JyZWN0bHkgb24gT3BlbkJTRC4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0MDUzOiBwYXRjaGNoZWNrLnB5ICgibWFrZSBwYXRjaGNoZWNrIikgbm93IHdvcmtzIHdpdGggTVEgcGF0Y2hlcy4KLSAgUGF0Y2ggYnkgRnJhbmNpc2NvIE1hcnTDrW4gQnJ1Z3XDqS4KLQotLSBJc3N1ZSAjMTM5MzA6IDJ0bzMgaXMgbm93IGFibGUgdG8gd3JpdGUgaXRzIGNvbnZlcnRlZCBvdXRwdXQgZmlsZXMgdG8gYW5vdGhlcgotICBkaXJlY3RvcnkgdHJlZSBhcyB3ZWxsIGFzIGNvcHlpbmcgdW5jaGFuZ2VkIGZpbGVzIGFuZCBhbHRlcmluZyB0aGUgZmlsZQotICBzdWZmaXguICBTZWUgaXRzIG5ldyAtbywgLVcgYW5kIC0tYWRkLXN1ZmZpeCBvcHRpb25zLiAgVGhpcyBtYWtlcyBpdCBtb3JlCi0gIHVzZWZ1bCBpbiBtYW55IGF1dG9tYXRlZCBjb2RlIHRyYW5zbGF0aW9uIHdvcmtmbG93cy4KLQotLSBJc3N1ZSAjMTM2Mjg6IHB5dGhvbi1nZGIucHkgaXMgbm93IGFibGUgdG8gcmV0cmlldmUgbW9yZSBmcmFtZXMgaW4gdGhlIFB5dGhvbgotICB0cmFjZWJhY2sgaWYgUHl0aG9uIGlzIG9wdGltaXplZC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzExNjg5OiBGaXggYSB2YXJpYWJsZSBzY29waW5nIGVycm9yIGluIGFuIHNxbGl0ZTMgdGVzdAotCi0tIElzc3VlICMxMzc4NjogUmVtb3ZlIHVuaW1wbGVtZW50ZWQgJ3RyYWNlJyBsb25nIG9wdGlvbiBmcm9tIHJlZ3J0ZXN0LnB5LgotCi0tIElzc3VlICMxMzcyNTogRml4IHJlZ3J0ZXN0IHRvIHJlY29nbml6ZSB0aGUgZG9jdW1lbnRlZCAtZCBmbGFnLgotICBQYXRjaCBieSBFcm5vIFR1a2lhLgotCi0tIElzc3VlICMxMzMwNDogU2tpcCB0ZXN0IGNhc2UgaWYgdXNlciBzaXRlLXBhY2thZ2VzIGRpc2FibGVkICgtcyBvcgotICBQWVRIT05OT1VTRVJTSVRFKS4gIChQYXRjaCBieSBDYXJsIE1leWVyKQotCi0tIElzc3VlICMxMzIxODogRml4IHRlc3Rfc3NsIGZhaWx1cmVzIG9uIERlYmlhbi9VYnVudHUuCi0KLS0gSXNzdWUgIzEyODIxOiBGaXggdGVzdF9mY250bCBmYWlsdXJlcyBvbiBPcGVuQlNEIDUuCi0KLS0gUmUtZW5hYmxlIGxpYjJ0bzMncyB0ZXN0X3BhcnNlci5weSB0ZXN0cywgdGhvdWdoIHdpdGggYW4gZXhwZWN0ZWQgZmFpbHVyZQotICAoc2VlIGlzc3VlIDEzMTI1KS4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEzODQwOiBUaGUgZXJyb3IgbWVzc2FnZSBwcm9kdWNlZCBieSBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIKLSAgd2hlbiBnaXZlbiBhIFVuaWNvZGUgc3RyaW5nIGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICM5OTc1OiBzb2NrZXQ6IEZpeCBpbmNvcnJlY3QgdXNlIG9mIGZsb3dpbmZvIGFuZCBzY29wZV9pZC4gUGF0Y2ggYnkKLSAgVmlsbW9zIE5lYmVoYWouCi0KLS0gSXNzdWUgIzEzMTU5OiBGaWxlSU8gYW5kIEJaMkZpbGUgbm93IHVzZSBhIGxpbmVhci10aW1lIGJ1ZmZlciBncm93dGgKLSAgc3RyYXRlZ3kgaW5zdGVhZCBvZiBhIHF1YWRyYXRpYy10aW1lIG9uZS4KLQotLSBJc3N1ZSAjMTMwNzA6IEZpeCBhIGNyYXNoIHdoZW4gYSBUZXh0SU9XcmFwcGVyIGNhdWdodCBpbiBhIHJlZmVyZW5jZSBjeWNsZQotICB3b3VsZCBiZSBmaW5hbGl6ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSB0byBpdHMgdW5kZXJseWluZyBCdWZmZXJlZFJXUGFpcidzCi0gIHdyaXRlciBnb3QgY2xlYXJlZCBieSB0aGUgR0MuCi0KLS0gSXNzdWUgIzEyODgxOiBjdHlwZXM6IEZpeCBzZWdmYXVsdCB3aXRoIGxhcmdlIHN0cnVjdHVyZSBmaWVsZCBuYW1lcy4KLQotLSBJc3N1ZSAjMTMwNTg6IG9zc2F1ZGlvZGV2OiBmaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBvbiBlcnJvci4gUGF0Y2ggYnkKLSAgVGhvbWFzIEphcm9zY2guCi0KLS0gSXNzdWUgIzEzMDEzOiBjdHlwZXM6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIGluIFB5Q0FycmF5VHlwZV9mcm9tX2N0eXBlLgotICBUaGFua3MgdG8gU3VtYW4gU2FoYSBmb3IgZmluZGluZyB0aGUgYnVnIGFuZCBwcm92aWRpbmcgYSBwYXRjaC4KLQotLSBJc3N1ZSAjMTMwMjI6IEZpeDogX211bHRpcHJvY2Vzc2luZy5yZWN2ZmQoKSBkb2Vzbid0IGNoZWNrIHRoYXQKLSAgZmlsZSBkZXNjcmlwdG9yIHdhcyBhY3R1YWxseSByZWNlaXZlZC4KLQotLSBJc3N1ZSAjMTI0ODM6IGN0eXBlczogRml4IGEgY3Jhc2ggd2hlbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgYSBjYWxsYmFjawotICBvYmplY3QgdHJpZ2dlcnMgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgotCi0tIElzc3VlICMxMjk1MDogRml4IHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9ycyBpbiBtdWx0aXByb2Nlc3NpbmcsIHVuZGVyCi0gIE9wZW5JbmRpYW5hL0lsbHVtb3MuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZXMgIzEzNDkxIGFuZCAjMTM5OTU6IEZpeCBtYW55IGVycm9ycyBpbiBzcWxpdGUzIGRvY3VtZW50YXRpb24uCi0gIEluaXRpYWwgcGF0Y2ggZm9yICMxMzQ5MSBieSBKb2hhbm5lcyBWb2dlbC4KLQotLSBJc3N1ZSAjMTM0MDI6IERvY3VtZW50IGFic29sdXRlbmVzcyBvZiBzeXMuZXhlY3V0YWJsZS4KLQotLSBJc3N1ZSAjMTM4ODM6IFBZVEhPTkNBU0VPSyBhbHNvIHVzZWQgb24gT1MgWCBhbmQgT1MvMi4KLQotLSBJc3N1ZSAjMTI5NDk6IERvY3VtZW50IHRoZSBrd29ubHlhcmdjb3VudCBhcmd1bWVudCBmb3IgdGhlIFB5Q29kZV9OZXcKLSAgQyBBUEkgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzIxMzQ6IFRoZSB0b2tlbml6ZSBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIGNsYXJpZmllZCB0byBleHBsYWluIHdoeQotICBhbGwgb3BlcmF0b3IgYW5kIGRlbGltaXRlciB0b2tlbnMgYXJlIHRyZWF0ZWQgYXMgdG9rZW4uT1AgdG9rZW5zLgotCi0tIElzc3VlICMxMzUxMzogRml4IGlvLklPQmFzZSBkb2N1bWVudGF0aW9uIHRvIGNvcnJlY3RseSBsaW5rIHRvIHRoZQotICBpby5JT0Jhc2UucmVhZGxpbmUgbWV0aG9kIGluc3RlYWQgb2YgdGhlIHJlYWRsaW5lIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTMyMzc6IFJlb3JnYW5pc2Ugc3VicHJvY2VzcyBkb2N1bWVudGF0aW9uIHRvIGVtcGhhc2lzZSBjb252ZW5pZW5jZQotICBmdW5jdGlvbnMgYW5kIHRoZSBtb3N0IGNvbW1vbmx5IG5lZWRlZCBhcmd1bWVudHMgdG8gUG9wZW4uCi0KLS0gSXNzdWUgIzEzMTQxOiBEZW1vbnN0cmF0ZSByZWNvbW1lbmRlZCBzdHlsZSBmb3Igc29ja2V0c2VydmVyIGV4YW1wbGVzLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDAzLVNlcC0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTIzMjY6IHN5cy5wbGF0Zm9ybSBpcyBub3cgYWx3YXlzICdsaW51eDInIG9uIExpbnV4LCBldmVuIGlmIFB5dGhvbgotICBpcyBjb21waWxlZCBvbiBMaW51eCAzLgotCi0tIEFjY2VwdCBieXRlcyBmb3IgdGhlIEFTVCBzdHJpbmcgdHlwZS4gVGhpcyBpcyB0ZW1wb3JhcnkgdW50aWwgYSBwcm9wZXIgZml4IGluCi0gIDMuMy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM4Mjg2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmQgc2Rpc3Qgd2lsbCBwcmludCBhIHdhcm5pbmcgbWVzc2FnZSBpbnN0ZWFkCi0gIG9mIGNyYXNoaW5nIHdoZW4gYW4gaW52YWxpZCBwYXRoIGlzIGdpdmVuIGluIHRoZSBtYW5pZmVzdCB0ZW1wbGF0ZS4KLQotLSBJc3N1ZSAjMTI4NDE6IHRhcmZpbGUgdW5uZWNlc3NhcmlseSBjaGVja2VkIHRoZSBleGlzdGVuY2Ugb2YgbnVtZXJpY2FsIHVzZXIKLSAgYW5kIGdyb3VwIGlkcyBvbiBleHRyYWN0aW9uLiBJZiBvbmUgb2YgdGhlbSBkaWQgbm90IGV4aXN0IHRoZSByZXNwZWN0aXZlIGlkCi0gIG9mIHRoZSBjdXJyZW50IHVzZXIgKGkuZS4gcm9vdCkgd2FzIHVzZWQgZm9yIHRoZSBmaWxlIGFuZCBvd25lcnNoaXAKLSAgaW5mb3JtYXRpb24gd2FzIGxvc3QuCi0KLS0gSXNzdWUgIzEwOTQ2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmRzIGJkaXN0X2R1bWIsIGJkaXN0X3dpbmluc3QgYW5kIGJkaXN0X21zaQotICBub3cgcmVzcGVjdCBhIC0tc2tpcC1idWlsZCBvcHRpb24gZ2l2ZW4gdG8gYmRpc3QuCi0KLS0gSXNzdWUgIzEyODM5OiBGaXggY3Jhc2ggaW4gemxpYiBtb2R1bGUgZHVlIHRvIHZlcnNpb24gbWlzbWF0Y2guCi0gIEZpeCBieSBSaWNoYXJkIE0uIFRldy4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzk2NTE6IEZpeCBhIGNyYXNoIHdoZW4gY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyKDApIHdhcyBwYXNzZWQgdG8KLSAgc29tZSBmdW5jdGlvbnMgbGlrZSBmaWxlLndyaXRlKCkuCi0KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMiByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTQtQXVnLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjczMjogSW4gbmFycm93IHVuaWNvZGUgYnVpbGRzLCBhbGxvdyBVbmljb2RlIGlkZW50aWZpZXJzIHdoaWNoIGZhbGwKLSAgb3V0c2lkZSB0aGUgQk1QLgotCi0tIElzc3VlICMxMTYwMzogRml4IGEgY3Jhc2ggd2hlbiBfX3N0cl9fIGlzIHJlYm91bmQgYXMgX19yZXByX18uICBQYXRjaCBieQotICBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzExMzIxOiBGaXggYSBjcmFzaCB3aXRoIG11bHRpcGxlIGltcG9ydHMgb2YgdGhlIF9waWNrbGUgbW9kdWxlIHdoZW4KLSAgZW1iZWRkaW5nIFB5dGhvbi4gIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KLQotLSBWZXJpZnkgdGhlIHR5cGVzIG9mIEFTVCBzdHJpbmdzIGFuZCBpZGVudGlmaWVycyBwcm92aWRlZCBieSB0aGUgdXNlciBiZWZvcmUKLSAgY29tcGlsaW5nIHRoZW0uCi0KLS0gSXNzdWUgIzEyNTc5OiBzdHIuZm9ybWF0X21hcCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIHVzZWQgb24gYQotICBmb3JtYXQgc3RyaW5nIHRoYXQgY29udGFpbnMgcG9zaXRpb25hbCBmaWVsZHMuIEluaXRpYWwgcGF0Y2ggYnkKLSAgSnVsaWFuIEJlcm1hbi4KLQotLSBJc3N1ZSAjMTE2Mjc6IEZpeCBzZWdmYXVsdCB3aGVuIF9fbmV3X18gb24gYSBleGNlcHRpb24gcmV0dXJucyBhCi0gIG5vbi1leGNlcHRpb24gY2xhc3MuCi0KLS0gSXNzdWUgIzEyMTQ5OiBVcGRhdGUgdGhlIG1ldGhvZCBjYWNoZSBhZnRlciBhIHR5cGUncyBkaWN0aW9uYXJ5IGdldHMKLSAgY2xlYXJlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuICBUaGlzIGZpeGVzIGEgc2VnZmF1bHQgd2hlbiBhbiBpbnN0YW5jZQotICBhbmQgaXRzIHR5cGUgZ2V0IGNhdWdodCBpbiBhIHJlZmVyZW5jZSBjeWNsZSwgYW5kIHRoZSBpbnN0YW5jZSdzCi0gIGRlYWxsb2NhdG9yIGNhbGxzIG9uZSBvZiB0aGUgbWV0aG9kcyBvbiB0aGUgdHlwZSAoZS5nLiB3aGVuIHN1YmNsYXNzaW5nCi0gIElPQmFzZSkuICBEaWFnbm9zaXMgYW5kIHBhdGNoIGJ5IERhdmlkZSBSaXp6by4KLQotLSBXaGVuIGEgZ2VuZXJhdG9yIHlpZWxkcywgZG8gbm90IHJldGFpbiB0aGUgY2FsbGVyJ3MgZXhjZXB0aW9uIHN0YXRlIG9uIHRoZQotICBnZW5lcmF0b3IuCi0KLS0gSXNzdWUgIzEyNDc1OiBQcmV2ZW50IGdlbmVyYXRvcnMgZnJvbSBsZWFraW5nIHRoZWlyIGV4Y2VwdGlvbiBzdGF0ZSBpbnRvIHRoZQotICBjYWxsZXIncyBmcmFtZSBhcyB0aGV5IHJldHVybiBmb3IgdGhlIGxhc3QgdGltZS4KLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjMTI2NDY6IEFkZCBhbiAnZW9mJyBhdHRyaWJ1dGUgdG8gemxpYi5EZWNvbXByZXNzLCB0byBtYWtlIGl0IGVhc2llciB0bworICBkZXRlY3QgdHJ1bmNhdGVkIGlucHV0IHN0cmVhbXMuCiAKIC0gSXNzdWUgIzExNTEzOiBGaXggZXhjZXB0aW9uIGhhbmRsaW5nIGBgdGFyZmlsZS5UYXJGaWxlLmd6b3BlbigpYGAgd2hlbgogICB0aGUgZmlsZSBjYW5ub3QgYmUgb3BlbmVkLgpAQCAtMTI1MSwxOCArMjc4Nyw0MiBAQAogLSBJc3N1ZSAjMTI1NDA6IFByZXZlbnQgem9tYmllIElETEUgcHJvY2Vzc2VzIG9uIFdpbmRvd3MgZHVlIHRvIGNoYW5nZXMKICAgaW4gb3Mua2lsbCgpLgogCistIEFkZCBzdXBwb3J0IGZvciB1bmFyeSBwbHVzIGFuZCB1bmFyeSBtaW51cyB0byBjb2xsZWN0aW9ucy5Db3VudGVyKCkuCisgIElzc3VlICMxMzEyMTogQWxzbyBhZGQgc3VwcG9ydCBmb3IgaW5wbGFjZSBtYXRoIG9wZXJhdG9ycy4KKwogLSBJc3N1ZSAjMTI2ODM6IHVybHBhcnNlIHVwZGF0ZWQgdG8gaW5jbHVkZSBzdm4gYXMgc2NoZW1lcyB0aGF0IHVzZXMgcmVsYXRpdmUKICAgcGF0aHMuIChzdm4gZnJvbSAxLjUgb253YXJkcyBzdXBwb3J0IHJlbGF0aXZlIHBhdGgpLgogCistIElzc3VlICMxMjY1NTogRXhwb3NlIGZ1bmN0aW9ucyBmcm9tIHNjaGVkLmggaW4gdGhlIG9zIG1vZHVsZTogc2NoZWRfeWllbGQoKSwKKyAgc2NoZWRfc2V0c2NoZWR1bGVyKCksIHNjaGVkX2dldHNjaGVkdWxlcigpLCBzY2hlZF9zZXRwYXJhbSgpLAorICBzY2hlZF9nZXRfbWluX3ByaW9yaXR5KCksIHNjaGVkX2dldF9tYXhfcHJpb3JpdHkoKSwgc2NoZWRfcnJfZ2V0X2ludGVydmFsKCksCisgIHNjaGVkX2dldGFmZmluaXR5KCksIHNjaGVkX3NldGFmZmluaXR5KCkuCisKKy0gQWRkIFRocmVhZEVycm9yIHRvIHRocmVhZGluZy5fX2FsbF9fLgorCiAtIElzc3VlcyAjMTExMDQsICM4Njg4OiBGaXggdGhlIGJlaGF2aW9yIG9mIGRpc3R1dGlscycgc2Rpc3QgY29tbWFuZCB3aXRoCiAgIG1hbnVhbGx5LW1haW50YWluZWQgTUFOSUZFU1QgZmlsZXMuCiAKKy0gSXNzdWUgIzExMjgxOiBzbXRwbGliLlNUTVAgZ2V0cyBzb3VyY2VfYWRkcmVzcyBwYXJhbWV0ZXIsIHdoaWNoIGFkZHMgdGhlCisgIGFiaWxpdHkgdG8gYmluZCB0byBzcGVjaWZpYyBzb3VyY2UgYWRkcmVzcyBvbiBhIG1hY2hpbmUgd2l0aCBtdWx0aXBsZQorICBpbnRlcmZhY2VzLiBQYXRjaCBieSBQYXVsbyBTY2FyZGluZS4KKwogLSBJc3N1ZSAjMTI0NjQ6IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeS5jbGVhbnVwKCkgc2hvdWxkIG5vdCBmb2xsb3cKICAgc3ltbGlua3M6IGZpeCBpdC4gUGF0Y2ggYnkgUGV0cmkgTGVodGluZW4uCiAKIC0gSXNzdWUgIzg4ODc6ICJweWRvYyBzb21lYnVpbHRpbi5zb21lbWV0aG9kIiAob3IgaGVscCgnc29tZWJ1aWx0aW4uc29tZW1ldGhvZCcpCiAgIGluIFB5dGhvbiBjb2RlKSBub3cgZmluZHMgdGhlIGRvYyBvZiB0aGUgbWV0aG9kLgogCistIElzc3VlICMxMDk2ODogUmVtb3ZlIGluZGlyZWN0aW9uIGluIHRocmVhZGluZy4gIFRoZSBwdWJsaWMgbmFtZXMgKFRocmVhZCwKKyAgQ29uZGl0aW9uLCBldGMuKSB1c2VkIHRvIGJlIGZhY3RvcnkgZnVuY3Rpb25zIHJldHVybmluZyBpbnN0YW5jZXMgb2YgaGlkZGVuCisgIGNsYXNzZXMgKF9UaHJlYWQsIF9Db25kaXRpb24sIGV0Yy4pLCBiZWNhdXNlIChpZiBHdWlkbyByZWNhbGxzIGNvcnJlY3RseSkgdGhpcworICBjb2RlIHByZS1kYXRlcyB0aGUgYWJpbGl0eSB0byBzdWJjbGFzcyBleHRlbnNpb24gdHlwZXMuICBJdCBpcyBub3cgcG9zc2libGUgdG8KKyAgaW5oZXJpdCBmcm9tIFRocmVhZCBhbmQgb3RoZXIgY2xhc3Nlcywgd2l0aG91dCBoYXZpbmcgdG8gaW1wb3J0IHRoZSBwcml2YXRlCisgIHVuZGVyc2NvcmVkIG5hbWVzIGxpa2UgbXVsdGlwcm9jZXNzaW5nIGRpZC4KKworLSBJc3N1ZSAjOTcyMzogQWRkIHNobGV4LnF1b3RlIGZ1bmN0aW9ucywgdG8gZXNjYXBlIGZpbGVuYW1lcyBhbmQgY29tbWFuZAorICBsaW5lcy4KKwogLSBJc3N1ZSAjMTI2MDM6IEZpeCBweWRvYy5zeW5vcHNpcygpIG9uIGZpbGVzIHdpdGggbm9uLW5lZ2F0aXZlIHN0X210aW1lLgogCiAtIElzc3VlICMxMjUxNDogVXNlIHRyeS9maW5hbGx5IHRvIGFzc3VyZSB0aGUgdGltZWl0IG1vZHVsZSByZXN0b3JlcyBnYXJiYWdlCkBAIC0xMjc3LDE5ICsyODM3LDM1IEBACiAtIElzc3VlICMxMjU3NjogRml4IHVybG9wZW4gYmVoYXZpb3Igb24gc2l0ZXMgd2hpY2ggZG8gbm90IHNlbmQgKG9yIG9iZnVzY2F0ZXMpCiAgIENvbm5lY3Rpb246Y2xvc2UgaGVhZGVyLgogCistIElzc3VlICMxMjEwMjogRG9jdW1lbnQgdGhhdCBidWZmZXJlZCBmaWxlcyBtdXN0IGJlIGZsdXNoZWQgYmVmb3JlIGJlaW5nIHVzZWQKKyAgd2l0aCBtbWFwLiBQYXRjaCBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgorCistIElzc3VlICMxMjU2MDogQnVpbGQgbGlicHl0aG9uLnNvIG9uIE9wZW5CU0QuIFBhdGNoIGJ5IFN0ZWZhbiBTcGVybGluZy4KKwogLSBJc3N1ZSAjMTgxMzogRml4IGNvZGVjIGxvb2t1cCB1bmRlciBUdXJraXNoIGxvY2FsZXMuCiAKIC0gSXNzdWUgIzEyNTkxOiBJbXByb3ZlIHN1cHBvcnQgb2YgInVuaXZlcnNhbCBuZXdsaW5lcyIgaW4gdGhlIHN1YnByb2Nlc3MKICAgbW9kdWxlOiB0aGUgcGlwZWQgc3RyZWFtcyBjYW4gbm93IGJlIHByb3Blcmx5IHJlYWQgZnJvbSBvciB3cml0dGVuIHRvLgogCiAtIElzc3VlICMxMjU5MTogQWxsb3cgaW8uVGV4dElPV3JhcHBlciB0byB3b3JrIHdpdGggcmF3IElPIG9iamVjdHMgKHdpdGhvdXQKLSAgYSByZWFkMSgpIG1ldGhvZCksIGFuZCBhZGQgYW4gdW5kb2N1bWVudGVkICp3cml0ZV90aHJvdWdoKiBwYXJhbWV0ZXIgdG8KLSAgbWFuZGF0ZSB1bmJ1ZmZlcmVkIHdyaXRlcy4KLQotLSBJc3N1ZSAjOTYxMSwgIzkwMTU6IEZpbGVJTy5yZWFkKCkgY2xhbXBzIHRoZSBsZW5ndGggdG8gSU5UX01BWCBvbiBXaW5kb3dzLgorICBhIHJlYWQxKCkgbWV0aG9kKSwgYW5kIGFkZCBhICp3cml0ZV90aHJvdWdoKiBwYXJhbWV0ZXIgdG8gbWFuZGF0ZQorICB1bmJ1ZmZlcmVkIHdyaXRlcy4KIAogLSBJc3N1ZSAjMTA4ODM6IEZpeCBzb2NrZXQgbGVha3MgaW4gdXJsbGliLnJlcXVlc3Qgd2hlbiB1c2luZyBGVFAuCiAKKy0gSXNzdWUgIzEyNTkyOiBNYWtlIFB5dGhvbiBidWlsZCBvbiBPcGVuQlNEIDUgKGFuZCBmdXR1cmUgbWFqb3IgcmVsZWFzZXMpLgorCistIElzc3VlICMxMjM3MjogUE9TSVggc2VtYXBob3JlcyBhcmUgYnJva2VuIG9uIEFJWDogZG9uJ3QgdXNlIHRoZW0uCisKKy0gSXNzdWUgIzEyNTUxOiBQcm92aWRlIGEgZ2V0X2NoYW5uZWxfYmluZGluZygpIG1ldGhvZCBvbiBTU0wgc29ja2V0cyBzbyBhcworICB0byBnZXQgY2hhbm5lbCBiaW5kaW5nIGRhdGEgZm9yIHRoZSBjdXJyZW50IFNTTCBzZXNzaW9uIChvbmx5IHRoZQorICAidGxzLXVuaXF1ZSIgY2hhbm5lbCBiaW5kaW5nIGlzIGltcGxlbWVudGVkKS4gIFRoaXMgYWxsb3dzIHRoZSBpbXBsZW1lbnRhdGlvbgorICBvZiBjZXJ0YWluIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMgc3VjaCBhcyBTQ1JBTS1TSEEtMS1QTFVTLiAgUGF0Y2ggYnkKKyAgSmFjZWsgS29uaWVjem55LgorCistIElzc3VlICM2NjUxOTQ6IGVtYWlsLnV0aWxzIG5vdyBoYXMgZm9ybWF0X2RhdGV0aW1lIGFuZCBwYXJzZWRhdGVfdG9fZGF0ZXRpbWUKKyAgZnVuY3Rpb25zLCBhbGxvd2luZyBmb3Igcm91bmQgdHJpcHBpbmcgb2YgUkZDMjgyMiBmb3JtYXQgZGF0ZXMuCisKIC0gSXNzdWUgIzEyNTcxOiBBZGQgYSBwbGF0LWxpbnV4MyBkaXJlY3RvcnkgbWlycm9yaW5nIHRoZSBwbGF0LWxpbnV4MgogICBkaXJlY3RvcnksIHNvIHRoYXQgImltcG9ydCBETEZDTiIgYW5kIG90aGVyIHNpbWlsYXIgaW1wb3J0cyB3b3JrIG9uCiAgIExpbnV4IDMuMC4KQEAgLTEyOTcsMTg0ICsyODczLDkxIEBACiAtIElzc3VlICM3NDg0OiBzbXRwbGliIG5vIGxvbmdlciBwdXRzIDw+IGFyb3VuZCBhZGRyZXNzZXMgaW4gVlJGWSBhbmQgRVhQTgogICBjb21tYW5kczsgdGhleSBhcmVuJ3QgcmVxdWlyZWQgYW5kIGluIGZhY3QgcG9zdGZpeCBkb2Vzbid0IHN1cHBvcnQgdGhhdCBmb3JtLgogCi0tIENsb3NlIHRoZSBjYWxsIHF1ZXVlIGluIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yIHdoZW4KLSAgc2h1dGRvd24oKSBpcyBjYWxsZWQsIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHRvIGtpY2sgaW4uCistIElzc3VlICMxMjI3MzogUmVtb3ZlIGFzdC5fX3ZlcnNpb25fXy4gQVNUIGNoYW5nZXMgY2FuIGJlIGFjY291bnRlZCBmb3IgYnkKKyAgY2hlY2tpbmcgc3lzLnZlcnNpb25faW5mbyBvciBzeXMuX21lcmN1cmlhbC4KKworLSBTaWxlbmNlIHNwdXJpb3VzICJicm9rZW4gcGlwZSIgdHJhY2ViYWNrcyB3aGVuIHNodXR0aW5nIGRvd24gYQorICBQcm9jZXNzUG9vbEV4ZWN1dG9yLgorCistIEZpeCBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MgaW4gY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3IKKyAgYnkgam9pbmluZyBhbGwgcXVldWVzIGFuZCBwcm9jZXNzZXMgd2hlbiBzaHV0ZG93bigpIGlzIGNhbGxlZC4KKworLSBJc3N1ZSAjMTE2MDM6IEZpeCBhIGNyYXNoIHdoZW4gX19zdHJfXyBpcyByZWJvdW5kIGFzIF9fcmVwcl9fLiAgUGF0Y2ggYnkKKyAgQW5kcmVhcyBTdMO8aHJrLgorCistIElzc3VlICMxMTMyMTogRml4IGEgY3Jhc2ggd2l0aCBtdWx0aXBsZSBpbXBvcnRzIG9mIHRoZSBfcGlja2xlIG1vZHVsZSB3aGVuCisgIGVtYmVkZGluZyBQeXRob24uICBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzY3NTU6IEFkZCBnZXRfd2NoKCkgbWV0aG9kIHRvIGN1cnNlcy53aW5kb3cgY2xhc3MuIFBhdGNoIGJ5IEnDsWlnbworICBTZXJuYS4KKworLSBBZGQgY2dpLmNsb3NlbG9nKCkgZnVuY3Rpb24gdG8gY2xvc2UgdGhlIGxvZyBmaWxlLgogCiAtIElzc3VlICMxMjUwMjogYXN5bmNvcmU6IGZpeCBwb2xsaW5nIGxvb3Agd2l0aCBBRl9VTklYIHNvY2tldHMuCiAKLS0gSXNzdWUgIzQzNzY6IGN0eXBlcyBub3cgc3VwcG9ydHMgbmVzdGVkIHN0cnVjdHVyZXMgd2l0aCBhbiBlbmRpYW5uZXNzCi0gIGRpZmZlcmVudCB0aGFuIHRoYXQgb2YgdGhlIHBhcmVudCBzdHJ1Y3R1cmUuICBQYXRjaCBieSBWbGFkIFJpc2N1dGlhLgorLSBJc3N1ZSAjNDM3NjogY3R5cGVzIG5vdyBzdXBwb3J0cyBuZXN0ZWQgc3RydWN0dXJlcyBpbiBhIGVuZGlhbiBkaWZmZXJlbnQgdGhhbgorICB0aGUgcGFyZW50IHN0cnVjdHVyZS4gUGF0Y2ggYnkgVmxhZCBSaXNjdXRpYS4KIAogLSBSYWlzZSBWYWx1ZUVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlIF9DSFVOS19TSVpFIGF0dHJpYnV0ZSBvZiBhCiAgIFRleHRJT1dyYXBwZXIgdG8gYSBodWdlIHZhbHVlLCBub3QgVHlwZUVycm9yLgogCi0tIElzc3VlICMxMjQ5Mzogc3VicHJvY2VzczogUG9wZW4uY29tbXVuaWNhdGUoKSBub3cgYWxzbyBoYW5kbGVzIEVJTlRSIGVycm9ycwotICBpZiB0aGUgcHJvY2VzcyBoYXMgb25seSBvbmUgcGlwZS4KKy0gSXNzdWUgIzEyNTA0OiBDbG9zZSBmaWxlIGhhbmRsZXMgaW4gYSB0aW1lbHkgbWFubmVyIGluIHBhY2thZ2luZy5kYXRhYmFzZS4KKyAgVGhpcyBmaXhlcyBhIGJ1ZyB3aXRoIHRoZSByZW1vdmUgKHVuaW5zdGFsbCkgZmVhdHVyZSBvbiBXaW5kb3dzLgorCistIElzc3VlcyAjMTIxNjkgYW5kICMxMDUxMDogRmFjdG9yIG91dCBjb2RlIHVzZWQgYnkgdmFyaW91cyBwYWNrYWdpbmcgY29tbWFuZHMKKyAgdG8gbWFrZSBIVFRQIFBPU1QgcmVxdWVzdHMsIGFuZCBtYWtlIHN1cmUgaXQgdXNlcyBDUkxGLgorCistIElzc3VlICMxMjAxNjogTXVsdGlieXRlIENKSyBkZWNvZGVycyBub3cgcmVzeW5jaHJvbml6ZSBmYXN0ZXIuIFRoZXkgb25seQorICBpZ25vcmUgdGhlIGZpcnN0IGJ5dGUgb2YgYW4gaW52YWxpZCBieXRlIHNlcXVlbmNlLiBGb3IgZXhhbXBsZSwKKyAgYidceGZmXG4nLmRlY29kZSgnZ2IyMzEyJywgJ3JlcGxhY2UnKSBnaXZlcyAnXHVmZmZkXG4nIGluc3RlYWQgb2YgJ1x1ZmZmZCcuCisKKy0gSXNzdWUgIzEyNDU5OiB0aW1lLnNsZWVwKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdGhlIHNsZWVwIGxlbmd0aCBpcworICBuZWdhdGl2ZSwgaW5zdGVhZCBvZiBhbiBpbmZpbml0ZSBzbGVlcCBvbiBXaW5kb3dzIG9yIHJhaXNpbmcgYW4gSU9FcnJvciBvbgorICBMaW51eCBmb3IgZXhhbXBsZSwgdG8gaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIgb24gYWxsIHBsYXRmb3Jtcy4KIAogLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jOiBodG1sX2dldGZpbGUoKSBub3cgdXNlcyB0b2tlbml6ZS5vcGVuKCkgdG8gc3VwcG9ydAotICBQeXRob24gbW9kdWxlcyB1c2luZyBhIGVuY29kaW5nIGRpZmZlcmVudCB0aGFuIFVURi04IChyZWFkaW5nIHRoZSBjb2RpbmcKLSAgY29va2llIG9mIHRoZSBtb2R1bGUpLgorICBQeXRob24gc2NyaXB0cyB1c2luZyBhIGVuY29kaW5nIGRpZmZlcmVudCB0aGFuIFVURi04IChyZWFkIHRoZSBjb2RpbmcgY29va2llCisgIG9mIHRoZSBzY3JpcHQpLgogCi0tIElzc3VlICMxMjQ1MTogcHlkb2M6IGltcG9ydGZpbGUoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBtb2R1bGUgaW4gYmluYXJ5IG1vZGUsCi0gIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTI0NTE6IHJ1bnB5OiBydW5fcGF0aCgpIG5vdyBvcGVucyB0aGUgUHl0aG9uIG1vZHVsZSBpbiBiaW5hcnkgbW9kZSwKLSAgaW5zdGVhZCBvZiB0ZXh0IG1vZGUgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8gc3VwcG9ydCBvdGhlciBlbmNvZGluZ3MKLSAgdGhhbiBVVEYtOCAobW9kdWxlcyB1c2luZyB0aGUgY29kaW5nIGNvb2tpZSkuCi0KLS0gSXNzdWUgIzEyNDUxOiB4bWwuZG9tLnB1bGxkb206IHBhcnNlKCkgbm93IG9wZW5zIGZpbGVzIGluIGJpbmFyeSBtb2RlIGluc3RlYWQKLSAgb2YgdGhlIHRleHQgbW9kZSAodXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZykgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgotCi0tIElzc3VlICMxNDQ0MzogRW5zdXJlIHRoYXQgLnB5IGZpbGVzIGFyZSBieXRlLWNvbXBpbGVkIHdpdGggdGhlIGNvcnJlY3QgUHl0aG9uCi0gIGV4ZWN1dGFibGUgd2l0aGluIGJkaXN0X3JwbSBldmVuIG9uIG9sZGVyIHZlcnNpb25zIG9mIFJQTQotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTI3NjQ6IEZpeCBhIGNyYXNoIGluIGN0eXBlcyB3aGVuIHRoZSBuYW1lIG9mIGEgU3RydWN0dXJlIGZpZWxkIGlzIG5vdAotICBhIHN0cmluZy4KLQotLSBJc3N1ZSAjMTEyNDE6IHN1YmNsYXNzZXMgb2YgY3R5cGVzLkFycmF5IGNhbiBub3cgYmUgc3ViY2xhc3NlZC4KLQotLSBJc3N1ZSAjMTAzMDk6IERlZmluZSBfR05VX1NPVVJDRSBzbyB0aGF0IG1yZW1hcCgpIGdldHMgdGhlIHByb3BlcgotICBzaWduYXR1cmUuICBXaXRob3V0IHRoaXMsIGFyY2hpdGVjdHVyZXMgd2hlcmUgc2l6ZW9mIHZvaWQqICE9IHNpemVvZiBpbnQgYXJlCi0gIGJyb2tlbi4gIFBhdGNoIGdpdmVuIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCi0KLUMtQVBJCi0tLS0tLQotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTI1NjA6IEJ1aWxkIGxpYnB5dGhvbi5zbyBvbiBPcGVuQlNELiAgUGF0Y2ggYnkgU3RlZmFuIFNwZXJsaW5nLgotCi0tIElzc3VlICMxMjU5MjogTWFrZSBQeXRob24gYnVpbGQgb24gT3BlbkJTRCA1IChhbmQgZnV0dXJlIG1ham9yIHJlbGVhc2VzKS4KLQotLSBJc3N1ZSAjMTIzNzI6IFBPU0lYIHNlbWFwaG9yZXMgYXJlIGJyb2tlbiBvbiBBSVg6IGRvbid0IHVzZSB0aGVtLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTA2Mzk6IHJlaW5kZW50LnB5IG5vIGxvbmdlciBjb252ZXJ0cyBuZXdsaW5lcyBhbmQgd2lsbCByYWlzZQotICBhbiBlcnJvciBpZiBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgYSBmaWxlIHdpdGggbWl4ZWQgbmV3bGluZXMuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxMjMzMTogVGhlIHRlc3Qgc3VpdGUgZm9yIGxpYjJ0bzMgY2FuIG5vdyBydW4gZnJvbSBhbiBpbnN0YWxsZWQKLSAgUHl0aG9uLgotCi0tIElzc3VlICMxMjYyNjogSW4gcmVncnRlc3QsIGFsbG93IHRvIGZpbHRlciB0ZXN0cyB1c2luZyBhIGdsb2IgZmlsdGVyCi0gIHdpdGggdGhlIGBgLW1gYCAob3IgYGAtLW1hdGNoYGApIG9wdGlvbi4gIFRoaXMgd29ya3Mgd2l0aCBhbGwgdGVzdCBjYXNlcwotICB1c2luZyB0aGUgdW5pdHRlc3QgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCi0gIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIzEyNjI0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gZmFpbCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSB3aGVuCi0gIHJ1bm5pbmcgaW4gdmVyYm9zZSBtb2RlIChgYC12YGAgb3IgYGAtV2BgKSwgYnkgdXNpbmcgdGhlIGBgLS1mYWlsZmFzdGBgCi0gIChvciBgYC1HYGApIG9wdGlvbiB0byByZWdydGVzdC4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcwotICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgotCi0tIElzc3VlICMxMjU4NzogQ29ycmVjdCBmYXVsdHkgdGVzdCBmaWxlIGFuZCByZWZlcmVuY2UgaW4gdGVzdF90b2tlbml6ZS4KLSAgKFBhdGNoIGJ5IFJvYmVydCBYaWFvKQotCi0tIFRyeSBoYXJkZXIgdG8gcmVhcCBkYW5nbGluZyB0aHJlYWRzIGluIHRlc3Quc3VwcG9ydC5yZWFwX3RocmVhZHMoKS4KLQotLSBJc3N1ZSAjMTI1NzM6IEFkZCByZXNvdXJjZSBjaGVja3MgZm9yIGRhbmdsaW5nIFRocmVhZCBhbmQgUHJvY2VzcyBvYmplY3RzLgotCi0tIElzc3VlICMxMjU0OTogQ29ycmVjdCB0ZXN0X3BsYXRmb3JtIHRvIG5vdCBmYWlsIHdoZW4gT1MgWCByZXR1cm5zICd4ODZfNjQnCi0gIGFzIHRoZSBwcm9jZXNzb3IgdHlwZSBvbiBzb21lIE1hYyBzeXN0ZW1zLgotCi0tIEF2b2lkIGZhaWxpbmcgaW4gdGVzdF9yb2JvdHBhcnNlciB3aGVuIG11ZWJsZXNtb3JhbGVkYS5jb20gaXMgZmxha3kgYW5kCi0gIGFuIG92ZXJ6ZWFsb3VzIEROUyBzZXJ2aWNlIChlLmcuIE9wZW5ETlMpIHJlZGlyZWN0cyB0byBhIHBsYWNlaG9sZGVyCi0gIFdlYiBzaXRlLgotCi0tIElzc3VlICMxMjQ0MDogV2hlbiB0ZXN0aW5nIHdoZXRoZXIgc29tZSBiaXRzIGluIFNTTENvbnRleHQub3B0aW9ucyBjYW4gYmUKLSAgcmVzZXQsIGNoZWNrIHRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuU1NMIGhlYWRlcnMgUHl0aG9uIHdhcyBjb21waWxlZCBhZ2FpbnN0LAotICByYXRoZXIgdGhhbiB0aGUgcnVudGltZSB2ZXJzaW9uIG9mIHRoZSBPcGVuU1NMIGxpYnJhcnkuCi0KLS0gSXNzdWUgIzEyNDk3OiBJbnN0YWxsIHRlc3QvZGF0YSB0byBwcmV2ZW50IGZhaWx1cmVzIG9mIHRoZSB2YXJpb3VzIGNvZGVjbWFwcwotICB0ZXN0cy4KLQotLSBJc3N1ZSAjMTI0OTY6IEluc3RhbGwgdGVzdC9jYXBhdGggZGlyZWN0b3J5IHRvIHByZXZlbnQgdGVzdF9jb25uZWN0X2NhcGF0aAotICB0ZXN0Y2FzZSBmYWlsdXJlIGluIHRlc3Rfc3NsLgotCi0tIElzc3VlICMxMjQ2OTogUnVuICJ3YWtldXAiIHNpZ25hbCB0ZXN0cyBpbiBzdWJwcm9jZXNzIHRvIHJ1biB0aGUgdGVzdCBpbiBhCi0gIGZyZXNoIHByb2Nlc3Mgd2l0aCBvbmx5IG9uZSB0aHJlYWQgYW5kIHRvIG5vdCBjaGFuZ2Ugc2lnbmFsIGhhbmRsaW5nIG9mIHRoZQotICBwYXJlbnQgcHJvY2Vzcy4KLQotLSBJc3N1ZSAjODcxNjogQXZvaWQgY3Jhc2hlcyBjYXVzZWQgYnkgQXF1YSBUayBvbiBPU1ggd2hlbiBhdHRlbXB0aW5nIHRvIHJ1bgotICB0ZXN0X3RrIG9yIHRlc3RfdHRrX2d1aW9ubHkgdW5kZXIgYSB1c2VybmFtZSB0aGF0IGlzIG5vdCBjdXJyZW50bHkgbG9nZ2VkCi0gIGluIHRvIHRoZSBjb25zb2xlIHdpbmRvd3NlcnZlciAoYXMgbWF5IGJlIHRoZSBjYXNlIHVuZGVyIGJ1aWxkYm90IG9yIHNzaCkuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTAtSnVsLTIwMTEqCi0KLUxpYnJhcnkKLS0tLS0tLS0KKy0gSXNzdWUgIzEyNDkzOiBzdWJwcm9jZXNzOiBQb3Blbi5jb21tdW5pY2F0ZSgpIG5vdyBhbHNvIGhhbmRsZXMgRUlOVFIgZXJyb3JzCisgIGlmIHRoZSBwcm9jZXNzIGhhcyBvbmx5IG9uZSBwaXBlLgogCiAtIElzc3VlICMxMjQ2Nzogd2FybmluZ3M6IGZpeCBhIHJhY2UgY29uZGl0aW9uIGlmIGEgd2FybmluZyBpcyBlbWl0dGVkIGF0CiAgIHNodXRkb3duLCBpZiBnbG9iYWxzKClbJ19fZmlsZV9fJ10gaXMgTm9uZS4KIAotVGVzdHMKLS0tLS0tCistIElzc3VlICMxMjQ1MTogcHlkb2M6IGltcG9ydGZpbGUoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBzY3JpcHQgaW4gYmluYXJ5IG1vZGUsCisgIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KIAotLSBTa2lwIG5ldHdvcmsgdGVzdHMgd2hlbiBnZXRhZGRyaW5mbygpIHJldHVybnMgRUFJX0FHQUlOLCBtZWFuaW5nIGEgdGVtcG9yYXJ5Ci0gIGZhaWx1cmUgaW4gbmFtZSByZXNvbHV0aW9uLgorLSBJc3N1ZSAjMTI0NTE6IHJ1bnB5OiBydW5fcGF0aCgpIG5vdyBvcGVucyB0aGUgUHl0aG9uIHNjcmlwdCBpbiBiaW5hcnkgbW9kZSwKKyAgaW5zdGVhZCBvZiB0ZXh0IG1vZGUgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8gc3VwcG9ydCBvdGhlciBlbmNvZGluZ3MKKyAgdGhhbiBVVEYtOCAoc2NyaXB0cyB1c2luZyB0aGUgY29kaW5nIGNvb2tpZSkuCiAKLS0gSXNzdWUgIzExODEyOiBTb2x2ZSB0cmFuc2llbnQgc29ja2V0IGZhaWx1cmUgdG8gY29ubmVjdCB0byAnbG9jYWxob3N0JwotICBpbiB0ZXN0X3RlbG5ldGxpYi5weS4KLQotLSBTb2x2ZWQgYSBwb3RlbnRpYWwgZGVhZGxvY2sgaW4gdGVzdF90ZWxuZXRsaWIucHkuIFJlbGF0ZWQgdG8gaXNzdWUgIzExODEyLgotCi0tIEF2b2lkIGZhaWxpbmcgaW4gdGVzdF91cmxsaWJuZXQudGVzdF9iYWRfYWRkcmVzcyB3aGVuIHNvbWUgb3ZlcnplYWxvdXMKLSAgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVzb2x2ZXMgYSBub24tZXhpc3RlbnQgZG9tYWluIG5hbWUuICBUaGUgdGVzdAotICBpcyBub3cgc2tpcHBlZCBpbnN0ZWFkLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4xIHJlbGVhc2UgY2FuZGlkYXRlIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwMy1KdWwtMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyMjkxOiBZb3UgY2FuIG5vdyBsb2FkIG11bHRpcGxlIG1hcnNoYWxsZWQgb2JqZWN0cyBmcm9tIGEgc3RyZWFtLCB3aXRoCi0gIG90aGVyIGRhdGEgaW50ZXJsZWF2ZWQgYmV0d2VlbiBtYXJzaGFsbGVkIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEyMDg0OiBvcy5zdGF0IG9uIFdpbmRvd3Mgbm93IHdvcmtzIHByb3Blcmx5IHdpdGggcmVsYXRpdmUgc3ltYm9saWMKLSAgbGlua3Mgd2hlbiBjYWxsZWQgZnJvbSBhbnkgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxMTk1OiBteV9mZ2V0cygpIG5vdyBhbHdheXMgY2xlYXJzIGVycm9ycyBiZWZvcmUgY2FsbGluZyBmZ2V0cygpLiBGaXgKLSAgdGhlIGZvbGxvd2luZyBjYXNlOiBzeXMuc3RkaW4ucmVhZCgpIHN0b3BwZWQgd2l0aCBDVFJMK2QgKGVuZCBvZiBmaWxlKSwKLSAgcmF3X2lucHV0KCkgaW50ZXJydXB0ZWQgYnkgQ1RSTCtjLgotCi0tIElzc3VlICM5NjcwOiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbiBNYWMgT1MgWAotICBhbmQgRnJlZUJTRCB0byByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgYSBjcmFzaCBpbnN0ZWFkIG9mIGEgIm1heGltdW0gcmVjdXJzaW9uCi0gIGRlcHRoIiBSdW50aW1lRXJyb3IgZXhjZXB0aW9uIChwYXRjaCBieSBSb25hbGQgT3Vzc29yZW4pLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCistIElzc3VlICMxMjQ1MTogeG1sLmRvbS5wdWxsZG9tOiBwYXJzZSgpIG5vdyBvcGVucyBmaWxlcyBpbiBiaW5hcnkgbW9kZSBpbnN0ZWFkCisgIG9mIHRoZSB0ZXh0IG1vZGUgKHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcpIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KIAogLSBJc3N1ZSAjMTIxNDc6IEFkanVzdCB0aGUgbmV3LWluLTMuMiBzbXRwbGliLnNlbmRfbWVzc2FnZSBtZXRob2QgZm9yIGJldHRlcgotICBjb25mb3JtYW5jZSB0byB0aGUgUkZDczogY29ycmVjdGx5IGhhbmRsZSBTZW5kZXIgYW5kIFJlc2VudCBoZWFkZXJzLgorICBjb25mb3JtYW5jZSB0byB0aGUgUkZDczogIGNvcnJlY3RseSBoYW5kbGUgU2VuZGVyIGFuZCBSZXNlbnQtIGhlYWRlcnMuCiAKIC0gSXNzdWUgIzEyMzUyOiBGaXggYSBkZWFkbG9jayBpbiBtdWx0aXByb2Nlc3NpbmcuSGVhcCB3aGVuIGEgYmxvY2sgaXMgZnJlZWQgYnkKICAgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHdoaWxlIHRoZSBIZWFwIGxvY2sgaXMgaGVsZC4KIAorLSBJc3N1ZSAjMTI0NjI6IHRpbWUuc2xlZXAoKSBub3cgY2FsbHMgaW1tZWRpYXRseSB0aGUgKFB5dGhvbikgc2lnbmFsIGhhbmRsZXIKKyAgaWYgaXQgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGluc3RlYWQgb2YgaGF2aW5nIHRvIHdhaXQgdW50aWwgdGhlIG5leHQKKyAgaW5zdHJ1Y3Rpb24uCisKKy0gSXNzdWUgIzEyNDQyOiBuZXcgc2h1dGlsLmRpc2tfdXNhZ2UgZnVuY3Rpb24sIHByb3ZpZGluZyB0b3RhbCwgdXNlZCBhbmQgZnJlZQorICBkaXNrIHNwYWNlIHN0YXRpc3RpY3MuCisKIC0gSXNzdWUgIzEyNDUxOiBUaGUgWEluY2x1ZGUgZGVmYXVsdCBsb2FkZXIgb2YgeG1sLmV0cmVlIG5vdyBkZWNvZGVzIGZpbGVzIGZyb20KICAgVVRGLTggaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nIGlmIHRoZSBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkLiBJdCBub3cKLSAgYWxzbyBvcGVucyBYTUwgZmlsZXMgZm9yIHRoZSBwYXJzZXIgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZCBvZiB0aGUgdGV4dCBtb2RlIHRvCi0gIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTI0NTE6IGRvY3Rlc3QuZGVidWdfc2NyaXB0KCkgZG9lc24ndCBjcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZSBhbnltb3JlCisgIGFsc28gb3BlbnMgWE1MIGZpbGVzIGZvciB0aGUgcGFyc2VyIGluIGJpbmFyeSBtb2RlIGluc3RlYWQgb2YgdGhlIHRleHQgbW9kZQogICB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCiAKLS0gSXNzdWUgIzEyNDUxOiBweWRvYy5zeW5vcHNpcygpIG5vdyByZWFkcyB0aGUgZW5jb2RpbmcgY29va2llIGlmIGF2YWlsYWJsZSwgdG8KLSAgcmVhZCB0aGUgUHl0aG9uIG1vZHVsZSBmcm9tIHRoZSByaWdodCBlbmNvZGluZy4KKy0gSXNzdWUgIzEyNDUxOiBkb2N0ZXN0LmRlYnVnX3NjcmlwdCgpIGRvZXNuJ3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUKKyAgYW55bW9yZSB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCisKKy0gSXNzdWUgIzEyNDUxOiBweWRvYy5zeW5vcHNpcygpIG5vdyByZWFkcyB0aGUgZW5jb2RpbmcgY29va2llIGlmIGF2YWlsYWJsZSwKKyAgdG8gcmVhZCB0aGUgUHl0aG9uIHNjcmlwdCBmcm9tIHRoZSByaWdodCBlbmNvZGluZy4KIAogLSBJc3N1ZSAjMTI0NTE6IGRpc3R1dGlscyBub3cgb3BlbnMgdGhlIHNldHVwIHNjcmlwdCBpbiBiaW5hcnkgbW9kZSB0byByZWFkIHRoZQogICBlbmNvZGluZyBjb29raWUsIGluc3RlYWQgb2Ygb3BlbmluZyBpdCBpbiBVVEYtOC4KQEAgLTE0ODgsMTQgKzI5NzEsMzIgQEAKICAgc3RpbGwgcG9zc2libGUgdG8gZ2xvYmFsbHkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYnkgc2V0dGluZwogICBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgYmVmb3JlIGxhdW5jaGluZyB0aGUgaW50ZXJwcmV0ZXI7IGl0cyB2YWx1ZSBtdXN0IGJlCiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIHRoZSB2YWx1ZSB3aXRoIHdoaWNoIHRoZSBpbnRlcnByZXRlcgotICB3YXMgYnVpbHQuCisgIHdhcyBidWlsdC4gIEFsc28sIGltcGxlbWVudCB0aGUgc2FtZSBoYW5kbGluZyBpbiBwYWNrYWdpbmcuCisKKy0gSXNzdWUgIzEyNDIyOiBJbiB0aGUgY29weSBtb2R1bGUsIGRvbid0IHN0b3JlIG9iamVjdHMgdGhhdCBhcmUgdGhlaXIgb3duIGNvcHkKKyAgaW4gdGhlIG1lbW8gZGljdC4KKworLSBJc3N1ZSAjMTIzMDM6IEFkZCBzaWd3YWl0aW5mbygpIGFuZCBzaWd0aW1lZHdhaXQoKSB0byB0aGUgc2lnbmFsIG1vZHVsZS4KKworLSBJc3N1ZSAjMTI0MDQ6IFJlbW92ZSBDODkgaW5jb21wYXRpYmxlIGNvZGUgZnJvbSBtbWFwIG1vZHVsZS4gUGF0Y2ggYnkgQWtpcmEKKyAgS2l0YWRhLgorCistIElzc3VlICMxODc0OiBlbWFpbCBub3cgZGV0ZWN0cyBhbmQgcmVwb3J0cyBhcyBhIGRlZmVjdCB0aGUgcHJlc2VuY2Ugb2YKKyAgYW55IENURSBvdGhlciB0aGFuIDdiaXQsIDhiaXQsIG9yIGJpbmFyeSBvbiBhIG11bHRpcGFydC4KIAogLSBJc3N1ZSAjMTIzODM6IEZpeCBzdWJwcm9jZXNzIG1vZHVsZSB3aXRoIGVudj17fTogZG9uJ3QgY29weSB0aGUgZW52aXJvbm1lbnQKICAgdmFyaWFibGVzLCBzdGFydCB3aXRoIGFuIGVtcHR5IGVudmlyb25tZW50LgogCi0tIElzc3VlICMxMTU4NDogZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXIgbm8gbG9uZ2VyIGZhaWxzIGlmIHRoZSBoZWFkZXIgcGFzc2VkCi0gIHRvIGl0IGlzIGEgSGVhZGVyIG9iamVjdCwgYW5kIEhlYWRlci9tYWtlX2hlYWRlciBubyBsb25nZXIgZmFpbCBpZiBnaXZlbgotICBiaW5hcnkgdW5rbm93bi04Yml0IGlucHV0LgorLSBJc3N1ZSAjMTE2Mzc6IEZpeCBzdXBwb3J0IGZvciBpbXBvcnRpbmcgcGFja2FnaW5nIHNldHVwIGhvb2tzIGZyb20gdGhlCisgIHByb2plY3QgZGlyZWN0b3J5LgorCistIElzc3VlICM2NzcxOiBNb3ZlZCB0aGUgY3Vyc2VzLndyYXBwZXIgZnVuY3Rpb24gZnJvbSB0aGUgc2luZ2xlLWZ1bmN0aW9uCisgIHdyYXBwZXIgbW9kdWxlIGludG8gX19pbml0X18sIGVsaW1pbmF0aW5nIHRoZSBtb2R1bGUuICBTaW5jZSBfX2luaXRfXyB3YXMKKyAgYWxyZWFkeSBpbXBvcnRpbmcgdGhlIGZ1bmN0aW9uIHRvIGN1cnNlcy53cmFwcGVyLCB0aGVyZSBpcyBubyBBUEkgY2hhbmdlLgorCistIElzc3VlICMxMTU4NDogZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXIgbm8gbG9uZ2VyIGZhaWxzIGlmIHRoZSBoZWFkZXIKKyAgcGFzc2VkIHRvIGl0IGlzIGEgSGVhZGVyIG9iamVjdCwgYW5kIEhlYWRlci9tYWtlX2hlYWRlciBubyBsb25nZXIgZmFpbAorICBpZiBnaXZlbiBiaW5hcnkgdW5rbm93bi04Yml0IGlucHV0LgogCiAtIElzc3VlICMxMTcwMDogbWFpbGJveCBwcm94eSBvYmplY3QgY2xvc2UgbWV0aG9kcyBjYW4gbm93IGJlIGNhbGxlZCBtdWx0aXBsZQogICB0aW1lcyB3aXRob3V0IGVycm9yLgpAQCAtMTUwNiwzNSArMzAwNywxMDUgQEAKICAgY29ubmVjdGlvbiBpZiBpdHMgZ2V0cmVzcG9uc2UoKSBtZXRob2QgZmFpbHMgd2l0aCBhIHNvY2tldCBlcnJvci4gUGF0Y2gKICAgd3JpdHRlbiBieSBFemlvIE1lbG90dGkuCiAKKy0gSXNzdWUgIzEyMjQwOiBBbGxvdyBtdWx0aXBsZSBzZXR1cCBob29rcyBpbiBwYWNrYWdpbmcncyBzZXR1cC5jZmcgZmlsZXMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWsgQnJheS4KKwogLSBJc3N1ZSAjOTI4NDogQWxsb3cgaW5zcGVjdC5maW5kc291cmNlKCkgdG8gZmluZCB0aGUgc291cmNlIG9mIGRvY3Rlc3QKICAgZnVuY3Rpb25zLgogCistIElzc3VlICMxMTU5NTogRml4IGFzc29ydGVkIGJ1Z3MgaW4gcGFja2FnaW5nLnV0aWwuY2ZnX3RvX2FyZ3MsIGEKKyAgY29tcGF0aWJpbGl0eSBoZWxwZXIgZm9yIHRoZSBkaXN0dXRpbHMtcGFja2FnaW5nIHRyYW5zaXRpb24uICBPcmlnaW5hbCBwYXRjaAorICBieSBFcmlrIEJyYXkuCisKKy0gSXNzdWUgIzEyMjg3OiBJbiBvc3NhdWRpb2RldiwgY2hlY2sgdGhhdCB0aGUgZGV2aWNlIGlzbid0IGNsb3NlZCBpbiBzZXZlcmFsCisgIG1ldGhvZHMuCisKIC0gSXNzdWUgIzEyMDA5OiBGaXhlZCByZWdyZXNzaW9uIGluIG5ldHJjIGZpbGUgY29tbWVudCBoYW5kbGluZy4KIAorLSBJc3N1ZSAjMTIyNDY6IFdhcm4gYW5kIGZhaWwgd2hlbiB0cnlpbmcgdG8gaW5zdGFsbCBhIHRoaXJkLXBhcnR5IHByb2plY3QgZnJvbQorICBhbiB1bmluc3RhbGxlZCBQeXRob24gKGJ1aWx0IGluIGEgc291cmNlIGNoZWNrb3V0KS4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIFRzaGVwYW5nIExla2hvbmtob2JlLgorCiAtIElzc3VlICMxMDY5NDogemlwZmlsZSBub3cgaWdub3JlcyBnYXJiYWdlIGF0IHRoZSBlbmQgb2YgYSB6aXBmaWxlLgogCiAtIElzc3VlICMxMjI4MzogRml4ZWQgcmVncmVzc2lvbiBpbiBzbXRwbGliIHF1b3Rpbmcgb2YgbGVhZGluZyBkb3RzIGluIERBVEEuCiAKKy0gSXNzdWUgIzEwNDI0OiBBcmdwYXJzZSBub3cgaW5jbHVkZXMgdGhlIG5hbWVzIG9mIHRoZSBtaXNzaW5nIHJlcXVpcmVkCisgIGFyZ3VtZW50cyBpbiB0aGUgbWlzc2luZyBhcmd1bWVudHMgZXJyb3IgbWVzc2FnZS4KKwogLSBJc3N1ZSAjMTIxNjg6IFN5c0xvZ0hhbmRsZXIgbm93IGFsbG93cyBOVUwgdGVybWluYXRpb24gdG8gYmUgY29udHJvbGxlZCB1c2luZwogICBhIG5ldyAnYXBwZW5kX251bCcgYXR0cmlidXRlIG9uIHRoZSBoYW5kbGVyLgogCiAtIElzc3VlICMxMTU4MzogU3BlZWQgdXAgb3MucGF0aC5pc2RpciBvbiBXaW5kb3dzIGJ5IHVzaW5nIEdldEZpbGVBdHRyaWJ1dGVzCiAgIGluc3RlYWQgb2Ygb3Muc3RhdC4KIAorLSBJc3N1ZSAjMTIwMjE6IE1ha2UgbW1hcCdzIHJlYWQoKSBtZXRob2QgYXJndW1lbnQgb3B0aW9uYWwuIFBhdGNoIGJ5IFBldHJpCisgIExlaHRpbmVuLgorCistIElzc3VlICM5MjA1OiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvciBub3cgZGV0ZWN0cyBraWxsZWQKKyAgY2hpbGRyZW4gYW5kIHJhaXNlcyBCcm9rZW5Qcm9jZXNzUG9vbCBpbiBzdWNoIGEgc2l0dWF0aW9uLiAgUHJldmlvdXNseSBpdAorICB3b3VsZCByZWxpYWJseSBmcmVlemUvZGVhZGxvY2suCisKKy0gSXNzdWUgIzEyMDQwOiBFeHBvc2UgYSBuZXcgYXR0cmlidXRlIGBgc2VudGluZWxgYCBvbiBpbnN0YW5jZXMgb2YKKyAgYGBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzc2BgLiAgQWxzbywgZml4IFByb2Nlc3Muam9pbigpIHRvIG5vdCB1c2UgcG9sbGluZworICBhbnltb3JlLCB3aGVuIGdpdmVuIGEgdGltZW91dC4KKworLSBJc3N1ZSAjMTE4OTM6IFJlbW92ZSBvYnNvbGV0ZSBpbnRlcm5hbCB3cmFwcGVyIGNsYXNzIGBgU1NMRmFrZUZpbGVgYCBpbiB0aGUKKyAgc210cGxpYiBtb2R1bGUuICBQYXRjaCBieSBDYXRhbGluIElhY29iLgorCistIElzc3VlICMxMjA4MDogRml4IGEgRGVjaW1hbC5wb3dlcigpIGNhc2UgdGhhdCB0b29rIGFuIHVucmVhc29uYWJseSBsb25nIHRpbWUKKyAgdG8gY29tcHV0ZS4KKworLSBJc3N1ZSAjMTIyMjE6IFJlbW92ZSBfX3ZlcnNpb25fXyBhdHRyaWJ1dGVzIGZyb20gcHlleHBhdCwgcGlja2xlLCB0YXJmaWxlLAorICBweWRvYywgdGtpbnRlciwgYW5kIHhtbC5wYXJzZXJzLmV4cGF0LiBUaGlzIHdlcmUgdXNlbGVzcyB2ZXJzaW9uIGNvbnN0YW50cworICBsZWZ0IG92ZXIgZnJvbSB0aGUgTWVyY3VyaWFsIHRyYW5zaXRpb24KKwogLSBOYW1lZCB0dXBsZXMgbm93IHdvcmsgY29ycmVjdGx5IHdpdGggdmFycygpLgogCiAtIElzc3VlICMxMjA4NTogRml4IGFuIGF0dHJpYnV0ZSBlcnJvciBpbiBzdWJwcm9jZXNzLlBvcGVuIGRlc3RydWN0b3IgaWYgdGhlCiAgIGNvbnN0cnVjdG9yIGhhcyBmYWlsZWQsIGUuZy4gYmVjYXVzZSBvZiBhbiB1bmRlY2xhcmVkIGtleXdvcmQgYXJndW1lbnQuIFBhdGNoCiAgIHdyaXR0ZW4gYnkgT2xlZyBPc2hteWFuLgogCi0tIElzc3VlICM5ODUwNjQ6IE1ha2UgcGxpc3RsaWIgbW9yZSByZXNpbGllbnQgdG8gZmF1bHR5IGlucHV0IHBsaXN0cy4gIFBhdGNoIGJ5Ci0gIE1oZXIgTW92c2lzeWFuLgorLSBJc3N1ZSAjMTIwMjg6IE1ha2UgdGhyZWFkaW5nLl9nZXRfaWRlbnQoKSBwdWJsaWMsIHJlbmFtZSBpdCB0bworICB0aHJlYWRpbmcuZ2V0X2lkZW50KCkgYW5kIGRvY3VtZW50IGl0LiBUaGlzIGZ1bmN0aW9uIHdhcyBhbHJlYWR5IHVzZWQgdXNpbmcKKyAgX3RocmVhZC5nZXRfaWRlbnQoKS4KKworLSBJc3N1ZSAjMTIxNzE6IEluY3JlbWVudGFsRW5jb2Rlci5yZXNldCgpIG9mIENKSyBjb2RlY3MgKG11bHRpYnl0ZWNvZGVjKSBjYWxscworICBlbmNyZXNldCgpIGluc3RlYWQgb2YgZGVjcmVzZXQoKS4KKworLSBJc3N1ZSAjMTIyMTg6IFJlbW92ZWQgd3NnaXJlZi5lZ2ctaW5mby4KKworLSBJc3N1ZSAjMTIxOTY6IEFkZCBwaXBlMigpIHRvIHRoZSBvcyBtb2R1bGUuCisKKy0gSXNzdWUgIzk4NTA2NDogTWFrZSBwbGlzdGxpYiBtb3JlIHJlc2lsaWVudCB0byBmYXVsdHkgaW5wdXQgcGxpc3RzLgorICBQYXRjaCBieSBNaGVyIE1vdnNpc3lhbi4KKworLSBJc3N1ZSAjMTYyNTogQloyRmlsZSBhbmQgYnoyLmRlY29tcHJlc3MoKSBub3cgc3VwcG9ydCBtdWx0aS1zdHJlYW0gZmlsZXMuCisgIEluaXRpYWwgcGF0Y2ggYnkgTmlyIEFpZGVzLgorCistIElzc3VlICMxMjE3NTogQnVmZmVyZWRSZWFkZXIucmVhZCgtMSkgbm93IGNhbGxzIHJhdy5yZWFkYWxsKCkgaWYgYXZhaWxhYmxlLgorCistIElzc3VlICMxMjE3NTogRmlsZUlPLnJlYWRhbGwoKSBub3cgb25seSByZWFkcyB0aGUgZmlsZSBwb3NpdGlvbiBhbmQgc2l6ZQorICBvbmNlLgogCiAtIElzc3VlICMxMjE3NTogUmF3SU9CYXNlLnJlYWRhbGwoKSBub3cgcmV0dXJucyBOb25lIGlmIHJlYWQoKSByZXR1cm5zIE5vbmUuCiAKIC0gSXNzdWUgIzEyMTc1OiBGaWxlSU8ucmVhZGFsbCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGluc3RlYWQgb2YgYW4gSU9FcnJvcgogICBpZiB0aGUgZmlsZSBpcyBjbG9zZWQuCiAKKy0gSXNzdWUgIzExMTA5OiBOZXcgc2VydmljZV9hY3Rpb24gbWV0aG9kIGZvciBCYXNlU2VydmVyLCB1c2VkIGJ5IEZvcmtpbmdNaXhpbgorICBjbGFzcyBmb3IgY2xlYW51cC4gSW5pdGlhbCBQYXRjaCBieSBKdXN0aW4gV2Fyay4KKworLSBJc3N1ZSAjMTIwNDU6IEF2b2lkIGR1cGxpY2F0ZSBleGVjdXRpb24gb2YgY29tbWFuZCBpbgorICBjdHlwZXMudXRpbC5fZ2V0X3NvbmFtZSgpLiAgUGF0Y2ggYnkgU2lqaW4gSm9zZXBoLgorCistIElzc3VlICMxMDgxODogUmVtb3ZlIHRoZSBUayBHVUkgYW5kIHRoZSBzZXJ2ZSgpIGZ1bmN0aW9uIG9mIHRoZSBweWRvYyBtb2R1bGUsCisgIHB5ZG9jIC1nIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMiBhbmQgaXQgaGFzIGEgbmV3IGVuaGFuY2VkIHdlYgorICBzZXJ2ZXIuCisKKy0gSXNzdWUgIzE0NDE1MzA6IEluIGltYXBsaWIsIHJlYWQgdGhlIGRhdGEgaW4gb25lIGNodW5rIHRvIHNwZWVkIHVwIGxhcmdlCisgIHJlYWRzIGFuZCBzaW1wbGlmeSBjb2RlLgorCiAtIElzc3VlICMxMjA3MDogRml4IHRoZSBNYWtlZmlsZSBwYXJzZXIgb2YgdGhlIHN5c2NvbmZpZyBtb2R1bGUgdG8gaGFuZGxlCiAgIGNvcnJlY3RseSByZWZlcmVuY2VzIHRvICJib2d1cyB2YXJpYWJsZSIgKGUuZy4gInByZWZpeD0kL29wdC9weXRob24iKS4KIApAQCAtMTU0Miw4MSArMzExMywzMCBAQAogICB0aGVpciBlbmNvZGUoKSBtZXRob2QgYW55bW9yZSwgYnV0IGNvbnRpbnVlIHRvIGNhbGwgdGhlIHJlc2V0KCkgbWV0aG9kIGlmIHRoZQogICBmaW5hbCBhcmd1bWVudCBpcyBUcnVlLgogCi0tIElzc3VlICM1NzE1OiBJbiBzb2NrZXRzZXJ2ZXIsIGNsb3NlIHRoZSBzZXJ2ZXIgc29ja2V0IGluIHRoZSBjaGlsZCBwcm9jZXNzLgorLSBJc3N1ZSAjMTIwNDk6IEFkZCBSQU5EX2J5dGVzKCkgYW5kIFJBTkRfcHNldWRvX2J5dGVzKCkgZnVuY3Rpb25zIHRvIHRoZSBzc2wKKyAgbW9kdWxlLgogCi0tIENvcnJlY3QgbG9va3VwIG9mIF9fZGlyX18gb24gb2JqZWN0cy4gQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIGNhdXNlcyBlcnJvcnMKLSAgYmVzaWRlcyBBdHRyaWJ1dGVFcnJvciBmb3VuZCBvbiBsb29rdXAgdG8gYmUgcHJvcGFnYXRlZC4KKy0gSXNzdWUgIzY1MDE6IG9zLmRldmljZV9lbmNvZGluZygpIHJldHVybnMgTm9uZSBvbiBXaW5kb3dzIGlmIHRoZSBhcHBsaWNhdGlvbgorICBoYXMgbm8gY29uc29sZS4KKworLSBJc3N1ZSAjMTIxMDU6IEFkZCBPX0NMT0VYRUMgdG8gdGhlIG9zIG1vZHVsZS4KKworLSBJc3N1ZSAjMTIwNzk6IERlY2ltYWwoJ0luZmluaXR5JykuZm1hKERlY2ltYWwoJzAnKSwgKDMuOTEyMjQzMTgxMjY3ODZlKzE5KzBqKSkKKyAgbm93IHJhaXNlcyBUeXBlRXJyb3IgKHJlZmxlY3RpbmcgdGhlIGludmFsaWQgdHlwZSBvZiB0aGUgM3JkIGFyZ3VtZW50KSByYXRoZXIKKyAgdGhhbiBEZWNpbWFsLkludmFsaWRPcGVyYXRpb24uCiAKIC0gSXNzdWUgIzEyMTI0OiB6aXBpbXBvcnQgZG9lc24ndCBrZWVwIGEgcmVmZXJlbmNlIHRvIHpsaWIuZGVjb21wcmVzcygpIGFueW1vcmUKICAgdG8gYmUgYWJsZSB0byB1bmxvYWQgdGhlIG1vZHVsZS4KIAorLSBBZGQgdGhlIHBhY2thZ2luZyBtb2R1bGUsIGFuIGltcHJvdmVkIGZvcmsgb2YgZGlzdHV0aWxzIChhbHNvIGtub3duIGFzCisgIGRpc3R1dGlsczIpLgorCiAtIElzc3VlICMxMjA2NTogY29ubmVjdF9leCgpIG9uIGFuIFNTTCBzb2NrZXQgbm93IHJldHVybnMgdGhlIG9yaWdpbmFsIGVycm5vCiAgIHdoZW4gdGhlIHNvY2tldCdzIHRpbWVvdXQgZXhwaXJlcyAoaXQgdXNlZCB0byByZXR1cm4gTm9uZSkuCiAKLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjQwNDogUmVtb3ZlIEM4OSBpbmNvbXBhdGlibGUgY29kZSBmcm9tIG1tYXAgbW9kdWxlLiBQYXRjaCBieSBBa2lyYQotICBLaXRhZGEuCi0KLS0gSXNzdWUgIzEyMjIxOiBSZXBsYWNlIHB5ZXhwYXQuX192ZXJzaW9uX18gd2l0aCB0aGUgUHl0aG9uIHZlcnNpb24uCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICM4NzQ2OiBDb3JyZWN0IGZhdWx0eSBjb25maWd1cmUgY2hlY2tzIHNvIHRoYXQgb3MuY2hmbGFncygpIGFuZAotICBvcy5sY2hmbGFncygpIGFyZSBvbmNlIGFnYWluIGJ1aWx0IG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZXNlIGZ1bmN0aW9ucwotICAoKkJTRCBhbmQgT1MgWCkuICBBbHNvIGFkZCBuZXcgc3RhdCBmaWxlIGZsYWdzIGZvciBPUyBYIChVRl9ISURERU4gYW5kCi0gIFVGX0NPTVBSRVNTRUQpLgotCi0tIElzc3VlICMxMTIxNzogRm9yIDY0LWJpdC8zMi1iaXQgTWFjIE9TIFggdW5pdmVyc2FsIGZyYW1ld29yayBidWlsZHMsIGVuc3VyZQotICAibWFrZSBpbnN0YWxsIiBjcmVhdGVzIHN5bWxpbmtzIGluIC0tcHJlZml4IGJpbiBmb3IgdGhlICItMzIiIGZpbGVzIGluIHRoZQotICBmcmFtZXdvcmsgYmluIGRpcmVjdG9yeSBsaWtlIHRoZSBpbnN0YWxsZXIgZG9lcy4KLQotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTI0MDc6IEV4cGxpY2l0bHkgc2tpcCB0ZXN0X2NhcGkuRW1iZWRkaW5nVGVzdCB1bmRlciBXaW5kb3dzLgotCi0tIElzc3VlICMxMjQwMDogcmVncnRlc3QgLVcgZG9lc24ndCByZXJ1biB0aGUgdGVzdHMgdHdpY2UgYW55bW9yZSwgYnV0IGNhcHR1cmVzCi0gIHRoZSBvdXRwdXQgYW5kIGRpc3BsYXlzIGl0IG9uIGZhaWx1cmUgaW5zdGVhZC4gcmVncnRlc3QgLXYgZG9lc24ndCBwcmludCB0aGUKLSAgZXJyb3IgdHdpY2UgYW55bW9yZSBpZiB0aGVyZSBpcyBvbmx5IG9uZSBlcnJvci4KLQotLSBJc3N1ZSAjMTIxNDE6IEluc3RhbGwgYSBjb3B5IG9mIHRlbXBsYXRlIEMgbW9kdWxlIGZpbGUgc28gdGhhdCB0ZXN0X2J1aWxkX2V4dAotICBvZiB0ZXN0X2Rpc3R1dGlscyBpcyBubyBsb25nZXIgc2lsZW50bHkgc2tpcHBlZCB3aGVuIHJ1biBvdXRzaWRlIG9mIGEgYnVpbGQKLSAgZGlyZWN0b3J5LgotCi0tIElzc3VlICM4NzQ2OiBBZGQgYWRkaXRpb25hbCB0ZXN0cyBmb3Igb3MuY2hmbGFncygpIGFuZCBvcy5sY2hmbGFncygpLiAgUGF0Y2gKLSAgYnkgR2FycmV0dCBDb29wZXIuCi0KLS0gSXNzdWUgIzEwNzM2OiBGaXggdGVzdF90dGsgdGVzdF93aWRnZXRzIGZhaWx1cmVzIHdpdGggQ29jb2EgVGsgOC41Ljkgb24gTWFjCi0gIE9TIFguICAoUGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQotCi0tIElzc3VlICMxMjA1NzogQWRkIHRlc3RzIGZvciBJU08gMjAyMiBjb2RlY3MgKGlzbzIwMjJfanAsIGlzbzIwMjJfanBfMiwKLSAgaXNvMjAyMl9rcikuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjEgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDE1LU1heS0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTIwNjA6IFVzZSBzaWdfYXRvbWljX3QgdHlwZSBhbmQgdm9sYXRpbGUga2V5d29yZCBpbiB0aGUgc2lnbmFsCi0gIG1vZHVsZS4gUGF0Y2ggd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzEyMDQ0OiBGaXhlZCBzdWJwcm9jZXNzLlBvcGVuIHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciB0bwotICB3YWl0IGZvciB0aGUgcHJvY2VzcyB0byBlbmQgd2hlbiBleGl0aW5nIHRoZSBjb250ZXh0IHRvIGF2b2lkIHVuaW50ZW50aW9uYWxseQotICBsZWF2aW5nIHpvbWJpZSBwcm9jZXNzZXMgYXJvdW5kLgotCi0tIElzc3VlICMxMTk1OiBGaXggaW5wdXQoKSBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBDVFJMK2QgYW5kIHRoZW4gQ1RSTCtjLAotICBjbGVhciB0aGUgZW5kLW9mLWZpbGUgaW5kaWNhdG9yIGFmdGVyIENUUkwrZC4KLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjODgwOTogVGhlIFNNVFBfU1NMIGNvbnN0cnVjdG9yIGFuZCBTTVRQLnN0YXJ0dGxzKCkgbm93IHN1cHBvcnQKKyAgcGFzc2luZyBhIGBgY29udGV4dGBgIGFyZ3VtZW50IHBvaW50aW5nIHRvIGFuIHNzbC5TU0xDb250ZXh0IGluc3RhbmNlLgorICBQYXRjaCBieSBLYXN1biBIZXJhdGguCiAKIC0gSXNzdWUgIzExMDg4OiBkb24ndCBjcmFzaCB3aGVuIHVzaW5nIEY1IHRvIHJ1biBhIHNjcmlwdCBpbiBJRExFIG9uIE1hY09TWAogICB3aXRoIFRrIDguNS4KQEAgLTE2MjQsOCArMzE0NCw2IEBACiAtIElzc3VlICM5NTE2OiBJc3N1ZSAjOTUxNjogYXZvaWQgZXJyb3JzIGluIHN5c2NvbmZpZyB3aGVuIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAogICBpcyBzZXQgaW4gc2hlbGwuCiAKLS0gSXNzdWUgIzEyMDEyOiBzc2wuUFJPVE9DT0xfU1NMdjIgYmVjb21lcyBvcHRpb25hbC4KLQogLSBJc3N1ZSAjODY1MDogTWFrZSB6bGliIG1vZHVsZSA2NC1iaXQgY2xlYW4uIGNvbXByZXNzKCksIGRlY29tcHJlc3MoKSBhbmQKICAgdGhlaXIgaW5jcmVtZW50YWwgY291bnRlcnBhcnRzIG5vdyByYWlzZSBPdmVyZmxvd0Vycm9yIGlmIGdpdmVuIGFuIGlucHV0CiAgIGxhcmdlciB0aGFuIDRHQiwgaW5zdGVhZCBvZiBzaWxlbnRseSB0cnVuY2F0aW5nIHRoZSBpbnB1dCBhbmQgcmV0dXJuaW5nCkBAIC0xNjM5LDEyICszMTU3LDE2IEBACiAgIHdyaXRpbmcsIHRoZW4gc2Vla2luZyBiZWZvcmUgdGhlIHByZXZpb3VzIHdyaXRlIGJ1dCBzdGlsbCB3aXRoaW4gYnVmZmVyZWQKICAgZGF0YSwgYW5kIHdyaXRpbmcgYWdhaW4pLgogCistIElzc3VlICM5OTcxOiBXcml0ZSBhbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2YgQnVmZmVyZWRSZWFkZXIucmVhZGludG8oKS4KKyAgUGF0Y2ggYnkgSm9obiBPJ0Nvbm5vci4KKwogLSBJc3N1ZSAjMTAyODogVGsgcmV0dXJucyBpbnZhbGlkIFVuaWNvZGUgbnVsbCBpbiAlQTogVW5pY29kZURlY29kZUVycm9yLgogICBXaXRoIFRrIDwgOC41IF90a2ludGVyLmM6UHl0aG9uQ21kKCkgcmFpc2VkIFVuaWNvZGVEZWNvZGVFcnJvciwgY2F1c2VkCiAgIElETEUgdG8gZXhpdC4gIENvbnZlcnRlZCB0byB2YWxpZCBVbmljb2RlIG51bGwgaW4gUHl0aG9uQ21kKCkuCiAKLS0gSXNzdWUgIzExMTY5OiBjb21waWxlYWxsIG1vZHVsZSB1c2VzIHJlcHIoKSB0byBmb3JtYXQgZmlsZW5hbWVzIGFuZCBwYXRocyB0bwotICBlc2NhcGUgc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHNob3cgc3BhY2VzLgorLSBJc3N1ZSAjMTE3OTk6IHVybGxpYi5yZXF1ZXN0IEF1dGhlbnRpY2F0aW9uIEhhbmRsZXJzIHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yCisgIHdoZW4gcHJlc2VudGVkIHdpdGggYW4gdW5zdXBwb3J0ZWQgQXV0aGVudGljYXRpb24gU2NoZW1lLiBQYXRjaCBjb250cmlidXRlZAorICBieSBZdXZhbCBHcmVlbmZpZWxkLgogCiAtIElzc3VlICMxMDQxOSwgIzYwMTE6IGJ1aWxkX3NjcmlwdHMgY29tbWFuZCBvZiBkaXN0dXRpbHMgaGFuZGxlcyBjb3JyZWN0bHkKICAgbm9uLUFTQ0lJIHBhdGggKHBhdGggdG8gdGhlIFB5dGhvbiBleGVjdXRhYmxlKS4gT3BlbiBhbmQgd3JpdGUgdGhlIHNjcmlwdCBpbgpAQCAtMTY1NCwxMzMgKzMxNzYsNjggQEAKIC0gSXNzdWUgIzg0OTg6IEluIHNvY2tldC5hY2NlcHQoKSwgYWxsb3cgdG8gc3BlY2lmeSAwIGFzIGEgYmFja2xvZyB2YWx1ZSBpbgogICBvcmRlciB0byBhY2NlcHQgZXhhY3RseSBvbmUgY29ubmVjdGlvbi4gIFBhdGNoIGJ5IERhbmllbCBFdmVycy4KIAorLSBJc3N1ZSAjMTIwMTE6IHNpZ25hbC5zaWduYWwoKSBhbmQgc2lnbmFsLnNpZ2ludGVycnVwdCgpIHJhaXNlIGFuIE9TRXJyb3IsCisgIGluc3RlYWQgb2YgYSBSdW50aW1lRXJyb3I6IE9TRXJyb3IgaGFzIGFuIGVycm5vIGF0dHJpYnV0ZS4KKworLSBJc3N1ZSAjMzcwOTogYSBmbHVzaF9oZWFkZXJzIG1ldGhvZCB0byBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyIHdoaWNoIG1hbmFnZXMKKyAgdGhlIHNlbmRpbmcgb2YgaGVhZGVycyB0byBvdXRwdXQgc3RyZWFtIGFuZCBmbHVzaGluZyB0aGUgaW50ZXJuYWwgaGVhZGVycworICBidWZmZXIuIFBhdGNoIGNvbnRyaWJ1dGlvbiBieSBBbmRyZXcgU2NoYWFmCisKKy0gSXNzdWUgIzExNzQzOiBSZXdyaXRlIG11bHRpcHJvY2Vzc2luZyBjb25uZWN0aW9uIGNsYXNzZXMgaW4gcHVyZSBQeXRob24uCisKIC0gSXNzdWUgIzExMTY0OiBTdG9wIHRyeWluZyB0byB1c2UgX3htbHBsdXMgaW4gdGhlIHhtbCBtb2R1bGUuCiAKLUJ1aWxkCi0tLS0tLQorLSBJc3N1ZSAjMTE4ODg6IEFkZCBsb2cyIGZ1bmN0aW9uIHRvIG1hdGggbW9kdWxlLiBQYXRjaCB3cml0dGVuIGJ5IE1hcmsKKyAgRGlja2luc29uLgogCi0tIElzc3VlICMxMTM0NzogVXNlIC0tbm8tYXMtbmVlZGVkIHdoZW4gbGlua2luZyBsaWJweXRob24zLnNvLgorLSBJc3N1ZSAjMTIwMTI6IHNzbC5QUk9UT0NPTF9TU0x2MiBiZWNvbWVzIG9wdGlvbmFsLgogCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KKy0gSXNzdWUgIzg0MDc6IFRoZSBzaWduYWwgaGFuZGxlciB3cml0ZXMgdGhlIHNpZ25hbCBudW1iZXIgYXMgYSBzaW5nbGUgYnl0ZQorICBpbnN0ZWFkIG9mIGEgbnVsIGJ5dGUgaW50byB0aGUgd2FrZXVwIGZpbGUgZGVzY3JpcHRvci4gU28gaXQgaXMgcG9zc2libGUgdG8KKyAgd2FpdCBtb3JlIHRoYW4gb25lIHNpZ25hbCBhbmQga25vdyB3aGljaCBzaWduYWxzIHdlcmUgcmFpc2VkLgogCi0tIElzc3VlICMxMTk5NjogbGlicHl0aG9uIChnZGIpLCByZXBsYWNlICJweS1idCIgY29tbWFuZCBieSAicHktYnQtZnVsbCIgYW5kCi0gIGFkZCBhIHNtYXJ0ZXIgInB5LWJ0IiBjb21tYW5kIHByaW50aW5nIGEgY2xhc3NpYyBQeXRob24gdHJhY2ViYWNrLgorLSBJc3N1ZSAjODQwNzogQWRkIHB0aHJlYWRfa2lsbCgpLCBzaWdwZW5kaW5nKCkgYW5kIHNpZ3dhaXQoKSBmdW5jdGlvbnMgdG8gdGhlCisgIHNpZ25hbCBtb2R1bGUuCiAKLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxMjA5NjogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGVzdF90aHJlYWRpbmcudGVzdF93YWl0Zm9yKCkuIFBhdGNoCi0gIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMTYxNDogaW1wb3J0IF9faGVsbG9fXyBwcmludHMgIkhlbGxvIFdvcmxkISIuIFBhdGNoIHdyaXR0ZW4gYnkKLSAgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICM1NzIzOiBJbXByb3ZlIGpzb24gdGVzdHMgdG8gYmUgZXhlY3V0ZWQgd2l0aCBhbmQgd2l0aG91dCBhY2NlbGVyYXRpb25zLgotCi0tIElzc3VlICMxMTkxMDogRml4IHRlc3RfaGVhcHEgdG8gc2tpcCB0aGUgQyB0ZXN0cyB3aGVuIF9oZWFwcSBpcyBtaXNzaW5nLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4xIGJldGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDgtTWF5LTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxODU2OiBBdm9pZCBjcmFzaGVzIGFuZCBsb2NrdXBzIHdoZW4gZGFlbW9uIHRocmVhZHMgcnVuIHdoaWxlIHRoZQotICBpbnRlcnByZXRlciBpcyBzaHV0dGluZyBkb3duOyBpbnN0ZWFkLCB0aGVzZSB0aHJlYWRzIGFyZSBub3cga2lsbGVkIHdoZW4gdGhleQotICB0cnkgdG8gdGFrZSB0aGUgR0lMLgotCi0tIElzc3VlICM5NzU2OiBXaGVuIGNhbGxpbmcgYSBtZXRob2QgZGVzY3JpcHRvciBvciBhIHNsb3Qgd3JhcHBlciBkZXNjcmlwdG9yLAotICB0aGUgY2hlY2sgb2YgdGhlIG9iamVjdCB0eXBlIGRvZXNuJ3QgcmVhZCB0aGUgX19jbGFzc19fIGF0dHJpYnV0ZSBhbnltb3JlLgotICBGaXggYSBjcmFzaCBpZiBhIGNsYXNzIG92ZXJyaWRlIGl0cyBfX2NsYXNzX18gYXR0cmlidXRlIChlLmcuIGEgcHJveHkgb2YgdGhlCi0gIHN0ciB0eXBlKS4gUGF0Y2ggd3JpdHRlbiBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzEwOTE0OiBJbml0aWFsaXplIGNvcnJlY3RseSB0aGUgZmlsZXN5c3RlbSBjb2RlYyB3aGVuIGNyZWF0aW5nIGEgbmV3Ci0gIHN1YmludGVycHJldGVyIHRvIGZpeCBhIGJvb3RzdHJhcCBpc3N1ZSB3aXRoIGNvZGVjcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIGFzCi0gIHRoZSBJU08tODg1OS0xNSBjb2RlYy4KLQotLSBJc3N1ZSAjMTA1MTc6IEFmdGVyIGZvcmsoKSwgcmVpbml0aWFsaXplIHRoZSBUTFMgdXNlZCBieSB0aGUgUHlHSUxTdGF0ZV8qCi0gIEFQSXMsIHRvIGF2b2lkIGEgY3Jhc2ggd2l0aCB0aGUgcHRocmVhZCBpbXBsZW1lbnRhdGlvbiBpbiBSSEVMIDUuICBQYXRjaCBieQotICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzY3ODA6IGZpeCBzdGFydHMvZW5kc3dpdGggZXJyb3IgbWVzc2FnZSB0byBtZW50aW9uIHRoYXQgdHVwbGVzIGFyZQotICBhY2NlcHRlZCB0b28uCi0KLS0gSXNzdWUgIzUwNTc6IGZpeCBhIGJ1ZyBpbiB0aGUgcGVlcGhvbGVyIHRoYXQgbGVkIHRvIG5vbi1wb3J0YWJsZSBweWMgZmlsZXMKLSAgYmV0d2VlbiBuYXJyb3cgYW5kIHdpZGUgYnVpbGRzIHdoaWxlIG9wdGltaXppbmcgQklOQVJZX1NVQlNDUiBvbiBub24tQk1QIGNoYXJzCi0gIChlLmcuICJcVTAwMDEyMzQ1IlswXSkuCi0KLS0gSXNzdWUgIzExODQ1OiBGaXggdHlwbyBpbiByYW5nZW9iamVjdC5jIHRoYXQgY2F1c2VkIGEgY3Jhc2ggaW4KLSAgY29tcHV0ZV9zbGljZV9pbmRpY2VzLiAgUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgotCi0tIElzc3VlICMxMTY1MDogUHlPU19TdGRpb1JlYWRsaW5lKCkgcmV0cmllcyBmZ2V0cygpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZAotICAoRUlOVFIpLCBmb3IgZXhhbXBsZSBpZiB0aGUgcHJvZ3JhbSBpcyBzdG9wcGVkIHdpdGggQ1RSTCt6IG9uIE1hYyBPUyBYLiBQYXRjaAotICB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbmNvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMTM5NTogaW8uRmlsZUlPKCkud3JpdGUoKSBjbGFtcHMgdGhlIGRhdGEgbGVuZ3RoIHRvIDMyLDc2NyBieXRlcyBvbgotICBXaW5kb3dzIGlmIHRoZSBmaWxlIGlzIGEgVFRZIHRvIHdvcmthcm91bmQgYSBXaW5kb3dzIGJ1Zy4gVGhlIFdpbmRvd3MgY29uc29sZQotICByZXR1cm5zIGFuIGVycm9yICgxMjogbm90IGVub3VnaCBzcGFjZSBlcnJvcikgb24gd3JpdGluZyBpbnRvIHN0ZG91dCBpZiBzdGRvdXQKLSAgbW9kZSBpcyBiaW5hcnkgYW5kIHRoZSBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIDY2LDAwMCBieXRlcyAob3IgbGVzcywgZGVwZW5kaW5nCi0gIG9uIGhlYXAgdXNhZ2UpLgotCi0tIElzc3VlICMxMTMyMDogZml4IGJvZ3VzIG1lbW9yeSBtYW5hZ2VtZW50IGluIE1vZHVsZXMvZ2V0cGF0aC5jLCBsZWFkaW5nIHRvIGEKLSAgcG9zc2libGUgY3Jhc2ggd2hlbiBjYWxsaW5nIFB5X1NldFBhdGgoKS4KLQotLSBJc3N1ZSAjMTE1MTA6IEZpeGVkIG9wdGltaXplciBidWcgd2hpY2ggdHVybmVkICJhLGI9ezEsMX0iIGludG8gImEsYj0oMSwxKSIuCi0KLS0gSXNzdWUgIzExNDMyOiBBIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiBzdWJwcm9jZXNzLlBvcGVuIG9uIHBvc2l4IHN5c3RlbXMgd2l0aAotICAzLjIuMCB3aGVyZSB0aGUgc3Rkb3V0IG9yIHN0ZGVyciBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdGhlIHNhbWUgYXMgdGhlIHN0ZGluCi0gIGZpbGUgZGVzY3JpcHRvciB3b3VsZCByYWlzZSBhbiBleGNlcHRpb24uIHdlYmJyb3dzZXIub3BlbiB3b3VsZCBmYWlsLiBmaXhlZC4KLQotLSBJc3N1ZSAjMTE0NTA6IERvbid0IHRydW5jYXRlIGhnIHZlcnNpb24gaW5mbyBpbiBQeV9HZXRCdWlsZEluZm8oKSB3aGVuIHRoZXJlCi0gIGFyZSBtYW55IHRhZ3MgKGUuZy4gd2hlbiB1c2luZyBtcSkuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCi0KLS0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCi0gIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCi0gIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgotCi0tIElzc3VlICMxMTI4NjogUmFpc2UgYSBWYWx1ZUVycm9yIGZyb20gY2FsbGluZyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlciB3aXRoIGEKLSAgYnVmZmVyIHN0cnVjdCBoYXZpbmcgYSBOVUxMIGRhdGEgcG9pbnRlci4KLQotLSBJc3N1ZSAjMTEyNzI6IE9uIFdpbmRvd3MsIGlucHV0KCkgc3RyaXBzICdccicgKGFuZCBub3Qgb25seSAnXG4nKSwgYW5kCi0gIHN5cy5zdGRpbiB1c2VzIHVuaXZlcnNhbCBuZXdsaW5lIChyZXBsYWNlICdcclxuJyBieSAnXG4nKS4KLQotLSBpc3N1ZSAjMTE4Mjg6IHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoIGRvbid0IGFjY2VwdCBOb25lIGFzIHNsaWNlIGluZGV4LiAgUGF0Y2gKLSAgYnkgVG9yc3RlbiBCZWNrZXIuCi0KLS0gSXNzdWUgIzEwODMwOiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCIlYyIpIGZvciBub24tQk1QIGNoYXJhY3RlcnMgb24KLSAgbmFycm93IGJ1aWxkLgotCi0tIENoZWNrIGZvciBOVUxMIHJlc3VsdCBpbiBQeVR5cGVfRnJvbVNwZWMuCi0KLS0gSXNzdWUgIzExMzg2OiBieXRlYXJyYXkucG9wKCkgbm93IHRocm93cyBJbmRleEVycm9yIHdoZW4gdGhlIGJ5dGVhcnJheSBpcwotICBlbXB0eSwgaW5zdGVhZCBvZiBPdmVyZmxvd0Vycm9yLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzExOTI3OiBTTVRQX1NTTCBub3cgdXNlcyBwb3J0IDQ2NSBieSBkZWZhdWx0IGFzIGRvY3VtZW50ZWQuICBQYXRjaCBieQotICBLYXN1biBIZXJhdGguCistIElzc3VlICMxMTkyNzogU01UUF9TU0wgbm93IHVzZXMgcG9ydCA0NjUgYnkgZGVmYXVsdCBhcyBkb2N1bWVudGVkLiAgUGF0Y2gKKyAgYnkgS2FzdW4gSGVyYXRoLgogCiAtIElzc3VlICMxMjAwMjogZnRwbGliJ3MgYWJvcnQoKSBtZXRob2QgcmFpc2VzIFR5cGVFcnJvci4KIAorLSBJc3N1ZSAjMTE5MTY6IEFkZCBhIG51bWJlciBvZiBNYWNPU1ggc3BlY2lmaWMgZGVmaW5pdGlvbnMgdG8gdGhlIGVycm5vIG1vZHVsZS4KKyAgUGF0Y2ggYnkgUGllcnJlIENhcnJpZXIuCisKIC0gSXNzdWUgIzExOTk5OiBmaXhlZCBzcG9yYWRpYyBzeW5jIGZhaWx1cmUgbWFpbGJveC5NYWlsZGlyIGR1ZSB0byBpdHMgdHJ5aW5nIHRvCiAgIGRldGVjdCBtdGltZSBjaGFuZ2VzIGJ5IGNvbXBhcmluZyB0byB0aGUgc3lzdGVtIGNsb2NrIGluc3RlYWQgb2YgdG8gdGhlCiAgIHByZXZpb3VzIHZhbHVlIG9mIHRoZSBtdGltZS4KIAorLSBJc3N1ZSAjMTEwNzI6IGFkZGVkIE1MU0QgY29tbWFuZCAoUkZDLTM2NTkpIHN1cHBvcnQgdG8gZnRwbGliLgorCistIElzc3VlICM4ODA4OiBUaGUgSU1BUDRfU1NMIGNvbnN0cnVjdG9yIG5vdyBhbGxvd3MgcGFzc2luZyBhbiBTU0xDb250ZXh0CisgIHBhcmFtZXRlciB0byBjb250cm9sIHBhcmFtZXRlcnMgb2YgdGhlIHNlY3VyZSBjaGFubmVsLiAgUGF0Y2ggYnkgU2lqaW4KKyAgSm9zZXBoLgorCiAtIG50cGF0aC5zYW1lZmlsZSBmYWlsZWQgdG8gbm90aWNlIHRoYXQgImEudHh0IiBhbmQgIkEuVFhUIiByZWZlciB0byB0aGUgc2FtZQogICBmaWxlIG9uIFdpbmRvd3MgWFAuIEFzIG5vdGljZWQgaW4gaXNzdWUgIzEwNjg0LgogCi0tIElzc3VlICMxMjAwMDogV2hlbiBhIFNTTCBjZXJ0aWZpY2F0ZSBoYXMgYSBzdWJqZWN0QWx0TmFtZSB3aXRob3V0IGFueSBkTlNOYW1lCi0gIGVudHJ5LCBzc2wubWF0Y2hfaG9zdG5hbWUoKSBzaG91bGQgdXNlIHRoZSBzdWJqZWN0J3MgY29tbW9uTmFtZS4gIFBhdGNoIGJ5Ci0gIE5pY29sYXMgQmFyZWlsLgorLSBJc3N1ZSAjMTIwMDA6IFdoZW4gYSBTU0wgY2VydGlmaWNhdGUgaGFzIGEgc3ViamVjdEFsdE5hbWUgd2l0aG91dCBhbnkKKyAgZE5TTmFtZSBlbnRyeSwgc3NsLm1hdGNoX2hvc3RuYW1lKCkgc2hvdWxkIHVzZSB0aGUgc3ViamVjdCdzIGNvbW1vbk5hbWUuCisgIFBhdGNoIGJ5IE5pY29sYXMgQmFyZWlsLgogCi0tIElzc3VlICMxMTY0Nzogb2JqZWN0cyBjcmVhdGVkIHVzaW5nIGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIgbm93IHN1cHBvcnQgbW9yZQotICB0aGFuIG9uZSBjYWxsIHRvIHRoZSBmdW5jdGlvbiB3aGVuIHVzZWQgYXMgYSBkZWNvcmF0b3IuIEluaXRpYWwgcGF0Y2ggYnkgWXNqCi0gIFJheS4KKy0gSXNzdWUgIzEwNzc1OiBhc3NlcnRSYWlzZXMsIGFzc2VydFJhaXNlc1JlZ2V4LCBhc3NlcnRXYXJucywgYW5kCisgIGFzc2VydFdhcm5zUmVnZXggbm93IGFjY2VwdCBhIGtleXdvcmQgYXJndW1lbnQgJ21zZycgd2hlbiB1c2VkIGFzIGNvbnRleHQKKyAgbWFuYWdlcnMuICBJbml0aWFsIHBhdGNoIGJ5IFdpbnN0b24gRXdlcnQuCisKKy0gSXNzdWUgIzEwNjg0OiBzaHV0aWwubW92ZSB1c2VkIHRvIGRlbGV0ZSBhIGZvbGRlciBvbiBjYXNlIGluc2Vuc2l0aXZlCisgIGZpbGVzeXN0ZW1zIHdoZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gbmFtZSB3aGVyZSB0aGUgc2FtZSBleGNlcHQKKyAgZm9yIHRoZSBjYXNlLgorCistIElzc3VlICMxMTY0Nzogb2JqZWN0cyBjcmVhdGVkIHVzaW5nIGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIgbm93IHN1cHBvcnQKKyAgbW9yZSB0aGFuIG9uZSBjYWxsIHRvIHRoZSBmdW5jdGlvbiB3aGVuIHVzZWQgYXMgYSBkZWNvcmF0b3IuIEluaXRpYWwgcGF0Y2gKKyAgYnkgWXNqIFJheS4KKworLSBJc3N1ZSAjMTE5MzA6IFJlbW92ZWQgZGVwcmVjYXRlZCB0aW1lLmFjY2VwdDJkeWVhciB2YXJpYWJsZS4KKyAgUmVtb3ZlZCB5ZWFyID49IDEwMDAgcmVzdHJpY3Rpb24gZnJvbSBkYXRldGltZS5zdHJmdGltZS4KIAogLSBsb2dnaW5nOiBkb24ndCBkZWZpbmUgUXVldWVMaXN0ZW5lciBpZiBQeXRob24gaGFzIG5vIHRocmVhZCBzdXBwb3J0LgogCkBAIC0xNzg5LDE2ICszMjQ2LDM5IEBACiAtIElzc3VlICMxMTI3NzogbW1hcC5tbWFwKCkgY2FsbHMgZmNudGwoZmQsIEZfRlVMTEZTWU5DKSBvbiBNYWMgT1MgWCB0byBnZXQKICAgYXJvdW5kIGEgbW1hcCBidWcgd2l0aCBzcGFyc2UgZmlsZXMuIFBhdGNoIHdyaXR0ZW4gYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KIAorLSBJc3N1ZSAjODQwNzogQWRkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKSBmdW5jdGlvbiB0byBmZXRjaCBhbmQvb3IgY2hhbmdlIHRoZQorICBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuCisKIC0gSXNzdWUgIzExODU4OiBjb25maWdwYXJzZXIuRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIGV4cGVjdGVkIGxvd2VyLWNhc2Ugc2VjdGlvbgogICBuYW1lcy4KIAogLSBJc3N1ZSAjMTEzMjQ6IENvbmZpZ1BhcnNlcihpbnRlcnBvbGF0aW9uPU5vbmUpIG5vdyB3b3JrcyBjb3JyZWN0bHkuCiAKKy0gSXNzdWUgIzExODExOiBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgpIGlzIG5vdyBJUHY2LWNvbXBhdGlibGUuICBQYXRjaAorICBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKIC0gSXNzdWUgIzExNzYzOiBkb24ndCB1c2UgZGlmZmxpYiBpbiBUZXN0Q2FzZS5hc3NlcnRNdWx0aUxpbmVFcXVhbCBpZiB0aGUKICAgc3RyaW5ncyBhcmUgdG9vIGxvbmcuCiAKIC0gSXNzdWUgIzExMjM2OiBnZXRwYXNzLmdldHBhc3MgcmVzcG9uZHMgdG8gY3RybC1jIG9yIGN0cmwteiBvbiB0ZXJtaW5hbC4KIAorLSBJc3N1ZSAjMTE4NTY6IFNwZWVkIHVwIHBhcnNpbmcgb2YgSlNPTiBudW1iZXJzLgorCistIElzc3VlICMxMTAwNTogdGhyZWFkaW5nLlJMb2NrKCkuX3JlbGVhc2Vfc2F2ZSgpIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUKKyAgbG9jayB3YXMgbm90IGFjcXVpcmVkLgorCistIElzc3VlICMxMTI1ODogU3BlZWQgdXAgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCkgdW5kZXIgTGludXggYnkgYSBmYWN0b3IKKyAgb2YgNSB0byAxMC4gIEluaXRpYWwgcGF0Y2ggYnkgSm9uYXMgSC4KKworLSBJc3N1ZSAjMTEzODI6IFRyaXZpYWwgc3lzdGVtIGNhbGxzLCBzdWNoIGFzIGR1cCgpIG9yIHBpcGUoKSwgbmVlZG4ndAorICByZWxlYXNlIHRoZSBHSUwuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzExMjIzOiBBZGQgdGhyZWFkaW5nLl9pbmZvKCkgZnVuY3Rpb24gcHJvdmlkaW5nIGluZm9ybWF0aW9ucyBhYm91dAorICB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMxMTczMTogc2ltcGxpZnkvZW5oYW5jZSBlbWFpbCBwYXJzZXIvZ2VuZXJhdG9yIEFQSSBieSBpbnRyb2R1Y2luZworICBwb2xpY3kgb2JqZWN0cy4KKwogLSBJc3N1ZSAjMTE3Njg6IFRoZSBzaWduYWwgaGFuZGxlciBvZiB0aGUgc2lnbmFsIG1vZHVsZSBvbmx5IGNhbGxzCiAgIFB5X0FkZFBlbmRpbmdDYWxsKCkgZm9yIHRoZSBmaXJzdCBzaWduYWwgdG8gZml4IGEgZGVhZGxvY2sgb24gcmVlbnRyYW50IG9yCiAgIHBhcmFsbGVsIGNhbGxzLiBQeUVycl9TZXRJbnRlcnJ1cHQoKSB3cml0ZXMgYWxzbyBpbnRvIHRoZSB3YWtlIHVwIGZpbGUuCkBAIC0xODE4LDYgKzMyOTgsMTAgQEAKIC0gSXNzdWUgIzExNDc0OiBGaXggdGhlIGJ1ZyB3aXRoIHVybDJwYXRobmFtZSgpIGhhbmRsaW5nIG9mICcvQ3wvJyBvbiBXaW5kb3dzLgogICBQYXRjaCBieSBTYW50b3NvIFdpamF5YS4KIAorLSBJc3N1ZSAjMTE2ODQ6IGNvbXBsZXRlIGVtYWlsLnBhcnNlciBieXRlcyBBUEkgYnkgYWRkaW5nIEJ5dGVzSGVhZGVyUGFyc2VyLgorCistIFRoZSBiejIgbW9kdWxlIG5vdyBoYW5kbGVzIDRHaUIrIGlucHV0IGJ1ZmZlcnMgY29ycmVjdGx5LgorCiAtIElzc3VlICM5MjMzOiBGaXgganNvbi5sb2Fkcygne30nKSB0byByZXR1cm4gYSBkaWN0IChpbnN0ZWFkIG9mIGEgbGlzdCksIHdoZW4KICAgX2pzb24gaXMgbm90IGF2YWlsYWJsZS4KIApAQCAtMTgyOSwxNyArMzMxMywzMyBAQAogLSBJc3N1ZSAjMTAwMTk6IEZpeGVkIHJlZ3Jlc3Npb24gaW4ganNvbiBtb2R1bGUgd2hlcmUgYW4gaW5kZW50IG9mIDAgc3RvcHBlZAogICBhZGRpbmcgbmV3bGluZXMgYW5kIGFjdGVkIGluc3RlYWQgbGlrZSAnTm9uZScuCiAKKy0gSXNzdWUgIzExMTg2OiBweWRvYyBpZ25vcmVzIGEgbW9kdWxlIGlmIGl0cyBuYW1lIGNvbnRhaW5zIGEgc3Vycm9nYXRlCisgIGNoYXJhY3RlciBpbiB0aGUgaW5kZXggb2YgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTE4MTU6IFVzZSBhIGxpZ2h0LXdlaWdodCBTaW1wbGVRdWV1ZSBmb3IgdGhlIHJlc3VsdCBxdWV1ZSBpbgorICBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvci4KKwogLSBJc3N1ZSAjNTE2MjogVHJlYXQgc2VydmljZXMgbGlrZSBmcm96ZW4gZXhlY3V0YWJsZXMgdG8gYWxsb3cgY2hpbGQgc3Bhd25pbmcKICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBvbiBXaW5kb3dzLgogCistIGxvZ2dpbmcuYmFzaWNDb25maWcgbm93IHN1cHBvcnRzIGFuIG9wdGlvbmFsICdoYW5kbGVycycgYXJndW1lbnQgdGFraW5nIGFuCisgIGl0ZXJhYmxlIG9mIGhhbmRsZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSByb290IGxvZ2dlci4gQWRkaXRpb25hbCBwYXJhbWV0ZXIKKyAgY2hlY2tzIHdlcmUgYWxzbyBhZGRlZCB0byBiYXNpY0NvbmZpZy4KKwogLSBJc3N1ZSAjMTE4MTQ6IEZpeCBsaWtlbHkgdHlwbyBpbiBtdWx0aXByb2Nlc3NpbmcuUG9vbC5fdGVybWluYXRlKCkuCiAKIC0gSXNzdWUgIzExNzQ3OiBGaXggcmFuZ2UgZm9ybWF0dGluZyBpbiBkaWZmbGliLmNvbnRleHRfZGlmZigpIGFuZAogICBkaWZmbGliLnVuaWZpZWRfZGlmZigpLgogCiAtIElzc3VlICM4NDI4OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBtdWx0aXByb2Nlc3NpbmcuUG9vbCB3aGVuIHRlcm1pbmF0aW5nCi0gIHdvcmtlciBwcm9jZXNzZXM6IG5ldyBwcm9jZXNzZXMgd291bGQgYmUgc3Bhd25lZCB3aGlsZSB0aGUgcG9vbCBpcyBiZWluZyBzaHV0Ci0gIGRvd24uICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisgIHdvcmtlciBwcm9jZXNzZXM6IG5ldyBwcm9jZXNzZXMgd291bGQgYmUgc3Bhd25lZCB3aGlsZSB0aGUgcG9vbCBpcyBiZWluZworICBzaHV0IGRvd24uICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzI2NTA6IHJlLmVzY2FwZSgpIG5vIGxvbmdlciBlc2NhcGVzIHRoZSAnXycuCisKKy0gSXNzdWUgIzExNzU3OiBzZWxlY3Quc2VsZWN0KCkgbm93IHJhaXNlcyBWYWx1ZUVycm9yIHdoZW4gYSBuZWdhdGl2ZSB0aW1lb3V0CisgIGlzIHBhc3NlZCAocHJldmlvdXNseSwgYSBzZWxlY3QuZXJyb3Igd2l0aCBFSU5WQUwgd291bGQgYmUgcmFpc2VkKS4gIFBhdGNoCisgIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KIAogLSBJc3N1ZSAjNzMxMTogZml4IGh0bWwucGFyc2VyIHRvIGFjY2VwdCBub24tQVNDSUkgYXR0cmlidXRlIHZhbHVlcy4KIApAQCAtMTg0NywyMSArMzM0Nyw1MCBAQAogICBtdWx0aXBhcnQgc3VicGFydHMgd2l0aCBhbiA4LWJpdCBDVEUgaW50byB1bmljb2RlIGluc3RlYWQgb2YgcHJlc2VydmluZyB0aGUKICAgYnl0ZXMuCiAKKy0gSXNzdWUgIzE2OTA2MDg6IGVtYWlsLnV0aWwuZm9ybWF0YWRkciBpcyBub3cgUkZDIDIwNDcgYXdhcmU6ICBpdCBub3cgaGFzIGEKKyAgY2hhcnNldCBwYXJhbWV0ZXIgdGhhdCBkZWZhdWx0cyB0byB1dGYtOCBhbmQgaXMgdXNlZCBhcyB0aGUgY2hhcnNldCBmb3IgUkZDCisgIDIwNDcgZW5jb2Rpbmcgd2hlbiB0aGUgcmVhbG5hbWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCisKIC0gSXNzdWUgIzEwOTYzOiBFbnN1cmUgdGhhdCBzdWJwcm9jZXNzLmNvbW11bmljYXRlKCkgbmV2ZXIgcmFpc2VzIEVQSVBFLgogCistIElzc3VlICMxMDc5MTogSW1wbGVtZW50IG1pc3NpbmcgbWV0aG9kIEd6aXBGaWxlLnJlYWQxKCksIGFsbG93aW5nIEd6aXBGaWxlCisgIHRvIGJlIHdyYXBwZWQgaW4gYSBUZXh0SU9XcmFwcGVyLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgorCistIElzc3VlICMxMTcwNzogQWRkZWQgYSBmYXN0IEMgdmVyc2lvbiBvZiBmdW5jdG9vbHMuY21wX3RvX2tleSgpLgorICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgorCistIElzc3VlICMxMTY4ODogQWRkIHNxbGl0ZTMuQ29ubmVjdGlvbi5zZXRfdHJhY2VfY2FsbGJhY2soKS4gIFBhdGNoIGJ5CisgIFRvcnN0ZW4gTGFuZHNjaG9mZi4KKwogLSBJc3N1ZSAjMTE3NDY6IEZpeCBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbigpIHRvIGFjY2VwdCBlbGxpcHRpYyBjdXJ2ZQogICBwcml2YXRlIGtleXMuCiAKKy0gSXNzdWUgIzU4NjM6IFJld3JpdGUgQloyRmlsZSBpbiBwdXJlIFB5dGhvbiwgYW5kIGFsbG93IGl0IHRvIGFjY2VwdAorICBmaWxlLWxpa2Ugb2JqZWN0cyB1c2luZyBhIG5ldyBgYGZpbGVvYmpgYCBjb25zdHJ1Y3RvciBhcmd1bWVudC4gIFBhdGNoIGJ5CisgIE5hZGVlbSBWYXdkYS4KKworLSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRTYW1lRWxlbWVudHMgaGFzIGJlZW4gcmVtb3ZlZC4KKwogLSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIGluaXRmc2VuY29kaW5nKCkgd2FzIG5vdAogICBjYWxsZWQgeWV0OiBkZXRlY3QgYm9vdHN0cmFwIChzdGFydHVwKSBpc3N1ZXMgZWFybGllci4KIAorLSBJc3N1ZSAjMTEzOTM6IEFkZCB0aGUgbmV3IGZhdWx0aGFuZGxlciBtb2R1bGUuCisKIC0gSXNzdWUgIzExNjE4OiBGaXggdGhlIHRpbWVvdXQgbG9naWMgaW4gdGhyZWFkaW5nLkxvY2suYWNxdWlyZSgpIHVuZGVyIFdpbmRvd3MuCiAKKy0gUmVtb3ZlZCB0aGUgJ3N0cmljdCcgYXJndW1lbnQgdG8gZW1haWwucGFyc2VyLlBhcnNlciwgd2hpY2ggaGFzIGJlZW4KKyAgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMi40LgorCiAtIElzc3VlICMxMTI1NjogRml4IGluc3BlY3QuZ2V0Y2FsbGFyZ3Mgb24gZnVuY3Rpb25zIHRoYXQgdGFrZSBvbmx5IGtleXdvcmQKICAgYXJndW1lbnRzLgogCiAtIElzc3VlICMxMTY5NjogRml4IElEIGdlbmVyYXRpb24gaW4gbXNpbGliLgogCistIGl0ZXJ0b29scy5hY2N1bXVsYXRlIG5vdyBzdXBwb3J0cyBhbiBvcHRpb25hbCAqZnVuYyogYXJndW1lbnQgZm9yCisgIGEgdXNlci1zdXBwbGllZCBiaW5hcnkgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzExNjkyOiBSZW1vdmUgdW5uZWNlc3NhcnkgZGVtbyBmdW5jdGlvbnMgaW4gc3VicHJvY2VzcyBtb2R1bGUuCisKIC0gSXNzdWUgIzk2OTY6IEZpeCBleGNlcHRpb24gaW5jb3JyZWN0bHkgcmFpc2VkIGJ5IHhkcmxpYi5QYWNrZXIucGFja19pbnQgd2hlbgogICB0cnlpbmcgdG8gcGFjayBhIG5lZ2F0aXZlIChpbi1yYW5nZSkgaW50ZWdlci4KIApAQCAtMTg3Nyw3ICszNDA2LDI2IEBACiAtIElzc3VlICMxMTYzNTogRG9uJ3QgdXNlIHBvbGxpbmcgaW4gd29ya2VyIHRocmVhZHMgYW5kIHByb2Nlc3NlcyBsYXVuY2hlZCBieQogICBjb25jdXJyZW50LmZ1dHVyZXMuCiAKLS0gSXNzdWUgIzExNjI4OiBjbXBfdG9fa2V5IGdlbmVyYXRlZCBjbGFzcyBzaG91bGQgdXNlIF9fc2xvdHNfXworLSBJc3N1ZSAjNjgxMTogQWxsb3cgaW1wb3J0bGliIHRvIGNoYW5nZSBhIGNvZGUgb2JqZWN0J3MgY29fZmlsZW5hbWUgYXR0cmlidXRlCisgIHRvIG1hdGNoIHRoZSBwYXRoIHRvIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBjdXJyZW50bHkgaXMsIG5vdCB3aGVyZSB0aGUgY29kZQorICBvYmplY3Qgb3JpZ2luYWxseSBjYW1lIGZyb20uCisKKy0gSXNzdWUgIzg3NTQ6IEhhdmUgaW1wb3J0bGliIHVzZSB0aGUgcmVwciBvZiBhIG1vZHVsZSBuYW1lIGluIGVycm9yIG1lc3NhZ2VzLgorCistIElzc3VlICMxMTU5MTogUHJldmVudCAiaW1wb3J0IHNpdGUiIGZyb20gbW9kaWZ5aW5nIHN5cy5wYXRoIHdoZW4gcHl0aG9uCisgIHdhcyBzdGFydGVkIHdpdGggLVMuCisKKy0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIG5vdyBhZGRzIGEgX3NvdXJjZSBhdHRyaWJ1dGUgdG8gdGhlIGdlbmVyYXRlZAorICBjbGFzcy4gIFRoaXMgbWFrZSB0aGUgc291cmNlIG1vcmUgYWNjZXNzaWJsZSB0aGFuIHRoZSBvdXRkYXRlZAorICAidmVyYm9zZSIgb3B0aW9uIHdoaWNoIHByaW50cyB0byBzdGRvdXQgYnV0IGRvZXNuJ3QgbWFrZSB0aGUgc291cmNlCisgIHN0cmluZyBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzExMzcxOiBNYXJrIGdldG9wdCBlcnJvciBtZXNzYWdlcyBhcyBsb2NhbGl6YWJsZS4gIFBhdGNoIGJ5IEZpbGlwCisgIEdydXN6Y3p5xYRza2kuCisKKy0gSXNzdWUgIzExMzMzOiBBZGQgX19zbG90c19fIHRvIGNvbGxlY3Rpb25zIEFCQ3MuCisKKy0gSXNzdWUgIzExNjI4OiBjbXBfdG9fa2V5IGdlbmVyYXRlZCBjbGFzcyBzaG91bGQgdXNlIF9fc2xvdHNfXy4KIAogLSBJc3N1ZSAjMTE2NjY6IGxldCBoZWxwKCkgZGlzcGxheSBuYW1lZCB0dXBsZSBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzCiAgIHRoYXQgc3RhcnQgd2l0aCBhIGxlYWRpbmcgdW5kZXJzY29yZS4KQEAgLTE4ODgsNiArMzQzNiwxMCBAQAogLSBJc3N1ZSAjNTUzNzogRml4IHRpbWUyaXNveigpIGFuZCB0aW1lMm5ldHNjYXBlKCkgZnVuY3Rpb25zIG9mCiAgIGh0dHBsaWIuY29va2llamFyIGZvciBleHBpcmF0aW9uIHllYXIgZ3JlYXRlciB0aGFuIDIwMzggb24gMzItYml0IHN5c3RlbXMuCiAKKy0gSXNzdWUgIzQzOTE6IFVzZSBwcm9wZXIgZ2V0dGV4dCBwbHVyYWwgZm9ybXMgaW4gb3B0cGFyc2UuCisKKy0gSXNzdWUgIzExMTI3OiBSYWlzZSBhIFR5cGVFcnJvciB3aGVuIHRyeWluZyB0byBwaWNrbGUgYSBzb2NrZXQgb2JqZWN0LgorCiAtIElzc3VlICMxMTU2MzogQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIgaXMgc2VudCBieSByZXF1ZXN0cyB1c2luZyBVUkxPcGVuZXIKICAgY2xhc3Mgd2hpY2ggaGVscHMgaW4gY2xvc2luZyBvZiBzb2NrZXRzIGFmdGVyIGNvbm5lY3Rpb24gaXMgb3Zlci4gUGF0Y2gKICAgY29udHJpYnV0aW9ucyBieSBKZWZmIE1jTmVpbCBhbmQgTmFkZWVtIFZhd2RhLgpAQCAtMTg5OCw2ICszNDUwLDggQEAKIC0gSXNzdWUgIzU0MjE6IEZpeCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2Ugd2hlbiBvbmUgb2Ygc29ja2V0LnNlbmR0bygpJ3MKICAgYXJndW1lbnRzIGhhcyB0aGUgd3JvbmcgdHlwZS4gIFBhdGNoIGJ5IE5pa2l0YSBWZXRvc2hraW4uCiAKKy0gSXNzdWUgIzEwODEyOiBBZGQgc29tZSBleHRyYSBwb3NpeCBmdW5jdGlvbnMgdG8gdGhlIG9zIG1vZHVsZS4KKwogLSBJc3N1ZSAjMTA5Nzk6IHVuaXR0ZXN0IHN0ZG91dCBidWZmZXJpbmcgbm93IHdvcmtzIHdpdGggY2xhc3MgYW5kIG1vZHVsZQogICBzZXR1cCBhbmQgdGVhcmRvd24uCiAKQEAgLTE5MTAsNzUgKzM0NjQsMTU0IEBACiAgIHJlbGF0aXZlIHRvIFB5dGhvbjIgYW5kIHRoZSByZXN1bHQgaXMgbm93IHRoZSBzYW1lIGFzIGl0IHdhcyBpbiBQeXRob24yLgogCiAtIElzc3VlICM5Mjk4OiBiYXNlNjQgYm9kaWVzIHdlcmVuJ3QgYmVpbmcgZm9sZGVkIHRvIGxpbmUgbGVuZ3RocyBsZXNzIHRoYW4gNzgsCi0gIHdoaWNoIHdhcyBhIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gUHl0aG9uMi4gIFVubGlrZSBQeXRob24yLCB0aGUgbGFzdCBsaW5lIG9mCi0gIHRoZSBmb2xkZWQgYm9keSBub3cgZW5kcyB3aXRoIGEgY2FycmlhZ2UgcmV0dXJuLgorICB3aGljaCB3YXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIFB5dGhvbjIuICBVbmxpa2UgUHl0aG9uMiwgdGhlIGxhc3QgbGluZQorICBvZiB0aGUgZm9sZGVkIGJvZHkgbm93IGVuZHMgd2l0aCBhIGNhcnJpYWdlIHJldHVybi4KIAogLSBJc3N1ZSAjMTE1NjA6IHNodXRpbC51bnBhY2tfYXJjaGl2ZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGZvcm1hdAogICBwYXJhbWV0ZXIuIFBhdGNoIGJ5IEV2YW4gRGFuZHJlYS4KIAorLSBJc3N1ZSAjNTg3MDogQWRkIGBzdWJwcm9jZXNzLkRFVk5VTExgIGNvbnN0YW50LgorCiAtIElzc3VlICMxMTEzMzogZml4IHR3byBjYXNlcyB3aGVyZSBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGNhbiB0cmlnZ2VyIGNvZGUKICAgZXhlY3V0aW9uLiBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCiAKIC0gSXNzdWUgIzExNTY5OiB1c2UgYWJzb2x1dGUgcGF0aCB0byB0aGUgc3lzY3RsIGNvbW1hbmQgaW4gbXVsdGlwcm9jZXNzaW5nIHRvCi0gIGVuc3VyZSB0aGF0IGl0IHdpbGwgYmUgZm91bmQgcmVnYXJkbGVzcyBvZiB0aGUgc2hlbGwgUEFUSC4gVGhpcyBlbnN1cmVzIHRoYXQKLSAgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCB3b3JrcyBvbiBkZWZhdWx0IGluc3RhbGxzIG9mIE1hY09TWC4KKyAgZW5zdXJlIHRoYXQgaXQgd2lsbCBiZSBmb3VuZCByZWdhcmRsZXNzIG9mIHRoZSBzaGVsbCBQQVRILiBUaGlzIGVuc3VyZXMKKyAgdGhhdCBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50IHdvcmtzIG9uIGRlZmF1bHQgaW5zdGFsbHMgb2YgTWFjT1NYLgogCiAtIElzc3VlICMxMTUwMTogZGlzdXRpbHMuYXJjaGl2ZV91dGlscy5tYWtlX3ppcGZpbGUgbm8gbG9uZ2VyIGZhaWxzIGlmIHpsaWIgaXMKICAgbm90IGluc3RhbGxlZC4gSW5zdGVhZCwgdGhlIHppcGZpbGUuWklQX1NUT1JFRCBjb21wcmVzc2lvbiBpcyB1c2VkIHRvIGNyZWF0ZQogICB0aGUgWmlwRmlsZS4gUGF0Y2ggYnkgTmF0YWxpYSBCLiBCaWRhcnQuCiAKKy0gSXNzdWUgIzExMjg5OiBgc210cC5TTVRQYCBjbGFzcyBiZWNvbWVzIGEgY29udGV4dCBtYW5hZ2VyIHNvIGl0IGNhbiBiZSB1c2VkCisgIGluIGEgYHdpdGhgIHN0YXRlbWVudC4gIENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEuCisKIC0gSXNzdWUgIzExNTU0OiBGaXhlZCBzdXBwb3J0IGZvciBKYXBhbmVzZSBjb2RlY3M7IHByZXZpb3VzbHkgdGhlIGJvZHkgb3V0cHV0CiAgIGVuY29kaW5nIHdhcyBub3QgZG9uZSBpZiBldWMtanAgb3Igc2hpZnQtamlzIHdhcyBzcGVjaWZpZWQgYXMgdGhlIGNoYXJzZXQuCiAKLS0gSXNzdWUgIzExNTAwOiBGaXhlZCBhIGJ1ZyBpbiB0aGUgb3MgeCBwcm94eSBieXBhc3MgY29kZSBmb3IgZnVsbHkgcXVhbGlmaWVkIElQCi0gIGFkZHJlc3NlcyBpbiB0aGUgcHJveHkgZXhjZXB0aW9uIGxpc3QuCistIElzc3VlICMxMTUwOTogU2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0ZXN0IGNvdmVyYWdlIG9mIGZpbGVpbnB1dC4KKyAgUGF0Y2ggYnkgRGVudmVyIENvbmV5YmVhcmUgYXQgUHlDb24gMjAxMSBTcHJpbnRzLgogCi0tIElzc3VlICMxMTQ5MTogZGJtLmVycm9yIGlzIG5vIGxvbmdlciByYWlzZWQgd2hlbiBkYm0ub3BlbiBpcyBjYWxsZWQgd2l0aCB0aGUKLSAgIm4iIGFzIHRoZSBmbGFnIGFyZ3VtZW50IGFuZCB0aGUgZmlsZSBleGlzdHMuIFRoZSBiZWhhdmlvciBtYXRjaGVzIHRoZQotICBkb2N1bWVudGF0aW9uIGFuZCBnZW5lcmFsIGxvZ2ljLgorLSBJc3N1ZSAjMTE0MDc6IGBUZXN0Q2FzZS5ydW5gIHJldHVybnMgdGhlIHJlc3VsdCBvYmplY3QgdXNlZCBvciBjcmVhdGVkLgorICBDb250cmlidXRlZCBieSBKYW5hdGhhbiBIYXJ0bGV5LgogCi0tIElzc3VlICMxMTEzMTogRml4IHNpZ24gb2YgemVybyBpbiBkZWNpbWFsLkRlY2ltYWwgcGx1cyBhbmQgbWludXMgb3BlcmF0aW9ucwotICB3aGVuIHRoZSByb3VuZGluZyBtb2RlIGlzIFJPVU5EX0ZMT09SLgorLSBJc3N1ZSAjMTE1MDA6IEZpeGVkIGEgYnVnIGluIHRoZSBvcyB4IHByb3h5IGJ5cGFzcyBjb2RlIGZvciBmdWxseSBxdWFsaWZpZWQKKyAgSVAgYWRkcmVzc2VzIGluIHRoZSBwcm94eSBleGNlcHRpb24gbGlzdC4KKworLSBJc3N1ZSAjMTE0OTE6IGRibS5lcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIHdoZW4gZGJtLm9wZW4gaXMgY2FsbGVkIHdpdGgKKyAgdGhlICJuIiBhcyB0aGUgZmxhZyBhcmd1bWVudCBhbmQgdGhlIGZpbGUgZXhpc3RzLiBUaGUgYmVoYXZpb3IgbWF0Y2hlcworICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgZ2VuZXJhbCBsb2dpYy4KKworLSBJc3N1ZSAjMTE2MjQ3NzogUG9zdGVsIFByaW5jaXBsZSBhZGp1c3RtZW50IHRvIGVtYWlsIGRhdGUgcGFyc2luZzogaGFuZGxlIHRoZQorICBmYWN0IHRoYXQgc29tZSBub24tY29tcGxpYW50IE1VQXMgdXNlICcuJyBpbnN0ZWFkIG9mICc6JyBpbiB0aW1lIHNwZWNzLgorCistIElzc3VlICMxMTEzMTogRml4IHNpZ24gb2YgemVybyBpbiBkZWNpbWFsLkRlY2ltYWwgcGx1cyBhbmQgbWludXMKKyAgb3BlcmF0aW9ucyB3aGVuIHRoZSByb3VuZGluZyBtb2RlIGlzIFJPVU5EX0ZMT09SLgorCistIElzc3VlICM5OTM1OiBTcGVlZCB1cCBwaWNrbGluZyBvZiBpbnN0YW5jZXMgb2YgdXNlci1kZWZpbmVkIGNsYXNzZXMuCiAKIC0gSXNzdWUgIzU2MjI6IEZpeCBjdXJzZXMud3JhcHBlciB0byByYWlzZSBjb3JyZWN0IGV4Y2VwdGlvbiBpZiBjdXJzZXMKICAgaW5pdGlhbGl6YXRpb24gZmFpbHMuCiAKKy0gSXNzdWUgIzExNDA4OiBJbiB0aHJlYWRpbmcuTG9jay5hY3F1aXJlKCksIG9ubHkgY2FsbCBnZXR0aW1lb2ZkYXkoKSB3aGVuCisgIHJlYWxseSBuZWNlc3NhcnkuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKIC0gSXNzdWUgIzExMzkxOiBXcml0aW5nIHRvIGEgbW1hcCBvYmplY3QgY3JlYXRlZCB3aXRoCiAgIGBgbW1hcC5QUk9UX1JFQUR8bW1hcC5QUk9UX0VYRUNgYCB3b3VsZCBzZWdmYXVsdCBpbnN0ZWFkIG9mIHJhaXNpbmcgYQogICBUeXBlRXJyb3IuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCiAKLS0gSXNzdWUgIzExMzA2OiBtYWlsYm94IGluIGNlcnRhaW4gY2FzZXMgYWRhcHRzIHRvIGFuIGluYWJpbGl0eSB0byBvcGVuIGNlcnRhaW4KLSAgZmlsZXMgaW4gcmVhZC13cml0ZSBtb2RlLiAgUHJldmlvdXNseSBpdCBkZXRlY3RlZCB0aGlzIGJ5IGNoZWNraW5nIGZvciBFQUNDRVMsCi0gIG5vdyBpdCBhbHNvIGNoZWNrcyBmb3IgRVJPRlMuCistIElzc3VlICM5Nzk1OiBhZGQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHN1cHBvcnQgZm9yIG5udHBsaWIuTk5UUCBjbGFzcy4KIAotLSBJc3N1ZSAjMTEyNjU6IGFzeW5jb3JlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBFUElQRSwgRUJBREYgYW5kIEVBR0FJTiBlcnJvcnMgb24KLSAgYWNjZXB0KCksIHNlbmQoKSBhbmQgcmVjdigpLgorLSBJc3N1ZSAjMTEzMDY6IG1haWxib3ggaW4gY2VydGFpbiBjYXNlcyBhZGFwdHMgdG8gYW4gaW5hYmlsaXR5IHRvIG9wZW4KKyAgY2VydGFpbiBmaWxlcyBpbiByZWFkLXdyaXRlIG1vZGUuICBQcmV2aW91c2x5IGl0IGRldGVjdGVkIHRoaXMgYnkKKyAgY2hlY2tpbmcgZm9yIEVBQ0NFUywgbm93IGl0IGFsc28gY2hlY2tzIGZvciBFUk9GUy4KKworLSBJc3N1ZSAjMTEyNjU6IGFzeW5jb3JlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBFUElQRSwgRUJBREYgYW5kIEVBR0FJTiBlcnJvcnMKKyAgb24gYWNjZXB0KCksIHNlbmQoKSBhbmQgcmVjdigpLgorCistIElzc3VlICMxMTM3NzogRGVwcmVjYXRlIHBsYXRmb3JtLnBvcGVuKCkgYW5kIHJlaW1wbGVtZW50IGl0IHdpdGggb3MucG9wZW4oKS4KKworLSBJc3N1ZSAjODUxMzogT24gVU5JWCwgc3VicHJvY2VzcyBzdXBwb3J0cyBieXRlcyBjb21tYW5kIHN0cmluZy4KKworLSBJc3N1ZSAjMTA4NjY6IEFkZCBzb2NrZXQuc2V0aG9zdG5hbWUoKS4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKKy0gSXNzdWUgIzExMTQwOiBMb2NrLnJlbGVhc2UoKSBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yIHdoZW4gYXR0ZW1wdGluZworICB0byByZWxlYXNlIGFuIHVuYWNxdWlyZWQgbG9jaywgYXMgY2xhaW1lZCBpbiB0aGUgdGhyZWFkaW5nIGRvY3VtZW50YXRpb24uCisgIFRoZSBfdGhyZWFkLmVycm9yIGV4Y2VwdGlvbiBpcyBub3cgYW4gYWxpYXMgb2YgUnVudGltZUVycm9yLiAgUGF0Y2ggYnkKKyAgRmlsaXAgR3J1c3pjennFhHNraS4gIFBhdGNoIGZvciBfZHVtbXlfdGhyZWFkIGJ5IEF5bWVyaWMgQXVndXN0aW4uCisKKy0gSXNzdWUgIzg1OTQ6IGZ0cGxpYiBub3cgcHJvdmlkZXMgYSBzb3VyY2VfYWRkcmVzcyBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB3aGljaAorICAoYWRkcmVzcywgcG9ydCkgdG8gYmluZCB0byBiZWZvcmUgY29ubmVjdGluZy4KIAogLSBJc3N1ZSAjMTEzMjY6IEFkZCB0aGUgbWlzc2luZyBjb25uZWN0X2V4KCkgaW1wbGVtZW50YXRpb24gZm9yIFNTTCBzb2NrZXRzLAogICBhbmQgbWFrZSBpdCB3b3JrIGZvciBub24tYmxvY2tpbmcgY29ubmVjdHMuCiAKKy0gSXNzdWUgIzExMjk3OiBBZGQgY29sbGVjdGlvbnMuQ2hhaW5NYXAoKS4KKworLSBJc3N1ZSAjMTA3NTU6IEFkZCB0aGUgcG9zaXguZmxpc3RkaXIoKSBmdW5jdGlvbi4gIFBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIElzc3VlICM0NzYxOiBBZGQgdGhlIGBgKmF0KClgYCBmYW1pbHkgb2YgZnVuY3Rpb25zIChvcGVuYXQoKSwgZXRjLikgdG8gdGhlCisgIHBvc2l4IG1vZHVsZS4gIFBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCiAtIElzc3VlICM3MzIyOiBUcnlpbmcgdG8gcmVhZCBmcm9tIGEgc29ja2V0J3MgZmlsZS1saWtlIG9iamVjdCBhZnRlciBhIHRpbWVvdXQKICAgb2NjdXJyZWQgbm93IHJhaXNlcyBhbiBlcnJvciBpbnN0ZWFkIG9mIHNpbGVudGx5IGxvc2luZyBkYXRhLgogCistIElzc3VlICMxMTI5MTogcG9wbGliLlBPUCBubyBsb25nZXIgc3VwcHJlc3NlcyBlcnJvcnMgb24gcXVpdCgpLgorCistIElzc3VlICMxMTE3NzogYXN5bmNvcmUncyBjcmVhdGVfc29ja2V0KCkgYXJndW1lbnRzIGNhbiBub3cgYmUgb21pdHRlZC4KKworLSBJc3N1ZSAjNjA2NDogQWRkIGEgYGBkYWVtb25gYCBrZXl3b3JkIGFyZ3VtZW50IHRvIHRoZSB0aHJlYWRpbmcuVGhyZWFkCisgIGFuZCBtdWx0aXByb2Nlc3NpbmcuUHJvY2VzcyBjb25zdHJ1Y3RvcnMgaW4gb3JkZXIgdG8gb3ZlcnJpZGUgdGhlCisgIGRlZmF1bHQgYmVoYXZpb3VyIG9mIGluaGVyaXRpbmcgdGhlIGRhZW1vbmljIHByb3BlcnR5IGZyb20gdGhlIGN1cnJlbnQKKyAgdGhyZWFkL3Byb2Nlc3MuCisKIC0gSXNzdWUgIzEwOTU2OiBCdWZmZXJlZCBJL08gY2xhc3NlcyByZXRyeSByZWFkaW5nIG9yIHdyaXRpbmcgYWZ0ZXIgYSBzaWduYWwKICAgaGFzIGFycml2ZWQgYW5kIHRoZSBoYW5kbGVyIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4KIAorLSBJc3N1ZSAjMTA3ODQ6IE5ldyBvcy5nZXRwcmlvcml0eSgpIGFuZCBvcy5zZXRwcmlvcml0eSgpIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMTExMTQ6IEZpeCBjYXRhc3Ryb3BoaWMgcGVyZm9ybWFuY2Ugb2YgdGVsbCgpIG9uIHRleHQgZmlsZXMgKHVwCisgIHRvIDEwMDB4IGZhc3RlciBpbiBzb21lIGNhc2VzKS4gIEl0IGlzIHN0aWxsIG9uZSB0byB0d28gb3JkZXIgb2YgbWFnbml0dWRlcworICBzbG93ZXIgdGhhbiBiaW5hcnkgdGVsbCgpLgorCistIElzc3VlICMxMDg4MjogQWRkIG9zLnNlbmRmaWxlIGZ1bmN0aW9uLgorCistIElzc3VlICMxMDg2ODogQWxsb3cgdXNhZ2Ugb2YgdGhlIHJlZ2lzdGVyIG1ldGhvZCBvZiBhbiBBQkMgYXMgYSBjbGFzcworICBkZWNvcmF0b3IuCisKIC0gSXNzdWUgIzExMjI0OiBGaXhlZCBhIHJlZ3Jlc3Npb24gaW4gdGFyZmlsZSB0aGF0IGFmZmVjdGVkIHRoZSBmaWxlLWxpa2UKICAgb2JqZWN0cyByZXR1cm5lZCBieSBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgcmVnYXJkaW5nIHBlcmZvcm1hbmNlLCBtZW1vcnkKICAgY29uc3VtcHRpb24gYW5kIGZhaWx1cmVzIHdpdGggdGhlIHN0cmVhbSBpbnRlcmZhY2UuCiAKKy0gSXNzdWUgIzEwOTI0OiBBZGRpbmcgc2FsdCBhbmQgTW9kdWxhciBDcnlwdCBGb3JtYXQgdG8gY3J5cHQgbGlicmFyeS4KKyAgTW92ZWQgb2xkIEMgd3JhcHBlciB0byBfY3J5cHQsIGFuZCBhZGRlZCBhIFB5dGhvbiB3cmFwcGVyIHdpdGgKKyAgZW5oYW5jZWQgc2FsdCBnZW5lcmF0aW9uIGFuZCBzaW1wbGVyIEFQSSBmb3IgcGFzc3dvcmQgZ2VuZXJhdGlvbi4KKwogLSBJc3N1ZSAjMTEwNzQ6IE1ha2UgJ3Rva2VuaXplJyBzbyBpdCBjYW4gYmUgcmVsb2FkZWQuCiAKKy0gSXNzdWUgIzExMDg1OiBNb3ZlZCBjb2xsZWN0aW9ucyBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgaW50byBhIHNlcGFyYXRlCisgIG1vZHVsZSBjYWxsZWQgY29sbGVjdGlvbnMuYWJjLCBmb2xsb3dpbmcgdGhlIHBhdHRlcm4gdXNlZCBieSBpbXBvcnRsaWIuYWJjLgorICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSBuYW1lcyBhcmUgaW1wb3J0ZWQgaW50byB0aGUgY29sbGVjdGlvbnMKKyAgbW9kdWxlLgorCiAtIElzc3VlICM0NjgxOiBBbGxvdyBtbWFwKCkgdG8gd29yayBvbiBmaWxlIHNpemVzIGFuZCBvZmZzZXRzIGxhcmdlciB0aGFuCiAgIDRHQiwgZXZlbiBvbiAzMi1iaXQgYnVpbGRzLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbCwgYWRhcHRlZCBmb3IKICAgMzItYml0IFdpbmRvd3MuCiAKKy0gSXNzdWUgIzExMTY5OiBjb21waWxlYWxsIG1vZHVsZSB1c2VzIHJlcHIoKSB0byBmb3JtYXQgZmlsZW5hbWVzIGFuZCBwYXRocyB0bworICBlc2NhcGUgc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHNob3cgc3BhY2VzLgorCiAtIElzc3VlICMxMTA4OTogRml4IHBlcmZvcm1hbmNlIGlzc3VlIGxpbWl0aW5nIHRoZSB1c2Ugb2YgQ29uZmlnUGFyc2VyKCkKICAgd2l0aCBsYXJnZSBjb25maWcgZmlsZXMuCiAKIC0gSXNzdWUgIzEwMjc2OiBGaXggdGhlIHJlc3VsdHMgb2YgemxpYi5jcmMzMigpIGFuZCB6bGliLmFkbGVyMzIoKSBvbiBidWZmZXJzCiAgIGxhcmdlciB0aGFuIDRHQi4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KIAorLSBJc3N1ZSAjMTEzODg6IEFkZGVkIGEgY2xlYXIoKSBtZXRob2QgdG8gTXV0YWJsZVNlcXVlbmNlCisKKy0gSXNzdWUgIzExMTc0OiBBZGQgYXJncGFyc2UuTWV0YXZhclR5cGVIZWxwRm9ybWF0dGVyLCB3aGljaCB1c2VzIHR5cGUgbmFtZXMKKyAgZm9yIHRoZSBuYW1lcyBvZiBvcHRpb25hbCBhbmQgcG9zaXRpb25hbCBhcmd1bWVudHMgaW4gaGVscCBtZXNzYWdlcy4KKwogLSBJc3N1ZSAjOTM0ODogUmFpc2UgYW4gZWFybHkgZXJyb3IgaWYgYXJncGFyc2UgbmFyZ3MgYW5kIG1ldGF2YXIgZG9uJ3QgbWF0Y2guCiAKIC0gSXNzdWUgIzg5ODI6IEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBhcmdwYXJzZSBOYW1lc3BhY2Ugb2JqZWN0LgpAQCAtMTk5MCwyOCArMzYyMywxMzcgQEAKIAogLSBJc3N1ZSAjOTM0NzogRml4IGZvcm1hdHRpbmcgZm9yIHR1cGxlcyBpbiBhcmdwYXJzZSB0eXBlPSBlcnJvciBtZXNzYWdlcy4KIAorLSBJc3N1ZSAjMTIxOTE6IEFkZGVkIHNodXRpbC5jaG93bigpIHRvIGNoYW5nZSB1c2VyIGFuZC9vciBncm91cCBvd25lciBvZiBhCisgIGdpdmVuIHBhdGggYWxzbyBzcGVjaWZ5aW5nIHRoZWlyIG5hbWVzLgorCistIElzc3VlICMxMzk4ODogVGhlIF9lbGVtZW50dHJlZSBhY2NlbGVyYXRvciBpcyB1c2VkIHdoZW5ldmVyIGF2YWlsYWJsZS4KKyAgTm93IHhtbC5ldHJlZS5jRWxlbWVudFRyZWUgYmVjb21lcyBhIGRlcHJlY2F0ZWQgYWxpYXMgdG8gRWxlbWVudFRyZWUuCisKIEJ1aWxkCiAtLS0tLQogCistIElzc3VlICM2ODA3OiBSdW4gbXNpc3VwcG9ydC5tYWsgZWFybGllci4KKworLSBJc3N1ZSAjMTA1ODA6IE1pbm9yIGdyYW1tYXIgY2hhbmdlIGluIFdpbmRvd3MgaW5zdGFsbGVyLgorCistIElzc3VlICMxMzMyNjogQ2xlYW4gX19weWNhY2hlX18gZGlyZWN0b3JpZXMgY29ycmVjdGx5IG9uIE9wZW5CU0QuCisKKy0gUEVQIDM5MzogdGhlIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLXdpZGUtdW5pY29kZSBpcyByZW1vdmVkLgorCistIElzc3VlICMxMjg1MjogU2V0IF9YT1BFTl9TT1VSQ0UgdG8gNzAwLCBpbnN0ZWFkIG9mIDYwMCwgdG8gZ2V0IFBPU0lYIDIwMDgKKyAgZnVuY3Rpb25zIG9uIE9wZW5CU0QgKGUuZy4gZmRvcGVuZGlyKS4KKworLSBJc3N1ZSAjMTE4NjM6IFJlbW92ZSBzdXBwb3J0IGZvciBsZWdhY3kgc3lzdGVtcyBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIKKyAgKGZvbGxvd2luZyBQRVAgMTEpLiAgVGhlc2Ugc3lzdGVtcyBhcmUgc3lzdGVtcyB1c2luZyBNYWNoIEMgVGhyZWFkcywKKyAgU3VuT1MgbGlnaHR3ZWlnaHQgcHJvY2Vzc2VzLCBHTlUgcHRoIHRocmVhZHMgYW5kIElSSVggdGhyZWFkcy4KKworLSBJc3N1ZSAjODc0NjogQ29ycmVjdCBmYXVsdHkgY29uZmlndXJlIGNoZWNrcyBzbyB0aGF0IG9zLmNoZmxhZ3MoKSBhbmQKKyAgb3MubGNoZmxhZ3MoKSBhcmUgb25jZSBhZ2FpbiBidWlsdCBvbiBzeXN0ZW1zIHRoYXQgc3VwcG9ydCB0aGVzZQorICBmdW5jdGlvbnMgKEJTRCBhbmQgT1MgWCkuICBBbHNvIGFkZCBuZXcgc3RhdCBmaWxlIGZsYWdzIGZvciBPUyBYCisgIChVRl9ISURERU4gYW5kIFVGX0NPTVBSRVNTRUQpLgorCistIElzc3VlICMxMDY0NTogSW5zdGFsbGluZyBQeXRob24gZG9lcyBubyBsb25nZXIgY3JlYXRlIGEKKyAgUHl0aG9uLVguWS5aLXB5WC5ZLmVnZy1pbmZvIGZpbGUgaW4gdGhlIGxpYi1keW5sb2FkIGRpcmVjdG9yeS4KKworLSBEbyBub3QgYWNjaWRlbnRhbGx5IGluY2x1ZGUgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHNxbGl0ZS5oIHR3aWNlIHdoZW4KKyAgYnVpbGRpbmcgc3FsaXRlMy4KKworLSBJc3N1ZSAjMTEyMTc6IEZvciA2NC1iaXQvMzItYml0IE1hYyBPUyBYIHVuaXZlcnNhbCBmcmFtZXdvcmsgYnVpbGRzLAorICBlbnN1cmUgIm1ha2UgaW5zdGFsbCIgY3JlYXRlcyBzeW1saW5rcyBpbiAtLXByZWZpeCBiaW4gZm9yIHRoZSAiLTMyIgorICBmaWxlcyBpbiB0aGUgZnJhbWV3b3JrIGJpbiBkaXJlY3RvcnkgbGlrZSB0aGUgaW5zdGFsbGVyIGRvZXMuCisKKy0gSXNzdWUgIzExMzQ3OiBVc2UgLS1uby1hcy1uZWVkZWQgd2hlbiBsaW5raW5nIGxpYnB5dGhvbjMuc28uCisKIC0gSXNzdWUgIzExNDExOiBGaXggJ21ha2UgREVTVERJUj0nIHdpdGggYSByZWxhdGl2ZSBkZXN0aW5hdGlvbi4KIAotLSBJc3N1ZSAjMTEyNjg6IFByZXZlbnQgTWFjIE9TIFggSW5zdGFsbGVyIGZhaWx1cmUgaWYgRG9jdW1lbnRhdGlvbiBwYWNrYWdlIGhhZAotICBwcmV2aW91c2x5IGJlZW4gaW5zdGFsbGVkLgorLSBJc3N1ZSAjMTEyNjg6IFByZXZlbnQgTWFjIE9TIFggSW5zdGFsbGVyIGZhaWx1cmUgaWYgRG9jdW1lbnRhdGlvbgorICBwYWNrYWdlIGhhZCBwcmV2aW91c2x5IGJlZW4gaW5zdGFsbGVkLgorCistIElzc3VlICMxMTQ5NTogT1NGIHN1cHBvcnQgaXMgZWxpbWluYXRlZC4gSXQgd2FzIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMi4KKwogCiBJRExFCiAtLS0tCiAKLS0gSXNzdWUgIzExNzE4OiBJRExFJ3Mgb3BlbiBtb2R1bGUgZGlhbG9nIGNvdWxkbid0IGZpbmQgdGhlIF9faW5pdF9fLnB5IGZpbGUgaW4KLSAgYSBwYWNrYWdlLgorLSBJc3N1ZSAjMTE3MTg6IElETEUncyBvcGVuIG1vZHVsZSBkaWFsb2cgY291bGRuJ3QgZmluZCB0aGUgX19pbml0X18ucHkKKyAgZmlsZSBpbiBhIHBhY2thZ2UuCiAKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCistIElzc3VlICMxNDA1MzogcGF0Y2hjaGVjay5weSAoIm1ha2UgcGF0Y2hjaGVjayIpIG5vdyB3b3JrcyB3aXRoIE1RIHBhdGNoZXMuCisgIFBhdGNoIGJ5IEZyYW5jaXNjbyBNYXJ0w61uIEJydWd1w6kuCisKKy0gSXNzdWUgIzEzOTMwOiAydG8zIGlzIG5vdyBhYmxlIHRvIHdyaXRlIGl0cyBjb252ZXJ0ZWQgb3V0cHV0IGZpbGVzIHRvIGFub3RoZXIKKyAgZGlyZWN0b3J5IHRyZWUgYXMgd2VsbCBhcyBjb3B5aW5nIHVuY2hhbmdlZCBmaWxlcyBhbmQgYWx0ZXJpbmcgdGhlIGZpbGUKKyAgc3VmZml4LiAgU2VlIGl0cyBuZXcgLW8sIC1XIGFuZCAtLWFkZC1zdWZmaXggb3B0aW9ucy4gIFRoaXMgbWFrZXMgaXQgbW9yZQorICB1c2VmdWwgaW4gbWFueSBhdXRvbWF0ZWQgY29kZSB0cmFuc2xhdGlvbiB3b3JrZmxvd3MuCisKKy0gSXNzdWUgIzEzNjI4OiBweXRob24tZ2RiLnB5IGlzIG5vdyBhYmxlIHRvIHJldHJpZXZlIG1vcmUgZnJhbWVzIGluIHRoZSBQeXRob24KKyAgdHJhY2ViYWNrIGlmIFB5dGhvbiBpcyBvcHRpbWl6ZWQuCisKKy0gSXNzdWUgIzExOTk2OiBsaWJweXRob24gKGdkYiksIHJlcGxhY2UgInB5LWJ0IiBjb21tYW5kIGJ5ICJweS1idC1mdWxsIiBhbmQKKyAgYWRkIGEgc21hcnRlciAicHktYnQiIGNvbW1hbmQgcHJpbnRpbmcgYSBjbGFzc2ljIFB5dGhvbiB0cmFjZWJhY2suCisKIC0gSXNzdWUgIzExMTc5OiBNYWtlIGNjYmVuY2ggd29yayB1bmRlciBQeXRob24gMy4xIGFuZCAyLjcgYWdhaW4uCiAKKy0gSXNzdWUgIzEwNjM5OiByZWluZGVudC5weSBubyBsb25nZXIgY29udmVydHMgbmV3bGluZXMgYW5kIHdpbGwgcmFpc2UKKyAgYW4gZXJyb3IgaWYgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGEgZmlsZSB3aXRoIG1peGVkIG5ld2xpbmVzLgorICAiLS1uZXdsaW5lIiBvcHRpb24gYWRkZWQgdG8gc3BlY2lmeSBuZXcgbGluZSBjaGFyYWN0ZXIuCisKIEV4dGVuc2lvbiBNb2R1bGVzCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxMzg0MDogVGhlIGVycm9yIG1lc3NhZ2UgcHJvZHVjZWQgYnkgY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyCisgIHdoZW4gZ2l2ZW4gYSBVbmljb2RlIHN0cmluZyBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjOTk3NTogc29ja2V0OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBmbG93aW5mbyBhbmQgc2NvcGVfaWQuIFBhdGNoIGJ5CisgIFZpbG1vcyBOZWJlaGFqLgorCistIElzc3VlICM3Nzc3OiBzb2NrZXQ6IEFkZCBSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzIChQRl9SRFMpIHN1cHBvcnQuCisKKy0gSXNzdWUgIzEzMTU5OiBGaWxlSU8gYW5kIEJaMkNvbXByZXNzb3IvQloyRGVjb21wcmVzc29yIG5vdyB1c2UgYSBsaW5lYXItdGltZQorICBidWZmZXIgZ3Jvd3RoIHN0cmF0ZWd5IGluc3RlYWQgb2YgYSBxdWFkcmF0aWMtdGltZSBvbmUuCisKKy0gSXNzdWUgIzEwMTQxOiBzb2NrZXQ6IEFkZCBTb2NrZXRDQU4gKFBGX0NBTikgc3VwcG9ydC4gSW5pdGlhbCBwYXRjaCBieQorICBNYXR0aGlhcyBGdWNocywgdXBkYXRlZCBieSBUaWFnbyBHb27Dp2FsdmVzLgorCistIElzc3VlICMxMzA3MDogRml4IGEgY3Jhc2ggd2hlbiBhIFRleHRJT1dyYXBwZXIgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlCisgIHdvdWxkIGJlIGZpbmFsaXplZCBhZnRlciB0aGUgcmVmZXJlbmNlIHRvIGl0cyB1bmRlcmx5aW5nIEJ1ZmZlcmVkUldQYWlyJ3MKKyAgd3JpdGVyIGdvdCBjbGVhcmVkIGJ5IHRoZSBHQy4KKworLSBJc3N1ZSAjMTI4ODE6IGN0eXBlczogRml4IHNlZ2ZhdWx0IHdpdGggbGFyZ2Ugc3RydWN0dXJlIGZpZWxkIG5hbWVzLgorCistIElzc3VlICMxMzA1ODogb3NzYXVkaW9kZXY6IGZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIG9uIGVycm9yLiBQYXRjaCBieQorICBUaG9tYXMgSmFyb3NjaC4KKworLSBJc3N1ZSAjMTMwMTM6IGN0eXBlczogRml4IGEgcmVmZXJlbmNlIGxlYWsgaW4gUHlDQXJyYXlUeXBlX2Zyb21fY3R5cGUuCisgIFRoYW5rcyB0byBTdW1hbiBTYWhhIGZvciBmaW5kaW5nIHRoZSBidWcgYW5kIHByb3ZpZGluZyBhIHBhdGNoLgorCistIElzc3VlICMxMzAyMjogRml4OiBfbXVsdGlwcm9jZXNzaW5nLnJlY3ZmZCgpIGRvZXNuJ3QgY2hlY2sgdGhhdAorICBmaWxlIGRlc2NyaXB0b3Igd2FzIGFjdHVhbGx5IHJlY2VpdmVkLgorCistIElzc3VlICMxMTcyNzExOiBBZGQgJ2xvbmcgbG9uZycgc3VwcG9ydCB0byB0aGUgYXJyYXkgbW9kdWxlLgorICBJbml0aWFsIHBhdGNoIGJ5IE9yZW4gVGlyb3NoIGFuZCBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjMTI0ODM6IGN0eXBlczogRml4IGEgY3Jhc2ggd2hlbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgYSBjYWxsYmFjaworICBvYmplY3QgdHJpZ2dlcnMgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgorCistIElzc3VlICMxMjk1MDogRml4IHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9ycyBpbiBtdWx0aXByb2Nlc3NpbmcsIHVuZGVyCisgIE9wZW5JbmRpYW5hL0lsbHVtb3MuCisKKy0gSXNzdWUgIzEyNzY0OiBGaXggYSBjcmFzaCBpbiBjdHlwZXMgd2hlbiB0aGUgbmFtZSBvZiBhIFN0cnVjdHVyZSBmaWVsZCBpcyBub3QKKyAgYSBzdHJpbmcuCisKKy0gSXNzdWUgIzExMjQxOiBzdWJjbGFzc2VzIG9mIGN0eXBlcy5BcnJheSBjYW4gbm93IGJlIHN1YmNsYXNzZWQuCisKKy0gSXNzdWUgIzk2NTE6IEZpeCBhIGNyYXNoIHdoZW4gY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyKDApIHdhcyBwYXNzZWQgdG8KKyAgc29tZSBmdW5jdGlvbnMgbGlrZSBmaWxlLndyaXRlKCkuCisKKy0gSXNzdWUgIzEwMzA5OiBEZWZpbmUgX0dOVV9TT1VSQ0Ugc28gdGhhdCBtcmVtYXAoKSBnZXRzIHRoZSBwcm9wZXIKKyAgc2lnbmF0dXJlLiAgV2l0aG91dCB0aGlzLCBhcmNoaXRlY3R1cmVzIHdoZXJlIHNpemVvZiB2b2lkKiAhPSBzaXplb2YgaW50IGFyZQorICBicm9rZW4uICBQYXRjaCBnaXZlbiBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgorCiAtIElzc3VlICMxMjA1MTogRml4IHNlZ2ZhdWx0IGluIGpzb24uZHVtcHMoKSB3aGlsZSBlbmNvZGluZyBoaWdobHktbmVzdGVkCiAgIG9iamVjdHMgdXNpbmcgdGhlIEMgYWNjZWxlcmF0aW9ucy4KIApAQCAtMjAyNCwzNSArMzc2NiwxODQgQEAKIFRlc3RzCiAtLS0tLQogCistIElzc3VlICMxMTY4OTogRml4IGEgdmFyaWFibGUgc2NvcGluZyBlcnJvciBpbiBhbiBzcWxpdGUzIHRlc3QKKworLSBJc3N1ZSAjMTM3ODY6IFJlbW92ZSB1bmltcGxlbWVudGVkICd0cmFjZScgbG9uZyBvcHRpb24gZnJvbSByZWdydGVzdC5weS4KKworLSBJc3N1ZSAjMTM3MjU6IEZpeCByZWdydGVzdCB0byByZWNvZ25pemUgdGhlIGRvY3VtZW50ZWQgLWQgZmxhZy4KKyAgUGF0Y2ggYnkgRXJubyBUdWtpYS4KKworLSBJc3N1ZSAjMTMzMDQ6IFNraXAgdGVzdCBjYXNlIGlmIHVzZXIgc2l0ZS1wYWNrYWdlcyBkaXNhYmxlZCAoLXMgb3IKKyAgUFlUSE9OTk9VU0VSU0lURSkuICAoUGF0Y2ggYnkgQ2FybCBNZXllcikKKworLSBJc3N1ZSAjNTY2MTogQWRkIGEgdGVzdCBmb3IgRUNPTk5SRVNFVC9FUElQRSBoYW5kbGluZyB0byB0ZXN0X2FzeW5jb3JlLiBQYXRjaAorICBieSBYYXZpZXIgZGUgR2F5ZS4KKworLSBJc3N1ZSAjMTMyMTg6IEZpeCB0ZXN0X3NzbCBmYWlsdXJlcyBvbiBEZWJpYW4vVWJ1bnR1LgorCistIFJlLWVuYWJsZSBsaWIydG8zJ3MgdGVzdF9wYXJzZXIucHkgdGVzdHMsIHRob3VnaCB3aXRoIGFuIGV4cGVjdGVkIGZhaWx1cmUKKyAgKHNlZSBpc3N1ZSAxMzEyNSkuCisKKy0gSXNzdWUgIzEyNjU2OiBBZGQgdGVzdHMgZm9yIElQdjYgYW5kIFVuaXggc29ja2V0cyB0byB0ZXN0X2FzeW5jb3JlLgorCistIElzc3VlICM2NDg0OiBBZGQgdW5pdCB0ZXN0cyBmb3IgbWFpbGNhcCBtb2R1bGUgKHBhdGNoIGJ5IEdyZWdvcnkgTm9maSkKKworLSBJc3N1ZSAjMTE2NTE6IEltcHJvdmUgdGhlIE1ha2VmaWxlIHRlc3QgdGFyZ2V0cyB0byBydW4gbW9yZSBvZiB0aGUgdGVzdCBzdWl0ZQorICBtb3JlIHF1aWNrbHkuIFRoZSAtLW11bHRpcHJvY2VzcyBvcHRpb24gaXMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgcmVkdWNpbmcKKyAgdGhlIGFtb3VudCBvZiB0aW1lIG5lZWRlZCB0byBydW4gdGhlIHRlc3RzLiAibWFrZSB0ZXN0IiBhbmQgIm1ha2UgcXVpY2t0ZXN0IgorICBub3cgaW5jbHVkZSBzb21lIHJlc291cmNlLWludGVuc2l2ZSB0ZXN0cywgYnV0IG5vIGxvbmdlciBydW4gdGhlIHRlc3Qgc3VpdGUKKyAgdHdpY2UgdG8gY2hlY2sgZm9yIGJ1Z3MgaW4gLnB5YyBnZW5lcmF0aW9uLiBUb29scy9zY3JpcHRzL3J1bl90ZXN0LnB5IHByb3ZpZGVzCisgIGFuIGVhc3kgcGxhdGZvcm0taW5kZXBlbmRlbnQgd2F5IHRvIHJ1biB0ZXN0IHN1aXRlIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCisKKy0gSXNzdWUgIzEyMzMxOiBUaGUgdGVzdCBzdWl0ZSBmb3IgdGhlIHBhY2thZ2luZyBtb2R1bGUgY2FuIG5vdyBydW4gZnJvbSBhbgorICBpbnN0YWxsZWQgUHl0aG9uLgorCistIElzc3VlICMxMjMzMTogVGhlIHRlc3Qgc3VpdGUgZm9yIGxpYjJ0bzMgY2FuIG5vdyBydW4gZnJvbSBhbiBpbnN0YWxsZWQKKyAgUHl0aG9uLgorCistIElzc3VlICMxMjYyNjogSW4gcmVncnRlc3QsIGFsbG93IHRvIGZpbHRlciB0ZXN0cyB1c2luZyBhIGdsb2IgZmlsdGVyCisgIHdpdGggdGhlIGBgLW1gYCAob3IgYGAtLW1hdGNoYGApIG9wdGlvbi4gIFRoaXMgd29ya3Mgd2l0aCBhbGwgdGVzdCBjYXNlcworICB1c2luZyB0aGUgdW5pdHRlc3QgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCisgIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCisKKy0gSXNzdWUgIzEyNjI0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gZmFpbCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSB3aGVuCisgIHJ1bm5pbmcgaW4gdmVyYm9zZSBtb2RlIChgYC12YGAgb3IgYGAtV2BgKSwgYnkgdXNpbmcgdGhlIGBgLS1mYWlsZmFzdGBgCisgIChvciBgYC1HYGApIG9wdGlvbiB0byByZWdydGVzdC4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcworICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgorCistIElzc3VlICMxMjU4NzogQ29ycmVjdCBmYXVsdHkgdGVzdCBmaWxlIGFuZCByZWZlcmVuY2UgaW4gdGVzdF90b2tlbml6ZS4KKyAgKFBhdGNoIGJ5IFJvYmVydCBYaWFvKQorCistIElzc3VlICMxMjU3MzogQWRkIHJlc291cmNlIGNoZWNrcyBmb3IgZGFuZ2xpbmcgVGhyZWFkIGFuZCBQcm9jZXNzIG9iamVjdHMuCisKKy0gSXNzdWUgIzEyNTQ5OiBDb3JyZWN0IHRlc3RfcGxhdGZvcm0gdG8gbm90IGZhaWwgd2hlbiBPUyBYIHJldHVybnMgJ3g4Nl82NCcKKyAgYXMgdGhlIHByb2Nlc3NvciB0eXBlIG9uIHNvbWUgTWFjIHN5c3RlbXMuCisKKy0gU2tpcCBuZXR3b3JrIHRlc3RzIHdoZW4gZ2V0YWRkcmluZm8oKSByZXR1cm5zIEVBSV9BR0FJTiwgbWVhbmluZyBhIHRlbXBvcmFyeQorICBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4KKworLSBJc3N1ZSAjMTE4MTI6IFNvbHZlIHRyYW5zaWVudCBzb2NrZXQgZmFpbHVyZSB0byBjb25uZWN0IHRvICdsb2NhbGhvc3QnCisgIGluIHRlc3RfdGVsbmV0bGliLnB5LgorCistIFNvbHZlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBpbiB0ZXN0X3RlbG5ldGxpYi5weS4gUmVsYXRlZCB0byBpc3N1ZSAjMTE4MTIuCisKKy0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3JvYm90cGFyc2VyIHdoZW4gbXVlYmxlc21vcmFsZWRhLmNvbSBpcyBmbGFreSBhbmQKKyAgYW4gb3ZlcnplYWxvdXMgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVkaXJlY3RzIHRvIGEgcGxhY2Vob2xkZXIKKyAgV2ViIHNpdGUuCisKKy0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3VybGxpYm5ldC50ZXN0X2JhZF9hZGRyZXNzIHdoZW4gc29tZSBvdmVyemVhbG91cworICBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZXNvbHZlcyBhIG5vbi1leGlzdGVudCBkb21haW4gbmFtZS4gIFRoZSB0ZXN0CisgIGlzIG5vdyBza2lwcGVkIGluc3RlYWQuCisKKy0gSXNzdWUgIzEyNDQwOiBXaGVuIHRlc3Rpbmcgd2hldGhlciBzb21lIGJpdHMgaW4gU1NMQ29udGV4dC5vcHRpb25zIGNhbiBiZQorICByZXNldCwgY2hlY2sgdGhlIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgaGVhZGVycyBQeXRob24gd2FzIGNvbXBpbGVkIGFnYWluc3QsCisgIHJhdGhlciB0aGFuIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgbGlicmFyeS4KKworLSBJc3N1ZSAjMTE1MTI6IEFkZCBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBjZ2l0YiBtb2R1bGUuIFBhdGNoIGJ5IFJvYmJpZSBDbGVtb25zLgorCistIElzc3VlICMxMjQ5NzogSW5zdGFsbCB0ZXN0L2RhdGEgdG8gcHJldmVudCBmYWlsdXJlcyBvZiB0aGUgdmFyaW91cyBjb2RlY21hcHMKKyAgdGVzdHMuCisKKy0gSXNzdWUgIzEyNDk2OiBJbnN0YWxsIHRlc3QvY2FwYXRoIGRpcmVjdG9yeSB0byBwcmV2ZW50IHRlc3RfY29ubmVjdF9jYXBhdGgKKyAgdGVzdGNhc2UgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KKworLSBJc3N1ZSAjMTI0Njk6IFJ1biB3YWtldXAgYW5kIHBlbmRpbmcgc2lnbmFsIHRlc3RzIGluIGEgc3VicHJvY2VzcyB0byBydW4gdGhlCisgIHRlc3QgaW4gYSBmcmVzaCBwcm9jZXNzIHdpdGggb25seSBvbmUgdGhyZWFkIGFuZCB0byBub3QgY2hhbmdlIHNpZ25hbAorICBoYW5kbGluZyBvZiB0aGUgcGFyZW50IHByb2Nlc3MuCisKKy0gSXNzdWUgIzg3MTY6IEF2b2lkIGNyYXNoZXMgY2F1c2VkIGJ5IEFxdWEgVGsgb24gT1NYIHdoZW4gYXR0ZW1wdGluZyB0byBydW4KKyAgdGVzdF90ayBvciB0ZXN0X3R0a19ndWlvbmx5IHVuZGVyIGEgdXNlcm5hbWUgdGhhdCBpcyBub3QgY3VycmVudGx5IGxvZ2dlZAorICBpbiB0byB0aGUgY29uc29sZSB3aW5kb3dzZXJ2ZXIgKGFzIG1heSBiZSB0aGUgY2FzZSB1bmRlciBidWlsZGJvdCBvciBzc2gpLgorCistIElzc3VlICMxMjQwNzogRXhwbGljaXRseSBza2lwIHRlc3RfY2FwaS5FbWJlZGRpbmdUZXN0IHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzEyNDAwOiByZWdydGVzdCAtVyBkb2Vzbid0IHJlcnVuIHRoZSB0ZXN0cyB0d2ljZSBhbnltb3JlLCBidXQgY2FwdHVyZXMKKyAgdGhlIG91dHB1dCBhbmQgZGlzcGxheXMgaXQgb24gZmFpbHVyZSBpbnN0ZWFkLiByZWdydGVzdCAtdiBkb2Vzbid0IHByaW50IHRoZQorICBlcnJvciB0d2ljZSBhbnltb3JlIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLgorCistIElzc3VlICMxMjE0MTogSW5zdGFsbCBjb3BpZXMgb2YgdGVtcGxhdGUgQyBtb2R1bGUgZmlsZSBzbyB0aGF0CisgIHRlc3RfYnVpbGRfZXh0IG9mIHRlc3RfZGlzdHV0aWxzIGFuZCB0ZXN0X2NvbW1hbmRfYnVpbGRfZXh0IG9mCisgIHRlc3RfcGFja2FnaW5nIGFyZSBubyBsb25nZXIgc2lsZW50bHkgc2tpcHBlZCB3aGVuCisgIHJ1biBvdXRzaWRlIG9mIGEgYnVpbGQgZGlyZWN0b3J5LgorCistIElzc3VlICM4NzQ2OiBBZGQgYWRkaXRpb25hbCB0ZXN0cyBmb3Igb3MuY2hmbGFncygpIGFuZCBvcy5sY2hmbGFncygpLgorICBQYXRjaCBieSBHYXJyZXR0IENvb3Blci4KKworLSBJc3N1ZSAjMTA3MzY6IEZpeCB0ZXN0X3R0ayB0ZXN0X3dpZGdldHMgZmFpbHVyZXMgd2l0aCBDb2NvYSBUayA4LjUuOQorICAyLjggKyAgb24gTWFjIE9TIFguICAoUGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQorCistIElzc3VlICMxMjA1NzogQWRkIHRlc3RzIGZvciBJU08gMjAyMiBjb2RlY3MgKGlzbzIwMjJfanAsIGlzbzIwMjJfanBfMiwKKyAgaXNvMjAyMl9rcikuCisKKy0gSXNzdWUgIzEyMDk2OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0ZXN0X3RocmVhZGluZy50ZXN0X3dhaXRmb3IoKS4gUGF0Y2gKKyAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzExNjE0OiBpbXBvcnQgX19oZWxsb19fIHByaW50cyAiSGVsbG8gV29ybGQhIi4gUGF0Y2ggd3JpdHRlbiBieQorICBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzU3MjM6IEltcHJvdmUganNvbiB0ZXN0cyB0byBiZSBleGVjdXRlZCB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbnMuCisKKy0gSXNzdWUgIzEyMDQxOiBNYWtlIHRlc3Rfd2FpdDMgbW9yZSByb2J1c3QuCisKIC0gSXNzdWUgIzExODczOiBDaGFuZ2UgcmVnZXggaW4gdGVzdF9jb21waWxlYWxsIHRvIGZpeCBvY2Nhc2lvbmFsIGZhaWx1cmVzIHdoZW4KICAgd2hlbiB0aGUgcmFuZG9tbHkgZ2VuZXJhdGVkIHRlbXBvcmFyeSBwYXRoIGhhcHBlbmVkIHRvIG1hdGNoIHRoZSByZWdleC4KIAorLSBJc3N1ZSAjMTE5NTg6IEZpeCBGVFAgdGVzdHMgZm9yIElQdjYsIGJpbmQgdG8gIjo6MSIgaW5zdGVhZCBvZiAibG9jYWxob3N0Ii4KKyAgUGF0Y2ggd3JpdHRlbiBieSBDaGFybGVzLUZyYW5jb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjODQwNywgIzExODU5OiBGaXggdGVzdHMgb2YgdGVzdF9pbyB1c2luZyB0aHJlYWRzIGFuZCBhbiBhbGFybTogdXNlCisgIHB0aHJlYWRfc2lnbWFzaygpIHRvIGVuc3VyZSB0aGF0IHRoZSBTSUdBTFJNIHNpZ25hbCBpcyByZWNlaXZlZCBieSB0aGUgbWFpbgorICB0aHJlYWQuCisKKy0gSXNzdWUgIzExODExOiBGYWN0b3Igb3V0IGRldGVjdGlvbiBvZiBJUHY2IHN1cHBvcnQgb24gdGhlIGN1cnJlbnQgaG9zdAorICBhbmQgbWFrZSBpdCBhdmFpbGFibGUgYXMgYGB0ZXN0LnN1cHBvcnQuSVBWNl9FTkFCTEVEYGAuICBQYXRjaCBieQorICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKIC0gSXNzdWUgIzEwOTE0OiBBZGQgYSBtaW5pbWFsIGVtYmVkZGluZyB0ZXN0IHRvIHRlc3RfY2FwaS4KIAotLSBJc3N1ZSAjMTE3OTA6IEZpeCBzcG9yYWRpYyBmYWlsdXJlcyBpbgotICB0ZXN0X211bHRpcHJvY2Vzc2luZy5XaXRoUHJvY2Vzc2VzVGVzdENvbmRpdGlvbi4KKy0gSXNzdWUgIzExMjIzOiBTa2lwIHRlc3RfbG9ja19hY3F1aXJlX2ludGVycnVwdGlvbigpIGFuZAorICB0ZXN0X3Jsb2NrX2FjcXVpcmVfaW50ZXJydXB0aW9uKCkgb2YgdGVzdF90aHJlYWRzaWduYWxzIGlmIGEgdGhyZWFkIGxvY2sgaXMKKyAgaW1wbGVtZW50ZWQgdXNpbmcgYSBQT1NJWCBtdXRleCBhbmQgYSBQT1NJWCBjb25kaXRpb24gdmFyaWFibGUuIEEgUE9TSVgKKyAgY29uZGl0aW9uIHZhcmlhYmxlIGNhbm5vdCBiZSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZS5nLiBvbiBMaW51eCwgdGhlCisgIGZ1dGV4IHN5c3RlbSBjYWxsIGlzIHJlc3RhcnRlZCkuCisKKy0gSXNzdWUgIzExNzkwOiBGaXggc3BvcmFkaWMgZmFpbHVyZXMgaW4gdGVzdF9tdWx0aXByb2Nlc3NpbmcuV2l0aFByb2Nlc3Nlc1Rlc3RDb25kaXRpb24uCiAKIC0gRml4IHBvc3NpYmxlICJmaWxlIGFscmVhZHkgZXhpc3RzIiBlcnJvciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIGluIHBhcmFsbGVsLgogCiAtIElzc3VlICMxMTcxOTogRml4IG1lc3NhZ2UgYWJvdXQgdW5leHBlY3RlZCB0ZXN0X21zaWxpYiBza2lwIG9uIG5vbi1XaW5kb3dzCiAgIHBsYXRmb3Jtcy4gUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgogCistIElzc3VlICMxMTcyNzogQWRkIGEgLS10aW1lb3V0IG9wdGlvbiB0byByZWdydGVzdDogaWYgYSB0ZXN0IHRha2VzIG1vcmUgdGhhbgorICBUSU1FT1VUIHNlY29uZHMsIGR1bXBzIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgYW5kIGV4aXRzLgorCiAtIElzc3VlICMxMTY1MzogZml4IC1XIHdpdGggLWogaW4gcmVncnRlc3QuCiAKKy0gVGhlIGVtYWlsIHRlc3Qgc3VpdGUgbm93IGxpdmVzIGluIHRoZSBMaWIvdGVzdC90ZXN0X2VtYWlsIHBhY2thZ2UuICBUaGUgdGVzdAorICBoYXJuZXNzIGNvZGUgaGFzIGFsc28gYmVlbiBtb2Rlcm5pemVkIHRvIGFsbG93IHVzZSBvZiBuZXcgdW5pdHRlc3QgZmVhdHVyZXMuCisKKy0gcmVncnRlc3Qgbm93IGRpc2NvdmVycyB0ZXN0IHBhY2thZ2VzIGFzIHdlbGwgYXMgdGVzdCBtb2R1bGVzLgorCiAtIElzc3VlICMxMTU3NzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIGJpbmhleC5weS4gUGF0Y2ggYnkgQXJrYWR5IEtvcGx5YXJvdi4KIAorLSBOZXcgdGVzdF9jcmFzaGVycyBhZGRlZCB0byBleGVyY2lzZSB0aGUgc2NyaXB0cyBpbiB0aGUgTGliL3Rlc3QvY3Jhc2hlcnMKKyAgZGlyZWN0b3J5IGFuZCBjb25maXJtIHRoZXkgZmFpbCBhcyBleHBlY3RlZAorCiAtIElzc3VlICMxMTU3ODogYWRkZWQgdGVzdCBmb3IgdGhlIHRpbWVpdCBtb2R1bGUuICBQYXRjaCBieSBNaWNoYWVsIEhlbnJ5LgogCiAtIElzc3VlICMxMTUwMzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHBvc2l4cGF0aC5weS4gUGF0Y2ggYnkgRXZhbiBEYW5kcmVhLgogCi0tIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHkuIFBhdGNoIGJ5IEFsaWNpYQotICBBcmxlbi4KKy0gSXNzdWUgIzExNTA1OiBpbXByb3ZlcyB0ZXN0IGNvdmVyYWdlIG9mIHN0cmluZy5weSwgaW5jcmVhc2VzIGdyYW51bGFyaXR5IG9mCisgIHN0cmluZy5Gb3JtYXR0ZXIgdGVzdHMuIEluaXRpYWwgcGF0Y2ggYnkgQWxpY2lhIEFybGVuLgogCiAtIElzc3VlICMxMTU0ODogSW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHRoZSBzaHV0aWwgbW9kdWxlLiBQYXRjaCBieQogICBFdmFuIERhbmRyZWEuCiAKIC0gSXNzdWUgIzExNTU0OiBSZWFjdGl2YXRlZCB0ZXN0X2VtYWlsX2NvZGVjcy4KIAorLSBJc3N1ZSAjMTE1MDU6IGltcHJvdmVzIHRlc3QgY292ZXJhZ2Ugb2Ygc3RyaW5nLnB5LiBQYXRjaCBieSBBbGljaWEKKyAgQXJsZW4KKwogLSBJc3N1ZSAjMTE0OTA6IHRlc3Rfc3VicHJvY2Vzczp0ZXN0X2xlYWtpbmdfZmRzX29uX2Vycm9yIG5vIGxvbmdlciBnaXZlcyBhCiAgIGZhbHNlIHBvc2l0aXZlIGlmIHRoZSBsYXN0IGRpcmVjdG9yeSBpbiB0aGUgcGF0aCBpcyBpbmFjY2Vzc2libGUuCiAKQEAgLTIwNjUsMTIgKzM5NTYsNjEgQEAKIC0gSXNzdWUgIzk5MzE6IEZpeCBoYW5ncyBpbiBHVUkgdGVzdHMgdW5kZXIgV2luZG93cyBpbiBjZXJ0YWluIGNvbmRpdGlvbnMuCiAgIFBhdGNoIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgogCistIElzc3VlICMxMDUxMjogUHJvcGVybHkgY2xvc2Ugc29ja2V0cyB1bmRlciB0ZXN0LnRlc3RfY2dpLgorCistIElzc3VlICMxMDk5MjogTWFrZSB0ZXN0cyBwYXNzIHVuZGVyIGNvdmVyYWdlLgorCiAtIElzc3VlICMxMDgyNjogUHJldmVudCBzcG9yYWRpYyBmYWlsdXJlIGluIHRlc3Rfc3VicHJvY2VzcyBvbiBTb2xhcmlzIGR1ZQogICB0byBvcGVuIGRvb3IgZmlsZXMuCiAKKy0gSXNzdWUgIzEwOTkwOiBQcmV2ZW50IHRlc3RzIGZyb20gY2xvYmJlcmluZyBhIHNldCB0cmFjZSBmdW5jdGlvbi4KKworQy1BUEkKKy0tLS0tCisKKy0gQWRkIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0IGFuZCBQeU9iamVjdF9HZW5lcmlTZXREaWN0LiBUaGV5IGFyZSBnZW5lcmljCisgIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIGdldHRlciBhbmQgc2V0dGVyIG9mIGEgYGBfX2RpY3RfX2BgIGRlc2NyaXB0b3Igb2YgQworICB0eXBlcy4KKworLSBJc3N1ZSAjMTM3Mjc6IEFkZCAzIG1hY3JvcyB0byBhY2Nlc3MgUHlEYXRlVGltZV9EZWx0YSBtZW1iZXJzOgorICBQeURhdGVUaW1lX0RFTFRBX0dFVF9EQVlTLCBQeURhdGVUaW1lX0RFTFRBX0dFVF9TRUNPTkRTLAorICBQeURhdGVUaW1lX0RFTFRBX0dFVF9NSUNST1NFQ09ORFMuCisKKy0gSXNzdWUgIzEwNTQyOiBBZGQgNCBtYWNyb3MgdG8gd29yayB3aXRoIHN1cnJvZ2F0ZXM6IFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFLAorICBQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFLCBQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUsCisgIFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTLgorCistIElzc3VlICMxMjcyNDogQWRkIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRCBtYWNybyBmb3IgcmV0dXJuaW5nIE5vdEltcGxlbWVudGVkLgorCistIFBZX1BBVENITEVWRUxfUkVWSVNJT04gaGFzIGJlZW4gcmVtb3ZlZCwgc2luY2UgaXQncyBtZWFuaW5nbGVzcyB3aXRoCisgIE1lcmN1cmlhbC4KKworLSBJc3N1ZSAjMTIxNzM6IFRoZSBmaXJzdCBhcmd1bWVudCBvZiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbCBpcyBub3cgYGNvbnN0CisgIGNoYXIgKmAgaW5zdGVhZCBvZiBgY2hhciAqYC4KKworLSBJc3N1ZSAjMTIzODA6IFB5QXJnX1BhcnNlVHVwbGUgbm93IGFjY2VwdHMgYSBieXRlYXJyYXkgZm9yIHRoZSAnYycgZm9ybWF0LgorCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWVzICMxMzQ5MSBhbmQgIzEzOTk1OiBGaXggbWFueSBlcnJvcnMgaW4gc3FsaXRlMyBkb2N1bWVudGF0aW9uLgorICBJbml0aWFsIHBhdGNoIGZvciAjMTM0OTEgYnkgSm9oYW5uZXMgVm9nZWwuCisKKy0gSXNzdWUgIzEzNDAyOiBEb2N1bWVudCBhYnNvbHV0ZW5lc3Mgb2Ygc3lzLmV4ZWN1dGFibGUuCisKKy0gSXNzdWUgIzEzODgzOiBQWVRIT05DQVNFT0sgYWxzbyB3b3JrcyBvbiBPUyBYLgorCistIElzc3VlICMxMjk0OTogRG9jdW1lbnQgdGhlIGt3b25seWFyZ2NvdW50IGFyZ3VtZW50IGZvciB0aGUgUHlDb2RlX05ldworICBDIEFQSSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTM1MTM6IEZpeCBpby5JT0Jhc2UgZG9jdW1lbnRhdGlvbiB0byBjb3JyZWN0bHkgbGluayB0byB0aGUKKyAgaW8uSU9CYXNlLnJlYWRsaW5lIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSByZWFkbGluZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEzMjM3OiBSZW9yZ2FuaXNlIHN1YnByb2Nlc3MgZG9jdW1lbnRhdGlvbiB0byBlbXBoYXNpc2UgY29udmVuaWVuY2UKKyAgZnVuY3Rpb25zIGFuZCB0aGUgbW9zdCBjb21tb25seSBuZWVkZWQgYXJndW1lbnRzIHRvIFBvcGVuLgorCistIElzc3VlICMxMzE0MTogRGVtb25zdHJhdGUgcmVjb21tZW5kZWQgc3R5bGUgZm9yIHNvY2tldHNlcnZlciBleGFtcGxlcy4KKwogLSBJc3N1ZSAjMTE4MTg6IEZpeCB0ZW1wZmlsZSBleGFtcGxlcyBmb3IgUHl0aG9uIDMuCiAKIApAQCAtMjMwMiwxMCArNDI0Miw2IEBACiAtIElzc3VlICMxMDE1NCwgIzEwMDkwOiBjaGFuZ2UgdGhlIG5vcm1hbGl6YXRpb24gb2YgVVRGLTggdG8gIlVURi04IiBpbnN0ZWFkCiAgIG9mICJVVEY4IiBpbiB0aGUgbG9jYWxlIG1vZHVsZSBhcyB0aGUgbGF0dGVyIGlzIG5vdCBzdXBwb3J0ZWQgTWFjT1NYIGFuZCBPcGVuQlNELgogCi0tIElzc3VlICMxMDY4NDogc2h1dGlsLm1vdmUgdXNlZCB0byBkZWxldGUgYSBmb2xkZXIgb24gY2FzZSBpbnNlbnNpdGl2ZQotICBmaWxlc3lzdGVtcyB3aGVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG5hbWUgd2hlcmUgdGhlIHNhbWUgZXhjZXB0Ci0gIGZvciB0aGUgY2FzZS4KLQogLSBJc3N1ZSAjMTA5MDc6IFdhcm4gT1MgWCAxMC42IElETEUgdXNlcnMgdG8gdXNlIEFjdGl2ZVN0YXRlIFRjbC9UayA4LjUsIHJhdGhlcgogICB0aGFuIHRoZSBjdXJyZW50bHkgcHJvYmxlbWF0aWMgQXBwbGUtc3VwcGxpZWQgb25lLCB3aGVuIHJ1bm5pbmcgd2l0aCB0aGUKICAgNjQtLzMyLWJpdCBpbnN0YWxsZXIgdmFyaWFudC4KQEAgLTI0NjIsNiArNDM5OCw5IEBACiBDLUFQSQogLS0tLS0KIAorLSBQeU9iamVjdF9DYWxsTWV0aG9kIG5vdyBwYXNzZXMgYWxvbmcgYW55IHVuZGVybHlpbmcgQXR0cmlidXRlRXJyb3IgZnJvbQorICBQeU9iamVjdF9HZXRBdHRyLCBpbnN0ZWFkIG9mIHJlcGxhY2luZyBpdCB3aXRoIHNvbWV0aGluZyBsZXNzIGluZm9ybWF0aXZlCisKIC0gSXNzdWUgIzEwOTEzOiBEZXByZWNhdGUgbWlzbGVhZGluZyBmdW5jdGlvbnMgUHlFdmFsX0FjcXVpcmVMb2NrKCkgYW5kCiAgIFB5RXZhbF9SZWxlYXNlTG9jaygpLiAgVGhlIHRocmVhZC1zdGF0ZSBhd2FyZSBBUElzIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCiAKQEAgLTI1MTMsNiArNDQ1Miw4IEBACiBUZXN0cwogLS0tLS0KIAorLSBJc3N1ZSAjMTE5MTA6IEZpeCB0ZXN0X2hlYXBxIHRvIHNraXAgdGhlIEMgdGVzdHMgd2hlbiBfaGVhcHEgaXMgbWlzc2luZy4KKwogLSBGaXggdGVzdF9zdGFydGZpbGUgdG8gd2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUgYmVmb3JlIGZpbmlzaGluZy4KIAogLSBJc3N1ZSAjMTA4MjI6IEZpeCB0ZXN0X3Bvc2l4OnRlc3RfZ2V0Z3JvdXBzIGZhaWx1cmUgdW5kZXIgU29sYXJpcy4gIFBhdGNoCkBAIC0zMDEzLDYgKzQ5NTQsOCBAQAogTGlicmFyeQogLS0tLS0tLQogCistIElzc3VlICMxMjk0MzogcHl0aG9uIC1tIHRva2VuaXplIHN1cHBvcnQgaGFzIGJlZW4gYWRkZWQgdG8gdG9rZW5pemUuCisKIC0gSXNzdWUgIzEwNDY1OiBmaXggYnJva2VuIGRlbGVnYXRpbmcgb2YgYXR0cmlidXRlcyBieSBnemlwLl9QYWRkZWRGaWxlLgogCiAtIElzc3VlICMxMDM1NjogRGVjaW1hbC5fX2hhc2hfXygtMSkgc2hvdWxkIHJldHVybiAtMi4KQEAgLTQ5MjEsNyArNjg2NCw3IEBACiAgIGhhbmRsZWQuICBJbiBtYW55IGNhc2VzIHRoaXMgb3JkZXIgd2Fzbid0IGJlaW5nIGZvbGxvd2VkLCBsZWFkaW5nIHRvIHRoZSB3cm9uZwogICBQeXRob24gZXhjZXB0aW9uIGJlaW5nIHJhaXNlZC4KIAotLSBJc3N1ZSAjNzg2NTogVGhlIGNsb3NlKCkgbWV0aG9kIG9mIDptb2Q6YGlvYCBvYmplY3RzIHNob3VsZCBub3Qgc3dhbGxvdworLSBJc3N1ZSAjNzg2NTogVGhlIGNsb3NlKCkgbWV0aG9kIG9mIGBgaW9gYCBvYmplY3RzIHNob3VsZCBub3Qgc3dhbGxvdwogICBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgaW1wbGljaXQgZmx1c2goKS4gIEFsc28gcWVuc3VyZSB0aGF0IGNhbGxpbmcgY2xvc2UoKQogICBzZXZlcmFsIHRpbWVzIGlzIHN1cHBvcnRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgogCkBAIC01MDMzLDcgKzY5NzYsNyBAQAogCiAtIElzc3VlICM1Mjc3OiBGaXggcXVvdGUgY291bnRpbmcgd2hlbiBwYXJzaW5nIFJGQyAyMjMxIGVuY29kZWQgcGFyYW1ldGVycy4KIAotLSBJc3N1ZSAjNzMxNjogVGhlIGFjcXVpcmUoKSBtZXRob2Qgb2YgbG9jayBvYmplY3RzIGluIHRoZSA6bW9kOmB0aHJlYWRpbmdgCistIElzc3VlICM3MzE2OiBUaGUgYWNxdWlyZSgpIG1ldGhvZCBvZiBsb2NrIG9iamVjdHMgaW4gdGhlIGBgdGhyZWFkaW5nYGAKICAgbW9kdWxlIG5vdyB0YWtlcyBhbiBvcHRpb25hbCB0aW1lb3V0IGFyZ3VtZW50IGluIHNlY29uZHMuICBUaW1lb3V0IHN1cHBvcnQKICAgcmVsaWVzIG9uIHRoZSBzeXN0ZW0gdGhyZWFkaW5nIGxpYnJhcnksIHNvIGFzIHRvIGF2b2lkIGEgc2VtaS1idXN5IHdhaXQgbG9vcC4KIApAQCAtNTA1Miw3ICs2OTk1LDcgQEAKIC0gSXNzdWUgIzgzNzU6IHRlc3RfZGlzdHV0aWxzIG5vdyBjaGVja3MgaWYgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgYXJlIHN0aWxsCiAgIHByZXNlbnQgYmVmb3JlIGl0IGNsZWFucyB0aGVtLgogCi0tIElzc3VlICM4Mzc0OiBVcGRhdGUgdGhlIGludGVybmFsIGFsaWFzIHRhYmxlIGluIHRoZSA6bW9kOmBsb2NhbGVgIG1vZHVsZSB0bworLSBJc3N1ZSAjODM3NDogVXBkYXRlIHRoZSBpbnRlcm5hbCBhbGlhcyB0YWJsZSBpbiB0aGUgYGBsb2NhbGVgYCBtb2R1bGUgdG8KICAgY292ZXIgcmVjZW50IGxvY2FsZSBjaGFuZ2VzIGFuZCBhZGRpdGlvbnMuCiAKIC0gSXNzdWUgIzgzMjE6IEdpdmUgYWNjZXNzIHRvIE9wZW5TU0wgdmVyc2lvbiBudW1iZXJzIGZyb20gdGhlIGBzc2xgIG1vZHVsZSwKQEAgLTUyMzcsOSArNzE4MCw5IEBACiAgIGZ0cnVuY2F0ZSgpIGFuZCBvdGhlciB0cnVuY2F0aW9uIEFQSXMuICBQYXRjaCBieSBQYXNjYWwgQ2hhbWJvbi4KIAogLSBJc3N1ZSAjNzYxMDogUmV3b3JrZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVybmFsCi0gIDpjbGFzczpgemlwZmlsZS5aaXBFeHRGaWxlYCBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBmaWxlcyBzdG9yZWQgaW5zaWRlIGFuCisgIGBgemlwZmlsZS5aaXBFeHRGaWxlYGAgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgZmlsZXMgc3RvcmVkIGluc2lkZSBhbgogICBhcmNoaXZlLiAgVGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBzaWduaWZpY2FudGx5IGZhc3RlciBhbmQgY2FuIGJlIHdyYXBwZWQgaW4KLSAgYSA6Y2xhc3M6YGlvLkJ1ZmZlcmVkUmVhZGVyYCBvYmplY3QgZm9yIG1vcmUgc3BlZWR1cHMuICBJdCBhbHNvIHNvbHZlcyBhbgorICBhIGBgaW8uQnVmZmVyZWRSZWFkZXJgYCBvYmplY3QgZm9yIG1vcmUgc3BlZWR1cHMuICBJdCBhbHNvIHNvbHZlcyBhbgogICBpc3N1ZSB3aGVyZSBpbnRlcmxlYXZlZCBjYWxscyB0byBgcmVhZCgpYCBhbmQgYHJlYWRsaW5lKClgIGdpdmUgd3JvbmcgcmVzdWx0cy4KICAgUGF0Y2ggYnkgTmlyIEFpZGVzLgogCkBAIC01OTk3LDEwICs3OTQwLDEwIEBACiAgIGNhbGxpbmcgbWV0aG9kcyBvbiB0aGUgb2JqZWN0LgogCiAtIElzc3VlICM3MjIyOiBNYWtlIHRocmVhZCAicmVhcGluZyIgbW9yZSByZWxpYWJsZSBzbyB0aGF0IHJlZmVyZW5jZQotICBsZWFrLWNoYXNpbmcgdGVzdCBydW5zIGdpdmUgc2Vuc2libGUgcmVzdWx0cy4gVGhlIHByZXZpb3VzIG1ldGhvZCBvZiByZWFwaW5nCisgIGxlYWstY2hhc2luZyB0ZXN0IHJ1bnMgZ2l2ZSBzZW5zaWJsZSByZXN1bHRzLiAgVGhlIHByZXZpb3VzIG1ldGhvZCBvZiByZWFwaW5nCiAgIHRocmVhZHMgY291bGQgcmV0dXJuIHN1Y2Nlc3NmdWxseSB3aGlsZSBzb21lIFRocmVhZCBvYmplY3RzIHdlcmUgc3RpbGwKLSAgcmVmZXJlbmNlZC4gVGhpcyBhbHNvIGludHJvZHVjZXMgYSBuZXcgcHJpdmF0ZSBmdW5jdGlvbjoKLSAgOmZ1bmM6YF90aHJlYWQuX2NvdW50KClgLgorICByZWZlcmVuY2VkLiAgVGhpcyBhbHNvIGludHJvZHVjZXMgYSBuZXcgcHJpdmF0ZSBmdW5jdGlvbjoKKyAgYGBfdGhyZWFkLl9jb3VudCgpYGAuCiAKIC0gSXNzdWUgIzcxNTE6IEZpeGVkIHJlZ3J0ZXN0IC1qIHNvIHRoYXQgb3V0cHV0IHRvIHN0ZGVyciBmcm9tIGEgdGVzdCBubyBsb25nZXIKICAgcnVucyB0aGUgcmlzayBvZiBjYXVzaW5nIHRoZSB3b3JrZXIgdGhyZWFkIHRvIGZhaWwuCkBAIC02NDQxLDcgKzgzODQsNyBAQAogLSBJc3N1ZSAjNTkyMzogVXBkYXRlIHRoZSBgYHR1cnRsZWBgIG1vZHVsZSB0byB2ZXJzaW9uIDEuMSwgYWRkIHR3byBuZXcKICAgdHVydGxlIGRlbW9zIGluIERlbW8vdHVydGxlLgogCi0tIElzc3VlICM1NjkyOiBJbiA6Y2xhc3M6YHppcGZpbGUuWmlwZmlsZWAsIGZpeCB3cm9uZyBwYXRoIGNhbGN1bGF0aW9uIHdoZW4KKy0gSXNzdWUgIzU2OTI6IEluIGBgemlwZmlsZS5aaXBmaWxlYGAsIGZpeCB3cm9uZyBwYXRoIGNhbGN1bGF0aW9uIHdoZW4KICAgZXh0cmFjdGluZyBhIGZpbGUgdG8gdGhlIHJvb3QgZGlyZWN0b3J5LgogCiAtIElzc3VlICM1OTEzOiBvcy5saXN0ZGlyKCkgc2hvdWxkIGZhaWwgZm9yIGVtcHR5IHBhdGggb24gd2luZG93cy4KZGlmZiAtLWdpdCBhL01pc2MvUkVBRE1FIGIvTWlzYy9SRUFETUUKaW5kZXggYjIzOWNlZS4uMTE4ZjZjNyAxMDA2NDQKLS0tIGEvTWlzYy9SRUFETUUKKysrIGIvTWlzYy9SRUFETUUKQEAgLTgsNyArOCw2IEBACiAtLS0tLS0tLS0tLS0tLS0tCiAKIEFDS1MgICAgICAgICAgICAgICAgICAgIEFja25vd2xlZGdlbWVudHMKLWJ1aWxkLnNoICAgICAgICAgICAgICAgIFNjcmlwdCB0byBidWlsZCBhbmQgdGVzdCBsYXRlc3QgUHl0aG9uIGZyb20gdGhlIHJlcG9zaXRvcnkKIGdkYmluaXQgICAgICAgICAgICAgICAgIEhhbmR5IHN0dWZmIHRvIHB1dCBpbiB5b3VyIC5nZGJpbml0IGZpbGUsIGlmIHlvdSB1c2UgZ2RiCiBISVNUT1JZICAgICAgICAgICAgICAgICBOZXdzIGZyb20gcHJldmlvdXMgcmVsZWFzZXMgLS0gb2xkZXN0IGxhc3QKIGluZGVudC5wcm8gICAgICAgICAgICAgIEdOVSBpbmRlbnQgcHJvZmlsZSBhcHByb3hpbWF0aW5nIG15IEMgc3R5bGUKQEAgLTE5LDggKzE4LDExIEBACiBweXRob24ucGMuaW4gICAgICAgICAgICBQYWNrYWdlIGNvbmZpZ3VyYXRpb24gaW5mbyB0ZW1wbGF0ZSBmb3IgcGtnLWNvbmZpZwogcHl0aG9uLXdpbmcqLndwciAgICAgICAgV2luZyBJREUgcHJvamVjdCBmaWxlCiBSRUFETUUgICAgICAgICAgICAgICAgICBUaGUgZmlsZSB5b3UncmUgcmVhZGluZyBub3cKK1JFQURNRS5BSVggICAgICAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IHVzaW5nIFB5dGhvbiBvbiBBSVgKK1JFQURNRS5jb3Zlcml0eSAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IHJ1bm5pbmcgQ292ZXJpdHkncyBQcmV2ZW50IG9uIFB5dGhvbgogUkVBRE1FLnZhbGdyaW5kICAgICAgICAgSW5mb3JtYXRpb24gZm9yIFZhbGdyaW5kIHVzZXJzLCBzZWUgdmFsZ3JpbmQtcHl0aG9uLnN1cHAKIFJQTSAgICAgICAgICAgICAgICAgICAgIChPbGQpIHRvb2xzIHRvIGJ1aWxkIFJQTXMKK3N2bm1hcC50eHQgICAgICAgICAgICAgIE1hcCBvZiBvbGQgU1ZOIHJldnMgYW5kIGJyYW5jaGVzIHRvIGhnIGNoYW5nZXNldCBpZHMKIFNwZWNpYWxCdWlsZHMudHh0ICAgICAgIERlc2NyaWJlcyBleHRyYSBzeW1ib2xzIHlvdSBjYW4gc2V0IGZvciBkZWJ1ZyBidWlsZHMKIFRleHRNYXRlICAgICAgICAgICAgICAgIEEgVGV4dE1hdGUgYnVuZGxlIGZvciBQeXRob24gZGV2ZWxvcG1lbnQKIHZhbGdyaW5kLXB5dGhvbi5zdXBwICAgIFZhbGdyaW5kIHN1cHByZXNzaW9uIGZpbGUsIHNlZSBSRUFETUUudmFsZ3JpbmQKZGlmZiAtLWdpdCBhL01pc2MvUlBNL3B5dGhvbi0zLjIuc3BlYyBiL01pc2MvUlBNL3B5dGhvbi0zLjMuc3BlYwpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBNaXNjL1JQTS9weXRob24tMy4yLnNwZWMKcmVuYW1lIHRvIE1pc2MvUlBNL3B5dGhvbi0zLjMuc3BlYwppbmRleCAxOGYzZTc3Li45NDM1NGY5IDEwMDY0NAotLS0gYS9NaXNjL1JQTS9weXRob24tMy4yLnNwZWMKKysrIGIvTWlzYy9SUE0vcHl0aG9uLTMuMy5zcGVjCkBAIC0zOSw4ICszOSw4IEBACiAKICVkZWZpbmUgbmFtZSBweXRob24KICMtLXN0YXJ0IGNvbnN0YW50cy0tCi0lZGVmaW5lIHZlcnNpb24gMy4yLjMKLSVkZWZpbmUgbGlidmVycyAzLjIKKyVkZWZpbmUgdmVyc2lvbiAzLjMuMHJjMQorJWRlZmluZSBsaWJ2ZXJzIDMuMwogIy0tZW5kIGNvbnN0YW50cy0tCiAlZGVmaW5lIHJlbGVhc2UgMXB5ZG90b3JnCiAlZGVmaW5lIF9fcHJlZml4IC91c3IKZGlmZiAtLWdpdCBhL01pc2MvcHl0aG9uLWNvbmZpZy5pbiBiL01pc2MvcHl0aG9uLWNvbmZpZy5pbgppbmRleCA3OWYwYmIxLi5iYjBiMDA4IDEwMDY0NAotLS0gYS9NaXNjL3B5dGhvbi1jb25maWcuaW4KKysrIGIvTWlzYy9weXRob24tY29uZmlnLmluCkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IHN5c2NvbmZpZwogCiB2YWxpZF9vcHRzID0gWydwcmVmaXgnLCAnZXhlYy1wcmVmaXgnLCAnaW5jbHVkZXMnLCAnbGlicycsICdjZmxhZ3MnLAotICAgICAgICAgICAgICAnbGRmbGFncycsICdleHRlbnNpb24tc3VmZml4JywgJ2hlbHAnLCAnYWJpZmxhZ3MnXQorICAgICAgICAgICAgICAnbGRmbGFncycsICdleHRlbnNpb24tc3VmZml4JywgJ2hlbHAnLCAnYWJpZmxhZ3MnLCAnY29uZmlnZGlyJ10KIAogZGVmIGV4aXRfd2l0aF91c2FnZShjb2RlPTEpOgogICAgIHByaW50KCJVc2FnZTogezB9IFt7MX1dIi5mb3JtYXQoCkBAIC02MSwzICs2MSw2IEBACiAKICAgICBlbGlmIG9wdCA9PSAnLS1hYmlmbGFncyc6CiAgICAgICAgIHByaW50KHN5cy5hYmlmbGFncykKKworICAgIGVsaWYgb3B0ID09ICctLWNvbmZpZ2Rpcic6CisgICAgICAgIHByaW50KHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTElCUEwnKSkKZGlmZiAtLWdpdCBhL01pc2MvcHl0aG9uLm1hbiBiL01pc2MvcHl0aG9uLm1hbgppbmRleCAyMGJlZGVkLi43MmUxZWNiIDEwMDY0NAotLS0gYS9NaXNjL3B5dGhvbi5tYW4KKysrIGIvTWlzYy9weXRob24ubWFuCkBAIC0zNywxMyArMzcsNiBAQAogLkIgXC1PTwogXQogWwotLkIgXC1SCi1dCi1bCi0uQiAtUQotLkkgYXJndW1lbnQKLV0KLVsKIC5CIFwtcwogXQogWwpAQCAtMTU1LDI3ICsxNDgsNiBAQAogRG8gbm90IHByaW50IHRoZSB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMuIFRoZXNlIG1lc3NhZ2VzIGFyZSAKIGFsc28gc3VwcHJlc3NlZCBpbiBub24taW50ZXJhY3RpdmUgbW9kZS4KIC5UUAotLkIgXC1SCi1UdXJuIG9uICJoYXNoIHJhbmRvbWl6YXRpb24iLCBzbyB0aGF0IHRoZSBoYXNoKCkgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kCi1kYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcHNldWRvLXJhbmRvbSB2YWx1ZS4KLUFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvbiBwcm9jZXNzLCB0aGV5IGFyZQotbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2YgUHl0aG9uLgotLklQCi1UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsIG9mIHNlcnZpY2UKLWNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2UKLW9mIGEgZGljdCBjb25zdHJ1Y3Rpb24sIE8obl4yKSBjb21wbGV4aXR5LiAgU2VlCi1odHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwKLWZvciBkZXRhaWxzLgotLlRQCi0uQkkgIlwtUSAiIGFyZ3VtZW50Ci1EaXZpc2lvbiBjb250cm9sOyBzZWUgUEVQIDIzOC4gIFRoZSBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiAib2xkIiAodGhlCi1kZWZhdWx0LCBpbnQvaW50IGFuZCBsb25nL2xvbmcgcmV0dXJuIGFuIGludCBvciBsb25nKSwgIm5ldyIgKG5ldwotZGl2aXNpb24gc2VtYW50aWNzLCBpLmUuIGludC9pbnQgYW5kIGxvbmcvbG9uZyByZXR1cm5zIGEgZmxvYXQpLAotIndhcm4iIChvbGQgZGl2aXNpb24gc2VtYW50aWNzIHdpdGggYSB3YXJuaW5nIGZvciBpbnQvaW50IGFuZAotbG9uZy9sb25nKSwgb3IgIndhcm5hbGwiIChvbGQgZGl2aXNpb24gc2VtYW50aWNzIHdpdGggYSB3YXJuaW5nIGZvcgotYWxsIHVzZSBvZiB0aGUgZGl2aXNpb24gb3BlcmF0b3IpLiAgRm9yIGEgdXNlIG9mICJ3YXJuYWxsIiwgc2VlIHRoZQotVG9vbHMvc2NyaXB0cy9maXhkaXYucHkgc2NyaXB0LgotLlRQCiAuQiBcLXMKIERvbid0IGFkZCB1c2VyIHNpdGUgZGlyZWN0b3J5IHRvIHN5cy5wYXRoLgogLlRQCkBAIC0xODQsNyArMTU2LDkgQEAKIC5JIHNpdGUKIGFuZCB0aGUgc2l0ZS1kZXBlbmRlbnQgbWFuaXB1bGF0aW9ucyBvZgogLkkgc3lzLnBhdGgKLXRoYXQgaXQgZW50YWlscy4KK3RoYXQgaXQgZW50YWlscy4gIEFsc28gZGlzYWJsZSB0aGVzZSBtYW5pcHVsYXRpb25zIGlmCisuSSBzaXRlCitpcyBleHBsaWNpdGx5IGltcG9ydGVkIGxhdGVyLgogLlRQCiAuQiBcLXUKIEZvcmNlIHRoZSBiaW5hcnkgSS9PIGxheWVycyBvZiBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gYmUgdW5idWZmZXJlZC4KQEAgLTI4Myw5ICsyNTcsOSBAQAogZnJvbSB0aGF0IGZpbGU7CiB3aGVuIGNhbGxlZCB3aXRoCiAuQiBcLWMKLS5JIGNvbW1hbmQsCisuSVIgY29tbWFuZCAsCiBpdCBleGVjdXRlcyB0aGUgUHl0aG9uIHN0YXRlbWVudChzKSBnaXZlbiBhcwotLkkgY29tbWFuZC4KKy5JUiBjb21tYW5kIC4KIEhlcmUKIC5JIGNvbW1hbmQKIG1heSBjb250YWluIG11bHRpcGxlIHN0YXRlbWVudHMgc2VwYXJhdGVkIGJ5IG5ld2xpbmVzLgpAQCAtMjk1LDcgKzI2OSw3IEBACiAuUFAKIElmIGF2YWlsYWJsZSwgdGhlIHNjcmlwdCBuYW1lIGFuZCBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0aGVyZWFmdGVyIGFyZQogcGFzc2VkIHRvIHRoZSBzY3JpcHQgaW4gdGhlIFB5dGhvbiB2YXJpYWJsZQotLkkgc3lzLmFyZ3YgLAorLklSIHN5cy5hcmd2ICwKIHdoaWNoIGlzIGEgbGlzdCBvZiBzdHJpbmdzICh5b3UgbXVzdCBmaXJzdAogLkkgaW1wb3J0IHN5cwogdG8gYmUgYWJsZSB0byBhY2Nlc3MgaXQpLgpAQCAtMzA5LDE0ICsyODMsMTQgQEAKIC5JICctYycuCiBOb3RlIHRoYXQgb3B0aW9ucyBpbnRlcnByZXRlZCBieSB0aGUgUHl0aG9uIGludGVycHJldGVyIGl0c2VsZgogYXJlIG5vdCBwbGFjZWQgaW4KLS5JIHN5cy5hcmd2LgorLklSIHN5cy5hcmd2IC4KIC5QUAogSW4gaW50ZXJhY3RpdmUgbW9kZSwgdGhlIHByaW1hcnkgcHJvbXB0IGlzIGA+Pj4nOyB0aGUgc2Vjb25kIHByb21wdAogKHdoaWNoIGFwcGVhcnMgd2hlbiBhIGNvbW1hbmQgaXMgbm90IGNvbXBsZXRlKSBpcyBgLi4uJy4KIFRoZSBwcm9tcHRzIGNhbiBiZSBjaGFuZ2VkIGJ5IGFzc2lnbm1lbnQgdG8KIC5JIHN5cy5wczEKIG9yCi0uSSBzeXMucHMyLgorLklSIHN5cy5wczIgLgogVGhlIGludGVycHJldGVyIHF1aXRzIHdoZW4gaXQgcmVhZHMgYW4gRU9GIGF0IGEgcHJvbXB0LgogV2hlbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIG9jY3VycywgYSBzdGFjayB0cmFjZSBpcyBwcmludGVkIGFuZAogY29udHJvbCByZXR1cm5zIHRvIHRoZSBwcmltYXJ5IHByb21wdDsgaW4gbm9uLWludGVyYWN0aXZlIG1vZGUsIHRoZQpAQCAtMzcyLDcgKzM0Niw3IEBACiBpbnNlcnRlZCBpbiB0aGUgcGF0aCBpbiBmcm9udCBvZiAkUFlUSE9OUEFUSC4KIFRoZSBzZWFyY2ggcGF0aCBjYW4gYmUgbWFuaXB1bGF0ZWQgZnJvbSB3aXRoaW4gYSBQeXRob24gcHJvZ3JhbSBhcyB0aGUKIHZhcmlhYmxlCi0uSSBzeXMucGF0aCAuCisuSVIgc3lzLnBhdGggLgogLklQIFBZVEhPTlNUQVJUVVAKIElmIHRoaXMgaXMgdGhlIG5hbWUgb2YgYSByZWFkYWJsZSBmaWxlLCB0aGUgUHl0aG9uIGNvbW1hbmRzIGluIHRoYXQKIGZpbGUgYXJlIGV4ZWN1dGVkIGJlZm9yZSB0aGUgZmlyc3QgcHJvbXB0IGlzIGRpc3BsYXllZCBpbiBpbnRlcmFjdGl2ZQpAQCAtNDI5LDkgKzQwMyw4IEBACiBJZiB0aGlzIGlzIHNldCB0byBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgaXQgaXMgZXF1aXZhbGVudCB0bwogc3BlY2lmeWluZyB0aGUgXGZCXC1XXGZQIG9wdGlvbiBmb3IgZWFjaCBzZXBhcmF0ZSB2YWx1ZS4KIC5JUCBQWVRIT05IQVNIU0VFRAotSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gInJhbmRvbSIsIHRoZSBlZmZlY3QgaXMgdGhlIHNhbWUgYXMgc3BlY2lmeWluZwotdGhlIFxmQi1SXGZQIG9wdGlvbjogYSByYW5kb20gdmFsdWUgaXMgdXNlZCB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLAotYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuCitJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAicmFuZG9tIiwgYSByYW5kb20gdmFsdWUgaXMgdXNlZCB0byBzZWVkIHRoZSBoYXNoZXMKK29mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuCiAKIElmIFBZVEhPTkhBU0hTRUVEIGlzIHNldCB0byBhbiBpbnRlZ2VyIHZhbHVlLCBpdCBpcyB1c2VkIGFzIGEgZml4ZWQgc2VlZCBmb3IKIGdlbmVyYXRpbmcgdGhlIGhhc2goKSBvZiB0aGUgdHlwZXMgY292ZXJlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uLiAgSXRzCkBAIC00NDAsOCArNDEzLDcgQEAKIHZhbHVlcy4KIAogVGhlIGludGVnZXIgbXVzdCBiZSBhIGRlY2ltYWwgbnVtYmVyIGluIHRoZSByYW5nZSBbMCw0Mjk0OTY3Mjk1XS4gIFNwZWNpZnlpbmcKLXRoZSB2YWx1ZSAwIHdpbGwgbGVhZCB0byB0aGUgc2FtZSBoYXNoIHZhbHVlcyBhcyB3aGVuIGhhc2ggcmFuZG9taXphdGlvbiBpcwotZGlzYWJsZWQuCit0aGUgdmFsdWUgMCB3aWxsIGRpc2FibGUgaGFzaCByYW5kb21pemF0aW9uLgogLlNIIEFVVEhPUgogVGhlIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvcHNmCiAuU0ggSU5URVJORVQgUkVTT1VSQ0VTCmRpZmYgLS1naXQgYS9NaXNjL3N2bm1hcC50eHQgYi9NaXNjL3N2bm1hcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQyYmU3ZgotLS0gL2Rldi9udWxsCisrKyBiL01pc2Mvc3ZubWFwLnR4dApAQCAtMCwwICsxLDcyNTQ2IEBACisyMTYxIDNjZDAzM2U2YjUzMGY2YTc4YjNiMTRmZWRiZDIwNzQ4OTZkYmY2ZGUgbGVnYWN5LXRydW5rCisyMTYyIDRkYjlkNDZiMzA2YTljNmVjMmQxZmU3YTdjYzM2ZWY3MTczNDI2YTYgbGVnYWN5LXRydW5rCisyMTYzIDRhM2E2NDgxODVlZjg5NjVjMzQyODYwYmQ4NDU3ZWQ2YzAzYzZkZTAgbGVnYWN5LXRydW5rCisyMTY0IDhkYTkyMjVjYzYwZTJkYTE2NjVhODBhZjkwMTg0ZGIwZmRkYTA1Y2UgbGVnYWN5LXRydW5rCisyMTY1IDE3ZTQ5MGI0ZGMyOGI4YWM2MDVmYTE5ZTQ4MmNmNzIyZmU4MDY1OGQgbGVnYWN5LXRydW5rCisyMTY2IDU1NzBkYmIxY2U1NThiNTU3MTZlYWI3ZDA4MGExYWZhZDJlNzdlMmYgbGVnYWN5LXRydW5rCisyMTY3IGZjNmZjZDdkZjRmN2YyZTFjMTJmMTdhZjI0NjRjNDk3ZDZmNmEzZTkgbGVnYWN5LXRydW5rCisyMTY4IDM0ZDY2N2RjMWE0YzRhYmRjYjE5Y2RkZmQyZTliZmRhMDExMzllZDIgbGVnYWN5LXRydW5rCisyMTY5IDZmYzE0NmJkNGYwM2M5N2QxNGM3YzMwMGIxMjEyYTExZWI5YjY3MmEgbGVnYWN5LXRydW5rCisyMTcwIDMzNzAxZGI0ZWE1NTkxMDBkMzdiZTQ0ZDJmMGQ1M2U1NjhhMGVjMzMgbGVnYWN5LXRydW5rCisyMTcxIGE3MWU4OTZlZDA0NzM0MjFkODhmZTQ1NTI2OWM1YTVlNTQ3MzJhMjIgbGVnYWN5LXRydW5rCisyMTcyIGJjZWE2YzgyMjkwNmM4NGVkZWRhYmNjMDNlYzQ4MTU5NWRlZjBhNjMgbGVnYWN5LXRydW5rCisyMTczIDM2YTIyMGQzNzMxYTAzMzQ1Nzg1NTkzZWMzMmViYzM1YTI5NDk0ZGUgbGVnYWN5LXRydW5rCisyMTc0IDA2YmYyYWYwMGUzYTllYjUxNTI5YjYxOGNiZGMwYmJjZjFhNGU5NjQgbGVnYWN5LXRydW5rCisyMTc1IDg3NGM4ZmQ1NjVmYTA5NDYxYzIxMzk5YWY5ZWRlMTIzNGVhMTBmNzAgbGVnYWN5LXRydW5rCisyMTc2IGU5ZTA1ZmJiYTdhNDAwMzRmODIxMWM5ZDFkMTJiMjg4NzlmNTFmY2YgbGVnYWN5LXRydW5rCisyMTc3IDA4MDhlNWFiNzQzYWJiOGIwNTdhNTVmNzY1MWFjMTE4YzgzZjViMGMgbGVnYWN5LXRydW5rCisyMTc4IGE1ZjAxYTkxNzQwOTJkMjllYmE2Mzc3YzIzNjkxODdjZGIzZmQ3ZDUgbGVnYWN5LXRydW5rCisyMTc5IGU5YmJlNGFjMzIzODllOGE3YTZjMGI0YWVmYWY0ZWFkMzA4OGYyMWEgbGVnYWN5LXRydW5rCisyMTgwIDcxYWMwZTM3MjM2YTU0ZTBhNjc4OGIzODQ2NTVkOGQ4MjA5ZDg1OGEgbGVnYWN5LXRydW5rCisyMTgxIDExODU0NTMxMmYzYmZlMTAzYmNjZmIxMDNmNGRmMmVlYjBkMGViODMgbGVnYWN5LXRydW5rCisyMTgyIDk2MTY5NmVmM2FiN2U0M2M5OWY1Yzc2MGY3YzYyMWI2YTExOWRjOTggbGVnYWN5LXRydW5rCisyMTgzIDJkM2ViNzE3YTAwZDEwM2Q0Mzc1OTRlMDgxOTNkYWU2MDAwNjFkYTkgbGVnYWN5LXRydW5rCisyMTg0IDA4NTYyZGUwMTY2ODAwZTFjNmQ1ZDUxNWY3NDM2OWIzOTlmZDhjYWEgbGVnYWN5LXRydW5rCisyMTg1IDY0YTY5ZDYxMjFlMGQyMDYyZjI2YTdlY2E2N2U5YjZhNDJkY2EyN2IgbGVnYWN5LXRydW5rCisyMTg2IDMyNjM5ODc4ZDE2YjYwNDg3NTM4OGUyMjk5NjExYmJmYzUxODk2MjYgbGVnYWN5LXRydW5rCisyMTg3IDQ1YWViMmVlYWQ3OWVlN2ZhMzZlNDE2NmRlYjc1Mzg2YzEzZTM0MWQgbGVnYWN5LXRydW5rCisyMTg4IDgyYzdiYWI3OGJiMTBhNzA2ZjVkNTIwYjE1NTBlNzI0Yjk0YWEzOGMgbGVnYWN5LXRydW5rCisyMTg5IGU1YzUwYzY4ODExN2M2ZTViZDg5NTQ2MGRhY2U2YzljYmY1ODFhZmQgbGVnYWN5LXRydW5rCisyMTkwIDM0MmE3YzYxYzBjM2MwZmU0ODE0ZDFhZDI0ZTc3MTQyNzczODE1YjEgbGVnYWN5LXRydW5rCisyMTkxIDg2ZTBlMjM1MGJhMTE3NDdjNGUwZmRjZTk3YmM3YzliYzY0ODc0MWIgbGVnYWN5LXRydW5rCisyMTkyIGM0ODdkZmMzMDY2MzM5ODUwODU0ZmI4NThjNmE4MzMwNTlhOWJjNzggbGVnYWN5LXRydW5rCisyMTkzIGI2NDNlYWRlNjU0NDU5Zjg3ZDU3MmQ2Yjc5Mzg5NmQ5YjNhZGY4NDAgbGVnYWN5LXRydW5rCisyMTk0IGI4MDdjOTBjNGE2ODIyZDFjYjhiMzk2OTkxY2FhODA4NWJiMzJiNGUgbGVnYWN5LXRydW5rCisyMTk1IDFkMjI5MDBmNzdiODUzYmVlMDZkZDI0YTFiZjFmZGY0NTE1YjQ4YmMgbGVnYWN5LXRydW5rCisyMTk2IGRhMDZhMjgyYjg4MDRmYTQ3ZmY0YzNjNGJkOTJiYTlmYjhlZWE5MjkgbGVnYWN5LXRydW5rCisyMTk3IGEyMjQwY2U5MWU1MjA2MWI0MzJmOTc5NTdmOTJiZjc5Nzg1MzQwYWMgbGVnYWN5LXRydW5rCisyMTk4IGM3OTVmZGFjZWQ5YjhhMjhkOTgzMzI3Nzg2OGIxZjc0NjFhMDk1ZjUgbGVnYWN5LXRydW5rCisyMTk5IDEwZTE4MjFjMzQ1Y2EyZDEzNzUzNWE2YzFjZjVlYjAxMjg2ZmNkN2UgbGVnYWN5LXRydW5rCisyMjAwIDE5MDVmODIxMzk3YjBmMDk0MTAxMTYwOGU1YjQ2ZGQxYzllMzg5ZTQgbGVnYWN5LXRydW5rCisyMjAxIGYyOGFjN2Y2MjFjNzYwNzk3NzRjMzAwMTdiMjkwMTM5NjVkMTA0MDkgbGVnYWN5LXRydW5rCisyMjAyIGU4MGVmZWFiNDliMzJjMTVhYzk3YjI0ZDRmNmU4ZmRkNWNjZjBhOTUgbGVnYWN5LXRydW5rCisyMjAzIDQ4MzVjMmQzOGI4NGU1ZmI1NTgwMzZkNDdjNTg3MWRkOTY2MzM4YjcgbGVnYWN5LXRydW5rCisyMjA0IGVhMjE5ODJhMTUzMjQyNWY4MmVjNWE0MzQ2Y2I4NDE5MTdhNzFkOTUgbGVnYWN5LXRydW5rCisyMjA1IDRkM2EyOGRmZmM5Yjk1ZDM4YjkxMmNiNjk1NzQyZGU0MGQ5NTc2MzUgbGVnYWN5LXRydW5rCisyMjA2IDdmZWNhYmIzMjc5MTQ1MDQ1NDQ2MTdlNWJhY2QxYzA1YTEyZTg2OWYgbGVnYWN5LXRydW5rCisyMjA3IGNlNmYyNDcxMTUwNGU1OTU2ZDY2MDA5OWM5OWVjY2I5NTFjMGMxNDkgbGVnYWN5LXRydW5rCisyMjA4IDA1MDU3ZTM2NjBmODJjZThlODNlOGMyZDczZDBiNTg0OTRmMmJlYTcgbGVnYWN5LXRydW5rCisyMjA5IGIwZTc2MjIxZTdmZmRiY2ZlOThhNDRhZGZhZTljMjM1MDkzYzdjZWIgbGVnYWN5LXRydW5rCisyMjEwIGMzZmEyZDFmMzAzNTg2OTllZTI0ZTJhNWMzYzAxMTY2MmY3NWMzNzYgbGVnYWN5LXRydW5rCisyMjExIGI5NDgyMmY1NDk5MTMwNGI1OGFkYmJlYTIzODY5Yzk4YjJmNmYzZmUgbGVnYWN5LXRydW5rCisyMjEyIGViY2I2MjZjZmRkZmI5ZjFjN2IxODY3OGFjYmVjNDRlYjk3YWJiZDcgbGVnYWN5LXRydW5rCisyMjEzIDFiMzEwNzdhYzY0MzA3YWI1NDU1MjY1MWFlYzY3ODc4ZDgwZDBiZDcgbGVnYWN5LXRydW5rCisyMjE0IGExZTUwYThmNDJlMjNjZmFiNjRiZTNlOTlkOGE1MzM1ZWEzM2E5YzUgbGVnYWN5LXRydW5rCisyMjE1IDQwMmY1NzA4YjEwN2IwNWY4MTFlNWY4NTQyODQyZTcxNzk4ZGE2YzkgbGVnYWN5LXRydW5rCisyMjE2IDdhMDFkYmNlZTliYzAzMTJmNWEzMTdmYjI0Mjk5NzUxZTc4ZGRkYzIgbGVnYWN5LXRydW5rCisyMjE3IGE3ZThmYjdiYjZhMjhlYjEzYzA1NmYzYzYyYTk2Y2FhYzVmNjQ0ZDQgbGVnYWN5LXRydW5rCisyMjE4IGExYzJiNGZhZDEzNmNmYjFiMjIzMTUwYTQ4YzM0ODBkNjNlMmRlY2IgbGVnYWN5LXRydW5rCisyMjE5IDQ5NzVmNzk5MGIyYjM1YzcwZDIzNTA1ZWNlYTVjMjBlZWZjZDFlZDggbGVnYWN5LXRydW5rCisyMjIwIDQzM2Y1MmQxZDk1ODc3NjcwM2E3M2U4MGU1NTZiZWViMGU0N2Y1NDMgbGVnYWN5LXRydW5rCisyMjIxIDRmNTkzYjM4ZDA2MTU1NzlhY2FkNGMzYzljYjM1MGViNjAwZGRjNGUgbGVnYWN5LXRydW5rCisyMjIyIDVjNGRkOTM0OGU4MTEzMzIwYzRmN2I0ZTk4MzNmMzIwNWRmMThiODAgbGVnYWN5LXRydW5rCisyMjIzIGZmZmQxMjg2Yzg4MjY3OTM0ZDc0ODZlNGM0ZTQ2N2Q1N2IwODY1OWIgbGVnYWN5LXRydW5rCisyMjI0IDYxMzExNTA2ZjJjZDA5YmFkZDhiNzk0NTZhZjk3ODkyMTRlY2IwZjQgbGVnYWN5LXRydW5rCisyMjI1IGEyMmRmNTJkNzc0OWEzYThjMDc3MGE4MjEzZGU0N2IyY2E1OGZlY2YgbGVnYWN5LXRydW5rCisyMjI2IGE3MmMwYTdkYzk5M2FhZTA1ZTcwODVjZDM4Njc4YjlkYmJlYjE5ODEgbGVnYWN5LXRydW5rCisyMjI3IDQ2Y2IxNGFlYzEwYThkNmUzNjY1YjcxODgwNzBiNjdlODk5YWQ2MzYgbGVnYWN5LXRydW5rCisyMjI4IGY5OGU0MTcxMWQxNzc5MDBhOTZkNTc0NWJhOTBjYzg4YmQ4MmQ3ZDggbGVnYWN5LXRydW5rCisyMjI5IDM2NTAzNzM2ZmRjMjM5MzQwNmMwODYwYzgxYTIwMjIyZDczY2VlNTkgbGVnYWN5LXRydW5rCisyMjMwIGNjY2Q1MzRmMjI4MDc0ZjI2NzQ4NDg0MjIxZDY5ZjJlZTc1MmYyYjMgbGVnYWN5LXRydW5rCisyMjMxIGEzNmMzNDhhOGUxYTI5MTVkNjliN2RkMjAyMTYzZmRiN2U1OTZjODggbGVnYWN5LXRydW5rCisyMjMyIGFjNDUyMmU5OWNhOTQzNzdhNjVjNjZjZmRjMjY2ODRmYTBmZGZiZWIgbGVnYWN5LXRydW5rCisyMjMzIDVlOGEwYjQwYTRiZGYxZTgzYzVkMGJmMzhlZmM3NzQ1YjA2ZWY4ZDQgbGVnYWN5LXRydW5rCisyMjM0IDMwMjhhY2FhNTZiMDVlZDBlMTFlMTU2ZTgxYjVhMDY3MTkxNWNiODYgbGVnYWN5LXRydW5rCisyMjM1IGJjMjQ0ZGYyMDI1MTZiNWE1NTUxM2U0NjNiMmY2MzdkMThmNTgwNTUgbGVnYWN5LXRydW5rCisyMjM2IDg1ZWVkMDYwYTQ2Y2UyNjY0OWZkNjgwMmNmYmQ1ZWVjNjE5MTA2ODggbGVnYWN5LXRydW5rCisyMjM3IGVkZTg2Nzk5NzA1YmExNGJjNDAyMTM1NzFkZmUyYTFkNWY1NmU5MDcgbGVnYWN5LXRydW5rCisyMjM4IGY3MmUwYzYyMzY5ZTI0Y2NjMGVjZGFiNzkyYzk3YTIxYjIzMzJiYWQgbGVnYWN5LXRydW5rCisyMjM5IGIxZmI0ZTFmNmU1MTZkMjgwYzU1NTAxYjIzNDQ0OThjYTYyN2ZlYmMgbGVnYWN5LXRydW5rCisyMjQwIDZjNDNlNTQ3NmRlNjkwNDEyNjk5YjNiZGU2YjUwN2IxYzQ4ODA0YTYgbGVnYWN5LXRydW5rCisyMjQxIGY0NzEwMWRjM2MxODhmMjRmOWI5NzA1ZGIzYjY0ODkxOTE0YmRiODIgbGVnYWN5LXRydW5rCisyMjQyIGRlMzRmNGE0ZDM1M2I5ZjVmOTkxYWFjYTk4YzgzZmFhYzY4MWM2ZjUgbGVnYWN5LXRydW5rCisyMjQzIDU1NGFjNjU5YjJjYjk1MjRlZjRmOTZlYzI3NTZkYzRjYTBmYTBmOWIgbGVnYWN5LXRydW5rCisyMjQ0IGY2YmNmM2MxZDcxNGU3ODc1MzU2Y2ExMmMzMmVlNWY5NzVmNGVkOGEgbGVnYWN5LXRydW5rCisyMjQ1IGE3OWNiYjI2NTViYWFmNTRhZGRjMjIwMzM1MDAzNjQ3OWJkY2I3ZTMgbGVnYWN5LXRydW5rCisyMjQ2IDA2YzkyZjQ5MWY1ODhlZDlhYmUwZjJkNGYxNTEyMDY5YTMwYzE5MDEgbGVnYWN5LXRydW5rCisyMjQ3IGE2OTM0MzgwYzZlNzliODdmNzc2MmIxZDk0MzNkMGUwYTg5Mzc0NTIgbGVnYWN5LXRydW5rCisyMjQ4IGVmMjQ0MGYyNGYxMDJjNjc3YTAyZDQwNzk4OGRkODVmNWRhNTBjYWIgbGVnYWN5LXRydW5rCisyMjQ5IDE2ZThjNWQxNjQ5MzVmM2M2YTk4OWVlZWFkZjIyYjBhYjRkYzIyZWEgbGVnYWN5LXRydW5rCisyMjUwIDU4NDdkZjEzOTkxZGU2YTgzNjQ4NDEwNzU1M2Y0ZTljZWNjYThhMTQgbGVnYWN5LXRydW5rCisyMjUxIDVjYjg0M2JjODdmYzA4NjU0NmZhYmY2YjhlYzAzZWVkMzFlMjBhOGYgbGVnYWN5LXRydW5rCisyMjUyIDVjMzU3ZDM3YjMyNzMxYzhkMDIwNDU0OTcwMjA4NThjNzljNTcxMzkgbGVnYWN5LXRydW5rCisyMjUzIDAwMjA2NmE4MzljNTFjYzE4NGEwYzZlNjY5ZWM5ZDYzNDIwY2RhNjcgbGVnYWN5LXRydW5rCisyMjU0IDllMDUxZmM3MDczZTc3YjllMTUwMzRhMTllNTQ3ZWZlMmI4NWM2NmEgbGVnYWN5LXRydW5rCisyMjU1IGRhYzg2MjVjOGQ5YjAxNDE3OWNkNTgzMzU4YjRkMGU0ZTI1MDI1NjcgbGVnYWN5LXRydW5rCisyMjU2IGE1YmY3ZDU5NTljZTA1MGYyYjA1MWMxMmU4MTgwODk1ZTdlNmQ4YTkgbGVnYWN5LXRydW5rCisyMjU3IDI3YTViMDhjM2U3NDJjNjJhMTViNjgxNTZmZTBkNDg4YzA5NGFkNDIgbGVnYWN5LXRydW5rCisyMjU4IDZiNzVmMmEzMDAwZDQwNjUxNDZiMmRhZmU2ZDgzZDMzMDcxZThkMzUgbGVnYWN5LXRydW5rCisyMjU5IDQ1NWQ2NWExMWIxM2VkMzc3OTJlMWY0ZmZiZmUzYmNkZmFhNzgzZWUgbGVnYWN5LXRydW5rCisyMjYwIGUwYzhlZmVlNzZiZDgxNTc4NGM4MTNjNjZhMmExMDQ2ZTVhMGJmNWEgbGVnYWN5LXRydW5rCisyMjYxIGFkMTRhYThhMjk4NDQzMjM4NGY3YWYyMWQ0NTJiZTVhYWJhNmYxOGYgbGVnYWN5LXRydW5rCisyMjYyIDA4ZTU1ZGI2Zjc5NmEyNzZlY2QxYzE2ODNhNTAyYmFmZDcyNDc4NzIgbGVnYWN5LXRydW5rCisyMjYzIGYyY2FjYjkwYzkxN2M4ZDI5Mjc5OTRjYzI0MzEyYTYyMWRiMTNmODMgbGVnYWN5LXRydW5rCisyMjY0IDEyMjliYTEyNGUwYmE4ZWNlOTIyY2UxNGMwZjRhYWJkYmRlMWQzZjAgbGVnYWN5LXRydW5rCisyMjY1IDRlYzhjMjYzYWI0OGI0OWQ3NzI3MDExYzRhODZjN2IxMDliMGZhNTggbGVnYWN5LXRydW5rCisyMjY2IGI0ZDVmZGNiZjgzYzY4ZjkxM2FmNGMxNzVhMTQzYzhhYmY3NzVmZWYgbGVnYWN5LXRydW5rCisyMjY3IDY0MzczYzc5YzA5OTk5MGNiNjkyNjJkMTgzYTQ1ZTRkYmZmNDI4NDIgbGVnYWN5LXRydW5rCisyMjY4IDFlMDA3ZGNjYjI3MDliMDgxMWU1M2JmMDdjN2I4Nzk3OTFhYzk3NzQgbGVnYWN5LXRydW5rCisyMjY5IGFlOWIzNjZjNTc1ZDU1N2U2ZjgwNmYwZDE2ZTU0Nzg1NzE3NTRjMWIgbGVnYWN5LXRydW5rCisyMjcwIGY2OTQwMzZiODU2MWViMWIzY2I1OWVmMzY4MGQ3ZTk2ZGRmZDcxYTAgbGVnYWN5LXRydW5rCisyMjcxIGU0YjFkOWU2OTgwYTQzOGY5MDJlZWY5MDAzNjhjMmU2YTJkNTBhNjQgbGVnYWN5LXRydW5rCisyMjcyIGQwOGY3NTJiNTZjMDYxNDZkNWJhY2ZiMmVmNzZjMTAzNmEzY2RjNDkgbGVnYWN5LXRydW5rCisyMjczIGQ4YTFiNjQ1NjIxMmIyOGI2MTI2NGRiMDJkNjViMmM1ZjZkZTcyYzggbGVnYWN5LXRydW5rCisyMjc0IGQxNjk2MTE2NzM2NWZmZmY4MTdiYjhlNjhhMjExMWZlNTNhNmNjNTggbGVnYWN5LXRydW5rCisyMjc1IDFlZmI4ZWQ2YWZkMzNhMDA2YzUyOTlkM2E0MTVhY2UxMmM5ODZhODkgbGVnYWN5LXRydW5rCisyMjc2IDQwOTRiNDZmMDRjOGVhZjMyNWIzZDU5OWU3MzJhNWJmOWE4YzNhN2IgbGVnYWN5LXRydW5rCisyMjc3IDBhMDJjYTlkY2Q2ZTAyMmYxMGExY2M1NTM3Yzc4YWE3MTMyNGEzMjMgbGVnYWN5LXRydW5rCisyMjc4IDc4NzMzYzFjNmUzNjE4N2FmNTdmNGVhMjUxNzBhZDA3ZDA4MTBiYjggbGVnYWN5LXRydW5rCisyMjc5IGE4MDkwMTNjMmFmMWVmM2ZkNjlmZjUxYjQ5YzI1NjNhZjdjMzI3MDUgbGVnYWN5LXRydW5rCisyMjgwIDlmZWUxY2E2YzhmZWQxNTc3MGNmMDZmNDE4NzVkZmZhZTlhZWQ0MmEgbGVnYWN5LXRydW5rCisyMjgxIGM5YTVmZTE2NjBmNTE5ODVlMjY5YmU0OTI5NDY0ZTVjNGVhMmU1YWQgbGVnYWN5LXRydW5rCisyMjgyIDBjMjVmYWY0YTZhNDQ1MDg1YzRiN2E5ODViN2E0MzAwYzkzOWNmNzEgbGVnYWN5LXRydW5rCisyMjgzIGIzODAzZmQzY2IyYzhkOTA5MzEzNmY1YTFkMmVjNTBmOTgxYjQzMTIgbGVnYWN5LXRydW5rCisyMjg0IDIyNzI3YjQzNzgxZTdjNTNkYmRjZjUyZjM4YWJmZDA5ZDZkMDgxNGYgbGVnYWN5LXRydW5rCisyMjg1IGE4ZDAzM2M2ZmI1NGEzZWVhODBkZTBhMjk1MmNmNWE5ODBiM2Y4NDcgbGVnYWN5LXRydW5rCisyMjg2IGY3MWQ2YTA5NmIwMjE4YTI2NzI3YmRhMGQ0ZDNkNWFjYmYzNTIzZGIgbGVnYWN5LXRydW5rCisyMjg3IDI3Y2MwZDgyMzc2NjNiNzVkYTM4NzE1NDZiMjAzZjU2ODVhNDdhNDUgbGVnYWN5LXRydW5rCisyMjg4IGQyMTRiNWQyMWRmOGM1YWNlY2VlZTU2YmUxNDgxODQ0NWY4MDk4MzMgbGVnYWN5LXRydW5rCisyMjg5IDNiZWQ3NmNkYWMwYzQ2NTVjZjgwMjViYTYxMjIxZjNlY2NkN2I2OWYgbGVnYWN5LXRydW5rCisyMjkwIGVmZDkwMDQ5N2Y0Zjg3ZDcxN2QxMzdkYjU4YWY5OTVkNmEwM2IxNGIgbGVnYWN5LXRydW5rCisyMjkxIDhmMjE0ZDYxN2FjYWI4MGYxNjY3YzEwMmI2ZmU4NWY2ODBiY2UwZGIgbGVnYWN5LXRydW5rCisyMjkyIGFkNGM1YTVlZjBmZmVlZTliOWFhODg1YTQxNmUwOWZhNDQ5MjUxYjAgbGVnYWN5LXRydW5rCisyMjkzIDY1ZWRkZTAyMmQ3MWVlMzgzYjBhNTQ2YzcyOTdjOTM4OThhNmUxYjEgbGVnYWN5LXRydW5rCisyMjk0IDA2ODg5Njg1ZWI2MjAxZDI0ZTkxM2I0YzA1NGMxZjIyNzRkNGQzNWQgbGVnYWN5LXRydW5rCisyMjk1IDVkNWM5YjJkYTU2MjIxODJjYWZjZjE3NzdiOGFhNzZjNzBhYjc2MjAgbGVnYWN5LXRydW5rCisyMjk2IDI2Y2NiYzNlNDFjNDYxYWQ3OWE0MmUyMDEzMzljYjlmOWEyZDg5YzcgbGVnYWN5LXRydW5rCisyMjk3IDY1MjNiZDI5NTRmMDQzNmZiOGY2Y2I0YWFhZmEzMDA1MDdlM2FiMjcgbGVnYWN5LXRydW5rCisyMjk4IDgyZWY5NGI4YjkwMmUzNDk0YjM4NjAxZDE4NDRiYjk1OWRlMzE2NzcgbGVnYWN5LXRydW5rCisyMjk5IGJiMjQ5NDg5NTdlM2NhOTY4NzZlOTAyZWRiMjkwYWI0NjRiYTZiNmUgbGVnYWN5LXRydW5rCisyMzAwIGMyOTRhOGNhZWJiOWJiM2VlOWY4OTJhMzcyZDY0NTc1MDcwNDZmNTMgbGVnYWN5LXRydW5rCisyMzAxIDNiODAyM2IwYmI0OGIxMDY2ZDRhMzM0MDczMTczMDRkMzcyOWUzOTEgbGVnYWN5LXRydW5rCisyMzAyIGJmNWE4NTM5ZDhiYTdmNzRmMDM0MjJjNWI0ZjY2OTA3MGZiOTY1MjEgbGVnYWN5LXRydW5rCisyMzAzIGM3ZWE2MDQ5MWU2ODFlOWI5MWY3NmEwMTJjNGRjOTQ0YjVmZmYyZDggbGVnYWN5LXRydW5rCisyMzA0IDE4NzBkODJkZTA2OTlhZmJhODlhMTk0NjZiMmY5YzM2NTFiNGNjOWEgbGVnYWN5LXRydW5rCisyMzA1IGM3MGVlZmU0ODAyOTBhMWQ4MGQ5ODdhMmZmNTk5YTBlYWNiZWI5OTAgbGVnYWN5LXRydW5rCisyMzA2IDg1M2I3MzZhNmE5ZWUzOGUzMzAxZDQzMGMxNTJhZTc1OGUxNjFhNDAgbGVnYWN5LXRydW5rCisyMzA3IDBmNTk4OTkzZDk5ODZmNGFlNGU2ZGQ5YTM0OTFkNTA5YjMwOThlODMgbGVnYWN5LXRydW5rCisyMzA4IDM0OTlhZDg3ODM5YWY3YTFhNGY3MWMxNWY4OWQyMGFiODRjNzhlNzEgbGVnYWN5LXRydW5rCisyMzA5IGEwYzVmMmFmMmUwY2FkNWM0ZDRkZTRhODkzY2E1YTVmZTdjZTdkNDEgbGVnYWN5LXRydW5rCisyMzEwIDYxYzUyNjBjMzY0ZjI2MGU0YzljOWM1OWQ3ZjlkMmE3ZDQ0MzZhMWMgbGVnYWN5LXRydW5rCisyMzExIGM2NWViYTgxOTRjN2I0MDNiOWU3MmVhYWM0NTBlMmRhZGFmMjAzNzcgbGVnYWN5LXRydW5rCisyMzEyIDlkNGM3ZGUwZGVmNGZlNjdlZjVhZDU4MjQ0Yzc2OTliNTE4OGJhMWQgbGVnYWN5LXRydW5rCisyMzEzIDFkNDA5NGM3ZDU4YjhjNzMwZjAzNGIxYjMxMzY1MTg1NjI5ZGE1NjMgbGVnYWN5LXRydW5rCisyMzE0IGU1NzY0YTBkMmQzMjk5ZGE2NjE0ZWVmMTkyMmM3ZjQxNzc2NjVmY2UgbGVnYWN5LXRydW5rCisyMzE1IGYyZWZjZWFmNzNjYzlkOTk5YjhkZjUzYmZmN2NkMjE4YTJlNjMyNDMgbGVnYWN5LXRydW5rCisyMzE2IDg5NmM4MjVmMmY3MWJkZDJhYzBkZjEyYjVjNmZmMTc5ZTA2Y2RhMjUgbGVnYWN5LXRydW5rCisyMzE3IDQzY2FiYWM1MDIzZDJhYzI3ZjVjOWEzYzgzNWYxYWM2NjhjNDM2ODMgbGVnYWN5LXRydW5rCisyMzE4IDQ3Y2MwY2U3OTk5Yzc4N2Y2ZTk0YmQzYTAzZTE5YzA5MDIyMjQ4ZmUgbGVnYWN5LXRydW5rCisyMzE5IGM4NjU5ZjhhNWY2Mzc4NGM1YWZlNDAwZGMxN2I1ZmMxOTJkMDAxOTUgbGVnYWN5LXRydW5rCisyMzIwIDQxZjNjNjZiMTBmZDBhNjVjYWJjNDhiZmExYzZhZWIzMjBkNDEzNTUgbGVnYWN5LXRydW5rCisyMzIxIGFmYTQ4YTk2YTQ0NDNjYjU4NTcxMzg3OTllMWQwOWM1ZGM0YmFkNjggbGVnYWN5LXRydW5rCisyMzIyIDI1YTdmYjQ0ZTI5Nzg0NDk4MTIzNTRjYjA3YTJiODYyYWYzMmNlZTIgbGVnYWN5LXRydW5rCisyMzIzIDc2MTg2OTc2NmU0NTI4ZTY4ZjFkMTE0NjA2ZWJjOTFlZWM4YTRlZmEgbGVnYWN5LXRydW5rCisyMzI0IGVmOWI0YmU1YTNmZWExMDI5YjMxYjUxNTQyNDY5ZGUwYjI2OGRmMGIgbGVnYWN5LXRydW5rCisyMzI1IDdjZTkxY2ZiN2FjNDUxMmQ0OTA3NzNkODE3NDkzNzVhOGJjMzI5ODIgbGVnYWN5LXRydW5rCisyMzI2IGE0NTQ3YWYyOTY3MTFiYWE3NDM3NzIyOTJjNzQxODRjOWQyNzg1YzkgbGVnYWN5LXRydW5rCisyMzI3IDI4OTIzZTQ0MjU0Y2ViNzY3ODk3ZjQ1ZGRlZGU1ZTIyOWVmNTRlZDMgbGVnYWN5LXRydW5rCisyMzI4IDNmYTJiMTRiZTI3MDkxMTkwNzlmN2E2YzYzMGU1YjEzNWQ1ZGU5MDUgbGVnYWN5LXRydW5rCisyMzI5IDY1ODVhYWJlMTk2OGJhNTYxOGYxOGVhMGM5ZGExYzk3ODhiMzQ4OWYgbGVnYWN5LXRydW5rCisyMzMwIDFlZDdmNmY2NTk4MzcxZWJkMjM1MGUxNjgxMDgxYjI2N2FjMzAxZTYgbGVnYWN5LXRydW5rCisyMzMxIGVlMGEzMmZkNDU2Nzg0OTVhYzAyMzNjYWFmNmVlY2QwYzg4NGU5OGIgbGVnYWN5LXRydW5rCisyMzMyIDBjZWUwMWI2OGQ5YzgyNGQzMzMyMmUzNjAyNGEwMmY0YTc1ZTdlMTAgbGVnYWN5LXRydW5rCisyMzMzIDVjZjNjMzZkMDJlYTRjYWIyMzFjMjk5N2VhYjI4ZmUyYzcyNmIxMWYgbGVnYWN5LXRydW5rCisyMzM0IDQ2NTY0NTI0MzZlMTljNDEyZTg4MDg4MzRlMzE4NWE5NjUwMDk1ZTQgbGVnYWN5LXRydW5rCisyMzM1IDIwZmVlNGUyZWVjZGM5NWVlMDBiMmVhM2NkMmIyZWU5NWI1ZTViNGQgbGVnYWN5LXRydW5rCisyMzM2IDA2Y2MzYjAwNjcxYzNlMjIxNTdlMjdlOGE3ZjZlODY4MmE3NmE4NDkgbGVnYWN5LXRydW5rCisyMzM3IDIyOTE2OGEyZmUyODZhOGIyNWQ4M2Q4MDU2M2Q3NWY0NjBhMjU5YTAgbGVnYWN5LXRydW5rCisyMzM4IGJkNDljYTZjNGFkZDI0M2M4OGEwOTQyYWJmNWYxM2NlZjEwZmMzZDEgbGVnYWN5LXRydW5rCisyMzM5IGZiNjM2N2Q1ZmY0NjQ5MDU0ZTg3Nzk3ZjQxMjIzNDg5MzA1OTEzYTQgbGVnYWN5LXRydW5rCisyMzQwIDBjMzU1ZTllZTg1NDU4YTFkMWFlZThiYWRlYWRiODJmNWFiYWRiNGYgbGVnYWN5LXRydW5rCisyMzQxIGE0MDVhMzEyNDJlN2M0YjRkMmVkMGU0NmJlNWY0ZjkwYTNkNzM4Y2EgbGVnYWN5LXRydW5rCisyMzQyIGE4MjM2MDJjMjI3NDFkNWFiOWM0NzhjNmY1YmQxOTE3YzIwNDE1ZWMgbGVnYWN5LXRydW5rCisyMzQzIDU5ZmZiNmQ0YjM0Yzc2NzNjYTc0YWZkYTgyYWVhNjNmZDRiY2VkNzQgbGVnYWN5LXRydW5rCisyMzQ0IGM5MTY4YWZlMjNkZGY2OWNkZjVmMDE2YzczMWVkM2M0Y2FiY2YwMTQgbGVnYWN5LXRydW5rCisyMzQ1IDFiMDhkZjQxNTg3Yjg1NWY0YzYyNWI5MjNiYmZmZDQ2Mjc1NGI1OTQgbGVnYWN5LXRydW5rCisyMzQ2IDMzNDY2MjY4YjYzNzFlYTVlOTNjOTMxZDBjZTMzNTQwZDVhZTJlOGQgbGVnYWN5LXRydW5rCisyMzQ3IDg5MTE1ZTc1MzRkNTgwZTBiOGQyNTgxYzhjMjRkMDA3OTFkYjFhOGQgbGVnYWN5LXRydW5rCisyMzQ4IGY0N2Q1ZTllYTI2NGVmOTNkMzVmZDliNDE5NDhjZDE0MmJhNzBkNDcgbGVnYWN5LXRydW5rCisyMzQ5IGQ4MTgxOGU2MjY3MWE2M2U1NTUzYzk5OGNjNjFiZGZiMzU5MTM0NmEgbGVnYWN5LXRydW5rCisyMzUwIGZmMGRhZTFmNGRiNjI1YmYxMzFiZWI3YjZjZjczZjEzYWU1N2M1ZmEgbGVnYWN5LXRydW5rCisyMzUxIGI1MGZhNmQ1ODc4NmRkYmQ0NzNkZWNkOTVlNjA1Yjg5ZTA0YmM0OGMgbGVnYWN5LXRydW5rCisyMzUyIDVmZmQzNzFiNzg0MWRlNjUwYzJiZmFjMTI3ZjA0MGI5ZmI3ODJhOTcgbGVnYWN5LXRydW5rCisyMzUzIDMyYWU0YTFhYWI2ODlhZWY4ZWUwOTBjNGMxODkxNmRhNzhlMjJmZGIgbGVnYWN5LXRydW5rCisyMzU0IDU3ZjNmZmM3YjFjNDA1NDI1MTk5ZWI3ZmMyZDgzNGQzODU3ODJlM2QgbGVnYWN5LXRydW5rCisyMzU1IDE0NWY5ZTE0NTk1ZjRiYzYyYjFlNzQyMDdjNmQ1OTYzNmE3ZTk3ZTEgbGVnYWN5LXRydW5rCisyMzU2IDQ1ZjQzZjc1NWU1YzUzYmI0ZmVjYzg1OGE3NTU0MjNkODJlNThmODkgbGVnYWN5LXRydW5rCisyMzU3IDQ4ZmMwYjhmMzNkOTA5YjQ0M2ZkODBiODMzZWE1ZmI0YzU1M2VhNTAgbGVnYWN5LXRydW5rCisyMzU4IDQyM2JlODc2ZGNjZTYyMjU3MGM1NzkzMTk5NDk2NjgxMmQxMTQ4MzEgbGVnYWN5LXRydW5rCisyMzU5IDY0NjMxNmM5OTUwNzg4OGNlOTIyNmZlN2U2Nzk3ZmU3NjhmZTUzZjAgbGVnYWN5LXRydW5rCisyMzYwIDBhM2UzM2NmZDRhOTMzM2U5ZDA2ZDQ3NDYzYWVkZmJhMDY3NDBlOWEgbGVnYWN5LXRydW5rCisyMzYxIDlkMDE5NjVmNGY0OGFmZDU4ZTlmMmM5OGVjMzU1ZmRlNmI4NTY5Y2QgbGVnYWN5LXRydW5rCisyMzYyIDMxMGY4YzkyNDA3MzJlMGE3MzY0NzEzMzQ2NDM5YzZmNTFjMjk3ZWYgbGVnYWN5LXRydW5rCisyMzYzIGJmZmZjN2UwZmNjM2UxOTBhMTM1NTI4OGU4YWQ3MWFiMTNhNmM5OGYgbGVnYWN5LXRydW5rCisyMzY0IGNlYjM2ZWM2MTk4ZGYzOTljMTk5ZDdkMDE4ZWJkMTY0YmE2ZjY3ODcgbGVnYWN5LXRydW5rCisyMzY1IDNkN2RhNjE3NGUyZTU4NTNmYzUyZWNjOGRmYjVhODkwZDU1NDdkYzIgbGVnYWN5LXRydW5rCisyMzY2IDhmZmRhODQ2ZDc4ODlmZDk3M2NhOTAwNTI0ZTRjOTE3MTMxMzVhZWMgbGVnYWN5LXRydW5rCisyMzY3IDNjYzU0OTcyYWI1MjMwNmFmNTk5MjdkNWJhMDcwMjJiYjY1ZDA0YTUgbGVnYWN5LXRydW5rCisyMzY4IDlhYjMyOTY5N2RkYTU0NzUwOTg4ODUyNDUzMGUwMjgwYzU0MjAwZmYgbGVnYWN5LXRydW5rCisyMzY5IGYzNTJlYTRkZmY3MDhiMWE3MmE5NWM0NWVkOTlhODQ4OTE4NmZhMTEgbGVnYWN5LXRydW5rCisyMzcwIGU0ODZjODQ5YzUwYzI1NmViYzZmMDkwM2E5NjllYTAzNmQ0Mzg5YzQgbGVnYWN5LXRydW5rCisyMzcxIDkxYTJmNDc0NTg1MjE4NDQwNWY2MmUxM2RjOWU5MmM1MDdkYzhlOTYgbGVnYWN5LXRydW5rCisyMzcyIDgzZjBhNzI0YTg3YzAxNjMwYTM5NmJhNTZhM2FiYTliZGJhZWY0NmUgbGVnYWN5LXRydW5rCisyMzczIGE3OTNjOWU4ODBjN2Y5MzU5ZjA2MzM4MDdkN2Q2MmQ1YWMwNzI0MGYgbGVnYWN5LXRydW5rCisyMzc0IDY2YjU1NzY2YmE2NThhNTZiMWVjNDFkZTljMmIxNjJiOGE4YjFiMTYgbGVnYWN5LXRydW5rCisyMzc1IGVkMDMxMWI4ZTc0MTkxODA3OWM3ZjUyNmFjZjI4MTc3NzYxNmI1NWUgbGVnYWN5LXRydW5rCisyMzc2IGY2MWU3MzY4ZGVmMmU5ZTVmNTU4Njg3YzlhYzE1ZmEzNGYwMGQxZjIgbGVnYWN5LXRydW5rCisyMzc3IDE3NTRiODAyNGI1NWQwYzM3ZmZlNmMxYWYzZWIwMWIzNzFkNmFlZGEgbGVnYWN5LXRydW5rCisyMzc4IDE5NTg3MjNiZmUwMjRkNmViNGE0YjBjNjZmMjljNThkMmIyNmFiYWYgbGVnYWN5LXRydW5rCisyMzc5IDM0MjljOTQ1ZDgxN2RiZDFlYzQxNWFjOTUzNmQyZDIxNGFiYTgyNTggbGVnYWN5LXRydW5rCisyMzgwIGExMDk3Y2QwMzM0OGVlODFiNjFjMDYwNDhjY2JhNmQ5YzI1OGNiNmMgbGVnYWN5LXRydW5rCisyMzgxIDFlZmY2MTExNTgyZTQ4ZTAwOTA2ODhmNDc1ZDE2ZGJkZDhmMjI3ZGQgbGVnYWN5LXRydW5rCisyMzgyIGVkZGE5YWFkM2U4ZjE3ZTJkOGZiY2MzMjdmMTdmYjZjMGVmYzc2N2IgbGVnYWN5LXRydW5rCisyMzgzIDI4OThkNzhmYTMyZGU3ZTA2YjBkYzFiNGUyYmE4YjMzODhkNTZkNWQgbGVnYWN5LXRydW5rCisyMzg0IDY2OTNjNWQ4N2YzYTA0OWQ5MDgwYWU2YzkwNGVkOWEyMzQ2OTEzYjAgbGVnYWN5LXRydW5rCisyMzg1IGU3MWI2ZmVjODZlNTk4ZmQzMDI2ZjdlZDYzMDhmYTM3MzBlNmE1ZWUgbGVnYWN5LXRydW5rCisyMzg2IDc4MTllMTYxNTMyMGI0MjA2MjMyZWRjMzdlYjg2MmJjNmY4NzNiNjIgbGVnYWN5LXRydW5rCisyMzg3IDdlODMxMTVlZGI2YWU2ZDMyNjRlYzMzYzg5NDMyYjNlZGEyZjAwMDEgbGVnYWN5LXRydW5rCisyMzg4IDdlYzYwNThiNTM5YjdlZDlmYTBjZjZiZTM3ZWRjZDE2ZmMxNjg2OGIgbGVnYWN5LXRydW5rCisyMzg5IDYzNGMxZDNjN2QzOTIzZjA0Y2E1MzRhYThmZjA3NDM5OTI5NjExYzggbGVnYWN5LXRydW5rCisyMzkwIDA4NTk3ZTJiNjNkM2Y5NDNjZmRlNmQyNzQzNDQ2NzVjNzI3YzNlMDQgbGVnYWN5LXRydW5rCisyMzkxIDdiYTk2MTIwNThhNDY5YjM0OTM5ZjQ4ODA3YmQ2ZTJjMjRlZTBmNjIgbGVnYWN5LXRydW5rCisyMzkyIGIzMWFiZjQyMGU2MWE3YTBhNWFhYjRhNzEyOWJhYTE1OGM5ZWVmMDQgbGVnYWN5LXRydW5rCisyMzkzIGFmMmU2NDAwNzY5ODE3YjM4ZWZiN2VkNTA1YWNhNmM4MWM1ODg5ZGMgbGVnYWN5LXRydW5rCisyMzk0IDhmNjJhNTQ1NzMxOWUyNjdmNDRiNmJlNTFlZjNiZTFkODBhOGVmM2YgbGVnYWN5LXRydW5rCisyMzk1IDkxNGM4M2NmYTVlMTA1Yzc5MTI0N2MzYThkZmJkMDgxNmNmNDQ5OTcgbGVnYWN5LXRydW5rCisyMzk2IDk3NzAxMTJlNjYwYTkwM2Y1ZWFjNjU3OGE4ZDU1ODgxNGY3NDhiMjIgbGVnYWN5LXRydW5rCisyMzk3IDBhOTJiNmExYjljMGFiZTg3N2I2MWE0ZTNiNDU4ZTFmZWI3YjY4YWUgbGVnYWN5LXRydW5rCisyMzk4IDE2ZjQ2NzcxN2Q3YWI3MDM1YTExNWFhOWQ1MTJlYjU5YzcwZjliY2MgbGVnYWN5LXRydW5rCisyMzk5IGZkODE2ZWQxN2UzNWYxNzEwZThiOTZiM2NjOWZiN2UwOTFkNTVlMTkgbGVnYWN5LXRydW5rCisyNDAwIGZkYTk3M2YyYTUxMmI5YTU2MjU3NTVjZTcwMWY2M2FlYjdkZWQyYjcgbGVnYWN5LXRydW5rCisyNDAxIDBhYWQzYTdiOTdlZjM1MjkxMzE3MTFmYzgxYWJkMzc3OTRhZmJlNTIgbGVnYWN5LXRydW5rCisyNDAyIDQxZTA1Nzg3MGE1MzU0ZWY1YjUyOTU2Yjg5ODkyZjQ0YTNiZjdkNzUgbGVnYWN5LXRydW5rCisyNDAzIDMxNmEwZDljMDA5NjllZDA2NmIwMjVjMDU0ZmRiMGQxYzQ0ZDY4ZDQgbGVnYWN5LXRydW5rCisyNDA0IDVmN2MyNGIzOTUzYmU3NDQzZWQ2ZjFlMzc5YjMwYjUzYmJkMGFlNzcgbGVnYWN5LXRydW5rCisyNDA1IDQ3ZWI4MWRhNDZkYzIxNjc3ZjE4YmMxZjUzYmFlZjIwZjQ0YmY1ODcgbGVnYWN5LXRydW5rCisyNDA2IDQzMTMzZDg4NWM0Y2M5NjMyMTE2OTllZDI4Yzk2NzkwM2UxNjdhM2YgbGVnYWN5LXRydW5rCisyNDA3IDk1NmZkNWMzZjA0MDc4MDE3ZGJiMjVmYjcwYjJhZDFhOGVhMWIyOGIgbGVnYWN5LXRydW5rCisyNDA4IDM1OWJmMTA5ZGEwZjdjNjEwMmMwZGRlOTBhNTk5ZTgxODhlYjFmNGQgbGVnYWN5LXRydW5rCisyNDA5IDllYjEzYzY3YWU2ZmY2YmVhOTJmODI2Y2U3YWYxMzVhYzBhZWI5YmIgbGVnYWN5LXRydW5rCisyNDEwIGJhYjFmNTQ5NGI4ZWRkY2RkMWU3OWQ3MTc5NGM0ZjNlMDgzYzMyNjggbGVnYWN5LXRydW5rCisyNDExIGI5OTg2MDA5ZDdkYzRiN2MyODkwNTRhODlhNjg2Y2RhMmZhNmVkNzcgbGVnYWN5LXRydW5rCisyNDEyIDQ4ZDU4Yjc0YTNhNDdhYmNjNjE2YmNiNjM1OGIwOGQ0MjUyMjU5YTMgbGVnYWN5LXRydW5rCisyNDEzIDY4MTE5MTJmNjcyZDg5NDMzOTEzMmI2YjhmYzg2ZGNkNTkwY2EzNzMgbGVnYWN5LXRydW5rCisyNDE0IGQ0ZTUzMmVlNmYzZDE4N2MwN2VkNTdkNDQ3NTliNDA0MGVjY2MyMzcgbGVnYWN5LXRydW5rCisyNDE1IDcxYjBiZDVlZDE2MjA1YjIxZDQzNmE2Y2JmZDQ4MTJmMTZjOWY5YWQgbGVnYWN5LXRydW5rCisyNDE2IDg2MDRmOTAyOWNkYTNkNzE3YmVjNjQxMjY2ZWM3MDRjOGYzNjllMjAgbGVnYWN5LXRydW5rCisyNDE3IDNlYWIyY2Y1ZTRkZDUxY2ZjYzQ0OWRmNmU0YzA5OGRmOWIwY2Y3ZDQgbGVnYWN5LXRydW5rCisyNDE4IGE0NjU1OGFkMGJlZGE5NThhYzVjMTcwMTE1NmU0NjkxOGMwYzcxZDQgbGVnYWN5LXRydW5rCisyNDE5IDNiOTNiY2VhMTBmNmRmODY5MTgzODM1ZTg0Y2ZmNWJmYzU4Nzc4NGEgbGVnYWN5LXRydW5rCisyNDIwIDYzMjFkM2RjNTdlMGMxODkwYTZmNjIyYzUxZDM5ZjQwYWZhY2E2NGQgbGVnYWN5LXRydW5rCisyNDIxIDI2YjJlZWQ3ODM4MTQ4ODA3NDEzMzBkMGQ2YzJkMWI4YmUxMTRlMDQgbGVnYWN5LXRydW5rCisyNDIyIGY0YTk0NGU5ODM1ZmE5MzJmMTQyNjg1YTdlMjQ0ZjZkMjk5NDcxMTQgbGVnYWN5LXRydW5rCisyNDIzIDZhY2Q0MWE0NWQ4ZGE4YmIwZjNhNTZmYmRlMGY4YzY2ODI2ZDAzZDkgbGVnYWN5LXRydW5rCisyNDI0IDI4ZjBmZmQ5ZmFjZmI5OWFjNTk1OGM3OGUwODNjZTIyNjYzODA5MTcgbGVnYWN5LXRydW5rCisyNDI1IDcyZDFiODliZTM1YWUyMmJiNmFlYTUzYTM3ZDM4NDQ4NDYzM2NmNDggbGVnYWN5LXRydW5rCisyNDI2IDE4N2JhMTczM2IxNzgxYjRiZjVkOTdhNGQ0ZmIzMzQyNTU1MGQ4OTAgbGVnYWN5LXRydW5rCisyNDI3IGI1ODI2YmYyOTY3NzZlYTBmNDNhOTUyMTA0ZDExNDk4ZmYyNGFkNmUgbGVnYWN5LXRydW5rCisyNDI4IDQ1NzY2MWU0N2M3YmE5YjZkZDkyNjUzZjdiNDdkN2FjZmE5NDIzYTUgbGVnYWN5LXRydW5rCisyNDI5IDBmZTI0NzExNjZmMDUzYmY3ZjZiMWIwMTMzZDM5ZDhjMjZlZmIyM2YgbGVnYWN5LXRydW5rCisyNDMwIDc0NWE0NjYxMTk1N2Q2YjI0NTQ3Njc4ZGUzYTFlZTBmNTIzZWNlNjUgbGVnYWN5LXRydW5rCisyNDMxIGFkZWQyMDhhZGY2YzYyODVhODNlOGU0M2JjNTkyOWVkMDRlNDJjM2MgbGVnYWN5LXRydW5rCisyNDMyIDBiZjAyZTFiN2Y1MWRlNmM2NTBkMTg5ODU2NTJmZWRiY2EwZTlhMTAgbGVnYWN5LXRydW5rCisyNDMzIGYwODU3Y2U3ZWQ0ZmFlNDA5ODVlMmRkMGQyMTYzNzZmZmZmMzA3YzYgbGVnYWN5LXRydW5rCisyNDM0IGFmMWM4ZjVkMGIzN2Y5MzFiZDE3NjFiODkzZDc3Y2YzYTk1ZTA1NjkgbGVnYWN5LXRydW5rCisyNDM1IDEyYTY0MTE1YTRlZWJkYTRiOGNjZjkzZjMyMjE2YjIyNzA3ODRhOTYgbGVnYWN5LXRydW5rCisyNDM2IDgwMDAxYzAyM2IyYjI2ZmFjOThjMjk0MGYzMWE0NmNmMmY1NGJlOTggbGVnYWN5LXRydW5rCisyNDM3IDEwNzhjZDI3M2I0MDQxYjc5ZjEyZmI0MTlmODU3NDliN2RmOWJmYmIgbGVnYWN5LXRydW5rCisyNDM4IDUzYzhkNzYyZjNhODNlMjAzYTVlYTAxMjEzZDExNWM1NTNkM2ZiNDAgbGVnYWN5LXRydW5rCisyNDM5IGFmOWE4NjM2ZTRhODc3ODc0NzE0MTA5MzQxNTIzMTQ3MmI3ZjljNGUgbGVnYWN5LXRydW5rCisyNDQwIDljOTI0ZjljM2IxNjk0MzI4N2FhNTZiYmQ5ZWZjZjMzNmExNjU0NmQgbGVnYWN5LXRydW5rCisyNDQxIDcwMmExMzlmYTI0YjQ5YTg0YTUzMDEyMjlmMzBjMGUwOTBhMjExYWYgbGVnYWN5LXRydW5rCisyNDQyIDZkZmM5MjYzMDEyMzQ3MGEwNDQ3Y2ZhZDdiYWU3OWQ5MDAyNjQyMTIgbGVnYWN5LXRydW5rCisyNDQzIGQ1YzlhZTQyMmI0MTAzNjZkNWQzMDE3NzRiNjJkNzc1OTZiYmI1OTUgbGVnYWN5LXRydW5rCisyNDQ0IGVkMDE2MjU1ODkyOTMzYTlkZTJlMWNjYmRkNjMzZTdmNDJlZTMxMTIgbGVnYWN5LXRydW5rCisyNDQ1IDZhYzQwMjAyM2NhYzVlYTlmMzc1ZjQyMjVkNTFlNGQxZjM5NjZiZDggbGVnYWN5LXRydW5rCisyNDQ2IDg1YmQ3ZGFjMTNmM2FlYzhmY2YyNDFhODQ0YTY0NzQ0MmQ2ODUzNjUgbGVnYWN5LXRydW5rCisyNDQ3IDM5MDVkYTZjNGE4YmYxNDU3YWJiMGZkZGNlMThkMmVhMDM5NGM2ZWYgbGVnYWN5LXRydW5rCisyNDQ4IDA3ZWZkYTI5NTFhODdmMWY5MDIyMDViMGJkOGUzMTkwYjM5YjdkMDYgbGVnYWN5LXRydW5rCisyNDQ5IDliNDNhOTgzMTI0YzEyYzY2MjhkMjM0MzMzZDgxNzcyNTNiNjllNGUgbGVnYWN5LXRydW5rCisyNDUwIGM0YzI3OGM1NmU5MDAwNTMxM2IyNTFjNTlhYmFlODMxNzMwMjg2YjcgbGVnYWN5LXRydW5rCisyNDUxIDY2MzdlZWUxYzRmODQyMmQ3NjNkY2U4NDhiMzFhYzgwZTI5NTdjMTUgbGVnYWN5LXRydW5rCisyNDUyIDA2Nzc0YTk0YWJiNWJkNzM2NjFmMzE2MTExMThlMTIwYmUzNWY2MTMgbGVnYWN5LXRydW5rCisyNDUzIDYzMDg1ZjdiM2RiNWFkMmJjYWI2NTA1MzFjMjdjOGVhODIyYWM0YzMgbGVnYWN5LXRydW5rCisyNDU0IGY5MDBiNjkyYjM3ZTQ3MDE4ZDU1ZGIzZDk3YWVmNGNjNmQzYjBjYzcgbGVnYWN5LXRydW5rCisyNDU1IDg5MzhiMzEzMmNhYTkwMzhhMDZiZjY4NWI4MzI4YWNmM2EyMmVkNWIgbGVnYWN5LXRydW5rCisyNDU2IGQ3YTM4ZGVjZTg2YTgxODJhNGVkMzI0NDUzMTNiYjNlMzk0MDVjMmIgbGVnYWN5LXRydW5rCisyNDU3IDdhMzVkOTg1NzYzYjIxZjk1OWUyZDE2YzhhZWNiZWJiNWVjZDU1NWMgbGVnYWN5LXRydW5rCisyNDU4IGFiY2NiMGY5ZjczNTliYzI5YjZiZGRiMjljZGNkMDJiMzdmMWViNzAgbGVnYWN5LXRydW5rCisyNDU5IDdmODc1NmZkNjQyMjBlM2QxMDY2NTEyNWQ2ZWYyZTI5YjhhNTBlNTggbGVnYWN5LXRydW5rCisyNDYwIGY3MDkwZjU4MTRjMjI3NjE5ODkxN2ZkODY1YmU2NzE1NTM1NGY4YzggbGVnYWN5LXRydW5rCisyNDYxIDA5ZmI3OWU3YmFmN2FlN2UxMGVhZGQxMjE4YTQ0OThhNjkxZDBhNjYgbGVnYWN5LXRydW5rCisyNDYyIGMyOGZhYmUyMTE2NTQ0NTg3OTg3ZDNjNjBmMTQzMDZjN2I5OTcyYWIgbGVnYWN5LXRydW5rCisyNDYzIGQxOWE2NjU5MDRkZjU3OTQ4MzdjNTE2NDg3OTdlOGNhYmVhZWJjMzIgbGVnYWN5LXRydW5rCisyNDY0IDE0OWRkMTIxZDBhNmI0ZWI0MDM0MGNhOWYwMDQwMTJjN2YzYTdkZmIgbGVnYWN5LXRydW5rCisyNDY1IDMyMDFiNzU2OTVlZjI4ODNlZmQ0ODY0ZjQ3YTBmM2FjNTI3YTg2ZGIgbGVnYWN5LXRydW5rCisyNDY2IDZiOTNkNGNlOGRjYjk4YmY1OGEyZDhlOTBiOTM3MTNlMTY5OWEwZGUgbGVnYWN5LXRydW5rCisyNDY3IGM4YTk3OTAyOWRmNDFkOGFjMTIzYjIzZTUxMzgwYjcxY2E0MjUyMDAgbGVnYWN5LXRydW5rCisyNDY4IDM1YTI1MjhmOGE3M2Q4NmZkMzhlOWJiYTAzYzE3Y2FjYjNlMDdhMzQgbGVnYWN5LXRydW5rCisyNDY5IGFiY2Q5MTU5MzAzNTc3ZmJlZmJmNDY0ZTMxNjUwYWMwZmVhNDIzMTUgbGVnYWN5LXRydW5rCisyNDcwIDM4MjMyM2Y5MmZjZTVmZDA0ZWM1MDYxODNmMDJmODQxZmEwZmRlNDggbGVnYWN5LXRydW5rCisyNDcxIDcyYTAyNjg0MjBkMDY3NGUyYThkMGRkNjU3YTY0NmVkNzA0YThmNDEgbGVnYWN5LXRydW5rCisyNDcyIDYwNWUxNzJiYmI1NTc0NjQyODc4MjNlNGU3ZDQ2ZjM4N2ZlMjBhZjEgbGVnYWN5LXRydW5rCisyNDczIGFlODk0MTFmNmZjMGUwNjQ4NmExMDEyMDM5YmVjZjU5ZTVjNTc5NWUgbGVnYWN5LXRydW5rCisyNDc0IGI4ZTQyMTNmNjVhNmU1NGRiNGUzMmU5NDBjNTE5ZTZjYWU2MTY3MzQgbGVnYWN5LXRydW5rCisyNDc1IGU4Mzg1MmQxYTVlMjNkNmQzOGQ4NmE5MGQ3NzM5ZTQ1YWYyYWMyZmIgbGVnYWN5LXRydW5rCisyNDc2IGFlZjdlMGE5MTE5ZTVkMzdlZTgyMjI2YTQ0NTJiMjI4ZmM3MGEyMGYgbGVnYWN5LXRydW5rCisyNDc3IGE5ZDQ2N2U4NDYzMTk0Y2Q1NmMxYjZmODM3ODAwMTZmNzBlZTEwZDkgbGVnYWN5LXRydW5rCisyNDc4IDMyNWI0MGQ3NzIzNTU2Mjk1NGQ3MWZlMWY1OWY5MWI3OGJmNjY3MDMgbGVnYWN5LXRydW5rCisyNDc5IDEyZmRmYTAxMGU0MWViOTU1ZmQ1YzdlZTRhMjc2ZTZmZGRkYTQ2OGQgbGVnYWN5LXRydW5rCisyNDgwIGExNzc1Y2M3ODZlNmFkOWQxMjU0YTJiMGExYjAwY2NlNGE1ZTc3NTAgbGVnYWN5LXRydW5rCisyNDgxIDI2NDI2YzQyYTE2MmE0NDlmZTAyODcwNjU2NTdmNWE2OTIzOGUwNGUgbGVnYWN5LXRydW5rCisyNDgyIDJhODRiMTZmOTFiMDk4ODMxYmE3NTNiM2UzMTNkNWY4NjVhMjlkMDAgbGVnYWN5LXRydW5rCisyNDgzIDFhNmNmMWY4Y2NlY2EwNGJkYzJlYTcwY2QyM2RiZGI1ZDg2MTU1ODEgbGVnYWN5LXRydW5rCisyNDg0IDcxNGMyMzkwZTVjYjQ1ZTZjODMzNGZjNDFjY2U5ZTJkNmMxMjQ0ODYgbGVnYWN5LXRydW5rCisyNDg1IGE4MTAyMGQ1MDViZjllOGI2YzllMGY3ODI5ZWMxMWExZWViMzMzMDggbGVnYWN5LXRydW5rCisyNDg2IGJhYWRhMjA3NjJiMDgxODVkMDEwZTM2YzY2ODE4MzI4M2QzY2VjMGMgbGVnYWN5LXRydW5rCisyNDg3IGZmMDg2MmUzZDYzYTk2Nzc4ZGUyODBjOTY4NzVhZmYxNDYyNzk3ZWUgbGVnYWN5LXRydW5rCisyNDg4IDRiNTllNjNhMjdiNTdjMzE3MmVkZDBlOTVjOTYzMTM1Zjk4OWFjZTggbGVnYWN5LXRydW5rCisyNDg5IDQ4YmJjOGFkODAxNmE1YjU0NzQxNmVlMWJmY2ZiZDA1Y2QyZjA5ZjYgbGVnYWN5LXRydW5rCisyNDkwIGYyMWNiN2I1M2Y2Y2Y4YWM1NzQ5NTlmMmVlMjVlMjhjNGY1ZmFmYWYgbGVnYWN5LXRydW5rCisyNDkxIDE4MDdkNjBlNjIzMWY3YmFiODQyYThiNzE4NTBhMDYyOWQ2NTY2MDEgbGVnYWN5LXRydW5rCisyNDkyIDIxYzI2NmY3ZWNhMWQ5NjdhYmY4M2NjNWZjNDAzMDI5ZThmOWMwZWUgbGVnYWN5LXRydW5rCisyNDkzIGJlMzA1MmE3N2I3ZmQ0Njg5NTRhMDc0ODUzMTdhZGUzZDk4M2I0MGUgbGVnYWN5LXRydW5rCisyNDk0IDEzN2E1ZTA2ZmM4NGNlNTVjYjQzMGU4OTc1ZDY5YjA3OTVlNGM3NWUgbGVnYWN5LXRydW5rCisyNDk1IDQ0OWY1ZTVkOWFmNjJmMjNlZTUwOTUyNzU0ZjNmZDkxZWRlN2Q0ZjMgbGVnYWN5LXRydW5rCisyNDk2IDE3YTI5NzYwZDA2MmIwMTNjZGNiNGJlNTc2MDczMmE3YzFjMWM3MWIgbGVnYWN5LXRydW5rCisyNDk3IDY0MTg5YmE3ZTIzYmNhYzMwYmIwZGJhYzE3ZTQxZDRlMDcwOGIzODMgbGVnYWN5LXRydW5rCisyNDk4IDQyNjZhZWY1MGMyYjRjZmIxYzJmMTEyNTU3YjZkYjA0MmRiY2E3ZjAgbGVnYWN5LXRydW5rCisyNDk5IDc5NGNmZDQ1NWRjNmY2MjZiY2RjNWM4NDExNjQwYzllZjI1MWNiMmIgbGVnYWN5LXRydW5rCisyNTAwIDA4ZGMzN2E0ZGQzMjNhMjI1NWIwNDg2ODVlOTU5NjI3MDRjYmZjNjYgbGVnYWN5LXRydW5rCisyNTAxIGUzOTQxZWZkNzMxMDVjMTIxOGFhMTFjMzk0NDRlMDU4MDg2NDgwZjYgbGVnYWN5LXRydW5rCisyNTAyIDkwNDE4ZmQ0MzdkYmQzNjc1MDgzNTQxMWU2YzFhMWEyZDVmNGIzYjggbGVnYWN5LXRydW5rCisyNTAzIGYzNzk1YWMxNDZjZWZlZjBiNmE1NWIxMzEzMWY3N2Y5YzZjYTk3YjUgbGVnYWN5LXRydW5rCisyNTA0IDM2YWNlOTA4Mjg5YmE3OWQ5N2I3MDYwZTg1ZjA1ZGJlOWZkYmUzNDIgbGVnYWN5LXRydW5rCisyNTA1IDc1YjJmZDE2M2ZkNzE1YTEwMDMzYTYwODM3NjY3MzcwYjY1MDE1YzggbGVnYWN5LXRydW5rCisyNTA2IDJlMGVhNmQ1YzZjZWZhN2FjZGNlNTFhYzUzOTE1OTU3ZDNmNjdmYjcgbGVnYWN5LXRydW5rCisyNTA3IDQ4MTdhZTQwYTRlMjFkYzA4ZDdkNmE1NGE1Mzc1ZDk2ZWFjNWVlNDkgbGVnYWN5LXRydW5rCisyNTA4IGRhYWJlMjMyMDYyZTA0YzYzZWRiNTRhYjUxNzcyYzQ0Y2RlNTJjOGQgbGVnYWN5LXRydW5rCisyNTA5IGEyOTVkOWEzZmU4OTIzM2MyZjU1M2M3YjNkZGVlMWIyNzJkZDdmNjAgbGVnYWN5LXRydW5rCisyNTEwIDZlNWNiZDljZDVmOTUxODdjY2JjZTUwZjcxNWI2NjYxZDBkYTE0NzUgbGVnYWN5LXRydW5rCisyNTExIDNkZmFhMDkzZDk2ZTkxOGMzZTBlODViYTk1MGNiMzRkYjVjZjgwNTkgbGVnYWN5LXRydW5rCisyNTEyIGEzNTk1YWU0ZGMxZTc4M2ZhNDk5OTk0ZGRhY2M5OTNiNjNlNzQ5MzMgbGVnYWN5LXRydW5rCisyNTEzIGQ5MzI1OWNkMzc5ZDY2NmVmZDEyMzRkNTlhMGViMGQxMzc0Y2MwODYgbGVnYWN5LXRydW5rCisyNTE0IDFjMmNmMmJkYjZjOGEwZTU1YzJkZjA1MWIyMjE2YjUxZGUzMTA1MzAgbGVnYWN5LXRydW5rCisyNTE1IDYwZGE3ZWU5MTAwZTY0OWI0MDI1MDRjNDIyZjdjNTg5ODAwYzRiNTkgbGVnYWN5LXRydW5rCisyNTE2IDhhOTRjY2M0YzkxNDAwYjJlNDYyMjNlOWFjMTc4MDZmMWQ4ZTFhZDMgbGVnYWN5LXRydW5rCisyNTE3IGFiMDVlZmVkMDNlOTBmZjYxY2I2Mjg2OWM0MjI4YWZkN2EzODFjYTcgbGVnYWN5LXRydW5rCisyNTE4IDIzNTg3YmVhMTFiYjFhOGY2NzZmNDk4N2NkMGYxMzkwZmNiZmExNmMgbGVnYWN5LXRydW5rCisyNTE5IGE2N2FiNWQ1ODE0NjNjMWZkZjUwOTUxYTA3MGQ2Y2NhOTYwNTIzMjIgbGVnYWN5LXRydW5rCisyNTIwIDA2OTZmMTk4NzUzZjk0OGU4YTYxNGQxOWYzMDFhZDY0OGI5NjgyYzggbGVnYWN5LXRydW5rCisyNTIxIDNiMzNhYzQ0ZTM2ZTNjNjVjZTcyNjlkYzg5YzllZmEyZmQ5MWE5YmQgbGVnYWN5LXRydW5rCisyNTIyIGM4NTg0YTFiYTM4YTk0NzQ0ZTYxMWU0YTEyZTEzNjZkMGM2OTQ4ZmUgbGVnYWN5LXRydW5rCisyNTIzIGIyOTY5NmU1YzRkOTgyZDk1OWEyMmZlYWNhMDQ1N2U1YTA0N2ZhZTAgbGVnYWN5LXRydW5rCisyNTI0IGQ3MDc1NGE5NjMxMGQ2Mjg4MWE4OTliNjU2M2FhYjMyZTU4ZDU1MDggbGVnYWN5LXRydW5rCisyNTI1IDBiZjgyNWY1NWFjMTUyMDBiNjAyMWY4YWEzYjQwZDFmNGNiMmE5ODkgbGVnYWN5LXRydW5rCisyNTI2IDRlMzA3M2JiMGUzZTAzOTdiZGU5NzUzZTg4MzIyMTNjMDljYTA5MDAgbGVnYWN5LXRydW5rCisyNTI3IGNmYmFjNmZmNzNhZjNjYTQzNDlmZTM5MGVkNWEwZTBiZDBlYThjMjYgbGVnYWN5LXRydW5rCisyNTI4IGE3ZDM3MGY5M2Y3NTI2ZjM0MzNiNmIzNGFiNTRmMjIxNTE4NWNkY2IgbGVnYWN5LXRydW5rCisyNTI5IDA5MjdiZGI4MTZhMDQzYmNiNGExMWYxNDgwMGVkMTc5ZDg2MzY0ZDIgbGVnYWN5LXRydW5rCisyNTMwIDQ2YTY1NjEyM2E2OTY1NTYwYmYyMzIyMzgwNjkzMmQ1MzdjMzM2MmQgbGVnYWN5LXRydW5rCisyNTMxIDUwOWJiNzRhYzMyNDEyOWQzMjM1MzIxYzlhYTVkZTczOTk4ZmIxZTcgbGVnYWN5LXRydW5rCisyNTMyIDM5NzI5MDBlMWI2MWIyNzJkNWY0NmJmZjIwMmZmNGJhZDU0NzdjZTcgbGVnYWN5LXRydW5rCisyNTMzIDE2YjE4ZjU4NmZlY2M0MWQxNTQ0NGJkNDI5MTQ2M2NiOWE2NzRmNzMgbGVnYWN5LXRydW5rCisyNTM0IDMwNWUxNTBiYWE1MzhlNWU3ZGRjMGY1MWNlMzZkNDc2MDkyYmY1NWMgbGVnYWN5LXRydW5rCisyNTM1IDcwYTE4YTY2ODlkNGQ5Y2QwZGUzN2FjMmM2ZDQ3Yzg1YjYyM2M3ZjEgbGVnYWN5LXRydW5rCisyNTM2IDg2ODI4Y2MxYzY0NjhkM2FiMGYwODIyNGEyNzI2YzZkYzkxMzk1ZDEgbGVnYWN5LXRydW5rCisyNTM3IDU2NDU5NDJiN2FlMDU1YzU2YmQxZDYzZjMwOWFlNTAzMjZhZGM0YjggbGVnYWN5LXRydW5rCisyNTM4IDdhYTRjZDYyMWY1OTI2NGYyZjlkMzAxNzE0MDMzYjc3ZTY3MWNhOWYgbGVnYWN5LXRydW5rCisyNTM5IDczMDc1N2NjYjhhMzY5ODRmODE4YTExODg2NTg5YzkxYTkzN2NiM2EgbGVnYWN5LXRydW5rCisyNTQwIDczZWZlM2VhNGYxYjhhZjdjMmZiYmU4NWUzZTg5YmY4MTU5ZjcyMzQgbGVnYWN5LXRydW5rCisyNTQxIGRkYWI1MDI4NWM0NzllYWY4NGNmN2Q2YjAwNmNiNmU3MGE2MDdhODcgbGVnYWN5LXRydW5rCisyNTQyIDRhOTY4MjNmOWI2ODQ5NjAwYzU4OGZmMzg3NzVmODY4MmY5NjI3MDMgbGVnYWN5LXRydW5rCisyNTQzIDRkZmYyM2U3Y2YxMTQxN2I1MGQ3ZGE3ZDcxMWQ4NDdmM2I4MDUwNjMgbGVnYWN5LXRydW5rCisyNTQ0IGJhM2MxZjk1ZTY2NWUzNTU2N2NiYjE3ODFkZjYzMGZjNzM2ZjRmMjkgbGVnYWN5LXRydW5rCisyNTQ1IGEzZDRkNDYxZDQ0MjFmYWViMzRhY2EyOGZjNjY0Mzc2MGE5NDFkZTUgbGVnYWN5LXRydW5rCisyNTQ2IDAzOWFlZTZjYmQ3ODZhYmY1MTJjY2JhMjA5MGJmNDkwNzU5ODExYTMgbGVnYWN5LXRydW5rCisyNTQ3IDA1OThmNGYyNWQwNDRkNjJhYjNlNzIzY2M2MzIwNjE2OWJiNTdhMzYgbGVnYWN5LXRydW5rCisyNTQ4IGYwMWFlZTYxNTViM2EyZmYyYTNkZjk5M2FlMTI1NzYwZDc4MmE4YzIgbGVnYWN5LXRydW5rCisyNTQ5IDMxZDUwOWU5NDI3MTA1OWYxMmQ2M2M3MTMxYzBkNTgwMjZkODc5NGUgbGVnYWN5LXRydW5rCisyNTUwIDU1YmY2NjQ0NWM4NWM4MGYyMjdhYzQ5YzMxYTNlODhmOWY4MDVlOTcgbGVnYWN5LXRydW5rCisyNTUxIDE3MmFhMmMzZTczNDBjMWU3NDM5ZjNiN2UxYmEwZjNmMGNjYTZmMDYgbGVnYWN5LXRydW5rCisyNTUyIGNhZjg0NjZkY2M5YzM1NzdjMWViNjE5MTQ2N2ZlOTRmMTViMjQyNTcgbGVnYWN5LXRydW5rCisyNTUzIGYzM2EzZjY5ZGZjYjU5YmQxOTg2NDBhNjI0Nzg5ZTYyMTdiMTYzMzEgbGVnYWN5LXRydW5rCisyNTU0IDU5NjA5YjNhZjk3OGEzOTcwMTZjZDM1YmFlYTJkMTVlNThjM2ZhZmEgbGVnYWN5LXRydW5rCisyNTU1IDgxNTQzODUyNDhkODE3NTdkZTkxMTg5N2IyN2Q4YjNmMWZhMGRiMzAgbGVnYWN5LXRydW5rCisyNTU2IDY1OWI4ZGJmNjk1YzUxMWE5OTU1ZTljNzdkNDJjNWZmYTk5ODlmYzcgbGVnYWN5LXRydW5rCisyNTU3IGMyNjJmNDIxYTQ0YzUxYzRmYTg5NzU0MGQ0Mzk1NGUxODExYTk5MzcgbGVnYWN5LXRydW5rCisyNTU4IDRjZGNjMTZiZDA4MDBmZWMwYjI4MTRlOGMwMDlkZmRjMGQ1ZjIwMjMgbGVnYWN5LXRydW5rCisyNTU5IDBhYzEzNTdjZDg5ODllM2IzNjU0MjI4ZTE2Njc3YmRhMTY2MmEzOTkgbGVnYWN5LXRydW5rCisyNTYwIDFlNGU2ZGYwNzE4ZTAzODM2YTViYjY5M2VjZjM4MDVjNDJjMDcyNDQgbGVnYWN5LXRydW5rCisyNTYxIGQxODlhMmY2ODFhNmRmMzc1OWEwYTQwMjZiZDY1ZWQ3NDEzMjIwYTAgbGVnYWN5LXRydW5rCisyNTYyIDBjNWU0ZTEzN2RlNmUwZjM2OGFiNDg5ZTY0NDYxZWY4YjA0MmNiZjAgbGVnYWN5LXRydW5rCisyNTYzIDliZDI2ODBkMTZiYzM2MTcwZjBmMmM5MDNmMWZiODc2NTQxMDc3MDcgbGVnYWN5LXRydW5rCisyNTY0IGQ3ODMyYWY2YWJhNjM0ZTVlMzNhZGI0ODE1ZWQ5MDdmOWIyODgwY2UgbGVnYWN5LXRydW5rCisyNTY1IDljZDM4ZDFhYzM5MTlmMzZjMGEyNjNmY2FlNDg3ZjNmMDQxMmFlOWMgbGVnYWN5LXRydW5rCisyNTY2IGQzZDMyODY4MDMyOGRlN2Y4NjJjMTEyM2I2MjNlOGM0Yzc3NWQzNjcgbGVnYWN5LXRydW5rCisyNTY3IGU2MjhkMDljZTIyZmViZGRiYzVmZWZhYTIyMzI2MjAyNjY0ZWE3MWMgbGVnYWN5LXRydW5rCisyNTY4IDliM2Q1NTc2NjVhOTE4MDI1NWI2ZjU3NzNlMDkyNWY2ZmE4MDIyNDcgbGVnYWN5LXRydW5rCisyNTY5IDk1MjEzM2U4OWJjNzI1ZWJmYTQ5ZjM4MTYwOTYzZTA1YTIyYzc0ZjQgbGVnYWN5LXRydW5rCisyNTcwIGI1ZmU2NDgyMDcyZmVmYTRjYjQzYjcyYjEyY2ZmNWUyZjZkM2U2MjQgbGVnYWN5LXRydW5rCisyNTcxIGZkMDYxZGFlOWU1NzBkOGZhODAzOGNlY2U3MGJhY2VmNWUxZmY2N2IgbGVnYWN5LXRydW5rCisyNTcyIDBmMzUzYWZjMjg3MGQ2ODQ0NzcyOWRhMDc0MmQ0NDExYzViYmVkMjcgbGVnYWN5LXRydW5rCisyNTczIDRlZjMxZjVkM2Q5MjdiNGI3MmJmMTMxMDFmMzg2NGVhZjYzMjI2OTEgbGVnYWN5LXRydW5rCisyNTc0IDJhZmYzN2I5ZTIwZWNhMDk3ZDhjOWFjOTBmYzZjYmZkNDQzMGM2OGYgbGVnYWN5LXRydW5rCisyNTc1IDRjNDViY2JlM2JiM2JiZjcxMmYyYWViOTUzYjQ1ZTQ1ZDNmMzk4ZmYgbGVnYWN5LXRydW5rCisyNTc2IDRmMTU3YjMyNGM1MDViMDYyY2Y1MmEyOTZhNGFmNGQyYTk0MzU2Y2IgbGVnYWN5LXRydW5rCisyNTc3IDJiMDM0YzkwYjZkOWE2NzhkZGM0Nzk5MzljNDFhMTE4ZmM2MGFjNWUgbGVnYWN5LXRydW5rCisyNTc4IDE2M2UyOTA2MGYwYmYzMmYxMTliN2QxMjEyOGUxNzQxOTlkNDE0OGMgbGVnYWN5LXRydW5rCisyNTc5IDcwMzIzY2JhM2MxMzY5ZGEyNGMwMzA5ZmQwNmMzM2Y5OTM1MjNkNzkgbGVnYWN5LXRydW5rCisyNTgwIDVhOWFhMmFiYTA4ZTk2ZDAwMGU4YzNmZmQ4MWE0M2Y5YzAwNTkxODUgbGVnYWN5LXRydW5rCisyNTgxIDM5NDMwMTM0MDY5MzM3MmJiOGMwZmUzOTI3MDcwYjIxMzAwMTQyYWUgbGVnYWN5LXRydW5rCisyNTgyIDU1ZWU3NWYyZmVhNGFjZGFkNjRlZTM2ZTJjNGNmZWFlYjViYmIzNWQgbGVnYWN5LXRydW5rCisyNTgzIGVhNWNmMDliYmYzNmI0NjdjYjc4ZjdjYjM3NjQ3MjJlMDUwYjQ1YWMgbGVnYWN5LXRydW5rCisyNTg0IGM4ZDBhNGE0MWYwYmE3Y2U4MmZkN2JjZTc1OWFmMTE4M2M0YzFiODIgbGVnYWN5LXRydW5rCisyNTg1IDJkY2VjYTlhMDcxMzkzM2MzNjFlNDFjNmIzZDIwZWFjYzVjNDQ5NzUgbGVnYWN5LXRydW5rCisyNTg2IGQxZWUwZmIwYzBkZjU2NWEyNDA1NTEzN2UzZWM2NjBmM2RjMDczYzIgbGVnYWN5LXRydW5rCisyNTg3IDYxYmJjNzIzMGM3MTY2ZTU2NWVkMGFiZmEzNTUzMGVmZTM0NGMyZGYgbGVnYWN5LXRydW5rCisyNTg4IGEzYTg0MmIzOTkxMzJlYzgwZWRlNTg5NDJmZjE5YjRiNzFhN2FhYzQgbGVnYWN5LXRydW5rCisyNTg5IDNjN2I3Y2FhOWRhNTY2YWFjZTYxMGQxMWVmZmRmZTg3YTQxOTA5NzkgbGVnYWN5LXRydW5rCisyNTkwIGJiMzA4ZTdiMDAzOTRmYmM5YzdlNDQ1NWFlY2U0Y2E1MDEzOTgzOGQgbGVnYWN5LXRydW5rCisyNTkxIDBmOWViYzYzZGNiNTYzODlhZjFiMWJmZDcxM2ViMTBiOTk3NmRjYjAgbGVnYWN5LXRydW5rCisyNTkyIDA4YjFhODljOGYwNjM1MzRjNzkzOTc1NzQxNDM3OTQxZTczYWZlNTIgbGVnYWN5LXRydW5rCisyNTkzIDc5NDBiYjM5MWE2YWNiMmY5ZjVlMDM2ZTFmMGU1MmQ3ZTk0ZGY3YWQgbGVnYWN5LXRydW5rCisyNTk0IDhiZWRkYzE3MDM5NjY4YjM0ODA2OTViYjNjOGQyYjk1YmY1NGY3MzUgbGVnYWN5LXRydW5rCisyNTk1IDQ4N2I3YzYyYWU3NzRhMzg1MTMzZGIwMTE1NmQyNzE3YjU2ZGUwNTUgbGVnYWN5LXRydW5rCisyNTk2IDJkZTM0Yjk2MDJlMGVmNjVlNDhkMTRlMzllZDYwZjE3NTUyODQwNTYgbGVnYWN5LXRydW5rCisyNTk3IDFlNmM4ZjJhYTEzNmRhYTI3NTQ3NjEzOTNlMGM5MjIzZDBmZmZhZTUgbGVnYWN5LXRydW5rCisyNTk4IDQwMmE1OWFkMjQ5M2YwYjk3ZjMyYzZmZWIxODlhNTVlZTFhNWEzMzIgbGVnYWN5LXRydW5rCisyNTk5IDY0YmM4YTI4NGZiM2ZjZmQzNmExOGJjZDJmZTZiNTI3MGY0ZGYxZjMgbGVnYWN5LXRydW5rCisyNjAwIGMxMmQwMzNmNjU5NGU2NjQ5ZmZjMjRiODFlMDdlMGJhMDE2OTk3YjkgbGVnYWN5LXRydW5rCisyNjAxIGUyZGIzMzQxZDY4NjBlZTY3NmI1YmQ4MjY4NTBjZTYyNjQ3YmRlZTMgbGVnYWN5LXRydW5rCisyNjAyIDYwMGJmYTlmYjhiNzZlNWE5YTQ3NTAyMWJkZmYzNzAzYTUyNDM5M2QgbGVnYWN5LXRydW5rCisyNjAzIDE3ZjRjZGYyODk1OWY2MGEyNDQ5NGVmNmYxZTQxMDVmYjQ5ODA5MGEgbGVnYWN5LXRydW5rCisyNjA0IDlmODViZWIxZjdjODQ5ZmUwMTY5NzJkODgwYzhhMGJhMjNjYmZjMWMgbGVnYWN5LXRydW5rCisyNjA1IDFmNjRmNTVhNTJlODY1YWE3YWE5NjdiOTE5ZmE0MGJhNzc0ZTQyYzggbGVnYWN5LXRydW5rCisyNjA2IGMwNjgzZDY2NzZjNjZiYzU0YmE5NmVmYzAxOTc5OThmOGYwMzdkZGMgbGVnYWN5LXRydW5rCisyNjA3IGMzMDdkMTBiNjgwYzZhMzk4Y2ExNTZmN2MwY2Q0MDZjMjJlMmVhMWYgbGVnYWN5LXRydW5rCisyNjA4IDhmNjM4OWRiYzFjZjdiNGZhNzE4Mjc5OTAzNGFjYzhjOGZmMDhjODggbGVnYWN5LXRydW5rCisyNjA5IDMyNmI4OWVhNjcxMzhiYWM0NTMxYzU5ODA2MjJmODVlOTIyYmY3NTQgbGVnYWN5LXRydW5rCisyNjEwIGE0ZmVhNjkxMjBkODE0NzczMWIyNjk0OTIxMTBlNzZmYTUwZjIyMzkgbGVnYWN5LXRydW5rCisyNjExIDIzNDk3ZGI2Njg3YWExZGFjZTE5NmRjNjE2NDJkMDMxZDg3YWM5ZDMgbGVnYWN5LXRydW5rCisyNjEyIGIyZGNlMDFjMzY2ZTZhZTU0NTYxYTdhOGU4NjUyNmQ3MTY0Njg3M2EgbGVnYWN5LXRydW5rCisyNjEzIGFlMWE1NTVlNjVmYWM2NDY1NmJjMDJlYTVkZGFhY2JiMzcwZTA0NmMgbGVnYWN5LXRydW5rCisyNjE0IDM0YWJjYTE4MmYxOGUxYjYxNjllYWUwODJjMzFhMzI4MWU4ODFhNDUgbGVnYWN5LXRydW5rCisyNjE1IGE1ZjBiODM5MGM4Nzk2ODFkYmIyODQ5NGNiZGViOGNlMWZiZDhmODggbGVnYWN5LXRydW5rCisyNjE2IDQ2NGQ5ZDkzZjM0ZTkxYTIyOGZmNjVkYWY0NDBkOWVhOGNjYzcyODQgbGVnYWN5LXRydW5rCisyNjE3IDkyNzE4ZTRmNWFkYzFiMjg0Yzc2OGVkZTJlYWM3MGJkODRlMmI0ZTAgbGVnYWN5LXRydW5rCisyNjE4IGU4NjY3YTdkMzE4ZGRlZTA4NWQ4ZTI0ZThkNzA2ZTQ2YThhYmEzMzEgbGVnYWN5LXRydW5rCisyNjE5IDFmZDQ3MTJjYzY2ZjdiNmFjNTk4MDQ1YzgwMDVmMDU5MTc4NjU0NDEgbGVnYWN5LXRydW5rCisyNjIwIDA3MzZhZWZhZmM2MDE4YzE2NGZmODBkOGUzYzI4NGI4Yjk1MTY1NWUgbGVnYWN5LXRydW5rCisyNjIxIDdhNjBmYWEzODExMzUxYmEwYjQ2ZGE5MGU2ZTkzOTQ3MTg2NmNiMmQgbGVnYWN5LXRydW5rCisyNjIyIDc2OWNmZmY0YWU1ZTk1MDQxYWMzOTY0NjZjMDVkMTFkZTYzMjU5ZTYgbGVnYWN5LXRydW5rCisyNjIzIDY3OGE3MzRjMjQ0ZGM5MGNkODMxNWVlM2I3NDIzYzBiZjRiYzM0NjggbGVnYWN5LXRydW5rCisyNjI0IGM5N2Y0YzZiYTZjNjVlY2M2M2YzMzViZjcwYWNmNDEyNjE3MmFkMjcgbGVnYWN5LXRydW5rCisyNjI1IDkwMzAwY2EyMTIwMDU5MjA2NmJhNzhlMjdlOTQxYjJhYzY3MzJhM2MgbGVnYWN5LXRydW5rCisyNjI2IGNhMDM5MWE4MTJmODYzNTg5Mjk1NDhjNzVhYmFjOWYyMDdiOGU1NmYgbGVnYWN5LXRydW5rCisyNjI3IDkwY2JjYjBiOTdkYzdkNDk4NDQzNTI0YzUyMmI5MTE5M2NlOTUwZDMgbGVnYWN5LXRydW5rCisyNjI4IDFjYjc4YjYyNWIwNzIzY2I0OTU1MmRkNmFjNzgwOWNlNWE0YmE0ZmEgbGVnYWN5LXRydW5rCisyNjI5IDEwZTNkMjYwNDEzMTA5YTlhYmQzN2ViNDU3NmUwZTUyZjI1MmRkMmMgbGVnYWN5LXRydW5rCisyNjMwIDQyMTMwZTcyMjBhZmZiOTRkMGMzM2Y4ZmU2NzdkNzgyZTgwMmNiY2MgbGVnYWN5LXRydW5rCisyNjMxIGExMDI1Y2JiYTMwZGFkMTdmOTk1NzQxYWE4ZDViNDUyODhkOWNkZDcgbGVnYWN5LXRydW5rCisyNjMyIDFiZTIwODc2OTJhMjQ0NDY0MzQ3MzEzOTJlMzQwZWE2MmJmYzg2M2QgbGVnYWN5LXRydW5rCisyNjMzIDFkNGIwMzM5YjgzZGE4ZTNiY2EwNDRlZTIyNmRmNTJkZDQxYzlmN2EgbGVnYWN5LXRydW5rCisyNjM0IDRhN2YwZjA2Y2QyN2M0YjI5Zjc2NjYzZjA2NzM4N2IyYjM2MWY3ZjAgbGVnYWN5LXRydW5rCisyNjM1IDE5MzY1MjAxZGNmYTg1YWVhZTNkOTQwNTk2NGViYmRmODI5NjgwYWEgbGVnYWN5LXRydW5rCisyNjM2IGUyYzM0NjNjNGQ5MTg0MzAzOGZhNjBhYjc3MmJmMzcwZmYzY2I0MDQgbGVnYWN5LXRydW5rCisyNjM3IGJlYzk2M2Y5OWJjOWY1OTFhZDFjMmUwOWVlNjI0NTJlZWE5YjlhYTAgbGVnYWN5LXRydW5rCisyNjM4IDQzNmM4MTAzMDg1MzM4NjczM2Y2YjIxYTNkYzQ5N2I5YmZkOTRmMmYgbGVnYWN5LXRydW5rCisyNjM5IGMzYmVlNWE1NzIxZjdlY2Q3ZGFiZDk2ZDg4ZGY1NGY4YTBjMDI1NDYgbGVnYWN5LXRydW5rCisyNjQwIDMyNDk2YTBkMDFmNDg4YTY1ZTc1OGVlZjQ1YzNlNWIzMDJlZGIyNTAgbGVnYWN5LXRydW5rCisyNjQxIGM2NGM2NzAyNTQ5ZDZiYTJjZGI5OTA4OTVmNGZmZmNjNzVmZmY0MDMgbGVnYWN5LXRydW5rCisyNjQyIGRjMDQ2MzQ1M2E2NDM3MWJhYTAzODFiNTNjMmZiMzhhOGQ2NjFjZjkgbGVnYWN5LXRydW5rCisyNjQzIGVlODk5YTgxNTcwZDA1MDRjYTgwYWExZGQ4MmRkMzQzNWNkZWQ3MDQgbGVnYWN5LXRydW5rCisyNjQ0IGNmYmM0Y2NlMWE0Mjc3NjI5OGY2ZDYwMmY0NTc3OTFkODM5OGY1ZDkgbGVnYWN5LXRydW5rCisyNjQ1IGRiODIwZGEzY2UwM2VkNjcxZjZhY2MyNDk0MjAyNDU4YzM2Zjc0MGMgbGVnYWN5LXRydW5rCisyNjQ2IDNiMzg1YmRhMzhmODkxNThhN2YwZTAyYTE5NDllNTU4MWE5NDk5MTUgbGVnYWN5LXRydW5rCisyNjQ3IGM3YTJmNTYxM2Q2NjQ2OTE5NmJhODA3ZDNiODQyMjExMmM5NGU0NWIgbGVnYWN5LXRydW5rCisyNjQ4IDc3YjgwYTkxZDM1N2MxZDk1ZDhlN2NkNGNiYmU3OTllNWRlYjc3N2UgbGVnYWN5LXRydW5rCisyNjQ5IDkwZjM1ZmNmOGVhMDFkNzA4MjlkYjU2ZWJkYWNkMmFkNDNmNzE0MDAgbGVnYWN5LXRydW5rCisyNjUwIGEwZmJjN2I2YTQ4NWY5OGM5MDcxZDI4Nzc5NGYxZDI0ZjFlNjNkZDcgbGVnYWN5LXRydW5rCisyNjUxIDAyM2M3ZjY5ZDI0MDAyYzg2MzkzN2I4NDNlNzdhNDNlNmI0ZjAyZDcgbGVnYWN5LXRydW5rCisyNjUyIGI5MjY1ODBjOWMyODQxODYzMTgyYTA4YzE0NzkwODI5ZDgxM2RkOTEgbGVnYWN5LXRydW5rCisyNjUzIDkyYTEwYTFlMTQ2MzAwN2MwMzU4Nzc4OTFkOWFhYTI2MDUyOWQzMzcgbGVnYWN5LXRydW5rCisyNjU0IDU3NjY3YWIxZTE5NDFkMDFlZWJjNGM2ZWJlNmQ3N2FlODhjZTEzZGQgbGVnYWN5LXRydW5rCisyNjU1IDRjMjExZTgyODZiNWM2MjgyZWE0NTI3ZDg1NWNiMmM2MjQ0MjQ5OWIgbGVnYWN5LXRydW5rCisyNjU2IDBhYzlkNWRiNDFjOGZmMWZlYmI1MTBiZDM0M2EwNTNiNGIzNDcxMGYgbGVnYWN5LXRydW5rCisyNjU3IDBhYzM5MmI3Zjc2ZWFiZWFkODg0MTcxN2ZlZDEzNTBhNTAzY2FjNDYgbGVnYWN5LXRydW5rCisyNjU4IDJjZTZhMmEzMTg4NjNkZWUzZWRiYWY5MDYzOWJhMzJjNjc1ZGM2NmIgbGVnYWN5LXRydW5rCisyNjU5IDU2YmIxMDY3YTg4MDZlZDJjOTEzZGU5NDZkNmY1YmQxYjlhODE4MjYgbGVnYWN5LXRydW5rCisyNjYwIDgwZTJlNWQ2N2I0OTY2NjUzMDlmMTE2NWVhMTRjODc5NGRhZGQ3YjMgbGVnYWN5LXRydW5rCisyNjYxIDdmM2ZhYWZkODNlZDM3Mjc1MjlkNzFkYTgzYzA0MGQ5NTY1NTdjN2MgbGVnYWN5LXRydW5rCisyNjYyIGRkYmNkNTMyYzExNGRmNzViZjczZTMwNzNkZWE0MTY1ODU1MmEzYzAgbGVnYWN5LXRydW5rCisyNjYzIDY3ZjZmNzE5NDNjMTYyMjlkYTc1YTM2NzY2NjNkNjA2Mjc3MDY4NmMgbGVnYWN5LXRydW5rCisyNjY0IGUxNGQ0NjQ0MGVhNzEzOTlmZmYxNmY3YzA1ZDFhYjc5NGY4YWNlNjMgbGVnYWN5LXRydW5rCisyNjY1IGViMDM5NzdiYWVlYjRjZjMyODdhZmM3YTI3NmE4ZTkyNTUyZjA0YmUgbGVnYWN5LXRydW5rCisyNjY2IDA5NWQ5Y2Y0ZTNlNmUyNGIxODBiMGNjNGZmZTFjMGM4NjkwODYyZmUgbGVnYWN5LXRydW5rCisyNjY3IDlmNzE2MWRiNTY2OWU5MWI1NjgzNzRmZDZiZDA0NDVmYTY1NDcxYjcgbGVnYWN5LXRydW5rCisyNjY4IGZiZmYyZTdjYzQ5ZGY4ODdiNDlmZDgzZTQ1NTFmNDM3OWU5ZGRkYTIgbGVnYWN5LXRydW5rCisyNjY5IDc5ZWExM2I3ZGYyYzE2Mjc1MGE0MjdhMGI0ZWM3M2FlMjI1ZWI3Y2UgbGVnYWN5LXRydW5rCisyNjcwIDViNWY4NmVlNGY3OWI3ZTU1MjFkNmU2MmQ3NjhiODA3MGEzMWFjYjUgbGVnYWN5LXRydW5rCisyNjcxIGNiY2RmZGEwNWJjNGUyMmFmNTZkZmRmMDFlY2E3ZDdiOGYzNmYzYTQgbGVnYWN5LXRydW5rCisyNjcyIDc2NmNjODIwZjUxMWUxMDE5YWI3YTA5OWE1NGJlZmY3YWY5ZjMyMDcgbGVnYWN5LXRydW5rCisyNjczIDg0MTRlMWY5YTVmZTRjY2IzNzNlMjVkMzE4M2FkZWJmOTIwODFjYTEgbGVnYWN5LXRydW5rCisyNjc0IDk4OTZkY2YwOGUxNmZhZTA5ZTYxYjU0NTIxY2ZiMmU0ODQ1N2I4ZmUgbGVnYWN5LXRydW5rCisyNjc1IGI0NmQ3NmViZDlhNzJlNTAzMmY0MTU3N2IyODY4ZTRiNzNkMDA0YzIgbGVnYWN5LXRydW5rCisyNjc2IGY4ZDUzYjZjZDQ0MmU4MDBlMjI5ZWQxZmY0NTkzMGQ5NzM3MDAxOWYgbGVnYWN5LXRydW5rCisyNjc3IDY5Zjg5NzM5OTM4ZjlhNjA4ZmRhZTY4MDU0NTRiNDAzY2QzNGZmOGEgbGVnYWN5LXRydW5rCisyNjc4IDQzYzIyMzE1OWIyODI3Njk3YzgwODlhZGUxYzY4ZGZlMDVjYWZhZjYgbGVnYWN5LXRydW5rCisyNjc5IGRmMDM0M2FjOGEyMWFiMTU4ZmE0YjEzOTk2NTM3ZWFjMDYwMjkxZGMgbGVnYWN5LXRydW5rCisyNjgwIDA0OGUxMzcxYzQ1MDZjMWUzZTIyNjBiOTYyMzVhNTk1ZDgwZjAwODQgbGVnYWN5LXRydW5rCisyNjgxIDAyZGU3YThhZTI2NzYxY2Y1YzY3ZGNkMjkyMWMwY2UyZjY2ZDRhMjIgbGVnYWN5LXRydW5rCisyNjgyIDJkY2RiMDAyM2MzMjBlZTUyZWU3MzM3YzY5OTIwNzBhNTlmOTU1YmMgbGVnYWN5LXRydW5rCisyNjgzIGJlODk4Y2MxNTgwMDZhMTg0NzgzOTUyNDNjMzVhZWI1NTNiMTBkNTQgbGVnYWN5LXRydW5rCisyNjg0IGQ5YjZiMDM2OTg2MGM0NWM0YWVlY2NjNzZjODkwNmIyOWIxNDI3YjYgbGVnYWN5LXRydW5rCisyNjg1IGIzODI1Y2U4M2M4N2YyNDI5ZGZmODQ1ZWM3NDM1ZjRhNzZlODdkMGEgbGVnYWN5LXRydW5rCisyNjg2IDc0MmRjODM4MDM4YmZjYWNhZDdiMDNmYzBhMDY1ZGIzMzYyMDJkZTUgbGVnYWN5LXRydW5rCisyNjg3IDJiMGFkNTJhYzM5Njg2Yzg5ODQ5OWUzMGY5OWVhMWZhMzU4Mjk2NzMgbGVnYWN5LXRydW5rCisyNjg4IDQzNTdhYjY4YzdkNWI2ZTljMGQ2YTE2Yjc4ZjViZjMxMGRhNmE4ZTEgbGVnYWN5LXRydW5rCisyNjg5IDNkNDY3MTA4YjAwODNjNGM1NmJkNWE0NzQ3YmFlYTcwMzIxMjViZTUgbGVnYWN5LXRydW5rCisyNjkwIDFlZmRiMTUyMjFkZGQxZTk2MzU3MGZiNzFmMjgxOGJlMGM0YjY4MDkgbGVnYWN5LXRydW5rCisyNjkxIGRjMmVjNDlhMmFkMjliNmQ5NjMwMTNkZTUyYTFhODM1ZTBmYzcxZjMgbGVnYWN5LXRydW5rCisyNjkyIDgzMzEwNzZjZmUxNTJkZmNiOWQxNjY5ZjkyOWQ0NzkxZDViOTM2MzggbGVnYWN5LXRydW5rCisyNjkzIGZlZTM1MDc4ZWY0MGEzZDViNTRmZTA4YjMzNDk5NzI1MzMwZWVmOTggbGVnYWN5LXRydW5rCisyNjk0IDhiNGEyNzRlNTQ2ZGNjYThjYTgwYmMxNjE5MTIxODQ2ZWI2MDllZTggbGVnYWN5LXRydW5rCisyNjk1IDk2YjIxMjhmMDBhZWRjMjRhMjQ0YTZlYWUyMDFhZWU0ODg3ODI0MTIgbGVnYWN5LXRydW5rCisyNjk2IDI2OTZiNTZkZGFjNDk1MmZjZDM4MDJkMWUxODI0MzNkZWYxYTYzNWEgbGVnYWN5LXRydW5rCisyNjk3IDI1NTcyOGE4NDFkZWYxYjVlOTI4ZTBlZDYxZDY0Y2NhNDg2MTczNjMgbGVnYWN5LXRydW5rCisyNjk4IDkwMTk4NDg4MjRhMTBkNmUxZTE4ZWE4YmI2NzY4NTEwODJjYjU5NjMgbGVnYWN5LXRydW5rCisyNjk5IDlkMDI0MmI5MmNhNWZiMDc3Y2VkY2MwMGYxNjEwYWVkZWY5Y2MwMjUgbGVnYWN5LXRydW5rCisyNzAwIGVhNTE0Njg2NmJjZjE3OTc0NTQyN2VkM2ZhOWI5OWJiNzAwZGY2ZjQgbGVnYWN5LXRydW5rCisyNzAxIDQ4ZWFmNGZjNTNjYjBkODAxMzI2MjFhMzg2MTVjNjFhZWFmMGVlZTEgbGVnYWN5LXRydW5rCisyNzAyIDVmNTkwYWI0NTI5NTc3NmIzYzg0N2ViMjc2NGJlNDc2MTlmZDY5NDUgbGVnYWN5LXRydW5rCisyNzAzIGI1ODYxODljYzFmNWU2OTlkYjM3N2Q0MGE1MGM0ZDJkNzY5NDQ1MTQgbGVnYWN5LXRydW5rCisyNzA0IGQ1ZTFjNDk5ZjAxMzdkZjI0OTE3MzE3ZjFlYjYxODhjMDNkYTczMTggbGVnYWN5LXRydW5rCisyNzA1IGQwYmFhODMwMDAwNTYyNDJlZjIyNWQ4YjEwNGYxNmE2MjYyMTJhYjUgbGVnYWN5LXRydW5rCisyNzA2IDlmMDZjNjY4OWYwZDEwYTQzNzI1YTQ1YjU1MDMxYzk2YWJhYWViYzQgbGVnYWN5LXRydW5rCisyNzA3IDkzN2NiYzBiZTZlY2VkYjVjMGI5MjdiYTUwMzg0YjAwYzk1ZTVhODQgbGVnYWN5LXRydW5rCisyNzA4IGUxOThjYzk4YTRmZDBlN2UyZjMzOWE0MmU3NDdlZDIwMmRjODcxZDYgbGVnYWN5LXRydW5rCisyNzA5IDgzMDQ2NjY0MTYwZTk5MDkyZDMzMjY1ZDgxYjZiODYzOGJlYmQ0YTMgbGVnYWN5LXRydW5rCisyNzEwIDRlZmZmNmNlYTkwZjY5OWQ3ZjY1MTBhMjk4OGUwYjZiMDVlZGQ2MTkgbGVnYWN5LXRydW5rCisyNzExIDc2NmNlYzUwZDc2NmQzZjdiNTVkNTI2ZmJkMjgyZWZmZTZkNGUyMmIgbGVnYWN5LXRydW5rCisyNzEyIDVhNjFmODI3ZjQ3YzNhMzliNGFlYWM1MzkwMTYzOTMxYWE4ZDRmODYgbGVnYWN5LXRydW5rCisyNzEzIGMxNThjODM0NzY1NDY1YjczNzM1YzM3NGVhMjRlYTQ2YjMxYjQ5MmYgbGVnYWN5LXRydW5rCisyNzE0IDI2NDMwNmI2MWI4M2ZlZmNmMDM0Y2Q0MTFlYTczNmRiYWQxMGUwNjkgbGVnYWN5LXRydW5rCisyNzE1IDJlMjg3YTE1MDNiMjUyNjQ2ZjRkODBjZjliNmM3M2NkNWQ2ZTkwMjQgbGVnYWN5LXRydW5rCisyNzE2IDA3ODBiOTVhNjYwZWM4MjA5OGYzYTg1NGUyNjJiYWNhOGFiNTkxZTYgbGVnYWN5LXRydW5rCisyNzE3IGFkZmEwODJmNTIwYTYxNjZmNmQzNWY3MzAxYzU3MDE4ODE0YTc2MDIgbGVnYWN5LXRydW5rCisyNzE4IDFlZjYzYWRmNGZjNWJhNjg1NjQ3NDMxMmUzMmUwYzFjMGVhZTYyYmEgbGVnYWN5LXRydW5rCisyNzE5IGNmYjUzMzIyYzlkMTE0MzJkYTUyZTNmZjE5NjE5NjVkYjg0YmQ0M2IgbGVnYWN5LXRydW5rCisyNzIwIDY4M2VkYjBjNDQ2MzQ5Mjk4MzlmNjNhNWNkYzM4ODdiMzViNTkwOWEgbGVnYWN5LXRydW5rCisyNzIxIDA2MTRkODg3ZDEwYWJkMDJiZTE0ZDg5MTU5ZDlhNGQzZTI5Nzk2YmYgbGVnYWN5LXRydW5rCisyNzIyIDQ0MzQzOTNiNGVkZTY1NjY4NjU4YjQ2YTZiNWU1ZTIzNGY4MWYzMjQgbGVnYWN5LXRydW5rCisyNzIzIDE3MDY4YTZhMGFhNTE3YjZkMDNhZWU3OTc1NjRhZThhNTU1MGFlZTEgbGVnYWN5LXRydW5rCisyNzI0IDczZTI2NmJmN2FjNmIwM2I5NzJiM2IzMDZjNjdjY2ZmYWU0MGY1ZjMgbGVnYWN5LXRydW5rCisyNzI1IGY5YzA3ZWU3OTMwMjJmNjVjMmJjYmNiNTdjNzIxMWQzMmE2MjA4ZTUgbGVnYWN5LXRydW5rCisyNzI2IDVmYWY5M2ViOTI1NmUzMzYzNDNjYTJkMmY2OWIyNGU0MjU4ZmQ0YjIgbGVnYWN5LXRydW5rCisyNzI3IDVhMWY5YWRlMTUxMjQzMjBhMDM0OTIwYjNjNTExMDdhYWNhMTgxOWQgbGVnYWN5LXRydW5rCisyNzI4IDhjMTc5ZDAyMzU4M2NkODYxZDcxMWZmMzEzNjk0ZjFkMWY1NzY5YjcgbGVnYWN5LXRydW5rCisyNzI5IDkyNTA5ZDMwNGU0NzljNjBhN2FiNDM1NWVkZjhlZGVhNWM3ZDhhZGIgbGVnYWN5LXRydW5rCisyNzMwIDZjMzZjMjczZDU3ZDRkOWUwMjIxYmRjZGJlZDIyODMyNTQ1ZTBmZDAgbGVnYWN5LXRydW5rCisyNzMxIDM0YTc2MTA0NmRiZDY5ZjY5ZGQzNzUxZjU5ZDE4MWViMTEwMjZhMWMgbGVnYWN5LXRydW5rCisyNzMyIGE1YzI0NTkyM2IzMTBkNTY4YTBhZmVmYTBlNGY2NmMzMTEyOTUzZmUgbGVnYWN5LXRydW5rCisyNzMzIDA4NmJkYmI2OTczYmYzNWI1YzRlZjk4M2UwYWFlMDk0ZDhjNDRiYTYgbGVnYWN5LXRydW5rCisyNzM0IDRjYjU1MzU2NzA2ZjNiZmIzZTE0ZWU1ZmYyMjgyOTVhNzZkZmU1NjIgbGVnYWN5LXRydW5rCisyNzM1IDAzYjlmMTUyYWRiNjk1MzI1YzU5MzExMWExMTgzMzY3ODNjN2YxODkgbGVnYWN5LXRydW5rCisyNzM2IGRlYWU4MGUwN2E4MWM5OGUyNWIyYzEzZjJjMmFmYjY4NTY1ZTgxNGYgbGVnYWN5LXRydW5rCisyNzM3IDNiOGY0MWY5NmViNGM5NTMzMzY3NDEwYWNmMzJjZDQwZjAyNjllMWEgbGVnYWN5LXRydW5rCisyNzM4IDJkYTkzNGVmMjdjMDM4MTNhYmQxYWZlMDgyOTFjZDg3ZDE0ZGFmN2EgbGVnYWN5LXRydW5rCisyNzM5IDEyZWNlYTZlOTU1YzEyYjEzM2Y5NGUzNmY0MGEyNDI1ODM1YTAwYzQgbGVnYWN5LXRydW5rCisyNzQwIDY4ODQzNDZjMDRhMDQ4YjMwZjNjNTMzNjViY2I3YzRkOGFjMTczMmYgbGVnYWN5LXRydW5rCisyNzQxIDMxNjlkMzhmNjc3NDJiOTgxNjA2MmM5YWQ5NGI2OTU5ZDhjOGNlZWIgbGVnYWN5LXRydW5rCisyNzQyIGJhZTE0OTRmMmVjODEwMjMwY2I1NzQ1MmIwNjAzNDhjYmVmNDIxYTcgbGVnYWN5LXRydW5rCisyNzQzIDVmNzFmMTY2MDc5ZDQwMWRmY2NmNWI0Y2I1MTM3NzYyNjZiNjgyZmMgbGVnYWN5LXRydW5rCisyNzQ0IGM3MmYyNmFjNDkxYmE4ZDgyMjhlYjhmNmY1N2I4MTZkMzVmN2YxOWUgbGVnYWN5LXRydW5rCisyNzQ1IDM3YWE2N2YwODY3YzEwZjQ2MzdjN2UwMGY0NGNlYjM0ZjJhYWE0Y2MgbGVnYWN5LXRydW5rCisyNzQ2IDM3OTA1ZmUxODkyYTI3ZGQ4YjdjNDM1ZjQ0NDQ0N2Y0M2EwMmM0MzUgbGVnYWN5LXRydW5rCisyNzQ3IGRiZjQwODkxODIwMTYxZWI1ZTQ3ZDA1YmRlOWJmZjYzNmJkMDk0MGYgbGVnYWN5LXRydW5rCisyNzQ4IGQxNTQ3ZDZiYjViNWNmNjExZjhmNzczMjVlMjk0MGMyMjJjZGJkYTAgbGVnYWN5LXRydW5rCisyNzQ5IDdkMjRkZTY0M2ZiNTBjYWFiM2QyNDA1OTk1MmVhYzJiNzYzNmUxZjUgbGVnYWN5LXRydW5rCisyNzUwIDYwNzc3MDRkYWI3YTNmNzliNzE2NGU0ZDE4MTJiNjU0Y2RkYTMxYTggbGVnYWN5LXRydW5rCisyNzUxIGYxMWZhZThlZTFlNDI5ZDgzNmJmMjc5NDQzN2JhYzMyMWM1MTFlMGEgbGVnYWN5LXRydW5rCisyNzUyIDkyNzZiM2VlMzkzNjdjNjFkMjFiZDE0MmNkOTdiZGQyZmRiYjczZjkgbGVnYWN5LXRydW5rCisyNzUzIDk1NzJhN2QwOWRmZjQ2MmViZWFkNDljMTA0MjMxYTNhNGVlYzMyZDIgbGVnYWN5LXRydW5rCisyNzU0IDA4NjgxNzYzNjVkN2ZhYzE4ZDllNmU0NDc3OGIzOTQ4ZTcwNDc1ZDEgbGVnYWN5LXRydW5rCisyNzU1IDQ3YzQyZWE2N2E4YmQ4NTMxNDRkOTlkMGJhOGNlNzYxYzU2M2U2NzMgbGVnYWN5LXRydW5rCisyNzU2IGY5Y2RlZWJmY2I2NzBjMzA2ODg1NTg3OWY0OTcwOTgyOWQ5ZDg0NzIgbGVnYWN5LXRydW5rCisyNzU3IGUxOGYxZmEzOThhMzBiM2UyNWNhZmUzYzY4NzkwODBlMmIxZDdmNWEgbGVnYWN5LXRydW5rCisyNzU4IDgwMGNmNDA4NmZiMzNkODBjYjNiNjc3MTQ5YmYxNWI2ZjAzMjJlNTkgbGVnYWN5LXRydW5rCisyNzU5IGIyMDRmMzFmYmM5N2U2MGRkMTc0MzdiMjQ4MGQ5ZTY4ZWUyYTk1MTcgbGVnYWN5LXRydW5rCisyNzYwIGEzNDc5MzNhNmQ5MjJmNjA1ZjUwMmU4Y2QyYWYyOGViM2ZkOTVkZTMgbGVnYWN5LXRydW5rCisyNzYxIGQ0OWI2YTY3MjViZDg3ZjUyMTlhNzNkMWYwNzE1NTM0MWM0NGU3YTMgbGVnYWN5LXRydW5rCisyNzYyIDhjZGQ2MmJiNTE1Y2JhYTBjMTc4Zjc2MThhNjJjOTZhZjZkZWFiODMgbGVnYWN5LXRydW5rCisyNzYzIDVhMzUxOTUzOThlZjUzZmJkZDU3ZDZkNmJjODg0MWQ4ZDJlNDYwMDkgbGVnYWN5LXRydW5rCisyNzY0IDM0ZDY3ZGE4OGU4NGI4NGI2ZDhlZDc3MzcyMjEyMTlkZmJiMmQ0YjAgbGVnYWN5LXRydW5rCisyNzY1IDhhMjRlZjQ0ZGZiMGE4YjQyYjY1MTQ1OGY1NWVkNzUwNzkwZjYxZGQgbGVnYWN5LXRydW5rCisyNzY2IDZiMzYwNDE1OWNhOWIxMThjNjcxMDJlNjUyODRhZDUxNTQ2NjRlYzkgbGVnYWN5LXRydW5rCisyNzY3IGM3NjNmYzY0ZmNhYmJlMjVjYjRmMzJiMDRjYzU3YWYwN2JkNzBlYTQgbGVnYWN5LXRydW5rCisyNzY4IDAyMTRiYmY0N2JmNmRlZTQ2ZWQxNTMwMDcwZTQzMTkzODYyMzJhZWMgbGVnYWN5LXRydW5rCisyNzY5IDkyNzZjMjYyNWQ2NGNiZmQyNDJhM2JmNDVjMWJlZWZjMjMwYmZmMTYgbGVnYWN5LXRydW5rCisyNzcwIDBhZDViMzVlM2FkODlmODYzNTc2MDQ2OTZmYmFmYWEzYTczNWU0MmEgbGVnYWN5LXRydW5rCisyNzcxIGRjYzZkZTFjMzdhNGY1MzUyNmUwNjI1NDQyODU3NmE3Yjk4ZjRlMjggbGVnYWN5LXRydW5rCisyNzcyIGUyNWUyNjU2Yzg1MzdiMTE1ZjM4MjYxNDE2ODk2ZTQ0YTZmZTYyNzUgbGVnYWN5LXRydW5rCisyNzczIGY4MjU4Zjg0MTA0NmU4ZDY0OTIwMjVjMzRiZmE1Mjc5MzM5ZjJmNjMgbGVnYWN5LXRydW5rCisyNzc0IDQwNWEyZmVjNzQ1NDFkZTcwMzNjNGMzMWRiNDYzODQ3ZjllMGI3M2QgbGVnYWN5LXRydW5rCisyNzc1IDExZTg2MjcwZWQwZGNmZTdiNDdjYTNlOWE0YjM4NDM5YTBiZjM0YTUgbGVnYWN5LXRydW5rCisyNzc2IDQwYTBlYzk5NGM1NDllY2M4OTNiM2I3MmU4MTUxMjQ1YjJiMDNjMDYgbGVnYWN5LXRydW5rCisyNzc3IDhkNTcyNTQ5NGVkZTczMTYwYjA3NWYyNTAwZmQ0N2EzMTdhMmMyOTggbGVnYWN5LXRydW5rCisyNzc4IDc1NWJiOGVmY2MyZDUzMzQ5YzhlMDlmYWMzNzAwZTE3YjdiNWYxMWEgbGVnYWN5LXRydW5rCisyNzc5IDE4OWVlM2JlZWJiNWU2ZjZhNTFjNDZhYWM3OTQxZjA4N2FmM2QzNzkgbGVnYWN5LXRydW5rCisyNzgwIGFjN2Q2NDQ1M2FhOWYxNWVhOTg4ODhhNTFiOGNlMzVjMWRmN2VmZTQgbGVnYWN5LXRydW5rCisyNzgxIGQxZjZlYzc4OGFjZjdiNWZjNDcxNWEwMDc2YWEzYjM5YjY4MTczZjkgbGVnYWN5LXRydW5rCisyNzgyIGNkZWMzZTg4MDUzYjNkZjU1Zjc3NTEyOTg0Mjc1ZDMyNmFjYjI2MmIgbGVnYWN5LXRydW5rCisyNzgzIGEwZDRjNWVmMWQ1ZDc4OTVmZGM1YmRmNzQ2NGVkNDMzZDI0MGVmMWQgbGVnYWN5LXRydW5rCisyNzg0IDliZTY1OGQxOTNhOTg5ZjkyMzEzMDI1Y2NjZWI3ZDM1NmMzZjlkNWUgbGVnYWN5LXRydW5rCisyNzg1IDBlNDM2MjAwYmYxMjg4NGNlMWRkNTViNDg0NDU1NDU1YjEwYzFkZjMgbGVnYWN5LXRydW5rCisyNzg2IDdmYjVkZWZjOGY2ZmFhYTU5NWVjMWI3Yjg0ZDZhOTM1MWUxYjVhNjcgbGVnYWN5LXRydW5rCisyNzg3IDIxMmFkMTU4YTgwNjJlMmY1MzhkYTNkMDI1NGI4MTE0MDdlNzBjZmYgbGVnYWN5LXRydW5rCisyNzg4IDFkNjVmMjhjMGFhOTdjYjg1Mzk5NTY3ODA2NzMwNDdlZTgwMzgwNTQgbGVnYWN5LXRydW5rCisyNzg5IGQ0MjBhZjljMWI3NTdhMmY4MjYwNTJhYmYxNGVkNTZiYjQ2NmU3M2QgbGVnYWN5LXRydW5rCisyNzkwIDQyYTZiOGUxMzkxYTA3ODViZWJhYjY0ZjJmODFjY2QwYzA4YTE1MTAgbGVnYWN5LXRydW5rCisyNzkxIDA0ZWQ0NzY1YjE3Y2U1MzBkZjE0ZGQ5NGVjOTQ1ZDZkZWVkMDMzNDMgbGVnYWN5LXRydW5rCisyNzkyIGY1YTJiYzM5ZTEwZTJhNGQ0ZDg4NzM3M2IxZGU5NzQ4YTU3YTRkZGUgbGVnYWN5LXRydW5rCisyNzkzIDBjMTkzOGYyZTBjMDJmODRiNWFkNjJhMWNkNTUzOTUzNGI5MGNkMTIgbGVnYWN5LXRydW5rCisyNzk0IDFmNmM1OTNlZGE2ODdiMjlkNTIwMzFkN2ZlMTczOTYxMjVmNzQxMGIgbGVnYWN5LXRydW5rCisyNzk1IDg4NTk5NmExYTYzMTg4MGVmNjI4YmFjYWRjZGUwYmI5ZjgzZTE5MDQgbGVnYWN5LXRydW5rCisyNzk2IDc4NGEwOWE1MjM3NWM0ZTU1MmU4ZTNmODNlZGM5NzNkYzc2NTkyZmYgbGVnYWN5LXRydW5rCisyNzk3IGQ1YmI4ZmU0M2RmMmYzYmZiMzNlNzk4ZGNiZjg5NTg4ZGNiNDI5Y2YgbGVnYWN5LXRydW5rCisyNzk4IDNjYjY4NmM0OGNkZGRmODFiZTQzNDJiYmRmYWNlNzE0ZWZkNjhmODQgbGVnYWN5LXRydW5rCisyNzk5IDlkMDFlOThlZDg0OTNlMDc2NmI1ZTVmZjEyNTk4MDRmNzE4OWJkNTQgbGVnYWN5LXRydW5rCisyODAwIDJmOTVhMDFkNmMxZjNjNjQ1NmRmZDJhZDQ3ODczZmM2MDRmOGE2YWMgbGVnYWN5LXRydW5rCisyODAxIDBiMzgwMDBmYzgyM2RmNzgwZjdkZDg2ZDNjZjYxMjIyODI5OTdmZGIgbGVnYWN5LXRydW5rCisyODAyIGIxNjJiMjc0MDBiYzUwMmRkMGVjYzc0M2RhYTBmZTUzODY4NDlmZTYgbGVnYWN5LXRydW5rCisyODAzIDBlZmI4ZGRmNmMwZWQ3OGJjYTAzZjM1NjVhYzJiMWQ0MjhlNjUyY2MgbGVnYWN5LXRydW5rCisyODA0IDAyZDNmMTYxYjdmNTU3MDJhZGZhNDk1YTAwMWNkMWE3M2JmNTZiMWQgbGVnYWN5LXRydW5rCisyODA1IDU5ZjkzMjViYjhlY2MzZTVkYjQwYjBkNjUwM2NjNzkxNzQ2MzhhMGIgbGVnYWN5LXRydW5rCisyODA2IGMwZTdiMGI5Yjc1MDdkNDMyZjFlMDVmNWFkMWU3YTg3NWEyZTRkNWQgbGVnYWN5LXRydW5rCisyODA3IGM4MzJhMmIwZDQzMzBiZDgzMTUyMWZmZGZhY2FhODNmODc5NGUzNGIgbGVnYWN5LXRydW5rCisyODA4IDhiYmExNGY3ZGI4YTFkY2ZlOTczMDhiMmNjNTAzMDQzMzBlZjg5Y2YgbGVnYWN5LXRydW5rCisyODA5IGY2Y2M3YWEzMWRlNjllOWE3YzYyMWFiYWVhN2VjMDVlZjA2Y2E2MTUgbGVnYWN5LXRydW5rCisyODEwIGRhNWIxNDMzNDY3YzFjYTVmNTk0ZWQyNzljZjkyZDYxMjU5NDVjZTQgbGVnYWN5LXRydW5rCisyODExIDQ4OWZlY2MxZGEyODZhYWMyZjc4M2FiMzM1NGE1ODY4NmZmNjY2MmMgbGVnYWN5LXRydW5rCisyODEyIDczZmU3YTFhNWRkNDJlMzY2MjRiMTEzNWY3NmI4MmI4ZTBiMDc5ZWIgbGVnYWN5LXRydW5rCisyODEzIDA0NTdjNDQxYjA4NjA3NzlhNzE5ZTA1ZWE1Mjk1NjhhNzQyOWZkYjggbGVnYWN5LXRydW5rCisyODE0IDc0OTQyZWM3MDQzMGFlOGZiNTRmZDRmYTFhZTcyOTU0MGM4MzBhMjEgbGVnYWN5LXRydW5rCisyODE1IDJlMGQ2ODgyMDEzZWZmZGU2NDIyZGRhZWUwMmQ3NDllOGVlM2Q4YWUgbGVnYWN5LXRydW5rCisyODE2IGU3MjkzYjViNTcwZDlkNjE5MWIxMGFlNDgwZWY5YTQyNzU0ZmVhYzUgbGVnYWN5LXRydW5rCisyODE3IGY2Zjk4MmNiNTQwMTMyMmI0YzY4NjgxY2NhMDVjZDU4YTRjOTg5NTEgbGVnYWN5LXRydW5rCisyODE4IDNlNjI2YzQxM2JiZjQ4OGZjMjg4ZmZhYzE2ZjA5MWVlYTllNzRiOTggbGVnYWN5LXRydW5rCisyODE5IDViNTIxZmU0ZDFmNjQ5NmIwZDMyZjBjMWUwMzg5MzdmNzRiZDVkNDYgbGVnYWN5LXRydW5rCisyODIwIDZkMTU5OWJlMmI1NGUwZTQwMDYyYWViMDhjZTMxZWY3M2E2NTRhMGUgbGVnYWN5LXRydW5rCisyODIxIGQzNzcwYjFkYTYxMTUyOTU3YjRlYzI2NmMxM2QyOGQ2MzMxYjM2ZTggbGVnYWN5LXRydW5rCisyODIyIDdlNWY0ZDlhZWU3N2JjNmRiYWZhZmI5YTk5M2JhMmMxOGMyNDM0YmYgbGVnYWN5LXRydW5rCisyODIzIGFhZmY2NTBkN2UxMzY2MGFiMWZkNmJkMzRiM2NjMDI4ZTdkMzQ4YjUgbGVnYWN5LXRydW5rCisyODI0IDVlZDZhZGJiOTVmMzU5MDMyZGRhZDYzZjUxOGRiMzhkNmQ2MjI0NzIgbGVnYWN5LXRydW5rCisyODI1IGUzYjYzYTk5MTRmODcwMjljMzQ2MzljZDhkMmFhYmJjYzkyNjUzNTkgbGVnYWN5LXRydW5rCisyODI2IDE4OTA3ODEzNjM1MTU3MWFmYTJkNDg2ZmQ5ZDI4YmU0ZDIxMDNmNzMgbGVnYWN5LXRydW5rCisyODI3IDI4MzkwMzc1YTJiOWFlNjY1MDE3ZjIwZjg2NDZhYWVlNmIzZWFlODMgbGVnYWN5LXRydW5rCisyODI4IDE2NGI1NmZhNjU1OGVhYWEyZjIxNmVlM2M0MjRhNzllZDE5ZTJlYWEgbGVnYWN5LXRydW5rCisyODI5IDEwNDk4NjdkY2ExZjk0ODNjYTc1ODg5NWVmNDkzOGFhZTgyN2IwZDQgbGVnYWN5LXRydW5rCisyODMwIGMyYmE4ODdkOTQ5MmIxYjNjNDVhMmUzODY5NzY5MzJjNzhiMjhkMjYgbGVnYWN5LXRydW5rCisyODMxIDJjZGRiYmVhOWJmYjMyM2M1NzI0OGRkYTJkNWFjYjE5N2Y0YTJmNzIgbGVnYWN5LXRydW5rCisyODMyIDEwMDAyZTFiYzUyNjQyZDg4ZTMwZmQxZTQ0MjQ1MGZkMDI3MjhlYWMgbGVnYWN5LXRydW5rCisyODMzIGZmZGRlN2ZjNzFjMWVjYjgyZDRlNGJlNjE1NTE3NmQ3ZGM5MDk3NTkgbGVnYWN5LXRydW5rCisyODM0IDcxZDQ5NjI1OWFkMzQ4ZTZkZTFjMzczYmY0NTgwOWZjMDVlMTAzMTQgbGVnYWN5LXRydW5rCisyODM1IDRlMmQyMzlkYzY0YzhmMTJhZWU5ZjI4OGUxYzdmMWUzYTRiZTZlZWQgbGVnYWN5LXRydW5rCisyODM2IDVhZmY5ZjhmZDI5OTVlZmIyYzBlNWYxYjUzNzUyZTg3ZGFmNjI2YzYgbGVnYWN5LXRydW5rCisyODM3IGUzNGViY2JiZGNhNmZmYTRiOWIwODQxYzI1NjYyNDRlZGVhNDBhY2YgbGVnYWN5LXRydW5rCisyODM4IDY0NDFhYTZhNDEyNjQ5ODRmYTdkYjE0NGY3MDQ5YzRmYjE3NDNjNWIgbGVnYWN5LXRydW5rCisyODM5IDIwNWI5NDdiMWQzYzI2Yzc2MDQ3NTZjODA5MTM3YjUxMTUwZTIyNjIgbGVnYWN5LXRydW5rCisyODQwIDZhNjAzNDJjMzEwNzQ4MzZhNDVkY2NjODI0MWNlNzU5OTUwNTA0MmUgbGVnYWN5LXRydW5rCisyODQxIDEwMmRlMzE5OTk4ZTE3ZTBkMWVhOTFlZmU1Nzk0MGYxNTEyY2JlNDMgbGVnYWN5LXRydW5rCisyODQyIDEzODZhNzJhZTYwNDdkOTc2MDUyMWYwMmRiOTQ3OTcyNWEyNzNjNjcgbGVnYWN5LXRydW5rCisyODQzIDc1NDRlYmFjNTY5ODc4MTZkYmU2MWI2YzRlNTI3YmI1MzQwYzUzODYgbGVnYWN5LXRydW5rCisyODQ0IDNiMDliNDBjZWYxZDA5ZmFjMTY1ZjU1NTViZDVjOGRkNTVkYTY1ZTkgbGVnYWN5LXRydW5rCisyODQ1IDkxMjZmNGNiMWNjYTQ3MDVjN2NkZTJlZjU0NGQyYjY1Y2E3MTRiZjAgbGVnYWN5LXRydW5rCisyODQ2IGNhMjhhM2E4MmJiYTg0ODFlMjQ4NzhlNzE0MTNiYTM3ZTBhNDU0N2YgbGVnYWN5LXRydW5rCisyODQ3IGQyNDRlZTAzYzU3NmU3MjRmYTVlN2QwNDlhYzNhMjUzYTU0YzQ0YWIgbGVnYWN5LXRydW5rCisyODQ4IGUxNWJlYTk3MWE1YmQ1Mzc5ZThiYjUzMzA2MGIxZjU4NjVlYTNiOWEgbGVnYWN5LXRydW5rCisyODQ5IDViNzE4NjNjODAxZDI5NmY1MjMyMjQ3NWMxNjY0ZThjYWMzNmM0MjIgbGVnYWN5LXRydW5rCisyODUwIDkwZWE1MDc4NjA5NTBhMzNkZDg2YmIyNjMyYzg1MzMzNWIxMjExMTAgbGVnYWN5LXRydW5rCisyODUxIDg5MWY5ODM1N2MwNDM1NWFkMmIyZDRlOWZkYzM2MTI0OWYzMmZmNTEgbGVnYWN5LXRydW5rCisyODUyIGQ2ZmE2NGNlYzQxMGU2MGMwYTg2NjI3MzYwNDBjYTA5NjBjMGU2N2QgbGVnYWN5LXRydW5rCisyODUzIDJkYmQ3ZTg0NGJkMDgyN2E0ZGIyMDI4YjEwODlhMmY5ZGM0YWJmN2QgbGVnYWN5LXRydW5rCisyODU0IGI0OWJhYWQ5YjY0MDZjNzc3NDlkNDE3ODk2NGVkYWI5NDA1NWE1NTAgbGVnYWN5LXRydW5rCisyODU1IDVjMThkNmM1NzgyNzQyZjI5ZmIxN2E0YWM3ZjY1MzY2OGZkMDI5OGIgbGVnYWN5LXRydW5rCisyODU2IDg3YWI5YzgxZTkyN2VkZDY2ZDhiOGM5MmVhMWFjYzhjNDJjMjE3NDQgbGVnYWN5LXRydW5rCisyODU3IGYzN2Y4YmM5MTkwYzU2YTBmNWM0MjE5YmE1NGE0Yzg1NzEwMjE4ZWQgbGVnYWN5LXRydW5rCisyODU4IDdjMDZiZjE1ZmQyYWJkZTEwOTQxMWQ4Y2EzMTgzYTVlYzkyYzkzMmIgbGVnYWN5LXRydW5rCisyODU5IDhhNjA2NDllNzk4N2U1MWE3NTY4ZjFkOWYyMjQ1NjBkN2YwZGI4OTYgbGVnYWN5LXRydW5rCisyODYwIDgyYzEyNTlhNGVmMzMwMmEwNzMxMjM2YmI5ZjE1MmExMTkxN2NkY2EgbGVnYWN5LXRydW5rCisyODYxIDE0MTE5YjE5NDhmYjQxM2I1ZDYyODczM2Q1Y2Q0YjA0ODA3Y2FjMTAgbGVnYWN5LXRydW5rCisyODYyIDA5Y2UwNGVmNzIzYmU3MWRlNWVmYjE4NGZiMDM4NmQ1ZTg5MTZiOTAgbGVnYWN5LXRydW5rCisyODYzIGY1M2RjYjlhMDRkNjM4MjUxN2ZhMDM0NGVjYjM5NjM0ZTA4YTc1MGQgbGVnYWN5LXRydW5rCisyODY0IDhmZmFlMGI0NmZkNDkyN2I4ZjE2OWQ2YTc3ZjVjZDZiMDFiNjFjYTMgbGVnYWN5LXRydW5rCisyODY1IGE4MDIyYjJhNzdlNjA5NmExYjU4NWFlMWRmNGE0MjYzZWNhYWMyNmQgbGVnYWN5LXRydW5rCisyODY2IDFlOGUzYWI2N2I0NTg1ZTQ4NWUyM2ZhZDVlMzZiYTIwZmFlMGNhYjEgbGVnYWN5LXRydW5rCisyODY3IDc1ODJlZDEzNjg0ZTQ5NzgwNjczYjNjMGMxMTQyMzM0N2I3YjEyMjMgbGVnYWN5LXRydW5rCisyODY4IGJmZGQ2ZTYyNmRkMzcwYWU0MmYyZWM5N2MyYWYzOGI5MWE3ZjZhYmMgbGVnYWN5LXRydW5rCisyODY5IDhiY2I1MGY0MzZmYWRlZTY4ODFhMmJlNWU0MmEyZWU2NDBjYzVmZjIgbGVnYWN5LXRydW5rCisyODcwIDcyMzZlMDJjNDU2MzEyNjc0ZWZhN2M3NmFjMDlmNzdjYjA3NDljNzQgbGVnYWN5LXRydW5rCisyODcxIGJjNWM3N2ZhODAwNjg3Y2ZlNzQwZmZjOTE0NzEwYjY0NTlmZGYzMGIgbGVnYWN5LXRydW5rCisyODcyIDNkOWMyMzEwYWZlODViYzc1MGFlNTZhZDQ1YjJlNWVjMWE1Y2M1ZGEgbGVnYWN5LXRydW5rCisyODczIDAwY2RiOGRlZGQ2ZjJhNTQ2MDA1ZWRlY2VmZjhmNTJmZTg2YzIxMDUgbGVnYWN5LXRydW5rCisyODc0IDg2MjQ1N2UwMjM3Y2E1OGY1ODgzNTcxZGI3NTE2ZDM0MGUwOTE5MGYgbGVnYWN5LXRydW5rCisyODc1IDI0MDNmYjZlYWVjNjIxYzM1OGUyYTVjZTU1MDI0ZmI0NzY3NjMwOTQgbGVnYWN5LXRydW5rCisyODc2IDkzZTIxNWRjMWQ2ZWYxZTJjN2UyMTZiYTJlMDdkYjYzMWM4OTY1MjYgbGVnYWN5LXRydW5rCisyODc3IDRkNjRhYmJkZjcwYTk2OTEyNjE2ZTNhNGI3MzRhODZhMmU3MDcwOTggbGVnYWN5LXRydW5rCisyODc4IDllOTE0NWFiYzQyYWM0NTRlNTg4ZTc0YjAzNjhiODYwOWUxNjc3MzYgbGVnYWN5LXRydW5rCisyODc5IDRkMmExOTllMTIwMmE2YjczNzg4ZTA5YTVhY2QxYjFlYmUwNjU1ODYgbGVnYWN5LXRydW5rCisyODgwIGNjZTA1YTQ3NmUwNDEyZWUwYzMyMjhmNTZhYWE2NGQ0MDU5YmUzYTkgbGVnYWN5LXRydW5rCisyODgxIGY3Mjc4YTA2N2ZiNDMwMzY1YjAxMjMyMTdlMmI1NmRiNmJmMzVlZDEgbGVnYWN5LXRydW5rCisyODgyIGQ4YjE3ZmFiM2E5ODNmMTI3ZTc2N2I5MDE2ZDA4YzhkZTRmYTI4MDAgbGVnYWN5LXRydW5rCisyODgzIDU3ZTk0ZWJhMjQ4NDhjYjgwNTdjMTBlYzdiNWY3ZWFkYzljMjM5OTQgbGVnYWN5LXRydW5rCisyODg0IGU3NTcxYTE4YmRlZjFkMDIxNDU1ZWQxZDJkZGM5NDlhY2E1MjNhZjUgbGVnYWN5LXRydW5rCisyODg1IDQ3NmJiN2U1Yjg1NDc1NjliMThlN2QxYjAwOGQwOTg4YjMyZmQ1NWYgbGVnYWN5LXRydW5rCisyODg2IDc2ZTQ4NzAxMjA0YmYyMzdjOTkxOTU5YTc2ZjRlMjU2ODYwYjFlY2QgbGVnYWN5LXRydW5rCisyODg3IGU4YzZmYTkxMThlYmU5ZWZmNmI5ODY2ODYzMTQ1OTU5YjhhYTlkYTMgbGVnYWN5LXRydW5rCisyODg4IDlhNzU0NDg2ZWYwYjUxMjFiMjZhMjU4NDRkZmY0NzNjZjcwMDA0OWMgbGVnYWN5LXRydW5rCisyODg5IDc2ZDkyZWJiNGQ4MmE3NWM1MDYzZGRmNThjNjAwYTUyMWQwZmNkZjkgbGVnYWN5LXRydW5rCisyODkwIDgyZGQwODFmMzgwZDU0YTc0OTQ4ZWIxOGM5MGMxNWJlMjA1NGRkNDIgbGVnYWN5LXRydW5rCisyODkxIGM4MTk1MmQ5N2ViZThhZDg3NjcyY2VjYmIzOTU5ZGRjYTdmYWU2YTggbGVnYWN5LXRydW5rCisyODkyIGM2NWZjMTcyZjE2ZGJiYTZmZGVhOWNkOWIxYmI4ZGRjM2M1ZmU1YzMgbGVnYWN5LXRydW5rCisyODkzIDAzMzhjN2M5ZjA4Yzk5YWJlZTljOGJiMjc0ZGIzOTJmMmI4ZTIxYmEgbGVnYWN5LXRydW5rCisyODk0IGYxNzlkOGQ1ZWU4Yzg1M2RjY2Y5NmM5ZDA2MTA5NDcyNjUzNzMwYmMgbGVnYWN5LXRydW5rCisyODk1IGNmNWNhYmZiM2Y3MWY2Yjc3OWIxNGNhODc2ODZmY2QwYzkwN2FiY2MgbGVnYWN5LXRydW5rCisyODk2IDFlMjA1ZDA4NzVmNjJkZjU5MmE1MzM5ZDIyMmRhMDExOTk0YzkyOGYgbGVnYWN5LXRydW5rCisyODk3IGVhMGJhZDlmZGY2NzM0ZTkwOTQzYzk1MjQ2MjE1N2Y5YTcxMzI0ZmYgbGVnYWN5LXRydW5rCisyODk4IDgyNDY1NzZlZjNmNTM1OTY5NTc4MTI0ODIyYjI3OTU1MjhmNTU4YTQgbGVnYWN5LXRydW5rCisyODk5IDU1YzYwZTdmMzFlZGEyNzNiZDYyMDdiZjVhMmEyMzEwMzlmOTk4ZGUgdW5sYWJlbGVkLTEuNS40CisyOTAwIDA3OGY5MDE1ZjE3ODkyOGM2ZDIyMzQ5MTJiOTllYzAxNjgzYjA1NDkgbGVnYWN5LXRydW5rCisyOTAxIGFiMWIzNDg2YjIyNjM4ZjU0YWY2YzliMGFmMjY2NDA3Yzc5MTVmZDAgbGVnYWN5LXRydW5rCisyOTAyIGQ3NzgyNDU0M2JjZTk2YTlmMDA2NDkyYmQ3ZTg4YzhmNTIzZjQwZTAgbGVnYWN5LXRydW5rCisyOTAzIGRjNjA5NTNmNjA1Mjk5MDdiODBmMGZjOGQ5YWRjMGYzMzY2MjBhN2UgbGVnYWN5LXRydW5rCisyOTA0IGY3MTAxMTBjZmQzOTJhNTZiYTNiZTlhZmQ5MmFjYjE5NjFmMzJiMjIgbGVnYWN5LXRydW5rCisyOTA1IGRiY2I0OWQ3NDJhMGNmZjJhYzMzODEwYjk0NzdlYzdjMTJiMzU0NDMgbGVnYWN5LXRydW5rCisyOTA2IDgzNGRkNGE3N2VlMjBmOTk5OGI1NmZlMjFkOGE5ZDg5NjJmYzg2MDEgbGVnYWN5LXRydW5rCisyOTA3IGM3YjIzY2M4Y2RlZGFmZjQ4NzBkZGY1M2YzOGJiYThlNDdkNTliMzggbGVnYWN5LXRydW5rCisyOTA4IDZjMGYxNjAwOGJkOWQ0MGZjYWM4YjUxODllMWVmODE1OGUxOTkyMTggbGVnYWN5LXRydW5rCisyOTA5IDQ1YzgxODkzOTRmZjBlM2U5ZDk2MjAzMzJhOGNhMTgzMjU0MjYwZTYgbGVnYWN5LXRydW5rCisyOTEwIDcwYzJmNDA0MzBjNzY5NWVmOTJkOGNjMzE1ZjMzM2I5Y2JjMTkzNGUgbGVnYWN5LXRydW5rCisyOTExIDMyMDg1ZWRkNzdhN2Q4OTRmMjgzNTcwYWJlMzUyZTEwMDExYTJlN2UgbGVnYWN5LXRydW5rCisyOTEyIGZmM2RiOTU1ZTYyOGYzNDE2NDc1Zjc2ZDQyYWQ5YmU0NTA4ZWZkN2IgdW5sYWJlbGVkLTEuNS4yCisyOTEzIGE1ZTY4ODFjZWJmMDljODE2YjgwNTk2MzBiNzhlYzU1MTExMzkyZTcgbGVnYWN5LXRydW5rCisyOTE0IDBkNDk0YmMyNDIwN2Y3N2E1NmVmNzQ1Y2E4NDg2MWJlOTE3YTYzMmYgbGVnYWN5LXRydW5rCisyOTE1IDhiZDIxOTRhZDZmOWE5YjUzZTg4MjQwOWEwZmNhYjk4NmM1NjI5ODcgbGVnYWN5LXRydW5rCisyOTE2IDhmN2IzMWE4YTY3ODVjODQ2NjcwOWY1ZDNmMzNmYThjYWRiNTYwYzUgbGVnYWN5LXRydW5rCisyOTE3IDZmYmIwM2RjNDM5ZWUyNjliMjQ3YWRkZmJlM2FhMGU1NDgzZjA2YWYgbGVnYWN5LXRydW5rCisyOTE4IDJkZDVkYmYyOGEyZGQ1NWQ0YWU3MmNhNWMxODRhMmExMTNkMzY0ZDIgbGVnYWN5LXRydW5rCisyOTE5IDVkMmY2MmFkOGRlZWMxMjIzZGZhYmQwYzU0ZTU1YWNjNmZiZjAwYmQgbGVnYWN5LXRydW5rCisyOTIwIDlkZTNkMDJhYTc1ZDE5YWI5Mjg4NzkyNDkwYmU0NTZkYzc0ZmMyYzQgbGVnYWN5LXRydW5rCisyOTIxIGJmYzY1NTA3NDUyM2QwYWJmNDA4Mjk5NWM3MTU0MjdmYTNhMjEyZGMgbGVnYWN5LXRydW5rCisyOTIyIDQxZGQzOTM0ODdmNTkxYTQ0Y2FhZWQzY2NkNjljZmE3NjRjYTFlM2UgbGVnYWN5LXRydW5rCisyOTIzIDliNjcxZjM5N2E4ZjI3MDM3MDk4Y2EzNjYxNDhlNGQ0MmRkZDBiODAgbGVnYWN5LXRydW5rCisyOTI0IDFkZmIwYzlkMDU3NjdkMGNkYjgwMzdhNmE3YzE1YTM4NjU5MjM2YWQgbGVnYWN5LXRydW5rCisyOTI1IDU3YzNlOWNmZWU0MGZmODU5OWQwMWQ1MWVmNjNiYzgwMTE4ZTdjYmIgbGVnYWN5LXRydW5rCisyOTI2IDA3ZDVkNjJhNGEyYjIwMTY2MGUzMDBiZDNjNmM2ZDU1NTk0ODQ4YzkgbGVnYWN5LXRydW5rCisyOTI3IDdkODRlMGRkZjNiZTJkYzg2NDQ0NGE4NjFkNjU3ZTg2MDlmOGNlODAgbGVnYWN5LXRydW5rCisyOTI4IDM4OTBmNDZkNmUzYjcxMTQ5YTYwN2U2ZTM3OWI5M2Q0NjUzNDM1MDcgbGVnYWN5LXRydW5rCisyOTI5IDA1Mzc2YzkyNmY1ODBkOTliMWQ4OWQ3NzcxY2VhZTcxM2QwODA0ZDMgbGVnYWN5LXRydW5rCisyOTMwIDdhMGQwM2U4YmQyOWJhZTZkOTg0YzM2MWNjMTVkMDRlNjdkMGMzZjYgbGVnYWN5LXRydW5rCisyOTMxIDY3NjAzMWJmNDRlZTFhZDUzOWE1ZDFlY2QwNjNiZTJkZWUxYjhiYmEgbGVnYWN5LXRydW5rCisyOTMyIGY4NDIxZGE0ZWZhNzZiN2Q1ZDU5ZDg3YjJiNDkwMTQ2YjcyMzgxMTcgbGVnYWN5LXRydW5rCisyOTMzIDc0NDY5NmJhODkyN2FlN2JjYWY4NWU2NWNlN2I5MjViNDAzNWIxMWQgbGVnYWN5LXRydW5rCisyOTM0IDJlODJkZDBmOGE5ZTM3ZGFjNzBhYzA2NjBiMGJlNDVhOGI5ODY0MzYgbGVnYWN5LXRydW5rCisyOTM1IGQ5NDVjZjMzYTY0ZjQ2OGFhN2JlYmQyZmRjOTVmNTliZWM1NDVhNGUgbGVnYWN5LXRydW5rCisyOTM2IGM3MjFhZmFiMGVmYTYxZTVhOGUyMjMzNmRkNzRlMGI4N2JmMTczODggbGVnYWN5LXRydW5rCisyOTM3IDdjOGFiY2UxOTc5ODRhOWE2MjI1YTk3Mjg2MjljOGQ1NjAxMDk0ZjYgbGVnYWN5LXRydW5rCisyOTM4IDQ1YjNhNzhmMjU2YmFlNmI0OThmN2MxZDYyOTc0ZGEyMTIyNWJmNzEgbGVnYWN5LXRydW5rCisyOTM5IDcyNTllOTZhMDRhOWQ0NTE0MGYwZDY2YzYyY2U3NmMwOWQyMjVhMDcgbGVnYWN5LXRydW5rCisyOTQwIGMwZDRjYWE3MWJkYWIxMmZiMGEzMzNhZjE0MGMxNWRmOWU1Zjg3MGUgbGVnYWN5LXRydW5rCisyOTQxIDYxNjMwMjBhOTY3ZGJjM2Y3Yjk1YTJkOThlZTI2NTVmMTU4NTZlZDkgbGVnYWN5LXRydW5rCisyOTQyIGIzN2FjOTFlMmEwZGE0YjgwOGJmMmI1NDE4YzI3NDA3MzRhYmQyMWQgbGVnYWN5LXRydW5rCisyOTQzIDMwYTY1MjEwMTU5OWZmMWU3ODZhOTBiMWIxMDE2NWZhNTRkOTNhOGEgbGVnYWN5LXRydW5rCisyOTQ0IDY4NTg0MzE0YTE1NDdmZGU4YTY3MGI2MGRhZGFiMGMwYzFhZGJjMTIgbGVnYWN5LXRydW5rCisyOTQ1IDAxMmUzN2YwNTAxOTBmMTkxMTY1ZjVhOTg5YmE2MTI2MjcwMGEzMWEgbGVnYWN5LXRydW5rCisyOTQ2IDNlMWZiZTg0Y2Y5ZmM2YTI2MzBhYTJhMDdkMTkzZGVmNDEyMDRhM2IgbGVnYWN5LXRydW5rCisyOTQ3IGZiZDY4ZTY5MjE0YzI3ZTA1OTUzODEzZmEwMTg0NTRmOGZmY2Y4MTMgbGVnYWN5LXRydW5rCisyOTQ4IGNkODFlNTY4MDRiMDk0MmIxYTlkNDUwNjBjM2Y3YzExZTFiMTFhZWUgbGVnYWN5LXRydW5rCisyOTQ5IDYzZDM0ZTg3N2E2OTcwOGYzZGViZGUxZTQ2NDUyNjg5M2Q5OGFiMDkgbGVnYWN5LXRydW5rCisyOTUwIDQ0MzE5ZGY2YTkxYzI5Njc3MjNmZWU1MDYwMDIxMjQxNWY3YTg1YWYgbGVnYWN5LXRydW5rCisyOTUxIGJhNGVjMTNjMGY5Zjk4MmVmOWI1ZTU0MmQzNWE2M2E1NTUxNjk1ZDUgbGVnYWN5LXRydW5rCisyOTUyIGY1NjVjZjdmOWFiYTgzYzFhODBjNzFlMTg0N2Y3MzU5NzIxZTMxOTkgbGVnYWN5LXRydW5rCisyOTUzIDE2NDg0OWY1NjEwNWZlMmMzMDYxOWE2NGFmZTIzZGM1NWM2ZWY5NDQgbGVnYWN5LXRydW5rCisyOTU0IDc3ZWU5YjIyMmZkYjRhNDg4ODU3ODVmOWFhNjE0MjViZjE1ZjhiNzUgbGVnYWN5LXRydW5rCisyOTU1IGRjM2I0NTVmNzYzMjc3MzViMDY1YmJlMDZlMDI4MDcxYzU0ZTE5MDAgbGVnYWN5LXRydW5rCisyOTU2IGNiZjBlZjk5OGE0YTFlNTdjZmRhZTY0ODdkNzQ3NGExNWNiNTliYWYgbGVnYWN5LXRydW5rCisyOTU3IGM3YmM1NjE0ZWVhZDViNGY2OWZiZDNmYmZjZmU5NjdkNWY5NjAwOWIgbGVnYWN5LXRydW5rCisyOTU4IDBjZDE5Nzk0N2Q4MTRlOWNmMjJiOWQ0NGE5ZjY2OWExN2QwNzA2NWUgbGVnYWN5LXRydW5rCisyOTU5IDEzNjA2MTg0MDYyNDM0MTUzOTlhYzY2MzMyM2Y5ZDk0MTM3ZGQ0MzAgbGVnYWN5LXRydW5rCisyOTYwIDNjOGI0NDJlNWUxZjJlNmNlMzNhYTRmNTVmZTdiODBkOTFmNDI2NDcgbGVnYWN5LXRydW5rCisyOTYxIGRmYjNiMGVjMWZmOTI5YTY4MjJjZDViYzkwYzAyMDNlNjMyOGM5MWMgbGVnYWN5LXRydW5rCisyOTYyIDc4NGM1MWNiMWI3OTcwYjdhMWM3ZTBkMGIxNGFkOTYwNTY3NzMzNjIgbGVnYWN5LXRydW5rCisyOTYzIDQ0ZWNmZjY4ODRiN2Q3MWNmNGM5ODBmZTlhMmFkODAwMzA1OWQwZGMgbGVnYWN5LXRydW5rCisyOTY0IDk2NTJmYzgzMGExMmQ5YWJhOWFkODZjMGM0YzZjODdlYmU5NmQ1YjkgbGVnYWN5LXRydW5rCisyOTY1IDNkNjU0MWEyZWNhNWEwNjI1ZTVmNDI0NDkwMDQxNTUyZDJhYzkyYTcgbGVnYWN5LXRydW5rCisyOTY2IGQwNTcwNGEwMDBlYmRlNWQ5MWEyM2NlMTYyZWFjYzczNDhmMTFkZTkgbGVnYWN5LXRydW5rCisyOTY3IDNhZGVjZTJjODU2NzA0NWRjMTk3ZmY5OGNkZjhiM2I0M2U1YWY2ZTcgbGVnYWN5LXRydW5rCisyOTY4IGJhYjJiZWJkMzVlNzM1ODFhZTRkODg5YzFlNWIwNGJmZmQ2YzFlMDggbGVnYWN5LXRydW5rCisyOTY5IDI1OTkyM2U0ZDdiMTdmYmNkMDBkNjgxN2Y3OWYxYTdiYzA3NDNkOGUgbGVnYWN5LXRydW5rCisyOTcwIDQzYzg2ZDFlYjIyYzI5NDY2NjAzMTgzMjhmOGQ1NTljMDU3ZDFlNjMgbGVnYWN5LXRydW5rCisyOTcxIDBjZmYzNmIxMTBmZTU1Mjc0NjlkMDZjMzYxMTg0MGEyZDdiZGRhODEgbGVnYWN5LXRydW5rCisyOTcyIDg1N2VkM2ZiZGMwZWEzOWQyYjA4ZjA1Y2Y2ODg3OWZhNjRhM2RlNzMgbGVnYWN5LXRydW5rCisyOTczIDM3NzNiNmY2ZGQ1M2JjZWI2YzQ3ZDFjNjdjNGU3ZTgyZGZiMDk3M2MgbGVnYWN5LXRydW5rCisyOTc0IGQ2ZTI1NzkyMzIzZmI2YmZjZTQxOTcyNmJhYWJlNzhmY2MxMWU4ZTQgbGVnYWN5LXRydW5rCisyOTc1IDk0ZWE2ZWE3ZjdkNTU2YWY3ZTU5NjVjMGFmMWQ1YTI5MzI1YTgwZmYgbGVnYWN5LXRydW5rCisyOTc2IDAxYTZiZjU3NDUyZTU1YWVkNzE1NzMzZmYwZDFmOGNlOGJmY2VmNjQgbGVnYWN5LXRydW5rCisyOTc3IGYwOGQzNDQ5OTI2OWRlMGU0OGZlY2I0ZWJhYzQ3ZTk0NTg4Y2IzMjkgbGVnYWN5LXRydW5rCisyOTc4IDY1MDhjOTNmOTQ3MjlhYWRlZThjNGIxM2M2MWY5YzJhZGIyMjAxOTYgbGVnYWN5LXRydW5rCisyOTc5IGU0YTI3ZDg0ZWEzNjc4MGYwODY0YjNkNTRjM2E4ZDc2ZWNiYTFhZGIgbGVnYWN5LXRydW5rCisyOTgwIGFhNjMzZjBkZWZhNjFlYTk1NWUwNGVlZWRiMzQ0ODZiNDU0ZTYwNjAgbGVnYWN5LXRydW5rCisyOTgxIGUxNTdjMTJjZDZlN2Y3NDkxY2UzMGZjM2M1M2FhY2VjNWFiZmMzNjcgbGVnYWN5LXRydW5rCisyOTgyIGExZTg0YjQ4NDQ3YWU2NDRiYmFkZmJlNWMzOTYyZTA3NzgyZGJiZTkgbGVnYWN5LXRydW5rCisyOTgzIDA5YzY5YTFlYzdiMDkyOGIxZmI5MTdjZGRjYzFjMWVhNWE3OTVmY2YgbGVnYWN5LXRydW5rCisyOTg0IDAxZmM1OTAwMzMzOWY3NzAzZjBmOWNhM2NiYzAyMDUzZGI4NjJmZDEgbGVnYWN5LXRydW5rCisyOTg1IDFlZWNmZmQ5Njk2ODllMDgwOTIyMjQ5YWRhMmQ2OWFhN2NlNTcwNmMgbGVnYWN5LXRydW5rCisyOTg2IGQxYjg5ZTg1Y2U3NTZkM2EyZDZkNmM3M2YxODI0MWEyYzQ2ODEyNjIgbGVnYWN5LXRydW5rCisyOTg3IGI4NGE2ZDRkZTkwZThmY2Y0MzRhMzFhZWYwZGU5ODFkNWRkNzE2MjkgbGVnYWN5LXRydW5rCisyOTg4IDFkMTk2NjlmNTY4NzY5NjQzM2E1ZjJjMDQ4YjkzZGFjY2FiOTQ5YTcgbGVnYWN5LXRydW5rCisyOTg5IDNjYjlhMmI3YjQwY2Y0MmRlMzlhNGE5MDA0ZmE1MzYzYWI3MGM0M2MgbGVnYWN5LXRydW5rCisyOTkwIGZhZjExYWRjY2ZjNjViZDBhNzQ4MTM0OWNhMTNiZWE1ZWExOGUwMzcgbGVnYWN5LXRydW5rCisyOTkxIDJmY2Q0MDFhNjIzMjNhNDY5NGRlYTBhZjJjYTg2Yzk1MzQ2ZDk0YzggbGVnYWN5LXRydW5rCisyOTkyIDIxYjNlYTZiZDMyZDMxNmUxZDliNjdmZmZlMDMwNDU4MmI2OTFmNTYgbGVnYWN5LXRydW5rCisyOTkzIGVhNTA3MmRlNzQyNzNhNTI5ZmEwMDY0MjMzOWZmYjRkNDkyZmEwZGUgbGVnYWN5LXRydW5rCisyOTk0IDNlYjA1ZDJkYzdiMTFmNDFiNTYzMWVjODkzZGU3OWJlM2I2ZDI0NmMgbGVnYWN5LXRydW5rCisyOTk1IGI0MTc5MjMwNzAwOGRlYjQzOGE5NzNhYjc5YTI3NzFlNjhhNzdlYzMgbGVnYWN5LXRydW5rCisyOTk2IGE3ODgyZmM2ZWEyNzA1YjhlMTUwZGJiYzFlMWZlOTI2NDJjOTNhZTEgbGVnYWN5LXRydW5rCisyOTk3IDZiZjY5ZjU0YTkwM2Q4OWU2ZDVjMTk3YTQ1M2Q3NGYyN2RjMjk3MzYgbGVnYWN5LXRydW5rCisyOTk4IGYyNzczYTZkYzUxZWVjYjI4YmRlNWJmNzZiMDI0ZDQ5MTk3NDI1NjggbGVnYWN5LXRydW5rCisyOTk5IDdiNGFkZTUzNmFmODhmNDUzMGVmNmU3NTEwYzlhNGYyNzdiMTY2NmMgbGVnYWN5LXRydW5rCiszMDAwIGI5OGFlZjIxM2RhZWE1NGMyMzBjODNjZDY0NDBlMzNmMmI4ZDgxNzUgbGVnYWN5LXRydW5rCiszMDAxIDA3YThjNDQzYjgzMTA0ODNjYzRlNTI2NzZjZGI1YmIxMjc2MWU5M2EgbGVnYWN5LXRydW5rCiszMDAyIDE3ODBlYjhmZGUyYjY0NWYzM2EwZWE3MzJhMWFkOWYxMDQ2M2ViMDUgbGVnYWN5LXRydW5rCiszMDAzIDQxMDFkZWQ3M2M1MmRhOGRmN2VjMDNlMGJmMWU0Mzk5YmE0NGZkOWMgbGVnYWN5LXRydW5rCiszMDA0IDNmODFiNWFjMmJiMjAyNDA4NTkyNTU3ZDAyY2UwZTc3ZmM0OWU3YWQgbGVnYWN5LXRydW5rCiszMDA1IDE0NjYzNWRlZjAxZWFiMmRiMzcxZGU5YTM3ZTEwMjkzMjBhNDg1NTYgbGVnYWN5LXRydW5rCiszMDA2IDM5OGMwMGYxMWEyZjQ1YzI3ZTQzZmNiMTk4MzM3ZTJmNDM0MWIxZjMgbGVnYWN5LXRydW5rCiszMDA3IGM1NWNiNzZiYzgzNzA4MWUwZDUxYWY5N2Y0OGIyNTBmZGFiOTA0NGEgbGVnYWN5LXRydW5rCiszMDA4IDg1MWFjNGE4YmU3ZDg4NWIzNzFjY2UzZWFjNTIxN2RlOThhZTc1MmIgbGVnYWN5LXRydW5rCiszMDA5IDE2NDBjYzNmMWE1M2Y4MDc1MmZiMmM4MGJkNTcxYzQwZGVlYmVlMDkgbGVnYWN5LXRydW5rCiszMDEwIGQzMWVjMTVmNWY3MTA2NDRhZTI3MzYyOTgzZjdkNmIwYTY5ZjQxYWEgbGVnYWN5LXRydW5rCiszMDExIGIyYTQxZjZhZWFjOTkwY2FjYmEyNGQwYTkyNzk0YjIzMDMwMjJlMzUgbGVnYWN5LXRydW5rCiszMDEyIGZlNmE1ZjI2NDBhMjc2ZDkwMTdmNWVkZjAwNzQ0NjFkM2JkOWI5NmIgbGVnYWN5LXRydW5rCiszMDEzIDg3MmEzY2FlZmYwNzI0MjAzNTM4OWQ2ZmU2NWYwMjgyYTIwMzZiOTcgbGVnYWN5LXRydW5rCiszMDE0IDRkZWZhYmI4Mjk2YjViNDcwNmQwMzdkNThhYTBkYzY5NTZiMGRiMzkgbGVnYWN5LXRydW5rCiszMDE1IDFhYzVjNjcyN2U4YzU4ZGM4OTk0MGI2ZjcwMDc3Y2IwY2JiYmIxMmUgbGVnYWN5LXRydW5rCiszMDE2IDRkNThlMmM1MDg4N2E1YWNhZThlODkyNTg0ZDU3YTY1YmE5NGNlN2UgbGVnYWN5LXRydW5rCiszMDE3IDM5ZTViN2UzMTU4ODg1ZjMxZWJhMzQwZGVmZjAyNWEwNzFkNWMwMzAgbGVnYWN5LXRydW5rCiszMDE4IDZmNDk5ZDVkYWRkZjdhYmNmN2U0OTE0NDI5NmRkZThhMjgxNzAwNWYgbGVnYWN5LXRydW5rCiszMDE5IDI1NDFiM2QwZjIwZjcxZTYxNmI5N2E5ZjBkZTI2MmE3MDMyZWRhNzcgbGVnYWN5LXRydW5rCiszMDIwIDhiYzE3MGU1ZWZlZTcyMTQ2YThjZTJjYzA5ODA3NWQ5MTdhMzhlM2QgbGVnYWN5LXRydW5rCiszMDIxIDZjYTFjNDRmZDUyNzhhMzI5Y2M3ZjE0OTU5MGNlM2EyZjdkNjViODUgbGVnYWN5LXRydW5rCiszMDIyIDZmM2ZlZDI1MGFkYjBmYTIyMjc3ZTFkOGFhMjVlZTlmZWZhMTZlZjYgbGVnYWN5LXRydW5rCiszMDIzIDM5MTM0Yzk5YzkyMzgzYTU3MTY2Njg3MGY3YWE3MjA2N2ZiZmYxMTAgbGVnYWN5LXRydW5rCiszMDI0IDc2MDk1YThiOTZjYWViZjBkZGNkMmI5ZWZhMzE0YTdiYzM3NzA4ZmQgbGVnYWN5LXRydW5rCiszMDI1IGJjZjAyMDUyZTkwOWU4MWE3YzRjMDA3OTZiZDNhNmI0ZGIyMmVhZTIgbGVnYWN5LXRydW5rCiszMDI2IGI2OGIxMGEyMTUyMDA5M2U4YTE2ZmIyNzM3ZTViOWRhNDBjZjc3YjAgbGVnYWN5LXRydW5rCiszMDI3IGU1OGY0MGMyZjI4NWNmNWUzNmM2MWRiMDkxNDUyNzc3ZjRhMzRkYzAgbGVnYWN5LXRydW5rCiszMDI4IDU4ZTg3NzBkYjQ0YWNkZmVkMWQ3NjdjYzZkMDEwODlmZDQ5ZTJmOTcgbGVnYWN5LXRydW5rCiszMDI5IDA2YzA3ODc1MGU4MDhhMzNiOGI3MzFjMjA1MzZlZmVlMzkxNWRkMTQgbGVnYWN5LXRydW5rCiszMDMwIGNiMTQ2YWE5ODdjOTQ1Zjk2MDQ3Zjc4NDY1ZTc2MjMxOGMzODA1MDAgbGVnYWN5LXRydW5rCiszMDMxIGIyZGI0YmYzNGZmOGNlNDk5OTVkYTdlODQwNDgzYmZlNzI5ODc5NDIgbGVnYWN5LXRydW5rCiszMDMyIDhlMzUxZmIyNTc3YTAyYjI2MmE3ZWY1MDk3NjczNWRkMmE1ZGIyOGYgbGVnYWN5LXRydW5rCiszMDMzIDk3MTVmZGMxZTQ2MmRmZDRmNTBmZDhjMGQ3YjNkYTcwMjBhOTNmYmIgbGVnYWN5LXRydW5rCiszMDM0IDIyMTY5ZmNjMTE4MjZkYTY1NzgxOGYxODJjMjZkYzM3MzlhMjU5NzUgbGVnYWN5LXRydW5rCiszMDM1IDdhMDEzZDY0NDVhNDg3NzU1YzQ5NjFjYTg3MjFmOWRiMzZmZGIyYjkgbGVnYWN5LXRydW5rCiszMDM2IGFhZGRmODIxZjVkNDMyY2YxMTZiM2FiYTQ0ODYxMTVjMzhlMDJlZDEgbGVnYWN5LXRydW5rCiszMDM3IDRjOWJjNTJiODA4MGQzOWNmOGRmNmZjZThiZmQ4MDgxYWRhY2VjOGQgbGVnYWN5LXRydW5rCiszMDM4IGNkMGU3ZjI0ZmFjYTFiMTFhYjU2YjVhMWI2MmQ4YWYwMDNjMDQxYTcgbGVnYWN5LXRydW5rCiszMDM5IGVjMzE3NDg4MzdkYzI3ODlmNDg3OTQ2ZjMyNTkxNzMxOTcxNDJmOTIgbGVnYWN5LXRydW5rCiszMDQwIDlmYjJhODY4ZWVlZWM2NWFlN2RjNjE5ODA0ZWQ1NTkxOGQ3OTFiNWEgbGVnYWN5LXRydW5rCiszMDQxIDM2MzIzMTQwZjc1MTg1NDVlMmJhZDgzNWZhZTk0YWQ3YTJmNTU2OTUgbGVnYWN5LXRydW5rCiszMDQyIGY5NDgxYWE1ZTc3NmI2NWY3YmQxZTI2YjU3OTYzZTE4NWI0MWQzYTQgbGVnYWN5LXRydW5rCiszMDQzIDM2YjkzNDMyNmZlZDVmNDU1YTdjMGZmYWQ4ZDMzNTA1MDllMTI4MjkgbGVnYWN5LXRydW5rCiszMDQ0IGFmZjgxOWNhZjIxYWY1NGNiNjYxYzY5OTBlMDE0MDliN2QzZDUxMWMgbGVnYWN5LXRydW5rCiszMDQ1IDAwZWJlNWZiMGFjNjcxMjBiNjA0ZTUxYTI3NjhjM2VkODBiMGE4NDUgbGVnYWN5LXRydW5rCiszMDQ2IGE1NGU0YTcxN2M5YmJlMjkxZDkyZTRkNjMwNTUyYjRkOWQ5OGU4ZWUgbGVnYWN5LXRydW5rCiszMDQ3IGMwMmMzY2JiOGFkMTA0Nzc0MWJjNmY5YjQ2MjJjZDcxZmNmM2ZkNTggbGVnYWN5LXRydW5rCiszMDQ4IDI2NmRlNTlkZThhOWQ4NzI4N2NiNDgzZGVlYzI4NmQyOGQwYTA4ZmEgbGVnYWN5LXRydW5rCiszMDQ5IDlhMDVlMmJmYTc0YzM2YmJhNmJlYjdkZTNmNTA2ZTZlZGYwZmYxOWEgbGVnYWN5LXRydW5rCiszMDUwIDE2YTE5NTM1NGIyYmVlMDZiN2ZjM2I1ZDlhZGIyNjUwNDRjODIxZDIgbGVnYWN5LXRydW5rCiszMDUxIGRkN2RmYWQ0MDRjZDgzMmRhNjM4ZjE3NTI5NGE2ZWZlOWZjYjdhZDQgbGVnYWN5LXRydW5rCiszMDUyIDE4MTQwOTE0MWExODA2ZDdiODVjMzE4ZmRiOTY0M2JlMjQ3ZWUwOWMgbGVnYWN5LXRydW5rCiszMDUzIGIzZDYzOWFkNjY2ZDViMjBiMGRiN2M1NTNjMDM3ZTQ5ZGFlNWQ2NmQgbGVnYWN5LXRydW5rCiszMDU0IGE4Y2E3MjBmZDkyMTllZWE2YmNlMzJkZjZhOTlkNWY5NWEwMTZmYTcgbGVnYWN5LXRydW5rCiszMDU1IDExZWE2NjljMjMxZTEzZDI0ZDQ5ZGIzOGM3NTMxMTAyOGYzNWM0NGQgbGVnYWN5LXRydW5rCiszMDU2IDIyNjU4MjgyMmNmYWYxMjJmMGVkM2NhOTViYjEyZmE5YzNkMTE1NGUgbGVnYWN5LXRydW5rCiszMDU3IDQ2Y2I2YmNlNGM0NzVmNGZlZmM1MjI4NDkxOTY2NmQ0ZmFjNDRmZjYgbGVnYWN5LXRydW5rCiszMDU4IGJlYmRjMWFjZjQ3NDU5Yjg2ZTVjZjk3NTAyZGZiMDYyMDE3MTc3Y2MgbGVnYWN5LXRydW5rCiszMDU5IDY0NTllMmYyMWJmNjgwNzczNzg4ZmMyYWZkNjYxOWI3MmQ3YzhlYWEgbGVnYWN5LXRydW5rCiszMDYwIDBjNWIyZDllNDVlODJkM2YyZTVlOGFlZDQ0YWY1ZmFjMmNiOTU1NjEgbGVnYWN5LXRydW5rCiszMDYxIGVmODY1MDI1MDhlMmYxMDg2YzFhMTg2YmZiMTNhNjVhMGYwZDJmMGYgbGVnYWN5LXRydW5rCiszMDYyIDk5YmZmMWRiNzVmNGEwZmYxZDY3MjlkZTFlYzk3YTZmM2FiMWU2NzQgbGVnYWN5LXRydW5rCiszMDYzIDU4YTc0MzhjMmU3ZWY5MjJiMzYzMTc5ZTA0NmYwODI5YmJhYWFkMGEgbGVnYWN5LXRydW5rCiszMDY0IGZlYTNmNTk0ZGY3NzQ2Yjc3NmExM2NiOTBmM2VmYTQ5YjNjYjdmNTQgbGVnYWN5LXRydW5rCiszMDY1IGE0NzkzYWUyNjY4MjZjMDEzNGM0OTY3ZDBhMGJiYzNhNjM4NGFjMTQgbGVnYWN5LXRydW5rCiszMDY2IGZkNjJjMjgwOTZiNTg3N2U2NmQ0YmVkN2MxZmE0NTkwMTA2NTc0NzkgbGVnYWN5LXRydW5rCiszMDY3IDdmN2JhNjVhMjgyNWMwZTQ2YjU4NGY5YjEyMjU5OTNiYzAzNTZiNWMgbGVnYWN5LXRydW5rCiszMDY4IGExZjViMjE2ZTM5MmNkOWI1MmE1NzU5YWM2Y2FiY2EzZWFiZjg1YTcgbGVnYWN5LXRydW5rCiszMDY5IDYzNzk4Y2RlNTgyY2Y1MzU2NDVhMjQyZWNhM2RhZTc5ZmMwZTM2MGYgbGVnYWN5LXRydW5rCiszMDcwIDMyMDEwZDM1NWZiNjEyMmU1MjU4ZWE5MjM2NjM0NjU4M2RiNWY1YmQgbGVnYWN5LXRydW5rCiszMDcxIDQyNGY1NWU2N2Q1ZDMyNGI5ODY1NzZhNWZkZTk4YzE0N2NmMmI0MjUgbGVnYWN5LXRydW5rCiszMDcyIDRkYTBiN2RhZTc5NmZmOGYyNThhZDZiN2E0NzBlNmZiOWNjM2RiMWQgbGVnYWN5LXRydW5rCiszMDczIGE0ZjJiMjIxMGIwMjExNTAzMGM1OWExNTc1Mzk2MTU3MzM5MzhkNmYgbGVnYWN5LXRydW5rCiszMDc0IDRmZDIyNjAyZTI4MmMxZWU4YmY1MTg3ZmQxNGZkMmIzYTg0YmE1NjcgbGVnYWN5LXRydW5rCiszMDc1IDYwZTMxMThkMzA3MzdiYjZmMjljMzg3NmE0YzgxM2M2MzA0ZDQ1OTkgbGVnYWN5LXRydW5rCiszMDc2IGU5OGE4ZjgwMjkwM2E2MjljNjI0NjYxNDE0Y2M4OWNhZTJhYzc2NmQgbGVnYWN5LXRydW5rCiszMDc3IDc0YjcxNmU5YWM0OTg2ZTQwMDM3ODkzODFjZDBkZDA0NGUyYTJhMzggbGVnYWN5LXRydW5rCiszMDc4IDM5ZWU3ZGU3NDc1MDJlOTYyYmRiNWM2ZTg3MmIzNjdmNDJiMGE1NWEgbGVnYWN5LXRydW5rCiszMDc5IGZlYzE4ZTI0NGQxNjg4MmIyOWYwZmQ1N2JlN2Q1MTFmZDJmZjI5ZjYgbGVnYWN5LXRydW5rCiszMDgwIGNmZGQ1NzVlZmZmMmI0MTU3MGIzN2JmYmZmODBiMmMzNzUxMDYzYTUgbGVnYWN5LXRydW5rCiszMDgxIGU0M2EyMjBjMjg3YWEzZWEyN2I3YzFlMTNmNWZjMDMwOTE5ZjVkZjQgbGVnYWN5LXRydW5rCiszMDgyIGQzYjI3ZmZmMDBiMmYxMjU3NWVjMWQyMTNiOGU2ZDdkMzc3OWVlM2IgbGVnYWN5LXRydW5rCiszMDgzIDhjNzNjNWYzYjZjYTczZGRiNjY5NGE2YzU1Mjg3MDk1MDZhZmY2ZDYgbGVnYWN5LXRydW5rCiszMDg0IDgwNzg4MzQ5OTZlY2M1ODJjYTQ0Nzk2ODMxNDBmMDhmN2YzMGIwMzQgbGVnYWN5LXRydW5rCiszMDg1IGMxMmI0NDVjZGFjZWExZDlmOWEwODhhZjYyMmE2YTViMWMwNGNhYWUgbGVnYWN5LXRydW5rCiszMDg2IDcyYWNlZWQzNjVkNDM1YjdjMjk1M2RiODQwYmNkMDU0NzY5OTgzNzMgbGVnYWN5LXRydW5rCiszMDg3IDI1MDVmZDIwZDI3N2E0NzllMGQ0ODc2NjJiOGRjMjM0ZDZiYWUyNjAgbGVnYWN5LXRydW5rCiszMDg4IDYxMTQzYmYwM2I0NDc2ZTA1ZTI3MmNjZTlkYWE5NTY2MTNhY2U3NDcgbGVnYWN5LXRydW5rCiszMDg5IGMxNTZkNDk2MGMyYjQwODU5YjFmMDU4YzI0ZmQxYjA2MDUwNDNlNzAgbGVnYWN5LXRydW5rCiszMDkwIGFhY2JkNGI1NThjN2VmY2ZiYmY3N2NjYmJlMjcwNjgzNDZjMDBiNDggbGVnYWN5LXRydW5rCiszMDkxIDg3MjVmYThkN2ZmOTFkODFhNDM2YWE2MWQzNGQ3MGY2Y2VlMjkxMjkgbGVnYWN5LXRydW5rCiszMDkyIGZmMDJiOTQ4YzlhODBiN2I5NTVjMTU4NDFiOTMxZjU0MTJiZDgxYTIgbGVnYWN5LXRydW5rCiszMDkzIGU1MDYxOTczMzJjMGMxYTExZWE0YmY5Y2RhNzI4MDYyZTg4NWYwNGUgbGVnYWN5LXRydW5rCiszMDk0IGQ4NjA4ZWQxY2MzYjEzYjk4MjMwMTJlMGJhZjZkOWE0NjZjNWUzZTcgbGVnYWN5LXRydW5rCiszMDk1IDYxNTk4M2YxYTNmZjNmZDU5MmUyNjczYjRhN2U0NGJiZTMzZjRlYmQgbGVnYWN5LXRydW5rCiszMDk2IGM0MzI3MzhjZjY5YWVhZTE1ZjU4OGNmYTZmNGYxMDlkZTc5NGFiMzIgbGVnYWN5LXRydW5rCiszMDk3IGQzODNkMjczMzE3NjVmOGQ2ZWNjMDZlMzFkNDUwYjRhZjM5YmNjMjMgbGVnYWN5LXRydW5rCiszMDk4IDQ4Nzk5Njc5NmVkYzZjNzMxYjc1MGNmOTU4NmQ5NTIxMzc5OGVlMTUgbGVnYWN5LXRydW5rCiszMDk5IGRjZTZkYzYyZjEwOGVlNDRiMDQ3ZWRiMDJiZjQ0ZDk5Y2UyMDVhYzkgbGVnYWN5LXRydW5rCiszMTAwIDU4YTRjYjE4ZjAyNWFmODZkOWRiM2QwOTFjOTFjNGY0NDY4NDQ3OGYgbGVnYWN5LXRydW5rCiszMTAxIDE4MzY5YmI5YzI0ZDA3ODc5ZjYwNWVmYTdlYzUxYTUwZjI5MmQ3YTggbGVnYWN5LXRydW5rCiszMTAyIDcyNDNhOTA2OTM3Y2Y3ODQ4M2NlZWRhMzUwMzRhNGQwMTZjNDMyZWEgbGVnYWN5LXRydW5rCiszMTAzIDg0NDQ4MmI2NDY3YWFlM2Q1OGM4MWE1MDU3MDVlNTIzYmE2ZWYyYjEgbGVnYWN5LXRydW5rCiszMTA0IGNkNDBlM2VlYmI0OTM5MGY0ZTAzNGFmMzExZGNiZTI2MWJjN2EwMTQgbGVnYWN5LXRydW5rCiszMTA1IDNhYTY1ODkyYjc1YzQ3MDY5NjczNTczMzVhOTg3NjE3OWU1MzlhOTkgbGVnYWN5LXRydW5rCiszMTA2IGI0NmYyMWM4MzM2OTA5NmYwMDNkOTdiOGZiNTRkNWFiOWQ3NThmMTEgbGVnYWN5LXRydW5rCiszMTA3IDIyMmYwNGY1NTA4MzM1NzI2YWI2ZTYxZTFkNWRmMzQ0NzczZDhiMWMgbGVnYWN5LXRydW5rCiszMTA4IDQ2NWI5ODQxNzcwZTM0NTY1ZTRkOTZjZjBkZjcwYmNhNGIwN2Q4ZTYgbGVnYWN5LXRydW5rCiszMTA5IDM2ZTJiN2EwMGQ3MmYzNmFmYmFiYzgwMWUyZDAzNWRmNzAwNTMxNGIgbGVnYWN5LXRydW5rCiszMTEwIDI2MGQ5NmRiMTEyZjg3ZDIwNGJjOGU1ZTJkYzQ4NzNmYjgxZmMyMjUgbGVnYWN5LXRydW5rCiszMTExIGU1YWU0MmZmZDlhMDc1N2Y2YTc3MWY5NjcxZWZlNjA2NmJlMjM3MzYgbGVnYWN5LXRydW5rCiszMTEyIGJjMGFiMDE3NTRiYTVkY2I0ODAwNDFlNTNkOWQ4N2E2N2Q1NTMwN2YgbGVnYWN5LXRydW5rCiszMTEzIGI5ZjI0ZDBjN2Q5NjE2YTdkMDJmMTYwZWM3OGE0MDMwZDk1NjdjMjMgbGVnYWN5LXRydW5rCiszMTE0IDAyODRmMTA3OWE3YmFlNTY0MjNjOWNlNzNhZTIzODNiYTcxY2RhNWEgbGVnYWN5LXRydW5rCiszMTE1IDdkOGU1MWU1ODBkMWEyM2NhMzNkMjAyODk3NmY1MmQyYjJiZDY2OWUgbGVnYWN5LXRydW5rCiszMTE2IDJiNjA4MzI3MjNjMTQzMWY3OTVmODQ4ZDMxNzNiNjM3OWE4NWRlOWYgbGVnYWN5LXRydW5rCiszMTE3IDI2NmE4YmEyMDc4NGZjZjQxYmM0ZWYyOGVjZmNlOWE5OTI0ZWM4YzcgbGVnYWN5LXRydW5rCiszMTE4IDAzZGU2NzA4MGM5NTYyNDI4ZGM3MzdlNzFmNGVlNGVkMjI1MmQ5YTcgbGVnYWN5LXRydW5rCiszMTE5IGE2MGNiNTMyMTIxMTBlNTQwMGI0M2I1Yjg4ZWJkNmNlNzdkYzdlMTkgbGVnYWN5LXRydW5rCiszMTIwIDVjNmNkYjU4YTgwMWNiODE5NDY0ZTBlOGNkMWUxZGQzMTBmODgyMDUgbGVnYWN5LXRydW5rCiszMTIxIGE3MzZlZjE4NDBhNTFmZTJiNzVlYTg5ZjUxOTE1NThlZDk0MTNiNTYgbGVnYWN5LXRydW5rCiszMTIyIDY4YjMwMmFkODRhMTkxYjQzZDk5NTVjNThjODI5MzljZDYyOTU5OTAgbGVnYWN5LXRydW5rCiszMTIzIDdkM2EwNTNjNjc2NWFlNTZlYjE2YzEwZGM1ODlkNWMwZmYxMzA5OTUgbGVnYWN5LXRydW5rCiszMTI0IGEzMWUwNzg0NzA2Mzg3NDY5Y2YwZTlmM2VjYzhiODkxMTdmZDRlZmIgbGVnYWN5LXRydW5rCiszMTI1IGI0MWU5NTczMWU0MjI0MjE3ODVmMTVkODk1NzEzM2Y0NGZkM2Q5ZmQgbGVnYWN5LXRydW5rCiszMTI2IGI1ZmNiNjYyNDY1ZTczY2Y4ZjY3ZTk1YWU5ZDA1NDMzZTkzMjA5ZjcgbGVnYWN5LXRydW5rCiszMTI3IDRiZGIyNzk0M2UyMjQyMTM3MDA2OTA5MGRhZTQwMGU1M2JmYzdmNWUgbGVnYWN5LXRydW5rCiszMTI4IDE0Y2M0YjA3Y2ViYmQ2MTFlNzcwYmY3YTFiNTA5MjhkOGRjN2MwNzkgbGVnYWN5LXRydW5rCiszMTI5IDI3YWFmOTQ0NzVkZGJkNzU5YjA1MDJkN2JjN2ZjNjM5Zjk4YWZlNDAgbGVnYWN5LXRydW5rCiszMTMwIDFhNTIwMjkwYzM5YzA1MjVhN2ZlMDIxYTIxMTIzYTgyNDJhZTIxNTkgbGVnYWN5LXRydW5rCiszMTMxIDA2YTljODI4YjYwODkxYjU4Y2JkNmE2YzMyM2IzZTkwNDExZDQxYWMgbGVnYWN5LXRydW5rCiszMTMyIDliZmU3M2M3NzMzNGNhYjYxMzAyMzZiN2Y1NDczNGY5OGZlNGU4ZWYgbGVnYWN5LXRydW5rCiszMTMzIDQ2NTdmN2M5ODBlODU5ZjU5MjE0OTlkNjU4NmZhM2VjNzg0YjQyNjcgbGVnYWN5LXRydW5rCiszMTM0IGY2NzE5MzhkZmRlMmU1MzI4YWE4MDhlNzQ4YTAxZGFkYjE1MWNkYWMgbGVnYWN5LXRydW5rCiszMTM1IDdiMzdiNWU3MTQ5M2EzNjcxOGY1NTAzNTRlY2Q5YTYzNWUwZGNlOTQgbGVnYWN5LXRydW5rCiszMTM2IDMwYTI5MDI1N2MzMWQwYjA4ZDE3Mjg2NTJkMTRkNmRlNTMxNTJkNjUgbGVnYWN5LXRydW5rCiszMTM3IGM5YzAzMjgzNjhhOWUyYjY0MzkxNjA0M2ZmNWI2NWMyMmY0NWIwYmYgbGVnYWN5LXRydW5rCiszMTM4IGFkYmFjNTg5M2Y5YzYwZGZiMTczYTJmNjUwMTc2NDU2ZGVjYmZiZDIgbGVnYWN5LXRydW5rCiszMTM5IDMxYjAxOGJkYTdlMmQzZjUwMGQ5ZmM3NDhlNGE5YmUxNTliMWU5ZjEgbGVnYWN5LXRydW5rCiszMTQwIDU3NmRjMTRhMjQwMDk3MTJlY2IxMDYzYzkzODY0YWI3ZjNhZmMzNTEgbGVnYWN5LXRydW5rCiszMTQxIDEzYzk5ZWFmMzJhOGM0NWZjOTM5ODE5YmEwMThjNGIxOTQzYjU2NjAgbGVnYWN5LXRydW5rCiszMTQyIDNjNTVlNjEyYTZmY2MxZDdlYzQxOTFlZTA0MGU5MzY2YTcyZTFiYzcgbGVnYWN5LXRydW5rCiszMTQzIGZmZTJmYmM1ODNkZWNkNzkxOTg1ZTI2M2ZlOTc5YmU4ZjUzOGQ5YWUgbGVnYWN5LXRydW5rCiszMTQ0IDlmMWRiNTU2ZmZiYzI4ZWEzZGFkZDJkNmEzMTk3Mzk4MmFlMTA4YzYgbGVnYWN5LXRydW5rCiszMTQ1IGZiY2I4ZDBiZDQ1ZTAzMjFlYzlkNTRkNWFmYWRkZDc4NzNjYTgwYWYgbGVnYWN5LXRydW5rCiszMTQ2IGIwNDVlNjhiYmNkZDU0ZDRiNDVlM2MwNzNkMDI4MjcyNmEzZmUyODkgbGVnYWN5LXRydW5rCiszMTQ3IDg3YWVkNTE2MDE2MTc2YjRhNDAwMjU3OTAyYTU5NzkyNjVjODY5ZmUgbGVnYWN5LXRydW5rCiszMTQ4IDVjYzdhM2NkNTU3YjY0OTM3NzZhMjJhYjUzMzNiOGQwMjAwYjE3MTMgbGVnYWN5LXRydW5rCiszMTQ5IDJhMDc0NmQ1MjQ3OGE3MmVhZDNkMWRjYjYwNzU3YjAxNjAwMzU2MTYgbGVnYWN5LXRydW5rCiszMTUwIDI0Yzk4YjYwZGQ3NDY1YmU0MGIwMzdhNjZjNWM1YWY1ODIxOGY5OWUgbGVnYWN5LXRydW5rCiszMTUxIDE5N2EyY2YzYTY2MmM2YjFjNzAyYjczMTAwMTcwMmQyZWRiZDA2YWMgbGVnYWN5LXRydW5rCiszMTUyIDc3YWNhNjk2NmI5ZDAxYjVhMTM0ZjBmYzk5Mzg2Nzc1ZTY1ZWU2ZjYgbGVnYWN5LXRydW5rCiszMTUzIGE5ZWI3YTBkNDAwMjE0MWZlNzI1NGQ1ZWNlMmM1MzNjYTY1ZTU1ZTIgbGVnYWN5LXRydW5rCiszMTU0IDdmODBmMzM2YmU3ZjgyYWJlY2Q0NWQ3ODhiOGIyYmQxYjZkNTJjMGMgbGVnYWN5LXRydW5rCiszMTU1IDQ4YzYzN2ZiMTUwZjMyODk4MTZmMWZkMzdjN2FhYThlMzhlNDAwNzAgbGVnYWN5LXRydW5rCiszMTU2IDdjZTE5NzVmMTFhOTBmMTI0MWNjYjMxZWJjNTIzMjViMTA2M2IwOGYgbGVnYWN5LXRydW5rCiszMTU3IGY0ZGI0MDYzZWM4ODZlZDM5YWVlYjE2NGU0NjYwMWE2ZGI0MjkwMTggbGVnYWN5LXRydW5rCiszMTU4IGYwMjVlZWY5MzEzMGQzMjU5Mjc1NzRmMDk3ZDU2ODFjMjJiNjkwZWMgbGVnYWN5LXRydW5rCiszMTU5IGZmYjAzY2ViZjNmNDU1ZTQyNmU0MjVhZmUzMjY2NDgyY2I3YThkMjggbGVnYWN5LXRydW5rCiszMTYwIDBiZTFhNWRiNzc4NDc0YTBlNWNmZjdmYWQxMjkxYmQ2ZGJhYWRiMTYgbGVnYWN5LXRydW5rCiszMTYxIDA5YjQ4NjA0ODU1ZjRkZDNmMzc3M2QyZWYyNDFhYWRhMGUwYzUxMDkgbGVnYWN5LXRydW5rCiszMTYyIGRlYmZjYjlhN2UwOGE2NDc0Mzg5ZDJmOWE2ZWM5MGIxZDE2NWI3NmIgbGVnYWN5LXRydW5rCiszMTYzIDY3NzQxMDdjNjQ3ZGM1OWM2MDRkYWE3MGM0YjFhYmU3YmM5ZDU1ZjEgbGVnYWN5LXRydW5rCiszMTY0IDUwNjdmMmQzOGUxNDNmYjIzMjU4NTE2NTI0NTQ0ODY2MjliY2Y2NTcgbGVnYWN5LXRydW5rCiszMTY1IDBjZTQwNGU0MTM5YzViNjUxMTkwYzg0YTJlODFkNDVjNmRkYjJhOWYgbGVnYWN5LXRydW5rCiszMTY2IDE3ZGIwNTliMjliYWNhYjMxZGQ5MDFjOTYwNjVhZTQ1YTZjZTA3ZmUgbGVnYWN5LXRydW5rCiszMTY3IDVkNzE0MmVhMDFiN2RiMGYxNzgwNjY0ZTY5Yzg4YWRjNTNhMjE0MGIgbGVnYWN5LXRydW5rCiszMTY4IGIzMzIyOGUzYzJjMjdlZDkyMzE1ZTM1NGZiODA1YjU2ZWU0NTc4ZmIgbGVnYWN5LXRydW5rCiszMTY5IDkwMzA3MTM3N2QyOTJlNTk5MjQwZDkzZWJiYjE1NjE5YTBmN2Q1ZDUgbGVnYWN5LXRydW5rCiszMTcwIDA0YThhODljOTJlYjcwZTEyMTM4NjAyYWQ1NDc0ZTYxN2QzOTc2N2YgbGVnYWN5LXRydW5rCiszMTcxIGZkYmVhZTJkNmU2NzFlMjE1YTg1MWU2ZmU3ZGRjM2MzODRiYWYwMmEgbGVnYWN5LXRydW5rCiszMTcyIDA5ZDI3MWVmM2I4MjQwNDI3OTAyODlhOTVhYjdhZWY4MjEzZDNlYTIgbGVnYWN5LXRydW5rCiszMTczIDZjMWZkMDUxMGQ2MWJjZDE3MDhlMTkyZTVhOGMzYWMzODk0Y2VlNWQgbGVnYWN5LXRydW5rCiszMTc0IDkyNjc4YjUwNTdjNjU1NmNlNTQ0NTZlNTA1NDBiMTViNzVhN2FhMGMgbGVnYWN5LXRydW5rCiszMTc1IDgwNjY4OWI5MzU1OGY5NTZmNzFlNjA5ZjIzMmMxZTAyZmRjNTQ4MzQgbGVnYWN5LXRydW5rCiszMTc2IGExY2U1YTk0OTgyOGQ1YzJiZjE1NTRmODAwZDNhZDdiMTJmYzg3MjMgbGVnYWN5LXRydW5rCiszMTc3IDk2YWNiMzViYjkyYmI4OTFkOWFjMGUxODIyMWUxOTg1MDEwNmMwYTIgbGVnYWN5LXRydW5rCiszMTc4IGYzZDVlMmMzYjlhM2E1MzFmN2NlNzJlYmY0YzM5MTBiOWIxYmExYjcgbGVnYWN5LXRydW5rCiszMTc5IGE0MWUzYmE1YjQ3ZDk2ZmJiN2Q5MjFkNTRhZGJmMWRkOTczNTAwZTAgbGVnYWN5LXRydW5rCiszMTgwIGNiN2VmOWJkOWVkZWMzNzlhNTM4NjQwZDlkM2IzZTczNjc3NDllMWMgbGVnYWN5LXRydW5rCiszMTgxIDM5NDVmMzcxMjM1NDkwMWJkNzY4OWFhOTNkNWNiYWMxZTBlMmQxNjIgbGVnYWN5LXRydW5rCiszMTgyIGEzZTc2OGVhODAyYWI5MDdmMDExMDE3YWUxYmVmZjVlMTdhNjZiNGUgbGVnYWN5LXRydW5rCiszMTgzIDc0NDJiMjBjNDNmZGZjY2MxYTM5OTc3MDUzNzNiOWExZDUxMzg0YjUgbGVnYWN5LXRydW5rCiszMTg0IDBkN2M4MjM2NjcwNDUwMDUyN2M0NTczN2QzYzMyYzNkMWNhZTEzNjAgbGVnYWN5LXRydW5rCiszMTg1IDliNTY2YWMzOGMyYjg0MzQxYzg0NTMwMjUwMzdjN2YxMjlhMWI1YmMgbGVnYWN5LXRydW5rCiszMTg2IDk0YWI2NzYxYWZlMmM0ZWYyZDcwNWM3Y2U5YTFkMzExY2ZlOGZhYzIgbGVnYWN5LXRydW5rCiszMTg3IDdiNGYyODMzZmQ5MDJiYzU1OGEyMWJhMWNhMTg0YjYxYjgzYWU1MTcgbGVnYWN5LXRydW5rCiszMTg4IGY5OTMxOTdjM2E0NzZlNDljMzdlM2Q5YjQ0NjU2MzQ0ODA3YjkxNzkgbGVnYWN5LXRydW5rCiszMTg5IDU2ZDYzY2FiZGJhN2VjMDg1NWZlMjQwZDFhNTRjYTJkNmNjYTE4YTEgbGVnYWN5LXRydW5rCiszMTkwIDUxMzk0MGViNGQ3YjY5OTFiMTU1NmZkOTdiZmNiYWJiYmY5ZGQ1ZTQgbGVnYWN5LXRydW5rCiszMTkxIGVkNDU2ZTkxZDk1YWU4NTQ2NzQ1OTllOWI2MzMzOWJiOTZjMWE2YjkgbGVnYWN5LXRydW5rCiszMTkyIDJmOTgwNWM5NjNlODUzNjQ4MDdiOGVhMTdlYmIzY2YzNDFkMmFlZDQgbGVnYWN5LXRydW5rCiszMTkzIDlmMGZiMTE0YzFlNTRjZTU2M2U1NDMzMGZkN2QxOGMwNWRmNGNlZjcgbGVnYWN5LXRydW5rCiszMTk0IDdhMTFhNzBmN2Y0NGRjY2Q0MmVkZDFkOWIyOTZmODc1MjNjYmExODIgbGVnYWN5LXRydW5rCiszMTk1IDQzMmZlN2YwODM3YzRiMjVhNzRjNDJmYTRiZTM1YjUyZjk1NTJjODYgbGVnYWN5LXRydW5rCiszMTk2IGZiYjg0MGY2NGJmODk1NjdjYTZjOTNiYzBlNTBkNWVhZTVkZjFkZjUgbGVnYWN5LXRydW5rCiszMTk3IGJiZDAxOThlYWU1YmYxOGZhYWMyNzRjNjdlMjUzNGNkZDdlODNhNGUgbGVnYWN5LXRydW5rCiszMTk4IDVmYjNmNzNhNjI3ZmNlNTllZDBlMThjMzBlMWVlYTZhN2FkOGZjZDggbGVnYWN5LXRydW5rCiszMTk5IGJmZmVmYmZjZWI2MDU0M2MzNDhhNmZiOTk4NDFiOGVlM2M5YTdkMjUgbGVnYWN5LXRydW5rCiszMjAwIDUxNmI1YTE2YWM3NzE4ZDZlMTdkYTIxYTA2ZWYzNDNkM2I1NjlmNzkgbGVnYWN5LXRydW5rCiszMjAxIGIwMDQzOGYyNjVlZDhmOTYyMmRhYWUzYTZlMGEzMmFhZDY2MzQ5MDQgbGVnYWN5LXRydW5rCiszMjAyIDZhYTBlZTE0YWMyZWQ2MDZhMGU4YmM4YTY0NjA0Njk4MGJiNDQ5YTMgbGVnYWN5LXRydW5rCiszMjAzIDBlZTU5YTE0ZTU0MjFmYzliNDMyMjQyMGUwNzU2YTEzYWIzNWU3MDggbGVnYWN5LXRydW5rCiszMjA0IDNkYWMyMDRiNzRmYWZmOTM3ZjEwNWM4MjQ3Y2MxZTMyODVkZTFlMDUgbGVnYWN5LXRydW5rCiszMjA1IDU4Zjc0OGY1OGRmNTg0YmIyNjk2ZTU5OGZiYzkyYzgxZjc3ZWE0OGMgbGVnYWN5LXRydW5rCiszMjA2IDhmM2EyNTQwOTk1YTE1ZTBlMTdkZTg5Yjc3M2M3OTcxNjcwNDk3OTIgbGVnYWN5LXRydW5rCiszMjA3IGM3MmVlMjljY2NkMDE4ZmQ3MzcyZjZiZTQxMjQ4NjkyNjNjMzcxOWUgbGVnYWN5LXRydW5rCiszMjA4IDEwZjEwZDQ1NDJmYWVkODU0MmU2YjU2ZGZhOTE4MWFlYTUyYjZjZDEgbGVnYWN5LXRydW5rCiszMjA5IGQ2ODA4ZWM2ZWRjNzM2ZTYzNDU0YzNhNWI3Yzc5ZjYxZGRlZTU4YTAgbGVnYWN5LXRydW5rCiszMjEwIDZiNWEzNGRiMjFmZTE3MzM2ODJhZTQ3ZjgyNGJmNzNjYjhlODE0YzYgbGVnYWN5LXRydW5rCiszMjExIGMxZWJmZGUzNDFhM2VjYzlhOTk1MGVmZDNlNjI5Mzc0NTVjNjUzOWYgbGVnYWN5LXRydW5rCiszMjEyIDJlZDUxMTE3MTgwOTgzODI3YjE5MTFjYjg2NDQ4ODk0NzMzZjg4ZTEgbGVnYWN5LXRydW5rCiszMjEzIGY0OWQyMzExNzc2YmI5M2RjOWQ4NWVjZTk5ODkyNDlmYzYxNmIyOGYgbGVnYWN5LXRydW5rCiszMjE0IGY1NGU2NGM4YjliNzBiYjliMDNkMzBjZjI4YTFkODM0NTI5M2FmNjMgbGVnYWN5LXRydW5rCiszMjE1IDY1MDhlYTMyYzZiMDk5OTlmYjRiMWYzNWNkZjg3ZmY5MjUyNTQyOGQgbGVnYWN5LXRydW5rCiszMjE2IGM5NTQ2YTIxMThmMDRiNmIzNjUwN2JiMzU1MzFiNDY1NzYyMTg3NjggbGVnYWN5LXRydW5rCiszMjE4IDMxNmNlNjc3YzZiMjBhNGM5MGEyODZkNzkwMDNjYjIyOTdmZGY0YWIgbGVnYWN5LXRydW5rCiszMjE5IDZhYjIwN2E1NWZjYTM0NzdmNDYxMGJkY2FhOTgyMjcwYTBiYmFmOTIgbGVnYWN5LXRydW5rCiszMjIwIDliZjc1ZTRkOWFlYzNlYWIzZGJhMDUzNTYyODlkZDQ2MGE2ODU3YTUgbGVnYWN5LXRydW5rCiszMjIxIGU2NjQyYTUzNWRiNWZjMTZjMGFmZTliMTQ2NTk2MDZjMTY4ZjkwNzYgbGVnYWN5LXRydW5rCiszMjIyIGZlMTkyNmI5ZGZmYTczMTI1NDg4ZGVkMWM0ZmRlZDk4Y2U5YmRiYzggbGVnYWN5LXRydW5rCiszMjIzIDU5MmJhYzZhZGZmYzI1NjY2MmI0OWRhZWM0ODFlMWI4YjVkYjlmNzEgbGVnYWN5LXRydW5rCiszMjI0IDRmNjY0MWRlYTY0NTg5NzhkMDIxMDE4ZGQyYTJiODg5ODdlMTZmZjggbGVnYWN5LXRydW5rCiszMjI1IGEzZmEyMjk3NzVjMTZkM2EzMmI5ZmI1NWE0ZjEzZDQwZGRmZDUwODcgbGVnYWN5LXRydW5rCiszMjI2IDBkYTE2ZTgxNDgyY2YzM2QwY2E5YjhhNDhkMjM2YzY3NDA2ZTFjOWEgbGVnYWN5LXRydW5rCiszMjI3IGFhYTNiY2NiMTQzYWFmMWI3NzE1NWM3YTE5YjYyYmEyYjE1NjdkYzggbGVnYWN5LXRydW5rCiszMjI4IDZiZTk3MDM5Y2MxMWY2MjRhMGJhMmNhNjYzYTNlYmJhMWZkYTVhZjMgbGVnYWN5LXRydW5rCiszMjI5IGI1ZDk1YWNmZDNlZTMyMzU4MzljNzEzNmIyN2JmY2Y3YjFhZWM1OWQgbGVnYWN5LXRydW5rCiszMjMwIDY5NmI5MTMyN2VhMjM4ZTUxMzE0ZDQwM2ExYjAyMWEzMWJjMGY2MDggbGVnYWN5LXRydW5rCiszMjMxIDM5M2Q1NGVjZDQzYjViOTZkNDFlYTQ4NDZmODA1NmVhMjU4YTIyZjMgbGVnYWN5LXRydW5rCiszMjMyIDcxNjJmNWFjODk5YWE5MmE2NGJjNDliNDQ1YWZkN2MxMmQ2YzU4ODEgbGVnYWN5LXRydW5rCiszMjMzIDAwMTY0NTdiZDk3YTg1YTVhNmM1YzExMzg0ZjhmM2ZhZmJlNTM1MGYgbGVnYWN5LXRydW5rCiszMjM0IDFhNTRkMzIwZjI5NjRhYTc4NWMyMGQ3ZTNkZTAyZjkyN2FhY2E2N2QgbGVnYWN5LXRydW5rCiszMjM1IDIyOTFkYTA1ZjE3ODRiZmI4NTE0ZGU1NmJkOTM5MTA4M2QxMjBjMGMgbGVnYWN5LXRydW5rCiszMjM2IDc2N2VmNzM3MGQzM2M0ZDkwOTM4YzU1MGQzM2NhZDU1ZWI1Mjg0MzkgbGVnYWN5LXRydW5rCiszMjM3IDJjMDQzMmZjYzI3MDc5ZDAwZWVmMjA3NmMwNTYzMjk2ZGI3OTMxMDkgbGVnYWN5LXRydW5rCiszMjM4IDRkYzM4MmZmNmZjNzRkMzUwZDYwYzYxMTRkNWU2NjgzYmE4YzFhMWUgbGVnYWN5LXRydW5rCiszMjM5IDk4Y2I2YTEyNTJjYjY1YjMzZmNmODIwOGYwNDBiMjJiYmY2MTMxMmUgbGVnYWN5LXRydW5rCiszMjQwIDZhYzkxNmY4Zjg2MjY4ZDA4MGNlNWVjMDA5MWQ1MmQ4YzlhYTczZmEgbGVnYWN5LXRydW5rCiszMjQxIGZlYjViMjM0YjBiNWZmYjI0MzY4Yjc0MjZiNDc5MmI5ZjI3MTRiMDEgbGVnYWN5LXRydW5rCiszMjQyIDI0NTAwM2MwMDZhNjM3ZjRmMWQwOGNmMzk3N2VjMTdkODI2MjFlNmYgbGVnYWN5LXRydW5rCiszMjQzIGU0YzZhMGRkNWMyYjI3YTdhNWZlNzg1MzI2NWViY2QwNWIzMGFjNTYgbGVnYWN5LXRydW5rCiszMjQ0IDc2NTdhNzUwOTRmMWMyMDgyYTEyZWQ1NjU5M2E4MzdiMzZkMDVlMTggbGVnYWN5LXRydW5rCiszMjQ1IDMxZGY1OGZhOThjYzU1OTFiYzFlNjIxMTFjMzIwZmFjMTExOTZjZTAgbGVnYWN5LXRydW5rCiszMjQ2IDA4ZDNjMzcwMTkzZGY3ZjY4ZGJmNDZiMzU0MmZkZjhlNDhjOWVkZDcgbGVnYWN5LXRydW5rCiszMjQ3IGYwODZkN2I0OTNiNGRmY2ZhMWM1YTdkMDNkYzNkODM3ZTYyMTU5YjAgbGVnYWN5LXRydW5rCiszMjQ4IGI3NTVhNDYyMDFmNmU3NWM3OGQ0ZGY4Y2FjNjMwNjYyMmE4ODc4OWYgbGVnYWN5LXRydW5rCiszMjQ5IDk2NWFhM2I1M2E5ZDg2YTVhM2NjNmM2ZDJlNmQ5Y2RmMDg0ZTdhNjggbGVnYWN5LXRydW5rCiszMjUwIGRiODE3ZjNhMWM2NTQ0OGE1NTVmNjI3M2JhZjgwNDRiNDQzZjc2OGMgbGVnYWN5LXRydW5rCiszMjUxIGI5ZTRmNzMyMWUyOGRjZmIzODJjYTMzNjgwMWNiZjI0NDQzMDQzYWMgbGVnYWN5LXRydW5rCiszMjUyIDM1ODI0ODk5YWFjZjgyMGFlOTBjOWExYTc4NmU3OTIwOWRkZTE5NTYgbGVnYWN5LXRydW5rCiszMjUzIDhkNjJjOTA1NmZlMTU0NDQzMDc2YWJjNmM1ZDVhODA3OGNjMGE3ZGEgbGVnYWN5LXRydW5rCiszMjU0IGFiOTI2NTM0YTE1Mjc0OTA4ZWUyYTUwOTMyMWZhMDkyYzBjZmZmZDAgbGVnYWN5LXRydW5rCiszMjU1IDZkNTdkY2I0ZmFhZGNiZTkzMzdjOTEwOTMyYWY2OWY4ZDlkZWU5ZmIgbGVnYWN5LXRydW5rCiszMjU2IDgyYzU1ZWE5MDY5ZTViNTQ4YjdjMTM2MDNjZjkxMWVlN2E4ZTYyZGIgbGVnYWN5LXRydW5rCiszMjU3IGE0Mzc2YTk5N2ZiMThiOWI5NmUyYjU3YTc4MWI4NDNhN2ZhMDAwY2QgbGVnYWN5LXRydW5rCiszMjU4IGQyYWY2YmRjYjZkMGEyNDQzNzY3MmJmYTYzNzBlMmM3MTZlZGZiYjMgbGVnYWN5LXRydW5rCiszMjU5IGFjMDgyOGVmNjhmMjliYmQxMTQyNWUzY2EwNzI0YTM2MjZkMjhkZjYgbGVnYWN5LXRydW5rCiszMjYwIGNlNzE4NDU3YjE3MjY1NzcxMTdhMDA4ZThmMGMyNTZkYzIyMjgwZmMgbGVnYWN5LXRydW5rCiszMjYxIGM2NDRiYzYyNjA5OGFkN2JmMzNhNTgyMWU3NDU1ZTc0ZGFmNjBhN2MgbGVnYWN5LXRydW5rCiszMjYyIGM5ZDJmNmJkYWE2OWJkNGYzMjMyZmU4ZmY1ZTc1MDIwNTQ4YjllZDEgbGVnYWN5LXRydW5rCiszMjYzIDNkZDdiODI1NTYxOWFhODI0NGRiMzZiY2Q5ZmFjYzYwNTdjZjFmY2UgbGVnYWN5LXRydW5rCiszMjY0IGZmMTg5OWRjZGEwNTlkZGNiMzBmZWNjYjcwMzViMmVlZWY5Yjk1YTggbGVnYWN5LXRydW5rCiszMjY1IGI3NTdlNThiYzUyNWMzOTg0ZTc3OTc2MDhhMjk4MTU2NDFhNDkzZGUgbGVnYWN5LXRydW5rCiszMjY2IDMwYzI2Y2Y1NDgwNDk2NzM1MjhlNGNkNjM4Nzg5MDlhZWFiMGIzMTggbGVnYWN5LXRydW5rCiszMjY3IGZjYWFmZDVlYzY5NTYzYzBiN2QwODBmZDY3ZTE3ZmZiNzhkOWJiZGIgbGVnYWN5LXRydW5rCiszMjY4IDQxNTRlOThkMTQ3OGI5MmRmYzQwZDg3NzZjZjIxYWVmODY0YWVkYWEgbGVnYWN5LXRydW5rCiszMjY5IDZmMmE2ZWZkMDE5ZTQ1ZjgwNzUxY2UyYmQwZDcwZDhiNDUyOWE3ZGIgbGVnYWN5LXRydW5rCiszMjcwIDhlYTU0NjA0N2YwMTE2MzAzYTg1NWY4ZTc2ZDA4MDUzNjRhMzZmZjYgbGVnYWN5LXRydW5rCiszMjcxIDkxYzE4NmEyMTZlNzA5OGM4MzNlMTE0MWUyNjIyMzQ0MzY2YjJjYTYgbGVnYWN5LXRydW5rCiszMjcyIDdmOGRkY2U4ODQ5NjFkNGI5MzUyNzAxNTIwYmRkN2VmNWY1NmNmNTcgbGVnYWN5LXRydW5rCiszMjczIGUyZjgwNzdhOTI2ZWVjMmIyMmRlNzRhOGMwMjEzMzI5YzYwYzJhMjYgbGVnYWN5LXRydW5rCiszMjc0IDFkMDZiMTQ5OWViOTMyZjM3YTJkNGY4NzAwYzJkZTgzYjViOTZmMzAgbGVnYWN5LXRydW5rCiszMjc1IGRlNzBkNzdiM2VlZDc0ZTBjMTBlYmEyODQ1YWI1NTk4YmYzMDMxN2UgbGVnYWN5LXRydW5rCiszMjc2IDgzOTllOWFhMDNlN2ZlMmU1Njc0YWEzN2JmYmM5YmQ1NTFkNmJmYTYgbGVnYWN5LXRydW5rCiszMjc3IDQ2ZDMxYTY0OWNlNjY3MzFhY2Y3MWE5ZjMzMDEzMzFlYjA2YTIyNDQgbGVnYWN5LXRydW5rCiszMjc4IGMwYWVkNWVlMTEwYmM3ZDNiMWUxNjk5ZjIwZGViOTQwODdhZDJhNzYgbGVnYWN5LXRydW5rCiszMjc5IGMxZWU2MGJkNWRlNDVhYTdhZjA0NmZhMWY5NjIxYzExM2QyNTVjZDIgbGVnYWN5LXRydW5rCiszMjgwIGMyNmY1YmVjMzQzOGFkOWFjOTY1ZWFkM2MxYzczZjMyNzM4ZTc3Y2MgbGVnYWN5LXRydW5rCiszMjgxIDFhMGJlNmUzNjgxOGI4OTEyYTNmZmE0Mjg0Y2ZkZGI2MTE4ODkxYTcgbGVnYWN5LXRydW5rCiszMjgyIDU2NjM2Mzk1NzI0ZDQ5NDQ5Y2QxM2RmOTU1NDk4Y2RmMzFiMmRiNmYgbGVnYWN5LXRydW5rCiszMjgzIGZmNmUyMTczMDk5YWUzYzg1Y2Y4MWYyMmFmZDFlMWMyMmIzNTU4MzkgbGVnYWN5LXRydW5rCiszMjg0IDVlNjViMTBkZDI0ZDM5Y2QyYWNmY2Y3NmE3OWQ0ZjFiMWViMmEzMzQgbGVnYWN5LXRydW5rCiszMjg1IDc1YjQ3MmFjNWI3YmUzMmZkMzY3MGFlNjAzZTNiMDlhOGI2YTI1NTggbGVnYWN5LXRydW5rCiszMjg2IDk0ZDEyMTE2NzU2YWM3NWE5Mjg3ZTU2Y2VhNTlmYjIyNTRlZGIxMWYgbGVnYWN5LXRydW5rCiszMjg3IDA5MTQ3NGMwODMxYTdhMjcyYTJhNzczMGI5NWZhMDYyOWFiMzRlMzYgbGVnYWN5LXRydW5rCiszMjg4IGRkNzBhM2FhZDI2NjVlYWJiNTJjOGE1MzZiMGNkNjljNTM1YjJmYmQgbGVnYWN5LXRydW5rCiszMjg5IDBjY2IzNTZlODhiMTI2ZjUzZGMzYzBiMzhiMGRhYWMwNmQwYmZlZjkgbGVnYWN5LXRydW5rCiszMjkwIDQxZmJkOTJiZjFhZDgwMWExMDliNzI5YzA5ZmU3MGVjOTcxYzgwN2UgbGVnYWN5LXRydW5rCiszMjkxIGE3YmExOTEyMGY1NDc0OWY0ZjkwYjI1MTkxNWJiMmRkODdjYjY5OGEgbGVnYWN5LXRydW5rCiszMjkyIGFhOWVkM2I5ZWRhMWNhMzRhZTcxNmI1MjA1MGIwYThjNzE3MGYxZWQgbGVnYWN5LXRydW5rCiszMjkzIGI2Y2RkZmQzNDhiYTFhNTg1YWU4NzM3ZDkzNDQwZWYxNGU1NmVlYjQgbGVnYWN5LXRydW5rCiszMjk0IDNlOWVjODVhYzQ5YjZmZjU1YWY2MGQxODg0NDc5OWE1YjRiNzVhM2YgbGVnYWN5LXRydW5rCiszMjk1IGU1M2JhZjliNGI5NTUxZTU1ODhjMmZhZjQ4OTFiNTQzZGFmZGI2NjcgbGVnYWN5LXRydW5rCiszMjk2IDY0NjFkYWM5YTlmMjk3NzdiMGQ3ZjQ4ZGE5ZTg4NWFkODllNTBmMmEgbGVnYWN5LXRydW5rCiszMjk3IDlhZGQwZTNlODA0YTA1OTg3ZDRiOGE2NjcxMjkyODliOGQyMTQ3OWEgbGVnYWN5LXRydW5rCiszMjk4IDUxMTJkNDMyMTI2YjE3NTcwNDc2ZjNjZWU1M2ViY2JjNTY2ZWEwZGUgbGVnYWN5LXRydW5rCiszMjk5IDYyMzFlMWI1YjIyYjdiZWFkMjAwMWRjMjczMzg4ZmQxZDUyZGE1Y2YgbGVnYWN5LXRydW5rCiszMzAwIGUzOTMwOWI5YTBhYTZkMTY2YmMwOWRkOTI0NzZlOGFkZTFiZGEzYjkgbGVnYWN5LXRydW5rCiszMzAxIGIzMzgyNjJjZDA4MDdjNDY0NGY4ZjA5MDU2YjgwMTRjOTI3ODM5ZTQgbGVnYWN5LXRydW5rCiszMzAyIDk1MGYwMTEzMTQwM2UxNThlMzU0MzJiZDg5NTEyMGJlMzhiYzRjNTYgbGVnYWN5LXRydW5rCiszMzAzIGY0OWU4NjJmZWVjNGQ5MTc4ZDQyNDJiZTUyYzAyNmE4YzViZmRjMjkgbGVnYWN5LXRydW5rCiszMzA0IGJlODkxMjU2NDNmMjVjZjkwMTYwYTI5ZjE0YWZmNmY1YmVlYWJjZmMgbGVnYWN5LXRydW5rCiszMzA1IDU0ZWIyY2YyNjk3ZTZlNTM0ZTUyODI2ZDM1YmE1OTRhODM5MDFlMzYgbGVnYWN5LXRydW5rCiszMzA2IGUwODc3MjI2ZDYxMzhlMGVkNDkxMzBiNDczMmU0MzZkMzg0NmJjOWQgbGVnYWN5LXRydW5rCiszMzA3IGU1Y2U5ZDA0MDhkMGU1NmY3ZjQxNjg3ZDQ4NTBhZWU2ZjM2OGVlNmQgbGVnYWN5LXRydW5rCiszMzA4IGYyMGRlMTMyMjY5MjBkOTM4YTc5MTExMGE2ZjQ3Y2MzNGU2NzFjNjkgbGVnYWN5LXRydW5rCiszMzA5IGJiNzY2NWM0NDgyMjZmYjk4MjEyZWM1NmRhYWQ4ODBlZDg5MTBmM2IgbGVnYWN5LXRydW5rCiszMzEwIGE0MTY0OTNkM2E0YzJmM2IyNDcxZmIwYjkwZDg4ZDZjNjNjOTczMDIgbGVnYWN5LXRydW5rCiszMzExIDNjNmE1MmQyNTQzZGMyZDA1MmIwNWNjZDFiM2QwMjc5NjU3MWMyYzUgbGVnYWN5LXRydW5rCiszMzEyIGZhNjJmYjBlNTViMmQ4OWJmZmZmNDY4MDcyOGFhZDNjMjlkNTYwNDUgbGVnYWN5LXRydW5rCiszMzEzIGM3MmVjZGIzM2FmNzU3OTFiYzQ5NmJlYjhmYzk3M2FkZDcwYWFmY2QgbGVnYWN5LXRydW5rCiszMzE0IDg0NjdiMTE5MzUwYmViYzY3ODRkNzY5NTRmZjcyODdkNmQ4ZmVhYTQgbGVnYWN5LXRydW5rCiszMzE1IDE5NGFmMDRkMzQ0YjA4MDZiOTRlMDEzMjJiYjZkMDZhNjAxNDVkMjYgbGVnYWN5LXRydW5rCiszMzE2IDY1ZTQxOTlhNzk4MmZiMTlhZTFlZjMyYjU3YWExN2RmMzExYWU2YTIgbGVnYWN5LXRydW5rCiszMzE3IGQ0NDgwYzA4NDQ0ZGM1YjYzNjQ2ZWYwNGQxODQzZDZmYzNiY2YxZDQgbGVnYWN5LXRydW5rCiszMzE4IGU4MmFjNDUyZDU1MWRkN2NmOTUyM2I3ZTBjZDBhMGEzMGM4NzYyZTggbGVnYWN5LXRydW5rCiszMzE5IDI5ZDJlZjBjOTRiOTUwNGRhOGY4MDkyNTY0YzdhYjZhOTgxODI4NjQgbGVnYWN5LXRydW5rCiszMzIwIDIzZWIyNzczMWQ5Y2IzMmFkOWE5NGIxMmVhNjg4ZTQyNGQ3NGZlOTUgbGVnYWN5LXRydW5rCiszMzIxIGYwZWI3N2FiZjI0NDM2YmJjZDc0NmM5MDMzNzA2OTRkNzIxYWNmOWMgbGVnYWN5LXRydW5rCiszMzIyIDEyMDUxOGVmMzZlMzNhNDdjMjk0YWE5ZTE5YjZmNWZmMGI3ZDYzYjcgbGVnYWN5LXRydW5rCiszMzIzIGRlZGQ0NGViNzM1YjNmMTY1MTJiNGVjZGY2OTNlYWE4MGY2ZDc5YWYgbGVnYWN5LXRydW5rCiszMzI0IDUyNDQ4MjdkZDQyMzgxN2E4MGJhNTYyNDBiNmUzMWVlMTE5ZDhiM2QgbGVnYWN5LXRydW5rCiszMzI1IDliN2Y5MGY5ZjNjMTUyOTk2ZWJhNmNlOTQwYjIzYWE3ODFjZmI5M2UgbGVnYWN5LXRydW5rCiszMzI2IGZhYzYyYmNkM2JiOGRlMWNjZTNkNjlmMzFjZTdmNzhhM2UzYTA2NzMgbGVnYWN5LXRydW5rCiszMzI3IGVkZGM1NGIxZDlhYjhiNjc1OTczYzA1ZmM4NDM1NjE5MGY1MzRjNGYgbGVnYWN5LXRydW5rCiszMzI4IGYwNzg0YWUxZmY1Y2FjYWY4NjVkZDZmM2IxNGUwNWM1NTJiZTA3ZTcgbGVnYWN5LXRydW5rCiszMzI5IGQ5OTBjMmI4YTFlNmQwOWIwNDA2ZDdjYjNiMzkxZDg5YWY2MWM5ZGIgbGVnYWN5LXRydW5rCiszMzMwIGE3Y2YyMGM4NDVhM2E0NmU2YzM2NTUzYjE3ZjU1Y2MxNTE1ZWMyZmMgbGVnYWN5LXRydW5rCiszMzMxIGE0N2UwYzliYWFkMDA4MjQ5Y2I4ZDViNzZhZTNjMTAzMjMyOTc1ZTIgbGVnYWN5LXRydW5rCiszMzMyIGMwMWM5NWVmMWZiZGE4ODRiNDAwMmY4YTNjYmUxYzFkM2NhNjQ5OTggbGVnYWN5LXRydW5rCiszMzMzIDU3NDVlNTVmMmUyODBmMTA5ODRiZTg5MmYzMTIxMGI3MTlhMWU5OWQgbGVnYWN5LXRydW5rCiszMzM0IGJiNTRmZjQxMzQ4Zjg3OWJlMTgzZjBhNTg1Y2U3ZGE4ODYyOTU5ZTEgbGVnYWN5LXRydW5rCiszMzM1IDljMWFlNjA3ZDEzNTM4MDZlYWFiYjdjYjAxN2M4Njk1NzVmMjJlNzQgbGVnYWN5LXRydW5rCiszMzM2IGU3MWI2NDdmYTMzNTZmNTBjZjRkMjg1NGQyNmEzZDVjZWRhM2FmYzIgbGVnYWN5LXRydW5rCiszMzM3IDk1NTIxMmVkNTJkMzdjNzQ3Zjk3NmRlMTU3MTZjMTA5OGFiYjRkNGQgbGVnYWN5LXRydW5rCiszMzM4IDg2MDRjMzk0OTgwOWQ1MTMxZjJlZDMxMGQ3ZTA3MTViNDQ4MzhmNDEgbGVnYWN5LXRydW5rCiszMzM5IDcxN2VhMTc2NzQzMGJhZGE4MjE5MTBmMDA4ZjJmMGE3MmM2OGQyNzEgbGVnYWN5LXRydW5rCiszMzQwIDI3MTU0YTJiOTI0NDAyNzAzMGNlODM0NWVhODM1NTRjZmRkYTZmNWYgbGVnYWN5LXRydW5rCiszMzQxIDUzM2UzNmRlMWU0ZGY2MTk1YzVmYTU3Y2U1ZjQ4NmI5YmVhZTE5M2MgbGVnYWN5LXRydW5rCiszMzQyIGY5YmJiMDEzODhkNWJmM2NiOGU3MWFmNDEzZDNiYWVlYzNiY2VhZGMgbGVnYWN5LXRydW5rCiszMzQzIDlhZTY1ZWUwOTczNWQwNzIyYTYzZGIzODgyMjgyYWVkMTk3MmEzOTQgbGVnYWN5LXRydW5rCiszMzQ0IDFkNmNiZWIyNzA5NjI3MmE5Y2VkMzgxNWFmMWEwY2I2MTE2ZDIyZGYgbGVnYWN5LXRydW5rCiszMzQ1IDk1MGNkMzdmY2RkYzU0NzdkYmNiMDhjZjIyOGM3ZjgwMDE5OTFhMWUgbGVnYWN5LXRydW5rCiszMzQ2IDY0Y2YxOTFkMjFkMDhjOTMxMmY5NGEwZThhZjUwZDFlM2MyN2YwMTQgbGVnYWN5LXRydW5rCiszMzQ2IDY0Y2M1NDM5ZTEwYTZmZGY5ODRlZmZhZjAxNDFlOTRmYTRjYzEwMDQgbGVnYWN5LXRydW5rCiszMzQ4IGNmOGRkYjI5ZTI2ZWRhZmFlYTBiNTBmYjJmOGI0YWI4NTIyZTEyMzkgbGVnYWN5LXRydW5rCiszMzQ5IDBlZmVmOTc4NWEyNWQ3ZDlhYWUyNWVhMTJhMDBhYTg0MTZkYWMxOTEgbGVnYWN5LXRydW5rCiszMzUwIDk0N2Y4YTM0N2M0ZjE3ODllOGM4OTM3ZTFkNTVmNGE5Mzc3ODk2NTUgbGVnYWN5LXRydW5rCiszMzUxIDZhMDc3YzI5Mzk4NmMwYWQ3OTcxY2JmNGNlNmMxODQ2MDdiODZmNmYgbGVnYWN5LXRydW5rCiszMzUyIDU4NGM0MTQyYzUzNzlmM2E1MzdiMjdhOTk1M2M5MDYyZWYyY2FmNWUgbGVnYWN5LXRydW5rCiszMzUzIDg0N2M0ODM1NjI4ZmE4ZjExYjM4ZmQyODlhNzEyOTIyZTQ2MDNiMzcgbGVnYWN5LXRydW5rCiszMzU0IGVhOGQ0Y2NlNzgyYmJmYWRmMGUyYzkxNWM4MmRiMjYyZjQ5N2NhMWYgbGVnYWN5LXRydW5rCiszMzU1IDM4ZjAwNTRmNDRhNzFjNmY3OTAxZDViZjEwNDVlNTM0OWNlNzM0MTYgbGVnYWN5LXRydW5rCiszMzU2IDc4NDI4MjQzZmVhYTc1MjA5ZGE3Zjk5NmQ4MDY4OGE1YTg4ZGEyZmMgbGVnYWN5LXRydW5rCiszMzU3IGI3YWVlNzk5ZGM3MTVhZDFiODRmYWZhYzM1ZWE3NzU1ZjkwNzdiMDAgbGVnYWN5LXRydW5rCiszMzU4IDMxMDUzMjAxNWE3ZDM1OWJmZTc3NjBhNTVhYzQzOGI0ZWYxMDgzYjQgbGVnYWN5LXRydW5rCiszMzU5IGUxMjA5MzZhMGM4N2Y5NTE1YzE0MDE4YWJiZTZlZDFhMWQ3MzYxZjEgbGVnYWN5LXRydW5rCiszMzYwIGNlNjdkOTFhZGY1ZTdlMDY1ZGIzNWFhMGRmZGJkMzQ1OTEyNGZmNzMgbGVnYWN5LXRydW5rCiszMzYxIDY3NWEwMjgyMGQ2NmUxNDBlMmE1NTgzZGY2MjllODJhYmU3NTRmNjQgbGVnYWN5LXRydW5rCiszMzYyIDI5Mzc4OTdhN2Q4YjAzODc5MzYwODRmNDI0YzY5YWI1YTMxM2EyOGYgbGVnYWN5LXRydW5rCiszMzYzIDcxOGYxZDliY2I1MDRmMjU1Y2Y3MzY4MTk3MTM1YThhZGZkNDk0OTUgbGVnYWN5LXRydW5rCiszMzY0IGU4MjIzZDBiNzJhYzUxOTYwYmYwOTMxZTk2YzAyYWM1NzFjMWQ3YjUgbGVnYWN5LXRydW5rCiszMzY1IDBkNzk5ZDNjNDAzNmU3ZjhiMTY5NTAzN2EzZTcyODI3MTY1YmI1Y2YgbGVnYWN5LXRydW5rCiszMzY2IGQwMjIyMWViYWMyYWQ3YzhiMDkxOGQ3OTY1OGFhZGRmNjVkZWQyMWIgbGVnYWN5LXRydW5rCiszMzY3IDgzMWQ4MmFhNGRkMDgxODlhMThmMDIwMTM3OTVlOGMzZDI1YjE5NDEgbGVnYWN5LXRydW5rCiszMzY4IDM1NzNlZjQyMWJmNDExMDdiZjcxOTllNWVhZjFiMWI0OWMzYzE4OGUgbGVnYWN5LXRydW5rCiszMzY5IGVjZmJjMjQ2ZWVhYTEwYzQ4MzQzNWM3YmQyMmY2ODAxYjYzNTE2YTIgbGVnYWN5LXRydW5rCiszMzcwIDNkMWY3MDg3OWYwMzA0MTRiYWRkOTg5ZDIwNTVkMjU1Y2UzYTA5YzAgbGVnYWN5LXRydW5rCiszMzcxIGI1NjRiZDRlNTdlMTM1MzQ0OTcwMTk1NTYxNTlkNWY0N2NiYjY5ODkgbGVnYWN5LXRydW5rCiszMzcyIDliMTRhNGQ4OTIwNzNjNjA4OWQ4MmViOWRjYmY0MzhjOTBlYjhiY2MgbGVnYWN5LXRydW5rCiszMzczIDlmZTc4M2NhOTc2ZTJmOTFhZmU3NjA2MjFjOTlmNDJjODhlZDNhNWMgbGVnYWN5LXRydW5rCiszMzc0IGJiZWYyNDczZTU2OGQyOTI4NzE4MTBlYzU2YmY0MzU3Y2ZkMDdhZjQgbGVnYWN5LXRydW5rCiszMzc1IDQwNjg2MGRmYWFjNzhiNjA4MTRhOGU3NjIyMWNhYWViMDZmY2ZmYjEgbGVnYWN5LXRydW5rCiszMzc2IDVhNDEwOTQ0MWVhZTAwOTUxMjU4YmM4YWM2MDE2OTJlYWJmYjA4MWQgbGVnYWN5LXRydW5rCiszMzc3IGZhNmNlN2Y1M2FhNTAxOGE5MGU5MDZmYWIyNmRkYmY0NDcwYThhNmYgbGVnYWN5LXRydW5rCiszMzc4IDQxNmE4YTg4NmE4MmFhMmQzZjU2ZWE5Y2U1YzIzOTg0ZDc5YzAzOGQgbGVnYWN5LXRydW5rCiszMzc5IDlkNmNmNTI5YmI3MWE3ZjRmZTk5NzU5ZGQ2Nzc3MGZmYzA1NTViYmQgbGVnYWN5LXRydW5rCiszMzgwIDQ5MmY1ZTNlNjQ5NTU1OGQ1OGM4Yjk2ZmQ1ZDgwYzM2N2NhOTgxM2IgbGVnYWN5LXRydW5rCiszMzgxIDFkN2E0ZWQwYzk4NWY1ZWY4MjIzNGJmNWZmYzk4NDU5OGM0MGI3ZmMgbGVnYWN5LXRydW5rCiszMzgyIDUxMjIzY2U5NWE2MTk4NjYxYzlhMjgzMzIwODM4NGM5NjljMTJlYTQgbGVnYWN5LXRydW5rCiszMzgzIDY0ZWM3YmQyZTgzNzM3YTczZmM4OGI4YjMwMzExOWUwZGJjODEwYzIgbGVnYWN5LXRydW5rCiszMzg0IDgyZjRhNmExOTY0ZGVmNjFlZDAyNDE2NzU5YjEyMjdmNDQ3MWViZjIgbGVnYWN5LXRydW5rCiszMzg1IGFkNmQ1YzFlZjVlNjFhMjkwMDZlYjU4ZmZjMjg4ODIwZWYxNGIzMmIgbGVnYWN5LXRydW5rCiszMzg2IGNlN2FlOGY4MWIwNjE4MjQ0MTMzOGZiOTA2NWVkNWMzMmRhNzE3YjYgbGVnYWN5LXRydW5rCiszMzg3IDVhZTRhOGNmNzllZjMzZWI1YzI5OTczM2UzNjkwODAzNzg2YzA0ZDQgbGVnYWN5LXRydW5rCiszMzg4IDdlMjc2NTllYjJkOTY2OTgxYjliOTJmZTdlYTc2OTMyNzYyOTA1NDggbGVnYWN5LXRydW5rCiszMzg5IDI3NTNlMmM5YWEyMWM5YjZhYTg0ZTkwNTY5MmI5MDZlOWRkMWJkMWYgbGVnYWN5LXRydW5rCiszMzkwIDA2NTliNjNkNjA0NDdkNjMzNmVlZDJjYTY5OTQxMzc3MjJkMGZkZGUgbGVnYWN5LXRydW5rCiszMzkxIDIwMjZlYzAwZWZkY2Y0MGM3NWNjMDM1OWMzY2FiZmIzYjJhM2RmMmIgbGVnYWN5LXRydW5rCiszMzkyIGYwMThkMWQwZTkxYTVkZjc3YjQxOTkyM2U5ZTc3ZTJkMDAyYjEzN2YgbGVnYWN5LXRydW5rCiszMzkzIGRjZTdhNGNiYWMxMTJmZWU1ODlhMjg4MzdjMzIyNjIyYjc2YjhjZmMgbGVnYWN5LXRydW5rCiszMzk0IGUwZjdmZjg1ZmEwNjUzODM3NzE0NDVjZDNiMTBkNGVhZmZkNzcxYWQgbGVnYWN5LXRydW5rCiszMzk1IDI2ODhmOWJlYmQ5YTVhNWNhYTZiNTQ3NTVjOWM3ZTRkOWI2YjU2M2EgbGVnYWN5LXRydW5rCiszMzk2IGFmY2JhODhjNmFjYjc3ZGVmZDhkOWI4N2M0YWZkMDJlYTg5Mzg4OWUgbGVnYWN5LXRydW5rCiszMzk3IGIzZTZhNDM1YzQ4ZmUyN2JkY2ZlOGM5NTZiYTcwY2VmZjQwMjY4MGMgbGVnYWN5LXRydW5rCiszMzk4IDU4NmM5MjhjNjVkMzRkZThiOTdlOTMwMzcwYTI1YjE2YzBjZjc1NzggbGVnYWN5LXRydW5rCiszMzk5IDg3ZWQwMGE2MmQzMTAxMzg1M2M1ZjNkMzA4MDRkNjM5YjlmNmU5NzIgbGVnYWN5LXRydW5rCiszNDAwIDY4MDQwNmM0MTUzOTE2ZWJiNGQyYmIxZjQzYmU5ODczOGU2ODhlMGUgbGVnYWN5LXRydW5rCiszNDAxIDA1NTgwZTAwZjQxZTJjNzVkNzljZmU2NzA0ZTk2YjZkMDgxNWU3MGQgbGVnYWN5LXRydW5rCiszNDAyIGQ0MjZjNWQ1OTI1NGE1MDE2NGQ3OTc4MmY1MzVkNDFlNTM0NTllYWYgbGVnYWN5LXRydW5rCiszNDAzIDBjNjU3ZGIyN2RiZjY0ZjlmODg4NGU3MGZiODM3ZjIzMzZhM2MzMDkgbGVnYWN5LXRydW5rCiszNDA0IGU2MDM0ZWRjNDdhZTVjMmVkNzVhMjdlM2M1OGY1NjkwZDFkNmIzMjEgdW5sYWJlbGVkLTEuOS4yCiszNDA1IDViOGVjOGY3MTFjZWYxMDcwODFjY2ZiYzQ0MmY0NTY1YzBiMGRkODYgbGVnYWN5LXRydW5rCiszNDA2IGE3NTkzYmE5OWRjYmFiZGUyNDE2MGU1YTJmNWU3MGI4NmJlN2ZkN2QgbGVnYWN5LXRydW5rCiszNDA3IGU1NTcyNGZiYzJhZjdiMGUxMTY3MTUzOTNkNTYzMzJjODhlZDMzOGEgbGVnYWN5LXRydW5rCiszNDA4IDhmMjQ2Yzg5ZGRjZWI5N2VlNzdmZTZlZmI5MGM5Yjc3NjQyZjc4ZjcgbGVnYWN5LXRydW5rCiszNDA5IDkxYTc3MDg3ZTgzZjIxYzRlNTJjY2E2ODczNDk1NTE4N2Y1MDg1NWMgbGVnYWN5LXRydW5rCiszNDEwIDFhNmJhMjNhZTQ0N2FjYWUwYTVkYTk0MzkwY2U3Y2FiOTQ5ODM4MGMgbGVnYWN5LXRydW5rCiszNDExIDkxMWI4MDE3ZGE0NmI2MzI4ZjI3YzU2ZGZmMWIzYTM2MWE1NjE1MzIgbGVnYWN5LXRydW5rCiszNDEyIDZiM2I3NWYwN2NiYjdiODI2ZTBiNjE3M2NkYzRmZTljZTkwOTI3MDMgbGVnYWN5LXRydW5rCiszNDEzIDc4Y2IwYWNjZmIwY2VmMjlmZmEwMDdmYzk0MzhlYmE5NDc5YzY4NmQgbGVnYWN5LXRydW5rCiszNDE0IDkxYzFmOTRiMTdiYzExN2E4MWJmZjZiMTI2M2U0YzE3YmM1MWVmNzggbGVnYWN5LXRydW5rCiszNDE1IDQ5YTdhM2MzZDg1MDg5Y2YwODk0MjhlNTk2ZTU2ZTVhM2JlZDRiZjAgbGVnYWN5LXRydW5rCiszNDE2IGNhMTcyOGM0YmQ3ODg0NmY2MmRmNzgwNzJhNjcwNzgzNjkzYmZmNGUgbGVnYWN5LXRydW5rCiszNDE3IGM0Y2QwZDlkODI4MWRiNTMwOTY1MDAwNzJiYTA0N2ExZDdlOGI0NGEgbGVnYWN5LXRydW5rCiszNDE4IDY4NWIzMWZlODljNjBkMDI0YThkYTAzY2ZhZTRmNWRhODEwMGI3MTkgbGVnYWN5LXRydW5rCiszNDE5IGJiY2VjMjRiMjQzNzc2ZDliYTQyMzkwYjc0ZDExNDE0YzE3YmYzM2YgbGVnYWN5LXRydW5rCiszNDIwIDQ5NjMwMTIzYTNmMzQwMzdlOGJiZmEzMWNmNWQ3ZGQ5YmZiYjI1ODMgbGVnYWN5LXRydW5rCiszNDIxIDdhYTk2MTNmZmQzNjMxMzYyMGU5ZDAxZDJiOWRmMjA1NjY5ZTBmZWYgbGVnYWN5LXRydW5rCiszNDIyIDFjYWJjMmI2Yzk3MDFhZWEyOWJiNTA2YjU5Mzk0NmU2N2JmNzU5M2EgbGVnYWN5LXRydW5rCiszNDIzIDZiODY4OGU2YTdlZDZlYzVmNjM3MjM2OWNiYjc2NDczZmMxYjc1MzMgdW5sYWJlbGVkLTIuMy4yCiszNDI0IDZkODBlMWY4ZjcwYTU4MGI3ODkwN2FmZmE0NTRmZTUxNzYwYmEwMjMgbGVnYWN5LXRydW5rCiszNDI1IDQ1ZDcwODUyMTE4ODE5NTljYWE1NmNmMjY1MzAwMWIyM2UxYmYzMjAgbGVnYWN5LXRydW5rCiszNDI2IGIxMjBjZGQzMGZiY2E1OTFhNDQ3M2JkMTFkYzBlMjliZWUxMzE3YWMgbGVnYWN5LXRydW5rCiszNDI3IDJjNTE1ZjA3MzY3YWQ0MTQ3ZTFhYTM5YmJlMzdlZDEzYzFlMjE2Y2YgbGVnYWN5LXRydW5rCiszNDI4IGY4MjBlNjkxN2YwN2U1MDEyYmRkMTAzZWY5NzM4OTMxOGQ1YTEwZjggbGVnYWN5LXRydW5rCiszNDI5IDY1YTFlNGU5Y2Q1NDZjNGU1Nzg3MzBhODhkZGFmMjM0YmU0ZDQwNDIgbGVnYWN5LXRydW5rCiszNDMwIDZjNThkYzFkMmY5ZDIwOGE5MTA2ZDQ0NDhjMjlhOWE2YjZjMzM4MTQgbGVnYWN5LXRydW5rCiszNDMxIDE4MTFlOTYwODBkNDQyMmRlZWIxOWY5MTlkZWViYzdiNmQzZjRiZTAgbGVnYWN5LXRydW5rCiszNDMyIDg5ZTRiMTY2NjE3ODljYjM2OGU0OGUzZGU5MTE4NjllMzk0ZmUxMDIgbGVnYWN5LXRydW5rCiszNDMzIGQwMmNlMzBkN2RkYmM4N2JkZTYzMzIwOWZkYWZjYjEyYmZhZTI4YjcgbGVnYWN5LXRydW5rCiszNDM0IGY1ZjczYzk0NjNhODZkMjY3OWE2NjkyNDcyYTdhYmQ3ZTI3YTYwY2YgbGVnYWN5LXRydW5rCiszNDM1IDI4OTQ4MTgxZmIyZjc5NWY4ZWZmYTU2MTQ0ODYzNmFiNzAxNDQ1ZWMgbGVnYWN5LXRydW5rCiszNDM2IDE0MzY5YTVlNjE2NzkzNjRkZWVhZTlhOWEwZGVlZGJkNTkzYTcyZTAgbGVnYWN5LXRydW5rCiszNDM3IDI5MTliNDQ4ZTM4NThhMTA4ZTc0Yjk2MmI3NDgwOWUxNzYyYWY1YmMgbGVnYWN5LXRydW5rCiszNDM4IDdiNzQxMWY5YjExNmYwMGMyMzRhMzI4NmUyNmYzY2ZhNjZhMGRmNzEgbGVnYWN5LXRydW5rCiszNDM5IDY5YTA2NmI2YjFmZjRhZjUxMTYyNjVkNjlhNDEzZDFiZmMzYWRjODggbGVnYWN5LXRydW5rCiszNDQwIDJjNzQ5NjBkNmFmZWYxMzZmOWE4YjQxMTdmNWUwYWM1YmNlNGM3Y2UgbGVnYWN5LXRydW5rCiszNDQxIGJjYTcxZjJlMmNiNGVlNjY0NjE4ZDA1MGMxN2ZmZDdmMjgwMTZhMzkgbGVnYWN5LXRydW5rCiszNDQyIGY3NmI3YmE5OWQzZWZiNTE1MjM3ZWQ3NDdiY2NiOGRlNzQ0NDJlNTkgbGVnYWN5LXRydW5rCiszNDQzIDg3MTQ2ZGMxZjc5YzViN2NlOTgwYWY4YWY3MmJhYzFkY2NmY2I5ZjAgbGVnYWN5LXRydW5rCiszNDQ0IDNjYTQ1NmY0NGJmM2VmMzZhOTc0ZGQ3NWU4YWRkYjljN2I1Yjc0ZTUgbGVnYWN5LXRydW5rCiszNDQ1IDllNDIwNmY2NGQxYjUxNDdmZDA3ZTMyNzEyNmI2YzJiYmU2ODllMWYgbGVnYWN5LXRydW5rCiszNDQ2IGFmMjdhODMwMGQyNDA5NGFhZmE2ZWU3NDZkZTU1NjdiYTliY2M0NDcgbGVnYWN5LXRydW5rCiszNDQ3IGM2MGNiMDU5YzQ4MWU0YTk0ZDU5NDY0NjlkNDI5YTI5YWFmZjhiNWQgbGVnYWN5LXRydW5rCiszNDQ4IGUwNDY0ZTcxMTVjYTJiZjljODBjOTVmNDQ2YTZkNjRkZmYyODNmMDIgbGVnYWN5LXRydW5rCiszNDQ5IDkxODFkYTQwNjk3OGM4MWRlZDE5MDJiOTRhMGNkOTYyYWQzMTkwYjkgbGVnYWN5LXRydW5rCiszNDUwIGRiY2U3MmFmZTI2MTUxNmQzNTYzY2QxNzIwZmFjMjM2OTY4ZGNhNzMgbGVnYWN5LXRydW5rCiszNDUxIDZkN2ZkZWM5ZDQ5ZTI4NDNiNDdhZTYzNDUwZDYwOWYzNDM1NzQ2NTkgbGVnYWN5LXRydW5rCiszNDUyIDMzZjNkN2ViZmNjMWIwMWU3MTY5Yjc2MzBhZWRkNTc2YThjNjdhZDYgbGVnYWN5LXRydW5rCiszNDUzIDY3M2RkOWJiZGJmMTUxMWFlOTAwOTI3MDFhZGY5MjBhNzYzYTI2MzAgbGVnYWN5LXRydW5rCiszNDU0IDlmZWQ1NzI2YTM2ZDdjZTEzNTVjMzA1OTI4MzhkOTMzMjFkNTgwZWUgbGVnYWN5LXRydW5rCiszNDU1IDRkMjkyYzc4NTdkNDc0ZmFlNWVjOTA5ZWRkNDM0YmNlZDA4YjgzNjQgbGVnYWN5LXRydW5rCiszNDU2IDc5NzFmZWNiZjI4ZTdlMWUwOThhNzk3OTY0YTZkYzAwM2Y5ZWM0ODYgbGVnYWN5LXRydW5rCiszNDU3IDUxN2QyOWViYzg0MGRlNDViM2M5NDU2MDkzZDg0MmExYjMxYzEzYmIgbGVnYWN5LXRydW5rCiszNDU4IDU3YjgwYjk4YjhlNTA3NTJjYTQ1NzcwNDNkODQ3YWNkY2VhOTA5NWYgbGVnYWN5LXRydW5rCiszNDU5IGFjM2M4MGFiYmY0MzAwMzQ5YzVlNmUzMzg1MzBiMjlhZTBmYTM2MDQgbGVnYWN5LXRydW5rCiszNDYwIDY3MjYxYzc5MmY0YzE0ZmJjYjEzZmZiMGI1MWE4MzZjMmFkNTEzMGEgbGVnYWN5LXRydW5rCiszNDYxIDQ3NzNkNWMzYjVhNDZkZTBmNmNmZGJjNmMwM2MxNGQyN2U5NDg4NWIgbGVnYWN5LXRydW5rCiszNDYyIGMzZDA5Zjc2ZDZiZjQzOGY5YzdiMTNmYzZiMTE2ZjBiZDVlZjgzOTEgbGVnYWN5LXRydW5rCiszNDYzIDkyMzRjOTYxZWM0M2NhMjg1N2UzODEwMzI2NzBkZTk0NTJhNWM5ODQgbGVnYWN5LXRydW5rCiszNDY0IGRlYTc0NDJjNWY4N2M2ZTFkMGEwOWFlZjViMWIzZWFhODcyODg0NzQgbGVnYWN5LXRydW5rCiszNDY1IDA0YTdmOWJmMWU2NzJjNGY3ZGU1MjdlODg5MDQ1ZTYzM2QwZDA3YWIgbGVnYWN5LXRydW5rCiszNDY2IGM2NGFmNTY3MWNjNjk1ZTYyYjM2NGQ0MzIwMjIxZjlhOGQ4ZjZlNTQgbGVnYWN5LXRydW5rCiszNDY3IDM5Yzc2NmE2ZWQ1ZjlkYWIyMjk2NGU5MWQxMjUwNzhkODBmNDU5NGEgbGVnYWN5LXRydW5rCiszNDY4IGNlZjUxNGY5OTc0Yzk4M2JkZmFmMWU2ZmY2MjY1NWJjNjk5ZDQxMWYgbGVnYWN5LXRydW5rCiszNDY5IGJjYTc4NTVkOGUwOTNmMDlmNTVjYjBhMGYyYjkxMGFiNjdmZTMyZTQgbGVnYWN5LXRydW5rCiszNDcwIDIwOTA1NWU1ZTQ2YTQwZDIyNmNmZjVjNDYyMzZjODA1YzkxMjY3ZjQgbGVnYWN5LXRydW5rCiszNDcxIDZlMzdhZjNmMjYxYzM5YjkyZmU3MjFkYWI0NDIwYjljOTc0MWY1MWMgbGVnYWN5LXRydW5rCiszNDcyIDk5ZDllN2U5ZjM3NjdlODkxNDAwYmQzOGIwNGJlMTU1ZGE4YjI1MmMgbGVnYWN5LXRydW5rCiszNDczIGNmZjdjNDhmYTllMTVjZWM2ODA1OWE3NTkwN2FiYjQ0MmVlYjNmNWIgbGVnYWN5LXRydW5rCiszNDc0IDFlOGJkMzU0YjY3NjExMmQ4YjNhODRiODcyZDcyN2Q5YWE2M2UwNGUgbGVnYWN5LXRydW5rCiszNDc1IDAyYzAzYWZjNTEzZTk1ZjMxNzhlOTc3ZWUyMGYzNjU4MTA4MzhjNzkgbGVnYWN5LXRydW5rCiszNDc2IDc0N2NlN2UzNjA4NDRhMzNlYzFiMmFlYmJlODhiYTY1NDBlMGYyYWQgbGVnYWN5LXRydW5rCiszNDc3IDA4MzBjZjJiZTFkMmM1OTI3Y2MzM2FlNDJkZjhkYzZkOTc2ZTk3NjggbGVnYWN5LXRydW5rCiszNDc4IDJmNjkxZGM1NGJmYTZhODg1NWE2NDI5NDRlZWQ3NDhjNjI5ZWE4ZDMgbGVnYWN5LXRydW5rCiszNDc5IDZlZTM4MDM0OWM4NDkwMjMyOTc3ZDUxYmUyOTg0ZmM1Njc0M2QxMTAgbGVnYWN5LXRydW5rCiszNDgwIDkxOGJlZTkwZjczZTE1MjJlMTc2NjQxOTg0OTE1YTgyZmZkYTFmYjggbGVnYWN5LXRydW5rCiszNDgxIGFjZGMwYjlhNmM3ODQ4YTY5MzdhYjc5Y2ZmNGQ5MGE1NThkZDg5YzUgbGVnYWN5LXRydW5rCiszNDgyIDJmM2YyOTNlZjVmMTU1OTc2OTAwNzBjZGU5NTExZTk0ODhiN2RlNTEgbGVnYWN5LXRydW5rCiszNDgzIGVjMzEyYjY0N2ZjYmZhODk4ZmRkYTk3NDk0Yjc2M2NjOGNkNmJjMzAgbGVnYWN5LXRydW5rCiszNDg0IDkyZTZhOGNmMTRiZWU2NTU2NWVmOGFkNmU5YmIxOWZkODc4ZDkzNTEgbGVnYWN5LXRydW5rCiszNDg1IGNkMzk3MjY2ZGMxYzhlMWUxOGQwMmY4ZDlmZTkzNDI1N2ViMzYwOWQgbGVnYWN5LXRydW5rCiszNDg2IDc4NzQyYjNmZGQ0NGJhOTBlMjdjM2U5ZTFhYzllNGZiYzI5NjE1M2QgdW5sYWJlbGVkLTIuMTYuMgorMzQ4NyA5MDdjMzk5NmIxNWMyYzg1NTRiMDQyMWMzYzE5ZTY5YmVmZTI1NDhkIGxlZ2FjeS10cnVuaworMzQ4OCBhODA2Nzc3OThmODQyMDRiMWY4MzU2MGNmMTA4ZTYxNGJhYjk4NWE4IGxlZ2FjeS10cnVuaworMzQ4OSBmM2M5MDdlZmU1ZDcxMDIwMmJlNjhmNmRkNDVhNThhMmI4MzI2YTg2IGxlZ2FjeS10cnVuaworMzQ5MCBmZTc2NTg1Yzc0OGU4ZWEzZDgyZGE4NjZjZTZiNmUyYTA2MTk2M2M2IGxlZ2FjeS10cnVuaworMzQ5MSA3MTZiZTc2NWE3OWIyYmM2ZDMyZDYxM2VlMzkwOTcxNTBhN2JjNmJkIGxlZ2FjeS10cnVuaworMzQ5MiAyNWQxYzk5MzI1NTgyMmEwNzM3NmE0YjY3MjJiNmJlODY1NjIwOGJmIGxlZ2FjeS10cnVuaworMzQ5MyBlNWQzNjM1NDAxNzlmOWU2Yzk3ZjFhOGVlZjFjMWQyOGFlNzc4OTU2IGxlZ2FjeS10cnVuaworMzQ5NCA4YTM1NzRhMDdiMTg1ZDViYzJjZDBkMzk5Mzk4Y2VhY2U3NGNiYTRlIGxlZ2FjeS10cnVuaworMzQ5NSBlMmRlY2E5ODMwMDgyYjcwMzljZDg0YjU3YzgwMWMxNGM5ZGEzZGM4IGxlZ2FjeS10cnVuaworMzQ5NiA1MTljMjUwMzljNmE0NTg4YTdkZGVjZjJhYWEwYWUzOGU0ZTgzMGQ4IGxlZ2FjeS10cnVuaworMzQ5NyA0MDllYTc0ZmViMjE3YzI0Yzk0NGM3M2M0MTlmZDM2M2EyNWNhMjc2IGxlZ2FjeS10cnVuaworMzQ5OCAwNzkwMDgzNGNjOTdkMWI4ZGYxYzM3YTc4MWZjNGMxYzliODI1MjVjIGxlZ2FjeS10cnVuaworMzQ5OSBlNWZiOWNkYmUwNTA3YmIzMWY0NjNiZTJjNGExMDY0MjQ2YTM3ZWJmIGxlZ2FjeS10cnVuaworMzQ5OSA3OGE3ZWQ2OTUzMDI1ZTdlY2RkZTk1ODUwOTliMDFhNmFlNDBiNzZhIGxlZ2FjeS10cnVuaworMzUwMSBmMzg0OGY3NGIyODI3OTlmMzRhMDM4ZDFhMjhkY2E4OGM3Y2U2ODhlIGxlZ2FjeS10cnVuaworMzUwMiA0MTkyZTI0ZWM1NjJkMWUwOWIzODhjZWU3MmI4MWIyMDdjZGY4MzlkIGxlZ2FjeS10cnVuaworMzUwMyBjNDQ1NDVlNTk1YTE1Y2MwYjIxODYxM2JjZDFlYTJkZGIwZjNkNDNmIGxlZ2FjeS10cnVuaworMzUwNCBmOGY2NGNiZDlmYjVhMTliYjAwNjUxYjlmNTQ3NDgzYWFiOTI5YzYzIGxlZ2FjeS10cnVuaworMzUwNSBhYWIzMGI3NGNmNmE4ZGYyNzYxMTFkNzc5NGU0Mzc0NDU5MmQ1MTk3IGxlZ2FjeS10cnVuaworMzUwNiBkMjA3YmVlZGM4NmQ2OGJiZjNkOWVkOWFjMmU2ZDQyNmIzNDkyZWMzIGxlZ2FjeS10cnVuaworMzUwNyA2Njg4NTNkN2I2NGJjYmE0NDA5OTY0OTgzMmJjMWIwODFhYTdlYjg4IGxlZ2FjeS10cnVuaworMzUwOCAxM2QwZmRlNDg4MzI2M2JjNmQ1MjVhYzYzNjg5YTU1OGJmMjA2MzAzIGxlZ2FjeS10cnVuaworMzUwOSBmMzc5MWM0ZmI3MjQ3YjA4ZWQ2MTYxYmRiNThhOTY4ZGRjMDZkMTFjIGxlZ2FjeS10cnVuaworMzUxMCBkMGE1YzMwMGVhYWY1ZWMzYzEwMWU4OWZmMzEyNzE0YTRjMTNiZDA2IGxlZ2FjeS10cnVuaworMzUxMSAyNzk4ZDg2MDNiZjAyODczZGU4MDUwZWFjNWM4ZDI3MzQwZTllZjA1IGxlZ2FjeS10cnVuaworMzUxMiBmNDE0MzNjOThjNWViMDJlODhjYWU5OTk4ZDkzYzJiODdjOTM5NGM3IGxlZ2FjeS10cnVuaworMzUxMyA1ZDBiMjc4MWUyM2I0MGFmNTdhYzgxMmM1ZTViMmY0YzRhZDk0ZjIwIGxlZ2FjeS10cnVuaworMzUxNCBhMjJhMzUwZDNhNWRkM2NkMDI0ZDY4Y2FjZDI1ZjNiOTE2Yzg1YmJhIGxlZ2FjeS10cnVuaworMzUxNSA1ZWZhNzZjYTE3ZjJlZDEyOGM2ODIzMzI3MDU4YzhhMzdiOWM0NDM1IGxlZ2FjeS10cnVuaworMzUxNiBhM2EwMjdjNDllYjEzYzA2ODBlMzNmMTE3YjFlNWQ4MzI0ZGM0MjM1IGxlZ2FjeS10cnVuaworMzUxNyBkOWNiNTVlZjM0ZTJlNTA0YjEwZmVhMGQ4NDE3OTIwNWQ3ODkwMmU4IGxlZ2FjeS10cnVuaworMzUxOCBlMTQ5Yzc3ZDE3M2NhYWRjMDJkZmI3YjVmNTQ3YjI0YjcyNGY5MmU2IGxlZ2FjeS10cnVuaworMzUxOSA0ZDFhMTVmYzQ3NDhkNmQ5MGQ0Y2ViZTU2MjEwYWY0YzQ4Y2JhOTBiIGxlZ2FjeS10cnVuaworMzUyMCBhNjM1NWM4MzU3OGQ4ZDNlOGVmOThlNDllMDhlNjFmYTk1NmI5NDRmIGxlZ2FjeS10cnVuaworMzUyMSBmY2NkNDE1ZTJlYjhjZDBhYTVjMWFhM2ZjMTg2ZTFjZmEzNzg4OTVhIGxlZ2FjeS10cnVuaworMzUyMiAyYjU0Y2NjODUyZTQwNGE0MTcyYmM3ZWVjYzg4ZWUxMDA5NWE5YjlhIGxlZ2FjeS10cnVuaworMzUyMyAwNDNkYTE5MzAyZWYyNDRiZjU3MjFmMjE4NmNhMjc5YmNiY2Q5YTA1IGxlZ2FjeS10cnVuaworMzUyNCAyZmFjMjA5ZTFjM2Y1NTIyMTJkMjk2ZTE1NzI1MTUyOGU0NGQzMDQ4IGxlZ2FjeS10cnVuaworMzUyNSAzZTMzY2E1NGZiZGMxYzMyNjFkZDhkNjgwZGYxZDVmYTNmMDZhZDdlIGxlZ2FjeS10cnVuaworMzUyNiA1ZDc0YTk4NzM1ODk2NzQ1MGQxOTJiZTA4ZDI1OWNkYWU5ZGMyMDAzIGxlZ2FjeS10cnVuaworMzUyNyAxODA4Y2E1ZDg4ODMwOTdjNzJjNmE4YTg5MTQzMDQxYzIwZWExM2MxIGxlZ2FjeS10cnVuaworMzUyOCA3Y2Q1MzNjZjE5NGE5ZGJlYWU5MGI4NzY4ZmY1ZGQyZWUzM2JmM2E4IGxlZ2FjeS10cnVuaworMzUyOSA1NjA0MDdlYzYzMmI5ZjZmY2ViZjg5NzU1ZjM4M2QxZWI0NzJlNGFhIGxlZ2FjeS10cnVuaworMzUzMCBlMWM0NzNmOTI5YzQ3MjY0N2YwMjEwZmE2OGJmYzY4YTkwNTAyMzBkIGxlZ2FjeS10cnVuaworMzUzMSAxMzI2MDJkODU0ZDhjNDBmNGU0OTNlOWZhYTQ2ZjYyN2VjNjQxMTA2IGxlZ2FjeS10cnVuaworMzUzMiBhNWZjMTA0ODQ5YWEyMWY2MzIxZjVkOTk3ZTNhMzdmYjY1YTdkOWQzIGxlZ2FjeS10cnVuaworMzUzMyAyODdmYzMyYzFkOWMzZmIyZjIyMWRjYjA1NmEyNTM5MjliZTMwN2NhIGxlZ2FjeS10cnVuaworMzUzNCBlZTRhMmY4OTMyNTRkZDQwZTAxYzI3ZGNiNjFhNTM4ZDM5MzQ3MGUzIGxlZ2FjeS10cnVuaworMzUzNSA0YzhlNWZjYjMzMDE1OWRmMzc4ZjM3YjU4MzI4OWZhZmFhNWQ5ZGE5IGxlZ2FjeS10cnVuaworMzUzNiA4OWUxZTVkOWNjYmYwM2Q5NDg1MGYyMTZjNDE5ZDRjMTU4YzU2NTg1IGxlZ2FjeS10cnVuaworMzUzNyBmOWU1YTI4MjM2Nzc3ZTUwYTMyZjEwZGIxOTM4OTBiMTlhZjQyY2I4IGxlZ2FjeS10cnVuaworMzUzOCBmYWFmMzg0M2I4YmQ1ZDFhNmZiN2MzMzU3YTBlNDg4MDMwYTA2NGVkIGxlZ2FjeS10cnVuaworMzUzOSBmN2M2MDYxMDNkZDVlZDFlZWEzZTU3MzNlZWYxNzU1NjEzMTAwOGU0IGxlZ2FjeS10cnVuaworMzU0MCA3YmU3YTdlMGM0NjVlNzZlOGQ5N2U1NDU5ZDVmZTYzOGVjZjVjZmU1IGxlZ2FjeS10cnVuaworMzU0MSA4OWQ3ZDVlMTM2YWRkY2U3YjU4ZTc4NzVlZTI4YzRmMjZkZGQzZmY5IGxlZ2FjeS10cnVuaworMzU0MiBmM2EzMjU2NjJkMzljNjJiMDhjYjA0MWI0ZDMwNzc5MzU4OWI1YTc4IGxlZ2FjeS10cnVuaworMzU0MyAxMDVkMzMyYzI3N2M2NTE5YTEyODM2ZTI5ZWYzNTE5ZjliODZjYWFhIGxlZ2FjeS10cnVuaworMzU0NCAzNTQzY2U4OGEzMWVkODVmMmIxZGE1MmUyOTgyMzAyNGRjNTYyYTM1IGxlZ2FjeS10cnVuaworMzU0NSBiMDNkMDBlMjRjM2MxYTA1N2Y4M2M0NTdlN2Y3YTYyNWRjYjNjMmY1IGxlZ2FjeS10cnVuaworMzU0NiA3MTBjNmIxM2U4NzUwODNhNjQyZWQ0ZTQyZWZlNjhmOTM4YTZkNDE0IGxlZ2FjeS10cnVuaworMzU0NyBhNGFhODMwMTJhZjNiMjNmYWFlYzJjMDlhYTBhNmU5NTE2NzY4YjJjIGxlZ2FjeS10cnVuaworMzU0OCBjMDJiM2ZlMGIzM2MyNTllZmNkZjFmODIzNjlhZjY0MTE4MTUwY2E1IGxlZ2FjeS10cnVuaworMzU0OSBhMGEwYzc2ZjZlZjZhOGNiNTdlOGNkNzQwN2IwMDFlMzg5ZWZhZTFlIGxlZ2FjeS10cnVuaworMzU1MCBhZTRlOTBmYThiY2E1MjE4OTRiNzA4YTllMDRkMDBlNDU1NDIyYjAzIGxlZ2FjeS10cnVuaworMzU1MSBiMmM3YWFiZmE5MTNiOWJiMmY5ZjMxNzg1YjFlZjY0OWEyZjUyOTQzIGxlZ2FjeS10cnVuaworMzU1MiAxNThmMGQ5Y2RkNDBmNTM1ZGE4ZjU4NzEyMWFlNzEzNGVkNjA4YjUwIGxlZ2FjeS10cnVuaworMzU1MyA1YTMwYTRlMDU2ZTdjYzM3ZDcyZjEwYWRlMTIzNDBjODRhODgyOTY0IGxlZ2FjeS10cnVuaworMzU1NCBmOTkyYWMyYTM4ZDVjN2YzZmM1YTQ3MzA3YjYwZWRiMzM4ZDczM2Y0IGxlZ2FjeS10cnVuaworMzU1NSBkY2UzYzMwY2Q3Mjc4N2E3NDNkYjdhODdlNDYxNjk3YjI5OWZiZDY0IGxlZ2FjeS10cnVuaworMzU1NiBlOTljMjI0OTBiZmJkNGUxNzVhYjA5NDZlMGQ3Yzk5N2Y4ZjNlZGQ3IGxlZ2FjeS10cnVuaworMzU1NyBjZmZlOGQ2YjJmMDliN2VlZDE4NjdiZDczOTMwNWE3NmY0MDkxY2NkIGxlZ2FjeS10cnVuaworMzU1OCA3YzMyNDVjMTg2Nzc0Yjg0NDQ1NDBiZWY2ZDUzOTNhMzYwMTk2ZWQzIGxlZ2FjeS10cnVuaworMzU1OSAwZmZmZjQwZDEzZmY0NzBlMzkxZTg3MTljZDI1YWJjNTNlMzU1NGIwIGxlZ2FjeS10cnVuaworMzU2MCA3ZDZhMmQ5NTBmMTNjNzQwNzg1YzRmYWYyMDMzMWI1NmFhNjFiZmZmIGxlZ2FjeS10cnVuaworMzU2MSA5OGY1MWY2MWNiNGI3NmFmZjc3ZDVkMGJjMmVhYjVhOWQzNjliZTRlIGxlZ2FjeS10cnVuaworMzU2MiA0MjI5Mjc1ZGVjMzI2MTAzYThkYjQ4NjdjODczNzM1YjI2MGM2NGFlIHVubGFiZWxlZC0yLjEwLjIKKzM1NjMgYmU2MWUwNzJhNTA1YjllY2IwZjk3ZjdlMWIwZDA4YTlmZWUxY2QyYyBsZWdhY3ktdHJ1bmsKKzM1NjQgNGEyODZiMzAwYjVlZmNhZjI4MWZkYmU4YjUzMjZiMTlhZDk4ZmNjOCBsZWdhY3ktdHJ1bmsKKzM1NjUgMWNlMmMwZjU2NWVmM2U2YmFmNDQ0YzgyOGZmNzI5MjA5YmM5ZDEzYiBsZWdhY3ktdHJ1bmsKKzM1NjYgMWQ4NDE1ODdhZWRlYjA3MWE5YTU4YTI5Yzg3MGFjOGUxMThhZmY3NyBsZWdhY3ktdHJ1bmsKKzM1NjcgY2MxNzJjZTA1NTYxYWYxNmFhMDViMjE1YTA3ZDUxZjJjYmJjYzdkMyBsZWdhY3ktdHJ1bmsKKzM1NjggYWFjODIzMWE3MTVjN2NlNDg3N2VhZTZmYmM5ODFlZGI3YmMzMjdlNiBsZWdhY3ktdHJ1bmsKKzM1NjkgY2Q1OTg5YTU4YmNmZTAzMjBkZGQyYjE0YzQ2OWY3YzJiNWE0YzQ5MSBsZWdhY3ktdHJ1bmsKKzM1NzAgYWY0ZTI3MWQwN2IxZGQyZWU1YTcwNmNkYmVhNmViZWJmOTRkODJlZCBsZWdhY3ktdHJ1bmsKKzM1NzEgNjI3ODkzM2QwMmUzOGJiOGFiZGRiYzc1NDY3M2Y3OTYxN2QxYmY4OCBsZWdhY3ktdHJ1bmsKKzM1NzIgYzgxNDkzNzg4MGNjM2NjMDA2NzYwODJjYzhhOWI0YTRlNWU5ZDc4YyBsZWdhY3ktdHJ1bmsKKzM1NzMgOTBjNWUyYmI0ZGE1NWJlZGU2ZTdkOGRlNDRlNmEyYjBiY2RlMTFjZCBsZWdhY3ktdHJ1bmsKKzM1NzQgNDc0ODIzZTVmN2RjMTNiOTZkNWZkOGViOWM4MDljY2U4YWE5MDQ2NyBsZWdhY3ktdHJ1bmsKKzM1NzUgYTU4YzA2MWI0ZjU1NTI1MTc3ZDY3YTE1MmU3ZTBmOGY5M2Y0ZmVhNyB1bmxhYmVsZWQtMi4xLjIKKzM1NzYgMmUwYThhM2VlZjRhOGY5NzViMGMxMjY3MTM1MmQxMjU3N2Q2MzZiYiB1bmxhYmVsZWQtMi4xLjQKKzM1NzcgYjlmY2ZiOTlhM2U1NGI2Zjc2NjM1MDhkMTBlMGQ4MDg3ODFiOWY3YyBsZWdhY3ktdHJ1bmsKKzM1NzggMThkZjY3NDUzOWRhNTUzMDVmNmQyNmMyZGQ0NjAzMDZhMGZmMmMzMyBsZWdhY3ktdHJ1bmsKKzM1NzkgZjViMWRkZmRkYmE4MzNiMzFiNmFhZjYxZDgxMTMwNDlmMDQyMzQ4NSBsZWdhY3ktdHJ1bmsKKzM1ODAgMzE1MjcyZWM0ZDViNjNkNWVkMmU1ZjVmMDNjOGZhMTFmZmNkNjMwYiBsZWdhY3ktdHJ1bmsKKzM1ODEgMTY5MWVhNWQ5ZDRiNWIzNDQxOTdhMzM2YzczMjFjNWVhM2JlOTI2NSBsZWdhY3ktdHJ1bmsKKzM1ODIgMDBmMWU4ODY0ZGNjZGZlNjE0ZDI0YjNlYzM0NDVmM2U0YWNiYzkxZCBsZWdhY3ktdHJ1bmsKKzM1ODMgYzkxNGIxMGJmMmVkNzc1YzAzMmQ3NGY1YWU0NWUwNDc2NjAwYmEyNCBsZWdhY3ktdHJ1bmsKKzM1ODQgMjQ5MTc3NGUzNmE5MGNiYjVjZmUyNjM0MzJiMWE3NmQyZDNhYTExOSB1bmxhYmVsZWQtMi4yNS4yCiszNTg1IGY1NTAzMWQ1NDliNzlhNmJlYjA3YzMwYmUxZGY1M2ZlNDczNDQ5ZWMgdW5sYWJlbGVkLTIuMjUuNAorMzU4NiBlZDUyMmM5NDhkNDI4YzM3YWUwZTlkNThlNGM5ZTk4NTA2ZGM3NjE5IHVubGFiZWxlZC0yLjkuMgorMzU4NyBjYWRlYjc5YzEzMmY1NTAyY2VmZjkyMzEyMDIwNzY2MGQ5YjI1NzJiIHVubGFiZWxlZC0yLjkuNAorMzU4OCAyODUyZWRiNGZmZmUwZWMzNzg5NWYwMzE0MTIzZTA4NDVmOGVjMGNkIGxlZ2FjeS10cnVuaworMzU4OSAwNjU3MDQyOWYwNjJkMzE0ZDBiODY4MjJkMWEzY2NkYTUzNDZlMjBlIGxlZ2FjeS10cnVuaworMzU5MCBkNmY2YTFjYjdkNzllOWIxOThmYzE1ODNiMjg2OWM5ZTlmNDAwODE1IGxlZ2FjeS10cnVuaworMzU5MSBmN2VkZmE2ZDBkY2JhNDg3MmJmNDA4NGY2YjU3NGQzZWExMThkZDM0IGxlZ2FjeS10cnVuaworMzU5MiBiMWJiNzRhMmI1OTMwZTliNGZjNzhlOWI1NWY2NjkxNTkyMTJhYmQwIGxlZ2FjeS10cnVuaworMzU5MyAyMDQwMDFkZGRjYzMyZTM4ZTEzNjk4ZDhkMmRkNTk0Y2M2ZDI1ODhiIGxlZ2FjeS10cnVuaworMzU5NCBkMmY5OGJlZWM4NWNmMjI0Yzg4Mjk4YTBkYjZkZTk1ZDdjMjllNDA3IGxlZ2FjeS10cnVuaworMzU5NSBmZTcyOTg4MTNmMTcxNGI0N2ZhMmI5MzA2NzA2ZmYzNWY4M2FhNGQ3IGxlZ2FjeS10cnVuaworMzU5NiA4YTkwYzliYmJkZjBjOWQ3MWE4MzRjMmYzOTE5YWMwNDA1MTJkZTc1IGxlZ2FjeS10cnVuaworMzU5NyAwYjMyZWM4YTNlMjA4MjFlNjQ4ZWUxZTVjYTkxMzkxODdkMDA2YmM3IGxlZ2FjeS10cnVuaworMzU5OCBhMmYyYThiZDU2ZjliZmYxYTUyMWE2Y2M2ZWQ5ZDA1ZjIwNDdjNzUwIGxlZ2FjeS10cnVuaworMzU5OSA3MmJkZGZhZDM1MWE5YTIyMGRiMjQ1MDRkYWJhMGE2OGJhZDgyOGYxIGxlZ2FjeS10cnVuaworMzYwMCBjODg3YTFmMzA1MjU1ZDFhYmZhNmZlNmFlZmVhNjhmM2U2ZDZkMWVjIGxlZ2FjeS10cnVuaworMzYwMSA4NzAxYjkzMzgzYWIxZGRlOTE4ZWI3YzZjZDZmMDJlNTNiOTViOTA1IGxlZ2FjeS10cnVuaworMzYwMiBmN2E3NTJmYjdiNzM3ZDFmMGU5Y2I0NWE4YjAyMTI3NmI4OTY2MjJiIGxlZ2FjeS10cnVuaworMzYwMyBhZGE1NmIwNzY1YzE2NzJkOWRlZDgwN2Y2MzE2NWM3Nzg1YjU0NTA1IGxlZ2FjeS10cnVuaworMzYwNCA5YzcwN2Q4Y2YwYzhkMTZlNmQ4NjllZmI2M2E2ZTgzODgxZGVmNzdjIGxlZ2FjeS10cnVuaworMzYwNSBkNzE2OGNjMmJlMDc4MzNkMGExNWEwNmZhOTQ3NDZjNTkzM2YxOTAyIGxlZ2FjeS10cnVuaworMzYwNiA2NDBjMzZiNjRkZWExY2Y3MmZlZTQxZjUxMTljMDZkNTM0ODQ4MzExIGxlZ2FjeS10cnVuaworMzYwNyA1Y2FlNzY1MzE3MWI0NGExOWQ2NWFiNjEzOGY3MTgxNTQxY2Y2N2M0IGxlZ2FjeS10cnVuaworMzYwOCA0NmMyMTczMzdiZGU0ZjU0OTk4OTAxNGUyZmFmYTc4NjQ2ZDEzYTEyIGxlZ2FjeS10cnVuaworMzYwOSA1NjBlYzcwMzA4MTc3YjQzOTFhZmExNzFkNjA0ZGYzMWU3ZTM0NDBjIGxlZ2FjeS10cnVuaworMzYxMCA4OWE1Y2UxOWQxM2FmMjA4ZWExMmY1ZTZlMDAxZGYwYzI0YTdhNWRjIGxlZ2FjeS10cnVuaworMzYxMSBlNDk5MTE2ZDQ1ZTQ5MTlkYzQ2ZDc1MmIzODQ5NjgyZGU4N2RkMjViIGxlZ2FjeS10cnVuaworMzYxMiBkN2UzODQyYjJlN2IxMGZmZmIwNGY0MWViY2VhYzcwMTUwMTI5MTZmIGxlZ2FjeS10cnVuaworMzYxMyBlNDYzMjJhMzFmNjIyYmExYzlkMDQ0OWJmZDBmN2RhM2ExZGQ2MDhjIGxlZ2FjeS10cnVuaworMzYxNCBkODJjMmJhNGY4MTg3YjUwMGJlNmRkNjA0ZGM3ZWUzZmMwOGU2YjBmIGxlZ2FjeS10cnVuaworMzYxNSBjZDM4MjQ1NmM1NzJiYmFhMjA1NTNlOWIxMTEyNGEzZWQxNmU3MGM1IGxlZ2FjeS10cnVuaworMzYxNiAyOGNjZWFiZjhjY2VjNjgyYWM2NzMxOGMyM2NkODg3M2QxZjc4YjNmIHVubGFiZWxlZC0yLjM2LjIKKzM2MTcgY2JmMjhkNjU0NjlmNTA2MjQ4YjMyYWM0YzIyYjgzNDE2ZDYxM2E3OCB1bmxhYmVsZWQtMi4zNi40CiszNjE4IDQ3NDljOTU3NDY2Yjc3ZjEwODAxOTllYzZkOTcwZjM4NjdjYWNhMTcgbGVnYWN5LXRydW5rCiszNjE5IDJlYzA4YTlkMDMyNTUyMTA2Y2JiYmVhNmNkMGEwMThiZGFmNzkwMjAgbGVnYWN5LXRydW5rCiszNjIwIGYyZDA0MDU0YzkzNDZhMzY0NWY2ZDE1M2ZmY2M4NWQzZmE1MmM2NmQgbGVnYWN5LXRydW5rCiszNjIxIDkxMzM4MDY3Zjc1MDFlM2UxZDlkNjM4ODQ1YmFmYmE5Zjc5NmFjZTggbGVnYWN5LXRydW5rCiszNjIyIDlmYjBmMWFmYjM0Y2QzYTg3ZmMzNDA0YjAwM2I0YjZlMzk5ZTJlNTMgbGVnYWN5LXRydW5rCiszNjIzIDRmZjYwOGM0Y2FjYWUwYzE0NzRiNDlmNDhiNDViMzlkNzNmMzljMjUgbGVnYWN5LXRydW5rCiszNjI0IDMyOGY0NDZkMjAxNjc2MDZmOGQyNjJjMDQzNGExMDhiNTVhY2MyNDkgbGVnYWN5LXRydW5rCiszNjI1IGFlOTNlYzRkZDU1NjM2OWJhZmFiMzljNGUwYTg2NTNkYzc3NDE0ZjIgbGVnYWN5LXRydW5rCiszNjI2IGQ4Y2EwZTkxM2M0NDQyYTZiNGNkNjMyMjMyNjg5NWQ3NjQ0YTlkYzggbGVnYWN5LXRydW5rCiszNjI3IGE4OTMyYTRiOTYyNGQ5YmJkMjU1NDlkMmE1MjZjMTA1OTk5YTNjYjYgbGVnYWN5LXRydW5rCiszNjI4IGE1YTQ2NTRjMzNiZTViMzk3NzYxOTQwMzYxOTZlMzMyZTQ5OWFlODggbGVnYWN5LXRydW5rCiszNjI5IGQ3NzNhNWY4OTQyNjg3OWRiMmZlYmQyNTk4OTEyMzMxY2Q4YmYzM2UgbGVnYWN5LXRydW5rCiszNjMwIDNhNWYyZjExMGY3MDYyYjllMjY1MTJjZmVkNDlhYzAyYWU2MjRiODYgbGVnYWN5LXRydW5rCiszNjMyIDUwMTAxZWI2MzExYjA3N2M5ZDk2NzMzNjk0MjQyYTQxZjg3Zjg4NmUgYWxwaGExMDAKKzM2MzMgYjE4ZWIyZjRhZjBjZjNjNTkyZWMyM2M2ZmYzN2M2OGU5NjUwODFjZSBhbHBoYTEwMAorMzYzNCAxY2VhOWQ4MGEyYmMxY2U0YjFlMWY2MDhmZDI2ZDMwMDVkY2JmNGY0IGFscGhhMTAwCiszNjM1IGQ5ZDIxMzgyYzczYjkyYzE4MWEwMmNhM2EwNDIwOTRhZjIzM2EzOTMgYWxwaGExMDAKKzM2MzYgNWI5NzAwNDdhNzIyYzE2ZTEyNmY3MmUwNWY1MWNhNGRkMjk1NTVhOCBsZWdhY3ktdHJ1bmsKKzM2MzYgZWY3M2Q0MGE4Mjc5NTFjOWRhN2EzMmNjOGRiZTM4NjAwZmZlYzdkYiBhbHBoYTEwMAorMzYzNyAyOTJjNWU3OTI2NGRmMjY2ODI1NmM2OWU0ZTg0YmU5ZDA1Zjk2MWZjIGFscGhhMTAwCiszNjM3IGQ4Y2RhYzhmZGM3NDUwYmUxYmUxNjIyODY1NDk3ZDRhYTBiMmRjYTAgdW5sYWJlbGVkLTIuMjUuMgorMzYzNyA4YjA4YTM2Njc2ZDRlZGE0N2UxZGE3Njk2ZTRiMjI4MTIzMTkzZjNiIHVubGFiZWxlZC0yLjM2LjIKKzM2MzcgMTlmYTAxYzlmYWYzOTc2Mzc4ZjY1NGJiNGZhN2NkM2RiMjg4MmE0ZCBsZWdhY3ktdHJ1bmsKKzM2MzcgOGVlZjIxMTU1NWM2ZDM1ZjRkMjljOWRjNzc0YTI0OWJkMWM3NGNkMCB1bmxhYmVsZWQtMS41LjIKKzM2MzcgMGNhNjUzZDY3N2QzNDk3NDNjMjljMWFlMjIxMmE4ZGNiNTcyOTNjZCB1bmxhYmVsZWQtMi45LjIKKzM2MzggNjA3YjE5YWUxZTEzYTMyMjA1MDZlODVjMjg4N2ZmNzQ5YzY0ZjU1MCB1bmxhYmVsZWQtMS4yLjIKKzM2MzkgMzFmMWI5ODdjZGY4MmNiY2IzOGY1MDEwOGEwYWYwODM3OWQ4MzFmMyBhbHBoYTEwMAorMzY0MCBkOTYxOTliZTc0ZTZhNDQ4Y2M5NTQwYmQ5NmI5ZjFlNGM5ZjQxNWQ2IGFscGhhMTAwCiszNjQxIGY4ZDNmZjY2MzliNTk2NzBkYzExMzJkOWU4ZGNlNWQ4Y2M5NWZlYzkgYWxwaGExMDAKKzM2NDIgYTc5YjAyNDM5N2Y4N2M3MThhMmEzMWJkZjIzZGQ5NmRlMDI4ZWI3OSBhbHBoYTEwMAorMzY0MyA1Y2U0MDQ2MmFlOTlhZWQ5NGViNTBmODE4YzJjNGVjYjI3NzI5MjBhIGFscGhhMTAwCiszNjQzIGI4NTgwZTMyMDQ2YzFiNjkzOWNlYWI4ZTkzOTJlZWU4ODBmMmU0YWUgdW5sYWJlbGVkLTIuMS4yCiszNjQ0IDA4ZDRkYTQ4ZGNkNTg4NzQyMDgxMjcxMjQyMGZlMTdmMzAxNzU3MmQgbGVnYWN5LXRydW5rCiszNjQ1IGQ4YmEzY2Y5ZGFiY2E5NzhmZjU2NWYzNjE5MDA3MThhNWJjODc0NDggbGVnYWN5LXRydW5rCiszNjQ2IDFmOGM2NDg0OTIwMzQ4MDAxNTc1NWRiNTM4OWRkMjQ1YmRlYmIyYjcgdW5sYWJlbGVkLTEuMy4yCiszNjQ3IDZjMDY3NjlhODg2OWIwZGRmYWM3NGE5ODBlODY5NTUyNTg5NGI0NmIgbGVnYWN5LXRydW5rCiszNjQ4IDI1YzExMmIzYzk1N2VlMTkxNTI1YWM1NDdkODA3ZDlkMDA3OWI1ODggbGVnYWN5LXRydW5rCiszNjQ5IDEwOWQzOWRlYzEyODg2YmUzYzBjY2RkN2ViNjNlNDllZGFhZmMzY2IgbGVnYWN5LXRydW5rCiszNjUwIDVmM2Q2ZTRiNTUwM2Q1MWVhMWNiMjI0MmFkNzE3ZWY1NzE3MGU5MTYgbGVnYWN5LXRydW5rCiszNjUxIDMwNTc0OGViYWI0MzcyNDUyNWJhNGRmOWU3ZjBhZDNmYjk2MTk1YTkgbGVnYWN5LXRydW5rCiszNjUyIDRkYzdiMTViNmI5NzBkYWFkZTFlMzc4ZTczM2U3ZjhjMmViZDYwZDAgbGVnYWN5LXRydW5rCiszNjUzIGM4YTk1YzE3MGUxZWQ4NzM0MDczNDViOTFhNWE2Yzg0MzMzODk0ZjAgbGVnYWN5LXRydW5rCiszNjU0IGVkMzZiM2U5Y2Q3ODY1YWM2YjUxMWUwZDQ4ZWU1MGEwNWUyZWRkNTkgbGVnYWN5LXRydW5rCiszNjU1IDYzZWI2Yzc1MDkyNzU3ZDIwMDQwMDc5NzJhMWU0MjA5MWEwNmVkNDEgYWxwaGExMDAKKzM2NTYgMTljOThmMjBhOWI4M2EzMWNiNDg5YmNhY2IxMjI4N2EyZjE4OWE3MyBsZWdhY3ktdHJ1bmsKKzM2NTYgMDhjZDhiOTZiNmJmYzI3OGI2NmVkNDExZDNiOWQ3YjYzNGI4OTkxZiBhbHBoYTEwMAorMzY1NyA2YmNlMzNkN2YwZDExMmY0ZGRiMzk2ZWU5NTExYWY2NzY5MjMxMjE3IGxlZ2FjeS10cnVuaworMzY1NyBmNTMzNmQ4NmY1OGI4ZDlhNGUwMzRmZDRiY2UxZDBhM2ZmY2Q0ZGFkIGFscGhhMTAwCiszNjU4IDMwNTkyMThmNjMwYmQ4ZWMwZjI2YjEyMmVlMzhiZTc1NmVjNzkxYTYgbGVnYWN5LXRydW5rCiszNjU5IDc3MzhjZTk1YmE0ZGNhOWNkOGViNWVjZDNhMmJjZGUwYWVmMDVlNTQgdW5sYWJlbGVkLTEuOS4yCiszNjU5IDgzOGFhMTQwNmVlYWVmODMyMTZlMDQ0OTBiZGJmYmEzMWE2MTIxMWMgYWxwaGExMDAKKzM2NTkgMjQzMGE4NjAyYTY1ZDEzNjk1MzY2YWNjZWNmOTY0OWQ3NTRhMmI4ZSB1bmxhYmVsZWQtMi4xNi4yCiszNjU5IGI0ZjgxNWYzY2YzZTEwOGZjOTdjZjBmMjhiODdmYWJjMzg1MGU2MTIgdW5sYWJlbGVkLTIuMjUuNAorMzY1OSBkMDE4NzY1OGNmMGIzYmI2ZjQ0OWNkYzJkOGIwZTFkOWQ5MTg2YTUwIHVubGFiZWxlZC0yLjEuNAorMzY1OSA2MTJjNzZhYWMzYWE4OWU4NmY1ZTRlY2NmOTgzYjM0Y2VkMGEyOTcxIHVubGFiZWxlZC0yLjM2LjQKKzM2NTkgMzEzZDliOTMwOTQwOWVkZGQ2MmI5Nzg0ZTcwNmNkNDc0ZmNjYTMwNCB1bmxhYmVsZWQtMi4xMC4yCiszNjU5IDhkYzJjZjMxNDViM2JiYmE1M2E3YmRjNWQxZmUzYzZlYjk4Mzk2ODMgdW5sYWJlbGVkLTIuOS40CiszNjU5IDUxZWVmYzA1NGFmZjhiYTNiZTE4ZWRlY2NkOTI3YjEyMTAyZDE5NmIgdW5sYWJlbGVkLTEuNS40CiszNjU5IGFmNjY3YzZkMjA3MjIxMTE5NGRjYzQ5Y2VjY2VhZjFlYmJkMWRlNzYgdW5sYWJlbGVkLTIuMy4yCiszNjYwIGQ0NzA1ZDcwNjYzMjkyNDg5MDBjZjljNjI1NzFhMjIwMjJhN2Q2ZDcgbGVnYWN5LXRydW5rCiszNjYwIDFkY2EzM2ViMmQ3YTUzN2RmMTRhYjM4MzU2OTg4M2Y1NWRlOTk3NWQgdW5sYWJlbGVkLTEuMi4yCiszNjYwIDhmNDRlNDMxMDQxNGI2ZDk1Nzg1YTlmZTM3OTU2MzE0MmFiYWY3YjEgdW5sYWJlbGVkLTEuMy4yCiszNjYxIGRjY2VmMWNiZGE1YTA2ZGM4ZjE3OWFmN2M5ZGQ3NzcyMjI3YWU2OWYgYWxwaGExMDAKKzM2NjIgMmVjOTYxNDBhMzZiNDg4MzQ1YTNjMWExY2U4ZmJlNDBjM2IzYjI2NSBsZWdhY3ktdHJ1bmsKKzM2NjIgNGFhOTFmZDY5NzE1NDc5NmNhMWVkMWE4NWE1NmNjNTljYjNkM2Y4NiBhbHBoYTEwMAorMzY2MyBjNzUxY2JlZWU2ODgyZmIzMDQ2Y2JhMTY2OTkwNmE5NWYzNmE1NzI4IGxlZ2FjeS10cnVuaworMzY2NCAyMzU2MWRjN2IxNWY1ZTgzMjAwYWE1ZmMwNDVhYzRkMTFjYWQ4ZTlhIGFscGhhMTAwCiszNjY1IGU1NjBiMzM0MjQwNWIzMjc3YjRkZmRjNmIwMDM4MDIyNzdkMWVlMGYgYWxwaGExMDAKKzM2NjYgMGViMGVmYzUxZDliMzdjNDhmYTZjMzk0MzNiN2FlMjhlMjQ2OGU3YiBhbHBoYTEwMAorMzY2NyBjMzJlMTAyMDQ2OGRmZjg0MjkxNTc5Y2E5ZGM1OWMxYWI2NzgxZWZmIGFscGhhMTAwCiszNjY4IGUyNjNhNzJhNzZmZTlkNmExYWMwMWUyMzNiNDg1MjQyNzc2Nzg5ZWUgYWxwaGExMDAKKzM2NjkgOTNkMTI5NzE3OGNiZTc4NWYwYjI1NTEyMWFhYjJjZWNmN2VhMjE0OCBsZWdhY3ktdHJ1bmsKKzM2NzAgOThjNTU5ZmQ2ZTJhOTJhNGU1YzA5ZWE2YjMxN2UyOWIwMmRlOTYzMiBhbHBoYTEwMAorMzY3MSBjYmExMDk2ZGE1NTMxMWRkNjJiNjljMGJiYjgwMjcwYTBjMTg5OWZjIGFscGhhMTAwCiszNjcyIDIwNjRiMTY3MDlmMmNlNWY5MGY2Zjg0Yjg0ZWUwNTFiYjFlYzUwYjYgbGVnYWN5LXRydW5rCiszNjcyIDM0NWQ1N2JlYzI2OWQ3YmZkNmYyNmU3MjUxNTY5Y2EyY2QzY2ZiNTMgYWxwaGExMDAKKzM2NzMgZjg2ZjY1MWM3MDdmNDEwYjAyOTAxZjk4ZTVlNDdiZTU3NzViMTk5ZCBhbHBoYTEwMAorMzY3NCAyY2IwNzZhZTg5MjcyMTc5MTAxZTZhMWViM2YzMmU3MGNhODY3ZmU1IGxlZ2FjeS10cnVuaworMzY3NCBlYmY3Mjg4MDM1NWYxODI2M2QxZjg3MWQ1ZDA0MzMyY2QxNzExNmRlIGFscGhhMTAwCiszNjc1IDNmZTc1ODJiOTYzNmRmMmQ0M2M0Nzk0Y2VmMWM2YWViNmRiYWRlMjUgYWxwaGExMDAKKzM2NzYgNDgxNDFlNjhiMzY5ODMyMmZjMDM3ZDE0NDNkODE4NTRhMTA3ZjQwNSBsZWdhY3ktdHJ1bmsKKzM2NzcgZDgzNjY0NThkMTA2NmQxYzA0YTMwMmE4NzFiNDg4OTUyMTA1MzMwNSBhbHBoYTEwMAorMzY3OCAyYmU4MDQ5NjYxNDc2OThiNDE0N2E5NGZlZGVhYmJhMDk4ZmI3ODAzIHVubGFiZWxlZC0xLjEuMgorMzY3OSBmMmYxNjNjMDk5NTliM2U3NTIyNjcxNjNjYWQyNzgzMjJhOTRjOTk1IGxlZ2FjeS10cnVuaworMzY3OSBiNjZjNmUyYTZlMDZmYTM0MmUwNDhhZDAyMzYyZDRmYThlMThkYTMyIHVubGFiZWxlZC0xLjEuMgorMzY3OSBmZWMyY2Y4ZDZlNzc5OTk0OWIwNmQzMzEwMmZlMjZkOWU2ZDc3NzQ2IGFscGhhMTAwCiszNjgwIDg3MDc1MWZiMDllYmZkNTkzMDkyODU5MmY1OGI1OWEyYTk5MjM1ODMgYWxwaGExMDAKKzM2ODEgMGRlZjk0ZjgwYjM4NDk3NDg2ODMzZDlhYWY3MDk5ZmIyZjVjY2I0OSBhbHBoYTEwMAorMzY4MiAyNGQ2NTY1M2UyYWM5ZDQ0NjJjYzM4NDAyMjAwMGE2MTljYWRiZTE3IGxlZ2FjeS10cnVuaworMzY4MiAxYzRlMmQ2MjBiMTYzODI2MTI5N2I1ZmJjM2I4NjE0MmQ4MDY1OTc5IGFscGhhMTAwCiszNjgzIGQwM2NlYTZjMDc5NWQ0ZDk4NmM3NzM3ZjY0NGMzMjY5YTNlNTUwZGIgbGVnYWN5LXRydW5rCiszNjgzIDQzODUzM2IzNDFhNmQ1Njk5YzAzNWU2NTVkYmEwMjlhYWQ5N2I0ZTYgYWxwaGExMDAKKzM2ODQgZTMzNzYyNGMzZWEzNzA1MzU0MDFlM2I4YTMyYTkxN2Y1ZTNjZDM5YSBhbHBoYTEwMAorMzY4NSAzZDVkNGM5ZWQxOWRkODY5NWU5ZjU0N2RjZDZjMGJkNDFjMWVkYjZlIGFscGhhMTAwCiszNjg2IGI4MGYxZGM5NmMxYTU2YjNjNDNiNDA3OWY3ODczMDAzZjNkYzczZTkgbGVnYWN5LXRydW5rCiszNjg3IGVhYjAxOTZhOGQ4MzhlNzJjOWNjMDRmODk2NWJiMTUyNzRiOTMxZjMgbGVnYWN5LXRydW5rCiszNjg4IGI1YjFmMzhiZWZhNDhkYTBhODY2MWQ0YmFkMThhOGM5NzNmY2JlMzcgbGVnYWN5LXRydW5rCiszNjg5IDU1MGUyNjA1OTU4YjE2ZTY0MTU2NTc3N2MxMDlmMzVkYWFiZGNhMzYgbGVnYWN5LXRydW5rCiszNjkwIDJkZGVhOGU2ZGQyMGIwZmI3YmVmMzAyMjJlYTNhMDZhZWM3NDI3OTkgbGVnYWN5LXRydW5rCiszNjkwIDM1NTliMDkwNjcwZWVjOWZkMWI2OTdhOWY5MGYxMTc5MDk0ZjU2NTAgYWxwaGExMDAKKzM2OTEgNjFhNzIzZmEyNTM4Yzc1NWU0ZjU3YTUwNDNkMTU2YTJhNzMxMzNhMCBhbHBoYTEwMAorMzY5MiA5ZjNlMmU5MzFiNGI5M2ZkNWI2ZWQ0ZWM4MzgzYTVjOGUyMjNlNzEyIGFscGhhMTAwCiszNjkzIDU3ODFhYWY5Y2NkMzVmNzFkMDA5MGM1ZDgyNGEzNWY2OGFiOThiN2EgYWxwaGExMDAKKzM2OTQgNTAxOWQwM2Q3MTkyMGI5MTZkMjY2NTQ5NjdjNmQ2NzFlMmJhMjUwOSBhbHBoYTEwMAorMzY5NSAyMjRjNmJkOTJjZWI0NTQwZDc0ZmUyMzA5NGYyMzQ4ODkxZDE2MjIwIGFscGhhMTAwCiszNjk2IDhkNmQ4NTM1OWZhM2I5Y2RkMTBjOGFhYmRhNDY5NTcyYmZmMzE1OTYgbGVnYWN5LXRydW5rCiszNjk3IGU1ZmE4OTc5YjllNjY4MjQxMjBlOTc2OTI3NmY0ZWRmYzRkMDI1NWYgYWxwaGExMDAKKzM2OTggMGE2YmVlNGI2YjE3NTE4YmVmZjkwZTFiNDAzMTdlMzFmNzliM2U0ZSBhbHBoYTEwMAorMzY5OSAyYWUwMmYwZDllNmIwYTZkNDA4N2RjZGFiYmE5N2Q0OTA3M2MwYzk3IGFscGhhMTAwCiszNzAwIDJkNGJkOGNjNDA0MjAwZmE3MjU1Y2JlNWEwYzc1MDY2YjIyYzY4YzkgYWxwaGExMDAKKzM3MDEgNGY4OTYwYzc4MTQxZGJjMzc0MDI3YzVlODhiN2ZhYjQ0Zjg1YTBlMCBhbHBoYTEwMAorMzcwMiA3NTg3MTdmODUwZjJhYTM3ZTU5MzYzNjBkM2Q0M2VlNmNlNDEyMzBjIGFscGhhMTAwCiszNzAzIDA1MDE0ZTBkMzNlYzU4MTY0NWRhZDA0ZWM0YjE5MzgwYmVmOGY0ZDcgYWxwaGExMDAKKzM3MDQgNzZiYzZkNzQ4ODkwZDg3YTk5MDQ2ZmE1NmUwMTYzMDM1NmE1MzIxZCBsZWdhY3ktdHJ1bmsKKzM3MDUgZTUzZWQ2NzQ1OWY1NmQ3MzQ2YTFlMmIzZmQ5OTczZWE4YmQ4MDM2NyBhbHBoYTEwMAorMzcwNiAwYzhiMTgxMmYwYjY5ZDkxZTM4YjA3ZWMzODA1YTk2NmZkNWUzODRiIGFscGhhMTAwCiszNzA3IDEwYWQ4YmVmOWY0M2RiNzVlOThhYWRhNDE0ZGZmOGRlN2JlYzU3OGYgYWxwaGExMDAKKzM3MDggYTkwOTFjNDk4YjEwMWU1ODIzNTI0YzhmZmQzNjUzNTQyYjFiMDIyNCBhbHBoYTEwMAorMzcwOSA2MjdiYzQyMmE5MDI4NjgxZjBlZWJmMzE5ZWZhMTZiYTY0MTY2ZDRjIGxlZ2FjeS10cnVuaworMzcwOSA4YjNhNzI3ZGM3MWIzYWMzZTk5ZDAzYjdiNGNkZjVhYjMxMDFhY2UwIGFscGhhMTAwCiszNzEwIDI3MmUyYzY0Yjc0ZGJiYjg5ODUzY2IxNTQyY2E1ZDQ5MzQ0MzA2NDMgYWxwaGExMDAKKzM3MTEgNmRmYjg0YWRmZTQzMTE5YTlhN2UxMjFjMDhjYjBiYzc2NmQ2ZjA4MSBhbHBoYTEwMAorMzcxMiA2YjYzMDBjYzQ2NGU1YTRiYzE2NzBiN2E3MjU5ZWFhYTBkODViZDhkIGFscGhhMTAwCiszNzEzIDUwZmFiMjMzZjQwNDIxMzAyYTRlMmMyMGMwMzk2NmY0ZTgzY2ZiZjIgYWxwaGExMDAKKzM3MTQgM2QxOWNhNDBlYjgyZGZkMmU4ZjVhZDJkNmE5NWI5NjkwZmU3ZjNmYiBsZWdhY3ktdHJ1bmsKKzM3MTQgOTI1Yzk1MjgzMGNlMjZlYmJhNjhiMjRiMzI5MmRjZjgxYzNkMzU3YSB1bmxhYmVsZWQtMS4xLjIKKzM3MTQgNjI3ZDY0NGJjNmMxNzdmOWE2ZWY0OTU1M2M0MjM3NWRjOWMwNjMwNiBhbHBoYTEwMAorMzcxNSA5NjM3YzA0OTYxN2QzMzc2ZDRlZTUxNzdkODkxZjYwZTIzNmJjMTc1IGxlZ2FjeS10cnVuaworMzcxNiBlZDc1OTkyMTc3ZTgzMTcxOWIwNjhkYzZlZjk4YzA5ZTVhZWVhZGVlIGxlZ2FjeS10cnVuaworMzcxNyAyOTkyN2YwMzg2YTY5ZTgzZTlhYzIyZjBmNWFmYzg5M2I1NGJkOTYwIGFscGhhMTAwCiszNzE4IGM2MmE2ZGE3ZmVhYzNkN2E1MTc5ZGQxMzkwNDBiOWFlMjE5OTM0MDAgbGVnYWN5LXRydW5rCiszNzE5IGE1MjU2MDYxZjNhMDBmNzZhZTI0YzUxODFlMjYwODAxZWQ1NTNlM2EgYWxwaGExMDAKKzM3MjAgNWZkNTVhNmFjNzZlODM3YzMwMDk4NTZhMzM2NjZhNTczMjYwNGY5ZCBsZWdhY3ktdHJ1bmsKKzM3MjAgMzI4NjVjODljZjEyZTYzZDg0NDQ1ZDg3MGM3ZDIyNjQwMDQ4NjZlMCBhbHBoYTEwMAorMzcyMSBlMTgzNTAyZmI1YmM2ZjVjM2E2MzQ2YWVjMDhhNTkwZjlmZTcyOWMxIGxlZ2FjeS10cnVuaworMzcyMSBmZGJkMzk1NGZlZjAwYjQ0NmE0MTE3OGE1Zjc2MjBjYzA1NjFjNzU2IGFscGhhMTAwCiszNzIyIDVlOTJiMTMyZTcwZmEzMmI3YmExZDQxNjRlYTVlZDc3NzIwMjMyMWYgYWxwaGExMDAKKzM3MjMgZDBiYjA3ZDRjNmZlYjhkMmIzMGFkNDA4ZmU5NThhMDNhMGU0YzIxYyBhbHBoYTEwMAorMzcyNCA3NDUzZTJiYTUzNjJhNDQzMjE2ZWE5OGViNmYwMDgxN2I4YWRlYjQ2IGxlZ2FjeS10cnVuaworMzcyNCBhYTQ3MmU5MTdmNmMyMzM5ZjQ0MDE0ODE4NGE5ZjQyZGY1NGJlMzcxIGFscGhhMTAwCiszNzI1IDg3NzA3M2I5ZjhjMzI1NGE4MzI1MGIyNTY0ZWZjNjVjOWYxYWJhYWIgbGVnYWN5LXRydW5rCiszNzI2IGU0ZWYxYjE3ZGEzZGJjNWI5YmMyMWYxYTBjNmEwMjdkNmJhNDUzMWEgYWxwaGExMDAKKzM3MjcgY2MzMTE5MTY0ZDVjMmYzNjVlYzcyMDZjOTk0MzU2NTUzMjlmNWJhNSBsZWdhY3ktdHJ1bmsKKzM3MjcgYWJjMmY5ODE0Y2M5Njg1NWVhZWNmMDg1ZmU2ZjEwOGEzZWFjZTFmNSBhbHBoYTEwMAorMzcyOCA5NDRjYzdjNjRlN2NkZDk2MTA1NzMwZDBjMWRhNTk5Y2ZiNTBhNzlhIGFscGhhMTAwCiszNzI5IDlmMjg4Y2I1NmFiNTFmN2FhNDhmNGQzN2Y2Nzg0YjUxZjg3ZTc3ZDcgYWxwaGExMDAKKzM3MzAgYTZlYmI2OGRiMzRlYjUxNjFmZDMxZjk1NjhkMWNlY2RmM2RhMGU3MSBsZWdhY3ktdHJ1bmsKKzM3MzAgNzdlMGVhNjA3OTZhZTQ4NGJjZGE2ZWY5NjAzMmQwMmUxMTIxYzVlZCBhbHBoYTEwMAorMzczMSBhNzVmNzBjYTFiZTBhNjRjM2U3MTkxNTlkOTNkNWRiYTAzZmZhMzYyIGxlZ2FjeS10cnVuaworMzczMiBmNTIwYjljN2FlNmY2NWRiMTA3YTgwYzhjZWMxMzY4NGVlNjZjMWU0IGxlZ2FjeS10cnVuaworMzczMyA1NjhjNjA2YTBlMzExYjY1NDc5ZDZjMWFiOGE3YjA4YjgwMDVmYTQxIGFscGhhMTAwCiszNzM0IDFmN2RhZDU3NmE4NTFkMWIxZjZjYWQyMmJhMjY3ZGQ2MmU3YjU2NmIgbGVnYWN5LXRydW5rCiszNzM0IDIwNGI3ZTc5M2MxNWI0YmQxZDQwYWRlNTY1NmE1ZWRmZWRhZGNhZTcgYWxwaGExMDAKKzM3MzUgNzgzZWYzNjFmMzk1MTVhOGFlZjU1Njk1ODMzZTNhYzQxMDllMzdhYSBsZWdhY3ktdHJ1bmsKKzM3MzYgODk2NWVmNGViMzk5YWM0NzZkY2JmZWJhN2JhNDMxYWE1ZDlhNmVlYSBsZWdhY3ktdHJ1bmsKKzM3MzcgMzY2NGNiODhhMDMwMDhlZGJjYzdmOTc0ODRlODU1OGQxODQzYjZiNyBsZWdhY3ktdHJ1bmsKKzM3MzggNTIzZDQyMTE4OGI5M2E1MzdhYjNiMjQ3MTEwMjI5YjhiMjZmNjk0YyBsZWdhY3ktdHJ1bmsKKzM3MzkgYWVlNTVkOTY5YTEyMjQxYTc4ZGQxN2RlZTA2YWM3MjgxMmJjYzlhYyBsZWdhY3ktdHJ1bmsKKzM3NDAgZWYwODJjMTA3MmE3MTE1ZGJmYzMwMzZlYzYzZmNkZjFiODlhNWM3OSBsZWdhY3ktdHJ1bmsKKzM3NDEgNWIyNTVhMzU4ODMzMGI1ODhjMGNkODViMTc2MmRlNjVkYzM3ZGUyNyBsZWdhY3ktdHJ1bmsKKzM3NDIgOTM5YTk1ZjNkY2RlYTQzMWI4MzhiYmRiM2IzMmFiY2JiYzAxZjZjYSBsZWdhY3ktdHJ1bmsKKzM3NDMgYmU2ODAwYTYwMTliNGQ0MjE0NzBjYzU5ODJjZjUyOWY2MzE5ZjE5MCBhbHBoYTEwMAorMzc0NCAzNjQyYzY0NDcyYzA3OGE2OWIzZDhlZmYzZmNlOTYzMTViYjJkYWE2IGFscGhhMTAwCiszNzQ1IDM2NDhlZGQzNDNlYjQ0YzY0MTBkZGRkODgyNGQwNDc5YjAzMDVmMTcgYWxwaGExMDAKKzM3NDYgNmQyNGI5OWRjODgxYjhmMzc2MWRjMGY3ZWNiNGU5ZmUyZGI4Y2Y1ZiBhbHBoYTEwMAorMzc0NyBjOGI3MTRiOWJjNWFiMmI1Y2Y2MDE3YzIyMDE1YzhkNWIzMDdmMmY1IGFscGhhMTAwCiszNzQ4IDU5OTQ5NDlhN2VlOWRiNDAxYjllNmNiNTFkMDRlN2QzMzA1NGZjYTggYWxwaGExMDAKKzM3NDkgMWUyNjk0YTA2OTM5ODhiZTQwOTY5NzM5MGVmZjZhMDVjNzYyMTVkNyBsZWdhY3ktdHJ1bmsKKzM3NDkgOTFiYWQzNzZiNGJjZTVlYjQ2YzIzODVkMjEyZTM0ZWM2NTRlYTAxYyB1bmxhYmVsZWQtMS4xLjIKKzM3NDkgMmVhODEzYWEyNjAyZmM5NTY0ODFlNGZkZTg3OTZmMzVjYmQyMWIxMyBhbHBoYTEwMAorMzc1MCBmOWFkYjg5ZjIwMDE2YTlmYTY0NTgwMDU2N2U0MjAyYzBjNTJhNGQwIGFscGhhMTAwCiszNzUxIGZhOWU0ZGI3OTExZGE5ZmZjMDYzYWU4M2JlNTU5YjhlYzA5ZjJkOWYgYWxwaGExMDAKKzM3NTIgYzVjZTM1ODQwMDEzMGE5Y2M5MzY0YzliZDIxNmYxOTVkOWY2NjdlNyBhbHBoYTEwMAorMzc1MyAwNzI2N2VkMTM3MTM1OTJjMDMyOTdiMDQwMjVlMDk2NjM1NjAwZTg5IGFscGhhMTAwCiszNzU0IDFmODQxNzgwZWZjMjNlZWRlMDc3NGI2MDNlNjFiODg4YzAxOTdiZjQgYWxwaGExMDAKKzM3NTUgMjdmMzk1YWZlNjBmNjk2NmRlNzM1ZDczZmUzN2UxYWJkNjNlM2JiZCBhbHBoYTEwMAorMzc1NiBmZGJkODk4YmMxZmU2MmQ4NDc5YmFhMTk5OGI0NmI4ODIwNzFiMGY1IGFscGhhMTAwCiszNzU3IDQ0ODYzYzQ5YTQzNmJmYTMwOGQwOTI1MzRmZjY0NzRhNDkwYTc3NzIgbGVnYWN5LXRydW5rCiszNzU3IGExYWVlNzY5OWJlYTY1NGU0ZGZkZjk1ZjFmMTNkNTU5YjJlMmJiZjIgYWxwaGExMDAKKzM3NTggNGE3MjI5NjJmYjY5NzA5NDY1M2UyMjBjNmRjNGY4NzkyM2JjNDc2ZCBhbHBoYTEwMAorMzc1OSA3NTM5Y2NiNzdkMjg4YWE4ZTZhZWMyZWM2ODQ1YTRkODA0NTdjZjFkIGFscGhhMTAwCiszNzYwIDMzMzZjZGNkNGE1ZmY2Yzc2YjEwMTc4ZDYwY2RhNDRkOWQ4Y2I1YjMgYWxwaGExMDAKKzM3NjEgNDcyYTM0N2JhZmNjYzQ5ODEzYTcwZGVlM2M5MjgxMTIwMTU0NDI4MiBhbHBoYTEwMAorMzc2MiAxMzBiMDRmYzU0ZGNjNjk5OGUyMGJiMmExNDljZGVjZTE5NzYxNThmIGxlZ2FjeS10cnVuaworMzc2MyBlZDRjMTE2YjU4OTM0ZTgyODM2NTE5MDZkYTVjNjQwZmE5MWYzYzQ4IGxlZ2FjeS10cnVuaworMzc2MyA4MTFlZjZlZDRjYTFiYjRjMzIxYzY3ZTJkZGZkNDM5N2U1NDhkNzcxIGFscGhhMTAwCiszNzY0IDNiYjc4OGExZGRhMDQ2ZGNlNWE1NTIzMGE5ODRlMTk3NDJhMWMxZmIgYWxwaGExMDAKKzM3NjUgMmJiYTE4OGM2YWRhZGUzNmI3NWRiNDFjMWEyYzZmZTVhZWYyOGQ0NSBsZWdhY3ktdHJ1bmsKKzM3NjYgMDYxMDYyZjhhOWJmZDdkYjFiNGQ2MzE0YzQ3MmIzM2MyODhjNzA5MyBhbHBoYTEwMAorMzc2NyAwOTBkMGNkOTYxYWYxNzUwZWY4ZGU2OGU1NTlmMGI5OWQzODFmOTFkIGxlZ2FjeS10cnVuaworMzc2NyBjMjNjMWFjOTIyMDgyNDNlNDM0ODExZjlkZDE5Y2M3ZmZiMTUyZTY2IGFscGhhMTAwCiszNzY4IDM1ZGI2ZmNhNGRmNGQ3MmVjMmJmZjc4ZTkyYjBiMzRjOThmMjVlNjMgYWxwaGExMDAKKzM3NjkgMDgxNzMyYzZjMTEyOThkMGEwNWZjMWE3ZDBhMjRhMjcwODgxMTM4ZiBsZWdhY3ktdHJ1bmsKKzM3NjkgYzU3OTg3NWIyOTgwNzhlNTdjYzViMTY3YjNiZGRlMjI3NjYyMTJlOCB1bmxhYmVsZWQtMS4xLjIKKzM3NjkgNzQ4MTkwNDBlNzI2NTc5MTZmYjQwYmE0YmE2YWNmMGU5NmEwMDIyMiBhbHBoYTEwMAorMzc3MCAwOWEyYTY2MWU4YzA1MTIxYmRhYjlhY2IyNDg3YjJlMjQ4NWM4N2FhIGxlZ2FjeS10cnVuaworMzc3MCA1ZjBmOGJmN2IzNWNlZDVlMzM5NTQwN2Y4ZTU4YWUzNDU2ZDBmZThhIHVubGFiZWxlZC0xLjEuMgorMzc3MCA5YjRmOWU4MjFmZDQ2ZWI3MTExMmQ5MzFjNDQyOWVhYzQ2NDE0OWFkIGFscGhhMTAwCiszNzcxIDdjM2ZiYzk3Zjk0Njc3MGVhYzQwZDUyZjViYTQ4ZTZjY2U3N2I3MjMgYWxwaGExMDAKKzM3NzIgYmM1YzkyNTA4ZjU2MDMwMTIwZWVmMGQxODExMjM0MGQ1MWQ2M2I4ZiBsZWdhY3ktdHJ1bmsKKzM3NzMgZGNjOTVhMTM3YTZmOTFjZTk1NjExZWZkOWFkMzhhNDA2YjgyYWViNiBhbHBoYTEwMAorMzc3NCAzYjZmOTUwNTMwNDM2MDgwYjc4MzNhNDJiZDgzMWUyZGM2OWYzNjg5IGFscGhhMTAwCiszNzc1IGUyMTBhNGEzZDlmMGM4NmFhYmI4YzU2MTE0YWU1YzYxNzg1YmJkMzMgbGVnYWN5LXRydW5rCiszNzc1IDFmZjM3ZmY2YWZmNGU0ZDZiNWIxMmUxODdhMzRjZGM1OTdmYTc0NjQgYWxwaGExMDAKKzM3NzYgYTI3ZDZlYzNmZDRhNTk5OWY2MjAwZWQ3OTFmNGFjODMyOTA0ZDA2OSBhbHBoYTEwMAorMzc3NyBkNjhmNmNjMjYxMWVjZTMyM2Q3MjAxNmQxNTI0NzE4NzE4MTdlOGM3IGFscGhhMTAwCiszNzc4IGY1YzE5NzliZWE3Y2Q1YzJjYTJiYWRmM2I4NGRlOWViM2Y0YzFjNzIgYWxwaGExMDAKKzM3NzkgNTZjYmZkZjM3MjU0YzllMDg1N2FkMWNkZGUxZDY1ZmUzY2MyZGFjYSBhbHBoYTEwMAorMzc4MCBjMjg2OGVmMjhiZWUyYjJmMWQyYmVjOWYzMDI0MjcwYTBjMmVhZjE4IGFscGhhMTAwCiszNzgxIDFhOGU5MGEzNzM1N2JhZTdiNGFiYTkyMmYxZjBhYjMzYmZkY2VmNmYgbGVnYWN5LXRydW5rCiszNzgyIDhlOTdhNjhiMmIxN2QwMWRhYzc0NTg2MzQ0ZmIwNjhjZWM4ZjhlNjkgbGVnYWN5LXRydW5rCiszNzgzIGJkYmU2ZDhhN2E4Zjg2ZmJjYTJiN2UwYWJlYjlhYzdmNTAyODk1Y2MgbGVnYWN5LXRydW5rCiszNzgzIGE0ZjZiYTJlNDdmZmQ2MzNhMjU2ZDI3ODU3YTk4OWRjMDUwNWEyZmYgYWxwaGExMDAKKzM3ODQgOTc4MTk1NjU4ZTlhMzdlMjBiOWMyMDk2YWYzNjE3NDg0OWI0MTAzYyBhbHBoYTEwMAorMzc4NSAwOTQyMGUyZTkzODg0NWEwZDVhZWZmZTkzYWQ0OTQ0YmZmOWI0MTMxIGxlZ2FjeS10cnVuaworMzc4NiBlNDU5NDhlMmI2NmNlNDg1YWRlNDkzMmE5ZGE1NGZlOTY1NWY4NTUzIGFscGhhMTAwCiszNzg3IGRkNmVhMTY3ZjJiZDFiNzQxYzcwZmU4ODZiOTJhNTA4ZDNmMjMzMGYgbGVnYWN5LXRydW5rCiszNzg4IDBmODhmOTY1YmZmMjdjODg2NzU4MTk3MjBhYjBjN2U1MmUwNTExZDggYWxwaGExMDAKKzM3ODkgMzM4ZmU1OGIyYzY3NzM4NThlYTAyMmY0NWFlMzI5YjA4N2IxNzQ0OSBhbHBoYTEwMAorMzc5MCAxNDdlOTkxOTg4MzhjYzY3ZmI4MTBkODExZGU4MWIwYjJiNmUwYWMyIGxlZ2FjeS10cnVuaworMzc5MCAyMGZiZDA0MzRmYjYzNGRmYzAwYjc3YWFhM2RiMzNjNGY2M2M2YzQ3IGFscGhhMTAwCiszNzkxIDc2ODkxZDBjZDVmZGFjMWU0NTEwNGUzMjg5Y2Y4YjdhYjAyNGI5YTUgYWxwaGExMDAKKzM3OTIgZGM4YWVkOGIyMDRkMThmZmQ3OTI0MTVlZjY0ZDYyOTk5MDUyYjIzYSBsZWdhY3ktdHJ1bmsKKzM3OTMgOGI5MDhlOTkzOTc1N2RjMzUxMjkxMDEzNThjYzI0YWYzM2ExYzgzMiBhbHBoYTEwMAorMzc5NCA4OGJhNWQxN2YzMGEwZjUzYWJmYzM2NzFjMTdiM2U0MWM0YmRlNGU3IGFscGhhMTAwCiszNzk1IDVkNWViNzZiYjI3OGFhNmMxNWEyOTI0NGU3NzZkMmVlNmU1ZDk1ZjAgbGVnYWN5LXRydW5rCiszNzk1IDA3ZTRjNTcyNmY3ODU2NzhhNGY4ODM4MWJmNTg2NWM5NTQzMjc2M2IgYWxwaGExMDAKKzM3OTYgYmJhODAwODhhMDQ0YTMzODc5MDYzOTQ0ZDliZDRhN2YxY2ZhYmVhNSBhbHBoYTEwMAorMzc5NyBjMjNjY2FlYzkyNDkzMjVkM2MzZjA5ZGFiOTQ5NWVjOTY5OGIyNGVmIGFscGhhMTAwCiszNzk4IDAzNjhlZjQ5ZmY0YzYxNzQwYzE2M2FhYTY3Mjk4YzY3ODZlOTFhNDAgYWxwaGExMDAKKzM3OTkgNTNlY2NlZDJmMmIyYTE4NGYyMzYxZjBjOWI5MWFjMDJmM2MxYjkyZSBsZWdhY3ktdHJ1bmsKKzM3OTkgN2NlNDEyMjk1Y2EzY2FiNWE0MmZhY2RlYWJmMjIwZmI4ZjEwNTJkMyBhbHBoYTEwMAorMzgwMCA5N2M1ZTYwN2I3OTc3MzI2N2QyODhhZjgwNWMzMzVhZWI0OTFjNzM4IGxlZ2FjeS10cnVuaworMzgwMCA4ZDhiN2RjOTk5ODJlMzYxZDY4NWJiMDNmNTEzMDRhMmM3ZmE1OGQ4IGFscGhhMTAwCiszODAxIGM5YjNmNzdlMThiYWVmYWU1YTkyZDk1ODVkNGZiZGE4MGEyOTljY2IgbGVnYWN5LXRydW5rCiszODAyIGMzZDdmODE0YjJkMDY0MDFjN2IwY2JiYmRiOWM2ODgzYzY4NTY1MTcgbGVnYWN5LXRydW5rCiszODAzIDI2MDNiNDIwYzVkZWNhYzUxNzhjNDQ2NmY3YzllM2U2YTZlY2I3YTYgYWxwaGExMDAKKzM4MDQgZTliMGNjZTNiOTgwOTNlMGY3NGRhNDI3Y2NhOWMyYTEwZDRjMmNmMSBhbHBoYTEwMAorMzgwNSAxN2U1Yzk0Zjg2MmY3Njc4ZjBhNDhiZWZiOTk5ZGUxNzIyNmRhMTM2IGxlZ2FjeS10cnVuaworMzgwNiAxNWUxYjg2MTA0YTZlNjE4ZjkyYzIxN2ZkNjNkNzg1MjNkNGZkYmFhIGxlZ2FjeS10cnVuaworMzgwNyA5OTVhOGVmNGE1YzA0ZjNlNjgxMTgxNjhiZTA3YTNlYjg5MjQ5ZWU1IGxlZ2FjeS10cnVuaworMzgwOCBlZDIxMWM3NjEwODU4YmQ2ZDU5NGEyMDcwN2UzNWZhMjQyYmQ1MDE5IGxlZ2FjeS10cnVuaworMzgwOSA4N2NiZjllMjI3Mjk4ZTZhOWI2NTMyYmU5MmE3NzJiZWE1NTEwMGQ3IGFscGhhMTAwCiszODEwIDVjNmM5OTA2NmIyYzcxMDk2MjhmZjQwM2M4ZGY1ZjZmOGI1OWE3OGQgYWxwaGExMDAKKzM4MTEgNDhhZWM5ZDM4NTJhOTUyOTE5YzBkYzgyZmE4MWQ3MDUwODYyZWQ4ZSBhbHBoYTEwMAorMzgxMiA4NjlmYmE4MDljNjg5ZTNkNjRhNjM0OGY5NWY0MzFlNDJiODY5YTk3IGxlZ2FjeS10cnVuaworMzgxMyA1YzAxOTMxZGE1OWJkMWQxOGUzNjdlYzNhOWIxNzgyY2UzZTc5NDhiIGxlZ2FjeS10cnVuaworMzgxMyA3YzM1N2M2YTI4YmRjODlkZWQ4YTQ5ZTZlYjc0ODYzMjBiM2YwYWQyIGFscGhhMTAwCiszODE0IDdlY2Q2MzgwNTY2Y2IzMThiMmNlMmQ2ZDZlZWU2MzEyNWVlMDJkZjMgbGVnYWN5LXRydW5rCiszODE1IGUwNTNhODc4MjhmNDQyNjJiM2FkMjYzOTJiZTQzZTQxNGM5OTZlOWUgYWxwaGExMDAKKzM4MTUgOTc4YmYxMzRmNDRhYjdjM2M4NGM0NzZhMjkxZTdmNGVkOTc4MzZhNiBhbHBoYTEwMAorMzgxNyA5ZmJmMzRlMWMxZjc2YmYxNDA0ZjhlYmU2YzJiMjYzNzI0NDNlNDIyIGxlZ2FjeS10cnVuaworMzgxOCA1YTE3YzQzZGNmZjAzY2Q5MjEwZDVjY2M1YTgzNTE4OWExNzg0NDhiIGxlZ2FjeS10cnVuaworMzgxOSA0MDQ3ZjIyNGVmZGIwZWM3ODgyZGRhYmVhMjgwMjIwNzY3ZGQ1OWY5IGxlZ2FjeS10cnVuaworMzgyMCA2MzBlMDMxMDljNjM4ZGQxNmNkZTkzNzhhZmE0MTFmOGMyOWQxZjZkIGxlZ2FjeS10cnVuaworMzgyMSBkZjBhZWU2NDExNGJjZjFmOTIzOTdiYzhmYzg0NDdhYjYxNGNiYmJlIGxlZ2FjeS10cnVuaworMzgyMiAxZmY2Y2VkZDIyNDEyZGVkNzU3NDFkOWE0ZDdmYzdhZGE1MGI5YmM2IGxlZ2FjeS10cnVuaworMzgyMyAxYzM2NDRiYWI4NmFiNTNmMmYyOTI2NDExMWQzZDgyYWQxMTg1NmI3IGxlZ2FjeS10cnVuaworMzgyNCBiNjhmYjczOTg1ZDgzNmE0MzIwYWVjMGM2ZDJkMzFhNjM0MjdhZDEwIGxlZ2FjeS10cnVuaworMzgyNSA0NDM0NzFmZjMxNDcwYTJlYjMyMzI5MGI2MmFkOGUyMWE2OTAzYTZiIGFscGhhMTAwCiszODI2IGJhMjRmYzhkM2Y4YzU1ZGY1YjFjNDNiZWVmZDEyMzQ0MTcxZjY4ZjcgbGVnYWN5LXRydW5rCiszODI3IDBlZmEyNDBiMWRiYzA1N2RjNDRmYTFkNDRkNGM0ZDhmZWRhYzU2MzggbGVnYWN5LXRydW5rCiszODI4IDUwNTUzMDgxNTJhNGUyODc3YjllNWY5NzJkZTI3YWU4NzNkYjMzODYgYWxwaGExMDAKKzM4MjkgNWNlZjRmNWEyOGNlZGZjYTVmYWRlODI1ZWRmYzYwYjA3ZmY2ZTg4OCBsZWdhY3ktdHJ1bmsKKzM4MjkgOWVjN2Q2Zjc3NTAwY2EwOTBjMjE5MWUwYjNiNDBjNjZhM2UwZmU3NyBhbHBoYTEwMAorMzgzMCA4MWYyNmJmMTE3OGY5ZTM3MTBjMDhhZGY2YjhjYzk0MmIxNmZmZDE2IGxlZ2FjeS10cnVuaworMzgzMCBlZTNkNWVhMTNhMzdiOTJjNmVjMDU5ZWU5ZDgyOTg3M2IxNjE5NjQyIGFscGhhMTAwCiszODMxIDQ4YWEzZDMzMTRhYzE3MWRiNWNlMTdmNjU2ZTRiNGM3MTAwMGUxYTAgYWxwaGExMDAKKzM4MzIgOTgwNjI2ZWNhZDYxZDhkMDU2ZjM5ZmVjNGUyYmE4OTQzNGZiYWRjNiBsZWdhY3ktdHJ1bmsKKzM4MzIgNWMzNTA2MzFjODM5NjA1YTFkM2FkYzViZjQzY2FmMTQ4MDVkMWYxZiBhbHBoYTEwMAorMzgzMyAzZTY1YmZkMTU3NmVkOThhMDhhMTk2YzcxNmFkNWM4MmEzMDQxMWZjIGFscGhhMTAwCiszODM0IDk5MzAwODdlYThmNWU2ZThkN2NjNTQzMjZhNmZiODRlYTI4YjljNzUgYWxwaGExMDAKKzM4MzUgOGM4OWY2ZWY5ZjlmOGY1NDdkNTdjODU4NmUzMGVlYjgzZGVmMzQzNCBhbHBoYTEwMAorMzgzNiBjYjVmZDgwMDY4Y2VmMjU2ODlkYjdkY2JiZGY5ZTM3MTliNzllOGNhIGFscGhhMTAwCiszODM3IGJhZmM1MzNlMGViNmFjNWFhNWYwODJlY2NmYmQzMTgyNzhmNmM1NDcgbGVnYWN5LXRydW5rCiszODM3IDcwMzJhOGEyYzQyYzUyMjRlM2NmNTJmM2M4ODZlYzM2Y2I1M2QxMzAgdW5sYWJlbGVkLTEuMS4yCiszODM3IGM5NmZjNDk3YjkzMmY1ZGQyODYwM2IxZGJkYzUxZTFjOWViN2QwNDEgYWxwaGExMDAKKzM4MzcgYjE1YjhjYzliOGQxMGUwMzUyYTBiOGI3ZThkNTFmYTMwOWRiNmRmMyBsZWdhY3ktdHJ1bmsKKzM4MzkgMjY4ZTU3NjMwMDE2MjAyODA4NjA5ZTFhODZkMGRiMDg4MzhkNjkyNSBhbHBoYTEwMAorMzg0MCBiNzBmMDg5MDc1NDYxN2JmM2Y4NTgxMjRjZmJiN2MwNTE3MDZiNDlhIGxlZ2FjeS10cnVuaworMzg0MSA2ZjUyYjUzODliODg4MTdkNDRiNzE0ODg3MWQ3YzA3MDQ5YWE5Nzc4IGFscGhhMTAwCiszODQyIGUzODBiNGQ1NGZkMzllYWYzYWI4OWExYzk0ZTNhZDE4OTVkNjk2OGYgYWxwaGExMDAKKzM4NDMgNWRmZDFkNTFkNjZkZWFhNTY1ZTVhNzcwZTQ2Y2YwMGQ4MGVhYTVlYSBhbHBoYTEwMAorMzg0NCA2OTY2ZDk1N2I1YjFlNzUwZjYwZmRlNTM3YjM5YTUwZDBiOGNhNWVjIGFscGhhMTAwCiszODQ1IDJiNWY4YjIwMjFiZmQ3MzA5NGM5ZjgyMjhlZTQ4ZjY2MjRkYzU4MTcgYWxwaGExMDAKKzM4NDYgOGRmNzJlNThmYTk4MDMyYzdlNDI2MWExNTJjNDM0ODQwNmEyYTg4MSBhbHBoYTEwMAorMzg0NyBhZDIxNjg3NmM0N2ZiZmY3MDRiM2FkMjEwNWQ5OWEyYTVhYjg5YzI0IGFscGhhMTAwCiszODQ4IDhjNjgxNGYzNGNkZDkzNmYwNzM5MGMzZDA3Yjk4MTU4OGM0ZmRiMGYgbGVnYWN5LXRydW5rCiszODQ4IDIyYjdkMzczNWJkMjVmZWMzZmNjZTQxNmYzNGMwOGY4OTg4ZTI3NjkgYWxwaGExMDAKKzM4NDkgNmQzNTMwODI2MWY0Zjc0ZDg1YzEwM2I5NzVjODQzNGU0MDc3ODViOSBsZWdhY3ktdHJ1bmsKKzM4NDkgNzcyM2UwMDAzOThkYTc3NDQ0OWQ3ZWZkNjUwNThiYzE5MjQ4ZTUwZiBhbHBoYTEwMAorMzg1MCA1OTczMzU0ZmI0OTk1NGY3MjQ2NWY3MTMyMmNhZWNhYjQ2YWQwYzc1IGFscGhhMTAwCiszODUxIGNkMjc5ZTBmNzdkODUzZjI2M2NhNzYzNTgwZmVjMTM1MzU5NmQ0NzcgbGVnYWN5LXRydW5rCiszODUyIGMzNDE1YjMxOWI0ZTg2OTJmOWM2NGUyNzdhNDdmYmMxNmI4ZTE4ZmQgbGVnYWN5LXRydW5rCiszODUzIDE3MmFhMGVlZWI2ZjdjYmYwYjc1NDFmZmRkODM3ODhhYWRiMTFmOTQgYWxwaGExMDAKKzM4NTQgMjc0MDY2YmRlMjQxMjNjYWMwNTYzNWNiNTkyMzhiMDA2Y2ZlNDlhYSBsZWdhY3ktdHJ1bmsKKzM4NTUgZGYwZmI3ODhjMGMxZjUwNjUzMzEzODhiYjM5MWM2NGU0NDg1MGU3YyBsZWdhY3ktdHJ1bmsKKzM4NTYgOWUzNDQ0OGEwMDVlZDc1ZmIwYTViNTk1NzcxNGY0YzdhMmNjZmRlMiBhbHBoYTEwMAorMzg1NyAxNmQxZGFiM2YyYzFiOWIzMzJhNzY1MDJhZWIwNmU3M2NlOTNiOGFiIGFscGhhMTAwCiszODU4IDhjYzkwOGIwZDgzYmRlMjVlZjExOWM2NTI3OTQwNzY1MmFmMDlkZGYgYWxwaGExMDAKKzM4NTkgMzI4NmJmZjQ0M2M2YTA2NjBiY2Q1ODFiMWM3NDIxZjhjZjhiNGQ2MSBhbHBoYTEwMAorMzg2MCAyNzRiOTNiMTIxMTNmNTg5YTU1ZDhmYTY4NGM4MDhjYTQ4Y2I3MTlmIGxlZ2FjeS10cnVuaworMzg2MCBlNWQ2NjUyMzFjNTg5NGM2MzYxYjMzYzhhMmEwN2JiY2U5MjdkMGVkIGFscGhhMTAwCiszODYxIDhlYWIyZWU0MGYzMmRiZGVkOGFjNjRlMmRjYmQ4ZWI4YTZjYzc1ZDQgYWxwaGExMDAKKzM4NjIgMjQ5ZmU1ZTI0ZTIwZWI4ZDllM2E3NzJiN2JlYzE2NzdmZDJlNWY4MiBhbHBoYTEwMAorMzg2MyA4YWFiZTlhYWUwZmEwN2E2YWE1NDJkMWZmOGMyODJhZWU2Yzc2YzU0IGxlZ2FjeS10cnVuaworMzg2NCBjZjYwYTJiMjQ5Nzk4NTg4OWY4YmY0MWIwMTc2NTUxMzYwYmEyOWFhIGFscGhhMTAwCiszODY1IGY0ZGI5MmVlZjJhZjcxN2I0ZWNmZDc1NTFiNGIwZjU0NzQ1YjM1MTMgYWxwaGExMDAKKzM4NjYgMDIwZDhjMmQ5ZDNjZmIzZDI2ODVhMDRiMzZkMzZiZjNkNWQzNDNiOSBsZWdhY3ktdHJ1bmsKKzM4NjcgYmQxYTRkNzE3ZTlkMWVlNDRlYThlYTNhOGZlY2U3NDJlZWMyZmNlMiBsZWdhY3ktdHJ1bmsKKzM4NjggNzgwZjMzNWJmNTI0YjcwNTlhZTY0MjU1ZjkwOWUwMGU2YmI1YTk0ZCBhbHBoYTEwMAorMzg2OSA1OWZkNDY4NmY4OGNhNjRiNGI3YjAzZThhNjJkYjM0YWI0M2MzZjA1IGxlZ2FjeS10cnVuaworMzg3MCBiM2JmZjVlZDVkM2QwODk0MWNiZDRkMjVjZjg0NDkyZTczMmVlYzgyIGxlZ2FjeS10cnVuaworMzg3MSA5NjAwNTUzOTAwZDQ3ZWExNDA1MDI4M2NkOGVlOWFiYWRhNDQxN2Y2IGxlZ2FjeS10cnVuaworMzg3MiBiMzM3MjBkMGFkOTdiMTUzNzk2MTQ5ZWQ1YTY4ODMxOWMxNThhMzQ5IGFscGhhMTAwCiszODczIGNkYWZjOTUxZThlOGIzMGZkMTMyMDZmNGI4MGRmMTQ1ZTNlM2RkOGUgYWxwaGExMDAKKzM4NzQgZGRkY2JhMjAzOGJjYjViMmYxOWZkZjBkNWZjYmQ1M2YyMDgwZTgzYyBsZWdhY3ktdHJ1bmsKKzM4NzUgN2QyMWM5MjNiNTRhZWJmM2NkZDczMWRmZjU5MjM5ODk2MzU0MTQwZSBhbHBoYTEwMAorMzg3NiA5MDM3OTRkZjVlYTllZWQ1NWEzMDBhY2YyZjc2MWM1NzhmMjY0YTkxIGFscGhhMTAwCiszODc3IGU0NDQ5OWE0NGNiOGUzNzRlMzViYmY1NGIzYWE2YmZhMGY2MTc3MDkgbGVnYWN5LXRydW5rCiszODc4IDM3MDA1MGNkMGI2YzUwMWU2MDM0OGIwOWQ0YmZiYWVlMjQzYmY4YWQgYWxwaGExMDAKKzM4NzkgOGQyNmVlMjRhZDE4MmVhMGU4YWI2NzFhNDdmOThkNzU5MTcyYzFhOSBhbHBoYTEwMAorMzg4MCAzYWNmODE4ZjM1NDgzMWY0NjIzNjc1NTFiMWJlYzIwYTUyOWJiYTAzIGFscGhhMTAwCiszODgxIGNkYjE0MDQxY2M4N2JiNjQwYWQwNGIwNGIyMDJmY2ZiY2U3YmZkZWMgYWxwaGExMDAKKzM4ODIgYWNiYTQ0MjdlODljNzAwMDc0OGY5ODRiZGE2ZWIyM2E1ZmMzNzJlZCBhbHBoYTEwMAorMzg4MyAzZDAxNjk5OTI2NGFjMmM3M2VjOGQ2YjQ0MGYxZDg2ZjdkNTgyMWM1IGxlZ2FjeS10cnVuaworMzg4NCBhZjNmMmEwM2JiMThmZTBlZWY5N2Q5NmVkNGVhMTlhMTIyYTkyYWZlIGFscGhhMTAwCiszODg1IDNjZGRjNjdiZTNmNTc1NjYyY2Y3MzRiNTEyNDcxZWZiNTAwZjg2MjYgYWxwaGExMDAKKzM4ODYgYWU0YjljYjViYTE1NjExMjhhY2JjY2MzOTdiMDA2ZjE4MTM5MDcyNCBsZWdhY3ktdHJ1bmsKKzM4ODcgMDZhYTYwOGM1ODllODZjNTg2YmMxY2NkMjYwZmY1YjVmNGY5MDNkNiBsZWdhY3ktdHJ1bmsKKzM4ODggOTFmODQ2ZjZkNmE2MWQwNDNkMGU3MjRmODVjNzg0ZDE0YTcxNWE1MiBsZWdhY3ktdHJ1bmsKKzM4ODkgZWFjYWE0ZjA3ODI2ZDlhMDBiMjNmMjE2MDQ5ZDNlMzhhODdjYTQ2OSBhbHBoYTEwMAorMzg5MCAyYTBkNDk5NzQwYjYyNGI4ODA3MjQzOTgzM2YxZWJlMDZhNzY1NDk5IGFscGhhMTAwCiszODkxIDgzNjIyYjdhMDBiNTIzOGY4MzA1OTA2Y2Y4ZTM0Yzg3Y2JjMDQ5ZGEgYWxwaGExMDAKKzM4OTIgZWFhYmEyY2FmZWViOWMzNDA3ODllYTJiYTQzNDIyMWMzOTUzMTE4OSBsZWdhY3ktdHJ1bmsKKzM4OTMgMmQwZWNlNTYwNDA2OWExNjJmNzk0MzQwYmViMWE4YzgwNDQ4YTY5NiBhbHBoYTEwMAorMzg5NCA3MmY4ZTFlNjE0ZjA2MzAzNTc3NTkzYzcxZDIxZmQ2OTE1NWE5YTU3IGxlZ2FjeS10cnVuaworMzg5NSA0NTcyOGJmZWNiNzY4ZjAyMTI4NTg3N2M2MTUxZmE5ZTYwMWEzMjhlIGxlZ2FjeS10cnVuaworMzg5NiA2OTVmYjQ5NGEzYTIyZmM5MzZiNDRmNTMwZDg1OWNlY2QxN2JhMGIwIGxlZ2FjeS10cnVuaworMzg5NyA3YmY2YjEyOGU5OGM0ODg2OGU1M2Q3YmY3YmJhYzI1OTI4OGM5MDI1IGFscGhhMTAwCiszODk4IGYzMjYzNzU5Njc4ZWYzODQ3MmZkMWMzODY3MTZhMWFlMDJjYjIyODkgYWxwaGExMDAKKzM4OTkgNDQ0ZTM0OWY5NjJmMGFlMzAwNjgyNTJlNTlkYmU1Nzc5MWZjYzY4MCBsZWdhY3ktdHJ1bmsKKzM5MDAgYjIxZjA0OGMyM2U5ZTAyODQ1MGYxZjJlYzRkMDRhZWI1NzEyOWJjNCBsZWdhY3ktdHJ1bmsKKzM5MDEgMjg4YTQ2MDZkMmZkZTEwMDY4ZGM3OWNlYTZhY2Q5ZjgwNzQ1NTg1NiBhbHBoYTEwMAorMzkwMiAwMjFkYWFiZTY5ZDg3OTU2NjFmNzlmNjdlYWViMjgyZmYzOTZhNTAwIGxlZ2FjeS10cnVuaworMzkwMyBjMTczNjBhMTY1ODcwMzhjNWJlYmJmM2ZkZTliMWRlZTdkM2EzZjAwIGxlZ2FjeS10cnVuaworMzkwNCAzMmRhNTc4MThlOTdiNWZmZDIwOGViOTZiZWFjYjRhMGQ5ODMwZGI4IGxlZ2FjeS10cnVuaworMzkwNSBiOTYzNGJkNWNhNTVhOThlMmVmZDZiMjc5YzBkOTI5YTBkZGY2YzYxIGxlZ2FjeS10cnVuaworMzkwNiAyMzg0ZmFhNTM1MGYzYjZkMWUwZjJiMTNmMmY5ZjBkMDU2YjQ1NDU5IGxlZ2FjeS10cnVuaworMzkwNyBiM2ZjZGJkMmQ5YmJhNTNiNTc4NTllODMwMTI0MmZlMjFjNGJhMzEyIGxlZ2FjeS10cnVuaworMzkwOCA4ZDdhYjJjN2U5OTMzMDkxMDI3NWYwMWRiOTFkOGVlZTU1MTZkNDU3IGFscGhhMTAwCiszOTA5IGU5NmE4Y2ZiYmVmMWI2YTNkZGY2M2VmOTBmZDA4ZWY3ZDZmZTQ3NzkgYWxwaGExMDAKKzM5MTAgYzk2NDM2NGE4ZjdmOGU3YzA0ZmU3N2UyOTYyZGMyZjI4NDIzNjA4NyBhbHBoYTEwMAorMzkxMSBiMmQxOGZhNTI5ZjQ4NzYwY2JkYjRhNTcxZDQyMzUwNzI1ODhiOGE2IGFscGhhMTAwCiszOTEyIDA1NTY2MTdhYTMzODZlNzBmZjQ3MGVjY2UxZjZhNjAzNzFlYzQ2MTIgYWxwaGExMDAKKzM5MTMgZDU5MGZmZDU0Zjg5OGNhMTE3ZjAwMjc5MjAzNDdjMWJjMmU5MTk2ZSBhbHBoYTEwMAorMzkxNCA3OWJiNjgyNzBjN2IxMmNkYjAzNmEwYWZkNjJlMjdjZWQ4NWExNzZiIGFscGhhMTAwCiszOTE1IDQxYmNkMTg1M2ZlYTU3ZGI5YjllZDdmODI5Yjc3N2Y4ZTBmOGFhODggYWxwaGExMDAKKzM5MTYgMTMxMzIzZjE3MTU5MjJmZGVjMGE3NDViYTBjOWFhMmQ5OGM5ZjE1ZCBhbHBoYTEwMAorMzkxNyA4MTAxODY1MGRjMzI0NWE5NmViYzA0MzBjZmIzOGY5YTJiOTBhZjhjIGFscGhhMTAwCiszOTE4IGMxM2JiZGZlZWJmZmU2YzFlMGY0ZTBhYWQ1YTdiY2UxZDBiYmNiZGEgYWxwaGExMDAKKzM5MTkgY2E1ZWQ1MmFjYTI3YTZhOGQ3NjBlZjBjYjkxNzkyOGJlMjkxNWEwNiBhbHBoYTEwMAorMzkyMCBmYzQ1ZTU3N2ZmOWIyMGNlYTg1Mzc5YjdkMjcwNGFkN2VhNzQ3ZjYyIGFscGhhMTAwCiszOTIxIGE3MDQxZDZmN2RlM2UzNTg5NzdkYTkyODc4ZGMyNDU1NGQyMGNhMTIgYWxwaGExMDAKKzM5MjIgNWVmZmFhZDcxYmE1MmU1ZTZiNDQwYzhkODUzYjY0ZjQ5YjI5NmI1ZCBhbHBoYTEwMAorMzkyMyBhZDIyNzBlNzFlYzNmMGI2NTNjMjdjMjZmYTE1YmEzY2VkZWU5Mjk0IGFscGhhMTAwCiszOTI0IDM0NjlkMDRlM2UzNmQ1ZmNhODk5YmY0Y2IwYzlmMTU1YjVhNDc1MTAgYWxwaGExMDAKKzM5MjUgZjA3MTRiYjRlYTk2YTFlMTAwODMyMmVkNWI3MWU0MzlmODczMzI3OCBhbHBoYTEwMAorMzkyNiAzMzdhYmRjMTU4NGE0MjVlNTQ0M2E4OTI3ZmRhMzFiZWJiYTE2NTliIGFscGhhMTAwCiszOTI3IDdjNzVmNjA0NjhmODAyZDBmNzMzMjk0ZjFjZmZiNmFmYmM1MThhN2UgbGVnYWN5LXRydW5rCiszOTI4IDIyMzZkNzA5ZmYyZGFlYTYwOGZhMDRiZGVjNTM5MWQyMTU5NmQ0YjYgYWxwaGExMDAKKzM5MjkgOTBhMjA5OTM3NDdkMWYzOGE1YTBjNGJiNWYyNTI0NjBhNTZkMzFiZCBhbHBoYTEwMAorMzkzMCBjMWNkZWVkOGM1MTQ0ZjVlZTcyMzMyZTczZTVlMDQwNmJkYzBiNWNmIGFscGhhMTAwCiszOTMxIDNkOGJhNDE4NDhmZjBmODIyNTQ0NDVlMjY5ZWIxYzhlMzMwN2NiOGEgbGVnYWN5LXRydW5rCiszOTMyIGI0NTRkYzkyNDdiMDc2YjdjYTU3Y2E5NmU4YzEyNGUwZGEwOTI4YTggbGVnYWN5LXRydW5rCiszOTMzIDk5OGM2NDIyY2Q4YWFlMDNkMjhiOGE1ZDMyY2JiNmNjYjY2OGEzMTQgYWxwaGExMDAKKzM5MzQgYmNmMGI4ZGZkYWU5ZjQ0NmQ2MTMxZTQ5ZTI4NjI0ZDgzMWIzOGJiNCBsZWdhY3ktdHJ1bmsKKzM5MzUgN2ZkZWFkZmE4M2UwY2M2ODc4OGMzNzA0OWNiYjI4NzBiMDdlMDFiZSBsZWdhY3ktdHJ1bmsKKzM5MzYgYWMyZTVjYzI5OTQ5ZDllZDZjM2VjMDU5NDE1NDkzYWY2MDFiMzJhMSBsZWdhY3ktdHJ1bmsKKzM5MzcgNTk0YThjMTJkNjg4Mjc2ZjJkMjI3MGY4YjQ2YzBlZGYwNGNiMGVlOSBhbHBoYTEwMAorMzkzOCBmY2EyZmVkZWE3MWNjNjdhYTIyMGJlZmMyNWE4ZmI2MWE5NWFiNGMwIGFscGhhMTAwCiszOTM5IDJjNmYxMzM3ODAxY2MwMTAyZWY3MzA5NmJmMGRlNmE2YzFhZTAxODMgYWxwaGExMDAKKzM5NDAgMTI4N2ZiMDU5NTg4OGMwMTQ3YzQ1NWViNjYyNDdmNzc4ZDRlZWRhNCBhbHBoYTEwMAorMzk0MSBmNjU3OTQ4ODkzNDM3MGE0NDQ4ZTZlM2MzZmY3NTQyZDNlNzVhZDQxIGFscGhhMTAwCiszOTQyIGFjOWUxMmI0ZWE4YzY1N2JjYTM0ZTE4YTcxMTdiMGI0NGUzZGZlMTcgbGVnYWN5LXRydW5rCiszOTQzIDIwZGY2NTMzNzZiNDE3Yjk4ZTJhYWFlZDNhZGViNDc1YWM5MTVmMzIgbGVnYWN5LXRydW5rCiszOTQ0IDY3MjAxMTg3MWExYjY0MDU5Yjg4MDBmYWUxZTc4N2I0MDI1NTE1MTcgYWxwaGExMDAKKzM5NDUgYTViZGZmOTcwNTk1MWZhNmNlN2E2NGI5NDIxNWU5NjUwNzg5ZDhjNCBhbHBoYTEwMAorMzk0NiA4OGRlMjFlZjRhOGEzMGY2YTkxNjliODk2ZmMyNmE4YzdhYzkzNzFmIGxlZ2FjeS10cnVuaworMzk0NyBiYTZhYzgyZmNiNjg2ZGUxNWNjMzZhN2UzZmQzNDc1OGM1YTRhZDhmIGxlZ2FjeS10cnVuaworMzk0OCBiMzQ0MzU0NmQ2ZWU0YjAwOThmOTJiMGM1NDRlYjI1NDcxZTkwODNkIGxlZ2FjeS10cnVuaworMzk0OSA0NTc5MDM1NmUwMjRmNzYyMDZiYzFhNDBlOGNhN2FiNTFiNmEwODUyIGFscGhhMTAwCiszOTUwIDIxOTdkZDI0MWQ4ZGM4NjIxNWNiYjJkOWFiZWY4MTRhMzg2NmZiNzYgbGVnYWN5LXRydW5rCiszOTUxIGRlYTY3YzJhNGMwN2YzYmRmZWM5NDEyYjYxYjhkMTQwZjY5M2IzNDggbGVnYWN5LXRydW5rCiszOTUxIDc5YWI0ZGY5ZDBmNWZmMmYyYzljM2EzMDZmMWZlYjFhZDJjNTI4MTQgYWxwaGExMDAKKzM5NTIgOWUwZWNlNmVkODFkN2EwYWQ0NTkzNGQ2MjE4MGNiNWMxMGQwYTkzMyBhbHBoYTEwMAorMzk1MyBjYTNjY2FhODUwNjAyNmZkZTFmMmI5NjhlM2M1MmFlNDcyMTg0OTgzIGFscGhhMTAwCiszOTU0IGVjYmFkYjgxODg0NzUwM2I2OGJmZmUxYWRmMWU3NGNmNGU1N2E0N2QgbGVnYWN5LXRydW5rCiszOTU1IGIyYzkyMmNmYjRkOTdiY2ZjZDg5NTBjZjk4NjU0NTQyNTg2NjBkNmYgYWxwaGExMDAKKzM5NTYgNGJjZjU4NGMxNTcyYjRmMjcxODAwMDYwNWRmYTc4ZTg4ODM1NzQ2NiBhbHBoYTEwMAorMzk1NyA4M2I0MWJmMTkzOTJlZDNmZjRhYjc0YTM2MTdiYmQzOTlhODM0NDg3IGFscGhhMTAwCiszOTU4IGQ3NDEwNDFjYjA3NmViY2JlMWY0YmIzOTdhOTllZmVjOTQ4ZGVlY2UgYWxwaGExMDAKKzM5NTkgMDlkNzdiYjcxZDc1YjUzZGViNWE0OGJjMjNiYWY5N2M0NTcwNmZkZSBhbHBoYTEwMAorMzk2MCBjZTMyODQ3MTY0ZTFlNmQwNzcyYzQ5MTM2YzkxM2M0YzgwMmEwMDhkIGFscGhhMTAwCiszOTYxIGU3NmM2ODdhYzc4MWQ0MmE3NDM1OTY4YTI3NDQzZTczNWE0MzJmZDUgYWxwaGExMDAKKzM5NjIgNmVjMTUyMjIxNzkyZTY1ZjdhMTFlMmFiNWVlZjVkMTQ4YmYxZjJjMSBhbHBoYTEwMAorMzk2MyAzM2QzMzQ0M2VjNDU5ZmQyMjhjZDU0NWUxNGQ1ZTlkNWRiOWJiNGI0IGxlZ2FjeS10cnVuaworMzk2NCAzMDFmOGNhOThlMGI1ZjQ0MGM5ZDAxNDUwNzcyZDNjOGUwZWE4YTEzIGxlZ2FjeS10cnVuaworMzk2NSA1N2I5Yjc3ZGEyMWIzOWQ1YTlhNWM5MTdhODExZGY4MmYzOWY5MjEwIGxlZ2FjeS10cnVuaworMzk2NiA1ZTVhNjFiZGRlMGI3ODE5Y2QyMzllZWRlOTg1YjBiNmJlZDY4YjVmIGFscGhhMTAwCiszOTY3IDkwN2M1ZGQ4OWM2Y2VmYmE4YTQ4ZDQ3ZGIzOWE0MDk3Zjk1YjcyMWEgbGVnYWN5LXRydW5rCiszOTY4IDRlN2ViNWEzZmJkYWYxMjE1ZWQ3MDAzNjhiZDlmZThkMjA4OTAxMWYgbGVnYWN5LXRydW5rCiszOTY5IGMyZmYyMTYzZjBiNzBjMWVjZDBkOGFhYzAzZDUzMzlhNDQ3ODk2ZTMgbGVnYWN5LXRydW5rCiszOTcwIGU4YmYxMDc3MTc4MTM5N2I4ZDM3NDUyOWYxMTJmOTRiNDlhYzg1MDMgbGVnYWN5LXRydW5rCiszOTcxIDYwYTcyMTRmMzNhODgxNjVjNzA0YjczMTllZTYyOGQ1M2JjYzhlOGEgYWxwaGExMDAKKzM5NzIgNTQ4ODkxMWViYzI2ZWM3Mjk2NWFjMzA5MWIyN2UwMzEwYmIxNzJlNyBhbHBoYTEwMAorMzk3MyAxNDMxYWJiMjgzNTNmNDg1MGVhNWRiYzIxYjIwNjI0ZjBlZjBjZGNmIGFscGhhMTAwCiszOTc0IDEyOWQ5OGI1MTdjMjU2ZmU4NWI0MzkyNjM3NmFhMDY2NGQ3YWY0OWUgYWxwaGExMDAKKzM5NzUgYTc1NGJjNzRlNTg0ZGFlYTdmMTBmNDhiZWY4YzczMTk5Y2JhYzk0YyBsZWdhY3ktdHJ1bmsKKzM5NzUgNzU5MzlkY2M5MzhhNzFhZGExZWQ4OWMzNTkxMjZjMGRjMTYwMWMxNyBhbHBoYTEwMAorMzk3NiAwNzcwODBkNzU4ZGRhNjgyZWQ2MThhM2E1YzlhZmNkZDc3YTJlZTI4IGFscGhhMTAwCiszOTc3IGM2YWZiOTZhNDUyMzBmNTUxZGYxNGFjMjExOWNjODBhMzY1YzFlYWEgYWxwaGExMDAKKzM5NzggNWMyOWY0YjFiMjg1MTUyNTM0YTBlMjU3NmYzNzI3Njk1MGJmYmRiMyBhbHBoYTEwMAorMzk3OSBlMjkxMTA1YjFiZWVhYjI2OWM3YTM0Y2RiODkyMTdmMWIxNzhmNTRhIGFscGhhMTAwCiszOTgwIDY5ZDVkYzI0Y2IzYjU1OWY4Y2QxOWVhZTUyOTAzZDAxN2YzMDU5NDYgYWxwaGExMDAKKzM5ODEgMjQxYzM1NWZkOWVhZDU3M2ZmMDgwODkxZjUxMzEyNzczZjRmZTlhMiBsZWdhY3ktdHJ1bmsKKzM5ODEgOGRlZDhjNjU1MTFkYTQzYmQwYjkwMzQ3MDg3NWJiNGRlYjk1ZWQ2MCBhbHBoYTEwMAorMzk4MiAyZThlYWVlOWVmNDVjZWE2ZWMxYThiMjU2OTgxZTRlYmM5ODI3OWVjIGFscGhhMTAwCiszOTgzIGJlMmRiMzE0MjM1NzRkNjE4NGJiNWExNGJiOTY3OGVmNjdlMDA3MzQgYWxwaGExMDAKKzM5ODQgMjIxZDQ3YjI5NzRlNzNhYjc5MWE0MGNiOWQ4YWM1Y2Y0NGE5OTc3MyBhbHBoYTEwMAorMzk4NSA3OGFjYWRlYTM5MThmYzk2N2U1NThmMGZmNDhiNzg2OGRlMTlmNWRhIGxlZ2FjeS10cnVuaworMzk4NSBmOWRiYmJiMTc5MjkwMjVkMDZkNjI5YTRiZWQzZTUxYTExMzFhNzI0IGFscGhhMTAwCiszOTg2IGFjZWExMTAzMTI5YmFjMTFhZjYxZGRhN2Y4MTJjNTE4ZGE1Yjg2Y2UgbGVnYWN5LXRydW5rCiszOTg3IDgzZWU3NjQ5ODIzZDI1NmNmMjc5MTNiYjQ0OGY5YzRhZmM4Y2ZmOGUgYWxwaGExMDAKKzM5ODggNDA0OGNjZjg1YjNkMjQ1NjY3NTRiYTMwMzNlYjc0Y2NmODY0NjAzNCBhbHBoYTEwMAorMzk4OSBkN2E4NTU3ZTc4MGNkNTI2YTg1NTM4YWVhNmExZDBmNDRkNTQ5YmQ5IGxlZ2FjeS10cnVuaworMzk5MCBjOTQ5ZGNiMDM0OGJlNGVhYmRmZTUxZWQ5NGM4NTliZDMyY2U3N2M2IGFscGhhMTAwCiszOTkxIDdiOTgyOGJjNzFkZDY0OTI1OWFiNGVkN2MxNWQ4YTIyZGVhYjhiZDEgbGVnYWN5LXRydW5rCiszOTkyIGUyMGQwNjk0ZTc0MDE0ZWJmNmRhYjY0ZDliMjZkMzBiZmE1ZTNkMzIgbGVnYWN5LXRydW5rCiszOTkzIDEwMzZmMjA1Y2MyZDdhNWYxMDdjZGMxZmJlZTMyMDc0OTgxOTJjMDUgYWxwaGExMDAKKzM5OTQgNzA0OTJkNjU5ZTNjN2MxMjRkM2ZjYjE0MDlhMjA5YjNmZDcyNWNjYiBsZWdhY3ktdHJ1bmsKKzM5OTUgYTgyNzU1NjI3ODRjZDJmMjY5MTk2MTFiMDg3ZTU2OTlkNjE0MzhmOCBsZWdhY3ktdHJ1bmsKKzM5OTYgZjUwZmU0Yjk1MmJhYTE3MmQ2ZGZmYTNhMjhjYWQ2Mjk1ZWQ1ZDczMSBsZWdhY3ktdHJ1bmsKKzM5OTYgMDMyNmI1ZDYxNDQ1ZWUzYThkM2RlMjgxMTlmOTY1MmNiNzJkMmUzZiBsZWdhY3ktdHJ1bmsKKzM5OTggNmEwMWYwOTlmMGFkOGQ0NTQ3ZGQ3YzZhOGExZDhlYWM2ZTVlYmZkZiBhbHBoYTEwMAorMzk5OSAzNjZmOGRlZTk2ZmJmNGU3NzQ2MDhlMGVkZTliYzBhYjRkN2JhMmExIGFscGhhMTAwCis0MDAwIDJlMDUwYTUwYWEwYTAxZjM1MzVkYTAyNzkxYTZhMGZlMTkzMzNlZjIgYWxwaGExMDAKKzQwMDEgMmIyNzU1MzAyOGFhYzIzZTY4NzA4MTc5ODYzOWM0MTlkMzRjYzA4ZiBsZWdhY3ktdHJ1bmsKKzQwMDEgNzQ5MjBjM2EzNjdkMmQxYzdmMjkzODhiMjQ0NDAxZmQyZWU0Mzk4NyB1bmxhYmVsZWQtMS4xLjIKKzQwMDEgMjI1NDgyMjlkNmZkZGNlMzNjZjU3YTM5MzFmYmI3MjcyYzRiZTc2NiBhbHBoYTEwMAorNDAwMiAwNDc3YmMzOWM5MzU5MmFkOTIzMzkxZjc4MzE0MWRkYTgxODM5NDMxIGFscGhhMTAwCis0MDAzIDdmODkxZjMyODY0Y2E1MmExZDBjNzk2YmViN2IzMDJkOTAyY2MzZjkgbGVnYWN5LXRydW5rCis0MDAzIDg4OTZlNGVjMDlmYzRhNDY4NDhmNDM4YjA0MWQyMDhiMjU1MzRlMjAgYWxwaGExMDAKKzQwMDQgYjE0YzZiOTU1MTYxY2EwNGFlMDkzYTg2NzIzZDQ0MDNjYTEzMGNiZiBsZWdhY3ktdHJ1bmsKKzQwMDYgODQ1NDU3OWFiNTJmMzcxZGNmNTU0NmNiNTMwZTJkZDZmZDYwZmY1ZSBsZWdhY3ktdHJ1bmsKKzQwMDcgOWNjODU4YmQ1NzNkZTM0ZjMwOWZlMTZlYTVjNDhlOTQ2Yjc1MzcyNSBsZWdhY3ktdHJ1bmsKKzQwMDggODEyZDA4MTFmY2YzZTA2MmU0NTE1OWI0MzhjYWJhYWYwMDMwOGNkMiBsZWdhY3ktdHJ1bmsKKzQwMDkgYTc1ZGM4NjU2Y2IwYTIzOTNkYmE0YzI1MmYzMWQzMTJiZTRkMTMyYyBsZWdhY3ktdHJ1bmsKKzQwMTAgYjZiNTBkOTQxMjVmZDQyZjEwMmJjMGQ4ZmMwNDQzYzQ3NTk2Mjg0ZCBsZWdhY3ktdHJ1bmsKKzQwMTEgODdhMmIwNGM0NjgwYmQxMjFmYzNlNjg2ZmZhODc4ZjZiNGZhMzE2YiBhbHBoYTEwMAorNDAxMiA5NmQwZGM0NzM5ZWNhMjQ4MjA3NTNiMTRiZGJlYjA4MTcwN2FiZDJlIGxlZ2FjeS10cnVuaworNDAxMiAxY2Y2MDg1Njk3Y2Q1YTBhNGUwMmIzZjA5MjRmYTI1NjhkZWQwMTI4IGFscGhhMTAwCis0MDEzIDU1MmIyMWU3YzIzMGE3OWQyNmJjMzE1ZjllZjU2MDk4ZDA0ZDc0NzUgYWxwaGExMDAKKzQwMTQgYzFmYjJiNmM0NzRjZWE5M2VlNTRjYzgxZjE0ZTY5YTBiY2M0MjcxMiBhbHBoYTEwMAorNDAxNSBlNDFhNjUzMDY3MDYyMDA1YTJjNWVjNTA2Y2FkZTA5N2QxYjg0NDQ2IGFscGhhMTAwCis0MDE2IDE1MTMyMWExOGRiNGE3OGI4ODdhN2I2MDc2YTQwZTYwZDJlMDY0YmYgbGVnYWN5LXRydW5rCis0MDE2IDQyNDg2YmYyMzY0N2RiNDMwMjY1YTRlMzMyODE4NDZjYTcyZjYwOGUgYWxwaGExMDAKKzQwMTcgOGZiZTg2MGEyNmUxOTk1ZjFkYTFmYTcxZDk4OTVkMTQ0MGQ4MDUwYiBsZWdhY3ktdHJ1bmsKKzQwMTcgZTQ2ZTBlZTc2ZGJjNDQ4MThhNjY3ZWMxMjQzYWZlOTU1M2FkN2FkMyBhbHBoYTEwMAorNDAxOCBhOWRkMmUxZWE1YzllYTJjYTQ3YjRkMGM4MGFjZWI2YTE0NTZmZjBmIGxlZ2FjeS10cnVuaworNDAxOCBhMTlmYTA1NWVjNDhiMjQ0NjdhN2EyMzBkYmNhYTI3YmNjMzE2YTMzIGFscGhhMTAwCis0MDE5IDQxMjFhZmQ3NmQ3MzRhZmVjMjI0ZmIyYmE5ZWI4ZDE2NmMzZDEwOTIgbGVnYWN5LXRydW5rCis0MDIwIDVhNmMyYTIzOGYwMzg3NmUyYTc5ZTJhYjMyOWYyNWUyN2JhMjg5MzUgYWxwaGExMDAKKzQwMjEgMjljNDI1NWNkNDVjZDVmMmViYzZjMTFkNmNmNGYwYzU1N2FmODg1NCBhbHBoYTEwMAorNDAyMiAwMjAyYTcyZDk5NGUzZDM4MjU1ZjNhNTUzYTkwY2UxYjE1MzZlZWZmIGxlZ2FjeS10cnVuaworNDAyMiA0ZTFhMmRiZjkzYzUzMmEyYmZmY2UzYzVkZmU1N2E3OGY2ZDZmMjJlIGFscGhhMTAwCis0MDIzIDNlNmI2N2NhOWRiZTQyNjlmOTU5MDA0MjM3MmI3ZWFmZDhjMzZiNzcgbGVnYWN5LXRydW5rCis0MDI0IDAwN2FkZjAxNTQzYzUxNzY5ZmMzMmQ4YTE5ZGU0OTQ2MWZjZWUxOTkgbGVnYWN5LXRydW5rCis0MDI1IDZjZTgyYzE1ODFiOTJmNzcxZGI5MGM0ZjUyODVkYWM1NmVkYjljY2IgYWxwaGExMDAKKzQwMjYgZjI2MDIyODgzODFhNDI1N2Y4ZjYyZjk4YTAzNmZkZTc2OWYwZWRjNyBsZWdhY3ktdHJ1bmsKKzQwMjcgNTkwMzljMDg1NmM5Mzk2ZTNmMWYzYTQ3NDQ5ZDMxNjlkNzNmNzVmNCBsZWdhY3ktdHJ1bmsKKzQwMjggYTNlYjI1MjU5MzI5NDIxNjZlMzQwZTdjNmQ4NDg3MzRhOGFmNTYwMiBsZWdhY3ktdHJ1bmsKKzQwMjkgMWY0OTI5YTQ4ZTY0YTAwNDdjMzhlZDc4OTFkMTJlYWI1OTIxYmIxNCBsZWdhY3ktdHJ1bmsKKzQwMzAgOWFmOGIzOTkxY2VkZjcyZWJiYjk2ZGE3Y2I2MTE0NDhkYTFiOGM3YyBsZWdhY3ktdHJ1bmsKKzQwMzEgZmNhZjhhMmJhZjM4OTZlOTAwMzc4Yjg2MDg0OWRhYTAxNDYyMGJjMCBhbHBoYTEwMAorNDAzMiBiY2E4MjkwYzFiMzFjZDdkNzI3MDVlMzkzMjc1NmUyZDI4ZWUwNTUxIGFscGhhMTAwCis0MDMzIDdhMjliYjNiZGRiNDY1YWU0NDBhMzVkNmY1MzkyNjllM2M4MDRkNDQgbGVnYWN5LXRydW5rCis0MDM0IDM3Y2Y4N2Y1NjFlY2E5ODVhZWFmMmEwNTE0ZGRkZDk3ZTlhMTg4MTAgbGVnYWN5LXRydW5rCis0MDM1IDA1NTk2MmY5NmRlN2I1ZjBmYTA4ZDNjM2VmMTU1NmJhMGZlODI2ZWMgYWxwaGExMDAKKzQwMzYgMTRiMDg3ZmU1MzQ3MGM0ZTM3ZTE0MDAwNzU4ZWRlNTU1OTkwN2U4MiBsZWdhY3ktdHJ1bmsKKzQwMzcgNzA4NjU0YTVkZGRlMDMxMWQ3NTgxNzU2NmNhYjE3YzZiZGFjM2U0NyBsZWdhY3ktdHJ1bmsKKzQwMzggMGQwMjlkZWU5MTI5MGY5YTJmNmU0NWEyYWRmN2Q1Y2IwOGZkM2Q4NSBsZWdhY3ktdHJ1bmsKKzQwMzkgN2E0N2ZhYmIxODdjNmMyNjdjZWU3N2I0NTI3OTU2MzJiNjFjNzI5YyBsZWdhY3ktdHJ1bmsKKzQwNDAgZmE1MGQ0YmQ1NTM3ODVhMWMxYWJlNzI5NzkzNjhiNDA2ODkyNThhOCBsZWdhY3ktdHJ1bmsKKzQwNDAgNjBiMDE1OGQ5NDhhY2MzYTE5MDVlMGIxZDdhZWUyNTY1OWQ4ZjczOCBhbHBoYTEwMAorNDA0MSBmODQ5OGIwODhhYTFhMGM1MDM2NmRjYTUyMzZjYzU1YzEwNDhjZDExIGxlZ2FjeS10cnVuaworNDA0MSA4YTdlNTMwZGQ0NGE1ZTY0MDAwOGE5MzZlYWMzNTM2YWU0NzJjYjMxIGFscGhhMTAwCis0MDQyIDYyM2RkNzI0OTE4NjY0NDExNDhkODBiZDA1MWI5MThmNGNkMzJhZTIgbGVnYWN5LXRydW5rCis0MDQyIDE5ZjIwNzUxZjhkZWZiZWYxNDZjNzc4MTU0NTllY2IzY2IwMjc3NTcgYWxwaGExMDAKKzQwNDMgMDNlMDk3ZGRlY2EyYmVjYjgyMjkwODZmNmYyNTBhZTZmNGYxY2Q0NSBsZWdhY3ktdHJ1bmsKKzQwNDQgNmNmNmI2NjkxYWFlYjI4MTdmMDkyNmZhMmRlMTNmOGM0ZDcyYjJhNCBhbHBoYTEwMAorNDA0NSA3YWM0ZTQ5NzkxZjQ3ZTFiZGFkOGVmNGU0NjhiMzkyYmM3NjI0NjQzIGxlZ2FjeS10cnVuaworNDA0NiA5ZTJiMTk0MmE3NDIwYWE0MDY3YzE5NWNhOTFkOWE5YjY2NjdhYzdiIGFscGhhMTAwCis0MDQ3IDFjNzFhMjdmZDY5MzNkYzZkZTU1ODcxMzI3YTQzYWIyYjA0OGNhYTIgbGVnYWN5LXRydW5rCis0MDQ4IDUxYTA2ZmRmZmY3ODlkMzNlMmEwMDZmYzE2OGI5NjE4NTRlNjE0MDQgbGVnYWN5LXRydW5rCis0MDQ4IDExZWExNjFhMDFjMmZkOTJiNDRhOThiMjIwMjZmMjk1NmZhNmQxMDkgYWxwaGExMDAKKzQwNDkgY2YzMjhhOWVjNWQ0NDg3NmNmMDI0ZjExZDdhYzU2NTlmOWQzOTU0MCBhbHBoYTEwMAorNDA1MCAxOWIwMGVmNGNkZDk5N2RhMzI4ZTM5ZTNkNTJkOTM0OTExMDk2MTNkIGFscGhhMTAwCis0MDUxIDdlNWY5N2JhYjFlNmY4ZGVjNzZkNGYwNzQxNzQ0N2ViNTc5MjAwZDAgbGVnYWN5LXRydW5rCis0MDUxIGNmMjRmM2U3YmU2ZDdlNjVlYTVhNWM1N2ZiZjFmYmE4ZjhhZDJmZTAgYWxwaGExMDAKKzQwNTIgMzJjMjhhZGNjZDEyYjA2OTBjMTk1ZDNhOGMyMzhiYTEyNDcwODYzZiBsZWdhY3ktdHJ1bmsKKzQwNTMgM2FhYzgyNWE1M2I1MjNkZjVmMDJhZDBmMzg3NzFkMWE3NWM2ZDE1YiBsZWdhY3ktdHJ1bmsKKzQwNTQgY2JlZTVlMWU5YmU4MzI1OTA0MjY5OTgwOTgzMTBmZTY5YmExMzdhOSBsZWdhY3ktdHJ1bmsKKzQwNTUgNzYwM2EzYjJjYmVlOTkzNDVkMmY5ZTNlN2NmYWJlZjkzMTg4ZDFhYyBhbHBoYTEwMAorNDA1NiA5MGVlNzFhM2ExM2ViYjQ0ODM2Y2FmMTZmNjk4ZGI5MmQyMThiZDVkIGxlZ2FjeS10cnVuaworNDA1NyBhNGM3ZWZmMjU5YTU5YzhiNGY1MTk4YTI2Nzg0N2RhZGE3NWI4YTE5IGFscGhhMTAwCis0MDU4IDRkZWY5MzRmZjc1YjgwNjJhYmZhOGEwNzAxZGJhNjc5NWY5NzU2ZTQgbGVnYWN5LXRydW5rCis0MDU5IGYwMmE0Njc1NGY1MDVjM2VkMzBkYWZkN2M0YzE1NTQ4ZmRiOTBkYTYgbGVnYWN5LXRydW5rCis0MDYwIGE4NjJkOGY0NTA3YjhiNGJkM2M0ZGZhMTNkM2Y4YjkxNzYzODRmZGUgbGVnYWN5LXRydW5rCis0MDYxIDFiOWVjMzdkYjJiOWFiZjk1Y2ExZThiOGQ0MThiNWQwZGU2NGUwMmYgYWxwaGExMDAKKzQwNjIgNTA5NmJiNDhjY2ZlMTMwYmZlMWZlOGMxY2EwMDRkY2Y4NjVhZjk0YSBsZWdhY3ktdHJ1bmsKKzQwNjMgYjVhNjYwY2FhOGUxYmM0NTdiNTQxNDQzYmIxYjFkZGEyZWVlY2Q3MiBhbHBoYTEwMAorNDA2NCBkOTBhYWEwOTEyM2JmNTg4YTc5ZDA5ZmZlZmYzNzA3MmE5ZGQzZDhiIGFscGhhMTAwCis0MDY1IGUyODIzMTEwYzA1MTU3MDQ1NDQ0ZTFmMzhjMzJlZDhlYzVmMmQ5MTIgYWxwaGExMDAKKzQwNjYgZTZhMjEzYjdkMGQyYjk4MDNjZjQwMjNmMGU2NGZjMGNkNzI1MTY3NyBhbHBoYTEwMAorNDA2NyA3MmM5YTRkYzQ4NDdkNzk0ODk3NzZkNTZhMjQyM2QzZWEwZTUzYWJiIGFscGhhMTAwCis0MDY4IDRmNDQ5YWI2MDU2N2ZiYjY0M2UyYWQ0NTM1Y2NiZGM5Yzk4MGZiYTQgYWxwaGExMDAKKzQwNjkgZmZkNDk1YmFjYmQ0MzZmMDBlOGNiZWIyYmIwYzEwODNhYjgzZjA0MyBsZWdhY3ktdHJ1bmsKKzQwNjkgOGU3ZDhkMGQ0ZTkwYTk0NTE1OGRhNTZkYWM5ODhkZjcyOWJiNWE4NyBhbHBoYTEwMAorNDA3MCBmN2UxZTIzODkzNzVmMjMyNjIwYWVmOGU0YWQ0OGU3MWM0YzU4YjIzIGFscGhhMTAwCis0MDcxIDAxZDI2NDg2YjBlZTY2NDdjM2YyZDEwYTBkYmJmNDEyYTM2ZjgyZmMgbGVnYWN5LXRydW5rCis0MDcyIDE0YjAzNDE4YzkwZmIzOGFmMjBmZWQ3ZjQ3MjY4OWVlOTUzYzRjY2IgbGVnYWN5LXRydW5rCis0MDczIGE2ZTZmYWQxYTAxYjMyZmRmNDQ4MzNlNGYwZjk4YjczZDM3MjRmMWMgbGVnYWN5LXRydW5rCis0MDc0IGEwOWVmYjEzNWRlNTUyNDYzNTBlZTQyNDVhYzE4MTk4NGI1N2U1N2MgbGVnYWN5LXRydW5rCis0MDc1IGQwNzRiMmZiNjA5MTRkZDdkNWNiOTAxYjkxZjk1ZmI5MmVmNjgyZDUgbGVnYWN5LXRydW5rCis0MDc2IDczZGQyYTk3OTg1N2YxN2IzNmU5MTUzMmIxNjcyZmU2NWRjYjk2MmUgbGVnYWN5LXRydW5rCis0MDc3IGI1ZDViYmNlYjAwZjYwNDg2MzRiOThmMDdkODY5YmRkYjRhOTNiNTAgbGVnYWN5LXRydW5rCis0MDc4IGE5NjE2ZjU2NTQ2NTUzNzgyOTVlNGE5YjMxM2UzZWQ5NGU4NGE4NTYgbGVnYWN5LXRydW5rCis0MDc5IDI3MzQ1MTg5MjMyN2NlMWYxYjA3ZjBkZDQ5MDlkMGQ1NmVhNjhkZGYgbGVnYWN5LXRydW5rCis0MDgwIDM4MmI0ZjhhNzM3YTRjZmYxYWI3YjA1ZmU5M2I4ZGQ2NzA1NDY5MzggbGVnYWN5LXRydW5rCis0MDgxIDk1M2U3NGVhYzAwNjI5ODE2OWM1MmVlNzJhMjllN2Y0ZjQ1ZDU2Y2YgbGVnYWN5LXRydW5rCis0MDgyIGNlZDNkMTEyMmY3Y2JhYjEzZTA3NzEzMmQ2OGQ0ZDAxMTkyODg1M2IgbGVnYWN5LXRydW5rCis0MDgzIDM0NGRkMjhkYTljNTY2MjBmNTM2ZWExYTM4ZTg3MjgyM2M1MGRiM2YgbGVnYWN5LXRydW5rCis0MDg0IGE5NDhiNDRhZDRhMTU1MGI1NzJiYjc1ODEwMmZlNWMwODMwZmQwNDYgbGVnYWN5LXRydW5rCis0MDg1IDJmZTU0ZjYyY2RiNTQ5NzJjMWE1OTJjYzYzZGVhZTRlOTc1OThiZmMgbGVnYWN5LXRydW5rCis0MDg2IDRjMzA2MmM3MTM1ZmNkM2Q3MWQwNGU0ODYxZGU4MmIyMjdlZmY5YjAgbGVnYWN5LXRydW5rCis0MDg3IDZhMGU1Y2Q0OTljNDVlZGRkNzVjY2IzYmY4MjQzYzQ1NmQ4Y2YwYmUgYWxwaGExMDAKKzQwODggNDk2YzdlOWYxMWQyNDgyMGRiMzQ1MzgxNGY2MjM0YWRkNWYyMjljOSBhbHBoYTEwMAorNDA4OSBjYTAyMzM5OWU1Yzk0YmI1ZTdmOTJmOWE1ZjA0YTQ0MmIwM2IyMjM4IGFscGhhMTAwCis0MDkwIDUyZmE0ZGNkMWIwZTBhMTYyYjBmZGM3YjQ4YjEzZTQzYmI1YjI2NGQgYWxwaGExMDAKKzQwOTEgYjZjMzVlMWZhZGFlNmZmMTI3MWY1YjVkODc1YjBiYjY0YmZlMTZiZiBhbHBoYTEwMAorNDA5MiA4Zjk2ODAyNzMzMDc3NTM4Zjg5NWUzOTc1NzQxZGQ5YjE4MGU2ZmMyIGFscGhhMTAwCis0MDkzIDlhZTdmMmZkODlmMTA5N2RjNzhhNjYxODlhZWI0YmYwYjQxM2ZiNDcgYWxwaGExMDAKKzQwOTQgNGI1MGYxMDQyZThkYzA5MDM4NmQwNTQ3MTc5MTg4MmMzYmUxZjY2MCBhbHBoYTEwMAorNDA5NSA3NjM3MTgwNWQ5ZjM3NGYxOTczMjg4MTI5YTI0MzMxNGNjNDI4ODYwIGxlZ2FjeS10cnVuaworNDA5NSAwM2IwNTcxN2I5NTIyNGFkMmE3MDdhNzYyMDU2NDRkOTMzNzA5OTViIGFscGhhMTAwCis0MDk2IDFlM2E1NTNlNDc5YWYwOGRlM2U3ZDlhOGVhNThkMDczOGI1OTJkZjMgYWxwaGExMDAKKzQwOTcgM2I5MGE5ZmMxZTAzOTg5Mjg1M2I2NWJjY2Q4NGI4ZmVhMTkyNDA2OSBhbHBoYTEwMAorNDA5OCAxZjA2ZjcxOTA0YzI0MWYwYTM1YmE3NTgzNDc3ZjhjZTllNGM5MjFhIGxlZ2FjeS10cnVuaworNDA5OSA1MDhiNzNlMGE3ZTRmMWYxNWJmNmNlNDRjN2U3NmE3NjlmYmZkODI0IGFscGhhMTAwCis0MTAwIDNhZmFmYWMzZDdhMTZiZWJjMjllNzRhMTRmY2RiNGJlMGEzYjZkZmYgYWxwaGExMDAKKzQxMDEgMDJkOGMxNTg4MmZmOWFkNTA5NjhhM2JlMTdjODAzZmFiMThmMTEyNyBhbHBoYTEwMAorNDEwMiA1MjkwNDI4YmFkMzcxNWI3M2ZhMGQxMjAwYTM5NGQ3MjE5MGIwNzYzIGxlZ2FjeS10cnVuaworNDEwMyA3NWJjYjFmYzY1YmU1OWMxMzI1NzY5ZTJhMmQyN2JmNTE0NmZmYzU4IGFscGhhMTAwCis0MTA0IDhjZjY0MGVmMzQ0MDA3Njg5ZTlkMzY0NDFhZTQzNWViN2FhNTNlMmMgYWxwaGExMDAKKzQxMDUgMTAwOWVhNDkzNjZjYzk4Y2Y2ZmFmOTU1ZDZjZDlhZDAzZDg5ZGI2YiBhbHBoYTEwMAorNDEwNiBjMmU2YzlhN2E5NWY4YjQ2YWY5Njg2MWE0NWZhMjQ0Y2ExYzIxM2ZmIGFscGhhMTAwCis0MTA3IDBhNjA0NjBlOTlmMDJiNDE5NmU0YTdiZGMzYjI5ODhjYTc4MDQ4MjAgbGVnYWN5LXRydW5rCis0MTA4IGRjOGUxZDcyZDc4ZGNjZTVlZjUwMWI0M2Y1ZDUyZjI3YzY5NjUyMjkgbGVnYWN5LXRydW5rCis0MTA4IGNhZWFlZTM5MGU0M2ZlNTczYTkzZDM1YzJiY2U4MzQyNzMzYTBjZDMgYWxwaGExMDAKKzQxMDkgMWIxN2FhZjI1MTA1NDk3NmJiMmMzYWVjN2M0ZDU5NDE0MDFiYjRiZCBhbHBoYTEwMAorNDExMCAyYmNkZGM5MDVkYTBiOWY4Y2I1MjdlNmZjZmI1ZmU4ZGM0M2M3MjQ0IGxlZ2FjeS10cnVuaworNDExMSAwODA4MTFiMWQwMjMzMjBmYWIzYTg5NWZmNmNhYzk0ZDZiMTNiYWM4IGxlZ2FjeS10cnVuaworNDExMiAxY2Q0ZmQxNjYyM2RlMjM0ZTZjMjFmODg3ZDM5MzczNGM1MzkyMjljIGFscGhhMTAwCis0MTEzIDRjYmY1MzZhNmYxODAzODU4ZTRiNTcwMTlmNmJhZDc2ODY3ZmNhNjYgbGVnYWN5LXRydW5rCis0MTE0IGM1NGMwN2FiY2ZjZjMxZmZiZDI4ZTM1MDgwZGJjNTA0MjIyMzljOTAgYWxwaGExMDAKKzQxMTUgNmJlOTFjNDRjYWZmZDVlMmMzZjQyOTEzZjhkZGIyM2FmOTg1YjUzMiBsZWdhY3ktdHJ1bmsKKzQxMTUgNmU0YTg5ZWUxMTYzNGI1ZWZjMGRiMGZlMTA3NTNiZDgzOWUxMzE0NiBhbHBoYTEwMAorNDExNiAyM2ZkNTBkNzdiNWEwNTAzNmRhYmRkZjRiZDg0N2E3NTZjODIzZTU5IGxlZ2FjeS10cnVuaworNDExNyBiNWE1N2FmNDA1MDhjOGU0ZGE1ZWFhYTZlNTg4YTUwZWQzNzU5MWQ0IGxlZ2FjeS10cnVuaworNDExOCBiYjYxODE2ZTFkYWIwZTQ2ODEyMTNhNzIxZWM0ZGFlMzljMzk5MGZlIGxlZ2FjeS10cnVuaworNDExOSA5NDYyMWE0NjhiNjBkNDE1OTNjMTJhYTgwMzAxOWY2ZjM2ZDgzYzNmIGxlZ2FjeS10cnVuaworNDEyMCA5M2UwMzY3ODZiMTdhNzhkMGQwZWY1ODE1MDE5NmI1YThkOTRlYmU1IGxlZ2FjeS10cnVuaworNDEyMSBkODhhZjU4ZTk1Y2QwODQ0ZWI5OTUxYTdjNmJiNDJkOTA1NzM2OGFmIGxlZ2FjeS10cnVuaworNDEyMiBlMjY2NWQ5ZDRlNDZkMjU0OWQ1OWJlMDg3NTVlMGQ3MTVkZDE3Yzc1IGxlZ2FjeS10cnVuaworNDEyMyBjZjI5YzA5ZjA3YjYxZjc5ZWEyMzhiMTdkMTJiMDYyNDU2ZDY1MzYwIGxlZ2FjeS10cnVuaworNDEyNCAwM2QzNTFiNmY3MzhlNGM1YjhhMmRmYjE4ZGJhZjgzN2U4OTA4YWVhIGxlZ2FjeS10cnVuaworNDEyNSBjNTAxMjc4MDkxNzlkZGVkN2M3YTAxMzg5MmRkNGFhM2RhZjBlMDJkIGxlZ2FjeS10cnVuaworNDEyNiBiOTQ5MjI0YTRiZDU2MWE4ZDg1MGIxM2ViNDhmNGU5Yjg5ZjE1MTY0IGxlZ2FjeS10cnVuaworNDEyNyA5MDJmZmY1NWRiMzgxZjA5MzRkOWFjMzVlNWYyMmI2YjdiMWZkMmM5IGFscGhhMTAwCis0MTI4IDUxN2JhYWUxYjY2M2MyNjFiNmEwN2RmZjU5ZjFiMDYxMDhlNTg2OTMgYWxwaGExMDAKKzQxMjkgNDY4Yjg3ODRkYTQ4Yjc0YTA3ZWE4MGJiNjAxNWM4OWNjNjVlZjRjOSBhbHBoYTEwMAorNDEzMCBiZmNmZjhhZjk3NTE2ODdmZTkxYzFmNTJiYWE5OTMxN2RlODdiZDg2IGFscGhhMTAwCis0MTMxIGY4NTQwYThjZjVkNzk0NjQ1YjRiNThiZTViNDA1ODc4ZDQyMWNjMzUgYWxwaGExMDAKKzQxMzIgYTI0MDNmZTJjODg1ODA1NWY2NTFhNzkxOTAwODI4MDQ4YTFmNzk0MCBhbHBoYTEwMAorNDEzMyAyYjA3ZDkyNWMwOWQ0MWVlZGQxYmY3ZjI4NGNiZDhhZmE4M2ZjZmFhIGFscGhhMTAwCis0MTM0IGRmMjIwNGU0N2I2NWY3NWEwNWVlMjFkMmU1ODJlMWFjYWIyMzYzYjUgYWxwaGExMDAKKzQxMzUgNzdjOTQ5MzAxZGIzNzQ5MDRiZjY1Yjc1ZTE1NThlOGJiZjEwYmViMiBhbHBoYTEwMAorNDEzNiA3ODc0NzU2MTBiMDJlMzFkYzU1NzBhMTMyZDBhNzdhM2NjNjEzN2I3IGxlZ2FjeS10cnVuaworNDEzNiBiNzA3MmVjN2Q2NTIzN2FjZTQ3MWFkM2ZiMzgyMTExNGM1YzQ3YWVjIGFscGhhMTAwCis0MTM3IDdiMWM0OWE3ZDM3NWVhMDk1ZjViNjg3MGFjYTIxNGQyYjE2MjA5MzcgYWxwaGExMDAKKzQxMzggZGEyYWZjMDI5OGE3MGZjZTdkM2MxOTY4YWE0MDYyMjljMmU2NDViNSBhbHBoYTEwMAorNDEzOSA5ZGE0OTQyMzg3NzNjOTE2ZTI1YTZlMzE1ZmQ2ZmJkOWVmMWY0YTIyIGFscGhhMTAwCis0MTQwIGZiNWJiOWU3Y2Q3YTgxOWMxZDRlMmFhODUzNGRkOGEyZDY4NTM0NjkgbGVnYWN5LXRydW5rCis0MTQwIGViZTg2ODFjZjVmZWFmMWE0ZGQ5ODAwNzRlMGI0MDIwNmMwODkxOTAgYWxwaGExMDAKKzQxNDEgODc5ZThkMDRlNTg5Njc3ZmM2NDA5NWQwMDczMmQ2ZWUxNzg0NzhkYyBhbHBoYTEwMAorNDE0MiBlYjExYTA5OGI3ZmYyY2NkZTgzOWVhNzYwMTBhMWM3MzU2ZTVkNzM3IGFscGhhMTAwCis0MTQzIDllN2QyMDZhNDkyMjE2NmEyMTlhYjU5ZDQyMzliNTJkNjMxOTllMzQgYWxwaGExMDAKKzQxNDQgOTNkZjgzMDIyYmU4NzhjMTEwNzZhODYwODhiOGMyMGUwMTc1MzRlZSBsZWdhY3ktdHJ1bmsKKzQxNDUgNzdiYmU1OGFmZWFiNTI1MzJiYWExNzBlZjU5YzQzNjg5MzZmOWZhNiBhbHBoYTEwMAorNDE0NiAwMTVhZjFjNDc3MjY0MjdmZWZiYTZhYzA0Y2Q2ZTRiNTc4ZTVkNjQyIGxlZ2FjeS10cnVuaworNDE0NyAxOTAxZTA4MDg2ZjlmZDY0ZTcwZjFlMTJiOTI3NjQwY2I3NjZkZWJkIGFscGhhMTAwCis0MTQ4IGYxYjA0MGJjYTNlMTJlYWQ0YmU1OWNlYzQ4MDU4ZTljYjc1NGQ1ZTUgbGVnYWN5LXRydW5rCis0MTQ5IDBmYjNhYTVjYTRjMDJlY2UxMDFjM2JkMGNlZDU4NGRlNGJiZTk5YmYgbGVnYWN5LXRydW5rCis0MTUwIGJhOTU3YWE0MjI0MWE5Y2U5MGI1ODc3NTc3OTkwNDdiNzE2ZTU2ZDEgbGVnYWN5LXRydW5rCis0MTUxIDIyMjgwMmYwZDk3ODI5NTQ1ZjQxMGQ3NTAxZmFlNmU0M2JmZjRjZTUgbGVnYWN5LXRydW5rCis0MTUyIDRiYmEzYzkwN2ZmYWU0NzVjYTBiMjM1MWRiMzVkZTMxZDkwZjkzYzUgbGVnYWN5LXRydW5rCis0MTUzIDE5MmQ4NjliZWI5NzM2YTE4MTc2OTA3NDM2YTA1NGI5MGY0OThmOWIgbGVnYWN5LXRydW5rCis0MTU0IDZmODFiMTNmZDZhYzA4ZDQyZTYxODhlZmJiOWIzNjRmYWZkNTRmZmEgbGVnYWN5LXRydW5rCis0MTU1IGRlMmRjMWJjNGJhZTFjYzNjOGM5ZTkzODM3MGRmN2M0NzczMzRlNjEgbGVnYWN5LXRydW5rCis0MTU2IDM3NWI4Yjg2MzEyNmZhZWRmZThjNjA5YjA5Y2IxZTc0YzFhYTRlMTEgbGVnYWN5LXRydW5rCis0MTU3IDU2NTZmODg3ZmZmMzdlZmQ5MzllODdmNmEzYWI1ZDk4ODczZTYxMTUgbGVnYWN5LXRydW5rCis0MTU4IDM2NmEwMjkyYjYxNDJlNjQ1MGRjMzVlYmE2Y2U3YzViMmE3MDM5MTEgbGVnYWN5LXRydW5rCis0MTU5IDJlZjlkNTBhYjY1NGJhNTAwM2JlNDg4YjllODI5NWIwODMxYzMwYTMgbGVnYWN5LXRydW5rCis0MTYwIGJiNTY2ZDI4Y2FhMGQzYWZlOTFiZTY2OGUxNTlmMWNiM2Q5NjhiYWMgbGVnYWN5LXRydW5rCis0MTYxIDU4NDBlNTUzZWI4ZDg5ZmM3NTlkZTMyNjBiZDFiYjlkNTFmZjlmNGQgYWxwaGExMDAKKzQxNjIgZGIwZWFlZjQyY2I5NGU5MjE5YWU4OTZhNzg3NDNhYjg5NTZiMWE5ZCBsZWdhY3ktdHJ1bmsKKzQxNjMgOTkyOGQzMzM4MjFkZTBiYmI4YjhhNTRjMTFhMTFkZDU2ZjM0N2ZmNiBsZWdhY3ktdHJ1bmsKKzQxNjQgNTA0YmZhNTliOTU0ZWY5N2VjMWY0NmNiODIxYmNjNGJhMTUyOWRiNyBsZWdhY3ktdHJ1bmsKKzQxNjUgYmE5Yjc1NWUxN2ZlMGIyZGQyMDYyN2EwNzBiYWNhZDI5YTkwNzYxZCBsZWdhY3ktdHJ1bmsKKzQxNjYgMGQ2MTMzYWJiNmU1ZmNiZjg4M2Y4YTBiYWMxNjkxODRkNzJhODY3OCBsZWdhY3ktdHJ1bmsKKzQxNjcgYTE2MDFmYzJiM2U0NDE0YmEzMjhhMGJlMzMzNzU3ZGQ1YzJhMjZhYSBsZWdhY3ktdHJ1bmsKKzQxNjggMmY5YmEyZWJjYjEwNzNiZmUxN2NiN2U3NDBlNGVhNmEwMjdlODMzMCBsZWdhY3ktdHJ1bmsKKzQxNjkgNDIxMGIwZGVmM2Q3ODE1MDUzYTcxYmEyMWNjYTc3NjdiYWQ5NjY2OSBsZWdhY3ktdHJ1bmsKKzQxNzAgMWRkMzExNTM3MDlkZDVjNjI3OGY2ZWJiYWJjZjQyZjEwZjA2NDM1ZSBsZWdhY3ktdHJ1bmsKKzQxNzEgNDcwYTUxNTQ1ZDZjNGRjZWNjOGExMjVmN2VmYWZlMzBkYjk0YzdhYiBsZWdhY3ktdHJ1bmsKKzQxNzIgZTVhOGY2NDc5MjE2OTFkOWUyODcxMTQwNjM0ZmIwMDYwMWYxNDNiNSBsZWdhY3ktdHJ1bmsKKzQxNzMgZTE2NzY5Y2Q3YTkwMWVkNzQzZmQzMmY4Mjc3OTUwYmZlMWQ2MDNkNCBsZWdhY3ktdHJ1bmsKKzQxNzQgY2RmNDRjMTRjMjcwODkwY2IwZDc1NDBkZjk2MjlhNTRkY2U2NTc4MiBsZWdhY3ktdHJ1bmsKKzQxNzUgZTgwYzcxMzlmNTMzZTRlMzlhYjE0ZWZhMzgwZDVjZmE3NGZkYmMxNyBsZWdhY3ktdHJ1bmsKKzQxNzYgNmIwZjBlZjJjMTMyYzc1OTcxOTZmNTY1ZWM0NDRkM2Y4OGM2MWI0MiBsZWdhY3ktdHJ1bmsKKzQxNzcgYmQxZDBiYTQwZjkwY2U0MjZiNTE1NmJiN2FkM2Q4YTY5NmU0ZTIxMiBsZWdhY3ktdHJ1bmsKKzQxNzggN2YyMGY0YjkzMzVmYTA3ODY1MzQzYzFiYzJjODI3YmJiZGY5MjhhMCBsZWdhY3ktdHJ1bmsKKzQxNzkgZTg2NTFkMGU0YTNjNzE4NjM1ZTQ0MDExMGNkMTIzZTZjOGRiZDUwNSBsZWdhY3ktdHJ1bmsKKzQxODAgNTgxZmU2YmZjOTAyNGEyZWEwNTQ3NzRjZDFhMDliNjU3YmNhNmQ5NCBsZWdhY3ktdHJ1bmsKKzQxODEgYWZjNTc0MDY0ZTYyY2FlODI5NDg2ZDc3OGY2MWIzNmNmYWFiNzcyOSBsZWdhY3ktdHJ1bmsKKzQxODIgMTc1MDBjZjk1MzhmMWE5ZmVhZjY4NzJlZDYyMGU0OTZhZDhlYTRlMyBsZWdhY3ktdHJ1bmsKKzQxODMgMjU0MzI2ZjI0MTVmNDZiZDAyYTI1NzlhMWVhN2Q1MDg0ODQ3MWZkNiBsZWdhY3ktdHJ1bmsKKzQxODQgODZlZDUzODQ0YjA3Y2Y2NDdiMmQ3NGU0ZjIzM2FkZmNmMWJlYjFiMCBsZWdhY3ktdHJ1bmsKKzQxODQgOTA3ZDllN2JmNGI1ODlmYzJmMDJhOWI5MDBjNThmNDFjZTU1NGQ4NSBhbHBoYTEwMAorNDE4NSA5NjAwZDNkNWNjZTdiZGQ5NDMwOTI3NzQ3ZGU2ZDkzYjhkY2M3NmM1IGFscGhhMTAwCis0MTg2IGVlMmY4OGE0ZjllMmJjZTYzOWZiZGMyNWJkOGRjOGFkOWQ4OWY1ZjAgbGVnYWN5LXRydW5rCis0MTg2IDI4NWZlODk3OTk3OTk1NzY1NWU3NmRjMDJiZGIwMDQwOGI4YmE2NGUgYWxwaGExMDAKKzQxODcgNDU4ZDhmM2VmMzA3NTgyN2UxZmZlNGJlNDI4NWI0M2FhOTIwOWUwNyBsZWdhY3ktdHJ1bmsKKzQxODggMjljNzg1MTZlZTMzMzNjMDk1YmU4ZmJkZTJiMmI5OWVkNTdhZWI2ZiBhbHBoYTEwMAorNDE4OSA3ODMxZmZkYjc4N2I4M2YyZDA2ZmUxN2E5YjNjNmM1OTEzMjM5M2QxIGxlZ2FjeS10cnVuaworNDE4OSAyMWQ3ZjkzMjgxOWI0ZGE4ZWU3ZGFjOWJlY2JkZGJlZGNjNDAwZDY3IGFscGhhMTAwCis0MTkwIGU5NWIwNzAxYzhiNTRmMjRkZjhjOTBiODMwNzQzNTc1ZWZkN2JmNjIgbGVnYWN5LXRydW5rCis0MTkxIDk2MDA5ZGFlOWQ2MjYyNmFhNGQyMzdmZTVkZDQ1ZmU4MWVkN2IxMzQgbGVnYWN5LXRydW5rCis0MTkyIGJlZGUzOGM0YTlmNWVjZDQyMTA3MzhlOWRkOTU2NzljMjhmYTM3MTQgbGVnYWN5LXRydW5rCis0MTkzIGJjMTFjMWZmNmNhYzAzMWY5Mjc5ODZiMzRiMGE0YjhkOTJmNTliMzMgbGVnYWN5LXRydW5rCis0MTk0IDU5NTI2NGMyZjA2ZDRhNjA5NjYxNjJhZjVmNDExNDFjOTNmNzJiOGUgYWxwaGExMDAKKzQxOTUgNmMwZTExYjk0MDA5YTI1MjM5OTM4ZjUyM2E3MmVjZGU3NjM2YWQwMiBsZWdhY3ktdHJ1bmsKKzQxOTYgZDViNjdkMmVjN2VlMDMxMDBhNjY4Mzc0MGZkZDBmN2ZmNzEyMjYxZSBsZWdhY3ktdHJ1bmsKKzQxOTcgMzcyOTAzYjYzNzExYTliZGQ4YWZjMzc3MzRlZWM0NTgzMjlkMzU4ZSBhbHBoYTEwMAorNDE5OCAxOTQwODkyZDJmZTNhOGNmM2I3NGNjMTJkNjcwMzk4YzNlNDgwMzYzIGxlZ2FjeS10cnVuaworNDE5OSBlM2E5ZDgxZGYxODUzYzhiMzc1NzYyNmIxN2E4NWFhODNhY2I0Y2Y2IGFscGhhMTAwCis0MjAwIDNmN2RkYjhiYjJmNjNiNzNhYjA3MWZjYjdlMWY4YTYyMmM2NTIwNjMgbGVnYWN5LXRydW5rCis0MjAwIGU3YjVmZTc2ZTVlYWNhZTRjNjYyOGE4ZTNlMjlmZThjZDRjODE0ZWIgYWxwaGExMDAKKzQyMDEgODI4NmE2NjI1MDJiYjZiNWIwYWUyYjFiMmE2NWJhMWM4ZGU3YmFkYyBsZWdhY3ktdHJ1bmsKKzQyMDIgYmNlYjcyMGVlMzYyYjA5NDdlMGE4YzEyNWEzYTcxZjhjNDZkNzZiYyBsZWdhY3ktdHJ1bmsKKzQyMDMgMGI2NDU3MjY5NTdlMjMyOWI5YzgzYWYwOGRhNzE0YmVkYmFkNmFjMCBsZWdhY3ktdHJ1bmsKKzQyMDMgNDYzOWMzYWQ4MzRiN2NjMDgxZDgwZDhmZmRmZmVmMGVlNTNmN2JhZiBhbHBoYTEwMAorNDIwNCBlYzI1YWFkNDM3MjRmMDU1YTNmODI2ZTM5ZGY3MjU1ZGE5MTRjZGZhIGxlZ2FjeS10cnVuaworNDIwNSBjYmI2MmVlODg1NGE2NDNlYzk2NjlmZTNjNjU3ZWFkYzYxZTZhMDY5IGxlZ2FjeS10cnVuaworNDIwNiBiNTQ2OGQ4ODZjYjU0YTIwMzRiZDA2NTY0NmU0YmQ4ZGU1MDdkNGU1IGxlZ2FjeS10cnVuaworNDIwNyBiYmU5ZWE1NTgyNjFlZTZkZWJkYTNmODAyMTk0NDNlZmMzMDNjZGZhIGxlZ2FjeS10cnVuaworNDIwOCA3OGEzNjU0MDZjNGNlYmY4NWRkYzdiMDAxYzZjYTM0NGI3OTdhYWUxIGxlZ2FjeS10cnVuaworNDIwOSBmNTMzNzkxYWNjNzc5N2VmMzNhNmZhZmZmZDNjMGViMjhlMzU5ZGY4IGxlZ2FjeS10cnVuaworNDIxMCA2OTdlZTg5YWRkZmUxZTY1NWM3MmRhYWE2MTBlZWJlNDMxM2MxYTA2IGxlZ2FjeS10cnVuaworNDIxMSBiOTk1NzhiODc4Y2U2YzRjNmZiZTExMGFlNDA0YWQ0MTFmNTFjMzkxIGxlZ2FjeS10cnVuaworNDIxMiA0ZDQyMWY5ZTgzNzNjYzBhMzEwNGUxYmViN2Q2NmI5ZjJkMTk4NTAzIGxlZ2FjeS10cnVuaworNDIxMyA0OGU2YjMxOWYzZTQ4MGQ5OWJmNDAzNWViYTg3NmVmZTA3ZjlmNDJkIGxlZ2FjeS10cnVuaworNDIxNCA3YTJlNzZlY2I5ZWY5MWRmNzNiMGIzZDIxMzkzN2VmNjE3NjYwZmZiIGxlZ2FjeS10cnVuaworNDIxNSA5YmMzZGJmMDg3MWQyNmUwNTFhZjI1NmE2NGU0NWYzZWE5NzUyMDM4IGxlZ2FjeS10cnVuaworNDIxNiBkMzUzNWQwNjI2YjQ2ODAyYjc0ODViZGU4ZmU2MzMxYWVhYjA5YjVmIGxlZ2FjeS10cnVuaworNDIxNyA5NDJjNGQwOTRhMGM0MTljNTVhNDNmNDliZjNiYTUyZGNlNTFkYThmIGxlZ2FjeS10cnVuaworNDIxOCBhMDQ2ODlmOTk4M2U3YWQ3YjE2ZmU2MmZlZGViZDU4NTEyNzc2NWY4IGxlZ2FjeS10cnVuaworNDIxOSA2ZTkxMzA0NjAyODg2N2EwZWViNDlkNjI3NzRhYmNjODczZGM5OGE4IGxlZ2FjeS10cnVuaworNDIyMCA5MDc2MDUzMjBhNWZkN2E0YTUyYjk3NThlOTdmZjcwODk3ODQ5N2Q5IGxlZ2FjeS10cnVuaworNDIyMSA2ODgxMmI3NjNlMGUyYmFkMmI3OTRjNzMzNmYxNzZkMjczZGI0MThkIGxlZ2FjeS10cnVuaworNDIyMiA2Y2I3NTljNmQxNzkwZDA2ZTJjMWRhODNjODkwNDE2Y2VkZDliMzhjIGxlZ2FjeS10cnVuaworNDIyMyBiMGRjYTI5NzJiMmIxOGQ5M2U2YWQ4ZGYwY2U1NzYzYzFmYTg1NzE1IGxlZ2FjeS10cnVuaworNDIyNCA1MWMyZTVhOWYzOWNkMTkxZjJjNGRiMGZlZWMyNjQ4YjBlZTcyNjM1IGxlZ2FjeS10cnVuaworNDIyNSA3YjNhNzY3OTI0YTFhOWUzMmI1NTA3MWYxNTk3NmIyZDA1Njk4ZGYzIGxlZ2FjeS10cnVuaworNDIyNiBkZjdhYTU0YWRjZDI5YmMwMWI0NTkxZWI0MjNlNDFhYjljYmM3MGIxIGxlZ2FjeS10cnVuaworNDIyNyA5ZDM2MmU1ZTRlNzg5OTBmYWFkOGI1OTE3NGY2YmQ3OGMwNTE4YzhjIGxlZ2FjeS10cnVuaworNDIyOCAxN2M4MGE5NTI5MTQzOTM2ZTkzYzMzOTgzMTE0ODZlMjkzNjUxM2FiIGxlZ2FjeS10cnVuaworNDIyOSA1MjU3YWY4MGUxNjEwODdjNjk1NzBlYzIzNTdjMGJiZDYzNDhlNTY2IGxlZ2FjeS10cnVuaworNDIzMCA3ZTAwMWM0ODEwYmJjNzYyYjBmMDVhNzc5Yjk2NzcxNGRhZGQwY2Y5IGxlZ2FjeS10cnVuaworNDIzMSBmZmRmYWYxYjI0ZDU0MGNjZDI5NjlmMzU5NjVjNDU2MzhkMzQ1MTIyIGxlZ2FjeS10cnVuaworNDIzMiA5OGEyMGE0MGY2MTNiMTNkZmE3YTU0YWU0MGMzMDlmNWQyM2YzZGU2IGxlZ2FjeS10cnVuaworNDIzMyA3NmNjODU4ZTMzOTE1ODBkMTU1YTU5MTdkYTM5MzBlMmMzMTM2Y2UzIGxlZ2FjeS10cnVuaworNDIzNCA5MmRmMzBkZjVkNzc5ZTgyMmMwMGNkYWMyYjQ1Njc0ZTkwNzUzM2E1IGxlZ2FjeS10cnVuaworNDIzNSAyMDg5NzgxNmE0YjZjOGRkNjQxOGE2NGViOWVhNTRhMGFiMGQ4NjJkIGxlZ2FjeS10cnVuaworNDIzNiAxYzI4ZjE5MzRhMTFlZWE0YjY4MjhkNWQzZThlYTk2NzUyZTE2NjRhIGxlZ2FjeS10cnVuaworNDIzNyBhM2YxOTllOGJhYzZmMDAzMjE0YjAwZDYwY2RjYmIwZDIxZWE4MWE3IGxlZ2FjeS10cnVuaworNDIzOCBkZDE2N2JmZDdhMDg2YTllZTY2MWFmYWIwODA1YTQzZjQyZWM4N2MyIGxlZ2FjeS10cnVuaworNDIzOSA3NzA3Yjk3MDhmNmNjN2MzZjllYmQ3ZDQ2OTJiYTA2YTMwMzY0YjE5IGxlZ2FjeS10cnVuaworNDI0MCBjYjg0ZGQ1MWMyYWEzMTBlNWJhZTcxZDlkYjRlNzQxY2EwZWU1YmZmIGxlZ2FjeS10cnVuaworNDI0MSA1NmE5ODZlNDlmNTY3Y2Q2ODQ4Nzg0YmM1YjY0NTBmMDBlZWUyYzIyIGxlZ2FjeS10cnVuaworNDI0MiA0M2FlN2ZjZDc4MzUyYTJmN2NlMjk1YWFkYTc0ZGVlZDE4NTE3NTM4IGxlZ2FjeS10cnVuaworNDI0MyAzNjIxNGM4NjExNDRkZDYyYTIwYWQ0ZDNiMjdiOWM4MjkzZjYwNDBmIGxlZ2FjeS10cnVuaworNDI0NCA1MzVhY2E2ZmY3ZTkxMzQ3MThhMDJiNGY0YWZiMjJiYmU5NzYzYjE1IGxlZ2FjeS10cnVuaworNDI0NSBhNTg0YjRiYmJjNTkzNGMxYWU0MWVkNTI4YWU3OTJjMTA0ZGY1MmE1IGxlZ2FjeS10cnVuaworNDI0NiA2Njg1MDQ4NDNkMGY0MTg5Yzg0NTM4MmQwYmQ0YmNkYzU3ODMyYjRiIGxlZ2FjeS10cnVuaworNDI0NyA5YjUzMGJiNTQ2NDJiYTE4NmJiNTc0YjU4OTYwMTJiMjAwOTM3NGRlIGxlZ2FjeS10cnVuaworNDI0OCBmYThiYmQwOWYyZTZiNmM2ZTk3NDcxOTdhMjgzOGNlODc3YzQ0NmExIGxlZ2FjeS10cnVuaworNDI0OSBiNzExYzkwMTAyMzI5MzI2OWIxZGUxNjc4MWZiYmUwNWU3ODlhMDBkIGxlZ2FjeS10cnVuaworNDI1MCBiMTY3ZTMzNTA0OTEyMGVjN2IwZmM1ZTY4NzQ0YzVlNzZmNjBhODRhIGxlZ2FjeS10cnVuaworNDI1MSBmMDdjNGZmMGY3OTQ2ODY3MjBmMGUxOWJlNzM1NWY0ZmI0M2U4OTFlIGxlZ2FjeS10cnVuaworNDI1MiA2MDY2MDM0MWVlMTA3MWI0MGZlZjkzNWEzYzE2NjEwZTU2ZTgyZWQ5IGxlZ2FjeS10cnVuaworNDI1MyBhZDNmMWQzNjJjMTQwNmNmYzAyMmE0MGE3MGVhOTgwN2ViM2E2MGNhIGxlZ2FjeS10cnVuaworNDI1NCAxNDhlZTJhYTYzZTZkZWM1OTFhYzc0NTIwZmFlYzFkMWIxMmNlN2Q5IGxlZ2FjeS10cnVuaworNDI1NSBiODQwMjk2YjllMDU4ZDI3NGE4OTAwNDRkOGNhZDUzY2RlZTA3MjU1IGxlZ2FjeS10cnVuaworNDI1NiBmYWZhNWRjODEwMGY4NDliZmU3MWU0ZjA2ODIwZjhiMzU0OTkyZjA0IGxlZ2FjeS10cnVuaworNDI1NyBiNDA4ZDZhNjM4MTk1MjM5ZTYyN2U3YTA1ODE4ZWRiNDg2ZDdmN2RhIGxlZ2FjeS10cnVuaworNDI1OCA1YjkyYTA4MzkzNGRiZmIzOTQ3N2Y3NGMwNjRjNTYwY2M1MTdlMDE0IGxlZ2FjeS10cnVuaworNDI1OSBmMmNlMzE5MWZjOWRlMzhiNDYxYmY1YmI0NGU5M2M4ZjJhMmE2YWU1IGxlZ2FjeS10cnVuaworNDI2MCA3ODI1MDk4MTNkNTcyYjg2ZjkwY2M0Y2QyN2NiYTVjMDc5M2VjNGViIGxlZ2FjeS10cnVuaworNDI2MSA2Y2ZkNDNkNWMwNzQ2YjBlYzgwZTM0ZTRkYTU5ZjI4ZTc3MGM3MWFjIGxlZ2FjeS10cnVuaworNDI2MiBkOGQ5NDFmYWY1MTEwYjIzMTZkMjM3ZjkzODFhMjRhY2ZmYzNkOGM4IGxlZ2FjeS10cnVuaworNDI2MyBkODkyYWM0YjRmYjk5ZTE0OTFhMjcwNTIyNDEwZjBjNTZiZTliNzc1IGxlZ2FjeS10cnVuaworNDI2NCBlYTViMTNkMTFhMTMwNWJiNDA0ZWQwY2E4YTI4YzFkZjgyY2NlY2MwIGxlZ2FjeS10cnVuaworNDI2NSAyZDViMzZhNDM4YWI5Y2YzODU4YjdkNzBiZDU5NjIyNDllZmNhMzgxIGxlZ2FjeS10cnVuaworNDI2NiBjNDdkNTI2YTk0ZDkyZTM4ZTY2NmU4Y2YzZTIxMzI2NzE1YzA0MTgwIGxlZ2FjeS10cnVuaworNDI2NyAwNDA2YTIwOGNhNWQzYzEzN2I5NWQ2ZGJiYTZlYzNlY2NmNDJhZjQ4IGxlZ2FjeS10cnVuaworNDI2OCA2MzUzZmUyNWNkY2U0YmU1M2M5NTc4ZWZjMDZjZGFmNWE1MmNmODdlIGxlZ2FjeS10cnVuaworNDI2OSAzYjQ3MDMxNzNjYWY4NjY0ZmUxNGYwMDZkYTJlOWU1MmU5NDRkYTk4IGxlZ2FjeS10cnVuaworNDI3MCAyMGUxZDI5NmZkY2M4NmJjZWI4MmQ2Mzg3ZjE2NDA5NDQzMDgxM2I2IGxlZ2FjeS10cnVuaworNDI3MSBhNzEwZmIwMDFhM2ZiNDUxM2MyMWZiMTM0Yzg4MDRiNzY0NjEyNDk1IGxlZ2FjeS10cnVuaworNDI3MiBhMjZiMzFlMTU5YmVjNDFkNzhiOTZmZjNmNWJhN2YwMjRmMzkwMjA3IGxlZ2FjeS10cnVuaworNDI3MyBjZTU0NDdkYjhmNTM3ZTJhMDRiYmEzNTBlZjQ5ZTNlNDU0NDUwZjVhIGxlZ2FjeS10cnVuaworNDI3NCA0MDU5NGY4MGFiM2MyZjI4OWUyMDlmNjk1NGY5MGU0YjFiZWU3ZWUxIGxlZ2FjeS10cnVuaworNDI3NSA3NmQwZjJiM2I5ZWU3MTE3OWUwYWNkNTIxNDkwNDExZmJhZTJlOTYxIGxlZ2FjeS10cnVuaworNDI3NiBhNmVmMmM5N2M3NzYxZWQyMTI3MGJhN2FjNWRlZTNhZWY2M2UxMTM5IGxlZ2FjeS10cnVuaworNDI3NyBiMTFhMDY2OGIxODFjY2JiNDU2ZGI3ODQ4MjJiOThiZDgzNGM5MjcxIGxlZ2FjeS10cnVuaworNDI3OCA3OTMxZGUwMWU2OTM3ZGU1YTRkMzMxZDQzNTU1YjBmMmIzZTYyN2EwIGxlZ2FjeS10cnVuaworNDI3OSBjZTg5N2U3NTJjYTRhYzU1MTUzMWEyMDIyZDI5ZjcxNDAzOGQ0OWQ5IGxlZ2FjeS10cnVuaworNDI4MCBmNWYzZGRmZWMzYzdiMTVjYzlkY2NiYWYxMWExYzUxN2U5NzZlYjEzIGxlZ2FjeS10cnVuaworNDI4MSBiNDY0ZTFkMGIyZmI0MzRjOGY2Yjg4YjI0MjU4YzIzNmZmYWE3NTYyIGxlZ2FjeS10cnVuaworNDI4MiBjMWIwZDdlZWQ5ZmRmYWM2YzBiNGQwOTc1N2QyNTgyZDcxYjFiOGY0IGxlZ2FjeS10cnVuaworNDI4MyBjNDUzNmQ4YWY3YjVkNGU4MDVmOWY1ZGZhZDA2OTA4NjFlZDIwOGMxIGxlZ2FjeS10cnVuaworNDI4NCAyMTZiNzU1NTE1ZTY1ZDAxZWQyNDE3Y2VhOWU3MGFjNGE2OGM5ZGRiIGxlZ2FjeS10cnVuaworNDI4NSA3OWU0MjA4MDVjNjcyMjdiMzg5NDBkYjU5NDAxYzQyMTg1ZTBhNWM4IGxlZ2FjeS10cnVuaworNDI4NiAzOWE0YzE1YWNiMzJkYmUyMTBjZThiYTFmMDNmY2I1OGE1MWZiOTcxIGxlZ2FjeS10cnVuaworNDI4NyBmOGJhYWI1YzAxNjUyODUwNWQ4MTdhNmE5N2RmYjdhZjk0ODRlNmU4IGxlZ2FjeS10cnVuaworNDI4OCBkNzk5ODg5YzAxZTM1YjkzZTg4NGQ5NzJjNmVhNzI2MWJmNzQxNDY2IGxlZ2FjeS10cnVuaworNDI4OSAxMjAzZjA2Mjk1Mjc1MzFjODBiNTk3NDE5NjY4NmRmYWE4MGViOGYyIGxlZ2FjeS10cnVuaworNDI5MCA4NzM2NGQ5ZTM0NDRlOTVmNDdhNDA3YTgyNTQwNjU2MjcxOWQzOGQ2IGxlZ2FjeS10cnVuaworNDI5MSA1ZjZhY2QxYWI1YzUwM2ZkM2ZlOTA4YjEwNzU0NWNjOGMyYzhiOTEyIGxlZ2FjeS10cnVuaworNDI5MiAxZjRhODZkYmNkNzkwNjQxN2U5YTgwMzQxMzk4MGU4ZjQ4MTJlZjE1IGxlZ2FjeS10cnVuaworNDI5MyBiZmQxMTYyMGEyZDgxZTgzMDRmNDhmNjU1MjJiYjcyOTQ4OTAxMDRlIGxlZ2FjeS10cnVuaworNDI5NCAyM2YwM2VmMDAzNjFiYzc3MTc3OTViMzFkZGM5MzE1MGE1NDQyYjU1IGxlZ2FjeS10cnVuaworNDI5NSA2NWNjNzI3ZjE0MzZjMDc5NzI3ZmZkZDcwOTE2Y2I0NTdiNWRhOGE4IGxlZ2FjeS10cnVuaworNDI5NiA4Mjk0YmJkOTQ1MzUwZDQxZDRlYWUzNmU1MTI1ODYzZGIzNDM2ZmI2IGxlZ2FjeS10cnVuaworNDI5NyBkMWU2YzlhNjRhNTYzODQxZjYwMTc3YWM5MDc3MzlmOTUzZjE1NjMwIGxlZ2FjeS10cnVuaworNDI5OCAwOTVjMWNjN2YyYmJiMjJmZjExNmIwMzM3YWMzYmQyZDJmZTM3Y2Q2IGxlZ2FjeS10cnVuaworNDI5OSA1MjQzZmIxODdkMzZjNjBiMDEyMTMzYTFhNWM2NjBkN2EzNWExMjY0IGxlZ2FjeS10cnVuaworNDMwMCAwZDMxODQ3NWY5ZTM3MTk4YjVhMzIwYzhlMTBlNjlhNzUyMjNiMTRjIGxlZ2FjeS10cnVuaworNDMwMSBiNzI0NTk5NDAxZmY3M2ZiYjhkNTk1YjliM2Q2MzA5MzYzNGI0OTk0IGxlZ2FjeS10cnVuaworNDMwMiA2ZTIzYWY2NDViNDBiZGQ4ZTMxZWEwY2M0YzcyZDMwZWY3NzhmMzE1IGxlZ2FjeS10cnVuaworNDMwMyAxZmM0ZGI3OTE0NmFlNWVmNTc3YzA2ZmJhNWNkZjdjNThkMmVlNDdlIGxlZ2FjeS10cnVuaworNDMwNCAxNDUzOTFkZjI2NTc5ZTFjNmZjNDQxMDgwOGVhNmZiOTE0OTQ1ZTU3IGxlZ2FjeS10cnVuaworNDMwNSAwOWRlNzIzYjI1OTY4MjY2NWM0NjYwMjJjMDIyMDJjMWZjMWZlMWFmIGxlZ2FjeS10cnVuaworNDMwNiA5ZDRhZGQ0MmVlMjJmZjQyODkzZWFmMzc3MDI4MDhhMjc1MTU3ZjcxIGxlZ2FjeS10cnVuaworNDMwNyAyNzg2YWNiYTZjZWMxY2ZiOWE1OTcxMWY0Y2U2MTNkMDI1MzZjY2E5IGxlZ2FjeS10cnVuaworNDMwOCA5ZGJkYjgzZDQxNzhmMzkyNzU4ZWM4YWY4ZDQzYmMxM2MyNDRmMzQxIGxlZ2FjeS10cnVuaworNDMwOSAxODIyNDY1YTM1YjgwY2ZjZTQyODM4MmU3NTdhYmI0YjI3NzQyNDYzIGxlZ2FjeS10cnVuaworNDMxMCBlMTVmOTc2MWNiMDM1YmNiNjFkNjI0ZmNlYWE1MzE5ZGE1MGVmODNmIGxlZ2FjeS10cnVuaworNDMxMSAwYjA4MTk2ZTlmZjYxNmVjMzc0NjNkZjMzNjIyMTM3Nzc4ZDAzYjIyIGxlZ2FjeS10cnVuaworNDMxMiA1NGZkYzlhOTVmNDg5MDkzZmY1ZWUzMDg4OWI5NmVmNjczNmU2ODcyIGxlZ2FjeS10cnVuaworNDMxMyA3ODg5OGIwNGE2NWJlZjFlNjIxZmZmOTUxNzUzZjU3MzA0OTU3NGQ3IGxlZ2FjeS10cnVuaworNDMxNCBkNDA1ZTNlOGZmZDM0OWFlNzYzZWI3YjhjZmRjZjRmYjRhZDI1ZDBmIGxlZ2FjeS10cnVuaworNDMxNSBlZjA5NDY1NjA2MjBhY2I1ODc5ODkyZmZhNjFkNGI1MTMzZDI4ZDg4IGxlZ2FjeS10cnVuaworNDMxNiA4NTVjZWZiYjI3MTg2MzEyOWFkMWVkOTlhMDQ0ZmM4ZjQyYTM4ZjcyIGxlZ2FjeS10cnVuaworNDMxNyBhYWYxZTA1ZTY4NDJkOGVkODM1NTk4ZTVjN2I1OWM4Mjk0MmQ2OWE3IGxlZ2FjeS10cnVuaworNDMxOCAyMGU2MDcxNDc4OGM1ZGE3YTc3OTkyZjdkMjU5ZTNiOGUzMzk4OTU1IGxlZ2FjeS10cnVuaworNDMxOSA5YzVkMzMzZDMzMDBlOTMyNDBlMTVmZTIzYTUwMjY4NmRhNjdjMDQ4IGxlZ2FjeS10cnVuaworNDMyMCA3NThjMTM3NGYzMDM0ODJmY2ZjNmYzZmRiM2IzNDEwMDdlYTI3ZGUwIGxlZ2FjeS10cnVuaworNDMyMSA2M2FkMjg5Mzk3ODFhYThkNzU3OWUwODZhY2MyZDU3NjU2NmFjODQ5IGxlZ2FjeS10cnVuaworNDMyMiAyY2VkZTYxZTliMWJhNGViOGJhNDg5ZmI1NDAxZDMyYzMwMjU2NTkyIGxlZ2FjeS10cnVuaworNDMyMyA2MTczOGVkNmNjMTBjNDI5NTJiYTkyZmUxMjE3NGMzYTYzZDRiZGZiIGxlZ2FjeS10cnVuaworNDMyNCAxMGExMjQ3M2VlOTMxY2FkMjRjNzNkNWZmNzI3ZjE0NGUxZGY1NjkwIGxlZ2FjeS10cnVuaworNDMyNSAzMmU2YzNhNjcxZDAwZjdmMGIxNmFkOWUxMTNkNDE3MTNkZjAzNmYwIGxlZ2FjeS10cnVuaworNDMyNiA5MDgxYmI3YWNkNTI4YWU5MzRjNTgyYzI5ODAxNjNjNzFlY2IxNzA5IGxlZ2FjeS10cnVuaworNDMyNyAwNzRhYTI2MzgyNmI0NjY5ZDBlMjQ0ZWEyMDVkNDIzZTEyYmFlN2U5IGxlZ2FjeS10cnVuaworNDMyOCA4YzljYzA1NGM1ZWRjZTZkZWFlOGM0MWY3ZDczMmJkOTYxMjFmN2RkIGxlZ2FjeS10cnVuaworNDMyOSBjYzViZjZiZTgxYTVkMjZmODNkMjk2OGFiZDk2YTQ0MGIyOGZhMDBiIGxlZ2FjeS10cnVuaworNDMzMCAzMmQwMDVmYWY1ZmNkMGJlNzQwYTM1OTQzYTI5MzVmMjYwMDQ2NTJlIGxlZ2FjeS10cnVuaworNDMzMSAyN2Q0ZjFmOTM0NmM1NzQ3NzY3NDcyODI2ODZmMjNmODExZTM2YzE1IGxlZ2FjeS10cnVuaworNDMzMiA5MWJmYjI3NzE1NTRlODE3YWUwOTNlN2QxYzg1ZTI5ZjkzYjE3ZTZkIGxlZ2FjeS10cnVuaworNDMzMyAwNWZiOWRlYzJjOWNmMWM0ZjhlNmY0NWUwMWUyYmQ1YmNlNjc4ZDUxIGxlZ2FjeS10cnVuaworNDMzNCAzYTcwZTljMGQ5ZjUxMWE1N2FlNDRlZjA0ZTdiNDg0YzU1OTRiNjhmIGxlZ2FjeS10cnVuaworNDMzNSBmODRiNjRkZjA5YzNlNjI5NTVhZTllNmRhMTdjMTdmODQxMjNmYTRjIGxlZ2FjeS10cnVuaworNDMzNiA0MjE0YTc1ODNmMmJhODhiODBlNGNlYjIwMmIxMmYyYTNjYmI0NDE1IGxlZ2FjeS10cnVuaworNDMzNyBhZmJmMTE4NmM4OTc0YTBkZWJmNmJmN2IwNGNjZTJkYzU1OTExNzRmIGxlZ2FjeS10cnVuaworNDMzOCBkM2RlMmNhZDJjNjg0YzE2MDM1YTQ5ODcwZDM4MGRjODJmZDkwODljIGxlZ2FjeS10cnVuaworNDMzOSBhYzZhOWY5MGY2ZmQ0OGQ3YzI1NDA4ZGEwNjYwYWRkNjMwNTgzODY1IGxlZ2FjeS10cnVuaworNDM0MCBlN2M2YTE4MzgxZDllN2EzMDVjODQ4ODBjMWZjNDcxMmFjYTcyMjg5IGxlZ2FjeS10cnVuaworNDM0MSBiZTk1NmIxZWZiOTdjY2FhNzVlMWFhOTdiYzVkNzljMWUxZWRkYjRiIGxlZ2FjeS10cnVuaworNDM0MiA0ZTFjZWFlZTI5NjMyN2RlZmNlNGFiNDUwOTI4MzJjZTcwYmI3ZTlkIGxlZ2FjeS10cnVuaworNDM0MyBiN2RlNjc4NWM4YWM3ZDk3MjQyMDIyNDZhNDY5Yzc3NjNjMjM3M2FkIGxlZ2FjeS10cnVuaworNDM0NCAyNGFlN2FmNDBhMDk2MGRlY2RlMTY3ODNmNjM0MThkMmNkZmM3YWEyIGxlZ2FjeS10cnVuaworNDM0NSBlZWMwZGM1YWJhNjAxMWJhYmE1MDhmY2I1NjMxM2Q3ODYwMjI1MDg2IGxlZ2FjeS10cnVuaworNDM0NiBhYmE1MTYyMTI0NGU3YjAxMjM5OGFhYTM3NjZkN2JjMTZjYWE3Nzc0IGxlZ2FjeS10cnVuaworNDM0NyAyYzhiNGRmMjJiYzJmMDQ1YzExZDU2OWU5ZmQyOWEzNjQzOTdlMGI2IGxlZ2FjeS10cnVuaworNDM0OCBjMjM1MGM4N2JlM2ZjYzc5ZTk3NTFiZDcxOTE1ZDVkMTkwZDk3YjY5IGxlZ2FjeS10cnVuaworNDM0OSA2NTRhYTk2NGRjMjYzZjlkYmJlMDU4NDY1M2QyOWVlM2UzOGU1NjRhIGxlZ2FjeS10cnVuaworNDM1MCAzZmJkYTg3Njg4NTUyODYyY2JiNjlhMmI1Y2ZlMTg2YTM4YmU0OGYyIGxlZ2FjeS10cnVuaworNDM1MSAyMGYxN2I1YWNjYmY4MjAwYjg3MmE5MGNjMDIzNTA1NjE1ZWIzYTlmIGxlZ2FjeS10cnVuaworNDM1MiBhNjc3NmE3ODhmNzQ5YWUxZDk5YmE1MjQyMWY1NWM1YjZlMDg1NDQ1IGxlZ2FjeS10cnVuaworNDM1MyA1YmFmMTEzNWExM2QzZjVhNjMyYjdjNzAyYzAzZjNjMDViZTQ0YzY1IGxlZ2FjeS10cnVuaworNDM1NCAyNTllNjlhYTBmMTU5ODg3MzAwMWIwYTkwZDUyNDBiNWU4MWRlZDk4IGxlZ2FjeS10cnVuaworNDM1NSA1M2QxN2MwNGI0MmZiMGYzNDQ5YjRiODU2MmNkYmY4NTU2NzRjYTMwIGxlZ2FjeS10cnVuaworNDM1NyBlNDUwYmQ0MzYzMWE5ODQyODZlYjU0MDNkZTY5MWViZWRkNDJhN2FmIGxlZ2FjeS10cnVuaworNDM1OCA2MTA5MDY5ZDU2MTJmMDM4OGU0MDIwOGRkODgyZWQ1NDU3Y2Y4ZDNiIGxlZ2FjeS10cnVuaworNDM1OSA2MWMzYzFhMmZkYjQ0M2YyYWUxZTBlNjc3NjJmMWFlZjdiMTg1MjkzIGxlZ2FjeS10cnVuaworNDM2MCA5ZDk4MTJmMjc5OGI3M2E2NTBmYTFjYzEyMTE0MmY1MWRhZmNkNDZkIGxlZ2FjeS10cnVuaworNDM2MSBiZDk0MDY4ZjBmZDAzNzU0MGFjNTA0ZmU4MTc0MjMyY2E4ZjIzYzRkIGxlZ2FjeS10cnVuaworNDM2MiAwNDM3NzM4Mjc5YThkNjgwNzkzZmRkZjlkNWFiYWQxYWQ3MjIyM2NmIGxlZ2FjeS10cnVuaworNDM2MyAwYzIzMjE5NGE2NGYxMGM3MWM2MTdhNzJjNjlhNGM4ZGVkYWMxMTkyIGxlZ2FjeS10cnVuaworNDM2NCAzNTk0N2Y2MDUyOGVkMDE1N2UyMTUxNGY1NTQwMzhiZTI2ZGQwZTIwIGxlZ2FjeS10cnVuaworNDM2NSBhN2YyNjk2MTBlYzJkNzlmN2ZkNDlkNTQ4ZjQ2MjM4ODcyZDk2YmFmIGxlZ2FjeS10cnVuaworNDM2NiBhZGExOWFhYWY4YzBjOGU1MDcxYjU3YTRiYTY5NWRmNDMwOGI2ZmM4IGxlZ2FjeS10cnVuaworNDM2NyA4NjIzYWEzOTE1ZGI3MDJiMTAyY2M3NzJjYjMzNjZlYWMyOTcwMzQwIGxlZ2FjeS10cnVuaworNDM2OCA4OTM0MTIxMDEyOTY5ZjAzZDBlOGM3ZTJiMDQzMmVkZGQ4NWE5MWVlIGxlZ2FjeS10cnVuaworNDM2OSA4MDgxOGMxMDZlM2U2ZjQ4NzdhODRlNDI2YzA2MWM3YTdmYmI1MWIzIGxlZ2FjeS10cnVuaworNDM3MCBlMTI1ZjUwMjFlNjczZDE0NWUzZWNkOGM2ZGVjOThkM2Y2Yzg3YWY4IGxlZ2FjeS10cnVuaworNDM3MSAwMTRhMWZiOWM2NDYzNDI5YWM1OGFhNDdhNjM4ZDE2MmNmZjZiYjZhIGxlZ2FjeS10cnVuaworNDM3MiBmMzlkNDM3Mjg3NzI0ZTU2Mjc5NmFiNjUxMTUwZmY4MWQyMzBmNGM2IGxlZ2FjeS10cnVuaworNDM3MyBlMGFlNmY5NWJjZmI0MTljZTI3Mzg5ZjlmZjI5M2VhMmYyNDhhYTNiIGxlZ2FjeS10cnVuaworNDM3NCA1ZjMzY2E1MjE0NTIxMjU5ZTM1ZmViMDNhZjk1NmFlMGZlYTdkOTBhIGxlZ2FjeS10cnVuaworNDM3NSAyNzU5NTFiMDg2MDhjOWNjNGQ3YmVkYTQ3NDU5MzA2Y2VmZWI2NDAwIGxlZ2FjeS10cnVuaworNDM3NiAzODUwNzEzZjZhZWFlNjkwOGQ2NGZjYjM4MTU2Mjk2NjBkMWIxYWQxIGxlZ2FjeS10cnVuaworNDM3NyBjMTA4OGQwYmI1NjIzMDY2Y2U1MTFlMDg3MGEyMGUxN2Y3NTU0ODIxIGxlZ2FjeS10cnVuaworNDM3OCA1OGIwNDY3OTUwZDgyMjM2OGQwZWJiMDVhYzQwNTNjYjIyY2EwNjRkIGxlZ2FjeS10cnVuaworNDM3OSBhMWFiYTRkNDU4OTNiMGFkYTk2MjUzMzE2NjM3NTRhOGMwYjI4MGQwIGxlZ2FjeS10cnVuaworNDM4MCBlYTllODUzM2Q2YzMyYTkzZjBlNGEzMTgxOTFlZGM0MzI4NDc5NDNjIGxlZ2FjeS10cnVuaworNDM4MSBlNTZhZmQwM2NhN2ZjOTQ2MDZkMmRhZWI0MDRlMTgxYzRiNmE5OTNkIGxlZ2FjeS10cnVuaworNDM4MiBhOGI3ZWUwZTU3MmRhN2RlMDAwZTM0ZTM4YzdlZDRkNDhmMzBjZmJhIGxlZ2FjeS10cnVuaworNDM4MyBmMDdkNjZjMTYyY2JmZmI2MDNhY2MyZjgzODk5OWM5MTNmZjMwMzZmIGxlZ2FjeS10cnVuaworNDM4NCBmYWNhN2UzMjhiYTc0OWMxM2VmNTZjMDczNjE0MTYzM2Y1NjBjNWQ5IGxlZ2FjeS10cnVuaworNDM4NSBlM2ZmOWUyYTNlYjdhZjVmMTZmMGZlOGQzOTZhN2EzYzY3OTBiZWZkIGxlZ2FjeS10cnVuaworNDM4NiA1YmNhYWVkOTAyZjU1MGRhZjJlYjk4YWI2MDU1N2YyODQxNzZhOGZjIGxlZ2FjeS10cnVuaworNDM4NyAyMzQ4MTc2NTJkYjA2YzJkNGYxNTlhYTE3NWY2YTVlYjU2NzViYjFhIGxlZ2FjeS10cnVuaworNDM4OCBmM2FlN2MxN2FjMDg3ZDlhMDBmYjAxYzA4N2M5ZThmZjkyOGExYjZkIGxlZ2FjeS10cnVuaworNDM4OSBkOWEzZTMwYjJlNDczYzhjY2FiNjAwNWI2YjMzMzI3NzdhODgwNzQzIGxlZ2FjeS10cnVuaworNDM5MCA0NWM3MzAxOGRkMDFkNzFjZjM4M2EzYTI0ZDVkODQ0ZWFlNTk2NjI4IGxlZ2FjeS10cnVuaworNDM5MSAzMjBiYWVhYjc4N2FjOWQ3MDU0Y2YwOWQwZDFlMGYyODNiM2M3ZjY3IGxlZ2FjeS10cnVuaworNDM5MiAyYjU4MWNlNDNmNGEzNzMzOTgyOWVmNmViYTU0YWNmY2EzNTc3MjIwIGxlZ2FjeS10cnVuaworNDM5MyA5M2RlNTc3NTk2NmU1NTllZjZjMmNiYjc3NjZjMzA0MDc5Y2E3MjcxIGxlZ2FjeS10cnVuaworNDM5NCA4Yjg5N2I3ZjNhZGU4ZmM0ZDk2NTQzY2JmYzU5NzAzMGZiZDIxYjI3IGxlZ2FjeS10cnVuaworNDM5NSAwYTkxNTJmODcxMTE2MDIzODIyYWYwZDZlN2VlZmU2NzhiZDlmZjE0IGxlZ2FjeS10cnVuaworNDM5NiA4NWYxZDJiZWM2MzJjYTM4OWFkMDhjNDE0MTFiOTBlMGNiM2UxZjMwIGxlZ2FjeS10cnVuaworNDM5NyAzMTg3M2JkNmY0YTg3MTY4ZTQ2OGI5YTVlNWU0NTljYmIwYTQ4ZGYwIGxlZ2FjeS10cnVuaworNDM5OCA4ZThmZGRjYmRmZDJiMjVlNGUxMzc2MWE1OGE2NGI4MzkwZTFkZDQwIGxlZ2FjeS10cnVuaworNDM5OSA0YmU2ZWYxYzJjMWRmNWUxZDgzNGY1YWRmZTE2Yjg2OTI4MWE5YTc3IGxlZ2FjeS10cnVuaworNDQwMCBiYmY4MmViNGE2ZDlkMzNmMDEwODAwZTFjNzM0YmI1ZDQxMzllZGQ2IGxlZ2FjeS10cnVuaworNDQwMSBiYTA5ZDkwZjQyYmIyNjMxNzRhNmQwYTUzZTMxMDRkNDZmZWYzZTNlIGxlZ2FjeS10cnVuaworNDQwMiA5YmNhYzhkYTAyNjI0NDVjNWFjMDg1OTVhOGM0M2FjNDFiMDNlYWIwIGxlZ2FjeS10cnVuaworNDQwMyAzMTVkOWM4MjgxNzc0ZDEzMTRlMDlmOWQxYjMyZmE1ZjNhZThhZjQyIGxlZ2FjeS10cnVuaworNDQwNCBmNmI0ZTdhY2M3YTM3NGZhMzBjNTk5ODUxYjMzODRhOTZjYzY0NTQ5IGxlZ2FjeS10cnVuaworNDQwNSBlMTU3YzgxZDAzNTg5ZDY5NDk3NmUxNGY2NzhmMzY2MjEwNzk4ZGVmIGxlZ2FjeS10cnVuaworNDQwNiBiMmM1NmUwNGNiODI5MDVlNDZlNTgzZTU2NzhhZTc3ZTk3MjA4ZGQ5IGxlZ2FjeS10cnVuaworNDQwNyA0YzU3MWQ4YzNjZTEzYmZmN2ZlNTAxODYwY2FhZjI4ZjlmMjBkNjgxIGxlZ2FjeS10cnVuaworNDQwOCA0NGU5NDE1MjQ1ZmIwOWNlZjVmMmExZmJkZmExYTVjNTJmMzUwMjFhIGxlZ2FjeS10cnVuaworNDQwOSA4ODNhMjI4MTc0NzJhZWQwNTgzNmEwNWI0YjA5YjY0YzRjZmY5ODNmIGxlZ2FjeS10cnVuaworNDQxMCA3NjEwNTFhYTQzNGRiMWYwOWRiODU0Y2U3ZjIwYmIyZDFhNWVhZjc5IGxlZ2FjeS10cnVuaworNDQxMSAzOGRjYjA5MGY0OGIwNjM4NTdmODkzMGViOGYxNzRmMmY2ZTk1NzJmIGxlZ2FjeS10cnVuaworNDQxMiA1NDVlMjM1ODMxYjdiYjQ5ZmJjZDc5YWQ2YWJmNmM1Y2MxOGY4N2I3IGxlZ2FjeS10cnVuaworNDQxMyA3MTAwYWNiMGQzNjNkN2ViNzg4MDdjZjc5MmJkOWJkOGFkYWE0MjA3IGxlZ2FjeS10cnVuaworNDQxNCA0MjdjNjE5Y2E1ZDA3MzE5YjY4MWE3MTAyY2NjN2Y3MWJiZjk4NmVlIGxlZ2FjeS10cnVuaworNDQxNSAwNThhNDZkOGZhZjc2NThlYTFhMjllNTY3YTkxMjJlYzM1Yzg4YTgwIGxlZ2FjeS10cnVuaworNDQxNiA2NDFmNmJiZjgwN2I5Y2M5NzkyZTczYjRlMDlmYTUwY2Y4NzIyZGFjIGxlZ2FjeS10cnVuaworNDQxNyBhMTBkMzFmZjM1MjdkYTdkMzJmODhiMWIwNmYyNjg2NzNmM2JlMjU0IGxlZ2FjeS10cnVuaworNDQxOCA3OGJmNjc1ZGY1ZTVkZmZhOTY0ZGVjMDA4ZDY1MzAzNjJkOTFhZWEwIGxlZ2FjeS10cnVuaworNDQxOSAzYmExNzMwNWYwNDdmMTkwMjRkM2Y5OTlkNGQzNGZiYzFmNzdjODQzIGxlZ2FjeS10cnVuaworNDQyMCBkZDdiZTgxMjg0MTA3MTRiMTk0NmUzOTk2MTEzYjY1OWMxM2QwNzc1IGxlZ2FjeS10cnVuaworNDQyMSBkYzFkYmY2YjUyMTEwMDViZGJjYWI5OGY3MWNjNTZjYmY5MzMyNTU5IGxlZ2FjeS10cnVuaworNDQyMiA0ZmIwYTA4MDdiMDU2NzQwMmEyNmIxNThhYmNiZjQ1NTkwNzhhNWQ5IGxlZ2FjeS10cnVuaworNDQyMyAzZGU1YTc1NDk0ZGZjYTJhNTg0ODVkMTYxZTRiN2I4YmI0YmZmZTBiIGxlZ2FjeS10cnVuaworNDQyNCA4NDYzN2NmZGJjMDc0MmE5NzU5NWU0NGQ2NjkyNDdkYzRmOTAzYjE1IGxlZ2FjeS10cnVuaworNDQyNSA4N2E2MjBkODQ3NjYzM2RiOGIzNWIxOWQ5ZTRkMzRkOGJmM2Y4MWQ0IGxlZ2FjeS10cnVuaworNDQyNiA0NDU0NDIxNzg0ZDg0YWM5NGQzOWQ5ZWZmYzYyNTRkZmYwNTJiYTgxIGxlZ2FjeS10cnVuaworNDQyNyBmMjJjYjVmZWU5YzhiN2Q4MjY1YjM3OWI4ZjM1MWYzMDFkNmYyMDhjIGxlZ2FjeS10cnVuaworNDQyOCBmOTVjMTkzYmZlNjUzNGZhMWYzY2Y4MjA4NjU2YzAxY2MxYTVkNTNkIGxlZ2FjeS10cnVuaworNDQyOSBkY2ZlN2ZkMWFjYmM1NjQ0ZmRkZTcyMTdmNTIwMjQ0MWE5MjE3NzI0IGxlZ2FjeS10cnVuaworNDQzMCBlMjM2Mzk4NzljZDA1Yjk2YTVmMjczYWUwNzg3ZDE2M2RkMmZiY2Y0IGxlZ2FjeS10cnVuaworNDQzMSBhZDI1YzUyMzc2YjQ1YjgwOWZiZDJhNmMwNDhkM2RiNjAxMjBlMmUzIGxlZ2FjeS10cnVuaworNDQzMiA0MmY5NWVhNzU4NjczNDdlODI0MDE2OWVkOWQ5MDI2YmY2MjcwMTM0IGxlZ2FjeS10cnVuaworNDQzMiA4MzI2MTVlYzA3NjQ2ZTMxMGM4NTMxNmI4YmE2YmM5YjE3YWQzNTQ3IGxlZ2FjeS10cnVuaworNDQzNCAyMzQ3YjFmZTgxMmRkNWNlNjUzYzEwMWEwN2IxMjA3Y2JhN2VhZDE0IGxlZ2FjeS10cnVuaworNDQzNSA0ZTYzMTAzMmVhY2YyYjljNmY5NzZiNjU4Yzg0MWIwMzk2ZjBmMzNlIGxlZ2FjeS10cnVuaworNDQzNiAzMzUxNTQ4NWVhZDBkNmRlMzNmMjgyMzIzYThiMTIzM2Q2M2ZlYWEwIGxlZ2FjeS10cnVuaworNDQzNyA4MGJkN2FmNzMyMDE5MDdkMjU3MTFmMWY2ODI4YTBlYzZkMWJkMzZiIGxlZ2FjeS10cnVuaworNDQzOCA0MDYxMWNhY2Q1YmQ3YTI2YWMxZjAxNDgwYjRjOTAwOTg1YzJhMGMyIGxlZ2FjeS10cnVuaworNDQzOSAxNWExZWIxMTNhNDMwODM1Njg2MGMxOWVkZjg4MmE5NjYzMjkxNGMwIGxlZ2FjeS10cnVuaworNDQ0MCA1OGVlZjUxZTMwODQ5YzZhNzgzNGVkOWY2OGQyMzVjNDM5NWRjYWQwIGxlZ2FjeS10cnVuaworNDQ0MSA1NThkOWY5NWE2MDIwYWQ2MzNmNmZhOGVkYzcxOTNmMmE2MWVmYjRmIGxlZ2FjeS10cnVuaworNDQ0MiBkYzZlYWExYThmZGRmZWQ1ZTczNmIwMTk3ZTc1N2RlNDQwMjUxOGRiIGxlZ2FjeS10cnVuaworNDQ0MyA3N2QxY2FiZjk3MWNjY2NhMjA4MjY3YTUxYjM4NGQ4NDkzNTExMDhmIGxlZ2FjeS10cnVuaworNDQ0NCA0ZTYwNTZkOTgwZTFhMWMwNzMzMDk3MjFiZDE5MTFjYmNkODVmOTUzIGxlZ2FjeS10cnVuaworNDQ0NSA3NDQyNjUzNzQ0NTA4MDFmMGYxZmFlMDI5ZDgwOWE4ODZjMTA2YjMxIGxlZ2FjeS10cnVuaworNDQ0NiBmNDk1MjdlY2RiM2FkNWNkNmE5N2I3OWVmZTAzNWM4NjQwMGM5MDQzIGxlZ2FjeS10cnVuaworNDQ0NyBhZjI2ZDRkNWMxZDQzYTJiZjM2NGM0OTJlNTVlNjM0Mzg2MjY4ZTM1IGxlZ2FjeS10cnVuaworNDQ0OCBmYjE5OGUxMzE2YjliZGMyYzg5NzhmNjNlZTY1YmViYmI5ZmYyNDkxIGxlZ2FjeS10cnVuaworNDQ0OSAxZGFiOTliODZmYThjM2Y2YTdjNDQwMDRkMjY0ZWYxZTM2MTM3YWQ1IGxlZ2FjeS10cnVuaworNDQ1MCBmOTAwYzA5OTk1ZGZjNDJmMjU2Njg2YzJlYmY4MTBjM2Y5MzAxMzRhIGxlZ2FjeS10cnVuaworNDQ1MSA2M2Y4NzU4NDliZDgzMTkxNDQxMjlhMTA4YzlkNzY0YmRhNzAxN2IzIGxlZ2FjeS10cnVuaworNDQ1MiBjZjRkODg2MmYxOWJmNDU3NDBmOWRmYzAxZDVkZmYzZmRkZjcwY2M5IGxlZ2FjeS10cnVuaworNDQ1MyBjNWE1MTRmOGYzZTNkYWM1YWM3YzFhY2NiNWYxZWQ5MTcxZGIxYTIyIGxlZ2FjeS10cnVuaworNDQ1NCBkNWY0ZDAxM2RjYzE0NDNlM2NjYjQ0MDllNzhmZDk1YjM2ZDkxYWRmIGxlZ2FjeS10cnVuaworNDQ1NSBmMDViNWNkNzlmYmVkYjczYTQ5MmVjYjk2YzliMWEwNGI2ODJjYzQ3IGxlZ2FjeS10cnVuaworNDQ1NiBlODk1MmI4ZGZlZmZjZGFjZjQ0NTE4M2Y5ZWFkMDllYWM3NzNmYzQ3IGxlZ2FjeS10cnVuaworNDQ1NyBhNzA4ODM4MDMzMzhhMDA1NzE4NGU5NDhjZjlmNTIxZDU0ZmFkZGVmIGxlZ2FjeS10cnVuaworNDQ1OCA3Zjg3MTlhMzY2NjIwM2I3NDM3ZGI2ZGQ3NGJiMTU4NzkzNjBiNDUzIGxlZ2FjeS10cnVuaworNDQ1OSBlZDVkMGFkNWVhMmYxZmRlODM2ZDQ0NDMwNDEzZmE5NTExYWE2ODM5IGxlZ2FjeS10cnVuaworNDQ2MCAzYWE5MTg0Y2ZmOGI2YzliZWEwN2E5YTYwODAzYTEzMjllMzU1OThmIGxlZ2FjeS10cnVuaworNDQ2MSA3YzUzZTYxYmM0YmE1NzhlMDRhNjgxODgxYjUxYjgzMmQwMDgwZjQ4IGxlZ2FjeS10cnVuaworNDQ2MiA4MTFjNGU0NjIyYWFiZjU2YmNhMjg3YzI0MTdmNjU1M2Y5ODNlYTU1IGxlZ2FjeS10cnVuaworNDQ2MyAzOTJkYjE4ODExOTA4YzdhYzcyMTg1YTE4YTY5MTFhMTQ1MTIxZTIxIGxlZ2FjeS10cnVuaworNDQ2NCBmNjVlYzNkY2M1NjMxZmQ1NWJhOGJkY2EzMWU4Y2Y1YmYwY2ZmYjZhIGxlZ2FjeS10cnVuaworNDQ2NSBmMjc4MDA5NjVmZjdjZWRiMDdkNmRiYTkyYTllYWQ0ZDYyNWIyZGY0IGxlZ2FjeS10cnVuaworNDQ2NiAwYmFlNmFiOWM5ZTBlNzY1ZTg4OTAyNDg0MjZlMjljNmVlZjQxZGU1IGxlZ2FjeS10cnVuaworNDQ2NyBkYzliNjMxNmI5YjM1NGYyMWYwYTMzYzI4ODg0Y2VlY2FhNGVkNzc2IGxlZ2FjeS10cnVuaworNDQ2OCA2OWQ0OGNiZGMyZDlhMzkzNzQyNzY2NmIxNDY3YjYyZDc5MjdhY2FjIGxlZ2FjeS10cnVuaworNDQ2OSBlYzA1ZDkwMjFiY2NkODIzMDE1MzhjMDBmNjI1MjQ0ODFhYWZjMGQxIGxlZ2FjeS10cnVuaworNDQ2OSA5ODk1NDc1ZDE4YzdiNWYzMmFkYWY3OGY3MTg4NmFlMDQxZTRkMTBjIGxlZ2FjeS10cnVuaworNDQ3MSBhNGE4NTQ1MGViYWZlMzI0Y2QzNGZlZjI3NWJkZDg2NDBhOTZiNmYwIGxlZ2FjeS10cnVuaworNDQ3MiA1YTA3NzVjZTdiMzExZWI5NmE3NjBkZTJhOGY3YmU5YzBiYzAxOGQwIGxlZ2FjeS10cnVuaworNDQ3MyA5ZTM0NjljMGVkNzVjYzI0YTE1ZGYzYjZkY2Q3YTU4ZTZlY2U1MmE4IGxlZ2FjeS10cnVuaworNDQ3NCA3YmRhMGYyYzE3MGNkZWEyOTY2ZTU3ZGQ5ZGRlYzMwMTc5ZDRmZjU4IGxlZ2FjeS10cnVuaworNDQ3NSBlZTEyZWRmYzIwOTU5OWJhMWMzNmNiNGZmZDlhNWZlZTE1YjQxZDA5IGxlZ2FjeS10cnVuaworNDQ3NiBlZWUzZDcxNWYwY2ZiZjFlYTJmNGM0Mjk3ZjcyYmJkMzczN2NjYjBjIGxlZ2FjeS10cnVuaworNDQ3NyAzZDQzMWE1MjExMzJmMjNhMDhiZDZkYzM1NDIyMTVlYjAyMWY5NzNlIGxlZ2FjeS10cnVuaworNDQ3OCA3MmIyYWI1NmU0MDM1MmUzZWRiNjcyZWQ0MWM1YWQ2MDAzMDQ3ZGZiIGxlZ2FjeS10cnVuaworNDQ3OSBmYTdiYzUyODMxNGJjNDYxZGFhNDI5NTVjZGQ2YTM4NTkxYzlhM2QzIGxlZ2FjeS10cnVuaworNDQ4MCA5N2Q2MTRiMjRjMDhjYjU0NjM2MWNlMWZjNzUyNTFlOGY4MjhiMWU3IGxlZ2FjeS10cnVuaworNDQ4MSA1Yzc0YzNhZWRhNzRhZjZhYzcyMzIwMjgwYmI5ZWJmM2E5M2ZiM2U1IGxlZ2FjeS10cnVuaworNDQ4MiBkNGEwNmU4MDU2Yjg3ZjlhMzE2M2I2MTIyZGM0NTM1MTU2OTQ5MGE1IGxlZ2FjeS10cnVuaworNDQ4MyAyYTNjOGJlYmYxNTY4YWYyODk1OTI3NTBhNjlmYmI2N2U5MjRlNmFiIGxlZ2FjeS10cnVuaworNDQ4NCA2NzFjZjFmOGIwYzMzYmI3MTgzOTBlZjM4M2VjNjc1NmNkMjEwYWY1IGxlZ2FjeS10cnVuaworNDQ4NSAxNzM5ZjAwZmZjODYzMWUzMGE2N2Y4YTY1MzY5MWM4YmEzM2VlYzA1IGxlZ2FjeS10cnVuaworNDQ4NiA2MDliZmI4YWU3ZjU0YWVlNzU3MDMxODE2OTE0MzczYTIzM2E1YmNjIGxlZ2FjeS10cnVuaworNDQ4NyBlNDNhMTk0MmU1ODgwNmExMjRmNzA0MWU3OGJlMDFjYmIxYjcyYjNmIGxlZ2FjeS10cnVuaworNDQ4OCBmMjM2YWRjMjhlNzc3MDkyMmUwYzY3MWQwYmZmYWMyMmNlOTcwNTc4IGxlZ2FjeS10cnVuaworNDQ4OSBjZTY5NzQyZjJlNzc3OTVkMTc0MmVkYWJhNzU4MmEwNTJlOTU4MjYwIGxlZ2FjeS10cnVuaworNDQ5MCA4M2ZjYjlkYjRjYThlYzRlOWY3NGI0OGUyNzQwZTMzYmRkYTcxODU2IGxlZ2FjeS10cnVuaworNDQ5MSAzNzBmOGNiZDdjMzIzZTg4NWEzMzAyNGVhN2Y2NjI1NTNhMWNjODg2IGxlZ2FjeS10cnVuaworNDQ5MiA1OTgzZDJkYjU5MDQ1N2FiMDZkYjZhYmQ2Zjc0NDg1ZWVmYmQ4MzhmIGxlZ2FjeS10cnVuaworNDQ5MyAwNzAxNzY5MDkwZjQ5YmYxYTMxNGIzZDVjNTBlYmE5MDMzMzgzZGE1IGxlZ2FjeS10cnVuaworNDQ5NCAzZDgyMmUzMmMzMjk3MDQ0MGU1Nzc5NzRhZDMyNWQ2MGM2YzY5ZDgxIGxlZ2FjeS10cnVuaworNDQ5NSBlMjhlMTBlNWRlYjJjMzEzMjUxMGYyZTZkNjNlZWJmMjdmZTIyM2JjIGxlZ2FjeS10cnVuaworNDQ5NiBlYTY5NmYyNDg3ZmM4NjI4NWI4YzNlMTExZTExZTY2ZDY4ODA3YmRhIGxlZ2FjeS10cnVuaworNDQ5NyA0ZWJlZTkwNDkyNGU2YWE3NzhlOWU0MTBhOGJjMjQ5NzIwOGY5OTZhIGxlZ2FjeS10cnVuaworNDQ5OCAyODFlNDA2NTJlMjM0NTM4NDU1MDA3MjgwZDQ3YzI2OTk3ZGU2OGEyIGxlZ2FjeS10cnVuaworNDQ5OSA2MmJiYmZlNmJiZjY4Mjg2ODg2ODQzYTc2ZTM3M2NlMmI2ZmMyODI4IGxlZ2FjeS10cnVuaworNDUwMCAxY2UzZGJlZWI4OTA5MzgwZTNiMWI3OGM4ZTI5MTk4MzM0ZmI4MzMyIGxlZ2FjeS10cnVuaworNDUwMSBmMThjMTkxNWM3MjJkMTc1MTk4YTM2YjQ3OWM5NmMzZDM5ZGI0YTI2IGxlZ2FjeS10cnVuaworNDUwMiBjODVhYmNjNzUyYjE4NDY0MzA2OTBmY2Y3Y2ExZWNjOTk0OTI4YjJjIGxlZ2FjeS10cnVuaworNDUwMyAwN2NmM2IzYmFmMTZmYzMzNzBhYzk1OGViNmNjOTkyNzI1NTFjZGZiIGxlZ2FjeS10cnVuaworNDUwNCAxOTM2M2Y4NTcwYTJmY2ZmZDJkYTI2MGE0NWQ0YTIwNzU4NDA4MmJlIGxlZ2FjeS10cnVuaworNDUwNSAyM2RmY2E4YWE3M2IwNDA1NmRlNzUwZGY4NGJkM2QzN2NkZmZjOTk5IGxlZ2FjeS10cnVuaworNDUwNiBkN2U5MTQzN2YwYTI3ZTI3NDdjZTAyYWIxYmE1MDhmNGU1ZDhlYzNjIGxlZ2FjeS10cnVuaworNDUwNyBkZTQ5ZDQ5MDQ0ZDc1M2RmMTEzMDQzYjRiNzkzNjI1MDNmNzhkYzQ5IGxlZ2FjeS10cnVuaworNDUwOCAwMzE5YjEyMzIxZDdkZGJmMjBhMGRmZDZmZTVhMjkwMzM5NmQ2YWRhIGxlZ2FjeS10cnVuaworNDUwOSBjZjMxZWFiNmFiNWFlMmUwMWY0YzY2YmNjOWQ1ZmUyY2FlMGMwYTE0IGxlZ2FjeS10cnVuaworNDUxMCBhZmY1ZDdkMDY3MzVjOGZhMGFmOTVkZGFhOGEyNjcxYWNkOGRlNTBiIGxlZ2FjeS10cnVuaworNDUxMSA3OWMxNzFmNTgxZmNkZWUzMDk5M2ZhM2QyY2NlMjQ5MTAyNWI1MWJlIGxlZ2FjeS10cnVuaworNDUxMiA1MDgwMzZkYmJhM2I0ZjJmNmYxMjgzNGRjMDYwMGEwNDg5MWQ2NzIyIGxlZ2FjeS10cnVuaworNDUxMyA4NjZjODEwNjhkYmRhMjcxZWUyMmI4YzA4NWMzMGMyNGE3MThjYjA1IGxlZ2FjeS10cnVuaworNDUxNCAxNDY4OTA2NTNhNTdlYTEzYjI4ZmY0NmQ0NmU5MmZkNGM2MzhlYWIyIGxlZ2FjeS10cnVuaworNDUxNSAxNzJiYTA0YTUxOTE2Y2I3NTA0MTM1NDBlMDNmNmY0MjgxYWY0MWQ1IGxlZ2FjeS10cnVuaworNDUxNiBkMGQwYTY5YjVjYTM0Yjc1ZWM3N2RiZmM4OWE1YWZmZmY2MjA0MzFhIGxlZ2FjeS10cnVuaworNDUxNyA1ZWQwNjU5NDM1MjYyMTU0N2Y1MzY4MTZjNzQ5MDU4MDcyZmY4NjU2IGxlZ2FjeS10cnVuaworNDUxOCAyODBmMzFlNmM2NTNiZTQwZmMzZDU1ZGVmYWYxY2RkOGNjOWZlZWUxIGxlZ2FjeS10cnVuaworNDUxOSAyNmNkNGQ2YzJkMTJiZTNlYjZlYzdhZDMzNTJkZjgyZmIxZTU3YTJmIGxlZ2FjeS10cnVuaworNDUyMCAwMDBhZTY0MmY5Yjg4OWExYWRmOTgyNDk0ZjA3MjI4ZGU5NDc0NmNkIGxlZ2FjeS10cnVuaworNDUyMSAxYjk5NDUxZmExNDM2Y2FkNzg0MmZlYzVjNTlhYTJjMDRkNjJhYjA4IGxlZ2FjeS10cnVuaworNDUyMiA1MjI3MzI0ZDY0ZTQyOTg3Y2I4NmNmOGI5N2ZhNDk2ZDQ0YWQyMWYzIGxlZ2FjeS10cnVuaworNDUyMyAzYWE3YTc3ODQ0NTU5YWM0NzRiNWY2MjllNzU5ZjE2YThlZGZjNzQ5IGxlZ2FjeS10cnVuaworNDUyNCBiZTVhYjhlODljNDk4NmU4MjI5OGFjYTRiYzY1M2JlODM4OTJiZDQ5IGxlZ2FjeS10cnVuaworNDUyNSAwNDhlOTFhNTljNzVlOGNlNjBhMzUzMjFmYWQwY2FjNjA3MmFiM2YwIGxlZ2FjeS10cnVuaworNDUyNiBjZjY1YTEyNGZhNGI3NjljNjkyMWI2YTlmNjVjMjkzNGIwZmE3YWMyIGxlZ2FjeS10cnVuaworNDUyNyA2OGEzOGNmZmNmNTgzYzI5MThhNTM4ODkwNWMxOWJkZWJhMTkxMjgyIGxlZ2FjeS10cnVuaworNDUyOCBhMzZjYWM3OWM1YWY3YzFjMTkyNWE0MWM1MmVjMjkxN2ViOTFiZDI2IGxlZ2FjeS10cnVuaworNDUyOSA0YzM0N2U0ZDEzZjFmMTE2NWM4MGRkOWJhNDE4ZWZmZGFmMWQ4MDUwIGxlZ2FjeS10cnVuaworNDUzMCBhZGMwMjhiOTc3YmRmNmJiN2Y1YWMxY2RlNjAyZTc4NmZhOGViZjU3IGxlZ2FjeS10cnVuaworNDUzMSAzODQ4MDk0ZjI1OWNhN2JhYzY5NDQ2YmU3ZjI4NzkxOWQ3ZWEzNDE5IGxlZ2FjeS10cnVuaworNDUzMiBkZjZmZTgyOTZiYzMxZDUzYzM0OTQyNjVlNzVhYWUzZmRiYTcwMGNlIGxlZ2FjeS10cnVuaworNDUzMyA1YmJmMGE5YzlhNDI4YWM3ODY0ZDMwMDA5OTYzYzYxNGUwYmUyN2Y2IGxlZ2FjeS10cnVuaworNDUzNCBjMjFjYzdiM2NlMjgzMzczY2Y3ZDJlNzEzNjU4OTU3MDNkYjNjNzFjIGxlZ2FjeS10cnVuaworNDUzNSBhZmVjZGVjOTk2ZmY1MDAzMzYyNWI1ZjVjYzZiN2ZjNzJmOTVhNDk0IGxlZ2FjeS10cnVuaworNDUzNiA0YWZhN2ViNDczNGJjZmFmNjUyZmRiZmRjODc3YjI4NGZiZjczZGJjIGxlZ2FjeS10cnVuaworNDUzNyBmMmQyNjdlZGJmZDY4NzY3MDkzOTE1ZmExMzdkZGU3MGRlMTJlYTgzIGxlZ2FjeS10cnVuaworNDUzOCBhYmJmMmE0YjQ4OGIzNzFhMmU2NDU5OTVhYTNjZTE2MWU0NzU3NDdjIGxlZ2FjeS10cnVuaworNDUzOSA4OTIxYTI4ODFmYzdmMjY0NjhjZDg2MjYyNTBiYTRhZjA0MzRlZGQ2IGxlZ2FjeS10cnVuaworNDU0MCAyNjA0ZDExYzhiNDA0NTljMGFjYjIwNWZlNzVhYjJiZDYwOTljNzMxIGxlZ2FjeS10cnVuaworNDU0MSA2NTE0NmI1MmYxNmI5MzRkZGQwZDQ5NWFjYTJkN2I3MWMyYzA5YzJmIGxlZ2FjeS10cnVuaworNDU0MiAxOTQwZTFlMGNlZGY1ZDU1ZTczYzBmZGUwZjUzNmFkYzI4Yzc4MDMzIGxlZ2FjeS10cnVuaworNDU0MyA1M2FhNTE0MzNmN2ZkNWQ1M2MyNzBiYmNkMDEzNGI0NDcxMjcwYjg3IGxlZ2FjeS10cnVuaworNDU0NCBmNzhiMzg3YjU0ZTBhMzk5NWEwZDI3NWQ5YmU0NmE4MmRmOTEyNzBmIGxlZ2FjeS10cnVuaworNDU0NSBiNGQ5ODJjNjQ4YmIzZTc2MDJhOTU5ZjQxNTMwNTg3MTVhNDhhMTgyIGxlZ2FjeS10cnVuaworNDU0NiBiMDNiNDNiZWUxYWIzZWNmZjZhNTIzY2FhNTAxNjZjMDkxOGNkNzhlIGxlZ2FjeS10cnVuaworNDU0NyBlOGNhZmIyYjc0M2E3ZTRjMDNkODY5YTM0MmEwY2Y2Y2VlMTI5MTg4IGxlZ2FjeS10cnVuaworNDU0OCBkMzU2YzQ3M2RiOTkzZmU3NGZiZmZiYmQ3Mzg1YjZiZjkzMDNhN2M3IGxlZ2FjeS10cnVuaworNDU0OSAwZDdlNGFhNTk1ZjdhYTViNGQ5YjgwZTVkYWEwMGI3NTA3NTRjMGRlIGxlZ2FjeS10cnVuaworNDU1MCBkNWM5MzViOWE3YjUwY2U1NGE4ZmQyYTVhMzU2MmMwNGZiMmRjMzQwIGxlZ2FjeS10cnVuaworNDU1MSBlNDU4ODQwNGZkZmYyNTQwMGMwNTgyYTU1MzA2YjkwMTYzNDM5ZTQ5IGxlZ2FjeS10cnVuaworNDU1MiBiN2JlMDM4MmY5ZWU2OWQxNmExYjhjZmY3MmQ5ZmQ4ZWQ4NTU5MzVmIGxlZ2FjeS10cnVuaworNDU1MyBiYTJlMjFhNTRhZTM5OTFhNGJlYTNiOGViYWNjOGYzNDY4NGRkY2ZkIGxlZ2FjeS10cnVuaworNDU1NCA0NTc0ZWQ2NTdjYzlmOWE1NWNhZTQ0NTQxNWU2YTc4ZDk4NzRhODlhIGxlZ2FjeS10cnVuaworNDU1NSBmZGNjYzMyMjJkMGFlNzk0MWNjNDVhYTZkOTMzMDg5MDlmYmMzNDg3IGxlZ2FjeS10cnVuaworNDU1NiAzMDgyMWJjMmRjYjc0NGZiMGFmMTc1ZDdiZDI4ZDI5NWRhYjYyNWVhIGxlZ2FjeS10cnVuaworNDU1NyBiYmZhYzNlMjU3MGQ5YWIyMjBkZmY3ZjYxZDkxMjIyYmI5NWE3YWVhIGxlZ2FjeS10cnVuaworNDU1OCA3NDkzYzY4MDVkYzZlNWNiOTM0N2JlYjY2OGViMTExZTJhYzExMWNlIGxlZ2FjeS10cnVuaworNDU1OSBlYTdiMmJmMGI1MjE2MWY5NmE1YTk3YzJjYThiZTZkMzAwZGM1MWZkIGxlZ2FjeS10cnVuaworNDU2MCAyZWJiMjEyODRmMzQ1MWE3NjliZjU3OGY2YmZlNDRjZGU4ZTQ5NmJkIGxlZ2FjeS10cnVuaworNDU2MSAwMTgzMGRjOGQ2ZTVkMzZiZmQwMWYyMmY1NjcxMmVmMjIzOWVmMWQwIGxlZ2FjeS10cnVuaworNDU2MiBhZjQxZjRhMjE2ODJlYTgyMTM2MjdhZGQ0NTMyMTJlNjBjM2U3Y2YyIGxlZ2FjeS10cnVuaworNDU2MyAwNzA4MGEyOTYwNzA3YmJiOWYwMWVmNjYzMGE5ZmVjMDQ5NWJjMjMzIGxlZ2FjeS10cnVuaworNDU2NCA2YzQ5MDVmZmZmMDFlOWI4OTIwZTQ4MjlhOTI4YjY1ZmZjZDc5MTkwIGxlZ2FjeS10cnVuaworNDU2NSAzMGNiZTAyNGRmNDA5ZWMwZDdlMzJhNDM3NDZkNzgzNjRkNTQyM2ZhIGxlZ2FjeS10cnVuaworNDU2NiAyNjY5ZWYxNGMyMDU0MTk5MGQ2ZGJjZWU5OWUxYmMyZjQzNjc2ZmRiIGxlZ2FjeS10cnVuaworNDU2NyA3NmM4NjBhMThkODIzNDNmYjRlMDc2ZGFkY2U0ZmJiYzUwODBlNzM4IGxlZ2FjeS10cnVuaworNDU2OCA3OTQ3YzBkMTZjYTA0MWU2OTE0ZWM4OTIxODUwYzM4YjQxMjUyNTlkIGxlZ2FjeS10cnVuaworNDU2OSA3ZWEzNjlkMDVjMmVlMTk1ZTEyMmQ0ZDdjZmQwZDg1MTIzMDg4NDAwIGxlZ2FjeS10cnVuaworNDU3MCBkNzNlZWQzNTMwMDEwYzRmZDRjODAyYTA5MDkzYWUwZWY0ZDNmNjE2IGxlZ2FjeS10cnVuaworNDU3MSA1ZGY2OWYyOTRjY2M2ZjZkNDY2MWU4NGUzOWUwNjEzMmIwNzBhNzU0IGxlZ2FjeS10cnVuaworNDU3MiBhZWRhODY0YzExYzQ0NjM5MjVlZGQyMGExODZhZDFkNDhlN2ViZGIzIGxlZ2FjeS10cnVuaworNDU3MyAxZGFlMGQzMDYyZDI2M2JiNmNjNjg1MWU3Mjg5YTA1Yzc2NmEyZTc1IGxlZ2FjeS10cnVuaworNDU3NCA4NGI2MWZlNDQ1NzMwNDg0MDBjZGIxZTcxMWYwNmRhY2RmNGIzMmFhIGxlZ2FjeS10cnVuaworNDU3NSA4NmQ5ZTkxNDA1Yzg1NTM4OTdjODg3MGM0MGVjZWYyYjhjYWY2NWQwIGxlZ2FjeS10cnVuaworNDU3NiBiYTNmZDk2ZjA1NWVmOTE5YjRkODAzMjZiMTY3NWJjMzUyODM4NjY3IGxlZ2FjeS10cnVuaworNDU3NyBmZDVhYjdlODI4ZmNjYzAxNDE1OTY4MjRmOGE3NWNhYWEyNmE3YWE1IGxlZ2FjeS10cnVuaworNDU3OCAzNjg0N2I4YjU3NWRmNjUxZjU4YWVkNTgxMzY5NmViNzZkZjY1MjRmIGxlZ2FjeS10cnVuaworNDU3OSBiZDA2MWRjMzA4NDJlNzUwNGVkZTRkN2MzN2YzZThlMTc5NzkwNWQ1IGxlZ2FjeS10cnVuaworNDU4MCBhZjM2YmFlMzQzZmNmOGRhZWY0OGE5ODU0MWUzN2MzOTZmMjQwOGU5IGxlZ2FjeS10cnVuaworNDU4MSA2OTU0MDE2OTJjNDZmYjYyYzRlOGM4ZGJkN2NmOTExYzBkY2Y1NWRmIGxlZ2FjeS10cnVuaworNDU4MiA5MmRhODkwMTUxN2UzZjE1Yzk4YzkxOGIyZGYyNDBhMDkxYTRjZWE0IGxlZ2FjeS10cnVuaworNDU4MyAwNTM2MGNkNjE2YWUzODg2NzUxMDU0NWU2OTRkZGFiMjQ5ZTZjNzRiIGxlZ2FjeS10cnVuaworNDU4NCBjYTI3YzJmZTBiOGQ0YzZiNTZlNGYwNmI2MzFhNWE2ZDhjNDcyNjNiIGxlZ2FjeS10cnVuaworNDU4NSBmZTkyMmZlZDZiMzFkOGM4NGZmNjBhZThlYjY0NTMyNTMwMWVjNTI5IGxlZ2FjeS10cnVuaworNDU4NiA0ZGRmNTU0NDU3YWQ1ZDFiMjAxY2M5YzZhZjMyMzExZDYxYmY5NDJjIGxlZ2FjeS10cnVuaworNDU4NyBjMTZkNjkzYmZlNzNmNTJmNDNmODA3ODBhOGY1YTFmNTEyNmU1OTBhIGxlZ2FjeS10cnVuaworNDU4OCA5ZDYxYzU3NDliZjgyNzgxYTdhMDYwMzk0NjlkYzgxM2FlMjg0OTczIGxlZ2FjeS10cnVuaworNDU4OSA0ZjkwYjQ3NGJlZWMzNDBmMDU5ZjA1OTY4YWQwYWE5OTdlYjY2Y2MzIGxlZ2FjeS10cnVuaworNDU5MCBjNTdiNWM1MGEyZDI5NTRmNmEwYzFjZDhhMWI1MWY4Y2IwMDIzYmVmIGxlZ2FjeS10cnVuaworNDU5MSBjOTA4NWYxZTk3N2YzMzgwMzQwYmJmYmMxOTFjMWIyZjE1NjMxOWVlIGxlZ2FjeS10cnVuaworNDU5MiAyM2YwNDAzMTc4MjgwYWUwN2NmYjMwODRmYWZkOGNjNTdjZWFjNjUyIGxlZ2FjeS10cnVuaworNDU5MyA5NGUyY2E4NjU5MGE1NmQzODc0ZGMyNGJlNWRlYjczZjk1M2I3ODFmIGxlZ2FjeS10cnVuaworNDU5NCAxNzNkZDAwODc5YWI2MDAwYzgyZGM2NDk4ZmM4ZjcyZmRmN2E4ZDRhIGxlZ2FjeS10cnVuaworNDU5NSA4NDkyM2Q5MmI1M2U3YWMxYTYzMjJhMzI4MGUzNDFhZTdkMzYxMmJjIGxlZ2FjeS10cnVuaworNDU5NSAxNmViNGM1MWVlOTcxNjkwNDYzNDA5OThlODUwYTYzYzY1MjI1YjBhIGxlZ2FjeS10cnVuaworNDU5NyA3YWU4NDdiMWIyNjkyMjhiOWNjMzg0ZTBiYWZkMDRhMzY3OTNiZTFiIGxlZ2FjeS10cnVuaworNDU5OCAwZTYwY2QyMDdhZGJiMjRiZDViM2MyYjg0NGI3YzA4NjczZTA0NGE1IGxlZ2FjeS10cnVuaworNDU5OSBlOWU5M2UwNzM1NGI4YmMwYjM5NDAxNDYyYTcwYTZiOWI5ZGJhMGY5IGxlZ2FjeS10cnVuaworNDYwMCA5YWZkYmY5NDRjMmEwM2E2NDlhNTdmZTBhMzIzY2QxMjI1MWM1NjBkIGxlZ2FjeS10cnVuaworNDYwMSA4MzhlZjk3Njg4MjEwMzAxNjc4NWI5N2Q0MGViOTJjZDlkMzAxZjljIGxlZ2FjeS10cnVuaworNDYwMiBmOTlhMjM5OTg3NzBiYWI3ZTJmMjU2NTZmN2QwMDRhNjViOTM4YjUyIGxlZ2FjeS10cnVuaworNDYwMyA2MDYwZDdmYjA3ZTM0MjQ1ZTk3MzBiZmZkODYyMTA3ZTg4NGY0YTM0IGxlZ2FjeS10cnVuaworNDYwNCA0NDg0MzViZmVhZGMwZDQ2Y2Y1NWM2OGM5MmY1MDNmNmQ5Y2Y2ODExIGxlZ2FjeS10cnVuaworNDYwNSA1ZmQ4NTI0ZGQwM2EyMTBhOTM3OGI2YjMyYWNlMTczYjhmMDAxYzg3IGxlZ2FjeS10cnVuaworNDYwNiAxYTUyMzUxYTAwYjI2Y2QwNTlhNmJjOWUyZDk1MThlNzY5YTFmMWRhIGxlZ2FjeS10cnVuaworNDYwNyBlNTRiODY1NGY5Mzg0ZjEyMjdiYTIxOTdmZWI1ZmUxNjExYWRkZWM4IGxlZ2FjeS10cnVuaworNDYwOCAwNzI4ZmViMWQwMzFiNDg4NDJiNzE5ODM3MGFmMmM3ODY4OGFmNTQyIGxlZ2FjeS10cnVuaworNDYwOSA4NDk3MWQwMTU5NjVlOGU4ZjJmNDFmNDQ1OTNmMjMyZjY4ZDZhNTQ3IGxlZ2FjeS10cnVuaworNDYxMCBjZmJhYjc5YTc5OWY0NjUzNTUyMjcxZGE1MDIwYmUyMjIwNTE2Mzg3IGxlZ2FjeS10cnVuaworNDYxMSAxZTA4MzhiYjhmMjIwOGUyOTJiMzAwMzQxNjIzZWY4MzJiYzIwOWY4IGxlZ2FjeS10cnVuaworNDYxMiAyOTcyMGM1ZDllN2VjNDIyMWZjODdmMWIyMjJmODA1MzE5YmZkNzA0IGxlZ2FjeS10cnVuaworNDYxMyBhNjE5YTYxYWFkMWViYjhjODgwMjQxZmMyY2VkMGYxZTA2MmMwMjJkIGxlZ2FjeS10cnVuaworNDYxNCA4OTliNGUzZGZkNGNmZjk5Y2E0MGVkNzJjMDc1Mzg0NTAyNDE2ZTFmIGxlZ2FjeS10cnVuaworNDYxNSBmMDYyMjJlMDdjYTc1NTM3OTU4MzZmN2U5NDQ0NzE4NWE2OTE1ODdhIGxlZ2FjeS10cnVuaworNDYxNiBjOWFlYTM0YWU0YjY5OTcxNGFlODEzZTQ3NWY0ODc0ZTJjMWRiYmMyIGxlZ2FjeS10cnVuaworNDYxNyBlZTBiM2NiMzdhZjg4Y2M0YzkzNjcwYTE2ZDE5YThlM2MzOGI5ODJhIGxlZ2FjeS10cnVuaworNDYxOCA0NTliZjdkMDRlMDViZWI4MjllMmQ0ZDAyNWI3ZGFmODNjOTZiMDNjIGxlZ2FjeS10cnVuaworNDYxOSBmNDliNjM3MjQ5MmYyOGJiNzNiNDE1Mzc2ZDdlM2I0ZDIxYjg0MDBkIGxlZ2FjeS10cnVuaworNDYyMCA3YTZiNTdmZWJhYzQ2YzEwNjIxY2RjZGQ3MzM5MjE4ZDRjOWJiYmZlIGxlZ2FjeS10cnVuaworNDYyMSBkOTBjOTE0YzU3N2QyMGI0MjFmMTBlNzJhOTA3Mzk1ZTU4YjM5NmRlIGxlZ2FjeS10cnVuaworNDYyMiA5YTlmM2Y1ZDZmODYwMzIyMTJmMDA3M2E1Mjk5MGQ5ZjFlMTgwNDBjIGxlZ2FjeS10cnVuaworNDYyMyA5MmNkODU0NzBhNzY5ZGY1NzdkODBjYTYyNGU2YTA3NThkZWQxMDU5IGxlZ2FjeS10cnVuaworNDYyMyBiNDVjNjg4NzU2ZDA0ZmI4NGQ0YTBkNTE4ZmMzZDdlM2NiMjVmYThkIGxlZ2FjeS10cnVuaworNDYyNSA3ZmY2ZDk5OWYwNTlhMDhjOGM4MmI4M2MwNTJkNTE0ZjZjYmU2NTE4IGxlZ2FjeS10cnVuaworNDYyNiA4YWRjYjgwOGQ4ZGRkODQyOTU1NDgxZmRjMjdmZjYyMjFlZWYyZDYxIGxlZ2FjeS10cnVuaworNDYyNyA2ZjM1YTFhZDFhY2M4MzM1OTBmOTgyNTc3YzUwZWJkNjBiYWU5ZGI2IGxlZ2FjeS10cnVuaworNDYyOCA1ZWVkODMyMTZlNmM1NWI4NTY4YTk5ZjU2NDdjYWM5MGUxZDkxMjEwIGxlZ2FjeS10cnVuaworNDYyOSAwNDQ1NzI1ZmU1ZGU0Y2FlYWJmNDkzOGQ1NGZmYzA2ZjAxMGQ2NzhjIGxlZ2FjeS10cnVuaworNDYzMCAxZTllNzQ5NDRiYjUxZjQ4Zjg2MjkxOWJhNjg5MGMxMjcxYmNkNjYwIGxlZ2FjeS10cnVuaworNDYzMSA5ZjUwMGEzNGMzNTU0MTgxMWM1NjRhODkyZWQyNmY3ODZkZGY0N2NmIGxlZ2FjeS10cnVuaworNDYzMiA2NWQ4N2YwNmYwOGZjMzBiODNhYzBhMzcxMDRkNjZiMGM0MDQ2OTQ4IGxlZ2FjeS10cnVuaworNDYzMyA4ZGEwM2RlY2VmNTkzZGRlMGU0NGFiMTI3YTZjM2E0Y2NkYzBiOTQ4IGxlZ2FjeS10cnVuaworNDYzNCA5YjQ1MWM4NGE3YmY5MzAxMTAxMjYyODU5NGYyYTdiNDRhNmYyMDc5IGxlZ2FjeS10cnVuaworNDYzNSAwMDQ4MDI0YjdlZjg0Y2Q5YzAwZTU3OGQ5NzYyMGMxNTE1OWVjMjVkIGxlZ2FjeS10cnVuaworNDYzNiBkZmFiYjEzYmNlNzBmYzE4MWIyNmMwMmI0MTljZmEwNTUwOTkxODgyIGxlZ2FjeS10cnVuaworNDYzNyA2MmJkZGVkNWYwMGEyMzE1MWM0ODM5NmYyMDcxZDUyMTViN2FjNGM1IGxlZ2FjeS10cnVuaworNDYzOCA4N2Y0ZDZkMmU5Yzg5YTg0ZTk5MDIxNmNhNjU3NWI4ODE1ZjkyNzNlIGxlZ2FjeS10cnVuaworNDYzOSA5YzhiNDMyMzgwOGJjMGY5OTEzM2Q5YjI3ZTJiMTQ1ZTk3OWNkMTIzIGxlZ2FjeS10cnVuaworNDY0MCA5NWNiNTJiODVmNzg2N2ZiNDdjNjg3OTk0MjQ1YmM3YzVkNWI5YTUyIGxlZ2FjeS10cnVuaworNDY0MSA5NjhlMjQ4NGQ5NGRhMzgyZDQ5YzczM2MwM2M0ZTI5OTNkMTE3NDQ1IGxlZ2FjeS10cnVuaworNDY0MiA2NDYxZmYwYzRiZWU2ZjMwNTYyYTE1NDgzMzg3YzVkZTE3NmM1ZjE5IGxlZ2FjeS10cnVuaworNDY0MyBkNTk1NjgzODE0NDdkMGUzMjk5NWY3NWE3M2QyMGEyODU4OGQ4MzRiIGxlZ2FjeS10cnVuaworNDY0NCBiNDBlMTBiZGEyMzE5MWQyZDc2Yjc4ODM0NmQ0ZDEyMmE0ODZiMDYyIGxlZ2FjeS10cnVuaworNDY0NSBmNDg5NTFkYWJhNGZmYzNlNzU2MjVmMzRhNGRmM2U2M2FhZmVlYmVhIGxlZ2FjeS10cnVuaworNDY0NiBmNzhmYmNjYWY1OGNjNjZkMWI4MDY2MzUxOTJiNTFlYjI2MDcyZWUxIGxlZ2FjeS10cnVuaworNDY0NyAxYzAxMmQ4MmE5NzU4YzIyYjM3NDU3OTdiNzRlZmRhOTZlOGIxMzI0IGxlZ2FjeS10cnVuaworNDY0OCA4ZTQ3NmNhM2E3YTNmMmZhZjZmMWY2NTE3ZDZiYmI4ODc0MDY5NjQ3IGxlZ2FjeS10cnVuaworNDY0OSBjY2MyNzlmZjkzNWQwZjU0YTZiYzk4MTVmZTE1MTJkNTA1MjUyYmU3IGxlZ2FjeS10cnVuaworNDY1MCA1ZTU2OGJhY2ZiZTk5YmE2MmE4MmEzOGFjNTI3NDI1YmNmNzgyZGZjIGxlZ2FjeS10cnVuaworNDY1MSA5MWE0M2VhMTFiYTM1OTRjOTAyYzFlYmU2NTY0YjEwMjYxMGFlOThjIGxlZ2FjeS10cnVuaworNDY1MiAyNzU1N2U3MGE4ZjAyOWJjZDc5M2I3MmM2YWEwOTdkMzJlMDgyMzIxIGxlZ2FjeS10cnVuaworNDY1MyBmNDY3MWI2ODFhYjk4ZTc2MjBmZDk3MjljNDM2MTgwZTcwOWM0NjA4IGxlZ2FjeS10cnVuaworNDY1NCA1YWU5MjJjZmU0MDQ5MzQ3YmIwNzQwM2QwMGU1NmRiZWFiZGZkMThlIGxlZ2FjeS10cnVuaworNDY1NSA4ZjFkYWZmZTc5OWJjZjM0ZTA3YWZiYzk4ZDEzNzcwODgzNDZmNGNiIGxlZ2FjeS10cnVuaworNDY1NiA5ODk0ZTU1NDY4ZWM2MGY3NWEyYWYwMDYzM2RmODM0MDAzNDk0NThkIGxlZ2FjeS10cnVuaworNDY1NyBjZGIzNzNmNjViZjM4MGRiZDI5NDcyZDc4ODE0YjJlMDBlMDBjYjRlIGxlZ2FjeS10cnVuaworNDY1OCAwMmRkNjNkM2ZlOWIzMTM3MGVlNTczNjY0YmUyYTIxMTk1YTQ0NDVmIGxlZ2FjeS10cnVuaworNDY1OSA1Mjc4ODlhZTg0NTAzOTA5NzdkM2U4OTUyMWI0YzJkY2ViOTEzNDE1IGxlZ2FjeS10cnVuaworNDY2MCAwZTMwMjc3MWVlNWEyYmZjN2JlZTE5YzI4N2ZjZjliM2Y4MzYyNWJmIGxlZ2FjeS10cnVuaworNDY2MSAzM2VhOWNjN2Q3YmFlNzIzYzg3YTI3MjI2ZDgyMzQwM2M0ODRhODkxIGxlZ2FjeS10cnVuaworNDY2MiBjNjhhMDExM2I3NWEyN2ZlYTMzYmQzNjQwY2ZjNTIwZjFhNTJhZDdmIGxlZ2FjeS10cnVuaworNDY2MyA0MDUzZDRjYjUwZTBkNzAxNzQ2YTc1NzQ5YTY3Y2EwOGI3Y2YwMjg4IGxlZ2FjeS10cnVuaworNDY2NCBlNzM0YzcyMzU3MjdlNzRiNTRhZDc5YjMwY2ZjZWYyZDM1YzI0MTBjIGxlZ2FjeS10cnVuaworNDY2NSBlYjNlNjFkYjBkZGE5YzVhZjQ1NTg5Y2EyMjFlMzgxZTZiMTVmM2M3IGxlZ2FjeS10cnVuaworNDY2NiA2NGViNDg3Y2E0NjVkNmI2YTI4NjA1ZTk5OGM4NzUxY2FhMTc3MWRmIGxlZ2FjeS10cnVuaworNDY2NyA5Mzk3OTFmMjE5YTYzZWQ4NTYxZWM2YmI3NTZjNGU3N2Y0ZTlhZjU5IGxlZ2FjeS10cnVuaworNDY2OCAyNzIyMjkzNDhmZTJiNzdhMTVjNGUzMTc1YTc1NjkxNDFlZWQ4MTVhIGxlZ2FjeS10cnVuaworNDY2OSBhM2JkNjE2MzJmMTQ1ZWQ5ODhhMWMyYWI3ZDU5YTBjNTA0Yzc5NzVkIGxlZ2FjeS10cnVuaworNDY3MCBhYmVkMzY4ZDY4ZWYxODkwYzY3MjVjZDkxZWI5ZjFmMmQyZWVmZjE5IGxlZ2FjeS10cnVuaworNDY3MSA3NmQ0M2MwMzM4NDgxMGI1MjcxMmFiZWRjNmI1OWVhNzFmOWNkMTk3IGxlZ2FjeS10cnVuaworNDY3MiBjZmVhYTUwODJiYTgzMWI2MjFhMDM0Yjc3MjkzYjg0ZWI3YzMyMjhmIGxlZ2FjeS10cnVuaworNDY3MyAwNjEyMTMyZTAwMTg1N2VlNGE4YzRlYTBmOTFmMzU2YzRjMzE2ZWM1IGxlZ2FjeS10cnVuaworNDY3NCA5YmMzYTViYWE2ODBlMzhkNDA1Y2NjNzE5OGU4ZDQ4MmU2ZDA1OTM2IGxlZ2FjeS10cnVuaworNDY3NSA3NGEwYTYxMjFhZjcxYjZhYzczNDk2NWFkY2JkYTcwNWM4ZjhhMThlIGxlZ2FjeS10cnVuaworNDY3NiBiYmI1NmRjM2I1MjZiNTUyYjUzZjY5ZTcyY2IyZGMwM2M3MGZmYmQ4IGxlZ2FjeS10cnVuaworNDY3NyBhYTMzNjU4MTVjMjBkNzViMjAxMzIzZWU2NGUyMTA3MzRmZjVkN2I0IGxlZ2FjeS10cnVuaworNDY3OCAzMjQzNWQzM2YzNGE2ZjQ0YzhlY2ZiNTQwOGQ0YTIzOGQ2ODY3ZTliIGxlZ2FjeS10cnVuaworNDY3OSA0OTcxOTdmMzU3M2MxMGI5NGUzZTEwOGM2ZTljY2RmZTI1MTg3M2RlIGxlZ2FjeS10cnVuaworNDY4MCBjMmQxOGI1ODIzMmVkZWYxNjViMzE1MGU2MjAzNDA5OTU5MDI2MmEzIGxlZ2FjeS10cnVuaworNDY4MSBlNTNkMDE5ZTdkNDc2MTJkMmU2NDZmZjc4M2Y1ODk4YmQ0ZmI2NGNlIGxlZ2FjeS10cnVuaworNDY4MiA5NTg4YzIzOGU2NjA5YzEzMTI0MTJiNWIyMTNkYWZhNjNmY2EwYmEwIGxlZ2FjeS10cnVuaworNDY4MyA0YmNmMWI5NmVmZWM0ZjExNmIzMzA5NDBmMzcxM2EyZmM5NzYyODgyIGxlZ2FjeS10cnVuaworNDY4NCA5MmU2ZjVkOGJlODJhYjkxNDQ4YmM2NzNmZDRlOGZmNGQ3NTZjNThkIGxlZ2FjeS10cnVuaworNDY4NSAxZThiMzQ3YTA1NmNmMzY2NmVmZTUzMTQ2YWUzNzI4M2RjODcyNGFmIGxlZ2FjeS10cnVuaworNDY4NiA4ZDVlMzZiMzdhNDEzMjI5ZmE5MWUxMTdkNzhhMWY1ZTQ3OGE5NzI1IGxlZ2FjeS10cnVuaworNDY4NyAwMTAzNzUzMmMwODYwYTFiYzk5NDExMzdhMjRkOWQ3Y2ZlM2JiMmI4IGxlZ2FjeS10cnVuaworNDY4OCA3YjY1NDA0OTZmNTU0YmI2ZTU3NGYxYTMyZTY1MDBmYjZlZGMwYjMzIGxlZ2FjeS10cnVuaworNDY4OSAwMWVkNGNkMjE1NzZjYmI0NTBjOGI4MTZlZjcxMGNlYTdkNDRmY2I2IGxlZ2FjeS10cnVuaworNDY5MCAxYjY2MjQ5NzQyNmI1M2ExMGUyZTg4ZjAwODM4ODY5Y2RkNjUzY2YzIGxlZ2FjeS10cnVuaworNDY5MSAwYjBiMThkNjU1ZDJlOWMwNWU0ZTU3ZmUyY2ZmOGQ2YTgxZTIxYzU2IGxlZ2FjeS10cnVuaworNDY5MiBiNWRjYmE3YjczMmQwM2IwZGJkYzAwMDUxY2I4MDFlNzdmMTNlNzA1IGxlZ2FjeS10cnVuaworNDY5MyA0NDJiYWU4ZmNmZGM2NTE0ZjE5ZDFhY2ZmOGJhNjExMTVkZjJmYjA4IGxlZ2FjeS10cnVuaworNDY5NCA5NGI4NDUzNWMzNGUxMWQ4ZWEyNWJhYmRiYzBiY2JiZTE0NjFjNTg3IGxlZ2FjeS10cnVuaworNDY5NSBmZWZhZTM3YzA1M2NmZDNiY2VmM2Q5MzlhOGYzZmQ3NTZiNzhhOGI4IGxlZ2FjeS10cnVuaworNDY5NiBkM2I1YmUwYzg3MmYzM2IxZWU5MTA4NjM0NGFkMmM3MGM2MjAyMWFiIGxlZ2FjeS10cnVuaworNDY5NyAyODNhOGViMmUzMTdjYjdkN2IxMTVhYzhiMDRhMmZmZTlmNjM0YmVmIGxlZ2FjeS10cnVuaworNDY5OCA3MmUwNWM2MWMyZmU1OTMzNzdlYTczY2I4ZWI0YjVjODdiMjA2MjU2IGxlZ2FjeS10cnVuaworNDY5OSA3ZmE0OGFiNGJlMGY0YmMzZjUxM2E1MDg0YzE5YjZmZjNhMDJmNjAwIGxlZ2FjeS10cnVuaworNDcwMCAxYWIzNWI2ZjYzOGEyNjZiNzE3Njc3NWY0NDA4Y2QzZTlkYjZhYmM1IGxlZ2FjeS10cnVuaworNDcwMSA4YWQxMzYzMjg3YWE4YmM5ODM1ZDJiNDUxMjk5NTY2ZjQ1MmIxM2MzIGxlZ2FjeS10cnVuaworNDcwMiA0MzhmNTNlN2NmZDE0ZTk1ZWE3MmQ4OWQwYzdiYzQ5ZjVhNTljMjA4IGxlZ2FjeS10cnVuaworNDcwMyBhNzZhNzlmODk2Y2Y1ZmUyMTEzYmI5ZjY2YWM0ZGQ2MDIyZDUzZDcxIGxlZ2FjeS10cnVuaworNDcwNCAzYmVmMWFmZjg3MWJjMzQ5MjA3MDg1OTc0NTE1YTM1NmQxZDU3YzA1IGxlZ2FjeS10cnVuaworNDcwNSBlMGEzMjQyZDVhZTc5ZDE2MjBhMjI2MjQyYThiM2NhYTEzOTRlYjkzIGxlZ2FjeS10cnVuaworNDcwNiBlOWQxMWY5YjgyZTJiNTgxYTk2YjczMjVlMjNjZmQwNzdhMzg5NDkzIGxlZ2FjeS10cnVuaworNDcwNyBjMjNkMDkyMjE1ZDJjM2U1ZjgwMzIyMjIyNWRmNzFhNmMzYTc2Njc0IGxlZ2FjeS10cnVuaworNDcwOCA2N2U4ZWY2OThhNDJmZjI3MjBhZjc4MTUwZWNkOTdkMGMzMzQ4ZDIwIGxlZ2FjeS10cnVuaworNDcwOSAzODJlZGVmMmQ2ZDcwZDM3YzM0Mjg5ZThiNzQxMTM4MjdmMjZiOGU4IGxlZ2FjeS10cnVuaworNDcxMCBkMDkxYjI0NmEzYTdhNWJiMmMxNDE1ZGZhMjEzY2YxOWZlNjRmNjViIGxlZ2FjeS10cnVuaworNDcxMSBlZTRjOTU0Y2Q1ZGY1MmU5YzQwNzM5N2Q0ZGJjZDFjYTEwNDI0NDM1IGxlZ2FjeS10cnVuaworNDcxMiBiMWE2YTgxYWYxY2ZmNDdkMzlhNTA0OGExOGNhOTgxNTU4ZjU3Mjc0IGxlZ2FjeS10cnVuaworNDcxMyA4M2QwNjQwNGY2ZTExNDQyY2QzMTBlNjljYWJhZmU3YTdmMjYwYWJhIGxlZ2FjeS10cnVuaworNDcxNCBhODFiNmRiNmQzM2M5NGU4ZDA5NDg2OWEyMTExYjg3MDg5OGI3MjAwIGxlZ2FjeS10cnVuaworNDcxNSA2NDVlOTYzNDNmODlmZWY4ZGI5OGY1M2Q2YTg4ZjM3NGZmMGQ1YzdjIGxlZ2FjeS10cnVuaworNDcxNiAwM2JkNzk0MzJmMDY5YzYzMmFlNWFlODQyMWY3MjRjMTNlZjcxZGEwIGxlZ2FjeS10cnVuaworNDcxNyA3ODk1YTk3MzEzZTVmNGNmYWQyNGM1YTZiYTU2ZTg0NjQ1MzllMjBlIGxlZ2FjeS10cnVuaworNDcxOCA4NWFhMmU0ZDAxMjNjNTNjNWU2OGU4MzRhNDZmYzcwYjg1MTk1YWNhIGxlZ2FjeS10cnVuaworNDcxOSA0YmNjOTI5MTZmYWJiMmY2YzUxZTRlMTE1MThmNjY3ZWRhZjdlY2Y5IGxlZ2FjeS10cnVuaworNDcyMCAzYTgzYzNjZWY0YjJiNWM4NGE5MzY3ZmUyZmIwMGQzNmI5NDMxZWE1IGxlZ2FjeS10cnVuaworNDcyMSA3NDExYjZhMDY5MjBjZDZkNGJlMjEwNmRhZjE0ZmMyMzg1ZDNiYzgwIGxlZ2FjeS10cnVuaworNDcyMiBhYzZmNjliMWU5OTMwNzE2MjAzYTdhNTRhMTI2ZmI4ZTc4NjIwNWViIGxlZ2FjeS10cnVuaworNDcyMyBhOGM2ZGEzYmQzMDU2ZGQ1NmY5ZmUwMzhjY2MxNGIzOGQ1YWIxOWI0IGxlZ2FjeS10cnVuaworNDcyNCAzYTY1OGVlYzFmMDJlMTQ4NWU2ODMzZDZmMGViZDFjOGI3ZGFhNmUxIGxlZ2FjeS10cnVuaworNDcyNSA4YTEyNDRlN2NiM2JkMmE0ODNjZjNmNjlhNTBmMGVjM2I4NDczMzIzIGxlZ2FjeS10cnVuaworNDcyNiA1OGFhN2YzYjE2OTJiZjU3OThjZWExNjZkZTMyMDE5ZGFmOGMzYmFjIGxlZ2FjeS10cnVuaworNDcyNyAwNzY1ZDBiZDg4ZDZkYTVhZmYwNDE4NjcyNDI0MGYzMzY0ODg0NDUyIGxlZ2FjeS10cnVuaworNDcyOCA5MDg4MGJkMDkyMjFkZWNkM2FiYzhmZjUzZTdjZmZmNjM5ODcyZjg4IGxlZ2FjeS10cnVuaworNDcyOSBlNWI5ZjY0NDA1M2U5ZTBjNGNkMWJkZDkxMDM5ZWU5Njk5NzE5NDE5IGxlZ2FjeS10cnVuaworNDczMCA2NmQ2ZDEzZGY0ZjhhOTgyMDRlYzRiYTQzYmRiNGIzMzczMmVlNzU3IGxlZ2FjeS10cnVuaworNDczMSBkZjdlMjZiNWM5MTg5YmE0M2EwYTBkZjQyZDgyM2I0YTkwZWQ5YmY5IGxlZ2FjeS10cnVuaworNDczMiA2NTY0NDc2NjE1OGFlOGU0Y2E5NzMyYTU3MzI2OTZmNTNiNWI2ZjJhIGxlZ2FjeS10cnVuaworNDczMyA2MTg3MDFjZGY2MDAwMTA2MDJkOWRiYTY5NDI2N2EzZDI1YmE1NmYyIGxlZ2FjeS10cnVuaworNDczNCA2NTBjYjY3ZDc2NTk4NDJkZWU4ZGNhOTliYzU1NWZmYTk1NzI1ZWJhIGxlZ2FjeS10cnVuaworNDczNSBlZWFhZjg3NWY3YjY4MTM5NzNlZTdkYzBmMWRmNzUzNjNmMmQ4NmIyIGxlZ2FjeS10cnVuaworNDczNiBiMDM0YjRlYTJiMzk5MDI2ZWJjZWI1NGRiOTkyYmIxZGYwOGFhMGNjIGxlZ2FjeS10cnVuaworNDczNyA3ODU5ZDNhYWIxYjQwNTE5ZDg5MTNhYjIyMjc1MmYxZDU0ZTZjMmRkIGxlZ2FjeS10cnVuaworNDczOCA3MWMxMWE2ZTRiYzAwZjJiNzljMjE5YTEwNmIyMTQ4MDU0NzE4MDQ4IGxlZ2FjeS10cnVuaworNDczOSA1ZTZjMGNkYWE3YzFiYmNjZGMyZDZkNjEwMmU5MGYyODkxYzBmMmJmIGxlZ2FjeS10cnVuaworNDc0MCA1NTQ2ZjRhNmUzYzM0ZmQyZTMxOTdmNTdiY2YyMmUyNjAyODEyNGExIGxlZ2FjeS10cnVuaworNDc0MSA1NDBmODQ0NGVmOGE4NzMwMDkzNDE3Y2RlYWYzYzJhZjg3OTU2ZDQ4IGxlZ2FjeS10cnVuaworNDc0MiBiNGNhYWMxNDI4ZDBkYTdlZjA5OTkwMjBhNzAwZWVkZTI5ZTVjZmVmIGxlZ2FjeS10cnVuaworNDc0MyAzMTk1ZGI2Njg5ZmQ2MTNlZWFiMTZiNjhiNmVkMDgxZDE4NDY4ZDFhIGxlZ2FjeS10cnVuaworNDc0NCBmNWE2ZTZlZTUyOWMwN2JhNzVjNTY4NGQwNTVjMzZmNWNmZGRiZDk4IGxlZ2FjeS10cnVuaworNDc0NSBhYzhhMjI1YjA1MWI3NTc3MjIxN2I0ZjBlNDkzMWUwMzU4NmY3YjJhIGxlZ2FjeS10cnVuaworNDc0NiAwMWE5NTQxMjQ1NzcyNGZiZDIxYWE3MDE2ODY5OGYwMTYzNjEyMTg1IGxlZ2FjeS10cnVuaworNDc0NyBhMjQxNDYyNDE5OTEzYjc4NTFhMDdlYTU3OGIxM2E5Zjg1ZGEzYmIyIGxlZ2FjeS10cnVuaworNDc0OCA2MjYzZTJmZDkzOTg4ODEzOTg4MTU0ZjNiYjE0ZmU3YmY4ZjJhYTMxIGxlZ2FjeS10cnVuaworNDc0OSAzZDZjOWE0N2VhNDQ1YTUzZmIyMzcxYjZkYjAwZjk1ZDJmOTMxNWY2IGxlZ2FjeS10cnVuaworNDc1MCBmMTdkNmU2YjQwZGFiMTRjNWFjYjE1MjkzZjY5ODI1NDc0YWE4ZjVhIGxlZ2FjeS10cnVuaworNDc1MSA5NzE3ZjZhOGY1ZmFmZTllYmNmMmY2OGRlNzQyNzhmZjJlMDg2ZTE5IGxlZ2FjeS10cnVuaworNDc1MiBmZThkYjc4ZjMxMWM5NmNlZDY4Y2Q4Nzk1M2Y4NmNlMzRlNTUwYmI5IGxlZ2FjeS10cnVuaworNDc1MyA5OTAwOTllZDc4MTA1MWQ1NWU0YzAyZjEzMzFhZjRhMDJjNzY1ZTQ3IGxlZ2FjeS10cnVuaworNDc1NCBkMjA0OWExZDNjYzVjZjFjZDJhZTY1OGMxZGU0MzkyYTJlMzM3ZGFjIGxlZ2FjeS10cnVuaworNDc1NSBhZGFiNjZmYWMzMGU5N2VjNzg2NmZmZTAzZTM3MDMzNThlZmVhZjZhIGxlZ2FjeS10cnVuaworNDc1NiA2YTA0MjU2ZWEwODc3YzA3NGQyYTkzODhjNDYzZmYzYzkyZWYyOGRhIGxlZ2FjeS10cnVuaworNDc1NyA1MDVmYzQ3OGZmMDg1MTRlNTIzZGE2MThkNGY1NTNlMTk3NjgxZGIxIGxlZ2FjeS10cnVuaworNDc1OCAxNzBiOTk4NjJkMDk1ZDk2Mzg1OTMxYTFiYjNkZmMxNDU5Yjg0ZmVkIGxlZ2FjeS10cnVuaworNDc1OSA2NWE2OGM1MWU5ZjJhNzBmZjM2ZmZjZDA5NmUzZDkwM2FlY2FmZDM3IGxlZ2FjeS10cnVuaworNDc2MCAwOGI0NTdkNmI1MTZlZGY0NTZmZjc2MzYwN2EyMDQ4NWEwYTdlNGNkIGxlZ2FjeS10cnVuaworNDc2MSA1YWVlMmM1ZDhkZmZjYWVhM2U4NmE3NzhkMDdiZmFhNGE2YmM2OWFjIGxlZ2FjeS10cnVuaworNDc2MiAxNGIxMjZkMGI1YmUzNGJjOTdiMTJkNjIyOTgwOWVkZWZhZGYwMzc0IGxlZ2FjeS10cnVuaworNDc2MyA1NmNhNjdkZGVjODU4YjU2ZDBmMDAxN2ZmMmJjMWY2YTQ4MTk4N2Q3IGxlZ2FjeS10cnVuaworNDc2NCAwNzkxM2ZiOGY5MmYwNDk5MzkwYjdhYjEyOTM3ZDIwNWQ1MzU5Yzg0IGxlZ2FjeS10cnVuaworNDc2NSBmYzZlOTYyMjEwODhiMDgyMzU3YWQwOGI4NzgyYzQ2NzdjMDZiOWUyIGxlZ2FjeS10cnVuaworNDc2NiA0MGFlYzQ4Y2QxZTIxNDdkOGY5YWYwNmIxY2IwZGQwMGZhY2U0M2IzIGxlZ2FjeS10cnVuaworNDc2NyBmZjcyYTVmOWE0ZWUxMjRhYTBkODhhOTEzMGJkYjg2NTQ5NmU4MWZjIGxlZ2FjeS10cnVuaworNDc2OCA1MTVlMWQwMzM5NGFkODY2OWVjNGQ5OTgzODRkZjA3OTI2MDk0NzczIGxlZ2FjeS10cnVuaworNDc2OSAxNDI1NjE3NTE0YWNjZjhhYTMwYzE1YzU1MzA1MDZmZTg4MjFmZTBkIGxlZ2FjeS10cnVuaworNDc3MCBlZDgyMWE5OWJhMzkyMzk1MDdjMDBjYTVkN2RlNzM1ODhjMGM1MTMwIGxlZ2FjeS10cnVuaworNDc3MSAxY2UwN2Y2NDg2MmU5ZjVmODBjNjU2ZTY4ZjAxNTdjNjNlODZlZDk1IGxlZ2FjeS10cnVuaworNDc3MiA5OWU3YWMyMmJkMmUyZDUxODhjMGRkYzIyODIwZDYxN2FhYzZmMDgyIGxlZ2FjeS10cnVuaworNDc3MyAxZTcyMDcxMjgxNjc4OGM2Y2VkOGU5NThmOTc3NzY0ZTQ1YThhM2JhIGxlZ2FjeS10cnVuaworNDc3NCA1ZjcwNThkODE2Y2Y5MWYyNTMzNDBkNGRjZDBiZjZiOWRmNmM3ZjNkIGxlZ2FjeS10cnVuaworNDc3NSAzMTYxZTdjZjIwNTRmNzM2ZjhjMjhjMTZjZDNiOWFjMWRmZDdkOWI4IGxlZ2FjeS10cnVuaworNDc3NiBkM2UyZjk4OGYxYWYwZTE0ODA1YzU2MTVmYjM4YzQ0MDE1NzllZDBiIGxlZ2FjeS10cnVuaworNDc3NyAzZGZlZjY3ZTBkZWQ5MGU3ZDExMjhhM2ZjMmEwMjQyMGE1YWEyZjMwIGxlZ2FjeS10cnVuaworNDc3OCBmYWFlY2U3Y2NkNmU3MWIxNWQ0ODAzNzIwMjUyMzhkYjYwYTRhY2MxIGxlZ2FjeS10cnVuaworNDc3OSA3YmRlNGIxZGY0OTQwOTdmN2FhMTk5NjU3NGI2M2VmZjg4N2ViZWQwIGxlZ2FjeS10cnVuaworNDc4MCBlOGQyMDc2NThhMDQ1MmIxZDU5Mjc3M2QzZWU4NGI1YzA4YWRiNmY5IGxlZ2FjeS10cnVuaworNDc4MSA0M2Y5ZTc1NDljNzBlNmU4MzdkMGUwYTY2NmFkMjQwNmY0ZTM2YjNiIGxlZ2FjeS10cnVuaworNDc4MiAzZWRlYzgyMTFhMzZhZDU3MTkzZTlkODgxOWY3NTkwMDBmMmUyOWZmIGxlZ2FjeS10cnVuaworNDc4MyAxYjI2MmQxOTBhNGE0ODEwOTgzY2MzZDY2NWI1NTk0NDkzMzk5YzE5IGxlZ2FjeS10cnVuaworNDc4NCA4NDU2MGY0YjI5ZWYwOWEyMDljZGNjNzg4ZDRmOTY1ZjNlYWUzNzIxIGxlZ2FjeS10cnVuaworNDc4NSAyNDJkZDVlZDNiMDg1ZWVlMmY0MjY3MmJhNjUwNDk1MjIyNmEyOTllIGxlZ2FjeS10cnVuaworNDc4NiAzMmU3ZDI2OTZkNzkxYzY5ZWM5OWFiMTEyNTYxN2U4ZjRjNzhhZTI2IGxlZ2FjeS10cnVuaworNDc4NyA2NDY4ZmQwMjUxZDI5NjhlNjMxMTg2ZmE5NDZhNTA0YTYwYWZkMzZhIGxlZ2FjeS10cnVuaworNDc4OCBkOGI0YzdkYjc3YWU2YmZmOGIyNWVhMjc5ODNhYTI1MDQ2OTU1MjJkIGxlZ2FjeS10cnVuaworNDc4OSBlMTFlNmIzNTg1MzEzYWE5MTlkN2E0ZTJmODEzNDU3OTdmZmY2MzM1IGxlZ2FjeS10cnVuaworNDc5MCBiMjI0MTE3N2JjY2M2Mjc3MzMyZThhNWU5NTdmOGNiODc2YmYzNDAzIGphcgorNDc4OSA5ZTgyZGFmNzYwNWJhZDc5NzZhOWFiYzk5N2NiNWUwYWJlNDM0MDc4IGxlZ2FjeS10cnVuaworNDc5MiA3MWU2MDg3MWM2ODFjZTkxNDE5NzRlZmFjM2UwYjMzYzlmZTMyODhhIGxlZ2FjeS10cnVuaworNDc5MyA0YzJmMTQ1MjEyNWQ1OWQwNzVjNmZlN2RhZjkwMTRjYmRmMTc4ZjM2IGxlZ2FjeS10cnVuaworNDc5NCA0MTI3ODkzYTg3YWQwNWEwMjJlZTcwYjU4YWQ4MWM2MzdmYmY5ZTY1IGxlZ2FjeS10cnVuaworNDc5NSAyMWYwZDVmMThjZGFlNjEwOGY1ZmM1ZmQyNTQ1MTk4MmQ2MDE5ZjlmIGxlZ2FjeS10cnVuaworNDc5NiA2M2ZhMzg3YzAyZmViY2IwOGIwNTRhMGVlMjAzM2ViMDNhODc3MDY1IGxlZ2FjeS10cnVuaworNDc5NyA2NzBlNTBhZTM4OWQ1NGNjMzIxMDFjZmI0ZDVhZDY4ZjYwOGYwNTU2IGxlZ2FjeS10cnVuaworNDc5OCA0YjYxN2ZlZTQyN2QzNjM4Yzg3YzBkNjJkOGM5ZjUzM2IzOGI5Yjc3IGxlZ2FjeS10cnVuaworNDc5OSBlZDBhYTRhNWQxMDZiOWMyYjdiMmVkM2Q4NTBlNDg0YmQ3MDY4NDYzIGphcgorNDgwMCAyNzlkNTFhMThhZTRiNGU4ZGNmMDA3NzYwYTk3NzhkOGJmZWY4OGIzIGxlZ2FjeS10cnVuaworNDgwMSA5NTUyZWRiNGVhYmZhYzM0MWE2ZDNlNGYxMDEzZmE5NDhjMDE3NzBmIGxlZ2FjeS10cnVuaworNDgwMiBmMDlkMzI1MmEzOGIyMTNlZWVkMmM3NzZhMThiZjI3YTIyNjM4M2Y4IGxlZ2FjeS10cnVuaworNDgwMyBkMDU2ODU5OTM0NzZkNGNiNzBmNWIzNGFkZGYxMTE4MDEwZjM5ZjA2IGxlZ2FjeS10cnVuaworNDgwNCBlZDQ4NjQ2MWRlZjY3NmYwNjE5OWFjYWZiYWRiZmNjMWRlYTFhZTczIGxlZ2FjeS10cnVuaworNDgwNSBkNjVjNDg1ZTBhZDgyMzYwMDM3ZjhhYjU2YzQzODk5MWU1ZGRhZDg2IGxlZ2FjeS10cnVuaworNDgwNiBhMjA1NDkzMzc3NWIwMDE0ZDYwNWZkZTNmN2YxNGE4NWVlMzgxM2ZlIGxlZ2FjeS10cnVuaworNDgwNyA4NWZhMDJiODVkN2QxMzBhMTRhOTFkNmJjMmU1ZjVjNGU1NjAxZTAwIGxlZ2FjeS10cnVuaworNDgwOCAyNmIxYjE1ZmM4ZWMzNzU2YTU2M2U0ZTcxZTdiYmM3YTgxZWE0ZmJjIGxlZ2FjeS10cnVuaworNDgwOSA4YTg3NjUzNDNjYzBkNDU1YTA2MTg4MmU1N2NhOGExNDJkOWZiMjJjIGxlZ2FjeS10cnVuaworNDgxMCBmYmFmNTQxNjk3MTE3M2IzNjYwNmRlNGU1YzU5YTc1YmY1NjkwMmVlIGxlZ2FjeS10cnVuaworNDgxMSBkZjViNzI4YjhlYjYyZWU3OTg2MDdiYTM4NjUwYTYxM2Q4Y2VhNTgxIGxlZ2FjeS10cnVuaworNDgxMiA2YTk0MTE5ODQ0ZWIzODIwZTQ0ZmMzMzY5NDA5ZmNjOWJhYzczOTk3IGxlZ2FjeS10cnVuaworNDgxMyAxNzQwZmQ3NmZjMzMyZmJjNDc5NWUxZmM4M2ZkZGQwNzNkNTQ5MTZlIGxlZ2FjeS10cnVuaworNDgxNCA0YzQzY2JkY2Q1MjQzZDk5Y2MyNTExZTI5NGZiOWRmY2JjMjU1ZDAzIGxlZ2FjeS10cnVuaworNDgxNSA5MTZhOGZmMzZhODU0NzBiZmE2YTBjN2EwMTU2M2MwNjBmOWU2NDcyIGxlZ2FjeS10cnVuaworNDgxNiA3ZmQ3NDEyZTcxODg0OGUwZjMzMzNjMmI0NmQ2MTgyNDliOTdlMDZlIGxlZ2FjeS10cnVuaworNDgxNyBlODBhY2ZhMTNhYzAwMDQ0OTdkNmIzMWU0YTVkYTU4MjBkMmQ4NmMxIGxlZ2FjeS10cnVuaworNDgxOCA3NDdmMGI3Y2I3YmU0MzRjYjk2NWVjZDE0ZjUyYzRmOTc1ZjM2MTM0IGxlZ2FjeS10cnVuaworNDgxOSAyMWEyM2NmYzQ4NDMxYWU5MWNhMDEzZTAwZWExMWMwMTIzMzUwM2JlIGxlZ2FjeS10cnVuaworNDgyMCA5Njc0N2M3ODdhODMzYzMxOTBkM2QzYzIwMTk0YWIzMmJhOGVlYjFiIGxlZ2FjeS10cnVuaworNDgyMSA4Y2Y2M2MzMGZmYzg3N2VjMGFkOTQ2MDBjYzE0MjE5MjU2NjNhODYxIGxlZ2FjeS10cnVuaworNDgyMiA5NGJmMmYwNWRhMzE5ZTZjZTM1ZTMzZjdhYTk3YTM3Y2YyODRiM2IyIGxlZ2FjeS10cnVuaworNDgyMyA5MTVmYWJlYzY0YTMwYWQ3MzNiMTI5MDIzYTJmMDcyN2Q2M2NmMjlmIGxlZ2FjeS10cnVuaworNDgyNCA2NjNhYTA1OWUyOWZlYzY2ZjAzMzgxOThmYzMyNmQ5YmIxMDMyMGU4IGxlZ2FjeS10cnVuaworNDgyNSBiYTFiNzZjMDkwNDE0YTNlYzgwNjhiNTcxNWQ5NDZlYTEzMmU2Y2MzIGxlZ2FjeS10cnVuaworNDgyNiBlMzg2MDM1Zjg5N2RmZDkxYWM2MzU5NjI2NTRjZGYzY2I4NjE2NTQ2IGxlZ2FjeS10cnVuaworNDgyNyAwNGY2MWE1YTc2NTQwOWM0ZDUwYWY3NDIwYjkzNTc0YWIwYzcyYmNmIGxlZ2FjeS10cnVuaworNDgyOCAwYzgzNWM4MDQzMjI0Y2Y1OTA1NTMyNzQ3MTdlZTRmMjgxNzAwYzNiIGxlZ2FjeS10cnVuaworNDgyOSA1ODJiMDBmYmFiMTYxNDUyM2Y4ZDRmNDMyMzI3MDYwYmVmNDM1Mjk5IGxlZ2FjeS10cnVuaworNDgzMCAzOTc0NzhiY2EwYzRkYWMxZGMwM2UwMmQ0ZDNiNDY5ZTIwZTdjOGU5IGxlZ2FjeS10cnVuaworNDgzMSA1MWM4ODI0OTg1ZjhhNTA4NTBhZDBlZWI2ZWFkZTFhNzNiZDk2NzVkIGxlZ2FjeS10cnVuaworNDgzMiBjMzFlYWVkNzc5OGJiYTQxZjMxNGQzOGU2OTNhNzRmOWU2OGEzNWY0IGxlZ2FjeS10cnVuaworNDgzMyBkYWIzNGNiZjhkN2ZhM2Y0MmE5OTc5Zjg3ZTkyMDJiN2U4YmM1YmZlIGxlZ2FjeS10cnVuaworNDgzNCA0ZTg3ZjNhM2YzM2E4N2FiZmIwOGQ4ZDczYWU5N2Y4MDI1N2E2NDFkIGxlZ2FjeS10cnVuaworNDgzNSAxYTIwZDUwNTg3NDQ0OGJjNzAxYWJlYTE2MTU5MmNkNTQyOGQ4YjNmIGxlZ2FjeS10cnVuaworNDgzNiBjOGE4MzIxOGJhNjE4NzBhNmM3MTc4MDFmYjdlYTViNjRiZmVmZWMwIGxlZ2FjeS10cnVuaworNDgzNyBmZjNmYzMwZWQ3NjA2OWExYjNkZGVlZjBmMWY0ZDNiMzFmMDdlNTc2IGxlZ2FjeS10cnVuaworNDgzOCA2NDUwZDg4MjhkMmI5ODhkNDE0MDIwMjcxNmQ3ZTkxNTRkYmRjNGU0IGxlZ2FjeS10cnVuaworNDgzOSA0Y2M4MTM3Y2NiNTZjZmZmMzkyZjY5YzZiZDU4MzYyM2NhZTczNmNiIGxlZ2FjeS10cnVuaworNDg0MCBmOGFiOTI1ZWZkYTg4YWUwZGEwYTBlM2U1ZTcxNzgwYWM5ZDQwM2EzIGxlZ2FjeS10cnVuaworNDg0MSBjNjUzM2I4OTYyODg4N2EzMTFlOWNmMzhiOWIxZDhlZDhkOTZkMGRlIGxlZ2FjeS10cnVuaworNDg0MiBjMDlkYWJmNzA5OTZmYjlhOWY3ODY2ZjI3YjEzODUzNTY4OTkyMjI3IGxlZ2FjeS10cnVuaworNDg0MyA1MzEzYWM2ZjM0ZmRjYjAzZTY3M2MxNzYxNDBmODA3N2MxZGQ4MGI1IGxlZ2FjeS10cnVuaworNDg0NCBmOTc5ZTViZDZhMjIzMGU3OGM1MjNiZjBmOWU5OGVhMGQwOTFlYTBhIGxlZ2FjeS10cnVuaworNDg0NSA0OWJmZWYxN2IxMmI2NWZhNzZiZmIwOWNmMzRhZGE1YTVhNjhiOGNiIGxlZ2FjeS10cnVuaworNDg0NiBkZGIxMzg2MmZiYjJiZWE3NDdhNjgxN2I5YThkZGVjYTNkZDFhNWQwIGxlZ2FjeS10cnVuaworNDg0NyBlY2JiYWE1ODRmM2MxNjczOThlMDZiNDcxMjVmMjNkMzFjMzYzMDg5IGxlZ2FjeS10cnVuaworNDg0OCA5ZGM4NzVhZDA1MGM4OTk0MGUzYTU5M2FjZDY4Mjg3ZTRjNzA5MGI0IGxlZ2FjeS10cnVuaworNDg0OSBiMTU2YmY0YmU2MmYxYjZhOWM1NzEzNTJhMmQ2MTllZDc2Y2U0MmZhIGxlZ2FjeS10cnVuaworNDg1MCBmYThjZGQzY2M1NDU0MDU1MTk0M2MwMzIwOWQ1YmY0ZmRlYWE1NGRkIGxlZ2FjeS10cnVuaworNDg1MSA0MmI1Njg5YTc0MDk1ZGQ4MDkwMjY1Y2FlYjYwZTAyMzZlOGQ3YTE4IGxlZ2FjeS10cnVuaworNDg1MiAyOWNhNDVlYjNhYjc1MjNiYTc1NTc5OTk3NzQzYTk3MDhlN2IyNjBiIGxlZ2FjeS10cnVuaworNDg1MyAwNzM2YTdlYzJmMjg5ZTVkZWU5MWQwY2U4YTJmN2Y5NWJiMzkyNjllIGxlZ2FjeS10cnVuaworNDg1NCBjYWJiN2M1NzMyZWYxYTM4ZDlmNDE0NmFjNTgyNjE4MjQwYzczZGQ2IGxlZ2FjeS10cnVuaworNDg1NSA0MzhhOGMyNjVlYjlmNTRjODY3Y2VmZjdhY2QyYjkyYmM5NGIxM2M3IGxlZ2FjeS10cnVuaworNDg1NiBkMzFmNjk0YzExYTg5YjcxMTE3MDYyOTc2MzIxNjhkZmFmMzE4MDY2IGxlZ2FjeS10cnVuaworNDg1NyAxMzI1YjNlOGUzZDNjZTFmNjVmMDc2ODAyYTM4NGVhZWNhNDliZDE3IGxlZ2FjeS10cnVuaworNDg1OCBjYWI2OTk0NTM3NzVjMTkwOWJiYWM4NjBhMTkyODI2M2UwODJlODg5IGxlZ2FjeS10cnVuaworNDg1OSA3MmM3MTVjMDA0Yzg5ODYxZDUwNGJlN2VmNGNiNTBiNDY2YzQ3MjkzIGxlZ2FjeS10cnVuaworNDg2MCA3MjQ2Yjk5ZDI5NjZhMmMyYjI1NmVlNmMxZjAzNDVkYWZlYWEzMDkwIGxlZ2FjeS10cnVuaworNDg2MSAwYjYyYjUzZDQzZjg3ODZiNjU0MWEzYTgzYTc0MzJmM2U3OTVhNzRkIGxlZ2FjeS10cnVuaworNDg2MiBlMTQ5NzVjOTEwZjBjYTFhN2Q2NDgyZGJhMGEyMzA2OWZjZTc3MGRhIGxlZ2FjeS10cnVuaworNDg2MyA5YTk0MjkyYWE0YzE1YmJkZDA1OWNlMjY0MjY4NGQ5MmVkZDI2NjgyIGxlZ2FjeS10cnVuaworNDg2NCA3N2ViNjM3MTZiNGY5OGQzYTU0NjBjMGJhOGZjNTFiMmM2ZDg3MGRmIGxlZ2FjeS10cnVuaworNDg2NSA0ZmMwMzNjYjU1NDQ1YmE2ZTFhYmIyNDZhODZiNjc3Yzc5NWU5MjVmIGxlZ2FjeS10cnVuaworNDg2NiA0MDNhNTYzMTIxNGIwMjQ1MTAyYzUzMGJkZGRkODVjZDRiMmM4OTM2IGxlZ2FjeS10cnVuaworNDg2NyBkZDFhYjIwZjgyMjNiMzk4NjQzNGRiNWM1OGI2MWEwNzc2YWZiZTdlIGxlZ2FjeS10cnVuaworNDg2OCA3NWFlMTA0ZjdlNmM1MWVhMmYwNDU2YzcyZmVhMjQ5MWY0OTczY2E4IGxlZ2FjeS10cnVuaworNDg2OSA4MTBiYzE1ZTE4Zjk4M2JlZjIzNWJlMTZhM2IzNWY2ZjEyMDU3YTYxIGxlZ2FjeS10cnVuaworNDg3MCA2MTQyNTE4MzZjZWIyMjczMDk2MjY1OTk1YjgyYjVmYTMzZmYyNjAzIGxlZ2FjeS10cnVuaworNDg3MSBlZThlOTFhMTc3NDVhYmI3Y2ZhMTQyM2M3NWYyODY2YzdjOTEyOTllIGxlZ2FjeS10cnVuaworNDg3MiA3NWFhNTI0NmIyZjZmM2QxZDJmYjA3NWRkMTIzOTlhZTg0MzI2NzM4IGxlZ2FjeS10cnVuaworNDg3MyA5N2U1NzA1MGUyNzYwY2ZhMjcyZjUyZGMwYjJkMDg2ZWI1ODhkZDk4IGxlZ2FjeS10cnVuaworNDg3NCAyMmIxYWIwZTY0NzM1ZGI3Zjg4ODM0YTFlZDRiOTk0YWRjZWQwNmNlIGxlZ2FjeS10cnVuaworNDg3NSA0YTQ2MmFhY2MxZTk5MTQ1YjgwM2NiZjhiMzBhODU1NjU3MWY3MmIyIGxlZ2FjeS10cnVuaworNDg3NiA2YmVlZjE3ODcxZjk4MmQzY2ZiNTRjMGJiMzlkN2ExZTM3YjE1ZWFlIGxlZ2FjeS10cnVuaworNDg3NyA2ZWRhNjQyZjE5ZDAzNzgwYmYwMjkwNzJmYTdlOTE4Yjg1MjI5NDRjIGxlZ2FjeS10cnVuaworNDg3OCBmNGY3MWViZWE1M2YxNDU0MjNlMTBhMzVmZmI0YTQzOTZhMDE4M2EwIGxlZ2FjeS10cnVuaworNDg3OSA3M2VlZmY0ZDQzZjg0YWQ3NmQyYmIyZjBlMGM0ZmI5NDA3MGNiYjE5IGxlZ2FjeS10cnVuaworNDg4MCAwMGY0ZTQwMDU3NWE5NzM0MGU2MDkxMjE2NzY4ZDFkYmE1NGU1ZmQyIGxlZ2FjeS10cnVuaworNDg4MSBlY2NmNDkzN2YxZGM5YWQzNWFlZmVlNTBkNDdmM2E0YmEyZmRmNmU5IGxlZ2FjeS10cnVuaworNDg4MiA5YmYxODk5NmVlZDhjOWRmNmIzZjRlYWQwMGQ1YjQyZGVkNDk5YTE5IGxlZ2FjeS10cnVuaworNDg4MyBiZDNhZDY2MzRlNzY0ODIwNjFmOWZkNGZjZTU5MTE0NTE4ZjliNzJiIGxlZ2FjeS10cnVuaworNDg4NCA3OTI0Yjc4MTlkOGY5NmM3MmExOGFlOGY5OTE3YTU3ZWM2NWJjZDE0IGxlZ2FjeS10cnVuaworNDg4NSBlZmIwNjg1YTZjOTFjYmU2NTg5YTkzNjRjMGM5YWYxNTZlMjYyY2UyIGxlZ2FjeS10cnVuaworNDg4NiBkMzlhYWI2YzEzMGQ0NWRiODk0ODg4NWYzZDZmMjljNjBkMWU3MDNlIGxlZ2FjeS10cnVuaworNDg4NyBjYmI0MDcyZDUzOGJlN2YwNDJhZWY4NWFmZTAwNmJlYjkyYWJmNjY5IGxlZ2FjeS10cnVuaworNDg4OCA0NDViZWE4Y2VhYjFkMDcwODNkM2U0YTY4ZDhiM2NkMTVmM2E2YzhkIGxlZ2FjeS10cnVuaworNDg4OSA2Y2JkMjgzMGI1YTIzOGNmNTgyODQwODU3NjY2NDYyMWFiZmJkYjRlIGxlZ2FjeS10cnVuaworNDg5MCA1YmMzNDFjNDA3MWNkMDkzOTc2ZGE4MDQ3ZWIyOGMxNDMzMGNmN2I1IGxlZ2FjeS10cnVuaworNDg5MSAxZThhZWJhYjg3NGFlMTI1ZTdmZDQ1Yjg2ZDBkNjUzN2E3MGEwZTAwIGxlZ2FjeS10cnVuaworNDg5MiBmYTk4ZGRhMDc4NzdmMDg4ZmIxZWQ3NTY0YmZhYzI2MGViZTkwYTczIGxlZ2FjeS10cnVuaworNDg5MyA2MmViYmNmZWE4MjcyYjg0ZDYzNTk4ZDc2Zjc2NWNkZjc4YjdiZTFkIGxlZ2FjeS10cnVuaworNDg5NCAxZjU5ZjJhMTMzMTI5NmVkZjAxMjEwNTk3MDE0MjYxOWVjMzM2MmZmIGxlZ2FjeS10cnVuaworNDg5NSBjMWQyNzA0M2MyMmY0NWI2NDE4ZjY0N2RhY2I1YTY0MDI1NzgzMTJmIGxlZ2FjeS10cnVuaworNDg5NiBkNTc3ZDc0OTkxOGQxODNkZDYzMmQxNzM3MDllNjAzMGMyMjk5Mzg1IGxlZ2FjeS10cnVuaworNDg5NyAyZjg5ZWMxYTljMzhjN2Q3MjE5MmM3NGYwNTAwODljODVhMjA4YTMzIGxlZ2FjeS10cnVuaworNDg5OCBhNWU5NWY5ZGU5MDAwZTU3ODgyY2JiM2FiODdjODZjZDdlN2QwMjE5IGxlZ2FjeS10cnVuaworNDg5OSAyZGNmNzUzODM0N2E5ZDY4ZjJlOGM5NTk4YWRjYTcyNDMxNTlhYmRjIGxlZ2FjeS10cnVuaworNDkwMCA5OGMxZDg0MTAxYTUwODEzYjQ1YTFmMDFkMTAwNWUzNmI2YTQ3YzU3IGxlZ2FjeS10cnVuaworNDkwMSBmNjE3MTZhZDBiN2Y1MWYzMWMwMjNmMzRlNWFlNDJhODNkOTczMTI4IGxlZ2FjeS10cnVuaworNDkwMiA2ZjEyMTFiMmUwNzc5YjExMDYyYjliMmNjZTY5MGYyNDQ1MDc1M2ZlIGxlZ2FjeS10cnVuaworNDkwMyA3MzQ5OWE2NjdlNzg0ZWRhNzQ4MTM2ODYxZmQ0YjBmNzdhODEzZjE2IGxlZ2FjeS10cnVuaworNDkwNCAyYzY1NjVmMWI3Zjg2NDQ1OGRkNTNhMjlmYjE4OGJlZDI1YzBmZWFmIGxlZ2FjeS10cnVuaworNDkwNSA4ZWVlY2QyMzNkNTY5YmJhOWY4YzIzMDk3ZGRjMjU2OTdmMzI4ZWVjIGxlZ2FjeS10cnVuaworNDkwNiA5NGE2NDM2NjU1ZTAzZmI5NzUzODE0M2VhODZmZTdlYzcwNDQwNjdiIGxlZ2FjeS10cnVuaworNDkwNyA0ODBiMjUxYTA0NjgzNWIxY2I0NTg5MzFlNTFiNGFhMmQwZDY1N2JiIGxlZ2FjeS10cnVuaworNDkwOCA5ZWZkNDA4ZmM5ZjZiYjcyOTM2YmRhNmI2Y2NjNjQxMGU2Y2RhYzA1IGxlZ2FjeS10cnVuaworNDkwOSBjZGQzYTcyMWI0MGUzZThlOTU3NzUzOWQ2NDg4ZThjYmUzNjU1MjVjIGxlZ2FjeS10cnVuaworNDkxMCA4OTlkMjA4NzQ1NjZiOTg2ZDIxNmQxNGZlMzYwOTIxMTA0YzRiZjIzIGxlZ2FjeS10cnVuaworNDkxMSBiNDJhYjc3ZjIyMjYwMzE2NjNjMzEyOTBhNWFhZDM1YWJhYmU5Mzc0IGxlZ2FjeS10cnVuaworNDkxMiBiYzAzMjI1YTQ0OTNmNWRiYTZiM2Y2ZTZhNGZhOTFiMGRjY2Q2YWY3IGxlZ2FjeS10cnVuaworNDkxMyBlMWE3YmRmYWZlYzkzMjM4ODUyNzg4OWRiZjExY2NjZjllZmZhNjFiIGxlZ2FjeS10cnVuaworNDkxNCA2NWJjYjQxODJjMWEzMjA3OTc5ZWViYTI5ZjQwZjRlNDFlMWQ5YzcwIGxlZ2FjeS10cnVuaworNDkxNSBiYWM5NmQ1YzQ2M2Y0NTJmZmE3YTQ0ZjdhZDViZGYwMTNiMGRlYzJjIGxlZ2FjeS10cnVuaworNDkxNiAxYzI5ZjZiZGQ4OThmNmUyNGU3YmY1NTMzYzZiZjM0NTQ5ZWJiODhiIGxlZ2FjeS10cnVuaworNDkxNyBkOTQwNDViZDRhMDQxMmI5YTY5MDBhNDBkNzk2NmQ5NzJjNTJhNDg4IGxlZ2FjeS10cnVuaworNDkxOCBlOWU4NmFlNWY1YTRhODdmMWE0ZGRiMDYyNTgxNjA0MTM3ZDAyMWRkIGxlZ2FjeS10cnVuaworNDkxOSBlNzY0Yjc4YTcwNGY1MThmMWE4MzQyZmRhMWI4ZjJjNDM1YmZjYjIyIGxlZ2FjeS10cnVuaworNDkyMCBlNzI2ZjkwZDJhOWZmMjQ5NTlkYTExOWYyMjU4NTkyNTU1NTdkNmFmIGxlZ2FjeS10cnVuaworNDkyMSAxZjQxNDFhYWZlMzYxOTc2OWE3YmU0ZWFmMjUzZmM0ZGM2YTI2YzZkIGxlZ2FjeS10cnVuaworNDkyMyAzMjJmYzU5NmYxYzQzNzkxMzAwZTgwY2FmZGFhOWExNDU1NjE2YWM5IGxlZ2FjeS10cnVuaworNDkyNCA0ZjdjNjczZGE5MThiNTZhZDFiYTU1ZTZmNGZjZDg0M2YzZWEyNTdiIGxlZ2FjeS10cnVuaworNDkyNSAzZDY3MzRhYjZjZDQwMmRkMDIxZTZkNGEzZDg3OWVjMWYzN2U4M2I4IGxlZ2FjeS10cnVuaworNDkyNiA4ZTM4Y2QwYTNhMzE1ZmUxYmQ3YThlM2M5YzE2ZjUwMjBlMjcyODY0IGxlZ2FjeS10cnVuaworNDkyNyAwZTFmOWExNGZiZDQ5NWE5M2FiNWYzMTJlMjFiZTYwMDM2MzkyZTNmIGxlZ2FjeS10cnVuaworNDkyOCA1YmIzOWE0MmM3MjkxMjI3NGVmYTkxMWE4ZjJiYWIwYmNmY2NjMmFhIGxlZ2FjeS10cnVuaworNDkyOSBkZDI4NDVkMDZlYjM3YWUyOTQwOGZlOGJmZTA3ODA1ZDBiMmU2NmI1IGxlZ2FjeS10cnVuaworNDkzMCA1M2Y5MmE0NzNjNmYxMGE2ZjFjMDYwN2M2MWQ2NDI4MTBjZDJiNjk1IGxlZ2FjeS10cnVuaworNDkzMSBkZTRkYzE2NWJmYjZhMTE1Mjk5YzlhYTFjOWI5YjFlMjRkMTlmMjllIGxlZ2FjeS10cnVuaworNDkzMiAzMDIwNWQ2MzRhMTViNTI4MTI2YWViZGFjYWNmNTZhMzZlZjE2MmViIGxlZ2FjeS10cnVuaworNDkzMyA3MDg5ZDQ4NDM0MDcyZWNkZjQ3OWIwNmU5M2MyN2MwNTdjNzIxYTQ3IGxlZ2FjeS10cnVuaworNDkzNCAxMWI5MzdlYTAwMjY0YTViMWY5M2Q1MTdiNWE1ZDc4YmQyMzE1MTdjIGxlZ2FjeS10cnVuaworNDkzNSA2NDg0MmUyMDZiNzZjYjE1YTlhMDAzMjY5MDcxODAwZmY2NTY1Njg0IGxlZ2FjeS10cnVuaworNDkzNiBhMTdkYTEzMjJjNTZkNTEwYjQyZDYwN2FjMzczN2QxMTVkYTk5ODkwIGxlZ2FjeS10cnVuaworNDkzNyBiZDQ3NjU1NWJlNDJhN2FkNzk5ZmE2ZTI1MjU2OWRmZTY1NWQ2NzQ0IGxlZ2FjeS10cnVuaworNDkzOCAyMmNkMjJiZjQzODRlNGQ0NmJiMDU3ZTM3NGNkNGQ2YzdlZTEwZWViIGxlZ2FjeS10cnVuaworNDkzOSAwNTEwYjk0ODE3OGUwYmE3MDZiNWE0ZTU5NWMxNGQ1OTM1NGJlZjg0IGxlZ2FjeS10cnVuaworNDk0MCA1MTdiY2Q0ODIzYWI3ODZjNzRiMmZiMTM3MTBhZmRmNWZmODUwYzZiIGxlZ2FjeS10cnVuaworNDk0MSAyYTU3NGQ0YjBkNThjMmYwZTM4MmFkYTQ2YTQwMzQ0YjY1NTVhMjZjIGxlZ2FjeS10cnVuaworNDk0MiBkNjMwYzZkMzY4MzlhZDg4NDI2YWU2N2IwZmFjNWJkMzMxMWU1ZmUxIGxlZ2FjeS10cnVuaworNDk0MyBmZTM3ZWQyY2Y3YTVjNTczYmZmYjgyMTRmMDMwZDQ4NjQzNmNiMTdmIGxlZ2FjeS10cnVuaworNDk0NCBlYjE0ZjMyYTk3Y2RjNWM1NDllNzJlYjFkOWEzNDk4OGMwMjA5YzZkIGxlZ2FjeS10cnVuaworNDk0NSA4MDcyOWFmZjkwNTdjMGZmMTdmYWE1YWM3MGRjM2FlNjc5MTllMWFkIGxlZ2FjeS10cnVuaworNDk0NiBjZDY0YTMyYWI4MDMyY2Y3NmJjYjZmZTFiY2M0ODZlOTgwYzg5YTg5IGxlZ2FjeS10cnVuaworNDk0NyA0NDE4ZTg1NDdlZmNmMTUwZjcwMWJhYzk0OTg4MGNmMDFlN2Q2MGExIGxlZ2FjeS10cnVuaworNDk0OCBmYjhlMDhlYzg4ZGQ1NjA2MmMxYTkzNTYwMjFhZTgxNWFiZDE1NmI2IGxlZ2FjeS10cnVuaworNDk0OSA0YjU3NGRiNWRiMTNmMTc1NzRiNjVjNDY5MGIwYmMwYTNiMmMyOWNiIGxlZ2FjeS10cnVuaworNDk1MCBkOTQ4MTM1NGZkYzM2MTk5YmUxYmEzYmU4MzJmZTgzNjkxMDU0MGRkIGxlZ2FjeS10cnVuaworNDk1MSA1ZmM2MjU2MmU2ZWNlMTcwOWRmM2M3OTQ2MTU0Zjc3ZTFlZDcyZDU3IGxlZ2FjeS10cnVuaworNDk1MiA3MThjNjVkMGUxMmRiNDg2NjFhZjc3YjU3NmNjZDFjMzY5MjJjNmYzIGxlZ2FjeS10cnVuaworNDk1MyA2MGU1YWFjZWIzZWIzNmNhMDRkMjRiMTMwM2Q5MjM2MGExOGY1MDNlIGxlZ2FjeS10cnVuaworNDk1NCAxNWE4NjY4N2Y4MzgwNzExNDU3YjMyYjYwYjZjOTI0YjNiMzE4MTJhIGxlZ2FjeS10cnVuaworNDk1NSBkZGY2MGJjN2VkMzAxNWY3Mzc4OTJhZDk0NGMwNjkzNzQ2YmJhOGM2IGxlZ2FjeS10cnVuaworNDk1NiBjMjIxOTU3YTYyNmQ3ZWM1ZmUyNjNlZjg3OGFjNTk3ZTU2ZjE4MWE2IGxlZ2FjeS10cnVuaworNDk1NyBmMjE3YzFiMjdmODY3NmE1ZDRiNjUzYTdjY2JjMjc0Yjk5MzE1ZTM2IGxlZ2FjeS10cnVuaworNDk1OCBiNWNlODAxMTQ0MTYxNTg3NWM0OTQzOGU3OWQwZDZkMDA4NGNhMmQyIGxlZ2FjeS10cnVuaworNDk1OSBkNTk3ODIzOGUzYmE2ZjdjYzc3MzIwMmYyMTNhNzM5NWJiNjNkNDAwIGxlZ2FjeS10cnVuaworNDk2MCA0ZGQxYWYwZGRlZjA4ZGIyNmUyNjI4NGMzMTY5NWM0ZTQ3M2Y3YzE1IGxlZ2FjeS10cnVuaworNDk2MSA0MjU4MzViODgwOTllODIyYjk4ZjA5MmFhYmU1MWJhNDVjOWVjY2ViIGxlZ2FjeS10cnVuaworNDk2MiBlOTIwZTZjMjcyMDgyMWMxYzI2ZWFmODYwMjg2ZGU3ZjcxMGQ0MGYyIGxlZ2FjeS10cnVuaworNDk2MyA5ZDZlOTdkNjY2NzA4ZDQzN2FiZTI4NWM5MWY0ODI2NTk2OTdhMWU3IGxlZ2FjeS10cnVuaworNDk2NCA4YWM0YzBlMWNlMTdhZDI5YmY3YWM5YTI5MWQ2ZDY2N2RhMzFiY2I1IGxlZ2FjeS10cnVuaworNDk2NSA0N2NjNTNhMWZkNDdiM2Q0ZWVjNDhlMzkyYTg5Mjc2NmE1MDI4NzRhIGxlZ2FjeS10cnVuaworNDk2NiBjNmU0ODI4NzBlYzMwYWQwYzQzYzM5ODNlMTBmMzk5NmRiY2QyNGFjIGxlZ2FjeS10cnVuaworNDk2NyBjMjlhZGIzMzg5NjRjYjdmYWMwOTRlZTYwOTZkOTk1YTMwYzQ5NGNlIGxlZ2FjeS10cnVuaworNDk2OCBjNmE2ZTJiMjBiZDgzZGQzOGE4ZTIyZTcxNjU0ZjVlN2I4NTA2ZjU2IGxlZ2FjeS10cnVuaworNDk2OSBjNmYyZDUxMjUxZDA3NWQ3OGRlYTM3OWI1NGJlMmUxYTNjNmZiMjljIGxlZ2FjeS10cnVuaworNDk3MCA1NmUyNTExNGQ0Mzg0NDM1OWFlMDY0YzkzM2U3ODY4M2I4MTFlZGYxIGxlZ2FjeS10cnVuaworNDk3MSBmNGRjNTFmNzhhNTZkYzNmYmIxNDFkNmRiZGViNWNjYjA0MzYxN2NkIGxlZ2FjeS10cnVuaworNDk3MiAxY2U5ZTY3YzY4NTZlOGZjNzhiYTE3NTU2NTFlYjQ5OWU1YTNjMGI5IGxlZ2FjeS10cnVuaworNDk3MyBkMGI5ODEyY2Q5Y2Y0MDUxM2FjOGY3MzlmYjdmYjJmYjBkZjk5YzVhIGxlZ2FjeS10cnVuaworNDk3NCAyZjQ1NTYyN2MxZjBlZDVhZmIyODc3NmQ0OWI1YjdiN2JmZmRkZTcyIGxlZ2FjeS10cnVuaworNDk3NSA1NTYyMTk3MDllOTk4NWJjZmUxMjBlYWE2MDY3NDMzMjNiNWZkOTQ5IGxlZ2FjeS10cnVuaworNDk3NiA0OTVhZmM4YWQ3Yjk2OWYxNGU2YzBjMjViMjRmNWJmZWU4MTc4ZjgxIGxlZ2FjeS10cnVuaworNDk3NyA4NDdkMjQ4NDFjODU2OTlkMTUxODJjNTMzOWRiNTVkM2Q2ZGIxMzIyIGxlZ2FjeS10cnVuaworNDk3OCBlN2Q0ODBjZjE2YmE2ZGY4MTBhZTY5MTA2OTc2MDBiN2Y2NmNjMjc3IGxlZ2FjeS10cnVuaworNDk3OSA5ZTQwMTJiMTc1N2ViNGI2YTZjYmQ5M2EzMmIxZjc3NTc1ZTQ0NTE1IGxlZ2FjeS10cnVuaworNDk4MCA4YjhhMzdiN2NiYTQzOTliOTg5YzA1MjlhYzBkNDI0MTYxYTBkMWRlIGxlZ2FjeS10cnVuaworNDk4MSA2MDAxNDQ4ZmFiODkwMzUwYmVhODNjNjJhYTIzODY1MWQ1ZDFlZWZjIGxlZ2FjeS10cnVuaworNDk4MiAxNmVhMTUxYWVlYzNhNGIwODZiOTNlOTQ3ZDYzMDViMTFkMGE1N2RhIGxlZ2FjeS10cnVuaworNDk4MyBkMTEyM2IxMGNmMjM3MmNjNGUzZTVhNTZmZTljMGNmNjI4YzdmZGU0IGxlZ2FjeS10cnVuaworNDk4NCA4MTVkZmFhNmE3Nzg3NzcyMDYzMzRhN2Q3Y2E3YjE4NjQxY2IxYzI1IGxlZ2FjeS10cnVuaworNDk4NSBhZTJiMDMyNDQ1Zjk5YzMzYjFmNzdiMmIyMjM2OGQzNWIyYjQzMDY0IGxlZ2FjeS10cnVuaworNDk4NiAxNmVhNTdjMzhjNGY3NDFmMzE2OTZhM2M5M2QzNTZhYjZhOWUwYzhkIGxlZ2FjeS10cnVuaworNDk4NyAxYTVlN2RhNDA0YzNkYTNiM2NjNWY1ZmFhNTY3NzY4MzE0MGE1OTZiIGxlZ2FjeS10cnVuaworNDk4OCBlMzliYjI0MGIxYjNhN2E4NDQ1ZDAwMWViYmJkNDYxNmUxYzBlZjlhIGxlZ2FjeS10cnVuaworNDk4OSA5ZTVhMDk4NDE3ODE5NThjMjg4M2RiZmNjYTY1ZWU2OGZjYzk5MzY4IGxlZ2FjeS10cnVuaworNDk5MCBlNTA2ZWM0ZmIyYjEwZDQwMGVlN2Y2MzhmNjlmNzliNTJjNmZhM2JmIGxlZ2FjeS10cnVuaworNDk5MSA3M2QxOTNlYWE5MDBlYTQzOGU4NDUyOThmZDc3Njg0YjZhNDc0NTI0IGxlZ2FjeS10cnVuaworNDk5MiA4NzUxNzNmM2YzMWNiZDIzNDZjYjQ3NzkxM2FlZTc1ZTkyNTg4OWVmIGxlZ2FjeS10cnVuaworNDk5MyBhMTRmYzJkMDRjMDYyNWE4NjVmZmI0M2JkOGM1NDQ5NDVjOTUwOWUxIGxlZ2FjeS10cnVuaworNDk5NCA2ZmNkMGIwMjJmYTc3YmJlNjJkZjdmNzk1MTQ3N2JmZWQyYTJiZjJjIGxlZ2FjeS10cnVuaworNDk5NSA0ZGYwMGIyOTQ3N2I3ZjdiMjY5NzliOWVkM2ExYmY3N2ZiODEyYjdkIGxlZ2FjeS10cnVuaworNDk5NiA1MzRhOTdjNDAwY2M3ZDYwYzUzNWNmZDI0ZTU0ODQwMWYzMWFlNmM4IGxlZ2FjeS10cnVuaworNDk5NyBkN2FlNWZiMWQyNTUwOTgxNDk3ODFjMDFmNDhmZTk1OTc1MDY0Y2I2IGxlZ2FjeS10cnVuaworNDk5OCBiNzJjY2Y1YjdkYmM0N2ZjOGQxMTY5ZGEzZGRhMmNhNzMxMWY3OWJhIGxlZ2FjeS10cnVuaworNDk5OSA0OWRmMTU3NmZiNTRlOTJmZjFjYmExMGE1MmNlNTE4ZDNmNTZkOTZmIGxlZ2FjeS10cnVuaworNTAwMCAxYTQ0OGRkODRlZGMyZTlmM2QyMTQ4Y2EzOWRlNmNhODI1ZWI4NmE3IGxlZ2FjeS10cnVuaworNTAwMiBhYWJiZmI2MWUzODg4NGI2YTBjNGMzMTllZmE2MjdkNGVhYmFmNmRjIGxlZ2FjeS10cnVuaworNTAwNCA5Y2M3NzVmZDZlODRjNWYzMzg1YmVhOTBhMjQ3ZTc5ODFiYWI5MGZhIGxlZ2FjeS10cnVuaworNTAwNSA1NTM2ZmNiYWU4MGFkN2IwMTdkMzM4YThmZTIwYTE1NDAwYjIyNWQzIGxlZ2FjeS10cnVuaworNTAwNiAzMjgxYTkzMWExZDlkYzk3N2JhMTNjNTAxYWY0MGQ5MmFlNGE1YWU3IGxlZ2FjeS10cnVuaworNTAwOCAyY2FjNmM1MDY2ZGE1MDk1OThhYjA2ZWUyOWU5MGRmNjliZmZhNzM5IGxlZ2FjeS10cnVuaworNTAwOSA0MTk2MDAwNzg5YmM1ZTI0MjZlMDM4YTc0ZTUyMTIwYjU2ZjU5MGJkIGxlZ2FjeS10cnVuaworNTAxMCAwZjZmZjQ1YmQ4MTY3ODc2YjdjM2U0NTNiNmUyNTYxZTc2ODYzZTFhIGxlZ2FjeS10cnVuaworNTAxMSBjNTVkZGRiZmNmN2NlOGViNmFmYmY5N2NmNGZkNTk4ODk1MWY0OWYzIGxlZ2FjeS10cnVuaworNTAxMiA3ZDcwMjA5ZjM1NWQyMGVjMDFkYmM3M2EwMmZiMjljZTkyM2YyMTk4IGxlZ2FjeS10cnVuaworNTAxMyBmMzBiYzQ4YzQxN2EyMWQxY2MzYjZlNjZmOTczOWM5NWYzODAyODNjIGxlZ2FjeS10cnVuaworNTAxNCBmNGQyNmEwZTI5NzUxNTFhNmZlZWQwMGRiYWVkM2MyMzUwZjA0NTI1IGxlZ2FjeS10cnVuaworNTAxNSBiMTgxZGZmMjFiMGI4ZTk5Y2YyYzk0NTc5ODkwZDY4MTNhNTFiZTViIGxlZ2FjeS10cnVuaworNTAxNiBmOWIwNzkxNWEwNjE3ZGEwYWU0ZmIwZTliYTU5MzYxYzJjYzQyZGFjIGxlZ2FjeS10cnVuaworNTAxOCAyYWE2YjVhZDQ1MjA0ZTA3MWRiMWQ0ZjdjMWUyODJhYmFiZTU5ZTNhIGxlZ2FjeS10cnVuaworNTAxOSAzOGYzMjI1ZWZmMzFiZGQzNWJjNjI3MDg4ZmU3MmJhMGZjZjUwZDBiIGxlZ2FjeS10cnVuaworNTAyMSAzZjhjOGI5MDE1OGRmZDMyZmJjNDhjYWI0MjkxZjYzYjM2ZGZkZTI0IGxlZ2FjeS10cnVuaworNTAyMiA3ODdiNGRkNmY1ZjNlNmMyMGUxMmQxNzk0YzEwNjllYmI0NGRhNjc5IGxlZ2FjeS10cnVuaworNTAyMyBiMDkyZDkzNmM4NzVlNjZmMTc0ZGQxYWNhNzYxMDFlMmQ2OTliYTZkIGxlZ2FjeS10cnVuaworNTAyNCAzODI4MjA2YzJkYzBjNjA5ZTY0YWI2YzI5ODNkNzlkOTk3NDUxZWNhIGxlZ2FjeS10cnVuaworNTAyNSA4NWMwODE5NjYyYjdiNDliZGRjZTQ0NTk3MWM2ODIwYWYyOGEzYjQ4IGxlZ2FjeS10cnVuaworNTAyNiA3ZmJmZjUyZGIwODc3NGRmOTRkMTQ5NmE0ZWVmZDBmMzAwYjYyYjk1IGxlZ2FjeS10cnVuaworNTAyNyA5MTI4MTNkNTczYjQyZmZhMjIzYTk1NzY2YzhmMzcxZDQ0OWFkYTc0IGxlZ2FjeS10cnVuaworNTAyOCA5MTljNTNhMzVlZmFlYWQzZTlkZjhlMDkzY2I1ZDEyNzZjNzNhMzZkIGxlZ2FjeS10cnVuaworNTAyOSBiNTk2M2M0YjYzOWFkMTQ5NzE3MTM2YjZmMzc3YWQzMGU3MjQxZTJlIGxlZ2FjeS10cnVuaworNTAzMCAyYzYxNzg2MzI3Y2ZmMDU0ZDM3ZDhiOTg4N2UwZThhNDBmNjcxZmY3IGxlZ2FjeS10cnVuaworNTAzMSA3YTM3MzM3MzI5MDFjMTE5ZTVmNWE2OTA5OGZmMTYxMjYzYzY0ZWRkIGxlZ2FjeS10cnVuaworNTAzMiA4YmU0MDAyYjUwODY3YzE4N2YzYmQwZTdmY2UyOWRlNTIyNWVlYzBiIGxlZ2FjeS10cnVuaworNTAzMyAxODA3ODY0YTc1ZjQ3MTQzY2IzMGM0ODc1OGRkYjY1MGRlYjEzZGU0IGxlZ2FjeS10cnVuaworNTAzNCBhYzEzY2FhNzllM2NhNjM0Mjg1NWUxMDNiZDdlNDllNGFmMGZmM2M4IGxlZ2FjeS10cnVuaworNTAzNSAwYmFlYjc0NmE4NTQwMzI5Yzc0MTI1MWUzNzA0YzAxMmMwNTYzMDRlIGxlZ2FjeS10cnVuaworNTAzNiBmMGI3ODcyZGE2ODkxYzA1ZDY3YmE4ZmJkNDRjYWM0ZTkwZWU3Y2MzIGxlZ2FjeS10cnVuaworNTAzNyA5Njc3ZWIxMDVmYWU4MjRkYjZjMDg3Y2U2MDQ3MGUyMzRlZTMyMjFjIGxlZ2FjeS10cnVuaworNTAzOCBmNDdiYzU1NTQ0MTg1YTVjMDliNjMzNzQzNDUxOWMxNzAzMDM2NDA2IGxlZ2FjeS10cnVuaworNTAzOSA0OThkYWQ4MDQ1ZDM0Yzg2YmQ2NWVkYjYzYjdlYTU2Y2IzOTQ3MTViIGxlZ2FjeS10cnVuaworNTA0MCAwYWMyN2ZmZDA1Nzk5YzNmMWRkODY3YmVjZDUxODFiODlhNjFjNzlhIGxlZ2FjeS10cnVuaworNTA0MiBiYzRiM2ZkYTZhODA3OGRjNjM3N2ZhYWM5ZmQwYjAyZThhM2I0NTU4IGxlZ2FjeS10cnVuaworNTA0MyA5MWJjOTA3YjFlNjNjZjA4MmY0MzQ3MTBlZmQyOGQ3ZTc4MzIxMzMwIGxlZ2FjeS10cnVuaworNTA0NCA0ZDI4YjY1NWI3Mjg3MTVlNDJiM2EwYmE4MWRjZjg1ZTkxNTRkM2NiIGxlZ2FjeS10cnVuaworNTA0NSAzNzcwZTQzNDc4MDM4NWVmOTI2ODU0NmQ4ZDg2N2M2ZDE0ZGVhNzU4IGxlZ2FjeS10cnVuaworNTA0NiA3OTE0OTE1NzI5ZTNkNTIxYjcxM2Y4MjBhZmFlNjA0NWU2NmVhYTc0IGxlZ2FjeS10cnVuaworNTA0NyA0YjZjMDc2MmQ2NTliNGQ2MWU3YzI5ZGM1YmMzMTMzODE1Njk4NmI5IGxlZ2FjeS10cnVuaworNTA0OCA3MDQyYWVlNjQwOWVmYzc4MjBmZDNkMThmYTYwNmJiMGRlNDc5MzQ1IGxlZ2FjeS10cnVuaworNTA0OSBhZTEzMWI4YjRlMzE5ZGJmYzEzZDg3MzliOTNmNTJlY2UyOTAxZGQxIGxlZ2FjeS10cnVuaworNTA1MCBkNjk5NTRlMWY1ZDQxOGY0ZmRmMGVkMjNmNTEyYjVmYjU5OGFkYjRlIGxlZ2FjeS10cnVuaworNTA1MyBiYmJmMTc2NDBjNmZhMTVjYmM1OTYzYzc1ODE5MDI1YWYzZWYzZDE2IGxlZ2FjeS10cnVuaworNTA1NCBkNWQyN2RhZDdmZWFmNWQ2ZjUzOWFiZTMwM2EwOTUwOTQ2ZTk0ZGU5IGxlZ2FjeS10cnVuaworNTA1NSA1ZDA5MzgzNTBhZThlOGQ4N2NjODc2MWZlOGFiZDM3ZjY0YjMxNDc3IGxlZ2FjeS10cnVuaworNTA1NiAyYTNlNDg5NzIyNjEyZjkzMDVjMTllNTliYjc1ODI3OWY4NTdjNzdiIGxlZ2FjeS10cnVuaworNTA1NyA3NjNlYjQ3OTc1ZGQzOTdlOTM2ZTQ3MmY3YjA5ZjUzY2M5ZTE3YTc4IGxlZ2FjeS10cnVuaworNTA1OCA4ZGY1NzRhNjU1YWQ2YzNjZDViODNlMzQ4ZDg5YTMzOWU4NjBmMjJlIGxlZ2FjeS10cnVuaworNTA1OSBjZTlhNzUwN2UxZWZlYjcxMDM1NmNhOGU1NWY4ZWNiYzFjNjQ0ODJmIGxlZ2FjeS10cnVuaworNTA1OSAwNjVlMzFjZjU4NjJlMjc1MjFjZjU3MjViMDAzYWVkMjExZjA5MWIyIGxlZ2FjeS10cnVuaworNTA2MSAzMTc3NzYyMmFlOTMxNTdhMjAxMDgxMjkxNDlhZWZjZWZlMmM4ZWRiIGxlZ2FjeS10cnVuaworNTA2MiBjZDVhOTZmNjIzOWJkZTQ1MmEyMGY3NzEwYmY3YTRiYWNkOTYyYzFkIGxlZ2FjeS10cnVuaworNTA2MyBiMjgxYzNjODYzY2NhZTRlZGJkMWM2OTU4ZjlkMzNhYTcwM2RmNzMwIGxlZ2FjeS10cnVuaworNTA2NCBiZGI2M2E3OTc1NTU1NDc4NDE5MjQwMmFmZmNiY2U0MzdhNzExNGJhIGxlZ2FjeS10cnVuaworNTA2NSA1ODhjZDQzNDNlZWQxZmMyNzM2MDlmNzA0MTFhMDNjODRjNjU1ZmI4IGxlZ2FjeS10cnVuaworNTA2NiAzNTIzMzY0MDQ3OWIyZWJjOGJiMmQ4M2RkN2M1NDM0OTJmNzc2ZTU0IGxlZ2FjeS10cnVuaworNTA2NyBiZWUyYWVkNDE2ZDYyNDQyN2FkMGFmOGNhM2MzNmYyMWRhMWNmNTFhIGxlZ2FjeS10cnVuaworNTA2OCA0MDg0ZWNmMjc2Y2YwZjVlNDZjODgyMmYwNmFlNDAzNmI2MmMxNTUyIGxlZ2FjeS10cnVuaworNTA2OSBjNTJiNWM5YmU3ZTIxN2Y0MjQyMjFmOGUyNTljOTBjOWY1N2ExOTM4IGxlZ2FjeS10cnVuaworNTA3MCAyOWI5MGE4NmFjOTZkOGM4OGMzM2YyY2RlMjU1MDdhY2JjMmRjMTg5IGxlZ2FjeS10cnVuaworNTA3MSAxN2M5MjVmMDA2MGI4YzcxOTY1OWViNjBiZDBlODc2MGNmOGUxYmQzIGxlZ2FjeS10cnVuaworNTA3MiAxYzgxNDc4M2VmYzE4NTAwYTMwMjJmZjU3YTM3ZWY3ZTVhNjQ0Yjg0IGxlZ2FjeS10cnVuaworNTA3MyBlZWFjMTcwZjVmMmZmODI1OGM2OWQ4ODIzN2E1YTdmYzhjNmU5ODFlIGxlZ2FjeS10cnVuaworNTA3NCA3ZWY3Mjg3M2U0ZDY4NzQ3ZjUyNmM3ODg5OGE4OWVlZDM5OGNiZmNkIGxlZ2FjeS10cnVuaworNTA3NSBiMDI1NzNlZWIxODI4YzY4MjJkYjI4YTM1MWNlYWM1N2U2Y2IxY2JiIGxlZ2FjeS10cnVuaworNTA3NyAwMTY4N2NlNDM3MDgyYTU1YjdlY2YwMDY0MzI4MDBmZWY1NTc0Y2VjIGxlZ2FjeS10cnVuaworNTA3OCBjYTZiNjBkNGVhOTA2MzdjNjc2YjEwMzAwMDgwYTdjZTk0YWNkM2NkIGxlZ2FjeS10cnVuaworNTA3OSBiMzY4YmU3YjA2MmE1MzAyYTJkMDZiOTNlNDY3ZjcyZjBiYThjOTdhIGxlZ2FjeS10cnVuaworNTA4MCBmNzA0OWQ0NjUzNjU3Njk4ZDk4ZDEyMGVmZmIxYWU1YWY2MmQwMzc0IGxlZ2FjeS10cnVuaworNTA4MSBiYzMyNjA3NGY4NjE0ZTgxYjViZGYzOWYwOWY0NGEyOWM5Y2E4MzMyIGxlZ2FjeS10cnVuaworNTA4MiBhOTJkZGVkNGE3YzRkY2M2MjRhNjgwYzAwOGRlYjY4Yzk3YWJkNGYzIGxlZ2FjeS10cnVuaworNTA4MyBlZDMwYmNhMTg0YmI4MWUyM2E4ZmFhOWQ5YmQ4MGJjZGRkYTA0NmMxIGxlZ2FjeS10cnVuaworNTA4NCA2Y2M2MzdjNjBjZTY2MmFmZWNhMjI4MjNmOTZhNmEyZmUwZmFhZDdiIGxlZ2FjeS10cnVuaworNTA4NSBkYTQ3YjQxNDZhN2M4N2NlZDRjYTQ4NGQ2ZjUzNmNmYzJmOTY5OTI4IGxlZ2FjeS10cnVuaworNTA4NiBiZDA1ZGNlYTdiMDljZDc0NzQ5N2NlYzNiZWU2MDcyMzI0MDk1MmRmIGxlZ2FjeS10cnVuaworNTA4NyAyZjkxMDJmNTcxNDNmMWQ2ZmQ0NjJiZDk1OGU1YzVmMTRjMDkyNzU0IGxlZ2FjeS10cnVuaworNTA4OCA2MWUzYjYwYWVjNDQxOWRhZWQxZTgxZjNmMjY3YjZiZjYyZGE5NjU4IGxlZ2FjeS10cnVuaworNTA4OSA4MzAxOGFhOWIxN2M5NTZjNTQ4NjhiMzM2NGE3YzE0YWM0NjM0ZDg5IGxlZ2FjeS10cnVuaworNTA5MCA2MzQxYTRjMDA4MmIzNDkzNzUxNzFkNWJmMDk5Y2RhNmViMDBkMjA2IGxlZ2FjeS10cnVuaworNTA5MSA1YTMzNzEzMjA5NzU0NWVhZjJlZDJmNWZiNDk0NzliMzRmZDg4YWViIGxlZ2FjeS10cnVuaworNTA5MiBkYmI0MTcxMjE2NWJlNGZhNDJmMGRlNzg3MTEyZGNiMDIxMjAyYmZhIGxlZ2FjeS10cnVuaworNTA5MyBlOWVhMDU3MDI2NzZlN2JjODFkYTY1OTljMTNmMzIwYjhlNTZjMGY4IGxlZ2FjeS10cnVuaworNTA5NCA3YzkyZDQ0ZmE2ZmNhNTEwZWUxYTk5NGU5ODY2NWU0NDI2MDIxMGU1IGxlZ2FjeS10cnVuaworNTA5NSAxNzU2NzFjYzIxZDhjNjQ0Y2VkMTdkYjdjYTcyNTQ4MWE0ZWNiOWE0IGxlZ2FjeS10cnVuaworNTA5NiA2Yzg5ZGY1NzZkOTFhZmFkYzczNzFjYzkzZDM5NjlmYzczM2M3MWU5IGxlZ2FjeS10cnVuaworNTA5NyA5MTIzMTdhMzdlMmIzODU2MTdlYmFmZGRmNjljZjNhMmExMzI3MmVhIGxlZ2FjeS10cnVuaworNTA5OCA3NWU5ZTU2YjVmOWIxYTBkZTNlMDI0ZWZiNDZkMDkzZWYyZGVlYmRlIGxlZ2FjeS10cnVuaworNTA5OSAyMjkxMmYzYTg4OWYxMmZmNjA3ODYwNDM3ZDhhNDAyZmQxZTIxNGRhIGxlZ2FjeS10cnVuaworNTEwMCBmNGVmM2IyMTI2ZWJjYmRkNjViNmM5NjUxNDRmYjMwZjJhNDYxMWM1IGxlZ2FjeS10cnVuaworNTEwMSA2ZjM5NmNlNTI1NWQwOGYxYTZlMzkwZGJmOGMzZGRiNDZhNDQ1NmFiIGxlZ2FjeS10cnVuaworNTEwMiA2N2ZmOWY0N2FiMzZmZTliOTgwMWY3NmM5ZjQwMWQwMmU3OTI5YWI5IGxlZ2FjeS10cnVuaworNTEwMyA0NDA4NzgxOTE0OGUyNzc2Nzg4Y2U4YjY2Yjk1MDI5ZTNlZDA2NWU4IGxlZ2FjeS10cnVuaworNTEwNCA2OGM3YTBhNjFmZDU4MWMwNzZjZjhmZjhkMWVkOGY4ZTIzNzE3M2Q5IGxlZ2FjeS10cnVuaworNTEwNSBmMTFiYTljYzM0MmYyODBjYWE4N2ZjMWMxOThhYTNjZWIxNTlhMGUwIGxlZ2FjeS10cnVuaworNTEwNiBmNWM0MDg2OWRhMTA2NThlYzEwMzE3MGM3YzM5NjI0MTgwMDM0NTAxIGxlZ2FjeS10cnVuaworNTEwNyBmOThhMjIzM2IzMzdiNDk1MzQ1OGI3ZGNkY2Q1NjRhNWQyM2U0NWY3IGxlZ2FjeS10cnVuaworNTEwOCA1MTM0YzAwOWUxYTRmZTU4M2RkOWUwZWU3YTcxODY4ZDg3MDE0YjZjIGxlZ2FjeS10cnVuaworNTEwOSBkOWU0Y2JiYTk1OGMwNjkxOGZlMTZmYTZhY2JmZGRkMTY4YzM0YTAxIGxlZ2FjeS10cnVuaworNTExMCA3YzY5YzRhZWNiMzhjYjQ1NWU3MzliZjE5MDZlMmIyNzcxNjdmMGY2IGxlZ2FjeS10cnVuaworNTExMSBmODc2Y2Q1YzQ0MTdkNzUwMDk1ZDgwMDlmN2MyZGM4ZjE1ZTI1ZWIwIGxlZ2FjeS10cnVuaworNTExMiBkZTI5N2NkZWEzNGVlNjUwZTIxZTJiZWQyZTBhY2JiNGNmNmZjYzNhIGxlZ2FjeS10cnVuaworNTExMyA5YjdlNmQ5YTUyOGRhN2M4OGYzZjg4OGE2NGIwYjg1OGEwNGY0YmRiIGxlZ2FjeS10cnVuaworNTExNCBiN2U4YmMwMDJhMjQzMGNiY2Y0NTZmNmU3NjE4MjhmYWEzZWI5M2U5IGxlZ2FjeS10cnVuaworNTExNSAwNjNhOTZiNDliM2U2MmE5NDgyMWJmMzY3NDRkZTcxYjk5MWU2ZTEwIGxlZ2FjeS10cnVuaworNTExNiA2MDZhMDk3ZGZkMDAyYzRhMDg2YjE1MWU4YjIyNzAxYjc0MDZhYzczIGxlZ2FjeS10cnVuaworNTExNyA4NGUyMjYwZGIxNzk5YjM1MGJiMjg5NjY4MzRmOWI3NjRiMTdlMWZhIGxlZ2FjeS10cnVuaworNTExOCBkNjM1MGEzMTg5OTc4ODJjNjlmYzc2YjhjODU5OGE2NTNmNjk2ZjFkIGxlZ2FjeS10cnVuaworNTExOSBlM2VjYzQwMTg5ODlhZTM4MTFiNzJhZDFiM2NkMWY1MGU0Y2M1ZTQ1IGxlZ2FjeS10cnVuaworNTEyMCBmNGIzZDY4YzcxMjQ0MmNjNzRiODU1ODJlNTViMzEzNTVhYzRjZGEzIGxlZ2FjeS10cnVuaworNTEyMSBkYjNkYWNlMjc4YWMwMTg4ZGVlYWMwMGExOWM0NjZhNWM3YjFhYTg2IGxlZ2FjeS10cnVuaworNTEyMiA5Y2Y2MDRhMzQxMWU5NDViOWY0ZTVkNjIzZmJiYmI2YjQxZTM3NDA0IGxlZ2FjeS10cnVuaworNTEyMyA4NDFmNzJkYzU0NDI0YjNkZWYzNjYwYjVkMWU4ZjIzNDIzNjA2NWEyIGxlZ2FjeS10cnVuaworNTEyNCAzYTNkZjIzMTMyN2MxZDA2NzE0NDA4MzU2MDFjOGE0ZGUxMGNmMjU1IGxlZ2FjeS10cnVuaworNTEyNSAyNjZhZDEzMjg3YTRlMGNhNTk4Y2YyMjgxNWViMTNkZmNmYzg2OWJlIGxlZ2FjeS10cnVuaworNTEyNiA0ZWI2ZGRiOWU5NjFjOWFiNWJhMjZhMTFkM2QxM2E5ZTQ2ZGRhNTgxIGxlZ2FjeS10cnVuaworNTEyNyBiNGZkNDhlM2EzYjg5YjJhZDk0ZmU3OTU1YmY2Y2M5MWE2MjQ5OWIzIGxlZ2FjeS10cnVuaworNTEyOCBkZjNlMWU1MjFmZTY1ZGUzZjBkN2NiMzA2ZGRlNzBjMjVmMmUzYmE1IGxlZ2FjeS10cnVuaworNTEyOCBlNzIyNTdlNjU1NDU0ZDU2OTQ2OGRhOGIxMTg5ZTBlYzMzNmYzNTM2IGxlZ2FjeS10cnVuaworNTEzMCA1MTNmMWNiNzBjZTZhOWVjZjQyOGE3ZTlhNTMyNDNjMjljM2VhYWUwIGxlZ2FjeS10cnVuaworNTEzMSAyZjhlOGI2MTI5ZjczYWM3YTI2MzNmZDI4NDNhZGQ3YjUyMTAxZWQzIGxlZ2FjeS10cnVuaworNTEzMiA0OTE4MzkzOGQwN2U5N2I0YzNjZTJkNjU1NDkxNWZiYzY3ZmI4ZDdjIGxlZ2FjeS10cnVuaworNTEzMyAwYjdlMTRiYjU0YWUwZWVmMTA3Yjk4MzJjOWU0ODg5MDI1NjlmMDYwIGxlZ2FjeS10cnVuaworNTEzNCBlMmRkNzgxOTc1OTZiZmQxOGJmM2NkYjg5ZjQxYmRkMGQ0Yzc2MmRkIGxlZ2FjeS10cnVuaworNTEzNSAzNGVlZmEyMjY3MDlhYThlZGFhYzZkZjRiZDRkM2Y2ZmNmOTc4ZTU4IGxlZ2FjeS10cnVuaworNTEzNiBjOTQ1NzM1YTRhZDcwZjQyMDIxODVjMDJiZGM3MDU4YTBlZTU0MzI4IGxlZ2FjeS10cnVuaworNTEzNyBkMjQxOTBjNjViNTFmMDM0MWQ3OTI1ZWVjOWVkZDczZWZmZmUyODdmIGxlZ2FjeS10cnVuaworNTEzOCAwZmI2NTUyMGZjZDAxMmE3NTA1MWU1YzFkY2EwZDkzMGVjNWI2NWMxIGxlZ2FjeS10cnVuaworNTEzOSA0YzgwY2YwMmQxNTQwYzc4OTUwNDFkZTY2ODAwZTlhN2NlYmJkMWYzIGxlZ2FjeS10cnVuaworNTE0MCA0OTNiODcxZjM3NzU0N2M2Y2UzZWJjNzc3NWI2OWM5ZGRlYmY2M2FlIGxlZ2FjeS10cnVuaworNTE0MSAzMTgxNzJmZjJmMTRjNjk3OWMwOTY2YjlmZTM5ZGYxYWUwNWMwMTZkIGxlZ2FjeS10cnVuaworNTE0MiAxMDdjMTgwMDkzN2UzZjQ3MWUzOTMyZTNmMjQ2NGJjYzBjZGNlYzg1IGxlZ2FjeS10cnVuaworNTE0MyAwYjZjOGE3ZTkzM2E2NmVlYWZiNjVhN2VkY2I2NmZlMmVlYzA2ZmUxIGxlZ2FjeS10cnVuaworNTE0NCAwZTljYWUwYjUwNzJkNjg4MjBkZDA5ZjQ5N2FjMjFiZWQzMmJlYzQ5IGxlZ2FjeS10cnVuaworNTE0NSA5ZTlmMjJkYmVkMWFmMDRlMDk3NjEwZGE2MzljM2MyNjkwMmFiNmZjIGxlZ2FjeS10cnVuaworNTE0NiBkNDY0NGQzOTJhOGZlNjhjNDNiM2M0MWI0YzQwOGY5YjM4NTRiZDk0IGxlZ2FjeS10cnVuaworNTE0NyAyZDliMTY1MjcyNDdkY2IzYTM1N2IwYzBlMThkMDI2ZGI1ZmFiYTM0IGxlZ2FjeS10cnVuaworNTE0OCA2OTBlNDZmMGJmNTk4NTVmY2M4OTkyNjY5ZWZjMTA2NWM0NWZlNTcyIGxlZ2FjeS10cnVuaworNTE0OSAxYTQ4MWE3NWFmNDVmMTI5Mjg2MzNhMjAwN2YyMzg1YWZjNzZmMjA4IGxlZ2FjeS10cnVuaworNTE1MCA4OTI5MmY2YTI1OGRjY2ZlN2MyNjk0YWU2OGNhMTJkMDlmNTIyZmIzIGxlZ2FjeS10cnVuaworNTE1MSAyMTA4MjFmZDU2NTA5NDdhZDAwOGM2NGZiYTkwZWQwYTU2YmRlYzZkIGxlZ2FjeS10cnVuaworNTE1MiA0YjU3YWYxYmEyOTcxMDZjZDdlYzU4YjQwMThkMGRjNGZkOGYxOWM5IGxlZ2FjeS10cnVuaworNTE1MyA5YmRjMjdkMTUxYmFhNmI1ZDRiYjBiOTY1NjE3NmU5OTMzZDk4YmRmIGxlZ2FjeS10cnVuaworNTE1NCAzNDdjZjBlNDkyZDgxMWQ1MGM1YzI4MGM3ZjY1MDEzMzlkNmI4YTVkIGxlZ2FjeS10cnVuaworNTE1NSA3MzM1YzViM2I0M2JkMjQ0YjI5MWE1YWI4YmI5ZjU0MTMwNzY3OWQ0IGxlZ2FjeS10cnVuaworNTE1NiBjMWY0ODg1OGYxODYwZmFjMzBlNjU1ODU1Y2IwOWU2MmUwNDMyNWEyIGxlZ2FjeS10cnVuaworNTE1NyA5MjVkMWJmY2Q5MjU5M2QwYWFhNDYwOWU2MjEzOTgyMzdmNzk5MGVkIGxlZ2FjeS10cnVuaworNTE1OCBlMWQyM2E2YjkzMGI4MDdhNDdlZDBiZjM5MWQ5YTBhNDNiNWI4ODVmIGxlZ2FjeS10cnVuaworNTE1OSAxYWY5MjIwYzZkMTlkOTQ2ZjE3Y2I5Yjk5YjI4ZTA0YTRmNWJiOTBlIGxlZ2FjeS10cnVuaworNTE2MCAxMTU3ZTE0MjcwZDY4NzY5ZDc4OTU5YjcxMmY1YjUxMzNiY2E1M2JiIGxlZ2FjeS10cnVuaworNTE2MSBlMDM5MzY1N2ZmYTQ3NzFkZDNhZWY0ZDc4MGZkNTIxNDFlNWIxOTQzIGxlZ2FjeS10cnVuaworNTE2MiAwNjIzNWZkYzFhYWYzYmRjNzU2NjcwZWZlZmI2OWExNGUwZjIwMDA5IGxlZ2FjeS10cnVuaworNTE2MyAzZmZiMzFjYzhhOWIzYTBmYWMzYWU0ODhkMzQ0MTMzNjA1YzI0N2ZkIGxlZ2FjeS10cnVuaworNTE2NCA1MzhhYjgyZjkxYTcyNzU0MTY0ODA0Y2IzZTgzOWQ1NDlmMDc3YTQwIGxlZ2FjeS10cnVuaworNTE2NSA2ZDkzYjRhMGY0Y2U3YzdlOGM0Njc4MGIyYTk1Mzg4OWE3OWM0MTBhIGxlZ2FjeS10cnVuaworNTE2NiAyZjQyZTI3MzgyZTlkMjM2OGEzZjVmM2Q4MDBkOTI2ZTE4MzIxNTUwIGxlZ2FjeS10cnVuaworNTE2NyAxMmQ4YzgzODU3MzVmY2FiM2ZiNTliNjgzM2VlNDA0ZGFkNzMzNzcyIGxlZ2FjeS10cnVuaworNTE2OCAxOTg2Yjg2OWUzYTEzMTIyYjA3YTlkNTUwNjQyYTFlMDVhMGI4M2E0IGxlZ2FjeS10cnVuaworNTE2OSBmMTJmZjEzMGUwYjVmNDI1NDU5ZjBlNzBiNjYxNWMwZGU0NDkyNGRhIGxlZ2FjeS10cnVuaworNTE3MCA3OTczZjUzODcyNmNhYWNmZTY3Njc0ZTk5YzdhNDBhMWRmZDY3NzIzIGxlZ2FjeS10cnVuaworNTE3MSA5ZWQ0NWRiZjI3NjU4YTBhZjg5YmM1YzJiNGY2MDRiZmVlZTI3MmUzIGxlZ2FjeS10cnVuaworNTE3MiA0ZTA3Njk0NDQ4OGFhYjg0ZWIzYjhiMDJhNzlmOGIxMzYwYjNjODAwIGxlZ2FjeS10cnVuaworNTE3MyAxMzA2ZTc2MWE2MjM4Mzc0MGE1OWY2MzlmMTg3NzlkYmI4YjY4MDRiIGxlZ2FjeS10cnVuaworNTE3NCAzNzNjMTYzN2QzMDEwNGU3Y2FmZWUxZDIxZjU2MjBlZDM0MjA0YjI3IGxlZ2FjeS10cnVuaworNTE3NSA1MDAzMjM0MzllYjM5YjNmNzAwYTQ4OTM3MWQyMDFiMTU0NGE4MzExIGxlZ2FjeS10cnVuaworNTE3NiBiNjg5ZTZmOTJmMTdhMTExMDAxMTJlMzNjMTA0OWU4ZDY3ZDVjYjgyIGxlZ2FjeS10cnVuaworNTE3NyA5ZmViMGIwYjUwYjYwYzQwZmU3NTI1MjQzMzdjNDZiZDQ1Y2IyNzJjIGxlZ2FjeS10cnVuaworNTE3OCA3NDc0N2JmZmI2YTRkMjdjODY0OTBhMGRhOTYyOGVmNTQ4ODJiMGFlIGxlZ2FjeS10cnVuaworNTE3OSBjZDlkODZlY2MxNzUyOTRjNmMxOWQ4OTNkMTRiMGU0ZWNiNGZjMDA2IGxlZ2FjeS10cnVuaworNTE4MCA3NWFmYWFjODU1NjcwN2NmMDNkNTdmOTljNTU2NzFiNGFkNDQ2ZjRmIGxlZ2FjeS10cnVuaworNTE4MSAyYTMxODc2ZjcxMDI5OTA1NmYwMmIxM2M4NzA4NWFlNmI4MDkxM2JhIGxlZ2FjeS10cnVuaworNTE4MiAxOWIxMTk1YTNhZjg0N2UxYTk2ZDY0NTI5ZjM4ZTNlNTg1MzJiODc5IGxlZ2FjeS10cnVuaworNTE4MyA2Yzg2NGFkNTE5YTM2ODRhZmEzYmM3MTk3ZGI1YTQ0MmUyYjIxMzRhIGxlZ2FjeS10cnVuaworNTE4NCA4ODljNmRhN2I0Y2E1MTE5ZGY3ZGFmMzAyNDM2ZjZiNDQyYjI0ZDBmIGxlZ2FjeS10cnVuaworNTE4NSA2MjY3YTVmMjIyYmZkZWQ1ZTM5M2U5YThiZDFmYWRkZDkzZWIzNTI1IGxlZ2FjeS10cnVuaworNTE4NiBhYmYxMTZkYjUyM2ZlNGRiOWI4ZmFmMDIzNjQwOTUwYjE0NzkyOWFiIGxlZ2FjeS10cnVuaworNTE4NyAzNjRkNGE1MjRjZWM4MjFkYmNlNzNlNjkxYzQ5ZWEyZWNjN2M4MmFlIGxlZ2FjeS10cnVuaworNTE4OCBhNWNlYjNlOTNmYTEyNzM1ZWYxYTEwY2YyODVmYzM3OGU2NTY1ODc1IGxlZ2FjeS10cnVuaworNTE4OSBhMGZjOTRiM2JiMjEyNzA0MmExZDBjNmM1YTM4YWQ4ZmZkYjgxNTgwIGxlZ2FjeS10cnVuaworNTE5MCA2YTllY2IwNWM2NzllZDhjNGJjNTcwZDdiZmE5ZGU1ODcyYmZhYzYyIGxlZ2FjeS10cnVuaworNTE5MSA4MjIyMDQxZjVhOTFkNTQzODQ4OThhNTJkNDdjMDgzZDI3ZGFlMmRlIGxlZ2FjeS10cnVuaworNTE5MiBkMDNjY2FlMTcwZWFmMjgyOWNmODNiZDQ5ZTY3YjMzNTRjMWM1YjIzIGxlZ2FjeS10cnVuaworNTE5MyBlODgwYzAxNjRhZWNlMjI2YjY0ZDY2NzMyYTNjODE0NDc4YzdmOTQ2IGxlZ2FjeS10cnVuaworNTE5NCBjMjY3ZTMzMTIwMzA4YTJhZTIxOWM1NzdjYzU2ZWZjYTIwOTIzYTU3IGxlZ2FjeS10cnVuaworNTE5NSA1YWY2ZGIxZjZjMGNkYzQyYWRjYjUwNTFmMmVkMDhmNTcyZjZmNzNhIGxlZ2FjeS10cnVuaworNTE5NiAxMGUxMDVlNGNmOWMzYjhmMDQ1MGFkYjc4YTQ3ODBmMGVmMzg4OGRlIGxlZ2FjeS10cnVuaworNTE5NyA5ZjgyYTZiYjAwMTBkYjYyY2I4ODUwOGU5ZTc3MjhhNTgxMGE0NTgyIGxlZ2FjeS10cnVuaworNTE5OCBkYWExNTBiM2E2ZTQzZTEyYjNlMTU5YjRlNTBjOTVmOTVhZDRkYWM2IGxlZ2FjeS10cnVuaworNTE5OSBkYzY0ZGY3ZjFhZDY5MDBmNTYxZDQyZjJlMzA5MWU5OWQ4NWMyMjIwIGxlZ2FjeS10cnVuaworNTIwMCA2ODZmNGJmYjRkYTYyMjg5YzA3ZGUyZDBhMTE0Yjc1Y2IzODlmZTZjIGxlZ2FjeS10cnVuaworNTIwMSA5MDI0MGU4MTliZWNiOTkxYzI2OGUzM2E4NzM3MzU5YjQyZmNlYzBhIGxlZ2FjeS10cnVuaworNTIwMiAzN2M0OGZkZTYxYjhlZDg1NjJlNjM1MDhhNWFkODAyNDNiZDBiZGFhIGxlZ2FjeS10cnVuaworNTIwMyAzY2Y4OTZkMjRlNTBkYmI0Zjc0MDJhMTM1ZTA1ZjhjZmI1NzQ2NmJkIGxlZ2FjeS10cnVuaworNTIwNCA3ZGY2ZmNiNDI2ZjUxNDc5YjllMDU3NGU2ZTVkZGY4YmNkZWMzNDBjIGxlZ2FjeS10cnVuaworNTIwNSA4MGI1YzgyMjcyYTI1YzFlZjg1MTMxNGUxYmY5MmQyODU5NDQ2YWVhIGxlZ2FjeS10cnVuaworNTIwNiAzZTM3MGE0YjEwM2JlMjA3OWM3ZTJiOGJkYjU1NTBmOGFlYTc5NzM1IGxlZ2FjeS10cnVuaworNTIwNyA5ODJhNWJkNmQ0NmQwNzY3MGYyMDhiOGMzZjM1ZDA4MGU3ZmUyZWQxIGxlZ2FjeS10cnVuaworNTIwOCBhODI3ODAxZWQ5NjMzODRlYWIxNmZkZmUwZWUzYTNjMTljMWZiZTk4IGxlZ2FjeS10cnVuaworNTIwOSBmMTg3OWIxYTJjMmFlOGRiN2YzOTUwOGNiZDAwOTViOTRhODA5ZGRkIGxlZ2FjeS10cnVuaworNTIxMCA0ZjFiMGNjNzM1MDdkNjcyOTU5OTVjNTkwZTYwNTRhMDE4NGJlYWZkIGxlZ2FjeS10cnVuaworNTIxMSAzZDVlYzFjMjIwNTUwMjIxNTZlOGZlZTkzMDYzNWRkZTYzMDhiMTQ0IGxlZ2FjeS10cnVuaworNTIxMiA4NTNjNDg2ODkzYjgyY2U5NWNlYzEwYmU0ZjhmZWE3ZDRlNDE0OTBhIGxlZ2FjeS10cnVuaworNTIxMyBlNDE2NjlhMWRlYTAyNGQ5YmRlMDIyYzdmM2I1OWIzYzI1MGUzMzc1IGxlZ2FjeS10cnVuaworNTIxNCAzOWNkMjU2NzhiNDFhY2Q0MTY0MzZlMTkwYWVmZDBhNWU0NzcyM2JkIGxlZ2FjeS10cnVuaworNTIxNSA5NTE2YmFkOTc5NjEzMTI5ZWQ2MGYwNzFiMzY5NzAyODYyNjEzNjE4IGxlZ2FjeS10cnVuaworNTIxNiAwYWYwMWYzZTA2Y2M5ZTRhMzM1NWY5NTU1MzFlYzJkZjkyZGY2ZGIxIGxlZ2FjeS10cnVuaworNTIxNyBhZTY0MDAzYjJhNzU2NTFjNGRlN2FiYTBmMGVhNTY3YjAyYzkyNTQ5IGxlZ2FjeS10cnVuaworNTIxOCAzNTRlYmRkZDM2MmIwNGM3NmNlMzc1MjE4OThmZmRlMGJmZTY4MjQzIGxlZ2FjeS10cnVuaworNTIxOSA0Yjc0YjNiNDMyNjliNzFmNGI2NjBmODViYmVjMmQzMzZhZGRmNWZkIGxlZ2FjeS10cnVuaworNTIyMCBhMTA4N2FhNjQxY2Q5NWYwZjA4MDNmMDE0MTZlYjAyZTdjMDljNjE5IGxlZ2FjeS10cnVuaworNTIyMSA0Mzg5YTYwZmVkY2U2NjFmZGFiNzcwMDcxZjhhOGU0NGY5Y2IyNjhiIGxlZ2FjeS10cnVuaworNTIyMiA1MjE1NjM1MmZkZDZkMzVjZGY5ZjMyNGE4ZGM4NWM5ZDg1MzkyMGU4IGxlZ2FjeS10cnVuaworNTIyMyA2Y2ZkNjk1ODU2MzZmMDJlZmVjMzlhY2UzNWZjMTRiZDhiODEyMmQyIGxlZ2FjeS10cnVuaworNTIyNCA2OWFiYTZkOWQzNzgzNTI2ZTM0YWNmNzRkMDIwZDI4ZTZlZjg2YWU1IGxlZ2FjeS10cnVuaworNTIyNSBhYWY5MDJjZGZkYzRhMmEyZDdiYTViMzFlZGNjYTk5MzVlMDQ0OTBiIGxlZ2FjeS10cnVuaworNTIyNiAxYjllOTAzNTM1MjkxMTkyMTYxMzNiZjEyZmMwNGI3MzU4NDc1OWM2IGxlZ2FjeS10cnVuaworNTIyNyBiNDBjYWJmZGM5MWRlMjViY2VmZWNmMjZkOGE3OTgyZmE0NmIxNjI3IGxlZ2FjeS10cnVuaworNTIyOCBiZTIxYzNlMGNjMDNmNDhlYjZhYTRhMjBhZDRjNWM0MTAxNjJlYTEzIGxlZ2FjeS10cnVuaworNTIyOSBiOTU0ODk2MGY5NDUwYzlhZDA5YmQ3YmQzY2FiOWNlYjlmMzkxYjM3IGxlZ2FjeS10cnVuaworNTIzMCBhYzZjOGIxMjE5ZTY3MWNkNDU1Zjk3ODVhNTU0NDYwYWUyZDZlNDFkIGxlZ2FjeS10cnVuaworNTIzMSA2ZDhkOTgxZWY2YzQxNTFjMzY2ODY1ZDYxYjQ1ZDRjNjA0MTllOWVlIGxlZ2FjeS10cnVuaworNTIzMiBmZWNjOTM5ZjRkNTk1N2NmYjdiMWU2MGI1ZDU0MWM1Yzk5NzgxZjI4IGxlZ2FjeS10cnVuaworNTIzMyA4ZWNlOTIyN2ZkZTEwNGQ5ZmVkMmFhMjdjMzA4ZWIyZDI5ZjA5NzYyIGxlZ2FjeS10cnVuaworNTIzNCBhMGE0YWZhMzlkN2EwMWNkNGYzNjVhNGI4YmViZDE1ZTk4OGNlNjhhIGxlZ2FjeS10cnVuaworNTIzNSA2YTE2NTZkYjdkZGVlY2I1OWY5ZmZmMmNlZDZhNjI2MmI5NTQzNDEwIGxlZ2FjeS10cnVuaworNTIzNiBkYzJhZGY3OWU1MjNlMTAyZWM1NzJmZThjNDc0Nzk0NTVmNjQxNGI3IGxlZ2FjeS10cnVuaworNTIzNyAwZTVkYWZiODVmYmQyYmI2M2I3MmQyOWZlYjk3ZTlhNjU5ODlhY2UwIGxlZ2FjeS10cnVuaworNTIzOCAzNTQzMmM5YTg3NGUyYzBkMWM2ZmVlOTZjZTRiNWU3ZGVmMTI2MTVmIGxlZ2FjeS10cnVuaworNTIzOSAxYTNmZjAxNDhkZWNkOGZmNjQ2NzkzZTRhNjU1YTE2NDM4NzU2OTA5IGxlZ2FjeS10cnVuaworNTI0MCBiNzM1ZDMzODY2NTFhMDU3ZDdiMGI4YzlkZDU2YjIzMDI0OWU4ZWJhIGxlZ2FjeS10cnVuaworNTI0MSBmZDc3N2FmNjdjMjMxMGQzY2NhOTE4MzJlNDllZWNhZjAwMjM1NWVmIGxlZ2FjeS10cnVuaworNTI0MiA1YmMwZWRkNWIzZjkzMmI0N2Q0OGY2MDJkYWZmYjI2NjdmOGIzNmVmIGxlZ2FjeS10cnVuaworNTI0MyBiZjFkZWQ3NTk2MmQ2MjA2MTU1NzVkZjExNjRlNzk3NWFhOWY4NTYwIGxlZ2FjeS10cnVuaworNTI0NCAxN2ZkZWMyZmIzMDlhOTFlYjFhZWVjZjE1OTU4MDIzOGI4MTQ3ZGFkIGxlZ2FjeS10cnVuaworNTI0NSBhZjdkMGZlYTNmYjJhMmMyYWUxZTIwNDg3NWVlZGNmYTZkZWUzOTZlIGxlZ2FjeS10cnVuaworNTI0NiA0MTEzZjRmYmFhZTUzNzIwMmQwOWExNmUyOTRkYjlkN2ZhZDNjYjhiIGxlZ2FjeS10cnVuaworNTI0NyAxMjAzZTU4NDIyNTVjZTY0ZWYyZjNiYTlmYTI3NjE0MWUyOTQzOGI3IGxlZ2FjeS10cnVuaworNTI0OCBhNWQzNjFlMmIyZTIwYzZkMGJjZDUwNTkzZmM4MTRiODhhNDYyYzRjIGxlZ2FjeS10cnVuaworNTI0OSA5ZWM0NGUzN2Y2YjEzM2MzNmFjODY3YmUzMDQ0NWEyYTJjM2IxNTk0IGxlZ2FjeS10cnVuaworNTI1MCAzYjdmYTU2YTNiOWJjYmZiNjMyMDE3MzlkMDg3NDZjZjg1ZDA0ZTU5IGxlZ2FjeS10cnVuaworNTI1MSA1MGIyZjgyZTZmMGVhNDdhZGI5NzIxMzMxODZlMDA4YzYzMDljNzE1IGxlZ2FjeS10cnVuaworNTI1MiAwNmYyMjhkNjIzNmU0Y2Y5YWRmNjhiZTgyNjRmNTQ4NmJiZjA3ZjlhIGxlZ2FjeS10cnVuaworNTI1MyA3YzNlNGYzZWUxNTJmODhjNDkxNjUzZTlkNzAyNWYxNDIwMTU4YTNjIGxlZ2FjeS10cnVuaworNTI1NCA5YWFiNGViMmIzZjk4MzdiOGRkNDg4YzY4ZGJlOTAxYjdkODI4OWVkIGxlZ2FjeS10cnVuaworNTI1NSA0MTU2NTQ1NmJjMjIxY2NjNTlhZGI0YWJhYjgwZGE1NWEwOTcyNmE4IGxlZ2FjeS10cnVuaworNTI1NiAyNGZjMDYxNmE2OTZjODI5OTQ5ZjBmZTI5NjdkYTA1YWE5YzllYTY2IGxlZ2FjeS10cnVuaworNTI1NyBiYWYwYjliN2MyYTVhYTY5MzhjZDZhOTU4YjVhODAyMzM4ODdlZDIzIGxlZ2FjeS10cnVuaworNTI1OCBhZjNhYWI2YjA3YzQzYTk1NGU3MmJiNTE0ODEzYzU0MmMwNTQ0MWEyIGxlZ2FjeS10cnVuaworNTI1OSBiODkzN2U3NGZkZjU1MWMwMzIxMjMyZmIzNGEzMGE2NTk5MGQ0ZWZlIGxlZ2FjeS10cnVuaworNTI2MCA4MjNmM2E4ZWNmZTQxOTM0NzAxYmNmMzhiNDdjMTJjZjhjYzg5YTY3IGxlZ2FjeS10cnVuaworNTI2MSBlYTM4YzM2M2RlNThiNzViNDllMDM2ZGMwMjdmMTFlY2U1YTc2ZWI1IGxlZ2FjeS10cnVuaworNTI2MiBlYmMxNzE0ZGM3MzhiZGRjMjQ0NDMxNDg1NzI4MjUwOWE1NDRhOTRhIGxlZ2FjeS10cnVuaworNTI2MyA3ZjJjMGU3ZWY4NDI2MmM1OTU4NjQ2MzQyZjg2OGYzMzM4Y2FiMGJmIGxlZ2FjeS10cnVuaworNTI2NCA1OWMyYWNiM2U3MDI1NDYzZjk5ZGZlM2FhN2UzNWVjMzk2YjBlNTg0IGxlZ2FjeS10cnVuaworNTI2NSA0YTk5OGIxYTMzMWYwYWU5ZjBmMzBjN2IxZTM4NzVhMDU1Y2E0ODdmIGxlZ2FjeS10cnVuaworNTI2NyBhYjNkY2E5N2ZmYmViNjM1YTE2ZWM1ZWQzOGZmNDVmNjJmODg4MDhmIGxlZ2FjeS10cnVuaworNTI2OCBlOTExZjJmYjE3OWMyYzMyY2FmOTIzNmJiZTIyY2RjMjNhZDVhMWEwIGxlZ2FjeS10cnVuaworNTI2OSA3NTBhMmRkOGE0MzdiZmM4YmQzMTk5YzhkNzAwM2MyYjQ1NDljZDExIGxlZ2FjeS10cnVuaworNTI3MCBhMjM2M2I2ZTljODZlOWFiYzUzNjkzYjZiNTk4NzA3OWRlYTJkNTYyIGxlZ2FjeS10cnVuaworNTI3MSA2MGM1Nzc3NzM2NmY3NTVhOTcxNDhmYjUwYzNhYmIwZDlkOGRiOGU5IGxlZ2FjeS10cnVuaworNTI3MiBiN2EwNmRiODVjYWZjZTQxM2QwYzU1ZGNkOTI1YWYxZDZjZjI3ODFiIGxlZ2FjeS10cnVuaworNTI3MyBkNzZhNzE0ZDFjZWFhYWRlMDA3ODA4MTRjM2M3MmJiOTMwZDU0NmE3IGxlZ2FjeS10cnVuaworNTI3NCA1Y2E1ZDc3YWZkMjhiYWM3MzdlYjBhYWI5Nzg1ZTQzMWVkZGJjYjRkIGxlZ2FjeS10cnVuaworNTI3NSA5MzE4YWM1MTY5MWU2ZDg2Mzg0ZmZkNDQzMGQyMTY0YTI2MTBkMzQ0IGxlZ2FjeS10cnVuaworNTI3NiA2ZmZjYmUwZmU5ZDNjZDAwZjJmZTMyOTgzNjg3NjM5MTE5YzJmOWI4IGxlZ2FjeS10cnVuaworNTI3NyBmYzIxOTBlYzFiZWFkMjg3YmMwNmUxODExMzI0NmIwNmY5ZDY5ZjE2IGxlZ2FjeS10cnVuaworNTI3OCAwN2ZjNGZlZmI2ODM3NTk1MWVlNzYwYzhhNTE1M2MyMzQ2NzE0ZGVjIGxlZ2FjeS10cnVuaworNTI3OSBmYjNkYWY5YjI0NTZkYzFhM2Q5OWY1NmY3OGM1ZTYyNzBlZWFmMWU4IGxlZ2FjeS10cnVuaworNTI4MCA5OTliNWJkYzE4Y2U5OTZiMDJhMDc2YWE3YzBiZjBhOTUzYWIxNDUxIGxlZ2FjeS10cnVuaworNTI4MSBjNmZlODBjZTdjMjA5M2ExYWNhNTVkZjBhYTJjY2UwNWRkOTM5OWIyIGxlZ2FjeS10cnVuaworNTI4MiAxZTgyZGQ2ZGZlMmVmNDE2ZjRiOGEyOGFmODRmZjk4NDNiY2JhMDJmIGxlZ2FjeS10cnVuaworNTI4MyBjNGMzOWQxNzFlYzNiMDYzZDZkYmRhMjY4YzJiMWY1NWY5NTdlMjgyIGxlZ2FjeS10cnVuaworNTI4NCA4YjhmYjI0ZDQ4Mzc5NGYyZTkzMDMxMzkyZTkzMjA4MzExZDkzMzdkIGxlZ2FjeS10cnVuaworNTI4NSBjOWI3Mjk3YTA3NTg3MjBiN2NhNDMyNWUwZTQyMTdhYjEyOWMwNzk5IGxlZ2FjeS10cnVuaworNTI4NiA4MjI1YzY1ODFiM2QzNmUyNWVhMTA2ZDI0NTQ5Zjk4YjI5OTQ0Yjg2IGxlZ2FjeS10cnVuaworNTI4NyA2OGQ3ZWFlNmNiZDZjNTY3NTEwNDk4Nzk2MThiYWJhNTI0OTUyYjNlIGxlZ2FjeS10cnVuaworNTI4OCA0M2NjZmNkOThlODA2ZWRhZDNmYWFhNmI0Zjk1YzRhN2JiMzI3YjkzIGxlZ2FjeS10cnVuaworNTI4OSA0MDdjNzg0NmI4ODZiODU4YmY4ODAzODRhMmYyYjM4NmVhNmQyMmE0IGxlZ2FjeS10cnVuaworNTI5MCAyODJiMGI0YzFlZWE1OTBiOTBhNWZmMTA5ZjM2YzFkNjFlY2U1Mzc1IGxlZ2FjeS10cnVuaworNTI5MSA2NWM3MTA1ODY4Zjg4OTk2NGU4ZTQ3ZTM4MTJlNjcyYjMyMWUyOTNlIGxlZ2FjeS10cnVuaworNTI5MiBiZWJiMGVhN2RlMjAwY2VjM2JmYTJkZmVhM2M1ODM2MGJmODU3ZmE4IGxlZ2FjeS10cnVuaworNTI5MyBjZDllNjEzNTI0NGE1NzA5MGE2NzI5ZjFiNTIzODgzNjQ1ZDA5NTFlIGxlZ2FjeS10cnVuaworNTI5NCBmZjFmYWE0Y2MxZGZiYzg5YjdhZmY4OTM5MGVhMzY0YmFmMDIwNzZhIGxlZ2FjeS10cnVuaworNTI5NSA1OWE5Njg5YzExYThiMDE0NTE4Y2M0MzBhYzI1ZTZhN2YyMWIxNTdlIGxlZ2FjeS10cnVuaworNTI5NiA5NDNlMWM0ODA0ZDgwMDYzNWFjOTc2NTNlMWZiYzNiYTkwNTIwMzBlIGxlZ2FjeS10cnVuaworNTI5NyBiZDc5Y2Q3NjhmZjg4MGU3MWRlODYxNjA3OWYzMjBjOWE2Zjg0NTM0IGxlZ2FjeS10cnVuaworNTI5OCBlZWRkNmMxZjNhZTdlNGNiZDM2Yzk2ZjhkMTk5YTEwYjJjNTllYmY2IGxlZ2FjeS10cnVuaworNTI5OSAxZmQ4ZjMxNmNiZTkwZjg5NDAwYzg4NTNiOTE4NzIzMmMwMGY3NzBmIGxlZ2FjeS10cnVuaworNTMwMCAxNjQzOTk3ZjE3MThhYTY0ZjUzMjBlNGNjNzdlZjI1MjM5Zjk2MTIzIGxlZ2FjeS10cnVuaworNTMwMSA0ZGVhM2Y1NTQ1Y2YzZDkzNTJmZTQxOTkwOWQ3MzQ0MDVjNmZlZDNiIGxlZ2FjeS10cnVuaworNTMwMiA3YzdiMzcwNGE2OGZhMjExMGMwNzEzYTI4NTM1YzExN2ViZThjOWI4IGxlZ2FjeS10cnVuaworNTMwMyBkOTJlZjk0YWZlZmJlY2VlNjZiODExMTM5MTg0OGViMjYwZjE3MDY1IGxlZ2FjeS10cnVuaworNTMwNCBiOTg4YTRhY2E2Zjk2MGEyOGIyOTVjYzhiYTE5ZTU2MmQ4OTA5MDUwIGxlZ2FjeS10cnVuaworNTMwNSA5YjFhMzI2NzI3ZGZkNzcwYWFlYTA3ZDA0YjlmNGMxZTZmOGYzOGViIGxlZ2FjeS10cnVuaworNTMwNiAyYzczYzhhYjhiODJhZTgyZDQ1ZjgxZTgzMDQzOGE1ODBiODZlYzgxIGxlZ2FjeS10cnVuaworNTMwNyBkNTM5OGFjYWZhMmNjYzkzZWViMTU2M2E1ZDRhMGFlMWU4YjEzMjgxIGxlZ2FjeS10cnVuaworNTMwOCA2NDkyOGY2YThlODBlMDZjZTI0MDE5YjdkZDdhNjFiZTgwNDBhYmVmIGxlZ2FjeS10cnVuaworNTMwOSA0MjA4NzRmN2Q4YmQxZmYwNDg5YjQ2YTJlMTk0ZmVhMzgwYWY2MjIxIGxlZ2FjeS10cnVuaworNTMxMCA4ZDkyYTNiYjljMWZmYWRjYjdjMjFhMWU1YTNkZWUyNDljOThiNzdjIGxlZ2FjeS10cnVuaworNTMxMSAwMjYxYmY1YjM4MTliMDNkODNmMjU0NTYyOTQ3MjQ0NjM0NjA0MDI2IGxlZ2FjeS10cnVuaworNTMxMiAwNTFiYWNhYjU5YWZlMjVlMzA2OTgzZmU0MGI2MWRjMTUyZjhmYmE1IGxlZ2FjeS10cnVuaworNTMxMyBlYWU0YjJiYTcyMmViNGM4NGMzZGVlOWUzMTRkMTU4OWFkYTU4M2ExIGxlZ2FjeS10cnVuaworNTMxNCA1NjBhY2MyNWY4OTY2MDMzMmEyZGIwNjY5MzFhN2YwNGVhMDg2OWJmIGxlZ2FjeS10cnVuaworNTMxNSA0ZjZkNWZlMTk4MTIyZjNkNjJkZDY2YWM5NmE3OTZlMTZmNGQyMzFkIGxlZ2FjeS10cnVuaworNTMxNiA5N2NmYzQ2ZTMzMDJjMTY2ZDU3YmQzNWE5YjkzY2NhYjJkNDE5ZWNkIGxlZ2FjeS10cnVuaworNTMxNyBlMzc5NWRiNGFkZjg5OGZjMjNlODVlMmE1ZjJjYTZmMTQ0ZmJhMDhjIGxlZ2FjeS10cnVuaworNTMxOCBiZWVlZmZmMWM0NDI2NTMzNjQyMWYwZGFmYzdkNGI5OGZlOGE3M2I0IGxlZ2FjeS10cnVuaworNTMxOSAxZWVlYmEwOWEzMDY0OTcxYWE2ZDNlMWNjYjU0YjkzMzg4MmRmZWMzIGxlZ2FjeS10cnVuaworNTMyMCBkNDI5NDFkM2E5NWY0NWY2NjJiNDc3Yjc2M2M1ODNhYjlkYzJlNzMyIGxlZ2FjeS10cnVuaworNTMyMSBkZDhhMzBlNWY3NDQzNGMyODllNjUxMWNhNjgzMWYwNDU4MjI2MGQ1IGxlZ2FjeS10cnVuaworNTMyMiBlNmJlYzE0OWE4ZDcyMzk3ZWY1ZTNiOWRlYjUxYzkwYzRjMGVmMjAzIGxlZ2FjeS10cnVuaworNTMyMyBhN2FmOTcwYTk0YTQyNzJiY2MxZjQ4MGQ1NDQ0YzhmMWMxNGViODI1IGxlZ2FjeS10cnVuaworNTMyNCBlZWJiZGJlZTU0ZjkwMjA3ZDZmMzlmMmQ0ZjczMzRkYzgzMWEyNTcwIGxlZ2FjeS10cnVuaworNTMyNSBlYjFlZDRkODQ2MjkwZDUyOWNhMTg3YWNlOWM4YzRhYmQ5MWIzYzZkIGxlZ2FjeS10cnVuaworNTMyNiBiYTJiMzA5NzJmZmVhNzM1ZTQ3OTViOWNkNmNhMjYyZDRlNzVkOThmIGxlZ2FjeS10cnVuaworNTMyNyA2YWU5YjM3N2U1MjJhNGVkMDIwYTE4YjU2ODg5ZTUzMTJmMGIxMzBlIGxlZ2FjeS10cnVuaworNTMyOCBkYzZiM2U3NmNjZTY2NDI3NzdlMDU4MWQ0OTYzOWNjMWQwMGFiMGUzIGxlZ2FjeS10cnVuaworNTMyOSBkZjhjZWRhODQ1NDVlNzUwM2MwOGNmYWVkYTVmM2VhYzc1NWU1NzBhIGxlZ2FjeS10cnVuaworNTMzMCAxMGUwMDdhZWYxY2ZmMTMwYTdmYWU0YzA2MWZjNjVmZmE4NDczOWVhIGxlZ2FjeS10cnVuaworNTMzMSA1Zjk1MTkxMmU5OTU5MGNiNGYxZjA5Y2UyMmVmNGVmNTg1MWRkZjE0IGxlZ2FjeS10cnVuaworNTMzMiBkNDAyOTBlNDI0NTU1NmU5NTc0M2EwNmQ0YTU0MWE3OWNlZWIwNzg2IGxlZ2FjeS10cnVuaworNTMzMyAxNDExMWQ2NjU3N2RkNTQ2NGFmN2U4OTkyMzE0NjQ2MzkwZGExYjcyIGxlZ2FjeS10cnVuaworNTMzNCBhMTY5ZTY4NzM0ZmYxMGViMTRmNzY0ZTlkNmQ3ZGRlNzdiYjhkZjQxIGxlZ2FjeS10cnVuaworNTMzNSBmNjU3ZDY3ODEyYWZhZThkMDI1OGRhNDE2MDdkZDNmY2ZmNTljNGM4IGxlZ2FjeS10cnVuaworNTMzNiBiOWE2MjUwMWU3NmRjODllOTllYmZiMmQ2ODYwMjFjNDE1MjcxMWE4IGxlZ2FjeS10cnVuaworNTMzNyA1MjBlMTg1NWEyNGQ5MGIyMWQ1Y2RjMmM2NjA4MzlhOWFmZmIzMTZlIGxlZ2FjeS10cnVuaworNTMzOCAwNTM0MDI1Y2VmZTU1NmZhYzdlYzM0ZDQ3OTAzOWVjYmJiZjUyYzc2IGxlZ2FjeS10cnVuaworNTMzOSBkM2IwN2JhM2UxMmRmM2I4Mjc2MTQ1MWIzMGMzODdhNmM5NmRiZDQwIGxlZ2FjeS10cnVuaworNTM0MCAzMTU3NjBiYTAwNDFkMDRjYmJiNzVlMzIxZDI4NmQ0YTM3ZmZlOTI1IGxlZ2FjeS10cnVuaworNTM0MSA5MjdmNDgzOWZiZmExNDhjNTc1NzgwMDM5NjljNzNkYmM4NzNiYjkyIGxlZ2FjeS10cnVuaworNTM0MiA3MTU4NGZlNzc0OWMzNWZkOGVhZjU3N2VlNTZhYmNiMzU3NWMxYWU3IGxlZ2FjeS10cnVuaworNTM0MyA4NTE0MGIzNTQ4OTAxZjg3NzkzNTk4ZDlmMjA5NGJkYmRmYmFlZDdhIGxlZ2FjeS10cnVuaworNTM0NCBiZWVlYTk3NTc4Nzk4OTc4OTliZjI0NzhkYjFlMmQ0YWIxODIwMjZhIGxlZ2FjeS10cnVuaworNTM0NSA1YTUyMTljOGMyZTY3NGZjNDBmYmZjYmMwNzFiMDc2ZWMxYmEzMjQ5IGxlZ2FjeS10cnVuaworNTM0NiAzNjM3ZGE0Yzk4Y2IzMTAxNDdmMDU4ZWFlMzYwZGU5ODgzMmZkMzA5IGxlZ2FjeS10cnVuaworNTM0NyA2ZjFkZGYxMTM5ODJhZGExOGE2YjM4YjllN2ZmZTc2MjE2ODRmM2IwIGxlZ2FjeS10cnVuaworNTM0OCBhMGU4MjQ2ZDUyMzc4ZDUxODkxZTYwYTA2OWZjZWJjNmFhMjcxOWRmIGxlZ2FjeS10cnVuaworNTM0OSBmODhiY2NiNTQ4ZWY0YzE1NTRhNGI4NDExNzAxMjdhMDY4ZTYxNjdiIGxlZ2FjeS10cnVuaworNTM1MCA1MWM5Y2ZmZjMxZjNlMTdlYTM0NzIxYjAwMGJmNmFjODMxNTdkYTJjIGxlZ2FjeS10cnVuaworNTM1MSBlMDA2ZWQ4OGI0YWE0NjdkZWQ3YmFhMDYwMTlkNTk4MmQzMmQ4MmYxIGxlZ2FjeS10cnVuaworNTM1MiAzNjNhZjdlM2VkMmQyM2NiNzliNTk3MmJlNzdiYTJmY2Q1ODJmZDQxIGxlZ2FjeS10cnVuaworNTM1MyAyMWUxMDU0NjBhNDk5OWU4YmYxN2FiMTIxZjZmMGVmZmI3NDVlNTQwIGxlZ2FjeS10cnVuaworNTM1NCBlYzBiNDI4ODkyNDNhN2Y5ZTZiYzc1NjgyMDIzYmMzODc5MWVjMWM3IGxlZ2FjeS10cnVuaworNTM1NSA2YWJkMTQ0ODU4ODRmNjFiOGQxMThiNmYzMTQwNWYzZDFmMTE2ODgyIGxlZ2FjeS10cnVuaworNTM1NiBlNTEzZjBkNjUzNjhjMWU1ODFhZDYxNmFmZDRlOTBjOTUzMDMyYmYyIGxlZ2FjeS10cnVuaworNTM1NyAwNGUxNjkwZmI0ZDExNzQ5NjJiMzdhNjFkYzgzMzQ4ZmE0M2YzZGVkIGxlZ2FjeS10cnVuaworNTM1OCA5NjRkNzZmNDlhNWVjYTk1ZThlZDIzNTU5N2U3N2U0ZWJhZDM5MTkzIGxlZ2FjeS10cnVuaworNTM1OSAzM2IxNTRiNmM2MWJiOWZlOWU0OGIzMDU3NTQxNTFkNjgyYzA4MWU0IGxlZ2FjeS10cnVuaworNTM2MCA0NTBhZDU0OTY0MDc3MDFkZWZjODA4NTE1ZGViYWIwMzEwYmNjMjQ5IGxlZ2FjeS10cnVuaworNTM2MSA0MDk1NzgyYzk0MGVhYzQwZThjYTU4MTQwYjA2ZDQ5OTljY2FhYjAzIGxlZ2FjeS10cnVuaworNTM2MiA4MWI0MTMyNGQyNmViOGU0NmMxNjQ5M2QxMDcxYTQ0M2ZiMDcwN2QwIGxlZ2FjeS10cnVuaworNTM2MyBmMGQ5ZjgwMGE0YWFjN2FkYTFlYjRiZTFmN2E5NWJkMDhkNDgxMGI3IGxlZ2FjeS10cnVuaworNTM2NCA0ZDY5ZmRlZTlmNWQ0MjlhODQwYTFjMTYxMjcyMDMwYTIxOTY5N2UyIGxlZ2FjeS10cnVuaworNTM2NSA1NmU2MjhhNzdjOGQ1OGEzMDA5MzNkZjRiYzRkNGYzYzM3NDQ3OTU2IGxlZ2FjeS10cnVuaworNTM2NiA2NWYwNmZjMzk5NjAwYjA1ZGE0ZjFiZmExOTZkOTY1Y2NjYjE0OGJmIGxlZ2FjeS10cnVuaworNTM2NyAwYWNiZDg1YmNkYmEzNjUzODgxYTRiMDA5YWE2NDZlYTViMGQ0M2FhIGxlZ2FjeS10cnVuaworNTM2OCA1N2VjMjRlMGYzNWE4MGYwMjY1ZmU5NzgzNGUyZTZjMGVjYmYwMzdhIGxlZ2FjeS10cnVuaworNTM2OSAxMzU4MWI0MTc4MzdiODQ1YmNiOTA5MDYwOWRiOWE3MzNhOWE2ZGY4IGxlZ2FjeS10cnVuaworNTM3MCA3MzhjNzQ2MTVhYzQ4OThhY2RjZjAzZGY3ZWJjZjkyYjBiMzAxYWE2IGxlZ2FjeS10cnVuaworNTM3MSAwMjRmZGQ5Y2NkZjI0MGJkNTRmZWJlYWUxMmY0NTQ1MTJjZTA3NzUwIGxlZ2FjeS10cnVuaworNTM3MiAwYWZkNDI5NjBhMWZkMzYwYjBmOTY4MWExMzZkNjZlODg2OWFiM2MxIGxlZ2FjeS10cnVuaworNTM3MyAyMTQzNWEwYjliMTE2YTQ5ODNmOGYzNWVlM2JhNmEwZjNiMmJhZTc2IGxlZ2FjeS10cnVuaworNTM3NCA4OTU3YmNlYmYxMmM0ZmIyOTZhZmUyNDM1ZTEwMmVlYWY5MGZhYTQzIGxlZ2FjeS10cnVuaworNTM3NSA2MTlmMzE2NThiM2JhN2IxYWEwZjMwMWM0OWEzNTg3YmNkOGM2NDI5IGxlZ2FjeS10cnVuaworNTM3NiBmOWIxMDY5YTNlMjY1ZDkwZGVmYmM4MDM3NjNkZjgxZWI4N2VhNDAwIGxlZ2FjeS10cnVuaworNTM3NyA1YTI2MTJmYjZjMGUzMWIwN2U2MjNiNWQ0NmI1YTAzZDIyN2QwYWY4IGxlZ2FjeS10cnVuaworNTM3OCA0MjlkN2UxYjFmMmI4YzM2ODJjYjQ4ZmRiYjFkN2UwZTAwYmYzMjJjIGxlZ2FjeS10cnVuaworNTM3OSBkZjdiMTVjMWU4Yjc5NmZmNGJjMjcxY2U5ZDM1NTJkYTMxNTcyODg4IGxlZ2FjeS10cnVuaworNTM4MCA1MWRkMDY1YTk3YTYxNGVjMjBiMDgxOWE4NjAzZmU0NDAzMWIzZDNmIGxlZ2FjeS10cnVuaworNTM4MSBlMTZlMThiOTYyNmM4ZjJlZWUxYWE2Yjc4Zjc4YzA5ODJkOGVlN2U3IGxlZ2FjeS10cnVuaworNTM4MiA0NTA5ZGZlMTliNjg2MGRmMWE1MjgwZDQ4OWY0YTQxNjYzZGFkMTc3IGxlZ2FjeS10cnVuaworNTM4MyA3NjRiMGZjODY3YTQ3NWM3Yjc0ODgxNzJlMDFhODMzZTgwMWVlMWI2IGxlZ2FjeS10cnVuaworNTM4NCA5ZmFkMDI5ZjgzOGZkMWI5MmYzMzZlOWFiNDM2YzZiMGI5NTAyZmNlIGxlZ2FjeS10cnVuaworNTM4NSBjZmE5YjNhODQ4NzJlYWY5ZDliMjY3MWMwMTQ0ZTJjZmQxMmY2N2E0IGxlZ2FjeS10cnVuaworNTM4NiA4MTFkOWE5OGUxOGFiNDE2MjdlMzhjMWU5M2JjNWUzMmY1MTIxYTI5IGxlZ2FjeS10cnVuaworNTM4NyAxNzdmNTc1NzA4YmIwOTBiMThkMTk2MTQ1MTE2NGM0NWMwOWQ2M2MzIGxlZ2FjeS10cnVuaworNTM4OCAwYzUwZWM4ZTgzNThlOGQ0YTA3NjlmMjJiNzRhNGU1NzBkODU3YzYxIGxlZ2FjeS10cnVuaworNTM4OSA0ZjA4MmJlNTkwMmFlMTUzODZlMTY3ODU0OGIzOWUxMzdkZjFlNGY5IGxlZ2FjeS10cnVuaworNTM5MCAxNzYzNTYwNGJkY2UxNWE0Y2IyY2M2MTU5ZDA2NjFmZDM4ZmI2MDBiIGxlZ2FjeS10cnVuaworNTM5MSA0NDE0NWVlYjYxMDBjOWMyNWVhZTE2ODc5MzkyM2E2NDE2MjgwM2U2IGxlZ2FjeS10cnVuaworNTM5MiA1ZWI4YmRlMzAwYjdlZGUxNDNiYTI5NjRmM2FhYTY4ZmFlMDEzOWI2IGxlZ2FjeS10cnVuaworNTM5MyA0YTUzNDgzOTM5YzFlYjk5MjkxODk2Yjk3YTI4YzNkMWU4MzIyMzYwIGxlZ2FjeS10cnVuaworNTM5NCAwYWQ5ZDEyM2ZmNTVkZjM0OTUyNGJjMjQyMzJjNWE5Njc1MjliMjFkIGxlZ2FjeS10cnVuaworNTM5NSA3OTJlMzlkZmUyMTYxNmE2NDJjNTQxNGQ1OWIyYmM1ZjRjOWMxNDFlIGxlZ2FjeS10cnVuaworNTM5NiA3ZDFlY2VjMjVjMDZlZGZhNDk4Nzk3MTIxOTUyN2Q5OTc1ZjhjNjRiIGxlZ2FjeS10cnVuaworNTM5NyA3MzkyNzkwMzI4YmJmM2ZkN2ZiMzAwNjJjMzdlNzI3YmVlZTQ1MTM4IGxlZ2FjeS10cnVuaworNTM5OCBkY2U5MTU1YjA0MDFlZDg3ZmE0NDk4NWM3YTAzMzcyOWEyZDAyM2M0IGxlZ2FjeS10cnVuaworNTM5OSBlZmJkYzUwZTdmNTRjNTNiNzI3NGVkMzNlMzViYTRlYTVmOTUxZGE2IGxlZ2FjeS10cnVuaworNTQwMCA3ZTEyNjUzMTJkZDQyNzUzYzg2ZWUwNjNhZTRhNmJhNzNmNjU3NjA2IGxlZ2FjeS10cnVuaworNTQwMSBjYjVjY2JiYTE4NTY4ZWIzODgyMzA0ZTJhMTNlODkxNzJiNjkyMmYxIGxlZ2FjeS10cnVuaworNTQwMiA4YWFiODNjYzYwYTA0MWMwNzY2N2M2MzM2ZDA4YmI4YzBjM2YzNWYzIGxlZ2FjeS10cnVuaworNTQwMyAwOTcwZWJkMzE1MzY3NDRlMzg5ZjM3MTJiNDgyNzJkOGFjNWQwOTA0IGxlZ2FjeS10cnVuaworNTQwNCAxZDg2MjZiYzk5YzcxMDI5MWI1MDA1NTI0NzM1MzQyYjc1OWJiODBmIGxlZ2FjeS10cnVuaworNTQwNSBmMDE3ZjVjZGI0YmRiMjg1NDllODkyNGY2MjQ4NDczNzE2ZTM0NjQ4IGxlZ2FjeS10cnVuaworNTQwNiA0ZGZkZjIzNGNkYThmNTAzMzIzOWE2YzJkZWM4ZDRiYjRlNzRhZTM3IGxlZ2FjeS10cnVuaworNTQwNyA3MDgyYzFhMWY5YWI5ODZmYzEyNGM4ZmQ2NmFjMWNjNjUwZTM3ZjllIGxlZ2FjeS10cnVuaworNTQwOCA5N2Y3Y2ZhYmUwN2U3YTk0MGRjYTVmOTFjZDgyYmQ5NjcwN2UwMjZmIGxlZ2FjeS10cnVuaworNTQwOSAzNzE1MjA2Mzk3ZmU5MDYwYmQ0ODI3MmQyZWI0M2ZkYWQ2ZWYwYmUyIGxlZ2FjeS10cnVuaworNTQxMCA4ZWRiZWFhMmJiZjdhNzAyZWViMzg0N2VjMGUyMDllOGJlZjJlYzYzIGxlZ2FjeS10cnVuaworNTQxMSBjMDk5N2I0NjIzNDRiNDA2NjI5MGUxMDg5ZTIxMGMxZTNkN2FjZjRjIGxlZ2FjeS10cnVuaworNTQxMiBmMTdiN2QwYTc0ODI0NGU5NzRmN2MxMDY4Y2UwYTIzMTYwNjQ3YTM3IGxlZ2FjeS10cnVuaworNTQxMyAxMGMxMDMwYjcwYWRlOGYwMTNmNTEzOTA5YTAxMmMxMDUwNTNkZGI5IGxlZ2FjeS10cnVuaworNTQxNCBhOTgwZDA3NjA1MmRhYmRjMTk3MmUxODY4ZTZjMDg1YmEzMzBjZTViIGxlZ2FjeS10cnVuaworNTQxNSAzMDI5ZTgxZWRiYzc3NWI5NjcxMTAyNDU5NzJlYTdjOWYxYWY4OTliIGxlZ2FjeS10cnVuaworNTQxNiBiYzA4MDMwODRlNjBhOTViZDdlYTM3YTAxMDU4ZWY3ZTBmYjcxMzg3IGxlZ2FjeS10cnVuaworNTQxNyBhMWE5YjczNjRiYzM0ODY2Y2ZiYjk0Njc5ZmNmNzJiZjI2NDQzZDJjIGxlZ2FjeS10cnVuaworNTQxOCAxMWQ4OTkxNGM3YjliMWYzZjVmOWNiMzBlNTI5NjllN2FjZmY0OTA3IGxlZ2FjeS10cnVuaworNTQxOSAyMWRmNDIxZjAzZmUwZDk2OGU1MjA3ZjU4OGU2YzA4NDdjMGJlNjQyIGxlZ2FjeS10cnVuaworNTQyMCA0NWFkMWE5Mzk4NmEwZWJkMmM5OTA2NDM0OWIzMmM0ZTVjYWFjMDYzIGxlZ2FjeS10cnVuaworNTQyMSBjNWNiM2E1MzkzM2MzNTFhM2M0M2YxMDIzMTQzZTUzMTVkMTYxMTM2IGxlZ2FjeS10cnVuaworNTQyMiA1MjdkMWIyOTI1MjUwNjI4ZWJjZGFiNThkYTk5YjFiZjQzZDgzZTVkIGxlZ2FjeS10cnVuaworNTQyMyA0ZDdmZDlmZjc5OGQ1NTE5OTVkZmQ0MmFlNGY2NzU4MDM4YzNjM2I1IGxlZ2FjeS10cnVuaworNTQyNCBjYzkyMjJiOTQ3ZWUwYTE0NzVlNGZhYTRkNjM2ZmYxYzFlNmNmMTA1IGxlZ2FjeS10cnVuaworNTQyNSA0ZjlkNGU3MzA1N2M3NjMyMzkwZDZkZTgxOTg1MmJiZjk1MGNjYWJmIGxlZ2FjeS10cnVuaworNTQyNiBlYjZlYjYxYjYwNmZmZDMyNTY5OTZlY2FjNmRmMTJkMmM3NzllMTkwIGxlZ2FjeS10cnVuaworNTQyNyBmM2Y3YzAxYmM5NjZjZDI3ODFmZjI2NjJmYzQ3NjYwNmI2YmQyZTIxIGxlZ2FjeS10cnVuaworNTQyOCAxYzkxOWQwMmE2NDU5NzU0ODRiYzc4MmNhYzM2MWRlZmQyNWExYTcwIGxlZ2FjeS10cnVuaworNTQyOSBmNzJhYmQ2MmQ1MDgzZjU3ZDVmYWEwNjYyYWQ4ODQ3MGQwOTkwNjIyIGxlZ2FjeS10cnVuaworNTQzMCAwMjM1MjczNDI1OTk2YTM2MmQ1OWEwYmFlZTNjYWI0YTRmZjU2OTkyIGxlZ2FjeS10cnVuaworNTQzMSAxMjJkMTQ5ZmE4MDE2NDYwNzU2ODQ3MjA1NDYwOTJlMmQ3ZWMzZTUyIGxlZ2FjeS10cnVuaworNTQzMiBkMDA3MmQxZGY4MmMyYjdmOWRlMDE5ZWZlYzA5NGIyODFlZDkzZTM0IGxlZ2FjeS10cnVuaworNTQzMyBmOWZiZmQ5MDMxNTMwMmRlM2Y5MWNiZTY3YmU0NGM3YzQ3M2YxYTQ1IGxlZ2FjeS10cnVuaworNTQzNCA3NDk1M2E0MTYwN2MxYTYzZTBhNTkzMTk1ODNjMDVhMzcwYzY4OTgwIGxlZ2FjeS10cnVuaworNTQzNSA1MjEzMDY2NzllMzQ5ZWZjMmZiZTEwYmZiYjIwNjBkMDFhM2RhODRmIGxlZ2FjeS10cnVuaworNTQzNiBjMDBmYWUzODBkYzc4ZDJhOWY2MGY1M2NmNWU3NjcxM2UxMDAxYjM2IGxlZ2FjeS10cnVuaworNTQzNyBjZmM2NmI4Y2EyMDI3MDAxZmZlY2I0Mzg3YmVkMjgxMDc3MGNjZWU2IGxlZ2FjeS10cnVuaworNTQzOCBkMjNkNzNiNGU1OGE5ZmZiMGM3MDNhMmQyZjQzODk3NmUyNzE1Mjg2IGxlZ2FjeS10cnVuaworNTQzOSA5OTk0NWZkYTcxOWRiMjIyMWI0NjEzNDA4YzEwMmI5ZjlkOWViNDZmIGxlZ2FjeS10cnVuaworNTQ0MCA5ODY0ZmUwNTllMGRjNGM1MDVhOGMxMjAyNmQ3ZGFlMTgwZDM5M2ZiIGxlZ2FjeS10cnVuaworNTQ0MSBkMWM0NThjODdmNGE2YjBlZGZhYzZiNDZmYjQ2MWI2MDU0ZjM3NDdhIGxlZ2FjeS10cnVuaworNTQ0MiA4MjM1NmJkZGY3MTJjZWJiZTZlMzE3ZjVjNzMxZWYzODMxMjBkMDcyIGxlZ2FjeS10cnVuaworNTQ0MyA0ZGU3NzkyMzJhYTRjMGE0OWQ2MTI4YjY3ZjNmYThmYmZjYzAwMDQzIGxlZ2FjeS10cnVuaworNTQ0NCA0NDE4NjZiZTJlYzk5MTZhMjBhZDc4NzkxOWM0YTNkZDBhZjhjNDk0IGxlZ2FjeS10cnVuaworNTQ0NSA3YTY3ZGJjYjZkODNjZjJiMGFiZjEyM2Q4ZGY0OGFhOWZiYjU3OTkxIGxlZ2FjeS10cnVuaworNTQ0NiA3ZWVhOWI0MjY4MDI0YjUwZDk5ZDQzMmJiNGYxYmI0OWY1MWJiNjA1IGxlZ2FjeS10cnVuaworNTQ0NyBiNmNmYTA2M2I4OWJiMGJiMTNlN2FmMjhmOWNkMjEzYWZmZjI3YjVkIGxlZ2FjeS10cnVuaworNTQ0OCA1NmFkMjQ3Y2JmY2JlZDAzYzNjMzNmN2E0Mjg5MDJmMTczYjBkNDIyIGxlZ2FjeS10cnVuaworNTQ0OSA4ZDI5MDc4NTZiMzc4NDcwMTM5YzFmZDY1MmMzZDNhYWQyOWUxYmQxIGxlZ2FjeS10cnVuaworNTQ1MCA3YjM5MTE5NjA1NjQxNWY1MjZkNGUxYTEzZWJmN2M0YWU5NzdiNGYwIGxlZ2FjeS10cnVuaworNTQ1MSA0YzFkODA5NTM5NTA5YjhlNmJlNzI0Y2QwMzA5YjZiZTRhMWMwOGJhIGxlZ2FjeS10cnVuaworNTQ1MiAwZDcxMDBmZmI2MWE3ZTczOGFmYjEwZjkxOWM1Y2M1NTE0NDhjZjNkIGxlZ2FjeS10cnVuaworNTQ1MyA3ZDI2ODM0MmRjM2EzYWM5YTQ3YTAzNGMyZDY5MDhiOWRiNDVjNjc5IGxlZ2FjeS10cnVuaworNTQ1NCBmOTMzYTUzMGMzOGYxNzA3MjY1OWRjMDNhNGRhNmRjZGJmM2M4OGQyIGxlZ2FjeS10cnVuaworNTQ1NSAyZmU5ZDAzNzFlY2QwNjcxYmI5NWEzMWIzMmVhMTQ2MzhmMmQ4NDc5IGxlZ2FjeS10cnVuaworNTQ1NiAwNGJhZGE4ZDY1ZGU0MzVkNTM4NmQ4ZTVmZGQwZDdiZjZhODdjY2YxIGxlZ2FjeS10cnVuaworNTQ1NyA5NDc3YTQ0NTdlNTY0MzMxNWMyMmZkZTVhOGQxYjc5NjRiMmUzZmMzIGxlZ2FjeS10cnVuaworNTQ1OCA0NDhlZGM5MjNjYWQ0MGQ3MDcyYWM2YzlmNzM4NmVlYWJiYTE4YWRmIGxlZ2FjeS10cnVuaworNTQ1OSBkMjk3YzcyMjA2MTM1ODQyNzdkNzRjMzQwN2Q0YmIyNDc0MjQyOTE5IGxlZ2FjeS10cnVuaworNTQ2MCA1ZDQ3NDlhNDcwYjRkMDIwMGI5Y2VhODdiODYwMWVhNGQ1YzA4NDM2IGxlZ2FjeS10cnVuaworNTQ2MSBhYzAxNTJmNjNiZGRmYjc5OGIxMTY1ZTdlNDVkZWYxYzhkZjM3ZGFlIGxlZ2FjeS10cnVuaworNTQ2MiAxYThkNmM3ZGQ1NjBmMTk1MGU0Y2I2YTc1NTFhZDM2NGE0NDEyYzcwIGxlZ2FjeS10cnVuaworNTQ2MyA1MTNhOTZhNTc1MGZiYTc1MTc0Y2UzYWUwMmQ5MDc5NTA3ZTBlOTNhIGxlZ2FjeS10cnVuaworNTQ2NCBkNGZmNDdkZjU5MjBkZmQyMTQ2ODM0OWVkNGUzNTE0Y2FkMjAzNTA1IGxlZ2FjeS10cnVuaworNTQ2NSA5YmNhOTRhMzZhMDgxMGFmMjA0ZDY4YzA2OTY3ODg5OWYyZmZhMWQzIGxlZ2FjeS10cnVuaworNTQ2NiBiYTJmZTVmODM2YTgzZGUyZDc4ZTVhYWQ2NWU1ZjM0ZDJhYmUwZTRjIGxlZ2FjeS10cnVuaworNTQ2NyA1NTg5NWI1YTMwMDdiNGJjOTFmMzBiYWFkZjk3YmU4ZjJiMzBjYzZkIGxlZ2FjeS10cnVuaworNTQ2OCBkNDZkODMxYmM1ZjMwMTIzZDg1N2M4MDc2NTk2N2JmZjkwZjY4MjQzIGxlZ2FjeS10cnVuaworNTQ2OSA1OTExZjI0YmNjMmRlMDM3MGVhOTA5YWRkZDlkOWZhODU3YWM1NTkxIGxlZ2FjeS10cnVuaworNTQ3MCA4OTg3Y2ZhNzU4YmJkNWI3ZDQ5ODAwY2QxODc3MTU1ODc4MTUxNzQ4IGxlZ2FjeS10cnVuaworNTQ3MSBiZWNkNTgxNjA5MTEwYmViYmVmZGRhOTFjZjdmY2Y0MTg0ZTBmYzIwIGxlZ2FjeS10cnVuaworNTQ3MiBhZDZmMDM5YTVjNDkyMmY4OTBmY2MwNDAxYWEwMGY4NTA2YWNkODQ3IGxlZ2FjeS10cnVuaworNTQ3MyAyMGNhNThlZGM4NTU0OGM4MGI1MTFhMDA4YzNkN2EyMDAwM2E0NjA5IGxlZ2FjeS10cnVuaworNTQ3NCAwMmYyYzUxOGFhNDZiOTQzNjZlY2IzMDFkOGZiOGFmYmQ1ODQwMjhiIGxlZ2FjeS10cnVuaworNTQ3NSBhNTEwMjJmMTk4MGZkNWExNWQ2OGEwZTliMzBlYzE4NjA0MDBlMDllIGxlZ2FjeS10cnVuaworNTQ3NiA3ZmI2ZjIwZTJiYTI5NDQ0ZTI5NDJhOTdhM2JiYmQ1OGNjNzBkNDRkIGxlZ2FjeS10cnVuaworNTQ3NyA2YWE0ZTkyMDlmYmQ4ZWRiNzA1YjcyN2YxZGIwODQzYmZhODFjMzgzIGxlZ2FjeS10cnVuaworNTQ3OCA3MmE2MWExNDllNGU2YzcwMTliMzEwMzJjNThkZTAzMGY1NTQ2NWYwIGxlZ2FjeS10cnVuaworNTQ3OSA2YjljYjY2MzQ4OTc1ZDI0MzIzYmU0Y2MzMmM5Y2VhYTc0MjczY2I3IGxlZ2FjeS10cnVuaworNTQ4MCAyMTA3Mzg4NjYxNjYxMjI4NTBkZGQ1ZGMzZmU4ZTEyMDFjN2NjNjJiIGxlZ2FjeS10cnVuaworNTQ4MSA1ZDNkMjk3MDQ2ZDJjNzAzMTljMmIzMGM2NmY2ODBlNDVlODRjNGI2IGxlZ2FjeS10cnVuaworNTQ4MiAyNjcxODQyYzcyY2ZjNGRjNGY0YTFlZGJhOGNlY2Y2ZDg0MDYyYjk0IGxlZ2FjeS10cnVuaworNTQ4MyA3YWUzMzI0NzI2MjljNGFmOTE1YzJiYTg1ZmU5OGExMjgxZDdhMWMwIGxlZ2FjeS10cnVuaworNTQ4NCA3Nzc0NDAwMzU4MTMzOTgyZTc3NmE1OWQ1OTA0NGIyMTBhMzVlMmNmIGxlZ2FjeS10cnVuaworNTQ4NSAyNzM5MGI1MzY2NDBjNTFiNDU0MGFmYWE5NDVhYWI1ZDBjYjQzNDk4IGxlZ2FjeS10cnVuaworNTQ4NiBkMjk1ZjRjOThjOGE2NDYwZTNkYWY2MDJlODFiYTFiNGQ5NjViN2ZlIGxlZ2FjeS10cnVuaworNTQ4NyBjNzY3MWMzNmM3MjVlNjg1YjEwYmEzZTczOTcyNWM3NzczYTY5NDE0IGxlZ2FjeS10cnVuaworNTQ4NyBlNjNkODNmODI3NTg1M2FhYWEzZDE5NzJjYjg2NTY0NTA1ZTY1NTgzIGxlZ2FjeS10cnVuaworNTQ4OSBjNWQ4NTI3MzVlN2Y3YjQ5MGVjYmNjYmM2MGZiNjNhOTdhMTRiN2MzIGxlZ2FjeS10cnVuaworNTQ5MCA4Nzg0NzIyOGIxNThkOTk3MWZhOWFiM2EyNWZlM2MyMjY3MjMxZGQ4IGxlZ2FjeS10cnVuaworNTQ5MSA1NGFhODdiMWNjZWU0NTlkZDFlMTI5ZWRkNDk5YjMzYmRkOWVmYzRkIGxlZ2FjeS10cnVuaworNTQ5MiAzOTExZDRhODlhYjBjYWQzNjg5MmQzNmI3NDI1Y2UzYmRiZWZlNThhIGxlZ2FjeS10cnVuaworNTQ5MyA3NGM4ZmNkYzk3ZGFhNjFhYWIzNGI0YjdjOTQwNzM4MzBiMThiYTViIGxlZ2FjeS10cnVuaworNTQ5NCBkYzRiZWMwMzY3ODNlNjcwMmZkOTAyNjkyZGUyYzZhMWVmNGZhMGE5IGxlZ2FjeS10cnVuaworNTQ5NSA3Y2QxZGE0MDY0ZDc4NDE2OTMyMmZlNDhmMWNjZmFlNzBlMDM3NzdhIGxlZ2FjeS10cnVuaworNTQ5NiAxNDc1M2MzMmU4YjQyYTEzMmViMTczZjc1OTkzMmQzMTcwMjgxYzEzIGxlZ2FjeS10cnVuaworNTQ5NyA0MDViNDczYWE0YTEzNWM1MGYyZWZlODE5NjViODc3OWFiYTg0YTUyIGxlZ2FjeS10cnVuaworNTQ5OCA5YzQ5YWNlNmIxZTc4ZjE5MTA2NTMxNGZhZDgxNjgyMjRjZTZkNGU2IGxlZ2FjeS10cnVuaworNTQ5OSAzYjNlNjgwNzU4MzMyYjgwOTdhODIyZGVmMTc1ZDUwNjhjNjUyNjc1IGxlZ2FjeS10cnVuaworNTUwMCA0N2Q4YmNhYmQxNzZmNDIzZWEyZDJhN2Q2ZTQ5OGViNGZkMjlmMjc4IGxlZ2FjeS10cnVuaworNTUwMSBiODM4ZDJiOTUyMDEyZmYxY2ZiNmY2NTQ4MWM4YzYwMmI0MWRiYzY5IGxlZ2FjeS10cnVuaworNTUwMiBjZTVmMGI4M2Y3ZTlmNGUwZTY2NzBmMzg4YWQ1MGE2MmY5MGIyNjk3IGxlZ2FjeS10cnVuaworNTUwMyBiYzhlZWZmZDRkMDY4NzZkMmI3MjhmZTAzMWM4OTc3YTNlNWRlMTY4IGxlZ2FjeS10cnVuaworNTUwNCBmOGFiYzAzN2I5NGY4Y2RlNDkxZmI1OWU0YWNiNzQwN2E5ZTZkYjA3IGxlZ2FjeS10cnVuaworNTUwNSA0M2VhMmM4YjMyODZlODg3ODI0ODI3MGUxMGYzMmU1YTQyYzQ0ZDBiIGxlZ2FjeS10cnVuaworNTUwNiAwMTZmMzY2MmVmOTgzOGJiYzgwYmJiNjVlYmQ0YzA4YzMzNWMxNDI3IGxlZ2FjeS10cnVuaworNTUwNyBkYTZkYmRmZDUxZGIxYmNjZTcxZTQyMGMwNmExMTk4Yzg5ZjdjMDRiIGxlZ2FjeS10cnVuaworNTUwOCA2YjljNTc1YzBjYmEwMzgyNGQzNDE2ZDI1Y2Q2NWQ2MmM4OWRlOGM4IGxlZ2FjeS10cnVuaworNTUwOSA2YWYwZmJjODU1M2FiNmIwNTY0ODBkYzcwYjVmNmUwY2RjNDE2NGYwIGxlZ2FjeS10cnVuaworNTUxMCA0NTgxYTBmMDM1M2VhZjMwZjg4NWQ1OTg5NjA4MWYyZGY4YTBmYjYwIGxlZ2FjeS10cnVuaworNTUxMSA3ZTdiYjAwYTBhMmUyNWQ5NWFmZjIwZDMxNTFkYWI0MmIzMzQxZDU3IGxlZ2FjeS10cnVuaworNTUxMiBiZGE1NGVhMjNhODBjYzJlODBjMTkwYmI1Y2Q5ODhiZTU2MzE5Y2ZjIGxlZ2FjeS10cnVuaworNTUxMyA5NDgzNWIzZWRmM2UwNTlkMTdlZDY3ZDc1YTc5ZTlhMWUwM2I0YzhiIGxlZ2FjeS10cnVuaworNTUxNCA2NWVhNzg4NzViYzgxMjkwNWY5YjkyZDdjOWQwNDY3MWMwODMxNDNhIGxlZ2FjeS10cnVuaworNTUxNSAwMWJjMDZjMmU0N2QzYmZjYThhYjEwOGU1NmE3MWY5ZDI5ZmUxMGJhIGxlZ2FjeS10cnVuaworNTUxNiA2YzY5NGVhZDE2Njg3NTM5ODNlMjRlZjIxNGMyMGM2YTg5OWZlNDUwIGxlZ2FjeS10cnVuaworNTUxNyAyY2Q0Y2MwNjVjMWY2MzY2ZGUzMTAwYzEwZWJjYzQ5ODg1N2M0ODdiIGxlZ2FjeS10cnVuaworNTUxOCBhOTQ2ZTRjYzZkNWIwMTcwYzBmNTNmZWNiZTkyZjA0YmIyMzU3NGRlIGxlZ2FjeS10cnVuaworNTUxOSBmZDUwOTg2ZjM1ZTVjY2RhMzg2MmQ1ZjdmNDgwNWUwZGYwMDA1OWM3IGxlZ2FjeS10cnVuaworNTUyMCA1YjkyOGI2OTVmYTRmNzc1OWRjZDlkNmUwOTk0MGUzZDM3ZGY3N2FiIGxlZ2FjeS10cnVuaworNTUyMSAyY2IxNDE2MDEwYjMzNjE2MzFiMzhlN2ZhNTBlYTZhNTk4NGIyZDMwIGxlZ2FjeS10cnVuaworNTUyMiBlZDA4NzQzOTg0MzNkYThmOTRiNGFhNmZiMzQwMTkyNzk2ZDFkOTBlIGxlZ2FjeS10cnVuaworNTUyMyA3ZTJjMDRlNmY3ZTcxNzBiYTdlMTJiNjRiYTRmYzY0MzJmMzYwNzlhIGxlZ2FjeS10cnVuaworNTUyNCAyNGFmOGVhYjdiNzYzYmI0OWQyNzQwMzhmYWVjZmYzM2UwMDBjNTczIGxlZ2FjeS10cnVuaworNTUyNSBkOTRiNTAwY2I5ODYzMDY4MzE3NmUzYjI3ZWU3NGU3MGY1MThiMDJmIGxlZ2FjeS10cnVuaworNTUyNiBjMTIwMzBmYmI1YjYwZmI1Yjk3NTY4ZDkwZGZiZmE0NjE0ZDZlNDU0IGxlZ2FjeS10cnVuaworNTUyNyA2NjBlNmYzNTk5MWNiYTQ3ZWQ5NzNjZmY5OTI0NDE2YTk1Y2UzMmRjIGxlZ2FjeS10cnVuaworNTUyOCBkZDU0ZWVmZGMyYzk3ZjA1ZDQ5ZWI3NDNkNDY3ZDgwYTNhYzQ5MzcxIGxlZ2FjeS10cnVuaworNTUyOSA4ZDUxNzkyNzc4NThiZTk5MDdhMDQzMmU2YjA0MGU2MzZjMGI3ZmIyIGxlZ2FjeS10cnVuaworNTUzMCBiMzMzZjE2ZmI0MTk2ZTkzZGVlZjRmOWE4YzA1NmYwOGMyYTA1YTkzIGxlZ2FjeS10cnVuaworNTUzMSBkZjdkZmFjMzBjM2UzYTkxOGNlNzJiMmJjZGYyNmI1NzMyMzdiZmEwIGxlZ2FjeS10cnVuaworNTUzMiBhNTc2OGU0ZWUwNDUzMjQwY2RmYjFiMDQzMjI1MmY1NmE0NWQwY2M2IGxlZ2FjeS10cnVuaworNTUzMyAxMzRjNmMyZDFhYmY5Yzk1ZDkwYWFmNWVlOGMxNjUzM2NlYmQzODRhIGxlZ2FjeS10cnVuaworNTUzNCA2ZWM4MjBkYjJmZmFmNjZhYWMxNTZiZWZjM2UxNjY5OTVkMmVhMWYwIGxlZ2FjeS10cnVuaworNTUzNSAzMWM1MmEwYTM3MmMwZWVjNzVjYzRiNzIyNGE1NDRkMWY5NzgxMmRlIGxlZ2FjeS10cnVuaworNTUzNiAzMjhhYzc0ZjZjYTY5ODM0ZTllNjU5Nzk4OWIyYWU4M2FlZWM2ZmE4IGxlZ2FjeS10cnVuaworNTUzNyAyNDZkNTQyMjEyNGY5OTljZDE4Y2UxOWI5MWI2ZThjZmJmMDVlM2U1IGxlZ2FjeS10cnVuaworNTUzOCBmYmI4ZWRkYzkzMDlmYjFlODgyMDZlOTI4YjUzZWFlZjVmMDI3NTE5IGxlZ2FjeS10cnVuaworNTUzOSBkMTRjZWYxNGZiZjI3ZTcwYjgyYWYxOGIyYjQ0NjQzMjk1YTViYmQxIGxlZ2FjeS10cnVuaworNTU0MCBkNmIxMzBmYTkxYjY1ZDM5ZjAzZWUyMWFhMGQ3MTU4Y2I3NGVlM2I3IGxlZ2FjeS10cnVuaworNTU0MSA5NzFlNWNhMThiZDFkODRhZTM2ZTk2YmU5Mzg1MTBlNmM0NDc1ZjYwIGxlZ2FjeS10cnVuaworNTU0MiBlNDI5YTdlNzFlMGNjZDIyZDExMWY2YjliNzM5NWEyYTgxNGNkMmVhIGxlZ2FjeS10cnVuaworNTU0MyA2OTljZjhiOTRmODAyZTg3ZmU4M2Y3MGZjNjFjMzU1MGVmMjkwNGM3IGxlZ2FjeS10cnVuaworNTU0NCA3MjI2ZGQzMTc1NWM3MDNiMDBkMGIwMDhjZjhiNTJhMDdlNjVmODlmIGxlZ2FjeS10cnVuaworNTU0NSBlM2ZiY2VkMWJjMDliMzE4ZTU2MmM5MzY0ZjNmZDIxNDM4YTkxNjdhIGxlZ2FjeS10cnVuaworNTU0NiBiZmE0MjdkYTU4MGVjZGYzNGI0NGJmYjFlNjAxMmJiOTRmNWVhYjYwIGxlZ2FjeS10cnVuaworNTU0NyBkYjg5YWFiNDE1YTFiN2JiZTZjMzQ1NTU3NDk0N2VjODQyODczM2VmIGxlZ2FjeS10cnVuaworNTU0OCBlYWRhMjQ4Njc2ZGVmNjNiODA3ZjYwNmM4MjBlMjM0NDUyM2RjM2I4IGxlZ2FjeS10cnVuaworNTU0OSA4N2ZlYTI2MWEyNjNlN2NmMWY5ZWI0NWM4YjQ2ZjE1YjY3NDNkNTEyIGxlZ2FjeS10cnVuaworNTU1MCAwN2NiNTAxNDFkMDcwNzJhYTU3YWFlNGVjYzVkYjAwOWZlZjM1MzY1IGxlZ2FjeS10cnVuaworNTU1MSA5MWMxYmI3NWU5NDVjZjhjYzk2YjI3MDk4MTdiMWI5ODE1MzI3NjA0IGxlZ2FjeS10cnVuaworNTU1MiBhN2M5N2M0MzcxOTFkNDRjY2QxMzBmN2I4NzliMjQ2OWQ0Yzc0OWY1IGxlZ2FjeS10cnVuaworNTU1MyBkN2VlYTkwMTNlNzM2Mjg4YjNkZmE3YzQ3OTA5MzE4ZjM0NjVkNDJkIGxlZ2FjeS10cnVuaworNTU1NCAzMTY4NGM1YmIxNzI3Y2NiNDg2NjMyNjhiZDNhMzFjNTFkNmQwMDg2IGxlZ2FjeS10cnVuaworNTU1NSA3NTkzNjk5MGEzMzBjMGE0NGVjYzhkNWY0NzMzNTNjYWEyMzEyOWZiIGxlZ2FjeS10cnVuaworNTU1NiBlZjlhYzZkZWY3MWQzYjZlYzkzODllMjUxNmY3ZTA0ODA3OGVmZGMxIGxlZ2FjeS10cnVuaworNTU1NyBmYmZhM2QzY2E0ZTA5NTY2ZDM0ZjZiZWJhMTAwYjhkNGYyMGJmYjRiIGxlZ2FjeS10cnVuaworNTU1OCA3ZGRmYjYyOWFjM2ZlOTAzODVhNDVlYzBhYWEwOGI0YWMwNmNjNDNlIGxlZ2FjeS10cnVuaworNTU1OSAxZmYxMjYxOWExNGM3ZGNmZGQyM2UxMzcwODUzM2ZhNDliNWUyOGU0IGxlZ2FjeS10cnVuaworNTU2MCBiM2E4MDEzY2I0ZmEzNjc1NTMyZTY1NTE4NTM5NGM5YjBlNDFhN2FiIGxlZ2FjeS10cnVuaworNTU2MSA1YTFmYmQyMWZjMmE1YTVmODQ2MWQyMWQxMWZjNWIxN2RiNWNmNDljIGxlZ2FjeS10cnVuaworNTU2MiBjMWQ3N2Q3NGZlMzUwNjhmZGJjMzZmNGM3ZjhjZWY3YmU0MmFkM2Y5IGxlZ2FjeS10cnVuaworNTU2MyA4NDEwNGQ2YjRhZTdlZGYwMDU0YmM2NDE2YmE5Yjc5MWMwZTZkYjgwIGxlZ2FjeS10cnVuaworNTU2NCA4YWE2OTE4YTg4YzZiMTU0MWM3ZDBjZDZmNDk2MGM0NDc4OGZlMjk0IGxlZ2FjeS10cnVuaworNTU2NSA0YzgzZjU2OWI0MzQ1OTNiMzg1NTMyNDBmNTE3NjRiZTYyOWFmNmQyIGxlZ2FjeS10cnVuaworNTU2NiBkMjQ5MTExZDRjY2NmZjY4NDFmZTg4MGJmYWY0M2JiNDM5OTViNmQ5IGxlZ2FjeS10cnVuaworNTU2NyAxNzFlZWY2OWEyY2QwODdmNjMxMjViMjhiMzNiNmI5NWY1OWM3N2YzIGxlZ2FjeS10cnVuaworNTU2OCAyMzdjM2IyYTYxODcxYjA3NTdiNThlODJkYTg0ZGQzNGNkY2I1ZmE0IGxlZ2FjeS10cnVuaworNTU2OSA2OTI3MTVhYmJkMGJiZWVmNmYxYzNhNDcyYzc2YzkwYTU3MDkyYjk4IGxlZ2FjeS10cnVuaworNTU3MCBlNTFlMTdiMmQ4OGIxNWQ5YTk1OTg2ZWIxM2FmOGE2MmQ2ZDE3OThhIGxlZ2FjeS10cnVuaworNTU3MSA1NmRiYTAzN2I4ZDZjNjU2NDVjMWY4OWJjNzhlMjFiMWNkMGRkMTQxIGxlZ2FjeS10cnVuaworNTU3MiA0MzhmODhiNTUxNTRhZDRjNDJjNjA1MTY3NDk4MjQzMTkzZjU0NWNkIGxlZ2FjeS10cnVuaworNTU3MyBjNDFhOGU1MDE5NzM0M2M5NzcxOGY2MzZhNzA1MTZhNmE3ZmNkYTJiIGxlZ2FjeS10cnVuaworNTU3NCAzZGM5ZmYzYWJmMzYxNjMyZGVjZGExOWE2MTc2NGVkMWI4ZjViMTk4IGxlZ2FjeS10cnVuaworNTU3NSBhOGZjYzUxMWE4OWE4ZjM3YTkzMzJjNzdkOTI3OGU1YTFiMTFkMWM0IGxlZ2FjeS10cnVuaworNTU3NiAxNDEyM2UwOGU4ODdlNDI4M2FkNjQ4OGE3ODQ2NGEwNWQ3MGZhMmQ1IGxlZ2FjeS10cnVuaworNTU3NyA1YzBhN2Y3ODM2ZmIxZGJkNDA1YmQxMWEwNzQ4NGZhZDFmZjk4NTExIGxlZ2FjeS10cnVuaworNTU3OCA5Zjc2MTg1Yzk2OTM3Y2Y1NWNkYThmZWI3ZTY1NWY4MjI1NDNhNTNjIGxlZ2FjeS10cnVuaworNTU3OSAzNmY0ZDU0Njk5MTUzM2M5NGE0MDI2YTAzNTU3ODIyNzFiZTA2YmZlIGxlZ2FjeS10cnVuaworNTU4MCBhZjgyMjkxMTM1YmQwNmMwZjgzNWI1N2Y0MGM0NWQ3Y2YxMDE1YTY3IGxlZ2FjeS10cnVuaworNTU4MSAzYWFiOTI1ZWJmYjAzNGUwNWNiNzljMDFmNTc0NTU1ZjdmNmFmOGI3IGxlZ2FjeS10cnVuaworNTU4MiA5NDk3Y2RjZGI2YWE1MWI0ZjFhZmU1YmVhODg2ODNlNjMwMWQwYTIwIGxlZ2FjeS10cnVuaworNTU4MyBkYjEzOWE0MTEyZjMyZjUzOGMzNTBkOWRhY2M2NWY5NDM0MDQwNjU3IGxlZ2FjeS10cnVuaworNTU4NCAwNzczOTljYzgyZThjZWIyODhiMDA1NTcyNThiN2EyMzBkZjRmNzg3IGxlZ2FjeS10cnVuaworNTU4NSBlNDc3MDk0YThjYTEwODgyMGY4ZjQzOTAyYjZjMzcwZGM0N2Y0NmJkIGxlZ2FjeS10cnVuaworNTU4NiAxMDcxZDE2YzkzMGMxZDg2OWNlMThkZDBlYmFhNDEzNmY0MmI0OGEzIGxlZ2FjeS10cnVuaworNTU4NyA0YTEyYTU0MzE3NWQwYmE5YTkzMDYwY2FiMzgwNTEwMzU4NGMzN2Y1IGxlZ2FjeS10cnVuaworNTU4OCBjMTBmNTViNDZhMTE1MWIxYjliZjYwYWE1MTgwOWZkNjM2MmYwZDMzIGxlZ2FjeS10cnVuaworNTU4OSAyY2FhM2UyODM1NjhkMDc1YTRjZDIwNjY5NzRlNjA0NDEyOWYzYTEzIGxlZ2FjeS10cnVuaworNTU5MCA5MzU2MmRkZTIyNGFiN2QwOTRlNWM3NjU4NDZhZThiZWU1NzBhMmQ3IGxlZ2FjeS10cnVuaworNTU5MSAxN2YzMTFlYTBjOWEwN2M1NWJkMjBlMGIzMGQ5ZjE5YjY2MmUxN2FlIGxlZ2FjeS10cnVuaworNTU5MiA5MDU2NmM5YzE4OWYzMmQxYjc5NDdjOTgzZWE1ODZiZmZhYjI1MDlhIGxlZ2FjeS10cnVuaworNTU5MyBlOTA2NDNmMzNjNjRjMTJhNjI4MWNmY2RkOWE1ZWEzMTI4OWU3ZjU1IGxlZ2FjeS10cnVuaworNTU5NCA4NzEwZDcxNDljNmYxYmJlZTE1YjI3OTQxZWVhMzIxNGUzY2MwMTdmIGxlZ2FjeS10cnVuaworNTU5NSAyN2EwNzY5ZGI5MjE5MzM0MGU2NzdhZWNmOTBiYmVhYjZkOTIwMmY5IGxlZ2FjeS10cnVuaworNTU5NiBlODM1YTIyYjBiZGRlOTRmZWJjMDFhYzA2NzM1ZTYxZTIwODliOGE4IGxlZ2FjeS10cnVuaworNTU5NyBkY2YyYTM3ZTczZDlkMzZmMTgxYTc0YWE3Y2JhMDhhY2Y1YTNkNTU4IGxlZ2FjeS10cnVuaworNTU5OCA3MWJiNzFlMzA2ZmUyZGNiNjZlOTY1ZTBkZDhlNzQ1OTM4MDA3NTNjIGxlZ2FjeS10cnVuaworNTU5OSA3MGVlNGUzY2IzZDgzODI2NGNlMTRhNzAwYTlkMDgyMTYzZGEwNWI2IGxlZ2FjeS10cnVuaworNTYwMCA1OTEyODdhMjJlZTU5NmRlYzFiMWQ2YmUwYmJmOGU3NmVmNjNhNDBlIGxlZ2FjeS10cnVuaworNTYwMSAyNjc3ZmJiMTE3ZDYyYjQ1MWFmY2M0OTc2NjZmMjhkZTEwNTQwNGI1IGxlZ2FjeS10cnVuaworNTYwMiA5OTlmY2NlNDk2Zjg0OTU0ODk4MmM0YTU0NWMwNWY2ZGI2NGJlZGQ5IGxlZ2FjeS10cnVuaworNTYwMyAxYjRiOGE0ZmI0NjMzNDAxNzEwODc3M2NjYjUwZDI3ODRjOTQ5MTkyIGxlZ2FjeS10cnVuaworNTYwNCBhZGNjOTE2Yjc2MTZkODA3NDZjMWMxMmYwZTlhYzJiYWIzNTFmZWJhIGxlZ2FjeS10cnVuaworNTYwNSBmMWYxOGM1NWQxMzY0MjQ1NDI2OTYyYjkwZjc5ZWE5MDE4YzJjM2U0IGxlZ2FjeS10cnVuaworNTYwNiBkZjA3ZjI4NzExZmRmMzI4OTlmYmFmZDczNTI4YWE5NmUzYTU0MjRlIGxlZ2FjeS10cnVuaworNTYwNyBjZDM4OGNjOWJhOThkY2I4OWZhODAyZTNhMWU5OWQ0YzA3NjlhYmY2IGxlZ2FjeS10cnVuaworNTYwOCAzZjhhNzMzODBjNGJjY2QxODkwODRhZTQwM2MxYjA3YWE5NjZiZjBhIGxlZ2FjeS10cnVuaworNTYwOSAzOTNiNmQ4MWIxMjZiMjc0ZDY3ZGQ5ZDYxZWZiNTA5OWEwOTkzMGIxIGxlZ2FjeS10cnVuaworNTYxMCA3YzVmOTRmNTZmNzkzNTg2OWVjZGJmZjY1NGVhZTJmZWQ5NTEyODMzIGxlZ2FjeS10cnVuaworNTYxMSBmYmY1OGQyNzhkNjQ1ZDBhNTI3YmU5OGU2NTZlNGM0YTRkOGQyZWUxIGxlZ2FjeS10cnVuaworNTYxMiA0M2Y4ZGIyM2VmMTVlMjBjYjU2NTlkYTBmMDIzNjNiNWYzZjNjYTZmIGxlZ2FjeS10cnVuaworNTYxMyBhOTVmZjg2NzU3MTgxMGU2ZTI1NGFjZjY2ZGZiZGQyZmI0YWIxZDIwIGxlZ2FjeS10cnVuaworNTYxNCA3MGE5MzI3ZjZjNGM2YjJiMzU5OGI1YWQ1ZmMxMjY3ZmMyZGY1YmEzIGxlZ2FjeS10cnVuaworNTYxNSA0OGRiNWQ5YTI3OTQxYzJlMTg3OTQxMGM3YWZjNTkwZWRlMjkzN2YzIGxlZ2FjeS10cnVuaworNTYxNiBiYWQ5N2I0MDUxNjY2YTJkZjJmNjFhZGUzMWVhMjA1MzYwMWY2MTVhIGxlZ2FjeS10cnVuaworNTYxNyA0OTBiZTg2NWFhMGQ1NzllZWQ0NGE2YWU4NjlhM2U1ODFlODE5ZTlkIGxlZ2FjeS10cnVuaworNTYxOCBhY2ZmNzlkZDE0Yjc1MDdmNmRjYmE0MzA3NTkzYjU3NTY3MmFlZTI2IGxlZ2FjeS10cnVuaworNTYxOSBhMzZlMzAyNDBkMDZmNGRmMjY3YTlhMzUyNGYwYjMyNmNjNWZjNzJjIGxlZ2FjeS10cnVuaworNTYyMCA5YTg5NjA4NmQzYzM3MDQxNDBkY2M1YjAwNzAxYjJmOTAzMzdjMmE0IGxlZ2FjeS10cnVuaworNTYyMSBjZDdlYWE2MmNjMzFiN2Y2NjM2NDNjYzMzZWE1MzdhMDUwZmQ4ZTVmIGxlZ2FjeS10cnVuaworNTYyMiBkNmRkNTBmZTFlY2FiNzU0NzJjMzRkMTUwNGVlZTJiNjNlY2RjNTY4IGxlZ2FjeS10cnVuaworNTYyMyA5MzE1M2Q1YzMzM2QwN2QxMWI1MTQ1Mjk5MjZhYzVlNjlkYTQ3YjBjIGxlZ2FjeS10cnVuaworNTYyNCA0NjkzNjlhZDJmMmZiYTRjOGUwNmNiMzlkYzNiMmFhMjIyNGEzNmY2IGxlZ2FjeS10cnVuaworNTYyNSA1OTYxYjc2ZDc4OTk2ZTM1ZjVkNGNiMWZmMzc5Mzc3ZjRhNmYzMGExIGxlZ2FjeS10cnVuaworNTYyNiA0Y2IxMjYwNGRhOWQ5ZWE4YTRlNmM5YTA1OWYwOTZlNTA5OTgwN2QxIGxlZ2FjeS10cnVuaworNTYyNyBmZDRmMDA4ZDc3NDNiNTFlZjk3ZDUwNmM3ZmEwNzY2N2JlZjQ5OWY0IGxlZ2FjeS10cnVuaworNTYyOCAyMjA1ZGM0OThhZGZiZWIwZWY1YTlhOGM0MzA2YjI4YzE3YTcxNjdlIGxlZ2FjeS10cnVuaworNTYyOSA0MGM2OGViZDU4OTFkOWI0ZjcyYmUzMTQ2OGNiNGFhM2RjNDY0ZmM5IGxlZ2FjeS10cnVuaworNTYzMCAzMTcyYzM5Y2RhZDgwODdkNWE3MTE4YTc5YmM5YmJmMDhjOGE2NDI2IGxlZ2FjeS10cnVuaworNTYzMSA5NWU4MGI2YjhmMmU0NGNmYmExZGRjNzI2N2E2MzI5YjI0Njk0NmUxIGxlZ2FjeS10cnVuaworNTYzMiA5MmUxNDVmODQxNGU5NjE2NTEyOWMzNTU4MWUzMmNhNzNiMzlkZWY4IGxlZ2FjeS10cnVuaworNTYzMyA5MzhjNDMzYzg3NmEzZDY5NWIxZDA3ZDc4M2Q2ODExYmY3ZTg0MGRhIGxlZ2FjeS10cnVuaworNTYzNCBmZTlmOTViMDQyZmM4Y2YwNjE5NTMxMGRjNDRlYmE3MTJmYmFiOWI3IGxlZ2FjeS10cnVuaworNTYzNSA5NDg5YTM3MmM2ODYyYTE5MjA1NDJlMjI5MTI1NDQwMjc2MDc1NDBkIGxlZ2FjeS10cnVuaworNTYzNiBmZmY4YTc1MGU3ZjYzZGMwYTAxYmIzOTNmMjViMDRkMGFhMzA5NjBjIGxlZ2FjeS10cnVuaworNTYzNyBiOWI5ZTY2MjhiMzUzNTMwMWM1YzQ4MjBmYjljYWQ2NDUzYWZhYWE0IGxlZ2FjeS10cnVuaworNTYzOCAxMzE0NmNiNmY2N2M2MWRlMjUyY2I2YTIyMzg2NWQ2ZDc0Y2M2ZjFiIGxlZ2FjeS10cnVuaworNTYzOSA2YmNjZmMwZWQ2OTU5NDM5NDg1MGQxZmQwODgxNTI0MDU5MTU4ZGIxIGxlZ2FjeS10cnVuaworNTY0MCA2ZDM0YWRlMmU5ZDQ1MjcxYjBmYzY1ZmI2MGYzZjRlMTJhZjBmMzc4IGxlZ2FjeS10cnVuaworNTY0MSBmNzc4OTk0NWI4ZGVlNmNkNzdlNDFlMThjNzA1NTI3ZTljOWUxZmU0IGxlZ2FjeS10cnVuaworNTY0MiA0OWI3ODdiOWJmYWUyNmNkYTU2ZTY0M2FkZDRkZDJjZmFlZmU0YjljIGxlZ2FjeS10cnVuaworNTY0MyAwNmUzNDBmODU5NjFkMWRmMjA1ZTVmNDVkODhjY2I3NGE3MDM1ZGM3IGxlZ2FjeS10cnVuaworNTY0NCBjZjZjMGM1ZGM3M2Y3ODYzZjA3N2MwZGMwNDgzMzkzNTFhNDBmYjE4IGxlZ2FjeS10cnVuaworNTY0NSAzZTFlNWY2OGZkMWNjYTIxYTE1Y2UxMGNiNTAxYmNkNGExNjZjMTBjIGxlZ2FjeS10cnVuaworNTY0NiAyYTRkMTMwMzczZGIyMTk4ODZlZGM5ODM3NmMyMjU0M2RhNzUzZTQxIGxlZ2FjeS10cnVuaworNTY0NyBhNDIwMTJjMTg4ZmQzODc5YjY2YmI5NGM0OTI0ZDlmM2E5YWM3YmY1IGxlZ2FjeS10cnVuaworNTY0OCAyNGI1M2NiMzE2ODA5NDUxMGRjZmNjMzA3NWI0ZjFhNTIzMTgxNmJmIGxlZ2FjeS10cnVuaworNTY0OSA4ZjNmMjVhODM3YjM4MTdkYmE5ZDNhMjdiYTFhOTMxZjdlNDU1ZjI2IGxlZ2FjeS10cnVuaworNTY1MCA2MWNhMTlhMzAwMGZlYzEyODhhZmI1OTZmYjNmMmNiNDlkYjYzMmE3IGxlZ2FjeS10cnVuaworNTY1MSA3YjJmNjk1NDA1YmFmYmZiZmQ4YWNlOWUwMzc1ZjVlNDBkNDM2YjYwIGxlZ2FjeS10cnVuaworNTY1MiBjMDU2ZjY4NWMwODEzYzhlNDUzYTVjOTc0NTQ0NzdjYzQ2OTQ4OGRkIGxlZ2FjeS10cnVuaworNTY1MyA4MzAxZDU1ZWI2NGJlMjY4ZGM1N2U5MTQ4MGM1YjhjZGIzMTVhZGQ0IGxlZ2FjeS10cnVuaworNTY1NCBjYzM5ZDYyYjI3ZmQxMTU5MDJjNTY0MGI2MmQxMWUzNDZlNjc5ZGQyIGxlZ2FjeS10cnVuaworNTY1NSBmNDcyYjdlYzI1YzU4M2M2MmI4ODkxZGUyNmU5MjNiZDg1NmJlN2RjIGxlZ2FjeS10cnVuaworNTY1NiAwMmM4Zjc0ZDA4ZGNkODRkMzYyMGYzYmUyMDE1MGJmNWJhNTIzYTlmIGxlZ2FjeS10cnVuaworNTY1NyAyOGRmYzQ2NzE4NWZjNDI1ODM4ZjhkYjU5NzViOTU5ZTdkZGMwY2QwIGxlZ2FjeS10cnVuaworNTY1OCBmOWZkNTEyMjY4MGYzMzNkM2M5NzM5ZWE4ZWZlZDMzMDkxNzRmN2MzIGxlZ2FjeS10cnVuaworNTY1OSAyYWE3OTgzN2FlZTU2ZWVhNzY4ZjE1Y2I1NTk3NDI1NGE4MDM5ZjBhIGxlZ2FjeS10cnVuaworNTY2MCA4MjI0ZjBiYzVjZGE0OTQyZWFjYWJhMDQxMDkyZDdlODA3ODViZGE5IGxlZ2FjeS10cnVuaworNTY2MSAwNWFlYjkxZTNiOTBkMGQzNjFmMzg1YTM4MzQ4NGYzMjRjZGVlMGYzIGxlZ2FjeS10cnVuaworNTY2MiA2MTE5M2M2MzJmNTFlMTkxMWE4NzJlYjU0MTMyZGVhN2FlYzkyNTM3IGxlZ2FjeS10cnVuaworNTY2MyAxOTVhZDlmYjQ1ODMyYzc5YTMyYzA5ZDM1Nzg5NTQwZDU2N2IzY2EyIGxlZ2FjeS10cnVuaworNTY2NCA1ZDE2ZWNhZThlZTcxMTE4MWRhNjhhMTYzMGM4NGRjZWIwYzViYWEwIGxlZ2FjeS10cnVuaworNTY2NSAyMWNkNTBhNGEzZjc2N2E5M2YwOGQ5YTRiNzg5YTkzYWI1OWE1Mjg3IGxlZ2FjeS10cnVuaworNTY2NiA4ODQxYTRkNWNkNGJlYjhmY2EzZDg2YTc1MjQ2ZmNkZTE1ZjViZmY0IGxlZ2FjeS10cnVuaworNTY2NyA4ZjVhYjFhNmM5MTQyZWJhNDlkMDgzNjNjOWY4ZTRjYTJjNzBiZjI1IGxlZ2FjeS10cnVuaworNTY2OCAxOWI1OGNlNzk0YzkwMjY3NzY4N2I3ZTY5MDUwZjJiZmMxYzcwN2Q5IGxlZ2FjeS10cnVuaworNTY2OSA2NDkxYmQyYmJkZWZmNjg1OWUyNTQ4MWZkMTM3NDM5NDZiZDZkMDBkIGxlZ2FjeS10cnVuaworNTY3MCA0NmRmNjcyYzdjMjcwZGEzNjBiNTdmMDA3MjBlNGNiNTVkMGIxZjJlIGxlZ2FjeS10cnVuaworNTY3MSBkNWU3NmE5NWI1NjY1YzkwOTFiNTVjYWJlMGRmMmE1NWRhNTZiNzU1IGxlZ2FjeS10cnVuaworNTY3MiAzZDEyMmYwMmU2NDk4NzI2OTZiZjg0OTEyODkzZWQ5MDYxMTBjY2Q1IGxlZ2FjeS10cnVuaworNTY3MyBkZjJmMjUyZGNkMjlkZGU3ZmYyNGFlY2FiZDMzN2IxZTA1MzE4ZjZjIGxlZ2FjeS10cnVuaworNTY3NCAwZWQ1Y2Q4ZGY1MWY5ODE2MTkxNGRhMDlmZTlhYmMwNTNhZjJhMmIyIGxlZ2FjeS10cnVuaworNTY3NSBhMjI3ZGNlNDg0NTE3ZGE2MTUwYTBhOTRhNzcwNDcwM2E2OWY5YWM0IGxlZ2FjeS10cnVuaworNTY3NiAyYjVjODczODEzMGNmOTUyMmYxZmJmNGFkYmE4MjUwYWZmMDljNmZlIGxlZ2FjeS10cnVuaworNTY3NyBjZGViZWU0YTNlM2U4NzFhN2U2ZjVmZTZjMTE5NGVkOGRkY2NhMDM1IGxlZ2FjeS10cnVuaworNTY3OCA5OGUyY2FkNDg1N2YxZDJiZDUzOTlkYTM3YjhkMmY4YWQyMDllOTc0IGxlZ2FjeS10cnVuaworNTY3OSBjN2NkZDIyYTQ4NTNhZDhiYTAwOWExZmRmNzVmYzUyZjIxNzc5ZDJhIGxlZ2FjeS10cnVuaworNTY4MCAyMWQ0YTA3YjE4NzViMWFkYmM3MGJhNmQwY2RmNTU1N2E0YzBkNTYxIGxlZ2FjeS10cnVuaworNTY4MSBmZmUwMzI4MzY5MzczNzM1MDY5YjQ0NmZiYzg4Y2MzODcyY2Y4MzA4IGxlZ2FjeS10cnVuaworNTY4MiAzYjJiZTgxMWE2NmFhYTZiZmRmODVkYzM3ZmM2MmU4MGI2ZjA4OWU5IGxlZ2FjeS10cnVuaworNTY4MyBkMDBhNzllYmIwMjczNDhjZGRmNWUyNTQ5YjRlZGM2YzczYzdkMzE3IGxlZ2FjeS10cnVuaworNTY4NCA4MDEyNjViODYxNjQwMjQ0NGFkNzc5ZmJlYjU2NjNjOTFkYzJlMTdlIGxlZ2FjeS10cnVuaworNTY4NCA3ZDc0M2M4NjVhOWFhNmJkZThiNjAzZTMyZTA1NDIwMzFiYmEzYzMzIGxlZ2FjeS10cnVuaworNTY4NiBlNDVmM2QyNjJhZTRhOTIzZWQ4YzQwZjBkZjk5ZGY5NmNlMGY0M2Y4IGxlZ2FjeS10cnVuaworNTY4NyBmMWNjMjQ3ZmZmMTM3ZDk0ZGI4MTJlOWVjY2M2YmJjOGFlNjg2OTRkIGxlZ2FjeS10cnVuaworNTY4OCA3OGUxOTUzZmM5YjJmMzM0NTM2MDJiYjJkZTg3YjA1Y2NjNDY1NzZjIGxlZ2FjeS10cnVuaworNTY4OSAwZjM4Y2VjNTY1MzkxZTUzMGVhNGY4OTIwM2Q4ZTllMDc5NmY5ZjhkIGxlZ2FjeS10cnVuaworNTY5MCBlNzQxN2E1Njg1ODZhYjM5MmQxYTY0OTczM2ZhMzZmNWVjMTA0OTAzIGxlZ2FjeS10cnVuaworNTY5MSAyZmIzOThhYjNlNmFiMDI4M2Q5ZTBkNzNmYjNhZDVmNzA5MTMyOTZiIGxlZ2FjeS10cnVuaworNTY5MiBlNTU0YTYxYTg0Njk0ZmIxNzcwODgxMGQ3Y2Q1ODY5ZGVhMTU1NDQwIGxlZ2FjeS10cnVuaworNTY5MyA4YzBhNTE4MGZhMzZlYWYyNGVjZWM1NDNlMDkxZDk3Y2IwZDZiZTJjIGxlZ2FjeS10cnVuaworNTY5NCBlZmI5NzE0Mjk5MmU0ODk3ODk2OGZiYWJlMGMxY2E3MThmZWM5YWQ0IGxlZ2FjeS10cnVuaworNTY5NSBmNGE1OWZmZTFhNWY1YzFjODIzNTI4Y2NiYjhjMDFkNmUzMjhlYzEyIGxlZ2FjeS10cnVuaworNTY5NiBlMzM3YmYzY2I0M2FlYTM4NmU2MjU5NzI0YzVmYTg0MzYzZjQyMTMxIGxlZ2FjeS10cnVuaworNTY5NyAxMThjMDYzZGY0NTNjMmMyZjNkNjc2MDE3MzUzODA2MDVkZjM3N2NjIGxlZ2FjeS10cnVuaworNTY5OCAxYWNjMDQ0NzhkYzMxMGU4YzQwNTFmMzIzN2U2ZTZmYTk0NjMxNDE0IGxlZ2FjeS10cnVuaworNTY5OSBlYTdlYzRhNGM4ZDJmNTMwYTY3MTBmODdmMjdhMzQ3MzA2MGVjODAyIGxlZ2FjeS10cnVuaworNTcwMCBmZDU3M2FjNzU5NDc0MDM1NWYwNWM0MWM5MTI5Yjc4YjY2OTRjMWUxIGxlZ2FjeS10cnVuaworNTcwMSBhYWZlN2Q2MzQ5ODUyN2VkZjdkOTYxNGI3MWZhYjg0OTRlOTE3OTA2IGxlZ2FjeS10cnVuaworNTcwMiAzZGY5YWIwM2JhZGZmYjJlYzJjZjRmODY5ZWYyYWI3YTNkMjcyMDlhIGxlZ2FjeS10cnVuaworNTcwMyA0NjNiMjZmYTRkN2I3NTY3ODUwYzFiNDUwNmFjYTg2YTRkNzEzM2VhIGxlZ2FjeS10cnVuaworNTcwNCA2MmJiZmRlNDFiMTQ0M2JhNjc2OWZiODU2MTBlMWQ2MTQwYmE1MjAwIGxlZ2FjeS10cnVuaworNTcwNSBkMzUxMGYxMTE4YjZiNzcyYTk0ZTFmYjA0MDNhMTk0OTdjODMwOWU0IGxlZ2FjeS10cnVuaworNTcwNiAyODVkYmE0ZTBlNTE2YzUwNzdjMGMxNGViOWZjZGUzMjE1NTQwZDY1IGxlZ2FjeS10cnVuaworNTcwNyBmN2ZkODViMzJhN2Q4NWU0OTZjZTc4OWFjNDQ1NzJlMjk3ZjZiYjYwIGxlZ2FjeS10cnVuaworNTcwOCBlOTI3ODlhOTYwYTAyNzJiMmQxNDBjMjU2ZmYyYzkyZmRlNGYzOWUxIGxlZ2FjeS10cnVuaworNTcwOSAzMTM2MzdjNzdkYWEwM2EyOTVjYjMxNzczZTQwZWY2ODBlZTc4YmNhIGxlZ2FjeS10cnVuaworNTcxMCA0MDVkYTU1NjY2MWQ2NmFhNDc5ZWFlNjhlZTIzNTZmYWRiNWJkMWZlIGxlZ2FjeS10cnVuaworNTcxMSAyODQyZmZhNTIxMjYwZGQ3NTU0MzUwNmZiNmU2OWJjYzA0ZWU1YjcxIGxlZ2FjeS10cnVuaworNTcxMiAxOGI2MGQ4ZDllMzVhMjY0YjQ2ZWE4ZWE3MzQ1MmNiNzE1ZGExNWQ1IGxlZ2FjeS10cnVuaworNTcxMyA3YjFhNmJiYTI1ODA1YjM5YTNhZGI0YTgwNTc4NGEwOTAxZjU1MDI3IGxlZ2FjeS10cnVuaworNTcxNCAyMGQ3NGZhM2I1MGIxYmYwNzJhZDE4YmY3YTJlYjE3MGIwOGY5ZGExIGxlZ2FjeS10cnVuaworNTcxNSA1ZTEwMWVhZDFlNjk5MDk1MjRmYjUwZDc0NWE5NDM5NzdjZTNiYTE1IGxlZ2FjeS10cnVuaworNTcxNiAxY2Y2ZTEwNTIyZTA5MTU2MDFlMDYwNDhkYTg1YjgyODA1MWEyZGNkIGxlZ2FjeS10cnVuaworNTcxNyBlZDBkMTQ4ZmMwNWM4Nzk3ODZhYzRkNmI3ZGRjMjk3NDE2NTBkNGM5IGxlZ2FjeS10cnVuaworNTcxOCAxYTM5ZDQwN2I0ZDM5MDI5ZDMxMGVmNzk4MjQwMzU5MzQzNDc5YjYxIGxlZ2FjeS10cnVuaworNTcxOSA0NjdlMGYyZDY3OGExMWY0MzFiM2U2YzczZmZlNzkxOGM0Y2E0ZGM0IGxlZ2FjeS10cnVuaworNTcyMCBmODljZGRhNzQwNWFjNGM3MWRmMjJhZDZlNzMxNTQwYzhhMzQ3M2U4IGxlZ2FjeS10cnVuaworNTcyMSBjYzU0NzQyMjFjOGNiMWE2MDIxYzJiZGIxM2Q5YjE3ZjE0NGQ1M2UwIGxlZ2FjeS10cnVuaworNTcyMiAzMzMxMGNiNmE1ZDc2ODM0MjA5OGExZjU2MTQzODk4ZGNkNTBmMzgwIGxlZ2FjeS10cnVuaworNTcyMyBhNmIwNzA0MTA2YzhjZmQ2NTE4ZDJkZTkxN2RiY2FkNDQzOTYzMzNlIGxlZ2FjeS10cnVuaworNTcyNCBiYWQ3ZjU2YzgzYjJiNjJhMThlZWQxMTZiODVmODY2MmM4Zjk2ZDhlIGxlZ2FjeS10cnVuaworNTcyNSA2ZTQ4ZmFiNjk5MGYzMTRmYjc2MTQ1NWIzZmYyNTI2MWMwNmQ2ODg1IGxlZ2FjeS10cnVuaworNTcyNiBkYjExYTJiZmVhNjZkYTQzYjA2MzZhMjBlNjFmODZiYWZiZWE3NDRiIGxlZ2FjeS10cnVuaworNTcyNyBiMWNhNjU5NzFlMzZmYWE2Njg1ZWQ2MTNhZDIxM2ZhMTVhYWM4OGJmIGxlZ2FjeS10cnVuaworNTcyOCA0ZjQwODNhMjZiZjIyMzM5MDE1NTcxN2ZkOTM4MTA0NzQ2MDk2YTVjIGxlZ2FjeS10cnVuaworNTcyOSBiZmI2M2I0NWZmMGY2NzdhYzE3YTA2Mzk2ZGRhYWI3ODRjNjA2ZGIxIGxlZ2FjeS10cnVuaworNTczMCA4YzU4YWI3YWE3MWVmMTAxZjMzM2Y1ZDM4Mjk4OGYzMjc0NTI5N2YwIGxlZ2FjeS10cnVuaworNTczMSAyYzFlM2U4NzUxMDk5NmZiMDNiZjYzZTc2MmUxZWUwZGFjNWFlNDMzIGxlZ2FjeS10cnVuaworNTczMiAyZjgzN2Q4MjQxMjBkODkyY2RmODhiODEyZTg4OTNjMTkzNjczMWZiIGxlZ2FjeS10cnVuaworNTczMyAxNTk3NzRhZjJlZGU2NmMwYzA5MjI4YjM1NzY2YTlhZTFiYjBhNmY0IGxlZ2FjeS10cnVuaworNTczNCA4ZTczM2Y5MmVkYzA5MzRmODM3ZWY0Y2VkM2VmOTMyODUxMGM5NzcwIGxlZ2FjeS10cnVuaworNTczNSA3ZWFjMDJhNjE3NmVkZjI4MWM1ZjQ1MDc1YzA2N2U2MjczYWZmZmE3IGxlZ2FjeS10cnVuaworNTczNiAxMTc2MThkZDBlN2Y1MzMwNDBmODg5M2ZhZDMyZWM1ZTE4MmQ3NjYwIGxlZ2FjeS10cnVuaworNTczNyBiMTZmY2QxMjZiMWMyNGU2ZTk5NzA4ODE2MjEwZGJjYjYxMDU4YmZhIGxlZ2FjeS10cnVuaworNTczOCAwMzE3YWM1MjI2MDU4MTdjNmZlMTc1MzZhYzI1MzlkZTcxMTg1YmI1IGxlZ2FjeS10cnVuaworNTczOSA2MTIyNzMwYjc5ODg1MTZmNDZhZTUzODg3ZDlkMmIwYzUzMGQzYzdjIGxlZ2FjeS10cnVuaworNTc0MCBmOTQ3ODNiOWJmYmFiN2UxNjA5NmE4MDEyNzQyNzFiOTFjOGE4MzM2IGxlZ2FjeS10cnVuaworNTc0MSA5NzVjY2ZhNzIxZjZiZWFmNDUzOTc1MThkZjQ5Mjk1YzEwOWQ3Njk3IGxlZ2FjeS10cnVuaworNTc0MiAzYTgzYzAxN2RmMWVjYTk1NWVhMzFiNDkyMDUwMjFjMzg2M2VlNTZjIGxlZ2FjeS10cnVuaworNTc0MyBmMWZiMzI2YzdlMmZlMWEwOGVjOTM0NTA2ZGI0N2NiZmI2MmFkODdlIGxlZ2FjeS10cnVuaworNTc0NCAzNmExODQ4OTVlYjk4MGE2ZDhlYzNjMWFiOGVhMTY5NjdhMmVjMjFiIGxlZ2FjeS10cnVuaworNTc0NSA0M2M1ZTdhM2ZjMWZiNjJhZTM2N2U5NmY1YzNhYzUxNzViOTExMzljIGxlZ2FjeS10cnVuaworNTc0NiBhODA2NTc2MmEzOGVhMDFjNTU2ZmY0YjNhOTIxMjY3MTE5MTNjODBjIGxlZ2FjeS10cnVuaworNTc0NyBmOGEwNzE3MDI0ZmU0YmY3YzM3Yjk4OWJjN2M1NjE4ZmI3MTg4M2Y4IGxlZ2FjeS10cnVuaworNTc0OCA4NzFjNzY4ZDBkYTIyMDc3MjMyZGJlZTEyNTdmYzgyMTFkNDc3YTI4IGxlZ2FjeS10cnVuaworNTc0OSA2YTE4YzRjYjY4ZDg0NGM2ZWE3YjZmY2M5Y2YzZTY4YzZhMGNjNGUxIGxlZ2FjeS10cnVuaworNTc1MCA5ZmEyZTIxOGUyYTg0YzY4YWJmNmNiYTNlOTUyZjA2ODc4MTEwMjZlIGxlZ2FjeS10cnVuaworNTc1MSAzYTBmODRjNjkwNTBhM2FiMmY4ZDM3NTJlYTAwNjcxNzlkNzJjOGRlIGxlZ2FjeS10cnVuaworNTc1MiAyMTJlYWU1Yjk2NjBiNThlMzFjZmRiMzU1MWRmMTZkMmYxYjZhOGQ4IGxlZ2FjeS10cnVuaworNTc1MyA2ZDRmNzE0MzA3MjJiNWVkYWQ3NmJkMTYxOTEyYjZlNTZiNGE5NWYwIGxlZ2FjeS10cnVuaworNTc1NCBlMzhjMDlkMDA4MDY4Y2ZmOGZmYzBhMWEzMTc0NDIyZWM5YjZmMTY2IGxlZ2FjeS10cnVuaworNTc1NSAyODhlMzM3ZjczZTdlNDM2OGM3MDhlYzU3M2VjMWU2NmE3ZWQwYWM1IGxlZ2FjeS10cnVuaworNTc1NiA2NmY0YmY5NDYyN2ZlZTA4ODk1MDg3NThkNGMyNWMzM2FhOTcyOGViIGxlZ2FjeS10cnVuaworNTc1NyAzZjQ1NTc3N2ZmMjg0MWFkNWYzYTIyMWY2ZmQ0M2NiM2I3OWQzZTI2IGxlZ2FjeS10cnVuaworNTc1OCA0NWU0NDQ1NDdlNWEzNWU4ZmYwMDMzYTExZjIzNTVlZWJiYmZhYmQyIGxlZ2FjeS10cnVuaworNTc1OSA3MjM1Nzk3OGZmZDIyYTE4NTYzOTU2M2RhZWIwN2E1OThlOTA3ZDYyIGxlZ2FjeS10cnVuaworNTc2MCBiYWZjMTA1YmM3Y2Q5OWE1MmFkOWE1MmNkZDE4ZGZjYTYyZDM1M2RjIGxlZ2FjeS10cnVuaworNTc2MSAyYmRkZmIzY2ZjZjFhYThkODExZmRmNDFjNTYzNTgyNzMwNWVhOWM3IGxlZ2FjeS10cnVuaworNTc2MiAzY2ExMTFlMGIxYTc2ODc3ZTRkZTY4Nzc3OGJmZWQyNTI2N2UwYmZlIGxlZ2FjeS10cnVuaworNTc2MyAwZDZiNjBiNzQ4Mzg0Y2FmMjEzYzg1ZGI4YmQxMzA1ODEwZTNmMzU3IGxlZ2FjeS10cnVuaworNTc2NCA1OGVmNGM0OTVkZTc2MmM5NDZiODQyMTQxYzcyNDM2MzZjMDExMzJhIGxlZ2FjeS10cnVuaworNTc2NSA5YTQwODE0NDA3ODMwMThmZWYyZjU2ZjZmNmMyNDVhMDJmYmI2N2JjIGxlZ2FjeS10cnVuaworNTc2NiA0Nzc2M2FjNDRjNDg2YjcyNWI0ZGMzMWRmZGM0NGQ5MWQwNjIxODNhIGxlZ2FjeS10cnVuaworNTc2NyA5N2NkNTc3MWMyM2UyNTdkMmU1NzM5YTlhNDUyMDUyNmZlYmM2YjY2IGxlZ2FjeS10cnVuaworNTc2OCA3ZjViNDMyYjg3YzQ4YzYzNWYyOTRkMTYwZWE3MGQ5MDI1MGY1ODljIGxlZ2FjeS10cnVuaworNTc2OSA1NGYwNjc4NzU3YjAwZjZlMzJjNzg3OTBhYTYyZTc5YzZjMzIwMGQ3IGxlZ2FjeS10cnVuaworNTc3MCBkNGQ1YzlmYTc4NTkyYTE2YjM1NjEwZjYwOTk5NjkzYWJjMmRiMmUwIGxlZ2FjeS10cnVuaworNTc3MSA4YTUwOTdlOWQ3ZWUyZjM2YzY3N2VhMGQzMDc5NWU5M2Y1MWYxOTQwIGxlZ2FjeS10cnVuaworNTc3MiA4M2RhYTU0YzE4MWRkMGJjYzAxODIxN2Y2NTY4NWQ3YTUzMjg0NWQzIGxlZ2FjeS10cnVuaworNTc3MyAxNDBkODIzOWE0NDZlOGYzMWM0ZGMwYWI5NzZmZmI2NjFkNTg3YzA0IGxlZ2FjeS10cnVuaworNTc3NCAxM2IyNGQxMDM0YmQzYmNjNzBjZjUwN2ZlZGYzZDkzOTNhNGE1OWE1IGxlZ2FjeS10cnVuaworNTc3NSBlNTI0NjU3MWYwZmRjYWM3ZDg0MTZlYTdjODAzYjczMzBiODk0YjE4IGxlZ2FjeS10cnVuaworNTc3NiBiODI4YmNjZGExODk4MzVjZjc4ZDBiODJjNDEyYTM1ZGRjMDkxMmFhIGxlZ2FjeS10cnVuaworNTc3NyA2MDRiMWZjMjZkNjMzYTg4ZTAyN2QwYWViOTI1ODAwNmQ4Mzk3ZmI3IGxlZ2FjeS10cnVuaworNTc3OCBkZjBkMDA5MTYyYjY3NTE4NzFiZjA1OGIzMWZiNjViYTFiYzczMWYyIGxlZ2FjeS10cnVuaworNTc3OSBjMDY2NGJlN2Y2NjI0YjZjYTBmODVlNjU4ZTQ5NGY4MDg2NTA3NTNmIGxlZ2FjeS10cnVuaworNTc4MCA2OGZkYzQwYWRkMmNiM2Y1NWQxYWZiMjU5YjA5ZTE0MDM0ZjcxNTY1IGxlZ2FjeS10cnVuaworNTc4MSA1OGE2NzMyMmM4OTYwY2QzMzk1YTU1ZDIxOTQ5ZDIzY2M4MDVmMWM3IGxlZ2FjeS10cnVuaworNTc4MiA0NGY0OGFhY2E4YmZmNDU5YmMyMmYzNGI4NDgzNjU4OGNiNTczZTAxIGxlZ2FjeS10cnVuaworNTc4MyBlNWQxZjI0MmRhZjljMTYwNTFkZjQzNzUwYjg3YzI0YWIzYTZkNjhmIGxlZ2FjeS10cnVuaworNTc4NCBlNGY1N2RkM2QyNDY1Mzk1ODM0YjRmYjljYTQ3N2RiMmQ4MjdlYTFlIGxlZ2FjeS10cnVuaworNTc4NSA4YjhkNjBmYmUzYmY5NWJlMzI0ODNhY2Y0MDM3ZTFmNmU4YzU2MTNkIGxlZ2FjeS10cnVuaworNTc4NiAzMmI0ZThhZGViZWI4NGY3NmNmZjQ0MTQ4MWM5OTJkNGM5Y2U0MzIyIGxlZ2FjeS10cnVuaworNTc4NyA0ZTZkMGIyNmVmYWYzMmViNzc3Yjg1YTgwNzQxYTJmMjBlMzZkMjdhIGxlZ2FjeS10cnVuaworNTc4OCA4ZGRkYTY2ZGJmMmM4OTI2ZjllNDE4OTNlYTcwNjdlMDRhMzNiNjI2IGxlZ2FjeS10cnVuaworNTc4OSA1OTYzNDdkYjZhNjhmNzk3NjZiMzYwNDg4NzY2MGI1MGM1ZTRmNjMxIGxlZ2FjeS10cnVuaworNTc5MCA2MDk4YWFhOGFlN2ZiY2Q5MjYyOGE1OThiOTg0NTY0NmQzODE2OWIxIGxlZ2FjeS10cnVuaworNTc5MSAzNjkyMGJiZDgxYTgzNDQxOTQzZjllMDlmYWNmMmY0ZmUzNDBiNTcwIGxlZ2FjeS10cnVuaworNTc5MiA4OTUxNDQyNmI5YjhlNGEyMDg1Mzk3YjkyMDJhMTYyNDRkMTlkNDQxIGxlZ2FjeS10cnVuaworNTc5MyAxZWFiODQ5NTQ2MmZiNDAyYjkxNDAyMTQ4ZTc4OTRlNWVlNjMyZTM2IGxlZ2FjeS10cnVuaworNTc5NCA0OWY3YTRhMWYwZjZjZTc3YzVhZmJlODA5Nzc3Y2VjZjM5ZTJhOGMzIGxlZ2FjeS10cnVuaworNTc5NSA0YzY1NTExNWRmY2U3ZGZlNDFhOGJkYWYyOGEwZmE0ZDhkN2Q0NmQ2IGxlZ2FjeS10cnVuaworNTc5NiA2N2QzNDdjMzJmZmZiOGM5NjM2MTVmNzlkNTE0OTE5M2VjNjg4MTRlIGxlZ2FjeS10cnVuaworNTc5NyA5ZjFiNmUyZGI4ZTAxMmMzNzgyM2E0NTViOWNmZTJkMGEyZDU4MmJlIGxlZ2FjeS10cnVuaworNTc5OCAwZGEyNGYxYzNkZGU2ZGE0ZmRjN2NkMzM3MTk3ZGQ3MGNmNmJlYzU4IGxlZ2FjeS10cnVuaworNTc5OSA5NTY0M2MwYjBjMGViMDgyYjE2ZTljZWE1NjM0YmY2ZmJlYjg5MDhiIGxlZ2FjeS10cnVuaworNTgwMCA0YjViZmY5NTgwNGU3MmI3NzljYWE0ZWFhNGY1NzAxZDNiZTJkZGFkIGxlZ2FjeS10cnVuaworNTgwMSA5NjliZDkxMWUxMTRmY2YzMmVhNGQzOWUzYzU3ZTk4MmIzNDE0ZjZlIGxlZ2FjeS10cnVuaworNTgwMiA5YmQxZTQxZDZiMTE2YTU1YWQ3M2Q1OGZlOTYzZWE4MGMxYWU5YTY5IGxlZ2FjeS10cnVuaworNTgwMyAyNDk3YzQzZjQ5ODNkYmNjNTZmNzJiMTc1MzkyMWRiYWM2N2FjMzM1IGxlZ2FjeS10cnVuaworNTgwNCAyMDFkZTg0NTVjMmJjOWQxYTI3MjZkNGUyZmViMTRkMTVkMzhiM2Y0IGxlZ2FjeS10cnVuaworNTgwNSAyZGI1ODVlYTIxOGJmZGFjYzgyMjcwMDc0YjY0YmEzYzlmNGJlMGU1IGxlZ2FjeS10cnVuaworNTgwNiAxNmNiMDQ3MzIyNGNkNTE3YTNiNmM5ZmY1NWZlMzdhNzFmY2I5MjJiIGxlZ2FjeS10cnVuaworNTgwNyA5MWMzZTk4MjFkMGEwZDk0MWQ0Nzk1M2U0NWEwM2Y3ZmVmN2Y0Mjc2IGxlZ2FjeS10cnVuaworNTgwOCAzNjQxNjE0MDEwNWEyOTQzYmQ0MGE1MmVhYWNlNTc2NDc2N2Y1ODAxIGxlZ2FjeS10cnVuaworNTgwOSAwMDQ1MzYxM2NkNGM3NzQ5MmM0YTkyYWM5ZmM4MTA2MzAyZTdiZTRlIGxlZ2FjeS10cnVuaworNTgxMCAwMTIzNzZkM2FhMTQ3YjAyZDI2M2UwNTgyODY0OGE2ZjE0ZjJkMmEzIGxlZ2FjeS10cnVuaworNTgxMSAzYjQ4NDgxMmFjZjZlMmUxOTdmZmQ4MGUyM2Y2NjM1Y2JmNzk0YzAyIGxlZ2FjeS10cnVuaworNTgxMiAxNzA5ZDVmZWQ1MjhlNmFlYjFlZDUyMDA0ZGEyMzQzZmY5NzcwMTlkIGxlZ2FjeS10cnVuaworNTgxMyA1Njg5Nzc2MGU5NTg3MjU3NGU2MTJhYjg0MmNmNWNkNmQzOWI2N2U0IGxlZ2FjeS10cnVuaworNTgxNCBmYWEyMWNlMWZmMDFkYzc5M2FkN2E3Mjk1MjVhMDY4M2EyMzJlZTU1IGxlZ2FjeS10cnVuaworNTgxNSBlZmRkZTFkNzQyNGI5MDQ2YWU4Zjg4M2ExNGRlOGJjOGUwMzRlMTc5IGxlZ2FjeS10cnVuaworNTgxNiA4MjA5OTk4ZDY2OWUxNmEwOGZjYTQ5Y2JlN2FhMjg5ZjE0NmQ4MDRhIGxlZ2FjeS10cnVuaworNTgxNyAyYmUwYmRlM2EwNzE4ZTAzNzQ4MDg5ODk4Njk1MzQ5MmY4MTgwY2RiIGxlZ2FjeS10cnVuaworNTgxOCBhZTAwNGE0NTA1MGZkYTQ0NzI3ZGJkNzM4YmU2MDM1MzBjNDkyNmQ4IGxlZ2FjeS10cnVuaworNTgxOSA4MWY0NWY2OTM4OGUyZGU3YmU0ZjI1NWVjYjZkODcxOGJkNTNhZDBhIGxlZ2FjeS10cnVuaworNTgyMCBmNmE4NDBlODNkMmE1MmI4ZjQ4ZmM2MGU4ZTUxODg5Yjc1MjI5ZTg2IGxlZ2FjeS10cnVuaworNTgyMSAwYjAyMWNmNDFkZGFjMGJiMGMyYWEwYjc1NGU4Y2NiYmMxOWU1NWRhIGxlZ2FjeS10cnVuaworNTgyMiBkZGI0NTEwZWViNDY4MzUxZmI4ZDBmNjg2ZGRhZjE5MzNmZjY4NTYyIGxlZ2FjeS10cnVuaworNTgyMyA2ZDc2MmEyZjliNjlkNjgwMzM1NDYzZDY4MTQwNjFiMTJhZjJkMjBkIGxlZ2FjeS10cnVuaworNTgyNCAxYTE3YmE1MGJkNjgxOTE3NzI2NTQzZGE4ODM4M2FmNzFlODA1M2ZlIGxlZ2FjeS10cnVuaworNTgyNSAyMWQ4OTY5ODMyOWM2YjJiMmZlN2VkODY5NDUwNjM1MWYxNWI1ZjFhIGxlZ2FjeS10cnVuaworNTgyNiAwODk4NTQzMTUwMGI3MTZlZDMwMDk5MjliOGI5ODdhN2E0ODBjMTM1IGxlZ2FjeS10cnVuaworNTgyNyBlMGVmMDA5YjI3MDIyM2YyMjcyNTYwZGUxMDgzM2YxYTgwMTI0YWJkIGxlZ2FjeS10cnVuaworNTgyOCBlMjgxMjRiYjdmYWIzMThiMWZmZjhkZjU4M2U0MDQ3MjUwODUwODkxIGxlZ2FjeS10cnVuaworNTgyOSA2Y2E5Nzg3Y2QzYWFhMGY1NmEzZTVhZWZkOWFhNzVmNjU3ZTYxMGE1IGxlZ2FjeS10cnVuaworNTgzMCAzNjliMzBmNzhkNjNmY2U1YTcwZjAyMjY1NWYwY2ZkZTUzOWE1YjlhIGxlZ2FjeS10cnVuaworNTgzMSBiYzE3ZTgzMTNlYTA2YmI0YjE0ZTRiNzY1NjdhM2NmMjJiNTc4NDM1IGxlZ2FjeS10cnVuaworNTgzMiBmOGZmMjgzMjk5NzE2MmQ1ZmMyZTk2NmI2NWFiMTE4ZThhYTU2YzMyIGxlZ2FjeS10cnVuaworNTgzMyBjMjU4NjU4ODQ2NDk1OGQ0ODRlNmY0MDNhMjAzNzYzNjI0YWI4NDJjIGxlZ2FjeS10cnVuaworNTgzNCA0ZTFhZDI0NDEwYTcxMTZmY2Y0Yjc5NDE2MWU5M2I4MDk0ZWQ4M2U0IGxlZ2FjeS10cnVuaworNTgzNSBhZjFjMmYzNmRjMzQ4NjllNTBjYTE5ZDRkY2Y0NjUyNzNhOGMxOWViIGxlZ2FjeS10cnVuaworNTgzNiAzY2YyZDhhMmQ3NGIxM2Q3NzVkNWMwZDYxNzNiMWU3YjI1ZDA5OTdjIGxlZ2FjeS10cnVuaworNTgzNyAwNTA4NGVlNTRlNTQ4ZTJjYjg0NDc3YzdmMmYxNGRiZmRmMWI5Yjk0IGxlZ2FjeS10cnVuaworNTgzOCA2YjBhZjc4YTkwZTVmMTExODcyM2E5OGNmNzdhMzVkMzZmZDUyMGIyIGxlZ2FjeS10cnVuaworNTgzOSAzNTkwOGUzNzVkMWE2Zjk5ZmEyMjE5ODVjYjE2ZDM4OWY1ZjkwOTg3IGxlZ2FjeS10cnVuaworNTg0MCBmZTE5OGRlZTA2NDA4NjI3ZTczYzY2ZjcyYjEzOTkyOTVmZTdkNDA5IGxlZ2FjeS10cnVuaworNTg0MSAwYzg4MjFiZjZkYjU2NmFiZDczMTQ5ZDgwYWU5MmMyMzRlNWNiMDUwIGxlZ2FjeS10cnVuaworNTg0MiAyOGY0MWVjN2M1Y2M0MjM1NTlmNWFmNWI0NzhhNTJkYTI1NTMwM2RjIGxlZ2FjeS10cnVuaworNTg0MyBlMDg2MmYwNWUxODUwNzdlYWYwMzE0NDU0YTI3MTQzZjJkZmIwYTAyIGxlZ2FjeS10cnVuaworNTg0NCA4MjczMzg2OTkwOTQ0NGQ0OWVhNjdkMDlmMjVlODNhNmY4NmMzYWJhIGxlZ2FjeS10cnVuaworNTg0NSA2YTNmZmMxZGJiOTVkODk3MTcwMjMxYWMzYWU0NTY1ZDE1ZDgwMGVhIGxlZ2FjeS10cnVuaworNTg0NiAwNDY4ODhkYTFmNDRhNmY1MTEzY2RmMmE1ZTk4NWI0Yjg5Zjg4NDY4IGxlZ2FjeS10cnVuaworNTg0NyAyZWUxZjkyM2NiMTkzMjE2Y2MyZWQxMDI2NGJlMzlkYzkzZDJiMWY5IGxlZ2FjeS10cnVuaworNTg0OCBiN2IyYzEzYjVlMzMyODYwY2ZiYTFiYzZkZGZlYmJiMTM5ZWE1ZmU0IGxlZ2FjeS10cnVuaworNTg0OSBhNDQyMzVlOTk0ZjM3ZjQ5N2M3YjZiMjJkMTUzOTkzZGIxMzkyMTg1IGxlZ2FjeS10cnVuaworNTg1MCA5MmYxMWFlZmI1Y2EzNWY0NDFkY2IzOGE5NTUwZTBjOWQxNjJhODVlIGxlZ2FjeS10cnVuaworNTg1MSBjNzFhN2E0ZjVmOGVhNTgyNWEwNzhhY2IzZGY1ZjA3MGJkYWZkOGQ2IGxlZ2FjeS10cnVuaworNTg1MiBkNTUzMmE3MWI0NTRiNmMzMjQ5ZTgxZWEyMDAyM2YxMDk1NzEyNzU4IGxlZ2FjeS10cnVuaworNTg1MyA2ZjVmZWIzYjQ4MjlmOThjMDdkNGE1NzIyNzk1ZTM5OTZkMDMwNGU5IGxlZ2FjeS10cnVuaworNTg1NCA5ZmEyMjI4YmIwOTYyMGViZDNkZDgyMDZkOGI0YmFmOGFmMThhZjdhIGxlZ2FjeS10cnVuaworNTg1NSAxNjk2ZmJmMzAyYjYzZmQxZDYxYjcyNGM5NTUwM2JiMGQ1NDU0NWZmIGxlZ2FjeS10cnVuaworNTg1NiBkMTVkMjliYmMxY2UxMWZjZGM4ZjU1NmJhMDM1YmE1M2FmMDk3YWMxIGxlZ2FjeS10cnVuaworNTg1NyA4MzJmMjZkMGUwNjlmNmQ1OWVjY2YzMDVjOWViYWYxMjgzZmU2OTUzIGxlZ2FjeS10cnVuaworNTg1OCAxYzAwZDI4NDZlODQ5ZjY5NjI1Y2M2YjcyMjc5YWMwNTNhZTM5NGI0IGxlZ2FjeS10cnVuaworNTg1OSBhZGEyMjI1ODUzNjZlNmY1OTM0YTk5YzIzYTc2ZDRkY2JiMTRjYjgxIGxlZ2FjeS10cnVuaworNTg2MCBkOWE3OTk3N2IzOGQ0MzllYTNmMTM5NDk1YjVkMjdhOGJmOGIzOGE5IGxlZ2FjeS10cnVuaworNTg2MSA0ZmVhNmNkOTRkZmE0ZDU5MjIzZGViNWY4ZGZlMDEyNTQ4OTFlYTRiIGxlZ2FjeS10cnVuaworNTg2MiBmNTk4NjIzMDUwYTM5OGNhM2IyMjgyY2RhMGIyOTIzYTIyM2UxNzhiIGxlZ2FjeS10cnVuaworNTg2MyA1NDY0ZmIyZDEyOWU1MDgxOTIxOTk4YjE4OTNmNTFjMzE3Y2ExODhlIGxlZ2FjeS10cnVuaworNTg2NCA1ZDdhMTVkZjcxNTU1MjU2OTZlZmZjMzAzYmFhOTRkNzU1NTY3ZGM4IGxlZ2FjeS10cnVuaworNTg2NSA0MDlhODljNWY2NmQ1MmIyMmI0ZTdmNzFhOTA5ZjlkZjgyZGMwZjljIGxlZ2FjeS10cnVuaworNTg2NiAwMjQzNWZkOTUyNzdjNjJkMmJmNGQ3MjlhM2I1NTc2ZDlkZjYxZTRjIGxlZ2FjeS10cnVuaworNTg2OCAxMTZkYjczNDdkMDFjNGM2ZTVlZTIxZTRjMjlhNTNkYzlmY2JjNGZiIGxlZ2FjeS10cnVuaworNTg2OSAxZGY4ZjVhOGIyMTZkMTExNTU3ZWRmODBiZGU4NmVhMThiZDg4ODQ3IGxlZ2FjeS10cnVuaworNTg3MCA1MmRjZTRjZGM5MzBlMDFhOGUyODk3ZWFjOTY4ZmJjNDU5YzcyNzJmIGxlZ2FjeS10cnVuaworNTg3MSBiYTgzZGQ0NTg1MzMxMTg1NTFhOWYzZjJjNDQ4NDU0YzM2ZDQ3NjUxIGxlZ2FjeS10cnVuaworNTg3MiBlOTk0ZTY3YmNiOTUwMDFkZmQ5ZTQ4NTliNzhhMjY4ZjEyNDAxZTAyIGxlZ2FjeS10cnVuaworNTg3MyBjMjgzNDQ3Yjk4NWY1MmVhNDdlYjAwNDFlOTQ3Mzk5OTBlNDEyZjUyIGxlZ2FjeS10cnVuaworNTg3NCA4MTBlNjkwYWE2MDJiMDMyNDY3MWQ1YjFlYzJmOTJlOTU4NTc0MWJiIGxlZ2FjeS10cnVuaworNTg3NSBmMjYxNGFjNzM1ZDBjMjZjNjFhOGQ3ODhmZjNmNzhkOTA2Y2NiY2YxIGxlZ2FjeS10cnVuaworNTg3NiAzOTdlNmQ1M2E3YWRlNThiYjhjOTBmYWIzYjZjZmFmMmFiZDM4YmMxIGxlZ2FjeS10cnVuaworNTg3NyAyNzQwNmMzNmU4YmQ0NDllNzg4ZGI3NTEzMDExNDU0NzhjYTdlODJiIGxlZ2FjeS10cnVuaworNTg3OCAwMjI0NzRhYzI0NTFlNDkwMDZmZmUwNTViZDNlNDViZGM0YjMwYjJlIGxlZ2FjeS10cnVuaworNTg3OSAxNDk5MWM0MzMxZGYwODRkYjE0NGJmZWRjNTk0MjJjNTFhOWEzYjM3IGxlZ2FjeS10cnVuaworNTg4MCBmNmJkZGEzNzBjYjc0YjBmZDIzZTY3NWQ3NjJhNmM3ZGQzNzlmMDNiIGxlZ2FjeS10cnVuaworNTg4MSAyZmU3ZDQ4OTY1NGU4YWQ1YzU3MzFjMDBjNWMwZmRhMTk0ZWU2MDk2IGxlZ2FjeS10cnVuaworNTg4MiAwOThjYmQ2ZDE5NmU0ZjdmZGM5ZmE4ODFiZmI1NjdhNDEzNzk1YzcyIGxlZ2FjeS10cnVuaworNTg4MyBmNmE2YTY5OTI3ZmZlZjIxNTNmMjBlZjYyZGVmY2FhYjVlNDhhNzlkIGxlZ2FjeS10cnVuaworNTg4NCBiNmMwYTQxZTRhNDY1ODBjMmQwMzNmNjk0MzJlYWM5MTUyMWYwNjExIGxlZ2FjeS10cnVuaworNTg4NSBlMWRmOTAyMDVhMzMzOTM2ZDk2NjkxZWI3NDQ0NDZiMDQzYmI4ODYxIGxlZ2FjeS10cnVuaworNTg4NiAwYWM1ZmJhZjhhZWY4YmFhY2Y0OTE2ZTM2M2UyNDUzODQxYjlkNDI1IGxlZ2FjeS10cnVuaworNTg4NyBlMDQ1ZjkxMzJiMDdiY2JkYWU5MDM2YzlhZmU0YTkwYzQ5NTk0ZDcwIGxlZ2FjeS10cnVuaworNTg4OCAwMTNiYmU0ZWY5NDM3YWM1ODA5MGUwMTEzMzFkNWYxZGIxOWM1ODU4IGxlZ2FjeS10cnVuaworNTg4OSA5MGI1NDMxMjY2MWEzNTAzNGU3NjRkMTgzNjU0ZmJmNTEyZGNkNWQyIGxlZ2FjeS10cnVuaworNTg5MCA2N2Y1ZDI5ZDQwNWIyYTkwZjcwMTdmMmZhNWRkNGM2MjhkZTRkYThhIGxlZ2FjeS10cnVuaworNTg5MSAwMmM5ZGEyMGI0MWU2OTM2NmVlMmNiYjY0NmE2NjA1Y2NmNGI4ZDUzIGxlZ2FjeS10cnVuaworNTg5MiAyNGJlZTM3ODNiMzVmM2Y0YzkwZmUwNjMzNGI2MWQyNDFlMzMwMjRjIGxlZ2FjeS10cnVuaworNTg5MyAyMzI1NGRhYTI0N2I4NzUzMjJjODJjMTA2ZGQyYzM5YjgwYWRlYmY0IGxlZ2FjeS10cnVuaworNTg5NSA2NDAyYmUyNjg5YzU3OWQyZGNiYmVhYzI0YWNkZTQ3OWQ1Y2IzNWI1IGxlZ2FjeS10cnVuaworNTg5NiBhZjVmZjUyMzFkNGExZDRhYmY3MGI0ZmE1MTBmNmU2MDVlYWE2YWM0IGxlZ2FjeS10cnVuaworNTg5NyBiYTk4MzE0MDcxOGFhNDdjZTgwYTg0YjQxNmIxMTFmYTJjMjVkYjM3IGxlZ2FjeS10cnVuaworNTg5OCBkYTg2YjNiNTQzNjNjY2Q0M2Q5MGVhOGZkYjk0MGY0ODY1YzQ5MmIwIGxlZ2FjeS10cnVuaworNTg5OSA1Nzg0NjY4ZDA1NzZiZjEyY2E5MzczMDNiY2UyMjk5NWQ2NjJiODQ5IGxlZ2FjeS10cnVuaworNTkwMCAyNmJlYzllMjJlNWQwZjU2NTQxZmQ2OTE5MmMyMzczMmQwNzA4ZGYxIGxlZ2FjeS10cnVuaworNTkwMSA2YWJjNzVlYzZkMjk4MjUwYzYwNzFkMWVhYzZmNzQzYmVkMjgxNGI3IGxlZ2FjeS10cnVuaworNTkwMiA1NzhjYTMwMmE1OThjMzY2ZjgwMDQzZWZiY2MyZmMyNDVmYmQxZjNkIGxlZ2FjeS10cnVuaworNTkwMyA1MjlmNGQ5Y2JlM2Q4ZTcyMTNlZGQzYWRkNDhhZjQ3Y2YxZTI0YzJmIGxlZ2FjeS10cnVuaworNTkwNCBmNzIwNTBkZDYxYTljM2Y3Y2RkOWI1MWUwZmY0YTRkZjM2YmI5MDZkIGxlZ2FjeS10cnVuaworNTkwNSBkYjlmNmVkZTU4YTc2NmMwOWJmZDE4NzU1ODRiMWRjYmRjMjk3NWUxIGxlZ2FjeS10cnVuaworNTkwNiBkNzAxNDkyMDJjOTNkYzYzMmU0MTk0ZWRjNzhjYWE2NjRmNmU3MTMzIGxlZ2FjeS10cnVuaworNTkwNyBkMGQxYTIxZDQ4YjBhZDNjZjdjZmI4MTU5MDUwYzZlYzAwYmZiNzE0IGxlZ2FjeS10cnVuaworNTkwOCAxYWYxYWRjYTgyNDI3NDhhN2NhYjU4MTM0ZDM5ODA0YzdlZmJkNGIzIGxlZ2FjeS10cnVuaworNTkwOSAzYmRlNGI1OWE1ZDJlMGNiYmYzNjJlZjc3ZDg3ZTQ5OGVlZjU5MDgwIGxlZ2FjeS10cnVuaworNTkxMCA1NTgwOGY2MDA5Y2RkMDIzNzVlM2IxMzlmMGJkYzRkNjU4YjAwNTExIGxlZ2FjeS10cnVuaworNTkxMSAwNjZhOGFlNGQ0MDYzYWI5OTk4YTdmMjcxYjYyMDBjNTIwZmYwZDhmIGxlZ2FjeS10cnVuaworNTkxMiAxZmYxMjgwNGZmMmE3NDVlYTliZjFkOWFjZTUxZjM2Y2UzZDkyMzgzIGxlZ2FjeS10cnVuaworNTkxMyBlNzZjYTM0ZDQ4ZjNlZWYzMTU1MjkwNmIxMjgyYzcxMWVhZTczMjExIGxlZ2FjeS10cnVuaworNTkxNCAwNzk3N2JmMGQ5OTcwYjdjMWI5ZDI2YmIyZTFlYTBlZTg0ODk3NzU5IGxlZ2FjeS10cnVuaworNTkxNSA2MjNiYTliZGViMjIxNTFjOTBkNDU2YmQxM2Y5YmI2MjQzNGMzOTFiIGxlZ2FjeS10cnVuaworNTkxNiBkYjc2ZmQzOTBmNzQ5YTFmZDA1NTgyZGIwOThiYjM0MzcyYWZhMTY4IGxlZ2FjeS10cnVuaworNTkxNyBmOTFmNjE5OGIyNzY4ZjZhNTBkYTZlN2EyMGMzNDc4NjZjZjY3ZDZiIGxlZ2FjeS10cnVuaworNTkxOCBjM2U1MWViMWMxNGZkZmJjZjkzYjFiYWExMGZjMDQ4MGViZDJiZTg2IGxlZ2FjeS10cnVuaworNTkxOSA3MTNiZDgzNzczODIwZmJlYTNkN2FiNjEzZjBkYjYzN2NiZDg3ZjMxIGxlZ2FjeS10cnVuaworNTkyMCA1YWJiYzliNWZkZjBiMjdhYTJmMjFiNDdlMjE2OGQxZGFjZTFmOTFlIGxlZ2FjeS10cnVuaworNTkyMSBlYzg0OTQ5ZjgxZWVkZjkzYTEyNDczMzFhM2Y4ZmU3M2Y3NzJlYjEwIGxlZ2FjeS10cnVuaworNTkyMiBhN2MyNzM3Njg3YzIxMmU1NWZhZTYxZDY3YmNlODBjNjNlOGY5YzZiIGxlZ2FjeS10cnVuaworNTkyMyBlNjQ2YWZjNTBhYzczYTlhM2NmYzg3NDRkMzU2YTI3NmE1NzE0MTk5IGxlZ2FjeS10cnVuaworNTkyNCAxNDQ0YTM1MjRlZGUwOWIwNDA3YTA5YWJiYjJjMGI1MGE2OTkyYTlhIGxlZ2FjeS10cnVuaworNTkyNSBkY2M1OTQ5MzQ5OWFlNzBiZDJkYTBjNjBkZDE1NzQwMmY3OWRlMTAyIGxlZ2FjeS10cnVuaworNTkyNiBhNzFkMmZkOTBmYTg3Yjg0ZjliMTRjYTUzYzMwNjFhMDFkMzE4MjUxIGxlZ2FjeS10cnVuaworNTkyNyA0MDhkZmM3MTg5NTE4ZjFkNGZhOTYwMDM4NzBkOGQ3NTg0ZDQ4N2M2IGxlZ2FjeS10cnVuaworNTkyOCA3MDUyMmRiMTEwMTlhOGNiN2MyMWI4MTYxY2FlNGE3ZTZkZTYwZTFkIGxlZ2FjeS10cnVuaworNTkyOSA5N2IwZTk2MjVlYjFkNWY4MGViYjZmNzA0ZmI1NjUxOGEyNjZjYmNkIGxlZ2FjeS10cnVuaworNTkzMCA4MDNmYmNkY2ZjOWY4N2Y3NDdjZDQwZmYxMzg5MzFkZDQ3ZWZmM2RkIGxlZ2FjeS10cnVuaworNTkzMSA4YjNmMmE4NjIwZjU0ZmI4YjQ1NGNhNWU4ZGE1YWY0N2I5YmY3MTE4IGxlZ2FjeS10cnVuaworNTkzMiBkMTk2OGE3Y2M2MjBjMTYxMDFjZjZjYWQxNjNmZTFlYjAxMDUzODM4IGxlZ2FjeS10cnVuaworNTkzMyA4ZGQwMTg4ZTUyYTdjOGM1OWI4Y2ZlMDMyNWMxYjIxZjg4ZTgyNTE2IGxlZ2FjeS10cnVuaworNTkzNCBmMGJhYWRiZmNhYmRiNTJkY2I2ZjIwY2FiYjEwOTc3ODRkMGRmYmE0IGxlZ2FjeS10cnVuaworNTkzNSAxNDI1ZmM2NDkxZWJiZmNkOWIyZmJjNDcyNTlkYzc0MDdmNzAzNTIyIGxlZ2FjeS10cnVuaworNTkzNiA0NTBmNGQ0NmQ5ZGJmMDEzNmU5OGM3M2UyOGViYWUyNDc4YWUzZWE5IGxlZ2FjeS10cnVuaworNTkzNyA2MjBhYjNkYjA3OTM0YzQxODFiZTJlN2RiOWI1NTk3NGRkNWJiZWJiIGxlZ2FjeS10cnVuaworNTkzOCBlOTA0MzIyMzkzNWFkMzRjY2NmOTE0ZDRhMGIwYzkxZmUzZjU5NWYwIGxlZ2FjeS10cnVuaworNTkzOSBiMzhmZGIwMDhmMWRjMzFhOTU4ZGJjMDQxNzAwOTg5N2E2OTY2NmJmIGxlZ2FjeS10cnVuaworNTk0MCBhYThhZGZkZDNhYTFlMWU5YWU1YjJjZTJjMjUyOGJkZDcxMjZlMGQ0IGxlZ2FjeS10cnVuaworNTk0MSA1MGFhMTZmODA5ZDc2MDAzMmMwNDFmZDVkNDY0MTdiZTYzNjgzYTNjIGxlZ2FjeS10cnVuaworNTk0MiBhMjkyYjc1ODNjMDE1YTI4MmExZWY5NjYyYzdhZjdkMGM4NDNhYTUxIGxlZ2FjeS10cnVuaworNTk0MyAxMTI5OWU5NWNhZTg0MGQ3MDEzYjAzNjBhYzE5MmZjYzk2N2VmYTEyIGxlZ2FjeS10cnVuaworNTk0NCAwNzM1NTBlMzEyNzMwNzQ3ZjU2MzQyMTQxNTMyYjkwYzc5MGZjOGVhIGxlZ2FjeS10cnVuaworNTk0NSAzNWM0YTQ4ZDlkYTE2OTRjNTBlNmY4ODNhNTA5MzdlNmMxNjEyMzYzIGxlZ2FjeS10cnVuaworNTk0NiBhNGYwMWQ0M2RhZDY5OTAxNWQxNjA2YTRiYTViNzM4ZWQzMDMwOGRhIGxlZ2FjeS10cnVuaworNTk0NyA4OWNhZmZkMmMwNjE0ODgzNWMyOGQ0NjQ2ZTljNjMzY2I2ODczNzNhIGxlZ2FjeS10cnVuaworNTk0OCBhZWM4YmJjZjhiMGU1ZjAyYWY4MjdkYzQ5M2RlZGI0MGMzZWY2MWY0IGxlZ2FjeS10cnVuaworNTk0OSA4MjdmMTFhZDY1ZGY2M2RkODdkOWRhOWZiYTI0NGI1MTNkOTdjMTZlIGxlZ2FjeS10cnVuaworNTk1MCBlMjkwZmFlYjkyYzg1Zjc4M2I0MzIzZDA3Y2FhY2Q4ZmQ5NjkxZmQ1IGxlZ2FjeS10cnVuaworNTk1MSAwMGNhOTAwYzc3NDJjNWUwNzM0Mjc2NDBiYjMzNWZkZWUwNjZlZDVkIGxlZ2FjeS10cnVuaworNTk1MiBmZWQ5M2QyZDg4ZmM0NmY5Y2I3ZTYwNWU1NDMyZmE4Y2MyYjg4OWY0IGxlZ2FjeS10cnVuaworNTk1MyBjZTI3ZTAzMjg0NjJlZDk2ZjM5MGMyODZmMjIyNDViMTk3M2MxMjljIGxlZ2FjeS10cnVuaworNTk1NCA2MWYxOWE3YjFmZjEwNmM2N2U5NTMyOTYyMTA1ZTg1ZjQ5ZGMzZWE2IGxlZ2FjeS10cnVuaworNTk1NSAwMmEyM2U2ZTQxNGFmZmU5NDc5YThkZWZjNTgxNzhmMmQ5NDY2NTNkIGxlZ2FjeS10cnVuaworNTk1NiA4MzU1NzE1M2Y1NDQ3NDAxMzMzZWM1ZDFiY2JmMDJiMzdhYWE0MWFkIGxlZ2FjeS10cnVuaworNTk1NyAyYzE3OGJmNzBmN2VmMzljMTc0NGFmNGJhODQzMThjNmU5OGRhNmQ4IGxlZ2FjeS10cnVuaworNTk1OCAzYjZlYmY4ZDJhNTllNjY5MGM5MjZhZGQ0NjRjYTk5YmFiODk2ZjcyIGxlZ2FjeS10cnVuaworNTk1OSAxZGZjNTE5ZWEzY2JlNDVmZDdmMDA0YzNjZDFiNjM4NThhMWQ0ZjZiIGxlZ2FjeS10cnVuaworNTk2MCAxNmE1ZjYwNDg0NjFmODM5Y2NlMzY5ODQ5OGY5MmQ4NmIwMjUxZTcyIGxlZ2FjeS10cnVuaworNTk2MSAwODEzMGYwMGMxOGRiNTAzZjRlMzk1Y2EyZTU1ZDFjNzc5MTE5YTk5IGxlZ2FjeS10cnVuaworNTk2MiAwM2M2YzE4MzI1ZWFjYTk2MmMzMTg1NzU2NDIxYzY3ZWU5MzcyZjQ4IGxlZ2FjeS10cnVuaworNTk2MyAxNDJjYmFiZGQ5NDU1NmEzM2I1NGZlMGVhMjQ3NDhhMDdhMmUzYjM0IGxlZ2FjeS10cnVuaworNTk2NCBmNzBkYmU2MDhmMDMxZjdiYWQ4YTFlZWMyMDFmMTU4ZjgyYTRlMWVjIGxlZ2FjeS10cnVuaworNTk2NSA4ZDQzYjgzMDM0MWJiNTZhZWYxYWZiM2YwNmJiNWZmNWExMzNmYTk2IGxlZ2FjeS10cnVuaworNTk2NiBkNjI0NmFlYjRhM2YyNzQyZTJjYjVjMjU2NDcwNzNjZmMwMmQ4ZjFjIGxlZ2FjeS10cnVuaworNTk2NyBjZGVhM2YyN2NmN2M3MGI4MjA5NGU2NjUyYzZjMWI1MmVjZWY5MjA5IGxlZ2FjeS10cnVuaworNTk2OCA1ZjI1MDQwZmQ2M2U2ZjQwZDFlNjdjNmI2ZDc0NzE1MmEyMDRiN2RlIGxlZ2FjeS10cnVuaworNTk2OSBlYWU3MGQ3ZjJlYzdjOGUwYTVlMTFlYzU3N2NkYmZiOTJhNDM5NzIwIGxlZ2FjeS10cnVuaworNTk3MCBlYjViOGQzZDhhY2Y0MjdiM2JjM2VmZTE2NjUxOGFmZjI1ZDE3ZGIzIGxlZ2FjeS10cnVuaworNTk3MSA2MTg5NGJhNTcxZjVhODNmNTNhYzI1YjEwOTljOTM5NTNlNTg5MTk1IGxlZ2FjeS10cnVuaworNTk3MiA4OTlhZWZlYTgwMWM5OWFlMzRiNzc1NmIwMDVkZjZlOGU4OGY2ZGQyIGxlZ2FjeS10cnVuaworNTk3MyBlOGQ1MDFjODhhM2UzZTliZGNkNmZlZjg0ZjFkMDRkNjk4MTBjZmIzIGxlZ2FjeS10cnVuaworNTk3NCBmNmJkNTdkYmQ1MjRkZWViNzU5OWI3OGIzNmFiOGIyZTE2NjZhZTNkIGxlZ2FjeS10cnVuaworNTk3NSBkMjRmOGQ3OWVjYTA3NGMwMjAzNWNmMTgyZWNiYTJkMmExMDlhYmYzIGxlZ2FjeS10cnVuaworNTk3NiA0MzFlOGQwMTA1NDdhMjNhYzhmNzg0NmMyYmJmZWM2ZWI3NjdkZjMyIGxlZ2FjeS10cnVuaworNTk3NyA2ZjM2M2E0MTc2NjExNzJmYjI0OGJiZGUwMDRlN2Y3ZmY3MjUxMTFhIGxlZ2FjeS10cnVuaworNTk3OCA1NThkY2U2NTUzZDkwNWJiMDY1MDE2MjI5OTY0MDFiMzk2MTk4YmQ3IGxlZ2FjeS10cnVuaworNTk3OSBhMWMwYzJhMzg4ODNmYWJmNzlmNDY5YTc4M2M5NzA3YmNjNWU0MDg4IGxlZ2FjeS10cnVuaworNTk4MCBjNWQzMGE1NjQzYmVhZWVkZjU4NmU3ZTk1YWMzYjAxNWEyYmM5MjlkIGxlZ2FjeS10cnVuaworNTk4MSAyYTA5OWZiNzY4MjNiMzJlYzNkOWY2Njc5ZGQxODUzN2JlNWFmZjVjIGxlZ2FjeS10cnVuaworNTk4MiA0MzYxYTVmZmI2MzgyNjAyZGUzYTFjYTA2YmI0YWM2ZmJlNmRlZmNkIGxlZ2FjeS10cnVuaworNTk4MyAwNWFmMjllOGRmMGU3NTZmNmU5YWJkNjU0ZTc5YjliYmVjMDI1MTlkIGxlZ2FjeS10cnVuaworNTk4NCA1NjZmNDZiOWQ3MTI2Yzk5Mzk5NmQ1NTlkYmVhNDRmNmRjNjdjOTA2IGxlZ2FjeS10cnVuaworNTk4NSA3ODc5ZjNiMzk2MDZlY2ZiYzNjNTdmMzU0NDJmMzQ4ZWZiNjAyZjJlIGxlZ2FjeS10cnVuaworNTk4NiA1NDJjODBlNjIxMTE0ZmYyYzlmOWYyYWM3OTlkOWU5YTBiMzQ1YTNlIGxlZ2FjeS10cnVuaworNTk4NyA3ZjIzMGQ0ZjM2NTVkNjZlMzUzNDhkOTJhZWE2OTBiOTYxMzhkZTRkIGxlZ2FjeS10cnVuaworNTk4OCAwNWU4NTA1NTU4MmNiNGEzMmVlM2UxODQ5OWQyNjg4ZjNlN2I2ODQ5IGxlZ2FjeS10cnVuaworNTk4OSAyYjJmYzlhMGI0ZWMxNjk2ODYwNjVhMjdhMjgzYmUwMmY5NGRmZDFjIGxlZ2FjeS10cnVuaworNTk5MCBkNzgwMWE3N2ZjZDU3YmYwNDlkZTdiNDUzMzIxNTkzMjMwYzcxZDBiIGxlZ2FjeS10cnVuaworNTk5MSAwMTQ1YjhhZTJkNWZiOWZkMDhmMmEyMzYxOWQwYjUyMmFjMjJhYjdkIGxlZ2FjeS10cnVuaworNTk5MiA5Mzk5NDUxOTIwMDAzOGVlNzIyM2U2NzI3NWNmMWNjZTcwN2VkN2Q1IGxlZ2FjeS10cnVuaworNTk5MyA0M2FmNTIzYTAwY2FmZDcwNjg2NjFiZGI3MDI1YjhiYjcyZGUzYmY4IGxlZ2FjeS10cnVuaworNTk5NCA3M2JjNDFiZTcwNzRkZTMzYWU0MWY1YTEzNjk0NmIxZTE2OTgwNTA5IGxlZ2FjeS10cnVuaworNTk5NSA4NTUyZTE3YWRhNjhhMThlODhjNzQzOThlZjgwNGUyNzMwNzQ4ZTAzIGxlZ2FjeS10cnVuaworNTk5NiA1MTBkYmZhOGM1OTk4N2NmZmNiNGQwZTQ4MjZjNmVmMzllMjcwZjEyIGxlZ2FjeS10cnVuaworNTk5NyBlYjgzZTRiMGM3MzM3ODA0ZDEwMDQxZjdjNjJmYjEyZDZhNDk1NzhkIGxlZ2FjeS10cnVuaworNTk5OCA1MGU1YjRjNTg5NWZjNTJmNTdhZTM0MzAzNWE1ZDM5MDJhM2IxYjU0IGxlZ2FjeS10cnVuaworNTk5OSAyNGZiOWY0Zjg5ODRiNDdkMWZkNDQ1NTgyMTI0MGIyYWNhZGQ4ZWY2IGxlZ2FjeS10cnVuaworNjAwMCAzOGUxNDgwZTdmODlkYmQ2OGU2Nzc2MzA1MDkzMDZlMmFjNjM1OTk4IGxlZ2FjeS10cnVuaworNjAwMSA3MjhkNTc0NWFlN2I4NjJjZDkyMmE4MzI1NjFhMzJiOWVhMzg5M2M0IGxlZ2FjeS10cnVuaworNjAwMiBlNjdhZGM4YjJmMTY2NzIyNWIxZGU3ZTE3MjFkMGQ4Zjg2YzBlZjY3IGxlZ2FjeS10cnVuaworNjAwMyAyMGExM2ZjZGFlNTRmOTMwMGFmOTQ2MzhjNGE1ZDJjZDY3OTA5YzQ3IGxlZ2FjeS10cnVuaworNjAwNCBhYzhkMjRmMWRmMDgyOThhOTA3Y2JkMjMyY2RmNTZhYTAyZDNlZjI5IGxlZ2FjeS10cnVuaworNjAwNSA4MjMwNzA3MWM2NjVlN2M0ZTFjZjcyM2IxOWM3Y2Q5ZDFjNTI3ODE1IGxlZ2FjeS10cnVuaworNjAwNiAzNWJlYzg4ZDk3MzQyYWYyNzE3Y2ViNTExOWQyOWQxZTJlZDUzZDBkIGxlZ2FjeS10cnVuaworNjAwNyA2YzU0MWM2M2M0M2ExMTJmNDlhY2YxYjQ0Mjc5MDgzMDRhY2VjN2U2IGxlZ2FjeS10cnVuaworNjAwOCA1YWVjNDkxMTE3NzI2YTdmYmM0ZDIyOTJjZjA0M2UwZDAwMWJhYmQ0IGxlZ2FjeS10cnVuaworNjAwOSAyYjE2NmIyMjBjMTEzZGE3OThjNjg5Y2NhMTBhZTUyMTViNDY5MWYyIGxlZ2FjeS10cnVuaworNjAxMCA2YzI1ODA0M2NmYWE1YTgzNTRmMDhkYzUwMWFhYjAzMzNlYTQzMDc1IGxlZ2FjeS10cnVuaworNjAxMSA1ZGYyYWNiYTBmYzUwMTk2MmFhMjdjOWU3ZmY4MmY5MjlhMDZlZTM5IGxlZ2FjeS10cnVuaworNjAxMiAyMmQ3ZjU0YzU3OTI3ZTMzYmY4NjJjNTI3Y2ZhOWZmNGZhMjc2MzZiIGxlZ2FjeS10cnVuaworNjAxMyAyYzkwMGRhZTg3OTkzNWJjYmYwODdhZTNmNjY3NWYxZGJkYTQ0N2E2IGxlZ2FjeS10cnVuaworNjAxNCA2ZjUyM2JkMGEzYWJmZjI5YTk5ZGE0YTM0MjY2MzEwZDNjNjcyZjQwIGxlZ2FjeS10cnVuaworNjAxNSAzZjdjZGYxNjYzZjdhZmYzNDE3NjM2NmFlMDdkMGM2MWMzODY1NGY2IGxlZ2FjeS10cnVuaworNjAxNiA5Y2E4YWU3MWJiYjA4ZDAzY2I1MWVkNGJiYTQwNThlYjE0MDZmNzgxIGxlZ2FjeS10cnVuaworNjAxNyAwNGVkZmNiYjcxMjEzMGE3M2I1OTU4ZDJmNjZhZDQwOTg5ZWVhMTlhIGxlZ2FjeS10cnVuaworNjAxOCBmNjYzMDZiYzA2NjNlNGQyN2MxNTc0YWU4YmZkY2NkN2NlODEyZGY0IGxlZ2FjeS10cnVuaworNjAxOSBhOTViMzUwYTQ0ZGFlN2FjNzZjMWQ0ZWYwZDZiZTYyODQ2NGEyMTdkIGxlZ2FjeS10cnVuaworNjAyMCBlOGEyYTVlNGM3YjA0NjBiODU3Y2RmMDk4ZjEzNmEzYzIwYTg5ZDZlIGxlZ2FjeS10cnVuaworNjAyMSBjN2U4MDg1OTZkMTQxYzAyMjVhNzNkMzQzNzJhZmYzZjJmOWUwMzAyIGxlZ2FjeS10cnVuaworNjAyMiAxZDAzNWUyMTEyMDk2OTE4YWQxYzAxMDJiZDFiYWM3NjI2NThjM2YwIGxlZ2FjeS10cnVuaworNjAyMyAyNDI3OWJhZmE4Mjg0MjkyNzJiYTgyOTYwMTBhM2M4ZjdkMTljYjRkIGxlZ2FjeS10cnVuaworNjAyNCAyOWMxOGZiMTNkOGY0MTJkMWM5ZTBlMTg2NjE1NDM2Y2U5OTlmNjk0IGxlZ2FjeS10cnVuaworNjAyNSA1M2M2NmQxOWQxMjdhMzMwZmEyMTE2YmQ2OGEzZjFlMzViY2ExYmZiIGxlZ2FjeS10cnVuaworNjAyNiBjZWU0YTZkODQxNWVjMWJhZjJhMmY5Y2I4YjgxMmM1MDhhMDgxNTQ1IGxlZ2FjeS10cnVuaworNjAyNyAwOThiODhkMjYwZDEyZmIwNjY2NzdkMDE1Nzk4ZDVmZjkyNzg0OGRkIGxlZ2FjeS10cnVuaworNjAyOCAxOGE5YzYyODA1NDNiNTIyOWI3NzFmNjY3NTk0YWEzNTExMmMxNzY3IGxlZ2FjeS10cnVuaworNjAyOSBiOGIxYjZiOTc0MzM4N2M0N2U0OGIzMzJkMDFhYWNiNTc0MmRmMzEzIGxlZ2FjeS10cnVuaworNjAzMCA5MTg5Mzg3MWJhMDc0MjM0NjYzMjUzN2Y0OTdjZTZjNjcxNDg1NDJjIGxlZ2FjeS10cnVuaworNjAzMSA1MjI3ODQxY2ZhMWZiNzA0ZTljMWRmODBkZDk1MzUxYWFhZjg1ZTFiIGxlZ2FjeS10cnVuaworNjAzMiAzNWIzNTM2ZmI3NjNiOWNmNTlhZWU4NzdmMmYxNjRjYjExM2M4NDNjIGxlZ2FjeS10cnVuaworNjAzMyA5MWMxMDgyMDY5ZDgxMzIyZDRiOGZkMTQ4MmYwNWU5MjU1ZjM1NzkzIGxlZ2FjeS10cnVuaworNjAzNCA0YzBhNWNhMzBmOTRhNjc0ZGY5N2FjZGE1YzU5MWNhODMwMWY2YmNiIGxlZ2FjeS10cnVuaworNjAzNSBhYTExMTJkNTY2NjgzYWZkYTc0Y2M4NDE5MmM5YThmZTYyZjJmOTRhIGxlZ2FjeS10cnVuaworNjAzNiA2ZjcxNWJmZjE3ZTQ4MjI5OTg3OTYyODE3Y2YzZjFlNGViZDdlYmFhIGxlZ2FjeS10cnVuaworNjAzNyA2ZGU0NGQ5NjYyOTI2NTlhZTk0Y2EwMWJiYWIzZjkzZDhhY2JmMTI5IGxlZ2FjeS10cnVuaworNjAzOCA5MjJjMDAxNjVmNzYxMmZhZDc3MTA2NGYxNGIwNTdlNjllYmI0NDUxIGxlZ2FjeS10cnVuaworNjAzOSA5NzdmZjFhY2UwNzAxZTk5MzEyNTc4MmQ5M2VlNTE3ZWVjZTdjNjI3IGxlZ2FjeS10cnVuaworNjA0MCBmNmIyMThjZWM2YmVmNjQ5Y2ZlY2M2ZDY3NDc3Y2IyOGU3ODcxZjk4IGxlZ2FjeS10cnVuaworNjA0MSA2YmUzNjVhNjczYjE0YzAzZjRkNThlYTFlODBlODZjYTFlZmVjMGEyIGxlZ2FjeS10cnVuaworNjA0MiA0YzdiYWI0Y2RjYTZlOGNjMmUwOTdkZGEzZmFjYzNiMGIzODJkNWE0IGxlZ2FjeS10cnVuaworNjA0MyAxZWMxNTQyNDE3NDc1N2YwYjU3ZTk4MDFjNmNhN2Y2YjE3YjAxZWNhIGxlZ2FjeS10cnVuaworNjA0NCBlMmIzYTY5NmQ2OWM3NTdjNWUzN2IwNzE2NzdiOTlmYmRmM2Y0YTZkIGxlZ2FjeS10cnVuaworNjA0NSA0ZWMxY2FjMzQyZGRjN2ZlMjQ1YTIyM2VjY2U3YTMyYWIxMzJhYTVkIGxlZ2FjeS10cnVuaworNjA0NiA2ZWM3ZGYyMDY5N2QwODY1ZThlNDQwZTljZWFiZjFmZDc3NTUwZTRmIGxlZ2FjeS10cnVuaworNjA0NyAyNjRkMTk2YmM0YzZkZThmZjg5OTYyZWE2NzNiMmE4ZDQ4YTQ1NGQyIGxlZ2FjeS10cnVuaworNjA0OCBmZDE2NjlmOGQ4NzQzYmE2NjE2Mjg0ZTViZTgyNjU5NGYwNjkxN2RhIGxlZ2FjeS10cnVuaworNjA0OSA4ZTY2Mzk0NWUxNzQ0NWM1OTI0OTdkY2I1Yzc3NWMyMWM1OWM4NThmIGxlZ2FjeS10cnVuaworNjA1MCBlYzhmNWI3NWRmNjRkYWNhZjMwMTZhZTk0ZGU4NTQxMTkyY2QxMTAwIGxlZ2FjeS10cnVuaworNjA1MSA2ZjQ1YmVlZDM4NzNmNzFjZGMwYjNlODk2NjBjYzEzZTJhNmI0Mzk4IGxlZ2FjeS10cnVuaworNjA1MiA2YWI0Y2JjZWRlYzIwM2I4Mjc4YTAyMjQwZjQ4ZjU2MjRhMmQ1MDUzIGxlZ2FjeS10cnVuaworNjA1MyA3MmFkMmYxZTk5MTlhZmVjMWNjN2JlYWI4ZDg5ODQxYWFmNTVhYjE2IGxlZ2FjeS10cnVuaworNjA1NCA0ZWQwOWEzYzMyMDE4ZTIxOWRhOWI3NjIxMTUzYmQ1ZjhjZjhmZDEyIGxlZ2FjeS10cnVuaworNjA1NSAzNmNjM2VlNTRmMjhiODgwMGVmM2ZjMTBmMjA1NTM1YzA1ZTRiODhjIGxlZ2FjeS10cnVuaworNjA1NiBiNWNjY2YxYzhmMzg2NmJlYWRjMzk0NjRiYjI3ZDZkMTMxNTY4ZTQzIGxlZ2FjeS10cnVuaworNjA1NyBkYWZjOGExMGIxODY4MDQ2MGRmN2UxOWQwZjIzNGExNjM0MjRhY2U0IGxlZ2FjeS10cnVuaworNjA1OCBiZDIwYzA0Mjc0ZmZhNmU2OWUxYzk0YTJjODIzOGI3MjU3ZDYxOGQ5IGxlZ2FjeS10cnVuaworNjA1OSA3MzY2NGVhMjAzMGUwYmZmZmJkZjBhMDY2MWE2ZWNmM2MwM2I5OGQzIGxlZ2FjeS10cnVuaworNjA2MCAxYzE4ZjkwNjM2ZmJiZTA4MTYxMjZhMWU2OGUwMTRlYjI3MzhhMWQyIGxlZ2FjeS10cnVuaworNjA2MSAyNDAzNjIwY2E5MzFhZWZjZWUwNzg5MmRkMjcyNjQwZGE5ZDNmNGQ2IGxlZ2FjeS10cnVuaworNjA2MiBkZTk4N2ZkNjdjOTQzNTAyZDViY2FlYmYyMTgzYzdiNmRjOWZhMDg5IGxlZ2FjeS10cnVuaworNjA2MyA1NjQ5MTIyNjcyOTBmNDQ5ZTFmMjRlZWM5N2IxYjQwZjI4YWIzYmM0IGxlZ2FjeS10cnVuaworNjA2NCA2MjkzNzIzMjA1YTZhODI5NGVlOTBhZTE0Mjk5ODUxYjY0OTMzNTA3IGxlZ2FjeS10cnVuaworNjA2NSA4ODAwZGYzNjZiMTMxZDJhMjY1MmUwMGIxOGU1NjJiNGRhNzdmZTBmIGxlZ2FjeS10cnVuaworNjA2NiBlMDc1OTczODlkNjRiYmZiNThiNjhjMzQ1NjE4NzFkMjUzNzZmZDgyIGxlZ2FjeS10cnVuaworNjA2NyA2YzkyNjBhZTBkMTYzNmE5NWQwMTBjMzZjMGI3NmIxZDg3MDJhYWVmIGxlZ2FjeS10cnVuaworNjA2OCA4NzM4YjBkZDc3ZmQ4NzAwOWNiZThjYTFlZjFkMTIwN2EwNWI1YjQ3IGxlZ2FjeS10cnVuaworNjA2OSA3YzU3MTFhNmE0NzU5N2Q5MzFiZTRlZTgzMjU0YTMyYzE2NTY3N2RiIGxlZ2FjeS10cnVuaworNjA3MCA1YTdhNzYxNjZlN2UzOTk4MTk0ZTEwMTIyMWMzOThlNTNiNDJkM2ZmIGxlZ2FjeS10cnVuaworNjA3MSA0MDQ5NmRiOGNmMWZjYzk4ZDYyOGU3OThiMDI2ZTBkMjJmNjg3Nzc2IGxlZ2FjeS10cnVuaworNjA3MiBkOTA2N2M1ZjUwYWRkNDllMzlhNDJlNGI4M2ZiMTcxZGFlMzlmZWJkIGxlZ2FjeS10cnVuaworNjA3MyBlYjZlZjdlY2EyMDdkMjk4OWI5OGIwYTcwMDdiMWY5YzU1ZDcwZTBhIGxlZ2FjeS10cnVuaworNjA3NCBhYTVmM2VjYmY1NmYzMmQ4ZmNjYjRjNzJkNmE1Mjk5ZjRkODljZjk2IGxlZ2FjeS10cnVuaworNjA3NSAxZDRmMmYyMGEyN2NjYjYxMDk2YTI1MWRkZjBkODkxNWNkZTk2OWJlIGxlZ2FjeS10cnVuaworNjA3NiBkZDc0YTA2MDA2ZTA0MDIxNzI2M2I4MDU3N2U4NDY4MmRkMzFkNGQzIGxlZ2FjeS10cnVuaworNjA3NyA4NTczZTY1ZmE5NDg0ZjI2YmIzZGFmYjdmNGY0NGY2NWE3YWM0OWYyIGxlZ2FjeS10cnVuaworNjA3OCAwYjBjNGVkMTkzNmFjMmQyODUyYzM5NTg3YjljZTY4Mzc4NjA0NThiIGxlZ2FjeS10cnVuaworNjA3OSBkMGE5N2FjMjVkYWI0NzM2NThhNDBkODY3ZGM3M2Q4YWQ2MTQ0M2JmIGxlZ2FjeS10cnVuaworNjA4MCA0NTNhOWY2ZTk2MTg5ZGU2OWI2MzNmZjczNWJiODQ4YTIwOWM1ZTEwIGxlZ2FjeS10cnVuaworNjA4MSA0ODY2YTBmYzJiYmQ0ZTY1NTM2NmZlNTg5OGFiZDU2ZjgwZjE4Y2Y5IGxlZ2FjeS10cnVuaworNjA4MiAyZjMxNGNhMGNkMzM4ZDZlYzQ2MThlNjQ4YzkxOGVlMGRjMWQwODBhIGxlZ2FjeS10cnVuaworNjA4MyAzMjMxNjVjYjFmYTVkNzRhZWZmOGFhN2ZjMzM1NGU0NzhkMzRmMGU3IGxlZ2FjeS10cnVuaworNjA4NCBmZGEzYzA5OGM4OTk1OGY1MjkzNjYzZjk1OTMwYTI1N2IwYzY4MWJjIGxlZ2FjeS10cnVuaworNjA4NSAwZTVhN2IyMjAxNmNkZWUwM2FiMjI0MTNlZTYwZjNhMTU1MDY2MDY5IGxlZ2FjeS10cnVuaworNjA4NiA2ZTczNTg0Y2Y1NzVlZWRhNzU2N2Y5NmEyNGUwOGU2YzFhMjRiMDlkIGxlZ2FjeS10cnVuaworNjA4NyBhM2M5N2UyMDU4NDc5MzQyYThkOTU1N2NkZWJmNmZkYjk0NTlkODg0IGxlZ2FjeS10cnVuaworNjA4OCBlZjc1OTY2OWFhMDQyNjI5MDMyNGViYjgzZDY1ZDE2NGRiNjZkYTEwIGxlZ2FjeS10cnVuaworNjA4OSAyOGMwZGYxY2UyODQ0OTgyMzQ0ODIzODhmNzE1MmQxNTNkNjhmMzA2IGxlZ2FjeS10cnVuaworNjA5MCBmMTU4ZWRjY2M3MmNjYjYzZmZlOGIxYTU5NTk2MDJmOWRkM2RlODA4IGxlZ2FjeS10cnVuaworNjA5MSBiNzVlZGMwZTYzMzNlZTYwYzU2MmQxYmE4MGQyNmMyZTY2NmY3M2NkIGxlZ2FjeS10cnVuaworNjA5MiBkNDFkODllYjQzZTUwY2Q5YmY4YjlmOTVmYzc5ZjAwYTIyZTkyZjlkIGxlZ2FjeS10cnVuaworNjA5MyA1YTk4YTRmZDU4Yjg0MjEwMTIxMmViODM4NTFmYjIyNjllMGQ2MDBhIGxlZ2FjeS10cnVuaworNjA5NCA5ZTQ2NjU3YmI5ZTg0NzljOGFjOTg2YzlkY2I5N2QwYzVhZTQyMzVhIGxlZ2FjeS10cnVuaworNjA5NSBiZDZlYWEyYjQxYWMzNjA3MGU0YWViZTI1ZTU5NTU2NjM3OWMxMmZiIGxlZ2FjeS10cnVuaworNjA5NiBkMTk1Yjg3MWU3MDQ0ZTE5ZDU5YmYxOWE2NTAyNmY3NGE3MjlmMjI4IGxlZ2FjeS10cnVuaworNjA5NyAzNDQwNzc3ZjBlNjU2YWNlM2VkMzgwNGJjMzY4NDEzYmQwNDM0NWQxIGxlZ2FjeS10cnVuaworNjA5OCBlNTRkMzkxMDcyNDk1NmYyYTA2ODkwY2U1YWQyZWU1YzA4YWRlZDllIGxlZ2FjeS10cnVuaworNjA5OSAyZWI3ZTllMjM2YmY1N2NmMDlkM2Q5OTAyZTI4MmM0YzBlOTU2NWRlIGxlZ2FjeS10cnVuaworNjEwMCA5ODUxMzQzNzU2NzIzNmQ4MmQ0YTg3YWM5YThmYmVlYTU0YzlhZTI0IGxlZ2FjeS10cnVuaworNjEwMSA0NDE2MWZiMDRiN2U4MzRiZmM3NzA5YmRkZDY5NzkxZDAxMzAyNmU2IGxlZ2FjeS10cnVuaworNjEwMiBhN2UzYmMyYTdjYWM0NzlkNDA4OTMzNDljZDRjMmYwYmEwM2ZhZTJhIGxlZ2FjeS10cnVuaworNjEwMyAzYWJjZjcyNWM1ZjQwOTc3NjI2NzNiMDJkOTI3YWQxZmE0M2ZhODM0IGxlZ2FjeS10cnVuaworNjEwNCA4OTQxNzg5NWQ5NjNjZWRjMjUwMWRhMjJkMjJlNTA1NWY3MThjMDRlIGxlZ2FjeS10cnVuaworNjEwNSA2NzY4YmJkMThlMDk5ODBhNzA3Yjk4NWI1ZTYyZGQwYjJiODkwNDVhIGxlZ2FjeS10cnVuaworNjEwNiA2YzAwODZmOTI3MGNmOTUxM2NjNDJiOWI4NTg1NzlkZGQ0OTRlN2MzIGxlZ2FjeS10cnVuaworNjEwNyBjMjgzYjdiYmRhMDk1MmIyNzJkN2I3YTg1OWEwZDk1ZWU1YTY3OTlmIGxlZ2FjeS10cnVuaworNjEwOCA3MDE4MzU5MjM3MGU3NGVhNjNmZWQ2MzE0ZDUwNzQzYTQzNWNhMmVhIGxlZ2FjeS10cnVuaworNjEwOSA4ZDUwYTk2Zjg2ODBlYTgxMWU1MDIwMGJhNTQwYTY2Njk3MTRmMTk4IGxlZ2FjeS10cnVuaworNjExMCBlNGZhYWRiNGFiZTJlZGI0ZTE4MWRjMzk3NTZhZWM3Yjk2NzU4OTJiIGxlZ2FjeS10cnVuaworNjExMSBkMDQ5NzVkYjUyZGNmM2I0NzAyOGVkODIyYTM3OGZmY2Q3YmUxYjNiIGxlZ2FjeS10cnVuaworNjExMiAwZDE0NjNhNDViNmY1NWM2ODU3NzAwZTY2MmRlZWQzOGJiOGU1ZDg0IGxlZ2FjeS10cnVuaworNjExMyAwMTdkMzM1NmE1ZWQwNDMwZmQxMzU5NWExYjA3YjZlOTRkMDcxNDZhIGxlZ2FjeS10cnVuaworNjExNCA0OWVlODllMDE3YWJlNTI2YzYwZjNiMmVjOWI3OTM3NWU0NjcyMGI3IGxlZ2FjeS10cnVuaworNjExNSA1NjRmYTZmMTg1YTdkN2NkNmZlNjdjMzYyZTFiNTNkMWU3NDAyNTMzIGxlZ2FjeS10cnVuaworNjExNiAxNmNhOGYwZjNmMTEyNDAxYTBmYzY1ZjM2NmYyNzAyOGJmMzhiNGI1IGxlZ2FjeS10cnVuaworNjExNyBhOWZiNWE4OTVmYTFjMzJlNmZiYWFhYmM1ZjZkNDBiZjA2ODI2NTNkIGxlZ2FjeS10cnVuaworNjExOCA2M2NkZmJiNGEyYmI5OWM0MTM2YjI5NDM4NGFkOGQ3YjhiZWYwMjliIGxlZ2FjeS10cnVuaworNjExOSA1ZDZmZTE0NWY3NzNhMjE0YWFjMjM4ZjFlZmJlMTc0MjFkM2YzODliIGxlZ2FjeS10cnVuaworNjEyMCAwNjAyZGIxZDFkZmY3YTVmN2U1YzdhZWRlZjUxNTY4YWU3MDIzZWMyIGxlZ2FjeS10cnVuaworNjEyMSA3MjhhMzlhM2UwZDU1MDg0ZTVhYmJjYzNmM2Y4N2U3ZTIzMTczNWU4IGxlZ2FjeS10cnVuaworNjEyMiA1MzA5Y2VmOGMxNjkyY2MyNWY1ZTYxMDQ4OWQxZjMwYmFhYWYwYTQ1IGxlZ2FjeS10cnVuaworNjEyNCA2NmVlYWI1YTc1OGM2NzMyZjIyNDY3MGQxMjVmMTg2Y2ZiNjdiMzhlIGxlZ2FjeS10cnVuaworNjEyNSBmODlmYTdlOTViODQwOTVmNDJhMTgyODU0ZDM0YTFmMWM2YzQzOGFlIGxlZ2FjeS10cnVuaworNjEyNiBhZGU5Zjk5NjU5MGE1ZTc4ZjVhOGJiMDc5MmYwNzAzNTk5NTA0YjVhIGxlZ2FjeS10cnVuaworNjEyNyA5YWMxZTBkNTY2NzQxM2NmZDdlNjg5OTgwYTU4YmZiYjA5MGM2YTZlIGxlZ2FjeS10cnVuaworNjEyOSAzNWJlNWRmNmVmNzcyMmI4ZjUwYTIzNWViMWYyY2Y2MTkxMWM3NzU1IGxlZ2FjeS10cnVuaworNjEzMCA4MjViZDhjMTFiMWMxYWM1YzQ5NmJjN2FjZmMyZDlmOGM0NmFkYTY5IGxlZ2FjeS10cnVuaworNjEzMSAwNThkODFkMWQ1NmQ5MzI2ZTM3N2RlNTMwMGY1MDk2MDY3MGRlMjY2IGxlZ2FjeS10cnVuaworNjEzMiBiZDZkMDI4ZDk4ZmNlZjQyNDUyNWIzMjQzNzI2MGQ1MzJkZDk5M2RmIGxlZ2FjeS10cnVuaworNjEzMyAzOTk0NzBhOTU4YzIyZDk3Y2NiODYzZTY3OTRjM2Y4OTdlODVkNzhjIGxlZ2FjeS10cnVuaworNjEzNCAwNzE2NGQzMDQyOWRjNmRkMDczNjJlYzIwYmMyYTkxZjI1ZGRjYjUzIGxlZ2FjeS10cnVuaworNjEzNSBhZDAzZTIxZmRhNTRiY2E1YzEyZWU3NzhmOGQ3YjgxODAyNThhZDkyIGxlZ2FjeS10cnVuaworNjEzNiA1MTg4Mzc0Mzc3YWU5OTYyNWZkMjViZWFlNDVjZDY3ODQ1MzZhZTJlIGxlZ2FjeS10cnVuaworNjEzNyA1NTZlYzgyZjRkOTM5ZTE1ZjJjNmJkNTI5NTc3NGJkZDgyNzlkYTJlIGxlZ2FjeS10cnVuaworNjEzOCBlYWJiYjNjMTgxOGZlNDI5NjJiMWMxNWE5OGE2OWNkMDg2YTgzYTg3IGxlZ2FjeS10cnVuaworNjEzOSBhYjkyNDgwZmE0ZWNiM2M5YjMwZDM0MzU1NTE4Zjc3NzhiYmIyOWJiIGxlZ2FjeS10cnVuaworNjE0MCAxZDEzNGVjZGEwOTRlZTE3N2M4MGJmYzdkMTAxNGFjMzg3NGMxNDQ1IGxlZ2FjeS10cnVuaworNjE0MSAxNjQxM2VlNTg5Njc3NDU2ODQ3NTE0OTdhM2NmZWJhMGFkMGM1MzdkIGxlZ2FjeS10cnVuaworNjE0MiA5YThhNDBmMjIxOGM5Y2IyNjI2NTg4ZTFmYzE1ODUwYWQ5ZjY0NTQ4IGxlZ2FjeS10cnVuaworNjE0MyBjZWMyN2M5M2I1Y2I4MzRjMTAxNzM3ZGQ1MTNlNjA4MTRhYWNmY2U4IGxlZ2FjeS10cnVuaworNjE0NCBmNmFjZTYxYzNkZmU2NGVhMzdlZjk4MGFlZTAwMWViMzQ5NDBkMmM3IGxlZ2FjeS10cnVuaworNjE0NSAzZWFmMmM2NzNhMTFhNzg4ZmI2MjQ0YWYyMjIzYjNjYmUyYmQxMDgyIGxlZ2FjeS10cnVuaworNjE0NiBkNjE3ZGUxNTc3NGIyZTdiNzVhMmI3NjQ3YWVhN2M5MDYwYWFjMjEzIGxlZ2FjeS10cnVuaworNjE0NyA3NDc2NGIzZWMxYmRiNzRhNWU2NTkyNzU2MjQ2ZjlhZjdkZmFhZGYzIGxlZ2FjeS10cnVuaworNjE0OCBiMDUzMTU4MTY1Nzk4MzA0NTJjMDRlMjlkOWEyZDM3ZjIzODRmNmUxIGxlZ2FjeS10cnVuaworNjE0OSBiZGRiYWE1MWFhNWE5MzMxOGFmZWI5MmRhYjJlNGU2M2FlNWVkN2Y0IGxlZ2FjeS10cnVuaworNjE1MCBiODk4MDczNWQwM2IzZTE0MDkzOGE2NDI0NjNmYTk0NDNkNzNkOGZlIGxlZ2FjeS10cnVuaworNjE1MSA4NzIxZmFmZGI2N2FhOWI1YTkyMmQyM2NmODdjOGYyMzJlZmMwNWQ4IGxlZ2FjeS10cnVuaworNjE1MiBhNTI3ZjQ0OWNhMjY2NjFmNWQyOTBkMzY3ZDEwMzI3NmFhZDM5MmFlIGxlZ2FjeS10cnVuaworNjE1MyA5NDY2ZWFiYjY2OWE2Y2YyNjZmZWM2NTVjMWM3MjZkNzNlMDI2OGE3IGxlZ2FjeS10cnVuaworNjE1NCBlYzM5MjY0MzExZmYyNDE0ZmFlMDFhZWQ3NDc5MjZjOTEwYjkwYjdmIGxlZ2FjeS10cnVuaworNjE1NSA2MDZjMzg1MzVmMzA0NTEzNDdkMTk0NjY5MGZhZWJmZTZlMTdmYjhhIGxlZ2FjeS10cnVuaworNjE1NiBhMTM2MmEwNjMxMjI1MjJmY2NjMTg4MDFkNzY1MzY4NmUwMjE0MzczIGxlZ2FjeS10cnVuaworNjE1NyBiZGJkYTkzOWI5OTk4ZjhhZThiNmQ1MWU1NTNiY2IxMzZiYTdiNWI2IGxlZ2FjeS10cnVuaworNjE1OCBkOGY5ZGZjNzZiYmZjOGRmOTZmZjFhZDhhYjZjZDc0YzhhZWY5ZmNlIGxlZ2FjeS10cnVuaworNjE1OSBhNzliOGQ4MTk5N2ZlYWFkOWNlZDJjMTRiNGIwOTNiOTBkMmJiNjY3IGxlZ2FjeS10cnVuaworNjE2MCA2ZGZkNzk5NDQ4NzJmYzAzYzU0OTc0OTNiYTliMTA5MjZkOWViYzAzIGxlZ2FjeS10cnVuaworNjE2MSA0YTA3ZmUxZTBiNTAzY2I1YmNhYzQ4ZDY2NzY4ZjQyNjNhNGFkMzBhIGxlZ2FjeS10cnVuaworNjE2MiBiNWQxNzQxZGVkNGE1YTQ4ZWFmMDhhMDViY2FhNmQ1YWNhMzMxNjhlIGxlZ2FjeS10cnVuaworNjE2MyA4ZGMxZTc0YzE2OTU2ZWIyMDBlYzY4M2FhZjVkODg5MTRhYTVjN2ZlIGxlZ2FjeS10cnVuaworNjE2NCA4MThlZTExNTA1NGEzYjljZTk2MDEyMmMxMTdhODFhMTVhMDc1MTdiIGxlZ2FjeS10cnVuaworNjE2NSA1ODFmMDczZjA3MWQ3ZDc3MGY0NzJmNzE5Y2JiNTAyYzM0ZmEzMDIyIGxlZ2FjeS10cnVuaworNjE2NiAxNDU0MTM4YzZmMmQ0MGM1YTBiNTYwNjhkYThiZmQ3MDZlZjA0MDYxIGxlZ2FjeS10cnVuaworNjE2NyA2NzM5MGMxZGFlYmVkZGNlZWNmNDFjZGYxMWI0NWNjMDkzMTgwY2E2IGxlZ2FjeS10cnVuaworNjE2OCA4MWY1MzVjYTFkOThjZDQ2YTY5NTg5YTY1ZmUwZDJmZDdhYzJkYjNmIGxlZ2FjeS10cnVuaworNjE2OSA5N2IxYzJhNzBlYWUxMWZiN2NkNDM5OWMwZTlkMmVjYmViODc0ZWU4IGxlZ2FjeS10cnVuaworNjE3MCBlMjNhZmJmNzdlZmRmOTU0YjNmOWNiYWY5YjFhZDY1ZmY5YWM5OTgwIGxlZ2FjeS10cnVuaworNjE3MSA5MzEwODZjYjg1Mjk1MDMzN2E4ODY3OTVmZWUxOGY1NmMwMjRjN2JlIGxlZ2FjeS10cnVuaworNjE3MiBmMDRiZWI4MGY4MTY3N2FmMGZkZjYxOGQ0YTY3YTNiNTNlMjRlNDMxIGxlZ2FjeS10cnVuaworNjE3MyAzNDA4NzU2ZWM2MDE4OTAxN2QxNDZkMGVkZGI2ZjI0NzRhZTlmMzRkIGxlZ2FjeS10cnVuaworNjE3NCBmZjdmYTU5ZjYyZTg5MzRhYjdiODQ1NzRjYjdkMWU0MzRjNjRjZDJlIGxlZ2FjeS10cnVuaworNjE3NSAxNzAzMDUxNWY2MjMyNzU0ZDM1MTEyYTU5ZDhjZjIzMGZkY2IxNTEyIGxlZ2FjeS10cnVuaworNjE3NiBjODY3YzI5NGIxNmMwODNhYTk2NjdlZDE4MTllNjIyODdmMDRiNDkzIGxlZ2FjeS10cnVuaworNjE3NyBkYjU3NzA5NGY2ODUzZTE1NzUzYmU5Y2JkNGIwMTY2YTM2YjkwYTI0IGxlZ2FjeS10cnVuaworNjE3OCAwZTk3OTUwMDRjZDI2NzZmY2QxOGVkMzY3NTVmMTRhODRmMTQzZTBhIGxlZ2FjeS10cnVuaworNjE3OSAwZjZmMGU5OGUzYjY0YjRlNTM4MWZmZTBiNjk2MGUxZDQ5YzdjZjcxIGxlZ2FjeS10cnVuaworNjE4MCBkYWQ0ZDQzMzYzZDhmZTFmYmI4ODgwMDU2MTY3MDBmOTBhOWQ4YTI4IGxlZ2FjeS10cnVuaworNjE4MSA3ODc3ZGVmOTQwNjNkNDcxNDljZmY1YjlhMzBlOWZjMTRlYTRlOGJhIGxlZ2FjeS10cnVuaworNjE4MiBjMDQ1MzFmYzI3MDk2OTM5YzMxNDQ4ZWVhYjRmY2I1Yzg2OTY3ZDJhIGxlZ2FjeS10cnVuaworNjE4MyA4ZTQ3OThkMjE5MTVlZmNhYjNjYWM4N2FlNGJkNTk0ZDhkNDhlODE5IGxlZ2FjeS10cnVuaworNjE4NCBhZGM4NjcwN2ZhOTYzODk5YjU5ZTI5Mjk3ZTJmNGMzZWM3NzE4YTUxIGxlZ2FjeS10cnVuaworNjE4NSBjMTIwYTQ4M2Q1OTA5OGQ2NjkxZmNhNTM1NDVjMmY4MWY3OTQ2MjAxIGxlZ2FjeS10cnVuaworNjE4NiA1YzI1OGVmZmU4MWM0ZDk1YmM2MDQ0ZjY2YTYwZTEzYTAxZjc3MTczIGxlZ2FjeS10cnVuaworNjE4NyBkZTUyNzk0MDJiOTQzOGNkZjY0MzNjMzczMzgxNjE3YWRhN2Q0NTAyIGxlZ2FjeS10cnVuaworNjE4OCA1MDEyMTkxZWMyZGFiMTRiYmViNDc4ODg3ODE4MDU4Y2FjZjFmMzUyIGxlZ2FjeS10cnVuaworNjE4OSA5ZTU0NGEyYzE5YTJkYTcwODkwOTc0YjZiMTIxM2Q0ODhhNjhkNTZkIGxlZ2FjeS10cnVuaworNjE5MCA3NmU1ZjM1OThlNjliNGEyOTkxOTE4NTM1ZjE0ODBjNWIzYTZmZmRhIGxlZ2FjeS10cnVuaworNjE5MSBiMzQxZGVmNGVlZjhjYmM2MmEwNzM1NjQyNzg5NTY5NDQ4MDRjZDEzIGxlZ2FjeS10cnVuaworNjE5MiAzMjJmNjFlNGMzODc1YWE0ODE1NjcxNjBjM2I4ODM1MzI2YTkwZTE0IGxlZ2FjeS10cnVuaworNjE5MyBiMmIwNjNhYTI3NTUxMGQ2YmNjNDg0OTcxYjUwMGYzZjY4ZjRjOThjIGxlZ2FjeS10cnVuaworNjE5NCA0M2EzN2U2YjY0NjlhNGQyMWFiMGZjM2MyNjVjMDU3M2QyMzVlOTk2IGxlZ2FjeS10cnVuaworNjE5NSAyNjQ0MmI1ZjljZmQ4NDdiNjNiZTI3ODFkNGZiM2NjYjQwOWJiY2NhIGxlZ2FjeS10cnVuaworNjE5NiAwZmY1YmQ4ZWJiMDFhNjBiNzE5YTc2NjNhMDljNzE4OGU0YzJlZmI1IGxlZ2FjeS10cnVuaworNjE5NyA2NTc3OTBkYjA2ZTNjNTk0NWQ5ZTdhZDljZmMxY2JlYzFmNjVkMjg3IGxlZ2FjeS10cnVuaworNjE5OCBhMTBhMGY2MDE0YzQ5YTVmYmQxYTRjMzQzOTVlMjg4MmY4NTVmZjVkIGxlZ2FjeS10cnVuaworNjE5OSA2ZjNjN2IyZjJiOGRlODI4YjI2NjgyZDM5OTVmM2ZiYTI3ODBmOWQ1IGxlZ2FjeS10cnVuaworNjIwMCAwNjg1NTYzODBjYjA4NjFjNWY4YzAyNDQzMGRhMTYxN2RjODBmZWVhIGxlZ2FjeS10cnVuaworNjIwMSBiYTg0ZDdlODU1NGI1ZWNkNGZjZDY5ZDU3Njk3NjRiNmVhZDMzZjBiIGxlZ2FjeS10cnVuaworNjIwMiBkZTFjYjMzMjE5ZTMxMThhM2Y5ZWEyMDkyMWVhMTgxYTY5ZTc3ZTU3IGxlZ2FjeS10cnVuaworNjIwMyA1MjNmNDlhMWU0MmE1NzA5ODg4MjVmYWFmNmQ2OTY1ZGI5NDFiZjAwIGxlZ2FjeS10cnVuaworNjIwNCBiMjUwYjI3MGRiZDRkMGViMDQwMTM1ZGU2NjhjOGVmYTM2NmZiYjE3IGxlZ2FjeS10cnVuaworNjIwNSAwNGMwNzUzOGNhYzRkYjc3MmNkMTYxMjc5NWMyMzc2NDZiOWE4OWE3IGxlZ2FjeS10cnVuaworNjIwNiA0NjkyY2I0NjAwOGVlMGM5ZTkzM2Y2ZDY4NzhhYTQwNWMzYmU4Zjc1IGxlZ2FjeS10cnVuaworNjIwNyA2YzljMmFjMTVlNGIwMTdmNzQ4NmJiYmQ4YzExN2I0ZDBjMjMxMzc0IGxlZ2FjeS10cnVuaworNjIwOCA2YjFiNjY0ODYzZjQwOTQwMjVlN2UwYjVkYWUwYzU0Y2Q1YjM3YWZhIGxlZ2FjeS10cnVuaworNjIwOSBjZTc0YmJhOGE2YTZkMThiY2U3N2NlNmJjNzI0MWM3OTkyNzQ3YmNkIGxlZ2FjeS10cnVuaworNjIxMCA3OTUyNDgyOWE3MzA2NjZkY2IxYjQ4NDQyMTI1MTRiYTUyM2Y5MjRhIGxlZ2FjeS10cnVuaworNjIxMSBlNDgwN2EwYzEwOTJkZTJlY2Q0MDY4NTU5N2E0Mjg5YzZhMjYzNjg4IGxlZ2FjeS10cnVuaworNjIxMiBlZjU5YjRkMDAxMzQ5MDdhZDM5Mjg2ZDllNDg2NTM2YWM5YjA0MmI5IGxlZ2FjeS10cnVuaworNjIxMiA0ZmM4NWM4MmNjMjIyNTU0YWU2YjljMGI4Nzc3NmVkNWYyYjcwYzZlIGxlZ2FjeS10cnVuaworNjIxNCBiMjA3ODc2ZGYyOWFjYWMwNzIyMWFhMjYwNGUwZWMwMTc4YWM0MmNlIGxlZ2FjeS10cnVuaworNjIxNSBmZmRmMWYwNmNmOGI1YzM2M2Y5YzU0NzYzNzlmZjVmOTVmN2U0YmY5IGxlZ2FjeS10cnVuaworNjIxNiA2MDgwYjJlYmMxZjE0YTVjNDVjMjEwNzY2MGE3NWRhY2FkOTEyODU5IGxlZ2FjeS10cnVuaworNjIxNyA3NTA0ODg0ZThhNzRmYzYwN2E4ODZhMjFlZjUyNmZhMmQ1NDQ3NTUyIGxlZ2FjeS10cnVuaworNjIxOSBhYzcwMThiNTc3NDU2Y2ViYjExNmE3NTBmZTIyY2U2NGI5ZGU3MzBiIGxlZ2FjeS10cnVuaworNjIyMCA1NmQzMzUwY2ExZjE3MmQ2MmVkZjkzMWI1MzJiMzBiMTExNWM5NjcxIGxlZ2FjeS10cnVuaworNjIyMSAxMWUwM2Q3YTcyOTgwNWRmZWVmNzQ0YTU1YzUwZTkzMzU3YmI0MDg5IGxlZ2FjeS10cnVuaworNjIyMiBhMjI0MzhlOTRmZTk3NGI1MTkxMzQ4M2E1MjUyOWEzMTUyYzE1ZTdmIGxlZ2FjeS10cnVuaworNjIyMyAyZGI2MzYzNDU5Y2FmMWQ2OWRlMmE4YmFhYzE2ZmQwMzVjMTQxOTQwIGxlZ2FjeS10cnVuaworNjIyNCAzNTM3YzA4YzFlZmZiYWI0NDcyMzZiOGMxMmFjM2YzMjg2OThkNzFhIGxlZ2FjeS10cnVuaworNjIyNSA5N2QyMjc4YTMzMWI5NDVkNDEzMWJlMzNkNTkyODBlYzZhZDBmYmYwIGxlZ2FjeS10cnVuaworNjIyNiBkMjNmZWEyNDhhMWVjMjViMWNjMTc3ZWI1ZGY0ODU2YzE0ZWViMWE4IGxlZ2FjeS10cnVuaworNjIyNyA2NTk4YTUxODY2OGY3N2FmMjU4YWJhNWFmMjdkOWNkNzMwMWZhOWY2IGxlZ2FjeS10cnVuaworNjIyOCA4MmJiN2QyYTZiMzFlNmY1MGVmNDQ0OWVmNzBmMTdhYjM5ODk1NzUwIGxlZ2FjeS10cnVuaworNjIyOSAxNWIxYjAzYWRlOTNkNzJjZGU1MDE3NTBiNGUzYzFiNmUxNzk3ZmMzIGxlZ2FjeS10cnVuaworNjIzMCBiOTE2ZDYxNGUzNjM0Njg1YWU2NTVkNWI4NjJiY2NhZDYwNzQ4YTg2IGxlZ2FjeS10cnVuaworNjIzMSA1Njc0NmVlZGZlMDM3ODk3NGI4YzM0MDNiNWUzYTgxYzI5ODQ0NjRkIGxlZ2FjeS10cnVuaworNjIzMiBiZjhjMjMwZGY1ZThkZDMyMGUyYzE0ZmY0NDU1MmIwZGUyOTQwZjVjIGxlZ2FjeS10cnVuaworNjIzMyBlNjAzNjAxYzY4Y2Y0NDY4ZTUzZjA2NjUzMzJiM2Y4NTFhZjRhY2JjIGxlZ2FjeS10cnVuaworNjIzNCBjNTdiMzhlNDBiMmRhNTBjNzVlY2VhYTI1MmQ3OGQ3ZDU2MGUwODY1IGxlZ2FjeS10cnVuaworNjIzNSBiYjRjYzNmYTYwMDBiMDliZGFmN2MzOGRjZTY5ZjVmNWUwMGQ2OGMxIGxlZ2FjeS10cnVuaworNjIzNiAyOWZlNmEwZGUzNjYzYjhkNDVjMmM3NDkzZWI1YjQ4NDBhY2Y4NGZmIGxlZ2FjeS10cnVuaworNjIzNyBkYjU0ODhmZTQ5NWIyYTAwNTkzYmI5MTMwOTVmODk0MTM5YTVlZjNiIGxlZ2FjeS10cnVuaworNjIzOCA1MTY0OTBjODE5MmNkZmIwMTZmYTE4NWI5MjdjMjA4YjcwZmRkNjg4IGxlZ2FjeS10cnVuaworNjIzOSA0YjVkZWY0MDc3M2NlYWZhNTc1ZmNlNWIyMDhhZWUzM2IwYzc4ZGIwIGxlZ2FjeS10cnVuaworNjI0MCBkMWFlMGVhOWE1ODVmOTEyZDdhYTNkMDA0ZmY4MTdkMGRlYTExMmY4IGxlZ2FjeS10cnVuaworNjI0MSAyYjgxMGEzYzdlNDE0Y2E0MmU2Yzg5YjRhMTM3YjRjYmQwZTQ2ZWMyIGxlZ2FjeS10cnVuaworNjI0MiA3Y2RjMGM3MTQ2ZDUwYWMyMTk3M2Y1MDYwZDhjZWM2NzFkYjg5MThmIGxlZ2FjeS10cnVuaworNjI0MyBkMDk4ODMxOGI3NTY4YzZhNTNlYmRiZTJmY2Q3OWI4NzFlZGM0MzZlIGxlZ2FjeS10cnVuaworNjI0NCBjOGQwZjc4MjIxY2MzNmU4MTc4NmQ2NDc1MDk4OWU4N2FmMGM0NzBiIGxlZ2FjeS10cnVuaworNjI0NSA2ZTQwYTJhM2U2ZWYwYzRhMzk4NjMzNjA5YTI0MTNlYTA2ZjhlMzQ1IGxlZ2FjeS10cnVuaworNjI0NiA0Yzc4ZDczYzU2Njc1NzIzY2I3NzNmMjNkMGEyYWNmNDI2YjVjYzIwIGxlZ2FjeS10cnVuaworNjI0NyBhYjExMGIxZTkyZmZhMTgyZWFjNGQ2OTNlMDI3ZTQzNGNiM2I2OGRiIGxlZ2FjeS10cnVuaworNjI0OCBlY2NmYWRhNDdmMjg1YWI0YTliZmFhNTQ1ZWU0YjIxZWNkNzdhZGRlIGxlZ2FjeS10cnVuaworNjI0OSBmMzVkZGU3ZjQxNDNlNWY2MTBiYWNlZDk2Y2EyMGYzOTljMzAwMjEzIGxlZ2FjeS10cnVuaworNjI1MCBmOTkwN2Y1NzMyN2VjNTc2MzhkN2E5MjAxZWE0N2EzY2RjYzdiNjg5IGxlZ2FjeS10cnVuaworNjI1MSAxMGI1MDYxZjZjYmNmODU0YzdlODFhNTJkYzQ5MDk0ZDA5YTIzZTM3IGxlZ2FjeS10cnVuaworNjI1MiBhYzExNGE1ZmM4ZmY4NDZlNzk4MjE4MzgzY2Y0YmI0MWFmN2M2NmRhIGxlZ2FjeS10cnVuaworNjI1MyAyN2MzNzc1NzVmNGFjNGRkOWY0ZmIyYjA4YWE5OTgwNmI0MWM1NGI3IGxlZ2FjeS10cnVuaworNjI1NCAzZWIxNjk0ZWRjZTZiMDQyOWRjNWNlODVmOThhYTBhNjhkNjM3NzQxIGxlZ2FjeS10cnVuaworNjI1NSBhNjIwM2QxNzE1OGJhNTJlMGZkMzNkOGMyOGIxYzQ1OWZhZmY1YzM0IGxlZ2FjeS10cnVuaworNjI1NiBiNDEwMTk1NTdiNmU3Y2ZmODhmMmFlMDg4ODE2ZDgxY2U4YzMxOThlIGxlZ2FjeS10cnVuaworNjI1NyAwZDc0MDExMzEwY2QxYjViZWFjZGNhZWE4Mjg0OWRkYTQxZDJjZDc1IGxlZ2FjeS10cnVuaworNjI1OCA3MThjOGFmN2JlMmE5ZmNlOTIxN2I1ZWJmMjQ2MmVjNDkyMzA3OGZlIGxlZ2FjeS10cnVuaworNjI1OSA3NzY2MzYwYjg1Yjg5MWVhOWRiNzg1ZWRmZWI4NWIzZGM4N2FmYmEzIGxlZ2FjeS10cnVuaworNjI2MCBiNjUzNjhlZDg2YmU4OWQxN2ZiOWIxYTk1ODlhZGNiYmU2NTczYzQ1IGxlZ2FjeS10cnVuaworNjI2MSA0Njg4MzdhZDQ1ZjM4MjNhYzg5MjA4NDg5ODRhNTFlOTU2YWY4MTg4IGxlZ2FjeS10cnVuaworNjI2MiA3ZTY1MzY3MzBkMGVlZWQyYmI4OWRlMjkxNGNmNTE2MTgxNjA2NWM3IGxlZ2FjeS10cnVuaworNjI2MyAyZjU3MzkyYjJmZGUxMjliYzZlMzA5OTQ2NzE2NDMyNzI5YzM4MzBiIGxlZ2FjeS10cnVuaworNjI2NCBlOWVlNGM5MDVhYmQyOGY3MmU4NzJlZGZjYjU5YTE4YjkxMWQ2ZWNlIGxlZ2FjeS10cnVuaworNjI2NSBjYTAyZDkyNzgxODAxMWI3ZjA5NjhlMjgxNzY0Zjk0NWE1ODliYTk4IGxlZ2FjeS10cnVuaworNjI2NiBkMWM0N2Y0ZjE1NDE1MDIzZjk2OTBmYWYzN2I0ZWMyOWQ5NjczYTk3IGxlZ2FjeS10cnVuaworNjI2NyAxZjIwZjUxYjcwMGU0NWI4YzM2NTJhYjI2ZmZmNThjYTkyNjVkZGEyIGxlZ2FjeS10cnVuaworNjI2OCBlYzY5NjNjMzc0MWMxNjc0MDcyNjZmY2Y1NTQ4Y2M0NjcwMmRlNWU4IGxlZ2FjeS10cnVuaworNjI2OSA1MWE3YzhmZTdjN2IyOTI2ZDhhYzA0ZjE4NzhjMGVhYzZiNjk5ODcwIGxlZ2FjeS10cnVuaworNjI3MCBhODE2YWJlODZmOTA0NGQ3YWM2NWFhZDNjMGY3MDdhZGMwNzU0ZjgyIGxlZ2FjeS10cnVuaworNjI3MSAyZjI3NTAxZGIzYzNlNDI3ZTExMzZiOTVhOTYyYTcyN2MwZTFjNjVhIGxlZ2FjeS10cnVuaworNjI3MiBhY2YzNWVkMGYwMjY0NzUxZWFkMDEzNzVkMzQ1ZTg4MTQ1Mjg3NDhmIGxlZ2FjeS10cnVuaworNjI3MyA4NDMxMjFhMjI2Y2E5NDYxYjg2ZGVmNmI1YzJhMTRiNzEwOGUzN2IwIGxlZ2FjeS10cnVuaworNjI3NCA0OGU4NTlmMzI4Y2JjMDExZjZjNzZlYTRlYWI1MjlmYjU3NWQ4MmFhIGxlZ2FjeS10cnVuaworNjI3NSAyZWFhMDA4NjBlZGM0NjBiMmM5OTI1NzllZWVhNzk2ZDU3ZTljOGY1IGxlZ2FjeS10cnVuaworNjI3NiA0ODc3NmJmNGJkNDkzYzZjMzExNzNiNTAyNWY3ZDVhOTY0ODkzOGIyIGxlZ2FjeS10cnVuaworNjI3NyA0ZjczOTYyYWFiYTZiYWM4NjQ3ODViMmUyMDY5NzZhYmE3Y2U4NTYwIGxlZ2FjeS10cnVuaworNjI3OCA5Mzg2OGM3YTE1YzkwYmVlYjg5NDQxOTg2MjMzYWJlNmZkYjY4NGEzIGxlZ2FjeS10cnVuaworNjI3OSA0MjZlNzk2ZjYxMTUyMTc5ZWE0ZGI5ZThhMTZkYzA3YjE2ZDJmNTBmIGxlZ2FjeS10cnVuaworNjI4MCAxN2EyODkxZTYyN2ZiODllNTIzZjcxMmZlNjUxZGYxMDBjMmM5OWRmIGxlZ2FjeS10cnVuaworNjI4MSBiZjNmODA5NDFlYzExYzhhMzcxYzU4M2ZjMzQ5YmEwZWU2YzkzZDY1IGxlZ2FjeS10cnVuaworNjI4MiAyZGJkNTA4MWM3MWU3YmZiYTA1NjBlOGRhZmY0MWY5NjhkYzVkNjZiIGxlZ2FjeS10cnVuaworNjI4MyBiOWEwNDM0ZDJjYjZmMTIwMmQ2NGY0NjQ4OTMyY2NhNDdlY2YwMmJmIGxlZ2FjeS10cnVuaworNjI4NCA2ZDMyNGZiYWZhZGMyZjlhMzY1OTMyYTkyNzMzMjA2YzE3ZDYzOTZjIGxlZ2FjeS10cnVuaworNjI4NSBjYTM2ZTMwOGUzM2Q5ZGUyNzNmMWE2OTc3OTZkNDlhMjJlZTdkNjBiIGxlZ2FjeS10cnVuaworNjI4NiAzMWUxMDBkOWQ5MjljOGIwZDhiYWE3NjE2MTRjZGVkMTVhYWE3MDRhIGxlZ2FjeS10cnVuaworNjI4NyBjYzkyZmEyY2Q4NmJkOGVlNmRmNzY2ZDg0YTI0YzI2ZjkzOTE1ZjJlIGxlZ2FjeS10cnVuaworNjI4OCA4OWQ0ZjVkZWQ2NzAzNzc2MDk5OTdlZWUxYjNmM2IzMzM2NDU3Y2JlIGxlZ2FjeS10cnVuaworNjI4OSBmMzI2NzZhYjNmM2EwNjExZDE3MWY4NDk5MGZhZjRkOTZlNTk3ZDM3IGxlZ2FjeS10cnVuaworNjI5MCAzYzVjYTc3Mjc5ODgzYTQzMTJlNjcwNTkyMjQ2OGQ5MjcyMWQ3NjgwIGxlZ2FjeS10cnVuaworNjI5MSA1YjZhNzkxYWM2ZTdkZTRlYWRhMjQ5Yzg4MGNiOTA0OTkyZTM4ZjA3IGxlZ2FjeS10cnVuaworNjI5MiBmN2YzZTRiNTY5M2MxNGJlZDM5ZGVmNjNlNmJiZGJmOWMxNTFjNWNkIGxlZ2FjeS10cnVuaworNjI5MyAyNDBmODM0YWVlOGJiYjQ4NDU4MzM5NDM0NmE5NTU4NzIyNGZhMjMwIGxlZ2FjeS10cnVuaworNjI5NCBkYjRlYTNhYmY4OTEyYzQ3MjA5NTAzZTljNzIwNTYzYzI4MTVjZjM1IGxlZ2FjeS10cnVuaworNjI5NSA5YWFjMzc4OTJlODg4ZmVkODQ4YmExZGFkNGI2N2FhNGI2OWYzMjQ0IGxlZ2FjeS10cnVuaworNjI5NiA4MjBhYmExMDQ2YzM5YWZkZjM5MTY5ZjIwZjczMDAzNDk5YTdmOGIyIGxlZ2FjeS10cnVuaworNjI5NyBjM2VjNjliMWZlMzYwOTMzZGRjNjVmZjIxM2M1Y2RmNzhlNDIyNGExIGxlZ2FjeS10cnVuaworNjI5OCA5ODMxZTBmYzAxZGUwNDcyOGU5YjgxZmVhMmNkZDUzODZjMDNhMzQ2IGxlZ2FjeS10cnVuaworNjI5OSBiYzIyZWI1ZDRhMGExMWJhNjVjZDQyMGE2MDVjMjMzNzJjNDE1NGMyIGxlZ2FjeS10cnVuaworNjMwMCBjMzVkOWUyYTY4NjA4MzI3ZTUyODI0ZDA0YzI0MDlmY2EwZTFiOWRlIGxlZ2FjeS10cnVuaworNjMwMSAwOWJlYmE5NDA5ZGRkNGFmNTMyODc0MDFjMjk2NDI4MTJkMGEyZTE5IGxlZ2FjeS10cnVuaworNjMwMiAzZTNlOTVkZGNlMjJmYjM0ODlmNDQ2YWFiNWQ1ZDMyN2ZjZjAyNmIxIGxlZ2FjeS10cnVuaworNjMwMyA5Njg1MWY1MWFkNmJmOWZlZGFlNWY2YTRlZjZiYzFkOGQ4MzY4ZTk2IGxlZ2FjeS10cnVuaworNjMwNCAwMzliYzNlNGU2NGVhMTIwOGZjYzM5MDAyMjIxMmY2ZTY5ODBiOTRhIGxlZ2FjeS10cnVuaworNjMwNSBmMGVmZmYyOGEyNGRkMWQwNTVjMzZhYzU5M2MwYjZkNGZhYjYxMDkzIGxlZ2FjeS10cnVuaworNjMwNiA3N2Q5MTJmMmFiY2I0ZjMzMDQwZjBjYjkzZDlmODc1ZTdiNDgwNDVkIGxlZ2FjeS10cnVuaworNjMwNyAzNDMyMzJjMWRjOWEwNzQ5Mzk5NzBlNmQxNTFjNDBhOGIzZTlhYmJjIGxlZ2FjeS10cnVuaworNjMwOCBmYTE0ODBlNjBlZDZiNDg4OGNmZWNmNjQxOGIyYzJjOTc2YzlkZTNlIGxlZ2FjeS10cnVuaworNjMwOSAyYjJlZmE0OGYyOGQyNmI5NzNjY2NkZGEwM2QwZDVjYjNhZjc2YmZiIGxlZ2FjeS10cnVuaworNjMxMCA1YWFiM2Y2NjhlODQ2OTZkMjVkMTY1YWVhNzM2Mjc0MGFmNzI4NmJlIGxlZ2FjeS10cnVuaworNjMxMSAyMmUyOWIxNzQ3ZTEzOWQ5NTk4ZWFhNTEyNmM1OTMxM2FmMzk5NDlkIGxlZ2FjeS10cnVuaworNjMxMiAyNmMyMDAyNjY2MTE5ODA2ZTAwN2FkMzY3Y2I4NTM4NWY3MjIxZGE1IGxlZ2FjeS10cnVuaworNjMxMyBmNjY2NzlhYThkZTBhY2UzNmYzNmRiYjNkN2I5NWIzMjk3OTZlMTg4IGxlZ2FjeS10cnVuaworNjMxNCAyMTA4MTZkMzQ4YmE0NWVlODkxNDY5MDc4YmNiYTYyZGEwNTgzZGFiIGxlZ2FjeS10cnVuaworNjMxNSBkZTBhZDc1MjdkZTdmY2U4NDcxZTg2MDk0ZjI4Yjc3ZTFjYjBmNWZiIGxlZ2FjeS10cnVuaworNjMxNiAwZDU0YTE0ZWYwYjhjNzRiZmI2MmQ1MzMyZjIzM2U1N2VjNzg2ODI5IGxlZ2FjeS10cnVuaworNjMxNyBkMTkzMzhmZDM4ZWI2OWU4NTQwNWNlZTFhMDlhMDczNjRmMWVlNmY0IGxlZ2FjeS10cnVuaworNjMxOCBmY2Q4MmEwMTUwN2QyNjIyOTU1NWI3YjA5MTRiY2FlY2Q3NzU1ZGEzIGxlZ2FjeS10cnVuaworNjMxOSA4ZGFiM2FkOTY0MDA2YmVkZmVmOGY1OTQzNDBmMzBkNzM2MmNjYTIzIGxlZ2FjeS10cnVuaworNjMyMCA5N2QyNGFmMzQ4Y2ZlODI5YjQxYzdkMmYyZGE5ZDg5ZmYwYTE4YzcwIGxlZ2FjeS10cnVuaworNjMyMSA2OWRjYzAyZTMxMzVmYWJjNzM0ZTUwZWIxMTI4MTMzZDllMzcyMWM1IGxlZ2FjeS10cnVuaworNjMyMiBkMWNmZjQ5ZTNjYzhkMjgwYTQ2ZDNjYTI1NTc4N2QxNGMxY2RhMTU3IGxlZ2FjeS10cnVuaworNjMyMyAwZmZjMGIzNjJmY2JiOTNmYWJiYmI1YzU3OGE2MWRjNjJiN2VkMzliIGxlZ2FjeS10cnVuaworNjMyNCA5NzUxOWRmYzYzYWViNzlkZmU4YTAxZmU5MjJmMDg1YTA5YTg1YTE2IGxlZ2FjeS10cnVuaworNjMyNSAzYjExNGYwMzE1YzE0NTYxNDkyMTYyYWQ3ODViZGRiOGQ5ZTQ4MDg1IGxlZ2FjeS10cnVuaworNjMyNiAyMzEyNmU4MDQwYTBjMTI2MmVhMThkMGZhZTcyYWQ0ZDY2NGY1NWQ5IGxlZ2FjeS10cnVuaworNjMyNyAwNDU3ZWE5NGVmNzlmYWY5YmM3OWJlZjFmMjRhOGFmYTJmNTQ2ZTBjIGxlZ2FjeS10cnVuaworNjMyOCA1ODMwZWRlNDA4NmM3NDQwNGQ0MTdkZTMyNTFkY2NlMzE2ZTE5ZDkyIGxlZ2FjeS10cnVuaworNjMyOSA4M2E5NWJmNzA4NjdkYmYzNzRkN2RlODU5OTc0NGZhMDhiNWUxZmI0IGxlZ2FjeS10cnVuaworNjMzMCA4YjcxZWE1ZGFjYzgzMTU1MDIzOWQ3Mzc5NGZhYWJhNmVkMDEzNTI3IGxlZ2FjeS10cnVuaworNjMzMSAwODUzMTY2ZjBkNjk2NjBkNmM0MzJlYjM4ZDI1NzBhZmQ0YjdiN2ZhIGxlZ2FjeS10cnVuaworNjMzMiBiNjE5Mzk1MjRjM2NlZmNiNGFlMGUyMTUwNDhjMDA2NGQxNmUwNjUwIGxlZ2FjeS10cnVuaworNjMzMyA4YjU5MDEzOTlhZGRiNGVhMjE2OGJlYjdjOTJmNTQzNTRiMWEwYzk0IGxlZ2FjeS10cnVuaworNjMzNCBkNTVjZGY0M2MyNDAxOWM2NDA4OWVmYTJjNmY4NzI3MDdmZmZhNDYwIGxlZ2FjeS10cnVuaworNjMzNSA0NTY2YTE5YzM0MzhkMTRlMDE2YWEzNzBmMjBjMzhlN2YxMThkZDAyIGxlZ2FjeS10cnVuaworNjMzNiA3ODE5NTY4MzIzYzM3NTNmMzJkMjNiNTcwMjE4MDRjNjc3MjczNmRiIGxlZ2FjeS10cnVuaworNjMzNyA0NTkxMDM1MjI4YTc3M2E1MTZhYTQwZTg1NzNmNGE1OWRmYmNkZTUxIGxlZ2FjeS10cnVuaworNjMzOCBhM2IwOWE3MTE2MmJjMjJiYzRjNGJhMzc2Mzc2ZjI2MDZmNjM4ZDcxIGxlZ2FjeS10cnVuaworNjMzOSBlOWIzNWNjODhiNTBlOTQwZDI3YmNkY2IwNDU3NzJhOWVjN2Y3YTZjIGxlZ2FjeS10cnVuaworNjM0MCAyYWMyYTYwMTIwNWIzMzViYzg2YjA5MTczZTZkNTlkMTRmNTA5NzAxIGxlZ2FjeS10cnVuaworNjM0MSA0ZGRlOGMwNDBmOWVjNTE2NWJlMDM3ZmJlY2MwM2E1Y2E1ZDk1NjZiIGxlZ2FjeS10cnVuaworNjM0MiA1YjE0NzEwOTVhM2EyNjcyMWZiNjQxZjQyNTU2NmE2M2I0MjQyNjg3IGxlZ2FjeS10cnVuaworNjM0MyA5YjE5NTI4NWZlMTc3YjE1ZjRkZTU1YTNlNGE2NTk1ODVmYjcxM2M1IGxlZ2FjeS10cnVuaworNjM0NCA0ZTk3OTE2MTY3MWY0MzlhZTg1ZTIwYmJkZDUwMjk1N2ZlOWYzMGM4IGxlZ2FjeS10cnVuaworNjM0NSBiYzBlZGM1ODlhZDQ5ZDliNWQ0OTBjYWI1MjUzYWQyNGE0ZWJjNzk5IGxlZ2FjeS10cnVuaworNjM0NiBkYzVjMTExNzczMzk4MGU4ZDg3NTQxZTYyNzAzN2I0YTdlNTBhZmU4IGxlZ2FjeS10cnVuaworNjM0NyAyODM4ZGI4M2QwZWQzODYwNGVmNjI4YTQ3ZDEwYzQzMjBhMzk1MGIzIGxlZ2FjeS10cnVuaworNjM0OCAwNjM4ZmRjMjNlZWM0YmE2ZTZiM2UyNDgxODhmOWU2MTdiZDBjODAxIGxlZ2FjeS10cnVuaworNjM0OSA0MDhlMzc0OTM0ZTVhNDI0ZDMwNDNiZmQ2NGI4OTVhYTIxNzU5NzhjIGxlZ2FjeS10cnVuaworNjM1MCA0Mjg2OTEwMDgwYTlmZWFhZmRlM2Y4MTMwNzliOGJkYmQzNzQ4ZDBhIGxlZ2FjeS10cnVuaworNjM1MSBmZWU5MjhmMTY2MWU3NzUyZjU3MjZmZjM4ODJhZGRmMDNiOTgyOWM5IGxlZ2FjeS10cnVuaworNjM1MiBkMGI0NTY2ZTIxMDdhNTM3NDE4MTM3ZWUxMDc4OWVhYmU4MjVkY2E1IGxlZ2FjeS10cnVuaworNjM1MyAyZGExMmM5ZDcxNGY0NzMyYmJkNDA5ZTU4NTY2MTg2YmIyZmUzMTE0IGxlZ2FjeS10cnVuaworNjM1NCAzNTdkNzM5NWM5OThjZGY2NmViZjY0NmJlNTQzZjgzNDY1Y2ZjNDgzIGxlZ2FjeS10cnVuaworNjM1NSBjODgzZDVlMjRhZDhmMzM1YzkyZWFmNmQwMmFjOWE4NDU0YTQ0ZWMxIGxlZ2FjeS10cnVuaworNjM1NiA2ZGM3ZWQ4YTQzNGIxZmYzNjkwZmI5YTU5ODExYTIyNDljMTMzNGUxIGxlZ2FjeS10cnVuaworNjM1NyBmYzliMTY1YThhMDlkMzEyODZiZTA4NjBhOTg0Mzc1MGIzOTQ2OTYwIGxlZ2FjeS10cnVuaworNjM1OCA4MWY2MGY1MmI4NzMyNTg1YWY0ZThjMzdhOWNmNDc3MTljZGFlMDRlIGxlZ2FjeS10cnVuaworNjM1OSA5NTdmNDJlYTBmODQ0NDQ4NmEyMzdjYjc5MmIzMDU3ZWQ3YzMyM2EwIGxlZ2FjeS10cnVuaworNjM2MCAzYzc1MzA2YTY1Y2VkNDE2NjMzNzhjNjkwY2E1YTM0NTRlOWRjN2E5IGxlZ2FjeS10cnVuaworNjM2MSA1NzE2ODI1ZjZlOWIxMzdmZjg2N2UzZDliYWJiNDNmOGUzMTM1YTU5IGxlZ2FjeS10cnVuaworNjM2MiBmOTAzMDE1NDRmYTliZTg5YTZiOGYyYTg5Yzg1YjdhYTRkMTZlYjEyIGxlZ2FjeS10cnVuaworNjM2MyBkOWU3ZjEwODhjM2IzNjNiYTQ4NTJjZDhlYTcxYzgyNzQxZTc2ZTgwIGxlZ2FjeS10cnVuaworNjM2NCBhYjA4ODllNDIxZWQ0N2EyYjJhNTQwNDJiOTY0NDZiNjQ0ODA1N2E0IGxlZ2FjeS10cnVuaworNjM2NSA5NThkNGM2NzUyNmIwOWNkZGQyZTI2MjI1NDIzMTQzZTBiMmRlNDY0IGxlZ2FjeS10cnVuaworNjM2NiBhNTBhZTgzOTNkMzc4MGNjNzQzYmY5YjgzNzA0YzFiOTkwNTAyZWY4IGxlZ2FjeS10cnVuaworNjM2NyAzM2U1ZDFkNDJjYzI2MmY5ODIwNGFiZDkzNTNjMTkyZWE3Y2Q3NTMzIGxlZ2FjeS10cnVuaworNjM2OCBmNGEzYjE2ZTk1ZjA3ZmFhZjRlZjFkMGExYzJkYmFhZTk5MjZjNDFjIGxlZ2FjeS10cnVuaworNjM2OSAzMThlNjg5YzIyMGY5MjE5N2Q5ZWM3NjViZTY5ZWNhZjMyNDc1ZDQ2IGxlZ2FjeS10cnVuaworNjM3MCA5NGM2YmY2ZmQ3ZjRmYTA5NTAyNGM3ZGFmODhhYjRiNDkyMWRjNTNhIGxlZ2FjeS10cnVuaworNjM3MSA1ODQ5MzY4OTBmODY2OTE1ZDIxNTRiZDUyNWU1MGYzZjQ1ZjJkMTc3IGxlZ2FjeS10cnVuaworNjM3MiBjYmE0Y2UxNWEwZDVjOTlhYTY1YTljODU5Njg0ZGRlNWNkZDdjNmJmIGxlZ2FjeS10cnVuaworNjM3MyBjZTJkOTIzOWJhODExNDVkOGM2MGMyYzYxZjkwNWRlYjdiODZkODM4IGxlZ2FjeS10cnVuaworNjM3NCAwODY0YTYzYTEwYTkyYzE3YzUxY2QzMDQxM2UyYmQwM2ZmY2IxY2IzIGxlZ2FjeS10cnVuaworNjM3NSBhM2Y2N2JiOTZhZGM4YzMyNmRmZmQ4NTJiMGU3MWZjOWJlNzMzYWE2IGxlZ2FjeS10cnVuaworNjM3NiBmZTQxMTYzYzAwYzNmZjI5ZGU1ZjU2ZTYzYzMyMjhkNDQ4N2YwMTA1IGxlZ2FjeS10cnVuaworNjM3NyA5N2U3MDExZmIxYjE5MWEzMDRmNjViZjQzYTE1NmMzZmMzNzAzMjBhIGxlZ2FjeS10cnVuaworNjM3OCBhMGZkODE2ODhiZTUyZjVkNTcyOTU4YzljMjRjYzA0OTFiNmViMzE4IGxlZ2FjeS10cnVuaworNjM3OSBhYzFkNWFiZmQ3OGVlNDkxMGQ3ZTU4MzJhNzhjNTQ1MjVkMmEzMjFlIGxlZ2FjeS10cnVuaworNjM4MCA4NjcxNjQyZTE0YTM3OGY5OThiOTFlODIwNmE1Nzg1NWI4YTQwODZkIGxlZ2FjeS10cnVuaworNjM4MSA2ZDUwOTZiNzAzOGQ4YTE2OWE3NDFiMDllMWFlZmIxNTM5M2RkNGMyIGxlZ2FjeS10cnVuaworNjM4MiA5Y2YxMWFmMzYyOGM4OTg1OWM1MzFkNTM1ZmM0Yzc4OTNjMjFjODMwIGxlZ2FjeS10cnVuaworNjM4MyBhOWE5MmRjMmIzNzQ5NDZjMjg2NDE2MTIyM2VjMTdmYTc2OWQxN2ZlIGxlZ2FjeS10cnVuaworNjM4NCA1YmJlMGRjZTJlMjY3MWNhZmI4YTA0Mjc0NmQ0ZTVjYzM4NzFjNjBjIGxlZ2FjeS10cnVuaworNjM4NSBmMjhkM2Q4OTgyYTI1YTczNzVhMWE1MWZmZDM2ZTEyMjQxYTFmZjRiIGxlZ2FjeS10cnVuaworNjM4NiA1MjRjZjUwMWM4NTFmZDg1YTM5ZTcyZTU2OWNhZTgwNjc4N2UzY2EzIGxlZ2FjeS10cnVuaworNjM4NyAzNDExNDYxMDBmMzhjYTk4ZmE2N2U3MGZhOGVhMDA5ZjliZGNjNDJkIGxlZ2FjeS10cnVuaworNjM4OCA4NGUxNmNmOTIxOTkyNWI1Y2UzOGE0OTg5MGQwMjU5OWFlZmMyMjY3IGxlZ2FjeS10cnVuaworNjM4OSA0NDQxMmU0NmYyNjg3N2U5NDczMGY1OTI1N2Y3OGIzOGVhMzlhZTQ5IGxlZ2FjeS10cnVuaworNjM5MCA3ZGU1ZTExNTNiMzkyY2I2ZDU2ZmFlNWMzZDZhMzcxNTk0ZWE0OGRmIGxlZ2FjeS10cnVuaworNjM5MSBmNDg3NzkzZDYwMTg0NmQwZjk2NjIxMzc1OTdiZWQ4OWIzMWYzNDczIGxlZ2FjeS10cnVuaworNjM5MiA5MzY2MTY0ZjVjNGE5M2Q3Mjk3Y2E4ZDc0OTgxMjVhY2EwMTc2MTNmIGxlZ2FjeS10cnVuaworNjM5MyBjMmFlMDQ0MGM0MjRhNzIyODRhNTdlYzg0MjFlOTc1MzU5NTk2OWNiIGxlZ2FjeS10cnVuaworNjM5NCBlOGJkNDMwY2QzNTdlODZjZjk5OGQ3ZDg5OGY5NTA1NDJjZjI1ZjkxIGxlZ2FjeS10cnVuaworNjM5NSBhMzlkMDY0OTc1MjAzNWI3ZDlhNTZiMmM0NmVhNTFkYWQxMThhNjE3IGxlZ2FjeS10cnVuaworNjM5NiAwNjNkODY3NDE0MTBlMmVkODdkMWMyOTZmOWFlMTdlMjNjNGZmNGNkIGxlZ2FjeS10cnVuaworNjM5NyA0YmNlZTYzZDViYjE3ZGIwMzgzNzY2ZmE3MzQwMGQzYTRjMzNhZWY5IGxlZ2FjeS10cnVuaworNjM5OCAxZGExNjgxODVlNGUwNWI4OWE1MDg2YTE4ZGRjNmU5MzE4N2NjZmJhIGxlZ2FjeS10cnVuaworNjM5OSA1M2U3NTdiYjY3ZDVkNjMxZTZiYTk4MWI1Zjg0YzdjODEyZDQ3N2I5IGxlZ2FjeS10cnVuaworNjQwMCAxNjQwZTM1NTliODY2Nzk5ZDljM2VhMDliMjI1OTk5YmI4ZGMxMTVhIGxlZ2FjeS10cnVuaworNjQwMSBmZjY4YTJlYzFmZjEyY2I2MTVjY2JjODcyYTU2YzUyNzA0ZjQ5Nzk5IGxlZ2FjeS10cnVuaworNjQwMiA1MmMxOWVlODNhNmIwZjcxYzg5MDA3YTVkMjJhOGRkYmVmYTE5MjRmIGxlZ2FjeS10cnVuaworNjQwMyA4ODJhMzFiN2Y4NzMxMWY4ZTA4ZjAwODJkYTNhY2I0NGI5MmJlODE3IGxlZ2FjeS10cnVuaworNjQwNCBmZTExOTY5OTUzNDQ2ZDcwYWE5MjExMzRmOGQzODcxMDcwYzE0NWRjIGxlZ2FjeS10cnVuaworNjQwNSA2MGJiNzQzYjhhNWMyMDAwZDNiMDU1ZjcyMjQ3OGU1OTRiYmRlMzg0IGxlZ2FjeS10cnVuaworNjQwNiBmOWFkOThiNTg0NzJiMDhlN2U1OTUwMmU2MzMwM2UyOGY1ODNlODI5IGxlZ2FjeS10cnVuaworNjQwNyBkN2Q4NzA1YmE2NDQ0ZGQwZDdhMWQ1YTIxODQ4YjI1NzE0YjZjOWM4IGxlZ2FjeS10cnVuaworNjQwOCA2ZTBiYmE5M2EwZWIzMzg2MDk0ZGMzYTk4NDk3ODMyODdmZWFkODE4IGxlZ2FjeS10cnVuaworNjQwOSBkZWNkMTNmNjYyOWQ1YTQzMjQwZjVlNWU1ZDhjZGVlMzJiNzg3MTJiIGxlZ2FjeS10cnVuaworNjQxMCA2MWI0Y2FlNzdmN2U4NzM1YWIwNjY2ZGU4Mjg1YWM1NGI4NmE0Y2NkIGxlZ2FjeS10cnVuaworNjQxMSA2NzUzMjhiMDgxMjJiOWNjOTQ0ZWQxMjJmZDJmY2M3ZmI0MzdmMmZhIGxlZ2FjeS10cnVuaworNjQxMyA0NmIzM2NmOGI5MTNlNWQwNzIyZGExYTU1ZTg2YzU1YzkyM2U3ZTJhIGxlZ2FjeS10cnVuaworNjQxNCAwZDQ0MzdkMWMyYjU3ZWJiYmFmYWUyMDBlMmI1OTIxY2FiMGZiZjZhIGxlZ2FjeS10cnVuaworNjQxNSAzODY4NDg1MjM3NmY1NDIyNjEzOTUzYzJkMGQyYjBkNjdkMmUxNDZiIGxlZ2FjeS10cnVuaworNjQxNiA2ZTYwOWUyNjZiZTlkMTBhOWIxYTIzNjJkZDU2NGY2OWY0ZTNlN2M4IGxlZ2FjeS10cnVuaworNjQxNyBmYmFmYjBjZDBhMmE1NWZmMzEzYWQ0ZTcwOTBkMTM3NGY4MDRmODE1IGxlZ2FjeS10cnVuaworNjQxOCA3M2NmNzA4MmI5ZThkNzQxNDcyYzRjZmJlOGM2NmRkMjcxNTM0OTMyIGxlZ2FjeS10cnVuaworNjQxOSA2Zjc4ZDMxNjQzNzZhZTI0MjFmNTAwNDE3ZmYyY2Q3OTAyMDUzNDkzIGxlZ2FjeS10cnVuaworNjQyMCAxMDc1M2U0ZDc2ZTcxZGM2YTA4NWU1MjYyMmRmOTE0YTc0YzA3Y2FkIGxlZ2FjeS10cnVuaworNjQyMSBkZWFkZWE0M2JiNTM2NDUzNWU1ZGQxNzBmMjhhZWYwZDE3Y2ZmOTU1IGxlZ2FjeS10cnVuaworNjQyMiAzYWNhZjdhZjQ5Y2MxMDEzNjYzMGYzNDU3YTAwMjVlYTA2YWQyZjM5IGxlZ2FjeS10cnVuaworNjQyMyA3NWQwMTZjOTdkMWMyY2VlZjQ3OGZlODc1YzMyYmQwODVkMWMwMzBjIGxlZ2FjeS10cnVuaworNjQyNCA5MDgxODE5YWJiZjU1Njc0MmE5ZjlmNDIwYjM1NjU5ZWFmNDBhZGYwIGxlZ2FjeS10cnVuaworNjQyNSA3ZWUxYjEwMGVkMjlhNGZmMWYyMzE1N2JlOGMwY2ZiNDkyYTQzZDBjIGxlZ2FjeS10cnVuaworNjQyNiBmMGY4YjUwYjViNmNkNjg2ZWMwZTZiYjQ5Y2NmMDFkZmVkYWIzYzkwIGxlZ2FjeS10cnVuaworNjQyNyA5ZDhhOTY1ZGU3ZWM4YWM5ZjUzNmRjNTU2NTQxNDk2ZTRhODE2NTI5IGxlZ2FjeS10cnVuaworNjQyOCAyOTAxNWI1OGU5MjIwMjM0NTI5OGVmYjk4MTBmOTQzODc3OTk3OGE2IGxlZ2FjeS10cnVuaworNjQyOSA4ZTMwOWJlODllZTQ1NGYxN2RkMDYwZTFlNTlhZWQyN2I3OTJkMGU5IGxlZ2FjeS10cnVuaworNjQzMCBmMDFlN2FmMWRkNjA2ODNiMWYzMDJlOTMyNTdhYzQ3Mzg1ODZlZDEzIGxlZ2FjeS10cnVuaworNjQzMSBiODZjODA0NDhkMzU1ZTdlODljYmM3NmMyMjQzNTRiY2FiMzEyY2IzIGxlZ2FjeS10cnVuaworNjQzMiA2YWY3YTcwM2FkYWVkYTFjNmY1ZTVkNWQyYjVjMjk0ODQyMmEyNjRhIGxlZ2FjeS10cnVuaworNjQzMyA5MGY1MDU1NTUwZDlhMDRlNTJhNmNmNmQ1MDAyMTUxYzdlYzgxMmNjIGxlZ2FjeS10cnVuaworNjQzNCBiZmQ5YmFmM2E5YzI5ZmU1ZWQ2M2UyYTZhODFhMjEwYzRmNWFhODg5IGxlZ2FjeS10cnVuaworNjQzNSBmMDhkN2YzNjhlYmZhMThlOTlkMDNhNmE4ZDRkZjA3ZDUwNGU0ZmU5IGxlZ2FjeS10cnVuaworNjQzNiAwMDcyMjk5MGI4MGMzMWYyZWQ5ZGRmMjVmNWRhNDgzZjE4NjY2NGIxIGxlZ2FjeS10cnVuaworNjQzNyBmY2ZlYzZhODEwYmE1NDNlNjdiMjBmOTJiMTk0OTc4OGQ2ZmI1YTk3IGxlZ2FjeS10cnVuaworNjQzOCA5YzA1ZmY2ZmIwYTRlNGJiNzVlNWJkMDYzZmU5N2EyMWI3MTI2MTQ3IGxlZ2FjeS10cnVuaworNjQzOSAyODk3ZGFmZWQ5NWE3Mjg0ZWNmOWFhNGNhMjdiZjBkMmU5MTE2NzAzIGxlZ2FjeS10cnVuaworNjQ0MCA1MzAxOWUzYTZkNWEzNDA1OTI4MmU1Zjc3OGYzN2FmMmYxZDNlMjczIGxlZ2FjeS10cnVuaworNjQ0MCAxMjlmMTI5OWQ0ZTk3ZTg4NGJiYmJkZDAwYmFmMTAxZDE3ODk3M2U2IGxlZ2FjeS10cnVuaworNjQ0MiBhZDg4YTAwMDUyMWY3YjNmM2VkYjU1NGViYWRkODc3MGU4ZjAwOGQzIGxlZ2FjeS10cnVuaworNjQ0MyBkYzE0NDI1OTQ5OGZjZTlhYTY4OWIyOGZiYzk3NjAyY2EzYWYzMGQxIGxlZ2FjeS10cnVuaworNjQ0NCAxNDgxNTI1MmM3YTNhNWFlNDFkM2Y4OTFiNWY4YjEyYmI4MzgxOTA0IGxlZ2FjeS10cnVuaworNjQ0NSBiYjBjZTY1M2MyYmEwMjdiYjQxMjk5N2QwYjE4YjRhNzE2ZGJmNmIzIGxlZ2FjeS10cnVuaworNjQ0NiAzZDFlNGI3NmY3NDVhOTJjOTE1YTg2ZGIzYmZkMThmMzc3ZTZkODlkIGxlZ2FjeS10cnVuaworNjQ0NyBmYzUwNWYwMmFkOGEyODA3NTllYjA3NGU1MmI5YjA4MDIwMDU0NjlkIGxlZ2FjeS10cnVuaworNjQ0OCBiNzZmZTY3ZWVkNDRlYTcwOTMwMjBkNzk1NjE3MGI2YTcxZjViZTI0IGxlZ2FjeS10cnVuaworNjQ0OSBhMzQ5OTdiNmVkZjQyYmQ3ZGUxNTIwMzBmMjBhZTIyNTQ3YzJjYzI3IGxlZ2FjeS10cnVuaworNjQ1MCBlYWVjNGY2YThiZThjZmY3ZmUxM2JiMDk3MDIzMDRhYmZlZDA5NTM1IGxlZ2FjeS10cnVuaworNjQ1MSBiOTNjNGNmYzJjZmVhNGI0YzNmNDYzYTRjYWU1MzU4ODgwMDNlZTczIGxlZ2FjeS10cnVuaworNjQ1MiA4N2U1M2M2MmNhYzgyMTYwYzdjZDkyNjhmMDljN2YxM2UxODA1ODcxIGxlZ2FjeS10cnVuaworNjQ1MyA0YjUwOThiMWZjZWYyODA2MGFiODkwY2U5YTAyZmNlOTIzNmFiYTIyIGxlZ2FjeS10cnVuaworNjQ1NCBmYjVmYzAzMjBlNmU1ZDUyZGFhYzk3NTQ1MzY4Y2M4YmE5YzZiMWFhIGxlZ2FjeS10cnVuaworNjQ1NSBjYWYxMTA3MjRjYzE3N2U0NTAzYmY2MDc4ZGI3MjI5NmE1MTI5N2EyIGxlZ2FjeS10cnVuaworNjQ1NiA0NDkwMjUxNjYxNGE5MDFmYzllZDlmY2M2OGRhOTFkMDBmNGFiMTU4IGxlZ2FjeS10cnVuaworNjQ1NyAwNjEzZjE3ZGNmZDg2NTNhMzA0NzQ0NzEzZDAyZjdiMTZhNjdhNTYzIGxlZ2FjeS10cnVuaworNjQ1OCAwMTFjZmU3NDkwZWI1Zjk2ZjQ4MzViNGM2NWU4NmNkYzY5ZmRlMmMxIGxlZ2FjeS10cnVuaworNjQ1OSA5YzJjYmYzMDY4NjRkMmZiOWIwNTNjM2Q4YjJiYzQxZTQ0OGE5MmIwIGxlZ2FjeS10cnVuaworNjQ2MCA2ZmJjNWM2NjU4MTIxZTVhNDA4NTAyMGRkY2MwNmY3ZmIxNjZhZTM0IGxlZ2FjeS10cnVuaworNjQ2MSBlZmIzYTVhMmNkZWFjYmZiMWYzMGUzOTM0ZTdmYWIzYTNkZTc4ODhjIGxlZ2FjeS10cnVuaworNjQ2MiBhODE1NzY1YjQ2OTUyYzFmM2E4ODE2MTgyNDA1ZTEwOGUxN2Y1MDMyIGxlZ2FjeS10cnVuaworNjQ2MyBhZThkMWI0Njk4MTNhNzFmYTc1M2NiNDBkMTAzYWZkZDdjZDkyZGI0IGxlZ2FjeS10cnVuaworNjQ2NCBjZmI4YjdiYzAyMzNhNWYxMmNlMTdmNWFkMTA5MWVkNmRkZTVkZDIzIGxlZ2FjeS10cnVuaworNjQ2NSBhNGFhYzc2NmNiZjAwNTgyOGVhOWQyYmE1NGJjOTc1NjFlN2E3YWRjIGxlZ2FjeS10cnVuaworNjQ2NiA2NDE0ZmZiN2YyODVkMzYyZTMyM2M1Njg5NzU1MDk2NTAwMmU3MzVmIGxlZ2FjeS10cnVuaworNjQ2NyAzZjU3YWIzMmI3NDEyYjMzNWMwZThhMzgxYTQxMjQyM2NhYWFiZGU1IGxlZ2FjeS10cnVuaworNjQ2OCBjYTBlMDVlYzg1YjlhYWQzMGQxOGRhOTBhNGRjM2E4MTFlNWE2MWMxIGxlZ2FjeS10cnVuaworNjQ2OSAwZWMyY2U5N2I4ZTNjYmQwYWFkZWUwMzE4MTM1YTFlMmY4OGMwMzI2IGxlZ2FjeS10cnVuaworNjQ3MCA4MDY5NzkwYjM5NzQwMDkxOWVlOTkwY2QzOTI0NGY0ZDQwYzI0NjdiIGxlZ2FjeS10cnVuaworNjQ3MSBmNjMwYTA2N2FlOGNiMjIxMGI2OGNjNzgyZjg1ZTE1ZWU4OWIxOTM5IGxlZ2FjeS10cnVuaworNjQ3MiBiMDk3NmNkYmQ1OTgwM2IzMDNlNmNhMDEzNjkwNTZjN2IwYWE1NTdjIGxlZ2FjeS10cnVuaworNjQ3MyBiZmZmZDM4ZDYwMGI1ZDk2NWE1Y2ZiZTYxYTQ2OGVkYTU4MmQyMzU2IGxlZ2FjeS10cnVuaworNjQ3NCAxZWQ3NzNlMTU5MzY5MzQ1YzM5ZTI4Njc0NDlmMTllM2UxYmRhMWZkIGxlZ2FjeS10cnVuaworNjQ3NSA0MjQxNTgyNjM2YWRiMzhlY2MxNDM4MmRjZDBhM2ZhNWM4NjhkMWQyIGxlZ2FjeS10cnVuaworNjQ3NiAxMzhmYTE1YTEwMzJlYzFiMThjNjkxZTY4MWNlODM5N2JmOGM4ZWM0IGxlZ2FjeS10cnVuaworNjQ3NyBkM2ExZjYwODhjMjhmMTMxOTlmMGMyNDYwMGZmMWI5Yjg3ZWNkODc3IGxlZ2FjeS10cnVuaworNjQ3OCA3NDk1MzIyNDI3Yzc2YWM2ZTNmNzk1MzY3NjNkOTVkNzExZjJjMjdmIGxlZ2FjeS10cnVuaworNjQ3OSBjMmE2MTFhZTBmZWNmNDk2OTAwM2MyZTlmNTFiYjlmMTQyYTRkODRiIGxlZ2FjeS10cnVuaworNjQ4MCAxYTBhYTk4NmY2ZmE2NDU1YjdiMTNmN2ViNDJhNWEyZTVkN2MxMTc0IGxlZ2FjeS10cnVuaworNjQ4MSAxOGMzMjcxNGY4YmE1NWQxNTVlYTZhODk2MmNlMDkyOTAxYzUzNjE3IGxlZ2FjeS10cnVuaworNjQ4MiA2MTEwNjk4NmExYTRjOWJkNTM1YzYxMTFjNGFjOWRmNDA5YTBjZWVmIGxlZ2FjeS10cnVuaworNjQ4MyBjY2NmOWYyNzMyY2YzZWQ0ZmU5N2Y3ZTUxZjI1Mjg4NzBhNDdkZDNmIGxlZ2FjeS10cnVuaworNjQ4NCA5Mjk0MTFkYjIwYTg1ODdmNjE1NDk3MjBkODBiODc2MzU4MDZhODdlIGxlZ2FjeS10cnVuaworNjQ4NSAyMmEwMzNiYmU2NTVmMTViNDAzZjQ2MWRiNDBiNGRmZTZhNTZmNTIyIGxlZ2FjeS10cnVuaworNjQ4NiBhYTk1NDg4ODViM2Y4MGEzMjNhODcxMjc0NGFhNWZjN2M1NzZjZmM5IGxlZ2FjeS10cnVuaworNjQ4NyA0OTA5ZWYzOWVhZjFkYjgyNDE0Njg0NTAyMWM4ZWYzNDUxOTA3MzY1IGxlZ2FjeS10cnVuaworNjQ4OCAyMTEyMTVjMWM1MGQ0YjI0YTNkNzQ4NGIzMjE5NjM2ZWE1ZjE2NzQ1IGxlZ2FjeS10cnVuaworNjQ4OSA5Mzg5MThmZjM1Mzc5NTBlNjkyNDhlNGViMmZiZjZhZTM1N2M2NjY3IGxlZ2FjeS10cnVuaworNjQ5MCA1ZGM4YzA0MjkwNWI1YzFlYjIyNmQ1ODdhYTY1ZGIzYWE2NzA0YTQxIGxlZ2FjeS10cnVuaworNjQ5MSA0MGM5MjkzMzVkN2YyNDQ0MjI2YzRmN2I3NzE1ZTY2N2E4ZDUyMzBlIGxlZ2FjeS10cnVuaworNjQ5MiAxZGVlM2U0ZjY3ZGYwMjIyNGU4NWQzM2Y4NGI2YjAyMzBlMzYwODc1IGxlZ2FjeS10cnVuaworNjQ5MyBmNDllNDA1N2ViNjgzMDJmMjk5YjM3YWZjZjc2MTIyOTM4OWUyNTE0IGxlZ2FjeS10cnVuaworNjQ5NCBjZjI2MzBhNDFmODc1MmU2ZmY1Mzc1OGMxNmVjZTVhY2FiOTEzNjMzIGxlZ2FjeS10cnVuaworNjQ5NSA0ZmNjZDllZWU2NzljMjBjYzcxZWExNTgwMmQ4ZWIwMDBjNTg1N2RiIGxlZ2FjeS10cnVuaworNjQ5NiA4OTJmNDU2MTY0OGEwOTUwZTFjNWE3YmIxNTFiNTY5ODQ3NjE5ODIyIGxlZ2FjeS10cnVuaworNjQ5NyA1M2Q1MTFjMDAyOWY1NDEzMTg1N2YyY2Q3ZGRlNGUwYjI4MWY5NDFkIGxlZ2FjeS10cnVuaworNjQ5OCA4NTRmMjVmZGU4ZjQyYzBhMjdmODE1Y2I4NjU3NjdiZjQ4OTFlZDY2IGxlZ2FjeS10cnVuaworNjQ5OSA2YmJjMTNiN2RjYTg4YjgzOTYwODE1NTQ4NWM2YThmZTllMDdiZDRmIGxlZ2FjeS10cnVuaworNjUwMCAyY2RiOGY1YWMzNjVmOGRjZmQ3ODQ3NzFiY2RhMTRhYjM5NjM3NGY0IGxlZ2FjeS10cnVuaworNjUwMSBkYTJiOWFlOTFkOTUzZWM2MGI5MTZiZjQ4NzMwYTkwNzU2ZTliMjEwIGxlZ2FjeS10cnVuaworNjUwMiA4MmM5ZGVlMDUzYmM2ZDQ0MWVlNGE5OTY3YThiMzc1MDg2ZjkyODU1IGxlZ2FjeS10cnVuaworNjUwMyBlNzdmYWY1NTY5N2I4ZjNkYzUyZWEwNGU3MDZjOGRhM2RkYTQ5NDA4IGxlZ2FjeS10cnVuaworNjUwNCAzYTIwMDAwMmQ4MGE4ODBlYTM1MDgxZmE2NmFiMGQ4Zjg2NjJiNTUwIGxlZ2FjeS10cnVuaworNjUwNSA4OTM5NDlkMWQyOGVhYTdlMmY3ZDUyODdlZGUxNDIyNWM3MDZkOTk0IGxlZ2FjeS10cnVuaworNjUwNiA1NTkyZGU5NjU2ZGU0YTkyMDA0OWUwNWQxZWIzNGI1YjhmNjVhYzFlIGxlZ2FjeS10cnVuaworNjUwNyBiNDMzMzhjNTIzMWUxMDUzMTYxNGQyMDM3MjU0MWE1Y2UxOWVlZWNkIGxlZ2FjeS10cnVuaworNjUwOCBkMWJhZWM1NzE4NTI0YzMzMzQ5ODU2OWJmOGFkZjQ4ZDRkYjAxMTU2IGxlZ2FjeS10cnVuaworNjUwOSBmN2MyNDNkMDE4NDQ2OWRjY2ZhMjAxNWU2Nzg0MzU2ZmE1NzVkMzk5IGxlZ2FjeS10cnVuaworNjUxMCBjYTM5MzU1YmU1NWEyYmFlYzk5MDM5NWYwZWE4ZWM0MTNiYzIxMTNiIGxlZ2FjeS10cnVuaworNjUxMSAyNjE0NzJmYTk3MmE3NTgwZjM0MzBkYjgwNzNkZWVkYmE4YzBiNWUxIGxlZ2FjeS10cnVuaworNjUxMiAyM2YyODBhYjU0MDliNzllNjE3M2Q0ZTFmODUxZGJiNjc1NTk0ZDMzIGxlZ2FjeS10cnVuaworNjUxMyBmNDFmMGNhZjFjZmNlMmY1NDI0MGI2MTMwNTk0Mzg5NGU2NDY4MmIxIGxlZ2FjeS10cnVuaworNjUxNCA4YTAxMGRkNDczNmViODNlMGU2MzU2Zjc3ZjQ5NThhNTZjNTc4YzFhIGxlZ2FjeS10cnVuaworNjUxNSA2YjRkMGYxYTBhZTljOWJiNTVjMThkMGRjMGMyYWVhYTBhOGFjMjI2IGxlZ2FjeS10cnVuaworNjUxNiBkNmM3ZTQwY2JmZGYwYTM5M2Y2YjQyMjM0MzU1MDQ4M2E4OTQ0OTllIGxlZ2FjeS10cnVuaworNjUxNyBlZjdlM2M0OTlhNGRhMDFjZDJlMTJkMzU2NTEwNzM1YmQ5ZDlmODA3IGxlZ2FjeS10cnVuaworNjUxOCA5NmUwYTcyMDRlMzFkODBmZjdhMTg0ZjBhMjM1NzA5YmE0ZWYxYmM5IGxlZ2FjeS10cnVuaworNjUxOSBlYjlmYzQwNGMwNjYzMTNlNGU5YWU3NmJkM2UwN2M1ZDc5MzMxZDFhIGxlZ2FjeS10cnVuaworNjUyMCAzZTY4NjNjZWEzODMyNjNjNTk4MmM3M2E4NDUyNWQxYTc3MTY4YjBlIGxlZ2FjeS10cnVuaworNjUyMSBmN2IxM2Q0MTgyYjNkYWU4YjM3M2UyMmRhNzkyYmM0NDhkZjYyMGQ1IGxlZ2FjeS10cnVuaworNjUyMiBhMmRjN2NlNGRmYmU3YmQ2ZmMzY2MzMjc1ZGI5ZDYwY2U4OGFkM2JhIGxlZ2FjeS10cnVuaworNjUyMyBiYzA2NWRmMDNlZTRlZjg4YzJjNDg2ZGFmYWE1MDNjNDk3OTE4NjY1IGxlZ2FjeS10cnVuaworNjUyNCBkNmNhNmUyMDc5OTQ3NzIyOTA1YjAyODkwOGMyMTYyMjViMzU3NjVhIGxlZ2FjeS10cnVuaworNjUyNSBlZjZjODlmZTIxZWRlYTFhZGMxOGZiNTVlMDExNTEyNmQ1MDRiNThiIGxlZ2FjeS10cnVuaworNjUyNiBhYzkyNWI5YTFkNjc3MjEzN2U1YzZiZjkzYTBkNmEwYmU0MzY2YTg1IGxlZ2FjeS10cnVuaworNjUyNyA2NjljY2Q5ZTcxN2U4ZWM5ZTJjZWViODhhNmY5ZjNhZjNlNGJkOTk0IGxlZ2FjeS10cnVuaworNjUyOCBmMDExMGM1YzYyMjc5MmI0NjViM2I1N2JiMWMxZGUxZjkzYTlhNDE2IGxlZ2FjeS10cnVuaworNjUyOSA2ZGVlZTNiMjA2Yjk5NDdlNDRlODI2OTBiY2ZlMGZiOTE0MmQyZjI4IGxlZ2FjeS10cnVuaworNjUzMCA4MTg1OTllMzkxMjNjY2I4MWIzOTM3NmIwODU5NjIyNDgzMzQyYzdkIGxlZ2FjeS10cnVuaworNjUzMSAyMWIyOGRjZmE4NjU0M2Q3NWQ3NDJmMDdiYjM4MTI4MjQ3OWI0NTA2IGxlZ2FjeS10cnVuaworNjUzMiBkNjg5NzM4NWMzMTg1ZmNiZGRkOWIxMjgwMjNhMzg3ZGRlNTdjYjY0IGxlZ2FjeS10cnVuaworNjUzMyA2NGE1OGIwZmIxNjcxMGRjYjczNzk0N2NhNjU1OTRjNTBjNDc5NWNiIGxlZ2FjeS10cnVuaworNjUzNCA0YmYwMWM2NmNiNjg2Y2E5ODUwM2Q2MTVhYWQ1MDZiOGM4ZTBiZWQyIGxlZ2FjeS10cnVuaworNjUzNSBkNmRlMmMxNDg4MTlhYzdjM2NmYjgyMmY2NzQzZDU5YjQwMjdkMjFiIGxlZ2FjeS10cnVuaworNjUzNiBhNTg5Y2VkY2JlZjU0NjU0NTE0YWQxNWIyNDExZTg1ZWNkMThlNGEyIGxlZ2FjeS10cnVuaworNjUzNyA3ODg0MzQ3MmZiNmZhMjNkOTY4MGRmZTg1YTRmMTM3ZTY1Yzk4MWY3IGxlZ2FjeS10cnVuaworNjUzOCBiZGUxOWFjZjEwNDVkNDdlNTk4MjkyNmVlOWQ1NTI1ZWY1Y2Y3ZDM2IGxlZ2FjeS10cnVuaworNjUzOSAyYzg5YmYwNGY4MzRlYWFlYWNmMTU1M2RkMzgwZTkxODVhZjllZDI1IGxlZ2FjeS10cnVuaworNjU0MSAyMzFhNDIwOTE4MzAyZTk3ZGM4OTllODEwNzlmYmQ3OTQ5MGZiNzA5IGxlZ2FjeS10cnVuaworNjU0MiA0YzU0ZWNmYWRjZTVlNDg2YjA2OGZiMmU4MDgzMTZiNGE5MGY5YjE2IGxlZ2FjeS10cnVuaworNjU0MyBlZmU4Njg5MWY0MTFiODU3YjlhZWVlY2Y5MzFhZDQ4NWJmMzY2OGM3IGxlZ2FjeS10cnVuaworNjU0NCAxOTQxMjMwNWQzMzVhNjljYjFjZmMxOTFjOGUyMjNkNmViZmZjYWQxIGxlZ2FjeS10cnVuaworNjU0NSBjNTc1YTkyMGU0YTFmMzVhNGY5M2ExNjFlYjZiZWIxZjgxN2VlZDRlIGxlZ2FjeS10cnVuaworNjU0NiBmNjY1NjI1MzZmMTFiM2Q1YzcyYmJjYmRjZDRlMGI3MWRkOTAwMDFhIGxlZ2FjeS10cnVuaworNjU0NyA1ODUwNGM5YTM3ZGM0YTgzZTNmZGMyNDU4YWQyN2RlMjU4ZWUwNTJlIGxlZ2FjeS10cnVuaworNjU0OCA3YjZlZWZhYzZlNDkzNzYwOTczNjg4MDJhYTZhNjU2ZDEyZjdhYzMxIGxlZ2FjeS10cnVuaworNjU0OSA0YTcwMzhlN2EzMTM5YzA5ZjQ5ZjU0ODYwM2Y5MjI1OGMwNWIxNjYwIGxlZ2FjeS10cnVuaworNjU1MCBlZGEyOWJlZjg4MGM5YTVkZWMyN2QxYTI1NjdmNTFhNjU2Y2U3ZTQ1IGxlZ2FjeS10cnVuaworNjU1MSAxMGMwODQ5NDJjZjEyZGQwZmVlZjNiYTJiMjI5NTExYTBiMGM3NjBjIGxlZ2FjeS10cnVuaworNjU1MiAxODQ1MWRjYTk0NjlhMDRlMmIzMDg3ZDVlNzQ1ODEyMjI2OTNmOWU2IGxlZ2FjeS10cnVuaworNjU1MyBhNmU2MmMyMWIwZTNiMDFjZWRmM2Q3ZTJiZGY1YWEzNzEyMjFkZTVlIGxlZ2FjeS10cnVuaworNjU1NCA3NTJiODZiYTE2ZmM2ZTkzODQ5NmI3NmI4ODhhZmZmNDlkYzU1MjVhIGxlZ2FjeS10cnVuaworNjU1NSA1ZjY4NjlhMzhkODUxZjA2OTY1ODA1NDFjYTVhOGJkOGMwYmQ4YTI2IGxlZ2FjeS10cnVuaworNjU1NiAzOTA2ODM4MThmNzM0MTdkYjkxNGZhMWIwMTA4NjBlZDZkNmMxNzRmIGxlZ2FjeS10cnVuaworNjU1NyA0NjYxN2QyOWM1ZDA2MzlhN2Q2NTMxN2FhNmQ3ODM2NGNlMzFmYTkzIGxlZ2FjeS10cnVuaworNjU1OCA3ZjgzZTI0ZDFkODY5YjY3NDcxMDMxZTQwMWFmOWIxYzU5ZWU5ZTYzIGxlZ2FjeS10cnVuaworNjU1OSBlMGY2NDJlZTQ1YmJkYTAxYTJmMWQxMDgxZGQ2MjU5MjMwYzJhNjZlIGxlZ2FjeS10cnVuaworNjU2MCA4MzFiNDIwZTQxMWU0MjFkMzM3YzJjNGU2ZTU2Njk5ZTlhYTg1NDQ3IGxlZ2FjeS10cnVuaworNjU2MSA3NDBkZWY2OTdkOGI4ZTNiY2RhNGRlNmM5Y2YyYTc5NjVjODc0OGZlIGxlZ2FjeS10cnVuaworNjU2MiBmODFkNzg1NDdmMjg5MjkxYWZiMjM1M2MzZjVjN2M0YjU0Nzk2YjA5IGxlZ2FjeS10cnVuaworNjU2MyA5ZjcwZDk5NWQwMjc5Mjk5Y2Q5MmYzNmU4MzdjODg0YmRjYTEwYjdhIGxlZ2FjeS10cnVuaworNjU2NCAwYjQwYzhkNWIyMWQyMjU5NTU5NzBjY2RhYzM1ZWFjOWExZDYwZGEzIGxlZ2FjeS10cnVuaworNjU2NSBkYzk0NmNhYjdiOWJiYmFmMzlmYWU2OTA5ZDczM2ZkNjdlNWYyNTI3IGxlZ2FjeS10cnVuaworNjU2NiA4NTkyZmE0YTExOWIwOGE4OGExY2E0NzYyM2IzOGQwYjE1MzdhYzVjIGxlZ2FjeS10cnVuaworNjU2NyBmMjlmZTcxZjExZTY0ZjEzODFlZmI3Zjg2ZTI4MTkwYzg3MTFkYzJhIGxlZ2FjeS10cnVuaworNjU2OCA4NDM4MTg0ZTQ0OGUwMzc4MjliYTcwNzUwZjk0MzI0MDllN2MxMzA4IGxlZ2FjeS10cnVuaworNjU2OSAwYTU5Yzk4ZGMwMDUzNWZhNzNiOTVmZTUzZjI5YjBiYzEwZjRhNDVlIGxlZ2FjeS10cnVuaworNjU3MCA4NDY1ZDhmYmM3YWMxN2JlOTdkYzgxM2NjZWVhMGEwOWFiZGQxYjRlIGxlZ2FjeS10cnVuaworNjU3MSBlNTM4NjM4ZWRjNzEzMzcyMjUzZTc4YjVhNTIyNzQ1MDliMTkyODc3IGxlZ2FjeS10cnVuaworNjU3MiA2ZjZiYTdjMDA4MjNlYWQ4ZDVlNWFhOWFkNjZmODEyZmI5OWRlNTk2IGxlZ2FjeS10cnVuaworNjU3MyAzYTNiMzY3MTY2ODljNWY4NzEzZDgwY2IzN2RhYTJkYmRjMDkxNTI4IGxlZ2FjeS10cnVuaworNjU3NCA1MzM2YzAzYTEzMWZiNWJmMDJhODQzNjBjNTRkMDQ5N2I2ZWYzOTI3IGxlZ2FjeS10cnVuaworNjU3NSAyZmNlYTVkZDFkMThhMjVhZDYxZTQ1MjZkNjg3NDFkMzQ2MmE4Y2JjIGxlZ2FjeS10cnVuaworNjU3NiA5NTY5NjY0YWMzNDc1M2Y5ZDVkMWE0YzM3ZDYzMThlNDA5N2IzZWViIGxlZ2FjeS10cnVuaworNjU3NyBhNWE4MjY2Njk3N2I1ZTI5Yzc4OGQyM2Q5MjBkYzdhZDdlMzY5NzI4IGxlZ2FjeS10cnVuaworNjU3OCA4NjlhOTQ4MDg1YzEwZmNlODM5ZGE2ZDVlNzRiMTg0NjczZjcyNWU1IGxlZ2FjeS10cnVuaworNjU3OSA5YzFmOWIwOWM0NDI3NTc2MmI4MzQ4NDJhZWM3YmY1MDg0ZThkNDM0IGxlZ2FjeS10cnVuaworNjU4MCBmMzk1MTYzY2E5ZDI1NWNhNGY2YzA4Y2MxYTc1MWMyZWE1ZTRlZDZkIGxlZ2FjeS10cnVuaworNjU4MSAzYWMwMzBjYzMzZjA2ODg3YmI4N2ExMWMwOTYyZGUzYWM1MTJlMTEzIGxlZ2FjeS10cnVuaworNjU4MiA2ZDlkNWU3ZTU4OGM0OWZjZDJkYmRhMThiM2RlMTZhNTI3YzVmMzYxIGxlZ2FjeS10cnVuaworNjU4MyA4YzdiN2U5NGY0ZGQzOWViYmRkMDk1MzNmN2QzMTg1YjE3ZjA1NzI1IGxlZ2FjeS10cnVuaworNjU4NCAwN2EzNWZkMmUwYTEzZWU5NDU3MGFiYjg5OWQ4NjdlNzNlZDU5Yzg1IGxlZ2FjeS10cnVuaworNjU4NSA5MDIxNmU5MDczNDVlYjIwYjM1OWRkZDg0OWUzODhmOGU4Y2MzNzNlIGxlZ2FjeS10cnVuaworNjU4NiA1NzI2YmU4ZWU1OWYzMGJiMzA4MjE3NTQ4OWEzZWJmYjUzODkxYzgwIGxlZ2FjeS10cnVuaworNjU4NyBiM2FmMzI1ZDcxMmRlM2U5N2FlMDg5NDExYjAxYTZmM2E5MGE2NTk3IGxlZ2FjeS10cnVuaworNjU4OCA1ZDUyMzk1ZjQwYjBjOWEyYjVmNWI5M2RjMzIwM2I4MzYxZTYzMDRlIGxlZ2FjeS10cnVuaworNjU4OSAyMzU4OWMwMTZjYjliOGM1MTQ0MDZlNGNlZmYyNzMxMDhkODgxYzgxIGxlZ2FjeS10cnVuaworNjU5MCAzMTkwMzk4YWU1MzNjMjZhMTIyNmZjYmI3MTRiYWUzMjJkZmRmYzRiIGxlZ2FjeS10cnVuaworNjU5MSAzZDExNzU4NzAwNWExZGUxN2FiMTkxOTcxNjU4ODgzMTFlNzY0MzI4IGxlZ2FjeS10cnVuaworNjU5MiBhODY0MDdiM2MzYWM1Mzk3ZGUwNmVhMDcwZDlkYmFlYmEyZjBkZDZmIGxlZ2FjeS10cnVuaworNjU5MyA0Zjg0Y2VlNjViOGM5ZTRlMmIwNWE0ZjA1MDU4MjMxOGQ0NzBjZDZhIGxlZ2FjeS10cnVuaworNjU5NCA2NTAwMzFlMWU0MTkwYmY2ZmRhZjQ3MjRkNDcxN2MzMmI2YjU1MDE1IGxlZ2FjeS10cnVuaworNjU5NSAwODNhN2NkODM1NDU1MjZmNDc3ODI0YmU0OTY2OTRkNDMzZjE0ZTZhIGxlZ2FjeS10cnVuaworNjU5NiBkMzBmNWYwZmQwZTJkMjlkNWVhMjE0NGExMmRkNTE1YTE1NjRlZjk3IGxlZ2FjeS10cnVuaworNjU5NyA3MWI0M2Q0YjdjZDBkMzY3OWVhNmFlZWVjNGY4YzNlY2M4ZjM3NWFkIGxlZ2FjeS10cnVuaworNjU5OCA5ZTY1MDQ0OTRhYzczOTE5OGU4M2M5ZTJkY2FhNzUxNWFkNzIxMTM0IGxlZ2FjeS10cnVuaworNjU5OSAwYjczYzMxYmFiOTA5N2VjMmIzZTBmMGRmZjJhMGM1OWIyMzNmNzM4IGxlZ2FjeS10cnVuaworNjYwMCBjODBjNTE1OTk5Yjk4MzBkZGY0ZDI4NTE4ZWVhNTkxYjJkMjA5N2JmIGxlZ2FjeS10cnVuaworNjYwMSBhN2E5ZDgzNTA1YzQ3ZGZjMGIxMGQ4Nzc3ZjIwMzk1NWRlYzIyNmQ2IGxlZ2FjeS10cnVuaworNjYwMiA1YWRlNDA5NmZiNmI4OWUzMjkxNmU1Zjg3ZGRlNjg1NmYxZjY2NDMwIGxlZ2FjeS10cnVuaworNjYwMyBlZWRhYTU5MzQxYjk1ZDMxM2IyMjYzYzhlYjlhNzlmMzE0OGZhZGVlIGxlZ2FjeS10cnVuaworNjYwNCA3Yjg0ZGFlOTdlZThhOTg4OGJiMzRlYzhmNmM1ZTI5NDNkNWEwYWIxIGxlZ2FjeS10cnVuaworNjYwNSA2YjU4OTMzNGUwZTllNmE4Mzk5ZGYyMzQyOTZlZjI3YjllODNlNTFhIGxlZ2FjeS10cnVuaworNjYwNiBjMThkNTJlMDYyMzg3MDNjNTI0NjJiZjMwYzg2NDI4MDE0Zjc5ZjUwIGxlZ2FjeS10cnVuaworNjYwNyBhMmJjOTQxNTY0YTE5ZmJhNmIzYzE0NWIyY2JjMDRlNWU1NzY2ZDdiIGxlZ2FjeS10cnVuaworNjYwOCA2OWVkYzY3ZTVhNjhmMjBlYWQxZDlkOTRiZDI5MDZhNWQ2YWU5YTIyIGxlZ2FjeS10cnVuaworNjYwOSAxODk5YjkxNTUzZDFlZjMyNzc3MGU2MGZmYWVhNmRlYzMzNTA3MGQ1IGxlZ2FjeS10cnVuaworNjYxMCAyNjJmZDU4MmU0NGIzNGU4MzUzYjAxNDkxZWYyNWFiZTdmMzFiMTMwIGxlZ2FjeS10cnVuaworNjYxMSA4Yjc1ZDVlYTIwN2JkNzllM2JjNjBjOTVkNjU4NzdiYTllNmE1YjNhIGxlZ2FjeS10cnVuaworNjYxMiA3ZDNkMmVlNTRhMmNiMjViYzRlOGIwMjg2OWVlNGIxOWE2YTlhOTIxIGxlZ2FjeS10cnVuaworNjYxMyAwMTAzNDRiNGE2MTYyNTNlYWQwZGRmMjFjNTUwM2E5ZDNiYTJlNDgzIGxlZ2FjeS10cnVuaworNjYxNCA1YmFhMDAzYmYzOWUwYjRlMjc2Njc5Mzk4ZDU1ZDJiNTcxOGUwZjIwIGxlZ2FjeS10cnVuaworNjYxNSA2ZmIxMzE1MDFiYjQ2ZDYzODBmMTI2YjRmMDM3NWJkNTAzZGIxMjEzIGxlZ2FjeS10cnVuaworNjYxNiA0NDg3MmYyNTVmOTM0NzQ3YjQ0MWNlZThjMzg2NTFhY2YwMDM3OTljIGxlZ2FjeS10cnVuaworNjYxNyAzM2JmMzgyYzJiMWQ5YjViNDBjMTQ5ZDNkNDhhYTIxZmIxZDNkZWQ1IGxlZ2FjeS10cnVuaworNjYxOCBlZmViZjFjNGVkYTI5NjU0MDQ4MGY2ODdmZWY5YWM2OTIwMWI5MjExIGxlZ2FjeS10cnVuaworNjYxOSA5NTFlZDlhODNmNTdhNTBkZGE1ZjYxNmYyNWJhMGUwZDUyZmQ4ZTQ4IGxlZ2FjeS10cnVuaworNjYyMCBjNGQ2NmM0MTBjODNjZDAyYWU3Y2IyM2Q5ZjE4ODQyOGUxZTJhOWM1IGxlZ2FjeS10cnVuaworNjYyMSAzMGYxYzAxZjM4NjUwYjY4Y2M1ZWNjNzIzZWYyZjk0MDIzOGRjNGIxIGxlZ2FjeS10cnVuaworNjYyMiBhYjQzNzE1ZWY0ZWUyNGY5NmUwOTUzZjRhMjY0M2JjYmEyNmNhMTljIGxlZ2FjeS10cnVuaworNjYyMyA0Mjk4ZmYyMjJkNzYzZGI3ZjQ5M2EwM2JiNGI4MjFmNDdkNDIzMzFjIGxlZ2FjeS10cnVuaworNjYyNCA4YTBkNDNiMTMxMjUxZDJmNmI1YjZmZGVjMThhMWI4YzdmNTRiYzcwIGxlZ2FjeS10cnVuaworNjYyNSA2OWEzM2ZhM2RiYjg4MTE1MDVjZDAzMTMyZGRhZDc3YTU4NDQ0NzgxIGxlZ2FjeS10cnVuaworNjYyNiA5ODgxYTUyMTRmZDJjNTAxOTkyMDIwMzIyMzhjYzZiYTc5NzBmY2Q4IGxlZ2FjeS10cnVuaworNjYyNyBjYzA2ZTcwMTI3ZmMwYmM4YzRlN2Q2NWY0YTg1MmVmNzQ1NGQ3OTI5IGxlZ2FjeS10cnVuaworNjYyOCAwMjYyMWI4NzdlZTVkZjAxMWNlNWI4M2M4Y2UwNzJiOTQ1Y2E5MDZiIGxlZ2FjeS10cnVuaworNjYyOSA4NmE2MmNhM2EzN2I3YWJmNTU5NDE0ZWIwZGE4ZDU0NjIxZDdhODg1IGxlZ2FjeS10cnVuaworNjYzMCAxNDA1MDhjOWM2MDMxODI1ZWY4NzIwMDA3MDYyNmZiYmUzNjk4ZGZjIGxlZ2FjeS10cnVuaworNjYzMCA0NGE4MmFjNjU0YTQxNzU1NjlkZWVkOGU4YTk0YjBjYzhlZGVlMDhkIGxlZ2FjeS10cnVuaworNjYzMiBmM2EwZDUwMjQ2ZDI3MTNmZDliZGJlNjI1MDRkMDU0NmFjODIxYWZlIGxlZ2FjeS10cnVuaworNjYzMyBkZjYzOTg1YzFjYTk2MGYwZTMwZjNjZDlkYTUwMjRlYjM3YmFlMmJiIGxlZ2FjeS10cnVuaworNjYzNCA4MTFhN2ZmNzgzYjc3Mjk2YWUwYjM4ZGEzYjIyMDBlZTE0MzgwMDgxIGxlZ2FjeS10cnVuaworNjYzNSBhODFjM2RlM2FhZDk1Yzk1N2Q4ODk0Y2RjZjllNjhiOWZkNDRiMjA1IGxlZ2FjeS10cnVuaworNjYzNiA5OTI1MDE4MmM0OGFmZmQ1NzhhNWNmMzZhYmU4YWEyMDczMzk3ZmJiIGxlZ2FjeS10cnVuaworNjYzNyA1ODJkNDkzN2Q0OTk3MWU1YzhkMDg0YWZmYzg0ODIxOTdjYzljNmFkIGxlZ2FjeS10cnVuaworNjYzOCAxYzA3OWUyM2ZkM2I4OTk0MGZkOTVlYWIwMjlmYjY3ZDkxN2RhN2FiIGxlZ2FjeS10cnVuaworNjYzOSBiM2ZkZTUyOTQ0MGZkNjRkZTdkZjJiZjY0Yzc0NDMyMThkMWY0MzA3IGxlZ2FjeS10cnVuaworNjY0MCBhNzFhNDNkMjQ3YjA5YzIwN2MwMmIzNzUyZjI5YzU3ZWU0NzQ4ZTQxIGxlZ2FjeS10cnVuaworNjY0MSBhOTQwMGVlZTA0MGIxOGViMTA3NGJiNDg5ZDRkOWNkMjhmYWQ1YjY5IGxlZ2FjeS10cnVuaworNjY0MiA3NGI4YWE3ZjExMTRmYmYzZjJlMjRkNDc5ZmUxZTZlZDI5MGE3ZGMzIGxlZ2FjeS10cnVuaworNjY0MyA2ODc4OTljNTYzZTNkZTM4N2M0M2QxZjJlNGI0MTJkMWU1OTM4YTM1IGxlZ2FjeS10cnVuaworNjY0NCAzZGMyZTY3NWYxNzgxNzA3ODRiZjk0M2QwNzcxZTlmMzRlZWIwNTA3IGxlZ2FjeS10cnVuaworNjY0NSAxODU1ZTdjNzkxZTIzZGNkMjIzNTczMjAxZWY1Nzg4ZDU0ZjBmODM2IGxlZ2FjeS10cnVuaworNjY0NiA4ODk5NzgwMmZiOWJiMGExODljZDQyNWY4ZjMxY2U5ZDQwNmNjMzJmIGxlZ2FjeS10cnVuaworNjY0NyAyMzZhZGVhOTc2MGIwMGYyNzRjODBkZDhlY2IzZDY1YzNmODA3OTA3IGxlZ2FjeS10cnVuaworNjY0OCBkMjQxYmZkYTdiNzQ2YWY0MmUzZDhkMWJhOTU1NjcxNTlmYjZiMGM4IGxlZ2FjeS10cnVuaworNjY0OSBiYjViOWZmNzJkZTE5NTE4YzYwMGZlNjQ2NDAxNWM3ZjA1NjBlOGNiIGxlZ2FjeS10cnVuaworNjY1MCAzN2QwMDliMWJmNDVkYTk2N2M5OTk2YzllMmUzZTQ4ZjhhZWUyMDY3IGxlZ2FjeS10cnVuaworNjY1MSAzMTVhNTBjYjE1ZTM4ZDg5NzhhMTZlN2I3NWFiMjQxYmFlYzA3MGE3IGxlZ2FjeS10cnVuaworNjY1MiAyODE3NGFhMzhjNzYyNzdhMDA4ZDU0YjM1NmE1ODNiZWY0ZWJhOGQ3IGxlZ2FjeS10cnVuaworNjY1MyAzM2Y0YTkxZjg3MWJkYmI5ZDYzNTQ4YzY5MzY3MWI4NzQ0OGY2ZGNmIGxlZ2FjeS10cnVuaworNjY1NCA3ZWRlMDEyYTM1YzVlZjM0NmJmNzU1OWMwYzFjYjc0YzU4MTQzYzJjIGxlZ2FjeS10cnVuaworNjY1NSAzZDUzY2ZhYjg4MjE4OGMzODlkODRiOWQ2YWY5Y2QwNDk4YzA4YzU0IGxlZ2FjeS10cnVuaworNjY1NiBhMzkyNjQ4NGE2NTgzYzMwN2MzZDU0OTU4NjhmOTZhNGU1MWFmZGViIGxlZ2FjeS10cnVuaworNjY1NyBjMzYzNjQ1YjdlZGQyN2I0OWJkMTYzMTEyZTcxZGE4NzM4MWIxZTU4IGxlZ2FjeS10cnVuaworNjY1OCAyY2NiOTljOTI4NTQ0NmJiYWJjY2ZlOTQ2MzBmZTI2MDcyNWIzN2I4IGxlZ2FjeS10cnVuaworNjY1OSBhMjNmNGY0NjcyN2I5YmZhNTQ2ZGI3MDlhMDBlMzVjMTI1YzJkY2QxIGxlZ2FjeS10cnVuaworNjY2MCA1ZTEyZTliMjhlYWZmMTEyMWRhYzgwMTc0MGM3ZDRkOTM4Y2ZiZWY2IGxlZ2FjeS10cnVuaworNjY2MSA4YmJlY2Y2ODNhNTA0MGY2YWRkM2QzODkyMzY1NTNlZTBkYTNkNTcxIGxlZ2FjeS10cnVuaworNjY2MiBjNzk2YWUxMTU3ODMyZDJjY2I1Y2YyNDhiZDJiYjdjMWUzZWVkMjE5IGxlZ2FjeS10cnVuaworNjY2MyAwM2YyYzIxYWVjYWYyNmEwMzc5YmQzZmVlNDFlMTYyMTE0YTRkY2MwIGxlZ2FjeS10cnVuaworNjY2NCA5NGRhNTgyMTRkNmM3NWZkODA5ODM0MDFjOTYzM2RkOWM4OWU3ZTNmIGxlZ2FjeS10cnVuaworNjY2NSBlNjEzMThjM2FkMWU4N2UxNjQyMjk0MDZmMDhkMmMxMTc2MmU4M2MxIGxlZ2FjeS10cnVuaworNjY2NiBkMjNmNzg3MzBlMDBkMTNkZmYxY2FmNzBiMWI3ZDE2NTM1ODVjM2MzIGxlZ2FjeS10cnVuaworNjY2NyBmMDI1ZDhhMzc3YjU3MDAxOGQ4MTlkZTQ3MTUzNjVkZWE1Njc2NzI2IGxlZ2FjeS10cnVuaworNjY2OCBkZmJkNmUwMGRkMzgzZDJmM2IwZWM1Zjg0ZDJlZDZjN2Q5N2I1MGU2IGxlZ2FjeS10cnVuaworNjY2OSBlM2Y2YWRhMjhlZDA5NWU3ZDAwZDljYmRjNTEwMjU4MmM4ZTVjNjI4IGxlZ2FjeS10cnVuaworNjY3MCA2NzIwNmJiZDViYjU0OGJkNjBkYjY5YTJiNDk0YTFhOTM3MzUxZDU3IGxlZ2FjeS10cnVuaworNjY3MSBiNzBiYWJhMWM3ODkzMmMyNzk2OTM0ODg5NDZhODg3Y2Y4MzFkZTM2IGxlZ2FjeS10cnVuaworNjY3MiAzODM4M2I2M2Y0MTU4Zjk0NGU3NjhhMzJkYjhlMWRkNTEwOTA0YTcyIGxlZ2FjeS10cnVuaworNjY3MyA2ZmI2ZTAxZTJiYTE0NDM2ZGUwZDg2ZDFhOGE1YzNjZDgwZjFkYjhlIGxlZ2FjeS10cnVuaworNjY3NCAyMmFhYzgxYzc1NjBjMWE4OTYwMzMzZjFiMTE0ODA5MmZmMGU0OTUwIGxlZ2FjeS10cnVuaworNjY3NSBjNjI1OWNmMmM1ODE0M2RiNjEwMjMwNWQ1MjE3ZGU0YWNkNzUxZWY2IGxlZ2FjeS10cnVuaworNjY3NiAzNTBkMGRlMDc3MzljMzc0NzFmZTkyOWY5Njk4OTM5MWRhYjgwYjUwIGxlZ2FjeS10cnVuaworNjY3NyBkMWI0NzQzYTlhNjA1M2U5OGI0MDU3MDliY2FmOTg2NDVlNDhmNzA2IGxlZ2FjeS10cnVuaworNjY3OCAzMTI2ZjhhMTQ2YTY2ZjRhNzZjYjA0ZDM4OGRlNWY3OWIwYmJhYWNjIGxlZ2FjeS10cnVuaworNjY3OSBjNzk5NDAwODM3OGQ5ZGU1YTBiZjA0YTM3NmQzNDlkZWEzZWUxYTUyIGxlZ2FjeS10cnVuaworNjY4MCA0MmVjMjNjNTAwMTg2ZDVhYmUyZGJjYzI2MWNiNTczZDQ1NThiMjJlIGxlZ2FjeS10cnVuaworNjY4MSA2M2FmMjU3NGY3MWY2YzQxNzJiNjdiZDU4OWJhY2I4OWNmNDZhYmYxIGxlZ2FjeS10cnVuaworNjY4MiAxYzAwNjQwMDY5ZjhhNTQxNDU2ZjMxZTljYjNmYmI4NWQ5MzYyMjAxIGxlZ2FjeS10cnVuaworNjY4MyAzZmRlOWQyYTM5YjBjOWEyMTFjYmNhODRiZjM4NDY2MDY2OTJhM2UxIGxlZ2FjeS10cnVuaworNjY4NCA2MGZjMDFkNmY3MjcwY2MzMzY4ZGJmMWE2MTIyMGZlYjU4NDdhODUyIGxlZ2FjeS10cnVuaworNjY4NSA0YTkzY2M3ZTdmYjZmM2U1YjcwZmYwODhjZDIxZmI0ODNiMWVlOWJmIGxlZ2FjeS10cnVuaworNjY4NiBkNzAxOGJjNTU4NGUwYTljODg3YmUxMDliMGE0MjQ1NTkxYzZkNTcyIGxlZ2FjeS10cnVuaworNjY4NyBlMzFiNGRlZmFkNWI0NWNkZjRjNjAwNDkzZDcwNjdhMDIyNjFhMWUxIGxlZ2FjeS10cnVuaworNjY4OCA2ODhkNTY2Y2IxNWIwNzlkYTlkOWE2N2I2ZTBjYmNlNTY3ZWVjMzM1IGxlZ2FjeS10cnVuaworNjY4OSAwNDEwZWQzODA4ZWViOGMyNTQxYWE5NTU0MTMzODdkNjBhNzE0YTlmIGxlZ2FjeS10cnVuaworNjY5MCAwYTVmMDFkNDcwMWMwOTkzYjI5MmNkNWEyMWM5MWIyOTE4NDNkNjIwIGxlZ2FjeS10cnVuaworNjY5MSBjNjY3OWIxYzZjZmMxYjRmNWM0NmM1MjQxYTgzNjJiNDQ5MTFiMzliIGxlZ2FjeS10cnVuaworNjY5MiA5ZTBlODQxN2E5OGFlYWRhYjljMmZlYjg2ODZlNDJlM2VjNWNjZjc3IGxlZ2FjeS10cnVuaworNjY5MyA5YmNmYjAzNGI5NjNkMmM3Y2I1MjEzNzQxZjk0OWZmM2U0YTQ0NTI5IGxlZ2FjeS10cnVuaworNjY5NCA0OGIyZDdhNDUzMWRmOGI4Mjc4MGYzMGM3ODU2ZGIyNjNiZWYxMzk5IGxlZ2FjeS10cnVuaworNjY5NSA2NjkxM2NhN2VjNDcwYWVjOTUzM2ZmMmQxNjliZDhiOGY2NWE0MjI4IGxlZ2FjeS10cnVuaworNjY5NiAxZDFmMGM2NDdlNzdiMTIwZjRmZjhjYjIxMjRlYzk5NDE0YjZlNTcyIGxlZ2FjeS10cnVuaworNjY5NyAxODBjMWQzZGFjNDExMTFmNzMzOWM5ZjBlMjExMTg5M2NmMGJmNWQ3IGxlZ2FjeS10cnVuaworNjY5OCAzZmVlY2FkMjk2ZjQwZjRlZDhkOTAwNDRlODZlNDBhOWExM2E1Y2JlIGxlZ2FjeS10cnVuaworNjY5OSBiM2FlMGNmMmEwNmQ3MTMyNGZhODk5ODI3ODc0MGExOGViZGRlYzBjIGxlZ2FjeS10cnVuaworNjcwMCA0ZmFjYWUwMGJkZDYxMjQwNjQyZWUwZWRmYmYxYThlOGE4NmMyM2RjIGxlZ2FjeS10cnVuaworNjcwMSA1NzNlZDVlMzg3OWI2OTk5OThhZWQ4ODExNDJmNGMzNDQ4M2I4ZmI5IGxlZ2FjeS10cnVuaworNjcwMiA4NDQ0NGVhM2Y1ZjY5ZDYwZjZkODQ3YWFhOTY0Y2ZjNjJiMjRjY2I3IGxlZ2FjeS10cnVuaworNjcwMyAxZjY5MmMzZjFkMzJkNDM5ZjI5MmQyMGFhM2VmZWQ2NjVjZjFhMzEwIGxlZ2FjeS10cnVuaworNjcwNCA0MWE1MmFiMjYzZGFhMjUwN2ZlMzMxNTE5MjJjZTk1MDAxMDhmNWJlIGxlZ2FjeS10cnVuaworNjcwNSA1YzM4N2FhMDM3MDg3MzM3ZmIyMjlhN2U1NGFiNWM0NWI5NTJiZGU1IGxlZ2FjeS10cnVuaworNjcwNiA4ODZjMGY3NzVjOTc2ZTJjY2RiOWZmNDZkNzRiNjZhNTkwNTZjZjkxIGxlZ2FjeS10cnVuaworNjcwNyAxMDk5MTU5ZWM4MjE5ZTBmOTZkNTY4ZDIwMmQxMTY4ZDIxYmQ1OGQwIGxlZ2FjeS10cnVuaworNjcwOCA3YmY3MWE4Mzk2NjFiYzI2MDA2YWM4MzAzOGVkMTFkMzYyMGQwZWU5IGxlZ2FjeS10cnVuaworNjcwOSA4ZjI5MWRjOGZhOWI0NjllNjBmMjU2MTc5MjBiZTM0MjQ2ZjFlNjhiIGxlZ2FjeS10cnVuaworNjcxMCA3ODBmYzJiMTY3NGQ3NzJiODg5ODE1ZjZjYjcyZDNkYmNiNGY2MzhjIGxlZ2FjeS10cnVuaworNjcxMSBjYjQ5MDBmYWI3NjQyOGFmOGFlNTVlMzE5OWU5NDY5NTI1ZGVjMWM0IGxlZ2FjeS10cnVuaworNjcxMiA2Yzg2ZDkxMzZjMDkwZDRmZDM0NTNmZTkyMjYwYTNlMTJmZTcwZjI3IGxlZ2FjeS10cnVuaworNjcxMyA2NzAwNTU4YTMyZmIxMzNjOTM5MWQ0MDc5ZWFmMTliNzQ3NmU0N2Q0IGxlZ2FjeS10cnVuaworNjcxNCAyMWU1Yjk0Yjk5YjgwYmRmOGU2Y2NlY2IyMjk5N2ZhM2NjOTEzYzI1IGxlZ2FjeS10cnVuaworNjcxNSBjNjJkMzJjNWZmM2RlY2VlM2ZlYWE1NGM2MjQ4MGU3OTUxMDA5NGUzIGxlZ2FjeS10cnVuaworNjcxNiAzNTQ1YWI0M2E3MmEyMTlmMGZiY2UzMjVlMmRmMTg3NzY3YTNlMmE4IGxlZ2FjeS10cnVuaworNjcxNyAxY2UwMGNkYzAwM2QyNTVlOGIwOGI1OThiYzcwOTJiNTIzY2QwNzkwIGxlZ2FjeS10cnVuaworNjcxOCAwZmFlMzUzYjA0Y2EyZDFhNTM0MTY3OGE2ZWRiMTliZTJlMjkwN2M2IGxlZ2FjeS10cnVuaworNjcxOSA0M2UyZTU5MmEwMDE5ODUxMjBkYTUwODllZGUxNGEwNmZmZjIwOGMzIGxlZ2FjeS10cnVuaworNjcyMCBjNmVmOGI3YjI2ZWJjMTIwNTIzZjg4MTA1Y2UyOTMzNWFkZjIyNTZiIGxlZ2FjeS10cnVuaworNjcyMSBkYTM4Y2Q2MTY0MTI3Y2NkYmE3OTYwOTQ0NjFhOTU0ZTk2YjQwOWIyIGxlZ2FjeS10cnVuaworNjcyMiA1ZjY3MmE1MTJkYzQxZmRiODA3OTE3NjEyYTFhOGFmMDM5OTc4ZTJhIGxlZ2FjeS10cnVuaworNjcyMyAwY2Y2NzE0NTJmYzU0M2Q0MjZkNTNkNmM4M2M0MzdkM2I0OTkyOGZlIGxlZ2FjeS10cnVuaworNjcyNCA0NDcwZjdmZjBjMjM5Yzg5NGNiOWI1MTg4MTI5ODJmNDdiZDBmZDg2IGxlZ2FjeS10cnVuaworNjcyNSBhYzNmYmI2NzcxZjVjMmRiMzliYjYzYTJiNmEyMDI5NjFkN2ExYTcyIGxlZ2FjeS10cnVuaworNjcyNiA2YjZjNWQxMjEzMGNkOTkwZWRhODA2NTYwZGY2ZDRiNDg5NWJhNjM1IGxlZ2FjeS10cnVuaworNjcyNyAwMmEwMzIxZjk0NjhiZWFjN2FkZGVhOTY2YzViMGZlZTAyOGNmYzJhIGxlZ2FjeS10cnVuaworNjcyOCAwNWFlNTcyYzFhYzU2NmMzZTgzNTA5NjMxZTRjYjA3Y2VkMDk5ZjM1IGxlZ2FjeS10cnVuaworNjcyOSA2NDcwNGQzNmIxOTgxZTgyM2ZjZjBmYTVlODg1NzJmYjA2MDM0MDk5IGxlZ2FjeS10cnVuaworNjczMCBlMjI1ZTcwZmQ2NTcxZmE2NDdkNDNiMGJjNDIzY2RhY2ZlOGRlODA2IGxlZ2FjeS10cnVuaworNjczMSAyMzliMTAwODExNzYzZDM0MTk4ZDEwMTk1ZGQ5YjEzNGFmMGFmZWJkIGxlZ2FjeS10cnVuaworNjczMiBiN2U3ZWI1ZWY4MjBhYTg3Nzk3YTE0ODkwNWFkNWMwZTkxZmEzMzFkIGxlZ2FjeS10cnVuaworNjczMyBkYmI3NjA5NWFkZWUwOTU5OTAzMzdiZWU2YmQ4ZGNiYmFhNzdhOTM0IGxlZ2FjeS10cnVuaworNjczNCA1MTZkZGY1MDE5NGQzNjgwNmVlOWZjOWVkZmJiNWZmYWYxNWQ1ZDM1IGxlZ2FjeS10cnVuaworNjczNSA1NDQyMTdkNTQ4YTVmMWQ1OTQ5NmVkZDAyOTRmNTUzNTI3MzBmMWFjIGxlZ2FjeS10cnVuaworNjczNiA2N2QyNThlZGQzZDk5YmNiNmZhMTNlYzg4NmI0ZWU3YzIzODZlOTcwIGxlZ2FjeS10cnVuaworNjczNyA3YjU0YTNjZWRiZTBjNjQ0YzcwNWNhY2I2NjZmNmY4MDhlYjdiYTc0IGxlZ2FjeS10cnVuaworNjczOCAyNTMwMWI5ZWEwY2NkZTlkNmYyN2EyN2JkN2M5MDJiNGVjZDg1NGM0IGxlZ2FjeS10cnVuaworNjczOSA4ODkyZGE5NTU0YTViZDExZmU4YmM3ZDYwNGU0ZmIyNjdmN2M4NDdjIGxlZ2FjeS10cnVuaworNjc0MCBmMGU4MjEyOWJkM2VhMzYxN2EyZjFmNWE3NjE2YzkyZTQ3NGQ4M2E4IGxlZ2FjeS10cnVuaworNjc0MSA2MDgyNTAxZWNiMmU1ODZjMjAwNTBiYjM5M2M0ZTY1YjBmMTU4MWUzIGxlZ2FjeS10cnVuaworNjc0MiAyZTg3YjgxMTc2ZjlkMzI1YTU2OTM4MzMwNGUzNDcxZTU0ZWQ5OTI0IGxlZ2FjeS10cnVuaworNjc0MyAzOGM4YTFjY2MxNmM2MGUwMzdhZThkMGVhYjdjNWRlNGZhNzQ1OWQ3IGxlZ2FjeS10cnVuaworNjc0NCBlZjUxZTRhMmU3OTk0NDlmM2Y1ZDljZGZiZmEzNzQ2NTlkNWE5ZDQ4IGxlZ2FjeS10cnVuaworNjc0NSA2NTEyMGU5MWIwNjFlYTdkZjFhNmY2ODFjMzY3YTQ4NGUwZmRmOGE0IGxlZ2FjeS10cnVuaworNjc0NiBlNzg5MDMzNmYxMDcwNGYzMzQwYjg4YTYwOWQ1MGNlYmMxYjE4YzZhIGxlZ2FjeS10cnVuaworNjc0NyBjNDg3NjRiZjYyZDFlZDA2YTczYzEwZjMwZGQ2NDE0MmZmNzE4YmZkIGxlZ2FjeS10cnVuaworNjc0OCAzNzk5YjcxMTYzMWIyNWVjNjQ2ZWU4Nzc4M2MwYjM1ZGE0YzYyNTVmIGxlZ2FjeS10cnVuaworNjc0OSBjYjg0MWYxYjAyMmVhMjI0Y2M3YzZmNWNjZDk2NjYwN2FmYjY1NWYxIGxlZ2FjeS10cnVuaworNjc1MCBhZTE3OGYxNTA0MDMwMGM2OTBhNTZkMjM5M2E3N2E2NjUwYWY4NTQ1IGxlZ2FjeS10cnVuaworNjc1MSBiZWZkZjBkYzA5NmIwOGVlYzUyZjNlOGJmNjBiYmJhZjRkYWM1MmFhIGxlZ2FjeS10cnVuaworNjc1MiBmNmU4MjRiMjcwMzIzNWQ4YzM1OWIzMjE2MDA5MmZkMjNkNzhiMWY0IGxlZ2FjeS10cnVuaworNjc1MyA5NGI3NjFmYWM0ZDdiYjNjOGFjYzNjOWJlOWUxMGVlMWNiODBmYzgwIGxlZ2FjeS10cnVuaworNjc1NCA1NjkwOTc4MWE3NDFiMTA1MDUyNmI1MjI2ZTJmNjRkOWRkZWU0OTNlIGxlZ2FjeS10cnVuaworNjc1NSA0YmRhZmE3MDNhMDRiNWM3YjZiZTY0OWQ3ZTVmZmU1ZWQ0YWUwNTUxIGxlZ2FjeS10cnVuaworNjc1NiBkYWYxMmY2NGQ1YWEzZDUxODUyMDA0ZTNiNDU5MDFhZGVhYTc0Nzk0IGxlZ2FjeS10cnVuaworNjc1NyA4MzlmNzI2MTBhZTFmOGJlMWJhMmUzMTcyM2IzNjdlODc3ZDNmYjNmIGxlZ2FjeS10cnVuaworNjc1OCBlMjFkM2U3YWVhODcxOTZjNDMxOTY1ZmYzM2MxMjAyOGU3MjM4NjU1IGxlZ2FjeS10cnVuaworNjc1OSBiNjlmNGI4Mzg5MmU2ODg1YjYwODlkY2EwY2U3NjBjY2Y0YjUxNjg2IGxlZ2FjeS10cnVuaworNjc2MCBkYjM1ZDJiOTNlYmEwZjk5NjlmMGIzMmE4NWYxMmFkMTgzNzdiZWI0IGxlZ2FjeS10cnVuaworNjc2MSBmMmY1Y2Q3Y2I1YjU2YjNhNmViYTMzYTIzZDUwOGRlMTQ1ODE4Zjg3IGxlZ2FjeS10cnVuaworNjc2MiA0M2FlMDQ1YWExMGUxMDdjNDliNWFkNTBjYjJhN2M4ZDZkOWFkOTlhIGxlZ2FjeS10cnVuaworNjc2MyAwMDM2ZGNmMjg0MDIzYTliZDg2MzIzMjZmY2NjODQyYTAxMGNhMTgxIGxlZ2FjeS10cnVuaworNjc2NCA5YzZlYWIwY2Y1NDJkZTFiMTQwNWMxMDVlZTNiYmVhZWI3OTRkNzI5IGxlZ2FjeS10cnVuaworNjc2NSAxNDI3ZDYxZjEzMDcyOTlmODI0M2E0MWMxMjlhNWJjNjU5ZjZjY2U3IGxlZ2FjeS10cnVuaworNjc2NiBhYmQwYjlmZjY3NTkyZDEwNDc3MzZhN2VlZjVjZDllYmM5MmJhNmM3IGxlZ2FjeS10cnVuaworNjc2NyA2OWJiYzIxZjU1Y2YyZTM0ZTQ3MzhhYTUzMjRkMjM2MzcwMGVjNGRmIGxlZ2FjeS10cnVuaworNjc2OCA1MjBkZGNiM2Q1ZDY4ZTI3YjA2NzQxMjhhZmE4NjUxYTg4MDU0NDQ3IGxlZ2FjeS10cnVuaworNjc2OSAwMDhiOWZjNTY1YmZkYzI3Mjg0YWE2MzM1NTMwYmUwZTIzNTdmYzUzIGxlZ2FjeS10cnVuaworNjc3MCA3NWQ3NTczMmE5ZTRiZThkNWI1YjEyYzE5MjhhZjhhM2IxYmM1NDRjIGxlZ2FjeS10cnVuaworNjc3MSBjZjlhOTdiZmMwMjMzOWUwM2U0YjQwNjBiOThlNmY0ZDM3ZTQ4OWUxIGxlZ2FjeS10cnVuaworNjc3MiA2ZjcwOTBhODI2NDU5ZDFiNTNkZmJmZGVhMWE3OTI3MjQ4MjI3ZWIwIGxlZ2FjeS10cnVuaworNjc3MyBlYjFlZDc0Mzk3MmM0MjZhOGNkZDNkODAzYmY2Y2JhNzBhNjI4NDU1IGxlZ2FjeS10cnVuaworNjc3NCBlMDVkYTgwNDNiNTAwYjQxNTM0ZGViYzcyNWUyZmNkYmMyYjk1ZmY2IGxlZ2FjeS10cnVuaworNjc3NSA4NjgwNjMxNjE2NjU4ZTVlZDVlYTQzYjcyYjk1MjIwN2EzYTk3ZWNmIGxlZ2FjeS10cnVuaworNjc3NiBmYzRmMTI4OWZlNmNmNmZkOTQ1NmQxNDY3MDBmYzI0YjJiZDJlNTUwIGxlZ2FjeS10cnVuaworNjc3NyAzODhmOWMyMjIwY2U0ZjYyYzJhM2E3YzZjNDE3NzM4MTUzOTAzZjY4IGxlZ2FjeS10cnVuaworNjc3OCA5NWMzMTkzMWI3NmFmNzA4MzdhM2E0MTRmMThkYjQwYjAwYTFmY2Y1IGxlZ2FjeS10cnVuaworNjc3OSA3ODA5YjZiNGZmZDkzNTM4NjY2YjEzZjdmNDM0OWUwNDhkYmQ4OGQyIGxlZ2FjeS10cnVuaworNjc4MCBlOWY0OGQ3ZTczYjFjYWM5YTNlMTVjZDFjZmYwYWNlMWI4NjJkOTU0IGxlZ2FjeS10cnVuaworNjc4MSAyZWVjMzVlMmFmZmY3M2YyOWU1ZDRlZmU5NDhhODNmNzE1NzZhOTljIGxlZ2FjeS10cnVuaworNjc4MiAxYTBmMzRjMTgxNjNjYzA0OTVjYmVhMTM0MTQ0NzRhZjZhZmVjNTNlIGxlZ2FjeS10cnVuaworNjc4MyBlY2JlYjQ0NWY2MmU1MDZmOGY3NTRmMTNjMzY0MDMwZjI1ZTNmNzhhIGxlZ2FjeS10cnVuaworNjc4NCAzZjZkMjYxNjU0Y2EyZTlkYjkzOTE1NjI4YWM0YTE0M2ZiZDJiZjZiIGxlZ2FjeS10cnVuaworNjc4NSBjOTdmZmQyZWJkNTM5NjQxMGRlOWE3M2ZhNjc3YTkzNWFlMzYxZjZiIGxlZ2FjeS10cnVuaworNjc4NiA5MzdmNjlmZDQzZmVhNWU3OGIxNjIxMmI3OTQyYTk4Y2JlNzBkYTIzIGxlZ2FjeS10cnVuaworNjc4NyA5ODQ3ZGU5NDA3OTAyOTlmY2VjZjJkMWI5MDFjNjk5MTU5MDA2MmRkIGxlZ2FjeS10cnVuaworNjc4OCAzYjM4NzBiOWFjZjI0Mzk3NjdhZjg1NWUyOTlmOWY5MDRhMDBjY2Y4IGxlZ2FjeS10cnVuaworNjc4OSA0NmQ3MzZmYjlkYTMyMjgyZDUyOGFhZWNhNTliMGU1ZDBlNGQxMjEzIGxlZ2FjeS10cnVuaworNjc5MCA3NzI4MjhjMWIxZjY4NzQxOWE1MjE3YWNkMTU1YWYxY2YxMGZkNGZkIGxlZ2FjeS10cnVuaworNjc5MSAwZjUxZjFkNzBkNDUyNmZjYWE5OWVlZTYzYjYzYmNlNTA0NzI2MGM0IGxlZ2FjeS10cnVuaworNjc5MiA5N2QzNjUyZTU3ZDM1YzIzYTFkZjJkNTAzNGQ2MzE0MzZmZmU3NzI3IGxlZ2FjeS10cnVuaworNjc5MyA5NzEzMzk5NmUyMmYwZjJhMjA1YTE1YzlkYTM5YTIyY2M0MTk1YWNiIGxlZ2FjeS10cnVuaworNjc5NCBkNTg3MTk2ZjliZWZhNWVhNmVlZWVhMjFhNGM3ZjhjN2MzMDJhYTEzIGxlZ2FjeS10cnVuaworNjc5NSA5ZDQ0NTAzNTA0NTFmMWViZGU3ZDZiNmMwMThjZmIzMzgwNWZlMWRlIGxlZ2FjeS10cnVuaworNjc5NiA3NzM5N2Q1MWY4OTIwNGRlYWFlNGQ3OGEwZTVlZDFkNGU3ZTg2YjUzIGxlZ2FjeS10cnVuaworNjc5NyAzMTRjMTM0NDVhMDJkZjAwMTRjZjFkMzhiNTlhMjExYzkzOTllY2UwIGxlZ2FjeS10cnVuaworNjc5OCAxYWZjZDFjZDMzM2I1N2MzZmYxMDQ3YjlkNTdmMTcxMGM5NmNkZjdmIGxlZ2FjeS10cnVuaworNjc5OSAxMmMzODY1YWVhYTAzNjM1MDY5OTRlNDk5OGI3NjU4ZmY2YzgyYzljIGxlZ2FjeS10cnVuaworNjgwMCAwMjdmZjE1NTRlNjYyYmZmMmNiM2RiOWEyZDhkMzI1YmIwODAyNjdlIGxlZ2FjeS10cnVuaworNjgwMSBmYjczMGZiMTNmYWI1Y2FlNjc0OTVmNjdjNGMwMDIzYzk5YmY5NDAyIGxlZ2FjeS10cnVuaworNjgwMiBiMDNhYjM1ZDUyZGY5NzdjOWJkNzNhZWEyYjU0ZjIwYWZmN2E3NDM5IGxlZ2FjeS10cnVuaworNjgwMyBhMjQwYmU1YmU2YjRjNDYzYTQ3MjE1Yjg5NDAyNmJlY2RjNTBiN2U1IGxlZ2FjeS10cnVuaworNjgwNCA5MDVmN2I0YjEzMjM4NzA3ZmU3YmI5NTU5ZDBkYTFkMTZkMjVlNzA0IGxlZ2FjeS10cnVuaworNjgwNSBjMmViMzhiNjc0ZjMwOTg5MjQ4YzY1NGRhZDg3OGY2MzUwOWVkNDI0IGxlZ2FjeS10cnVuaworNjgwNiBkMDQ0NjlkMDI1NmNlOGVmMWJiMDQxYWVlNjRjY2FlMGZjOTE3OTYyIGxlZ2FjeS10cnVuaworNjgwNyBlZTIwMjYyMTczNDk5YzRlNWM0ZjEyNTVjMThlY2M5MWQxNmEyZjRhIGxlZ2FjeS10cnVuaworNjgwOCBmMzdjYmZhYTczMjgxMjlhMGQ4ZGYyOTI0ODIwOTBkNzUyZDU4ZGIyIGxlZ2FjeS10cnVuaworNjgwOSAzNjZkNzJmMTI3OTRjNTY5NTdiYzc1ZTQzOGM5ZjcyNWFjM2QxNTQ1IGxlZ2FjeS10cnVuaworNjgxMCA0ZGJmZDRkZmUyODFjOTEyNTUyY2IzYWU3M2RmMDQwOTk4ZWM4ZDVkIGxlZ2FjeS10cnVuaworNjgxMSAzNzY4MjJjNjU4MTA4NDNlZjg2MTJkZGQyM2JjMDYyNGM1MjIzMjY4IGxlZ2FjeS10cnVuaworNjgxMiBhZjE2ODRmYzljNjMyNGQ4ZDI0MWUyMmI3ODFiZTY2ZmFhOTQzYzJmIGxlZ2FjeS10cnVuaworNjgxMyBlN2JhMDkyYzNjZjNjNzE1M2I1ZDliNDJkN2EyMzdiMWU0ZmFlZmFjIGxlZ2FjeS10cnVuaworNjgxNCAyZGY2MmRiMzY2Yjc2ODMwMmFiMzQ0ODdkMmI0NjNkOGYxNmYwNjViIGxlZ2FjeS10cnVuaworNjgxNSA1YTc1NTEyMzYwNjM1YWUzMzY3MTkwZmUwZWRkZWVhNDM0YmZjNDM4IGxlZ2FjeS10cnVuaworNjgxNiA4OTcyOTdhYmU1YjQwNWMxNjJiMWQxOGUzYWZhNmUyYzIzYzU5MWFkIGxlZ2FjeS10cnVuaworNjgxNyA0YmJkZTgwNGI2OTc4NGI0YjBmMGM1OGM3MDUwNTNmZDg2MTNkNjAzIGxlZ2FjeS10cnVuaworNjgxOCA1Y2JkYmE0ZDJlMTUyNWQ5NDIwYWVhOTc5YTEzNGNmMGFjMDg3MjVkIGxlZ2FjeS10cnVuaworNjgxOSA0ZmI4ODRiZjE0N2NjMWMxYjYzYzU1MGQ1MGJhOWVkYzI4MjdhNGM5IGxlZ2FjeS10cnVuaworNjgyMCA3YjYwMGU3M2ZkMmE4YTBmZmQxODI4MDkzZjZiNGNhOWEwNDEzM2FjIGxlZ2FjeS10cnVuaworNjgyMSBhNWMyOWFjY2M0MzhlODBiZTIwMTQ4MTAyNWFkZmMwYzA5YTQ3MGExIGxlZ2FjeS10cnVuaworNjgyMiA4NTJjYTIzYzgwY2NlMDBmNTEyYTc5NzM3OGYxYmQ1YmZkZjVhMDZmIGxlZ2FjeS10cnVuaworNjgyMyA5ODNkZjQzNjQ1OTU3MGZkODU2MWJhZWY3NmEwYWEyNTg2NDU1YmM0IGxlZ2FjeS10cnVuaworNjgyNCBhMjA5OTE5NDYyODUwM2FiZTc2ZDcwYzQ3YmEyMzA5NThiYzA2NmU1IGxlZ2FjeS10cnVuaworNjgyNSAwMmEyNGU0OGIzNzZlNTZiNDliY2U4ZmYxOThkNzMyMDcxY2UwN2RhIGxlZ2FjeS10cnVuaworNjgyNiA2ZWMwY2FlYWY4MjMwZDhlZmI2MTA3YjRjNGJkODA1MjUxZGNkODA3IGxlZ2FjeS10cnVuaworNjgyNyBhYWM4YTk5YTFmOWM0ZmEzMDVkMGIyY2U2MzQwYzExNmYyNDgyOGRhIGxlZ2FjeS10cnVuaworNjgyOCA2OTI1MDcwMzk1M2EyYTcxMDcyZjA5NmJjODYyZjk2NWU5ZWRmOTI3IGxlZ2FjeS10cnVuaworNjgyOSBlYjQ1NWQ5OWJhOTgyMjZmYjhhYzRkYWQwYWIzZmJkOWNmZmEyOWZhIGxlZ2FjeS10cnVuaworNjgzMCA5NWZmODlkODNkNjM5N2E4NGVkODFjMTAyNTAwYmUzZTlkNGE1NmViIGxlZ2FjeS10cnVuaworNjgzMSAyOTEzNTk3NDQzYjkwMGUwMGI1ZTE1OTEwZGY0NzYyNTgwMWQzMzMxIGxlZ2FjeS10cnVuaworNjgzMiAwMjEyYjQ4MDk0NGJjMjAzOTdkNjg5ZDk4MTg4NWMyMTUwMTBlMjEwIGxlZ2FjeS10cnVuaworNjgzMyA0ZTAwZTVkYWE2MTI4ZDI4YjA3NTJmY2ExMjhlMzkzZWRhMzFlYjRiIGxlZ2FjeS10cnVuaworNjgzNCBkYmYyNzM3ZDJjODFjYTNlM2NmMzlkYjM0OGFkMzg2NDc4YThkMGFlIGxlZ2FjeS10cnVuaworNjgzNSBhZjc1NDk2MWFjYzUyNGM5MTAwNTAzZDliNzNlNzBhNDI2YWI0NWQ0IGxlZ2FjeS10cnVuaworNjgzNiAzODM2MTFiZGE5ZTZkZWU4OWFiZGE1NTQxOGI2MzUyZjBhOTMzZTEyIGxlZ2FjeS10cnVuaworNjgzNyA3YjFmNmU1ZTkyOTQ2MzBjNGIwYzRiZDI2ODNhNTUxMTcxMzI3ZWI5IGxlZ2FjeS10cnVuaworNjgzOCAzNDE4MmE2NDA4ZTA0Zjk1YjAxZDJiMmI5ZjhiMmYwYWFjZjk1YTViIGxlZ2FjeS10cnVuaworNjgzOSA5MTNmYzlmZjQzYWMxMjFhOTcyMDlhOGM2NDIwZGUwYzI4ZWJiOTcwIGxlZ2FjeS10cnVuaworNjg0MCAzZWI3NGRmNjcyYTM5OTczMDFlYWZiMDE2MjMxNGQ4MWMyNTNhY2FiIGxlZ2FjeS10cnVuaworNjg0MSAzMTVhNzkxOTlmYzhlZDdjZmQ5YWM0YWU5MWYxYWNhYzlmYTM4OWVjIGxlZ2FjeS10cnVuaworNjg0MiBhMDVmOGQ4YzY3NjhmODFjZjIyNWIzMGUyZDJhYTAzNGM1Mjg3ZTNkIGxlZ2FjeS10cnVuaworNjg0MyAzZTc3ZDY2MzdhMmI5MGQzMmE2OTc0MGVkMDkyMTcyODIzZjJmMjZmIGxlZ2FjeS10cnVuaworNjg0NCBhNzA2OTJhNmQ4Y2NmNTg4MGYyZTg0NmM5MWE5MzYxZjFkY2M5MjBhIGxlZ2FjeS10cnVuaworNjg0NSBjMjc3ZWU4YzY2OWNkYjgyMGE5ZDNiYmUyM2Q2MDM1ZDUyNmRmYWViIGxlZ2FjeS10cnVuaworNjg0NiBjYmQ0MzRiNDZjMWE2M2YzMjI0ZjhhODEzMmEwY2FiZmE5MDdkNmM1IGxlZ2FjeS10cnVuaworNjg0NyA5OGVhODAwNTFkYmM5MWQwOTcwMmI1ZGMyNGIyMzcwMDQ4NWM3MDIzIGxlZ2FjeS10cnVuaworNjg0OCA0NjE0MGY1ODU2ZDkwYTBlYTg0NmNlOThlMWE3YmZlMjAwYTFhN2IwIGxlZ2FjeS10cnVuaworNjg0OSAzMWM3ZDhmNDVhZWIwODU1Nzg4M2JmZTdjZjY3MTkwNWQwZDJhNTA0IGxlZ2FjeS10cnVuaworNjg1MCBkNGY2NGZjNDJkODQ0OTA1NGYzMzE3ZWQ3NDkyMDY5YTM0NDYzZjVhIGxlZ2FjeS10cnVuaworNjg1MSA1ZjhhNjUzYjE3NzlhNTBkZTdlY2NjZWMwNDhkOTE5YjZhNDgxNzkxIGxlZ2FjeS10cnVuaworNjg1MiA5NjY5OWFmNDgxYmE5ZTk4MmQ0MWFmZGFlYjQxYmFmY2FjYzJmNWQxIGxlZ2FjeS10cnVuaworNjg1MyAzMDYxNjc2YTY1OWFlM2U4ZTc5NmEwODk3MGFkOWJkZWJkMjYxMzU5IGxlZ2FjeS10cnVuaworNjg1NCBhZjFiZjBmNmUyZGIxMTAwZjRmYTJlMjlhMTBmNjFlNzk4OGEyNDQ4IGxlZ2FjeS10cnVuaworNjg1NSA3OTg3MzJlNjliM2JhMWE2MjRkOGNiOTk3ZDhiNmUyMjJjNjFlZTQ3IGxlZ2FjeS10cnVuaworNjg1NiBhZDQxZGVjYzVmYTkzZjljODhiNWE4ZTY5YmNlMjg0MzI4YjgwNWE0IGxlZ2FjeS10cnVuaworNjg1NyBlMDMzYzc4NmYyOTcxYzc2NDc0OWY5ZjM5NTI0MGMwZTVjMzhjYjFmIGxlZ2FjeS10cnVuaworNjg1OCAwZGU5YzU1NGJhMDBjMGQ2ZWY1ZGEzNTgxMDRkMTFjYzZmYmYxNzQ1IGxlZ2FjeS10cnVuaworNjg1OSA3MGNjMjM4ZDU2M2U2MjI3OTJkZTdmZjgyODFjMzYyZmU0MzFmMTAwIGxlZ2FjeS10cnVuaworNjg2MCAzYzdlZmViNjA3YTA3MGNiNDQ1OTJhYzk5Y2YyZmY3YWNiM2M3YzQxIGxlZ2FjeS10cnVuaworNjg2MSAyZTI3MmJmNWE0M2U4NDQ3YmUwOGI1ZTZiYjcwYWVkZjEyYjhiYmFhIGxlZ2FjeS10cnVuaworNjg2MiBhNzdmNGMyMjY5N2ZmOWFlZjdmNTdiN2NiNTRjYjAwZmZhMmQ5NDY0IGxlZ2FjeS10cnVuaworNjg2MyBhZGJlNjMzMTdjY2IzZGNjNjdhNGY1YjQ1MmY2YjU3YzQ2ZWZiZjc4IGxlZ2FjeS10cnVuaworNjg2NCA3Nzk1NGZlNDM3NmNiNDkxZTI3YjVhNDg0M2E1ZjUwMDZhODIyMjliIGxlZ2FjeS10cnVuaworNjg2NSA2MmI2NWJlMmI3N2YxYjFhOWQ3MTc2YTJiNWVlNmIzMjQ1MGFkN2ZiIGxlZ2FjeS10cnVuaworNjg2NiA3MmEwY2ZkYTIwMDQ0NzQ1OTA4Y2Q4ZDUxOWE2NTEzZDg1NDc5MDgxIGxlZ2FjeS10cnVuaworNjg2NyA3OTgwODYzMjM0NjQ1Yzg1OGI3NTNmZWFmMDUyMzFlODk2YTE1NzIyIGxlZ2FjeS10cnVuaworNjg2OCA1Yzg2ZjYwNTM5Zjc0MjdlMGFkMTNjZjA0MWNhMDYxNGU4N2JiZjI5IGxlZ2FjeS10cnVuaworNjg2OSA0OGQxZjViZWIxNmJhNjQ5YWQ0MmQ2ZWExMmM0N2FiODhlNTc4NjA0IGxlZ2FjeS10cnVuaworNjg3MCBkNThhODQ5MTVmYWRlMTlhZTJkODJmMGQ4YTU5MTYxYjQ0OTNiMTI3IGxlZ2FjeS10cnVuaworNjg3MSA4OTA0MzRkNWJlYzJmOWMzOWFhNmVhNmQxMTE2ZTQ0MTgyMGRmMGI0IGxlZ2FjeS10cnVuaworNjg3MiBlYzRjNDJiZWE2OWQ2Y2ZiMTM5YzRjNDRkY2UxMThiZThiOWRhNTBkIGxlZ2FjeS10cnVuaworNjg3MyBmZGQxMjlmMDU3NGVkY2M2MTdiOWVhMDA2ZWM2NTk3ZmZiMWFhNGIzIGxlZ2FjeS10cnVuaworNjg3NCAwOTE3NzVhNWUxOWIzNWU5NDQ1MWIwNDcxNzYxYmU2MzRlN2IxOTdhIGxlZ2FjeS10cnVuaworNjg3NSBkMTZiODYyMWEzZjBlYWRhMzkwNGIwNmM1ZDYzN2E5OWUwYmU1YTk3IGxlZ2FjeS10cnVuaworNjg3NiAxZDI3NWNkNDJjOWIxODdjNjMyOWFjOGFkMjI1YjZmNzEyYjhmNzgxIGxlZ2FjeS10cnVuaworNjg3NyAzYjNmN2MzZjZkYTJmOGYwZDVlODRlYjZmNjE3NDViZDY3M2VlOGRiIGxlZ2FjeS10cnVuaworNjg3OCAxZTJkMjgwNjA2ZDFlZmY4ZDIzM2Q3MzhmYTk4Zjc1YmMwNTg2YTg5IGxlZ2FjeS10cnVuaworNjg3OSBlNTI4YzBhY2U0ZTVkYTlkMjFjYzNlMjg3YTUzNGIyODVkMTUwY2E3IGxlZ2FjeS10cnVuaworNjg4MCA2ZjAzMmVhMjY2NDJmNmRjZTAwY2VmYWU2MTc4ZDUwMmZiY2EyNzFlIGxlZ2FjeS10cnVuaworNjg4MSA3ZGRkOGIzZjY4MDJmMGUyZTkzMzllNzg2Zjg5ODQ1NDFhMmJlZDE4IGxlZ2FjeS10cnVuaworNjg4MiA2Yzc3MWVhMzhlZWU4NzI5YTEzMWVjYzQ5NjI3N2Y2ZjBhNWQ4M2E4IGxlZ2FjeS10cnVuaworNjg4MyBhOTgwMTFmMGY5Y2E1YjRhYjFiM2NlOGQxYjgxNWQ2ZDIxNjY5ZDc5IGxlZ2FjeS10cnVuaworNjg4NCA0Y2VmMjNlMWRjY2E4N2ZmMTg3MDhkN2JkNTdmNjkwZjk4MzM3YjY1IGxlZ2FjeS10cnVuaworNjg4NSBkNzM4NDkwYzhkYTE5M2MyZmNlYzBjMTg1YTg0Y2U0YjUzNTFhYmY5IGxlZ2FjeS10cnVuaworNjg4NiBhYzMzMjRlNjM4ZTk2YzI0MzhlMTU1YTI4NjljNGZhNmNmZTEwZmRlIGxlZ2FjeS10cnVuaworNjg4NyA3N2QzZDMwMTM2OTJmZGMzYjQ0NDEwYjFhMzk2MGQxOTQwMDdiMTM5IGxlZ2FjeS10cnVuaworNjg4OCAwMmE2OGQ2MjM4MDVjMDEyMTVlMTUxOTI3ZTMyYzQ2NGI1MTU4MjVhIGxlZ2FjeS10cnVuaworNjg4OSAzZGJlZDBmZjljZjIzMzRkNzYyN2ZiNDk3ZGU1YzNmYTdkNGVmNTZmIGxlZ2FjeS10cnVuaworNjg5MCBmY2U0Zjg3ZTU5NzQ5NDdiODEzZTUwNTIwNWZkZGYyZTg3ZTc2NWJjIGxlZ2FjeS10cnVuaworNjg5MSBjMTQzNWM1ZGEyODE3YjMwNjQ1OGVlZDIwYjI3OGQ5OWNjNGRjMDJiIGxlZ2FjeS10cnVuaworNjg5MiBmNDFhYjcxM2Y3ZWFiZTkzODFiN2FmMTA3NmU5M2U0NzY1MjAyZTY1IGxlZ2FjeS10cnVuaworNjg5MyAyZWFjZDJjOGVhYmZmNDM1NTQ2NzBlYTc4ZTM4MzlmNzlkNmI5Y2VlIGxlZ2FjeS10cnVuaworNjg5NCA3ZmZmZjY5NWYyMWRhNzcxOTRiYzVmNDdmMDAxNjhhMmVkMGMxZGQxIGxlZ2FjeS10cnVuaworNjg5NSA5M2QwNWUxNzgyMTY0ZGY3YjBlN2MyZmJlNjQzMDlhZGVhMjZmZWZiIGxlZ2FjeS10cnVuaworNjg5NiBkZDVlOWU4NTcxODY1OWQ2NWM0MWExODUyODdkM2FjYjEzMzU3N2NiIGxlZ2FjeS10cnVuaworNjg5NyBlZjc2MDRjMDc4Nzc4MWI5MTNlNzBlNmZlMDE2OWI5MTc2ODBkZTBhIGxlZ2FjeS10cnVuaworNjg5OCA0ZjZjNTYyOTJkMzRmNmJkZTU4Y2VkMTY2Yzg5NDdkMTM3NThjOGFlIGxlZ2FjeS10cnVuaworNjg5OSA1ZTAzODg1NmZhNTY4ODZmYjZiZjgyMGVhMGQyNjE1OTg2MGRkOThjIGxlZ2FjeS10cnVuaworNjkwMCA3NWFiZTczN2U3MGI2MTcxOWQxMTFmNzA5N2QzZjRhNTczMGMzZDkzIGxlZ2FjeS10cnVuaworNjkwMSA5YzdlZjAzMGJlYzgwMTFhM2IyNGY2MTMwMGUwNGFmMGU1NjczZTgwIGxlZ2FjeS10cnVuaworNjkwMiA5MzhiZTdhMzEwNmYyODViZDcyYjUwNDQ5Zjc3ZDc2N2Y4OWE3MDhlIGxlZ2FjeS10cnVuaworNjkwMyAzNGVlYjYxZjEwMjgzODZkOGE1MjQwMzAzNWJlYWFiYmQ3ODc0ZDE3IGxlZ2FjeS10cnVuaworNjkwNCA5Mjc1MzIwNzE0OTA0NDEzMWVlMmE3NmUxNzdjNWJkMTI1MjdlODc2IGxlZ2FjeS10cnVuaworNjkwNSBmMmY5NDZiZDdmNDdjNWM5YTYzNWE5NjhhZjQ2NWRjNzkwOGYxYjI4IGxlZ2FjeS10cnVuaworNjkwNiAxY2NjZTVlNGY4MDZkNTQ5YzFhYTNmYWI5YzQ4YTcwOGE0YzQ5ODYwIGxlZ2FjeS10cnVuaworNjkwNyAzNDBhZGZhYTk4NTQzZjAxOWViMGZlZTg2N2FkOWYyZmZmMGQ3ZmJiIGxlZ2FjeS10cnVuaworNjkwOCBhYzJhNjI3Y2UzYTdlZjc4MDM3ZTkzYTNkZDM4OTdhOWIyNzMxNjgxIGxlZ2FjeS10cnVuaworNjkwOSAyNWM1MzI4Njc2M2QwMzU5ZWIzMjM4MmYwZGM0MDI3NWI1ZmExOWVkIGxlZ2FjeS10cnVuaworNjkxMCBhMzYyMzU2MzEyNzM3Yjc3Yzk5YjI0ODA3OWM4NTBmNmNlZjdjNjI4IGxlZ2FjeS10cnVuaworNjkxMSA3ZGU0NTdiZGM5NDY2NzkzODY2MTRmZTIzYmYyMmU4ODVhYWE2MGEwIGxlZ2FjeS10cnVuaworNjkxMiBlODhiMzIxNWU5NGE1OTAxOGI4NGYxYTk2NTc3YmZkMzFjOTcxYjU3IGxlZ2FjeS10cnVuaworNjkxMyBmYjEyMzdiZjcwMjJiYjc3NzM5NzhkYjMyMTBhMmFlZTk4MDc3YTdjIGxlZ2FjeS10cnVuaworNjkxNCBmY2UyOTZkYmIwM2UxNjk5ODEwM2I3YTAzZWJmNTIyOTE4NTI0MGU1IGxlZ2FjeS10cnVuaworNjkxNSA3ODAxMGNjYjhhNDYxODgxZWJjYjU1NDM2YzgzMzA0ZmZmYTMzYzYzIGxlZ2FjeS10cnVuaworNjkxNiAwNTQ5ZTM0MjhkNTc4MzVkZDVhY2FkN2E5MGU3ZGM5YWYwZjNhZDEyIGxlZ2FjeS10cnVuaworNjkxNyAxYzI3NDQ5MTMwYmE0NDVjMjExMDE5MzExYjIyOTM4YmM4MTUyZDEwIGxlZ2FjeS10cnVuaworNjkxOCBmYTlhYmY5YTg2MjRlNmY2ZTc0NWFlMTVlY2Y0Mzc3ZWMzMjJiOTkzIGxlZ2FjeS10cnVuaworNjkxOSAwMmIxZjA4ZTMwYTAzY2FlOTRmYmY3MjU5OWNkNjI3ZjcyNWNjMTk0IGxlZ2FjeS10cnVuaworNjkyMCA5NDUyMTg4MDg3MWQxNjJiZGNmOWZjMzViODlhMDRmZDNlZGVlNzRjIGxlZ2FjeS10cnVuaworNjkyMSAxYmEyMmY3NDk0ODlhNDM1NGE3YmMzNjEyOWQwNDA0MzJmZmExM2UzIGxlZ2FjeS10cnVuaworNjkyMiA4NWQzODQ1NmFkZjA5NDg1YjQwNDJiMDBhYjNmOWE4ZWU3NjQ3Y2MwIGxlZ2FjeS10cnVuaworNjkyMyAxZmI5YTU0ZTRhOWMxNTdiZGE0YWYzNTI5NTc4MmIwYzM0MWZiMGJmIGxlZ2FjeS10cnVuaworNjkyNCA5MWM2OTY0NTdmZDRlZDJjZDMxNGIwYjZhMGVmMDUwMzhmMjhiYzc5IGxlZ2FjeS10cnVuaworNjkyNSBjNmZmYjRmYzRkYTQwNjYyNDczMjEzNzA1NzdmZmExZmNjMzJiZDdmIGxlZ2FjeS10cnVuaworNjkyNiBlZGFiMDk3ODgyZDgwZTQxYmQ2Yjk5NDY4Mzg0YTk3Y2I2NjUzZjJhIGxlZ2FjeS10cnVuaworNjkyNyBkY2M0Y2Y5ZmE2MmE4NmNiNjk0ZDEyMzU1Mjk1MGQzYzZmN2JiNWI2IGxlZ2FjeS10cnVuaworNjkyOCA0YzE2MTU0ZmZmYjk3YjQ2ZjI1ZGM1MjBkY2M0NzE3MmFhODI0NzEzIGxlZ2FjeS10cnVuaworNjkyOSA3ZWVlZmQzMjY3ZDQ1MGE3Mjg5NzBlMTk4N2Y5MzhjN2I0OTdkOWE3IGxlZ2FjeS10cnVuaworNjkzMCBhY2IxOTg4Yjg4NTJmYjg5NzZhMDc5Zjk5ZjRlZWUxNjAyNDkwNDg0IGxlZ2FjeS10cnVuaworNjkzMSBhYjYwYzU1ODVkMWIwMDVjZGM1NGJhZGZkNmViMzQzZjZkOGY1ODg2IGxlZ2FjeS10cnVuaworNjkzMiBkODc1OWQwYjVhNjdjYmJkMGEzYzBlYzZiYmE1ZTU3YmY5YTY0MTA0IGxlZ2FjeS10cnVuaworNjkzMyBjOTFhYWNiZjhlZDQ2NTI4OTQwYmIwNmU4NmNjY2QyY2U5YzAxNGExIGxlZ2FjeS10cnVuaworNjkzNCA1MTk3ZTBmM2YwZmZjZWQwYzllYmI4NjY0YTIzMTQwOTk4ZTdiZGFhIGxlZ2FjeS10cnVuaworNjkzNSBhODI2NGQ3MGYyODFjNjA5OGJmMDJiNWMzZDczMTVmOWQxNWFiMGVmIGxlZ2FjeS10cnVuaworNjkzNiA2Zjg5YTQ0YTg2MWM3YmQ5YTJhNjgyNjI0MTc1NDhkNWUxOGMyZmRhIGxlZ2FjeS10cnVuaworNjkzNyBjNmE0Nzg2ZTdmOGVhODMwMWJhYzE0YTc1OTViYWU4ZGZkNGY3ODEzIGxlZ2FjeS10cnVuaworNjkzOCBiYWFiZmI1ZDYyYTg4Y2U0MWE0ODkxZmVhYWRhY2FmY2NlYTZjOGU0IGxlZ2FjeS10cnVuaworNjkzOSBiNTFkYzJmYjQ4ZTE4MDRhZGQ1Nzk5MTc4ZjViNjJjNWRiZDk3NTNkIGxlZ2FjeS10cnVuaworNjk0MCA4ZDA1NmY1M2E3ZjYzMjVhOTA3ZWMzNWJjZDZjZmE1YjQzZGIzMzkwIGxlZ2FjeS10cnVuaworNjk0MSAwZDYxZjZjMzhiMzdlMjU3OGE0OWZhOTc2N2E0M2I1NDRjMGQ5OTgxIGxlZ2FjeS10cnVuaworNjk0MiA2MDBmNWI4YTE2Y2IxYzQ3NWJkYzI5YzUzOGU4ZWVmZTUzZGZiN2IxIGxlZ2FjeS10cnVuaworNjk0MyA1ZDdmYTNmMmNlYzNkNTYxMTZiNmE2OGE5MjJjM2I0MjQ0YTU0YzcxIGxlZ2FjeS10cnVuaworNjk0NCBkOWM1MTU1YmRhNTAwMmYyY2U4OGM1NDllODg3Mzk3ZmNlZTg5MTcyIGxlZ2FjeS10cnVuaworNjk0NSAxMjJjOGZkZmU0ZWY5MWFhNzViZGQwMDI5ZDNhMGI5NWNhYjU4MzFiIGxlZ2FjeS10cnVuaworNjk0NiBmNjM0NjA5ZjQwMjhhNWUyYzc5MWUwZDIzZTdhOTdiNDQ0ZDFlMmZhIGxlZ2FjeS10cnVuaworNjk0NyA1NWZlNjRjMjExNDVjZDg5MzI3MzkxY2VhN2UxZGRlYzQ3NTZlOTY4IGxlZ2FjeS10cnVuaworNjk0OCA0ZDZiYWJmMmU0ZTE5MTNhZDk2YWI4ZGRkYTJmYjNhZDUyNWI1ZTY3IGxlZ2FjeS10cnVuaworNjk0OSBmYjJkMWQ1ZTE0MWFhNDZjZGJhY2E0NTgwZGY5NTg5NTMyMDI2OWQ0IGxlZ2FjeS10cnVuaworNjk1MCA3ZTVmMDM5NTMxMTA1OWJkNDRmNmUyZTNjY2EwYzIzYmQ4MjBmYzRkIGxlZ2FjeS10cnVuaworNjk1MSAyZmRiYTEyNjc2MTM5ZWY1ZmQxYWY2NGY3OGIxZTYwOTA0YTQ5NWEwIGxlZ2FjeS10cnVuaworNjk1MiAyNjdhZTU4MjMyZDlhODZhOWVhYzU1MTQzMzJmMDljOWNmY2I5MWQ2IGxlZ2FjeS10cnVuaworNjk1MyAyMzQzODAzMzE4ZTRmNmY1NjMyMTRhMGMwODFmNDg2MmE2OTI4M2IwIGxlZ2FjeS10cnVuaworNjk1NSA5ZTg1M2E1ZjA0ZmY5ZWMxOTIyZWFjYTcwMGE0NDE2YzIxODQ5MmE2IGxlZ2FjeS10cnVuaworNjk1NiBkZDcwOWVkODIyNjI3MGRlZmUwMWRiOWNmZTk3MzQ2MmNlMjNjM2UwIGxlZ2FjeS10cnVuaworNjk1NyAzMjRlMWUzNmU2NTJiYzIxYTM1ODQxNjVlMDFhMWZjZmQ5OWRiY2Y4IGxlZ2FjeS10cnVuaworNjk1OCAxZmVjODhiMjJlODdmODI0YzQ0MWVjMDRhZGVlMmI1YjBlOWViYzBjIGxlZ2FjeS10cnVuaworNjk1OSBhNjBkODUyMzdmZGI4MWVhNTcwZDA4NzNiMThmMTM0NWMyY2IxNzZkIGxlZ2FjeS10cnVuaworNjk2MCBkOTA0ZjUzOWZmZDljZThlZmVlMTBiMDEyNzg0NGJhZWViM2QzYmM3IGxlZ2FjeS10cnVuaworNjk2MSAzZDQzNTEwYjVlMTlkYTVhNjQ1OWMwZDczYWE2MzVhMGY1ZGZhMzQzIGxlZ2FjeS10cnVuaworNjk2MiBlMGMxYmQwYTc0YTkxMjc0NGNjZmI2MjViZWI2MzEyY2RjZGU5ZTc4IGxlZ2FjeS10cnVuaworNjk2MyA4Y2UxODUzOGUzYmJmYjFlNDI5OTYxMzY4NzBjNTIzMmFmOTUxNjk1IGxlZ2FjeS10cnVuaworNjk2NCAwZTYyM2U4MjMwMWYxZmIxNDZmMDUzM2FjYmU3ZmU0ZTM5NjQzNTIwIGxlZ2FjeS10cnVuaworNjk2NSA5NzRkYzM2ZmVjZDYyYzE2ZjZlMmNlYzllNGM3MTA5YmM2ZWExY2ViIGxlZ2FjeS10cnVuaworNjk2NiA2YTc1YjNjZjAyM2NmYzdhYzNiMTgwN2U3MTMxZmY5ZGE4NDcwY2JlIGxlZ2FjeS10cnVuaworNjk2NyBhZTc1ZDRhMWY1ZGRiMzU3NzVjNjlmY2JjMDBkZTdhZjUzMDY5YTA0IGxlZ2FjeS10cnVuaworNjk2OCA5OWU3MGM0NzJhMjAyZGE1MTI2NjRiZjZjMTk5MGM4MzAyNzIxYzU1IGxlZ2FjeS10cnVuaworNjk2OSBhOTU1NDkyNjlkZTJiMDMwMjQ5OGY1NmVhYmM2MGVlYmFjZDE1N2JkIGxlZ2FjeS10cnVuaworNjk3MCA1NjllM2FmNTIxODc1ZGVmZjY3NDZjM2NjOGJmMTUyMjczZTZiY2JhIGxlZ2FjeS10cnVuaworNjk3MSBlYWU4YWIzZDI0ZTAzMDA5MmUyNzRlNDFkYmJkODE3ZGViM2RlYzE4IGxlZ2FjeS10cnVuaworNjk3MiA5MzM1M2UxZDFjNzYwNGYwNzU3NTI0NTdiZTMxZTI2MmMyM2FhODA5IGxlZ2FjeS10cnVuaworNjk3MyBkODAxMjVkN2RjNzM0YTFmOWUxNDU5ZWZmODY0N2NlODBiZTU0MDhjIGxlZ2FjeS10cnVuaworNjk3NCAyMGZkOTY2NDg1MTA4ZGMyZTA4YTdjNGUxZTIyYzY3NzNiYjkxODFhIGxlZ2FjeS10cnVuaworNjk3NSA0YmEyMGY0NDY1NGJiZTdlMGNjNDkzODY5YTIxZmUyNjkxM2ZhZWM2IGxlZ2FjeS10cnVuaworNjk3NiA1NTlhYTQ3YjJlMmNmY2ZlZTY0YjE4ZjlmYzJjNzk1OWFmZTQxZTAxIGxlZ2FjeS10cnVuaworNjk3NyA5NDFiMDUxYWY2NzVlMmI3ZWU3NjU4MzgzOGJiNmM5NDMwNzQ0YjYyIGxlZ2FjeS10cnVuaworNjk3OCA2NWQyZDhlNjdkYTMyM2I3NGI3MmU0ZDgwNTUzNmZhYTZmZDI0YzFlIGxlZ2FjeS10cnVuaworNjk3OSA4NThmYjJlOWJjMTcyM2M4OGI5ZWU3ODE1YjExODU2NDIzYmY4YTRhIGxlZ2FjeS10cnVuaworNjk3OSBkYjQ5NDk0YzkzZGM3M2RlMDZkNTcyMWM3NGVhYjUzM2E5NDdhOTJjIGxlZ2FjeS10cnVuaworNjk4MSAyYjIxZWEyZjM5YjQ0MzI2Y2IyMGMxNWY5MDhmMDNmN2QwY2ZlODExIGxlZ2FjeS10cnVuaworNjk4MiAxODkyN2FiZGMyNjI4MTk0OGJjYjk1NDY0MmE2ZjhhNzQ1MzQ0ZmYwIGxlZ2FjeS10cnVuaworNjk4MyA3MTg3YzcwOWViZmRlYTQxNDdhZjlkMjU5NzA3NzEyN2UyODJjOGRjIGxlZ2FjeS10cnVuaworNjk4NCA5Y2E1OTQyNDAyMGUwMGY2YmM2ZDExNTE5Nzc2ZWM5NjkxMDdjNzMwIGxlZ2FjeS10cnVuaworNjk4NSAxMWUwYzIyMDg5OTk3OTg2ZDM4N2YwMWE1ZTJlNzJkMDY2ODc1ZTk1IGxlZ2FjeS10cnVuaworNjk4NiBkZjJjMjEyZTRlYTNlYmNhYmVlZjYwZWI4YjQzNjFhYWU3ZGJmMTZjIGxlZ2FjeS10cnVuaworNjk4NyAyM2ExMDRkM2JjZWRjNzVjYzc3N2M0NjMxZTJlZjRlMjczNzlhYzhhIGxlZ2FjeS10cnVuaworNjk4OCA4NDc0NDVhZWFiMmQxOTBhNmM2YjU3MjY2ZGZiY2ZkYTU0MTQ3ZDA3IGxlZ2FjeS10cnVuaworNjk4OSBmNjk3NmI5YTg1YTQzZWY5YjQ3ODVhZTU1MjIzMWExMDU4YjJlODMxIGxlZ2FjeS10cnVuaworNjk5MCBhNzU4NThmZWY1NTA3ZWU3YWZmYjk3YzMwOWU0Y2M5MTA2NmU4YmZiIGxlZ2FjeS10cnVuaworNjk5MSA0YTdjN2RkN2IxZjA1NjMzOTM2MTczNmJkYjEwNTBhNWIwOGM4MGMyIGxlZ2FjeS10cnVuaworNjk5MiBhNGQyYWFlNzU3YThkNTE3NGE5ZjIyZjJkNjFhNmI0MDEwNjhlNTJmIGxlZ2FjeS10cnVuaworNjk5MyA2OTFlMzkyY2FkMzQwYmRiZjg5OTk4OWMxMTA4YzNkOGI1MDE0YTZhIGxlZ2FjeS10cnVuaworNjk5NCBmZDUyNGEwMDFjZTlmZWUyOWY4MTdjYWU1N2NiMjY5MmI1ZjJiMWNlIGxlZ2FjeS10cnVuaworNjk5NSBiNDA2M2MxMDFjMmNjZTMyNDkzOWY3MmJhMzI5Nzc5ODExZjU2M2QwIGxlZ2FjeS10cnVuaworNjk5NiA5N2E2MTc5NWExNjlhZmY3ZTFlYTdhY2RmZDhmMDhkM2IxNDAzODg2IGxlZ2FjeS10cnVuaworNjk5NyBkMjVhMGNjYmZkNmI4YThhMDg5YTU1YTlkMTk5MjcyOTNhYWVhNDdhIGxlZ2FjeS10cnVuaworNjk5OCA0ZDA2ODFmN2NmNmI2YjRiNWU0ZjExOTkwMTViNzZkYzJhZGU1MDE1IGxlZ2FjeS10cnVuaworNjk5OSBkMGMwM2MzMmU4ZDk0MzBkZmNhNDcwZDIzZmRkN2Y3NjU5ODBmM2RhIGxlZ2FjeS10cnVuaworNzAwMCBmZmVmMmMzMGRjNDhmZDA3ZGE4MmNjYTI4OGVkNjU3MzE0ZjBmMmIzIGxlZ2FjeS10cnVuaworNzAwMSBkYjU1YjgwYWFmMTAzOTRhNmU1ODk4YThiNDU5N2E5YTViOWRiZjFjIGxlZ2FjeS10cnVuaworNzAwMiA3ODk0YTBjZDhjNzU0Yjg1YzVkNzhmZDE4ODU2NmMyN2E1NzcyNTU5IGxlZ2FjeS10cnVuaworNzAwMyAyODI0Y2JkYmUxMmM1YmQ2N2E0M2FmZThmZTE2YmU2OTRjMzk1YzM4IGxlZ2FjeS10cnVuaworNzAwNCAzMzc1NjIzMzBmZDBmZDU5MDNmZDQxMmVhZGUwOThjMzcyZTFhNmZmIGxlZ2FjeS10cnVuaworNzAwNSA4MGJjYjAyZWJmNGVmMGFmNTQ4NjE5YzkxODEyMTEzYTlmZGY4OTI5IGxlZ2FjeS10cnVuaworNzAwNiA5NjAzYTYwYzg2OWJlMjkyMmVlOTg0MGE0OGNkYmVmOGJkZjBjMDYyIGxlZ2FjeS10cnVuaworNzAwNyAzMGNlY2EzZjEwNWIwZGE4MTA1NDMyMThkNmFhNzA0MDM0MmY5MGY2IGxlZ2FjeS10cnVuaworNzAwOCA2MmNlZjdlODk2YjZlY2FiMjcwNGYzMjkwMjdkMDk4ZDczYzBkOTMyIGxlZ2FjeS10cnVuaworNzAwOSBkOTBkN2I1NDFhZGFiMmY2ZGExN2RkNjgwZDI1OGI3MDQ5YzQwNGRkIGxlZ2FjeS10cnVuaworNzAxMCA5NDIxZDJmNjMwNzdhOTUyZjY2NmEwYjAwMzMzYzg5MjY4MTE4NmU5IGxlZ2FjeS10cnVuaworNzAxMSAwNTc1MDgzOGY4NDAzZjg4NjM1ZmY3N2RjYWI4NDRkOTIzODYxZTM4IGxlZ2FjeS10cnVuaworNzAxMiBiZjM3NjhiZDMxZjJjOTZkNTc0YTY1NzU5NzdkYTU3NDY5YTg1ZjU3IGxlZ2FjeS10cnVuaworNzAxMyA2NTE3MGRhMWQyY2E1YmM0YjMwY2Y2OWNmYjEwNDFjNWI1MjMyNzk0IGxlZ2FjeS10cnVuaworNzAxNCA0N2U3YzQyYjlkYzYzNTNmZGZkODgzZGU2NDk1ZWRhNzRjMGVlOGVkIGxlZ2FjeS10cnVuaworNzAxNSAxZjRmMWJlOGEzMzliOGNlN2VlNTE3ZTA4ZDA5MTMxODI0ODliNjU5IGxlZ2FjeS10cnVuaworNzAxNiA1NzQ4ZDVlZTE5ZWQzY2MwOTk0NTc0MWMxZTE3YzcwY2U5YzBiN2Y3IGxlZ2FjeS10cnVuaworNzAxNyA2NTIzMDNlZjkyNmIxZjYyZDJiNWU4MGNlYmU0MGNiOTdlYTAyMTBkIGxlZ2FjeS10cnVuaworNzAxOCBlNTIwNTQ0NDBlZmM1YjAyZmE5ZmQzNDYwMzIxNDMwY2JiNWFlOTlhIGxlZ2FjeS10cnVuaworNzAxOSA4ZDBiMDBlZDhjMmI1NmU2N2IzYjhjODFmZTJhNjNlNzlhY2Q2Zjg4IGxlZ2FjeS10cnVuaworNzAyMCA4MjBiZjFhZTdlMjU4MmRkNWYyNTQxMDI1NzJiMWQwMDk4ZWY4ZmNiIGxlZ2FjeS10cnVuaworNzAyMSBjYzY1MjFhMmNlMjFlZTg1ZmY2MWZmODg1ODEyMjY5MjdjZjdkZjgyIGxlZ2FjeS10cnVuaworNzAyMiA1NGM4MDA4ZGU4N2JiYjUzODQwZjJhODdjOWVjY2QwYzU3NjRjZmZlIGxlZ2FjeS10cnVuaworNzAyMyBiZDU1MWZiYjk1OTY1ODdiOTdmMTY5NjM1NTNhZjMzMjA3MmI0ZDgxIGxlZ2FjeS10cnVuaworNzAyNCBkYmM5ODgzNGVmZjJlYTU2ODk0YmM0MDhiNTBlYmU3YzcwZjcxNjQwIGxlZ2FjeS10cnVuaworNzAyNSBmMTI0NDAzNmViYWI2ZTM3MTE4OTJjOWMwZTdiNGUxNjMzZmQwZjY0IGxlZ2FjeS10cnVuaworNzAyNiBjZWEzMThiYjlkMmY0ZDhlNDcyNTRlZWU5YTQzYWQ1OGQyMjdlOTNhIGxlZ2FjeS10cnVuaworNzAyNyBlZmIyOTM4Y2U2NzYzZmNmMTU2NDk5ZDVhMTlkMTIzODYwZDRiMTZlIGxlZ2FjeS10cnVuaworNzAyOCA4OTAwMjEzNzY0YmExOWQyMzczOWRlNzRhOGQ0MmNlMzFjOGJlZjRkIGxlZ2FjeS10cnVuaworNzAyOSBmMDMxNDY2NTMwYWY2NzI4MzA4NGFlYzcwMDdkYjBkZjU2OWM1MzhmIGxlZ2FjeS10cnVuaworNzAzMCAwNDUwNzQyZjM2ZjRmZmQxMGY5YWZkNDQxYjU0M2ZlYjQzYzkzYjE5IGxlZ2FjeS10cnVuaworNzAzMSBiMjEzZDI1OGZmMzI3ZGVkNjM2ZGQ5MGUxZTRkZTQ0OWU3OTIyZmRjIGxlZ2FjeS10cnVuaworNzAzMiAyYzBjNjgwNDA3YjJlYzRjNDJiMDg4YzNjYjQ4OWVhMjMzZmJiNmYzIGxlZ2FjeS10cnVuaworNzAzMyBkZjlkMWViY2Y3ZjMwYmExODFjZWJhZGY5MTZkZDAxNmU2Zjk0NTk0IGxlZ2FjeS10cnVuaworNzAzNCBhZGJjYzBhYjllYjZhZjQwMWE1MmJmZDE5MjA4Zjc3ZGRiMjk1MTFhIGxlZ2FjeS10cnVuaworNzAzNSBiMjE3ZGEzZjliNTRjNjM2NDIwZTkxMTUxNGQwOTUwMjBiZDUyZGNjIGxlZ2FjeS10cnVuaworNzAzNiBjNzEzZGU3MmU3NmVjNDMyOWE5MDVkYWI0MjVhYjRmODk2MDkzYWU1IGxlZ2FjeS10cnVuaworNzAzNyBkMDMwZWE1MzNlNjNhZmFlODcwZGI0MjhhN2VhMTU0NWZmN2NmODc3IGxlZ2FjeS10cnVuaworNzAzOCBlYTQ1ODkzM2ZjMmFmNmIzOWRkMWRmNzg0NDdlMWQ5ZTc1YzRhYThhIGxlZ2FjeS10cnVuaworNzAzOSA3NDVjN2M3MGJlMzEwOGIxNzc0ZjQzZDBiMWE4NGEwNWE2YzZiYmM2IGxlZ2FjeS10cnVuaworNzA0MCA3ZjQ3ZTJiNmM0YTQ5OWYyYjBkNzk4N2JkMTc5ZmQwNjEzZWYwMjlmIGxlZ2FjeS10cnVuaworNzA0MSA2NDAzYzk0ZGU1MGRjM2MxZmU4NDg5OTkxOTAwMzNlYjcyMTE3ZDZmIGxlZ2FjeS10cnVuaworNzA0MiBhMzYwZGMxZmE1NTgyOTdlN2IyNmYyNjQ3NjIzNDM2ODEyOWEzZGYwIGxlZ2FjeS10cnVuaworNzA0MyA0MzQxNTc0ZTE2M2IzZjQ5MTUyNjU5MTdlNzNkNDUwY2Y3Yjc0N2M1IGxlZ2FjeS10cnVuaworNzA0NCBlNzA4ZjU2OGI4YjczZDMwZjQ5Y2M2MTVhMzViMGRkMGZlYTVlNDA3IGxlZ2FjeS10cnVuaworNzA0NSA3YmI4NGEyMjA1NDM1MWU4MzIzNjc3ZmM2YTYxZGRmZjI2ODc2YWM4IGxlZ2FjeS10cnVuaworNzA0NiBhMGVjOGE5ZGI5NjA1NGM5ZWVmNmFkYWMwZDYyYjQxMTM0MGM2OTk1IGxlZ2FjeS10cnVuaworNzA0NyAyNjI2ZDA2YjNiMDFmN2UxNmVjNmI1MjdjZjE4OTE0MzcxNWFlNGY5IGxlZ2FjeS10cnVuaworNzA0OCA3Mzc1OGRiMmY0NjQ2ODk0NzUwNzIwNzllNTVmNTI5OGQ0NDlhYTRmIGxlZ2FjeS10cnVuaworNzA0OSA4MTg2MDM5MDU1ZWRhM2QzZDliM2EzNzViM2IwMzNhYzk0OWQ0NjcyIGxlZ2FjeS10cnVuaworNzA1MCBhYTk2NTA4YTY1ODc5MGZiM2EwNTJkNWExY2E2ZjAzNmRlOTkwMjZkIGxlZ2FjeS10cnVuaworNzA1MSBjM2IwODk1YzkwZmJmMDg3ZDg2OTMzNzBjZjA3NDU2YmQ0ZDA1YmVjIGxlZ2FjeS10cnVuaworNzA1MiBmYWU3OGNmODU0MWQ0YmI3ZWNhOGRmZmQ5NzdmY2MzOGYxNjJjMGEyIGxlZ2FjeS10cnVuaworNzA1MyA2ZjFhMTIwYWU5YzA2MTYxNGE5ZWRiMjk0NThhZDMzMjgyYzJhMzFjIGxlZ2FjeS10cnVuaworNzA1NCBlM2Y3MWNlOGU2YmJiNWYzOGUxODU2OTdjNmNmNDA0MThhNGE1OTQ4IGxlZ2FjeS10cnVuaworNzA1NSAxMWJkNGY0OTc3NDJkODI3YjczN2MyNjliODhiOGFlNGUzMzVkZmQ5IGxlZ2FjeS10cnVuaworNzA1NiBjODM3ZjI1YzdlNDc3NDcyNDFjM2RhMDY1YjA3MTM5ZjgyNDZiMWEyIGxlZ2FjeS10cnVuaworNzA1NyAyZjhkOWMyMmRlNjJlMTcxOGMwOGMxODcxMGI2MWMyOWUwN2I2YWRjIGxlZ2FjeS10cnVuaworNzA1OCA0ZjY0NGVjYzViYWM0YWFhMjg5MjMzMTIyZDg2ODAxN2MxMWUyYTQxIGxlZ2FjeS10cnVuaworNzA1OSAzODcxZWJkMTk2M2M3YWQ4MWI3ZTVlNTc4YjYyY2EyYWJhZTg1N2E3IGxlZ2FjeS10cnVuaworNzA2MCA0YTgxNjViM2I2NjAzZDliMzE4YThlZTE2ZjczMzNkNTMxNTg5MzE5IGxlZ2FjeS10cnVuaworNzA2MSBiM2QyOTkwZDhhNGFmYjY4YjAyOWZjYzZmOWUyZWMwMjI0ODRiZWUwIGxlZ2FjeS10cnVuaworNzA2MiAwOWQ5NGU5ZWIxMDEwMDE5ZDFiM2QyN2Q1MjYyYzljNWY1NjgwZWM1IGxlZ2FjeS10cnVuaworNzA2MyA0ZGM2N2ZkZDllMGI1ZTBlZGMxMzUyZTU3MjNlOGMwMmQ0ZWNmMzMzIGxlZ2FjeS10cnVuaworNzA2NCA5NjFiZjlhMjAwZGQxODQ0OGExZjliZTIyOGU1NTBkMDIzMzE3YTk3IGxlZ2FjeS10cnVuaworNzA2NSAyMTI0ZjRiOTdiZGQyYmI5N2FkNWJmNDk4NGFhZmE1MGU3M2IyN2FiIGxlZ2FjeS10cnVuaworNzA2NiA4Y2RkOTRhM2QwMmQ5OTZjZWJlZTM4YzRkMjJlNjhlYjY2YWM2YjhkIGxlZ2FjeS10cnVuaworNzA2NyAzYmY5ZTJiZWFmOGMwMTk3MzhmNTVjOWFiYTYwYjM1ZDdmODQzMmI0IGxlZ2FjeS10cnVuaworNzA2OCA3MmQwZGZiOTE5ZmUyOGEyMmVlOGEyZDY0MGM1Y2FlZTlhMTA4NDA5IGxlZ2FjeS10cnVuaworNzA2OSA0MTg1NzA3NWQ0NWJhYzgwMDdjODJhMDQyYTY5ODg2NWIzZjY4YzA2IGxlZ2FjeS10cnVuaworNzA3MCBmOGYzZGEzZmRhZWQ1ODI2ODViYmQwODYwYjIxNzAwMmUzMTJiNzUwIGxlZ2FjeS10cnVuaworNzA3MSA0ZmExOTY1OTU5MWVmYTNlZDhjZTgyMzg2N2Q4OWNlYWQ0YmMwZjg1IGxlZ2FjeS10cnVuaworNzA3MiBlNzRiNjA3YTU5OTZmYTk5MjIxM2JiOTUzZGFjYjUzNzc0OWUxODZlIGxlZ2FjeS10cnVuaworNzA3MyA4ZmRiMDUzOWNmYjE1MGExMDc0N2NkMDExYjU4OWQ0N2YzMjAxMTBlIGxlZ2FjeS10cnVuaworNzA3NCBiMmExYzk5Y2E2NDJiOTkzYThkM2M1MTM1NmM5OTkyOGYzNjRlODFhIGxlZ2FjeS10cnVuaworNzA3NSBkMzYyNTBhZWZiODI1MjY3NGMyYmZiMjBlMzY3ZDgwZTgwYTY4ZDYxIGxlZ2FjeS10cnVuaworNzA3NiA3ZDU2YjQ5NmM3ZGMyMWNkZDFkMTc5NjQwM2QyMGRjYWJiMzAzNjU5IGxlZ2FjeS10cnVuaworNzA3NyA3YzY4MDJkODYyMGY0MmU3YTUyNjFkYmYwODQzODMwYjUzNDI1OTUzIGxlZ2FjeS10cnVuaworNzA3OCA1Yzc0MWQyZDk3ZjViMTQ1NDk0N2Y4Zjk0OTA2OWYzZWZkMDY0ZTAyIGxlZ2FjeS10cnVuaworNzA3OSAyMzY4MzUzZDk4ODc1MzAxOTdlM2FhMmEzMmFhZTczNGEyYTFjYmQyIGxlZ2FjeS10cnVuaworNzA4MCBiOThiNDZkZDQzNjdlMjc5NjAxOTc4YTE5NTliNzc3ZTc2NGMxOWM2IGxlZ2FjeS10cnVuaworNzA4MSA3MzliODQ4MGYxYWMyNzA2YTZiMmUyNWRhODBkZmFkYTA4ZTM3NTg2IGxlZ2FjeS10cnVuaworNzA4MiAzM2E4ZTY1ZWVmMjMwOTAwMDEwNTQ1NzkxNjQyN2Q4NTU3NGIwZGE1IGxlZ2FjeS10cnVuaworNzA4MyAzZWU4N2QwODIxNDdjMTY0M2JiZWYwNDNhZTljM2M5NGU2OTNjMzMzIGxlZ2FjeS10cnVuaworNzA4NCA1M2VmNWI1MWE0OGI0ZTBlNzAyZjZkMmM0YjhiYjk3NGZlNDg2NWZmIGxlZ2FjeS10cnVuaworNzA4NSBiYjQwOTRmZjdiZGZlZDRjY2MzYzUxZDQ3ZjU4M2JiNTJjZDBhM2M5IGxlZ2FjeS10cnVuaworNzA4NiBjYmM2NjlmZTM3MGFiMDViNWU0NmZhNDJiYTFjMmU5ZWEzN2JmMGE3IGxlZ2FjeS10cnVuaworNzA4NyA0ZGUwNWNiZjVhZDE5ODdmN2EzYTQyMmRkNTEyOGY1MThkMTk5MGM2IGxlZ2FjeS10cnVuaworNzA4OCAxMzIxMTEyZTllM2E0Y2U4M2M0MWUzNTZhNjgzMDVhM2Y1NzJhZGYyIGxlZ2FjeS10cnVuaworNzA4OSA2ODMwNzY0MzJiN2Y5ZGFlNmRhODQ1Y2QzNWJlYTVkMTA1NGY2MzEwIGxlZ2FjeS10cnVuaworNzA5MCA4NzYxNzcwMWQ3MjFlNzJkNzcxYmMyZWU4OTBiZmYwMzY5Yjc3ZWJkIGxlZ2FjeS10cnVuaworNzA5MSA5Y2VmOTY5YzQ1ZTQ1MDYxYjNiODIzNTBmZDUzODk5ODQ5MGVjZTg1IGxlZ2FjeS10cnVuaworNzA5MiA4Nzk5OWRjNGQ3OTgwMDE5YzIzMDVhODlhMDNhOWNjYjE5ZWJkMzA0IGxlZ2FjeS10cnVuaworNzA5MyAwNmM3YzdkZTY5NzY4OTdiM2QxYTRjZmJjMTM3NjUzY2FhMzQ0MjZhIGxlZ2FjeS10cnVuaworNzA5NCBjM2NhMDA2NTU0ZDQ0NGFjNjY0OTIxZmM4MzQ2ODFhNmM3ZjAyOWE4IGxlZ2FjeS10cnVuaworNzA5NSA5OGMwOGYwYzRhMmVkNmJjOWUyNTM3MDNkM2RjNWE3MDQwYTU1ZGQ0IGxlZ2FjeS10cnVuaworNzA5NiBhMmYxNzFjZTI1ZjgxMDVmZWIwNmI0YTQ4ZmZhNmQxOGQ0MWI1Zjg5IGxlZ2FjeS10cnVuaworNzA5NyA2OGIyOGI4Y2EwNzcwZTRhNTZiMmVhYjE2MjZjODYwNzUxMDYxMmE4IGxlZ2FjeS10cnVuaworNzA5OCAxZmFiOTgxNDY1YzhiZWQ0ZjQzNGEyOTk0OTEzNWEzNDcxNzM1Y2M5IGxlZ2FjeS10cnVuaworNzA5OSBiMTFkOTZjODA3NWM1NzQyZGNiZjc2ZDQ2NDdlNGQzOTU4MzA0NDlmIGxlZ2FjeS10cnVuaworNzEwMCAyMDI2MDJmYWVmYzc4MzJlZWJjZDEyOTIxMjkyMGMwMjI3MGYwYTk4IGxlZ2FjeS10cnVuaworNzEwMSA5NGNlM2UwMWMzMGNjMzAwZGI4N2FiYTcxNGFkYmE0ZjFiZThkM2E1IGxlZ2FjeS10cnVuaworNzEwMiA2Yjc2NTQ1M2IwNDEwZTExYjJhNzUxNzRmMTdmZTUwYTM3ZDVlZTcwIGxlZ2FjeS10cnVuaworNzEwMyA3ZGY1ZDRjZjgyNzc4YTQyNzY4MDY2ZDk3YzQzMzBiNzQ3ZTQ0ZmNjIGxlZ2FjeS10cnVuaworNzEwNCBmZjI2ODczMjY4YTg0MmNkYjYwMzMyNjJjMjhhMThiNjRmZmJjN2M3IGxlZ2FjeS10cnVuaworNzEwNSAwNDVlZDgzMGMwMzVhMGQ1M2FlZGQ5N2I1Y2JkYjlkMzAyMTRmNDg2IGxlZ2FjeS10cnVuaworNzEwNiAyNjQyZmZjYWMyYjRkY2MwYjExNGI0ZDhjZmE3MzZiMzg2NmVlZDBlIGxlZ2FjeS10cnVuaworNzEwNyBjOGQyNDdmZjhkMmY4M2I0Mjg0YmZjMDZlYjgzNDA4OWQ1YzJlMmZlIGxlZ2FjeS10cnVuaworNzEwOCAzZjEwZjk5OGE1ODcxZGNjODVlNDNkOWQ3NWNkMTY5ZTg3ZWJkOWM4IGxlZ2FjeS10cnVuaworNzEwOSA5ZmFjYmFiMTUyY2RhYjBlY2FiYjgxODJhNGYxNTYxMjQzOWIxNGVkIGxlZ2FjeS10cnVuaworNzExMCA0OTc0NWRkYjRmNjk4YjViZjllM2I4ODQwMmUyNTVjOGRjMjBkMTMzIGxlZ2FjeS10cnVuaworNzExMSBiZDI4OTQ1Zjc1MmJiNjQwYzE2MzAwNjZkZTJjYjQ0OWJkNzk1MWMxIGxlZ2FjeS10cnVuaworNzExMiBmNTJjMmFhMDYxZjhjNjEzZDViNzk0NjRmNmJkMmFlZjRjYzZkNTljIGxlZ2FjeS10cnVuaworNzExMyA1ZjdkMjQ2YmJlYjdiNmViMGIyOWZlNTk3NzgyMDZkNDBjMDk5ODFhIGxlZ2FjeS10cnVuaworNzExNCA5N2VjOWRmYmIyYjZlNGFlODBlNTU2NDQ3ZmQ4OTExMDUwNGY3NjFiIGxlZ2FjeS10cnVuaworNzExNSAzNGRiOWEyMWJmYjFkNDgyY2FmMTk2YmVmZWE5NDY3ZTg3NzU5M2M3IGxlZ2FjeS10cnVuaworNzExNiA1ZjhmNjA1YWYzMzg0ZDUzNzA2YjcyMGNhMjZjMDQ4Yzc3YjQ2ZmY1IGxlZ2FjeS10cnVuaworNzExNyA0MzU5ZThkMzg5ZTZmZDg2YzQzZWY3YjFjYzRmMThiZDc3OGMyOTYxIGxlZ2FjeS10cnVuaworNzExOCA4ZDkwOWFlMWYwOTk2NGVjYjRiZDg3MWZhZTA1NzU2OGM2ZjQxNmQ0IGxlZ2FjeS10cnVuaworNzExOSBmNGJhOWUwN2Q5YmYyZjQwNWU2ZTNmM2I2ZTUyZmU4ZDk1NmQwY2E1IGxlZ2FjeS10cnVuaworNzEyMCA2OGM0YjA2Y2ZmZjcwOTU2YjQ0YmE3ODUyOWE1NTI1NjY5MmE2NDJmIGxlZ2FjeS10cnVuaworNzEyMSBmNGE2MGYyNjFmYmI2NmU0NTM3Nzg0ODE5MDQ3YWE0ZmJmMjVjZGRiIGxlZ2FjeS10cnVuaworNzEyMiBhYjYzNzQyNjhjYWE5MjQ2ZmQ0Yzg2ZTc4ODA5YWIyMGJkYmFkMjM0IGxlZ2FjeS10cnVuaworNzEyMyA2ZGQ4NTE0NDVjN2RjMGIxYzhiZjlkMGJiYmNhZDFmYWVjMThmNWZiIGxlZ2FjeS10cnVuaworNzEyNCBkYWIwMWI4NGFmZTY2NGQwZDQzYjFhYzE0MzMwZjVkNjRhNWQwZmEzIGxlZ2FjeS10cnVuaworNzEyNSAyNzQzNzU5ZTM5Nzk3ZmE3YWIwMzViNzNiODk3ZjBjM2M1YjJmZDExIGxlZ2FjeS10cnVuaworNzEyNiA2ZWZmZDEwZTcyMzNhNjg1OWM4NWQzOGUxZTgwOGI4YmU2YmY3MTgwIGxlZ2FjeS10cnVuaworNzEyNyAzZDg3Y2IxYjNkMTdhZDcxOGEzZjZlYzkzOGVkMTY1MmQwZmVlYzc0IGxlZ2FjeS10cnVuaworNzEyOCAzYjdjZDgzYjYwMmQ2ZmQ4MzgwYTE0NWQ1YjExNzcxOWJhYTdkMDhhIGxlZ2FjeS10cnVuaworNzEyOSBkZjgxODU2ZGI1OGM1NDM3ZDI3Njk3NDdkZDk0YjUxZWRmOWFlN2Y3IGxlZ2FjeS10cnVuaworNzEzMCBjNzVhMmYyZGMyMjBhNTc3Njg4ZTYxYjEwZDc3NjE0NTgzNGU3ZDRkIGxlZ2FjeS10cnVuaworNzEzMSAxODZjMmFkNGFiZjMzYzkwZjZlNjZmOGM3MGI2OTNlOWRjNzU5MjE3IGxlZ2FjeS10cnVuaworNzEzMiBkZGJjYzAzODkxNmIyY2Y1M2FhZWYzNmQyYTNlNmE5MjY0YjhjYTExIGxlZ2FjeS10cnVuaworNzEzMyAwZGRkZjQ5ZWE0MTZmM2JlYmMwNjA4ZTQ5M2ZhNWI0MjFjMmU4ODY5IGxlZ2FjeS10cnVuaworNzEzNCBlOTc1Mjg0ODJiYzY3NDI5OTA4MTUyOTUzMzU4ODNkNDU2MGYwMDdhIGxlZ2FjeS10cnVuaworNzEzNSA4ZmI1NzJlMWIxYmExNzFlMTc0M2IxNWNlNmJjMDk0YTdmZTNiMmViIGxlZ2FjeS10cnVuaworNzEzNiBkNTAyM2QwYzU1MDIzNzM2NDhiYTVlODRlZTM0ZWI1MTU1ZjVjYWU1IGxlZ2FjeS10cnVuaworNzEzNyAyMjc4NTEwOGYxZWExM2Q3NGY3NTY5MzMzM2I3ODJmYTA5ZGY1YzIwIGxlZ2FjeS10cnVuaworNzEzOCA0ZWU0YjhiYjY3Yzc0NDI3MGNlZDQ0YjViYTRmM2FmNTcxYzU4YjJmIGxlZ2FjeS10cnVuaworNzEzOSBkY2IyZjVkMzRhZTgwMjYzZmUzNDE4OGMyZTNmOWE2NjExNzNlM2U2IGxlZ2FjeS10cnVuaworNzE0MCBlZDM1MDY3ZTM3OTNlMGZjM2E4MDVhMzE3ZTI2ZmQ5YjI0MjVjMDMwIGxlZ2FjeS10cnVuaworNzE0MSAyOWJjMjhlY2EzZTllZDU1NTNkNDlhNTdjZDNjNzUzZWVjNDk2Y2VhIGxlZ2FjeS10cnVuaworNzE0MiBjNDIzNzllNDY1M2JhOGNlZTkyMWEzYzQ3OWQ0YTVkZTYxODVjN2YyIGxlZ2FjeS10cnVuaworNzE0MyA5NTIwNGFhMmY0NTIyYTVjYzhjZDc4NTY4MTcxZDk3MDc5NTdjYjhkIGxlZ2FjeS10cnVuaworNzE0NCBkNTAxZGFmMGEyZjY1NWZmZGIyOTk1OTk1NDI4NzQwM2E2NDAwNzAyIGxlZ2FjeS10cnVuaworNzE0NSA3OTAxZmU3OWY2YWE4YTI0OTJhMDYxYmY3Y2Y1ZjI0M2M2MGU1ZWY0IGxlZ2FjeS10cnVuaworNzE0NiA4MmRmMTA0MGRmMGY4YTZjYzA4MTQ3YWJiOWYzMGY2MDc4NzI1ODQ0IGxlZ2FjeS10cnVuaworNzE0NyA1YjUzMjY4ZjU0N2EzOWRiMTc3NjkxMDlhODUwMzUxNjk0MzVmOWU0IGxlZ2FjeS10cnVuaworNzE0OCBhM2NkYzgxNjQ5OTBlMzRlMzQzYjhmZmE5MjAxNjU1MGRiYzgyNGY5IGxlZ2FjeS10cnVuaworNzE0OSBiNDNmZjg5ZmM1MGQ5NWMyMjdiNTZhZGM4OTgzZjQ4MzhjMzdkOGNjIGxlZ2FjeS10cnVuaworNzE1MCAwYzAxYTIzYzdkY2RiYWI4MTI5NzIzZjg3ODg4Y2M3YzdiYTllY2YwIGxlZ2FjeS10cnVuaworNzE1MSAxOTM5NTBiYzlkOGY3ZjRhNWY2NWYwNzVhZmUwODFmZDJjNDliYmZhIGxlZ2FjeS10cnVuaworNzE1MiBiODI4ZWI1MGRiZDUwNjM4ZTZmYzI5OTllZjY3MjllMzEzZDkzMmY5IGxlZ2FjeS10cnVuaworNzE1MyAxNTkyOTcwYzc4OWIwOTJjNTlkYThlYTA4MmM0YjdiOWI4ODNlYTIxIGxlZ2FjeS10cnVuaworNzE1NCA4OWIxNjEyNmQ0ZTIyZDFmMTI2Mjg4ZmFjNDM0NjcyMzEwZGRhMzk3IGxlZ2FjeS10cnVuaworNzE1NSAxMGMxYjhmMzkwMmZjYjI4YWNlZjdiZDgxMTZiZWU2NzBmZmFkODIyIGxlZ2FjeS10cnVuaworNzE1NiBmOWM1YTMxM2FmZDkzMjUwMmZjZDBjZmRlMzMwYTkxYzJkNDIzZjAzIGxlZ2FjeS10cnVuaworNzE1NyAxOWM4ZTYxY2FkMmQ4MzVhZTllMmZmZmI4MmFiYTM1YmQzZDM1MzFiIGxlZ2FjeS10cnVuaworNzE1OCAzMWJkMGFkMDI3MmQ1YTA5NTQ1ODQ1NmZhZDUzM2I1Yzk2MTAzODA1IGxlZ2FjeS10cnVuaworNzE1OSBkODAwODQxYjU3YThjN2VmODkwOGM1MTcyNGU5ZDAzMWZkNDJjNTI0IGxlZ2FjeS10cnVuaworNzE2MCBkN2QwNWUyMzQ0ZDczNmQ4OTZjOTk5YmNlMTg5M2FlNzY0NWUwMDU0IGxlZ2FjeS10cnVuaworNzE2MSBjMDQ2ZWZhZjFiZDJjNDZlNjMxODg2YzVkMGIzY2Y3NDNmZDEwMTRiIGxlZ2FjeS10cnVuaworNzE2MiBkMTIyNzUzZTViOWY2MDNjODYyNmMzNjNlNjcyMWY4YzFjZmEwMDE2IGxlZ2FjeS10cnVuaworNzE2MyAwMWY0ZWEwNWE3NjYzZWMxMmIwMzgyMThhNjQwZTBlZjAxOWVjMDc2IGxlZ2FjeS10cnVuaworNzE2NCA4ZjUwYmVjNTA2OGU2ZWZmYzgwNWM5M2ViY2JkYTAyODg4ZGY3NjUxIGxlZ2FjeS10cnVuaworNzE2NSBjMmI4MzFmOTIzYzJmMDNmZDhkNWI0NGUzNDBhN2Q4OTFlM2JlMjg3IGxlZ2FjeS10cnVuaworNzE2NiA4MDE1YzU1NDkzMDk4NGVhYjlmNGQzY2ExMzJjZDBiZjkzMjk2MDA3IGxlZ2FjeS10cnVuaworNzE2NyBjYjQwNWI5Njk2ZDQ4MzY1NzJmMzNjOWJiODc2ODJjOTA4NjQyYjUzIGxlZ2FjeS10cnVuaworNzE2OCBmYWRkZjZkNTVhZjBhNGQ0MDIwZmY0N2IyZmE2NWUyODg4YzlkMGM2IGxlZ2FjeS10cnVuaworNzE2OSAyYzEwMzk1OTIxZTFkMGJiYjFiODg2ZmU5NWEzMzIzMDk2NDVjZDg3IGxlZ2FjeS10cnVuaworNzE3MCBmMTJiMWQ0ZDZhOWJiODgyZjQ2ZTg2NDI5N2VjOGNiZDY4MGE1MWVhIGxlZ2FjeS10cnVuaworNzE3MSBkZTI3ZGE1ZjIyZjE3NTM1ZjdkNjhjZTgwNWVmNGY4NWJiMGVmNjQ5IGxlZ2FjeS10cnVuaworNzE3MiAxZjM2OGZiM2UxZjc4NmI0NDZkNWY3YzEzZjcwZjI2ZmQ1MWE4MWU1IGxlZ2FjeS10cnVuaworNzE3MyBlZTk4ZTQ0ZDRmODU1MWQ1ZTJjN2EwYWU4MTNjZmQ0MzQ1ZDkwMjYwIGxlZ2FjeS10cnVuaworNzE3NCBhMTY5NGU5NWJjYmE3OTIwZTc5ZjAzOTc3YzhkYWY5ODE3NzE5Y2YyIGxlZ2FjeS10cnVuaworNzE3NSA4MjUwMzhkOThhYjYyMmJkMDc2OTUyYWM5OTNlNzQ5ZjczNTQ1ZTllIGxlZ2FjeS10cnVuaworNzE3NiA4YTc1YjhiZjE1MjE4NzU0ZmJjYTgzYzMwNzliN2MwMmUxN2FkMDU3IGxlZ2FjeS10cnVuaworNzE3NyBlNWU1ODc5NDA0MGY0NTQzNDAxOTcyM2ViYmVjNTUwNzQ4OTUxOGQ3IGxlZ2FjeS10cnVuaworNzE3OCBlMGJiMWRhYzJkYmY1NTYyOTc1NGQ4N2VhZmM1NTlmYTBiMGFhMWE3IGxlZ2FjeS10cnVuaworNzE3OSA2YzBlMzVjZjBmODViZDYyM2FlMDVmNzZlNGUwZDA3NzdlOTRhYmYyIGxlZ2FjeS10cnVuaworNzE4MCBjYzUyNTE4MmJiYjFmMzZlZWMxYzIwOTFiZGFhM2NmYzkyMTEyZjVlIGxlZ2FjeS10cnVuaworNzE4MSA5Nzg1MTE0MzI2YWI3NTI1MmQ1NGFlMmNlODZhOTA4M2Q0NTdkY2MyIGxlZ2FjeS10cnVuaworNzE4MiAyZGQyODU3OTRkNjc0MzMwODM2YTU5Mzc5ZTRkZWViN2IzOWUxNGRhIGxlZ2FjeS10cnVuaworNzE4MyA3NzVhN2QwYzI5NjA5ZmFmZDg1MTY0OTg2NWQ3ZDcxNWEzYzc0MmE2IGxlZ2FjeS10cnVuaworNzE4NCA0Mzg5NDliYjQ1MDgwNTA2M2MyMzU4ZDczM2Y5YzZhNjhhNmRlMDA0IGxlZ2FjeS10cnVuaworNzE4NSA3YjlhNjE2NjI4MWExMmMzYWQzYTI3YTk1MjdlMmEyMWRjMDBmY2ZjIGxlZ2FjeS10cnVuaworNzE4NiBkOWZmNmY4M2ExNmFkMGExNTMxYjYzMTBlM2M2OGJiMTg0ZGUyNzE3IGxlZ2FjeS10cnVuaworNzE4NyAwMjUzZWYyNjdiNjhjNmNhNzg4OGY1NDEzYzhiMmE5YmM1YWNhMzFmIGxlZ2FjeS10cnVuaworNzE4OCA2Y2NmNWRiYThiMGJiNmI3NzI3Y2Q3MTljZTkwNmY0Yzk5YTc3NDA4IGxlZ2FjeS10cnVuaworNzE4OSAwYzZjNjliMGQzZTljNjlmYTQ5ODJkMWZjYWZiYWYyMDQ4ZjlhMmQyIGxlZ2FjeS10cnVuaworNzE5MCA2Nzc1OWRmZTZlZThjN2RhNmYyMWZlNjBjZGNjMGQ4MjViM2FkZjI1IGxlZ2FjeS10cnVuaworNzE5MSBhOGE1NDc0OTBhMTI3Y2RlZDNmN2Q0MTI0Y2Q0ZDkzNThhMmEwNTIyIGxlZ2FjeS10cnVuaworNzE5MiAxMjE1NGQwOTEzMTY3NGZlOWRlYWM3OTU3NmY0OTkzZGNlNzBhZDI2IGxlZ2FjeS10cnVuaworNzE5MyAxODM0NjU0YmViZTMyMTJlNTY4NGU5YWU3NGIzOGFkZTVkMDU3Zjg3IGxlZ2FjeS10cnVuaworNzE5NCA3NmJiMjA5OWQ2MTgyOWY2ODcwZDRhMjU3YTI0NWJmZDVlYzJmNjM0IGxlZ2FjeS10cnVuaworNzE5NSA5MDg1N2ZiNTczOTcwNmUwYzAwYTU2MGI2NzRkMDRkZTMyOTdjMWRkIGxlZ2FjeS10cnVuaworNzE5NiBiMjAwOWVkMTUyZmE1YjNiZmY3NTRmNTRiOGMxNjM5ZTVmYTY3N2UyIGxlZ2FjeS10cnVuaworNzE5NyBjMDdlNWM0NTU1NzZkYWFkMTlhOWRiMWEzZmM4ZGEyMWYxNzliY2M4IGxlZ2FjeS10cnVuaworNzE5OCA0Mzc0NGJlMjQzM2Y1OGYwM2I3YTM3MTlhMmE4Zjk1MWRjZmUzN2QzIGxlZ2FjeS10cnVuaworNzE5OSBkZTAxYzY2ZjVmYTU4YmYyODVkM2U5M2Y4MjA0M2U3NTQ4NjhhNzk3IGxlZ2FjeS10cnVuaworNzIwMCA4NjY5ZWRiMWQ5YzU2NTg3YjU0MjNiNWY0MDJmNGZkODBiYWU4ZWMyIGxlZ2FjeS10cnVuaworNzIwMSBmN2E5OTE2MWRmOTJhYTFhYTQ5YzM5MTM5ODI4ZmViMWUxZjliZTQyIGxlZ2FjeS10cnVuaworNzIwMiA5YWM5ZWE4NDhkN2RhNzc4Y2IyMWE3NDY1YzQzMGQ1OWVjZDZmMjg2IGxlZ2FjeS10cnVuaworNzIwMyBiMjE4ZjI5NGI3MjZhYmMwMzIzOTI4OWVkZTA0YmE3ZGQ1MWM5MjU0IGxlZ2FjeS10cnVuaworNzIwNCBlMjdmYTJhM2Y1MjY1MDE5MjA5YTBlM2I5YjNjZTM3NDhkNzNmNGNjIGxlZ2FjeS10cnVuaworNzIwNSA2MmNmN2Q1ODkzMDBlZjlmYzU1YTJjYzJmM2JlNzJlYjIyOWY2Y2Q0IGxlZ2FjeS10cnVuaworNzIwNiAwN2YwZjIxMzYzZTY0ODIxOWY4ZTI2ZGViOGNhZmM2Nzc0ZWE1MmNjIGxlZ2FjeS10cnVuaworNzIwNyBkMzY3MDE0MjAwYmI1YjgwMTE3YWJjZjViOThlMWUwYzhjMzBlZDNhIGxlZ2FjeS10cnVuaworNzIwOCAzYzc4MTJiZmExYTRhYWFiODY3NjBkYmNkYjBiN2UyZDgwNjEyOWEyIGxlZ2FjeS10cnVuaworNzIwOSAzZGI0MjM1MTU2MjZjMmZiYTcxMzJhNzA0NWNjMjgwZWZkYzgyMTI4IGxlZ2FjeS10cnVuaworNzIxMCA0YTNmNDViMzQ3MWFjNTRlNWQ1MzA1Yzg5NjgxYWEwYmJmMzY0NzIzIGxlZ2FjeS10cnVuaworNzIxMSA5NGFkNTZlZjUwNzMzNTk4NDdlMzY2MmY2OGQ4ZmIyZTNkNDYzNGMyIGxlZ2FjeS10cnVuaworNzIxMiA0MjZmODdjNDY1YTAyNjZmMzE0NTQ0ZDI0YWI1ZTdkMDhkZThjZjc5IGxlZ2FjeS10cnVuaworNzIxMyA4ZWRiNTdjMzM0ODdiYWVkOTNiOTA1N2VkN2FjODgwNTMyMTYyN2ZhIGxlZ2FjeS10cnVuaworNzIxNCBiMDE2ODI4NTFhNjMzNjc3YWY3YTg0MTNjYzhiZTRkYWU3OTBlNzQyIGxlZ2FjeS10cnVuaworNzIxNSAwNjJlODg2MDhiNTU1OWU2MDFjZGNkMWM0NTUyODMzYmUyNmQ5MDM1IGxlZ2FjeS10cnVuaworNzIxNiBhNDQwMjAwOGM1NjlkZDhlZjc4OGE1NmQ5YTgxNzhlZTMxNmViYTc3IGxlZ2FjeS10cnVuaworNzIxNyBlZDAxZWM0M2ViMzBmZjQzZjhiZTY3Zjg3YTY4ZWZhNGJjMTk2NWQ2IGxlZ2FjeS10cnVuaworNzIxOCAzNTdkNDU0NDA4NWEyYTZkMWQzMzhiYmY2MmFkOGMwNWU4ZTc5MzRjIGxlZ2FjeS10cnVuaworNzIxOSBlMDUyM2YyZDQxNjM5YzkwNGFhMTI5YTRlYjhlYWI0NTI2M2VlY2RmIGxlZ2FjeS10cnVuaworNzIyMCA3YWNkZjU5ZjMxYzVlYzFjZmZiN2Q4Y2U2Y2M2YTFmYjgwMGY0ZDcxIGxlZ2FjeS10cnVuaworNzIyMSAyY2JkZTVmYzRiMTliZTE5MDA5MTFmZDA0N2RlYTQ2NjAzOWExNjMyIGxlZ2FjeS10cnVuaworNzIyMiA1YjA1YmNiZDQ1NDJjNjQxN2RiODFkYjAwYTM4NWQ1NDg3NzBhNWM5IGxlZ2FjeS10cnVuaworNzIyMyBlYTEyNjVmMjZiMzMyNzQwOTVkZDJjYzM3ZjVkMjk2NDk4MmFhNzk0IGxlZ2FjeS10cnVuaworNzIyNCBkZGVhNjlmOTA3MWJhODJkOWI5ODk0ZTkyNDc1NzFjYWZlNmY2NTMxIGxlZ2FjeS10cnVuaworNzIyNSBmZmZjYzUyY2RjMWU4NmZlM2E5YTNmZjcxOGI2OWY2YmQxZGFjYmE3IGxlZ2FjeS10cnVuaworNzIyNiA3YWI4MzVmODdmODZkMjFjZGJjN2I3NDBiZjRmYzYyYjcwZGU2ODA2IGxlZ2FjeS10cnVuaworNzIyNyA3MzY3ZmIxMDcxMDgzZWUzMzZiMDUyMmY5Y2NiMjMxYWM4ZjY1OWM0IGxlZ2FjeS10cnVuaworNzIyOCA3YjFlNzg0ZTIwYTBlY2Q1MGVmNTUwZDBkOWU2MTg3ZWI0Nzg2ZWJmIGxlZ2FjeS10cnVuaworNzIyOSAzMDcwM2E2NTZkMTM0NWNkZmZmNDhjZGFjNjE0ODkwZjJkODFiOGVmIGxlZ2FjeS10cnVuaworNzIzMCAxZGU5NmM1NzJiMDJiYzRhYmU4MmQ0YTE4ZDJkMTRmZjFjYzQ4NzM1IGxlZ2FjeS10cnVuaworNzIzMSAzMDFkN2Y2YWNmMGE2ZDAxZWQ4NjU3MjFkZTRmNWMyZjc0MDRhOWQyIGxlZ2FjeS10cnVuaworNzIzMiBlMWYxNzI1Y2FlNmRhODMwMDFhM2JhMGE0MzMwOWNhOGQ5MjhmMzkzIGxlZ2FjeS10cnVuaworNzIzMyA2MDVmYmEwMmUxOTUwNzc2MjQzN2ExNDZmNzg5MTYyMDJlZTI4YTQ0IGxlZ2FjeS10cnVuaworNzIzNCAzZmM2MDQyYTJhY2I4NzRhMmRkZDIyNTU1N2JkMDMyNjA3MzM3YjhkIGxlZ2FjeS10cnVuaworNzIzNSA1YjIyZTMyZWFhMTc2NGUzZjY5MTYzNWVmNTMyZDQzN2UxYjgwNzQwIGxlZ2FjeS10cnVuaworNzIzNiBkN2VlYTY5NGNkM2EwNGU2ZTY1MGYwMTE1YzhjMmJmZGZmNDVhYzZkIGxlZ2FjeS10cnVuaworNzIzNyBmOTI2MjYzZmI2NTRjMjliODc4ZjlhODJkYThiODA4NjQxMmQ5MTRjIGxlZ2FjeS10cnVuaworNzIzOCAzODY4OWFjZWFlN2I2MGM1YjhhYzZiZmQ0MGY0N2UzZDNjZmY4MjRhIGxlZ2FjeS10cnVuaworNzIzOSA4ODcxNGZiZjlhMDYyNmFhNjBjZDM0MmRhODM1ZDBiY2U3N2YxZDlmIGxlZ2FjeS10cnVuaworNzI0MCBmOGIzNmMwZWMxMTRhZWRkYjMzZDM3Yjk0Y2RkMjJlNGUyMDI2NWE4IGxlZ2FjeS10cnVuaworNzI0MSA5NjA0ZDY3ODQ2NzVjMmRkOGU1MDJlNGUxZTRhMDAxZGU4YTIzNGYzIGxlZ2FjeS10cnVuaworNzI0MiA2M2RhZTI3M2IwN2Q4NTkzMTU0NGQ4ZjQ2ZGQxZjVkMThlZGFhMmZhIGxlZ2FjeS10cnVuaworNzI0MyBmN2E2MWM2YTY1YzM3OTc0NzFlNjk0NmNiMWUyYzY1ZDI5MzI3NDI0IGxlZ2FjeS10cnVuaworNzI0NCBlZWNiY2M0OGIwZTk3NmMyYmY2MTIzYzEyZmI2ODE3ZWI4OGI0MTQwIGxlZ2FjeS10cnVuaworNzI0NSA3MjEwOGZhYTU2YmYxNDg3MGQ3YTdlNjU4ZDUzZjMxYTQxNjUyMDk0IGxlZ2FjeS10cnVuaworNzI0NiA0NzEwNzAxNjkwYzFjNmJkYjQzNDMzODQ3NmUxNDJkZGIwNDVkMWVkIGxlZ2FjeS10cnVuaworNzI0NyBiODVmMTBhZTQ4NTdmMTE1MWNlZmNlYTUzNzk1Y2JhMDQxNTI3NTMzIGxlZ2FjeS10cnVuaworNzI0OCBkNTVmMzEzMzhmZGNmODUzY2M4MjVlNTFkOGY5ZWYyNjc2YWVjNDgyIGxlZ2FjeS10cnVuaworNzI0OSA5ZTQ4YWJiZWU2YzVjMDU0MTkxZmIyMDMyZmE3ZDk0YTJmNzFlMzdmIGxlZ2FjeS10cnVuaworNzI1MCAwZDBjNDEzYjZmMjUzOTc1Njg4NmMwNWVlOWZmNTZhZTEwMjFiODY2IGxlZ2FjeS10cnVuaworNzI1MSA0ZGU4Yjg2YmEyNTU5MWE0MDU5OGFkZGZlNWQ0MzYxMzg2NzAzMzMyIGxlZ2FjeS10cnVuaworNzI1MiA1MGQ2ZGM0NThhYTJmYmJmZjZmMjg0MmRjY2MzNzc4MjFhNGI4ZmZlIGxlZ2FjeS10cnVuaworNzI1MyAxY2NhYTQ0MWQwODNmMDA0MmMxODFjMGZmMzUzYTlmMzA0MjI1Y2FjIGxlZ2FjeS10cnVuaworNzI1NCBhNTcxYzdmMDg5OTE2ZGNiYzc1Y2EzYTRkNjUzOWE4MTljZDQ5MDdmIGxlZ2FjeS10cnVuaworNzI1NSBhYmVmNTAwNmY4NGJkYzcwNmI3MzMyNmNjMTJkNWJhZjM1MzdlZmM2IGxlZ2FjeS10cnVuaworNzI1NiA3NTYyYTZkZjkxZmI0YmViYzY0NWFkYTU3MWU3NjdkZGZjYjFiMDVlIGxlZ2FjeS10cnVuaworNzI1NyAyNDI2YTIyMDY2NGIxOGIzZGU0NjEzMThlMWNkNDEwMjFjNWM4ZTc4IGxlZ2FjeS10cnVuaworNzI1OCBmZWJhNmQ1OGQyMDQ4OWYwMTYzOGMxYTVjZGU4NzY4ZWVkOTk5OGVjIGxlZ2FjeS10cnVuaworNzI1OSBlNDMzNjI5MTBhNWUzZTNjN2Q1NTlhZmIxOTYyMDk2YTJlYjczMDQwIGxlZ2FjeS10cnVuaworNzI2MCA5ZmMzODBiMWE0NDVhYTE0YTEyZjY1ZGI1NzQyNzRjMDU4N2I5Y2EyIGxlZ2FjeS10cnVuaworNzI2MSAwOTQ4ZjM5ZWU5NjBlNDdlYjk3MmQzZmRkMzNlYTgyOTFkMDBhMWY2IGxlZ2FjeS10cnVuaworNzI2MiBkN2U2NjUzZDA4NGY2ZmJjMGU3NTkxNDJhN2UyMjYzNTEwMmJiMDQ5IGxlZ2FjeS10cnVuaworNzI2MyBmMjMyMWU0MjMwNzE3ZTVjNTk3N2U4OWEyYmRjNzA3M2NiNDc0OTcwIGxlZ2FjeS10cnVuaworNzI2NCBkNDViYTY0YjgyZmQ2YmVmMjk0MzQ4MjRjODllZWY5MWQwODUyZGM0IGxlZ2FjeS10cnVuaworNzI2NSBmMzc1ODIzMTQxMjMxODVhMDVkNGUwYTJiNGY5OWRkM2E3M2RiN2YwIGxlZ2FjeS10cnVuaworNzI2NiBhMmZkODBlZWQyN2ZhMTcyYjYxZmY4NWYwZmYyMTIzNzU0NjNhNTQ2IGxlZ2FjeS10cnVuaworNzI2NyAwYjZiMWI4ODI4NjZiNjBhMThhY2JjZGVlNDQ1MjliNGM1NDEyNjk2IGxlZ2FjeS10cnVuaworNzI2OCBhYWJmNGEwM2E0YjBiYmYxYmJhZjRlZGE4MjZjYzMxODFlNmEwMzM4IGxlZ2FjeS10cnVuaworNzI2OSA4MGMwY2E0MjQ1MTBlNzljYzQ2MjZiMjg4MDRlZGVjNzU2MGI0NTcyIGxlZ2FjeS10cnVuaworNzI3MCBiNjUyMGM0NWViMDU0ZTc3MDUzYzQ3NTllYjk0NTFhYTNkOTgxNTFmIGxlZ2FjeS10cnVuaworNzI3MSBiZjcyYTk0ZWU5NmI5YjNjY2NhZDA1Y2FjYzM3ZTBjNTJkNWY1ZDFjIGxlZ2FjeS10cnVuaworNzI3MiA1MjI1OGIwMjNhYTMxNzgxYmZlOWJiMjMxY2I2OGVhZjJhYTM5MTcyIGxlZ2FjeS10cnVuaworNzI3MyA1ZGI5YWQ2MDMyNmRjOGMxZDk4NzVjMGM1YTM5YjU0ZjJlZWFlY2M2IGxlZ2FjeS10cnVuaworNzI3NCBlNzJiMmVkMzgzYTk4YjRmYmMwZmEwYzYyMzQ1ZGYwZjU4NWE2MWQ4IGxlZ2FjeS10cnVuaworNzI3NSBlMmE3ZmY2ZjQxODg3MThmMzAzY2Y2ZWU3ZjY1N2JmOTM0NjI4ZTVlIGxlZ2FjeS10cnVuaworNzI3NiAyZDVlZTM3NGE3M2I4NWQ3MzNjMjA1M2IzMWYwY2YzODU0Nzk2NmMwIGxlZ2FjeS10cnVuaworNzI3NyA4NjdmZWRhMDA4NDA3ZjBkNzE3YTQ3M2M1ZDk3ZDE1YTI5N2YxNWQ3IGxlZ2FjeS10cnVuaworNzI3OCA5OTY1ZGY3ODJhZmNmNDJiYTdmY2JlMjAwNzVlNTkzN2JhMTBkZGJhIGxlZ2FjeS10cnVuaworNzI3OSBhMmM0MjdmOWRiMDJiOWJmMWI5YWQ4MDk0Y2ZkYzJiZWNlZTYyNmE5IGxlZ2FjeS10cnVuaworNzI4MCBjNzFjYTE1YzhiNTU1Y2Q4ZjRjNGYxZGI1NzhkMTZjOTMwOTYwYjA2IGxlZ2FjeS10cnVuaworNzI4MSBhM2M0NzcyNTk1MDU0NDMwOGJkZjgyYzNiYzM0YWQzYWYwNzk0MmY3IGxlZ2FjeS10cnVuaworNzI4MiA4ZDJjOGIwODA0MDE3ZDQxMzE2NTdjZjRmMGJjOGIwZGYyODBkZjRjIGxlZ2FjeS10cnVuaworNzI4MyAwOWQ2YzU3MDg5OTllNjMyNzg1MTJlNDhkMjAyNDBiZWUxYjc4MDkyIGxlZ2FjeS10cnVuaworNzI4NCA2ZjhiNWMzY2Q2Y2IyZTVmMmE2ZmVmYWExOWNhYzJlOTg1OGRmOGM0IGxlZ2FjeS10cnVuaworNzI4NSAyY2I0NjlhNDIxYTk3ODM3ZmQyNWZlODdmNDU0MjFlMzViMTg1ZDliIGxlZ2FjeS10cnVuaworNzI4NiA5YWUzY2NjZmE3Y2RlMTI5YmRhNTkzMDM2MzM2MmRjNzE3MmQyM2IyIGxlZ2FjeS10cnVuaworNzI4NyBkYjIzMGZlZmE3MDIzOThiNjA2OGIxMzg5MmJkODg5OTk2ZTQxYjRhIGxlZ2FjeS10cnVuaworNzI4OCBiNmZhZGYwMjMxYWY5YjI2MzlmOTI1ZTAwNDJmNWNmMDAwNzc4MTU0IGxlZ2FjeS10cnVuaworNzI4OSA5ODIxMzYwNGY5NDE0ZmQ0NWNmYWUyOGQ4NzhiZTUyZDZmYjM3MGFiIGxlZ2FjeS10cnVuaworNzI5MCBmYjE4Y2U4YzBjZjZhYmIwNjNlNGFmNDNmMjcwODQyNjU5ZmE1MWEzIGxlZ2FjeS10cnVuaworNzI5MSBjNDQ1NDBkNTJkMTM2OTkxMDc2YWVkMDhjODAyZWFhNjk3ZjlmZTNiIGxlZ2FjeS10cnVuaworNzI5MiAwZjc1MTVlYmUzYmY0ZWFkMmRmMDliMzk4NmE4YjRmZTFjOTdjMDhmIGxlZ2FjeS10cnVuaworNzI5MyA2N2E1MjIxYTJmNjBmOTM5Y2MzYjRmY2RhYWMzNDE2ZGY5MjU1NTI0IGxlZ2FjeS10cnVuaworNzI5NCA5YmRhMzhjNjdmNGVjMjVjMGZmNWYyMThhNzczMzhmYmQ3ODE3ZWI5IGxlZ2FjeS10cnVuaworNzI5NSBlNzJhYzFkYzYxNGYyYTA4NjA0Mjg0NDYxMTVkMzkyZTZmODdlZWEzIGxlZ2FjeS10cnVuaworNzI5NiAzOTFmMDhhOTc0NmI5NmQyYmY0MDU1ZWZjOTVlM2JlZTVhMmY5ZmJmIGxlZ2FjeS10cnVuaworNzI5NyA0NGU4NmRhZGVjOTQ0YmMxNDk4YjNhYWY4OWNjNDVjNTM4Y2NjMWM5IGxlZ2FjeS10cnVuaworNzI5OCBmNDJiY2EzZDdiZTIxZDMwYzE3N2JiOTE1MzM3NTFhZTdiMWIyMTkzIGxlZ2FjeS10cnVuaworNzI5OSA4NzgzY2ZkYzdjNmY5OTNjYmE0ODExNmFmODVjMzJkODNjMDMyNDZhIGxlZ2FjeS10cnVuaworNzMwMCBiOGE5N2FkNWY3Y2VkM2E1NDUwNzQzYjExMGM5YjQ4YWViZTA4ODMzIGxlZ2FjeS10cnVuaworNzMwMSBmM2I5MmM5NWU4NWIzNjI2YTBlZWI4YzM0OWZiMDI0YTA2ZjM2ZDFiIGxlZ2FjeS10cnVuaworNzMwMiBiZTQ4MWYzYWRhMGJkYWEzMDhjODU1ODIzMDlhYzU4NDljZmFmM2ZlIGxlZ2FjeS10cnVuaworNzMwMyA5N2FlODQ2NmQxYzQyMDc0ZTIxOWQ1ZTNhZGMxODJmOTBlMjc3MWNjIGxlZ2FjeS10cnVuaworNzMwNCA1YTJlNzI1MmM4OTAyZDRkNmQxODY2NGQ2NDBhYTYxZWM2YzE4N2Q4IGxlZ2FjeS10cnVuaworNzMwNSA0MzQxZmY1YzY5N2NmZWUyYTVkMDNhZTE3MWYxMmI4OGU2ZmYyM2JmIGxlZ2FjeS10cnVuaworNzMwNiBkODdlODc4NTM5NThmM2U5ZTkzZWY3Njc1ODQ4OGIzMmIyYmFkZjU5IGxlZ2FjeS10cnVuaworNzMwNyA1MGY0OTgzYjZiNzlkMTkyMjIxOTM4OWFjYmRmMjFlMDY3ZDM5YzQwIGxlZ2FjeS10cnVuaworNzMwOCAzMzlkMGM0OWYwYjU3MzhhZjQyMjkzNjY3NjRiOWNiZDA4ODcyOGUxIGxlZ2FjeS10cnVuaworNzMwOSBjN2U5OWFiNjI3ZjNiNzQwMjk2OWJiODE0YzMzMDJiNTMzNzFmMTA3IGxlZ2FjeS10cnVuaworNzMxMCBlMDU0ODBkYjcxYWIxMTM4ZGUzNWIzNGNkMmY4ZWQ1ZDUwYjRkZjlmIGxlZ2FjeS10cnVuaworNzMxMSBhY2IwNTAxZDkzZWY5ZDMwYmYwNTNmZDFhODJiZTdmNzhmOGY3YWVmIGxlZ2FjeS10cnVuaworNzMxMiA5ZTFhYzllYmU3OWY1MWRjZDI0M2I1MzNmY2QwY2VhNmQ5MGJmNWM2IGxlZ2FjeS10cnVuaworNzMxMyA1YzE5NTFkNTczYjFkOWJmMzFmZjM3ODYwMDFiY2Y3ZGZhN2U2NDc2IGxlZ2FjeS10cnVuaworNzMxNCA0NTY3ZTE1OGQyMGM1MTI5MmIyY2Y4NzY3MWFmNTM1ZDk2YjAxZmI1IGxlZ2FjeS10cnVuaworNzMxNSAzNWM2NDNlOTAyM2U3MmRjZGRiZWY1NmE0ODNhZTE0MTUzNjRhOTUxIGxlZ2FjeS10cnVuaworNzMxNiBhN2I5YzdjODEzMzc2MzIxYTgyNDIxMTI3NzE1OTk1MDI1M2Q0Y2E4IGxlZ2FjeS10cnVuaworNzMxNyA4NDY3OWY3YmJlNmQ1ODQ4YTYwNWMxNDBiZDhhMDBkMGFiNWFhNWNjIGxlZ2FjeS10cnVuaworNzMxOCAzOGFlMmEwZmM0ZjMzYzZlNmFkMGM3ZjA2ZmZlZThjMDlmMmNmOTg5IGxlZ2FjeS10cnVuaworNzMxOSA1NTVmNmU3NmQyMDdkY2NkM2RiYmNhNDk1ZGVlZmRjMzdhZmU2NjMwIGxlZ2FjeS10cnVuaworNzMyMCAwYmRkMzE1MzhkOGZkNjY2NzBiMWI4N2MyNzA3NzBlNzcyMTZhZmRkIGxlZ2FjeS10cnVuaworNzMyMSA5NzIwMjZkNDcyNzRhZWE1YWQ2ZjNhYmU3N2Q1MzI0Y2IzZGMyNGRlIGxlZ2FjeS10cnVuaworNzMyMiBkNTM4MTJkNjg0MDhjNjI0ZmM4ODJiN2M5NmNiNjkzMDA1NjQ1YWVlIGxlZ2FjeS10cnVuaworNzMyMyA1MjY5NWVmZGYyMmMyYTg1ZThiODlhNTgwNGVjOThhY2NkYjc4NThkIGxlZ2FjeS10cnVuaworNzMyNCAwYTQ5ZDE5MjUwNmRjYmE2MmY3NDIxM2FhNjllOGU5NTFiYjYxZDY4IGxlZ2FjeS10cnVuaworNzMyNSAwZTE4OTdhMWYwZDUyY2IwOWY5YWJlNTI5ODUzMTRkMjkyMGVkMzZjIGxlZ2FjeS10cnVuaworNzMyNiBmODA4MDAxYTNlMDEzN2FjYmZmMTJkOGI1NDEzOTExMjQ2NWVjMzk3IGxlZ2FjeS10cnVuaworNzMyNyAyOWNlZDQ4NWFjYTA5ODM1NmEyYmQzN2FlOGRhNTM0MTM4NDE0YzgxIGxlZ2FjeS10cnVuaworNzMyOCBjZjkwNzQ1MzgxYmZmZDBhNjYzMzVlYzUwNTYxMmM1YWM2YWEwNDk3IGxlZ2FjeS10cnVuaworNzMyOSAxNjdhZDM5NDQ4OGNjYWIxYTUzZWI4OTI4MjQ4ZDg0YWEwM2ZjY2MwIGxlZ2FjeS10cnVuaworNzMzMCA0M2FiMGZlZmU0YTE1NmFmN2Y0NGUyODE0NjE2YWVkYjQ3NWEzOGZmIGxlZ2FjeS10cnVuaworNzMzMSA4OGRiZmEyYmI5ZGNlZmZjMGUzOGI0OTUyNDE1ZmE1NmYwNjZjNWJlIGxlZ2FjeS10cnVuaworNzMzMiBlMGFhZWU3ZmQxZmQ0NTRlNmU0NjBiMjZmMjVlZTllYWMzODllNjc5IGxlZ2FjeS10cnVuaworNzMzMyAxOTg5ODllZTM2ZDU2YTVkM2U1NWU1ODFiOGEzMzdkMjdiYTBiZWFkIGxlZ2FjeS10cnVuaworNzMzNCBhYjQ2MWM3NjI1NTlhNDMxYmM0MDg5ZjQ1MWRkNGI1MDdkYTc0YzY1IGxlZ2FjeS10cnVuaworNzMzNSA1YzZmYmRjNTBlMWQ2NDM5OGRmOTA2OThmNjMxNDAzNmJkNzgyZGVjIGxlZ2FjeS10cnVuaworNzMzNiA2OWNhNWUzY2NjNmRhODI1MTYyYzVhZTljMzcwODcyYzdlOTUyYTNhIGxlZ2FjeS10cnVuaworNzMzNyA3ZDczMTk4MTFmZjBhZTEzNzFlMWMwZTdjNjkyOTQ5YWUwZmI5MTZlIGxlZ2FjeS10cnVuaworNzMzOCBiMTcwN2JjZGMyNjUyNmNjNzU5ZDVmMDY3YjAyNzZlYWY3YThkYWI3IGxlZ2FjeS10cnVuaworNzMzOSBhNTM5MDhkMDlhMDRjMDEwMzAyMWUzOTg2ZTc4MDE0NmE1M2YzNjM4IGxlZ2FjeS10cnVuaworNzM0MCBmNTA3M2UyNDE0N2MwNzg4MTVmNTAxZjg4ZmY0MWViODZkY2IyZTNmIGxlZ2FjeS10cnVuaworNzM0MSAzOTYwMzQwYTMyNTIwOGM0ZTVkNzkwZjEyZmMzZDQ1NWRhYzgzNDY4IGxlZ2FjeS10cnVuaworNzM0MiBlM2YyYWIwYjBhYTE2ZDIwMDMyMmY2NzBiMGU3Nzc3NDk3ZGE4ZTA2IGxlZ2FjeS10cnVuaworNzM0MyBiZjRkYjJhNGJiNTQwNzllZDA3YjBhYTZmMTc4ZWI4NzRlNTAxZTU3IGxlZ2FjeS10cnVuaworNzM0NCAwZWEwZmFjNjhjMWM5ZDhmNzZkNWY3ZDdhZWMzZjJmMjdlNjMyY2E4IGxlZ2FjeS10cnVuaworNzM0NSA2OGY0MTM0ODY5ZGIwM2I3N2NhZDJmYmNjZDA2M2IwMjQ4Njg5ZWIyIGxlZ2FjeS10cnVuaworNzM0NiBhNzE1OWJhMGU0NWQxZDc0OTQ0NjYxZjhhM2I4ODlmYWIyZDFiYTYzIGxlZ2FjeS10cnVuaworNzM0NyBkYTUzZTQ4ZWZlYTg2MGEyZGIzM2RlM2M1YmFjZWMyYWU5NjQ2MjJhIGxlZ2FjeS10cnVuaworNzM0OCAzMmY2YjBkM2E2NmZiZjA4OGJjYzZmM2RhZTI4NDZkYzhhMzQ5YzdmIGxlZ2FjeS10cnVuaworNzM0OSAwM2JjZGQyMmY2YTRjMmEyN2U3ZDdjODRkMTEwMjA2M2RkZWJlOWQ0IGxlZ2FjeS10cnVuaworNzM1MCA5MTEwNDBlMWJiMTE5MTg0YmI1OTM0MjQ3OGY1NDAyODRkZDg3Y2QwIGxlZ2FjeS10cnVuaworNzM1MSAwZjEwZmE3NTJjYTkyNTZmM2M3YmNmODkzNzcwNDA3ZTgxMWE1ZDA5IGxlZ2FjeS10cnVuaworNzM1MiBlNTdhOGRlNWFlYjM5YjMwMWRjY2RkNjk4ZDFiYzVmNTZiNGFkMWFiIGxlZ2FjeS10cnVuaworNzM1MyBhOWU3ZTBjY2FhNGFjMGMxMDVmNjNkNzMyNzg2ZmUxNmZmYzEzNDg4IGxlZ2FjeS10cnVuaworNzM1NCA0NTE0MDIzMTYwYjQ1ZDFlMmNjMGQ1ZmQ0MGE5ZjQ2YjJiM2VlZTAxIGxlZ2FjeS10cnVuaworNzM1NSA5YTdlOWYxMGFlZDYyMDhlYmZkODM5ODk5YmYyODhkN2RmNTg2NGU5IGxlZ2FjeS10cnVuaworNzM1NiAyMjQxZDMxMjY1OGFlNzczZDI0NjZiOTkyNTIxYTQ2MzM4MDQzNjQyIGxlZ2FjeS10cnVuaworNzM1NyA4ZDE3ZDU1MmQwZWMwNWRhYzZhZDgxZWQ2MzE0MzMyY2QxNzNmYmEzIGxlZ2FjeS10cnVuaworNzM1OCBlNzQyYjU5M2MwOTI2M2NkZWRiYmNhNTVlYzc4NmJlYjc4NmE1N2YxIGxlZ2FjeS10cnVuaworNzM1OSA2NWNiMjYxZjc3MzZjOWE0M2RmODFkZmM1Zjc2MmY5ZDUzM2U2MTFkIGxlZ2FjeS10cnVuaworNzM2MCAzODNjNjQ4NjM0NmY2NjMzYThlMjljODU1YzFmMzk5NDBjM2YzNzIzIGxlZ2FjeS10cnVuaworNzM2MSAyMWM0MWQzYzI2YjY1MTFhNzIzOWU2ZThlNDc1NzE2NTcwNjhiNmY2IGxlZ2FjeS10cnVuaworNzM2MiAzNDJkMmVlZDU3M2E1NzhiMmU2NTY5YTNlZGYxZTI1OTg2ZGNlYjgxIGxlZ2FjeS10cnVuaworNzM2MyBmMTI2MTE4NjcyMmNkMjA5ZDRlNWZiM2JmY2M4MDZjOTJkMmJjYmE4IGxlZ2FjeS10cnVuaworNzM2NCA5YzZiNWE2NWNlNjMwMGQ4ZDBjNmU5YmY3YTYxOTAyYjczMWJiY2E5IGxlZ2FjeS10cnVuaworNzM2NSA4YTY4ZjgxYmFhZDZiMTY5MTEzMTZhZGYzOTA2MDZiODZlYjQ0ZjZiIGxlZ2FjeS10cnVuaworNzM2NiBkMzk5YTQ1MzdmNmRlMGYyMDRjOWNhNmVkM2RmZDRhN2MzZThiZTY2IGxlZ2FjeS10cnVuaworNzM2NyAxYzA4OWM1YjY2ZTk5MDk1NGVkNTdjOWQ3YmM4M2E4NDQ4YzBmZDJkIGxlZ2FjeS10cnVuaworNzM2OCBjMmVhYzEyNmU4ZmZjMDg3OGM2NDk5ZjhmNDFlYTNiYTRmNTUyNzNhIGxlZ2FjeS10cnVuaworNzM2OSBmMzFmNDdmZjFmZGQzZjQ5YjI3MWI4YmQ1NTViYzFhMzE0MDYzZDUxIGxlZ2FjeS10cnVuaworNzM3MCA1NTY4MzIwZGE5YjU5YWViZmVmMjkxNzVlNTFlYTk4N2YzMGY4YTFlIGxlZ2FjeS10cnVuaworNzM3MSA1MGFiYjA4NTA3NDA0NjllZDhiZjJkMTAzMzI5ZjRjYWNjZGUzOTM4IGxlZ2FjeS10cnVuaworNzM3MiA5MGMyMWRkZTQyODQzZmIwNGM1NGQ4OGYzMjk1ZTk3ODQ0YzY2Njc4IGxlZ2FjeS10cnVuaworNzM3MyA0Zjg3ZmQyZDA1NjJlYWIxODRhNTc2ODQ4ZWJlNDBkNTAyYjMxOTYyIGxlZ2FjeS10cnVuaworNzM3NCA5ZWZmNzg4MGU2ODQ0ODA1YjkzYjYwODhjMjVjM2NlMWMwZDEyMDdkIGxlZ2FjeS10cnVuaworNzM3NSAzN2U5N2EzMTAyNDExZDIwZDE3MjU2NWI5YzliOWZlZmFkMjEzNmYxIGxlZ2FjeS10cnVuaworNzM3NiA3NzAxMDRjOGY4NGEwYWZhMzAzNDk5MjRlYjNhNDc0MGZlOWIzNWM3IGxlZ2FjeS10cnVuaworNzM3NyBkNDZlNDc4YjU3NjdjMzg5ZjNlNzc0MzNkNjZmYWMxMDliN2I4NzMyIGxlZ2FjeS10cnVuaworNzM3OCA2YTYyOWQyNzhhMThiOTIyZjJiMzhjNmMzMTU1OTlhM2ZhNThmYWE2IGxlZ2FjeS10cnVuaworNzM3OSA1ZGMyMGE5ZTA1MDY3YmExNzAzNjdlOTgwM2UzOTY3NGIxYzMxY2U0IGxlZ2FjeS10cnVuaworNzM4MCAzMjIyMGM1NzI4ZjUxNDg2ZTBkMzE5OTZkNjcwMzQwMmU3NDQyZTgzIGxlZ2FjeS10cnVuaworNzM4MSBmY2U3ODFiMTI3YjkyZjM5ZDNmNzNlNTFiYTM4YmExMzBhNTk3NGE2IGxlZ2FjeS10cnVuaworNzM4MiBmZDM2MjY1MTFkYWRmY2NiNGU1M2U2NzRhMGYzOGM1MTMyZjUxNDI2IGxlZ2FjeS10cnVuaworNzM4MyBjZmExMjgyOTAyZGFjZGEyZWFhYWU4YjNjZGMwNGJmZDk3NWQ1NmI3IGxlZ2FjeS10cnVuaworNzM4NCAwODM0YWFkZGJmMWZlNDRlMjEzYmI0MTYyNmVkYTFmMjZmOTFhMjJjIGxlZ2FjeS10cnVuaworNzM4NSBmY2FmOWQxMTlhYmZkYzA5MGVmODEwNjQ4ZDgyOTYwOTMyOTk5ODFlIGxlZ2FjeS10cnVuaworNzM4NiAyMTg3OGM4NDk2MjZhZTFiNzQyZjhhYWYxYWJhMzJmYTI3OWEzNDlhIGxlZ2FjeS10cnVuaworNzM4NyA0YjU5MGY1OGM2YTdhMzkzZjNhMWQ2ZWExOTIyNmViOGI1ZjlhOTNkIGxlZ2FjeS10cnVuaworNzM4OCA5ZTJjM2M2ZDRmYTE1YzhmYjg0MzYwYjg1MmVmM2RiN2MyMzg4OGZiIGxlZ2FjeS10cnVuaworNzM4OSAyNTBiZGRiMmVjY2YyZGJjZDA0NTE5NDY4MTVkOGVlNTRkMTRmNWI1IGxlZ2FjeS10cnVuaworNzM5MCAxNGVkOTA5YTljODA5ZjdlYWJhZmI3OGY4N2VjN2VkMjAxNTJkMDJlIGxlZ2FjeS10cnVuaworNzM5MSAwNzllYjY5NDcxZTU4MzM5YzFlYmFjZDBiYzdhMzhmYzYzNjk0NGM3IGxlZ2FjeS10cnVuaworNzM5MiAxYmNkNDk3MmRhN2U4NmU0NGJkOWEyZTcwMWIwNWFmZDNkY2U5ZjVlIGxlZ2FjeS10cnVuaworNzM5MyAyYTRkM2Q5OWI4YTQ1YThjMmM2Zjk5YmY1MmMxNTJiYjA2NjllYWI1IGxlZ2FjeS10cnVuaworNzM5NCBmOGU1YmM1MzUxYTk3M2FlODQ4NTMwZDVhYzU4YTcwMzlhOWVhZWU4IGxlZ2FjeS10cnVuaworNzM5NSBlNzc1ODVhZjJhMjE2NTU4Mjg2NGVlODYwN2JiNzIwOTQ0YTkyOTc1IGxlZ2FjeS10cnVuaworNzM5NiA1NThhYmFjNzU5OGQyOTBlZTlkMmRlYmMwMTJlOGRhOGVkZjgwNzZmIGxlZ2FjeS10cnVuaworNzM5NyAyZGVjMzYzNDU2NjU4MzIyYWEzOGY2ZWMxOGU2NTg2ZjY0MDZjOTVjIGxlZ2FjeS10cnVuaworNzM5OCBhZTU3MzkyMmZkY2RhY2NiNjFiYmUyYTMzNDI2NDkzYTlhZDRiMzZhIGxlZ2FjeS10cnVuaworNzM5OSBmMDdlMThkYjM2NmM0OTFjNGViZGUwNmVkMDMxNTgzMGI0M2ZiOGJjIGxlZ2FjeS10cnVuaworNzQwMCA1MDdjNDYwMjA1MjY0ZDU4ZTM0MDhhYjE2MjU3ODdiOTI5YTYzZDAyIGxlZ2FjeS10cnVuaworNzQwMSA3MDY5YTJiZjViYWY2YTlhNTZhOWEyZTdlOTJjYWUwZjk4MDgwMjZjIGxlZ2FjeS10cnVuaworNzQwMiAwNDA0OTNkZTg0OGQ4ZGQ3Mjc1ZDU4NTgwMzk3NDBiM2IxOWVhMzQ4IGxlZ2FjeS10cnVuaworNzQwMyA5YmU2NWU2YzM1YzgyNmQ0ZjcwOWFkN2Y2NTE5YjQ2MzEzMzM0MGM3IGxlZ2FjeS10cnVuaworNzQwNCA1MTI2ZDRiODE5ZTllMTljNWFiMjU0MzY3NWIwMWQ5ODlkMWFjZjgxIGxlZ2FjeS10cnVuaworNzQwNSA1MzY5MzVjMjk0MDE3M2QxYmM0NDJhZWFkNGExM2E1MWIxYjBiMzQ5IGxlZ2FjeS10cnVuaworNzQwNiAxODAyM2U3YzM4NjJmY2M4Yzk4ZGJhNjMyZTg1ZWI1NDFkYTU4YjZiIGxlZ2FjeS10cnVuaworNzQwNyBiMzc4NzUzODI1YTA5MWZlY2I5NGU0Yzg3YmZhZDAwNDE1YjUzOTNlIGxlZ2FjeS10cnVuaworNzQwOCBiNTZiYzI1YWVjODUyYWQyOWZkYmY1MTc2Yzc4YzkxMjNhMGMyODE0IGxlZ2FjeS10cnVuaworNzQwOSA2YjYxOTEyZDVmMzU5YjA4NDE3OWQ1OTQ4MzEyYWE3YTVmODFkY2YyIGxlZ2FjeS10cnVuaworNzQxMCAwOTVjOWVlMjNiNTc2YzAxMzkxODViNWUxZmM4MTU1MzMwNjA0NGU2IGxlZ2FjeS10cnVuaworNzQxMSA3ZDBiZmI0NjgyZjlhZjUyMDUwNTEwZWQ4MDBkMTc3NWNiNDYyNGI4IGxlZ2FjeS10cnVuaworNzQxMiA3ODlkZTdjNjY3MTI5NjYyZjBiYTQ4NTVmYjRiMGIwZTA3YzhiZWQ0IGxlZ2FjeS10cnVuaworNzQxMyA3MGRiNGJlMWRkNGIyNWMxMjVlYjJlOThlYTU3OGI3MjAwNGQyZGJiIGxlZ2FjeS10cnVuaworNzQxNCAyMTdjZmI2MTk5YmUxMTk2MTBjMjI0Y2NiMmE4M2M4YWVjZjM2MzJlIGxlZ2FjeS10cnVuaworNzQxNSA1ZWVkNTE3NTAyODQxNjMwNDNiZTI5Nzc5ZWFjY2I1OTAxZGZmZTc5IGxlZ2FjeS10cnVuaworNzQxNiAzM2UzM2JhN2Y0MjFhZTdmOTZhYzAxMDM0ODE2MTAxZTBhODU1MjI5IGxlZ2FjeS10cnVuaworNzQxNyBhNTIwYzY4NGNlOGRjMDBjYjkzMTFlMzAxNzM0OTIxYmY5MjA4NTRmIGxlZ2FjeS10cnVuaworNzQxOCA1N2FlZDE2ZTIxNjVjOGIyY2Y4NzUxNmVjYzFkNmI1ZjBmNmIxMzBjIGxlZ2FjeS10cnVuaworNzQxOSA1MjhjMzE5YzZlN2ZmMGRmMWI5MTczYWJjODg4OWJiZTYwM2ZkYzg3IGxlZ2FjeS10cnVuaworNzQyMCA2MTE4Y2E1MTQwNGQ4NjAyZmY5MDhiZmU5ZGQzZDJhMTYyYzg2Nzc5IGxlZ2FjeS10cnVuaworNzQyMSBiYTExYjU4YjJiMGEzOGMwYzdlOWQyMDI0Nzg0OTI5NzY2NjdkZWZhIGxlZ2FjeS10cnVuaworNzQyMiA3OGQ4ODAwNDMxMjllMDc0NWYyNTJlMzQ1NWQ5ZmIwYjkzZjAzNDliIGxlZ2FjeS10cnVuaworNzQyMyA1NjkzNDM0ZWE1MzhjODlmZDUzNWNiMThkZTk5NjUzODJiZWY0M2Q1IGxlZ2FjeS10cnVuaworNzQyNCBjYTlhYTQ3NDExZGU0YmEyOTA5ODc2MTYxYWIwMTcyOGZkODY5N2MxIGxlZ2FjeS10cnVuaworNzQyNSAxOWQ4MTliMTZiODI1MmEwMjEyOTNiM2M0YTMzMDBlZTZhYTYxNjdmIGxlZ2FjeS10cnVuaworNzQyNiBkYTJhYmJmOTM4N2M2MWViY2ExNWM5YzhkZTU4YjAyYjMyMTIxY2RiIGxlZ2FjeS10cnVuaworNzQyNyAwNWZkNDMyZDllMmI2OGQ4ZTkyZTM0MjEzNDdmMDY4MTA1NzNiYTI3IGxlZ2FjeS10cnVuaworNzQyOCBkYTRhNDk3YmVhM2E5NDgzOWY4ODVmMzM3MDRlZTc4NGJmYWMwNzc0IGxlZ2FjeS10cnVuaworNzQyOSBiMWVjZGIyZGEyNDAwNTUxOWUxOTY5OWE0ZTIzNDU4YTg2YTFjMDlmIGxlZ2FjeS10cnVuaworNzQzMCBlNmI3OTdhYWE2OWY3ZDIwNWI1MGU4NDkxNmM3OTNhNWEyMzZmYjFkIGxlZ2FjeS10cnVuaworNzQzMSA3MzMyNTAxOWFkMzlmZjViZjFkZTUxYzEzY2YzYTExNTViMjI2OTQ1IGxlZ2FjeS10cnVuaworNzQzMiA5ZDU4ZDBlOTg3N2U2ZTdhZjJhMmI5N2IwNWVhZjIxMzIzNzJkMjdlIGxlZ2FjeS10cnVuaworNzQzMyBjZTQzOGQzNmQ0ZmJmMTFkNGQ3ZjQ1N2FhZGNhZGFkYzQ3YTQ2NWRmIGxlZ2FjeS10cnVuaworNzQzNCA4OWQwNzc5NWZkNjk0ZmU0MjUyN2YyZjZjNGFmMGQ3MmYyNDQwZmUxIGxlZ2FjeS10cnVuaworNzQzNSAzOGY5ZTQ2ZDIzMTdiNTEwNzNiNjViNzZlYmM4YzVhNzEzZGRiZjgwIGxlZ2FjeS10cnVuaworNzQzNiA1ZTYzMzIyZjRjMDYxM2I4MmQzMTg0MDlmODQ3NGE1NTc0MmIyZDI4IGxlZ2FjeS10cnVuaworNzQzNyA3NjVkOTYyZjQ0NDk4MjU2NmZhZTJjNWE5ZTgxOTA3ZWYwMTE5YzI3IGxlZ2FjeS10cnVuaworNzQzOCA1ZGVkMmJjMTkwOGIzNjU3MWIxMjhhNGE5OWE5NDZlYjA4ZGNhODJmIGxlZ2FjeS10cnVuaworNzQzOSA2Y2U2MWYyMTJjM2U3ZjAwMWYxM2Y1OTdhZGM2ODE4Y2Q5OTgyMDFmIGxlZ2FjeS10cnVuaworNzQ0MCBkODRjYTE5Nzg2OGIzNTQ3MWMzYTU3YmIxMmU2MzA4Nzc4M2MyMDJmIGxlZ2FjeS10cnVuaworNzQ0MSA5YmJkNTdkMzYwOWZiYjQxMzNjYTBiNDIyMDUxZTdhOGYzMDYzYWUxIGxlZ2FjeS10cnVuaworNzQ0MiAzNzA1Zjc1YTgzNTVlMjM2NTQ0ZGNlNzBiNmYzNGM0MjQ2MGVkOTY4IGxlZ2FjeS10cnVuaworNzQ0MyAzZDMyZGEzN2Q2MjdkOGJhMDIyMTYwYWI0YjM4NDFjNzMxYTFlNWFkIGxlZ2FjeS10cnVuaworNzQ0NCAwZjFhZTYyZGQzYjg3ZTBhMTcxODBmZGQzYmUwNGMwMDQ5MWNlMzU5IGxlZ2FjeS10cnVuaworNzQ0NSA4MDU0ODdkNTA2MjBiNGY1NDZlMWI4ZDEzMDk3NTcyMjlmMDdlZTE5IGxlZ2FjeS10cnVuaworNzQ0NiA4ZDhjNzZhMWQyNTA0MDYyZTFmZjcyMTk1NDZlOGU5MDdkODgwNTNkIGxlZ2FjeS10cnVuaworNzQ0NyA2ZWNlNWNmYjQ5ZmZkYjNmZGI0M2QzNzdiN2U0ZGY5YmNiOWMwMzNjIGxlZ2FjeS10cnVuaworNzQ0OCA3ZDczY2RjMDExOTgyYTVlNzFjY2RiYzJlMGRkZGZjMjJhZTQ3N2QxIGxlZ2FjeS10cnVuaworNzQ0OSAzOTc0NTU3NGJmMDdhZmM2ZjE4YjFlNDg4Zjk4ZWM4MjQ1Yjg2MDlkIGxlZ2FjeS10cnVuaworNzQ1MCBiNGE0MDBiMzU5NWUyNGNlOTQ4Yzg0MWJhZTI4ZmRmMTc2N2ZiYTAzIGxlZ2FjeS10cnVuaworNzQ1MSAyZTI5NDVkODE2M2M2NzE3MjgzODg3NWYxOTIzN2QwMTNjM2QwMDYxIGxlZ2FjeS10cnVuaworNzQ1MiA5YjE2OTQzOTA4MjBkZDA0NDJhZGNmZTVkY2JkZmIwNjhjNzM4ZTU5IGxlZ2FjeS10cnVuaworNzQ1MyA0N2VlM2I0ZTJkODAzM2NhY2Q5OWQ2MzUyOGI0ZDY0M2MyNmE2MTJkIGxlZ2FjeS10cnVuaworNzQ1NCBiODY0YjQxNGM0NTdjZDllNDQ1NjA1ZTVhMDgyNzZmNDJmNzg5YjljIGxlZ2FjeS10cnVuaworNzQ1NSBhOGQ3YmZlYzdjOTJiN2MxOGFjOWVjODZjOGQyNDgwZDhhOWJjZGJkIGxlZ2FjeS10cnVuaworNzQ1NiA5OTQzNzZhZjkwNjRkMzBmMWU4MmZhOTliMTE0NDU2YzAzZTUwOTc3IGxlZ2FjeS10cnVuaworNzQ1NyBiNWU3ZmM4YmY5MTk2MzY4ZGMzMGYyN2YyY2U4NDg3YmE4MmVkZGQxIGxlZ2FjeS10cnVuaworNzQ1OCA2NmNiYjM3YjRjMGJkNjAwNTMxOTQ4MTk0MGY3NjlhNjM0MDM4YzFmIGxlZ2FjeS10cnVuaworNzQ1OSA3N2Y5NzAwNzY4MzE0MDI3NjAzYTMyY2YwOTBkZWRjMTRlY2ViYTYyIGxlZ2FjeS10cnVuaworNzQ2MCA0MzA5YmM5N2VjYzZhODc2OWU4YTZkZGMwYWFjNjM5YTE3NTI5ZGU2IGxlZ2FjeS10cnVuaworNzQ2MSBkOGQ1NjNiYWY4NzQ3ODY3YzA3MDQ5Y2VhMWQwNzNiM2Q0MGE1YTQxIGxlZ2FjeS10cnVuaworNzQ2MiAxZGVkOTQzOGZhNTE1ZDc3MzhhMDAyY2MwYTAyZjczZDczMDk4OTcxIGxlZ2FjeS10cnVuaworNzQ2MyBkZjM4NWNjMGQyZTM4NzBlZmQ4NjJkN2Q3ZjQ5ZjU3M2EyN2I3MmY0IGxlZ2FjeS10cnVuaworNzQ2NCA2NTE0OGRlZDUxMDg0ZGFmZDZjYmQ0M2JiNTAzNjAwMDRlZjUxNmU5IGxlZ2FjeS10cnVuaworNzQ2NSA2ZTE3ZWY1YTI2Yzg5NDRhODRiM2UzNmFjMDQ4ODhmY2I4ZDJiYTc4IGxlZ2FjeS10cnVuaworNzQ2NiA4Mjc2OTE2ZTFlYThkY2RlNTU4N2MzODhhNWM4M2MzNWJiNzZjZmJiIGxlZ2FjeS10cnVuaworNzQ2NyAxMWJhY2I4ZDczMWFkNmNhZGRjZDBkODljNWUwMWQwYjU5ZTM2ZGExIGxlZ2FjeS10cnVuaworNzQ2OCBiODJkODQ3YjNkY2JjY2Q2M2RlMDc1ZTM4NzlhOTM2OWRmYjM0ZTBkIGxlZ2FjeS10cnVuaworNzQ2OSA5YmM2NTJlOWYyYjQ2ZDI5MjhiMDMwMDNmMDhjNzViODgxNDc5MDU3IGxlZ2FjeS10cnVuaworNzQ3MCAyNjdlZDQ4MGVjMWI4NGMxZGUwN2ZhODY3ZjBkYjI2YjRjNzE1MmRhIGxlZ2FjeS10cnVuaworNzQ3MSA4ZGUxZjZiMDdkZjljZDdkYzBmYzBiNDZlNzJkN2RjMGQwNmMzZjA2IGxlZ2FjeS10cnVuaworNzQ3MiA1OGJiYWYyODRhZDY2ZWYwY2U3ZjQ4MThkMDQwNWIzMGFiNmNlOGE4IGxlZ2FjeS10cnVuaworNzQ3MyBjYzRiYTcyMTRiMThmOTk3ZTk5ZDA3MDMxMDBjOGQxNGJjOWU1ODdlIGxlZ2FjeS10cnVuaworNzQ3NCA0NjgxMjRhMTU2MGEyZDJlYmEzZjQ0YTYwNTIxNGVjM2FlM2RlYjRjIGxlZ2FjeS10cnVuaworNzQ3NSA3YzdhMTg2YjZkODZiMmIyMDMwNTA3MzE1ZGZlMDk5NGVlNjY1YjE5IGxlZ2FjeS10cnVuaworNzQ3NiAxN2M3YTEzM2NjZjcxMTI1ZmQyNDU4ZDRhNGU1Njc1NzBjNzJiN2VhIGxlZ2FjeS10cnVuaworNzQ3NyBhZTNiNDZhNzM3NjU3YjNmNDQwYWI3NTZkY2MxNjViNzBkYmVlOGVlIGxlZ2FjeS10cnVuaworNzQ3OCA2NWFhY2UyMDEyZTUyYzNmMTk0OTFlODljMTg0MjI5MGRkZDFiMWYxIGxlZ2FjeS10cnVuaworNzQ3OSA0YzhlNGU5MzExZTRlMGU1MmU1MDkyZWNiYWQxYmEyNjRmYTQ5ZmY1IGxlZ2FjeS10cnVuaworNzQ4MCBmMTdiYWNlNDhkZDY4YTJjODBmNDRjMDExNWQzYWJhN2QyOGNhMDk3IGxlZ2FjeS10cnVuaworNzQ4MSA1ZjRiMjNlM2Q5N2NiMzhkMGE5M2RhZTQxOGM4ODI5NTQzNWM1ZTZhIGxlZ2FjeS10cnVuaworNzQ4MiBlNGY3YzMzMWJiMWEyZmZmM2UzNThmYmU5NmZiYjk4NGU3ZTNmZDRhIGxlZ2FjeS10cnVuaworNzQ4MyBmNTVlODJlMWU1NjU4YzBmZTQ2MWY0ODM3NTUwYzgzMjE3NGIyYjBiIGxlZ2FjeS10cnVuaworNzQ4NCA0MDJlMzZjODNkMjAyOTAwYTAyM2UxNjA1ZWJkYWRiZGEzNmI3ZTIyIGxlZ2FjeS10cnVuaworNzQ4NSBmMGNmOGQyNzVmYmMxNzUxNDI4ZDBhMzNlZjFlMzYzNzQ4OTFiYTAwIGxlZ2FjeS10cnVuaworNzQ4NiA2ODQwZmY4OWQyNGExZjE5ZmMzMjhlNTFhMDE2NTdjZmUyY2Q5NzU1IGxlZ2FjeS10cnVuaworNzQ4NyA3N2Y5YzI1ZTFmMWZjYWNjOTNmMmU2M2IwY2JiYzJiNzBhNDc2NWZmIGxlZ2FjeS10cnVuaworNzQ4OCA0Y2E0ZTU0YzljZDgzNzZkZjE0MTdlZTI5YzYzYmZiNzlkYTI1Y2Y5IGxlZ2FjeS10cnVuaworNzQ4OSAwYmZhYzg5YWZjODNmZDZiMGE5MjliODJiNzcyYjgxODUyMmUyNDRjIGxlZ2FjeS10cnVuaworNzQ5MCBiMWUyZWVhNjZjYjZjZmRjMmE1ZTY0NjllNTUzMTQ3Y2QxZWU0Nzg0IGxlZ2FjeS10cnVuaworNzQ5MSBmMWFmMDk3YTVlNWQ3OTBjMmE2YjA2Y2FkMDAwNjRjNGQyNjEzZTAyIGxlZ2FjeS10cnVuaworNzQ5MiAxM2QzOGViN2UyMjVkMTgzNTRjYTRhNjdhODRhODgwODI2YTUxMTY4IGxlZ2FjeS10cnVuaworNzQ5MyAwMDFhNTA0MmIxODFhN2RhYjU0YjZjZDEwZWQxMjcyYmI2MmQ2YjcwIGxlZ2FjeS10cnVuaworNzQ5NCAyODkzNTYwOWRmYWVhNjRhYTA2Yjk2YzVlNjA0NTY3OTAyZDc0NGUwIGxlZ2FjeS10cnVuaworNzQ5NSAwZWNhOWQ1ZjdiMmQ0YjFhMDdjYjY0MzQ1MjVhOGI5YmM3M2RkNWY4IGxlZ2FjeS10cnVuaworNzQ5NiBjMjJhZGQzNjQzNTE4ZjZjNDgwYTZmNDY3MTZmZGEwZDdlMmI1YzA1IGxlZ2FjeS10cnVuaworNzQ5NyA2MjY0NTc4N2ZiYzhkOTJjYzI5YzJhNzcxNzhjODk3YWEzMzA1YzA5IGxlZ2FjeS10cnVuaworNzQ5OCA3NWMxZWU4ODJhNGFkNDhhZDZmNDVlYjk2ODJmNDdkMDIxYTA2MGU2IGxlZ2FjeS10cnVuaworNzQ5OSA3ZTUxOTA5OTk2MzMyZGFiMDc2MjllNjI4MGVlYjAxZWQ1N2RjODI4IGxlZ2FjeS10cnVuaworNzUwMCBiZmY4ZjVhZmM2N2ZlYzY0MWU4ZmUzMGYyZjVlMTE3NzVjODhjOTVjIGxlZ2FjeS10cnVuaworNzUwMSBiNWExYmIyZDE3ZmFkNDM2MTMzNmY5NTk0YTdkYzEyMGVjZDUxZTJkIGxlZ2FjeS10cnVuaworNzUwMiAwZWE0ZWE1YjJlYjczZmVhOGVlYTI4ZDEwNWI2ZDgyY2QzZWI2MzYyIGxlZ2FjeS10cnVuaworNzUwMyAwNjc3Yzc3YWE3MGRmMTllYjQ5NmMzMWNjM2RlY2NiNTRkNTgzNzBlIGxlZ2FjeS10cnVuaworNzUwNCAzZjAzN2VlNzczMWJlMzIzODU2ZWM0Njc5OTJlYzE1ZDg5N2QxYmE3IGxlZ2FjeS10cnVuaworNzUwNSAwMGMzY2IxMDdlNWYyNzg4MDZjNGQyYzI2OWVkODg3ZjMxMDkzMWI5IGxlZ2FjeS10cnVuaworNzUwNiAwMTdkNzI1NDRkZjJiZWM1M2ZkOTljMjQwYmFmYjVlYmFjNmJiNGFjIGxlZ2FjeS10cnVuaworNzUwNyBiZTMxZTdlMTkyNDFiMWQ1ZTVlY2ZkMWE0ZjY0MTExNzdhMWJlMmFjIGxlZ2FjeS10cnVuaworNzUwOCA1YjdiNzAzZGFiZmEwNzgzYjkxZjAxNGViMDMxYzE5MmNjZGI5NjAzIGxlZ2FjeS10cnVuaworNzUwOSBkZTJhNzVjN2VhOWZmNDY3Nzc3YjYwZjlkOTc4YjYxMjQwN2VmMTUzIGxlZ2FjeS10cnVuaworNzUxMCBhMGU2MmQ4NWRlNzdhMTUwZTI3OTdiMWRkOGQ4MjY5Njg2M2ZmMjQyIGxlZ2FjeS10cnVuaworNzUxMSA2OTc2NWQ2NDMxZTFjNGE5MzhhYmMxMzkxODMxNGNlZDMyM2E2MWZlIGxlZ2FjeS10cnVuaworNzUxMiA5YWQ3YjhjMzZjNzk0MDUyMzFkMGFiYmY3MWNkZjE4MjIxYjc3NjUyIGxlZ2FjeS10cnVuaworNzUxMyBhODIwZGVhZDA2ZTY3NjJmYzc4YjZiMTJiNjA3YTYzODFhMWVlMWI0IGxlZ2FjeS10cnVuaworNzUxNCAzODAzMjI2Nzk2OGMwMTcyYmE2Zjk0YWZhMDllNmM0YTc0MjJjMDBkIGxlZ2FjeS10cnVuaworNzUxNSA4NzZlNTczNjRjNjIzOTk1Y2ZhNWY0NTU1MjA2MGU0OTJjZjQ0NzZiIGxlZ2FjeS10cnVuaworNzUxNiBjNDk3OTI5YjIzNzExNWEyYzFkNzNlMDYyNWEzNjdlMzM3YzE0ZmM2IGxlZ2FjeS10cnVuaworNzUxNyA5YjdlMGNmNTE5OTA1YWM0OTE5OTgxMWYxMmZlNzJlZGUxZDRjMGRiIGxlZ2FjeS10cnVuaworNzUxOCAxMDRhNjQ2ZmM3YTY3ZjI3ZGYyNWQ0ZTk0MWIyMDAzNWU1ODc2ZjlmIGxlZ2FjeS10cnVuaworNzUxOSBlZTNhYzllMGEwMzIyOTg2MmQxOTA1NmE2NzQzYjE5MzRhMjUwYjY5IGxlZ2FjeS10cnVuaworNzUyMCBiMWQ4MjY5N2MwYjIzNjY3NGQwZTYxYzBlZmNiMGE5MTFlOWM3MmRkIGxlZ2FjeS10cnVuaworNzUyMSA2NTg4MTUyMzA1NDZhNDg5MmMyYWU1MTk0NjhlZGI0ODI3MDg3OGZlIGxlZ2FjeS10cnVuaworNzUyMiA3YTljYWM3Y2I5MTA5ZjQ3M2FjZGRkMWE5ZDIzZTI2OGFkOTVlMGNjIGxlZ2FjeS10cnVuaworNzUyMyBmZGU3MzQ2N2I1ODQ3YmY1ZDUyMjRlNmQ4NTQyMzIzZDlhNjhkNzY1IGxlZ2FjeS10cnVuaworNzUyNCA5NDZiMmIyYTc2MjJmYTE3YWQ0MjQ4MjgzNzZhNWU4OGE3YTAxM2FmIGxlZ2FjeS10cnVuaworNzUyNSA4NTc5ZTM0NDFkOWJjOTk5NWQ5OGU4YmYyNDg1M2ZlZTU1Yjc1NDUyIGxlZ2FjeS10cnVuaworNzUyNiA3ZjZkMTlmYzVhY2FjZmM4NTRhNzNiY2NkZjJhMjg5ZGE2YzEzODdkIGxlZ2FjeS10cnVuaworNzUyNyA3ODQxYzQ4Y2RiNWI0OTY3ZGRhNjNjMDBhZmFhZGY4NTNjM2EzNTZlIGxlZ2FjeS10cnVuaworNzUyOCAyMTliZGQ4YWZiMzhlZjA1YWM0MTdlNzI4YjU5MjI4Yzc0NDU4OTVhIGxlZ2FjeS10cnVuaworNzUyOSBlOWM0NDJkMDkzNmZiNWMzYjkyMmM3YTU5NDRjNWU5ZmY2ZDkyNjlhIGxlZ2FjeS10cnVuaworNzUzMCBmNTdlMTgxZmY2MzhmZGIxYzlhMzY5NjdhMzBiNGM4ZGNiMTk3ZDQ4IGxlZ2FjeS10cnVuaworNzUzMSBlNjI5Yzg4ZjNkZDgwNzczYmZlYzEzMmQzMTc2MjUwZmI4YTE2OGEyIGxlZ2FjeS10cnVuaworNzUzMiA2YzdhNzZmZDVkYzFlOTMyMGUyMTc2ZmQwNzE3OTVhNDE5YjBhOTM5IGxlZ2FjeS10cnVuaworNzUzMyAzNzE0NjRmNjY2NmI2NmQ3ZjFkZDVmNDZkZmExNjE5MTNlNDczOThlIGxlZ2FjeS10cnVuaworNzUzNCAxOTJkNTcxY2M0NjE1Y2U2ODRhZjQxODIzYWZjMTgwN2MxNTc5YTg5IGxlZ2FjeS10cnVuaworNzUzNSA1YTIzMjg3MGNjZWFiNWYzYzRmNWM5YjFlNzhjZTE1ZTFmYjJhZDgxIGxlZ2FjeS10cnVuaworNzUzNiAzNDZmZjliYTlkMzYzNzA0Y2FjMGNjYTBjM2MxMDNiODY3MTQxNWNjIGxlZ2FjeS10cnVuaworNzUzNyBkNjgxNjMxZDk5MmYyMDFiNDQxNTE4YWYyMmMwMDU0NTRkNmI2MGU1IGxlZ2FjeS10cnVuaworNzUzOCBmMDczMWZhNDQ0N2Y1MjYyZjU1MTc4M2M2YThjZGNhZDA0ODliMDNlIGxlZ2FjeS10cnVuaworNzUzOSA3ZGRlZDc4NTFmY2E4YzRiNDY2Nzc4NGFhOTcyOTRhMjk3NWEwYTZhIGxlZ2FjeS10cnVuaworNzU0MCBiNmZjZTcyNDNiYTBiYTg5NmYwNzgyMjcyOGM1NTAyMDZkNzJlOWRiIGxlZ2FjeS10cnVuaworNzU0MSA3NzYxNmIzMDAxZWY4ZjdlMDljNDYzOWMzNmMyODRkZDk3MWRlZTNhIGxlZ2FjeS10cnVuaworNzU0MiA0YWFjYTQyYTJhMTZjOTUxNzRiMmZmZjdhNWMzZDZjYWVmODViODc5IGxlZ2FjeS10cnVuaworNzU0MyA4ZWNmMmQ3YzlmYjFhZGI0Mzg1Y2Y3ZDBmZGFmNDQzMTJiZDEyNDFiIGxlZ2FjeS10cnVuaworNzU0NCBmYTMxNDc2YTI3ODZlZThmNTRkMGU1YzA5ZTVlZDAxN2ZlYjExNmU3IGxlZ2FjeS10cnVuaworNzU0NSBlYjEyZjQwNDZkMGJlMGYwZGY2NGY2ZjgwYzZiZTUxMDIxNjI5MzEwIGxlZ2FjeS10cnVuaworNzU0NiA0NGJkZjBiNTZjMGJkODM0MTQzNGNjZjhiOWEyMzcwOGEyMmEwZTFlIGxlZ2FjeS10cnVuaworNzU0NyBkMjQ4M2MyNzc0MmMxNTRjYzQ2MjBkZjUzZTY4OTllOWExN2U3NjcyIGxlZ2FjeS10cnVuaworNzU0OCBlMjFmMWQyNTk1ZGU4Yjk5YjgwYWRkYTY4NzJlZGZkZmNlMDg0NGNhIGxlZ2FjeS10cnVuaworNzU0OSAzMjczYWNiZTQ3NmZkYWE1ZmFiODlmNmEyMjNhOTJkMTMxOWZjY2ZlIGxlZ2FjeS10cnVuaworNzU1MCA1YjlkNDFmNGMwOGMxMTVmODM4MzViYTE4YTE3OTg1ZDc4OWE3Y2M0IGxlZ2FjeS10cnVuaworNzU1MSA0ZWRhYjQ3NDk3NGNlMDc3NjcwNjQ3MmEyM2U3OWMzZTk0ZjRlNDNhIGxlZ2FjeS10cnVuaworNzU1MiAyM2M0Yzc4MzhhYzJhYjNhNjY3NWMxY2FjYjcxYzAwZjEyNzAxYTMwIGxlZ2FjeS10cnVuaworNzU1MyA3ZjRiMzJlODY1NDU1NzI1MmI2N2FmZTJkYzllYmYzMWUxNDQzOGI3IGxlZ2FjeS10cnVuaworNzU1NCBkNmIyOTJhMzNjZmVmNTNjNzVlYTQ5ZmMyN2NiYmQ4Yzk5NTNjMDQ1IGxlZ2FjeS10cnVuaworNzU1NSA5YThhZGFmNThjZTg2MDc2YjY4OTM1NWNkMGRiNTBiNzJkNmQxOTY3IGxlZ2FjeS10cnVuaworNzU1NiAxYjYxOWI4MTFjMTAzNWE4MTUyM2I2MGIzNDhkNzA3NTg3YTQ3N2ZhIGxlZ2FjeS10cnVuaworNzU1NyAyYzg4MTJlZWE2Mzc5NDE1NTRhNGI2NTZkNGE5ZTE1YWNjMDIyMDBiIGxlZ2FjeS10cnVuaworNzU1OCA3YWIxYWEwOGQzNDhkYjBjZmE3YTM1MmRkOWVhNDM1OWIzOGQxZjExIGxlZ2FjeS10cnVuaworNzU1OSBhZmMzZTRlMDg3NDBiNjM4YWNjNTQwMzNhMTZhMzNiYzE1NmFmYTA0IGxlZ2FjeS10cnVuaworNzU2MCBkMzcwNjU3OTQ2OGU1MGQ2YTFhMTExMjU3MTgxZjYxNDUxMjM0N2MyIGxlZ2FjeS10cnVuaworNzU2MSBhYTczZGE2NjFjZGZmYWUwOWFmOTMzZTJlYzIxNDczNDE5MmM5MDQyIGxlZ2FjeS10cnVuaworNzU2MiA2ZWQ4ZWI0YjY2NGIzMWJlMTg4ODNjZTM1ZTEzMmUzMTZjZWQ3M2ZhIGxlZ2FjeS10cnVuaworNzU2MyBlNDI4ZDJjZmVkNDBiM2E5Y2Y2OTlhNjFkMDA5ODk4MGVlYTY0ZDZjIGxlZ2FjeS10cnVuaworNzU2NCA5MWY4NjMwNmIwN2I4NWZhYmRmOGY1NDZhYjhhODI1YTllYTBlODM3IGxlZ2FjeS10cnVuaworNzU2NSBiNjdjMDJiZDVlMjM2MGU0ODg5OTM2NzQ4ZGU2MTdiMzEzYjcwMjAxIGxlZ2FjeS10cnVuaworNzU2NiAzZmVlYzg1YmJhOWI2Mzk5ZjQ0NWVkNTIzYjNiNTdjNDA0ZTFkMmI4IGxlZ2FjeS10cnVuaworNzU2NyBjYjdhYWRkOWQ5ZjI5MjQ4NGFlZTRlMDY0ZWRmMGFlMTc5ZGFkZDgxIGxlZ2FjeS10cnVuaworNzU2OCBkOTk2ZGM0MmZlNjQxNWFkODIwOTY3MmE4YzY3MzQ2ZmM0ODRiNzQ2IGxlZ2FjeS10cnVuaworNzU2OSAzOGFkYmIzOWYxNWNmNTc3OTU5MDg0OThmMDJhYzQ0NTdlYWQwYzc4IGxlZ2FjeS10cnVuaworNzU3MCAxMTkyMmEyZWNhY2RlNGQ4MThjNDYyMWE2ZTI2ODMxZTM4YWYzOGI4IGxlZ2FjeS10cnVuaworNzU3MSAzMGMxMGIyMjI5NTMxOGVhOWU2ODdiYWI1YmViNDdmNjJjZTQxODAwIGxlZ2FjeS10cnVuaworNzU3MiA1N2I3YTAzYTMyNTJjMGU1M2JhN2RmMjhiOWYyNDI2ZmI5MjA2ZmZiIGxlZ2FjeS10cnVuaworNzU3MyBhNDQ1ODZiZDlmYWIzZjcwOTVhNDgzNzBkOTE2ZTdlZmJjYmMyYWIxIGxlZ2FjeS10cnVuaworNzU3NCBiNDIzMWQ1OTIyODFmMjViMGE1OTFiNjMzMGI4OTkzNzk0MTdlZjQ2IGxlZ2FjeS10cnVuaworNzU3NSAzMjMxMDI1MWQ3Njc0MDg2NDk4ZTBiNjVjZjhkYzAzZGEyOTk2MWEwIGxlZ2FjeS10cnVuaworNzU3NiAyNDk3YzhiMDQxMDE3Yzk2Njg2YWQxMzIwYmRiMWU3OTQyZjlhMDUwIGxlZ2FjeS10cnVuaworNzU3NyBlZTcwYjRjNzE4OTkzYjYwZmRhYjQzZDE5ZTM4MTVmNzVhNThjOTBhIGxlZ2FjeS10cnVuaworNzU3OCA0OTJjMGNhZTFmMDUyMjliMTE2YmE3YmQxMGM5MmM2ZWIyNGY5OGQwIGxlZ2FjeS10cnVuaworNzU3OSA0MTA5YTE3MWM5MDFhNDFmOGIzOTFkZWYzYjAxZTQyOTE5ODkxZjFhIGxlZ2FjeS10cnVuaworNzU4MCAwMGZkNjg1N2Y3NmI5MzljNWI5ZWEwMDBkMWNmODNkNmEzZTYxZjUwIGxlZ2FjeS10cnVuaworNzU4MSA5NDA4MTMxMTVmNzc1Yjg2Mjg4Y2ZjZGIwODA3MzA2ZDFlM2E4MThjIGxlZ2FjeS10cnVuaworNzU4MiBmOWI0NmI1MDM3NTE5ZjQ0MzMzNzQyYTE3YmU3NGZlMzg2MjRhMTMxIGxlZ2FjeS10cnVuaworNzU4MyBhOWE2ZDQxNmI5NDViNzk4OTIxN2JjODQ5MGQ1ODBkZGI0MzQ5ODIzIGxlZ2FjeS10cnVuaworNzU4NCAwYmJmOTc4NjFjZDlhMTYwNDA2NTAwMWUxZDIyYjYyZTYxNDJiODY2IGxlZ2FjeS10cnVuaworNzU4NSAwNzNmMWIzYWQ5ZDJiYWY0MGI0Y2JmMDJiNmQwMjU4MTI4MmFkYzk3IGxlZ2FjeS10cnVuaworNzU4NiAyMWI4NzEzMjVjODUzNGQxYjI4N2JhOTA3N2ZjNzY2NGVjOWZkZWMxIGxlZ2FjeS10cnVuaworNzU4NyBjYTYzODhiY2MwNWE1ZDkyOGE2MjYzNzcyMDQzY2VhZTBkZGFkZWRlIGxlZ2FjeS10cnVuaworNzU4OCBmYjhjZWZjZWZkODFlYTM2OTBhMDEzNjM5ZWQxMTg5Zjk0MDZkZDEyIGxlZ2FjeS10cnVuaworNzU4OSBiOWNlM2NjNTAwNzY3MWE4NzQxY2U2NWEzNDYyNTIyOTFkMTMzMTYzIGxlZ2FjeS10cnVuaworNzU5MCBlM2FiNDg5ODhjNzc5ODUzYzExYjVkYmViYTlhODg3ZWRjNzE2ZWU0IGxlZ2FjeS10cnVuaworNzU5MSA1MDY2NjQ3Njc3MzZlZmI0MDIwZTdjZWNkZjZiMmM5NzZmMmQxOGE5IGxlZ2FjeS10cnVuaworNzU5MiAyYmIwYmRhMTU4NWM3ZmE1NDk3MzVhMDllNTAyZDA4ZGU1YWVkZTMyIGxlZ2FjeS10cnVuaworNzU5MyAwMDI4NjVhZjU1ZTViNThjOGMzMTFmOTA2YTZmZTQwMzUxMDQ1YjUzIGxlZ2FjeS10cnVuaworNzU5NCBiZGEwMWEzNzQ3NjIyNWJhZjgwMWNmMDgxMTQ3NTNkNTgwYTgxNGVmIGxlZ2FjeS10cnVuaworNzU5NSBhNDhmMzY3OGY5ZTFhOGRlOTM5NGZkYjMwZjQyNmRhMjc4NDAxNmVlIGxlZ2FjeS10cnVuaworNzU5NiAyZTZlYjFjNzE1Y2U1YWMxZTc5NDM1MGYzM2JmN2ExMjVhYWJlNzI1IGxlZ2FjeS10cnVuaworNzU5NyA1N2IwZjE2MTllMjgyNDA0MmE3YzFhNWYzNjc2ODI5OGU0YjI4ZjhjIGxlZ2FjeS10cnVuaworNzU5OCAwNWZmZmQ1NWIwMTRjMDE1MGIwMmM5ZTEwNWExMTgyMjJiMzI2ZWFiIGxlZ2FjeS10cnVuaworNzU5OSAxNzE1OTFiMzlmNjMyZWQwYjQ1YmJhYzE2ZGNjODllMTA3NzA3MjdiIGxlZ2FjeS10cnVuaworNzYwMCA1NGE5YWRjYTIxNWM2ZTBiMWE3NDViYmNhNzVkNzViZDNiMTAyY2FjIGxlZ2FjeS10cnVuaworNzYwMSA3Yjk0MGYyOTYyMWI4NWZiOWJkZTVhN2E1NTAzYWQzZDZiYmNmZTI1IGxlZ2FjeS10cnVuaworNzYwMiBmMjIyMTMxOTI1MzE2MTBjN2E0NmI0NzYzZWFjNzg3ZDQ4NGQ5MDY5IGxlZ2FjeS10cnVuaworNzYwMyBiZjFiZDY0Zjg1ZTAxZjI5ZWFhNGVjMjdiNTQ3ZmFmYWI1N2NjNGMyIGxlZ2FjeS10cnVuaworNzYwNCAxMDJlMjkxMmQwZDE3NzZhNzYyZjJmZDNkOGRkMjhhYzQ5ZjhiMjAzIGxlZ2FjeS10cnVuaworNzYwNSAwYmY3Mzk0ZGJhMjIwNWIwMTU0MjMyMTdjNjVjMDU3M2M5N2RlZjIyIGxlZ2FjeS10cnVuaworNzYwNiBlYzQ1Mjc2YTZkYWRiOWJlMTNkYmNhNWE1MjBjMzA2NGRkOWNiOGFhIGxlZ2FjeS10cnVuaworNzYwNyAwZmMxZGFjZGFmZDczOGJkZTM3NTIyZjg5YWQ4ZWVmZTliYjkwNjQ2IGxlZ2FjeS10cnVuaworNzYwOCA2NjYxNTJiNzcwMjcxMDlmMzNjNzAyOGQzODVjN2ZhNDliOGMwZjRjIGxlZ2FjeS10cnVuaworNzYwOSBkZWYwM2QzYjhkZGJmOGJkMjFmOTJiMWQ4ZWI4MjM5YzczNzA4Zjk4IGxlZ2FjeS10cnVuaworNzYxMCA3ZmE5YTY0NDQ4M2U4MmU5YjMxZGViNTdhZmI2ODljOTFiMzk3OTI2IGxlZ2FjeS10cnVuaworNzYxMSBhNTEzZDgzYzA2Y2IwMDFmMGQzYWZmNGZkNWQ5NjdhYzlmODA1ZmQ2IGxlZ2FjeS10cnVuaworNzYxMiA0MGViOGIwZWUxOTI2MWI1YzJjOTIyNGM1NTBjMWIyMTIxMjdlMWUzIGxlZ2FjeS10cnVuaworNzYxMyBmOTNlYzFhYzE3YWE3MTkwZjYwODBiNTA0MDk4ZjAwZmE4MWZhMjRjIGxlZ2FjeS10cnVuaworNzYxNCA5MjE2ZjVjMjVlNGVmNzhlNjc3MGJiZWNmODYxY2NjZTYyNThkNjk1IGxlZ2FjeS10cnVuaworNzYxNSA4ZmJlZDc4ZTgxZTcxMjEyODg3YjlhYjc3OWNiYzBhZjQxZGQ1Zjk1IGxlZ2FjeS10cnVuaworNzYxNiBhNGM4Yjg4NzEzNzYxZmQ2NjRiMGNhZTY3Zjg2NWJlZDkyZTM3OTRkIGxlZ2FjeS10cnVuaworNzYxNyA4YTlmMTU3OTMyMzgyZWZmZjJlZjczMzk0NTM3YjZmNDRkMjA4ODIyIGxlZ2FjeS10cnVuaworNzYxOCA2OTUyZWI5YzNhNmY3ZjE1OTk0NjJiZWNhNzM1ZDVkMDFkNWMzMDNlIGxlZ2FjeS10cnVuaworNzYxOSA2YjMzN2VjOTJiZDBkMGE1NjE0MmU4MDA5NzlkZGIwZmMzYmM2ZTcyIGxlZ2FjeS10cnVuaworNzYyMCAxZTk1ZmFjODRhYjMyZjY0NjRiYmMzMmNiNWVkNTFlYzJjZmM2NzNjIGxlZ2FjeS10cnVuaworNzYyMSA5Y2VmZDA0ZWU1M2E1MmI4ZjYxN2FkNzYzOWI1YzMwNzdjYzdiNTQ1IGxlZ2FjeS10cnVuaworNzYyMiBiMjI3YjlhZjVmNTNkYmEwNDJmZDQzNWY3NDcwOThkMWQyZjg3NWUxIGxlZ2FjeS10cnVuaworNzYyMyA4OWVkYWE4ZWQ1MGZlN2M3YzBlMGEwZjRiY2ZkYjNhMjU2NTE5OGNjIGxlZ2FjeS10cnVuaworNzYyNCA3ODA2M2JhZTNmZDc0YmI0ZjYzYWNhNWVkMmM2YWZlNzhkYThhNThkIGxlZ2FjeS10cnVuaworNzYyNSA0NjY1ZTI4NDlhNGFjN2JlY2RjOTk0Y2UzY2VjODNjMjRlZmZkMmY5IGxlZ2FjeS10cnVuaworNzYyNiAyODI2OTI1YTg0MmUyOTg2YzhiMTcwNmIzZGZiYjYzYmVhOWYzODA3IGxlZ2FjeS10cnVuaworNzYyNyBiZDcwOGZlMTkzNGIzYjhjYjZhODlhOTAwYzI1NWYwZjJjZGQ0ZDA1IGxlZ2FjeS10cnVuaworNzYyOCAxYWU3ZTJlYmMyZjMzMWIyODlmOTdlZDk4ZGEyODRiMjYzNTc2MmM0IGxlZ2FjeS10cnVuaworNzYyOSBmNjIxOWQ3NzU0ODFiYTE3NTAxNmU3ZjNkMWQzNTNiNGE2ZGM1MDZhIGxlZ2FjeS10cnVuaworNzYzMCBiNTY2ZTc3MjgxY2MxNGQ1OTAxZGU4ZjU2YmQwYjU4YjM0ZTY0YTU5IGxlZ2FjeS10cnVuaworNzYzMSA0MTc0NjJhYjhiMDAyN2ZiMGQ0NGQxMjNjNDUyOTQ3NzQ0ZmM0Yzc3IGxlZ2FjeS10cnVuaworNzYzMiA4MjljNDI4OTMxODEwNGYwYjgwMjRjMGVhYmI4YTFjOGM4YTc0ZDA0IGxlZ2FjeS10cnVuaworNzYzMyAzNTFlOTVjNTFkZGIxYWNkZjUxMTViOWRiNzNkMGQ2MDEwOWUxZThjIGxlZ2FjeS10cnVuaworNzYzNCBlZjgzNTFlYTcyYzFjNjMyM2YyMzFjMGQwODQ1NmU1ZGQ0MjhiNjA2IGxlZ2FjeS10cnVuaworNzYzNSBkYzMzZTExYTFjMjhkZjVkNmEzM2UyODI5ODYwMzZlMDZmZDI4MDRlIGxlZ2FjeS10cnVuaworNzYzNiA1YmI3MGQyZTlhZGFkZDE4ZWJhMWFhYWFlOWZiZmY0NTczZmQxYTY5IGxlZ2FjeS10cnVuaworNzYzNyA3MTI0ZTRlZTQ5OTU1NzY0NWIwNzFiNjY3NjBjZDg1MDM5NjFiZGQwIGxlZ2FjeS10cnVuaworNzYzOCA5MDYzZjYwZWEyOGQ0MTkyZjk5ZDcxNjNkYTVjMDgwZGI3MTllYWZkIGxlZ2FjeS10cnVuaworNzYzOSA4YzI3N2YyOWI1MzVlMGIyMTI1MjlmZDcxMDliOWU0YmIxM2JjNzQ0IGxlZ2FjeS10cnVuaworNzY0MCA0ZDE1YmRmMWRiOWMwMDcyNzM1ZTU2OGRkODBlYTE3MzYzMGEyNzc2IGxlZ2FjeS10cnVuaworNzY0MSA3MTUxYmI3Mjc3NzY3ZWQxZTg3ZDg0YjU0YmI4Yzg3YjY2ZTE3OTc1IGxlZ2FjeS10cnVuaworNzY0MiA2MWY4OWJlYmExYWEzYzRiZjBmZGJmMTIyOTE0Nzc5ZWU4ODA4MDQ4IGxlZ2FjeS10cnVuaworNzY0MyBkZmYzZTUwNmM5ZThkNDFmNmZlMWRlY2Y0NDU0ZDliNzJlMThlOTkyIGxlZ2FjeS10cnVuaworNzY0NCAyZWE5YzQyNWE3Njc3ZjIyOTZhYzlmNDY2MjgzOWEyNmUzM2QwMTA0IGxlZ2FjeS10cnVuaworNzY0NSBmNWQ3MDdjZTQyMjNjMTczZWRmOGU3OGQzMzYxZjc4NGZiOTVhZDU0IGxlZ2FjeS10cnVuaworNzY0NiBiMWZjNGViMmFjNWE5NDhmYjE5YTg4OWZjMGQ2ZTg0NjY5ZTllYTBiIGxlZ2FjeS10cnVuaworNzY0NyAzMWIwZTVmMGJhZGYxOTY2Mjg3MjRkNmEwZmIwZDFmMDg1M2JlMWM1IGxlZ2FjeS10cnVuaworNzY0OCBmZjRmOGZhOGEyNzNhMDI5MGYyZjhiMWY5NGMwOWI0NjQwODUxZTIxIGxlZ2FjeS10cnVuaworNzY0OSBjNGU1ZWY5YmMzNjEyNDYxODU2MzBkMjIxNmVkMjVkZjI2YmNjMWY2IGxlZ2FjeS10cnVuaworNzY1MCAxOTdlMzIwNmUzZjMwNzQ3ZTVhYzY1ZDAwMmQ4OWIyNDVhZDFmOGU2IGxlZ2FjeS10cnVuaworNzY1MSAyYmQ5MjBlN2U1Yzc4ODU4NWUyMzliNDdiMjA4ZjRlZjE3MjBlOTRhIGxlZ2FjeS10cnVuaworNzY1MiBiMThlMDNiYTQ4MTc3ZjFmYTQzNjY0NWM2Y2VhMGE0YWQ2ZjY5NDYxIGxlZ2FjeS10cnVuaworNzY1MyBmOTc0MzY0ZjNhODdhMTdlYTIxOGM4NzhkOWM5YjhjMGE5N2JmZTRkIGxlZ2FjeS10cnVuaworNzY1NCA4NjNmZmMyYWI3NmE5OTUzNmY4N2M3YWM1ZDFmZmMwMmI5ODJjOTM1IGxlZ2FjeS10cnVuaworNzY1NSA2YmM1NjI1OWNjNGNjMjdmNzliZjhhZDdjYThkNWE2NTI1ZDVhZjBjIGxlZ2FjeS10cnVuaworNzY1NiA4YTBiODBkYzZlNzExNDg2OTM3MmQxNTUyYmY3YWMyN2IzNmQxMTNmIGxlZ2FjeS10cnVuaworNzY1NyBlMDM2MWQ1NDIxZmYwYjQ1MTRkZDU1NzdiY2IwYjQ4OGRmOGEzYmFmIGxlZ2FjeS10cnVuaworNzY1OCA2MzY3NTdlODEyYTRjNGJmYTRiZGFjYWQwYTcwNmFkYzZmM2UzYmE2IGxlZ2FjeS10cnVuaworNzY1OSA1Y2Y4M2FkMzI1MWU1ZjViMWRmZjA2YjdiOTc4OTc3OGJhMDkxM2UxIGxlZ2FjeS10cnVuaworNzY2MCBjMTcyOWUxNDg5MTZiMzM1NWI1NzQ0MGI2MWFlMzFkNmNkZDEwZTc1IGxlZ2FjeS10cnVuaworNzY2MSBhMTZkZWNiYjk3MTY1ODVhNTg3NDhiOGQyYTExN2JiMmQ3N2M1NTYxIGxlZ2FjeS10cnVuaworNzY2MiBjMWExYzMwNmE0MjliNWZjZmI4NjFkYzYzMDdlZGI4ZWIzNDU1OTliIGxlZ2FjeS10cnVuaworNzY2MyAzZWMzZDg4MDdmOWU4ODk2NjJkMjE1MGY3ZmFlN2U4OTUzOTA5NjhlIGxlZ2FjeS10cnVuaworNzY2NCBiYWI5MTk2YThmMzBjNjI0MTU3Njk2MzFhNjMyMjE2MGFjNGI2YzI4IGxlZ2FjeS10cnVuaworNzY2NSBhNzllY2Q1YWY3ZTViNDE5YjUxNWI5ZTA0MDc2MTdhY2Q1YWQwNTRhIGxlZ2FjeS10cnVuaworNzY2NiBmYTBmYzI4OGIyYzkwYjk2MTBlZWY2YjQ2NTQ3ZjMzNDRhOTBmNzBjIGxlZ2FjeS10cnVuaworNzY2NyBiN2FjN2I0NmIxMGMwMTA1YjQ1YjU4NGIzMmVmN2QyYzQ1MDlhOGNjIGxlZ2FjeS10cnVuaworNzY2OCBmMGZkMTJkNzZlMDc4ZmY1YmIzYmY0YThhNmYxNzk0YTA2OTA4MGQ4IGxlZ2FjeS10cnVuaworNzY2OSA1MmYzZGM0MWY2YzRmY2ViYmRmOTdlYjU3NTFiMGZlODAxYmFkNDZlIGxlZ2FjeS10cnVuaworNzY3MCBhODc0ZjVkMzAzOGVkYmQ0ZjE5MmE0MGMzNmZiNDNiNmZmZjdhOGFmIGxlZ2FjeS10cnVuaworNzY3MSA4ZWU4MWVmNGU5ODJmNGRkNjhmMDgxYjU2NTU0MTk4OTE3MDEzZjhkIGxlZ2FjeS10cnVuaworNzY3MiA3NGMxMjcwNGEwYmQwYzQ5ZTg3MWFmMDRmOGVhMWIzYzM2NDNmZTk5IGxlZ2FjeS10cnVuaworNzY3MyBlMGE2MDVlNjZiZWRhYWQ4Zjk1YWYxNWRkYjhkZGRmOTE1YTE1MmY3IGxlZ2FjeS10cnVuaworNzY3NCA3ZTM4MGRmMDBkMDBmYTFjMzhjMGU2MmI5MmNhOWM0ODNkZGI0NjNlIGxlZ2FjeS10cnVuaworNzY3NSAwMjRlNzM4Njc0YTVjZGE3OGY3YmRkN2IyOGFjNzVmZDRhNDI5ZjUxIGxlZ2FjeS10cnVuaworNzY3NiA1ODc4YTVhZjMxNDhkNWJmYWZhMGMyYWFmZTY4YWQzZjdjYWNkZjQ5IGxlZ2FjeS10cnVuaworNzY3NyBhZjkyZDc3OTE1MmFjMjRmZmJlNzY0NGFhMTIzYjkwMGYxMmMxYzE1IGxlZ2FjeS10cnVuaworNzY3OCAwNWM3ZDhiNGZmZDZlNGRkOWIzZDAwYzI2MzcxNzMxODZiN2I4MjQ3IGxlZ2FjeS10cnVuaworNzY3OSBjMjQ4YTA3ZTUzNDE2NGIyNjA4MGFiYjllMTA2OWM2NmQwNmE4ZjgxIGxlZ2FjeS10cnVuaworNzY4MCBiMzkyMDM5ODNkZTY2MTExZGY5M2FhY2IyOWRjZjZjNDMzNzQ0NWEwIGxlZ2FjeS10cnVuaworNzY4MSBiZDVlMmMyYzFlMDg3MmIxMWE2YzAzZTg1N2Y4M2I3OWQyMmY4ZWExIGxlZ2FjeS10cnVuaworNzY4MiAwMGViZmEzM2NjMDc2MzBlZWRhNzNhMGQ3NWQ3ZjU1NzUwYmEwZmJhIGxlZ2FjeS10cnVuaworNzY4MyA5M2U4N2NhYzQ4M2U1YmZmZDY3Mzg0MjdjOWI5OTViZDAxNDQzNzRmIGxlZ2FjeS10cnVuaworNzY4NCAyZWM5YzkzM2FmYjg3NDZhNDAyNDM5YzM0MTZiODY4YzI0NWUyZDVjIGxlZ2FjeS10cnVuaworNzY4NSBkNGM2YjRiMDU0OGMxYjYwNDM4MDY0M2ViNzc4ODg5YzA4ZTNjNTVlIGxlZ2FjeS10cnVuaworNzY4NiAzMTRkMGQ2MDNmMDZlZTRlMjczOTZmOGJiNGQ4OWY0NGQ5YzQyYmE3IGxlZ2FjeS10cnVuaworNzY4NyAxZjM4ZDVmYjNkMjM4ODFjOTk4ZTlmOGNhMTgwZDk2MjBiZTE0YTlmIGxlZ2FjeS10cnVuaworNzY4OCA1YjQwN2UwY2JjNzE1ZWE2NjczMTAxYWNlNWUzZTE1NDNkNzY5NDg2IGxlZ2FjeS10cnVuaworNzY4OSA5YzE2YmRmMTYwZmY2OGZiYjZjZDc0MWY1NTViOTAzZWMwOGIzMDIzIGxlZ2FjeS10cnVuaworNzY5MCBmNzAwNDJjMTljNTdhM2I3NmVlODQ5NmNiNDkxMTgxZGYwODM4ZWEzIGxlZ2FjeS10cnVuaworNzY5MSA5YmY2NTBmMjNkYTU3MTMwYjViMjhjYzE2N2QwMjFkYmI2MWVjYzcyIGxlZ2FjeS10cnVuaworNzY5MiAzYWI3ZDU4YzI5NjMxYTZhOTVhMGYxYzYzYTlmNjYxMmJjYTJjMGRhIGxlZ2FjeS10cnVuaworNzY5MyBmNWJmYjljNGMzNjQxM2FmNDJiYTdkYmY0MDg4ZmY4MDkxMzlmODQyIGxlZ2FjeS10cnVuaworNzY5NCAzMzRkNTJkNmRmNWRhYjRkMmU5YjZkZTc0OTYxODVlNjI1ODkxNDNkIGxlZ2FjeS10cnVuaworNzY5NSBlMWY2MTMzMjJiMjNjMjdmNjk2MGUwMWM0ZDAwODYwMTQ3MmU2ZmM2IGxlZ2FjeS10cnVuaworNzY5NiBkOTczM2I0ZjgxMWY0NzVhNjRiNjA4M2M3ODkxZjg3NDFhZjBkNmU0IGxlZ2FjeS10cnVuaworNzY5NyA0ZDhiN2RkNWRlMmEyODBhZjUyNDRlZjlhNmY1Zjg3ZTI1NGNlYzFhIGxlZ2FjeS10cnVuaworNzY5OCBiYzg4MzJiNTJiNTBiOGNiMTk2ZDI4YWJiYzk2OTY1YjA4MTU2ZWQ2IGxlZ2FjeS10cnVuaworNzY5OSAwNTc3NGVjMzlhZDIwNWJkYmRmNDc1ODkwOTU1YzI5OTFmNWRlNjczIGxlZ2FjeS10cnVuaworNzcwMCAxYjE0YzVjMWJlMmE1Mjg1NzJhMjZlZjE4MTE2MmJiYmIwZmFlNzAwIGxlZ2FjeS10cnVuaworNzcwMSA4NGM5M2Y2MDE3MTk0ZWE4NTAwYjcyYWE4N2RmZjFjODNiM2RmYTVkIGxlZ2FjeS10cnVuaworNzcwMiA5Nzg1MmY0ZWJkZTZiMDQ0MWVhZDk3ZmJkNWRiZTBjNTBiMTRhNjA2IGxlZ2FjeS10cnVuaworNzcwMyA1OWU4YTAyYTQ3NzRkODZhNTVlM2M0MDAzMmRjNDBmNTgxZmQ2MDkwIGxlZ2FjeS10cnVuaworNzcwNCA3NGNhZGRmNGIyOGE0ZTI4NDA3NWRmOWYzYTdjNDdiODFmNmU5NDQzIGxlZ2FjeS10cnVuaworNzcwNSAwZTYwZGUyYTQyYWY3NTBjNWRjZjgwY2E5NTUwYzU3NWM3MDA4MmQ1IGxlZ2FjeS10cnVuaworNzcwNiA5MzM0NGNiZGY1NDIyYTM2OGFkZTJiYjE4YmQ1OTBkODQ5NmExOTFkIGxlZ2FjeS10cnVuaworNzcwNyAwYTVjZWE0MjdhOWZiYmFlMDM3NjFjYjg5ZTI2NzMwMDBjMzBmZWM0IGxlZ2FjeS10cnVuaworNzcwOCBiNzQ5ZDJkZDc1ODI4ODFlMDFhY2RjYTRmNGYxMzZlOGU0NmJiOWVmIGxlZ2FjeS10cnVuaworNzcwOSAwN2VkNTJlMjAwZGI2OTY5OTU2MmZmZjMzNTgxYzAxNzNhNDBlYWFjIGxlZ2FjeS10cnVuaworNzcxMCA0ZjFmYTdiNjliYTc3OTMzNmU5OTY2NWRhYWE5MTRmNjkyZTM2YjkzIGxlZ2FjeS10cnVuaworNzcxMSBiNGU2NzFiYzEzMzExYWEwOGQwZWIxZTM4OWRmODcwMjM1NTQ5MTlhIGxlZ2FjeS10cnVuaworNzcxMiAxMjM3M2JhMjRlNWQzNzJjNmE1NWNiOGM1ZGY4ZGRhNzdhYTc5NjVmIGxlZ2FjeS10cnVuaworNzcxMyAxNTI4OGM4MzQzYTVhNjA4ODZjZWMxNGUxMWMwYjAxZDQ0MGE5OWUwIGxlZ2FjeS10cnVuaworNzcxNCAyNzYzNTQzN2ZhN2EyZDdkMDRkY2U5OTkzZjdjZWZkNTViMWQ5MmUzIGxlZ2FjeS10cnVuaworNzcxNSBhMzIzMzg2NGNhMzg1ZmVlZTA3Y2I3ZTRjY2I5ZDM5ZDU5NmI0ZTgwIGxlZ2FjeS10cnVuaworNzcxNiBiODlmNTI4MjFjNTJlODhhNTY5YjYwNWVhOGNkOWMwYTI1NTczYTA1IGxlZ2FjeS10cnVuaworNzcxNyBhNTBkZjdmM2ExMGEzM2QyYTc5Mzg2ZDgyZTFkOGE0MWRjMmY3NDZhIGxlZ2FjeS10cnVuaworNzcxOCA0ZjI1MWI4ZTMyOGY1YjVmOWE3N2NjNzkxNzc3MDJhNDVkNjkwMzMzIGxlZ2FjeS10cnVuaworNzcxOSAyNDcxMzlkMjAwZThjNzhjYzExNjdkY2Q0ZmNhMTVjYmE4N2YxNmFmIGxlZ2FjeS10cnVuaworNzcyMCBjNWZkMzI3MDU3YzZjMzU0YTdhMjZmYWRjM2FhYWYxOWJlZGRhM2FmIGxlZ2FjeS10cnVuaworNzcyMSAyMzMzMGExYjk1OTRkOTI4ZjVlOWU2YzUyYzJjYjY3OGIyNDdiNzJlIGxlZ2FjeS10cnVuaworNzcyMiA2ZGI4YWRlOGQ4YTk4MGQ1NjhjMjAxZjBiNjkwM2MxMmZhZjgxYmJhIGxlZ2FjeS10cnVuaworNzcyMyBhNTQ3MjBmOGRkMzZjZmZiZjllZDQzNjg4MmU5NTM3MGFkYjRjY2JkIGxlZ2FjeS10cnVuaworNzcyNCAxMzAwNTg3MmQwNTM0NmZiMDFjNzhkOGY2MDUxMzY0ZTU4ODFiNDhjIGxlZ2FjeS10cnVuaworNzcyNSA1MmUzYjYzZjJkY2EwMGVkNjM3ZjM4YjQ5NDQ0ZTQzODRhYWM2ZDA0IGxlZ2FjeS10cnVuaworNzcyNiAxYmRkYmEyZjEwMGU0OGRhMDVjZDUyYWI4MjcyYmI2YTI1Y2I1NTE1IGxlZ2FjeS10cnVuaworNzcyNyAyZmQ5MjQ2YjBlZTgyMTMyOGRhMzM5ZDU4YmExNTYyODJlNzZhN2UwIGxlZ2FjeS10cnVuaworNzcyOCA2ZmNmMjA3NDk4ZDhhYmUxNzFmMzgwNmE1MDIzMDVhZGIyNjZlMDYzIGxlZ2FjeS10cnVuaworNzcyOSBmZTFjY2I0ZTRjMWM3MzIwMDI3NjJjMmY0NmMwMzI4Yjk5MmVkM2Y3IGxlZ2FjeS10cnVuaworNzczMCBkMDg3Y2QwNjBiYWRkYTc2ZTdlYzUxOTRhNzJkMGNjOTQzYzYxZDNhIGxlZ2FjeS10cnVuaworNzczMSA3MTY5NGExNzEzMjRmZjVlODJiM2NmZDUzZTNiY2UyZmMxN2IwM2QwIGxlZ2FjeS10cnVuaworNzczMiA4MTI4Mzc5NWYxNmE4YTM4ZTI4NjFkYWEwN2U5N2Y2NTI0YmQ4MDI0IGxlZ2FjeS10cnVuaworNzczMyA0MGQyZmQ0NzIyODRhNGU0Y2YwZWY2MDMxMGY4ZjFkY2M5YjMxOTdlIGxlZ2FjeS10cnVuaworNzczNCA3MWRmMjFjMGEzNGVkNGJjNDRkN2YzOTRkYzkwNjk3ZjE2MjU4MzJhIGxlZ2FjeS10cnVuaworNzczNSAxZTVkNjI5M2M1MjRlM2U1Yjk0MjQ3YTQyODkyMDA5NWU5ODI5MjUzIGxlZ2FjeS10cnVuaworNzczNiA3Mjk4NmI3MTY4MjQ2MmE3ZjM0NGVjMWM4OWFjMDFhOTg2MzNiMjY3IGxlZ2FjeS10cnVuaworNzczNyA1YWJjMWEzNmJlZGRjNzM5NjJjYzk1MWIwMTdkNGJjMTkyODc1ZDYxIGxlZ2FjeS10cnVuaworNzczOCA4NmQ2MGMzNGViZGU3Nzg1NzhmMWUzNWQxZTk0NzEyMmE0NTI0ODA0IGxlZ2FjeS10cnVuaworNzczOSAzODg3OGYxY2Q0ZjFmZWM5OTk3YjQzYjE5ZjU4ODczYTNkM2NhMzU3IGxlZ2FjeS10cnVuaworNzc0MCAzYzE3ODhhYjk3NjEwNmYzMDE2MDc3MDg0YzIyMzIxZDliZTcwNGI3IGxlZ2FjeS10cnVuaworNzc0MSAxZWZjNDI3M2ZkYjdlMzQ5MGY5OGQ3NDdhODRiNmUyMmY3ZjdkZjkyIGxlZ2FjeS10cnVuaworNzc0MiBkNDFlZWU2ZDJmZjc2OTNiYWY0ZGMwMGY1ZDQ5MmFmZDg2MWU0NjUxIGxlZ2FjeS10cnVuaworNzc0MyA0ZjMzMWY1YmI1ZjJhNGI5MjE5OTQ5ZDdhNjkzNGNhZTVkYmVjYmQ2IGxlZ2FjeS10cnVuaworNzc0NCA0ZTUzNzQ2ZTUxYWY5MGExNzJiZTQ3MTZhMzAwODFhZGU4Yzk0Mzg3IGxlZ2FjeS10cnVuaworNzc0NSBkZTlkMGM1MjQ5YjBlMmE3ZDQ2MWVjZmRmMWZiMzUwODlkYmVkMWU2IGxlZ2FjeS10cnVuaworNzc0NiBhZmY3MDYzMzc4YThhNjM5Yzk0ZDM1MDY0NDg2OGM4OTdlNjY5NDZkIGxlZ2FjeS10cnVuaworNzc0NyBiMTU5Zjk4Y2JmZWZiZDY1MTg0NDEwNzJjNDYyOTJhZDI3OTQwNjZkIGxlZ2FjeS10cnVuaworNzc0OCAxMTQ4ZTdlYmNhMzU0YjIzZWYzODBjYzlhMjI0NTdmZTU5NjJhMDYxIGxlZ2FjeS10cnVuaworNzc0OSAwZDZlNzBhNWFiNGJkMWQ3MmFmZmMzMGU2YzExYzg0YmViZmIxYTlkIGxlZ2FjeS10cnVuaworNzc1MCAwOTlkYmM2ODRjN2JlNDBjZjY5Zjk2ZDI4MzQyYjRiNzBkNjI3MTRiIGxlZ2FjeS10cnVuaworNzc1MSBiN2NiNjk3Njg5M2Q4NWY4OTIxY2QyZWMwZTQ0MDY3NTM5YzNhZjQ2IGxlZ2FjeS10cnVuaworNzc1MiA3ZGY1YTBkMWY1MjMwYmRmMWEzNGMwZWRjNjA0NTcwMGRkZjc0ZWRjIGxlZ2FjeS10cnVuaworNzc1MyAwMWMzZTY0YmM4MjRhYWIwYWJkMTk2ZTRmYTQxZTYxMWQzOGM3OTlhIGxlZ2FjeS10cnVuaworNzc1NCAxNjM3MmE0YzRjMTQ1YzY5Y2Q1MWE4NzBmOGNiMWNjZmFmOTZkYzNjIGxlZ2FjeS10cnVuaworNzc1NSBlOGY4Y2YzNTgwNTRlZDZiNmQ4OWM0OGIzNmZjMjg1ZTE5M2Y1ZTBjIGxlZ2FjeS10cnVuaworNzc1NiA2MDdmYTMyZmMwNGExZGEzY2I5YTBkMmQwNzVlNTMyNjlmNTA4ZGZiIGxlZ2FjeS10cnVuaworNzc1NyA1MjUwZjQwOWQ1NTg3MjMxZTJkODZlNjk3NjM3YjVkZWI0YzkzODZiIGxlZ2FjeS10cnVuaworNzc1OCA4MmEzZmJkYTMzNjM1MGIzYTRjMzVhNjE3ZGI4OTUxNzI4NDJiYWMxIGxlZ2FjeS10cnVuaworNzc1OSAwMmIyZWRmNTViYWYzOWRmOTQ2NWFkOGM2NGJkZTcxMDYwM2JiZjVkIGxlZ2FjeS10cnVuaworNzc2MCBkMmM5OTVlYzQyOTAxMDA4ZGMxZWY5ZDM0YzkwYmEwNmM3NDRkNjM2IGxlZ2FjeS10cnVuaworNzc2MSBmYmVkYTZmNDZlYmIzOGFiN2JhNTI2NGNkNGFkMzk4ODZjZDIyYzI5IGxlZ2FjeS10cnVuaworNzc2MiA1YWY3NjZhMWI1MzEyNTBmYjY0ODg3ODE2MDg1OGY4OTc5M2RlMzEyIGxlZ2FjeS10cnVuaworNzc2MyAwZjE3MTFiN2QzNjdkZmZiYjljNTE0MjhmNDQxNjhhYWE5NTk0NGU5IGxlZ2FjeS10cnVuaworNzc2NCA0N2QzZDM5NmQ0ZWY4YTIxYTYxZDljOWQ0ZWVlZGM4M2IxZDBlNDJlIGxlZ2FjeS10cnVuaworNzc2NSBkMzJiOGY0ZDlkMzA5MjBjZTgxYzBhY2UxZTEyN2E0MDM3N2NlYzQ1IGxlZ2FjeS10cnVuaworNzc2NiBhNzZhM2EzOWY2YmNmYjc3ZWVjMjhhYzBhZTlmMzQwYmQzNzFkNDBjIGxlZ2FjeS10cnVuaworNzc2NyBjYTU2OGU1ZWJkMTlhMzgwNTVmY2NlNzJjNTRhYjg5MDFmOGQxZmExIGxlZ2FjeS10cnVuaworNzc2OCBiMGQ5ZGUzNzg2ZWMzMjljMGQ2OWMwNGQxNGIyNjU2NjE2YmYxYjQzIGxlZ2FjeS10cnVuaworNzc2OSA1N2EyZWQwNjMwY2Q4NTllOGE1ODhjY2FiYjU3YWRhNzI5NDg5ODg4IGxlZ2FjeS10cnVuaworNzc3MCAyZjI3NjBjM2RkOTA1ZDQzZmRkNTJjMzYzOGEwNGJjMGM0ZmVlYjI2IGxlZ2FjeS10cnVuaworNzc3MSA3YWE0NTY2MDE0YzZhYzA0OTJiOThlOWUyZWZkYmVkNTM5MmIzNjNlIGxlZ2FjeS10cnVuaworNzc3MiA3ZWM3MzNmOWMzMDU3NGJlZDJiZWQ4NGQ4MWM5NTE5MmE2OTNhNTJlIGxlZ2FjeS10cnVuaworNzc3MyA5YTMyYmQ4ZjRhYzhhMWNlNTBiMDY4YjUxYjE5N2Y0MGNiODllOGJiIGxlZ2FjeS10cnVuaworNzc3NCBiNTIzZTZlN2FjNjEyYWRlMWUyMjEwNDU1YjEzNGQ2NTJkMTE3Mzk5IGxlZ2FjeS10cnVuaworNzc3NSBlNzc5NDI1NjJkZDM4ZTUzNWU2NmI4YzljNTQ5NGQxNjU0OTc4NTM0IGxlZ2FjeS10cnVuaworNzc3NiBmYjgxNjUzMDQ5MzkzNDVkYTNlZTc1ZWNkYzliZGFkZWY4ODQ5MTU0IGxlZ2FjeS10cnVuaworNzc3NyA1ZTNiY2Y0ZWJmMjlmNDhjY2NjYTVjODY2YzY1ODJkNGNiZjU2YTNiIGxlZ2FjeS10cnVuaworNzc3OCA5NjQ1NjJiZDc1Y2MzNzZmYTlhMzI5NDRiMTBkZTIwMTBhNzNmOWQzIGxlZ2FjeS10cnVuaworNzc3OSA0NDU5MTcyZjQwYmIxNDQ4OWQzYWU2NmZjODkxNTI5Y2QzMjQ1ZDliIGxlZ2FjeS10cnVuaworNzc4MCAzMzJmZTAyYmYwMmRjNDdhZjkwMzgyOGM0MjJiNjMyNWRhOTQ5NmQzIGxlZ2FjeS10cnVuaworNzc4MSBlNjE0YmNkMzRlMzRmYzRmNTc1ZWJlMDBhM2U4MzFjMGE2NzMzZGNiIGxlZ2FjeS10cnVuaworNzc4MiBjM2VkMjk5ZDU5M2U2Y2Y0NGZlYzNhMGVjOTYxMWNmZTMwNzhhZDEwIGxlZ2FjeS10cnVuaworNzc4MyBkZjg3ZDVkMWJiZGYxN2Y5NzNkYzdkYzg0ZGJkMzBjZDU2NjZiNGM4IGxlZ2FjeS10cnVuaworNzc4NCBlNzU2YjhlNTRjN2MxYzYyY2E2NjUxYWY1ZTQxMDc0ZjU4ZjMxN2JlIGxlZ2FjeS10cnVuaworNzc4NSAxOTJlMmUwY2JjZTUwNjQ4ZDMyNjllYzMxN2E0OTY3ZGJkZDMzOGMxIGxlZ2FjeS10cnVuaworNzc4NiA3ODI1OTdjZjYxNTFkOWRlYTFmOGI1OTQ5MmNlNWFlM2ZiOTM1YmUyIGxlZ2FjeS10cnVuaworNzc4NyBkMGViMTgzMDkyYjBjZGM2OGI1ZDAxNWU1ODM1ZTk4MjBjODkxYmQ1IGxlZ2FjeS10cnVuaworNzc4OCBlODk5Njg4NGU4ZTE3ZTZiN2I0MDAzOTI4N2IzNmYwY2Q1ZmI5YTBlIGxlZ2FjeS10cnVuaworNzc4OSA4ZmMyMTdkMzMyNjc1NDU5N2IxNjY4MWQ1ZDcyNmVlYmVkNzdlNmEzIGxlZ2FjeS10cnVuaworNzc5MCA2NWM5ZTkwZDgxNDI2OTJkZjJiODg5MjYxMmQ4NmFjM2M1MzZlZGJkIGxlZ2FjeS10cnVuaworNzc5MSBjOGUyNGM0YjhiZmJjY2E4Mzk5ZjYxNDE3ZDI3YWEzNTc1NTc2YzY0IGxlZ2FjeS10cnVuaworNzc5MiBjNzJjN2UxOTMwYjNmMmNiMDdmYzRiYWM4YmRjZWNhZWRhODg2M2FmIGxlZ2FjeS10cnVuaworNzc5MyAyYzRiODAyYTNiNWQ4YjU1ZWUwNWQ0YjZlZTFjNTExM2NjNTQxZDJkIGxlZ2FjeS10cnVuaworNzc5NCA3NGExYmMwOTk4Mjc2ZTcyN2YxMWJkNDEyMTZjNjczZWE1YTBhNTcwIGxlZ2FjeS10cnVuaworNzc5NSBjM2RkYjg0YTc3NjFmZGUzYzU1NDE4OTNhNTMzODliM2IwNTU2YzRjIGxlZ2FjeS10cnVuaworNzc5NiBlMmFjMDk4MmNjMzJmMGNmMTE2YmM5ZDliNGI0Mjc1ODIwMTRiMmU3IGxlZ2FjeS10cnVuaworNzc5NyAzODgxODUzOGI4OWMwYWU4NzBhY2NlODcwMDVjZTY3MGM5NDQ3MmFjIGxlZ2FjeS10cnVuaworNzc5OCA5MWY5OTE4MTI3MTg1NTc5M2EzMjJiZWU3MWI2N2Y0YmE0N2I2MDQ3IGxlZ2FjeS10cnVuaworNzc5OSA0ODlkY2EzYjU0Y2NiNjBmYWI2MTRjOTRiNmIwY2NjZDcxMWU1NmYzIGxlZ2FjeS10cnVuaworNzgwMCAzYTA3Nzk5ZGViYTFmNmRjYmNjM2FhOTdkMmRlY2RkNTI5ZGFkMDEyIGxlZ2FjeS10cnVuaworNzgwMSBiNjg5MzEzMzk0MGZlZWIxMzE0MTU0MmIxMzk3YmU2YjY4NGMxM2YwIGxlZ2FjeS10cnVuaworNzgwMiAxNTJiMjgyN2ExYTA4NzNhMzViMmJjNDJjMzEyM2EzMzQ3MzIzYzc3IGxlZ2FjeS10cnVuaworNzgwMyAzNTllOGY4MTVhM2FjYjQ5Mjc3MTU3OTcwMmU5NmFjNWVhZWIxN2ZjIGxlZ2FjeS10cnVuaworNzgwNCA0Mzc1MmUyMDk0NzNjMzhlMWE4NDg1NGE5ZDliMWEyZjFmZWQ1ODVhIGxlZ2FjeS10cnVuaworNzgwNSA1YTIyZjliMzhhYWMyMjY4YWIwODY4NDgzYTdmNWQyNzc5NGE5NTYzIGxlZ2FjeS10cnVuaworNzgwNiA2MjMyYWNiYTdlYjIwYTBjNzU3ZmZjYjgyNDNiMzdjNWY2MjFhOTI2IGxlZ2FjeS10cnVuaworNzgwNyA4ZGZjMjUyOTYzYzcxOTllM2JiYTU4OTZmYTk1MGZlZjI0M2RhY2Q3IGxlZ2FjeS10cnVuaworNzgwOCA2MjczMTZjMDAxZmJkNDUxNzczY2MxYjJiMzQ3YjhmNmIzZmM1MzNkIGxlZ2FjeS10cnVuaworNzgwOSBkMWFjNTFiODcwZTIxOGMwNDc2NjIzYTFlYzkxOWZlOGVlZWRlOWVmIGxlZ2FjeS10cnVuaworNzgxMCBlZTkyNzViMGY1YzgwYWY5ZmVjZDdjZDAzODMyMWQ5MmRlYjUwZmNlIGxlZ2FjeS10cnVuaworNzgxMSA3NDZmNjg3YWNmYzFhZjUyMzFkOTVmNDBmNTQ5YjkxZjI3NWIwMjJiIGxlZ2FjeS10cnVuaworNzgxMiAxNjZjMjIzMjkyMWFiZmNlOGJhY2NkNTNiZjczNjY4NjFkOTAxNDI5IGxlZ2FjeS10cnVuaworNzgxMyA2Nzk5NWJjMTdmNjI1YmMwYmNiNjMyYTM4NzE2OTE1OGZjMmU2ZTM5IGxlZ2FjeS10cnVuaworNzgxNCBiMGEzMTQwY2M5YjFhZGIwN2JmMjNhYmFiZGM5OTE1NWJkMzJkZjhiIGxlZ2FjeS10cnVuaworNzgxNSBkYjY3M2U5OGYyOGRhZWViMmY3MTIxM2NhY2ZlYzUyMTQ4N2FlNjcyIGxlZ2FjeS10cnVuaworNzgxNyA2N2U1MjM3Y2UxNDE4YjM4N2RhMjIzZWUzMjQ1MTYzMTVkNTIxNWM4IGxlZ2FjeS10cnVuaworNzgxOSA2N2EwYjVhYWFlNDMzYmE5ODBlZmFiYmI3NTExMWI0MjgyNDFkZjMxIGxlZ2FjeS10cnVuaworNzgyMCA0YTU0MWJiMGM1MzQzM2M3YWEwOWI4Y2JiM2I2NTU1ZWIxNjIzMzc4IGxlZ2FjeS10cnVuaworNzgyMSA5Y2EyNzE4OGRhMjMyMzIyZjY3MDExYjM1YzIyMmE0ZjAwZTNlNTQ4IGxlZ2FjeS10cnVuaworNzgyMiA1YjJlZDYwODFlYjk0YWUxOWY2MzZkODUyYzAyMTczMmI3YWU1NjM1IGxlZ2FjeS10cnVuaworNzgyMyAzMzlkY2I5YTI4MjU3MGM5MzFmYTY1ZWMxZWRlMTU4NjBmNDBlNWE1IGxlZ2FjeS10cnVuaworNzgyNCAwMDYxZjRlYTk3YmU4ZWMzNTIxZGM5Y2QxNDYzYTZjNTAxMjgwOTYxIGxlZ2FjeS10cnVuaworNzgyNSBhZTAyZWQyYWFjM2Y2YzZhNTExYjUyM2UxOGI1MGNmOWY4ZjZiZDExIGxlZ2FjeS10cnVuaworNzgyNiA2YWIzOTJkN2E1MmZjZDYwNzM3NGVmY2YyY2ZjNmZkOTJmZDk5ZDM0IGxlZ2FjeS10cnVuaworNzgyNyA2ODhjM2ZkNDJjYTYyZDU2MjExMTA2ZDE1MzAxZTg5Yjk2Y2QxMjA1IGxlZ2FjeS10cnVuaworNzgyOCA5OTljMTk3ZGE1N2NjMTZiZjU5NmYxZWY3MDJlMGMyNTM5YjI1ODBlIGxlZ2FjeS10cnVuaworNzgyOSBkNTc1N2FhZDFhNGZlYTc3OGUyNGMxYmE1Njc1ZGFlZmVkYzM4NzI5IGxlZ2FjeS10cnVuaworNzgzMCBkNDBjZDkxMGQ2ODRmMGViNzdiZTNlMDc1NmQ0YzRmNDU0M2VmNTdjIGxlZ2FjeS10cnVuaworNzgzMSAyYzBiMTAxNjVmN2VjYTQxOTZhZTE0NGIxZDY4M2JkMjZjMDRmMTVlIGxlZ2FjeS10cnVuaworNzgzMiAxNzkxNjhlMTdiZmUyNWM1NzcyNGQ5ZTJkYmUyMDMyMTcyODA5NDYyIGxlZ2FjeS10cnVuaworNzgzMyA0NzM2MmZkOTA3MWJjNzkwOWI3MDFlOTc1Nzg0MWEzODQ1ZWZjMTNmIGxlZ2FjeS10cnVuaworNzgzNCBiYzJlMzMzNDA0OGUxM2ExYWMzNTZmODgwOGJhZjcwYWVmZjZlOTk0IGxlZ2FjeS10cnVuaworNzgzNSBkYjQwZGJhM2Y3OWE3ZDUzMDMxNDQ4MDZjYzMyYTZiOGEzY2NhODE1IGxlZ2FjeS10cnVuaworNzgzNiBlZGVhNGYxZDYzZmQwMTU1NDNjMWJjNmNjNGM1NTFiNTk4ZDNlZjA0IGxlZ2FjeS10cnVuaworNzgzNyBmODU4MDM4YjY0YzI2MDY1MzljMmZiOGNiNDA3MjQ5YzczZjk5ODdhIGxlZ2FjeS10cnVuaworNzgzOCBiMWMyYjc5YWE1MWY4NWM0OTBkMTEyNTQwNWZlZWIxMzQwMDhlNDUwIGxlZ2FjeS10cnVuaworNzgzOSA2MWU0MWIyYjFiNjlkNDg4YjBiOGRiNDIzMDBhNzMwYWZjMTU1NWMxIGxlZ2FjeS10cnVuaworNzg0MCBjYzU4NmJkYTYyNzU1MjVkNjc1OGUzMzE4YWNhMjZjNWViZjc4YzE0IGxlZ2FjeS10cnVuaworNzg0MSBlNGFmNDE0ZjVmODkzYjVkOGM2YWUwOGVhMDExZGVmYmQ5NWQxNDgwIGxlZ2FjeS10cnVuaworNzg0MiBiN2NhOThjNmRiYmQ2OGE3YmEzN2MzODRmNTUxNzZiNzc2ODhlYzE5IGxlZ2FjeS10cnVuaworNzg0MyA4NzMxMzMzM2FlM2ZjMzczYmU0ZWM4ODE2MGRiMzQxN2Q0ZWUwZjFlIGxlZ2FjeS10cnVuaworNzg0NCA4OTgxNTMzZTZjYzFhMTI3YWFiODAzNTIwZTUxNDA5YWI3MDIxMjA4IGxlZ2FjeS10cnVuaworNzg0NSBmMjEzMmQxZjY2YTYyOGY1OWM1ZWZjZWQ4MTUwZTZhMWE5Mzk5NWYyIGxlZ2FjeS10cnVuaworNzg0NiAzY2ExNDUwMzE3MGNjOWY5YjkyZmMwODc1ODYwMmJiMjcxNjFmYWU5IGxlZ2FjeS10cnVuaworNzg0NyAxZWExZjAxOTI2OGQ5ZjI3MDc0NTc5ZDcxNWZjYjI5NjYxNjZmODBlIGxlZ2FjeS10cnVuaworNzg0OCA0OTNhMzRkY2E1M2VkZDcyNTQ2Mjk5ODU2OGE3NTI1NTIyZDMwZGI3IGxlZ2FjeS10cnVuaworNzg0OSA0MjQ5MjJhZmMxYmI0MGU5ZjUyMDIwOWY1Yjk0M2Q0NmE4OTMxMGM4IGxlZ2FjeS10cnVuaworNzg1MCA1ODgwMzg0ZDdjNzE0OGI4YzQ1NTEwMWY3NGQ4MDU3YTYzMGExMTJiIGxlZ2FjeS10cnVuaworNzg1MSAxMThiZWVmOTE4NzM2ZDVmODYyZGEzMDkyYjEwODFmMTBiYjg3NWFiIGxlZ2FjeS10cnVuaworNzg1MiA3ZjkwYTY3MWNjMWRiOGE4MTE4ZmFmNmJhM2M0YmI5NDZmZDIxMjc4IGxlZ2FjeS10cnVuaworNzg1MyA5OTgwZmFlZWI3YTUxM2RkODI1MzIyZGMxY2VjZGFkOGI0YmM5MzRmIGxlZ2FjeS10cnVuaworNzg1NCAwOTU5N2E0MjMyMjdjZTMwNjZlZDI3M2E2ZmZkNjFmYWU1YmNmNjc4IGxlZ2FjeS10cnVuaworNzg1NSAzMTllM2VhZWNkZjRmYjc5MDRjMTVhNTAzMjk4Njc5ODA3ZDI1YTBiIGxlZ2FjeS10cnVuaworNzg1NiAxYzlhODRlMDk4MWQzNThiYTlmMDM4MGM4MmU3MTA2NzdlYjE1NjQzIGxlZ2FjeS10cnVuaworNzg1NyAyZDRjNmNiYTAxYmYwMDVlNGJmZGMwYmUyYTFjYWEzZWMzM2JlMTFlIGxlZ2FjeS10cnVuaworNzg1OCAzMzlkNDEyOWQzZjdmMTVhNDg5ZTE2OTg1ZWIwMTBlZjQ0MzA0YmZhIGxlZ2FjeS10cnVuaworNzg1OSAzZjU1OGEzMmM0OTgwMDAzNTI0MGVhOWMzOTBhN2ZkNDljYmNlZTRmIGxlZ2FjeS10cnVuaworNzg2MCAzYzVmY2Y4YmY1MTg5NjFiYzRiYTg1ZmIyZTAwZTBjYzhmOWYwZWVhIGxlZ2FjeS10cnVuaworNzg2MSAzNzE0YjMyNTgyNmQ4OTdjZDE2ZTc5MzRmMjQ5YTkxOTUwYTMxMmJlIGxlZ2FjeS10cnVuaworNzg2MiAxMGU3ZGJhMDFkMDUxMjFmZGExYWRhNTRkYWZiZjMwZjc3ZGM2ZWI3IGxlZ2FjeS10cnVuaworNzg2MyA0M2M1ZTFmOTE1NGU2ZDdhOWIzMmViYjZiMzRkOTc4ZTM2MGNkNDliIGxlZ2FjeS10cnVuaworNzg2NCAwOWM1OGIxNzQ5ODk5MTAyNzA5ZmQxNjkxZTQ1NWQyNWNlYjI1YTZmIGxlZ2FjeS10cnVuaworNzg2NSAxM2EzMGNlYThkYmY3ZDI4NWZjN2NlMWYzNDAwZmU0OGY3MDViMGJiIGxlZ2FjeS10cnVuaworNzg2NiA1YTk3MDY5NjVhNGVjM2ZjMTM5MGNiYjZlYmZiM2YyNjBhODQ4MDkxIGxlZ2FjeS10cnVuaworNzg2NyBiMjRlODRhMGYzMGIzMmFjYzM0MWJlNWIzMDIwY2U4M2VmYTlhOTExIGxlZ2FjeS10cnVuaworNzg2OCBlOTJmMTgyZDc3MjY4Yzg2Yjc5NDkyNjE2NzA4YTczZDM3MWM5NTY4IGxlZ2FjeS10cnVuaworNzg2OSAxOTRkMjZkZjZjNTAwY2ZmZDJmYzE5ZmIwNDUwN2Q0MWYxOGRhYjRlIGxlZ2FjeS10cnVuaworNzg3MCAzMWUzOTk2MzY2NzVmZDQxNDEwYzQ3NTIwZDk3NWEzNzViMGZhMWU4IGxlZ2FjeS10cnVuaworNzg3MSBjMmZiOTc2YmVjZWIzOWRhZDIwMTQyYzVjY2VkYmU5YTc5Y2JjMjAwIGxlZ2FjeS10cnVuaworNzg3MiAyYzgxZDdkNjhlZDNhYWQzYzY3ZTc3NTlmZDE0YTExZDM5NDNhZTEwIGxlZ2FjeS10cnVuaworNzg3MyBkMTQ0Nzk1MGZhMDQ1NjUyZmY1NWJlM2EyYWMyNzVkYTA3MDY3NmM2IGxlZ2FjeS10cnVuaworNzg3NCBmZDdlYjA1OGNlNWRiMzA0MThjNTFkZmI0NmM0MzA2Y2EzZTIxZTA5IGxlZ2FjeS10cnVuaworNzg3NSA3MmIyMzFlZGZiMjUyMzk1NTI5OWE4OTgyNDI1OTQwM2ZmNDUzMWY1IGxlZ2FjeS10cnVuaworNzg3NiAwYTU5OTc3M2E5Y2NhNGZlZGRlN2QwNDNkNzczMDk2NWUxYzQyZTk2IGxlZ2FjeS10cnVuaworNzg3NyA3OTE4ZTg3MzkxNDhhNGM2MGFiNjU3OTRiNzZjZWFhODhmNmRiOWU5IGxlZ2FjeS10cnVuaworNzg3OCA0ODdhZDAzMjdhZTE4MjhiMjdkZmJmYjNiYmVjNzViN2U0MTRmMGNlIGxlZ2FjeS10cnVuaworNzg3OSA4ZjBhNzkzYmIwZTI2OTU3MWM4YmMwZWEyZWYzYTZiZTE3N2E1NzYwIGxlZ2FjeS10cnVuaworNzg4MCA1MGE5YzE0MDk0NmM0ODlmZjIzYTJkYjNlMTMzYzQ0MTljNGY2ZDhkIGxlZ2FjeS10cnVuaworNzg4MSAzNzgwY2NlMTRmN2QwMmNkZGMxZmNkMWI5NTI5NzY4ZGUxN2E2M2I1IGxlZ2FjeS10cnVuaworNzg4MiBiNzg3MWNhOTMwYWQ1YmM1MWE5MDllZTc1ZWMyZTVkYTEzZTA3ZjRkIGxlZ2FjeS10cnVuaworNzg4MyBjMjI1NDc1NDE5MmMyZWFmMTVkZDJhZTQwMjVlZjhlMzM3M2I3YmIwIGxlZ2FjeS10cnVuaworNzg4NCBiN2EyM2RiZTAwNjVlY2Y3ZjgxMGI5NzQwYTczOGE1MzkyYmRlMThjIGxlZ2FjeS10cnVuaworNzg4NSA2NDgxMjRhNTg4MGEzMzI5N2E0NWVjYjg4NDFjNDdlMDg3YTM2YWQ4IGxlZ2FjeS10cnVuaworNzg4NiAxOGQ2YTVhYmQzZjgzMjI3MzZjNWZjODUxMTRlMGMwMjg4NGE3OWYyIGxlZ2FjeS10cnVuaworNzg4NyAzYjJmZGEzMWJmMWJhOGVkYzUwNTc3MGVhZmQ5NzI2ZDQ0NGI2Y2E0IGxlZ2FjeS10cnVuaworNzg4OCA2NzE3MDczZGU1ODY1YTcwNjFkZTBkMDNlZDM2YmZkY2QzZDEwOGZiIGxlZ2FjeS10cnVuaworNzg4OSA3OGQzOTgwMDViYWIwMmE1NDI4NmY5MGJjOWZmMDViYzMyNGFmN2RjIGxlZ2FjeS10cnVuaworNzg5MCAxMDI2N2ZkYzc1MzExNmMxZDNlMjU5ODgyMDMzNWYwYjc4MTcwZjY0IGxlZ2FjeS10cnVuaworNzg5MSAwMTNmZjY5NTE5MDlmMGViNTViNGU3NzE5ZTM5NWIwMDE3ZDkzMGMwIGxlZ2FjeS10cnVuaworNzg5MiA1OTYzODBhNTY3ZDIyMzk0Y2EwMWVmZjA5MDU5MzRjMzRiNTJjZmVkIGxlZ2FjeS10cnVuaworNzg5MyAxNzIyNTRkNDFhNTFkYWZiNzQ2ZDIxNTk2OThhYmQyNmYyNmJjMjI1IGxlZ2FjeS10cnVuaworNzg5NCBhYmYzM2I4ODJjZmRjZTgzODc0Y2ExNjQzMDNkMzM0MmJiZmM5MGFlIGxlZ2FjeS10cnVuaworNzg5NSBhMWI2M2M3M2FkMWRjNTE0Y2IzNmM0MDBjYWEyNjc2NjQ1OTE1NWMwIGxlZ2FjeS10cnVuaworNzg5NiBkOTk0MWE4OTVjMDIwOTQxMTU2NGYyZDRmMDQxNzJmZWFlYWRiMDVlIGxlZ2FjeS10cnVuaworNzg5NyAwMTRlYTlkNzJkMDNjZmU0Zjk3ODk3MWI3MWUzZDE1NDJlZDAwMzRjIGxlZ2FjeS10cnVuaworNzg5OCBkYWNiZmFhMDdjNDA3YzI2YWFiOTg0MmNlNGYwZWUxMzI0YjM4ZmY2IGxlZ2FjeS10cnVuaworNzg5OSAzNzMzMmI2ZjYyODBiZWQ0NzJiZDI5ZDkzOWNmZTVhNWNhNGExYjVhIGxlZ2FjeS10cnVuaworNzkwMCBiY2NiOGQ3NDI5NjQ3Yjk0MWU1ZTdlNmY4N2I1MDQzNjk4ZjVkM2RmIGxlZ2FjeS10cnVuaworNzkwMSA2MzhhOTliYzhmMmNjZjdiOWJhNDBhMjQ5ZDA2MjQ3MmUyYWY2YjgzIGxlZ2FjeS10cnVuaworNzkwMiBhN2UzMDliMTc0YjI3MjVlYmQ1MzI5OGRlOTUxOWEyNDI4MTg4MzBkIGxlZ2FjeS10cnVuaworNzkwMyBkYWI4NjNiNzlkZWJhYzMzODllYjRlYzdlMzMyOWJjYmM5ZTRkNjRmIGxlZ2FjeS10cnVuaworNzkwNCBiMDAyMzMzNTU4OGNlZjdmOTdhOTJhNzI5ZTA5YTRkYWQ1M2RkNzkzIGxlZ2FjeS10cnVuaworNzkwNSA1ZTJjMTdiMzc0ZmIwZWFhMjcwMWRmZjhhNTE5N2QyMzc5MGVlZDEzIGxlZ2FjeS10cnVuaworNzkwNiBhYzIzNWM5ZTY4ODFmMzM4Y2E2MDlmZWNhNDgwNGZlMmQyZDU5Y2YyIGxlZ2FjeS10cnVuaworNzkwNyAyMzI5Y2NmMGU1ODExMWNmMTY4OTFkNTZiYWQxYmUzMjMzMWFiNTc5IGxlZ2FjeS10cnVuaworNzkwOCBhNTZiNDRiMzU1MDU3MmZkMzUyOTk5MDA3NDg1NjFlOTFmY2M4NTMwIGxlZ2FjeS10cnVuaworNzkwOSBjZWU0YzQ1YzU2OGY3NjBmYWJhMTk2OWRlZmZhZmI2ZGZjNjIzODc0IGxlZ2FjeS10cnVuaworNzkxMCBhZDQ3NDFkNTQzMWNjMWJkMGJjZWQxY2IzMWEwMTgwYTIzNjQ2NjY2IGxlZ2FjeS10cnVuaworNzkxMSAzZDc4OTAyMzZhNGU1OTFiMzhjMTMzOGVmMzc2ODI0MDYwZDI0YmMxIGxlZ2FjeS10cnVuaworNzkxMiA1OTFjNjQyMGYxMWQwMjVkY2QyYzkzMWIwYmUxNzRlMjU5MmEzNzhlIGxlZ2FjeS10cnVuaworNzkxMyBjZjgxOGI3MGRhM2U2NWQ2NDFmYmY5YjI0OWMyMDU4NjljY2VhMTg4IGxlZ2FjeS10cnVuaworNzkxNCBjMmRhZTJiMWExMjM1ZDFkMjJkNTcyMWRiYTIxNWNhNjc0OGNiZTNkIGxlZ2FjeS10cnVuaworNzkxNSBlOTI2YzMzMWViYmYxZDMxN2Q3ZTcxOTUyY2YwMzU3MTEwZDVjMTIyIGxlZ2FjeS10cnVuaworNzkxNiAxZGFlNWIxYzhkYmExMmE1MzhmNmE4MGRmMGViYWMxNDMxOTcxZTFjIGxlZ2FjeS10cnVuaworNzkxNyA5ZWFhMmNhZWQxYzNiODQ1YTBmODk4ZjA1ZTRkNjE0MjI4YTYwNzZhIGxlZ2FjeS10cnVuaworNzkxOCAzYzZkYjcxNjViYzNkNjA0ZGNhNGY4NjlmZmFmOTRkZWI5NjY2M2Y1IGxlZ2FjeS10cnVuaworNzkxOSA0NTc5YTc3MDE5NDlkYWJkYzQ1ZmY5ZDA0MDI2ZjcxNDM1ZGE4OGVhIGxlZ2FjeS10cnVuaworNzkyMCA4ODY4ZTlmMTM2NTdkMzBjOWMyMzcxMGYyZWE0YTVkZDBmZDc4MGUxIGxlZ2FjeS10cnVuaworNzkyMSA4N2M0ZjA1YTE3ZTUxZmM2MDcyNGE2ZTk2N2M3ODk5NjQ1MDRkYmNiIGxlZ2FjeS10cnVuaworNzkyMiA4ZjNlMTYxMjM2MDA0OWUxNDZiNzE4NDA3ZDc4NGRjZTcxYjA5ZDQxIGxlZ2FjeS10cnVuaworNzkyMyA1MTVlZDczZGE1YjE0YjdiNWFlZTg4YTExOTY5ZTU3MTk0OTJmYThkIGxlZ2FjeS10cnVuaworNzkyNCAwYjFlNjk1MDg5MDczNmQyNDk0MTMwMWJjYWVhNmEyNzRiZmFiYzAwIGxlZ2FjeS10cnVuaworNzkyNSBlOWY2MTU4ODQ2YjE2YjdjMzgwODMzZTQ1ZTliODM0ODE3YTA2Zjg1IGxlZ2FjeS10cnVuaworNzkyNiAwMWYwMmJmMmI0NDE2N2I2ODQ2YWEzNDMzODUxYTI2YWJjMDcwNGNmIGxlZ2FjeS10cnVuaworNzkyNyA0YTgwZTZjYTdjZDM1ZWY0N2UzMDJlN2EzYzMyNjgzMTJmMTRmZTk2IGxlZ2FjeS10cnVuaworNzkyOCA1YWJkZGU5OWM5ZWFkYWE5ZDgwNmJmYWU4OWUxYmMzOWY2ODc4N2EwIGxlZ2FjeS10cnVuaworNzkyOSAyYTg3NTE5OWE3MWU4NjAyMmEzZWJjMDg4YTNmYThlM2MxNjkwYjBiIGxlZ2FjeS10cnVuaworNzkzMCA5YzZjMDdkNDQ5ZGY1NDAzNjIyOTQ5Yjc5ODhjMmE2NmRiM2NmNGZkIGxlZ2FjeS10cnVuaworNzkzMSAwZjZjOTZmNDhlMWJhNDc2ZTU2NzkyNjgzYjc5ZWU5YTgyNThkYjdiIGxlZ2FjeS10cnVuaworNzkzMiA2NjM1NzlhM2M3ZmViNTQwZTdmYWMyMDQ0YmMxMTA5YjQ4MDMwMTRiIGxlZ2FjeS10cnVuaworNzkzMyA3MzE2ZWVjYjFlNmIzMmU2MThjYjMwNDNmOTFlYmFiOWVjMzU0NzViIGxlZ2FjeS10cnVuaworNzkzNCA1MzQ0MDA5NzExMWZlZjhlMzllMGU5ZTVjNWY4NzIxMDdlYTdkNzQzIGxlZ2FjeS10cnVuaworNzkzNSAxMzA1MmRjMmQ1ZjZlNmU0YjkyNDZjMTJkMGEzZjNmMzcxYzM4NTA3IGxlZ2FjeS10cnVuaworNzkzNiBjNWQ3YjZmY2VlMDNkMjI1ZWNkMzdkNDMxNWYxYWRhMmQ3ZmFhYmJkIGxlZ2FjeS10cnVuaworNzkzNyBhZDZjNDI3ZGNiZDllNGQ1NzRkOWIwODA5MDRlODk2NGZlMDExYmFjIGxlZ2FjeS10cnVuaworNzkzOCAwZGVkNjNiY2Y1ZGUyOWVkZDk2OWVkZjEzNmM2YWZhMDViN2FhMjE2IGxlZ2FjeS10cnVuaworNzkzOSA2MGY2NjQ5ZmQyMzEwZGViYTNjMjM2ZGNjNmZmM2ViYzg3YmZlZGQ2IGxlZ2FjeS10cnVuaworNzk0MCA5NTI4NTFkOWNjZTIwZjhkYzFlMzg0OWFlMGM5NGMzNDYxMGRjOTMyIGxlZ2FjeS10cnVuaworNzk0MSBiMDU4NGJmN2I0ZjUyOTk2MmQ0OTM4MjA2MTNkMjhhNTI0MjM1ZTFjIGxlZ2FjeS10cnVuaworNzk0MiAwOWU2YjRlMzQ1MjNiYWUyMGU1ODI2NjA4YTEzMzhiZTAzY2ZiODAyIGxlZ2FjeS10cnVuaworNzk0MyA0M2M4NmM4MTgxZDQ1NzY2MWQ1ODBlOTI5OGE5NjJlYzNiODlkNzFhIGxlZ2FjeS10cnVuaworNzk0NCA2NGI2OTMxNTE5NTZkMjFhZDVhODNmODVhMmQ4ZmEyNTkwMTMyMzEzIGxlZ2FjeS10cnVuaworNzk0NSAwOGU4NmQ0MzkyODFkZjA1Njg3NGU2YmFkYmEwNDUzYWM3YTBkNzNjIGxlZ2FjeS10cnVuaworNzk0NiA0N2U4MWIyMTY5ZTk1NGVjMjVhZjRjNTE3YWI1ZDZlMWIxZGYzODI3IGxlZ2FjeS10cnVuaworNzk0NyBkOTAyOWE0ZTBmMmFjNzdjNmZjODEyOTE5MWM2MGM1ZjMwNDU5YTdiIGxlZ2FjeS10cnVuaworNzk0OCA4ZTVkNmQzMTAzYWVmODNlOTcyZmMyMjQ5YjgyMzg4MTdiNGZjYTk3IGxlZ2FjeS10cnVuaworNzk0OSA4NGRiMTU0ZDViOTNlOGQwYmUwNTYyNTU4MGJlYmU4MWEyYTZmNTk5IGxlZ2FjeS10cnVuaworNzk1MCBjM2Q0YmZiOGNjZGYwMWQ2YTM1YmQzMjljYjRiNDc2NDNiOTE5ZTczIGxlZ2FjeS10cnVuaworNzk1MSAyNjY2ZTkwNGU0MGIwY2NkNDhlOTJjMjEzMjY2N2NjMGE0OWU3YWU3IGxlZ2FjeS10cnVuaworNzk1MiBhODZlYTJjY2VhZWNkZDViMmU3NTY4Yzc1MWQ2ZWNhZDE4NWMzMjliIGxlZ2FjeS10cnVuaworNzk1MiAwNjJhZWQ4YTRjZTJjOTFjODFiODBlMjlmMDJmYWZmMWNmNWE3NjFiIGxlZ2FjeS10cnVuaworNzk1NCBmNDRhNTZlNjk3ZmIxN2NlNTZiODZjZjQxOWI2MDc2YzI2OGNjMzQ2IGxlZ2FjeS10cnVuaworNzk1NSAyNjZjOWFhOGMxMjc3NjE0OTFiZTg4ODFhMDMxZWQxNmQ0OTNkZGVlIGxlZ2FjeS10cnVuaworNzk1NiA2ZDUzZWJhZWMwMjE1OTFiMzM1MDk2MGIxODhhNTNiNmQzZmM0ZGMyIGxlZ2FjeS10cnVuaworNzk1NyBiOTYxNzZjOWE4NTNiNjlkMjAxZjBiNTAyMGZhNjgzOWE0ZTUwNTc0IGxlZ2FjeS10cnVuaworNzk1OCBmMWFmYzU2OTBiMmFiNWYyMDFlMzA0ZjUxM2RmOTk5NGJiNDc2ODI1IGxlZ2FjeS10cnVuaworNzk1OSA2ZmEyOTc1NmVjNmEyOTQyNzQ3YWQ4YTUzOGFkMGRmZDllZDI1ZWE1IGxlZ2FjeS10cnVuaworNzk2MCA3MzUwOWVmYTcyNGJjY2VjZjk4NTg3ODQ2NjczYjczYzc1MDEyMTM1IGxlZ2FjeS10cnVuaworNzk2MSA1OTVhNWZlMTQwZDQwYzI3NjMxMGFlNWRlYTkwMzU2MTBkYjY4YmYzIGxlZ2FjeS10cnVuaworNzk2MiA0NzhjNjhlYTk4Mjc1MWEyNTJjMjZiOGFhOWZmMTdiZGE2YTg5NDIwIGxlZ2FjeS10cnVuaworNzk2MyAxOTVkNWFhMTk1MWUwM2MyMzlkOGY0MDU4ZTVlOTk3ZmNkZjk3N2FhIGxlZ2FjeS10cnVuaworNzk2NCBlZDAzOTQ0ODQwODJiNjJjOTA0ZjZjNjAxM2ExYmEzMTk3NGVjZTI1IGxlZ2FjeS10cnVuaworNzk2NSAyZTg5YzU1ZDlhMjk1YTJlZmJjNDc4YjMwODAyZjU5ZDI4YWQwNDA1IGxlZ2FjeS10cnVuaworNzk2NiAyZDEzMzI4MDEyOWY3MmM5NzVlODMzMmRkMDg3MWU2NTJlZmY3MGM3IGxlZ2FjeS10cnVuaworNzk2NyBjMWI0MGIwNTc3ZDE5NGYxZTFhZWQzMzA3NzRjNTg2MDFkZjRhZDVlIGxlZ2FjeS10cnVuaworNzk2OCA1MDZiYTdkZjQyZjA0NjMxYjUxNGI5NjVkNjZmNjU2YTE0ZTg4YjdiIGxlZ2FjeS10cnVuaworNzk2OSBhZjFhZWE2Yjk2OGZkNmRhY2MxMzAzYTU1ZmRiMDJkYTVlMjU3ZTU0IGxlZ2FjeS10cnVuaworNzk3MCBlZjkzZDUxZGFiMzYyZGQ1OWJiNTM1ODA3YzQ4NzYwYTY4OGYzZTI2IGxlZ2FjeS10cnVuaworNzk3MSBiZmQwMzE1NDA4OGI2YWMxMTBmMGUwYzY1OThmYmE4YjNmMjg0NDJkIGxlZ2FjeS10cnVuaworNzk3MiBlNjUyYTc5M2Y0ZTcxMmY0NTdiZjU1NjE4YWNiZjZjZmVhNTI1OTY0IGxlZ2FjeS10cnVuaworNzk3MyAwYjE5NDY2MDBiZGRlZDhmMWQwYzg1MWFhMDllNGNhYjRjODk3YjljIGxlZ2FjeS10cnVuaworNzk3NCAzNzdmODY5NWE5ZmJiMjAxZDA2N2YzMzdhMGNkOTM0YWVlOGJlMDY3IGxlZ2FjeS10cnVuaworNzk3NSA5YTEyMjU5MjM5MTgxZjhhMzQyOGFjYWVlYTJkYzZmMmM0NjY5MTVmIGxlZ2FjeS10cnVuaworNzk3NiBiOTA1MzcyZWRkNGZiNDdhN2UwODcyN2I2ZDk2YzBjNGRhMDA0MWE2IGxlZ2FjeS10cnVuaworNzk3NyA4MjE5MTJmZDk2NWExZDBhNGE2ZWQwOTVhZjRhMDU4ODdiNjE0NTE2IGxlZ2FjeS10cnVuaworNzk3OCA0NjYwZmZiOWU0ODNjNzU4NzllMzQ1YzE5NTViYTc0ZjhmYzczYzc2IGxlZ2FjeS10cnVuaworNzk3OSA1MDU4MTY2NmM4NTRmYjEwOTA2ODFmMWY0OTY0Mzk3NmM0NWFmN2Y5IGxlZ2FjeS10cnVuaworNzk4MCBiYTAwNWU0ZGI0YzUzNDM2ZjIzNzA2YTgyYjY5OGIxYTQ4NWM0MWFiIGxlZ2FjeS10cnVuaworNzk4MSBjODhiOWI4Njg5OTUzMTQ3MzhhMTE0YjYwY2E1MDRhOTMwZmMzNzE2IGxlZ2FjeS10cnVuaworNzk4MiA0N2ZhMDA4Nzc5MjQyYTI3OGFjMmQ0NzU4ZTQ5NzQ0Mzk3ZDg5MmNlIGxlZ2FjeS10cnVuaworNzk4MyA1OTQzOGQxOWQ2MDM2NzVmZjc1MDhjZWNmZGRhODM2Nzg0NGRkYmIwIGxlZ2FjeS10cnVuaworNzk4NCA1NmI0M2E0MGE1Mjg1NTcxNzUyMjM1Yzg3YmJkN2YxMDVlN2MyZTJjIGxlZ2FjeS10cnVuaworNzk4NSAzNjQzZjE5ZDVjYTFhNDAwNjlmMzM4YzgzYmFjOTRhY2M2NjFhYTg4IGxlZ2FjeS10cnVuaworNzk4NiBkZGVkZmE1NTY4NGE2MGExMWMzNTlmY2IyMjgyZDM4N2VkY2JmNThjIGxlZ2FjeS10cnVuaworNzk4NyA3MjkwYTkzMGI0Yzk1N2M1YjU2NDE5OTlmN2Q3ZTEwZTUxODA3NzBlIGxlZ2FjeS10cnVuaworNzk4OCBmYjM5ZDI4ODY2NGI1MzllYjRmYTBkMTE0ZjhmMTUyNzMwZDI0NTRjIGxlZ2FjeS10cnVuaworNzk4OSAxNDlkNzQyYjA5NzFjZTFjNWMxODQ4NTQ5ZDc3OWFmZTgwMmI2YTlmIGxlZ2FjeS10cnVuaworNzk5MCA0ZGQ1MDk1YzNiNjdlOWY3N2Q4OWNjYTYwMmUxYzNhOTk5MjM4ZGFjIGxlZ2FjeS10cnVuaworNzk5MSA2NGUyZmQ4ZjFkNjg0OTBkZmI1NGNhMWE5NzZhZWNlOGM1NzNiMWRlIGxlZ2FjeS10cnVuaworNzk5MiAwNjRjODY3MTljYTdiZGZjNjE3YmNjZjczMjBjYTA2MmI5MDdhZTNlIGxlZ2FjeS10cnVuaworNzk5MyAyNDU2ZDhmZjlmYTgyM2UyNjQ2OGUwYmIzNTJmYjE3MjcwNGY0NzgyIGxlZ2FjeS10cnVuaworNzk5NCBjYTEyM2YyNDBiYTljMzY4MGJhNDg5ZjY3MWZkODNjZGI5ZDM4YWVlIGxlZ2FjeS10cnVuaworNzk5NSA1NzZiN2Q5MjdhZmI5MDljOGQ0YjMyY2ZhOTAwYjk4NTY0ZDU3OWVjIGxlZ2FjeS10cnVuaworNzk5NiAxMzgxNTI3M2UxNzFiYmExMzU0ZjMzNjNkODU1MWM4MmQ2MWUzMjIwIGxlZ2FjeS10cnVuaworNzk5NyAzMWQ2NjE5NGE3N2M5ZmZjYjg0NjY4MDllYTZmOWFjODJkNzcwOWU0IGxlZ2FjeS10cnVuaworNzk5OCA4ODAzYmY0MDRiNjk0NjY1NTYwYzE1N2NlYmExYzUyY2E1NWY5NTg0IGxlZ2FjeS10cnVuaworNzk5OSA5ODZjMzA4NzY1YWU5NjdhYWQ3NWY4NTAyMTA3Y2Y1MjNhMTU4M2ZmIGxlZ2FjeS10cnVuaworODAwMCAwYmE5ZjkxNGE3MDg4NzZlZTAyZTExMzEwNGRmMGZkODcwYTgxYWUwIGxlZ2FjeS10cnVuaworODAwMSA5YTIzN2E0Y2YzYTFmNmY4NzZkNjUwOWZhN2E0NGVlYzZjNjg4ZGZiIGxlZ2FjeS10cnVuaworODAwMiA4NTgyZjc0YTFkMjM1ZDNkMzM3NmEwMmJkYWViZTQ1ZWQwYjM3YWE2IGxlZ2FjeS10cnVuaworODAwMyBiYzlkNTQ1MjM4NjI4MDJiN2U5OTE1YjhmYjNjMDYzNjE2NDk5ZWJkIGxlZ2FjeS10cnVuaworODAwNCAyNmVmZjY5ZWQ1NTIzY2JhNDdmNzgyYjhhNzFmZDIxOThjNzljZGNlIGxlZ2FjeS10cnVuaworODAwNSAzMjU4NDYzZjFjYTI3NWUyNjZiOWQ2NzRiMTQ5NDE2MmUxNTZhYTZlIGxlZ2FjeS10cnVuaworODAwNiBmNWRlY2M1ZDcwNzNlZjlmMjU5OGQyODY5ZTIzNDUyZGZiZjgwYTM2IGxlZ2FjeS10cnVuaworODAwNiBjOTQ5OGFjOTg4MzcyNTc1Y2Y3MDI4Yjg2Mzk1YjkwMGM5YjBhODQwIGxlZ2FjeS10cnVuaworODAwOCA1NDU0ZmU0OTI1ZDM2NTY1YjJiNjhiZjQyZGNhZjkwYWViMzUyOWVkIGxlZ2FjeS10cnVuaworODAwOSAzMGQ1NTk4MjcwNDc5NmUxYWM2MTYzOTFkNzNkZjFlNDc5Y2VkNTRhIGxlZ2FjeS10cnVuaworODAxMCA4MjZmMjg5ODViZWFkZjU5MTA1YTQyNTZjNzNmZDdiMzgzMjUwODMyIGxlZ2FjeS10cnVuaworODAxMSA4NGQzY2NhODE0ZmJkMGQ2NTM0OTIxMTM5NjgyNmExZmRkZWRiNGM0IGxlZ2FjeS10cnVuaworODAxMiAyMGMyYjcxNTE4OGVhOTc1YmVjNDgyYzIwZTFmYTNjM2YwZTQ0ZjQzIGxlZ2FjeS10cnVuaworODAxMyBjNmYwNGU5NjU1MDgxODE3Nzc1ZGI0YzEwNDdiMGIwODY0NWM4ZTk4IGxlZ2FjeS10cnVuaworODAxNCBiMWRmOTM4NjU1ZTE1ZDUzOTBiNTY1ZmUyYzMyYjNlZGMwMDEwYjg0IGxlZ2FjeS10cnVuaworODAxNSA0NzJjOGU0Y2M5NzQxZmJlYmZmYWIyNzVjNjNhZWIwNzcxYmI0OWZlIGxlZ2FjeS10cnVuaworODAxNiA4Zjg3MWEwMzBiOGQxNDAyOTg1OTAyM2I5NjZlYTM1NzlmMWE3YjJiIGxlZ2FjeS10cnVuaworODAxNyBhMGNjMDA1ZWNjZDc4N2I0YjE5NTY2YjgwNzE2ZjQwOTJmYmJlMDI2IGxlZ2FjeS10cnVuaworODAxOCBiNTc5YzU5MThmMmNiMzViMGExOWY0NTNlMGYwMjE3YWIyMmZkYWI3IGxlZ2FjeS10cnVuaworODAxOSBjZmMxM2YzZjM4NzY5OWRmYTRiZjc1OTM0OTA0NjA3YWMyNDVmODQzIGxlZ2FjeS10cnVuaworODAyMCAzN2M5MzlmNzBmYWMwMWQwMjYyZTQ4NzY0ZmM3OTU4YTViOTBlMGE4IGxlZ2FjeS10cnVuaworODAyMSAwYmJhOTE0YmY3YjJhY2E1MWFhMzdiMzFhOTYxZjczZDcwMjc3NGJhIGxlZ2FjeS10cnVuaworODAyMiA3ZTQyMjg3ODBmZjhjMWEzNGM3YThkMWNjOGM3ZjI1NGIwYjRjOTA2IGxlZ2FjeS10cnVuaworODAyMyA2YzA3ZDQ0YTcwODEwOGNjNWRiNDQwZDRkZWQ3NTQ2NzAxNzZiMDlkIGxlZ2FjeS10cnVuaworODAyNCA5OGQ0ZTk3ZGFhYzA1NDZkN2ZlNjBkYWIwZGQ3ZjA0MGNiOGY4NzExIGxlZ2FjeS10cnVuaworODAyNSBhMjJjYWYxMjkzNDUzOGU0NDcwY2E4NzliZmY0MWI1YzlkZTVjNDU4IGxlZ2FjeS10cnVuaworODAyNiA1MjYxMGVjZWUzNjdhNzkzOGEwYjQxODM5OWI3YTM3M2FkZjdiOTBiIGxlZ2FjeS10cnVuaworODAyNyA0MzgyMmU0ZmMyN2Q0NzY0MWE0YWRjM2Q1ZWY2OGZiNDc3NmU5MTNiIGxlZ2FjeS10cnVuaworODAyOCAzNDUwOWMwNTI2NmYyMjk4NDE4ZWYzOGQwZWQwNGE3YzhjZWZkYjc3IGxlZ2FjeS10cnVuaworODAyOSAyZGZjNzA3ZDZlNjg1MTk1YmU4NjZlODhjYjdkOThkNjYwODNkYTNmIGxlZ2FjeS10cnVuaworODAzMCAxOGZkMDc4NjliMTNjNDhiOGI1MjdmYjkxNTU4YjNkMzBmZmVkMGZiIGxlZ2FjeS10cnVuaworODAzMSBiNWU2NDhmZGUwOTljOTZmZWMzY2M1OWY2YjE2ZDAxMjAzODE0MGMzIGxlZ2FjeS10cnVuaworODAzMiA5ODlmNGZmNzM0MjkxNWFhMGY4ZWFjNmZkYjM2NTFiZTU5MmNhMTQ2IGxlZ2FjeS10cnVuaworODAzMyBmYTlmYWRhOTE2YjQ1MzAzOWY5OTI3MGJlMWI2OGQ3NjczYzBhYTMzIGxlZ2FjeS10cnVuaworODAzNCA0MzI5ZTQwNzdjZjM5MTUxY2YyYmM2MmJlZDBjM2IyMjdhZDYyMzg3IGxlZ2FjeS10cnVuaworODAzNSBlZjNiYThiOTlkYTJlZmZmYmEzY2ZmYjYwOTkyMjJiY2Q5ZTNlYjlmIGxlZ2FjeS10cnVuaworODAzNiAxZWNlZDFhYWFkNWE4YTY1ZTYzMzBkMGI1YmFlYzI1Mjc4YzU5YWU2IGxlZ2FjeS10cnVuaworODAzNyA4ZWMyOThiMjU1YTIwYjY3MGEzZmFkODJkNzgzM2U4YTVhMjk3MTY1IGxlZ2FjeS10cnVuaworODAzOCA0ZGNmMjZmZTRkYTU5NTFiMDk5ZjVmMGRiZWJmMjhlMGFlYjJiZTljIGxlZ2FjeS10cnVuaworODAzOSAzZjNkMmQ0NzRhY2EwZjVjYTEzYTQ0ZjcxYTI2MGNiZTQ4NDY3MGU1IGxlZ2FjeS10cnVuaworODA0MCBmMWIwMzg3NThiZGE5M2IzM2U1YzhjZmE4MzkxM2JhYzUxZTllMzMwIGxlZ2FjeS10cnVuaworODA0MSA2ZTk0NDI3OWEzMTRmMzAwNDA2ZGYwYmQyZWZmM2NlMjcwNjY2ZmQ1IGxlZ2FjeS10cnVuaworODA0MiA1ZmZhYjY1ZjhkMDUwOTg4YjkwNjg3NDY1MzVmMmU0ZjVmNjg1OTI4IGxlZ2FjeS10cnVuaworODA0MyAxOWQ0YTI4NzQ2NDU0YzM0MTFjMGY2NWIzZGQyNWIzOGJmYTg1NzEwIGxlZ2FjeS10cnVuaworODA0NCA5MzJjZmM1ZmMxMDRiMjRkMTE4ODhiOWVhOTQ2YzM5N2RkYTY4ZDgyIGxlZ2FjeS10cnVuaworODA0NSAxMzlhYjIxZDI2MjliZTQ5OGYxODhjY2Y4NTMwMzkzYjczY2NhZTAyIGxlZ2FjeS10cnVuaworODA0NiA4MThjZmZmM2FhNWQ4YmNjMWI1MDYwMmFjZDZjYTNlNzUzZTMxYzg3IGxlZ2FjeS10cnVuaworODA0NyAxMWUyZTNmZjlmYzdiMTllYmM0MGI5NDA4NTk5ZWQ1NTIyMzhkNWQ4IGxlZ2FjeS10cnVuaworODA0OCAzZTY3OTUzMGFmYzllYzY0YWNlY2JlMGU3MjZjNjZmMDljOTZhNjExIGxlZ2FjeS10cnVuaworODA0OSBiMjMxODU1YTk0NzQ0ZGJkZTIzODQyZGI0Nzc3ZjY1YjY1ZTA4YzhlIGxlZ2FjeS10cnVuaworODA1MCBiZjlmMTA0YWJlNzhhNTVhOWRlNmRmMTU5NzUzOTJiMzYxNjhlMDg5IGxlZ2FjeS10cnVuaworODA1MSA4NGQ3Y2M1ZTYzY2RiNzY1Y2RlMGExOWE4ZjczMmZkNTE4NWY0ZWFmIGxlZ2FjeS10cnVuaworODA1MiA2YTlmMjYzZTJiNDhjYWNjOGI4N2U5MzY3NzlmMWE4MjhiNzA2NTFmIGxlZ2FjeS10cnVuaworODA1MyBjN2Q4MTJlNGFmMGQzZDkzZTM4NDIwYzMwNGRlNWYxYmVmNmQ0OGVjIGxlZ2FjeS10cnVuaworODA1NCA2YzcyYjkxYzhiODNkMWFjM2I0NTFmNTVlMTU3OTAyODExMTVlMjA3IGxlZ2FjeS10cnVuaworODA1NSA5MzdkOWVjMmI1NjA1MTdhMmRhMmY0MmMyZTBhYTkxODVjM2IxYzg0IGxlZ2FjeS10cnVuaworODA1NiA0ODZkNWU5ODkzOGJiYTRkNGJmZTE0NDYzODk4MTQ3MDczZjdlNWJlIGxlZ2FjeS10cnVuaworODA1NyBjZTU5OTczYWNjZGU3ZTA3ZDI5YWNmNGY3NDU2M2MzYzZlMDhjZTU0IGxlZ2FjeS10cnVuaworODA1OCA3ZTJhZDllMzJlMGQ1ZGQ1M2I4ZGY3MjNjMGQ1ZDY5YzU3MjJmNmFkIGxlZ2FjeS10cnVuaworODA1OSA4N2Q1ZDdmYThkMDdlNmI5OTY2NDVmZjkyYjY2NmRhMDZlYzFjZDFkIGxlZ2FjeS10cnVuaworODA2MCBlZGJjZmVkN2ZjN2JmYzg5ZTVlOWNhMWFlYWUxMDQ3ZTJmNDcxNGYzIGxlZ2FjeS10cnVuaworODA2MSA4NWM1MDQzYzkzMTY3N2VjYWJlNTg2ZTg0ZjBjNTY0MTUyZmQ3NWFjIGxlZ2FjeS10cnVuaworODA2MiA1N2RiZGMyYjMwMjI2ZjEwM2EwMWFmN2EzZTU4OWQyODU0MTUzNmJmIGxlZ2FjeS10cnVuaworODA2MyA3ODRiYWZiNDdlMWY2ZGJmNzRiZTBiNjhmYTg4YWMxMTJmZWM1YzI2IGxlZ2FjeS10cnVuaworODA2NCA2YTQ4YTdlNzExZDg2Y2EyMmFhZWI1MDYxMjcxYWJlMDI5YmIxN2QwIGxlZ2FjeS10cnVuaworODA2NSA1M2NkZjk0YjY1MmI4M2U1NjUyZjVjNzEwZTllYjM0ZmRkMzk4MjhkIGxlZ2FjeS10cnVuaworODA2NiA3OTVjYTk3NWQ5NmY4OGUyODNjYmRmNjZiYzU5YzMxMDIxMWE4YmY0IGxlZ2FjeS10cnVuaworODA2NyBmM2Y2NTY4N2U0MjYwZGFkZjdkZGMwOWQxZTY4MTEwNzYzN2FhYjhkIGxlZ2FjeS10cnVuaworODA2OCBkYTQ3NWUxMDdhNjhmNzY4ZGM0ZGEzMWEwYmU4MTc1MGE5M2Y1ODgyIGxlZ2FjeS10cnVuaworODA2OSBlM2Q1MjU4MmQzNjA3ODEwZDVlM2Q5MmFmYzQwNDlkZGQ3NzhkODMyIGxlZ2FjeS10cnVuaworODA3MCA0NTFjN2NjZjM2YjY3ZjJkMWFmOGY0NGMwMDY2M2VjNjE1M2EzMDY0IGxlZ2FjeS10cnVuaworODA3MSA0YzQ2MjFhYTllNzY3N2U2MTA5NjNjM2NkMzAyMDFiMjM2ZDg2YTE0IGxlZ2FjeS10cnVuaworODA3MiBjNWE1NjdhZjEzZWU3Y2YzY2E5MDhkZGRhZjhjYjczYTcwMTE1YmY1IGxlZ2FjeS10cnVuaworODA3MyAyZTJiYmU5ODU2MjAyMjM1NGRiZDU5ZDUxMGJjZTY2MWQxMTViMThjIGxlZ2FjeS10cnVuaworODA3NCA1NTE2OTE1ZmZlZTdkNzgyNzcxYjJmMzM3NzY4ZDMwMjM3ZTIxOGQ4IGxlZ2FjeS10cnVuaworODA3NSAxZjIwNmM5MWRhZWUxODAwZjkzYzllYWMzNTkzNTJlM2I5Yjg1MmU4IGxlZ2FjeS10cnVuaworODA3NiBiNWU1MWFlOWY4MzJlNWEzOTg2MGU4NDJkODQxOGE5YTA3YzIwYjc2IGxlZ2FjeS10cnVuaworODA3NyBkOTU0ZGMyNDNlYjA3YWFjNTNmOTY1MWM3MWIwODgzMGNiMzA1MGJjIGxlZ2FjeS10cnVuaworODA3OCBhNjEwMjNiY2EwYTk3NDM3OWRhNzE1NGEzMzBhMTQ1ODc5MzZkMDVlIGxlZ2FjeS10cnVuaworODA3OSAwMjk0YTY3YmZiZGI0MzdmYWNhYzQyMzhmZGU1MjI4OWUxY2ZmZmVhIGxlZ2FjeS10cnVuaworODA4MCBmNDM1NTlkMjNiM2Q2OGU5NWViNjFiYTM3YTE3MWViZDBmZWNkYzBiIGxlZ2FjeS10cnVuaworODA4MSA4NTk4MGVhNWU4MDVjZjk5MGQyODNkZThkZjUyOGNlMjVmZmU0NDg0IGxlZ2FjeS10cnVuaworODA4MiA4OWFmNWJmOGY4NzMyMDQ3Y2Q2YjlmMjYxYTc5N2U5YTI2MDVhYTViIGxlZ2FjeS10cnVuaworODA4MyA0OTVmYmRlNjRhNzNiNWRiNmI5ZDJjNGJjM2I5MDkyNWQwYmVmOWNhIGxlZ2FjeS10cnVuaworODA4NCBjYmI0ZTNjZjA4NmUyMjFhZDNkZmI1NDRjMjIxOTEyMDIzNjM5YWE1IGxlZ2FjeS10cnVuaworODA4NSA3OWU0OWNiY2UyZWZkMmYwYzZiOWMzODcwOWYwY2UwYjMyMDI3M2VkIGxlZ2FjeS10cnVuaworODA4NiBmMjhlZWEwMmNmOTQ0NjJiYjk5NWZhYjI0OTMxODk2NDgwODJkODFhIGxlZ2FjeS10cnVuaworODA4NyAxMGU5Y2ZhMDEwZjA4OTc2MWZlNzljOTVjZDdjYzEzZjY3MGU2NTU0IGxlZ2FjeS10cnVuaworODA4OCA1ZWQzYTIxY2MxMjI5YzE3OTg4NTI0NTNjMWU3ZmQ0ZDkxYjUzMWEzIGxlZ2FjeS10cnVuaworODA4OSA4ZDQwNWY3MTI4MmY5NmUwMTY4ZDg2MGRmMTI3YTUwMTI1YmIwZTg1IGxlZ2FjeS10cnVuaworODA5MCAxOTBlMzViYmMxNWFlMjMyNzg3ZGU3YjIwOTUzMWZkMjAwYzZiMjQ3IGxlZ2FjeS10cnVuaworODA5MSA3MjU0ZWUyYThhYmRhNzA4OWFkMTQwY2VlZjJjZTY4NDhmYzFmYTE0IGxlZ2FjeS10cnVuaworODA5MiAzYmEwOGQ2ZTliN2YyODQxYjI4MzU0ZTAzNjhjMDg2MmViYjM3MGMyIGxlZ2FjeS10cnVuaworODA5MyBiYWUyYzAxODlmODU5NGE4YTM2NjYyMzczNjY3MGQwN2Y1NTc0ODk4IGxlZ2FjeS10cnVuaworODA5NCA3MDg1NTU3NDUxNmI4NmI5OGM1MTU4ZGVhMWQxMTQyNmMyYWQwYWQzIGxlZ2FjeS10cnVuaworODA5NSBmZGQxZTFhNTMwYWY4YzA3ZDVjMjcyMmVlYWYyYjI2MTkwNzYzYzQ5IGxlZ2FjeS10cnVuaworODA5NiA3ZmRhNzg0MWRiOTE4MmY4ZTc4NDdhZDIwNDIxNTI0ZTcxYTU0YWI3IGxlZ2FjeS10cnVuaworODA5NyAwNTU2ZWE2ODdhOTdkODE4MTA1OTQwYWNkZTg2ZmVhYTdjMWQxZjNlIGxlZ2FjeS10cnVuaworODA5OCBlMTQxM2ZhNjRiODMxYjc0NWRmYTQ1Yzk3OTcyM2MyNmMzYzE2NGI4IGxlZ2FjeS10cnVuaworODA5OSBmOGU0NTJhMWY2NDQ4M2JjZjZlZDBiM2NkMzRiMDVjYTUyZjFiYjVlIGxlZ2FjeS10cnVuaworODEwMCBmYTZjOTFhNWY0MWI3ODM4NzU1ZTMzNzhmNjU2NDY5ZWQyNmQ5ZGYyIGxlZ2FjeS10cnVuaworODEwMSAzMmJhZmM5ZTljNGZjMzZjODA5YWY2MzBmMjcwYWI0ODBiZDI3NDRkIGxlZ2FjeS10cnVuaworODEwMiBhY2ZjZTAxNWRmZGQzNmRlZTBhYWExYjVhMWMwY2I5ZWY3NjA0ODBjIGxlZ2FjeS10cnVuaworODEwMyA2OTZlNzU0MDY0YzM3ZjBiNjkzMWJiMWE1MGIzOTVkODUwZmMxZGIyIGxlZ2FjeS10cnVuaworODEwNCA0ZDEyZTZlOWMyN2QxZTUzNjhhNzQ1MGI5MzE5ZGIzNTY3NWZiMzBkIGxlZ2FjeS10cnVuaworODEwNSA5OTI0ODI1ZGE0YjNhNjg1MDJlMDEwNzJlNzkyMDMxYjZiYWIyZWQzIGxlZ2FjeS10cnVuaworODEwNiBlNmEyMzNmYzhiOWI0MTRhZDI2ODM4NDZmMTI2NWE1MmNmYmQ3YzVjIGxlZ2FjeS10cnVuaworODEwNyA4YWY4ZWU3OTdjMDk1MmNmNzEyZjgzNjg2NDlkYmI0MDIxZDU2MjRiIGxlZ2FjeS10cnVuaworODEwOCA4YzU0Yzc3NzY3NDQ5MGU4M2JjM2JjMDdkYjgyMWRhZGJmYjUzY2ZmIGxlZ2FjeS10cnVuaworODEwOSAwMGZjNDEzYTNiOGJjNzZlYjI4ZTU0NzE5MjQ0OWIzMmYzYjdiYTg1IGxlZ2FjeS10cnVuaworODExMCBjNjljNzU5ZjQzNjZjNTYwNTVkMDRhYjhkYjJkYWU4MDE1YWE3YzMyIGxlZ2FjeS10cnVuaworODExMSBlYzk3ZjQxYzdhMDRlYjQzZDg5NGU3NWQ0MTBiMTg0Y2RhNDhjMmNkIGxlZ2FjeS10cnVuaworODExMiBhY2M1NWQ3MDQ2NzQ3OGUwZWVlODRhYzU5NDI0ODhkOTQ1NTk2MDBkIGxlZ2FjeS10cnVuaworODExMyA3NWJhNjRjNTVmMmUxMmM5NTA0Y2RlYWI1NjFkZWRkMzg4NDRiNDAwIGxlZ2FjeS10cnVuaworODExNCAxN2NhN2U0ZThmZDZlODFmZDlmNDhlYzA1Yzc4N2VlNjhiMGZkNzhhIGxlZ2FjeS10cnVuaworODExNSBmOTE0MzlkOGY2NmU0NzI2ZmYxZjIxMDE5ODc4YTgwZDg2N2FjNjZlIGxlZ2FjeS10cnVuaworODExNiA0MzcwNTY0N2ZlYjkyOTdkNWVlMmZhNTJhYWM2MzdkOTY0ZmZkNTY0IGxlZ2FjeS10cnVuaworODExNyA1N2EyNjFmYTU5NmM2ZjI2NGJjN2RkNzkwMmE0NTM5ZTc2Mjk1ZGY0IGxlZ2FjeS10cnVuaworODExOCA2NWVhNDFmMmQzNGQ4MGY3NzVlOTFmY2ZlMDcyYTlmNTIxNDZmNTdkIGxlZ2FjeS10cnVuaworODExOSAwZWY3MDJiODA0NmJhNmZhMzk5MTg1N2Q0NzRjZWY1YjUyYjBiODA3IGxlZ2FjeS10cnVuaworODEyMCA5Njk0OWI5ZjQyY2I5MDI0ZDUzODliMjk4ZDU1YWU3ODYyZGNkNTJhIGxlZ2FjeS10cnVuaworODEyMSA3YzIwOWRhYmQ4YzgwMDAyY2Y2ZWVmZWQwNDYxZjE0NDgwODI5M2JmIGxlZ2FjeS10cnVuaworODEyMiBlNTkzNzRlMjNmZGY2ZTQ2NTZiYzc1ZDFhOTEzMWIyMDI2NWY3NzZlIGxlZ2FjeS10cnVuaworODEyMyBjNjNlMjgzYmIyZTQ2NjE0OGY3YzFhZjU0ZDA2YzBjNDlkMGJlZmQ3IGxlZ2FjeS10cnVuaworODEyNCBiNDlkODAzN2E1Y2JhZTNmNDA0YzQ3ZjQ2ZjQzMDk5MjZiYzA0ZGFiIGxlZ2FjeS10cnVuaworODEyNSAwY2M5N2U3NWEzNjEzOTI5ZjRjNjA5NTYwNWQ4MWQ1OTIwMzc0MTI0IGxlZ2FjeS10cnVuaworODEyNiAwN2UxYWFiMjMxMTUzNDIzZWVmZDU1MDM1NjViNmJiOGUzZDE4YjNkIGxlZ2FjeS10cnVuaworODEyNyBkNDVkYzdmZTQyYWY5ZTNlOTg2MTc4ZjdkMGZhYzk3ZWJlNGEzYWU2IGxlZ2FjeS10cnVuaworODEyOCA5NWQ2ZTE3OTU1ZWZjOGJiZDkyNGE0NjQ1NTJlOWZjNTNlYTBiYTZlIGxlZ2FjeS10cnVuaworODEyOSA2MDA5ZDUzOTA1ODQ4Y2VmOTM5MWQ1ZDJlMGY3ODQwMzlmNmIzMDA0IGxlZ2FjeS10cnVuaworODEzMCAzMDk2MDJjODc5MjkyNDE2OWNmMDc5YzkxOTM0MWIxMjA3NTRlNGE3IGxlZ2FjeS10cnVuaworODEzMSA4ZTE0ZDU0YTY0MTlkMjljOWYzYTNmZjAyYjJmMjdlMzE4MzFhNTMzIGxlZ2FjeS10cnVuaworODEzMiAwYjU3NDJkMzE4OWEyNDBlZTRlMzk3MzlhZWVjYjcwN2RhYTM0YWFhIGxlZ2FjeS10cnVuaworODEzMyBkMTc1Y2FjNTUwYjk4YTYxOGU0MzU1NzJhZWY1NTM5Yjg2ZWM5MTM3IGxlZ2FjeS10cnVuaworODEzNCBkZGVkNDM5YjdiOGFiMTYxMjE5Yjc3YzcxZTcwOGVhNzhlNjY5MjAxIGxlZ2FjeS10cnVuaworODEzNSAxMjY1Y2E0NGYwNGI5YmNjOWZmOTlkZGI5Y2UyODZkMDkyZGI3NWI1IGxlZ2FjeS10cnVuaworODEzNiA2ZjlhMmM4NzQwMThlZDhiZmRhZTA0MmRiZmJiNWU0OTgyZjA0MDc1IGxlZ2FjeS10cnVuaworODEzNyBlZmRlZTdkNDMyNzA0ZDA3YTM3NTQ1ZGUwYzA1ZDRiZWVmNWY0YTAyIGxlZ2FjeS10cnVuaworODEzOCAzZGI3NTRhYmZmMzYyZjA5M2VkOGI4MWYzMzg0ZmNlN2M5MTJkY2EwIGxlZ2FjeS10cnVuaworODEzOSA2YmQzYTJjZWMzNTMwZmU3YTExZDEyYmU2NTU3NDA3ODhmN2JjYzdmIGxlZ2FjeS10cnVuaworODE0MCAxODE0OTk4MGVjZTk4MzY5ZTczNzRiZTYyYWU1OGE1MGIxZTdlMjA2IGxlZ2FjeS10cnVuaworODE0MSAxZGZhNGYxN2Q4ZmZmNjMxZGUwZDc5MDI2MGQ0N2MxMDUwODU4NDUzIGxlZ2FjeS10cnVuaworODE0MiBiNWJiZTUyMjBmNmJhYTk2MTMxYzkwNjY0ZmY4MGNiZjc1M2U1YmRiIGxlZ2FjeS10cnVuaworODE0MyAzNDcwNjg5YTk3ZDcyYTBhZWFjMDE3MzkwZDg0MzgxMzc5YzBlMzM2IGxlZ2FjeS10cnVuaworODE0NCA0YTU4NDk3YzE0YTgxNjdiMzFjZDlkNTgwZjE3YTIzYWQxYjIyOTRlIGxlZ2FjeS10cnVuaworODE0NSA2NzY3OWYyZWQyMTc2M2IxNDZmODQxMjk5OTYxNzgwMGU0NTlhMDYwIGxlZ2FjeS10cnVuaworODE0NiA4NTEzNGI5N2FlNGQ1NDA3MDZjMzZlN2RmZGQyMDk5MjBhYmFjODdjIGxlZ2FjeS10cnVuaworODE0NyBjMzUwMWE5ZDNjMjA1OWYxZWE4ZjlhMTQ1YzE0NWMyMzY0MjY3YjA1IGxlZ2FjeS10cnVuaworODE0OCBkNjYzMDQ5NjNjYTdmZTkxNjgwY2VkNjdmZWE3NWY1OGM5ZWQ1MDZjIGxlZ2FjeS10cnVuaworODE0OSAxOTI2ZTY0OTJkM2Y3OGQ1NTBiNWNiZjgxMjM1ODQ4ZjIxYjZhNGI5IGxlZ2FjeS10cnVuaworODE1MCBhOWZmZGZmMDU1N2Y5NWVmNjU5ZDM2OTVmMWZlMzdmZGIzMjgwNTU1IGxlZ2FjeS10cnVuaworODE1MSBlNWRlNzA3MzAwZTE3ZjA3NTQ3M2U5NzkzNzYxOWQxYzBmY2FmMGVmIGxlZ2FjeS10cnVuaworODE1MiBmZDZhY2FkN2NjN2E5N2E0ZGQ0MWI1NmQ3OTdiNGFmYzQ2MmVjYTc1IGxlZ2FjeS10cnVuaworODE1MyBlZjhhMTU5MDJhNDg3YWMxOGMzMWM5Yzk5NzIxNDgxNmE0YWNmYjA0IGxlZ2FjeS10cnVuaworODE1NCA2ZmRhMWU2ZTI2MTZjYjU3YjJhMGEwMWM1MzE4NmExNzNlMDRmYTJhIGxlZ2FjeS10cnVuaworODE1NSA2NGU2MTE2NTU4OWE3OTMxOWFkODk2YWNmNDRjN2EyOTMyYjQ0ZTQ2IGxlZ2FjeS10cnVuaworODE1NiBkNTkxMWNhOGQ0ZWIzYWY0Y2ZjMzRmNmQ3Yzk0OTAzNWY0NjJiMTIyIGxlZ2FjeS10cnVuaworODE1NyAxMmQ2NGNkYmFhYTIzZTJjMzc0MmE1NTA5ZTMyNzA5MzYwYmMwYTA1IGxlZ2FjeS10cnVuaworODE1OCBkODhjYjRkMjZmMTNlZDM4MjU5YzlmZDZiNjcwZWQ5YmY0NjhiMzI2IGxlZ2FjeS10cnVuaworODE1OSBlYTcyYmZlMzk1YmEyMTYxZWU5YTVkNTcwMzNmNmQ2NDMxN2RhODcyIGxlZ2FjeS10cnVuaworODE2MCBjZDFhZTYyZWQyY2ZmYzNiOGFiZTBhZmZjNDgyYzUzYjM0ZjJmZGU4IGxlZ2FjeS10cnVuaworODE2MSBhMDgzMWRlMjM1OGMzMGUyMjgyNDI1MGRkNGIwM2IwNTI5NThiYzc3IGxlZ2FjeS10cnVuaworODE2MiAwOWQ4N2FkNzUyNzg5ODdhOWY1NWNiOWU2YjNhNmFkMDVlYTExNmNkIGxlZ2FjeS10cnVuaworODE2MyAyMDc3YTMyZDg1OGVmNjUyNWNmMmQ2MDMzODE1YjkzNmUwNGZkMjQzIGxlZ2FjeS10cnVuaworODE2NCA4YjdmYWNlOWIxYTc4MmE2OTk5MWE0MGU5MTIyZGYyZTExYjBkZGIwIGxlZ2FjeS10cnVuaworODE2NSBlNzhkMWUwZWNjNTk4N2MyM2M0NzVmM2U2Mjc0YzMzMDU5ZTQ2ZTExIGxlZ2FjeS10cnVuaworODE2NiA1MmMxM2YxMzg5ZWZhZDQ4OTliMTk5MGNlMGRlNGUyNmMwZTc0M2RhIGxlZ2FjeS10cnVuaworODE2NyA0ZTgxN2IyYWQ5OTEwYmM5NjAzNmYyOTU1YjYyNjc3MWE3YTQyYzljIGxlZ2FjeS10cnVuaworODE2OCAzODM4M2FkYTM4OGU5YTAyNDkxZjlmN2U1YTIyZWVlYjRkODY5YWNlIGxlZ2FjeS10cnVuaworODE2OSA0NDI4ZjEwODRiNmM2NzAzOGVhZjk0M2U4YzBhNmRhNzg2OWVlZTI2IGxlZ2FjeS10cnVuaworODE3MCBhOTdmZGUyODE4ZmJlNDBmMzFkNzcwYjBjZmI2YjkyMmMxYTAyODAwIGxlZ2FjeS10cnVuaworODE3MSAwMTA5MDlkZmMzM2UyZTA2YzJmNmNkMGI4NjE2NDNiNTAzNjhhMzNkIGxlZ2FjeS10cnVuaworODE3MiAwMmVhOWQwMjE0Mjc0NzYxZmVkYjI5OGUzNDNjYzczM2MzZTBiYjE1IGxlZ2FjeS10cnVuaworODE3MyA5YjYyMWFjMDkyMTIxYzI1NmNmZjM0NTQxN2ExODdlMThjMGU5MGZlIGxlZ2FjeS10cnVuaworODE3NCA4OGIwYjJhM2FhYjU2YTVhOTk3MmVhMDI1ZmZkYmE5ZWU3MzY3ZjFmIGxlZ2FjeS10cnVuaworODE3NSBiYTg2MGRjMGE1ODUxNGYxNjljODBlMTJlNzRlMjUyNGRlYWFlMzU5IGxlZ2FjeS10cnVuaworODE3NiA3NmZkNTI4MWY5OGE3YjhmODM4ZDM4OWY4OTYwMmEwNTQ2YmQwZjdmIGxlZ2FjeS10cnVuaworODE3NyA2MGZjYTQ3ODM3OTM1NmY4ZDkzZGM0ZjJhMWNlMjI1MWViY2RlNzg3IGxlZ2FjeS10cnVuaworODE3OCAzYTFiYjFjOThjMTQwZThiNDgyNDI5MWYxYzE3MmRlMWYyNmQ1MzI2IGxlZ2FjeS10cnVuaworODE3OSA1NzY2NTcwMzgxZjI0YWU5NzkzMjgwY2U1MTRmZTg0NTExNWRiNWFhIGxlZ2FjeS10cnVuaworODE4MCAwM2RkMWRlZDVjYjNlODY0ZTRmZTMwMGM1ZDcwN2E5YWZiY2JjYzYzIGxlZ2FjeS10cnVuaworODE4MSBjNjYyMzZiN2NjNmNhNGI0YzJjNGJhYjE4YWFlMWNkMjY3ZTBmYmExIGxlZ2FjeS10cnVuaworODE4MiBiYTA5YjQwN2EwYmI5M2Y2NGE1NTY1MGQxYWNjOTg3NjgzYWM5OTkzIGxlZ2FjeS10cnVuaworODE4MyBmOGJiZDcxZmI4MTlhNTQzOWJkNzIxYjk4MDNiNzA0ZjU5MjcyYTEyIGxlZ2FjeS10cnVuaworODE4NCA0MDRiYTAxN2FkNDI3YjgwMDIyMjI1ZTkwNTlhY2E3ODRmNDM0MDMxIGxlZ2FjeS10cnVuaworODE4NSA5OWNkMzlmNmE1MmRiMTMwZGYyODJjMWI3MmY5MmE5ZWFiN2ZkMGE0IGxlZ2FjeS10cnVuaworODE4NiA2NzE4MzI0NzBhYTExMzQ3NmVkNTQwZjJhZjFhZTRlMzg1OGI1OTM2IGxlZ2FjeS10cnVuaworODE4NyBmMWRhMjk0NzcyY2YyYjVmZDlmZTMxNmVjOGVjYjdlZjhiY2U3NGI1IGxlZ2FjeS10cnVuaworODE4OCBmYjE3MGNlODI5NTEyOTM3NGQ0M2MyODliNWM2ZWI3MWVkYmE0YTRjIGxlZ2FjeS10cnVuaworODE4OSA0MzNjOWU3ZWRiNjA4OTA3ZmJkOTM5NzZkNTcxZTBjYThlY2ZmYmE4IGxlZ2FjeS10cnVuaworODE5MCBlY2VlNTViYWFjZTMwODk2ZjFiMmViMWQzZDM3YWJhYzQ5ZjNjMGQxIGxlZ2FjeS10cnVuaworODE5MSBkZWUwYTU4YTkxMzIyMjY4MDhhMzRkYTg1ZGRlYjQxZjEzNmUwMzgwIGxlZ2FjeS10cnVuaworODE5MiAzNzYzNWVlYTNiY2M4Mzk3ZGU0MThhNDJhZjM4N2FjZjhkODNlMWIxIGxlZ2FjeS10cnVuaworODE5MyBjZTY0YTgxMzkyMTY2NjA1NWE5MzBiNTI0OTRiMTExMWI0ZDUzZWFhIGxlZ2FjeS10cnVuaworODE5NCAzYzY3NDM2YTI4ZTYxYjAwYzViZDUwNjQzZjM1OGU0OGU3MjY4NGYzIGxlZ2FjeS10cnVuaworODE5NSA1NWRmZjgxNjljZjU0YzAzMWE4ZDg0NjExODk4Y2EzMzhjMjljZDg0IGxlZ2FjeS10cnVuaworODE5NiAzYjM4ZThkYjVmMjFmZGZlY2Q2NDc0MGU1ODcyZjZlZDNkZmQzOTk5IGxlZ2FjeS10cnVuaworODE5NyA2MTNiZDIzN2NkNTVjNTIxMTRjOWM2MDVhNGFiZjgzZGYyYTc4ZTBiIGxlZ2FjeS10cnVuaworODE5OCAxMzhiMTc2ZWM0MGY0M2M0YzBhNWNjNDQ3ZDY1NTIyNjhhNzZlOTA4IGxlZ2FjeS10cnVuaworODE5OSA2Yzk3MzY4NjU2MDg5MDU1ZDhiYmY1NWEzNjVkMmQ1ZWZkMmFhYTFmIGxlZ2FjeS10cnVuaworODIwMCBiZWVlMzUxZjFmNzJhZWZmNTYxZWRmZjg2NmE5MjgxZmI5ZGE2MTdiIGxlZ2FjeS10cnVuaworODIwMSBmOWFlYTczOGQ0MzUxZWQxNDAxODUwNGYwNjE4ZWU5YzFhMTc1NmNmIGxlZ2FjeS10cnVuaworODIwMiA5YTNiMTE1YWE0OTE5MGVmZmRjMGI3ZTljOWViZTM3NTVkYjBiZjY4IGxlZ2FjeS10cnVuaworODIwMyA1N2E3YmExNDEyZTI2NWViYjMwMjE3NGM0MDkxNmU2NzNmOTkwMmQyIGxlZ2FjeS10cnVuaworODIwNCBlMGRhM2Q4OWQ0YjY1ZmJhYjVkN2NiMzNlYWQwOTEwODExYWYwYWNkIGxlZ2FjeS10cnVuaworODIwNSAwNGMyODI3NGMyODE4MTIwOTgwNDA4NzRmYjNkYjI5OTU5Zjk2YzFhIGxlZ2FjeS10cnVuaworODIwNiA2MTdmMjAzMzk0ZTczZjg1ZWIzMDU4NDhiNTljNDg5YjYxYTc1NTU2IGxlZ2FjeS10cnVuaworODIwNyA5OTYwNzk3NDQ1NjY1ZDYyYmM4OWQ1YzI2NDg0MTczMGY2MzJlMTM0IGxlZ2FjeS10cnVuaworODIwOCA3NTc2MmM2NzIwMGNhZjc3MTQxNmVjNDIyOWM4NWJjZDgxZDcyYzg5IGxlZ2FjeS10cnVuaworODIwOSBmMDI3ZGQwYTg1ZTRlNWVkY2IwYTFkZDA0OWQyMzdlNmIzOTFhNWRmIGxlZ2FjeS10cnVuaworODIxMCA4ZjZjYzcxN2Q4MTdjMDdiZmE3YzczNjRmNmI2MGNmOTlhZGI3ZWI3IGxlZ2FjeS10cnVuaworODIxMSBhOTRiMGExMjJjOTg2OTM4NmQzYmY1Zjg4OGFmNjY3MjBiMWFmNTEyIGxlZ2FjeS10cnVuaworODIxMiA2MzQ3MjhkOGJjOThjZWJiNTdlNTBjOTFiYmUwMTdjMmUzZjlhMGVkIGxlZ2FjeS10cnVuaworODIxMyA0ZGNhNTMyOWU4ZmM2ZGQzNTZlN2ZhNTgxNWQyMDUyYjJmOTRjYTNlIGxlZ2FjeS10cnVuaworODIxNCBkMGM2YjQ5ZDcxMDE4ZTM3NDViMDYwNmVkMWM0MjM0ZmE4NTBiNzk5IGxlZ2FjeS10cnVuaworODIxNSBjMjlmYzE3ZDhlNGZkNDk3ODNiOTllN2I2ZWZjMTNmMTM0OWRjM2JkIGxlZ2FjeS10cnVuaworODIxNiA3MWUxMTA4MmQ3MzIzNTQ3M2YxNTgyYTVmMTJjNjk0YmIxZTA4ZmY4IGxlZ2FjeS10cnVuaworODIxNyA2YTIxOGZhOGJhOWI5ODc0ZDBlZGNlNGJkY2NmODc4ODJhYmE4YWNiIGxlZ2FjeS10cnVuaworODIxOCAxMzg0NjM3OTM0N2RhNTBlODFkNzlhNTdlM2IzMGY4NzJiNGQzY2NkIGxlZ2FjeS10cnVuaworODIxOSA4MjdhMmYzZTY0ODMyYWEwMDdmMmZiZjBmZjhlMjZmOTZhNzkwZTViIGxlZ2FjeS10cnVuaworODIyMCBjNjA2ZGQ2MTU0NGFlMDdiMTk3NzVjNTFkOWUyMmYyOTZkYThiZDQ5IGxlZ2FjeS10cnVuaworODIyMSBlYThhMGIwOTA5MDhiZDRkNjhhZjkxNGFlY2JkZTIxMTE3ODNlMDg0IGxlZ2FjeS10cnVuaworODIyMiBlMjJlZWE1ZDEyNmQ5YjQwODg4YjY0MzAzN2YzZmYzZjQ0YjIwYzY4IGxlZ2FjeS10cnVuaworODIyMyBhYmU4NjM0NDY2YjIzNmMxNWYzOGIzMzQ2OTA4YjRlNjk0OGJjNTkxIGxlZ2FjeS10cnVuaworODIyNCA0OWUwZTA3MmQ5Y2FiNTk3YzlmZmFhOGU3ODI1YjYwYzVkMTY2MDVlIGxlZ2FjeS10cnVuaworODIyNSAxYzM0YTBjZTc4NTg1NzNiMmUzMDcwOGJjY2Y3NmEyOWQ4YjYyZTllIGxlZ2FjeS10cnVuaworODIyNiAyMGU2Mzk5ODZmYjliYjJkM2FkYmZhNzFjMTgwY2IwZDRmZTgxODA3IGxlZ2FjeS10cnVuaworODIyNyA1YTc0MjlhYzkwYzgzYjFiYjE0M2U5YzViMzYxMTM4ZTc4OTBjNzQxIGxlZ2FjeS10cnVuaworODIyOCA4N2Q2NThhMTI4ZjkxYjVjNjgyYzE2ZTJhNjUwYTdlOTA0YmIzZDcyIGxlZ2FjeS10cnVuaworODIyOSBmYTZkMDEzYzk0MmIwNzc1YTdiYWUyNDAxZjgyZmI5YzM0NjVjZjgzIGxlZ2FjeS10cnVuaworODIzMCA2NGJjNzgyYTQyZWM3MzE1OWFlYWYwN2I0M2QwOGM1Yzg1YTAwNTU1IGxlZ2FjeS10cnVuaworODIzMSA5ZWQyNmFmZWVhYTUyZmNiMTY1OGFkMDIzNmU5NDA2ZTU5MmNjMjViIGxlZ2FjeS10cnVuaworODIzMiAxOGE2MzlkYjA0OGM3OTkwYWQ3NWE0NTYyMjUwZDc0ZjVjNTdjZTk1IGxlZ2FjeS10cnVuaworODIzMyA0YjQyZWVhMTBhMDI5ZTYzM2ZiOGUzNjc4MTljM2Q2N2ExMmM4Y2I5IGxlZ2FjeS10cnVuaworODIzNCA4YzBmNzQ3ZjExNDE5YWNmZGFkZmZiMjQxNmNmYjYzNmI0MTBmZTQ3IGxlZ2FjeS10cnVuaworODIzNSBiZmU5YmE3NGMxOWVkNzZlZDc4YTMwMjdlZjJiZjNjZmNjNjY5YzY4IGxlZ2FjeS10cnVuaworODIzNiA5MTkzODZmYjNlNTA0MzMyMjc1N2JhYjkwMzUyNzI2NTFlZjc3NDJlIGxlZ2FjeS10cnVuaworODIzNyAyMDFjOGQwNmUzYjc4Njc1MTlmYjM3ZmQ4MTc2YmJlZWQ2MDkyMDI4IGxlZ2FjeS10cnVuaworODIzOCBhOGUzMWQ5MDVkMmMwZmU5NzZmMDJkMzVlMzQ3MzI5M2E1ZTQwOWJhIGxlZ2FjeS10cnVuaworODIzOSA3OWJiOTk5N2NlNWZhYTBiNzg2ZDQ2M2U4M2ExZWQ5ZTRmYTkwMDAzIGxlZ2FjeS10cnVuaworODI0MCBmZDRlOWYyOTNjNzdhOGE4NGU0ZmI4NDMyYmYzNTYzNmQ2YmZiNGIzIGxlZ2FjeS10cnVuaworODI0MSA2MmZlODAwZDE3MWE3ODBjMGUwNTE5OWQ2ZDJjZDlkOTVjMzEzYjgxIGxlZ2FjeS10cnVuaworODI0MiBkNjQyMWIzZWQxZGE2NWI0ODkwMWEzNjAxYWJiMDI1OTc2YTNkNzc2IGxlZ2FjeS10cnVuaworODI0MyAzMDlhYWI0YzBiOThlNTc0NDVhZDk3N2ViYmE3ZjJmZmJlYjQwMTk3IGxlZ2FjeS10cnVuaworODI0NCAwM2E1N2FmNzIyMTg5Y2JmYTdkZmM5MDk3YmE2ZmQ0ZmZmMzkzZDJhIGxlZ2FjeS10cnVuaworODI0NSA3ZGU1OWY0N2U4NWI5Y2FkZjE3Nzk5ZGVkZDE0MWIwODA0NGYxNTI1IGxlZ2FjeS10cnVuaworODI0NiBiNzY0OTQ5MWFlOTI0NmE0ZGVjZjM5NTYxZDM2MzVkNmY0MDIwYmQ4IGxlZ2FjeS10cnVuaworODI0NyAzOGVmMDkxOTY0ZjAyMmZhM2ViOTVlZTQ1OGYxOTgzMTFjYzQ4ZGU2IGxlZ2FjeS10cnVuaworODI0OCBmYjhmMDc5ZTRlZmY4NmY2NTk1YzhkZGY3M2E4MjQ0Y2IxYWI0NDAyIGxlZ2FjeS10cnVuaworODI0OSA1ZjdkZGI3Y2EzNDdjZjhmMDVlMGI5NDVlNWNlNmM1ZGM4YzcwMDExIGxlZ2FjeS10cnVuaworODI1MCA3ODMxOTIyMWVkYjJmMjhjZGFkZDFiY2QyZjE4ZDhlNmY2NGJkYjUxIGxlZ2FjeS10cnVuaworODI1MSAzZWYyNTYzZTgzZWUzOTA5MGFjZDYxMmIxN2I3Zjg2MjI3ZDgxNmViIGxlZ2FjeS10cnVuaworODI1MiBjNjBiZWI1NjI1ZTcwMTY1Zjk3OGRhZDNjMWIzMDA5OGIyODg0YWNiIGxlZ2FjeS10cnVuaworODI1MyBmNmRlMDUwMDU1NzY5NWFhNzE4ZmRmMGU3MzIzOWQzODVlNmM4M2U4IGxlZ2FjeS10cnVuaworODI1NCBiNDQ5Y2Q4NWQ1MTk3MTk5M2YwZjBkMGY3YzM2NmE3NDBlMTE5Y2NmIGxlZ2FjeS10cnVuaworODI1NSAwNDlkOTRmZmMwNmEwMTI2N2JlMjE1N2ZlM2UyOTRmYzRiZDExMDEyIGxlZ2FjeS10cnVuaworODI1NiAzNDI4NDg3YjI5YTM4NWM5NjI2MTBhMTJhMWZkOGUwN2M0M2YwMWMwIGxlZ2FjeS10cnVuaworODI1NyBiYjBhY2ZkNGI3MjBhZmQ3YTA1MWYwZjQ4NDA1OGI2MmU5NWVhNTVmIGxlZ2FjeS10cnVuaworODI1OCAzYjhkMDA0MDNkYjg1ZGMzNzczM2VhYTczZTAyODU3MzBlM2NiNjc4IGxlZ2FjeS10cnVuaworODI1OSBiODNlY2Y2Zjg3MzAwYzFiNDc3MjEzYzJiYzkzNjQxNjI0YjM2NWM3IGxlZ2FjeS10cnVuaworODI2MCA5Y2ZiYzliYjY0MjNiMDhiYjhhZjQ1YmJmMWRjOGVlNmNiODE2NTAxIGxlZ2FjeS10cnVuaworODI2MSBjMDQzOTAxZmExZmViY2JmYTI0Y2M3ZDAzZDU2YmVlOTlkZGNmYThmIGxlZ2FjeS10cnVuaworODI2MiBiMjQ3Mjk3YmU5YTAyNWVjNjRiNTUwMjZjODExMjNlMTBhMzU5YWU3IGxlZ2FjeS10cnVuaworODI2MyBjNTY5ODczZWViMTVkODJmMWJlYjQ4NzdmZDhjNzcyODYzOTZjZmEzIGxlZ2FjeS10cnVuaworODI2NCBiNDIwYjY0YTQwOTY3YmY3NTVmNzMwNGQwODVlOGUyNjliZGQzNzRiIGxlZ2FjeS10cnVuaworODI2NSAzMWNhZTM3NGY3ODY1Njc3MzFjZmJhZGZmNzA3OWU5ZTM1ZGQ1ZWE1IGxlZ2FjeS10cnVuaworODI2NiA4OGU2YWUxMDVhYjU4MTBlZjhjMjkxNzg4YzZmMGM5ZjI3MGI0N2E0IGxlZ2FjeS10cnVuaworODI2NyAxZDQxN2U5YzcyY2ZhYzdiNjNjNmU5YmRhZDEyYTAzYTE5ZGJmNmEyIGxlZ2FjeS10cnVuaworODI2OCAyYjczNzJlY2Q1MDcyYjBhNGJiMWFmNWJjY2NiMmIwNTBjMGMwOGZjIGxlZ2FjeS10cnVuaworODI2OSBkZmZhYmM2MjBlNGU0NmQwMThkYjVkMzZiNzA4MjdiMWQ2YTU1ODlmIGxlZ2FjeS10cnVuaworODI3MCA0Y2U3ODI3YTM2MjE3YjY0OGY3MTQ0MjNhOWYwNGI4NTc0MGExNmI2IGxlZ2FjeS10cnVuaworODI3MSBkNzljNGZiYjE5ODJhMWUzMzYyZDkzNThmYmNlNzM4YWIwNWIxNGE1IGxlZ2FjeS10cnVuaworODI3MiAzZDFkODA1NTA4N2ZiNzgzZDNiOGI4NjM1MGQ5NWZjMGI2OTA4MDA4IGxlZ2FjeS10cnVuaworODI3MyA3M2NmNTgyNjFiODIzNDgxMzMzMmZkMGY5NDFhMzRkMzk5NTg0NmZjIGxlZ2FjeS10cnVuaworODI3NCBkNjg5ZDJjNGY4NDIwYjAxOTU5NWNmNWMzMjkxYzNkM2E1NDgyZDEyIGxlZ2FjeS10cnVuaworODI3NSAyNGE4YzU2ZGUyMTQ0NGViZjJhZWQ5NGNmNzhmMTQwNmQ4MGIyYjk4IGxlZ2FjeS10cnVuaworODI3NiBlODYyZDliMDAyNDZhYmQ3YzZjNDQ5MDg0YjFhZDFmYzMzNDZhNDc0IGxlZ2FjeS10cnVuaworODI3NyA3ZThlZDk2NTBmY2MxMThjNzM3ODBjZTI0ODc3ODY4ZWQ0M2IyNDBhIGxlZ2FjeS10cnVuaworODI3OCBmZTNlN2EwNTU4MzQzNjkwMWFiMTA1NDY4ZmJjZmY5NDQ5YmEzMjYxIGxlZ2FjeS10cnVuaworODI3OSBlNDIzOTFkNjc2ZDEyZDA2ZWI5MjRiZWU3MTJiODRiMDBkZTYyOTAzIGxlZ2FjeS10cnVuaworODI4MCBiNTZkNTI3YTQzM2Y1YTUwNTc5Mjg1NWMwOWNkYTZkN2Y4OGU0YTIzIGxlZ2FjeS10cnVuaworODI4MSBiN2M2MDBlY2MyN2Q0MjAwZTMxYWQ4YmI5ZGZhYzMwYWY0YmNkZTVlIGxlZ2FjeS10cnVuaworODI4MiA1MThkNGYwYzhmY2M0OTgwMjc2MDE4MmE5MDNhNGE4NzNjY2VmOWNjIGxlZ2FjeS10cnVuaworODI4MyA1YTlmM2MyMDczMzY2OWY1YzBiNGFlOWU0N2ZjMjA4YjkwZWUyM2VkIGxlZ2FjeS10cnVuaworODI4NCA1MDgwM2NhNThiMWY5MWUyNWM5YzcyYTY4YzI3NjBhNGYyYzdlNTc3IGxlZ2FjeS10cnVuaworODI4NSBkZmZkMjIxNDZhYWI4Y2NjZjhhMzZjMTQ5ZDZiMzA3ZDhiNjg2MzE3IGxlZ2FjeS10cnVuaworODI4NiA1MTIwZWE4NmIyNWQ2ZDExYWVlYzg1NGM2NDg4MTZjNjY1NWVjMmYxIGxlZ2FjeS10cnVuaworODI4NyA2ZDQwZWJkOTIyMjc5MzAyMjA5OWI5MmYwMTQwN2Y0MzU4ZGZjZjJiIGxlZ2FjeS10cnVuaworODI4OCA1OGFlYjg3MmQ5MTUwZDAwMjE4NTNlOTRjYzJiODE4NjU4NTAzM2QyIGxlZ2FjeS10cnVuaworODI4OSBmNTNkMzYzZWY2N2E5ZWEyOGIzOTlkNWM2MjI5MmIyOWVlMWYxMzI0IGxlZ2FjeS10cnVuaworODI5MCBkMzIwY2E4NDM1MTIyMjQwMjdiNzMzYzI3MThkMDUyMjVhMjVhYmQxIGxlZ2FjeS10cnVuaworODI5MSA1NWVhNTZlZTIwZjZiZDU2NjQzNzEyZDdhODA0MDJmOGNjNGEyMmExIGxlZ2FjeS10cnVuaworODI5MiBkOGE0ZjBkOTIyMWYwNzViMTYwMWY1MzEzYTMxZjRmYWRkMjU2ODM0IGxlZ2FjeS10cnVuaworODI5MyA2YTBkN2NmMTlkMzhmYWM1N2I5Yjk0YjY3OTc4MjFjMTk3Njg4YTEwIGxlZ2FjeS10cnVuaworODI5NCA0OGI5NGRlODViZjM1ZjI0NDJlYTU0OGE3YjRlMzU0NWZkNjg2YWM3IGxlZ2FjeS10cnVuaworODI5NSAzNDY4ZWE4NjQ1Y2E0MjM4YzJiNDUwMjQzNTFlNWUwZmFlNWQxYmM0IGxlZ2FjeS10cnVuaworODI5NiAwYWU4YzdkMzM0NjRlZTBjN2EzYzMwYjE4OTE0Nzc5ZDA1MTIzNTM4IGxlZ2FjeS10cnVuaworODI5NyA5MWRkOWQ3NGYzYjNjYjA2YWUwYjE3NjBjNzEzZjFlYzA4ZmE4MjkyIGxlZ2FjeS10cnVuaworODI5OCA3ODMyMWE4NGQ3M2U1Y2QzN2QxNzVmOTk1ZGYyNmFhN2M2OGQxNDhlIGxlZ2FjeS10cnVuaworODI5OSBkM2YyZGY4YzIyODZjMDVlYjg1MWRhYzMwZDlkYzM2ZDEwYWE3NDc4IGxlZ2FjeS10cnVuaworODMwMCBhZDA0ZDM4N2FjZWVlZTgxY2VlYzI2YzI5ZTAwOThkZWZlNjk4NzFmIGxlZ2FjeS10cnVuaworODMwMSAzYzE1YWUwZmI2YWQ3ODU1YjA0MDY0YmViYzdlZjdiODlmYjVhYWNhIGxlZ2FjeS10cnVuaworODMwMiAwYzMzNjEyZjExZDZiMTYyNzhmMzliNWFiMjhhYWFlMDUyMWJhNzlhIGxlZ2FjeS10cnVuaworODMwMyAwOTY1ZDlmZDE4NjJkZDIzMzdlZjg0ZmNhYWU5NWE2NTI1ODk2OThkIGxlZ2FjeS10cnVuaworODMwNCBhNzlkMGNlZjEwYTE5ZmRkMDRkZGM5NjczNmZiNGM4OTI5YmI5ZmM4IGxlZ2FjeS10cnVuaworODMwNSA5ZmEyYmQ4YTJiNzhhNTI2ZDgwMjliNTUwNGMyMjFjNTQ0YmJmZGVhIGxlZ2FjeS10cnVuaworODMwNiBmMTEyN2Q2ZmNkNzQyNDU0MjA1MzExMGViMjRiMzFhMTEyMjEwYTJjIGxlZ2FjeS10cnVuaworODMwNyAyMjZiY2E4NTg0NmY0MThmOTU5OTMxMmU2NGIzZTdiNGI2YTIyZTUzIGxlZ2FjeS10cnVuaworODMwOCA5ODViN2JmNDc1NWI2Y2ZlOTFhNDEyOTJmYTFmM2NhMDVmMzgwZWYyIGxlZ2FjeS10cnVuaworODMwOSAyODVmYjZhOTllNWY4NWY1NzdiZDExYWY2NTIwODYyMzY1MTU4ZGM3IGxlZ2FjeS10cnVuaworODMxMCA4NmMyNzlhODQ4ZWIyZDUwMTYxMzk0ZDEzN2UxN2E2MzVhYWRlMjY1IGxlZ2FjeS10cnVuaworODMxMSA5MWFlYTFhZjY1NGZmMTU4ZjExMDg5ZWYxYWIyNDY3MTAyMjNhNTFhIGxlZ2FjeS10cnVuaworODMxMiBiOTA2M2Y2ZjgxMWNiZmI5OGU0ODRmOTBkNTVkMzQzMzNhOTJiYjVkIGxlZ2FjeS10cnVuaworODMxMyAzYTc5ODY3NzUwNmNmMDY3NTg2ZmI5MWVjZWRjMDBjN2JiOGVkNTVkIGxlZ2FjeS10cnVuaworODMxNCAyZTkxN2Y5MzcyZTAzYTU0ZDcwODg3YTcxZjcxNDM3YTkyNzU5MjY4IGxlZ2FjeS10cnVuaworODMxNSBlZDVkYjBjMmEzZjM0NDE3MTk2YzEyOGUwYTIzM2VhZmJiYzYxYmU0IGxlZ2FjeS10cnVuaworODMxNiAxNzg2Y2M0MTk4ODZlYTY2YTE2YzNjNDBmM2U2Zjc2MjMwM2NlYzE2IGxlZ2FjeS10cnVuaworODMxNyA5ZjhmZjAyZWRlNmRlZWI1ZDY3NzA2NDFmODhlODZmY2I5MmE4OWExIGxlZ2FjeS10cnVuaworODMxOCBlMTY5OTRmM2QxMDJhYzZhZmQ5NzBjZDI4MGY0NzRjNDU5NGM2ZjVjIGxlZ2FjeS10cnVuaworODMxOSAzNWIxNGQ3OGM2MWQ5NDMyZDc1NTMwZDEyZGQ0OTMwNGM3MDYwYTRjIGxlZ2FjeS10cnVuaworODMyMCA1YThhNWExYTA0NzU3ZjYwZGI2YjBiYjYwYjU2OTY5YTc1YzMxYmQ5IGxlZ2FjeS10cnVuaworODMyMSA1OTYxZjEyYWU0MjY1ODZhMDBhNjg3NGU1ZmU3ZGE1YjAxODAxOWNlIGxlZ2FjeS10cnVuaworODMyMiA2ZTk5Njg2Yjc2ZGEwY2UyZjVkOGYwZGViYzcyZjVhY2VhZjNlNjM5IGxlZ2FjeS10cnVuaworODMyMyA4NTJhMWZhNjJhN2M0ZjZlMWZkNTE1OGQwMzM2YzEzNzY3NTMyZjNiIGxlZ2FjeS10cnVuaworODMyNCBmZjljMDExMDA3OWI3ZTQ2MjEwNDBlMTQ1NjdkNjdjNGU0YzRkNmJhIGxlZ2FjeS10cnVuaworODMyNSBmNjRhNWY3NTA2OTY2MDM5ODExNTc1YTEwZTk2YTM1NTRmYjY1MDRkIGxlZ2FjeS10cnVuaworODMyNiAwZDc4NTFiMzdhZDJkMTMwYjk3MTE2MGZkMjI3OThkMjM4OWNiNzJjIGxlZ2FjeS10cnVuaworODMyNyA2ZjY3YTFiZGExNWEyMThiMWViNTA2MjdjMmJlNDYzYWJjOWI4MDRmIGxlZ2FjeS10cnVuaworODMyOCBlZGFmMWNiNjNkYzBjODlmMzJmNWVmMTA4YjMwZjNjMTQzNDQyNDJhIGxlZ2FjeS10cnVuaworODMyOSA0YTQ3NzhlNjFjMTRlYjE5YjQ3OWI3M2FlMmQ5ODQ1YTQyNGVjN2EwIGxlZ2FjeS10cnVuaworODMzMCA5MmJjZjRjYzk0MjExOWFlOWM3YTcyZWM5OWM5YTlkODdkZmJjZDA1IGxlZ2FjeS10cnVuaworODMzMSAzNThkNzA4ODJhZjYyOWE3MDdjZWQ0MTNkYTRkZmUzMTU2ZDU2M2FkIGxlZ2FjeS10cnVuaworODMzMiBmZGQ4Y2VhMTgxYzA5OTRjZjg2N2VlYWQ0NmMwODVhZmRjNDkwZmI2IGxlZ2FjeS10cnVuaworODMzMyBjNGRkMzMyOWZkN2QwNDRhZDYwYTVlYjk0ZmIxNmE3Mjk2ODdiNzRmIGxlZ2FjeS10cnVuaworODMzNCBhNjY3ZDQ4ZTY4Yjg1Njk3MjIyZmM4NTU5YzRhNzhiNmQ2Y2M0ZjJjIGxlZ2FjeS10cnVuaworODMzNSBmNWY3YzczOTU2ODc2MGViYTUxZGRmYjMwODQwZTZkYTIxNTYxMzlhIGxlZ2FjeS10cnVuaworODMzNiA2NGY5Y2U5OTk0MzdiZDkyODJjMzg5NzMzZGZkZWJmOWYxYjAxOGRlIGxlZ2FjeS10cnVuaworODMzNyA3MjhhMDgzMjQyYTJhNmU3MDhlYTJiZDY0Zjk1ODU0NzE5NTc3ZDAyIGxlZ2FjeS10cnVuaworODMzOCAzMjNmNmExNmE3NjQyY2YxNjJiMDQ5ZWYxYmJhNTVmMmQ2MmRkYjA2IGxlZ2FjeS10cnVuaworODMzOSA0ZGJiNGVjNDRkMTUwZTYyMjlhYzhjZjdlZDNlMzRkMTExYzlkODcyIGxlZ2FjeS10cnVuaworODM0MCAwYWMyYzc0NzA1M2ZkYjc0Zjg4YjRhNDgxNjQwMWU1NDBhNzYzMjc5IGxlZ2FjeS10cnVuaworODM0MSA4NzUxN2U4ZWE1MTkxYjViZDI3MDAxZjlhZDllMTU4NTI3MDQwMmNkIGxlZ2FjeS10cnVuaworODM0MiA5ODQxYmNlMzdjNGQ2MzliOTU3NDlkN2Q3YTY5ODY2ZDFmNGZjOTJiIGxlZ2FjeS10cnVuaworODM0MyBmMWMwMzI3Njg3M2E2MGI0NTIxMmQ3NTVjOTQ5NTdlYjU4ZjNhNGRmIGxlZ2FjeS10cnVuaworODM0NCA5NzgzN2U2NGM1OGM1MmMyOTdkZjJlOWViMzQ3YmZiZDZkNjRmZjM2IGxlZ2FjeS10cnVuaworODM0NSBlNzQyZTQxYTRiMTFiZWZjNjdkMDg5YzA4ODc1OGZmYWE0YjZmNzYzIGxlZ2FjeS10cnVuaworODM0NiBmMmJmN2JjZjhiOGI2N2VjZDE4Njg5YjI4NDdiNzA3OGM5MzZlMWQzIGxlZ2FjeS10cnVuaworODM0NyBmZTRmMWViMTRkNTNmMGI0ZjA2OWZmYTY0ZDIyMzgzZGRlMzk3ODM1IGxlZ2FjeS10cnVuaworODM0OCBlZDkxY2I3ZDM4NzYxOTI4YmJjNmRjZWRjMjJhYmFmZDA0OTFkZDg1IGxlZ2FjeS10cnVuaworODM0OSBkZDBlOWI2NDY2MTY4NTUyOGE5YzI3ZWRkZDU4YTYwYTI3MDgwYWNlIGxlZ2FjeS10cnVuaworODM1MCBjOGE4Y2Y5NTgxMWMzOGNmMjc2NDNjYzc1MzUyZjY3NjliY2NkOWZiIGxlZ2FjeS10cnVuaworODM1MSBjNjdhZDViY2Q0YjIwMjNlM2YwODFlMjAxNzIwOTk4ZWUyMmIxNGNiIGxlZ2FjeS10cnVuaworODM1MiBkMjQwODUxY2M4YzU3NzVmYjUyOGYyOTAwOGM4OTcwNmUzYzcyMjc0IGxlZ2FjeS10cnVuaworODM1MyBhMmQzYzJhNjJhMzBhMzE4YjE0NzE0OGI1NGJjMGU3YmZjMzY2NGE0IGxlZ2FjeS10cnVuaworODM1NCAwNTM0ZTU0ZTgxMDYyYzgwNTY5M2U1Y2FkZDczMDhlZjQ0ZWQ4ZTcwIGxlZ2FjeS10cnVuaworODM1NSA2OGY3MzEyYTMxZjYyOWFkOTkwNzczN2E3MDMwYmM4ODc3YmUzOTBhIGxlZ2FjeS10cnVuaworODM1NiBhNzc1YTQ0MTI0ZDhiMGMyYTU4YTBkMmEwZjYxNmQyYmEzOWI4YmZhIGxlZ2FjeS10cnVuaworODM1NyA1MzBkZGI3MDc2OTVlN2ZjMTczZDA3NGYwNTIwMmZkODM3NmVkM2YzIGxlZ2FjeS10cnVuaworODM1OCBhMTAxYTE3YjhiN2I4YzdjYjYxODhhMzYyNzI5ZTQ5ZjhiMmUwYmQ0IGxlZ2FjeS10cnVuaworODM1OSBkNjUxM2RhOTI0OWQzOTdkMDRjNzcyYTg2YTNjNzAzMjRmMzllOGEyIGxlZ2FjeS10cnVuaworODM2MCA3OWQxOTMxZjE3MjI5ZWVjZjdkODM5MzM2NjRhZjQ1OWQ3NGUwMWNhIGxlZ2FjeS10cnVuaworODM2MSBiNTcxYjZlZTdmMTdlMzc4ZDE2MmIyYjNkYmViNGE0ZWYxMTI4OGMzIGxlZ2FjeS10cnVuaworODM2MiA3NmIxZGEyMWYzYTg5ODFkMDJiMmY1ZWQxY2YwNmEzMGJiNTYyOGI2IGxlZ2FjeS10cnVuaworODM2MyA0YzUyYTFiNmE1NGQ2MmE2MzNlNTgwYmJmNWIwMTAxMDUyYzg5ZjU0IGxlZ2FjeS10cnVuaworODM2NCAyYTE3MmI0OTUwYjZhNmMwMjI5MTdiMTg3MzY1NTBmM2Q2NThhMjYyIGxlZ2FjeS10cnVuaworODM2NSAwY2Q3NGY5MTg5YzZhN2M5ZmQxNDA3Zjc1ZWRiMjBlMzk4YTlmYzBiIGxlZ2FjeS10cnVuaworODM2NiBjZGQxMjVkZTc1YmY2ZjYyMDIxYmI4YjZhMTI0N2YxYjEyYmZhNWNkIGxlZ2FjeS10cnVuaworODM2NyBmMzM0MmIzODE5MzVhNDY0OTliNjBlNzcxYjU0NGY2NTk1OGQ0MjkwIGxlZ2FjeS10cnVuaworODM2OCBjNGQ1NDdjMDFlOTM0ZWQ4NWQ1MmYwNTdmZmU2MWM1Y2Q0OTgzODQ4IGxlZ2FjeS10cnVuaworODM2OSBiOTZjY2M3ODEyZjJmMDgzYmE4YzNiMjYzOTMzNzM2ZTZhOGMyM2RiIGxlZ2FjeS10cnVuaworODM3MCBjNTc5YjlmOThhNWE3MTU2MDUyNjg5MTFiYzEwYmMwNTY4ZGU1YzMxIGxlZ2FjeS10cnVuaworODM3MSBlMmRmOTViN2JlNzg5YTI0ZWZjYzBmODdlMjMwMjY0MDRjYmFlYmViIGxlZ2FjeS10cnVuaworODM3MiA0NmNkMzUyYzc2Mzg5ZmQyMjkyYzRjZjBiOWUyNmY0YTM0MmU3ODA1IGxlZ2FjeS10cnVuaworODM3MyA2NzAyMmQyOGE2NWQyZGZlOGE5ZmEyMmM3M2UyYzA0Njg0ODQxNWExIGxlZ2FjeS10cnVuaworODM3NCA3ZDM1YTA1ODAzNTZlYmRjZDYwZWI0M2ZlNWIwNTQ4YWM3MjFlZmJmIGxlZ2FjeS10cnVuaworODM3NSAyNTMzNzdhNDA2NDQ4NDc1NTk5Y2UwMjcwYThkYzUwMDkyN2MwYmRiIGxlZ2FjeS10cnVuaworODM3NiBmODJiNjA4YWZiNTY4ZGY2YjA0ODZiNzQ0MjRhMDk5MTI5MmQ3MzEyIGxlZ2FjeS10cnVuaworODM3NyA0NjY2NjRhZDM4ZTRjZWYxOTFmODRhMWMyYzczOGMxZWY0ODUwMTlmIGxlZ2FjeS10cnVuaworODM3OCBiYTQ5YTZlZjcyMTRmN2YwNGExNDM1YzU3Mjc0YmMyZGExNzZiZmEwIGxlZ2FjeS10cnVuaworODM3OSA0MTAyZjQ0NzIwMzI5YjA2ZDIzYWVmYWZiNTM3ODAwYzRlNDMwYzExIGxlZ2FjeS10cnVuaworODM4MCBiNmU0OGE0Y2RkMWU2OGIyOTgyZTZhMWEyMjE2YjkwYzU0N2FmN2I4IGxlZ2FjeS10cnVuaworODM4MSBjNTBjYzI4YWY3Yzc5ZjkwNGY0Y2ZhMWUyZGYwYzcxOTYxMGE3YjkyIGxlZ2FjeS10cnVuaworODM4MiBjMjQyMzg0M2EyNmY3MTVlYzI0YjdmYzQwNzg2ZDQzYWU0YmFmNjgwIGxlZ2FjeS10cnVuaworODM4MyBmMzQ0NjA5YTQ4ZTRlYTk2ZDM0MGNjN2E3NWI5Yzc4Y2YxMjY3YmNlIGxlZ2FjeS10cnVuaworODM4NCBhZjkyY2ZmZDA2M2Y1M2MwOTk0MGFiZDQ0MWVlNWI0MjVkM2MxZTJhIGxlZ2FjeS10cnVuaworODM4NSA0ZGQ5ZWExZTk0YTg4MDFjOTVlY2Q4NGU2NzdjNTE1OGNhYmQyYzM4IGxlZ2FjeS10cnVuaworODM4NiBmODI1OWNhOWVlZDM3Yzk5ZTNhNmExZTI2ZGRkNTAyNTgzOWFkMGE3IGxlZ2FjeS10cnVuaworODM4NyA4OTc3MWE0NmNhMzU0ZDUxN2I2YmIyNjM5ZGI3M2RhMjQ3OWNiNDBjIGxlZ2FjeS10cnVuaworODM4OCA2OTg2NzgxYTA3ZWYwZGMxNDM4MGYxYWQwNmRiYWQwM2E2N2U1NDVkIGxlZ2FjeS10cnVuaworODM4OSBmNTI3YzEyZjJlNTUyOGU1YWY0Y2IzNTBkZDY0ZGQwNjk4ZThmZTk2IGxlZ2FjeS10cnVuaworODM5MCA2YjM5Zjg2MzNjYTU0N2ExZDg3MjQ3NDc3YWY0ZWI2MjMzM2ViMGViIGxlZ2FjeS10cnVuaworODM5MSA1MTU1YjJjMzVlMTU5ZjU5ZGQxNzUxMzRiZDA0MjM4MmE4MWMyZTM1IGxlZ2FjeS10cnVuaworODM5MiBkYjljZmIxMDg2MjNjMjVhZGU1MTg4NzE0MWNlY2MzYTZhOGY0YjYwIGxlZ2FjeS10cnVuaworODM5MyBkMmM4MDM4MGFkMGRlNzQyM2RjNmZlNWQ0MWRiYzc5ZDZmNWEzZDMxIGxlZ2FjeS10cnVuaworODM5NCAwNGExYjgyYzgzMmIxYTdlMTdmOTNlMzFhOWFiNTU2NmJlYTg0ZGU3IGxlZ2FjeS10cnVuaworODM5NSA3ODBiNjhkZjQ1NjA3NzRmNWI4ZmY1NjZiZGFkMjUyNWJiODI0NDJkIGxlZ2FjeS10cnVuaworODM5NiA1ZGExOGUwMDJiMWE4ZmU4NWJhNWE5NTU4YzFjMThmODRhOGNiNzRmIGxlZ2FjeS10cnVuaworODM5NyA1ZmIzMDQxM2I5M2IyMTlmODAxNTkzMGRjMmRlYzY5Mjk2MTViMDA5IGxlZ2FjeS10cnVuaworODM5OCA4MDBhNTIxN2U2N2U3ODY5YmRhZTVkNWUxMTU2ZGJlOGQ5YzYwMTA4IGxlZ2FjeS10cnVuaworODM5OSA0NGRkYzcxMWVlMmRjOGMxMmQ0YTc1YThkMmRjYTVmNDRkY2MwYTExIGxlZ2FjeS10cnVuaworODQwMCAzZTE1OGU2OWFjNWQ5MWMxY2EzNGFkMDBkMDBjM2FlZjQyYTdmMWNiIGxlZ2FjeS10cnVuaworODQwMSAwOGIxZTlkODQ3ZTZiNTk5NTlhMmRmYzljZWI2YzFjYmVhYjIxMjczIGxlZ2FjeS10cnVuaworODQwMiA5MzMwNGIyZTE0Y2IzNjg3OWNmNjMxNGJhZGZlNDc0ZTFhZjBmZmYyIGxlZ2FjeS10cnVuaworODQwMyA4ZDIxOTRlMjJlNjczOWNkOTY2MjU0YTRmZTgyYTBiYTY0OWE2NjIxIGxlZ2FjeS10cnVuaworODQwNCA2M2JjOTI4OWFiMjgyOTM5ODVkMDRhZDYyMzk2ZDkxZmViOGRhYWJlIGxlZ2FjeS10cnVuaworODQwNSBjYTI0NWMzNmM2ZjZmODQ4Mjg2MzI5MTQ4YmU5ZjRiMDBhYTQwZjU0IGxlZ2FjeS10cnVuaworODQwNiBiM2M5MTM3NDY5MDBlMTYxY2FhMzc0NmIxYThkZTRiYjcxODExYTI1IGxlZ2FjeS10cnVuaworODQwNyBlMmNjZTRhZGYyYTcwMjllYmU4MGQ3ZDk3MmVmNDA3ZGJhMGRhZDNmIGxlZ2FjeS10cnVuaworODQwOCAxMmZlNWNjMTUxNmQwODJkMGQyN2E2YzgxYmMwMzdkZGMyZDU3MTBiIGxlZ2FjeS10cnVuaworODQwOSA0MGNmYzkwNWM3NzY5NmFjOGIxZTEyYzZlZWM4M2FhM2EzNjk4MDA4IGxlZ2FjeS10cnVuaworODQxMCBiMjEwZDIwNTk4MTIxNmRlZGQ0NWQzYThhMzFmMjE5MTNjZTgxNWIzIGxlZ2FjeS10cnVuaworODQxMSAwMzY5ZDYzYjEwMGIxZjRiYjgwNzZkYjkxZGYxOTBkODk2Mjc1ZDk3IGxlZ2FjeS10cnVuaworODQxMiBkNzdkM2I4ZTg2YjI1YTg5MjA3YTdkMjRlZDMzYTBlNWY2NzQyNTdhIGxlZ2FjeS10cnVuaworODQxMyA4MGQyNDM2NGI5MzI1ZWI2MjZhMWM0ZTM2OGI1MGEwZDA3ZTc3NDdmIGxlZ2FjeS10cnVuaworODQxNCA1YTRkMTgxZmZmZmRmNTczMGNiYjJhMjgzMTdjMzgxM2E5NGUzMDlhIGxlZ2FjeS10cnVuaworODQxNSAyMjJmYWViNDNkMDIwYzk0NmFjNzhjZDlkNzU5ZWE2YWFlYzM3M2I5IGxlZ2FjeS10cnVuaworODQxNiAyYzY1YmI2YWI4N2NkOWJiNjlmM2UzZTQ5YzYyM2I0ZTIzNjIyNWM3IGxlZ2FjeS10cnVuaworODQxNyBlZWY3NmIzY2Q5YWVmM2MyMjcyMmQ3ZmIzMGQ4MzA1YzQ0ODIwMzYzIGxlZ2FjeS10cnVuaworODQxOCBmN2ZjODhmY2ZmYTI0NmIzYjI0NjMxNmNkNDI2ZDM0YjAzNmYxY2U5IGxlZ2FjeS10cnVuaworODQxOSBjMTE5MjhkMjU5N2JkZGM2ZDIzMTJmZjE1NjVjNmQ1MDQ3MzdiNzJkIGxlZ2FjeS10cnVuaworODQyMCBhYzg3N2M0NzY4ZTFjYWJmOWEyNDE0MDA5NjU1NTNhYjBhZmJjOWNkIGxlZ2FjeS10cnVuaworODQyMSAxYmQ2OGU0NDY0Y2UyZmM1NDFlOTJjN2U1Y2UzYmQwMDAxNmE5OTEzIGxlZ2FjeS10cnVuaworODQyMiA3NWIzYWFiY2I3YzEwMDkxOTc2OGM0OWM4MjQzOGIyOGIyNWFmZWQ1IGxlZ2FjeS10cnVuaworODQyMyA5YTU2NDUyYzdlOGU5MjMxM2Y3OWQ4NDU3OTFlNjA5ZmI0ZjhjODkwIGxlZ2FjeS10cnVuaworODQyNCA3Y2E2YTkxMmQ0NTViOWJiMmYyNjU3NzMwOWFjZjRmZmI3MmEzZjAyIGxlZ2FjeS10cnVuaworODQyNSA2YzA2MGJjM2JmM2Q5YjU4MGEzYmQ4OTdhY2Y0ZmQxMGU5OTk5OTdiIGxlZ2FjeS10cnVuaworODQyNiAwYjRhOWRkMDllMGRiMGNkZDlmNmUyYWQwM2UwZjJjNjU4YWJkNjQyIGxlZ2FjeS10cnVuaworODQyNyAzZmJjZGE3NDE2OTY1YTQ0MjA3MDllYWM2ODk0NDJhOGJlNDA3MGI1IGxlZ2FjeS10cnVuaworODQyOCA4ZDdkYzY2OTY4Y2JjNmVjNGVhM2RiM2MzNDljNDU4ZTNmZjA0ZjBmIGxlZ2FjeS10cnVuaworODQyOSBiMmUwMThmYjJiYTkxNWMyMDdkODdkYmIyYTBiN2U1ZjRmZTc4YmVjIGxlZ2FjeS10cnVuaworODQzMCAxYTk5Njk1YTQxY2NmNjkxNDY4NGNiY2IwNzlkNDQzNmI2OGY4YzYwIGxlZ2FjeS10cnVuaworODQzMSBkMzgzNWE2YTE4Yzk1Nzg1YzhkMWIxMDAyNjNmOWZjODliNGRmYjcwIGxlZ2FjeS10cnVuaworODQzMiAxZjJkZmNhNTIyMDcyZDEzOWM4ODYyNmY2ODhjMjQ1ZDIxZDU1YWM5IGxlZ2FjeS10cnVuaworODQzMyAzZDZmM2YwYWUwMDUwNjU2MTQyYjE5NzE5YThkZWZlNWE4NjMyNTdjIGxlZ2FjeS10cnVuaworODQzNCAyNGVjNDYyNGVhOWUzMDk5MmI5ZGFmNzlkNDgwZTdhMWZlN2UxYjM4IGxlZ2FjeS10cnVuaworODQzNSA4MzQ0NjFhOGNhNzY3MTQ2MDhkZGEzM2ZiYzRjMjk4NWQ2OTlmN2NmIGxlZ2FjeS10cnVuaworODQzNiAxYTRmYjZmMTJmZmQ1NGIxMjNkMjNkZTk4MDJhMDUyNzQ4NGRjYWFkIGxlZ2FjeS10cnVuaworODQzNyA3NmJiNDBhMWViMDQ1MzIzODk4ZDZiMDBhMTIyMGU4Y2ViZmVlYTRjIGxlZ2FjeS10cnVuaworODQzOCAzNWU1YWNjNjUzMmM3ZTU0YTY5ZDcwYmUyNTU1ZGNiNDNhNzQ2OTlhIGxlZ2FjeS10cnVuaworODQzOSAyM2UwMTQ4MzlhYjA1N2QxNTk3Nzc3MjNmYzkwZjI1ZTgwMmUxZDY2IGxlZ2FjeS10cnVuaworODQ0MCA4M2RlNTUzOWY4ZTQzMjIwYWQ5ZGY3MDZkZDgzODA1NjljYmEyMTk3IGxlZ2FjeS10cnVuaworODQ0MSA0MzA1NDAyMWJiNTc1MTA2MTdhODhkZmRmMTM4Y2VlYTI3YjUxNWY5IGxlZ2FjeS10cnVuaworODQ0MiA4YWU4M2I5YzM0YTAyNDUwODdjZjJkNzE2MTk5ZDczMmQ1Njg4YmVhIGxlZ2FjeS10cnVuaworODQ0MyA5NmE5N2IyYjcyM2U5ZjUzZTA0ZjBiM2Y5ZjhjNDMyNmE4OGI2YTAzIGxlZ2FjeS10cnVuaworODQ0NCA5ZTRkZGI0NTliMTBkM2IwY2Y5NGIyNDVhNjdlMzQ3NTM4MGZiZmRiIGxlZ2FjeS10cnVuaworODQ0NSBiNzA0OGY1YmU5YTE4ZDM5YWFjNGFmOWE1NzFlMzQwMzg5YTcxNjY4IGxlZ2FjeS10cnVuaworODQ0NiA1ZjZhMmVhZGFiOTc4MzVmMjZlNmI5NTMxNjUwODQ5NTc5OTY5MmZlIGxlZ2FjeS10cnVuaworODQ0NyA3MDFkODU0ZDE5MzBiYjZhMWEyNGYyNzNmZTlkZGYxZWFiNzNkZDk1IGxlZ2FjeS10cnVuaworODQ0OCAzZjJiZmMxNTk4OWRjYWU3NTYxNzE3OWNkYmJmNTVkNjkyNDBlMjc2IGxlZ2FjeS10cnVuaworODQ0OSA4YWJiNGQ4YzMxMzQ0OWRhOTkyYTM0NWM2YTVhZWE2NWQwYjBkNmMwIGxlZ2FjeS10cnVuaworODQ1MCBlNzc4NDdlMTE1OGUyMTM4ODRkNGZjMzU4NDM2MTZlMjYyN2FhNDg1IGxlZ2FjeS10cnVuaworODQ1MSA3YTA4ODBmOGI4ZWMwOGVhMTI1MjEzMTY4ZGM2OTJmYTY2NGYzOGY3IGxlZ2FjeS10cnVuaworODQ1MiA4YmJhOWJiODY0YWUyMzhjNGFmOTNhNzc1ZTQ3OThmZWViYzcyZGIwIGxlZ2FjeS10cnVuaworODQ1MyA1YjJjNTk1NDI4ZmE5MWY5OTE5MzZhY2I3MTkzMmI4N2JhZWNiM2M3IGxlZ2FjeS10cnVuaworODQ1NCBiNzcwNzk2NTE5ZjYwM2ZlYTVlNzhkM2Y2OWU1OTBmNzI1MGFiNmZlIGxlZ2FjeS10cnVuaworODQ1NSA3ODFlYjQ5ZDJkNjZmZDBhMDY0MmQ4MmY0YTdiZDFhODFkM2U5YTU0IGxlZ2FjeS10cnVuaworODQ1NiA0MjI5NjA1MjMyODY1MjE1MjljYjY4YTczNDBmNmY5OGY1ZDcyY2ExIGxlZ2FjeS10cnVuaworODQ1NyAyODk0YmI0OWUyZWVlNjg5OTRkMTdkYzZmNDBiZDEwY2Q1MjI3M2U1IGxlZ2FjeS10cnVuaworODQ1OCAxNzBjNDZhNjUwMjIwZTYyYjZmOTYzMmE4OGFjNTZkZThjZGEwODVjIGxlZ2FjeS10cnVuaworODQ1OSA2YWViZDk3MGI3YTk5ZTg0Y2ZhNWY0N2Q5MDdhN2EyNmI4NWY3ZDEwIGxlZ2FjeS10cnVuaworODQ2MCAzMzM4NWY5NGNhOGFjNDJhMTI3NDc2ZTFkYWQwYzQ4NTg0ZjFjZGVkIGxlZ2FjeS10cnVuaworODQ2MSBiNGJiYmEzYWY0ZThjOGEyZTc2NWQ1OTMwYTU4YTEwNWNhMDY3ZWZkIGxlZ2FjeS10cnVuaworODQ2MiAwM2E4ODMzYjRiNzNkOTk5NWQ1MWNiYzY1ZThiYTY0NmZkNTJjZDA0IGxlZ2FjeS10cnVuaworODQ2MyAzMjEyNzU5M2MxMzRkMWExZTNkMjM2YTVlZTU3MjFlZTc0NGE2NDE3IGxlZ2FjeS10cnVuaworODQ2NCAwYTJjMzMxMjAwZjVmZjA4MjdiZjA4OTkzYmExYWE1OTQxMzExYzZkIGxlZ2FjeS10cnVuaworODQ2NSA1OTkzYTA5OWQ5YjAzNjYzMGVkZjBhN2JiNGVkMGM3NmQyODY0OGJkIGxlZ2FjeS10cnVuaworODQ2NiA1YjkwZGE4YTlkY2MxNzY4NDZhZjE2YWEwMTY3ZDFhOWZiMThmYjcyIGxlZ2FjeS10cnVuaworODQ2NyA1MDM1MDA2NTJiYWM0OGZmNDAyZGUyYmIwY2E3Y2E3NWE2NjQwMTdiIGxlZ2FjeS10cnVuaworODQ2OCBhNTczN2RkOTY5NzkwMDllYmY5OTFiOWNjOTY0YTVlZGM3MDZkMmMzIGxlZ2FjeS10cnVuaworODQ2OSA2ZTVkNGVjMDM3OTFjOTZjYzc5ZDk1YmZkMDgxZjY0ZjM2M2ZlMzViIGxlZ2FjeS10cnVuaworODQ3MCAyZGIzYjczNjE4NTNjNTU2MWZlYTMzYWYxNTUxOTRiMjdkOGE5YTg0IGxlZ2FjeS10cnVuaworODQ3MSAzYmFjNTIzNTJjMGJjN2E2ZGMxZWFlNjM1MjcxMmRjYmMwY2E0ODRhIGxlZ2FjeS10cnVuaworODQ3MiBiOGI2YTg4ZjdmNDQyZGY0MGI0NzA2YzA2NDhkNmFiNWY4ZjdhMTI3IGxlZ2FjeS10cnVuaworODQ3MyA5ZTdkNTk4MmFiM2RlOTZlOWE0NWRjYzg1OTY1MWJkMmQ4ODc4MzQzIGxlZ2FjeS10cnVuaworODQ3NCBmY2VhNTdjMzQ2YTU5YjYxZTNmMzczNjRlOWQ1MzVkYzVjYTIzOWNkIGxlZ2FjeS10cnVuaworODQ3NSBjMjRiNTRjMTk1NzE0MmQxZDNhZjYwZGRjZGMwNDRkZDZlMmM3OGIyIGxlZ2FjeS10cnVuaworODQ3NiBmMmQxMzRiZjY5NzNiYTI2NTQ5ZGM0MjkxZDM5NTg3ZWU2YzgwNGI4IGxlZ2FjeS10cnVuaworODQ3NyBkNTIwZDVkMDExMTViNzAyYmNmY2NhMWEwZWI3YTU1NjUwMWQwNmFmIGxlZ2FjeS10cnVuaworODQ3OCA4MDU2MTY5ZWM0NDhlMjMzZDBiNDUzYmMyZmVlOTcyOGEzZGI1ZjU1IGxlZ2FjeS10cnVuaworODQ3OSBkNDM5YzMyY2U5NjM3ZmZjYTYyYjYzOWM3Mjc4OTg5Mzc5YjhlZGY2IGxlZ2FjeS10cnVuaworODQ4MCA1MDg5MjE5NTBmMmM0MGIyYzBjNmY5ZDMwNmJlMWIwYjhkYzliM2RlIGxlZ2FjeS10cnVuaworODQ4MSAzZjU5YjM0ZWI5MGY5NmEzMTE2OGFjMWU4MDJiZjQ4ODgxYzg3NTBiIGxlZ2FjeS10cnVuaworODQ4MiAwY2RhOWYyNDdkN2FjYjliMmYyNGUyZGNmMjg1MDg3MmJjZDc0ZThlIGxlZ2FjeS10cnVuaworODQ4MyA3MzYxZjJmMTg2YWRhMDA1ZGIzOTE0NjcwZWEwZDA5NWVhNDQ0YjA3IGxlZ2FjeS10cnVuaworODQ4NCA5YmE3MmZjNGY1MDM2NGM3MjM0MDc2MDk1MmFhZWNmMmI3NGNjNjA1IGxlZ2FjeS10cnVuaworODQ4NSA1ZGMyNjdjZjQ4OTUyY2MxYmVhMmJhMWRkMzU3MjA5NTVjYWZkZmM4IGxlZ2FjeS10cnVuaworODQ4NiA4ODc0MDhlZWFlOTkzOWI1MTk1MWFmZTFjNWNmYjVkYWQyZDc2MzViIGxlZ2FjeS10cnVuaworODQ4NyA4NzFmMTM1ZGQ2MTI5YjM3MmEwZjEyMjNkMjRjOWYwMTg4OGQ5NDI1IGxlZ2FjeS10cnVuaworODQ4OCBjYzU3NzAwMWY3ZWNlZWQzZjNiYzcwYjIzNzI4MDM4ZmY4YzNiZThhIGxlZ2FjeS10cnVuaworODQ4OSBkMDJhYzYxY2Q1MGYxZmFlNTc2NTE4ODEwOGNlMzQyOTk0MjUwMzdjIGxlZ2FjeS10cnVuaworODQ5MCAwYjVhMjNlYTc1MTU2ZjI3M2U0YWZiMmYzODJkNDBmOGE5Njg5ODlkIGxlZ2FjeS10cnVuaworODQ5MSAyZjM2ZTBiYjM3YzM3OGE5Y2ZjNDBlZjI2MmU5NjQ0Zjk5YmZjZDVkIGxlZ2FjeS10cnVuaworODQ5MiAxOGFkMTEwNmY2NTFhYjhmY2ZmZDVlNDhkNjQ4OTUyZjc5ZGMzMzIwIGxlZ2FjeS10cnVuaworODQ5MyBkZmYyMDI0YWIwMjFmZTI4ODZmMWFhMDQ0ZTMyZmM1ZGU0ZTA4ZTQ2IGxlZ2FjeS10cnVuaworODQ5NCA1MGE0MTg2M2MzNGE2MDEyNzk5MjM3N2M4NTM0ODBhNTVlOGZmMTRiIGxlZ2FjeS10cnVuaworODQ5NSBmMDU1NDY3NDM0MDYxMDQ2NWM3ZDljOGI0OTMwZTBmMDA1ZDQyMjA5IGxlZ2FjeS10cnVuaworODQ5NiBhMmY5OGQ3Y2FkZWQxZGQyMmQ1OGVkMzE0YzYxMDMxZTE2Y2QyNGZjIGxlZ2FjeS10cnVuaworODQ5NyA1OWMzNDlhMTRhM2FkZTM3ZDU3ZWU5YzU1ZGM0OTNjODgxMTA5NWZmIGxlZ2FjeS10cnVuaworODQ5OCA2MDFjNGVjYTNkZTM0MWU3N2MyYjIzNzdkN2Q1NjIwMTdmMzE1MzZiIGxlZ2FjeS10cnVuaworODQ5OSA4MDI0NzBjN2E1MGYwNDg0ZjkxMjU3MmVkZDEzYTI2MmMxOWViNTIyIGxlZ2FjeS10cnVuaworODUwMCA2YTI1ZDgxMTBiMDA5NDUyYTZiMDAwNjlhYzQ5Yjk0YjI5ZTg4ZDBmIGxlZ2FjeS10cnVuaworODUwMSBkNWY4NzQxYTgxMmNmNTU1MDczMjE2YzdjNDY1YWRkNjQzZTkxMDk3IGxlZ2FjeS10cnVuaworODUwMiAwYWQxNWYzMGM4ZDQxMDhjYjYxMThjZjliODYxYTgyMGQ4YWIxNTdmIGxlZ2FjeS10cnVuaworODUwMyBiNTgwNDE1NGFmNGRmMTJkMmNlNjJjNjUwOGE3ZTY4NmRiNjJhYjQ0IGxlZ2FjeS10cnVuaworODUwNCA0OTRlNTUwY2IxOGQxNWMyY2UxMGQwZGVlOTRkNDI0ZDRmNDA0MWQwIGxlZ2FjeS10cnVuaworODUwNSAyOTIxOTMxNzBkYTE1OWZjZmZhYTEzODliNzc0ZWNhY2QzYTYyZWMwIGxlZ2FjeS10cnVuaworODUwNiA2OGYyZDc3MDQxODBhNzJiNGQxMjc4OGUwMGNhMDVkNzRkNGM0NWZkIGxlZ2FjeS10cnVuaworODUwNyBiZjgwM2RmZDQ0MjhmMjc2MTU2MGVlYjA2YzgwZGU4ZTAxZjU1NjM4IGxlZ2FjeS10cnVuaworODUwOCA2YzQ0OWRmZjJmYjg5Y2YwNTRmZDhhZjY4ZWJmMTIwZDAzY2QwNjgxIGxlZ2FjeS10cnVuaworODUwOSA5YTU3Y2EyMjk2ODFiNjgyY2YzYWM1OGI3MjIwZGQ4OGU4YzhiYTMzIGxlZ2FjeS10cnVuaworODUxMCBhYzc1NTRmMjkzMTM2OWUzNWJmOTk1YTkzYmIyODUwN2ZlZmI4YWEzIGxlZ2FjeS10cnVuaworODUxMSAxY2Y3OWVhOGZmYTJhNThhOTBkOGQxMDYyOTUxNzYyODJjZGRlZWM3IGxlZ2FjeS10cnVuaworODUxMiA2MTQxMThhMTM0OGM5NDIxYjdiM2ZmMmYxY2U0ZDA0ODg2NjE5ZWE5IGxlZ2FjeS10cnVuaworODUxMyBiZTFiNzhlNzA3Mjg3MjgzZDM1ZjIyYzcwM2RlMjIxMTcyZDM1OGI5IGxlZ2FjeS10cnVuaworODUxNCA0YzIyOTJlNzA5YjJkMjdkNTM3ZjdjY2FmNmI2MDMxNTg1Y2NmNmJhIGxlZ2FjeS10cnVuaworODUxNSA0N2FkZjE4ZDAxYWRkNzg2M2UwNmJkMzMyYjM1YzEyN2QzOWVmOThlIGxlZ2FjeS10cnVuaworODUxNiA2MTkyMzIyMzZkZGI4YTU4NmYzMzA0NTBjMDRmNzVhYjlmZTNhOGRhIGxlZ2FjeS10cnVuaworODUxNyAxYTQzNjk5MTA4YTYzNzU2NTYwYjRiMzI3NjY4ZDJkMmM4NzNjOWUyIGxlZ2FjeS10cnVuaworODUxOCBhOWUxZWE4MGVhM2Y0YWE1OWY1M2YzMjU3MjUyN2VkZGY4ZWY5NDIyIGxlZ2FjeS10cnVuaworODUxOSA2ZGIzZDUyZDRhNzhhZjA3ZWZhMjMyYzc1YjNhMzIyMWViZGVjYTQ1IGxlZ2FjeS10cnVuaworODUyMCBjMDc5ZTkyNGM5MjcxODk2MWIzYjlmZTI1ZDVhYTBmODE1YzRlZjcyIGxlZ2FjeS10cnVuaworODUyMSAwYjllYzFiMzRhN2E0MDg4MGNkMjljMmI0N2VjYzEzYWEyYjQxY2IwIGxlZ2FjeS10cnVuaworODUyMiA2ZWIxZTM1NDllMmRiYmE2MjZlZDNlNWYyNThjYzVhOTAyMTRkZDI0IGxlZ2FjeS10cnVuaworODUyMyA4YmE0NmIwNzc4ZGFkMjg4NzJjOTMwMDc4MGUzNGZlNTJmMTY4YTk5IGxlZ2FjeS10cnVuaworODUyNCA5NmZlY2M4MGEyOGY3YzlmMTUwMjQ5NGRjMzE5MDQ5MDZjYmNmZjZjIGxlZ2FjeS10cnVuaworODUyNSBlOTM2NjMxMTc2YjYxZDZkMTk5NzI5NDk2MDUwNGYyZmE1NTI1ODI5IGxlZ2FjeS10cnVuaworODUyNiA0ZjEyYzIxZjg3NDc5NjhiYzQwN2QyMjFjYzY1MmU4ZWRmYjU2NGY0IGxlZ2FjeS10cnVuaworODUyNyA2MDczMWIxOWZlMzRkNTdlOTNmMjM0OTBkZTMyMGE3YzE0ZjU3MGYxIGxlZ2FjeS10cnVuaworODUyOCA2YjBhZmJiZmUwYjc4MTlkZDM4NzJhNjVlYjIxODU2MTU4ZjRjZDJlIGxlZ2FjeS10cnVuaworODUyOSAxZGExMjI3MTg1OThlNzUwMTMzNmNlYmQ1MGVkMDlkOTJiMDIxMjNlIGxlZ2FjeS10cnVuaworODUzMCBkYTNjN2Q0N2YyMTBhNmU1ZDVhMDEwYmMyZjI0NjVkMmQ5MTQzNGU3IGxlZ2FjeS10cnVuaworODUzMSBjYWI5ZWE1ZTRlZWQzN2Q3MTExZjI1Njc3ZGZlMDUzYjkwMzI1YmUxIGxlZ2FjeS10cnVuaworODUzMiA3MmQwMDQ5NzFiMjY3OTdlMDA3NTlkMDJkZjQ0NTA5Y2JjNjY2NzUzIGxlZ2FjeS10cnVuaworODUzMyA4ZWMwMjEyN2M0NGJiNDM1OWU3MTExMmMwYmI0ODY2M2FhYjNlYjk0IGxlZ2FjeS10cnVuaworODUzNCA1NjZkMGNhZTkxOTE1YWIxMjJiZGQxNWVkNzBmYjliNjU2NjQ4NTYyIGxlZ2FjeS10cnVuaworODUzNSA4NzdkYmJhM2I1YTgwNDAyYzU2NTljMWVmYmFiMTJkZTkyNzMxNmVlIGxlZ2FjeS10cnVuaworODUzNiAzODc4NGI4NTNkMjMxZDJhZmVlZTY4NzZmZDZmZDMyMzdlMzUwNzZhIGxlZ2FjeS10cnVuaworODUzNyAxMTQyOTk2OGUyOWQyMmVlNGE0YTQ4MDE1YjhiZjdjMGRiZWU2ZGM0IGxlZ2FjeS10cnVuaworODUzOCAzNmRmNDQzNGIzYjMwM2ExNGY1ODZhMzUwODUwNzA4MzE2NzA3OTY3IGxlZ2FjeS10cnVuaworODUzOSA3NGE3ODY2NmRkYzhhZmJkMzBmMzAyYzdjZWM0MTNmNTkyZTFiMDNjIGxlZ2FjeS10cnVuaworODU0MCBhNWQ1MDNlY2E3NDc4ZGQ0OGU1ZjRmM2FlNWRlN2I4MmU5OGFiMTBiIGxlZ2FjeS10cnVuaworODU0MSBlODhkMmUzMjJjNWViZTgyY2JjZWMwZmQyN2JmOWNjYjk4MGY3ZTQ1IGxlZ2FjeS10cnVuaworODU0MiAwZjQxOTNiZDA4ZDBiY2JhZWQ2MjUyNzRiMThiNjQwNGIwOTQyYWYyIGxlZ2FjeS10cnVuaworODU0MyBlNGNkMDkyZjQzZDY2YWFhODY1ZmVkYjIwNzI5NmJjYzg0NGFhOGM5IGxlZ2FjeS10cnVuaworODU0NCAzZDNmYTg3NzM4N2FlZDMxNjRkYzIyZTkzOGYyZGEzNzkzMTZkYzMzIGxlZ2FjeS10cnVuaworODU0NSA5MjVmOTBiNDhkNzM3MjQ1MzdkMDc3NWRkMDIxOTUwYWMwYzBlNzRiIGxlZ2FjeS10cnVuaworODU0NiBlMGYyNDk5OTNhNGY3ZjU5YzkyNjE4MTk5OGE4MTM2YWEwM2FlZjAwIGxlZ2FjeS10cnVuaworODU0NyA2NDNmYTU0ZjIxMjQ1ODFkNWE2M2YzOGUzOWI0ZTI3MTY4OGM1YmE2IGxlZ2FjeS10cnVuaworODU0OCBkOTFjYzBhNTdkYWEzYTQzMmQ3NmQ5ZGRmMWQzZjhmOWYzZDBkMmI0IGxlZ2FjeS10cnVuaworODU0OSBjN2I1YTcyMmQ5MjY0OTRlNjZlMWNhMjRiN2M5ZjMxZDQ2YjAxZDQ3IGxlZ2FjeS10cnVuaworODU1MCBlY2M5NDkwZWM3MTkyNzgzOGIyOTc4MTFmMDhhNzViMjI5MjhiYzg0IGxlZ2FjeS10cnVuaworODU1MSA1ZTVlNTRhNmRiYTZmYWI5MmE4ZWRhMTQ1YjBlN2ZlOTZlYjZhZDgyIGxlZ2FjeS10cnVuaworODU1MiBiZjNmNDg3ZmNkOGI1N2Y5OTA5ZWFhMjdlYWVhMjBlMzc4YWZiNTBmIGxlZ2FjeS10cnVuaworODU1MyA2NTQwZWIxN2U1YjY0NTdiNWNhNWY5OGRlMTM5NzJiYTY5Y2IxOTM3IGxlZ2FjeS10cnVuaworODU1NCA4ODE0Y2NmMmQxY2RiNjU4Mjg1NDY0YWFiNWIyMzU1YzBhMTBkMmJiIGxlZ2FjeS10cnVuaworODU1NCBkYzVjOTY4ZWM5OTJhYWIzZDQwYTcxODlkZjBjNDQzZDFjN2ExYTY4IGxlZ2FjeS10cnVuaworODU1NiAyZjFhNWNhZDI3YjdhMjMwMWJjMDg4NGFkZDIzNjU1NDU4NjI1MjUwIGxlZ2FjeS10cnVuaworODU1NyBkM2M2MDM1YWMzY2JjYWI3NWZiZmYzZTkzYWJlY2Y2NTNiMWNlYzZmIGxlZ2FjeS10cnVuaworODU1OCAwZWIxNGE2NDg0ZjNmOGY3ZDJmM2E4NGU3NWFiNGZkMzEyYzQ2MWMxIGxlZ2FjeS10cnVuaworODU1OSBkN2NhMDU1NDc5NWVlZjNmYjQxZmJmMTk3ZDFjMGQwOGU4Y2NhMGVkIGxlZ2FjeS10cnVuaworODU2MCBmMTU5MDQ0NTMwYjE4MjcwNDY3MjZmYjM2MDI2ZWQ3MTBiYzFmOWZmIGxlZ2FjeS10cnVuaworODU2MSAwYWE2MmNiZWQ5ZjgyZTkxNzI5ZDM5OTM4OWI1OGIxZTcxYjliY2QwIGxlZ2FjeS10cnVuaworODU2MiBmOWYwMjYyYzRjNTc2ZTdiN2Q1MGJiZTQ0ZTM4YzFmZGRjYmI2OWI4IGxlZ2FjeS10cnVuaworODU2MyBkODlhMjE5YjQ5YTcyMTNjMWIyYzg1MGQ1ZWFmMWQ3ZTkyNTI2NTQ3IGxlZ2FjeS10cnVuaworODU2NCA2MjJjOGQ5ODFhNjk1NWZhNjFjYjA1MmZiNWRiMjQyNWMyMGEyMjkyIGxlZ2FjeS10cnVuaworODU2NSBiMDQ0YzQ3OWNiYzgzMDUxODNlNTNmYTNkMmI2MWU3NjkwMjRiYTI3IGxlZ2FjeS10cnVuaworODU2NiBlZGFlZTUzNzgwMjEzM2I2YmUwMjA5ZWQ0ZDBjZTA1NTc5MTIxY2Y5IGxlZ2FjeS10cnVuaworODU2NyBmMTMwNDllZDMxZmRiOTM0MzE3YWVkNWMyMjFkNjZlOTlhZjcyNzcxIGxlZ2FjeS10cnVuaworODU2OCBkYzkxNmQ4YmJiNTVkODgyNDA1ZmQ4YmYzMmFhZWNkODk0NjY1OGYxIGxlZ2FjeS10cnVuaworODU2OSAyOTQ5YzBhNDBiN2JkMDhjYWRjOGFhZDYxNDVjZTdiYzJlODYzZTkwIGxlZ2FjeS10cnVuaworODU3MCBkMTA5M2YzNDIxYjZmNTI4MGJlYjIyYzdkZjhkYWJjOWM3Y2M0YTI2IGxlZ2FjeS10cnVuaworODU3MSBhMjJmY2E3YTVjNWE3ZDEyNzA3ZmY4YWUxZGVmNzBjNTQzMDFmMjYyIGxlZ2FjeS10cnVuaworODU3MiAyNzQyMjY0ZWZkZGVkZDVkOTU5MmZmYzgwNzk0MzMwN2UwODI3NTU3IGxlZ2FjeS10cnVuaworODU3MyA0NGI4Y2ZiZGE0NDEyNDAzMjI2ZmJkYjM4ZTIzNDExNzdhOWFiYjFiIGxlZ2FjeS10cnVuaworODU3NCBkMTM3ZTYyNGNlNDJiMjM5MWFmYjlhNGMzMDUzZjNjMmNhZjEyZTY5IGxlZ2FjeS10cnVuaworODU3NSAxNzliZmQwZmVlMjRhMjczODhkNWU1OTk5NTA5YTc1N2M1MDBjNjBjIGxlZ2FjeS10cnVuaworODU3NiA4ZjdmNDc3MDA3YjM4ODY1MmM1NjdjMjg1MTg2ZTRjNGMzODU5MjY3IGxlZ2FjeS10cnVuaworODU3NyA4YmIxMjgyMTVkYzU4YzFlODlmOGZjZDBkNjUwYTc0MjkwOTE4OTgxIGxlZ2FjeS10cnVuaworODU3OCBhNjRkMTRjNDkxNGYyMTVlNTAxODIxNmFlODMxY2JmYmMxOTNlYTA5IGxlZ2FjeS10cnVuaworODU3OSA0ZDhlYmY3YWZmYWI0YmRhZGI3MGFiZWQ1ZTY2ZWI4NWFjMWJmNDFlIGxlZ2FjeS10cnVuaworODU4MCAzYmI4OTcwZmI5MTgzMGE1OTAxM2M3MDRiNWE2NzIzNzU3MWY5MWI4IGxlZ2FjeS10cnVuaworODU4MSBmM2MwYzE3Yjk3MDhiZjgyYzlkYTBhZGI4ODM4YTk2NjJlYWUyZjk0IGxlZ2FjeS10cnVuaworODU4MiA3N2ZiODgwZWNhNDkxZmUxMzU5NGU2ZGE0ZWY2NGFkODA5MjkyYmIxIGxlZ2FjeS10cnVuaworODU4MyAzNmIzYjMzN2M1NjYzODQyMWNmYTNiZGM5NTVkZWE3ZjBmMzdjMDVhIGxlZ2FjeS10cnVuaworODU4NCA3YmQ1NjVlNGZiYjVhYTA0NTU3MGM3YTVjNjdlZDk3NWEwZmRhODJjIGxlZ2FjeS10cnVuaworODU4NSAxNjc2ZjU3OTUxODBiY2I3NmY0YWVhMWY0NDgxOGRlMWRmMmQ2NTNiIGxlZ2FjeS10cnVuaworODU4NiA4Y2IyYWZkMTAxMTk1MDBlYjBlMGIzMzg2ZTlhM2IxMWZmM2E0NWFmIGxlZ2FjeS10cnVuaworODU4NyAyNjBiMjE3NjkwNjFhYTkwNmExY2MyYTUyZmYzNGZhOTMxZTJlM2IxIGxlZ2FjeS10cnVuaworODU4OCA5NzNlZjM1ZWY0ODI1NjhmMzk1NjJjMzExNWY2OWE2YWNkNzFmOWU4IGxlZ2FjeS10cnVuaworODU4OSA1ZDFmMzM3Y2VlMjY5ZjkxMWFjNmZlMjZhN2I5ZjY3YTZiYzI5ZDU1IGxlZ2FjeS10cnVuaworODU5MCBkOTFmZDdjZDhiZTdiMmY2YmQ0MjZlMTUwNDg2NmI5NjMyNjBkM2IxIGxlZ2FjeS10cnVuaworODU5MSA3MzdlZDY2NTI4OThlOTQxNmM4MDg5OWMzMjkzMGM3ZWEwYjliOGM1IGxlZ2FjeS10cnVuaworODU5MiA2NWM5YmE4MDAwMzAyYzJmNDZhNWFiODBhNTlkMWZmNzJkMzhlMjQzIGxlZ2FjeS10cnVuaworODU5MyAwN2I3ZDQzMjBiMTRhZGFhNTJiYTg0OWZlNzkyMDYzMDBkMDY1MmJmIGxlZ2FjeS10cnVuaworODU5NCA5OGEyODJjZmIwMTNlNzgyMjg3YWMzNDIxYjE5ZWEwZTE5ZGU2OTNmIGxlZ2FjeS10cnVuaworODU5NSBkMTNkM2MyYzk4NjBhOTM0MmYxMjBlMzgzMzZmNGJkODA0YmRmMzk1IGxlZ2FjeS10cnVuaworODU5NiBjMjBiNjk4MGE4NzBmY2Q2MWM4ZmU3MDVlYmVjZTgwZTljNDAxZDAyIGxlZ2FjeS10cnVuaworODU5NyBkZjI5ZTgzYzMwNGZhYTRlZDJiNDgzYTIxNWJjNTkxMjI5NTM0ZTg1IGxlZ2FjeS10cnVuaworODU5OCBkZjAyOGJjNTRlNmYzMmE1ZjBmOGMwYTE3YWI1YmU0MGMyY2YyNDMzIGxlZ2FjeS10cnVuaworODU5OSBkYjhhYzZlMTA5YjRkYzBiOTI4ZDA2YTljY2VkN2JkNzUzODdlNmJjIGxlZ2FjeS10cnVuaworODYwMCA3NDhmYjVhMDA5YTdjMGMzMDE2YTg1Y2IzZDE5MzVmYWYxYmYzM2I4IGxlZ2FjeS10cnVuaworODYwMSBjYzJjODQ3Njk2MzZhNDI1OWY3ZmU5MDVlYTA5Y2U3OWRmNjJlOGJjIGxlZ2FjeS10cnVuaworODYwMiBkNGU4N2FhN2JmZjA1Njc5MTUyNmYzZWZiNGY0ZDYwNGJjMWExNTQwIGxlZ2FjeS10cnVuaworODYwMyBiNDQ5MzRjMjAxMjVlZmQ4YTMyMjJjNzBhM2E4YzM2NGUwMzY0YzM3IGxlZ2FjeS10cnVuaworODYwNCA0MjU0MDk1YTUwMjk4MDFjMGY5MjYzNDdmMDUyMjk0YmRmNTZjYzQ0IGxlZ2FjeS10cnVuaworODYwNSAwNjBmODM5MzJlOTFhNmY1ODIzZTgyMDE2YzhkZmEyYjhlZjM2ZmE1IGxlZ2FjeS10cnVuaworODYwNiA1ZGMwNzhiMjEzZTU4MmQ3MWVhODFjZDBjMDA2YzRkZmMzM2FmMmMzIGxlZ2FjeS10cnVuaworODYwNyAyZDk1ODJlZWUxMTJlNmU4Y2FkZmQ2NGYxYzI0ZTQ5M2QxM2U4NjBkIGxlZ2FjeS10cnVuaworODYwOCA4NTQyYjg5MDM5ODk5NWY5YzAzMjlhYzI3OGI3MTgyNzA5MTQ0YTRjIGxlZ2FjeS10cnVuaworODYwOSA5NDYwNWIwMDI2ZTdmNmJmMzc3MmE3YzA1MWU4YTYyNjY2OWIzMzY1IGxlZ2FjeS10cnVuaworODYxMCBiNGEwYmU1YzQyYmY3NTliNWMyZjBmMjg5YjIxODFiOTQzZjc4ZTNiIGxlZ2FjeS10cnVuaworODYxMSA1NTI4M2Y2ODFhMWMyMTAxZDE5ZTdmMzcwZTFjZjM5Njk2MTJjZmJhIGxlZ2FjeS10cnVuaworODYxMiAzMmY2NTc0MTc0M2JkN2FjNmJkMTg4MzY2ODYyYTNmYWYwZDRiMDFiIGxlZ2FjeS10cnVuaworODYxMyA1NzA0NWY1MWRkMTJiMDRkMjU4NjU1N2Y5MjhhMjJmMTJjMGRiNDYyIGxlZ2FjeS10cnVuaworODYxNCA0MGFiZjIzZTE2OGJmYzNiYWNkMWQ1OTNiZjZmNjFhYWRiMzUzMjljIGxlZ2FjeS10cnVuaworODYxNSBmODBlNzYzYzE3MTdkZTc5MTEwODJlMjUwODFiNTI0OTMxMzNlMTBlIGxlZ2FjeS10cnVuaworODYxNiBhMjg3YzUwMTRlNjZhODE4OGJhZTI5MTAxZTI2Y2ExZjZiZTgwMWZkIGxlZ2FjeS10cnVuaworODYxNyAzYzk1MTI0MDFmNmQ2Yjc2ZjliMTA5YjNlNmNjYWZhMmFjN2FkNDMyIGxlZ2FjeS10cnVuaworODYxOCA5ZjYxNmE0OTIxOTY2MTkxMDA3OWY1Y2YzM2QyNDgyYzU2ZjQ1ZGY4IGxlZ2FjeS10cnVuaworODYxOSAxNDRkYjYzNWI0OWQzM2U5OWI2ZmQxZTViNzM3NzQ1Y2QxNzU3YWUyIGxlZ2FjeS10cnVuaworODYyMCBjMjMzNGQ5N2NlMTRjYTQxNjk1ZTdhOTkzNmI2NjcwZjA0NTdlODBmIGxlZ2FjeS10cnVuaworODYyMSAxNDE4MjAyNDAxMTEwOWRjZTVlMzU3YjQ4ODlhZjUxMzYxNjk4Y2I1IGxlZ2FjeS10cnVuaworODYyMiAzNDFmY2I3YmFkOTAzYmEyOTBlOGIyYmEwOWVmNDdhMTZjNDVhZjhjIGxlZ2FjeS10cnVuaworODYyMyBhMmExZGYwY2E4MDhmNjIzMzQ5MjMyMmEzNzcxNTNiOGU3YWFjMzVjIGxlZ2FjeS10cnVuaworODYyNCBiNzZhNDQxNjNlMGY2MDNiNmRjNGM4YWVlZTJhNmFjZWMzOTgxOGMxIGxlZ2FjeS10cnVuaworODYyNSA0NTg0ZjA4OTMwYWM5MWI0MDM3OTc0OThjM2ZlNWNhOThkNGZhMTlhIGxlZ2FjeS10cnVuaworODYyNiBiYjAxMTEzMDg3ZWJjNTBhMzcxNThjMDdjZTZhOTliMzg1ZGFlNGZlIGxlZ2FjeS10cnVuaworODYyNyA5YTc4Y2UxZGI4ZjY4ZWYxOTg5YTRjMGU0Yjc0YTA3YWQ5NzhlNGJlIGxlZ2FjeS10cnVuaworODYyOCA5ZmQ2MGU2NDBhZTVkMDk3NzEwYWUzNDFmNWM0YjM5NWY2ZGExNzNhIGxlZ2FjeS10cnVuaworODYyOSBkN2NiZDI2NTFlNTU5YmJkZmI3MmY5ODRmOGE2MDZhYzViZGQwYjhmIGxlZ2FjeS10cnVuaworODYzMCAxN2EyNmY5ODYwMDc4ODQyMzE3NzViODE5YWQ0ZTMzYjE3MzE4ZDE4IGxlZ2FjeS10cnVuaworODYzMSAyZWU5ODExYzkyZmQ0YjJlY2VhNjYyMGM5ZWFmNzI3YjM3N2JiOGM2IGxlZ2FjeS10cnVuaworODYzMiA0Nzg2NzAwNmYwNzZhZTg1NTc2YWQyZDgzMjljYjA2ODA5ZjY3YmNhIGxlZ2FjeS10cnVuaworODYzMyAxYTJiZmE5YTAzZjc0MmY4NjQ5OGQ5ZWMyMDdhYWNhMmEwYzY0NTZmIGxlZ2FjeS10cnVuaworODYzNCA2NDdlNjBmYjNiYWMzZjdjMDRiMzEwZjY0MzBhYjM3MDM2NzBmYTIxIGxlZ2FjeS10cnVuaworODYzNSAyZTBhYThkODEzOTY0YmI2YmFkZDlhODBkMzEzYWM5NTQwZWY0MWNhIGxlZ2FjeS10cnVuaworODYzNiAyYjAzYTFkZmRiZDNmZTZjODQ1MzFmMGUxZjQ5OGE5NzUyNGNiMTQ1IGxlZ2FjeS10cnVuaworODYzNyA3OTU5Mjc2MWIzMzFhMDYzZjNhNThhYzI1ZGE1YWZmNTYzNjdlYjgxIGxlZ2FjeS10cnVuaworODYzOCBkM2Q1YTI1ZjNiNzA1Y2EyNTYzZTFhYThlMWM3OGM0YmIyMTM0OWRjIGxlZ2FjeS10cnVuaworODYzOSA5MTgzYTNjNmI4NWZjYTM2MmJjZDg1YmE0ZmNlNTNhYjU0ZmM2MDY0IGxlZ2FjeS10cnVuaworODY0MCAxMTlkMTg0YmI1ZWQ4OTBlODE3NzI0N2ZjNGVmNmE2OTk2Yjg2OWI5IGxlZ2FjeS10cnVuaworODY0MSAzZWM1Y2E4YWY5MWQxYzYzNThlNWFlZTM1NmZkYjM4ZjUwZmVmNjY3IGxlZ2FjeS10cnVuaworODY0MiAyOWRkZjEwNDk4NDI3NGFmZjJiNTljMzJjOGU0ZDQyMDU5YWQ1NWY3IGxlZ2FjeS10cnVuaworODY0MyBhMThlMWNlYmQyOWZjOGNmZjQ4M2QwMDU3ZmZlZDA4ODU4OTA1YjM3IGxlZ2FjeS10cnVuaworODY0NCA5ZTQzMjQ2OGY3NTYwNWQ2YjA0NDVmYmFhOTJmZTBlN2FjYWM2NzkwIGxlZ2FjeS10cnVuaworODY0NSAyNTE0ZTlmZTI5ZjZkNzM5YTNmMTRmNThiODQ3YmJjY2I4MmRkN2IyIGxlZ2FjeS10cnVuaworODY0NiA0MzNkM2UxYzAyZjdkMDY5ZmFjZjMzNDAzN2JjYjM5NWM4ZDc5MmQ3IGxlZ2FjeS10cnVuaworODY0NyAzZTZkNjg4YjBkMmEyNzJiZjI1MWEyY2EyM2EyYzYzZmU1NWVlMDIzIGxlZ2FjeS10cnVuaworODY0OCA5YTNlNmYwZDZiNWE5Nzc1MjQwZjNjMmNhYjUwZWMyMThiYTA5MjU5IGxlZ2FjeS10cnVuaworODY0OSAyZjYwODM0ZWVhZjVkNjNhOTZjYTljODQwZDc3Y2I3MTk5ZGFlMGQwIGxlZ2FjeS10cnVuaworODY1MCAyNTNlMTFiNjExMDZkOGVkZWRkM2ZiMTU5YWQ4NDRjMDY2NTFhNzQ3IGxlZ2FjeS10cnVuaworODY1MSA3NzEzNWRhOWYzNmNkY2VhYTBjOGJkOWNiZDI1YTNlZTE5YTZjZDlmIGxlZ2FjeS10cnVuaworODY1MiAxOWZlODgwY2E5MTlmYTc1NTUzZDZjNzc3MjUzNzMxYTZlYzlhYmJkIGxlZ2FjeS10cnVuaworODY1MyAxOGY4MjRlNWI5ZWFlOWJiNTE2OWFhZTVhNDViNzkwMTY4MmYxMTdiIGxlZ2FjeS10cnVuaworODY1NCBhYWNlNTAyYjhlOGIxMzQ0OWJmYWMwOWJiNDg1NjQwNzY2NDU0ODhhIGxlZ2FjeS10cnVuaworODY1NSBiNTViMjE3ZjJlMGQ3OWMzZjM4NDI2ZDZiMzQxYzZkZTRkNmM4NzhkIGxlZ2FjeS10cnVuaworODY1NiA2Y2I2NmYwY2E4ZDU0MDhmNGFhODhmY2MyZmI2NTQ5ODhlMGI1ZTVhIGxlZ2FjeS10cnVuaworODY1NyAyZmY3NmU5YmM4NWQ3ZmQyNDg4ODgxNzVlMTFiNmYxYjU4YWY5ZTJjIGxlZ2FjeS10cnVuaworODY1OCBlZjlhMjk1M2Y5MzM0MzllZWE0NGQxMzMxYTEwN2MwN2Y1NDc2Mzk3IGxlZ2FjeS10cnVuaworODY1OSA0M2I4YzRhNjk2ZDExNGNkMGQxYzNlNWIxOTk3MDg5YmI3MzI1MDg0IGxlZ2FjeS10cnVuaworODY2MCA2NGUxOTRjNWY4NTRkMDc1MjRiMDNjNjRhYzA3MjE2NjJkZDQ3ZWRhIGxlZ2FjeS10cnVuaworODY2MSAxMTI0OWQ0Mzk4NDA0OWMwNjIxMjJlNDA3NDA4ZjZlMGUxNjc5NmM4IGxlZ2FjeS10cnVuaworODY2MiAzMmFhY2Q3NTNmMzQzYWEzOGJkODhlYWFmNjM5YzcwODM4NzA1N2ViIGxlZ2FjeS10cnVuaworODY2MyAyZTc1NWQxZmY2NjFmMTUwYTg4MWRlMmM4MjVlMjEwZmMwM2ZiZmE5IGxlZ2FjeS10cnVuaworODY2NCAzZWFiYTI1MWEzMjk5OGE4NTJhZGFiMGY0OWY0ZTUwZTI0OGRhYzg1IGxlZ2FjeS10cnVuaworODY2NSBiN2MyZmYzMDcwMzk5YTJhMDkyNGM2YmIxYWZlOWNhOWE0MTM5OTBkIGxlZ2FjeS10cnVuaworODY2NiBlNDcxMDExOWI0MWNkNjEyNDkwNGNkMWVkZDk3NzE0YmExMjI0N2NkIGxlZ2FjeS10cnVuaworODY2NyBiNTc1N2U4N2ViMzJlYTI4OGIwMzQyNWZkOTIxNjQyN2IxNDBiMmQzIGxlZ2FjeS10cnVuaworODY2OCAzYTZiN2EzNzdkYzNhOTYzZjM5YjQzZTRjNDUzMzNkNjExZmI5NWIxIGxlZ2FjeS10cnVuaworODY2OSAxMmI4YTQzNTk5ZDMzNzM0ODFjZGZjYjNhNGM2MWVlMGU0M2RmMzc1IGxlZ2FjeS10cnVuaworODY3MCBiZjdkNzcwNWRjZTVkY2FjMjZlM2MwMDY1YzQ3MjFjZThmMjVkZTNkIGxlZ2FjeS10cnVuaworODY3MSBjZmYxMDVhM2EzODRhN2U3MmY0OTdkNjM3MmJjZGM5OWM1ZjdlZjQyIGxlZ2FjeS10cnVuaworODY3MiBkOTc5ODBlN2MwNWYzMDVkNGU4ZGUzMDQyYjQ4N2RhYTE2NDg1OTc1IGxlZ2FjeS10cnVuaworODY3MyBhYjA0NWVkMTFiYzk2Nzg5ODBkOTgyMmZjZGZlNDJkYTI3NjM3NTkwIGxlZ2FjeS10cnVuaworODY3NCA3ZGE3YmE1YzY1MjU4NGY3ZjE0NzE4MDA2OWFjMTM0ZTcwYTM3NjEwIGxlZ2FjeS10cnVuaworODY3NSBjNDNjYThkZDAwODE4NzY5Yzc5OGIxYzY5YmJjZWIxMTkxNzE5OGYyIGxlZ2FjeS10cnVuaworODY3NiBmZTg5NzA5YzJlYWMwYmY3N2UwMWUwN2ZlMDU4MDI5ZjEwNGJiZTVhIGxlZ2FjeS10cnVuaworODY3NyBjNTdjZWRlM2M3YzAwMjJmZjFiMGVkZTZkNzE2MzllYWRjNzRiY2YwIGxlZ2FjeS10cnVuaworODY3OCBkYzk3NGIzYTZjZjRmNzIyZjZjOGU3MDE5NjMzOGU1ZjJlNjBkYzZiIGxlZ2FjeS10cnVuaworODY3OSBiYTJmMTFhODJmMjc3YzVmZDVkYjlmNjBiYWE5NmE3OTJjM2JiYjE5IGxlZ2FjeS10cnVuaworODY4MCBmNTdhZTY4YWEzYWU1MjZlZDY3OGRmYzQwZjlkMTk0MGJhYjEyMzhhIGxlZ2FjeS10cnVuaworODY4MSAyNGQ2Njg0NTRjYjAwMDIzMTljYTAxY2Q1OTIwYjYwNDk0ZGViZTExIGxlZ2FjeS10cnVuaworODY4MiBlNTU0YjlmNGEzYWE5MjllMmJkNzFjOTZkOTIyODFiZjZiMWU5NzE4IGxlZ2FjeS10cnVuaworODY4MyA3N2Y1YjZjYmVhNjYyNDA4OGI3NWRhZTEwNjdhNDY5OTQ5ZTZiYmRjIGxlZ2FjeS10cnVuaworODY4NCA5YzJlZTZiYmRiYjMyMzdmNjE2ZTIyN2RiOWY1OTNlYTE5NWViMzE0IGxlZ2FjeS10cnVuaworODY4NSA3YjQ1ZDkyZTM4NjFlMzc2MGQ4ODhlYjI2OTdiMGYzN2Y2OTVlYTBiIGxlZ2FjeS10cnVuaworODY4NiBmZTNmYWMxYTNlNTE3ODQ2YmJiN2E5ZTNlNGNmODg3MGI4MTBhMGViIGxlZ2FjeS10cnVuaworODY4NyA2YTBiZjZiMjYzOTY0ZmFiYTcxMTQ1NWY5NzgyMTcyM2QyNDFlYTc2IGxlZ2FjeS10cnVuaworODY4OCBhMTJlZTI3Y2FkOTMyMmIyMTMzYzFjYjNhYmQyMGI5MGYyMjA2M2Y0IGxlZ2FjeS10cnVuaworODY4OSA1MDg4ZWM1YTEyYTZiMmUzMDUwMzQwNTc4ZDRiMTU3NzU5MjMzMTgwIGxlZ2FjeS10cnVuaworODY5MCAzNmRmYzhjYzFkMDEzYTMzMTg3MjRiNzZiNmM4YTgzOGI3NDA1NjM0IGxlZ2FjeS10cnVuaworODY5MSA0ZTFmODlhMTJmOTkyOTMzNzE0NjcwYzAwMWUxZDcwOTNhZTRmY2FiIGxlZ2FjeS10cnVuaworODY5MiBlYjdhMDFiODZmOTMxNmI3N2U5ZTYyYTdjMTBjM2RhZDNmYzJjMWE1IGxlZ2FjeS10cnVuaworODY5MyAzM2NlZjAxOTYxYTcxMTBiMDI3MmRjZmQwMWY5MTA2OThlZjI2OTNjIGxlZ2FjeS10cnVuaworODY5NCBiNzAxZGY4NWMwNDc0NzY1YzY1NjA4NTY2MzJmYmRlYjBlODYzNDBjIGxlZ2FjeS10cnVuaworODY5NSA4YjU5YzAwNGE0OTljMTI2MWUwZDk3NGFlMTdlMjFkYjU0MDU4YmU4IGxlZ2FjeS10cnVuaworODY5NiA0MThkMzg1YTllNDI0YzRmYzZiNzUzMzMyMGE3ZTE1NTQyZWYzY2MwIGxlZ2FjeS10cnVuaworODY5NyBlZDQ5MjRmM2IyYTU2MWMwYzc1NDdhMmM2MjQ2ZGEwOWY4Y2E3ZDJiIGxlZ2FjeS10cnVuaworODY5OCBlZTViZDA4NTE3ZTg2MmE0NzM2NTY3NzNkYWJhMGJlZmEwMmQ4ZjY0IGxlZ2FjeS10cnVuaworODY5OSA3OGE0YTU2MzJhOTFjNTU5YTc5NDNiNjBhMjZhMTE0ZDhjNzIzYzJkIGxlZ2FjeS10cnVuaworODcwMCA4MGJkYmM0OWI0YzQwYjU5Mjg3MmM1MWNkNjQ5ODQ4ZTBlOTJiOWNiIGxlZ2FjeS10cnVuaworODcwMSA4NTZkODdkMjgyYWM2YmEzYTI4YWUwM2JhMjQzODRjMzdiODlkYjUzIGxlZ2FjeS10cnVuaworODcwMiBhODVjZGYwYmVmYzVjYmZkNDJjNmE3ODBhZWQ3N2E0Y2YwNGE5MzMzIGxlZ2FjeS10cnVuaworODcwMyA5OTg1NTIxOWIzN2Y2ODA3MDJkNjE1Y2JlNjdkODhmNWI1NjdiM2UzIGxlZ2FjeS10cnVuaworODcwNCA2MTNmOTc2YTU3YjQ5MmQ4NmVlNmY0YWNlNzZhZGUxZWM0ZjE2NmM3IGxlZ2FjeS10cnVuaworODcwNSBiNTMzNDdjODI2MGVmMTUyNmRjMDM5NTAwNGQ3ZGZhZmIwMzc3Y2Y4IGxlZ2FjeS10cnVuaworODcwNiA0ZGE0ODA4NzA5Yzk1OTc3NTdlNWU1M2U0NWI1ZjExNTM0ODU4NjMwIGxlZ2FjeS10cnVuaworODcwNyAwZWYwZTA1MWIxZjhkMjJjMTNlMmQ0NWFiY2RmNTIyMzA4MzZlMjE3IGxlZ2FjeS10cnVuaworODcwOCBjODkzOTBlNTZiOTE0MmVjODQ5Y2NkNzhhM2VlZThkOTYwZWYyYmU0IGxlZ2FjeS10cnVuaworODcwOSBmYzVlMWUwMDQ5OTQwYWU3NDA4ZDMzZmFkOTYzZTNjZDQ1MTM5N2FjIGxlZ2FjeS10cnVuaworODcxMCBlZmNlZDgzMjZlM2YyNTBhNmE2NTM5Y2Y3MjU1YjAzYzk5M2Y4MWU4IGxlZ2FjeS10cnVuaworODcxMSA0ZTVmYjhkOWFjYjFjNjNjOTU3MDIwNjM5MTkyNWIzMmYxYTczNGFiIGxlZ2FjeS10cnVuaworODcxMiAyNDg0NTk2ODMyM2Y5MTAyZDQwMmIzNjJhY2FhNmU2MWI0YWY2MmIyIGxlZ2FjeS10cnVuaworODcxMyA2ZGZlYzMyMGY5MTA5ZTE0YTIzNjc4ZDdhNzU2NjBlYTI1NjczZjM0IGxlZ2FjeS10cnVuaworODcxNCAwM2I4NzkzZjc2YzJjYmNlZDU4NjMwMzUzMDlhMjg1NDAwMTcyNmFkIGxlZ2FjeS10cnVuaworODcxNSA0NDYyZDNjNjAwYmY5NzJhYzZhZjYyMWIzNzE2MTU0Y2UxMDYwZTY4IGxlZ2FjeS10cnVuaworODcxNiBmNjA4NzY4MzVhNzU5YzIxZWU0NDdhYTBmNGJlYTFjMDY4MmU5NzY5IGxlZ2FjeS10cnVuaworODcxNyAzYjViYmNhZjkxN2Y4N2M3ZWMxYjc1Y2ZmODA2MWZjZTg1OGE5Nzc5IGxlZ2FjeS10cnVuaworODcxOCBhYjY0MzQ0ZTg3ZGJkYjViMjc2OTQ2ZTQ0ODJiOWI2OGI3ZWViMTEyIGxlZ2FjeS10cnVuaworODcxOSAyMWEyODQ5MGJkOTYxY2U4YzFkZjhjZDdkZTEwM2M0OTdmMmQxYWZhIGxlZ2FjeS10cnVuaworODcyMCA0Mjc5ZjRlYjIxMGEyMTRmMGZmMGY0OTcyNzJkNzc0NGY0ZGM3MzU3IGxlZ2FjeS10cnVuaworODcyMSA1YWIyMWQxYjYxZDg2YmYzM2IwMmUzMzkzZGFiNjMzZTRlZjAyMmNhIGxlZ2FjeS10cnVuaworODcyMiAxNWJjZWMzZDMyNTk5ZTY0OThkMWExM2U3NmQ4Mzg5ZDcxYmI2ODkzIGxlZ2FjeS10cnVuaworODcyMyA0Y2YyMGZhODgzYTkyZTFlNzRhOTE3ODVmYWYwODM3NzZjYjJjYTUzIGxlZ2FjeS10cnVuaworODcyNCAxNDk2NDQ0ZThjOGI4MzA0N2QyNGFhZWZlMmVhY2I1NjAzMzk1ZGI0IGxlZ2FjeS10cnVuaworODcyNSBhZjExNGVkOWU2MWRlZDYwYTdiZTk3ZDk0ZTkzMjA4ZjUxZWE2NTJjIGxlZ2FjeS10cnVuaworODcyNiBmMTBhYWQ3M2UwMjkzMTEwMjU3YTRmMzBjNjQ5NDI5NWYwYjI2NTZhIGxlZ2FjeS10cnVuaworODcyNyAzZmE0YjdhZTBlNmJjMWYwYWFhZTQwMWYwNWNjOWJjODBmNmZjYTBhIGxlZ2FjeS10cnVuaworODcyOCAzZTBhYTcxNjJjODgxZjYzZDdmYmVmYjg1N2YxYzZkY2I2ZWZmNTcwIGxlZ2FjeS10cnVuaworODcyOSA2NDI5ZGI1ZDBhZjcyZDAwOTFlYjA5MWU0NDUwOWZhNjdjMjAzMTM0IGxlZ2FjeS10cnVuaworODczMCA1MjI0ZWQ4NzdiYWU3ZDU2YjRkZTg0NTZiMjM5NzU3ZjRiM2ZiYWMxIGxlZ2FjeS10cnVuaworODczMSA0Yzc2ZWUwMWRmMDhkYjNjNGNhNDFkMDAyNTNkMjY2NzdkOTI2Nzk3IGxlZ2FjeS10cnVuaworODczMiBmNDQ2ZTA4YWMzMDI3Yjg2ZjI3YjNhZDY2YTc3NGJjOTg1ZGM3OWZmIGxlZ2FjeS10cnVuaworODczMyBjZTIwOTI3MTQ0ODQzNjllODhjYWUyNjJiMjY1NDQ4NTJlMDJhOWExIGxlZ2FjeS10cnVuaworODczNCBkZGQyNTUxMGYzZmI2ZjMxYmZmZjFhZjQ4MWU5NTc1MzY3NTYyMWU0IGxlZ2FjeS10cnVuaworODczNSA3YzFlYTg1ZTI2ODQyYWJkNDJkYmVhZTI2MzJjMDllYjBkNTlmODMwIGxlZ2FjeS10cnVuaworODczNiA0ZmJjYzQyODkwMTI2YzJiNmM5OWNhNjQ5ZTM5N2MzNmFkMjM2YzcxIGxlZ2FjeS10cnVuaworODczNyBjMGNkMjNlNzA4YjU4NmVkMjg4ZDJlZDMxZjJlNjBjMGZjOTYyYzRkIGxlZ2FjeS10cnVuaworODczOCBkOTc5NDFlYzVlZWQwMTE1NGFhN2E2YjMxNjk0ZjY0MDZkOWRmZjRkIGxlZ2FjeS10cnVuaworODczOSA1MDc0ZmFiMjkyNWQ4YWMwYTg1M2FhNWM4MTg2ZGJiN2E5YTQxMmZiIGxlZ2FjeS10cnVuaworODc0MCBhYTZlMDUwNGUwZjJhYjY4NzM1MGJjMGE2Nzk4YjFmMWM0OTE1MDgwIGxlZ2FjeS10cnVuaworODc0MSAzZGYyMmVkY2VjYWQ4Njk3MTJkOTVjYTZjNzI2OGIzM2RjZjc3YTAzIGxlZ2FjeS10cnVuaworODc0MiA4YTUwMjQ5YWE3MmYzM2QyYTkyYTY2ZGU5OGIwMGUwZmQzZjY0YzllIGxlZ2FjeS10cnVuaworODc0MyA4YzFlMDIwODkzNzk4ZTBmM2Y5M2ExZTI3MjcwN2YzOTMyZGEwMDVmIGxlZ2FjeS10cnVuaworODc0NCBlYjhkMWEwOThiOWRlY2IxNDZjZjFmMjYwYTg3OTgxOTk1Y2FmMzFlIGxlZ2FjeS10cnVuaworODc0NSAwMjBhM2M4YWIwNzBiYTM2NjQ1ZTAwOWM4NzhjZTJhYzA3ZmMxNTA0IGxlZ2FjeS10cnVuaworODc0NiAxM2M1MzI5ZDJjMmU5MTJmYWExY2ZiM2ZlMDlmNjkzODFjNThhOWMwIGxlZ2FjeS10cnVuaworODc0NyBkZWE4ZGM0YjhlMjI1ZGZiYWQ1MWQ4MDI0MWIxYzkyNGRjOGIxOWIxIGxlZ2FjeS10cnVuaworODc0OCBlOTkyNjI0MWZhYTQwMzJmYmYyZDEwZTIxNGE0ZWFkNWMwOWJmMzU4IGxlZ2FjeS10cnVuaworODc0OSA3NzU4OTk1ODNkYTY5ZDEwNGEzNjE4YTljZmM1ZThhZWJkNzJjNjg1IGxlZ2FjeS10cnVuaworODc1MCA0MzMzNzc1YjU1ZmRkZWY2YWU1YjRjNmI0NGUwM2Y3OTgzNmU5ZjBmIGxlZ2FjeS10cnVuaworODc1MSA3YTM4MDhlZGM1MzkwNDM1MTA3YTExZWI5ZTQ5YzViZDVkYmZmYjkyIGxlZ2FjeS10cnVuaworODc1MiBmOWZiZGU3NWM1MzY1YTVmNTgwODk2NzA0ODE0YjFiNDRkZDkyNDhmIGxlZ2FjeS10cnVuaworODc1MyBlZDc0Y2M1OWM4YTJjNTA0ZDI5MzllZDRmNjlmYmMwYTY0YzdkM2ZlIGxlZ2FjeS10cnVuaworODc1NCBiYjU0NzJmYjQ4ODViOTUwMmNhMmM3M2JkZDdjZjlhNzFkMmYwY2MwIGxlZ2FjeS10cnVuaworODc1NSAyOTg0NDE2YTFiMmIyMzhjNmZjNWZjYmJhODBjNGM0NmNjMjBlYTBiIGxlZ2FjeS10cnVuaworODc1NiAwNzg2MDA0OWYxYzQ1MTVmZjkyNWNjYTVjOTE0MWZhOTMxODhkNDQxIGxlZ2FjeS10cnVuaworODc1NyBhMjY2ZTk0Y2E1ZTFjZDk0MjgzZWFkNjcyZjExZTEzM2M0ZmVjNTZjIGxlZ2FjeS10cnVuaworODc1OCAzM2VmN2JhNmU3NGJhNTEzNmJkOGJjMDhkMGVhZWE2MzRmYTY1YTQ2IGxlZ2FjeS10cnVuaworODc1OSBmNjgzOWU1MzJiZTJiNGVhNTEyNTIxMjgxNDBkYjgzODZhYzcyNTVlIGxlZ2FjeS10cnVuaworODc2MCBlYmRjNDhkMDZjZjg1ZWQwMjk1ZGE2MmM3ZTczMDJlYWRjZmVhZjBlIGxlZ2FjeS10cnVuaworODc2MSBkYWE2MmMyMjY0YjUyNTk5NTY5NzFlY2U4MTUwNWM0ZjA2MjZkYTE2IGxlZ2FjeS10cnVuaworODc2MiAzMzcwNTRlOWQ0ZmE0Mzc1NjVjNGY4MTcyNTIzNGYyNWVkZDVjNGRmIGxlZ2FjeS10cnVuaworODc2MyA4MmNkMmJhYTQxMzY0NmY2Y2M4MGQ1YmE1YjllODBlODdhMjliNTI4IGxlZ2FjeS10cnVuaworODc2NCA0ODlkYjM2MmNkNDhkMDgzM2E4YmE4OTAyOWE3NGE4M2M5YzE0MDM1IGxlZ2FjeS10cnVuaworODc2NSA1ZmE0YjEwMzNiMDZmYzE5NTFlYjU4Y2YwOGE1MzZmNTJiYmNiYjY0IGxlZ2FjeS10cnVuaworODc2NiA2NTQ0NjA0NGZiOGY3MTI5YmQ2ZWI0MGZhYTgyZjY1ZjZmNWQ3ZDVmIGxlZ2FjeS10cnVuaworODc2NyA0N2ZhM2RkZmIwOTBjOTViZWZjYjI3NjAzYzYyZjgyMjQwZDE5NjIyIGxlZ2FjeS10cnVuaworODc2OCAzZDYxNDc0YTE1NTBkODY1NDU3MzE5Yzk4MDdmYjFkNTNmMDZkYjU0IGxlZ2FjeS10cnVuaworODc2OSA4ZTMxZjFjMDdkYzViMmVmMDExMDRlYTlhYmIwMzY2MzI5ZDhjODRmIGxlZ2FjeS10cnVuaworODc3MCA2YzBhMjY1OGExNTYxMDhhMDRlOWUwYjMyYmI1YzlmOTdkMTgxMzc4IGxlZ2FjeS10cnVuaworODc3MSBhODRlZjBhNzExYmEwOTJiNzA4MjdmMDEzYTEwNjc1MDZjNTAyNTkyIGxlZ2FjeS10cnVuaworODc3MiBlYWJkZTg2ZDk3ZjA2OTdmMjU4YzliN2JjOGNmMjRjZTllYjNiOTNiIGxlZ2FjeS10cnVuaworODc3MyBjMGQ0M2Q2ZjUyNDBkZTdlOTkwNjZlODFkOTY1MjdiZWI5ZjBiYjJiIGxlZ2FjeS10cnVuaworODc3NCA1MDk0NzRiODhiMDFjNDE3YzMzOGMzODhkYTE0OGI3NmJmOTQzYzhjIGxlZ2FjeS10cnVuaworODc3NSBlYmQwOTk4ODk3MjFjNDgwOWFmMGZlNThlZDg4ZTA4ZmMzNThlMzFkIGxlZ2FjeS10cnVuaworODc3NiAwMDU0YTM4NDBhNzUyYTUzNzAzZDJjMWRhMTQyMzIzYWE2ZDJmMzEyIGxlZ2FjeS10cnVuaworODc3NyA0OTEwNWI5ZTk5NDc0NDc4ODMwYjU3OTg3MzAyZDU2ZWI5YWNhYzMyIGxlZ2FjeS10cnVuaworODc3OCBhNDMzNTJmMGUxZWU2YmFhYWZiYTg3N2IyNjkwZmQyMzg2NjRhZGRjIGxlZ2FjeS10cnVuaworODc3OSBhNjJkNmQwNjNjMGYwODk4M2EyNmU3MTE3NDZkM2YzZjQxYjAxZTBkIGxlZ2FjeS10cnVuaworODc4MCBjZjBlZmZjM2Y1ODVjNzg4YzhjYTA3MzQ1NjdiYTAyMTFiOTc3MWQ2IGxlZ2FjeS10cnVuaworODc4MSBiMzc4YTA4ODY2MjAxNTFlZGMzODg5N2Y3ZTdiYzRkMjMxNDhmOTMzIGxlZ2FjeS10cnVuaworODc4MiA2ZTFmYTc2ZTc5NDA3ZDI0M2FiZmQwNzliMzdjYTc2ODM5MmZiMmVjIGxlZ2FjeS10cnVuaworODc4MyA1OWE5ZmJmNTkxMjg2M2ZhYTBkMTc4NDkwNzFkZjI3ODhmZTZhZjk0IGxlZ2FjeS10cnVuaworODc4NCBlMWVhNGFkNDYxZjkyM2I5OTk5ZTBlODI4OWUzOTA4ZWJlMmRlZjA3IGxlZ2FjeS10cnVuaworODc4NSBlYTZlNTg3MTM2YjZlM2JiZDAwODFhODg0Y2UxOTJiNjhkZTA2NjdkIGxlZ2FjeS10cnVuaworODc4NiA5MDRhNGQ3ODNhMzM3MmIzZjIxZmQ1MGM0ZWI1MmE5NjUxODgxZDFkIGxlZ2FjeS10cnVuaworODc4NyBlYjUxMjhlOGE4ZThlM2Q3Mjk2ZTg3NjE2YmJmNWQyZGU2OTY0YmRhIGxlZ2FjeS10cnVuaworODc4OCAxM2ZiZDk4ZDgxY2MwNjFjNzM5NWIxYjcxZThiMzZkNGNlZjJmODdmIGxlZ2FjeS10cnVuaworODc4OSA3YmE3OWM5NDliM2E3Mjc4ZmFmYmUwYmU4ZWUyMThiYjllNzE4NjdiIGxlZ2FjeS10cnVuaworODc5MCBiOTQ1OGRjOTlkNTBhMGYxMzk0MDg2ZjgzOWE4YTA2ZjI3MTliZTliIGxlZ2FjeS10cnVuaworODc5MSA0Yjc4NWU1OWU4MzEyMjAwNTUxZWI3YzgzNTQ4ZGJlYWU5MmYyZTgxIGxlZ2FjeS10cnVuaworODc5MiBkMjU0ODljNWEyMmY0ZmZhZmRiMDdhY2Y4ZGU0YzE3ZGFhOWQ0NzQzIGxlZ2FjeS10cnVuaworODc5MyBjMjM1OTY2NWJlODA3MzBjZTEyYTdlZjZkMzI4NzNlMzc5ZjQxOWY3IGxlZ2FjeS10cnVuaworODc5NCA3MWI0MGNjNGNjMDM3MmYzY2RlYmUyOTk0ZmIwYmRlMTUwZjg4ODdkIGxlZ2FjeS10cnVuaworODc5NSBjZGM1YTQwZmNmOTc0ZTk0MmVlNmY3OTk0MWYyNDYyMDVhYjU0MDMwIGxlZ2FjeS10cnVuaworODc5NiBiN2YwYjk4ZjUzMjUxN2Y3NTM4NGE3NzJhYzY1N2VmNzljYTBhOWQ4IGxlZ2FjeS10cnVuaworODc5NyBhNzVjYTc0ZGVlY2FjYzg4YWI5M2UzZDAwYWY5OWFhM2IyM2I3OTI1IGxlZ2FjeS10cnVuaworODc5OCA5MTNjZDFmMzczYmU0N2I2ZTkzMDVmZWNiZTJkNjMzZGNjZDU4MzdkIGxlZ2FjeS10cnVuaworODc5OSAwNWQ5NDNjNDU5N2MyZGMzZWVmODhkOGVlZDQ1MTU4MzU4NTI0NWNkIGxlZ2FjeS10cnVuaworODgwMCAzZjhkN2Y3NGYxYmM1NDlhMzQ2YmMyZDBkZGJhYjU2NWJhOTg3YjMwIGxlZ2FjeS10cnVuaworODgwMSAyMGI1NjQ3YTA2N2ViZmVmZmY1ODhiYjU4YjcyNzM5ZDA4NmRiNjE1IGxlZ2FjeS10cnVuaworODgwMiA1Y2RjM2NhMDUzZDZlODEwYTU2NTU1MGZjMTI0MDJkN2E0ZmJmNzBiIGxlZ2FjeS10cnVuaworODgwMyBiMDE4Mzk5NDAyMWIzNzJmY2Y1MTNhMjg4MzEwNzM4MWE0ZTg3NjNjIGxlZ2FjeS10cnVuaworODgwNCA0YjQ3NzViNDliZmFjNDRiNjE3YTY0Y2Y5MmZhNDBlNjFhYjY4YWYzIGxlZ2FjeS10cnVuaworODgwNSBkZmVhZjk2NWY0OGFkMzJmMGJiMGU5ZTZjNTIwYWE5ZjI1YzgyMTc1IGxlZ2FjeS10cnVuaworODgwNiBmYmRjYTE3MjgzYzIzYmYwMDRjZWZmMjc5OTcyMzIxYzE3NWQ4MmRmIGxlZ2FjeS10cnVuaworODgwNyAxNzJjN2ZlYmQ3NTU3YTUwMGUzNjk3NzJhZmFlMmMwNTEzZTAwMDNjIGxlZ2FjeS10cnVuaworODgwOCA5NzljNzEyMzhlNWJiMmMzYzI0OGE5ZmYwOWFjMjhhNTI1ZjQxM2ZhIGxlZ2FjeS10cnVuaworODgwOSAyZjRhOTI1ZThiNGIyNDE0M2QzMjhjMjA2M2JiZTM0MWY4ZGZmNGQ4IGxlZ2FjeS10cnVuaworODgxMCBkZDEwMjc2NmVhNTEyMWJjYjMwMzIwM2Q4MGVjNmVlYzgzMTgwMjI5IGxlZ2FjeS10cnVuaworODgxMSBmYzFjMGEyN2JiOTYzOGE2ZTBkMTYwNTk5YzA3YTFhYWU1ZGY5NGNkIGxlZ2FjeS10cnVuaworODgxMiA1NzVmNmI5MTBmODhiNDE2YTc2ZTNjMzIzMDI2M2I1MGNjMTU5MjU5IGxlZ2FjeS10cnVuaworODgxMyBhNDJiMzFmZTk3NmY1NTQ0MWEyOWNkNDU5Y2Q1MGJlZWE1MmZiZjJjIGxlZ2FjeS10cnVuaworODgxNCA5ZTQyOTUxOGNiMjAxNzQ1MGRkMmRkYWM1MjBmYTJjNDllZDkxMWExIGxlZ2FjeS10cnVuaworODgxNSA0YjA3NmZjNWJhNDAzZWFhZDVkMDBmNDg5ODExNjg1NzNkMWNlNmQ4IGxlZ2FjeS10cnVuaworODgxNiA2ZjhlYjRhMWZhMDdlYjc5OTE4MWQyZjBjMDE0MmUzN2IyNmFlY2QzIGxlZ2FjeS10cnVuaworODgxNyA1OTNmNTQxMjk2NjE2YTM5YzhkMzkwYWRjNDI0Nzc4NmM1YTg2ZmExIGxlZ2FjeS10cnVuaworODgxOCAxZWQ5MTRmOGJmMGEwZmVjOGM5OWYyZWZiYTNmODkyZGQ1N2EzMTVkIGxlZ2FjeS10cnVuaworODgxOSBlOWVkMDY0ZjM5ZjUwNWNmN2I1MDlkZjc2MjUzYjE1ZDFmZjJhZDNlIGxlZ2FjeS10cnVuaworODgyMCA2ODlkZTYxM2VhMWNjYTI3MTc3OWIzZGYwYTIyZTc4ZGM4Y2ZmYTI2IGxlZ2FjeS10cnVuaworODgyMSBlNDA4N2NkNDBjODVkODAwZGJlZDM2ZGJjZjFmZDY4OGQ2MTNkODJlIGxlZ2FjeS10cnVuaworODgyMiA5OGRhY2M4OTczYTEyMDJmNjQyOGFlYzJmNDY5YWI1NDU5MmU4MjFjIGxlZ2FjeS10cnVuaworODgyMyBhNWYyOWE1NjBjMDlhMzM4ODQxYTdhN2QzMThlNTY4ZWRiNjcxNTI5IGxlZ2FjeS10cnVuaworODgyNCAyNjU2ZDFlZWE3OTIyZGI5ZjJkNTBkZThlYWZhNjRiMjhkNjIzMDM2IGxlZ2FjeS10cnVuaworODgyNSA2YTNiOWU3ZDQzYzEzNzdkMjMzZjM5OGQ3MDJlYjM1YjAyY2Y1M2Y3IGxlZ2FjeS10cnVuaworODgyNiBiNzMzMWJkMGNjZjU3N2NiOWE5YTYxYTgzMDkxMzRiMDYyY2U2ZGIyIGxlZ2FjeS10cnVuaworODgyNyA5YTEyMWIzZmJlYmJiYWYxYTVhNTE1MWQ0NWMwNDFiMTYxMDRiNWM0IGxlZ2FjeS10cnVuaworODgyOCAzODY0ZGYyOTQ5NzlhMDY5NjFmM2NiOTdkYWNlYzVlMGFlNzdmZWNjIGxlZ2FjeS10cnVuaworODgyOSBiNjJhN2E1OTQxNGU3ZjNlMGY3ODU1OTdlZGM1OTRmOTY0ZDU4Zjg5IGxlZ2FjeS10cnVuaworODgzMCA2NjZhY2NkNjY4NzhiNzY4MTAzYmM4MDFmMGE4YmVlNzkzODRlZWMyIGxlZ2FjeS10cnVuaworODgzMSBmNGRjYmMwMjdjZDIyZWU3ZWE0MWI3NjI2M2FkZjdkNTVhMGNhY2U0IGxlZ2FjeS10cnVuaworODgzMiAyZTQwZTI3ZjhiMjYwZmM0NzYwYjQ3MTNkMTk3NGJmZTQ0OTZiOGZhIGxlZ2FjeS10cnVuaworODgzMyBhODU3ZDJmODczMzY0YzBmM2U4Y2RjMmE5OTAwYjVmNDI1NTUyNDIwIGxlZ2FjeS10cnVuaworODgzNCAxNzRjMWJjYzhlMmQwZDgyOGVmOTZjODI4NjczZTc3ZWMyOWJkMjcxIGxlZ2FjeS10cnVuaworODgzNSA5ZTgyZGQ3NjI4OGU4ZjE5MzBhNDliZmMzZjhmYjJkZjczZDQ2NmRhIGxlZ2FjeS10cnVuaworODgzNiA3ZGY3OGY5ZDZkMzQ3Nzc3YWExM2E2YmI2ODllMzNjZDEzZTBlZjZlIGxlZ2FjeS10cnVuaworODgzNyBkNjRlODVlZDdiNDQxZGFkN2RmMjA2OGM1NjBjMmYyNzVmNzBkNjNmIGxlZ2FjeS10cnVuaworODgzOCAwZTdlMjAwNDk2MzcyOGEzNjUyZWVlZmYwZDQ3Y2ZlNGFiNzQzNTc4IGxlZ2FjeS10cnVuaworODgzOSAzMjY2MzI2N2ViNDA2MTk2MGMwNTg5ZTBjYmY4MjFhNGIzOGNjZjU5IGxlZ2FjeS10cnVuaworODg0MCAwYzc0Njg4YmMxZmZhNDkzNjBiOWY4M2E1OGJkZWVkMDQyMWUwZDNjIGxlZ2FjeS10cnVuaworODg0MSBmMzliZWUzZmYyMmJkYWMyZjFlMjJhZDliMDJkMjk4MWE4N2MzODc3IGxlZ2FjeS10cnVuaworODg0MiAyMWI5M2Q5ODkyNmI4MTVhYzllY2UyODRkNGI3YzY0ODJlY2E3NmRlIGxlZ2FjeS10cnVuaworODg0MyA3MWMzYmViMjk0OTk5ZGFhYWE4MmY4NDc1NjdiMDljNTAwZWVkZGY1IGxlZ2FjeS10cnVuaworODg0NSAyYzI5Yjg5ODI2NDMzN2QwMmEwMGY2ZGQ1ZDk0ZWU1OGE1MGRjYTY4IGxlZ2FjeS10cnVuaworODg0NiA5NGUwYjMxZmRmNWYyODMzMTU4ODg3MWZmMWRhYTI1NGM2ODFkOTdkIGxlZ2FjeS10cnVuaworODg0NyBmODIyNDA0NmNjZjhjYjMzNjI1MTRhODZjZTM5ZjlkN2E3YjVlYjE5IGxlZ2FjeS10cnVuaworODg0OCAzNjQwNTMwOTM5N2ZjMjY0OTA2N2I5MjhlMDJlNmJkMTFmMDMyNzMyIGxlZ2FjeS10cnVuaworODg0OSA2NzhhM2YxZDBjODA5YzcwMGJkMmY0ZjY0OTNkOTM3OGI5OTViZWUzIGxlZ2FjeS10cnVuaworODg1MCBjNzEzOWI2ZjczNDA2ZTFiYjI4ZjEwZjQxYmNjODEzNTBlNzdlMTMyIGxlZ2FjeS10cnVuaworODg1MSA0N2E5YTZkZTIzZmZjMjNhZjI4YzIzYzM4Njc0NTU0YWFjNzQwNjJkIGxlZ2FjeS10cnVuaworODg1MiBmNmVmOWFmNGM4Yjk1NGE1NWE3YjRmOGViYWVjZDE2NGM2NThkYzhlIGxlZ2FjeS10cnVuaworODg1MyBiNjgxODVkOTQ3NzdjMGQxYWUyYTQ5YmI0OTUwZGI0OTQ5ZGQwOWRhIGxlZ2FjeS10cnVuaworODg1NCAxYWZjYWM3NjU4ZTU3NDZlNDEzZDRiMjBjMzFlNjM0MTk2Y2U2M2M3IGxlZ2FjeS10cnVuaworODg1NSA0Y2IyMjNmMjkzMzc2ZmE3ZmYwNmQ2MGUzOTYzNmJkNzcyZTExOGFkIGxlZ2FjeS10cnVuaworODg1NiA4OTIyYzdmM2EyODU1MTE4OTcyMTMwMmM4MjJiZjYyZjFkMDUzOGY0IGxlZ2FjeS10cnVuaworODg1NyBiODNlYTJmZWYzMzJiMWFhZThhZDFiM2FiMGYyMjFjYjIxMzE2ZGUyIGxlZ2FjeS10cnVuaworODg1OCAzN2ZmNzFjZDk0MWViMDRlNzQzYmFlNWU2NWI0YmJkZGVjOTE1NDQ2IGxlZ2FjeS10cnVuaworODg1OSA0NDkwNDc2NGRhZmE4Yzc0ZDMyY2Y5NmQ1OTQ1NWMwZDlkYjhhZmMwIGxlZ2FjeS10cnVuaworODg2MCAxNmNkMzk4MDVmZDUxODdhYjZmODJmZmFiZDFmOTMxYjllY2U0MDY4IGxlZ2FjeS10cnVuaworODg2MSAzZjE5NTI1MzQzNjdiOTkxNTQ1MjQ1NjhmNzcwZTk1ZjM5MTcxNDUzIGxlZ2FjeS10cnVuaworODg2MiAyMzhhOGI2MDk2ZTFiYjFmMjdjNTQyNTkzOWExZDJmZjI3M2M2YjdmIGxlZ2FjeS10cnVuaworODg2MyAxNGQ1OGI1YTIxYzQwODY4YmMxYjkwYWM4ODk1NWQ0N2U1NTY4ZWZmIGxlZ2FjeS10cnVuaworODg2NCA1MDVmNTIwMTBmMmFmOWRmNDk2ZjVhZjZjNWE3NjYzM2U1ODgxZGQzIGxlZ2FjeS10cnVuaworODg2NSA4MzNmYjAxNDA5ZjM0OWE0Yjk1YzdiYmI5NjExNDM4ZGQ0MmRlZWUzIGxlZ2FjeS10cnVuaworODg2NiAzN2U2OGI0YTUzOTczMzYzMjBjNmViMTMxMjAzN2ZhMmVlNTJlNmU3IGxlZ2FjeS10cnVuaworODg2NyBiZGY0ZTI3ZjViOWUzZDEzM2VjYzJkNjk3MWYwYTQ0OTlkODllMjk4IGxlZ2FjeS10cnVuaworODg2OCBhMmRmM2M5ZTVmNDNhY2ZiZjQyNjZhYmNmMWUxZjQzMjllNGY5ZGE4IGxlZ2FjeS10cnVuaworODg2OSA3Y2JlZjBkNzRlYTM0MWFiMTgwMjM0MzFkNDdkN2I3N2M5ODRkMDIzIGxlZ2FjeS10cnVuaworODg3MCAyNGYyOTU4NmRlOTY5MDM2N2ZiMGQ5MjhkMWQ2MjJhYjU3N2U5MDdlIGxlZ2FjeS10cnVuaworODg3MSBmNmYyNTExYmI2YmFhMmY4MGM0YThjNWY0MjMzOGJhYmU0NzZjNWEwIGxlZ2FjeS10cnVuaworODg3MiA3ODRhMTZmNTY2NDM0NzQ4ODg4NjdlZmQ4MWE2ZmJkNDg0MmYzOGU5IGxlZ2FjeS10cnVuaworODg3MyAyMmRhZTI2MzdlMDgyZWQwNjg3OWU0YWNhZjhhMzVhNjZkMjMyNDRmIGxlZ2FjeS10cnVuaworODg3NCA2ZWE5MjZiNDZmOGFlYmJmZjBlOWQwYzhhMzgzYmM5NGNhZTMxODk4IGxlZ2FjeS10cnVuaworODg3NSA0ZDU1YmZlMWZlYmJlYzYzNjIxNjYxMmNkZDFhOWFlZmMwNDI2OGQzIGxlZ2FjeS10cnVuaworODg3NiA5ZWQ5ZWI0YTdmMjNhNGZmODE1Mjk3NjE1MjFkYzJkZjc0NTNjY2VmIGxlZ2FjeS10cnVuaworODg3NyBjN2ZlMzg5MGYxMDNlNjY0ZjA4ZDkzMDY3Nzc1ZWNjNTBiZGQyZmQwIGxlZ2FjeS10cnVuaworODg3OCAwNDkwZjZhODRkMzQ3NTE2OThlMzljZmMzYjg5ZjBjOGM5M2EzZDQwIGxlZ2FjeS10cnVuaworODg3OSAzMjI0ODc4YmQ4YjNhOGUwMTkwZGU4NzVjODdhYTExYmVmNDBkMWYzIGxlZ2FjeS10cnVuaworODg4MCA5ZjgxMzRlOTU1NjViNGE2ZTQxZThhMDg5ZDJiZjg4YjRhODMzNmE5IGxlZ2FjeS10cnVuaworODg4MSA5NDUyYjc3ZDY3ZWM5ZmEwZTZmMzMwMmMzMDkyZGE1ODA4YWVmMGY2IGxlZ2FjeS10cnVuaworODg4MiBlZDZmNmYwMzIyMTcxOWIyZjY2MGU4MGYxOWE5MDJiNTdlZWQ2MmM3IGxlZ2FjeS10cnVuaworODg4MyA2NTE3N2FiNmE2OTZjNTE5OWEwY2ZiYmRjZTBmNDBkNmQ3YmM4ZTFiIGxlZ2FjeS10cnVuaworODg4NCA4MTE1NGE1MWMxNmVkMmE2ZGVmZTE5MmJhMWUyYzVmZGQyNzE0MzMzIGxlZ2FjeS10cnVuaworODg4NSA1NzQ4NGUyMWUzMjcxZGIyZDljNGJlMzEyZTlmN2U5YWZiYjIwZDE1IGxlZ2FjeS10cnVuaworODg4NiAxODQwOTNkOTZkMmEyYmI4ZGNmYWEwZmNlYjg0NDkwYThlZDJmYjkyIGxlZ2FjeS10cnVuaworODg4NyA0YWRjN2U5NmFiYTI1MjhkNjcxYzRmNDk4NGY5YmNlMGQ2MTg1N2UxIGxlZ2FjeS10cnVuaworODg4OCA0MzkzODAwZjkyNjE1OTgxMjJiNmQ4ZjFlOWJjZjBlMjQzZjY2NDVjIGxlZ2FjeS10cnVuaworODg4OSAzODY1NWUzYWQxOTI1N2UzNWYxODRiYjNhNzAzZThjMzkzMWZlNTFhIGxlZ2FjeS10cnVuaworODg5MCAwNGYzZDI1OWY5ZTk5YWM3ZTg2N2FiM2E0YTIyYjM3ZTZhZWE3N2I0IGxlZ2FjeS10cnVuaworODg5MSBjMzc4ZTdhMDIzNGEyYTEwMzdiOWFlZWFjMWY0N2QwYzk0YjgzY2ZhIGxlZ2FjeS10cnVuaworODg5MiBlY2M1M2VhOGQ0ZWI2NWMwNjI0YzQ3ZjE1YWNmYThiOTllODY4OWU3IGxlZ2FjeS10cnVuaworODg5MyAyMzA4M2JkOGMyNjE4OTg3OWNmYzQxYjdhMjRkNjliMDhjMDkxOGYyIGxlZ2FjeS10cnVuaworODg5NCA3Zjc3NzEwYTIyZDBhNjcxZWVkZmYxZTM5OTlkOTA1YWRjYzU3MDU2IGxlZ2FjeS10cnVuaworODg5NSA0NDkxZjg0YWMyMjNhMTZlOTEyZmM3MDRjMTYwNmE4ZGJmM2I5YzIwIGxlZ2FjeS10cnVuaworODg5NiA0OGRmMDFlYWEwOWEyNDVlODI1NDA1MDVhM2YzODgwZGYzZWU0ZTg5IGxlZ2FjeS10cnVuaworODg5NyA2ZjA2NDEwZTMwN2FmNDUzNzVkOWNkN2JmMzAzNGI4M2NjZGMxNWMxIGxlZ2FjeS10cnVuaworODg5OCBhYmVkNzU0YzdiN2Y1YjEzMDljYjcwYjFkMDQ4ZDdmNjM3NTlmYTEwIGxlZ2FjeS10cnVuaworODg5OSBjNjJlMzRlYTQ2NGIyZDQwZTdlZDY2NDkwY2YyNjZjMjg3YzkyNmI0IGxlZ2FjeS10cnVuaworODkwMCBmYjliMGQyNDZlZjM0ZWJmNjE4ZjYyMDBlYjc1ZmIxM2I4YzQyMWMzIGxlZ2FjeS10cnVuaworODkwMSA2NDQ0ODRlMWEzN2I3ZWUyYmQ0MzVkYTljMGI2ZWZhNjY2NDE3NWZjIGxlZ2FjeS10cnVuaworODkwMiBhYWNhNDdlZjU1YThkNDgzZTkyOTViZGM4NWUxYjg2ZWFiY2MxZmNhIGxlZ2FjeS10cnVuaworODkwMyA1ZjAyMTYzMDJjZDhmNGM4Mzc1Yzc2ZDQxNDMyZWJkNjMyNDQxZGI5IGxlZ2FjeS10cnVuaworODkwNCAwNjgyNTRmZTU2MTdlNGJhZmIzMjM2OTBhOTVlOWQ3NmRiNmYyOWZjIGxlZ2FjeS10cnVuaworODkwNSBhZWU1NmU5ZDEwZmM5MzU5MmExYjM4YjVhMGQ1ZTExMjNiNzdlYjhmIGxlZ2FjeS10cnVuaworODkwNiBlMzU2YTM0NDgxOWQ3YTIyNjBkYjY5MWNlNGY4OGQ1NzEyNWFhNmU0IGxlZ2FjeS10cnVuaworODkwNyAxNGE3MTEyNjhjNTFiYjY5MzdiMTcwODkyM2ViMDlmMGEyNjFkOWQyIGxlZ2FjeS10cnVuaworODkwOCBlNzhiNjE3NGJlYzkyM2UwYTNlYjhhNzkyOWY4NTVkYjkzNmIyZTliIGxlZ2FjeS10cnVuaworODkwOSAwZGYwMTU5MDUxMDA4ZWI1MWJiZDk4YjUzOGMzZDAxOGEzNjYwNDY2IGxlZ2FjeS10cnVuaworODkxMCBjZTU2YTdjZmU5NmNmZDEwMWM2ZGIzMWU2Njk2ZjY2NzQyMTJiNDUwIGxlZ2FjeS10cnVuaworODkxMSA0MzU2MDZiMjE1YzUyYmFlY2ZlMWE0NGQwOTdiMmQyYWJhZmU0N2Y1IGxlZ2FjeS10cnVuaworODkxMiBjODNhMWIyMWM0MmQyYTA4NjBlMjI5ZmMwZmJjYWQ5ZjBjMzkxNWNiIGxlZ2FjeS10cnVuaworODkxMyAwNTNiYmFiMGVjNTNlMjExMjI4M2UxODkzNjc4MTA3M2VlOTU4NDM4IGxlZ2FjeS10cnVuaworODkxNCBlNTdjNzJhMmIwNjU2ZDFmYTBiMTFlMjAxN2M3M2U3YjI4MTg2MzkzIGxlZ2FjeS10cnVuaworODkxNSBmMzg0Y2MxMWI3NWJmMDYxMzI1ZDhlZTMwZDE0MzZmZTE0ZjYwNmFkIGxlZ2FjeS10cnVuaworODkxNiA5ZTQ2ZWNmMDNjM2U4MzMwZTkzYTFlMjc1ZTRjYjYzZTIwNWY1MWQzIGxlZ2FjeS10cnVuaworODkxNyBkNzc2MGExYmE0Y2E3NjllNjI0N2E1YzFmYzNjZDhlY2QxZTdmZWE5IGxlZ2FjeS10cnVuaworODkxOCA0MmJjNzkyYWM2OWZhZTU1ZmYyMzA0ZjQyZWU1NDdjNzkyNzhmZTMxIGxlZ2FjeS10cnVuaworODkxOSBkOWU1MTQ1MWViZGY5MzAyYzRjNjJmZDBlM2I4OWZjMjUzMzVlNjQxIGxlZ2FjeS10cnVuaworODkyMCBkZGZjZWZjMGQ4MjY4MDdlMWU5YTU4ZmY2M2EzYzBmZTc0YTJkOWRlIGxlZ2FjeS10cnVuaworODkyMSAxMDhmZmYyNTQ2MmQ1NjIyZGQ2YTc1ZTY0NDc5ODNmODYzZjBiNmE1IGxlZ2FjeS10cnVuaworODkyMiA5M2MwMTVlYzJkNTdjYWFmODYwZDM5NGZkNzJmMDQxNzdiMTE0NTQ4IGxlZ2FjeS10cnVuaworODkyMyBiZGU1YWFmM2U1ODk3NDRiMzRjYWIyYmM2MDE5MWY5ZGYzOWExODlhIGxlZ2FjeS10cnVuaworODkyNCA1ODAzNzgyZTczZmZiNzJkZmRkOGY5M2E1ZmJhYmMxNGQ5ZDZhMDUzIGxlZ2FjeS10cnVuaworODkyNSAzMWE1MDQ2ODM2NmJhZTM3Y2NjMTE2ZmE4MDQ4YjJhZTEzODU0NTQzIGxlZ2FjeS10cnVuaworODkyNiBiODU0Y2E0NjA1ZTEyMjk4MTQwYmIyNzBlMzVlYzdiNmM3Y2Q1MGNmIGxlZ2FjeS10cnVuaworODkyNyAzMzUwYzczNTUwZWU4M2QyMzA5MjZmN2I3MTk5MDk2NmI3YzhkYTFmIGxlZ2FjeS10cnVuaworODkyOCA3N2EyMmQ0OWRkODU4NWRlZWMyMWZkNTRkZWY1OWIyZGZiYWVjNmFlIGxlZ2FjeS10cnVuaworODkyOSAxMDQxMzE3OWE3MmE1ODkwM2U0NWM4NWNhZjBhNzEwNTliYWJiNGUwIGxlZ2FjeS10cnVuaworODkzMCA3ZWE0NjU4MzBlZjQ1ZGJkZDMwOWQ3YjVmY2Q4OTQzOTVjMTJhMWExIGxlZ2FjeS10cnVuaworODkzMSBjOWIxMzliOWM1ZmZmNTAzYzdmNWMwZDNjMGEzMmY2MGM5ZDdkNTI0IGxlZ2FjeS10cnVuaworODkzMiBiNWIzNWEwY2YxYWE5MjgyNjI2Y2E5MDllZGJhNDI5ZWZjZTk4MzdhIGxlZ2FjeS10cnVuaworODkzMyAyMTM4Y2YzYmRjNWFiODU4ZmIyNWI0MGFiZjRmNjI0Yjk1OTJmN2VmIGxlZ2FjeS10cnVuaworODkzNCAyYzVjMzk5YjZlYTQ2MzM5MmUyMzYzMTNhODVmYjdlMDI5NGM0ZTgzIGxlZ2FjeS10cnVuaworODkzNSA5MGVlZDlhNWQwN2E4MzU4ZDEyMTA0YWJiYzJhYjA4YzNiZDQ4YmJiIGxlZ2FjeS10cnVuaworODkzNiAzOTM0ODk3NGIyMmU4OTAwN2ZjZGJhOTQxZmMyOGRjNzgwZTk5ZGExIGxlZ2FjeS10cnVuaworODkzNyBiNjVlYjQ0NDIyYmE5MzIyZjc5MWE4ZTQzYWY2M2U0MDUzMjg1ZjgwIGxlZ2FjeS10cnVuaworODkzOCA3NzdhZTUyNjBhMTJmNWM4M2M3ZWI3MTQxZDhiZGE3ZTBjODYxOTlkIGxlZ2FjeS10cnVuaworODkzOSA5OTg2MjcyY2UyNGExNWM0ZWZhYmQ2ZjBkMzZlZjg5MDViZTJkNWQ2IGxlZ2FjeS10cnVuaworODk0MCAyMmJlZDU3OTQ1MTRjNjI3OTEwNzUxMzQ3MTkyNDcyNDQzMmViYjg4IGxlZ2FjeS10cnVuaworODk0MSAwYjJiY2YwNDI0YTA1M2E1NmVlMGNhNjhmN2VjM2RiMmM1NzYxOGRmIGxlZ2FjeS10cnVuaworODk0MiA0ZDU0NWNjNmZhOTljNGIwYWNkN2NhYzFhNGQzZmQ5MDU4NzJkMmM3IGxlZ2FjeS10cnVuaworODk0MyBjMTQyZWI1MzNmYjkwZjliMzIxMzQxYzcxNzU4YmYxZjI0YjA0OGFiIGxlZ2FjeS10cnVuaworODk0NCA5NDE2Mzc1OWNiMDIxYmRhNzc5YzYyZDEwNGMzODczZjM3YTE0NmNmIGxlZ2FjeS10cnVuaworODk0NSA2YTkxYTBmNjQyZmU3YjBhYzM2Yjc0NDMyYzYwMmI1YjlkYzhmNjdlIGxlZ2FjeS10cnVuaworODk0NiAxMDNjNjM5ODNjZGZhNGRiY2EzMDhkNWJiMmY4NjAyYWI4OWFhYjhjIGxlZ2FjeS10cnVuaworODk0NyBkY2E5YmRmNWVhMDhhODBjMWYzYTZjMWJiM2NiNjMzNTY3NDZiNDNlIGxlZ2FjeS10cnVuaworODk0OCBlZTRmMmIxY2VlZGE0YWFjMjZkNDQ0Mzc2MzA1M2YwZGU3Y2VhZDk1IGxlZ2FjeS10cnVuaworODk0OSBkZjY1OWUyMzllOTA2ZDliNjE2N2NmNzE3MjVlNjJiMDNhZjA5ZmJkIGxlZ2FjeS10cnVuaworODk0OSA3NDY2NTRhMGFmNjgwYzdkOWI4MTRiMjEwYTAyNmViOTFiZWM5NTMzIGxlZ2FjeS10cnVuaworODk1MSAyZWRlN2MyYWM5MmNmMWVlODllOGU1MjQxOWM4OTAxYjAzNGI3NTg2IGxlZ2FjeS10cnVuaworODk1MiBkMTUzMjQyYWE2YmIyZGMzYjFmYmVjOGM5YWUyYWU3ODU5NGY2ODFiIGxlZ2FjeS10cnVuaworODk1MyBmNWY3NDRlZDgxMzdjN2NjMzRiZmQxMThkNjVjNjIzZTZlNDE0MTYzIGxlZ2FjeS10cnVuaworODk1NCA3YWIwYjA1MjkzYWE0MjcyMGQxNTFjYTgzYzdlM2JkZWI5YTU1MTFlIGxlZ2FjeS10cnVuaworODk1NSBjNjdkODQyMWZhMjE2NjY4MDhhMjRjNjIzODc3ZTMzMmQ3ZTRjNTNjIGxlZ2FjeS10cnVuaworODk1NiAyOTdhNTQxZWI4NjU3NGMyMzI3YjJjMDIxOGQ2OTEzNGExZjBhOTcxIGxlZ2FjeS10cnVuaworODk1NyA1OGI0ZDllYThlNTEzODQyZjM0N2UzZDVhNDMyZjNlYmZjMTY3MjQyIGxlZ2FjeS10cnVuaworODk1OCA3MjdiNTIwMzEyMTI1NzdkOWVkNTE5NWY5NDdiZjBhZjAxNDcxNGQxIGxlZ2FjeS10cnVuaworODk1OSBjYjA1ZWEyYjYzZDlkMDAwMDY3YjVjMmUxNTcyZmUxNjNjNTA4NzM3IGxlZ2FjeS10cnVuaworODk2MCBkMzExYjY4NzU0YzE4NmU4Y2QzZGU3MDJiYjYzNDBhY2U5YTliMmM3IGxlZ2FjeS10cnVuaworODk2MSA1NjNhZTIxYjIwNTc4MzYzOWQ4NjE4ZjljN2E5ZmMwZDBkZjg5ZWI2IGxlZ2FjeS10cnVuaworODk2MiBiOGUyNjA3OGQ4YjFhZDM4ZjRhMmFkMTJiMGI4ZjRhNzZmNWRmZWQ0IGxlZ2FjeS10cnVuaworODk2MyAyZjI1ODE2MmFhZTJhY2RmZWQ3NmM1NmViYmIyYmRlMzY5MTk1ZGJkIGxlZ2FjeS10cnVuaworODk2NCAxNjE4MDYwNzE2ZTc4MTk1MjNiZjFjNTAyMTUxMmM4ZTEzNDRmYTU2IGxlZ2FjeS10cnVuaworODk2NSA2MzA3MjU4MDVjNjYyMmZmYzcyNGU4ODQwZTI3ZmZkMDE3NmM0Y2I1IGxlZ2FjeS10cnVuaworODk2NiAzN2M4ZDdmOTY3YzcxYzBkZTQxNGJhY2E5MmI3MWU5YWJlNjhmODgzIGxlZ2FjeS10cnVuaworODk2NyA0ZTFhMGZlMGFjZTI0ZjU2Mjg0NjEwMjU4MDY1MmU0NGExOTE2NjJhIGxlZ2FjeS10cnVuaworODk2OCAyZjlkNTlkYTcyZmI4NmY0MDRiN2EwZTQxNWMyNzRjMDA5ZWI0ODVlIGxlZ2FjeS10cnVuaworODk2OSBhZTc0YjZjY2VmNTdkNDM3Y2Y3Nzk2ODAzYWQ1Y2YwZmMwZDIzZDRiIGxlZ2FjeS10cnVuaworODk3MCAyMjJkZDRkMDY1ODEyOTRmMjI5NTY1YzQ0N2Y5YzQ5MWEyODNlOTZkIGxlZ2FjeS10cnVuaworODk3MSBiYjhjMzAwNGQ3NThlYzFiZTllZDczMTY4OWI1MGYwYmE1MDMyNGE0IGxlZ2FjeS10cnVuaworODk3MiAxN2UzZDliNmI0MmU4Mjg1ODEzNGMyYzQzYzA3YjY2ZGQ0ZDQwNWJhIGxlZ2FjeS10cnVuaworODk3MyAzOWQyYTRkYjdjM2I4MGI4MDM2YjM2ZmViZTZiOTIyNDBiNTVmZjAyIGxlZ2FjeS10cnVuaworODk3NCBjZTQ1ZWY0YzY1ZTkxYmU3YjI5YjVhMTM1Yjk3MTRhZjExNjFjN2M3IGxlZ2FjeS10cnVuaworODk3NSBiMzhhNzU1YjhkYjFjODdhZWUzMGNiMjI5ZGIzODQxNjJkNTUzNWI2IGxlZ2FjeS10cnVuaworODk3NiA0OTgxZmQyYjMyMTE0MDZhYmE1ZDE2ZTRjNGVjNGViY2I5Y2U3NzE2IGxlZ2FjeS10cnVuaworODk3NyA2YTA4YjYwZGU4MmM3MjMwYjEyZmZlZDA2NWQ4YzZhYTYxOWI1OGRiIGxlZ2FjeS10cnVuaworODk3OCA4NzkxMzBmMWZmNWZjYjEyMmM3Mjg1MDcyYTQ3ODZhMDQwODFiZjk2IGxlZ2FjeS10cnVuaworODk3OSA5ZWY5Y2FkZDk3OGM1NGE4MTJhOTY1YzViNTkzNzAwMDFhY2ViY2JhIGxlZ2FjeS10cnVuaworODk4MCAyYTJlNWI3MzFkMWM3NzYzMzk5OWExMmM5ODYyMDIxY2Y2NTIyMjQ5IGxlZ2FjeS10cnVuaworODk4MSA5OGIyYTBhMDkzYzlkNDljOTdkZDdlYTVkZGYzZjU5MjdlZmMzODBkIGxlZ2FjeS10cnVuaworODk4MiAwNzFhMGQzYTQ5YjlmOTBmNWMwYmYwZmJhZjBlZmY5OTY4NWJmMjQ5IGxlZ2FjeS10cnVuaworODk4MyBiMDQ5NGJiNTIwMTk5NGY5MTQ5NjY3NGY1ZTRjOWI0NDQyZTJkNzllIGxlZ2FjeS10cnVuaworODk4NCBkZjZkZmFhYzJkMGI1MWEyZWZkMTJkZmNkYzFkNTAxNTM0NmI3NDBlIGxlZ2FjeS10cnVuaworODk4NSBhMDAwNzNmMmUwODdhYjRjZTE3MjljMWIyMGI4YTQ2ZGIyYWZhNDc2IGxlZ2FjeS10cnVuaworODk4NiA4MDczNWZjYzM1YWZmYjcyODE0NGY3NjZlYzFjNTRlNGJhOTZhNzZjIGxlZ2FjeS10cnVuaworODk4NyBmMDIyYmJkMTIzMzg2ODAxZDFkNDY1YTE4YjcwOTQyOGE4OTM5M2M0IGxlZ2FjeS10cnVuaworODk4OCA3NDUxOGQ4ODJlZDMxYWU5NDM1YTJiZTExN2U3NGI5NWFlYjdhM2NhIGxlZ2FjeS10cnVuaworODk4OSBmZGI3NzYzNmMwNzQzMDJmMDZhNTgzNDQxMzUxZDc5ZTIyNDczNTMxIGxlZ2FjeS10cnVuaworODk5MCBhM2RkNTkxMDgxMTk2YTJiY2FjYzNmNjRiZTIwOGI5ODYzOGM5MGU3IGxlZ2FjeS10cnVuaworODk5MSA2YzVmN2U3NGZhODgwMWZlOGNlODEyMjY0MGM1NDRiNzY1MWNhNTMwIGxlZ2FjeS10cnVuaworODk5MiA2ZDljZmI1M2M3ZWQyYzJjZGY0MjkwZDgxYzM5M2Y4MzM4YjNkMzM5IGxlZ2FjeS10cnVuaworODk5MyBlY2NkZmQxNzI3NDA2MTFlYjE1YjVmMDU0MTRkZDZhOGQ5NTA1NDg3IGxlZ2FjeS10cnVuaworODk5NCA3ZTUxNzI3ZDNiN2VmM2U0MjMwNDUxZGIzYTlhNGQ5MDdlYmVkMDdiIGxlZ2FjeS10cnVuaworODk5NSAxZDMwZTUyZGMzNGQ5YjQzNTcxY2UyYjI3MDIxY2E4OGU0NjM0OTQ5IGxlZ2FjeS10cnVuaworODk5NiAxYWZmMTk3ODNkNzQ2ZjFiNzNlOTY3ZWMxYjVlYzljOGU1YTA4OWVlIGxlZ2FjeS10cnVuaworODk5NyAyNGRhMDM1Y2ViNmViZDFjODVjODJhYjExNDMzOWUxNTRlODc1YmE2IGxlZ2FjeS10cnVuaworODk5OCBmMWIxNzI4NDUyYzEzMGIyYjU0NWNmMDc4YmVlNWE1YmVhZGMzNzk1IGxlZ2FjeS10cnVuaworODk5OSAzZjg0NTU4YTI0ZGQ4NGZmMmYzNDgxMmViN2JlMzUxNDVkZDYxODhiIGxlZ2FjeS10cnVuaworOTAwMCA5NjE0ZmRkODEzOTM2ZWNiODhiMTQ1MzhkZDY3ODcwNDU1MWYzNDVjIGxlZ2FjeS10cnVuaworOTAwMSBlZTQ5NmVmMWNhODM5OWI3MmYzZWY0ZTBmNTU1NDJiNjViMDkzZTYwIGxlZ2FjeS10cnVuaworOTAwMiBlOWM2N2MxOTJjZGI2Njc0MmQxMzkwZjI1OWE0MGU5Mzg1YmE3ZWJkIGxlZ2FjeS10cnVuaworOTAwMyA1Y2NiMTJhZmZiNTRjMGM3MTY5MTk4YjE0ZWMzOTEzMTk3MDFjMTU1IGxlZ2FjeS10cnVuaworOTAwNCA0NmZhNDcxN2NmMjRhY2I3ZmNjNTdiOThlYmJlODU0ZGRhMzY0YTM5IGxlZ2FjeS10cnVuaworOTAwNSBiYzE5MDAyNDNlMzM5YTBmZDJmMGUwMmQ1M2I3OTY4NTU3YWIwMzRmIGxlZ2FjeS10cnVuaworOTAwNiA3MjNjODk4ODMxODgxZDA3NWQwODI5ZWU5MTY1ODRkYjUwN2NhNjAzIGxlZ2FjeS10cnVuaworOTAwNyA4OWUyZWFhY2ZkOTAwMGFkZDcxYjhmMWFjNzc3N2Q5N2Y5OGYzNjFmIGxlZ2FjeS10cnVuaworOTAwOCAwY2QxZjJmMWQ4MmQxYzk1ODM3NWRjY2Q2ZDY1OWQ0ZjhlZTY4ZjI3IGxlZ2FjeS10cnVuaworOTAwOSBlNDk3YTdmYzBhYTg1NmM4NTg0NWZiMDE3MDYwODI4OGQ2OTNiMGNlIGxlZ2FjeS10cnVuaworOTAxMCBkMzY5NjI5ZThjMjdjMGEzZGQwYjhmZTAzZmQ5YTEyOWJmNWMwOGZlIGxlZ2FjeS10cnVuaworOTAxMSBiYTY1MzcyNDA4ZGRjNmJiZGUxYTJkZjM1ODNhYjgwMTBmYjU3YmMwIGxlZ2FjeS10cnVuaworOTAxMiAwODY0YTU1NjZkODlhYmRkZDVhZWFlMWY2MTA5YjgzY2M3YTBhODZjIGxlZ2FjeS10cnVuaworOTAxMyA2NGM1ZWZhOWQyYzRlNGMwMGZlZTkyNDY4OWVjY2M2OTljYjczYjA5IGxlZ2FjeS10cnVuaworOTAxNCAxODcwMzUzOGFmNDgxODE3MTgxOTQ3MjNlNDU3ZTAyZjdjYmEzNjNlIGxlZ2FjeS10cnVuaworOTAxNSAyNTUwNWU1NjNiMzdiNzJmZTk3YmFjMjMxNDc1NzYzYTA5MzMzNDEwIGxlZ2FjeS10cnVuaworOTAxNiBhMWEyYjcxMTU5OGNkN2FhZTFiMjU1N2U3ZmJjODUzYzhmMDI4NmVlIGxlZ2FjeS10cnVuaworOTAxNyBkMWY0NmEwOGQ3OGE4NmQyYzU5MTFmNjgwNjhhMTg3YWVlNWY2YmUzIGxlZ2FjeS10cnVuaworOTAxOCA4MGZjMGE5MDY4ODUyZWFlZjhlZjJiMDJhYThhMjdlMGNhOThkODhjIGxlZ2FjeS10cnVuaworOTAxOSBiMmRmZmYwNjc4OWM2ZGY3NzI2NzJkZjM4ZWZiZGE4MThhYTE1M2EwIGxlZ2FjeS10cnVuaworOTAyMCA2MmJkYjFjYmUwZjU1Zjk3NWI2Nzc4MGQ0MTk3MDBiM2NkNDY1NzVlIGxlZ2FjeS10cnVuaworOTAyMSBmYzMyN2VjMTVjN2VkZTJkZjdmYjZkZTMyOGJjZTAxYTc5N2UxMWMzIGxlZ2FjeS10cnVuaworOTAyMiBkMjg5MzJkNjc2YzhiOWU0YzU4NWRmY2FiOTkxZmM0YzVkNmEzOTBkIGxlZ2FjeS10cnVuaworOTAyMyBiNDUwMzIyODU4M2M0YjQ2N2IzYzUwNWE0ZmJkM2Y5NWNiNDk2Mjc1IGxlZ2FjeS10cnVuaworOTAyNCBjOTE1Yzk0ZWJiNmJmM2E4YTAyM2ZkMDQ1YzJiNWZhN2JiOTk2OGFhIGxlZ2FjeS10cnVuaworOTAyNSA3MjQzODJhZjUzMzliOGUzZDBhMDY1MTRiZDdmMWY4Njk2MDZiNDQ4IGxlZ2FjeS10cnVuaworOTAyNiBkZDFlODMzMjNjNDVmZGUxNzA4MTY5NzU2YjdkNzU0OTk3NTc2YTJmIGxlZ2FjeS10cnVuaworOTAyNyBhOGUzYjJlOWY1ZDIyODBjMjE0Y2QyYTVmOGE1YWNkNTkxNWQ1ZDRmIGxlZ2FjeS10cnVuaworOTAyOCBmNDA2ZWMzNWJmY2E2OTc3Y2E1MmVmYWZhYWYwNTE1ZTY2ZDdlODc4IGxlZ2FjeS10cnVuaworOTAyOSBiZGQ0Y2IyYTgzYjU3NTAxN2U1NDNiODNkNGQ2NDRiOWJiMmRkOTUxIGxlZ2FjeS10cnVuaworOTAzMCA1ZGJmZmM3ODQ0ZjU1YTllYzAxOTcwYTBkYmZlNDNmNDYzYzg5ZTBjIGxlZ2FjeS10cnVuaworOTAzMSAyYzZmMmQ5MmIzMTUwODg4MmExN2M0MDEwMzFjYzgyNmI2NmRhZDliIGxlZ2FjeS10cnVuaworOTAzMiA3YzljNGY4MjI0YzhiMjA3NGJkMmFkOGEwNDliOWZmNzA1ZmJjMzg0IGxlZ2FjeS10cnVuaworOTAzMyBhNWY3ZWI4NjlmMjFjMzMyOTI5MzUyZjM0MzZmNDhmNjU5ZGM1Y2U5IGxlZ2FjeS10cnVuaworOTAzNCA0MjgwYjI3MjljY2VjYjA5OWIxYzljNDVmYmUxNmU5N2Y4N2U0NGVhIGxlZ2FjeS10cnVuaworOTAzNSBiMzMxY2Q0N2UwYmM3MTE3MDBlZWQ4ZWE4OWYxNDZhNDFkZmI2ODM1IGxlZ2FjeS10cnVuaworOTAzNiBlZTMwN2Y5ODQ1YTMyNmNiNTM1MDI2MTJlNjc1ODRhOWJmMTgwNGQzIGxlZ2FjeS10cnVuaworOTAzNyAxYTIzM2JlNWZjMTdhNjg2ODA2NTQ2YWY0ZDY3YWYzMmE3N2FkZmY5IGxlZ2FjeS10cnVuaworOTAzOCA2ZTlhYTkyZmFiNjkyNzhmYTIxMzg2NmIxOTRlMGEwOTAxZWUwNjY5IGxlZ2FjeS10cnVuaworOTAzOSBmZDJkNGMwYWU2NDY3MmI5Nzc4NGMzODY2ZTdlMzVhNWRjMDAyMzExIGxlZ2FjeS10cnVuaworOTA0MCA1MzgzNTA0MzUyOGM4YjZmMTA3MDM3NGE4MGE4NGEwNDU5ZGRiMGJlIGxlZ2FjeS10cnVuaworOTA0MSAyYWExM2MwYzhmMmY2NjA5ZTdkNWEwNmNjN2U5NmY0ZjVmMTZhNjZiIGxlZ2FjeS10cnVuaworOTA0MiA4MTJhYWQ4YzA1YzI5MTQxNmY3ZTBlY2MzY2I3Yzk1Nzc0ZmRhZDhiIGxlZ2FjeS10cnVuaworOTA0MyBlMWM4ZDcxODJkNjY3ZDJjNWFhNjJhOTVhZTk5Mzg3MDkxMGEwZTVmIGxlZ2FjeS10cnVuaworOTA0NCBiZTJhMDIzNWFlODRhNGU0OWM3ZjY4MTgwNWRjNTA3ZDdmMjVhNGViIGxlZ2FjeS10cnVuaworOTA0NSAzZmRkNzE1ZTZlZjkwNjFlYjQwMGM1ZGI2YmEyN2U0OTdkMTBiYmQ0IGxlZ2FjeS10cnVuaworOTA0NiBhMGI4Mzk2NjdkMmUzZmM3NDMzN2QyNGM4MzU2MDhmZjhiOGJiOTg5IGxlZ2FjeS10cnVuaworOTA0NyBjMWJhYzUzNjA0NWZjZGI5NGZhZTNhYjg5OTE0ZDdmZmVhNGM2M2EwIGxlZ2FjeS10cnVuaworOTA0OCBiMTE3NDA0NWJjNGFiNjc2YTc4MjRmM2U2YWUzYTM1MmFjNTdmOTczIGxlZ2FjeS10cnVuaworOTA0OSA4YjE0MzEyYTAyOTAzNTlkZGQ5NzJhZDQwNGQzZWI3ZGM2ZGY1MjlhIGxlZ2FjeS10cnVuaworOTA1MCAzYjcyODc4NjcyY2QyZTJjMzIzNWQ3MzExNjI4MTc0ZDA5YjM3MjAwIGxlZ2FjeS10cnVuaworOTA1MSA2N2EyYWZjZGQyMWMxMDJkNTAzYjgxODJiYzFkNTFlNzk4MTdlMDFlIGxlZ2FjeS10cnVuaworOTA1MiA2ZmZhOWNiNjU0ZTJiNGZjYzJjZmU1NTA0MmQ3NTUxMzAyNTE1N2ViIGxlZ2FjeS10cnVuaworOTA1MyAwMGRhYjc1YjllZjEyZTE4MGI3NzNlZjM4MThiYWM0NDAwMWE5MzA2IGxlZ2FjeS10cnVuaworOTA1NCBkMjljNGIyZjQ5YWUyNzIyYjA2NGI1Y2ZkM2M4ZDZjMDc3MjQ0MThkIGxlZ2FjeS10cnVuaworOTA1NSA4NTU5Njk5MGRiNDNmOTlhMzllNmM2ZmVkZjAxNDRkYjgyMTY5OGE4IGxlZ2FjeS10cnVuaworOTA1NiAwMWVlNTYwN2JiMzVmNDU4MjQ2YjNjNWMxMDU3ZTcxNGYyNzkwZWEzIGxlZ2FjeS10cnVuaworOTA1NyA5MjFkMTdjYzI2OTJiMjkzZmYxY2JhYzU0YWM0M2VjYWIxMjQxMmIxIGxlZ2FjeS10cnVuaworOTA1OCBhMWQ4NWMwY2FlNWE2ZWRiNTVmNGIxYmVmMWRjNGRjYWY4ODMwMDY1IGxlZ2FjeS10cnVuaworOTA1OSA5ZTA3ZDViNjllYmFlNmE4ODI5ZGYzYTk2YzYwMmNlYzU5ZWU3NTM0IGxlZ2FjeS10cnVuaworOTA2MCBmOTZlNTdlNjk4NDZmMDc4ZWQ2NDk1MmY3N2E1YzljZDQ4ODk5NzllIGxlZ2FjeS10cnVuaworOTA2MSAwOGRkZTVlNWNjMjc0YWJmNGNkZTM4ZDFiMDY2MWYyOTEzZDYzMmQwIGxlZ2FjeS10cnVuaworOTA2MiBjMjY3MmU1YWJhOGI3OWY0NzBlNDY0OGRhODA1YzI5NWQ3YjkwZjE0IGxlZ2FjeS10cnVuaworOTA2MyBjNTY1MjcyZWQyYzc0MDdmODBhYTIyODFiOGNjNzY5NGI1MjZkYTU2IGxlZ2FjeS10cnVuaworOTA2NCA3NTMwNzdmOWViMmM4YTI2MDUxNjI2OWExYWQ1OGZmYzcwMTQzM2Y5IGxlZ2FjeS10cnVuaworOTA2NSBlMGU2NjdiYmM5NzFhNGZmNDUzYjIwZjcwY2M3NzFhYmRkN2U3YmE2IGxlZ2FjeS10cnVuaworOTA2NiBkYTAwYmI0OTcxZDhmNmYzMTMzZjkxOGEzNzI0NjBiYzk5ZjA2MmQ2IGxlZ2FjeS10cnVuaworOTA2NyAyMTkyYjkzZDUzMzdlNThiMWIyMjdmOTJkOWE0YjYzMTJlZGRlZTk1IGxlZ2FjeS10cnVuaworOTA2OCA1MTYyNDBlZjBlMTUxZGMxMzc5ZWI1MDhmMTRmOTA0YTQxYTUwNTNkIGxlZ2FjeS10cnVuaworOTA2OSA4NmI2NzcwOWMyYjQwMmNmMmQ1OWVjODcyZDk1MDY4N2MxM2MzZWIwIGxlZ2FjeS10cnVuaworOTA3MCAxNDAyNWE0Zjc5M2VjNWVkMTQzZTY3OTkwMDBhYmE2NmM2YzRhOTkzIGxlZ2FjeS10cnVuaworOTA3MSBmY2Q4ZTM4YjliMmFmOWYxMzlkYmJhMDQ3Y2M1YjQ0OTE3N2YwNGEyIGxlZ2FjeS10cnVuaworOTA3MiA0NWU4NGJlNmQ2NDA1YmRjMThjNjQ4MTYwYmQ3OWE5YWY3M2VmYWU3IGxlZ2FjeS10cnVuaworOTA3MyA1ZTBiMTUyYmYxZTY1YjFhOTQ5MTdlMDg1ZGQ5NzU3NmY2OGQxYzRiIGxlZ2FjeS10cnVuaworOTA3NCBmMTVmMGZjMzhjYjE5ZDc3YzJkYjMzZTEzMjMzY2RlYzRjYmEzOGYzIGxlZ2FjeS10cnVuaworOTA3NSBiODhmZDM4OTRkNWE0ZDM5YjU0ZDMzZWU1OTJjY2ZmYTRkMjcwNDliIGxlZ2FjeS10cnVuaworOTA3NiBjZWVlYzhjYjBhMWU3ZjVjNjk1NDRhNzNlMzEyYzdjZGU1Zjg3NDMzIGxlZ2FjeS10cnVuaworOTA3NyA2ZDZmZWMyZWVlZjZhODAzYTI2YmM5MTAwNmNmYWY2ZDIzMGZkYzA1IGxlZ2FjeS10cnVuaworOTA3OCA4M2NjZjQ0YmYxOTUzZjk0NGE1MGRkZmMzYTBjMDkxNDk0ZDgwNjI4IGxlZ2FjeS10cnVuaworOTA3OSAxZTQyOGY1MWVkNGUxM2M5NDFkYTJiZjE4OWYzMzM0MTJjOWE0NjY5IGxlZ2FjeS10cnVuaworOTA4MCA0NTE0YTVlYTNlYzQ2NDQyNTZlZWZiNjU1ODliZTM2MzI3NTQyYTE4IGxlZ2FjeS10cnVuaworOTA4MSA3YTBhNDhkNzMwNzZhODE0NTlhNzIzNTM5ZjU0Y2RmODM3YmMwNjlmIGxlZ2FjeS10cnVuaworOTA4MiBmNjdhNjMzOWVkZTc2ZWQ4ZTdmNzExYzVjNDJkYjNlODE5MTc3M2JiIGxlZ2FjeS10cnVuaworOTA4MyBkYmI0NjFlMjczYWRhYTU5N2RhYTM4YmRlNjAxMGZkNGQxOGNiYjBmIGxlZ2FjeS10cnVuaworOTA4NCBmNWI1NTMxMWU3OWRhZTg1OTRlNTUzNmZhYzNlZDQyYjk0ZDEyYzJhIGxlZ2FjeS10cnVuaworOTA4NSAyZjQ1OWViMjNhMGVmMTlmZjZhYTVhYWUxNjlmNWYyMzI2YzVlMzIwIGxlZ2FjeS10cnVuaworOTA4NiBmMWUzYTNmOGE0NmNkZjJlMWRhMGI3Yjc4MzJlNTBkNTlkZDZlODQ0IGxlZ2FjeS10cnVuaworOTA4NyAwMjNlNWFiMGY4N2Q4Yjk4ZmVhZDdkYjc1NTI3YzU1NGUzZGJkNTY3IGxlZ2FjeS10cnVuaworOTA4OCAyMzViYzZmOWUyMzdhNjgwNWZiNWZlMmE3MjBkZjI4NmRkZmFhMzc1IGxlZ2FjeS10cnVuaworOTA4OSBlNmI5ZDIxYzhlMGMwNjhjZmQ1OGNlOGUyODQxZjdmNzdhYjk2NWQ5IGxlZ2FjeS10cnVuaworOTA5MCA0YjJkOGRjOTJkYjRjYWMwYzE3YzI0NjA1NWI1ZThlYTNiNmJhZWE2IGxlZ2FjeS10cnVuaworOTA5MSAyZTg3NGE1YTkxMmYyZTFhZTk3MTk3MDU4NWY3YWU1ZTgwYzc3NWE0IGxlZ2FjeS10cnVuaworOTA5MiBlMmJjYWE5NmM5NDA4NDFjZGNiYzI4ZDNlNTFmN2Q5YzRiMzMwY2NmIGxlZ2FjeS10cnVuaworOTA5MyBlNTRkNTE3MTkwMmU2YTAxYjhhMWU5ZDc0MmE5NjFiMzEwOWI1Y2FkIGxlZ2FjeS10cnVuaworOTA5NCA2ZmU1YTUxZmVhMzAzZGQ2MDhkMzA5MWI5ZDUyMjhmNDczNzkwZjM3IGxlZ2FjeS10cnVuaworOTA5NSAyZjBiN2JhYzIwMWM1YTJhZDQ5NTU3ZDVlYjA3NWU0MjdhMWY1YmFjIGxlZ2FjeS10cnVuaworOTA5NiAwNDMxM2Q0ZjkzZmY3MzMwYmFiYWJjMzZiMDNmZWY2MzU4Y2I3YTg5IGxlZ2FjeS10cnVuaworOTA5NyAzYzRkNjI3NTQ2NWU4ZjM5MGE3YmMyZmMyZmE3MjEwMTljZmQxNmNkIGxlZ2FjeS10cnVuaworOTA5OCAwMGIxYjc3YzQxNzdjYTBlYjI2YmIyM2E1ZGVhZWJjY2JiMTM5OWFmIGxlZ2FjeS10cnVuaworOTA5OSBiOTZhYWQxMmExNTBiYjZjMzAwNGI0ODVkOWNjZjAyOGZkMmJlOGI1IGxlZ2FjeS10cnVuaworOTEwMCBmMTQzNDhmNzU3Yzc2OTk4OTgxMjBkZGEyNmVhOGExYTE0NmIxOGFlIGxlZ2FjeS10cnVuaworOTEwMSA4MmQ2Nzc0ZGEwYzY5NzFlZWE2NGNmYWEzNzYwNjYzNWYwZDg5ZmVlIGxlZ2FjeS10cnVuaworOTEwMiBiZTA3OTIxZDk3MTMxZTcwNmJiMWIyNWQyNDA5MTc1ZjhjNTRkMGJlIGxlZ2FjeS10cnVuaworOTEwMyBmODhiMGMyNjA4ZDgyZWMxYmI3OWM0ZGMyZTllOTZiNTM5YTI0NjNmIGxlZ2FjeS10cnVuaworOTEwNCA1ZTMxZDM4MWZhNDdkMjVjMGIzNzVhOTAzMjY4ODA4NGQzOWQ4ZDk4IGxlZ2FjeS10cnVuaworOTEwNSBhODM5ZDNlZmFiY2U2ZDYzNzkwMmUxOTZlODU4NGFmN2MwZjFlYzdmIGxlZ2FjeS10cnVuaworOTEwNiBlOTZhODE2NDdmOWM3ZjM0Y2MxMzdkNDk5NTNhZWQyMjE3NzQxNWYyIGxlZ2FjeS10cnVuaworOTEwNyBjZGZlM2I3ZDcxODdkODNiYjQzN2NhYTAyZjQzN2I3Yzk3MDUxNTI4IGxlZ2FjeS10cnVuaworOTEwOCA4ZjRkODlmMGYzMzZjODMzZDU3NWJkMTY2ZTQ0ZmExZjBiN2Q3NGY1IGxlZ2FjeS10cnVuaworOTEwOSBkNTE1MWI3YjlkYmNmZTllNGJmMTNjNzE3M2MyMzhhY2ZiNzlmNzcxIGxlZ2FjeS10cnVuaworOTExMCA1MmQ0MGNjNWZhMDhjYzViOWRlMjEwYWU4NjY3OTAwOWQzYTVjMDczIGxlZ2FjeS10cnVuaworOTExMSBkZjJhMmU0M2JlMThjZWIzZjAxYzdhZTczMGRkNDljMWJlOTE0ODhlIGxlZ2FjeS10cnVuaworOTExMiBlY2ZiYWQ5MDYyMzE0MjBhNGE5YzViOWJhY2VlMWQxZTY3Zjk3YjcyIGxlZ2FjeS10cnVuaworOTExMyAwMmY1OWNiMjg2ZmFhM2FkZDRhY2U0NGVmYWY5ZjcyODljNmZhMzU0IGxlZ2FjeS10cnVuaworOTExNCBmNDA4MjdiYWFiODExMmE4ZTE1MjRlNjEyODEyODNlZDA3NTg1NTFiIGxlZ2FjeS10cnVuaworOTExNSAwMzM5MmMyN2JmOTY4YmZkZWRjMzhjMWM1NTU3ZTQ0MTFlNDRhMzIwIGxlZ2FjeS10cnVuaworOTExNiBlNmQ3ODY5NThmYjMwN2ZmNWE3NTIwNjA2Zjk3NjA0MzM1ZDg0MzMwIGxlZ2FjeS10cnVuaworOTExNyBkYTY2MmIzNDVjODc2MDJmNjZhZjYzZWU3MmFkM2I0ZThmZDdhMThkIGxlZ2FjeS10cnVuaworOTExOCBmOTAzNTFiMTU4MWIyZGYxODQyYmI1YjdmZjkxZjE2NzM0OTVkMmRjIGxlZ2FjeS10cnVuaworOTExOSBhYzRiNDQ0NzM4Njk0M2Y0NjMwZGE0YmIwZjdhODQ0Njc4MzcxNTg2IGxlZ2FjeS10cnVuaworOTEyMCAyNTE4YWM5MjUxZjBmYzJlMjY1MDI2YjQ5YzQxZDJhMzJlODIxOWIyIGxlZ2FjeS10cnVuaworOTEyMSA0MTIxNzA0NTEwNjMwZTAzNWRjOTc1ZjYzMGFlZWJiNDMwNDdjNDYzIGxlZ2FjeS10cnVuaworOTEyMiBlMWQzNTY1ZDJiN2E0OTI1MWU2ZTEyMDc3ZjYxNDNiMDVkNzM5N2Q5IGxlZ2FjeS10cnVuaworOTEyMyBlODY4MWVkYTA4NTQ5NWQ0MTgxZmQ0NmI3MTU3ZGQ3Y2RhZGZhNGQyIGxlZ2FjeS10cnVuaworOTEyNCAxZGE5ZjYwMjc5YzkzMzAyMTAxZTMyMTQ4OGIwZDg1ZDFhNTkzOWJlIGxlZ2FjeS10cnVuaworOTEyNSBhN2VhNzRhMjc5OTM2OTM4MTViOGQ3MjAxMjdlZGJjNGNkNDhmMzI3IGxlZ2FjeS10cnVuaworOTEyNiAwZjI0OThiODQ3YmZjYzQ5NmE3ZWYwNGJjMjAxMDY3MTA1MWMxZTIyIGxlZ2FjeS10cnVuaworOTEyNyAyMDU4OWVkM2U4YmRlNWZmNWM4MmExNGQwM2YzNDJjYTJjNTJhOTJkIGxlZ2FjeS10cnVuaworOTEyOCBmNmJlOWI1YWRiZGI3ZDY2NzcyOWVhMWQyNDBkYjIyMGMyODE2MmM3IGxlZ2FjeS10cnVuaworOTEyOSBjZTUyODhlYzM2ZDAyNTVlNWMyNTE0YjAzYjUxMGQ3NTc3ZTM3MzQ2IGxlZ2FjeS10cnVuaworOTEzMCA1ZWFjMWM4ZGIwNGY2NDE4N2UxMWU0NTNjNWU5OWI0NmMzMjNkYzhhIGxlZ2FjeS10cnVuaworOTEzMSBjNmMxZDEzMzY3N2E3ODU1NWQ5NzA3NmIyODUyN2Y5ZjZjYzM3ZmJmIGxlZ2FjeS10cnVuaworOTEzMiA2ZDk4Yjk2OWUxZjY3MDk3MmRkODRhNzNjMzEzYjliMWE1ZTM5OTIyIGxlZ2FjeS10cnVuaworOTEzMyA0NjZlODdiMTQ3NjcxZjljMzAyNjAwMTJmZjM3NjBkYWNjMzBmYWRkIGxlZ2FjeS10cnVuaworOTEzNCA1MjMyOWExMTNlMGZhM2VmMGY5NzYzNjMzNjZlMmM2Y2E5NDUzYzE5IGxlZ2FjeS10cnVuaworOTEzNSBlNDk5YzdkYmZkZjM1OWE0ZTgyYzVlZTA1MGIwM2JiM2E2MTg0MmJhIGxlZ2FjeS10cnVuaworOTEzNiBkZWFkNmU3N2Y0NjQyOGVlYTRlMWUyMzI5MWI1M2FlMDNmNWViYTY4IGxlZ2FjeS10cnVuaworOTEzNyAzMzRjYmZkNTFkYjNhZWNlMGRmMTQ2MzU1MmQxODJmODJlZWVmYzhiIGxlZ2FjeS10cnVuaworOTEzOCBiYjg2YmI3NmQ2MWRhM2MwZjA2MzBjZWE0MjFhYjVkZmY2MmM1N2FkIGxlZ2FjeS10cnVuaworOTEzOSA5OTk1NWI2NTQwOGRhYTI3Y2I1NzU4NzBlZGJmYmJjZjcwOGExMTlhIGxlZ2FjeS10cnVuaworOTE0MCBmYmZjZjM4ZDJiMzk1ZmJmYjc3NzZjYWY1NmNmZGUwMGM4MmU3NTVmIGxlZ2FjeS10cnVuaworOTE0MSA5ZjAyZWIzNmI1NzM5YTQ3ZmQ2NTIwNzE1ZWI3NGIxYTE2MTI2OGIzIGxlZ2FjeS10cnVuaworOTE0MiA3MzE0YmU2NDUwYWEwOGNiNDlmNjQwZTg0YjA1NjVmM2QyOTFmMTFhIGxlZ2FjeS10cnVuaworOTE0MyBkNmQzZTdjZjg5N2UwYjE4OGRhNTk5YWRmNDBkZTIwMTVlODA5NzJhIGxlZ2FjeS10cnVuaworOTE0NCBiMmYxZmVjNmE3MDIzZTM1YzZmYWM5MGQ5MzEyOWZiZjA2MjE3ZDRmIGxlZ2FjeS10cnVuaworOTE0NSAwODljMDRkODkxNTFlYjBjZmU3YTdjZWM4YmU0OWVjMmZkYzVmYzM1IGxlZ2FjeS10cnVuaworOTE0NiA5ODU1MjcwNGI4OGYyN2E0NzZiMDM0OTc0ODUxNGE3YWMxMWY5NTNiIGxlZ2FjeS10cnVuaworOTE0NyAyZjVjODM3NDgyNWM4NTM3MTE5OGY1YTdiYjJiOTM4MDQ4OGIyYjJkIGxlZ2FjeS10cnVuaworOTE0OCA4ZTNlZTM1NzdkNGU5NTE2ZGJjMTYyNTY3OWI2YjAxOWFkN2Y3YzRhIGxlZ2FjeS10cnVuaworOTE0OSAxNDEwNWRmMzNjMTJhMjFmMjMwZjJiN2RkOTUzZWU1YjRhYjdjMTNhIGxlZ2FjeS10cnVuaworOTE1MCA5OGQ1NTc5M2I2N2ZiYWUzYWFlZTE3OWNjZDc2YTNhMzMyZjhhMGM2IGxlZ2FjeS10cnVuaworOTE1MSA5NzMxODdmMWJkMWQzZGMyMGFjYTA5Yjc5ZDAxMTA0OTU3ZTlhZmQ3IGxlZ2FjeS10cnVuaworOTE1MiA0MzJkMWJlMDE2M2M3NWMzMGU4M2JlMzRiNTZjYmIwZjYyNmFkNDkyIGxlZ2FjeS10cnVuaworOTE1MyBjZGIzMjc5YjA2ZTc5ZDI4Yjg1OTQyYzg5MmJlYzQ3MTNmOGUzNzg1IGxlZ2FjeS10cnVuaworOTE1NCAxYmI4YjdmZTQ1ZWMzZWQwYTI3OGEwY2M3ODVhM2NkYzRhYjc0OGFkIGxlZ2FjeS10cnVuaworOTE1NSBlNDViODM3MDhkOWU5YmJkZDM4NDM1NGU3OTFhYmQ3ZDFjZmQ4MjkzIGxlZ2FjeS10cnVuaworOTE1NiBkZTJmOGY0OTRhZTM3MzdlZjkyYjhhNGVkMDcwNmNlMzc2ODBmZTU5IGxlZ2FjeS10cnVuaworOTE1NyBmOTVjOWFlMmFhZWZlZTk1YTcwY2FhMTcxZTZmYjZiMjZjODk0MTZiIGxlZ2FjeS10cnVuaworOTE1OCBiOGEzYmE2ZTdiYzlkZWY2YTk5YzQyOTU5YzcyYzk0M2ZjNDg1ZTMxIGxlZ2FjeS10cnVuaworOTE1OCA4ZmY1OGI1NzMwZjA2YmUwOGZiYmRjMmJmNTkyMjI2ZjdhNzM2MjAxIGxlZ2FjeS10cnVuaworOTE2MCBlZmZhNjJiMDA2MmI3ZDJjYTVhYmMxNmI0OWY1ZTQ2MmE4MzFiZjRhIGxlZ2FjeS10cnVuaworOTE2MSBjYjg4OWI2NzgwNTNiMDEzNWFlYjk1N2ZiOWIzMTdkYTY2ZmEyNzk1IGxlZ2FjeS10cnVuaworOTE2MiAwMTc0NjdkZTc5MzNlOGM3M2I1NzQ3MmQxNDIzYjU2NGJkYmZkMDgyIGxlZ2FjeS10cnVuaworOTE2MyA4MzE0N2UwMmU4MGQ4ZTMyM2Q0OTBiYWFkZTc2MmM5OWQyMjAwZTI2IGxlZ2FjeS10cnVuaworOTE2NCAyYjdmYmQ3NmNlZjg3MDU0Y2I0YjNiMTBmMzYyNmE2NWQwMTQ2ZjUyIGxlZ2FjeS10cnVuaworOTE2NSBhNTkzYzIyMGVkY2M2NTkzZDUwZjZiODQ0YjhkMmY2MGJhZDJiNDVhIGxlZ2FjeS10cnVuaworOTE2NiA1M2EwN2FkYTQ5OWFmNzg4NjhlNWM2ZjNlZTYzNzI0OWZhYjZkYWQwIGxlZ2FjeS10cnVuaworOTE2NyA4NGI0M2ZmNDJmYTgwZTFhZWIzNzc5ZjBiYWMxMDQxZTM2ZDZiYmM2IGxlZ2FjeS10cnVuaworOTE2OCBjMDc5ODQ4N2I3MjhiODdhMTE2MmJjYWJiMjg0NzczMTNkMjcyM2M3IGxlZ2FjeS10cnVuaworOTE2OSBkNzkwZmUyNWUxNDhlZjkyZWJkODNjYmE2YTMyNThiNzBkODFjZjU0IGxlZ2FjeS10cnVuaworOTE3MCA0YmNiYmViNjNiODk4ZTU0MzIzNDJlZmE2OWRhMjQ3YTM4MDY0MThiIGxlZ2FjeS10cnVuaworOTE3MSA0MGE4NDIwYjRhYjM2ZTRlZTMyNzY0ZmRjZDJhNzJiMWM2MmUzNDUyIGxlZ2FjeS10cnVuaworOTE3MiBhNzJiZjQzYTg4NzBiMWUwZDMzNDM3ZDM2NzY2NDMyMmNiNzhiZjE3IGxlZ2FjeS10cnVuaworOTE3MyBiOWZjYjlhMzQzMzI4MjJmNjhjNjY5Zjg3YjVlZDliMzYxMDAwYThmIGxlZ2FjeS10cnVuaworOTE3NCBlOTIxNTQwMjJiNDhlZTZjZmE3MTk1NWQwNzVmMzVjMTM5ZGY3ZmU5IGxlZ2FjeS10cnVuaworOTE3NSAyZTc1YjMxZDk0Yzg0ZjMxYTkxOWY0YTk0ZDJlYzAxMDgxYjlhNTE2IGxlZ2FjeS10cnVuaworOTE3NiBiNzNlYjRlNmZhY2VjZmVmOWY5MjNhZTg1ZWU4ZjYzNDhjNzQxYzU3IGxlZ2FjeS10cnVuaworOTE3NyA5MDAxYzBhN2JlOTg2MzM5Njk3YTExYjMzMDExNmQyYzk1MTA3OThmIGxlZ2FjeS10cnVuaworOTE3OCBjNjkwMzRhOGIzZjQzNGY3YTRmMTkwZDFjNThmYjMxMDU2YWI3MTFmIGxlZ2FjeS10cnVuaworOTE3OSA0ZDYzYTAwMWMyNWVhOWMxMmJhODU2ZmFjYjdkNDZkMDE1NTI0MWQzIGxlZ2FjeS10cnVuaworOTE4MCAxNTE2MDE5YzkwYmU4OGY1MDM4ZGI0NzEzZmVjZjY4MzQyN2E0OGNmIGxlZ2FjeS10cnVuaworOTE4MSBiOTM2Y2NmNDJlYTJkNTFjMTNhZDY2ZjM4Yzg1ZTkzMDUzMGJlMzNhIGxlZ2FjeS10cnVuaworOTE4MiA5ZDhlNDhmM2I0OTg1ZjA2YzU2ZTE4N2M5MTRiNTVmYzIyNjRhMmUwIGxlZ2FjeS10cnVuaworOTE4MyAwNjE1NzkzOTUwNDY1MDFkNzExNjliOTkzZGZiYjRiYjFmZTUzMTNmIGxlZ2FjeS10cnVuaworOTE4NCBjYmM1ZTdkNmFkMjM1ZmJhOTBmOWI2Njc3MWJmOGFiZDJiOGM4ZmYyIGxlZ2FjeS10cnVuaworOTE4NSAzOWQ5NmQ5ZDNjY2I1NmE2MWZjZTUyMTNiM2MzY2Q3OWNkNzYzYzg3IGxlZ2FjeS10cnVuaworOTE4NiA0N2EzZjNiNjA1MDI2M2FhYzlhZWNkMDY5MmEyZDgyMjlkZmVhMmMzIGxlZ2FjeS10cnVuaworOTE4NyAxMmExYzk4NDUwNzQ0MDc2ZDhlYWM2NmQzMmJjY2QzNGZiMWM1NDg4IGxlZ2FjeS10cnVuaworOTE4OCA5MGM2MzkwYjQ5NDE3M2VkZGU4NDJhNDI2N2E1ZjM5ZWNhODg3NGFiIGxlZ2FjeS10cnVuaworOTE4OSA5OGFhOTI3ZjkwN2NjMDNkNTQ1OTA1YjMyMTY2OTk0NjZmNzRmZTRhIGxlZ2FjeS10cnVuaworOTE5MCBmZjE2NDQ4ZThmMjQxNzA4MGNiZTNlNjdiNjE1MGI0ODg2ODE5MGM4IGxlZ2FjeS10cnVuaworOTE5MSA4YTVhMDEyMzA3YmRkMTBmOTY5YmM3ZWE2ZjVhOWY3MTU4MTFiMDIzIGxlZ2FjeS10cnVuaworOTE5MiBhNWJiMGI4ZGMzMjA0MmJmYzU1YTQ4MTIzNjQ3OGIxZTcwNmMzZTIwIGxlZ2FjeS10cnVuaworOTE5MyAzOWI0MTNhYzJjYzkxYzFiNTlkMmM2YjllNTQ2NDNjNGE2YjlkMjg2IGxlZ2FjeS10cnVuaworOTE5NCBkODU0YTFjN2U3NGQzMzFhNzUyOTNlYmY1ZGQxYTdiZWI0NTdlZjEzIGxlZ2FjeS10cnVuaworOTE5NSA2NGE3NTIxMWNmNzI5Y2Y0YWMwNmVkNzI1NGRlZTljMjgzNjQ5ZGEyIGxlZ2FjeS10cnVuaworOTE5NiAzMmYyZWRhMjk0NmNhZDcwMWI0M2U2YzhhN2VjNjJkNGJlOTMyMTc2IGxlZ2FjeS10cnVuaworOTE5NyBmYWViYzE5NDA0MzI4YjEyYmMyYmMzMTIzNDAyYTU2YzVkMjk1MTU4IGxlZ2FjeS10cnVuaworOTE5OCA5NjA4NTM5MDJlYmU0MTkyZTE0Y2IzZjg0YmE0ZGJkNTI5OWRiMzFmIGxlZ2FjeS10cnVuaworOTE5OSBiYmY5ZTRiMzFkODRjNGMyMTJkM2Y1ZjJkNTk0MTUwYzAxOTBmOTdlIGxlZ2FjeS10cnVuaworOTIwMCAyMWRjZTMzMjUzMjE5NjIyMWJjMGIxYWFkZTFlYWJiMDMxMjcyMjg5IGxlZ2FjeS10cnVuaworOTIwMSBjM2Y4NWJjYjA0NWFkNzNmNjM3NTIxOGNhMzE4MzQ2ZWNjOGI4ZThhIGxlZ2FjeS10cnVuaworOTIwMiAyZTNhY2IyMTQwYmYzYTVmZjgwYzhjZmMzM2Q2YTExODk1NzJhZTI5IGxlZ2FjeS10cnVuaworOTIwMyAyODNkMWNhNTg1ZDk0ZjI2NjNmMTFjYjUzYWZmMzBiZGNiZmUxMjYxIGxlZ2FjeS10cnVuaworOTIwNCA0ZjM2NDJhMjAxMzcyZTY4MjQzY2Q3OWE4NTg1ZTRlMGIyZTRlNGU2IGxlZ2FjeS10cnVuaworOTIwNSAyNjYyYzlmZTFiM2UwM2NhYTI3ZmRmNTYxNjQ4OTIzNWI0MTJiNDFkIGxlZ2FjeS10cnVuaworOTIwNiA3Y2NlNDY5MTYwYzZlYjg1M2IzYThiZjQ0YWE0MTBjZTFkMjhkMGVmIGxlZ2FjeS10cnVuaworOTIwNyAxMWE3NTE3MDU0YTU4ZWE4MDE2YTY0NTNhNWFhYzM3ZTQyYTYyZmU2IGxlZ2FjeS10cnVuaworOTIwOCA5YzlhODdiNWJiMTdlYzAxZWEzYjNlMjUwM2ZiMDRmMDFlMjNmOTM2IGxlZ2FjeS10cnVuaworOTIwOSAyMTY1NjIwNGRkNGZiZDlhNjcxYzY0ODdlOGUyNzI2N2Y2NzQ3YTgwIGxlZ2FjeS10cnVuaworOTIxMCAwOWY2YTQ5YWNhMTJlZjcwNmQyNDg2NTRmMmRlN2ZjY2ZmZjlkMmU1IGxlZ2FjeS10cnVuaworOTIxMSA2NWFlNzExZGIwMGNiNWQ1NThiYjU0YzgzN2Q1NGMxOWI4NzQxYmY3IGxlZ2FjeS10cnVuaworOTIxMiA0YzliMjU2YTNiZWUwYzkxMjhhMWVjOGEyN2RkZWExZjk2YzRlN2Q5IGxlZ2FjeS10cnVuaworOTIxMyBmYWI4YWI1ZGM1Zjg0ZThmNmU5NmFkOThkMmNjMGJiN2E1YjI1M2M0IGxlZ2FjeS10cnVuaworOTIxNCA1M2ZkNDJhYTNiYmZjYWNhMGUxNTQ2YjBkNjRlNTFjMzIxMjgwZmJiIGxlZ2FjeS10cnVuaworOTIxNSBhYjNkN2EyOGUwN2QyNTgyYWRmMDVkOWVkNDE4OGI0ZDE5MmUxZGRmIGxlZ2FjeS10cnVuaworOTIxNiAzYmVmNTVjYjc0NGI2ZTZkZTljZGViMDhkMDZiMmM3YWExODdiOGZmIGxlZ2FjeS10cnVuaworOTIxNyAxZDQxNzVlZDZhOWNlZWUzMTU1ODBmMDgyYTU1YzVlZmVkNDJkYWM3IGxlZ2FjeS10cnVuaworOTIxOCAxODUzYjViYzA1NDhiYTA2MmMzNTQwMzNlODBlMzllMmI4NDE1ODgzIGxlZ2FjeS10cnVuaworOTIxOSA0Y2YwZGEwNzFlMmJlYTNlOWI0YjA3NWMwY2IyYjY1MzAwMTI3MDBkIGxlZ2FjeS10cnVuaworOTIyMCA0ODg3ZDc1NDY5MmFlZmIxMDBiY2FiNDU0MmIzYzQwNGU0MDU1YzUzIGxlZ2FjeS10cnVuaworOTIyMSA0ZjY4YzdhYzUxMTU0ZGNkY2UwZjQ1ODA0MmNlNDIwNzM2NDQzMzVhIGxlZ2FjeS10cnVuaworOTIyMiA4MDg0OGU5MThiY2MxODQxNDNhOWU2YjRkNDRiNWY3MGZhNmFlZGI4IGxlZ2FjeS10cnVuaworOTIyMyAxZGI0MWNhNDVjN2ZjODg1NDQ4Nzk3MjhkNDY0NDU2NmEzNWFiNDI2IGxlZ2FjeS10cnVuaworOTIyNCBhYmUzYWFkOWUwMzg1ZTdlNjVmNzU0MmRkMmIyYzY1ZGRiOTczNWI0IGxlZ2FjeS10cnVuaworOTIyNSBmY2ZmNTMxNjM0ZTE0ZjQxM2Q3NjE1MzZlMjIyYTcxZDViMDE4ODBmIGxlZ2FjeS10cnVuaworOTIyNiA3NGVhMjA4ZDQ2Y2U4MWFhM2Q5ZDc0ODJiZDU3NGM1NGQ3MjQ4OGVhIGxlZ2FjeS10cnVuaworOTIyNyA3OTNjYWY1MTc2NDc5ZTRlNGE4ZTQ3YTFlMzZiMzJiM2E2ZmMxMzQ4IGxlZ2FjeS10cnVuaworOTIyOCA1ZTdjOTEzNThlZDJjZGVhOTFjODdjNjAwYWU1NTgzZTcxZTMzYzVhIGxlZ2FjeS10cnVuaworOTIyOSA0ZGFmMDkwZmYxNjIyNjUxOTU0MzQzZjdmYjQ2NjViOGYzMTliNTNjIGxlZ2FjeS10cnVuaworOTIzMCBlYmE2YWRmM2Y4NDRlZjY0N2ZhYjg5NmEyMzc2Nzg3NzI0NWFkYmY1IGxlZ2FjeS10cnVuaworOTIzMSBlMmU1YmJmYWQxYzgxZjczYWIzMjQxM2ZjNWUwZjUwOTg1Y2FlZjAzIGxlZ2FjeS10cnVuaworOTIzMiAwN2U5NWVmNTVmNjU4ZTdlNjc5NWZiMGYzMzYzMGEwZmFlOTE2YjE0IGxlZ2FjeS10cnVuaworOTIzMyBmZDI5Y2ViZTg4ZGM4YjQ1NjJjNDRhY2I1MmZhODQ4YjY2ZjY3ZDZkIGxlZ2FjeS10cnVuaworOTIzNCBlNDA3MGRjNmFjMzVkNWQyZjNmMjFlMTlkODEzZTRkODMwNzUzYWI0IGxlZ2FjeS10cnVuaworOTIzNSBhZmY2ZmY1MmQ1ZTdlZDMxMmJkODUzNGI4ZmUzZjZkMzEwMTVjNDlkIGxlZ2FjeS10cnVuaworOTIzNiAwYjVlYjMyYjU1MWQyODJhMmE2NjllZTRhOGU1NGIzMGNkMzQ5MDEwIGxlZ2FjeS10cnVuaworOTIzNyBjYWU4YWE0NDFmYmQ0ZDdiNjVlN2UzZDliMmJjMTFiNmQ3MzBlMTk2IGxlZ2FjeS10cnVuaworOTIzOCAwMjA0ZDQ2MWQyMTk2Nzg4ZWMzNDBiOTAzMzA3M2U1YTI3MWZkNWUwIGxlZ2FjeS10cnVuaworOTIzOSA3NDhhYmM3Zjg4MDhmNDg0MzkxNGYyNTUzZGU0YTYzNTE4ZDFlYTgzIGxlZ2FjeS10cnVuaworOTI0MCAwYTNjNzQwMmQzOTUzZDA3ZjAwMGJjMmRhZTM5Y2YxNTUyYThjZTU4IGxlZ2FjeS10cnVuaworOTI0MSAxMjgyNGZlMDRhMDg4NTIxZGM1NGZhNjJlYjM1YzQ2Nzg2NThiMTg4IGxlZ2FjeS10cnVuaworOTI0MiAwNzUyYmJmNzdkODEzYTFmNTdkZjdlM2I3YjNmNDZhODNjMjU0YWJkIGxlZ2FjeS10cnVuaworOTI0MyBlNmMwMzNlOWI3NjkyN2I5ZWI1MWYyN2M2YzFhNTRmMzY4YzE3YmJjIGxlZ2FjeS10cnVuaworOTI0NCA4OTA5MmFkMWU2NjA3MGQxODY1ZjgxMjBlOWJlZWZmMmVjODQyMjg2IGxlZ2FjeS10cnVuaworOTI0NSBlOTdiODIzNzU5MWM1ODE1MTU1ZDYwOWQzNzg3Mjg4ODc3Yzc0ZDQ4IGxlZ2FjeS10cnVuaworOTI0NiBhMjlhNmJmMDNhZjMzMjNhZWY4YTM5ODJkMTBlYWRmZjEyOGUyZDUxIGxlZ2FjeS10cnVuaworOTI0NyAyMmZkZmQyODNjOWNlZDZkNTU4NGNlNWM5N2EyMjA5ZWVkMjgwZjJiIGxlZ2FjeS10cnVuaworOTI0OCBiNWNkNzY4ODEyY2IzMjQxMDgyMTEwNzc0YzdkZDRjYmJhNmFkOTZhIGxlZ2FjeS10cnVuaworOTI0OSAzM2UyMTQ1MjUwYWZlZTgyY2U1Y2I5Yzg3NjNmNGMwODIwZWIyZjU5IGxlZ2FjeS10cnVuaworOTI1MCA4MzJhODA3ZDAwOTg4ZWFkOGM2MmJiNDBlYTRlZGU3ZDYzNWI2NjYzIGxlZ2FjeS10cnVuaworOTI1MSAxNGQ2YjdhNDI5MTk0MjE1NGUwYTY5ZWUyYTRhMzljMTBiYzhmZDA0IGxlZ2FjeS10cnVuaworOTI1MiAwZWYyM2Y1MTNhNjU5NTk3NzNhMTVhOThiNTkyYzQzOGQwMDM0OTBjIGxlZ2FjeS10cnVuaworOTI1MyAzMTE3YWY5ZGJmY2U3OTM0NmVlZTFlZDBmYmNlY2E0NWZlNTEwZDE3IGxlZ2FjeS10cnVuaworOTI1NCAzZGZlMDUxMWJjM2IzMjYzMTUwM2NlNTE4YmMyZWE4Y2VhNzIxN2Y1IGxlZ2FjeS10cnVuaworOTI1NSBkYWE3N2Q5YWYzNGM5MDMzOWY5YzNmOWI4YjAzOWE2MGUxYzdmYzViIGxlZ2FjeS10cnVuaworOTI1NiBiZjZkZTgyYWFiMGQ4ODFhYjc4NzM5ZTEyZDQ3YTI3NjEzMDJhM2QyIGxlZ2FjeS10cnVuaworOTI1NyA0ZGJmZmZjM2MyM2JlMzk0NWRhNDRmNzQ0YWFkYTFkMGZjNGJiYjNlIGxlZ2FjeS10cnVuaworOTI1OCA5Y2Y4ZDE0ZjM1NjUyY2Q5M2ViZjM2ZmMwMGM5YTM3YTFmYmNkMjIyIGxlZ2FjeS10cnVuaworOTI1OSBiOTZkOWZiYjI0ZTU2MTRmYmVmY2U4NmRlYTNmMTE5OTEwM2I0OTRkIGxlZ2FjeS10cnVuaworOTI2MCA4OTgwMjA4N2Y4MDY2OWNmNzliZWZlYzE0NDJhZTI3MTlkN2I4MDI4IGxlZ2FjeS10cnVuaworOTI2MSBjMTg1MDE3NzA4OTU0NTNlNzM5NjM3OGMwZWRlZmIwZTdjYzcxODdiIGxlZ2FjeS10cnVuaworOTI2MiAwODQ4MDA1MDJhNDIwODQyMzZmOGJkNDc1ODNjZDc2N2YyZTdhNGMwIGxlZ2FjeS10cnVuaworOTI2MyBmNGUzYTdhZWI5NDlmZjNlZDY1ZTFkZTEzMGIxMWUxMTJjMjE4MTJiIGxlZ2FjeS10cnVuaworOTI2NCBiYzAwN2NmMWQ2YmEzYTE5N2VjMGQ5NjE5OWUzYjI5NGIxMWUwMDIzIGxlZ2FjeS10cnVuaworOTI2NSBmNjk1NDI3NGUxY2E0OGY4ODQ1MjNiZTBiMGI3MjQzYTFhNjdlNjMyIGxlZ2FjeS10cnVuaworOTI2NiBjZWFiZDUwMzE3ZTMwZWQyMTFlMDYzZGQ3NTJiOGM2YjA4OTY3YTA1IGxlZ2FjeS10cnVuaworOTI2NyBiYjQ0MGEyOTc1YWI5OTE1Y2Q4OTYyYTBiZmM4YWEyMGI4OTMxY2IzIGxlZ2FjeS10cnVuaworOTI2OCBiMWU2YzNmZTVkZTg1NDVkNGYxZGQ1Zjc0YTgxMmVmOWMyNjA4MTBhIGxlZ2FjeS10cnVuaworOTI2OSA5ZTc1ZDk0MjU2ZTBlNmE1MmI2YWNlMzBhMDc1ZGRmODI5N2Q2NjFjIGxlZ2FjeS10cnVuaworOTI3MCBmNTMzYzMwNzk3ODBiZmU5YTU2NzE0ZWNmOWY4ZTcyNTMyOWI4YjE3IGxlZ2FjeS10cnVuaworOTI3MSA4NTdmOTA2NTA0MWQ1MjBiNTIzYTNkYjU1OTg1MTA5ZGY1ZGVlYzJkIGxlZ2FjeS10cnVuaworOTI3MiBiMDkyZWUxOWFlNGZlYzBiYTViMzIyZjg4MzkxNTc3YTg0NGZkMjYwIGxlZ2FjeS10cnVuaworOTI3MyA1YjI0Y2JiMWY5OWJhMjVhZjUyMjE3MzZjZWQwY2FiNDkxYmM2MjIzIGxlZ2FjeS10cnVuaworOTI3NCBkMTAwZDAyNTJjYjFjNWRjZmRmMWY2ZWI3NDBjYWQ1MDM3YzNkYjJiIGxlZ2FjeS10cnVuaworOTI3NSA5NTQ0MTcxOTFmYmZjNzgxZWNlOGY2ZmFhODhhNTM3NTI2Y2RhYzRmIGxlZ2FjeS10cnVuaworOTI3NiAwYmE1MGM3NDI5ZTUxMDM0YjBmYTI5OGEyNjg3NjQzM2E3MDdmOTFjIGxlZ2FjeS10cnVuaworOTI3NyAzNDFhNmU0N2E4ZmY2NDVmZWFjYzZlM2RiYWY3NmJmODAzZGNjOTdiIGxlZ2FjeS10cnVuaworOTI3OCA1ZWRmZWI3YWE2ZWFlM2Q3MDQ4ODYyMmNlNWFjMzkyYjlmNmM0NTY2IGxlZ2FjeS10cnVuaworOTI3OSBiY2E5NDgxOTRkZWFmNDgyOTRmMGRiNjIxZjNhY2Q0YzAzMWY5YTM0IGxlZ2FjeS10cnVuaworOTI4MCA5ODViZTZkYzg5NGYzNWZhYjA1YmI0ODQ4OGViMWU3MDc1MThkMmU4IGxlZ2FjeS10cnVuaworOTI4MSBhZmJjMTFkZDJjNjVlNWZiODNjNmY3N2UzYTNiNmJiOTYyYmVkODdiIGxlZ2FjeS10cnVuaworOTI4MiBlMjI0YzQxYmRhYzY1MDhmMDc0ZmViZGMyODcwMjNkYmUyZjY4ODdkIGxlZ2FjeS10cnVuaworOTI4MyA5M2U0ODBkZWRjZjA5NDA3MWY4NDg3ZTlkNTNmMTVlNWI0ZTIzNTNhIGxlZ2FjeS10cnVuaworOTI4NCBhYzFiMjYxZjE2OTA0YTY2NTlmY2Q2Mjc4ODhkMjgwZGY3MGJmN2FkIGxlZ2FjeS10cnVuaworOTI4NSA3ZjkxOWQ0NzAxMjkzZmM1ZGQ2MGI2ZTZlYmMwOWUwOTgyMmVhNTFmIGxlZ2FjeS10cnVuaworOTI4NiBhODdiYzUzZmMxYWQ2ZWU3NWJhZWFlMmIwOTIzOWEwNTEzYzg0NmI3IGxlZ2FjeS10cnVuaworOTI4NyAxNDBlNjVmODM5NTMzZmE5ZmJlOTcxOTcwMTk3ZTI1Mjk5NmU2MTZhIGxlZ2FjeS10cnVuaworOTI4OCBjYTc1NWZiMWVmYjhhZjQzYjUwMTA5Mjk4Yjk2NTYxMDg4OWFiNjQ2IGxlZ2FjeS10cnVuaworOTI4OSA5YjQwNmM5MjUxNDA4MjU4MjllZjE0MmYzMWIxNDM1M2RhODY1ZDliIGxlZ2FjeS10cnVuaworOTI5MCBkODUxNDdkY2UxODVkMjYyZjJjMDc4ZGFkNTIwNTZjMTc0YzIyZjlmIGxlZ2FjeS10cnVuaworOTI5MSA2NjdhODVlYmZjM2VkMGFiYWY2MDAzYzgzZmNhNmY2MTY5OTZmMWY1IGxlZ2FjeS10cnVuaworOTI5MiAwZmUzZGMyOGI5MmMwYzk2YzI5NWU1OWM1MzgzODFkNjUxMWViZjVjIGxlZ2FjeS10cnVuaworOTI5MyA2MTMxZDNmOWFmMmQ2MDkyOWQwMDIzYTU1YTEyNjQwNTg3YTFlZGJjIGxlZ2FjeS10cnVuaworOTI5NCAyZTNmMjQ0ZjEwNWYzNTczOThmOTI3NzU5NWVlNDBiZjY1ZmNkM2EyIGxlZ2FjeS10cnVuaworOTI5NSA3ZGJhMmYzYjZjODEzNWMzZTc3YTAwMTZkY2M3ZWMwMjAzYjQwOGEwIGxlZ2FjeS10cnVuaworOTI5NiA3NzNmYmM4ZWZiZDc3ZTA3MmQ4ZGMxZjZiN2JjMTAyYWQ0NjJkOTQ0IGxlZ2FjeS10cnVuaworOTI5NyA5NTkyOWIwMWEyNjI0YWEyNmYzYzFlM2NhZGQwNDU0NDU0OWViNTQxIGxlZ2FjeS10cnVuaworOTI5OCA4ZWY0ODFjN2MzYWZjNjQzMDA3ZjNmOWVkNzJiNzJlZGM3MzhkMGQ5IGxlZ2FjeS10cnVuaworOTI5OSBiMTljZDQzMTMxMjY2M2VmNDU1ZDhiNDYxYjUwNTdiNGVkMWU3OTY1IGxlZ2FjeS10cnVuaworOTMwMCBmYzExZmYyYzc1YjA0OTVkZDVhY2RmMGU5ODQxOTAwMDdmODIxYjYwIGxlZ2FjeS10cnVuaworOTMwMSA2NjNhNDllNGJlZDMyNjgyNzhjNzM4ZTZjNDUxYzgxYzU0YzRmNDhjIGxlZ2FjeS10cnVuaworOTMwMiBlMzljM2I3NzcwNDE3MmM4NWFmMDM0NDE5MTc3YWIwZTFiMzRkYWY1IGxlZ2FjeS10cnVuaworOTMwMyBlY2FhNDMxYzU5NjlkOWIzYTM0MjU0NGUxMDUzNWQ3YjM3ZWYwZWEyIGxlZ2FjeS10cnVuaworOTMwNCBhMTU0NWNiZjBhZGY3ZjQ2YzQ5MDBjNzFlODg5NTMwY2JjMDg2ZGViIGxlZ2FjeS10cnVuaworOTMwNSA5ZmU5N2I3NjMwNjhiNjY5Y2I5NTg5ZDY5ZTk1YTU2N2ZhODA0YWIyIGxlZ2FjeS10cnVuaworOTMwNiBlZTg4YzVhYmMzNDFlY2U5MzhiYjFlMTQ1YzMyZGMyODllMTE4MWFjIGxlZ2FjeS10cnVuaworOTMwNyAzNTFjNzBiOGU3MzEzZmRiNGE4YzllYWJkNWZmZGQxNzk0NWVhNzYzIGxlZ2FjeS10cnVuaworOTMwOCA5OTIwOWRjZjI5NDY4Y2U3MzA4YzI4NGQ5NzMxMWZkMGI4NzVhYWYwIGxlZ2FjeS10cnVuaworOTMwOSBhY2YyNDc0NjVmZWJmZGUxYmQ0MWRjZTQyNWFhNmI0YTE3MWVjYjZkIGxlZ2FjeS10cnVuaworOTMxMCA5YTU3YjQxMDc0OGQ1MTVlODRjN2ViMDM0NDBmYjFiZWQ5ODFkY2ExIGxlZ2FjeS10cnVuaworOTMxMSBjYmZjNWYzMzJkOWQ0ZjE5ZjNhNDY5NjNhYWI1YTExMWNlZjUxOWIwIGxlZ2FjeS10cnVuaworOTMxMiBhYWIwODJiZmU2NTRlNTNlZTk3YzE2ZDNhNzUyYjZiYzdhZjBlOTczIGxlZ2FjeS10cnVuaworOTMxMyBkYjE5MWFjZjhlMDY4ZTZhYWM1M2Y4NzZkNTY1NGFhZGYwOWE2MDM4IGxlZ2FjeS10cnVuaworOTMxNCAwMjU1YjVlY2RlMTA2NTQyOTlmMDMxNjgxYmMzOGNlZTk0MmY5OGY3IGxlZ2FjeS10cnVuaworOTMxNSA5NjE4MWE0YTU0ODI0OWJkNmFhOGFlOTFkNmYxMjZhNTdlNDM4ODYwIGxlZ2FjeS10cnVuaworOTMxNiBiNzU1MDBlZWVkOWIxMmQyNzkxZWMwMjE0YTY5NTNiNTFjN2I5OGEyIGxlZ2FjeS10cnVuaworOTMxNyA2MjMzMzgzNTEyYmE5OWExODJlYmRmNWUyYTM4Y2VmNGYxOWZlYzg2IGxlZ2FjeS10cnVuaworOTMxOCA1OGJmZWNlMDE5NjhjYzA5YzE2ZjExZDczOTI0NWE0OGQ5NjNkNDQ3IGxlZ2FjeS10cnVuaworOTMxOSBkNzEzOWJhYzliOTk3ODVlYmQ2Y2NiMTI5YmU1OTZhZjZiYTY4NzQ3IGxlZ2FjeS10cnVuaworOTMyMCA0MTZjNzk1NzJmMTE4NzFiNmVhZDE3Nzg4ODA0ZGY4OGViN2MzOTMwIGxlZ2FjeS10cnVuaworOTMyMSBhYzY1ZGIyMDU0YzljNjc4Y2M0YzJiZTllY2I0YjFiYjdhNjFhMWVlIGxlZ2FjeS10cnVuaworOTMyMSBlYjc4NjU4ZDgxOWZiMGFmMDlhOGU2ZjliZWRjYjY3MDgwNWVkNWY2IGxlZ2FjeS10cnVuaworOTMyMyAzZmZmMzRlYTkxYWI2NDE4ZDkyYzc1MDUyZDYxYmYxMzFjMzIzYThlIGxlZ2FjeS10cnVuaworOTMyNCA1OTllZWE5MzA4NDNjMTRjZjJiYmQ5MzQ4ODcxNDg0NDgzNzA0ZjNlIGxlZ2FjeS10cnVuaworOTMyNSA5ZGVkNGY5ZTAxOWVkMGExZTVjNmVhZjE3NDJjMWEzMDYxNWRiMzI1IGxlZ2FjeS10cnVuaworOTMyNiA4YWRiMzUzMjlhZjAyNGQ5NTM3YjMxZWQwN2IyM2NlNjBmODYwOWYxIGxlZ2FjeS10cnVuaworOTMyNyA1MWY4ZDRkYTgxZTRiMDc3OTg2MThlZWNkNjQ2NWU4ZGNiZmM1MDVhIGxlZ2FjeS10cnVuaworOTMyOCA1MmZkODI4MTY1NjE0NWI1ZTczNDhjOTUxNDRjNDc1MThjMDdhYWQ3IGxlZ2FjeS10cnVuaworOTMyOSBkM2U1MTZlZjljZDExMjJmZDMyNzFkZmVjOGU4NTRkOTU5MzlkNjYyIGxlZ2FjeS10cnVuaworOTMzMCBhNDIzZTNlMGRhNDAxMGNiZDI1NjY1YjFiMmNhNDk5ZDYxMTNlOTY4IGxlZ2FjeS10cnVuaworOTMzMSA2NzJhNjU3YWJiYTg3YzkwYzU1ZjBlN2FjNDM2MzgxNGQxM2JkM2RjIGxlZ2FjeS10cnVuaworOTMzMiBmZDA3ZDUwM2EzM2M1ZTU2ZTFjYmZjMTkwNzNhYWRlNGQ5MGFjYjRhIGxlZ2FjeS10cnVuaworOTMzMyAxYWIzMDc5NTFmNGVkMDg4MTU2MjUwYWQxYmY3M2FmYmEwNDhiNGY5IGxlZ2FjeS10cnVuaworOTMzNCA5Mjc0ZmFiMmM1ZjIwZjViNzIwNWUzZmNhOTM0MzBiYzE5OTcyNTE5IGxlZ2FjeS10cnVuaworOTMzNSA2N2MxMGQ5ODkwOGQyYmViNzcxNGVmNDFiOGRhMDU5YzJhNzAxNWFlIGxlZ2FjeS10cnVuaworOTMzNiA2MWQ5NzNlYjQxMDJjYmZkMTk3YTA1YzcwMjI2ZGFlZjc2MDMzZDAwIGxlZ2FjeS10cnVuaworOTMzNyA1MWM5MzAwNzk1MTQ3NTAwNDQ5NjdlMTQ1Mjk5MTBhMjExZDE5YTQxIGxlZ2FjeS10cnVuaworOTMzOCA5ZjFkM2VlYjc4NGI5MzI1OTJkOWRhMDMzNDFlNDdiYTRiYjAxMTFmIGxlZ2FjeS10cnVuaworOTMzOSA3NDRiODk5NDE0OGFlMzJjMGViNzcwYTJhYTg5YjlkYzEyYjY5NDgyIGxlZ2FjeS10cnVuaworOTM0MCBjNWJmYjFkZTYxYTViNzA0MTlkY2QzNGY3ZGZjMjBhNGIyZmI4NTdlIGxlZ2FjeS10cnVuaworOTM0MSAzMjAyMDA1YTcyMGI0OTc1NzBhYTgwZTJkZmZjMTg5YWRmYjU2MWVhIGxlZ2FjeS10cnVuaworOTM0MiAyZGUzOThmMzcwZTg2ZTE2ZGQ1MTQ0OGU1ZTE0NDYyZDdkNTFhM2EwIGxlZ2FjeS10cnVuaworOTM0MyBjOGNkZTE1ZGQ4Y2U0YzY1MjdjMmYwM2M2Zjg1YzFkYTU0NzQ5NTk1IGxlZ2FjeS10cnVuaworOTM0NCAwYzNlZmRmMjgxMzMwYmVhM2RiY2Y3ZDNiODRiNWE1MTA5NTkyYjkyIGxlZ2FjeS10cnVuaworOTM0NSA4MWRmZGY2NTg5ZjhjZTc5MzJjYmNhYjU2MmEwNzAxOTM3MTUwNjU5IGxlZ2FjeS10cnVuaworOTM0NiAyZjc1M2Y1NDBmNDVmNDk5MDFlNGUxYzgyMjcyM2MxMzNiODRkMjc5IGxlZ2FjeS10cnVuaworOTM0NyAyNzhhYWNmMDE3MDcxMzA0OGRmMGVmZDllNmI3NDQ3NTM0MmM3YzEzIGxlZ2FjeS10cnVuaworOTM0OCAxOTAyOTM4ZTQyYzYyMDY0NTA4MjRiZjNhYTM5MzU4OTUzZWMxOGI2IGxlZ2FjeS10cnVuaworOTM0OSA3OTM3NWY3MWQ2YzgzODIyNmMwMmU0YmVjMTg3NjQwM2EzNTY1MWUxIGxlZ2FjeS10cnVuaworOTM1MCAyZDk3ZmIxZDA2Y2ExNDRjNzhhZmNmZWQwZTc3NGMyYWI5Yjk1YzRiIGxlZ2FjeS10cnVuaworOTM1MSA5YmU3ZjFlMzc1MzU5NDU5NzJlMzkzYzBkZDNlOWQ5M2YwZWNlYWUzIGxlZ2FjeS10cnVuaworOTM1MiA2YWUzYzkxZjJkOTM4MzQxZjgxMjU5ZTg0ZWU5MTE4OGM1MGUzYTkyIGxlZ2FjeS10cnVuaworOTM1MyBkMDNmMmUyZmJmMzY2NmRhYzI2YmVlNjNhMzU0NDRiNGUzZjg2ZDhlIGxlZ2FjeS10cnVuaworOTM1NCA0ZTJjYzUwNDRmYTUxM2YxYTE4ZmVjZDRlMDViYzliNTI0Nzc4MWUwIGxlZ2FjeS10cnVuaworOTM1NSA1ODA5ZWYxNTdjZGRiNGU4ZmJmMWM3YjQ1MzVlNTA2NTYzMjE4Njk4IGxlZ2FjeS10cnVuaworOTM1NiBlMjg1YTE1ZjNhOTJlYTBhN2ZhZTU1OTcxZTQ2ZDkxM2ExYTljYzdlIGxlZ2FjeS10cnVuaworOTM1NyBlYTIxOGRjZjcyN2RkMTUxZTk1NTZjYzY4YmU0ZWQ1YjBmZGUwMmEyIGxlZ2FjeS10cnVuaworOTM1OCBjNDZkODc5MjMzMTdjMzljNGMxMTUwOWU0YTQ1MmI2YzEyMjQ0MDE5IGxlZ2FjeS10cnVuaworOTM1OSAzOGY4YTgyOGFjNThkM2UzMGEyYWJiYWQxZDk5NjJkZjMwYzcxNzBjIGxlZ2FjeS10cnVuaworOTM2MCAzYzEyYzBkNjllMTIzMDJlNGVlYmFiOTNlZGE0NDEwMzkzMGEyMzZiIGxlZ2FjeS10cnVuaworOTM2MSBiYWY2ODZiZjhjYTBiNjQxNGM0MTJmMTg5M2U4MzZhMmY2ZTk1MGU1IGxlZ2FjeS10cnVuaworOTM2MiA1OThkMmZmYmZkOGI1NjIyMmEwY2MwOWMwNTBkYzQ2MDg3MjQzZTQwIGxlZ2FjeS10cnVuaworOTM2MyBlOGQzMjIwOTIxN2E5ZDI1OTQ5Zjg4NzBiNTNjOTkxYTQyN2ExYmJkIGxlZ2FjeS10cnVuaworOTM2NCBiN2Q4Y2NiNDU3NDYzMzI1YzljMDk1NzljMmUyNWMzZTg1MDBmYjZhIGxlZ2FjeS10cnVuaworOTM2NSA5MTMzNDVkNTRmMzA2YzVjM2JjNmM0MThhNzY3Y2I0MWNiYThiNjMzIGxlZ2FjeS10cnVuaworOTM2NiBlOGY5OTc4ODdjMmQ1ZTMyMWJmMTM2OWEwM2UxNzc0OTBkMDgxYzNjIGxlZ2FjeS10cnVuaworOTM2NyBjN2JhYjczZTYzYzZlNzQxODk3NjVmZjMwYmZkNDVhNDE3ZjExYzVjIGxlZ2FjeS10cnVuaworOTM2OCAxZmY5YTMwZjgyNmE0NWFkODEwYzE0OTVlMGIzMzdjM2JhNDIxODcxIGxlZ2FjeS10cnVuaworOTM2OSAwNDdhYmNiZjNmNDMyNTU3YzVhMzc5NTYyY2NkMjkyMmRiNTA5ZTYyIGxlZ2FjeS10cnVuaworOTM3MCA1ZDIwNWYyMmFiNjE4NjNhYTc4YThkODlkZjBkMDdmODVmMTQxYjg4IGxlZ2FjeS10cnVuaworOTM3MSBkMmVmNzk0ZDljMTE2ZGRmMDhkNjExNmIzZjU4NTRmMzcxMzdkMTU3IGxlZ2FjeS10cnVuaworOTM3MiAwNWUyNjdhZWQ4NmViYjUxMDc3NTg4NTY3YTg5NjFhMzE3ZjY1YmNlIGxlZ2FjeS10cnVuaworOTM3MyBkOTQ5YTM1Y2FlMjBjODNhMmYzZjBlZDYxN2MwZGM4M2M4ZDI1Y2M3IGxlZ2FjeS10cnVuaworOTM3NCBlNzBjNGFmMTU3ZDU0MzU0ZDI4OGIyODAwMjc1Yjk4MWNhMjY5ODdkIGxlZ2FjeS10cnVuaworOTM3NSA2ZmU2YTljMTQ0OTkyZjExM2YzM2YzOGU0NzI0NTY4NzIzMmQ0NDk2IGxlZ2FjeS10cnVuaworOTM3NiAzN2VlMTg3MTFjM2MzODE4NDExODk5YTE5YTBmMWVkNmMwY2JjM2E5IGxlZ2FjeS10cnVuaworOTM3NyAyMTRmM2M0ZjU0ODkyZWM3YzhkNWNhNTZjOTc2NTIyZmEwMTMyMTAyIGxlZ2FjeS10cnVuaworOTM3OCAyNDQzN2Q4ZDBkZGMzYjQ1YjMwZDQzNzYyMjJiMTY0Njk0MjZlNjM0IGxlZ2FjeS10cnVuaworOTM3OSBhZGIzMDBjYmQ1NjY4MGQwMTIyNDJmYTk5Mzk3NmNlMTJmYjQ0YTYzIGxlZ2FjeS10cnVuaworOTM4MCAyNTIyYzhmODYxNWJkNTMyOWNjNmY5ODQ3ZWY3OGJmOWNjYzFjYzZjIGxlZ2FjeS10cnVuaworOTM4MSBlMjA3YmViNWEzNjI5YmQwY2Q5NTNjODFhYzQ5YmJmNTJkM2ZiZmM4IGxlZ2FjeS10cnVuaworOTM4MiA5Y2IyZjEwYjA0Mjk4ZWZhMGUxNGYyYmIwZDBkN2E3NjQxNjFlM2FjIGxlZ2FjeS10cnVuaworOTM4MyA3YjU0Zjk2YWYzYmVmYTAzYzJhOTkyNDJhOWJlNjVmMGVkYzc5MWZlIGxlZ2FjeS10cnVuaworOTM4NCA4MGFiNjAzMGI5MDRkYzkyOWVhNjhhNWM4ODUyODI3ZjE5NmRkMzNjIGxlZ2FjeS10cnVuaworOTM4NSA5ZWM2ZTBhOGYzNTNmZDJiZTZhYzVhNmVhMGI4NjhhNmQ4NGY1ZTllIGxlZ2FjeS10cnVuaworOTM4NiBlNGNkMzBlNDUzNzFjZTBhOWM2YTFiN2U0YzZiODI2ZDIwYmE1MmRmIGxlZ2FjeS10cnVuaworOTM4NyAzNTQ3ZmRlYWI0ZGZhYzhhZjkyNzE5OTA5Mjg2MDIxN2I0NWY3NDg1IGxlZ2FjeS10cnVuaworOTM4OCBmNTk1ZTdmYzJiZDllYTUyY2VjMzNiNDQwZGEzNzY2YmZjODVkZTgyIGxlZ2FjeS10cnVuaworOTM4OSAyYzQ5YzAyY2Y3NDc0YWIzOWE4ZTMxZTg2ZmJjYWJiNTA3MWFjNjUzIGxlZ2FjeS10cnVuaworOTM5MCBmMjY2YWI5MWE5OTBkMDBhMzJlMGJlMTMzM2M1NjhhZGNjOTg3ZDc4IGxlZ2FjeS10cnVuaworOTM5MSAzY2ZmNDQ1YmQxMGZmYTk3MTE1YjYxZGNmY2I3N2E1MjM3OWRiYmJhIGxlZ2FjeS10cnVuaworOTM5MiAwMzVlNzk2Yjg5MGVkNjI2Mzk1MDMwMWUwMjZhYjNhNmM0OTZmY2FkIGxlZ2FjeS10cnVuaworOTM5MyAwZDUxYjNiNjYwZDEyOTNlZGJlODMzNjY5YjY5YjJiMWVmNWZjNDMwIGxlZ2FjeS10cnVuaworOTM5NCBiOWEzOTUwMTEyYWVhNTkyMGFlNjY3OTE2MzgxMTNkMzM0MDAzNDQ1IGxlZ2FjeS10cnVuaworOTM5NSA4ZGZiZWVjYzI0MjJiNzk5MTc1M2JjOTMwMjYzMDk2OTc2MTE5MThhIGxlZ2FjeS10cnVuaworOTM5NiA5NTBkMDUxOWI1ZmU5ZTk5YTEzZjA5NWFkZjFjNmUwYTI3YTAxYWU5IGxlZ2FjeS10cnVuaworOTM5NyAxMDAyOWM4YzQwZTBkYzU1YzI1ZTQ0MGM2Mjg2ZmM3ZDk2OTZiNDI0IGxlZ2FjeS10cnVuaworOTM5OCBhZmIxZThhZjdlNGY4YWJjMmZkNjRhODhjNWRlYTA4YzY1ZGExZWI1IGxlZ2FjeS10cnVuaworOTM5OSAyMzZlYTkzYzU2ZmY3OGI3NWI4OGQ4NWQ3ZDAyYjg5ODMzMmU0MGJjIGxlZ2FjeS10cnVuaworOTQwMCA3NjI5YzRkOTg1YmMzZWRlM2UxZmQ4MGU1ZmIyMDcyZWU0MzhkYmZjIGxlZ2FjeS10cnVuaworOTQwMSA3NGFkMjY4MjUwNjA4YTkzZGFkY2Y0Y2E1ZDJlOGY4MWFjNDA0ODZkIGxlZ2FjeS10cnVuaworOTQwMiBjZjMxN2E5YzQ5OWJiZmY2MTU1MjU1YjFiNDI0ZjM4ZGVjZDM5YzMzIGxlZ2FjeS10cnVuaworOTQwMyAzZGIyNGI0ZDljNDIyNzViZDlkMzBkOTdlYjM4ZDczZWM4OGI2NmQ1IGxlZ2FjeS10cnVuaworOTQwNCA4YzkyZWM4ZjYwMzhhNzUwNzBlMmVhMjk3YzFjYTA1NDhjNWRkNmMxIGxlZ2FjeS10cnVuaworOTQwNSA1MjEyNWNlMzc2YTQyZTQyMTI4MTJkYzlmMzllMmYzNWM2MWNlNDRhIGxlZ2FjeS10cnVuaworOTQwNiBiOWQ5YzUzZjFlMWRmNTEyMzBiYjg2YzRlZjdmYjQwNDBlZmUxYzU4IGxlZ2FjeS10cnVuaworOTQwNyA3NDAyNGU5MDdjNjBkNjA1NDZhNjZiOTFkYjEzZWU4MjdmZDQzMmEyIGxlZ2FjeS10cnVuaworOTQwOCA3NzQ0YmYxZTQ4NWI2NWYxYzVjNjVhNTIzN2YzOWQzYjVhYTcwYjUwIGxlZ2FjeS10cnVuaworOTQwOSA0MDkxYjA0ZjkzYWRmMDE4NzU2M2U0Zjg2NDRkYjMwM2FmNDJjYTAzIGxlZ2FjeS10cnVuaworOTQxMCBjNWI5MzliNWE5ZTAyZDZkODMzZTNkMjk1MzA0OTI1ZDllMTlhMmIyIGxlZ2FjeS10cnVuaworOTQxMSBhNzJkYzUyYjk3YWRkNDYxYzM5ZTdiMzhlM2I0NzNmMjYxY2YxODY4IGxlZ2FjeS10cnVuaworOTQxMiA2ODNiYzM1YWI3NTNhZjc4YjdiYjA5MGU4MDNmZTU3YzNjODBjZDNiIGxlZ2FjeS10cnVuaworOTQxMyA2YjZlZjkwOTIzOGUwNWNkMGQ3MDc4YzljZjliOWFmNDRkOTJjNzFmIGxlZ2FjeS10cnVuaworOTQxNCA0NTVjYmFiNGE5YmU3ZDY1NDYzZDdmMTAyY2ZmYjI1MzIxMzJjNTA0IGxlZ2FjeS10cnVuaworOTQxNSBlM2M4YzM0MGE5OTBjOGNkZmFlMDAyZjM4MDNjOTM3ZWJiZDAwM2U4IGxlZ2FjeS10cnVuaworOTQxNiBiM2IwYWQ0NzEyYWQwZjg0YTMyZmVmZWUyMTkyYTViYWIwMzBiY2UxIGxlZ2FjeS10cnVuaworOTQxNyBkYzNjOWMwNGVmMDdiOTMzYTQwM2ExZmQzY2EzZGQ0OTZjZmExNjkxIGxlZ2FjeS10cnVuaworOTQxOCAxZGFmYWQzMDcwMDY2Yjk5MWE3NmUzNzU3ZGY1MTJjN2EwOGU0OWVlIGxlZ2FjeS10cnVuaworOTQxOSA5MTA0Nzg0YWYxNTkwOGFjZDcyMDVhMjkyMTkwOTI5NDIxYTIxNmRjIGxlZ2FjeS10cnVuaworOTQyMCAwNjI5MWYwNGJhOWMzOGNhOWUyMDI0ZmIzYjYyZjljYmE3ODUwYTlkIGxlZ2FjeS10cnVuaworOTQyMSAwYzFjYzJkNmM0ZjAxZGM0ZTE0MGRkNmZkMzA0MGMxNmEwZTdhMGJiIGxlZ2FjeS10cnVuaworOTQyMiBmZWJhM2Q5YTMwYzcyMDBhOGEyMGNjMTYxYjIxYWQzMGFkOTVkNjRmIGxlZ2FjeS10cnVuaworOTQyMyBmMTRlNDQ1OWZiOTRkYmM3ZDlkM2Y1MWZhNmQ2ZTgxZTFiNDUwYTFjIGxlZ2FjeS10cnVuaworOTQyNCA1ZWY0NzAwNzE5ZGU5YTIyNmIxZDYxMTIyMjdlYTFkODBlMDE5NjRlIGxlZ2FjeS10cnVuaworOTQyNSBlN2JmNTQ1M2E2ZmY0ZmY3NjQ4MmYyNDFlOGUyNDRjZTU0MDFlN2JlIGxlZ2FjeS10cnVuaworOTQyNiA4MDBjYjIzNGY2NzZmMWFiMDNlNjg2NzJkNzUwOTU5NWYwNTg3NmYxIGxlZ2FjeS10cnVuaworOTQyNyA2ZTBlZGRmYTQwNGE3MTcwOTFmY2Y5ZDVkMzFkNmU0ZjI3M2VlZWM0IGxlZ2FjeS10cnVuaworOTQyOCAzOTEyZWZhNWJmY2EyNjYzZTY1OGZiYzI2MjZjMGNlMTViYTFlMmU2IGxlZ2FjeS10cnVuaworOTQyOSBjOGFkOWRjOGFlMWViZjY5YzIxMzA4ZjZjY2Y0ZGQ4MjE4ZDZhM2ZlIGxlZ2FjeS10cnVuaworOTQzMCAxMTQ0YTllZDk4ZDZhYjM4MmQ5YzRjOGI5ZDI4MjcwMDY3NTQ4MjMwIGxlZ2FjeS10cnVuaworOTQzMSBkYzA3MzkzNzk3MTQ5ODgxMTVlOWM5OTQ3NTI3OGEwYjViZmNiNWQ5IGxlZ2FjeS10cnVuaworOTQzMiA5NjQyYTI4ZGYyYjE0Yjc3ODc4ZGRlZGUxMjZjNDE2Y2Q1YjQyMDBiIGxlZ2FjeS10cnVuaworOTQzMyAzODQ5M2I5Mzc2ZWFlMTgxYjNhMDYyOTQ2ZDA2NGVhNTI1MjVmODgzIGxlZ2FjeS10cnVuaworOTQzNCA5NzU0YjIyMzM1ODA5MWNjNjdiZTQ1YTU1MGFjMTAxZDIxOTY3NzEzIGxlZ2FjeS10cnVuaworOTQzNSBkZjViNTZhNWFmY2ZkNjMyNGZlZDJjNDVhOGQzZmE2ZmU4ZDNjMWUzIGxlZ2FjeS10cnVuaworOTQzNiAxMzlhZDMxZmY4ZmQ1Yjk4NmI4YzA4M2Y5YTZiMzVmN2Y2NDEwNjlmIGxlZ2FjeS10cnVuaworOTQzNyBmZWRiZjkzMjUxOTBiOGE2YTYwMzA2YjkyMTg0ZTE0ZmQ0NDE0YzFjIGxlZ2FjeS10cnVuaworOTQzOCAzMTlhNTFjMzgxY2VlNGY4YTRmZDlkYzE0YTU1YzZjYWM2NmY4MzU5IGxlZ2FjeS10cnVuaworOTQzOSBjNTg3NGY2ZjU0MzFmMjk0YjlmYzVhZmEzYjkzZDhlNzRhMjc5Zjc1IGxlZ2FjeS10cnVuaworOTQ0MCA0ODRhMWM2OGM1NTg5NTZhZWFmMWFjOTdhYTVmOGQ0OTdiMGJjZDMxIGxlZ2FjeS10cnVuaworOTQ0MSAxMGYyOTIxYTA5MWU3MTRhYzc3ZmNmMmIxZmIxZWIzY2MxOWQ5M2IxIGxlZ2FjeS10cnVuaworOTQ0MiAzM2JlN2Q1ZDQ5OGI2MDcyYjcyYWIwYTcwMTIxNGIwNjIxZmIyZWUwIGxlZ2FjeS10cnVuaworOTQ0MyBkY2U4MzhjZDQyYzE4MDlkNzEzNTI3ODZhZTJkYmM1MTEwZWQzZDk0IGxlZ2FjeS10cnVuaworOTQ0NCBlZWQ2MzA0OWRmOTU5NTVhOTk1N2NiNjVlZDRkY2Y1YTljYTdiMDNhIGxlZ2FjeS10cnVuaworOTQ0NSA3NDRlMmI2OGYzYjZkOTQwYmJmMjUxMTE4NWMxOTc0Y2Y5OWEyZGEwIGxlZ2FjeS10cnVuaworOTQ0NiAzMWVjYTY0OGY3ZmZlYWYxZDJjNjQxMzRmZjM3ZWYwMTlmYmYzZWVhIGxlZ2FjeS10cnVuaworOTQ0NyA0OTJjNmRiMTYwYWM5OWUzZThmZjI1NzJlYmE5MmI4OTcwODE5ZTc3IGxlZ2FjeS10cnVuaworOTQ0OCBlNWFmZjQxMDM2ZjNkNjU5MDYwZTJmZmJmMWZkOWE2NGYxZDdhNjcyIGxlZ2FjeS10cnVuaworOTQ0OSBiYzEyNWYwZDJjNWQwZjE0MTRkMDQ4ODM1OTY3ZTBkZTFkNjVlOGY3IGxlZ2FjeS10cnVuaworOTQ1MCBhNjkyOWU3NDE3ZGQ2MmM3NzQxNTg4MTViNThiMGZlZWY2YWZlNDZmIGxlZ2FjeS10cnVuaworOTQ1MSBiYmFkMmM2ODRhZDcyYmNlNWYxMzQ0ZGZjNGIyZDY3YTg2N2RiY2NiIGxlZ2FjeS10cnVuaworOTQ1MiAyM2IyN2IwYjIzNWIzMTU1MmQ1N2VmOGUzM2JjYWU0ODc2OTZhZWM5IGxlZ2FjeS10cnVuaworOTQ1MyA4MGIxZTI3ZjIwZDQ5Y2UxMTk1ODg1MzUyM2Y1YmU2YjliZjEyZTQyIGxlZ2FjeS10cnVuaworOTQ1NCBjZGE3MjBiMTkxOWRmZTUyMmFjYjkwYmFjYWIzZmM1ZWM4Nzc3MzU5IGxlZ2FjeS10cnVuaworOTQ1NSBhNTY4NmU3NTY4NWYyZDNkZWI1NmQ1NTcxMmVjMzhiZWIxYzYyMDIyIGxlZ2FjeS10cnVuaworOTQ1NiAyZjJlZmI4ZmE1NGZmM2M2M2EyY2UxYTE2N2EzZjkxYmM1OGUzYjVkIGxlZ2FjeS10cnVuaworOTQ1NyA3Njg4ZjMxMDZhZTQ0MWMyY2I3ODczMmQyZDZkNWEwMzMzYWRmOTQ5IGxlZ2FjeS10cnVuaworOTQ1OCBjZmFkNGIwMjk2NDVlOWE3Y2IzZGFkZWI4ZWQzMDQ5MmYyMGRhZjRkIGxlZ2FjeS10cnVuaworOTQ1OSBiNzBiYTRkYjc2N2UwOTc0MGY1ZDFjYTdjMDdlYjg5MmYxYThlMTQ5IGxlZ2FjeS10cnVuaworOTQ2MCBmMzM2NDcwOGMwOWUwNzkwMTBiNmExN2U2ZDAyMDg2MjQyY2Q3ODI3IGxlZ2FjeS10cnVuaworOTQ2MSBmZmNhZjdhZmQ1ZDllM2U5MDFmZDhkYmQ1YmNlZjRlMTQ5M2MzYTQ0IGxlZ2FjeS10cnVuaworOTQ2MiBmNWZkMjM5YjE3OGFkMDA4YTY4MWI0MWRiZjUwNmQzNzQ2MWM3YjY4IGxlZ2FjeS10cnVuaworOTQ2MyBkNGU5YWM3NTdlNWMwN2ZmNTljNmIzODdjZDJjNDI1ZDFhNjM2YzM3IGxlZ2FjeS10cnVuaworOTQ2NCA2MzhkODc3ZWE5OTU4MzUzMzZjMDg4OGIxM2EzMjI2MDMyNjQ5ZmMwIGxlZ2FjeS10cnVuaworOTQ2NSAxYTQxNDE1OGViNjY1YjExMGNkNGE2ODcyZWQzYmFiNWEwNDMwZWQxIGxlZ2FjeS10cnVuaworOTQ2NiAyZTkxZmM3MWNiYjUwMTk4MzQ3MjkxYmI3MzRkNzk4M2Y0NWNjODNiIGxlZ2FjeS10cnVuaworOTQ2NyBmZTEwOGE0YmI4ZDU4ZGFhY2Y4N2M3ZGIzZjFjYjkyYzUyNzA1MTQ2IGxlZ2FjeS10cnVuaworOTQ2OCBiMjQ0NWM5M2YwM2I4OWMwYTA2ODc4ODI4NGJlYzlhY2JjNjYwYTA2IGxlZ2FjeS10cnVuaworOTQ2OSBmMzQ5YmYwZTkzMjI3NmZiNjRjMTc0NzM3YWFjYWMyYjI4ZGFkMjE2IGxlZ2FjeS10cnVuaworOTQ3MCBkMDA1MTVmOTJiNTM0ZDE0ZTVkMDQ2NzMxNGI4MTI0YWVkY2I4MjUyIGxlZ2FjeS10cnVuaworOTQ3MSA5ODdhODMxYWFmMjM2YWRmNTYxMWM3OTY5ZTdmODgxYmNkMzgyNjRiIGxlZ2FjeS10cnVuaworOTQ3MiA2MGNjZmE5NjU2YWNmMGI1MjM1NGExYzE1ZDdjM2Y0Yjg2OWViYjMwIGxlZ2FjeS10cnVuaworOTQ3MyBlYmNmNjA0Y2NlZTA1MTEyOWZiYWFlNmYyNjIwZGJjNGFhMGRlZTA1IGxlZ2FjeS10cnVuaworOTQ3NCA2OTExMjk5MGQ4ZTI0OGI5ZjNiYjgwZjVkZWYwMDI3ZTlmOGYyZTUzIGxlZ2FjeS10cnVuaworOTQ3NSBmYTE5NDMwZmVjNGU0OWZhMzFlNTAwZmJjMjk3YzExYWYxZGRkMTdmIGxlZ2FjeS10cnVuaworOTQ3NiA4YWQxN2U0Y2NkOWJhODk5M2ZiN2ViNTExNzM1Y2YwZGM3ZGM2M2ZkIGxlZ2FjeS10cnVuaworOTQ3NyA3Y2U5ZGEwMjk2MTlmNTViYzUzMTVmN2JkN2I2ZjFhOGM5OTBiYzRmIGxlZ2FjeS10cnVuaworOTQ3OCBmMmFmM2M2NDU3MTAyNGNmNzkwMTFjMDU2Y2RmZjJiOTAzOTlhZWFmIGxlZ2FjeS10cnVuaworOTQ3OSBmZWI4MGVhNTQ4ODg4N2NlZTg1NTI4YjE5NzgwODBjZmU2ZTU3ODZmIGxlZ2FjeS10cnVuaworOTQ4MCBmMGY5YjJlNGY0Y2MwYzUwOWY4ODRkOGIzZmQzNjdlZjA5YzJhYTUxIGxlZ2FjeS10cnVuaworOTQ4MSAyMjQ0NDM5ZmFmY2YwNmMxZGY2NmY0ZmEzNDY2NmM2ZjA2OTcxOTY5IGxlZ2FjeS10cnVuaworOTQ4MiBhMTBjNDUzOTEyN2ExY2YwYzEyMjBmOWYwM2M2ZGRkNGU0ODVlNWJhIGxlZ2FjeS10cnVuaworOTQ4MyBjZGVlZmY0ZDZjYjRjZjcyOWE4ODNiYjA3YjUwMWMxZjhmMmIxNzkxIGxlZ2FjeS10cnVuaworOTQ4NCA5NzczZDM5NDFjOTZlMmQzYmUyNjNiOGUwZDRhNzVkNGFkODU0YWUzIGxlZ2FjeS10cnVuaworOTQ4NSA2ZjJhYjRhZmE4Zjk0Nzg3YzA2ZmNmMGJkMGFkOGYzN2I2NGQ4YWQ5IGxlZ2FjeS10cnVuaworOTQ4NiA0Yjg4NzExOTg1YTI1ODljMzIxOGZlNTYwNTM5ZjRjNWYyMzIxODI0IGxlZ2FjeS10cnVuaworOTQ4NyA0NDRhNmIwN2RhNDY1MTY4YWEyOGRiNzFhODJjOThlODMxYTFiZWQ1IGxlZ2FjeS10cnVuaworOTQ4OCAwYWJhNjQ5YmQ5YmIzYWNkMmNmNmJhM2IzZjI0Mzg0YTA4MzFkOTc0IGxlZ2FjeS10cnVuaworOTQ4OSA3YThjMzA4MTk2ZDE0NjU1YzQyZjMxYjdlNTI0NzVhMjgzMjA5MGI2IGxlZ2FjeS10cnVuaworOTQ5MCAyZGIxNmQxZGJkODdjYmEwNjgzMjM2ODBhMmU4YzI1Y2IzNTY0ZGU3IGxlZ2FjeS10cnVuaworOTQ5MSBhNWRmMDJiNmM3YTgzMDgyYjQ3MmI4ZmYwYjQ4NzMxYTBmODk5M2VhIGxlZ2FjeS10cnVuaworOTQ5MiBjNzVkODk5ZTY2NmYxNjhkN2U0N2IwMDVjMTQ1ZDZmYzI2ZDM2M2YyIGxlZ2FjeS10cnVuaworOTQ5MiA4NDQ2MTAxMWExYTBhYjQwMmUzNTJmMDY3NDhmMjlmYjViNTU1OWU1IGxlZ2FjeS10cnVuaworOTQ5NCBkYzg1YWQxYmEwZTE1NjNhM2ZlYmYwYTkxNGUyY2RhZmRhYzJmODA2IGxlZ2FjeS10cnVuaworOTQ5NSA1OWFhM2UxYzEzZGM1ODIxYjE4Mjk3OTY2MWIzNzMxMGMyMzFjMzU1IGxlZ2FjeS10cnVuaworOTQ5NiAwYTk1MTQ3MGIxYmYzMGZmYjljZjFmOTVlMWFjNDc3YTNjNjk1MzJlIGxlZ2FjeS10cnVuaworOTQ5NyBhZGExMzExZGEyODZlZDY0MDA3ZjhjODFkMjg3N2IwZmEzYzIzNzE2IGxlZ2FjeS10cnVuaworOTQ5OCAyNjFiMTFiMGNjZDY0ZGYwNGY3ZGUwODE2MDdjZjg5MDhlMTFkNjEwIGxlZ2FjeS10cnVuaworOTQ5OSAzODQ0ZGUyYTcwOWY1MGNkNzEyNDRiMWQ4ZjI3MjExZDYyN2U5M2MxIGxlZ2FjeS10cnVuaworOTUwMCBhNjZkZjU1NWYwMjVmMmI4YTYyMWM0ZGI5MmUwMjY1NDJlYjIyZjhmIGxlZ2FjeS10cnVuaworOTUwMSBjY2Q0NzFjN2I4NjNjZGUyMmU0ZDMyNWEzYWEzMWQ5YWM5ZWZkMDA3IGxlZ2FjeS10cnVuaworOTUwMiBlMTdmZTc5MzA1Yzc0MDZiOGM3YjljYzI5ZWZlNDBmOTI4MjBlMjJiIGxlZ2FjeS10cnVuaworOTUwMyBjNWExOGZjNGY5NjYxNGJiMTJkZjM0YTNiNzQ2YjNjMTY0ZTc5MWFmIGxlZ2FjeS10cnVuaworOTUwNCA0ZDY0NTkwOWI4MzQ1NWQyMWJhZGYzZWUxNGIzYWZkZGQ1NzFhYTI5IGxlZ2FjeS10cnVuaworOTUwNSA4ZGEzNWYxYzczOTAxMGJiOGJmNGQzY2MxN2JhMmQwNTBjYTAwODUwIGxlZ2FjeS10cnVuaworOTUwNiAzNzlkMWZkNDJkYmYxZjkxZjkxMjFlZWQ5MWY1ODBjMDUxYTY2NzBjIGxlZ2FjeS10cnVuaworOTUwNyBhMzY3YWFhNjUwM2NiZGUyY2FlMGQzYWY3MzE4YTdjNTVlNWFhYTc3IGxlZ2FjeS10cnVuaworOTUwOCAwNWUwZTQ5OTAxNGYyOTRlZDYyM2NkZWYzNTMzZWUzODQzOTJjNGVmIGxlZ2FjeS10cnVuaworOTUwOSA4ZDExZWNjMTc3YjJiOGM1MDM0ZTQzMzRiMWJkZmY0ZDdmOTNmYzM0IGxlZ2FjeS10cnVuaworOTUxMCBmYTg1YTdmZDc0MGJjNjFiYjM5OTFhZWRmNjQyZTRmZjI2ZmVjYWFlIGxlZ2FjeS10cnVuaworOTUxMSA2MTQ3NDU5YmZjZmI5YTBlNjdjZmE3MmExYzhkYjhmOTZlYmQ1MjA4IGxlZ2FjeS10cnVuaworOTUxMiBkZGY1MmYwMWJjMGE3NmQ2ZDdjOTgyNmVmNjY4NzAxODUxNmQyYTI2IGxlZ2FjeS10cnVuaworOTUxMyAzMTYxNjc0OTkwMDU5OTY4MjU5YzE4M2Q5ZjI2NDk3NGVmYjYxMTQ5IGxlZ2FjeS10cnVuaworOTUxNCBkMGE5NzAxNGVkNDJmMDFmNjI2MTMzZWUzYTg3MTIyZTQwODAwNDNjIGxlZ2FjeS10cnVuaworOTUxNSAyNjEyZjlhYzMxZWRhMTc3NjI3ODM0YjMxM2NmNDhmNGI3YjFiOGNkIGxlZ2FjeS10cnVuaworOTUxNiA0OWNlMThhMTY5OWY0YzYyMDg4ODc2ZDE2YzJiNWJhZjZiNWEyZDAzIGxlZ2FjeS10cnVuaworOTUxNyBhYjRkNjA0ODIyZDBhY2YyNTdmNmFmMWE1YzMzNDdkMmQyOTJiODczIGxlZ2FjeS10cnVuaworOTUxOCAxYzkyN2VjZmNiYjNiMTg4MGQ5M2M5MDEzNWVlYjA3ZTBlNDRhYTE5IGxlZ2FjeS10cnVuaworOTUxOSBhNTJhM2UyNmVkYzRjZTk0MTRlZTEyNWZiZjM0NzBkNTI1ZTA5ODMwIGxlZ2FjeS10cnVuaworOTUyMCA4NGU4NzFlMjAwODdhZWNmODQ2MjJjZGY2NDM4MzQ3NTdkZmFmY2FhIGxlZ2FjeS10cnVuaworOTUyMSA3NmVhZjM2MDQwYmU1NWNhZTJiYjFkYjMwMDRlYmUyNjg5YWRkZWM5IGxlZ2FjeS10cnVuaworOTUyMiAyOTdlYTY3OTI2ZWI5NGFhNDk1NjdkZGE5MDA4Njg0YjM3ZDU3ZjQyIGxlZ2FjeS10cnVuaworOTUyMyBhZTYzZmEzY2IxYzZmOTFmNjM2MjdkZWYwNGEzNjk5M2VmOTI3ZmE4IGxlZ2FjeS10cnVuaworOTUyNCBjNGE3OGI5MjRkZDlhYzg4NjgzYThkZjcwNGE5N2Q5ZDFkN2QxN2ExIGxlZ2FjeS10cnVuaworOTUyNSA5ZmUzMzVkNDU1OTU2Y2NiODk4MTRmYWE2YzZhNjYyYThiOWUzNjg1IGxlZ2FjeS10cnVuaworOTUyNiAzZWNhNWYzNzUwMWE3OWMxMDEzMzNmNTk5MWQzOWFmNDA4ZTE3ZmVmIGxlZ2FjeS10cnVuaworOTUyNyBhZWNlNTEzNjJhZGFjNWMxYWEwZTJjNzY4NzYyNjYzYTA5NmY2OGU2IGxlZ2FjeS10cnVuaworOTUyOCA5MGVkY2IzOGZiMDAzZjI0M2Q1NzZlZmJiMTY5NGI1OGNkMTgxMTI2IGxlZ2FjeS10cnVuaworOTUyOSAxZjJmNTU5NzczOWJhMWViNzFkMGY2ZjE5MWU0ZTExNjBkYjE5NzRhIGxlZ2FjeS10cnVuaworOTUzMCA1MDI4ODBhZjQ2NTRlMzc5ZDlmN2U1MTcwMDJhYTU2MTlhM2MyNzIxIGxlZ2FjeS10cnVuaworOTUzMSBkYjBkZDExNzU0MWQ0NmU4MmEzY2MwYzY4MzhhYjdhNWRkYTFjY2QyIGxlZ2FjeS10cnVuaworOTUzMiA0MjUzNDQwOTc1MGEwNGVhMTE5YmY2ZTJiMWQ4NGI5NGE0OGFjNzMxIGxlZ2FjeS10cnVuaworOTUzMyBkZjA1YjljNGJlN2YzNzcwNTE2ODE0ZGI0MjBhOWZkZjkzMDZjMmM4IGxlZ2FjeS10cnVuaworOTUzNCA1M2U1NGExNGY0MzIzMzlkODE2YjQ5OWUwZDBjYWNiNmIyMjQyNzg0IGxlZ2FjeS10cnVuaworOTUzNSAwODk2ZDMyYjYwYTRiMWNjODAyY2YyNjdhNWFkMTJiMTYxZDIxMGNhIGxlZ2FjeS10cnVuaworOTUzNiBmMmIyYTdlYTJhMWUzNTVjOWY0MTlmYzZkODYwYWM3MWEyMTFjYjY0IGxlZ2FjeS10cnVuaworOTUzNyA2ZTNiNDY5NWZmYWUxY2FlMDA3ZmM0N2ZlYjg4MDI4ZjdmOWUwMzJkIGxlZ2FjeS10cnVuaworOTUzOCBjOTVlNjBlYWQ1ZTA2YTFlNWUzZTk5NmYyZDQwZGFjYjY3ZDQyZTM5IGxlZ2FjeS10cnVuaworOTUzOSAxZDBiOTAyODUyM2M2ZWJiMzFiOGNhYWY0M2QzNTAxNjhiODE5OWYyIGxlZ2FjeS10cnVuaworOTU0MCA2YjRmOGE5NmUxZDQ0NGY0ZmQ2YTc2NDcyYTY3ZDE5NjMwNzRlYWJmIGxlZ2FjeS10cnVuaworOTU0MSBlNjhlZWIzNWQwNGQxZGI3ZTdjYmIxYmU3MmQwYTg4ODc5YjNhNzFjIGxlZ2FjeS10cnVuaworOTU0MiAwYzcwMjY0NTczZGIzZDM1MjEzNjEwYmVjYzU1NGNkNGEwOGU5ODVlIGxlZ2FjeS10cnVuaworOTU0MyA4ODY2YzY5YjBhZmM4ZGM3OTMxYjRhNTE5ZjQxMDU2NWQ0YzgwOGZlIGxlZ2FjeS10cnVuaworOTU0NCBmYTQyMzA2ODU3NTcyZmY4NTNhYTAyOTk2YmE3MGQ4ZGJmNGEzZWE0IGxlZ2FjeS10cnVuaworOTU0NSA5MDY1MGJiZDlkYmI2YWM1OWYzMDdiNjIwYWQyNDdhNTcxOWRlNzcyIGxlZ2FjeS10cnVuaworOTU0NiAyY2RmMTFiMmVkOWI0NDEwZmFiZGUxNjA0N2QyYWQ2MmQ3ZDFiYWM2IGxlZ2FjeS10cnVuaworOTU0NyAwMGU2MTI1NjA0OTJjNmFhMzVhZTQwNWJkZDJkZTcwMDdjNzg2Nzg4IGxlZ2FjeS10cnVuaworOTU0OCA3NWExYWVjNmQ5YjJjZDI0MzhkNjk3ZDRkZGQ4YTI4NzVjODM2MWJmIGxlZ2FjeS10cnVuaworOTU0OSAwMzE0ZWNiYzVmNWQ0ZTI1YmU2ZWFjNzkyNDQyMTI1NTYyZjExYjQyIGxlZ2FjeS10cnVuaworOTU1MCA1YzM1M2M1MjJhNDgyNzgxNDhiNWVmZDRiYzdjODJjYjc3OGNjMGExIGxlZ2FjeS10cnVuaworOTU1MSAzYjUxOWE2ZDI3YmI1YmUyZmU4MGRlMzY2OThhYThjMjU2NDMwMTAwIGxlZ2FjeS10cnVuaworOTU1MiA4Y2Q1NzNiNzJkNGI2MTNjYWIwZTBlM2RkYzdiYWRmMTY2OGEyNWQ3IGxlZ2FjeS10cnVuaworOTU1MyAzZDhjMWI4ZjYwOTkwZTg0YzIxNWQxMTkyY2QxNTMxYmRmNTNhMTZhIGxlZ2FjeS10cnVuaworOTU1NCAyYWU0NDE3YWMzMzA5ZWU2ODI1ODdkMGZmYWYyY2M4Nzk5MWExMzlhIGxlZ2FjeS10cnVuaworOTU1NSBjMWFkMzRiM2MwNjk5NTBkNDc0ZGE4OTMwYTQ3NTZmZjU0MmZjOTY1IGxlZ2FjeS10cnVuaworOTU1NiAwMzE0NTUzNDgyYTI5ZTc0NDM4YTI1MWJjMzZiYzYyM2JmYTY2NzFjIGxlZ2FjeS10cnVuaworOTU1NyAzMjJkY2E1ZWUxNDViZGNiNDdkYmQ0MjRhMGI1MDEwOThhZDlmNTEzIGxlZ2FjeS10cnVuaworOTU1OCA5MjRmOGEwMTE3ZDVmYjAxMWQ1ZjNlNWFkMzE3MTllMzQzZjk2MzI5IGxlZ2FjeS10cnVuaworOTU1OSAwYmFhMmFiNDJlZTkwY2RkYWM2NmYzMzEwMmY2YmI4MjdhYWQ1NjlmIGxlZ2FjeS10cnVuaworOTU2MCA0MTliODZiMDRhZTRkOThiM2U2ZTY4ZjlkYTM1OGZlOTU4OTk5NTVmIGxlZ2FjeS10cnVuaworOTU2MSA5MTNlNDhhYWFjNzYxZWFjNDU0MTQyZGRhMDZlODhjMGQ5NzllNDljIGxlZ2FjeS10cnVuaworOTU2MiAwYzY4ODc3NjU5Mzk1MjRlNDM4MWNkZDI0NzJhNGZmMTgxY2M0ZTYwIGxlZ2FjeS10cnVuaworOTU2MyA5YjA1YzIwYzU3NzZhNGYyNWMzMjkxNzE0Yzc0OGVmZmIyMjM2MjMyIGxlZ2FjeS10cnVuaworOTU2NCBmY2IyZTNlZTg5OTU5NTZiODA1NzZiNTVlOTBhMzM5NTcwOTU3NDE1IGxlZ2FjeS10cnVuaworOTU2NSBhYjUxZGEzNDczMTZkNGJmYWI3NGIwNWUxMTMwNDUwMmRiNzRlYjZjIGxlZ2FjeS10cnVuaworOTU2NiBhMmUwNTQwMzI4OTljNjI1ODZjMDQzNmFhOWQyYTFjMjQxZTEyMDNhIGxlZ2FjeS10cnVuaworOTU2NyAyOWIxNjg2ODc1ZGFhNTE1MTNjNDFkYjYyODVhMjIzNjk4YmMwNmVmIGxlZ2FjeS10cnVuaworOTU2OCA5NjQ2MGVmMzNmZGVkN2VkMTJmZDc1YThhN2I1NTZmNGUyZmU2MWUzIGxlZ2FjeS10cnVuaworOTU2OSAyZThiY2RlNGMyNDhmZmJlNjk5NjdkNzcyMzc0N2ViMWNkODQ2YTUzIGxlZ2FjeS10cnVuaworOTU3MCA4YTU1NjQzZTY2N2ZhMTcyZGRkMDVkMjc2MTNmMzk5MmE5MDAzYjJlIGxlZ2FjeS10cnVuaworOTU3MSBhZjgyNmIyM2YwMDY0MzA4MzVlMGE3MmM5YjYxMDlhMjhmNTM2MmQyIGxlZ2FjeS10cnVuaworOTU3MiBlNTU0ODA5NmI0MmE1ZmI5MTI2ZThlYjYwNjVmNWU5YjhlZjU3ODk3IGxlZ2FjeS10cnVuaworOTU3MyBiYzE5NzZmZjZmZmQzMGZiMzUzNDc0OWU4OTc4NTlhMjc5ODdjYWE0IGxlZ2FjeS10cnVuaworOTU3NCA1YmI4ODQ1Mjc0NDZmOTY1ZDFlMjE5YWFkNjJiY2I0MTAxYzNhZDQwIGxlZ2FjeS10cnVuaworOTU3NSAwMGE4NWFiMDMzN2Y3Zjg3Y2RmNjI2ZDNiZGVkNTA4NWM4NDQ1YmYwIGxlZ2FjeS10cnVuaworOTU3NiAxNjc2ZmFkN2I2M2U3NTI5ZDJmMThiNTE5OWVmNWFiMDkzMmIxZDhjIGxlZ2FjeS10cnVuaworOTU3NyBmN2Y1NWJiNmEzYjMwODBmMmUwOGJiMjUwMTNhYmE5OWYzZGNlZDMxIGxlZ2FjeS10cnVuaworOTU3OCA4MDg0NzlmODVhMjlhM2IxMTllYWY1YjVkY2U3YWQ4ZGFkOWUzMjExIGxlZ2FjeS10cnVuaworOTU3OSAwZGMyZmNiMDc2YWNhNWI3YjRhMmZkMTVkZDAzYzRjMDQ0NzhlNTk0IGxlZ2FjeS10cnVuaworOTU4MCBlZmFhMDFkZWZmZDJkYjA0MjBlM2M5YWI3OGZmNmU2M2QzNjQ5NGIyIGxlZ2FjeS10cnVuaworOTU4MSAyZTVhMTE2ZTU0ZWNkNWNjZTFlNDcwNGM5N2UzMWZlNThmNDA0YTE2IGxlZ2FjeS10cnVuaworOTU4MiBlNzA2MWFiMjQ4NTIxNWU0NGJiNDdhYmU5MjhlNjI3YTI5NTZmN2NjIGxlZ2FjeS10cnVuaworOTU4MyAyOGM3ZDVmY2QzYWM5ZGEzMWY2YTkxZjhhOGQyZTcxYzE2ODExYTYzIGxlZ2FjeS10cnVuaworOTU4NCAzMTc2ZGVhY2I2ZDFmMGVhYTY1MDEwNjllMjkzNmQ3OWVhYTdiODg5IGxlZ2FjeS10cnVuaworOTU4NSA2YzkwMGFkYjFlYzNiMTVhMTAzYzNjOGEyYjZhNjkxOGNjOTVkYjQ0IGxlZ2FjeS10cnVuaworOTU4NiBlZDYyNTQ4MDQ1NjM1ZTU5YmVhZjI3ZWU3NjVlOGRlYmUwYWViMDhjIGxlZ2FjeS10cnVuaworOTU4NyBmNDM2Njc4NjZkNWU1ZTYyMWZhZDVhNTA3OTdlODQxZjg4NGIxMjY5IGxlZ2FjeS10cnVuaworOTU4OCAyODIyMzY4YzI2NmEzZjA5OTZkMDZlYmUwZGY5MDA0ZjU3YTQ4ZjFjIGxlZ2FjeS10cnVuaworOTU4OSBmMDYzZjFlYjI5NjRiYzQzMWE3MGMyMjA2ZDg0ZGFiNjA5ZDg4MDI4IGxlZ2FjeS10cnVuaworOTU5MCBlY2U0MTIzZTM2ZWEyY2M5OWI1ZGUzMmM5MjFiZTdjNzUzMTFiYzQxIGxlZ2FjeS10cnVuaworOTU5MSBmNWYzMDVkN2E2MTc1NzQ0ZTJjM2RjNzFhNGZhZGRmOTA3MjY2NTA1IGxlZ2FjeS10cnVuaworOTU5MiBmYTA5MzcyZjc4NzJkYmFjNDExYmQ3NWIyNTc3YzM2OGI4YWYyYWM2IGxlZ2FjeS10cnVuaworOTU5MyBlYTdkYzUxMGUyZGY1NjllODViMDcwY2JiMTE3ZTA2MmM3NmZjMDAwIGxlZ2FjeS10cnVuaworOTU5NCA0MTUxNGQxZWQ2NjRlMmFmYWMxYmRmNWQzMTVhMGVmZmNkZDNiZjg5IGxlZ2FjeS10cnVuaworOTU5NSA0MTlkY2EyYjNhNjE3OTBiNDNlYzU5ZGMxZmEzMWExYTNkOWNkYTUxIGxlZ2FjeS10cnVuaworOTU5NiBlOTEwOGU5N2E1YTAxN2UwMjdkZjMzY2RiZmE1NTQzZTkxNDgyMzhkIGxlZ2FjeS10cnVuaworOTU5NyA1MTYxODk5ODRiMGNhMzk0Y2UyZjRiZmI1YWViY2JlYzU4M2RjZWQ2IGxlZ2FjeS10cnVuaworOTU5OCAwZWZlZDRkMzMyM2IxMzAyYWNjYTAzOWJkNzE2ZTVjY2Y4ZDJlMzYzIGxlZ2FjeS10cnVuaworOTU5OSBjODc0NWQyMDUxMjI3MTZjOWUxMGRiNzk5ZmI2ZjEyZjllNjg2NDg0IGxlZ2FjeS10cnVuaworOTYwMCA0MWQ2ZGI4ZTI2ZGMwMzM5M2RmODdiNDkyNzJjNWIyNDliYjMyNTY5IGxlZ2FjeS10cnVuaworOTYwMSA1ZDUxN2RkY2JkMmVmNTE5MzNlOGYxZmU0Y2MxYzVkMzIzM2U1MDM3IGxlZ2FjeS10cnVuaworOTYwMiBjMDM3ZDAwYjFlMmNiYTg5ODVjYjYzOWMxMDY3YjNmNjQ1NTdmMTcwIGxlZ2FjeS10cnVuaworOTYwMyBkZTRjODFjMDY5OTQyOWJlZTQ5N2ZkOGIxYWQ3NDRmOGM2OTNkNWY5IGxlZ2FjeS10cnVuaworOTYwNCBkMmMxMTBhY2M2MGMxNjYyNjI5NTU3MGY3ZjZhNTkzMDNmMmMzOTkwIGxlZ2FjeS10cnVuaworOTYwNSAxYzRiYWFkYTU1OWUyMzBkMzQyMTYxNmEyYTFmNmE5OWM5ZTdiNmJhIGxlZ2FjeS10cnVuaworOTYwNiBkZTRkY2E5ZTQ3NzhjZmVmOTdhOWE4Y2YxNzc5ZDc2OTBhZTM0YmI4IGxlZ2FjeS10cnVuaworOTYwNyA5NzMxNWJmMDhmYWQ2MjNkNjIwNGQwNWUwN2I3NmQzNzY2OTkwMDFkIGxlZ2FjeS10cnVuaworOTYwOCBlNGMzMWRjMzA2MjNjNmQ4YTgxNjA3NTA4MTA4NTZlM2NmZjE0YTIwIGxlZ2FjeS10cnVuaworOTYwOSBkZmRlYWM1ZTE4YzYyNWFhZDk5OGEwYWM3ZTYwNGJmNWQ1ZjA3NGUyIGxlZ2FjeS10cnVuaworOTYxMCA5NmZhNjc1M2U5NTYyNzliNWI2OWU1M2M4NmYxNjM0ZmE1Mjg2NDNkIGxlZ2FjeS10cnVuaworOTYxMSBiYTg0OWU0OGY5Y2FlMjM4YzkzM2FiYWIyYzk0YTkzOTZmMGU1YjcwIGxlZ2FjeS10cnVuaworOTYxMiAzOTM5ZjlmZjY2NWY4ZmJlYTM1ZGNhNTc3MWU5OTY0MzE4NWQwMDQ5IGxlZ2FjeS10cnVuaworOTYxMyBlZmEyMjQzM2U4NTVkYTRmNDU1YjFlNWMwYzU1MzY4NzI0NWY2N2Q1IGxlZ2FjeS10cnVuaworOTYxNCA5M2ZmZTY0MWE1MTI3NmZmNGRhMTdjMmY1NGFjOWQxZDhkMDkyYzhlIGxlZ2FjeS10cnVuaworOTYxNSAxNmEzY2RkMmYxZDEzYjgyMDA5OGYzMGYzZjUxNGQxNDQxNzJjNjE4IGxlZ2FjeS10cnVuaworOTYxNiBiZjkxYzBlMTY1YWFkY2Y1ZWZiMTA2MDFiMDNlZmI3YTZkNTI1ZDNmIGxlZ2FjeS10cnVuaworOTYxNyBkYzg2ODdiNTNkZDBmMTc2OGEwMWI5NjhlZDkyNTM4NDNhNzQ0YWQ3IGxlZ2FjeS10cnVuaworOTYxOCBlN2JmZWE0MWY2MTdlODhlODc1NmZjMTVhNDg3MGZlZTNhNjAyYzUzIGxlZ2FjeS10cnVuaworOTYxOSBiODFmYjY3ZDkwOGQ3YTk3M2NlMTAyMmQ2ZmYwMzRlODAwOTQ3YjFjIGxlZ2FjeS10cnVuaworOTYyMCBhZmYxZTdiMWY1MjNkNzMwNWJjM2UxMWQzMmNhNzAyNTQxODg1MDBkIGxlZ2FjeS10cnVuaworOTYyMSAzZjBiZTdkZTdjYTVjYTU0YWNmY2EzZTE5MzRjM2QzMTg5N2ExODQzIGxlZ2FjeS10cnVuaworOTYyMiA0ZWY2YTgzYjJlNjI1ZTE2MzU5Y2VmYTE1ODk3ZjhlYWExMGFjZmE3IGxlZ2FjeS10cnVuaworOTYyMyA2MDc0ODQ3ZmFkMWRlNDk3MDI4ZWE5MmQ0ZmQwZWNmM2E4YjJjNjQyIGxlZ2FjeS10cnVuaworOTYyNCA0OWU0ZTNmMzBlNTg4MDJiYTZkYWIwZWQyNTNlOGZjYzA3YWFjODNlIGxlZ2FjeS10cnVuaworOTYyNSA1MTI4YzYwNzJhYTUxYmE3MTZiYzdmYjNiZGQwMDJhNTg5Y2RkODYwIGxlZ2FjeS10cnVuaworOTYyNiBkNDhiOTlkODU2MTc0MmQ1ZDc3Yzg1ZGY1NTgxMjdlOGQ2YmVkOWI4IGxlZ2FjeS10cnVuaworOTYyNyA3ZWRjMzBkZjczZjZhMmNiMjBlNWFjYjJlNmUzYTBjNmM4NThlN2ZmIGxlZ2FjeS10cnVuaworOTYyOCBiODY0MDI5YTViYzVjNWQwM2EwMTM1OTNmOGMyNTAzMGIxNTY3MzJkIGxlZ2FjeS10cnVuaworOTYyOSBkMzM5OTU0ZWE1N2Q4OTg3OTMxYzQ2NzhjYjljMTU0NTU0YmU4OTBiIGxlZ2FjeS10cnVuaworOTYzMCBkMzlhODA1ODUyYzIwYWU5YzdlZjhkZjdiYmI4ZGVmZWJjOTI3MTc3IGxlZ2FjeS10cnVuaworOTYzMSBhNzY5MGVmNWUxNTkzN2UxMDI4MGU5NTM0YzRlZjFhMjljMzE0YzI0IGxlZ2FjeS10cnVuaworOTYzMiA3NDkxNmM5NmRkYjk2NTE0ZjQ1MmJmNDRmZmE5YTAzODIyMmU5ZmVhIGxlZ2FjeS10cnVuaworOTYzMyAzMGFiMzljMmIxODYyZTRmMGRlYzNiOGQ0ZWU2ZWFhYWRkYjcwNzcyIGxlZ2FjeS10cnVuaworOTYzNCBjZTZhZDE3MGMwY2U3MmU5MDZmZTk3YjJmY2ZlZGM2OWE5MWM5MzExIGxlZ2FjeS10cnVuaworOTYzNSBhNmZhOWYzY2FkMTM3Y2FhNWY3YzVlMmM3OWE5YjY0YjdhZDFmYWVkIGxlZ2FjeS10cnVuaworOTYzNiBmYjcxYjkyZDE0M2FhMWUxNmI1YjAyNGNhMGExYzE4Y2Q5MjFjOTBkIGxlZ2FjeS10cnVuaworOTYzNyA0OWEyMGQwMGUzNGNlNWY1YzZkZjc1OWMwZmI2MTY1MWE2Mjk5NDRlIGxlZ2FjeS10cnVuaworOTYzOCBhNjRhNDIzZDZiNTQwYWE2NDQ3MTE3NmZjNmNkYzYxZjA3MTk0YTFiIGxlZ2FjeS10cnVuaworOTYzOSA1YWI3MDgxODFmYTYyMjMyZjA2NTQ2ZmFkZmYyZTAyOGExMWYyZmQyIGxlZ2FjeS10cnVuaworOTY0MCA4ZmI1ZmQwNzViMmFiMTMyMDM4NGJjZmFiMDNmNTBkZTc3MjY4OGU5IGxlZ2FjeS10cnVuaworOTY0MSBlNTY0NmVlY2VhZTg4NzlmYzBhM2RjNTNkZGM3NzA5NTM1ODAzYmI0IGxlZ2FjeS10cnVuaworOTY0MiBjM2I1YjFjMjVjNTFjN2YxNmNjN2E4YmEwM2VjNmJmNzVmNzcyZWQzIGxlZ2FjeS10cnVuaworOTY0MyAwZDVhOWEwZTdkNjRhMTJlMDJiZTcwNzM1NzI1ODJkM2RkMmI2NjNiIGxlZ2FjeS10cnVuaworOTY0NCA2NmNiMDAzMTdhY2ViYjZmNTgwMzE5YTBmM2ZmNTgwYjNkZjYxZDdlIGxlZ2FjeS10cnVuaworOTY0NSBlNThjN2I1MGU5YjljNmI5NmQ4OTMzYzVmM2QyNzZiNTY5MjU4ZWQwIGxlZ2FjeS10cnVuaworOTY0NiAyMTI1OTdhZjgyOWJiY2FiYzE3OTc3ZGM1ODNlOGQyYjg0NTFlNTMyIGxlZ2FjeS10cnVuaworOTY0NyAzNzNkNzgxMTgxMTNiOGNmNGY4OTA4NjYyZTMwM2RiNTc3ZjJkYzA2IGxlZ2FjeS10cnVuaworOTY0OCBjNWU3NjdlMjJiZDFjM2U2NWQzNmI2MjNmYTg5ZTQ5MWNkNTg4YWVlIGxlZ2FjeS10cnVuaworOTY0OSBjZTQ3NjZmYjNmNTYzZDE3NjM4YzkxYTFjNDI0YjI1NTZiYjY2NTkyIGxlZ2FjeS10cnVuaworOTY1MCBiNWIwYzMyNGNlNTk4NzhmY2FlZWFhMTUzZWZhMWQwOGI3YzM3YjAwIGxlZ2FjeS10cnVuaworOTY1MSAwYTRlMjlhMjg2NTVlNDA0MzBlY2YyNGE4MzlhNzE4ZGQyZjdhNzJmIGxlZ2FjeS10cnVuaworOTY1MiBkYzliYjQ3YjM1NTI4ZDdkZjI2N2NjYTNkNjAxZjYxMzA0M2NmNDUxIGxlZ2FjeS10cnVuaworOTY1MyBhMjhiZjYyYWMzMzViNWYzMDZhM2VlNTdlYzkyZGEyMTdmOGE2MWIyIGxlZ2FjeS10cnVuaworOTY1NCAwYmQxODVjMmU1ODEwM2UxZTgwZDA5M2ZjMzg4ZTIyZDczNGFkN2EzIGxlZ2FjeS10cnVuaworOTY1NSA3YzAwNGZjMTA5ODczN2FjZjAxNTk0MmU4N2JjNjY2M2FmZmQ4MTRlIGxlZ2FjeS10cnVuaworOTY1NiA0MDk4N2I4NmExYzc0ZmI4NWM5NmZkNzk3MmUzNDZhMDdhY2U1NTkwIGxlZ2FjeS10cnVuaworOTY1NyA3ZDYxZmE5YjU3YThjNTQyYTk1NmFmYWIyYTFiMzBjM2IzOWNkMmMyIGxlZ2FjeS10cnVuaworOTY1OCAzYTk2MGIyZTI2Njc3YzFiYzViZTRiNGE1MTg5YjBkZDE2ZWQ5ZWQyIGxlZ2FjeS10cnVuaworOTY1OSA0ZjEwZDIzM2YxZGM2ZDNkMGI0MTZiZjlhYmM2N2ExNDY3MzE2ZDc2IGxlZ2FjeS10cnVuaworOTY2MCA1OTM2MmVhN2UwZjhiNDEwNjRkMTk1MDA5ZmJlYjlmZDI2NzA3NTY5IGxlZ2FjeS10cnVuaworOTY2MSBkZTVjYjc4OWU5ZjBmMmY4N2I5OTFhN2JkOGFlOTc1N2M5ODY5Y2I1IGxlZ2FjeS10cnVuaworOTY2MiA2Zjc4MTk1YmY4ZjY4N2Y3MGVjNTg2OGE5ZGY2MjExZGE5ZDNhNjIxIGxlZ2FjeS10cnVuaworOTY2MyBhNTk2YmJlNzI1NzlkOGI1ZTM0Y2Y0MTMxNzlmMzZmOWZmNWQ3ODQ5IGxlZ2FjeS10cnVuaworOTY2NCA2ZTVlYjg0NTI0NmMwOWJkOWI0NTQzZGYwZDYxNTc2NGVhY2RhNzVjIGxlZ2FjeS10cnVuaworOTY2NSAyYTliYTU5YWJjMzgyYjc5ZjE4MjhkODQzNTMyNjVhMGYwNTU0YWNhIGxlZ2FjeS10cnVuaworOTY2NiBlZTRhMWEzMGQ3Y2U5MjdhNzk2YTQ2MzFmYWI1YmIzNzQ3ZTRlM2NhIGxlZ2FjeS10cnVuaworOTY2NyBmM2NjOGQ1M2FjODAzZGYyYWEzMGQxYjFkMzc2N2IwODU3ZmRjOGM0IGxlZ2FjeS10cnVuaworOTY2OCAxZjlkOTQyZjE1NmNjOTMyZmRlZjkxMzM0NTViMmY4MDRkMGQxZmMwIGxlZ2FjeS10cnVuaworOTY2OSA3MDU0YmU1YWQ3ZjY3NDFhZjliYjA2NTQ3ZjM5OWZkYzY5ZjRkYTQxIGxlZ2FjeS10cnVuaworOTY3MCBhZjk4YjQyMTQyNGNjMzliOGM2YThiNzRhYzZmNmU5NGRlNDZkOWQxIGxlZ2FjeS10cnVuaworOTY3MSBlMjc5NTcyZTJkYTI1NTE2NjcxODJlZGEyNmE3ZmU1MDczZjg1NmIyIGxlZ2FjeS10cnVuaworOTY3MiBiMDA5YTRjMjQxODhkNTI4M2ZiZWIwMmMzMzUzNmFkNWY4YzNhZGM1IGxlZ2FjeS10cnVuaworOTY3MyBjMTIzYTVhNTljZGUyMWQwYzEyOGFhM2RhMmVkZTlhNDA2NmZhMjdmIGxlZ2FjeS10cnVuaworOTY3NCAzMDlmZmZlNzY4YTYyNDIxODU1MjkwMDUwN2Q2ZDdlNDU2Y2Y3MTYzIGxlZ2FjeS10cnVuaworOTY3NSAyNmQwNzczNWJhNGE1YjI2N2FiZmM4NzBlNjNkZjY4OTlmYzUxYWFhIGxlZ2FjeS10cnVuaworOTY3NiA1Y2QyZjY5OWJmNjkxNjZhZDdhNWQ1OWYxZWE2NWZiNTE5YmM3ZDY4IGxlZ2FjeS10cnVuaworOTY3NyBkYjAwN2EyY2E3YjYzNjc3MzUyMWI1YmVlM2RkNzI5MmU1NGE5ZWQ0IGxlZ2FjeS10cnVuaworOTY3OCA5OGE5ZGE1MjBmMWQ4YzE5YWI1YmQ0ZTIwMzMyN2Y0ZThjY2M1MjEzIGxlZ2FjeS10cnVuaworOTY3OSA3MjBlOTE4Mzk2MWVlOGFkZDc0MDEzMjNiOWM1YzAxNTNkZGY1NDQ5IGxlZ2FjeS10cnVuaworOTY4MCBmZWQzZDIwMGZiNTY1ZDJhY2U4MDFiYzYxMTM2YThiMzdmY2JjODFlIGxlZ2FjeS10cnVuaworOTY4MSA4YzEyOWE1Njc4Njc3OTUyYTMwMjhjOWEwY2QwYjhhNGI5ZDliZTdlIGxlZ2FjeS10cnVuaworOTY4MiA0OGFiNjY4NzRiMTE5MWNkZDQ0M2EwZTMxMzBmMDM5OWFkMDllOTIyIGxlZ2FjeS10cnVuaworOTY4MyAwOWZmYWIyNzNlZWI1NjVhNzYxOTU5NGQ5MDU5Njg1MmZmNGQ4ZTFlIGxlZ2FjeS10cnVuaworOTY4NCAzZjI1NWFlZGY2MjFlOTVlMjY3MjlmM2ZiZDA5MDI0ZGI3NGEyNGExIGxlZ2FjeS10cnVuaworOTY4NSAwNmRiMTBjNzZkYzk1MmUzZmEwMTk0ZDgzYjQwYzQ3Mzk3NmJjZGI5IGxlZ2FjeS10cnVuaworOTY4NiBjZTI3MWU1ZjliYzVhYzg5N2MwYjlhNGQ4MmMzZGE3MGU1ODYxNmI1IGxlZ2FjeS10cnVuaworOTY4NyBjOWZlMzVhODI5OGFkODU5NmE2MzExYTcwZGEyOWRkZWI2N2JiMzNhIGxlZ2FjeS10cnVuaworOTY4OCBiY2NkZWNhODE2NjljZTNiZDMwMTRhMzAzMTBjZjcxZjUyZmE1MjBlIGxlZ2FjeS10cnVuaworOTY4OSBjNzY0MjE3YWU2ZWI5MmQzMWQ5MDA1Y2Y3ZWIyOWM4YWM1YzMxNzE0IGxlZ2FjeS10cnVuaworOTY5MCBiOWJiZmExNjk5MjBlNDU1YjEyNzEzZDgzMmE4ODdkOWY5MjFiMzAwIGxlZ2FjeS10cnVuaworOTY5MSBmZjUyNGI2OWI2NjRhM2ZjNjUxZjlmZTkzN2U4ODc0OTkwYjVjYWI0IGxlZ2FjeS10cnVuaworOTY5MiA2MjIyZDMzNzFmYjgwZWI4NDBlZTUyZDgxMjM2YzFmM2I4OTY5NzlhIGxlZ2FjeS10cnVuaworOTY5MyA1YTdmMjY4YTA3ODFhOTRhZGM1YzlkNzUzNWQ4YjE5ZWU4YzQ2Y2U5IGxlZ2FjeS10cnVuaworOTY5NCAxNmVjZjE1NTRhODM1NzkzODBlNzM3NmVlZWJmMTFmZDMxOTVmMTJkIGxlZ2FjeS10cnVuaworOTY5NSBiYzAwODY0MDRhOWE1NTI5MjFiYzMyYWExMTgyYmVlMzViZjBjYjg5IGxlZ2FjeS10cnVuaworOTY5NiA5MGEzNWYxYjkwMDg1ZmExOWYzNDA4NDRlMTA1MjZhNmZhYzIzOTA0IGxlZ2FjeS10cnVuaworOTY5NyA2NDBiOTdkMTA1ZGY3MTE1MmY5NzMyYWQ1MzNkZmJkMzUzZWQzMzVmIGxlZ2FjeS10cnVuaworOTY5OCBkMGNhODE1YzgwNzI1NDgxM2UyM2M4OGM5ZGNkMDJmYzFhYjFjOTg3IGxlZ2FjeS10cnVuaworOTY5OSA5NWMxMDE5NjQ0MTQ5ODU3MzBhODkxZmQzMDY5OTZiY2IwYjRhNjE5IGxlZ2FjeS10cnVuaworOTcwMCAxMGZkZjE2ZjRkZTljMWY5NGY2Yjg1MjM4YmM2NDBiMGMzNTQxNTk1IGxlZ2FjeS10cnVuaworOTcwMSA5ZGRlMDdhNTkzZDgzZmMyMzJjNzBkYjAxMjkxMzMzMDJjMjdhNmI1IGxlZ2FjeS10cnVuaworOTcwMiBkMzNkNDU2MjJlNjcxMWQ4YjFjOTc5Y2Q1MDBmYWEzNzI3MDUwOGRkIGxlZ2FjeS10cnVuaworOTcwMyAxMWYzNGJlMGJlMTFmZjQyNzdkNTBhMmE0NzlmNjlkNDc5YTA0YTNjIGxlZ2FjeS10cnVuaworOTcwNCA0NzgwMmUyZjViZWRiNGYyMmJiYzU0ZDMxNmY4MTE4Y2YwMzgxYmQwIGxlZ2FjeS10cnVuaworOTcwNSAwNDVmZmE0YzU2Zjc4NTZhMjM0YTk1OTRkZGRkNzZlNTAyNmIxY2ZjIGxlZ2FjeS10cnVuaworOTcwNiBiYzY0ODJmN2U3OGZhMzQ2NmI4Yjk0MWVjOTFiOTdhZDlkZDBhZTQwIGxlZ2FjeS10cnVuaworOTcwNyBiYzI4YTBlYTY2NDBmNzdiNGJkYjQwODRmMjYwNjBmNDllYmE0ODhhIGxlZ2FjeS10cnVuaworOTcwOCAzNzU3MjNhNzU1OWM3MTVlMDk0YmViYzI1M2YxNWJmMDFlODg1MTJmIGxlZ2FjeS10cnVuaworOTcwOSAxNzdhZDczYmYxYTkyNWYwMDkzMzVkN2Q3ZmRlMWE4ZDkyMjUwYmI0IGxlZ2FjeS10cnVuaworOTcxMCA3NGM1NzI4OGEwMmI5OTY3YmE2NDhmNGNiNWZiZTMzYjMzZDRjMjk5IGxlZ2FjeS10cnVuaworOTcxMSAwOGM1YmJmYWU1MmMwZGZlMDYzZWZlODAyMzFlNzM2YjAwNjY2NjkyIGxlZ2FjeS10cnVuaworOTcxMiAyM2M1MDlhYTNmMGQ5NDczY2U1MmExNWE3NjAwMjQ3MDZjNzc2Nzc2IGxlZ2FjeS10cnVuaworOTcxMyBkZWJlOGUwODEyNjA4NWY0MDBiM2RhNjNiMGQyM2Q3NjQyNGRjZTZkIGxlZ2FjeS10cnVuaworOTcxNCBmZDdhNTk5M2QwNmRhYTI4NDhmYzEwYzE3YjJkYTcxNTgxYjQ4YjE3IGxlZ2FjeS10cnVuaworOTcxNSBjZGI0YTgxMzc5YWQ3ZTU5NzNmMTViZWU1OWIxNmY1NmU0MjY0MGJhIGxlZ2FjeS10cnVuaworOTcxNiBhYTU0ZDdjM2RhZjkwMTY3YTk1ZmE2YmRiNDNmZjczZDg3M2JhNDdkIGxlZ2FjeS10cnVuaworOTcxNyAzMDZmNzM3YmFiNTc2YTgzODkzMmI1OTg0YTQ2NmRjZjc2NWQ1NmZjIGxlZ2FjeS10cnVuaworOTcxOCAyYjgyMjMxYTk3Y2M2YWJmNzY1ZDgzYTRhMjA5NmRhYjExM2Y0MTE3IGxlZ2FjeS10cnVuaworOTcxOSBiNTk4NTU0MmJhZTFlNjlmNjUzYTQ3NzcwMWZiNjdkYTBmMWJlZTg2IGxlZ2FjeS10cnVuaworOTcyMCBlNzUwMDYwNjkzNjdmYzZmMTE1MzBkNmVjYjVkZGU5ZGE1ZmVkZDgwIGxlZ2FjeS10cnVuaworOTcyMSA1ZjViOWU4NzE4ODZjZDhiOWVjNDE1MTllNmUyNTMwNGNlMTU5NTQ5IGxlZ2FjeS10cnVuaworOTcyMiAwYjUzYzAzOTNjODgyNjNkN2U0MWI4ZjE5YTNiYjFkYjJmZDRiOTc5IGxlZ2FjeS10cnVuaworOTcyMyBhNzExNjg2NDlkYzUxZWY4M2IzNTVmMjZkOTkyN2ViODdkNGMzZGY4IGxlZ2FjeS10cnVuaworOTcyNCAxOTNkNzA0Y2JjYzg1MWFlNzM4YzFmYjhhMTVhNDRjYzJjMGNlY2U1IGxlZ2FjeS10cnVuaworOTcyNSAxMjcyYjU4ZTg0YWViNmMyZGY3YTM5YzBmMjdiZDAwYmFmYWY5NDY0IGxlZ2FjeS10cnVuaworOTcyNiAyODc2MjNjY2UyODk0NTNlMjZjYzg5YmRjOWVhOWFjYjQzNjk3NTAzIGxlZ2FjeS10cnVuaworOTcyNyBmMGJiM2JjZjM5N2IyNTQ5NmMwZDdiZTRjOWYxODBhNGRjNGEzMWM4IGxlZ2FjeS10cnVuaworOTcyOCBjNjk4NjkwYTI3YjI1OTEzNDAwNTFjMGNjM2MwYjg4NzYyNjU5NDBmIGxlZ2FjeS10cnVuaworOTcyOSA4YTA4MDI1ZWY5M2Q4Zjk1NDM2NjlmZjdlMzYwY2NhMTk4OTI4MWRjIGxlZ2FjeS10cnVuaworOTczMCBkM2ZkMjE4MmNmYjhlZDAyZDQyNDAxNmI0ZTZiOGM5OWQxYjM2MTcwIGxlZ2FjeS10cnVuaworOTczMSA0ZTc0MDJjOGU0NjBiZmJmOGEzYjM4YjExZjc0N2UyZWQyOWYxMGI4IGxlZ2FjeS10cnVuaworOTczMiA4MTI2MTVlNTQ1NTBlNjlhZGFkNzBjMWYzODY5YjJkYmQ5ODg4YjNjIGxlZ2FjeS10cnVuaworOTczMyBjYTc4YjA5NWVjZjAxNDYzZTNlNjk1NzVjYWI5MWQ4YWMxMmY4YWNmIGxlZ2FjeS10cnVuaworOTczNCA4Yzc0OWRmYzQ5YmZhMzhlZDZkZjAyYjY0Y2I4N2U0ZGFmMmFiNmNlIGxlZ2FjeS10cnVuaworOTczNSA4YjBkNmI2NGEwZWEzOWNlMzNlOTZlZDk1Y2IyNmJjMGE1YWE5Zjc0IGxlZ2FjeS10cnVuaworOTczNiA2MTRkOGE5MDg0ZWFkNDc1ODAwZDFmM2Q5ZDliZjQ0NzczZTcwYmJjIGxlZ2FjeS10cnVuaworOTczNyA3Y2RhYTQ0OTU1MzA3OTNiYWVjZTcwZTNlN2IzNmY3OTM3YjM0ZGQ0IGxlZ2FjeS10cnVuaworOTczOCBhN2U5NTI0YTJhNTJjNjRhYTI4NjNlMDY1MWUzZThkYjc2NWViZjYwIGxlZ2FjeS10cnVuaworOTczOSBiYmYzNTA3ZWYzZmVmMjg0MGExZDUyNGUwYTk2YjQyM2Y5MDIxNDEzIGxlZ2FjeS10cnVuaworOTc0MCBjMDk5MDcxMDQwOTJhNTkyNTBmN2E3ZjVjNzJhYWJiOTBjNGQyMGY1IGxlZ2FjeS10cnVuaworOTc0MSA0MWE5MjhjYmNjNWVlYjhlMGE2Yjg4NzgzNzE3MzAyNmQwM2QwNmJmIGxlZ2FjeS10cnVuaworOTc0MiBiOGQ0ODQxMjVjOTJkZDYyNTBlNDhmYTczOThlOWMzZmIwMTE0OGIxIGxlZ2FjeS10cnVuaworOTc0MyBjMDAyZmZkMWZiYmZlN2JhNGNhZWZjMDU1ZDRmYTAyNzRhYWMwNGNiIGxlZ2FjeS10cnVuaworOTc0NCA4M2MwZTlkZDQyMjFmODZhZTczYjQ2ZDIyODdhYzNhYjJiZWI3NGRhIGxlZ2FjeS10cnVuaworOTc0NSBjYTE0ZmRiOTU1ZWY4MjdiYjQ3YzY4ZjUwZmU5NDE5YWY1ZDk3MWE1IGxlZ2FjeS10cnVuaworOTc0NiBhMmY0Yzk0NGNiODcyMWJmYzY2ZWIyZjlkNjdjNWJiMzg3OTllZWNjIGxlZ2FjeS10cnVuaworOTc0NyA2ODJkM2U1YjI2N2Y0NzBiM2MxMDE0YjMwMjUzNTJjNGQ4YjNkZWQxIGxlZ2FjeS10cnVuaworOTc0OCBmNTU5NjljMWMzZDU0MTk2OTgyZDljYTJmZmViYzQ3MWYzNTdlOWQyIGxlZ2FjeS10cnVuaworOTc0OSAwMDYxZDM5MTZhZTRiMTVlOWUwNjE5YWY3MzQ4MTU1ZWUyZWRmODc2IGxlZ2FjeS10cnVuaworOTc1MCBjODE3Zjg2Y2U3ZGI2NzE5M2E3NDc0YzQyYTQ4YzVkYmQ0Yjc0ZGFkIGxlZ2FjeS10cnVuaworOTc1MSAxNWJhNjhjMzNlZDFjZWRhMzAzMjQyMDNmYWU2OWY1ZTFjN2I1OTk5IGxlZ2FjeS10cnVuaworOTc1MiBmNWVhMWIzMGNiM2Y3NDllNWI5OGQzMDAwZDMzZDRiOTRhY2Y5YzE1IGxlZ2FjeS10cnVuaworOTc1MyAwMGNkOWZlNGY2ZjJiMDg5ZGI1YjQ1ZGExNGZkOTEzZjNmMWJiOGMyIGxlZ2FjeS10cnVuaworOTc1NCAzOWRlNDk0MzRkZjQyNjExYzQ3YjY5YWY2ODkyNDMxMjY2ZjQ4M2RkIGxlZ2FjeS10cnVuaworOTc1NSBiZjRlNzkwYmQ2MWE0YjliMTM5NTU4MTg1MTQ3MDkzYzUxMWFhMTc3IGxlZ2FjeS10cnVuaworOTc1NiA1OWQyNzYxYmExY2ZjYWEwYzJmMDQ4YTQwMWFlMzExYTcxM2I4ZDc4IGxlZ2FjeS10cnVuaworOTc1NyA1MmZiYjczMTIxMDM0NWIwMTM1NGU2NDBiNDQ3MDVjYTJhNzFlNzgzIGxlZ2FjeS10cnVuaworOTc1OCBmMjE0ZWU4ODM4ZGU2ODI2ZjM2MGM0MWQ3MGI4OTAzZjZhZjAxYzYxIGxlZ2FjeS10cnVuaworOTc1OSAxZmQ3ODczODc5YWY4MmM5YjkzOGI1NWRhZjNiYzFkN2VjMGIxMGRlIGxlZ2FjeS10cnVuaworOTc2MCA2ZDBjNDg1YmE1ZTQxOTNjMjZiMzQ0MzM1YjJmNjI5OWFlMWMzMjg0IGxlZ2FjeS10cnVuaworOTc2MSAzYTNlZTA3NWRmYjY5ODFkYzY5NDVmMTBlOTkyNTVkNjM2ZTUyNmMwIGxlZ2FjeS10cnVuaworOTc2MiAyZjBjZTRmYjgxMGJhMzAxYmRlMmQxZjVlNmE4YmYyYzNhZmJjNWM1IGxlZ2FjeS10cnVuaworOTc2MyBlZjI2OWFiNzcwYmNjNWJlNmViMmE2YzQ3NzYxNGY1ODA4NWNiZjk0IGxlZ2FjeS10cnVuaworOTc2NCAxZDUxMTc5Y2Y3YzdmZTQ1NDk2MjRlODk2YmJiODE5NmMwZGQ4Yzg3IGxlZ2FjeS10cnVuaworOTc2NSBhZjJiYzVmNDU5MThhNzAxMjA4OGJlNTU3ZGExYzkyZDBiNDA5ZGI3IGxlZ2FjeS10cnVuaworOTc2NiA0MTQ4ZTRiYzhiMjg1ZjliMTBkOWM1NDQ1OWNiMWVjYmU2MDA4ZTNjIGxlZ2FjeS10cnVuaworOTc2NyA2ZmVmMDMwYTk1ZDQ5YzY1OTQyZTE4Y2NlNzkwNWU4Mjk2ZGQ3NTE5IGxlZ2FjeS10cnVuaworOTc2OCA3MmQ1MzFkNTQ1NzI5YjAwMzY4OTAyNTlmZjYwNzE1YTFiZjBmZjJhIGxlZ2FjeS10cnVuaworOTc2OSBiN2Y4NGQxNzllNTFhMDNkNWY1YjFkNjIyOWY0ZjE3OGUyYTJmNWI1IGxlZ2FjeS10cnVuaworOTc3MCA2YWQyMzRhZDhkZTVjNmQ1OWY2ZjcwNTM0ZDhjYjBjYTQ3NjRhMjg5IGxlZ2FjeS10cnVuaworOTc3MSAwZGJlYzk4YWNmYzk2NzQ2NDlhN2E1Y2YxNmFkMWZlZThlYTIzNTk3IGxlZ2FjeS10cnVuaworOTc3MiA4ZTY0YzVkNTU0OGEyYTQwYjQ1NWNhYTE3NTQ5YjI2YTFjMmNkOWRlIGxlZ2FjeS10cnVuaworOTc3MyAyODU0NDkyNjhjMzdmMDhmYjBiOGMxOWVhMDRkZjQ2MDJlZmI4N2RiIGxlZ2FjeS10cnVuaworOTc3NCBiMDI0OTkwZDYxZWM4ZTIzZDZkYTg2NWM1OTM2NWYzNjE1N2RlZjFhIGxlZ2FjeS10cnVuaworOTc3NSBmYjBjNWIzMDc0NzZkZWFiMjFmODU5Mjg0NjQzNjliMGRmYzhkMmFlIGxlZ2FjeS10cnVuaworOTc3NiAzNzAzNDk1MzE1ZTlhNjQzMzI5MTk0ZTFiYjUzNDFmYTAyMTljMjFhIGxlZ2FjeS10cnVuaworOTc3NyAwOGY5YjkwMTY2OWJhMWNhMmNmZmQ0NjExMGVhZWNmODU0MmFmYjQzIGxlZ2FjeS10cnVuaworOTc3OCA0NDFhZTRmNGNmY2Y5MTVmM2NhNzcwOGYyOTNkYWYyNGQ4MTBlYTFmIGxlZ2FjeS10cnVuaworOTc3OSA0Zjg0MjAyYzM3N2FjZDFlODU4YTRiMmI0ODMyZjliYTczM2NmODcyIGxlZ2FjeS10cnVuaworOTc4MCA2NDBmMmVmNGRhMjEyNGU1M2JjY2JkY2I5NzJhZmFhNjc4NjEwNTg2IGxlZ2FjeS10cnVuaworOTc4MSA2NThiNzQyZTQzNTAzNWNjNjg5ZTFmYjg2MDgwNjg3MzkyZTg5YzgyIGxlZ2FjeS10cnVuaworOTc4MiAyNmE4ZTllOGNiODQxMWQ2OGExMzdhOGE0MzlkNmM1NjgzMGE3NWUwIGxlZ2FjeS10cnVuaworOTc4MyAwNjdlNDgxM2M2ZDY3YTA4MGNkYTE3YWY3OTFhNTUyNjhlYzFmZTI3IGxlZ2FjeS10cnVuaworOTc4NCBmODllOWNkZGMwOTYxMzA1NTdlNmQ5ZTdmNDJjMGY1MWY3OWQ3MzFhIGxlZ2FjeS10cnVuaworOTc4NSBjOThmZWY5MjJkNTE0NjhjZjIwNDk1MDgwZGEwY2Q4NTNhYTJmMmJiIGxlZ2FjeS10cnVuaworOTc4NiA4MDk2ZmVjNzIyYmE3OTZhZjM3YTI5N2NlZjE0NjM5NmZmMzc4NGMwIGxlZ2FjeS10cnVuaworOTc4NyBkNzI2NjM3MmRkMzcxYzlkMWE3MjM4ZDYxM2MyYjk0ZjZmM2ViOGRhIGxlZ2FjeS10cnVuaworOTc4OCA2MDk1YTQ3MmY1NzQ1YzNhY2E3NDE5NTk1YjcxOTY1MzViNjMzMTk0IGxlZ2FjeS10cnVuaworOTc4OSBkZjc2NGU0MmIyNThmNTc3ZWQ1M2FlYjFjZmE2MzNiMTVhYmZlZTI0IGxlZ2FjeS10cnVuaworOTc5MCA0OGRmMjA4MGQ3ZDQ4MjljMTI5OGE4YzFhZGEzMTYwY2UyMDA5ZWRjIGxlZ2FjeS10cnVuaworOTc5MSA1YWU4N2E3ZjlhMzIzZmQ2NTJiMjliZGI5MTQxMTFhM2Q2ODEyYTRiIGxlZ2FjeS10cnVuaworOTc5MiBkMjNiYjk2OWU2M2EwMzczYzZmZDJjYmQ0M2VhMGZjM2NhOTc2NGVkIGxlZ2FjeS10cnVuaworOTc5MyAzYTU1ZmJiOTlmMjA0NzdkNDBiNGU3YmJkMzUwNjFlYjkxZDAyNDlhIGxlZ2FjeS10cnVuaworOTc5NCBmNmM2ZDRkOTdkYzY1MWE1MzEwZjc0MzMxNTU3YjIwZDFlOGUwZjE1IGxlZ2FjeS10cnVuaworOTc5NSA5Mjc4NDgyNDgwMGMzZGQzNzNkMTRlNTk2NWU0NTI3YTdjNWQ1MWY4IGxlZ2FjeS10cnVuaworOTc5NiA4MzAwMDliNTczZWEwOTRiNzRmYjQ0ZDAzMmQyZjE3NjIyZDAyNjc2IGxlZ2FjeS10cnVuaworOTc5NyAwOTg5MmJmNmE1MGRmZjE1NzcyNDQwY2VkOTgzOTgzNTg0Yzg1ODc5IGxlZ2FjeS10cnVuaworOTc5OCAxOTI4ZjA1YmE0MDBjYTJlYjYzM2U2M2MzNGY4NmMzZTU3NzFiNzgzIGxlZ2FjeS10cnVuaworOTc5OSA5OGVmZDVkOTFmY2E0ZmZkZDZhNWU4MDczZjcwODZiMzFlMmVlOWViIGxlZ2FjeS10cnVuaworOTgwMCA3MjRmODA3MjYwNTUwZGU4MmFlYTYwNGU1YWNjZDU3ZjJkODJiYWRhIGxlZ2FjeS10cnVuaworOTgwMSA0N2VjZjAyYWFmOTdiMTRlMWMxYzg2MWIzNzQ2MmZlYWE3N2ZmMWI2IGxlZ2FjeS10cnVuaworOTgwMiA1NTEyNWIxMTQ0ZmEzYTZhNWUxNjkxYTI4M2Q1YjgxYWQ5MzRlYmM5IGxlZ2FjeS10cnVuaworOTgwMyA2ZTAwZmI3MjNmNjlkYmRkNjNlMmU4Njc0NTNkMTU5MmExZWZmNDY3IGxlZ2FjeS10cnVuaworOTgwNCBmZWM4ZTA4NGIwNzRmNTcwMjdhZTNlMzYzZjc1Mzg0Y2U3NGMxNTdhIGxlZ2FjeS10cnVuaworOTgwNSA0NWI2NmU5YWI1ZWZhMDA4MWJlMzk1ZGIxOTEyZTU1YTRiY2M4ZDRkIGxlZ2FjeS10cnVuaworOTgwNiBjMmEwODY5ODUyZWI4NDViOThhOWZkNjc1MDFhMjgyNDY1ZjQyNWIzIGxlZ2FjeS10cnVuaworOTgwNyBlNGM3NGY3ZjNlNDY1OTRhNGRiOGUxODQ4MzY0ODJkYzU2OGNkNmFiIGxlZ2FjeS10cnVuaworOTgwOCA5YWUyMTVjYTIwZGI0Yjg3NzQ3ODE0NGVkODg4ZjI3MzMxZTZmOGUwIGxlZ2FjeS10cnVuaworOTgwOSA4M2EzMGEzNTgzZDNmMzZhMzk0YjdkYmJiNmYyYmE0YWNmMjQ2ZWM2IGxlZ2FjeS10cnVuaworOTgxMCAyNTI1Mzk4NzE4NzNjMjFhYTA1OTU3MWYyMTBiYWFjOTA5NjExMGE0IGxlZ2FjeS10cnVuaworOTgxMSA2ZTk2ODhjZTdjNTc2MTAyNzlmYzlkMGVkODJmYjdmM2M5NmQ0YWU0IGxlZ2FjeS10cnVuaworOTgxMiAzOTY1YjY5ZDUxMTZlNTk5MGZjNDYzZmIwNmNjMGZlMzgyZjZjZWI5IGxlZ2FjeS10cnVuaworOTgxMyBjMzdhMjhhM2JiODViMjY3YTg0NTQzYjBkYTA0YmM3ZTZhODU2YTJkIGxlZ2FjeS10cnVuaworOTgxNCBlMTQ4Y2UxOGMzY2U0YjNjOWRjZTQxNWM3MTM0NTc3NWVhOTFiOWU5IGxlZ2FjeS10cnVuaworOTgxNSAxMjkzOWM4YjRlMzBhNTQ0ZGQ5ZWY1Yzc3OTk2NTZhYWZjMzEzYTZlIGxlZ2FjeS10cnVuaworOTgxNiBmOTA0ODYwMDkwNWU4Y2Q0MzQ4YzUzZTFhYmUzYzk5NGJkZDQzYzQ0IGxlZ2FjeS10cnVuaworOTgxNyBlOGI4YmExNjliNmRkMGU2YTUzOTFmNDEzYzVmM2NiNTQ3NzliMGIxIGxlZ2FjeS10cnVuaworOTgxOCA2ZGNjYWU3NWIyNmY2YjJhMGM2MzVjMWY2OWEyODRmNmFjNTE0N2E2IGxlZ2FjeS10cnVuaworOTgxOSAwMDY5ZjNlYmE5YTI1MDJjOWZjMTZjYWU0YTQwYWRmY2Y3NGMyNDA5IGxlZ2FjeS10cnVuaworOTgyMCA5Zjc0ZjkyMjNiNDM1NTc4MDc1NDQyYjAzYzU5OThkMWU0YTZhY2M2IGxlZ2FjeS10cnVuaworOTgyMSA0ZmZjYmNjNWU4ZmUzOTMzMzY5YTIzNmQ3YzBiMjUwOWVjNWI4NTM5IGxlZ2FjeS10cnVuaworOTgyMiBiYmEyYjIwNWY4ZWRkNDlmZjRhZGU2ZDczYjZkMDM0Yzk4NGNiZjc4IGxlZ2FjeS10cnVuaworOTgyMyAwODA5NjlkYmZjN2M1MTg5MDVmMDcwYzBkMmNiZTY5N2I4M2Q5NzFiIGxlZ2FjeS10cnVuaworOTgyNCA1YTkyNTZiOGMzMzgyYTNlYjg4M2JlOWEyODRkZTM1NWUyNjEwODRkIGxlZ2FjeS10cnVuaworOTgyNSBkNzZhNGVmYTFmNTFkZjk0NTA2NDM4N2I5ZmU4NjFhNWVjYWNmMzE5IGxlZ2FjeS10cnVuaworOTgyNiA3YmE5Y2Y0ZTBjNDA0MDRkY2EzMjIzMTgwYWYyOWExMmQ0MTIxOWYwIGxlZ2FjeS10cnVuaworOTgyNyAyYmQ1ZmJkNjA4NzA5OWE4NTRjYzQ5YmE5OTNiZGJiN2FjN2E2ODViIGxlZ2FjeS10cnVuaworOTgyOCA0ZmY1YzE0OThkYzhkYjljNmY4ZmQ4MTBkNmExYmZjOTkwNWFkYjVlIGxlZ2FjeS10cnVuaworOTgyOSAxYmFjYTVkMmJhNTdhNGU1YjBjYjJjNmE3OWE4YThkODI2NmFhMTkwIGxlZ2FjeS10cnVuaworOTgzMCAwZDMxYzdkOTY5N2Q3YzVlYzc5YjdhNjNlMDQwZWVhNjgyNjcwZDIwIGxlZ2FjeS10cnVuaworOTgzMSBhNGQ3YmJmZjk1YTRiNWY1NjQ1ZTFkNThkODIxM2IzYzU5NzViNmYyIGxlZ2FjeS10cnVuaworOTgzMiBlNDM2N2QyMDZhNTVmNzYzMDJiM2ZiMDRhM2EyZDkxZTg1ODE0MzUzIGxlZ2FjeS10cnVuaworOTgzMyBiMjg1ZmJjMjY0NmE0OTg2YTVjNWVhOTNlMWY5ZDE1ZDgwM2NlYTAxIGxlZ2FjeS10cnVuaworOTgzNCBjNjMyNTAyOWY3ZGM4OGM2ZGZlYmUyYmNhNDBjNTkzMTI1MzQzNjMzIGxlZ2FjeS10cnVuaworOTgzNSAzZTI3ZjlmYzc1YTI5MGY1MWZhMjI3NWNjMWZmNDBmZTlhMDhmZmIxIGxlZ2FjeS10cnVuaworOTgzNiAxNDIxYWNlYWUzNDY1MDQ1YTU3ODdkZTc1MTExNzhmN2FiNzhkNWQ0IGxlZ2FjeS10cnVuaworOTgzNyBkNzAwODZiMDhhMGZhZjAxYTY4OWM5OGMxMTYyYjkwMWUxZjBiNzAwIGxlZ2FjeS10cnVuaworOTgzOCAyYTA3MjU4YjFmNGUwODZjZjdiMzE5YjYxMTQ1NWQwNGZkZjBkNzliIGxlZ2FjeS10cnVuaworOTgzOSA2MjE0NDBiYjk4YjljMjYwODhjOThjMTMxMzUzOWQ3ZWI4MzVlMTMzIGxlZ2FjeS10cnVuaworOTg0MCA4NWZmMjA0NmUzN2Y4MWNkODRlMDAxMGFlYTA5MTg1OWEyY2MzNDkyIGxlZ2FjeS10cnVuaworOTg0MSBmNGE0NzIzYjk1NTMyYWI5MDRhZjY2MDM4NGJjNzA0ODE4ZWYyODIyIGxlZ2FjeS10cnVuaworOTg0MiBmMWM4OGQyZDEyNWJmZDQzMDZkZDA2NThjZmZiODk5ZDQ1MDM0OTZiIGxlZ2FjeS10cnVuaworOTg0MyAxODdiODk2NzVkZGFlNDBjNDA1MDZiODY3MzU0OWViNzE5NDlhM2E3IGxlZ2FjeS10cnVuaworOTg0NCA3MTdjM2RhY2EwOGU5NTM5Mzc4ODk5ODJkOTJjMTVhYjVkZjYxZmI3IGxlZ2FjeS10cnVuaworOTg0NSAwYzc5Y2FmZWM0YmM1NTA4YzZlNmUzMDcyMWQ3YjIyOTRiNTY2MDY0IGxlZ2FjeS10cnVuaworOTg0NiAyMTY1N2JiMGJlMzViNGM3MWRjYzgzNDQ5ZjJmMzZkMjNhMmViYzBiIGxlZ2FjeS10cnVuaworOTg0NyBmZWQzY2Y3MjY4M2RjMTc0N2VjM2MyYzRiOTYxNTc2MjA1NDY1N2JjIGxlZ2FjeS10cnVuaworOTg0OCAxZjQ2MjVmZTY2ZTJjYThjZTBiYThiZjIzOTRkMjY3MDUxN2M2MTE5IGxlZ2FjeS10cnVuaworOTg0OSBmNWExODlhZmJjZjk5NGRkOWExNDVkYjhmMjQwNThjY2QxYjIxNzBkIGxlZ2FjeS10cnVuaworOTg1MCAxZTY2YzRlMzFkMTUwYWZkOGIwYjllNWJmMjJlNTZlOWRiZjFhN2MxIGxlZ2FjeS10cnVuaworOTg1MSA4OTU1OWVlODVlNTQwZDJlZTRmMDg1ZTZhOWFiYmZjMDlkYTJiZjI3IGxlZ2FjeS10cnVuaworOTg1MiA4ZDExYjM2NzFlNWQ2MTg3ZDkzN2U2ODgzOGI4NWJjNWQxMjdmZmZiIGxlZ2FjeS10cnVuaworOTg1MyAwMDMzOGE4MTNkY2I4YmJlMWMyN2Y1OTQ0ZWFlNDY5OTQyYjdkMGIzIGxlZ2FjeS10cnVuaworOTg1NCBmYzZiZTdhZTAxMmY0NGNkOGQyNDA3NTJkNjgyZTlmYWIxODIyOWYyIGxlZ2FjeS10cnVuaworOTg1NSBmNzhhZjViYzc4ZWRkZTY2YjgzNzVlZDY3NjAyMzJlMTQ1MmU1NmRiIGxlZ2FjeS10cnVuaworOTg1NiAwZTBlODhmOGUxYWQ1MWZhZmQzNjFiMGQ0OWNkYjhlNjQwZGVmOTJhIGxlZ2FjeS10cnVuaworOTg1NyBlNjNmMmFkZmE3Y2M4NDVlOTkxOTAyZDljNTE0YjI5ZDQzZTEyMDYzIGxlZ2FjeS10cnVuaworOTg1OCA2MmFjNTdkZTdhZGJlNDZjZGU4ZWYwODU5NjZjZWYyYWNlYjBlOWQwIGxlZ2FjeS10cnVuaworOTg1OSAxMDg0MGMzNzM3YTdkZDEwOTNkMmFiODYwMDQzZmUyODk1ODcxMDY4IGxlZ2FjeS10cnVuaworOTg2MCA2OWFkZDRkNzczNmYxMDY1NjkwMTRlY2U5OTg3MmY0ZTQ0NmIwNjE3IGxlZ2FjeS10cnVuaworOTg2MSBmOGE3NzIyNGViY2FmNTEzNGJmY2MxZjkzOGM5NTc2ODQyMTNmOWJjIGxlZ2FjeS10cnVuaworOTg2MiBiNThiMmVlNjVmNzVmNTE5MmEzZDkwZjQwODVhZjc0YmIxNTdjMGI4IGxlZ2FjeS10cnVuaworOTg2MyA2ZGQ2NTFjYWY5ZTA2NmUzZWM5MWU4OGVkZmQ2YzczNzgwN2U5ODkyIGxlZ2FjeS10cnVuaworOTg2NCBmNDA0MGYzYmRjYzczN2I2NjVmOWMyOWJhMGE2ZDUyM2ZlYzc2NDc1IGxlZ2FjeS10cnVuaworOTg2NSA0NjExOWQxZTk0MTNmN2EwY2NlNzhmZWZkZDI1NTJiOGRlOTBiMjEzIGxlZ2FjeS10cnVuaworOTg2NiBlZGMwZDAyMWU0Mjc2ZGZiNWY3ZWZmMjljZjU4MjU5YWNkNDFmNTA3IGxlZ2FjeS10cnVuaworOTg2NyA1NDNiMmI0YWY1MzI1OTExNzY0MWQ0YzQxZTE2YzVmMTc3MWNiMWZjIGxlZ2FjeS10cnVuaworOTg2OCAyMjM0MzMwMzhhNDdlNzg0ODU4ZjQ0YWNkODFlMjk2MGUwN2VkYjkwIGxlZ2FjeS10cnVuaworOTg2OSBiNjRhOGNlYzhkNzVjNWFhOTMyNWE4NzFkYTI1N2JlY2ZkOGI5ZGE5IGxlZ2FjeS10cnVuaworOTg3MCAwMzMzZTRhOTUyZjkzZGJkYzhjMzFlYzViMTJiOWVjMDczMDg5NTgxIGxlZ2FjeS10cnVuaworOTg3MSAwMjhmNzBkNTA4YzBiNjE1ZjYyZjgzNDA4NjUwYjU2YTRhMDQ4MTAwIGxlZ2FjeS10cnVuaworOTg3MiA3NjdiZjgwMDRjZmZkZmVkMjIzNWMwNGY3M2YyMjQxMWE4OWNiYzNlIGxlZ2FjeS10cnVuaworOTg3MyA3ODY4NzVjNGM2MmM1MGQ3YzFlMDQxMDc4MGQzMDVkZGU4OWUxNzkxIGxlZ2FjeS10cnVuaworOTg3NCBmYmM3NTUzNWVhOTNjYjNmMmI1NDg2YjEwYjMzZDQ2NWI4YzU2ZmNhIGxlZ2FjeS10cnVuaworOTg3NSA0NWQ2NWJjOGE1NTBmMzM3OWFlZGI5MzE1NWZhNzIzZmU4MzJjM2JjIGxlZ2FjeS10cnVuaworOTg3NiA3YWZjMTVmMDhkODJjYWMzNzIzOWM1MDFlZDEyZmE4OTVjZDUzMjg5IGxlZ2FjeS10cnVuaworOTg3NyBiOGQ3ODY1MGY4ZGYxZDViYzVhNzFjN2EyZjQ3MjZmMmZmMjM3NjU0IGxlZ2FjeS10cnVuaworOTg3OCA2ODVjNTEwZTE0Y2VlYjVkNGUyZmM2N2U0MjRlNDFhYzFlNzY2ZTI4IGxlZ2FjeS10cnVuaworOTg3OSA4YzAxY2ZlZTE0YmExOTI2N2IxYTJiMGMzMjdkZTY5YTMzOTk0OTI1IGxlZ2FjeS10cnVuaworOTg4MCBjNzQ1NGNhN2QzYWNjMTQzZTAyYTBiNmY5YmVlMDUyMDA2MGI5YWYyIGxlZ2FjeS10cnVuaworOTg4MSAxODVjMWQ0N2NlN2EwODc0OWFjNzNhOTg4Y2Y2NzExZTMzOGYwMjI5IGxlZ2FjeS10cnVuaworOTg4MiAzYTc3YmNhMjI2YjkzNzdmZjJhOGRhMjMzNzQ1YmFjOTQwMGJlODk3IGxlZ2FjeS10cnVuaworOTg4MyBjNTFmN2I2ZDI1NTZlNDY5NTA5OGRlMmY3Y2U3YWVjODE5OGRlZTBjIGxlZ2FjeS10cnVuaworOTg4NCAzYTQ5ZjU4ODZhY2FlYjA5ZTYzYmI4NGRmYmQ5MWM4ZDMyYTFmZDdjIGxlZ2FjeS10cnVuaworOTg4NSAyYzU0OTAxNDcxZjVkOTA0ZDBiY2FmNmIzODQ1ZDJhZDMwMGI5N2U0IGxlZ2FjeS10cnVuaworOTg4NiBkODhiZjc2NzE0NTgyNWFiNGM0YTZkYjlkMGM4ZmRlYjdhYmY1OTMxIGxlZ2FjeS10cnVuaworOTg4NyBkZmEyNDc3NjQzMjM3MDI0NThhYjA5OTlmMTZmNmNiNjYzMjRjYzE4IGxlZ2FjeS10cnVuaworOTg4OCBkNzU4ODQxYTc2NjFiYzdmM2M4MDhjYmU3MzE0MGM0NzNmYjk1YjkxIGxlZ2FjeS10cnVuaworOTg4OSBhZDg5MWY2YTE5ZWViYTRkMzI1MTg3MjBkNzljNTg0MjI3ZWU2NGZjIGxlZ2FjeS10cnVuaworOTg5MCAyOTdiZWEyMzNlMDMyZmJkZjc5MzdhYjZkODQ5MzQxNjdlZGIwODc2IGxlZ2FjeS10cnVuaworOTg5MSBkZWRjZTliNjg3NDI0MDUxODg0MDI3MGY3OGQ5MjQwMGExYWJlZDkzIGxlZ2FjeS10cnVuaworOTg5MiA2NTg0OGE3Yzc3Yjk4MjUzMWE2ZTdkYzk3MGYxMWJmNjliOWU1OTU4IGxlZ2FjeS10cnVuaworOTg5MyBhMTQzNWM3ZDMzOWI3ZmMyMTM3NjNiM2JjZTEwZjQ2MThjMjVkMDRkIGxlZ2FjeS10cnVuaworOTg5NCAxM2YyOWI2MmEyMDk1MzhmZDU2MjhhYzM2NjQwZWE0MjY3OTMzM2NiIGxlZ2FjeS10cnVuaworOTg5NSA2MjU1ZGM4NjFmY2YxMzUzZmUyYWQyNjI1NjhjMWE4YWQyY2IwNjQ2IGxlZ2FjeS10cnVuaworOTg5NiBiMWYxOTVjOTdlZjk5YTRmYzZmMjQ5ZWVkMWE2Y2Q3ODQ1YzRhYTMwIGxlZ2FjeS10cnVuaworOTg5NyA3Y2EyYzNkODc2NjIwNmFlMjVmNTQ3OGI0MDM5YzJmYzU2MWQ1MDYzIGxlZ2FjeS10cnVuaworOTg5OCAzZDlmNTEwNTBhYmNhNDViNzJlOTY3NGQ3NjI3NDk0YWM2OWMwYmQ0IGxlZ2FjeS10cnVuaworOTg5OSA0MzkzODk3ODUyYjI0NDg2YjIzOTIxZDBkNGMxOTU0MjNkMjQ5ZTJmIGxlZ2FjeS10cnVuaworOTkwMCAyZDUwODgyMmU3ZjY4ODVhODNlMzkzZThmMWFkYWE1YzY1OWI2OTg2IGxlZ2FjeS10cnVuaworOTkwMSA2ZTczZjQxNjhiMDYyZWNhNWY3N2EwN2I1NThmMjNhMTczMTMwOTkxIGxlZ2FjeS10cnVuaworOTkwMiAxMWU5MzM3Y2RhM2QxNDdlZTZkNGUwMmE3ZGQyZDY1ODNlMmM2YjM4IGxlZ2FjeS10cnVuaworOTkwMyAyOWJkYmUwMzllMDVlYzg1YWQ3OTQ1YjAyZjZjZDQyMTI1NTg1MmFjIGxlZ2FjeS10cnVuaworOTkwNCBiM2UzZGFlOWI2MTIyNDQyZDE0NjIyMWIwNGIzMzI5YWVmNWU5MTY5IGxlZ2FjeS10cnVuaworOTkwNSA1YWY3ZDNkYTg3Y2Y2YWNiNzkyMjYwMmM4MDcyZmEyOWEyZGYyZTcyIGxlZ2FjeS10cnVuaworOTkwNiAzZjIyODQzNDRhNDFiYTI0Zjc1ZDA1NmZkMDNjYzg4NmY4NjFhNTIyIGxlZ2FjeS10cnVuaworOTkwNyA4M2U3NzU5ZTcyOTc4NjlkZGRhMWNkMTc3NDJkMWU1NjQ1Y2Y2ZWI0IGxlZ2FjeS10cnVuaworOTkwOCA3ZGY2ZjA0NTM0NjkxNzdjZDA4ZmNhNThhN2ViMjhhOTAzMDAwMmQxIGxlZ2FjeS10cnVuaworOTkwOSBhOWZiZjIxYWI3Y2U5Y2U3OTM2ZThhM2NjNTk5NDVjZGUwODRmYjhmIGxlZ2FjeS10cnVuaworOTkxMCAzNjU1MjZjNGNmOGJiMzIzODQ2NjU5NGQwNzMyM2RjZTIwNTgyZWFmIGxlZ2FjeS10cnVuaworOTkxMSA0ZjQ1ZGNjZGE5NmIyODc0N2UzM2Q0MWUxNTRkNWJkMWNhNGI0M2I1IGxlZ2FjeS10cnVuaworOTkxMiAzZGUwY2I4MmU2MWFlNjUxYmUwODA4ZTYyMDE4OTA5NWVkZWNkNzY5IGxlZ2FjeS10cnVuaworOTkxMyBjYmFjZDFiZTcyNzVjMDBmM2M2M2I5NWViNWEzODRjZjJlYjAwMGIyIGxlZ2FjeS10cnVuaworOTkxNCBkMTQ2NWI1YzBhMDg5NGUxNTUxMWRjMTdiYWJjM2I0MTcyZjQyMGVlIGxlZ2FjeS10cnVuaworOTkxNSAzNzQwZmYyZWUwNTNjYTkzZDg5MDViZWM1NTBhYTQ2NmI5YTI4OWUzIGxlZ2FjeS10cnVuaworOTkxNiBjZDExNjkwY2IxNGIwNzJlNzBmMjVlOGMzZmRhNzQ4YTExYjlkMTgxIGxlZ2FjeS10cnVuaworOTkxNyBhNjRjODlkYWUxOGQ2MGU1NGE4MmVlYWRlMzI4NmE3NGY2YjMwNDE4IGxlZ2FjeS10cnVuaworOTkxOCA1OTBmNjI1NGY5YTlhZWFhNDIwMjNlZGI1NjhiZThlYjA3MjVkYTdhIGxlZ2FjeS10cnVuaworOTkxOSBhODA1OWI5NmJjMzU1YWE4YjYyZmUxNjUzN2NmYzIwZTkzNGNkMzE2IGxlZ2FjeS10cnVuaworOTkyMCAwNTE4OWY3Y2RiZWIxODQxMThkNjE2OGFkMzMxZjk1MGMxYTlmMDY4IGxlZ2FjeS10cnVuaworOTkyMSA5ODE1YjE4YjIzZTNiNjg1YTlhZjIzNTQyYjUzY2I5OGQxYjM2NzkxIGxlZ2FjeS10cnVuaworOTkyMiAzNzIwZTk5NmU1NTEyNzM5MTQwZGJhMjk4YzlkMWNiMjU1MDM5MjczIGxlZ2FjeS10cnVuaworOTkyMyAxNjY4NDk5MjA2ZGNmYmI1ODJlN2U1MmE2MzQ4YTU0ZDQwZjU0MzlhIGxlZ2FjeS10cnVuaworOTkyNCAyOTMzZmIzNGYzMzNmZDUyYzE3MzkyMGZhOTRmMDU0MGUxODkwYjYyIGxlZ2FjeS10cnVuaworOTkyNSA4MjZjNzE4MDE5MTFjYjBjNjM5N2Q4OTY0YWQ2NjE0OGZmOGU0NjM4IGxlZ2FjeS10cnVuaworOTkyNiBjOWI2ODUwYzQzMzZhNGNkYWZhMmEzZjUwMDJlZGViYWM0YjRmMTc5IGxlZ2FjeS10cnVuaworOTkyNyA1ZWRjZWI4ZjFmYWI3YWM2ODBiMTlhOWNkNDliZDU1YmMzMDJmMmYyIGxlZ2FjeS10cnVuaworOTkyOCAwZDc2NzYxNGM5NDFlYjEwZjVlYzI5MzJjNDNhYzcxYmE5YWRiYTE5IGxlZ2FjeS10cnVuaworOTkyOSAwYTk1NDFhODY2ODkwOTRkZTQxM2Y0ZWM2YzAwY2RlMmQ4ZWI1OWYzIGxlZ2FjeS10cnVuaworOTkzMCAyM2NjMzQyZWUxNTBiYTg0MDFmYmMzYzM5YmFmZTM0MGEzNWEwMGNhIGxlZ2FjeS10cnVuaworOTkzMSAzYzM4YzhhZDU2MjNmYjQwZDRhZmRhMjYxMzMyNWMzNzdiZTliMDA0IGxlZ2FjeS10cnVuaworOTkzMiAxYjRhMmUzOGFiNWVjNjdhZTNlNTE5MGU3ZjhlZDBiMjUzNzY4NjMwIGxlZ2FjeS10cnVuaworOTkzMyA0ODMyODZlMjE5ZTFmNjQ0NDYzYjRkMmJkN2IyZjEyNmE1ZjExYWU0IGxlZ2FjeS10cnVuaworOTkzNCBiZDA1YWI0NzMxZjc2YjNjZTQ0ZDQzMGM1M2U3NzBkNGI2OTQ2ODg4IGxlZ2FjeS10cnVuaworOTkzNSAxYTliMDliM2NhZjhhZTVlMjg1YjcwNGQyZDlhYjdiNGE0ZGFhZWI0IGxlZ2FjeS10cnVuaworOTkzNiBlYzk1ZThkYWU1MDQxNDI1YWU1N2NhNTdjMTk2ZjBlNGU0NDgwZTc5IGxlZ2FjeS10cnVuaworOTkzNyA0YWE0NzEwZDg5NGM4MjY4ZjQyZTZhNDA4MTY5NTZiNmQ1YjZjZDU5IGxlZ2FjeS10cnVuaworOTkzOCBiZDgxNTM4ZDRkZGZkNDc2MTdmZGI0NWJhMzk4NThhOWZkYTY0Y2YyIGxlZ2FjeS10cnVuaworOTkzOSAwMzFkZTg1NDBhN2VhMDVkYjU0ZDAxZmFjZjUyZjhmNDIzZmNlMGNlIGxlZ2FjeS10cnVuaworOTk0MCA5NTQxYjliMDkzN2RkZjE0YzBiNjQ4YjFjYmVjMjMwNDcyYmE1ZjVmIGxlZ2FjeS10cnVuaworOTk0MSA4Mjk0N2ExOTI2Zjc4MmRlZmJlMGNkNzUzOTdjNTc2MDk5ZTU2YzEzIGxlZ2FjeS10cnVuaworOTk0MiAwMjEyMzdiYTUwMDc0MjVlMDIwZTdjZTk2OGQ4OTAzOTU1ODYwYTJjIGxlZ2FjeS10cnVuaworOTk0MyA3YjJmZDQ4NmVmZWUxY2Q4ZmRlMjBhZmNjMTZiODgzNzViZDY4MDIzIGxlZ2FjeS10cnVuaworOTk0NCBjYjFhNTc3YzAyMzljYmIwZDk2ODc5YmMwNGZlMjllMzU2ZjMwYmUxIGxlZ2FjeS10cnVuaworOTk0NSAwMzYwZTNlMzBhMmU0MGM0OTIyZjc4ZDVkNzE4MTgyZmE1NTk5N2YxIGxlZ2FjeS10cnVuaworOTk0NiAxNDlhNTQ3OTg4OTYxYjdhY2U2MjhhZWVjMTZlZTNhYmRjYzYxNmY1IGxlZ2FjeS10cnVuaworOTk0NyBhZDNlNGViMzVkYTc3MjM5MGM1MGMwMjkzNzg2Yjg2ZmM5YTA2ZTE5IGxlZ2FjeS10cnVuaworOTk0OCA2Zjg2OWU1ZDMzY2NiZjc2MzRiN2EwYmU1ZWFhNDEyYWY4MmVmZTI2IGxlZ2FjeS10cnVuaworOTk0OSA4ODFhNWU2NzE0ZGNiNzBhNWNlMDc5ZjUyMWZkYmUwNzFkMzBmMGU4IGxlZ2FjeS10cnVuaworOTk1MCA2YmI1MDZhZDk2ODQ4YWMyYTI4Y2Y1MTcwYjdmNTdjOWJmZGZhMmZmIGxlZ2FjeS10cnVuaworOTk1MSAyY2YxY2FlOWI0NmVmMzdmMDJkNWM3ODY0ZGMxODg1MGQwYWNjYmJiIGxlZ2FjeS10cnVuaworOTk1MiAwNzZiODJlMDQwYTVjOTM1NGU0Yjg1ZGNjYjIxZTIzOTU2Y2RmZmFkIGxlZ2FjeS10cnVuaworOTk1MyA3ODRmZWY4MzdiNTJkYzhkNjAxODFkY2FmNTBjOGMwMDJmZjM0NzdhIGxlZ2FjeS10cnVuaworOTk1NCBjYTY2YTI1MzZjZDU0OWE1OTdkOTZiMTgyNTRlMDNmNDdmNDk0OTgzIGxlZ2FjeS10cnVuaworOTk1NSBiOTQyMWUxN2RkZjc2MzFkMDdmZDIzZjBhZmQ2MWFjNWI2YzRjZjdhIGxlZ2FjeS10cnVuaworOTk1NiA4MDczOWIwYmMzMDI2YzkyYThkMjNkNmE0YmE4M2VmOGY2ZDg5NTcxIGxlZ2FjeS10cnVuaworOTk1NyBiZmU1N2VmYWQ3NTFmYWRmYmU5YjI2NWNmNTZlMzg3NmIwZGI5NjUwIGxlZ2FjeS10cnVuaworOTk1OCA1NWMzZmQxODUzY2ViYjJmNGNlN2I5ZmJhM2EwNjgzNDZjN2Y0NjhlIGxlZ2FjeS10cnVuaworOTk1OSBjY2EzOWQ3MTlhYmE2ZTVjMDQ1OTZkMzk1NDYwNzUyOGQwZDMyNjE1IGxlZ2FjeS10cnVuaworOTk2MCBmMDFmZjI2ZmFjYWViODczODJhMDE0NWRhOWZkN2VjNmVhMzlhY2E5IGxlZ2FjeS10cnVuaworOTk2MSBiYTRhMDJjMGU5MGM3OTJhZmE3ZTFhN2M5MWQzMzQ1ZTRjMTBiODEzIGxlZ2FjeS10cnVuaworOTk2MiA1ODBmNmM5MjI3MGJiODcwMTY5YTBhZWY4NzdlZTZmNGEzYTU1YjIyIGxlZ2FjeS10cnVuaworOTk2MyAxZGZjMTVlMzExMzA0M2Q2MDA4ZWZlZThjMjlmYWRlZjFkNzBjNDViIGxlZ2FjeS10cnVuaworOTk2NCA0Y2FlMmRlMzBiNTdmYzVlMGJiM2Q1Y2NkNmZjMzc4MzE3ZDMwZWUzIGxlZ2FjeS10cnVuaworOTk2NSAwNWQwYjZmYmVhOWI1ZGM2N2NlZWFkMzY1MmZkYzQ4MjY3MjkyYzRiIGxlZ2FjeS10cnVuaworOTk2NiA5ODM0NWFhMWQ1ZmVkMzE2MzNmYzgyZWVkMTlkOTI3OTIxNDYwYjc3IGxlZ2FjeS10cnVuaworOTk2NyA0MjdiODFjMjQ1MmZlMWQ3MmZhMTAwYTRiNzI1MGJkNDBiNGIxYmFlIGxlZ2FjeS10cnVuaworOTk2OCAzZGZjMzc2ZTZmMWE4YmU0Y2U5YTAxMzFmYzk1MGU2YThhNzE0YjEyIGxlZ2FjeS10cnVuaworOTk2OSA3ZjI4OTk3YjJjMTA2ZmNlMjNiZWUyYmMxZWRmMjZmYTIzNzg5NGUzIGxlZ2FjeS10cnVuaworOTk3MCA1NDQ1NmYwOGViYWQ3NTUxMmQ0MzFhZWExYTE4YWRjYTcxYTZlYWE5IGxlZ2FjeS10cnVuaworOTk3MSA2ODU3YWNiZTJlNzRiMDBhZjg2MGFmMmJhODcxZjUxMjk3NWIzOWFlIGxlZ2FjeS10cnVuaworOTk3MiBjNGQ1NmZjNjNkOGYwMzhiNGFiNDE2YzE0Nzk5YmUzYjZlNThhNmE4IGxlZ2FjeS10cnVuaworOTk3MyA2YjAyNjY2NzlmOTY5NTI1OGQ3ZmE0MTM5YzcwOWE5Zjg2NDU3ZTI0IGxlZ2FjeS10cnVuaworOTk3NCBlYzc5NzZkMmQ1ZTllNDEzZTIxODg5MmU5NmQ3ZTc5YzJhYzg2ODE2IGxlZ2FjeS10cnVuaworOTk3NSA1ZTM5MDA3ODQ2MGFlOGU0MmIzZjk1ZDM2Njg3YzEzNjRmOWI4NzFkIGxlZ2FjeS10cnVuaworOTk3NiAxOTA2YTdmYzc1MDk0ZDY4MjZhM2ZjYTViMmNiMmE1YTg5ZDYxM2FkIGxlZ2FjeS10cnVuaworOTk3NyBkOTU5MWM5YjJjNWZhNGQxNWE1YmU5MjZhNjA0OTI2YmJiMjc3Zjk3IGxlZ2FjeS10cnVuaworOTk3OCA5ZGUzY2FkNTA5MDUwYzJhYzZjNDZiZWJiOTEzZGEzZTEyNDk0MjAzIGxlZ2FjeS10cnVuaworOTk3OSBkMTdkYjNlYmZiYzIwNWRjMTg1NzY0YzMyOTU4M2ZhMjJjNTUyNGQ0IGxlZ2FjeS10cnVuaworOTk4MCBmMjNkYjNiNjVjODM4MWZiZWQ3ZWQ3NDQ0ZjYwNmJmZDg5YTk1OThhIGxlZ2FjeS10cnVuaworOTk4MSA3NTQ1ODYwMzljMTFiMWY5Y2ZhNDEwZmQyN2YyNDE5MmYxZTY0NjZkIGxlZ2FjeS10cnVuaworOTk4MiA4OTRjZmZlYjg5YmE1MzUxN2Q2YWNlNmZhNmMwNjI3NzNhZjIwMjQ1IGxlZ2FjeS10cnVuaworOTk4MyBlZjk4MGUxN2I1OTM5Y2FiYWY2MjE4MDRhODAzNDc5OGQyMzYxYTU2IGxlZ2FjeS10cnVuaworOTk4NCA2N2EyYjk2ZjAxODk3MzQ5NDZhZGMzZTAyNWMzNzA0ZTg2MzY4MTU0IGxlZ2FjeS10cnVuaworOTk4NSA1MTBlNTI0NDY3Y2U2MjczZGVjMmJmNDQzODAzYzY5ODE0NzQxMzUxIGxlZ2FjeS10cnVuaworOTk4NiBlZGEwY2ExMzhiM2Q4NGJhOTExOTYzMzhkMGU1ZWE5ZTBhYzJhNDQ4IGxlZ2FjeS10cnVuaworOTk4NyBiNWQ1MmM0MTViMTVlOWU0Y2YwZGRmOGM1Yzc4MjQ3MjdlMjRkM2JhIGxlZ2FjeS10cnVuaworOTk4OCBlYzQ3MzVjZTEzNjA4NDNkY2M2ZTc3YTMwZjdmMzAxZDc4YmE1MDMyIGxlZ2FjeS10cnVuaworOTk4OSAzNWEzY2MyNGVmMDQzMjdhNmJhNmRiNjBlMDQxYWM0OWVlYTAxZGU4IGxlZ2FjeS10cnVuaworOTk5MCBlM2YzN2EyNjAyZDUwNDkwNWJiOTI1ODgxYjYzNzYzOTY4MzY5NmNkIGxlZ2FjeS10cnVuaworOTk5MSA0ODg4ZjQ0ODQ1MGYyM2RhMDJlMmQ2ODI1NWQ2NzkyOWFjZGI0YmI4IGxlZ2FjeS10cnVuaworOTk5MiA5NzBlOWUwNThiNzYxYzRjODQ3YzFiNDQ3Y2QyMmRmY2EwMjk4ZjdkIGxlZ2FjeS10cnVuaworOTk5MyBlYzBmOTlmMWEyZmRiMGFiOWY2OWQzMGY5MGI4NGQ0NDRlYzA5OGVmIGxlZ2FjeS10cnVuaworOTk5NCBiNjA0MjRhNTZmNzQ0ZTVlZTQyYmZkNGZlMTlhYzJjYTQxMjczYTAyIGxlZ2FjeS10cnVuaworOTk5NSA4M2MyYTVhNDVhNDFiMmZhZGI5MzlhM2MzYjZhMGZkYjI1MzU4Y2ZhIGxlZ2FjeS10cnVuaworOTk5NiAzMTJjYTlmZGFjZmYyNzViZTkyMDcwNDQ5NmE5NWMyNWI2NjJjNmQwIGxlZ2FjeS10cnVuaworOTk5NyBjY2U4OTk0ZDUyY2YwZThhODMwMDQzMWZlNzY5NmU3ZGI4ODJmMjcyIGxlZ2FjeS10cnVuaworOTk5OCBmOWRhMzRmNzI2OGI1MWM4NzFmMmYxNDNkYTgwMDY0MjJkNGMzNzk1IGxlZ2FjeS10cnVuaworOTk5OSBmYmM4OTIyNDM0NzdmNmNjYjZlYTIzYWUzYmNkZTU0YTA2NGY5Nzk3IGxlZ2FjeS10cnVuaworMTAwMDAgZGMzNzQ3MTFjODQ4Y2Q2NjEzN2U5YjZhNmU2ZWI0YzE3YzA0ZmFlMSBsZWdhY3ktdHJ1bmsKKzEwMDAxIDVlNGMyODk3ZTYyNTc1ZTllNDY5YTBhZjAwNTlmN2Y3Y2ZkYjU2ZTYgbGVnYWN5LXRydW5rCisxMDAwMiBlZWFjMzZiZmUwMWFhM2YxZmM4ZDFkMWZkNWZlMGVhODczODQ1ZDA0IGxlZ2FjeS10cnVuaworMTAwMDMgODg5OTI2OTZiOWU4ZDE3ZDU1YTg0ZGUzMzJiNTliOWM3ZDdkNTc2OCBsZWdhY3ktdHJ1bmsKKzEwMDA0IDYwZTdiMDAwZjI3Mzg0NjIzZGMxNDdkNTJhYWNjMzM5OWJjNWQzOWEgbGVnYWN5LXRydW5rCisxMDAwNSAyNmE4NzcxYTRjZmQwMDliOTZkNzNhNThlYjU1ZTAwNzJlOGM5ZWI0IGxlZ2FjeS10cnVuaworMTAwMDYgM2NhZjIzOTdjNTA4MTU1M2IzM2NmYjdlOWJmYjVhOWUyZThlOTA5ZSBsZWdhY3ktdHJ1bmsKKzEwMDA3IDAzNDM5ODczNmU2NGM0MThjYmQzMzc3ODc1NWRmZGJkZTExZTQ1OWUgbGVnYWN5LXRydW5rCisxMDAwOCA4OTExMDVkYWM5YjQxODcxNDQ4ODE3OWJlMjgxOWVkMWNhMzVjNGUyIGxlZ2FjeS10cnVuaworMTAwMDkgYjQ2NjBhZDdkYzQxZWExNzRmODk1OTYzZWU1Mjg0YWMwMzJkY2YxZiBsZWdhY3ktdHJ1bmsKKzEwMDEwIGJmMjM2ZmJmMTFkYWFlM2EyMmMxMTQ2N2UwY2I0YjczYTIxNjQzYjkgbGVnYWN5LXRydW5rCisxMDAxMSBlYTgxODRiZmYxMmRhNWMwZDFlYTU0YmM4MTYyMzZiNjM3MTNiMGYwIGxlZ2FjeS10cnVuaworMTAwMTIgZjkxZDVhMDMzOWJmM2FhMzhlYTkwNGY3Mjg1NjQ3OTU0MThhYWQ4YiBsZWdhY3ktdHJ1bmsKKzEwMDEzIDEzYjYwYWJkYjcwZDE5ZWEwNjZmMjIwM2MxMTYzY2VlNGI3MzY4NTEgbGVnYWN5LXRydW5rCisxMDAxNCBlZWRhYzUwZDc3NDQzYjBiYmRjY2Y5YzZkNTI4NzIwZmNmZTExZmJkIGxlZ2FjeS10cnVuaworMTAwMTUgM2ZmNmIzZDNjNGQ1ZTJmM2Y1ZGI3YmNmYTlmNDFiMWRjNTcwMzYyNSBsZWdhY3ktdHJ1bmsKKzEwMDE2IDAxYTlmODRhMjY5YzlkYTBhOWJlMDFmMGFiYzI3OGFhNmU0OWZkNGUgbGVnYWN5LXRydW5rCisxMDAxNyA3ODMwZTFkZTk4MTc0NTdlYjFmYzQyZGI3NTNiZjNiZDkwZTk0NmU3IGxlZ2FjeS10cnVuaworMTAwMTggOWRhZTBhYjM4M2E0OThlMWI1NzI2Njg0MDE4Njk4YTdiN2U5YTU3NyBsZWdhY3ktdHJ1bmsKKzEwMDE5IGM5ZjRhYTJjNDVlZGQ2N2ZkMGM0YzQ1YjQ0MGUzYWE0ODQ0MTg1MmQgbGVnYWN5LXRydW5rCisxMDAyMCBjYTE3MGQ3NjFmMDg2ZTMwNWM4YjVkYjZjNzA3NTcxZjEyMWZiMzA0IGxlZ2FjeS10cnVuaworMTAwMjEgNDhmN2FjNDUyZDk5Yzk0YjkzMzAzMWQ3YjdlOWQ5NmM0YTY5N2Q0MSBsZWdhY3ktdHJ1bmsKKzEwMDIyIGQyMDJjODJkM2M1NzE2MjZkMzZmMWM0NDBmOWM1ZjUxZmMxYzlmMGEgbGVnYWN5LXRydW5rCisxMDAyMyBjMDEzMWZhZTA2ZTllMDcyMTFjODQ0YTkwZGVhNGQ3MmVjODYxN2VhIGxlZ2FjeS10cnVuaworMTAwMjQgNjQyMWVhMWRlMjgyODdiMjRkZDY0Y2M3YjI2NDdiZmZhYzk1MzFiYyBsZWdhY3ktdHJ1bmsKKzEwMDI1IGQ0ZDg0YjU0YzQ0ZDgxODllMjAzYTE0MDNkMzhkNzg5OWQwOWJhNDggbGVnYWN5LXRydW5rCisxMDAyNiA3ZWIxOWIxY2U4NGQ3NGYyZTJjOTU1YTYzMGM2OWE1OTdhY2M0OGQ1IGxlZ2FjeS10cnVuaworMTAwMjcgNGIxMWNiOTYxMDQ2YTBjNGQ4NzJkNWY2MmNjYTUzMDk5YjQzMTRmNyBsZWdhY3ktdHJ1bmsKKzEwMDI4IDY5ODYwODIxY2ExZDVkYTY2NTFkZDQ2NmY5YjI0ZjM2N2RkY2FlNTUgbGVnYWN5LXRydW5rCisxMDAyOSBkMzRmZTMwYjk1ZTg1NjgyMTM4OTNjZGYwN2NmM2MwMzllOGQzODdiIGxlZ2FjeS10cnVuaworMTAwMzAgYzhlNWY3MDQ2MjNkODkwMTFmODZmZmZjMjk0YjA5ZTA1NDA1NTIzMSBsZWdhY3ktdHJ1bmsKKzEwMDMxIDgyZWI4YjNkZjZmODI2NTQzYmJmOTYxZjcwZTUyNTRjMWU4YzFlYjAgbGVnYWN5LXRydW5rCisxMDAzMiA1ZGY2NTZjZDEwYWRlMWQzNWI1NzZjMzYzYWQyYzEyODEyY2E5MDg4IGxlZ2FjeS10cnVuaworMTAwMzMgNWFlY2MyNTA5ZTQ2ZDlmNGJiYzg0ZWFiMGE3ZWMxMmMyNDhjMTkzMCBsZWdhY3ktdHJ1bmsKKzEwMDM0IDczMzk1MDgwNGEwYjQyYWZmYTBiZmI3ZmIzYjcwZThhZDYxNmEyNjcgbGVnYWN5LXRydW5rCisxMDAzNSA2NTk4Mzg0ZDVmNGNiZWQ5YzZmZGEwMmU0MjQyNzY3YWQ1Yzg2MDIzIGxlZ2FjeS10cnVuaworMTAwMzYgMjJkZTUxMTY4MzJmZDY1ZTE5Yjk1NzJjM2IxNzRlOGZjYThiMmYyMCBsZWdhY3ktdHJ1bmsKKzEwMDM3IGMwMmFmMWU3MTNlZGM4YTQ1NjQ3M2JlYWUxNDQ3MjFiZTVjNzk1MDMgbGVnYWN5LXRydW5rCisxMDAzOCBhNDQ3YjI2OGM3NzMyYmQ5MDg2ODJjMTE1MjdmZDA2MDUxOTAxYWYyIGxlZ2FjeS10cnVuaworMTAwMzkgY2M3ZTEyNmYwMDlkMzg5ZDgzYjI1NGU0ZDkzYTA5MTdmMGMyZDhmYiBsZWdhY3ktdHJ1bmsKKzEwMDQwIDQzZjQ3YjhlMzk4ZGE1M2RhOTlhODY0ZmIzMWVkOTJmNzA0OTUyMGIgbGVnYWN5LXRydW5rCisxMDA0MSA1OWIxYWIwMWMyODZlZjMxN2E1OGU2N2VmYjI5YWM1MzY4YTFiZGZkIGxlZ2FjeS10cnVuaworMTAwNDIgMWE5ZjlhNWRmMDRiMTZmMGJjNTdlZTFlNGI0ZTI1MDUxMzQ2ZWRiNiBsZWdhY3ktdHJ1bmsKKzEwMDQzIGJhMTBjNDI5OTliOGJjYTI2OWNiMjBhYWU2ZGZiMTZmMTIwYTkyNzYgbGVnYWN5LXRydW5rCisxMDA0NCAyZmYyZTQ1N2FiODdhYzdhYWUyYmI5YjA3MzMzYjNiZjIwMWEyNzcwIGxlZ2FjeS10cnVuaworMTAwNDUgMDBhZWU0NzQzZDdiYTY5ZWFhOWU4NTIwOTgwMjQwNDY0YThkZmY4OSBsZWdhY3ktdHJ1bmsKKzEwMDQ2IGUxNWU4NWQ5ODdhZjg5ZTY2NjBhOWJmOWUyMGE1M2U4YjY4OWZkNzMgbGVnYWN5LXRydW5rCisxMDA0NyBiOWNiZjE3NGM3MjM4OTIwODY3Y2ZjZmE1ODJlNGNkNmQ5YjQxMWIxIGxlZ2FjeS10cnVuaworMTAwNDggOGFlZTUwYTlhMWIxZmE0Yzc0Yzk1ZjE3ZjQ4YjhmZWYxMTY3NTE3MSBsZWdhY3ktdHJ1bmsKKzEwMDQ5IDk2OGFhYmEyODFjNTNmMDJiM2Y0NWMxOTE0OTVmZTlkZmZhYWJmYjggbGVnYWN5LXRydW5rCisxMDA1MCBjOWY0MTcxMjRlMGY3NjY1NGI4OGE2ZjI0YjhkZWMzNjU3ZmM4NjdlIGxlZ2FjeS10cnVuaworMTAwNTEgYWEwZTgxOTljYzMxODNiM2Q4ODE3Nzg2YTdlZjk3ZGQ4N2E0MmZlYyBsZWdhY3ktdHJ1bmsKKzEwMDUyIDdlN2Q2YjFiOGE0YjJiZGQ2YTY0NzA1YjAzYTZhZmU5YzBhZjE5NjIgbGVnYWN5LXRydW5rCisxMDA1MyBlNjcxMTQ1YWI1MDdlMWQ2ODE3NTJhNjYzODM5ODQ3OTIwODM0YTMxIGxlZ2FjeS10cnVuaworMTAwNTQgMmEwNTZkMTkzZGQzN2E3YmQ0OTE1MDIyMzczMmU0NTkwMWQxODFiNyBsZWdhY3ktdHJ1bmsKKzEwMDU1IDgyN2FlYTVmNTYyMTkwZDA1MDEzNThlMmZiNDI4ZDM0MzUwMzQ2MjkgbGVnYWN5LXRydW5rCisxMDA1NiAyMDQzYzY5ZmYxZDQ1NWQ4MzkyYmM2NGY1YmI2ODFlZWYyMzFlNTM0IGxlZ2FjeS10cnVuaworMTAwNTcgNDJhMjE4MDZiM2QyZmVlNWFjNWY0NmFjOTU2OGE3OWNmZjRiMjRiNiBsZWdhY3ktdHJ1bmsKKzEwMDU4IGQ1Zjg5NTY3YjVhOWY2N2QwYjMyMzA1YTMxNzUyYzdiZTM2MWQyYTUgbGVnYWN5LXRydW5rCisxMDA1OSAwZjU2NWM3ZmU0YmJmZTliNDdjZTlhNWQ1OTIxNTcxYjJmNjgzNzYwIGxlZ2FjeS10cnVuaworMTAwNjAgMGE0YjQ1MzM4YWMyODUyNTZkZGJiZTIzMjM1ZjlhNGUwMjJjNTZlZiBsZWdhY3ktdHJ1bmsKKzEwMDYxIDlkZTBkNTA0OWNhMWI2NWY3OThhNDYyMThlOGJkNGY2YjcxYWEzMTkgbGVnYWN5LXRydW5rCisxMDA2MiBkMmI1ZDkzMjZmMDkxNTQ3MGY2ZmJhZDk4ZGJkMjk4YzI2ZmNjMWUwIGxlZ2FjeS10cnVuaworMTAwNjMgMmVmMGFjYTk2ZjJkMzNhNTVmZjRhZTc1Y2JiMzM3Mjk3NGY3Yzg4ZiBsZWdhY3ktdHJ1bmsKKzEwMDY0IDA3NjViOTU4Y2M2N2ExOWJlMmFhOGY3NDZlOGQ2YmEwYmRlNWZhYmEgbGVnYWN5LXRydW5rCisxMDA2NSBmYzc2MGM2MjY5NTBkZTk3Nzg2YjUyNzYzNGRhMTg2MzdlZGE0Mzg5IGxlZ2FjeS10cnVuaworMTAwNjYgNGI2MzRmMDI0M2Y5N2QwMzJjMTBiYmU0NmNhZDIzZTYzODJiMjcwYyBsZWdhY3ktdHJ1bmsKKzEwMDY3IGJkMDg4NmU3OGYzYjdlMmI0ZTE1YjdjOGNjZTMzZmM4NjJmMzQ4ODggbGVnYWN5LXRydW5rCisxMDA2OCBiNmQ2YTgzNGRiNDlhZjE1ZTQ3NjI3MmRhNmZjNGI5ZTc1MTFjOGJlIGxlZ2FjeS10cnVuaworMTAwNjkgMmYzMjMyMzgxMWM1MzU3Y2E5Y2M2ZThiNjdmNTAxNGQ5Y2Q3NWUxOCBsZWdhY3ktdHJ1bmsKKzEwMDcwIDA5NDQwNjA2YWFjNTg4ZjQ5YzY5YzAzYmFiZThkNjdmNDRiZjA5MTUgbGVnYWN5LXRydW5rCisxMDA3MSBhMTkwMjljZDc2YzUxNTllZjUwMGFhY2VjNzQ1ZjA0OGRiN2E5YTNmIGxlZ2FjeS10cnVuaworMTAwNzIgOTljZWZhYTljNTA5NzJjNWIzYjI1YTY4NTJiNzA3M2E4YzU3ZDFiMCBsZWdhY3ktdHJ1bmsKKzEwMDczIGM0NTZlYmUzNTMzNzRkZTFlNTU3ZmI1MGFhMzFiNzQ0ZDg3YjkyMWIgbGVnYWN5LXRydW5rCisxMDA3NCBhYWI3NjIyMDUwNWVmZGM2OTJkZjRhMzkyOWVkNWJlYTRjMDgwMjJjIGxlZ2FjeS10cnVuaworMTAwNzUgMzliODRhM2RjZWFhNTAzNDBiMTAwZWNkZDdhZDczM2RhZTM1YjQ4ZiBsZWdhY3ktdHJ1bmsKKzEwMDc2IDcyY2FiOTVkMzVlNTcwOWVlOTkwNmMxNDg1ZjdjNDMyZmE2NGU4NTQgbGVnYWN5LXRydW5rCisxMDA3NyAwOTQxNTY4MGJkNGY2YzQ4MTQyYjlkMDFhYzI5YzUxMjU4ZWI0YzE5IGxlZ2FjeS10cnVuaworMTAwNzggNmE0NTM1OTVlNjE5ZTk4MDc2NWU3ZjdjNzg0MzRhNjk2YjU4ODc1MyBsZWdhY3ktdHJ1bmsKKzEwMDc5IGVjYWQyMzRjODdlNDRkOGVhYzBjMDQyNzhhNzNhZTY5ZmI5MWQ0NzUgbGVnYWN5LXRydW5rCisxMDA4MCA3ZjRhNTAzY2U1OGIyNmY4YWMyYjlmMzI1OWE4YTFkZGM4NTE2NGM2IGxlZ2FjeS10cnVuaworMTAwODEgYzBiZjliNjBjMjk4MGIyMzhiNGVhOGI3MWU5MjAyZmJlMjFhOTBjNiBsZWdhY3ktdHJ1bmsKKzEwMDgyIGE2M2Q1NTNlYjY1ODI5MmI5ZDA0OGNiOTFkYmE5M2Q3YmI2MjllNDAgbGVnYWN5LXRydW5rCisxMDA4MyA1OTQwN2Q0NDhiNmFjZDkyMGUzZDFhMzcwNDI4ZmVhZjBmYjUwOGQ4IGxlZ2FjeS10cnVuaworMTAwODQgYzBjMDJlOTI2OWYzY2M5NTY5MzRkMDI3NmUwOGJjZjdkYWViMGJlZCBsZWdhY3ktdHJ1bmsKKzEwMDg1IDAwYWQzMDliZDUwODEwZDhiZGY5ZjkwZDE4MmQ4MTQwMjlhZmNjY2YgbGVnYWN5LXRydW5rCisxMDA4NiA4OTNhMzIwOTUyMjI1NDFmZGY2OTE4Y2VkOWI1ZjNlMmRkMzBjOWRkIGxlZ2FjeS10cnVuaworMTAwODcgYWZiYmZlOGY1NDk2NzA0YTdiYTE5NmQ1ZWI3MDg2YTkxOGM0N2ZkOCBsZWdhY3ktdHJ1bmsKKzEwMDg4IDcwYmNiY2RkYTc0ZjYxYTZmMzUxNWU4MmE0MGVjMzI3NzY1NzFiMDkgbGVnYWN5LXRydW5rCisxMDA4OSBjZGY4MGY3NDU4Y2ExYTczZDYwZTJlYmJkZGNjZmQzMWM2ZWUyMDA0IGxlZ2FjeS10cnVuaworMTAwOTAgNDZmMmM0ZmM5ZTM4MWFiYTI2OTliMmE4ODhhYWM2YjMxYjJlNDdiOSBsZWdhY3ktdHJ1bmsKKzEwMDkxIDE5MmVhOTg4NGViNjdkZmNhNjU0YjA4NzBlMDdlODI3OThhZDA0ODIgbGVnYWN5LXRydW5rCisxMDA5MiBmMzViMjllYjUyZDE5N2U5YjZlNjk3NTFhYmU1YWYwNWM4MGI3NWFmIGxlZ2FjeS10cnVuaworMTAwOTMgZGVjNjVmY2VhMjFlYjkxZTY0MGY4NjJjNmYxNjNmNTlkZDc0YmE4MyBsZWdhY3ktdHJ1bmsKKzEwMDk0IDBlMWU0YjRhMDgyMTAyOWY1OTM1NDM3YjdlNzFkNmQ2MWViYTc1NDUgbGVnYWN5LXRydW5rCisxMDA5NSAwNjhhNjk0MmZlMWExMmVhNTRjOWY2ZDQ5ODQyZjQ1Y2VmYWI5YWQ4IGxlZ2FjeS10cnVuaworMTAwOTYgYTNhNmVjMjU5OTg2MDUzYTY1YzhmYmY2YzhlOTg4N2M0MTQ4M2EzZSBsZWdhY3ktdHJ1bmsKKzEwMDk3IDI5M2IwY2IzNDcwNDA0YzI5YTI3ZTQwMGM1YmI4MmZmYjY3NWJlNjkgbGVnYWN5LXRydW5rCisxMDA5OCBlY2U2MDRlZDYyMjgxODNhOGM5MWNjOTQxZDMyMDYxNjY4MzAxYjkwIGxlZ2FjeS10cnVuaworMTAwOTkgOWNmNmY5NDA5NTk2NTA5MGE3NTc1MGE2Y2IzMmRmYzYwNmM1YjVlZiBsZWdhY3ktdHJ1bmsKKzEwMTAwIDBhMjBjY2UxNzM3MTQ5OGQ0NzNiNDRjMGYwMzNmYTBlY2E0NGUzMTkgbGVnYWN5LXRydW5rCisxMDEwMSBjNTRmMWNjZGU2YTlkZWI2Mjk4ODczYmI2ZjQ4MGQzYTNjODdhYzdkIGxlZ2FjeS10cnVuaworMTAxMDIgYTc4NzQyOWU4NDBhZWIwYmE2Y2FjYzlhNWE4MDdjZDRmZTRkOGU3MCBsZWdhY3ktdHJ1bmsKKzEwMTAzIDBjZTY1OTA0N2JiZjMyMjdjYjJhMWFhNDgwZWMzNmZhYmY5MjNmOTYgbGVnYWN5LXRydW5rCisxMDEwNCA1YWE3MDM3YTFlM2ZiNTBkOTMyMjRkNmJlMDIxYzNiZGJhY2YyN2Q2IGxlZ2FjeS10cnVuaworMTAxMDUgYTBjN2FhMDUyMmRlMTBkOWQ3YmMwMjNjZjNhZDhkOTU0NDI1NThjZCBsZWdhY3ktdHJ1bmsKKzEwMTA2IDE2NTQ1NjI4MjQxMjBkY2Y5OWI4ZjgyNmIxNGZmZjBmNzdiNDAyNGMgbGVnYWN5LXRydW5rCisxMDEwNyA3OTYwZGEwNTQ5YzQ3NDNlMjk2NGI5OTZkOGM2YzY4MmIyYjA2ODY1IGxlZ2FjeS10cnVuaworMTAxMDggZGIxZTUxNGYxNjI5NzMwMmQ0NThjOWRhODRkNWYyNDI0OTFjZjg1YyBsZWdhY3ktdHJ1bmsKKzEwMTA5IDQyMmJiZTg4NWNiZjcxYTYxMmZjZmVjZTBhNWRiZjgzN2IwZWI0YzIgbGVnYWN5LXRydW5rCisxMDExMCBkMjJjZjY2NmZhMmM4OGM1MDg3YTJkYzgyY2FiMDI0YmM3ZjRiYzVlIGxlZ2FjeS10cnVuaworMTAxMTEgNTUzNDVkNmQyYzE0MWMwMmUyMGUyYTIzZmM1ZjYxOTM3ZGRkYzY0ZSBsZWdhY3ktdHJ1bmsKKzEwMTEyIDNkMTU5MGI1ZTNkZGZkZWUyYjI3ODI3ZjZiNGRmOTNiMmJkZGJiYTUgbGVnYWN5LXRydW5rCisxMDExMyBiYmRkMjhkMzZmNDI5NzdmYjZmNDk3MmIyNDUxNDY5MDIzZGE4ZTNkIGxlZ2FjeS10cnVuaworMTAxMTQgNTQ3MmFiNjEwZmU5ZTQ5OTZmNWIxNjY5ZWZlMGQyOTIxOWY2NThlOCBsZWdhY3ktdHJ1bmsKKzEwMTE1IGMxMTI0NDNjYWJlMTE2ZTIyNTFlMDBmMzk4NDhhOWNlNGQ3ZWY0NGMgbGVnYWN5LXRydW5rCisxMDExNiAxYzBmNThiNzYwODFhODcwMjcwOWY5NDAxZGRjYTMyM2Q1ZDZiNDRiIGxlZ2FjeS10cnVuaworMTAxMTcgYzYzODdlMjQyYjc4MGFmYzY4OGMwNmNmN2NkOTM2MDM0MzkyYzU0OSBsZWdhY3ktdHJ1bmsKKzEwMTE4IDA5NTAxMjcxODVlYWI2NGQ2OWI4MGUwOGEwZjM0ZGIyZmViM2U2NGEgbGVnYWN5LXRydW5rCisxMDExOSAyYmJlZmVjMTY1NDIwNGJhNWFjYzdhOTk4YmI4ODVhOWNmNDIwZDYwIGxlZ2FjeS10cnVuaworMTAxMjAgZjc3OTE2MTdjMmIyNWQ5NmQ3ZWJkNTQ0ZTMzYWY0OGMxODJkMGVmZSBsZWdhY3ktdHJ1bmsKKzEwMTIxIGI5NWU1MjNkY2U2Y2NlMTBiMTg2NzIwOTVhMzdiY2JmOTc1NDZlMDggbGVnYWN5LXRydW5rCisxMDEyMiBkOGQ4ODQ0N2YzYzEzMTRjNzIyNmE2NGY4YWMyMzRmM2M2MzQ3YmM3IGxlZ2FjeS10cnVuaworMTAxMjMgN2FkNTIyYTRjNzUzYTEwNGExZGM0ZjcxNTlkNTFiNWE1ZjY1NzVhNiBsZWdhY3ktdHJ1bmsKKzEwMTI0IGQ5MmYxMGM0NTFhMTM4ZGE0MzQ1MWFmM2U1NTVjMDdhNDhhYTg0ZjUgbGVnYWN5LXRydW5rCisxMDEyNSBkZWU1NjAyNWQzOTBiNDFmM2QwZmI1MGNkODgyOTFiODAxYzI2MjRhIGxlZ2FjeS10cnVuaworMTAxMjYgMDJjNjY0MjhmMDQ4NDFkZjcyMzc2NzVhZDUyZGQxNmMwOGU1NDU2OCBsZWdhY3ktdHJ1bmsKKzEwMTI3IDkzMmRkNmI5MGUxM2E3OTIzMGZiNThhZjUwNWE4NGE5NTI3OGY4MmMgbGVnYWN5LXRydW5rCisxMDEyOCBlYTY4NjE5ZmI1NmQ0ZDU0MWQzYTZhNDc4ZTBkZDI1MDhiNGY4NjQ2IGxlZ2FjeS10cnVuaworMTAxMjkgOTU1MmQ0YjNkOWI3ODE0MjVlMzhiMmQ4MGRjMmQ0NGQyNzk2OWU1NCBsZWdhY3ktdHJ1bmsKKzEwMTMwIGQ2NGRiZDFjZDMyZWI0Mzc5MTgxNjA1NzI0MDZkZTA1YTM1NTliNjcgbGVnYWN5LXRydW5rCisxMDEzMSBiODY3NzFiMGQ3ZjkxODdjYjEyMWFhOTU1NTlkZjhkZTIxYmY2YzI2IGxlZ2FjeS10cnVuaworMTAxMzMgNzVkMDA0OGM4NjQzZGI1ZTRiNmUyNTI2MWZhMDU0YzRhZTk4ODRlZCBsZWdhY3ktdHJ1bmsKKzEwMTM0IDczZWViZGFjZmI3NzYyM2Y4MzA1Y2Q1ODA0Y2RmYTE1YmRiNmZhYzUgbGVnYWN5LXRydW5rCisxMDEzNSA2YjNkM2EyODU4MWY0YzBmZGQ0ZWVjYTFhZGM3ODVlNzkwODhjNDA0IGxlZ2FjeS10cnVuaworMTAxMzYgZjAxN2M0ODU4YmE4YzM2YWJmODE5ZTdiNzE0ZjRjOGVhMDA4ZjdkNCBsZWdhY3ktdHJ1bmsKKzEwMTM3IGY3NWZmOGQ0NDM0ZDg3YjUzNTNiNmVlYjRjNmYwYjBhYjQ0ODM2NGYgbGVnYWN5LXRydW5rCisxMDEzOCA4NjkzNzNmYTBiZjhiODY0ZDRjYjc5ZGY3ZDJhMzcxOTI1NmE1MGY1IGxlZ2FjeS10cnVuaworMTAxMzkgZjAzZTY2NWQ5ZjcyODg5ZGJkY2ZhNjJjNDA4MmYwNzRlMjU1ZDQ3YyBsZWdhY3ktdHJ1bmsKKzEwMTQwIDQ3ZGRlYjA3OTU3NTQ2YjMyMDczMjA2ZGZjMjc2NjM1ZTA0NWY0MjkgbGVnYWN5LXRydW5rCisxMDE0MSBlYTJkMzIxN2QwYzcyMTM4MWUwOTFiNjAzNDA2OThjMzZkZjlmNDAwIGxlZ2FjeS10cnVuaworMTAxNDIgYWNkMzkzYTkzZWQwNDRhNTI1NThlMTFhMjU2NzNiNmE3OGQyMGU4ZCBsZWdhY3ktdHJ1bmsKKzEwMTQzIGYyODU1ZDJhY2JkMzk5NDRmMzkyNGJmMjYyMzljODQ4MzU1NTM2YmIgbGVnYWN5LXRydW5rCisxMDE0NCBhYmFlNjhhZjMzNGY2NTJhMzI0YTRmOWY5NDRiOGZkYTQ4ODdiMWE0IGxlZ2FjeS10cnVuaworMTAxNDUgYzkzOTRhZWFhYzZhZGMyN2NmZDJiMzY1N2FhMWI4MjM5Mzg4YTY4YiBsZWdhY3ktdHJ1bmsKKzEwMTQ2IDM1ZjI5YjdkYWNmNTE4YzUyYWI0YjY3NTg2ZjNjN2MwMjZmOTZjYjMgbGVnYWN5LXRydW5rCisxMDE0NyBhZDM0NjcxY2Q0Yzk2MjllNDZmZGYwMjQ2MWEyYWM2YTM0ZjEyNWUzIGxlZ2FjeS10cnVuaworMTAxNDggMWY4YzhlMGJiNWVmNjAwZDU3YmUzNjdiYTYyNTkzMzY5OWMwNjliMyBsZWdhY3ktdHJ1bmsKKzEwMTQ5IDhlNmE1ODAxOTg4NzNlNjBhMGIwMzBkZWVjMTBiNDIxMDZlODgyYzYgbGVnYWN5LXRydW5rCisxMDE1MCAwY2YyZmZhZjRiZDdjNTBlZGJiNDU0ZTI0ODgzMjkwMDkxNjkzZjRlIGxlZ2FjeS10cnVuaworMTAxNTEgMWZiODY4ZjI1NDU5ZmUzNmUyMzA0ODA2NDhiYjliYjc3OGRiNWFiMSBsZWdhY3ktdHJ1bmsKKzEwMTUyIDUyOGUyYjk0ZThiOTg3M2E3NjNkMjM3ZGI4Nzk2N2M0ZDZlZTk1ZGMgbGVnYWN5LXRydW5rCisxMDE1MyAzNTdiNzdlMzQ1ZjM2NTYwZjJlYjY4NWU4NGYxOWM1MTdiNGVjODA2IGxlZ2FjeS10cnVuaworMTAxNTUgNzEyMmZmNGM0YWJlNjljYTJmYTMyZTMwYTQ1MWE3OTliYTU5YTc5ZiBsZWdhY3ktdHJ1bmsKKzEwMTU2IGJkY2Y3MDhhZTRkYWU4Y2M5ODdhYjUwNjMyZmUyMTc5MDI5MjI2NTUgbGVnYWN5LXRydW5rCisxMDE1NyA3MmYyYWJhY2YxNTFlNDE4NDhlZTkxOGEyNTM1OWFiMjQyYzYyZTE1IGxlZ2FjeS10cnVuaworMTAxNTggNDAzMDA1OWNmOTdjMTM0MTBhMzBhNWZjNzVlNjM4OGJjMzNiMGJkNSBsZWdhY3ktdHJ1bmsKKzEwMTU5IGE2MTAxOGEyYTUwMmE0MmZkOTRhMzk0MzY3MzA0MGM3OTc5MmU3MDYgbGVnYWN5LXRydW5rCisxMDE2MCAyYzljMjQ4NTgxYTIwMjNkZWMyYTE0NWNiYTg4MGIyMjc1ZWYzZGRhIGxlZ2FjeS10cnVuaworMTAxNjEgZTFlNzY3NjZkOGNhZTE1NjAyMDgwMjM2MGVlZDU2MTVmOGQ4YTUzMiBsZWdhY3ktdHJ1bmsKKzEwMTYyIDUzMzRlZWYxOTc0YzA1NWNlOTFmZDUwOTBhZDAyMzY1YjNjMzY4YzcgbGVnYWN5LXRydW5rCisxMDE2MyA2YmY3NDI2NGI5YzBjMzE1NDVmNzE3NzU1ZTI3N2E1M2EyMDc2Yjk0IGxlZ2FjeS10cnVuaworMTAxNjQgZjBkMzNmZGIzOTIxOTNmN2ViYWU3YTgzMThmMTk5ZTVkNzQyNTJhNiBsZWdhY3ktdHJ1bmsKKzEwMTY1IGFmZGNiZWYxN2VjMGZkMDY5NDM1MjkxNDY1NzE4NWY0MmQ2NzlmNWMgbGVnYWN5LXRydW5rCisxMDE2NiA0ODM5NzAwNjI5MTUxMTVhYWMwNDhmZTczZGQ0M2YxNzc5YWRkYzU0IGxlZ2FjeS10cnVuaworMTAxNjcgYzJlMWRiMWUxYmI4ZmJkMWNhYmUxNDgzNWY2Njk2ZTk2ODkwMjg0YyBsZWdhY3ktdHJ1bmsKKzEwMTY4IDA0ZDczOTc5NzBjMjA2N2E3ZmU0ZTViNTM3ODYwN2QzNWQ3YTc3N2QgbGVnYWN5LXRydW5rCisxMDE2OSA1NTRmMmI4NzlmYmIxMWNiMjBmMmYwOTdjYWQzYzNjODEzMGU2ZDA1IGxlZ2FjeS10cnVuaworMTAxNzAgZjkyNDcyN2NkMDBiNmFkOTlhNmFmNWU1OWYwODJkNjE3MTU5ZmMwMSBsZWdhY3ktdHJ1bmsKKzEwMTcxIDliZjgxZDkzYjk5NWI0YzE1YTU2ZWQ5MmQ2ZDI3OWU4Y2YyYWQyMjEgbGVnYWN5LXRydW5rCisxMDE3MiA1N2E0MjE4Mzg5N2RjYTg1MjUyMjdlODBhMjNlOGZjMTkxYWU5ZGQ1IGxlZ2FjeS10cnVuaworMTAxNzMgZmZjZGNmOWZmMGViYzY2YWE3ODIxMTM0ZDVhZjZlMDA2ZTEwZTA5OCBsZWdhY3ktdHJ1bmsKKzEwMTc0IDVlM2M5ZDUzMGJjMWQzYmI0MDJkNGY2MmU3MjAxZWU3ZTA5MGE0MWYgbGVnYWN5LXRydW5rCisxMDE3NSAxY2VkMDM2NzE1NzQ5ZWQ4ODA3Y2M0N2QzNWE4NTQ4ODkzMGVjM2Q0IGxlZ2FjeS10cnVuaworMTAxNzYgZDIzYmZlMDYxNzVlZWU3YTlkNjNjYjY2M2M2M2E4NDdkN2I2MmMzYSBsZWdhY3ktdHJ1bmsKKzEwMTc3IGU0MGYyYTZlNTI2ZGQyZGMwZDM3NWM0OTZiMGU5OWE4NDNiNmFjNzYgbGVnYWN5LXRydW5rCisxMDE3OCBhYmU3ZjFmNDc2OGIwMWMwZmVlYjQ5MDlhNTJjYjRkYzlkZGZhNWNhIGxlZ2FjeS10cnVuaworMTAxNzkgOTZiN2MxMzIzZDMwYWVjOWM1OTM0YmJjN2ZmOWQ4ZjJlNmZlOGY4ZiBsZWdhY3ktdHJ1bmsKKzEwMTgwIGFjODc3OTY4NTYyY2NkZDFjYjdjNjk5MTg0YWQ1NzVjNTNhNTdjMzYgbGVnYWN5LXRydW5rCisxMDE4MSAyY2M0YmMwY2QwMzY3NThlZDAwNWYyZGRkNzM5N2M0YmQzNDdkYjUyIGxlZ2FjeS10cnVuaworMTAxODIgNGI4MjllNmMwZGM1NTVhNTAwYWM2OTMwZWEyZDAzNmUzOTY3MTI5NyBsZWdhY3ktdHJ1bmsKKzEwMTgzIDJjZDE0NmUyYTNhMGRiMjA2NjM1YjExOTk1MjVkYjFkN2JhMjMwOWYgbGVnYWN5LXRydW5rCisxMDE4NCBjOWQ1NDY4MDllNGY4ZTM3MGE1MmJjZmUwNjg1MTZkMjUxNTA3ODIzIGxlZ2FjeS10cnVuaworMTAxODUgYTAwM2UxNGZlZDg3NzIzOTMyNTQ5ZjFjMmMzYjRhZWMwZTFkMWU5NyBsZWdhY3ktdHJ1bmsKKzEwMTg2IDU1ZTNmODkxZGJiNWQ3ZGYyY2Y5MmMyOWFiY2I3ZmQ2NWIwYWE1NjQgbGVnYWN5LXRydW5rCisxMDE4NyAyMzYxNDY1MGUyOWIxZGVlZWNjMmY3ZTE4OWI2ZThlNDg0Mjg1ZjZlIGxlZ2FjeS10cnVuaworMTAxODggNDk5MWFhYWIxN2JkZWY1NTEyZWJlM2YxNGJlZGMwNDYyYmY5ZDRkZCBsZWdhY3ktdHJ1bmsKKzEwMTg5IGFiYjgwMmMyMTZhZDI0MzY2NTFhYzZhMmNhMzEyMzU0MTZlODdiMzQgbGVnYWN5LXRydW5rCisxMDE5MCA3MDZlNGI5NTQ4NjI0OGE3Zjk1MTVlN2FiZDFiYzA3NGI2YTM3MTFjIGxlZ2FjeS10cnVuaworMTAxOTEgNTZkY2ZjMjc3MTBhYjZlZjNiM2U2Mjk5ZTU1ZmQ5OTk2ODhlMWFlNiBsZWdhY3ktdHJ1bmsKKzEwMTkyIDBjYmM5ZGY4ODJiNmJkZGY0ZGE0NTE1ZTlhNGU3OWZhMjhjOTRkNDEgbGVnYWN5LXRydW5rCisxMDE5MyAyNGZmNjlhZDRkYTIyMzlmZTJkZjZmYjQ5ZmJmODVmYmU5NzljMzU3IGxlZ2FjeS10cnVuaworMTAxOTQgOGRhNzFjNTE1NzE2YWRjZDYzY2E3NDhkYjE0ODRkOTU1ODA4MzcxOCBsZWdhY3ktdHJ1bmsKKzEwMTk1IDM4OGIwOTdiZGRiOTU1MWFjNzY4YzFiOTc2YjBlZDkwN2E1MjQ0YmIgbGVnYWN5LXRydW5rCisxMDE5NiA5MjcxMzQwYzdlMGNjOTg5NDA5YjhlNzk0MzFlZjYyMDAwMzQwMWEzIGxlZ2FjeS10cnVuaworMTAxOTcgOTk1YWVhMDkyOTE3MzNhNjU4MmQzODdjOWFhZDI3Nzc0MzgyMmViNSBsZWdhY3ktdHJ1bmsKKzEwMTk4IGY4MzQyNWNjN2U5Njc1ZTE4NDA4MTU1M2FkM2JkMGI1YzI2MGUwYWMgbGVnYWN5LXRydW5rCisxMDE5OSBkMjFkYzU5Yzg2ZDc0ZDBiMDFiNDBhYmQ5NzY3M2U1MDdmODMwMmM5IGxlZ2FjeS10cnVuaworMTAyMDAgNWM3YmNlMDUzZDAzODg2ZWZkOTJmZTU1ZTc2NWVkYmFkYTE0N2Q1ZiBsZWdhY3ktdHJ1bmsKKzEwMjAxIGYwOTNmY2ZkNTYyNWUxZGI5NDhjNDI1ZTZjYjI3NmJjNTgxMDFlNjUgbGVnYWN5LXRydW5rCisxMDIwMiA2NzMxOGQzZmE2ZGNkNjRhMzllMzBkZTA5ZmViZDUxZTQ5ZTAzMTFkIGxlZ2FjeS10cnVuaworMTAyMDMgZDEwM2MwMTgwYjJkZTA2ZTU1ZTQ0ZDEwNzU5N2NjNDE1NzZkY2E3ZCBsZWdhY3ktdHJ1bmsKKzEwMjA0IDFiYjk0M2NkMmMyM2RjN2QzM2ZhNzYwNjU0MjRmYTIwNjk2ZTFjMWYgbGVnYWN5LXRydW5rCisxMDIwNSA2NjMzNjdjYTEzZjgxNjQwMWZjZmY4YTJiYjJmNDAyNWM5ZmI5YThlIGxlZ2FjeS10cnVuaworMTAyMDYgMDk1NjM2YjhmYWI3ZTgxMWU3NzI3YzJkZWY5MDA3MWZiZmVkMjM3MSBsZWdhY3ktdHJ1bmsKKzEwMjA3IGNiMjU2Nzk4MzQ3ZWI5NWM2MTkyYzZjZGE4MTYxYjE3MDc0MGYwMmIgbGVnYWN5LXRydW5rCisxMDIwOCA1MmRhYTcwYmIwODQ5MzQ1MjA1MzdiNWY5YWUyMmQxYTRiMTM1M2MzIGxlZ2FjeS10cnVuaworMTAyMDkgODk1ODJmYTE4MjRmYmE5OTU1N2IwMmU5YzdkZjAxNjBhMTk0NDAyYiBsZWdhY3ktdHJ1bmsKKzEwMjEwIGMxMDlkNWNhZDEwMDc1NmY1MDU5NTk2MTFjMGI0ZjQ0ZTgzYzUxMmEgbGVnYWN5LXRydW5rCisxMDIxMSA5YzM3ZWQ4ODY4YjllZmJiYzk2OGY5ZWE1NGY4ZDJlMjMyZjIwNDc0IGxlZ2FjeS10cnVuaworMTAyMTIgYjhlMWUxMDU1NjQ5ZDYzNzc4NTZmZDYyMzY0YTlhMGNiNWE5MTUwYyBsZWdhY3ktdHJ1bmsKKzEwMjEzIDMwZTMzMTQ5NjkzMGI1YmFhOTUzYmNmYTJhMTAxNjI1NGZmNThkNGIgbGVnYWN5LXRydW5rCisxMDIxNCA3MjViMzcwZTg1M2YwZTFmMGNmYWYzNTUxMDcwN2ExYTk2MzQ0NDJhIGxlZ2FjeS10cnVuaworMTAyMTUgN2E5YWZhYmE4OGQ4NDJjYzM5ZTZiOTBhN2MwNjY4ODM4NWYwMTYyNSBsZWdhY3ktdHJ1bmsKKzEwMjE2IGVkMzIwMDAxYzI5YTg3NzFlNzA1ZjI0MjA5YTA2ZGU1ODM2OTllMTAgbGVnYWN5LXRydW5rCisxMDIxNyA1ZDdlNGQyMGM4OWVkZDk5OGI4MGIwNTBjN2QzMTFkMzUwNzI5Y2ZiIGxlZ2FjeS10cnVuaworMTAyMTggYmJmZDk0NmIwYjM4YzhmMTZlNWU4N2MzZTA2OWE5NTQwOTUyNzRkZSBsZWdhY3ktdHJ1bmsKKzEwMjE5IDEwOTFiYTJiYWVhNGEyOWNhNzk3YjMzMTI2NjRiNzhlMmQzNGNlZTQgbGVnYWN5LXRydW5rCisxMDIyMCA0MjNiZTdjZDA0Nzk1MjJiMGMzYzVjYjVmZWRmM2NkMWQzNjc5ODkzIGxlZ2FjeS10cnVuaworMTAyMjEgZTI5MDI5MDI5NDE0YjJhOWM1ZTY4MGM1NWM2NjViMjc4NWY2NWQxMiBsZWdhY3ktdHJ1bmsKKzEwMjIyIDViZjY2YWI0ZGZiNmY2OWM1MjEzYjE1M2M3YjYyOTZiNmZmNjAyMTIgbGVnYWN5LXRydW5rCisxMDIyMyAyNjlhMzI3ZDYzMDVmMjdkNTBmZjQ3MWQyODAzM2VhZjViODI3Mzg2IGxlZ2FjeS10cnVuaworMTAyMjUgYzQ5ODQ1MWM1ZjU2NDE2M2MyNDE4M2U3ZTc5OTY4ZWQwYjFhOGY2YyBsZWdhY3ktdHJ1bmsKKzEwMjI2IDQ1YTNkYWJmMGZhODNjOTAyZWYxM2M2MDQ5OTZjYWUxYTI0ZmViMWUgbGVnYWN5LXRydW5rCisxMDIyNyA3OTJiZmQ0NzNmNTE2ODhkZDI0ZmI5MzQyZGYwMjAzMGJkY2QzODNlIGxlZ2FjeS10cnVuaworMTAyMjggYWVkZDJkMGRjYjMxNTQzYmM1M2U4MmM2Y2MwNmZjZjYwMmNlOTY5NCBsZWdhY3ktdHJ1bmsKKzEwMjI5IGE3M2VmNzIwZmI1NjYzNmY3MzYwYzg3ZWI0Y2NmNjQ0OGI0N2FjOGUgbGVnYWN5LXRydW5rCisxMDIzMCAzYzA4ZmI5ZTEzNGY4MmNjODg4OGViZjNhZTlkNDRlYmU5Yjc2ZmIwIGxlZ2FjeS10cnVuaworMTAyMzEgNjk3MmU1MGYzNDgzZTUxMzUyODZjMDNkM2M2OTA0ODJjMzY2ZDAzOSBsZWdhY3ktdHJ1bmsKKzEwMjMyIDBjODM3ZGFiNWI5ZWFjNWRlNDg1ODE3MjA3ZDFlMDZhYTczMWJkZjUgbGVnYWN5LXRydW5rCisxMDIzMyBiNGIwZTRlNzU5YzU4MWYwODE1ZGVlZDVjNjBmNDljNzRiMzhlNzliIGxlZ2FjeS10cnVuaworMTAyMzQgOGVmMDY3NTU5ZDVhMzgyZjZiNzAwZWM1MGE3MDY0YTZmYTBiNzc5NyBsZWdhY3ktdHJ1bmsKKzEwMjM1IDAzM2RiZTkwOTIxODE1NDFkYTVhMWE1ODdjYWRkM2I0YmY0Yjk3OTMgbGVnYWN5LXRydW5rCisxMDIzNiBmYjRiNGQwNjljYzdjZGI0YjY2NTMyZWI0OWQ3N2FkMDZkMjdiZGZmIGxlZ2FjeS10cnVuaworMTAyMzcgYTQxOTMzNGYzYjM5N2I2NGVhMGJiZjg0ODI4MzYxMGQ0MTBmY2M2NiBsZWdhY3ktdHJ1bmsKKzEwMjM4IDc4YzI3ZTMxYWM3Yzk4MDZlYzMwY2M0ODQ4YjNmZjdkNDIxZjFhOTQgbGVnYWN5LXRydW5rCisxMDIzOSBjMzEyNTdiOTI0NDdlY2U1ZDc0NzY4ZGE4YmEyMmUzYWM4NmRkZjUwIGxlZ2FjeS10cnVuaworMTAyNDAgYTVlMmJlYmUxNzlhZTc2ZmI2YTJiNzEyNzNkZTk5Mjc2NzhkMjYzNyBsZWdhY3ktdHJ1bmsKKzEwMjQxIDZiZmE2NTBmMzExZGY0NmU2NzIyOTUxZmY1NmJhY2EzYjNiODI2OTIgbGVnYWN5LXRydW5rCisxMDI0MiA0NThhMzNhYmIzOWMxYWVhM2FkNDk2MDAxMjBkOTQ4MjQxZWQ1N2M2IGxlZ2FjeS10cnVuaworMTAyNDMgYWNmM2I5NTBjYjQzN2QxYjdlZWRkMTE2MThmZTNiNDM2ODIwN2ZlMSBsZWdhY3ktdHJ1bmsKKzEwMjQ0IDljMDJlMGEyNjUxMWE0ZmYyYzg1M2IwNzI0ZjBmOGI5NWMxMjA1ZTcgbGVnYWN5LXRydW5rCisxMDI0NSA5ZDBkYzExNzc1YTRlNDdhZTU0Yjk3NDZmNTcyMmU0OWU3OTdlMDZlIGxlZ2FjeS10cnVuaworMTAyNDYgOGI3ODY1M2JhZjFmZDEyMmI5ZTc5YmQ5OGJhOGUzNzRiMTk2MjhhNiBsZWdhY3ktdHJ1bmsKKzEwMjQ3IDU4N2QwMTc4ZjhkMzY2ZjAwOWMzY2YyZTRlNmY0ZDQ2YzkzN2Y3NzIgbGVnYWN5LXRydW5rCisxMDI0OCA3ZmQ3OWRkZmJiOGI4ODRlZjk2NGNhNWEwNjcwYzA2ZGJkNmNjZGViIGxlZ2FjeS10cnVuaworMTAyNDkgOGYxNzc5MzNjNDFmYWIzYzMxOWY1N2I4ZmE0NzMwMmU1NTBjN2Y0OCBsZWdhY3ktdHJ1bmsKKzEwMjUwIDQ2OWY2NjkxOGRkNmNiYmU1MmZmNmRlNDVkMjg4NjE5MmE1OGQ3M2YgbGVnYWN5LXRydW5rCisxMDI1MSA5ZjQ2ZTcwZWJmYmIyZDM2NWE2NjZjY2Q3OGI1MzhjYzRhZWIxOGYzIGxlZ2FjeS10cnVuaworMTAyNTIgNzA3ZDA2MmNhZTdiZmYxZWQ3ODU4NTE5YzJiNmJjNjU1Y2QzMGUxYyBsZWdhY3ktdHJ1bmsKKzEwMjUzIDkxNzI5MzFmZDgwYTQ4YWM4NzEwYWRiMThjMDI3M2Y2MGY3MzRhN2MgbGVnYWN5LXRydW5rCisxMDI1NCA4YTU2NzQxMmIyMWJiYWVmNzNhYmZlNjM1NDQxZjVkNDZhMDk4ZWQ3IGxlZ2FjeS10cnVuaworMTAyNTUgNWZiNjlmZjI0Y2RkYzEzY2I3NGUyZTdmYmFiYTViZDZhODJkMjQxNCBsZWdhY3ktdHJ1bmsKKzEwMjU2IDU3ZjExYWI0ZTI5MjFiMTQyMDIyMDNjNDk3N2M0YmUwMWU2ZTNlZTEgbGVnYWN5LXRydW5rCisxMDI1NyBkYjk0YjE1YmQ2NDAwYmU1MzBmNmMzZjk2NzIwMDliY2U3YmQxNTRmIGxlZ2FjeS10cnVuaworMTAyNTggNWUyMTU4OTRjNTU1YTI3Mjg5YTBhZGMwOTJmNzkxMDM1NGVhYzg4MSBsZWdhY3ktdHJ1bmsKKzEwMjU5IGIxN2QyMDBlZGY2MjdiZGY1MWQ1M2E4NWU2YTllZDViOTdmNjgyMzEgbGVnYWN5LXRydW5rCisxMDI2MCAxYzQyMDY5OWQ1OGEzYmEyZTIyYzY2NTdkNDNkMWY0OTlkZWQ5N2MxIGxlZ2FjeS10cnVuaworMTAyNjEgM2UxMTk4ZDIwZjljZTEzMzc1N2M0NDMxZWY1OGIyN2RmZThjYTc4OCBsZWdhY3ktdHJ1bmsKKzEwMjYyIDM2YjNiNjg3NmE1ODBlYjBkZmNmNDJjOThkMzQxMzk4ZjFhODVjMjUgbGVnYWN5LXRydW5rCisxMDI2MyA3ZmMzMmE2NjI1NWE3N2FjZjUwZDFlYTRlZDM1ODYyY2QxNTMwNTMyIGxlZ2FjeS10cnVuaworMTAyNjQgY2ZlNmY1OGRkMGQ4ZWY5MjBlMWFkMThlOGNhYjliNDFiNmVkOWFjMCBsZWdhY3ktdHJ1bmsKKzEwMjY1IDgwYjI2NzQ4MzgyOGU1ODIwM2QyMTNhMmZiOGUwYmU3NTk5ZjgwMTIgbGVnYWN5LXRydW5rCisxMDI2NiAwNTY5MmM2NjE0MzRhMTVkOTVjODE5NDQyZTkyZjk4NzA1Yjg0ZjVlIGxlZ2FjeS10cnVuaworMTAyNjcgNmFkZjkxN2VlNzczMGQ3MzlkMDYxNjBmZjZlZGJlYmVhNjQxYzAwYSBsZWdhY3ktdHJ1bmsKKzEwMjY4IDQ0ZmM3ZmZkZmM3N2ZiZWE3YzMzZTc4YWQ0OGIyNjg5OGZhZGMxODcgbGVnYWN5LXRydW5rCisxMDI2OSBiMWMwOTE1MDE0MTEwZmJmYzZhZDlmZjhjNjIzNmFiODA5OTgwYmFlIGxlZ2FjeS10cnVuaworMTAyNzAgODhjNTM5MjFiZjg4MDllNjZjNTgwN2RjMjE4YTJkY2MxN2NkZWQyMSBsZWdhY3ktdHJ1bmsKKzEwMjcxIGI5ZTMxMTIwYTBjNGVhZTllNWM2ZTY1NTE2NDEwMmUzMzlmNmY2MGIgbGVnYWN5LXRydW5rCisxMDI3MiAyM2QwNDkwMDI1Njg5NTE3YWIxNmQ5NjhiMjljNzhiNmU0Nzg2MmI4IGxlZ2FjeS10cnVuaworMTAyNzMgOGQ0MTQ4MjEzY2MwMmE2ZGMxOTM1ZjljOGVlOGI1OGYxMjRkMGVjMCBsZWdhY3ktdHJ1bmsKKzEwMjc0IDA3NDUzMTQwYTA5NTUwMDg4ZDFkZGI3YTc1N2YxZGNlODg0ZDBkZmEgbGVnYWN5LXRydW5rCisxMDI3NSAzNzVhOTAxMDY1YzFiODc3YTU4Nzk3YWYyYTVkMzY4ZDMwMDVlMDQxIGxlZ2FjeS10cnVuaworMTAyNzYgNDMzYzM4MWMzNzAwZTNiMDE2NTk4NzA2ZjUyYzljNTZiZTRkNzNiYiBsZWdhY3ktdHJ1bmsKKzEwMjc3IDY4ZTJiMGRiYmVjOGViNjIwYTJiOWIwZGZlZDQ0MWM0M2QyMDA3ZWYgbGVnYWN5LXRydW5rCisxMDI3OCAwNjhhNzc2MmUyODYxMzE2Y2JlZDY1OTU2ZTM2ZGZlOWQyMGI3ZDY4IGxlZ2FjeS10cnVuaworMTAyNzkgNDlmMTFlYjRlYjlhMzMyMjMzYWFmNzljMDM3ZjRhNzUxOTdlNTg1MCBsZWdhY3ktdHJ1bmsKKzEwMjgwIGNmNzIzOTkxZDc1ZmFkMTZhYjJmM2U4ZDEwOWVjMzUyMDE0ZjNjYzQgbGVnYWN5LXRydW5rCisxMDI4MSBjZjQyMDFlZjczYWEyYzZhYjRmNDllYmFhNzI5OTlhYzUxNGUxMWI3IGxlZ2FjeS10cnVuaworMTAyODIgMDQ3OTk2NjY2YzgxODk4YjAzNDE4OGEyYzMwYzFiNGZiNWNjZmE0YSBsZWdhY3ktdHJ1bmsKKzEwMjgzIGRmZmUxZTQ3MGU2Y2YzY2YxMTcyNDhiNzFlZTM0YWNmYzU3NzBjMjQgbGVnYWN5LXRydW5rCisxMDI4NCAwNjYwZjE3YWRlNjAzY2EyYTRmZmQxOGIzNjY2ZTE1Y2RjZjJkZjQ4IGxlZ2FjeS10cnVuaworMTAyODUgNmQwNGU4YzgxN2ZiZWZhNjBhNWRlOWQxYzFlNTExMDE2ZDM1YTA3ZiBsZWdhY3ktdHJ1bmsKKzEwMjg2IDRjNmRjMDdmMWI2YTYwY2NiZmMwYzExZTgwY2QxNWNkYzQyMTgzMjYgbGVnYWN5LXRydW5rCisxMDI4NyA4MWY5ODE4ODAxMmU0MTlkMDgxOTY4NDkyY2NhYjUzNzRlYmRlNjNjIGxlZ2FjeS10cnVuaworMTAyODggNWQxNWY0ZmQ2ZDY5ZmVlZTYzMTQ2Yzc0MTE0YjBkY2M4YTM4OThhZiBsZWdhY3ktdHJ1bmsKKzEwMjg5IDcwY2NiYmNjMTBjY2FkNDE4OTE3ODE1ZGRjMmM4YjE0ZGNlMmNkOTYgbGVnYWN5LXRydW5rCisxMDI5MCBlNTgwYWZhMWM4MzM4MGIyNDQyZGU2ZmUwODVmMTI2Y2UwY2ZkYmI0IGxlZ2FjeS10cnVuaworMTAyOTEgOTk2N2JlMWY0MDJiMWEwNjEzNDlmZTMzODhhMzE4YWEyY2IyOTFjMCBsZWdhY3ktdHJ1bmsKKzEwMjkyIDQxMmU2YWIwM2M2ZmZhZDk5MDgzMTcxZWFmNmUzMDAwZDQxMmM1MGIgbGVnYWN5LXRydW5rCisxMDI5MyBjMDQ3MDg0NGM3YmM3YzZlNWI3MDgwZTk4M2Y0YzIzOTRlZTE2MGQyIGxlZ2FjeS10cnVuaworMTAyOTQgNjQzMmNiYWQ4MjhkYzljOGJmM2E0NTU0YjU1NWEwY2IyZTMzZjU0ZCBsZWdhY3ktdHJ1bmsKKzEwMjk1IGE3MjdhZTZiZmU1MGM1ODgwNTRkMDk2MWNiMWEzNmQwN2Q5MGI4MTQgbGVnYWN5LXRydW5rCisxMDI5NiBjYzQ5NDJmMGVjNGM5NGNiYzk3YTllMGE0YTk0MDk5MmU0ZmZhNDIzIGxlZ2FjeS10cnVuaworMTAyOTcgNTEzMjI1OGRhNzhlOGFmN2JlODkzMzU4NzkyMmEyYzUxNTAyNmZlYyBsZWdhY3ktdHJ1bmsKKzEwMjk4IDQ2MTczOGFhYTUzM2QyY2NjOGJlOWFkODVmYjVhODU0NThlMzJjYTYgbGVnYWN5LXRydW5rCisxMDI5OSBhMzViNTQxNGZkZDliYjZiOTc1MTMzNGQ5ZjA2YmJmMDFjNDU4MWI3IGxlZ2FjeS10cnVuaworMTAzMDAgZDdhYmFkNzBmNjgxMTRkNDIxYzY1MTQ0ZjQzMzdiMmQ3Zjk5ZWVjZSBsZWdhY3ktdHJ1bmsKKzEwMzAxIDIwOTBmOGY5ZDVkMmQ0OTYzNWM2MGQ3ZjA2OTZmMjNhZjVmNDYyNGUgbGVnYWN5LXRydW5rCisxMDMwMiBlZDg1NmZjY2Y2Mzk3ZmZlOTQ3Y2FjMDBmNjc1YjgzOWNlYTFhMzZiIGxlZ2FjeS10cnVuaworMTAzMDMgZDFiMjM1MDRiZDk5YzNiMTQzOTZjNWQ4ZDlkMzA4ZDlmMGRmMmQ0ZCBsZWdhY3ktdHJ1bmsKKzEwMzA0IDA1NzVkNWExNzIxODU2ZDIwMWFiNmEyNGE1OTkwOWQ3ZGRjZDk1N2EgbGVnYWN5LXRydW5rCisxMDMwNSBiODVhNjc1YjY1MDNlNTg1OTc5OWE4N2IwODcwNTA1ZDk0ZmEyODQ0IGxlZ2FjeS10cnVuaworMTAzMDYgMjlkYzVkMTkyOGJmZTFhMjE0YzA0ZjRiY2ZhOGFhNDEyNTYzOTVhMyBsZWdhY3ktdHJ1bmsKKzEwMzA3IGI3MWQxYmRkMTg3ZGVlNmM5NzNhZWNmNGZkN2ZkYmY1MjY2YTgxMmMgbGVnYWN5LXRydW5rCisxMDMwOCA5ODZhNzRjM2EyMmNhMGZhN2U0MzI0YzA3M2U1NDM1OTk5NmZkOTM0IGxlZ2FjeS10cnVuaworMTAzMDkgOGYwZTI5Y2U1OWVmNDE3OGU3Y2ExNTA4YmRiMjExOWJlY2ZlZTdjMCBsZWdhY3ktdHJ1bmsKKzEwMzEwIGUyZmIyNTc4NDUzMDQ5ZTA5NDc3MmFkNjYxM2FkZjE4ZjU3NjllNWEgbGVnYWN5LXRydW5rCisxMDMxMSAzNDI5OWUwOTZlMzUzOTBhMzQyZGM3OGQ4NmI5ZjQzNmE2NDhmNmE3IGxlZ2FjeS10cnVuaworMTAzMTIgMWY4ZjIwMDJiZmI5ZjA1YTUwYTU3YWVmNzllNDYyZmI5YjhmYTU2YyBsZWdhY3ktdHJ1bmsKKzEwMzEzIGQxNGI3MTIwYzU1MThkMWVkYmUzMzRjNzJlY2QzZjY0ZTVkMmQ3NmUgbGVnYWN5LXRydW5rCisxMDMxNCA2NDNlOTcyOGFhNDkyZTg0NmU1YTkxNjkyNTY4ZDM0MDZjOTdmZTk0IGxlZ2FjeS10cnVuaworMTAzMTUgMTQ3YzEwNjdjYTMzZDE0ZWE5YjU5NWE5Y2I3MzczNzZiNmQ5ZGM1MCBsZWdhY3ktdHJ1bmsKKzEwMzE2IGNhNzM1Yjg0YTkzOWE1YTM0ZDFlMDMyOTQ0MGRhNWM5MGJmOGJlMTUgbGVnYWN5LXRydW5rCisxMDMxNyA5OGY2ZWQxMzFiNzVjZWY0M2Y4NjcxODVkYjNkNDVhMzk2MWYxNDI2IGxlZ2FjeS10cnVuaworMTAzMTggNTRkOGU4NWQzYzI4N2RjMjU0MDc3ZTFkYjcyYWQwN2E0ODYyZDQwMiBsZWdhY3ktdHJ1bmsKKzEwMzE5IGZjOTUwNDMzZDE1OGU1NmZkMTQ1YTU0NzcyOWFhYjM1ZGVjMTFjYjUgbGVnYWN5LXRydW5rCisxMDMyMCBkNGY1MzIxYjlkOWU4NTZmYzJjNmYwMDk3YTcyMjM5YTAyMWU0YzJlIGxlZ2FjeS10cnVuaworMTAzMjEgYWFhMjA0YTA1Zjg0MjMyNzE1MWQyOTNjNTE0MDgyOWU5ZmY0N2RkMCBsZWdhY3ktdHJ1bmsKKzEwMzIyIGNhMTg1MDQ4MWUwMmE0MWEzMmIzODgzNjliMzg5ZWFkNTRhZDM0NDYgbGVnYWN5LXRydW5rCisxMDMyMyA0OTFlMzAwNWY1NGI1NDY4NmNiZjIyZmY3NDkwOTFmZTgxMTcyYmQ4IGxlZ2FjeS10cnVuaworMTAzMjQgYWFjNTg1ZmU5NDUyZmJkZWZjODZmNGIwNzA5MGMyYmZjOTRmN2FhZSBsZWdhY3ktdHJ1bmsKKzEwMzI1IDY3MDlhMDJmNjcxODAzOGRmMTMyZDFlMWM3NTExNzFkYWNiMDI5NjIgbGVnYWN5LXRydW5rCisxMDMyNiA5NDliNTk4MjAxODVhZjkxMWI4NzRkOTJiOTM2OTg3NDcwNzVjM2U2IGxlZ2FjeS10cnVuaworMTAzMjcgNmM2YTQ4YmM1ODE3M2U3MDRmNTZjZjhkZWFlODU4NGJlZDg3NWZlZiBsZWdhY3ktdHJ1bmsKKzEwMzI4IDNjNGY3MzZkNWUwMTBjY2Q2MjdjNTJjNWRjM2JmNTM0NGVkYjMyMzIgbGVnYWN5LXRydW5rCisxMDMyOSA0ZmJlNmM5YzVkODExZmQ0ZjNlY2NjNDU2ODVjMjdhYzg5ZDRhNTc4IGxlZ2FjeS10cnVuaworMTAzMzAgOWQzYjQwMWJhYzZkZTJjNzA5M2RiODc2ZGM2MmZmNzU3NWM3OWE4MSBsZWdhY3ktdHJ1bmsKKzEwMzMxIGRiMWU0OWQ1MWZlMTJjMjc1OGY3OTEyYTBiNzg4MGE5OGE3Mjk1YTggbGVnYWN5LXRydW5rCisxMDMzMiA2ZTRlYTBlZGEyMmVjYzliZDJmODAzZWQwNzllYzUxZWNkMTViMjQxIGxlZ2FjeS10cnVuaworMTAzMzMgZjM0YTY1OGU3YzE1NjViNjE2ZTRmOTE2Y2QzMjM5MzIyMzFhYjZjNCBsZWdhY3ktdHJ1bmsKKzEwMzM0IDI2MWM2MzliOTg0NzMyNTQ4NzUyNTYwZGNiNTZjMGVmMDMyNTc3YTUgbGVnYWN5LXRydW5rCisxMDMzNSAxZjFmOTQ5NTA1YWYwNGExMThlZWU4Yzc3YmFhZDcyZTZkMTc1MmJhIGxlZ2FjeS10cnVuaworMTAzMzYgYjc1YjJmOWQzY2UxM2U5NmE2OGQzMDY4YzVhYTRkYzljMmRkNzQ1NiBsZWdhY3ktdHJ1bmsKKzEwMzM3IDk1NjcxOWVhNWY1YTZkYmNhNGZmZjkzMmZiYTM2NzBlZTA0ZjIwMmUgbGVnYWN5LXRydW5rCisxMDMzOCBiODQ3ODUwNGI3NzliYjI3N2ZjZDM4ZTJmMmNjMDBjNzY4MmM4MzAwIGxlZ2FjeS10cnVuaworMTAzMzkgODQyZWQ2YmJkMDY2MGE3YWE5NTI1MjU0ZGViYzBhYmE0YzVhY2ExNiBsZWdhY3ktdHJ1bmsKKzEwMzQwIGIwYjMzYTM1N2M3OWVkNjQwMTYyZmI3OWRiNWQ3YmU0OGE1NDBhZDMgbGVnYWN5LXRydW5rCisxMDM0MSA5ZTEwYzg2MmFiZmMxYTI4MGI4YmFhYzZlZmFhOWNlMTM0MTg5YzU2IGxlZ2FjeS10cnVuaworMTAzNDIgZTg1ZDZkYjdiZjk3NzUwYTQwYjQ0YTg5MjI5YWFkYTY5OTlhNmM3YSBsZWdhY3ktdHJ1bmsKKzEwMzQzIGEzYWRiMTZmMDg5NWYwYjI5OWNiNzExMjYyNzFhNjk3MGU4NDRhZTUgbGVnYWN5LXRydW5rCisxMDM0NCBkNzczZGIwNjM1NWMwNjk4ZDFhZmQ3NWM3MGMwODNmMDBkYjZhZThmIGxlZ2FjeS10cnVuaworMTAzNDUgMjFhN2UzYzMyNGRmN2ZhY2U5ZmEwMDNjYTk3YzA0Y2QzYmVkNDhkNiBsZWdhY3ktdHJ1bmsKKzEwMzQ2IDE3NmI5OWU2OTY1YmU5MzI2ODYzMWVhZjVlOGMzZmQ0NjNkZDQwYzYgbGVnYWN5LXRydW5rCisxMDM0NyBiNjlmYTlkMTQyY2E1YTc4YzNkNmZlZmYyNDAwODg4NTc5NWRlNGUxIGxlZ2FjeS10cnVuaworMTAzNDggYzc2YWRhZjUxMmQ2NTUzYWViZjFmNDA3NTE3NDk4YjQ4MTkwZDA1MyBsZWdhY3ktdHJ1bmsKKzEwMzQ5IGE2MWZkYjhhNDQ5ZWUxZjAzNjNiYmVjMGU4MjhmMDMyYzBkZTVjMDAgbGVnYWN5LXRydW5rCisxMDM1MCAzMWZhOGEwZmQxNzg3MmU0MmZkYWQ3NzA5NGQyMTkwNjU1YjIxMTI2IGxlZ2FjeS10cnVuaworMTAzNTEgNmJjNGY4MDcyNWQ2ZTI4ZGI0ZjZkMzJmODc1NDkxZDg3YjE4YTY5MCBsZWdhY3ktdHJ1bmsKKzEwMzUyIGQxNTE4MWEwY2ZiYWI4NjI1YTEyODkyZGY0MWRhNDVhOWJhYzM2NjAgbGVnYWN5LXRydW5rCisxMDM1MyBiNWVkZTEzM2Q5MjE2YWVmZDQyOGM4NTEzYTNhYmQ3ZTEwNGRlMTIzIGxlZ2FjeS10cnVuaworMTAzNTQgZDA3Yjk3ZDI5YTllMzJhMTJjZDE1ODM5YTMwOGQ0YzVhNWRmN2NjNCBsZWdhY3ktdHJ1bmsKKzEwMzU1IDM5MjM4OGM1MmUyMTcxN2VmMjNlM2U5ODBhY2IwYzA2OGNlZjVlZWEgbGVnYWN5LXRydW5rCisxMDM1NiA4ZjQyNWY4ZjRiZTJkZjVkZTBjYjc3YjQ3NzVjNmFmMWZjYTViYjJhIGxlZ2FjeS10cnVuaworMTAzNTcgMGE4NzNmMmI2NGY0MTgyYTNiODIwN2M1OTdhYjhmYTI0M2I4ZjM2NSBsZWdhY3ktdHJ1bmsKKzEwMzU4IDhlNTIyMzY4MGE5ZGE0YzY4OWZiZGIyY2JjNDA1MmE4ZWVhZTBjYjUgbGVnYWN5LXRydW5rCisxMDM1OSBhYzJkMWMxZjE5NzFmMmE5M2RlZDIxN2ZjYzc1NGE2ZGYyMGY4ZGFhIGxlZ2FjeS10cnVuaworMTAzNjAgNDI3YTliMWM5YWJkOGUxMjBlMmJmMGJjOWU3ZWQ2ZjdhNmY0MDFjZCBsZWdhY3ktdHJ1bmsKKzEwMzYxIGJkZTY5ZGZjMjI0ZjBlNzM3Yjg2NjgwNjNkY2Q1NmM2ZmQxYzhkYjEgbGVnYWN5LXRydW5rCisxMDM2MiA2MzcwZjE1OTNjNzIwYjkyYTEzZGY3MjdiOWYzMWNkNWUyY2JiNWYzIGxlZ2FjeS10cnVuaworMTAzNjMgYjBmYmU2YjZkY2JmMTFiMWExMDIxMmMzOTczYTM3ODQyZDY5MjIyNCBsZWdhY3ktdHJ1bmsKKzEwMzY0IGU4MzNiZWU1ZDA1ZmIyNGU3NDAwODJkY2RkNjNhYWQ4ZGIyYzFlYjYgbGVnYWN5LXRydW5rCisxMDM2NSBkZmM4ZGU4ZjFlYzNlNjliMjgyM2NmZmRmZGM2MDk5ZThiYWU4NzQ5IGxlZ2FjeS10cnVuaworMTAzNjYgNDJkM2YxZjcxYzU2Y2ZiOTliOWJlYTAxYWNiZGJkYzBhYzAxYzNhMCBsZWdhY3ktdHJ1bmsKKzEwMzY3IGFlOTc3OGM0ZmZjYWY2MzY4ZTZlMGVhOGVhZmUyODk1MmY2NGNmMmIgbGVnYWN5LXRydW5rCisxMDM2OCBlZmJiN2U1N2U2Zjg2ZmMwZjYxMDBlNDQ4NDIyZDg0NTQyODRjMTk0IGxlZ2FjeS10cnVuaworMTAzNjkgZjhmNjYzYjQzMmI0MzU2YThiYWUyMDcwYTY2N2JiMGU4OWVmZjczNSBsZWdhY3ktdHJ1bmsKKzEwMzcwIDQxYzdkNTI0M2JlOTMxZjgzZmVkNjFiNmNmMjM5ZWQxZTk5NTMyODUgbGVnYWN5LXRydW5rCisxMDM3MSA4YTM4OWM4ZmU2ZWZkMmEzNWJhMzI3OTZkZTlkN2Y0MjMwZTZlYmE5IGxlZ2FjeS10cnVuaworMTAzNzIgMzcyMzRlMWJiNzVmZmRkZWI4NTMxYjU0ZTY4ZmNjNGZkZWY5NWQ4MCBsZWdhY3ktdHJ1bmsKKzEwMzczIGRiZDJkZTI2YzhkMjI1ZmZlYzBmYWJmZDllNzhlYTlkZjA5YWUwZTEgbGVnYWN5LXRydW5rCisxMDM3NCA4YzkzNTQ0Yjk1ZTRiM2MxYzE1Njc0OTg2ZjBiOWQ5YTI3MGQ2OGEyIGxlZ2FjeS10cnVuaworMTAzNzUgMjY3Mzg0ODQzN2MzNGQ0ZWQzYTExMDRiNjhmMjZjY2RlZjRhYWY5MyBsZWdhY3ktdHJ1bmsKKzEwMzc2IGU2MDY2YjgxM2E3MTRkMTVlOTZlNDIxNzUzMzJmNDlmM2IwZjNmOTkgbGVnYWN5LXRydW5rCisxMDM3NyAyOWFiM2Y2MDJkMDAyM2I1YzE5MzczMjZhNDc4YjhkYjUxYTE3OGFlIGxlZ2FjeS10cnVuaworMTAzNzggZGY2MzZkZWQyZTcwMmJkZGZkZjg4MjJhYThiOGM3Mjk2NGFiODZkNiBsZWdhY3ktdHJ1bmsKKzEwMzc5IDZhMDI5OWViY2NlZjkwZDAzZDRjODAwZmUzYWUxNzRiNTRjNmE4OWEgbGVnYWN5LXRydW5rCisxMDM4MCA4ZjNiYjBiMThhODJiY2U0MDcxOWM5NDRkMTMzMGZhOGI0MmNjMTcyIGxlZ2FjeS10cnVuaworMTAzODEgMWVmZWU1MDMyNTllNTFhNDhkZDAxNjYxMDNhZjNjOTU1MjY1MDk2ZiBsZWdhY3ktdHJ1bmsKKzEwMzgyIDlhMjQ2ZDc0ZmNiNzUyYTE0NmQzNGI5ZjhhMTE5MWM4YTljYjcwYTYgbGVnYWN5LXRydW5rCisxMDM4MyBhMTEwNDIxZDg2YjczMTQwMDBmYzE4OWZjMGU3Y2VhZmU3NGJlZjVmIGxlZ2FjeS10cnVuaworMTAzODQgMTczNjhjOTJjNzY5YTUzYmM0MzljMDM0MTEwMTVlOTUyYzY2NDBiYiBsZWdhY3ktdHJ1bmsKKzEwMzg1IDNiZDY2OGRmNmVmZGMyZDYzNTEzZjhlZjZlZDAyNzlkNzBiYzk1YjYgbGVnYWN5LXRydW5rCisxMDM4NiA4MGIyYWM2MWZlMDM4YThiYjY5Y2IwZDM5NDQwNDQ5YTQ5OTE3Njk0IGxlZ2FjeS10cnVuaworMTAzODcgNGI1NjY2ZGZmNWU2NzI0OTY3YTc1MzliOTI1MWM2NTExNmY4ODVmOSBsZWdhY3ktdHJ1bmsKKzEwMzg4IDNmOGI1NTY0ZjBjN2MyOWUxMDdhNTQ0MTQ1NzM4ZGIzODcwM2IxNWEgbGVnYWN5LXRydW5rCisxMDM4OSAxYTFkMzE0N2IwMjdjNGI0ZmU1Nzg3NzI2MTk3NjkyNWRlZjVjYTVkIGxlZ2FjeS10cnVuaworMTAzOTAgNWVhZmQzZWRhMGFmNGNhZWUwYjYyMjUyNTEzZmJiZDdlMDVhNzA2MSBsZWdhY3ktdHJ1bmsKKzEwMzkxIGI3MWExMjU3NzY0YjAzMjU5MmU2MzcwMjVlY2Q2NTcwMjY4M2U5MDYgbGVnYWN5LXRydW5rCisxMDM5MiAzMWY5ZTI2NzUxOTllMTk1NjJkZDhmMTcxM2JjYjMyZWZkYzVlYTBhIGxlZ2FjeS10cnVuaworMTAzOTMgNTQxOGMwNzMwZjAwOTYxNjJhNWJkZTVlMDIxZDNkZTkyZjExNDY3YyBsZWdhY3ktdHJ1bmsKKzEwMzk0IDY0ZjNlOWViZjIxYWNmMzI2ODQxMjUwZTViYzEzMjM0ZjUzMmYzNjAgbGVnYWN5LXRydW5rCisxMDM5NSAxZGFlY2Q2NWE3YzVlZmM5ZTBjZDEyNWM0YzQ4YjZmOGU4YWQ4ZWY4IGxlZ2FjeS10cnVuaworMTAzOTYgYmE5YjFiNGFlYWI5ZWU4YWFlNWU3ZWE3ODRiZmRkNmEwMmJlMTQ0MyBsZWdhY3ktdHJ1bmsKKzEwMzk3IDEzMThhNDc0YmFhMDZkZDY3ZmE2MTJlZDFhM2IzN2VmMDYyMjFmNzYgbGVnYWN5LXRydW5rCisxMDM5OCAwOTA1Zjg2NjY4MDdmMzM4NzQzYTc2ZjUzODIxOGMyMGM5ZmVjM2JhIGxlZ2FjeS10cnVuaworMTAzOTkgNWZhYjU5ZWI0ZmE1YTFjZjQ3MTlmODViYmE3MDRkMjRjNWNhODM4NyBsZWdhY3ktdHJ1bmsKKzEwNDAwIDZiYzA1MzVkYmY1Mjc3OTJmOGRkYWZhZGYzMzc3ZDQzNDQ0ZGEwOTIgbGVnYWN5LXRydW5rCisxMDQwMSBkZGUwZGZmYjFhMDhhYWU0MTg5YmIzNjBlMGQ0OTVkYjI3NjRlZWRhIGxlZ2FjeS10cnVuaworMTA0MDIgMGJkY2VkY2QxNTQ5Yjc1OTUxZWMzZWJlYzBmMTJmOTA0N2M5ZTBjNSBsZWdhY3ktdHJ1bmsKKzEwNDAzIDZiZTdhYjI0NmEwNWI0YzgxYjEyNjNhOGFhNmQyMDNkNTE4OTcyZGMgbGVnYWN5LXRydW5rCisxMDQwNCAyM2NjNmFjNWViYTZjMDc2MzFjN2M3NmM0ZTU4YTgwYWE4NGU4M2NmIGxlZ2FjeS10cnVuaworMTA0MDUgZGU5MGJiZTg1MDEzN2ZlMWVmYjc0YjViNzA4Y2I5ZGUwMThlMGJkNyBsZWdhY3ktdHJ1bmsKKzEwNDA2IDMzNDA3YzBlZjE0ZmZlNTdjMTNjNTVlNWYwMDQwYTI2ZjQ5MmI2ODQgbGVnYWN5LXRydW5rCisxMDQwNyBlMjlkNDM1YWIxNDJmMWU4NWRlY2MzMWM5ZTkzZjg2NzdmN2U5YTQ4IGxlZ2FjeS10cnVuaworMTA0MDggMTEyNmU3MmU1ZWU5YzlhNDlhMWIyZDdjODdmYzM1YjMwNTFjZTllNSBsZWdhY3ktdHJ1bmsKKzEwNDA5IGVmMzAwZTZiMGM3MWRhMGJkNWE4MWVjZDIwOGJjYjZkNzNjOTliNjkgbGVnYWN5LXRydW5rCisxMDQxMCA5ZDhjMDY2NmIwY2JiYzE0ZjRiYzg2OWE3MDUyMTkyMDJkZGE5NzAzIGxlZ2FjeS10cnVuaworMTA0MTEgODY4ZGM4NGJiNWIyOWFiZTJmN2EwZDYxNzY4YzY5MDA5NTJkMDM2NCBsZWdhY3ktdHJ1bmsKKzEwNDEyIDdjN2ZmMWEzNjUyMTdiNDUzYWUxNDUzZDQwOTQ1ZjBhZjliODBmYzMgbGVnYWN5LXRydW5rCisxMDQxMyAwNTIyYWIyMTBmY2JiMDhhNzY1MWZiYzBhNTBmMjdjNjhkYTZhYmUwIGxlZ2FjeS10cnVuaworMTA0MTQgYjJhZGNkNzNjMTUwYjgyYzUzOTk3NzRmODgwNDFjYzVkZDlmNjU5MCBsZWdhY3ktdHJ1bmsKKzEwNDE1IDcwOGRlNGNiOTZlYjIxYmRhYzhiZjY1ZGE0MDk1OGUyMDBkM2Q3NWEgbGVnYWN5LXRydW5rCisxMDQxNiBhYTdkNjlkNjdjODFkN2RhMzkzM2FlMDg1MGM0ZmUyYzFjMWZjYTQ4IGxlZ2FjeS10cnVuaworMTA0MTcgMWYzOGEyYjU0OGJmOWQwNmE2YTI1MWU4NGIwNWJlNjA3ZmI3NDVkNCBsZWdhY3ktdHJ1bmsKKzEwNDE4IGYyMjNiZjYxYjRlZTAzYjhlZjRlZGYzOWU5OWI1ZTY1MjExMWY0YzAgbGVnYWN5LXRydW5rCisxMDQxOSBjYTRlMjVlZjYxZjgwNjliZDY5YTYyNDNjZGNkNDVlM2RjYmI4NDE2IGxlZ2FjeS10cnVuaworMTA0MjAgZDNlYzJlNTFmNjdhMjFiOGU1NDMxZTE0YzNmZTczNjU5Y2RhMGFhOCBsZWdhY3ktdHJ1bmsKKzEwNDIxIDA1N2U0MjJkMmM2MTA5MDA4ZTIwOTUyN2RiMGQ0NjhkYjU1OWVhMTMgbGVnYWN5LXRydW5rCisxMDQyMiA5MWVjZGE5ZDUyNDUxZGY3M2VmNmQwNTEwMGNjYTlhMzYzZTg1YzUxIGxlZ2FjeS10cnVuaworMTA0MjMgZWUyYWFhMmY3MjJhODQ3Y2M2ZGZmOTEyMjZmZWNhOWY5MDI3NmMwOCBsZWdhY3ktdHJ1bmsKKzEwNDI0IGIzMWFiYzEzMWMzZGY5NDNmMDJmNTY0M2I1NTQ1YmUzNjNmY2NhZmIgbGVnYWN5LXRydW5rCisxMDQyNSAxNjJkYjNkMGM5MTY3ZTA5ZDZkNzY5YjA3YjEzM2JiMjEwMjA2NmI4IGxlZ2FjeS10cnVuaworMTA0MjYgZGMxMzJjYzM5NTczYTBlYTZkZjJkMjZjOTk5MDllYWZiNThjNWYyZSBsZWdhY3ktdHJ1bmsKKzEwNDI3IGFkMTE0NjIwZjhjMjc4MmQ1NzdkYjJkMDQzYzE0NzUyZDE5ZTQ4ZjcgbGVnYWN5LXRydW5rCisxMDQyOCBhMmMxYjNlMTc5NTI2ZGQyNGQwMmJkYTc3NGI1MmQ0M2JkNTE0NDc0IGxlZ2FjeS10cnVuaworMTA0MjkgZjA2OTEzODA4ZmUxZGFjZTc1ZTEyMjA5Yjc2NWNhZmYxYzE3OTY4NSBsZWdhY3ktdHJ1bmsKKzEwNDMwIDU4ZDY4MTVhZjAwMmU2NzhmZWI4NzNhOTViZTc4NjY1MDc5YWNiNDAgbGVnYWN5LXRydW5rCisxMDQzMSA5Y2JjYjU5MzFkODAzZDY4OTYwMDFlZWU1ODljZmZjNjYzMzhkNzBjIGxlZ2FjeS10cnVuaworMTA0MzIgZjQyYjc1Nzc1NWViMzJhYmViNmQ4MjQ3ODcyYmM3NDJiNTYyZDQzYSBsZWdhY3ktdHJ1bmsKKzEwNDMzIDcyZDk5NjE1NDBkODViMjAwMzY5NDlmMTRiNGE0MWMyODQ2MmY2NWUgbGVnYWN5LXRydW5rCisxMDQzNCA5MmUzNjExNmFmNDIxYmNmZWVjOWY5MDZiZmJkYmM3NmQ5OThlZGFjIGxlZ2FjeS10cnVuaworMTA0MzUgZWJkZDQwZTI4MTYwMjVjOWY5NDMyYmE5YTM5YjA5M2UwOGIyNzZkNiBsZWdhY3ktdHJ1bmsKKzEwNDM2IGNkOWU2NjRhMWE5ZmE4NGJjYzYxZDJhZDgxZTFlMmQyN2ZkNGJmYTggbGVnYWN5LXRydW5rCisxMDQzNyBmYzA4ZGEyYzlhMGZhN2Q5NjgyZTExZDEwZTVjZDM5YWI1OTcwYTAzIGxlZ2FjeS10cnVuaworMTA0MzggOGYzNjhkZjE3M2U2ODhjNDY0YzkwNjM2NDdkYmM1MGIxOTFiZTNkNiBsZWdhY3ktdHJ1bmsKKzEwNDM5IDllMTEzYWEzNzU4ZGExMDQ4YzdhY2UzMzA3ZWQyNzdjYWFhNzg0Y2YgbGVnYWN5LXRydW5rCisxMDQ0MCBmZWM4ZWIyYTM4MGRkNTE3MWM2NTUwOTY3NjU1NzA3ZTU0NzEwYTk3IGxlZ2FjeS10cnVuaworMTA0NDEgOGNhMDEwODMxNDBjYjk5MmQxMmI2Y2VkNTIzYjE2YmYxMzZiMTQ1MSBsZWdhY3ktdHJ1bmsKKzEwNDQyIGNjZDFjOTYzZTUwOTVkZGU3NDRlYzRkYTBjNDllMjA5MmMyNGVjMjUgbGVnYWN5LXRydW5rCisxMDQ0MyBkNmZjYmQzNzE4NTVlMzY0N2YxODU5NzFhMjI3MTA0YjdjZGEzN2FiIGxlZ2FjeS10cnVuaworMTA0NDQgYWZkNTRmODk1ZGMzMDMwZGQzMGQ4MDk3ZmZiYjVlZTVhNjA5YjVlNCBsZWdhY3ktdHJ1bmsKKzEwNDQ1IGQxZWExM2NmNDZmN2JjNWFjZmU0ZTNiZDJiMDI1Y2RiZDdjYjZjZGIgbGVnYWN5LXRydW5rCisxMDQ0NiBlOGQwYjg3YzhkNmIxZmIwYTIyZjU3ODI2M2FiZDk4ZjhhMTFlYTgwIGxlZ2FjeS10cnVuaworMTA0NDcgOGMyNjhkMGU4ODIyMDU0Y2NiNTNhOGNlMjlhZDcwMjY0OTI2YmFkOCBsZWdhY3ktdHJ1bmsKKzEwNDQ4IGJiZDJiNWQ4ZDBiNmMyMmJjYTRmN2UwMmIwNGUxZGZhYWQ5ODVkNmMgbGVnYWN5LXRydW5rCisxMDQ0OSAyZWY2ZTA0MjQxNzljYWZmOWEzNmU3NzU4ZDBhNzE3MjJhYzllNWY0IGxlZ2FjeS10cnVuaworMTA0NTAgMzM4ZjFkZWY0MzcwOWJmNGYzMmQ1YjhkMDFmN2Y2ZjY0NmI4M2JjZSBsZWdhY3ktdHJ1bmsKKzEwNDUxIDRjZWVlMWVmOTliMDMyODEwZmJiNjIzN2RlYjAxODc3OWRlMGI3MzEgbGVnYWN5LXRydW5rCisxMDQ1MiA0NjkyODg0OTljOWJkZTlkNTNiZjJkZDRiNDEzMzRmZjFiNGU0YjM3IGxlZ2FjeS10cnVuaworMTA0NTMgZmYxMGIwMzI4ZmYzNzUwYmIzMDMzMTM1ZDA2MzI2NGY5M2E3OWY5MSBsZWdhY3ktdHJ1bmsKKzEwNDU0IDA5MTQ4MWRiZTEzZDdjNTEyNzk4MDdiMmZmZGJjYTkyMWMxZTI0NWEgbGVnYWN5LXRydW5rCisxMDQ1NSBjMTJjNjYxZmQxNGVmNGI1N2Y1MzE3YTk0YTIzYzJiYzY4NWY2YmNjIGxlZ2FjeS10cnVuaworMTA0NTYgM2RjNWQwZmNiMTY3YWMxYzgzNWI0YTM0OWQxMTFkYTM3ODkxYTZmNyBsZWdhY3ktdHJ1bmsKKzEwNDU3IDc1MjIzNTg0NjE4MDQxNGRkZDg2YzE1N2UzNzA0ZjI1NDcyMTgyN2QgbGVnYWN5LXRydW5rCisxMDQ1OCA1MWQzMWZjYWVlZjNhMjEwMjQ4MDgzZGY3OWRiYzY1OWRiOGViZGRlIGxlZ2FjeS10cnVuaworMTA0NTkgMTQzYzU1NmRlYjJmODU1OWY1NjRkZTE0N2UwYmQyYmI2NDUxYjExZCBsZWdhY3ktdHJ1bmsKKzEwNDYwIGNjNDc3MzNiNGRkMjJjNTVkMjU4OTg3YWYxYTBiNjFjNTA2NWU1NzUgbGVnYWN5LXRydW5rCisxMDQ2MSA4NWU4ODZkYjE5YjA1OThiOTJjZDFiNWQ3N2RhM2NkZDQzNWJjMDRjIGxlZ2FjeS10cnVuaworMTA0NjIgMDk5NjNhMmEyNGRiMDg5OGU0M2JmMzMxYjMxNWFhYzRkNzg1ZDgxNyBsZWdhY3ktdHJ1bmsKKzEwNDYzIGE5MDlhMjg2OWFjNTlhMGJlY2MwZjY3M2E0MjYxZDUxMmY2MjBjMmQgbGVnYWN5LXRydW5rCisxMDQ2NCAwNjgzMDNmOTI1ZWE4NzJiZDExY2JlOTJmODI3YTY5ZDM0MDYwMmMyIGxlZ2FjeS10cnVuaworMTA0NjUgMWQwZWIyZTk2ZDc2NzllOWY3ZjQ2ZTIwYzc5NDhiNjBlYjFiZmM3NyBsZWdhY3ktdHJ1bmsKKzEwNDY2IGFiNGY2NDU2MWZiYTMyODgxMzRhNzc1YzM0ZDZkZjk5MWM5NmQyNTcgbGVnYWN5LXRydW5rCisxMDQ2NyA5NzFiNWJiZDkyZWMwMjBlYWJjMGM3MzhmMWJjNzdkNGM1YWNlMzljIGxlZ2FjeS10cnVuaworMTA0NjggNjk3ZGY5M2U1ZGRiNDc2NGNiNDE1ZjY3MWMxZTE1OTFjYmJlM2I2YyBsZWdhY3ktdHJ1bmsKKzEwNDY5IDAyNjNkMzMyNGYwYjJlOThlZjFmNjVmMjc0YzdjMmFhYmY5ZTc4NzEgbGVnYWN5LXRydW5rCisxMDQ3MCBiOWViODA1NTc5YmE4NjMxYjkxMjg2ZTMxY2I3M2M1OWFjZTE2NDI4IGxlZ2FjeS10cnVuaworMTA0NzEgZGUxMDU2NmRlYzVjZDFjMjg2ZTViZDc1ZWQyOGJjOGRmNWU5Yjc2MiBsZWdhY3ktdHJ1bmsKKzEwNDcyIDZlNTA3OWU4ZmE2ZTA1MzNkOTI5OGJlNjc1MTEyZjZmNGVjMzY4NWIgbGVnYWN5LXRydW5rCisxMDQ3MyBjZjBjZjIxYjQ1NDU0NzcxYzdlZjVjZTY4N2QwYzlmODkxYjQ1OGQ1IGxlZ2FjeS10cnVuaworMTA0NzQgNmIzZmQyNGNjMDc3NmYzMmExOGY0YWYxYTIxNTZiMTljMjRhMTMwOCBsZWdhY3ktdHJ1bmsKKzEwNDc1IGU4YzRiM2QzODZlNGYyZDMzNzJkOTVjMjFjZGY5MDk4N2Q0OWZmMjYgbGVnYWN5LXRydW5rCisxMDQ3NiBkYWZmZGU3YTY4OTE3N2YxYjExYTIwODliNjEwYTlhNGI5ODRhZGJiIGxlZ2FjeS10cnVuaworMTA0NzcgODkzNTlkMDcyZTcyN2U3MmE2ZDY0NWYxZjlkYzc4ZTdiYTg1NTA5ZSBsZWdhY3ktdHJ1bmsKKzEwNDc4IDFkNTI2NTA3Y2Q5ZWM3M2UwMDliYzY5NDJhOTNmMjhhMzM0ZmQwYjYgbGVnYWN5LXRydW5rCisxMDQ3OSAzZDFkOWUyNWViMjJjNjMyNTdmNzlhOWFhNjViOWUyN2NhNjI5ZjU4IGxlZ2FjeS10cnVuaworMTA0ODAgMDgzNWI4ZGY1NGY4MGQyMzU0NTFlMmU2YTRiNDZiNDY2Yzg4NTg0NiBsZWdhY3ktdHJ1bmsKKzEwNDgxIGJkZjU3Yzg0ZGY2YWI1MWNjMzRjOGZjYzRjYjczYzBkMWQyOTczNDggbGVnYWN5LXRydW5rCisxMDQ4MiBjOGEzMTExNDQ3MjY3YTE0YzMzMDE4YTFiMzE3NGYyOTBlMGI3NzkyIGxlZ2FjeS10cnVuaworMTA0ODMgYjQyMGFlODUyMTNjNzlmMDVjZGMzNjk1OWM3MWExYjA0NzcwZjhmOSBsZWdhY3ktdHJ1bmsKKzEwNDg0IDVkYjM0NmU5YzhmNTYwZGNlYjE2YmFhYmU0ZGFiMGVjNjQyNzFmODQgbGVnYWN5LXRydW5rCisxMDQ4NSA5MDAzMjA0OTFiOTM2YzlmY2EzZjcyMzg0NjRkMDBmY2Q2YWM2M2I5IGxlZ2FjeS10cnVuaworMTA0ODYgZTk4NjY4NjgzYmVkNjM1OGY5YzVhNzMzOWU5NDQwYjdiNGYwMTA3NyBsZWdhY3ktdHJ1bmsKKzEwNDg3IGE4NDJjOWU2MzI4MGE5NmY3Mzk0YzMxYjcyMTA5MmYzOGFkNmY2MGQgbGVnYWN5LXRydW5rCisxMDQ4OCBkYmMxMWRkMDJmMDk1OTIzNTBiOWZhZmQzMDUxNTlkYjhhMTRiYjVjIGxlZ2FjeS10cnVuaworMTA0ODkgNGY0ZTJhYWQxZTBhYjViYTBhYmMyY2U4MjZlMDQ5NzZhMjlkNGZkNSBsZWdhY3ktdHJ1bmsKKzEwNDkwIGJmNmU5MjBjMGU3OTlkMTYxMjk0N2I4YWExZWQwNDc0MjM3Y2QzMjEgbGVnYWN5LXRydW5rCisxMDQ5MSBjYTBjNzI1OTEyMTFjZDkyOWYzZjg3MTQ3YTRhYjY0NGVkZjUxODQwIGxlZ2FjeS10cnVuaworMTA0OTIgODNiYTUzMDlmZjIyNmUxYzRiYjIyZDI1ZDMxZjViY2RiYTE0OWQwOSBsZWdhY3ktdHJ1bmsKKzEwNDkzIDJiMDlhNWQyNjM2ODhkMDc3N2Y2YjZiOGVjZDkyZjMzMTRhMmZjZTMgbGVnYWN5LXRydW5rCisxMDQ5NCA1M2RkZTQyMzI1ZjhhOTk0MTMwNjk0NzU2MWJlZjk4ZDQ4MTNlMzdkIGxlZ2FjeS10cnVuaworMTA0OTUgNmU4YmU2MDk2ZTU2MzAyZmE1NzhjNmQ4NDU5YzVjNTNmYTUwNTAxMyBsZWdhY3ktdHJ1bmsKKzEwNDk2IGJiYmQwYjEwNWUyNzM1ZmVlNzdjOThmNGE4NmFjMWU0NmZhZmQyMjYgbGVnYWN5LXRydW5rCisxMDQ5NyA0Njk5OWRmY2ZhZTNmMDUwNjdmNmNiMWNkMzUzZjU3YzBjMGIwODY2IGxlZ2FjeS10cnVuaworMTA0OTggNTI2NGNhYzhmOTAzNWYyYzc0YjU0NTFiNTdmOWU2NDM3YjQ3NGY5NiBsZWdhY3ktdHJ1bmsKKzEwNDk5IDAxMWFlNzFmZWE5NjQ5YTE3YTQ4N2Y3NmI4MDdjZWFjNDFkOGFiMmMgbGVnYWN5LXRydW5rCisxMDUwMCA5Yjg5MDIzMzhlMTRiNzA5ZjIzODVhY2UxNTA3MDA3YTI1ZDI1ZTdlIGxlZ2FjeS10cnVuaworMTA1MDEgOTJiYTdhOWUzYjlkOTcxOTgyMTllZGQ0NmM4MDY4MzI2MzNiYzljYyBsZWdhY3ktdHJ1bmsKKzEwNTAyIDNiOTFhZmZhMzMzZTk4NGE2MDYxNzdkY2YxMjJlM2Q3ZTkzYTlmMGQgbGVnYWN5LXRydW5rCisxMDUwMyA1ZDJiZDY3MzhlYjYyZTU1MjVhNWU1MjdlZjM2MDcwMDA1MjEzNzFmIGxlZ2FjeS10cnVuaworMTA1MDQgZDE1N2VlODIxNzc1YzA5OTM0NTJjNzIwY2RmNGIwMmY4YjhiOWUzMiBsZWdhY3ktdHJ1bmsKKzEwNTA1IDQ5ZjFjZjRiMTc0Y2M2M2YzYzFkMmRiMzIwZDMxYTg4OWZlZDk0MjMgbGVnYWN5LXRydW5rCisxMDUwNiBkMWMxYjIwNzU0YTgxN2ZmZjUxNDlhOTFjMTBhN2E5OTBmYTY1MGQzIGxlZ2FjeS10cnVuaworMTA1MDcgZDk5YTkwNTI2YWUwYjE5MmVlY2ZjMjFlODE4ZjFlYzFhMTdiZDQwYSBsZWdhY3ktdHJ1bmsKKzEwNTA4IGY1MzI2ZDM1ODY2MmJiMjEwYjhmMTRiYmQ1NTYyZmY2YTliYTdhZTYgbGVnYWN5LXRydW5rCisxMDUwOSA1ZGNmOWI1ZDMzZTZlNmYwYTBkMDQ3NmFjNTA0OWM3MGNiZDBhYzMxIGxlZ2FjeS10cnVuaworMTA1MTAgOTUxNDJjOGEwOWM4NmE5MDc5NDJmMDE2MzE4ZTNlZTA5NTRkNDc0YyBsZWdhY3ktdHJ1bmsKKzEwNTExIDNmMDM2MDM3NmNhMDAxNTE2NzZkOWRmYzE5ZGVhZGM1OGVjNWNkNzUgbGVnYWN5LXRydW5rCisxMDUxMiA3MTBmM2I3ODM1MTUzYmI3NmU3MDk3MzA3ZmViZWI0YjBmYzdlZGM5IGxlZ2FjeS10cnVuaworMTA1MTMgNWNjZTgxZTIzMzQ5OTZjOTk4ZDBmNmYyYTI2MTE1MGE0MWNkNThiNCBsZWdhY3ktdHJ1bmsKKzEwNTE0IDNmZmQ0NWYwNWUzOTU4ZjU4ZTViY2ZlNWNhMDc4OTY2NDgxYTQzMGQgbGVnYWN5LXRydW5rCisxMDUxNSBjZDMwOTIwNjlmNWEzOTM5MTJiYzFhMjA4Y2Q1NjIwYzE2ODIwOGYzIGxlZ2FjeS10cnVuaworMTA1MTYgNmM1OTQ5ODg1NzJhN2RlMjcxMzY3ZTQ2YTU1YzEzNDUwZWM0YTc1OCBsZWdhY3ktdHJ1bmsKKzEwNTE3IGUwOTFlOWQ0OTVkNWE5ZDA2N2M3YzQzZDZiZmYwNDg3NTU0NjYwMmQgbGVnYWN5LXRydW5rCisxMDUxOCA1ZjM1ZTI3ODEwMzJlMjMwY2UwNTFkZDg3YzBiNGQyNzEyNDFmODUwIGxlZ2FjeS10cnVuaworMTA1MTkgNDNiZTBiOTAyNzE3MDg4NzRjMGRmNjJhNjY5ZGJiYjY5MWMxOTVhNSBsZWdhY3ktdHJ1bmsKKzEwNTIwIGEzODU1MDYxM2FmM2Q5ZDhlOWVkYmM0ZjliYjQ5YWYxNDA2Y2Q2N2QgbGVnYWN5LXRydW5rCisxMDUyMSBkZjBmYTVkYzU5OWFlMDY1NGQ3OWNjMjkwYjllMDdlZDVkY2EzYTk2IGxlZ2FjeS10cnVuaworMTA1MjIgZTIzMzM5NjlhMmNhY2EzZjc4OThkOGIxNGE5NDIyMDE5ZTJhZWNiMCBsZWdhY3ktdHJ1bmsKKzEwNTIzIDQ5MTlkZWUxODc4MWMxMzc3MWU1YWQzYjA3YmJkNmUwMDgyYWY3YWUgbGVnYWN5LXRydW5rCisxMDUyNCBiOGU4YWNlNzljZjAyY2NkYTcyNTdlMWQ1NzRhMGZiY2Y5NTg4YWYzIGxlZ2FjeS10cnVuaworMTA1MjUgYmQzMGFjODMxMjE3MjM0MTg4MTkzYmNjYmFmNGNlMWYwNWNlMjQ4YSBsZWdhY3ktdHJ1bmsKKzEwNTI2IDI1NGZjOTFiNmIwZTczODA5NTgwNzRmZWI0NGI3ZWMxNjdiMzg2OGIgbGVnYWN5LXRydW5rCisxMDUyNyA2NjhjZTBlZGI0ZjFjNTQyOWQzZDAwMmI2Mjk4YWFlNWNkODJiNGY2IGxlZ2FjeS10cnVuaworMTA1MjggMDc3MzBiODJhMTQzZjI4ZjUyZmNhNDVlYzhkNjViNDEwODdlMzg1ZCBsZWdhY3ktdHJ1bmsKKzEwNTI5IGE5MzA1MmFlMGRlYjVhNGQxNjBkMDk2OGE3MDBhZDQyMGZiZTUwNzAgbGVnYWN5LXRydW5rCisxMDUzMCA1ZGNjNWM0YTE4YmRhNjQ4NWQ5OGI3MDk2ZGEyNzkwMzk4YzY3ZDYyIGxlZ2FjeS10cnVuaworMTA1MzEgNzA5OWRlODNiMTkxYjkyNDZmYzkwOTkxNDczM2I1NWJlN2UyODEwZSBsZWdhY3ktdHJ1bmsKKzEwNTMyIDliOGI1NzRlZjAwNzFlMWY5MDlmZTc1MzhmMmMzNTlmMjkxMjU5OGYgbGVnYWN5LXRydW5rCisxMDUzMyBjYjhkNzMzODI0OGNlZjc3Yzg3NWZiMzZlYWE4NDZhMDllZmQ5YzkzIGxlZ2FjeS10cnVuaworMTA1MzQgYTNkOTEyYWZjOTA5YWJjZGQyYTUzMTYyZTRmZmE3NDAyYzZjYmIzMCBsZWdhY3ktdHJ1bmsKKzEwNTM0IDQ0YWJhNGQyNmIwMWZiYWUwNDAzZWZlNjU0ZjlmZDAzNDc2MDY3MzIgbGVnYWN5LXRydW5rCisxMDUzNiBiY2FmNDhiOTRiYjMzODNjNGNhMTdhOTE5ZWY4MmZlYWIzZTJkNGY0IGxlZ2FjeS10cnVuaworMTA1MzcgNDNlODAyYzE2YTViMWFmYmI4NjAwZTU4ZDMyMmRiNjFjZDJhN2UyZiBsZWdhY3ktdHJ1bmsKKzEwNTM4IDVhYWNkZDA5Nzk0MTM5M2Q2ZGE2ZWQzMmEyNTI0MWY0Mzg3NDkxOGUgbGVnYWN5LXRydW5rCisxMDUzOSBkOWFjOTI0NjE4MzI5Y2M0MDk5NzIxMWMzNjEyNmY5NDIzNzgxZWFhIGxlZ2FjeS10cnVuaworMTA1NDAgNzdkNGU2ZjY2MmMxYmVlMDc2YjYyMGY2ZTA5ZWI3OWJjZTEzYTVlNiBsZWdhY3ktdHJ1bmsKKzEwNTQxIDQyODVmOGI3YmEwYjJmYjE3OTk0N2JlMjllNjVkY2I4MTJlYTEwYzEgbGVnYWN5LXRydW5rCisxMDU0MiAwNzY2ZGY1MDNlYTUzZGY0MTZkOGE1ZTVlYjFhZmFhMjljYWE5ZjUyIGxlZ2FjeS10cnVuaworMTA1NDMgZDk3MDQ4Zjg5MWJmMDZhZGQ5YWE4NzkxODczYmJkNTQ0MzZiOGM0MCBsZWdhY3ktdHJ1bmsKKzEwNTQ0IDk4ZWM0MjNjYTZmYTk5MTJhODIwZWFhMDU2ZjZkY2ZkNzRjN2NjZDcgbGVnYWN5LXRydW5rCisxMDU0NSAyMjRiNWMzNmFmZWY4NTZiODk5NmYwYjMwNTFjODhjNDgzMTIxNTgzIGxlZ2FjeS10cnVuaworMTA1NDYgZjBiZDllZTc4YTUyMTc2MzExMWVlNDlhNmE1NzI5OWUwZWJiM2E2ZCBsZWdhY3ktdHJ1bmsKKzEwNTQ3IGE3ZGQwZjUyZjJiNjA5NDZhYzQ1MmQzYjZjODhkNzE3NjQwMmI4YWIgbGVnYWN5LXRydW5rCisxMDU0OCA0OGUyMzQ5ZDExYzYwOTM3MmJlOGViZjBlOTBkYmEzZjZkZGViOTdkIGxlZ2FjeS10cnVuaworMTA1NDkgOWYxNmZhNzBkMDkwZWFlYmVlMDA0MDNiNDg3NTk1OGQ3YWFiZGE2ZCBsZWdhY3ktdHJ1bmsKKzEwNTUwIDg2YTYxOTMwNDlhOTZmNDA0Zjk5N2E3NjliZTIyNzAyOTA2YmJjOTggbGVnYWN5LXRydW5rCisxMDU1MSA0YTJmMWM2OWZkZTgxZTk2YTUxYTRkZjI0NDIzYjVjYmFkMTkyYmQxIGxlZ2FjeS10cnVuaworMTA1NTIgMDUyZTc3NjY0MDMyZTE4MDYwYzJhMTkxYjQyMzQzNzdkYjhlOWU0ZCBsZWdhY3ktdHJ1bmsKKzEwNTUzIGI4MTYyZDA4Njg1MDBlOTFmZTk5YWJiOTljYzJjM2U2NGZlODYwZjEgbGVnYWN5LXRydW5rCisxMDU1NCA1YTY3ZDkwNTEwMjYyYTE3YWU1ZjY3Y2NjZDY0ODU3MjQ5MTM5MjJjIGxlZ2FjeS10cnVuaworMTA1NTUgZDBmZjQxNzQ2YTI2MDBlNGJhZmNmZjhjZDY3MjhjN2RlNzg5MzlkZiBsZWdhY3ktdHJ1bmsKKzEwNTU2IGUzOTE0NWExMzA5NjgwMmQ0ZTQ4MWMxMWQ2OTI0YjBiY2Y0OTQ2NDUgbGVnYWN5LXRydW5rCisxMDU1NyBkZTAyOWU2Zjk4Mzg5MWM3ZTBmYmQwYWZhZjQwOGYyMTdlMTJjMWE0IGxlZ2FjeS10cnVuaworMTA1NTggNWJmZjA0MTcxNzk4NThlMzJkOGM2NjRjZjMzN2VhZWQyOGJiMTFmNSBsZWdhY3ktdHJ1bmsKKzEwNTU5IDMzMTdmNzI3MjNiYjYwOTZiODliNzE2MDQ2YzUyZTAwZWYzNWRkYmQgbGVnYWN5LXRydW5rCisxMDU2MCBjMTUzMzBlZWIxOTJhZDY2ZDFjNGUxNDE0YmQzODQzNTU1MTI1ZDM1IGxlZ2FjeS10cnVuaworMTA1NjEgNjU4ZDE4NGU5MjA0MWI5YzY4ZDg3MDZiMTZkMDhlMTE3MmUxODkzNiBsZWdhY3ktdHJ1bmsKKzEwNTYyIDBiMGI2OWE4OGI3Yjk1YjYxMzJmMzBhZjVlYTE5M2E3ZDBlMGVmNzEgbGVnYWN5LXRydW5rCisxMDU2MyA2YjU4Yjc5YTk1OGQ3N2E1OGY0ZTU0NzZhODllNzBkMzU2NjFlODVjIGxlZ2FjeS10cnVuaworMTA1NjQgN2FjZTE3MmMyNTIxYjAyZWFhMWZkNmRjZThlMzgxMDI4M2FmNzI5NyBsZWdhY3ktdHJ1bmsKKzEwNTY1IGJiM2VjODEyZWM5MGYyNDg3ODgzZThiOWE3MGU3MDRmM2UzZWU5ODAgbGVnYWN5LXRydW5rCisxMDU2NiA1ZTNiYjQxNTYwMDQyNWZkOWZmOGYxM2MzNTQ0MTBhOWQ0ZTYzZDkwIGxlZ2FjeS10cnVuaworMTA1NjcgNjkyYmUxMjNmNTQ3ZjFkMzQ3NTFiNGUxYWQ3OWYzYTQ5MzQ0MTU2YyBsZWdhY3ktdHJ1bmsKKzEwNTY4IGUzZGNlM2I4YzI4MjU5YzYxOTk3ZjFhODM5NTViYmIyZDM5MzMyNzggbGVnYWN5LXRydW5rCisxMDU2OSAwNDkzMTM3YTg0MTQ2MWFhNTgyOGE1OGQ0MTU0MmJiOWZhYWY4Mjc2IGxlZ2FjeS10cnVuaworMTA1NzAgYzVmOTJlZTg0OThmNWM4YjJjNDZhNTBiY2RhMDU0N2NiMDk4NWMzMSBsZWdhY3ktdHJ1bmsKKzEwNTcxIGRmMzdjYTQwMzhmNmMyNjE4MWU1MWE5ZTNjMWE2OGVjODc5ZDZjZjMgbGVnYWN5LXRydW5rCisxMDU3MiA5NmFhNTg3MjVjMGU0MDU4YjM1ODhiY2U2MmE4ZGVjYmRhYzI0OTJkIGxlZ2FjeS10cnVuaworMTA1NzMgMDhlMWJiODQwN2U2NTIwNDQyMGQ4OGUyMzgxNDFiNDY1NGE0YzdkMyBsZWdhY3ktdHJ1bmsKKzEwNTc0IGFkOWFhZDgxM2E2MWIxY2JmNTM4ZjZhOTRkZDU3NjMzNjY0Zjc1NjYgbGVnYWN5LXRydW5rCisxMDU3NSA1NzNiYzA2NDI2NGNiN2U0YWFhOWRmMjQ3ZDAyMmFjNzk5MTE0M2JiIGxlZ2FjeS10cnVuaworMTA1NzYgNDdiZGY0NWFmYjY4NjA3MDUxNDMzMzJiNTBjY2QxZGZmZmM0YWYxNCBsZWdhY3ktdHJ1bmsKKzEwNTc3IDhjMWYxNjFjNmM4YzAxZWQ4MGIzMzUwMzE4ZTcxYzNlYmYzOTIxZTUgbGVnYWN5LXRydW5rCisxMDU3OCBhNmNlMmRmZjI3MzViNzcyNWI0ZDgzZDIxZmQzMGM5ZTQxMjhjOTgyIGxlZ2FjeS10cnVuaworMTA1NzkgYjU3Njg0NmM5NGIzOGY1NDQ2ZWI5MzNjN2YwNzQ5YWQ2NGY3MTFhYSBsZWdhY3ktdHJ1bmsKKzEwNTgwIGE1NWNiYTk2Mzc2MTYzZTBjZjZjMWFmZWZhZjcxOTBlOGJmZTRlMmUgbGVnYWN5LXRydW5rCisxMDU4MSBmMmY5MTI4MjNlZTc4NTcxZmZmZGM4ZTJhY2E3MzA5YjNjMTI1M2Y0IGxlZ2FjeS10cnVuaworMTA1ODIgMjY1YzI3OTc3ODFhMDY4ZmE1MjQwNTkzOGMwNmUwMjMzODQ0MzM0MyBsZWdhY3ktdHJ1bmsKKzEwNTgzIDQyN2YzNDg5ZTUyYjZhYzBkYjZkYzVmZjIyYWEzNGY5YTU5NzhhNmMgbGVnYWN5LXRydW5rCisxMDU4NCAxMWExYmFkNmRmNjczM2UyYzYxOTNjOWJhOGY2ZmU0NzgyM2JhN2U1IGxlZ2FjeS10cnVuaworMTA1ODUgOTMzNDhlNWE4NWEyNDBkMTk2M2E0MmY2NTU0YzEwNzkwYjE2NzM0MyBsZWdhY3ktdHJ1bmsKKzEwNTg2IDc5MWVkYTUyYjNkOWNiYWVhZWViODM5YWNhNWY1OTVhY2RhNzNlY2MgbGVnYWN5LXRydW5rCisxMDU4NyA5YjNiMDEzMmMwMjFjN2M2Yzg4YWJjYzdhNDUxMmFmOWJhOGQ1YzBjIGxlZ2FjeS10cnVuaworMTA1ODggMjgxMGZjNjA5YWVkMDcyMDc1NzgyN2IxOTc3ZjExMWEwNTQ1ZDViZCBsZWdhY3ktdHJ1bmsKKzEwNTg5IGE5OTczZjliNTQxNzc3MjRhZjViZTlkMzZkZTA5ZTJiZDE0MzAzMGIgbGVnYWN5LXRydW5rCisxMDU5MCAyZTQ5YmM4OWZhZmEwZGQzZjZlNTZjYTAzYmExMTRlMGM2MDdiM2UxIGxlZ2FjeS10cnVuaworMTA1OTEgZjA3MDdhZTAwNDMzODQ5YWQ3Y2IwNWQ3NzA4NGYzZTViMWQ4NzlkNiBsZWdhY3ktdHJ1bmsKKzEwNTkyIDVjOWJlOThmNTM0NzM5NGUxZGY5ZTkwYjMxOTI2MDc5ZDAxNWNiYjYgbGVnYWN5LXRydW5rCisxMDU5MyBiNmNlMTcxOTMyM2FjN2RlOWYyMWI3ZmY2MzE5YWE0NjZhZjI1MzIwIGxlZ2FjeS10cnVuaworMTA1OTQgZTJkMzNjMDczMmJmYjE5MTc4Y2ZhMTg3ZWM5MjdhNDA0ZTZmZTk5ZSBsZWdhY3ktdHJ1bmsKKzEwNTk1IDUzMGZmM2I5OTcyMmI2YzBkYzU3ZmU0NDZlM2FiNjRjYjIwMDFlNzcgbGVnYWN5LXRydW5rCisxMDU5NiBkOTYyMjNiNzdlMmYzNzA5NDJmYTgwZGY3YWFiNTIxNDdiZGQxN2U0IGxlZ2FjeS10cnVuaworMTA1OTcgNTk5OTdmZGM4MWRmN2YxODMwYWRmZTJjNjcyMThhYTAzNmI4N2Y2NCBsZWdhY3ktdHJ1bmsKKzEwNTk4IDk1ZWZlYTY4ZjE4ZDc4Nzg1NzlkMTBkMDE4ODdiODQ3MjY1NzQ5YTAgbGVnYWN5LXRydW5rCisxMDU5OSA3Y2Y1MTY1N2IwOGNhYWI0NDczYTcwNmJlZGZmZTdhMTRiYTQyZWE2IGxlZ2FjeS10cnVuaworMTA2MDAgNWFlY2MyNzdlNmNhYTAwY2E3ZjU4NDlmMmZhM2MyNzQ0YzA5NDFjZiBsZWdhY3ktdHJ1bmsKKzEwNjAxIDA2OGZlYTE1Y2JjZDg2NGYzOTI5MjcxN2UxZWYxMDlhNmE3ZjUyMjYgbGVnYWN5LXRydW5rCisxMDYwMiBlOTA0ZTZkZmQ3MGIyNTI1ZmQyZWNiMmM3ZjcwMjE1M2ZmNTJlZjhlIGxlZ2FjeS10cnVuaworMTA2MDMgOGM1NTJlZWRiMWFmYWYxZDBlMDk0ZmI3Njg5M2U5NzZhZGQzODI0YiBsZWdhY3ktdHJ1bmsKKzEwNjA0IDBkYjZmNjkzMmI3MzVjNzFjMDNhZGUwYzdlYjA1ODVmMjE2YzY1OTQgbGVnYWN5LXRydW5rCisxMDYwNSBiZDc0NGFmNjg0NWY4YjFhNWM1Y2IxOTMxNWRmNWE1MmUwNDFhNmYyIGxlZ2FjeS10cnVuaworMTA2MDYgMzY0MDRkOWNiNWUxNWNiZjJlNzFkOWI4YzM1MzZiYjBjYWE5MDJjMCBsZWdhY3ktdHJ1bmsKKzEwNjA3IGRhYTU0MTMxNDUzYjc3ZTM5ZDU5ODBjNjdjODhkOTkwNGI2MThkMTQgbGVnYWN5LXRydW5rCisxMDYwOCAwNDc1MzM3ODkzNTlmNzk5N2I0ZjUxZTIyN2NjOGZiY2JiMDBjODIyIGxlZ2FjeS10cnVuaworMTA2MDkgZmRiYTYzOTdiNzI5ZTQ3M2FjM2ZmNjNkNDk4ZDk4YzA1Mjk0OGUxNSBsZWdhY3ktdHJ1bmsKKzEwNjEwIDEwOTRlYmJkM2E0NTc0ZDI4MmNjOGQzMDU5MDQyZTBlZGU4MDJlMDggbGVnYWN5LXRydW5rCisxMDYxMSAxYmM2NTY4NzYyNmI4Nzk0NjRmNjhhY2VkNmYwZWNjYmNjNTE0NzY4IGxlZ2FjeS10cnVuaworMTA2MTIgOGI0OWM5MThhMjVmMzY4MTBhNWUwMTAxYmNiYTkxZDQ2OGI1OTczNyBsZWdhY3ktdHJ1bmsKKzEwNjEzIDQzMjNiMjQzMzU4MWQ4YzhjODkzMTFkZDYwNjBlMDBmNWVhMzY5NzEgbGVnYWN5LXRydW5rCisxMDYxNCA2MDg4ZDY1MmI5MzI4NDFhYmRhYzVjM2VlN2QyZjY2ZDk3ZTg2YzhlIGxlZ2FjeS10cnVuaworMTA2MTUgYzdkOTlmNmQyZTJmOGMxNzllN2QwNjA3ZDUyMmM4MWNmNTE3ZTJiNyBsZWdhY3ktdHJ1bmsKKzEwNjE2IGFjMjg4ZGI1YmM5MWM0NDI1NDBlMmIzN2E4NzJiOTUzZWFiOGEyZTcgbGVnYWN5LXRydW5rCisxMDYxNyBjZDZiOWZjMTE0YTQxNWZhNGViNTQzNTA2OGJkNDZiNDE0OTM4ZDMwIGxlZ2FjeS10cnVuaworMTA2MTggNDQzNTZlZTdlNTc5MDYzNDA0ZGExYjIzNWQ2MjBlYzEwYWU4YTU4ZSBsZWdhY3ktdHJ1bmsKKzEwNjE5IDlkMDMxMDE0MzYwMDhjZTA4ZDJjNjQ1ZjNkYWFiYmM2ZWNhYmViMmQgbGVnYWN5LXRydW5rCisxMDYyMCBhYzNjYTU2NmNiNDE2MWM0MDlmYWUxYjRhN2YzODNjNzEzMzY5ZjA0IGxlZ2FjeS10cnVuaworMTA2MjEgMjNhODM3NzI2MjI2NGI1NzYzYzNmOWJlZTM4YjI5OTZjYmQ4M2MyMSBsZWdhY3ktdHJ1bmsKKzEwNjIyIGIxNDhmYTE1MjVkYjk5OGVlYzMxYjA5YWY4Yzg1ZDZjM2YyYmVlODcgbGVnYWN5LXRydW5rCisxMDYyMyBkNjAxYWY4MDZhNTczM2JmMzc1NmUyOWI3Y2UxYTNmMDM1ZmYwNTU5IGxlZ2FjeS10cnVuaworMTA2MjQgYWEzYjQ4MDAyZjg4N2UzNmFmMmIyMDg3NzA5ZGRmNjFjOThhNmEzZSBsZWdhY3ktdHJ1bmsKKzEwNjI1IGUwMzNlZDUwY2IzNzZjZjZhNWM4NWYwMDMzZjI3MWUzNzI5MmI4ODkgbGVnYWN5LXRydW5rCisxMDYyNiBjY2Q4Mzc1ZGIyNzM2ZGU5ZGE2NTBmNzU5OWQwYjM1NzgwZmEwZmIxIGxlZ2FjeS10cnVuaworMTA2MjcgYzBlMzk0NGI2YTY0ZmUyZTczZjhjZGM1YTAzYmY5ZjVhNDYwMGQ0ZCBsZWdhY3ktdHJ1bmsKKzEwNjI4IGJkYmUwODJlZTM4M2RhOGEwMmM2MmVhM2IwY2E5MThjYWVkYWY4MmIgbGVnYWN5LXRydW5rCisxMDYyOSA5Mjc5ZWY2ODY4ZWJhM2E1NTA5OTM5MmU1YTUwNzA4ZDlmNTg1NDQ5IGxlZ2FjeS10cnVuaworMTA2MzAgOTFhYWVlZjc1YTczNjJmODdiNTBjNjFmNGUwOTNiNjk5NDExMDZiYiBsZWdhY3ktdHJ1bmsKKzEwNjMxIDNhNTIwMjhmZTkzNjNkYTJmNjFjZWRmZTM0Yzk4ZGY5NmY0M2E3YmEgbGVnYWN5LXRydW5rCisxMDYzMiA0NjY4NmQ0MGJkZmQ2YzMxMTc3YjkyYmY0YTQxNWY5ODA2ZDhlN2FlIGxlZ2FjeS10cnVuaworMTA2MzMgMDVmZWJmOTMxZTkxYjRiZjk2MmU5OTAzMWI4NzVmODdlNGNmYjc0MCBsZWdhY3ktdHJ1bmsKKzEwNjM0IDk5NWZiNTViM2U2YWJkMjFkZGEwYzJjZjdmYzZlYjg5ZWE0MTZkZGQgbGVnYWN5LXRydW5rCisxMDYzNSAyNTUyMzNlNDI5MThmMzQ5ZjFlMzM0NjhhMGJjMmFkMTExMTUzMmEzIGxlZ2FjeS10cnVuaworMTA2MzYgYWRhNDBlNjlmZDA5MzZlMzUxNmEwZDJiNzFhMWZhYmU1NzE4ZWMzMyBsZWdhY3ktdHJ1bmsKKzEwNjM3IGU0OWIzMGM2YTgwYWMwYjdmOGM3NmI4YTBhYTQyZmFlNDE3NzYzZTYgbGVnYWN5LXRydW5rCisxMDYzOCBiYmZlOTljMjc4NWM5MzcyMzJiN2UzZjdiM2ViNjVmNTE0OGZlY2E0IGxlZ2FjeS10cnVuaworMTA2MzkgYjFiMjZlMGUwYTBhZGFkM2M3MWRhYzhkOWJiOGMwY2JhYjU0YmE3YyBsZWdhY3ktdHJ1bmsKKzEwNjQwIDA1NjU3MmUwNzgxYTZhMjMxM2IyZDM0OTdkNTY3MWIxNjRlOGQwOGQgbGVnYWN5LXRydW5rCisxMDY0MSBjZTlmYzY0NTI4YTc5ZGQ5MTBlNTQ2NmM2ZTU2YmU5NGQ2OTYxZDQ1IGxlZ2FjeS10cnVuaworMTA2NDIgMTI1YmZkODk2OTY3MTYzMzNjYWU0ZThjMzQ3ZWY3YzVmZWViOGFkNiBsZWdhY3ktdHJ1bmsKKzEwNjQzIDFiYmRkODRjN2E0MDk5NjU2MzhmYzJmYWNkNGIzYTQzMzcyYjg3YTcgbGVnYWN5LXRydW5rCisxMDY0NCBhMzEzNGM2OTcwZWJiZThjNGI1ZWM3YTY5NjY4NjBiMjE2MzFhYmYzIGxlZ2FjeS10cnVuaworMTA2NDUgZWE1OWJiOTIxMzgwNTE1MTA1MTc5MTlkMTJiODgzYmMwZjRkY2ZhOCBsZWdhY3ktdHJ1bmsKKzEwNjQ2IGYzYzhmYmM3OTNmZWE1ZTdjYTg0NmViOGQ4MGQxM2IwMTg5ZWNlN2IgbGVnYWN5LXRydW5rCisxMDY0NyA2ZjVjOTM2YWUyZDIyMjgxZDFmYTIzZDVhZjI5NGVhMzg4ZTBkMzJmIGxlZ2FjeS10cnVuaworMTA2NDggMTU0NmZjNzZkMDBlY2Q1ZWZiMDIyN2ViZWRlZWQ3NDdkYjI1ZDQ5OCBsZWdhY3ktdHJ1bmsKKzEwNjQ5IGI5ZDljMGVlYjQ3YzI2MDgzNzNiYzk0OGEzZWY4MGQ1MDZmNzRlN2UgbGVnYWN5LXRydW5rCisxMDY1MCBjOWQwZDYzMWFiYWFlMGUwMjcyZTAyYTUyZjdiNDU4NTExNzQ5MjA3IGxlZ2FjeS10cnVuaworMTA2NTEgMjg0YWRkNzRmZTM3MDVlYzFkNWQ3MWQ2YWQ5MGUxNDliNTIzZmVhYyBsZWdhY3ktdHJ1bmsKKzEwNjUyIDUzNmU0MzlhNjVmOWQwYjUyM2RmOTMzZDYyZjU2NzM0ZWJmZWZhYmUgbGVnYWN5LXRydW5rCisxMDY1MyA1NzMyZWMyNDg3YzUwYzZkMzllN2RmMjc3NTJmMjFiNzE3MGVlZDkxIGxlZ2FjeS10cnVuaworMTA2NTQgNWJjOGNhMTNjZmUwMWMxODE1NTUyZDk5YjJhNzkyYTQyMWQ0YjRlNyBsZWdhY3ktdHJ1bmsKKzEwNjU1IDI2YzYyMmQzNzE3ZDIyYzcxYzdhMDhiNTc5YmI4NTFkNDgzMzNkZjcgbGVnYWN5LXRydW5rCisxMDY1NiBhOGRmMDkwYTEyYmFmNjhmNTUyNDQ0MWUyMmZiZmE5M2U3MjgxYzU4IGxlZ2FjeS10cnVuaworMTA2NTcgYTBhMGMxNDMzOGMwNzRmZDk2ZjFlNzJjYTI1YzI0MDQ2YTZiZDlhYyBsZWdhY3ktdHJ1bmsKKzEwNjU4IGVlMjdmM2E5MTY2ZjgwMTMzM2JmMzgwMTEzM2IxNjk3NGFmYTQ4YTkgbGVnYWN5LXRydW5rCisxMDY1OSAzMGZiZTMwMmM1MThmZjg0ZWE1OTU4OGE5MThlZTkxY2Q5NDFmN2VlIGxlZ2FjeS10cnVuaworMTA2NjAgNGE3ZmZjZGU0MGRjOGY3MDExZWEyMTBkNWQ3YTJkMTE1MzZjMzczNyBsZWdhY3ktdHJ1bmsKKzEwNjYxIDY4ZWU4YWJkOTc4MjhiMDUzZDA3OGRhYTI3YzkwOTI5N2E3OWRmZDcgbGVnYWN5LXRydW5rCisxMDY2MiBjNjlhZDU2NmFlYjFlNTMxZGI4MmIyNzZjZDA0Y2I5N2ZkM2VmMGI0IGxlZ2FjeS10cnVuaworMTA2NjMgZGU3ZmM2NmMwYjRmZGZhZDE1YWFlYzQwMGFmNzFlMjVmM2EwNGFlYiBsZWdhY3ktdHJ1bmsKKzEwNjY0IDZmMWRiNTM0ZGZhZTRhZGZkNGIwM2ZjMTk3M2E5MjEyZWFlYmVhNTEgbGVnYWN5LXRydW5rCisxMDY2NSAxNDIxNjVlZDg0ZDgwYmMwNTcwNjZkMGY0NTNmOGNkN2UxZWNhYmUxIGxlZ2FjeS10cnVuaworMTA2NjYgOTI5YjdlNmU3NTIwYzVkYmMwMjUyMjk1NWM5MmI4MDQzZDg1YTNkZCBsZWdhY3ktdHJ1bmsKKzEwNjY3IDc3NTgwOGEwOWU0NmI3NzM0MWMxYWI0NjcyMThhZjBmNWY4ZjUyMGYgbGVnYWN5LXRydW5rCisxMDY2OCA2NzM1ZWY2NjJmMzlkOGNjYTNlYjgyZDZkNTc3OWM1MTcyYzZjZDIxIGxlZ2FjeS10cnVuaworMTA2NjkgOTk3ZDVhMjAwMGUwNDUyNmNmNTlmMTM0NmM2NmZkNzNjODdhNDY5MyBsZWdhY3ktdHJ1bmsKKzEwNjcwIGNlMmQxMjBjMzkwM2YyNTRhNTgzZjZjYzYwMTk0YjA3ZGJiZjQ3MGIgbGVnYWN5LXRydW5rCisxMDY3MSAyNWMyYWVhNjQ1MDE3Y2ZiMTQxYzFhYTQzY2Y1ZTUxOTcwMTExNzQ0IGxlZ2FjeS10cnVuaworMTA2NzIgMzVhYTY3ZmM0ZTYwZjZmNjkyN2YzNzMzOGM1NWNiZGU1MGU4NGUxNyBsZWdhY3ktdHJ1bmsKKzEwNjczIGI4MWJmOWNhMTc5ZDNlYjZkY2Q3NzNlMDRmNGRhZTgwYmViYzk4YjQgbGVnYWN5LXRydW5rCisxMDY3NCA0ODk0ZGRkNDUyZWVjYzEyNjk3MTdjNjU3MjA0YTIyMmE3NzE4OTlhIGxlZ2FjeS10cnVuaworMTA2NzUgYjY2ODZmNzUzNzk4ZjgyZjE1N2I2MGVhYWVjMDJjYTlmZDJlZjYxNSBsZWdhY3ktdHJ1bmsKKzEwNjc2IDgyMGQ1MTBkMWRkNjBjMDE2ZTVmYTdmZGJiYWRkNTcwNWFjOGM1OTQgbGVnYWN5LXRydW5rCisxMDY3NyA4ODVkZTQ5YjQ0NWM1M2M1Nzg3MGIyM2ExMmJkMzEyOGVhOWFhYWJmIGxlZ2FjeS10cnVuaworMTA2NzggM2E1NWI0YzVlM2M3MTk5NWRiMmYzOTQ5ZmYwNmI2N2M4YzcyYzlkMSBsZWdhY3ktdHJ1bmsKKzEwNjc5IDgzYTY5MzA1Y2IwNmUxMzhhMDk3YjY4ZWM3YzYyZTdlMDUwMDc3NTcgbGVnYWN5LXRydW5rCisxMDY4MCBjMzFjNTlmMTkyYWYyMjA0MTVlYmM0NThmZWYxNmE2ZjM2ODVlNzY0IGxlZ2FjeS10cnVuaworMTA2ODEgNDgyZTRiYTMzYzA4ZjZhNjgxMmViOGRhNWYzMjM5ZDNlOGQ1YTIxOCBsZWdhY3ktdHJ1bmsKKzEwNjgyIDA1MDk2MDUyZDgyNTdhMDM3ODA4MmRhZDUzMmRmOTkyNjk4NWY3MjcgbGVnYWN5LXRydW5rCisxMDY4MyA5ZjBiYjg3ZGRlNjAwYWM5YmNkOTNhODNiY2JiOTEwNmZjOTI5NGE2IGxlZ2FjeS10cnVuaworMTA2ODQgYzI4YjA1MzhhNDQ2NTQ3ZmU3OTE4NmY3OGJiMzVlOTFmMzVmNGVlZiBsZWdhY3ktdHJ1bmsKKzEwNjg1IGQ2ZjRjMmE1MzEyYzRlMWRkM2UyYTkwYzIzMGJjMjlmYzk1YjFlMDAgbGVnYWN5LXRydW5rCisxMDY4NiBjNDI4OWI4MTM5MjRiMjc1M2MzYjllOTg0Mzk3MzMxNDdlN2RmNjYxIGxlZ2FjeS10cnVuaworMTA2ODcgN2VkMTA3YWY5ZmY0OTUyMjBmZGNkNGRmMDRjYTNmMWZhNDBkMDBiOSBsZWdhY3ktdHJ1bmsKKzEwNjg4IGI1NDk0OTY5MDA3Nzk3NDQzM2RjNDc5MDJiMWZmMzFhZTZkZTMyMjAgbGVnYWN5LXRydW5rCisxMDY4OSBlMjY1NjkzZjA3OTAyMDc3MjQxMjJiMDg3ZDdiZjMxZWFkYWM0Y2RiIGxlZ2FjeS10cnVuaworMTA2OTAgMzRjY2E4MzJhNGFmZTM4OTEyNjBkOGMwNWM3YzM2OWM4ZjhhNTA5MCBsZWdhY3ktdHJ1bmsKKzEwNjkxIDBiN2YzYTkzMjA4NWMzNDIyMGU5OTMzZDQxZDAzMTA1ZGEzMzc5YWEgbGVnYWN5LXRydW5rCisxMDY5MiAyMDNlMmFiNjM5MzZhMjVmZTJiMGExZjY5ZjA1ZTY3YmMxOWYyOTY5IGxlZ2FjeS10cnVuaworMTA2OTMgMTVlYTE1ZTBjYTJhYjg1OGVmNDk0NzU5NDQwM2U2N2EwYWNhNTIxZCBsZWdhY3ktdHJ1bmsKKzEwNjk0IGE0NDRjZDgzNWMwZTA0NjU3MWVhMDNlNzc3NmY2OTVjN2RlNDM5ZTUgbGVnYWN5LXRydW5rCisxMDY5NSAzMGMyMzg1Y2EzODkzYTBiOTJiYWFkNTIzMDI3MGI0NjUwNjMxNTViIGxlZ2FjeS10cnVuaworMTA2OTYgYmMyZTliNGViOGRkNTg0NzIzNjU0Yjk5ZWJiMDE4ZGI1OTkzZGQ4NyBsZWdhY3ktdHJ1bmsKKzEwNjk3IGYzMjA4MDBmMGZhNTVhZmU3ODllMDQwMjFhZThjOGI1ODIzMjdjZWEgbGVnYWN5LXRydW5rCisxMDY5OCBhMTk2NjEwNzY1MjlhOGFmMWZjM2ZmYWQzZmI0M2UzOTlmYzc5MmUxIGxlZ2FjeS10cnVuaworMTA2OTkgZjFjOTYwOTMxNDEzMTkzMzgxNWRhYzQ1ZDkyOWVkNjdlNDQ5NzM4OCBsZWdhY3ktdHJ1bmsKKzEwNzAwIDMyOGQ0NmM0NzNmNGVjMGUyYzBmZDBiMzJiZDlmNTAzODU4OWJiNGEgbGVnYWN5LXRydW5rCisxMDcwMSA5ZDU0YWFmMDE2M2RiMGViNTA1YjIyYWFkY2E2ZThhZDQ5MmQyMzFkIGxlZ2FjeS10cnVuaworMTA3MDIgNmEwODdhZTE4MGJhMzU4YTMxZWJkNzkxNzBhM2RjODMxZWVhNTc0NiBsZWdhY3ktdHJ1bmsKKzEwNzA0IGU4MzRhZTczZGVkZGYyYmMwZjc2ZjkwYzJhMDU4ZmMyM2MxNjVkMGEgbGVnYWN5LXRydW5rCisxMDcwNSAxMzYyYzkxZWZjZDI3ZTI2NTJhZmZlOGVmYTQzZDVmMmJhOTNiODgzIGxlZ2FjeS10cnVuaworMTA3MDYgNWUzOTRhMDdhM2E0ZjEwMWU5ZjQwOWZjMjFiOWQ0Y2RkNDg2ZDI3MSBsZWdhY3ktdHJ1bmsKKzEwNzA3IDlmYzJhZjllNTg1OWEwYmEwNzA3ODNmYjA3YWE5ZjM1YzM5N2FjYzkgbGVnYWN5LXRydW5rCisxMDcwOCA2OWYyZTA1Y2MzNzhlZDM1YjFjNGUwNjkxN2E3M2Q4OTg4YTk2ZGMwIGxlZ2FjeS10cnVuaworMTA3MDkgNGExM2E0ZDI1ODhiMzBkYjA1MWYxYzQ5OGE0ZTQ4ZjRmYTBjMTAwNyBsZWdhY3ktdHJ1bmsKKzEwNzEwIDlkNjQyYTczNWExMzI3ZDFmZmFkMzYyY2U5MDdlN2QyYmY5ZWQwZWYgbGVnYWN5LXRydW5rCisxMDcxMSBkZjc1MmMwOGI0NjIyMDQ0MmZiYjdmZGFmY2RhNGNkNmQ0ODU1MjRhIGxlZ2FjeS10cnVuaworMTA3MTIgODVhOGFlNmRlMjc4NTg0MTczNDRiYTRlYjcwN2ZkY2I4Yzg5ODRjOCBsZWdhY3ktdHJ1bmsKKzEwNzEzIGExMDNjZjZkMzg0NWI1NThhYzdlZWMzN2VmMjcwZDlkNWE0ODFmZTcgbGVnYWN5LXRydW5rCisxMDcxNCBlY2RlOGE0NWQ0MjUxMzE4ZGI3NDM3NmE5ZDI2OTI5MzhjYTM4OTI5IGxlZ2FjeS10cnVuaworMTA3MTUgMGVjOWRjOWQyMDFmMmYxNDQ1NTI5OTIyZDgyZWFmMWNmMWYwZWRhNyBsZWdhY3ktdHJ1bmsKKzEwNzE2IDQwNmRkMmIzNjc5Mzk1OTdjZDFiMWU0MWQ1N2IwNDE4MjAwMjdlNWIgbGVnYWN5LXRydW5rCisxMDcxNyA5MzA2ZjU4Y2RiYTVhMWRhMjRjMzA1YjUxNjcyMDdjYTJjY2RlODNjIGxlZ2FjeS10cnVuaworMTA3MTggMTQxMThiNTc2NzFlYzRhYTliOTQ0ZjBkOTA3Y2I1ZmE5MmNmZjQzYSBsZWdhY3ktdHJ1bmsKKzEwNzE5IDI0MDNlOTJhNGE2YzA4Yjk1MzE3NDY0ZGUwYmY4OTc3OWY3NDA4NDkgbGVnYWN5LXRydW5rCisxMDcyMCAwN2MwYTMzMWMyNjkyMmJlZjI4MTlkMzA3NjE2NWFlODVhZTNlMGJmIGxlZ2FjeS10cnVuaworMTA3MjEgM2JlMWFkOWE4NTg3ZjM2ZmEzY2NlNTk5MjI2MTlmODY5ZTZmMzkwMiBsZWdhY3ktdHJ1bmsKKzEwNzIyIGRlMmZmODlkNmQ0YmVmMmI1ZjllZThhZGVjMDRjMWQ2ZDFlY2M0MWUgbGVnYWN5LXRydW5rCisxMDcyMyA0MDMzZmViMjZkYTg5OWE1ZTIyNzBmMjNhNGNkM2Q3NmRjNGJjM2E1IGxlZ2FjeS10cnVuaworMTA3MjQgMDc5MmRjZGU4ZTMxMWQ5NmYxOGMxMTY5ZjVjMDY3MzQwNjFmZGJjOSBsZWdhY3ktdHJ1bmsKKzEwNzI1IDc0ZWRkNWNkYTlmZDljNTQ5MWU0ZDhhYzgzY2IxMmQ1ZDJhNjFkOGUgbGVnYWN5LXRydW5rCisxMDcyNiAxMDUyYjBiMmM2ZWEwZjUwNjkwY2Q0NGEwOTU1N2IxNjk2NDExNzM0IGxlZ2FjeS10cnVuaworMTA3MjcgMmZhZWI3MmJiNjRhMTljOTE2YmZmNDg5YWE1ZjY5NDJjMzdkMzFlZCBsZWdhY3ktdHJ1bmsKKzEwNzI4IDg1MjNlY2FmNTljNTY5YTkyMzhkYzMzMTVlZWVkMDcyZTIxMjdkYzAgbGVnYWN5LXRydW5rCisxMDcyOSA3MzU2ZDQ4ODhhOGJjYTkzNDQwZTI5YTc5ZmI1OTVhZmNlYTJkYzJjIGxlZ2FjeS10cnVuaworMTA3MzAgMjQ2YWNhZDljODkzZGJkNmU3OWNlMTA5NzMwYzgyMzQ3YjU2ZjYyMSBsZWdhY3ktdHJ1bmsKKzEwNzMxIGFiMGQ1ZjI2NWQ1NGU5OGYwNWQ4Yzc5YzBmZTJhZWEyOWVhYmFiMzIgbGVnYWN5LXRydW5rCisxMDczMiA1MGQzNWJkZjIwNDJkZTIwYzZlN2FhMjFmMWI4OGY0MmM4N2ZhOTU3IGxlZ2FjeS10cnVuaworMTA3MzMgMzdjM2VjNGYzZDNmOWE3M2Q3NjhlZWMwNDQzYzc2ZGU5ODVjNWQyYSBsZWdhY3ktdHJ1bmsKKzEwNzM0IGZjMzM1MGFlNWYyYTk1NjcxZjQ4NTU1YjQ4NmQ3ODhjMjkwZDk0NWEgbGVnYWN5LXRydW5rCisxMDczNSBiYzUwZjVjMjBiYzk2MTU5ZDhkMjU4YmFhMDkzOGZhNDE3ODgzMjMxIGxlZ2FjeS10cnVuaworMTA3MzYgMTAyNmQwMzNjMGRkOWEyYThkYzcxMmU1YTM0ODY4ZWZlN2Q4ZDU4YiBsZWdhY3ktdHJ1bmsKKzEwNzM3IDEwYzYwOWZlN2RlYmM4Yjc4NGVkOTcxYWJkNGFiZWUxMmIyNjFkMGUgbGVnYWN5LXRydW5rCisxMDczOCBhOGMyMWFjY2JlY2RiOTI1ZDFlMjMzMjMzMjE2NmViYWFhMDdiYmZmIGxlZ2FjeS10cnVuaworMTA3MzkgMTA3YTg1MjViZjVlYjVmNjBkNTJmNDNkMWFkZjRjMTI0ZDkyZmFiNiBsZWdhY3ktdHJ1bmsKKzEwNzQwIGViODM1ZWQxZjZmZTgzN2E4MGMxYjVhNTU3YjRiYWQ5ZDVkY2NjMzEgbGVnYWN5LXRydW5rCisxMDc0MSA5YjA3ZDI3YTMxYmQ3OWE1ZDRkYzU2NzAyMTlmZGMyNjAwZmEzNTNkIGxlZ2FjeS10cnVuaworMTA3NDIgZDgzZjFiY2JiMTUwNWM2YzhiN2NhYjZkZjBiMGUyOWE5ZTE0MDRiZiBsZWdhY3ktdHJ1bmsKKzEwNzQzIGI4YmE4ODg3ZDU5ZjdmNmJjYjBmMTU2MzBiZmJkNTBmMTI0Njc4ZmEgbGVnYWN5LXRydW5rCisxMDc0NCA4YjgyMjA4MzcyNmIxYzZiMzZkNjkwMDczYTk3ODcxYmYxMTYzYjczIGxlZ2FjeS10cnVuaworMTA3NDUgYjRkM2QxYTA4ZTRkYWU2MTkzODRhZGVjOGM1YzI3YWFmODgyYTBlMiBsZWdhY3ktdHJ1bmsKKzEwNzQ2IGNlMWVkN2ViNzc1MDc3OTZlMTgyYjAwNDZkN2IwOWIwNzY4M2UwYmUgbGVnYWN5LXRydW5rCisxMDc0NyAwZDNiNzNkOTk1ODg4ZTliOWM2YzI1OGUwZTEwZjlkMmY3ZWU1ZDI5IGxlZ2FjeS10cnVuaworMTA3NDggZWE0YjdhNTRmZDkyZmM0ZGE0NDljNWExZmE5MzJjMjVjMmU1MzYzYSBsZWdhY3ktdHJ1bmsKKzEwNzQ5IGMzNDU3ZmIxOGE1MTA3ZjZkMDdkZDUxOWI4Y2ZkZTIyMjBlODM3MGQgbGVnYWN5LXRydW5rCisxMDc1MCBlMTg0ZjgzYmJiNzk3ZDRjMDdkNTNiZjk4MmMzOTQ1MWU2MzVjZTkzIGxlZ2FjeS10cnVuaworMTA3NTEgM2Q2NWY2MTZmOTNlNWU0NTJjMDZlMTY4MmEyZDhmZjQzZGRlZGE1YSBsZWdhY3ktdHJ1bmsKKzEwNzUyIGFhYTFjOGI1MjlmNTI1ODAxNjU4YjBiZWVmMjBlOTYyNGEzZGExMmIgbGVnYWN5LXRydW5rCisxMDc1MyA2NmEyZWE2M2I0ZDg1NzhhODRkOTE2Y2RiYjBkNDNhN2NjMzc0ODIyIGxlZ2FjeS10cnVuaworMTA3NTQgZTQ2OWE4YWYwNGIyMWQ0ZmUxNGZhZDA0MDhhODE3YTI5OTgxZDVmMiBsZWdhY3ktdHJ1bmsKKzEwNzU1IDJkZDg5MGFmMTg3ZTEwNDQ2OTcyZTBkZDgyNjU0NDU0MGQxMGY4NzMgbGVnYWN5LXRydW5rCisxMDc1NiAxZGI0MDk5YTcyY2U4YjA3OWMyMTA0ZDdmN2FjNjljODMyN2Y0NjY3IGxlZ2FjeS10cnVuaworMTA3NTcgN2IyNTAwNjU3OWY0Y2ZjMjVjNmQxMDk5OTE3MWMzNzA1ZjgwMzY1OCBsZWdhY3ktdHJ1bmsKKzEwNzU4IDcwNzY1MzFlZmI4ZmRiMzNjZTZjZWY0NTBmMzM2OTc1Y2VkYjY2YjkgbGVnYWN5LXRydW5rCisxMDc1OSBkODFmMzE2MTU2N2I1ZmYxNzVjYTY4OWYwMjllOTI1MzQ4ZjI5NWI0IGxlZ2FjeS10cnVuaworMTA3NjAgYzdkMGI5NzFlMGUzOTI1YTM0NWVkZDk4MTg0YmE0ZGJiZDBlYzc1YiBsZWdhY3ktdHJ1bmsKKzEwNzYxIDM1ZDFjZWVkNjliOWVhZWZhNGU0ZjllMzAwYzdmZDEwYzg5NjlmNjUgbGVnYWN5LXRydW5rCisxMDc2MiA2MzFhMTU5Y2YwNDBiMWE5YjMzNTBkOTkzZWEwNTM4Y2ZiMjY1MTNkIGxlZ2FjeS10cnVuaworMTA3NjMgMmIyZDIxZWZjNGQ3MTVlMTliMDgwZjI4ZDZhY2YzNzljYTkwMDYyOCBsZWdhY3ktdHJ1bmsKKzEwNzY0IDY1ODhhZGUwZWZiNzc0ZThiYjhkZDJkZGQ5N2IzOWJhNzFhNTVhMDcgbGVnYWN5LXRydW5rCisxMDc2NSAzODE4YTE5Zjc0N2YwYTg4NGM0ZWYzOTA0OTdhMmE2MDcwOGM5MGFlIGxlZ2FjeS10cnVuaworMTA3NjYgZjgzNGUxOTdiZDE0NmRhNzI4ZTk2N2RlYTVjOTI0MWIwNDI3YzkxZSBsZWdhY3ktdHJ1bmsKKzEwNzY3IDMyYmMxN2Y3Yzc3YmNlN2EzNTU1NmFmOTQ1MGUxMmNhNWQ3NDA3MGEgbGVnYWN5LXRydW5rCisxMDc2OCA0Yzg4Y2M2MmU5ZTkwYTg0MzRmMDc1MGUzNzllNmVkNGE0OTY1Y2I1IGxlZ2FjeS10cnVuaworMTA3NjkgZDNiZjNjMmFkNzVhOWZlNmU1OTU2N2JjMGE4ZWU4YzhiOWM1ZWJmMCBsZWdhY3ktdHJ1bmsKKzEwNzcwIDZlZDhhN2ZmYzU5NTM3MDRhYjhmNDZiZGU4ZGEyZGVmNGFjYTQxODUgbGVnYWN5LXRydW5rCisxMDc3MSA5MjgxYjVkMzU2NDFhMGMwNWNkODBmZTAxNGJkMjkzMDQwNjc0NzdhIGxlZ2FjeS10cnVuaworMTA3NzIgNzRhOTEwYjg2YjQ0M2QzNTI1OTVlZjAzZmY3N2ZhMDVmZTg2M2E0OSBsZWdhY3ktdHJ1bmsKKzEwNzczIGY4YTM4OWIxMDRmMDkxYjJmNjNhMTZiM2M4NjY4MGRlOTMwZWQ5NTEgbGVnYWN5LXRydW5rCisxMDc3NCBmZjYzMTA3YzlmYTVkNzhmZmM4NGNhNDJmMjEwMjE2ZmQyNWY1ODMxIGxlZ2FjeS10cnVuaworMTA3NzUgZjJiYjhkNTE5NWI2Njg3NGE1MjM3MmI2ZjJjNzhjY2MyOTI4Y2Y1NiBsZWdhY3ktdHJ1bmsKKzEwNzc2IDM1ZWEwYzA3M2VhM2QzMTE1NDg3ZjZiNzNiMDgxMTkxNzdlNjU1ZWUgbGVnYWN5LXRydW5rCisxMDc3NyBiNDM4OTg2YjNjMDhkODNjMTMzZDZhZTg0NjFmNzM4Njg4MDdmYTc0IGxlZ2FjeS10cnVuaworMTA3NzggNWRkNmYxZmY2NmJjMDUwOTk1MjA2MWQzMTdjYWNkMGYyNGJhNjNmMSBsZWdhY3ktdHJ1bmsKKzEwNzc5IGJmOGU4NmI5NWM5MjI2YTU3MDk2MTExYjI3MTM3OTM4NjkwYTA2YWEgbGVnYWN5LXRydW5rCisxMDc4MCA5ZGQ3OWQwMTA0ZDk2ZjRhNTg4ZTZmOGIxNTU4ZmZmZDFlOGQ4ZDIxIGxlZ2FjeS10cnVuaworMTA3ODEgNGMzYzEyZTk1NmE3NTU4NWI3MzRkMDY2NzMxYjI3ODViM2UzYTMyMyBsZWdhY3ktdHJ1bmsKKzEwNzgyIGUzZDIxYzRjYTM2MmZkMzA5MDc2ZmEzM2VlNmJhYjRjODkyODBlOTYgbGVnYWN5LXRydW5rCisxMDc4MyA4YjUwNzUxZjI3MmM4NGVlODQ2OTQ2OTdjYjVkYjRiNjFiNjhiNTIzIGxlZ2FjeS10cnVuaworMTA3ODQgZDNmM2EwNTY4YmQ2YTA4ZDA4M2Q3YzQzNzFmNjZkZTQ0YjliYWMwNSBsZWdhY3ktdHJ1bmsKKzEwNzg1IGI1OWI5OTQyYmFjOTYxZWNhNWRiMzdiZTVlYWZiMjlhYmYwZTJkYWQgbGVnYWN5LXRydW5rCisxMDc4NiA2MjNjNDU5ZjhmYmVkZWI3NmRmMGQ0MzU3ZWU2ZTlkMTAyMTUxNTcxIGxlZ2FjeS10cnVuaworMTA3ODcgMGQyZDYxZjUyYjljNTJkNjFlOTVlODI1OWNmMDAyNjQ4NDdiNWYyMyBsZWdhY3ktdHJ1bmsKKzEwNzg4IDQ2NzRjZDJmNmYwNzJiY2U4ZGQ3YWQzZjVhYjJlNjU0ZjkyNDA3MjcgbGVnYWN5LXRydW5rCisxMDc4OSAwOGRmOWNiNTczYWRhYzgxNTY5MDIyOTQ0ZjYwYmJmMWI4ODQ0MzkyIGxlZ2FjeS10cnVuaworMTA3OTAgZmUxZmQ1NmNhZGE3MDIwMDJlY2E1MGU2ODIzNjc0MWY0YzU4N2E2YSBsZWdhY3ktdHJ1bmsKKzEwNzkxIDQwNzA4NTlmZTYyZWVhNDA4NDFlNTc0NjU5YjVkODgwYjIwNWMyNzYgbGVnYWN5LXRydW5rCisxMDc5MiA0MTQyNDdkNGZlZDczYTNiZGIzMmNkYmRkMjc1ZjRkNWZiYzg4NWViIGxlZ2FjeS10cnVuaworMTA3OTMgZjRmYzlkMThhNTNkNDczMzgxNDhiOTE0NDkyNjcxZWNhN2RiOGJjYyBsZWdhY3ktdHJ1bmsKKzEwNzk0IGQ2N2JlMTNkYTNjYzE4ZTQ5NDRkZmE4NzU3YjIyYjBjZDMzN2U5OTMgbGVnYWN5LXRydW5rCisxMDc5NSBjNjIzNjBhYTVlYTQwYWFiOGI5YWVlODdmYTRkOGFkMzAxNThhYTcyIGxlZ2FjeS10cnVuaworMTA3OTYgZjk0ZDVhZTY0MmE5YjFjZGU4ZmViMTA3MmY5ZGY1YzJkYWEyZmVkMCBsZWdhY3ktdHJ1bmsKKzEwNzk3IGU0MmI5NDI3NTY1MmI5ZDU4MWJhNDY2MDdkNWViOGMzNTgxZjcxMTQgbGVnYWN5LXRydW5rCisxMDc5OCA2M2NjZTlkNzc3OTc2MjJlNTk0NTczYThjOGQxYzIyYTY2YjU2MWRmIGxlZ2FjeS10cnVuaworMTA3OTkgODEwNTc5OTZmZjIxZDFjNGFmMmIxMjk5MzFiODU1NTY0ZTJjOTdjNSBsZWdhY3ktdHJ1bmsKKzEwODAwIGVjODdiNjI0NjZkM2FhZDRhNTEzZjNlMmE0YzNmZWExYmIwZDM2ZmMgbGVnYWN5LXRydW5rCisxMDgwMSBkZjQwM2VkMzViZGRlMDBhMGUyN2M3ZTU2YmU5ZDc1MTQ1ZWZlYWE5IGxlZ2FjeS10cnVuaworMTA4MDIgYzE0ZTY4ZjU5MWNlMzA1YmQ4ZGRjZjM4NGM0NWZlMmEwYWIwZTNiOSBsZWdhY3ktdHJ1bmsKKzEwODAzIDlkZGQ2NzkzMTlhOWQ4MTAxNGM1MzliZmNhMGU4M2NjNDM5OWRlZjMgbGVnYWN5LXRydW5rCisxMDgwNCBlNmVmMGUzOWUzNWNlZDhkNjk2MmQzOWMxMDk1N2Q4YmY5YWQ5NDZhIGxlZ2FjeS10cnVuaworMTA4MDUgZTEzOTIxMDUwMzI3ODNjNTg3MmIxNDdkYmVjOTI5YjFmOTI5YjdkNiBsZWdhY3ktdHJ1bmsKKzEwODA2IGM0OWM4ZjdmZGZmMTg2Y2UxNDNiMjI0Y2Y3NjRjNDllOGYzMjk3MjggbGVnYWN5LXRydW5rCisxMDgwNyBhZjExZGJmMzVlZTVlOWZhOWFmNDE4MGE3ZTc3YjJlMmMzMjczNjMxIGxlZ2FjeS10cnVuaworMTA4MDggYTIzYjc1MTM4YmIwZmIyM2ZmYTM0MjQ0YjBjNDExNTJjMGZlNzM0NyBsZWdhY3ktdHJ1bmsKKzEwODA5IDE4OTc3NDc3MzhmNTk4ZmEzMWFlNzE4ZDUyN2IxNzJiY2YxZjcyMmUgbGVnYWN5LXRydW5rCisxMDgxMCA0ODI0MGY1MjVlYzNiZTU4M2M1OTViYTlkZDZlMzQxOTIyYTY1ZGE1IGxlZ2FjeS10cnVuaworMTA4MTEgY2Q4Mjg0NjJhY2JiODJlYzA5YjAwOGRlYmI0ZDBhNDE5NDM1NjBiNiBsZWdhY3ktdHJ1bmsKKzEwODEyIDdhMWU3ZGE5MjJmODcwNTcyYjk4NDMyYjU4MGIwYTVkZDBlY2I1Y2UgbGVnYWN5LXRydW5rCisxMDgxMyBjNTliNTczNmYzMDdmMzUwZTFhMDdiM2M5NWU3NWI2ZGU0ZDBlZmQ0IGxlZ2FjeS10cnVuaworMTA4MTQgOTY3OWU3N2Q0MmUzZDU4ZWFkYjgxOTFjODcyYjVmMzJmODBjYzQzZCBsZWdhY3ktdHJ1bmsKKzEwODE1IGE0YWU3OTJiOWI2ODAyYWQyMGVmYjAzNGRmN2Y4YmIxZGJmMjVhNTggbGVnYWN5LXRydW5rCisxMDgxNiA1YmZiNWVkYzMxM2NiNjYyMTMwMjUzYjdkZWQ2OTZlZWU0NmU4OGUzIGxlZ2FjeS10cnVuaworMTA4MTcgYmYxMTI2MjAyNmJkZjc1MjQ0YzRjYzU4NmM3MzE2NjdiMDMwODI0MCBsZWdhY3ktdHJ1bmsKKzEwODE4IDZiNzA5NWI5OGU1NGNhNWIxMWI3NmU0NDYwYjE2ZWMxYmRhZGQzNjkgbGVnYWN5LXRydW5rCisxMDgxOSA4ZDkwZTc4MWFkYThiYzBhOWIwZGY5MDJiYWZkMzZlMjcxNGZmMjEyIGxlZ2FjeS10cnVuaworMTA4MjAgNzY1OGM4YTE0OWQxODViMzRiYTBhYTA4YmYzZTZjMjE1OWY2MmZiNCBsZWdhY3ktdHJ1bmsKKzEwODIxIDI4ZGFlOTFjNWQwY2NkZmZkMzQzMmRjMDA1ZTAwNzA2ZDIwMDZkZWIgbGVnYWN5LXRydW5rCisxMDgyMiBhODRmNjU4ZDRiYTRjZWNiMjJjNTJlODQzYmYwOWQyMWJiNzVkYjk1IGxlZ2FjeS10cnVuaworMTA4MjMgZWJmZGUwNmZkYjhkOGNkOWRmNWU1M2JmMDMwMzZkMGZjNjhjNzNjOSBsZWdhY3ktdHJ1bmsKKzEwODI0IDIyODE1YTBiMTI2NzU2ZTQxZDgxNDAzZjU1NGZlY2JlMDY1OTUzZDYgbGVnYWN5LXRydW5rCisxMDgyNSAxYjRhMzdmMzczNDUwYWRlOWIyMWUyMGZlZGJmMGNmZmM5NWFjMDI3IGxlZ2FjeS10cnVuaworMTA4MjYgZDJkODJmN2I0MTlhNjAxMWRmYjNmNzIyZmU2NmRkZGI5ODJhNmVlOCBsZWdhY3ktdHJ1bmsKKzEwODI3IDA1MTk2YTRlNTQ0OGJmOGNjNWJjNTVkZGZiMGZhMjViOTE2MDFkNWYgbGVnYWN5LXRydW5rCisxMDgyOCAxYjM5M2RiMDBiMWFiOGNiM2VjZjBiZGM4NDQxMzdhYTlmYTUyNGQ0IGxlZ2FjeS10cnVuaworMTA4MjkgZTdkZDk5MWZhYTRhZjE5MGMwOTdmNDYwY2U4MGEyYzFmMDA5MzAzMCBsZWdhY3ktdHJ1bmsKKzEwODMwIDhkOTM3M2JkODM4NGRmY2M2N2RiN2JiNmE1YWJlOTFmODljNGI2ZjMgbGVnYWN5LXRydW5rCisxMDgzMSA0MTcyZGE5MTQ0MWFhMGY1NjQyYWU4ZjFkYzY1NjM3NGYzMmQ4NjFhIGxlZ2FjeS10cnVuaworMTA4MzIgNTJjMzM5NTI0NjBhOGY0NDdhMmQ5YTRhMTA5NjAxMGJiODJkMTUzNyBsZWdhY3ktdHJ1bmsKKzEwODMzIDI1M2JmY2I2NWI3NzM0M2FhMWE4NjA2ZGI1MjdmZjNhZGJkMzEwMGEgbGVnYWN5LXRydW5rCisxMDgzNCBjNTcxNTU0MTM0ZDE1MDUxNzI2OGIxODA3ZTA1ODQzMjRkODdlZjljIGxlZ2FjeS10cnVuaworMTA4MzUgYzg5MTkxYzJlNjNmMDIwOGY5MDFmY2UyYmJjYWI5MjFmMzQ2ZTliZiBsZWdhY3ktdHJ1bmsKKzEwODM2IGYzMDg5NjFiMDNkN2Q1MWRlZjlmODhmZTAzNDc5YjlkZmQwMjAzZjEgbGVnYWN5LXRydW5rCisxMDgzNyAxYmMwZGY5NmI0ZGRjM2U5MDZmMWQ3YmMxYTgyNGEwZjE0N2QzMGJlIGxlZ2FjeS10cnVuaworMTA4MzggYTc0MjNlNjhjZWU5NDc0MWY2YTU5ODliZDU3ZjNiMzc3NTE3OTExNCBsZWdhY3ktdHJ1bmsKKzEwODM5IDgyMGYwNmJiNDFjN2Y1NmY1ZjU0NGE1ZTY5Y2EyNjRmZjNmOGViMzAgbGVnYWN5LXRydW5rCisxMDg0MCBkYTRiZGNlZWFhZDdhNzY5ZDM2Y2E2N2E4NWYxN2VlNDk0NzdiNDhjIGxlZ2FjeS10cnVuaworMTA4NDEgNzM5ZDVmZGFmYzMyZWIyYTYwOTdlNmE1ZTNjMzU1MzZmMjU5ZmI5MiBsZWdhY3ktdHJ1bmsKKzEwODQyIGUwNzQ2YTBkYTczNjJiMDMyZGU5NjVmYTdjNTBkYjFmNGVmOTA4NzggbGVnYWN5LXRydW5rCisxMDg0MyBlODBkNGMzZGJiNzg3YzhlNWM5NDlmOWY5NTNiMDk1ZWMwNWEzYjE0IGxlZ2FjeS10cnVuaworMTA4NDQgZTQxMjExYTdhZWYzZmE1MTFlNGE4ODI2NzEzYTQ2ZTVjZmNjZDVlZiBsZWdhY3ktdHJ1bmsKKzEwODQ1IDUyZDdhOWU3MTIyMTUyYTlmNzdhM2IwNzRhMmNlYzliNTNiZDJiNmUgbGVnYWN5LXRydW5rCisxMDg0NiA0NTViMjI5NDU0ODJmZjBmNDY2MWNlNWY5ZGQ4Yzg1NGJmZmQ2YWJkIGxlZ2FjeS10cnVuaworMTA4NDcgNWY4M2Y5N2FhZWI4ZTE5MjM5MGMxNjUxN2ViMDZjZTg0MGY1ZDY3ZCBsZWdhY3ktdHJ1bmsKKzEwODQ4IGUxN2EwMTlmOTM5MGY3ZjUwZGZlYWJiZWI4MWUyNjUyZWQxOTAzZjMgbGVnYWN5LXRydW5rCisxMDg0OSBhNDY0ZTljOTg1ZjhlNWJmOWRjNTFiZWRlZTJiZTMzNjIyNTJmZDY1IGxlZ2FjeS10cnVuaworMTA4NTAgMWM3YTgyZDQ2OWUwNjcxNjdhZWZkNmFhMjhhNTQyZTg4YWFmNjhhNSBsZWdhY3ktdHJ1bmsKKzEwODUxIDY1MGJkMTNiZWM5MmQxMTNmZjQ5YzkyM2FjMjk1NDVhNzdiMDY0ODMgbGVnYWN5LXRydW5rCisxMDg1MiBmMmIwODU5ZmVjZTNiYmU3ZjU5NzAwMmI2NjhmNTNkZWUwNDllNTEzIGxlZ2FjeS10cnVuaworMTA4NTMgYTY1OTMwZjVjZGRiY2RiNWY3MmViMTE0ZmJiNDFlZjAyMjdmY2YyOSBsZWdhY3ktdHJ1bmsKKzEwODU0IDZhZDdjMTY1NmQxOGI2OTM0MTlmYzA5ZjE1MWJlOWQ0MTdiM2E2YWUgbGVnYWN5LXRydW5rCisxMDg1NSA2YzgyNmVlM2U1NTM4ZTQxMTU4YzhmYmZiYTc1Mzg2ZGMxMjA2NmI3IGxlZ2FjeS10cnVuaworMTA4NTYgYTFiZmU1YmM2ZDhlYTgxYTQ0MzhjMDc1MGYyYWExZDk3NmJiMzUyMCBsZWdhY3ktdHJ1bmsKKzEwODU3IDI0MmIzYzljNWJlYzI3M2JhOGFkOGUzMzdhNGZiMjZhOWQ2OGUxMWQgbGVnYWN5LXRydW5rCisxMDg1OCA3N2MxZjExZDBhOGFmY2FmNzA4OTAxZDg2YWZhZWI0MmIyM2M5ZWYxIGxlZ2FjeS10cnVuaworMTA4NTkgOTVmN2M1MmI2Mzk5NDc3YzIzNDdmODFlNzQ5MTE4ZTAyYmJlMGJlYiBsZWdhY3ktdHJ1bmsKKzEwODYwIDdhYzE1ZjFlNTMwMjEwOGY0ODMxNjViOTc5ODg5Njc0YzA2OGY5ZWMgbGVnYWN5LXRydW5rCisxMDg2MSBmNWViY2M3YTVhYjI2ZTFmNzEwNTU5MjlmMTc1OTY3Y2JlYTcyM2IzIGxlZ2FjeS10cnVuaworMTA4NjIgY2QyZGZlZDBjNDRiNTNhNDhjMGZhNTIxY2IxMWFkNDMyN2ZkYmI2NiBsZWdhY3ktdHJ1bmsKKzEwODYzIDgyMmUwODEyZjIwYzM1NzJkMGU1NjQ5MmQ2NmE2N2FjOGFhN2RjMDIgbGVnYWN5LXRydW5rCisxMDg2NCAwNTgxOTBjOWE0ZjEyNmU4OGY1YTQ5YTgwYzEyNGY5N2YxN2ZhYjlhIGxlZ2FjeS10cnVuaworMTA4NjUgOTFiYjVhODA5NDgxYTJiMWM5NmZmNWMwNzMyZGQ2MGE1M2NkZTA4NiBsZWdhY3ktdHJ1bmsKKzEwODY2IDc1MmI5ZjU1NTc4OGMwMjc3YzE4MTA3NzIzM2MyZTQ0YmFjYTc2MTkgbGVnYWN5LXRydW5rCisxMDg2NyAzYTMxMDAxODQ5NDk4ZTM3NGMwMjQzN2YwNjgyMzk2ZjUyOGE3NWI1IGxlZ2FjeS10cnVuaworMTA4NjggZDZiODYzZDFiZWI5MjQ0YWNmYjc1YzJmZjUyZDQzNDFlYzE4MTcyMSBsZWdhY3ktdHJ1bmsKKzEwODY5IDhlOWQ1ZTUxMDNmNWRjMTc1YjFhODZiZjlmYTcyYzJiMGQ4MTJlM2EgbGVnYWN5LXRydW5rCisxMDg3MCA3M2EyNTc3OWU4MzcyZTExZTAwMDAzZmY3NWI0NzgxNTUzYmExYjVjIGxlZ2FjeS10cnVuaworMTA4NzEgZGU2OGY4M2MxNjljYTY4OGU1Mzg5MjJmN2Y0MTc0OTkwNTA4MTZjOSBsZWdhY3ktdHJ1bmsKKzEwODcyIDc2Y2QwMzk3OWZjYTQyM2E4NzFmMDQ5NjVjYWU1Zjc5YWJlZmEyZDIgbGVnYWN5LXRydW5rCisxMDg3MyBhNTgyZDcwZTMxMmZlZWQ5MGE5MDczNDk5MGFmN2FmZTcxMDU1OGZiIGxlZ2FjeS10cnVuaworMTA4NzQgZWY5YjkzYjJhMGZhYTMzMGI0ZjNiNzdiZTAyNGFkNDJiZWY2NWE2NCBsZWdhY3ktdHJ1bmsKKzEwODc1IDc2NjlkZGYwZTdkNDk1MGE3Y2E4ZjNlODNmNjU2ZGVjMGQ2YWIzYmUgbGVnYWN5LXRydW5rCisxMDg3NiA5M2FhMDhjNzdlNjBlYjJiZGZlZGVhZTM5YjdjMmQ3NzczOTkyZDY0IGxlZ2FjeS10cnVuaworMTA4NzcgZDdjNTY4ZTc3MDdiZjE3OThkNDVkMjYxMDUzMzZhMDUzZjI4M2UwOCBsZWdhY3ktdHJ1bmsKKzEwODc4IDc5MDcxYTRlMGVjYWI2MzE0M2U5ODNmYmJlZWE0YzdkOTkzOTVkNzcgbGVnYWN5LXRydW5rCisxMDg3OSBjOWI3ZTkyNmZkODY5OTVmMTgxMDYzNTI4MjJkMGJiYmI0YmU5YzYxIGxlZ2FjeS10cnVuaworMTA4ODAgZmYzMWYyNTAxNzQyNTM1MmMzMWZkODI3Y2JiMGQyODgzNmM3NDUyMyBsZWdhY3ktdHJ1bmsKKzEwODgxIDRlZjdkMjYwZmVhYzkzMWVjMThiNzlkMWQzNTFmYWJmNmU1YWE0MzMgbGVnYWN5LXRydW5rCisxMDg4MiA2MjcwYzZiYWQ4MTE2ZmUxN2E3ZWQ0YzgxZDUyOWYxZDBhYjQ5NzBiIGxlZ2FjeS10cnVuaworMTA4ODMgNzBmOTNlMGM1ODBlZWNhZmJhMjkyOTc1YTkwNjc1YjYyNWQ3M2Q0YiBsZWdhY3ktdHJ1bmsKKzEwODg0IDBjYjAzOTRjMmVkY2ZlMTgzY2Q3NzdjODdiZTg2OTliNThhNTllMjMgbGVnYWN5LXRydW5rCisxMDg4NSBjNGRmOGI2NjM3YjY5NDViMmY5ZTgyMzYzYmY2ZDE1YzcwNzYwYTlhIGxlZ2FjeS10cnVuaworMTA4ODYgNjRiODhhMTc4MzI4NjkxY2Q0YzI1ZTc4ZGU3YTVkZmZiMTVjOThmOCBsZWdhY3ktdHJ1bmsKKzEwODg3IDNjNDBhZjJkMWRlOWUxMzRiNWU3ZGJkNWUzYjEwNzJmZmJhOTYyZWMgbGVnYWN5LXRydW5rCisxMDg4OCA0YTMzYmI3YWRmN2Q2MWJiODQ2ZDI0OWEzYTAzN2UxMGE0ODFmOWUxIGxlZ2FjeS10cnVuaworMTA4ODkgMDk2ODU3YjBlNGI4NWRiZGNlMDdjNzY5MDJlMWY5OTg3NjNiOTg1NCBsZWdhY3ktdHJ1bmsKKzEwODkwIDhhNGZlMTk5YjQ1ZGVmNzI4Y2MyZDMyYzFkODEzMDFlZWQ4OTVlZDMgbGVnYWN5LXRydW5rCisxMDg5MSBmMjE4NjdmODAzNWJkMzg5OTVjMmYxYWFlMWMzN2Y4MDVmNzM4YmQ2IGxlZ2FjeS10cnVuaworMTA4OTIgYzllM2NlOGU3NGI1ZDdmNTFiNGYwOTNhMmEyNjdjYmVjYmQ2YzljYSBsZWdhY3ktdHJ1bmsKKzEwODkzIGRiOGIxMGI3Y2NmMjI0OTc1NDcxODgwNmY1MDQxM2IwMWE2ZTdhZTQgbGVnYWN5LXRydW5rCisxMDg5NCA0NTA1MTYwYTdlNWM2Y2UxMzZkZjExMjAyZTk5YTY2NmU5OWQzMWFiIGxlZ2FjeS10cnVuaworMTA4OTUgNTVmYzhkOTMzMDg3NjZmMTg5YzljZjY5MTAwZTgwNjQ2MTZjYjk2YyBsZWdhY3ktdHJ1bmsKKzEwODk2IDQwNjRiNjcyOTUzN2YwMzFjMDg3Nzk5NzhlZTZiYTYzMzIzMzJlZjggbGVnYWN5LXRydW5rCisxMDg5NyBlY2RkNGI0Njg2MjY4NTkyYzg1M2U3NGI2MjA5YTcwYTBkMzI5MWZlIGxlZ2FjeS10cnVuaworMTA4OTggOWVhNTAwMzExNDljMjIwNGU3YjU4ODZkOWMyYmY2MzAwNDBhNzU2OSBsZWdhY3ktdHJ1bmsKKzEwODk5IGYzOTg0MTlkNTBmOTc0YzU1NWViNmYyOTIzZGY5Mzg1MTQ5MmQ3YmMgbGVnYWN5LXRydW5rCisxMDkwMCBiNWZmNjYzZWU3NmQ5ZWMzMDYzMTQzNmE2ZTAwYjgzNDY2M2ZkYzRjIGxlZ2FjeS10cnVuaworMTA5MDEgYzg1ZTE0MjkzYzJlZTFjYzQ1MTYzZjg1ZGVjZmUyMTE0OTQ2Y2QwOSBsZWdhY3ktdHJ1bmsKKzEwOTAyIDMwNGQ0ZTQ4ODdmNGNhNjBhN2M0N2YzMzdiMmJjMjJmYThjMmMxYmUgbGVnYWN5LXRydW5rCisxMDkwMyBkOTZjYmRhY2JlNzIyNGM5Zjk4YjYyMDMwZTlkMjk4ZWNmYmY4ZTk4IGxlZ2FjeS10cnVuaworMTA5MDQgNDcyZTQyNTQxNGQ4MjQ3ZmQ5Mzc1N2M5YjU1MzUyMTE0YzY3NDhmNiBsZWdhY3ktdHJ1bmsKKzEwOTA1IDBhMDBkZDU3MTFlNjIxMzE5ZjlhYWFlOGFiNmVhZTE2Y2M5NzRjZTggbGVnYWN5LXRydW5rCisxMDkwNiA3NTZlMmVmNTFiMTljNjNmZDA0ZTg3OTQ4ZjU2YWJlODY2NDRmMTQzIGxlZ2FjeS10cnVuaworMTA5MDcgZTJkNDFiZjFhMGYwNGNlZDc1ZDMzMDNkNmVlMTUzMGFkMjdiZDEyNyBsZWdhY3ktdHJ1bmsKKzEwOTA4IDBiM2U1NzdhOGRmNDdiZmZlZjlmYTUwNTdjMzJjYWQ3ODEyNThjMDEgbGVnYWN5LXRydW5rCisxMDkwOSBlOTZlM2QzODc2MTFmMDNhMjdjYmJiNmJiZjM5NjViYjEzMjIwMDIzIGxlZ2FjeS10cnVuaworMTA5MTAgM2U2NTNlMjA0YWQ3YmJmZTlhNDZiNzAxN2JmNjIzMDA5Y2Q0ZTU0NCBsZWdhY3ktdHJ1bmsKKzEwOTExIGY3YzU4ZWQyOTgxZDFlYjFiZjUzNTNlNjhkYjQyNGM5OTkzOTNkMDUgbGVnYWN5LXRydW5rCisxMDkxMiAxMmRkYjliZDBkMzM5MWQ1NjMxNGMwOWJkMjYwMTcwOTI4YmQ0OTQ0IGxlZ2FjeS10cnVuaworMTA5MTMgODJmMDIxZWVjZTJjNzg3ZWJhMDIzM2YxMjZlNjg5Zjk5OGJhMGM1YiBsZWdhY3ktdHJ1bmsKKzEwOTE0IDkyYzBjOThiNDJjNTM2Nzc4YjUyM2M4ODk5MDU2YWJhOTE1MmU0NDQgbGVnYWN5LXRydW5rCisxMDkxNSA3Y2RmZjhhYTgzMTgzZjdmNTFkMzFiNjE3Y2JmOGU3NTZkZGU0OTdkIGxlZ2FjeS10cnVuaworMTA5MTYgYWU3NDZlYWIyYTk2MDU1NGE4NWU5ZTg4NzU1OTE1MTA3MWRiNGY1NSBsZWdhY3ktdHJ1bmsKKzEwOTE3IDc4ZWI0MGYwMzI4NDNjYjFlYWExNDQyMGIwODA2ZjQzMTA5Yzg4YWMgbGVnYWN5LXRydW5rCisxMDkxOCBhOWE3ODhjNzRkNmU3YzI1MTVlMDNjMWU5ZjZhZmY0ZTc2YjYzYjc0IGxlZ2FjeS10cnVuaworMTA5MTkgYzdiMDQzMTM2ZmRiZDgxMWIzMDg1YzQ0ODQyMDBmOTU2ZWJhM2Q1NiBsZWdhY3ktdHJ1bmsKKzEwOTIwIGMwNTliYmQxNGIyMzJkM2VmZTI0ZjEyNWU0NjNiNDEyYjIwYjRmNmIgbGVnYWN5LXRydW5rCisxMDkyMSA1MzQ2MDI3NDYwNzlkMTNjOTI5YmY5MTZiNjcwZDNlZTRmN2M4NTNlIGxlZ2FjeS10cnVuaworMTA5MjIgNzc0OWMzZTAzMjRhZjA2NmE3ZThiODVjZjVlYzQ2MTkwZDYxOGU2MyBsZWdhY3ktdHJ1bmsKKzEwOTIzIDllNGFlYTVhNjUyZDIxYWQwYjUxY2EyM2Q2MGUzZDg4M2Y5ZDk4MGEgbGVnYWN5LXRydW5rCisxMDkyNCBmZDVjZWZkZDFmNjFkY2Y0YmU0YmI4MDRkYWFlYzYyYmYzNGFlODEyIGxlZ2FjeS10cnVuaworMTA5MjUgYzU1MGVlNDkzNWIwYzc4NmVmZWQ3NzQwZDhkMzdjYjQyZmRhZWQxNSBsZWdhY3ktdHJ1bmsKKzEwOTI2IDZmNzBjYTdjODRlNjZjZDMyZDYzYjlmNzVhYmE4OWYwMmVkYjAwNmIgbGVnYWN5LXRydW5rCisxMDkyNyAwMjQ3MTQ1NTg2MjBlYmQzMzJlNjc1MGQ3YTRlN2U1OWZhYTM0YTkwIGxlZ2FjeS10cnVuaworMTA5MjggNTlkZmE5ZWI3YzA3MGZmNjVlYjRiMWQzZTI0MWU3NTU2MDE4Y2YxYyBsZWdhY3ktdHJ1bmsKKzEwOTI5IDRlNjY4ZjFhOWRkZGVmNWEyYTRjYTNmNjM0YzdjZGM3ZWUwYThjNjEgbGVnYWN5LXRydW5rCisxMDkzMCBhMzQxNjA5MWMyYTI1YTM2MTMxYWUzODEwNjYyNWIyODM1MmYzMTEzIGxlZ2FjeS10cnVuaworMTA5MzEgMzZlYTEzYmEzMTM2NDQzZjcyYmU1MjgzNDZiMmIwNGZkYzVhMjA2MyBsZWdhY3ktdHJ1bmsKKzEwOTMyIDYxOTEyZDRhZDUyZjY3ODNlOWY5YjA1ZWMwYzU2NjU3MjY3MmI5ZjYgbGVnYWN5LXRydW5rCisxMDkzMyA3NTRkZTYyMWU4YjMwY2U4Y2UyZDViMTkxZGQ4ZTdjYTkwNzgyMzA0IGxlZ2FjeS10cnVuaworMTA5MzQgODRkMWI3Y2Y4MTVhNzllOTIzZGRlMDQzMDgyNjdiOWI4ODU1MzVjYyBsZWdhY3ktdHJ1bmsKKzEwOTM1IDRlNTlkODkwYTRiZGFkOThiZWUyMTMzMjE3NTE0YzI1MThhZDdjYmIgbGVnYWN5LXRydW5rCisxMDkzNiAyYmQ4ZDUyMGZmYWMwMWE1N2UxOGI5NTQ0ODUzNzE5NWVjNjY3MmM0IGxlZ2FjeS10cnVuaworMTA5MzcgYWY5MjczYjEwNzNhYWFmODk3MjFiNDIxZjRiMjc4NGZmNjZkMDY5YiBsZWdhY3ktdHJ1bmsKKzEwOTM4IDkyYzg4Y2E2MmRhN2I4MTM2OTZmZWI1N2RlZmE2YjFmNWQ5ZGRiNGUgbGVnYWN5LXRydW5rCisxMDkzOSBhZjQ4ODg3Yzk3MTc2YjZlODU1MzAwMTk0ZTliZDRhZjA0YzczZTVmIGxlZ2FjeS10cnVuaworMTA5NDAgNTdkYWUxYzdlYTg0N2JiOTUxMDkyZDUxMmJiMWQ4NDJiYTY0ZDVjOSBsZWdhY3ktdHJ1bmsKKzEwOTQxIGY3NTBiMWZmZTM1MjkyZTJkYjc0NWZiYzBkYWY1MjVhMjA1NzFjZmIgbGVnYWN5LXRydW5rCisxMDk0MiAyMDk1YWU2OTBhYWNhMDRkNzQyYmZiYTdiOTRmYTU4NTZmNDdkM2MzIGxlZ2FjeS10cnVuaworMTA5NDMgMTAyNjdjNzU1NWFlNjUxMDE2NjhjNjQ2ZTY4MzAyZmUyNjQ0MzI0MyBsZWdhY3ktdHJ1bmsKKzEwOTQ0IGRhMDc2NjNmOWZmZjQ2ZmQwODE2ZDlhMDY0MTY4Nzg3YmU4NTBiYzIgbGVnYWN5LXRydW5rCisxMDk0NSAxMzNmNDU1NGEyNmQ1N2NlNTkzNGQ4OWVmZDZhNWY3OTIzZWNhYjdhIGxlZ2FjeS10cnVuaworMTA5NDYgNzE2MGU1MjllOWExZWIyYWU2YmNhYjkxYTk3ZmZkNWQzZWM1NTJlYSBsZWdhY3ktdHJ1bmsKKzEwOTQ3IDBlNmZiYmUzYjYzYzE0MGY3OGM2OTVmMmI3MTk4ZjE2NDc1ODk2ZDYgbGVnYWN5LXRydW5rCisxMDk0OCA0MTIwOWQ1ZDFkNjQ5MGM4MDdiZTZmOThlMzBiNGY0MWY3OTM2MTc0IGxlZ2FjeS10cnVuaworMTA5NDkgNzYzOGU0NTk0MjA2NzViNmIwODA1Njc4MTY4ZGYwNGI1MDkwNGE2NiBsZWdhY3ktdHJ1bmsKKzEwOTUwIGMyN2NkNWZjNDZiNTMyZmFkZDQ0MTFhZTdkMmVjMThkYjE1NGU3OTYgbGVnYWN5LXRydW5rCisxMDk1MSA5YzMyY2FjNTYyNTA1ZDNjZGUyMGVkOWQ0ZTk0NjFiYjM5MzUzNzBhIGxlZ2FjeS10cnVuaworMTA5NTIgOTMzODgyYzBlOWZiYTBhMmRmZWRkMDU4ZDk0MDU2ZWEzZGFiYzhmZCBsZWdhY3ktdHJ1bmsKKzEwOTUzIGM4OTE4OWIwMjM2ZWMxZjEzOTM5MGQ0OWM4MTIyNzYxODg5MTQ3YjEgbGVnYWN5LXRydW5rCisxMDk1NCBjNTU1YzcyZjA5MGRkMDg3MDUwYzc0YWUwZTY5NWI1OTMwMTU3Y2FiIGxlZ2FjeS10cnVuaworMTA5NTUgYTlkODhiZmEyNGFmMzcyMzg1MDNhYWJlOWNmNTkxOGUxYzdkZjc3ZiBsZWdhY3ktdHJ1bmsKKzEwOTU2IDA0OWFhM2E4YTE3MjBkMTRlZDM5ODQ0ZThlZDE4M2QwNDQzZDUzYTUgbGVnYWN5LXRydW5rCisxMDk1NyBmOGM2Y2Y1Y2ZhN2QwMTZjMjljZTA0NzRlYTdiYmExNmYxZjRkZjgxIGxlZ2FjeS10cnVuaworMTA5NTggN2Y5NWJiMmYxNzA0ODk0MzdiNzQyMTRiZWYxZWYzMWM3NDUzMjBkZCBsZWdhY3ktdHJ1bmsKKzEwOTU5IDNhODVhZDVlNDExNmNkNTA2ZTVjNzY1ZDJhNGNhMmNiYzdlZTQ5MmIgbGVnYWN5LXRydW5rCisxMDk2MCA0YmE1ODdhYThhOThjOWM4Yjg0ZDk5ZjFiN2UzMWU5ZmY0ZWQ1MmY4IGxlZ2FjeS10cnVuaworMTA5NjEgZTI4MWQ1MDM2NzI1Mjk3ZjUxNWM0NTA5YThmZmQ2ZTQ0MDIwZTZjOCBsZWdhY3ktdHJ1bmsKKzEwOTYyIGQ5M2FlMzc0ZmI5OThhYmRiYTY1YzY2NDcxNDY0MTZhODY5NDU5ZTQgbGVnYWN5LXRydW5rCisxMDk2MyA2MTRhN2ZmZWUxMTMzZTcxMWM4YzJiY2M0M2QyZmZmM2U3NTMyNDYyIGxlZ2FjeS10cnVuaworMTA5NjQgN2UzYjcyZDhhZTk0NjIwMjA3OGMxNjAzMjQ5NGU1Y2YyNWMxOWM2MCBsZWdhY3ktdHJ1bmsKKzEwOTY1IGY2ZTkwMGRhMzdkYjQ1ODI3NGZkMTlmY2Y2M2NiMDEyYWYwYWI1NWEgbGVnYWN5LXRydW5rCisxMDk2NiAyZTRmMTc4ZDdlMTc1OTM4YzYyNzcyYmY1NjY1MTc2YTFkZjk5MjNkIGxlZ2FjeS10cnVuaworMTA5NjcgN2Y5NGI0OTU4MDU2MjllZTZlYjhjNGEyZTM2ODVjOGU3NmZhZGNmNiBsZWdhY3ktdHJ1bmsKKzEwOTY4IDUzYWZjZDI4MzI1ZWY5MTczNzVlNGY4NjI5NmI4OWYyM2I4OWU0ZWMgbGVnYWN5LXRydW5rCisxMDk2OSA1MTQ1Nzc0MGY1Y2FlOWQ1N2QyNjVhNDY2MjhmNzNkZTVhNGFmMmM1IGxlZ2FjeS10cnVuaworMTA5NzAgMzYwNDEzMWY5NDJkNjhmM2E2ZjM1OGVhMjJmNGY4YzEzNzM1ZDc5YiBsZWdhY3ktdHJ1bmsKKzEwOTcxIGJiYjdlMWRhNDY4NjIzNTFkMGU1MWZjMzkwYzVmNmQyM2ExNmNiOGMgbGVnYWN5LXRydW5rCisxMDk3MiA3ZDFkZmU2NmY2NGJjNTUxYzAzYjliOTVlOGU5ODgyMjAwNDliOTRkIGxlZ2FjeS10cnVuaworMTA5NzMgMDM4YTVjNDMzNTg2MWZlZDc1NjJiMmYxY2U2YTFjNTgyMjY4M2ZmZCBsZWdhY3ktdHJ1bmsKKzEwOTc0IGViNmY2NTk2NmZiMjJiOGYzNzBiMjRjMzhjOTk3Y2QwZmRhOTY3NTggbGVnYWN5LXRydW5rCisxMDk3NSAyOGY2YjAzYmI2NGYwNThkOWE1ZDdkODBhMzFjMDk4ZjZkOTk2YzI1IGxlZ2FjeS10cnVuaworMTA5NzYgZmMyOTYyNWRmNTMyNTkyYzU0OGUwNWNhZDVkMDVmZDQ3ZGI1MjViOCBsZWdhY3ktdHJ1bmsKKzEwOTc3IDAzNjNmMTk4ODdkMTViMmU2MGFmM2Y5ZmVhYTZkMzQ2NzljNzRjODkgbGVnYWN5LXRydW5rCisxMDk3OCAxZDhkYWI1YWE3ZDEwZTI5MzljNTg0ZDU5YjIyMzIwZTQyY2E3ZTUzIGxlZ2FjeS10cnVuaworMTA5NzkgMGY5MWMwYmJhY2M1N2M0NDJiYjQwOTI3Y2Y2YTIwZDhmYzMzYzZiNSBsZWdhY3ktdHJ1bmsKKzEwOTgwIDY5YzliYmI2OWFhYjI2N2ZlZjU5OGZmYmMxYmExYzBhZDNmMDc1N2QgbGVnYWN5LXRydW5rCisxMDk4MSAwNDQ3ZWY4NDgzYzhjNzU0ZTczZDEwNDA3NTRkYTlmY2U5MWJlYzkyIGxlZ2FjeS10cnVuaworMTA5ODIgOTJjZjdmNDI3NzIzMGU5MDkzZmI1NzczZGEyMmVmODg1N2RjZWZmOSBsZWdhY3ktdHJ1bmsKKzEwOTgzIGJhMzEyZTc5MGIyYTJjYjYzOWRhZjZhMmQ3YTZmMDg4N2FiNTgwZTggbGVnYWN5LXRydW5rCisxMDk4NCBiOGJiY2MwMDlhNmFiMzVkZmJhNzcyMTEyMTYyZjE1MzNmMzhlYWVhIGxlZ2FjeS10cnVuaworMTA5ODUgODVlNjgyMDQ4MmZmODM1Y2IxOWNiMTE4MjRmZjgxNDA1NmY0OTNkYyBsZWdhY3ktdHJ1bmsKKzEwOTg2IGRlMTFhODhhYzQ5OGViNGYxMjZkNWQ5NmViMjhiMTQxZjc0Yjk4OWUgbGVnYWN5LXRydW5rCisxMDk4NyBlODJkMDI3N2U2NTNjMDk4NWY1MGZmMTkzMTExOTNlZWFiYmRkNjIwIGxlZ2FjeS10cnVuaworMTA5ODggNmJmNWI4N2FmMDJmOWE2MGM4NGUyMjFjNTViYzVhMjA5ODQ1MjNiMiBsZWdhY3ktdHJ1bmsKKzEwOTg5IGY0ODA5ZmYxZjRkYTRlNmE1MmJjZjc5YWU4Y2QwOGRkNDljYzczM2YgbGVnYWN5LXRydW5rCisxMDk5MCBkZWQ2OWQxMmNjNjgzNWViMDQ3MjMxYzI5NDUxMzc1YTNkMTUyNzMzIGxlZ2FjeS10cnVuaworMTA5OTEgOGU4MjA3MTZjZjEyM2UyYzI1ZmU2NmQyNjk5MzExM2ZhMmMxNGRmZSBsZWdhY3ktdHJ1bmsKKzEwOTkyIGRlMGYwYzNlZDQyNGU2YTY1MzUyMDhmNWJhYzQ2Nzk1NGExMGJmZWMgbGVnYWN5LXRydW5rCisxMDk5MyA2OTY2MmYxNmE4Mzg5NjQzNjUwYTU2YjkyNmI5MDUwZjA3OThiNjc3IGxlZ2FjeS10cnVuaworMTA5OTQgNGRlZDQwMThiMGViM2NmZjMyYzM0YTU1YWZiN2QzODFlMGI1ZTZiYiBsZWdhY3ktdHJ1bmsKKzEwOTk1IGRhOWJmOWVlZDFmYzcyMjJhZjU3ZDRiMDc2YjM1NThhMDI2MTY0MjAgbGVnYWN5LXRydW5rCisxMDk5NiAxZWY0MGQ1YWNjZTIyYjc2NmU0MGIzZGZmZjUxNDZlNWFhYmNiMmU0IGxlZ2FjeS10cnVuaworMTA5OTcgMTZiM2ExMjFmZjc3MmUyNGRmZGYyYjI5NmU2ZjA2NTQxYWVhMTY0ZCBsZWdhY3ktdHJ1bmsKKzEwOTk4IDgxZTI5NDc3ZDJhNGMwYzc2MmEzMzJlNGU4Mzg0YzMyYzAwNTkxZTggbGVnYWN5LXRydW5rCisxMDk5OSA1MGU4N2MwOWMyMzY2YzMzMzhiYTNiZDIzZTQ3OGZhZTZlNjI1MTExIGxlZ2FjeS10cnVuaworMTEwMDAgYjU2OTgxYzBkNjFlYmIyYjgxZmYzODkzNTBiYTI2Y2NkNGYxZTU2YiBsZWdhY3ktdHJ1bmsKKzExMDAxIDYxYTljNTI5NDU1YTkwODJiZDllMmRiZGIyZjE2ZjRjZGM5YmY3ODcgbGVnYWN5LXRydW5rCisxMTAwMiBiOTQwMTVjMGM4MzdhZmU2ZDBlNzU1ZDU5MjUxZTA3NjBhMzdiMjU0IGxlZ2FjeS10cnVuaworMTEwMDMgMDY0Zjg1ZWU5YmU1YjA3OTVhMTlmOTMxM2FhZjE0MzZmZjhiNTNjMyBsZWdhY3ktdHJ1bmsKKzExMDA0IDRlNGZkOTU0ZGRhMGZiY2NjNDkwMjM3ZGIyODdkODk1YTk1MDNkYTUgbGVnYWN5LXRydW5rCisxMTAwNSBkOTk5MjBjMGJmYjAxNWU3MWNjZGI0ZWEzOWI5ZjA2OTFjNDMwNWIyIGxlZ2FjeS10cnVuaworMTEwMDYgNDdiZjNiYjk1NTZlMjFmOGMwNmE4YmRhNDNiZTIyY2E5NjVlM2E3ZCBsZWdhY3ktdHJ1bmsKKzExMDA3IGVjMjZkNTE0MmViNDQwMjEzNDhjZDNjNzMwNzg2OGIxZWUyNGFlOTAgbGVnYWN5LXRydW5rCisxMTAwOCBkN2UzOWVlYTc2ZjRjZTM4NmQ0NjRmODhiYjZlNTdlMWUwYzQ0NDJkIGxlZ2FjeS10cnVuaworMTEwMDkgNWYxZTQzMWEwYTgyNjhmNzNhYWI4MWE2M2JiNGFlOWI4ZmU4Y2EyNCBsZWdhY3ktdHJ1bmsKKzExMDEwIDNjOGIxNDliNDJmZjNhNjU2ZTY4YjM5MjBiYTNkNWM5MmViOWNiMTUgbGVnYWN5LXRydW5rCisxMTAxMSAwMzY2ZGFlZmEyM2MyNjk3MGQyNDdhNWIxYzM5Yzk1ZmNmYmUyMmUzIGxlZ2FjeS10cnVuaworMTEwMTIgNDgyOWI4ZmFmMmI0MmI0YzhlODRlM2ZhMzU3YmZmMzNmNTNhNGQ5NyBsZWdhY3ktdHJ1bmsKKzExMDEzIDE4YTkyODlkZjk5YTFmNWQzOGM0OTIyNzkxMGY3ZGJmMjlhYWExNDcgbGVnYWN5LXRydW5rCisxMTAxNCAyMTY2ODY2YWY5MmJiMTZjODU0YTM0ODdlYWY2OWM2YjE3NTYwNzIzIGxlZ2FjeS10cnVuaworMTEwMTUgZTVkMDZhNjAyNDY5Y2Q5ZGZiZDA2ZTdiYTZiZGMzNDI4NjAxMmYwZCBsZWdhY3ktdHJ1bmsKKzExMDE2IDVmNWI0OTJkMTgwNDNiYTYxNGJkYzcyY2Q3ZDBmYjhkZmM0YzE1N2UgbGVnYWN5LXRydW5rCisxMTAxNyBmMzFjZTQ2MjAxYzk1NjAxNzhmZDAwMTA0ZjhkMzU0OTQ2NWNiNzMzIGxlZ2FjeS10cnVuaworMTEwMTggMThhNGUwMzFkN2NhMGE2ODlmYWEyMjQwYmI0NzdkMTUwOGJhMjQxZiBsZWdhY3ktdHJ1bmsKKzExMDE5IDNjNDA2M2YwYTc4ZmFmMjc2NjUzOTcyZjc2MTdmOTc4Yjc2Y2M5YzAgbGVnYWN5LXRydW5rCisxMTAyMCAyMTM1ODdiM2I5ZDBhZjcwZTVlYTI4NjBlYzFjMDVjM2MwNGJiOWEyIGxlZ2FjeS10cnVuaworMTEwMjEgNTA5OWY0NGJhZjI1NWMxOTczOTczMmNmMmJlMTg4ZTdlZjdmMzIxZSBsZWdhY3ktdHJ1bmsKKzExMDIyIGY0YjYzNmQxNWFiY2Q5NWNkN2I4Y2NkOGU0MmZjNWMzYjk1NTRjYWMgbGVnYWN5LXRydW5rCisxMTAyMyBjZjBmYWFmM2MwNGI2ZGViZDA2MzliMDExMTZjMzA5MDY5MDE0NTQxIGxlZ2FjeS10cnVuaworMTEwMjQgNWMyZjE5ZDE5NjQzYTI4OWJjNzZkYjgyODkzODkxMGJlNWQ0YmYyNCBsZWdhY3ktdHJ1bmsKKzExMDI1IGU5NTFiZjJkN2Q5M2IyM2IwMzJkZGRhYWE0ODA1M2MzYTA4MTU1MTUgbGVnYWN5LXRydW5rCisxMTAyNiAzNWEyMTUxZmIxYzNmNjI0NzVhMjVhNTNiNzAwZWYwNjI4NWFjNmJlIGxlZ2FjeS10cnVuaworMTEwMjcgZTYzMzkzZjUzNjcwMjM0ODM5MjM2Nzk4NWE5NDEwZDQ4YTEwOWY5MSBsZWdhY3ktdHJ1bmsKKzExMDI4IGRjOGRhYTc0OGM0MDkzNDUxYWM4YTUyYjZkMGRhZTY4MDA3YjM2MWEgbGVnYWN5LXRydW5rCisxMTAyOSBkODRmMTIwOWNiYTUyOTk4NDY5MzY3N2VmYTJkNDg3YjM5MjYwNzVjIGxlZ2FjeS10cnVuaworMTEwMzAgZmFjMzM3MTZhMjE4MzRmOWU2ZjQ5NTg1NDQ1MWEwZTExNDhkMzkxMCBsZWdhY3ktdHJ1bmsKKzExMDMxIDFlYTE5NWIxNDI0NTk5ODRjZjk1MGExNzM4NTJkY2EzZjNmNzMxMWMgbGVnYWN5LXRydW5rCisxMTAzMiAxZTlkNjVmOWNhNTNjZjM3OWM0MDMzMDk1ZjNkNjMwZjI1YjZkMDlhIGxlZ2FjeS10cnVuaworMTEwMzMgNTg5YjY0MTM1ZWU2NTEyN2Y5ZDUzNWUzZTNhOGZmN2U5NWYwYTkzYiBsZWdhY3ktdHJ1bmsKKzExMDM0IDIyYTA3MjRjNmJhYzUxYTFhYjNkYzBiMDBjMjRhZGM3Mzg0ODJlODcgbGVnYWN5LXRydW5rCisxMTAzNSA0MzU3YjRlYjVjMTlhNjYxMDM0NGVmZTk5NWNjMTE3Y2E1OTM5ZTUyIGxlZ2FjeS10cnVuaworMTEwMzYgZDdjZTlhZTM2MmE5MDQxODFmZTM0NWI0ODMzZTgxZDE4NmYzMjM3MSBsZWdhY3ktdHJ1bmsKKzExMDM3IGY2ZDgyMzM0Y2ViMTU2YzYwM2U0YmQyZmI0MzRlYWZlMTM1ZmFkZjQgbGVnYWN5LXRydW5rCisxMTAzOCBkMGVlYzk2YjRjNTYyM2Q3YWUwY2Y3ZjgxODY5ZjE0ZDc0NGI4OGQ2IGxlZ2FjeS10cnVuaworMTEwMzkgYjAyYzQzYTIwMWFlNWRlYzAzMWE5MThjNzkwYTc3MTc0ZGRmNmUyYyBsZWdhY3ktdHJ1bmsKKzExMDQwIDhlNjBmZjA2NDYwOTkzNDZkM2FjZDE3YzEwZWEyNDJlMTdlNzllMTIgbGVnYWN5LXRydW5rCisxMTA0MSA5MjI2NzgzOGZlYjljYWU3MmZiZWU2OTFiYzM4ZDM2MjBkNTNkY2Y5IGxlZ2FjeS10cnVuaworMTEwNDIgNDZmZDYzMGRjZTYzMzFjYjU4MWUzZTYwMzUyYWIxODZlZTNlODUyOCBsZWdhY3ktdHJ1bmsKKzExMDQzIDg5NzNlNzA4NWNmNDljZDNjODY4ODkzYjhiZmZmNTAyMmY0YjExYmYgbGVnYWN5LXRydW5rCisxMTA0NCBmZjlhZGI1N2I4YjUxYjI5OTM4ZmYyOTZlYmY2NTVlNDVlZDM3MzViIGxlZ2FjeS10cnVuaworMTEwNDUgNDE5ZWU5NWRmMmQ4OGY1ZDkyMDY3YWI2ZDJlNGQ0ZGU0MWQzYmJiMSBsZWdhY3ktdHJ1bmsKKzExMDQ2IGU4N2QyMmM3ZGUzYzNjOTgzOGIyYzY1ZWJkOGI5MDg0MzI3ZWRlYjAgbGVnYWN5LXRydW5rCisxMTA0NyAxOWU4MDE2Y2QzOGNmZTZjYWJlZWZkZDM2NzQyOGQ3NmYxZDIyNGM3IGxlZ2FjeS10cnVuaworMTEwNDggNmU4YjBlNzU0YTdmMzcwOWIyZDQ0ZGQxMjA0Y2IyNWMzMjcyZTM4MSBsZWdhY3ktdHJ1bmsKKzExMDQ5IGJjODYxOWFmMDkyM2JlMTZmNTI1ZGQ4YTI4NjIyMGNlNzg3ODQxNzkgbGVnYWN5LXRydW5rCisxMTA1MCA4NzE2ODE2ZTA4NTk0ZjQwODk2MWJkYTQ3NTU2ODA3YzhhN2VhZDUzIGxlZ2FjeS10cnVuaworMTEwNTEgNDUwMDc2MDY4YjIyYWVlNGQ0ZTQzY2NhMzdmNjQ3NWNhMWFkZmY2OCBsZWdhY3ktdHJ1bmsKKzExMDUyIGJkNjk1ZGUxOGVjZjIzYWRjYmI1YjJlOTdmYzE0N2I5OTc4MDlkNTkgbGVnYWN5LXRydW5rCisxMTA1MyA2N2FhOTk3ZmJiMGUxNGIyMTM3MjMyNDUxNTFiMjU1ZWQyNmExYWJmIGxlZ2FjeS10cnVuaworMTEwNTQgZWE4ZjBmNWFiMDE1N2U5Y2FlOWI4NzhjNGM2YzBjMWZkNDI3YzEzZSBsZWdhY3ktdHJ1bmsKKzExMDU1IDYwNTFmMmU0MzUxNzY5OGY0NTQyZmVhYzk0ZTRlODZmZDEyY2E3MjMgbGVnYWN5LXRydW5rCisxMTA1NiAxMTBlOTczMzk3NDBlYjQ1ZjZmOWM5YWI2MThhMTNiNzc2MmM4YmM5IGxlZ2FjeS10cnVuaworMTEwNTcgOTRjZTc1ZjQzNDUyZjlkYjU2ZjM2NjhlMWQ4NWQxNjg2Y2ZkMmZkMiBsZWdhY3ktdHJ1bmsKKzExMDU4IGEzMzkyNTQ1ZDg2NTJjOGFjYzFlZjYxZWQ5NmRiOTY2ZDFjNTcyN2UgbGVnYWN5LXRydW5rCisxMTA1OSBmMGZhYWQ4ZDU5MzdjZTNkOWE4NTMzYWRmZGMxNmUxNTU3M2MyNTZkIGxlZ2FjeS10cnVuaworMTEwNjAgMmIwNDExMDU5NjMwMjNhZmUzNWFmNWQ1OGIzNGUzZjdjOGFlYWNhYyBsZWdhY3ktdHJ1bmsKKzExMDYxIGIxYjM1ZjUwZjNmYTZhNDBkZDcxNGE2M2E0ZTFlYmNmZjYxNTlkODYgbGVnYWN5LXRydW5rCisxMTA2MiAxY2E2ODk1MDI0ZDlmZWViOGNjZWY3Y2I1NjE5MmQwZjYyMGMzZDA1IGxlZ2FjeS10cnVuaworMTEwNjMgMjIxNjY3Zjg5MDY0ODZjMDk1ZGI5NTMyZjgzYzc3YWUxZjdjMzNhYyBsZWdhY3ktdHJ1bmsKKzExMDY0IGMzNDk3MDI2NTIwZDdhMDg3Y2U1ZTQ4YzllZGIwMmVkMjA2YTU1NWYgbGVnYWN5LXRydW5rCisxMTA2NSBlOGFkZWI1Y2QyZmI3Yjc5NzBiZWYwNDIyODlkZDkyYTJiY2U2OGFkIGxlZ2FjeS10cnVuaworMTEwNjYgY2I3ZmNmYjU2Mjc1NGM3YTM2YTlhMGM2NDg4MzZmZWQ1ZjEyMGRlMSBsZWdhY3ktdHJ1bmsKKzExMDY3IDFlNWU5ZGM2Zjk5Mzk0ODRjNmVjMTIxYjQyNGI3ZDEyNjZmZDBhODcgbGVnYWN5LXRydW5rCisxMTA2OCBiZGZlZjhlNzM0NTcyMzA5OWQ0NDEwZTE3MjRjMDA3ZDhlZmUxYzYxIGxlZ2FjeS10cnVuaworMTEwNjkgMTU4MWM5MzFjYjM1YTY1NDhiNTc1YTdlMjFjNjEyNjJmNDYwNjQ4NSBsZWdhY3ktdHJ1bmsKKzExMDcwIDc0YTEwMGNiN2E2NDNiNTFjOTJiNzg3MmUyMDBhYjEzMzU3YjFjMTggbGVnYWN5LXRydW5rCisxMTA3MSA5N2RjNmFhNTMyZTcyMTRkNGUwMjlmZmMwZTlhMzA3Njg3N2I5YTViIGxlZ2FjeS10cnVuaworMTEwNzIgZTFmZTMwZjMyNWI5OTE1ZDIwYTY4Nzc1ZGQxZDJmMTBhNDg1MTcwYiBsZWdhY3ktdHJ1bmsKKzExMDczIDJmNDNiNjFhOThkZjVhZTE5ZjJlYTdhMzZmNjk1MDNkZTA1NGUwZDAgbGVnYWN5LXRydW5rCisxMTA3NCBlY2YwZDUxNTI5YWM1OWQ1MzRjMWUyNTBlNzQwMDU0ZTY5NDlmYjg5IGxlZ2FjeS10cnVuaworMTEwNzUgZmQxZjRlZTFiMzJhNjEzZDVmMzdiNTgwNmMxYmY4M2Q0MWZhMDA3ZSBsZWdhY3ktdHJ1bmsKKzExMDc2IDVkNzc3YmVhNTQzNTE3Y2RkY2VjZjJiZDBiMmZjNzJmNTgwMTU5MDkgbGVnYWN5LXRydW5rCisxMTA3NyA2MzVjM2Q5NGE5NDgyMTU5NDQ1OTIwMjg5OWMxYjg4ZDgxODBhZDlkIGxlZ2FjeS10cnVuaworMTEwNzggMTI1ZjIxZmRlOGM0MDY1NWUxN2M4MmJhMDcxMWEwYTM0M2ZlNjMxYyBsZWdhY3ktdHJ1bmsKKzExMDc5IDdiYzcxNDE0NGI5OGQ4NGZmOGJmMjMxYzc0ZmUwNDEzZjgzOGFkYzkgbGVnYWN5LXRydW5rCisxMTA4MCBlYWJiODM4MWJmYzc0YWVkOGUwOTcyMjBjMzQ1NTE5NGZiOWZhOTk5IGxlZ2FjeS10cnVuaworMTEwODEgZDRhNjg4Y2NiOTM3MDFjMzFiMjJiZjJhYTgyZjU5YmFhODg1MTUxNyBsZWdhY3ktdHJ1bmsKKzExMDgyIDI4MzYwMmYzMDA0MzI0MWQxYzRmNTE2MTBiNWMyODA5NzdkZTcwMjggbGVnYWN5LXRydW5rCisxMTA4MyAwMTk4YjJmNmIxYzgzYmI1NjI1ZDFmMTc2OTcwNDQ1MmMxZTk2ODU5IGxlZ2FjeS10cnVuaworMTEwODQgY2UzNjJiOWJhODM2MWZlNzVmNWZkMDZkOTdmYmQwODEwZjE5OWY0OSBsZWdhY3ktdHJ1bmsKKzExMDg1IGMwNDQ5NzcxNDhlOTA0ZGNhNDFjMTg0ZDlmOTE5OTViYjU0OTZiYWIgbGVnYWN5LXRydW5rCisxMTA4NiBkMWYzOTJjZGZjZWE2ZDdmYzM1ZTFjNDdkOTNlN2QyYzcwNjExZjU2IGxlZ2FjeS10cnVuaworMTEwODcgM2M5NmZjODQ2Yjg4YmEzYTE5NDQ1ZmRhMmNjYjZjZTNmOTY3ODIyMiBsZWdhY3ktdHJ1bmsKKzExMDg4IGUwMTczNzFiN2VkMWIzMmRjNjU3NDU0YzA4MDBlYjgyY2YzMTkyMDggbGVnYWN5LXRydW5rCisxMTA4OSBjYzBmZGU0ZGRmNDRlYWU1ZWEyYWQ2YWM4ZjhhNzBlNjc3OWViYWU5IGxlZ2FjeS10cnVuaworMTEwOTAgNDVmOWRmZmRiYTNkYzA5MzNjZTJhMWZmYjJmN2YxYTc5YzY5NWY0NyBsZWdhY3ktdHJ1bmsKKzExMDkxIGNlMjk1YmZhY2VmMzdjYTYzZGEzODJiMzdlYTQ1MTFhMzg5NDE1ZDEgbGVnYWN5LXRydW5rCisxMTA5MiA2NmYwNTQwNjU2YTBlNGE2MWYxNWYxZTNlOGNkMDNjN2RlM2M2MDMxIGxlZ2FjeS10cnVuaworMTEwOTMgMDRkNTk4NzM3MGRlMmVlZWMwODk3MDE4ZWZhNDAyNzQ1YzI0ZjMyYSBsZWdhY3ktdHJ1bmsKKzExMDk0IDFiYmZiOTFmOGU4ODZmMjdiN2QwM2U4Njk4MTA2ZDVhYTFiZjc4NzcgbGVnYWN5LXRydW5rCisxMTA5NSBlM2QzYmJiZDkzZjM0YzNjMThlMzVmYTZmNzA4ZjdmN2ZhYWQ4NThmIGxlZ2FjeS10cnVuaworMTEwOTYgNjRmMGMzMTg4ZTcwN2FlMTVjYWFkNzNhNjAzMjhkMDQ5MzkwMjcxMiBsZWdhY3ktdHJ1bmsKKzExMDk3IGU3ODIyYjY0YTMzZDNkM2VjYmYzMzI5NmIzODE4ZGRlNTcyYTgzMjcgbGVnYWN5LXRydW5rCisxMTA5OCAyNDE3ZjE3ZmEzZTVmZDJjODBkNWJiN2FjYzE4YWNjMDdiNWJmNDI4IGxlZ2FjeS10cnVuaworMTEwOTkgNDZiNDcyZWNiMGY5MGE1MThhMGVjZmRkMGM1NzM3YTZlMDUzZTlhOSBsZWdhY3ktdHJ1bmsKKzExMTAwIGE4MDc1NTMxZTIwZDYwYmExMmQzMzc2OWMxZWFjMzNjZTI0YzJiYWUgbGVnYWN5LXRydW5rCisxMTEwMSA2ZWQ1MDNkOWMzZDUyY2E2YmRkMDk3YjJmMTQ3YjQ3MWRiNTgwNGE1IGxlZ2FjeS10cnVuaworMTExMDIgMGEzYzhjMjNlMWRhMmE0OTBlYzRkYTg3ZmQxZjMzOGRlMTNmOTVhNiBsZWdhY3ktdHJ1bmsKKzExMTAzIDlmODRiOTE5OTUyZTVkYzRmZjQwYTlmODFkZDZkMWZjNDc3ZWMxOWUgbGVnYWN5LXRydW5rCisxMTEwNCBmMDU3NzUxY2VmNjE5YzczOTViZTdmMGZhZDQ5NTI3MTZmNDYzMzgwIGxlZ2FjeS10cnVuaworMTExMDUgYmRhNWFjOWY2NGU5NGViYmUzNGIwYzVmZDc3NTUxM2M4MTNmOTQzYiBsZWdhY3ktdHJ1bmsKKzExMTA2IDM3MWMzMTI3NjdjYzk2MDgzYmYzMWY3ZTg5YWRhMjQzOTIwZmI2ZjEgbGVnYWN5LXRydW5rCisxMTEwNyA1MWRjYmY4YTBiOTJhYjYwZGUwNWI4Y2FlZDIyOWFkYTllYjg2MjY5IGxlZ2FjeS10cnVuaworMTExMDggMjZmNDgyZDE2MTQwYmZkNDZiODI1NjYxYjU2YzcwMTI0ODY1NTQzYSBsZWdhY3ktdHJ1bmsKKzExMTA5IDZlZDJjYzI3OTM0NmZkNzEwNGY5MTIzNjIxZmRkZDIwYzk2MDM3ZWQgbGVnYWN5LXRydW5rCisxMTExMCBhZWE2ODQxYWI4OThkMGJhMmU1MTkzNTBhODZkY2NiZmU3YmFiZjg4IGxlZ2FjeS10cnVuaworMTExMTEgMjM5NDkyYjM0ZjY4MmQ1Y2NhZGRhZDliZmNlZTFiODg2MjE5OGM0YiBsZWdhY3ktdHJ1bmsKKzExMTEyIGE5MzlkNGUxNGE4ZDMyNDUwZGU2N2RhYzViNjRiOGE5ZjYzZDk5N2EgbGVnYWN5LXRydW5rCisxMTExMyBkODY3MzM2NzY4MTU4MTUyM2M0YTJlMTRkOTVjMzk3ZDU5Mzc5MzIyIGxlZ2FjeS10cnVuaworMTExMTQgNmQ3NWE0NDM0N2EyMDIxNTJiZWUzMmViYzM2YjkzZDkzYzY2Y2UxZiBsZWdhY3ktdHJ1bmsKKzExMTE1IGNjZGViYjVlZDMzYTM5YjJiMjQwZTQzZDIzOGQ2MzE0ZjMyZjVmNmIgbGVnYWN5LXRydW5rCisxMTExNiAxMTcxMzgxZmEwMWM4YTc1MGMzMjM1YmRkZTk5M2JhOTM3NzdmNTU2IGxlZ2FjeS10cnVuaworMTExMTcgNTc5OGNlM2JmZjM1NGEyZTNlYmM1MTg2NTYwMTU0NzQwYzdjY2M5NiBsZWdhY3ktdHJ1bmsKKzExMTE4IGRjZWM5ODM1NzZkNTE0ZmMzZmMyYjIxOGY1ZmY3MTJhNjg3NDYyYWYgbGVnYWN5LXRydW5rCisxMTExOSA5ZjFlOTVjZGZhMTczMTQ1ZWY5Y2FkYTg1N2U3YjdmZjg0MDA3ZmUyIGxlZ2FjeS10cnVuaworMTExMjAgMWUxMjBhNWQyZTkzNDU0NWVkYmI2MzYwYmE2NzE5YTE2ZDg3OGVmNCBsZWdhY3ktdHJ1bmsKKzExMTIxIDAyN2ExZGFkMTM1MzJmYjY5MGJmMmM4MjFkODRiZTY4MWNiNzAyOTYgbGVnYWN5LXRydW5rCisxMTEyMiA4ZTg2YTc5N2U1OTZjOGM5YjEwYWNiOTljNTk2ZWFjZWVkNWE1MmI3IGxlZ2FjeS10cnVuaworMTExMjMgYjQ4MGU2ZWRiYzA3YmRmNjkzODRlN2JhNzRjOWMzODY1NjI0Y2YxZCBsZWdhY3ktdHJ1bmsKKzExMTI0IDJiZmIxMjM1NWIxMDJhOWI2MjQ2OWRlNWE5YjdlNGFlMjE4MWRmOWEgbGVnYWN5LXRydW5rCisxMTEyNSBkNDljYmVjNTkzOTVjMjhkY2UyYTM4ZDUzYmQzMTAxMjEzZGRmNDg5IGxlZ2FjeS10cnVuaworMTExMjYgOWFlOTFlOTMwN2UwYWVjYzU2OGM1OTdkZjlhNWEwY2FkOWQ0ZTMxMSBsZWdhY3ktdHJ1bmsKKzExMTI3IGFlMGI2YzFjOWU4ZDZhM2RmYjIyMzQzYTFjMjE3NDY2NWJkYjA5YjggbGVnYWN5LXRydW5rCisxMTEyOCBlODNiMzUzZDBhMWNkYWFlODQ3NzlmNGE5OTY0ZDg1YzFiN2EyNzdkIGxlZ2FjeS10cnVuaworMTExMjkgYTJiZWFlZGYwYWVlZjBiNjk0NTI1ZWRlOTQ4MDM5MzUzM2E2MjJjMSBsZWdhY3ktdHJ1bmsKKzExMTMwIDc3NTE4ODE0MGZlMWZhYmRjNWYxNjE1MzUxYzMwZmViNmIwMTU2ODQgbGVnYWN5LXRydW5rCisxMTEzMSA5YWY5NWQ3MjcwZGZlZjU1Y2M2YWY3OGIxN2E2ZTdkNGJhYzI4NDQ2IGxlZ2FjeS10cnVuaworMTExMzIgM2JlOTA2NDY3NzQwOTVhM2YxYjYzMjE0ZWE5N2I0MmY2YzY0N2VhZiBsZWdhY3ktdHJ1bmsKKzExMTMzIDRiYTliNzBjYTU2ZTI0ZjYzYTQ5ZDc2YTVjMTJjYzFiNWY1ZDM1OGQgbGVnYWN5LXRydW5rCisxMTEzNCA5N2ExMTA4YjBlYjI4MTU5MTExNDQ0NjI0NzVhOWM5YTMwZDViMjVkIGxlZ2FjeS10cnVuaworMTExMzUgMmViOWMyMWMyMmY3ZTk1MTU1ZWU3ZGYyNTIxZjBmZmQ1YTk2ZGMxMiBsZWdhY3ktdHJ1bmsKKzExMTM2IDdkNGEzODZiZWQzZmM1MzkyZGZhZTgyZTA0YTVlY2VkNGIwYzMzOGEgbGVnYWN5LXRydW5rCisxMTEzNyBlZDBhMzhjYmMzZTYzZDcyOGY4MGViM2M4YTg4MjA2YWZiNzY3Y2Q0IGxlZ2FjeS10cnVuaworMTExMzggOWU1MzZkZDNkYzk3ZjM5OTU3YTQxOWVjZjUwZTI5MTIxNjViZDAxMyBsZWdhY3ktdHJ1bmsKKzExMTM5IGFjNDNlMjI0NjY5NWJlYzdlZWI1NjNkNWExMjc3M2E0OWY3ZDM4NTkgbGVnYWN5LXRydW5rCisxMTE0MCAxZTkzZmEwMjE0MDU0Yjk1Y2QzMjM0NGU5ZTA3YjY3M2QzYWJlODBlIGxlZ2FjeS10cnVuaworMTExNDEgY2U1NGI1NDQ4Yzg1ZDc1YWE2MTFjNTIzODEwMGUzMmYxYTlkMjIzYSBsZWdhY3ktdHJ1bmsKKzExMTQyIGRlNzU5YWNhMTBiMjUyODliZmZkMGM1MzVmYmVmOTc4ZWY5NTA2ZjggbGVnYWN5LXRydW5rCisxMTE0MyAzMGZiZjE4YWYyOWU4YWM5NWNkNzUxOTMwNjIxMDNhNzFiZGE0ZjFlIGxlZ2FjeS10cnVuaworMTExNDQgNzRmMzg1ZWU0NGNiYmVmODMxOGRkYTYzMTlmMDE5M2FmNTRlYTEyNSBsZWdhY3ktdHJ1bmsKKzExMTQ1IDJmZGRlNzg0ZDg0OWFlMTExM2JjZTM5MjdkYWY0OTM2MzJhZTdjNTIgbGVnYWN5LXRydW5rCisxMTE0NiA4NTY4YWE0OTQ0YTAxZjFhOWE5OTA1OWQ0MWNhZmM4NWM0M2YzZGFjIGxlZ2FjeS10cnVuaworMTExNDcgZjU5NDc3OGE1NmFmOTU0NWYyZDNhYmQ5NGNhNDZkOTkyYzc4NmRiNyBsZWdhY3ktdHJ1bmsKKzExMTQ4IDYyNDViODE5YmRkODVjMjE1YmM3NDY4ZWI2ZTU3MWRiMTE2YmY4NGEgbGVnYWN5LXRydW5rCisxMTE0OSAzYWQxYmZmYmRhZWI0MjA1OTE2MDA0NGI5YjcwY2YwM2E4MjUwZDY2IGxlZ2FjeS10cnVuaworMTExNTAgODI4MTFjNmNiNThmNWJiMjk4YmVlN2Y3ZmI1MWMxMjYzYjkxYTY5NyBsZWdhY3ktdHJ1bmsKKzExMTUxIDJiMmZmNWE4MTM5MWEyNjQwMjE4YzhjZDMyZTMwYzE3ZGY1NjQ1MDQgbGVnYWN5LXRydW5rCisxMTE1MiAwN2U0NzM3MGZjYjhiOWJkOTIxNDJkN2JlMzVlYTBiMzQ1YTMzZmMzIGxlZ2FjeS10cnVuaworMTExNTMgNzQ0NGZlMzhlYWRiZDRkOTY1YzAyODhjNzMwNDJlYjg1OTMyNGFkYyBsZWdhY3ktdHJ1bmsKKzExMTU0IGIxZjFiYTQyOWI3M2YwMmMyMjA4OTUxNDAxNjAyMmViNWIxYjcyMjkgbGVnYWN5LXRydW5rCisxMTE1NSA1YThkOWNlOTA2MzJiOGQ0YjA3NmYyZmJmNTVmNTQzNDc5OTIyYTA3IGxlZ2FjeS10cnVuaworMTExNTYgZDZmNGU0MWIyYzZhZTg3N2IwOTcwNzVjY2ZkYmVmZTEyNmViNjFjYiBsZWdhY3ktdHJ1bmsKKzExMTU3IDQ2OWU4ZjQ1MzM2NWEzOWZjZWEyM2ZlYjdlOGMwNjY1Mjg1OWU0ODQgbGVnYWN5LXRydW5rCisxMTE1OCA3ZDk2ODQyMzgzYmJhOWQxMWE1MDk2NzNkYjhjMDU1MGE2MmRmMDgwIGxlZ2FjeS10cnVuaworMTExNTkgNjE3MDY4M2U5OGUzYjI3ZmM5NjhmMzliYzY0Y2ZkYzk5OTg0YTM0NyBsZWdhY3ktdHJ1bmsKKzExMTYwIDQ4YmM0NzAzNTg4MTVhMThmZmJkOTk2MGI0OTc0NDkwNTE3YjNmMDQgbGVnYWN5LXRydW5rCisxMTE2MSBiYTc0NDQ2MmU5NTgzMWQyODE5YWEwZjNkNzgyZTEwNGY4NjBiZTE0IGxlZ2FjeS10cnVuaworMTExNjIgNDY4ZGIyYjcxMGZkODIzMjAwNjc3NWViOGFkOGJmMWI5ZjA3NzEwMyBsZWdhY3ktdHJ1bmsKKzExMTYzIGNlMWU1OTFiMzEyNjM4NDBiYTViNWNiYzlhOGQyYzc1ZjM4MTU3MzcgbGVnYWN5LXRydW5rCisxMTE2NCA2ZWQ3MTU4ZmYyN2NjZTQ3NzgxZjEzOWViNGQwYzg0ZTY4YmE2MGNmIGxlZ2FjeS10cnVuaworMTExNjUgYTAzMjRhMzA2OGU5NTM5YjViMTQ2OTk3ZjkwMDQ4ZWQ4ODIxZjE0ZCBsZWdhY3ktdHJ1bmsKKzExMTY2IDEwMDQ0NWFlNDVlMzZiZDkxYWUxYWE5MWNkODVlYzdhMWRjNDMwMjQgbGVnYWN5LXRydW5rCisxMTE2NyA3ODE3MzE4ZWNkM2EyZjY5OTcwYWUwZWIwMTgxZmI2ZjdkYzUyYWRkIGxlZ2FjeS10cnVuaworMTExNjggNTUyZTQyZTQxNzBlZTcxODRmYWUzZmNjZjNhYjJkNTg5MWM5YzM0MyBsZWdhY3ktdHJ1bmsKKzExMTY5IGZkNDllZDY1Y2QyMGIyMDJlYWE3NmFjOGVmZGM2NzM3NTY2NDJjNjAgbGVnYWN5LXRydW5rCisxMTE3MCBhMzcyNmZlMzRkNThlYzA0NzY2NmUyOWFlYzExZDFlMDI0MmZkMTg1IGxlZ2FjeS10cnVuaworMTExNzEgZGU1NDAxNjZkNzMyOGNmNTQzMTBhODI1Y2E3MjM5Y2M4NTkzMmFjNSBsZWdhY3ktdHJ1bmsKKzExMTcyIGEwNDc3YmM4MjBiMjcyZGYxNzIxMmUzY2U4MjYyZWEzNDA5MjBmMjkgbGVnYWN5LXRydW5rCisxMTE3MyAzNWUxYTE0MGZlNGUyMDA2YzYwMzUzMGZlNzZhYmE4YzU0OGRiOTE3IGxlZ2FjeS10cnVuaworMTExNzQgYzk1MTRlYjFmYzA2MjdhYzI5NjNjZWY3MTdmMjBiYjZkNGE5YmNlMyBsZWdhY3ktdHJ1bmsKKzExMTc1IDhhYTlkMTI2ZTQ3MzMwNzAwNjk2ZDQ3OGUzMzRiZTAwMzRjZDQwMjMgbGVnYWN5LXRydW5rCisxMTE3NiBmNDE1ODBiNGVlYTE1NDI3ZmUyNmI3ODEyOWQ5NWY4MzczNzZmYTZmIGxlZ2FjeS10cnVuaworMTExNzcgNmQyMTY4YTk2NDFmZTc1Mzc3YTUyNTY1MjQwNzIxOGUwYTBlNDMxYSBsZWdhY3ktdHJ1bmsKKzExMTc4IGY3YjRkYjBjNWIwOGQ1N2U0ZDM3ODY2OWIxMzljYjE4N2E4MGZlMGUgbGVnYWN5LXRydW5rCisxMTE3OSBkYzg1ODA0YzJjNjQ1Njg5ZWJiMDU2ZjBhZGVhMzk1ZWZkNDM4ODA5IGxlZ2FjeS10cnVuaworMTExODAgN2QxNDc3Y2RhODNkMzdlYWY3NjBkYzU3YjE1YWM2MjRlYTA3YmNiYyBsZWdhY3ktdHJ1bmsKKzExMTgxIGYxMGI0NjljOTgxMDU0ZWE1YzMxNzQ0Y2M1YzhiNTJhNjlkMWRjZWEgbGVnYWN5LXRydW5rCisxMTE4MiA5NWYzMjQyNzJmNTQ5NmMxMzllNzgxZWM4MDM3N2Q5ODA1YzE1NGYyIGxlZ2FjeS10cnVuaworMTExODMgNzgyMTRlOGM5ZWI0OTA4YTVhMDdlMmY1MWMzZTA5ZWMxOGJhNWFkMCBsZWdhY3ktdHJ1bmsKKzExMTg0IDJmMjkwNTYwMjYzZmIwZGNmYzY3NGM3ZWM3NWQxNjE3YmJkODRkY2YgbGVnYWN5LXRydW5rCisxMTE4NSA1MDc1NzQ2NWZhNzBkZWNkZWEzYTc0YzQxMjhlNzZkNGIxZWRiYmE1IGxlZ2FjeS10cnVuaworMTExODYgODNjOGFkYWEwODRmNjgxOGZiYmEzYzY0MjcwMzFjZjlkMmNmY2YwNCBsZWdhY3ktdHJ1bmsKKzExMTg3IDg1NzFjMTI0NmYwOTNkMzk1OTZlNTcxMWU1MzRiMjUxNzNkNzJiZGYgbGVnYWN5LXRydW5rCisxMTE4OCBjYTFjNjY5YmIwNDE2OWNhNmY0ODMwZDE3YTliOWE0ODU2ZDQzYTk4IGxlZ2FjeS10cnVuaworMTExODkgNGVkZjM0OTVjNjkyNzZiMThhMTkxMDU1ZmRkZGU3ZDUxYjkxYjg1NyBsZWdhY3ktdHJ1bmsKKzExMTkwIGFjZjQ5YzlkZWY3ZGRiNTQyNTFkY2IwYjQ0Y2E4ZjQ4MmQ4YWI5MjMgbGVnYWN5LXRydW5rCisxMTE5MSAwZTI1NjNjMGViMGQ0YTZiOGZmNjcxYWY0ZDg2NjdmMGIwNDdlZjIzIGxlZ2FjeS10cnVuaworMTExOTIgMjA4NDI3YWI3NTY0NWIxMzU1YWZiNWRiODUxZWVhMGI0ZTA5N2NjNSBsZWdhY3ktdHJ1bmsKKzExMTkzIGFlNmI0MWRjNjUyMDE2YWJhOTg0YjljOGFhMTNhODQwOGRiNzIwNzQgbGVnYWN5LXRydW5rCisxMTE5NCA3OTgzZDg2YjQ4YWY3MzI2MTVlZmI5MmRkNTAwMDMwM2ZjOTU1YTUyIGxlZ2FjeS10cnVuaworMTExOTUgZWQ4ZjRlMmViMTFhMWFhNzhhOGIyYzk0ZGY5ZDcxNWUxMDM5NzY3ZCBsZWdhY3ktdHJ1bmsKKzExMTk2IDk3MzFkOGE2YjRmM2RmNDlmZjQ3ZGMzZTZkN2IyOWJjOGQzYzY1NzUgbGVnYWN5LXRydW5rCisxMTE5NyBjNzUwYzdhMjFlMDM3ODg0Y2VmNTU0MzAzMDcyOWM2NWY2MDY4ZDY3IGxlZ2FjeS10cnVuaworMTExOTggNzYwZGNmMTk3MDQ4MTI2OGIzMzFjYTY0NzBhOGVhM2FjYzExZWI2ZSBsZWdhY3ktdHJ1bmsKKzExMTk5IDk0NmQ2Mzk3N2ZhNDExZDVmMDgwMzkyMWRjMjdmODRiMjYzNTQxNDcgbGVnYWN5LXRydW5rCisxMTIwMCAwMjhlYWZiY2U4YWM3MjFkNGEzMjA2OTk1M2FjMmUzZDg3NTJmNGMxIGxlZ2FjeS10cnVuaworMTEyMDEgODE3NWM2ZTFlNjEzMWE5NTQ1ZDViNDEwZTNhMWZiZWEwNmY0MzI0ZSBsZWdhY3ktdHJ1bmsKKzExMjAyIGUwZDA0NzQ4NDk4MDA5NzlmMDhiNjg1OTY4NzM2MzdmMzExNWNjZDMgbGVnYWN5LXRydW5rCisxMTIwMyBkN2NhNDI5ZWYxYWI1ZmJhOTIzOTRlMTU4ZTY4MTMzMmQzNWJlYjM3IGxlZ2FjeS10cnVuaworMTEyMDQgOGEyOTQ3NmE1OWM1NDM4ODNjMzE2NjcxYjIwNGRkOWYwMWNjMWIzZCBsZWdhY3ktdHJ1bmsKKzExMjA1IDY3OTQyOTRlYjAxNDllOTZlNjdkMTQ2MGVlYzQzMzE4ZTkyNjEzZjMgbGVnYWN5LXRydW5rCisxMTIwNiA1ZDZiZjYwY2I3MzZkMWUzNWM0NjI2NTRhNTQzZWJhNWViYWE0ZmQyIGxlZ2FjeS10cnVuaworMTEyMDcgZjc5NzZlMDJiODczNDMyNzNlNDJiNDAyZDNjYjY4NmJhZjM3NmU5MiBsZWdhY3ktdHJ1bmsKKzExMjA4IDc0ZWE0ZGZkYTgyZDI0MWY2ZDA5OGZmNjUxYTE0M2NkYjU4MmI0MGEgbGVnYWN5LXRydW5rCisxMTIwOSA1M2I1MmEzM2Q0YmE2NDBkYzU5NzE5OTYwZWFiNzI2YmVkMjRiNjZhIGxlZ2FjeS10cnVuaworMTEyMTAgZDVmNDg1MWU3NjExM2JlMjU5YWE0ZjI2ZjY0NjY1OWQwODNlZjQ2NCBsZWdhY3ktdHJ1bmsKKzExMjExIDE5MDdkMTBhMjMyOGVlMDlmNWY5YWE4ZDMxMzlhZmNkNDc3NTNjNDMgbGVnYWN5LXRydW5rCisxMTIxMiA4YTMwNmRmZDlmMzMzZTA1Mjk4NWFhYWQwMzRkYWU2NDY4NzdlN2ZkIGxlZ2FjeS10cnVuaworMTEyMTMgNzUxMzdjZmVkOTU0Zjc5NjQ0YmU5YmU5MDQyNTY0ZjRhNmQ1MjkzMiBsZWdhY3ktdHJ1bmsKKzExMjE0IGE4MDQwYjk0MTg2NDlkOWYzZWNiMWE5MzNhMWJiMWIwN2MxZDBkNGQgbGVnYWN5LXRydW5rCisxMTIxNSBhZWFmYWYzODJhNGJlYzRkZDcxZDAzN2NmNThhZDA1NzYyNmE4MDFiIGxlZ2FjeS10cnVuaworMTEyMTYgZGRhYWMwNmVjMzI2NmY1Mzk4YTNlYjdhZjdiMjc0OTMzNDFjNWRiYyBsZWdhY3ktdHJ1bmsKKzExMjE3IDgwNzc2ZWFiZDAwNWZiYjgxNWQ2NDIzY2YxNTgyOGFiYzA4OTJlYzMgbGVnYWN5LXRydW5rCisxMTIxOCA2YzIwY2E3MjMxODA0Nzg3YWZlNjg2NDg3N2ExMTBmMjYyNzZhZDk4IGxlZ2FjeS10cnVuaworMTEyMTkgOGQwNTQ5NTQ3MDhhMmYwNTBiOTRiMmYxZThlOTVmMWQ4NzQ5MjZlNiBsZWdhY3ktdHJ1bmsKKzExMjIwIDc4MWFkMzJlN2IxZmYzYzVkNmYzOTRlYTM2ZWNmMWEyOTc2ZTJhYTQgbGVnYWN5LXRydW5rCisxMTIyMSAxZjAyMGY3OTk2N2Q5OTU4ZDA4YzFmNmY2ODIxNTNmYTkxZGUwNjU5IGxlZ2FjeS10cnVuaworMTEyMjIgNzRlMDMxM2NkODEwZTM0NWYwNWUyM2ZiZWUyMDA4MzdlZmQxNDBiNiBsZWdhY3ktdHJ1bmsKKzExMjIzIDQzNDY0YjFjODgwZWE5NmYyZTc4MDhiZWVhYjA1MjQ4MWRiNmQ1NWMgbGVnYWN5LXRydW5rCisxMTIyNCA3M2FmZTc3YTM5NDdiZjJlYTIyMDIyZDdmYzBmNDkxYzc3MjIxZmFkIGxlZ2FjeS10cnVuaworMTEyMjUgMmEzMGE4MTg5NGFlMGNjNDlhYjMyYzM3ZTUwMmY3Nzg1ODJmNjdiNSBsZWdhY3ktdHJ1bmsKKzExMjI2IDFkNTgxYTZkZmVlZTExNjkxNTg1ZTMyOGVkYTBiY2E0MDYyYjJjYjYgbGVnYWN5LXRydW5rCisxMTIyNyBlMWJjZjBiZDM0ZDU5MzM5OGY2ZjUyYWU2NjgzZDRjMzViNzI1YmRhIGxlZ2FjeS10cnVuaworMTEyMjggY2ExYjkwNjE0OWU2MjA5Yzg1MzU5OTNkNDc2YWZlNDllNmFlNzUxNyBsZWdhY3ktdHJ1bmsKKzExMjI5IGNkOTk1MjAzMjBhMzFmZDBiYTQ1YmI5ZDdjNzVkNDJjNjE4MTNiYzMgbGVnYWN5LXRydW5rCisxMTIzMCBlYWJlNTc0ZGM5MjFhOTEwYjkwN2ZmYzhlMDU0MjllMWNlYTkxN2QyIGxlZ2FjeS10cnVuaworMTEyMzEgZDg0YzExM2VmZWRiZjVhNDQ1NDhlMjkyZTkwY2JlZGE0NjhlYzM1NCBsZWdhY3ktdHJ1bmsKKzExMjMyIDVlYzg5NzliZjE3Njg1NDdlMzhjNjY1ZGQ0MGM1NzBiMmQzZTA1YzIgbGVnYWN5LXRydW5rCisxMTIzMyA5OTc5MzMwMmQxMGQzZTFhZTJmOTExMTRkOGFmYzAzZTA2NjgyZWMzIGxlZ2FjeS10cnVuaworMTEyMzQgNGUwNWUzODQ0NWNlYjM3Yjg0NmRmOWQ5M2U4ODgzNzlkNWUwNjZlNyBsZWdhY3ktdHJ1bmsKKzExMjM1IDllMDg5MDcwZDRjNWQwZTgyNGJhZDg1ZjU3ZGE3OTIxNzg1MjY0N2QgbGVnYWN5LXRydW5rCisxMTIzNiBlODhkNGU2ZTQ2MjJiNDM4MWY3MmMwZjdmZjRlZDM0MzhkMmFjYTg5IGxlZ2FjeS10cnVuaworMTEyMzcgNzAxYTg1YjA0NGIzNDVmNTBlZmM2Njc4MDZkMzhhY2NiNjc2YWI0NCBsZWdhY3ktdHJ1bmsKKzExMjM4IGZiYTg0NTVkY2I1NGM0MGUwY2EyMjJkNTYzNDgzYTM0MjdmNTg0NDUgbGVnYWN5LXRydW5rCisxMTIzOSBiOGE3MTljOGEwYTYwMTdhMGU0MGMzZjdmZDM3ZmM4ODEwMmVmNWJkIGxlZ2FjeS10cnVuaworMTEyNDAgNjhmZTYzNzUwZjg0ZjUwZmVlZDljNTNiMTNlNThkNDhiNDJjODhlNSBsZWdhY3ktdHJ1bmsKKzExMjQxIDRhYzJkNDM1Y2UzYmI1YmY1YmVjOWJkMzQ5YjFjNzZhMjVhNGFiNzQgbGVnYWN5LXRydW5rCisxMTI0MiAyYjJlZjgyZWRiNWViNzM0ZTExNjQ2MjExNDY5NjM2OGVhNThiODAyIGxlZ2FjeS10cnVuaworMTEyNDMgODYxY2QyMjc4MzQ4YTgzMjlhNDhhNjA0ZjA3ZWU1ZmMzODAzNDBiYSBsZWdhY3ktdHJ1bmsKKzExMjQ0IDQxOTJhNzNjYTQzMGViZGYyZTJhMDRlODM1MjgxOTMzMzFmMTRkZTggbGVnYWN5LXRydW5rCisxMTI0NSA1NWY3OTBhNWY2NGJmYjQ1NjJiM2I4NzE3MmMyY2ZjZTk2ODg3M2E5IGxlZ2FjeS10cnVuaworMTEyNDYgMDc2NjNkZDBmZTg2NTQ4NmRiYWMxNDk3M2Y4ZmNhZjJhZDkwMjg0NSBsZWdhY3ktdHJ1bmsKKzExMjQ3IDYyZmFiZTI0NzdjNGRmN2I0NGM3ZDFmZDBhMGExMGRmZjZjMTljYjkgbGVnYWN5LXRydW5rCisxMTI0OCAwNTg0MTcwNzFiMGU1MjZiYzIzYzIyZGRmYmI0OTJhMmUyNzdmOWVkIGxlZ2FjeS10cnVuaworMTEyNDkgODQzNGU5ZDAwYjVhNWU0NGU3NTY3MzBmMzNkYzI3ODFhOGJiZDIzNyBsZWdhY3ktdHJ1bmsKKzExMjUwIGZjMmE3MDBiMTAwN2E1MmY1MjE3Y2Q5ZTlhOGQzMWVlM2FlZWE5YTIgbGVnYWN5LXRydW5rCisxMTI1MSAwNmY4MGJjYzk1NjkxMWYzNzk2MTk3Mjc5MTQ4NjE3ZGQxMDFjMjU0IGxlZ2FjeS10cnVuaworMTEyNTIgMjU2YTgwZjM5YTg4ZmQ3OTYyMmJmMjdlM2E2NGU1YzhhM2IwOWU4MyBsZWdhY3ktdHJ1bmsKKzExMjUzIDJmNDZmODdhYTgwYWFmNWNkM2NiZjIwOTVkNjM1ODQ3ZmY3YmI2MjEgbGVnYWN5LXRydW5rCisxMTI1NCA3MGI2MzNmZjJmYjc1YzU2MTRiOTQzNTFmMTNiMWU4ZTQ0MzRmYWQ2IGxlZ2FjeS10cnVuaworMTEyNTUgNDViZTQwZWZjYjk1MDQ5MmVlM2M3MzM2M2ZjOTNlYjU4NjJlMjY0ZCBsZWdhY3ktdHJ1bmsKKzExMjU2IGVkYmY2MzFmYjdlOWU0MTI2OTlhNDJiODk2YmY1YjM4ZDkxYWU0MjIgbGVnYWN5LXRydW5rCisxMTI1NyBkMzk2NzhkMjJiNGEzM2QwM2E1OWYwN2FmYWQ5YzZjMjZiMGY3ODEyIGxlZ2FjeS10cnVuaworMTEyNTggMDQ4NDFlZWQ5OGVmOTE2NGIxNWQ2YzlmYWE1NDdhZjg3NWE4N2E1NSBsZWdhY3ktdHJ1bmsKKzExMjU5IDAwNTI0NTU1ZWYxNzQyODM3NjNiMTcxMDlhNjc4M2NkNWY1ZDQwOTMgbGVnYWN5LXRydW5rCisxMTI2MCAzYTFkZDAxMzc1ZTA5NDE2Y2FlNWQ1ZWRmZThjN2VkZmUxOTk1MjQ2IGxlZ2FjeS10cnVuaworMTEyNjEgOTEzODI3MmMxZmU2ZWMzYjFkNzFmN2QwMGIyZDg5MzU4MmY4MGNkYyBsZWdhY3ktdHJ1bmsKKzExMjYyIDZkNjFkNDg5ZDcyODg5MTQzYzk4MDEyNTliMGI5YjQxM2E2MzM3MzIgbGVnYWN5LXRydW5rCisxMTI2MyA5ZTMxNDE1NDM2ZjYyY2Q5NDc3Y2IxZjlkOTE1OTRkOWRjNDQxYWE0IGxlZ2FjeS10cnVuaworMTEyNjQgYWUzZTJlYWVmOWI5NTI1ZjY1YmE2MzMyMDY1ODQ1NDBhODJjZTI1MyBsZWdhY3ktdHJ1bmsKKzExMjY1IDhlOTRjZTkzOTRiZjI0NmUyY2I4ODNlZTI2OWM0ZTljNTcyYzZjYzkgbGVnYWN5LXRydW5rCisxMTI2NiBjOTkwOTA0NjI0NzY2ZWU4N2MxYzU2M2ExMGU0ZjZmNWIyMTRiMjA0IGxlZ2FjeS10cnVuaworMTEyNjcgYzg1YjM4ZDU4YWNkOGNmMDhhNWVkMzgzZDM1NDRhNGU1MWU0NzU3YiBsZWdhY3ktdHJ1bmsKKzExMjY4IDdkMjMyYzBlNGRkNmM5MGJmMzM5YmVjN2U2NzNkNGM3ODc5NTcxN2EgbGVnYWN5LXRydW5rCisxMTI2OSBkMmJmYzg2NTQyODBhNzljMTdkYTI2YzVhY2MwMDRjNzIwNDhkMmVjIGxlZ2FjeS10cnVuaworMTEyNzAgZDY0MmU2NzQ4ZDEyYzNhYmYzNzdkODU1MGFmOWM0MmU4ODI3MGMwYiBsZWdhY3ktdHJ1bmsKKzExMjcxIGQzMmRiYzIwMjYxM2UyOWJhYjM4Y2NlZjZkZjk5N2U1MWFmODg5MDcgbGVnYWN5LXRydW5rCisxMTI3MiAxMDc2YTAyODM2NWEyZWQ1YmRmYzUxOWMyZjk1N2ZlYjFiMjFmZDVmIGxlZ2FjeS10cnVuaworMTEyNzMgMzNkNTkzMzZlN2U2ZmJjNTY3NzRkYmQzNDlkMjA1ZGZmZDVhMmQ5NyBsZWdhY3ktdHJ1bmsKKzExMjc0IDBmNWUwYjQwNWJjMmYyYWI3NDVmODM2NDBjZTY0ZDkyN2U1MzhjMDkgbGVnYWN5LXRydW5rCisxMTI3NSAxZjgwNGZhY2Y2MzU0ZmEyZjJlYjg3YTE1OGZlODE5YWQ1YzdhZDFmIGxlZ2FjeS10cnVuaworMTEyNzYgMGUzMGIzNWI4YTNmZmUzNTYwYTA1ZGU1MjExODYzMzc3M2YwZGExZiBsZWdhY3ktdHJ1bmsKKzExMjc3IGI4ZDJiYTU5NzExYzIyNzAwNDM2OGM5ZjkxYmY5ZTQ3MzAwOGY4ODAgbGVnYWN5LXRydW5rCisxMTI3OCA2ZmJiNTYwN2NkZDYwNGM0MTQyMjdjMjNkMjYwZjA2NDE1OWUzMWU2IGxlZ2FjeS10cnVuaworMTEyNzkgZDUxZDFhNjFiMWNlZjQ3NzgzZWE4N2Q2NTE1ZTU1NzM3NjgwNjc4OCBsZWdhY3ktdHJ1bmsKKzExMjgwIGNhMWU1YmM1MjA5ZDg0NzEyNzNlOTNmNTJlNDQ4YTNkYmRlNGNlZDcgbGVnYWN5LXRydW5rCisxMTI4MSA0NDcyNmIwNTg3MDBhZDkzZmYyMDgzZTkxZDcyMWNjNTNlYzExMmQxIGxlZ2FjeS10cnVuaworMTEyODIgZThiNTZiMzg3MDQ1YWU3NGRkOWMzZjk4ZDhkNGU5MWNjYWE1ZmI2ZSBsZWdhY3ktdHJ1bmsKKzExMjgzIDYxNDY0MDM3ZGE1M2MyZDA1NTIxZjk3ZmFmYzJjZWUzZjg0M2JjYjggbGVnYWN5LXRydW5rCisxMTI4NCA4MWNiOTQwMWEyMWI3Yzg2MjllODI0OWIyZTMwOTgzM2RlMDZkYTA3IGxlZ2FjeS10cnVuaworMTEyODUgNGQxOGViZDRjZjQyM2VmODdiYmJhNzk2NGRjMzJhNGVkMWU4ZmU3YSBsZWdhY3ktdHJ1bmsKKzExMjg2IDVkNWE1YmM4ZGU1Y2I2Mjg5NDVkYTk5YzZmMTI4NmI0MzUyZmM0NjUgbGVnYWN5LXRydW5rCisxMTI4NyBjOWU0NTcwNWVjOWUxMjk0MDAzYmIxOTJlYTdiNjdlMzMwYjQzOTgwIGxlZ2FjeS10cnVuaworMTEyODggOGU5ZDIxNDZhZTkzMDIxNWMxMTY2MTM5NWYzNDY2NzY3ZTk5ODE5YiBsZWdhY3ktdHJ1bmsKKzExMjg5IDY0NWEzMjhlN2ZkNDk0OWNmNmUyMzQzODc3NDNiMjQzZmU0YTIwZGYgbGVnYWN5LXRydW5rCisxMTI5MCA3ODc4NTk4NWEyYWI1ODFiNGU1NTVmOGM1ZGVlZTM3MWVkNTFkM2JkIGxlZ2FjeS10cnVuaworMTEyOTEgYzVkNzJiY2RhOTMyYThkMzZjYTM2MDA1YjQ1YWJhYjhmYjc5ZDc5MSBsZWdhY3ktdHJ1bmsKKzExMjkyIDRhYTc2NDgwZDgxMjU4OTJjNTE1YWUxYmMzMTRmOTBkM2UwNDRmN2EgbGVnYWN5LXRydW5rCisxMTI5MyBlNThhNjE0ZmI4ZTQwZWFhNjcyMTIxMjk2MzIxYjk5ZDA4YmE2ZTFiIGxlZ2FjeS10cnVuaworMTEyOTQgMTQwNjkzNzQ0YTNjODUzZjdiNDQ2OTRmNmEzNzU4YjQxYWNjNmZmNCBsZWdhY3ktdHJ1bmsKKzExMjk1IGRkNjQ5ODM3ZWJkNDg5ODQyNTU3MWVhYjI0NjFkNjFmZDMxZjhjYWMgbGVnYWN5LXRydW5rCisxMTI5NiA2NzM4ZTUzODM5Nzc0ZmFlMjg2ZDdlOTExMGI4NjMzZjJkZjVhZDY0IGxlZ2FjeS10cnVuaworMTEyOTcgODQ2MGJkYzNkYmY3YjdlNmQzM2Q3MzkwNDNkYThjYTFmOGZkMTA3NSBsZWdhY3ktdHJ1bmsKKzExMjk4IGQ4YjQ2MTk4OTIzOGQ4MmY4M2RhZWJmZjU5OTMzNWZmODcwZGZlOGQgbGVnYWN5LXRydW5rCisxMTI5OSAwZWRkMzhkYjIyODg0NTk1YWFjYTMxMTRjNzQ1MTk3YzIxYTdlYWRkIGxlZ2FjeS10cnVuaworMTEzMDAgNzFmY2M0Y2EwZThhZWRjOTE2MThiMmIwMTMyMDNiNWUwNTJlYmFhOSBsZWdhY3ktdHJ1bmsKKzExMzAxIGMyODAxMTAwMGVkMzY5M2Q2M2MyMTRkMzMwYTRmN2IxMjU0MjI1ZjYgbGVnYWN5LXRydW5rCisxMTMwMiA5YjBkZGE5YTU1OGJkNWVlYzk2ZTkzNDYzNmViNWUzNDUxOTAxNDc0IGxlZ2FjeS10cnVuaworMTEzMDQgYTFjMTZhM2ZhN2RiNDBhMzc1NTg3YTIyMzU3ZDBkMDFkZWJjYmQ4NiBsZWdhY3ktdHJ1bmsKKzExMzA1IGJkNDdlZTA2OGI4M2ZiOWYyYThiNmE5ODlhYjQwZjNmODhjNGY5NjggbGVnYWN5LXRydW5rCisxMTMwNiBmMmE0YTJiNjA4NjA3YjBhZmM4N2M2YmRiZWIwZGIxNjAxYmE5Y2JlIGxlZ2FjeS10cnVuaworMTEzMDcgYjA0MDk4YTI1NmQwMDQ2ZDljZWE0Y2M0NmM4OGE5ZGRhMDk2MjFiMyBsZWdhY3ktdHJ1bmsKKzExMzA4IDEyOTg3MGUyMTc5YTkxZDI3OGFkZWY3YWM3YTU5Njk5NzgwYmVmMGEgbGVnYWN5LXRydW5rCisxMTMwOSA0YmZhNTNiZDk3YmMwNjc2MmU3YzNiMTMxMDgzYzRmYmFhMmMzYzUxIGxlZ2FjeS10cnVuaworMTEzMTAgZGYxNjAyYjZhMmE4NjIxNjYxODZkYWI0MDc2MGFkNTg2NGQ1NzM4YyBsZWdhY3ktdHJ1bmsKKzExMzExIDg1MzIxNDFjZmY0YzFmNWRmNmRkNWU2NjNmZWViNWYyMTUwMmU2YWUgbGVnYWN5LXRydW5rCisxMTMxMiAzY2MyZmFkNGUwMjBlMTdkODNlYTBiMGE3NWMzNjZmYmEyODRiMDFlIGxlZ2FjeS10cnVuaworMTEzMTMgZWVjNGRjZWI0NDM2YWFlNjA1ODBlN2E2OWFiNDAwMDY1ZDgwNDdmYiBsZWdhY3ktdHJ1bmsKKzExMzE0IDAwYTZiYjY1ZmYyOTNjMGUwYThkNjIzYzVlMjU0M2M5YjVkMTlkMmIgbGVnYWN5LXRydW5rCisxMTMxNSA3NDFkNTA2MThlYzJjYWE3YzY1NzhlZjA5ZjU5OTgwNWY3OGI5MDA4IGxlZ2FjeS10cnVuaworMTEzMTYgMDQ1ZTkwMGE0MTk4ZTAyYWNhMmQxODE4ODk3YzFiYmFmNWZjODgwOSBsZWdhY3ktdHJ1bmsKKzExMzE3IDMzNmNiNTA5ODc5YTQ5YzI3YzI1NTJkNzc2MTZiMTBjNTMzNGQxODEgbGVnYWN5LXRydW5rCisxMTMxOCBiMDRmOTVmZWRkNTBjYTFhZDViMzkyZGFlYmJmNDdjMWY4MWQ3NmQ0IGxlZ2FjeS10cnVuaworMTEzMTkgZjFjYTQxOTk1ZTYyZTUxNzI5ZmE2YjdjNzg3YjE0OTI3ZmMyZGVkMCBsZWdhY3ktdHJ1bmsKKzExMzIwIDkyOWRiODM4NWJhNGE1M2UwYmEzYjFlZDY4NGY0MzZmMWRlYjYwMzcgbGVnYWN5LXRydW5rCisxMTMyMSBlNWE4MzExNjg0ZTRiZGEzNzJiY2ZmNzcwNjUwNjRmOGRlNDk1OGI3IGxlZ2FjeS10cnVuaworMTEzMjIgYzJmOWU1MDVmNzVhMWRhOTFjYTIxN2IwN2MwM2IwMzk3NDU5ZjkxNSBsZWdhY3ktdHJ1bmsKKzExMzIzIDQ0YmFlZjhhYjVjODlkMzRiMTRmOTA4M2VjZGUwMTk3MmJmMGZkMjggbGVnYWN5LXRydW5rCisxMTMyNCBiZDZkOTdkNmIyYWUwYjc3MGJjODI5NTI5ZjQzNTA0Y2Y3YWU1ZDAyIGxlZ2FjeS10cnVuaworMTEzMjUgOGEzNzA1MjZkZTA2YWQzZGIwZDFjMzE0MDU4ZjA4NmM0NjQ4YWQzYiBsZWdhY3ktdHJ1bmsKKzExMzI2IDFjN2Q4NjA4NzFkOWQxMGVlZGViOWFjY2IzNjE2M2Y5NjEzOTViMWQgbGVnYWN5LXRydW5rCisxMTMyNyBiNjVlYTgxMjc3NTI1YTllNGRkMjc2NzA0NDU0M2Y5ZDMxMmY3ZDU2IGxlZ2FjeS10cnVuaworMTEzMjggYjkzM2Y1ODRhMjZkMDMxMjY0MWU2YzM4YjBlODUxODU3MzlkZmVkOCBsZWdhY3ktdHJ1bmsKKzExMzI5IDc0NTMzNDU0NTg5ODFiZTg4MGQ5NjA0MzliMTMyMDY1NjAzNjM0ODkgbGVnYWN5LXRydW5rCisxMTMzMCAwODY3MDIyNTAxNTM0YTFmMjRkMDEzYThkOGUyZGY1OWI2ZmZiNzExIGxlZ2FjeS10cnVuaworMTEzMzEgMzdjNjkxOGVmZDNiY2ExMmZkMzU3MjYzYTY1MTUxOGJhOTJhNTg3NiBsZWdhY3ktdHJ1bmsKKzExMzMyIDYxZWY4ODE4Njk1YmQ0MzZkZjBjOGRhZjgyNDgwYTQ1N2QzMDcwYjkgbGVnYWN5LXRydW5rCisxMTMzMyBjMzUxNTIzZWJjMDVlZWJkYzljNDQ5NzQxMDg2YWYwZjU2YjNjNWE5IGxlZ2FjeS10cnVuaworMTEzMzQgNTM0YTFhNDM3YWYzYTliOGVhZjczNTMyMzg2MWUyNzI4OTBlZDA2ZiBsZWdhY3ktdHJ1bmsKKzExMzM1IGNlZjIwZWM2ZjI0OWNjNDYyZDljNGYyZmY3OWRiNGRkZGVlMThkODEgbGVnYWN5LXRydW5rCisxMTMzNiBiYmU5ZDcyYmNjZGEyN2E5ZGFhMzNlMDU4ODI5MDNmZDlmM2JlYmVlIGxlZ2FjeS10cnVuaworMTEzMzcgNWY5ZGZmNjgxNzk3ZmY5NDA3OTQ4NDAzYjI4YzA2NzQ4MDUyYjlkNCBsZWdhY3ktdHJ1bmsKKzExMzM4IDM1NGNkMjRlNWRmZTQyYTBmODJmMDMwMWY3OWFhMDA4NzY5MDYwNDAgbGVnYWN5LXRydW5rCisxMTMzOSBkMjgwNDYwOGJlY2QwOGExYTRiNWUyOWVkYTBiMzkwNTBkNGZlZjJhIGxlZ2FjeS10cnVuaworMTEzNDAgZjdkNGE1ODVkYTAxODZjMGI1Yjg4YjgwMTRlN2NhOTRmMzBmNzYzMSBsZWdhY3ktdHJ1bmsKKzExMzQxIDU2NzYwNzA3NmQ4ZjRjNzZhMjkyNzY3YmI0NDM4YzNjMmE5NDgwNmEgbGVnYWN5LXRydW5rCisxMTM0MiA4NjUzZTFmMjE5ZjFiZDIyNjFlMTM3Yzk2ZjcwZmZlMTNiYTUwYTAyIGxlZ2FjeS10cnVuaworMTEzNDMgZDgwOGViYTRiM2M2NTMwNDg4MGYwZTJlNmQ1YjEyMzY2MmJkYmNhOCBsZWdhY3ktdHJ1bmsKKzExMzQ0IGUxNDQ1OGYxMzZjY2FlM2Q3YTZiNDljMTgxNjM4MWFlNjJlYzExOTggbGVnYWN5LXRydW5rCisxMTM0NSBlMDI0YzY5NjI1ZTEyZjhlZDk2NjY1NmE1ZmY1M2QwNWZjMWYzNTFjIGxlZ2FjeS10cnVuaworMTEzNDYgODAxMWYxNDY2OWE4MTdkNGJlOWNmMTUyZDM1MzBkNTQ0YzMyYWJkNyBsZWdhY3ktdHJ1bmsKKzExMzQ3IDVjZGVjYWFhOWJlYjBkMzdkZDFlNDQ5YTgxOWJkZWE0MTI0ZTFlZGUgbGVnYWN5LXRydW5rCisxMTM0OCBmNDU2ZjVhYTU3MTg1YTJkMzFjOTIwYTljMzYyY2UwYmNlMzA0NzZiIGxlZ2FjeS10cnVuaworMTEzNDkgYTFlYzNlYzI2MDJlY2E1ODI2ZWI4MGRmNjIxNDkwODc1ODkzYjYwNSBsZWdhY3ktdHJ1bmsKKzExMzUwIGJiNzhjYzI3NDY5YWI0YmU4NzM4YTBlYzA2ZmExMTg4MjYzMmE5NjcgbGVnYWN5LXRydW5rCisxMTM1MSBmOGUyYWQ0Y2Q0NWJjM2IxYmQxMTY0NTA4ZTIxMmEwZDZhZmFlMDczIGxlZ2FjeS10cnVuaworMTEzNTIgNTcwODlhZDRkNzNjNmUyMGJhZjg1OTZhMjk1YTY2OWNjY2Q5NjYwZiBsZWdhY3ktdHJ1bmsKKzExMzUzIDNiYzNmOTRkNjA2MWU0ZjJhZjM1NzhkNWRlMDBjNmU2YzA0NGEzODAgbGVnYWN5LXRydW5rCisxMTM1NCAwNWMxMTA0ZTA4NGIzMTQ2Mzc0YzkyODc5YjZkYjI0MjU0NjA0Nzk4IGxlZ2FjeS10cnVuaworMTEzNTUgODY4YTI1Y2Y2NTNiZjA1ZWIzOTc1OWU4YTdhMGFmZTc4MWRiZGJmZiBsZWdhY3ktdHJ1bmsKKzExMzU2IGFhY2JmZGY0OTQzZTUyOTg3Y2MzNWFhYTk0MTljNzJmOWRhZmQyNGMgbGVnYWN5LXRydW5rCisxMTM1NyAxMDc5MGYxNGQxM2FiZDI2YWEyMjhmMGMxOGYzYmRjZDU0OTZhM2QwIGxlZ2FjeS10cnVuaworMTEzNTggNzJiNjk4YzMzMjRiOTkwNWE0MzcwM2IxMjhlZTdlYzM5ZjNmMWI5MSBsZWdhY3ktdHJ1bmsKKzExMzU5IGQzNDJlYjQ0ZDdiZGQ1NGY3NTI5ODAwNjc4MzNlN2E0OTkyNWFlZjEgbGVnYWN5LXRydW5rCisxMTM2MCBlYjA1OWEzM2Y3ZmYzMWM5OTI4NjU4Nzc1ZjhjNDk2OGI5OThmMDk2IGxlZ2FjeS10cnVuaworMTEzNjEgODEzZjUyN2YzYmVjMDFjZDdjMmRkOTljMmI0Y2ViMGQzNDNhZThjYyBsZWdhY3ktdHJ1bmsKKzExMzYyIDI3ZWUzMjMxZGZhOWJlYzgwYTgyYjRlNTUzZDYyYzg3ZjEyMzQyZDMgbGVnYWN5LXRydW5rCisxMTM2MyBhOWViMjY1ZDJmNTcwZGViZmQ0ZDk2ZDU0NWYwZDIyN2M2MTUzMTYyIGxlZ2FjeS10cnVuaworMTEzNjQgZmViY2E2YjE4MjdkZGRkYTNhM2QyOWJmOTY4MjVjZDYzNDIxMTk4MiBsZWdhY3ktdHJ1bmsKKzExMzY1IGIyOGI4NGU2YTQyOTQwNWEzMWRlNzJlOWE1MWZiMzMwNTcwNmM4ZjUgbGVnYWN5LXRydW5rCisxMTM2NiBmODhmNDAyNDE3ZjI5ZjNjNDNhYTZiMzc2NGUyZDMyNmVhYjMyNjI5IGxlZ2FjeS10cnVuaworMTEzNjcgODVkY2UzMmFjZjlkNzk3ODhhOWNmYjliNmM0ZmMwMjA3ZjEzMTc2ZCBsZWdhY3ktdHJ1bmsKKzExMzY4IGMwYTllZDIxZGZhMDU2MDJjZjc0YTk5NDgwYjU2YTkxMjA2OWQyZjUgbGVnYWN5LXRydW5rCisxMTM2OSAwNGE0OTJmMTEwZGJkYzcwNmNiNmY4ZDAzY2ZjNmZkYTk4ODM4NTNjIGxlZ2FjeS10cnVuaworMTEzNzAgOGMwNTI0YTcxMjQ0ZmQwZWNhOGViNmVhMGZjMmQyOGNmZDk3YmI5YyBsZWdhY3ktdHJ1bmsKKzExMzcxIDlhMDc1YTJlZGIxZjU0MmY4ODkxYjk2MTRkMjk2ZTczMDIzNmZiNGUgbGVnYWN5LXRydW5rCisxMTM3MiAzNDAxMjEyZTU0ZmMzODA1Y2I2N2M5OTcwMTQyYjUzYzA5ZTNiMWZkIGxlZ2FjeS10cnVuaworMTEzNzMgMzFjMDYzNTE3YzIyZWMzNGM3ZTIwZDAzMzRhNWM4MTliZDA0ZWQ0YSBsZWdhY3ktdHJ1bmsKKzExMzc0IDYwYjRhNjEwZGNmY2NhYTczYjcwNjZhMWU3MDIwOGFjYzJjYTU0NTQgbGVnYWN5LXRydW5rCisxMTM3NSBhNzA4MzI5NWViMzhlYWMwMGJkMWZlNDk5ZmMxM2RjNDNlMWRmMTJlIGxlZ2FjeS10cnVuaworMTEzNzYgMDkwNjNlZWRhMmI3MDNkYTg5YzIyYjc2YzYwN2YzYjhkMzI1ZjE3ZCBsZWdhY3ktdHJ1bmsKKzExMzc3IDc2NGRlNzMxYzgwNjNmYTQzYzU2MjY5OTdhY2Q5MWUzMjVhMmQxMzUgbGVnYWN5LXRydW5rCisxMTM3OCA5YjRiYzNiOGI5ZDRjZDA1ZTgwMWNmZjhlMTM4ZTM0MTA5NTE2ZGVhIGxlZ2FjeS10cnVuaworMTEzNzkgZDI5NWE1MTg3NGE2YWZhMmFmMjE3ZmFiOWIwZjIyN2EzNTQ3MmQ2NyBsZWdhY3ktdHJ1bmsKKzExMzgwIDlkYjhiNWVhNmIyMTIyMDY5ZDdjNjZiYjEwNjkwMzljYjY2OGU0YWUgbGVnYWN5LXRydW5rCisxMTM4MSA0OTIzNjNkNmJjOTQ1MTE4NGMyZWY0NTMzNDBmMWUxY2U3ZmVkMDllIGxlZ2FjeS10cnVuaworMTEzODIgMzg1NDRmODI4ZDc0MDhlMjdmOWUzZDg4ZTAyNGNhNGMwZmE2NTRjMyBsZWdhY3ktdHJ1bmsKKzExMzgzIDZkYzBhOWRjNWJiYjkxYTU0YzM5MTIyYmQ0NTdjYjk1MTU4YmQ3ZjkgbGVnYWN5LXRydW5rCisxMTM4NCBkZGY3MTBiN2U2ZWI2ZmZiNTIwODgxM2I0MTZlZTRjNjgzZDQwZmViIGxlZ2FjeS10cnVuaworMTEzODUgNmY3M2FlMWNmOTM0NmE3MTY5NmJkZDVmYTU5M2MxZTIwMzYyYzY1YiBsZWdhY3ktdHJ1bmsKKzExMzg2IDZkOGI5MmNhZjhjZGI1MmUwNjhjY2NjN2FlYjU1NDUyZTAwMTdjNmIgbGVnYWN5LXRydW5rCisxMTM4NyBkNDFmZjViMTkxZDFkMTE2Yjg3YmRkMzA3ZGM1OWIxMDJmM2ZkNWFlIGxlZ2FjeS10cnVuaworMTEzODggMjlkODQ3YzQyOGY5ZGE3MTk5MGM0OTJhYmVlN2NhZjQ4ZTM2YmM0NyBsZWdhY3ktdHJ1bmsKKzExMzg5IDk4MDM1NTZjMWFlN2MzZmVlZWRhMWMwZWU0ZWI4ODhlZjRlY2VjODkgbGVnYWN5LXRydW5rCisxMTM5MCBhNWI3MWE4YTFhYjU4Njk2MmM0NjYwZWJhYmU4M2Q3Y2IyODU4OTdiIGxlZ2FjeS10cnVuaworMTEzOTEgN2Q2ODEzNTIxZjYxMzU5ZWM3NmIyOTBiYTczNTFlYmQ3ZmNlYjY5NyBsZWdhY3ktdHJ1bmsKKzExMzkyIDg5ZTY1YTk2YTdkM2ZhODA1NTM1NTM0ZjBiN2Q5ZTU0NGFlNWZjODAgbGVnYWN5LXRydW5rCisxMTM5MyBiMWQxZDhjMDA3MWJhN2NkNzM0YjdiMWQ1ZmMxNDAzZjk1ZTJkYjY3IGxlZ2FjeS10cnVuaworMTEzOTQgOWE5ODQyNzZjYzU2NWNhMmZkNmY2NWI2YjM0ZjM1MjMxOTY0YjZiZSBsZWdhY3ktdHJ1bmsKKzExMzk1IDQ1OWJkYTk0MGRhYTI3ODE0Zjc5OTdiZmE1NDYxMjNmMDRiNDAxNjcgbGVnYWN5LXRydW5rCisxMTM5NiBkNmI3Mzk2MjUyOWJiNjYxNGY2M2MyNWVjZWYzY2E3NjEyYmVjN2I5IGxlZ2FjeS10cnVuaworMTEzOTcgOWE0MDU0Yjg0ODVmZjRlYWY2NmM0ZjBiNzAwN2Q4OTdjNDQ2ODQyYiBsZWdhY3ktdHJ1bmsKKzExMzk4IDU1MmM2YjNhYmEzZGU1MDU0YmJmNDY5ZWU0NmY0NGY1NmIxYjkxZGIgbGVnYWN5LXRydW5rCisxMTM5OSA2YjYzM2RmNDFlNTk1MWFhY2M0ZjBiZjg3NTY5NWNiYTA3YzIyMzQyIGxlZ2FjeS10cnVuaworMTE0MDAgZTU1YTc5ZmY4MjI4ZjkyMmE4Y2NjNmU4YWI5NmI2OTEzNmM0ZDA3OCBsZWdhY3ktdHJ1bmsKKzExNDAxIGFjZmZmZTE0NjI4ZTQ0OGJmZWIwOGI1YThkMzkyMTE0OWY0ODZhNGMgbGVnYWN5LXRydW5rCisxMTQwMiA2MTA2ODBlM2I5MjkzZmI2Y2QxZDMxZDFkYTYwNTAzZTM5YWNiMGZjIGxlZ2FjeS10cnVuaworMTE0MDMgMDI3ZjNlZWY2ZTVhNzllZWM0NDI4NjE1MDAxMTM4ZDk2ZTcxM2EyYiBsZWdhY3ktdHJ1bmsKKzExNDA0IGQwZjkzZWJhOWJhYWQwYzRiYWI1OWYzN2FiMmNjZjQ5MmRhNTJiMzQgbGVnYWN5LXRydW5rCisxMTQwNSA4ZTQxOTA2ODYzYmU3YmI0N2QxMTNmZTdlYTBhYjQ5ZmIyZDE2NGMyIGxlZ2FjeS10cnVuaworMTE0MDYgMjhiYzVkOGU4ZGNhMzZiMzNmMDE0ZjMyNTMyZDBkZTJlN2M3MmEzZCBsZWdhY3ktdHJ1bmsKKzExNDA3IDA5NTRhZDRhY2RmZGU1YzhjZjVkNTYzYjBkMDljNTAxNjI2NzMzNDkgbGVnYWN5LXRydW5rCisxMTQwOCBiZTkzNTg1MWRjNTBjM2RkYWZmZmNjODA5MDZiNGM5OTBhMDM5MjE5IGxlZ2FjeS10cnVuaworMTE0MDkgYWY5YmY4NGZiYzVlYTQyYjlhNjEzODdhYWQ5MWE3NTIxMzkxZTYwNCBsZWdhY3ktdHJ1bmsKKzExNDEwIDczZjlhMWU4YWU1MmMwNWE1NDg3YTYxMTViZWU2ZDE5NTBkY2MxMjQgbGVnYWN5LXRydW5rCisxMTQxMSBhODI0OWE2YjFiNThlNDdkZGU4MzMyMzkxMzgzMTViNzkzYWQ4NzUzIGxlZ2FjeS10cnVuaworMTE0MTIgYmE4ZDFiYzk4YjJkODE1OWQ5ZmQwZjdhMDdiNDY1OGU0MTY4NTg2YSBsZWdhY3ktdHJ1bmsKKzExNDEzIGM0NWEyZDkxMWYzMTU2NmYzM2UzZTE2N2VhYjhjZDI0ZDNjZWJkMzQgbGVnYWN5LXRydW5rCisxMTQxNCBkYWUyZjJlZjkwMTVhYTNlMzhiNzEwY2VkNTA0ODRlZGY2NTg4MGMyIGxlZ2FjeS10cnVuaworMTE0MTUgMGJhODFiOTk4OGVlZmVkMWQ2MTAxMDdlMmVkZWU3NjE4YTdhYTBiNyBsZWdhY3ktdHJ1bmsKKzExNDE2IGRjNmVkZmQ0YmFlNWJmYjMzZTVkYTI3MDk2MzY4N2U1YmM0ZTJkNWMgbGVnYWN5LXRydW5rCisxMTQxNyAyMGI4M2NhMDZjZThhMTg3MzYzZTRjZWZmMTA1Mzg1MWE4OTFkYWQ2IGxlZ2FjeS10cnVuaworMTE0MTggMmY5MzZiN2EwOWY5NGYxODA0Y2FjYTdiNzE0ZTQ4M2NkZDQ0NWRkYSBsZWdhY3ktdHJ1bmsKKzExNDE5IDViNzNkNWJhYmM3OGU5MWFiNTUwNWViODY2NmMxMTgxMjI1OTVlNzIgbGVnYWN5LXRydW5rCisxMTQyMCAxOTdhYzVhZDMwY2RmMzYwOTM4NzUxOTMwYTE1MTdhYmJjMDcyZTJhIGxlZ2FjeS10cnVuaworMTE0MjEgYjRlMmIyY2I2NWIxYmQxMDVmN2ZjYjI5NWEyYWNlOTkyOGYzNmQwNiBsZWdhY3ktdHJ1bmsKKzExNDIyIDM0Nzg4NGVjNTMxODEzN2NlMmI3YTRmOGJiYmE0MTE1NTVkNDA3ZDUgbGVnYWN5LXRydW5rCisxMTQyMyAyZDc3NTMwODUzODU5MmRlYThkZGI5Mjk2ODlhMjIxMGQ4YWViNjM3IGxlZ2FjeS10cnVuaworMTE0MjQgNDAwODllNTU4MzA5MGNhZWJjMzA5ZTQzNmE3ZDBhOGNkM2FiMWI3YyBsZWdhY3ktdHJ1bmsKKzExNDI1IGZkYTQ2M2MzYjE3Njc4OTdlODUwNzFhNDE2NjRkYTk0NDk2ODNiMTAgbGVnYWN5LXRydW5rCisxMTQyNiAwZjMzMTg4M2NjMTVmMDUzZWU5N2VkOWM0NmI1MjFhZjE2MTZlOGFkIGxlZ2FjeS10cnVuaworMTE0MjcgM2IwMjkxNjU1ZTMxNjMxMmFiY2VlYjdlYmFjY2Q1NWQ5NDhmMDJhMSBsZWdhY3ktdHJ1bmsKKzExNDI4IDc2MDFhN2U5NTgzZGU1ZGI5MDkzYThiYjM4Zjk1MDA5OGJjNjllZjcgbGVnYWN5LXRydW5rCisxMTQyOSA1MGFmYTI4YWE0YjkxOWM5ZTZjMmQ2YTc1ZmRkNjZmNGQyYjA3ZTg1IGxlZ2FjeS10cnVuaworMTE0MzAgYzkxODA5Y2Q2N2U1NDFiZTY0YTgwZGEyMmU0NTAzMmIzZTE3ZjAyOCBsZWdhY3ktdHJ1bmsKKzExNDMxIDdjZDQyYzg3OGYxNjE5YjJkZTQ4NmQ2YjdkYWEzOTE3YmMzN2MzNmEgbGVnYWN5LXRydW5rCisxMTQzMiAwYTY4OTJiMWE0YWMyODI5Y2Y5YmFjMmYxN2JlNzU4YTRhMTI3MDA5IGxlZ2FjeS10cnVuaworMTE0MzMgY2YzY2ViYTdlZmRkZWQ2MjU3YTk3NjdjZWJjNjVkN2I4ZjdkODU2YiBsZWdhY3ktdHJ1bmsKKzExNDM0IDhhY2M3MmE4MTMxOTk4ZjgwNTY3OGYzYjFiNWU4ODVjYmY1ZTNiZDEgbGVnYWN5LXRydW5rCisxMTQzNSBjYjdhMTUwNjkxOWFmNGY3N2I3MDczZDhmMTZiYzA4OGYzNGIzNGJjIGxlZ2FjeS10cnVuaworMTE0MzYgOTkwMTUzODUzZTNiYjFlNzk3OTdhZmMzOWM0ZWE4N2EwNzU1N2U5NSBsZWdhY3ktdHJ1bmsKKzExNDM3IDM4NGZmZWQyNTJlOTFmZDg0ODg4ZWJlNWVkZWQ0OGVkOTZmZTUxMjUgbGVnYWN5LXRydW5rCisxMTQzOCBjMjY1OTBiMWMzOTZiNTcwZWYyOTZhZjM4MmU2MDJkZWNiM2JlZGU3IGxlZ2FjeS10cnVuaworMTE0MzkgYWMxODgxYzRiYTZkOWQwNmE5NmI3MWMxMTYzOTdiMjE0NjA5MGFmYSBsZWdhY3ktdHJ1bmsKKzExNDQwIGM3OWRlZmI1YTM5YzFiZDczYzNkNjJhYTdhMGIyYTExZjg5MmEzYjcgbGVnYWN5LXRydW5rCisxMTQ0MSAyNDljZDQ0MzNjZjA4ZWJmMmI4Njk1MjgzMjAxNDdjNWI0MmU3Y2ZlIGxlZ2FjeS10cnVuaworMTE0NDIgYTFkZWFmMDQyNzdiYmI4YTBkYTZlM2NlNzVlYTY0MzU4MzUyOGUxMCBsZWdhY3ktdHJ1bmsKKzExNDQzIDk2MThhODY4NzljYWVmYWFhN2NjMDM3NmQxMDhmNTUwYmFkM2VlMGUgbGVnYWN5LXRydW5rCisxMTQ0NCBlNzk1OGU4Yzc3N2E3ODRiOWMwYzY2ZTYxOWM5NTI3ZWM2NDZlZWFiIGxlZ2FjeS10cnVuaworMTE0NDUgZWNkZDk2ZGRiMDAzNWY3YmFhNzEzZmNiNDI2NjY2NDlkYTU5MzU2NyBsZWdhY3ktdHJ1bmsKKzExNDQ2IDRiNjRmMTMxYWE0ZDg1MzQyM2Y0MzEyNzY5OTJhNzFjZTA0NDk1YjQgbGVnYWN5LXRydW5rCisxMTQ0NyA5OWZmZTBhMzhhMWNhZDM4YWJmNTk1NWI3ZDUwODRhYzllMDAyOGJlIGxlZ2FjeS10cnVuaworMTE0NDggYmUyMWFhZGY0OTA4ZjdkOWVmMGRmNTA4NGIyYzM4OWIyMzc5ZjkxYSBsZWdhY3ktdHJ1bmsKKzExNDQ5IGM0YzMyOGFhYmQ4MjVhYWU5ZGQ0N2VkZDBjOWU2MDdmNGM2YmY5Y2YgbGVnYWN5LXRydW5rCisxMTQ1MCBkZTE2ZTE5ZmYxZGQ4YjBmOGE4ODU1NmNlNDU2MTAyMTUwODA0ZjI2IGxlZ2FjeS10cnVuaworMTE0NTEgMTU3ZTRmMjBjZDcxNjA5NGE3ZmQ5NWQ2OWQxZTNjZDQ0N2RlOGY4MSBsZWdhY3ktdHJ1bmsKKzExNDUyIDQ1NjE0Y2Y5ZTkxMWIwZDY0MDQzMzI3Y2ZlYWU1Y2Q2ZjkyMWY5MWQgbGVnYWN5LXRydW5rCisxMTQ1MyA1OGQ2OTBkNGUzMTI4Mzc1YjRjNjUxNzg5NWEyYTQxNjU0Mjk1ZDU0IGxlZ2FjeS10cnVuaworMTE0NTQgNzg4NWYxNWRhMDgwMWM5YTM1NzliNmFhODYxODgyOGUxNzlmOWU3NiBsZWdhY3ktdHJ1bmsKKzExNDU1IDQ2OGNhODRmYmMxNGEyNTVjYTMwZjk5ZGY5ZDkxZTFkZDliYmIyN2MgbGVnYWN5LXRydW5rCisxMTQ1NSBmZWQ2M2NjYmU2ZGMzYWM2NjNiZmU5N2EyZjcwMDZiMWIyODU2OGY5IGxlZ2FjeS10cnVuaworMTE0NTcgZDY5Y2ZjMjNhYTc2NjQzMGMxZDUzMTg3ZGNhMjBjOWFmMjY5YmU1YyBsZWdhY3ktdHJ1bmsKKzExNDU4IDNiY2Q2Mjc4ZTY1ODEwN2VkYmI0NjdhMWM0YjNlMTNiYjcwYzI2ZDUgbGVnYWN5LXRydW5rCisxMTQ1OSA4MmE0M2UxYmZhNGZkYTA2MDIzN2IwMWYzOTc0YjVkOGViZmY4OWEyIGxlZ2FjeS10cnVuaworMTE0NjAgMDdkOTdkMTU0NmQ0YjNjNDQ3OTViY2NmNGMzZDlhZjZhODUxMTk1ZCBsZWdhY3ktdHJ1bmsKKzExNDYxIDBhZmMzODI3OTc3ZTEyYjBmNzNiYmI5YTAzN2NiY2RjOTUyYmQ4OWYgbGVnYWN5LXRydW5rCisxMTQ2MiAyNmMwNDFiMTQ1YzE5NWI0ZGZiODJkZjhiMmMzZTljYTU5NmZlMDE5IGxlZ2FjeS10cnVuaworMTE0NjMgZjFlNDFmYzI3ODNjMTlkZDk2NTdlNWMwNzhhOTBlZTYzOTUwMWU3NiBsZWdhY3ktdHJ1bmsKKzExNDY0IDAzOTgwNTFmOGZmYWUxNzUxMzdjY2E2NjZhOWIzYTNmNmMzZmY2OTggbGVnYWN5LXRydW5rCisxMTQ2NSA3YzJiYzdkYjQ5MzM2Y2MxNjRlMjhiM2E4OGMxMTQxYzJmMDM0MzFlIGxlZ2FjeS10cnVuaworMTE0NjYgNGVmNjQwYWNmMjM2NWFhNzE1Mjc5ZjE3OWY2OTQxZTU4YzBlMTQwMSBsZWdhY3ktdHJ1bmsKKzExNDY3IDZkNGVhMzdkNzBjMjJhZmE1MGFiN2UwZTA2NTgzNGE2Y2Y0NzQ0NjUgbGVnYWN5LXRydW5rCisxMTQ2OCBkNzg3OGIzODZkYWZhODExYTE4OWNlOWQwY2ViYzJhYzNhNzFiMmUzIGxlZ2FjeS10cnVuaworMTE0NzAgZmY2N2Y5M2M0YTliYzBmZjNlMzVkOGM1ZDg1NzM3ODU4YTQzZTIxMCBsZWdhY3ktdHJ1bmsKKzExNDcxIDNlMTI3YmNhODRlNzJmYmQ5NGEyNGFhM2UxZjM3NThkMGU1M2NlODcgbGVnYWN5LXRydW5rCisxMTQ3MiAwNzBkZTRkMzlkZGQ4NmFjOTZkYmE1NmRlOWRjMzk4ZDE0MjE0NGIxIGxlZ2FjeS10cnVuaworMTE0NzMgNWZiM2M2ODNlODYyNjIzNTY2NmM2MTk0ZDQwNjJkZTUyNDU3OTc1MCBsZWdhY3ktdHJ1bmsKKzExNDc0IGQxNzgyMjcxMjQyMTBlY2E0OTQ5OWU4OTIxYmQ0M2UyOGM4YjQyMTQgbGVnYWN5LXRydW5rCisxMTQ3NSBkYjE2Y2E0ZGU0YzQ4NzgxOWU2MTJlNDg4YjM2OWNiNWY4ODM2ZWUzIGxlZ2FjeS10cnVuaworMTE0NzYgZWUzYWY5MTFhZDU2YjZlZDliMTE1ODJhMTQ3NGUwNDBiYTY1N2UyNSBsZWdhY3ktdHJ1bmsKKzExNDc3IDA5MTgzOTQzMTgyZWIzMmE4NmU5MzM5ZDgyNThhZjMwYWJlZmYwNTIgbGVnYWN5LXRydW5rCisxMTQ3OCA5YzljNGMzZWRlYzJlZDAwNzk3ZWVkNWM2NWIxMGM4M2U3OWIyNGJmIGxlZ2FjeS10cnVuaworMTE0NzkgZjE0NzM5MjYxYTM0YzE4MGNiZTczNzM5MTNjMTAxZGU0MzQ5NDU3MyBsZWdhY3ktdHJ1bmsKKzExNDgwIDNiZGQwZTc5MGJjOTg2OWMxMjYwODhjNmU2ZjBmNzBkM2IzY2Y2OTIgbGVnYWN5LXRydW5rCisxMTQ4MSAyOWUzYjFlYjQ2YjE5MGU3ZDM4YmUzMTdhN2Q4NjYyYTlhN2M5NTQxIGxlZ2FjeS10cnVuaworMTE0ODIgZjg2NGM5ZjY1NjA5NTJiNTE5OTc4NmM3NGE2YzdlZWRiZDVjODg2MyBsZWdhY3ktdHJ1bmsKKzExNDgzIGRmYjdmNDY4Yjc4ZDM3NzU4OTk3ZmJmNmM3ZmZhZmEyYTAyODAwODkgbGVnYWN5LXRydW5rCisxMTQ4NCBjMmRkNGYwODZhNDJiZmE0MTFmYWY3ZGZhNjljMWJhYTkyNzAxODU1IGxlZ2FjeS10cnVuaworMTE0ODUgNDQ1MDUwNzU1NTg2YjU5MTIyYzVmYTRhY2Q4Y2VkYjM4YTVlYTg1OCBsZWdhY3ktdHJ1bmsKKzExNDg2IDcxMTZjYjk3MTJiY2M3MDk5OGRmOTRkZWE3NWY1NWIyMzYzMDliMDcgbGVnYWN5LXRydW5rCisxMTQ4NyBmMTZhNmU2NDg1OWJiOGNmNmM5ODZiNTU0OGEzYWQxMzhiZTkyNTc3IGxlZ2FjeS10cnVuaworMTE0ODggOTNiZWM2YThkYjIxYjFmMTM1MzIwZGIyY2RkY2Q2ODZlYWU2NjA0MiBsZWdhY3ktdHJ1bmsKKzExNDg5IGVjMDFmZTljMjg0MTdhYmVlODMwY2NmMGE4ZGUyNDg1ZjM3OTEwYmIgbGVnYWN5LXRydW5rCisxMTQ5MCBhOWY2ZmIxNGFiZDdjYTIwMThiMDA5YTEwZWZkYWY1OWI0YjdhZTUyIGxlZ2FjeS10cnVuaworMTE0OTEgZmYxYThhMzhmOGMxMWFmYjViOWE3YzM0N2U0MzI5OWNkM2RhZjMwNSBsZWdhY3ktdHJ1bmsKKzExNDkyIGVhYmJlMGVkMzQ2OGNjZWM4YjgwYjIxMjVjNzZjYmNkYjlkMGJmMjIgbGVnYWN5LXRydW5rCisxMTQ5MyA1OTkxNjcyODg1Y2IxYWM0ZGZjZDg5NDFiNmY0YThhMTk3NDNjNjNmIGxlZ2FjeS10cnVuaworMTE0OTQgOWUwMWI3NGRhZjc3YzcxYzc3NTgxZmYzZTQ0ZTE5YWQwMDEwODhlOSBsZWdhY3ktdHJ1bmsKKzExNDk1IGExMTBiNjA2OTliMWI0MTI1NTE3YTE1ZmE4N2RkZTc1MDVmZGVjY2MgbGVnYWN5LXRydW5rCisxMTQ5NiAzNmJmYWZkZGE4ZDE0ZjNiOWZjZjI5NjQ2MTk4YzY5ZDllNzA1OWQ3IEJCUFkKKzExNDk3IGJmZDg0NzJmNjk2YjljOGZjNjlhMmM3MzE5MDJlYzE0MWQ5YTQwNDEgT1NBTQorMTE0OTggZDg1ZTgwNzBiMTY0ZjM3NmY3ZTZjNTJkNGJmYmFlNGUzY2QxMzQ5NiBQWVRIT05TQ1JJUFQKKzExNTAwIGE4ZDQ3YTM3MThjZTlmZDhjNGZmNzgzNzY5ZjFhYTU5NTNkOWQ5ZDAgQkJQWQorMTE1MDIgYjRkM2Y5OGJmMjI5NzJkNGExMjExZTViYzNkOTJkY2UzNzUzZDdhMSBQWVRIT05TQ1JJUFQKKzExNTA0IGUxZjMyM2FlOWM0YjUyMzdkZGRmMGUxODUwOWNjYzZlMzJlNTIwOTcgT1NBTQorMTE1MDUgMTFhYmFlMjg0YzA3MWVkYmVlNGU1MTg0NzVmYTBkYzdjZjZiMTJjZCBsZWdhY3ktdHJ1bmsKKzExNTA2IDE3Y2Q2ZTVkMjk0YmIzYTA0YmQ5OThjZDdhNWU2MzVkZGFhYTAyODcgUFlJREUKKzExNTA4IGU5MjFjZGJjYzVkZDYzYWZiNjMzNGFkOTNjNzRlNDQ1NWViMTc0YTYgUFlJREUKKzExNTA5IGRmZjY4ODEyNDY1NzJlYzc5MWE0YjE1OTM2MjIwYTAwZDcwYzI3NjQgbGVnYWN5LXRydW5rCisxMTUxMCAyY2UzZGE0MTllMWQzOWU3NGUwMDdhMDg4NDlhM2ZkNThkYmVlYzA1IGxlZ2FjeS10cnVuaworMTE1MTEgZGQ1ZmExNzU3NTU2ZGI3M2ZjNjMwNGQ0YzQ1YmI3Y2FjMDlkYjJjMyBsZWdhY3ktdHJ1bmsKKzExNTEyIGI5YTA3MDczNmVhY2IzMTFjN2M3MjE4MDhjNmNhYjRjN2EyMTA4M2EgbGVnYWN5LXRydW5rCisxMTUxMyA4OTdjZTA5NzY2OTY1MjBhNGIxZTNmYjdiMjAyZmZhZDI4ZGE4YWJiIGxlZ2FjeS10cnVuaworMTE1MTQgYjE1MGViZjdiMmI3MmM0OGE5MDBmMjIxNTkxM2JjZWQ4MTJkMzhmYiBsZWdhY3ktdHJ1bmsKKzExNTE1IDY3NGY0NTFjNDgxNWZmNGEwNDA2MmVhZDc3NThiNzc3Njk4OWFhYTYgbGVnYWN5LXRydW5rCisxMTUxNiA5MjhmZThiYzllYjZkNjc1NmZlNzE0YTdlMGZlNDRiMzFhY2U4MTRhIGxlZ2FjeS10cnVuaworMTE1MTcgYTk3MjRjOGU2ZTZmZDJiMDMwYzI2YTFiNGVmNDFmMjM1YWJhMzM3MSBsZWdhY3ktdHJ1bmsKKzExNTE4IGI3ZTc3NDdjMTk2OTY4ZjdlYTU5N2Q1MzM1NTk4YTZiYTVkZGJjOWYgbGVnYWN5LXRydW5rCisxMTUxOSA2YTJlOTI2MjE1NDExZGUyMWQ4ZDlhYWE1Y2ZlMzNhZDQwOTc3YWNhIGxlZ2FjeS10cnVuaworMTE1MjAgYTg3YjIzZDQyODgxNGUzOTA1YzI4MWI2YTJlMGJkYTRmY2M5YTlhNiBsZWdhY3ktdHJ1bmsKKzExNTIxIDNkZjViOWQ4MzM1Yjc3NWE5NjRkZWU0YTYxYmFhZjI0YTE1MjZkM2EgbGVnYWN5LXRydW5rCisxMTUyMiBmYjVhNWVjMmVhMWFiMDFiZjc0OTEwOGZkZGU1MmY5N2EyYjY5YjcxIGxlZ2FjeS10cnVuaworMTE1MjMgZDUzMjM3YmNmMTVmNzc0MjE1NDE4ZjczZjhiZmMyYjYwYjc4NTgyZiBsZWdhY3ktdHJ1bmsKKzExNTI0IDY1MTM5NzE5YjY1NjA1OWU1MmM3NjliMmE1ZmM4ODA4ODZkZGY3MDIgbGVnYWN5LXRydW5rCisxMTUyNiBiM2VlY2RlMzY3OWVkYzEzMzAzNDAwM2Q4ZmU0NTQzNzRmMTNiODBkIGxlZ2FjeS10cnVuaworMTE1MjcgZDNjMDY3OTM0YzYzY2JmNzZlZjc5NjJjYTY4ODNiYjY2ZjljZTMwOSBsZWdhY3ktdHJ1bmsKKzExNTI4IGQyNzIyYTRjYmQ5YzYxMjhiNTIxNjg2NjhmOGY1YjhlZGFjZDI2NTEgbGVnYWN5LXRydW5rCisxMTUyOSBiYWY5YTVhNzFkMmQ2ZGRmNjg4MTVjNGQ1YWQ3ZjkzNGIwNGJkNGZmIGxlZ2FjeS10cnVuaworMTE1MzAgOTk2MjgzM2Q0OWZkZGI5MzI2MjE5N2ExNWMwZWQ4ZDNlYzY1YjNkZSBsZWdhY3ktdHJ1bmsKKzExNTMxIDE4MmM5Y2JkZjA1M2RlM2E4MzJkMDgwNTE0YjQ1OWEyOGU1NmMxMTYgbGVnYWN5LXRydW5rCisxMTUzMiAxMWI2ZjBjOWVhYzk5OGNhOGY2YzgzY2VkM2Q0MGU3YjVjZDU1ZGEwIGxlZ2FjeS10cnVuaworMTE1MzMgMTg2OTdmNTlmZDQ4Yjc3YmQ1NDZlYTkxZjk2ZGZiNDMwZTc5ZWY5ZiBsZWdhY3ktdHJ1bmsKKzExNTM0IDYyYjk0Y2M5OGRlNDU5ZTdhODAzOTcxZDE0NzQyZGE1ZDYxODUxYmEgbGVnYWN5LXRydW5rCisxMTUzNSAyNGQwYTU3YWUyMzRkYzgzNTc2ODNlMWUxYzQzMWU1NGI4OTVkZDA4IGxlZ2FjeS10cnVuaworMTE1MzYgZjBjOGI4YTMzZjA4ZWFlMDhkM2ZmMjlkMTVlMGUyMDg3ZDhlOTdlOCBsZWdhY3ktdHJ1bmsKKzExNTM3IGViYzBjMTJkYmQ3OGQ2MGQ4ZmUwOGQ4OTI5NmIwOWIyYzEzOTU1YmIgbGVnYWN5LXRydW5rCisxMTUzOCA4ZDE4ZDQ5NmFmODcwOWZjM2FhYjBjZWU5NjJmZDZjMDE3ZTJiYmUzIGxlZ2FjeS10cnVuaworMTE1MzkgOWZkOTE1ZDIzY2ZhMDNjMDBkM2U4MDgyZDIyYzE1ZjM0M2I2M2E5NiBsZWdhY3ktdHJ1bmsKKzExNTQwIGQ4ZWRlMDIwZGZlYjI5NGI3NWFlN2RjNjk1YWJhOTIzNzBjMmFiMzAgbGVnYWN5LXRydW5rCisxMTU0MSBkNDM3YjY2ODNlMjQxNzZlYWI3NWIzZGEwN2RiODU5OWQyYjQzNGY0IGxlZ2FjeS10cnVuaworMTE1NDIgYWQ2YmMyYzVkMzUzZWVkY2IwMjM2ZWRiNjdlY2FjOTdkNGViYzMyMSBsZWdhY3ktdHJ1bmsKKzExNTQzIDkxZDA4NjA3NDZmYzI3MzNiZDIwYTE0ODZjOTAxMzA2ZjQ2NmRjMzMgbGVnYWN5LXRydW5rCisxMTU0NCA2ZDJlYjU4ZjA0MTg2ODA4NmQ5ODcxY2QxYzRhZjdkODg3M2YzNjAzIGxlZ2FjeS10cnVuaworMTE1NDUgMTE4ZjlmNzNhYmU5MTllOTJlYjliM2RlNjJmZjg1NDdjMjI0OWRiMiBsZWdhY3ktdHJ1bmsKKzExNTQ2IGNiZjcyYjIyMTBhZWE5ZWU3ODMyNjI4Nzk5YmQ3ZDQzN2E4MmY5YzQgbGVnYWN5LXRydW5rCisxMTU0NyBmM2ViZGIyMjc0ZTRhODI5ZjdmN2NkMmZiMDE3ZGEzNWY4MDEwMGI2IGxlZ2FjeS10cnVuaworMTE1NDggODM5YzY2MjJkMTVhMDcyMTBjNzZkNTk3YzUzYzJhZDI0MzE2ZmUxMCBsZWdhY3ktdHJ1bmsKKzExNTQ5IDkwNWJmYWMwZmEzMmUwNTY5NTdkZmI3ZDIwZGFmOWE1MjUzY2NiZjQgbGVnYWN5LXRydW5rCisxMTU1MCAxNmY4Mzk3ZDhmMDQ4ZGU2NGExYjhkMGUyMGFhOTFkYjQ4MDg2NTA1IGxlZ2FjeS10cnVuaworMTE1NTEgZGFiYjJiNmEzYTgxZWIwZmU4YzQ0ZTQ1NjE3ZGYyNjE3ZjI2NDA1YiBsZWdhY3ktdHJ1bmsKKzExNTUyIDViYzY0ZWZjNjVlMDI5ODQxYzMzNWY3MjY3OGQ1NTZmNmE2MTQ3MzkgbGVnYWN5LXRydW5rCisxMTU1MyAwNTE4MWUxMDQ0MjBhYzAzZjUwNjE3OTJlZTQ4MmZjMWRjZGZlNjBjIGxlZ2FjeS10cnVuaworMTE1NTQgMDI2ZTEyMzYyNDNlNmNiYWUxY2I3YmNmYjA1NGEyNTY4OWFhMmNmNSBsZWdhY3ktdHJ1bmsKKzExNTU1IDE5ZWM1MzQ2OTRhZGRlYjg0ZGZlZTIxNGRiYjVkZDZmYmQ3OWRiOGIgbGVnYWN5LXRydW5rCisxMTU1NiA4Njk1MmJkYWJiMjFlMTFmZWM5MWMzMWMxNWM5NDVjNjE4MjJhZWE3IGxlZ2FjeS10cnVuaworMTE1NTcgNWMxZTFmYjM3MmRlMDZlZTI4MWE2Y2YxMGZlMjRlM2I0ZDIwMzAyNyBsZWdhY3ktdHJ1bmsKKzExNTU4IDA4NzZiNmMyNDAwN2Q4NjY2ZGVhMjc3NmRiMjY3YjBlMzZhNjgzNzggbGVnYWN5LXRydW5rCisxMTU1OSAwMDg4YWQ5ZDk2YzM4NmFjNDJiYzU0NjBmZTJjYmEwMDhiN2ViMGUzIGxlZ2FjeS10cnVuaworMTE1NjAgNTQwMWM3MTQyOGVlZmIwZTYyYTY4MTczN2NjN2EzZGE5NzQyMTUwOSBsZWdhY3ktdHJ1bmsKKzExNTYxIDA3ODFhNDk5OTA1MTVjMTYyOTg2ZmRiYzI4Zjc5NjU4YmQzN2RhYjcgbGVnYWN5LXRydW5rCisxMTU2MiAyNTcwNjNhYWUwMDBmM2Y1OTg3YzYyNmFlYzRiYWM4YzRjYjU3Y2I2IGxlZ2FjeS10cnVuaworMTE1NjMgMzQzM2E5ZWJkZjQzOWU2ZDE4YzlmMjJmYmEyZmVlNzk1OWRlOWU5NyBsZWdhY3ktdHJ1bmsKKzExNTY0IGE1ZTNjNjk1ZDJmYmUzNzdmZWY0YTI4YWRmYTQzNTBlNTEwOGE2Y2EgbGVnYWN5LXRydW5rCisxMTU2NSBiMjVkNWE2MmUzNTc2M2Q1ODgzZTkwZDFjYjllM2IxODEyNDkwMDNlIGxlZ2FjeS10cnVuaworMTE1NjYgZWJjOGNiMDc3MDNmODlkNDY1MmQ2OTQ2N2I1ODQ0ZTdlNGQ3OGZkMSBsZWdhY3ktdHJ1bmsKKzExNTY3IGMyY2JlOWFjZmM4ZTU4ODMwY2Q5YWY3YjIzOTMzNGM3OWRkZTU3MmIgbGVnYWN5LXRydW5rCisxMTU2OCAwMTg4ZDYyNTk2OWFiMzEzZmQ2YzJiNDNkYTgyMmYzYzYzMGM5MzViIGxlZ2FjeS10cnVuaworMTE1NjkgOWNlYTZiNjE3ODM4ZTU0MTJmNTNhYTcwNjVjMmFiYzEzMzkxNWY3ZSBsZWdhY3ktdHJ1bmsKKzExNTcwIDYxOGZiODMwYmU2NThjZmI0NDM3OTlkOGQxMWRhZTQ4MDIwOWU5NTkgbGVnYWN5LXRydW5rCisxMTU3MSBhOTgyYjE3ZTkzOGY1MjlkZmEwNGMzNGQ4MTY1ZjM0NjRkMTgyYzJhIGxlZ2FjeS10cnVuaworMTE1NzIgODUwYWNmMjk5ZWEyM2RiYjFjYWQxZWZiMTA2OTEzYTM1NDBmYmQ3ZSBsZWdhY3ktdHJ1bmsKKzExNTczIGMwNjI3MjM4NGYxMThhZmUwZGM2MjkxZWFkMDNjZmM2NmE4M2QzYjYgbGVnYWN5LXRydW5rCisxMTU3NCBjNDQ3ZDFhZDc4NTE3ZDM1OGZmZjdiZDc0MGI5MTQyOTNiMTU5YmM3IGxlZ2FjeS10cnVuaworMTE1NzUgMThmODFmYWY0YmQ5N2I0MWYxN2FiOGZmMDUxYTg2NzhmMzRhNmJiYyBsZWdhY3ktdHJ1bmsKKzExNTc2IDRkMmNiMjEyYzhkMTU4NTQ5Mzc3NWI4NzFmOGEzYmM3MmE5NjA4M2YgbGVnYWN5LXRydW5rCisxMTU3NyBlNDliNWZlZDc0NGM0ZmY3NzFjOThiNWViNzJkNDk3OGRlNWFiYWIzIGxlZ2FjeS10cnVuaworMTE1NzggZWRhYzg2MGFkNzEwYjVhYTI5MjEwZWU0YzlkNzI0MGYwNDgwYTVjZCBsZWdhY3ktdHJ1bmsKKzExNTc5IDZiODU0OTMwNTJlOGEzNmY4MmU1ODI0NWMzODJjYmZjZjY0OTA0NDEgbGVnYWN5LXRydW5rCisxMTU4MCBiYzQxZTg2YzkzOGNmNGI5ZTcwYWU1YTQyYzA0MmRlNTc4MjQxYWNjIGxlZ2FjeS10cnVuaworMTE1ODEgM2Y0YmU3ZTI4ZDVjZTc4NTExNGNkZjJiN2Q1OTk5MGNmYjc0MWYwMSBsZWdhY3ktdHJ1bmsKKzExNTgyIGU5NDNmOWMwOTkwMWFkODE4YmUyM2NhYmVjOGM1ZDc3MTZiMDgzNzYgbGVnYWN5LXRydW5rCisxMTU4MyBkNGViMzVjNmU2ZWZiZTcwYWZmNTRmMjYxNTk0MTQ0NTI1Y2VlZGZkIGxlZ2FjeS10cnVuaworMTE1ODQgYWNmYjNhNjQ4ZGNhYWJmYTYzMjJiYWEwYTc2ZWZiOTYzZGIwYzE4OCBsZWdhY3ktdHJ1bmsKKzExNTg1IDdlNmM0ZjU3YWY2OTkyMGE1OGQ0YWNjZmVmM2I5ZTg0ZmFlMmZhYjIgbGVnYWN5LXRydW5rCisxMTU4NiBlNzFmODM5MjIzOTIwNGE0NWQ1MzhjZDU3MjY3YTg0MzI4NTZiODY3IGxlZ2FjeS10cnVuaworMTE1ODcgMjZmNWJmZDcxNWE0NjU2ZTg5YWNlN2ZiZTdlMjRkMTAxYWZkMjc2ZiBsZWdhY3ktdHJ1bmsKKzExNTg4IDU1NjkyN2Q4NjhkOGQ4ODgyYjY1MjNjZDY5ZWZlYzUyODNmYjQ3MDcgbGVnYWN5LXRydW5rCisxMTU4OSAyZTA3ZjFiMjk4ZTE2ZGI4MWYzNTlkMTVmM2NkMDc3NzVjZDcxOGZkIGxlZ2FjeS10cnVuaworMTE1OTAgNDcxYzZjMjIxODc5OWVlMjcwMGFkNmQyMWRiMDZmZWEzNzAwMWUxMyBsZWdhY3ktdHJ1bmsKKzExNTkxIDAzMTBlZTE2NDk3YTg3ZDcxOTNjYzE3MTA4OTEyZDZjYjVmNGNjYmQgbGVnYWN5LXRydW5rCisxMTU5MiA2MzdmZWM4YTdkZDNkYWZmMTdhN2Y2YjQ3NjAwMmFjN2Q4ZWFjYTI2IGxlZ2FjeS10cnVuaworMTE1OTMgMjA4OGY4MDI1M2RiMDRmMjE0YjVmMmIwNTgzYWZhNWE3NGI0MDVmYSBsZWdhY3ktdHJ1bmsKKzExNTk0IDQyNzg1NjFiZDVlODdmNTlhMTM4Nzc3ZmY0NjQ5NWRlN2E2NWQ1YjUgbGVnYWN5LXRydW5rCisxMTU5NSBiODI2ZTUwZTk1NzNmNGUwOTQwYzgyY2JmNjRhMTFiYmI2OWQzMjM3IGxlZ2FjeS10cnVuaworMTE1OTYgNzI4YmJlYjllNGY5NjU0NzJmODkyYjMwZTNmZmE2MDE2NTg2NjYxZCBsZWdhY3ktdHJ1bmsKKzExNTk3IDY4N2I2NmU2NTNkNjE1YTA4ZmMwYTBlOTIyYzY1YjA0MDM3YTgwZGIgbGVnYWN5LXRydW5rCisxMTU5OCAzMTM1MzE2Y2Q2NzBiMDhmYThjYWExNDQ5M2U3YmNlMzgxZDRjYjE4IGxlZ2FjeS10cnVuaworMTE1OTkgZjIzOTZkNDMwNTZiNmM2ZDFjZDk3NjVhMzVjOTZlYzA3YzZmNmE1YSBsZWdhY3ktdHJ1bmsKKzExNjAwIDc3YTliODVmNzYyYTc2NDhhNzhjMjczZWZmZmViZThmOTIxOTYwMjYgbGVnYWN5LXRydW5rCisxMTYwMSAyYmI3YjY2MGYwMDdiZWY3NDM5YzYwYTEyOTcwNDg2YTNjNjg1MDYyIGxlZ2FjeS10cnVuaworMTE2MDIgOWViMmQ2ZjZmZDNmNGM3MWNhNjdkYWFlMTc3MGRiOTg0OWVkMDMyNCBsZWdhY3ktdHJ1bmsKKzExNjAzIGNlNTJlOTIyZmJiMjZlYmFiNTM5Yjk2ZjM1MjA5NGU5MWE2NTA0MjkgbGVnYWN5LXRydW5rCisxMTYwNCAyNGNhZDRlMGRiOGRkMzljMzI1NDkwYzU1ZTM3MjJlNzIxNWNjMGE2IGxlZ2FjeS10cnVuaworMTE2MDUgYjUyODY0YzVlOWM5NDIzYTUzZDBiMmVjZDFlOTJmZTRiN2U3NDZlYiBsZWdhY3ktdHJ1bmsKKzExNjA2IDllMTc0NTY3OWU3MTUwMDNiMmNjYmJjMDlhYjQ3MzJlOWZlOGU1OTggbGVnYWN5LXRydW5rCisxMTYwNyAwNDIwZjU0MzRmNDQ5MzJhYTY2N2RmYmFjOWZiZTQ5NzMzMThlYzJlIGxlZ2FjeS10cnVuaworMTE2MDggYjA4NDVkMDlmZWRmNmY4MTY1MjA4NDQ0NzUyNDRkNGY3N2VkZjliMiBsZWdhY3ktdHJ1bmsKKzExNjA5IDgzNjYwY2RhM2UzZjM5NzAwNWY4NTY5NzFhZmEyZTZiNTk0NTgxZDAgbGVnYWN5LXRydW5rCisxMTYxMCBkYmE3MTE2MjZiNDMyNDFjNWU4MWVjMGIzNGI5M2ZmNWM0NWU3NmVlIGxlZ2FjeS10cnVuaworMTE2MTEgZDIzN2M4MDhhMDFlMTEzMThkMjUxNmRkMDkyMjgwYTU2NGQzMGFhYSBsZWdhY3ktdHJ1bmsKKzExNjEyIDI5MzgwYTRmYTIzMDg5MDMxNjNhYjVmZDFjZGE4NTY5NmQ2NjkzMzAgbGVnYWN5LXRydW5rCisxMTYxMyBkYjE1NDdmZDQwZTQ2NzViNzI4ZTViNmNhMTlhZGZlZmZjNmNmZWZmIGxlZ2FjeS10cnVuaworMTE2MTQgNGNjMTA5MDhlNmY0NWYwMGZlODI4NzM4OGE3MDE1ZGVkOWRhMzI2ZiBsZWdhY3ktdHJ1bmsKKzExNjE1IDEyMTM2NTQyZTE1NTQ5YjFlM2ZkYTIzYmE0NGFhM2RhOGNlMmQ3YWEgbGVnYWN5LXRydW5rCisxMTYxNiA0NDg2ODYyZDVjYmRkMGZjMDVkZWY3YjFmNDUyMTk5ZjQ2N2U4ZDg0IGxlZ2FjeS10cnVuaworMTE2MTcgNTVjMTgxMWJiOGVmYmEyOWI1MzIyM2Q3MmQwOGQ2YzU5NTJhOGMxMiBsZWdhY3ktdHJ1bmsKKzExNjE4IGZkZWVmMTc3ZjUzNmFkOTZjYTJiODBhZTU3OWI1NTFmYjQxNzMzMmMgbGVnYWN5LXRydW5rCisxMTYxOSA4NmI3MTI5ZDhkMDhiZDk3N2YwMjAzNjZiZjJhMmE5YmVlMjIxOGQ1IGxlZ2FjeS10cnVuaworMTE2MjAgMTdkMGM1MWUwODg3MDE5MjYxMmE3YTQyODRjOTFjOTc0MzdmYjNiNSBsZWdhY3ktdHJ1bmsKKzExNjIxIGIxNjYzM2IyMmU2YWUxNzBiOGI3NmNiYzc2NGJiNTE4YjI3YTBjZTkgbGVnYWN5LXRydW5rCisxMTYyMiA2Y2Q5MzMyMmI4MTBiNmY1M2ZhMTQ2OGZlMGJlMTAzNjg2MGU1YjAyIGxlZ2FjeS10cnVuaworMTE2MjMgM2QzMGRkNTQ0NDU2MjFkMDc0ZWQxYzYyMzI2YmNmNGQ5ZmE3OGVlMSBsZWdhY3ktdHJ1bmsKKzExNjI0IGY0MTI5ZDUyZGZjNWFkZjNmOTVjNjhjM2Y3YmFhYTUyZTA3MWU0NGQgbGVnYWN5LXRydW5rCisxMTYyNSBiYTQwMDY1ZTM5OWYwNDA0MTM5ZGVhZjBjM2VkNWY3NzEzZjczYmYyIGxlZ2FjeS10cnVuaworMTE2MjYgOWYxMDIzYzg4ZjU3MDY1M2IwODk0NTVhZjYyMDZkYjlkZmVjYTViMCBsZWdhY3ktdHJ1bmsKKzExNjI3IGIwZmEyZmMxMmRmYjI4Y2Q4NTI4MmMxY2I5NGQ2ZjJiMDBmZjA1MGUgbGVnYWN5LXRydW5rCisxMTYyOCA2Y2JmMDU2OTYxMjBkMDliMTUxNmRmZDVlYzdiYzMzZGZhOGJjNTViIGxlZ2FjeS10cnVuaworMTE2MjkgZWJiMDEwODU4NzcxYWFjN2QyOTQ0ZmQyNGU5MjYyNzZiOGY4Nzc2MCBsZWdhY3ktdHJ1bmsKKzExNjMwIDA2NjBiZTZlNjc5MTRiOWNmMWE2ZTNhOGY0ZTc3NGQ2MGExYzZhZWQgbGVnYWN5LXRydW5rCisxMTYzMSA4OGIyMjEwOTAwN2MxY2I5MThkNWVjYjJlMzU4MmQ1ZTMxYmJmMWFhIGxlZ2FjeS10cnVuaworMTE2MzIgNWFmNGIxMDIxNDRhZTVkOTA0YTQ5OTVmZDkyZTRkNzY5NDdkYjlmYSBsZWdhY3ktdHJ1bmsKKzExNjMzIGUxYjcxMGUzMGFjZjczYzViNTlhOGRiMTBkZTkzNDJiODAxZjM3ZWMgbGVnYWN5LXRydW5rCisxMTYzNCAwMzI5ZDQxOWU1MDYxODJlOWE4MDhlY2UxYzMwN2VlZjcxN2RlNTIwIGxlZ2FjeS10cnVuaworMTE2MzUgZGVlYjNjZTIwYWNmMWE4NWIxMGM4NjA3MGFjYjExYjYyOWNjMWY3YyBsZWdhY3ktdHJ1bmsKKzExNjM2IGY1ZDI2NWQ1ZTlkYzAyYWRiZmNhMTVmNzZjMDY0MDcxNDI3Y2Y5MzkgbGVnYWN5LXRydW5rCisxMTYzNyA4ZTNiNmQ2YWZlNGNjMWI1NTFjMzhiZmRlOTgzOWNmMjkzZDE1NTc2IGxlZ2FjeS10cnVuaworMTE2MzggODgxYjg2Mzk4YzIwNDNmNWEyMzM2ZTZkYTdjM2FjYjA3NWE1NWY3ZSBsZWdhY3ktdHJ1bmsKKzExNjM5IDk4ZGM2NzVkMDkxM2I2YjMzYmI4ODBmYjE4NTkzNzg3OTFlYWE2ODAgbGVnYWN5LXRydW5rCisxMTY0MCA3ZmFiYmJiN2FkOWE3YTFkNDc4NzdhZGU2OTA5YzFkYTJlMzQyN2IyIGxlZ2FjeS10cnVuaworMTE2NDEgNTIwNTgzYmRmMGIwMjkwY2U5OGEyNTI5ZjA4YWIwY2Q5NTUyYjVhYSBsZWdhY3ktdHJ1bmsKKzExNjQyIGU1Nzg0MzliOTgxZjg1NjE0NGI0MzIzNGEyYzBlNTllNGFiYTM4NDEgbGVnYWN5LXRydW5rCisxMTY0MyBjNDYwMjIzNjQwOWU4YjllMDQ5ODYxMDEwMGVjMzJjM2FmYjc1MGZjIGxlZ2FjeS10cnVuaworMTE2NDQgNmVjYjI0OGU2N2ZmMmMwYTU0N2QxMGRkODJkODZmZWQ5NjExZDE3ZiBsZWdhY3ktdHJ1bmsKKzExNjQ1IGU2MDA1NTIxNmI4ZjlmYzkwM2Q5NTk4NWY0YjgwOWE3MTRiMGI2ZDcgbGVnYWN5LXRydW5rCisxMTY0NiAxYzIyY2JmYjRhMWUyMDZhN2NiMDExOTlhNWJhY2FkYTI5YTY5ZWY4IGxlZ2FjeS10cnVuaworMTE2NDcgNGFmODdjZWQ5ZjNhYWI2ZDlmZGMzOGFkZDY0MzQxNGNmM2YyODljNCBsZWdhY3ktdHJ1bmsKKzExNjQ4IDRmYjRiMDA3NTViNWUwNmQ3N2U4YjAyNjNlZmMzNDBkMmNhMmVlZTcgbGVnYWN5LXRydW5rCisxMTY0OSBhMzA3NjU2Yzc3ODg5NzZjNDQ0ZmQxYjUwYzc1ZGE0MmFmNGJiOTAwIGxlZ2FjeS10cnVuaworMTE2NTAgNDY4MzBlNWEwMzUxZmFkMGQ0MTM3ZGVhM2U0NTVjNjI4OWMxNjdkZCBsZWdhY3ktdHJ1bmsKKzExNjUxIDFlOGYzMTA3NDU0NzUxMDI3MTdhMzVlZTM5YzYyMjNmNmYwYmEyMGUgbGVnYWN5LXRydW5rCisxMTY1MiAzNTI5YmI0Y2FlZmQ2ZTBhNWU1ZGIxY2Y3YzFiNmIzYzRkNjc3N2M0IGxlZ2FjeS10cnVuaworMTE2NTMgZGFmMWQ2MWI5NjExZDdhMjczMTI5NzAyNGRjYmJlMjc4NDI2NWM4NiBsZWdhY3ktdHJ1bmsKKzExNjU0IDlmNzI5MWY1NTAyNmQ0ZDU1YzQyNWI5M2QxMWRiMjNiMGVmZjM4MDAgbGVnYWN5LXRydW5rCisxMTY1NSBiMjYzMGEyOWZlZmRiOGI3ZjQ1ZDhjOWU5MDQ1NTNkNGNhNTc2NzIwIGxlZ2FjeS10cnVuaworMTE2NTYgZjJiOThjYmM1MDMwMTg4YWEyZTQ1ZGFkOGU4ZmE5ZDdlZTliODZkYSBsZWdhY3ktdHJ1bmsKKzExNjU3IGYwYTkyYzBhMTE1ZWNmY2RkNTU1ZjBmMTliYzM5NjczOGVhZTE5MDcgbGVnYWN5LXRydW5rCisxMTY1OCAxZTQzZGY3ZDhiZTNmZmU1N2UwNzM4YjMwZDEzODE4MjhhMDBjODJlIGxlZ2FjeS10cnVuaworMTE2NTkgZTJkYWE3ODNiZDQ3MjhlYTBlODMzODYyMDk2NWYzMzBjZmRiMGEyMyBsZWdhY3ktdHJ1bmsKKzExNjYwIDBhMDg1ZDczMWMxYzc5YThmMzI4NTY5NDBjYzUyZmZlY2IxNGMyOGMgbGVnYWN5LXRydW5rCisxMTY2MSBkMDg2NDE0YWRlNmVjNDllOTM2YTM5YzI5ZjUwM2YxZjBjZDgwMWFjIGxlZ2FjeS10cnVuaworMTE2NjIgZDNlZjRkMTBmYjk1NGM4ZTg1MTMzNDI1MGZhYzRjYjM1YjljYjQyZCBsZWdhY3ktdHJ1bmsKKzExNjYzIDZhNTU5ZGM3OGM5MTNmOGQ2NjkzZTc1NDViMDk2ZTI2MDNhYTYyM2QgbGVnYWN5LXRydW5rCisxMTY2NCBiMGJhMzE5Njc3MTk1ODIzZDg1MGZkNzA0MDk2YmM3NmMyMzFkNmIwIGxlZ2FjeS10cnVuaworMTE2NjUgNzVhODA0N2RmYzExMDNhZmIwMWQ3YWNjZWU1MzJkMDhlODIwYzU1MCBsZWdhY3ktdHJ1bmsKKzExNjY2IDZiZTM0M2RhMjkxNDRhMzkyMDgyN2IwNzk2YjkyZjdlYWU2YWE5NjggbGVnYWN5LXRydW5rCisxMTY2NyBjMDBiMjczMDg1YmVkNzBhYmJhMDcyNWNiYmJmM2ZjNjIxMmY1NDU0IGxlZ2FjeS10cnVuaworMTE2NjggM2NlNTExYmE0MjQyMjYxMzIxMDc0MjBiN2YwNzJlZmE3ZDllNjIwMSBsZWdhY3ktdHJ1bmsKKzExNjY5IDlmZDJiYmQ0NDU0ZTM2NzhiMWNkNmYxMTA1ODBkOWE4YzgyYWMyZjIgbGVnYWN5LXRydW5rCisxMTY3MCAzMmIxOTQ5MWU3MGI1YTc5ZDU1ODk5ZjkxNjBhNmY2ODdmOWQxNzFiIGxlZ2FjeS10cnVuaworMTE2NzEgOWE4OGZlMjA0ZDk1Y2Q4NTY3YWNjOTkyODIzODRiMTAzMGNkZmEwYiBsZWdhY3ktdHJ1bmsKKzExNjcyIDY4YWFkOGVjZmQ3MGVjYWFhOTQxNWY0YzE2ZDkwYzJiOWI0YjQzZDUgbGVnYWN5LXRydW5rCisxMTY3MyA2ZmM5MjBjOTA2NDA4Y2MyZTY3NTkxOTkxY2MwZGUzMDRhNDgzYTc4IGxlZ2FjeS10cnVuaworMTE2NzQgOTU4ZTFmYWEzOGE5MTA0ZmQ4Yjg4NjUzMTc5ODRmNTM1NjU5MTEwNCBsZWdhY3ktdHJ1bmsKKzExNjc1IDA2MjViOTk1OGIyM2JmNjJhZjI4ODE4NTMyMGVlMGYzM2Q1NjRhMjggbGVnYWN5LXRydW5rCisxMTY3NiA1M2VkNmJjZDA2NDFkZjM3ZWIyZjhlZThlNmYzNTI3MDc1OGEzMjRhIGxlZ2FjeS10cnVuaworMTE2NzcgMjUzYzk5M2VmOTM2YWQ1YTFmOTNjNzg1NDJlMTMxYTQ2NzE2ZDRiMCBsZWdhY3ktdHJ1bmsKKzExNjc4IGZhODkzZDU1Nzk0ZWNkOTg2NjM4NDg4MTAwMjM5ZThkMzFjODY5NzUgbGVnYWN5LXRydW5rCisxMTY3OSBlNzVlMjI4ZjgzOTVlN2VjNTBmNmQwNTZjMTVmZmFiODEwMWFjOWU3IGxlZ2FjeS10cnVuaworMTE2ODAgOGU5NTJiZGQwZmEzNzA0NzQ4YjA4NjYyZDFiMjhkYWYwYjVlZWM0NCBsZWdhY3ktdHJ1bmsKKzExNjgxIGYyNjRlNTdkNjU3ZGQzODA2MDM1NjFkM2QxZGQ4MDAxMGYyYzllMjIgbGVnYWN5LXRydW5rCisxMTY4MiBhODZhNzFiZWJkNjQwN2EyY2I4YjdjOTM5MjdhMmEwMzQ3MzVlMGU1IGxlZ2FjeS10cnVuaworMTE2ODMgYWE3M2RlZTIzMDkzMDc1Nzc2ZTRlYjNkZGM4YTYzNDk1MjhiN2VlOSBsZWdhY3ktdHJ1bmsKKzExNjg0IGUyMWQwNzk4YzAyYWFhZGUyM2UyMWQ1NDRjMzA5YjY1ZDg4OTBkNTIgbGVnYWN5LXRydW5rCisxMTY4NSBhMTY3MmU3NzVmMzMxZWNjMzQ2NTZiODVjZDlkYWEzZGY2NGJhMGE3IGxlZ2FjeS10cnVuaworMTE2ODYgNWZlNGQ1OTRhMGYyMTkyNDZiYWYyODg1OWJhMzJjOWJlNDcwNmYwYiBsZWdhY3ktdHJ1bmsKKzExNjg3IDNlMGM4N2JkYjU4ODk2OTQ4NjViNDdkYWQ4YjFlMWUxMzBiNmYwZGUgbGVnYWN5LXRydW5rCisxMTY4OCA0ZmU4YTc2NzBjMGQyYTMwODc4MjIwYjQ2Yzg5MWJhZDZjZTc1NWFkIGxlZ2FjeS10cnVuaworMTE2ODkgYWM2YzI5ZDFmMTBjOWMyZjkwM2UwNjRhNmM1MGYxYzJiZDNhNzk1OSBsZWdhY3ktdHJ1bmsKKzExNjkwIDAyZDhmNzIxNDA5YWJmNGZhYjg0MTE1M2FjMzhjNGY4YmVhZTUwODcgbGVnYWN5LXRydW5rCisxMTY5MSA0YzIwNDU2MTU5ZWJkYmIyODEyNjdmNDRmY2NiZmRlODJkNDdkYjMyIGxlZ2FjeS10cnVuaworMTE2OTIgMTk1ZTc0OGNmNjk2YTY5NmY5ZmRhZDZlN2Q4YjI2YTI2YzIwOGZmYyBsZWdhY3ktdHJ1bmsKKzExNjkzIDMzOTg0ODQxMjExZDVhYzE2MDI0NzJjYTcxN2MwZDUzM2QwMTI4ODQgbGVnYWN5LXRydW5rCisxMTY5NCA0N2NjZGI3ZmI2MjNhZTlhZGZiZDI4MTc0ZDVkMzQ0M2ZmODY4NmQwIGxlZ2FjeS10cnVuaworMTE2OTUgNThlY2VkNTMwOWEwNmI3N2RlYTVjMDI2NmZkNTJmMTE4NWI4ZjVmYiBsZWdhY3ktdHJ1bmsKKzExNjk2IGIyNDA0NjcyMGQ1NjA0NWU0OTEzMjNjOTQ2NzQwMWU4MzcxNzliMGUgbGVnYWN5LXRydW5rCisxMTY5NyBkNTc4Y2Q2NDc5NmQxMjY1ODVmYTBmOTU1OWY5NmE1ODZhMWRiZDNlIGxlZ2FjeS10cnVuaworMTE2OTggZWI4MDNlMTkxODg3ZTZlZDIwZDQ3NDBiYmRhOTA0YTU5OTY4NTdiNyBsZWdhY3ktdHJ1bmsKKzExNjk5IDE0YWQwMmQwNmUzMmQ4ODQyNjIxYTAxMDEwZDE4ZTYyMDY2NmRjZTggbGVnYWN5LXRydW5rCisxMTcwMCAwN2RhZTZmZGFlNzk0MTNkZjkyYmYzMjMwZjkzZWMxNzc2OTBmNDMxIGxlZ2FjeS10cnVuaworMTE3MDEgODg1MDUyNjliNDAzN2RlZWEyODNkN2I2Y2MzZmY3MzY1OWJlYWZhMCBsZWdhY3ktdHJ1bmsKKzExNzAyIDA4NThmMTFjODhkNzI1OGMxNjMzOWYxNWJjYjlhNWJiMGQ0YjZkYWUgbGVnYWN5LXRydW5rCisxMTcwMyBjMWRjMTlmOWFkNjA4ZTZiNGIxYThkYTYzMTcxOGY0YTIxOWU2NWI0IGxlZ2FjeS10cnVuaworMTE3MDQgNjcwOTY3YmU2ZGIzY2ViMzBkZjI3MWFjODQxMjdmYjE2MWFmZGM2YiBsZWdhY3ktdHJ1bmsKKzExNzA1IDgxNDhkNDRmOTkwM2RlMmZkOGQyMmFlOWFjMmI3Y2RjMGFjYjc2MmUgbGVnYWN5LXRydW5rCisxMTcwNiBkM2FmMzEwZjIzMGNiMTU2Yzk2MmI4MThkZjI4NGI1YzY0M2M2MWZkIGxlZ2FjeS10cnVuaworMTE3MDcgNzBlNDlmNzE1OTU3MmYxMzc5NmE5Y2QzNWIwOTY5ZTgyNmY2YWM3NyBsZWdhY3ktdHJ1bmsKKzExNzA4IGYxNzJkNDc0YzVhOTA0YThkNTMxYjhhZDAzMTU2MmJlNDA3MmNlMmYgbGVnYWN5LXRydW5rCisxMTcwOSBiZTNkODRmZjI5ZjlhOTUzYWQwOGY5N2ExZDNhMGI3NjIwYTM4NjljIGxlZ2FjeS10cnVuaworMTE3MTAgODlkOTE2ZGY0NzliMTViMTFhYzYyM2FjNzRjMzk1YmQ2MTU0YzM5ZCBsZWdhY3ktdHJ1bmsKKzExNzExIGMyNTljM2M0ZDBjY2Y5YmMzOWU2MDk5ZmFjYjZkYjY5OWJjNjY3MjUgbGVnYWN5LXRydW5rCisxMTcxMiAxOTk1Y2RiZTMzODQ2ZTQ3NzAyNGU2OTY3OTk3Y2FhMzYzNDY2YjNmIGxlZ2FjeS10cnVuaworMTE3MTMgOTM2OTkxNzlhNTBmMmY0YWM5MmVmZmE0ZDdlNTMyY2JiNjdhYzM0YyBsZWdhY3ktdHJ1bmsKKzExNzE0IDQ0ZmYxYWM1Mjk1YjM3ZDZkNWRkNjJiYzFhYTczMDM0ZDVjOGViMjcgbGVnYWN5LXRydW5rCisxMTcxNSBhNGU4MjMzMTU2OTkwMjE4M2M2YWRmNGZjODIxMzljN2NmMDEwZjVkIGxlZ2FjeS10cnVuaworMTE3MTYgMjk5OWYxZDkwNDI5OTYyODlhNjBlMjVhNDVjOTBjNjRhODAwMDMzMiBsZWdhY3ktdHJ1bmsKKzExNzE3IDU2MjFjZjliMDlkNjMyMGIzNmYwNTIwZWM0Mzk0ZmZjNDU4ZTdjZWEgbGVnYWN5LXRydW5rCisxMTcxOCAzYzlmZWM1N2I4NThhNjRmMDc5ZWU1ODYyY2NjNzU2YTdhMjU2NjFlIGxlZ2FjeS10cnVuaworMTE3MTkgOTg0OGY0MjM0M2M5OThmNGE5M2YxNWJhOWY1OWY0NjRiNmFjNDBiZiBsZWdhY3ktdHJ1bmsKKzExNzIwIGRjMWQ0NDVmMjM3MTg0ZDVjNmQxMjJiNWVjNjc2MzZkOGQ5NjM2N2MgbGVnYWN5LXRydW5rCisxMTcyMSA3M2RmMjRmNmJjY2YzM2FkZjc0ODQ3YzA1M2ZlNWZlZGMyYTVkYzY4IGxlZ2FjeS10cnVuaworMTE3MjIgY2U4ZjNjZWY2YWVkMmJmZjVjNDQxZmY0NTkyODgyOTk3ZDIzMmZlMiBsZWdhY3ktdHJ1bmsKKzExNzIzIDI1ZGEwOWI0MjdiNDc1ZjQ0NjU0NmYxZDEwMWVkOTNlOTc0NWI3YWYgbGVnYWN5LXRydW5rCisxMTcyNCA3OTQwMGQwNzhmMWIwM2ZjNWY5MGE2NWI3YTM2YzRkZTkwY2E1OWU0IGxlZ2FjeS10cnVuaworMTE3MjUgYTAzYzZmZDgxZDRkNmQxYWIzNDlkZTMxZGVhZWEwYThmMTc0NTcyOCBsZWdhY3ktdHJ1bmsKKzExNzI2IDJlMzcxMmU4NDc4MWZiMTI0NjY1MWY1NWNmZGYwNTk5YTZlYmExZTAgbGVnYWN5LXRydW5rCisxMTcyNyAzOGMwN2JhNGI4ZTQxMWY4NmNjMmY0Y2M2ZjAxOWYwMjQwZDk0YWIyIGxlZ2FjeS10cnVuaworMTE3MjggMDhiOGRhNmQ0Y2E2YTA3MjkwZWNiYWJkMWJlOTNjZTVhZjVmMDkzZSBsZWdhY3ktdHJ1bmsKKzExNzI5IDRiZmQyOWQ1M2I5NTBjMTdhN2EyYTY4MTYwN2UxODE3NjIxNDAzYjQgbGVnYWN5LXRydW5rCisxMTczMCBiMThkMWY5MWQ2NjQ4MzI0OTY3ZjQ1YTRiYzRlMzcyNWUzZWU2MGVjIGxlZ2FjeS10cnVuaworMTE3MzEgNDFmODNjNzJlMDk4NGM5MTc4OTdkMWU2ODA1YzNiMDlhMzM3MTUyNiBsZWdhY3ktdHJ1bmsKKzExNzMyIGQ3MjUyYTViN2UxZTdhZDVmYTgyNWZlNmE2OTJkMWIzZDA0MjVhYWQgbGVnYWN5LXRydW5rCisxMTczMyAzOWM0MTIyMGY3ZWQ0NmYyMzY5YzcxYzcwY2VmNWQ4NWViOGM0MDJjIGxlZ2FjeS10cnVuaworMTE3MzQgZGQ4NDQzYmQ0NDc0MGM3YTlmOTEyZmNiZGQzYWQ2NjgyNjI1MDA4OCBsZWdhY3ktdHJ1bmsKKzExNzM1IDRjNGNlYzU0YmE2MzRkZWY0MWI0OGM1MzY1NjYxZjk3ZmMzNDUwMDEgbGVnYWN5LXRydW5rCisxMTczNiBiNTVkYjA4ZGZmN2JmMjU5MjdhMmU3OGNiNTU5ZjhkYzlkY2VhMzA4IGxlZ2FjeS10cnVuaworMTE3MzcgMjI5NDc1ZDI5NTFmNzA1OTFlMWYwMTdlMDJmN2E2NTJjYTZhYjY0ZCBsZWdhY3ktdHJ1bmsKKzExNzM4IGUyM2VjMjQwMzE1NzI0N2IzZGQ1OWI4ZTlkMmYyMWYyMDRjODZhN2YgbGVnYWN5LXRydW5rCisxMTczOSA3MTBkYTEwZGVlOWRiMzRhMGU0ZDExMTg3YThmOTk1OTUyZmUxOTlhIGxlZ2FjeS10cnVuaworMTE3NDAgMDQ4MDAyZjI3YzFkOGJjYTVhOTNjMWRhYmQ5Mjc2NDQwMGQ2NGExNSBsZWdhY3ktdHJ1bmsKKzExNzQxIDE1OWY5ZTc0Njc1NDk0NzEwNWU3Yjc5MTQ2YmQyMzNlNzIzYzg2YjggbGVnYWN5LXRydW5rCisxMTc0MiA4YTg4NWYzYTVmNDZhY2U1NDU2YzY0ZTcwOGEzMzZkN2Y0ZTc1OWMwIGxlZ2FjeS10cnVuaworMTE3NDMgMWM0YmEwZTJmOGU3NDNiNjE2YjlmZDc1MDJlN2U2NTNiMTc2YzEwYiBsZWdhY3ktdHJ1bmsKKzExNzQ0IGI0ODcyYmM4ZDllZjczODYzNGYwYTI2OWFiYjkyY2VkZDI1OGFiMTAgbGVnYWN5LXRydW5rCisxMTc0NSBlMTk5NTRiYTFiYzQxMzc4OGIzM2I3NTZkOGExYTFkNmIwN2I2ZjU3IGxlZ2FjeS10cnVuaworMTE3NDYgMDI4Mzc1OTQwN2UxNjFkZjAxNTE5Mzg2NWUyM2Q2MDlmZDUyOGFmMCBsZWdhY3ktdHJ1bmsKKzExNzQ3IGNhODU4N2QyMTVlNmZlY2FlMzhhNjMyZDQ3ZWUzNmQzNTg3NjJkNDQgbGVnYWN5LXRydW5rCisxMTc0OCA0MzAwMzhlMTY0MzM3YTMwMDExMjk5NmJhNzlkYWQ5OWUxY2E4Njc0IGxlZ2FjeS10cnVuaworMTE3NDkgNTkwYmQ5YjQ1YmY2MGQxODc5YjQyYjYyNTI3ZjFlZDkxYWQwYWE3NSBsZWdhY3ktdHJ1bmsKKzExNzUwIGJlMTQ5MzM5MWM2ZGQzYmM3YmFkMzE3ZTdjMDBiYjQyMWYzZjA2NmYgbGVnYWN5LXRydW5rCisxMTc1MSA5ZDM5M2EwZjcyN2M3NTQ0YTRhZDFhYmEzZmUyMjFjOWE4YjhmZTM4IGxlZ2FjeS10cnVuaworMTE3NTIgMDgwNzk5ZDBjZjJiMmJkOWE0NzYwYWU1MzU3OWM3MDhhZjZiM2JhNCBsZWdhY3ktdHJ1bmsKKzExNzUzIDhkMTQ5MDYyOTJjNjZjYzAwNWY0NTU1ZTMxZTljNDA2YWFkNzk3NDQgbGVnYWN5LXRydW5rCisxMTc1NCAxZTMzYThhNTZiY2E1YjdjNjMwODdmNTY1ZTg2YmIzMGM1MTZjOGQyIGxlZ2FjeS10cnVuaworMTE3NTUgMjU3N2MwY2M3NDgyYTg4ODU0ZjIxYTQwMDU0NzE3NzkxNmMyZmI0OCBsZWdhY3ktdHJ1bmsKKzExNzU2IDZiNmJkMTRkNzUwYjgxYjg0NGZlMjc0NDIzYjQ2ZDlmNDU3MDRjZjcgbGVnYWN5LXRydW5rCisxMTc1NyBhNzNjZDdmOTliOTViZDEyZDBhMDc4MTljMThiNDRjY2ZkNDQxZjc5IGxlZ2FjeS10cnVuaworMTE3NTggYWNkODFjMzIyN2RlYjg5Njg5OTE3N2U2MGQwNjUxOTBlN2ZiNzA4NSBsZWdhY3ktdHJ1bmsKKzExNzU5IDlkMmMxMmYyNDBlNjM2MTJlY2FhNGY4N2M4ZGNhNGJkNmU4OTQ3YjggbGVnYWN5LXRydW5rCisxMTc2MCA2NWYwOGNjNTk1NTM2NDA2NDkyNGY5YmNkOTUzYWU0ZDc1ZWM5Y2QxIGxlZ2FjeS10cnVuaworMTE3NjEgODZkZTFmYTBmYmI3NjcyYzAyYzU2OTJmMzAyZDY0NDgwZmRmYjU0ZSBsZWdhY3ktdHJ1bmsKKzExNzYyIGMxMTZiYjNlMmFkMTg4YjMxMDFkNGZhZmM0YWQ0OWYyYTQxOTJhOGEgbGVnYWN5LXRydW5rCisxMTc2MyBhMGYzMzI1ZmVkZjE5MWU3YzRlZWJiZTU1ZjViNjY5NzJiOGQ2ODljIGxlZ2FjeS10cnVuaworMTE3NjQgNTUwYTQ1NmQ4ZjYxNTg3NmM4MGVlMmI5NTNiMmJkZTQyYzllZDE0NCBsZWdhY3ktdHJ1bmsKKzExNzY1IGFjZWUzNTk1ZTYwM2VkMmI0YjQ3Zjk5ZWU0MmMxMjhjZDIzNTgzMGQgbGVnYWN5LXRydW5rCisxMTc2NiBmYmI0NTA2MGJlMDMyNDNjZDUzYzE3ODFiYjJiZTU5OGIzZjVmMTU3IGxlZ2FjeS10cnVuaworMTE3NjcgNzI0NDExMTMyNDNhODVlMGFjYWNkZTkzZmQxZmExYTk4MzZiMTE5NCBsZWdhY3ktdHJ1bmsKKzExNzY4IDUwZDk4NTBjYzhjM2IxNGIzNDJkMmIwMjkwY2Q5OWJjNDE2OGRhZmYgbGVnYWN5LXRydW5rCisxMTc2OSAyYzZkZDBmYTRlYjk4N2I2ZmQ5Nzc0MjU3M2VmYTVhOGM1MjRlMzY4IGxlZ2FjeS10cnVuaworMTE3NzAgOGZlZDhjODVjNjFhOWE1N2EwZWMyN2UwMjc3ODgxMjQ1MDlhMzI0YSBsZWdhY3ktdHJ1bmsKKzExNzcxIDg3OTE0NTU0ODVlNTJjY2RiZDNhMGYwZWY5MWRmMzIyZjNmODJhZGUgbGVnYWN5LXRydW5rCisxMTc3MiAyZjg4ZDhhYTczMTA5M2E3ZWRmMjQwYzNlY2I1MTI2N2E5NGRjZTdjIGxlZ2FjeS10cnVuaworMTE3NzMgZjM3YmUwYzgyMmRjMmFkNDFhZGQwYWQ0MWUxNjc4YjZlNTdlMTYyMSBsZWdhY3ktdHJ1bmsKKzExNzc0IDI4NGJmOTVkYWI4MGExZjg4MDRkMWMyMWM2NTAzMzZhYTk5YjMzNGIgbGVnYWN5LXRydW5rCisxMTc3NSBjMzkyMThhNjhkZjFmMzc2ZDkxODUxYTlkMzg4MzY1N2NhNmVjZmE0IGxlZ2FjeS10cnVuaworMTE3NzYgNTNhYjhkMGIwZDY0NGUxMWZkMjA5MzkwZGY0ZjZmZTc5MGE0YjdmNCBsZWdhY3ktdHJ1bmsKKzExNzc3IGZlN2NiZDEzMDg2YzNhNDkwZTgzYWM1MzljMTcxMzY1MGNkYjhiMzcgbGVnYWN5LXRydW5rCisxMTc3OCA4MDlkY2MxYmJjMjFkY2QzNTNmODgyNzE5NDI5ZWRkN2ZjZGFiY2JhIGxlZ2FjeS10cnVuaworMTE3NzkgNGI5YzRjZTU5OTljOTJiN2IxNTNlNDA4YjA3YzA1YjJlOTdkNDBkMiBsZWdhY3ktdHJ1bmsKKzExNzgwIDBhNmVkMzg0YWYwNmE1NzIzMDNiMWExZmUyN2QxMzcyMTM3NzM0ZjkgbGVnYWN5LXRydW5rCisxMTc4MSBmYWEzMWIxYzBiNTQwNTcyOWJhM2YwMTdjM2JhZTI5ODE0MWRkNDc1IGxlZ2FjeS10cnVuaworMTE3ODIgNTE1NmNmOGU0MjY5MWFlNWZiMTFkMmFlZjhmZjJiNDM1NDRhMjdkMSBsZWdhY3ktdHJ1bmsKKzExNzgzIGJjNTE1MDY1MmVkY2FkNzBlNmQ0ZDA2NjcxMzFiZWUzZmJhNDJiNzggbGVnYWN5LXRydW5rCisxMTc4NCBlYzNkMmIzNzU2ZDc2ZDk1YTQ4ODFmYjg1NmEyZDQ0ODQzYWU4Y2Y5IGxlZ2FjeS10cnVuaworMTE3ODUgYTZjZmY5YzI5MGU1MjY0NWMxMzExMGM3NjgzMGU2Mzc3NDg3MzEzZSBsZWdhY3ktdHJ1bmsKKzExNzg2IDVkMzQ0NzEwZmNjM2Q2YTIzNzZkYjQ2YmFhZGE5NzUzMDk2ZWY1NDMgbGVnYWN5LXRydW5rCisxMTc4NyAyMzQwZjYxNWRhOGY0Mzk3MDQ2ZmY2ZDI3YTEzZjE2ZDFmMzVlMzk4IGxlZ2FjeS10cnVuaworMTE3ODggYmMzMWQ5ZjZlMGExNGUzNjIzMTViM2QyNTY5Yzg5MDVlMWEzNTFhYSBsZWdhY3ktdHJ1bmsKKzExNzg5IDAyZjM1MDRiMzk4ZGY0NzY2YTUwNjZhNmU3YTY3ZDlmNzRiNzFiNjYgbGVnYWN5LXRydW5rCisxMTc5MCAwYTY3ZGI0N2UxZDBlNDZlZDdiODY0YmU5ODE3ODEwYWIxMmY5ODA0IGxlZ2FjeS10cnVuaworMTE3OTEgMGRlNjYyY2VjYWNmY2FhZTk4NTAxMTEzNTA5ZjQ3MWI3ZmFkNzc5MSBsZWdhY3ktdHJ1bmsKKzExNzkyIGExY2EwODUxNjhmYzgxMTQwY2MxMWRkNjdmZTc4Mzg2ZWRlODJmNGIgbGVnYWN5LXRydW5rCisxMTc5MyBkNjRiNGNjODFiYTYyZDMzOWZiNWM1NmFhOGJhNDBhOGM3MjIxNTFiIGxlZ2FjeS10cnVuaworMTE3OTQgZDI4YjQ5MWY0NTU1NmFhMDUzN2QwZWVmMDNiNjJiYTE0N2I3ZmJiOSBsZWdhY3ktdHJ1bmsKKzExNzk1IGEyMzk3MjU1YTZkMzNmNWQyNGQ1MjVlNDZkNDhiZWQxZmFkMDEzMjkgbGVnYWN5LXRydW5rCisxMTc5NiBkNjQyMDA4MzRhNmI0YWY0NmM5MmFlODAwYTlkNzE5NzI2Y2UyZWYzIGxlZ2FjeS10cnVuaworMTE3OTcgNjkwMzQ4MjQzODAwMWM1ODMxZDc5ZGVjNGRjNTEyNGRlOTNkNzdjYyBsZWdhY3ktdHJ1bmsKKzExNzk4IDQxNDEyOGExNWJiZDlmNGRlNmZhNmI5ZGViNDhhY2NkM2Y4NTNhMzYgbGVnYWN5LXRydW5rCisxMTc5OSAyNDFkMDEyZTgyZGNlNTg4MThjMzMwMTgzODA3YzNiNjk1YzhkYzM2IGxlZ2FjeS10cnVuaworMTE4MDAgM2I2YzdlNzBjYWZmZjZiZGZkZjZiNzBhYTU0NjhiOTJhN2U4MjFiNCBsZWdhY3ktdHJ1bmsKKzExODAxIGNjM2UxNDgzNzM3OTk2M2Q1YTk4NmU2M2JmNmMyMGQ2MTQwMzUwYWQgbGVnYWN5LXRydW5rCisxMTgwMiAwODNlZmEwNzYzNjYxMGY4OWQ4M2RjNDgyMzlhOTg5NjU0MDM5NjdkIGxlZ2FjeS10cnVuaworMTE4MDMgNzk0MzllNGU5OTc2OTU4YTBkNGNjODMxMTRmY2I0Y2U0NTk0OWQ5OCBsZWdhY3ktdHJ1bmsKKzExODA0IDkyOGVhNWE0MDllNTM1MWQ0NjQ1NmViYmQzYTliYTdhNmMyOWMwNTEgbGVnYWN5LXRydW5rCisxMTgwNSAzNGU0MjAyZWRlMjAxZDdkOWMwNDRjZDMwNzRhY2VmNzFmNDQyMDdhIGxlZ2FjeS10cnVuaworMTE4MDYgYmQ5ZDM4ZDY0MzY5NGVjNTIzN2I1NTliNGFkZjI3YmE4ZDNjMmE0MSBsZWdhY3ktdHJ1bmsKKzExODA3IDVkYjY0N2ZlZGJhMDMzY2VjZWEwNDQwYTI4NzJjYzNjMzY1MGI5NDggbGVnYWN5LXRydW5rCisxMTgwOCA0OGM2MTVkODRkYTY2ZGFiODQyNjFkNDE3YzAyNDc1NWVhZWJjMTgwIGxlZ2FjeS10cnVuaworMTE4MDkgNWVhODgzNmQ5NjcwMGI5MmFlZWFmMTZiNjcwNmNkMjQ1MGE4ODk1YSBsZWdhY3ktdHJ1bmsKKzExODEwIDQ2N2RmNjFmZmJmYTk1ZmVlNmMzOTc0MDUwMWQwYTgzYTgwMjVlMjkgbGVnYWN5LXRydW5rCisxMTgxMSA0MTZiNzdiODExYzViODMxYjM5NTlmNzI0NTE3YTM3OTg5MTJiNjY0IGxlZ2FjeS10cnVuaworMTE4MTIgNzg0ODdlNzAxNjg2ZDk0MWQwYmM0YmE2NjY5YWUwYmZjYzg3ODQ2YyBsZWdhY3ktdHJ1bmsKKzExODEzIGYzM2IzOTRlNWQ3ZmNiYzM4NTQxZWI5NThlZjQ4ZGFlYTUzYWJkZWYgbGVnYWN5LXRydW5rCisxMTgxNCAwMDNiNDJjOWYyNGQyMTA4MjdmZGZiMGIxOThhOTAwMzE1ODYzN2QxIGxlZ2FjeS10cnVuaworMTE4MTUgOGEyNmU1NWUxOGI4MTJkYmFlYzVmMTM4YWE3YTY0ZGZiMmU2NzMzZCBsZWdhY3ktdHJ1bmsKKzExODE2IDg5MThlNGY1NGVjYThkMTY2YTQwYTQ3OTcyYWNjMjE2ZDE2ZDFhOGUgbGVnYWN5LXRydW5rCisxMTgxNyA4ZTlkOTc5ZGRmNTUwYjMwMjI1OTk0M2M3MDU3MmRmYzAzYWI5MzhkIGxlZ2FjeS10cnVuaworMTE4MTggNDBkMjFhNWI5OTkwMTU2YjA0OGM3OTI5OGY3NzQwZDczYTBkODg3YiBsZWdhY3ktdHJ1bmsKKzExODE5IDg0ZTIxYWM3ZDNlYTM1OGNkOGY2ZmI0MjEyZTQ5MjlkYTQyYzg5ZmYgbGVnYWN5LXRydW5rCisxMTgyMCAxNTA5MDdjMmMyYzA4Mjc5NzMwMmNlYzRhYzNmNDc5MjE4MWY5YzZhIGxlZ2FjeS10cnVuaworMTE4MjEgOTU4ZTQ4ODllY2FiNTZlMzgzZTlkMjMxYzM2ZDdiNmM0MmVmZWNmNyBsZWdhY3ktdHJ1bmsKKzExODIyIGNhNmUyMjczZmJmNjI3NTQ4MGEwNGU1NjZkYjAwMDk4OWIwODc2NTEgbGVnYWN5LXRydW5rCisxMTgyMyAzYjkxNDMyYmExYTQxMzE1NmIzN2YyNmIwMWVkNGVkMzhhOWQ5MzMzIGxlZ2FjeS10cnVuaworMTE4MjQgYzkxZTRkODdmNjk0Njk3MTVhZjVlMzgyMmY5NzViNGM0ZDMzMmUxOSBsZWdhY3ktdHJ1bmsKKzExODI1IDgxNTc0ZTQ2NDZiNDNjYWRmMTgzYzAwODZkNTYyYzgyNGM4MGY2ZGUgbGVnYWN5LXRydW5rCisxMTgyNiA3ZjI0MmYyOWE0NWZhOGEwMDA3Yjg0OTRiYTE0MGY5Mzc1Mjk3N2VmIGxlZ2FjeS10cnVuaworMTE4MjcgZmQ1YTQzMDliZmRjMmQ0YWY4MjU0ODZhZWZmNWZmMTAwMjY5NjJlNiBsZWdhY3ktdHJ1bmsKKzExODI4IDc1MjM3Y2E1NmFmZjM3NTUyYjZkYWU4MDNhNjdlNTk4YzljMjU4ZGEgbGVnYWN5LXRydW5rCisxMTgyOSA0NjJjY2QwYmJlNTBhYzY5MmZkM2Q4ZmJiODU0NzBmYjA3NDFiMjEzIGxlZ2FjeS10cnVuaworMTE4MzAgOTM0MGNiMmFkM2E4ODc0ZjlkZmVlODlkZDVhY2VmYjE3OGU0M2U4OCBsZWdhY3ktdHJ1bmsKKzExODMxIGI2MDVmMjJhMDk5YWE5YzY5NmQ4YzhmMWRmMzUxMWRhMDA5ZTIwMjUgbGVnYWN5LXRydW5rCisxMTgzMiBmNGRjYjkwYWM0MTlmNjllYTIwZmQ5ZDc5OTJmNDA3ZjAzYTkwNTVjIGxlZ2FjeS10cnVuaworMTE4MzMgZmIyZTdmMzhlMWJiZTY4YWJhODk5OWQyZTdkNTNjYmQ5NjIyN2QyNyBsZWdhY3ktdHJ1bmsKKzExODM0IDA0MWYyMmE1YTM5ZGQ5YjFlMzI3MzBhMzdhYjc3NjBmODVmY2Q3ZTcgbGVnYWN5LXRydW5rCisxMTgzNSBiYTMyNzdjZDMwNjg1ZjUyY2M5OWQ2MzE4YjU2Yzk5NzY1MjJjMmRjIGxlZ2FjeS10cnVuaworMTE4MzYgZDc0MGM5NjEzYmJhN2ExYWRkYTI2NGFiNjY1NGUzYzI3ZDdkYThiOCBsZWdhY3ktdHJ1bmsKKzExODM3IDcwYjMyZjQxYTdmYmZiMzhlZTU3Mjk0NjI5MTYxODQ0MDQ4M2E0ZDkgbGVnYWN5LXRydW5rCisxMTgzOCA1YTNkMjEzMDFhMDUxNDVhZjEwMDI5MjNiNWFlYjYzNjk4Nzk5MWQ1IGxlZ2FjeS10cnVuaworMTE4MzkgZWY2OGYwZTYwOWUxOThhYmU3YTg4ZDdjYjQxMjdmN2VmZDFlMGIxYyBsZWdhY3ktdHJ1bmsKKzExODQwIDRmNzg1MDRhNWY4MWRjNzZiZmI4NThhMDc0ZDI3MjJhOTBhMjllNjIgbGVnYWN5LXRydW5rCisxMTg0MSA1MGEyZDY0Mjc2ZTRiMTI2ZWZlMDg1MjE2MTEzNDQ5ZWQ0NWRiMWU5IGxlZ2FjeS10cnVuaworMTE4NDIgMjMzNjNiYjhiZDkwY2YxOWZlN2U0NGU5ZmM4ZWM3NzNhOWZjNTAzMyBsZWdhY3ktdHJ1bmsKKzExODQzIGUxNmUzNjNlMzkxYjQzM2EzODcxMDdhMmRjYjk2MzM5OGJmODA5MzEgbGVnYWN5LXRydW5rCisxMTg0NCBiYzlhZWE3MThlNGUzMmUzZDcxYjliMzNmYjQ1NzBlOWNkMjMxYzBmIGxlZ2FjeS10cnVuaworMTE4NDUgNjY5MDgzOGJhOGRhNjBlNGY1YzRmMDE4NmVlMmZhMjQxNmU0N2IzNSBsZWdhY3ktdHJ1bmsKKzExODQ2IGJmODlmMTQzNWI3MjhjZDBlZTNiZGUzOGU4ZDAwODZiNjJlMDBmMmIgbGVnYWN5LXRydW5rCisxMTg0NyA0NDIyYmEzODllNDE1NzBiNzI4MGU5NjM4NjUyMDliMzE1YTkyMjBhIGxlZ2FjeS10cnVuaworMTE4NDggZmRjM2M0NTllZDAwYWZjMjgxNGYwNzlkZDViODZlMWQ1OTRlYTA1YyBsZWdhY3ktdHJ1bmsKKzExODQ5IGNkMTlhN2RiODczNTZjZmRjY2Q3MDYyZWVkNmJiZWM5YTI0OTA0ZGIgbGVnYWN5LXRydW5rCisxMTg1MCA2NWIwODgyYTQ0YWJjZDlhZDZjNWEyYjFmODg1OTM1Mjk4MGMyZGFlIGxlZ2FjeS10cnVuaworMTE4NTEgNjFmNDVkZDdjNDNhNTMwNDY4OGMzNDZmZWVjMTgyYTU1ODk0YWRhMyBsZWdhY3ktdHJ1bmsKKzExODUyIDZiNWY3ZTlhMzFjYjllNmUwMzc1MzdmNGQxNmExYWEwZTQwMWM3MDUgbGVnYWN5LXRydW5rCisxMTg1MyBmMGEzYzFmYzdiOTAyNGVmZmMzZDkxOWE3OWQ1MGZmY2I4MTQ3NzdhIGxlZ2FjeS10cnVuaworMTE4NTQgNmI4ODllNGMwNzU0ZTAyMDkxNGRiYjc3ZDcwNzJmZDNlZmIwN2M3OCBsZWdhY3ktdHJ1bmsKKzExODU1IDJmZTdiYmU3MWRkOGMwYTAyYjFlZGQxODcwYmY1NDQ5ZDAxNTZjNDcgbGVnYWN5LXRydW5rCisxMTg1NiBkMWVhZGE5YmJjM2M3YTI3ZDgzY2I4ZjYwYWZkMjU1MTkxNThmMjEwIGxlZ2FjeS10cnVuaworMTE4NTcgNGMyM2FlNmM2ZTgyYzYxY2VjN2FhOWQ1OGYxM2RiOTlhNjQ5NzI2MCBsZWdhY3ktdHJ1bmsKKzExODU4IGIxMDA0YjQ3YmFjMGU3Mjk2ZjVkMTViMmFmZTE2NTFkMTI4MGE3MjAgbGVnYWN5LXRydW5rCisxMTg1OSA1MGUwNjMxY2YxMTcyOThkZDBhMTM4YWQzZDU0YWMxYTJlY2Q5M2U3IGxlZ2FjeS10cnVuaworMTE4NjAgZjM1MWM2NGM4MmVkYjg2NDg2NTUyYWY5YjI5N2UzZWFhZjQ1M2FiYSBsZWdhY3ktdHJ1bmsKKzExODYxIDlmMTM1YjNkOWE3ODMxNWQ5YjMxZTZlZDM4YmQzNzM3OWVhZjM3ODEgbGVnYWN5LXRydW5rCisxMTg2MiBjODAzMjFjMzI4YjVkMGQ5YjQwMWQzNDViN2RmYzE3ZGIzZGQ1NzMxIGxlZ2FjeS10cnVuaworMTE4NjMgOTgxZGQyMGJjNzExNjJiZjAzYzg5NjA1YmQ4MmE5ZDM0MzBkZmJiMCBsZWdhY3ktdHJ1bmsKKzExODY0IGY2ODE5YjkyNmZiMmM2NjEzMWJlNmYyYWY4OTFmYjZiOTBkMTA2MTYgbGVnYWN5LXRydW5rCisxMTg2NSBmMDQyODhjY2Y3N2I3YjMyYmNjNTNkZjI5YTA4NzcyNGRlYTQ4OGQxIGxlZ2FjeS10cnVuaworMTE4NjYgYTY4MDhiY2Y4YWMyOWI0Y2I1YjE5ZmI2MTFkMzUwMzViYmRmODAzNCBsZWdhY3ktdHJ1bmsKKzExODY3IDdjM2JlYTAxMTg5NThlYTM2MzQ3MTIxYTE0NDYyZThhOTcxZmM4MjkgbGVnYWN5LXRydW5rCisxMTg2OCAxMDZmYWYzNjZlM2YwN2VmYTExYzhhNzhjOWU0YjU5YmRmYTVlM2U1IGxlZ2FjeS10cnVuaworMTE4NjkgNmZmMDk0OGZmOTUxYzdhYmM4NTQ0YThjYzhmYjRjNWVlZWM2NDk5MiBsZWdhY3ktdHJ1bmsKKzExODcwIDIyOWY3M2YyYzg3OGZlM2QyMTQ5ZjAzYTNmNzVmY2NhYjBlZmNiNTUgbGVnYWN5LXRydW5rCisxMTg3MSA0ODA1NjczMTAxOTRjYTA3NjU2OTgxYTI1MWJmMzBmMzRkNTRiOTlhIGxlZ2FjeS10cnVuaworMTE4NzIgOWJmNDBlZjIyN2M5MmI2YjQ0Yzk2ZGJmNTJiMzVjODA1MzdiZTlhMiBsZWdhY3ktdHJ1bmsKKzExODczIDQyYTA3YmVmNjBlMDJjNzNhOTMwMDVlMzY4MzQwNmZmODY1OTFjYWQgbGVnYWN5LXRydW5rCisxMTg3NCBhNGI0YmE1YzRhYTIxMWI2N2Y2M2M3ZDY0NDQxMzFjNjdhNTE4NDQzIGxlZ2FjeS10cnVuaworMTE4NzUgZTE4MDI3MTMwYmJlMjBkMzRlNjJmZTZlN2VlM2ViZDQ0ZDZlYzA1MiBsZWdhY3ktdHJ1bmsKKzExODc2IGJmYTdlZDBiMWE2YmQyMGU0NDIwZTUzNGQwZmVhY2I0MGVlM2RmNmUgbGVnYWN5LXRydW5rCisxMTg3NyAwOWI1Y2I0NzU5MmQ0NGFiZTc4NGZhMjk3NWE2NmZhY2RmMTA2ZGRlIGxlZ2FjeS10cnVuaworMTE4NzggYWZlNTBiNjYxNTQ4YzhkMjc3M2Q3NWZlODUzNzk3NGY2YzhmYjNkMCBsZWdhY3ktdHJ1bmsKKzExODc5IDhhMzQ5MzA5ZmRmNDMzMTkwZGQ2MGMzNjE4OGJjNjNjZjc1YTNhNDMgbGVnYWN5LXRydW5rCisxMTg4MCAyYjM0NDYxYmE0YTNhY2VhNjY4YmRiNWMxYzcyN2E0MzNkMzcyZTBlIGxlZ2FjeS10cnVuaworMTE4ODEgNjRjYTExNTZlZGYxOTA2NzY5NDMzNmZmOWQwM2NlMDZhM2JjZjhkNCBsZWdhY3ktdHJ1bmsKKzExODgyIDAwYjA2Y2M1YjlkYTE3ODExNGM1ZjQzY2ViYjRhZmRmNTYyODQ3ZTcgbGVnYWN5LXRydW5rCisxMTg4MyBmNWQzOTc0ZDIwOWYzM2I5MmYxMzNlZjY1ZDJlNDBkMDI0ZGZmNmQwIGxlZ2FjeS10cnVuaworMTE4ODQgZjEwYzZhNzQzOGY1Y2UxMzljMWIxMzZiZDE1MDk4NTdlNzZkYjUwYiBsZWdhY3ktdHJ1bmsKKzExODg1IDlkZDZmNDI5NjQ3OWZiZjdjYTc0NTE5YThiNTdjMzg5MDUyYTVjOWEgbGVnYWN5LXRydW5rCisxMTg4NiA2Y2UwY2U0ZWEzYzE4NDdkNWVjYWMwZmRhZjk2ZTQyNzk0Nzg1YmRjIGxlZ2FjeS10cnVuaworMTE4ODcgYTlhZTk5ZjkyMTU0MDE4NzYzOWQ2YTlkY2IxZWQ3ZGI1ZTBkOWNhZCBsZWdhY3ktdHJ1bmsKKzExODg4IDIxMWM5ZTI4MzQ2NmY2ZTViMmJjNDhlYjIxZjkyNjFjYzQ2OTk2OTEgbGVnYWN5LXRydW5rCisxMTg4OSAzZDlhMGEzZTU5NmIyOGFiYzkzZjllODM5YTk3NzA5ODc2ZTc0Y2JhIGxlZ2FjeS10cnVuaworMTE4ODkgMjFkNzFmMmUyNzI0OGEwZjRlMzkzZDBmYzMyMWVjZjliODkzMjFkMiBsZWdhY3ktdHJ1bmsKKzExODkxIDA5NGMzODViNTYyNDMxMzZiNTkzMmU1MTMyNGQwZWI1NGQzYjI2MzMgbGVnYWN5LXRydW5rCisxMTg5MiA5N2E1NDNiZjlmOWE2NDQwMWU1ODllM2U0YTE4OWY5MjE5YmU1MTVlIGxlZ2FjeS10cnVuaworMTE4OTMgODdjODI1ZWY3ODc4ZGE2ZTM2ZDVjMzY1NTJmZjBmOWM1NzMyOTA5ZSBsZWdhY3ktdHJ1bmsKKzExODk0IDhjYjM4OGU3MWRkOTA1MDc1ZTVkNWRmNDg0NDI5ZmNhMTdhZmJiZmIgbGVnYWN5LXRydW5rCisxMTg5NSBiMDQ2NWFlYjBlZmNlMzAzMGE2MWU2MDE5OGE2Yjg4MzI1YTdiYTUwIGxlZ2FjeS10cnVuaworMTE4OTYgYzE5ZTlhYzJiMGM4Yzk5NzhiMzM0MzIxYjhkOGJjMmY2NmNmZGRhMyBsZWdhY3ktdHJ1bmsKKzExODk3IDNiZmY2NzM2OWIxMTA4NTlmZTk3ZTRkNDZjODIwZDMxNjdkNGE0YzQgbGVnYWN5LXRydW5rCisxMTg5OCBmMzY3MDkyNWIwOThjOTY2Njc0ZDM5ZWNhM2UyMmNjYmYxNDc2NGRjIGxlZ2FjeS10cnVuaworMTE4OTkgOWNjYWVjZDNkZWEzMmJlNjY0ODcyZmQ0OTdmY2Q0MGUzOTA1NzNlOSBsZWdhY3ktdHJ1bmsKKzExOTAwIDU4YTM1ZTVkMTNjYzYyNzE2MjQ1ZmExMGE2NTI5YTFkNDUxNWRiNmYgbGVnYWN5LXRydW5rCisxMTkwMSBmNTBiOWNjNzZjMWU2ZDkxNzM1OTkxN2ZiNzQzMTY0NGYxYWIyYzc0IGxlZ2FjeS10cnVuaworMTE5MDIgMzg4NjE2NWRiYTQyNjc4YzUyZGRlYzAyNTE3NmY3ZjllYzk4NmM2MyBsZWdhY3ktdHJ1bmsKKzExOTAzIDYzZWNmN2E0YzA3MGVjOWIzMzBjZWFkMWQzNzI0Zjc0ZDVkZDQyNTggbGVnYWN5LXRydW5rCisxMTkwNCBlZTk5MmIzMTIwZDNhZWNlNWZhMzk2MTBhNDJmZTI1ZDI3NDVlYmFmIGxlZ2FjeS10cnVuaworMTE5MDUgOWY5ZGEwMTg5YjdiNGRlZTEzNDFlZjFlZWU0NDI3OGFmM2UxZTQ1YSBsZWdhY3ktdHJ1bmsKKzExOTA2IDQ0YzU0NjhmOGQzNjQ1MzU2MTdjM2I1YjgyMGE2MDFkMTE4MTRmMDAgbGVnYWN5LXRydW5rCisxMTkwNyA2MjBlMDIyNTBjODBiYzYwOTMzNjI1YmYzMjk0MDU0ODRjNjk2NDYxIGxlZ2FjeS10cnVuaworMTE5MDggZmJjYTQ4NjMyN2NlMWMxNGIwOThhZTE1NTdlMDE5N2Q5M2ViZTJlNCBsZWdhY3ktdHJ1bmsKKzExOTA5IDAzNzllYjdiZTMyM2U4ZTc5YjExNDE1Y2U0MmQ2MDVmZDAwNzcyMzMgbGVnYWN5LXRydW5rCisxMTkxMCBlNzI1NGUyZjJkYzFjZDExZjI3NWExNjNiM2M4MzIyNDg0MjQyOGZjIGxlZ2FjeS10cnVuaworMTE5MTEgYzAzZmZmZjM4N2Y4YmRkNDI0NTNiMWY5OWQ0MDIyYTA1MGJjYzIzNCBsZWdhY3ktdHJ1bmsKKzExOTEyIDdiYTdmYmViODhlYzNhZGVmMjVkZWFjNmIzNmQxYzJhMzE3YTYxZjcgbGVnYWN5LXRydW5rCisxMTkxMyAwMTI5OTdiOWYxZWJkMTI2NTc2YmJlMTFkZDI5N2NkNTQ2ZDFjYWJkIGxlZ2FjeS10cnVuaworMTE5MTQgZTZlYTJiYzk3NGUyNmZiYmYzNzQxNTA1NTYxOTJjZjU0OTRkNmI1ZCBsZWdhY3ktdHJ1bmsKKzExOTE1IGY2Zjg2YjM3ZjFmYzNiOWE0ZTBjMTU1ODliYjJjYjlhYjk4ODg2OWQgbGVnYWN5LXRydW5rCisxMTkxNiAzYjhiMzFkMmM5Y2EzMTFmZTcyZjM2ZGIxZTZjYjE4NTY2MjBlMmRhIGxlZ2FjeS10cnVuaworMTE5MTcgOGU0ZmRiMGIwYmI4ZTU5OGU0YTlhZWM1YzRjNjkxNzZhZjI1ZjNlNCBsZWdhY3ktdHJ1bmsKKzExOTE4IDAyYjBiODRkZDU0NWU3YmE1ZWI2N2JlOTA4YmE1ZmJmNzY1MDcxNDkgbGVnYWN5LXRydW5rCisxMTkxOSAxYTU5ZjM2NTRiYzExM2EzOTk2MDE3NmM1NmNiNWFjYmQwZTU5ZGUwIGxlZ2FjeS10cnVuaworMTE5MjAgZTE4MDZiMjgwZjUzOTNjZGRhZjNjNTFhNDU2N2RmOTQ3NjhmZjQ3YyBsZWdhY3ktdHJ1bmsKKzExOTIxIDdmOGY2MDhhY2RiY2QzNzBhN2MxNDIzMzBkMzczZGY2YWNiMmJjYWUgbGVnYWN5LXRydW5rCisxMTkyMiA3OTJjZDdjNWZkODhhZDY3ZDQxNDQ0OGQ1NjcwM2NhZWI5NDY1NWRmIGxlZ2FjeS10cnVuaworMTE5MjMgOTBmYmVjNDM0M2RlYzYyZmViYmZmNzdjNzY2ZTViNjVjYzc3OTgzMyBsZWdhY3ktdHJ1bmsKKzExOTI0IDc1NjdlZjQwZGU3N2NiN2JlOTVhOTY0ZDEwZjM1MGQxNWM4MTQwNmMgbGVnYWN5LXRydW5rCisxMTkyNSAxYzk0ZjM0YjQ5ZTNmNzRjMzVhMDg1NzY0YzRhOTg3ZWJiMzZjMmFhIGxlZ2FjeS10cnVuaworMTE5MjYgMzM3YWUxMmQ4MDUwMDdhZDFjNmRmYWM2YWQ3ZGFjMmI0NTUxODQ0ZSBsZWdhY3ktdHJ1bmsKKzExOTI3IDIyYzMyZGQ2M2ZmNWQ3N2NkNzQxZGQxN2Q5MjBlZDA3NzE1OWQzYWUgbGVnYWN5LXRydW5rCisxMTkyOCA4N2I5NTU0YzUxZDRiYTZlYTU3ODA5MjMwOTRkYmEzNWJkMmRkODE0IGxlZ2FjeS10cnVuaworMTE5MjkgZWRmNzU1M2ZiMjBlZmVkZWY5YjkwMTlkMDQzOTc0ZmU3MWJkNTljMSBsZWdhY3ktdHJ1bmsKKzExOTMwIDllYTVjNDJkY2JlZGI1YzNlMTY1NjRmNjAyMTkzMGYyODQwMzRmNjUgbGVnYWN5LXRydW5rCisxMTkzMSA0ZjZmNzMwZDI1NTZkYmU5MzFlMGVhYjg3MGI2NzIwODI2YTFhZGJkIGxlZ2FjeS10cnVuaworMTE5MzIgNjNmZTg1NzM1YmRjZDk1NGQxYTBmNDQ1YmQ3YTQ0Y2EyMTIzZjRiMyBsZWdhY3ktdHJ1bmsKKzExOTMzIDQ5NjIzZGEzYzYzZjNmNTJlMmQ1Nzc5YWEyZDQzZWQyYWNlZTRiNDUgbGVnYWN5LXRydW5rCisxMTkzNCBjNjM2Njg5M2NlZTFkOTc2MGI1MzYxNmUzOGFiNzcyMGY3NWVhNzdiIGxlZ2FjeS10cnVuaworMTE5MzUgY2ViODc4Nzk2MTA4MTY5MTM5ZDRkMzcxYjI4ZjZiYWY5OGNkNjgzNiBsZWdhY3ktdHJ1bmsKKzExOTM2IGUxYzMzMDk0MzIyMWU1ZDk5ZGYyM2E0MmEwOTVkMmNiZDUwNmUyMDUgbGVnYWN5LXRydW5rCisxMTkzNyBmOGRkZDIzNDAzOTg4OWQ5Y2ZmZjk1YzdkMGEyMWEwY2FhZTJmMTVmIGxlZ2FjeS10cnVuaworMTE5MzggOTEzZWIzMWIwMzE3MjIxMjY1MWU3Y2FhODRkMDhjNWY0YmJkZTgwYiBsZWdhY3ktdHJ1bmsKKzExOTM5IDBmZWE1ZDVjNGZkOWRhOGQ3ODMxNDc2OTE1MjM0ZTI0Yjg0YWY0MTUgbGVnYWN5LXRydW5rCisxMTk0MCA1NjIxN2VhYmMwN2FiNGQ1YzU5ODMyYTMyMGE3Yzk3ZTRlNTI4NjUyIGxlZ2FjeS10cnVuaworMTE5NDEgNGJkNTEyOGU1ZWQ0MzQ0ZWQxYjE3ODYwYTc2ZmM2MGI0N2VhNTI5YSBsZWdhY3ktdHJ1bmsKKzExOTQyIDE4ODBlYWQzMjAwY2Q0NWZlMmE5MWVkZDllY2JiNjI3NzZmODExMDMgbGVnYWN5LXRydW5rCisxMTk0MyA0MWM4ODRkZmFkNWVmNGI5OTdmNmM2NWFiNzRmNDEwY2JmZDMzOTc1IGxlZ2FjeS10cnVuaworMTE5NDQgMjViNjkyOWZmYjEzZGUwMDVhODg2MThmMGE3NTNiNTM1YWQzYWIxOCBsZWdhY3ktdHJ1bmsKKzExOTQ1IGYyNDJjZDEwZTE2YTI0OGVlY2ZmMTY3NTQwODg5NDgwZTMyOWFkOWMgbGVnYWN5LXRydW5rCisxMTk0NiBkMzkzOWFkMzgxNzY2YWEzMDE5ZDZmMDY1MzMzNjRiNThhODg4MzE4IGxlZ2FjeS10cnVuaworMTE5NDcgZGE3MWFhMWJlMTkxYzAxYzNlODVkNzk0ODliNWIyOThhZTQxYzQ3ZSBsZWdhY3ktdHJ1bmsKKzExOTQ4IGIzNGY5ZTdlMjY5MTQ2NTRkNDg2M2M2N2JmNDg3ZTYwMDZjOTg2YzEgbGVnYWN5LXRydW5rCisxMTk0OSA0ZDNlMmYxZDBhZTQ3ZWRiNzVlYzEzMTcyYmQxMDc2YmE1MGU1MzA2IGxlZ2FjeS10cnVuaworMTE5NTAgOGJjMGEzMmRkYWI1YTIyYmI5NmUyNzcwODhmMmQyY2E2NmI2NTIyNiBsZWdhY3ktdHJ1bmsKKzExOTUxIGU1OTk2Mjc5ZjU4YzdiMzMxY2EwODMzMzZlMWUxNTQ2NWVlZjQ0NzQgbGVnYWN5LXRydW5rCisxMTk1MiAxN2JjYTRiM2RhOTM1N2NmOWRkOWRiOTU0MDU4OTg5ZThkYWIxZTUzIGxlZ2FjeS10cnVuaworMTE5NTMgMWFmZGM1NTgwMTU3OGNmMWNhNTY3MmQwM2M1ZTBiNmI4ODQ5YTIwMyBsZWdhY3ktdHJ1bmsKKzExOTU0IDU0NDIyYjQ2ZjZkMTgwMmNjOTNjNDc5ZjIyNzgzNjdmZjRlYjg4OTQgbGVnYWN5LXRydW5rCisxMTk1NSBlN2Q5ODRmMjY2Y2M2MWY2ZTZhZmY5NmM4NGViNGUyYzIyZDEyMzlhIGxlZ2FjeS10cnVuaworMTE5NTYgNjJlMWJjYzY2YTkzZTQyNTU5NTlhN2MxODJkNjBjYTVkZTA5OGM3NSBsZWdhY3ktdHJ1bmsKKzExOTU3IDRmYTg4MTBlODVjYWNmNWNmMGUyZGVhMDRiZmJmY2EzZDMxY2VkZTAgbGVnYWN5LXRydW5rCisxMTk1OCA5ZmZkNjA0ODA3YzIxNjczZGEzMGIxNDA5NDgyOGRhNDM5MTFkNGExIGxlZ2FjeS10cnVuaworMTE5NTkgOGRjMGU5N2E0NWVjNzUyMDhjNTJhMWRjMDY2NTc0YjkyZmVhNzU3NCBsZWdhY3ktdHJ1bmsKKzExOTYwIDc5OGIxMDQxZDI2MDZmMDk0NmU5YzU0ZmIwYzQzMWZkOGM0N2M4OTIgbGVnYWN5LXRydW5rCisxMTk2MSBhMTE1YzNkNDkyZGIwODM0NzRjY2I5OTlhMDAxMzI2YmE5MmZjNjgxIGxlZ2FjeS10cnVuaworMTE5NjIgNGRlMDllYTEwZWUwOGUwMjBiMGUzNjRlZDc2OTkxNWI4ZmUwYWYyNSBsZWdhY3ktdHJ1bmsKKzExOTYzIDZhMjQ0ZTY0YjNlNmIyZWMwNzY5NGJmZTlhY2FiNDQ4NTQ1NjFkNDMgbGVnYWN5LXRydW5rCisxMTk2NCBmZWI2YzM4NmFiNzcyNjU4M2U0ZjA4MzNhYzI3Yzc1NjI4MmVmNWFhIGxlZ2FjeS10cnVuaworMTE5NjUgZDA3YmM4YmYyZDg0NTkzZWY3OTEwM2U4MjJlZTFlM2NmN2FhNThiNyBsZWdhY3ktdHJ1bmsKKzExOTY2IDFhYmQ5MWY5NzAzMzI1Yzc0MzQxNTRlOWI3MmY1MTZlZjAyOWEzODQgbGVnYWN5LXRydW5rCisxMTk2NyBjMjE4MTVmYTA3Nzg4NjY1MDYxNjc2MjQyOThjNjQ0NmIxNjVhMzBjIGxlZ2FjeS10cnVuaworMTE5NjggZGUwMDkzMTY5NjQ5YmIzMGY2ZjhhZWZlMzA4ZTI0MzhiODc1ZDA0ZCBsZWdhY3ktdHJ1bmsKKzExOTY5IGFiZjJjZDI1MWIyNGE5YzQ5MWYzODhiYjlkOTFmYmQ4NDZmYmE2NzggbGVnYWN5LXRydW5rCisxMTk3MCAzZjcxNzM0MmYwYTM2ZGU5MWQ2ZGNmMzJkMTk1N2QyMDI2MzI2ZjVhIGxlZ2FjeS10cnVuaworMTE5NzEgYzFmZDgxNDZmMmU5YTc5Yzc3ZTU4NzdhYmFjYjE2MjA1MjkxNjM1NSBsZWdhY3ktdHJ1bmsKKzExOTcyIGY4OWVhOWJmOWE1MjVkOTgzMmQ4ZDIxZDI3NzA4MTZlZDI3NDY5ZWEgbGVnYWN5LXRydW5rCisxMTk3MyAxZWE2ZDIzNTZlNTJkYTQwZjk0N2JkMjI5NmJmNzFhYzA5ZGY4OTcyIGxlZ2FjeS10cnVuaworMTE5NzQgYWZhMGNkMjE3ZjRlYmE3MmRiNDFjMTY1YTMyYWJlMmNkNjljZjIzNiBsZWdhY3ktdHJ1bmsKKzExOTc1IGY2YTg0YTFjN2UwMmNmYjJhZWZjMjIzMDhiY2M0YTg5MmZlYzNjMTUgbGVnYWN5LXRydW5rCisxMTk3NiAzOWZmYzU5NjdiNmJhY2IyNDQ3YjA2NDM0MjU3MzEzMzRhNjlhOGEzIGxlZ2FjeS10cnVuaworMTE5NzcgNGFiY2IzMmY3ZWY1NGEzMzJkYzRkZWIzYjQ4MDMwZDEzYmU5MDJkYSBsZWdhY3ktdHJ1bmsKKzExOTc4IGUxZTljOWRmNGYxMmM4ZjUwMWQ2YzEwN2JiZDkxOThjNTNiMjc3YzMgbGVnYWN5LXRydW5rCisxMTk3OSA2Mzg3NmNkOTk4NGM5MjY4MWRmYTgzNGJhOGVmMzY3ZDU4NDY4Njk0IGxlZ2FjeS10cnVuaworMTE5ODAgMjViZTAwZjMxZGE2MTVkNDM2ZWU1OTNmMGI4YzNlMGY2MjdjNjE4MSBsZWdhY3ktdHJ1bmsKKzExOTgyIGQ4NDcxNTUyMzA5NWFjMjdmN2IzOTkyOTY4YjFjMWYyNmU5ZmVhMTggbGVnYWN5LXRydW5rCisxMTk4MyA2ZTZiZTg5NmVjNDY2ZTk0NGIzOWQzNjkzYzg4ZDM5YmE2MWM2ODk5IGxlZ2FjeS10cnVuaworMTE5ODQgZDM5MjhiOThlMmUxM2U5MjM4YzMxNTM0ZTY1MWYzYjczYjViMDM0ZSBsZWdhY3ktdHJ1bmsKKzExOTg1IDhmM2U3ZmUxZDRmNzYzYzBhZjUxMTRmM2FlNWM5NjI2YTdlMzdjZDEgbGVnYWN5LXRydW5rCisxMTk4NiBiMGNhMmNhNTg2YjE1OGIxZDRjMTA4Mjg2OWM1MTI5YWIzZGM3NjIwIGxlZ2FjeS10cnVuaworMTE5ODcgZGI3Y2NhMDliZWFmZTdiN2MyMjFlODEzZGIyZGU4ZDQ0Y2FhZmI4NCBsZWdhY3ktdHJ1bmsKKzExOTg4IGI3NWQ5M2VjOGU1YTZmN2YxYjNlMTEzY2Y5ZjJiMDdkMzE4MTg2NDEgbGVnYWN5LXRydW5rCisxMTk4OSBhM2JjZjFiMzY1NTE3YjU0YTk5ZmY3ZmQyODEwYzcwMGM2NmRkN2I4IGxlZ2FjeS10cnVuaworMTE5OTAgOTY0N2M2YWQ2YTUwOThjZTg5NWFlMmQ3MjdiOWFhOGUyNDYzZGUxZCBsZWdhY3ktdHJ1bmsKKzExOTkxIDE4MTUwN2NjMWE3MjU5NWE1ZjAwNTU2YWE4Mjc3ODgyYmRjZWZjMjggbGVnYWN5LXRydW5rCisxMTk5MiA1NDk4MzE3MjNlZjg1NzhhMWFhMmYxMWNmZGUzYTE5NTc2ZmZlOWFmIGxlZ2FjeS10cnVuaworMTE5OTMgZWFiZWJjMTYxNTE4NmIxZTJlNGY2ZGIzMzE3ZTY1MDIyZWNmMjEwMyBsZWdhY3ktdHJ1bmsKKzExOTk0IDVkODFlNDJjNmJhMmU4ZTA1OTg4MjgxMDQzMjJlYzc3ZGQ2YjVmOWQgbGVnYWN5LXRydW5rCisxMTk5NSA5NmM3MzRhY2Y4NGY1NWNmOTAzZDVlYTc5NmIyZmQ4Y2I5NTY0YTc2IGxlZ2FjeS10cnVuaworMTE5OTYgNzZlOTM1OTI0ZmFlMGI0OGM3ODUxYjI5YTcxY2ZjNmNiY2E1MmVhMSBsZWdhY3ktdHJ1bmsKKzExOTk3IDYzYTFhODUxM2MxZGNlNzBmZWZlNzM3NzQxNjUyNGY0YmZlZmEzNGYgbGVnYWN5LXRydW5rCisxMTk5OCA0NDMxZTdhMzE5Nzc1YmI2ZWRiNDZiMTJhZDU3MDczYjVmOTIwZTE5IGxlZ2FjeS10cnVuaworMTE5OTkgMzc3NzdlMGY4MGUzNzU1NGVkMmIwN2RjZWE1Yzk0MGYyNTBhYjVlYiBsZWdhY3ktdHJ1bmsKKzEyMDAwIDYwZGZhMjExZGRlOGJhZDY0ODRkOGFlMTQ0NTQ3MTNiNDAyNWQxOTYgbGVnYWN5LXRydW5rCisxMjAwMSBmZWM4NjIzMDFkNmUzM2NlYWEyZGQ0YjExYzQ0MmNiNTUyMzA3Y2NlIGxlZ2FjeS10cnVuaworMTIwMDIgZjU5NjUxOGQwNjkxZTAyNWJjYWU2Y2U3NDdjODE3MTYxZGJjZGNmNSBsZWdhY3ktdHJ1bmsKKzEyMDAzIDI0NDk3NjQzZGNjOTFkMTRkZjY1MmFlYzg2MTg4ZmNmMzU5OTg4OWEgbGVnYWN5LXRydW5rCisxMjAwNCAwNDQyNjIyNDMwMmFhZGFlNGEyMzc0NGM1MWNkMzlhOGM1MThiODEwIGxlZ2FjeS10cnVuaworMTIwMDUgY2Q3OTAzMTBiYzRmMDZmMmEzMTA1NDEyMDY0ZmMxMmZkNjZkNzFhOCBsZWdhY3ktdHJ1bmsKKzEyMDA2IDYwZDk5MGY3ZDdhYjU2YWZjNTljNTUyOGQ0Yzg3ZGYzNzNjZDU2NjAgbGVnYWN5LXRydW5rCisxMjAwNyA0YTczNDRkNTVhZTE4Nzk1MjhkMGE4NjNjMzUxOGVmNjBjN2E0MjA2IGxlZ2FjeS10cnVuaworMTIwMDggODU0NDRhZjJiZTk1ZDA1NWIxMjMzNjA1Y2YyYWRjYzNiNTI0ZmZmYiBsZWdhY3ktdHJ1bmsKKzEyMDA5IGJiZTkyOTMyYTAwNWU1N2UyMjhjZWMxNDJkYTYxYmI5ZGU1ZmJmNTMgbGVnYWN5LXRydW5rCisxMjAxMCBhMmU4M2JkYzFmZWFlZjczYmE1OTZhZTFlNGM0NjFjYWQ2NzFjN2M2IGxlZ2FjeS10cnVuaworMTIwMTEgMzUwZjI0MTgwZGNiNDIyYTE0ZDdmNmViYTA4YjBkNGVmYTBhNGZkOCBsZWdhY3ktdHJ1bmsKKzEyMDEyIGExMjYxMDdjNDMzYTZmOWEwN2M3ZDM2YWQ4OTljZjk1NWQ0ZjAyNGUgbGVnYWN5LXRydW5rCisxMjAxMyA5ODNmNTNmMmI2ZjY4M2NiNGZhZjlhMGI3Y2RiNmFhNjFmYmI1YzQyIGxlZ2FjeS10cnVuaworMTIwMTQgNThmNmRhN2M4YmI4OTQyMTRhZjM5ZjRlZTEyYzY1ZWEwYWY4ZGJiMCBsZWdhY3ktdHJ1bmsKKzEyMDE1IGZlNzgzOTg0ZjkyZWEzYTI0ODg5YWY1NGYyYzRlMGZlMDVhYWFlN2YgbGVnYWN5LXRydW5rCisxMjAxNiAyMzA5MjVmZTViMmRlOWRkNmIzNmIyMWVjMDBiYTcwNTg3OGYzYjNmIGxlZ2FjeS10cnVuaworMTIwMTcgNWFlMWEyMGJiZTcxZWI1NjllNjIxMWM0ZDRhY2NkOWQ2MmQ2MmJjMSBsZWdhY3ktdHJ1bmsKKzEyMDE4IDMxNWNjMDZhODE2MTU0N2RkNDlkZTlmMmIxMmMzMmM4NTkyOThlMGMgbGVnYWN5LXRydW5rCisxMjAxOSAwZjI3MjU3ZmI2Y2Y0ZjQxNWJkNmIzYTY0MDY3MWIyZWQ5MDhkODgwIGxlZ2FjeS10cnVuaworMTIwMjAgYTFhOGRmNzNiZmZmNTIzZmU3YzdkOGQzOThjY2JjOTJjZWIxOWI1NiBsZWdhY3ktdHJ1bmsKKzEyMDIxIGVkNmNhY2RkYzZjNjhlODdiOTA2MWFjZmY0NTM2OTNmMjkxZDE0NmMgbGVnYWN5LXRydW5rCisxMjAyMiBjNmExMTAzZWZhOGFmMzFlNmU3OWE2OWMwZTVlMWE0ODU5MTUwZjQ5IGxlZ2FjeS10cnVuaworMTIwMjMgNDhjNzAwNDEwOTM2M2JiMTUxNDk1NDNlZTZjNmYyMDA1ZjU4OTMxNyBsZWdhY3ktdHJ1bmsKKzEyMDI0IDc1MDRmMjNjOTI0N2Q5MTA2ZTg5YTU2ZmM3ZDFkODQzZmU2NjkyMWQgbGVnYWN5LXRydW5rCisxMjAyNSBmOTAyZWNjODY3ZDA4ZDM0YzlhMGEzOWYwOTAyZjQ4NDQ5NGMxYWQ2IGxlZ2FjeS10cnVuaworMTIwMjYgZTA1OTA0OWIxYTc2MjBjOGUxNTNiNDE0OWYzYzI1NmY2N2ZlMTQzYSBsZWdhY3ktdHJ1bmsKKzEyMDI3IGQ3ZDM5MjYwZmU4MmQ1ZmZlMWQ1N2I2Y2E2NjY0NmE5NmI0ZmQ1NzMgbGVnYWN5LXRydW5rCisxMjAyOCA4M2Y4M2YwMDJkMmVhZTUxZmZiODIzNjg5Y2RiMTM5NDExNjQ3OTk3IGxlZ2FjeS10cnVuaworMTIwMjkgNjg4NjNmNTEyNzZjMDg1MTEwNWJjOTI1YzFhZGM3NDgxMmQwZmE2NSBsZWdhY3ktdHJ1bmsKKzEyMDMwIGRmMDc3N2FiN2M2Mzg1NGY4NjMzMGFlOWEzNjg5NjQ4MDNiMjc2ZWQgbGVnYWN5LXRydW5rCisxMjAzMSA3OWE4YTFhNzQ2N2IxMjJmNDBlMTgyZGFhZmI4ZTFhN2EwYjhkM2ZkIGxlZ2FjeS10cnVuaworMTIwMzIgNTMzMjViOGY4Y2U5YjFjZDNlYjI1ZjhhNzgyZDlkMzI1MWRmZmFjZSBsZWdhY3ktdHJ1bmsKKzEyMDMzIDkzZWNjNTFmNTlkMTJhZjM4M2I1MzRjMmYzMTc0ZDExNzM0MWY5NmUgbGVnYWN5LXRydW5rCisxMjAzNCAzZTUwYzFkZGFiM2EzYmNiMTFhMmM5MGUwMGY4ZmIwODE2NzM1ZmM3IGxlZ2FjeS10cnVuaworMTIwMzUgZjE3Y2VkYTZlNjY2OTI1NzNkM2VmMWUzYTA1YjU0NzBmNTI0MDU1OSBsZWdhY3ktdHJ1bmsKKzEyMDM2IGZmMzkyZGQ3Yjk3MDk3NDRiYzRjNDgzYTFjZjA2YzliMGU5MTMwM2YgbGVnYWN5LXRydW5rCisxMjAzNyA4N2JiYzcyMWJhMmI5OWRmNTcxZjc4YzJiNDA3YWQwZjBiOGU0MDYyIGxlZ2FjeS10cnVuaworMTIwMzggYWEyYzFhOGZhOGNlMTEyNDk0OTRiOTk4NDA5ODA4M2VjM2I0MTIyMCBsZWdhY3ktdHJ1bmsKKzEyMDM5IGI4ZWM5NzRhZmQ2OTU2ZDY3MjU5MjU4MWY2MjczMDg5ZjEwNzZlNDIgbGVnYWN5LXRydW5rCisxMjA0MCAxNDM3YzIzMzViM2I0NmE1ZThjNmMwNDUzNDRlNjkwNWExY2RkMmU2IGxlZ2FjeS10cnVuaworMTIwNDEgNmJhZDY5ZDM4MjE2MjVmODI5MzgxMTZhMGY1MjE5MzllOTJlY2ZiYiBsZWdhY3ktdHJ1bmsKKzEyMDQyIDE2YWYyNTgyYzk2NGNjYzdjNWE1ZTA1NWIxYzZiMzc1OGUxNjY2NzMgbGVnYWN5LXRydW5rCisxMjA0MyBkNjQxNWMyN2IzYjFiNGJmMGJlZDAwZmU5MGZmNWVkZTNhNTkyNDU3IGxlZ2FjeS10cnVuaworMTIwNDQgYWE5NjFhNDZhZTllMDk3NjNiMzEzYTc1ZGQ0ZGRkNWRhZWQxNGU0YyBsZWdhY3ktdHJ1bmsKKzEyMDQ1IDZlMjQ5YjEzNWVkM2IyMWQ2OWYxNGNjMDYzZjgxNWE0YTJiZmY2YTIgbGVnYWN5LXRydW5rCisxMjA0NiA4ODE5ZGVmMWIzOWM2YWNhMDQwMWRiNmY4NDZjYjFlNTU4MDc4Y2FhIGxlZ2FjeS10cnVuaworMTIwNDcgNDg1YzBiZGZlOGEwZTM5ZWZjZTUwOWI5YjUwOTdkY2ZhYmRhMWVmOCBsZWdhY3ktdHJ1bmsKKzEyMDQ4IGQ1OTRlODMyYTU2Y2JjMTkyMzNjNmQyYTM2ODFjMTczMDliODY3NWUgbGVnYWN5LXRydW5rCisxMjA0OSBkZjM5ODVlYjU4NzNiYzhmNzYzYTQ5NGU4YWI2NWIwZTY0NDc0ZTg2IGxlZ2FjeS10cnVuaworMTIwNTAgOWE0ZjViYWE4MjRlN2FiYmQ4YjA0NDc3ZmUzYjkyOTVmOWMxZDc2NiBsZWdhY3ktdHJ1bmsKKzEyMDUxIDE2ODc4YTRjMjYwZDIwYTVkZmU0OGY0ZDRiOTlhMzhlOTczY2Y4ZTkgbGVnYWN5LXRydW5rCisxMjA1MiA5MTc3YzQwOWRjNDUxMmEwOWIyY2MwODA2MjJmY2U2ZDYzMjcyN2FlIGxlZ2FjeS10cnVuaworMTIwNTMgMjIwMDkwNGFiZGRjNTEzNjU0NGIwZGQwOGRkNmE3YjEyNDJjZThlZSBsZWdhY3ktdHJ1bmsKKzEyMDU0IDgzYmI2MDZhMzJlNmY0NDhmOTgwOGNhYjY3YWQ0MzlhMmNiNDNlZGIgbGVnYWN5LXRydW5rCisxMjA1NSBmMDJjNjU0OWVkMWI1NDE3YjQ2MjIzN2ZjNTVjNDI5Yzc5NmJmYmVlIGxlZ2FjeS10cnVuaworMTIwNTYgZmE4NjdkOGVlN2ViYzAzOTBlZDQ3OWZjYjAxZDBkMDM0ZDZkZGI5MiBsZWdhY3ktdHJ1bmsKKzEyMDU3IGZlYjhmODc2OWVmNjJkYzVmYWMxMDljOGQxMWQ4ZWYxZDlkM2I4OWEgbGVnYWN5LXRydW5rCisxMjA1OCAwNjcxN2U1MjA2OGZmZTMwODU3M2ViNTMwMmIwOWE4ZGVhNzBmMzMwIGxlZ2FjeS10cnVuaworMTIwNTkgYWU4ZTE0OTQ0NDE0N2NhZjJkYjU1ZTcwZDQxZWVlYTNjYzRiZDViZSBsZWdhY3ktdHJ1bmsKKzEyMDYwIGJjOWU3NzIxYzkxNjIwM2Y1MzFiMGNhNWNmNjUxNDliNmI3NmMzYjcgbGVnYWN5LXRydW5rCisxMjA2MSBkODVkMmQ5OTRmMWY3ODlmNmZjM2JjZmJkMjMxMTQ1ODMxNzFkZTVkIGxlZ2FjeS10cnVuaworMTIwNjIgZDEzYTYwYjQ0YjQ1ODdjNjViOTA5NGEwZTc3YTc3ZDY2NDg5ZmYwNSBsZWdhY3ktdHJ1bmsKKzEyMDYzIGEwOTExODVjY2ZiNmI0NThlMGJjNTQ4M2FiZDgyMDUzZTYxZmRlZWYgbGVnYWN5LXRydW5rCisxMjA2NCBhYzc0Mjg2MmNhMzYyNzc4ODQwMDRjYmRhMjdiYTYyNjlhYThmNmMzIGxlZ2FjeS10cnVuaworMTIwNjUgYjcxNThkYjM0N2Q5YjlmZWVkZjg5ZTc5MmEyZGI5MDBkYjMwMzM1MSBsZWdhY3ktdHJ1bmsKKzEyMDY2IDU1OTkxMTc2OGRjYmFkYjI4NTNiZWQ3NjcxNzE3YzZjYTUxNTcxYzcgbGVnYWN5LXRydW5rCisxMjA2NyBhYjIwZjVjZGQ3OWY2ZTU0YTVkYWI0YWMzZmFlZTcxMTFiOTcyYmFhIGxlZ2FjeS10cnVuaworMTIwNjggNWNkYmQ4YzA0MDE2Y2M2NDRmYzZlM2RhODAyODg2N2U0YzdiMTlhMCBsZWdhY3ktdHJ1bmsKKzEyMDY5IGIwOWE5YzQxMmJhMjk5NGE5NzlmZmRhNWFhMWIxNDFhMDM5NzNkNzMgbGVnYWN5LXRydW5rCisxMjA3MCBiNjc3NDM2NzUzYTg3MmIzNDRkODM4ZGJiOTQ2ZDUyOTFiNGQyNWQ1IGxlZ2FjeS10cnVuaworMTIwNzEgOGU2ZWE1ZjAzZTczNDBjYjdmZmNjZTBmNTllZWZkMzBhMGQwYjM4NiBsZWdhY3ktdHJ1bmsKKzEyMDcyIGFhMWU0ODI4NWQ3YmNlMDA3YThlNTBjNWM1OTNjODFiNmUxMzg0NDkgbGVnYWN5LXRydW5rCisxMjA3MyBjZGY1NjE3YzIwMjJkMmI3NzE4MDA1OGFkYzJiYzc4OGYxNGI3Mjk2IGxlZ2FjeS10cnVuaworMTIwNzQgOThhZDU3YzM5ZDIwZGMxZjEwNWE1YTY0ODI3MmE0OWFiMTJhMDU0NiBsZWdhY3ktdHJ1bmsKKzEyMDc1IDgxZGQ3YzczZjdiMjFmNDliMzg4NzI0Y2FjNzFlNjJhMTBkNDM4ZTMgbGVnYWN5LXRydW5rCisxMjA3NiAyOTkyODRlZTY2OWRmZmZiN2E0ZmM4YmM3NDQ2YzA5YWJmMzFiZjdmIGxlZ2FjeS10cnVuaworMTIwNzcgZjRkYTk0NDlmMDExMDFlMmQ1NzQ2NjY0Y2RhOWU1ZWQ0NWE0MDFhYyBsZWdhY3ktdHJ1bmsKKzEyMDc4IDlhOGVjZDc1OWUxMzQxMWMyYWUyZjA1MWI5OGNiYzlhODVmNzMxNDggbGVnYWN5LXRydW5rCisxMjA3OSA0NTk1ZWY1YTk2OGFjNTM2ZWI2MjBmMTI3NGY4YzNiY2QzNGM2NGEyIGxlZ2FjeS10cnVuaworMTIwODAgODhkNTkwY2MxMTE2ZTRmNGZhMGE5YTQwMGU5NTU0MDQ2M2I0ZjEyYiBsZWdhY3ktdHJ1bmsKKzEyMDgyIDY0ODNkYmUwOWYwNjE4OGNlM2ZiZTE2ZThjMzFiNDI4MmQwNDk3ZDYgbGVnYWN5LXRydW5rCisxMjA4MyBlNjZlODhmNTI2MDY0M2QzODM3ZWU4MTBhODY3OTQzNDg3NGU0MGQzIGxlZ2FjeS10cnVuaworMTIwODQgM2MyOTdhNmFkNGU4YmY5OWE5YzFjNzRjNjRmY2E2YjA0ZjQ4MjlkMCBsZWdhY3ktdHJ1bmsKKzEyMDg1IDYwZmRiMWRiMTE3NTY2NWI5ZDc1OWYwMmIxZGNhYjEwZDAwNGY1MmEgbGVnYWN5LXRydW5rCisxMjA4NiA1YTljYTJlOTM3YjViZDczNGRmY2QyZThhNTA1YzM3NWI2MGU4NWFmIGxlZ2FjeS10cnVuaworMTIwODcgMzgwMjNhNDI1ZTQ4MzgwYmVkN2I2MmIzYjc1M2IwNDVmMzM0NTZjYiBsZWdhY3ktdHJ1bmsKKzEyMDg4IDAxYzhmZTQ0MDY0YjMyZGQyZjZlNzMwNGYzNTI5NzgwNDY5Nzk0MjMgbGVnYWN5LXRydW5rCisxMjA4OSA0NWJkNmM0MGMwNWFlMDUyZmEwMDUzNmQwNzFhMjAxMDFjNDNhNGVjIGxlZ2FjeS10cnVuaworMTIwOTAgN2Y5MDczNjcwMWEzNTBlMzM5NTUzMDAzYzBlYzVhMjYwMjc0ZTA1NSBsZWdhY3ktdHJ1bmsKKzEyMDkxIDJhYWZjZWUyMjBiYzBiNzY4OWY4MmY0NmUwOWM0ZjllMDBlYmY3ZTQgbGVnYWN5LXRydW5rCisxMjA5MiBmMjJmNzY5YmYzZDk0MjFjOWE5YWExNGU2MDY1NGRlNzRjOGViMDdlIGxlZ2FjeS10cnVuaworMTIwOTMgODZiZjcwYTU1ZWZkZTRkZTc0MjJhMTY4YWM4NDU2MTI2ZTE1MTM5ZSBsZWdhY3ktdHJ1bmsKKzEyMDk0IDYxNmIxNzRlZWI1NDgzMGRlODRlMGRkMjM2MDY5ZTZmMTNmYWY3ZWQgbGVnYWN5LXRydW5rCisxMjA5NSAzNjA5Y2RkYzc5ZGY2MTAzZWU0ODQ1OTYwNmQ1NDU2OTNkMWU5N2JlIGxlZ2FjeS10cnVuaworMTIwOTYgNTgzMWJiM2NhNDJhNDlmODhhZDY2MjE5NWUwZjBhMTdlYjJkY2I3ZiBsZWdhY3ktdHJ1bmsKKzEyMDk3IDU0YWFmZTQyYzBjM2YyMDFlY2Y2ODVlNzcyYmY2NGM0ZmQxNmI4ZGMgbGVnYWN5LXRydW5rCisxMjA5OCAzMDc2ZmZmMzA1MzVmMmQwYjVhYjlmNGY2MDY1NThlYzYxODExNGJkIGxlZ2FjeS10cnVuaworMTIwOTkgZmNiZjIyMmU2ODk4MWFhNmY0NmRlY2YzOTQ0YjQxMDYzYWQ1MDVjYyBsZWdhY3ktdHJ1bmsKKzEyMTAwIDBmM2Y5ZTM2NjM1NmM3YjgxMTg4NWIyMzNiOGQzN2M4MTEzMzViZmEgbGVnYWN5LXRydW5rCisxMjEwMSBkNzk4NmI0YjkxMDA5YzBhMjJjMTQyMzM5Y2IwYzFjYTI1OWMzZTk2IGxlZ2FjeS10cnVuaworMTIxMDIgYzRlMmRhNDc3OTQ5MjljZTA1ZTBhZmEzOGM0MTg2MjJjODIzZGZiMSBsZWdhY3ktdHJ1bmsKKzEyMTAzIDFkYzBlZjI0YjE1ZDMyMDJlMjI5OTFiNDE1Yjk2MDE2OGJhOWQzMGEgbGVnYWN5LXRydW5rCisxMjEwNCA2YjU5ZjlhYjVkYjFhNTEzODQxOTJiNjBiNGViMGY5Y2M1NDgyNDkyIGxlZ2FjeS10cnVuaworMTIxMDUgY2I5ZTNmMDBkNmI2NTQ3NGRmZTgwM2E3MjA3NWU2YTg3NDg5YzdhOCBsZWdhY3ktdHJ1bmsKKzEyMTA2IDg0ODM5NTNhOTI0ODNkN2ViOTUwNDMxZTVkNDE0NTUwMTY2NDcxOGIgbGVnYWN5LXRydW5rCisxMjEwNyA1YTM2YmFkMWQyNDg5Yjg3YWJkNzdhMWNiYzIyMTk5ZWNkYzU5ZmY2IGxlZ2FjeS10cnVuaworMTIxMDggYzFmOTg4NTdjYzViYjdmNjA3OTAyZDgzNTcyZWY1YzM5OTgyNzA2MCBsZWdhY3ktdHJ1bmsKKzEyMTA5IDI2NzhkYmY0YWQ2OWEzMzBkNmU0ZWFlM2ExZWQ0MGUyYjYzMTEyYjggbGVnYWN5LXRydW5rCisxMjExMCA1NzBmZWQ0YWI4ZGFmNmZjOTdiNjQ1MTRhM2Q5ZTQ3MTZlOTA0NGM0IGxlZ2FjeS10cnVuaworMTIxMTEgYWE4OGNmZmMzNWFiOTRhMzJhODFlOWExOTQ3ZTI3MDEzZjNlOThjYiBsZWdhY3ktdHJ1bmsKKzEyMTEyIDU0MjZiZWY4OWVjMzM4ZDA0ZDhmZmRkMzQ2MTgyYjI0NzBmZjFjM2QgbGVnYWN5LXRydW5rCisxMjExMyBjZTc5YzBlNzRmNmZlMWYyOTBiZTQ4ZjZmZmU5MjhmZWVhMTRjY2M1IGxlZ2FjeS10cnVuaworMTIxMTQgYzAzNzg3ZWM5ODExYzk4NmI1ODZhMGZmNmVmOWYyZTRjZmMxOThkZSBsZWdhY3ktdHJ1bmsKKzEyMTE1IDlhYmVlNjNjNmJhYjNjNDZkN2Y2YjZiZTQwODZjMmU0OGViMjhhYTIgbGVnYWN5LXRydW5rCisxMjExNiBjMTJmZWU0Y2UzNjNkOGYzMWIwZGYzZjBiYjc3ZmFkOGUzN2Q3ZGExIGxlZ2FjeS10cnVuaworMTIxMTcgOTkxYmQzNTNjZmViZmJkN2FiNjQ5ZTJmOTNiMzU1MDczNGI3MTgyNCBsZWdhY3ktdHJ1bmsKKzEyMTE4IDkwZmRiMzc3NjRhMjJiMTA2YjRmNTI3MzdjM2U4NDY4ZmU2YWRkYjMgbGVnYWN5LXRydW5rCisxMjExOSAxNzlmYjYzYjE1NTQ3NDczYmIzZGFhMDhiYzJjNzIxODFhMGM5ZWI4IGxlZ2FjeS10cnVuaworMTIxMjAgMDdlZDM4YzI5NmVlOGY4NWI4OWRmN2FiODUwMGIwOTBmMjEzMDRmZiBsZWdhY3ktdHJ1bmsKKzEyMTIxIDU2NzJmNWYxZGI0Njg0ZDFhNzY5YjgyZWYyNzlkZThiMGNjNjQ0ZTcgbGVnYWN5LXRydW5rCisxMjEyMiBmYThmOWZlMGEzM2Q5ODUxNWFjYTQ0ODhlZjczZTUxODIxMjE3ODNkIGxlZ2FjeS10cnVuaworMTIxMjMgYjJmZGQ3MWNhMDA2Y2I0NjNlMzdmMjhkZmIwMzljNWYzMDk3Y2MyNiBsZWdhY3ktdHJ1bmsKKzEyMTI0IDFmZTQ4MDA5ZDhlYThjYTViNzY1MWM4OWJlNzhjZDNhMmViMWNhOGYgbGVnYWN5LXRydW5rCisxMjEyNSA5OGE2ZmM2ODc3YWVlMmMyMTk3M2FjMDE1OGJhNGJjZDMxZjJmYjZmIGxlZ2FjeS10cnVuaworMTIxMjYgNGY1MGM3MDQ1NGE5YjJkMTIwY2FkNmM0ZDYzYWI0ZmVlZjk4M2Q5NSBsZWdhY3ktdHJ1bmsKKzEyMTI3IDgyMDMwY2EwZmEyZWEwMGM1NGY1YzRkZTc5NWU2NjQ3ZmNhOTYzYTUgbGVnYWN5LXRydW5rCisxMjEyOCBjYTIxMjg0ZTg3NWRjZjU3ZTA3Zjc5M2E0ODI4ZTE2ZmE5YmM5MjMzIGxlZ2FjeS10cnVuaworMTIxMjkgZDY2NzEwOTM5YTMyNTQ4N2Y0YjI1MjUxM2UxZDZjYjAzN2UyOGE5ZCBsZWdhY3ktdHJ1bmsKKzEyMTMwIDJiMDBiYjUwODgwMzZhNDA1ODhlMjJmMzRhYWY3NDMzMjRjNDMxOWEgbGVnYWN5LXRydW5rCisxMjEzMSBhYzUzNDU4MTRiYTA5MzNjM2Q1YTkyZjJlM2JkODI1ODI4NmEyMzMxIGxlZ2FjeS10cnVuaworMTIxMzIgZTJkYzNjYjA4YzYwYTdmOTYwNWFkMDY5YjNiOTJhYmJiYmU2Mjk4MiBsZWdhY3ktdHJ1bmsKKzEyMTMzIDg1ODZkOTExZmIzOTAyMzhiMjNlN2VkYWU3ZDI5M2M3OTI4ZmFkNGQgbGVnYWN5LXRydW5rCisxMjEzNCA0NDI2N2I4OGZiNTk0MTBlZjY4ZTQ3MTY2NzljNTNiODQzNDhjOWRjIGxlZ2FjeS10cnVuaworMTIxMzUgZTU4OTU3ZjA2YTE1Mzg0ZTJkN2RjMjY1ZDBlNThkMTdkMjU2OTQwMSBsZWdhY3ktdHJ1bmsKKzEyMTM2IGY1ZTU4NmI1Zjc5MDAwNDVhYTQzZTczNGEyZjY3ZDZhNDUzMjI0MzUgbGVnYWN5LXRydW5rCisxMjEzNyBmOWNjNTIzNzRjNTJjM2VjZWUyYzg5MmU3YzkyY2RmMDAzMGJmOTJmIGxlZ2FjeS10cnVuaworMTIxMzggZGExZGQzZTU0YjdhZTI0YTI2MjNkMGNkNWZkZjAxOWY5Y2JhZmVkYSBsZWdhY3ktdHJ1bmsKKzEyMTM5IDcyYTJmYmIwZTFmOTAwMzhkYzA4ZmM1MWJjODRlMjgxMzRlZTFlOGUgbGVnYWN5LXRydW5rCisxMjE0MCBkMTUyYWRmM2YwOTRjYjIyYjkyODI1YTkwNDYzMTY2YjA2ZDI0MmNmIGxlZ2FjeS10cnVuaworMTIxNDEgMDgzNzljN2Y1ZmE5YjMwMWYyMWVmMGFiMmZhMzgzNjY2MTQ4ZjcxOSBsZWdhY3ktdHJ1bmsKKzEyMTQyIGMyZWMyMWM2NWQwNTAwNWQ2MDc2YTVjNTc1NmE2OWY3NDA5YTkzNTIgbGVnYWN5LXRydW5rCisxMjE0MyAyY2Q1OGE2MWIwNTE2MDczYzQ4YzkzMDU2N2JmYmM5ZjhhYzRiMzQwIGxlZ2FjeS10cnVuaworMTIxNDQgNGUxNWQxNzVlZWQwYzliYjQ5MWYzNWI2OTU3ZTgyN2Y4NWZiNzkyZCBsZWdhY3ktdHJ1bmsKKzEyMTQ1IDQ3NDJjNTI5ZDljOGUxYzlkNjYxN2NlMjljZTM3MjFjZWRhZTRjMWUgbGVnYWN5LXRydW5rCisxMjE0NiBjNGVhZWY4OWE0YTc1ZDk4MGFjZDUyNWY4NzhhZmZjY2EzNjhhNDQ0IGxlZ2FjeS10cnVuaworMTIxNDcgYzY2YjBkMzlhNzM2YmU2MGU3ZWViZjVlNmE2OWZkNzA4OWIzNTNmYSBsZWdhY3ktdHJ1bmsKKzEyMTQ4IDQ3MDEyYzEzZWZlNDdiNGRlYmI5NzA4MTI5OGFlYzU3ZWNjYzk2ZWMgbGVnYWN5LXRydW5rCisxMjE0OSBiNGNkYTM5NDBhYzNmYzk3ZjRmNmFlYmE4MTM1MWRlNzVjMGQ4ZDU1IGxlZ2FjeS10cnVuaworMTIxNTAgYjc3ZDM3Mzk5MzQzN2E5OWNkZTg5ZDBkN2M3YmVjYjBkNmY4ZGRmMiBsZWdhY3ktdHJ1bmsKKzEyMTUxIGU3ZWUxODg0ZmQ1NDkxY2ZlOGVkZTU5Y2JlMmRjZTAxYTIwZDU3ZDcgbGVnYWN5LXRydW5rCisxMjE1MiA2OTQxZjQzZDNiYjgwOWM3MDYxMDI0YTlmM2YwZDY0NGJjYmIyMTcwIGxlZ2FjeS10cnVuaworMTIxNTMgOTE3MzU3YzEyNTUyMjZjOWY4OGJkZWRiNTVlMmQ2ZGNlNDNhNTFjNiBsZWdhY3ktdHJ1bmsKKzEyMTU0IGJmY2U3M2QzNTc2YzMyMDhjZGMxMmMwODY1YjgwMTEzOWNlOGFlNmMgbGVnYWN5LXRydW5rCisxMjE1NSBhZDQ5N2NiNWQyZGMyZjk4OWE3NGMxMzFmZjEyYjk4OTgwZWU4ZTY3IGxlZ2FjeS10cnVuaworMTIxNTYgN2RkZTQ1MDFmNTNhZGEzNGQxMWU2MjAyMWRlZDI1N2FlYTg5MWI5YiBsZWdhY3ktdHJ1bmsKKzEyMTU3IDIzMjM3YmNiNzc0YmYyZWY2M2Y5ZTJjN2MzY2E3ZWYyNjlkOTJjZjYgbGVnYWN5LXRydW5rCisxMjE1OCAwNGIwYTBmMjlmNjVmMzBhYTU1ZGM0YzA1NTUyNzNhZjA2NzdiMDNhIGxlZ2FjeS10cnVuaworMTIxNTkgYTIwNmM2MWE4OTUwOWU1ZDQxYzFkNzFhNWY3MDFjMWMwOGZjNGYxYSBsZWdhY3ktdHJ1bmsKKzEyMTYwIDQ4MDhhOGI1N2FmM2FiYmU3Nzc0YTA1YmJiYzBmMTQ1YzkxODk3NWQgbGVnYWN5LXRydW5rCisxMjE2MSA5YmE3ZjUwYjgyNWFkMDg1MWMzNzM4NjAwYmFiZWIwMzUxZTNhMmZkIGxlZ2FjeS10cnVuaworMTIxNjIgNDQ0OTcwMmEwOTZhNGZkNzQ3YzY5MjhhNTk2OTY4MTRkZTc0ODEwZCBsZWdhY3ktdHJ1bmsKKzEyMTYzIDRlZWUwNjFkYWM0NGNiY2I0NWY1MzNhNTExYjliOGY2NGJjODdmODggbGVnYWN5LXRydW5rCisxMjE2NCBlMTFkNzUwMDVhNWE5NjYyY2YyZTQ3N2IzNTUxMzc5MGFlNTk3YzAyIGxlZ2FjeS10cnVuaworMTIxNjUgOWRhMDFlNThhMGI1NWJhOThmMzY0YjIxODFmMjhiZGIzZjRjZTAwZSBsZWdhY3ktdHJ1bmsKKzEyMTY2IDkxNGY4M2U3ZmEwYTAyODk5YTM3ZjI0ODYwYjYyYWIxN2FkMTE4ZDAgbGVnYWN5LXRydW5rCisxMjE2NyA0MDg1OGFiMjM1NjgyMTM5ZGE0NzljMWUzNzU0NzI4MWY4ZGE0NGE3IGxlZ2FjeS10cnVuaworMTIxNjggMjcyZWNjYzU3M2UyNDA2YWZlYjllZWZjYmJkYmU2YTAwZDEyZmU1YyBsZWdhY3ktdHJ1bmsKKzEyMTY5IDIxNGYzMDQ0ZDE4YzEwY2Y3MWU5YzAwZTNjZjFiNmYzMWYxZWRhZjcgbGVnYWN5LXRydW5rCisxMjE3MCAxZDQwYmMyNTcwM2E1N2M5ZDRhZWJjN2U4MWUwZTliZjk4MjRjODE3IGxlZ2FjeS10cnVuaworMTIxNzEgYjQ4NDNhMDdkNTc5MWMxMzAzNmIyZWYwYzJmMDI5MmJkYjY2MGZjYSBsZWdhY3ktdHJ1bmsKKzEyMTcyIDk5MTZmYzg1YjI4YTU5ZmIyNGY3OGE4Mjk4NDJkYmMwZTVhNTQ3NDYgbGVnYWN5LXRydW5rCisxMjE3MyA1Mzc2NmZlZDlmOGNiOGFlYTAyMjQzN2EzMzc5MTUxNDczZGYwZjliIGxlZ2FjeS10cnVuaworMTIxNzQgYjc4MDQ5ZmVmY2ViMjk3YzY2NzIwYjE5NmYzYjc4M2E2ZTcwMDNhZCBsZWdhY3ktdHJ1bmsKKzEyMTc1IDVkNGYxMzQ3MTUwZWRlYTQ2NTJmYTczZDUwMjFmMGQwMDY3YTMzYTIgbGVnYWN5LXRydW5rCisxMjE3NiAwMGZlZDc2OTgwYmM3ZjcyN2VjYTI0Yjk3ZDM4MmU2NWIwODg5MjllIGxlZ2FjeS10cnVuaworMTIxNzcgZjM5YTE5YTEyMjlhZjZlMWU1ZTY2ZjUxZTMzMGM5NWNmZTY5ZDZjOSBsZWdhY3ktdHJ1bmsKKzEyMTc4IDg3N2QyM2JkNWJkYzJkMzA0ZmEyMWMzNDVjOTliZGNlMWZiZjMxMWUgbGVnYWN5LXRydW5rCisxMjE3OSA4YjYxZTEyNzNiNGJkYTM0YTdmYjg4YjJhNzkyNzFiYjhiODUzNTllIGxlZ2FjeS10cnVuaworMTIxODAgNjE1NGQyZTY4NjAzMjg2NjliNGY2NDc2NTBjNjFhMTM1MjM4YTlkYyBsZWdhY3ktdHJ1bmsKKzEyMTgxIDUzNDVmZDEzZGUzZDlkN2E0ZmY1OTk2Njc4NjBhODk1MGY2ZDQ5ZDIgbGVnYWN5LXRydW5rCisxMjE4MiA1YTZiZDQzZTJkNWE3NTU0NDBhOGNjZjA3ODY3NDY4ZDkzZjExYjA2IGxlZ2FjeS10cnVuaworMTIxODMgMTA5NTVjMzljMGU3YjZiZTY4ZDY0Y2U4YjFlZjkxMTQ2NTQ3MGRlYSBsZWdhY3ktdHJ1bmsKKzEyMTg0IDkzY2IxYWEyNGY3ZDEwNjk3MzhiZmY5M2VlODU4ZDZjYjQzODJkNDIgbGVnYWN5LXRydW5rCisxMjE4NSBiMGI4MTVlZWVkMmM0OTFhOGU1OGVhMDliZGZjMmIyMTEyZTM5NjdkIGxlZ2FjeS10cnVuaworMTIxODYgYjg4M2VmM2IyZDE5NmIyZDljOGUwYjc4NzA0Yzk1MTMyMDlkMjMxYyBsZWdhY3ktdHJ1bmsKKzEyMTg3IGVjZDExNTQyZWFiZTUxOTM5MDM5ZDc4YzI0YjIwMzdhMWEwMzI3MTkgbGVnYWN5LXRydW5rCisxMjE4OCAwYTA0MzRlZmViY2ZlYmNhOTBmMDU2MDU2MmJiODY0NzU4MzY5OTI1IGxlZ2FjeS10cnVuaworMTIxODkgMzE0ODk3OTljOGM2MGEzMDkyNTU1OGJhNDlhMTZjNjc4MzIzN2VhZSBsZWdhY3ktdHJ1bmsKKzEyMTkwIDhkM2MyYTgwODM0Y2MxMGJmMTIxODdmNTAxYzVkZjNhYmIxMWVkNzggbGVnYWN5LXRydW5rCisxMjE5MSA1Mzg5YzZlMzBlNTRiMTMwNzUwZjBmODFmNjkzMzAzOTRjM2I1YWMxIGxlZ2FjeS10cnVuaworMTIxOTIgMjYzNjU1YzZiNjU2NzE4MGQ3YjhlM2FhMTg0Y2UwZGNmMTYwOTc5MSBsZWdhY3ktdHJ1bmsKKzEyMTkzIDYzNzMyNTI5ZjZkZjdlOTc1ZjcxNDdkOGFmYjVkNGJhNzFiYjFmNDAgbGVnYWN5LXRydW5rCisxMjE5NCA3YTRlZWVkNTRiMjQ1MTRlMGIxMTA2ZWVkNjBmZDFmZTU3YjUxYTBiIGxlZ2FjeS10cnVuaworMTIxOTUgMjJmM2E4ZDgwM2E1MTdlYzJkOTYxZTUxMjMxODk3Y2M1ODhmNzYyOSBsZWdhY3ktdHJ1bmsKKzEyMTk2IDkzYzY2YWM2YWYxODk2ZDI2YWQ0YTljNmRkOTAyMmMwMmRhMDg3ZmIgbGVnYWN5LXRydW5rCisxMjE5NyBmN2U4NjY4NGNkNGMyZDM2NDJmYTRiNzllNDA3MTE2N2FjZGExYjM5IGxlZ2FjeS10cnVuaworMTIxOTggOTczYzIxZGYyZDYwMWI5ZGYxN2YxOWIxMjIwZjVmZDFmNTkwMTkxMiBsZWdhY3ktdHJ1bmsKKzEyMTk5IDk3MDFjNTBjNjk0NjA3MzhhNDc4MzA2YTBjODZhYzFiZDU3MmVjNzQgbGVnYWN5LXRydW5rCisxMjIwMCA1NTU5MDI1MWNmNTI3M2I2NWIxM2NiZGU1OWNmZDY2ZjdhOTkwNjQxIGxlZ2FjeS10cnVuaworMTIyMDEgNmJhN2JkNTYzZTNiZjdmYTZhZWZiYzdhZmNmZjY5YTYzN2ExMDVlNSBsZWdhY3ktdHJ1bmsKKzEyMjAyIGI1ZDFhMTYyNWNkNWRiNGZmZGMwZDJmYWNhY2Y4Mjg2MzEwYzczNzUgbGVnYWN5LXRydW5rCisxMjIwMyA0Mzk0MjFjZGE4OWVhNzZkNjczYzAwY2ZmYmNjZjRmNDkzZThjMDM0IGxlZ2FjeS10cnVuaworMTIyMDQgYzIyZGMzMDFiMzZhODFlMmFkZGE3MzQ0YTU0Y2EwNGNkNWEyYzhmYyBsZWdhY3ktdHJ1bmsKKzEyMjA1IDEyNzc5NDYwNTRlOGM2ZTE2MmFlY2YxZWEzMTQ2NGRhZGVmY2I0ZWUgbGVnYWN5LXRydW5rCisxMjIwNiBlMGE0ZmIwYWJiNzY5ZGRlMTgyNTIzYTMxMWRjMzk2YWRmYzcxMWNjIGxlZ2FjeS10cnVuaworMTIyMDcgZjNmNjAyM2ZlYjc4OGQ5MWE4MTk1NzYxNDk1OGQxM2M2N2QxYzc3MyBsZWdhY3ktdHJ1bmsKKzEyMjA4IGQ3ZGQ3MWQwZDE4MzFhNjhmMTNhYjJhYzljZDAxNzBiYmZmOGY4OTMgbGVnYWN5LXRydW5rCisxMjIwOSBlNzhiZGNjZDIyNGZmYzkxZWRlODVmODdmOGRmY2I0NDk0ZDczNzgwIGxlZ2FjeS10cnVuaworMTIyMTAgMmJjZGUzNDc0NmQxY2YwYmQ0MWM0OTY2ZjcxYjEzM2M5YjQwMTRhYiBsZWdhY3ktdHJ1bmsKKzEyMjExIGEzYzljZTI5ODVkZWU5NTFjOGIyMGViODg0ZTY5NmNhYmNlNWY0MzIgbGVnYWN5LXRydW5rCisxMjIxMSBmMDhjN2EyYTU2ZjgwNzQxZjVmMTkyZmQwZWJlMGIwOTY3YTIwM2NmIGxlZ2FjeS10cnVuaworMTIyMTMgY2Y2NTRlZDU4ZmYxNmEwOGRhZGFiOGI0ODY2NzZmOGFiMjdiM2Y4MyBsZWdhY3ktdHJ1bmsKKzEyMjE0IGQxZGI3ZjZhYjc1M2M5ZjM0NTI5ZDg0OTdkNjBlNDAyMzhkZjY0NmQgbGVnYWN5LXRydW5rCisxMjIxNSA4YjI1YmEyNDk0NDY1MmE2MGJmMjI3MjdmMGJiZmM1ZWEzYjg2MjhmIGxlZ2FjeS10cnVuaworMTIyMTYgMmE4OTU0M2RkM2NhYjBlODRjOGRmNmQ4ZTYwNzFkYzAxZTgxNWU3NCBsZWdhY3ktdHJ1bmsKKzEyMjE3IDQ4MmU2M2Q3OWM5ZGZlZTRhOWVkMzkxMzM5NGVkN2ExNjg1NTI1Y2MgbGVnYWN5LXRydW5rCisxMjIxOCAzNTE5ZGU0NDBmODkyYzJjN2UxNTk2NWEzY2Q1ZTc3OWEyOTVmNTNhIGxlZ2FjeS10cnVuaworMTIyMTkgMjRjYTY0MTM0NTk0YWQ3ZjMzNmNlZjFjNzFmNGVhMWE4ZmFkYjA2ZSBsZWdhY3ktdHJ1bmsKKzEyMjIwIDcyYjc2MWI5NDhlN2U5YWI3OTFjYzAzZTg5YzJlZTc3OGRlZjFjODIgbGVnYWN5LXRydW5rCisxMjIyMSAzOTU1Zjc4N2U5YTExYzE0YmM0NGFlNmU1MzQyOWEwZTk4YzM1NTBiIGxlZ2FjeS10cnVuaworMTIyMjIgMDRlNDRjNjA3NmU4ZjJmMmYzNTA5MjI5NDVmODZkZjE3Y2Y2OTZhZSBsZWdhY3ktdHJ1bmsKKzEyMjIzIDU2ZjM4YmYzYWY5ZjJkNjMzODI0MDliNmIxNjJlOWQ2MDFiNGMyMzIgbGVnYWN5LXRydW5rCisxMjIyNCA0YjFiOTQzMmIyNmJmZDhmNjc5ZWRiNzQxM2U4MmE5ZTNiYjMwN2Y2IGxlZ2FjeS10cnVuaworMTIyMjUgNDMzNmExOTA1MDViNjZlMjYzMmNkYTVhMWViNDdmMzM5ZGRlY2FkNCBsZWdhY3ktdHJ1bmsKKzEyMjI2IGVhYWI4ZmViN2ZjMDc2NGQ4OWNjMmM0NWYwMzFlMGM1YzhlZDRlNzcgbGVnYWN5LXRydW5rCisxMjIyNyAyY2NmMDQ1ZjVhMjExZjEwMTQwMTZjMjA4M2Q5YzYxNmFhN2JkYjkyIGxlZ2FjeS10cnVuaworMTIyMjggMjY0Njg5M2NiNDk5Mzc1YWFkMDBjZjllYTU2OGY3YjFhZjBhMGU5OSBsZWdhY3ktdHJ1bmsKKzEyMjI5IDZmMWNhOWRjOTVkYWIxNzUxZDQ1YjZlZDdkYzU2NjQ0ODA2NGE5MDcgbGVnYWN5LXRydW5rCisxMjIzMCA3MmY1MDYzNmRmZWExZTQ1ODNkY2NlMzdiNWRmZmQ2OTQ3YzU0ODE4IGxlZ2FjeS10cnVuaworMTIyMzEgMTBhYjJjNWZiZDhlZTdjMGQ3ZjlhZTAxOTVjOWY2MGU4YTZhNjdlZCBsZWdhY3ktdHJ1bmsKKzEyMjMyIDg1ZDViNWVjZWQ5ZWE5OTg2MzM5MGU1YTUzZjE4MmUzZDAxODYwYzkgbGVnYWN5LXRydW5rCisxMjIzMyA0N2QyZTRmNzExNDc4ZGQ1ZjBlMDc1N2ZjNDQ1YjdkNGZlYTVlMDZlIGxlZ2FjeS10cnVuaworMTIyMzQgMmU5OTMxZjQ0ZWY0Zjc4NjJjYjA4NjQzNWJlYzIyNmFiM2Q3ZDQwZiBsZWdhY3ktdHJ1bmsKKzEyMjM1IDQ3YmJkMGJhOGU4YTA1OWYwOWE2YTExNmIzZDFhYjNmMWJjYTdkYWEgbGVnYWN5LXRydW5rCisxMjIzNiAzNDE1ZDEzZjhiYzhjMDNkMDlhZDczNTc5ZDhiM2U4YzNiZTFjOTU4IGxlZ2FjeS10cnVuaworMTIyMzcgOWZjYzkwMmQ3NDBmYWFlYTk0ZjkyNTAzZDNjNzg5OWFlMDBlOTAxNCBsZWdhY3ktdHJ1bmsKKzEyMjM4IGU2YjY2MmE5YjcwOTYxMTg5Yjc0YzY3ZTQ5NjcyMzEzNzkxNWNmNjMgbGVnYWN5LXRydW5rCisxMjIzOSBlMDZlZjg3YjM0Y2M0YTg4NTg2NGVkNzYwNjBmYzE4YzNhNGFjNjlhIGxlZ2FjeS10cnVuaworMTIyNDAgMDVmYjRkOTY2YzczZmZhYjBkYWFiNjA4OTcxOTY5NzJiY2VhMDMzNiBsZWdhY3ktdHJ1bmsKKzEyMjQxIDI1MDdlMTVlY2E2YjkwYzZiZWYyYTJlZDk1YjFkOWVlMWM0NmU5N2EgbGVnYWN5LXRydW5rCisxMjI0MiAwOTk1YTdhNjM3ODJiYmQwYTRmZjA2NzU5MDEyYjhiYmYxZWM0NGYxIGxlZ2FjeS10cnVuaworMTIyNDMgODVhYjI4NjQ0MjAxNDE0MTEzNmI2NTAyNDMxNmM5MDM4ZDA4OGIzZSBsZWdhY3ktdHJ1bmsKKzEyMjQ0IDZmYzU4ZDc5ZGFjNWRjNWQxNmUyZTA4ZDhiNjMxMjE4ZjQ3ZTlkMTggbGVnYWN5LXRydW5rCisxMjI0NSA5MzQyYzYwZWFhYzA3NWFkMjM4MDM3ZGI4MzYxODM2OWU3NDhkODUyIGxlZ2FjeS10cnVuaworMTIyNDYgZDYzMjhkNzRiNTgwZWZkOTA0NTI3NmVkNjA2NGQzOGYxMDRjNDE1NyBsZWdhY3ktdHJ1bmsKKzEyMjQ3IGZjZTZjMTFjODBmYTFkZTlhYjQxZDJkNDllMTQ5ODEwYzJkNDA3MGUgbGVnYWN5LXRydW5rCisxMjI0OCA5NjdhYzVlODkwN2FjYTk0YzQ2MjA2ZDU1N2YxNjA0MzIwM2QzNjA0IGxlZ2FjeS10cnVuaworMTIyNDkgN2NlYjkyYmE4NmY3NjQ5ZWMxNTViZDIxNzhjODY5MTI3MWIxNjUzOSBsZWdhY3ktdHJ1bmsKKzEyMjUwIDA4YTkzNzM4NjBlODM2YjFmZTZjOWI0ZTM0Y2Q3MTIwYWVjMjIyZjkgbGVnYWN5LXRydW5rCisxMjI1MSBlNDVkZjZmNDU2MDRiOTUzMGNjNzQ2ZDJlY2M5MDk0MTM1ZDc3MmZiIGxlZ2FjeS10cnVuaworMTIyNTIgODhhZjhhNDI4NTdkMzFmMmI2YzIwYjA1M2Y5NjRkOGNlNGJkZTZhMSBsZWdhY3ktdHJ1bmsKKzEyMjUzIDc2NjNjZjk1YmQwZWE4NjI2ODAyNWRlYTZkNGU2NmVmZTZiNTYzOWUgbGVnYWN5LXRydW5rCisxMjI1NCAzMGYzNjMwYjc3Y2E5OTQ1Y2YzNDM1ZmQ5NTkyNGYzMzY1NDIxNTgyIGxlZ2FjeS10cnVuaworMTIyNTUgNTg2ZDFiMDg2MTRlMjYxN2RjMzBmOGZjNThhYWI1OTJmMTc4N2U1YiBsZWdhY3ktdHJ1bmsKKzEyMjU2IGM3MDhkNzBiMTM5ZTIxNWU2Y2ZiMGRlNmFhZWZiZGIyNTVlNDliODEgbGVnYWN5LXRydW5rCisxMjI1NyBjZDJlMDVkYWU0YzI5NWZhNGZhYzdiYTE1YzA1N2I2ZWU0ZTA0OTA2IGxlZ2FjeS10cnVuaworMTIyNTggOWU2ZjViYWMxNWFjMjRhM2ExNzBkYTU0ZWRiMDYzNTdjOTFjYTMyNSBsZWdhY3ktdHJ1bmsKKzEyMjU5IDNlN2M0MzQ1M2U1ZTk5OWM3MTExNWJmYzJkZDQxMWFjNTM4N2ZhMWMgbGVnYWN5LXRydW5rCisxMjI2MCBjZmI5MGRiMzk5NThiMjRhM2RkNjhhNGI1YTU5OTMzMDg2NTllNWY1IGxlZ2FjeS10cnVuaworMTIyNjEgZWQ1MjNlYTA3M2RiYTA0OWY4YWZjZmMxMDE0NDRhNmMxOWM3MzhiOSBsZWdhY3ktdHJ1bmsKKzEyMjYyIDE2YzlhNzE0ODgwZmMwMGYwOGI2MjU3ZmU3MTRkZGZkMWUwOTI3Y2MgbGVnYWN5LXRydW5rCisxMjI2MyBmNzU1MmRkMjM2YjBhZDYyN2JmZmIxODYxMzEzY2MyN2U1Y2RmYjNkIGxlZ2FjeS10cnVuaworMTIyNjQgNjMxZDk2ZDNjZjY2MGZlZjMwMGI3ZDEwOTE0YzJiMjdkMGFjNDU3YiBsZWdhY3ktdHJ1bmsKKzEyMjY1IDBkODg3MzM0MDg0NjIyNTZlYTY1MjI0MGVjNGZkMzI5ZTZhMWZkNTEgbGVnYWN5LXRydW5rCisxMjI2NiA2MWRkZTdlYmZhOTUxNjg4YTg0YjA1OTAwYTA1NjIzYmY5NmMzYmZkIGxlZ2FjeS10cnVuaworMTIyNjcgNGEwN2Q2OTg2NGY1NzUxMjIyMWYyNzVmYmIxYTYxZGMxNjllZDE1OSBsZWdhY3ktdHJ1bmsKKzEyMjY4IGUxNTA4ZjcyYzYxMGJhZDIxMDViZGZiODMzODlkNmEwYTZhYmM5YzggbGVnYWN5LXRydW5rCisxMjI2OSA4NTQ3ZDI3N2EyMmY5NjBjNWRiYzk4YmI2NjI5Y2E0Y2YzMTkxYjRjIGxlZ2FjeS10cnVuaworMTIyNzAgZWFmOTNkNWJiNDZjZjY1Yjk5Y2U4NjQyZTZjNTI0M2YyYTkxMWIzNCBsZWdhY3ktdHJ1bmsKKzEyMjcxIDg4MTM2MjdhYWM0NjZhMDFmZDE5NmM1YTU5YTYzZDFhY2Y5Y2U0MGEgbGVnYWN5LXRydW5rCisxMjI3MiBlMjA4YjI3NGViODA4YzZiZDNlMTQyNWU1Mjg0ZjU3NjhmM2Q2MzYzIGxlZ2FjeS10cnVuaworMTIyNzMgNzcwYjQwZmVkNWY3YWIxMDZjNjUxYTdiYWUwYmE5MzljY2I5MzFmZSBsZWdhY3ktdHJ1bmsKKzEyMjc0IGIxMTZhZmI4MTczMjhlYzJmZGQwZDA4MzhhZGJlNjRmYzNlMDgxNTEgbGVnYWN5LXRydW5rCisxMjI3NSA3NzBkODk0ZTIwYmQ4ZDIzYzllNzNmNWYwNGVmZDNlNDlkNTdmY2Y3IGxlZ2FjeS10cnVuaworMTIyNzYgOGIwODYzNDlhNDg4Y2IxYTFiZWFkNjRmZjdjOTBlNGIwMzI4ZDM5NyBsZWdhY3ktdHJ1bmsKKzEyMjc3IGRhOTQ0Njc4YjAwZTBiOGYzMzFiYzljY2MzNTExMmNhMzU0OTJlNjEgbGVnYWN5LXRydW5rCisxMjI3OCBjNDY5MjA0NmI0ODIwMWJmZjhjZWMzMjMyOWFjYTMzMmQ4ZGJkYjAzIGxlZ2FjeS10cnVuaworMTIyNzkgNGIxOGY4ZWFhMTZiMmJmOGJiMzg0NzcwMTE0YWY0MWNjZjBjYzIzYSBsZWdhY3ktdHJ1bmsKKzEyMjgwIGM5MWNlNDliNDA3NTA4OWFkMWRjN2RlMmJlMWRjMjgzZWM5YjNlOWYgbGVnYWN5LXRydW5rCisxMjI4MSA2NjgwZmFjYjRkNWI1ZTI3YjlkZTk5OTZiYzdkOGRhOWNiOWE1MzIwIGxlZ2FjeS10cnVuaworMTIyODIgYmUyNGI1YjkwZGVjZDYzZGE1YzA1YWI4YzUzZGJkZWMzZTRmOGViZiBsZWdhY3ktdHJ1bmsKKzEyMjgzIDhkYmEwODIyM2RlYmExNjRmMDRhOThmZjVmYmE4NWUwOGI0YjEyNWUgbGVnYWN5LXRydW5rCisxMjI4NCBmYWNiNDU3YjRkMzJlZDZlMjI0Zjc3NzgzNmE0MzUxMDgxNzM2NDE5IGxlZ2FjeS10cnVuaworMTIyODUgNDBmNzIzYWMyNmU4MjgwNzM3NDczM2I0Y2IzMTI1ZjkyMGQyYjhjNyBsZWdhY3ktdHJ1bmsKKzEyMjg2IDFiZWFmOTE3OTEyNWIyNGFmOTliMTI0M2E5MjdlY2EwZjc4MzdjZjcgbGVnYWN5LXRydW5rCisxMjI4NyBlY2I5MTJiZTQzMThhNjNjNTIzZTQwOWY3OWM5ZWJiZmQyMTk1MzViIGxlZ2FjeS10cnVuaworMTIyODggMDhkZmJlZTBhMzJhMTM5N2ZiMWIxZWE2ZDVlZDMxMjk1YjRiMWMyNyBsZWdhY3ktdHJ1bmsKKzEyMjg5IDdjZGNkZjg2ODZiM2M5MWI3ZDAzZjllODYxMzc1ZDYwNTZmZTM0YzAgbGVnYWN5LXRydW5rCisxMjI5MCA5ZTYxMTY2ZWNkZDgxZDViMDgwOTcwNTcwMGNiMWJmZjM3Yzg2NTM1IGxlZ2FjeS10cnVuaworMTIyOTEgZmU3MDE5NjliYzJjZjZiNzkxNWQ1OWFjYTc1NGQyMjQ0YTQ5NDZiYSBsZWdhY3ktdHJ1bmsKKzEyMjkyIDczN2QwNWE5YmI1ZThhOWFmOTRjZDg1NjllY2QwMmI2OTcxYmUwNGQgbGVnYWN5LXRydW5rCisxMjI5MyAyMDllZWQ2YTJlZjY1OGVkMzhjYmUyYzIxYWY2YWYwZjUxYzYyODBlIGxlZ2FjeS10cnVuaworMTIyOTQgODM2Zjk0MDhjOTU2NWFhNTljODAxOGQ1MjlkZjVjYzI4OTNkM2NiNSBsZWdhY3ktdHJ1bmsKKzEyMjk1IDdlZjVhMTUyMGFlNTNkMDExNWVmYzdjOGNkYTI0MmMyMWZkNjYyYjEgbGVnYWN5LXRydW5rCisxMjI5NiBkYjI5ODJmYjYzYzA0ZDVkOTQzMzkzZjRlYmRiZjg3NmYyYmI0ZTZiIGxlZ2FjeS10cnVuaworMTIyOTcgOWNmYzUzZTU5OTZlMGFhMGM4YzVhNDY5ZmI4OWYxYTBjNjA1OTM2ZSBsZWdhY3ktdHJ1bmsKKzEyMjk4IDlkMDJhZmEwMjJjNTJmZDc0ZTk0NGE1NzNhNzQ5YjJmZmVlYmJiN2EgbGVnYWN5LXRydW5rCisxMjI5OSBjMWVhYjFkYzc1MzYzYTM0MTE5MWJkNTY0ODQxMDA2MmY0Nzk2MzlkIGxlZ2FjeS10cnVuaworMTIzMDAgOTI4YzkzZDJjMTA3MWRiOWQwYzZkZGViYjMwNzVkNWUxMWVkYzYyOCBsZWdhY3ktdHJ1bmsKKzEyMzAxIDU2NjhmOGEzYTQzMDRmYmMxMGE0OGUzZDExMjY4MTgyMWM1ZmNlNGQgbGVnYWN5LXRydW5rCisxMjMwMiA4MWIzZTZjYTRhMjlhZmJiMTM4YjYyNGM3MTlhM2YxODM5YmRjMThhIGxlZ2FjeS10cnVuaworMTIzMDMgMTAyNzAxMTVjZDRiODA1Y2ZmMzdlMTM2NTIzNTljNWJhMDk2MDk3OCBsZWdhY3ktdHJ1bmsKKzEyMzA0IDhkNmY4NGM1OTQ4YzI4NTFhMDAwZGY1MzBmNjczZDc1YWUxZGE5ZTkgbGVnYWN5LXRydW5rCisxMjMwNSBhOWFhYzAwMmU4NDM1YmEyYjY2YTlhZGQ2YmIwMzdiMmY4MGFlY2JlIGxlZ2FjeS10cnVuaworMTIzMDYgNDE1Yjk4NDExNzA3ZjEyMjJmZjJhYzMyNjAyYzQ5ODgwNTI3YWJlOSBsZWdhY3ktdHJ1bmsKKzEyMzA3IDBiZmFmZjExYzU3Mzk5NzZiZmFhNDcxMjk1MjAyYzUzNjQ4M2IzZTEgbGVnYWN5LXRydW5rCisxMjMwOCA5M2Q3MDMwOGJlMTcxYmI1OGE0OGE5ZDlmZDNmYWNmNTMzYzAwMzVmIGxlZ2FjeS10cnVuaworMTIzMDkgZjk4MWM5ZDM2YzhhZjg1NjUzNTY1NDlmZTBhZmIzY2Q3NTkyNmIwOCBsZWdhY3ktdHJ1bmsKKzEyMzEwIDFlYWViYWVhYTIyYjlhMmExNjA5NGI3ZmI1Yjg0ZDUwZWFkMTA1ZDEgbGVnYWN5LXRydW5rCisxMjMxMSAzMGVlODYxNzIxNjhhMzFjMTNiNDRkM2RjODg5M2ZlOTQ0NDQ4ZGI2IGxlZ2FjeS10cnVuaworMTIzMTIgODcwMTA5YTQ0ZTBlYmUxOGEwYmI2YjdlYTZmNTAwOGRmMjc2NWMwYyBsZWdhY3ktdHJ1bmsKKzEyMzEzIDRkMDQ0MDA1NjExZTQwZmVjMzY4YTM5Y2EzOWIwMDQxM2RlYTk1ZDIgbGVnYWN5LXRydW5rCisxMjMxNCA0MDEwZTVkMjQzZDY2YjhiMjFlYWI1MTQ3MzAzM2FjZGI3NmY3YWIyIGxlZ2FjeS10cnVuaworMTIzMTUgMTQyMGY4NDAwOTI0OWI4NmQxMTM2OGRlNGU0Y2JiZDI1M2Q4NzhjZSBsZWdhY3ktdHJ1bmsKKzEyMzE2IDY2MzczNzI3ZmFjODViMjgwYmU1YmVkNWRjZWVlOTMzMjY5YjliY2EgbGVnYWN5LXRydW5rCisxMjMxNyBhM2IyNTI1YzkzNzA0MDQyOTkxMzk2ODFiZDUzZmVkMDU3MzhjNTYwIGxlZ2FjeS10cnVuaworMTIzMTggYmQxY2U0MTIwZTZmOTU0NmRlZGY4NWNhOTdlOGVjZjFhNWFjMjM4OCBsZWdhY3ktdHJ1bmsKKzEyMzE5IDQ1N2NiODY4YzI1ZTQ1YTQxYjdhZDJmM2VjNDMzZjAwODU0ZDQwZTYgbGVnYWN5LXRydW5rCisxMjMyMSAyOGQzYTlmY2I1NzdkZmM4NTYyZjE4NDliNGRkYzRlNGI2MTg5Y2E1IGxlZ2FjeS10cnVuaworMTIzMjIgMTdlNGQ4MTk0OWI5ZjFlYzAzOTRjNjEwNmE3ZjkyNzQ5ZWIxYzQyMiBsZWdhY3ktdHJ1bmsKKzEyMzIzIGJhNjNjNmY2MDI1YjRmMjM1YjEwYTAyMWE3NDg2YmY5MmRmOWFlZGEgbGVnYWN5LXRydW5rCisxMjMyNCA0ZTk1MDY1YTcyYTFhNmYyZDczYzk4ZTk2MGYwNDJmNTJlODM2MDg1IGxlZ2FjeS10cnVuaworMTIzMjUgNWJkZjkxNjUxMzc3MjZlYjc3YmViNmU0M2IzOTE5ZDJkMDkxZDgyYiBsZWdhY3ktdHJ1bmsKKzEyMzI2IGNlMGMxN2NjNzdjZTUwZmU4MzcxNmJlN2MxZTU4NGIyNmI0OGI4YWQgbGVnYWN5LXRydW5rCisxMjMyNyBlZjk3YjRmNmQxODc1ZmM2ZWI1MDBjMzUxMzhjNTIxM2Y5ZjIxMjg0IGxlZ2FjeS10cnVuaworMTIzMjggODAxNTBmOWM4YzQxZmNlOWRhMmZjMTNiM2YwNzE5OTA5MGZmM2JmNyBsZWdhY3ktdHJ1bmsKKzEyMzI5IDEzOTliZWY3YWY2MTM1NWQ2ZWViZWUzNmE2MTQ4NzQwY2NiM2Q5MzAgbGVnYWN5LXRydW5rCisxMjMzMCBhYjU1Njk4YmZmMWNhOWE4YTBiMTE4MGJhNjM5OTJkOGM5YTkyY2RiIGxlZ2FjeS10cnVuaworMTIzMzEgMWRhYmM3M2I3YjBiY2M4MmJkY2RjNmE5N2ExMTU2MWE2MDJhNTM2NCBsZWdhY3ktdHJ1bmsKKzEyMzMyIDYxY2FmYTk3ZWI3N2FmMDY2OWI3MmI3ZjdlZmYyZWEyZTkwZGEzZGUgbGVnYWN5LXRydW5rCisxMjMzMyBlNWNiMTU3ZmYwOTMxZmYwNWUzNmJmM2U5YmM0ZWJjNGFmM2MzOTI1IGxlZ2FjeS10cnVuaworMTIzMzQgODI0MzlkOTk4N2IyY2Y2N2E5MDFjNzFmZWJjN2JlNWZmNmE0N2YxOSBsZWdhY3ktdHJ1bmsKKzEyMzM1IGRkM2M3ZmMwYTM0ZDRiOWNmZjQ4ZmNjNTllNjQxZDBhMThiYmYxYTAgbGVnYWN5LXRydW5rCisxMjMzNiBiMDgyMWIwYmNjZjBmZDVlNDRkMzZlZjI4MGUxYzBiMDg5NTY1Mjg1IGxlZ2FjeS10cnVuaworMTIzMzcgZjc0ZGU3N2YwNTEwZWYzYWE5ZTM2MWQwYjk3NWI5ZDYxODJiYmE2MCBsZWdhY3ktdHJ1bmsKKzEyMzM4IDEzZDBmNjI4YzU3MjI5MGYyYzRkODgxMTQyMDU0NmFhNjg3YWExNmUgbGVnYWN5LXRydW5rCisxMjMzOSBiOGZlZGIyMjZmMDljMTA4NGJhYjZlYmFmY2MwMjM2MDJkZjg0ZTViIGxlZ2FjeS10cnVuaworMTIzNDAgYWFiMGYzNDYzYWYwNmJjMDVjN2I2MTVjZjE1NjAzYTM2YTczYjUwMiBsZWdhY3ktdHJ1bmsKKzEyMzQxIGRkZjNkNTUyMjBiOTBkODIxNTVjYjUyNDlhZDcwMzJjYmVjNDYxOTQgbGVnYWN5LXRydW5rCisxMjM0MiA4NmNiNzdmYjE5ZTg4YWRmOGQzMDZkNzBlOTJhOWViMmI3ZWU0YTk2IGxlZ2FjeS10cnVuaworMTIzNDMgZjM0YmI0N2FhZmFjYWNhZDQzMTdiNjQ4YWI5MzFkMzdhZjc2Nzc4YSBsZWdhY3ktdHJ1bmsKKzEyMzQ0IDQ5NjcwMDM3NGZjNDM4Y2IzNDcwZjk0MGY3Mzg3NjI0OTljYTE2ZTEgbGVnYWN5LXRydW5rCisxMjM0NSA5YTI5M2U3N2M1NTQ2Y2Q3YTE5ZjFkYjBkMjUxYWZmMzY1YmE5OThiIGxlZ2FjeS10cnVuaworMTIzNDYgZDY0Y2UyOTgwMWNiMTcwOWFkMDZiYThmZmQzZTBlNWMzZmM0M2NkYyBsZWdhY3ktdHJ1bmsKKzEyMzQ3IDViYWM1NmZmY2NhOGY4MDE0YjE1YzkzMzI0M2JlNWRlNTU1YWEyYzcgbGVnYWN5LXRydW5rCisxMjM0OCBlMTljZDhlYzIwYTJlOGZlNzNjNmE2MDUwMjg0NGZjZjgyYjgzZTZiIGxlZ2FjeS10cnVuaworMTIzNDkgNWU5ZWY5ZDg1NzViYmNiNTc1NDljN2ZjYTA1MzI0ZTdkNzY1MGNlOCBsZWdhY3ktdHJ1bmsKKzEyMzUwIGVjODBhZDI1Y2E4NjEzMjhhZjUwNjgzOWU5ODU4ZjFiNjExYWQ0NTMgbGVnYWN5LXRydW5rCisxMjM1MSA2YzZlZTNiYjNmY2MyMmRjZGViMDQ3ODM2MTM2NjIyMTYzZjZiM2Y3IGxlZ2FjeS10cnVuaworMTIzNTIgMDE0NzdiMWE3NGY5YzFjNTY3NDE5OGRiOWRkZDU0ODgyOTNlODgwMSBsZWdhY3ktdHJ1bmsKKzEyMzUzIGI1MzBiYzYyZTNiOTkxYjgxM2Q0MGZjYjdkZmEzMTE5YjIwOWQ0YzMgbGVnYWN5LXRydW5rCisxMjM1NCBlNmNkNjgzYTIyZjgxODk4MTdiMDc0MDE5ZTM2M2MzZmExNGQ3Y2Q0IGxlZ2FjeS10cnVuaworMTIzNTUgMzBjMWM0MGNkODBmZDM2OWZjNTNmZjgzMGI3NDJjMjI2MzdlOGRiNSBsZWdhY3ktdHJ1bmsKKzEyMzU2IDFlOGZmOGE4NzkyZWY3Yzk4Y2MyNzE3YjQ2ZjNmOTlmNWViYTgzY2MgbGVnYWN5LXRydW5rCisxMjM1NyBjZGI3NzJhYWJiYTI1ZDUwM2JmZTk4NTc0MDQ3YTg1YzhhYTBjYmE5IGxlZ2FjeS10cnVuaworMTIzNTkgNjA1ZWFmOGNjNmQwZWNlZGEyMTc2ODI2Y2YwODQ0NGMzNzBmYzYyYyBsZWdhY3ktdHJ1bmsKKzEyMzYwIGExNTg1ZjY5MjU1ZGEwMGQwZTFlNDU5YjZkYWZhNzAxOGY0ODM1NTMgbGVnYWN5LXRydW5rCisxMjM2MSA1MWU4NjhlZjNiMzFlNWExOThkYmYyZjRiYzBmNWY5NTQyMjM5OGQyIGxlZ2FjeS10cnVuaworMTIzNjIgYjkzYzM5MGZkMjVkNWYxNGRmZWI3NTQ2MzlmOTgxMzNmZTc3ZjdmZSBsZWdhY3ktdHJ1bmsKKzEyMzYzIGE3ZDFjZjk1ZGFkYzU5ZTY0OTQ3OTE4YmEyOWE0NGNlYThlZmQ3YjUgbGVnYWN5LXRydW5rCisxMjM2NCA4YTY1MzZjMWEwYTQ2MjY4MDYxMjM1YTFmNDQwMzY3Y2FlYzdjYjlhIGxlZ2FjeS10cnVuaworMTIzNjUgNjBmNDI1ODY4NjZlYWYyNTM1ZjViMjRjMTAyOTBjODVhODUyYjU0ZSBsZWdhY3ktdHJ1bmsKKzEyMzY2IDBhYWVhNDg5MDJlNDNiMjc2MDczNDgyMTE4ZDU5MTlmODFhNDFhNzkgbGVnYWN5LXRydW5rCisxMjM2NyBmNzdiOTQxYTBmOTM2ZGUzYmQwMWZmNzM3MTMzMzY1YTdjN2RmY2QyIGxlZ2FjeS10cnVuaworMTIzNjkgYzk1ZmZmOGYxODBhOGQ3Y2M4NmUxY2ZkZWU5Y2UzZTA4OTMzZGI4MiBsZWdhY3ktdHJ1bmsKKzEyMzcwIGE1OGYzNjM1MmM0ZjNmZWRjYzMxNGM3MmYwYmIzYjcyMDlkNDYyYWEgbGVnYWN5LXRydW5rCisxMjM3MSAzM2M0YmE3NzdhM2E3ZDFjYTIyMjQzMzUyNTA4NDllMmVmNzAxNDA0IGxlZ2FjeS10cnVuaworMTIzNzIgZWUzNmUxZjEzMGNjYmI3OWY3ZWI5M2VmN2VhNTJlNDkzMzU2YTE2NCBsZWdhY3ktdHJ1bmsKKzEyMzczIGUzYTc5ZjkzZDFkM2U1OGQ5MTQyOWU5YjE4YWQ5MDdmOWVkZjdhNTQgbGVnYWN5LXRydW5rCisxMjM3NCBmMzUyZWVhNjgzNzM0OTM1YzZhN2Q0NjcxMjU1NmZiMTUyZDRmMGFjIGxlZ2FjeS10cnVuaworMTIzNzUgOWRhNDI0OTM1Zjc4NjczODY4NzE4ZWIyNjc0YzJmN2RkMWRhNDhmZiBsZWdhY3ktdHJ1bmsKKzEyMzc2IDJhYjE4OTU4NWQyMzg2NThjOTNkNjMzZDRkYzdkNmVlMmY3YzNiYjEgbGVnYWN5LXRydW5rCisxMjM3NyA3Nzg2Mjk3ODQ3YWNhMGE2MGMzYTg4YjYyYzdhNDIzYWI1YTFhMDNkIGxlZ2FjeS10cnVuaworMTIzNzggZjc4ZmQ5YjY3Mjg0YWRjNGNhZWY0ZTA1NDhkMzFmNzg3YTgwOTFhNSBsZWdhY3ktdHJ1bmsKKzEyMzc5IDFhYzM0ODVmOWUzZTM2NzZiMmZlOGNkODc2NTMxZmRlZDg4Mzk4ZmUgbGVnYWN5LXRydW5rCisxMjM4MCBlMTRmZWVlNGM0NTZiYzg2ZTNlMjliYTQ4ZjYxMTBkMDE4MGRjZGQxIGxlZ2FjeS10cnVuaworMTIzODEgYjBlZGM4OTJmYzc4MmU5MGIzN2M4OTM3NmI1M2YwZDNmMzAzYTQ3YiBsZWdhY3ktdHJ1bmsKKzEyMzgyIDY1OTM3ZmY3MThkZWZjNWRhZTI5Yzc2MmQ3YTIyOTZmY2NkMzkyODYgbGVnYWN5LXRydW5rCisxMjM4MyBkZTQxZThkODIxMWRkMzVkYjZiZmEyMzkxMDRjN2M5YWQ3NWRkODg3IGxlZ2FjeS10cnVuaworMTIzODQgMzU4OWMwZTU2ZWYyNTE2NjFkMzI1MDI3Y2U2MDg4ZTdhOGJhNmI4OSBsZWdhY3ktdHJ1bmsKKzEyMzg1IDcxOTVlYzI5NmIzZDk0NDAzNDJmYjhhNzg4ODE0ZGJlMTBiZTIxZDAgbGVnYWN5LXRydW5rCisxMjM4NiAxNGRjYmIzNGI5ZGQzYWUzMWYzNzQwYjUxNWRmY2VhM2RmZWMzYmM5IGxlZ2FjeS10cnVuaworMTIzODcgMDMwZWU1MGJkOGQxYjQ4NTgwODg2NDMyYzVhYTI1NThkMzcwZWNlMyBsZWdhY3ktdHJ1bmsKKzEyMzg4IGZhZTZkMjRiODk3YmNlNjRhYmQ5Njc5ODY2Y2ViNDQwYjMyM2Q2MjYgbGVnYWN5LXRydW5rCisxMjM4OSBhZTkwOGVmOTFjZjBjYzU2OThmMWE4YWExNzNkZTgzZTA2ZjNmNDA5IGxlZ2FjeS10cnVuaworMTIzOTAgZGRiODNiMjUyMjZlYjcwM2JmMDAwMGNjMmIzMjk0YzBlYWQ0YTAwMiBsZWdhY3ktdHJ1bmsKKzEyMzkxIDlmMTNkNzM4MGJmODk4MzMyMTk0YmVmMjIyZWE3YzQyOTNiYjMyYTEgbGVnYWN5LXRydW5rCisxMjM5MiAyOTFjMmQwYTk2ODNjNGM4ZTRiODk3YTE5M2ViN2NlZGQ3MjI1NzEwIGxlZ2FjeS10cnVuaworMTIzOTMgNWJkNmRjZjE2ZDQxYWJmYWIwMjk3YjFjZDEzZTA1YzgyYmFkZTNhNCBsZWdhY3ktdHJ1bmsKKzEyMzk0IGIzZmI4NDEwZjZhZTk5MjViOWI3MmYzYzA2YmVjZDNlMDBlMGNlNGMgbGVnYWN5LXRydW5rCisxMjM5NSA3ZTJlNTNlNzQ4Yzg1ODViYmVhOWFkZjM1NTdjMTM0Y2EyODRiODRlIGxlZ2FjeS10cnVuaworMTIzOTYgNGQ4NmI1YTViZjllMjRhODkyMTNiMzBjZmQ5M2M5MzIwNzIyOGYwOSBsZWdhY3ktdHJ1bmsKKzEyMzk3IGEyZDMzN2IyZTIxYmE0YmY0ZGU0MTM3NTYxMTk2MzhiYWVlNDdmMmUgbGVnYWN5LXRydW5rCisxMjM5OCBmODhkMTRhZGVkNzcwNDBhZmRlZWJjZWVmZDI5ZWRmY2Q1M2ViNTM0IGxlZ2FjeS10cnVuaworMTIzOTkgN2JkZWY0YmVkZDVjZTYyODgxMjE1YWFjYWM2MzAyYmE5MDA5NWI5ZiBsZWdhY3ktdHJ1bmsKKzEyNDAwIDkyYWUxMTU1NzNhZjI5YmVmMDQ2ZjY2OTEwY2VkZTU0ZjE4NTJiMjUgbGVnYWN5LXRydW5rCisxMjQwMSA1YWQxYTM1ZjU0MGM2NTkwYmUyMmU5MDA4YTkxMTA2NTExMzgxM2E5IGxlZ2FjeS10cnVuaworMTI0MDIgYmFjOTY1NTUyZjdlNmM0ZGY5NGUzNjIxNDgxZGRhMmI0OWQzYTZlNSBsZWdhY3ktdHJ1bmsKKzEyNDAzIDY5NTExM2M2NTBiYjU5NjJiYTI0N2VlM2IxZmEzNDAyMzc5M2IyNDYgbGVnYWN5LXRydW5rCisxMjQwNCA3YWE1MTUzMjAwNmE5ZTMzOGNkMTY5OWVkNmZiZGE5ODk1ZDViYTI1IGxlZ2FjeS10cnVuaworMTI0MDUgMWM0Njk3MDgwZDA3MTlhZDBlZDRkNGY4NDdkZjViNmJlNTI3Y2YxOCBsZWdhY3ktdHJ1bmsKKzEyNDA2IGQ5NWFmZTg3ZGI0ZGNhYjQyNDBjMjNkZTRjMjg3NmYzMzAxZWMzOTMgbGVnYWN5LXRydW5rCisxMjQwNyA2Y2YwMWVhYjA1YTMyYWFiYzA5ZWQyM2NmMTE5Zjk4MmIyZDU2YWY1IGxlZ2FjeS10cnVuaworMTI0MDggNzgwNTljZjA2N2RlZmJhMGVlZTBhNWJiZTEwOTJjNjIwNDZhYTQ1YiBsZWdhY3ktdHJ1bmsKKzEyNDA5IDExNDE0ZjAyM2FkMGExMzMzMTI0YjZjNTk1YmJiMWFhOWIzMjAzNzEgbGVnYWN5LXRydW5rCisxMjQxMCBhOGEwNzE5OTZhNzNkOTdmYjMwOGFhNDdiODFjMGQ5NDU5MjJjOWYzIGxlZ2FjeS10cnVuaworMTI0MTEgMzdjM2FmZmIwNWJhMjNlZjY4OTAwN2RkOWU2OTk5MGUwYjkwYzg5YSBsZWdhY3ktdHJ1bmsKKzEyNDEyIDE4YzA2ZDM5Y2UyYzJhODdjMTVjZDk1MjA5OTdkYzZlNDRmODJjMmMgbGVnYWN5LXRydW5rCisxMjQxMyAyMGQ5OGNhM2QzMmZhYmFjMGZjZjNiM2I0ZjhhNjc3YTEyNWZmMDI5IGxlZ2FjeS10cnVuaworMTI0MTQgOTAzNDRjMjYxZjI0NTBmNTdmYjBmMGFlMDJmYjAyMGUwZDhkYzI3MSBsZWdhY3ktdHJ1bmsKKzEyNDE1IGI3NGY1NWU3ZDIwOGY3MDc1NDBmNDIzNjViZmI1ZmRhOGYyMmNiM2IgbGVnYWN5LXRydW5rCisxMjQxNiA5ZTI1NTVlZGM5NGY0ODg3ZTAzNjVhYzBjMTI3MjU4MGFjZmI2MzE5IGxlZ2FjeS10cnVuaworMTI0MTcgMjQ4NjE2ZDNlZDEyY2RjOWUxYzViZmVjZjM4ZTJmNzJkOTZmODVjNCBsZWdhY3ktdHJ1bmsKKzEyNDE4IDlhN2U3OGU4YmRmYTI5MjIzNzE2NDUxMTlhOGIzMDI2ODg3MjlkODAgbGVnYWN5LXRydW5rCisxMjQxOSAyODY4NTQ3NzFiMTE5MTFmOGE4NTI3MTNiZDA4Mzg3YzEzNDdjMGM2IGxlZ2FjeS10cnVuaworMTI0MjAgMzdhYTg0ZDI3OGM1NTk5ODRmM2JmNjUyMTBiYTY5ZjJjYzk1ZjY4YyBsZWdhY3ktdHJ1bmsKKzEyNDIxIGE3ODEwMDM3MDUxNWNkMTNmYWJlNGMzNTZlNGYwZjg5YTE3ZmZkYzIgbGVnYWN5LXRydW5rCisxMjQyMiA2MzEyNDhjOWM2MmUxNjIxZmY5NWQ0MzYyODljYjQ2Yzg3ZGU1ZWQ5IGxlZ2FjeS10cnVuaworMTI0MjMgMWE3OTlkMWQ0YjVhNmUxOWMzOGVkMTVkZGZkMzg4MTNmZWU2MTI5MCBsZWdhY3ktdHJ1bmsKKzEyNDI0IDZjMTA3NzI4NDAwMWQ2MTFkOTA1NTQ2MDFkMjY2MzYzOGYyYTJjZDkgbGVnYWN5LXRydW5rCisxMjQyNSA3NmJkYWQyM2ZjZGI4YTc1ZWViMjZmZDIyY2E4NjdjNWUyOTQ1OTFiIGxlZ2FjeS10cnVuaworMTI0MjYgNWIxNzdkNTFiYTI3NTgxM2E5MTIzMmNmYmYyYmY4YTFiMjE5OWRiMCBsZWdhY3ktdHJ1bmsKKzEyNDI3IGE1OGQ4ZTQ0Y2UzMmZkNDY3NDA1MDVkYjdiYjI4YjRjOTlkMGFhMGUgbGVnYWN5LXRydW5rCisxMjQyOCAwNDU1NDAyNjc3YThhZGYxYzc4NDMxMTZmYTk3OWZkYTcxNDQ4NTAwIGxlZ2FjeS10cnVuaworMTI0MjkgMzVmNTY4NDgwNzY0YWZmYjM5NmRhNTA2NWE2OTlhYzlmMDIwNzI3MSBsZWdhY3ktdHJ1bmsKKzEyNDMwIDRiZGZlNWQ4MGE2ZjViOTIzYjVkYmZhZTg1NzI4OTdkMTk4YWRmNWIgbGVnYWN5LXRydW5rCisxMjQzMSA1ZjRkMzJiMWE2NTgzZmZiZjNjZGYxOTgyOWYzN2JkMDlmYmYyY2FhIGxlZ2FjeS10cnVuaworMTI0MzIgZjg2N2UxM2RhNTc0Y2U3YmRlYTA0MjRhYWRmNjRhNzIzOGQ4N2NjMSBsZWdhY3ktdHJ1bmsKKzEyNDMzIDAwZmMxOGFjNmFlYjhlN2YzMjQ3NjE0YWQ2YmVhYjIxY2E5ZGE4OTIgbGVnYWN5LXRydW5rCisxMjQzNCAxZGUzZGJiMjZjMmZhMmVhYWUyZjM3MWRmZTExOTcxMjZjY2NlYjU2IGxlZ2FjeS10cnVuaworMTI0MzUgMTg5ZjFlYzVjNjhmM2RkNjdlMmRhNDhiMjY4ZTM2ZjZmY2VhYTdiZSBsZWdhY3ktdHJ1bmsKKzEyNDM2IDE1ZTk3NjFlNTRkZTFkNTdhYzQ4NjU5NTUzOTI1ZGJhYmE5M2NkMzUgbGVnYWN5LXRydW5rCisxMjQzNyBhZDc0OWZiMGJkNGJkNDViYTk0ODk3MWEyNTRhMDM2N2E0YzVjZDIzIGxlZ2FjeS10cnVuaworMTI0MzggYTY0YTYxNWJiNzU2MzMwZjdiOWQ1YTNiZjBiMDQ1Zjc3MTg5OWUxMSBsZWdhY3ktdHJ1bmsKKzEyNDM5IGM1OTJjMTc3MWRmYjVlNjNmZTdlOWY0YTlkYTI1MGI1NzRiMTBkMDYgbGVnYWN5LXRydW5rCisxMjQ0MCAzMzc4NDNjNmExODM2OWQ1NzUwYmViNTA5MDYwYzRlMzcwMTM1OWQ4IGxlZ2FjeS10cnVuaworMTI0NDEgZmFmMzUxZTMxNTcxZDg4YWU3NjkwMDlmOWY3MGExYTlmNjVlM2Q3ZCBsZWdhY3ktdHJ1bmsKKzEyNDQyIDkzYjllYWZlMWYxZGU4MmExYTIwNzFmODg5MGRkNWE4MjI2OWY1YjUgbGVnYWN5LXRydW5rCisxMjQ0MyAwNmM3ZmZmNTI3NGE3YmZkM2M5YzY2Yzg5MTIwMTIzMzE2NjI4MjQxIGxlZ2FjeS10cnVuaworMTI0NDQgNjI2MzI3YTc4YThlZTM2YTlhNGViMzU4ZmQ0ODA2NDdlNTcwN2Y2OCBsZWdhY3ktdHJ1bmsKKzEyNDQ1IDRkYTFmYWYyOTdhYjhmYTM3NDY0NjFhZTU1NTMwNjI5NGVmYmU4YzUgbGVnYWN5LXRydW5rCisxMjQ0NiAzOTZhMzhlYTliODRmYWNlYjI2YWQ1MzdkNjA2NzZiNmQ3MWQxZjE5IGxlZ2FjeS10cnVuaworMTI0NDcgYzM5YzRiYzQ1ZDM5MWUyZGYxZGI4YTFjZjUxOWRkMzlkZmVjYzNlNSBsZWdhY3ktdHJ1bmsKKzEyNDQ4IGM4NzY2MmVmM2YxZGI1OGEyMzQzY2E0Mzk2NWM5ZDA4YWUwYmFlMTcgbGVnYWN5LXRydW5rCisxMjQ0OSA3Yzk5NmYzNDA0NzIwYTIzNzBjMjM4M2M1YWI0ZTdlM2YzNTgxM2VmIGxlZ2FjeS10cnVuaworMTI0NTAgNzUzOTg1OWU5ODVhMTRhNGFjN2E0NGIwY2M3MTdmZWUyN2NiNTlkOCBsZWdhY3ktdHJ1bmsKKzEyNDUxIDk4ZTM3MzQ3Mzc4YjAwNmNlNmZjYzQ5MjA4ZTIyNGFjYzhjM2MzMTEgbGVnYWN5LXRydW5rCisxMjQ1MiBhZTgzZjYxZDNjZDdlNzE5OWZkNTFhMzQ0YjVkYTE5OGVhZTFmMGUwIGxlZ2FjeS10cnVuaworMTI0NTMgNDA0NjNkNTE0ZjNlYTRiYTQ4YTJjMjY4NDU1MzAxZTFhMGVlZWJkNCBsZWdhY3ktdHJ1bmsKKzEyNDU0IGU1ZDBkZjgyNGJmMzgyNzQ4YzFlMGRiYzRmYzM2YTA1ODY2NWQxOWQgbGVnYWN5LXRydW5rCisxMjQ1NSBjYTI3NDUyNzExMTE2NDAxYzAyMTUyODBhZTRjZDljMDk3OTc3MTdiIGxlZ2FjeS10cnVuaworMTI0NTYgYzQwNGE2YjBjZGIxZTI3YTU3YTAwYzBlMzRlNmY1MWQxYzE1ZGEwNCBsZWdhY3ktdHJ1bmsKKzEyNDU3IDlhODQyYjgxZDljM2U5NGRlNzFhNDFmZGVkYTE1MWUwNWNhZmUzYmIgbGVnYWN5LXRydW5rCisxMjQ1OCA3MTZkYzFkMWRiZmY4OTAxYzI1OTEwMWE4OGFmMGJiOTJlYWFjYjRkIGxlZ2FjeS10cnVuaworMTI0NTkgNTdiY2M2ZWM2MzhmNmViOWNlZDkxMjIyOGI1OTE0MmViOTlmZjY1NiBsZWdhY3ktdHJ1bmsKKzEyNDYwIDI3NTBlMWRlNjgyOWFkMTc5YmUyNDdmMWNiMDlhYzE3ODNjZWIxNDEgbGVnYWN5LXRydW5rCisxMjQ2MSA1NzJlMTMxYWUzNjkwZmI1ZDIwNDc5MDQxYjhkY2U4NGM2ODgyODg5IGxlZ2FjeS10cnVuaworMTI0NjIgOTJhMjVkNTFmZjI2Y2UyNTE1ZDQwZTFmOGVkZWY5YmRmN2M5MmMxMCBsZWdhY3ktdHJ1bmsKKzEyNDYzIDg3OWUzNDkxYjY2MWI4ZTVhNWJlYmE4NjIzYTdlNTY5MTlkZTQyNmEgbGVnYWN5LXRydW5rCisxMjQ2NCA4OTQ5NjBmYTkwYmM3NTU5YjdhNWU3OTMyZWFmMzU4YWVmNGZlNDgzIGxlZ2FjeS10cnVuaworMTI0NjUgMGQyNzkxYzcyMDZkYWZiYWM5YWU4YWQ5YzU2ODdlYzFmYTM5ODdjZSBsZWdhY3ktdHJ1bmsKKzEyNDY2IGQ0NGNiODdlNTAwZGJiYzdhMTg5NWIxMzA4Y2EyZGJhNmNlZmNkYmIgbGVnYWN5LXRydW5rCisxMjQ2NyBjMTA5MWU4MmU1YWFiMDZkZDRkMjU0NzJhMTliNTU4NzI3ZmFmM2M0IGxlZ2FjeS10cnVuaworMTI0NjggMDdkMzMzNDg1YTVlMDhiMjRmNzA3NDlkMzIzYzVhY2FjYTQ1NDY3MSBsZWdhY3ktdHJ1bmsKKzEyNDY5IDQ0MTQ2YzA2ZTdlZDNjNzg3ZWIwMTFjZTQ3ODI3YWJjMDEyODg1ZWQgbGVnYWN5LXRydW5rCisxMjQ3MCA0ODU1MDJjNDJkODlhNWQ2OGU0ZmZhOTBiMGJjNTc4OGVhM2VmMmNjIGxlZ2FjeS10cnVuaworMTI0NzEgZWU4NGY0NDVlNmQ3YTFjZjhmOGU2OWM1ODhlZGFiOWUwMTY1Y2ZjMyBsZWdhY3ktdHJ1bmsKKzEyNDcyIDhlZmEzN2E3NzBjNjQ3YjY1ODVlNmZkYTMzNTkwMTU0YzJmN2NmZjMgbGVnYWN5LXRydW5rCisxMjQ3MyAwMzkwYWY2YWNmN2ZhOTg5NWNkYmZkODQ2NDFhYWI2Y2FmMDY4MGZhIGxlZ2FjeS10cnVuaworMTI0NzQgMTlmZGFmMzY3ZDQ1YjZkZDI0MWYxMWQ5ZWRhMTExY2U5NmE2N2NjMSBsZWdhY3ktdHJ1bmsKKzEyNDc1IDRlYzNiM2NiMDdjOGExZWEwMjUyZDcxNTU2ZTFiZmJlN2MyZWUzNjEgbGVnYWN5LXRydW5rCisxMjQ3NiA2MmZhMDNhMzMzYWFmZWRjZTcyYzhlZTllMzdiOWMwZjZhMjMzZTUxIGxlZ2FjeS10cnVuaworMTI0NzcgZjFhNTIwZDI2MzFhOGVjZGJkMmMyNDllYzMwN2YxZDE2Y2FlZjEwNiBsZWdhY3ktdHJ1bmsKKzEyNDc4IDRlMmVmZjk2OGNmNWM2NzFkMTJhNWNmZTQ1ZGM5Y2M4MTQzNmNjYWQgbGVnYWN5LXRydW5rCisxMjQ3OSBmOGZjOTFiMDE3YTE0MzE1YWZiZGU1Y2YxNDY0MzY5MzQwZmMwZTM4IGxlZ2FjeS10cnVuaworMTI0ODAgZjZiMmYyMGRhNTgxNjdkYzg2NjYxNmU2YjcyMzAyODEzZDEzYWU3OSBsZWdhY3ktdHJ1bmsKKzEyNDgxIDQ4OWVmN2Y2NDA0MTBiMmNlN2YzZTk4ZjhjOWVjNjUwMGFkMjkzZTggbGVnYWN5LXRydW5rCisxMjQ4MiBkY2JlNzJhMGIzOTI2Yjk0MmU2YWNhOGEyYTVjZDJhYTI3ZDI4ODg0IGxlZ2FjeS10cnVuaworMTI0ODMgNzU5MTIxZTNkOWI2ZDY3Mjk1ZDg4YzE3ZGFhMDljMWRlNzUyOGRlYiBsZWdhY3ktdHJ1bmsKKzEyNDg0IGFkZmFjYmNiZDkzNjFjOTI5ZTJkZmU0NDYzNTkyNjVjYmE5MTNkNzMgbGVnYWN5LXRydW5rCisxMjQ4NSBjODY2ZjE2NjMzMWJiNjY1NWY3Zjc0YTc2YjNiZmRkNDFhOTk4MWIzIGxlZ2FjeS10cnVuaworMTI0ODYgNGFmMzhhNDVkMjljOGM5MjBhODZiZGU5YmQ2MWYwMzFlMzVmOGQ2YyBsZWdhY3ktdHJ1bmsKKzEyNDg3IGE2Y2I4OGI1ODE2NTIzZjM5MzYxNTIxYjJmZmZjOWE0NmU5YThjZTggbGVnYWN5LXRydW5rCisxMjQ4OCBkNGI4ZGRkOWE0ZmQwZmQ3ZjIwNDIyYTY3ZWMzZDFjYjhlM2FkNDI3IGxlZ2FjeS10cnVuaworMTI0ODkgYjdiY2MyY2RhMWIzYjI2MTgyZjI4YWVkOTAwNWIxMTM3ODNmNzc2NCBsZWdhY3ktdHJ1bmsKKzEyNDkwIGNmYmNhYjgxNTBkYTkxNzQzMDQ3YmEyYWVhNmE3YTU3MTNiZTI1MmQgbGVnYWN5LXRydW5rCisxMjQ5MSA3OGZmMjAzZWFkMjQ1NGQ0ZjBmNjZkY2I0YzZmZWFkMjU3N2Q0NmM0IGxlZ2FjeS10cnVuaworMTI0OTIgMTI0ZWY2OTRjMjg0NDNlNDIwNmYxNDg4OWM0YWQyMWZmNjM5NWY3NyBsZWdhY3ktdHJ1bmsKKzEyNDkzIGRkYmJlZDhjYjgzMGVlNDlkYWM4N2M1MmVhOWY3MTZhMDlhZjEyNDMgbGVnYWN5LXRydW5rCisxMjQ5NCAwMDljOWJhOWY2NThiMjU5YzdkY2NkZTQwZDg2ZDZhYjEyODZkOTgyIGxlZ2FjeS10cnVuaworMTI0OTUgMTZiZDBmZGUwOWFlY2I3MjM2N2Y1NWNlN2U2OGQ1MjEwNjQyOGFlNyBsZWdhY3ktdHJ1bmsKKzEyNDk2IGE3OGQzMDU2YWI2MTA0YjM1MDJmMmQzNTlkNGNjMjM5NDRkNTBhY2MgbGVnYWN5LXRydW5rCisxMjQ5NyBiZGRlOGZiYWVhNThjN2RjZTJmNmViNmE1N2RmNzNhZGI1YWE3OGJiIGxlZ2FjeS10cnVuaworMTI0OTggZWVkMGNhY2Y0YzY0ZDhmZjFlY2EzN2YxNWYzNWVlN2YzYzI0NDJmMiBsZWdhY3ktdHJ1bmsKKzEyNDk5IDhjNmU3MDViNmI5NzFkNDIxMjZiYTMwMDYxODIwNjI4MTNmNWVmNzcgbGVnYWN5LXRydW5rCisxMjUwMCBhMWJjZjNmMjlmNjZkZjVkNDYzMzI4Njg0MWJjNTk0ZmE3NWM2YTI4IGxlZ2FjeS10cnVuaworMTI1MDEgYzBkYWZmZTQwMDM0Njg5ZmNkMjIyZjhlMmM3YTU0NDJhOTE3MjViZiBsZWdhY3ktdHJ1bmsKKzEyNTAyIDQ0MTUwMDAxOWQ1MGFjYzI1YzVmZWI0ZDE1MTZmZGVmNDc4MzBkZWQgbGVnYWN5LXRydW5rCisxMjUwMyAyYjIzOGQxOWFlODhhN2NiYjM3M2M2NTA1NzU0YzBmZDFhMjBlNzMxIGxlZ2FjeS10cnVuaworMTI1MDQgNGFiNWU5ZjgzOWQ5NzQ2ZDlmMmZmOTUzMDg1MWZjN2FlZTkxYjZkZiBsZWdhY3ktdHJ1bmsKKzEyNTA1IDBhNTZlNTA4MjY4MGI5ZjI1NDEwYzE2OWMzYmE3MDdhNWVmYTU2OTEgbGVnYWN5LXRydW5rCisxMjUwNiAzYTQyMDcxN2JjOGE0MmU5NTc1MDFmMDUwMDBiM2IxOTI5ZjdmZmEzIGxlZ2FjeS10cnVuaworMTI1MDcgNzdhOTQ1MzE1MjllYzIxMmE3NGU4YmE4NzQ1MmU2Nzk1ZjU1ZWI3YiBsZWdhY3ktdHJ1bmsKKzEyNTA4IGZlMGI1MjJlNDZjYjNjODYxMzM0OTNiNDJkMzY1ZGM5Mjg2MGU5MmMgbGVnYWN5LXRydW5rCisxMjUwOSBlZjVjZjFhNGU1MmE5YzQ4NTQwYzlmZDM5YzM5MmVkNzc1MzZkMGIyIGxlZ2FjeS10cnVuaworMTI1MTAgNTVmOGM3MDFjOWRhZDExYTU0MWM3MGIwMDM2MTA3MWQ0ZDk0YjVhYSBsZWdhY3ktdHJ1bmsKKzEyNTExIGFiNmRkNzBmMjUwNzZmNjg5MjRhODk5Y2QwZmY3NDhiOTIzOWMwYTEgbGVnYWN5LXRydW5rCisxMjUxMiA0NjcxYWUxMDM1YjM4OTU5OTA5ODM3YWJjNmQ4ZTM2OTQ1OWY0NzJkIGxlZ2FjeS10cnVuaworMTI1MTMgNDJiMjI4ZDc4YmVhZDEyZDMzZTdkMDMwYzRiMzY4NjM3OWU4YzIxMiBsZWdhY3ktdHJ1bmsKKzEyNTE0IDRhMjVkZDg1ZGY2MjJhNWM4NjBkYjk4NzNkNzg2NTQ2NzY1YzMwYWIgbGVnYWN5LXRydW5rCisxMjUxNSA5OGZhNTM1YjlhZjFlZjYwYWYxZmU4ZTc5YTBkYzg4Y2EzMDRmMGNlIGxlZ2FjeS10cnVuaworMTI1MTYgNjM3ZWI5NjFjMTFiZjUyNmI4YzM0MDJlZTc5NzM1YjkxYzUyZTEzOCBsZWdhY3ktdHJ1bmsKKzEyNTE3IDJhMGNmOTY3NzE5Mzk4MzM0Y2ZkZWUyZWU2Njc4MDNjNjRjNGI2NTYgbGVnYWN5LXRydW5rCisxMjUxOCBjNjkxM2M3MzI2ZjA5NmMwMjMwNDJmMTU1MDM1MDMzZDgwM2I2NjZkIGxlZ2FjeS10cnVuaworMTI1MTkgZjI0NTdkNjk3YTJhMjhlMTNlOTM5Yjk2NWVmZDIwNDc5OWU0NzU2ZiBsZWdhY3ktdHJ1bmsKKzEyNTIwIGQ3OTc5ZjRlZDJiNjE2MzU2NWVlYjI4NDc3MzRiZjI0NzNlZTJlNmQgbGVnYWN5LXRydW5rCisxMjUyMSA4MzI3NjY4Y2ZkMTcxNGQxMmRkZmQ4OTk2MTE1ZDkyMDgxMDUzYzM1IGxlZ2FjeS10cnVuaworMTI1MjIgOTQxMjVhMTM0M2Q4MThkZGRiYTAyODZkOGNmNzg3NjUwNmI0MTNmNCBsZWdhY3ktdHJ1bmsKKzEyNTIzIDIxODNmNTA2YTA4ZTFjOGJlNjZiNWVmNmMwOTkzZjZkNDIzMjE5ZTkgbGVnYWN5LXRydW5rCisxMjUyNCAyODE5NGY1MWY3ZmU1NGM0MWNmN2JkMDc3NTI5ZmM1MjAzZDVmMDIxIGxlZ2FjeS10cnVuaworMTI1MjUgODlkY2VhNjNjNDZiZWEwMmI1YzM1ODAyNDdkMzNmNGE5NWM1ZmFhZSBsZWdhY3ktdHJ1bmsKKzEyNTI2IGNhZjJjNjVhNmJjZjI1Zjk2NTBjMzUzMDFjZThlMDYwMjk0YmUxMzggbGVnYWN5LXRydW5rCisxMjUyNyBmNTcyYWUzNmQ1YmFjOWI0NTZhMzlkN2FkYTdlYmNkYjA1NmU2ODk3IGxlZ2FjeS10cnVuaworMTI1MjggNjIwNjg1ZTRjNDc3ZTIwN2E5ZTE4Nzk0N2Y1NjJlMzMxNDdjYmMwNyBsZWdhY3ktdHJ1bmsKKzEyNTI5IDA4MGJkNDZmMzg0ODc5OWNkZjUwMTBlOTdkODI0YjI0NmIyYzAxOWUgbGVnYWN5LXRydW5rCisxMjUzMCAxNjdhZGYzMTc4NmQ3MzQ2MmE3Y2M2ZmFlN2I0NmM2NWYwZTY3ODBlIGxlZ2FjeS10cnVuaworMTI1MzEgMDM0YjQyYmE2OGE2OTkzYThhMWYzYWU0ZjE1NzY3NWYwMGFkYjlhMyBsZWdhY3ktdHJ1bmsKKzEyNTMyIDc0ZDBkMmYzY2IxZGJhOGZjMWE4MTYwY2E3ODA1ZTI5YzZiMzkzYjkgbGVnYWN5LXRydW5rCisxMjUzMyBkZTU2OGVhMGQwNDBlYjYzMGRlZGM1OTJlNjU2ODdhNjg1YTUzMDZiIGxlZ2FjeS10cnVuaworMTI1MzQgMjBlOGEzMzQ0YTBmZjYwY2Q4YzRjNmQxMzU1ZmU5Y2E3OTc4NTYyYSBsZWdhY3ktdHJ1bmsKKzEyNTM1IDEwNTFlZjk5NDMxZTVmZWRjYWUxYzA0ZTc5ZTkxNWVhOTczMDM5ODMgbGVnYWN5LXRydW5rCisxMjUzNiBjOWIwNzAwNzRjODVkM2JjZjJiMzExMGQyZWM0NTliYjMxNzJjODA1IGxlZ2FjeS10cnVuaworMTI1MzcgYjcyYThjNDhmMmQwMDQzZjNmZjA1ODA1ODM3YmEyMDY1ODcwZWMzZiBsZWdhY3ktdHJ1bmsKKzEyNTM4IGY1ZGYyMmZkYWRhODg1OWI4MDFkNjBhZjVhZGU5OGUwMjE2NzVlZmMgbGVnYWN5LXRydW5rCisxMjUzOSBmMTMyZWNmZGIyODU1Nzc3ZjYwNDJjZDUxYTVhZDQ3YWQ3NTVmZTNmIGxlZ2FjeS10cnVuaworMTI1NDAgYmEwM2U2OGRmMGZkNGYwOTBkZDcwNmUxZDg2Mzg0NGIyOGFkNWRiMCBsZWdhY3ktdHJ1bmsKKzEyNTQxIDZkZmY3Njk2ZTM1ODExMmUyYTUwOGRlZjE1ZTUyYTM3YjRjYTVlNjIgbGVnYWN5LXRydW5rCisxMjU0MiAzYWQyYjJlMzFmNTMwOGVhM2ZiMjIzZDRiNWUzNjNlNmEzNDNiMTI2IGxlZ2FjeS10cnVuaworMTI1NDMgMzI2NTJmNjk5NmUzNzQzZTE4YzZkYjY0Zjg0YWJkOWI3ZDllYmIyZSBsZWdhY3ktdHJ1bmsKKzEyNTQ0IGYyYzA3MmIwNTQ2NjU0ZDYyMTRhMDNiNDg1NDhkNTA4YjAyNmZjNzIgbGVnYWN5LXRydW5rCisxMjU0NSAwZGM1MGQ0M2ZiODQ2MzRkZDk3OGVkM2I5ZTg3MTBlN2QyZjEwNTkyIGxlZ2FjeS10cnVuaworMTI1NDYgOGNmNjZiMWQ0MTU1ZWNkMWU5MGMzOTE5MWYzYmU5YjQ5NTRlYWNmMSBsZWdhY3ktdHJ1bmsKKzEyNTQ3IGVlOWE4ZmUwY2ZjYTVmMTEwZDc4Yjg5ZmY0ODM2ODY1MTBlZDNhNmUgbGVnYWN5LXRydW5rCisxMjU0OCBjMDczOWY2NDFiZDFkNTgxYTIyOTIyMjAyNWU0ZTliZWZjN2FmYjdiIGxlZ2FjeS10cnVuaworMTI1NDkgYTBiMDY4OTFkMjg2MDA2NmNlYzk3ZjQ0NmI4NTYzODVkMjE2NDgwYiBsZWdhY3ktdHJ1bmsKKzEyNTUwIDdiODhjMTJiODcwMWNkZTY2MzE1MzQ0ZDUyNjZmZTgwMGQxOTdlZTUgbGVnYWN5LXRydW5rCisxMjU1MSBkY2UxMDRlMWE3M2JiZGNjYWU2NGFhZWU4MTVjYjAxNTE2OTYxMWVlIGxlZ2FjeS10cnVuaworMTI1NTIgNjY4NThmZGY0NjdlYmExYzUyZDYwMzIzZjcxMmRhNDk4ZTg4Nzc1YiBsZWdhY3ktdHJ1bmsKKzEyNTUzIGYwNzIwM2NjMjc0MGE5MTk3MTI3ODk4ZjUwY2JjZDdmNTY2MmVjMDIgbGVnYWN5LXRydW5rCisxMjU1NCA3OTRhMjFhNWFkMzVlMTkxYWM5NmExMjFmZmI0NGQyMjk4NzU0YjQxIGxlZ2FjeS10cnVuaworMTI1NTUgZjMzZWQ5ZTJhNjA3ZmE0YzljZDU4MmE1OTYzMGY3YThkYmU1YTBhNSBsZWdhY3ktdHJ1bmsKKzEyNTU2IDI3Y2M3YTMxNDUwMjY2MGE3NzIzYTUwYjkxNzA5ODVjZTI5ZDhlMzYgbGVnYWN5LXRydW5rCisxMjU1NyA4MGUwYWFiMTcwNWViZDU0MjAyYWMxMzQwMzQ4OTg5ZDg0ZGY2MDI5IGxlZ2FjeS10cnVuaworMTI1NTggYjgyYTYxYTg4NGNmMjg3NjA3YTdlNzJjZTQ2Y2NkZGY4ZWMwZWJkMSBsZWdhY3ktdHJ1bmsKKzEyNTU5IDA3NWY4NzFkODBiNTVlZWFhNTQ5Mzk3ZGZkOWZlMThlMWIzZjg3MTggbGVnYWN5LXRydW5rCisxMjU2MCBlZTYyNTYwODEzNjZkMjgxNWM4YWUxYjM2MzM0OGExMzUzYzUyYjIyIGxlZ2FjeS10cnVuaworMTI1NjEgYzg4YWE5NTkzYTA4ZWQxMTAzMGQ2ZjYyN2UyOGU3OTk4NTBkYTAzMSBsZWdhY3ktdHJ1bmsKKzEyNTYyIDAxNWNiNjIzMWYzZjhlNjZlY2ExZGYwOTQ2ZmQ4YTY1YWY1ZmQ3NmUgbGVnYWN5LXRydW5rCisxMjU2MyBkZGRhNTg1NGUzZWFkNTIyMGQ2ZmEwYjhmNTY3OGQyYTA4MjM0ZmM0IGxlZ2FjeS10cnVuaworMTI1NjQgZDVlNjRhNjE2MzIwMDNjNmM2YTdkZjZjZTgyZmUzNzdjNjdmZDgyZCBsZWdhY3ktdHJ1bmsKKzEyNTY1IDhmZmU0NTA0MjhiMWIzMzkwMTA1YzBjYzk3OGJjMDhiYjlhZTQ5MzUgbGVnYWN5LXRydW5rCisxMjU2NiBkOWI3YTIwODA5NzFiYTMwOWViMGRlN2ZkYzU0OWVjM2RhNTU2YTJhIGxlZ2FjeS10cnVuaworMTI1NjcgNmFiZDg0YWFiMDhhOGU1MjkxYTAyYjI4YjAyMzk4YjE0ZWNmYWMxOSBsZWdhY3ktdHJ1bmsKKzEyNTY4IGQ3ZjQzNGQ3ODRiZjllNjg5MmNkZmU1YzZiY2U5YmFmZDM1M2MyYjAgbGVnYWN5LXRydW5rCisxMjU2OSA3MTAyMjg5MDQyZDVlOGU0NDkwYzRhMjY2MzVmY2U2Mzk4MmU4YTM1IGxlZ2FjeS10cnVuaworMTI1NzAgNmQ2ZjQyN2FiNmVjYjE4MzYzYmY2MmNkYTg0NWIxYWQwMTRhMjM2OSBsZWdhY3ktdHJ1bmsKKzEyNTcxIDVlMDE2NDVlZTQxYjhjMjBjZDZmMDAxMzU5YWRmNjJjNDZmNmY0M2IgbGVnYWN5LXRydW5rCisxMjU3MiAxMzcxNzkxODY5MjdhMDQwYzBlYTgyYWE3M2ZiM2UzMTk2YTg0MGE3IGxlZ2FjeS10cnVuaworMTI1NzMgNjdlZDA1Y2YxNzFkMDhmNTM1YTBhYWEzYmMwZTkzMDg3NDMxOGJhZiBsZWdhY3ktdHJ1bmsKKzEyNTc0IGVjZWJjZDg0ZGYzN2IyYWVmMGUyMjUwNzVlZjkwNzlhMWIyM2E5MjIgbGVnYWN5LXRydW5rCisxMjU3NSAxZTIxZTIyNDUzZGMzYzRjODU4ZDI1ODhkNTk4Mzc3MDFkMTg5Y2ZkIGxlZ2FjeS10cnVuaworMTI1NzYgZDRlOTYzMjUwM2RmZGEzMzA0YmVjYWZiMjUzNWE1ZWM0ODA5MTJkOSBsZWdhY3ktdHJ1bmsKKzEyNTc3IGQ2YmE4ZTVlNTVhZDRjODlhNDg3NjRlN2ZhY2I0MmExNjE0OGE4NGYgbGVnYWN5LXRydW5rCisxMjU3OCBjYmY1NTAzYjMyZDU1OWI2M2IzYzExOWNhOTUxNDk0NzZmZGQwNDIwIGxlZ2FjeS10cnVuaworMTI1NzkgODBiMjE1MjQ5YjE3ZDUxYjI2NTBmOWJhMGU4OGY3NTkzNGJiMWZmOSBsZWdhY3ktdHJ1bmsKKzEyNTgwIGMzZDUwNjc5NDk2N2RmODQxY2MyMWI5ODlmM2NjNmE5MjNiNjk3ZjUgbGVnYWN5LXRydW5rCisxMjU4MSBiYzM2MDJhODNhZDMyOTViMmQ2M2Y4YThiN2NiM2EyZTFmZDVmOGE3IGxlZ2FjeS10cnVuaworMTI1ODIgNmY0MmM4ZmU4NzViN2RlMjI1ODQ3NWYyNDY1YmRjZjFiNjgwNzBhYiBsZWdhY3ktdHJ1bmsKKzEyNTgzIDQ4YWYyYzZiNzQxZTljODBjZDMwY2FhNjRiNzk1MTYxMDczOGI0MjYgbGVnYWN5LXRydW5rCisxMjU4NCBiNTQ1NGRjMjJkY2I4MTFmM2YyMTI3Y2NjMDdlYTVhMmIzMmZjOTVhIGxlZ2FjeS10cnVuaworMTI1ODUgNDg5NGRjZWExMjZiNDA3OWRjNjBlMjA3OWFkNWQ2NTI2Mjg0YzU2MiBsZWdhY3ktdHJ1bmsKKzEyNTg2IDU4MjNiNjE1YzMwMWUzYmI2OWZmOTkxN2Y0MDgwYjYwNDA5YWEzMTMgbGVnYWN5LXRydW5rCisxMjU4NyBkM2U0NGU2MTBlYTE0YjIyN2QwMGYyNTUxZWY3Zjg4YjY3OTIyNWM2IGxlZ2FjeS10cnVuaworMTI1ODggYzcxNDRlN2U4NDk0MjA1MDRmNDIzZjcxZDI5ZDlhZjExMDlhY2ZhNSBsZWdhY3ktdHJ1bmsKKzEyNTg5IDllZmE0MjQ0NWVjOWFmZWVlMzJiOWIwMWNjY2JmM2ExMmNhMmIyYzMgbGVnYWN5LXRydW5rCisxMjU5MCBmNWE1NWQzMjc2MDgzZWJjNTAxYTRjOTdiOTA0NTRiMjU5NWNlNjlhIGxlZ2FjeS10cnVuaworMTI1OTEgMmE5ZWYxZTBmNTQxZDlkZTE4MTUzZGY4MjE0OGY4MWVjYTliNDMxNSBsZWdhY3ktdHJ1bmsKKzEyNTkyIGFhMDMzNjUyN2M0ZTk1NjMzOTRkYjA0YTIwYThmZDQyZDQ2MWU3YmYgbGVnYWN5LXRydW5rCisxMjU5MyA5NjU4NmRiMzc5ZmJhOWQ5ODRjNjM2ODY0YjQwZjdiNDRhOTg5ODdmIGxlZ2FjeS10cnVuaworMTI1OTQgNTc0MDc1ZTlhMjVmNGRiN2I1NDYxOTU3ZjVhM2Q3YzZmYTYwOWZiZSBsZWdhY3ktdHJ1bmsKKzEyNTk1IGQ4YzQzNzhlYjg3ZGFiZTk0ODMzNzUyMDU1YmIwMTY3YmIxYWVmMWEgbGVnYWN5LXRydW5rCisxMjU5NiAxZDI4YzdlMTY2MzY1NzMxNWQ4YmExZTEyYjNkZDgxZjIzZmVhMTc0IGxlZ2FjeS10cnVuaworMTI1OTcgN2VhZDRhMDQ0MjdlODg0MDJjNzU1NmUzYmY0ZTllMjYxYTVlNTIzYSBsZWdhY3ktdHJ1bmsKKzEyNTk4IDNhZTAzYjliNjVlZGMyYTA5ZDhmYjRkZGNiZGQ4MDQ2NTU4YTkxNjMgbGVnYWN5LXRydW5rCisxMjU5OSBmNWYxYjVlOTgxNGE0OGVhMmVjY2IxYzE0MTk3NWNiZDA0YmJiYTNmIGxlZ2FjeS10cnVuaworMTI2MDAgM2Y3ZGMzZGUwNjE3MGQ0OThjMTZjYjAwMWI1MDc1NmFlYjYxMmE0NSBsZWdhY3ktdHJ1bmsKKzEyNjAxIDlhM2E0NjkyOGRiZmViOGZiMmMzOWVmY2FiMmMyOTkyYmZlMzg5ODMgbGVnYWN5LXRydW5rCisxMjYwMiA5MTg0ODYyYmQ4ZDFlOTJkYzIzZjdhNmYwYWY2NzM5YmRlMjBmNzM0IGxlZ2FjeS10cnVuaworMTI2MDMgNmIyOGI1ZjE5N2NmYjA0ODJkMDRlMzA4MTVhY2E0NDFmNWIwNjVjZSBsZWdhY3ktdHJ1bmsKKzEyNjA0IGM3ZGZkNjE5MzUwYmM3ZjRhOWMzNzg5YmM2NGE3MDdmMGI4YWVmZDQgbGVnYWN5LXRydW5rCisxMjYwNSBlZmYwOGJkODE2NWQ4MmFmZjJkNzMzOTc2NTQ0MTA1YmE0OTg4YTMxIGxlZ2FjeS10cnVuaworMTI2MDYgNThlN2NjNWEzODQxMzAwY2E1YWIxMjZhMGY0ZDRmZmY0ODQ4MzMxMSBsZWdhY3ktdHJ1bmsKKzEyNjA3IGU2YmJhMDJmZjYyNDY4NGJiMDc2Y2Y3MWQ2ZjhhNTRlODkxOGQ2YWEgbGVnYWN5LXRydW5rCisxMjYwOCAxNmFhNzM1ODhkOTNiNjhmNTAyMDNkMjFhOGFkOTY4NzViMDdmZDQxIGxlZ2FjeS10cnVuaworMTI2MDkgNjk3ZTBjOWQwOTQwZWM5NTNjMDM0OGU4YmQ5YWU4YTA5OTMzOWNiYSBsZWdhY3ktdHJ1bmsKKzEyNjEwIDUyZDU3Y2MwM2Y0MjllODJlNDdlYTI1Yjc3YzA4ZjhlYTIxZTc2NWYgbGVnYWN5LXRydW5rCisxMjYxMSAzZDU4N2U2NTNmMmQ2NThkOThlMTE2MTc4NDhjMDkwOTFlN2NhZjlhIGxlZ2FjeS10cnVuaworMTI2MTIgMzFjMTEyNTk0YWI2MzdhZThiNGMyZjlhYmJmYWQwZmM2YzliODY3NSBsZWdhY3ktdHJ1bmsKKzEyNjEzIDNmOTM4NTg3ZjJhM2YwMmEwOWVlNzBjZGUwM2E2ZGE1NzU3ZDUzMzUgbGVnYWN5LXRydW5rCisxMjYxNCBhYmY0OTMwNjQ3ZTI4MjJiNzgwZjdkNGMwNjU4Mjk0ZjdjMTRlODY5IGxlZ2FjeS10cnVuaworMTI2MTUgZTlmNTk4NWI2ZWE0NjRmODFjYWQzYjI0OTNhMTVkZWNmNDMwNmE1NSBsZWdhY3ktdHJ1bmsKKzEyNjE2IDUwOGE2MzlkOGZlYjM1YWY2MjNkNTM1M2IzM2VhZjY0MDc1NWQ1NTggbGVnYWN5LXRydW5rCisxMjYxNyBhOTk4ODVhZjM5Zjg4YzRlZThlNTExMzMyZTkyYzA4N2YzNzczYjJjIGxlZ2FjeS10cnVuaworMTI2MTggNDllN2UyMTg0OWIzY2M1MWZkYjY1YzVhNDFlODE2MmI1NzkzYTM2NSBsZWdhY3ktdHJ1bmsKKzEyNjE5IDMxNDVkZWY1ODNlMmNhMTRlMzk5YTljNzI0ZjQwNmJiMWVkOWQwOTkgbGVnYWN5LXRydW5rCisxMjYyMCBhOWZjNzM5OGNlN2JiZjdmNjY3ZmRmZjJmMDMyMTRlZDhhMmUxOTVlIGxlZ2FjeS10cnVuaworMTI2MjEgYTYzYzljM2U5ZWNjMDFkNGY3NTM2YmUyMmMzNjU5YWQ5ZWI5Nzg3NCBsZWdhY3ktdHJ1bmsKKzEyNjIyIDViMTU2NDJlN2JkZjRhMjhkNzc3NzhlODQ5OTFiZmMxZmU5ZmRmNjggbGVnYWN5LXRydW5rCisxMjYyMyBiN2Q4MTI1YzI0MTdkODdkYzNjYjA0Y2JkOGJjNzNjNWNhNzAyYWE4IGxlZ2FjeS10cnVuaworMTI2MjQgY2JiM2IyYzU1NWQ3YTcwYTE2OTY0MTJjODc5MTBiYTE2NWQ2Yzg1YyBsZWdhY3ktdHJ1bmsKKzEyNjI1IGJjMjg3YzZjZmEyMzBmMDU2NmUwNGY2NzNkNGJiMTBjMjdiZWM1NTAgbGVnYWN5LXRydW5rCisxMjYyNiBmYjk2NjU2MmRiMGU2MWU2MTFlY2EyNjY4MTNlMDdhNmNiN2NhNDYwIGxlZ2FjeS10cnVuaworMTI2MjcgNjQ3MjhhNTFjYjU1MWU4NmI0M2NlNjE0MDE4YmYzMDM4M2Y3ZDg5YyBsZWdhY3ktdHJ1bmsKKzEyNjI4IDg5ZjY1NTZmMDU5ZWI2ODNjMGYzNGQyMjdhNjdkZjAxNGZmODA1MzcgbGVnYWN5LXRydW5rCisxMjYyOSBiYWZjZDdiNjIzMjc1Yzc1M2UyZDVmOTU1MTI2OTU2Y2FhMmIyNDFlIGxlZ2FjeS10cnVuaworMTI2MzAgMGRkNGZhZmVmZDZjNDhhNGMzODZjODI4ZDZlZGI2Njk0NGM1N2U5NyBsZWdhY3ktdHJ1bmsKKzEyNjMxIDhiNTVjNTE1NjgzZDkyN2NhYzMwYjBiZmM5NGEwMTU5M2YwZTY0MjMgbGVnYWN5LXRydW5rCisxMjYzMiBlNTY5ZjliMGQ5NjlhMTFiNmVjN2QxOWUyZjFlNmY2NTM0Y2FlMTVmIGxlZ2FjeS10cnVuaworMTI2MzMgMWFjMmE4YmI3ZGMxMDg2NGMwOWE5NzBhNTMzMGIxM2QzZWNkNDI3NiBsZWdhY3ktdHJ1bmsKKzEyNjM0IDY0ZTY0ZWYwOGQxYzkxMTU2YWIwNzYzNWYzNjYyNzAxOGRkNGFkYWIgbGVnYWN5LXRydW5rCisxMjYzNSA1NzE4ZTgzMDIwYWU5NWU1M2JiYmQ1MTFiM2E3NmRjZWFhZjliYTkzIGxlZ2FjeS10cnVuaworMTI2MzYgMTM5ZDVmMWE2Zjg5OWQ3Y2IzZjA5ZDdhNWZkNzVhNjhkNDc5YjVkMSBsZWdhY3ktdHJ1bmsKKzEyNjM3IDBjMDdjMGRiZTMyODJjMDRiOWQwNzVlNTUxZGM0YWQ3ZWFmMTVlN2EgbGVnYWN5LXRydW5rCisxMjYzOCA2NTczMTY5OGM2ZWRmNGE3NmFmNmUxNDZlYjI5NGM4M2VkNzgyNTU0IGxlZ2FjeS10cnVuaworMTI2MzkgNDljZjE0MTI0NDVmMzIwOTYwYzAzZjFhNDA0NTdmY2RiMTdhOWFlMCBsZWdhY3ktdHJ1bmsKKzEyNjQwIGIyMTkxNWU2NTg5ZTA0Zjk4ZmMxMzdhYmExY2Q1MTI2YzM2OTQ5OTEgbGVnYWN5LXRydW5rCisxMjY0MSBiYzAzNDc2NDNlY2ZjNmNhYjk1YjgzNTE1NDYwNzExNDkwMDYwYWNlIGxlZ2FjeS10cnVuaworMTI2NDIgOTIzMjM2MTI5NGJiNjkyNDVmZTFjNWNmODgzNjMzMTQ0ZjYxODc2NSBsZWdhY3ktdHJ1bmsKKzEyNjQzIDA5OTAyZTEzMDUzNzM0NGUzY2ViMjFjMTYyNDYxMjcyMzYzMmMzNDkgbGVnYWN5LXRydW5rCisxMjY0NCA1YmRiNzJiMTk1N2UxNmU3YWI4ODczZGMwMjA0ODI0ZmUzYmI1ODE1IGxlZ2FjeS10cnVuaworMTI2NDUgM2M2OThiNTNiZTU5MjExNmZiMzBkMjg3NjY0MDcwNDZiODA4NWFiMiBsZWdhY3ktdHJ1bmsKKzEyNjQ2IGFiZDNmMDY2Yzg3YWM1MzlmNTRiYzJmOTA0MjFkNmJhNjJkYTk4ZmYgbGVnYWN5LXRydW5rCisxMjY0NyA4Mjg0OTI3MDI1YmU2ZmQyYjRhZDc5YzUzMmE1Njk5NWRkNTliZDJlIGxlZ2FjeS10cnVuaworMTI2NDggYmQ0OWY5MWQ1OWIyZDMxYTQyODk0NWM4NDM3ZTE2ZjU5ZDQ2Y2Y2NyBsZWdhY3ktdHJ1bmsKKzEyNjQ5IDNhYzdmMDA2NjM3NWZjODYxZjM0OWIxZDAxMTFlMmRmMDQyNjRkODEgbGVnYWN5LXRydW5rCisxMjY1MCBlNDBiY2Y2YmMxYzhiYTM2MDZmNDE4ZDAzZTI2Nzg0MmQzNzEzOTMzIGxlZ2FjeS10cnVuaworMTI2NTEgOTU5ZTgxYjM5YjgxMTIyZjY3MzBhODY4ZmIyNWVhMjU2Y2U0NWMyZCBsZWdhY3ktdHJ1bmsKKzEyNjUyIDlhNmMzZGMxZGNkM2YwZTE0ZWNlYTY4NDM0N2Y4MjcxYmY0YTgwNzggbGVnYWN5LXRydW5rCisxMjY1MyAxZDNmZTdjODhjYzhjNDMzZDhlNTJhYTU4YzJkNDMyYjA1ZjI2NmQ1IGxlZ2FjeS10cnVuaworMTI2NTQgNjJkYzlmZjljZDRjMzkyY2NkZWQxNzU5ZmIwOWI0YTg5MTI5MmIyMCBsZWdhY3ktdHJ1bmsKKzEyNjU1IDlhYTQzOTBiZTM4YjdjMGFjMjhhZTFlNDNjYmEzMjYzZDMxZDM0OWMgbGVnYWN5LXRydW5rCisxMjY1NiBkMzdmMDMxMjRjNTRmODIzZjRiMmNhZjk0ZWM1ZWE2MzI0NjUzOTUxIGxlZ2FjeS10cnVuaworMTI2NTcgODQ2NGUzMTM3NmVkOWJmMWEzMGI4NzMwMGQyYjhhYWU3MmZmNDlkMiBsZWdhY3ktdHJ1bmsKKzEyNjU4IDBmN2Q2OTRiYzMzNGVmZjBmMWNjMDAxMDMxMTVkNGEyYzU5MzQyYjYgbGVnYWN5LXRydW5rCisxMjY1OSAxMzIzOWI0OGM0NjljMWE4MjkxYzA1ZjkxYzczYjIyN2NmNWI2N2MzIGxlZ2FjeS10cnVuaworMTI2NjAgNjI1YjdjZWJmZGUyYjJkOWQwM2Y4OTMyMjljYjQ5MDQxZTkwN2Q3MyBsZWdhY3ktdHJ1bmsKKzEyNjYxIDNiN2I2ZDVmMTkzMTY3ZGM5ODRkYWIwYmMzYTI3ZGRmMzU5MmNmMTQgbGVnYWN5LXRydW5rCisxMjY2MiAzYmEwMjViYTdmMDk1MDRiNzE4ZTlhMGQ5MGFiYjFlNGQwN2FiYWM0IGxlZ2FjeS10cnVuaworMTI2NjMgNWMxZWJmMjNmMWQ3N2I0M2RlNDE3M2E1YjM5ZWMxMDdmZmIwYTI5YyBsZWdhY3ktdHJ1bmsKKzEyNjY0IDU2NGYwMzYzMjkxNjI1ZGNjYzRiMzU2ZDdkYjVhYjI2OGI3MzUyZmIgbGVnYWN5LXRydW5rCisxMjY2NSBkZGY4NjFkODRiYmI5MjI4NGIzNDRlMzlkZGRjOGNiYzIwM2E2YTQ5IGxlZ2FjeS10cnVuaworMTI2NjYgMTU0YzY0MDhjM2MyZGRjZDZjYzRmNDE0ODEzYjY4ZGQyZjFlODAwMyBsZWdhY3ktdHJ1bmsKKzEyNjY3IDljOWNmNDU3MmE5NzdlZjZmN2JkZjU5YTc5OGM0YzE4NmUwZTVhY2EgbGVnYWN5LXRydW5rCisxMjY2OCAzZjEzZWU1OTJhNDBmODNlMjkxMmUwMWRlYTdlZWQxOGYxYjNmNDFkIGxlZ2FjeS10cnVuaworMTI2NjkgYmQ4YzQzZGFlZjg1ZTIwNDFhZDk5YTFjMjkxNGI3YjdkZWY2YTc3ZCBsZWdhY3ktdHJ1bmsKKzEyNjcwIDc2MmNmZTk2ZmFmOWQ3MWVkYjdhYWM3YmEwZDNmOWNmN2FiMTFiN2EgbGVnYWN5LXRydW5rCisxMjY3MSBiYTI1YjJkM2Q3ODRkN2Q3ZTU2M2M1N2MwN2QxZTQwZjRmODlkMTllIGxlZ2FjeS10cnVuaworMTI2NzIgN2NmOTc2NThjYWU3ZTM2ZjM5NjM1NDMwNjc1OGE5NjA0ZTcyMTI5NCBsZWdhY3ktdHJ1bmsKKzEyNjczIDczZTVlM2Y1MWI4NzRmYzk3MzliMDJhYzI2MzdhMDNiNzU1NjEwM2UgbGVnYWN5LXRydW5rCisxMjY3NCA5NjU1MGI1ZDA5ZTE0YzJkNjhmNWJiNzAxNTc3NTNhNTEyMjA0NzM0IGxlZ2FjeS10cnVuaworMTI2NzUgNmExY2I2ZjM3YTUyYzViNzBjNDNlY2JlNWJjMzAzYWNlZjc3OGUzYiBsZWdhY3ktdHJ1bmsKKzEyNjc2IDc0NGRiODZlMDMxMWFmZGY2NjM2NGQwMTM4OTQ2NmI2MTNjNjkwY2YgbGVnYWN5LXRydW5rCisxMjY3NyA0OWQ3NzZmMzg3OGQ4ZGQ1MDQ1N2FjNjU3MTU1ZGQzMTU2ZjA3NDIzIGxlZ2FjeS10cnVuaworMTI2NzggYTc5ZGNkMjdiZGMzYTZiNWY5ZmE5MDgzMzY0MTBkOTRkMWY1MmE2ZSBsZWdhY3ktdHJ1bmsKKzEyNjc5IDM1ZjkxY2FlYWE4ZGEzNzU0NzNmODQ2NjdhYWMzOTg1MzE0MGIwNjIgbGVnYWN5LXRydW5rCisxMjY4MCBmMGE1N2NjZjIzM2NiMzU2ZDk3ZTM1MTIyOTI4ODYwMjUxYWJjYzU2IGxlZ2FjeS10cnVuaworMTI2ODEgMDRiODgwNDJhOTJiOGZjMmRjODViMGFlZWRiZGRhODYzNGExNDExNiBsZWdhY3ktdHJ1bmsKKzEyNjgyIDAwNWJhNDEyYThlY2I1MmE0MDY5NTAyYzZhYjlkY2UzMmM2YjU5YjUgbGVnYWN5LXRydW5rCisxMjY4MyBiODkzMmFiNDFhZGQ0ZjIwMWNmOTNiMGJlN2Y3ZDkwNjcwYmRmNTllIGxlZ2FjeS10cnVuaworMTI2ODQgNTUzOWFlYmY4OTM4YTg2NDU5ZDFjZTY1ZDE4MTEzZDU1YzAyYzY0YiBsZWdhY3ktdHJ1bmsKKzEyNjg1IDZkYmNkNWE2ZTVlNjE4Yjc1MWIxYmFkMzVkM2RmNmEzNjhiNTI3ZDEgbGVnYWN5LXRydW5rCisxMjY4NiBkODY0MDA1MDBhYTAzNzMxNTM1YWUzN2FmOGViOTUxN2NmYWQ5ZjRjIGxlZ2FjeS10cnVuaworMTI2ODcgYjI2ZTI1MTU4OTIyZWY3ZDIzMmU3YzBjMWFkMzVmYzRhMjllMjMyZSBsZWdhY3ktdHJ1bmsKKzEyNjg4IDYyZTYxMDU4NDgwYTM5OTMyZmQyNGJhN2MzZGIwOGY4YWE2NzdjMDcgbGVnYWN5LXRydW5rCisxMjY4OSBlZTFkMzJmN2EwNTVmMGI4ZDFiNTc4Nzg2M2NlNDAyMjM5N2I5YWYxIGxlZ2FjeS10cnVuaworMTI2OTAgNjYzM2MzZmNhNjI2M2YzNmVhNjEwYmRhNzQxNWE1N2YzNzkyNTYyOSBsZWdhY3ktdHJ1bmsKKzEyNjkxIGJkMzBkMzk3OTdhNDA5ZWJkM2JkYWE2MGFiMGUyZTU4ZGUzYzQ1ZmUgbGVnYWN5LXRydW5rCisxMjY5MiA4ZjRhZDE0YzM0MDczY2M4ZWMxNDc1Y2QzMDVmMWZiODFiMTg0YjE4IGxlZ2FjeS10cnVuaworMTI2OTMgYjBmMDRiN2M5NDA3MWU3MmQ4YTk2MWNkMzI1MTY4YzA0MTU1ZDE5YSBsZWdhY3ktdHJ1bmsKKzEyNjk0IDRhZjg0Y2RjZmRiNTNkMjA5YjQ2YWMzNDM3YzMzNDE1YmE3MzNjZmMgbGVnYWN5LXRydW5rCisxMjY5NSA2N2YxZDZiZDU4Y2ZiYTEwOTMzZWQ1NDg1ZGY2OWNiMzEwYmY5MzE5IGxlZ2FjeS10cnVuaworMTI2OTYgMWQ5NDI0OGZlMmI5OWEyOTllNDAyYzQ2NGJhNjI1YTI4MzU5NDVmMiBsZWdhY3ktdHJ1bmsKKzEyNjk3IGEzNjk4NjU2OWFmMThkNjg0MWQ5NjE2NjVmZDdiYzgyOTQxNDU1N2MgbGVnYWN5LXRydW5rCisxMjY5OCAxZTBkZDJlZjM5NzFjMmFjYjBkMDc1N2UxNGFlOGU0NWFjZDVjZTQ3IGxlZ2FjeS10cnVuaworMTI2OTkgZGU3YzAwMDM1NzhmOGFhNmUyOWZhZDcwYTc4YWZhZmEyMjkzMTgzMCBsZWdhY3ktdHJ1bmsKKzEyNzAwIGI1ZjA3YTRhNjU0YmYwNzFjMTVjY2I4MzY5NGY1MWY0YzNmZDYyYWQgbGVnYWN5LXRydW5rCisxMjcwMSAyNzkwMjU1NWY2NzIxZGQzYTAyMTFiZTJmNDZjYTNiZDg1YTYwODM2IGxlZ2FjeS10cnVuaworMTI3MDIgMDQ5YzkxMzQzZjk1ODhhZjUwNDE5ZGVmNTM3NmZlNTk2OGE4OGI5OCBsZWdhY3ktdHJ1bmsKKzEyNzAzIGMwZjY5Y2JlODA1ZDE3ZTZhOTQzZWRhNDFkZDNiYzJlNTNhNzBiOGUgbGVnYWN5LXRydW5rCisxMjcwNCBlMWRhMjkwYWNjNWYxMGVkZDAzOWE3YzliZTU4M2QwM2ZhZGU1YTdkIGxlZ2FjeS10cnVuaworMTI3MDUgZGZkZmY4NzI0ODg3NWRmNTZhNDFhM2RjMmZkZmM0NmIyMjAwMWY2MSBsZWdhY3ktdHJ1bmsKKzEyNzA2IGJmNDE4NDBjODE1MDcyMmFhMGI4YjhhYjY5Y2NmMmJiM2M2YzE5NTAgbGVnYWN5LXRydW5rCisxMjcwNyAxYzU5YTk5ZTk5NzBmMDY5NTM0NDk1OTI0YWI0ZmUzODdmMTY4YTNlIGxlZ2FjeS10cnVuaworMTI3MDggMDJiMTcyYTVkODkzZDdhNzExY2E4NjMwYTUwMmNjZGY4OWFkYWMyNyBsZWdhY3ktdHJ1bmsKKzEyNzA5IDI5ZDFkM2IwOGNhN2Q0ZjU5NmUzMTRhYjgxOWQ1ZDY4YWFlNjc5NjAgbGVnYWN5LXRydW5rCisxMjcxMCBhODZmZTFmM2NmNGU2NWIzNzUyNmM5YThhZWY5YmQ5NGU4ODgxZWVlIGxlZ2FjeS10cnVuaworMTI3MTEgZDI4MjI3NGZiYjcyMmZkODU1Yzc5MWY3MTIxNGY3MjM2MTlkZWJiYyBsZWdhY3ktdHJ1bmsKKzEyNzEyIGIxZDQwZmIxMGFmNmNiZDlkZTU4NWFmNjgxNTI3NDBjNWE5MDhhMWQgbGVnYWN5LXRydW5rCisxMjcxMyAzMmI0M2U1ZDg4ZDM1ODFkYTYwMjExOTk2ODVhYzM1ZDBkZTQ5YTdmIGxlZ2FjeS10cnVuaworMTI3MTQgZTMzOTdhZTg4MTI5MjFlODU2MzQyNDY5Y2FhMjFmNTJhMGUyODJmOCBsZWdhY3ktdHJ1bmsKKzEyNzE1IDAyZTEzM2VhYmFjNjk2ZGY2YTdiYmEwMTg4YzI0ZGM0NjMyNmFmOWMgbGVnYWN5LXRydW5rCisxMjcxNiAxZmJjNGJhZTI4Y2YwNTg3MTc0YjFkNzdkNmQ5MGJkNjE5NzgwMjZlIGxlZ2FjeS10cnVuaworMTI3MTcgZDE2ODZjZjA4ZDExNmM3MTdlNWYzNjgzYmU2YmMyZmI5OGJkNDJlOCBsZWdhY3ktdHJ1bmsKKzEyNzE4IDYxZWRkM2I4NWQ2MzY5ZDJjYWM3NDdkZGIyOWYxNDczN2RiNzAzYzQgbGVnYWN5LXRydW5rCisxMjcxOSBjZDQ3NjQ0MmVmNzE1YjYyNGU2OTkxZDE0YzkzZDVlZDUzMDA5ZmJjIGxlZ2FjeS10cnVuaworMTI3MjAgNDc3ZTk4MTA5YzdkNjYxNTE4ODBmYjJjYzMzNWI4NzE5YzQzNWRkMiBsZWdhY3ktdHJ1bmsKKzEyNzIxIGEyOTE5MmYyZDQ3YWZjZjY0MzMwODU3NzlhMzk2OThhZWM2YmZlNDYgbGVnYWN5LXRydW5rCisxMjcyMiAwZWYxMDcxY2I3ZmVlZDkxNzM1NzdiZWY5NTk2YzA5Y2I5YjIzMDAyIGxlZ2FjeS10cnVuaworMTI3MjMgZmViNDE1MDA4NzY1ZTQzZWU2OTEyNDI1OWVkOGQ5M2E2MzA0ZGMwNCBsZWdhY3ktdHJ1bmsKKzEyNzI0IGIzMDA3N2M1NzM0ODU0MmJkNjFlNmQ4MWY2MWRlZTRmYzI0Yjk3NzIgbGVnYWN5LXRydW5rCisxMjcyNSA1NTNlZDZhZTllN2E4NWZhNGY4ODZlMmNlY2RkOWY1YTc5OTkxNjNiIGxlZ2FjeS10cnVuaworMTI3MjYgZGY0YTk2N2E4MTQ2MmViZDJmYzFmZGI4YTY1MDE5NGM0MGQ1YTk4ZCBsZWdhY3ktdHJ1bmsKKzEyNzI3IDdiYmU3MTYzMWMzZjAyODgzYmUzNmU2MWE4ODVjZDAxMmViZThkNTEgbGVnYWN5LXRydW5rCisxMjcyOCBjZDEzMGM5NTU4ZGIzOGI2ZWU2MDljMDg0ZGJmOGQ4MzdiMGVkNDQ3IGxlZ2FjeS10cnVuaworMTI3MjkgYWU2MTM1Mjk3NTc0MmZiOTA2MzkwMjNjYWFjZjliMmRkMTg4MDYzNSBsZWdhY3ktdHJ1bmsKKzEyNzI5IDhmZTdlYzRiNGZjMTUxOGZjYWM4OWU2YmY2NzRmYmJjZTE2MTUwYTkgbGVnYWN5LXRydW5rCisxMjczMSBjZTU3ZWIzMDk2OGE1Yjg5MmM4ZDE3N2NhMDhlNTFmOGE3ZmZlYmM1IGxlZ2FjeS10cnVuaworMTI3MzIgMGUxNDdhNTE3NGExNTIxOWUxNWRiNmVjMzc1MGY2YjAxODk4NmRiMiBsZWdhY3ktdHJ1bmsKKzEyNzMzIGE2NWY4NzU4NDM1NGFlNjZhMjI0ZjA2ZTcwNWUzMmNjMmRiMzE5NTcgbGVnYWN5LXRydW5rCisxMjczNCA4Y2NjZmM2ZDYyNzIzNjc0YWIzZmM0OGYzNjNmZGE4ZmFmZTY0MjFjIGxlZ2FjeS10cnVuaworMTI3MzUgMjQ5ZDlhMmI1YmM5NjhkZjQ5MjlhMWZmODVmZDVmMzM2YWViNjZlNCBsZWdhY3ktdHJ1bmsKKzEyNzM2IDkyZmNlNDE0ZjM4MjMwOGQ0YzZkNDEyZjUwZWFmYTI3NjIxMjExNGYgbGVnYWN5LXRydW5rCisxMjczNyA1NzQ0YTZkYjJkNGY4NDE5NTUwNjI1MDU2NWZiN2VkN2M3NWQ1NGU2IGxlZ2FjeS10cnVuaworMTI3MzggYzVlODM0N2ViODA5YzI4YzU1MjEyM2M1NGU1NDYzMzkxMTQyMWE3ZSBsZWdhY3ktdHJ1bmsKKzEyNzM5IGYxY2NiZDZhOTRjZTMzM2QyYzRmMTNmNDc2ODQxY2I4ZTE2NmNjZTggbGVnYWN5LXRydW5rCisxMjc0MCA4NjY0MmI3YTdhNjBmNTg0ODgwNWM1NjQ4MTJiYzFlOTk1NzU1NzBlIGxlZ2FjeS10cnVuaworMTI3NDEgYzFiZWZkYmQ2NGU1NzIyOWU1MGM1NjU1OTU2ODVlOTY5NzBlMjVhZiBsZWdhY3ktdHJ1bmsKKzEyNzQyIDM1OTI0NGZhNmI1MmFiMGViYmFmOWNmMDMxNzY2NTBlOGIwYmVhNjAgbGVnYWN5LXRydW5rCisxMjc0MyBmMTM4YmE3MmJmMmQ5ZjJlM2U4ZTE4MGUzOTVjMmY3ZmNhNzJlZjdhIGxlZ2FjeS10cnVuaworMTI3NDQgYjZiOTMwMDZkMDc2ODQwMDY3MzMzMDNmYjRmMDgxM2FjMjg3NmQwOSBsZWdhY3ktdHJ1bmsKKzEyNzQ1IDU3NWM0ZWEyNTQyYmMwZTJmNDRiNjNhYWMwYWQxMmY4YjI5NTBmZTcgbGVnYWN5LXRydW5rCisxMjc0NyAzMmM0MjA0NzQyYmFmZDZkM2M2MjI5YWNhMWNjMzZlZGIyNDkxOGNjIGxlZ2FjeS10cnVuaworMTI3NDggYmRiZmUwZWM5NzBmODkyZDZiYjgyMGE1MzBjNWM1YzkyNzFiYzkyYyBsZWdhY3ktdHJ1bmsKKzEyNzQ5IGM1ZjExYzViZjViMjIwMDYxNDgxYWMyYWVlNDkwZjQzNzJjMzAyZDkgbGVnYWN5LXRydW5rCisxMjc1MCAxYTJhMGEzZTlkZGIyZTEyMmZjZmIxOWYxNDc4ODdjNTk4MzEyMDM2IGxlZ2FjeS10cnVuaworMTI3NTEgODk1ZDg2MWEwODcwMWZjZGM4YmJlMmE5YjU0NGM3MWM4ZjRjMGNhZiBsZWdhY3ktdHJ1bmsKKzEyNzUyIGU1OWNhNWQzNDZmNGRmMmM4NDQ2YzNjMmEwMjE1YzNiODcxNTBhYmIgbGVnYWN5LXRydW5rCisxMjc1MyA0N2MxMWU4Mjc2OTk5ZjAwNzhjMDcxZGUyYjk4MzgzYzc3MDJmOTU2IGxlZ2FjeS10cnVuaworMTI3NTQgZDgzOTM1ZDE0MDg0NTY3ZjhlYTQ5ZDY0OGQ4MzU2N2IwZTZkYzNmMSBsZWdhY3ktdHJ1bmsKKzEyNzU1IGMyN2MxMGM2YjlmMjgyNzQwMWQ4ZDAzYWVjODE0MWI0Zjc4N2JiZWEgbGVnYWN5LXRydW5rCisxMjc1NiAxM2I0NWM3NGU5N2I1MzA2NjIyNjFiMmRhMzdlOWFiNWQzMmI1OWUyIGxlZ2FjeS10cnVuaworMTI3NTcgOGZlYjI5NTBkYTdiMjYzMjM4ZmEyYjQwZmI0NjRkOWM0ZTA3Y2M4NiBsZWdhY3ktdHJ1bmsKKzEyNzU4IDA2MTRlN2YxNjc0MWYyYTE1ODhlMjRkNGUyOTBjNDBhMGU2N2IzZTkgbGVnYWN5LXRydW5rCisxMjc1OSBhNDkxM2JhZTlmOTNlN2Y0MTAwMDA5ODI1NjU4ZTYyN2QyMzNiYmNkIGxlZ2FjeS10cnVuaworMTI3NjAgMGNiOGU1ZWE4NGE4ZGFhYzBlOTVkNDQ0Njk3Y2E5NmE5MDJhNmZlNiBsZWdhY3ktdHJ1bmsKKzEyNzYxIDE2M2ZkM2Q5NWMxN2U0MDQ4MjI0YTFjODkyMTFlZjg3MWE0MTBkNWMgbGVnYWN5LXRydW5rCisxMjc2MiAwYTVjZGQ3ZTVmYzNmODUwYTZiZGMxOWVkMmQ1YzQzNDZlNmM4OGQ4IGxlZ2FjeS10cnVuaworMTI3NjMgMjZhMDIwNjBiYWIxNzQxNmNmODI0Yzc1ZjVkZDVhYWY5ZjMzNTU0MSBsZWdhY3ktdHJ1bmsKKzEyNzY0IGI2NGYzMzU5NGEzMTEwNjk4ZjBlYmRjN2NjNTRiYzVjY2YxYzc3ZDAgbGVnYWN5LXRydW5rCisxMjc2NSBlODNmNjc2ZDE1YzI4OWNlYjZkN2M5MDNiNTVjZjBhYjQyMWRhMGY4IGxlZ2FjeS10cnVuaworMTI3NjYgMjk3MDFlMjkwNGFjNTQ5NzA5OWZkMDQzZDAzMTYwNWZkM2YxM2QxMiBsZWdhY3ktdHJ1bmsKKzEyNzY3IGI5YmI3NWRlZDgwNGFjYTU3YmU5NjNhZjJkY2RkNDg1NmFjOTJmNTMgbGVnYWN5LXRydW5rCisxMjc2OCA0ODcwMGY5OWM2YTZkMzFkNTIyZDFjNzRkM2ExMGYzNTIyZTMzZmRmIGxlZ2FjeS10cnVuaworMTI3NjkgMmY0MjVhNTdkOWFmZTcxZWY0NGVkZWY5ZTkxMDMwODNhOGIwYTk4MyBsZWdhY3ktdHJ1bmsKKzEyNzcwIGFiYWM3ZjYyNzU3YzgzMTE4ZjVmM2ZkY2I1ZTgwNzliZDBlYzZhODkgbGVnYWN5LXRydW5rCisxMjc3MSAzNWRmNGRjMmQzMGQ1NDM2MmQ1YTI5MTc4YWFjODgxNWZkZTViYjEzIGxlZ2FjeS10cnVuaworMTI3NzIgMGUzNTVkZmQ2ZjdkMTVjYzMyZGYyNzI4MDY0ZjFhYTY2YzQyM2FhMyBsZWdhY3ktdHJ1bmsKKzEyNzczIDY0YmNhM2JjYWEzNzRmMTc2NTBhMTQyMjJkNjhkMTI3OTI5NDI3YWYgbGVnYWN5LXRydW5rCisxMjc3NCA2NWEyNTM5NzFlY2NlODY2NTNlNTAzMDA4MGNiZmRlNTU3NzhhZjlhIGxlZ2FjeS10cnVuaworMTI3NzUgYTJhNzY4MWIyNWYxZjU5YmVjZWNhNTg1ZTBmYmUxYTM5M2UyODdkOCBsZWdhY3ktdHJ1bmsKKzEyNzc2IDA4ZWFkYzY1MGVmMDk1YzdhNWVkNmZiYWUzZmU4NWRiOWIwMzk0YzYgbGVnYWN5LXRydW5rCisxMjc3NyAxOWQ2MTIxZmU0ZjM0M2M0NjNiZDRjYzM4YWQxYzRmNjcyMDVhOWFiIGxlZ2FjeS10cnVuaworMTI3NzggNjMyYmQzYTVkZGVmNWJkZDA1YzE5M2FmNTU5MzhiYjcxOGFjMjNiYiBsZWdhY3ktdHJ1bmsKKzEyNzc5IGJhNWM2MjkwODEyMjVhMmE5M2VlYzZiNzk5YmRjZDI2Mzc4MmVhZTggbGVnYWN5LXRydW5rCisxMjc4MCA4NjAzNWFlNTMwNmMxMTdhZjdkZmRkMjk1MzY2ZTUzZDhiMjAzOTcyIGxlZ2FjeS10cnVuaworMTI3ODEgNDZhYzExYjc4ZTkyNzgwNTZhYTk2ZTc5NmRhZTdmZDgyZWI4YzMwNyBsZWdhY3ktdHJ1bmsKKzEyNzgyIDg4NmVhMjU1ZjM4MWZmMGM2ZGI3MGUyNzkxMjIyYjJlYjcyMTg4YzIgbGVnYWN5LXRydW5rCisxMjc4MyBjYzlmZDUwNjMwYTY5OWNiMDNjMmFmMGIzMjRmMGI3NDgzMjE5MWZmIGxlZ2FjeS10cnVuaworMTI3ODQgY2VmMmExMzQ1Njk1ZDE4ZjgyMTMwZDYxZDU2MjYzNmNjODFkM2Q2ZSBsZWdhY3ktdHJ1bmsKKzEyNzg1IDAxZGFmYzU3MWEzMDMyODUxODY4YzE1MDVkN2ZmYmI4MWM4MTEyODcgbGVnYWN5LXRydW5rCisxMjc4NiBkM2JlY2U0NjQ4NmUyOWQ3YTJjNWE2MmY5ZmJjMWM1MTFmMzlkZDNiIGxlZ2FjeS10cnVuaworMTI3ODcgMDZkYTNiYTNhYWRlMmU0N2VmNzJiYzhlNjUyYThiYTA0YzJiM2UzYyBsZWdhY3ktdHJ1bmsKKzEyNzg4IGNkNGM0NTEwYWRiZDQ3ZTk4NTMxOWRmMWMwNzBjZjFjNTQ4YzQ2OTAgbGVnYWN5LXRydW5rCisxMjc4OSAzYjgxYTdkNDE4Y2JlZTg4NDc2MzAyNjg3NWNlOTllYmIzODc4NGNkIGxlZ2FjeS10cnVuaworMTI3OTAgM2UzYzA5ZTE0NTAzMWQ0MDM5Yjg4YzlhZWZkYjc3YjBjODcyYjYxMCBsZWdhY3ktdHJ1bmsKKzEyNzkxIDVjMGMwNjFkZTJhZWJhNmY4ZWQ0ZWNlZDYxMzU3ZmY0MDdkZmMxYmIgbGVnYWN5LXRydW5rCisxMjc5MiAxZTc2NmRlNzE0ZGViYjBkMzcxODJlNTgxNjgxODgzYWY2MDFhMzcyIGxlZ2FjeS10cnVuaworMTI3OTMgNWNjNzEyMjY3MWFlYWZhOGUzMTAzNzY3NGQyM2QyOTYxOTk4ZTI2OSBsZWdhY3ktdHJ1bmsKKzEyNzk0IDliZTI3MjZjOWIyNTRjZDhhZGE2YTFlN2VhMWMxNjVmYWMwZTllNTkgbGVnYWN5LXRydW5rCisxMjc5NSAxYzZiMTBkZWE5ZjA1Zjg1NjQ3ZTBhY2FkYjkzMDE2ZDMxMzA1ODQxIGxlZ2FjeS10cnVuaworMTI3OTYgMjZkYjFlOTZjYWYzOTQ2OWZlOThhNzhlNmM2NTY5ZjdhYWJlNTkxYiBsZWdhY3ktdHJ1bmsKKzEyNzk3IGI3ODEzNWIxMGE4ZTFlNmJmMzBjOTU0NzcwYzg4NWI0OTdhZGM0ZDkgbGVnYWN5LXRydW5rCisxMjc5OCAyNGRlZjZjMjViMGEwNTBhZWUxZmJlZDBlMzM3Zjc3MjU4MDNkYjMzIGxlZ2FjeS10cnVuaworMTI3OTkgNTAwMzZkMDZlOTRhYTg0MGRmZjU0NmJiNDlkNWQxOWE4ZmIyY2I5NiBsZWdhY3ktdHJ1bmsKKzEyODAwIDMyNDExYWY4YzAxMjk3NjAzNmIzMWEwOWEwNjg2OWE0MDk1MWNjM2EgbGVnYWN5LXRydW5rCisxMjgwMSBjYzBjOTA2YzI0MTU2NjhkMzE1MmMzZGU2MzY1NDEyNmYyNmVmZTIyIGxlZ2FjeS10cnVuaworMTI4MDIgYTk1YzdkMmE4M2Y3ZDAxNTFhMDQxZDg1ODE3MTFjYjdiZDc5NGRlZiBsZWdhY3ktdHJ1bmsKKzEyODAzIGZkMDliM2ZkMWVkYzRkYTRmOThkMzc3MTc2ZTFiNzc0NGQ4MDUyZDcgbGVnYWN5LXRydW5rCisxMjgwNCA1ZTg5ODljMmY4NWRmZGZhZWY5OTcyNWRjY2VmZmI2Y2I3MmJjNjk5IGxlZ2FjeS10cnVuaworMTI4MDUgODhhN2Q4NTk5MDBlM2ExMzc3ZTgzMmUwNDNmZTk5MmExNjIxYjFjNiBsZWdhY3ktdHJ1bmsKKzEyODA2IGYxZjYzNjRhZGRiZGVkYzE5OTRkZWYwMWNiNTkxZDVhZmQ1MWYyMDggbGVnYWN5LXRydW5rCisxMjgwNyBiNjQ4ZjllOGIzZWRhMjlmYTEyNWM1YTdiYmYyZjU2ODkzNzU1ODZjIGxlZ2FjeS10cnVuaworMTI4MDggNWRiY2RkYmRlZDAwYjJkOGU4MDBhNzg0YjZkMWYyMzhiZGQ0MzE3OSBsZWdhY3ktdHJ1bmsKKzEyODA5IDQyYzlhOGQxMDgzNDRmMTc1ODI3YTU3MWM1M2ZmMDMyZjZkMzVmMDIgbGVnYWN5LXRydW5rCisxMjgxMCBlN2MwOWE2MmJmMWYxYTYyMjZhZjRjODRlZmIwZGEyM2NjNTRmMmE4IGxlZ2FjeS10cnVuaworMTI4MTEgZTMwODkzOTYxMzk4MjdmNzIzMzcyOTc0ZDY3MTZhNGEyMjUwYmZlMyBsZWdhY3ktdHJ1bmsKKzEyODEyIGRiMzJkZWIxM2M5ZjA2ZTA5ZmM3MWFlY2U4NmVhN2Y3ZTdmYjI5NDEgbGVnYWN5LXRydW5rCisxMjgxMyBhNGQ5OTYwNzM0NGYwNzhiODZiNDZjMWZiOWI3NTk4OThkMmFlMGI1IGxlZ2FjeS10cnVuaworMTI4MTQgY2RhZTZjMTE0NWY0YzNiOGU3MjBmMGNkYThmZDE2ZGJlNTQwN2MwYyBsZWdhY3ktdHJ1bmsKKzEyODE1IDFlNTdhZWU1MDU2NTRlZWVjNWE3OTUxMmMyNWU3NWY1OTY4MDMzZWIgbGVnYWN5LXRydW5rCisxMjgxNiBmYTE4YjBmYzBjMTgxZTQzZTk5YWY2YjdlMmUwNzFhMDhhMWFlMmY4IGxlZ2FjeS10cnVuaworMTI4MTcgOTBjNzUyYWU0NGE2YjkxZjk0ODgzMDUxYmU1MjI0Y2E4MWM4OThkZCBsZWdhY3ktdHJ1bmsKKzEyODE4IDQ0YTM3NWUzMWFlMmZlN2Q4MGNkY2Q4MzMzOGViOWIyZDllZGQ2YmEgbGVnYWN5LXRydW5rCisxMjgxOSA0NDZiMDk2N2Y3ZDk2OWNmMDYwMGYxMzNjOTkzMjNiOGUxZTQ3YjA1IGxlZ2FjeS10cnVuaworMTI4MjAgMzliZDdiODQ3OGRiMzVjZGU4MmRiMWE2NjdhNWU5ZGY0YzFjNDVhMSBsZWdhY3ktdHJ1bmsKKzEyODIxIDRkZDc2OGFlODk1ZTY0Y2M4MTBlZTUxNjVkZmNkOTNkNmI1MjUxNDcgbGVnYWN5LXRydW5rCisxMjgyMiA5MDAyZjRiNDcwMDBhM2ZjN2MzMTg0ZTY2YTQyYzJjM2YyYWU0NGVhIGxlZ2FjeS10cnVuaworMTI4MjMgZTkzNWQ4OTQ3ZTMzOTZlOGQwN2EwNzMzNTk2YWE3YWY0OTUyYTZlMCBsZWdhY3ktdHJ1bmsKKzEyODI0IGJkMDc2NzRjM2M4YjA3NGVmODQ4YTkwZWRlM2Q5OTgzY2UzNjRhNGEgbGVnYWN5LXRydW5rCisxMjgyNSBhODdjZmVhMzBiMDRkODBhMzc2NGJkY2VkZTNmODc1MjUyYjc0MjM3IGxlZ2FjeS10cnVuaworMTI4MjYgZmVkNjZiZGRjZTYzODFlYjM0OGRiMzc5YzI0OWNhNjU1NWUyMjU0NSBsZWdhY3ktdHJ1bmsKKzEyODI3IDBkMGUyMjM5ZGZkOGMwNjg1OGI0OGUzZmMxZDQ0Y2FlNzc5NDEyOTMgbGVnYWN5LXRydW5rCisxMjgyOCA0YTNlNjM5Mzg0Njk0MTExZTkxZDVlMjViYzI5MTlmN2JkYTg4YmYwIGxlZ2FjeS10cnVuaworMTI4MjkgNGM0ZjM2MmZhMGE2YWQ4NTIwNDdlNTA4MzI0MzAyZTc4Njk0Y2M5NCBsZWdhY3ktdHJ1bmsKKzEyODMwIDY2YTdkNjFjZmQ4NGEzZGRhOWQyNTFjYjAxZjJjMGFkMmFiNjJhZGEgbGVnYWN5LXRydW5rCisxMjgzMSBmNDM4YzZlMmI2YzE4ZTU3Y2Q5MjRkNjY0NGZiOTI5YTk5MzNiODYwIGxlZ2FjeS10cnVuaworMTI4MzIgMjA3YjQwZWM5YTdlMzkxNGJmYWNjMmQxYTZkZmIzZmIwMThhNzM3YyBsZWdhY3ktdHJ1bmsKKzEyODMzIGJlMDU2MDk0NzhiZWYwNDM5NTViNDMzNGQyZTllYzJiOWM4N2M1NTggbGVnYWN5LXRydW5rCisxMjgzNCBhYmQ0MjAyOWZhMDEwMWQ1NDNmZTYxMTViZDcwNmYzZjBiMmFkOWIyIGxlZ2FjeS10cnVuaworMTI4MzUgZmZmODJkMmZiMzY5ZWZkMmVjMDlhNmJlMGY2OWRkOWRjNmQ4ZmRjYSBsZWdhY3ktdHJ1bmsKKzEyODM2IGI2ZWRlYzFlZmU2NDI3ODUxYmExOTA4OTRjMGZmODgyNjIzNzQ1Y2MgbGVnYWN5LXRydW5rCisxMjgzNyA2MTIyNDQ1OWJiMDkzNjFiMTFmMzQwYjQ5ZjNiMjg5ZTEwMTUzZjNjIGxlZ2FjeS10cnVuaworMTI4MzggMDkzZmMyOThhZmQ2YjBlMDJlNDExYTY0NWQxYzFlY2E4N2JiOTc2YyBsZWdhY3ktdHJ1bmsKKzEyODM5IGRkYmYxYWNiNzE3MDJkZDUxOTM0ZWRmYmY1NTJiNmQzNThkMmNiYjUgbGVnYWN5LXRydW5rCisxMjg0MCBhOGRjNTliNjZmNDk2NmNhYzgzZmNhMDViOWExMTk5YTM3M2M1OWU3IGxlZ2FjeS10cnVuaworMTI4NDEgNWM3MGVjZGVkZWZjMzM2NDlhN2M1NWIzZTJlZmYwOTUxZTczYWZkOCBsZWdhY3ktdHJ1bmsKKzEyODQyIDZlZTBlY2ViNzc1ZjJkMjJlOTAxYzBjYWE4ZjU0N2NmMGU4ODI3YWQgbGVnYWN5LXRydW5rCisxMjg0MyA2NWFlZDUyOWFkOGFkYWYzNDZkMTZkM2Q5YTc3Y2RlZTEyMGU2NDE5IGxlZ2FjeS10cnVuaworMTI4NDQgMDhkMzE5NGEzYzNmYzhkNjUyODMyMTA3ZWRkNmU2NDNiZmU0NWVkZCBsZWdhY3ktdHJ1bmsKKzEyODQ1IDhkMDkyYTY3MmQwOWJiMThkODVmNTAxMjk5MDE3ODUxZmE2YzdmY2IgbGVnYWN5LXRydW5rCisxMjg0NiBiOWE4MGJiYmU0YTVhNjg1YjM4NWMyZTFlZTAxM2VlOWVmNzdmZDE0IGxlZ2FjeS10cnVuaworMTI4NDcgNmRiMzVlZTkwYmZhYzAzZTVjMGZjZTM2MGExZDBjZjhhNmE2Zjk1MyBsZWdhY3ktdHJ1bmsKKzEyODQ4IGQ3MzllMWViNjE3NTFjMTk5NWEyNjdjZDJkNzY2Y2IwYTlkMmQ3YTAgbGVnYWN5LXRydW5rCisxMjg0OSA0ZTJkMTg5NzNiOTRhMDM3N2YyNWIyYThkZTZkZDRmMDE3ZTE3NzMwIGxlZ2FjeS10cnVuaworMTI4NTAgMWQ4NTdiNTk3NTgyMzc4NzYyNjIyMzViMTY4N2RiZmJjYTlkYWE0NSBsZWdhY3ktdHJ1bmsKKzEyODUxIDg5MmRiYTdmNDBkZWVmZWVlYmU4YmE3NWVjNDc4MWQyOTZhNTc2NDUgbGVnYWN5LXRydW5rCisxMjg1MiA3YTM5Yzg3M2RjODE4MGM5NzRmMWUwNGEzYzc2ZmZjYzk1YmJmYzNjIGxlZ2FjeS10cnVuaworMTI4NTMgNjdmZjllN2RjOGFmZjRhMDBlNWRhZTNiNWQyYTRkYzk5MWQ5NWRhOCBsZWdhY3ktdHJ1bmsKKzEyODU0IGE3OTdmMGM2YzJlMWRkMTM5YzE0OTU3MzZjYzIzYTNiZDlhZDlmYjEgbGVnYWN5LXRydW5rCisxMjg1NSBlNmQzNGNjMGM3OWM5NjJjMzlmZTYzYWRlZmQ4Mzc2NmMyZjZiZjQ3IGxlZ2FjeS10cnVuaworMTI4NTYgNmI1NzkwY2UyNTM2ZGM2ZTQ2MTI3ZTFlMjEwN2VhOTU4MDU2NjgxMiBsZWdhY3ktdHJ1bmsKKzEyODU3IDUwZDMwOTlkNTBjMjFkM2M3ODZlMGY5NjgxZjUyZmJjM2YzMWMzZDQgbGVnYWN5LXRydW5rCisxMjg1OCA0MDcwMjJjZjE5MzFjMTU4NzQwZTllYTNkZTU3Y2E3OWQ3NWUyMmZlIGxlZ2FjeS10cnVuaworMTI4NTkgODkyM2FkN2UxM2YyYjAxNTllZGUxYWIwMzZjY2E5MzdmYWRmNjliMyBsZWdhY3ktdHJ1bmsKKzEyODYwIGU5OGUxZWE1MWYxNjI2ZDVlNmY0ZDU4OTZlMTZjM2RiMTMyMjU2NmEgbGVnYWN5LXRydW5rCisxMjg2MSBkYTBjMTMzMGU2NmVmMmNkMGZjMDU5MzBlYzk1YzViMjExY2YwMTVmIGxlZ2FjeS10cnVuaworMTI4NjIgNzBhM2ZiMWNlMjNiNDFjYjgyNjBlMDkyOTIxYTkzMmQ4MTZkODczNSBsZWdhY3ktdHJ1bmsKKzEyODYzIGVhMGJiYzNiZjFkZmE2MThiNGNhYTE5ZTMwMDdhNjY5ZjRmMDRmN2IgbGVnYWN5LXRydW5rCisxMjg2NCA1MGU0ZGRkYjgyOGIyMDcxMmU1OTQ5Mjk4ODQ5NTk5ZGI5NWFjMmNiIGxlZ2FjeS10cnVuaworMTI4NjUgMTQwOWU3Njg3YTlhMDNiMjc4ZGZhNGI5NzViNTgxMGQ5ZjJhN2YwZiBsZWdhY3ktdHJ1bmsKKzEyODY2IDRkYWFiN2E5ZjU2NmFkNDIxNTUyNDY5MjZmOTU4N2RkNGNiNDRhZWIgbGVnYWN5LXRydW5rCisxMjg2NyBkNTE2NGM2NmFjYzk2M2JiYmZmMjAyMDYyZWFmZWRjZTkwZGM1YThhIGxlZ2FjeS10cnVuaworMTI4NjggMjVkN2Q0ZDczOTlmMTBjYWFhZmY5MDgzMWVhY2VmMjc5YjExMDU5NyBsZWdhY3ktdHJ1bmsKKzEyODY5IDY1ZTcyMTJkZjFiY2YxY2MxN2E0Yzk2ZDlhMjg0YTg3MzI4NjJkZGMgbGVnYWN5LXRydW5rCisxMjg3MCBjNWY0OWQ0ZTI5YzUwMzk4M2UxMjU4YzE2YmVhNGVjMmRhYzViOGRlIGxlZ2FjeS10cnVuaworMTI4NzEgNzk1ZDUxYWQyMjhhMjQwZGQ0NjY0NzNlYjZhMjhkZDEzYTNlYWRjMiBsZWdhY3ktdHJ1bmsKKzEyODcyIDEzMmY5NDY0MmM3NGQyODcyNDM1M2RmM2IwZWU2OTJjYTBjYmM4MzggbGVnYWN5LXRydW5rCisxMjg3MyA5NWI5MjI1YTUyZTQ1YmIyNTZkYmFlMTVmNTExNDFmNjgyMjhhODg4IGxlZ2FjeS10cnVuaworMTI4NzQgOTY5MTM5MDdhZTY4ZDk0NjljNTEyZDNmODQ5MDZjZDgwMDQ3MzRkYSBsZWdhY3ktdHJ1bmsKKzEyODc1IGZiN2ZhNDc2MjExZjM1ZDE1OWMyMTE0YzE0YTRiNzliNjI5YWE5ZTkgbGVnYWN5LXRydW5rCisxMjg3NiAwN2VlNzk1Nzc0ZDg5YjQxYmViM2JkNTdmZmY3ZDg5NGVjMmRlYTUzIGxlZ2FjeS10cnVuaworMTI4NzcgNDgxNDFkYTUxOGRmYTdjYWMyOWQ3YTZlYTcxNDAxNTQyNWI4YjhlYiBsZWdhY3ktdHJ1bmsKKzEyODc4IDQxN2FhNDI1MDEzYWQ3M2VhMzgwMmY1ZjAzNmViM2NmOTlhYWIzMzIgbGVnYWN5LXRydW5rCisxMjg3OSAzMzc3MzNjZTk1OTNmYjFlYTA1ZDY5NzZhNzlhNDllMDI2OTAwNjQ5IGxlZ2FjeS10cnVuaworMTI4ODAgNGNiYjIxMjJjNzM1OGY0ODUyMmE0MTEyM2Y5YjFlNjM1ZTNhZjJlNiBsZWdhY3ktdHJ1bmsKKzEyODgxIGQ5ODA4NWRlOTdkMWZlODhhNWNhOGQyMTg0OTg2OGQ2NjAwOGY5NWIgbGVnYWN5LXRydW5rCisxMjg4MiA5ZTk2OTVlMzE0Yzk2MDcwMzYyMjZmOTU2MmI2ZTM2MmUzOGU1MzgyIGxlZ2FjeS10cnVuaworMTI4ODMgNjk4OThhY2IyM2YyODFiZDY5Y2EyZWY3NGRmOTVjNDhkZWI0Mzg2OSBsZWdhY3ktdHJ1bmsKKzEyODg0IGZiNTFhYTgyNGRmMmQ0NzIxN2Q0NjdmMWM0YjRhMzI5MWU0YWI1YjEgbGVnYWN5LXRydW5rCisxMjg4NSBlMmEwOGE4MWU1NmY0ZWUyODU2OTVlMjFhOTg4MzM0ODcwNmFhYmU1IGxlZ2FjeS10cnVuaworMTI4ODYgNzBkZDkxYzIxNTEzNGZhZTRlZGZjZTE4NTZlNzQ3ZTdkMWJkOTIyOSBsZWdhY3ktdHJ1bmsKKzEyODg3IGQzZGM2MjAwNDc3NmRmMDJmNDMwNzBkOWU1ZmUxMWM4ODJlNjhhZGEgbGVnYWN5LXRydW5rCisxMjg4OCBlOTMzNTIyODZhYWM2ZDE5ZTgzZDU2MDdkZjUwZjFkODYxMTkyMmE1IGxlZ2FjeS10cnVuaworMTI4ODkgYzU4OTAyMWM0N2M5MzM3ZWVmNDcyNTAyMTY2Njc3N2UyZjVmYTkwZiBsZWdhY3ktdHJ1bmsKKzEyODkwIDljNWQ5YmRmN2U0MjM0MTliZGZiYmRjOTg0OTczMDViMDRkNTgyM2UgbGVnYWN5LXRydW5rCisxMjg5MSBmNGU2MDViZDhmMWI3NmI2NjJmNzZlMDAzOWUxM2RmN2ZhOThhNDdmIGxlZ2FjeS10cnVuaworMTI4OTIgMDE3M2E1ZjQ3MjA2ZGJlNDFmYTI5M2ZiODZhYWM0NWRjMzJhMmZmNSBsZWdhY3ktdHJ1bmsKKzEyODkzIGZiODE2NTk0ODlhMTY2NTY0YTFlYmFjOGE4ZDRiYmYxYzE4ZDgwYTYgbGVnYWN5LXRydW5rCisxMjg5NCA3YjgxMGFhMzViNWNlODZkYjE4MDAyYWQ4NTA5YTFlMTdiODIwZTQ0IGxlZ2FjeS10cnVuaworMTI4OTUgZjU0YmFjNWFmOThjYTAxNDdkODVkYWZjNDE3Yzc4NjEwODQyODBiMiBsZWdhY3ktdHJ1bmsKKzEyODk2IDc0OWUxYjNkODE3M2EzMDkzYzM3MGI5MjEyZWUxMDBkNWNjMTUzY2EgbGVnYWN5LXRydW5rCisxMjg5NyA1MjIwNjUzMmQzODkxYTA5MzNhMmFjOWY5ZDMzNDYwZDg2ODcyNTZjIGxlZ2FjeS10cnVuaworMTI4OTggZjM0MzMyOTUwMGJlNzliMTI3ZDYzNjgyZDk2NzY2N2UyNmJhYTI5NyBsZWdhY3ktdHJ1bmsKKzEyODk5IGMwNjZmZDg0MzNiYTg0ZWMwNTNkM2ViYTRiN2MwN2I4NWZkYmQyZjcgbGVnYWN5LXRydW5rCisxMjkwMCBkYzliMGQ0MThjMDA5YmI4ZDY4YTRjYTYzYWJkMTFiNTUwNTYyOTRiIGxlZ2FjeS10cnVuaworMTI5MDEgN2YxNDdjNGU0MjE5YjE2ZDZlMzRkYTMzNDI4NjZhODIzNDhiODMxZSBsZWdhY3ktdHJ1bmsKKzEyOTAyIDJhNGMxNzZkZTZjZGQzYzg4OTE3NjZkMzEwOThjMTgxNjlhNjNkZjUgbGVnYWN5LXRydW5rCisxMjkwMyA5NGFkOTBmZDI3MTI2ZmU1YmY2ODg4OTk1ZTI2OTEzNjI2YmVlOWE2IGxlZ2FjeS10cnVuaworMTI5MDQgZjgxZGI3MzhhYmQ5MmMyNmIwZDQxMzBmYTcxYTQzYjRkMTE5OThlYSBsZWdhY3ktdHJ1bmsKKzEyOTA1IDlkNGVmY2UxMWYwOWIxNTk4NmExMTA4NGFiMmEyOWUzMDliNWJiZDUgbGVnYWN5LXRydW5rCisxMjkwNiA5YzZkYTMwYWU2NzVkY2E1YzY5ZGVkNzA1Njg2ZGFmODhmMWFiYzI5IGxlZ2FjeS10cnVuaworMTI5MDcgODBkMmI5YWZkMTljYzU1NDBmMTYyYWMxOWQwYTgzNzg5MmM3NDdiNyBsZWdhY3ktdHJ1bmsKKzEyOTA4IDJjMDM5YzAxMDQzNzdlOTQ1ZmVlMjNjODA2Y2MyYWViYzBkOWMzNmUgbGVnYWN5LXRydW5rCisxMjkwOSAxNTlmMWMzYWZlMjg0ZTllYzlhZTUwNGRlNzM0YWJlNjBjZTE2MWY4IGxlZ2FjeS10cnVuaworMTI5MTAgY2NlZjVjMGU4ZGRjNjhjZTUxOTcxYWNkOTZlM2FlMjZiNmU4MTM5MyBsZWdhY3ktdHJ1bmsKKzEyOTExIGExNTQ0ZmM0OWE3NjM0NTVhM2UwN2NlZjVjOTM3OGI2ZTBhODhiZGMgbGVnYWN5LXRydW5rCisxMjkxMiAwNTA4MzJkODM4Y2E1ZWY4NmY3YTcxYTY2YWUxZjRiNzJhZWM1Mjg0IGxlZ2FjeS10cnVuaworMTI5MTMgOTc4MjMxODQyNjZhMDE5MDIwMGViMzljY2E5MGQxODZiMGQ2OWZiNSBsZWdhY3ktdHJ1bmsKKzEyOTE0IDk5NTJmMTZiYmU4Y2UzZTk3MmYwMDVlMjEyYTRjYWNlMTQ2YTU2N2YgbGVnYWN5LXRydW5rCisxMjkxNSBlOWU2OWIwMmQwZjBkMTBmZjNhZWY4NjNmZDcwZmM1ZjliYmM1NmIwIGxlZ2FjeS10cnVuaworMTI5MTYgNDM2M2ZiMmQ0MzQ1MDNmNzUxYTg1NjhjNTQ4MTg0NTgxNjU5YmY3NyBsZWdhY3ktdHJ1bmsKKzEyOTE3IGE2MzBlNTRlOTdmMjkzYmJiNjgxZjg5NDNiOGUxZDgzZDMyZTg5YWIgbGVnYWN5LXRydW5rCisxMjkxOCA0OGZiYzU1YzA1NTM0MTg4MGY5NTEzZjI5YWQyYjgzY2Y1YWU5Y2EzIGxlZ2FjeS10cnVuaworMTI5MTkgNTI0MzhjODdmZWRjYzIyNmE2N2FhNTI4NzY5Y2ZkNDUzYWIwYTBlNiBsZWdhY3ktdHJ1bmsKKzEyOTIwIGRjNTAyY2U3NTc1YTIwNzIxMDE2OTQwNmZhYzE1MDI5OGU1MjNhMjAgbGVnYWN5LXRydW5rCisxMjkyMSBiOGU0ZGUxYzM1Y2RhZDkwOTZkYTA1NmU2MGM0M2UxMTM2NTI2YjgzIGxlZ2FjeS10cnVuaworMTI5MjIgY2FiYWIxZjU1OTZlMjg1MjhiMmIyZTlkOGJhNjRhYmI3MmU3ZDcyZCBsZWdhY3ktdHJ1bmsKKzEyOTIzIDZkNTgyNzBkYmNkNDNkNDQ4YjFhOGQ4MzE3NDJhZWJkMDkwODA0ZDkgbGVnYWN5LXRydW5rCisxMjkyNCAwZDZiZDM5MWFjZDgzNzA5NzVlNzQ5MWZiNGQ1ODI3MTlkNzlmYjVmIGxlZ2FjeS10cnVuaworMTI5MjUgYjM2NDY5Mzk4MjYyNjllM2VlYTg5ZjcxN2VlZDhiNzE1OWRjMzdiNCBsZWdhY3ktdHJ1bmsKKzEyOTI2IDlhNGJhZjBjNTdlYTE5NDE5ZWRkNzk5ZmFiMDAzMzhjYjRhZmQ4NTIgbGVnYWN5LXRydW5rCisxMjkyNyA1Y2NkM2I4NmIxYTYzN2ZkMzAyY2I3Y2UwYjM5NDUyMWViMDVjZGUwIGxlZ2FjeS10cnVuaworMTI5MjggNGU4ZGVmZWMwOWY4NTA0MDc1YzlmMDYwMDMxNGVhZDczYTdmMzQzNiBsZWdhY3ktdHJ1bmsKKzEyOTI5IGMxNzY5NjhiYzkxYzEwOTMyOGM0ZDkzMTgxMGVjNmVjMWZmNGM2YmYgbGVnYWN5LXRydW5rCisxMjkzMCBlNjc5OWE4NTVhZjc4YzU0N2Q0ZThjMmQ4ZTkzOTFkMWIyNDcxZDk3IGxlZ2FjeS10cnVuaworMTI5MzEgMzU3MWI0YzFiYzBlM2QzN2NkZGY3OTE1ZWY1Y2JjM2M4YzdlZDA5NyBsZWdhY3ktdHJ1bmsKKzEyOTMyIGY5YWQxNDhjOTgwY2NlMGJmNzJmZDllNTQ5MGQ1NWY1NGY4OTIxNjAgbGVnYWN5LXRydW5rCisxMjkzMyBkNTkyZmU1ZTA5ZDU3NGQwZGYzNTdkNTY1YTdlYTRkOTdhMmE5N2U1IGxlZ2FjeS10cnVuaworMTI5MzQgMDc4OWUwYjU1NTg3YmIyMTgxZjNlY2Q2ZmUwY2JlNjViZjA4M2I2MCBsZWdhY3ktdHJ1bmsKKzEyOTM1IDFjYzVkMjBkMmVkODQyOTY4MWQ1Yjk2NDQ3YjEwOTVhYTVkZGNkOWMgbGVnYWN5LXRydW5rCisxMjkzNiAyYWIwZWM4NDcxODQ3NjdjMzgzMGM3ZjIzMTRlYzk1ZTk1ZDM2YTBiIGxlZ2FjeS10cnVuaworMTI5MzcgYTQ3NjgzMTU5NDhkYzMxMDdjZDBmYThjMWRmYTEwNGI0YTQ3MDM2MSBsZWdhY3ktdHJ1bmsKKzEyOTM4IDMyNDQ1MGVhNTQ1MDJiODkzNjIyMjA3OTExNmEwYjk3YmVhZWNkYjAgbGVnYWN5LXRydW5rCisxMjkzOSA3ZDNhNjBmNGUwYjQ3MzQ2ZWVhMDFhYWUwNjY1NjcyNjAxMzFiNGM5IGxlZ2FjeS10cnVuaworMTI5NDAgM2JjOGY1MzA0MWMwMTViZGFmNDgxNTg2MmNkYzZjNTYzZDRhODg2MyBsZWdhY3ktdHJ1bmsKKzEyOTQxIGVlNmZhOWI4Njg4NTRhYzEzMDc0YjFiMTYwYTZiZWVmNzFmZTJmZTcgbGVnYWN5LXRydW5rCisxMjk0MiA5Y2UxNDc0YWJkZGQ3YzM2OWQ4NGQyNmIxMGRkNDMyZTA2Y2ExYzZiIGxlZ2FjeS10cnVuaworMTI5NDMgYjk0MTQ0ZGUyZjMyYjUzZTJmZDUxODI1YmRhOTIwMDEzODlkYTZkMiBsZWdhY3ktdHJ1bmsKKzEyOTQ0IDliYTVkZmZjY2IxYmRiNDM2MzYyNzE4ZTJiYmMyOGVmMjFiMGEzNDggbGVnYWN5LXRydW5rCisxMjk0NSA5MTg0YzllMTA4Zjk3YmI2NmNlMTIzM2Y5NzM4ZjkyZGMyYjFmYTJiIGxlZ2FjeS10cnVuaworMTI5NDYgZjNhNGM0ZjQwNDQ2Nzg1ZTg1NjY4NDc3ZWQzODRmNGFhMWI5MTA5YSBsZWdhY3ktdHJ1bmsKKzEyOTQ3IDJhMTQ5ZTk0ZWY0YWMxNDVkNWQyMWU2NTIxYWNkNzcxN2YwNGEwNjMgbGVnYWN5LXRydW5rCisxMjk0OCAwMGMzN2NiNzVjMjg1NDlkMDQ5N2ViNmY0YmU4ZGIzNWU1ZDBjNzI2IGxlZ2FjeS10cnVuaworMTI5NDkgYmYyNmI3YzFlNmRlYzE5Y2E3Y2E5OTEwMmRiZWQ2MDk3M2ZiMDZjMiBsZWdhY3ktdHJ1bmsKKzEyOTUwIGQzNzYyOTMzYmZmODg5YTkwODM2ZGQ1NTMwNmQ2Y2JmZTIwNDA1MzUgbGVnYWN5LXRydW5rCisxMjk1MSA5N2EwNmVjN2M2ZjQ5YjcyM2JhNTQyMWY0MzRiNGRmNWRhMDBhN2RhIGxlZ2FjeS10cnVuaworMTI5NTIgN2ZlZjYwZjhiYzQ1NTVlNjNiNTcyOTZmMGQxZTA4Y2IwNmJkN2Y1MCBsZWdhY3ktdHJ1bmsKKzEyOTUzIDVjZmJkNDg5YTVkMzRkMDlkOWUxZjk3Y2M1NzRmNTZhMDcxOTU5NzkgbGVnYWN5LXRydW5rCisxMjk1NCAyYjFkZmMxMzk1MWRmYjYzMGFhNjZmNmZkM2MyYTI1NjdiMTEzNTRhIGxlZ2FjeS10cnVuaworMTI5NTUgYzllMTBlZDI2ZDlhYjEwMDA1ZWIwNmRjOWNmYzA1ZDU1OGM1MTk4YyBsZWdhY3ktdHJ1bmsKKzEyOTU2IDViNTRmYTc3NWU1NTBlY2Q4ZWIyMmYyYmJmOGRkMzk1NjFiYzgxMWIgbGVnYWN5LXRydW5rCisxMjk1NyBkYWQxNGZmZTFjMjJhMDZiMDVmNTk2ZjAxMzFiMDBmZjU0ZTdkOTlhIGxlZ2FjeS10cnVuaworMTI5NTggMTExNzhjOGQ2YmUyYTZjMjkzYTliYzQ1NjBlZGU0MWIyNzViNzZhOSBsZWdhY3ktdHJ1bmsKKzEyOTU5IDNmMjEzYThmYzA0ZTA2ZmRmZWFhMWI4NzI1YmZiOGUyMGU4OWNiZjQgbGVnYWN5LXRydW5rCisxMjk2MCA4MmFkYzU0ZGQzNzdjNDY0NGYzNGIwZGY5NTk4ZjBmOGY4NzIzNTdiIGxlZ2FjeS10cnVuaworMTI5NjEgNzA5MTBlMzEyNWEyNzYzMTQyZmIwOGE4OTY4MWRlZDdiMmU4NGVmZCBsZWdhY3ktdHJ1bmsKKzEyOTYyIDRjMWJiZWRhZDE0YmU2M2NkMGY0ODUzZDQ1NGUxOTM1ZDk1MDZhODQgbGVnYWN5LXRydW5rCisxMjk2MyA2Mjc4MTkxNGZhZGI4OTNjZDZhZTNmY2ExYmY3YjYzZWUzNTVlNzJkIGxlZ2FjeS10cnVuaworMTI5NjQgNGFiYzVhYmFlYzlhYjg4MGY1MTI0YTE5ZWYyN2U4M2Q4MDJhZGU1OSBsZWdhY3ktdHJ1bmsKKzEyOTY1IGE2NDY0ZWI5ODdlOGNlYWYzOWZjMWM4ZTM1MDAwYzcxMDY2NzhjZTYgbGVnYWN5LXRydW5rCisxMjk2NiA1M2MxZmFlYzFkNDY2NmE1MDY0MzUyMGI5MTYxN2M0NTc5NjljNzNlIGxlZ2FjeS10cnVuaworMTI5NjcgZjc0ZWYxOTcxYmQxMjY4MDg0ZTU2MjdkMjNkMGVmODdjYmUwOGJjZiBsZWdhY3ktdHJ1bmsKKzEyOTY4IDU4Njg4NDYyMDFlZGUyMDEzOWYwMjY3NjE3YjBkMWJiZjI1YTA5YmEgbGVnYWN5LXRydW5rCisxMjk2OSAzNmJhNGRiZmY2ODZlODUzYWIwYzRkMDYyZTY5MDBkMWY2YTM1MWM4IGxlZ2FjeS10cnVuaworMTI5NzAgMjU1YWJhYjNjNTc0MzA1MDhiZTMxZjNmNTJiMzk1NjIzNThmMzEwOSBsZWdhY3ktdHJ1bmsKKzEyOTcxIDljZDRmZDkyNmRmNjQ0OTliM2EwNGE3NzJiYzgwODAzZGVkMzVlYmMgbGVnYWN5LXRydW5rCisxMjk3MiA2MDFiNGYyZDVmYzg1MjQzYTBiYjA2YjcyOGZmOTQ4MmMxYjhlZjVkIGxlZ2FjeS10cnVuaworMTI5NzMgMDIyYjE3OGZkMGVkNTc3ODA1ZTRmMWRmNDEwNGVmMjZlZmE0YTUzOSBsZWdhY3ktdHJ1bmsKKzEyOTc0IGFjM2E0NjVlNTBhNjdiZTkxYTdlMzNjYTYxMDMwZGQxOTdmODViNTUgbGVnYWN5LXRydW5rCisxMjk3NSA0ZWU5MDAwMDVlZDg4ZTY3YWQ4YmFhNTI3MGI3MDUxNjQzOWJjMmEzIGxlZ2FjeS10cnVuaworMTI5NzYgNjNjNDYzYTg1MjkzNmVmNDAwYWFiMjEzMmFkMzVmNGRhZGZhZWFiOCBsZWdhY3ktdHJ1bmsKKzEyOTc3IGY4NTBlZjNkYTQzYWY0NGRkZTQ0NzczOWVhMDdlZTAxNzZmZDk1NDAgbGVnYWN5LXRydW5rCisxMjk3OCBjODJhODViYTFkZGVmOGU4Mjg1YmUwYTRjZGUxODExY2RlZWY4OWRhIGxlZ2FjeS10cnVuaworMTI5NzkgNTc3MDRmMGFkOWIwNWMwNzQwMTQ3MjYyNDQ2ZmRlNmRkNGYwNjgwOCBsZWdhY3ktdHJ1bmsKKzEyOTgwIDRiMTk0NjE3ODBiOTlhMGM1OTY0NzhlZTkxNGY2ZTE1OGY3YjBiOWEgbGVnYWN5LXRydW5rCisxMjk4MSAwMTI1MGI4MzIzNzRhYjJjNTZmZmFiODhiNjZkZmRmMjk3ZWE5MWQzIGxlZ2FjeS10cnVuaworMTI5ODIgZWU2MTA5NDlmOTAyMjY0ZWFjMTAzMGYyMTNiYzMyYTQ0ZWNiNGRkZiBsZWdhY3ktdHJ1bmsKKzEyOTgzIGMyNTU0YmY2MTdjMzI1NjU5NmJmNTE5MmYyZTZkMWU2M2EzOWNjZDEgbGVnYWN5LXRydW5rCisxMjk4NSBiYWU2NTBmNTdjNDE1MGJiMGM0ODE2ZWE4NzI5MzQyMjFjNTM5YWEyIGxlZ2FjeS10cnVuaworMTI5ODYgNzU2ODNmZDM5ZTkxZWE0Y2RmZTNiY2Y0ODY4NWY3NDVhNDQwOWZiOCBsZWdhY3ktdHJ1bmsKKzEyOTg3IDc0NzRhZDdlMGE0NDlhYjkxNTAyMjk1YmNhZThkNWFkNGE2OTc5MTYgbGVnYWN5LXRydW5rCisxMjk4OCA1MDBmOGVjOWRlZDE4ZDZkZDQ5ODVjZGNjZDg0YzQ2OGQ5OWRjODczIGxlZ2FjeS10cnVuaworMTI5ODkgOGQxMTVlMTExYTE3NDBlOTNlMjU2OGM5NGU2N2UyNDNjZmZlMWYwYiBsZWdhY3ktdHJ1bmsKKzEyOTkwIDMwYzk0Y2Q0OWE2ODhhNjYwOGJjZTI4Y2IyMTE2MDZhY2RhMWNmNjEgbGVnYWN5LXRydW5rCisxMjk5MSAwNWU5N2Y2YTM2MzhiMzUwZWMzOTVlMDFlYjFhNDk5NTEwNDRmYzI5IGxlZ2FjeS10cnVuaworMTI5OTIgZWNkZmNlYTEyNDM4NTZjNjI3ZDY1MDBlZmMwMjdmZjBlODAxMDlkOCBsZWdhY3ktdHJ1bmsKKzEyOTkzIDg3NDllODhhYjQwNjYwY2MxMThmNzkyYzI0OWE0NWE1NzljODUwODkgbGVnYWN5LXRydW5rCisxMjk5NCAzOTBlNGMxMDNiZTI2ODhlMGEwY2E3YWVkNWVlNjMxZDRjYzc2YjY1IGxlZ2FjeS10cnVuaworMTI5OTUgYjIzNTc5MjRhOWE5MjZjZGNmMzliNTNkOTMyMDQ3ZmMwMjM4YmZjMSBsZWdhY3ktdHJ1bmsKKzEyOTk2IDQzMDUyZDViOTgwODM0OTI2MWE3ODk2MzE1NTMwNDU1ZWQzMWFhYjkgbGVnYWN5LXRydW5rCisxMjk5NyBmNWQ3YzQ5NDVkNWY1YjRkYzkyYjEwYTllODExODIyYjA1MjhlOTNlIGxlZ2FjeS10cnVuaworMTI5OTggZTY0YzhiODRlMjRiNzk1ZmIwMGU5N2ZkMzBhNDFkN2ZhYTI0NTE4YSBsZWdhY3ktdHJ1bmsKKzEyOTk5IDI0NmIxMzQxMGEzMTdlNGQwYWNiNDI1NDRjMGIyOGI2ODViYzIwZTcgbGVnYWN5LXRydW5rCisxMzAwMCBiYTFhMjdkNzNjZGIwYTMzZmFiYzM3NjhkZmY5Y2IzOTE5Y2UxMmNiIGxlZ2FjeS10cnVuaworMTMwMDEgOGQ0MGU2YmE0YzllMjE0MTZhMjhiZTM4ZDc5OWUyZDI4MTQwOThkOCBsZWdhY3ktdHJ1bmsKKzEzMDAyIGZlODY0NWU0OTMxNDgwYzViN2U3N2Y4MmM1NTgyY2M1YzM4NzlkMjYgbGVnYWN5LXRydW5rCisxMzAwMyA5OTM5MDgyODZhYzcxNjVjYWRhMWRkYTEwYTEyZDc3MTc5NDFkYjU2IGxlZ2FjeS10cnVuaworMTMwMDQgYzBmMTQ3ZjRmMTAwZGI5OWI5OTlkNDUzN2Q3ZWQ4ZjhlN2RkYmJkNiBsZWdhY3ktdHJ1bmsKKzEzMDA1IGUwOGRhMzRjNDU4MmZlZGExZWQzZTdhNzdlN2EzNDM0YmJkNzY2YmYgbGVnYWN5LXRydW5rCisxMzAwNiBmZTg4MWY0NDZjNWQyOGZlYTk3ZWZhMTg2MjVjMjYzMTI2OGQ1ZGUxIGxlZ2FjeS10cnVuaworMTMwMDcgNTM5M2NlNTIwN2M3MDY1MTYwY2RkY2QwZGQxNDk5OGVhYThkMjJmOCBsZWdhY3ktdHJ1bmsKKzEzMDA4IDQ4Y2RkZDBjYzczMzA3ODIyMGEyMDY0YmRlY2YxZmIwZjNhMGQ5YjAgbGVnYWN5LXRydW5rCisxMzAwOSAyMGZlYmE5Njc0MzcxN2I1ZDQ1NTVlYjYzY2Y0N2FmNWViN2NkOWJiIGxlZ2FjeS10cnVuaworMTMwMTAgNDVlOTk3NWNiMDkzOTQ4NTc2MDI5MGQyZTJjZDViOWM1MmEzOGJjMCBsZWdhY3ktdHJ1bmsKKzEzMDExIDc1M2YzZjk1YzUwZjE1YzhkMmFjNTk0YjMyM2YwNDM3NjU0NDhjMDcgbGVnYWN5LXRydW5rCisxMzAxMiBkNzk5ODlhNDM1ZDkyZTMxYjcyMmJhNzA2ZWVkMDhlM2ZmNDVlYTRkIGxlZ2FjeS10cnVuaworMTMwMTMgNjViM2NmZTZlNjY2OTI3OTcxMDVjYjdhNjY2YzgwZTVkNzFmNzk1YyBsZWdhY3ktdHJ1bmsKKzEzMDE0IGMzZWRjMTRjMzg4MGEzOTRkZTMxMWFjOTcxNDc2YmQ1NDlmODk0OTMgbGVnYWN5LXRydW5rCisxMzAxNSAyMTk5ZjcwYjBlZGE3MmM4OWMwYzA4NjQyN2Q0Yjc3MTgzOTYyNmIwIGxlZ2FjeS10cnVuaworMTMwMTYgY2E0NGZmNzQ4MmM3NzVkMTZiNzc2ZDJjOTIwYzZmMTU2NWM3Y2E1NSBsZWdhY3ktdHJ1bmsKKzEzMDE3IDgxZjRhNzdlNzMzNzMwMWIzNjY1MjBkOGM5N2NmNmNiZDM0NTFiMTIgbGVnYWN5LXRydW5rCisxMzAxOCA5NmJlYWVhZDg3NGY3NmEwNzkyZGIzZWE0YTVjMDQzM2NkOTZkOGY3IGxlZ2FjeS10cnVuaworMTMwMTkgNTYxMDU0NDk3NzFhNjg0MzNiOWZhNmZkNzNmOTFhMmU4YmIwNjBhNiBsZWdhY3ktdHJ1bmsKKzEzMDIwIGQzODQ4NjhhZDQ2MjJlYmI5MGM4NjgxYTJmMTI1ZjM5Mzc0YzhjMmEgbGVnYWN5LXRydW5rCisxMzAyMSBlM2Y1OWEwNjQ3MmUzYTU2NDMzOTk3Y2M2NTkzNjBjNzRkOTlhYzZmIGxlZ2FjeS10cnVuaworMTMwMjIgOWFhNjVkNDhkZDA1MTc3NWRhMTI2YjM2NDY4NTg5YjE1ZmY5OGRhYyBsZWdhY3ktdHJ1bmsKKzEzMDIzIGIxOWYyYTk4MjAzMDVmOTI1NDQ3M2JlYjc1ZDUwM2I5M2MyZGMyODQgbGVnYWN5LXRydW5rCisxMzAyNCA3ZWUxZTMxMzQxNDczZjUxYzI0ZGUwMWU4M2ViMWI1YWY2YjFlOGI1IGxlZ2FjeS10cnVuaworMTMwMjUgZjAwNWFjNzM1ODYzNDEzYWRhZWZhNWFiMDFiNTk1OGI0M2UzYzZiNyBsZWdhY3ktdHJ1bmsKKzEzMDI2IGI1ZGVhNGM3OWQyNGUwYTBiNTYwYmY2NGE4N2EyM2U2MDcyMDA4NjcgbGVnYWN5LXRydW5rCisxMzAyNyA0NzRjNWI4MmQ3ZGU5OWY3ZWUwNDJhMGM2ZGZiZjFhMDNmMmU3ZWFiIGxlZ2FjeS10cnVuaworMTMwMjggODc4YTU0YTA2MTE3YjM5Yjk5NGI5ZTgzZGFmMzE4NzM0ZTE5YWM0OSBsZWdhY3ktdHJ1bmsKKzEzMDI5IDYxYmVjMWU1ZmE1OTNhOTc1Njc5MzQyNTFiNmFjM2JlNDc3NGUyMDAgbGVnYWN5LXRydW5rCisxMzAzMCA0MTU3ZjM4NjJhMDlkZjE3MTc0NmIxYmRiN2FlNzAzYmI0ZTM4M2MyIGxlZ2FjeS10cnVuaworMTMwMzEgM2VlZmU2YjA4NjYyZjQ1MjlhMzJmMWJlZjIwZDQ2NGFlN2E2NGNkZiBsZWdhY3ktdHJ1bmsKKzEzMDMyIGQ0Y2U5ZjFmNjI2NjZlNGQ4OGQ4YjJhY2M1ZGM0N2Q4YzdiZGZkNDUgbGVnYWN5LXRydW5rCisxMzAzMyA1NDBjODE3M2U0ZmRiZmVjYmEyNDY1NDdjN2I4MWFmOTUzOTA2MTBkIGxlZ2FjeS10cnVuaworMTMwMzQgZDgzNGVjZGY4YzI2ZTBkZjkyMzE4N2YyMGJhNDdhY2E2ZWYyZTIyMCBsZWdhY3ktdHJ1bmsKKzEzMDM1IDllYzlhYmZlYzc5NGVjMTQxZDdjZDY5YzBlNWQwNmQyMTM1ZTU1NGEgbGVnYWN5LXRydW5rCisxMzAzNiBjMDRmMDNlODJhNzU0MzgyMDgwNzczM2E2ZmY3ZWRmZDUwZDIwMzdkIGxlZ2FjeS10cnVuaworMTMwMzcgMzJiYTA5Yzg2OTE3YmI3MGY1YTQ4NjhiNjRiZDY1ZWJhNWVkZTM2NCBsZWdhY3ktdHJ1bmsKKzEzMDM4IGE0YTI2OGI3MjViMmE0NjIzNmY4MGU3ZmNjMWIzZmI2NjFiOWNlNmIgbGVnYWN5LXRydW5rCisxMzAzOSBiNjI3MjRiMDkzMDJlNzQ5Y2M1OTNmMzg1MThlMjg4MGNmZjZmOWFhIGxlZ2FjeS10cnVuaworMTMwNDAgOTM0NzE5YzI1YWY4MmVkZWYxNThlYjdlMmZjYmQxZjdkZmQ3ZTJiOSBsZWdhY3ktdHJ1bmsKKzEzMDQxIDNmZTk1YzJiMzcxMzRlYTY5NmUwZmUyZTYyMjc4MzRhMDcwNjdkMTEgbGVnYWN5LXRydW5rCisxMzA0MiBjY2VlM2MyOGI3ZWZmMWJmNWUxZDEwNzFjZWQ3NGY3NGI5MGIyYTk4IGxlZ2FjeS10cnVuaworMTMwNDMgNWY0NTRiNzA2MTU2ZWEzMWM4OGM5ZmFlNzBmYzZlMDE4YzVlNTRlYyBsZWdhY3ktdHJ1bmsKKzEzMDQ0IDBiZWI3ZDM2YzFhOTc2OTQ3MjYxMTIwOGYzNjQ0YTg3MDcxMjNkZmUgbGVnYWN5LXRydW5rCisxMzA0NSBmMjhlNmEzYjkxMzRlMTgzZWYxZjE4Y2YzYzBlNGYwZWEwMWI0YmVmIGxlZ2FjeS10cnVuaworMTMwNDYgZWRjN2IyOGQ5MDUyMTEzNmI1M2RkNDc0Mzc5YTUzMjg5ZjU2NzFhYSBsZWdhY3ktdHJ1bmsKKzEzMDQ3IDVlOWVhM2VhYjc3YzgxMDI1MzA3NzE1ZDUxNTMyZWJlZmVmM2EyZGQgbGVnYWN5LXRydW5rCisxMzA0OCAzNDAwYWExYjAwNzNmYzc4YzM2Mjg2ZDZlMjNlNDU3MDNlNzI5MmJjIGxlZ2FjeS10cnVuaworMTMwNDkgYzBhNjllY2Y5NjQ2ZjYxYTYwZWQxZjY4YjNmMzUyYzNhMDUwNDU4ZCBsZWdhY3ktdHJ1bmsKKzEzMDUwIGU2OGQ1MzdlYjUwZmVhYjc3MDVmYTIxYTQ0NzVlOGM2YmNmMmRhNWUgbGVnYWN5LXRydW5rCisxMzA1MSA1OTgwYmIwMDFmODY0ZWMwMDY2ZTRmM2ZmMDg3ZjU5ZDAwYjBkNDAxIGxlZ2FjeS10cnVuaworMTMwNTIgOGMxY2ZlOTY1ZDliMmRjMzFmMTA1M2Y0MDhhZDgzMTJmNGJjYzgzMiBsZWdhY3ktdHJ1bmsKKzEzMDUzIGFlNjFiNzBlZmRiM2E5NDhiZmE4MWM5NTk3ZDAyZjEyNjFiZWRjYzYgbGVnYWN5LXRydW5rCisxMzA1NCBjNjliZmUwZWNiZDg3MDZhMzVjNzdkZGVhYWI3YzkzNmI0YTM1ZjZmIGxlZ2FjeS10cnVuaworMTMwNTUgYWZmMDdlMDQ5YWVlZmEyYmU0MzIwOGFkMGQyNmQ3M2M0OGIzM2FkMCBsZWdhY3ktdHJ1bmsKKzEzMDU1IDM5ZmIwZGNjODNkYzM3NWMxNTY1YmE2NWRiY2UwZWQ1OWIxMzU5YzkgbGVnYWN5LXRydW5rCisxMzA1NyBhODM3YTZhZWQ4M2U2ZGUyZjM0NzcwZWI0NGIyNWQwZmY4ZjJkMGUzIGxlZ2FjeS10cnVuaworMTMwNTggMDVjZmEyOGU2NWY2MjQ1MzcyMjI0OWNiODRkOThiNGJhNDc0OGFmZiBsZWdhY3ktdHJ1bmsKKzEzMDU5IDI0M2NjNmQ5YzViOGZiZTBlZGExN2YxNTY3OWMzYTcyNGRmMTVjYWMgbGVnYWN5LXRydW5rCisxMzA2MCBlM2U1ZDc2MzY5NTg2NzljNDEzNmE5N2U4ODk2NTcxMDJmYzVlOThkIGxlZ2FjeS10cnVuaworMTMwNjEgMjg2YjJjZTY1MjQ4ODY0OTNkNTAzZWVlZDUxMzJkZmUyZDhlNzk4NyBsZWdhY3ktdHJ1bmsKKzEzMDYyIDhkMmE4YTQ5ZDk4MzkyMTIxOGJhNGEwNDE1NGE4MzJhNWMxMDU3ZDYgbGVnYWN5LXRydW5rCisxMzA2MyBhZmFhM2FhODM1Zjk4MzM3OWE3Nzg5MzU5MWI5YjNjYWIxZjQyYzE0IGxlZ2FjeS10cnVuaworMTMwNjQgOTcwZDYxYmI2YWNmOTM4M2IzNTZiZTRmMWY1ZjBhYzM0OWNhZWI2MCBsZWdhY3ktdHJ1bmsKKzEzMDY1IDNiZTA1MjViZjQ3ZjFhYzQzNjhlOTY0MmRkODViYjc1Yjc1ZmZkMjUgbGVnYWN5LXRydW5rCisxMzA2NiBhNDI4MjRjZjBiMTgxZTI4NmIyNTNkNWMwNzcyY2U1YmVmZDM5MWUwIGxlZ2FjeS10cnVuaworMTMwNjcgZjZmYzY3ZDcwNWRlYWQyYmQ0MWUwODc1MzM2MjVkMjc1NjAwYzdlOCBsZWdhY3ktdHJ1bmsKKzEzMDY4IDA0YWZjMWFjMWEwZmQ5ZmM4YjNlOThkOWJiOWE0ZDE0ZTk3MTcyZDAgbGVnYWN5LXRydW5rCisxMzA2OSAxMDRhNDQxYjJiYzhjZDkxZDUyOTAwMjcyODdlOTQ5YWY4MDQwMTAyIGxlZ2FjeS10cnVuaworMTMwNzAgN2JmM2Y0MTJlMTM3ODYxYmZjNjkxOTI3YjJhODdkMmRhY2U1Zjk0MiBsZWdhY3ktdHJ1bmsKKzEzMDcxIGRhMTVlZDMxNGUyNDI4MTQ3NjNmYTQ5YTMyOTRkYjYzNzhmMDg4ZDIgbGVnYWN5LXRydW5rCisxMzA3MiBiZmYzMzgyYzZkMmY1MWVmODhiMTY3NWI5OTlhM2JhM2E1ZDM5MzVkIGxlZ2FjeS10cnVuaworMTMwNzMgZjU4MDQ2MzM5Y2JmMzVkOWI1ZjA4OGMyNmRiZjY5Njg3YmMwYWUyZSBsZWdhY3ktdHJ1bmsKKzEzMDc0IDRlMGNjNmUwMmEwZGU5Y2M1NjZmMWYxZDYyYmNlNTJlNzc1OGE1MDYgbGVnYWN5LXRydW5rCisxMzA3NSA0YWZmMzkxNzUxMzcxZGE1Zjk1NDg1NGE5ZTdkMjJlYjNlOGUxYmJmIGxlZ2FjeS10cnVuaworMTMwNzYgMTBiZDJmYjJhMGQ2N2Q5ZDNmZWRjYmQxMGNhMzhkMDA3Yjk0YzIyOSBsZWdhY3ktdHJ1bmsKKzEzMDc3IGFmMWU4MTljMDQ0NTY5YmZhYWRkMWIyMTBlYWQzODI0OGJhY2Q4YmUgbGVnYWN5LXRydW5rCisxMzA3OCBmOTZiMjcyOTgxYmNhNjRhZDJjY2RiNzBkNTFmNTk5YjkyMTY0OGYwIGxlZ2FjeS10cnVuaworMTMwNzkgNTYxNzJlMGVmYjc1MmVjNjUzNzQ4ZjI2YjExNGRkMDUzZTI5OWQzMCBsZWdhY3ktdHJ1bmsKKzEzMDgwIDZlN2YxNGFmODliNzFmZTI0YWQ1ODFkZGIyYTZhMjliOWVmZGQ4NTYgbGVnYWN5LXRydW5rCisxMzA4MSA4ODViZTYwMTA0ZDQyMzU1MDgzMDBiYjRjYjgzMGM0ZjJjM2EzZTQ3IGxlZ2FjeS10cnVuaworMTMwODIgNjM0MmNlNGZmOTQ2NTRmMDM5ODRmYmRhZmE1YTlmNjY0YTIwYTMyYyBsZWdhY3ktdHJ1bmsKKzEzMDgzIDFlZDFlYjViYzZlYzBhZTgwNDJjMzRmNjU1ZGM0YzZkMTRmZTgxYzcgbGVnYWN5LXRydW5rCisxMzA4NCA0MzlmYzg1MzI0Y2RkMjIzNzQwNmU5OTU4NjQxNGYzM2NkNmUxZGNiIGxlZ2FjeS10cnVuaworMTMwODUgYmJiNWFmNzhhMjU5Mjg5MDhiOGZmNzBmN2RmYmIwY2Y2ZDEyYjY2MiBsZWdhY3ktdHJ1bmsKKzEzMDg2IGY3YjhmODg2YjUxYTc4YzQwYWUzMmI5MDYzMmIwYWVhYTdmNmJjNGEgbGVnYWN5LXRydW5rCisxMzA4OCA0NGRhMDM2NTFiZDAyYWQ2NGIyZmYxZDAyYzg2NTU4MDk3NzVlOGQ4IGxlZ2FjeS10cnVuaworMTMwODkgZTQxMTEwZmY4YzJmYTA3YjEzNmY0MGVjNWRiYTQxNzE0ODdmMWVlYyBsZWdhY3ktdHJ1bmsKKzEzMDkwIDcwMGRhYTc1ODQ3YTVkNGI0Mjg2MDBhMDMzNDU5YTg5MTIzNjBkYzQgbGVnYWN5LXRydW5rCisxMzA5MSA4ZGE0NmQ2YjhhZjNiMjQxODY1MmE0YjgyNGNiMzI1NDUyYTVkZjZmIGxlZ2FjeS10cnVuaworMTMwOTIgMDQwYjUyODY4ZmU4Y2UyMjY4MTU5NDZhZmMwYTk0MTI3N2QwZWVkMCBsZWdhY3ktdHJ1bmsKKzEzMDkzIDI1MWJhYTAzMmFmMGMzY2IyYTkwMDVkMzNhMmM5NDJiZjMzYzQxNDkgbGVnYWN5LXRydW5rCisxMzA5NCBjZTg2MWI0M2VmNTM1NmYwOTRhZmI3M2EzZjFjNzhiZDY3NGZiYzY1IGxlZ2FjeS10cnVuaworMTMwOTUgMDk2NWFhMmRmNWNhZDhjOGM4MGYyNDk5MDBjYWI0ZDEyOTZiZGNhZSBsZWdhY3ktdHJ1bmsKKzEzMDk2IDgzZDM4YzRhZDFkZWZiMDhlMTVmNjFjZWZmYjBkOWM3ZTNkMzQ3YTMgbGVnYWN5LXRydW5rCisxMzA5NiA2MWM5MWM3ZjEwMWJhYjMxNDlhZGZjZDU2NDZhZTQwZTA0OGRlNzEyIGxlZ2FjeS10cnVuaworMTMwOTggYzMxYjg4MGFlODRmOWQyMmIwMzU0NmViOWViNDkxZThlNzA3NDVmNiBsZWdhY3ktdHJ1bmsKKzEzMDk5IDI5YWJiN2Q5NmMyNTk1MThjMTJkYjc5M2U1ZWUxNDFlMzA1YzQ3MGMgbGVnYWN5LXRydW5rCisxMzEwMCA0ZTI2OTQxNGVlZTUzMGE2N2QxNDM4NjU4NWI4Njg5MzlkZDZlYzI5IGxlZ2FjeS10cnVuaworMTMxMDEgNjNjN2E4YWM0ZTRjZjljZDMwOGZjZTJiYTQxNWFmMjU2YWUxNTlkNyBsZWdhY3ktdHJ1bmsKKzEzMTAyIDU2NmJkODdlMDAzMmU2OTJiZGY3Zjg4M2ZkZTI1NmY2ZGJiMDAzZTkgbGVnYWN5LXRydW5rCisxMzEwMyBjODc1OWJhODM1NTJhNTZiOWY2MWMzMDAxZTY4ODlmNzE5MzhlNWJhIGxlZ2FjeS10cnVuaworMTMxMDQgODc2ZDdlNzkyMjUyYzVlMDUyMjJkMzQ0ZWZhZmNmY2Q0NGFiMjkwOSBsZWdhY3ktdHJ1bmsKKzEzMTA1IGRjZGJiMTAwMDYwZjJhOWY4YjBmYWZlOWJhNmJiNTkwOTA0ZjhhZjUgbGVnYWN5LXRydW5rCisxMzEwNiA5MGJkZjhmYTc4YTliOGViN2E4MGViZDI4ZTAzMDA2YjhlNzZjZmQ0IGxlZ2FjeS10cnVuaworMTMxMDcgMmFiOTY3Zjg0ODk1YjBkZDgyZmNmMjYyYTMyYmM2ODk5ZWQwZGQ2NyBsZWdhY3ktdHJ1bmsKKzEzMTA4IDI4YzQ0MzcyZGUzODQxZTJhMWMxM2YzNzI2MTBkMTRmYzU5ZGM0YTIgbGVnYWN5LXRydW5rCisxMzEwOSAzZGUwNDRlNjUwYTFiNjNiZWYzMzM1Njg0M2FmNTE0NTc3YjFkZjFmIGxlZ2FjeS10cnVuaworMTMxMTAgMDI3MDFiOTlmOWJhYmI5NjhhZGM1OGZlM2ZkODcxNzM4OGIxZmUxMiBsZWdhY3ktdHJ1bmsKKzEzMTExIGZlNWZjYjdlNzNmNzliZDU1MTAyMzEwNzczZmZlM2VlNjg3ZTY3MzggbGVnYWN5LXRydW5rCisxMzExMiBmY2FhYzQxZjZmM2EwMzNmYjRiYmU5ZTY4Njg0ZTFiNGMxM2Q1MmNmIGxlZ2FjeS10cnVuaworMTMxMTMgYjQ4ODlmMTA2YzNiMTgwNmRjZjc3ZDNlNzgzNmEzYmEyOWZkNGIzYSBsZWdhY3ktdHJ1bmsKKzEzMTE0IDI0MTlhNmM5ZjYyODEwNjNmOGZiZDdhZjhkMTIwMWJhZmIxYWYyYmUgbGVnYWN5LXRydW5rCisxMzExNSAzZjFlNzJjNzFiM2E1Y2JkNmY2MWVkM2U2YjdhMDgxZmI3NmU5NmMyIGxlZ2FjeS10cnVuaworMTMxMTYgNmY4Y2RjN2UyMjVjOTE3N2Y2OTQ1M2I4ZjA0ODA2ZTYzYWU5MTYwYyBsZWdhY3ktdHJ1bmsKKzEzMTE3IGY0MjVlNjBhYzcxYTQ2ZDgyYzI5ODEwYzdjMjczZGRjOWJiZDM3MmYgbGVnYWN5LXRydW5rCisxMzExOCBmNjE0ZjVjZjJkZWM5ZTNkYzg0ZjdlZDc2MWZhNjQyYmEzMTQyMGM4IGxlZ2FjeS10cnVuaworMTMxMTkgYTA3N2U1ZGE1ZmE1NzMwYTBhODZhNTNkMjk1OGE4ZjdlZGFjZGZlMyBsZWdhY3ktdHJ1bmsKKzEzMTIwIDU2OGU5NDcyN2EwY2M4ZDlmYmJlOGNmM2FjNzc4NzNjOTcwNWEwMjggbGVnYWN5LXRydW5rCisxMzEyMSBhNmI5ZDQ1MDAzMTc1Mjg5MDgwYzMwYzQxNGJkNzcyNTVmOTE5MmViIGxlZ2FjeS10cnVuaworMTMxMjIgMDEyZDM2MWZkZjIzYThhMzQ3YzMwMThmMjhmM2I1MzdhZGQ1NTgwZSBsZWdhY3ktdHJ1bmsKKzEzMTIzIGY3ZTliYzhkYTEzZDIxNjMzZWFhNDJmMjE0YTc4Y2NkY2NlM2UxODQgbGVnYWN5LXRydW5rCisxMzEyNCBmYTQ2ODVmZDVhZGZmMTM0NDhiY2U0ZGFhNWQxNTM5ZmY5NmJmM2I3IGxlZ2FjeS10cnVuaworMTMxMjUgODkxZDA4OWFiYTQxMmJhNjA5NWRhZTlhMGVjOGU1MDZkYWVhMWZjOSBsZWdhY3ktdHJ1bmsKKzEzMTI2IDViMTcwZjBkYTlmZWJkOTkyMmMzZDQ1ZWVlMzliYzBiZTk1NzFhYzUgbGVnYWN5LXRydW5rCisxMzEyNyBkZGNlZGRlZjU4YTFjNzFhN2NlY2ExOGVlNGY1MWYyOTVlOGJiOGRkIGxlZ2FjeS10cnVuaworMTMxMjggODRkNGYxNzI2NjlhNmZkMzdkMzFlY2JmZTJlNjYwYzNmMDkwNjg5OSBsZWdhY3ktdHJ1bmsKKzEzMTI5IDM0ZmQyNTI0MjczMTlmMjMxMTNlYTMzZmE4NjFjNjEyNjIzZTI0ODMgbGVnYWN5LXRydW5rCisxMzEzMCBhZDU1YmRiYTVkZmZlZDhjYTIwYjQ2MjA4MWE0ODhkMWM3MWQ3NDNlIGxlZ2FjeS10cnVuaworMTMxMzEgMzdkZDhiOGIxZDg0MDM5YTI4ZWI0YmM3YTNlZWIxZjNmMDI2YWJiZSBsZWdhY3ktdHJ1bmsKKzEzMTMyIDc1ZjEyODcxZWVlYTdiNWM5MmQxYTUzNGNiNGM3NTdhYTllMDk2ZGMgbGVnYWN5LXRydW5rCisxMzEzMyAxOGM3NGQ2YmNhZTg4MDc0MTQ0MTVmYWE5ZTIzODEzNjliODc2NzNlIGxlZ2FjeS10cnVuaworMTMxMzQgMWJkZWExN2JjNDcxZjI1ZjdhOTc3MTQ3OTljYWQwYzVkODllY2EyMyBsZWdhY3ktdHJ1bmsKKzEzMTM1IGQ3MTk3YjMyZmJmZWExZWNjMTlkNjhiNGYzNDEwYTEwZmNmYWRhNGMgbGVnYWN5LXRydW5rCisxMzEzNiA2NDcyNzI4ZGYyZDBjZjJkNjQyMzYwNjI4NzFmNTJlM2YxODRlODU3IGxlZ2FjeS10cnVuaworMTMxMzcgNDZhNzA4YjBjYTM4ZjAxMDY5YzI4NTMyODRmYTJkYWZjOTMyNDRmOCBsZWdhY3ktdHJ1bmsKKzEzMTM4IGFhNGVjYjcxNmU2ZTFjOGE2YzY5ZjI0YWYwNDljZGVmMmEwZTJjMmYgbGVnYWN5LXRydW5rCisxMzEzOSBlMjY0MzkyZTE1MzYxZjk1Njk3MmJjNDNiMDNlNWQyNGMzMTQwZmNjIGxlZ2FjeS10cnVuaworMTMxNDAgM2MyNTkzNzBhYzU3YWIxZWE1NDBkYWM1ZmY0NGQyMDg2NWMxZGIyMyBsZWdhY3ktdHJ1bmsKKzEzMTQxIDlmZDI5MDIxZDE0N2VhYzlkMjZjY2YyZDc4M2QyZDMzODI5MTVjMTQgbGVnYWN5LXRydW5rCisxMzE0MiBiZWQxNWEwMTVjMWMzOTRlYzliODZmNDExOTdiYTYxMTE3ODcyOTMxIGxlZ2FjeS10cnVuaworMTMxNDMgZGY4YTFjMjgxYWQ3ZDc0ZDQ4OThjY2FlYzYwZjJlMzRkN2YyNjY3MyBsZWdhY3ktdHJ1bmsKKzEzMTQ0IDM2MDQ5NGMyNWUwZTVhOWQ4MDJkZjg1M2NmNDEwN2JkZjlhZTE2N2IgbGVnYWN5LXRydW5rCisxMzE0NSBlYWNhMzc3NWI0MjVkN2JkMzg0NmZmNjRiNGUzZTJjOTI5ZDMxYzJlIGxlZ2FjeS10cnVuaworMTMxNDYgZjZlYzRhOWNiMGIzOTNmZDIzN2JhNjc0ZGVlOTA1Y2MyZjVmYzhiMSBsZWdhY3ktdHJ1bmsKKzEzMTQ3IDYzNzJjMmE0ZDQ3YmQ4MTRkYjJiZWEyMTUzY2ZkYmQ5ZDBlMTRiNGEgbGVnYWN5LXRydW5rCisxMzE0OCBlM2EwODk4M2NkMjUxZjhlZmU3MjMxZjUwYjEzMWI1NTRhZmZlNjE3IGxlZ2FjeS10cnVuaworMTMxNDkgY2Y2MmFmZjEwNDY4N2E0YjNjNDE0MzlkYTNjOGYzNTVkNWZjMTFkZSBsZWdhY3ktdHJ1bmsKKzEzMTUwIDQ2Nzg4ZjE2NjUwYjA3YjgwNDI5MTBhNjQ0NWZkMzNmNzBlMWEzNmQgbGVnYWN5LXRydW5rCisxMzE1MSBlMDlmMTk0NDExMzZjYTM5ZDY3NjA1NmY2OTZhMDMxZWQzNzQyNjg5IGxlZ2FjeS10cnVuaworMTMxNTIgYzc0NzBiMTRkZWM3YzNkZjA4MWMxNjEzNGY0M2ZlM2IwYjExZDM0OSBsZWdhY3ktdHJ1bmsKKzEzMTUzIDQ4YzMzZDA1MzY3ZjJhNWU4MjUxMDVkNjA0NjJlNDIyZmY4Mjg0OGIgbGVnYWN5LXRydW5rCisxMzE1NCA0MzY5NGQzNTM0NDIxOWJjOTUyYmUxODIyYWRiM2U3ZmVhZWM1YzNlIGxlZ2FjeS10cnVuaworMTMxNTUgYzk5ZTY4N2QxYWM0YWM2NTFhMzQzYTVhNGYyMDgzMGRhMWM3NjNjMyBsZWdhY3ktdHJ1bmsKKzEzMTU2IDhiMzhjZTQyMjgzZWNiY2ZkNWUzY2Y2MWNhNTMwMTVjNTUzMjkyMWUgbGVnYWN5LXRydW5rCisxMzE1NyA2YzI2NTExM2U3ZThjNmZhNzFhNzEwZTI5ZDQzOGJmNWQ2YzBjYzUxIGxlZ2FjeS10cnVuaworMTMxNTggNDJkYmZkNDk4Mzg3NjczMmRkNmEzMjNlYjBiNjU3OGVlMDhiYThkMiBsZWdhY3ktdHJ1bmsKKzEzMTU5IDk4ODNlMzBhY2FjNTkyODg2MzBjNDg3NjZjM2I4ODJkZDJkMmRiZjkgbGVnYWN5LXRydW5rCisxMzE2MCAyOTliZjUzZTY4NjE2ZWZiZmE4NGU5MWNjMzM5ZjAyNWFjY2VhMTBmIGxlZ2FjeS10cnVuaworMTMxNjEgOGU3MmZjNTdmNTVmZDQzMWY0YjNmMDkzODc5NmI2MmU2ZjBmYjA0MyBsZWdhY3ktdHJ1bmsKKzEzMTYyIGQyMDNjYjllY2UzNzI3N2RmMTVhMTYwMzU0NjI0YjdlNDZhNDEyYmUgbGVnYWN5LXRydW5rCisxMzE2MyA5OTY4MWVlODY2OTgyZDA2NGQ4ZDkyNmMzN2U3ZmJkOTYwMTAxOTg1IGxlZ2FjeS10cnVuaworMTMxNjQgNjlmYjgxZmFjYjAzNzg0YzUwNTAxYTE2MTNkOTNhMWVmY2U4MWIxMSBsZWdhY3ktdHJ1bmsKKzEzMTY1IDk1YWMxYzhjMDg1ZTU0Y2UyYzc5ZjY1NzNjMjlkODllOTRlNWJkY2QgbGVnYWN5LXRydW5rCisxMzE2NiBhNzFjNjM2Yjg1ZDE0YTM3MzBmYjJiMTYwZGRiZjg2YzQ0YmYxZTJiIGxlZ2FjeS10cnVuaworMTMxNjcgYWIwMjMzNDQ1M2Y5NmQ0NzAyZWZlZDRhYjQzMmI0NmRkNzQyOTJkYiBsZWdhY3ktdHJ1bmsKKzEzMTY4IDM3YTIyMzZkNDcyZjJmNGYxNTk3N2ZhNjYzNjQxMzBiOTMwMDNmYTMgbGVnYWN5LXRydW5rCisxMzE2OSA5MzM3MzIwMjZlOWNkNDlkODdjMGQ4NDhmMGRlYWIzZmQwNjE4ZTEyIGxlZ2FjeS10cnVuaworMTMxNzAgN2QwNWJiM2UxMzVmNjI3NzY3MWUyNzZiMzE2YTk5ZDE2ODEzZGExYyBsZWdhY3ktdHJ1bmsKKzEzMTcxIGJlYmU5ODMwYjMzY2RhMTk2YjY1MzYxYmZhMmE1YzY4Y2ZlNWUzYjUgbGVnYWN5LXRydW5rCisxMzE3MiAwMmViNzQ3NDkyNjJlNTViNWYzMmMxMjgwYWFiN2RkODQxY2JiZTQyIGxlZ2FjeS10cnVuaworMTMxNzMgOGM2ZmZlNjcwOTYzYjAxZWM5NGUyZTQyZDRiMWMzYWE1YWIwOTA4ZCBsZWdhY3ktdHJ1bmsKKzEzMTc0IGUwNWY2YmRjOGI1MjA0NWMzNWFlOTlkMDNkYTQ3MGZlYjIwZWY2ODEgbGVnYWN5LXRydW5rCisxMzE3NSA4YzBhNjBmYjZhY2Y2OWNkNTY1OWEwMjg5ZDMzN2M1MDFjM2QxOTNjIGxlZ2FjeS10cnVuaworMTMxNzYgNzk4NjU1NTU2NDU2NTUwZGJlZDI0ZTRlZDgxOGFjY2QxZTk5NjZmMyBsZWdhY3ktdHJ1bmsKKzEzMTc3IGY2MDYyZTU5MjM4ZjNlMzVlYTAwZDVjMmE3Y2M5M2NkMGVjOTc4NGEgbGVnYWN5LXRydW5rCisxMzE3OCBlMmExYzhkMjMzZGY3MTkyMDcyNzI0OThjOWIwMzI0YjRhZWU4Y2ZhIGxlZ2FjeS10cnVuaworMTMxNzkgYjI2MDZhOGZjYWFiYTk2N2RiMzM0M2M3Mjc4ZWU1NzI4ZDAzNzhhOSBsZWdhY3ktdHJ1bmsKKzEzMTgwIGVlODYxZDdiYzBlOTMwY2ZjNzhhMzNmYjY5NjIxZTg1OTcxN2JhMmQgbGVnYWN5LXRydW5rCisxMzE4MSA1OGRkZWUxMjU2ZTk1NDA1ZTc3MzMyZjY4ZjJjOGU0MTNkNjRjMzhiIGxlZ2FjeS10cnVuaworMTMxODIgOWU0YzU3M2VhNDliYTZiMzJjYTYxMWQ2YmJmNzIwN2UwYzI0ZGQzNiBsZWdhY3ktdHJ1bmsKKzEzMTgzIDE5YjQ4NzAwYWNkYmJmNzRkYTMwZWQ3YmYxYzljNzM2YmEwZjA3Y2UgbGVnYWN5LXRydW5rCisxMzE4NCA0Y2I4NDk0YWJhNjIwZWYyN2VlYWE2MTRkNTI5ZDMyYWVlOTU1NTA5IGxlZ2FjeS10cnVuaworMTMxODUgYWUxOGU4ZWViZTA0ZGE4ZDRmNGFkOTAzMDAxYzVlMWYwMjJlNTAyNCBsZWdhY3ktdHJ1bmsKKzEzMTg2IDYzM2QyZjdhMWU0ODgwNWMwYThhNDhhMWVjYTZlNTMxMTgwODUxZmUgbGVnYWN5LXRydW5rCisxMzE4NyA3MTM3NDAwMDM3ZTAxNTkwMTU0Y2E2ZDY1MDZmN2VmYWE1ZDE4Nzk1IGxlZ2FjeS10cnVuaworMTMxODggM2JiMDI5YzZkZDM3ODIyYTA5ZGMzZWU5ODJkYmI3MWQ5N2I1N2IyNCBsZWdhY3ktdHJ1bmsKKzEzMTg5IGY2NzExOTVhZjAyMGVkOGRiNDgzYjlmY2U5M2RiYWI3N2RkOWQwN2EgbGVnYWN5LXRydW5rCisxMzE5MCA4NWNmNDc2NjU3YzVkZTYxOTg0ZTVkNWZmMGJkNDc2NWUxYTc4MDg0IGxlZ2FjeS10cnVuaworMTMxOTEgYWUwMzA2YWFhNjg4ZTExYmU1ZDhkMjJkMzQ3ZGIwYTA0MGI1YTJlMSBsZWdhY3ktdHJ1bmsKKzEzMTkyIDNiODc2MmI4YzE0MGQwMTZjZTQ1MjU4ODdlYmQxYTIyYzE0ZWUxNzggbGVnYWN5LXRydW5rCisxMzE5MyA5MjFmZjM4NWYyNTZhMThhYzI3MTgwMmMwZmRjN2RlYzBlZjFmZTQzIGxlZ2FjeS10cnVuaworMTMxOTQgOWI3ZDhlYzliOTEwYzMyMjRiOWM0ODg3OWM2Mjk2YzI1MmU1ZDBhYSBsZWdhY3ktdHJ1bmsKKzEzMTk1IGE5ZDYxM2FiNWE3NjVlMzM1MTllMDUxNDg2ZGQ0N2FhMzY5NmRjYTEgbGVnYWN5LXRydW5rCisxMzE5NiBhYjEyYzYzMWQ3MzVkNDhmZjdjMGM2MmUwYWRkNmZlYTBjYzNkNTJhIGxlZ2FjeS10cnVuaworMTMxOTcgZDMwY2NiMDBiZDdiODBiNTgzNzRiMDFiMmY3YjJiOWNkZjFiMTI3NyBsZWdhY3ktdHJ1bmsKKzEzMTk4IDllMDQwMmVlMzgxMjA2ODk3NzE5NmFjNjI5NzZiN2Y4MzM1NDIzMjIgbGVnYWN5LXRydW5rCisxMzE5OSAyNWNjN2YwZDQ1ZjM4ZGFkYzg5YzJlY2FmYTE0MTk3OTZjMmNhZDc4IGxlZ2FjeS10cnVuaworMTMyMDAgMGI4YmE5MzUxYTA2MzUxNjg0YjM1ZDAzNTNkOGFkY2E1M2JmM2Q5OSBsZWdhY3ktdHJ1bmsKKzEzMjAxIGU3MDM5NzlmZjVlNzQ2OTI4Yjg2NGE1NDA2NzNiZGExNTJjNTZjMWMgbGVnYWN5LXRydW5rCisxMzIwMiA2N2E0YWNlZDBkODhlNTNhODNjMGI5ZDcwNzdhM2MzOGI4MmE3NjViIGxlZ2FjeS10cnVuaworMTMyMDMgNDgyMjYxN2IzOWYxNGE3Mzc3OWM1OTE1OWI2ZWRiMjhhZGI5ZDI5ZCBsZWdhY3ktdHJ1bmsKKzEzMjA0IGFiYTFjZDBkMTNlYWZiZDQ1NjlmNmUwMGIyZmQyMjE5ZDUyYWM0NzUgbGVnYWN5LXRydW5rCisxMzIwNSA4MWY1MTEwNWY0Mjg4ZDIzYmVjZTU3M2IyNjkwNTBmZDg4ODBmNWIwIGxlZ2FjeS10cnVuaworMTMyMDYgMzQ2ZTlhMGYwZjhjN2NlNmE2OTBlYmVlNDY5NmZhNTNhYWZkZDViNyBsZWdhY3ktdHJ1bmsKKzEzMjA3IGM5MDNlY2VjYmE2NjliYjMwZjBmNzE2MDVhOGI5OGYwYjI4ZDhjYWIgbGVnYWN5LXRydW5rCisxMzIwOCBlNGU4MDBhNzhkOGRkMjc5OTQ5YTVjM2FhYzI0NmExZTU1YWUzOWIyIGxlZ2FjeS10cnVuaworMTMyMDkgNThiMTkxYmFkYjlhOGI1ZTAzYjUwZGJjYzZjODJlZjczOTVhNmQzMiBsZWdhY3ktdHJ1bmsKKzEzMjEwIDQ3ODhmZDA3MGEzMGIzZTFkMTRmNDVlOGEzODIwOTk4ODQxNjdjNTMgbGVnYWN5LXRydW5rCisxMzIxMSA4NTExZWZlYzczMDljN2UzNTQ2Y2ZmYjkzNWUyYTBmYjE2ZjlkNTE5IGxlZ2FjeS10cnVuaworMTMyMTIgY2FkN2I1NWEzNjNmZjU0NjNjODA1ZTc3ZGQ4Y2QwZjA2NDNhODJhNCBsZWdhY3ktdHJ1bmsKKzEzMjEzIGIyYWFlNzE5ODcyMzg2Nzk1ZjNiMTIzZWZlNjM0Y2E0ZjY2NGNjZDUgbGVnYWN5LXRydW5rCisxMzIxNCAxNGY2ZTBkYzk2MjI5ZmNlMWQyZDA5YmFlOTcwOGVmYjNlMzFmNjQ0IGxlZ2FjeS10cnVuaworMTMyMTUgZDhiMmY4MmYzM2VkMmRkZTQxNTA4M2FhOGJhMTEzZWMzZjQwYTRhYiBsZWdhY3ktdHJ1bmsKKzEzMjE2IGNkMDFiYTEwYTk2MmMwOWZjNDUyYzhhYjBkNzJhZGY5MzQxYzFkYjAgbGVnYWN5LXRydW5rCisxMzIxNyA0OTBlYzBjNDBjYzYwMGNjN2YwYjA1NTAxMTMzNTk1MGVlZDZiNTUwIGxlZ2FjeS10cnVuaworMTMyMTggY2ZkMDkzMmE1M2U0OTFmODNhZjI0NzkyMzY0MTBmNTI4ODgzOWE4ZCBsZWdhY3ktdHJ1bmsKKzEzMjE5IDc2NjhiY2RlOWMwYWQ2NDA4NzIxMjhjYjcwYzVlYjg4NWEzNjZhMjcgbGVnYWN5LXRydW5rCisxMzIyMCA2NzEyMWEyYzYyYmY5MzE0Y2QxZDlhNGRkOTRiY2M4ZGQ5OTk2ZDBlIGxlZ2FjeS10cnVuaworMTMyMjEgYmFmNjZkNmUxYmMxNmQyMWZmMDEyNzIyZjllM2VlZDU3YzBiODQ5MiBsZWdhY3ktdHJ1bmsKKzEzMjIyIDgwZDQ4ODVlZGQ2NjQwOGFlMmFiZjljOGZjMzNjMWNiOTBhNzY4OWYgbGVnYWN5LXRydW5rCisxMzIyMyBmZTFlOTgxOTBhZjZlZTgzYTNkNDUyNDU0ZGNiY2ZjNTI5MjFhMzY3IGxlZ2FjeS10cnVuaworMTMyMjQgZjA5NTA3N2QyMGIwMmUyZjU3Yzg2ZDUwZGM2NGRmNTFkOGRmYjg5ZSBsZWdhY3ktdHJ1bmsKKzEzMjI1IGU5OTViY2M0Y2M4MjI0YzhlODc5MTNjOGQ3NmMwMDk0ZTE3ZDA4ZjAgbGVnYWN5LXRydW5rCisxMzIyNiA5ZjY5NWE1NDk4NjU0OGM5NzRkOTI1NzdjODlkN2M2OTU4ZDZhODdkIGxlZ2FjeS10cnVuaworMTMyMjcgZjMzNWZhMWQ2ZTcxNWVhOGMzM2Y5YWMzZmI0NTdlNjQ5MGQzYTJhYSBsZWdhY3ktdHJ1bmsKKzEzMjI4IDQ4MDM3ZjQ4MTRiMTEwYzBjMTQ1ODE4OTg5Y2FhMDcxMmE2NGIzYmYgbGVnYWN5LXRydW5rCisxMzIyOSBmM2M3ZmY3YTZlODFhYjU2NDI1OGIyMWVjMDA1ZjdhNjA2NTJkNzg4IGxlZ2FjeS10cnVuaworMTMyMzAgYjZkMWEzMmFlZDc2MzhiZWI3ODMzZTZmYTQwMThiOTM0NThlMjA5MiBsZWdhY3ktdHJ1bmsKKzEzMjMxIDhkZTdkOTBiMGIzNGZlNGVkZDM2Yjk2ZjNlODg0MTg4NWMxNTJkM2IgbGVnYWN5LXRydW5rCisxMzIzMiA5ZTVkZjRjNDlhNTY3NTRkZmNhOWNjNDE3Zjg4YjRhZTRhZjVhZDZjIGxlZ2FjeS10cnVuaworMTMyMzMgZWVhMWFiMDI4ZjQzMWVjYzZkZWY4ODI4ZDMxMDkwNzA1N2E3YjVjOCBsZWdhY3ktdHJ1bmsKKzEzMjM0IGYzODc2OTMwODQzODYyZTFjODdkOWNiYmFhNjYyYjk5MmUzOTMwNGYgbGVnYWN5LXRydW5rCisxMzIzNSBjNWY0NDlhYTQzNDU5MjE0MTU5ZDU1NGMxMWEwMzExZmE1MTQxOTUyIGxlZ2FjeS10cnVuaworMTMyMzYgMjQ3NWMzY2ZlODM5MDMyNmU4ODJjMmQzOTY5YmM5YzQyMGY3ZGMzYiBsZWdhY3ktdHJ1bmsKKzEzMjM3IGUwNzUyNzJmNDNmMjY1Njg4ZjllZWNhNTEwYTExZGU1YmU3MjZjZmYgbGVnYWN5LXRydW5rCisxMzIzOCA2MTA1MWZkNjVhYWIwODEwNWE5NTc3OWIyMWNmNGM4Mjg4ZWNiZTQ5IGxlZ2FjeS10cnVuaworMTMyMzkgMjY2NjRkMDc5NTk3OTk1OTJiYmZhYWQwOTUyNjVkYmVjOTAyNzk5ZCBsZWdhY3ktdHJ1bmsKKzEzMjQwIDc0NDJjY2VkZDVmZDNjMDJiOTFjMzI3YTNhMDE2ZDMxYzI5NmE2MWYgbGVnYWN5LXRydW5rCisxMzI0MSBlYzY2NDI1NGVmNWFhYTllMWMzNzc0ZmVmZTNhMmZkOTMzOTQwNmM0IGxlZ2FjeS10cnVuaworMTMyNDIgMjczNzFiNmQ3MGMxMTFkNmE2YzE1YjcyNjVhNWNmNzkyZTlmYTA2NiBsZWdhY3ktdHJ1bmsKKzEzMjQzIGRmMTU0ZGExOGYwZWEwZGZjMWVkZjdkYjIwNzMzN2ZlNjRhZGYxM2UgbGVnYWN5LXRydW5rCisxMzI0NCBlNGVlOGVhNGU4MzY4ZDJmM2RhNDE4YTIzNjI3ODRkZjM2ZjFhY2Y3IGxlZ2FjeS10cnVuaworMTMyNDUgMDNlNzRjNGIxODljOWRhNTQ5ZjJjNTA5MGUxMDlkNTM4Zjk0OTE0YSBsZWdhY3ktdHJ1bmsKKzEzMjQ2IDA5YzZiMmNlYmVlOWM2MWU4NjVhMjdjYzAyMmI0OTYyNDc3NjA4NWIgbGVnYWN5LXRydW5rCisxMzI0NyA2NzZkZThhN2EzY2JkMjVhMGZkOWZmZWRmYTNlMWQyYzE4ZTkzZGFmIGxlZ2FjeS10cnVuaworMTMyNDggODU1ODg3YTJjYzYwMTdjNmQ4YTc5NmY4MzIwMGNhMTA2YjQzMWYyNyBsZWdhY3ktdHJ1bmsKKzEzMjQ5IDRjOWRlNmZkMjY3YjkzZmFjYmNjMTJjYjg0NWE1OGU2ZTM1ZWE5NjMgbGVnYWN5LXRydW5rCisxMzI1MCAzZTViMDUwMzVlYjk4NDI5ZTZhZmRkM2UzNTBiYmQwMzVlY2I3ZmQ5IGxlZ2FjeS10cnVuaworMTMyNTEgNGRiMzY5MWI5Yzg3MTVmY2JmOGQ4NDU3YjQxMzA5NjZjYTc2Y2E4ZiBsZWdhY3ktdHJ1bmsKKzEzMjUyIGU3ZWJjZmRlM2I1ZTQyNzFhYzYxZGNkNzdlMzdlMThmMTc5ZjRlYTEgbGVnYWN5LXRydW5rCisxMzI1MyBmMGE2MTllZWJlOWEyYTI3MzMxZTVkNzEyZTEyYWJkYzBmOGIzMjk0IGxlZ2FjeS10cnVuaworMTMyNTQgYTBkNGE5NTdmZDkxYzExZjA3YWE1ZTY3NTBlZTFmYWMwMjg3YTIyYyBsZWdhY3ktdHJ1bmsKKzEzMjU1IDhmMzY2NWJiOWUzZTBjODEyZGFmMTczNDgwNTE4ZDhhOTNmMThjMGYgbGVnYWN5LXRydW5rCisxMzI1NiA4ZWRiZDVhYjYyMTc1NzBiZWFkYjAxYmVmMmYxMWJlNjFjNzcwZGIxIGxlZ2FjeS10cnVuaworMTMyNTcgOGVlZjZmNjc1Njc3YzU3YzBkNDk4OWMzMmI1NmU3MzgzYTZiN2I5YyBsZWdhY3ktdHJ1bmsKKzEzMjU4IDgxZjU0YzAwZTIyNGZlNWIxZGZjNDlhODE1YzdkZmNiYjNkNzhlOTYgbGVnYWN5LXRydW5rCisxMzI1OSBjZGU5YjJlNjRjMDA5N2UxOTA5NGM3ZTg1N2ViZjkyMjBjNWU3ODM1IGxlZ2FjeS10cnVuaworMTMyNjAgYmZhMGM3NDMzNDdhOWRjYzkyMmYxYThlN2M3YWVkZjEyYWRhODg5NyBsZWdhY3ktdHJ1bmsKKzEzMjYxIGYxYjJiYjUzNWViMzYzYzQwOTEyOGNmYzFiODhkZDQ3MTc5MWEwMWIgbGVnYWN5LXRydW5rCisxMzI2MiAzYzRkYjZjNmU5NzkzY2ZmNjFhM2U0MzQ0NjhhMGRiNDgzYmU4ODQwIGxlZ2FjeS10cnVuaworMTMyNjMgZWNlMDk4ZjNlMWRjOGVkMGI0ZWE0OWExMDBhZGM5OWNlZDgyZDEwYSBsZWdhY3ktdHJ1bmsKKzEzMjY0IGFhYTVmOThjYjJkNmQ5YzVlZTViYTg2MWYzYmZlZTIzNGNhZmU2MWQgbGVnYWN5LXRydW5rCisxMzI2NSA2YTM4ZTY2N2QzNDk4MDhjYTNkMWRkODIxYTVlZTc5MjUzYjlkYTljIGxlZ2FjeS10cnVuaworMTMyNjYgMDVkNzAzMDE1ZGUxNTRmOWJlZDk1YjkzYTgxYjc2OGI1Y2Q0MzdjZiBsZWdhY3ktdHJ1bmsKKzEzMjY3IDM5M2E2ZGFmMjg5ZGUzODk0YzY1ZjliMDU4Y2VhZjU2NDM2Zjk1MzAgbGVnYWN5LXRydW5rCisxMzI2OCAxNTBhYzBkNzA5MjkyMjQ5NGFmMjY4YjY2NGNkOTEzYmExNGQwMjEyIGxlZ2FjeS10cnVuaworMTMyNjkgOTJhOTJkZTk1OWI5ZTI0YmRmOWIyZTMzNjk1YTM4YjZkMzhlZjE1YyBsZWdhY3ktdHJ1bmsKKzEzMjcwIDNmMGE2YjE1NjllN2U2ZWE4ZTcxYjNmODQ4OTk5MzBhZWQ5ZjYzNjAgbGVnYWN5LXRydW5rCisxMzI3MSBkYmNhNDcwYWY4ZjI0ODcxOTM0OWM2OTBlMzAxNGJhNTU0ZDRhNGJmIGxlZ2FjeS10cnVuaworMTMyNzIgZTM3MDc0YjZlNzhjZjRhYjcxYTFjOGY1ZWRhNDUwYzI3MDQ3MTdhYSBsZWdhY3ktdHJ1bmsKKzEzMjczIGM2YTRlNDZmMWIwOWRkZTMyNTA3NTM3YjIyYzY1MjE2NzM1ZWYzYTggbGVnYWN5LXRydW5rCisxMzI3NCAxYWY3YTE0NjcwODgzOGFlMGYwODRhNGVlZjc3NTg0NjgwZmE2OWNlIGxlZ2FjeS10cnVuaworMTMyNzUgZmIxNzMzYjZiZWY1ZWFjMGViM2M5NTA3NDMyNmFiYjUxNjMxYzYzMSBsZWdhY3ktdHJ1bmsKKzEzMjc2IDJmNmIxMjc2ZTVkYzY0MjlmYTQ0MjQ1NzkzZTc4YmYxYWM2MzMwYTkgbGVnYWN5LXRydW5rCisxMzI3NyA0NDI0ODNmNDUzNDU1ODVhNzJiYjIzOTY0NjEyZWE0MTEzMjFiY2RkIGxlZ2FjeS10cnVuaworMTMyNzggMmIwMTY2ZDIyNTUxM2U0ZDQzNWZiNTgyNDIwNGYwNzUzZjBhNjI3ZiBsZWdhY3ktdHJ1bmsKKzEzMjc5IDFkN2ViYmYxZjBmMjc1NTA4OTU0ZjVkNDA0MWM4ODc0NzRjYzExNzggbGVnYWN5LXRydW5rCisxMzI4MCBlMGU5M2U0MTY2Y2UyZDUwODI4YmUzNjU4MzM4MDc3OGJkM2JkODRjIGxlZ2FjeS10cnVuaworMTMyODEgYzFjNzBiNzQzZGYyZTc4Yjk4N2Y2OGJiZDcxMTg0OWM2NGU3MmY5MyBsZWdhY3ktdHJ1bmsKKzEzMjgyIDk2NjU5NGM2YjFlMjU2YWRhNTFjMWZlNTc0NGYyYTUwMzYwYzdkNTQgbGVnYWN5LXRydW5rCisxMzI4MyBiNzA4OTZlYjg5NDQwZTkwN2QxMDUwYWFiNjY0OGU2MzQ2YzFhYjBkIGxlZ2FjeS10cnVuaworMTMyODQgOWYwZjFkOGU2ZWJhZjdlNzNmOTFiNjU5MDEwYzVhYzA5N2ZhNDhmMyBsZWdhY3ktdHJ1bmsKKzEzMjg1IGIzOWZlNTEyOTliZTlkYWU5NGQ4NWQ0NjVmYjNjZTQ1NmI5YThjYWYgbGVnYWN5LXRydW5rCisxMzI4NiA0NzliNGQxYzBiNDcyODVkZjY2YWNiNjI3MDRmYTZkNzcwYmYwMWRhIGxlZ2FjeS10cnVuaworMTMyODcgNTRhMzBkNmIwMWYxMDhhODA1NDA4ZTM1MjIxMDBlNjY3MDg1NjVkNyBsZWdhY3ktdHJ1bmsKKzEzMjg4IGMzOWMxNDBiMDRiY2M5Y2YzYTAzMzJjZDdhZjlkMjMyMDViZTI0YmYgbGVnYWN5LXRydW5rCisxMzI4OSAzMmU3OGM5ZmI0OTZjMzg4ZGQwM2ExYmQ0Y2I5N2JmYTY0ZmFhMjNlIGxlZ2FjeS10cnVuaworMTMyOTAgNWRiMmMwNDI3Y2FkMzRhNDk5YzI5ZTg2NTAxNTJmNzhiN2ZlYWU1ZCBsZWdhY3ktdHJ1bmsKKzEzMjkxIGEzNGQ2NjU2ZjhlMmRkZmE5MmY3YzQyNzFhYzg2YzNjNDQ3ZmViN2EgbGVnYWN5LXRydW5rCisxMzI5MiAxYmZhYTUzNzRkZjk5NzU4YjE0YTkxMWZhNmUzYTJkOGIyN2I3MDI1IGxlZ2FjeS10cnVuaworMTMyOTMgMzM1YjRjMDJmMTBkZjBkOTAwYmE0NDM2MzM5MGFlN2M3MTIyYzk5ZiBsZWdhY3ktdHJ1bmsKKzEzMjk0IDc2NzM1MWY0OTQ0YWJhZGU0MWMxZTVmMGRlMmI0N2I2ZDUxZDUwYjAgbGVnYWN5LXRydW5rCisxMzI5NSAxMDViZWVkMDY4ZjhlNjJkMjczYjNkZDVmMWViMDY4ZGQyZDMzZDVlIGxlZ2FjeS10cnVuaworMTMyOTYgMmQzNmYwNjg5YjhhM2UwNTU5YjdlYmEzNDUzMTVmYmMyNmQzNDRkZiBsZWdhY3ktdHJ1bmsKKzEzMjk3IGIwMTVkNWYxZGExYjU3MTc5MWY0NDBmNGJkOTVhMmJmMDg2NWMzZmMgbGVnYWN5LXRydW5rCisxMzI5OCA3YzQwZDdjMWVlZjk0Zjc3MDM1YWFiODc4OTBhZGZhZDA4YTNmYzZmIGxlZ2FjeS10cnVuaworMTMyOTkgODg1YWJlMDhlYTJkZWFjOTMzNTA3ZDIxNzk2NzcwYTI3OWNlOTY3YyBsZWdhY3ktdHJ1bmsKKzEzMzAwIDllZmUwNjc5NDBlYWE4N2Y4YjExOTJjZTg2YWJmZDcyMWYzN2E2YTIgbGVnYWN5LXRydW5rCisxMzMwMSA5NGM3YTNmMWMwMDVlNjU5NDcyMWM5YTg1ZmJmMTc1ZTMxZWZiMjg5IGxlZ2FjeS10cnVuaworMTMzMDIgOGYzMTEwM2M4OGE4ZTA3ZTU1ZDkyMzI2NzgzMGE0OTA5OWY5OWRkZSBsZWdhY3ktdHJ1bmsKKzEzMzAzIGQyMGU0ZDBhZmI0MzYyZDg5MjU5OTM3ZTQ3YjI0NDdjMmVjMTY2YzMgbGVnYWN5LXRydW5rCisxMzMwNCAzMTJlYjQ4MDFhMWM4MTZiYmU5NDY5Y2RhYWY3YzZkMGQ5NzBiY2QxIGxlZ2FjeS10cnVuaworMTMzMDUgM2QyZWE1NWJjNGU2OGE0ODBmNTk0ODZiNjAyNzQwOTNmMDQ3NzZkMCBsZWdhY3ktdHJ1bmsKKzEzMzA2IDg3OWQxYWU1YzdhNWJjZWQyZTA0OWZlOWNiMWYxY2JmNjljNjZmMTIgbGVnYWN5LXRydW5rCisxMzMwNyA3ODEyMzgzNjFmNTMxZTNjNTAxOTk0NTgxYWMyNDYyZWJjYWQ5OTU5IGxlZ2FjeS10cnVuaworMTMzMDggYWViMTNjYjdiNzhjYTVlODA4NGIzYTYzMGZmMzgxZDI3ZDM0MWFlMyBsZWdhY3ktdHJ1bmsKKzEzMzA5IGI4OGE2MDUyNDI2OTA5ZDYyYjc2ZTUzZWQwYTEwODgwYzdkMjhkNTUgbGVnYWN5LXRydW5rCisxMzMxMSA3ZWEzODU5N2U3MGZhYmJkYjQ1ZjIzYmMzNjk3NmI2M2Y2NmMxMTBlIGxlZ2FjeS10cnVuaworMTMzMTIgZmZiMmE0N2I2NDVlYzdiZjFhNWJiZGFmZGUzMGE0NzEwZDk2Y2U4OSBsZWdhY3ktdHJ1bmsKKzEzMzE0IGYxNjRkOTE5MzM0MWM5YjRmMDhlNDM2ODQxZGJjMzQ2YmUwZWIyZDYgbGVnYWN5LXRydW5rCisxMzMxNSAwZmU4Y2Y3YWM2ZDVhMzU2NDM5NDE1MTc2ZjJlZWRlNDI5YjhjZDNiIGxlZ2FjeS10cnVuaworMTMzMTYgZGZiZTI1OGUyOGMxODE3ZGEyMjI5MTA3MWEyNWZlOGNhN2I0YjAyYSBsZWdhY3ktdHJ1bmsKKzEzMzE3IDY4Nzk5YTIwMjc2NmExNDQxYTdmMTljNDY5NjM1NDlmMGQ2YTgwODEgbGVnYWN5LXRydW5rCisxMzMxOCBkNzNhMzI5M2M0N2IyY2RmMWU4NWY3ZDAzOGI2Y2U5MmY4MzU2YzhlIGxlZ2FjeS10cnVuaworMTMzMTkgNWFkMjdhZWU3ZTU4ODYxZjYyNWZlN2VkODY3MDA2MzMyMDQxYTQ5NyBsZWdhY3ktdHJ1bmsKKzEzMzIwIDJmZTBiYjhiOWVlZjc5YmJkYWExYjc3NTMwMWZhMDMxMTkzNzFjZmYgbGVnYWN5LXRydW5rCisxMzMyMSA4ZGUxM2NlYTk2NDExMjI2ODg5ZGEwZThiMWQ1Y2JmMTEyNDk5ZjQ2IGxlZ2FjeS10cnVuaworMTMzMjIgMzMxYzg1YWNhMTk1NzJjMmY1OTNjYjA1NDE4MjhhYzM0NjNjZjUzMCBsZWdhY3ktdHJ1bmsKKzEzMzIzIGMxMmY3Y2YxOTJmYjMzODYwOThiODYxYzU5OWMzZTNlMzA0ZmRmYjcgbGVnYWN5LXRydW5rCisxMzMyNCBkMjZhOWY5MjU0ZjE0ZGMzMTc5NjYwNDY5MTg1NWM1ZDRmZWEyNDA4IGxlZ2FjeS10cnVuaworMTMzMjUgZWI3YTYyYWNkZDFkYzViNGY4M2RlNGQ4ZDM0ZWUxMzg1NDNhMGIzZSBsZWdhY3ktdHJ1bmsKKzEzMzI2IDVlMDNlYTY5MjdmMjA2ZjU2MDA5MjM0YmQxMmJjMTVhZTE4YzhlNDUgbGVnYWN5LXRydW5rCisxMzMyNyBkZmI1ZmRhM2IyNzNhZDc0Y2FjZmZkZGUyYzA4ZmI0ODJiOTI2ODFhIGxlZ2FjeS10cnVuaworMTMzMjggZDNjNmU5YTEyNmIyOWZhYzZkNzhmMjdiN2M3M2RkMjRiZTNiNzAxOSBsZWdhY3ktdHJ1bmsKKzEzMzI5IDQ5YTBiOGRjYjM2YTRlMjY5MjhhMjZkMTYwYjJmMDljYzkxYmNmZmMgbGVnYWN5LXRydW5rCisxMzMzMCAwYmM3YzUwMmViNGQyZWNjM2E5Njg2ZjRjZTk5ZjI4NGIwOGFjMWYzIGxlZ2FjeS10cnVuaworMTMzMzEgOTYzODlmMGI1ZWYwODZiNGYzOGYzY2E3NmZiMGJlMjQ3NjllZWQ1NyBsZWdhY3ktdHJ1bmsKKzEzMzMyIGZlNWI3ZGVhNWExMGZmYWRjMjczZGVhZWE4NDMxMjJkMzAxYjFjZWYgbGVnYWN5LXRydW5rCisxMzMzMyBlYTgzMmMzYzZlNmRhMjYzYTQ4Y2I0MzgwMDlhNjk4ZjllMGIzZTkwIGxlZ2FjeS10cnVuaworMTMzMzQgMmEzMGVkOTExMmM2MWQ1OWM5YTBkYWMxZTkxNjRiMDkyYTg5NjZmOSBsZWdhY3ktdHJ1bmsKKzEzMzM1IDY5ZDg5ZjdmNTMwYzVjNzllOTU3ZjNmNGY1ODFlZjZlMmM4YTJlZjIgbGVnYWN5LXRydW5rCisxMzMzNiAzOTFhOWNiMmIwNzI5ZjcyYTAxNTdiY2E4ODlmYmIyNmZkNWNlYzFkIGxlZ2FjeS10cnVuaworMTMzMzcgMDAzNDRkYmYyYTYwNTI5NDllZjU4ODhjN2I0N2E0NTAwOTMxMzQ2YiBsZWdhY3ktdHJ1bmsKKzEzMzM4IDY1ZGI1ZTI2Mjk4ZjI2NmQ4YWI0OWFlMDM0ZWM3MmNiY2I3ODIxYjcgbGVnYWN5LXRydW5rCisxMzMzOSBhYWUxNGM2MTgxYjlkODhkNWRjMzlkZDVhOTM5ZTYwZDViMmY2YTM3IGxlZ2FjeS10cnVuaworMTMzNDAgMTM1YzFlYzk2MzZjNjg2YTIwZDAzZWQyNzdhMzUzODI0Yzk3NDI0YSBsZWdhY3ktdHJ1bmsKKzEzMzQxIDU1ODEzMDdkYjJmNzM3ZTZhMzhlMmQ1YzcxMzQxNGJlMjEwNmU5MWIgbGVnYWN5LXRydW5rCisxMzM0MiBlNjUyNDM0NmQ2NmNjMTg1OWI5ZDU5NmU0MDA5MzUwNzc4MTlmZWFlIGxlZ2FjeS10cnVuaworMTMzNDMgZWZkMTU3M2E0YjAzYjIyZGEyYTEwN2VkZjdmMDEyNTM2NDkzZWM0NSBsZWdhY3ktdHJ1bmsKKzEzMzQ0IDBiZjMwMTk0MWVmZDhjNTMzNTdmYWMxNGE0OWU3MWE0ZTJjOTEzYWQgbGVnYWN5LXRydW5rCisxMzM0NSA4ZmRhYzQwMjUwMzI1Zjg5YmU3ZTk2ZDIzZDIwY2VhMWM2YmM2YzIxIGxlZ2FjeS10cnVuaworMTMzNDYgODRhNGVjZDJjYjk1MzgyNDg2ZGRlM2ViYTA0NTZhZTg4NGI4ZWVlZCBsZWdhY3ktdHJ1bmsKKzEzMzQ3IGFlZTc0ZTk3N2FkZDBmZjdhMGFiYTcyMjlkMDU0YWViYTRjZTU3MjYgbGVnYWN5LXRydW5rCisxMzM0OCBmYTZiZTFkMGI4NjQ1YTMzZmU1YjViMzFmYzk2OWUwMTk2MzZjYzYxIGxlZ2FjeS10cnVuaworMTMzNDkgMzUyZTU4MjRlZGE2NjYwYTQxMTQ4ZmNlZGYzMDQ2MmI5YzQ2NDJkMCBsZWdhY3ktdHJ1bmsKKzEzMzUwIGUxYjg2ZWY0NTU3YzU3NTkyZmFiYTllOTA1Zjc1MzdlNmQyZDRmNDEgbGVnYWN5LXRydW5rCisxMzM1MSBjZGY3YWU1YjMzNjdlZWU2ZTRkYTI0NGUzZDY3MDU4MmViOTc5NzlkIGxlZ2FjeS10cnVuaworMTMzNTIgNWVmNGIzY2E1NTY0NTcxMmY1NjNkZmMzMmE0YjI1YTY5MzBhY2E2NyBsZWdhY3ktdHJ1bmsKKzEzMzUzIGI3Mzc4ZGYzZGI1NmQ3MDQzMTYyN2MxN2Q5YmFiY2FjYmQ5MTdmMmIgbGVnYWN5LXRydW5rCisxMzM1NCBjN2FhOTk2NTgzODNmMjdmYjI0MmU1NjVhMjc5ODdjMWUzYzA3MzUyIGxlZ2FjeS10cnVuaworMTMzNTUgZDc4Y2MyNjc2YzU1MWI2NzE4NzQwNDMyZWYzYzM3NzEzYzllOTVjYSBsZWdhY3ktdHJ1bmsKKzEzMzU2IDRkYTc2ZjgzOGE1ZTRlZDVjM2UzYjMzMTZhM2IzNmM2OTBkMjcwMjMgbGVnYWN5LXRydW5rCisxMzM1NyBhMTQxNWVjZWEyM2Q0YTMyMWQ3MWRhZGM2NTYyNDA5NTQxYmNiNzI3IGxlZ2FjeS10cnVuaworMTMzNTggZmNiMjUzMzVkNmFlZGYyYzFlNWVkOWE5ZTE2YzliZmQ2MDBiMzc3NSBsZWdhY3ktdHJ1bmsKKzEzMzU5IGIyN2FkNTA5YjQ0YjM1MDI1NjYzOWM1Mjk4MDBjNjc4ZmIzNDE3ZmYgbGVnYWN5LXRydW5rCisxMzM2MCBlMmZlNjVlODc3NjFiODgwYzQwYmZjNmU3NmQ5OTVlYzU4YjUwZjVkIGxlZ2FjeS10cnVuaworMTMzNjEgZjJlMTIzYWYyYWRhNDQ3MTNhN2M0YTY0ODAxZGQyMmNiZmNkYmEzYiBsZWdhY3ktdHJ1bmsKKzEzMzYyIDI4ODg3ZjQwZTM0NDJlMGI1MWQ0NDkwYTcxMjUxNjc0NzMxNjcwZDMgbGVnYWN5LXRydW5rCisxMzM2MyBiZTBhYzVhYmU4M2I3YjZhYjc4MWVlMmNlYmQxY2FlNjY0ZjI2M2JlIGxlZ2FjeS10cnVuaworMTMzNjQgMWFhODBmNWJmOWFjOTFkM2MwMTJiZDZhYWI3NGM5MWMzY2I5MDI5NiBsZWdhY3ktdHJ1bmsKKzEzMzY1IDgyMDJmNWFjZTI0ODQ5YWY3NTFmM2IxZTlhOTQwOTkzNWQ3Yzc3MGYgbGVnYWN5LXRydW5rCisxMzM2NiBlNzUyNTBlNTU0MjRmNDFkOTQ4YjY2MTMwYjUzNDg2MDI4NDQxN2E5IGxlZ2FjeS10cnVuaworMTMzNjcgY2ZlNDcyOTEyYjdmOGIwMjgyZTc0ZGE4ZTRjYjA3YTQ5ZDIzODVkMCBsZWdhY3ktdHJ1bmsKKzEzMzY4IDlhM2EwNDY4ZjUxYzdmOTdmYjM0MjJlOWRjMDdkNzhmN2ViZDk0MGUgbGVnYWN5LXRydW5rCisxMzM2OSA0ZjVkNDk0NTYwNWM2N2QzNGM3NTljN2E5ZTgyNTdiZTM1MTNjNmY4IGxlZ2FjeS10cnVuaworMTMzNzAgZjdiNDFiMjcwNTU0ODIxODNkYzJmZGJmYjg2ZjRmYTFjZjNmOWFhZiBsZWdhY3ktdHJ1bmsKKzEzMzcxIGNkMmEyNWI3YjQzODU4ZTU4NTNmYWI5ZGU0ZDdiY2VkZTdjMWI3Y2UgbGVnYWN5LXRydW5rCisxMzM3MiAzZWRiMzI5ODIzNGNkMGIxOGUyYzQ0N2U1OWRkZjZkZDk3MjQ2Yzc0IGxlZ2FjeS10cnVuaworMTMzNzMgMjUxMzhkYjM1Y2UxZWRlN2Q3ZjFkZmVkYThlYTAzOWRlZTJlZjNlMSBsZWdhY3ktdHJ1bmsKKzEzMzc0IGJiYzJhODc4OTRkMDgyOTMxZjA3YTIwMTc2MjA3ZThkZGZhZWZlMmQgbGVnYWN5LXRydW5rCisxMzM3NSA3ZDExODJkMGM0MTkzZWExMThlZWZiMTFmMDYzNmY2MWRhNmZlNDc4IGxlZ2FjeS10cnVuaworMTMzNzYgZmZmZjY2NWY4YTdiZjI5ZWZmNTU2MTY1YTIzNmI4NTU4YTdlOGQwYSBsZWdhY3ktdHJ1bmsKKzEzMzc3IDVjNWFlMTYxZjI4YWMwNDA2YjliM2NlZDEzMzgxMjdhYTIwYTE1ODQgbGVnYWN5LXRydW5rCisxMzM3OCA3NTUwYTM1ZDgwZjliYWZmY2JhYWEyOGI5YTI5OTUxZGJhZmMwMjM1IGxlZ2FjeS10cnVuaworMTMzNzkgYTU2Mzc5MjAwMDc3MGUxNjA5YjNjZDc3ZmFkYzVlOWU0NTRlOTJjMCBsZWdhY3ktdHJ1bmsKKzEzMzgwIDk4NjhjODA3NzMyZDU4NzA4ZDY1MDMzNjM5NDYzMjhkMjgzOTBlMmMgbGVnYWN5LXRydW5rCisxMzM4MSA4NjM0ZWEyZWM0ZTJmZGMyYTcwZDU0ZGYxNmZmNzQ4MzViZTQ2NGRkIGxlZ2FjeS10cnVuaworMTMzODIgMTgyMWU2NGUwOGZjZWRhOGZjMjhlMTBkMTJkOGQwYWY4YjQ1ZGM0MyBsZWdhY3ktdHJ1bmsKKzEzMzgzIDE3YWUxNzhhMzAzODhjNGNkMWYwM2U2ZjA3NDAxMzM2NjQ0NjI1MzYgbGVnYWN5LXRydW5rCisxMzM4NCAyNjY5YWM3Y2Q3NmE5NmY4NzEzMjBlYmY5MjdlZjliMDM2MTJhNDBhIGxlZ2FjeS10cnVuaworMTMzODUgYjllZjQyNDE2NWQ2MjUzZDJiZDVmZDQ2MDgzNjRhZjcyOWEyNzQzMyBsZWdhY3ktdHJ1bmsKKzEzMzg2IDUwMjBiZmE3NDJlYWE3NTExYzYwODUxNTg2ZDYxODAwY2RkNGZkMzMgbGVnYWN5LXRydW5rCisxMzM4NyBmODhkM2E3NjM3MjNkNWJhMGJlNzU5OWNkYTNmZmJjZTYwYjY2ZWFhIGxlZ2FjeS10cnVuaworMTMzODggODM4Y2IzNGFiYjc5MTljMzQyZjI0M2E5NjAzMjhiMzY2MGQwYWZkZCBsZWdhY3ktdHJ1bmsKKzEzMzg5IDA2ZGVmODA0MmQ4ZTE2ZmEwMTA2NTVhMDdiZWMwMTZhNTMzNDFhNWIgbGVnYWN5LXRydW5rCisxMzM5MCBjMjA5ZGQ5OGI4Njk1MjVhMWRkZjk4OGI2N2YzMDNlMTk2MTY4ZWFmIGxlZ2FjeS10cnVuaworMTMzOTEgZjAzMThhMWM5ODkyY2I1NzI3Zjg2ZDEyN2UzOTkyZmYyYTZjOTcyYSBsZWdhY3ktdHJ1bmsKKzEzMzkyIDYyZWQzMmU3OWI1ZDI5NjI0NjMzNDA3ZDBkY2EzMzk0MjRlY2RhZGEgbGVnYWN5LXRydW5rCisxMzM5MyA4MjJjNTI4MmMxNDU2OTc4OTc1NTdlNzU0YmRmOTBiMjVmZDUxOWE4IGxlZ2FjeS10cnVuaworMTMzOTQgYWYwNzM4OWM4NTE3NWZiYTU5NDgxNTcwMmZkNmJmMmIyZGRiYjgzNCBsZWdhY3ktdHJ1bmsKKzEzMzk1IGJhNmQzYWUzYTAyMTQ3YTIxNmZhZTgwNzEzNzdkOWMzMDdiZGQ4ODEgbGVnYWN5LXRydW5rCisxMzM5NiBhNjI4YzM3MDU4OTdhY2ViYTZmODRiMTIwMjczN2M0ZTUzNTJjYzE5IGxlZ2FjeS10cnVuaworMTMzOTcgNjMyYjY3MDViZDlmYWRkNjAzZDE0OTBmYWNiNDA0OGFlM2M3ZGEwYiBsZWdhY3ktdHJ1bmsKKzEzMzk4IGI4MTM2NTY2Y2FmNWMwMGUwNzk1ZDhiM2Q1ZDU5ZTdhNDM2YjU1N2YgbGVnYWN5LXRydW5rCisxMzM5OSA2NzgzODQyYzEwNDI0NWMwMzZkM2Q5YmYxMTA4MTdhMjFjNGNiNzIxIGxlZ2FjeS10cnVuaworMTM0MDAgZDM4ZDNiOGVhNDYzYmZjZjFlYjA5NGRjNjVhOGU1YTM5YjRiNjNmNCBsZWdhY3ktdHJ1bmsKKzEzNDAxIGUxODNiYzAwNDlkY2RkYzAwMzY1ZTU5YTA4MTNjOGI0Njk3MDMzZmQgbGVnYWN5LXRydW5rCisxMzQwMiA3NDg2Nzk2ZmFlNWI5NDQ1ZmRiY2NiNzk1OWM2ZTFiNWI1ZmVkNTU0IGxlZ2FjeS10cnVuaworMTM0MDMgODE3ZDA1MzgzNTBkMzM2NDQ3MTAwYzNiMWNjNzk3N2EwMDE2YzQzYiBsZWdhY3ktdHJ1bmsKKzEzNDA0IDNlNDE5YWJjNWJhYWRjZmIxMDkzZmI4ODJiYTU2MDUwNmIwMTY4NWIgbGVnYWN5LXRydW5rCisxMzQwNSA5NTgzN2UyNzMyNTc1OWQyMzQyNzhhZDJmZWRjOTcyOGY3ZDQwNTc5IGxlZ2FjeS10cnVuaworMTM0MDYgODVjZjQ5YTliMDBiY2VlNzNmYTE3NDc3NWI0NjI0Yjk2NzE5ZmMxZiBsZWdhY3ktdHJ1bmsKKzEzNDA3IGE1OWU5NWQyZjE4MTBiNDM2Njk3NDI3ZWJjN2JkNTUzZmEyMWU5ZDggbGVnYWN5LXRydW5rCisxMzQwOCAxN2NhMmY2NGI2ZDY3MTdiNzg4Y2VkY2JiMjQ0ODVlMDg0YmJjNGUxIGxlZ2FjeS10cnVuaworMTM0MDkgN2U1NmQzOWQwNzQxMTQzMjZjNjljYTgyZmMxMDFhYjNhM2NkODFmYSBsZWdhY3ktdHJ1bmsKKzEzNDEwIGYwYTIyMTM0NDRhMDQ5NDVkNWQzOGY4YjVkMWI3OGEyYWZiN2U5NTkgbGVnYWN5LXRydW5rCisxMzQxMSA5NTdjMzM1MDRjYzEyNGRhZjcxYWZiYWZkZjJlZmRiZTk5OWQ1OTkwIGxlZ2FjeS10cnVuaworMTM0MTIgZDMxNzQzMjBlM2NlYzliZWFkNTk5MjNhYjMzMGRiMjk1ODAwNTk3OSBsZWdhY3ktdHJ1bmsKKzEzNDEzIGY0YzZjZTU1OTNiOWQ2MGQ4YmRmNjJhNmM0OGMxNTI5YjE4Y2NhNjEgbGVnYWN5LXRydW5rCisxMzQxNCBjMjQ1MTYxNDY4NWFjNGQ4ZWI2NDg2ZDg1ZWE1NGZhMzVhZDZiYTE4IGxlZ2FjeS10cnVuaworMTM0MTUgMjllOTYyNzVhNDJkY2I3OTVkNTVlZTgzYzk1ODAzMjAyN2RiNTJlMCBsZWdhY3ktdHJ1bmsKKzEzNDE2IDhhMzEwOTc0MGM2YWZmMGU0NWE1YzAzODY3Y2ZhYTViMDVkOGE1ZjMgbGVnYWN5LXRydW5rCisxMzQxNyBkODNhNGFhNzBlYjQyOGQyMmQ5M2RjYWI4MTZlODg0OTIxZjM0MGNmIGxlZ2FjeS10cnVuaworMTM0MTggY2ZhYzgzZjVjMGVmYTQ3MmMxMzY3NzhhODU4M2FmMzk4ZjNmOTU4NSBsZWdhY3ktdHJ1bmsKKzEzNDE5IGIxYTFlYjMzNDlmMzdhZDFiNjM4YmUzNGUwZTkyYzUxNGU3NGVhOTQgbGVnYWN5LXRydW5rCisxMzQyMCBkMWI0ZmQwNTdiNGE2MzRlYzRhYWE4ZTg1NTY2NWMyNGU4ZGY4YWViIGxlZ2FjeS10cnVuaworMTM0MjEgM2ZkZjFjN2Q5Zjk4OGY5ZTkxYjA0NzE5NzQ2ZmRiY2IzMjVjY2MyYiBsZWdhY3ktdHJ1bmsKKzEzNDIyIGJhNzk3MTc5ZTJiYTYzOTBhNWZiMjFjNGVmZGQ1NDRhODdlOGMzZTMgbGVnYWN5LXRydW5rCisxMzQyMyBiNzVkMDExOWVkNTFhMDdiOGNiYjYwM2QyM2ZiZDExYmY3NmIyYWEyIGxlZ2FjeS10cnVuaworMTM0MjQgNmIxY2I4NTgyYTFmOTJiY2M2NzQzYzZhZTRiZjlhNGQwNGZjMDBiOSBsZWdhY3ktdHJ1bmsKKzEzNDI1IGE4YTFlYjk5MzQxYzIxYjhlNjEyMjk1YjVkOTM4OWI2MDU5ZmMyMGYgbGVnYWN5LXRydW5rCisxMzQyNiBiZGQ2YjA5YTM3MWM0MGRhZGRhODZlYTk4ZmI1YmJhOTcwYTRkYmRiIGxlZ2FjeS10cnVuaworMTM0MjcgM2ZhYTYzNDMwOTI0NmY2NDM1ZTc2ZjhmM2M0ZjZmZmQyNDIyZmNiMiBsZWdhY3ktdHJ1bmsKKzEzNDI4IDljNDAzNDg4NzU1NzI5MTM3YTE2NzMzMWFmZGUyZWUxNGNhYmQ1ZTAgbGVnYWN5LXRydW5rCisxMzQyOSAxYzU1MmRjZDQzZjk3NWNkODhjOTFhYmJkYjk0ZmQwOWNhMjhkMzM0IGxlZ2FjeS10cnVuaworMTM0MzAgODIzNGJiMzZmYjhjMzVmOTAzOTg4NGYxM2ViZWM2ZDA4OTY2NTZkYyBsZWdhY3ktdHJ1bmsKKzEzNDMxIDUyNTk3MDNmNGI1YzAyMDIyNTU0ZTQ2YzU1NjcyZWIxZWE1MjJiNTggbGVnYWN5LXRydW5rCisxMzQzMiBiMzViYWI0NTczNTBiNTBhYTVmMTk2OTExMTQzNGQ3MWFlZGU1NjgyIGxlZ2FjeS10cnVuaworMTM0MzMgZjljMDNiM2QwZjE0NmU5MTgxNjJjODVhNDNhZWFiZmQ2OGUyM2JmZCBsZWdhY3ktdHJ1bmsKKzEzNDM0IGU0MTA0OWFjODI4YjQ5YzA2ZGE4M2Y1ZmVjYzdkN2FiYzBkYmE5NDggbGVnYWN5LXRydW5rCisxMzQzNSA1ZWQ5YTJkZDE4ZDllNmY4YTA1ZWMzYWVhNTc5M2ZlOWJiNDdhNDkwIGxlZ2FjeS10cnVuaworMTM0MzYgODRmMWNiZTAwOTQzMzVhZTZlNWFkMDUwODU0MzM1OWJjMjAwNjQxYyBsZWdhY3ktdHJ1bmsKKzEzNDM3IDQ1MWIwODQ5Yzk3NzI1ZGJlYzEwNzQ4ZThkMDRmMzU3MmI2MWZjYmEgbGVnYWN5LXRydW5rCisxMzQzOCAxOGEyOTIxOWY1ZTA2ZjRkY2U1YTFhNjIxYjBjOWU4NWY3ZDA0MTU0IGxlZ2FjeS10cnVuaworMTM0MzkgNTBjM2IzYzIxN2EzOWU0NmE3YWY1NDc0NGI0ZDg2YjJmYWVkYzAxMCBsZWdhY3ktdHJ1bmsKKzEzNDQwIGNjNmFiYzk5ZDJkZGYxNDE0MTg0Yzg4MDA5MTljMTQwOWNiNGFkZDcgbGVnYWN5LXRydW5rCisxMzQ0MSBjMDg5MDIwYTdhMWU1NzY1ZmY5OGI1OGRmOGU0MTUwYjkyMDU3YWViIGxlZ2FjeS10cnVuaworMTM0NDIgZGNjYmY1ZTgyOTRkZDkxZjZmZTNhMjNiNGQ1MWIwMGM5YTgwNDcxNCBsZWdhY3ktdHJ1bmsKKzEzNDQzIDg0MTY1NTNjMzNkZjE3ZmYyYmI3OTUxNzU0YmM1MmY3YTg0Y2Y3NzYgbGVnYWN5LXRydW5rCisxMzQ0NCBlOGZmNGIxMjk4YzIzM2QyZjU1ZDNlMjllM2JmNDcxYzU3Y2I5YTVmIGxlZ2FjeS10cnVuaworMTM0NDUgYWY3NjUzOGRkMDc5ZDI0ZjBkNjc4MWI0MTQwYTgxZjdhMDY3MmUyMCBsZWdhY3ktdHJ1bmsKKzEzNDQ2IDcxMjhjMGZkMmJjZjUyNGU3NDNmNDVjMWI3MjcwMjUwOGU5MzA3MjIgbGVnYWN5LXRydW5rCisxMzQ0NyA4Y2MwYzg5OGY2YTc0NzgzZDE4MzFlNDgwMmNlM2E0YjliMDcwMjI2IGxlZ2FjeS10cnVuaworMTM0NDggZTdlYWU2M2U4YjkwNzc5MDQ5ZTVmOGUxM2FmNzg4ODAwYzY4ZGZkZSBsZWdhY3ktdHJ1bmsKKzEzNDQ5IGQ5NzY0NTFiNDY1ZjIxMmI4MjRkZTcwYzBkNDk3ZTYxMzU3MGE2ODYgbGVnYWN5LXRydW5rCisxMzQ1MCA2ZWU2NmZlMTc5YWQ3MmUwYjA1MmJiMzk0YmQ1Y2I4YmRlNzU2MjhjIGxlZ2FjeS10cnVuaworMTM0NTEgMzVkNWIwNzM2MjQyMjYyMWJlODY0OTU4YWQyMWY5NTMxZTdjNDhkYiBsZWdhY3ktdHJ1bmsKKzEzNDUyIGJmNmEwOTgzOTUxZGRkZDlhMWE5MzY5Yzk0NDI0YTk4ZTIyYWI2NjIgbGVnYWN5LXRydW5rCisxMzQ1MyAxYWJjMjc4NWIzNDQ2YzBiZjg4YzY3NTc5NTRmYTcxY2EzMjRkNDcwIGxlZ2FjeS10cnVuaworMTM0NTQgMzg0MjUxOGNmODAzMDEyY2U1MGQzZjk4YWZjZTNjM2Y5NmYyMzE1NSBsZWdhY3ktdHJ1bmsKKzEzNDU1IGI5MjhmN2I5ZGZhMjNkM2ZlZDQ2YzNjMjI4NjMwNjhiMzAxMDQ4MDUgbGVnYWN5LXRydW5rCisxMzQ1NiAwMzUzMGVhMjE0OGM4NTg0NjUwYTQ4YmJhN2YwMmM1N2ZiZjdjMmI1IGxlZ2FjeS10cnVuaworMTM0NTcgMGZjMmU4NTdlODIyODUwMzg3MDJkMzk0ZmI4OTlhYjA4ZjEzMjFjZiBsZWdhY3ktdHJ1bmsKKzEzNDU4IGI2ZDNkMTcxOTVkY2JhODY1NTU2YTEyOTVlMWYxYWY2ZjRiNmQ5YWQgbGVnYWN5LXRydW5rCisxMzQ1OSAzMTcxMWEwNTg3MzgyMzY4ZjFkZDg0YmFlZmMyOGZjYTE0MWJlMDljIGxlZ2FjeS10cnVuaworMTM0NjAgZTA1MGQ0YzAxMzI3Y2Q5YzZmNWIxMjk0MzM4ZTVjN2YxNmVkYTE2NSBsZWdhY3ktdHJ1bmsKKzEzNDYxIDRkNzZjYWJiZjk5ZTY1NTgwYjEyY2Q4NTA0ZTVmNTY0MDkwYjg5MmMgbGVnYWN5LXRydW5rCisxMzQ2MiA0Mjk0MGVkMjJjZWJkNzhiMDc1ZTEyZWFkZWFhNzA4MjgzOTEwYjM1IGxlZ2FjeS10cnVuaworMTM0NjMgNjY2ODliMmRjODk1NGI1YzczYWFiMjM4NTA0MDUxYjQ3ZjA2ZjNhOCBsZWdhY3ktdHJ1bmsKKzEzNDY0IGJkYzE3MDNmZjkyY2U3ZjUyNGJlZDBlMmNmYWJiODI0NzA1MGU2MDYgbGVnYWN5LXRydW5rCisxMzQ2NSBjNzc5MDI1NDFiMTNhNTdkYzEwODg0MTY2ZTA5MTQ3NzYwMGZlYjk4IGxlZ2FjeS10cnVuaworMTM0NjYgYmJiMDM4NjhmMjFiNjI3MTI3ZWY3YzExYjlhMjdmZTI5NzNmNWIwNCBsZWdhY3ktdHJ1bmsKKzEzNDY3IGFhMzI3NmU1ZGNjZjViMjIxMTM2M2VhYjEwYjdkM2E2MzU3YzE4NTkgbGVnYWN5LXRydW5rCisxMzQ2OCAzNmZhODM1MmQwMzg4MTY3ODAzNDE4YTNkYTc5OTJiNjM2NDZlMDA0IGxlZ2FjeS10cnVuaworMTM0NjkgNGRjOWVlZTI2MTU3MTQ1NjdjYjFhMWU4NzBkZTY2NGIyM2M1NDBmYSBsZWdhY3ktdHJ1bmsKKzEzNDcwIDJiOWFmOWQ3ZGEyZDhhN2ViNDVhZjgxNWMzMzdlNGRmNDM3NTU2MjUgbGVnYWN5LXRydW5rCisxMzQ3MSBkYTIzNjA0NGNmNmM4YTk4MmZjMjgzZTgwNGE4ZTVlNWRjYmUxMjg3IGxlZ2FjeS10cnVuaworMTM0NzIgMzA5ZDhjZjgzYTExNzk4MmExNzEzYzIwZGVlMzlhY2QwY2ExZTM4MyBsZWdhY3ktdHJ1bmsKKzEzNDc0IDUwZTdlYjIwYmIxZDUxYmE1NjkyNjUzNjFkNDZkNTk3M2RlN2UyYTggc3RyaW5nX21ldGhvZHMKKzEzNDc1IDI1OTIzN2IyNWI5MzVmOWQ3ODQzNWMyMDkxZjQ2NjZiMGE0MDYyYmYgbGVnYWN5LXRydW5rCisxMzQ3NiA3MGNmMTM2MDlhZWQ2OGEzZWE5Zjk2ZWQ5Yzg0MzgwYzYwM2Q0M2NmIGxlZ2FjeS10cnVuaworMTM0NzcgZmJiNGVkYjcyMDJjYzVlMWZlNjUzYWI1YWMxZDBlYWEzZTBjNTRjOCBzdHJpbmdfbWV0aG9kcworMTM0NzggNWJhMmU0Y2U1OGNiNGJhYWQzNTJiMjk1OGI5NDExZGZkMTk5MGYwZCBsZWdhY3ktdHJ1bmsKKzEzNDc5IDU0ODA5MjFhZTdmM2ZlZTY5ZDY2ZTU4NDIwODliNmM1OTkyMTUzMDUgc3RyaW5nX21ldGhvZHMKKzEzNDgwIDlkNzFjMmMzYTY3NTZmMjZlMzRmNDZjZmMzMmQxODgzY2Y1NjRmYWIgc3RyaW5nX21ldGhvZHMKKzEzNDgxIGUxNDA3ZDYzMjBjYmI3YzEwMmYzN2YyZjk4MzQ3ZWIwNjYzMmMwOWEgbGVnYWN5LXRydW5rCisxMzQ4MiA2ZmZjOWQ4ZGM1Yjk4NmE4ODI5MTE5NGJkNmI3MDhiZDFiNmM4NzY4IGxlZ2FjeS10cnVuaworMTM0ODMgMTdjNGRiZDM2ZTY3NzY0NDg0NWE1MTE4YTNlM2VmNzcyNTk4OWVmZCBzdHJpbmdfbWV0aG9kcworMTM0ODQgNzhjZWY1Njc2Y2NmNjEyZWZhN2RhMDc3NDdhNGYzODdhOTc3YjlkNiBzdHJpbmdfbWV0aG9kcworMTM0ODUgYWU4NTA4MTNjYjdiNDhjYzk0M2RjNjE0ODQxZTFlMmY5Y2RkY2RlMyBzdHJpbmdfbWV0aG9kcworMTM0ODYgZmYwZTU3NmU3NThhN2I0ZTg1ZjQ1OWZmYTUzY2FhNGFmZDE5NGM5NiBzdHJpbmdfbWV0aG9kcworMTM0ODcgMWRjYzk1NmZjZTY0OWY0ZjRhZWZmYjdhMmZhNDg3NDAxNTUzMGU3MyBzdHJpbmdfbWV0aG9kcworMTM0ODggZWVkNWViNWI5ZDRmNTljZjAzODZmN2Y0YWRlYmNiOWYzMDZhYjBlNiBzdHJpbmdfbWV0aG9kcworMTM0ODkgZGRkMjE2MDAzYmQxODcxZDM2NDVmMjU5YTNjNjk0Y2JiZDljNmU2OSBsZWdhY3ktdHJ1bmsKKzEzNDkwIGNiYmYyOTdhZWE3YTkzNzk3YjhmZDlhYzFiNGY5NWIwYzJiMzcwMzEgbGVnYWN5LXRydW5rCisxMzQ5MSBiMmQ2OWY3NTEzODM5YTQ1MzI5OWQ1ZDEzODQxOTFjY2UzZTNhMDVmIGxlZ2FjeS10cnVuaworMTM0OTIgZWM2YzhhZDk4MzQxMDc5NDYzYWY5ZjYzODQwMzgxNTRkYTkwMDljYiBzdHJpbmdfbWV0aG9kcworMTM0OTMgNTE5NjlmZDczYzRhN2U3Y2NiNjYxYTVjYTUyNzg3YTFjYzk2NjQ1ZSBsZWdhY3ktdHJ1bmsKKzEzNDk0IDJlYzA0ZmYyYjliNzMyZjk1MjlkYjgxZTU5NDM2N2FkYzNmYWZjODAgbGVnYWN5LXRydW5rCisxMzQ5NSBjZmVkMjk0OTNlZDY1NjFjYmVhYjE3OTY1OTNlNWM2YTFhMDY2MjM4IHN0cmluZ19tZXRob2RzCisxMzQ5NiAwZjBhNjZjMWRlYWNhMjY4OGFlNGY0NGVlNjgyMjI5NmY2OTk5NzY0IGxlZ2FjeS10cnVuaworMTM0OTcgMGYyMjkyZjU3YTgzMTc0MzY2OTIwYmE5YzU3NTc4MGIwZTk5MjQwZCBsZWdhY3ktdHJ1bmsKKzEzNDk4IDk1ZDc4MjgxNTkwMWQ4YmFlNTY1ODIyZmZmNzBmZjFjNWM1MGQ1Y2YgbGVnYWN5LXRydW5rCisxMzQ5OSBiMmZiZDlhNWExYjU1YzEzMmQ3MjZkNzBlZDIwZjE2YTliZWRlNzY4IGxlZ2FjeS10cnVuaworMTM1MDAgYWU5NmIxYTEyOGY4YzE2OThhMTI5NTE2YzJiYzNkNzliYzk4NjJlMSBsZWdhY3ktdHJ1bmsKKzEzNTAxIGY5MGVkOTY2MzE2ZThjNjk0MjM5N2FmZDlmNjMwMzYwNjEwOGJiMWUgc3RyaW5nX21ldGhvZHMKKzEzNTAyIDRiOTY5MjY1YjlkMjFiY2NhODYyZDQ4NmY1ZjdmMGUyYzc1ZDU1ZWQgc3RyaW5nX21ldGhvZHMKKzEzNTAzIDcxMTM4MDM3MmJjOTE4YTJmZjBkNjk1NTlhYzAzYWUyZDZmYmI0ODkgc3RyaW5nX21ldGhvZHMKKzEzNTA0IDE3ZWMwOTAyZWFmYTA2Y2Q3NDBjYzM2MjBjN2JkNWI5MTU2MDc3M2YgbGVnYWN5LXRydW5rCisxMzUwNSBiZWY0NmVhNWVmNzVjMDRjNGRjNjVkMzU2MmNhODhjODQyYjMwZWQxIGxlZ2FjeS10cnVuaworMTM1MDYgMzlmMjQyYmY0NjIyODM2ODc2YTI2ZTNlZGVjYjZmMWJjNDRhOTViOSBsZWdhY3ktdHJ1bmsKKzEzNTA3IDFkY2NiZWVhZjc2YWNlZjQzNmMxMDQwNmU5OThiOTdlMTg5ZWE5YTUgbGVnYWN5LXRydW5rCisxMzUwOCA2M2I1MzBjMDMwYzU0YjAxZTc3ZmM1MWQwOTg2N2NmMmJiZDAyOTk0IGxlZ2FjeS10cnVuaworMTM1MDkgYzczZjUzNzYyZjliMGYyZjExMjUwZTczZjdjMWRjNjZiOGRlNDM3NSBsZWdhY3ktdHJ1bmsKKzEzNTEwIGUzOWE5ZjEyOTE2MzI2ZDUyZTNmNjFkMmZlMmRkZGI4ODYwNmVlYTkgbGVnYWN5LXRydW5rCisxMzUxMSA3YTEyN2YxOTkyZDE5NzVkZGViOTA0Y2Q3NWUxNjA3ZjgzMzE5MjIyIGxlZ2FjeS10cnVuaworMTM1MTIgNmNhZmEzZDRlMjI5ZThiMGZmNTBiNDk4NjQ2Y2JiMzBmNjJkZDk5ZiBsZWdhY3ktdHJ1bmsKKzEzNTEzIDEzNDYyY2E2ZDk0NzU1ZWFiZWI4ZWFiMTZkMWNiZGVjMWM3NTkzZDcgbGVnYWN5LXRydW5rCisxMzUxNCA0MDUwOTk1YTY2MzliYjg4MmNlNjc0YTRiZWEyMjdiM2JhNTE3YmRlIHN0cmluZ19tZXRob2RzCisxMzUxNSAzYzM1MTI1NWYxNzNhYTk3MzIxMzQ0NzcyNTVkZDgwYTI1OTQ2MGE2IHN0cmluZ19tZXRob2RzCisxMzUxNiA0NmE1NjE3NzMyMmViMDZhYTQ5YjE5MWIxYmU2MTQzOGY3NTIzNzM3IGxlZ2FjeS10cnVuaworMTM1MTcgODdkM2Y5MWU0NGQ0ZDdjNGNlNTEyNjNlZWFhOWJjYjg4MjA1NTUxYiBsZWdhY3ktdHJ1bmsKKzEzNTE4IDNlMDVmY2FhYWVkMjE5MjE4ZWJhODYxMjdhOWRkYTIwNmQzODdkNTcgbGVnYWN5LXRydW5rCisxMzUxOSA3MDg2MjhiNmMwNGJmMjJlNGU3MDE4YzJjNjM2N2M5NmJiYjAxZmI2IGxlZ2FjeS10cnVuaworMTM1MjAgMGQxODZjMTBhNzBlMjRiZDljYjQ3OTU1ZWIyOGIyZGQzMGU2OWM0YiBsZWdhY3ktdHJ1bmsKKzEzNTIxIDg0YWIxNGQ4NTc2MzQzMGMzZGM1MWMzNzIzY2JlYjgxNDQzZTZlMDAgbGVnYWN5LXRydW5rCisxMzUyMiBlNjhlNjA2YzEzMGY1MWFlOTBhYjg1NzU5ZDVmNzQwM2Y0YjRlN2U0IGxlZ2FjeS10cnVuaworMTM1MjMgNjk2MTVkNTBmNThjMDA1ZDJkZjU5ZjM0Y2U3NGNiMWY0YTY5NjhlNCBsZWdhY3ktdHJ1bmsKKzEzNTI0IDhhNGZjNGRhNzY4ZDhlY2NlZDZhMzgyMTVjZDI0NmRmOTdlZDZkY2MgbGVnYWN5LXRydW5rCisxMzUyNSBmY2FjNjQzMmE3ZGZiM2Y1MTk3OGI1ZTFkZjdjZjQyNGRhN2VmMTY3IGxlZ2FjeS10cnVuaworMTM1MjYgOTI2Y2I1YTVlZTMwOTMzNTk3ZTA5OGFhODJhMDlkMTFjNmI1YTdiMiBsZWdhY3ktdHJ1bmsKKzEzNTI3IGU1MjcyM2FmM2NkNWU2ZjEwZWQ5NWRlZjhiNGQ5ODRiZDc5M2ZhMWUgbGVnYWN5LXRydW5rCisxMzUyOCAwODZiMmJjNzU3OGY5ZWYyYzVjNWMwMzYwNDNlYzliNDY0YzRhYjE0IGxlZ2FjeS10cnVuaworMTM1MjkgOGMxMTRlZGUwNTY4NjFkZDVlMjViYTMxMTliZjRiNmMzZjk3YjQwNCBsZWdhY3ktdHJ1bmsKKzEzNTMwIGM4ZWQ1YTE0NDg4ZGU2ZDMyNGQxNjdhMTVjYjFkY2NmYzUwMmI4ZDUgbGVnYWN5LXRydW5rCisxMzUzMSAwODcyZGEzZjNmNTYxMjEwOWZjMDYzMWY3ZTIwZTY4NzUxMjk3YjEyIGxlZ2FjeS10cnVuaworMTM1MzIgYjlmNTVjYzEwYWIzZjEwYWE0YjQ1MzRlOWQ3MjA5MDY1Y2U0NzY5MiBsZWdhY3ktdHJ1bmsKKzEzNTMzIDQ4MThjYjhlMTExMDFkZjQwMGQ3YjdlNzdkMzJjMjYwYjE1YTlkNjYgbGVnYWN5LXRydW5rCisxMzUzNCA0OTJhNjk0ODkwMjg2YTJhZGM0YTI4NmIxZjM3NjkwNWI5ZjIwMTgwIGxlZ2FjeS10cnVuaworMTM1MzUgZTk0NDI3MzRiYzQ5NzNkOTJkOWVjNDIyMzIzY2Q4NzIwYjQ5Mjg5MCBsZWdhY3ktdHJ1bmsKKzEzNTM2IDNiM2M3YjhhZGU3ZmZjODk3NmYzYjZhZTUwYTg0NDdiYzdhZmEwZjQgbGVnYWN5LXRydW5rCisxMzUzNyA0MDc3Y2EzYjI2NTYzMjg5OGJjZGNmNDc1YTlmN2M0NTRlOTAzNWExIGxlZ2FjeS10cnVuaworMTM1MzggMmEyZTk5YWYzODI5MTRlNjI5NmJlYmI3MDk2MTE2MzVkZTBmYzc5NSBsZWdhY3ktdHJ1bmsKKzEzNTM5IDZjOTJkYjNhNzdjZjM3YTAzYjgzZGQ2MzNkNTVmOTI2MDIwNzAyYjkgbGVnYWN5LXRydW5rCisxMzU0MCA0MTM4NWQ1MGExMGM3NDY1MjQzN2Q4Y2VmNGJhNWY4OWFjNTI3MDNlIGxlZ2FjeS10cnVuaworMTM1NDEgNzQ5NzExZjg4NWNkM2U1NjBlYWVhOGYwNWZjMTMwZmYwNjJhYzRjMyBsZWdhY3ktdHJ1bmsKKzEzNTQyIGY0YzYzMTg1Y2UxMTA4NzQxOTRiNDBjMjk0YmM3NDI0N2I3YjYyM2EgbGVnYWN5LXRydW5rCisxMzU0MyAzMDhjZTIxODM5ZDYzZmEwMTk5OTMxZGQ4MmM4MWNjZGU4ZmRmMDM5IGxlZ2FjeS10cnVuaworMTM1NDQgNjEyN2I3Mzg1OGJjOTFmMzUzMTk4M2VlNGY3Njg4MTczZmJiOGQ0MiBsZWdhY3ktdHJ1bmsKKzEzNTQ1IDNhZGMwMzQyZDA4YmQyNWY2ODNkYjA0YTQyOGIzNmQ3NzgxZGVmOGUgbGVnYWN5LXRydW5rCisxMzU0NiAxMTllMTE5ZmNmNWFjMGIzNzA2M2E2YTg4N2Y5NTEzZWI3Y2VhMzZkIGxlZ2FjeS10cnVuaworMTM1NDcgMTI2YTljZGYwNTcyOWUxNWY0MGM1YWQ1MWQzM2MzODE4MzcyNTc0NiBsZWdhY3ktdHJ1bmsKKzEzNTQ4IGU2YWJlZGJjNzljNjllZTllOGQ0ODkxYTgyNWJmZTRkN2QwZjM0OWIgbGVnYWN5LXRydW5rCisxMzU0OSAyNzFhZjI5N2FhM2VhNzk4NTM0YjhmYjZmZTg3YjZlMGZiZGZlYmQ3IGxlZ2FjeS10cnVuaworMTM1NTAgMzFmZDRlZDczZDI5ZTUxZWU0MWJiOWNkODQ2YWU1MTMxMGI1ODg4NSBsZWdhY3ktdHJ1bmsKKzEzNTUxIDY0OWRhYWQ2Y2Y1MTY3ZmQzZGJiN2I1YWE3OTJiNzZkM2Q1NTllYTcgbGVnYWN5LXRydW5rCisxMzU1MiA3NzFhOWExMDBkNzViYzhkNzA5NmUwMzc4Zjk5MzczMDBkNDZjMzk2IGxlZ2FjeS10cnVuaworMTM1NTMgMzgxOWViN2M4MzRiMzU4ZTQxYWUwMGZkMDFiNmQ0YzdjNzNlMDk2OSBsZWdhY3ktdHJ1bmsKKzEzNTU0IGY5YmE4MDIzOTc2ZDY2MjBhOTJhNTk3MTMwNTFjZDZjZjliYzc1MzcgbGVnYWN5LXRydW5rCisxMzU1NSAzYmU5MzViZTM3ODFmY2QzZDZmMDMzZjEyOGY0YWVmOGI2OGEyYThiIGxlZ2FjeS10cnVuaworMTM1NTYgOGI3ZjY1YjBkYjE4YTM2Yzk4NGQ1OTYxM2EwNTk3YjNlYTY0MmE4MCBsZWdhY3ktdHJ1bmsKKzEzNTU3IDM2Njg0Y2UwZDQwZDYzNjkwY2U5MWFkZjA3ZTdiODcwODNlNDMzZjkgbGVnYWN5LXRydW5rCisxMzU1OCBjYjM2NjMyMTE1MmNiMmU2OTcxZWJlNDZmMjcxMGNiYzRjNWJlMmQyIGxlZ2FjeS10cnVuaworMTM1NTkgYjZhNDM4Y2MxOTViOTk3YmFjMjQ0OGEwMGNhNWE2MmMyMTBiMjBjZCBsZWdhY3ktdHJ1bmsKKzEzNTYwIGFkMTVhMDM5NGY3ODI4ZmQxZTdiNDU5ZTcyNjg0NGMyNWJkMDY0NDAgbGVnYWN5LXRydW5rCisxMzU2MSA1YWRiYjNmMDRjYmMyZjkyNzg4ZDMwODY2YTg0NDM4ODRiYTRjMTgyIGxlZ2FjeS10cnVuaworMTM1NjIgMTJjZjkwOTY2ODIyMzAzNjI4MWIzZmVhZDBkYzZiOGRmNzVlMDM2OSBsZWdhY3ktdHJ1bmsKKzEzNTYzIDVmYTk2ZDA1MDMxOWQ4NGJiY2MwYTJhYjRkM2E0NjYyMzg0NGZjMTUgbGVnYWN5LXRydW5rCisxMzU2NCA5Nzg5NmMwOWVmMWIzMzFlMDkxNGJjMzc5NDEyMjViYjk1Y2E4MGY4IGxlZ2FjeS10cnVuaworMTM1NjUgNjI2Y2FlY2E1MzVhMjQzYjBjODFlZDc0NDYzMWVkY2UzZjE4NGY0YyBsZWdhY3ktdHJ1bmsKKzEzNTY2IDI3YzQ4ZGYxY2ViNzk1OTFmYjJlYWRjOGZiNGI5NzY5MzQwMTQ1NGUgbGVnYWN5LXRydW5rCisxMzU2NyBmNzhmMTZmZWE0NTU3ZjRkNGJhODA0NzY4OWM5ZjczZGNjNTcwNjM2IGxlZ2FjeS10cnVuaworMTM1NjggY2MyZWIwMWExNmY0MjNiZmIwNDcyMmQwODBiYmJhN2RhZTBmNDc5ZiBsZWdhY3ktdHJ1bmsKKzEzNTY5IDgxNDk4YzRlNTY5ZDM0OThlNDFkYjRkZGMyM2VlNWVhMDVkN2E5MjAgbGVnYWN5LXRydW5rCisxMzU3MCA1YmI0ZjUwZGE0NzRhNWI0NTcyMTRlMmEyZGU0ZmJjODhkNTM2NDJlIGxlZ2FjeS10cnVuaworMTM1NzEgZmQ1NDZjYmRmYjVmODY1YTkxZWVhNDc4MzczZjQ0YmYxZDQzMTRlZiBsZWdhY3ktdHJ1bmsKKzEzNTcyIGFlYjEwY2MyMzAwZDZlNmE1Yzg0MDE3YmRkMmVhMzIwYzhmYWIyMmEgbGVnYWN5LXRydW5rCisxMzU3MyAyMjJhZWU5NmRjNDI1MTBhOGE3N2QwN2I5ZGQyZWJlOTVhNzhjMjA3IGxlZ2FjeS10cnVuaworMTM1NzQgNGY1MWU5N2E2ZWRmNWQ3OGEwOWYyZmNmMzdkZmNkODU2MjIwYzczMiBsZWdhY3ktdHJ1bmsKKzEzNTc1IDVhODJmYjRmNzhlNTk0Y2RmOGI4ZjAzYmUwNzEzYzUxOTdjODgyYWIgbGVnYWN5LXRydW5rCisxMzU3NiAyN2ZiYjA4ZjhjMzhkY2FlNzQxZmU5MWQ2YTI2YWU5MzlkZmQyNTQ5IGxlZ2FjeS10cnVuaworMTM1NzcgMjUzOTcwYTJjMDVkNjY0NTVjOTFmN2FjNGViNzk2MzY0YWI3NDRmYiBsZWdhY3ktdHJ1bmsKKzEzNTc4IDI1NmI4Nzg2ODlmM2IxZTRhMDg5OTkzZDRkOTgwNGI4YTEzMzc5YzYgbGVnYWN5LXRydW5rCisxMzU3OSBiM2FjZDU2NTIwY2Q5ZmFmNzIzMjFlMzczMmUzN2VlMGVlNjAxODJlIGxlZ2FjeS10cnVuaworMTM1ODAgYmNjMGJlN2NiNDA4MDFkYjFhMGFjOGUwZjhlNTNlNDA3N2FkOWE1ZiBsZWdhY3ktdHJ1bmsKKzEzNTgxIDEyMDk4YThhOTVlY2I4YjU3MzdjMDhiNDRhNTJhOWQwNTEzODNiM2IgbGVnYWN5LXRydW5rCisxMzU4MiA3OWVlNmRjOTNkMGU5ZTNjYmQ5Zjg1ZGIyOTk3ZDkxZDFlZjQxMDE4IGxlZ2FjeS10cnVuaworMTM1ODMgOTYzMWY5NzI2YTcwNWI0OTA3OGY2Mjk3ZDE3NTMwMzUzODg0YjQ3NyBsZWdhY3ktdHJ1bmsKKzEzNTg0IDA3YjA3Mzc2Y2E3Mjg4YzQ5MzE0ZWI1ZGMyM2NiZTlkYzUxYjE3MDIgbGVnYWN5LXRydW5rCisxMzU4NSA5MDIzMTZjNzJiNDNmOTUzZTBkM2M0OWZlZjk3OTVkMThlOTVhMDdiIGxlZ2FjeS10cnVuaworMTM1ODYgZTNkZGI4NzYxNjM3MWNiYjU3YjdjNzQ5N2U5N2Q5NzYwNDc0MjIzNSBsZWdhY3ktdHJ1bmsKKzEzNTg3IDQ5ZThkZTBiNWVhNzRhODU1YmI1NDU0YjA3ZjRlZjc4MWU0ZGU4NTYgbGVnYWN5LXRydW5rCisxMzU4OCA3ZWQ2ZmJhODI2NWNiNzlmNjExN2VmN2Y5NWNhOTk4MWIyMDFmYjk1IGxlZ2FjeS10cnVuaworMTM1ODkgZjExMTQ4YzVmYmVkY2NmMmI0YWEzMjI3YTBhNzQ0OTIzZmM5Y2Q3OCBsZWdhY3ktdHJ1bmsKKzEzNTkwIGQ2Y2E5MTA2M2NlYzkzY2JlYmM3ZjgyZjU5NjEzZTMzZTBhNmQyNDcgbGVnYWN5LXRydW5rCisxMzU5MSBmNTI2ZGI5YTZjZjgzNmRmMDFiZjgzN2ZlZDJlMTQ0MmFkNjJiZjQ3IGxlZ2FjeS10cnVuaworMTM1OTIgZGZiNWFkZDY4NGMzZTgxMjE1ZDM1ZjY5NDZjYzE1Y2Y4MjY3N2E1MyBsZWdhY3ktdHJ1bmsKKzEzNTkzIDYyODJhY2UyNzk1ZTA2Y2JjNWEzMDYyNGQ0NjU2ZTgxYmFkNWJmYzEgbGVnYWN5LXRydW5rCisxMzU5NCBiYWUzZmJlMmI1OTFhZjlkZWEzYjYxNGM4MGNlZGY5OWJlYTg2NTdlIGxlZ2FjeS10cnVuaworMTM1OTUgMGI2NTgzNWUyYjI5MDlkNjViZTJiZTlhNDA2MmFkMzM1MzYzZTgwNCBzdHJpbmdfbWV0aG9kcworMTM1OTYgOGU0ZGQ2YTE2MWZmYjdjYzQ3ODBlMTdmN2M3OGJlNjAzMDI2YWQ3OSBzdHJpbmdfbWV0aG9kcworMTM1OTcgMGRkNTBhNzBjNDdlMjJkNjJmODEwYzY2ZmFlYzJkOWRmOTU1YTlmMiBsZWdhY3ktdHJ1bmsKKzEzNTk4IDJmZDY1ZDBmM2Q0MTUwODNjYzFmNzMwZWI4MmQ4YjMyOTM1YjYxMDUgbGVnYWN5LXRydW5rCisxMzU5OSA5ZGQ4MTlkOTkzMjYzOTI2YzJhNGY0ZWFhZjdmZTcyYmNjNmFhNTAxIGxlZ2FjeS10cnVuaworMTM2MDAgYTg0ZjlkMzk5OWFlODQ2NTk0YTEzNDNkZmU4YmI3MmEwMDFhZmZhNiBsZWdhY3ktdHJ1bmsKKzEzNjAxIDY2MTNkZmQ3MzkxNzE4Y2RjNWY0MTQzYWY2MTNhMDRhMWUxMmEwNzAgbGVnYWN5LXRydW5rCisxMzYwMiAzNmUyNThiNTc3NTA2NjkzYzQxMjExODg2NmM3ODQ3MzJjZjcxMTFjIGxlZ2FjeS10cnVuaworMTM2MDMgNGExZDZjN2IwOTUwMWY5M2M3OGU1MmI5YmVhNGI5ZDZiZmE1YWQ5NyBsZWdhY3ktdHJ1bmsKKzEzNjA0IDYxOTNjYzE0NWI4YzdhZDhlMWNjOTdkZThkMTk1OTFkMGM5ZDc4MWIgbGVnYWN5LXRydW5rCisxMzYwNSBkMWI0OGVlMTQ2MDFmOGE1NDQ2OWI1MTY1NTZhODliZDQ3NTkwNDlkIGxlZ2FjeS10cnVuaworMTM2MDYgODdhMzkzNWU2NmFhY2RjYjFkNDhmMzU3ZDg0NmRhNzczMDNkN2QxZCBsZWdhY3ktdHJ1bmsKKzEzNjA3IDNlNWY2OTY0Y2QzMzE3YjAyZDRlNDY2ZWRhMWVmYWIwNzlmMTFlM2MgbGVnYWN5LXRydW5rCisxMzYwOCA3NjAwOGY4YTBlNWY2Y2RlMTcxNWZlZDFlZDQ2NDI1ODZkYmU5NTM5IGxlZ2FjeS10cnVuaworMTM2MDkgZDA0NjA5YTM3ZGMxMTY2M2IxNjI0M2FiYmI1ZmNhMDQ4ODM4M2EzYyBsZWdhY3ktdHJ1bmsKKzEzNjEwIDViZTk0MDZiYmIwNWNhMTEwMzc1Y2M4NWFjZjQzMDY0MTBhZmI4ZmEgbGVnYWN5LXRydW5rCisxMzYxMSBkNDUxYTIxMWMxNmEzZDY3ZDhmZmNiMWQ5NDcyNjQ4Y2EwOTEwZmM3IGxlZ2FjeS10cnVuaworMTM2MTIgMjU2NzM4ODRhM2QwZjNjZDI3Mzg3ZjkyMTU1Y2JiMWJkMWQzNGRkNyBsZWdhY3ktdHJ1bmsKKzEzNjEzIDg0NjEyYTU2ODhmYzkzYzI0ZTFkNWYwZDQ2NjYzZmFkMGE2NDczMjAgbGVnYWN5LXRydW5rCisxMzYxNCBkYzZiZTBlZDM5OGNmZDM3Njg4YzY3YWI0ZDVmZjdmY2IwZWMyMjUzIGxlZ2FjeS10cnVuaworMTM2MTUgNDQ2M2RkN2JiM2U4OTVmM2UwNTljN2FkZGQ5ZWNjM2E5OWYwZDhmMyBsZWdhY3ktdHJ1bmsKKzEzNjE2IDRhN2IyYjRkMTY2OWFlZjVmMGRlOWM3NzE1NGVhODNmN2Q2OWRmM2QgbGVnYWN5LXRydW5rCisxMzYxNyA0N2UwMDNiZDM1ZWQwNTNhODlmNTlmM2I0Y2Q3NDM3Zjg4ZTYyOGI3IGxlZ2FjeS10cnVuaworMTM2MTggNGI1M2Y0YTBhOThhY2QxYmZjZGZjNjMwMzNkZjViNzVlMDNlMTc0NSBsZWdhY3ktdHJ1bmsKKzEzNjE5IDcwMjllMThiNGYxMWU3N2M0OTU3OGFmYWJmYzRkM2U3YTZjMjU3Y2UgbGVnYWN5LXRydW5rCisxMzYyMCAyZTAwYjg4OTAzNWYyZjQ2N2Y4YTQwZjg0ODc0MWYxOTUyNDYzM2RkIGxlZ2FjeS10cnVuaworMTM2MjEgNzI4YTI1MDBlYTQyZmI1ZmE4MzFiZmM5MGM1NWU5OGZiZDQ3YzRjYiBsZWdhY3ktdHJ1bmsKKzEzNjIyIDFkNGY1ZjQ5ZGU0ZWNmMzhmMTk2MDljOGNlM2Q4ZmM4MmFlZjE2MmIgbGVnYWN5LXRydW5rCisxMzYyMyA3NjljNmI0YzViODg3YzM0ZTc1M2ZmNTY2ZTg5NDc0YjM5MGUzMDQ1IGxlZ2FjeS10cnVuaworMTM2MjQgNGM3NTU5NmU5MmY0ZjhhZGVmYmUwM2NhZWM1Mzc3ZDlkODNmN2E2OCBsZWdhY3ktdHJ1bmsKKzEzNjI1IDljMjkyYWQ4YTZkNDYzYzAzNGY1NDJmYWUzMDdjZTk5OGY4ZGI1MWEgbGVnYWN5LXRydW5rCisxMzYyNiA3MWVkMGEyYzI3OWE2MDVmMWJkZDk4ZjY3N2JlNTY3M2NlNWNkYTBhIGxlZ2FjeS10cnVuaworMTM2MjcgZmEyZTNkMDZjNzkwMmUxNmJkN2EyMGU3M2I4NTM4YzA0MzQ1NDAwMSBsZWdhY3ktdHJ1bmsKKzEzNjI4IDg3MmE4MmZkMGVjNDFkNDg3NGIyNTBmNDAyNDIwZjUwNzdiMjhhZDkgbGVnYWN5LXRydW5rCisxMzYyOSBhYTZjNWY4NmRmODdhNGU1ZWIzY2Q2ZDE2YjY5OWVlY2FjMTk1OTAyIGxlZ2FjeS10cnVuaworMTM2MzAgZmJmNDBkN2ZkNGRhYzI2NWMxMjE0Mzc4M2E3ZWRkNTVlY2RhMmQzYiBsZWdhY3ktdHJ1bmsKKzEzNjMxIDY3YmQyYWFlMjczMmVhYTVhMWE5ZDY2MTczZDc5YmQ3NDRmMzQ4OTcgbGVnYWN5LXRydW5rCisxMzYzMyAwNjhmYmY0ZjU1OGEyMzNjNTQ2YzZhMzdhMzE2YjgzYTFlZDVlNDNhIGxlZ2FjeS10cnVuaworMTM2MzQgNWU4NDhjM2U5YzVjNzFjNDRlNDMyZDJjNDU1Njk2OGFiNjk1MjAyMiBsZWdhY3ktdHJ1bmsKKzEzNjM1IDE0Mzc0YmEzNDFhNjdhOGY2NTU4NWVhYzI5YmNhN2U0NmFjY2NmZTMgbGVnYWN5LXRydW5rCisxMzYzNiAxY2RlNTIzMGM1MDgxOWUzZDI0NzNjYzEwZDI2NzE0YmExYjhjN2Y3IGxlZ2FjeS10cnVuaworMTM2MzcgNmJmNjIwMzc1OTc2MzQ5YTk2ZGViMTQ2NjU2ZjgzNzEzMWQ0N2IyMyBsZWdhY3ktdHJ1bmsKKzEzNjM4IDk5Mjg2ZGFhOTAwZGQ0OGU1NDBmYjc5MmNhNDY5YzQxYWNjODc0NzkgbGVnYWN5LXRydW5rCisxMzYzOSAxMmYyMDhkYjQyYjBlOTJmYWM2YThmOTM3NmYzMjRiNTIwZDZiYmUyIGxlZ2FjeS10cnVuaworMTM2NDAgNzhmNWJmMTc5NzUwNGE5ZTY2OTUyNWZiMGI1M2ViMmY1YWVjMDVmYSBsZWdhY3ktdHJ1bmsKKzEzNjQxIGJlOGVjODI4YzA3MjM3MjhjMjcxOThiZjQxN2MzMjIwMzE5MzhjYmUgbGVnYWN5LXRydW5rCisxMzY0MiAwMTBlN2I2OWQ4NmJmMGUwZjFiNzM4OTRhM2U4YTJmMjExZTMxNmQ0IGxlZ2FjeS10cnVuaworMTM2NDMgZGNjMDkyMjhhM2QyNDIyM2M3OTFhMWVkNDhmMDVkNWI3ZmNjOTc2NCBsZWdhY3ktdHJ1bmsKKzEzNjQ0IDkzOWQ5MTRhZjU4MTZmZmM0NmNmZjc3MjU1NjkxOWI2NDIwZjZiMzIgbGVnYWN5LXRydW5rCisxMzY0NSBkYTljODNiNWZiMDc0NWVjYWFjNGJiNTIzNDRiOGIyYmNkZGM0OTc2IGxlZ2FjeS10cnVuaworMTM2NDYgM2IxOTgwZGI0YWU5OTA0NmNlZDJhODBjMzEzMTU0ZWNmYjc5MGNkZiBsZWdhY3ktdHJ1bmsKKzEzNjQ3IDE2NGI0YmM0ZGRkZDBmODI5NTg2NWRjYzY3MjFhMmIwNjk5MGYwODggbGVnYWN5LXRydW5rCisxMzY0OCAzYTM5ZWJlMjc2YzhmNGY4Yzg5Nzc4ZjMzMzAwMGNlMDhhNWE1OTY1IGxlZ2FjeS10cnVuaworMTM2NDkgZDQyM2Y1Nzg0NGIyNmI3MmI4MWQyZWFmMjY4NTdmNDIxMWQzZjUzZiBsZWdhY3ktdHJ1bmsKKzEzNjUwIDMwNmI0OWQ2ODIzMzdjYjk1NmQwNWVjMmRmMDA5NmJkOGNmZjFjMWEgbGVnYWN5LXRydW5rCisxMzY1MSAyZWIyODc5ZDU2N2Y0YjMxNjlmMmFkYTlhM2M4ZmYwM2E2MjIxMzdlIGxlZ2FjeS10cnVuaworMTM2NTIgN2MyMzk3MTEyMjFhMjQ3NDVmM2IxZTYwZjkzMWY0YjYwNjBkODQxZiBsZWdhY3ktdHJ1bmsKKzEzNjUzIDQ0MmZmZTlhNThjMTNjOTcwMWM0N2VhNzM2NmNkMDliNDcwNWU1NjAgbGVnYWN5LXRydW5rCisxMzY1NCA1ZTc2Yzk5NjVmZTgzOTAxZTBiMTc3MjVmZThiODBmYjZkN2I2MjhiIGxlZ2FjeS10cnVuaworMTM2NTUgOWEyMDAzOGYwYjk5N2VmMGRjMjAwY2ZmMTUxMGFmZDY4NmQxZWE1NCBsZWdhY3ktdHJ1bmsKKzEzNjU2IGE0YjcyNDJhNGI3NGNiZjQ3YzliNmNhNjA0NzJlYzA1MWFmNmVlODkgbGVnYWN5LXRydW5rCisxMzY1NyAxYzZmZGM4YWRhYjBhNGM2ZmRjNWRkMTZlYzYzYjcwYzA5MGFhMTZkIGxlZ2FjeS10cnVuaworMTM2NTggZjcyOWJiYzRhOWYzMTBmOWY3ZWE1ZGZmOTg5ZDViYmQzYThiNGFkYyBsZWdhY3ktdHJ1bmsKKzEzNjU5IDBkODhlMGQyMTg0Zjg5MzlhYmQwZDdkMGYwNDAxY2I1ZjkzZjU5MzkgbGVnYWN5LXRydW5rCisxMzY2MCA0MWE0Njk3OGE0NDRhNzI5ZDc3MmYxODc3MTdkMjYyYmUzZjExY2M3IGxlZ2FjeS10cnVuaworMTM2NjEgMmM1ODU1MjY0NDdlOTVlYjhmNDNlZjljM2JiYWMwZmEzNGE2OWEwNyBsZWdhY3ktdHJ1bmsKKzEzNjYyIDgwNDlkMmRlMWU3OTRhYWM0NjYzZmZmY2IyNDhiYjg4MjRhZTVjNjkgbGVnYWN5LXRydW5rCisxMzY2MyA4NGUzNGQ4MTM4YWM5MDQzNTFmZjhkNTY3YTJlM2YxYTljYjllMGY1IGxlZ2FjeS10cnVuaworMTM2NjQgYzJhYzg5NjkyNmNjNGE3OTg0ZTg1MjhkOTM3NTdhMThmMmU5NmEwMiBsZWdhY3ktdHJ1bmsKKzEzNjY1IDBhNWE4ZjUxM2QxMzYzYTdhNzkzMWM0OTYwYTRlMGI2ODMxNzdkOGMgbGVnYWN5LXRydW5rCisxMzY2NiBiNTZiZGExOTAwZmMwZWQwMGM3OWJkNmFiYjNhNGFhOTRkMGQ0OGNmIGxlZ2FjeS10cnVuaworMTM2NjcgMmMzYWY5MGYzZmFlYjQ1NTZhNTMxN2ZkMjFjMzNmYmU3YTVjOGEwMSBsZWdhY3ktdHJ1bmsKKzEzNjY4IGNkZmE5Y2Q0ZTcyYmIyNmE3ZDVjNDI1NDcxODg0NzQ5YjM0NmZkMzggbGVnYWN5LXRydW5rCisxMzY2OSBjMDk1NDExMjhjNWE0MWRlMzU2Zjk0MGQ2MDFmNmI4ODYzMWY2NDZkIGxlZ2FjeS10cnVuaworMTM2NzAgYzk1ZTFmZDg3YWYwZjA2OTZmYjI3OTdjZDBjYzVhMjg4ZGYxM2I0ZSBsZWdhY3ktdHJ1bmsKKzEzNjcxIDJiN2M0M2Q0YjQ2OWIwZjIyMjBjOTVhNjZhMGYxMWE0YmU2OGE0MmQgbGVnYWN5LXRydW5rCisxMzY3MiAxZGJjNWU2OTc4ZjlkZDJmNTg4OTQyYjQyMWJmODQwZjA0MTVjMGQxIHN0cmluZ19tZXRob2RzCisxMzY3MyA0MWZjYjQwZTg0MWZkNmE2MzEzY2VkZjJlY2FhYmQ3NTYxYmU2OTlhIGxlZ2FjeS10cnVuaworMTM2NzQgZDk5N2UyN2UzMzEyYmMwZGM2NmYyNzA5OTVkNTg3MzFmODlmM2MzMSBsZWdhY3ktdHJ1bmsKKzEzNjc1IGY2MmU0NjVjNGQwMTRiOGUzNmI4NTI0OGZhODEyOWRlMDY5MThhZTcgbGVnYWN5LXRydW5rCisxMzY3NiBiYmQwMzVlNWE5NzJjZmExZWFhNGVmYWM3ZjQ0M2MxZTBjMzY4ZDVkIGxlZ2FjeS10cnVuaworMTM2NzcgYjhhMjlkZTllZDU0YjI0M2FiZDM0NDcwOTk1YjllNDY2YmUwZjcwMSBsZWdhY3ktdHJ1bmsKKzEzNjc4IDg3OGFjMGNkMGU3NjgxOGUyNTYzZGVlZTNlMmE5MTYzZTI5Yjg4ZWQgbGVnYWN5LXRydW5rCisxMzY3OSBmNGVmYmEzMjMyMGVjNDNhODE5NGMyMWI1OGEyY2Q4OTM1ZDViMTM5IGxlZ2FjeS10cnVuaworMTM2ODAgODNmMzlmYzg1NzYzYmVmNDI5YjlmZjI1YTA4ZTFjNTlmY2E3M2JiMCBsZWdhY3ktdHJ1bmsKKzEzNjgxIDM2YTY1NDYyYzI2OWQwY2NkMjVjNDEyZWViZjdkNmFlMGM4NTg0MGMgbGVnYWN5LXRydW5rCisxMzY4MiAxYTY4Yzk3MmQwODQxZTM1ZDRlM2UxMzAzOTE1NDIxODc5MDQ2NzgzIGxlZ2FjeS10cnVuaworMTM2ODMgNjg1MmZmMDMwMzA4ODRiZGZlNzU5ZjJmMzRjNDFhMjRjNWM5NzcxYyBsZWdhY3ktdHJ1bmsKKzEzNjg0IDJjNGQ0OGUzMWJkNWU3OGFiNzA5M2MyZmFhMzhlOTUyZDFkM2U4NmUgbGVnYWN5LXRydW5rCisxMzY4NSA0M2NjYmNmNDM4NGYxMjMxMTMyMDJkOWFhNmE4OWRjZTZmMzZjYmRiIGxlZ2FjeS10cnVuaworMTM2ODYgN2NlNWJhZTdmNzY1YTQ2ZWNlMTU1ZDBlNDE2NTNiOTIxMmJhZjRlNiBsZWdhY3ktdHJ1bmsKKzEzNjg3IDJmMTAyNmRiODIyODBiZWZlN2Y2OGJkM2VhNTk1OTE5OWVmMGNjZmIgbGVnYWN5LXRydW5rCisxMzY4OCBhZWQxOWFmNjBlYTMyNTJjOGRmMGNhZWU2NTZlNGZjMmRjZTliNjNjIGxlZ2FjeS10cnVuaworMTM2ODkgMGJhZmYxMzVjNGI0ZTFiMDhiYTBhZTc4YmQwNjQxYmQzZDRiZjlhMCBsZWdhY3ktdHJ1bmsKKzEzNjkwIGQxNTRhZTdjYTAxNGY3OTEzMGU0NjAyOTQ2YmFmNzMzYTI5YWY2NDggbGVnYWN5LXRydW5rCisxMzY5MSAzYzhjNTU3NjEwOWMzNTdmMWY2YjU0OTk5YjNkYzg0NTFmYTc0MWRjIGxlZ2FjeS10cnVuaworMTM2OTIgNmU2YmRhZTg4MDhhNTMxOTQ1NGI3ZTZkZGJjNmUzYmYxYzYyMjU3NyBsZWdhY3ktdHJ1bmsKKzEzNjkzIDk4ZTU5Yzg0ZWMzMWEzZWJkYmY4NjI4Mjc5NmUxODcyNjA2ZjdhOWQgbGVnYWN5LXRydW5rCisxMzY5NCBhNGFiYTIwNTAzOGViNWEyYWI5OTI2M2UwMmYyMzAxZjg3NDM4ZmJkIGxlZ2FjeS10cnVuaworMTM2OTUgM2UwYzdlNjkzOWJkMDJhNjc1NTBjYTEwNTJkODAyZGEzNGI0ZDRlZSBsZWdhY3ktdHJ1bmsKKzEzNjk2IDFhMjdkZDA2Y2NlMTY5ZGFkYzI4MWQ2YWRjNDQxNzAxODAzMzEyZmEgbGVnYWN5LXRydW5rCisxMzY5NyA2MTdlMTBmYzVkOGQzMjhmYTAwOGZkMTM3YzdjOTQ5YzFhOGFlMDljIGxlZ2FjeS10cnVuaworMTM2OTggNWRhNTdlYTVmYzY0MTgxM2I1ZjI1MDYwNTdmZDAxMTdkNGI2ODlmZSBsZWdhY3ktdHJ1bmsKKzEzNjk5IDMyMDY1MjI0MmU2YmEwNmM1MTVhM2I2OGU1MDY5MmZmNzI0ZTk3YzIgbGVnYWN5LXRydW5rCisxMzcwMCAwNDkyOWFiY2FkODZiY2I1Mjc1NDc4ZWQwY2RkNWFjOTY5YTU1MDg2IGxlZ2FjeS10cnVuaworMTM3MDEgOGU3NGVkMTU0ZjYwODdmZWM3MmY1ZTYzODRjN2M3NjBmNzA0NDcyNSBsZWdhY3ktdHJ1bmsKKzEzNzAyIGY3NjZmYjZmODUyNjVhNDliODM4YjdlM2Q2NWE2YTFjNjhhODE4MjQgbGVnYWN5LXRydW5rCisxMzcwMyAzNDg1YTdlNDYwMGI5ZmVkZjE4ZTY1NWZiZjhhZTlkZTU0NjQ2MTNkIGxlZ2FjeS10cnVuaworMTM3MDQgZmFiODFkZjU2NmQwY2ZjZTQ2NGJmYTg0YzhiNTA0ZWIxYzUzMDQ1MCBsZWdhY3ktdHJ1bmsKKzEzNzA1IDY0YjE1ZTkwOTFhOTJiYjYzNTg5N2NmZjk5ODc1N2MzNTUwNGIyMjYgbGVnYWN5LXRydW5rCisxMzcwNiA1ZjVmYzEwMzE5NTdhYTVhNDJmZTFiNjI3YTQzYzhlMjczNTYxZGQyIGxlZ2FjeS10cnVuaworMTM3MDcgMjQ1ZDJiNjA1MDM2ZDE0ZjE0OTQ2N2M4MDliOGNhMzVhMWQyZDNjZiBsZWdhY3ktdHJ1bmsKKzEzNzA4IGQ2YWI3MmNiMTYyNThlOWMxMTExYTU1OGJmYTRkNmU3NTFkNWVhZDYgbGVnYWN5LXRydW5rCisxMzcwOSA4MTc1YmZkZmJlYTllNDBmODE5ZjBmNmNkZTZhOWQ3MzJmNmFlYWNhIGxlZ2FjeS10cnVuaworMTM3MTAgNmMxMzA5ZDgyY2IxMTQxZmZlMzFiNmNmNDIxM2VlZjg1YmE1YmFhYiBsZWdhY3ktdHJ1bmsKKzEzNzExIDM1ZTBkMDNmMmIwMmY5ZjhjNWRkZmIzMTBhYmI5YWJjZmM1ZmMyMDggbGVnYWN5LXRydW5rCisxMzcxMiAxZTBiMTk2N2JlN2YzZTVkOTRiMjhjNGNkNGY1ODA1MTZhMDM0MjM0IGxlZ2FjeS10cnVuaworMTM3MTMgOTM4YjQ2ZmE2Mzk0ZTg4OGUzZGJkNzhjMDkzODcyNTY2NDc5NGE0MiBsZWdhY3ktdHJ1bmsKKzEzNzE0IGRiYjgwODNmMGNlNzFjMzljYzIyNmRiMjk2MTdkMGNhY2E2OTQxYjEgbGVnYWN5LXRydW5rCisxMzcxNiAyNGM1YmM2YmZjYWFmZThlZTViNWY2Njk0ZDY0N2MxZDNkYzU1MGU4IGxlZ2FjeS10cnVuaworMTM3MTcgZjZlNmNkYmFkYmI1MDRlMGMzMmJlMGE2ZjQ2NWE2NWM5MzhjZmUzMSBsZWdhY3ktdHJ1bmsKKzEzNzE4IDEyM2MzOGRhNmY0MzgzZjgzZmRjNjljM2Q1ZDNlNjZmOTA4OTVhYWEgbGVnYWN5LXRydW5rCisxMzcxOSBlY2VlOWRlNzliMWVmNTczNGY4ZjFkY2ZjZDYwZTFjYTNhYWJlNWQ1IGxlZ2FjeS10cnVuaworMTM3MjAgM2Q2NmExOTcxOTM2OTgwYTVjMGM5NDE2MDgzZTNiZDlkNTk3ZDYzYiBsZWdhY3ktdHJ1bmsKKzEzNzIxIDAxYzUxYjI2OGMwNDk2MWZmMmNhNWU2YmRmZTQ1YWFhOTcyNTZkN2QgbGVnYWN5LXRydW5rCisxMzcyMiBjNzIwMzE4ZTNjNDkyMDc4MTdkZmRiMGMzNjljMTM5OTk1NTJlMTQ2IGxlZ2FjeS10cnVuaworMTM3MjMgODk5NjFiNjgxM2FjMzkxOWI0N2FiOTJlYWE1ODhiMDI5OTQyMGYwNCBsZWdhY3ktdHJ1bmsKKzEzNzI0IGM2Mjc3MzRlYWY5MjlhNzljNjJhMzM1YTlkYTdmNmE0MTUwZjE2OGYgbGVnYWN5LXRydW5rCisxMzcyNSBhODE5NWZhMzI5YWMzOWJmYzJhMzkxZmIyZDFiY2E1NTUzMWI0YzFlIGxlZ2FjeS10cnVuaworMTM3MjYgMWM4ZTQyMjdkOTg3OTFiYWE5ZDgwOTk5Y2Q0YzU4MzVkNjY1NDlkZCBsZWdhY3ktdHJ1bmsKKzEzNzI3IDRmZGQzMzkxNGVkYWI0ODIwMjk2NWEyOGI5Y2UxMTQwYWZiOTI3NWIgbGVnYWN5LXRydW5rCisxMzcyOCBlOGIyNGNkMTdkZjIzZDg3MmUyNmU3NTZiZmEzNmEzZWM2N2Q1NzEwIGxlZ2FjeS10cnVuaworMTM3MjkgYzUyZmJjNmJkMzhhOTE3MDE1YjM5MmQ5YzllMDNhOTRkZTYwMDIxNiBsZWdhY3ktdHJ1bmsKKzEzNzMwIGJjYTJkMTRmM2UzNjUwZjZiMTdkNDIzM2Y4YzFmY2U1Nzg5NGM0ZTMgbGVnYWN5LXRydW5rCisxMzczMSBiZjU2NWIxOGNmZGM0ZmJhZDEwZjA3ZWRhOGY5YTM4MmExYTIwZWEwIGxlZ2FjeS10cnVuaworMTM3MzIgN2VlZWIwZDJiMGE0MDFiMTg3MjgyN2IwNWE1NjYwZmI2NjczN2UxNSBsZWdhY3ktdHJ1bmsKKzEzNzMzIDcxZTBiNDVkNTU4YzJmNjllNGIyMzcxNzVmY2JiMmMyOTI0NWU2YzcgbGVnYWN5LXRydW5rCisxMzczNCA5MTU3YzZkYTc2MTkzYTE1M2E0NmFmZGRmN2RlYjQxMDE3OTU0ZTk5IGxlZ2FjeS10cnVuaworMTM3MzUgZGU4ZmZkMmU3MWI1ZmFlYWQ2NzAyMmYzODBhZjlhZTY3YmMxNmRkNiBsZWdhY3ktdHJ1bmsKKzEzNzM2IDk4ZDQ1NzM4M2EyZDNmNGIwNWZjNzdhNmExNzI0ZWMzN2Q3N2ZjODYgbGVnYWN5LXRydW5rCisxMzczNyBjMzg4ZjAwYWZmZTdkY2IzY2FhMWZiY2YzNmMzN2I1ZTIzYjM5NjMxIGxlZ2FjeS10cnVuaworMTM3MzggNWZlMjYzZmI2NzRhYjFhMDA2N2U2Y2FjMDkwYzQ0MDY2NWFhMTdkYSBsZWdhY3ktdHJ1bmsKKzEzNzM5IGE4YjVhNWIzOTJmYmM1MmMwOTY4MWUwY2EyYzVhMzU3ODRhMzQzNmUgbGVnYWN5LXRydW5rCisxMzc0MCBjZjdjZDdiMDRmYTY1OWE1YzIxM2EyODE4ZTBkNzczZmIyZmNkMzQwIGxlZ2FjeS10cnVuaworMTM3NDEgZDVmNDZmNTk5NTg1YmI2ODQ1Zjc4MmVjN2U5NzQxZWY3ZTE3MmNhMyBsZWdhY3ktdHJ1bmsKKzEzNzQyIGQ1YjM3MzQ0MGY5OWEzODI1ZWNiODdhNDgwNTYwM2U3Mzg1NjQ1NjAgbGVnYWN5LXRydW5rCisxMzc0MyBlYWY5ZWVhYjNiY2ZmOTFkY2RkZTE5ODlmZjUxNjFhM2E2Y2ExNzY5IGxlZ2FjeS10cnVuaworMTM3NDQgOTY1MDFjYzNhNjYzYjQ3ODUzMjU0N2MwMGI2Y2VmNWFkODdmNmZlMyBsZWdhY3ktdHJ1bmsKKzEzNzQ1IGI1YmQzZjk3OWRjOThjMzFjYWI2NWU1ZDA3ZDdiZmExOTU2NTI4YTcgbGVnYWN5LXRydW5rCisxMzc0NiA0YWFlNWFmZTFmMTQ0NDQyZjU2ZWNjYmQyNDA3NzBjODU3MjIwMjVjIGxlZ2FjeS10cnVuaworMTM3NDcgZjQwNmU3OGVjMTBiY2RmNmNlZmQ5Y2EyNWZkOTlkYjI0NjRkMDRhNCBsZWdhY3ktdHJ1bmsKKzEzNzQ4IDQ0NWNiZThkYjhmNmY0N2U2MTc2MmViY2M2NzljMWRkNmI2MTc1ODcgbGVnYWN5LXRydW5rCisxMzc0OSAyZDczMzFmNGRmZTM1MWJjOWZiOGZhZTg0YjgxYjFiYzE5MTJkNTNkIGxlZ2FjeS10cnVuaworMTM3NTAgOGJiMjdmNGViZTE2ZTVhOTc0YzA5NTM2ZWI5MzJiM2Y5ODYxNmNlYyBsZWdhY3ktdHJ1bmsKKzEzNzUxIDMwODk0NjE5NjNjNGI5NTc2M2U1MzA1YzMwN2ExOWI1ZTMwNjM1M2QgbGVnYWN5LXRydW5rCisxMzc1MiBlY2ZlM2Q4Y2IwYzM0NzEwZDZiZGVjZWUxYTQwNmZiYjA0MzRiNWM2IGxlZ2FjeS10cnVuaworMTM3NTMgMjg1NmFkNWM2NzlhZTczOWM2NjMxMTI5NzViYTViZTMwNjQ2MDY0OSBsZWdhY3ktdHJ1bmsKKzEzNzU0IDlhNjZlNzgwN2M3NzM0MTllMTU4NjZiOGY3NjZlMjE4NmVmODRmMTMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzU1IGFhNGM4ZTJlZjViNDI5ZTkwODZjZTgxZjY3YThkMTYxYTkzZGY1ZTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzU2IDkwNTIyNjQ3MWI0YzdmOWZiMTkwOWMyOGZmOGMzMzg5MzNjMDJmYWEgbGVnYWN5LXRydW5rCisxMzc1NyBlMDFmMjM1MzliNmNhOGIzMmM1MGNiODBhNzFhODFlMGQ2ZDNiMjYyIGxlZ2FjeS10cnVuaworMTM3NTggYTBjNTIwYzFkMTJkNDZiNWU5NDgzOWE4MDJjOWM4ZGZlYzE4YjMyNSBsZWdhY3ktdHJ1bmsKKzEzNzU5IGU3NzNkMmYwNzQxZGM1ODcyNDkyZWU4ZTY1OTk0OGU5NmYxMjhkYzUgbGVnYWN5LXRydW5rCisxMzc2MCBlMGU2N2NmMmZjNjQ0NTE5ODBiNTQxZjJkMjU3MTM0YjY2ZDM4MzBlIGxlZ2FjeS10cnVuaworMTM3NjEgMTBlYmIyNWIyNDJkN2EwMDk0YTU5YTcwMjlhNzdjZjlkMmZjNjIyNyBsZWdhY3ktdHJ1bmsKKzEzNzYyIGI2OTg1OWI2OTc2MzljZWRmNTY5ZTU3MzUyZGZjNWJlMWRiZWQ1NTIgbGVnYWN5LXRydW5rCisxMzc2MyA2ZGM0Y2MzMThhNWM4YTEwMzNiOTk4MTgzODYzMmNmZWFhZjgyZTY5IGxlZ2FjeS10cnVuaworMTM3NjQgZTc0Njk0NGU5YTRhNjc2ZjljODM3MjNiMmYzZjdkNThjNTNjNjdiMSBsZWdhY3ktdHJ1bmsKKzEzNzY1IDgzM2ZkMjMzOGM2OThkYjQ2MzQzZjc2ZjBkNzhiMTBjNjdhMTU5YzggbGVnYWN5LXRydW5rCisxMzc2NiAwMjg3ZjViMzIyNGNjNzgxN2IzZDRlZmYzMDUxODQ0YWZkYTYzMWE1IGxlZ2FjeS10cnVuaworMTM3NjcgMDVlMGNiMzY5MTQ2MjdhNjkyMmJiMDM1MDA3OWMwNGJkYzNiYjMyNSBsZWdhY3ktdHJ1bmsKKzEzNzY4IDdmYjJmNDU2MmY3NjU3ZGEzNDliNGZhMWUzNDk1Nzc1ZDIwNTgwY2QgbGVnYWN5LXRydW5rCisxMzc2OSA3NzljZTQ2ZTM0MzBhOGFkNjVhZDkxNmNlMmEzNDZkZjdkZmUwZjQ1IGxlZ2FjeS10cnVuaworMTM3NzAgNTZlZjRjMmUwZDdlZmJiZDkxY2E1OGMwZDZkM2JmYjQ2ZTM4ZDY4YiBsZWdhY3ktdHJ1bmsKKzEzNzcxIDU3N2VhMjYxYmRmMjU5YWEzMjQxNjcxMGIwMTcyNmEwOTg4NmI1YTUgbGVnYWN5LXRydW5rCisxMzc3MiA0Y2M0YmFhMjRhNDAwNmUzZGYyMWI0M2Y2NTcxZGUzNjM3ZGZhODExIGxlZ2FjeS10cnVuaworMTM3NzMgNWYwMzI2ODZhMzcxMmQ2Y2Q4M2M2ODkyNjM0MWNiNzNiYjk0ZjY1NCBsZWdhY3ktdHJ1bmsKKzEzNzc0IDAwNjFjYTQ4NjVkNzM0YzhlODhiMWNhZGE2Y2UyMzA5YzY1YTI4ZmQgbGVnYWN5LXRydW5rCisxMzc3NSA2YWFjMzFjZDIxMDI1ZDgyNDFkNjYyNTQwZTc2MzE4ODY3Zjk0OGJjIGxlZ2FjeS10cnVuaworMTM3NzYgNDM4NWIxYmNiYzNiM2VhYjkxZjQzOWEwNjcwYTI2MTRlZjVjNTJhMSBsZWdhY3ktdHJ1bmsKKzEzNzc3IDg1NGI4MDEyNTNmMGZmYzZiN2Q3MmMwMWZlOWQzOWZkNWU0ZjU5NzEgbGVnYWN5LXRydW5rCisxMzc3OCBkMTNkYTE5NDE4ZWNhOGRlZjI3N2FjMTgxNjczNWE4OTkyNTQyYzgwIGxlZ2FjeS10cnVuaworMTM3NzkgYzljMTg4NDI2ZTc2YzJlOTNjMzNjYzMwMWE0MTRhNWU1ZjZlOGY1NCBsZWdhY3ktdHJ1bmsKKzEzNzgwIGU2MWM0ODZiMzU4YTUwNDU0MjU1NTA5MzZkNDMzYjg4YjlkMThmYzkgbGVnYWN5LXRydW5rCisxMzc4MSBhZWRlN2IyZGQ0MmZlMGZlMmQzNTg0NmNjMTVkZTQ5YWI5ZGM4YjQ3IGxlZ2FjeS10cnVuaworMTM3ODIgYjNmMWFiZDMwMjdmZGI5ZmMxMGMyY2M1ZjI5YWJkZmUyMTc0YjEyZiBsZWdhY3ktdHJ1bmsKKzEzNzgzIDJmMDdiYzU2ZTk3ZTdhYzc1YjRhYTAwMjFmZmU5MWRhZTQzZjdmNmIgbGVnYWN5LXRydW5rCisxMzc4NCBlY2M4MDE4YTQxOGMzNDc1N2FlMDcyNTdhNTVlNWUxNzdhZmIxOTBiIGxlZ2FjeS10cnVuaworMTM3ODUgYzZiZGYwMzJiNzA1NmUyYThkYmE4MmUxZjA4NzJlZmQ4NmMyZTc3NSBsZWdhY3ktdHJ1bmsKKzEzNzg2IDBkNzNjZTZkNjIyNjdjYWU3NDMzZmVkNjc0MTM2YzM0NDJiMjIwZDggbGVnYWN5LXRydW5rCisxMzc4NyA0MjdjM2I1MDA1OGVhYjBjOTBhNDY3ODAxZDgzYjY2NTBkOWQ0NzE4IGxlZ2FjeS10cnVuaworMTM3ODggMjZmYmM4MGZhZGYyNWFkYzBlMjkxZWI3ODJkMDFlODE5MzkwZTYyNiBsZWdhY3ktdHJ1bmsKKzEzNzg5IDBkNDRiMGRiZGQ5NTFiMTkwMGRmNmRlZTE1OGI3ZWE1MGQ2YmJiNDcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzkwIDdhZDRlMzk4ZjNlYTNkYzI0MjM4MmZlY2ExMjU1YjU2ZWY0MWZhOTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzkxIDkyODZkM2UxNDc0YzU0NjM1OTY1MTM0MWJlOWI4MTU3YmZhZGE2Y2EgbGVnYWN5LXRydW5rCisxMzc5MiAyMzQxYmU3NGI3NTgyZjc2MzhhNzQxZGZkMjg1NGJiNzBhMzJkMzdiIGxlZ2FjeS10cnVuaworMTM3OTMgMGE3MGEyYzVkOWU2OTk3OGNlYTQ5MmU2MzAzYTkwNjA5YzVkYzI0MSBsZWdhY3ktdHJ1bmsKKzEzNzk0IGVhZWVhOWU0MjM2OThhMzI3NzM4MzM5MjMzNWNmMzBhMmNmMmE5NGQgbGVnYWN5LXRydW5rCisxMzc5NSA2OTY4ZmRiYjFhM2ZlYzkzZDM4NzE1YjY2YjM3ZGY4MzE0ZjBhMzMzIGxlZ2FjeS10cnVuaworMTM3OTYgODEwYzI1ZDUwNDFjNGE1MzRiMmY1NWNkMTdjZTgyZGRlMGJlZDQwOCBsZWdhY3ktdHJ1bmsKKzEzNzk3IDQ3MTcxZjJkN2Q1ODVkMDA4YjI4MmU4NmE3NzdhYzJjYWYyMjZiMWMgbGVnYWN5LXRydW5rCisxMzc5OCAzMWJlY2M0MzI1MjM5ZTBkZjQ5NDIwNDE5YzY2MWM2ZGYwNjNkOWYxIGxlZ2FjeS10cnVuaworMTM3OTkgODMzNjE4OGEzYzEwMDUyMDY0NTM5OGJkZTFlZTVlZmUwNWNkOTU0NyBsZWdhY3ktdHJ1bmsKKzEzODAwIGMwYjg2YTQ0YTEyMDNhNDU0ZjA4ZjFjOGI2YjZmZmE1ZTljZjQ5MTEgbGVnYWN5LXRydW5rCisxMzgwMSAyYjI2ZTQ4YTg1YTZhMjRlMDUzZWJlYmE4ZTZiN2RlYjFmZTgwZDJhIGxlZ2FjeS10cnVuaworMTM4MDIgM2ZlOGQxMzMyOGM4MTMyOTM0NzI1NTE1ZGE4NWU0ZmU3Mjk4YWRhMiBsZWdhY3ktdHJ1bmsKKzEzODAzIDJlMDg3NTM5ZGE2MDRkY2I1OTVmM2IzNDQ3ODc0MmEwNzdiYzNiZjQgbGVnYWN5LXRydW5rCisxMzgwNCAyY2M2YTEyY2Q0MTE4ZTJkZmI3NzRjYTYwMzJlNDg0YTRkNWFiOGMxIGxlZ2FjeS10cnVuaworMTM4MDUgOTJmN2FmNDJlZDkxYzVhYTc1YWUwMzQ4NjE3MjU3ODJhMDBhYWVhNCBsZWdhY3ktdHJ1bmsKKzEzODA2IDIwMWFjMDY5YjBkMGI4YTg4M2ZkYjQ3ODVhYmZlNjQ2OTY4MTJkOWUgbGVnYWN5LXRydW5rCisxMzgwNyBmZmNkYjA3MTE2OTU4NGZmOTdmMTE5OGU0ZGE1MWYwMzNlNDE5MjA1IGxlZ2FjeS10cnVuaworMTM4MDggZWZhNzVjNjk4NTdkMmIyODJmYzhmOGE0Njg0NzE1NzQ2OWMzNWJkNyBsZWdhY3ktdHJ1bmsKKzEzODA5IDY3MmRiYmMzOWJhMDgzNGI5NmM5MWMzYTJiNzY2NjIwMjJiYmU5NDUgbGVnYWN5LXRydW5rCisxMzgxMCA0Mjg4NjVkMDBlZWVmNTUyZTEyYzBlM2UxMDNiNmRiNTBhOWM1NGMxIGxlZ2FjeS10cnVuaworMTM4MTEgMmUyMGEwZmMyYzVmM2IyYjk4OTk0OGUyYjk5Yzc1YjdlOWY0ZmQ4NSBsZWdhY3ktdHJ1bmsKKzEzODEyIDNiOTgxZWFjYWQ3YjQzOTM0ZTk2NzZhOWE5MmFmZTI4ZTM2M2YxZmEgbGVnYWN5LXRydW5rCisxMzgxMyA3MGNjY2NhNmJkZjA2MWUzOWZjMzQ1YzQ1YmFkNTY4OTYxOWZiOTY3IGxlZ2FjeS10cnVuaworMTM4MTQgYTQ5OWQyMGEzNWNhMmNlYWQ4NzZkMmEwOWViMWZmZDFjYWFiMzkzNyBsZWdhY3ktdHJ1bmsKKzEzODE1IGNhZTRiMDkyNzNiMzBjNzg2ZDViZDMxNDA4ODc1YTNmMDc5MjMwMGEgbGVnYWN5LXRydW5rCisxMzgxNiBhZGY2ZDIxY2NkN2YxYWE0NGQ4YzZjOTk5ZTkzZDZkMDFhYjQyNmEyIGxlZ2FjeS10cnVuaworMTM4MTcgY2RkOTI4ZDIyOTNjMjgyZWYwYjlmY2ZiMjA1NWQ1ZmQwNDQ2MzFlOSBsZWdhY3ktdHJ1bmsKKzEzODE4IGQ0MTEyZDRjNWJiMTgzZTY0YWI3N2RmZTEwYzk3OWJjZDJjZTMxYjIgbGVnYWN5LXRydW5rCisxMzgxOSA5OGUzMDM5MzliMzllMjJlYWUyN2I2ZjIxNmJmNWQ4Y2M1YjY3OTI5IGxlZ2FjeS10cnVuaworMTM4MjAgMjAzNTBlY2NhNmU0YjEzMjgxNjg2MjVkYWI5MjJjNTM4M2RmMmU0NCBsZWdhY3ktdHJ1bmsKKzEzODIxIGY2N2NlMTUyNzE5YWFmZTljYTFjZmIyOGU3NTFlOGI4Y2U1ZWNhMjcgbGVnYWN5LXRydW5rCisxMzgyMiA4MzdmZTc1ZDZkYzE5ZTAzNjAyMWM4MGEyNjE4NzAyYTM4MGY0MjE2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgyMyA1MTg5ZWE2ZTRiZjZlZTQyMzEzNzFiY2QyNmQ3NTc0YmQyZWJhMTFjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgyNCBhZGY4N2QxM2EwYzFhYWYxMTNlOTQ1M2ZjMGI4ZTIyNWZmMjk0MGU5IGxlZ2FjeS10cnVuaworMTM4MjUgZjJjOTIwZDAzZjQ0Y2UzMWQzOTdkODA3YjBhZWE3YzdhY2QxYTBiZSBsZWdhY3ktdHJ1bmsKKzEzODI2IGNjZGY1ZGMyYWNmNjUyNjQ3Yjg4NDQ0NTZjM2I4MjMxOTA5ZGQzNjkgbGVnYWN5LXRydW5rCisxMzgyNyA5NjQxODY3NDVlYTZhNGQxODU2OThiNzM5MWU0MjMxOGMzYmZlMDJiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgyOCBkOTcwYWYwY2VjZTk2MjBkMjQ3MTFiNmZjMjQ2ZDNiNWRkMDgzMmY4IGxlZ2FjeS10cnVuaworMTM4MjkgMzMxZWU0YWZlOWJlZDg2YmRlOTMxMDFlZDVlZDU1YWU3OTM5NzA1NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM4MzAgYjdhZDE4MDliZTA0OWYwMjM4YzFmN2I4ZTJiMjRmNjliY2Q0MGZmNSBsZWdhY3ktdHJ1bmsKKzEzODMxIDc4ZmRiNmMwYzBhMTUxMjMyODI3NDM3MzYzMDg5Y2VkZGMwZmYwNGUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODMyIGE5ZDI4YTA3YTMyNzZmODk5MzlmM2I2YjQxZmRmMjA2YTZkZjZjNTAgbGVnYWN5LXRydW5rCisxMzgzMyBkMzY5NmJmMDhlZWVhODYxZDgwNTk5M2Y3ZDVjMmQxYWVhZTU1NWJlIGxlZ2FjeS10cnVuaworMTM4MzQgYzZhYTMyZmIzY2Y4ZmFmMTYxZDM3NTRmYTQ3ZDc1MjA2OTM4MDUyNCBsZWdhY3ktdHJ1bmsKKzEzODM1IDAwOTRiZjE4ZTY4ODg1YjAxY2U1YjIyM2E4MjBiMjVjNzkwZmYwYzYgbGVnYWN5LXRydW5rCisxMzgzNiAyNTYwMjM2ZWNlZGJhZGFiYjc5M2EzYzUyYzMzZGVkNDE0ZjZlZmI5IGxlZ2FjeS10cnVuaworMTM4MzcgNDhmMmIxOGJhZDVkMWZmYTEzZDZjODRjNzliZDMyYWJkOThiODk4ZCBsZWdhY3ktdHJ1bmsKKzEzODM4IDZkNjQ2ZjdlMWExYzdlZjRiMTU2ZTFlYTIwZDExYjYxODg1YmJkYTYgbGVnYWN5LXRydW5rCisxMzgzOSA4ZWM2ZDJjNmM1OTgxZWYyNjVhNGZkNmQwYjBlODM2OTMyMjM4Y2Q5IGxlZ2FjeS10cnVuaworMTM4NDAgN2YxNzVjMzIzYjhlNDZhOGM1ZGRlOTE3MGJkNDBmNjY4ZDI3Mzc4OSBsZWdhY3ktdHJ1bmsKKzEzODQxIDgwMjg5MDhhOTg4OTkxMjM2OTJjNjY2ZDdmZDZhYTlmNmU3OWIwYjQgbGVnYWN5LXRydW5rCisxMzg0MiBhZGI1YjZkZGMxZTVlZjVjN2YwNGQwZWFkOGFiN2VlNDgwZTU1MzI2IGxlZ2FjeS10cnVuaworMTM4NDMgNDI0YjMxYWY2ZDUxMGUxNTVkODE1MTc2ZjlmZDg5ODZkNGVjMDI2OSBsZWdhY3ktdHJ1bmsKKzEzODQ0IDQ0YzgyMmE0ZDk1MDE4NjU2OTM4OWM3NWYzZmNjZmI3MjU5YzQzYzcgbGVnYWN5LXRydW5rCisxMzg0NSAxNTg0OWZlYWMzZmEwMWRjNjFkMDQ1MmQ3ZjU5ODE3MWRlZWU5NmJlIGxlZ2FjeS10cnVuaworMTM4NDYgZDNjNGMxM2UwMTM4YzI0Y2VmNGQwYzcxMWYyMDkyNmFlOGQ2NzQ3YiBsZWdhY3ktdHJ1bmsKKzEzODQ3IDc3YjMzMmRjMjA2MzY0NGVmMTRhNTQyM2E0ZDA0ZTg1NWJjMmRlMTMgbGVnYWN5LXRydW5rCisxMzg0OCBlMzQ0YzFmZmNkYWY1MzZlMzMyODVkY2IxOTQ2YTM3YmMxNGIyMTliIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzg0OSA0MjMyMDNhYWJlZmI0OGNjZDY2ZDY4YTdjY2Q1ZjE1NjRiZTBhODRhIGxlZ2FjeS10cnVuaworMTM4NTAgNThiOGQyMTZkNzIxNGNlM2MyYjNlNjhkMjI4ZGI1MGQ1ZWVmY2ViZSBsZWdhY3ktdHJ1bmsKKzEzODUxIGU2ZTQ1YTYwZTFlMDI3M2FmODgwYjczODBkYzFmYzc1NTE0NzAyMTMgbGVnYWN5LXRydW5rCisxMzg1MiBiNDQyNDBiMjczY2ZiNTMzZGNkMzQ3MjNlNmU0MTFjMTI3YTRmMjEzIGxlZ2FjeS10cnVuaworMTM4NTMgYjFiYjZkN2EzMzVmNGY1MjQ0Y2NhYWNlYTU4NjVhZDQ2YmI4ZjE4ZSBsZWdhY3ktdHJ1bmsKKzEzODU0IDE1ODEzMDc2Y2JlZjZhZjU3MTg3MTIwOGNkZTUyMDRkN2ZiNWQxMzggbGVnYWN5LXRydW5rCisxMzg1NSBmZGNiODlkMDA2OTU0YjhlOTM5NjAxOTMyZWI4ODkxMDc5NDVlNGM4IGxlZ2FjeS10cnVuaworMTM4NTYgMDBkNTc3ZTQ0ZDM0MWU4NmIyMzBhYzI3MDdjMzdkMTJmOGNkNWQ0ZCBsZWdhY3ktdHJ1bmsKKzEzODU3IGE1OTRkMWU4Y2QxYWE1YTgyMDZlY2MxMGZhN2U3OGMyODBkNDhlYTMgbGVnYWN5LXRydW5rCisxMzg1OCA4M2E5ODYxODBmNDFkNjg3ZTA3YTU5NGZhODViMWFlZTI3NGY5ZmJjIGxlZ2FjeS10cnVuaworMTM4NTkgNTU2NjY0YzYzOWZjMjY0ZWEzZWE0NDNjYWRlZTQzOTIxZGMxZjcyNyBsZWdhY3ktdHJ1bmsKKzEzODYwIDNjNDQwMjhiOTE5ZDRiZWY2N2VkNDljZjY1YmRjZmE0NDkxNWRlNzggbGVnYWN5LXRydW5rCisxMzg2MSA4OThjMzNlMjE2YmIzNjA3YjE3ZWY2MTExYzE1Njg0MmVlYTljNTc4IGxlZ2FjeS10cnVuaworMTM4NjIgYjRkMmY1NDY1YjNmODk4ZmQ2ODVlNGM0ZWRlNjUyZWE3YmRiODM0MSBsZWdhY3ktdHJ1bmsKKzEzODYzIDA1ZjY4ZDdmOTFhYzQyMGM0NDEyN2VkMTY4NWFhOThjNjZjN2YwZDcgbGVnYWN5LXRydW5rCisxMzg2NCA1NWExZWY5ZWJkNGNkZWM2OWU1YWExZmZjNGM2ZDQ4OTYxMjkxYWY2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzg2NSAwYWUyNDQyMGM4YTlmMjZmYjAwY2Q3Y2U3MTcyMzVmYmQ5MjE0NGJjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzg2NiBjMWI3MjViMWExNDQ2MmNiMzEzMTAxNDFkZWRhNTExNWMwYjAzZDEzIGxlZ2FjeS10cnVuaworMTM4NjcgYzcwMmExMmQzMThkNjg2YzM1ZDM2Mjc3OGZmMTBjN2NjZjNmNzY1NCBsZWdhY3ktdHJ1bmsKKzEzODY4IGVkMWI0OTgyMmY3MDU1ZTM4MmY5OTMzZjVjM2E2MjE2ZmEwZTVlZmIgbGVnYWN5LXRydW5rCisxMzg2OSAwODJmNDJkNWVhZTMwZWNkMjVlM2ZmYTVkNGExYjQ1NTYxNGExMWVkIGxlZ2FjeS10cnVuaworMTM4NzAgYTJiOTYzZjdhYzk5MDcwNTEzYzY2MmZjZjU1ZTZjOGRjYjdlMzIwOCBsZWdhY3ktdHJ1bmsKKzEzODcxIDU5NWNiMjlhODg2N2VlMmFlNjY5YmUxYzg0NTU5NTExYzUxZjEyNDEgbGVnYWN5LXRydW5rCisxMzg3MiBhZDc1N2FmZjhkMzc5NWMxMWUwNGQ3MmI1NGVmZWRmMjZmZWM1MGI2IGxlZ2FjeS10cnVuaworMTM4NzMgNGZkYzljMWVjYWY2YjdjY2ZmYWE2N2I4YjA4ZjcwZGY3ZDIzMWE3NCBsZWdhY3ktdHJ1bmsKKzEzODc0IGZhZDU1ZWVjNWRmY2RhMTNmMmI4OTM2ODUyNWFiOTZiNmU1NWY1ODEgbGVnYWN5LXRydW5rCisxMzg3NSBmOWVmMzY4YjhjMmQzZmFkZTdjZGU1OGI5MjE3MDM1NDE5NTUxNDcxIGxlZ2FjeS10cnVuaworMTM4NzYgNDg3NjIyMjg4ZjljMjk5NDUwNDJhNmViZTNiZTdkY2I1NjQ4MmI1ZCBsZWdhY3ktdHJ1bmsKKzEzODc3IDNkMTU0YmU4NzE2MjllYzZiNmNhYTdmMTJjNDI0ZWI2N2YwZTYyY2IgbGVnYWN5LXRydW5rCisxMzg3OCA3MGFkY2NkNDUyM2E0OTFmMmVlZjI4YjAzZjMyNTZkZjNlMjgzZTRiIGxlZ2FjeS10cnVuaworMTM4NzkgMzM0MTAwMjE4YTRiMWRkMjAxNjdlNWI4Y2FlM2I0MmYxMzEwMjk3YyBsZWdhY3ktdHJ1bmsKKzEzODgwIDQyOTQxZTJlYjlkODZhNDhmMjNkYzJhYTNkNzczMjc5OTcxZTIyOWUgbGVnYWN5LXRydW5rCisxMzg4MSA2Zjc1MDdlZjJiMTE1YTUzYmI5Y2Y0NmI4ZjFhNDM5ZWU4Mjg2ODNhIGxlZ2FjeS10cnVuaworMTM4ODIgN2FlNWM0MDUxMDQxZTVhMDNlODcyMDVmZDZiNzYxNmRjZDJjNDdjMiBsZWdhY3ktdHJ1bmsKKzEzODgzIDhiODE1ODA1ZjEwY2I3MmJkOGUwZGQ5OTVjZDI1ZTMxMWQzMmNiMzAgbGVnYWN5LXRydW5rCisxMzg4NCBkODNmYTFkZDdiNzk4MTk5NDgzYWI3YjQ2MWMwNThjMDg2YzM2MDViIGxlZ2FjeS10cnVuaworMTM4ODUgY2JjNDYyODRhNWFjYjg0Y2I1M2ZiMjIyMDZhOTM2YTNhMjY5ZTAwMyBsZWdhY3ktdHJ1bmsKKzEzODg3IDRjNmM4ZWZmY2I0MmExMmJlMjVjOGZiNzcwNWQyODUyMTU1ZmI3ZjkgbGVnYWN5LXRydW5rCisxMzg4OCA1M2IyOTc0ZWQzZDM2ZjcyNDI1NzRmN2RmNjc4NTBhZmYyNDM4ODBlIGxlZ2FjeS10cnVuaworMTM4ODkgMTA2NjhlOGEwOTc1NmMxNGRlNzhiZDg5ZWNmNWU3NjlkY2MxNjg5YyBsZWdhY3ktdHJ1bmsKKzEzODkwIDgyNmVmOGYyODc4MmNlOGQyNzIxOTU2OTY3MmNlZGVlZDc0MGVmMzYgbGVnYWN5LXRydW5rCisxMzg5MSBjZmM2NTE1OTM3YTY5NTRiZGI4MTJjNWFhMzM0MmVlYTIyNWZkYzZmIGxlZ2FjeS10cnVuaworMTM4OTIgYzVlZGQ4NmUyNjk4MGQ0Zjk5ZjQ1OThjYzExODkwMTVkOGMzMzRmNiBsZWdhY3ktdHJ1bmsKKzEzODkzIDY3OGE5YTc5YzdlODViNzI2MjJlNGRjYWE4NTQzY2RmYjUxZTJlY2MgbGVnYWN5LXRydW5rCisxMzg5NCAwM2QxYjk4ZDE3OGRjZmU1NTUwZGQ1Y2FkNzBmZWFkOTY0ZTkyOGI0IGxlZ2FjeS10cnVuaworMTM4OTUgOTE1ZmFkZjIyOTQxMTM5YWNiM2M4MWE0NjY2YjE1YjQwODg0ODI4ZSBsZWdhY3ktdHJ1bmsKKzEzODk2IDM3MWI5NzYyZDYzZGU0NTUxNDNkOTU5MjI4YWI0MjM3N2Y4MjkyN2QgbGVnYWN5LXRydW5rCisxMzg5NyA1ZDU3YzY4YjJiMzIxMjc0YjdjMDllYjkyZWE2MTEyYzQ1YWFhOTkyIGxlZ2FjeS10cnVuaworMTM4OTggMDRmMDI0ZDg1NDFjOGQ1OWM3NDllOGVmMjI5YWRmYWZjOTg0ZmM5NSBsZWdhY3ktdHJ1bmsKKzEzODk5IGU1NTViYTA0YjkyMjc2ZGM4ODUxYTBlZTFlZjY2Yjk1NjU3NWFmZDYgbGVnYWN5LXRydW5rCisxMzkwMCA1ZjQ2Yzc3ODQ5NzE1MGUwYWY3MDFlZDlkZTE3MGM5YTVhYjRhYmRmIGxlZ2FjeS10cnVuaworMTM5MDEgYmU2MDNmY2JhMDAxYWFmZTc0MjgzYjIzOGFmZDVjODdkMmYwOTBmMyBsZWdhY3ktdHJ1bmsKKzEzOTAyIGNhOWJmNjkzNWM1MmE2M2U1Njk0MGNiYWU1YmJjYmZmOWYxZDNlNjYgbGVnYWN5LXRydW5rCisxMzkwMyA0YzdkNjA0M2I0M2EyODk0NDQzMzY0ODQ5YWNhOTcxNWJkNTdlYTYzIGxlZ2FjeS10cnVuaworMTM5MDQgZGZkMmM3ZDM0ZDQ0M2M2OTk0YzYwNTU0MDdiZTg4NDMxMDgxM2IzZiBsZWdhY3ktdHJ1bmsKKzEzOTA1IGQzNDU5OTZmY2I2NTIxZmJjOTM0ZDQxOGIwNDNiYjRjMjM4MjY4ZGEgbGVnYWN5LXRydW5rCisxMzkwNiAyNWMwMjAyZTAxYTYyNjM4MWYxYTExMDRlN2ExNjdiNjUwN2IxNWFlIGxlZ2FjeS10cnVuaworMTM5MDcgOGZkYWMxNjU0NGUxYzdjNjc4ZDliNWJkZWY2OWJhN2RjM2ZmM2Q2NiBsZWdhY3ktdHJ1bmsKKzEzOTA4IDA5ZThhYWUxNmU5OTgwMzI5NzExMmRkMWY4NzQ2MDkxYzA1ZDRmYWEgbGVnYWN5LXRydW5rCisxMzkwOSAyM2YyNzg2NjBjYTlhOTI1M2Q0MzkyYzgxZWY0OGQ4MTYxMjI2OWQzIGxlZ2FjeS10cnVuaworMTM5MTAgOGI2M2E2ZjdhNTIzYzRlMTVlNWZhMzE3ODYxNWJkNjQyM2E4YmFiNSBsZWdhY3ktdHJ1bmsKKzEzOTExIGI5YmJlODhkOTU1NDc3YTNmNDBiNGE4Y2Y3N2Y1NDVmMWVlOGM5YTUgbGVnYWN5LXRydW5rCisxMzkxMiAyOWNlOTU2ZmE3Yjc1ZTdhZTEzNjIxMTRlYTRkMDc1ODYxNzFiOTM1IGxlZ2FjeS10cnVuaworMTM5MTMgNDE5OTBiY2UwMjNhODEwMzg2YzZlOTY3OWQwOGIxMDIwZDIwNTJlMiBsZWdhY3ktdHJ1bmsKKzEzOTE0IDg2MTg0MTVlN2E2NmM3MWJhZDI5ZjQyZjgxZTIxNzk0OGI5MDBhOGYgbGVnYWN5LXRydW5rCisxMzkxNSBkOTE5Y2Y5ZmRkODllNzJiMTFjNGVmOTM0YTBiMGUxNGU3ZTlmYjA1IGxlZ2FjeS10cnVuaworMTM5MTYgN2UwNWE3ZDBiNTExZDVkZjA1OGM1MjAzMmZiZWM0OTBjODNlN2MyOSBsZWdhY3ktdHJ1bmsKKzEzOTE3IDY2MjE2ZjMyNDAzZDFhOTFiNDYyNjA3N2MzNjU2YzA3OTMzZTFiYjcgbGVnYWN5LXRydW5rCisxMzkxOCAwNDBiMDU4MTZiMTdmOTgxMTA5MDhlYWYyNzA3ZWM1YjZkODcxYTc4IGxlZ2FjeS10cnVuaworMTM5MTkgYTEwZGI1YjY4NDNmMjkwZDJiZGNhOGM3MDY5NWEwNTgyNWMzMWRjZiBsZWdhY3ktdHJ1bmsKKzEzOTIwIDMyMjliMTM4MTIxZTJhNGNhYmY0MzM3ZjY0ZmY1NTUzYzliMDUzYWIgbGVnYWN5LXRydW5rCisxMzkyMSBkYzlmMWY5NjQ2OTBiYTQwNThjMTYzNTEyMGE2YzljYzNlMGRhYTYyIGxlZ2FjeS10cnVuaworMTM5MjIgM2ZhYTEyMTg5NTBlZWNlMzNlYTJkZWM4YjI2NmQ0MDFhNzY3ZWFhZCBsZWdhY3ktdHJ1bmsKKzEzOTIzIDNlM2M3MWY0ZDJkZWQxZTRmMWZlYmFlYjkwNjQzOGMwMzk5Y2E0NjEgbGVnYWN5LXRydW5rCisxMzkyNCA0YWQxNGU0ZGM3ZTUxNjAwYzA5ZTk0NWNmNjUzODYwYjRiNzVlNWQzIGxlZ2FjeS10cnVuaworMTM5MjUgMWVmMTgwNzM3N2JmYTllYzhhZDNkNjdiMWNlZTUxYzg1YTRlYTVlMiBsZWdhY3ktdHJ1bmsKKzEzOTI2IDMyYzA1M2M3OWNjYjNjMmNlMDA3NDgwNmVhYWI1MWM0OGM2MGU5NmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTI3IGFjYTdiNWVhZjVlODJmOGEwZjAwYjRjOWY5ZjQyYzM5ODAwMmFiMDkgbGVnYWN5LXRydW5rCisxMzkyOCBjMjRjMjQxODUzNTE2ZmYyYmYzOWQ4ZjMzMGVmNDYwMDkyODA4YTIyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzkyOSBkYWY4OGU4ZWRiYzBlNTNkYWJkNDJiYWI0MjdkYWFlZjk3NjFkNGNhIGxlZ2FjeS10cnVuaworMTM5MzAgYzIwOGM0ZTllMmFhY2Y4ZmQyODI1NDZjOGE4OWIyNzFjNmUwOTUxMyBsZWdhY3ktdHJ1bmsKKzEzOTMxIDE0NjYyODBlNmJiMGEzYjQxZDM0MGRkNWQxYzVmYjA3NGQ1YjNhNjkgbGVnYWN5LXRydW5rCisxMzkzMiBjN2U3MjNjZDYzNDk3Y2I5MzgzOTQyYmFhNDAyNWQwYWYyNjY1MWI1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzkzMyAwMTljZDIxYzhjOWZjYjY1ODQzYzdhMzY3Mjc5ZjVlYzVkN2U5YzUxIGxlZ2FjeS10cnVuaworMTM5MzQgNjFhMGYwMjE1YTk3NmJjZWRkYzQ1MTA4ZmRlNTI2MzY0MjUyNmMzZCBsZWdhY3ktdHJ1bmsKKzEzOTM1IDg5NTEwMmVlYTQ4NTFhNzc4YzA1YWFlZWNmZWM0NTYyZTc3NDgxMzMgbGVnYWN5LXRydW5rCisxMzkzNiA2ZWJmNjkzOGM4ODcyMDE3NjIxODhiNTNmMjg3NDRmZjgyNmQzY2M4IGxlZ2FjeS10cnVuaworMTM5MzcgNTQ4NmRjZjEzZDc3NGNhY2QzNDYzMWJkMjdhODI2YmMzNjQ1MDVhOCBsZWdhY3ktdHJ1bmsKKzEzOTM4IGExNGQ5NjE0ZGEwMDdlMWE5MzA2YjQwOTUyODYyNDU5MjJlZDQwMDggbGVnYWN5LXRydW5rCisxMzkzOSAwYjJlOTk0ZWYxNzVhNTk3NzAzOWYyYzQ0Nzc5MDFkZjVkMzY1MDJmIGxlZ2FjeS10cnVuaworMTM5NDAgNGNhN2I3YjhhODQ5MTZmNTQyMGE3NjU1YTliZTBmZDNkYzhkZDMzNyBsZWdhY3ktdHJ1bmsKKzEzOTQxIDhjNWVlM2MzZDM4OTAxYmRmNGM1MzYzMWVkODZiZWJiOWQ1OTVlOTcgbGVnYWN5LXRydW5rCisxMzk0MiBlMGVjZjFhZWZlMDRlMmRlYmUxZjBkNGM5MjY4ODI4YzNhMmViYTdhIGxlZ2FjeS10cnVuaworMTM5NDMgNjUwZTg5ZDE1NTdmMTQ2MGZmMDk3MTc0ZjEwOTNkZGE5YzA2MTdiYyBsZWdhY3ktdHJ1bmsKKzEzOTQ0IDg3YzVkMGIzZGU1OWViZTAxOTMwOTU5YjVkOTYzNjQ5MWIwNmZiN2QgbGVnYWN5LXRydW5rCisxMzk0NSA3OTFjZjcxN2MwYmU0YmYxYmJhNjFiZDVmM2E4NzU3YzI3OTZhNzI3IGxlZ2FjeS10cnVuaworMTM5NDYgNmM0NTE3MWMxYTFmZTdiYzgyMjNmOGI5YjU4YWEwN2UyZjNjYmIxNyBsZWdhY3ktdHJ1bmsKKzEzOTQ3IDQ4ODJiMmU1MmNiMjQ5YTg5NTA2OGY5ZWQxNmJhN2FhZGRjODMxYWQgbGVnYWN5LXRydW5rCisxMzk0OCA5NWU5Njk4ZmM5MDhjMmQzZWQ0NGI5ZmE2MDllMDNiOTU1ZjI3M2U1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk0OSBjMTYxZDJiODUyMDdmYTc4ZTAwZjllYjNhZjZjMmVhMjgyODYzN2NiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk1MCBhNWE1MTNmZWU1YjFkYjNhNjIxNDNmNWVmZTA5ZTBjNGQwZmU2YzU4IGxlZ2FjeS10cnVuaworMTM5NTEgNTNmNjliODY3NmYzYzFlNThmMWVlOWM4OGJhYWZhNDAwZDc4NmU1NSBsZWdhY3ktdHJ1bmsKKzEzOTUyIGJmMzY4ZjJmN2MwMDZkNWU3NzNmZTM0MzQwOTM2MzJmNGExYzYxNGMgbGVnYWN5LXRydW5rCisxMzk1MyA1MjViNWE5YWNmZDVkZGU1MWM5YWI5NWI3ZDhiODAyNGE1NzBkZWNiIGxlZ2FjeS10cnVuaworMTM5NTQgZjQ2Yzg3YjY2MTU0MjA0YTI2N2QwODc2ZDgyMmE0YTRkMjFhZjNhOSBsZWdhY3ktdHJ1bmsKKzEzOTU2IDUwNzU0NmE4N2RjZmQzYmI1MGZmODgzZTMzZGU5ODkxNjExZDg2YzMgbGVnYWN5LXRydW5rCisxMzk1NyBiNTUxMWMwMTcxMzFmZTYyOWEyNGYwNDg2ZTAwOGY3YjE3YTU0NjdmIGxlZ2FjeS10cnVuaworMTM5NTggMDYxMTU2NDUxZDM2YWY4MjFmODk2NDljODUwOTEyYzg5YjI1OWI0YSBsZWdhY3ktdHJ1bmsKKzEzOTU5IDA2MDY2ODJjN2ViYzM1YzQyZjJlMTFlNzU4ZjgxODMzYjg1M2YxYWUgbGVnYWN5LXRydW5rCisxMzk2MCAyNDEzOGVjM2YzOTYyMTFlNDY0YzAwODkyNjYzYzA0MTlhZTNhMzZjIGxlZ2FjeS10cnVuaworMTM5NjEgM2ZhYjM3MTFjN2RjNjg3MzMwOTQ2MTAyZTkzYmYyYjIwMDZmZWY0NSBsZWdhY3ktdHJ1bmsKKzEzOTYyIGZiYzJjNDg1OGNjZThhNTAxN2EwZTEyZWFmMzJmNTU5NGU1NzBlMmQgbGVnYWN5LXRydW5rCisxMzk2MyBjODE1NWQwNWQ5Y2E2ZmFmOGUxMTJjMjVmMmUyMTRkZWRkOTlmOWY1IGxlZ2FjeS10cnVuaworMTM5NjQgMjg4NzQwNzY1MDg4ZDM1ZDZhOTRjMWYxOTc1M2RmMWRkMzg0ZDllYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjUgNTNiMmYyMWFkNjdmMDgxNmRjYjY2YjliMmExNmI1ZmQ3OGUxY2Q2NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjYgMmY5YjY1YjM4YWYyZGYwNzUxNTExZjIxODFkMWQwMTZiMWU1ZTAzYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjcgYzU4MjFjM2JlZmNhY2JjYTk0YzFmZDU0MDViMDM4M2RmY2UwNmRmYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjggYzZkMDk5YjRlYjQyYTQ0MTk1NjFhMTNiYjYxZGVjNzJhNDFjNDVjMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjkgMWUwZmJlMzM3NTE4NTczY2NlZjM5NWE0YmQwNmEwYmM5ZGMyMDU4ZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NzAgYTYwZmE3NGFhZWFmZDlhNWE0OGQyYmExMDZjNmE4MDAwNzIwNjM0ZSBsZWdhY3ktdHJ1bmsKKzEzOTcxIGNhNzY5ZDk4NjUxNGJiMjkwMmZiMzZhOTExODdhNDdjODJlYzIwZDkgbGVnYWN5LXRydW5rCisxMzk3MiAxY2U0MTk4OWEwM2QwYWVlYjQyODRlNGUwMjFiYzRmNDI5NWZiMjI3IGxlZ2FjeS10cnVuaworMTM5NzMgNDFlMDA3MWRiNTNhODAwODQzNTI2ZmZlNTExODgzZTFiNTllYmVlZSBsZWdhY3ktdHJ1bmsKKzEzOTc0IDEwYWQzNzBiYzViZDFhYTZjY2MzNzJkYTA2YWE0YWY2YWU5MTFmMDAgbGVnYWN5LXRydW5rCisxMzk3NSA3YTE4OGFhYmVmMTE1Yzc0MGM1ZTQyYzY0MmZkYWEzODkxZWZkN2QwIGxlZ2FjeS10cnVuaworMTM5NzYgYTk4OWVlODcyOTYxYzA2ODcxMzZkNWI4ZWJiNWRlMThjZjNhMzBjYiBsZWdhY3ktdHJ1bmsKKzEzOTc3IDdmYjhiMGYxM2RhMGEwOTQ3M2E5YzBmMzM5MDBkMDE1MGVjNzNmNGEgbGVnYWN5LXRydW5rCisxMzk3OCAzMzMwZWI4ZGEyMjI3NGNlMGRkMTFlN2U2MjFlYjE4NzZhMDUzOThmIGxlZ2FjeS10cnVuaworMTM5NzkgYmMwODU2NjBkYmMxMzM4M2JhN2I0NDQ0MmU5ZDRmYTA5ZmU4OTlhMyBsZWdhY3ktdHJ1bmsKKzEzOTgwIGYzMDg2NTQ4NDQ2ZWM1YjA3NDJhNzNhM2MzYjhlMDdiYTZiMmFmYjkgbGVnYWN5LXRydW5rCisxMzk4MSA5NDA0YTViNDE2YjVmNzY5ZDcxZDg0M2JkNmQyOTY5ZDg4MDJhZGUwIGxlZ2FjeS10cnVuaworMTM5ODIgOTg5OTdhYTQ5MTY0MjM2NDIyYmMzZTYyNGYwMWNiM2U3ZTU0ZTNjNCBsZWdhY3ktdHJ1bmsKKzEzOTgzIDg0ZGZmNWNjNzIxNjIxYzEzZTk1ZDk2ZmIxOTJiZmFmNTViMzA0YzkgbGVnYWN5LXRydW5rCisxMzk4NCA0ZmI4OTM0NDhhNmI5NWExNDBjYmRmMzU2NmZjZTIzMWZjMTRjMWRlIGxlZ2FjeS10cnVuaworMTM5ODUgZTNkYzU4NGU5NjIzMGM0YzM0NTc4ODQ3ZWUxM2E3ZjYwN2I3ZjhhNyBsZWdhY3ktdHJ1bmsKKzEzOTg2IGEzMTZjZjlmODFhNzY4ZjlkMzcyZGJkZTJiZGQ4OTJmMGRlYzdkYzggbGVnYWN5LXRydW5rCisxMzk4NyA4ZWRiODFmYTBhNWYyNmQ4NjUwYzNmYzUyODMxNzA0NTgzZjQ3Y2JiIGxlZ2FjeS10cnVuaworMTM5ODggMDljNjNkOTEzYWUwNWFmNDFiODliYjUyNzNlNmQ1YjM5N2MzZGY2MiBsZWdhY3ktdHJ1bmsKKzEzOTg5IDNkNmI5N2E1OGU5Y2E0MGM0ZjhmM2E4OWVlZjYzZjg1YTQ0NGI5ZDQgbGVnYWN5LXRydW5rCisxMzk5MCAwNjY3MDI0MWE3YjFkYTIyN2VlNmYyNWE4YmM4MTYyYWI4MjZjMWJlIGxlZ2FjeS10cnVuaworMTM5OTEgZWI4NDZiNGQwMzg1NjQ4OGU0YTFjMDFjYjM0YWEzYTQ1MWY0MDllOSBsZWdhY3ktdHJ1bmsKKzEzOTkyIDMyYTQ4MGQwODIzY2ZhMWM0M2VhMDkyN2JlMjkxODlhYWIwNjI3MzMgbGVnYWN5LXRydW5rCisxMzk5MyBjYzkyMmE5YTQ4YzAyMGIwNWYxZWU1N2Q0N2Y4YjM2NWUzY2ZkN2ZhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk5NCBiZTI1YWFjYTExZjQ1NmY0YzExMGQzODcwMmRiOTBmZmIwMGM4NGQ5IGxlZ2FjeS10cnVuaworMTM5OTUgMzE2YmUwOGM5ZWNkYTFkOWZkMmY3ZTI5M2IyMTZlYjU4ODBlOWE2MyBsZWdhY3ktdHJ1bmsKKzEzOTk2IDVmMThlNzg1M2Q5MjQzZTJjMmYzNTUyNjJlYzEzMzczNjdlNGUyZmMgbGVnYWN5LXRydW5rCisxMzk5NyAxZGMzOTM2ZTg0ZGIyODE2MWE2MDczOGZkYzRjYTVkOGIxZWY0MWUzIGxlZ2FjeS10cnVuaworMTM5OTggMDEzZGQzOGE1MDMxZDBiOTgzNzA0NzEwZDVhZGY1MjMwZjkxNjdkOCBsZWdhY3ktdHJ1bmsKKzEzOTk5IDBiYzJiYTE3NTIzMDU4OTE4NDZmMGZkZmM2YWU2NjQ2Yzc5NDhiNmMgbGVnYWN5LXRydW5rCisxNDAwMCA5MGY0ODMwZTIxMjJmMmRhYTBjMWY4MTcyNTZhMTgxNjU1MGQ0ZjJmIGxlZ2FjeS10cnVuaworMTQwMDEgZjAyOWQ0N2RkMjk2NGE2YzQ5Njk4MmRmYmUzNmEwZDQ4ZmVkZmQzYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDIgNWI4MDI0MzhkOGZjOGQyMzYwMWY1MmRhMTJlNTMyNzEzZGU1YzQyNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDMgM2E1MDZhYjFjMTM4OWQwYmU3ZjlkNzg2OGJiZjRmYjc1M2NmMDM2YSBsZWdhY3ktdHJ1bmsKKzE0MDA0IGFhYmZhMGQ3MjEzYzNlYThjODE3YTE3YzgzNGQ2ZjIyNzJmMDk5M2UgbGVnYWN5LXRydW5rCisxNDAwNSAyMzljYTQ3ODhiZWMwYmZhY2JjMDdiNzRiZmNlZTU4OTFhMjYzZmExIGxlZ2FjeS10cnVuaworMTQwMDYgOGE2ODcxZTk1ZDgwYjBlYTUxODRjZjcxMWZiMGQyZTZmZGQ1MjczMiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDcgY2MxOGIyNGRlZTNkYjc5Zjk3N2FiMjJlYzU4ZjM5MThkNWZhMjBkYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDggMmQ3OWI0OTFhNTI5YzU0OWE2NDQ4NTJlZTVhYWRjMzA4NTU4MzAzNSBsZWdhY3ktdHJ1bmsKKzE0MDA5IGUwZmU0YzdhOWVmZjMzZGViZjAxMTRjZDdiM2U2NzA0ZTY1N2UzYmIgbGVnYWN5LXRydW5rCisxNDAxMCAwYTNiYjQwM2E0MzA1YTFkMDk1MzI3MTQ5MzhiOGE2OTQyY2ViOTkwIGxlZ2FjeS10cnVuaworMTQwMTEgMzhjNzQ0NGY2MzNhYjgwMmZhNTA0NzJkODFjMTlhMzIyMjNkZjE2MSBsZWdhY3ktdHJ1bmsKKzE0MDEyIGUxMmJlOGY1MTg4ZmQ3NjI1MzU0NDZjNzM5ODBjMmJkZTRhNzQzOTQgbGVnYWN5LXRydW5rCisxNDAxMyBhMDVhMDU2MDI5MDI4YTgwNTgzZDZhZmVjZjI0ODNlYjNiYjIxNTIxIGxlZ2FjeS10cnVuaworMTQwMTQgZTc0ZWYyYjUwNTU1NmVkM2RlZThhZTAxMTkwNDk5ZTNiMmZiYmM0NSBsZWdhY3ktdHJ1bmsKKzE0MDE1IDdlNDI5ZTQ2OTY4YTI0NjFhMWQzZTlkMGI0ZGI0MTY4NzhmOTQ2MTcgbGVnYWN5LXRydW5rCisxNDAxNiA0MjY5OGYzNDViZDMwNDBjNDI1NjlmMjI0OTg0YThjZjVhNzBlMmFmIGxlZ2FjeS10cnVuaworMTQwMTcgZWYwM2YxNmFlNWViMjc1MzQ4M2MwNmUyNGFlNzc4ZjU1Mjc5NDZkYiBsZWdhY3ktdHJ1bmsKKzE0MDE4IDZjNWUxMmM1YTYxNjRkMmQxYThiNDUxNDZmY2E2N2UxMTZhNjg2NjYgbGVnYWN5LXRydW5rCisxNDAxOSAxMmY0NjJmZDI0Zjc1M2VlMjUyYWU2YTI3ZmEwNjFjNzVhN2Y1MWQ4IGxlZ2FjeS10cnVuaworMTQwMjAgZDBmNGE3OWI5ODVkNGRmZGJiZWE1YzYwMTYxMjc3NzUyNjc5ZjQ3NCBsZWdhY3ktdHJ1bmsKKzE0MDIxIDI0NTlmMTE3NjFmMDk1N2Q4OGU4Y2MwZTBjN2FlNTY5ZTQwMGYxZWMgbGVnYWN5LXRydW5rCisxNDAyMiA5NWE5ODMzYjAwMGU5N2RmZTJhZGMxMjFmZmEyODBmMzQ3YzMwODg2IGxlZ2FjeS10cnVuaworMTQwMjMgMTdlMTIzMDU5NzNlYWIwYTdiNjVlYzE3OTBjNTQ4OWUwY2UyNzA0MCBsZWdhY3ktdHJ1bmsKKzE0MDI0IGFhYWVlN2IyMzM4MDIxNWM4NmI5NTBjMTFlNGE1YTA0NDFjNWNiOWEgbGVnYWN5LXRydW5rCisxNDAyNSA2OTgwZDA2ZTM2MDc1MjgzZjg1MDQ0ODg4OTE1MjYyYzlkYTUwYmQxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAyNiA2NzU3ZTgwYzc0NzgzMjY5YTIyYTA1ODcyMWFjOWY2ZjkwY2ZiZGE0IGxlZ2FjeS10cnVuaworMTQwMjcgMDc3ZmY2ZWZjYTM1ZTg0NjEyOTUxYTcxNTRmNjI0YTRhNWQ0YjU5OSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMjggYTE3MGI3ZjA0YzY0N2ExYzRkMTVmZWMwNTEzOTgwZDUwMjEzZTNiMCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMjkgYWIyYTZmOTEwZjY1MzEyMDk2MmZlYTJhMTExZWVhMWU4MWZkYTc5NSBsZWdhY3ktdHJ1bmsKKzE0MDMwIGEyNjczYThiZGNhMjgyNDI1YTlmNDc5OWRkY2RkMGU0MTU3YzhiNDEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDMxIDE0OGZkNDc1YjM5M2RjNzJiYjgyODc2MWRjNjUxZmVkZGRlZjg3YmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDMyIGI0ZDA3YmVhYzA5YmVlZDU3M2FlM2IzNTljMTAwYzc5ZGNiMjgzYWQgbGVnYWN5LXRydW5rCisxNDAzMyAxODU1MTMxYTRkY2Q0N2EwNDBmYmFjNzI1MTcyZjhkZDI4ZGU2YjI0IGxlZ2FjeS10cnVuaworMTQwMzQgYzA1MzYzY2YxYjczYjBmMjVmYzcxNjQyNjI2MGQ5OTlhMjZlNWNkNyBsZWdhY3ktdHJ1bmsKKzE0MDM1IDk2ZjNlYmFjYTZhZTU4MGYxMTJlMmE3MDFiYWU0NmM2ODc1ZjczYjUgbGVnYWN5LXRydW5rCisxNDAzNiA0ZjI3Njg5MzMzMTNhZDQxMTRjNjA2NjQzZjZmMmFjNDNlM2Q1OTdhIGxlZ2FjeS10cnVuaworMTQwMzcgMDlkMzUxODgyYzUxMGY5NmY5NmFiZGVkMDQxYWM2MDlhNTQxOTI2ZCBsZWdhY3ktdHJ1bmsKKzE0MDM4IGFmMTFhZGMzY2JkNzE3YzZlZmVhOGYzZDc1NzBkYmM2ZDMzMDNhZjkgbGVnYWN5LXRydW5rCisxNDAzOSA4YjQ2ZWUzMjVkYzAzZTYyOGNhZjc3MTJiZjMwNTA2YmRhMzgyZmJjIGxlZ2FjeS10cnVuaworMTQwNDAgYzljZDRiYmVkOGUyODNlMjY1NzExZDk4ZTYxY2I3NDIzMmQ2OWVhMCBsZWdhY3ktdHJ1bmsKKzE0MDQxIGYyMWYxOTg4NmVlMzhmNWY4Y2NhYmFhOGEyNTA3ODM1YjY2NDMzNjEgbGVnYWN5LXRydW5rCisxNDA0MiA1YzVhM2E1Y2M3OWZjZGU2MmQxYzQ4ZmQwYWVmM2M0NWNlNzAxODRhIGxlZ2FjeS10cnVuaworMTQwNDMgZTI0MDg3NDRkYzdmMzllNzY5ZmI2OTI2MTZiYzM3NzM4YWVmNjBhZCBsZWdhY3ktdHJ1bmsKKzE0MDQ0IGJhYjQ2YWNhMmJlY2U2NjAzNGI4MWU0ZGRkYzRlZDIyNjY3YWYxNjYgbGVnYWN5LXRydW5rCisxNDA0NSBhOTdlNjI1ZWQ1ZDA0ZDA1ZDFlMGY2ZDhjOTYzNDY5NWRiMjc4ZmExIGxlZ2FjeS10cnVuaworMTQwNDYgN2RjOTI3MjA0ZDY1ODJlMTJlMzk3NjlkMmRkNTA4ZTQyYTc4MTNhMCBsZWdhY3ktdHJ1bmsKKzE0MDQ3IDA2ODBlNjdhMGQ0OTU3MzdkMjEzMmMwN2RkZjk0ZGI4N2Y2ODhlYmQgbGVnYWN5LXRydW5rCisxNDA0OCA2YjhmNzQ2YmJkNWFhMDJhMjNiMGNkYzNiYzVhMDU2NzA5YmU2YzM4IGxlZ2FjeS10cnVuaworMTQwNDkgMzRiNmE5MmZhMDg4NDJmZGM3NzBhYjIwYzBmY2YxODNiODcwZTU0ZSBsZWdhY3ktdHJ1bmsKKzE0MDUwIDljZGYzZmFkZGE5Mjc2YzYyYTUxNGJkNWE1NTg3MzMzNWQ0NDczZmQgbGVnYWN5LXRydW5rCisxNDA1MSA1ODUxM2ViYTU2NjQzMDA2NTQzMDEwOGJiMzQyYmRiMGZjNDJhZTFiIGxlZ2FjeS10cnVuaworMTQwNTIgYmRlMDZkOWQ0Y2I0ZjE2MmZhODFmNmUxMTczMmEwNTgxMmRjNjYwNCBsZWdhY3ktdHJ1bmsKKzE0MDUzIGJkYWU2MWFlYmE1NWU4NzM4Y2UzZjMzOTY1N2ZkODE2NzcyYTYxYWQgbGVnYWN5LXRydW5rCisxNDA1NCA3MDM0Yjc1YWFkMDNiNzE0NmZmNTE1ZTY2ODc1YTIzOWZlZmY2NDE5IGxlZ2FjeS10cnVuaworMTQwNTUgM2IyMGU1MGYyZDgzYTMxNzNkM2EyZmVkZjVkYmVlMDg3Y2QzNTdlOCBsZWdhY3ktdHJ1bmsKKzE0MDU2IGQwMjNkMWM5YWM0OTE0NmYxMTg3NWJhOTU1ZGVmYjE5ZjZkYTZhZTEgbGVnYWN5LXRydW5rCisxNDA1NyBjZWIwNmRlMjNmYWE5MmUxZTVhMWQ4MWYyMjkyNmViODc1OGZhYmRmIGxlZ2FjeS10cnVuaworMTQwNTggNjEyYjgyMzBjNmU3ZmM2OTcwMWY0MWM4OTYyNTY0MGYyMGMzNmI5NyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwNTkgMDJhZTJlNTU1ZWY5ZDI2ZWZmZmQ0NzY2NzA3ODBjMmMxMWM2OGYzNyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwNjAgNTkxMTRiZTIxYTc1Zjg5N2NkNGJkODdhOWE4YTcxNDA3ZmJhYWRkOSBsZWdhY3ktdHJ1bmsKKzE0MDYxIGRmZTM3MTlkNzhlOWRjNmVlYWNiZTM2NGM0MGRlNmJhZjc0NDRkYjEgbGVnYWN5LXRydW5rCisxNDA2MiAzM2Y3YjEyYzc3NmNmYjZkOTRmM2RmYzVhMTkyYzhmMDE5NDRjNmU5IGxlZ2FjeS10cnVuaworMTQwNjMgY2RlODgzN2M4MjU5YWQwOWQyNmZmYzQ2YTFlNTk1NTU3ZjU2Y2Y0MyBsZWdhY3ktdHJ1bmsKKzE0MDY0IDkyM2I0M2RiMzgxNDYyYjJmNzQzYmJlODhiMDRhMGZkNWE3ZmQxNmYgbGVnYWN5LXRydW5rCisxNDA2NSAxNmIxMWFjZDNlOGMzZDU4ZDNmOGNkOGMxZTNmODEyY2FiNDY1YjFlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA2NiA3NTYzNTE3MDdjYWNjNWJjZDBiOWUwMWRkMGM5NzBmZjY0ZjYzNjdhIGxlZ2FjeS10cnVuaworMTQwNjcgZDcxOTliOWY5MDkxMmFhMzc1NDIwOGU0MDdlNThiOWYyNjAxYjg3YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwNjggNGM1MDMwZDQyYzZmZmVjZDMyN2U5M2JhNmJlNGU1MTk3YjIxYWRhNSBsZWdhY3ktdHJ1bmsKKzE0MDY5IGIwNGJmMjc3NGQwNWVkYzc0ZTUxOWIzNWI3NTA4OTA2MzU5OTc4MmUgbGVnYWN5LXRydW5rCisxNDA3MCA3ZWZlY2M1YTM5NGM2OWE3ZmQzMDA2NGQ0Mjc2ZmE1YWU1NGMyZWE5IGxlZ2FjeS10cnVuaworMTQwNzEgN2U1ZjUxZGMxYjRiOWExNDk1NzAzNDYzNDkzNTFkMTY5NzgyMTI4MyBsZWdhY3ktdHJ1bmsKKzE0MDcyIDk2MzZhNTAyZjc5MTdkMWQwZDIyYzdkMzA1ZWM5Yjc0YzY4M2RmNTUgbGVnYWN5LXRydW5rCisxNDA3MyAzM2U4ZTc0MDliMTIwMjAzMWFhNDk5NThkMDM1MGVlNTAzMWRjMjVkIGxlZ2FjeS10cnVuaworMTQwNzQgY2E4OGU1OWE2ZWJjYTNiOGQzMWIxNzE3ZTQyYjVlYjYxZjI4YTgyYiBsZWdhY3ktdHJ1bmsKKzE0MDc1IDNiNzFjZGZhMDJjNzQyYzI2MmQ4YWMxOTYyZDg0MTE2MWE5OGE3YmEgbGVnYWN5LXRydW5rCisxNDA3NiBjN2YwYWE0NTEwZTI2MzhlMDQ5OTllMThlM2U0ZTAzMTU4NzIwNGNiIGxlZ2FjeS10cnVuaworMTQwNzcgZGE2ZjE2OTNjZDY1MTNjMDMyMDc3ODNhYWNiZGY0NmYzMmEyODAzZiBsZWdhY3ktdHJ1bmsKKzE0MDc4IDllYWNkMjllNjA2NjE4MDQyZGU1Mjg0YmMwODNmZmNlMzM1ZTllMmEgbGVnYWN5LXRydW5rCisxNDA3OSAzZjI3NDQ3OGM0ZGFhOTg5ZDA3Njc0ODE4NzlkMWE1OWJlNThhY2VmIGxlZ2FjeS10cnVuaworMTQwODAgNTNkOWMxNTYwZmUxNGYzZmI5NDA0YTU3OWNjMDFlYmViMTIzM2EyZSBsZWdhY3ktdHJ1bmsKKzE0MDgxIDY2NDM4NmQ2OTY3Y2FlZmNjZDdhYzljMmEyNDc5MzY3NDJhMzIyYzIgbGVnYWN5LXRydW5rCisxNDA4MiA5Y2EzMDQ1M2RkNGU0ZTQ3NjFiZmVkYjI1MzMwYjEzMTI5YWQzOTdlIGxlZ2FjeS10cnVuaworMTQwODMgZjlmNzViMjEyZGE0MTg5Y2ZhZjI3NTBjOTY1NWZhNzVjYjA5YTI2ZiBsZWdhY3ktdHJ1bmsKKzE0MDg0IDAxZjdhMTM2YzY3N2YxMTk4M2MyNWUyZTM3ODc5YzNjYWMxZjQxZjggbGVnYWN5LXRydW5rCisxNDA4NSAxNzVkN2Y2ODA0ZDdhM2I2YzkzYWRhNDY3ZDJiMTZlMDdhYjY1ZGMwIGxlZ2FjeS10cnVuaworMTQwODYgNzEyODFmZjhjNmEyYmE1NjA5MTY0NDBhY2MyOGJmMTkxZWY5NWM1MiBsZWdhY3ktdHJ1bmsKKzE0MDg3IGNjNDEyZGZkNzlmNzdjN2RiMDg4YTJiYmMxNGI1OTU2ZTVlYzIxZGIgbGVnYWN5LXRydW5rCisxNDA4OCAxNmZjNzE3YmVhM2M5YWViMzgwNjMwN2YzOWVlNjUxYjZjNmY0NGE1IGxlZ2FjeS10cnVuaworMTQwODkgYzBlYjYzYzhmMWZlYmI4Y2E5OGYzMGI5MWFjNjFhYjkxZWE3ZGU5YyBsZWdhY3ktdHJ1bmsKKzE0MDkwIGJhMDdmZmY3MjUxMWIyYzk0ODFjMjBlN2Y2N2JlNjcwOTE2NTU2YWQgbGVnYWN5LXRydW5rCisxNDA5MSA0ZGJiN2M2MDlhYzFmNWI1ZDAxMzczN2VhYzlhODI2ZDU3ZWU4MjM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA5MiBjYmY1OGNkMGJiNTc0MjkyOTI5MjY2NGIxYzkyNzZlYTMwYWRjOThmIGxlZ2FjeS10cnVuaworMTQwOTMgODJmYjAyZGU1NDIxMTM5MzdjNDNlZDdiZGMzYjA2MGM0OWY4ZDcyMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTQgNWEyZjEzYTdiZDQ1ZjA3OTMxODUxMzAyMTJjZGQ5YWFjMWJlNzBhMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTUgODBhYzA3NjgxYWJlYjEyM2JlMThhZGExMzYzYWE0OTE5ZmY5NGNkZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTYgOTA2NmY2MjdkMzYyZjExOTM1NDBlNDUwNDQxNmNmNDEyNjMwYmVjNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTcgYjViYmNjYjc1ZjJkZDkzNWQ2ZWQ1YmJlMDRjMjI5NGNjNjlkODk2ZiBsZWdhY3ktdHJ1bmsKKzE0MDk4IGE0NmM5Y2I0MjEyM2U5ZTljNzUwZDFmNWNlNWM3ZTU5MzYzY2UzNDIgbGVnYWN5LXRydW5rCisxNDA5OSBiMTJhMTFhZTEyM2NmODViMDlkOWYyNDMzYmIyZDI5ZjA5ODNlMzI3IGxlZ2FjeS10cnVuaworMTQxMDAgNWMxMzVjZWFiMjBjNTQ0ZGQwMGE1OGYxN2U4ZmRiOWY1MWQ4YjY1OCBsZWdhY3ktdHJ1bmsKKzE0MTAxIDc2MWQyNWNmYzI1OTQxMmQ1OGZiZTA5NzU1YzQ4MmRiM2VjZTczNTIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTAyIGY4ODZmZGU3NjVhMDU3MDA0NDkwOTliZjc5MTM3YzYxYjJmYjA5NDMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTAzIDI4Yjg1ODUzNTRkZTU4MDg5NDNlOGUzOTMyMjFmYzg0NjEyNzlkZjUgbGVnYWN5LXRydW5rCisxNDEwNCA1MzVmNDBmOWY4N2RjNjc5ODg5NzcyMzQ3MGRhYjNkYzk0YTZmNWRiIGxlZ2FjeS10cnVuaworMTQxMDUgZjgzYjc0MjczZGEyM2EwMDhjMjQ3NTU3Mzc0NWIyNmI5YmVkZjJhMCBsZWdhY3ktdHJ1bmsKKzE0MTA2IDgwNTY5ZDcyNTMyOTFhMDBlMTJhNTMwNTA2MGJiMDBjYTI1MTcyNDYgbGVnYWN5LXRydW5rCisxNDEwNyA4Y2ZjZDI3M2ZhNWNhMmI2NDRlZmY3YjdkZTEwOTU1ZDhkMzE1ZGI4IGxlZ2FjeS10cnVuaworMTQxMDggMjk1MWUyZDI3ODUyMmVkNDAzN2NiODUyMGZkNTRlYWNkZjhhNjFmOSBsZWdhY3ktdHJ1bmsKKzE0MTA5IGE4M2QyYTFjZTE5N2EzOWE3MjJlZTgyY2ZiYzM0YTI1MWE5YzUzNWIgbGVnYWN5LXRydW5rCisxNDExMCA2ODM2NGJmMDAyZjEzODkwYjJhOGQ1NDU5NGIxYWQxNjVhODI2YzdiIGxlZ2FjeS10cnVuaworMTQxMTEgYmJkM2E4YWQ3Y2I3NjY3MjlhNmMxNjRiZDc0ZDZiMzRiOTRkOTRjOCBsZWdhY3ktdHJ1bmsKKzE0MTEyIGIzZTU1Y2UwZWJkNzVmNGIzOGE0ODljNGI5ZGI0NjdlNjBjZjIwYTcgbGVnYWN5LXRydW5rCisxNDExMyBhZmI5ODdhODQ0ZGJhMjE3ODM0MWY0NjExNGM4OWU2YjEzOTRmYmQ4IGxlZ2FjeS10cnVuaworMTQxMTQgMjYwZDQwZjIwMDc3OGZlZjhjMmIwZDkzYzRjZGRmYjE3OThmZmJjNCBsZWdhY3ktdHJ1bmsKKzE0MTE1IDRjNjkzZWIzMjNjNmYzMTczMmVmNWVkOGMzNmJlZGQwNzQ2MTQzZTIgbGVnYWN5LXRydW5rCisxNDExNiA1MGY3ZDM0NWYxNTdhNmUwNzVkMTdkNWU0MDg0ZTA5ZjhkOWY1YjJhIGxlZ2FjeS10cnVuaworMTQxMTcgYjYwNWM0NjZkMWMwZThmYzE2NjNjZmIwNjZmMjVkMjQwY2U5ZWVkNyBsZWdhY3ktdHJ1bmsKKzE0MTE4IDE4ZmMwOGZjOWZkNDc4ZTJkYzYyMTc4ODczZTI0ZWRlMWQ4MzQ2ZGUgbGVnYWN5LXRydW5rCisxNDExOSA4ZDRjYTdiZTczNzk4Yzk3MDAxOTc2MDdhODRmMjdhMDE1NjM4MWU3IGxlZ2FjeS10cnVuaworMTQxMjAgOTBmZmMwN2Y1ZDEwZjAxZDZmMjRhMTUzNzRhZWY5NGU4NDBiZmZlYSBsZWdhY3ktdHJ1bmsKKzE0MTIxIDc1NTU5OTBlOGRiOWE0MTNhMjQ2MmVkZDkyOGM4N2EyNzhjZDFhNjggbGVnYWN5LXRydW5rCisxNDEyMiBmNzAxZTkxNjNjNzZkMTM1Mjk5ZTgzNGJjYWM5M2FmMmJjMGNjZDRiIGxlZ2FjeS10cnVuaworMTQxMjMgMjM2ZDg0MjhjNGM1MGRiZDFiMjhhZTBlMGVhOGRhMTc2MTY1ZjcyOCBsZWdhY3ktdHJ1bmsKKzE0MTI0IGMwNDJlNDE0MGYxZWUzYzg5Y2E0ZjYxY2NiM2YxNzYzZWVjMzg2MzMgbGVnYWN5LXRydW5rCisxNDEyNSA3M2VjNjZhZGQ5NDc4ZGVjY2RmYzY1YjdlMDhmNTUxNDUyYmQyNWNmIGxlZ2FjeS10cnVuaworMTQxMjYgODE5OGM1MzFiYmM0N2Q1ODE5MWI0YmM5MzA3ODJmMDgzNDU3NWIyMSBsZWdhY3ktdHJ1bmsKKzE0MTI3IGVlYWM1NGNiYjFkY2VkMGVjOTc2MWRjYmQwNTM4NzI0YWMxNjkzNzMgbGVnYWN5LXRydW5rCisxNDEyOCA4OTQzYjc3ZjIxOWFmMTcyNjAxNjkxNTY3YmUzZWE3YTk4MmZlMjcwIGxlZ2FjeS10cnVuaworMTQxMjkgMzlkNjZhMDY3ZDBiZjM4NjIzMTNjY2I5OGVhM2FhM2U5ZjAxZWI3ZCBsZWdhY3ktdHJ1bmsKKzE0MTMwIGJlZjg2Njg2Yjc1MmI3YWExODIyMTYzOGFlNWVhOTk2MDc0ZWI1MTAgbGVnYWN5LXRydW5rCisxNDEzMSA3YTRmNjI0OWM5Nzg3ZGM2YmEyOTE2NzJiMDllYTA1MjUxZmI0MWQzIGxlZ2FjeS10cnVuaworMTQxMzIgYjE3ZWY1NGM5MWM0MWZlMmI0MDNjZDI3MWM1NzBjNjU3YzA3OTQyNSBsZWdhY3ktdHJ1bmsKKzE0MTMzIDE1NmIxYmZlYzNiODlkN2MwNjEwZWE3YWY3MmEwMzZkNjkxNmZjYjAgbGVnYWN5LXRydW5rCisxNDEzNCA0NTIwZjY5M2I3NjVmNjgzMjkzZmFlZmUyZGNiNzBlNzlkYzM3YzExIGxlZ2FjeS10cnVuaworMTQxMzUgMjJmNGNmMTZiNWEzMTYxOGIzMzJkODUyOGU2NzcyNzFlNzYwMmI1NCBsZWdhY3ktdHJ1bmsKKzE0MTM2IDJjYjU2ZTk4Y2Y1MjNhYzVlOGUzMzU0NDJhOGM5YmNmZjU5ODEyY2QgbGVnYWN5LXRydW5rCisxNDEzNyAxZTdlZmMxOGE4OWRiNDUxNTAyYWVjMWY0ZWJkNDcyYzY2ZjE0MGE3IGxlZ2FjeS10cnVuaworMTQxMzggYzcxMTU1Y2UxMjE1OWZhZjJjMGFkMTgzMmQ4ZjEzMDMzM2I4NzE1MyBsZWdhY3ktdHJ1bmsKKzE0MTM5IGNhMTVjY2MyNmYwYzJkYjU5MmViZjdmMjRiNWEwMjZlYmRmZGQ5MzkgbGVnYWN5LXRydW5rCisxNDE0MCA4ZWZlYjg3MTIxNWI0OGYxYTNjZmFmMjE1YWMxOGYxZjYxYTk1NTFiIGxlZ2FjeS10cnVuaworMTQxNDEgMDRhZmI4N2QxMTAzZDEyZmM2NDdiMGViYjA2N2Y5M2RkZDk0NjcyNCBsZWdhY3ktdHJ1bmsKKzE0MTQyIGUyNjYwYWZkYzM4MWI4YzY1ZjE4ZWMyY2NhNGE2ZGI4OWRkNGYwYjggbGVnYWN5LXRydW5rCisxNDE0MyA1MjU1ZDA1MDQwYzI1MjIyNzVkZDMzNTQ4MjEwN2YyZWFmZTBkMzk3IGxlZ2FjeS10cnVuaworMTQxNDQgZDQ3MzFlNDNmYTYwNTNhNDJjNDNhMDliMDAxNTNmMDc0NmM3NGJlMyBsZWdhY3ktdHJ1bmsKKzE0MTQ1IDZhYmM1MGJiNDcwNzRkMzhiYzhhZWNiYTM4NDAxMjcxY2Q4NWQ1OTggbGVnYWN5LXRydW5rCisxNDE0NiA4ODU4MjBmYTdlMzE4Nzc4YWI3NmJmZmFhZWU2YTY2MWQ0ODRkNWZiIGxlZ2FjeS10cnVuaworMTQxNDcgMDdkMmVhNzFhY2RjNjYwMDYyZGRmOTRjYmMwZGZkODdhM2QxYTJiYyBsZWdhY3ktdHJ1bmsKKzE0MTQ4IDIyYzAzYWI0ZmIxNjUyNWQ1MzMyYWZjYjMyMWZhODAwY2M3M2M1ODMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTQ5IDZhZGMzYzVmYTE4NWExMWE5ZWM0MzZmYTg1MTFmMWJiNzBjZWVkNjggbGVnYWN5LXRydW5rCisxNDE1MCBjNWFiYzgxZGQxZWVkOTAyNDQ4ZDVmMDM1OGFiYmJiZWRiYzNhNDY0IGxlZ2FjeS10cnVuaworMTQxNTEgZmQwZDMxYzM0NmIyYmI0OTgzYWJkMDM4NjQ2YjFhNmI1YTFhZDYzOCBsZWdhY3ktdHJ1bmsKKzE0MTUyIDU1ZGYzNzAzYzk1M2I2N2UwNmQ1MGNlNWIzZDQyMDhkNjcwYjNmY2IgbGVnYWN5LXRydW5rCisxNDE1MyBmNTdmZjQyODlmYzY0YjZiOGQyNmRlNjE0MzFmN2UwZDY3Zjc5ZjQ4IGxlZ2FjeS10cnVuaworMTQxNTQgNTdjMTY4NWFjYjE2NzNlZWZlNDAyY2FiZmYwNzIxNTE3YWIzN2YxZiBsZWdhY3ktdHJ1bmsKKzE0MTU1IDRjM2U1NWM4MjhkM2JlM2EyZmM3YWNlYWEwMDI2YmUwZjNhNmIyMzkgbGVnYWN5LXRydW5rCisxNDE1NiA0OWQ2ZDMwMjc3ZGE3N2M5YmRmNDlkYTQyYWJkYWIwODIxYmMzYzA0IGxlZ2FjeS10cnVuaworMTQxNTcgNjZhYTIxZjUwZWEzNTEwY2ZlMGFjMjlhNWY5MzcwNTllNzgxNDEzZCBsZWdhY3ktdHJ1bmsKKzE0MTU5IDNmZTI3YmIyZjExOTM0MGEwMzE0ZGViZWQwMjI1ZmMyZWRkOTY5ZTMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTYwIDI3M2E1ZTlhYTYzM2UzMDNlMmM2YjdlOWY1NzAxNDEyMTM5NTRmOGUgbGVnYWN5LXRydW5rCisxNDE2MSA4NmExNjNhNTNiMWNhYjdlODk0ODRmNDJlZDNiMGFhM2JlNmNiOGFkIGxlZ2FjeS10cnVuaworMTQxNjIgZjM2MTFjYjNhMjYxNzM3NDIxZjE5ZTkyN2FlYThlNmVmNzYzMDRlNiBsZWdhY3ktdHJ1bmsKKzE0MTYzIDE3NzU5MDBkYjEwODc1NGY2ZjUwYmVlMzliMzk5Njc1NjRiNzQyOWMgbGVnYWN5LXRydW5rCisxNDE2NCA1N2FhMjc3ZDdhMDBkZTdlMzFkZWE4YmUwODMxYzdhNzg1NTlmZGQxIGxlZ2FjeS10cnVuaworMTQxNjUgYzYyMDViYzcxMGVlOGIyYjFkMmRkMmYzZWQ4NTU1ODY0ODIyNTNiNSBsZWdhY3ktdHJ1bmsKKzE0MTY2IDNmZmRmMDVmNTYzNWRmM2JjNDhmYjBiMjAzZjg4M2U5YWIyMTczNDggbGVnYWN5LXRydW5rCisxNDE2NyBhZjVhZDVlZGI3YTVkYTFmMDE4ZGU3OWNhYWVlOWJjNWQ1M2UwZTNkIGxlZ2FjeS10cnVuaworMTQxNjggNGJkNGJkM2I1OTdhYmU2NWY5NjZiN2JjOThiYTc4ZTllYTg3ZjQyZiBsZWdhY3ktdHJ1bmsKKzE0MTY5IDY0OGQ5N2JkM2FjNmMzNzc1YzhkNDFkZTgwYjQ1YWI2OTE2ZDNiOWYgbGVnYWN5LXRydW5rCisxNDE3MCAxMTMxYmZhMWFkOTkzMjM2ODlkZjdhMjNjMmM3ZGNkYzE2MTZhNjZkIGxlZ2FjeS10cnVuaworMTQxNzEgMWIyZTNlMmEyNDM3OTNmNjBkYTAyZGNmOTVjOGQ2MDM5ZjhkMzhlNSBsZWdhY3ktdHJ1bmsKKzE0MTcyIGNhYjNmZjU1MWY0YmM2MjY1NGUyOGUxYWE3NjU4ODQ3YTZlNjBhM2QgbGVnYWN5LXRydW5rCisxNDE3MyBmMjQ5NjVlNzdiODU1NmJhZDVkZWYwYTA0ZTgxN2E2MGU5M2RlM2IxIGxlZ2FjeS10cnVuaworMTQxNzQgZTBlMDExZTQwNzNjNWE1YTJkYjEzNGYzYjVlZGYwYTBlOTA0YjE4OCBsZWdhY3ktdHJ1bmsKKzE0MTc1IDE1ZTViZDg5Mzk1YTdkNTIwN2QyMzgxZjcyYmUzMThjMmU3M2NhZjkgbGVnYWN5LXRydW5rCisxNDE3NiAyMzhiNDM5ODgyZTUyM2I4ZDU5MDZlOWJhMTYwMDk3Y2Q3MmQ2ZTEyIGxlZ2FjeS10cnVuaworMTQxNzcgMDExNzFiZTQ3NjlkMTNlNDM3OWY1Yjc0N2VmZGU4N2QzY2E4ZmZmYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxNzggNzcwNjE4ZDlhN2ZjZmEwZDc4ZTJhYjM3NWZiZmY1ODkzMTI0ZDAzNyBsZWdhY3ktdHJ1bmsKKzE0MTc5IDc4ZmU4N2NlMGRlZDEwNjIzNzAzNjA5OTRkMzc3NDRkNWUzYWQ1YmUgbGVnYWN5LXRydW5rCisxNDE4MCAxNDU2MWU4Mzk1YmI5ZGVmZTg1M2UwNjkzZjIzODExYzIyMDc4ZGI4IGxlZ2FjeS10cnVuaworMTQxODEgMGJhZDlkOGI5NDVmNzIyMzk0ZWYwZjE3MjI3OTYwMjMwMTExZDE5YiBsZWdhY3ktdHJ1bmsKKzE0MTgyIDU3MzhhZDczNzExNDQ3MzlhMmVmM2MzYTRmNDJkODJkMGJhNWM0ZDMgbGVnYWN5LXRydW5rCisxNDE4MyAyYWFiNDc0ODQwMTIyMmU3MGI2ZDdlMTViNTAzMmVlOTBjNDQ3NWNlIGxlZ2FjeS10cnVuaworMTQxODQgMWNmZDgxNzY4ZTcwMzVkMzlkMzE0NzgwYjI3YTM4NGY4NTEzN2JkMiBsZWdhY3ktdHJ1bmsKKzE0MTg1IGVjZDY2Nzk4Y2YwYmRiY2Q5OWYzOWJjZGQ2NTUyMGRhYzdjNmViNTcgbGVnYWN5LXRydW5rCisxNDE4NiAxM2RhYWQ4YTZlZWUxMDhjODQxOTNjNzMwZDFiNzRhNDg2YTliNGVjIGxlZ2FjeS10cnVuaworMTQxODcgNjkyMTZjMTFhMWJkN2M2NmYyMjRkOTM0NDI3ODcwZjU4MmMxYzg4ZSBsZWdhY3ktdHJ1bmsKKzE0MTg4IDllYzdkOTc4ODAwZDI2Njg4M2ZmZThmYzQ1N2EyMTJkNTA3OGQyMjYgbGVnYWN5LXRydW5rCisxNDE4OSBiMzYwNDEwZDYzYzY3NzFiODE4YzdjYzZiZGU3ZmM5OWI0NGFhZjkxIGxlZ2FjeS10cnVuaworMTQxOTAgNmQ4Y2I2NmNkMjM4NTY0NWMwNTY3YTA2OGRkNjdiZjI3NjYxNDI0MyBsZWdhY3ktdHJ1bmsKKzE0MTkxIDA4MzEzYWMxN2NmM2RhYzY2MjUyN2QxMjNhYmIyMDFjMDRkMzM5YmEgbGVnYWN5LXRydW5rCisxNDE5MiA2NzUyODQ0OTc0NDNlMjI5NjkxMDg5YTAyNjRjYTBiYzA5MTk3ZDY2IGxlZ2FjeS10cnVuaworMTQxOTMgMjBhZjAyYTU3YTVmMWUzNTgxNDg5N2E1NDQ1OWUzNjZlOTYyNmJmZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxOTQgNjhjMjU5YjZlNmNkZjhjZDNhNWZlYjdlMmYzM2ZiYmQxMjM0ZjVhMyBsZWdhY3ktdHJ1bmsKKzE0MTk1IDU5MDI3MmFiZTY5Yzg1YmMzZmZjMDVkMmRiODgwNjdlMDcyNDFiM2EgbGVnYWN5LXRydW5rCisxNDE5NiBiYjFmNDNmMjVjZTA5YTUzYjliYWZmM2QwNTRhOWU0MGIzNWZiMTk5IGxlZ2FjeS10cnVuaworMTQxOTcgYTcwZGM3M2EyOGRlMDkzMjQ1MGI0NGI5MmZmNjhlNjRkYzRjOWExYyBsZWdhY3ktdHJ1bmsKKzE0MTk4IDEwN2NlMjliMDRhNDVkODQ4MzgxNTAwNTc2NTYyYTY5NDk1N2Q5NDQgbGVnYWN5LXRydW5rCisxNDE5OSA1Mjg1NTlhMGIyZjI1MjBlOTg3MWQ5MDQ2Y2Q4M2RmNGFlYmI5NjY3IGxlZ2FjeS10cnVuaworMTQyMDAgOTEyNDVkYzk0MGViYWYwMjFmNDM3OGU2ZWJlY2QzMzhjMTlmZmY4MCBsZWdhY3ktdHJ1bmsKKzE0MjAxIDhjZjdiMjNmYjk1NTE2ZTAzY2IxOTAyYzI2MzA1YWNlNzMzMTBjMjQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjAyIGM4N2I4NjFjNmVjNjA2MTFiNzMwOWJjZTAxMjE3OGRiMGNjNjcwOWEgbGVnYWN5LXRydW5rCisxNDIwMyAwZWM4MDNjYmQ4NzIyNWFlNWYwM2Y0ZTdmYjhkN2Q0NjA0NmM5NzhkIGxlZ2FjeS10cnVuaworMTQyMDQgNjVkYzA4MmY3MDA0YTFkM2ZhNTg4ZGE2ODAzZGYyMTM2NTg4YmE4ZiBsZWdhY3ktdHJ1bmsKKzE0MjA1IDZmMjExOWNkOTlkMjU2YWM2N2U3ODIzODM1ZjU2NzE5ZDE2NjUyOWMgbGVnYWN5LXRydW5rCisxNDIwNiAzYzIxM2UzNzJiMjI4OWY3ODdhM2U2YjI5NDRkYTcxNDc4ZTA4MThhIGxlZ2FjeS10cnVuaworMTQyMDcgOTJjNTNiMGIyZWU1YTBkNjkwYzU1MDhjOWQ3ZDkyODQyNDI1Nzc1YiBsZWdhY3ktdHJ1bmsKKzE0MjA4IGM2ZTE0M2RmYzVhMzMyYjA1OTBiMGI1Y2M0Zjg4ZjFhZjUzYmU4NWMgbGVnYWN5LXRydW5rCisxNDIwOSBkNGVhMTM2MTczMWI2MzU2MGE4MTBjNjA1NjkwYzU1Yjg2MmRkYTJjIGxlZ2FjeS10cnVuaworMTQyMTAgNDdmOTNhOTY5MzY2YWJhNmU0MDM5OWM4NGVhMGI1MTA0ODlkOTdiMiBsZWdhY3ktdHJ1bmsKKzE0MjExIGQ3ZTk2Y2RlNmI0N2JkZDNmYjU2NjUzYjdiNjNhY2NlMWMyNDZiYzYgbGVnYWN5LXRydW5rCisxNDIxMiBjMzVlZWY4YTIxNzFhNTI1ZGZjNzNmZjNmYTA2MDEyNzQ4NTgzMzA0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIxMyA0ZTMwOTVjNGFlYTBlNzdiY2RiYWE2MTIyNmNjNTgwYzU0NzNhYWVlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIxNCBkZmUyYmZjODA1MGNiOTI5MzhlZDY0ZjM3ZGRlYmE0ZjkwYjQ0ZTdkIGxlZ2FjeS10cnVuaworMTQyMTUgYjgyNzNlNWRlMzc0YmZiMDc3MTMzZjdkZmJiZWFkNDk3Yzc2OTAwMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMTYgY2Y3YTBmMWI3YjQ4YjZjOGVmODBhODY0YmU3Zjk1OTE1YjE5M2ZkMyBsZWdhY3ktdHJ1bmsKKzE0MjE3IDRjZjkyNWZjYjU2MTllNmI2NzY3ZjRjZDE2ZGY1MDQyZTdiZWQ2MGIgbGVnYWN5LXRydW5rCisxNDIxOCBmNGNjNjAzZGQ3OTkxYjMxYzQxYmRkMzFmZjZmNzU2YmMxMjFhOWVkIGxlZ2FjeS10cnVuaworMTQyMTkgODE3NTg5MTU2ZjIxNjE3Zjg3ZGZhMmMxZTQxM2IzYTc0YjFhMzhhOCBsZWdhY3ktdHJ1bmsKKzE0MjIwIDc3ODU0NmRjYmEwNTJiYTBmYmQ1ZGJhNDUxZDFkMGY4NmM1YjU0MTggbGVnYWN5LXRydW5rCisxNDIyMSAzMzIyOTg4MDEwYjVlMTcyZDQ4MzE0NWU0MmNjZWIwMDk1NWY1ZmEyIGxlZ2FjeS10cnVuaworMTQyMjIgYTdmMjdmMzAzOTk1ZGI1NGUyMTRmOGJhNzg3NTZlMGI2OWY2MzhiOSBsZWdhY3ktdHJ1bmsKKzE0MjIzIGE5NGMyOTZhNmZjY2NjODExNTZkN2ViMDJlMjA2YjBiOWM2MjA4ZTIgbGVnYWN5LXRydW5rCisxNDIyNCBjZjdmY2IwYzViZGUyYjFmNTM5ODY1ZGQ1NGY1MTJlNjhiZWM1YzUwIGxlZ2FjeS10cnVuaworMTQyMjUgMWZjOGU2NjczYjQ4ZWQyNjIzYzNlY2MyMTUwMGE0NTA3YWFiN2VlZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMjYgODRmZDMxZGQ0YjEyMWI5YTcyMWVhY2VjZTY3YTBlYTI0ZWQyMWZlYyBsZWdhY3ktdHJ1bmsKKzE0MjI3IGE3ZGY3ZDUyM2QyOTM1YmE3NjI1OGE3NWZiNGRlYjljNDI3M2M5Y2YgbGVnYWN5LXRydW5rCisxNDIyOCBiY2IwZDYzOWFjZjIxYmQyNGQxZDRlYjNhNzRkNTIyNmYwODcwMTM1IGxlZ2FjeS10cnVuaworMTQyMjkgMDY5YTFmZDQwYWJiZDc1ZDY3ZjkyYWU5MjM5ODEzZjk1NTJiYTFkMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzAgODY4OTBjMDczYzNiZmJjYWViYTIzZGMxYmY4MDk1NzEwZjgyYjQyMSBsZWdhY3ktdHJ1bmsKKzE0MjMxIDFkY2Y5Yjc1OTM3NGYyMTNhYTc5YzI4MDJkZjIwZjZjYWQ1YTVlNTQgbGVnYWN5LXRydW5rCisxNDIzMiA0YTMyNDdlZGRjNDM4NjljZjAyZjE0NGE0YTA0MTViZWJjN2Y4NWU1IGxlZ2FjeS10cnVuaworMTQyMzMgNDcyYTE3ZjJjYTlmY2UzMTcwMmFmZDUwNDVlNmFkZjdjZGExMzZlMyBsZWdhY3ktdHJ1bmsKKzE0MjM0IGMwZDRlZTkzOTFiNjgyMjYxNmRmMGQ3YzRiZTQ0YzM0MjhlNTM5MjcgbGVnYWN5LXRydW5rCisxNDIzNSBkMDkzNGE4MDM4ZjZhOTY3YmFkODlkNGU1NDFiZjUyYTQ4NDAyZmUxIGxlZ2FjeS10cnVuaworMTQyMzYgODcwNWVhMzkwZGJhMDUyYjA5NGFlNGExMjdiYzJhY2JlY2U0M2RlYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzcgZGVkOTYzNjdlOGNhNzJiZWIyZDQ4NWFkZDllMWFiYjM5ZGE0MTA5ZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzggZDMzNTIwODIwZmFmYWM0ZGFhOWQxMmUxZDU3NGFjMzlkNjMwMGZmNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzkgZTgyNzY3MzNkYThmYmU4YzhkMGY2MTVjMTg3M2NmYTdlM2E5NWE5YyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNDAgMGIwMTk0ZDQzNTJmMzEyNGM4ZGUyNWJhNjY4NGJmNDllMjIxZGY0MyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNDEgMzg1NjBhM2EzMjQ5MTJjNTY5MTM0OGU4NTk3NzI3YzBlODA3YzBhZiBsZWdhY3ktdHJ1bmsKKzE0MjQyIDk5YTAxY2IzZGRiNWVmNWQxNWJjNDFjMDczYWViYTBmMzcxNWQ2OWIgbGVnYWN5LXRydW5rCisxNDI0MyBkODg5OTZlNDZjYjJjZTAxMWYwZWZiZDAxOTc1NzZhM2Y4MTAwODhkIGxlZ2FjeS10cnVuaworMTQyNDQgOTljOWIxMjY2OTBkZmIwNTAyMzU4NDc2YjBhMWQ2ZGM4MjdjNjE2NSBsZWdhY3ktdHJ1bmsKKzE0MjQ1IDRjM2NhNmMwNWJjYjMyMWY4ZDdmYTliNDA4MmYzZTUzNmM3NmYwZGYgbGVnYWN5LXRydW5rCisxNDI0NiAwYWQyMzMyNDAxNmU0ZWQzMTJmYjk3ZDQ2MDNlNTYwZDMxZjM3OTkzIGxlZ2FjeS10cnVuaworMTQyNDcgZmQ1Y2VhZDczM2I2ODI4OGQwOTMxMDBkMTU4YzFjZDNlODIzYTcyMCBsZWdhY3ktdHJ1bmsKKzE0MjQ4IGRiNzU2ZDMxZTcyN2EzYmJjZDZlN2M1ZmEyNDI0OWJmYTM5MThlMGQgbGVnYWN5LXRydW5rCisxNDI0OSAwMjNlZDI2NjMwNzQ2M2NkMjA1ZmYxZDgyZGVlOWYyYjExMmFjYzVjIGxlZ2FjeS10cnVuaworMTQyNTAgMGQyN2U4ZDhmMDRjMWEyMDI5NjQ0ZmZhMWVjM2Q3ZWY1NTZiNDc4ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNTEgNjc2NDY5Zjc1YWU2NzIzZDcxYjY1YzZjYTExMjA4YjY4NjQzMTBkMyBsZWdhY3ktdHJ1bmsKKzE0MjUyIGVhNjEwNDRmOThhZWQ4NjJmMmU5ODcwZDYwZDNmMjYwZDZjZTJlNGQgbGVnYWN5LXRydW5rCisxNDI1MyBhZDg1OTQwODQwY2JiNWI1ODhiN2MyODJhYTNjODMwZTI0YzhhYmUwIGxlZ2FjeS10cnVuaworMTQyNTQgYjg5NmMxMmMyZWVhNWNhMzQ5NzA1ZDhmN2IxNmQ2MzRkZTI1YzkwNSBsZWdhY3ktdHJ1bmsKKzE0MjU1IGM0MzRmOTQyN2M5YjAzYzUxOWM0N2FhYzg3ZjA1MDc5ZDk3MTQ4OGQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjU2IDI0ZjgxNGQ5ZTNmZjU0NTQ1YmUyN2Y3ZDk0ODMyZDczMDU4MTFlY2MgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjU3IDAwMDE3MjI1ZjA3Nzk1NTUxM2M3NjgyYTU3MDFhZmVlMzJhMGFkOTkgbGVnYWN5LXRydW5rCisxNDI1OCAyYWI3NGIxOTMyODZkOWM4ZGJhNjFkYTZmN2ZhODM2MDExY2I0YzI2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI1OSA1MjhlZjM4YjNkM2E3NjdhMmE4NDVlZDc0YjgwOWUyYmY5ZGI2YjA2IGxlZ2FjeS10cnVuaworMTQyNjAgN2ZkZmFhYTY1ODI3MDk2NDMxNTJmN2YzMjgyMmIyNjBjYjY2NDU0MyBsZWdhY3ktdHJ1bmsKKzE0MjYxIGU5OThiMzUwYTRiYjFkYTEyYmI4ZWNlYzE2ODljZGVkZWZlNzhhNjMgbGVnYWN5LXRydW5rCisxNDI2MiA4MjgzNTU0ZjEzMTlhNGQzYWQwY2JkMjRjMTQzYzZiY2Q2YTNhM2YwIGxlZ2FjeS10cnVuaworMTQyNjMgNzcwOWM5ODM1MzgyOGMyYmIyM2JhYmRlYWQyNzA4ZDMxZmU3Njg2ZiBsZWdhY3ktdHJ1bmsKKzE0MjY0IGI3ZjI2Mjg3M2JlMDRiYmU0YWZjOTg0ZjY2MjZiMzUxZGQ4OGRlMDIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjY1IGEyMzg2YjlmNDc0ZDhhYjFhNTQ3ZmRjZDYzNzBiOTZkZGE5YWM2ZmMgbGVnYWN5LXRydW5rCisxNDI2NiA5NTUxMWYzOTMxOWE0YTFmNzlhNDAwOWQxYWNkNTVkZDE1ODg2YjNiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI2NyBiODAwZTM2YWVkNGViZGFiZWNjZGRkMjg1ZTIwZmNlMTFkMmMyM2I3IGxlZ2FjeS10cnVuaworMTQyNjggNDQyZDRjYjQ0MGM4ODIyODg3ODEwNjExMTRlYTVjYWI5NDM3YmIyYyBsZWdhY3ktdHJ1bmsKKzE0MjY5IGRmZjdhMDNlN2QyNGVkYTA5MTdhOGZlMjIzYTI1ZTY3YjFiMjFiNTUgbGVnYWN5LXRydW5rCisxNDI3MCA4YWZkNmZiNTg4ZWU3YjljNjUzZmU4MjI1MWY2MGI0YmFhYTM2MjUzIGxlZ2FjeS10cnVuaworMTQyNzEgNWU2ZTllODkzYWNkY2VmZDQzYWViNTM5NmZlYjMxZmIwZDllZTU1NCBsZWdhY3ktdHJ1bmsKKzE0MjcyIGExMjZmYjVjNjJkYzc0Nzg4NGY4MjY4YThmMWY5ZGZiMDIzMzY0ODIgbGVnYWN5LXRydW5rCisxNDI3MyA0ODM3MGM2N2RkOWU2YzdmYjE5MmRhMzI4MGRjNjJkNTI2NWM5MjJlIGxlZ2FjeS10cnVuaworMTQyNzQgNDg5NDgzYjY1YjNhM2ViMWJiOTUzMzg0Mzc0M2JkNDA5YTRmNjE2OSBsZWdhY3ktdHJ1bmsKKzE0Mjc1IDY5Yzk5NTE2MjI3MDY0NzQxZWY1ZTcwZjM2YmMyMDYzNTE5N2MyM2EgbGVnYWN5LXRydW5rCisxNDI3NiAwNzU2ZGZlZWM0ZWVjYmQ4Mzc3ZWQ1MTQzYzhkMGJlNDM0ZTFjYTEyIGxlZ2FjeS10cnVuaworMTQyNzcgMjE2ZWZkYWQ5YTRiNmZmNjU0NWViMzdhYTUwZjhlMTdjZjNiYWY1YyBsZWdhY3ktdHJ1bmsKKzE0Mjc4IGZmOTE5ODUzNjJjN2NjMGQyNWJjZWIwMmE0MTdlYTNlYWNkZGUzYWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Mjc5IGY5NGQ2NjAxNjkyMWU5ZDBlMDZlN2EzZjk2NzViYjJkZTAzOTIyZTMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjgwIDkxOWIzN2M1MmE4NDJhMjY1ZDY2ZmVhNjgwN2MzYWRmOGU4NGJlZjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjgxIGNiZjQ0MTAyZDQyYWZjNWRiODJiODYxZDRkMmQzYWVmODg4MjMxM2UgbGVnYWN5LXRydW5rCisxNDI4MiA2ZDFkNWYzY2NhNWZiNjJiOTc4YTY5YjViYmMwMTFmNzk0Zjc4ZDczIGxlZ2FjeS10cnVuaworMTQyODMgNjdjNjIzOWM3YmM3YWZiZmFiNTE1ZDFhYjFhZGM4NTRmNmFkODhjZCBsZWdhY3ktdHJ1bmsKKzE0Mjg0IDQ3Zjc1YTE3YjEwMzc0YjJjZDRjYWM2MGRjYmNhNDAwYjYxZjVkN2IgbGVnYWN5LXRydW5rCisxNDI4NSBhOTQ3MTNkNmQ5ZjZhODMwMDg0NGMyMmE0ZWJhYWNiZWQ1OGQ4NGFlIGxlZ2FjeS10cnVuaworMTQyODYgNWVmYjYyYWNmMjZlZjNkOTNmN2U2MmViNzdiN2I0ZGViNzY1MWZkOSBsZWdhY3ktdHJ1bmsKKzE0Mjg4IGI1YWVjMzM3OTBjOGU1NTI1ZGU0MjgxODIwZGNmMzNiMjFkMzQ3OGEgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQyODkgOTNiZWQ2MDM1NWU0ZTllNTg0ODc2YmJmMjI0ZTBkOGNhYTdkYzRhMSBsZWdhY3ktdHJ1bmsKKzE0MjkwIDhiMzQ4MTg3ZTMwMzMyNmM0MDQwMzM4MWVjOGQxMThjODU3Njc2MmEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjkxIGVmMWU2M2Y3NzQ0NTk5MGFiZDQ3YmJkODMwNWEyMzZlODNkYmRhNTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjkyIGY2ODBhYjEwNmU4NjFlMDdlMjZiNTE1MTUyZjQ2MGEzODIwZGY1M2MgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjkzIDQ3ZDcwZjRmNjM1ZjMxMGU5MWFmNGYzZDMzMTQzOTY2NTBiY2I5MDYgbGVnYWN5LXRydW5rCisxNDI5NCAxYzQzNTRiYmE0MmI5YTE5YmVkZGYyMDdhYjg5NjVjYzY5ZDM4MGFmIGxlZ2FjeS10cnVuaworMTQyOTUgMDlkYmI0NzAzNGUwZjUyYmY5MGRmMTlmOTQ3OTc2ZGI3OWUzMmY1NiBsZWdhY3ktdHJ1bmsKKzE0Mjk2IDRjMTZmNDI1YzcxMmM0MjM3MGZmZTNiODcxM2FlMDQ4YTlmMGMxNjUgbGVnYWN5LXRydW5rCisxNDI5NyBlMzQ5OTEwMjI1NzE3NTExMmEwMWNhZWMzMTNiZmRiNDNjM2EyZjQzIGxlZ2FjeS10cnVuaworMTQyOTggZjRmOWI2YjQ0ZTllNDdjNzM4ODE2MjNjNTAzODcyNGUzZWQ5ZTcwNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyOTkgMGRkNTIwZjRkY2U4ZGMxZGRkNDZiNTBjMjhlMzdhZjQ4ZmZjODg4ZSBsZWdhY3ktdHJ1bmsKKzE0MzAwIDhmODhiMzE4NDNhYmM1MjQ0OWYwZjRjYTdkODMzYjAwNGE4ODU0MzEgbGVnYWN5LXRydW5rCisxNDMwMSA4OTBiMTFhYTJlYmM3MmY4Njg0ZTBiODMyOWNiMWJiNjNjMmNkNTQ5IGxlZ2FjeS10cnVuaworMTQzMDIgZGU0NGY1MTE3NjhhYzY2NzBkYTU0Y2YxZDZmZjcwMzM1MmRjYzMyNyBsZWdhY3ktdHJ1bmsKKzE0MzAzIGIwZWI0MjFmOGFlOWJlYjdkOGExNzhhZTNmYzMxNWQ2YzdiNjBiODQgbGVnYWN5LXRydW5rCisxNDMwNCA1ODgzNzEzZTJkYTNhNjFmMTM5YTRjYmU4ZTg1NjJlMjMxZTQ5MmRlIGxlZ2FjeS10cnVuaworMTQzMDUgZGFjYWEzNGRmY2E0NmY5NDNjMGI5OTdmZmZjYThiNzdiYzQ3MTE3YyBsZWdhY3ktdHJ1bmsKKzE0MzA2IGQzNmQzMTJjZjkwYmVlODYwZGFlNzdhYjEyZTZkNzNlMGU0OThmYTcgbGVnYWN5LXRydW5rCisxNDMwNyBmZjc5ZWU0M2I4YTFmYTc1OGUwZDk5NGJhMjNkMTQ4OTdkYjhjYjRjIGxlZ2FjeS10cnVuaworMTQzMDggODZlN2U1ZWNhZjc5NjBiMTYzMTM4ODlkZDhkNjUwMmJmY2JiMjcwYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQzMDkgNDk3ZTAxMWVmMWEzMjVjMDc1ZmUyZmZmMjc4MzU0OTA1NzBlZTMyOSBsZWdhY3ktdHJ1bmsKKzE0MzEwIDdmMjkzMzllYzNhNTBhM2E1MzQyM2EyMzNiNmE4ZDFhNDI5NTYyMDEgbGVnYWN5LXRydW5rCisxNDMxMSAzNGY1M2MzNmJhOWExYjFkMGM1MTdlNTI4MmM4YzZjNDE0MWM5MjU3IGxlZ2FjeS10cnVuaworMTQzMTIgNzE2ZmI1OTU0OGJlNDlmYzM5NjlhNGZiZGM0ODEwYjU1N2UwM2MxYyBsZWdhY3ktdHJ1bmsKKzE0MzEzIGQxMGMxMDhkM2ZkNzYyMTI1MmY5NWRkYjEzMzY0ZWU2Y2NlYTZjMjkgbGVnYWN5LXRydW5rCisxNDMxNCBiNmY1MmMxZWY2ZGE4YThhY2IwZjcyNjZkZDFjZjRmNjhhMWNlZTI2IGxlZ2FjeS10cnVuaworMTQzMTUgNmY0MTQ2ODQ2MzM3ODc4YzBiYmYxNDk4MmIyYzBiNDAxZDUzZDg3ZSBsZWdhY3ktdHJ1bmsKKzE0MzE2IDRhMjNjYzQ5ZTJiMDY0ZDlkMjZmM2E0MGM0NDk3YTUzZTA5ZGM4YjIgbGVnYWN5LXRydW5rCisxNDMxNyBkOTAwMGVlOTU5ZTUzN2U4ZDkyODYzNGMxZjIwNzE5ZGE3ZGU2Mjg3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDMxOCA1ZDYyNWEzNjVlNzY1N2EyOTI4MDNmMmNkYTI5YzllODU1YWRjMmQ2IGxlZ2FjeS10cnVuaworMTQzMTkgMzhjNGQ2MWRiN2VhMWY5MTA4NGIzNTE0NDA2NTU0NDlhMDEzNGY1OSBsZWdhY3ktdHJ1bmsKKzE0MzIwIDY1NDZlYTA2ZTE1NzA5OTI1NTcxYTQ5MzAyZjFhZjcwODQ1YTdiODkgbGVnYWN5LXRydW5rCisxNDMyMSA5MjUwZTVkM2FhMzFmZGQ0ZjlmNmZjYTE5MWUxY2ViNjA3MjA5YmUwIGxlZ2FjeS10cnVuaworMTQzMjIgYWJmYTFjYjFlZDA1MmE1NDJkMmE4NmE5ZjkxNDFlMjEwMGM1ZTMzOSBsZWdhY3ktdHJ1bmsKKzE0MzIzIGIzMjIzZjAzYzllYTg4ZGY5NWY2NjVlYjhkYTBhZmNiOGUxN2NhMDMgbGVnYWN5LXRydW5rCisxNDMyNCA2MjdiNGRiYTExOTJlMjViMDk4YjAzYzFmOTRiNGJjMWM2NWVjYzhkIGxlZ2FjeS10cnVuaworMTQzMjUgZTQyNTU1NmU2OThlYmZhMzM2YTlmNjhkNDVjMTBhMTUxZDhkMWQxZiBsZWdhY3ktdHJ1bmsKKzE0MzI2IGU5MTY5YjE5ZTllNWM0NDdjNjVhZDllZWI1MjBmNDczMTVjNjNmN2UgbGVnYWN5LXRydW5rCisxNDMyNyAxMTYzYTdhMWNjNjc5YjgyMGEwMjFiYTg5NjZiZjVmYjg3YTYyN2Q2IGxlZ2FjeS10cnVuaworMTQzMjggODM5ZjhmODZjY2FhM2FhMWVlMzFkOTQxOWJkOTE3MGZiNDE5YThkZCBsZWdhY3ktdHJ1bmsKKzE0MzI5IGZkYzllZWI4OWUwYjMwZTY2ODFhNGEyNGU2MGUzNTQxOGQxMjJmN2EgbGVnYWN5LXRydW5rCisxNDMzMCBlYjM4MWZmMTdhMzE5OGMyMzI0YzY0NGYzMTY0MjYwYTZlZWJhN2UxIGxlZ2FjeS10cnVuaworMTQzMzEgNDIyMzM3YzMyMjlhZGVhMWY3NzYxYTAzYWJmZTM1ZWI2YzRjZDdjYSBsZWdhY3ktdHJ1bmsKKzE0MzMyIDY3NmU2NDdiMWJlNmI5NDNjOTg1ZWY1NjJiOWExODYwNzQyMTc1NjIgbGVnYWN5LXRydW5rCisxNDMzMyA3MWQwMzhkYjBkZDIzYzJmMTIwNDU0MmUzYjBmMDFhNGQ1MDA0MDU1IGxlZ2FjeS10cnVuaworMTQzMzQgYjdhZWJjODRjYmMxNjRhNWUwMGM5ZGVjNTdmOGFlZmU3M2I5OWI4ZCBsZWdhY3ktdHJ1bmsKKzE0MzM1IGE1MzI5MzJhYzQwODM4N2QxOTRiYTU3YmEyN2NmMmUxZDk1ZDI4YzEgbGVnYWN5LXRydW5rCisxNDMzNiAxZTk1MmQ5MzNhYmJlZjVkM2Q5YmUyNjIzZTlkNGIwMjU5ZDEwNmY3IGxlZ2FjeS10cnVuaworMTQzMzcgOTg1NzIzNDk4YjFiYTY0MmNjMjY5NWU2MDk3MWU4YjliZjhlNmQyOSBsZWdhY3ktdHJ1bmsKKzE0MzM4IDYwMjViMDdjNWMyOTY2ZTU2YzM3MGM5MDI4YjA1OTRhZWQzZDliODMgbGVnYWN5LXRydW5rCisxNDMzOSAwYjQ2ZDI1MGUxOTljZmE2ZThhNzFiMzA4MmNiYzkyY2RkYmYwNmZjIGxlZ2FjeS10cnVuaworMTQzNDAgNzJlYmY5MWRhYTA1ZDVhNzMwZmEzNzM5MWI1YWZmMGM1MzdiNmQ5YSBsZWdhY3ktdHJ1bmsKKzE0MzQxIGM5NzZkNjkzZGRlYjM2NDA1Y2Q5NzE4MDM0YWZmOWU2ZWZhNjFjMTUgbGVnYWN5LXRydW5rCisxNDM0MiA3OGYwMDk4ODEyYjc0YjI1N2IyNWM1NDFiMDJlMDQwNTUzOWQ5NzAyIGxlZ2FjeS10cnVuaworMTQzNDMgNmE5OWZmMDY5NDU3ZDcxOGQ0MTg5MTAwYWU1ZWFjMzdkMTFjNmMzYSBsZWdhY3ktdHJ1bmsKKzE0MzQ0IDg5ZDMwOGZjZjZmNDU4MzYzYjRkZmYwMzJjNjk0NWZjNmU5YzkzMTYgbGVnYWN5LXRydW5rCisxNDM0NSBlMTlhMzUwOTk0Yjc1YWZjMWJkNDc5MWMyYzFiN2EwNWZmZWEyYmQyIGxlZ2FjeS10cnVuaworMTQzNDYgNjUzYTkzNTBhODE3MzM5NjliM2U3MDI3NjNmZGE1ZTA0ZDA3YWIxYiBsZWdhY3ktdHJ1bmsKKzE0MzQ3IDgzZDM1MWY5NDhhYjc1Y2VkYzhhNmU2ZmJlMzJkYjhlNGIxOTc1YzcgbGVnYWN5LXRydW5rCisxNDM0OCBhODZiZGZlNDU3MjU4NGQ2YzZjNjZhMmIyOWM4YjlkY2QwYjdiYzEyIGxlZ2FjeS10cnVuaworMTQzNDkgMjNlN2Q5NzgxMDEzMTE1NjkzY2RlMDI5NDAzNzkwOTMwNDY0ZTA2OCBsZWdhY3ktdHJ1bmsKKzE0MzUwIGRhN2Y1ZjZhODQ5ZDBlZThhODJhZTc2ODljZjM0Y2I4MDgxMmE0ZGUgbGVnYWN5LXRydW5rCisxNDM1MSA4NDBlMThlZWMwN2Y0ZjU1Yzg3MzkwMjJhM2I1ZjU2YzM0Y2Y5MjBjIGxlZ2FjeS10cnVuaworMTQzNTIgYzk3OGEyM2E0ZGFiMTA3NTkxZThkMDc2OWYwN2FiZGMxN2Y0NTE2YyBsZWdhY3ktdHJ1bmsKKzE0MzUzIDNjNzdkNmM1YzhlOTE4MGYyZmJiOWZiYzA5MzYyZDhiNzQ2OGFmMDggbGVnYWN5LXRydW5rCisxNDM1NCA0NWMzNWI1Mzc2ZTRiZGJiNWJiM2E2MWRiNzBhYjg4ZTRiZDVmYTllIGxlZ2FjeS10cnVuaworMTQzNTUgNzc0NjVkOGI5ZjVlMjkwZGJjMzQyN2U3Y2YyMmIwZmRlN2NkNDQ5YyBsZWdhY3ktdHJ1bmsKKzE0MzU2IDdlZjM5ZTA3MTIwYTdkYWI1ZjM0ZjZiZTNhOTRlMDJkOWVjYzE3YWMgbGVnYWN5LXRydW5rCisxNDM1NyA3NmE2MDlhOTQ3MzAyMjM4ZjUxNDhhNTM0YjhmODI1MWZkMjQxMWY1IGxlZ2FjeS10cnVuaworMTQzNTggNWMyNzcwMTI0OTA0ZWRiM2MyM2IzMTE4ODQxNDgxNzAwYTI0OTQ2NSBsZWdhY3ktdHJ1bmsKKzE0MzU5IDc3ZmEzMzE2YmY1ODI1NDcwNzBmZTQwYzA3NjFiNWNhYmJjYjNjMDMgbGVnYWN5LXRydW5rCisxNDM2MSA0ZDkxMjIxMjA4ZmZiMGI0OTQxMTI0MGU0MDAyZDJlODFiOTBjN2U0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDM2MiAzZjFkYTA1Y2VkNTUzNmEyMWFjYTIxN2RiODBlNmFmYzQzZmViOGQ1IGxlZ2FjeS10cnVuaworMTQzNjMgM2RjZGRiNDc5YTdlNjQ3MzllMGM4YWQ3OGQyMjBmMTJhNzZmOGQ0OSBsZWdhY3ktdHJ1bmsKKzE0MzY0IDYwNTZjZDUwMjk3ZTRjOTkxOTE3OGNmZGY2ODAzNzFiNWQ5MTU3YjEgbGVnYWN5LXRydW5rCisxNDM2NSBkZmZiZDkyMWVlZWQ0NWNiMzA4NGQ3YzdhZTk1NDY1OWViZmE5OGNjIGxlZ2FjeS10cnVuaworMTQzNjYgNTdmYjM1MDFhYjIyYjJmNjQ4OTg0OWM2MGU3NWIwYzVhZjIwNTBhOSBsZWdhY3ktdHJ1bmsKKzE0MzY3IDYzNjdkODI5ZjM2YmMyMGM5NmE2NTk3ODg4YTc3OWE5NjlmYTZjYjMgbGVnYWN5LXRydW5rCisxNDM2OCBlMzYwNmQzMDg4NmYwMzgzN2FjNzJmMjFmZDI5NzQxMDJmYjIzMTQ4IGxlZ2FjeS10cnVuaworMTQzNjkgOTQ1Y2U2MGQ5ODc5MTczNjhiMDk4NmNhZTg1OGI4MDZjYzVlNmZmMyBsZWdhY3ktdHJ1bmsKKzE0MzcwIDAyMDUyNmU3MmVhY2YyODM1NGNkNTUxYTZmNzIxODdjNTEwZDdiMDcgbGVnYWN5LXRydW5rCisxNDM3MSA5MDkyZDMwYzJiYjdkNTg2Zjc5MDZiMWYyZmI0ZmY3MWFlYjYzOWZjIGxlZ2FjeS10cnVuaworMTQzNzIgNjJmYThlYzg1OTVmMDJlYTJmNzhhYTVjOWFlM2NjZDYyMmNhYzA3OSBsZWdhY3ktdHJ1bmsKKzE0MzczIGE0ZWVmMDgxM2Q0Y2JlMGJlZjg3YWRhNGQzODUyZjkyNjIyYmZiMGMgbGVnYWN5LXRydW5rCisxNDM3NCA5ODc2YTY0YzE4MWFhYTYxODI3ZGE3NmI1YTljYWYxMjM4ODYyMTdmIGxlZ2FjeS10cnVuaworMTQzNzUgMzU3OTk3NTUwOWQ5MzU3OTYyOWVhMmMxNDc2ODg2NjA2YjEyNjE3OCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQzNzYgNGNmODRkZGY1MTI5MDQzZDI2OTFhMjc0NWY5YTM5OGJiZGIwODgyMiBsZWdhY3ktdHJ1bmsKKzE0Mzc3IDNjZGUxMmJiM2RhNWQ3NGM3YjYxY2Q1ZWMzOTgyZWU1OWUxZTFlYTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Mzc4IDAzYmQ1OGY4YzlkMDNlMTJiOWJiYTViNGRmMWFlMmFlN2M3MjAxMWIgbGVnYWN5LXRydW5rCisxNDM3OSBiMDM2OWU4ZGFhMGJmZjM5NjU0MWNkYjBiNmRmNTllODllZmM0Njk1IGxlZ2FjeS10cnVuaworMTQzODAgMWEyNWJjMmQzMjcyYWRjNmExZTEwZjQ4OGMxYTc1YWE0YjE4NzU5MiBsZWdhY3ktdHJ1bmsKKzE0MzgxIDEwMzNhMjRjNGE1Mjk4ZjBkMDk2OTEzNmJmZjNkN2NkZWJiNTZjNTYgbGVnYWN5LXRydW5rCisxNDM4MiAzNmM2NzUwY2YyMjc1ODYzZjNlY2ExNmFlMThmN2NhNzE0ZGI1MGI5IGxlZ2FjeS10cnVuaworMTQzODMgOGQ1YjkwZWJiOTE5YmIxN2I4OTcxOTI3MTc5ZDQ5ZmE0MTY1NjUyOCBsZWdhY3ktdHJ1bmsKKzE0Mzg0IDcwN2QxNmYwZDM0NWFhODM0M2UyOGE5Mzk2NWI2YjRiMGJkMjgxMDggbGVnYWN5LXRydW5rCisxNDM4NSA3ZjUwZjcxYWU3YmYyNTYxNTZmN2FmNDcxZGM5ZGUzZGVkMTJkZTM3IGxlZ2FjeS10cnVuaworMTQzODYgMjgzOWQ4NGNmZDk2NjZkOTY4ODg4MmM2NjdiOGRmYTVlODQ3ZjFmNiBsZWdhY3ktdHJ1bmsKKzE0Mzg3IDhiNmUyYjIzNmJhYjUyMzQ0OGZjOGMxNzNlYTkzMGMzZWEyM2U0NGYgbGVnYWN5LXRydW5rCisxNDM4OCA2YjhkYWYzMzdkNmJhYmNjZjM0OTNlOGQ0YmJkMmM2MGFlMDNlZTEyIGxlZ2FjeS10cnVuaworMTQzODkgY2FlOGU4ZWRkM2UyYWIyOWNhMjA4ZGY2ODUzMzViOTMwYzQ3NjkzYiBsZWdhY3ktdHJ1bmsKKzE0MzkwIGRjMTliNTkwMGRhZWJiZGYxODczYzkxY2JlNjc5NDkyY2Q1NjliZTMgbGVnYWN5LXRydW5rCisxNDM5MSBhNzQyMTQ3Mzk2ZWVlMDRkYmQ0ZTNkZDU1YmRkNTkyOTkyNjY5MzY0IGxlZ2FjeS10cnVuaworMTQzOTIgZTJiYmMzZTQwY2RiOTY0ZDU3OGNjMmMxNzFhMDcxMDU2OGZmODc1OCBsZWdhY3ktdHJ1bmsKKzE0MzkzIGVjNDZmYWE4MzU5NTY3ZGEzMjQ2YmEwMjhjNGU5M2YzNWQxMjY4OWIgbGVnYWN5LXRydW5rCisxNDM5NCBiN2NmYzJkYmE1ODZiYmFkMTFiZDg4OWRiNDc1MWQ1OGI5NjNlNzQwIGxlZ2FjeS10cnVuaworMTQzOTUgMDQ5YWI4ZjM0ZGYxNjRmYTUzYTA1MGFiNzg5ZThjYWIzNjUzMDQ0NyBsZWdhY3ktdHJ1bmsKKzE0Mzk2IDQxZGMyNGIyMGExNzVhNDI0ODMwMDAwYmE5NGMwNjgwZDg2YTIxYzEgbGVnYWN5LXRydW5rCisxNDM5NyBiNmYxMjg3ZTE5NzA3MzFlNWVkYzg4M2VjN2QwNjdiZDcyZDcwNGYxIGxlZ2FjeS10cnVuaworMTQzOTggNWFmMDE1NzE4Mjg1ZTM1NjE0ZjUyMTI1NTY1Y2I3ZDAwZjFkNWI5ZCBsZWdhY3ktdHJ1bmsKKzE0Mzk5IDQ4NjcyMWVjOWRkNzQ2ZmM1NDBlYTU2ZmRlNjMwMjJiZmQ4MzQyNWYgbGVnYWN5LXRydW5rCisxNDQwMCBhZThkZjA3ZDRiNmExYjZlZDZkODA2NTBjOTE5YjE2YmEzNThmYzQ3IGxlZ2FjeS10cnVuaworMTQ0MDEgZjgzY2RjYmNhMWIwOGYxMzY5NWIzOWFiNTM0OWMwZjBiMDlkYTQyNiBsZWdhY3ktdHJ1bmsKKzE0NDAyIDg2MDUyNDE4MmI5YzhjYWNkMWJmNWY1NDExYjJjMWI1NTA4ZWYxM2IgbGVnYWN5LXRydW5rCisxNDQwMyA3Mjg0OGM2YjYxMWNlZDQwNGEwMGU0MjczZTI4ZTk1NWYwOWE0Mjk4IGxlZ2FjeS10cnVuaworMTQ0MDQgZmQ0ODE0YjU5YjczYTY4MGRjMTY2ODU3YWQ1Y2EwMDRhZmMyOGY2NCBsZWdhY3ktdHJ1bmsKKzE0NDA1IDdlYjEyN2FkZTA2OTRlYjIwM2ZjMzcyOTYzNWE4Njg5YmIyNzNiY2IgbGVnYWN5LXRydW5rCisxNDQwNiBkMmFiOTU1M2Y4NzEyZTNmNjI3NDE2MThkYjc1ZDExNDYyMWNmZGYwIGxlZ2FjeS10cnVuaworMTQ0MDcgMDlhM2E2OGNlOTY0MDRlYThkOGIzNWEzMDE3ZGJkNGRhYTQ4Y2JlZCBsZWdhY3ktdHJ1bmsKKzE0NDA5IGU5M2E1YTkwNmQ3M2EyOGY4NGU4ZDAxZGZkNDYyMTQwYTBjYmU4MDQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDEwIDczM2VjNmU4NjlkZDMxNzNiNzRmOGQ2ODRkMWU0ZjIwOTIwMTE0ZDggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDExIDhiYzg3MTA4MTcyNDc3OGIwNGVlYTQ4YzY1N2YxY2U4ZDY2MzQ4NTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDEyIGY0NWQ4YjI2YmIyNDUzNGQ5NmMxODEwYmU4NGRiOWNlNDkwZmM2OGEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDEzIDcxZWMzMWY5N2ZmYzdlMDRlMjE5YmFmZjRmMDIwNTZhM2FmZTc0Y2QgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE0IGE0YmIzODQzYTU4MjIzMTY1OWU4NTQyMTU5MjUzNWVlYWIzNWNjYmEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE1IDQ1NDE5NjExNGZkMjQ1MzU5YTEzMGEyMTYzZjM3N2IyODE3YTVmNjMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE2IGNlZDhkZDYyMjdkZDJkMmMzYjU1OTQ2NTI5NzJkNThhNDZiMWUwN2QgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE3IDVhZjNjNWI3NGM1NDU4OTMwMThlNzU5NWQ5ZGFmODMwNmVkM2EzZDUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE4IDI5NWZmM2IxNzUyMmEyZWM2ZTk4MzEwMzlhYjgwYWU1NzM3OTVhNzMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE5IDYzY2UwOWRmNjA3ZGUxOWY1ODEzMzk2ZDU1ZWI2NTE3N2VhZDljMjkgbGVnYWN5LXRydW5rCisxNDQyMCBmNTNmZWMwYzc0MmJmNWI0NGI0YmNlMDNhZjQ3NmFlYWVhYzRhN2EzIGxlZ2FjeS10cnVuaworMTQ0MjEgMjllNzRjNzBkZTE4YWZkNTNkOGUwMjhkMjFmMGZjNGMxOTAzNTVmZSBsZWdhY3ktdHJ1bmsKKzE0NDIyIDUwYTZhYjNmYTAzNmEyZGQ2Mzg2OTE0NjM2ZGFhNDkxMjVkNDMwYmUgbGVnYWN5LXRydW5rCisxNDQyMyAzNjc4ZGQ2ODU4NjcwNWQ5Yjc5N2EwYmZlM2Y2M2JhMDE5NjkwOTYyIGxlZ2FjeS10cnVuaworMTQ0MjQgNDQ5YjA3NGMzMDUxYjE3MWJkMTU2OTRhNDAzZGFiYzk2YjY3YTM1MSBsZWdhY3ktdHJ1bmsKKzE0NDI1IGZlOTYwYWQzZGI2NWJjMjQwOTZiZDIxYzUwYmM3ZjQ4ZTgwZmI4YmIgbGVnYWN5LXRydW5rCisxNDQyNiBlNzdhMjg2ZDBlYjEwMzBkZDNkMzFhOWY1MzIxOWFlYWZlNjVjMzc4IGxlZ2FjeS10cnVuaworMTQ0MjcgYzIyODZhMWMyZjI5NTg1YjRhNjJmNTViNzk0YmFjYWYzY2VlMmEyMiBsZWdhY3ktdHJ1bmsKKzE0NDI4IDU3Nzg4ZGExNjQ4ODk2OTRmMjdjOTQ2N2ZjMjQwYTNiMzYyNzc4MjYgbGVnYWN5LXRydW5rCisxNDQyOSBmZmJlMGEyM2EwZjE3NThmZjkzMDY1NjBjNTQyNGVhZGRmOTY5NzRhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQzMCBiZDE2MWE5MDhiM2JkYTVhMGM0M2FiMGVjNDMyYzY5YmFmZTA4ZTE3IGxlZ2FjeS10cnVuaworMTQ0MzEgNTcxNjc3MzFkMTI0MmUzODcyNDI4NzcxMmFiMGJiZGUwYWY1MDM4MSBsZWdhY3ktdHJ1bmsKKzE0NDMyIDMwMjI4NmIxNjBhN2EyNjhlMmZjYzU4Nzc0ZjcyMzRhOTJmY2Q2ZTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDMzIDhkMGIyZmVkN2Q1NTk4MWMyZDBkNTllMGY1NTM1YzAzZjIxYzg1MjggbGVnYWN5LXRydW5rCisxNDQzNCBjZjhmYTkyZWJmM2Q5NGU0ZGExMGQ3NzQ5YWRhZjVkYzk0YWVjZmViIGxlZ2FjeS10cnVuaworMTQ0MzUgZTJiNjMzOTkxZTAxMzU0Njc5NmU2NDMyZmMxOTk1ZTZiMjQyMzBlMyBsZWdhY3ktdHJ1bmsKKzE0NDM2IGZiYzEzZmI4MDM4Y2E1OTVmNGQ1Y2M3Mjg1ZGZjZTg2NDM5OTU5YjIgbGVnYWN5LXRydW5rCisxNDQzNyAyMGNhNzIzMGFlM2Y4YTk1NWY4ZjkzN2Y1NzA4ZjYwNWU5ZmQwNzQ4IGxlZ2FjeS10cnVuaworMTQ0MzggNmU1ZWE3ZGNmMWY1NWI2MzdkMzJlMGUzM2ZmNzM0NmEzNjM4ZDE3ZCBsZWdhY3ktdHJ1bmsKKzE0NDM5IGVhZWRhNDYyMWY3ZGNkNTU0ZTZjOTlkNWIzNGUwZWQ2ZTVhNDUzYzQgbGVnYWN5LXRydW5rCisxNDQ0MCA4NGY3N2MxOWQxNDNiNGIxNDJkNWUyMjNlNGYwOTg2MWY1MjRhYjViIGxlZ2FjeS10cnVuaworMTQ0NDEgMDM5MDJiYzAyMTRhMTUxZDU4YzQ4ZmM2YjYyMWI1MjQ1MjY2NGI2YyBsZWdhY3ktdHJ1bmsKKzE0NDQyIDUwZjEyODgzY2RkNzljYmY0Mzc1ZjM5ZTc3MDdjZDIxZWQ5Njk0Y2EgbGVnYWN5LXRydW5rCisxNDQ0MyA0NzZlYWEzOGUyZDZhYTc3ZThmNTI5N2I1MmE2NzY4NzBiNGM5Mjk3IGxlZ2FjeS10cnVuaworMTQ0NDQgYjdiY2EwNTBkN2RlYmNmZTYwZDNhYTAwNDg3MWQ2OTYxZDk3ZGI5NiBsZWdhY3ktdHJ1bmsKKzE0NDQ1IGJmMTUwMWNmNWYwODJkOWI1YmRjNWI2ZTVjNzM1MDJmMDhiMjgzODAgbGVnYWN5LXRydW5rCisxNDQ0NiBiZTk1MDBlNjQ3N2ZkMzE2MDg2NTViNzlmYjU4NGE3MjlhMTFlOGY2IGxlZ2FjeS10cnVuaworMTQ0NDcgMTlkZTZkMTk0YWNlOTgzN2NjNmE1NTM5YjIyNGE0NWJlZTJiMjU4OCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NDggYWEwN2M0N2Y2ZWU4ODI4MTA0MzczY2JlYjU2NTNiYzY4YTFmMWNjNyBsZWdhY3ktdHJ1bmsKKzE0NDQ5IGM1ZmI2NTA2ZWVjNDBlMjhhMzRlYzZmZTYzNmFjMWRlZjA3MDRlODAgbGVnYWN5LXRydW5rCisxNDQ1MCBmYzBmY2VhMTRiYTA3MjNlNmRmMjJiYjYzMzY5NDkyNDMyNWM1ZWE5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ1MSA4ODc4YzA5NmZhMTllNzM5YWY2MDVhZTc1ZTY2YTAwMGE5ZDZkYzQ1IGxlZ2FjeS10cnVuaworMTQ0NTIgN2MyNTVlN2EyMWMyYzU3NDg5MTNhZDhmY2U1MWJiNjcwYTk4MjU1MyBsZWdhY3ktdHJ1bmsKKzE0NDUzIDM2ODRkNWM3OTAzYzNlZGRlNzU4NTRlYjJmZGUyYzg3NGU1NmY5MTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU0IDdiZWQxZjBlYzYxYWM1NjhhMWZiOGEwYTIyYjFiZTkxMjFiNDdhODIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU1IGM2Zjg0Y2QxZmY3MDVhMGU1NDI1OGJkM2IzODhhZGYyZjAyNDZkMDMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU2IDNiNmQ4YWQyNDY4ZTM1YTI3Y2MwYjdkMTEzZDljZWRmM2VlMzRjMWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU3IDRkNWQ1Y2ZhOGE1MzkzMWIxM2EwZTNiMmY4N2QzNjBmZjdjNDgxOTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU4IGViNDgzZDlhMGY2MmNmMDI4OTVkOTQzM2YwMzg2NTQzZmQzYmI0YzkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU5IDQwODBjN2EwZjFlZDZjOWY5ZDE3MTFhZmM2NTFhZDYzYmQ0ZDFjYTggbGVnYWN5LXRydW5rCisxNDQ2MCAwYzBiZmFkZmY3N2FjYTM0NTFhZGQ0MmRjYmU5NDI2NzcyMGNjMThjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2MSBiMmQ0YjJlMDNjOTk1M2ZiNzA4YTEwZjA5Nzk1N2E3Y2ZkMWExNWUzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2MiA5NGI2NDIwNzkzOThjYTY3NjU2ODRjZDVjYzdmZGE4YjE1NDM4ZDk4IGxlZ2FjeS10cnVuaworMTQ0NjMgNzE4ZDIyZGEwMDE3ZjVlMjZkODVlODY2NmQ4NWFlY2I3NWQ4Mjg5YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjQgZTI1MTJkNGZkNDcwODMxZmU3NDM1Njc0MTcxNmUzNmEzM2E4MjhhNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjUgNjgzNDQzZDhkYTNiOWQ0MzllNTRkOWFjNDcxMmQ0ZmY4YTQzYzQ5NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjYgZmU3NjMyZmJkNGY1MzY5YjdjOGE0YjdkMjJkNDUxNjNlN2U1YmI4YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjcgNTk0YTc2YmI5ZmYwMzE1NzlmODU2YzE2N2ZiNzBjNmMwMTA5MmMzMyBsZWdhY3ktdHJ1bmsKKzE0NDY4IGEwMzEzMDAzY2IyZDUyMDY3ZDBjNjBkYzBmY2FmMmZiYTAxZjg1YTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDY5IGRkMGFlMTBiNzIwNjBmNTc0ODI5ODM3ZjJiZWQzYTQxODkzZjk3NTUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDcwIDljNTljYmEwNGQ4NThhYTZhNjdlODY5ZmQxMmY4NzAwZTBhNGEzZTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDcxIDUxYzIxNzQ1NDk1M2Y4MjM0YWM1ZjMzZjVjYWUxOTU0MTM4MzI3MWMgbGVnYWN5LXRydW5rCisxNDQ3MiAzZTUyZjNkYmUzZGNkOWYzNmY4NzhiODU1NDYzOWI1OTA5ZTM2MzQ0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ3MyBlY2RjNzgxNDg4MTE4OTczMzJjMWFlMGZkYjI4NDZiY2VlMzQyYWNjIGxlZ2FjeS10cnVuaworMTQ0NzQgMTg5ZGVlNzBkMzJhMGNiMDdkNThkYmIxMTFkMDE1Y2MxYTE0MjQ3MSBsZWdhY3ktdHJ1bmsKKzE0NDc1IGEwNDY5ODNjYjU3NjEyZDkzOGE3MGU5NGFiMTk4OWYyMGRhZjgwNWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDc2IGJhMjExMTc0ODAzOGUwMjg1ZmI5NmM1ZGYwMWZlYzQxMDhjZTQwYWIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDc3IDMyODdjY2QwZGQwMTMzZWU3NGVkM2E5MzEyZDA5NTkyNzE2ODE1NWYgbGVnYWN5LXRydW5rCisxNDQ3OCBkMjI5YmI3OTI2NTkwMDEwM2E5YTJlOGZjZDA4MzQxYzI5YjUyOTE1IGxlZ2FjeS10cnVuaworMTQ0NzkgMWI3MzFlY2Q5ZWQzMmJkYzI1OGU1N2VkY2IwYTNlYWFjZDcxYzkwOSBsZWdhY3ktdHJ1bmsKKzE0NDgwIDJjNzI1NmUzOTg5Y2Y5YjA2ZjI4NzI5MTBjZjkxNjRkNTRlNTQ3MjcgbGVnYWN5LXRydW5rCisxNDQ4MSA3OTdkOTk2ZjdjNmRhMDA5NGJmN2Q0YjkxYjIxMzM3ZWVmMzk1NTAxIGxlZ2FjeS10cnVuaworMTQ0ODIgYjBjNGYyNjFlNDcwMzI2Mzc1NzNjMmFjYjk1YWQ2YzMwZTE1MWJhNiBsZWdhY3ktdHJ1bmsKKzE0NDgzIGNhNTM1Mzg2N2JlMjMzMjIwY2IwZWM3ZDQzMGQzNzM3NTkwMTJkNjIgbGVnYWN5LXRydW5rCisxNDQ4NCA3MjY5MjE2NzQ2ZDAyZmFkZDk2MzA5NjRlMDY0YTM4NDY4ZTdjM2EzIGxlZ2FjeS10cnVuaworMTQ0ODUgOTFjZmI2ZTY4Y2E0NzE5ZWEzZDA5YjNmNTg0YzU4NDZmMWZjYzUwMyBsZWdhY3ktdHJ1bmsKKzE0NDg2IDMyZjk3NWNiOWY1ZmYyMjA2NTZhNDIxNjMwZGJkNzY0OGRiNzVjMWIgbGVnYWN5LXRydW5rCisxNDQ4NyBiZjZmMTc0NmIxMGJhMGZmYTFhOWEwYzdlNGMyNzY3NmQwOThiNGZiIGxlZ2FjeS10cnVuaworMTQ0ODggZTExOWMwMjUwYjIwOTE1ZDMyNjM1ZTU4NTRhZjA2MzEyOTIzZGQ0NiBsZWdhY3ktdHJ1bmsKKzE0NDg5IGMwNGUxYzcwZjBmMTI2YTEyZTVhMWFkY2I0MjZiZWUwOWQ4YTgyZWIgbGVnYWN5LXRydW5rCisxNDQ5MCBlMTIzZTY1ZWYyNTViODQ2OWIyYjI4YzBmNTAxYTdjNWUwMGJjM2VlIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NDkxIDI1MTc1NjlhYTFkZDQxYjhlYTJlMjNhZjgyNWIzMTA3ZjRjYzAyMjQgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ0OTIgMTA0NzMxM2NlYjViYzk4MzM0OTlhZTQxODAxYzJiMzhiMmY5MDI3NiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDQ5MyAyNTNlYzk1ZjM5MWUxYzVhOTlmMjYzNGUyODcxNDE5MWE4ZDIyM2JmIGxlZ2FjeS10cnVuaworMTQ0OTQgZTU2NzgwYjc0MzZhNmE1NzQyNTk2MGRlYTliZDAwYzdhM2M0YWM1MCBsZWdhY3ktdHJ1bmsKKzE0NDk1IDhiNzBlYWFhZGY0YjQwZDg2MzQ3MGMzMTE4MTNiNDA5YzQwMzE4ZDEgbGVnYWN5LXRydW5rCisxNDQ5NiBkMTVkOGY1MTQxYTg4OGZiMTY0YTRkMzM2MGI1MDhhMzAwNDJhNTkwIGxlZ2FjeS10cnVuaworMTQ0OTcgNmY5Nzk5YTE0NWU1ODJlNDY1ZTg4Nzk0NTY5ZjdlZTE5YjE0NjJkNCBsZWdhY3ktdHJ1bmsKKzE0NDk4IGVjMDYyYzdjMzhhNTk4MzY3MTNhMzRjZjEwYWM5YjQyOTljMTQwYTUgbGVnYWN5LXRydW5rCisxNDQ5OSBiNzBkZWU3MTUzNGE2Y2E4MjFiN2FiYmJmNTEwOWI3MTc1ZmMzNTM1IGxlZ2FjeS10cnVuaworMTQ1MDAgMGNkZTcyZjZlYWNlYjBiZDY5MGI1Nzk0ZTM2ZmFkMjUxZWUxODQzMCBsZWdhY3ktdHJ1bmsKKzE0NTAxIDg5YjUyODk1MzEwYzdlMjQ3YjdjNTMwYmJjNjJjMTk0ODhhNmVlNzIgbGVnYWN5LXRydW5rCisxNDUwMiA5MTk3MWViMjE1MjdmYTk0MWUwODk4Yjk4OGNkZjAwYmRlYTFlOGIwIGxlZ2FjeS10cnVuaworMTQ1MDMgZTY5NWI1MjI5NWE4NmE4MWIwZDJjNjc5OGViMmY2MTU2ZDI0ZmNlNCBsZWdhY3ktdHJ1bmsKKzE0NTA0IDc5ZWExOTA4NWZiNmFiOGM4M2I3OWVmNmNmMGRmZWY3OGQyZGRiN2IgbGVnYWN5LXRydW5rCisxNDUwNSAxNDUxNTM5YTI3ZWNmNGFkZWU0NWQ4NzJiMzJkZWE2ZWNiZDQ1NzViIGxlZ2FjeS10cnVuaworMTQ1MDYgNzgxZjQ4MjkxYTI5NjkzZmU1MDNmYzQyYmEzMmI4MmEyY2M5MzM5ZCBsZWdhY3ktdHJ1bmsKKzE0NTA3IGJiYjc1MWY1NWQwNDhlYjAwZmE4NDM4M2U5NjU0MTExMWQwYjRjMjMgbGVnYWN5LXRydW5rCisxNDUwOCAyZDg3NDA2NDdlOTk4YzNlMDNmYmFhYjkzMGU0YWM1MmIwOTc2NjA3IGxlZ2FjeS10cnVuaworMTQ1MDkgOTg2YTg3MzYzYTY2OTEyYTNmZjgzMjQ0MzdhMjI1YzcwYTc0Y2JiNyBsZWdhY3ktdHJ1bmsKKzE0NTEwIGUwMDU5NDM2NmVjNGY3NDQ2M2U4NzE4ZjkzMjNjMDJjOWVjMWFiM2QgbGVnYWN5LXRydW5rCisxNDUxMSA1ZTFmNGY3ZDc5YTc1NDAwMWEzNDk0ZWU2M2RkYWE5OWZkMTliYjdmIGxlZ2FjeS10cnVuaworMTQ1MTIgNDFiODVhMjZjZWVkYWE0ZWZjN2VmMmQ1ZTFlOWQ1YTEwM2Y3ZDkxNCBsZWdhY3ktdHJ1bmsKKzE0NTEzIGNhMzUwYTcxOTg4NzMzZWQ3NTdlYWYxNzhkN2RlOTQ4NTE2NDFkZWQgbGVnYWN5LXRydW5rCisxNDUxNCAyZmE4OWU2NTdhNGVkZGVmMzEwNzk0NTc2NDEyZDNmMGMzNTkzMmQwIGxlZ2FjeS10cnVuaworMTQ1MTUgMDY5ZWE1NzM2ZmY2MDdhODFmMzgyMzRiOTZjYjUwOWUzYjJkZDQyNCBsZWdhY3ktdHJ1bmsKKzE0NTE2IDA2MTA0YmNmMDZhNjRmYjA4MTkwNjYyZDc3MDY5YjQ1YmQ2OGEyMDcgbGVnYWN5LXRydW5rCisxNDUxNyBkN2U2NmVmMzQ1ZDA3YjljY2JhOWNjNDM0ZDU2NzRjZDdmYWQwY2I4IGxlZ2FjeS10cnVuaworMTQ1MTggMzJjNTllMjg4OWM0Y2M0YWEwMTg2YzAyNmMzNjY3MTUwYWRiZGExMSBsZWdhY3ktdHJ1bmsKKzE0NTE5IGQ3ZWNhNWIwOTYwYWJiMDIxYjQ4MWVlMTJhNWNhMzk4Nzk4ZTc3MDIgbGVnYWN5LXRydW5rCisxNDUyMCAyZmU5NTY4YmRlZjJiOTFiMWI2MDc4MTZjOTkxMmQyZjcyMTkwOTQ3IGxlZ2FjeS10cnVuaworMTQ1MjEgYzkwYWM2OTgyMTRkYjczMGI1NDdjNWZkYmU1NWI1YjE1YTg1ODBkMyBsZWdhY3ktdHJ1bmsKKzE0NTIyIDQ0NGI3N2NlZWJlNjkzMTBlMmNlN2MyNmVkYWMyM2I5OWQ2YWM5YjggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTIzIGI5MWQ4NDhjOWExYWQ0ZWI0M2RhNmU1ZGNlNjdkODIyZjRiZmM0Y2YgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTI0IDcxNDIzMjA5ZDdmYzJjNTFmN2U4MTBhZjNmM2EwNzc1NzQ1MGFiZmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTI1IDdlZDEwNGM0MGRiMzM2NTk5ZTI1ZjA1ODYxZGQ1NDg4M2EzYzM1YTUgbGVnYWN5LXRydW5rCisxNDUyNiBjYWIwNzFlOTJmMzIxZjUyYWM2YjMyYzk5NzE2NzliY2M0YTdhNWJiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDUyNyA1MmEzYjQ2NDU3OGYyZTg3MjM0ZjA3ZGQ0YTQ2NjE3OGU2Y2UwYWI4IGxlZ2FjeS10cnVuaworMTQ1MjggMjg2MzAzZjAwNTQ2YmNlZjUwNzc2N2I5OTZkYWI4NDRjMGJlMWNmZCBsZWdhY3ktdHJ1bmsKKzE0NTI5IGMyN2QzZThjNDVjNDY2NjdjY2FkOThkNTJiY2QxMzVjYTg4YzNjY2EgbGVnYWN5LXRydW5rCisxNDUzMCA1ZDA4NzllMWZmMzdjNTdlYTAyMmMzZmVhYzRkM2U1MzhiNzNmODU2IGxlZ2FjeS10cnVuaworMTQ1MzEgM2Q3M2ZmYzEwNWQwYTQ4Yzk4ZGNkYmE5ZmU1MGZhMmM0ZWQzZWNjNyBsZWdhY3ktdHJ1bmsKKzE0NTMyIGE3ZDYwOWVhOTBjYzY4MjY2NDBlYmM1NzE0ZmYyY2VjNTNmZGZjNDUgbGVnYWN5LXRydW5rCisxNDUzMyBkMjc2ODRhYjIxNWE2YTVhY2I0MDc0NzQ5OWVhNDlkMmQwZjI4MDFiIGxlZ2FjeS10cnVuaworMTQ1MzQgZWZkNjMxNWFlNjc4ZDYyZTU1OTc0NTNhZjJiZWFmYjI3NTEyZGIxYSBsZWdhY3ktdHJ1bmsKKzE0NTM1IGRjNjVjNWY2YWQ3YzE0Y2E0NDY5ZjZlZDI4ZmYxMzRjYjA5ZWMwODcgbGVnYWN5LXRydW5rCisxNDUzNiBkMjRhZDU1MDM4MzFhN2Q5ODE5NTA3OWEwMjY2NTQwZGU2Yjg4Yzk1IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NTM3IDliZWQzMzU5OWMzMzljMTVhMjZmMTBiMzllMDM4M2Y5MmMyMmNjNTYgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ1MzggOWM5M2YxMGRjZDY5NjhjZDkwNGNjNjRkZGI5YzM1OWJjOWJmOTk5OSBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDUzOSA4ZWU3NTlkNzk5NjQ2ZWQxMTQyMmZlZTFmZDIwNzM3YjJlZWYzNjVmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU0MCAwYzQ3MjllMzhjM2RiOGY0OGQwZGRlODI1MmQ1YzliMjlmMmY5YTAwIGxlZ2FjeS10cnVuaworMTQ1NDEgNTRjZjNiYjNiOGI3Y2Y0YzcxMDFjMTcyMzY5MTRlOTg0NGNmZGRmOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDIgMTBmYmZkMDdmMzg5NDFiM2RiM2MwNmU1ZDMyZWRjMDgzNTI1NmFlNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDMgYTM4ZmJjYjdkMzM1NjgwZjZhNTkxYWFkMTRlYjEzMjljNWJlZTkwZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDQgZTM5OWFiY2M1ZGU2MzBlYTg1NWNkYjYzMDc4NTMxMWFhMGI2YzM3OCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDUgNzU4YTg3ZjRjYjJjOWU4ZDhiNjc5NDgzZTgzODliYTQ2NTdkYWJlYiBsZWdhY3ktdHJ1bmsKKzE0NTQ2IDM5YmIwMTc1NTA3OTA5NzIzYzI0MzA4YWI2N2QzNmYxOWJiNzExMDcgbGVnYWN5LXRydW5rCisxNDU0NyAyNzBhMTE0ODhjNmM1YzNkMmVjOThlNTE1NWU2MWMzNDNjZGRkNmViIGxlZ2FjeS10cnVuaworMTQ1NDggODFmMTA2OWUxNTU4Njk5MzljNzNkMTIzOTZjMzVjMTFhZDNkYmYwMCBsZWdhY3ktdHJ1bmsKKzE0NTQ5IGE0NTcwZjQwOTg3MTBmNGZkN2VjMzExYmRjZWE4OGVjNDBmMDk5NTUgbGVnYWN5LXRydW5rCisxNDU1MCAxYTQ5YjYxNDRmMGRlMzI1YjU5NzhkMTJjNjQ4M2UyZTAzY2QwMGM2IGxlZ2FjeS10cnVuaworMTQ1NTEgOTQzMmQ4YjE1Yzk3MTRmZDI3ODRjNzBjNzFjYTg2YjI0ZjkzOTZkMSBsZWdhY3ktdHJ1bmsKKzE0NTUyIGU4MmE5NjMzMDc4YmM5MjU1ZjhjM2Q1NTI1NGVmYTQ3NmQyOTVmMjggbGVnYWN5LXRydW5rCisxNDU1MyAwMDE2NjMzZmJkMzIwYTFjNTg2N2QzNTkyYWQ2NDZhYTE1NDUwMGUxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU1NCAyMzEwOGNjZTE2OWI0NWRmYmIzZWRhYzkyNjVjN2JlMDI2OThkM2I0IGxlZ2FjeS10cnVuaworMTQ1NTUgZWY4YjA2MmI1Nzk4MDQ0ZmYzMzM0ZmFkZDEwYTc1NTA4ODNjZDVlYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NTYgNjEwZDdkNjQyOTE3ZTVmY2JkMTNiNjQ2NzljZTAyNDdjNzc1NTFiMiBsZWdhY3ktdHJ1bmsKKzE0NTU3IDc4NDJlY2Y1YjQyNDg5ZjJiMjMzOGUyZmYzODZiOWUxYzc1MDAwYzggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTU4IGNmY2ZhYTM5NTBkNjQyYzlhMjBiMzI4YTQzZDYzZjY4MzgwNmEzZTIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTU5IDU4ZDFlNzc5MTk4MDViODdlN2UwMWE2NDBmYjA2M2Q4YmQyMTZkYzYgbGVnYWN5LXRydW5rCisxNDU2MCBjZDU3Zjc3NmMxZGY4NTE1Zjc3OGEwMTUxN2JiNzRiOTkzYzMwZGE5IGxlZ2FjeS10cnVuaworMTQ1NjEgMjgwMmZiNTJlOTliYzc5YTY1YmQwMzRmMWU2NzMxMDhiYTlhMGY5NiBsZWdhY3ktdHJ1bmsKKzE0NTYyIDAxN2U1OTJjMGZkMmMzZTg1M2M3NDM5MDgxN2UzMTY3NjM1OTY1YmQgbGVnYWN5LXRydW5rCisxNDU2MyA0Njc5YmNlZjdhNGY2NDVhYjM5ZWY4YjViMTgyMTNhZGUxNTBlMDcwIGxlZ2FjeS10cnVuaworMTQ1NjQgNzIzZWZjZGNjZTFiZGE1ZDA2YjJiYWZjOTIzYjk1YTA1NjkzNDNiNyBsZWdhY3ktdHJ1bmsKKzE0NTY1IDYyZWJlOGM3MTU2NTliMWZkMjU5OWE5ZDZjMmQzMDdkYzcyN2JmY2YgbGVnYWN5LXRydW5rCisxNDU2NiAwMWQ1YjdkMTFmYzEyOGUyY2UxNWIwMjM1ODIxYjQzMWVjODdhOGY5IGxlZ2FjeS10cnVuaworMTQ1NjcgNjkzMmUxOGFmZjk4YWQ3ZjE2ZjA5ZDkzZGI0NzBjZmZhYWJjODk1MyBsZWdhY3ktdHJ1bmsKKzE0NTY4IGY4NTE4ZjA2MGJlZGY4ZjhmNWNmZWVlYmZjNmE4YzA5NmRhZTAzNWQgbGVnYWN5LXRydW5rCisxNDU2OSBhNDBjMmZlY2Q1MjY5ZjNhZTgyNjEzODgzZWRhYjYyOGFhYjMwODQyIGxlZ2FjeS10cnVuaworMTQ1NzAgMGE0YmFjY2JlOWZlOTM0ZDAxYWEzYmUwODViNDQzNzFhNGM3ZGJjMCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzEgNDliMTA5YjQ1MGRhN2Q3NmE5MTMyMDExYjIwMDcxY2Q1NTQ5OGM5NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzIgYWIxZWYxYWE0MDJlYTUyMzZiZTI1YWY0MDViNzkxMTY0YWJjN2M1MCBsZWdhY3ktdHJ1bmsKKzE0NTczIGIzY2EzY2FhMzc0YzUxOGJiNThkYzViODhkYzRlNmE4NzExZWRkZTUgbGVnYWN5LXRydW5rCisxNDU3NCAxMWFlMWVmZWM4NzFhMzdhMGNmN2U1OWM1NjkzZGUwNzBiMzYyOGQzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3NSBkNzRlMTJkNDY1ODBkMzdiMTc1NTkyNWU1Y2Y0MmY1OTQ2MGM2NGRhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3NiAwMGE5ZWY3NDQ3YmFhNTM5MzI1OWY4ZjczZDdhNzUyMzIzYWJiN2QyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3NyA4NTVjNzhmNWI1ZGRkNGZjNTNhZjZiMjhhODViNWNhY2U5ZTdmYWUzIGxlZ2FjeS10cnVuaworMTQ1NzggOTk0OGZkNTMyZDNiNGNiMmE4NDJkZmE3NmViOWVmOWRmODdmOTY4MCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzkgYjk3NWEwNTZkZWI2NjY1YzdkOWI4MzE1YzRmYmU2NzIxNDhlYjVhZCBsZWdhY3ktdHJ1bmsKKzE0NTgwIDBlY2E1NjdlNTMyYzI4NGI2ZjVkM2FmY2UxMTFjZGU2OTY5MDUxMjAgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTgxIGZlNDg1YTVkMDQzZmM3YmI3ZjViNTQ3OTE0N2IxZDRiYjgxNTQ0ZjIgbGVnYWN5LXRydW5rCisxNDU4MiBjMGYxOGUxMWY0ZWYzMjkyMGQ4NWJkYWVlNzhhZjczNzA2NjhlYjI0IGxlZ2FjeS10cnVuaworMTQ1ODMgYzE2NzExZmRkOTcyNDQzM2M3Yzk5MDEzYmY0ZTMyMjQwYWMzZGQyMCBsZWdhY3ktdHJ1bmsKKzE0NTg0IDFjOGE5ZmFhMzUwMWVjNDcyOTFmZmI1ZmM4ZTI2NjUzMWM5MTJiNGIgbGVnYWN5LXRydW5rCisxNDU4NSBjOWQ4N2E3YTcwYjBhMjkzMjQ5MzM0NWJiM2EzM2E1YWIxMDExMzcwIGxlZ2FjeS10cnVuaworMTQ1ODYgYTZlNWYwMjc0ZTUxNzJjNWQwOGUzMmEyMzJlNjVlZTdhYzg1YTFkMCBsZWdhY3ktdHJ1bmsKKzE0NTg3IDc5MjJkMDg0MjZjYWFlN2EzYjdkMTg1NWMwMTM1NTcwZTk2NzMzZGYgbGVnYWN5LXRydW5rCisxNDU4OCBkMTM1OTgzMWU1ZjI2NGM5YWIzODg4OWEzMjU2YmZiM2RkMjY4OTllIGxlZ2FjeS10cnVuaworMTQ1ODkgNWIwM2M1Mjc4MzE3ZDY0OWE0MGI0YWQ0OTgwZDdmZGZkNjUyYzkwZSBsZWdhY3ktdHJ1bmsKKzE0NTkwIDE1Y2JiNTdjYTc0NzI1N2RlMGZiNWMwNGQwNjk5MWE0OWQwNTE4ZDAgbGVnYWN5LXRydW5rCisxNDU5MSBhODUxZWYzMjZkOTMyZjcxNDc4ZDhkYTZjMmQyY2RjZDEyYjY0ZDkyIGxlZ2FjeS10cnVuaworMTQ1OTIgN2NiNDkxZTM5OWU2MTlmNGU3ZjU1OTVhYzQwZGYzNzdhNzc3NmZhYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1OTMgMjljNWM1NDE1ZGE3MWRlY2JlYmNkODI1YjMwOGEzYTkzMDZkYzUzNCBsZWdhY3ktdHJ1bmsKKzE0NTk0IGY4MmI5MjNhN2E5NmMyYWY1ZDQwZGYzOWJhZDRiMTA1MDVlOGQ1ZGUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk1IGNlMjY5OGQ4ZGZlYmY2ZDg4NTJhNDYwZDUyYjVhNDYzNDU0Zjk2MmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk2IDA2ZmIyZGQzOGQ3ZDI5OTkwYWNiNzJjZjI2NzgzYTNjZjE4YjRlMGIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk3IGNmZWMxMWI0YThhNzJjYmU4YTcyZjcwN2EzMDBmZDgzMGE2ZjkxOTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk4IGFhMGQwYjFmMWJlM2UxMWI2MmExOTAyZGNkNzQxY2I1YjJjYTMwNTcgbGVnYWN5LXRydW5rCisxNDU5OSA4Y2M0NDI4YzdiYWQ5MWU2NGZkOWEyNGU4ZDUwMmZhYmJlNTUxZjNiIGxlZ2FjeS10cnVuaworMTQ2MDAgZDA5N2JjNWFhN2YzNDQ0NGU1ZjRlNDk5NmUyZGJiOWEyMDIwNjhiYyBsZWdhY3ktdHJ1bmsKKzE0NjAxIDRiOGJjOWFiODE3NTU1NmY5ZTg3OTM4ZThjZGJiNzljNmVlMzdjNDIgbGVnYWN5LXRydW5rCisxNDYwMiAyYTYyODA2Nzk2OWI5M2NhNTYwNGEzYjdmZjJmNDI5MzJhZjlkZmNmIGxlZ2FjeS10cnVuaworMTQ2MDMgYTQ2OWFhOGIzMzJhNTg0NjM1NTc3MWVkMWU4ODlhOTlhMDYxNmJmYyBsZWdhY3ktdHJ1bmsKKzE0NjA0IDc5YjZhNmE4ODJkOWU4ZDU3MTM3MDkxZGFhYWQ3MDZmZmFhM2VhNzggbGVnYWN5LXRydW5rCisxNDYwNSBiZGI1ZjZhNTI0YjVlM2Y2NDE3OTE5Nzk4ODNjMjVkYmU5MDE3NTQ4IGxlZ2FjeS10cnVuaworMTQ2MDYgOWQ4ZjQ3Zjg0NDdmOTc2MjAxMzhkMTRmYWNmNmRhMmQ0N2RiZTAzMSBsZWdhY3ktdHJ1bmsKKzE0NjA3IDFiNTRiMjEzNDZkMjRmYTI0NjkwYTc2MmNlZjFiN2NiYTI4ZGIzMGYgbGVnYWN5LXRydW5rCisxNDYwOCBhZWY1YTdjNjIyOTFlYjY5ZWU0MzhlODdjMWJhYTMyYzI0YmRmMjU3IGxlZ2FjeS10cnVuaworMTQ2MDkgMjVhZGM1YzhkZDY4MDA0ZTNmZjE3ODBkNjAwM2MwYTFhOTE5MjFjZSBsZWdhY3ktdHJ1bmsKKzE0NjEwIDY4ZTBlZjA1MjgxNTA1OGYwMjI1NDc4YjQ5MzlkMmU5NjllZDI4MDkgbGVnYWN5LXRydW5rCisxNDYxMSA3YmQ5N2MzZGQ0MzJmZDk0NTk4ZDhjY2RjNWRkMzI0ZjYxNjBmOWE4IGxlZ2FjeS10cnVuaworMTQ2MTIgYzk0NTcyYTUwOTk1MjMxOGVhMTM4ODMxNDA2YThkNThkYzRiZmRiNCBsZWdhY3ktdHJ1bmsKKzE0NjEzIGMwZDM2ZjkxNmFmZDhjYTcwMWRkNTY1ODhkNjQxZjkyY2FjZGFlNDEgbGVnYWN5LXRydW5rCisxNDYxNCBlZjk4ZWU2YWViNDJhZTAxZTRjYzBmNjhmOTY1M2JlMTFhYTM3MmYwIGxlZ2FjeS10cnVuaworMTQ2MTUgMDQ1NmE4YzJlYmY3YzJhOTcwZjE2NzM2MTYyYmIzMTRiZDE5MDIwYSBsZWdhY3ktdHJ1bmsKKzE0NjE2IDczZGZiZWUxNTAyNzFmM2E3YTBiZGY4MTkyM2Y3NjljYmE2MDg1MTcgbGVnYWN5LXRydW5rCisxNDYxNyBkZTg0MDQ1NzNmZTUxMmM3Y2RhNjljYzYwNGNjOGM5M2MxNTExMTI0IGxlZ2FjeS10cnVuaworMTQ2MTggZjZkMWQwZmRjMWM3YzcyMDFiNDkwYWM3NTk2MDc4NDA3NzM3YWM2NyBsZWdhY3ktdHJ1bmsKKzE0NjE5IDQyMWIxNjIwZjU4MmY5YTdiODNmYzNiOTBjYWE4ZWY5NDlmYjMyNTQgbGVnYWN5LXRydW5rCisxNDYyMCA4MDIzNzBhNjBlZjdlM2Q3MWY0YWE3ZGJiY2I0ZmU2Yjk2NzU4YTRmIGxlZ2FjeS10cnVuaworMTQ2MjEgNzM0ZjNjMDdhNmJiOWYzZDVjYzI3OTIyZWQwNzJjNjkyMGU2OTAxYiBsZWdhY3ktdHJ1bmsKKzE0NjIyIDFhNThlNmZjM2E5NTRkZjc5Zjg1ZjM4ZDEzMDMzODAxMjQ4NTU5NTUgbGVnYWN5LXRydW5rCisxNDYyMyA4MjY2OTBiYTFhZTY5YjhiNTg0ZTRmNjk0N2Q2ZmVkYzU1ZTMzZTIyIGxlZ2FjeS10cnVuaworMTQ2MjQgMmE0MGU5Y2FlODU5ZGNhMDQ4OGZkY2RlODE2OGM4ZjUwOTg1YzIyZCBsZWdhY3ktdHJ1bmsKKzE0NjI1IGQwNDA0NzgwZjAzYmY0ZTJmMmEzMjA4Y2VlYTZhYWFkYjM0ZDYyYjIgbGVnYWN5LXRydW5rCisxNDYyNiA1ZTQ4ZDgzYzBmY2UxNzIwNDE5YmFlZTYzN2EzZDA0NzczMzU5MGQ2IGxlZ2FjeS10cnVuaworMTQ2MjcgYTM5OTJhNzg5ZTJlN2JiMTU3ZTdiMjk4YTU3ZTg3OGE3MWVjNDU3OSBsZWdhY3ktdHJ1bmsKKzE0NjI4IDViMzNmY2EwMmI3ODViYjZkYjcwMTVjMTE1OTE3MDJkNThkNjA1NGUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NjI5IGFkZGVhMTE1N2FhN2Y5MDcyOThiYWI5ZTk5NzA1MjI0YjI2NWRjZTEgbGVnYWN5LXRydW5rCisxNDYzMCBlMTA1MTVlN2QzNTZjY2JhN2Q0NzQxNjRjMTdhNGY1Mzg1MTg2MzQzIGxlZ2FjeS10cnVuaworMTQ2MzEgZjlkYjM2NTRhMWZkMDg3NjZhMDU2ZTM2MDM3MGVhNWY5YzdlMDBhZCBsZWdhY3ktdHJ1bmsKKzE0NjMyIDM5OGE0NTk5ZWVlMzNjZTliNzM0YzNjZTlhODQ5MzQxZmM2M2JjZGIgbGVnYWN5LXRydW5rCisxNDYzNCA2ZTNjODFiZDgyOTFlZGVhN2Y3ZjRkNzYwNDU0ZWRlNTI2NTQyZWJjIGxlZ2FjeS10cnVuaworMTQ2MzUgMjNmZDdkMTAwNjRlYjE2MjFmY2VjYmZhMDJmMmIwMTVkYTljNzZkZSBsZWdhY3ktdHJ1bmsKKzE0NjM2IGQ0NjYyZDM4MTc0OGFjNmNhNmI1NTBhZTMxMjY5ZjUxZGQ3MzVjYTMgbGVnYWN5LXRydW5rCisxNDYzNyBmOTE0MWJlYmVkNDhmNGU1OWExMWRiMTJjZTYwY2E1NDViYTBlMjVhIGxlZ2FjeS10cnVuaworMTQ2MzggM2U1ZmJlZjliMWY1MWNhNjE0YWVjNzNlMzM0MmNmZGM3YWI1YWI5OCBsZWdhY3ktdHJ1bmsKKzE0NjM5IDI0YzE4N2I5Mjc3Mzg0ODZhZjBhYjQ0ZTA2ZGQwMjNmZDFjNzk3MTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NjQwIDc0MTA2OTA5MjgzMTliZDgxMmQ2YzIwYjI0NmI0NzNiODQ5NThlOTggbGVnYWN5LXRydW5rCisxNDY0MSA5ZDUzZmM4MDQzYmE3OWY1NGEyOTYwMWI0NDJkNmZkMTJlNjUyMDc3IGxlZ2FjeS10cnVuaworMTQ2NDIgYmU5OGUwNTVlMzlkOTkxNDU3ZGQ2N2M4ODhmYmFlYTQ1MTlhNDk2MCBsZWdhY3ktdHJ1bmsKKzE0NjQzIDI0MTk5YzFiOTE4MmEzNmNjNzkzYzI2NDQ1ZWEwYmVlNjNiZTljMDcgbGVnYWN5LXRydW5rCisxNDY0NCA0NDEyYzdhMzI0OTdmOTBjMjk3MWIyZDFkMGExYTBjNzVlZTEwYWFlIGxlZ2FjeS10cnVuaworMTQ2NDUgOWYyNjFlOTRiMmIyNWIwNDFkYmZmYTNlYjJlNTM1MmY3NDQxNTU4MSBsZWdhY3ktdHJ1bmsKKzE0NjQ2IDUzMDVmOWIwMWZjNzU0NTc4MDJiMTcxNjI3ZjRmOThkYmU2ZjkxNzQgbGVnYWN5LXRydW5rCisxNDY0NyA1MDc4MzNiMTgyMTNiNzBiN2MyMjNlYjk2ODYzN2Q1MmFhNTU1OTc1IGxlZ2FjeS10cnVuaworMTQ2NDggMTNiYzY4ZmFlYjY1NWI2NmRiNjUzZDQ2MWRlODBmYzcwYTE3ZjYxMSBsZWdhY3ktdHJ1bmsKKzE0NjQ5IDc0YjcyMTNmYjYwOTIwYTAxZTQyMWM5NDUwY2U2ZTQ2OTZlZjQwZmIgbGVnYWN5LXRydW5rCisxNDY1MCBmNzZiZjYxY2IxOWM0YTc4M2FmYTNmNzg5ODcwYWE1ZTkxNTY3MTU0IGxlZ2FjeS10cnVuaworMTQ2NTEgNTc0MjgzZGIyYjNkZGRlZjM2OWRmZDAzNjljZThhODhlMmIwMmQyNCBsZWdhY3ktdHJ1bmsKKzE0NjUyIGQwZTA2ZWZiMzE2NTFmMGU0Y2RjYjQzZjYwNzg3NzU1ODE5YTBhYTMgbGVnYWN5LXRydW5rCisxNDY1MyA4YmRjMjVkMjI5MjVjMjFhMTM2YzUzMzEwMTc4ZTkxM2RiZTA2Njk0IGxlZ2FjeS10cnVuaworMTQ2NTQgMjgwMDNhZmExYTJmMDkxZjMyZmZmMzNhYmIxNzVhMmYyYjI5MDg1MyBsZWdhY3ktdHJ1bmsKKzE0NjU1IDg3NmYzNTgyOGU4NzBhMmYyYTcyODg2ZjMxMjU5ZjJhOWRkOGQyNGYgbGVnYWN5LXRydW5rCisxNDY1NiA1MTMzNTRkODdhODVlNzdlMzExMzk3ZWU4ZjkwNDZiMzU5OWNmMGZkIGxlZ2FjeS10cnVuaworMTQ2NTcgOGI4OGUxYmMwZTFiNGIwYzgyZWM0MjNhZmFjNGUzMWRjZWVjYjBkNiBsZWdhY3ktdHJ1bmsKKzE0NjU4IDNjNjIwZjY1ZWFhNWI1ZWI2NWI0ZTZmYzYxZTEyOTFmM2Q3ZDZiYzEgbGVnYWN5LXRydW5rCisxNDY1OSAzMGQ5MjQ4ZTExYmJiMjMxZjczODc0M2YzYzJkMWU1NWIyMDQ0OTExIGxlZ2FjeS10cnVuaworMTQ2NjAgYTliNWEzMWZmOGNiMTkxMzcwNzVmOTNhYTdmYTliNTZiZmYyYjVhNSBsZWdhY3ktdHJ1bmsKKzE0NjYxIGQ3YTRhNWFlMmRhZWM0N2Q2NzVmMjY2YzM2NjI2ZGIzODkwMDk0ZjAgbGVnYWN5LXRydW5rCisxNDY2MiBhMTMyOTRhZWYwMmVhNGZlYjM0YjU2ZThmOGY4ODU1ZWUwMTA0NWM3IGxlZ2FjeS10cnVuaworMTQ2NjMgNGM3YmM4ODVmNDIwYWZhNThhNjY2Zjk0MTZiYTI0MDI3MTdiYjU5MSBsZWdhY3ktdHJ1bmsKKzE0NjY0IGVmYjNhNDVjNjZmMzFhYzg5YTg0ZDdiYzQ3OTMzNGFkOGVkYzkyNGYgbGVnYWN5LXRydW5rCisxNDY2NSA4ODIyNWRmMzVlZmJhYzQ2YmI1YmMxNzY1ZmRjMjhmNzQxOTQ3N2NmIGxlZ2FjeS10cnVuaworMTQ2NjYgMzMwM2E1YmFjNmRkZDQyMDEzMzgwMWU2OTVjNGNjYmE4MDFmM2MwMCBsZWdhY3ktdHJ1bmsKKzE0NjY3IDBmZGFjMWY1NGVjODEwMzUxMTVlZjZmZDc3YzAwNGE3YzVkMDZlZmYgbGVnYWN5LXRydW5rCisxNDY2OCA5M2RhYzQwNTMxODljMGY1NTBiZjU2OWE2ZjgyZjk2ZDcyNjE1MDEzIGxlZ2FjeS10cnVuaworMTQ2NjkgZWU2NDkyYTVmZGVlNjZhODM0MjE1YjE2YWJjODg2Mjk1NTE1ZGJkYiBsZWdhY3ktdHJ1bmsKKzE0NjcwIGYxMDQyNTFiNmY4ZjM3ZWY1ZmIwMDExNDhiZWU2MTc3MTNkM2YwOTIgbGVnYWN5LXRydW5rCisxNDY3MSA4MTcwMmE3MzU0ZWNiNTBjZTA0NjMzNGRkMDlkOGJiZTlkZWQ1ZjhjIGxlZ2FjeS10cnVuaworMTQ2NzIgMTc4OWZhZTVmMDc0MWEwM2M5ZDQ1NmI0ZTNjMzZkNDY3M2Y2YzY3NCBsZWdhY3ktdHJ1bmsKKzE0NjczIGI1ZTgxMjcxYzRjOGJiY2M1YWY1NmM1ZjUyOTVmNmU5OTJjMzE4ZWYgbGVnYWN5LXRydW5rCisxNDY3NCA0YjhiMmUyOGJlMzQ5MjU5OGZjOTFmMWQ5YWFiZGVmZjU0NWJkYzc5IGxlZ2FjeS10cnVuaworMTQ2NzUgOTZmYTQ2ZDM0ODk4YWNkZDdiYzZhZmFhM2MxOTkxMTNlNjMzZWYwYiBsZWdhY3ktdHJ1bmsKKzE0Njc2IDMyNjI3ZGNhZmFiZmY3MmY1M2M1NzY0YmY5NDRkNjA3NDQyYmJhODAgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njc3IDIzZGM4OWFkMDk5NmU4OTU2MWI0MGUzODVhMDNjNTkzZjFiZDU0ZjkgbGVnYWN5LXRydW5rCisxNDY3OCAzODMxMGViMDY1OWUzYTRjNDE3MzVjOGZkOTMzNzRkOTk5ZjIyNTI2IGxlZ2FjeS10cnVuaworMTQ2NzkgZjk0ZDEwYjZkMGY0ZDEzMzY2ZDZjN2VmYzIwYzZiM2U3ODExYjcxOSBsZWdhY3ktdHJ1bmsKKzE0NjgwIGM5NDI0N2I1YzM1NTU3OGY0NjI2ZDNmNjdiOTVkOWU5MDE5MzJlNzEgbGVnYWN5LXRydW5rCisxNDY4MSA4NjUxZjJkYTdjNGM4NzAxZTVkOTI5M2Y0YjY1YjljNWZiNzVmOWQ5IGxlZ2FjeS10cnVuaworMTQ2ODIgZTM2MmYzMjYwNDhjYTJkMWQ5MmYxMTEzNDM4YmU5NjFiOWYzZjJlZCBsZWdhY3ktdHJ1bmsKKzE0NjgzIGQ1MGZhMzY3MGI2NmExN2Y1NjMxNTlmMjBjZDU5NTliOTRkY2ZlZDMgbGVnYWN5LXRydW5rCisxNDY4NCAxNDhkYjYzMjIxNjFmZTI4NDk2YTQwNjZhOWY3MWM2ZGFkM2Y3Y2ZkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4NSAwMWZhNWNhOTg4MTNiNDU1YzgwYzA1OGYwYTg5ZjkzMTZhY2I2ZjU5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4NiA3NWQ2YzdjM2VjNTUwMGU0NmEzMWFlNTM5MWQxNTZjZmRmNjgzM2RiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4NyA3NjEwZWVkM2UwMzMyODNmZmNhOWFjNTE1ZDMzODdlYjg5Yjg5OWM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4OCBmNzhmNDc3MjU2OGVjNjFjYWYxY2UxOTQ2ZjMxZjE4ZDM2YWJjY2JjIGxlZ2FjeS10cnVuaworMTQ2ODkgNzRkOTdkNzk1YzRlZTczY2Q4NzczOTQxNjQzMzVkNDUzMGJmZWViYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2OTAgM2Y1NmNkYTNkMmZjNDE3MTM4YWEwZTM0ZmIwNTdlYmQ1M2NlNGRmYyBsZWdhY3ktdHJ1bmsKKzE0NjkxIGM3NDU4OTIzZjZhMmQzMzAzNDVkMTEwOWVhYzJhZDk4ODNlZmU1NDEgbGVnYWN5LXRydW5rCisxNDY5MyBmMjdjYzE3MzUxN2UzNDJjMzEyN2YyMDA3ZGYzOWY4Yzk3MDk4ZDEwIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NCAwZjZlYWIwM2YyODgwMWI2MzE0ZjQ5YTliMWJlYjhmMTlhZjUyYWFmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NSAzNjZjMWU5OGY3MDc4YmY4MGM0MWM2NWE1ZTA1MTFhZDQ2YmRlODAxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NiAwYTcwNjA3MmQ1MGFmMGY2Y2Y3OTkxODIyMWE0NmExY2JiZjZmNTI2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NyAxYzkzNWNhMzc4NWM4ZDgwNTgwMjQ2OGYzZTMwMjg5ZmJiN2Q3YmFjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5OCA0MzhhNDQwYmIwODVlNWU5NTJjOWY1MTNhYzEwMWFmM2RhMjQ5NmFlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5OSAzZjg1YzRiOTlkMzMyMjA1YjU1ZGMzNzc4MjliODU0ODQ1NjdmYzllIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMCBmYWYwYzllOWI5MmZlYjM5M2VhZTE1YzJhNjNkYTRjZTYxOTUyYWExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMSBmMjM4NjRlNGFkMmNjNTUxMjRjMWNkYTBjYzg1MmI3YTM4MWM5NDdmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMiBlNTdjZTRkZjU3MDdhNzJmYTUyMjExMTA1MTY5MTQ2NjBlMDI3MThmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMyA0ZmJmNjk2MjA4N2Q1OGYzYjEwZDk4Y2ZhMmNjYjVlN2Y3OGVlZGI1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNCBiZGFiOWM1NWYxNjgyOTdlY2QwOGQyZjZkNmE1ZjM1ZTAyNWMwYjM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNSBhMzNmMmEzZGI4OTI3ZWIyNTQyMmVhMjZlMmU5ZDNlZjJjNjdkZDJjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNiAyZWFhZWQ3NTg5YWU1ZTBkOTY5OWJmYzIzMDVmMGE4YTdhNmQ1NjM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNyAzYWYzYjFlYjY3ZmUxNGMxYTkwMDBmZjRkY2FhNDhhMjgzOTU0ZDI3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwOCAyNjEyYjk2Yjk5YWM0NGZiZjcwNDNlMjE2NjMwOWM4YTI4ZmEwNjVhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwOSAyOGM4Y2U2NjViMDMyMGRlOTdiYTMzYWQ1YjM3MzVjNzY0MjE1YTViIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMCBiNThmMmYwY2Q1NWIzZTQyODE5YjZjMGQ0ZDI5MjZmNjBjNDkyMDQ2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMSA5NjM0OGJlYjkzODQzODlmYmU3ZjJkOTA1ZDViM2JiYTI2MzMyYmZmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMiAxNjlhZGQ2YTRkYzFiMGEyMjk2MzE5NGRhMzZhOTE4NDBjZDc1NjkxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMyA1MDAwZWFmMDU4ZGI3OGNkNzg0MjZiYzIyYTY2MDlhZjZmMGQ0OGY3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxNCA3MDNkYTdlOTRiMjE2NWQyNTg5Nzg2M2FjNDg0YzYyMWRjZThmODRiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxNSBkN2I4N2YwZmYwZDJhN2Y3MWZjYTY2NDViMDIyZDA0NmFhZDgyNDVlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxNiA5ZDczNTYzOTQyOWQxM2FmY2I5YWRjYzA0MDEwZDRmMWJkZDcyNWY0IGxlZ2FjeS10cnVuaworMTQ3MTcgZTBmYjA0ZDFiZDkzNGI5MGIzOGE2MGI1ZmZhMGVlNDgwZjNiOWNhOSBsZWdhY3ktdHJ1bmsKKzE0NzE4IDc0ZmI2MDJiNzZjMmZmYjFkZTkzNzViY2U0YTMyYjhkYjkyMmFmMDYgbGVnYWN5LXRydW5rCisxNDcxOSAxMjdmNzBmNTliMDI2NjQzYTIzMmI4OWUwNTQ1YzIwNDI5YzNjNmZkIGxlZ2FjeS10cnVuaworMTQ3MjAgNjYzMTI5ZjNhYmUwMDFlYmQ3NTcwZTIxYWNlNDEwOTMwM2I5NzY5ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MjEgYjQ3MjQ4Y2U3YjZjOTQ1MDQ5YzZkZmU1ZTdhYzg5YmUyN2M3YzMxMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MjIgMzk1MjMxODk1N2NmYTMzNjRmYWVhYThmYmU2ZGE5Zjg5YmM0ZjlmNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MjMgYmQxMDE0MjE1ZjYyMjU0YTZkMDRhNWI4M2ZlNTY4MjljZWFjMjVjMyBsZWdhY3ktdHJ1bmsKKzE0NzI0IDRmYTI1YTI5MjI3M2I3NTRkYmFiMGRkZTA2NDc5MTA2ZTBhMzEwZDcgbGVnYWN5LXRydW5rCisxNDcyNSBjMmVmZDE3Y2VjYmYxZDZmMjVlZmQ3OGViYzJiZDI5NmQ5ZjFlZjNhIGxlZ2FjeS10cnVuaworMTQ3MjYgZTZjNDY4MTlkYjkyNzI5NzZhMmQ4ZmY4Y2ViMGI4ODFmNDAxNTU5ZSBsZWdhY3ktdHJ1bmsKKzE0NzI3IGJhODBjOTA2NDQ5MTgwNjdlNmY3NThjYTZjNjQ5OGQ5MzcyNWRhM2UgbGVnYWN5LXRydW5rCisxNDcyOCBhNDExODM2NzAzODZlNjJmZjM4OThlMTk2OGU3YjhmZTM0MmMxNjIxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcyOSBjNjAzY2RlZGFlMTc3NGUwZWZjNTliYWE1NWQ4ZjkwZGM4NDE2OGIyIGxlZ2FjeS10cnVuaworMTQ3MzAgMTNmZDBkZmVjNTYwYTdkZDU1NmFlMDY4NjlhNWE0ZmNlZjc1YWU0ZiBsZWdhY3ktdHJ1bmsKKzE0NzMxIGU3ODIwMzUyY2I4MGQwZjNkN2IwZWFhY2M1MWIxYjNmODc3YzZiMDYgbGVnYWN5LXRydW5rCisxNDczMiAwNTY5NzI1MTcxOTEyZTViN2Q3ZDFhNTk4NGIzZTk3OTI3NTA3ZGE1IGxlZ2FjeS10cnVuaworMTQ3MzMgNjliMGZjZWY0YzBmMjFkNzY4Yjc0NzU1ZTRkYmU0MmQxNWUyZGJjMyBsZWdhY3ktdHJ1bmsKKzE0NzM0IDc2NTE2MjA0YjYyMGJlYjg0ZmMxZGRlOWZhZWRiODQzNDRlMjJlNTIgbGVnYWN5LXRydW5rCisxNDczNSAxZTFhZWJiM2U0ZjY5ZTU4ZjBiNGQ4ZDIwNTM3MDQzMzdkNDQ3OTZmIGxlZ2FjeS10cnVuaworMTQ3MzYgODZkOWNlMTU4MDg5OGVmNDc4Njk3N2QzZjZhNmE0MTRkM2M4YjFiNCBsZWdhY3ktdHJ1bmsKKzE0NzM3IDkxNGVkNTI4ODk2ZTBlZDVhNTBjMmQ1NmFkMDA5ZDE3MzM5Mzg5MjQgbGVnYWN5LXRydW5rCisxNDczOCBhMGE5YzY5YWY5Zjc4Nzk0NjUzYjZmMDljMDc5ZDE5ZTMzMTE3Y2I4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDczOSA2ZmQwYmIwYzAzMzFlZmJlN2IxZjE1NDVkYWJiMWU3MzUxOWY0OTYyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MCBmMDdjMzMwNTU3Y2ZmODYzZjVlMzE1ZmI4ZDVmMWQ2MTIwNTIzYWY0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MSBkNzRlYWE5MmYwYjQ1ODM0NDkyZjQ1ZTI0NjRjNGFkYzYyNzk0MTExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MiA0M2QyMjQ3ODZhNTgxZTQ1ZDMyNmNlMzUzNzNjZDZkYTVhYzM3NWE3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MyA2MjhjYTFlOTA1OTFlNTBlOTU4OTg5OGI3ZjVjMWRkMDAxYWQzOGZmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NCBmMjIwZmJhNTc3NDlmYjgwMzA1Y2ZmZTkxYmEwN2Q1NmFhYjc2YWVmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NSAwYjk2MzNhNDVkNjhlYjgzYmJiYWM5ZThiMjc5NGIzY2E3NDUwNDljIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NiBjYTAxN2RlNGYyZmQ5NGM2N2JjMmVlMjBiY2ExYjU3MDIzYzFhYTE0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NyAyNWQzZGQwYjFjYTI5MzgwMzI5ZjQ0YWRhZDY2ODQ4NmIyODQxODE1IGxlZ2FjeS10cnVuaworMTQ3NDggNzk5NGQ5ZGI3ZjRkNWRmZTUxZWJhZDMwMDQ3MWQwMWViYmMwMDI5YiBsZWdhY3ktdHJ1bmsKKzE0NzQ5IDAwOWQ4ZmFlODFlYWU2ZWRiYjdmZDczZjBiMGY5MDdlZmQ2Y2UyYTUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUwIDBjNDQ3YzI4OTE0NjZmZDEzYTEyZDIzZGU1NGQ5NDJiODc2ODYwNjIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUxIGQyYTAwNjEwOTJmODA1MDE1NWQ0Y2I5YjQ0ZDI2OWNiYWFkZDlmY2YgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUyIGRhZjRlZmMzYWJhOTFiYzFlOWE5MjVkMjk4M2Y5ZDFmNTk1Y2IxZTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUzIDhkYzA5MThhZTJjMmZmY2U3Y2FhNGVhMGQyM2FjNmY0MmVhMDE2YWUgbGVnYWN5LXRydW5rCisxNDc1NCBmOTU1ZmJkNTEzZWU0ZjZkNGE2Yzk4NjY4ZTM0OGEyN2FlMDFhODI5IGxlZ2FjeS10cnVuaworMTQ3NTUgNTU2YzI3YjNhYjZlYmY1NmQzMzc4MjQ0YzgzNzA0YTQ2MjJlMmU4NiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTYgYzhlMDAxMGMxMmVmMzFlZGNiZTMyOTJkZjY2ZTYzZDIzYWRmYzcwYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTcgODdhZWU0ZWYyOWY1Mjg2YWM2YWM4MzAwNGEyNGE0YjdhZjliYjMwZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTggMzI1OTM4MzAwYTc4NDE1YzYxYjdiODQzY2IxNWU0OGMzYmIzMDJjOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTkgNmU3ZWM5YTAwY2NlNWNiMDlkOGQ2NTdhOTE2OGQwYjljYzc5ZmVlMSBsZWdhY3ktdHJ1bmsKKzE0NzYwIDM2OTBjODdhOWJjNjY0YzY1MzRjMzM2OTA1OTQwODgyZjhhMDAyMjkgbGVnYWN5LXRydW5rCisxNDc2MSBhZmFiN2JkNzJjNDc5NWQ0ODU1ZWFiM2UzOTg0ODIzNjRlNTEzMWRkIGxlZ2FjeS10cnVuaworMTQ3NjIgYTA1ZDgzMzhmYWM1NzM3NDFlYTBiZDM5ZThhN2JjYmFhZjMyOTNhNyBsZWdhY3ktdHJ1bmsKKzE0NzYzIDljYWNkMTE2Njk4NjIzY2ZkYWQ5MDMwOTAxNjYyMzk2Y2M2OTg0MGMgbGVnYWN5LXRydW5rCisxNDc2NCA4NTZkYWRmNTZjZDk3YjI4ZjAzYThmMzJjNGI3MmJiM2IwNjY4ZGM0IGxlZ2FjeS10cnVuaworMTQ3NjUgMjNmY2U5YjlmM2JjOTMxN2NjMjgyZGE1NjRkZjlhZjljZTc2YjA2OCBsZWdhY3ktdHJ1bmsKKzE0NzY2IDZmMGQxZTMzNDZmOTVhNzAxYzg4MGM3ZWI1NWI2YWEzY2RjMjg5OTcgbGVnYWN5LXRydW5rCisxNDc2NyA5NDA0MTk1ZmYzZmVmZmFjYmUyNjA5MWMwZTEwZTBhOTI1OTNkMTczIGxlZ2FjeS10cnVuaworMTQ3NjggZDNlNGE0NTY5MjhiZTFkYTQxNGI2ZDRlMDQxYjI2YThmNWUyZjI0ZSBsZWdhY3ktdHJ1bmsKKzE0NzY5IDE5NTZlYzA3Njc4ZTg2ZjA1ZWExZGM0MmM4MzMxYTg3YjhmMzExMWIgbGVnYWN5LXRydW5rCisxNDc3MCA3NDBlYzA4ZTZlYzFjNTkyN2Y2M2U1MWNkYWY0ZGIxM2I5OTdjMzM0IGxlZ2FjeS10cnVuaworMTQ3NzEgNDFhNzI1YzEyNTUxZjYxYjRiMjhjZjM0MWU1MDE3ZTMzYjM0MWJkZiBsZWdhY3ktdHJ1bmsKKzE0NzcyIGQ2YmMzYmQ1MjQyNGU2YTFiY2E2MWE5OWZkMGM4NmQ0ZWFjZGE3ZGMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzczIGUxMjA0MTczMjMwNDA5MzU4OWUzZGU3ZmY0MDIzODQ0NGRhMWJiMDggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc0IGE0YTc4NWEwMTM2MGFlYWUxOWFjNDE4Mzk3NGRlZDY1YWMyZmY2NzEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc1IDAxYTYwYjkzYzJmNTAwZjM1NzMwNmIzOWZhOWYwZWU5NTY4N2ViNjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc2IDAxOWMzNDI4MGZjMjFmM2I3MjlmZTkzOWFiNTU4N2FmNGZkMzJkNTAgbGVnYWN5LXRydW5rCisxNDc3NyBhOWExZTU5MWViM2ExYjFlYTA1ODAxNDg1YjYxY2RhMzliZDRmNGUxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc3OCA4MWMyM2IzODdiYjA4NDhiMGY1ZWFlZGJhZDliNDk4NmRhMWY4ZDk2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc3OSAyZTIxYWQxYzYwZmY4NjYzMDEzODY0MGY1YTRiNzAwMzRhZWU0Nzk0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MCBhZjQ3NzhhMTMwNTU2OTE3ZGJhYWRlM2ZhNDIxNjMxNWJjMzk3YmY5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MSA2Mzc0YzY2NjkxNDc4ZTY3MmFlOWQ1ZjViYTI2ODQ3MWZjZDdjMjIyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MiA0MmNiZWE2Nzc3YjdlZTlmYWNhNmJjZjc3NmI1ZmJhZDA3MWU1ODViIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MyBjYWU1NmY3ZTgwZmZlZTczYTg0YjYxNzdkMmE3MGI0NWJjZjZhYzA2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4NCBkOGIyMmE3ODE5MDVjMTkxMTRlMTAxYzM4ZTM4NjAwZDAyMzAzZDdkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4NiA1Y2FjY2FjZTFkY2Y4ODQyZDRjNDU4NmVmOWVjMGU5NTBmNjcyYTM2IGxlZ2FjeS10cnVuaworMTQ3ODcgMTc4YzZlZmFlZDhiYWUzMWIzZDUzZWVhYWZkMzcwN2M4MTVmZWU1MyBsZWdhY3ktdHJ1bmsKKzE0Nzg4IDE0MDkyYWJiOGJiNGJlNTQ3Yzg0YWU5MTRjZWE1NTE0NDhhZDA0MzYgbGVnYWN5LXRydW5rCisxNDc4OSBiMmQ0NGJiNzYxZDRiNWExNGRjZWRmNDdmYjk2OTZkODVkZjJlODU3IGxlZ2FjeS10cnVuaworMTQ3OTAgYTM4NGIwZjY5NTEyZjZkZGVlNjIzNWNkY2RjZjRmYWIyZTYyOTY0ZiBsZWdhY3ktdHJ1bmsKKzE0NzkxIGZhMTJhNTYzMzY4ZDUyZjJhNzI3ZDg4NzJiZjlkOWYxYjhlM2FlNjAgbGVnYWN5LXRydW5rCisxNDc5MiBmODdiNTZlZWJhY2M3MmMzZWFhYTQ5MWY3MWQyZTNlNDljMTQxOGU0IGxlZ2FjeS10cnVuaworMTQ3OTMgZGRhMzc5NGM5Y2Q5MDQ5YmFlNTc0ZWNlYTk4MmMyNjYyYmRiMzUwMyBsZWdhY3ktdHJ1bmsKKzE0Nzk0IGI5MDg4MGMwZTVlYjIyNWMxOGYwMDcyMzEyMDRkNjk0YWQwOTAzYmEgbGVnYWN5LXRydW5rCisxNDc5NSBkODk1NTZjMDRlZjk5ZGJjOWZhNmIzOGI3ODZiMWY4MDg0MjIyYmM0IGxlZ2FjeS10cnVuaworMTQ3OTYgNWQzMTY1ZTMwYmNlNjMxM2M0NTgzYjFmNDRkNTEwOGZjMDMyMWJlNCBsZWdhY3ktdHJ1bmsKKzE0Nzk3IDg4YjBiMzIxMDhjZmEyZDRlMzQ4MzRmOWViMzIwMmM2OGQxMzY5YzcgbGVnYWN5LXRydW5rCisxNDc5OCAyM2ExYzUyNmM2ZjAyYzViZGIwNTZlYzZlZGY5N2E5NjA3OTRhNmQ2IGxlZ2FjeS10cnVuaworMTQ3OTkgNWQ0NWNmYTFiYzkxMzg5YTg2ZTNkNGM4ZjlkMDY3MDZjNWMzNzNlMyBsZWdhY3ktdHJ1bmsKKzE0ODAwIDFlNWNkNzBjZWUxMDc1NmI4ODhhNzU2NGQyMDFlZjZjMmQ4Yjc3OTYgbGVnYWN5LXRydW5rCisxNDgwMSA0MmQ4ZDc2ZGFlNmQyYzVkNWJjMTA4YjMyMmIxMTY1ZDY3MTI5OGI5IGxlZ2FjeS10cnVuaworMTQ4MDIgYzZjYjBkMjY2ODM5MzAyYjhjOWM3NWU4YTkxYzBjNjMxNWNmZTM4YiBsZWdhY3ktdHJ1bmsKKzE0ODAzIGRlMjk2YTc4YWJmZGM0ZTUwMmRhMzY1N2ZiZmYyYmQ1YTJkYzVjMmMgbGVnYWN5LXRydW5rCisxNDgwNCA3Nzk1NTczZWMzNTgxYzUxODE5NTczNzdlOGRjMzlhMDc3ZDlkODlkIGxlZ2FjeS10cnVuaworMTQ4MDUgMDQ5ZjAwYmZiOWNlZjM0MDI4ODZlNTY5MGExNzA0N2NhMTQ1ODczYSBsZWdhY3ktdHJ1bmsKKzE0ODA2IGM0M2IzODA3OTIyOGYzOTkxNTU4OTg3NWIxOGEzNGI1MDFjNzM5MjggbGVnYWN5LXRydW5rCisxNDgwNyBjYTg4ODBjZjM2NzRjYTBmODI2MzUwZGFjNGNjZjdlYWUzNTU5YTUyIGxlZ2FjeS10cnVuaworMTQ4MDggZGIwM2EyOWNmMTZiNWMyMmNiY2U0ZDE1NWMzODEzNzg4ZmQ2OWM4YyBsZWdhY3ktdHJ1bmsKKzE0ODA5IGI5ODFhN2E5YjczOGU5YzE5MzViMDNhOTE1MjU1NmJmZDBjMjA3ZDAgbGVnYWN5LXRydW5rCisxNDgxMCA4NmNmZmU1MGZiMTcyYzAyNTNkMGIxNDA5ODhlNzA0Y2ViNDliYmY5IGxlZ2FjeS10cnVuaworMTQ4MTEgYmNhYjE4OWRkZjg2YmRlY2M2NTYyZjVmMWQzMDE1MGMwY2JiZDc1MSBsZWdhY3ktdHJ1bmsKKzE0ODEyIGUyNDM1MTkyNmUxM2VhNjA3NTNkMDFhODYyN2RhNjhmMGZmNjE5OGMgbGVnYWN5LXRydW5rCisxNDgxMyAzMzIzMTBmZTNkM2FmMzcyNzRlODY5ZjUwZWVhZjI5MDY2MDQ5MWYwIGxlZ2FjeS10cnVuaworMTQ4MTQgYTFiZmM4ZDRmYzAwNmM4MTgwODU5Zjk2MjgyZmViMWFlNzhjODUyNCBsZWdhY3ktdHJ1bmsKKzE0ODE1IDk3NTBhZjVlNzFiMDEzOWFlY2MwZDRhY2ZkMTRkNjY2MzEyNmNiNmUgbGVnYWN5LXRydW5rCisxNDgxNiA2N2Q0MTI4ZGEyNTQzYTFiNDBhNDQ5NTI1NGFiYWE0MDkyOTc0NzhlIGxlZ2FjeS10cnVuaworMTQ4MTcgZTQ5NDNlYmI1ZjdkMjI1MTEwMDdmOWU4MGQ1MjdlZDBmMjljMmNiYiBsZWdhY3ktdHJ1bmsKKzE0ODE4IDY1ZjM1YjczZTM1MDU0ZDk1YWZlYWFiZDI4OTcwZGQzODY5ODU0MjYgbGVnYWN5LXRydW5rCisxNDgxOSA5ZWRlZGU2NTFmYjFhNDhlNzBjYjA4ODBjYTI4MjVlZGY1ZjkzZDg2IGxlZ2FjeS10cnVuaworMTQ4MjAgNGE2MWNjODFmMzY3MzVkMTYzNTYxNmQ4NWVjMzMxM2FlZDE5MTU4ZiBsZWdhY3ktdHJ1bmsKKzE0ODIxIGZkMmIwNmM2ZmY1M2I3MjM3NzMwMWMwM2E0ZDU4NzI5NDJhODBiZmMgbGVnYWN5LXRydW5rCisxNDgyMiA4OTdjZjBlNWE0MzRhNjBkMTdhMmJhZjQxY2U3ZjUzNTkyZGRkMDE5IGxlZ2FjeS10cnVuaworMTQ4MjMgODM4ZGMzODBlNDY3N2VlODg1NzBhMDVjMGE2Yzc3MzQ0NzgyYmVlMyBsZWdhY3ktdHJ1bmsKKzE0ODI0IDQ0Yjk0MmY3ZmViNzY2ZWIzZTViZGQ0ODM5MGIyZjRiNzlhNmZkM2YgbGVnYWN5LXRydW5rCisxNDgyNSBkYzhhYTk1MWRlZjgwNDVjMTM4YmYwNTk5NjFkYjVkNGE0MjI5MGZkIGxlZ2FjeS10cnVuaworMTQ4MjYgNjAzZGIwZDBhZWQxNDM0NWM5MDAwNDRiYWQ5ZTY1ZjFiNmMzMzJlNCBsZWdhY3ktdHJ1bmsKKzE0ODI3IDdlMDA2MzQyZTc5MDdjNjk5NThhMGVjNDVmYjA3YWJmMjQzYWQ2ZGUgbGVnYWN5LXRydW5rCisxNDgyOCBhNmU1MjJjYjU5MTg0YTVjMGFmMzI1MWZhMTExYjZhMDNiYjBmMzk1IGxlZ2FjeS10cnVuaworMTQ4MjkgMjViNjMzNjczODVlYjA2NTNhYjJiYzI4NGYyOWYwMDYzMTVhZDI4YSBsZWdhY3ktdHJ1bmsKKzE0ODMwIDk2ZWExYTgwMGIyMzkzYzk2N2JiNWYzYzgyYjdjOWUzODhhZWQzYWYgbGVnYWN5LXRydW5rCisxNDgzMSBlMmRiODlhOThjYjJmNDliNDJjOWYxNTcwMThlNzA1ZGU1MTNiMjVmIGxlZ2FjeS10cnVuaworMTQ4MzIgMzc4OWI2NDNmZTg5ODEyOTBjMzUyMDY0NjMxZTJhNjQ0MWViY2E4NiBsZWdhY3ktdHJ1bmsKKzE0ODMzIGJiOTAwNDQ5MjAzMDUzOGJkNjExZmJkNGVmMmI0NjE3Y2UyNGQ5YTIgbGVnYWN5LXRydW5rCisxNDgzNCA5ODc3ZTk3ODE3MGVhNzViMjY2MDcxNGQxY2U1YWIyZjg5MThlNmJmIGxlZ2FjeS10cnVuaworMTQ4MzUgYWUwNjVkZGJhMGYxNDY3Y2EyMzczYzQxYmE0NzQ0NDYwMjVlYzkwMiBsZWdhY3ktdHJ1bmsKKzE0ODM2IDJhNjBkNmY4MzRmZmI0MTIwMjA3MDg3MGExYTRhN2NkMjJlNzcwZGIgbGVnYWN5LXRydW5rCisxNDgzNyBlMDlkNzQxNGQzZWNmODE2NTdmNmJlMzJjMjE4NzQ5YmEzYjMxZGE0IGxlZ2FjeS10cnVuaworMTQ4MzggOGQxYzY5YmRjNGYyYzJjOTVjMTRiMmQyYzhlZTAzOGQwNDgxZDQ0ZCBsZWdhY3ktdHJ1bmsKKzE0ODM5IDQzODc2MDZhMTI4MWI1YTBmOWYzNzdmOWEwYzhhZWU0ZmY5YzNkZmIgbGVnYWN5LXRydW5rCisxNDg0MCBjMGU0YTkwZGM0ZmY5Zjc2ODhiYmY0YWVjNWRhN2EwYjVhZjQxZTFjIGxlZ2FjeS10cnVuaworMTQ4NDEgN2E1MTVmYzEwYzFkNzdjMzkyNjI4MTIxZDkyNDgzMzUzOTc4MzJmYyBsZWdhY3ktdHJ1bmsKKzE0ODQyIDg4MTI1N2QxZTg1NDRiZjhhZDUxNWFlMzJlZTk4YjI1Y2U4Mzc1MTEgbGVnYWN5LXRydW5rCisxNDg0MyA0MGEyNjg5ZGFmMzc3NjZjMjFkN2Y1ZmYyZTY0ZDU1M2U2ZjI5OTM3IGxlZ2FjeS10cnVuaworMTQ4NDQgNDFjYmQyOThmZmM2YzFkMmI2NjJiOGU1NzllY2I5NDAzMGY2OGM4MiBsZWdhY3ktdHJ1bmsKKzE0ODQ1IGYwZTAyYWRiOTFlYmExOWIzN2Y1MzU5ZmVmNDY3ZTlmMDk0NGRkMjggbGVnYWN5LXRydW5rCisxNDg0NiBlODFiMTM5YWI4YTQ5NTlmZWFkYjNhNjkyMzkxNmI3MjdlYzZmNTA0IGxlZ2FjeS10cnVuaworMTQ4NDcgZDczMWNlZjgxMmIzNWU2MTRkMjYzODUzMzdiNDg4ZTQ5ZWU0MGUzZCBsZWdhY3ktdHJ1bmsKKzE0ODQ4IGU5ODc3MGRlMzE0NzJkMzY3YTg4MjgyMGUzMWU0N2JiYTBjOTMxZTYgbGVnYWN5LXRydW5rCisxNDg0OSA2NmYxNGZmZThlYjcxNmY5NmU4YTQ4NWQ5NmIxYWZmMjY0NzI3YmJlIGxlZ2FjeS10cnVuaworMTQ4NTAgMmE5MTBhNzc1NzlhNGQ4MzJmNmQ5YWI4OWIxY2MyMWQ1NDQxMWQyOCBsZWdhY3ktdHJ1bmsKKzE0ODUxIDMyNDA3YzA4Y2FmNGQzNTg5ZWFlZmZkMjA1YzkyYjIxMTAzNDI4OTAgbGVnYWN5LXRydW5rCisxNDg1MiA2ZmQ0Mzg2N2FhNGZiMDdmOWZmZWIxMzc3YTlmM2I0MjIwMTZlNTRmIGxlZ2FjeS10cnVuaworMTQ4NTMgZjdhMGQyOWZiOGI4MWUxNDQ1MDI5YzEzYjI2ZGMyZmNkMmYxNjE5MyBsZWdhY3ktdHJ1bmsKKzE0ODU0IDkyZWM3OGUyMTdkMjlhZjg5OTA0ZDNmNzM0YWMxMmNjYWM2MGM4NjMgbGVnYWN5LXRydW5rCisxNDg1NSBlMmIwMmQ0MGExNDI1YzNjODU4MmY2NjE4ZGYwOTc2NmFjZTllMzZiIGxlZ2FjeS10cnVuaworMTQ4NTYgZGZlM2JhZjBhZWNkY2U0ODA0OTVhYjljN2E1NjU3ZGUwMGQ0Y2FhMiBsZWdhY3ktdHJ1bmsKKzE0ODU3IDJmMmYyYjFjZTU2OGQ2MWUxZDY4NzJhNzRmMDg0ZWQ2OTI2NDI4ZDIgbGVnYWN5LXRydW5rCisxNDg1OCAyNzIxYzdjYzBiMjcxNWYzZDFjNTFlYjk1ODc0NDg5MzA5YmEyYjcwIGxlZ2FjeS10cnVuaworMTQ4NTkgNjMzMzZmMjA3ZDUxMjhkNTVkMzhlZWY4ZmQ2N2I5MDAzZDBlNTI2OSBsZWdhY3ktdHJ1bmsKKzE0ODYwIGU2YWIzYzYwM2ZmOTEzYmE2MTdlYWI2MjE5NTY2NjllYTQzOWZkOTcgbGVnYWN5LXRydW5rCisxNDg2MSA1ZjIyMzk0MDZkZDIwZDM3NDQ5OWNiMGVlMjRjZWJlNjE5ODA1MWI3IGxlZ2FjeS10cnVuaworMTQ4NjIgMzBhNDlkMTVkYTk3NWMyNjM3ZWU5YzJkM2U1ZDlkM2Y3ZTA3Mjc0MiBsZWdhY3ktdHJ1bmsKKzE0ODYzIDA2OTlhN2RmZDczN2MyMzUxMzk0ZWRkM2ZmZmYxMzhmNmI2ODFhNDMgbGVnYWN5LXRydW5rCisxNDg2NCBlYzU4YjUwM2I2NzAwYzVmZDZiNTA1OGQ1MWRkMDJmNjU0ODc5YTE4IGxlZ2FjeS10cnVuaworMTQ4NjUgMDcyN2ZmMzllNjRmYjkyNjQ3ZTJmZGRiZDVjNWY4Y2ZiMjA5OWUxNSBsZWdhY3ktdHJ1bmsKKzE0ODY2IDNkNzg1YzJjZGE4ODE1ZGJhNjczMjFkODc2MzQxNTU0NTgwMTYzYWUgbGVnYWN5LXRydW5rCisxNDg2NyBhMGVmOGZhNGIyNDg4YjQzOGRhZWExNWRkMzUyNTc5N2M0NjcxYzhjIGxlZ2FjeS10cnVuaworMTQ4NjggZWMzNjBiNGU4ZjY2ZmU3ZWJhZDE2MDA3ZmEzMDNjNGJjYzY0YjMyNyBsZWdhY3ktdHJ1bmsKKzE0ODY5IGUyYjMyODNjNWRiMGE0ZDY4MjAxOWIyOTRmOWY4YWQ0MzkwZTg3ZTggbGVnYWN5LXRydW5rCisxNDg3MCBlNjIxNGFkMmE2MGNiMDdiMWRkOTQ5ODhjNjgyMTI3YzBkOTAyMjNlIGxlZ2FjeS10cnVuaworMTQ4NzEgYjNhNGU0NTFjMDZjODZhMGIwMmY2ZDk1MDgwN2QyMmM3NzVkOWY2MCBsZWdhY3ktdHJ1bmsKKzE0ODcyIGI1ZmNiNTM5Njk5OTQ3Y2ViNDc1MzliNzc2ZGI0ZDA3NWU0YzcyNTUgbGVnYWN5LXRydW5rCisxNDg3MyAyY2Q5YzQzNmJkNDJiMzc5YWYxN2FkNGQ1ZTIyOTRhNWZjMWVhNjlkIGxlZ2FjeS10cnVuaworMTQ4NzQgMTAzOGU1ODYxMDc5OGU0YzgwNjc0MjBkZGMzNWJiNWJmYTY2N2ZhNiBsZWdhY3ktdHJ1bmsKKzE0ODc1IGI0MGY2NzliMTA3Y2U1NTgyOWM2YjZhZjZhOTQ5YjA3MTA2OTkzYWYgbGVnYWN5LXRydW5rCisxNDg3NiAxYjY4ZDBhZDc4MzU2YzBmYTIwZGQ3NDMzYTI5MGIzMjRlYTU4ZjNkIGxlZ2FjeS10cnVuaworMTQ4NzcgNzExMzQwZDQ0Nzc3NjM5MTQ5NjA4MDE0OWNlYjJlOWJjZTAxN2YwOSBsZWdhY3ktdHJ1bmsKKzE0ODc4IGMxNjA3NDlhY2ZmODU3MWI1YWMyYzQxNWViMWU2MmFkYzNhZDdmMmUgbGVnYWN5LXRydW5rCisxNDg3OSA2Njc4Nzg3NzY5MzM2YTM1ZmIxODkwOWI4MmI2Nzg3YTM0NTE0MzkxIGxlZ2FjeS10cnVuaworMTQ4ODAgOWI5YWJkZTAzMmIzMjQ1NTExOGVjZDE0YzRlODFjMzFkN2E5ODZlMSBsZWdhY3ktdHJ1bmsKKzE0ODgxIDViNTU4MWFmOTUxYzVkNGRhODBjOGZhMTE5MjI5MzY2Y2ViMTg2ZjcgbGVnYWN5LXRydW5rCisxNDg4MiA1NzIwZDFjMThmNGQxMzE1ZTFiNWU5MDQ2ZDJmYzU0ODBiN2YxNjJjIGxlZ2FjeS10cnVuaworMTQ4ODMgMzM4ZTA1NWI3Y2MwOWM4MDM5MzkyYjliODE1NmRjNWZlNTY4ZjU1NCBsZWdhY3ktdHJ1bmsKKzE0ODg0IGRhZGU4MmI5ZWUxOWNlMGYwODg5ZWI5YmViZjkwMDk4YWE0OGFhMjAgbGVnYWN5LXRydW5rCisxNDg4NSA0YTNmZDJjMTM3MmYyMjgxZTE4MzVmNzQxY2NhZDdlMjRmMDE1NzA5IGxlZ2FjeS10cnVuaworMTQ4ODYgNDNjMzZmNjNmODY3YzkzOTIwMTUzMmIyNzJhN2YzOTNlY2UxN2ZiZCBsZWdhY3ktdHJ1bmsKKzE0ODg3IDk5OWZjM2VlZGE5OWE5OWI4Yjk1NGI2YmE4NDFkZDg1MTA2YzUwYjEgbGVnYWN5LXRydW5rCisxNDg4OCA0Y2FjMzc2NDhhN2Y5ODYwMjRiNTAyY2E1OTMxNWEwZDcxNTZiYmZhIGxlZ2FjeS10cnVuaworMTQ4ODkgNDllMDI3YjQ4NjI3ZjA1MWJmZDI3NWU1MTU1OGQ0YzUzMDM0ODZlMCBsZWdhY3ktdHJ1bmsKKzE0ODkwIGU4YzMwZTY5NjY2YjBlNDJhOGIyNzQxZTg2ZGM2MDgyOTQ4NWUyNGMgbGVnYWN5LXRydW5rCisxNDg5MSAxNGU5M2Q4OWQzNGViZDFhNWM3OTAyZGI5ODZiYTUwMTMzNGVmYTc2IGxlZ2FjeS10cnVuaworMTQ4OTIgODA0NDMzZjAxMTJjOWI4MGIyZmZmYjk5NGI0OWRjZWMzNzdkN2Y5NSBsZWdhY3ktdHJ1bmsKKzE0ODkzIDBhYzU3N2ViODI4MmYwN2FiYzQyOTY0MGVmYmFlOGI5NGJlYWYyYjMgbGVnYWN5LXRydW5rCisxNDg5NCA4MWU1ZjgwMDAwOTQ0ZmM3NTRlNDUyNDUzOTMyNGYxM2I0YWI3NjIyIGxlZ2FjeS10cnVuaworMTQ4OTUgY2E5MzhmMzhkMDg3ZGZiMWYzNzM5YWU1Nzg0Mzg0MzE4YTdmM2Q2NSBsZWdhY3ktdHJ1bmsKKzE0ODk2IDIxYTliYmI1NzJkNzM3YjlhMGY4MzkwZDMxM2RhZWYyMWEzMTlmOTAgbGVnYWN5LXRydW5rCisxNDg5NyA4MzBkZDU4MWU5MzRmNmM3YjUxMzBiZDViZmZlNWI3ZTA5MWNhYzNjIGxlZ2FjeS10cnVuaworMTQ4OTggNzhlMzZlMDZlNTM2OWQyMGUyOTA2N2JhODdiZDRjZmZjMTNlZjFjMSBsZWdhY3ktdHJ1bmsKKzE0ODk5IGZlZDg5YjU3NjM3YTZlNDJmMDIxN2JlYTUxYjU3MzBhYWRlNTc2YWEgbGVnYWN5LXRydW5rCisxNDkwMCBkYjVjMDNmYThjNzNmNTVkOTY3NDM4MWVmOGM3ZjI3NGNlN2I4MWM3IGxlZ2FjeS10cnVuaworMTQ5MDEgYmUyZjAwM2Q0N2NjNmYxZTEzZDQzNTk0ZmNlNjA2NTM4OGMyNWEwZCBsZWdhY3ktdHJ1bmsKKzE0OTAyIDllN2FiYjI4ZTkyYTE3MTI5NDNlNTdkMWM4YjNjNGVjZjViMDBlNGUgbGVnYWN5LXRydW5rCisxNDkwMyA3NWFkZDk2NDRmZjM0YTI5ZjJjMDk5NDE0YmQ2OWM3OTE4MGU2MzJkIGxlZ2FjeS10cnVuaworMTQ5MDQgNTIyZWVhZTZjMDY2MzJlMmE5MzFkMzNmMDllYTZmOTAxYTM4NDBjMCBsZWdhY3ktdHJ1bmsKKzE0OTA1IDIzNmFjMWViMTg4ZTNkMjY5ZmJmYWI3YjNlZmNmOTBiMjY3YWZhYmIgbGVnYWN5LXRydW5rCisxNDkwNiA5OGIwOWM0MGQ5N2NjOWQ4Y2E5YWZhNTRmMWNmZTczOWViYTE3YmVmIGxlZ2FjeS10cnVuaworMTQ5MDcgZmViOWFmNzUyN2E1N2Y1YWRlMjU1ZTBhNGRkYjUyNDJhMGYwNjJkNCBsZWdhY3ktdHJ1bmsKKzE0OTA4IDQyMzg3YWRlNmFmYmU1MmUzOThhY2FjZjU4OTQ2NzM5Mjc0ODUzYjMgbGVnYWN5LXRydW5rCisxNDkwOSAzNTZiOGU4OWY4ZTMwNjQ1YTMwMGU3ZDM4MDQ3YWYyOGIwZDliOGVlIGxlZ2FjeS10cnVuaworMTQ5MTAgYzg4YzhhODUyNzQ0MDViNDAyZmY2MTAzZTEzNTE2MGE0YTBhNzgwNiBsZWdhY3ktdHJ1bmsKKzE0OTExIDZlNjhjN2RkY2RiNTdmNmZhODJjMGJiNTFhZTM4ZDRiMmRiMTViMjQgbGVnYWN5LXRydW5rCisxNDkxMiBhMmZiYzBmZjdjMmUwNzJlM2RjMzc5N2U2M2RlZmI2Y2RhMGE3NGYyIGxlZ2FjeS10cnVuaworMTQ5MTMgZmY2YzFhODJjMzIyYWNjNDVmMDUxM2M2NDY4YThlYWU1N2U2MzhkYSBsZWdhY3ktdHJ1bmsKKzE0OTE0IGY0MDdmYWIyNzM1ODlhMzNkZTIyMmRjNmZhMzUxNGZkN2U5OGM3ZDQgbGVnYWN5LXRydW5rCisxNDkxNSAyNjUzZmQ1MTZkNGUyZWUyMDE3ZmI3YzVmNzVjMWFhNGYzYTU2ZTA1IGxlZ2FjeS10cnVuaworMTQ5MTYgYjczMDNmMmZmNjEzYTNhNDFhNmJmMGMwYzcyMDM4ZjgzYTZhYjM3YyBsZWdhY3ktdHJ1bmsKKzE0OTE3IDBkM2RlNGMxM2NiNzI0Y2JmMGVmYjhkYjNmM2QzZDZlNzc4M2RmNmIgbGVnYWN5LXRydW5rCisxNDkxOCAyNzQ1ZGFlODcwNWYxOTQyZDQ0NDgyMzI4N2E2MTFmNjhlYmIxM2NkIGxlZ2FjeS10cnVuaworMTQ5MTkgMDE1NWEzYjEzYmYwZTBjOWI4Njk2NTk3MWViZmIwMDJiMWJlYTAxMCBsZWdhY3ktdHJ1bmsKKzE0OTIwIGRiODNlNjNiMzg0YjZkYzcyZjBmZDUwZjdmMmUzN2MzZjU2MGU2ODMgbGVnYWN5LXRydW5rCisxNDkyMSBmMDNlMmE4MTg4YWEwN2NmNWMwN2NjYzFlMDExODMxOTU4NzU2NTVmIGxlZ2FjeS10cnVuaworMTQ5MjIgNzcxOTNlOGUwMTM3MTkyZWFiNTM5ODQ1Y2ZmMDczMzE2NjQyN2ZjNCBsZWdhY3ktdHJ1bmsKKzE0OTIzIGU3ODllMmJmMDViM2VlZTFiZmMzN2NhOGI5OTM4ZGQxYmVkZDRkNjggbGVnYWN5LXRydW5rCisxNDkyNCBjMjljZGRlOGViZDgwMzA4ODhmODlhODQ4MTlhYjIwOTlhNWZiM2Q2IGxlZ2FjeS10cnVuaworMTQ5MjUgYjU4YWVkNzFjZDYzZjM3N2JmN2M0OTQyMzYwNTNjNjk0OTQyZGE0YiBsZWdhY3ktdHJ1bmsKKzE0OTI2IGM4ODg3OTJkZTZhNzcwODgwYTY3YzUyYjk5ZDVhNDRhYWE3OTU3ZmUgbGVnYWN5LXRydW5rCisxNDkyNyAyNDI0NTg1MDNiMTMxMWI1ZDY4Yzc4MTY2ZmY0ZTkyMzM1YmM5Zjc1IGxlZ2FjeS10cnVuaworMTQ5MjggZjVhMWU5NTQ0YzVkZTZlZTc0MzUyNDk5MjZiNzIzMmI5OTdjNDg4ZiBsZWdhY3ktdHJ1bmsKKzE0OTI5IDgzMjU3ZjMzOTRhZTMxMGM5Y2FmYWFkMDBhMTEwZmU2ZTVlNjg0YmMgbGVnYWN5LXRydW5rCisxNDkzMCAxNzE5ZTQxZTIzMzAzMWVkN2ExZjMxYjdkNzA0YTI1NzAyYWVmZDA2IGxlZ2FjeS10cnVuaworMTQ5MzEgMzliOTFjYjgwYjQxYzFhYmE0ODQ0MmZiMjA0MzBkOTk5MmZiZDdlNCBsZWdhY3ktdHJ1bmsKKzE0OTMyIGNkZjY4Y2U1ODZjNDM5ZWM1NTM3MjExY2I4ZWVlOTZkMjkyOTI0MzQgbGVnYWN5LXRydW5rCisxNDkzMyAxNTFiOTEzZTc0YTEzNzYyNjc5NTQyMTFhMzBmMjNkOGE4YWJiNmY0IGxlZ2FjeS10cnVuaworMTQ5MzQgOTRiNjAxZmFlYmFjZWFmMmM0ZWI4MGI1NzU5NjVlZmUxOWFmNzg2ZSBsZWdhY3ktdHJ1bmsKKzE0OTM1IGU3NWFjMjkyZWY0YzFmYWE4NWYxOGIzODc1ZTk0Y2ZlMzdmNmIwZTAgbGVnYWN5LXRydW5rCisxNDkzNiBmMDllOWQ2NTZhMTE1NGViZGU5YWM4Y2VmNTljOWY1NjdhMjE2ZTAxIGxlZ2FjeS10cnVuaworMTQ5MzcgYzNmYzJiNDYxN2ZjZDk2ZTI3OTlhZDgxZGNjZGZhNTg4MGZkY2RlYyBsZWdhY3ktdHJ1bmsKKzE0OTM4IDRkZDhiNmEzYjljNWRkYThiNGEzNTk4YzVjNDYzYWExNmUzZjA5MjQgbGVnYWN5LXRydW5rCisxNDkzOSBiYzg2MWFkZDVkNzEyYTE4MzViYmY2Y2RkOGJkMDE3OTNjZDM0Mjc5IGxlZ2FjeS10cnVuaworMTQ5NDAgNmQxMDhkNTA5MzQ2YTg5MjA0ZGYzYjk4ODMxYjZhZjZiYTBhZTJiYyBsZWdhY3ktdHJ1bmsKKzE0OTQxIDdmMThmOTc5YTkzYWZhM2NjZGY3YWQ0NzAxM2NjZTk4ZTI3MjMzZGMgbGVnYWN5LXRydW5rCisxNDk0MiA0NzYzYTNkNTlhYjlhMjU1ODIwMzc0M2U4NTQ4NjIwMzU4ZGZkMTk4IGxlZ2FjeS10cnVuaworMTQ5NDMgZjI4ZTkyZGJiOWU4ZTE0ZDhiNjQwODBmNDY4MzBlYzU2NGI5Mjk0YSBsZWdhY3ktdHJ1bmsKKzE0OTQ0IDQyZjIxZTQ3YjQ4NjA3MDcyZTlmYzc3N2Q2YjQ4NWI1YTBlMDk0ZDIgbGVnYWN5LXRydW5rCisxNDk0NSA0MWRmYzdkNGEzNmIyMjZmYmY1MjNiMjM3MmRlZmI1ODNhNjQ4MzliIGxlZ2FjeS10cnVuaworMTQ5NDYgNmZmN2Y3NmE2ZjJlNTgyZTEwZjliOWRkYTFiOGQzNjY0OGZiM2IzNSBsZWdhY3ktdHJ1bmsKKzE0OTQ3IGZlM2NiNzM0MWI3MDg0MmI0YWY1MTJjYTEzNTIzNDdmZjg2MGQ0OWIgbGVnYWN5LXRydW5rCisxNDk0OCBmODNlNDA4YWViMDVkZjEyOTFlN2Q0NjA3NmQ4MWM2MzI1ZDA4ODc4IGxlZ2FjeS10cnVuaworMTQ5NDkgMjUzY2RlZWFmNDJlZjZlODdkZDE3NWE2Nzk1OWYzZGY1NWUzOTY5YiBsZWdhY3ktdHJ1bmsKKzE0OTQ5IDYwNWViOTMyNmZmZTFmZDFlNDNmNDBlMjMzOGQ2NjUyYWI0NDlmZGYgbGVnYWN5LXRydW5rCisxNDk1MSAzZTNkMTUyYTg1NTQ3MDQwZjNmYTg1M2I2Mzk1Mzg0YmNkOTBjZDcyIGxlZ2FjeS10cnVuaworMTQ5NTIgYjczYzlmOGM1MzdjMWFlZDE1M2FhYzNmNmE3MjkwOGRlMzU0NmE2OCBsZWdhY3ktdHJ1bmsKKzE0OTUzIDA5MDlmNTYyM2Q0ZmEyYzJjMDVlYzFhNjMyODNiOGFmNmViNGY5YzIgbGVnYWN5LXRydW5rCisxNDk1NCAzN2Q4MjI3MmYwZjQ0NWJlZjAzNDJhN2MxMWY3YmNmODY2NzIxZmQ4IGxlZ2FjeS10cnVuaworMTQ5NTUgNGJmOThjYzM4ZGI3MWFjNjE1YTEyZmFlNWQwODM3N2NmMzcwMjM4NCBsZWdhY3ktdHJ1bmsKKzE0OTU2IDI2M2JlZTRlZjEzYzU5YTRlMDI4YWExOTRiYmFkMjJjZjUzNjVkOGEgbGVnYWN5LXRydW5rCisxNDk1NyAxZGMwYjYzN2ViMWIzYTU5MzE1OTE5YjliNzQxNmFhYjYzY2MwZDIyIGxlZ2FjeS10cnVuaworMTQ5NTggYTIxNmZlNzlhZTAwYjQxN2JkZDRhZGY0N2YxYWQ2NTYxOTg0OTg4YiBsZWdhY3ktdHJ1bmsKKzE0OTU5IDc3NDgxNzI4NWI4Y2EyMDM1NTUwZDQ1ODFiNmYxNTFjOTA4YTA4YWIgbGVnYWN5LXRydW5rCisxNDk2MCAzM2JmYzUxZGVjMDVjZjM5NDc2ZmNhNTU0YTgyOGQxYzVkNGE3ZjU4IGxlZ2FjeS10cnVuaworMTQ5NjEgNWVhNzczNDEzNTMxOThlMDdiMjU3MTJiZTRlOGE3MDlmOTI4YTE1OSBsZWdhY3ktdHJ1bmsKKzE0OTYyIGY5N2JiNDJkNDM0NDg1YzFkNjlkMTM5MzY3YjM3MTQ3YTQ5NTc1MDggbGVnYWN5LXRydW5rCisxNDk2MyA1MzBjZDlhZmE4MGQ1NDNiYWJkZTNhYTA4YWEwODBmNTgzMzE3ODk3IGxlZ2FjeS10cnVuaworMTQ5NjQgNWE2MjAwZmY3N2FhYzQ1NDdjNWMyODMzYmZmZDlmOWY5ODQ4MDg3MCBsZWdhY3ktdHJ1bmsKKzE0OTY1IDE3Y2U2NjM5NjdkODQwOGM1MzVlZTFjMGY1MjViODA1Mzc1NTMzYjggbGVnYWN5LXRydW5rCisxNDk2NiAzZTlhMWMxYTlmNTY3NjFlOTJlY2M1MDcyNDQ1YTc4ODkzMTJhNzNjIGxlZ2FjeS10cnVuaworMTQ5NjcgZTgyZTgyYjNiOWFkNTY1YWM4ZGY4MTM1YTY3ZmE2MTEzNTZkYmU2NyBsZWdhY3ktdHJ1bmsKKzE0OTY4IDJkYzFiZGI0MDg4ZWQ2ZjE4ZDU2ZDI1ZDczYjQ2ZjYxOTZiOTVhOTUgbGVnYWN5LXRydW5rCisxNDk2OSBjNDA1ZGJkZDI2YzllYzVkY2JlMGM3MDg4N2JmMmZkMTI1MTRiMWY3IGxlZ2FjeS10cnVuaworMTQ5NzAgZmZkMjQyZmVkMGUyZGM5ZGM5ODcyNzgwYzE5M2NkMDZkMzE5MTU1MSBsZWdhY3ktdHJ1bmsKKzE0OTcxIDIzNjYwYjY2YmNhMzBjMGU1ZWVkODQwMGI2OGZlNGI5ODNiZDM0YjcgbGVnYWN5LXRydW5rCisxNDk3MiA3N2IwMmU1M2Y2NjYyZjRjNDI2YzZjODgwZjBkN2M0OTNiYTdkMWY0IGxlZ2FjeS10cnVuaworMTQ5NzMgNzg1OWMwYTRhZDk1NDMwYmFiNTJhODBmZWExZDFiN2RhNDJmNjg2NyBsZWdhY3ktdHJ1bmsKKzE0OTc0IDdiZjhiMTBjZTJhYjVjMGQzYjM4MDc4OGMxOGU2MTM2NWFjMTk3NDcgbGVnYWN5LXRydW5rCisxNDk3NSAwNzRjMzBmZjMyMDZmZDlmZmRiNzRmYzMzOWQyZjE2NDExOGFlZDhjIGxlZ2FjeS10cnVuaworMTQ5NzYgNjMxMzVlOWRlZjI0MWU2ZjBhMGE1OTczMmEyNzE3NTNiMTc5M2M5ZCBsZWdhY3ktdHJ1bmsKKzE0OTc3IGQ0OTIzNzc1MjAyOTc2ZTNkMTQ5NzE1ZjhhNjhlNWZlYmNkN2VlNTQgbGVnYWN5LXRydW5rCisxNDk3OCAxNDVjMDA3M2Q3ODU4MWI0YTQ4ZDVhY2E0NWIyODdhN2EzNmJiNzJiIGxlZ2FjeS10cnVuaworMTQ5NzkgY2UyNmQ1ZjNkM2NlN2ZhNWM5ZDkyNDdiOTdlMzc5YWExMTJhZGZkNCBsZWdhY3ktdHJ1bmsKKzE0OTgwIDkyMzVhYzc2MTc2ZDQ1MjI4NTQzNGEwMGIzNTUwYjA0NjE0MzMxNGQgbGVnYWN5LXRydW5rCisxNDk4MSAwY2QyMmM4NGE0ZjE0ZDZmYmNiZjlhN2Y0NTQ3MjQxYTJjYWE0MTM4IGxlZ2FjeS10cnVuaworMTQ5ODIgZGUwZjkzZDkwZWU0ZDE5NTUzYmJmZjgzMzRhMjVhNWE4NTk4MDAzMSBsZWdhY3ktdHJ1bmsKKzE0OTgzIDA4Mzk4MzgyNzIyNDFlZDc1YTY0OTdmM2Y1MjA3NTg5YmMwODIwYzMgbGVnYWN5LXRydW5rCisxNDk4NCA3MjlmMzE1Mjc2NWNiOGY1NmJkYzBhOWJhYjU5NzZjYTliNzkzMjViIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTg1IDFiN2M0OTQ1YzYxYzE4OWE0NmE5NTQ2ZDFjYjFlOGZiZTkzMjgwYjAgbGVnYWN5LXRydW5rCisxNDk4NiA3ZmEzMTc0ODQ5YmRiYTdiZDI4ODRjYmQ1ZTViYzhiMTIzMzQ3OWJiIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTg3IDE5MGE5MjQyZjgzYThiMDBkMzAxY2QyMDk4MzlhMDQwOTk2ZTE5Y2EgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5ODggYTBhMjRkM2NmZDk2MTFiNmRlZTJjOWY3MTEzZTE4Mzk1MWMzNDU0ZiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDk4OSAxNzYwNTI0MTY2M2MxOWMwNTBkMTM3NTNhMmNjYzdjMjVlMTQ1NGQ3IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTkwIGZiZmZhN2ViMmE0Zjc0ZjU2ZTk1MDNmOGUyNWNkMGFhYTg4OGE0YTkgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5OTMgN2U5YTVjZjU1Yzc2NzZhNTk2OTYxNjg2NTM5MjZlODNhMDdlYTZmNSBsZWdhY3ktdHJ1bmsKKzE0OTk0IDFjM2Y5MTk1MWY3MzdhMDM3MzJlZGU3MzYyN2QxMDZlMTExMmMwYTggbGVnYWN5LXRydW5rCisxNDk5NSBiZTNlMGQxOTc1MjIzZWU2ODEwMDYwZGY0NzViMjBjYjUwNWVkNmQwIGxlZ2FjeS10cnVuaworMTQ5OTYgM2RhYzg1NGU2MTE4NTBlZGU3OTBlMTI0NTk0M2NlYjhlMWJhMGJjYyBsZWdhY3ktdHJ1bmsKKzE0OTk3IDYxMmJlMWJiNjVmZmUxYzFiZDdmMjZiNjUwNDU2Y2ZjMzZjZjgzMjAgbGVnYWN5LXRydW5rCisxNDk5OCBiZGZjYTU0YTE0MWNiYzNiYmYxOTM3YjNlZDlkNDYxNDNiNTYyYTk5IGxlZ2FjeS10cnVuaworMTQ5OTkgNjlkMTFkZjg0M2MxNTQ0YjJmMjA0ODM5NjU4N2E5M2ZjNTk4ZTFmOSBsZWdhY3ktdHJ1bmsKKzE1MDAwIDcwMTU0ZTJlOWM4OTBlOTNmMWU5YjI1NzA3ZTA5YTU2NWM3ZDIyMGYgbGVnYWN5LXRydW5rCisxNTAwMSA5ZWI3NjllMTVmODFiYzI0MDY3ZjViNDNhNDAzOGFlZGFkOWEwNzFlIGxlZ2FjeS10cnVuaworMTUwMDIgMGEzY2IwODJjNWRiZGI0ZjllNzg5OGNkY2FiNGE0NzNhNTlkNjU3MiBsZWdhY3ktdHJ1bmsKKzE1MDA0IDlkZGUzMTVjZGUzOTY5YTYwZDFhYzQ4ZjEzYTBkZDRiYzg3NjI5OWUgbGVnYWN5LXRydW5rCisxNTAwNSA0ZGEwNmZkZDNlNjM4MWJiZmViOTE2NTRhOTQwYjQyNWE1ZjY0MmM3IGxlZ2FjeS10cnVuaworMTUwMDYgNDE1ODVlODUxZjU1YjYxNDk0NWMyMGExZjRkN2I4MGFmNjM4MDNkMCBsZWdhY3ktdHJ1bmsKKzE1MDA3IDY2OTAzYzNmMTRkYjQyODZkNDZmOTNhMTI2MjEyNWQzZWM1ODBhNTIgbGVnYWN5LXRydW5rCisxNTAwOCBjMzQxZTY4ZjE5ODhlMzkzZDA2YjRiMTc2NmQ4NmM5NWM3NThiMDQyIGxlZ2FjeS10cnVuaworMTUwMDkgMGJhODU3MDlhNjcxMjk1MWE3NzBhMWI1ZDU5NzMzOGFkYWM3MGEwMCBsZWdhY3ktdHJ1bmsKKzE1MDEwIDIzMjY2MzUyZjEzOGMwMGNlN2E5ZmIwYjE1OGJmNzQ3OGQ1MWFjMzMgbGVnYWN5LXRydW5rCisxNTAxMSA2NWJjNWVhZjQ3Y2U5NmUxMmViMDZkOGFmN2M3ZGNkYTc0NjQ5OTRmIGxlZ2FjeS10cnVuaworMTUwMTIgZDFkMDE2YWNjZTc0ZWIyODlhNDEyMmY3ZTcxMmM2ZDZkMmQ5ODM0ZSBsZWdhY3ktdHJ1bmsKKzE1MDEzIDhjMGY4NjNiYTUwYzY3ZTM4YmY3NDdlNGI3ZWQ3MWJiOGMwMjZkMDQgbGVnYWN5LXRydW5rCisxNTAxNCBmYjIwZjZmZGQxNmQ2ZDA0OGJjNzFiMWM0MmZjNTkzZmIzOWFhMWQ5IGxlZ2FjeS10cnVuaworMTUwMTUgYWFjMTEyY2NhNzliNTE2ZDlhZTIxM2ViZTY3ODFhMzhmOTBlMGEyMiBsZWdhY3ktdHJ1bmsKKzE1MDE2IGZmNzVlNDczNGRkOWZlZmRjYTdiMGY3Mzg2ZTYxOGU4MGYwMmRkMWQgbGVnYWN5LXRydW5rCisxNTAxNyA2NGZjYWU3OGQ0N2FmNjM1NjQ3Yjk2ZTViMjU4YzBkZmZiODFlNDhlIGxlZ2FjeS10cnVuaworMTUwMTggNjZlOWM5N2Y5ZjY3N2MwYmM2NzhiMDhmNzZiNTAzOWM5NmUwNTE2ZSBsZWdhY3ktdHJ1bmsKKzE1MDE5IDc2ZWQxMzlmY2U1OTczNWZjNTBlZDhlMTUwYTJiNzU0OGNhZTk3ZjQgbGVnYWN5LXRydW5rCisxNTAyMCAzZmRhZWNmZmM0ZGRkYmM1MjU0NWFjYzE4MjI3NWFlY2JkM2MwMGUyIGxlZ2FjeS10cnVuaworMTUwMjEgOWUxZjYwOTc2MjA5ZjI3ZmMzZjhkYWYyNDNmZTUwMDRlY2YwNGQ1MyBsZWdhY3ktdHJ1bmsKKzE1MDIyIDI2MWU4OTU0NDA4NTRmOTBkMjEzNDNkOWEwMjQwZjZmOWVhY2YyNDIgbGVnYWN5LXRydW5rCisxNTAyMyBmNmI1OGIwMjFlNTY4OTI5N2IwNmVmZTYyNDViMGE5YzBhN2VjYWYwIGxlZ2FjeS10cnVuaworMTUwMjQgOGExZWM4ZmMwMGZlYTY2YTYwMzMwNzE4NmQ5MDNlN2U2OGQwM2E2ZSBsZWdhY3ktdHJ1bmsKKzE1MDI1IDBhYzQwZTQ3YmRiNWUxZjIyNjA5ZmQxODAzZGE3NDFiZDY0ZTE0NGYgbGVnYWN5LXRydW5rCisxNTAyNiBmZDc1NjExMjQyMDc2NGIwZGZhZjZhZmFlYzkxNDZkMmE3MWQ3Zjk1IGxlZ2FjeS10cnVuaworMTUwMjcgNTU5YjI1YTc5MDMyYWNiYzZmZGQ5Y2U0YTczYWVjNGZlY2FkZTEyYiBsZWdhY3ktdHJ1bmsKKzE1MDI4IGNmMTMzOGJjMjFjMDAwYmY1ZWQyMDZhYmQzNGVlNWM0ODFjMTU1ZTIgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTUwMjkgY2EzMWU2NzkwMjRiNWM4OGEzMWM2ODkxYmU4Yzk4YzI1YmU1ZTM0NiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNTAzMSBjYmZhOTVhNmEwM2VlNjlhZTc4ZWJjYmZhMmRlZjgzNDE2NDU4ZjE4IGxlZ2FjeS10cnVuaworMTUwMzIgOGVmMzY3MjM0MjY0OWVhNTM5ZDM3ZDgxMzk5NjNhM2I3OGQ0ZGRiNyBsZWdhY3ktdHJ1bmsKKzE1MDMzIDU3ZmRmYTAwZGE5MzM3YTg4ZjJmZjVhMWNjZTkwNmFiMzA4NmRlYzggbGVnYWN5LXRydW5rCisxNTAzNCA2NDdiZjcxOTEyZjAyYzE0NjM4ZTM0OTc0ODk4ZjRmMzBhYmM5NjkzIGxlZ2FjeS10cnVuaworMTUwMzUgYWY4ZDIxMTNiYzFkMDI0YmMzNGU1NzYzNTI1ZmIyYjgxNTQ3NTBjNCBsZWdhY3ktdHJ1bmsKKzE1MDM2IGQwNmI1MGJhODFhNjJjYzFiZjMxZjdkNDEwYjczOTk4MjhjZjc3OWIgbGVnYWN5LXRydW5rCisxNTAzNyA1MWMwYzNiNmQ5MTllZmZjNTYxYmFhZTIxMzBlOGQ0NGUyOTViMzdlIGxlZ2FjeS10cnVuaworMTUwMzggM2E5NGM3Zjg1NTUxZTg5OWVlNWZjNzA3ZmU0NzhlMTRlOTA4YmNlYiBsZWdhY3ktdHJ1bmsKKzE1MDM5IDk2MDE5MjUxODgyOWIxZWVlOTYyNGFjODlkZDBmNmE2MDg2MzY4NWUgbGVnYWN5LXRydW5rCisxNTA0MCA5Yzk2ZTVkNDM3YTgyMWI3NDk5NGUyZDg5OGZjZDNjZmEwZDRlOGI0IGxlZ2FjeS10cnVuaworMTUwNDEgODE4NjE0NWM0YTA3ZDZlMjg2ZWU4NWJiYTcxMzFhNTk4NjE5NTlhYyBsZWdhY3ktdHJ1bmsKKzE1MDQyIDRjNmMyNDgxNjkzZWQ0MDY5MWI2ZWNhNDI0NjUzOWZkNjRkZWM0ZjkgbGVnYWN5LXRydW5rCisxNTA0MyBkMWQyMmEzNjI2OGY5NTM0NTk5Y2FkM2RjNTIyN2JiZGQ3OGI5YmIzIGxlZ2FjeS10cnVuaworMTUwNDQgNWYzNjI0YmZhNTk0YzM3Y2RlYTdjOGJjN2NhNWFlMDJjMGE1MWU3ZCBsZWdhY3ktdHJ1bmsKKzE1MDQ1IGZiNzVlOGFjZmIwNTc5OWU2NzEzNjJkZTY0Mzk2Yzc1ODRkZWZmMDYgbGVnYWN5LXRydW5rCisxNTA0NiAxNWQ0MTE0OWJmMjQyOTQyOWNhZDRhMWQzOTQxNDVkNWQzNTc0ZDVmIGxlZ2FjeS10cnVuaworMTUwNDcgYjdmMmIyMjVkMGMwMjA1NjkxYWQ4ODEzOTcyOWQyMzdlMzE1Y2QzNCBsZWdhY3ktdHJ1bmsKKzE1MDQ4IDBkNjRjZTczNTRiOTk5ZTQ2ZjE0YjcwNTgzNjBlNDIxMGQ2YjQ0OGEgbGVnYWN5LXRydW5rCisxNTA0OSA5YWY5OTcwNjU3ZmFlYjg1MzRkNzU5OWM1OTM3YzYyYWFjOWI1ODY0IGxlZ2FjeS10cnVuaworMTUwNTAgMzVhMTE5YWExOWI0YmVlMzFiOTQ5ZmFmNTE4NmE0NmJhOWQ4NGVhMCBsZWdhY3ktdHJ1bmsKKzE1MDUxIDIzNDZhYzA3ODBjZTkxMWIzMzE5NTVhNDFkY2I2NWYwMzBjMGViNGMgbGVnYWN5LXRydW5rCisxNTA1MiBiMTU3MjU2ZGJhNzY5N2M5YmRiOGVhZGY5YmU3NGExZDU4NTVkZjU3IGxlZ2FjeS10cnVuaworMTUwNTMgMTYzMTk4NmRiMTNhNjY0ZmY4YzBmYTVmZDRkMmNiYmU3ODg5NWJjMCBsZWdhY3ktdHJ1bmsKKzE1MDU0IGQ2NDBlN2Q0YWVjNDhjNWQ2MWM0MGRiNmQ5OTdmMjFiOGZlYjI2YTQgbGVnYWN5LXRydW5rCisxNTA1NSA5MTcyZWRhYWVmZjU4NjkxMGRjNGI1MGU0YzhiNDRjMjhiMmY2OWQwIGxlZ2FjeS10cnVuaworMTUwNTYgMTdmYzlmOTU5OTBiNDhlMTc4MjdjZWQ5M2Q3YjY2NjBlMjI3ZjNmZSBsZWdhY3ktdHJ1bmsKKzE1MDU3IDQwZTU4YzViNmY4NGZhZGMyOGE2N2JkMTE4ZDQwMGQ5M2JiNWUwMDIgbGVnYWN5LXRydW5rCisxNTA1OCBmZDkwNWJiMmY2YjYzMTAzMmYwMmU0MzkxNTI4ODNkNjhjODkzZjFkIGxlZ2FjeS10cnVuaworMTUwNTkgMGM2MmQxYzc2YzA2NDk3ZGMwZDM4MTI0YmQ2OGNiZTM1MjBmYTY3MiBsZWdhY3ktdHJ1bmsKKzE1MDYwIGJiYWFkYTQxYTIwYjY5ZGQ0MGY0MmE4ODZjMDAyZmJmZDZjMzI3NGUgbGVnYWN5LXRydW5rCisxNTA2MSAxZjdjMzI4MDFkYzExZTg1MDI3YmNiODc5MTJhOTRkOGExZWE1MjY1IGxlZ2FjeS10cnVuaworMTUwNjIgMGE0NWI5NTNmNGMwM2U4ZGYyOWY0ZTFlOGY2ZmRmOTliODExMDA5MSBsZWdhY3ktdHJ1bmsKKzE1MDYzIGU1NDA5MzA2NDI5NTVhODdmMDhiYWI4ZjliY2QzZDlkZTkyNjg5ZWUgbGVnYWN5LXRydW5rCisxNTA2NCBkZGM0ZTYyYjIxNmIyZmNiYzU2Y2NhZmEwMWJlNzA1MDk0NTM1YzJlIGxlZ2FjeS10cnVuaworMTUwNjUgZDMyMzliN2MwNWZlOThkYTUxOTk5ZjgxYjc3ODUyZjgxNDlmMDBlNyBsZWdhY3ktdHJ1bmsKKzE1MDY2IDNlNzBjNDVmOGQ2YmI4ZWIyOWNjZTY5ZjgyM2NmNzU1OWY3OGNmMGUgbGVnYWN5LXRydW5rCisxNTA2NyBhM2IwNDYyMzRjMDkzMTIxYTRlZjg0ZTNiMGQxMDA2ZWJhNzdlYzIwIGxlZ2FjeS10cnVuaworMTUwNjggZjc4MjQ0NjM5NWRiMmQzZTU5YjlkYWI5ZTZkZWM5OTRmOGFhOGYyMiBsZWdhY3ktdHJ1bmsKKzE1MDY5IDkwYjJhM2NkMzY1ZmUzMGExNzQwZGUxMWFjOTFhNTBkZWYwNjExMDEgbGVnYWN5LXRydW5rCisxNTA3MCAyMGE1Y2JmOWZjYzAyYzUxYzU4YjA0YTRkYjQ4ZjU4NWRkYzQ2M2E5IGxlZ2FjeS10cnVuaworMTUwNzEgZjFmNjY1ZTA3NWNhMzA1OTljNTZkNzFjNTA4YzMzNzIxZDJlNmRjYSBsZWdhY3ktdHJ1bmsKKzE1MDcyIDU0MGYxMDg4MWE1OTcyOWZlNDEwZDJjOWMwMWYyMDUzM2VhZmMxNzUgbGVnYWN5LXRydW5rCisxNTA3MyAyOWU3NTM0OTNkOGU1ZDc4OTliNmFkNzk1NDk4ZjQ1ZmE5N2U1MWIwIGxlZ2FjeS10cnVuaworMTUwNzQgMjBhMzcwZjFhZjhkZmE5YTY2ZjgwMDVjOGIwYzQ0Y2U1MWNmMWUxMiBsZWdhY3ktdHJ1bmsKKzE1MDc1IDU3ZjM0ZTE2MmU2NzYyNThkODJhZWNhZjNmMjlmZjQ2MjA5MDIyMGUgbGVnYWN5LXRydW5rCisxNTA3NiA1ZGUwYjkzOWZlNjFjY2JkZjc0MjI0NTViM2M4NzYzZDdhNmUwYzlkIGxlZ2FjeS10cnVuaworMTUwNzcgYjMyMTYyNzM4MmJjMTQ1OTdlYmYzYTkxNzg1MmI4YmJhMjY5YzE1NCBsZWdhY3ktdHJ1bmsKKzE1MDc4IGQ3NjI5ZmEzYjI5ZjU4MTdlZjcwNTgyYTJkMWFkMjRiYjI4OWIzZGEgbGVnYWN5LXRydW5rCisxNTA3OSAxYTIwN2M2OGU4YjRkNWY4Y2VmNTNhZGVlOWNjYjQ1NWFiZWZiZDFhIGxlZ2FjeS10cnVuaworMTUwODAgNzI5NmNkZGU4YTVlM2JlOTE4YTk5MmQ4MDM4YjdjMGRkMGMyMTU2NSBsZWdhY3ktdHJ1bmsKKzE1MDgxIGI1ZjZiNGJjZWY5MGVjZjYzNzM3NGM5NWZmZDViN2YxMDYwMjhiYzEgbGVnYWN5LXRydW5rCisxNTA4MiA5NDg4ZTRmZGFmZTQ2YjI1NThhYzI0NWI3ODkxNTNlZmE4MTE5MTQ4IGxlZ2FjeS10cnVuaworMTUwODMgNjZiNDkwNmQwZmM2YmU5ZWE3Y2ZmMWI0MzYxOTE2Mjk0YTczODYzZiBsZWdhY3ktdHJ1bmsKKzE1MDg0IDRmNTY3MWEzMTM0NzNjNmFkMmI1NDI4NmFiNTgxMzcxNGM5NjFhMzggbGVnYWN5LXRydW5rCisxNTA4NSAzY2M3Nzg0OGE2MmFmN2I3MDYxNmIwOTZjMWQ0MjU3ZDZmMjgxZTkxIGxlZ2FjeS10cnVuaworMTUwODYgNzdlNGYyMWUzZWU2NGE5NWRiZWY4NmY2OTRlZjY1YmQ3MmNmNzM2YyBsZWdhY3ktdHJ1bmsKKzE1MDg3IGQxOTVmMTdmMjkyNzMxZTYxYzkxNzliYzUyNDNhNjdiMTRiNmZlOGQgbGVnYWN5LXRydW5rCisxNTA4OCA2YjQ2NjdmYTQ5MzgxZGJlZDAwZTAxNjY4NjVmOWY2YWQyMGQ1OTJmIGxlZ2FjeS10cnVuaworMTUwODkgNTI1YjIzNTg3MjFlOWU5MGY3NTU1MmEyYmI2NmRjODA3ZjBmNzc0NSBsZWdhY3ktdHJ1bmsKKzE1MDkwIDM3ZmQyZTZjODFjN2Q3MGU4ODRiMTI4OWNiNWM0MzQ4MzJlOGNlZDcgbGVnYWN5LXRydW5rCisxNTA5MSBlNjllZWY2OTI2MTI1NTMzNzYyMDFjMjdiYTBjZjc2ZTYxOTc2OGZjIGxlZ2FjeS10cnVuaworMTUwOTIgZDMzNzQzMTAyZjhhZDNmMjIxZTkzMzZjOGY5N2M0MTFlZTEwZGQ5ZSBsZWdhY3ktdHJ1bmsKKzE1MDkzIDg1MTBiNGFiM2MzZGViYzMzYTFkNzM3ZTViZWNiNzU1YWM1MDVmNjMgbGVnYWN5LXRydW5rCisxNTA5NCAxODVkZTRlN2NlZjEwZTJiZDQwMzYxZjA4NjA4ZDNiN2M0ZDVmZGZhIGxlZ2FjeS10cnVuaworMTUwOTUgOWU5NjY2ZjY3OWY3MmMyNTY4MGE4YzY3YmRiOWQxNGI5MGRhNmYxMiBsZWdhY3ktdHJ1bmsKKzE1MDk2IGUyNjIwYWFiOWYyZDZjYjFjZTg1ZGNjMGFiYmI4YjM3MzRjNjlhMjQgbGVnYWN5LXRydW5rCisxNTA5NyBmYzU1N2Y0MzFlODdlMGRkYjYzMTg2NWFhNTFlOTlhNzNjOTRlYTU0IGxlZ2FjeS10cnVuaworMTUwOTggYWEzYjAyYTAzOGEzN2FhYTdkYTI1NmI3NWViMjg3MzE1ZTQyYWUxNSBsZWdhY3ktdHJ1bmsKKzE1MDk5IGJlNTEwMGFmYTFiN2VkMWE5Y2RlZmJmMTc5MmMyNGNkNzQyYjY2NWYgbGVnYWN5LXRydW5rCisxNTEwMCBmY2Y1ODhkODZiMTQwOWVmZWYyN2ZkZTdjNzhkMDI5YTYwYWQyZWE2IGxlZ2FjeS10cnVuaworMTUxMDEgZTk1MmE0YjkyMGFkZjA3YjUwMzQwNDgxOTE2ZmEzOTYwZDU2NjEzZSBsZWdhY3ktdHJ1bmsKKzE1MTAyIDI0ZDQxMTY4OTdkZDQ0N2I4MWMyNmZiODlhYzgxOTA1NDc0YWIwN2EgbGVnYWN5LXRydW5rCisxNTEwMyBmYWNjMTA1YjY0MWIwMWI5YmRlNjhkZTk1YTg2ODc1YmMzMjIwZjI4IGxlZ2FjeS10cnVuaworMTUxMDQgMTY4MDRiMzdkNzUyNWNlOTEwYmY2MmVlNmY5OWZhYWMwMGI3NjRlYSBsZWdhY3ktdHJ1bmsKKzE1MTA1IGU0MzQ5YjYyZmQ5YjQxOWMzMTQ4MzI4YzZmN2Y0MmZjMWJjNjIwZDIgbGVnYWN5LXRydW5rCisxNTEwNiBjNTliZGM3ZmQ4YTYxZGNhY2RlMTIwNTlkNjJjMzYyMTg3YjA5NDBmIGxlZ2FjeS10cnVuaworMTUxMDcgNjc4NTYxOWMzM2UxY2IxYzk1ZTgxYzcyMjc2MmJlODIxMzZjMTAxNCBsZWdhY3ktdHJ1bmsKKzE1MTA4IDE3OWE2ZTI4NTBhY2E1ZDBjNzUxNzZkM2M4OGFmMjllNDUyYTM0ZWMgbGVnYWN5LXRydW5rCisxNTEwOSA1NGU4MGRiNDk0MjM3NWViOWMxZGM1OWQwYTk5ZmJhYzVlOGQwOTc4IGxlZ2FjeS10cnVuaworMTUxMTAgOTk2ZWIzYjNiMzNlYzUzMjNmNTA2YzQxZjRlYjVjYTdjOTA1NjJjNSBsZWdhY3ktdHJ1bmsKKzE1MTExIDA0ODAyYjdlOGExZjA4NDZlNzBhNDAxMTY3MDdhNzgzN2Y2NDZhOTkgbGVnYWN5LXRydW5rCisxNTExMiAxZTc5MWQyZTg4NzUyZTJlZTc2ZDk2NjUxN2U2YjFiN2FmNTJlY2VmIGxlZ2FjeS10cnVuaworMTUxMTMgNWI1OWVhNDFkYjRlODY5MGIxNjc2ZTRlNTBjNWQwZGQ2NmIyYjFiMiBsZWdhY3ktdHJ1bmsKKzE1MTE0IGZiYzhkYWZhNDQ4NGM3ZTBiNGNhNGNjNjMxY2M1ZGNkNzg0ZmFlZGEgbGVnYWN5LXRydW5rCisxNTExNSAxMWVjYjY2NzBmNGY5ZTQ4MDE2NTYxZTE4MzBlZDUxYWRkNGNkYTI5IGxlZ2FjeS10cnVuaworMTUxMTYgZjczYmY0OTI0Mzg2ODJmMzhjZmQ4OGRiNWZhNmQ4OTZiNjhmMzdiMyBsZWdhY3ktdHJ1bmsKKzE1MTE3IDc5MWExMTJiZTNiY2Y4YmFjYTgxYzI2OWQ5N2UwYmEwYzM2YThhM2QgbGVnYWN5LXRydW5rCisxNTExOCA4Nzc5NjllYzA5NmZkNGY2MTA1ODZjYjViYTliNmI5OTEyZjA5OGQyIGxlZ2FjeS10cnVuaworMTUxMTkgN2Y2NTBkZjI3MWM5ZTNlZTlmM2M5YjUwMDg5ZGM4ZjczZGNkZGVlYiBsZWdhY3ktdHJ1bmsKKzE1MTIwIGU2NGZhYTZlMjcwMjJkMzNiNTFjMzE1ZGViZDIxZGRhMzdkYjc1OTkgbGVnYWN5LXRydW5rCisxNTEyMSA3ZmE3NmNjZGYyZGU3M2YzNjgyNDQ2OTA3ZTk3ZTY0ZWRjMzM2MDBmIGxlZ2FjeS10cnVuaworMTUxMjIgMDQ4MTA5NmEwZjQ1YmM5NzA4MTdkNmZiOWNmMTE0MDRkNDlhMzc0MyBsZWdhY3ktdHJ1bmsKKzE1MTIzIDY3N2UyMTQ3ODI5YTlkMmNhMGI5ZmY0ZGNkYTc3ZjE4NWEzZjc4NmQgbGVnYWN5LXRydW5rCisxNTEyNCBjMmQwZDY3NDRiM2JiN2U1MTQ0YjdiMzk4MGE5MDFlYTgxZmJmMjFhIGxlZ2FjeS10cnVuaworMTUxMjUgNjhlNDhiYjk0MDcxMWZiMThhNmM2N2IwNzZlMzMzZThjNzczMzU5NSBsZWdhY3ktdHJ1bmsKKzE1MTI2IGFmODdmY2FlODgwZmQ5YzhlNDc1ZmRjZmNmODhjZjNkYjZmMjY1ZmQgbGVnYWN5LXRydW5rCisxNTEyNyA0MjlhMzdmZjlkYjVjYzI3YmU5MTYwZDgzNzcyNTY3YjY1Mjg5MDhiIGxlZ2FjeS10cnVuaworMTUxMjggMjE0MzAzZDMyZjc2NjRkNDNmODRiZGQwYTY1OGNhYWQzZDIzNGM0OSBsZWdhY3ktdHJ1bmsKKzE1MTI5IGQ2M2I1N2FjNjE3ZDRkYjIzYmJhNmE0ZDYzNGJmMmM5ODc0MzY2YjcgbGVnYWN5LXRydW5rCisxNTEzMCBmNTdhZjM2MGI3ZTVlZjM3ZTYzYTg4NmZjYzg0YTk3MWI5YmVhMmNlIGxlZ2FjeS10cnVuaworMTUxMzAgMDExYmVlOGZkOWY3ZjRkYTQ1N2VjNzE1OTY0ODRmYjA4ODJjMDYxNCBsZWdhY3ktdHJ1bmsKKzE1MTMyIDZjZTZjMjNhY2QxNDIxYzg2MTRhZGI0YWE3NmQyNzM5YjEzZmNlMmQgbGVnYWN5LXRydW5rCisxNTEzMyAwNTJmYmQ5MzE0OTIxZmY3YzdlODJkZTE4ODJiMzI1NjI5YWUxZGRiIGxlZ2FjeS10cnVuaworMTUxMzQgNjNhZDc1NGFhMzBlZTJlNjZlNmU1MDA1YWE1ZWQ2ZjI2MzJlYmEwMSBsZWdhY3ktdHJ1bmsKKzE1MTM1IDNiZTJmNzU0YzAyMzliODFiZTEyMzY0MjY2ODAxMjRmMDc4ZGUwMDYgbGVnYWN5LXRydW5rCisxNTEzNiAzN2Q5ZGVkNWFiOTE0NTA5ZjQ0MzJlNDMwYTZmNjdhY2I4NTFhYzY0IGxlZ2FjeS10cnVuaworMTUxMzcgMTE2YzNhYTNjY2Y3MmQxNWRlOGM1NmRkMjQ0ZjdiNzkzOTcyODYxMyBsZWdhY3ktdHJ1bmsKKzE1MTM4IDVmMjlkN2MwMjQzMzg3MTg1OGRjYzQ3MjE1OGEwZGYwYmE1YzZmNTIgbGVnYWN5LXRydW5rCisxNTE0MCBiZTgyNTczZTQ0NDQ4MmQ1MDkzZTA0NWQ2NTAzYTcwZTIyNDNiMThjIGxlZ2FjeS10cnVuaworMTUxNDEgYWEwMTNmMmNmODBiZThiZDAxNWFhODdiYmRhNDk4OTQ1NzNmMjY4NiBsZWdhY3ktdHJ1bmsKKzE1MTQyIDYyNzIyNmRmOWYwMTgxZDlhNzUxMGRiNDRlMWFlZmI1ZmNlZjZkYzAgbGVnYWN5LXRydW5rCisxNTE0MyAzMmU5ZDBlNzg5MzUzMzQzNjQ5YTI1YTllNmE3ODVlZTM4NjBkMGU2IGxlZ2FjeS10cnVuaworMTUxNDQgZWVmNmEyNWYwOWM1MzE2ZGI4YTIxOTM1MzFjNTI2ZTBmYjNmMjU0MyBsZWdhY3ktdHJ1bmsKKzE1MTQ1IGM0ODE3MmFmMTNkYzE1MjhjYWVlNjVhMDZlMTcxZWUwZjUwMmYzMTEgbGVnYWN5LXRydW5rCisxNTE0NiBlNWIwYmVhMDNjZmE1MDU1NmVjZWExMDA1YWE4NTQ3ODBmMWZkNDNiIGxlZ2FjeS10cnVuaworMTUxNDcgNmVkYmFlNmRiY2Y1NWE4YjdiMmM2ODc5Mjg5NDUwNzNmYjlkMjNjYiBsZWdhY3ktdHJ1bmsKKzE1MTQ4IGE2ZjBiMzk5ZjY2NTY5NTkxOTgwOThiMTdhOGNkNmVmMjEwOTY0ODcgbGVnYWN5LXRydW5rCisxNTE0OSA4ZDdlMDc3MzdiNGM2YTE0YzJlZmVmMWE4YWE0NDdhMzRjMzFiNGQ0IGxlZ2FjeS10cnVuaworMTUxNTAgYTA0OThiMTUyNDRjZDEwYzhkYmFhMjAwNjNkOTUxY2Y4NGYwMzJiOSBsZWdhY3ktdHJ1bmsKKzE1MTUxIDYwZGQ5NWM3NTk5OTkzNjI5YzQ5NmRlMmM0NjMxNDAzZTZlNWI4NDYgbGVnYWN5LXRydW5rCisxNTE1MiAzYmIzOTg5OTYyOTFmOTNmMjFmNzQ4MWIyZDNmNGIwN2QxMzY2NjdlIGxlZ2FjeS10cnVuaworMTUxNTMgZjgyYjI1NzdmYTBjZjA2NzI2ZjdhNDhhZTEyNjg3MTNjYjRlOTcxZSBsZWdhY3ktdHJ1bmsKKzE1MTU0IGYwNzA1YmNmNjczYjJjNzUzYTE0YmEwNzMzNjc0MTJjMDhkNmNiMGQgbGVnYWN5LXRydW5rCisxNTE1NSAyMzkyZDEwZTIxZjE2OTRmNjdhOTQ3MjQwYzM4ODcyMDk4NjA0YTNhIGxlZ2FjeS10cnVuaworMTUxNTYgOGJmOTEzMDIwNjA0ZWNkZWQ0Nzk4MmQ0NjQ4NTMwOGNjNmVhZDU5NyBsZWdhY3ktdHJ1bmsKKzE1MTU3IDlmMmM3ZjcyNzJmYTcxZWRiMGMxZGE5Nzc4ZjU3MzA0MTViZTZiNTYgbGVnYWN5LXRydW5rCisxNTE1OCBhNTc0M2UxNDc4NjBjMTZhYTY1YjNjODVjYjY5ZGZkYTY0MmI1ZjljIGxlZ2FjeS10cnVuaworMTUxNTkgNGM1MWE5NjZkMmEzOTBlYjM2MTQ0ZWU3MzNkZTUwY2RkODc0OTI1OCBsZWdhY3ktdHJ1bmsKKzE1MTYwIDgxYzk2NmIzNWMxMjYyMjAxYmY2Y2NlNWZiNDUzM2FkMTk4MGE1MTYgbGVnYWN5LXRydW5rCisxNTE2MSA2N2U5NjE1NzdkMGViOGZhMzhlZDljYTk2NGRlNTQ3MDNiNzI4YzE5IGxlZ2FjeS10cnVuaworMTUxNjIgMTU1NTRkM2E2OGM3MTVjODM5NWVkMTQ1YzIzMTZlZmIxMzBhYzFkNyBsZWdhY3ktdHJ1bmsKKzE1MTYzIGVjNmI2Y2E1ZDExMTYyM2FmNzViYzZmZDA1MmRiYmFmMjk1NmYwMmIgbGVnYWN5LXRydW5rCisxNTE2NCAwMWNmZjlmZTJkNDUyMTI5NTU4YjQ3ZGQ3ZGY3YzFhZjI2NjQyNDgxIGxlZ2FjeS10cnVuaworMTUxNjUgMmZiNmM3MzlkMzI0NzFjMTFkZGUxZGU1NzQxZGJlNGU2ZWU0MmYyMiBsZWdhY3ktdHJ1bmsKKzE1MTY2IGNiNGYwZDgxODgwZDViNGI1ODM1OTIyZWI1NzJiYWZlZTIyNGM1MWUgbGVnYWN5LXRydW5rCisxNTE2NyA1Yjg3MGMwZWE3YjYxYTBmOGRiNDBiYmVlNjE2MTJhNDY0Mjc5ZWM1IGxlZ2FjeS10cnVuaworMTUxNjggNGM1ZDYyZTg2NzViMzg5MTI0YjYyYzkxZDg4YTExNzRlM2RkOWNlYiBsZWdhY3ktdHJ1bmsKKzE1MTY5IGFlNTI1YWIyM2VlZmM2MWVjNTJkYmU5NzcxZTI2ZTQ1YjI4ZjY4ZjUgbGVnYWN5LXRydW5rCisxNTE3MCA3ZGU5MDJjMWY0MzllNTZkMWU5MDhmZjgxMDNiNmY0NDMwZDAwZTc0IGxlZ2FjeS10cnVuaworMTUxNzEgMmZjNTNkZGEyMGViNjNlNDU3MGNjYjQzNGE4NTdlYjY0N2E3ZmEwMCBsZWdhY3ktdHJ1bmsKKzE1MTcyIDBiNjg5OTAwODlkMjE0OWUwMzQyZjAyYzZmYzFlNTRlNWE0YjgzMjAgbGVnYWN5LXRydW5rCisxNTE3MyA5NWUyOTZlNjdhMTJjMDFkZDYyOWQ4OGMzZTY4NDc3OGE0ZjhmOWNjIGxlZ2FjeS10cnVuaworMTUxNzQgMjU5YzRiOWM0Yzg4OTc2ZmIyMzE3MWZmYzliOWRiY2VlZjY2ZTI0MCBsZWdhY3ktdHJ1bmsKKzE1MTc1IGFlMTA2Mzc5ZTc1NmMyNzc2Y2E2OWMwNDNlMWZjYWYwZDk3NGI0MWQgbGVnYWN5LXRydW5rCisxNTE3NiAxYzg1YWU2NzZiYTdlNWRiYjgyMTA2NmY4NDQwNTM5M2IxZmNhMzFhIGxlZ2FjeS10cnVuaworMTUxNzcgMzYyNjI2MTE4OWI0OGQ5YjE3YTM2YzdlNTMxZjBmNzM1ODMxYWQwYiBsZWdhY3ktdHJ1bmsKKzE1MTc4IDY5Nzk5NjZlZTk0ZGExNjdhMGVjMTZhZDUyYzllYThiMGJlMzU3NmMgbGVnYWN5LXRydW5rCisxNTE3OSA2ZmI0MGE4NWE1MTk3NTg5OTU0ZjYyMjMzNmUwNDg3YmVkODkwYTc4IGxlZ2FjeS10cnVuaworMTUxODAgMGQxM2NlMmUxNTViOTM4MjY3ZjNmNDE5OWEwOWJkNjg0NGE0NWU5YyBsZWdhY3ktdHJ1bmsKKzE1MTgxIDBhZTYzNTIzZDUwNGJkZmEzODhjMTY2OWI4MzM3NzhmNGVkYjMwZTYgbGVnYWN5LXRydW5rCisxNTE4MiBjMGJmM2VkOTM4MzU4MGZmZTA3MmU5ZjViYWQ2NDMyODllNDEyOWRhIGxlZ2FjeS10cnVuaworMTUxODMgZTg3ZTZiZGZjYmRjNjc3ODkxZDIzNjUwM2Y2ZDBjNjY3NTY1ODUzZSBsZWdhY3ktdHJ1bmsKKzE1MTg0IDk3OGM5Njg3YmVlZjRmZDY0ZGViNTU0ODRjYzJkMWQ3OTg2NjZkNTcgbGVnYWN5LXRydW5rCisxNTE4NSA2YjJiOWEyM2E0MWYxZjhjYTU2NDg2ODVjNGVjNjQzYzBiNTE1YmVhIGxlZ2FjeS10cnVuaworMTUxODYgZDk0MDBjNDc2YjlkYzJlNWUzMTE2NDdkY2FiYTQzYzkwZTFjZjQ2NSBsZWdhY3ktdHJ1bmsKKzE1MTg3IGM2MDU5ZTcwYmFiMjNiZWJkNDg2N2Y5MDJlYzY0YWU2NzM0ZWQ5NWIgbGVnYWN5LXRydW5rCisxNTE4OCBjYTk4OTQyZmUxMDNiOWNjMjIwMjEyODE4ZWU0ZDcxYTViMmVlYzM2IGxlZ2FjeS10cnVuaworMTUxODkgM2ZkMTMyMjJhODc2ZjNhMTg3Nzg5OTk2YzgyZTY3OTgwMzE3MDYyNSBsZWdhY3ktdHJ1bmsKKzE1MTkwIDgxNjEzMzQ5NDJkNGZmNWIzMWE2MDE5OGE5NmQ4MGUyYzE5NzBlYmQgbGVnYWN5LXRydW5rCisxNTE5MSA2YThjZDA2ODIwOTYxZWFiOTAwYjI3M2VhZjMzYTE3N2YwZDg2MjZiIGxlZ2FjeS10cnVuaworMTUxOTIgY2E3Yjk5ZDI3YTQwNzFhMWUxYTljNTU5OWQ4MTdiNzIwOGY0NGEyMiBsZWdhY3ktdHJ1bmsKKzE1MTkzIGRmZjdiMjYxMTZkZWJkM2JmNGRkMTRjNWRmYTIyNWJmMThkYTdiMWUgbGVnYWN5LXRydW5rCisxNTE5NCA4Mjg5YzBlNTUxY2QzMTI4NGZmYjhiZmJjYjkyODUyZjlkYTdiM2NlIGxlZ2FjeS10cnVuaworMTUxOTUgZjBiNzE5MTNjMGFhN2IwOGNjMzA3Mzc0ZmZlYTAzN2I5YTY1MjljNyBsZWdhY3ktdHJ1bmsKKzE1MTk2IDQ1Njg2OWVhYTdkNTkxYTVkZGI4N2I1ZDVhYWQyNzhkODMyZTgxYmYgbGVnYWN5LXRydW5rCisxNTE5NyBkNDc0NjBiMWE2Nzk5NzI3NzA0M2ZjMjUzNWYyNjI3ZTRmMWRmNWMzIGxlZ2FjeS10cnVuaworMTUxOTggZDc2MzM0MWQzMzEwYmUwZWI0NmY1NWNhODBiNGM5ODAxZDQyYWY1MSBsZWdhY3ktdHJ1bmsKKzE1MTk5IGM5OWJiYTllOTIxMmNiMTBkZTM0NTM2NWZkZDVmMzU5OWUyYzZkYWIgbGVnYWN5LXRydW5rCisxNTIwMCBmODc2MTY0ZmExNTE0OTg5ZDFmNDMxNzIzZTU0M2UxMzk1YTE0OTNhIGxlZ2FjeS10cnVuaworMTUyMDEgMDNiODE5MTI4MzVlYmU5YjVjMWFlZjE4Yzc5MTgyZjEzOTY5N2YwNCBsZWdhY3ktdHJ1bmsKKzE1MjAyIDljNGE0ZTZiZDU1NWFlZDBhNzYxM2FmNGRlMTg1NWYyZTY5MDljMWMgbGVnYWN5LXRydW5rCisxNTIwMyBlMzY3YWQzZWE1OWE4NjFkMzFiMTBjOGUxZThjMGYxODhjMmRkZTUzIGxlZ2FjeS10cnVuaworMTUyMDQgOTUxZDg0ZTFkNTRiZWIwMDc2NDkzZWYxNWUwYzE5MjU2NWRkZWMyNiBsZWdhY3ktdHJ1bmsKKzE1MjA1IGUzYmIyMzliMmRiZjVlMDVkYjdlNGQ4MjJhMWE3M2JlNDg5NDRhOGIgbGVnYWN5LXRydW5rCisxNTIwNiAxOWY1M2Q4YmQyOTgxMDZjMjg2NzY0OWNiOWUwMmRhZTUzNjZkYzkyIGxlZ2FjeS10cnVuaworMTUyMDcgMTZkYzgwNzMxYzIzYTIwYzE5MDM0ZjA3YWI2OWU0MTJmNjVlODcyZCBsZWdhY3ktdHJ1bmsKKzE1MjA4IDMzYmEwNjI2ZWY3MmE5ZTEwM2E4NWUzNTM4OTliNjk1YWU5YTU3NTUgbGVnYWN5LXRydW5rCisxNTIwOSAzNDY5YjJmMTc2MjRmODYyNzIxNGMxNmI5OWFlNWRmMGQxNmFlYWQ1IGxlZ2FjeS10cnVuaworMTUyMTEgZDBmMjkwYjNjMGIyM2JjMDU4NGFkOTRjMWMwOTcwNzcyMGMzNmQ2YyBsZWdhY3ktdHJ1bmsKKzE1MjEyIDQ4NjE2MTg5NDUwN2Y0MDU4ZTdlNGU3YjU3NDY4NjVkNWM3NWI4MDMgbGVnYWN5LXRydW5rCisxNTIxMyA0Y2IzMzM0ODIxNjBjOGY4MjMwOWNjZGExZTljNDY0MWQ4NGI0ZTFiIGxlZ2FjeS10cnVuaworMTUyMTQgZGUzNjViNjVjMTdiYzhkOWYzMmYwY2U2OWE0YThjNGRlNGJjMDNiNiBsZWdhY3ktdHJ1bmsKKzE1MjE1IGQ1ZmRjOWIxZTQ3NGM3MjFjZWVkNWZjNjI1OTFlZTY5MmJmOWU3NzEgbGVnYWN5LXRydW5rCisxNTIxNiBjMjhmYTAxZTczMjljM2M0MTZjMWZkNWVhYmZlNWZkYTdjNzI4OTdhIGxlZ2FjeS10cnVuaworMTUyMTcgZTc2MjNkMDE5MjdjOGM5ZmI1YmQ5MjkzZTUxMWQ4OWIyY2ZmNmFjZiBsZWdhY3ktdHJ1bmsKKzE1MjE4IGU1YjMxYWNiMTBjZWI2YmYxMzhkMjllZmY4ZjBkOWU2MTIwMjIyMWIgbGVnYWN5LXRydW5rCisxNTIxOSBmZDBlNWRhZWY4NmFlNmRhMmU2ZjdlMGI4OGQyYWY5NjI5ODcxYTZhIGxlZ2FjeS10cnVuaworMTUyMjAgMTQ0YTg5NTcwYTM5Y2YwNWM1MTQ3ZWVhM2MyYzdhMmZhOGZmYjcwYyBsZWdhY3ktdHJ1bmsKKzE1MjIxIDc0ZDRlNDUzYTdmN2RhMzk2NWUxNTM4YjBjZWQzOTYwMWM0NjhkMWUgbGVnYWN5LXRydW5rCisxNTIyMiAxODk1MWEwMjRkMTFkZjJhNzU4OTA2YmI2MjdlNTk5ZjQ2NmE4ZDRiIGxlZ2FjeS10cnVuaworMTUyMjMgNmY1MDk2YThkMDNhMjBiOGM1NzVhYzZjOTk3OTYxYzg0ZDRiNTc4MSBsZWdhY3ktdHJ1bmsKKzE1MjI0IDQ5YjBiODQ2ZjY4MzQ3MmQzNDMwNjFlZDAxMWVmM2YwZWQzMTAzOWIgbGVnYWN5LXRydW5rCisxNTIyNSAwYmY4YWJkMDJiZDhkN2NkMWU2NGU3NGFiMThmY2E2ZDcwMDI1YTQ4IGxlZ2FjeS10cnVuaworMTUyMjYgMTgxYzZmOTVmNmY2YTVlYmJlM2M3YzNkZTlhNzg4NDNkNWRjMzgyZSBsZWdhY3ktdHJ1bmsKKzE1MjI3IDc2MTNmOGIzYzFjZTRjZDUwOThkZWUyNjc5MWUyM2QxYzc0MjJjMmIgbGVnYWN5LXRydW5rCisxNTIyOCBlMzllYjkwYjI1MGEwMmE2MjQxZGZjNDk2NzA3NjIyNjQ4OGM3MTE1IGxlZ2FjeS10cnVuaworMTUyMjkgMmEyZDVmZjkzMzA4MDc3MTg2NWI5YmEwZWUwYzNjZDM5NjkyY2VlZiBsZWdhY3ktdHJ1bmsKKzE1MjMwIGU1NjdlMzNkZTY0NWJmNzBkMjVlNmE0YTYyOGFiMDc5ZTJmZTM2ODQgbGVnYWN5LXRydW5rCisxNTIzMSBmY2I5MmI5NmYxYWZiNTYwMzkzMTJjMDIyMzA1ZGNmNzg3ZjcxMTVkIGxlZ2FjeS10cnVuaworMTUyMzIgNjk5ZGZiMTI1NGNiZjcyMzhiZjI5MmY0OWViN2MxNTdiMDExOWNiNCBsZWdhY3ktdHJ1bmsKKzE1MjMzIGMyN2Y0ODRhZWZmZmE3ZmU0MzA2ZmYxNDY1ZWE2NjQwMTQzZjA2NzUgbGVnYWN5LXRydW5rCisxNTIzNCAzNTAwYzQzNTBmNjI2ZTExMGMwODkyNTU0MmU3ZTgzNjhlMWM1NjZhIGxlZ2FjeS10cnVuaworMTUyMzUgZjFiZmYxZWM3OTZiNjQxMDkzMjExNWMxNjQ4ZGY3OTMwZTQyNDhjZCBsZWdhY3ktdHJ1bmsKKzE1MjM2IDg2NmFmMWQ4Nzk3MDg0YzY3MmFmYzhhNjUzNTdhMTM4NzdlNTdiY2IgbGVnYWN5LXRydW5rCisxNTIzNyBhM2UxZmVjYjQzYzZlNTE5ZGRhZGQxNTA3MGUwNzcxMGZlMGZmNTlkIGxlZ2FjeS10cnVuaworMTUyMzggYmUxZDc1ZTE2Y2I4MTYyOWU0YzE5OGU0ZmRkZmM0YWU5ZmQxYjljMCBsZWdhY3ktdHJ1bmsKKzE1MjM5IGE4ODk4YTE3MmZlMmYwNzY5NzI1NzU3NWYzNDY1OTM0YTY5ZGNkNzMgbGVnYWN5LXRydW5rCisxNTI0MCBhM2MwYjZjZGQxNjhhNjk0MzEzZmJhZDg5Y2I4Yjc5NTkzMzAzNWQ5IGxlZ2FjeS10cnVuaworMTUyNDEgMTllM2U4ZjhjNTc0ZDIyYTY4NmJhMzkxZDI0OTFmNjAwZDM3ZTg3MiBsZWdhY3ktdHJ1bmsKKzE1MjQyIGZjMjc2ODc3NWY4MjE5ODM5MDJlYmE1MDkxNjFkMjhiMjM3Y2Y2YjEgbGVnYWN5LXRydW5rCisxNTI0MyAwZGI1YTM2MDI1MjYxZmY4ZTY3MWYwNDdhNmU3NDhkZjIzOGIwYmY1IGxlZ2FjeS10cnVuaworMTUyNDUgMTBhZGJmODE4M2U2OGUwMjdkNTU5OTk1ZjEwN2YxMjhiZDZmYjRiNyBsZWdhY3ktdHJ1bmsKKzE1MjQ2IGYxZTg2N2FkN2Q4NWFjM2EzMDQwMmNjNDkyM2M5YTk0MjZkMGMzOGIgbGVnYWN5LXRydW5rCisxNTI0NyA4YjMzMGQxNjM4MDA3NzE4MDU2NTgwNzA3MTc1Y2ZhOGM1ODQyZjQyIGxlZ2FjeS10cnVuaworMTUyNDggMTk1ODU3MWQyNWMxNmJjZTRkZmNjNTk2ODgyODVlYmYzMjVhOTRkNSBsZWdhY3ktdHJ1bmsKKzE1MjQ5IDRjZWUyZGEzZGFjZmQ3NWRjN2QxMTczOGIyOTRhYzNlMzViYzQ1MzIgbGVnYWN5LXRydW5rCisxNTI1MCA3MjBkMzU1NmIxNDM4NTIxN2ZmMzU2MTZiMmJlNTZiMzY3OWYyMDE1IGxlZ2FjeS10cnVuaworMTUyNTEgMTcyNWU4MDJlM2ViZDUyZTdkYTViZDlhODQyNzYwYjdhNjU5YzdlZCBsZWdhY3ktdHJ1bmsKKzE1MjUyIDA0Y2ZhMTM0MWE1MDljMTc5NjlkOTFhNGYyN2U3OWFiNTA1NTZiNTIgbGVnYWN5LXRydW5rCisxNTI1MyAxY2JhNjU4OWNlNjY3Y2VmN2M0NTY5OTU0OWZmZGVlMDgzNjA3MTZkIGxlZ2FjeS10cnVuaworMTUyNTQgYmVmMjRkNDhhZmM4YzViNGQzNmFkMThjNjA0MjIwNjY3Y2JlMTkxYyBsZWdhY3ktdHJ1bmsKKzE1MjU1IDJhNTNhM2E0Nzk2MmE4ZmYyZjA4NGVjMzZjZmRlZDc4Y2JlYmVkODIgbGVnYWN5LXRydW5rCisxNTI1NiBlNTBiYmI4ZTk4ZGFkMmFlOGJjMmM4N2M1MjE3N2M0ZTQ1YjhkMjcwIGxlZ2FjeS10cnVuaworMTUyNTcgMGQ3NTU1NWVkNmViNmQ5NzA5MDZlYWQwYWNhNjU5MjNlZWM0MmJkZiBsZWdhY3ktdHJ1bmsKKzE1MjU4IDA3ODBhYmE5Nzg5ODkzMThhZjIwZmU0ZWQ2MjM1NmYxNjA5ZDAzNjggbGVnYWN5LXRydW5rCisxNTI1OSBlYjQzM2VmYTI0ZGVlYTg0NjJkZjA1MDg1OTA0OWRiNDhiMjljZjVhIGxlZ2FjeS10cnVuaworMTUyNjAgYmQ5MmM1M2IxNjY5OTMzNDRhMTRiNTI4NDU0MTQwM2I4OTcwNWJlOSBsZWdhY3ktdHJ1bmsKKzE1MjYxIDJjZTJhODMyNTNlODAzMTdjNDI3YmZmYTY1NmJmNjhjZWM1ODhiN2IgbGVnYWN5LXRydW5rCisxNTI2MiAyMTE0ODNiZDBhNTE4MmRjYjYzNjBjM2U2ODAyNTNiN2M4Njk4NWZhIGxlZ2FjeS10cnVuaworMTUyNjMgNDRlNTIxYTkzNjQ4YTUxMjdlYTRkNzBhOGY1Zjg4OTRmY2Q1MzEzZCBsZWdhY3ktdHJ1bmsKKzE1MjY0IDVjM2U1OTk5ZGFhMTZiODExOTY5M2Y3OTk3NDIzNTY4YmVjNWQzMDggbGVnYWN5LXRydW5rCisxNTI2NSBmNGRkN2M4ODQ4ZmNhNDVkOGIzZWIwYTNlZGUyYjA0MTA3YzMzZWMwIGxlZ2FjeS10cnVuaworMTUyNjYgNTY2MWY0ZjlhNDdmNzk4NDg4YjQ5ZmE1OTdjZDcyMTE3Yzg3YTI3YyBsZWdhY3ktdHJ1bmsKKzE1MjY3IGI3NmJhY2NjZDM0NjMxMGQ2MmE5NzliZTdkYTliMWY0NDE4NzE2NmIgbGVnYWN5LXRydW5rCisxNTI2OCBlNjNlY2NiYTg3M2I3NjQ3NDFhZTU0MjRkYTQ2MzFkZTEzNjQ3OWRjIGxlZ2FjeS10cnVuaworMTUyNjkgMTNhMTY3OTNiYjFjZjA4MDk4Y2JkYWFjNzRkMGYwMGI4Y2ExNWM4ZCBsZWdhY3ktdHJ1bmsKKzE1MjcwIDg3NDdmMWM4YjVmYmViMWY3OGRmM2EzOWY2N2YzYmE3OWZlYTA5ZmIgbGVnYWN5LXRydW5rCisxNTI3MSBhNjExNTczMjhiMTIxZTE1ZGI2MTExM2JiZDVkOGE0NTMyNjJlOGI4IGxlZ2FjeS10cnVuaworMTUyNzIgY2EwZTlkOTdkNTU0YzQ4NWFkZDZiYjhhODU1OWUyMTkxZDg1NThiNyBsZWdhY3ktdHJ1bmsKKzE1MjczIGJhNTQ4NjJjODc4NWMyMGVmODg3ZGY0OTY1MGE3YjNiZTRmOGYyYjEgbGVnYWN5LXRydW5rCisxNTI3NCBmYjQ3NzUxMTFlZDlkNTEyZjUxYzgwNDRkZDFlMzcwYWY1MThmZjAzIGxlZ2FjeS10cnVuaworMTUyNzUgZTZlOTE0ZDViMjA3MmZlNDZlZGQ1ODZkZDQzZDc2ODM0NTg5MjQwNyBsZWdhY3ktdHJ1bmsKKzE1Mjc2IDZlYmUwYWNiNzc3NjQ5MTJjYTNlMDhhYTMyZGFjODg2ZTJmY2NhMjUgbGVnYWN5LXRydW5rCisxNTI3NyA5ZTUzYTcxMTIzOTVmYjQwOWQ4MDU2ZDM4MzNiYjJiNjgxZTM1MWUwIGxlZ2FjeS10cnVuaworMTUyNzggYWY5ZDYyM2JhYmIwNzcxNzc1MTBiOGNmMDA4ZTg4NjYxNGY5MWU5YSBsZWdhY3ktdHJ1bmsKKzE1Mjc5IGI2YjdiZDIwYzg0NWI3Mzc2ODliMTI5MGM1MTA3YTBhYmJkNDIxOTIgbGVnYWN5LXRydW5rCisxNTI4MCBkMzU3YWU4ZmJmZTU5MGFhYWIxY2Y1ZTZjYTRmNGFhODcxY2I0MzA1IGxlZ2FjeS10cnVuaworMTUyODEgMGMyOGM5Y2FiYmRhZWIwZmI5N2VkNjUyZGZiOTYwM2Y3YzM3ZjBkNiBsZWdhY3ktdHJ1bmsKKzE1MjgyIDAxOWVhZWY2MzdmZjVmOTljZTYxMmExZDlmODhkNGFkOTNjMjNlMjQgbGVnYWN5LXRydW5rCisxNTI4MyA0YWUxMjczMTJiYmZkNzg1ZWRiN2ZkMzE3OThlNGQ4ZjQwYmVmYWQxIGxlZ2FjeS10cnVuaworMTUyODQgYjQ3NmU0YThjODkxMWQyYzRlZWFiYWRjZjFkNzUxOWIzZGU0NDZiMiBsZWdhY3ktdHJ1bmsKKzE1Mjg1IDZmNzM4NDhiODQ1MjE5MTkzZjBlMGQyYmFlMGM1ZWIwYWQxOWI4NjkgbGVnYWN5LXRydW5rCisxNTI4NiA1YWU4NWJkYzVmNjE2NTBhNTRkZDgxZjgxYTNiMzgwNjIxYWMzMzNlIGxlZ2FjeS10cnVuaworMTUyODcgYzBhZGJjOWNhNTgxMzE4ZDY0NDI5ODZjZGMzMmFiNGU0NjYyNmQyMCBsZWdhY3ktdHJ1bmsKKzE1Mjg4IDU0MGQ5YmIxNjQzOWYwN2JhY2UwN2FmN2EzODYxNDQyYjYyZTVlNGMgbGVnYWN5LXRydW5rCisxNTI4OSBjMmJiNWU0YjA0YTg5ZDYzZjcwMjg0MzQyNGI2ZmMzNjYyNWQ1MmExIGxlZ2FjeS10cnVuaworMTUyOTAgODRjZDUyYjU2MGU1NzFlYmEzNzFkNzEzNmFiY2M5YzQyYzI3YjAwMiBsZWdhY3ktdHJ1bmsKKzE1MjkxIDgyY2JiMmRmZThiZGIyN2JlMTIzNzBiZGE4MzBjOTI3NTYwNDhkNDQgbGVnYWN5LXRydW5rCisxNTI5MiA1MjM1NjU2ZjlkMGYwZTIyZGNkMTEzYTUwODg3MWZiNjBjYTUyMDk0IGxlZ2FjeS10cnVuaworMTUyOTMgMTg5Mjk4YTFmYWI0YzIyMzI4NmZkZDI2ODc3OTMzZTExZTQxZTg5MCBsZWdhY3ktdHJ1bmsKKzE1Mjk0IDhhNTAzNjU0NDcyNzc4ODM1ZjFiNWZiMmZjZTcxMzA0MjNiYmIyZGIgbGVnYWN5LXRydW5rCisxNTI5NSBjYzA1ZWRjY2NmNTJiYTM3YWY1MmRlNDgwNjlmNjgyMzUyYzQwYWUyIGxlZ2FjeS10cnVuaworMTUyOTYgN2NjM2RkN2NkMzFhYzZhNWNmODI2ZmIwYmM4M2Q2ZGZmYzM5NmMyMSBsZWdhY3ktdHJ1bmsKKzE1Mjk3IDg1OWU1MDBmMDc2MDA0NjNkNTdkYmI5ZjY2ODdlNjEzNDlhNzY2ZjUgbGVnYWN5LXRydW5rCisxNTI5OCBkNzQ4NGE3NDMzNTQxYWE5NzhmMDQzNzI2YmM3OWY1MjE3ZGEyMDA5IGxlZ2FjeS10cnVuaworMTUyOTkgODFhMTIxZDIxMzQwODNmZGJiZjMyNmU2MTc0ZjEzNzk3YjM0YTA0ZiBsZWdhY3ktdHJ1bmsKKzE1MzAwIGMzNGJhM2UzY2ZjZDM4NTBkY2M0MTdlNmJiYTljN2I1NzI4OTk0NGMgbGVnYWN5LXRydW5rCisxNTMwMSA1OWVlMTcxMjQ1MTE1OWM5MThhZDI5ODY2NGU5N2Q4MWI0ZWEwZTQ3IGxlZ2FjeS10cnVuaworMTUzMDIgYzhkYmQ1ZjcwMjg4Yjg0OWM3ZTBhZjkzMzdlYzdhMDg0NjM2Yzc1MiBsZWdhY3ktdHJ1bmsKKzE1MzAzIDU5OWJmYTRmZmQ0OWMxNDU5NGJjYjU0NDIwYzBiNDMxZDE4YTc3NDUgbGVnYWN5LXRydW5rCisxNTMwNCA2YjY0N2UwODc5MjVhYjc3MzhkNDFkNTgxOGZiNDhiZDQ3YzdiMzg3IGxlZ2FjeS10cnVuaworMTUzMDUgNzY5ZWRiMmRhOGI5M2ZmN2EyMTRhODJhMDExYmEyNDA1YWYwYWYwNiBsZWdhY3ktdHJ1bmsKKzE1MzA2IDE3N2U2MWM1NTQyNmRiNDE2NjgyZjlhNjc4Y2I0NGFjNjE3ZWY2MTMgbGVnYWN5LXRydW5rCisxNTMwNyAzZTZlOGY3NmE5ODgzODM2MzhkYzg3NTg3YWU0YzhiMzEwOTRhZTZkIGxlZ2FjeS10cnVuaworMTUzMDggZWZkMWU1ZDIyODRhZjU0ZWEzM2YzMzgxZTAzYTYwNGJjOTg3MjVjZSBsZWdhY3ktdHJ1bmsKKzE1MzA5IGRjOWQxYjcxY2MzODBjNmY3ZWU1ODU3MmU1NDZlYjY4YTBhODI1ZGIgbGVnYWN5LXRydW5rCisxNTMxMCBiZWY2NzVkYzExY2MwYmMxODQ0NzJkZjY3MGY2ZmQ3Y2FjZTYzNGFkIGxlZ2FjeS10cnVuaworMTUzMTEgNjZlNDdlODVlYzUzYjVlYmE4N2IwMGE1ZWUxMGNlN2MxZTI1YmMzOCBsZWdhY3ktdHJ1bmsKKzE1MzEyIDEyYzc0YjEwMmQwMjdkN2RiMDZlM2EyYTAzMDM5ZDVjZWNjYjM2MTIgbGVnYWN5LXRydW5rCisxNTMxMyA4ZjdiMjRiNDBkZTczNjE3M2E0M2M0OTEzNGEwNTQxN2U2MzJlZTlhIGxlZ2FjeS10cnVuaworMTUzMTQgMDRjZjc4OGQ4NjJiZTA2YWE5ZmZmOGQ5ZjFmMmU1NDg4ZDkxZDcwOCBsZWdhY3ktdHJ1bmsKKzE1MzE1IDc4MzgwZGZiMmE5MDZkYWUyNmRkMGNiZDRlOWUxM2FhNzc5YTA5M2EgbGVnYWN5LXRydW5rCisxNTMxNiA5YTg0MWQ2ODQ1M2E3YzhkZWVmNTIxOWNkMzJhNjcwYjkwNGJhM2VlIGxlZ2FjeS10cnVuaworMTUzMTcgNGRmODQ2MmEyNTlkZWI4ODBmMmE3OGY0YzVlNDY3ZDhkMTE0ZTAxYiBsZWdhY3ktdHJ1bmsKKzE1MzE4IDNiOGQ5ZTYzZTRlMTU3YjcxNWU3OTY4YTg2ZmE0YmM0YzlkODcyOTQgbGVnYWN5LXRydW5rCisxNTMxOSAzOGQ1YTExZDljZDRiMDAwZWY2MWE0MTY3ZmE2Njc4NzNlYjhlODk2IGxlZ2FjeS10cnVuaworMTUzMjAgN2I4ZDBhNDdkYWE5N2I2NjYwMGQ5MjZmMmVhNzViYTY0YzdmNTI1ZSBsZWdhY3ktdHJ1bmsKKzE1MzIxIDdiMGUwYjU4NjdlMmQzOTY2MTAzM2JjYjc2MzU4MzM5Mjk0YmY5NmQgbGVnYWN5LXRydW5rCisxNTMyMiBiODdkNzU3OThkODE2YzMyYTE0Y2NlZmUxODBiZTYyOGZiZGU1YzRmIGxlZ2FjeS10cnVuaworMTUzMjMgYjBhNDM1MGQ1YzAzMTM3ODgzNDEyYWFlNGI0MjdmMWNmNTcxYjU0NyBsZWdhY3ktdHJ1bmsKKzE1MzI0IDUzOWExYTk5YTc4YjQ4MjM2ZjAwYzJkNjI4M2I2MWRlMjYwYWRhY2UgbGVnYWN5LXRydW5rCisxNTMyNSAxOWU2MWI4ZjRlMDA2Y2RmMmJmNjQ4YjU1MTVlY2U2ZWI5ZWQzOWIzIGxlZ2FjeS10cnVuaworMTUzMjYgMWJlMjMzMTU4OGIyMzhiM2Q4ZmQ4MDJjMmMzNjE0M2FmMTQ4NzhjMyBsZWdhY3ktdHJ1bmsKKzE1MzI3IDY2ZGQyOThlYWY4YTVkNGFhNWY4MmE2NjhhMmM4OGJjYWIyNWNlYjIgbGVnYWN5LXRydW5rCisxNTMyOCA5YTk3YTcxNGExYmUwMzAxZWZjNWE0OWJhYmJhZGFhYTI2ZTg1NzE2IGxlZ2FjeS10cnVuaworMTUzMjkgM2RiZTQxMzgwMjY2NjA4NDNhNmQ2YmVmNTRkY2QzOTlmMzkxNjE5ZSBsZWdhY3ktdHJ1bmsKKzE1MzMwIDhiY2QxNDMxM2MxMWNkYzkxNzY4YzE2NTAxZjdkY2JkNWEzYzA5ZDggbGVnYWN5LXRydW5rCisxNTMzMSAwZGYxOGY5NDcyNjc4YzZjMGMzMjRjODYwNzczYzhiYjM1M2MxNzY1IGxlZ2FjeS10cnVuaworMTUzMzIgNTk1MmVmNjc4NmMyMDA4MzNmY2MzYjFmYWE0YzcyOTE3MWEzOTIxOSBsZWdhY3ktdHJ1bmsKKzE1MzMzIGFlZTdjNDRiYjRmZTViZWZiZWRlN2E4ZjhhNDY3NjBmNGZlOTZmNTYgbGVnYWN5LXRydW5rCisxNTMzNCA4YmE4YjU4NTdlODk3NTZjOGFiNzFkZjczOGE3NWM4NTljNWU3ZjA3IGxlZ2FjeS10cnVuaworMTUzMzUgYWY4NmNmODgyZDBmZmMwZDYxYWUxMmNmNWVmN2VlYmVjNTcxMmNmYyB1bmxhYmVsZWQtMS45OC4yCisxNTMzNiAxYzdjMmRkMWJlYjFmODEwNmE3YWZhNjFkNGI4YmFiY2M4M2UxNzU3IGxlZ2FjeS10cnVuaworMTUzMzcgZGM3ODliM2UyYjliOThkODQ2MGYwMGUxZjFjOTE1YTQ1ZDIyMTFhNSB1bmxhYmVsZWQtMi4xMDguMgorMTUzMzggODVmMDBmOGNkNjc0YmJjNjM3YzE4MWZlNWFjNzVhODE3MGU1YWY0MSBsZWdhY3ktdHJ1bmsKKzE1MzM5IDA3NzQ1NmMzMjRiYzU5ODkwMTQ5MGJhMGE0NTE3NzAwNWU1YzEwZjkgbGVnYWN5LXRydW5rCisxNTM0MCA5NzgyNTM1NDIwNzYwY2JlZTk2MGI4NmMxM2YzOGFkMTdkOTlhNzlkIGxlZ2FjeS10cnVuaworMTUzNDEgZTBhMTIwOTVmYWMyZTEwOGRkN2RjMzQ2NjI4YjcwZWQwZjQ1ZmYzNCBsZWdhY3ktdHJ1bmsKKzE1MzQyIDZhYzNhMmMwMDQwZmNiMWRmYjRjODhkOTJlY2E4NmIzZTZkOWMwYTkgbGVnYWN5LXRydW5rCisxNTM0MyAwYmFiMWUzNmEzYTZjMjNmNzM2YTA5NTE5ODA5YWU5MTMyOTBkZWE5IGxlZ2FjeS10cnVuaworMTUzNDQgZGI5NDU4YzJiNjMxMDdmMzUwNTYxZGEyZmZmZGM3YjNkNWU4ZjE5YyBsZWdhY3ktdHJ1bmsKKzE1MzQ1IGNkZTRkYTE4YzRmYTA5YWFkODIxOWQ2NTk2ZjFiZmUzOTk3YjIwNzMgbGVnYWN5LXRydW5rCisxNTM0NiAwYjkxYzNiMzg0ZDhjYzM2ZWRkMzRhYTQzNjEzMjg4ZTNjZmQ2ZDg4IGxlZ2FjeS10cnVuaworMTUzNDcgNmNlMjFlNDVhOTZlZWJiODg5NWE4Mjg2ZmJhMTEzMmM0OGUyYWUzMyBsZWdhY3ktdHJ1bmsKKzE1MzQ4IDQ4NWQ1ZWFmMGY3NTcxMDZmMDQ2YjQyYzk3OGVhNzUyMGRhMDkwOWUgbGVnYWN5LXRydW5rCisxNTM0OSA1NDI3NGJlYjI0NGQxZDliMGM2ZTM0ZGYyNDNjOTczMjg0ZDNlMTc4IGxlZ2FjeS10cnVuaworMTUzNTAgMmNjNmU2ZGZlOWJiNzU2NWUzMTdiNWY2YjdjYWYxMTQ4NTc0ZTA0YyBsZWdhY3ktdHJ1bmsKKzE1MzUxIGNlZjQ1ZjFhNzk0MzA3OGNiMDRkYTVjOTcyZjM2NTY0ODNhMDI2MTQgbGVnYWN5LXRydW5rCisxNTM1MiBlNDQyNjYyYjI4ZTE4OTAwMTcxZWI5ZWMzNDczYzYwNTg5YzViYTIyIGxlZ2FjeS10cnVuaworMTUzNTMgNzZiMzM5OWIzNjRjZGQ2NjE0OThjODFmYjA5YWY4YWVjOWFiZDU0MiBsZWdhY3ktdHJ1bmsKKzE1MzU0IGVhZWU5MjRlZmIxOTJjZDk5NDBlMDE5NmE3YmZiYjU4ZmViYWVmMmMgbGVnYWN5LXRydW5rCisxNTM1NSA1MjhjZmU4Nzk2NjUyMDdhMWU0Y2U3ZDAyNWQ5MGE5MTMyMzgzN2M5IGxlZ2FjeS10cnVuaworMTUzNTYgMDVjMDY3MTU2NTdiY2M0ZTA5MjZhOGM1MmNlZGE3NTAzN2JlNGNkZSBsZWdhY3ktdHJ1bmsKKzE1MzU3IDU2NDIzYjkzODBmNGY3NmIzNmMwNmMyZDJkZjNmMmFjNTNjYjg0YTQgbGVnYWN5LXRydW5rCisxNTM1OCA2MjZjOTdhYjEyOGNmZTk5NzY4NmQ2M2U3YTEzZjkxNzhkYjc4MzQyIGxlZ2FjeS10cnVuaworMTUzNTkgOTJkMWRkYzFjNTdmZGI5ZTA2YzY0MGE3ZGQyZjJjZWExYzU2YmE5MCBsZWdhY3ktdHJ1bmsKKzE1MzYwIDY0NTVkOGZiNzg3NjFlNjk2N2Y5N2VlMGM3NjY3OWNlNDA1YTViNzIgbGVnYWN5LXRydW5rCisxNTM2MSBiNTcwZDRjZDY0MGFjMzhkZmViZjNlMzZhOWU5NjcwYWNmOGI1NTc1IGxlZ2FjeS10cnVuaworMTUzNjIgODJmMTc2YjcwNjdiN2NmMzJjNjZkOTJkOTdmMWM2YWUyMWE4OTYxNCBsZWdhY3ktdHJ1bmsKKzE1MzYzIGRkNjA3OGQyMGY3ZjgyZTA1YjliMTgzMWY3NmQ5YWEwMjM2YWY3N2YgbGVnYWN5LXRydW5rCisxNTM2NCAzNWNkYjNkMDNmZDM1MmM1MDBkZWQ1NWNjMDE3OWY5NDllNmYyNDE5IGxlZ2FjeS10cnVuaworMTUzNjUgYjVmN2FiMjcyMjM3OTUzMzRjOTk0MDMwMGYzNGRkMTQ2Yjg2YjQyYyBsZWdhY3ktdHJ1bmsKKzE1MzY2IGExMTEyOWNlZWNhNWRmNjllNDdjMWJiYzdiYWZkMGU3ZmY4OTg1NzggbGVnYWN5LXRydW5rCisxNTM2NyA1MTI1M2UwOGY3Njc4ODEwY2RkMTQwZDhhNjcxZTk1YzRiOGMyZjY0IGxlZ2FjeS10cnVuaworMTUzNjggYThhYjA5ZWY0OGI3YWY1NWY1NzU0NmU5NzU1MjUxOTA0OTQxYjA0MSBsZWdhY3ktdHJ1bmsKKzE1MzY5IDMyYmQ0YmFkMTA4YmE4Y2NjNGI0NmE3MjA5YWM5Y2QwODdjNTJjNWQgbGVnYWN5LXRydW5rCisxNTM3MCA3MWU0MjAyOTZlZjExMjdlZTU1MTUwNGIxZTRkN2IxNDJiNmYyMWI3IGxlZ2FjeS10cnVuaworMTUzNzEgYzE5NWZhMTU3NTQxYzYxY2ZmN2Q4M2RiNjEzOTc3Mjk2OTFlMjNkNiBsZWdhY3ktdHJ1bmsKKzE1MzcyIGIzMjBjZjNhOThiOTA2ZmRhZjdmNTdmMGE3NTZkNTAwMDFjOGZiMmYgbGVnYWN5LXRydW5rCisxNTM3MyA1NjQ4ZGY3NDM5NWY5YjQzN2JkOWZhYzI0YzkwMGY1NGEwOTY5OWFmIGxlZ2FjeS10cnVuaworMTUzNzQgODIyOGMzYWU5MTMwYWE4ODA4M2I0YzI2NjczNjcwZGMyMjM0ZjMwYiBsZWdhY3ktdHJ1bmsKKzE1Mzc1IDhkN2FkMzgxOGVhNmU3MzhjNWU5Y2U4NzA5YWNmNTdkYjJkMmU5NjAgbGVnYWN5LXRydW5rCisxNTM3NiA2NzIzM2RmMTMwMzczZTc3ZTE5MmEyYjY3M2ZiZWNjZTExZDU0NmQ3IGxlZ2FjeS10cnVuaworMTUzNzcgODFiYWJiYTViZDM0ZTk5YjMxMDNhMWM5Mjg3YjA0YTM5ODI1YTU4MiBsZWdhY3ktdHJ1bmsKKzE1Mzc4IGQ5Y2ZhMmU2Zjc4MjA4NTA3ODE2N2VkMDBhY2MxY2RlNWQzYmU5ZjEgbGVnYWN5LXRydW5rCisxNTM3OSBjYzQzNTBiMWI5MWZjOTUzNzIxN2E4YzQyYWI1ZDUxN2I4MjE0MWI4IGxlZ2FjeS10cnVuaworMTUzODAgZWI0OTE0MWQ2ZTEwZjA3NTQ0NjFlMzdmNmRkOGVjZDhmOTQ0NjViNCBsZWdhY3ktdHJ1bmsKKzE1MzgxIDllYTZhZThjZjA1Y2JlY2Y4OWIxODRjNzgwY2U5Y2FkMjU2YjdhYTIgbGVnYWN5LXRydW5rCisxNTM4MiA4YTgyZGRhZWJhNmFhMTQwYWMxNmZkNzNmM2QyY2FjYTBhZTRlNzc4IGxlZ2FjeS10cnVuaworMTUzODMgZjdmOWE3NDBlZDFjYjVkMjNiMmQ5NGExMTg5MjA4MjI1ZDkwMmU3NSBsZWdhY3ktdHJ1bmsKKzE1Mzg0IDlhNzcyNWVhNzhlYjBiMGE3MTE0MzYwZjcyNDU3MGZlZTU0MzM1YmIgbGVnYWN5LXRydW5rCisxNTM4NSA2ZTA3M2JhNTE0MTQyZDk5MDA3NTA5OTE0YWE0ZGE4YTkwYWRjNzViIGxlZ2FjeS10cnVuaworMTUzODYgMTExZGM5MTY4ZTQzNWMyYzJlN2ZhM2I0MTFkNTg0NzU3ZDczMjI2NiBsZWdhY3ktdHJ1bmsKKzE1Mzg3IGE2Yzg0MTNiM2M0ZmY1Mzg2YjU1ODdiMjg5NGJjYjQ0YjNkNzdjNTggbGVnYWN5LXRydW5rCisxNTM4OCA4N2Y1OTQ2YzU2ZjU2NmI1ZmMzNzIxYzk3ZTdmMDA4YWUzOGNkYWYwIGxlZ2FjeS10cnVuaworMTUzODkgZTdjOThhZjAyMDg0OTFkOWNjMWMzOGQyZDQyYjBkYWQ0NjRjYmUwZiBsZWdhY3ktdHJ1bmsKKzE1MzkwIDNlZmVhYTc1MjFlNDFiMmZhZGQ2OGRiMTgxMzkxZWExNDA5ZjU3YmMgbGVnYWN5LXRydW5rCisxNTM5MSA1N2Q0ZmM4MzA4ZTNmMTdjZjczMmIwNzI5NjYxZDk5ZWU0NDE1MzA1IGxlZ2FjeS10cnVuaworMTUzOTIgMTMyZTI3MTQ5ZjlmM2Q2NzhlMWNhZTEzZmY0NDQ0ZjA2ZDJhMDE3NiBsZWdhY3ktdHJ1bmsKKzE1MzkzIDM0ZDJiNTBlZmYyZWI5MzFkNTEzYjBjY2U4NGEwYjlkN2MxODNhMTAgbGVnYWN5LXRydW5rCisxNTM5NCBhNTY3MDdiMDdiODFkZDQ0MTdhNDYxZTQxNWViNGVhZTNiNWJjNDZiIGxlZ2FjeS10cnVuaworMTUzOTUgZGRmOTg2YTk3MWI1NjhhNDIyYjM1ZjRjNWJjYmNlODBhNzQ0OTFhMyBsZWdhY3ktdHJ1bmsKKzE1Mzk2IGJlYTNkNzcwYmUwYWM0ZWViMGU0NWFiM2EyOTIxYTZkNjBjYWU1YjIgbGVnYWN5LXRydW5rCisxNTM5NyA3NWRhOWQ2MzUzMWQzMjU3OTA0NDg2ZWM3YmRlNzZjNDE2MGVjNDQ5IGxlZ2FjeS10cnVuaworMTUzOTggNjk0ODFjZGU1MTFkODY1ZGY3MTlhYzBlNjY2MjBiZTFmYjE5MWE1OSBsZWdhY3ktdHJ1bmsKKzE1Mzk5IGRlZjk1OTM1MjQyMmQxOGQ3ZGIzZDYxOWJkMjhjZTE5OWU1OGJiYjQgbGVnYWN5LXRydW5rCisxNTQwMCA5MTdkODQ1ZTZlNWYyMWU0OTllNWU5N2E1NjI1OTkzYWNiYjU1MWNhIGxlZ2FjeS10cnVuaworMTU0MDEgM2YwNmY0NzY1YmE0MjFiMmZlNzg3NTQ1YmE0MmI1MWE2OWQwNWFjZCBsZWdhY3ktdHJ1bmsKKzE1NDAyIDAwNGJiMjBkYjExZTA4NjdlYzU0MDA5NzM2Y2VlNzA3YWJkODgzZjEgbGVnYWN5LXRydW5rCisxNTQwMyA5MWIyZWMyMDc2MzM0OWVmNDBlYTMxMjk4Y2ZhYzIxOWNiMTY5MjM5IGxlZ2FjeS10cnVuaworMTU0MDQgMDZmZjk2NmY2OWQ1MmYzYjAzNzA4NGQ0M2NhNWE5OWYwMzJiYzkzNCBsZWdhY3ktdHJ1bmsKKzE1NDA1IDAwYWE2M2Q2ZDI2ZWEwZDUwMDIxOTI3NTY4MzZmNWJmYjM1ZGQ3OWMgbGVnYWN5LXRydW5rCisxNTQwNiBjNGViNzBkMjRhODczZmNjNDNjZTVlMTkyM2YwZDUyMDRhNmNmM2MxIGxlZ2FjeS10cnVuaworMTU0MDcgMTdkMWEzZjFmMDg1ZDdhNjRlMzZmNTBiZDMwZjUzNGE0YTQ5MmY3MCBsZWdhY3ktdHJ1bmsKKzE1NDA4IDAzNWFiYjkzMDMxN2YzZGM4MGVkNDgzZjFiMjc3Mzg0NDg5NzNiMzQgbGVnYWN5LXRydW5rCisxNTQwOSAyYTUzZjVkYzA1OTBmZGQ4MGIwNmI5Y2NkMmMwYzczMzk1ODhlYTkwIGxlZ2FjeS10cnVuaworMTU0MTAgYzkyNjY4NzY2ZjVkZjliOWFlMzQzMjI3ZjAyZjdiNjIzZjk2MDY5MSBsZWdhY3ktdHJ1bmsKKzE1NDExIDFiMDgzZmVkOWE0OGYzYjRlNTVhODg0YzFkOTY0ODUwZTA5OWQwN2YgbGVnYWN5LXRydW5rCisxNTQxMiBmYWE5OGM4ZjNmNDIyNTI1OWY0MDQwNDliYTk3MWI4MWZlMmI4ZDc1IGxlZ2FjeS10cnVuaworMTU0MTMgODY2MzY1YjQ0ZjIzNzQ4NTdkNzkxZTZjMDY0Yzg3NjliNGE2ODZmMiBsZWdhY3ktdHJ1bmsKKzE1NDE0IDBhMzA4MWRlNTVhMTg1Nzg3ZGJjNDM2NThiZDYyOTM5NWJlNjgzMWEgbGVnYWN5LXRydW5rCisxNTQxNSA2YjE0M2NhNGZkN2YyMzRlMDQ3MmJkZjE0YzQ1ZDQ1MGI4N2RiMDczIGxlZ2FjeS10cnVuaworMTU0MTYgNGNjNzRiZjgwZTBiYzdmYjI4MjM3NTFiYjJiNGE1MzI1NzBkNmFjMiBsZWdhY3ktdHJ1bmsKKzE1NDE3IGY3YTg5OTY0N2NiM2ZiMGYwOWI5ZGMxNDA5NWIwM2JiNDZhNjEzMjYgbGVnYWN5LXRydW5rCisxNTQxOCA4MDViYjkwYWYxNGQ3MTBmNDNmMThmYTE1MDZiNWMxZjQzMzE0OTVhIGxlZ2FjeS10cnVuaworMTU0MTkgZTJlNDM2YTYyODk4MTkxMjIyOTFhMmRmNzdkYTVjMzNkZDdmZTM1OCBsZWdhY3ktdHJ1bmsKKzE1NDIwIGI2NTYzZDlkZjA2ZDA3MmUzMjI5MzQyZTdmMWUwNjE2ZDFmNjcyN2UgbGVnYWN5LXRydW5rCisxNTQyMSAwNTQ5MzNmYWY3N2ExMTdkZGYzNzQ0YmZiZjUwMDk5NDY2YTYwMjE0IGxlZ2FjeS10cnVuaworMTU0MjIgYjkxZmRjMjljNWJkMmMwYTM2ZDI0MmQzMmZjNGUyZmVjN2Q5YmE4NSBsZWdhY3ktdHJ1bmsKKzE1NDIzIGFhOWE2MzVhNmY0NzdhODc1OTliOWIyZDBiMzVhNDk1ZTY5NmU3NDUgbGVnYWN5LXRydW5rCisxNTQyNCAxZWE4Y2Y4ODVmN2JkOTMxYmY4YzU5ZGY2ODYxNmQ4NjEyMTdkMWZiIGxlZ2FjeS10cnVuaworMTU0MjUgYjc3ODkxZmE5M2IwZTQzZDAzNGNjN2MzOWQ5NTA1MjA5YWQ3YzM1YyBsZWdhY3ktdHJ1bmsKKzE1NDI2IDA1NzA5Nzc5NjEyMGI4NjNjZDg4ZGQ4YzY1MWY2YjgyOWQzMTQ2YWYgbGVnYWN5LXRydW5rCisxNTQyNyA0ZGY1MjM5OThlNWQ5NDk3NjNhMzI3NzI3NTI2OTVjZGRkMWE1YWQ2IGxlZ2FjeS10cnVuaworMTU0MjggN2QwMjU1YmVlMGY5OGE4MTNkYTU3MDkwZjkwOGEwZTczN2ZkNTA0YyBsZWdhY3ktdHJ1bmsKKzE1NDI5IDA2YTM0NmViM2NiZjAzYjA2NWZkMTFhMTQ0ZDc2ZmJkNTQxOGEyMjIgbGVnYWN5LXRydW5rCisxNTQzMCAyYTZkYzY1YzA2MGY1OGRkMzAxZWE4ZDk5OGMzYWE5YjhhZTdkYWJmIGxlZ2FjeS10cnVuaworMTU0MzEgMmZlYjk3OTBiNDA0NTZmZWM3MzY0Y2JhZGE5NjgzNTljNzcwZGE3ZSBsZWdhY3ktdHJ1bmsKKzE1NDMyIGEwMmU2YTQzY2ExNWIwOTkxZTE3YzU0YmIzY2FiNjhkODliNDk3ZjggbGVnYWN5LXRydW5rCisxNTQzMyA0N2JkYjYzNjE1OWM4MDVhMzU3ZTJlYjE4ZDBiMDE2MDkyNjA1ODBhIGxlZ2FjeS10cnVuaworMTU0MzQgNTY0Njc3MzMyMGJlYTZkYWQ2NGI1NTQ1MDgwNmEyNzU3NzgxYTkyYyBsZWdhY3ktdHJ1bmsKKzE1NDM1IDExNmZjNDMwNWEzOWIxMzJlZDJlZmY3Y2ZkZGFlYjQ1NTk0NmFiYTkgbGVnYWN5LXRydW5rCisxNTQzNiBkZTQzNWE1OWE0ZDUzNTU1ZDE1MWUwNDEwZjE1MDRlZDQ5MjczODJkIGxlZ2FjeS10cnVuaworMTU0MzcgMDdkYzNlZDE3ZGQ1ZDk1YjZlNGU2YWY1NjgzNWM1YzhmZGNhNWMzZiBsZWdhY3ktdHJ1bmsKKzE1NDM4IDIzNDA3NDU0NWViNGUxOTdhN2Y4ZGU4YjM1NjU0YjM1MmQ0NjZkYTMgbGVnYWN5LXRydW5rCisxNTQzOSA4NzVlNjc3MjM2YTcxODk4ODI2YmU5ODIwNDYzYzEyY2NlZmYwZDI0IGxlZ2FjeS10cnVuaworMTU0NDAgOGU4MWM2YzUyNGIyMDVhZDUxMzI1ZjVhNDZhNTJiYTJjMGQ5ZTU1YyBsZWdhY3ktdHJ1bmsKKzE1NDQxIGI4OWRhMjAyZDE4ZDc2OWMzYWE4M2Y2OTlhM2ZhMGYyOTg1YWQ0YzMgbGVnYWN5LXRydW5rCisxNTQ0MiBiZGFlNmI5MDkzNGY0NmRkNDY4YTNjMzA4OTQ5YmQ2YzMwNjczNzIxIGxlZ2FjeS10cnVuaworMTU0NDMgN2M4OWVlNDA3MzBmNDBlMzA1NDdmZjAzN2ZhNWQwMTFjZWNmZGEzOSBsZWdhY3ktdHJ1bmsKKzE1NDQ0IDJlMWIwNDgzYjEwMWIzMDc2NDgyY2Q3Y2Q0NTNmYzJjMDc0MzE4ZGIgbGVnYWN5LXRydW5rCisxNTQ0NSAzNGYwOTA2ZmU4MjM0ODQ2MTRkYjlmYjVhMTYyOWZiMzJiN2IyYmUxIGxlZ2FjeS10cnVuaworMTU0NDYgY2JmOWQ2N2I1ZmMxZjViMGEzNGU5YzRkZmFmNmYzOGE3MDIwOWIxYyBsZWdhY3ktdHJ1bmsKKzE1NDQ3IGJjOTZjOTEyZGNlOGNkNTllZTBjZDg0NmQ3ODU4OWZiMTZiNWIxMzkgbGVnYWN5LXRydW5rCisxNTQ0OCA2YmFkMTY3ODlmNzliNDUyNTMzZDI5MTc2MDdhZjkyMjg4ZjlhNzFmIGxlZ2FjeS10cnVuaworMTU0NDkgOWNiOTYwODYwNTI4ZjMzN2ZmZDQxNTNlN2M1ODUzNDhlOTY5NDc4NiBsZWdhY3ktdHJ1bmsKKzE1NDUwIDIwYjNiOTc2NWNlYzY2YmRhYTdjYTRiZDUyNDZkODI3YjYyNzI5MTMgbGVnYWN5LXRydW5rCisxNTQ1MSA3MjhjMTYwNTMzNjhhZWRjNjBhZDZkYjgzYTEwNGM0MGIzNTQxZmRhIGxlZ2FjeS10cnVuaworMTU0NTIgN2I0NjZhNzNjOTYxNjYzZThiOGMyNDdlODM5ODlmYWJiOTJkOGU4MCBsZWdhY3ktdHJ1bmsKKzE1NDUzIDQyMGY5YWFmODgwYmRlMzFkZTRkMTBjODhmMmExYjMwYTU5ODg5YzQgbGVnYWN5LXRydW5rCisxNTQ1NCAxZGVlOTNlYjllZTMyMTVhN2Y1ZmY2YWFkZDY3MTI4NTllNDU0OGQ1IGxlZ2FjeS10cnVuaworMTU0NTUgYTk0MjY5YmQ2NTg1OTE5NGFkNTFkYWU4MzQyNDhjMDA2MWFjNmU3OSBsZWdhY3ktdHJ1bmsKKzE1NDU2IGE0OGI2MGI2ZWI0ODM3ZGM2OGUzNjFmODdjMDM3NGY2NTA1M2VkNzYgbGVnYWN5LXRydW5rCisxNTQ1NyBhNDllNDUwNjg4ZTJlMGQ2ODA1M2RmMGQ5ZWRlYjFkZmQyMzA4NDJhIGxlZ2FjeS10cnVuaworMTU0NTggOTAyODAwZDhlOGJlMTE1ZTUyZTViMjRiYjE5MWNjZDcxMzBiODZhYSBsZWdhY3ktdHJ1bmsKKzE1NDU5IGViMTcxOGM1YTU2YzBkYmVhMDNmZWQ5MmNiY2UxY2Y0YmM2Njc3ZmMgbGVnYWN5LXRydW5rCisxNTQ2MCBlZTk3MmNhNjVjMWMyMzE0YWExYWY3OGQ0ZjA3MTgxNGEzZTQ5OTJkIGxlZ2FjeS10cnVuaworMTU0NjEgOTRlZGUwNGI5YTllZWFkZmEyNGMxNjhlZTNiMGE0YWVhYWU1OTgwNyBsZWdhY3ktdHJ1bmsKKzE1NDYyIDkwYzc5MDZiMDk5OWI1MWE3NWQ4ZGE1MWY3NTllYjMwODFiNjJlODggbGVnYWN5LXRydW5rCisxNTQ2MyA1OGFkNjE5NmQ4MWYyYjQ4OTk1NGUxNGYzZmFjNzJiZjFiNTlkOGI3IGxlZ2FjeS10cnVuaworMTU0NjQgZjU1NWZkODA1MDg1NWVhOGMxOTk4NGZkYmI3MzgyYTY3ZDJlZDlmNSBsZWdhY3ktdHJ1bmsKKzE1NDY1IDYwNTlhOTI3OWQ5OTk0YjA1ZGE2MGMyMmY1YWJiZjYwZjllMzlkOGYgbGVnYWN5LXRydW5rCisxNTQ2NiA3ZmY1YWUxMGE3NzFkN2M2ZDlmZDg4YjJkNTA5ZGY2YjJiNjFjYzcwIGxlZ2FjeS10cnVuaworMTU0NjcgMjk3NzVjMjg3MjM3OGY1NDM4ZGE3ZTRlOTVkOGRmMjlhOGNiMDkzMCBsZWdhY3ktdHJ1bmsKKzE1NDY4IDlhYmVmYzViMWQ4OWEyZmI2MzEyYjc0YjBjNmEwMjhiYjRiZDc1NjQgbGVnYWN5LXRydW5rCisxNTQ2OSAzNTMwNTk5MTcxOWI1MTdlMjlkZDVmMWE5YWExMjNlMDg4NmU3NTZmIGxlZ2FjeS10cnVuaworMTU0NzAgMWJmNzE0ZTBjMTBmNWFkYzZkMjUyYWNlYjE4ZmJmNzhjZGMzZjlhZiBsZWdhY3ktdHJ1bmsKKzE1NDcxIDk0MmNlMjIxMTI4YTI4MzAxNTUzMGY2OTM3N2Y1OGM0MzI5Y2NmMTkgbGVnYWN5LXRydW5rCisxNTQ3MiBiODE3ZjE2Mzk5MzljZmQ0NGYzOTZmNmViNmIwNGRkNThhYjUwMDkwIGxlZ2FjeS10cnVuaworMTU0NzMgYmU1NWY1ZGRjNjE1YmQyMTVjMTg0NmNmNTIxMjA4MmI4OGRlNWMzYiBsZWdhY3ktdHJ1bmsKKzE1NDc0IDdlZmJiNGU2YWZjYTgzMGRiMWZlOGRhZmQyNDkzODJjNmU5NWU4ZjggbGVnYWN5LXRydW5rCisxNTQ3NSA4ZGNhNTU4Njc5OThhNTkyY2YwOWMzZjM5NDY5ZDc5YmIwNGExMzkxIGxlZ2FjeS10cnVuaworMTU0NzYgNmFkOGNkMzRhZDhjOGYxYWNiMThmMmJmNTdhYmNkOTIzMDM1MzE5ZiBsZWdhY3ktdHJ1bmsKKzE1NDc3IGFlY2YzNWYwYzE2YmEzYzllOTM5YTIxMjMzNDVkZTNmZjU1MjVhYzggbGVnYWN5LXRydW5rCisxNTQ3OCAwYTZhZjU5ZWJmZmQ5M2FkNWI4OWIyZDAxNjY1MTIwZDk5NGIzMGM0IGxlZ2FjeS10cnVuaworMTU0NzkgNTNlNTRiZDRlNWY0YWNiMWJhZjU4ZTg0YTAyMzI1NDJmOTQ4MzE2MyBsZWdhY3ktdHJ1bmsKKzE1NDgwIGZmODFhNjVlMGE5YmIyMjA2N2ZjNmE1ZjRjM2NjZmEwODVkNGJkM2IgbGVnYWN5LXRydW5rCisxNTQ4MSAyZWE5OGQ5ZGM2Njk0NDlmNjkxN2JhOTdhZjkwM2NlZGZkZjU1NTI0IGxlZ2FjeS10cnVuaworMTU0ODIgYTU5OGFjZTAxOTQzOWM1MDMzOTVlOTU3OGU4MzA0NmY1MGM0YjllNyBsZWdhY3ktdHJ1bmsKKzE1NDgzIDA1MmFmYjc0OTUyZWNmZDMyOTgwZDFlNDgwYzE1YTk1MDdiM2M3NDEgbGVnYWN5LXRydW5rCisxNTQ4NCBkMDQwY2ViZDc0YWMyZjI1MzUyMDc5NGYzZjdkNjUzMmQwYWNlMjJkIGxlZ2FjeS10cnVuaworMTU0ODUgMmI0OTg4MzdjZDg1ODY4Njc3MWNjMjZhOTE4YzI1NTVjNjU0YTY0YiBsZWdhY3ktdHJ1bmsKKzE1NDg2IDQwZDZkMmZjOWNmZmY0Nzk3MjE1NmJkMWJkZjJlYWYzOGU4MjQ2NjIgbGVnYWN5LXRydW5rCisxNTQ4NyA1ZGQzYjM1YmZkNTIyZjhhMzBjOGY3Yzc4ODU0NjRiODNkNzExMzFlIGxlZ2FjeS10cnVuaworMTU0ODggY2UzZGUyOTQzNjJiOGE4NTJiYjEwNzE3YmJjNzU3OTUxZjQzZGM3NSBsZWdhY3ktdHJ1bmsKKzE1NDg5IDRmZDg0NTkyMmM0OWFlMGU0Y2U5MjBlODU1ZmQ3ZTNmYTc1ZGY2OGUgbGVnYWN5LXRydW5rCisxNTQ5MCAyNGFiODRkYzQyYWJmMDk4NDBhNmM0ZGUyY2FiMWQxNjRjY2JjYzk5IGxlZ2FjeS10cnVuaworMTU0OTEgMTQ3ZDBiNDE0NGVhMTdkZjBmODAzYzU0MTliMGRkZDNmMWQ0N2RkNSBsZWdhY3ktdHJ1bmsKKzE1NDkyIDQxMThmMDAyZTczNzczMmVkMDc3ZjFmYmRlN2I5ZmYxNzYyZjIyZjYgbGVnYWN5LXRydW5rCisxNTQ5MyA3OTU0ZmY5M2VlM2JjNjlmNzljOThjNGZkMzAxYWIwMWE5Njc5YjlmIGxlZ2FjeS10cnVuaworMTU0OTQgODEzODMyMjIwOThhM2Q5ZDQxOGZjMmJlZGU1Mzk1YWVmMGM5MjY0ZSBsZWdhY3ktdHJ1bmsKKzE1NDk1IGNhYjIyYmNiZjViNmRjNmEzZTk0ZTQ4YzljNWJmOGQwMTI1MjRkM2QgbGVnYWN5LXRydW5rCisxNTQ5NiBkMmQ4NjVkOTU4NjEyNjQzYjA5MGNiZTY1MTgwZjU0YzJhMjU3ZGM2IGxlZ2FjeS10cnVuaworMTU0OTcgZDI1NzNkYmY2ODUyNTQ0ODdkYzg3Yjg4N2VjZGU2YjcwZjc2NGUwOCBsZWdhY3ktdHJ1bmsKKzE1NDk4IDc3YTVhMTQ2OTViMzJhOWUxNzdhMjU0NzFlY2Q0ZDRlNGU3ZWQ5ZDggbGVnYWN5LXRydW5rCisxNTQ5OSAzZDI2Y2IzODA4YTdkMjIwZGRmN2NmMTI0YTc1ZDJmOTdjMzk2YTliIGxlZ2FjeS10cnVuaworMTU1MDAgMThiMDM1NjUwNWE1YTRhYzI2Nzc4NDhiZmI1NjRlN2ZmN2I0OTU4MSBsZWdhY3ktdHJ1bmsKKzE1NTAxIDg5ZjQyMDk5YzVkZDZmNDJmNDJlNDJmNGI2MGI5YzZmNGMyNTA3ZTMgbGVnYWN5LXRydW5rCisxNTUwMiBiNTBiZjdkMzk2MWY4N2U1NmEyOGFjYmUwZjU5ZDk5MGEyNmVjNzdhIGxlZ2FjeS10cnVuaworMTU1MDMgNTcwZmFjYjczZTM2NGY3NzcyNTVmNjJmZTk0ODk5MDE1ZGY2ZTMxMSBsZWdhY3ktdHJ1bmsKKzE1NTA0IGU4NzhhNjQ3ZTA2ZWFmOTFmYzRkODM0NDJkNWEwOTA3NDdmNGIyNjUgbGVnYWN5LXRydW5rCisxNTUwNSBlZWFmYWI4YzkyNWJlNjg0NGZmYjUzZDgwMWExZmRhODE1ODE3Y2QzIGxlZ2FjeS10cnVuaworMTU1MDYgZGFkMjA1ZDEzYmI1OWRiNjM0Mjc5MmRkMGE0MmJiMGMwMGQwYzI0OCBsZWdhY3ktdHJ1bmsKKzE1NTA3IDNjMzBmN2I1MTBkMzQxMzZmYTZhZDM3NmZkYTQ4YjU2ZjQ1ZDA4MDQgbGVnYWN5LXRydW5rCisxNTUwOCA2YzY4NDRhMmZhMzA0ZjAyMDMwZDU2ODEyOWI0ZDkyMjU5MTE2NDQ5IGxlZ2FjeS10cnVuaworMTU1MDkgZWI1NjJkZjBjZWJlMGVmZWZjZjBkZjYyMGJkODIwYzRjOGY2ZTNjNiBsZWdhY3ktdHJ1bmsKKzE1NTEwIGJjZTQ5YTZmYThiOWU1YmQyNmIyM2U0NTk3ZGQ4YzI2NDFkZmM1OGIgbGVnYWN5LXRydW5rCisxNTUxMSAyNDk3ZTFjOWViY2VlYTcxODhlMzg1YmJhOWE2NWM0M2M3NGUzNmQ3IGxlZ2FjeS10cnVuaworMTU1MTIgMmMyYjQwZWIzYTY1NDYzMTkwNzMxMTQwNzZkY2M1M2YyNTBmMWNhNCBsZWdhY3ktdHJ1bmsKKzE1NTEzIDdiNDkzMzRhNjM2OTZhY2M0YzgzZGQwN2RiOTFlNmMyNjFlYTU5YzcgbGVnYWN5LXRydW5rCisxNTUxNCA4NmVjNzVkYWMyNzJiYWZjN2U2YWRkOTk3MzlhY2NjMWNjY2ViMWY4IGxlZ2FjeS10cnVuaworMTU1MTUgNTIxM2FiZmU1MjMwYmViMDNmYzE5OTYwMTAxNzY1NzA0ODhhYmM0YyBsZWdhY3ktdHJ1bmsKKzE1NTE2IDg4OWYyY2IzZjcyYWFmODIwOTYzNTkxMmI2ZWY2N2NkZTI5ZTAyNTggbGVnYWN5LXRydW5rCisxNTUxNyBlY2RkYjJlZDRjNzU2YTc1Y2RiZGZmNGE3N2E1YWFiODUwZTc5OGYxIGxlZ2FjeS10cnVuaworMTU1MTggZjBkMjI1M2I2NjRmNThkM2NhNDk5YjJhMmU1NzM4OTFmNDcyMjZhZSBsZWdhY3ktdHJ1bmsKKzE1NTE5IDQwNmIwZTI0ZDYyZTczZjhhYjhiNGU1NmY1OWQxMzQ3MGFlNmIzMWEgbGVnYWN5LXRydW5rCisxNTUyMCAxZGUwMDE3ZTEyMjY3YjEwMTE5MzZmNTcxZjMwNmM4MGI3NzM3OTA5IGxlZ2FjeS10cnVuaworMTU1MjEgMGYxZTRlMzkzNWQ3YzQwMDM4YmY5ZDIwMDAwYzkzOTJjNGViZWQzMSBsZWdhY3ktdHJ1bmsKKzE1NTIyIGRhMDJhODkyZDYxMTg2NDU5NjY5NzEzNjk5YjdiZGYxM2UxOWMyMTQgbGVnYWN5LXRydW5rCisxNTUyMyA5ZTFiODA1MGRlNjNhNDVlYTRkMjA4M2M4YjEyN2YxMmM1ZWE4ZThiIGxlZ2FjeS10cnVuaworMTU1MjQgM2MxNDlkMzhhYmY5ZmM0ODlmOTQ3Zjk5NTQ5OGI2MzQ1NjJmYWViYSBsZWdhY3ktdHJ1bmsKKzE1NTI1IGM4YTlkMTc2NjQ2NWNlNWFmYmVlOWMwMDk5MWI3OTA4ZjZhYjBhNjYgbGVnYWN5LXRydW5rCisxNTUyNiBlMGVmNjIyZjhjMjNjZTk0ZWMyOWRiNTkwYzRjY2RiYTE5OTA5NzY5IGxlZ2FjeS10cnVuaworMTU1MjcgOTY3NzMyZGQzZjk1OWJhODZmMTZmZWQ4ZDljYjllNTllZDk2Nzc0MCBsZWdhY3ktdHJ1bmsKKzE1NTI4IDljYmNhZDJlODcyMzg0NTkxY2E5NmNmYTYzYjlhOWNkODVjYzIyMzcgbGVnYWN5LXRydW5rCisxNTUyOSBiNWFiNDczNjViYWQ2NThhYzIwYTNhOTFmYTdiOGViMTFhMWYxYTFhIGxlZ2FjeS10cnVuaworMTU1MzAgMjYzY2RmOWM4NDJlZTc0ZDQxYzUwNDlhNmY0ZGE5ZGIxNTdmNDM2MSBsZWdhY3ktdHJ1bmsKKzE1NTMxIGZiNDAzOWIxY2Y4ZDc1ZjEyYmQ1ZjlmODgwZWU5NjFhNzljYjRjMDUgbGVnYWN5LXRydW5rCisxNTUzMiA1MmM2YWMyZDE2YThjYWVlYjgwNzg2NjEyZThjYjI0NjYyOTljY2VmIGxlZ2FjeS10cnVuaworMTU1MzMgN2E0ZjY0MDJjNjdmODg3NWM2NmRmODAyNDk1OWMwYzY2MjQ2YmJjMyBsZWdhY3ktdHJ1bmsKKzE1NTM0IGIwNjk0YzFjMTI4N2Q4YjZkZjkzOWEzNTNkYTdiMWJhZGQyNTFiNDQgbGVnYWN5LXRydW5rCisxNTUzNSA0MGRiOTA5Y2UyZTMyYWFmNmE3NGU4MjliYWE2NTQwMjY2NDM0OWM2IGxlZ2FjeS10cnVuaworMTU1MzYgOGUyYjM1ZDM4NmFhY2FjNzZkNzk1NGNkNmNiYTNkZTIxNmJmODQ4NiBsZWdhY3ktdHJ1bmsKKzE1NTM3IDM0Mjk0N2YyZmI1MTQzMWQ4NGI3NDMzNDNhMjYwOTM4YjhiMWM4NDQgbGVnYWN5LXRydW5rCisxNTUzOCAzOGRhODY0YTBjODA2NmFjNWQyODQ5ZjE4ZWQ0OGE0ZTI1NGI0ZWYxIGxlZ2FjeS10cnVuaworMTU1MzkgMDI2M2E5OWQwZWIyODg4ZGM5YTk3Y2NkOGZhM2UzYjgxMTk5ZDVmYiBsZWdhY3ktdHJ1bmsKKzE1NTQwIDA1NzBkZTljODIwMmQ1YmUwNjNjZWZkMThmZjAwNjA5NWFiZjdiYTIgbGVnYWN5LXRydW5rCisxNTU0MSA5MzM1ZGFhOWRkZDNiMDM4NjI2MTRiMjFlM2RmMWZjMWEwYTFhYWUxIGxlZ2FjeS10cnVuaworMTU1NDIgOTM2ZWZkYzAxZDUyNDY5MGZlMjE4OGIyOTExM2FmZTgxZTYxZTNkMyBsZWdhY3ktdHJ1bmsKKzE1NTQzIDc3MWIzZTFhNzcxYzhmODc3NDM0MDU3ODc4MWEyMjFjMTZjYzU4NDEgbGVnYWN5LXRydW5rCisxNTU0NCBiOTFiMzVjMWQ0YzAwOGVkOGI5OWY5YTljMDcxOWViOTBlNWI2NjAxIGxlZ2FjeS10cnVuaworMTU1NDUgNTM5OGIxOGY4MzE5ZDFlNDRmZTU0MjZhNmRkYjczMWFjYmM1ZWYyOCBsZWdhY3ktdHJ1bmsKKzE1NTQ2IGY2ZTczMGY2NWJjZTYyZWJmOTVjODJhNTdhOTkyYmU2ZGIwMGUyN2UgbGVnYWN5LXRydW5rCisxNTU0NyBmNzY4ZDRkYWQ5YTYyYTM3ZWRjMGZjNzg4Nzg0ZDcyNjg5MTAwNGNlIGxlZ2FjeS10cnVuaworMTU1NDggNmY3ZGY5ODVhODBjNDdkNjBhM2JiNTNhZWU4OTk3YmE4YzE5YWY4OSBsZWdhY3ktdHJ1bmsKKzE1NTQ5IDgwMDRkMjljNzdiOGJkMjk2MjllMDdjNzhjNGMyMzExM2UyYTA0N2EgbGVnYWN5LXRydW5rCisxNTU1MCBmMGQwMzY4OWMxYWUwMDRmZjdlYzE2Mjk4M2E0Y2Y5ZmEwMDQ4MTYzIGxlZ2FjeS10cnVuaworMTU1NTEgZjhjMWM1YjdkYzlmNGI5NzM3MDQ2Y2I4NzQ2OTNhZWViN2FhZjIxMyBsZWdhY3ktdHJ1bmsKKzE1NTUyIDkzN2Y5ODU5YzlkZTFiNjk2ODhjNDRmNmE5NWY2ZTY3Y2I5NWM5YzUgbGVnYWN5LXRydW5rCisxNTU1MyA1Y2U0MmUwN2FmZDg1YWU5Y2Y3OGQ4NDc1NDU0NDE4MjIxZjQwMDc2IGxlZ2FjeS10cnVuaworMTU1NTQgNTM5NzQ0NTFlMzFmMTE2Njg4MjhkZTk2YWM4MDIzYzNiMGJlNDhlOSBsZWdhY3ktdHJ1bmsKKzE1NTU1IDA3NDgxOWFmZGM5NWFiMWQxNjMyNDMwZjc3MzI4NjMwMTVmMjUxMjYgbGVnYWN5LXRydW5rCisxNTU1NiBlZTExOTA1MWRmNzdmNDE1ZGFlYjViOTExMTg5NmRkMjJmODJiNDcxIGxlZ2FjeS10cnVuaworMTU1NTcgNWMwZWRiMzUxYzA3Mjc5MTg4NTQwYzQ4OGU0ZDkwNGFlNDlmNjM0MiBsZWdhY3ktdHJ1bmsKKzE1NTU4IDA5ZjcwZjkxYmRhZTJlOGY1YWM5YWUxYjJhZDc2ZGI0MGJkMWYwZjcgbGVnYWN5LXRydW5rCisxNTU1OSA4OGQwYjMzODNmZTI1NTY0MzllZTMwNjUwZjM3NmE0YzEwZGY4MThhIGxlZ2FjeS10cnVuaworMTU1NjAgZDgxYzk1ZGQ0MDM5ZGRhOGY1YWQ2OTY1MzFmYmNhYjA2OWMzN2MyNyBsZWdhY3ktdHJ1bmsKKzE1NTYxIDNhYWIwYzUxOTAwOTBhZjY5NjE1YWQ4Y2UzMTQ0NDE0ZTZmMDE1MWEgbGVnYWN5LXRydW5rCisxNTU2MiBlZWYyYjkxOGQwN2FjODY5MjRkYjBhZTUwMmNiYjhhMWE4NjFhZGU4IGxlZ2FjeS10cnVuaworMTU1NjMgMzNkZGMxMmRmMjY3ZDg0ZDEwODMxMjJmZDdjMGI4MTFjZGU1MDhmNyBsZWdhY3ktdHJ1bmsKKzE1NTY0IGY2ZDdlMzI4NjYwOTI2MTFkNDQzYTYyYzk3OTBhMzc2Nzg0N2QzNjEgbGVnYWN5LXRydW5rCisxNTU2NSAzYmU5MmNlZjE5MTc0NDk5NmZiMDBiZjc2ZmM5ODNmNWYyZTI0NjJlIGxlZ2FjeS10cnVuaworMTU1NjYgZTM2YmU3ZmI3NmNjYzdmYmFmODQwMmM0NjQ2MmZmMWUzMmY4ZjgwNCBsZWdhY3ktdHJ1bmsKKzE1NTY3IDU4M2RlZjhjZWRmNDMxMGRjMWQxNWU2Y2VjN2ExYmU5NGY1MjZiYzMgbGVnYWN5LXRydW5rCisxNTU2OCBiY2U1M2IxNDcyMWU5MTliYzk1MjFlZmMzNzg1ODMyMDIwNTk3MGE3IGxlZ2FjeS10cnVuaworMTU1NjkgYmMxZmU5NTYyMzk5ODNmMjJlZDM2ZmEzZGJhNmM2ZmQwN2QwNGMxZSBsZWdhY3ktdHJ1bmsKKzE1NTcwIDI1OGVlZDQ1NzBjZTg5MGMxMGY3MzQ3ZDVlMDZhOWNkNzNiOWFkOTcgbGVnYWN5LXRydW5rCisxNTU3MSA3MTFiMzI5NjA5MzQ3ZDVkMjcwNjgxZjk1NDNiYjYzODIyNmU1YjFhIGxlZ2FjeS10cnVuaworMTU1NzIgYjEyYWRhMmViMzEyYjA2ZDAzOWUxNDA3MTMyMTM5NzNjYzVkZmVjMCBsZWdhY3ktdHJ1bmsKKzE1NTczIDBjMjE3ZTVmMDU1Yjc2ZTQ5MGIxODIzZTQ2MTNhMDZjNGQzN2Q4M2YgbGVnYWN5LXRydW5rCisxNTU3NCBmMWY5YzMwYTQxNTY5NTc0OGI4ZDliNTQwNDM3MTU5MjUzMWZkMDFlIGxlZ2FjeS10cnVuaworMTU1NzUgYjFiMjYwYTJkZTk4N2U4Nzg1Mzk4MTc3NmEzZGRkZDI4NmFmMGIzZSBsZWdhY3ktdHJ1bmsKKzE1NTc2IGZmMGY3MjgxYmZiODRiYzI2NDQ0NDhmODJiODA0ZmMyNTA3YzExNzIgbGVnYWN5LXRydW5rCisxNTU3NyA0MjcyYjM2OGJmNjlmNmNlYWEzZmU3ZjliYjE4YmI1Yzg1NTZiZWJiIGxlZ2FjeS10cnVuaworMTU1NzggNWYxZjhkZGMyYTBjZGU0OWE4N2U5Mzc4ZWQyNTE5OTIzMjkxYTdiMyBsZWdhY3ktdHJ1bmsKKzE1NTc5IDY2Njc4MjMyNmQ0MmMwZGIzNWIwMTMxMmFlNjJiOTA2ZDJlNWM4MjggbGVnYWN5LXRydW5rCisxNTU4MCBhMjRkOWFkNjc4NmQ2NjM5MjY2MWFhMjU2ZDZjNThhYTQ4NDQyNmJmIGxlZ2FjeS10cnVuaworMTU1ODEgMzVlYTVkZTFlZTgzYWI1ZjU2NzljMjE3MjA1MGQ1OGY0ZjhhNGU0ZSBsZWdhY3ktdHJ1bmsKKzE1NTgyIGYyZGI2MDk0M2Q2YjgzMWI5NDJmZjA1NGRmNzY2MDEzNWIyOWEwMTAgbGVnYWN5LXRydW5rCisxNTU4MyA3MjNkZjBjODAxZDFkYzRhNWE1Zjc1ZjRlZGUyYWRlMTZiNmQ4YTVmIGxlZ2FjeS10cnVuaworMTU1ODQgMmM3YTQ3YzY0ZTMwNmU2Y2FhMmZkODI1YzhkNDAxMGU1MmU3ZGNmYyBsZWdhY3ktdHJ1bmsKKzE1NTg1IGI1MzE5ZjQyMjU5MTNmMDQwMTY3NTljMWYwMmVkM2E1Yjc4MzY2NDggbGVnYWN5LXRydW5rCisxNTU4NiBjOTI5OGVjNjM3YzVhNjEyZDc0OWQyOTk3OWY4NjE5MTgyNTQyNzM1IGxlZ2FjeS10cnVuaworMTU1ODcgN2QyYTAwNjNlMjZkZmZlYmUyZDI1M2EwMjI3OWVhYTAwMjA5YWQ0MSBsZWdhY3ktdHJ1bmsKKzE1NTg4IDA0Nzc0ZDYyMmVhMmRlMjE5YmU5YTg1YzI5MTk1NDkyZWE0NTNkNWUgbGVnYWN5LXRydW5rCisxNTU4OSA2MmFkMzU3MDhiOGM2Zjc3MDIyYzlkNGNmZDhkZTY1MDFjYzViYWYzIGxlZ2FjeS10cnVuaworMTU1OTAgYWYzOGE3YTdhZjEwYjc2YzNhYTg3NWQzMDJhM2Q5MjRhZmU4YThhNiBsZWdhY3ktdHJ1bmsKKzE1NTkxIDJmNjA2ODY3YWI0ZTdiMDYxNzlkZTMwNDllNjEzYzU5MjU3YmQ5YmEgbGVnYWN5LXRydW5rCisxNTU5MiAxZjUzMTIwOGJlMTE3M2I3ZGUwM2IwNDYyZWU1NzgxMzg5ZDE3YTIwIGxlZ2FjeS10cnVuaworMTU1OTMgYjkwZDYwMWQ0ZDU5M2E4MmY0ODdhYzhiZTUwMDEyOTMyNDRiOGMwNyBsZWdhY3ktdHJ1bmsKKzE1NTk0IDQxYzBjNjBkY2FmNWY1Mjk2YTYzNWNjZDVhMzgwOTA2NjY0MjNiYjkgbGVnYWN5LXRydW5rCisxNTU5NSBjMmEwZjJhODFmYThhOWI1YTljZTIzNWRlOTc1MTNhMDYzM2JkYTE3IGxlZ2FjeS10cnVuaworMTU1OTYgYmMzNTY0N2ZlNDcyOWMxYjM1NjVmYTUwODY4ZDNkOGU5ZGNiMzFiZCBsZWdhY3ktdHJ1bmsKKzE1NTk3IDNmZTMwNDA1MDQzNGUzYTAwNjZkNzk5ZDI1Y2EwYzk0OGE2NzZmYmMgbGVnYWN5LXRydW5rCisxNTU5OCA0ZTllYjg2NmFhYzZhNTgzNWQ3MWRlYmFjY2YyNTU3NGI4Nzc2ODMwIGxlZ2FjeS10cnVuaworMTU1OTkgMTYxNTU5ODlmYTkzMmE2MjE4MWRhNTBiOTFkZGI4ZDBlZTkwODViZCBsZWdhY3ktdHJ1bmsKKzE1NjAwIGI0YmEzMmJiNzU4YmVjM2M4OGQwODg4ZGQ0NGRkYmIzNzI4YzcyMWQgbGVnYWN5LXRydW5rCisxNTYwMSAzOTEyZmI2YzYzZjYxMzNkYmZiNDZhY2U1NmJhYzZmNWM1Yjg5YTc4IGxlZ2FjeS10cnVuaworMTU2MDIgNjQ1ZDU3ZWYxNjM5NTY3M2NmNjdlMWI1OGFkMjY4ZDgwNTJlZjY1YyBsZWdhY3ktdHJ1bmsKKzE1NjAzIDRlOWY3NzI0YWM1NTk1MDJjNTQwNzAxMDgzYjIwOWVkYjM2NTBiYzcgbGVnYWN5LXRydW5rCisxNTYwNCAwNDBjMTA5N2NkMzUyNDRlOTlmZTY4OGM0ZjQyODkzYmQ5ZjU4OWQxIGxlZ2FjeS10cnVuaworMTU2MDUgYWZkN2NiZTFjNDkyZjYzNTZmOWE3ZDI1YTVmMDVhNWYxNThkZGQzNCBsZWdhY3ktdHJ1bmsKKzE1NjA2IDIyOWZkM2E1YWZhMDgxZDRhMjRmN2FhNTg3Yjc3OGUwMjc3MGY4YWQgbGVnYWN5LXRydW5rCisxNTYwNyBiNThiOTAzM2M2NWE0MmVjMDI3MjY0NzQ3YTA1ZDIwNWUzZjM2ODZjIGxlZ2FjeS10cnVuaworMTU2MDggNDkxNmQ0MGQ5Njc3NmE5Yzg0NGM4MDNmOWExYjNlZWRjYWI3NzA5YSBsZWdhY3ktdHJ1bmsKKzE1NjA5IDA1N2FkODhhYWU5YTYzNTk3M2M4ODJmYTViODFjODFmZTk1NDQ5NGYgbGVnYWN5LXRydW5rCisxNTYxMCA1OTRjMjdjODcwYWRlZGZlZGZlNjNjNjIwYzI2MzQ3M2Q5ODAxYTI0IGxlZ2FjeS10cnVuaworMTU2MTEgYTkyYWRiNzgwZjQzZDkyZTQ1M2M0YzMxZDU0NGNiM2RiMjhhMGM4MyBsZWdhY3ktdHJ1bmsKKzE1NjEyIGU3ODdmNjY0MWFmYjhjOTBiOTgwZjdhNTU3YWY2OTNiNmU0Y2I4OTEgbGVnYWN5LXRydW5rCisxNTYxMyAyODkwOWU4MGYzNmNmNThkNmM3NDZhZjViNDRkN2NkOTVhODc1NzdmIGxlZ2FjeS10cnVuaworMTU2MTQgMjE1NTNiZDJlODc1ZjJjZDZjM2M3MWJlYWRhOWE2MzMwY2JlNzg2NiBsZWdhY3ktdHJ1bmsKKzE1NjE1IDYzZDM5MzU4ZGIwOTM0MmUwN2JmMTM0N2FmOTIwZTYzODc3ZTE4NjYgbGVnYWN5LXRydW5rCisxNTYxNiAwZmUwMjE2ZjZjNGU0YTEzZWIwNGU0NjI4NDcxMTQ5NmIyNjgyNGYxIGxlZ2FjeS10cnVuaworMTU2MTcgMGM4ODRjOGQxZTc1Y2RhMDQ3Zjc1YTZiN2EwOThjZmE1YWQ4NzdiMiBsZWdhY3ktdHJ1bmsKKzE1NjE4IDZhZTA0NmQ0Y2QwNDIwM2VhMmQ1YjAwOGIwYTFiMWY4MDBlNzcwNzggbGVnYWN5LXRydW5rCisxNTYxOSAxNGIxYjVkYjZjYjJkZWJiZTBkYmFlMTNiMWYyY2I2MDY1MGFjNGQ0IGxlZ2FjeS10cnVuaworMTU2MjAgMzc5Nzk3ZjNlZWIyMDYwNDQ1NTA3NzRlYjRkZWVmMGFmMmE5ODA5YiBsZWdhY3ktdHJ1bmsKKzE1NjIxIDQzMjNkNDg1NTA0N2I4YzcyNGI1NGQ5MjdkMjAyOGYzNGY2Zjg0ZjggbGVnYWN5LXRydW5rCisxNTYyMiAzOTcxZTZiMTRhMDk3NDk3ZDUxYjBiZGQzOWRlZjYwZDZlMGE5NDJhIGxlZ2FjeS10cnVuaworMTU2MjMgYWYwZGVmMDYzNjU4MDM2Y2VhYTgxY2NmNTA2ODhlOWYyNTc2YWEwMyBsZWdhY3ktdHJ1bmsKKzE1NjI0IGMwZmQ4OGYyYTY1YTkxNjRhYzgyOWU2YjljNGYxYTY0YTRlMDhlODIgbGVnYWN5LXRydW5rCisxNTYyNSAzMWQwOTg4ZGE4YTk3MzE0ZjYyNmYwZWUxOWZjMGQyNjNiYzUzOWZjIGxlZ2FjeS10cnVuaworMTU2MjYgZTU0NWEwYzQ0ZmUxNWNiMmYyZTMwZjUxZGNiMDNhY2VmMTc5NGRjZiBsZWdhY3ktdHJ1bmsKKzE1NjI3IDU0OGNjMTBkZjllYmFjODA4ZTViNjQwNThiMDFjYTdhZDEyM2UxNDcgbGVnYWN5LXRydW5rCisxNTYyOCBlMDQ2NDljM2NlZDAzZGIyMTM5MDY4ZjhjMWIyMDEyOTY4YjE1NDE5IGxlZ2FjeS10cnVuaworMTU2MjkgZjRiNDg3ZTM1MjE0MGNlNDFiY2M4MWQyODYyNDE3Y2FhODFjNGFkNCBsZWdhY3ktdHJ1bmsKKzE1NjMwIDg4ODcyNzkxOTk4YTBkYTE5NjA4MDMxN2MzZGRlY2IwYjFlYjYxOGQgbGVnYWN5LXRydW5rCisxNTYzMSA1MjdmN2UzYmI3NmQ3ZWE4NGVlZmIzYzZjZWM4MTlkYTJjZDcxODc5IGxlZ2FjeS10cnVuaworMTU2MzIgZGRhMWNhNTNlYThhMjYxOGU5NmNmMmMxZTc0N2RiMGIzMTZhNTEyYyBsZWdhY3ktdHJ1bmsKKzE1NjMzIGUwMjRlZDJkYjYyNWI4ZTNlOGQ2ZjU2OTliNzdiMmQ1YzMxMmZiZmQgbGVnYWN5LXRydW5rCisxNTYzNCBlZmM2ZDc3ODlkOWU2ZjczMzljYzIyYWQ0N2UwMzU1ZDM2YTlkZDA0IGxlZ2FjeS10cnVuaworMTU2MzUgZDk4YTc1NTczMjZhNGQ4MGVjOTA1YjY0NmFmY2RkZTVhYzkzNTQzNSBsZWdhY3ktdHJ1bmsKKzE1NjM2IGE4Y2UxOWMzMmRiOWE3Y2Y3YWFjMjM3OWZjNDUzY2U3YzA1N2ZiODAgbGVnYWN5LXRydW5rCisxNTYzNyAyNDM1OTNmMTFmY2Y2OGU2NzVmYmEzYTkzZmExMzVmODkyNjYyMTA4IGxlZ2FjeS10cnVuaworMTU2MzggNzgyMzFiYmU2MDVkYzJlYTdjZmE4M2FiNTU1NWViZjU2YjliYTA4MSBsZWdhY3ktdHJ1bmsKKzE1NjM5IDZkNzkxNDg4NWQ2M2YxYzM5YWY3OTYxMDJmMTgyYzY0NTA4OGQwOTYgbGVnYWN5LXRydW5rCisxNTY0MCAzMDFmZjE0YjJhMGVhNjFmYmMwZWNiOTIxZThmNTQzZWYzMWU1NDUzIGxlZ2FjeS10cnVuaworMTU2NDEgMjZlMjBhMjhkMDUxYzZjZWQ0Yjc0Y2EwN2JhZTg2MWNjZmEyODM4NyBsZWdhY3ktdHJ1bmsKKzE1NjQyIDY4ODlkZTI5YzU1ODRiMjhlYTlmMzA2MGYxMGIwZjlhNjBhMmJlZDIgbGVnYWN5LXRydW5rCisxNTY0MyAxMWU1YmY4ZWI0NzM2OWFmMGQ1ZWJjMzMwODQ5OTljMGQ2MWI2MzZlIGxlZ2FjeS10cnVuaworMTU2NDQgN2JhYmY5MWI2ZDc1YzY2NTAyYTU3ZTMwZDdlOGMyZWM5MjZjMDdhYiBsZWdhY3ktdHJ1bmsKKzE1NjQ1IDA5MmJhZjY5ZDZhZjg3ZDYwY2JiMzVlN2FkZDAwMDNiZWQ1YmZhNmUgbGVnYWN5LXRydW5rCisxNTY0NiA1YTBkMTU2YzQyMGFjNzEzYjAxMjVlMTFjNGE4OTZmYzI2Y2Q5NDNhIGxlZ2FjeS10cnVuaworMTU2NDcgMWFlMDM1YTMxY2I0ODM1ZDAxZTkzMjU2NGE2Mzg0MzI0OTBjZTRlYyBsZWdhY3ktdHJ1bmsKKzE1NjQ4IDExZDEwZTliNTA4ZDgwYjBhNDg0Y2YwOWRhYzUzY2FjODAxZTlhMWYgbGVnYWN5LXRydW5rCisxNTY0OSBiNTc1MmRlMGNmYTQ2NzM1NGQxMWY1MjQzNDYwYTcwMzdmYzVmNzJlIGxlZ2FjeS10cnVuaworMTU2NTAgZjU0YzM2NzdiYWU3ZDg2MWFjYjg3ZDAzY2NiMTNlNTRiMzM4Y2VhYSBsZWdhY3ktdHJ1bmsKKzE1NjUxIDE3ZjM1ZjY2ZWNkOGJjOTU0ZjcxMDk3ZGQxNTY1MjVjMjRkMzBkMzIgbGVnYWN5LXRydW5rCisxNTY1MiAwYzhiOWY5NmIyNmFjNzMwYmE3Y2MxMDNiZjM3NDA1MDgzMGY1ZWZiIGxlZ2FjeS10cnVuaworMTU2NTMgMGMyY2RkN2NmN2RjNmM2MjcyZWIwOWU0M2U4NjlmYzNiY2RmMjc3MyBsZWdhY3ktdHJ1bmsKKzE1NjU0IGZkNTg4MWUxNzQyN2IzZjZiYzI1NGMxNjIzMTZjNWVkZTA0MWYxNjcgbGVnYWN5LXRydW5rCisxNTY1NSA2MWY2YWNjNGFhNzQ4ZGQ0MGU4YzM4MThjNzJjNzExZDE0MDEwODIyIGxlZ2FjeS10cnVuaworMTU2NTYgZjBhOGYxMjczNDU2NGJjMmI2YjE5NDk5ZDg4MDRjOWMzYzBhNjUyZCBsZWdhY3ktdHJ1bmsKKzE1NjU3IGFkZWY5N2YzZmVhMGY1NDA3ZGUyNTIxYWU3YTM4NjcyZjU4Yzc4ZTggbGVnYWN5LXRydW5rCisxNTY1OCBlNDdiMWEwZDY0ODQ3OTc3MTExZDhjZTBjY2RhNzVkNDljMTM5NTRiIGxlZ2FjeS10cnVuaworMTU2NTkgZjMxZGNkMWFkOGM0MTE4NzliNjc5YjIxZDViMWVkMTRiMmIzYWE2ZSBsZWdhY3ktdHJ1bmsKKzE1NjYwIDlkZjkxZjkxZTVjYzlhNDQyNDAwYmI3NDk3MTBlZDUzYjk0NDQzOWUgbGVnYWN5LXRydW5rCisxNTY2MSBmODJiMTU3ZjQ1ZTI5YzEwNmI2NTZlMWRmYzIwYWE5MTE2NDlkYjc1IGxlZ2FjeS10cnVuaworMTU2NjIgZWZmMjQxMDY4NWNjNDYwZjc1MTg5YjRkNjgzZjA0MjA5ZWEyMzNkMyBsZWdhY3ktdHJ1bmsKKzE1NjYzIDk4ZWIzMDU5YWU3NjBiY2RmMTlkZTZkODMzNWNhY2JiMDk0NDA2YWIgbGVnYWN5LXRydW5rCisxNTY2NCA5ZWUxZTU5NDU3MWQ3MTU1ZDhlNWUzNjk2YzVlNzE4NTRhMTAxNzI5IGxlZ2FjeS10cnVuaworMTU2NjUgNzUyYWE4ZGZmNTIwYjk0ZWRjNTE2OWY2NGE4ZmZkNzcwYjNiNTYyZiBsZWdhY3ktdHJ1bmsKKzE1NjY2IDI1NDMxOTcyMjk0YjRmMzdjZDY3YzY4MDQ1OWQyNmMwNjdiMDI0Y2EgbGVnYWN5LXRydW5rCisxNTY2NyBmNjkxMDJjMWY0MTNmMWM2NmE0ZTM3ZDkwMDAyMDdmY2ZmNWFiYWJkIGxlZ2FjeS10cnVuaworMTU2NjggZGRlN2U5MWYyZjJlNWMzMTZkOGQ0MGJiYjk3OTFhM2I3Y2NmNDg5NyBsZWdhY3ktdHJ1bmsKKzE1NjY5IDFlNzg0Yjg3OTAzOTBlMzM2NjBjYmU5YjJhZjQ4MGRjMmU3YmE5OTcgbGVnYWN5LXRydW5rCisxNTY3MCBiZTM2ZjEwM2E5NTM5YzNkZGRkZGJmNTU5Zjc5MGFlMzc2MGRjMzFjIGxlZ2FjeS10cnVuaworMTU2NzEgNTEzOThmNzFkMzAxMjI3ODQzNjQ0MmZkNGVlZTE4NTkxMjUwMDUzOSBsZWdhY3ktdHJ1bmsKKzE1NjcyIDNjZWUwZDc1MTkxZTIzMWMwMzZmYmRlOTI5ZmIwZjIyZTg1ZmI4YjQgbGVnYWN5LXRydW5rCisxNTY3MyAzNDQ1MmI4ODNhNzFkNWY3MGI4ZDgxNjE4NjU2MGRlMWFhYzNjNDJhIGxlZ2FjeS10cnVuaworMTU2NzQgZTVhYWM5ZGZhY2Y4NzE1YmQ5MmQyYjRmZGQ3MmJmMjJhZDNhNTkyMSBsZWdhY3ktdHJ1bmsKKzE1Njc1IGM4ZTEzNTM1ZmRjMzE5YWIyMDcxN2E3NWJkMzRiN2Y1MzhmMDJkYzUgbGVnYWN5LXRydW5rCisxNTY3NiA1N2UyOTQ1NDM1YzkwMDQ5ZTY0ZjYwODExMmU3YWYxMTlkMzI3M2YxIGxlZ2FjeS10cnVuaworMTU2NzcgMDBmNWQwZGY3MGFkODBlMWQ4ZTdiYmRkZDQ4MmUwODY5MjIzN2Y3NCBsZWdhY3ktdHJ1bmsKKzE1Njc4IDJhMmNhYWVlNjc5NzNhOGRiZTExOWYyYmY5MWZjZGNkYTk2YzM0YWQgbGVnYWN5LXRydW5rCisxNTY3OSA4YTIzYWIwNTdhZjYxNzZjZTJiZTM3ZDQ4NTJiMWQ0NzhlZWZmNjM1IGxlZ2FjeS10cnVuaworMTU2ODAgMzFjNzI1ZDcwZTY1MjEyZDNiMTg3NTM1MzgxZGM0OTc5Yzc5YWI5ZSBsZWdhY3ktdHJ1bmsKKzE1NjgxIGRlYWYyNWRmMTVmZTI3ZTY0Y2I2NTFkY2YwZDBkNTIzMWEwYzUyNWQgbGVnYWN5LXRydW5rCisxNTY4MiAxMmQwYzQ2NWIxMDNjZmU5NDA4OWRmYzBjY2NmMWE1YmU5ZDgyZjZhIGxlZ2FjeS10cnVuaworMTU2ODMgYThhZmVmYzRmY2VkOTk0N2I2ZTc5NjA0NTAwMmRmYjcwYzU0ZDVlYSBsZWdhY3ktdHJ1bmsKKzE1Njg0IDFjYWFkZmI4Y2E3MTBiZDkxZDgxNDZlY2UyOWE0NjM4YTY4ZTUzY2QgbGVnYWN5LXRydW5rCisxNTY4NSAyZDBiOTk3NzhlZGYxYmE2Y2FiZTg0Y2UwNTU5NGQ3ZTZkYjc3NGVlIGxlZ2FjeS10cnVuaworMTU2ODYgMTI4ZTdiOTk0NTA1OWM2MDBiNWE2Y2FlMWU0YjA1MWZlNGY5NTRiYSBsZWdhY3ktdHJ1bmsKKzE1Njg3IGRmNjg2OWJlYmUwM2M1N2MzMTQ5NTA1ZjA2YzJkOWM5NWYyNzNhZjEgbGVnYWN5LXRydW5rCisxNTY4OCAxNWRmM2ZhMGZkNGQ3ZGE4ZTIyOGZjMGExMDM3ZDAwNjQ0ODRjZDExIGxlZ2FjeS10cnVuaworMTU2ODkgNTllNDk0YzA4MDJmYzkyNTZhNjVhZTZkNDY1ZjY5MjI0ODAwY2JkYyBsZWdhY3ktdHJ1bmsKKzE1NjkwIDJlZWY2MzZiYTFiNjJmNmUxMDBjNjJjMTgzMjI0YWJiMDUyZDhhYWUgbGVnYWN5LXRydW5rCisxNTY5MSA2NjE4MzI1NTc0Y2I5NTNlZjI3ZTRmZjE1MzRkMzY1NDU0ZTI4ZGRlIGxlZ2FjeS10cnVuaworMTU2OTIgMGFhM2Y4MGRiYjIzYWU1NmQ0MDI3NzdmZWE0ODNiY2JlOGZhYjM2NSBsZWdhY3ktdHJ1bmsKKzE1NjkzIDFmYTdjMTE5YjdhNTZmMjBhOTg4ZDViYWNiOGViYjg1YTNkZGQyNDEgbGVnYWN5LXRydW5rCisxNTY5NCBiNjYwZWNiZWFlYjhlMzJhZDg0MzhlZjYwYzI4YzhmNjg5Nzg1ZjA5IGxlZ2FjeS10cnVuaworMTU2OTUgNzUzZjkxNjNkZjBiYjNmMzc5MzE5NWIyYTljYTViZmQ4NjZhNTNiYSBsZWdhY3ktdHJ1bmsKKzE1Njk2IGE5ODAwOWE0MzkxZTc4NzkxNmYwNmE4ZmYwMGY5YmUwYmIyNzM1NDcgbGVnYWN5LXRydW5rCisxNTY5NyAzNDI3YjBmODVhN2NlNzFiYWI5Y2QyYTE2NjNjNWE5NzA0MTQ1YTcyIGxlZ2FjeS10cnVuaworMTU2OTggYWJiY2ViNmEyNTMyNGI1YjQ0YzUxYmZkNjFhNzU1ZWU3MWI2ZmRhMSBsZWdhY3ktdHJ1bmsKKzE1Njk5IDdhYjViMWVlZWJkZTkyODM5MzRmYTliYTY1ZjRjODIzZjJiOWI5N2QgbGVnYWN5LXRydW5rCisxNTcwMCA4ODAwNGYyNWRjMjVhYmJkYjM1MDdjZTBmNDBkZjFkNjU2NjgzNmIyIGxlZ2FjeS10cnVuaworMTU3MDEgM2Y3YTM1Nzk4YWNlYTEwOWI0ZTVlODQzNzA3ZGJmZTEyNWM0YzRhNyBsZWdhY3ktdHJ1bmsKKzE1NzAyIDhjOTU1NGVkYmViYmI0OGY0NmRlNjkxNTkzYTI0MjBiNGM2NzAxZDkgbGVnYWN5LXRydW5rCisxNTcwMyBhODUzMGQzNjAyMWM2YzgxZTU5OTY2NzJkNzFjZTU0MWQ2ZWNiYzczIGxlZ2FjeS10cnVuaworMTU3MDQgNDI5ZGQwMjI3MmQ2ODA3OTI2YjFhMjNkMmY3MWZmNjc1N2JkYWY4ZSBsZWdhY3ktdHJ1bmsKKzE1NzA1IGIxZWM0OWIyYzVjMmE5MDNiM2I5M2RmMTcyYzMzOTNhODJiNDIzN2QgbGVnYWN5LXRydW5rCisxNTcwNiA1ZDJmYjY3NDA4YTdjYzYzMjRiODlkMjExNjlhZDA1NWU5ZjA3Mjg3IGxlZ2FjeS10cnVuaworMTU3MDcgNzU1YzlhYzllNmFlYmI1ZjE0NjgxMzE3NmI1YjhmYjg3MTk4ODgzYiBsZWdhY3ktdHJ1bmsKKzE1NzA4IDZiMmVjZDE3MjIwM2I0YTExNzcyY2U1YWM5ODYyMjY5ZWE5MjNiYjkgbGVnYWN5LXRydW5rCisxNTcwOSBhY2IwMjYxYjY5NDJmM2JlN2IwYmEzNzRlZGIxZjAzOGJiOTIzMDU5IGxlZ2FjeS10cnVuaworMTU3MTAgMmE2NGYyMjVhMTA1MzFjMjRiNzU4Mjk5ZDljYmYyY2U4ZDAwMGI1NSBsZWdhY3ktdHJ1bmsKKzE1NzExIDg5NGVmZWE3MWFjZmVlMjVkNzBiZDRiZTYxZWYyOGJlYzkwZGZjZDEgbGVnYWN5LXRydW5rCisxNTcxMiA3ZjAyMmUyNjBhNGQ5MzM3NzA5MGFmMzRhMjQyMWZiMDdhNzhkNWNjIGxlZ2FjeS10cnVuaworMTU3MTMgNTE5NDlkZTc2MzY1YjFiNTQwYzk3NDhhYWIzZjM0YmI0YjlmNTdiMyBsZWdhY3ktdHJ1bmsKKzE1NzE0IGEzZTEyODgxY2MzYzIzZTM3M2QwYThlNzNjY2VmNmMxYzQ5OGU1MTggbGVnYWN5LXRydW5rCisxNTcxNSA0MzA5ODVkNTdkYTMxNmY1ZDM0YzkxYjYyMDJkMTM5YjFlOWQ4YjZkIGxlZ2FjeS10cnVuaworMTU3MTYgY2FhZTc1MDFkYmE1NTY4NTE1NGI5ZjgyZTE5YmQ0MjI4MzMyMjRhNCBsZWdhY3ktdHJ1bmsKKzE1NzE3IGRjMGEyMTJmYjM1MzkwZmRiZGI5MDliMjc1NjgzZmI4MTE3OTA2NDMgbGVnYWN5LXRydW5rCisxNTcxOCA5N2RkNmRjMzM1MDM2N2Y0ZTYxZDQzZWQ5NTFhN2UxNjQ0NmY3ZjhlIGxlZ2FjeS10cnVuaworMTU3MTkgM2M2NjQxYzgxMGRiYTJiNTc1NjRjOWNkMGQ4Y2E4ZTY5ZjViZGNlNCBsZWdhY3ktdHJ1bmsKKzE1NzIwIDI1MTNjZDc0MTQ3YzczODk0MWJiNTc2ZDkwMTM0MThiMjQwODAyYTEgbGVnYWN5LXRydW5rCisxNTcyMSA0NWFhYTc1ZjA4YTM3ODAyZmNkMDI4NzY0YWEyODRhNGVmMTY2ODU2IGxlZ2FjeS10cnVuaworMTU3MjIgZWI5MTFlY2E5ZWU5ZTgxOWMwMDAyOTUzNWMzMTkwNDI2NDMxMzYyNyBsZWdhY3ktdHJ1bmsKKzE1NzIzIGJhYzA0NWI4NTI2M2YzNTlmNGRlNjE0MTA0YjU1NWUzNTRhZjE3ZDggbGVnYWN5LXRydW5rCisxNTcyNCBhY2UxMzcwMWYzMzRkODdiZDk5MjQ2OTBiZWJiZjNjNTVmODMwMDEzIGxlZ2FjeS10cnVuaworMTU3MjUgOTM2NjFkMGViNWNjNTFkY2E1NjU1NjdhYTRhMWY5NGIzNzUyMThhNSBsZWdhY3ktdHJ1bmsKKzE1NzI2IDA0Yzg5ZDc3ZGZkYmY3ZDU1ZmRkNTZmMDIwNDMwMDM2OTU5YjRlNWYgbGVnYWN5LXRydW5rCisxNTcyNyA0NDdlZmI2NGM3MmRkY2IzYWQ1MTA4ZjVkNzk1MDczNTI1MjM2OWE2IGxlZ2FjeS10cnVuaworMTU3MjggZDExNWE5MWNhNWZhN2YzY2ZjOWU0NGUwNDFiZDg3NDY3YTRlN2JjNSBsZWdhY3ktdHJ1bmsKKzE1NzI5IGYzMWZmYjM3ZDcyY2Y3MzM2NDhiZjBjMzAzMTRkYmFjMTY1MzVlY2EgbGVnYWN5LXRydW5rCisxNTczMCBlNmI0MDdiYTQ3MTUzZWNiNmY0OWU3YzdlNzE3M2E3MzE0NWEzZmEzIGxlZ2FjeS10cnVuaworMTU3MzEgNjM0MzY3MTlkMTJlMDJiZDkzZDBkYTE4ZjJjYTlkNjY4ZTAxOTNjOCBsZWdhY3ktdHJ1bmsKKzE1NzMyIGJjMGQ0OTY4MGFhM2RmNmFhYzhiNGQwNDAxOTAxZTJkY2MxNjk5MmUgbGVnYWN5LXRydW5rCisxNTczMyBmYzc3ZTM0ZWYyNzQzZjgyOTU3YmRiMDIyNzIyYzFlZmJmMzYwNmRlIGxlZ2FjeS10cnVuaworMTU3MzQgMGI0MjI2NGFjMDIxNTQ0YmFmNmU0ODk3NzBkNWVhMDE2MDZjYzZhYiBsZWdhY3ktdHJ1bmsKKzE1NzM1IGU3OTkyZDBkNjgwODI4Y2MyNmQ2YTAwMDdlZjFhZTQ1OGM3ZWRkYWIgbGVnYWN5LXRydW5rCisxNTczNiBkZjYyN2U2MTkxNmUyMGExMDRlMWM5OTBmNWY3OTIyMjQ5YjMxZTRkIGxlZ2FjeS10cnVuaworMTU3MzcgZjc5M2M0N2M1MTBlMTM2NzMzNGI2N2UwNGNlMGFiNTBjOTEzOWNhNCBsZWdhY3ktdHJ1bmsKKzE1NzM4IGRiYjEwM2U5YTU2ZjUxM2Q4MGRmOWFmYWMzYmZhOTAyMjAxNjA2NmQgbGVnYWN5LXRydW5rCisxNTczOSA3N2M2NTExMzE5ODRiMmVlYjM3NzI3MjFmMmMwZTA3NThkYzczNjYzIGxlZ2FjeS10cnVuaworMTU3NDAgNDAwMzgyMTkwMzY0OTdjNDQ2NTlhYzllYjE4ZTM1Mjc5MzhlMzhkZiBsZWdhY3ktdHJ1bmsKKzE1NzQxIGRmYThkOWYxYzEyMzE4ZTk4YzJjZDQyMjAzMDhmZWZiZTE2OTcyNzMgbGVnYWN5LXRydW5rCisxNTc0MiA5NTY5YzU2MjU3NjU3ZTA2MWVmZmY4ZDYxNWU1ZTM4ZWFkMDRmYjFiIGxlZ2FjeS10cnVuaworMTU3NDMgODk2MDJmMzMyNDQ3YjRlZjMyYzFiODhhN2Q2ODkzMDRmM2NmNjZhNSBsZWdhY3ktdHJ1bmsKKzE1NzQ0IGI1NDQyOTllNjhjNWZhNzRmYTQ1N2NkYWJhMTUzZDA5ZTlkNTQ1ZTMgbGVnYWN5LXRydW5rCisxNTc0NSA1MzZjNjMxMjk5MzI5YjJiYzIyODU1YzBlOGI5MDJjYzYyZjZmZThiIGxlZ2FjeS10cnVuaworMTU3NDYgNTVlMmZjNGQzNDBlNDgyOTk3ZTQwZjBjM2VhZTA3YjAzMmQ2NTZmNCBsZWdhY3ktdHJ1bmsKKzE1NzQ3IDUyNzlhNmUwMGQzNjdiMDBmNTRhZjRlMDc5ZWY5Y2RlNTU0ZTJmZmUgbGVnYWN5LXRydW5rCisxNTc0OCA2NThjNTVjMDgxMzljY2Y2YjM5Mzg5MjEyZGRhNzdmMDI1MzBhZGJjIGxlZ2FjeS10cnVuaworMTU3NDkgMGViNTMxY2UwOGQxOGJjYTdlOGZmYzBlOTQ0ZmJlZjQyYjM1N2QxZCBsZWdhY3ktdHJ1bmsKKzE1NzUwIDI3MmRiNDYwNWJlNDdhZmE0NmVhMmM4OTU4Mzc5NzczOTQ4MWVkZTYgbGVnYWN5LXRydW5rCisxNTc1MSBlNjE1NTk2YzVjNDdjMDAxODQyMDcyY2VmZTYyMmU5OTZkYjljNGQ3IGxlZ2FjeS10cnVuaworMTU3NTIgMWE0MGYwMGE0OGJmNjQ5YTBiZmM2M2I1ZGNmMmM5ZTM5NjViY2YzMSBsZWdhY3ktdHJ1bmsKKzE1NzUzIDNmOTkwZWY2NjY2NzlkN2VlYmEzNmVjNmU3ODQyOWI0MmZhNjRjOGEgbGVnYWN5LXRydW5rCisxNTc1NCA4Zjc5YzViNjllMGFkYTNjN2MwNTM2NGFhODFiMjMyYTI4YTg4M2YyIGxlZ2FjeS10cnVuaworMTU3NTUgMDFjZTg5ZmM3NDVmZTFhZWRlN2Q2OTJhZjExMDQ2MjZiYjUzOTE4ZCBsZWdhY3ktdHJ1bmsKKzE1NzU2IGM5MTBiOWQ5YTBjMGU4NWUwYzIxZmQzNjk4YWQ0OWM0ZmRhZjRmOTUgbGVnYWN5LXRydW5rCisxNTc1NyBjNzU3MThmYmQ4NjI2ZThiZWVlYzY0Yzg3YWIyNDc0NDU4MTA4NDI5IGxlZ2FjeS10cnVuaworMTU3NTggMjdmM2ExOGZkMjk2NTdiNjVlMjAzNjI1MWVjNzdjNmUxZjJiNWFhMCBsZWdhY3ktdHJ1bmsKKzE1NzU5IDg2ZDQ5ODk0Njg2OGNmNWE2NzIwNmIyZjJlOTJmYzM5MDFmNDZmZWQgbGVnYWN5LXRydW5rCisxNTc2MCA3MTYwYjUyY2E3NGEwNmIxYjAwM2U1MmE2YjUwNDYyNDU5MGJlODVhIGxlZ2FjeS10cnVuaworMTU3NjEgYmMxNDdlMTg5YjdmOWI0NzkwM2ViYWJiZWI2Y2RhYjk2NWZjNDNhNCBsZWdhY3ktdHJ1bmsKKzE1NzYyIDdjZDE1MmUxNTM5YzVjYmM2OWE4ODA5MDc2ZjUyNmE5NmJkMGMyMGMgbGVnYWN5LXRydW5rCisxNTc2MyA1ZjM2MjZmZTU4Y2E4ZWQyYTEwOWNjZTA2NDQyMDk2ZWM0MzViZjI4IGxlZ2FjeS10cnVuaworMTU3NjQgNTc3MDdkYmNjMjQ1YzgxMTZiYTI1YzBkYzg3ZDQ3YTE1OTljZDhkNCBsZWdhY3ktdHJ1bmsKKzE1NzY1IDM3YmE3MDU2ZDRhYmZiNmRmMGY2NTI3NzAyN2NiODg0MzNkMzQ3MDAgbGVnYWN5LXRydW5rCisxNTc2NiA4MjE4MWU4MjBkZTNjODg4Y2NiZDg3Y2VjYWIxNDg4MmE0YzI2NjBmIGxlZ2FjeS10cnVuaworMTU3NjcgODcwMDM4NDJmYWVjYTZlZmMyOWJhYjIzNjAyOTI3YTljODE4MTU5NiBsZWdhY3ktdHJ1bmsKKzE1NzY4IDVkOGVmMjJhZGNhNTE0NjgzMzcxMGMxYzRmMzQ3OTIyZWU0ZDZiYjkgbGVnYWN5LXRydW5rCisxNTc2OSA2ZTE4NjFlMGVkNjg3NmJiZjcwMjdlZWI5ZGQ5MGY5ZmMyYzRkNTllIGxlZ2FjeS10cnVuaworMTU3NzAgN2IzODY3OGIzNjUyNjVlMmJiOGU4NTY4YzFlMGJlMzBhNGIyNGE3NiBsZWdhY3ktdHJ1bmsKKzE1NzcxIGZiYWNmNmQ1NWRjNjkzODMzNjA2MjE4ZDFhMjlmODA0ODUzYWJmNjMgbGVnYWN5LXRydW5rCisxNTc3MiAzNzQwMWVjMmU5MTBiMGNiYmVkN2M4NmQ0NDc4MDQ4ZjI3ZGFjMGFlIGxlZ2FjeS10cnVuaworMTU3NzMgOTA3NmVmYWM4NDIwYjc2MDgwNjE1ZGE4NjBiNDg5OTllYmNiODllZSBsZWdhY3ktdHJ1bmsKKzE1Nzc0IGRhZGIwY2M1YzJkMjg1ZWRlZDk4MmJjOThkNTE5Y2JkMjQ1MjFlMGQgbGVnYWN5LXRydW5rCisxNTc3NSA0ZjEzYzJiODMyMGJjM2FhMjkwOTVhNjlmMDAxZjA3ZTE5YjViNWVmIGxlZ2FjeS10cnVuaworMTU3NzYgYWZmZTEwYzNiOTJlY2UyMzBjYmJjMTBjMGRiZTYwM2Q3NGE5OTJlMiBsZWdhY3ktdHJ1bmsKKzE1Nzc3IDdhMjkyNThjNTVkZGFkZmZlM2Y2M2Y4YTE0OWE5N2E4ZDE1MWRhYjYgbGVnYWN5LXRydW5rCisxNTc3OCAzODNmNDA0Yjc2ZDdmYjE2MmIyNzA5ZjhiNGZlZWFlY2MyOWIzZDEwIGxlZ2FjeS10cnVuaworMTU3NzkgMmUyZWUxMTdkNDBmZDZiMTQ0MTFjZDUwZDZhMjAwNGQ3YzhjZDM0MyBsZWdhY3ktdHJ1bmsKKzE1NzgwIDRhM2U5ODcxYjQxYmJhMGI1NWQ4ZTI5YTY2YmMyMjg5YmQxY2MyN2YgbGVnYWN5LXRydW5rCisxNTc4MSAxZGFjODliYmJjZDIxNzMzZDZmMTMyZjJmYzVmMWFiMzViMDg3MDZjIGxlZ2FjeS10cnVuaworMTU3ODIgMzBhNGUxMzk1MjExMDM1YmJmZmYwZWMxYzRlZTdkNjY1M2E5OWU3ZiBsZWdhY3ktdHJ1bmsKKzE1NzgzIDg3ZWNlMTI3Y2JhMmQ2OWViYTkxZmI4MWZmMjU2YmRmN2ZhMjFhMTAgbGVnYWN5LXRydW5rCisxNTc4NCA0MTAyZjdlZGU4ZTk5OWNlMTAxYWVhNzk0MDg1M2VkZWQwNTczNTkyIGxlZ2FjeS10cnVuaworMTU3ODUgMjNlOGFhNDg1YTcwZDU2ZTJlMTU4YzFjZDdhMTFlYzIwMTYwMjE3NSBsZWdhY3ktdHJ1bmsKKzE1Nzg2IDU4NjYxYTU1N2RjNjkzNGRkNGViZDQ1MTQzNmJmNGZkOTQ0ZThhMzUgbGVnYWN5LXRydW5rCisxNTc4NyBjYTk2ZDhjZTEyZjNkZGUyN2YyOTIxN2NkOTVjNzZhMDEzMjc0ODgxIGxlZ2FjeS10cnVuaworMTU3ODggYmYyZWU4NTY3MjAxNTQ4Zjk0OTNkODZlNDcwOWNhYTMzYjlkNWQyNiBsZWdhY3ktdHJ1bmsKKzE1Nzg5IDk3NDgxZDdhYzU0OGFkNGNhOGNmYWFhY2NjMGE5MmY0MjQxZWNjMDEgbGVnYWN5LXRydW5rCisxNTc5MCA3MGIxNmRjNjEzN2YyNDkwMGRhNDU1MWZhNWY3YTI2Y2I1MmJhZGNiIGxlZ2FjeS10cnVuaworMTU3OTEgNWRmMDM0ODI2NzM1MmFkZDMzZTNhN2VlOThlYjI3YWMzY2U4OWZlMiBsZWdhY3ktdHJ1bmsKKzE1NzkyIDAwYTk4MTE5NGNhNjlmZjBmNGZhOTliNzc4MjI4ZDQyNGJhNWZmOGEgbGVnYWN5LXRydW5rCisxNTc5MyAxMjQwYmM5OTdjOGZiODY5NDM4MDk1ZTI2NjE4Y2Q3MjRhZTBkNDAxIGxlZ2FjeS10cnVuaworMTU3OTQgZjdhZDdlNzkxNWU5OWY1NzNiNDkwOWZmYWE0YmRjOTI0NTJjYjZmNiBsZWdhY3ktdHJ1bmsKKzE1Nzk1IGYxZTQwYWJiZWRiM2UzMWI1NjkwMDlmY2I2MzQ0MGMxNDdiOGRkYjMgbGVnYWN5LXRydW5rCisxNTc5NiAxZjYxZWY2NDUzZDU0ZjEwNDg3YzcyMTRjNDU4OTJhOTRlMzYxZWRjIGxlZ2FjeS10cnVuaworMTU3OTcgYzA5YTU3MGViNmViNWZmNzQwYWMwZDEyNWJiMjMwMTE5NzFmNzVkNSBsZWdhY3ktdHJ1bmsKKzE1Nzk4IDM2MDMyMGQyZmU5NDRkNjQ4ODBkYTgxYWM4MjRkM2MzZWZkZjJiOGQgbGVnYWN5LXRydW5rCisxNTc5OSBlYWE0YzZmYWYzYzRiMjNiZTlhYTI2NzhiYTMyNDJhNjQzYjhhYWE3IGxlZ2FjeS10cnVuaworMTU4MDAgMWM4YzEwMWYyYmUxZTMwZGRhNWE3NTEyZTU5NGRkOWFhNmMzOGRkYSBsZWdhY3ktdHJ1bmsKKzE1ODAxIDEyYWMyYzI2N2I5MzJlNWMzNjhkMmFiMjRjMTBhNmM0ODIwY2M5OTkgbGVnYWN5LXRydW5rCisxNTgwMiA4NGMyYTRkMmRmOWY0ZmYwN2VjYTM4ZWU5MTQxM2JkZWI2ZjVhOWM0IGxlZ2FjeS10cnVuaworMTU4MDMgMWYyNDQxOTc4YWIxNDAwNjM2ZTBmZjQwY2FlNzM5ODE0ZWRhMDY4MSBsZWdhY3ktdHJ1bmsKKzE1ODA0IDdkZjc0NTJkMTNjZDQzMzkyNDM1MjFjMzgzYmIyZWJlYTNhYjYxZWIgbGVnYWN5LXRydW5rCisxNTgwNSAwZDMwOWY3ZjAyM2ZjNGFlYzhiYWIzOTE0ZDFhMzhkYjRjNzFhNDQ0IGxlZ2FjeS10cnVuaworMTU4MDYgNzIwNThkYzdkNTQ1Yjc3ZTFkMTdmNjc2NWI0YjEwNjE1NmY3ODdiMyBsZWdhY3ktdHJ1bmsKKzE1ODA3IDAxZDFlMTAxODQ5NTBmMmE0MzgxZTc1NmUwZmZiMTJhNTNlZDZkOGUgbGVnYWN5LXRydW5rCisxNTgwOCBmNzM0NThjNWMzNWQwMWRkOTFjNzc5NDViY2I5NDhjMzc3NmY2NWUzIGxlZ2FjeS10cnVuaworMTU4MDkgNzAwOTg0MTA5Y2I5OWZlYmU4YmFhYzI4ZGQ2ZTgwNTcxNTYyNTgyNiBsZWdhY3ktdHJ1bmsKKzE1ODEwIDBiZTRiN2I2NTBlMzNkZGEwODI4OWQ3ZjZlYWJkMmM1NDQ3NDdhZGEgbGVnYWN5LXRydW5rCisxNTgxMSBhMTk1OTYyZTM4OWNiMmEzY2ExMjZkNWRmMGM3ZjM0OTNjZDc1ZTE3IGxlZ2FjeS10cnVuaworMTU4MTIgZjEzMzg0MTA1NTI4OWM3YmM2ZmNiZjU1ZTRmOGQwNDc2MjNlMTMwYyBsZWdhY3ktdHJ1bmsKKzE1ODEzIDRkYmUxMzAyN2NiMzE5Y2UxYzg5NTM4M2NkNzkwMTk5ZTFhZTYxZWEgbGVnYWN5LXRydW5rCisxNTgxNCBiMDA3NDQyMzc4NzcwZGZlZjc4YzdkMGM2Yzc0OGZjZWNkODdlOWIwIGxlZ2FjeS10cnVuaworMTU4MTUgMjc3YmE4MjZjZmM5N2ZmZWQyZmEyNWRlY2MwMDc5N2M3ZjFlNzIxMiBsZWdhY3ktdHJ1bmsKKzE1ODE2IGNiODEwOWU3Mjg3NzFjZjc1ZTE3MmQxNmViMjJiNDc5ZmMzM2E1OGUgbGVnYWN5LXRydW5rCisxNTgxNyA4YTA3NDAyZTIzZGVhZmM0ZWVjYTA4NTU0OWQ2YzVhZWE5Njk1NTI4IGxlZ2FjeS10cnVuaworMTU4MTggMmIyMWNjMWJiNTY0OTEyYWI5NjRiNzUyZDE5YWJhMGFhNzYzYjcwMCBsZWdhY3ktdHJ1bmsKKzE1ODE5IDUzZjQwMjJjMGNkNTg3Yzk3YWQ0N2ExNTgwM2E3MzFiNjY1MzJlMTcgbGVnYWN5LXRydW5rCisxNTgyMCBmNDAyMDU3NTYxYjNhMWM2YzQ1NzBmYzI3NjlhNDJiNjkyNmRlZDk0IGxlZ2FjeS10cnVuaworMTU4MjEgNGI0ODIxYmY1M2RjZjMxYjBlN2JkN2MzNGM1YmI4NDM2YmVlMTY5MyBsZWdhY3ktdHJ1bmsKKzE1ODIyIDliMmU3MGI1NWM3ZjE1ZjM0ZTcwMGI0ZjM2N2MxODE3MTgzNzEyMzMgbGVnYWN5LXRydW5rCisxNTgyMyBjYmRiMDU1ZTc5ZDkyNTAyNDcyZDZjMDIxODJlOTdjNjE5Y2QzODk0IGxlZ2FjeS10cnVuaworMTU4MjQgZWIyNDM0NDNiODg0MGU4MmZhYjdkMzIzODBjNDczNzFhZjJiMGNjYyBsZWdhY3ktdHJ1bmsKKzE1ODI1IGJkOGRiNzE0MjJmNjA4OWY2YmYwNjEwYzJkMjIxMzlkMjgxODE0MzEgbGVnYWN5LXRydW5rCisxNTgyNiA3YjI0YzgxOGUyY2YyZDMxOTdjOWQzZjk4YWU4MGJkN2RlMzY0NjRjIGxlZ2FjeS10cnVuaworMTU4MjcgNWJhYmMwYWRkNjRmMjc5YmZmMmYwMzZhYzc0MmE1MWMzODFiNGRiNCBsZWdhY3ktdHJ1bmsKKzE1ODI4IGE2NzliZGI0M2ZhZGM5MWVkNGUyZDc1OTE5ODEyYzE1ZGFiODJkMTAgbGVnYWN5LXRydW5rCisxNTgyOSA3MDUxMzI2NjdmN2JhMmNkN2JjNzIzODcyMjNiYzY4NDE0NjhjNThiIGxlZ2FjeS10cnVuaworMTU4MzAgYjc2ZGY2ODA5OWE1Zjc5NjMxYmY2ZDhkZWZhMWM1YjBmNGYxNmE5ZCBsZWdhY3ktdHJ1bmsKKzE1ODMxIDczOTJlNzFmNmNjZTAyNzJiYTcxMzkzMWJkOTAxMzY1ZjQ5OWIwODUgbGVnYWN5LXRydW5rCisxNTgzMiBjODc4ZGM2M2Q3YWVmYWJjYWZhNjZlNWE4NDA1ODJhNDljNzE4OGYzIGxlZ2FjeS10cnVuaworMTU4MzMgNmFiOGUxYmIxNjdjZDMzNzJmOGQ1ZWVjYmU5ZTZhYzUwYTdkMmIyMiBsZWdhY3ktdHJ1bmsKKzE1ODM0IGVmM2Q0OThhYTMzYzJlZTQ3MjI2ZjBkOTczMzcxMGM2YWM1Mjc2MTAgbGVnYWN5LXRydW5rCisxNTgzNSA0ZmYzY2UzZjNjYzYyMWU0YzU5MmIzNmI1ZmI5NmY3M2RhNTE0MzJkIGxlZ2FjeS10cnVuaworMTU4MzYgMmNmOTg3NGI2MjExNGZmZTg0NDc2MzVjMjU2OTc2MWM1ZjQ0YTliZiBsZWdhY3ktdHJ1bmsKKzE1ODM3IDVhNzA4MzY5MDg4NGI3Y2MxNTE0MDA4NDc0YjJiNzZkNDgwMTRmZTAgbGVnYWN5LXRydW5rCisxNTgzOCAwM2IxY2M0N2E4NmQwMTQyMjczMzYzZTE0MDkyODRmZmE0YjRmNzRlIGxlZ2FjeS10cnVuaworMTU4MzkgMWQwNDA3OTYwOTUzYTZkODAzMjRhZTM2Yjk5ZTIzMTBjOTljOTE4OCBsZWdhY3ktdHJ1bmsKKzE1ODQwIDE4NTAwM2QwOWU3NjZjODNiMmJmNjEyYmJkMTU5NzdjMzBmYThlZmEgbGVnYWN5LXRydW5rCisxNTg0MSA4N2I0NjZiNzAyZDYwODNkYmZiNDc5ODI0YmM5OTc0NWY4ZDg4NTZiIGxlZ2FjeS10cnVuaworMTU4NDIgMGFjZWMyMTFhMjA5MGZjODg0MzFhMzAwY2E1NzhlNzlhMTgwN2U5YiBsZWdhY3ktdHJ1bmsKKzE1ODQzIDZiMmM2OTYzYzQwYjY4ZjExZThiMzJkYzA1Nzg0Y2Q1M2Q3Yjc4OWMgbGVnYWN5LXRydW5rCisxNTg0NCBlMGM5MDMxMTJlNGVkNGY0Y2EwODcwMzFiMTVhY2UyMDExMDlhMjFhIGxlZ2FjeS10cnVuaworMTU4NDUgMDgxNzRiZjIzNzAyZmMwODc0OGNlMTFiOWYxNDlhZWQ5OTM0YjlmZiBsZWdhY3ktdHJ1bmsKKzE1ODQ2IDkyNDY4ZDQzYTIzZjAzNDg2NGUyYjMzNzU4N2Q4NjIwMzNiNjJhMmQgbGVnYWN5LXRydW5rCisxNTg0NyBkZTRlMzA5NjJmYWJhMDA2NTk4OWZlNTQ3NDQxNjllNjQwZWI2OGE3IGxlZ2FjeS10cnVuaworMTU4NDggMGYyMTZhNTRkMzRiNDkwM2UzZWU0YmNhNDMwNDk4OGFmYTYwMDRmZCBsZWdhY3ktdHJ1bmsKKzE1ODQ5IGE4ODM0ODhiOWRjYmYyOGFjZTI3NTBhOGYxMjBhNmEzYTFhN2EwZDMgbGVnYWN5LXRydW5rCisxNTg1MCBiZjFlYmU4Njk4NzgxY2Y2NTgwMjNhZmZjYjVjZTIzMjkyZGQ4Njc4IGxlZ2FjeS10cnVuaworMTU4NTEgZDA2MDEyOTY3ZWFhMjJlYzgyZjkzZGMzMTJiYTU1NmZkNmNkZmQzZiBsZWdhY3ktdHJ1bmsKKzE1ODUyIGI5YWIzYjJhY2M4Y2U0MGY3MDZmZWQxYThjMTY4MDU4MjNmNTI4ZDUgbGVnYWN5LXRydW5rCisxNTg1MyA1NTJmYjQzYWU4MjM3NzY0ZGJjMjkyZWFlYzM0ODYyNzU4ZDE2YWZiIGxlZ2FjeS10cnVuaworMTU4NTQgY2JlMDJiOGFlZTA3ODkwZmY4NzQ5Yjg1MTIwY2U4ZWM3ZDVhOTVkNyBsZWdhY3ktdHJ1bmsKKzE1ODU1IDA3YTRkMTYzN2UwNmRmOTNiMDA4NjQ5NTFlNzdiODU1MGJmOGVkYjggbGVnYWN5LXRydW5rCisxNTg1NiAyMjMwOWU5NTdmYTczZWUyZDc1OTE0MmE1ZDBkOTQ1NDczOGM1N2YyIGxlZ2FjeS10cnVuaworMTU4NTcgOGM4ZGU1YjczNmRjMjFmMGU0ZDQyNjAyZjQ3ZTJlNGExZjE5Y2Q1YSBsZWdhY3ktdHJ1bmsKKzE1ODU4IGQ4NDlhMGQyMjkyN2FkMzYyNTNjYzEwNmYyMDZiOTFlNmZlYjIxNWEgbGVnYWN5LXRydW5rCisxNTg1OSA3YmU1NDgyNDI2ZDFlZmM2MjFiZWIzMTI2NWFjZDYyYTg3MThhZDYzIGxlZ2FjeS10cnVuaworMTU4NjAgOTljZWUwYzg3ZjZhMDRmMDkxYzRjMDM4YzFmMTc0NTUxOTcyMDQ0YiBsZWdhY3ktdHJ1bmsKKzE1ODYxIDM2NTg0NGU3NTU4NjY5Mzk5ZWQwODFmYjZmZjNhYzMxMGQyZmE3YTggbGVnYWN5LXRydW5rCisxNTg2MiAzY2VhNzNhMmJiZDhjMTI2NjcwNDJlMjg2MjQ4MDk2Mjg5MzEyZDM3IGxlZ2FjeS10cnVuaworMTU4NjMgNDU5ZDE5N2FkYjA4ZmM2N2Q5MjAyODMzOTZlNDg2ZWI2Y2EzZjkyZiBsZWdhY3ktdHJ1bmsKKzE1ODY0IGU4MzllOGU4ZDNlOWMwYTEwNmQwZmYzZjBjODA2ZTc5OGIxOTQ1ZTQgbGVnYWN5LXRydW5rCisxNTg2NSA3OTdhY2YzZmZkMjY2NTczMWMxOGMxODkzNjUwYzFkNzFmZjI5NzVhIGxlZ2FjeS10cnVuaworMTU4NjYgZmQ4NDY3ZDEzNzVkMjA0YTU5OGRmZDQ5NmM0YTkyMzZkZmViYWFhNCBsZWdhY3ktdHJ1bmsKKzE1ODY3IGE2NzI1YWNkZjMzYjFiOThmNDBhOTMyNjA2NWUzMGFmZTc3N2Q3OGUgbGVnYWN5LXRydW5rCisxNTg2OCBmNjFiNGE5OGI5NzI5MmNkNmQ5NzM3NTBjZTZlNzE5ZmNhYmNjYmNmIGxlZ2FjeS10cnVuaworMTU4NjkgNjhlNTdjNWQxYmVjMDcyODc3YmUzMmIwZWM1MTI1OWQ1ZDM5NzM5NSBsZWdhY3ktdHJ1bmsKKzE1ODcwIGMzYTAxYjY0MmM5NzE4OWFkYTQzMmYwZTNlNmZjMGY0YjVhNzdjY2UgbGVnYWN5LXRydW5rCisxNTg3MSAzNDZmMmExYzAyYTBhMzRhMzcwZGFjZGU1MGNmNDcwZjNhZTVjNzQ2IGxlZ2FjeS10cnVuaworMTU4NzIgNTJkNWZiNDcxZTE3MjBmMDVmMWVjMTcwZjU1OTUxNWMyMTFhZmQ3ZCBsZWdhY3ktdHJ1bmsKKzE1ODczIGY4YmM3ZjYyZGMyM2FmZGNlNjA5ZDc3ZDRjMzRiN2VhNGVkNmNmYTIgbGVnYWN5LXRydW5rCisxNTg3NCA1YmQxMjczM2E2NGFjNDhiMjNiYTBmZmQ0NDBiMDdmNjkwNmY2MGEyIGxlZ2FjeS10cnVuaworMTU4NzUgOTBlYjU4MjI0ZTQzMTcyMzdmMmVjYzA5YmYyNGUxNGM1ZTgwMGJjZSBsZWdhY3ktdHJ1bmsKKzE1ODc2IDgxOTNlMDQ1Nzg3YmZmMDgxNmUyNDQ2ZGEzZGEyNTZjNWExYTIxNzAgbGVnYWN5LXRydW5rCisxNTg3NyA4OTQ2MTNiNGViMDc1YTg1MGZlMjUzNTA3ZGI2M2UwMmFlYTI3NzM1IGxlZ2FjeS10cnVuaworMTU4NzggMjZlYzFiMzBlZmE5M2ZkZjVkNGIzM2U4YjA2M2Y0NWIxYzk2OGZlZiBsZWdhY3ktdHJ1bmsKKzE1ODc5IDdmZjQwZGEwOGMyYTY0NjUwZWUzMjcyOGNlMmUwMGNlNGFjZDdmYmEgbGVnYWN5LXRydW5rCisxNTg4MCBmZDEyY2Q5OTYxNTQ0NDRmYmMxMTgwNDBhMzhhZmRiZTNiYWU1OWU1IGxlZ2FjeS10cnVuaworMTU4ODEgODk2YjM1OWQxYzdkNmQyNDIxZTM5ZmU0NGE1M2I3N2JmMTk0M2I0MyBsZWdhY3ktdHJ1bmsKKzE1ODgyIGZhZWZmZjQzZTU4YTk5YjJlNTMzOWE1NjM0MzM4YzY3YjNhMGQ4OTMgbGVnYWN5LXRydW5rCisxNTg4MyA1M2QwMGU3YzU4NDg0MzY3YjBiYzMxY2YwMTQ3MDJjYTk3M2FhMmQ3IGxlZ2FjeS10cnVuaworMTU4ODQgNDYyMTc1ODI3YTc0ZWViZjkwODA3NjMxN2M2YzBmYWI5M2U5ZDZlNiBsZWdhY3ktdHJ1bmsKKzE1ODg1IDUwMjFkYjY3NDAxOTMxZjZjZTQ5YzM4MGZlMDU1Y2U0ZmY5MGY4MDEgbGVnYWN5LXRydW5rCisxNTg4NiA0MjU1OGYxYmJmYzRkYzcxOTM1YTVhODJjZmI4ZWM5ZjdiMjc2YWQxIGxlZ2FjeS10cnVuaworMTU4ODcgNzhhZDRmNjRhZGM1ZjQxODI1ZWVkYjFhYzY0YWZjZjkzN2NjYWFiZSBsZWdhY3ktdHJ1bmsKKzE1ODg4IDA3MDQwZDU2MWYwOTEyNDM4ZjkwNzU3M2MyZDRhODU4YjIxOTk4MDcgbGVnYWN5LXRydW5rCisxNTg4OSBjYjkyOGQ5MjZmMjczZGI5MTRiNzhkNDk0YWFlZGM2YzZiMTVjNGZkIGxlZ2FjeS10cnVuaworMTU4OTAgZTA0MmM0YzM4NjA1NmE4NDM1YTgyYjU3OTFhMmQ2MTZlMTdlNGE0YiBsZWdhY3ktdHJ1bmsKKzE1ODkxIDdhNzg3MTUzNTcyNzFlN2Y3ZjgyNTk1Y2ZkMTU4YmExMWUwOTE4MzQgbGVnYWN5LXRydW5rCisxNTg5MiAwNWNjNDVkNTdhN2ZhMTYwYjNiYmVhMDc4MDE2YTQ2ZTdiNWU4ZGMyIGxlZ2FjeS10cnVuaworMTU4OTMgZWFjYTllMjVhMDQ4OTYwN2RkNTFhMWIyNWExN2Q4ZGFmZjJiN2M4MiBsZWdhY3ktdHJ1bmsKKzE1ODk0IDE1NjUxNDkwYWYzNDJmMDYyNTQ0OGIyM2IzN2NmYWQ3ODU3YTQzMTAgbGVnYWN5LXRydW5rCisxNTg5NSBmODI2NTI1NGQ4YTlmY2M1NzE4NzkyMTQxYmJjODZhYmFjOGE3MTM4IGxlZ2FjeS10cnVuaworMTU4OTYgYjMxZmZmNTk2MjJhM2RmMzdjYmM2ZDhkMTJhMzJlOGM3OTk4MTNhMiBsZWdhY3ktdHJ1bmsKKzE1ODk3IGI2ZWQ4ZmEyNjc1Yzc3ZDQxYjJjZTE2MTIyNGM2Zjg2N2RhYmU3ZWEgbGVnYWN5LXRydW5rCisxNTg5OCA3MmUzY2RiMzJhNmM2MTQ0N2E2MWRmNTYzZTNjNWYzN2Y2ZmEzM2NiIGxlZ2FjeS10cnVuaworMTU4OTkgNDA0MTU2MDkyZjc4MWI4OTdmNGFmNjU5Y2M5YjEwZTQ0ZWY1ZDRjMyBsZWdhY3ktdHJ1bmsKKzE1OTAwIGMyMjA3ZDZjMDNhODE4ZWY1M2Y1NWJkOTFjNjFjYTAwNDEyY2NkNDYgbGVnYWN5LXRydW5rCisxNTkwMSA3YzZiMTJjZWNlZjI2ZTMzOGU5YmUxNjkyNmFmNWEyZjI2NTM5MmFkIGxlZ2FjeS10cnVuaworMTU5MDIgY2NhODQ3NDVkYTNlMDBjYmY4M2E0ZjZjZTRkZWJiNWMzYjQ4YjFhNCBsZWdhY3ktdHJ1bmsKKzE1OTAzIGY4NmVhNWE2OWM1ZWFkYjgwNDBmYzE4ZjY3ZjUyOTg0MDg4MmMzNzggbGVnYWN5LXRydW5rCisxNTkwNCBmNWYwZjAwZjkyMmEzNmFhYWM4ZmEwNjkyYmZmNzhmMmM3ZWIyNjZhIGxlZ2FjeS10cnVuaworMTU5MDUgZmZhNGI0YjQzNzAzMWQzNGYwMTAwYWVmYjYzZTNkZmJkYTFhZGM2ZSBsZWdhY3ktdHJ1bmsKKzE1OTA2IDBhMTQ2M2JhMjkzNDg3ZDZlYTU2YzA4YjFiOWI2OWI2OWU3M2NmMTcgbGVnYWN5LXRydW5rCisxNTkwNyA3OTViMzI3YTk1ZmViZGFiYmZjOWJkZGFjMDIwMWE5MTNhZGFiYWY4IGxlZ2FjeS10cnVuaworMTU5MDggMmYzZTQxODY1ZDNkM2JmYmJjM2Y5YWIyZjkwMWUyNjYxMGFkOTNmYyBsZWdhY3ktdHJ1bmsKKzE1OTA5IDYwN2U1Mjg0MWRmMjc4ZmNlMmE0MTA3OTQxZWYyMWI1NjRlZDQ0ZjUgbGVnYWN5LXRydW5rCisxNTkxMCA2N2U3NzQ2NjE5ZGE3ZWQ3Y2I3NWNhYjYwMmM5NGFhNzNkMjVhODMyIGxlZ2FjeS10cnVuaworMTU5MTEgZjFmNGQ4MjJlNzYxZTdhY2VhOWZjZDI0NTI1NjUwOWI3OTFjY2IyMCBsZWdhY3ktdHJ1bmsKKzE1OTEyIDNmODA3M2M2MzAzM2MxNjNhNzk0MGU2M2I3OTc1ZjcyMmQ2MjNkYjEgbGVnYWN5LXRydW5rCisxNTkxMyAyYjcyYWFiYTc4OTUxMTE1NjRlYTczYWIxYTBkOGRlNjFhZjIzNmRlIGxlZ2FjeS10cnVuaworMTU5MTQgMzI4MTZjZTYwYTQ5YjA5YWRlOTc1OTE3MjllMjgwMzMxNmZmYzM3MiBsZWdhY3ktdHJ1bmsKKzE1OTE1IDM1N2I3MWM2OTMzYjg1MTNkMjViZjkxZWY5NGE3NTMwNDZmYzM4ZjcgbGVnYWN5LXRydW5rCisxNTkxNiA5OTE5ZDY1ZWRjNzZjYWZmYmQ2ZmMyODAwMGI2OGJmMjdmZTEwZWNhIGxlZ2FjeS10cnVuaworMTU5MTcgYzMzOWFjN2I2ZDRmMWUxMTJiOGJmZmU2MWY3YzUyZmI0Zjk4MWU2NSBsZWdhY3ktdHJ1bmsKKzE1OTE4IGZhM2RjMjFkMGUwODgwZTVjNDJkMGQ5NjI4NDE4NDg2MjE5NjJjZmMgbGVnYWN5LXRydW5rCisxNTkxOSAxYTQyYTlkMTAzNTdlMTQ2YWZhZGRlN2I0MjEwYTY3MGM4MDdlMTEwIGxlZ2FjeS10cnVuaworMTU5MjAgNTMzNTVlZDYxMjg4OTI4MTg3Yzg1Y2I3ZTYxYzc0ZjJjMmNjMGM1NSBsZWdhY3ktdHJ1bmsKKzE1OTIxIDEzOWVhZjJmOTZhYjY3MjFlMzJhMThiYzI0ZGViZDc2MWY1MDRhMDUgbGVnYWN5LXRydW5rCisxNTkyMiBjY2UyYzdhMzhiZDU2ZGUxMjY2MzQ5NzgxMWM5ZjU2NDFkYTZlY2Q0IGxlZ2FjeS10cnVuaworMTU5MjMgYzM2MDgwNmMwNmM3NjMyNjFhYzVkZGQ4MjQxNmI0ZTg4YjQzNTg5OCBsZWdhY3ktdHJ1bmsKKzE1OTI0IGEwOWU4NjM1NTM0ZGUxMmI0MmUxNzkyNjgyYTEyOWY0YTVkMzY1OWQgbGVnYWN5LXRydW5rCisxNTkyNSA2ZmFhNDExYzYxZmI0YWVkZjMxMDJhMjIzNTA1YmY5ZmViYzdkMGM4IGxlZ2FjeS10cnVuaworMTU5MjYgYzliMWYxOTg2YzQwMjk0OGQ3MjI3ZDhiM2M4MmU0YWMzMWEwNDcyZSBsZWdhY3ktdHJ1bmsKKzE1OTI3IDAyM2EyMDE4Yjk2ZGViYTg0Zjk3Nzc3MjAyMWVkMTUwM2NiMjk3MDEgbGVnYWN5LXRydW5rCisxNTkyOCBmNzI5NDI0NmQwNGY4ZDRjNTZkNjZhMTAzMWNhOTY0OGUzNDA1Y2IwIGxlZ2FjeS10cnVuaworMTU5MjkgNWY2ZjA4ODY5MDVjZDMzMTg1MDBlZWViMTYxNTA0MjExYjAyMDg0MSBsZWdhY3ktdHJ1bmsKKzE1OTMwIGI3OGI5OTZlOGViYzJiMDYzMjFjZmFiZjE5NzNjNmE1ZTlmNDkxMDAgbGVnYWN5LXRydW5rCisxNTkzMSAyMDgzNDZlOTI0Y2IwMjkwYWQ0MDcxNzk1YjI2NDE3MDU2YWVhNTEwIGxlZ2FjeS10cnVuaworMTU5MzIgYzE3ZmQyY2E2NjU5YzAxNDhhOGI2OGI1ZWViNGRhZTU0MjMyMDIzMiBsZWdhY3ktdHJ1bmsKKzE1OTMzIDA1ZTQ1YzVmMmRlNWI3Y2VmZDY4MGQ4ZjE2YjdkMDQ3NDYyN2E2ZmIgbGVnYWN5LXRydW5rCisxNTkzNCAwMDIxZjNjMGIyMzgwMzIzOGVjYzU0MjI3YTljOTllNTBiZTljOTE2IGxlZ2FjeS10cnVuaworMTU5MzUgOWQ5ZTVhN2MxMmRhYmQzOTE5OGQ3NzRiNGM4MzBmMzNkMWRkNWQ3MiBsZWdhY3ktdHJ1bmsKKzE1OTM3IGQzN2MwMjdlM2ZhZTk3YmQ4YzUwYjY5NmU4OTA3ZjVmYTFiNTA2NGMgbGVnYWN5LXRydW5rCisxNTkzOCAyOGE4YmI3OTRmMTlkNThjODIyMmFiYjk1NzIwZjUzMDRhNDkzZmJlIGxlZ2FjeS10cnVuaworMTU5MzkgN2E5NmVjMDEwMzMzZGM4MjYxMjE5Nzg3ZDI4OWJlNDQyYWM3YWE0MiBsZWdhY3ktdHJ1bmsKKzE1OTQwIGQzNzM3NDU1MmExNWY5YjZkYzJmOGM0ZDA3NWM3ZTFiNGFkZjY0MmEgbGVnYWN5LXRydW5rCisxNTk0MSA5MTVkOTg1OTE4ZTIxZDNhOWNkYmQ3ZDczY2NmZDk3ZjYxNDAzNDI2IGxlZ2FjeS10cnVuaworMTU5NDIgZWYxMzI0MmRlNDMzZTc0ZDBjMjc3ZGUyOTg0ZWE1OTZhZTM3NjY0NCBsZWdhY3ktdHJ1bmsKKzE1OTQzIDZmNDY2OTgxNDg4NGEzMTA2OGViMDg1M2QxMmY5NTQ0OWFiODMzZTQgbGVnYWN5LXRydW5rCisxNTk0NCAxZTMwMmQ5OTZkNThkOGNiNGE5OTAxYjM5OTlkMzJiMGM5YzVmMmU1IGxlZ2FjeS10cnVuaworMTU5NDUgNTRiZmZkZGRjMGVmMDgzMTVkNjUwZTlhZjJlYzk4NDMwNDU0ZWFkZSBsZWdhY3ktdHJ1bmsKKzE1OTQ2IGVmZWNiYmY3Mjc2NTNkNzdhNjJhYzgwNzZjOTJhNjdjYWRhYWI0NmQgbGVnYWN5LXRydW5rCisxNTk0NyBlOWMzNGNjYTBjOTY4NjI0MzU1MmU2ZDdjMGFmNmY0NDc5ODM4ODgzIGxlZ2FjeS10cnVuaworMTU5NDggYzQ1YmMyNThmODMzYzEyOTBhNmUwOTY1ZWJiM2FjZmUyZWY4NDQ4MiBsZWdhY3ktdHJ1bmsKKzE1OTQ5IDU5Mjk0ZGQ0YmZkZGYxZTE0MjgzNzE2OGJkYjY3NjA2ZmE4ZTJlZjcgbGVnYWN5LXRydW5rCisxNTk1MCA5MmJhOTI4YzA5YjhiOGNjMWE3NjIxMTM1NDRiN2RkMjExMWU5MjE2IGxlZ2FjeS10cnVuaworMTU5NTEgN2UyNDViYzU5OGI3YmMzNzE4M2E1NWE2OWUzMzUxZGIyYzA1MDE5OSBsZWdhY3ktdHJ1bmsKKzE1OTUyIGM3YmU4NDc4MjZiMTcyNDEwZjJkMGU2YTkxZmJjNDk2NGRhYzIwYjYgbGVnYWN5LXRydW5rCisxNTk1MyA3ZTcxOTc1ZWE1ZjA5MGZmZmMxNDNlOTE3N2NmNDk0ZGY1NGI5NDI2IGxlZ2FjeS10cnVuaworMTU5NTQgMzEyOGMzY2QxOGU4NmNlYTQ1ZjIyMDVmZjE3NDJjYzIzYjMxYmZkYyBsZWdhY3ktdHJ1bmsKKzE1OTU1IDU0MWRiNWY2MjU5ZTk2YWMzNGM3M2NkOWIwYjc5Nzk1ZDQyOTM3ODAgbGVnYWN5LXRydW5rCisxNTk1NiA3NTNhZjYyYWI4YTE5YmY5YWViMzM2OGUyNDRhYmIyNTE3NWExMTJlIGxlZ2FjeS10cnVuaworMTU5NTcgOTYxNjdhZjkwZmEwMzExNGYxOThlMzJkY2I3NmViMDE0MWEyZWZmNCBsZWdhY3ktdHJ1bmsKKzE1OTU4IDE4OTIwZWFhMTIyNjRhN2FmYThkNzRhYmI5MzQwYjViZGRmZjFmMDEgbGVnYWN5LXRydW5rCisxNTk1OSBlZGUxOGZkNWVkMTVhZThkNmZlZmFmNTJhM2Y0YTYzMDE3MjE3MWYxIGxlZ2FjeS10cnVuaworMTU5NjAgNGRlZWVkNThiZjc2NGNkNTY3YjQ4NWRjY2RhYzllNmMwZGVlMjg2ZCBsZWdhY3ktdHJ1bmsKKzE1OTYxIGM1Mjc5YzBmNzE2ZjA1YjI3ZWMwZmMwMmQ2ZmFiOGYzODI3MzE5NzUgbGVnYWN5LXRydW5rCisxNTk2MiBlZTFhMzRlNWVkYjEyNzVjY2IzZjU3NTg3NThhZmZmNjczNzFlZjYwIGxlZ2FjeS10cnVuaworMTU5NjMgYTA5M2ZhZDkyY2NmODk1MDQ4OGRjZDZkODgwNzE4OWNmZTY2OTgxMCBsZWdhY3ktdHJ1bmsKKzE1OTY0IDc5YzRhMDU0MjU3MjQ0MmY0ZjRkZmQ4M2YyODRhODg4NDVjZGIyNWUgbGVnYWN5LXRydW5rCisxNTk2NSBhNjI1Y2UyZmJmYmQ4NTUyYWFhMzRlNzljYTk1YmVmYWU4NDEwYjllIGxlZ2FjeS10cnVuaworMTU5NjYgNWE0ZGY5ZDljN2JmNTZlM2I0N2Y2ZGJhMmVmNTBiYzI5NTJhYzFhNCBsZWdhY3ktdHJ1bmsKKzE1OTY3IGI5YTU2ZTVlM2QyMjdmZDlkMDFkNzk2Y2Q1Y2RlNzZmMGNlYjBlNzEgbGVnYWN5LXRydW5rCisxNTk2OCBkNjY0MzUzMzdlMWMyYjU1M2I0Y2NiODNhYWNhMDk3OTRjNzFkYmNhIGxlZ2FjeS10cnVuaworMTU5NjkgZWE0YmJhYmM3NDk3MzA5YmZlNTBjMmJhZGE5MTVlMjkyM2I3ODc1ZiBsZWdhY3ktdHJ1bmsKKzE1OTcwIDlkMjA2ODczYzViZDRiMWZhOGU4OWRmZjc1ZGE0YjFiOTU2NzM1M2YgbGVnYWN5LXRydW5rCisxNTk3MSBiMTFlMGE4OThkZTA5NTViZDRjZWZhZGU4NmFjODUzZmYyNTA2MjlmIGxlZ2FjeS10cnVuaworMTU5NzIgZmYyNDNiMGYxNmVlYjg4NTU5MjdjMTI2MDk1YjU4NWY5YjVjOGE2MCBsZWdhY3ktdHJ1bmsKKzE1OTczIDgyN2I1NzZlMjY1Yjk2MDhkOTI1ZjMzM2MwYzRhOGYxMDgxODA5NzMgbGVnYWN5LXRydW5rCisxNTk3NCBmMjlmYmE1Yzk4YmRmN2IwODMzMjYzMGUwNTViZDM4MzU5MTJkNmRhIGxlZ2FjeS10cnVuaworMTU5NzUgYzI5MDllYzdkNGNkY2EwMjUzODVlYTJiYzZlZWM4OWIwODJjZTczOCBsZWdhY3ktdHJ1bmsKKzE1OTc2IDU1NWIyZTIyZWU4OTgyZGEyZGE2ZjBkYjlmYWJhNDdlZDE2MzRhOWIgbGVnYWN5LXRydW5rCisxNTk3NyAwOTc2ODRiOTNjYTljMTA0OWE4MjZmMjc2N2Y1Yjc2ZDU3ZmUxYTc5IGxlZ2FjeS10cnVuaworMTU5NzggNjNlYmI2OTA2ODc3NDlkODIwNGVhYTFiZTE5OGIyOTJmNDQzMzM2MyBsZWdhY3ktdHJ1bmsKKzE1OTc5IGUyYWVlNjE5MGIxOTg1MDAzZTAyYjhiNmZiMzJhYmFhOTUyYTc3OGQgbGVnYWN5LXRydW5rCisxNTk4MCA3OWRjMWVmNWMyMmQxOTY5MTg5MjQ3NmNjNzE5NjA2NWUyYWE4OTk1IGxlZ2FjeS10cnVuaworMTU5ODEgYTkyZjQzZDIwZWNiMTVmODM3OGI1MmFmOWYxYzRhNmQ1MmU2ZWE0NCBsZWdhY3ktdHJ1bmsKKzE1OTgyIDA0MmI5NmNkZjdkNzk0NTAwODIwYzcwZGY0MDc3Zjg1MWUzYWZiZjIgbGVnYWN5LXRydW5rCisxNTk4MyBkN2I0OGM4NDkxODk1MzRiNTNmNGEzNDNkNDcwOTk4YTY0YjZiMTA5IGxlZ2FjeS10cnVuaworMTU5ODQgNWRkMzgxYWViMjNiMjdhODhhMjQ0Y2I0Y2ZkNGU0NDc5NTUyMjc0MyBsZWdhY3ktdHJ1bmsKKzE1OTg1IDA1ZDVkM2Y5YTE4Y2JmYWZkYjgwNzU0NzcyODQyYzIxZTc4OWRmZDAgbGVnYWN5LXRydW5rCisxNTk4NiAxY2Y1NDRiYTIzOWU1NjE2NThkZTRiNTM2NDBlM2EzMTI5MGJmMDM2IGxlZ2FjeS10cnVuaworMTU5ODcgMmViZmZmMTM5MzZjMjRjMGQxYmZmMWRjNWUxNmUwYjgxMzE0ZmJiMSBsZWdhY3ktdHJ1bmsKKzE1OTg4IDEyNDM3ZGViMDY4MGFiYWZjMTE3NDdkYWUxNmE5MDA4OTNjYzFhNzAgbGVnYWN5LXRydW5rCisxNTk4OSBjMmRmNWQyODAzNGRhNTc3Yjg5YjViZWQwYzgyZDIwYTI4OTJiYzZlIGxlZ2FjeS10cnVuaworMTU5OTAgZjE5NWM5OTgxZmExYTlhNjUwZWJkM2I1MDYxYmM1MWFjZWYyZWIwMiBsZWdhY3ktdHJ1bmsKKzE1OTkxIDM0NGFiMzQ4ZjFlOWM5ZDhiMDA3MzMyZjg2MDhjMGRlN2EzNThmODQgbGVnYWN5LXRydW5rCisxNTk5MiA3MDY2YmUyZWRjM2I2OWQ1ZjY5MzFlNTFmNDE5N2QxOGNjMWYzZTQ4IGxlZ2FjeS10cnVuaworMTU5OTMgMjA5ZWI0NGNkYmY3ZTExNDY2MjI1OGEyNTRjODhjNTgxM2QzNjJiNCBsZWdhY3ktdHJ1bmsKKzE1OTk0IDY4ZGQ0MDMwNzE3MjZlMWY5OWFjNDlhNTY5ZTY5MTU3NzdjMjY0MTkgbGVnYWN5LXRydW5rCisxNTk5NSA4NmM5ZjY5MWYzNzkwYTM5MGJiNzIzOTBkMDI0M2M5ODc4NGE1ZmU0IGxlZ2FjeS10cnVuaworMTU5OTYgNzlmOGY2Yjk2M2MyNjlhMjQ5ZjQ2ODA5MDRiNWVhMmMxYjA0NWZlNiBsZWdhY3ktdHJ1bmsKKzE1OTk3IDc4YmZjNzQwYjYxY2QxZDljZTFkYjZlZjRhM2MwMDY4NTRmZTY1NTAgbGVnYWN5LXRydW5rCisxNTk5OCAzMWY5ZmE0MmRmNjAwYWFjZjVlZTA4Mzc1YmFiNGM2ZDlmZTExMGUyIGxlZ2FjeS10cnVuaworMTU5OTkgYWY3MjgwNWU5OTQyYWQyZmRmNWFmYjkyNWM5ZDI1M2I1M2FjMjkxMSBsZWdhY3ktdHJ1bmsKKzE2MDAwIDA0OTM5NWIwMjYwMmEzNGQxMGI0NWE2Mjg4OTAxZDFmOWQ0MTUxZDMgbGVnYWN5LXRydW5rCisxNjAwMSA2NTAxNTQyOTJlZTExNzNhNjMwNGUyYjY2ZjExYTQ4Yzg3MTE3ZGRhIGxlZ2FjeS10cnVuaworMTYwMDIgNTNiZTI4NWNmZDJjYWM2YmI5YjY4NmRhNDQzNzJiOWEwMDQwM2I5NCBsZWdhY3ktdHJ1bmsKKzE2MDAzIDYxMDRiNjEyMTVlNjdjYTYzZDZiODUzNjIyMGU0N2Q1ZWM2ZjVhN2IgbGVnYWN5LXRydW5rCisxNjAwNCA1NDY2MjcwZGJjOTI2OGEwY2ExYTk3ZGRmYjkyNTdlMzlkOTBjMWQ3IGxlZ2FjeS10cnVuaworMTYwMDUgMWU0NmMyM2IxZGFkYjc0ZTZlYzMzN2UyNjg5YjBmMjJjOTAyYzE4NyBsZWdhY3ktdHJ1bmsKKzE2MDA2IGE3OTJiNzRjYzllOGMzNTI2N2I5OWFiZDhlOTk5NzM1NzZiZDRhNTggbGVnYWN5LXRydW5rCisxNjAwNyAwOWQ5MTcyZmIxZDM0Y2Q3MjAwZDA2NWE3YTY5NjFhNzA1YjU3NmIzIGxlZ2FjeS10cnVuaworMTYwMDggNTdkNmEzMWVlNDBlMDE0OWQxOTg3OTkzNjk2ODc1M2RhNjFmNWZjNiBsZWdhY3ktdHJ1bmsKKzE2MDA5IDU4OTIwMmM2NDg4NzkxZDBlN2M3MzI3YzhhYzQ5YWIwOTIzZDAwMDIgbGVnYWN5LXRydW5rCisxNjAxMCA4ZWRlNGIwODAzZmI3OWZmYzM3Y2IyZDA3NmRiMTc3NTg2NmFiMWMyIGxlZ2FjeS10cnVuaworMTYwMTEgYWM0ZDNjZmJjMWM5ZDE4NDE5NGNiOWMyZTU5YzNhZmQxMjc3M2RkYiBsZWdhY3ktdHJ1bmsKKzE2MDEyIDg4NjQwZWNmNTUwNjFmMzI1Y2VmOGIxMjIyYmE0ZjhhOTcxMGRiZDYgbGVnYWN5LXRydW5rCisxNjAxMyA4NjE3N2ZiMGVkZDgzNWNjYzRiODhkNzZkMTJjYzg0NzZhMTA5ZWJmIGxlZ2FjeS10cnVuaworMTYwMTQgMzEwZDdjYmJhMzI5MjM5YzliYzY3YTJiNzM3OTc1MWQwYzA5Mjk1OCBsZWdhY3ktdHJ1bmsKKzE2MDE1IGE2YTY0ZTlhYjIzOGQwZmU0MWMyNjg0ZjZlYTA1YWI5Zjk1ZWRlNTMgbGVnYWN5LXRydW5rCisxNjAxNiBmZjA5NzRlODgyMWJlZWMzMmQ3NjFlMDFjOTkzMWZmNTNjNmY2ZTEwIGxlZ2FjeS10cnVuaworMTYwMTcgOTE2ZmIwMjRjZTk0MmQwOTdiMDhjZTU3Nzk0NzRjYTZkNmJhNmI2NCBsZWdhY3ktdHJ1bmsKKzE2MDE4IDg3ZWU4MmU1YzU2ZDMxYjc3MWY3NmVkNWNlMzBhY2I2MzM0ZjlmZjQgbGVnYWN5LXRydW5rCisxNjAxOSAzNGE2ZTVmZWNhMThlM2U0YjMyYWY1MmQxNjI5NDRkYmUyNzFkYzU0IGxlZ2FjeS10cnVuaworMTYwMjAgYmFiZTdiOWNjNjE3NDU2ZjQyZDM1NWYxYzI5OWUwNTM4NWJhZTA5OCBsZWdhY3ktdHJ1bmsKKzE2MDIxIDNkYTQ5MzQyMTllNWY0NzdlNzVjNDg4N2I4ZDZkZThiNDQ1YjI2MmYgbGVnYWN5LXRydW5rCisxNjAyMiA1ZmMxOGJjYTdmNTVhYzMzYTUyOTBjNTI0MDk4MDcxMTRiYjMzZDk3IGxlZ2FjeS10cnVuaworMTYwMjMgMWM1YTVhZGUwNGUyNzYyYzliMTFlMjlkYjkxMjlhMmYyNjVhYTJkZiBsZWdhY3ktdHJ1bmsKKzE2MDI0IGM2ZmQ2ZmZiY2IxNWM3ODFjYTRkNGViODUyNWI2ZWQ2ZmVhZTI2ODMgbGVnYWN5LXRydW5rCisxNjAyNSA4NDg3OWFiNzFiOWYzZmQ4ZGFmOTZiZmI3N2JkZjExYTEyNjc4NzgxIGxlZ2FjeS10cnVuaworMTYwMjYgYjlhZGI3OWNkZWI2MzQwOWY5ZjUxZDRiNDE4YjFmMjM4MzYwZjg1ZSBsZWdhY3ktdHJ1bmsKKzE2MDI3IGU4YmIwZDUzNjYzM2FlNzk1MjMwOThhMjU3ZjE4YzRkNTIzNzRkMzQgbGVnYWN5LXRydW5rCisxNjAyOCA0YzRlOTUxNDcyNTgxMTEyNTgyNzRmNTQ0ZDVkZWU3NTZmZGQ2ZGEyIGxlZ2FjeS10cnVuaworMTYwMjkgNGNlMjU1NDk1ZGEzNDAzMDQ0MGE1OGI3YzcwZjRhNTVhYmI5YmFjNyBsZWdhY3ktdHJ1bmsKKzE2MDMwIDgzMzc3ZmMyOThkODNjOGFmNGVkN2VmZDNkOGZjZGU2ZTU5MjkyMWMgbGVnYWN5LXRydW5rCisxNjAzMSBlNzJjYjQyMTc2YmM3MTkzZDk1MjIzMjRkN2QzNWM0NWFjZjRjNTcwIGxlZ2FjeS10cnVuaworMTYwMzIgNjE1NWY1MzJmMWZjYzQ4ODdiZmU4OWE1MDkxOWJhZGM0NTBkNWZlYSBsZWdhY3ktdHJ1bmsKKzE2MDMzIDg5ZjBhNjY0ZTI4MzBiMWNlYmVkM2U4ZGIzZmI5YTFlNTAyN2NmYmUgbGVnYWN5LXRydW5rCisxNjAzNCBmZGI3OGNmZDllNzY3ZDkyYTgyMTE2MzAwODU2OWQyZWIwOTI5MzFhIGxlZ2FjeS10cnVuaworMTYwMzUgZWZiNGIwYzY2Njg4ZTQzNjMyZGMxMzU1YjljOWViNzAwNzk1YjVjMiBsZWdhY3ktdHJ1bmsKKzE2MDM2IGI1MzI5MGI3YjU0NjhhMTliN2U4ZDA4ZjQ4MGJkMWE3OTQwNWFkNTggbGVnYWN5LXRydW5rCisxNjAzNyAxYzI3YjM3ZWQxYTFhZTc3ZjI1ZTY1ZTY2YjgyM2U0NjFiNjU4M2IzIGxlZ2FjeS10cnVuaworMTYwMzggYmM3MTRhN2EwMDQyODRiZWRjNzQ3OGI0NTVhNzU0YWVjZTUyYzA3ZSBsZWdhY3ktdHJ1bmsKKzE2MDM5IGUyYjM2MjFlNjUyMTM5MmFlYjZiYjdjY2M3NWY1OWIzNWJmNTI2ZWUgbGVnYWN5LXRydW5rCisxNjA0MCAzMzcwZWRhZDA4Y2VkNWRmODg4ZWFjYmE3OTZmOWFhZWVhNjA1Nzk2IGxlZ2FjeS10cnVuaworMTYwNDEgZTJlZTM4ZWE3ZjM1ZTRkNGEwM2UwNzNjZTExNDMwMDIzYjRkZGMzMSBsZWdhY3ktdHJ1bmsKKzE2MDQyIDUwM2E3Mzk5ODIyMmM1MzEyNDY5YzgxYjZiMDlkNjJiNmM0Y2U2YTcgbGVnYWN5LXRydW5rCisxNjA0MyAzZjU5OGI5OGQ3ZjkyMjQwNmZjNGQxODM3YmJiMDNiMjQ5OTA5ZDcxIGxlZ2FjeS10cnVuaworMTYwNDQgOTFkZTNmMDNhZTg5MjdhZjJmNzc5MDExNzIyZDQ1NWIxMDc2YjEyMiBsZWdhY3ktdHJ1bmsKKzE2MDQ1IDNlMDdhNzMxNWFmNTJmZjY4NDVmOThjNDkwNmE0ZGVmZmQ0YTU2NWYgbGVnYWN5LXRydW5rCisxNjA0NiA1MTAyZWZmYjBjNGI0YzVlYjVlNmMyZGU4NWM5OWM2Zjk4MDhiNmE1IGxlZ2FjeS10cnVuaworMTYwNDcgZTBlYjQzMWU0MzkzYWNkN2Y2MjZiMWMyYmE3Mzk2YjJjZGZjNTljMyBsZWdhY3ktdHJ1bmsKKzE2MDQ4IDcyOTVmMzYwMjY0ZTQ3Y2M1MWU2YWUxYTYxMDdmMTA3ZjExOTAwNTAgbGVnYWN5LXRydW5rCisxNjA0OSA0MDExYWNmZTE0MzNmYTk2MTViYjJkNjVkZDRhYjNkNjkxMTcxNTBlIGxlZ2FjeS10cnVuaworMTYwNTAgZjExOWMyZDhkNTYwM2Y3ZmY0YzE5OThkYmJmOWJmNGM1M2Y0ODhkYiBsZWdhY3ktdHJ1bmsKKzE2MDUxIGNiMTg2NDAyNTk5YTcyN2ZhYTEwMjQzMjk3MjkwNzc4ZDQwM2E0YjIgbGVnYWN5LXRydW5rCisxNjA1MiA3ZWRjNDgwYmI5ZjM5OGU5ZDI0MWVmNThhNDNmNTNlNDc5OTM2NDljIGxlZ2FjeS10cnVuaworMTYwNTMgY2ZjNjRmYWYxMmNlNTk5MDM5YWUxOWZkZDRiOWVkNDUyZWU5MjM0NCBsZWdhY3ktdHJ1bmsKKzE2MDU0IDE4YzgxZjFhMGRhMjM0ODkwMzk0YjcxNmYyY2FlNmMyZjlkZTc1ZmQgbGVnYWN5LXRydW5rCisxNjA1NSBlMzhiZTg3MTdlYzAzMWI2MTJiOGVmNTU2MWJhZTMyNjM2ZDNjYmZlIGxlZ2FjeS10cnVuaworMTYwNTYgODAwYTc1ZDA3ODdmMGEwMWE4ODk1Y2M2ZDg2ZWNiOTk5YjNlYTRhNyBsZWdhY3ktdHJ1bmsKKzE2MDU3IDZlNGRmMzQxNGE1ZmNmNTAwYzU3OGJhM2MxMmI2MGY5ZmVhZDUzYjcgbGVnYWN5LXRydW5rCisxNjA1OCBiOTFiNTc2MmIxY2QxMTRhYjdjMDM3ZmQzNjRlODk4NWRkZWFmYWYyIGxlZ2FjeS10cnVuaworMTYwNTkgYTVlMjBkMDc0NzBjNWU3YjgzMTlkOTA1NGZkMTNlNGM5OTAzOGE2ZiBsZWdhY3ktdHJ1bmsKKzE2MDYwIDQ2ZWUyNzE1ZDI5ODM5YmQ2M2VhYmFiMjQ2OWJiMzU5ZmNlM2ZiYTQgbGVnYWN5LXRydW5rCisxNjA2MSAyZmIzZmI2NDZjYzU5NTk2MzA0YTM1OGQ1NjM0Y2NjYjgzOWUyZWRiIGxlZ2FjeS10cnVuaworMTYwNjIgM2RiNjJjNzVlNjViMTU3MjlmZTY2MGU3YjAyZGUyMDQzMGJiNWEwNCBsZWdhY3ktdHJ1bmsKKzE2MDYzIDFjZjY3MzgyNDlhZmY1ZTMzMzliZTc5MWYzYjQ5ZWFkMDNkNmEyMGEgbGVnYWN5LXRydW5rCisxNjA2NCA5MDU0MGNkZjljOGQ5NjQ3YTZmNGU2Yzg4ZjZmYTljMjlkZjg4YTU5IGxlZ2FjeS10cnVuaworMTYwNjUgMzYwNzQyMjIxNjFjMGIxYjRlN2Y5OGE1ZDQ1YzZmZmZiNDM3YzE1NiBsZWdhY3ktdHJ1bmsKKzE2MDY2IDUwZjk3N2UxZTJhYjcwZDJiZTc4OTNmZmQyOWI1ZGQ5ZDQyY2IwMzEgbGVnYWN5LXRydW5rCisxNjA2NyAzM2NlNjNiMDYzNTkwOGZhM2ZjMDIzNzcxNjBhZDE1MGJkNzk0OWMxIGxlZ2FjeS10cnVuaworMTYwNjggMzg0ZmE5YjllMjUzY2EwZjc0NDA3YWNjM2ZkMGY0NGNhMGNlMWRmMyBsZWdhY3ktdHJ1bmsKKzE2MDY5IDA4NWIwMTVhOTI5MWQ5ZDVhMTM2OThlYzM4MDdjMGQ0NDJiNzYxN2YgbGVnYWN5LXRydW5rCisxNjA3MCBmYzJhZDZmYTA4ZWNlOTEyYjM4ZDUxNzZlNWExNjc3ZTQ3NTI5ZTkwIGxlZ2FjeS10cnVuaworMTYwNzEgYzdlZjE1ODU5ODNjNDY2NTRjYzRjN2EyMTEwMmEyOTk1YzA4ZjkyNCBsZWdhY3ktdHJ1bmsKKzE2MDcyIDNjMzViZjdiNTgwYjAyMmU4YjdiZTc2MDM0ZDgwZmRiNDc5MGI0NzggbGVnYWN5LXRydW5rCisxNjA3MyAwNjk0Y2UzYmQ0OGY2N2IxMTVkYjVlNzg5NTQ4MDRjNmFiZGRmZGYzIGxlZ2FjeS10cnVuaworMTYwNzQgNDIwYWI0NDMwMjFlOTY1ZDNiY2NiMmMzODFjMjQyNjIwMDg3NGQwZCBsZWdhY3ktdHJ1bmsKKzE2MDc1IGEyYmM4ZGZmNTVkZmY1NDc0NGE0YzEzZGYxNjQzY2ZiZDQ3MGU3OTggbGVnYWN5LXRydW5rCisxNjA3NiAwM2FhMjY4MTlhYzI3NjUxZDljZDkyZTBiOTRhMjMwNDdjYTgxNjIxIGxlZ2FjeS10cnVuaworMTYwNzcgNTgxODM2NzljOTBhMjIwOThiNjA5ZTFmMmI0MGVlNTAxZTI5ZTcwNyBsZWdhY3ktdHJ1bmsKKzE2MDc4IGZkNzhiYzVmMmIyY2NiMWJmNGQzODQ0MTExNzc3NGM4NDQ1YTMzYjUgbGVnYWN5LXRydW5rCisxNjA3OSA2NmQ0MmM1MWRmMTZhZWY5MmVhYmU0MjA4ZWQyYzkzNjFhNjQ3YjkzIGxlZ2FjeS10cnVuaworMTYwODAgY2Q4YTQxYmY0YWMyMGI5YTcyYjRmMGY3MTgyNGJlN2VmN2M4NjFkOSBsZWdhY3ktdHJ1bmsKKzE2MDgxIDM5MGU1ZDUxZmY3MzMyYjY1MTJiOGY3ZTQxZDg5NzhlN2Q1NzEyZDggbGVnYWN5LXRydW5rCisxNjA4MiA2N2EwNDgxNmVhNTAxMWEzMDBlZTM3YTA2MzZlYTQ3M2JmMzQ0ZTA5IGxlZ2FjeS10cnVuaworMTYwODMgYWMyNGQ4MmQ4ZTMzYmFhNjNhOWU3ZWMxODBlNjY4NjgyMGUwOGVjOCBsZWdhY3ktdHJ1bmsKKzE2MDg0IGFmMTBkOWI3NDE0M2QyYzNhYjE4ZDg4Y2I4YTNmZTIzOTQzZGRhYWYgbGVnYWN5LXRydW5rCisxNjA4NSBjZWQ4NjBmMmQ4ZDJjYTVlMGVjMmZhMGM5NGRhYzI5Njg0ZTcyOGNjIGxlZ2FjeS10cnVuaworMTYwODYgMzQxOGQ1YzBmOTYwMjJjYThlYzNjZTVlMDc3Y2U2YWQyOTQ1MGE2ZCBsZWdhY3ktdHJ1bmsKKzE2MDg3IDdiYWMxMGE5YmI2MWNmNmVhMGJkYTFmMDZjM2RlOTUyYzM5MmNjM2IgbGVnYWN5LXRydW5rCisxNjA4OCAyNDcxNzQwNWRkODk5MGY5YjFhOTYyNThmMWY5MjMwYjIwNjNmMjA5IGxlZ2FjeS10cnVuaworMTYwODkgYzE1NWJjY2I3YTIyZmIyNDY4YTFlNDBkZjRiOTI2NTE4YjdmZmQwOCBsZWdhY3ktdHJ1bmsKKzE2MDkwIGQ4YTQwNzc3N2E2ZjRiN2E0YTgxMzE0YzU0MzcyZjNlZDk3ODkzNzkgbGVnYWN5LXRydW5rCisxNjA5MSA0NTQ5NDA0NmMyZmI2MWM1N2JmM2E3OTU0Y2UxZWQxNTIyOTVjY2Q1IGxlZ2FjeS10cnVuaworMTYwOTIgNjNkMjg4N2JhZjExODQyNmQzMmZjNDkzNGMzNmJjYzFkNTMyZDg2YSBsZWdhY3ktdHJ1bmsKKzE2MDkzIDdlM2Q2MDQ1NTk1OGZjNzM4NjNiNjVlNDRjMjlkMTBhNDI3NDA3MDEgbGVnYWN5LXRydW5rCisxNjA5NCA1NjI2ZDQyNTVmY2VkNWNjOTM2MTYwODM5ODc0M2M5ZGVjYmU3Y2ZkIGxlZ2FjeS10cnVuaworMTYwOTUgODllNDdlYmEyNzcxODliYzg4ZjRkOTFhODNjYzNmNTY4OWI2OTRjZSBsZWdhY3ktdHJ1bmsKKzE2MDk2IDg3ZGYxYWU0ZjExMGM1ZDA5N2QyMzI0MTVhNDUwOTViMDY2ODFjM2QgbGVnYWN5LXRydW5rCisxNjA5NyA4ZDMyNGQ5ZDUxOGZkYmQ1MGUwYzg5MzE0NGFiZmYxODkwYzgxOWE4IGxlZ2FjeS10cnVuaworMTYwOTggZjBkNDAyZDQ4MTgwYmU5NDg4ZGI5ZGRlNmMyMjkyMGFlNGRjYjEwYSBsZWdhY3ktdHJ1bmsKKzE2MDk5IGUxMDE2MDBhZGVlNDRhNjMxMmU5ZjEyMDIxNmJlMWZjYTVjNTQzNmQgbGVnYWN5LXRydW5rCisxNjEwMCBhN2Y3MjAyMmI5M2FjODk3MjM4YzI2ZGNmY2FiMzc5ZmRiZGYyMTIzIGxlZ2FjeS10cnVuaworMTYxMDEgZjk4ZDZkNjNhZDcxYjZiYzE0NGEwZGY0N2UxYzQ3YWJkMWMwNjBhNiBsZWdhY3ktdHJ1bmsKKzE2MTAyIGRmZjI3N2Q1ZmViMjViMGVlOWRjYTI1YWQ4MzAyMzIwN2UxMTNlNjMgbGVnYWN5LXRydW5rCisxNjEwMyAzZjFiZDQ3ODI2MjhiNmEyZDVmNDc0NjM0NjUxNjQwOTgzNmRlMGUzIGxlZ2FjeS10cnVuaworMTYxMDQgMmE1YTNjYWQ1MTc0YTVmYmE3NTc3MmFjM2ZkY2E0ZWNmY2I4MGViZSBsZWdhY3ktdHJ1bmsKKzE2MTA1IGFiZWQ4MGI1MGEyY2NhYmE0MzMyZGFlZGNjNDk5Njg2MDdhNGZiNDYgbGVnYWN5LXRydW5rCisxNjEwNiBjMzAyOWYyNzYwNDcyY2Q4NTRiMGY5NjJlMmNmZWM1MTFkNDNjN2I1IGxlZ2FjeS10cnVuaworMTYxMDcgNGM0MGVmNWRjZDgyN2FmOWZhZDgxZmMyOGFlYTM5ZGFkNmQ5M2Q5NyBsZWdhY3ktdHJ1bmsKKzE2MTA4IGZiMzA5OTYxMDFiYzgzNGQyOWU4YTMxNmJlYTRjMGIwYzg3M2IyODEgbGVnYWN5LXRydW5rCisxNjEwOSAzODQ4MzVlYTBhNWExNmIzODVlMjA4Y2JjYWQ0NGY3ODk2NmJkM2M3IGxlZ2FjeS10cnVuaworMTYxMTAgNzYyODg4MmRjY2NkZTg3ZTA2OGVkNDMxYzkzYTRjNTU5ODM1MjczYyBsZWdhY3ktdHJ1bmsKKzE2MTExIGIzNTMwZGFlMDNiZmI5N2ZkOGEzMDc3MjNjMjJkMmZkZGM5MGM2ZjQgbGVnYWN5LXRydW5rCisxNjExMiBlMGQ2NzZlOWNiNjZjMTQwYTc3ZWI1ZDA5ODU3ODg4MTMxMDVlOGZjIGxlZ2FjeS10cnVuaworMTYxMTMgNTYxOWMzZjdhNDRiZGM1YWQxNjQzMDc2MTQ2ZTljZDIwY2U1YzhiYyBsZWdhY3ktdHJ1bmsKKzE2MTE0IGQ4ODUzNWNjYWVlNWMyNjljNjg0MmY5NzVlN2Q0NGRjMTUxZjYzYTEgbGVnYWN5LXRydW5rCisxNjExNSAwYjI4OWUwMGQ1MmEyNzQ1NTIxM2FlZGNlMGIwZDBiMjFjZWNkNGQwIGxlZ2FjeS10cnVuaworMTYxMTYgOTlmMzQxYTk3ZmRlYjZmMDc5MjRhZTVkODBjZmVjNDY5NDk1MTA4ZCBsZWdhY3ktdHJ1bmsKKzE2MTE3IGI0YWVkZDkwYzg2NDJlOWRhMGVhNGMxNjEyYzI2ZDdhNmE5ZTE5MzggbGVnYWN5LXRydW5rCisxNjExOCA5YTFiOTYxZTBjM2FmNTA0MWIwOWE1M2RmZDI5MmNmOGY1ZDU2OWUyIGxlZ2FjeS10cnVuaworMTYxMTkgZDgwMzgxMzM2NjEyZDYxZDdlMjhmNDE1OTAzOThiOTVkMjYyZThmNCBsZWdhY3ktdHJ1bmsKKzE2MTIwIGM4NzA2ZTVhODgyZmEyMTJkZjMzYzBlNThkYWFmOTU0MTc4MjlkNzggbGVnYWN5LXRydW5rCisxNjEyMSA2MGE5NzI2ZDg1ZjhlMzAzNDZjOGZjYTBiY2VjMWVhMTVlNWZmNGJiIGxlZ2FjeS10cnVuaworMTYxMjIgNDg0YmZkZTcwZGNjYmY0Y2I2YmM4M2M2MDg2OWQ0OTZiNTQ4NjgxYyBsZWdhY3ktdHJ1bmsKKzE2MTIzIGJlZjdiNjI5YWM5NTliZTEzNWM3Y2RkMDVkMWU5NTljYjU0NTdiNjggbGVnYWN5LXRydW5rCisxNjEyNCAwMmY4NzA1YmRhMDVlNTIwNmZkODYxMTFlOWU4YjA4OTU0NmQxZTFlIGxlZ2FjeS10cnVuaworMTYxMjUgZjM2OTM2ZDQzZDAyYmJjNjNiZTAzMDlmNDFhYTY4YmFlNGZmZWE1MiBsZWdhY3ktdHJ1bmsKKzE2MTI2IDNiZTI5NDQ5NTlkYTczYzU3OTcxNzViZjkwYTRmYjgwMGQ2ODJiZjYgbGVnYWN5LXRydW5rCisxNjEyNyBiNTk3MDY3ZTA1NmY3OTFiMzQ1OTkwMjgyMmZlYmNhNjdlODZkOGExIGxlZ2FjeS10cnVuaworMTYxMjggYTExMTBkYTY1N2U1MGRkZTUzZTBmYTkzMGVhNDY4NTIyMjI1MWJhNCBsZWdhY3ktdHJ1bmsKKzE2MTI5IGNiZjY2ZTRmZjA4ZjBlZTljYTBiMTJhOWViMWNlODYwZmIzOTc5ZDQgbGVnYWN5LXRydW5rCisxNjEzMCA5NDc5MGIwYzU1ZDA0YWNjY2YzOTZjZDYxNjM4NDMyZjIzMzcyNzU0IGxlZ2FjeS10cnVuaworMTYxMzEgZjBjODBiODM2NGUyMGIzYjQ4ZDI4ZWFkYjYzNzFiYzg4OWY3YTI4MSBsZWdhY3ktdHJ1bmsKKzE2MTMyIDNhMDAwMzFmOWQ2MGM3YzJkZjJlMWZjMWQ4MmFkYmFhOTBjM2M5NjEgbGVnYWN5LXRydW5rCisxNjEzMyBjZDhiOGJhZmJiMzM5NzNiMTk0MTA4ZjY3YTc1MzIyZWJmY2FiOTlkIGxlZ2FjeS10cnVuaworMTYxMzQgNzQ1MTc3YmUxYTcxN2NmMTUzMmExNTFmMjdhNWM5Y2Q5NjEwODE5OSBsZWdhY3ktdHJ1bmsKKzE2MTM1IGQ2Nzk3NDVkOTg2ZmRiNDkwYTcyNzZhMzE0NGM0ZmUxMDRlZWZmYmQgbGVnYWN5LXRydW5rCisxNjEzNiA4ZmI3MzExZDEzODEwODhlNThkNjcwYjE5YmYwZWYzNWExMzkxNWI4IGxlZ2FjeS10cnVuaworMTYxMzcgY2JiZTUxMmQyNGUwNWNlZDM0N2EwZDZmODIxOWFhMWY5NmFhM2E5OCBsZWdhY3ktdHJ1bmsKKzE2MTM4IGJmZTIyY2Y2ZTc3MDhiYTY0MmE0MGFkZDI2ZjFmMGIzYjE0NDhhMWMgbGVnYWN5LXRydW5rCisxNjEzOSAyMDE3ZjU0YjAzMjVjN2E2OWIyN2NlMmRjNjdjMDQyOWRhMWU5M2E3IGxlZ2FjeS10cnVuaworMTYxNDAgMTEzZDgzM2VlYTdlMDdhOTE4YmI1MTZhYjU0NTQ5ZDk0NDA0MTgzOSBsZWdhY3ktdHJ1bmsKKzE2MTQxIDYyZTE0MGJhNzgyZGMwNDAwOTRkMThkZjg1Y2Y3ZTQzNTdmYTc0NmQgbGVnYWN5LXRydW5rCisxNjE0MiBkMTY2YTFlNjA3NjBmZDI2ZjYxMWEyYzMzM2U5NWIyYjQ4MTM4MWRkIGxlZ2FjeS10cnVuaworMTYxNDMgODlmZjU5MTdiYzhiYzdmMDljZGFlNWMzNzNlYTkxN2IwODIxNDkzYSBsZWdhY3ktdHJ1bmsKKzE2MTQ0IGIyZDEwNDA3YWI5ZGJjYWNhNmRjMGU3YTRlOGJlMjQ4ZTY4ODY4YjYgbGVnYWN5LXRydW5rCisxNjE0NSAzZmYwMjJlMWI5NWQxYWFmMDViMTgyMmZhZTM1NmVkNzhjMjFhMTg4IGxlZ2FjeS10cnVuaworMTYxNDYgZWFjYjJlNTFlMTY5NjUyMGJkYzg1ZjAyNzNmZjdjYzRiNTE4YTM0OCBsZWdhY3ktdHJ1bmsKKzE2MTQ3IGFmZjFjNDE0NmMxYzJmM2E4NzRmOTZiNTM0MmQ1M2NhYzE0NWRjZGUgbGVnYWN5LXRydW5rCisxNjE0OCAzZjA4YmVkYzFjMjYxNTE2YzUyMjNjYmU3ZTllMjJkNzYzYmE1YzA0IGxlZ2FjeS10cnVuaworMTYxNDkgMWJlNDY2NTE5MGYwNjk1MWIzODIyYjM4Y2RkZTgyOGJhODRiMzIxYiBsZWdhY3ktdHJ1bmsKKzE2MTUwIDg4MDQ0ZjlkZjgzM2Q1NjRkODNmY2M1Yzk3MzM4OGMyNDYzYzk5Y2QgbGVnYWN5LXRydW5rCisxNjE1MSAxYzBkMzViYTE2YjFjNjJiMjFjMDYzOGQ0MjU1ZTNhNjIxMzkyZDgxIGxlZ2FjeS10cnVuaworMTYxNTIgNjI3NTRiOWVjN2RmYzA1ZjU2MjBlYzY3ZDRjNTBlZjlhODZiMDlmOSBsZWdhY3ktdHJ1bmsKKzE2MTUzIDFiNDM1OWEyOTc2ZGFjMzMxNjQ3NWJiMWJlMjQzMGFkNWRhNmE5NzMgbGVnYWN5LXRydW5rCisxNjE1NCBiMDVkZjY4NzIxNWVmNDRjOTdmNWZlMTBkMDgyMWE4YWM3YjNhMjU0IGxlZ2FjeS10cnVuaworMTYxNTUgYmNiMTQ2MjdiOGY0MWNhMTExNmQ1MDdmZWY0YzU3OWM1YzNlYzc5YiBsZWdhY3ktdHJ1bmsKKzE2MTU2IDgxMDdkZTI4YmM4MjEzOWQwNDc4MzEyZGEwYWM5ZWRiM2M2ZjQ3MWUgbGVnYWN5LXRydW5rCisxNjE1NyAzMTdlOGUwOWNlODc3MWM2MmNiYzZkN2NhMjQ0YjYwM2RjMjRlODBhIGxlZ2FjeS10cnVuaworMTYxNTggNzU5ZjY5ODc0MGNjZjNkNmNlOTZiZjczMzk5Zjg5MDY4YzVkMGVhNyBsZWdhY3ktdHJ1bmsKKzE2MTU5IDhlYjVjMzZlZGU5ZTcxM2Q2NWUwZmI4Y2IyYjg1Njk4OWExOThmNTUgbGVnYWN5LXRydW5rCisxNjE2MCBlOGNlMWJiMDU2YWVjMjFjZGQ2ZmFjYjk5ZWRjYjgwYjc0NDJlZmVkIGxlZ2FjeS10cnVuaworMTYxNjEgMjExMTkxODllZTE4MmNiZTgwOTEyZmRkMGE4YTViNmVlZTA1YjZkZSBsZWdhY3ktdHJ1bmsKKzE2MTYyIDk4ZGIwYzNjMWZiOWRjMDA0OTczYTAxYWYwMmE4NDkzNzIwOTgxMWIgbGVnYWN5LXRydW5rCisxNjE2MyA4ZjFhMmRlZWI5YjAwMGQ0ODNlMGE0YWM4YTQ4MDhhZGUyNTQ4MDM0IGxlZ2FjeS10cnVuaworMTYxNjQgN2ZiZGI1ODE4MzhmNjMxYmRkNzRjMmNkYjJlMTQ4ODc1MTZmYWJlNSBsZWdhY3ktdHJ1bmsKKzE2MTY1IGU5NWZmMjExYjlkM2M3YjhhMDBmOGUwZGM5ZWI2MWJkODNkMWU4NDYgbGVnYWN5LXRydW5rCisxNjE2NiA0Y2YyMTg1MmZkNTIxNjAwOTE3NjAyZTYyNzI1M2YzYjQ5OGQ0MWVjIGxlZ2FjeS10cnVuaworMTYxNjcgNTM3MTQ3OGY2ZjViODZkZTNlNmQyNTFmNWNhNGIxYWQ0MzY0N2I1NSBsZWdhY3ktdHJ1bmsKKzE2MTY4IGE1MDNhZjdlN2ZiN2JhNjdhNGUzMGY1MTc4ZjY1MTc1ZjNhZDRkYzQgbGVnYWN5LXRydW5rCisxNjE2OSBmMjYzM2M5M2UyZTU3ZTdhOThmODcwNzQxOTQxNWU1Mzc4MmUzNjM4IGxlZ2FjeS10cnVuaworMTYxNzAgZjUyMTJhZjllNjQxM2YzMTc0ZmNiMDE3MTFhZjQyZjNhZmU2OWRmNSBsZWdhY3ktdHJ1bmsKKzE2MTcxIGMzOGJhY2Q4ZWZhZDJmZTIyODAwNjRlOTYxMmYyYTE2ZDEwNjUwZTggbGVnYWN5LXRydW5rCisxNjE3MiA1MTU3ZWI3YmUyMGQ3ODAzMmU5YWRlMjYyYzY1ODgzYmM0N2Y1MDY0IGxlZ2FjeS10cnVuaworMTYxNzMgOWE4MzkxMDU0ODQwOTI3NGQyYTAzYTY0Y2Q2YmY3ZTRiYjIwNzczNiBsZWdhY3ktdHJ1bmsKKzE2MTc0IGU3MTA2YzJmYzI2Y2M0NzQzYWI4Y2IwMmRkMGI1MzQ4Yjc2NGM4YjcgbGVnYWN5LXRydW5rCisxNjE3NSA3ZmVhNGExYWYwOTA5ZmVhYTY5Y2YwMTEyNGM0ZGNjZmNhMzFmZjIzIGxlZ2FjeS10cnVuaworMTYxNzYgNmE3OGVhZDEzOTg3MDQzNjhiNWNmODRhZmVmYzA0ZTI2OWJiYzgxMyBsZWdhY3ktdHJ1bmsKKzE2MTc3IDJiYTc2ZTMxNTAxNmIyMzZiZDUzZDlkYWQ4NDUyYzkxODZhZWIyMmEgbGVnYWN5LXRydW5rCisxNjE3OCBkYTYxMDkzMDYzOGI0Nzg1OTk2NjE5YzljYzJhZjA4ZWZhNzk2NTlhIGxlZ2FjeS10cnVuaworMTYxNzkgNzBlNGNiZmMzYjI0NzljOGVhZTM5NGEwY2FkYzA1Zjk1YTNlNDVjYyBsZWdhY3ktdHJ1bmsKKzE2MTgwIDg1NTIwYzIyMDA2N2EyOWFiMWE2YmQxZDVlN2ViNmVkZjcyOTg0NmQgbGVnYWN5LXRydW5rCisxNjE4MSBkYjkzOTJhMDRiZWQ0MjFjZTllMDI2NmYwNWRkNDg0ZWVhMWQ1ZmFkIGxlZ2FjeS10cnVuaworMTYxODIgZDNmMWVlZmRjYjNhOWNhMTZiMTI5NGZhZDAzYWJhNDJmZTQ2OWM2NyBsZWdhY3ktdHJ1bmsKKzE2MTgzIDM0NmRmMTkyMDg3MzdhYmRlYjZjOTNkZjNkYzc4NDQwMzU4NDU1OTcgbGVnYWN5LXRydW5rCisxNjE4NCBhYTNkM2JlY2U3NzQ1NDVkMjJmNjE4ZjczZDg3ODNiODM5YjgwMzA5IGxlZ2FjeS10cnVuaworMTYxODUgYTg3ODAzZWI5ZGZiMTQ0N2Y1OWZmNjU0MWJmNjNiYzBmZmU1NjczNyBsZWdhY3ktdHJ1bmsKKzE2MTg2IDY0YTE0YmE3NDY0MTM4NTNmMDBkOTVmNjhjM2MyMjE5Y2RkM2E2YjcgbGVnYWN5LXRydW5rCisxNjE4NyAyNjNiNDQ5Mjg0NGEyMDZhM2I5NTRiNzEzODU4OWU3M2M2MjJiYjg0IGxlZ2FjeS10cnVuaworMTYxODggNWViYWQ2ODliN2E3OTIyNGUwN2E0NzRjMDk2YTc2N2U3MzQ4YTM4NyBsZWdhY3ktdHJ1bmsKKzE2MTg5IDYxOGE3MjgwZjZiZTUwYjk3NjdmOTc2NzI5YzU3MWJjNDNmYjg0MWEgbGVnYWN5LXRydW5rCisxNjE5MCAwZDZhZjMwM2E4NmNiNGQzNjc3NmU5NGQ4OWFlOWQ3ZmQ3ODZlMjE2IGxlZ2FjeS10cnVuaworMTYxOTEgOGEzZDUwZWQwNmY3OTdjNzM3MDY0NDJjZDMwMTBlZWQ5ZWY1ZmQxYiBsZWdhY3ktdHJ1bmsKKzE2MTkyIDA4OGM1ZjNiNzA5NGM5NTkyNDk5ZGJhNTI4NDZmNWZjN2JhZGRmZDMgbGVnYWN5LXRydW5rCisxNjE5MyBjNzExMThiNzgwNTk0YmJiYTkxODA3MTZmNDBjZDU5YTc5MDkwY2RkIGxlZ2FjeS10cnVuaworMTYxOTQgZDE3NjY0YmQ5YjY1N2VjNTRiYmE2ZmM5YjJiYjJiODJkMDJhZjlkMyBsZWdhY3ktdHJ1bmsKKzE2MTk1IGZjNzhlNWE3ODEyYTUxMGE1OTU4OTY0YWUxNjBlNzM2N2QxYzIzMDggbGVnYWN5LXRydW5rCisxNjE5NiBjZGUyNzMxOGNmODdiNWJlODJjMTYyODE3MTIyZDBjZTViNjhkYWUxIGxlZ2FjeS10cnVuaworMTYxOTcgN2UzY2Q5NDgwZjY2MzhhYzE0NjRlMDczOWZmYzA3YjAxYzY1OTQ5YyBsZWdhY3ktdHJ1bmsKKzE2MTk4IGJjOWUyMmFkNWM0NjA4MTE4MmI5YjM2NzgyYTExY2VkNzc1OTAyMjUgbGVnYWN5LXRydW5rCisxNjE5OSA5ZmQzMzM2OTMzNTA4MWRiNzRiOGZlMjUyZmZlNjk2MDlkN2JhZThlIGxlZ2FjeS10cnVuaworMTYyMDAgZGRmMDc0ZWM2NTA2M2Y4ODFhM2QzMWVmMTI2OGQwODczN2Q0ZGVlOSBsZWdhY3ktdHJ1bmsKKzE2MjAxIDk2OGEwMDZlNTQ4MGMyNjhjYzA4NmNkMzc5NjYyN2QzOTY2ZTNmMWYgbGVnYWN5LXRydW5rCisxNjIwMiBmOGQwODRlM2Y4ZWNmMWY4M2VhNWIyMGJkZTIxMzMxYzEyNjQ5NzAyIGxlZ2FjeS10cnVuaworMTYyMDMgNWVkZWU2ODc4OTQzMjYyYjdkMDA2ZWNkMGM0ODM1Yjg1YmE5MTkyNyBsZWdhY3ktdHJ1bmsKKzE2MjA0IGVkNzIwNjdhYWMwMzI4ODQxMzM1NjBkY2IzNDIzMDA1ZjJiZGZjZDYgbGVnYWN5LXRydW5rCisxNjIwNSA3ZTU4YzA2MGQ1MzQyZDQ4MzIyMjY3ZjQ4ODU5MjRmOTk5MzMzMDY3IGxlZ2FjeS10cnVuaworMTYyMDYgNTcwOWRkYmE0MjNjYzhkYmZlZGMxNTU4YzhhNmZmOGFlYTk0ZDA2NyBsZWdhY3ktdHJ1bmsKKzE2MjA3IDA5MWNhNmI5MzQ4ZjUwZDUxOGYzZjY0NWY3MDA0ZGJhNmRiNDRkMWEgbGVnYWN5LXRydW5rCisxNjIwOCAyM2Y5Njg5YWNlNTA2Mzc3YmMyZThiNTJmMTdhNjhjNWUwZjE0YmE0IGxlZ2FjeS10cnVuaworMTYyMDkgYTg5ZjdmMjY4ZGU0NWYxMTQzYjRkOWI0MWY2MTQ3MTU5YzRkZGJmMyBsZWdhY3ktdHJ1bmsKKzE2MjEwIDNlMTBhYzdhNWJmMzZmZDNjNzY3MzczNjk3NTY0OGMxOTZkYjNhZjcgbGVnYWN5LXRydW5rCisxNjIxMSAwNDA5YTk4Y2Q1ODJlMzY3NWMzMDI1ZTg4OWQ3MmZkNDNlNWY3MWQ2IGxlZ2FjeS10cnVuaworMTYyMTIgNGFkMjY5Njg2NjJiZTA2MjY2MmI2YjJiN2YyZjJlYzIzZjk3MmE4ZSBsZWdhY3ktdHJ1bmsKKzE2MjEzIDgwOGI0NDZhZjk3Yzc2MzYxMWVhN2E4OWFiODZlYjMzYTkyYTlmM2IgbGVnYWN5LXRydW5rCisxNjIxNCBlZDRmN2EyMmU5MjhjYWEyMzNjZDkyMmY1NzJlZTYzMGVkODljZTVjIGxlZ2FjeS10cnVuaworMTYyMTUgZDYxOThlNzAzNjAyYmUzMDcwYjE2MDgyNzlmMGQ1MGQxMzViOWM4OSBsZWdhY3ktdHJ1bmsKKzE2MjE2IGZjYzc1YTM3NDhmNTQxOTY3MGY5ZDNkYTA4MjJjODQyNDk0MThlOTMgbGVnYWN5LXRydW5rCisxNjIxNyA0MzE1MzhmZmIzYWQzMjE0NjVhMTFkNDhhMjlmODk1MTcwN2I0MjVmIGxlZ2FjeS10cnVuaworMTYyMTggNjIxMTMxNWViNTkyY2VkMmRhMzc5ZmIxY2JjZDM5YWFlMmJkM2IxYSBsZWdhY3ktdHJ1bmsKKzE2MjE5IGVmMmViYjNiMGM2NDdmZmFjMWVjZmU5ZTgyMzUwNDdkZGQ4ZDc2OWUgbGVnYWN5LXRydW5rCisxNjIyMCA3OTA4ZWM4NTU2NjVkY2JkNGQyNmM0MjRmNmE2YmVhMmUzNTNmNGRhIGxlZ2FjeS10cnVuaworMTYyMjEgMGY5NWM5M2YyMDBiZGVlYjJmMDVhOTRmNDFhOTVkYTg3Njc2Y2VhYyBsZWdhY3ktdHJ1bmsKKzE2MjIyIGU2ZDE3ZjE1YWU2YWVmYWU5NWI5YTE0MTIyM2QwOWY5NTMxZDE2NzUgbGVnYWN5LXRydW5rCisxNjIyMyBmNmNkZWFjNDRhMTA1MjhkZTYyNDIwMzg1OGEwNmY5NGM2MTY3MWMxIGxlZ2FjeS10cnVuaworMTYyMjQgNGNmMGRlMjljMDhjNzFhYmVlOTViOTFlZjdlNmIzMGE0NzA3MDUzZSBsZWdhY3ktdHJ1bmsKKzE2MjI1IGI3MDY2YmI3OTU4MTBjYjE5NGZhMTA1MTAzZDgxYzdhZTk4ZDg4ZmUgbGVnYWN5LXRydW5rCisxNjIyNiBlYTgyMzVlZGZjOTYxNTgzNzJmYTk5YjhjODY0ODRiMTNhMTg1MzY2IGxlZ2FjeS10cnVuaworMTYyMjcgOGU5MmQ5NDFlMDdmNTA0NDljODdiZGJjNTcxMmE2ODY0OGZkY2JmMyBsZWdhY3ktdHJ1bmsKKzE2MjI4IGJmYWRkMzYzYTIwMGEzMWE2OGYxMjE4NThiYjkxNGVlN2ZhZGQ0M2QgbGVnYWN5LXRydW5rCisxNjIyOSA2NjkwMzc0YTFkYzFhNWEwZWFiODA0ZGU2OTA5NWYxOGE1MmUyOTBhIGxlZ2FjeS10cnVuaworMTYyMzAgYjkwN2ViZjNiMDUyYjkzMjE0NDY0ZDhjYmY1MmNjOTIyMjc3ZTg0OCBsZWdhY3ktdHJ1bmsKKzE2MjMxIGRkN2UxMzkxNTMyOGZjOWE1OTE3NGI4ODE5ZTNjMDg2MjIyNTcwMGYgbGVnYWN5LXRydW5rCisxNjIzMiA3NWIwZThjYjA3ODMxZDNkZmNmZGRjZDkyNzJjNGU3N2E0ODI2OWIyIGxlZ2FjeS10cnVuaworMTYyMzMgZGYxODlmOWNkMDEwZGVhMGVmY2Q4OTlmMjI0MDE5NDBhMDc5OTE2NyBsZWdhY3ktdHJ1bmsKKzE2MjM0IGRiZTgzZmQyMzM5M2EyMTA5OTlhYWI0NDIyZDAxYTk2N2ZiYTIzMmQgbGVnYWN5LXRydW5rCisxNjIzNSAzMWIxZjY5MWE3ZDkxODllN2I3NzllZWEyNjhhNTIyZWYxZmJhNzIxIGxlZ2FjeS10cnVuaworMTYyMzYgZTFiMDcwZDcxNjJjOGRlNzY2YWJiNDM4MmM2ZDJkZDczYmM3ZGYzOSBsZWdhY3ktdHJ1bmsKKzE2MjM3IDJmZjI3ODVlNTI5MTljMWNjNjFjNWNjMTBlOGEzZTVmNjBmNDc5YmQgbGVnYWN5LXRydW5rCisxNjIzOCA4ZjY2YzVmZmEyNmM4NjA1MjUzYzRkNDUxYzc5NGViNzUwYjQ0OWY3IGxlZ2FjeS10cnVuaworMTYyMzkgMTYyMmJiMjRkYTU1NjY0ZDM4ZDQ1ODIwZWJhYzAyYmI4OWJjNDM2NiBsZWdhY3ktdHJ1bmsKKzE2MjQwIDcwZDM1MWZjYjhkNTkwMGM4NmVhYmZiMjRjNzUyYzYwZmU3OTc5OGUgbGVnYWN5LXRydW5rCisxNjI0MSA5M2FlMzRhYTIwYWIzNjM1NjdiMWEyZTBjYjQzZDg4YzNlZWQwOTBjIGxlZ2FjeS10cnVuaworMTYyNDIgNjA4NGY4ZDNhODI1YzBhNzY0N2IyNDJmM2I4YWRkNWEzMDA3Zjk1NSBsZWdhY3ktdHJ1bmsKKzE2MjQzIDNhYmVjYjM0NzM3ZmNjODA2ZWRkMjJkY2M2YjkyOTRhZWY3ZDZiYTAgbGVnYWN5LXRydW5rCisxNjI0NCAwMDBhMWM3ZWIwOWZiY2ZhODhmYTQzZTZjMmVlMGU1OTM0ODY2MjdjIGxlZ2FjeS10cnVuaworMTYyNDUgODdmODM5Njg1MWIyYWE2NWYxNGE1M2NiOTU0NTRlMGYyZTgwOTJiNiBsZWdhY3ktdHJ1bmsKKzE2MjQ2IDY3ZmQxOWQ3NDUyODE4ZDY5NGFiNmI0Yjk2ODU5OTJkYmUwNjUyZDcgbGVnYWN5LXRydW5rCisxNjI0NyBlNGVjNzc4NzlkZGQwMmVkODhhMjY1NjVmNGExMzNmYWEyMjU3NDhlIGxlZ2FjeS10cnVuaworMTYyNDggMzJiNjg2ZGEzZTUxOTEzYTc0NzQyYWRiNzFiM2UyNGQxMDdiOGMxMSBsZWdhY3ktdHJ1bmsKKzE2MjQ5IDg0MjRlYzRjNGJiMjAzMGNlMzYxMjljODE2NWFhODFhNjIzMGMzMmMgbGVnYWN5LXRydW5rCisxNjI1MCBiMzEzMTFhNzhhNWRhNjUzMTcyOTUxYmYxMTQ4MWVlZGZkZTIzYjY2IGxlZ2FjeS10cnVuaworMTYyNTEgZjUwYmRjYjBkZDBlYWUwMWQ5MDA2ZTEyZmYyYmFiYjBmNDJiMzRlZiBsZWdhY3ktdHJ1bmsKKzE2MjUyIGNiNTM5ODI0NDQ4ZTg1ZTJiNTNjZjJiNWZhYzhkMjVmMjg5ZmNlYzMgbGVnYWN5LXRydW5rCisxNjI1MyA1ZGE4NDU2ZjJlNGQzNDQzN2JjMjlmMGI5ZjhhOWExMjRkOTc4NzlhIGxlZ2FjeS10cnVuaworMTYyNTQgNTA4N2QxZDQ1ZjFkYTY2Y2VlN2Y1MTUyMzk3NmFlNmNmMWNiYmY5OCBsZWdhY3ktdHJ1bmsKKzE2MjU1IDhiYWNmODYzMWExMWNlY2U1ODBkZTM2ZDMzN2Y3ZjBjOTcwOTRiMjkgbGVnYWN5LXRydW5rCisxNjI1NiA0YWExMmU1NWJmOTVkMWRmMjIzYjY0MGFhMTYwZjA4MjZhM2RhZjZmIGxlZ2FjeS10cnVuaworMTYyNTcgNDIzYTViOTUwY2M5ODNjYTI5NTQwOGIyNWI2NzU2NWU4MzA1OGY1MyBsZWdhY3ktdHJ1bmsKKzE2MjU4IDAzYmM1MWU0M2Y3YWY3NTViZWUwYTJkNzI5OWEyYzg4NmUwNzMyYTQgbGVnYWN5LXRydW5rCisxNjI1OSA5NTQ1NGI3M2VhOTFkM2Q2YmEyZGY3MzEzYzBlZTUwNjM3NDEyOWZjIGxlZ2FjeS10cnVuaworMTYyNjAgYzgzMDg1NGZhNTA3YWRkYTgzZDVmNjRiOWRhNzQxYzg4N2NmMzBiMyBsZWdhY3ktdHJ1bmsKKzE2MjYxIDA0Njc5OWEwODA1N2MyOWZiOWRmOGYwMmYwN2MyMThiNmQwNjc4NzcgbGVnYWN5LXRydW5rCisxNjI2MiBkOWNjNjIwZmYxODZlZjhhYWZiNjFhZTVlMzhjYjY1ZWVmOTVhOTEwIGxlZ2FjeS10cnVuaworMTYyNjMgY2EzMmZmN2EwNjdlNjk1YzFkM2IyMmY1OWE4YjJiMTcyZWNjYTNjYiBsZWdhY3ktdHJ1bmsKKzE2MjY0IDczNDhjY2VlZThmYWE5ZDRiODc1NWJiNGYyODY5MzlmNDYxYWQyNDEgbGVnYWN5LXRydW5rCisxNjI2NSA2NDg0MDk4ZjQwZmMzZDI0OGQ0ZDVkYjJhNTI1ZjBjNjc4YzI1NWQ4IGxlZ2FjeS10cnVuaworMTYyNjYgODI1NmQ2MTk4ZWMyZjdiODliMjQ3ZDkyZmMwMTUxYjI0YWMzZTA5ZCBsZWdhY3ktdHJ1bmsKKzE2MjY3IDBlZGViNGVmZTZkYmMzOWNlNzc5YjNlMzI3MTJhODYzY2MzOTdiNDEgbGVnYWN5LXRydW5rCisxNjI2OCA4NmIzNjdkMmU3YWZhYmNmMDdiYjBmYTBmMmJiYTgzODkyNjIyMjQ2IGxlZ2FjeS10cnVuaworMTYyNjkgYzA1ZWI5MDJlNTYwMGQ1ZTUwZDU1ZDBlNDZjODE4NmY1NzNiZDQ4MSBsZWdhY3ktdHJ1bmsKKzE2MjcwIDdiMGY0NDgzYzMzMTc2MDRkNDliMzdjZWIyYzlhNjAwZjdiODUyZjggbGVnYWN5LXRydW5rCisxNjI3MSBmYTc0MTk4OGRiMTc4NWQ4MzNhODZhZDc3MjAyODI5NmViMDgzYjM5IGxlZ2FjeS10cnVuaworMTYyNzIgZDAxODQ4NTI3MWZiNGUwMDJjNzIxOGVkMTkyOWI3ODhkZjg3NDY1YiBsZWdhY3ktdHJ1bmsKKzE2MjczIDE4Mzk1Y2E1YzMwZWZiYjdlMjFlMWI0NjUwODUwZDAzZjQ4OTdlYTcgbGVnYWN5LXRydW5rCisxNjI3NCA5YTQwZjE4ZjA1NjFmZmYyYzY0YjQ4Yjc5ZGEyZjkxYmI4ZGMwMDcyIGxlZ2FjeS10cnVuaworMTYyNzUgNjA1N2Y0NGIwYjdhYzVjYzQ3OTkxNDVlNjQ1MTY5ZTM5YTdmMjZlNiBsZWdhY3ktdHJ1bmsKKzE2Mjc2IDUzMDRiODhmZTNjY2YwNzllNTY0MzVmYjYxNTMyMTc4ODA3NDg3Y2UgbGVnYWN5LXRydW5rCisxNjI3NyBjZDdhYmI0ZmViMWJhNmYzZjVhM2FhYzNmZDc4ZmU2MThiMGMyYTRiIGxlZ2FjeS10cnVuaworMTYyNzggZTQ0Y2E2MWRiNzE1ODRmNTRiZDAzZDA0OWU0ZmY2MDJmYzU1NjliMiBsZWdhY3ktdHJ1bmsKKzE2Mjc5IDRmMTEwNDQxZGIzOTE4MmFhMzcxYjI5YjI0NWUxOTMzZThlNzE2MjQgbGVnYWN5LXRydW5rCisxNjI4MCA4NjcwNDQzMmQyODNhNWQ0YTdkYzUwOTYzZjI4ZTM3MzNmYjlmOTQzIGxlZ2FjeS10cnVuaworMTYyODEgMDcwZTQxZjI2OTdiNmNmOTc2ZTgxMGMwMzQ2YmNmY2IxNzA3OGM0MSBsZWdhY3ktdHJ1bmsKKzE2MjgyIDI3ZDg3ZTA3MmJmYjA1MmM5OTcyY2ZkNGFjM2U2OTgyOTE2OTNkZjAgbGVnYWN5LXRydW5rCisxNjI4MyA0ZGJjNzVjMTg5YmNlZDljZTA2MzVmZDhjYjY3ZDY2M2I4NDM1ZWEzIGxlZ2FjeS10cnVuaworMTYyODQgYWNjNDYzOGYzN2Q1N2E2MGUyNWFlODc3M2Y3Zjk3OGM3ZDU2NmU2YiBsZWdhY3ktdHJ1bmsKKzE2Mjg1IDAyNDc0ZGY1NDZmNjAwYTNkYWYyNzc1Y2YxNDgxZjI5YWMzMTNhYmMgbGVnYWN5LXRydW5rCisxNjI4NiAxNmU0OTA0NjJlNmJmMTk4ZDE1MTc4NjdmMGQwNDhkN2NlZTQwN2ZmIGxlZ2FjeS10cnVuaworMTYyODcgZjMzNmEyNjdhMmEyNTYyOTY0Y2I5N2E1YmY4ODY1MTkzYmE1OGViMCBsZWdhY3ktdHJ1bmsKKzE2Mjg4IDM2ODZkMTIzNjJiOGMwOTYwZmI5N2Q1NDRiZDQ1NDg1M2RlMzRmNmIgbGVnYWN5LXRydW5rCisxNjI4OSAwN2MzMTE4MmYyMzcxZDA0MTIzY2FkOTJjZjU1YzEyNTkwYjk3NmMwIGxlZ2FjeS10cnVuaworMTYyOTAgZTg0OGQ2ZWQzZWI5ZDAzYzYyNjIyZDFhZjQ5Mjk3ZTYxY2U3MTY5MCBsZWdhY3ktdHJ1bmsKKzE2MjkxIGJhYmFlOTEwYzJlMTNhMzYyMjlmOGY2OTc0YmZhMmMxMzZjNjIwOTMgbGVnYWN5LXRydW5rCisxNjI5MiBlZDU2NWIwZmU2NDg0MTc4YjFiM2E4NDc4NzE5ZTZhNTk4OWRjM2FjIGxlZ2FjeS10cnVuaworMTYyOTMgMzA0OTVkNzNiOTQzNjE1YTY0N2ZmMzVlMTFiZGM2MWEwZGFlNGNiMCBsZWdhY3ktdHJ1bmsKKzE2Mjk0IGIwNjM2YTUyN2E4Nzk5OWFkZjkzMTAyNTQwMWZhMjUxMGZiZTM2ZjcgbGVnYWN5LXRydW5rCisxNjI5NSAxZTdjMzJiZGRiOGY3MDA0MzRmYjUzZjk4NTZlNTBmMGMyNzIyM2MyIGxlZ2FjeS10cnVuaworMTYyOTYgNDdmZWM0OGNhNDk1OTQ2OWIxYzY4NjllMjQ5NWM1ZjA2MTRhMTU0YSBsZWdhY3ktdHJ1bmsKKzE2Mjk3IDhiMTM0NWZmOTgwMTNmOTJmOGVkODdjYzM0NTk5ZTVjNGVkNTIzOTggbGVnYWN5LXRydW5rCisxNjI5OCA5N2NkNDczNjM5MmMxNzc3OWIwYzk3MTZkODc3Mzg0YWJiOTcyN2UwIGxlZ2FjeS10cnVuaworMTYyOTkgYjlmOWRhMWEzZmM0NzNmNTEzMDU3OTI0NTFiY2FhZTM0NTE4NDFjNiBsZWdhY3ktdHJ1bmsKKzE2MzAwIDQyMjg3NzVkNDU1ZWQ1N2IxNGE5OWIyYWQ2OWU2MzA4MWQxMTJhYjYgbGVnYWN5LXRydW5rCisxNjMwMSBmZWFiNjc3MjY5ZTA4YzE1ZWMwZmFhOTVlZjY5MzdmYmIzNWRkODliIGxlZ2FjeS10cnVuaworMTYzMDIgMDYxNWRjZWYwMjRkZTA1ZDM2MTI3NzU0MGJkYWNlMWQ2ZmM3OWM2MCBsZWdhY3ktdHJ1bmsKKzE2MzAzIDlkYmVlNGI0YzAzZmRhYzhkM2IzZTYyYjZkNTNkZWMwZDY3MDI0MzUgbGVnYWN5LXRydW5rCisxNjMwNCBkZGQ2MTM4YzllNmZlNzYyZGJhMWU3MzFjYWY4MDcwYTMzM2YwYTVlIGxlZ2FjeS10cnVuaworMTYzMDUgN2FhNTFlYmY0ODNmOTkyZDNlNDkwMjZhOGJkNzQ5YTA2NGQzNzA0MSBsZWdhY3ktdHJ1bmsKKzE2MzA2IDNjZjRmNWFlZTAwZTJmYWMzZmQ0MDk0Y2JiNjBmYmZlNmJkN2U1YTMgbGVnYWN5LXRydW5rCisxNjMwNyAxZDY2MzA3OTIyMTI1OTExYTYzZWM1MGQyODkyMDI4YzUyYjliZGVjIGxlZ2FjeS10cnVuaworMTYzMDggMWY4MmE0YmZkMjk0NTU4ZTVhODE4Yjc4MTgxMDljZTVhNzQxMzJmYSBsZWdhY3ktdHJ1bmsKKzE2MzA5IGRiOTYzYTYxNWJjOTMxMmMxYzk2YzMxMzQxMzkyMDkyZTAyYWJmMjIgbGVnYWN5LXRydW5rCisxNjMxMCBkOGI4NzQ5ZGUwNGFiYTYxZDY5ODFmOGE5MDFjZTNmOTM5NWRiNDJkIGxlZ2FjeS10cnVuaworMTYzMTEgMzMzODg5MjdhYzJmYWE3OTAxZmE2NDVmZmRlMDViYTFmNGZkOWMxMCBsZWdhY3ktdHJ1bmsKKzE2MzEyIDk1YjlkZGIwMDM1MjNlMzY3ZWJiNjhlN2M3MjRiY2IyMjcxNGNmOTggbGVnYWN5LXRydW5rCisxNjMxMyAxNWIxOGUwY2MzZmQyNDgyOTAwODM4OWE2ZjM3YjM0YzI3YzU2OGM5IGxlZ2FjeS10cnVuaworMTYzMTQgZGQyYjUyMThlMDY5ZWEyOWU4OGJkMzBlMGM0ZmI5YzQyZDc0NzBhNyBsZWdhY3ktdHJ1bmsKKzE2MzE1IDYzMWI2YTAzYzE2MGViOWMzMmE2MDhlMDMxOTEwMjJhMzUxMmY5MzggbGVnYWN5LXRydW5rCisxNjMxNiA5MDZlZmMxZGEyNDdhMzYxNTcxZmYxYmRmY2NiODdlMjExNGJmMzllIGxlZ2FjeS10cnVuaworMTYzMTcgOWM3NGI4MjM5ZmY4MGY4NzJkNzk3NTdlMGQ3ZjUxZTZmYzQxOTYzNCBsZWdhY3ktdHJ1bmsKKzE2MzE4IDM3YjFhMzk2MDZjZThiZmI0YTdlODAzNmQ0M2UyM2JlYmM5MzRmZWEgbGVnYWN5LXRydW5rCisxNjMxOSBjMzk2YjYwMjYxN2RjNDYwYjc3OWQxODUwOWYyZTBhMzVjYjM2Yjc4IGxlZ2FjeS10cnVuaworMTYzMjAgNmE0NDM2ZDY5NThiMGM2NzQ5M2VjMzYyNzQ1MTVlYjg0OGJmYzUwYSBsZWdhY3ktdHJ1bmsKKzE2MzIxIGI3ODY1MzZmMjFhY2JmODM4MTAxOWRmNGVmMDcyZTRmZjIzMjYyMzEgbGVnYWN5LXRydW5rCisxNjMyMiA2OTg3ZTk0NTA2MTliN2NiZGU3ZmM3NGU3OWQ0MDA0OWE5NWVhOWIxIGxlZ2FjeS10cnVuaworMTYzMjMgZWE3MzI3MTliM2ZkMDdjMDE0MzEyY2QxM2NjNTYzOWJjYTE0YTI3MyBsZWdhY3ktdHJ1bmsKKzE2MzI0IDkxOWYzZDUxNzJhOTVlZjMzZGM1MTAyZjRlNGFmY2NmZTk4OGViZWYgbGVnYWN5LXRydW5rCisxNjMyNSBkMWY2YjY1NjEwM2IyYzIwMDhmYzI3MDgzZTQyYjE1ZmU1ZGRkMjA3IGxlZ2FjeS10cnVuaworMTYzMjYgNzk5MWFlYjM1OThmZWIyZWU3YjFjN2Q0ZjdlNGYxYzdmMGI1YjgzOCBsZWdhY3ktdHJ1bmsKKzE2MzI3IGU1NThlYjIyOGE0NjNmNTRkZDVjZWE5Y2RkZTlmZDBlMWM5ODMyY2QgbGVnYWN5LXRydW5rCisxNjMyOCA0N2E5NDcxOTU2YWY5YmZhYmQxNmVkMWNlZTg2OTYyYTFjODAxODBmIGxlZ2FjeS10cnVuaworMTYzMjkgY2ZiMmEwZDBhODY5NmYzNzc0MjM0MDg2NDEyZGI0MjNlY2JmYmEyZiBsZWdhY3ktdHJ1bmsKKzE2MzMwIGFjMmJiNzcwODMyMGRiZTQ3NTJhOTkwYzliZGEzMTlmYmJkOTcyYzMgbGVnYWN5LXRydW5rCisxNjMzMSA1ZDYxYjZmMmFlYTNjZGExYTczMTM4NDNhZWU0ZDA0YjQ1NDdiYmNjIGxlZ2FjeS10cnVuaworMTYzMzIgZWYzZWQ3NWYxOTVjNzgwYTc4OGM0YWU4MjI2ODBmNDczNGNiZDdlOCBsZWdhY3ktdHJ1bmsKKzE2MzMzIDNhOGM2NzAzMDlhMjFkYjRiMTc2NmM1ZGQ4ZGViNmYwOTk1YTQ3YzggbGVnYWN5LXRydW5rCisxNjMzNCBlNDE3ZDk1MjhmZDYxMTU0NGMxZmUxMzQ3YzI2OWE0Zjg5ZTU5MjBiIGxlZ2FjeS10cnVuaworMTYzMzUgMDFiMjMwNzJjYzc2OTY3NjIyMTI1ZjRiMjgyZjBjZjBjNWE2YTFjOSBsZWdhY3ktdHJ1bmsKKzE2MzM2IGNiNzZkN2RhNjcwMjc5ZTBlNjg5Zjg1NGM4NDhjNDUxZTJmNDU4ZTAgbGVnYWN5LXRydW5rCisxNjMzNyA3YzExOWYwNTAyOTBlM2EyZDlmY2UxMzA4NzRjZDk0MmIxZjcxNzY2IGxlZ2FjeS10cnVuaworMTYzMzggNjFlNGMyOWQ1M2Q4ZDI3N2JjOGMyNDllZmExYjczYWFkMTBkNjNiMSBsZWdhY3ktdHJ1bmsKKzE2MzM5IDJlNDViN2MyM2RjNjg2NWY4MThhZmM0MWM2NDY0NjgyOWRiOWM3YzAgbGVnYWN5LXRydW5rCisxNjM0MCBhMDMyMTAxZWQ5MjY0NGMyZTYyYTM2YTVlMDEzOGEwNDUxM2FiODk4IGxlZ2FjeS10cnVuaworMTYzNDEgZmZkNWU4YjY3Yzg0MzMyYjI4ZmQ0NmViYTVhOTVkMzY2NzA1NGM5ZiBsZWdhY3ktdHJ1bmsKKzE2MzQyIGI0YjZmMzk2MmJkMTIzOThiYTAzODZkNWExY2E3MDZlNjJmZTBiZDAgbGVnYWN5LXRydW5rCisxNjM0MyBlODcxYmQwNWM2YTc0NGQyNWJjZWI4ODRkMmE0NGNhMTY5OTM2NWUzIGxlZ2FjeS10cnVuaworMTYzNDQgMDg0YTc1ODA1MWUwZTFjNmUyYjZkZTA2YzYzNWM5MTAyNWVmZmZmZCBsZWdhY3ktdHJ1bmsKKzE2MzQ1IGFkMWM4MjcxYjZmODI4ODYwZTU2NmYxMzExZDFlYTE4YmIyOGIwYWQgbGVnYWN5LXRydW5rCisxNjM0NiAyOTc3ZmJhZTRjYTUxYjRhMDQ0MDhlMGUzMDAyNzg4Y2M2ZTRlZjQ5IGxlZ2FjeS10cnVuaworMTYzNDcgODlmOTA1ODcwYzBhOTBkZTdiYWM2Nzc3OTc4ZGNjOWFlYjljYmViMCBsZWdhY3ktdHJ1bmsKKzE2MzQ4IDE0Y2ViMTU5ZTQ0OTlhMzc2NmUwYTMwZjIwOGY1YmNjNzNjZDM1YzkgbGVnYWN5LXRydW5rCisxNjM0OSA3YzEyN2E3OWEzNjllNTc0ZTdjOGJhNDdkMWQwYzNmMWEyYmEyMjFlIGxlZ2FjeS10cnVuaworMTYzNTAgNGZhZjhjMjJkYTYwYmUyYTJkNzgxZTNiMWJkZDk2MzlmNjFkMTU2NyBsZWdhY3ktdHJ1bmsKKzE2MzUxIDUwMjUxMTVkMjNjZjJiMWYwZDMxYTg5ZjlkZDQ5ZmI3YTJjODlmZDYgbGVnYWN5LXRydW5rCisxNjM1MiBjNTAzZDhlNDc0YjM3MGMyYTNjOTAxZDA0NmQxYzI5N2UwNDNiNTgzIGxlZ2FjeS10cnVuaworMTYzNTMgMjA3N2JmMTQxYjM3N2E0NDI2ODRkZDQwODVjOTZiMmYyMzYxNjBmOSBsZWdhY3ktdHJ1bmsKKzE2MzU0IDljYTUwZTI0MzNlYjQxZWYyNDk2YzM0MzQ5MmJjZjExMThmM2M0NWUgbGVnYWN5LXRydW5rCisxNjM1NSBkZjY0Y2MwZTg0ZTJhOTJhNzRlOTZlNDA0MTg5M2IzYjM4Mjk2NWYzIGxlZ2FjeS10cnVuaworMTYzNTYgNTk0OWI0NzU4N2Q5NTU1YmE0NmRhMjVhNjFmNmNkMmE5NDIxODljNiBsZWdhY3ktdHJ1bmsKKzE2MzU3IGExM2NlYTQzMGMxMzYwZTRlOGMyZTEzYzhkMjMzOWEzZWQ5MzZlOGEgbGVnYWN5LXRydW5rCisxNjM1OCA5MzBmNGJiYmQ5M2FhNmQxNTU5M2Y1YWY5NzY4ZTMyYzEzZTlmZTVhIGxlZ2FjeS10cnVuaworMTYzNTkgMjU4NDY4YTIwZDc0NTc2ZTVkZDdiMzFkNjAyODg4YTc1OWRlMDhiYSBsZWdhY3ktdHJ1bmsKKzE2MzYwIDA3ZDc0MDNjZWIwZjI1YWNjM2M2NGJlM2Y4YTMwMDRlMDI5NDA5YTcgbGVnYWN5LXRydW5rCisxNjM2MSAzMjYwMjIwYWFlZTQzZDJjNTdmNjg2NzRmYWY1MGI0NDA0MTFjZTM0IGxlZ2FjeS10cnVuaworMTYzNjIgMzlmNTRiOWE3ZjljYjY5NjIyNDMwZTNkOTc5NjNiYzZhODk5NzU0NSBsZWdhY3ktdHJ1bmsKKzE2MzYzIGVmOGIyMGI5ZjZmNTM3MTgyNzYyYzBjYzRjNjUwOGM5NWM4OTg5YmYgbGVnYWN5LXRydW5rCisxNjM2NCBkN2FlYzE3Y2QwYjUwNDZiNTk0ODBkNmQ1OWE2OWUwYzczZTNlZmIxIGxlZ2FjeS10cnVuaworMTYzNjUgNDJiNjcyYTA5YzRhMTAzZTU1OWZkNjEwMzNiMDJmOGI2OGI4NGFlNyBsZWdhY3ktdHJ1bmsKKzE2MzY2IDQ4M2U3NWVmYzExMTIxODBkZmE0ZjBjZDQzMDBmMjU3ZGY1YjgxMmYgbGVnYWN5LXRydW5rCisxNjM2NyBkYzE3ZWYxYTc2MTM4MGNiZWVlMmFmYTQyMGYxN2YyODJhNDQ4MTBjIGxlZ2FjeS10cnVuaworMTYzNjggYzlhNGExMzE2MTcwODA5MGIwNzNmODQ3OTZmYjM4YjFjMzRiMDc4YSBsZWdhY3ktdHJ1bmsKKzE2MzY5IDU1ODNjZmE2ZDJiMGYzY2RiMTQzYjQ5YWQwNDg3YTRjMzI4MGU3NTcgbGVnYWN5LXRydW5rCisxNjM3MCBhOTAxYzJjMDE2NmJhYTZhMTk1Mjg5YmVjMzM1ZTMwYzM5MWNiYzRhIGxlZ2FjeS10cnVuaworMTYzNzEgMjk1OTg3ZjNmYmQyMjAxMjc0MTk5YTRlZGVkYzE4OGVhZDI3MTQ4ZiBsZWdhY3ktdHJ1bmsKKzE2MzcyIDJlY2E0MDUxZjA1Y2I1Zjk0MTVhZjlkNmIyOTJjMmE0MDBkMDFjMTYgbGVnYWN5LXRydW5rCisxNjM3MyA4OGI0ZjNiNTA4ZGFhNTk4OWI1YzI2OTQzZWE5ZGFhODQ3NTQxNmFkIGxlZ2FjeS10cnVuaworMTYzNzQgZjM0MDFlZDEzMmExNGNmZjRhNjI4M2VmMzcwYmNjZWFmZTE1MzA4OSBsZWdhY3ktdHJ1bmsKKzE2Mzc1IDI2MDc1YzAzZjAyMjc5NTk1YjAyYjI3NTVmNzgyMzk4OTI2NDBmN2QgbGVnYWN5LXRydW5rCisxNjM3NiBlNzhlZGMzY2ZhZTZlYWU3MzIzNmQ4NzA4NTZkNTE2MWMyNWZkZTI1IGxlZ2FjeS10cnVuaworMTYzNzcgODdhNDE2ZDlkOWI2Zjc0MDE1NGU2ZTNhMGUzODViZGQ5YzM1ODVhYSBsZWdhY3ktdHJ1bmsKKzE2Mzc4IGY3ZDllNjE4NWY2MjIyYzFlYjJkNzRmYjRlNmIzYTY5ZGM4NjhmYzIgbGVnYWN5LXRydW5rCisxNjM3OSBmYTg5NDk2NTg0YzYyN2IzZmRlYzIzMmQzMmRlZTY1YTM1MzAyN2ZmIGxlZ2FjeS10cnVuaworMTYzODAgMDg2OTQ3Y2QyMDJjYzEzNTZlYTE4M2Q3MDhkMzhkMTRiYmE5YWZkMCBsZWdhY3ktdHJ1bmsKKzE2MzgxIGI3NDU0OGE5MGE2M2MwMzY5ZWRkMjQ3OTI5Y2Y3NWE1MjJmNGFmMmMgbGVnYWN5LXRydW5rCisxNjM4MiA1YjcyN2FiMzcwOTJkNTcyYWE3ODk0ZjYzOWNjZTEwMGM2ODk4ZjExIGxlZ2FjeS10cnVuaworMTYzODQgZjExYzQ3Mjc2NGFkMzcxNzE3Y2ExOWUzMTY4MjE0ZTkwZWFlZDA3NSBsZWdhY3ktdHJ1bmsKKzE2Mzg1IDM3OTE5NjdjYjMyZWY4NmZjNDkxNDUxNzAwMjBhODc2YTMzZGQzM2IgbGVnYWN5LXRydW5rCisxNjM4NiAxNjdkZTQ5NTM4MTJmYWNhYTZhZDFiZjIwMzAyNDJiZWFlZDA2YTkzIGxlZ2FjeS10cnVuaworMTYzODcgODNhNTk1ZTY5MWU0MjYyYjdjMjQyYjYwY2I4NWFkZWZkYTMwN2U1YyBsZWdhY3ktdHJ1bmsKKzE2Mzg4IGZkZmQxMDQ5ZjM2ZTk0M2U3ZDU5NDY4ZWQ4YTRlOTRkMzVmNDllNDkgbGVnYWN5LXRydW5rCisxNjM4OSBmNGRhNDM1NWFjZGU2MmZlNjJjYTY2ZGIzMGM4YTdmN2QyZWFkN2NiIGxlZ2FjeS10cnVuaworMTYzOTAgZjQwODRmNDQzZjMxOWRhNTk5NGE1NzIyNzBiNjFlNzVjMTI2NGI0NCBsZWdhY3ktdHJ1bmsKKzE2MzkxIGQ2ZDIzZDVlMjk2ZDQyZjRhY2FiZjUxMGQ3NzMyNjY2ZmRhYjVkNmEgbGVnYWN5LXRydW5rCisxNjM5MiBhMWFkNzkxZTE4MjE4MmVlNmM3MTQxNDhlODgxZGE5ODQyZjY0NjAzIGxlZ2FjeS10cnVuaworMTYzOTMgNzNjNjYxYmUxZWEzZGU2M2Y3Mzg2ZGY3OTM4OTgxNmYyM2FjYjkyZCBsZWdhY3ktdHJ1bmsKKzE2Mzk0IGZmODJmZDQyMmYxYzFhMzI4ZDJlM2FiMTY0YTkxODEzZTlmNWJiNTAgbGVnYWN5LXRydW5rCisxNjM5NSAwODU5NjA3Y2EzZTUzYmFhZjM1MWNkOGViYWRmM2I1NThhMDllNTNhIGxlZ2FjeS10cnVuaworMTYzOTYgZTE0NjliN2EyZTY4ZGIyOTI2ZTIwOTBiNzQxMmI1OWUyY2VhYWFhZiBsZWdhY3ktdHJ1bmsKKzE2Mzk3IDZmMGQ5NmU2YjVhNTEzY2I3YjE0MDdmM2M2MTJjMzRmYWY3NDRkNjUgbGVnYWN5LXRydW5rCisxNjM5OCBkZmI3ZWNmZmZlM2Q1YjFjNjZiNjRiN2YxMmE5NTc2Mjc0YWQyODQ3IGxlZ2FjeS10cnVuaworMTYzOTkgYjUxMjBmNThjNWRhNTgzMTBmOGRmN2MxY2U2ZmQ2MDVhNGNiMThjMiBsZWdhY3ktdHJ1bmsKKzE2NDAwIGQ5MDFjNDNlN2Q1OGNlOTlmN2FmODQ5MGMyYjM0YzgzZmZkYWUzN2MgbGVnYWN5LXRydW5rCisxNjQwMSA1ODM5OGMwZjk0OGJjODk2NzYzNzg5MDliZGExNDQ5YTQxYzU4ODQ2IGxlZ2FjeS10cnVuaworMTY0MDIgZTJlMjVlZWU2YTRiMTQ3YjhjZDMzMzc5MjdjZTMxODExZDZlNzkyYyBsZWdhY3ktdHJ1bmsKKzE2NDAzIDM3MThlNTM5OGZhZDM0Yjc2ODJhOTE2MmNhN2RmYzQ4MGY4NWI2OWYgbGVnYWN5LXRydW5rCisxNjQwNCAzOGVhMjc0NTVjYmIzY2I4ODc0YTg5ODYyNzYyNTBhN2ZiZWM0NzY1IGxlZ2FjeS10cnVuaworMTY0MDUgZGFjYzlmMTY3ZTk1OWZmNzBiNmJmZmY2ZGFkODIyODJhNDBmZWQzNCBsZWdhY3ktdHJ1bmsKKzE2NDA2IDE1MjhiYzNhYzczZDUwMzE5NDhjNmU0M2NjODg4ZDBlN2I3NDIzZjUgbGVnYWN5LXRydW5rCisxNjQwNyAyZDVhYTIxMmEzMjJiMmY5OTU4MzM3MjMwNmU0M2FlNDZmZWMxNTg4IGxlZ2FjeS10cnVuaworMTY0MDggMGMwOGRmYTYzNGMzNGU0N2JjMzM2YzU1ODVjZmFhY2NiM2QyMWYwZSBsZWdhY3ktdHJ1bmsKKzE2NDA5IDUyNTk1YjcwYTU2ODQ4OGZhMzU2OTViYTkxYjA1OTlkMjU4NDNkMDUgbGVnYWN5LXRydW5rCisxNjQxMCBiMmZiZDlmY2UwNWU1ZTUwMDViZTIzZDkzZDRkYjMwZTdiMmYxZjYzIGxlZ2FjeS10cnVuaworMTY0MTEgOGVlNGEyMDlhOWVmNWJhYmQxYmYxMDgwNDA4YzZkZTNmYmU4ZTNhMCBsZWdhY3ktdHJ1bmsKKzE2NDEyIGY4MDU3MWJiMjkxM2U3ODc3OWE0NDE5MzFlMzZjOTdiZjdkZjY0NzMgbGVnYWN5LXRydW5rCisxNjQxMyAzZDZkMjE4YjY3M2QwY2YxNDU1YTMwODJhOWMxMGExZTQ0ZGRmOGFjIGxlZ2FjeS10cnVuaworMTY0MTQgOGEwNjM0MjNlMGI3ZGY5OTc0ODhmMzFlNmJiNmVhYzU3Yzk3MjEyNSBsZWdhY3ktdHJ1bmsKKzE2NDE1IDExN2QyMDk2OGExMDQyZDAwNTE4ODQ1Mzc3YWMxMjVhOWZjMTkyZjEgbGVnYWN5LXRydW5rCisxNjQxNiBhNzRhYTQ5YjBjMzdmYWQ5ZWU2Y2FhMGZkYTJiOWIyMTZkNzNiYTVkIGxlZ2FjeS10cnVuaworMTY0MTcgMGJiNDliM2RiZGYwYWNhZGJlMzZkMGUwMGEwNmIwZmU2ZTgzYWQ2MiBsZWdhY3ktdHJ1bmsKKzE2NDE4IDEyNjUyZGE2ZDYzMmJhMDhkMjc1MGZkZTE4YzdhYzc2ODI0Mjk4MWYgbGVnYWN5LXRydW5rCisxNjQxOSA5OWRkMWM5MzMxNjE2YmRiODk3N2NmMTQyNDlkOTI1MGU0NTg4Zjc5IGxlZ2FjeS10cnVuaworMTY0MjAgNmE1MzE0YTZjMmMyOTllMzNjNzNjNzk0YWYzMWRhM2EzYTEwMmU4ZiBsZWdhY3ktdHJ1bmsKKzE2NDIxIGY3OTQzNGVlNDFmYTg2MDE5MjE2MjQwYmEzMmJlNjYwYmNmYzU0MTkgbGVnYWN5LXRydW5rCisxNjQyMiBlNzgxNTNlMTc5ZmJjY2FhNTEyOTdhMDkxMTVmM2Y3YTVhYWU2M2M5IGxlZ2FjeS10cnVuaworMTY0MjMgYTFjZTA3MjE4NzgxMzRiMzZkNTBkYjExZmQ4MmYwN2Q4NDNkZmVmYyBsZWdhY3ktdHJ1bmsKKzE2NDI0IGVmMjVmMzJjNDUyMzkzZjBkNGQxMDFjMzI3MzQ3YTE0M2UwMTdlZDMgbGVnYWN5LXRydW5rCisxNjQyNSBhMzg1NmFiNmIyMDZkN2QyY2Y2YmE2NzZiMGI1MTk5N2NlYWYzZjZiIGxlZ2FjeS10cnVuaworMTY0MjYgMjlkYTM1NTQzODMzMjE2MDM2ZDk0MTUyNzVjYzNlY2M2MGNkYjdjMyBsZWdhY3ktdHJ1bmsKKzE2NDI3IGVlMTA4MzRkNjdhMzZjNGY3YjI2MzA4M2Q3YmE3M2Y2YTJiNDc0MTUgbGVnYWN5LXRydW5rCisxNjQyOCBlYWZiNzk5NjNlYTY0ZWU5MTUwNGRkYjRlMjg4MWUyYzdkOTVjMDQzIGxlZ2FjeS10cnVuaworMTY0MjkgMzZkZTdiNmFiN2ViOTk0MTcwMTMzYzFjYzM5ZDhlMDdiMDZhZGNhOCBsZWdhY3ktdHJ1bmsKKzE2NDMwIGE2YzdiZmRkNjc3NzQ2NGFiZTk0NzlkMjgyYjU1OTlhZjk5OTk5Y2QgbGVnYWN5LXRydW5rCisxNjQzMSBkN2Q4MWVhOWM4MmRlMDE3NzE5YzUzY2ZjODE3NDEzZWZiOWZmNjE2IGxlZ2FjeS10cnVuaworMTY0MzIgZTk0YzA1MzUxZDQzNzRiZWE1ZDlhMGJiNGI2MTdlNTJiYWFkNTZhNyBsZWdhY3ktdHJ1bmsKKzE2NDMzIDQzODgyNDk1MDZkMTkwYTc2YTRkYmJiYzcwMjk0ZWY2YmEwNjU2ZDUgbGVnYWN5LXRydW5rCisxNjQzNCAyNjY4NWJkMmMwOWU2MWJmMzg5NjU1ZjgzZWYxNGY0MmI1NjA1NWQzIGxlZ2FjeS10cnVuaworMTY0MzUgYmZjNWIyYThjMTFmNWU2MjY2ODJiOThkMzc2ZmEyZWY2OTcwYTM5ZCBsZWdhY3ktdHJ1bmsKKzE2NDM2IGNjMGMwZGM5ZmVmMGRjNDQxYjg1NjNhOWI0NGM4ZDA0MGMyZTAzYjkgbGVnYWN5LXRydW5rCisxNjQzNyBjOTBkOTRkMjg3ZDc5Yjc0NWU0YjVhMGJkNTUxNWNlZGE3MzE3NGU2IGxlZ2FjeS10cnVuaworMTY0MzggYjE5NTlmMDA2NTY2NTkxYjNiZTE0MDFiOWNkMGYxNjQ1MWViYzYwMCBsZWdhY3ktdHJ1bmsKKzE2NDM5IDU0MjNiMTMyYmM5N2FmNGQyNDA3NmNlZjE2ZjI3M2I2NGZhZjA0ZDMgbGVnYWN5LXRydW5rCisxNjQ0MCBlZGIxYThlNmI4NTk1OTYwYmJkZDc4YmJjNjBhZTFmN2RlNzViZDkyIGxlZ2FjeS10cnVuaworMTY0NDEgMzE3N2UyODI5MTY3Nzk3ZWEwODE2Y2Y3MDcyZTQwM2NmOGMyN2FlOCBsZWdhY3ktdHJ1bmsKKzE2NDQyIDYxZjY1ZGUxOWUxZTY4ZWFhYzk3NWUzYmM1NTI0NzExMmJmYjA0MmIgbGVnYWN5LXRydW5rCisxNjQ0MyA5ZjYxODllODkyMTIxNTk0NjlhNjE1ZWE3MjQxMDU5ZGRhODJmMmEyIGxlZ2FjeS10cnVuaworMTY0NDQgYjBlODM5NjJmNGRhNzA4ZGI3OGVmMTcwYjQ0MzEyM2JhYjNiMmQwZiBsZWdhY3ktdHJ1bmsKKzE2NDQ1IDdkZTE4ZjA0Zjg1YTc3YTFkNTVhYjYxOTFiZmUzYmM1OTVkYTc1NWEgbGVnYWN5LXRydW5rCisxNjQ0NiA4Y2IyNGUwYmVmOWJlNTljM2RmNTA4ZmQ2MTgzYjVjZjM4NGQ5OWJhIGxlZ2FjeS10cnVuaworMTY0NDcgZWMxOWEwYThjZDY4NzdiMTlkNDI1ZTQ4YzdhYWYwODVjN2I0N2I4ZiBsZWdhY3ktdHJ1bmsKKzE2NDQ4IDEyOWM5Nzc1Y2MxOTMyMGNlNTg4ZTA0Y2E4N2EzNDc3MGVhZWQ1OTggbGVnYWN5LXRydW5rCisxNjQ0OSA5YTU4NTVlYTNlNTZhZTU0Mzk0MDU3M2Y1N2JmMzlkZWY0OTA1M2MxIGxlZ2FjeS10cnVuaworMTY0NTAgNjM4MzJlZGU1NzdmYzU5ZjliNDhhZWM5OWViNGY0ZWQ1YTBmNjMzZiBsZWdhY3ktdHJ1bmsKKzE2NDUxIDk1ODk0YzMxMDhkMTk4NWY2MDQ4NWUzNDViMTAzNjgxZjgxMWExMzYgbGVnYWN5LXRydW5rCisxNjQ1MiA5ZGI4NmIyNzI3OGZjOTIzNjVhOGU0Njk4Zjc2MzY2ZmEyN2VhYTk1IGxlZ2FjeS10cnVuaworMTY0NTMgYzA5YzAxNzE0NzRmMGY0OWMxZGFiYzA4NGRhZDg0Mzk5NmI5OTBkNSBsZWdhY3ktdHJ1bmsKKzE2NDU0IDBmMWM2MDUzZThkMDkyMjM3MjhjYTc4YWRjZTA2ODc2ZTMzYzdhYmUgbGVnYWN5LXRydW5rCisxNjQ1NSA3OTNiYmFkNmQwOWNmMDgzOGM1ODBiYzYxZTA0OTI0ODFiMmY0NzM2IGxlZ2FjeS10cnVuaworMTY0NTYgMjVmYzY4MDc3YjY2NTQzNDAyZTcyYWY4OWEyYmRjMGFiZTM0ZjA2YiBsZWdhY3ktdHJ1bmsKKzE2NDU3IGI1NGYxMWFkYTkxZWEwMTM4ODVhMzE0OGFkNWJkMDYwYmNiZTZlYmEgbGVnYWN5LXRydW5rCisxNjQ1OCBhMjhlZDhjNWU2MmUwMjZjYTI4MzVjYTg0YjdlNWYzNzEwZWNkMWQyIGxlZ2FjeS10cnVuaworMTY0NTkgYmIzNjRkNmY5ZjY5MjU2MDQxNjBiZTM2YzQyZTI3ODUwNzQwMmNlOCBsZWdhY3ktdHJ1bmsKKzE2NDYwIDVlMmU5MWZmYWRjZDhlNDg1ZWZhNDEzZjJjOGFmYTRlY2RlMzliNDMgbGVnYWN5LXRydW5rCisxNjQ2MSBjYjI5ZDRhMmMxN2IwYjNmZWZiNGM2N2MzOTNlZTA3MjlmYzg1NWI2IGxlZ2FjeS10cnVuaworMTY0NjIgMDI2ZTEyYWM5ZjcxYjQzOWVjYzcwNmZlZjQ2ZDNhM2YzMDE1Y2FkOCBsZWdhY3ktdHJ1bmsKKzE2NDYzIGQ2ZGRlZDNjODUwNzc4ZWMxOWJlM2NlODc4NzY0OTNjMTM1MmU4N2EgbGVnYWN5LXRydW5rCisxNjQ2NCBjNjgwMDNlZmI3OTZhM2ExZDA4ZDBjYjFiZGQ3N2Q5MmJhNjJlYjU3IGxlZ2FjeS10cnVuaworMTY0NjUgZjg0MGJmNmEzMzUxZTYzOGNhNDMxNDA1YTY2MDExYTcyMzkzZGY0NiBsZWdhY3ktdHJ1bmsKKzE2NDY2IDk3OTcwMTY5OGNkMjk3MTE1ZmRjMzNhOGFiNWMwYTZmZTA2MmE2OWMgbGVnYWN5LXRydW5rCisxNjQ2NyBjOWZkNTJkN2NhMGFlN2M5NDNjOTlmOTRmOWViYjE4NGVjYjk3MDQzIGxlZ2FjeS10cnVuaworMTY0NjggNDYxZjliNmVlNTU1NzViYTU2MWFjYTUxNzk1NjU4YWY0M2UxMGI3ZiBsZWdhY3ktdHJ1bmsKKzE2NDY5IDJlNjAzYmQwYzFhOTNkN2M0NzEyOTI0YWY2MTY1MzIzYjdiODE2ODMgbGVnYWN5LXRydW5rCisxNjQ3MCBkZDlmZmEwYTZiMTEwN2UwNzc2MTEyZWI2YWE5YmM3YmNjYjc2M2Y0IGxlZ2FjeS10cnVuaworMTY0NzEgZmU4OWVhMWM5MTA4OThiYTNkYmExOTk3NGQ1OTNmYzAwZmZhZDM0OSBsZWdhY3ktdHJ1bmsKKzE2NDcyIDRlMmFhZjFlNzIyYTc4NzI1MTcyNzA2MDhjZjFlMjg2MjgzZjczMzcgbGVnYWN5LXRydW5rCisxNjQ3MyA2OTdjODhjYzQ3MTRkZmIwMmQ2M2VhMjJmZDExYzhlMDM1MTNlNjQ4IGxlZ2FjeS10cnVuaworMTY0NzQgNDg4ODZmYTgyYWQ1MGU4NmFhNWY4NWVjZTVmODJkYTk1NWZkNzZmMCBsZWdhY3ktdHJ1bmsKKzE2NDc1IDAwMDMwZWI4ODEzMWY4NDBmM2IyYmVlOTJkMDM3ZWM0YzkzNjFhNDEgbGVnYWN5LXRydW5rCisxNjQ3NiBjODdhMzdhM2QyZTY1Yjc2MTRkNzFjZGQzYTM1ZGJkMTkyNzUyYWNhIGxlZ2FjeS10cnVuaworMTY0NzcgYzlkMDM5MTk2ZGI2MTA4YjIyZWFlM2JhNmEwOWE1YzVhNzZhNzM5ZSBsZWdhY3ktdHJ1bmsKKzE2NDc4IDA2ZDQyMjU5MTlkNGQyNjM3MjY3OWNlMzA3MTBjNmE3ZTllNmY5ZDEgbGVnYWN5LXRydW5rCisxNjQ3OSA2NTc4ZmFmNDhjZDFkNDljZDk4OTcwNDVlODk4ZjhjZWU1NjNmYjZlIGxlZ2FjeS10cnVuaworMTY0ODAgNWMzZWU3NmQyNDJlM2U4ZjFlZDY2ZGExOWFhM2JkNzY3OWMzZGUxOCBsZWdhY3ktdHJ1bmsKKzE2NDgxIDE3MjkzZjEyZTg4NDBlYjJlN2Y4NDAxMDhlNTBjYWE5MzQ3MjMxNDIgbGVnYWN5LXRydW5rCisxNjQ4MiA3NjdiMmY3YmU0MGU2M2RmZTU0OGUwZDJiZmY3ODUwYmRkZjI1MTJiIGxlZ2FjeS10cnVuaworMTY0ODMgZDNmNjk0MDIzNjQyNWJjZjg4YTAyMjVkMjM0MTkwNTQ5N2M5OTNlZiBsZWdhY3ktdHJ1bmsKKzE2NDg0IDA1ZDU5ZjQ0NzZhZDUwZjZhOTQ5NjRkMmE2YmJlMDc5ZjEzM2RjYjIgbGVnYWN5LXRydW5rCisxNjQ4NSBiM2U4ZDJlM2RjNzNiMDRiMGVkMTNkZWMyNGYyZWU2ZWMyNjU2MjM5IGxlZ2FjeS10cnVuaworMTY0ODYgYjdjOTNjNjc3ZTU2NTg5ZTY2MDM3Y2VhMWE3NDdkOTJmMDNlODMxNSBsZWdhY3ktdHJ1bmsKKzE2NDg3IDU3ZDAyZjYzNGEwMmI3Nzg5MGM2MDkyZGJmZDE3YmZlMDJhZWEzNzkgbGVnYWN5LXRydW5rCisxNjQ4OCA0NDlkZDNhMDBiZDcyOTI5ODk2ZWIxMDczNGNkZjg5Y2M2NDczZWU2IGxlZ2FjeS10cnVuaworMTY0ODkgZWNiOGFhY2ZmMmUzYWU4NmZmNTM3Y2UwYjBkYjkyYjUzNDZjMTlmZCBsZWdhY3ktdHJ1bmsKKzE2NDkwIDA1MTc3Y2Q0NDFhMThlNzg2NzhlZDk3YTZmNDJiZDJiZDNmMTBhZTMgbGVnYWN5LXRydW5rCisxNjQ5MSBiNzY5ZTJkZDZhNTFiZmZkNjYwN2UwZjU3NzlmM2RhMDI1MmQwZGEwIGxlZ2FjeS10cnVuaworMTY0OTIgNTQ4NjFiZjY3NDhkYTYzZjc4NGY2ZGU4MjhhYzg0Yjc4MGNjMTFmYyBsZWdhY3ktdHJ1bmsKKzE2NDkzIDY4OWYxOTAwNDA2MzU0MzZiOTAxNzJmY2RjYjcxZTUzNTY0Zjg5NTAgbGVnYWN5LXRydW5rCisxNjQ5NCA4ZDk5NmY5YzU5MDNiZjBjZDZlN2I2OGJlNjZlYzM5ZmRjN2YxZTBlIGxlZ2FjeS10cnVuaworMTY0OTUgOWNlM2UwNWI3ZmRiMjc0YTZhNzU1OTk1MWUxODUzMjFkMDdlODY5NSBsZWdhY3ktdHJ1bmsKKzE2NDk2IGJhMzZhOWMzZjQ3NzE0MjAzNDYyZDJjMmRkYTgzODk4ZDUwNzFhYzAgbGVnYWN5LXRydW5rCisxNjQ5NyAzYjY5YTlkMDQ0ZjFjNDMxZjc4MzIyMTIyM2ZlZDIxMzU4YTZjYmRjIGxlZ2FjeS10cnVuaworMTY0OTggYTk0OWE3MmFmOTY5Y2IyZmY5NDAyYTFmODQ5NWU0ZmQwYTU3ZGYyYSBsZWdhY3ktdHJ1bmsKKzE2NDk5IDMyY2UyNTRmM2JlYTZmOTBiYTQ2NmMxMjk1YjY4MTE3YjI4MDI2NmMgbGVnYWN5LXRydW5rCisxNjUwMCBjMzFiMTNiN2RiNzQwNzUxMDY4YjZjNzRiZjQ1ZWIxMDc4YjZmNmM5IGxlZ2FjeS10cnVuaworMTY1MDEgMTQ3NWMxY2MzYmYxZWU5YzAxNTk1YmQ4N2Q2MWNiYTA2ZjM0NGFiNyBsZWdhY3ktdHJ1bmsKKzE2NTAyIDgyZDljMmYxMzA5OGU1Yzc2ZmY0OWFjY2JkNmVlZmRkZTZiZDE0MzQgbGVnYWN5LXRydW5rCisxNjUwMyA5OGQ4MTY5NTYzZTcxZDc0YWFlMzZhMzFkNDljYjZiNGQ2YmY0ZGJiIGxlZ2FjeS10cnVuaworMTY1MDQgZjY1Yjg2NzM4ZDNiNThjMjFiMTM5NmY2ODExN2I2ZjUzYmRkZmQ2YiBsZWdhY3ktdHJ1bmsKKzE2NTA1IGVlOGYwOWU0MTM5NTQ2MWJhYjhhOGUwMTg4MDdkMzY1ODQxZmFjOTMgbGVnYWN5LXRydW5rCisxNjUwNiBjNzZlNzRhYmI2NWJhZjNkZWY1NDQ1ZWIzMjQwNzU1OWM4MGIwYjZkIGxlZ2FjeS10cnVuaworMTY1MDcgNWEzMTE0ZThjMDI3YTk0NjNlYTg0OTM4Mjc4MmUyNjhmYmM4NTA2YyBsZWdhY3ktdHJ1bmsKKzE2NTA4IDVjMDY3YzFiNWVkMGQ4YTVlNjkxZjc5MzY5ZDkzMWU5NzJkNWM1NTMgbGVnYWN5LXRydW5rCisxNjUwOSBhNDRkYmJkZTVlY2ZkYTU3OWE5NjU5YjlkYmIzYTY2YzI5YTQ1ZGE5IGxlZ2FjeS10cnVuaworMTY1MTAgN2FlOWZhNDA5YjQ2ZjI2YzUyMzEwM2Y2MWIzODNjZmY1NDJjY2VlNCBsZWdhY3ktdHJ1bmsKKzE2NTExIDA4M2I0ZTU0NzE3MWVmOWE0ZGJlNDU3MmQxZDU0ZjBmNzE0MDQ2M2IgbGVnYWN5LXRydW5rCisxNjUxMiAxZTlmMzBlZWM0ODI0NDgxZWRiYWEwMzE0MmQzY2YwZTA2YTBkNWE2IGxlZ2FjeS10cnVuaworMTY1MTMgZGZkYjkxMWNiZWMyNTJjOTM2NjViYmMxZDdhOWY4YWRhZmI0YjRiNyBsZWdhY3ktdHJ1bmsKKzE2NTE0IDgzZGJhM2Y1ZjdiNDZhMDA4YjkwMDFkOTQwYjU1NTdhMGI3NjgwNzAgbGVnYWN5LXRydW5rCisxNjUxNSA4ZDEwNzU3YTU3NWIwYTZjZmU1MWZkODhhMzQzMjhiMDU5NzNjMWZlIGxlZ2FjeS10cnVuaworMTY1MTYgODRmODU3OWEwNzljZGFhYmZkYmVkOTU1YThlMTQ5NTA4NWYyZDNmZiBsZWdhY3ktdHJ1bmsKKzE2NTE3IGU4ZGMwYTBiZTRiYWNjMDgxN2ExNDVhNTY2ZDcyMWY1NzA5MGExNzAgbGVnYWN5LXRydW5rCisxNjUxOCA2MzJiZTk5Y2MyY2IxMzg0YzAyYzVmNWRiZDA4M2VhNzdmMzI0NWUyIGxlZ2FjeS10cnVuaworMTY1MTkgMDBlZDRiNzQzMDJmZDdlODY3OWUwNWIxN2ZkZDFjMDhiZDVhNjVmNCBsZWdhY3ktdHJ1bmsKKzE2NTIwIDY3YjliMDVjZTVhNWRmYjI3NTIxNjAzYzBlNjQyNzVjNzYzYWQ1OGUgbGVnYWN5LXRydW5rCisxNjUyMSBiYzM3ZTZhMzM1ZjIxNWQ5YjljYTkzZDVmMzZjNTRjMzEwYThkY2FjIGxlZ2FjeS10cnVuaworMTY1MjIgNDkzYjEwNjU3NjNkYmZjYmMzZjI0MjBlODVlODA5Y2MzNDc2MDE2YyBsZWdhY3ktdHJ1bmsKKzE2NTIzIDE2YjYwYmQ2YzM3NWRhOWJmNGZhZTY4MGQ1MGE4MGU0ZGQ4ODEzNzQgbGVnYWN5LXRydW5rCisxNjUyNCBkODlkYTE3YjQ2ZjYxMGFhNWZjZjk2MjI5MTAzZmVkMDdiYTgxNmI2IGNucmktMTYtc3RhcnQKKzE2NTI1IDZmOGQyNGIzMzJkMzVkNTk1Y2Y0ZjJiMmQxYWRlZDUwMGE3NzFmNGQgY25yaS0xNi1zdGFydAorMTY1MjYgNTlmOGNlZGNmMDQ5NTFjMzBmZDhhMGMyYTI5Y2ExM2NiODUyNTQ3ZiBsZWdhY3ktdHJ1bmsKKzE2NTI3IDJkMDBiY2VkNjAzODcwYTMyNzM2OGExNjU2MjljZWRkMzBjODE1N2YgbGVnYWN5LXRydW5rCisxNjUyOCBjMWZjNDA2NjQ2MDM4MmYzZDMzOTIyNzZlZDgzMzQyODcxMmEwOWVhIGxlZ2FjeS10cnVuaworMTY1MjkgZmRiYzg3MzBkMzU2OTg5NzBkZGRlNDBmOTU1M2FlZDBlOTJmYzQwZSBsZWdhY3ktdHJ1bmsKKzE2NTMwIGIxYjQ3NGNjODk2NjQzN2RhNGVhMjE0ZWUxNjY1MTQ3OGNhNzMxNjggbGVnYWN5LXRydW5rCisxNjUzMSBkYWQwMTMxN2JlZDcyZmFmNzA1ZWI1MDk2ZjE5ZDI5ZjMxMjI3YjExIGxlZ2FjeS10cnVuaworMTY1MzIgOGJiYzBlNjQzMmFiNDgyYmI4NzhiY2Q5NzgzNjAzNjYxNjY1MjBlYyBsZWdhY3ktdHJ1bmsKKzE2NTMzIDMyM2RlM2E4ZmY4ZWJjMjViOGYzNmI4NTUyMDk1OWZjZTM4YzczYzAgbGVnYWN5LXRydW5rCisxNjUzNCBmNzFjZDI0NTM1YzQwNjE5Y2M5MTYyZDlmMzI0NTNkN2UzMmNiMzAwIGxlZ2FjeS10cnVuaworMTY1MzUgYjA4YWIyY2RmNzQyZDEwYWRjODJmMjQzMTcyYTA4Y2M4NDBhMTMyOCBsZWdhY3ktdHJ1bmsKKzE2NTM2IDJjZmZjZDcxZDVlNDE0NzE0ODJkM2NjY2E0YmEzYzExNmU1NTY0ODkgbGVnYWN5LXRydW5rCisxNjUzNyBlZWE1MTI3NWFjYmZiNDQyZmFlZGFjNDNmZDAzZjg1ZjNhZmFlZjAwIGxlZ2FjeS10cnVuaworMTY1MzggYjZkOTNkYmExMjBlYWI1ZDU2MTAyMjM3YzNmMjM4YTZkZjUyOGYyOSBsZWdhY3ktdHJ1bmsKKzE2NTM5IGYxYzk3YWY0Yzg0NzA5YmU2MmE3MGY2NmIwNGZmMTEzMDgwODdkY2QgbGVnYWN5LXRydW5rCisxNjU0MCA5ZmJjZmJmOGExZDI5MmI4ZmVmMDNiZDM4ZGZjNTYzNGU1MDVkNjllIGxlZ2FjeS10cnVuaworMTY1NDEgMzNkZjNiNTE2NzExOWUwNTNiMGRlMzIwYWRjMzU2M2ExMjFmOWUxNSBsZWdhY3ktdHJ1bmsKKzE2NTQyIGIzOTAzZTA1MDE3ZjE2MDQyYTY1MDkxNjBmYTY4NGM0NzhmYjYwZDUgbGVnYWN5LXRydW5rCisxNjU0MyBmNmU0YTlkZDY3Y2RkM2VhNGFjY2VmNzY5NjY2M2FmMjM1NWQ5M2NlIGxlZ2FjeS10cnVuaworMTY1NDQgYWI0MmQ0NTQyNDI0ODUyZjkwZDU5ZTNlZjI4YmUyMmE1NDBiMjg2MyBsZWdhY3ktdHJ1bmsKKzE2NTQ1IGUyMGZlMDA1MjY4MDk1NTRjMDhiNGY2MWI4OGU0YTBjZTZjODE2OGMgbGVnYWN5LXRydW5rCisxNjU0NiBhZDM5MDI0MGVmYjNiMDk1YWMxYThmYmMxMjhlMDYyYjdiMDI4ODYzIGxlZ2FjeS10cnVuaworMTY1NDcgZmYxMTFkMjg5OTA1ZDUyNDc3YzM1OTExMDkxNjRkN2M3OTk1MWI4MSBsZWdhY3ktdHJ1bmsKKzE2NTQ4IGMyNGY3NzU1YjFmNTI1NTFkMDViZGJmMzliNWQzMTRhOWYxMDg0ZDAgbGVnYWN5LXRydW5rCisxNjU0OSAxYzE4NjAzMDY4ODIyOTcxNmNlZTNhYmIxMzM3YmNlYzI2YzVjNmQ4IGxlZ2FjeS10cnVuaworMTY1NTAgNDIwNDU2NGFiZjIwYzUzZmZlYTY0YzY1MDBhYjFjZjgyOTA3ZDEwYSBsZWdhY3ktdHJ1bmsKKzE2NTUxIDY2NTc5NTZhZjMxZTBhYTY1ZmQwNThlOGZkNTNiODJlYmJmYTI0YzcgY25yaS0xNi1zdGFydAorMTY1NTIgYzkzNjg3ZDZjNzMxNzE4ZjlmYzI0YzkyYjJkNWUyNzU5OWE2ZTAzMyBjbnJpLTE2LXN0YXJ0CisxNjU1MyBmMTI5MGFiYTI5ZGE0YTI3OGFhZThmYzQyZGE5ODhkOTMwNjJmNDFiIGxlZ2FjeS10cnVuaworMTY1NTQgMWY5NjZmMGQ0NjdjYTFkYTc0YmY2MjU1ODEzMmIwNTE0NzA0YjdjNiBsZWdhY3ktdHJ1bmsKKzE2NTU1IGY2NjUxM2EwZGVhNWE1NWUyYWZhMjRmODE0NDhmMWJhMzFkOTM1ZmQgbGVnYWN5LXRydW5rCisxNjU1NiA0ZWRkMTNlYjc1OWQyNmMzZjYwOGE2ODdmMTE3YTIzNjMxZjE3MWNiIGxlZ2FjeS10cnVuaworMTY1NTcgYzY2ZTk5MWI1ZjIxN2NiYTY5OGQ3ZDA3ODcwY2NmMzQyYTZjOWIzNiBsZWdhY3ktdHJ1bmsKKzE2NTU4IDA2Mzc0MTNlNTkzOTdlNzQ4NWM1YTU2OGY2YmU5ZGFkNzI2NjVmZWYgbGVnYWN5LXRydW5rCisxNjU1OSAxYjc4MTM1NzVhZjdkYzk0MjhkZmVhNmFmNjAwOWUzMTQ4ZTkwMTk1IHVubGFiZWxlZC0xLjguMgorMTY1NjAgMzUyOTY4ZWU0MGU2MjlhZDI3ODNmZmRhMGNjNWI2NzkyOTA3NzJmNCB1bmxhYmVsZWQtMS44LjIKKzE2NTYwIDZmN2FiNzRiMTI5OGRhYzUxYTIxNDNiMmY4M2IyYjY4MDNlYTEyZDUgY25yaS0xNi1zdGFydAorMTY1NjEgOGZiZjMwN2I5MGE2YzJmNGU0N2FmYWQ3NGJhNTRlZTg4N2NiYzA5MCBjbnJpLTE2LXN0YXJ0CisxNjU2MiAxMzZkM2Q3MjY2NmE3OTUzZmM3NDJlMzhkZTE3MWE1MGI1ZDU0N2IxIGxlZ2FjeS10cnVuaworMTY1NjMgNGMxMGJjODExZmVkYWFkNmExYjliNzkwZjc3NmY5NDAwMTVhMDk1OSBsZWdhY3ktdHJ1bmsKKzE2NTY0IGJhMTM4M2M5ODdjOGRlOTg4Mjg5NjQwYTMwYjJjYWI1NDMyZTE5NzkgbGVnYWN5LXRydW5rCisxNjU2NSA4Mjk1Zjg1MDZlYWVhNzU5NmY5M2M3NWNlYzAxNjI1ZGRhYWIxOTFlIGxlZ2FjeS10cnVuaworMTY1NjYgNDJhNGE0MTdiNDc1MDNmZDMxYzExY2Y1ODUxNjVmYzBiODgzMjc5YyB1bmxhYmVsZWQtMS4yMy40CisxNjU2NyAyYzc4Njg5NmU1NDlkNGVlYjc1ZjFiNDRiYzM3OGNlYzE0NDcwODlmIGxlZ2FjeS10cnVuaworMTY1NjggZTAwZDNjZTcxZjg5M2FiY2U1YjE3NjcwYWU4YThiZmFmMTQ3OGI3MCBsZWdhY3ktdHJ1bmsKKzE2NTY5IDAzMWRhZTA4YTBhOTg4MDJkYTZkYWRlZjY4YTBmODRhNzg3OWY4OGEgbGVnYWN5LXRydW5rCisxNjU3MCBhYzQ4ZDA3N2VhYWM5N2JjNWNmMzIyOTQ4MDQ4ZGFhZWM4ZWYxNThjIGxlZ2FjeS10cnVuaworMTY1NzEgNTQ2NjMyNGJiODExNGVmN2JhODg5ZmE4ZjQ3MWYyNDI1Mzc1Nzg2NyBsZWdhY3ktdHJ1bmsKKzE2NTcyIGZkNDM3Mjc4NzYxMWFhNzFlY2M2OTlkYmRiNmI5ZTA3ZTQwYzY5MTEgbGVnYWN5LXRydW5rCisxNjU3MyBiMWE3ZjYxYWI3ODExYjFjZTI4ZDc0YjUyZWIwY2UwZjE0OTVhOGIwIGxlZ2FjeS10cnVuaworMTY1NzQgZThiMjJiYzg4ZDk1ZWEzZjdmMWFlMDVhYmM1OTM2YWI1ZjM2MzYwYSBsZWdhY3ktdHJ1bmsKKzE2NTc1IGM3N2Y4ODczZGE4NDEzMjQ4MmMyZGY3ZTk1MTZjMjc2ZTkwMGVkOTIgbGVnYWN5LXRydW5rCisxNjU3NiAxMTYyNTYzM2QwZjY3MDBmYzAyZTgyOTRlOGY1M2RlZDZmNmM4ZmEzIGxlZ2FjeS10cnVuaworMTY1NzcgZGU5MDY2MmYyZWFiMTU0NmNjZWU1YWQ0NzcyMjBkNjYyZDQ3MjRiMCBsZWdhY3ktdHJ1bmsKKzE2NTc4IGJhOGRiOTZlYTRkOWZkNDVjZGU3ZWU4MzY2Y2Y5ZDU3MWY1MDQ1ZWIgbGVnYWN5LXRydW5rCisxNjU3OSAzNzRkYTU4MmVjMTJmNGRhYThmZWIwNmJkZGJmMTAyZTA1MDIzMGQ1IGxlZ2FjeS10cnVuaworMTY1ODAgZjM5NjhkZDE3MTFiMjVhYjdiNzU5MGM0ZjViODhkMWNiOTk2ZTU5ZiBsZWdhY3ktdHJ1bmsKKzE2NTgxIDc2MjM3YzBjYmYxMzNmNmRiOGE2ZGNkOTVhNWFlNjk5ZWUzZDFiZDYgbGVnYWN5LXRydW5rCisxNjU4MiBmMzhlMzIxYmU4YTQzNjQxNjAxYTI4NmUxMGMwZmQ5ZWY3NjQ3MTVlIGxlZ2FjeS10cnVuaworMTY1ODMgNjQ4NzNjZjIwYjE2YjQwZjk5MTEzOGFlMGM4OGYxOWU3ZGRiYjdkNCBsZWdhY3ktdHJ1bmsKKzE2NTg0IGFjZDA3NTVlZTc3MjUxMzhmNzI1MGZjNDc3YzRkODFkMGZiMDQ2MzYgY25yaS0xNi1zdGFydAorMTY1ODUgNGY3MzdmYjA0NTI4ZGJkYjFlZDI1Y2IyZjc1ZTQyYzk1NWNmOTczMCBjbnJpLTE2LXN0YXJ0CisxNjU4NiA0MWFkMzZmYjAwZWU5MzVlZmQ5NmUzZjdiNjE0NGU1MjZmY2M4ODczIGxlZ2FjeS10cnVuaworMTY1ODcgNDVkOGYyM2RmMjE4MmMxZDc2NjY5ZTQ5OGZhNGRlMGIxODM1MGFjMSBsZWdhY3ktdHJ1bmsKKzE2NTg4IDUxZjI5ZmNiZDliYTVhMzBlMzRmYmI4OTE4YjI1ZDU1Y2FlMmM5M2MgbGVnYWN5LXRydW5rCisxNjU4OSAzM2ZmNGQ0ZDkxYWMzZDhiMzc3MjM2ZjU5NTMxYWJlZGRhNzE0Zjc3IGNucmktMTYtc3RhcnQKKzE2NTkwIGFmYmJlNjc0ZDU4YTBiYWJmZTlhOWM0ZjdjOTNhYjdlNDIzNTY2YmIgbGVnYWN5LXRydW5rCisxNjU5MSAzYzBmNzVhMjE5OGZmMTkxMjMzMThlNDNjYTNiZTFjMTU4OTIwNTljIGxlZ2FjeS10cnVuaworMTY1OTIgNjYyMmQ3NjMxY2NmZjFmNzBmNTA1ZGYxNzMyOWVhOGIyYjc2ZjliYiBsZWdhY3ktdHJ1bmsKKzE2NTkzIDk1ZWVlODY4NjExZWM2OGY3YzI5MDJlMWFjYjM5YTZlYzI0YTk2NDEgbGVnYWN5LXRydW5rCisxNjU5NCA4YmQ4MmNmMzYxYWE0MjQwODU0Y2I0Mjg2MTg5ODdiMWQ0NWI4MDlkIGxlZ2FjeS10cnVuaworMTY1OTUgMzVlMjI2Njg2YzJlZDgwMGEzODc0ODY3MWFkYWM5MzNjOTdkNzk1YSBjbnJpLTE2LXN0YXJ0CisxNjU5NiBkNDMwMDk3ZDFiZmQxODk5ZTMwNDY3OWU0ZmQzMDY4NmY3MDZiN2I2IGxlZ2FjeS10cnVuaworMTY1OTcgYzU3YjU3NGU2NzY2NGRjMmM4YzBiZDQxMzBjNWI5ZWE1Yzc2NjY5MyBsZWdhY3ktdHJ1bmsKKzE2NTk4IGVlZWQ3YmM4YTI4M2Q5NWEzOGM5MzMyODM3ZWU5MWU5NjQwOTE5ODQgbGVnYWN5LXRydW5rCisxNjU5OSAwODRjNjNkODVmOTA4Mjk1NGQ1NTE2NTI4MzA3ZjYwYmUzM2ZiNGU3IGxlZ2FjeS10cnVuaworMTY2MDAgYTEwZGM3MjE1YzFlYzE3NWJjMzA0OTFiNjJkNzMyOWRhNzNhNjViZCBsZWdhY3ktdHJ1bmsKKzE2NjAxIGM2Mzg2M2FiZTFhYTlkZGVhYjEyZDYwN2EwMzU5Mjk2NDk2YjA0MzQgbGVnYWN5LXRydW5rCisxNjYwMiA1ZmQ4MGM4MmExNWE5MTQzNDg3MGVjNmExYjlhMTg5MWU5MzE2ZmRmIGxlZ2FjeS10cnVuaworMTY2MDMgMjU0ZjhiN2M0YTgzODEzNjU5ZjIxZGExMDFmMmUzMTU0OGU1NjRjMCBsZWdhY3ktdHJ1bmsKKzE2NjA0IDYxY2M1NGMzMTNmNmNkMTU4N2ZkY2UxNGEzMDFjOGEwNTM4MDg0ZjMgdW5sYWJlbGVkLTIuNTQuMgorMTY2MDUgMDJlMDgxNmU0YjM3MTdiOWYwMTcxYWZlZGNhNjY2N2NhNTJhMjc1YiBsZWdhY3ktdHJ1bmsKKzE2NjA2IGU0YzM4MGVlOTA3OWY3MTM1MjczNzU0MmM3OTFmN2RhNmZkMTdkZmMgdW5sYWJlbGVkLTIuNTQuMgorMTY2MDcgMjNhNjJhODc1MWI0NzYyYjg1ODk3MjRjZDkxNTFhNjkzMzk3ZmEyMiBsZWdhY3ktdHJ1bmsKKzE2NjA4IDE1MTE0ZTAxNzY1Mjk0NjAzODdhZDFiODIyZTdhZDc1MGFkNDNkYWUgY25yaS0xNi1zdGFydAorMTY2MDkgNDAzYzk3MGQxYTVlNGFjOWNiMWFhNjk2NzdkZGMyY2JiOWVlMGNkZCB1bmxhYmVsZWQtMi4xMDguMgorMTY2MDkgOWFjZmQwMzdjYjk0ZGExODM2MDYwMjQzMzgzNGFiZGJjMjlhZDk0YyBjbnJpLTE2LXN0YXJ0CisxNjYxMCBjMzc4M2EzM2Y4NGJmMDM1NzhlOTI2ZDZiNDZiMzhlMzg4ZDk1NzM3IGxlZ2FjeS10cnVuaworMTY2MTEgYjAxNmVjODczOGY5ZDIzZGU4ZjJiODE1YmU5ZWIyNWM4MmVmZTZjMCBsZWdhY3ktdHJ1bmsKKzE2NjEyIDUxMzZlMzdmZjU0OGU2OTEwMTczMjE0NTliZmRlYzZkZmI2YTU3MzQgbGVnYWN5LXRydW5rCisxNjYxMyA0YWViZDBmMmEwNjI2OTIzZjVjMTc2NTgwYzUwNGY5MmIyMTIxNDM5IGxlZ2FjeS10cnVuaworMTY2MTQgNjMxYjVkZjQ0ZGU2MDk1MTM4OWVmNzBmYjczYmVhNzJmYmEyMDc5ZiBsZWdhY3ktdHJ1bmsKKzE2NjE1IGIzNjhhYTgyMDhmM2ExZjRlNmNmNWFkYmIxMTQyYmU3ODk3YWQ5ZDEgbGVnYWN5LXRydW5rCisxNjYxNiAxMWQ4ODIyMGZiNTIyOGZmOGM4MjJkOTQ4MWI2ZjBmMGIyNWJhMDAwIGNucmktMTYtc3RhcnQKKzE2NjE3IDJiYWRiMzIyMzU1ZmNlNDk4NDM0YzY3ZmJkNDZiZDRhNjAyMDU0OWQgbGVnYWN5LXRydW5rCisxNjYxOCA5MWQ5NWE3Yjc4NTgzNzQwMzExOWIwOGVmNjBjMjcxMTUwNWU4YTkwIGxlZ2FjeS10cnVuaworMTY2MTkgM2FlMDZjNTdkMDllYThjYjgxYmRlOWFmNWYxOWM5NTM4NjExZjg1YiBsZWdhY3ktdHJ1bmsKKzE2NjIwIDQ2NTE0NGFiZjAyYTJlYTk5ZTBjMDY2MGQ0ODM4MDVkZjE5YmViMDAgbGVnYWN5LXRydW5rCisxNjYyMSAxZTlkMWNjMmJjM2Y3YWM1OGExMmRkNjdlYjI2NjFiOWEzNGYxYmZhIGxlZ2FjeS10cnVuaworMTY2MjIgOTI0ZjA5ODFiZjc2ZGNkOTE0ZmFiNTFkNGUxZDIyZmIzZGQwMmE3MCBjbnJpLTE2LXN0YXJ0CisxNjYyMyA5NzU3M2NmOTFlNmFkZTk0NzhiZTBkYjQ2NWZlNjYyZWZkZDY4YmE4IGNucmktMTYtc3RhcnQKKzE2NjI0IDg3NDg4YzMxMTNmMjc2ZDY3ZGE0NTU4ODhiNWUyYzU1NDI2NjYwMTQgbGVnYWN5LXRydW5rCisxNjYyNSAwMGE1YzgwNmNmN2NiOGFiYTk0NTYzZjE1MzM1ZDhhNjE3MzZjOTRhIGxlZ2FjeS10cnVuaworMTY2MjYgYjM3ZjA4NjM1MDIzZjI2NzNhYmZjMjZlNWMyNzkwYWRlZDY4MTY1MyBsZWdhY3ktdHJ1bmsKKzE2NjI3IGZjODczY2EwYzdkM2Y0OGQ3ZjdkMmJjOGIxZTc4NTliZmQ4NWRhYTUgbGVnYWN5LXRydW5rCisxNjYyOCAwNTI1ODUxYmEwYjc3YWI3MGMzNDJjMzY3ZGQzZTFhZTQ0NWI3NTZhIGxlZ2FjeS10cnVuaworMTY2MjkgYTU1ZTQ4ODNmODg2YjljYzk2ZjcwMjIwYmJlMzk2YTRlN2EwMWVhMSBsZWdhY3ktdHJ1bmsKKzE2NjMwIGRkMDQyZjVhOGZhMjIxNDQ4ZWFiYmQ5MDEwYzgyMGMyYWZhNTY4NWIgbGVnYWN5LXRydW5rCisxNjYzMSAwOTg4MjVlNzRhMDVhZDkyY2RmZTdmYjA1ZWVhYmQ5NDEyOGM0MjVjIGxlZ2FjeS10cnVuaworMTY2MzIgMzQ4YTdjMThlMGU2M2E3ZjMyNjMwNWFlMTZlZGEzZmIzNDg4MmU0NiBsZWdhY3ktdHJ1bmsKKzE2NjMzIGI3MzFhMjA2MzAyYWU3MGE5YTQzNDhkY2Y3ZTJiZjY3OGIwMDg0YmIgbGVnYWN5LXRydW5rCisxNjYzNCBjNDgwNTI5ODA3YWIzMzA2YWE0ZmEzMTFkM2FmNzNmNDcyMjMzOWRhIGxlZ2FjeS10cnVuaworMTY2MzUgMDdiODVmYzdlZjY4NGY3NzgzYTQ1NTllNGEyYmU5NzFmNmY5OWM0MiBsZWdhY3ktdHJ1bmsKKzE2NjM2IDY2NTg5YjA2YzYzMzA4NjE0ZmNkZGRmNzA2ODhlYmJjMDUwMjlmZTEgbGVnYWN5LXRydW5rCisxNjYzNyAwNGEzNmU5M2RjM2RkODA2NmY1MDgxYWI5ZTYwYmE5YWQxYzA3ZjEwIGxlZ2FjeS10cnVuaworMTY2MzggNDVlZGMzMjVlODlhNTc2OTBkODZmZWYyY2QxNjhjNmM5N2VhODdhZSBjbnJpLTE2LXN0YXJ0CisxNjYzOSA5NGFkZDg4ZWYwOGMwNmI1NTE4NGY2MmY4MWMzZTAwN2Q0ZWMzNDRiIGxlZ2FjeS10cnVuaworMTY2NDAgNjY4MmZmM2UzMThmNWYyOTQyODM5YWZhZDgxZDYwYjE2ZGFlYWFkYiBjbnJpLTE2LXN0YXJ0CisxNjY0MSBhMjk2ZmY1NTIyMWY3MTIwYjU2ZjdlZTU3ZTAwYjFiNzE4N2ViMzRiIGxlZ2FjeS10cnVuaworMTY2NDIgOTlmMDQxM2VmNzk1ZjMxNWIyNTFkMTcyYjcyZTljMDk1ODczYWE1MCBsZWdhY3ktdHJ1bmsKKzE2NjQzIGJmOGQ1NmUyN2M3YmJhNTZkZmY4NDQ3YTBlNDljMGZkMDQ3MGQ3NTUgY25yaS0xNi1zdGFydAorMTY2NDQgOTRmNmVjODc5MzBhYmU1ZWRkNGJmZGExMjFlMjUzM2U5NjU0ZTBlOSBsZWdhY3ktdHJ1bmsKKzE2NjQ1IGQ3NGE0YTQzZjQ1ZmI4OGFkYzg3Y2MyZGI2NjAzNTZhZDQ4MTViZTAgbGVnYWN5LXRydW5rCisxNjY0NiA0NjhkZjVhOGNmNGFjZmQzNDJjZmZiM2U5MTU2MDA4MzBjZjQ3ZDA2IHVubGFiZWxlZC0xLjIzLjQKKzE2NjQ3IDk2YWQzMjQ5OGRiNzgyMTQ4NjkwMWIwMmUyYTNmMzNkMDE5YTg3ZTIgdW5sYWJlbGVkLTIuNTQuMgorMTY2NDcgMWMyYWRhZTQ1MDY5N2RmYzMxYzY2NTMzZmI3MmM4MDYzZmIzYmFjMSBjbnJpLTE2LXN0YXJ0CisxNjY0OCBmM2Q1ZjcxY2NiYjQ1ZTczNmY4Y2MzY2E0YmE3ZTNlMWI1Mzg4MjhiIGxlZ2FjeS10cnVuaworMTY2NDkgNGMzZjk3N2NlMDZjZmU3Y2I1YmQ0ODc5MWE1ZDUwZjlmODgzM2FiZiBsZWdhY3ktdHJ1bmsKKzE2NjUwIGE5NGUzN2VjZGJlYjZmYjY4ZDBkZTZkYWZlYTkzZjQyMzI2YzVmNjkgbGVnYWN5LXRydW5rCisxNjY1MSBjNTgxNDljMDY3MGFhOTkxZWQ3NDhhMTZkNWVkZTEwYjA4NDU4NDAyIGxlZ2FjeS10cnVuaworMTY2NTIgZmM0OWEzYjM4NjNiMTk2YzVjMTBiMDA3NzMwMmIyOGU1ZTc5ZGIzMSBsZWdhY3ktdHJ1bmsKKzE2NjUzIGRmZGI2MDFjZWUxY2Y1MTQzNWJiMzM4NmEyZTZiNmIxZjM4YzRjOTMgbGVnYWN5LXRydW5rCisxNjY1NCA1OTJhYzI3MjY0MWQyMmRmMzVmZjcxNDdkNWM5MzQwMTZhNTU3YmY0IGNucmktMTYtc3RhcnQKKzE2NjU0IGE2OTg1ZDg5NDY0Mzc2YjkxNzNjOWE1NzdjNjcwYjdkMGI3NjdkM2QgY25yaS0xNi1zdGFydAorMTY2NTYgZTI2M2EyNzNlMzIxZjk2ZTk3YWRhY2M1MzBiOWJlZTgwN2JiOTIzZCBsZWdhY3ktdHJ1bmsKKzE2NjU3IGVlOGM1Y2ZhZDMzNWU2YmM2ZmRmNGE3NGE4ZjYyNDNjY2FlZTkyYTMgbGVnYWN5LXRydW5rCisxNjY1OCA0ZWY0NjFkZjMyYzE5MWU5MTMwZGM5YmNiN2I5NTFlYTBhMTE0ODcyIGxlZ2FjeS10cnVuaworMTY2NTkgNThmZWZlZjcwZmFjYjczMDBhMmU0NTZmYzc1Njc2MjA5MDgzODNjNCBjbnJpLTE2LXN0YXJ0CisxNjY2MCBkZjdkZWIyZWJhNDE0MTA3ZWRmYmNiYWJlOTY1OTU0NjhhOWQ2NDk3IGxlZ2FjeS10cnVuaworMTY2NjEgODMwNzQ0NmJjNmFhZDY2MGRkNTExN2U2MzExOGY4MGU3ODBiNTJiYyBsZWdhY3ktdHJ1bmsKKzE2NjYyIDM1ZmM5NTExYTM2ZmYyYzQ3YTZiYTY2NzgyYTQzMDA5YzQ0OTY4NmUgbGVnYWN5LXRydW5rCisxNjY2MyBkMDE0YzhhYjZhODI0MzUzZDMzMDAxYTIzMmIxMDEwNmI4NDE3ZDQ2IGxlZ2FjeS10cnVuaworMTY2NjQgMjY2ZTExYTIyNmY3Y2Q4MzljMjI2ZjM0MDE3OTkwNmEyMDdhZWNmNiBsZWdhY3ktdHJ1bmsKKzE2NjY1IGVhNWViNTFlZDBmNjk4YzRiNDY2MmNkMDc5MDgyNTQ5MTM1MDg5M2QgdW5sYWJlbGVkLTEuOC4yCisxNjY2NiBmOTExNjE4YTBlYTBmYWM0NmNlOTZlMmNiNjVjZDNmMDM5MWQwMmE3IGxlZ2FjeS10cnVuaworMTY2NjcgMWMwMGZlYTlhZTQwYzBmMWZiNDJmZWQzZWFiMzgyMThmY2IzZDk3MCBsZWdhY3ktdHJ1bmsKKzE2NjY4IDc1NWUyMTM1YTE5NDhhOGQzYzEzMWYxZmI3NjNiZDMwNGIyNGI1NWEgbGVnYWN5LXRydW5rCisxNjY2OSBhYmZhNGU0YjJmM2U5YWNlMmVmMjgyZGVkZmFkNjc5ZGM4ODQxZGMzIGxlZ2FjeS10cnVuaworMTY2NzAgMGY2ODAxOGNjZTU4ZjlmMWZhOWRiNDI3NmJiZmY3N2VmN2E2MTA0YiBsZWdhY3ktdHJ1bmsKKzE2NjcxIGRkODMwYzllNWMyMThmYWU1OTE4MjZlNDAxNDVlMzI0NTk0ZjgzOGUgbGVnYWN5LXRydW5rCisxNjY3MiBjNGUzMjE4MzQyNTAzYWM2MjY3ZGEyMTUxNTZkMzE1YzNjMzJkYTE5IGxlZ2FjeS10cnVuaworMTY2NzMgODgxZDM5OGE0NGUwNzEwYWUwMGZkNzA2M2UwM2YzZTYzYzU1NzEzZCBsZWdhY3ktdHJ1bmsKKzE2Njc0IGJmNzA2MmU4ZWVhY2Y0M2UzZTc2NzJkNzc4NDQ4MTNlMDlkZjI1MWUgY25yaS0xNi1zdGFydAorMTY2NzUgMzFhN2IwMDQ1NThmYjdjM2E5MTNlMGRhMWY5ODNmZDVjMThiZDU0OCBjbnJpLTE2LXN0YXJ0CisxNjY3NiAzM2ZkNjBhYmQ0ODIyYzRhYWQ1NzFiZTk3OTY3YTA5NWIyNDg4ODZmIHVubGFiZWxlZC0yLjEwOC4yCisxNjY3NyAxNWFkNDA4OGE3MDBiZmIwNWJkMzAwYTg2YWY3MGJjMjlhNTA1Mjc5IGxlZ2FjeS10cnVuaworMTY2NzggOGVlYWZmOTZiNGMyNDQyMmZhYWYyNzE2ZjMxYzJhYWM4MDBjMGFmOCBsZWdhY3ktdHJ1bmsKKzE2Njc5IDA5NTY1Nzg0NzE1ZTFjNjY1NWU2OTg5OWY2OTI5YTAwNWZjZjIxOTIgdW5sYWJlbGVkLTEuOTguMgorMTY2ODAgM2E1YTdkMjdmMWI3MmI5ZGUxZjk4OGExOGNkMDQ0NGI4NmQ5MTBhNiBsZWdhY3ktdHJ1bmsKKzE2NjgxIDYyNDk0YTk2ZGNjYWI1YWEyMzllNjdlZGU5YWY2MWI2MGVlZWZkZWMgbGVnYWN5LXRydW5rCisxNjY4MiBjMGMxNzM0N2RhNWJiZWNjYmVmZjFjNzVkMWVhM2YwMWRhNTA0NDM5IGxlZ2FjeS10cnVuaworMTY2ODMgYWE0OWQwNzRmNzE2MWIwNzI3Yzk2NTNjYWMwOTY5OGZiYmJhNTFkZCBsZWdhY3ktdHJ1bmsKKzE2Njg0IDk4ZjA4Y2FmZTE5YjEyNTQxZWFmM2QxYTNjYTZmZTIzZjU2NjlhMzIgbGVnYWN5LXRydW5rCisxNjY4NSA4ZjBmYzBiNWY3ODRjY2QwNmEwYzcxMTQ0ZmJkZjFlM2E4NWI0M2YyIGxlZ2FjeS10cnVuaworMTY2ODYgMDhmZWI1MzhjODM3MTYwZWI0ODVlOWMwNDRjYjE5OTk1YTc3YTg5NyBsZWdhY3ktdHJ1bmsKKzE2Njg3IDIxOTBiNzU5OTgzNzM0YTBjNGU5NGRmMGQ1MjFkYzhhMTNjODY0MmEgbGVnYWN5LXRydW5rCisxNjY4OCAxYzViZGI2NjIzYzhjMTE0ODVjMjU4OTE4ZmMzM2U4YzEyNDBiZDM1IGxlZ2FjeS10cnVuaworMTY2ODkgNzdiOWUwNDFiNTk1Y2I1MDlkMGQ4MjI1MTA3NDIwMGM0OWI5NGZhZiBsZWdhY3ktdHJ1bmsKKzE2NjkwIGMzMzIwZDI0ZDdkZTQ2YWRkMGVlNGI3MzM4MDBiZjkyZjhjNmMyZmQgbGVnYWN5LXRydW5rCisxNjY5MSBlMmVhMDA2MjBlZDY4OTlhNGQ0MTc0NjkwNjE2MTU0YjgxMjVmNzQ0IGxlZ2FjeS10cnVuaworMTY2OTIgMDQzMGExMzA5NTk2Yzg3OTBkMzdkNzZmZDc5Zjc3NTBlMTFhNjAyYiBsZWdhY3ktdHJ1bmsKKzE2NjkzIGQzYmY5N2Q1MzJhMDhiNGYxM2YyZDNmNTA3OTU1MzYxZGM1YTIzOTEgbGVnYWN5LXRydW5rCisxNjY5NCAyNWRlNzE5M2Y5ZmNlYTY1ODM0NTA0YTc2ZjU4ZGZmMmU5N2NiZWE1IGxlZ2FjeS10cnVuaworMTY2OTUgYTBiMzY1OThiMzFkMGQyOTg5OTExNzQ1OTNmNGFiZjJmYWZmYWIyZCBsZWdhY3ktdHJ1bmsKKzE2Njk2IDljNjliZDFhMjgyMmYwZTUwNWYwOGRkNGMzNDA4YWMzNTMzY2VjY2QgbGVnYWN5LXRydW5rCisxNjY5NyBlMzBhMTk0ZGNhMDE0ODJjNGRlMjFjNjhkYjY0MGYxNThlNWUwN2ZmIGxlZ2FjeS10cnVuaworMTY2OTggMGVmZGY0NWJmNmJiNmI4ZDE2Mzg2MDgzMTdkOWNjMzViZjQwOTRlZCBjbnJpLTE2LXN0YXJ0CisxNjY5OSAwYWM5MTljYThlNjk2MjQwNTllODdhNWNjZGU1MDVlY2JlNzg3YzU0IGxlZ2FjeS10cnVuaworMTY3MDAgOTllMTljOTgyZjk0NDVkZjhjZjhjMzFjZjJmYjQxMWRlOGE0MTY4ZSBsZWdhY3ktdHJ1bmsKKzE2NzAxIDljMWU2ODk4NDAyNzNmOTQyMzdlMjE3MjJkNWNmZjRmZDg0MTY1MzQgbGVnYWN5LXRydW5rCisxNjcwMiBjNDVhY2NjOGU2ZDAzNmZmNzVhZGE1YmM1MTU4YTY4YjZhYTU3MDM2IGxlZ2FjeS10cnVuaworMTY3MDMgNDQ2YzM2MTZjMzIzYjBmNDdiZmZlYTljM2IwMWY2OWM3NDkyZTgzMiBsZWdhY3ktdHJ1bmsKKzE2NzA0IDUyNzU3YmFmMDMwZGRhMGYwODM5MTQ5NTJhNTM2YTI4OTc2MzJlYmIgbGVnYWN5LXRydW5rCisxNjcwNSBiMzQ3ZmM1ZGFlYjcwYzcwMDZkMzU4ZjdkNGE1ODY4NjhjOTU0NDMzIGxlZ2FjeS10cnVuaworMTY3MDYgYTQyNTliZmNhNWJmZThiYTJmMmYwMWZlMDM0YTMyZTk3NTA0ZjE5MyBsZWdhY3ktdHJ1bmsKKzE2NzA3IDZiZjEyODFlYzc2MzliZGU0MTcxNjhjODRkYTQ1OTM1YTIyMjI4MDEgbGVnYWN5LXRydW5rCisxNjcwOCA2MDI0Mzk5Yjc4YmZhNjJmOTNkYWQ5YjBmMDVkMDY1NmZlYmQ5ZmY5IGNucmktMTYtc3RhcnQKKzE2NzA5IDk0MTRkMDMxYTJjM2E0Y2JmNjRjZTgxOGY1ODQyMTY1YjEzNTRhNGUgbGVnYWN5LXRydW5rCisxNjcxMCBjOGZmODBjZWE0ZjdiZTYxOTFkNWQ3Y2M5NjA5NGNjY2ZkNmE4ZDVjIGxlZ2FjeS10cnVuaworMTY3MTEgOGY0M2U1OTJjZjlhNGY2OGE1YjBlNTIxZTJkOGM0MTYyMzJkYTgwZSBjbnJpLTE2LXN0YXJ0CisxNjcxMiBkNzBhZWMyZTM0OWNlYWI1ZTlmMjRjOGRjNWUyYmZmMjFjZjM4NDBmIGNucmktMTYtc3RhcnQKKzE2NzEzIDQ2NmU1ZmYyODkyNjIwYTAyN2MyZjQ5ODFmNWU4ODNiZWQ5Y2Y5ZjQgY25yaS0xNi1zdGFydAorMTY3MTQgZjQwNWZjYmFhZWY1YTk3NTQ4MGM4YjgxMzhjOTAwODg4OWE3ZmUxOSBjbnJpLTE2LXN0YXJ0CisxNjcxNSBlNmVmY2ZjZjE3NGE4N2RkZDQ5MWRhZDE1MDc3NTkxMjZjNjViMmYzIGNucmktMTYtc3RhcnQKKzE2NzE2IGNmNTAzNDUwZjA3YjI0YzYyZDY2ZDM5MTc5YTFlNWMxOTIyN2UzMDAgY25yaS0xNi1zdGFydAorMTY3MTcgYmQ2N2E0ZDZmNGY4YzFkNmQ3NWFlODI5ZmY2NDIxYzNhY2FhMTkzNCBjbnJpLTE2LXN0YXJ0CisxNjcxOCAwODAyM2QyNmEwY2U4NzUwOWUyNDY5YWE1ZDYxYTkzNWI4YTYzMzkwIGNucmktMTYtc3RhcnQKKzE2NzE5IDU5YzZlOTgzMmEyMDQyNTI2ZWUxZGRhM2YzMTVkOWI3NDQ1OWEwMDMgY25yaS0xNi1zdGFydAorMTY3MjAgNjkzYjYxNTgxNzQ2NjkwN2NiZjc0NjQxYzc0ODc2YTZhN2JkMjQ0ZCBsZWdhY3ktdHJ1bmsKKzE2NzIxIDRkMTZjOGRkODk5YzRlZWEyMTA5NDY5MWE3OTI2YmU2MzFhOTRmMDkgbGVnYWN5LXRydW5rCisxNjcyMiBiYzAxNTNhNzM5YWVmNDY3ZTVhMmNkMzFhMDdhOWIwMWQ3ZGJlNWZjIGxlZ2FjeS10cnVuaworMTY3MjMgMDNmYTQwNTI4ZDE3OWZhYjY1MjgwNzk4NzcyMTg2MmE3ODExZTcwZiBsZWdhY3ktdHJ1bmsKKzE2NzI0IDA4MDkyZDFlYjI2YWY5N2M5NmZiMjczODJhZDQyMDVmOWU1YmE2M2MgbGVnYWN5LXRydW5rCisxNjcyNSAzMzk2OTc1MWUzNTFmZDc5MDQ5ZjdkOTRlZTNhN2U5Yjk1MmJiMTEyIGxlZ2FjeS10cnVuaworMTY3MjYgNTJmY2QwOTg1NDdlOWVjYjM2ODFhNjc2Mzg3ODkyNTA4MmI1YjQxNyBjbnJpLTE2LXN0YXJ0CisxNjcyNyBkMDU3Y2Q1NDNlZDk2NmRmMDM2MTJhNmM0MmUwNzExYWRjNzYwYTE4IGxlZ2FjeS10cnVuaworMTY3MjggYzdiM2ZlODQzMzU4Njc1YzJiNzExZjA0ZWRlNzRiOTI2NjU4NmRjNSBsZWdhY3ktdHJ1bmsKKzE2NzI5IDFkMTdjNWU2N2VmNTcyNTI0ODgwMDhhMmY4YWU1NjlhODUyNmMzOTggbGVnYWN5LXRydW5rCisxNjczMCA2NThiMDg1ZTE3NWJmODQ3ZDc2ZDZlMWExNmNlZjEyNjBhY2JlMTlkIGxlZ2FjeS10cnVuaworMTY3MzEgZGRmMzAyZDY5MjExM2U2ZTRiOWRiMjFjYzUzNzZjZDYxNGQ1Y2IxZSBsZWdhY3ktdHJ1bmsKKzE2NzMyIDJhMDRmYmI3YzA3ZDk2NDc3ZGIwNzI1NmEyZDA4ZTZhNjlhMWU4Y2EgbGVnYWN5LXRydW5rCisxNjczMyBiNmUwN2MyNzI0ODc5MDBmZGQ5NzY5MGZmMjMzZDU4MzcyYWFkNWM2IGxlZ2FjeS10cnVuaworMTY3MzQgMjY2ZmI2MzAyZjMxMTdkNzFmOGMxNjczOTg3MjUzMDRjZDE3YmExOSBsZWdhY3ktdHJ1bmsKKzE2NzM1IDM5MjdhNGQ5YzJmYjAyZGEyNzE4ZjNjZjQzZDRiYzA5OTRhNmJjY2EgbGVnYWN5LXRydW5rCisxNjczNiBmMTk0ZDhiMjQ4NjU5MTJiZDE2YzE3NTUzMDFlOWJlMWEzODc3ZDcyIGxlZ2FjeS10cnVuaworMTY3MzcgNGVhYTQ2M2MwMzFhMWJkYjVlNzc5MWMzNzBkMDQxMDhlMDY4MmRkNCBsZWdhY3ktdHJ1bmsKKzE2NzM4IDYwYzdjZGEzNWNmYTQ4NzdlY2M1YTE1NDhlOTAzNjIxY2E4NTgwOGYgbGVnYWN5LXRydW5rCisxNjczOSA3MTcyYzJkOGI5MmI2NThmMmNkYzZkMmY0ZjIyMmM3MDczY2VmN2Q0IGxlZ2FjeS10cnVuaworMTY3NDAgNGQxNGVlZjhlYTA3NjU2OGJhNzUyOTA2NzJjNTAxOGFiNTgzMDIyYSBsZWdhY3ktdHJ1bmsKKzE2NzQxIDJlMGQxYWVhOWMzNzQxZTA0YWRmZjhkYTE1Mzc2MjBmNGY1MzJiOTEgbGVnYWN5LXRydW5rCisxNjc0MiA0NGIxYjgxOGYyOGU5MjU4MzMxYWRjNGI0ZWYzMjNiYjYwYThiZGU5IGxlZ2FjeS10cnVuaworMTY3NDMgMjVmZDk4NDZiZDU0MmMzNDRmMGNlNTgwNzM0MTIzZWI5YzJjYWUyMiBsZWdhY3ktdHJ1bmsKKzE2NzQ0IDQ2NGEyMTkwZDliNjc2YTY5MzU3ZWJmY2VjYmY5NTYzNDE5NzJkMDcgbGVnYWN5LXRydW5rCisxNjc0NSA4MDA4OWE0NTBjMzRkMGI1YmRhMWY0NmIxZTNhMDYwYjlhNDA2MjA5IGxlZ2FjeS10cnVuaworMTY3NDYgODdhZjJjMzQxYjc5YmEwYjU1OTEwNmQ2NTA0OGYyM2VhNDEzOWIyNiBsZWdhY3ktdHJ1bmsKKzE2NzQ3IGVjZTc1YjA3YjEzNjA4MDEwY2I1YTI5N2Y0ZTBjYTU2M2E1MjBlNTggbGVnYWN5LXRydW5rCisxNjc0OCBkNTZkZDE1MzBjZTExMzJjMjU3YzFlZmFjZjExMWM5MDUxYzM0NzBhIGxlZ2FjeS10cnVuaworMTY3NDkgMzFiMjVhYzFmMDE5YWYzMDNjNjYyYmExMDcwYWE3ZmYwMjdjM2MzMiBsZWdhY3ktdHJ1bmsKKzE2NzUwIDU3ODBiMTk4YWJjODk5ZWE3ODc1ODFiNDlmY2UxZDBiNzgxY2UzMjggbGVnYWN5LXRydW5rCisxNjc1MSA2NDhiYTQwNDQ0NTU5ZmI0ZmE1ZGY0MmE2NGJjZGY0MDQ0NTBiNGJhIGxlZ2FjeS10cnVuaworMTY3NTIgYWZkYjNmNDg1ZDhmOTNlMzg3ZjFlNDdjODZiNDYwZDI5M2M2MjlkOCBsZWdhY3ktdHJ1bmsKKzE2NzUzIDdhOTk0NTBkYTJkNjRmN2IyNTA1ZWZhNGM5ODZjNDQwNmM1NjI4YjcgbGVnYWN5LXRydW5rCisxNjc1NCAxOTFmMjBlMDQ3M2VlMWZmYzQwZThkM2UzYjZjNDhjNGVkYzU1MWU1IGxlZ2FjeS10cnVuaworMTY3NTUgMjY4OThhOThkYjZlZDBiYzFhZDA1MTQ4MjY4MGNkYjIxYmIwOTQwMyBsZWdhY3ktdHJ1bmsKKzE2NzU2IDI4YWZiYzVlMDc3MDA0YWU3MmQ3ZjE3ODAyMTMwNmI2NGU5ODY0NzUgbGVnYWN5LXRydW5rCisxNjc1NyAzNzBhZGU4OGE1MmE1NDRjYmQ2NDM5ODJlZjlhMmNiNzM4M2Q0NTZkIGxlZ2FjeS10cnVuaworMTY3NTggMWIxNTZlZjgyODFiOGJlYWJhYmZiNzkxNTU1ODljOGViZjgwZjEwYyBsZWdhY3ktdHJ1bmsKKzE2NzU5IDcwYzQ3YWIwMWE4NWUyYmVjZTMwYzg4NjA5MWJjMzc1NTY5MDE5YmYgbGVnYWN5LXRydW5rCisxNjc2MCA3NDQ1ZDk5ZGE4ZGQ4ODI1NTE0MjY2ZjNkZDE2Njk0YjExZDQ2YmUyIGxlZ2FjeS10cnVuaworMTY3NjEgODJhMjJkODI5NjA3MTBlYTk0Njc4MDdkMDVhYTQwYmQ4YjgwNDNhNSBsZWdhY3ktdHJ1bmsKKzE2NzYyIDQ5NGNmNWZiOGYxNzRlZjA0MGM0ODI1ZWI0Y2NkNmI2MjY3OWEzNzAgbGVnYWN5LXRydW5rCisxNjc2MyA4ZThhOGRmMGZlNzM0ZjJiOTBjOGFlMzA1NjdlZjAwZWEzOWY2ZWE0IGxlZ2FjeS10cnVuaworMTY3NjQgYjkwMDJkYTQ2ZjY5M2FjN2Y0NzI4Mzk4ZDc3M2FjOWE5MDQzYjQ1YyBsZWdhY3ktdHJ1bmsKKzE2NzY1IDBiYjBjNzE2N2QxZmM3YjBjNDcxZmM0YTkxYzAxNDg3YTJmODNjOTAgbGVnYWN5LXRydW5rCisxNjc2NiA4YmU3NTI0MDg1ZDYxOTRhNjM4MjkwNzI2Yzc3NGUzNGY0NjZjMGNiIGxlZ2FjeS10cnVuaworMTY3NjcgN2RkZTc0YzFlYmJlNGNmNTIzODc5N2U1ZmFiMTU3ZmJjOWVjNDBhNCBsZWdhY3ktdHJ1bmsKKzE2NzY4IGM5YWE0OWU4NzQ4ZTcxNWI0ZDUzNzJhYTAzMGQ4MWUwOWUxZDg3NjUgbGVnYWN5LXRydW5rCisxNjc2OSA3MDc5YWEwNWJiZDA1OGM5NTY3OTA5ZjY5NjM3ZGFhY2JkNGUyMDc5IGxlZ2FjeS10cnVuaworMTY3NzAgMmVlMGY0N2YxNGQzYjBhNDRkNThmNmQ2Y2JlZjYwYTkwNDNiMDFkOSBsZWdhY3ktdHJ1bmsKKzE2NzcxIGEyNTZjMTAxYmYyNzk1ZWMyMWVhMjQyYzkzNTU2M2NlNDg0Y2ZjYTYgbGVnYWN5LXRydW5rCisxNjc3MiA1NjAxNzU4MDBhMDdlNzEyZGQ4MjZkZjgwMzEwYjg5M2VjN2NmNDA5IGxlZ2FjeS10cnVuaworMTY3NzMgOTFkZGVlZDEyZmE3MDNhNmNjNDg3MjFiYmI3MGE3MWE5ZGM1MzA3MiBsZWdhY3ktdHJ1bmsKKzE2Nzc0IDdiN2VlNTg5MDFmYjBmMGE3ZTBmMmYwN2QwOTJjN2Q4OTA2YWQxZjMgbGVnYWN5LXRydW5rCisxNjc3NSA4NDFjZjkwMTJhYzNjYmZmYWExODJjYmVlM2I5ZDliZDI5YWJiNGM4IGxlZ2FjeS10cnVuaworMTY3NzYgNTVlMzk4ODIwNWIzNDgwYmNlN2VkMDVlZTBjYWUxNjhkNGUzYTA0OCBsZWdhY3ktdHJ1bmsKKzE2Nzc3IGQ5OTE4M2NkYmJkYzk3YTliYjkxODBmYWNmMWFkNzYzYWZkYWUyN2UgbGVnYWN5LXRydW5rCisxNjc3OCA0ZWFiZDdkMzkyNWZjOThjODk3NjBkZDEyY2VhYWIzNWU1YWJiYjQ2IGNucmktMTYtc3RhcnQKKzE2Nzc5IDgxNTVhOGIzMDQ0NGE0YTRhNmVmMGY1MGEzOTg3OThjZGZkMWE4ODYgY25yaS0xNi1zdGFydAorMTY3ODAgNmUyYzBkMGMzZmQ1NmQ0YWU5NzRhMDM0MTljMDA1Y2VhOGM1NDc5MyBjbnJpLTE2LXN0YXJ0CisxNjc4MSBkZTJiZmMxNWY5ZWNlNWE1YmU0NTMyNDJlZGViNGIwMDVlNjFhYzg0IGNucmktMTYtc3RhcnQKKzE2NzgyIGFhNDIwMjcwMjI1MjYyNzExZWQ2ZTAyNjcxMGExOGIyNWIwZjg5NzcgbGVnYWN5LXRydW5rCisxNjc4MyBjMjU4ZjA1ZWI4NWRjOThiMzhhMzk0OTVlYmY3YjE2MWQ3YzBiZWNiIGxlZ2FjeS10cnVuaworMTY3ODQgNGUyOGNhMzQ1Y2ZlZTc2ZmJlZDU1NWI5MWRjYmUzOTdlYTAwZmE5NyBsZWdhY3ktdHJ1bmsKKzE2Nzg1IDNlNmUzZDA1ZDAwYjdkNWYxNmNjODdiNmU2YWIzZGYzMGIwM2Q2MTIgbGVnYWN5LXRydW5rCisxNjc4NiAzMDcxM2Q1Mjg4ZGY0OWM0NDI1MmU5MDdiMWZhNGNiYmE3MmEwMjg4IGxlZ2FjeS10cnVuaworMTY3ODcgOGE0YTE3OTQxNGQ0YWE0ODQxYjM0MGVkMDljYmZmYWRlNTViNjZlNSBhdmVuZG9yCisxNjc4OSA1OGFjODMwNDAxYmQ1Yzk0OWZlMDUxYjBiNzk5ZmUzY2Q4Y2RiYjlmIGF2ZW5kb3IKKzE2NzkwIDVhZGE5ZmE1NDgwMTViZWI2OWFmNTA3MjhkYjhmMDM2NTJhMWY2NjEgbGVnYWN5LXRydW5rCisxNjc5MSBlYjlhMzYxNjNhOWVhYTk5NDMxYzllZDM0MGQ4ODYzYzU4NGE0MzE4IGxlZ2FjeS10cnVuaworMTY3OTIgYjJjZDY2ZTVlYTRjMjRiNzNkNTNjZjZiOGQ5MzJkOTFkMTA1OTg5NyBsZWdhY3ktdHJ1bmsKKzE2NzkzIDYzZGU3ZjAwYjViY2NiZTliYTk3Y2JjNDBhZWE0YzliYzhkNTlkYWUgbGVnYWN5LXRydW5rCisxNjc5NCA4OGY0ZTcyZDcyNDUzOWRkZDMwY2Y0NDM5ZGNmMDcwMGI3NjlhMWZkIGxlZ2FjeS10cnVuaworMTY3OTUgNzJmNjgyZWI5YWRiZTQxYjJhOTJlNTRkMzE4NTRhYmNjNzNlNzQyZSBsZWdhY3ktdHJ1bmsKKzE2Nzk2IDQzZjRmOGQxNTk3MWVhMjQyZmI5NGYzNTQ0Y2I0N2UyYWNiMzU5NTEgbGVnYWN5LXRydW5rCisxNjc5NyAxYjEwN2M5YmE3MDIxMzY3OWE3MWNjZWEwMDQ4YjY0OGNkNjcyMjgwIGxlZ2FjeS10cnVuaworMTY3OTggMmM0MjQzOTU5NGI3ZTgwMzQ5MTM2NjRiNjhkNTVmODY3ZDIxZGI4MSBsZWdhY3ktdHJ1bmsKKzE2Nzk5IDYxMzQ3ZWNiOWIwMTM3ZWU5ZmQ1ODY2NTQwM2IzNTY3ZjM2MzVkNWEgbGVnYWN5LXRydW5rCisxNjgwMCA0MDBhNWUzYWM3NmM5NGFhYmQ5NTE1OTAyODAyOGUzNTBjMjNjMjg0IGxlZ2FjeS10cnVuaworMTY4MDEgZjNiZmNlZTc0NWE3NjM2Y2RkZThiMzg2YTJlZGZiNWNhZTNiNTE3NiBsZWdhY3ktdHJ1bmsKKzE2ODAyIGU1YTc0Y2ZjYzk3MWMwNWViODIxYzY4M2M0ODk2NDk5ODUyMDllZGEgbGVnYWN5LXRydW5rCisxNjgwMyBmMjc5MmVhZDFmMDZlZTg4OWRmMjdmNzg4NmRkYjQ2NzE0MmUzOGZlIGxlZ2FjeS10cnVuaworMTY4MDQgYTk1NWZkNWRlMDM1MDU0OGRlYzdmNDBkNWM2YTNiNjRhMzQ5NTk4ZCBsZWdhY3ktdHJ1bmsKKzE2ODA2IGEyODRlZDIxYTBkZGFlNzFlY2Q1YTgwZjc3NDYwOWEyNTRkYmM3YjggTm9uZQorMTY4MDcgNzgzNGExMTNjZTI0ODAxMGRhYzA0Zjg0OGZhN2MzOGQ1ODYzYmY5MiBsZWdhY3ktdHJ1bmsKKzE2ODA4IDk3ZjUzODhhNmRjZTA1N2FmMDg1NmJiY2MyNDhhZDRhNmU3ZjQ3MjEgbGVnYWN5LXRydW5rCisxNjgwOSA3MTZlMWM0ZTNmNzg5NDcyNmY5MjNhOTA3NDNlMjUzN2E2MTQyODUwIGxlZ2FjeS10cnVuaworMTY4MTAgMmU4N2JiYjg3YWQ0NDA1YzZkMjExOGRlODJlMDcyNTZjMTE4MWI4NiBsZWdhY3ktdHJ1bmsKKzE2ODExIDY1YzFhYmY0NTFkYzA1MzBmNzJmM2Q2YWU2NTU4MzhlOGViYjdjNGUgbGVnYWN5LXRydW5rCisxNjgxMiBkODA2OWVmY2Q3NmU0ODM0N2M4MGZlYzU3MDlmZGY5OTc1ZmRiYzhiIGxlZ2FjeS10cnVuaworMTY4MTMgMTQzZmZiZjg3ZTUxYmIxYjIwYTE1ZThhMTVmMTJjZmQxZTM5OTc3OSBsZWdhY3ktdHJ1bmsKKzE2ODE0IDMwZGJiMzBmZjAxOTE5YjBlNTVlZDJmMGU1ZTU0NDVjYzhlNjI0YzcgbGVnYWN5LXRydW5rCisxNjgxNSA0NDNmM2M3N2Q4OGNlZDY4NzdhMmQ5ZjMwNDBkYWEwMGJiYWE4MTY3IGxlZ2FjeS10cnVuaworMTY4MTYgNTVlNGY0Mjg5ZTE4ODMzYjU3MDJmNTE1Zjc1NzNhN2YyMzM5NGU0NCBsZWdhY3ktdHJ1bmsKKzE2ODE3IDczZDk3NmFmYThkNDNmNDllOWNmMTcxNDJiYjExZTYwYzU5NmM1ZTggbGVnYWN5LXRydW5rCisxNjgxOCA1OTFhZmUyZmM4MjMwYjYwOTRlZjczMWMwY2Q2MTBiNjc5MWJhMmExIGxlZ2FjeS10cnVuaworMTY4MTkgZjM2OTM4ODc0Y2U1YWJiOTgxMGQ3MmYxMzExZTA1MTg2OWY3ZTEyNiBsZWdhY3ktdHJ1bmsKKzE2ODIwIDlhMDUyNjk2Y2ExMjM3YmI3MmNkMTY1NDNkMWUxNjRmNzNjMTU4MWEgbGVnYWN5LXRydW5rCisxNjgyMSA5Y2RiNmY5NzlmYTU1MGFmZmI1NmFkNTlmOGEzZWQ4YTNjYmVjMDg3IGxlZ2FjeS10cnVuaworMTY4MjIgZWQzNjlmMGFhMzJiMzk2M2FiOWE0M2NkOGEyZWM1MzRiZjdkMWRiOSBsZWdhY3ktdHJ1bmsKKzE2ODIzIGVkYTA5ZjgyNGE5ZmI5MDhjNmM1MWE4ZWI4NTgyN2E3ZDE5MTE3ZGQgbGVnYWN5LXRydW5rCisxNjgyNCA2YzkxYWQ5YzBlMDZjM2NlYjg1OTUyZTg4NDczYjRhOTg3OGE3MWFmIGxlZ2FjeS10cnVuaworMTY4MjUgZmFhOTcwZjE1NDBmZjk0ZWI4NzcxZWExZDBjMjFlMGJmZTliODBiMCBsZWdhY3ktdHJ1bmsKKzE2ODI2IDQ5YzdhNGRkOWY2MTVkNzQzZDMzNmQ2Y2ViM2RlMzNmZWE2ZWZkYTEgbGVnYWN5LXRydW5rCisxNjgyNyA0OWM4MzA1MDA0ODAxZWRjNDFhYWI1OWI5M2FhODgxMWFlNWNiODQ3IGxlZ2FjeS10cnVuaworMTY4MjggODJmNzk2MThiNDQyODUxODA2YzVkMGE0NDYxODMyNjYxMWJhMzc4OCBsZWdhY3ktdHJ1bmsKKzE2ODI5IDZjN2ZhNTIzNzI2ZmM1NTZmYWFmMTI5OGE3MjI2NjEwOTM1ZDMxNWIgbGVnYWN5LXRydW5rCisxNjgzMCAzZDY4ZDViY2NkNDA2ZTg4ZDViNTQ3YWJlOTg1ZDVlMmQzZWYxZjg5IGxlZ2FjeS10cnVuaworMTY4MzEgOWI5NDYxYTY1NmRkYzU1N2FjMzlhNzM5ZWM1YTI0YmRjOGU3MzdlYSBsZWdhY3ktdHJ1bmsKKzE2ODMyIDlhMjkxODg5YWI1ZjE3ODg0NjdjZTI2NTAxZDlkNzcxZmM3YWVlMDkgbGVnYWN5LXRydW5rCisxNjgzMyAxMjhmNjQxMTkxYzMzYzg5NTMyNWJiZjgzYTc3ZWZjOWM2NWRhNDkxIGxlZ2FjeS10cnVuaworMTY4MzQgMGQ4MDVlMjM5ZDhmNDRjZmUyM2E2ZDg2YzlkNWY4OGVhMzc2YzI5YSBsZWdhY3ktdHJ1bmsKKzE2ODM1IDU5ODRjM2Q3NjFmNzg0NDJlMjgwOTAzNGM5NTlkODY4YjgxOTNlNGUgbGVnYWN5LXRydW5rCisxNjgzNiBiNGIyNjEyZWEzMzMwZmQ3Y2JlY2ExZmM2YTQ4NjVjYzVhODU2ZjE2IGxlZ2FjeS10cnVuaworMTY4MzcgNWIzNGI3MGVjZjIyZmRiNGE5M2YwOTUxMjBiMmY1OTQ5ZmEzNTFkMiBsZWdhY3ktdHJ1bmsKKzE2ODM4IGQ0NDYwM2YyYjkyODliNGE2ODI3OWUwNTBkMzE3OTJkMDgxODczYmYgbGVnYWN5LXRydW5rCisxNjgzOSA3NDAyOTBhNTYxOTBhMTMzY2QzZmQyNTMzYjJlYmY2NzdhNDBkYTgyIGxlZ2FjeS10cnVuaworMTY4NDAgMDQ2MGNjY2VmZTRlM2I2ZTQ4YzZkZjNmNWI5ODE5ZjkzNWFhZjAzOCBsZWdhY3ktdHJ1bmsKKzE2ODQxIGFlMjI4YTY0MjkzZTEyZGNiYzEyNDZkYWEyYjZiMWE4NDVjNzhlYWMgbGVnYWN5LXRydW5rCisxNjg0MiAyMTljZTk2MjIzNTI1MTRkYmYyMjQxNzM3MzllZDEzMThiYTVmMzM1IGxlZ2FjeS10cnVuaworMTY4NDMgNjdhNTQ0OGM5YTBmMjVhNzQxYzZmMDVkZjAxZmU0MGU3ZGVkNmMzMyBsZWdhY3ktdHJ1bmsKKzE2ODQ0IDViMGYzYzQwMDYwZmMxODIwMmZhODJmNTJhNGQ0YzY2MjkwYzgyN2MgbGVnYWN5LXRydW5rCisxNjg0NSBmNWQ4ZTczZDc3YjdmNWJiYjY1OGE2ZTQyZGFkNzYyMDA1ZTUxYWZjIGxlZ2FjeS10cnVuaworMTY4NDYgYTk2ZDdjNDVkOTYxZjMzNjI5M2FhYWVjZjI1NDY4MTlkODJhMTFlYiBsZWdhY3ktdHJ1bmsKKzE2ODQ3IGQyNmNjNWJkZDI0ODIxZTZhYTZiNTRiYmU1MDY0YTQxYzhiZGRmMmEgbGVnYWN5LXRydW5rCisxNjg0OCA3N2E2MTVjOTIxN2UxOTllOTNjZDY2NDcwOGVhMWY4NmJjZjQ3ZmQ1IGxlZ2FjeS10cnVuaworMTY4NDkgM2RkZmEyZDY3YmU0NjdjYzJmNDVjYTBiMDFkYmU3YmYyNDFhNWJiYyBsZWdhY3ktdHJ1bmsKKzE2ODUwIDkxYzY1OTk2OGE4MDE4ZTI2MWZmYjNkOGUyNGE2NWFmZWEyOWRmOGQgbGVnYWN5LXRydW5rCisxNjg1MSA3OWJmNmIzOGI3ZDVlZTk2OGI2NDg5NzE4ZDk0NzMxZjlkMjA4ZDFmIGxlZ2FjeS10cnVuaworMTY4NTIgMzIwNDVkNDIzYTc4NjlmMDAyNTcyYjFiMmZiZWFiMzQ5MzdjNTk3ZSBsZWdhY3ktdHJ1bmsKKzE2ODUzIDkxZjg0N2E3ODNkMmEwMjdmNWY1YzgyNThmYTBjYWZjY2ZlN2VkOGEgbGVnYWN5LXRydW5rCisxNjg1NCAxODM4NTE3MmZhYzBiNzA5OWJkMmQyMjY0ZGY2MTRlZDQ0NjZmMDgzIGxlZ2FjeS10cnVuaworMTY4NTUgYTI5YThjZjVlNjZkZDNmN2YxNjc3ZGViYjUzODI5MGYxNjNkNjU3NSBsZWdhY3ktdHJ1bmsKKzE2ODU2IDgzMDgwNTM5ZjdiNGI4NDk5MzhhYzE4YWI5YjI2ZTZhNGQzYWI4ZjQgbGVnYWN5LXRydW5rCisxNjg1NyA1M2FjM2UyMDYyZWZhOTY4NTVmOTAzNjJkZDEwNGNkZjM3OTcxZDk4IGxlZ2FjeS10cnVuaworMTY4NTggOThlMzI1NTQ4Njc5MDI2NGMyZmQwNmQzNzdjYjY2MjQ2NGY1ZjI2NCBsZWdhY3ktdHJ1bmsKKzE2ODU5IDAyMzQ2ODExNzUxNGY0OGVkZTcyYzE0MjEyNDU1YmQxMDQxNDU0NmUgbGVnYWN5LXRydW5rCisxNjg2MCBhOTA1YzVhYTA2OTFjZGI5ZWFhNmM0NWVjMTcyZjZjZDliOGE4ODZiIGxlZ2FjeS10cnVuaworMTY4NjEgYzQ0NDRmNjhlYmY5Njc3M2ZiZGFiYzlhMDg3NTBkZWEyYmViZDczNiBsZWdhY3ktdHJ1bmsKKzE2ODYyIDFmOTRhMTFkMmI4MGJmNDg3ODE0YmI2N2E2NTA4ZmVjZWQxYWYzODMgbGVnYWN5LXRydW5rCisxNjg2MyAwYTg3YzViNzVmZTNkNWVmNGQ2NGE5Y2RiMjNmNWExYmVmZGM2NDEwIGxlZ2FjeS10cnVuaworMTY4NjQgOGNmNTYxNDdkN2I1ZGJmOWZiNDc2MjQ3ZDFhOTg1N2YxNTQ5N2NmOCBsZWdhY3ktdHJ1bmsKKzE2ODY1IGI5MTMxMjU2MTljOGJiNzQwZjUxMDE2ZmQxMDllMWZhYTU3MTY5Y2IgbGVnYWN5LXRydW5rCisxNjg2NiA2ZTJkYmE0NWM4M2U1ZGU0MTNjODZjNGM3YmNkNzcyNTQ0OTk3OGE5IGxlZ2FjeS10cnVuaworMTY4NjcgZmVlMGY0MDJlY2NiNGUwODU4OWI4NzExY2IxY2JiNzczMGY4YTI4MSBsZWdhY3ktdHJ1bmsKKzE2ODY4IDI3NWJjNGY5ZDUwZDE3NTg4MzBjZTk0NjE2Y2QxODc2NWZlZTg0NzUgbGVnYWN5LXRydW5rCisxNjg2OSA4MGE0MTkyOTQyY2U5NWYyM2I1ZTNjYjQ2NDlkMjg0ODIwMTU3MjIwIGxlZ2FjeS10cnVuaworMTY4NzAgZTgzMDE2MTJlN2Q4MGI5Mzc1NzIzZTlhYTcxZjJmYzcyNjY2NjM1OCBsZWdhY3ktdHJ1bmsKKzE2ODcxIDdhNmM1ODY5ZjQ1NjY2NDJkOTQ5Y2NkYTBlY2M2NjBmZDE2YjVlNGMgbGVnYWN5LXRydW5rCisxNjg3MiA2MzY1YTg1YmY0ZmIxY2VmMzkwM2Y4MDMzODU2YjRmYzIyYjcyYzBiIGxlZ2FjeS10cnVuaworMTY4NzMgY2E4ZGMxYmFlNjdkN2RjOTdhNzdmMWUyOTRiYTk1YjA5MDEzMjZlZSBsZWdhY3ktdHJ1bmsKKzE2ODc0IGY2OWEzNzI0MDlmYzBmMDEyZDI0ZTNkZjg1NDBiMjliZGRkNTRhMzUgbGVnYWN5LXRydW5rCisxNjg3NSBkMDM0OGEyNmIwOTM5ZWJhYmNhNjMwNWE3OGQ0Y2E2YWUwZjFlMDUwIGxlZ2FjeS10cnVuaworMTY4NzYgZGMyZGVkY2E5M2Y3MGVjYjFmZjU3MWM1NjBlYTA3NGM2ZTdhMDkyZCBsZWdhY3ktdHJ1bmsKKzE2ODc3IDY1MzFmYjFjODc5ZmU5MTg4N2NlNzEwYzIyOTJiYzg5YTZlOGYwMmQgbGVnYWN5LXRydW5rCisxNjg3OCBjNzIyYjRjNDIyOWE2MTE1NGM5YmZjMmVmYzFjY2RkYmY2M2RiY2UwIGxlZ2FjeS10cnVuaworMTY4NzkgMTdiN2ZjNDQwMTk1YmQ2YTA3Mzg4OTVjNjcyYzI5OGU0OTQ0OTBhMyBsZWdhY3ktdHJ1bmsKKzE2ODgwIGM3ZmU3NTY5ZTRlMTc3ZDc1NmZmZDI2ZjQ1NDVkNzFjMmFmNzBiNmYgbGVnYWN5LXRydW5rCisxNjg4MSBjNTBmZWZmYWU4MjIwOTQ2OGU0OTMzNTU1MDhmYjBjMmVjZDNkYmE5IGxlZ2FjeS10cnVuaworMTY4ODIgMjVlZWE4ODA0N2U5ZWNmY2NhYzI3OWFlMzM2MDlmYmVhYWI4MWRjMyBsZWdhY3ktdHJ1bmsKKzE2ODgzIGRjMmRiNDU2MmQwNjAyZDdlODRjYzRkOWYyZGExNDQ5MmRmMWUyNDEgbGVnYWN5LXRydW5rCisxNjg4NCAwMzQwMWFmMzZiNWMwYTEyZTc5YjUyNzY0MDNlMzhkYzllN2NhMTRhIGxlZ2FjeS10cnVuaworMTY4ODUgOTIwZmMyODY4NTQzOTZmZDJhMTM1Y2E1YWM2MzRjZDJhMzFiM2U3MiBsZWdhY3ktdHJ1bmsKKzE2ODg2IDI2NmQ3ZWFmMDY5ZThlNzJiMDEwZTY1MTY5ZWVlMWQ5ZWFiY2NhZTYgbGVnYWN5LXRydW5rCisxNjg4NyAxZmNmN2I0MzhjYWI5YjQ5MjhiM2IyY2EzMGFmOWNjNTQwNjkwZjZiIGxlZ2FjeS10cnVuaworMTY4ODggMDA4OWIzOWZlNDljYmMzMjM4OGYwYWFhMWY3ZTYyMDJhMTE1YmU5NyBsZWdhY3ktdHJ1bmsKKzE2ODg5IDMxNGVjNTllNGUxNGNlMmZlNThmYmRjNWVlMzNjMWZmZWI0NmRjM2EgbGVnYWN5LXRydW5rCisxNjg5MCA3MTNkZDc2YmUzN2JhYzc4MmE3NjIxYjdkNTM4ZGFiODM2YmZlNTRhIGxlZ2FjeS10cnVuaworMTY4OTEgYzY0YWM4M2QzZjE4MjI1ZGU0OWE0OWE3ZTk4MjhlYTQzMTkyYWRmNSBsZWdhY3ktdHJ1bmsKKzE2ODkyIGY4ODQzMTAxYzk0M2I4YTdiNTNlMTI0MmYxZTFlZDZkYmUyZTM0NWUgbGVnYWN5LXRydW5rCisxNjg5MyBiNjc4NDkxZjdlMTE2Zjg1MDNkMzkwMzJkYTE5NGMyN2IzZWI2NzQ0IGxlZ2FjeS10cnVuaworMTY4OTQgYjY1MmE5YWE5NGYxMzM1MWExMzZjY2NhNTE5NjdhNzg1NmQxZWM1OCBsZWdhY3ktdHJ1bmsKKzE2ODk1IDUxYzJlZWQ2MDE1OTBjZjgzYjI1ZjU3NGVhYTIyN2ExMTYxOGRmOGEgbGVnYWN5LXRydW5rCisxNjg5NiA1Nzc4ZjkzY2YyMmI0YzIxODU3ZWY1NTU0MjA1ODEzOWFlMGRhMzQwIGxlZ2FjeS10cnVuaworMTY4OTcgZGU3NDIzMDNjNDU2OTEwZDZkZTFiNjVhNTNhMWZjNmIyNTIzYWYwYSBsZWdhY3ktdHJ1bmsKKzE2ODk4IGU2NzhlNTgwNDliNGM1NDBkNjEzZjU3MDlmMTcxOWU4YWZiMzVkOWMgbGVnYWN5LXRydW5rCisxNjg5OSBmMTliZWE2ODFiNjY3YzQzODRlODQ5ZmRmMDVhOTc5OTg2YzNiMjE1IGxlZ2FjeS10cnVuaworMTY5MDAgMDJhYmY3NzE3Yzk2ZTE3OWQ5YzNkNGU1MTAyZDVhNmIwNWUzZjk5MCBsZWdhY3ktdHJ1bmsKKzE2OTAxIDBhNjNiNDc4OWRmY2U0YmUyMGM5ZGI1YTZjZGI2YjA1MzYwNWFmNjYgbGVnYWN5LXRydW5rCisxNjkwMiAwNjEyYTFjZmJiZjY4OTUyYTRlZTIxNmFhNDVhZTIwNjVhMDc0ZGJmIGxlZ2FjeS10cnVuaworMTY5MDMgNWJmNTYzOTI0MTk0MzgzNjNmNzFiZmUyMWJkNTUyNTVkMWMxN2IyOCBsZWdhY3ktdHJ1bmsKKzE2OTA0IGQ2MzhmNTM1ZjQwM2M4ZTE4ZWVlOGE4NGMzNTc5NGNiMjIwODAwYmUgbGVnYWN5LXRydW5rCisxNjkwNSA1NzllNWM3MDM1ZTJkMDAzOWQyYjg5YTIyNDUwNzlmMjYwN2FlNGNlIGxlZ2FjeS10cnVuaworMTY5MDYgOTUzNDYxOWRhYWExMmY3NWQ2NWUzNjNhMDA0ZTg5NDNmMzI3YjE3ZiBsZWdhY3ktdHJ1bmsKKzE2OTA3IGQzZjViNDUzYWRlODRlMWRlYTZhZTIwNTcyNmZiZGYzODA1M2U3NjkgbGVnYWN5LXRydW5rCisxNjkwOCA0NjVjN2MyZThmMjE0NmQ3NjFmYzQwNjc2MDBjNmJhZDQ1ZDRjODY1IGxlZ2FjeS10cnVuaworMTY5MDkgZWM2YTBiNGE2NDc5YTU1ODE3NTUxODJlMzZhN2RiMDY0MjBhYTFiYSBsZWdhY3ktdHJ1bmsKKzE2OTEwIDYwNjcxNGZhZTFiNTA3YzkwOTFhNjgxNmJiYjExNThlZTNiZmFiODAgbGVnYWN5LXRydW5rCisxNjkxMSA4OGQxMWY0OGEzODQ1YjQ3ZjExOGU5MjhmNzI4YTVlZTQ2MmY0MDYzIGxlZ2FjeS10cnVuaworMTY5MTIgMDNkYjdiMjM5MmFlODhhNDAyYjgyNDBkOTI4Y2UwNTkxOWQ2OTY5ZCBsZWdhY3ktdHJ1bmsKKzE2OTEzIDc0NjM4ZDIwYzRmZDBmNDE2OGY0ZWNlYzM2ZjEwNTQzMmVlNjkxNGUgbGVnYWN5LXRydW5rCisxNjkxNCA0NGU2NjZjYzhjMDdiZGVlYzJiYTE0NWI3ZDk4Y2I2NjFiZGYxM2EwIGxlZ2FjeS10cnVuaworMTY5MTUgNDY4NDgxMTM1YzQ5MGIxYTMxOTQxZjU1NTBhZWVjOTlkOWVhYmJhMyBsZWdhY3ktdHJ1bmsKKzE2OTE2IDJkZTBjYzE3NGMzYmU5MWFlNDU1MDE5YjBhOTVkNDJlZGRkNjUyMjcgbGVnYWN5LXRydW5rCisxNjkxNyBlMmVkNjliODJkOGQ3MTgxODUyOGUyMWM5ZTYwYzA0ZjhmYWZiOTc1IGxlZ2FjeS10cnVuaworMTY5MTggMjk2MzZmMDIwZDRjN2I0YTViM2FmMzQ0YzVkY2Q0NmNhM2E5MWI0ZCBsZWdhY3ktdHJ1bmsKKzE2OTE5IGY2NTdkYzhmZjI1ZTkzYjg3NzMwNWJiY2ZjNDVlMzYwMTkxYmIzMjYgbGVnYWN5LXRydW5rCisxNjkyMCBkYTY5YjdkMWYyMGYwYTZjYmE0YWYyZjAzNmYyYjdmNDljYjIwMjlmIGxlZ2FjeS10cnVuaworMTY5MjEgZDgwOWI5Yjc1Yjk5MzkzMTlmNzQ4NWU0NmIyNjIyZWI5OTU4MGQwMSBsZWdhY3ktdHJ1bmsKKzE2OTIyIDRkYWM5ZTMxNDliZWFjOTkwZmYxMGU0NDY4YTEwZjkyYjllNjY1MWYgbGVnYWN5LXRydW5rCisxNjkyMyBlOTQzNDJlZWE0Zjg4ZTQyZDVmZDIzYTkzZDJjM2EzMTE2NGRlYjhhIGxlZ2FjeS10cnVuaworMTY5MjQgMTdkMzEyODQ3OGMzYjkzZjFiOWQyNTg4MzhkYjU0OGQxZWQ4OTA0NyBsZWdhY3ktdHJ1bmsKKzE2OTI1IDMxNDhlZmU1NjA2ZmMxODE4YzMzY2NlMzgxMzVmMmY2MTEyNWUwODggbGVnYWN5LXRydW5rCisxNjkyNiAwYWJmY2EwMDM1ZGNjODMyZmExNWMwZTJkMzI1MGNjMDgxYzhmYWNjIGxlZ2FjeS10cnVuaworMTY5MjcgODdiOGYwZWE1MGU4ZDE1NjA2NTM0OTYzYjdiZGVjMThiYjZkOTYwYSBsZWdhY3ktdHJ1bmsKKzE2OTI4IDNlYTIzZTNjMWIwNmUyYTY0OWUzMjY5ZDJhOTlhOTI2NDFiM2NhYmUgbGVnYWN5LXRydW5rCisxNjkyOSA0ZWFjYzBjOTEyMDkwYmEwZTU2ZjA2MGQ2MmExZDBlMDA1MmViOWEwIGxlZ2FjeS10cnVuaworMTY5MzAgM2EzYWRmZGRjMjlkMWYwODIzZTYxNWFjNjc1N2I5ZWNhNzY3MzJmMiBsZWdhY3ktdHJ1bmsKKzE2OTMxIDBmODM0MWRjYzNjYmM2YjRhZjY4NmZiM2Q5ODk5NjZmZjBjNDVhZGQgbGVnYWN5LXRydW5rCisxNjkzMiA5Mjk4MDkyMGQ1ZWQxMGRlNWI1ZmVjNzFmNzExMTA1MTZlN2YxZjg0IGxlZ2FjeS10cnVuaworMTY5MzMgYWM4ODA5OTU5ZDAxNjQ0MTQwZTcyMWRjNTE0OTI3ZTExN2ViOWVhMCBsZWdhY3ktdHJ1bmsKKzE2OTM0IDQ0ZjRhODRhODBhODI1ZDhiZjBjMDgzMDk0M2Q1NjQ0NTE1MjM1MmUgbGVnYWN5LXRydW5rCisxNjkzNSBmNjMzOGQ3NGRjYTEwN2FiYTg2ZTQ3ZTZjZTVhMTllNTg2YTFmYjE5IGxlZ2FjeS10cnVuaworMTY5MzYgODBkNDY2OGYxZTEwMzdiNTJkNDg2YjVlOThkYWY0NTM4NDhlZjBmYSBsZWdhY3ktdHJ1bmsKKzE2OTM3IGMxNGNhMjBkMWZjOGQ5NWI1MTFiMjJmMGYzYjBlZGE4ZTNhOWRjODAgY25yaS0xNi1zdGFydAorMTY5MzggNzNjNTY0ZTRhMGYzNTI3YWViZGU2NmJjZmI0YjI3M2U0M2ZiNWU0NSBsZWdhY3ktdHJ1bmsKKzE2OTM5IGU4YWU3MGMzYWJiNDNhMTc5Y2Q5ZDJiMTc3MTRmZTI4N2VjODlmNjUgbGVnYWN5LXRydW5rCisxNjk0MCAyNjg5NjdjOTkzNGEwNTg2NDE2YzNiNDg2ZTc5YmY1MWI5NzE5NjM1IGNucmktMTYtc3RhcnQKKzE2OTQxIGRjNWY2N2U4YTJhZjE5Mzg5MGUzYmQwNTVlYThmOGZkMDFlOTFiZjMgbGVnYWN5LXRydW5rCisxNjk0MiBjZWY0ZGE0MTQ3YzgzZDU4OTg5MzkyZTZmYzc4YTBmNWNkZTE0NTc3IGxlZ2FjeS10cnVuaworMTY5NDMgZmQzZjhhY2YxMDNkMWU3YTNmOGYwMmVlYWQ5NDk0MjUwMzU1N2ZiMCBsZWdhY3ktdHJ1bmsKKzE2OTQ0IDQxZWI3NTVlNGVkMTUzZjY1OGI4NjNhOWNlNmFiYjEzYzE1MGMwYzUgbGVnYWN5LXRydW5rCisxNjk0NSAyNjc2OGUyMWFjZjkwZWNmNTAyZDVkNWM2NTQ5YTRmNjkzYmMzNmE0IGxlZ2FjeS10cnVuaworMTY5NDYgMDM5NTgzYzA5MGM0MzQyNGI5YTg0NDMwYzFlNzk1ZGNmZDJlOWRlYSBsZWdhY3ktdHJ1bmsKKzE2OTQ3IDJjMmFlODZkZmU4NzcyNTlhYjA5MWU5YzljM2E2MzU0MTYwM2FhNmYgbGVnYWN5LXRydW5rCisxNjk0OCA3YWFkN2Q5YjYxNmU5ZGRiZGRiYmEwNGYyZmJlYTk5NWEyMDU5ZWZmIGxlZ2FjeS10cnVuaworMTY5NDkgNDQxZGEyYzVkZTQzYTk1M2FjYjY1YzY1OTc2NzI4Zjg2YjY4OWVkYyBsZWdhY3ktdHJ1bmsKKzE2OTUwIDQ0MjEyMzM2ZDcxZWE5N2VmZTdhZTIzNzQzMmY5NzQzMDM4YjQ3MTIgbGVnYWN5LXRydW5rCisxNjk1MSAzZWIxMzVkNjJlMmFlZDJjMzFmZGMzMjdjZDNjMmIyNTBmYTg2ZmY4IGxlZ2FjeS10cnVuaworMTY5NTIgNzZlNzMzODljMzQwNzAxMjBlNjYyZjI3ZmU1ODI0YmYxZGU1MGU3MCBsZWdhY3ktdHJ1bmsKKzE2OTUzIDk5NmNjMDY3NWRiNjc4NjllOTZlMDI2YmY5ODRiZDZiYjVhM2QwZDMgbGVnYWN5LXRydW5rCisxNjk1NCBhYWUzN2RjOTlmNTc1NTcwOGNkMWEwMjk2ZTYyYjZlMjNjNGVhMDkxIGxlZ2FjeS10cnVuaworMTY5NTUgMDcwOGNhYzU5ZGVmM2E2Njg0NjgzM2JmNWQ4NmY0MjY0ZTQwNDQ5NCBsZWdhY3ktdHJ1bmsKKzE2OTU2IGY2ZTVjYzJhZjZmMTk3YTQ0MzAzMTViMGZlZDM5NWY4OTE2NWM4ZjIgbGVnYWN5LXRydW5rCisxNjk1NyAzMTE2YjBiOTEyZTk3NWM2MTg2OWRhNTllNDYwMDRmMjcxNjUxMDc1IGxlZ2FjeS10cnVuaworMTY5NTggZjdhOGM0MGIzODgwYzQxMzczMmEwMTFlNGUwNzNhNmM2YjNkZTEwMSBsZWdhY3ktdHJ1bmsKKzE2OTU5IDQyODcyOWZmODgyNDlmZGViNTE5N2I2YTAwMWRhNGNmY2Q1Nzc1MmEgbGVnYWN5LXRydW5rCisxNjk2MCBmNzA0MjRlYmIzOWI0YTFmNDhjMjI0MDU4OGRiNGZlOGYyOTJhZTg1IGxlZ2FjeS10cnVuaworMTY5NjEgMjJiNTkwZjhjZjUzODI0MTBlMGMzNWQ0MGIwM2ZiMGVhOTM5MDNjZiBsZWdhY3ktdHJ1bmsKKzE2OTYyIDMxY2RhODdlOWZmNGVhNDczMThhNjhjNDNmOTdlZGQyNzMxYjBmMmYgbGVnYWN5LXRydW5rCisxNjk2MyA3M2U0ODg0NzEyNjMwOGIyMGM3ODk5ZjkyMWRhOWFiMDUyODZiZTNiIGxlZ2FjeS10cnVuaworMTY5NjQgZjVmODc4NGE0YzI3YzhhNTEwYWUzZGRlZmIyM2Y3NDQ3NGZlNWE4OSBsZWdhY3ktdHJ1bmsKKzE2OTY1IDIxZWM2OWE1NjIyODg2M2Q4OWY4N2M2ZDQ5N2FkMjE2ODk2YTk1ZWEgbGVnYWN5LXRydW5rCisxNjk2NiBiOGU1ZTkzMzgwMWUzNmFmYmQzNWM2OGM4NmZiMDNlNjg3MGE2ZmQ2IGxlZ2FjeS10cnVuaworMTY5NjcgOGRjZGRjZjEzMzBhNzdkNTgyZTBiODg5ZmE1MTIwMjNmNDg3MjkyZSBsZWdhY3ktdHJ1bmsKKzE2OTY4IDMwMmRmZDUzYjNjOGZjMjI1OGFkODhiMjE3NTIwYWQzNWE5YzYxNzggbGVnYWN5LXRydW5rCisxNjk2OSA3MmQ4YTNiMjAzYjE0ZjZiMWRiNmY0MzQyOTkwMmE0NWU1NGU3NzMwIGxlZ2FjeS10cnVuaworMTY5NzAgM2RhNWJmM2M1ZjE1NzQ4NjRlMTg0M2MyNDFhZTgxODZiN2VkYWYxYSBsZWdhY3ktdHJ1bmsKKzE2OTcxIDQwNDQ3YjY3MjA2NGI0MjA0OThlOTZhNzAzYTU0YjIzMDllMGI1MTIgbGVnYWN5LXRydW5rCisxNjk3MiBlYzNlMGZlMTdiM2Q3N2E5OWMzOTg3YzU1OWY2NGQ0MzIyMmQ3ZWMwIGxlZ2FjeS10cnVuaworMTY5NzMgZGFkNTRkNDRkOWVjYzI3MzQ0NjQ3MWJlMTM4ZmI5NjczOGZlOTQzYSBsZWdhY3ktdHJ1bmsKKzE2OTc0IDA1MWRjZDdjZDE5OTFkZTllMTZlZDAzMGFhZTZiMWYwNGJjMGU2MTEgbGVnYWN5LXRydW5rCisxNjk3NSBlN2M4YjU5OGZmNzVmYTIzOTUzNjZmZDVmMjFkODBjNzQxMjQ4NWYzIGxlZ2FjeS10cnVuaworMTY5NzYgYzEyZTc5NmJjNGI2NzViMDg0OTA5NTA2NmIxZTBmNjA0YjdlZGE2ZCBsZWdhY3ktdHJ1bmsKKzE2OTc3IDZiZjA2MWEyZmM3ODAyZjc2YWVjNjNiNmVmZDNmODZiNjc1ZjcwNjEgbGVnYWN5LXRydW5rCisxNjk3OCA1NDY4YjZlM2I5NmE3ZDE3ZjU5YjA1NTFmNDc1MTRkMDgxOGRiNjU1IGxlZ2FjeS10cnVuaworMTY5NzkgNTJmZDQ5NmQzNTMyMDljNTNmN2E3YWMwMmZjMDY0NzUzMTU3YjhkOCBsZWdhY3ktdHJ1bmsKKzE2OTgwIDI3ZDdkODljNzc0YjEwMDAzYThlODMzMzBiYzYzZjY0NDRmZjA2MjQgbGVnYWN5LXRydW5rCisxNjk4MSAxYjlmZDBjYmQ5MTQ5NDdjYzQyMWJhN2U0NWFhMDkzZDdiYTlhZjAwIGxlZ2FjeS10cnVuaworMTY5ODIgZGJhNGFlYzk3MGU2Y2RiNTBkMTc2NTEyYzFiN2YwYmM2MGFiNTIxNiBsZWdhY3ktdHJ1bmsKKzE2OTgzIDAxODQ2NTY4ZDE0N2QxNjcwN2VkOTU5MmQ4NjliOTA2Y2YxYWRkMGYgbGVnYWN5LXRydW5rCisxNjk4NCBlOWMyZjgzMGY5YmE1MmJmNTk2OGNjN2NkMjY4ZDJjZTcxNzVhMmRlIGxlZ2FjeS10cnVuaworMTY5ODUgNTFhMzNhM2IyYmE5MzU0NTdmZDVmYzg2Y2E3OWRlYTE0ZjBjN2E3MSBsZWdhY3ktdHJ1bmsKKzE2OTg2IDkxZGVhZGZkYWUzNmJhYWU2YTJhZDdjY2UyZjlmNjQxN2MyMjM3YTAgbGVnYWN5LXRydW5rCisxNjk4NyBiOGVhZGVlZDhlZDM1MTgwMzY2NGE2Yjg3OGYzOTkxZmY3M2FmMzkwIGxlZ2FjeS10cnVuaworMTY5ODggMDE5MjY1YjNhODU2NTljNDI2OWE5Y2FkN2Y1Mzg4MDBjZGZmNmFmMyBsZWdhY3ktdHJ1bmsKKzE2OTg5IGM1NjM3MmFkOTM0MzVmMWZjYzVjZGM1MGViNTk5MGUxMTM1MGExNWIgbGVnYWN5LXRydW5rCisxNjk5MCAyYjZhNjM3NTliOTdjZjk3ZjNlN2ExODQ1ZDU3ZjFmZmQ0YmM2OGFjIGxlZ2FjeS10cnVuaworMTY5OTEgZjY2ZTg2M2EyYTViMWU0MjdkNmZjMTcwNTIzYmVjMjQyY2UyYzY5NiBsZWdhY3ktdHJ1bmsKKzE2OTkyIDM1Yjc5ODliYTIwYzhhMTUzYTQ3YzAxNDhiYzYyNGZjMWQyZWZiMDcgbGVnYWN5LXRydW5rCisxNjk5MyA4ZDFhMDU5YWU5OWQ0NGUyMjZhM2UyNTMwOGI5Y2E0ZWY4OTAwZTdmIGxlZ2FjeS10cnVuaworMTY5OTQgYWNjNzI4NThlYjcyYzgzNjAxNjlmZGIxYzhhMTY5YTEzMTY5Yjc5MiBsZWdhY3ktdHJ1bmsKKzE2OTk1IGFiYmMwMjc5NWM0ZGVmZWNhMjllOGM2ODU4YTE1ZWZmZTE4MjBjYTEgbGVnYWN5LXRydW5rCisxNjk5NiBkZmYyMmQ0YTQ4ZGFlMzZmYjBhOGE0ZGIyNzgwZmY5YmRiM2U2YWM2IGxlZ2FjeS10cnVuaworMTY5OTcgNTc3MmM0OTgzZGQ4N2QzODIwMjkwODdkYmM2YWFjNDc3YTFlMmNhZCBsZWdhY3ktdHJ1bmsKKzE2OTk4IGVhNzA0MGFiNzI4NmYyMmFjYjEyNjAxYjg1OGIyMDgyZjdjY2VkMzQgbGVnYWN5LXRydW5rCisxNjk5OSA4OWY4MTUzZmQxYmExNjFmODIzZjE5NjFlM2Y0YTg0MWI4NTYyMmFlIGxlZ2FjeS10cnVuaworMTcwMDAgYzg1YTgwZGI2ODQ1YjA2MmY1Nzk5NGJiNWVhYTBjYmM5MGY4NzI0NiBsZWdhY3ktdHJ1bmsKKzE3MDAxIDIzODVlYTU4NzJlMTkzYmU1NGJiN2EwZGZhOGI1MzI2MjFhMTNmNjcgbGVnYWN5LXRydW5rCisxNzAwMiAyODYzZmJiMTM1ZjFmOWNjNmM5N2ZmNDUxMGU0ZDRkZTZiNjllZThlIGxlZ2FjeS10cnVuaworMTcwMDMgOTMwMTNlNGJiZTAyZTI0YjAyY2EwMzc3MTViMzY0NTgwNTFiNjRkYSBsZWdhY3ktdHJ1bmsKKzE3MDA0IGU5MjEyMjhhZjQzNTY3ZWZjOTAxMjM1ODdlMDE2ZTkxNDVmMGViNWYgbGVnYWN5LXRydW5rCisxNzAwNSA1ODE0NjBmY2YxNDI1NjAwZTUxYTlhNDEyNzc4ZGE2YjAwY2Y1YTU1IGxlZ2FjeS10cnVuaworMTcwMDYgNjIyMzM5N2JkNmEyNjYxODQzMzYyMjA5ZmE2N2UzYjgxOWZlM2VkYyBsZWdhY3ktdHJ1bmsKKzE3MDA3IDI3N2ZkZDk2NDdmZTA4YjFhN2FhMjdiODBhZjVlYjE2MjNiNDQ0ZTIgbGVnYWN5LXRydW5rCisxNzAwOCA0ZTY2YTNhYjc1N2RhMzJmNjY4MWRlY2ViZWRmMGQwMDVjMzg5ZmJmIGxlZ2FjeS10cnVuaworMTcwMDkgYmQzZDE0MTFiNjZjMWQ0MDVkNjM2MmQ1NDliOWY0ODE3NGZiYjhhNSBsZWdhY3ktdHJ1bmsKKzE3MDEwIDliZjE1OWZmNDkxMjkyM2VkMmQ0NTIwOWEzMWVhNTdhMjEyNzAwMmYgbGVnYWN5LXRydW5rCisxNzAxMSAyMTE5NzYwMzRjZjdlZTM5MGMzMGY3OTc2Njc2MTZlZGQ0YTdjODU3IGxlZ2FjeS10cnVuaworMTcwMTIgOWQ4Y2U2ZWQ0YTI5YWI0MjAwMzU4MDE5YjcyZTFiNjk4MjY2NWM3OCBsZWdhY3ktdHJ1bmsKKzE3MDEzIDk5OTY3MWY2OWRmNGQwNWZmNzRmZjE5MTM1MDlhZmI1YjBiMWY1ODUgbGVnYWN5LXRydW5rCisxNzAxNCA0MTIzNGFlOTVkMmEwN2U1ZGIwMzQxMWFlNDUyY2YxMGVhZDk1ZmYyIGxlZ2FjeS10cnVuaworMTcwMTUgMjc4N2U5MzgxN2M2YTBhMThkZmJlOWEwZjMzZTU2NWZhZWMxNDIyMSBsZWdhY3ktdHJ1bmsKKzE3MDE2IDM0ZTdkZTRhZGE3MGFmM2NiYjYwNzZhM2RkZjU4MmI3NGY5MTUwZTcgbGVnYWN5LXRydW5rCisxNzAxNyA5MDBhMTc3NTQwMjEzY2JmZGE1NGYzYjAxYzNmYTQzZWQ4ZDc3OTZhIGxlZ2FjeS10cnVuaworMTcwMTggZWM2YTIxZjU1ZmExY2U3ZDc0NWEyZGM5NmFkZDAwMTg0OGE4ODdmMyBsZWdhY3ktdHJ1bmsKKzE3MDE5IGQyMjM2MjBhODExMjY4OWM4YjFmYzg0NjJiOGZlM2U3YThiMjU3MTEgbGVnYWN5LXRydW5rCisxNzAyMCAxYjBkYWJmZmM1MWNmMDkwMDQwZWFhOTdhMzhlZTE2ZGI5MmU3ZTNiIGxlZ2FjeS10cnVuaworMTcwMjEgMWMzNDQ1Mzc4ODc5YmEyNmI0ODFiMGMyZDk1ZGFjYWY2MDY1NjBmZSBsZWdhY3ktdHJ1bmsKKzE3MDIyIDY4MTZkYjI2NTBjYWJmOWIwMWRjZTA1ZmNhYWU2ODk4ODZkY2VjN2MgbGVnYWN5LXRydW5rCisxNzAyMyAzYWUxODViOGZmMDMxYjE0OGU1NjRjODI3YTQ1MzZiNDIyZWI2MDc3IGxlZ2FjeS10cnVuaworMTcwMjQgNGU5MDdhNTFhN2FmZmMxZjNjYzJkYjk4NGJhZGVmOWRjNDVjMWE0ZiBsZWdhY3ktdHJ1bmsKKzE3MDI1IDhjN2RjZDFlZDA4YTU3ZjYzYTc4MWViOTY4Y2ExMTk3NTNjOWJjM2MgdW5pdmVyc2FsLTMzCisxNzAyNiBjMTZmMmRjOWMwODllODZhNWNjYzAwMWJhNGI3YTFmNDk2MzU4NjU4IGxlZ2FjeS10cnVuaworMTcwMjcgOTRkNzFmMmZjOWE4M2NkZGM3MDM1YTg5ZmU1MjFmYWI3YjMzYWI2ZSBsZWdhY3ktdHJ1bmsKKzE3MDI4IDBjMGVlODg2ZmIwM2I3OTA1N2YwMGJiNTE3MjM3NGEwZTc4NmI5NmYgbGVnYWN5LXRydW5rCisxNzAzMSAxOTEyNmU1NTdjZTg0MWY3NDUzNjBjMDY2YmNhYjU5YzhlMzYxMjA0IGxlZ2FjeS10cnVuaworMTcwMzIgYTg1NmM5MmIxZDdiZjFhM2RlYzBlMzAxYWZjZTNhZTVjNDUxNzc3MSBsZWdhY3ktdHJ1bmsKKzE3MDMzIDU4OTExMmM0ODI3MzQxMDA4YWM4YTkxMmNlMmE5ZmNkYTU4ZjJlZDUgbGVnYWN5LXRydW5rCisxNzAzNCA2M2VhMmEyZGYwNmYzZDE4YWU1ZDRiMmVjNmVjMmNjNWUyMTgwZDc0IGxlZ2FjeS10cnVuaworMTcwMzUgYjVmYjE3NWFkNTI4MjU0MWM2YzIzZDcwNDJlYTk4OTdkZTY1MzdlZCBsZWdhY3ktdHJ1bmsKKzE3MDM2IDA3OTdmZGIyNWE3NzllMTdhOGJjZGVmMzQzOGNlYjE2MGU5ZDE2YmYgbGVnYWN5LXRydW5rCisxNzAzNyBkMzMxNzljZGM1MTEyMWQzYjkyOTU0OGRhODFlZWM4YWI5NzUzM2Y5IGxlZ2FjeS10cnVuaworMTcwMzggYWUxZWRjNmZmNTQzNWZhZGY4YzYzZmQ3NzQzNzZmN2Q5ZmY1YTM0ZCBsZWdhY3ktdHJ1bmsKKzE3MDM5IGU3OWQzY2Y0NDQzZWQ5ZDdmZDcxZjVmOTRjYmFlY2Q5MTEyM2U4YzMgbGVnYWN5LXRydW5rCisxNzA0MCAyYzMyODMwOTQzMTE2Nzk3M2ViNTkzZWNjMmE2ZWMzYjg1MzRkMTJjIGxlZ2FjeS10cnVuaworMTcwNDEgMzAzYzM2ZTQ4NzY5ZjkzOTUyN2MyZDI4YTQxMGUwNjc2NTgyOGQ0OCBsZWdhY3ktdHJ1bmsKKzE3MDQyIGU3NWViNGQ4ZTMyOWI0N2FiMzlhMGNhOGI1NDNiZWU1OTMwZDU4YzUgbGVnYWN5LXRydW5rCisxNzA0MyBkOTc0Y2Y1NDVjYTZhZGIzYzIyMzM1ZWU0NTE4OWRjMWNhMTY5MjE0IGNucmktMTYtc3RhcnQKKzE3MDQ0IDhjNTI2OTMzOTdkMjRhMTFkZGNhMjg4YThjYzBjNWUyNDY3MDM0YzggbGVnYWN5LXRydW5rCisxNzA0NSBjMzk3MzNiZTBkYzgxMWFhOGIxMTA5ZWY5Y2NkOWI1YzQxOGYxYmMyIGxlZ2FjeS10cnVuaworMTcwNDYgYTRmNTMyOGNjZjE5MjI3YmZkZjBlNWU2Mzg4YzU1MDgzYTA5Y2U0YSBsZWdhY3ktdHJ1bmsKKzE3MDQ3IGNiZTk1OTBkMjM0NGM0YjgyNmNjYzliYWFmYjY1YzYwZWU1YmM5MTggbGVnYWN5LXRydW5rCisxNzA0OCAxMWEyNmU5NjNkYzkwOGY2ZDQwMGFlZDBjY2IzMDA5ZDQxNTUxZmFlIGxlZ2FjeS10cnVuaworMTcwNDkgOWY5ZjMyODBkYzY4YTAxNzhiNjRjNDMwOWM4MjhlZjQwYTI5ZGU4OCBsZWdhY3ktdHJ1bmsKKzE3MDUwIDIwMzc3ZjE1Yjk2YTdjYmYxZjE4YzEwZTZiZDRmNTI0NzJmMGM0MGIgbGVnYWN5LXRydW5rCisxNzA1MSBhYjBlYmYxMmQ0ZGUyMjJjMDc0NTFhZjk3YmVlZjhkMjNmYTc0ZmVjIGxlZ2FjeS10cnVuaworMTcwNTIgMzE5MjVhYjQ2YjIzNTQyYTFjMzQ3ZTNmYzMxNWIyNmFkMjc1NDBlNyBsZWdhY3ktdHJ1bmsKKzE3MDUzIDM5NmI0YWIzYjljMmE5Y2JkY2IyNWQ3YWVmYTQ3MTFjNTMwZTQ4YzMgbGVnYWN5LXRydW5rCisxNzA1NCAxZjFhMTU2ZWQ1YWY4ZjdhNTBjZTA1ZmM4NWY4NTQyM2EyNGYyYWE0IGxlZ2FjeS10cnVuaworMTcwNTUgYjk3ZTYyMDJmMGIxOTY4YmQ5ODkwMzFmMmExMTg1OTAyM2I2ZTI5NCBsZWdhY3ktdHJ1bmsKKzE3MDU2IDNlNWQ2ZTIwOTNkZmUxYzViZDk2NTliNjFhZGI5YjVmOWQ4Y2MxOGEgbGVnYWN5LXRydW5rCisxNzA1NyA2M2Q4NTg5N2M2OWZhNGQ1N2MxNzFlM2I4OWFkMzUwYTdiMzRlNjdlIGxlZ2FjeS10cnVuaworMTcwNTggNThkNzk5NWNlNzk1Zjc5ZmViMDJjZmQ5ZWNiZjhjZmUwMTdiZTc5YSBsZWdhY3ktdHJ1bmsKKzE3MDU5IGQ5NjQzZTljOTBlYjFhNWNjOWQwMWU3ODgyM2VhMWNkMzE5MDcwNDQgbGVnYWN5LXRydW5rCisxNzA2MCA3NGY3ZjIzN2Y3MzlkOGQ2YzkxZTQ1MzcxNjQzYzc0ZjM0YzhhYmU2IGxlZ2FjeS10cnVuaworMTcwNjEgMGU2NmI3NzQwOTRiZmU1NTE0NTRjZTdiMmM5YjFkNTI1NmJiNGU2OSBsZWdhY3ktdHJ1bmsKKzE3MDYyIDM0ODNhNzhkMTM1ZmQ0NjI0MWJjNmYzYTY4ZTdjZGY1OGQwNDU0ZDIgbGVnYWN5LXRydW5rCisxNzA2MyAzZmNhYzM1YzdmNWUyMWZmZWUxN2IyNWI1Y2MyMjdjNTc5MzM0NGIxIGxlZ2FjeS10cnVuaworMTcwNjQgMDY3MGM0ZjkwMTcxMGYyZDA5YzIyOTQ3ZjQxNmQ1YmY0NzYzNWMwZCBsZWdhY3ktdHJ1bmsKKzE3MDY1IGIyYTgyOTJjMzlhOWEyZGYzZmU5OTE5MjAxZmFhYTczNTUxNmQyMTYgbGVnYWN5LXRydW5rCisxNzA2NiA3YjMyY2NkZjFkNGEyMDI0ZmNmMzhmY2IzZmYxNmQ2YTczMzY2NzBlIGxlZ2FjeS10cnVuaworMTcwNjcgNTk5NGJiNjE5MTYzMzJjNWZkZTkxNGM1MmY2ODIyOTBhZmMyNDJhOSBsZWdhY3ktdHJ1bmsKKzE3MDY4IDljZDJmNzkwYzUwYzM4Mjg2NGVhMzZhY2QyN2U2ZDdiMGQwNThmNWEgbGVnYWN5LXRydW5rCisxNzA2OSBhMTQyZWEyMGZlOTRmMTg0NmY0NWM4OWEyOTgzNGY2OWY3ZTdiZDgzIGxlZ2FjeS10cnVuaworMTcwNzAgNDM4ODcxZTcwNTMyYjE3YmUyNzBjYjhkNWQ4MmYyNjE2N2QxMWQ0ZiBjbnJpLTE2LXN0YXJ0CisxNzA3MSBhMWIyZmIxN2JkZTdlZDdhYjdjYWYzZjA2YWUxMDlhZjY4NjMzN2E0IGxlZ2FjeS10cnVuaworMTcwNzIgNGUzNjQwYTA2ODU3MjA2YmYxNjZlZmY1YWJmNjc4ZjczZGI1ZGVjMiBsZWdhY3ktdHJ1bmsKKzE3MDczIDRhZmIwODg5YTE2NWMxOTc1YjRhMTA2MTMyYjhjMmU3ZTk4OWE0NzYgbGVnYWN5LXRydW5rCisxNzA3NCA1OGYzZjkzNjI3OWZmNjgyYzYwNWM4MWI1MjNkMjRhOTc3YWZlNWI1IGxlZ2FjeS10cnVuaworMTcwNzUgYTk5ZmFiMGJhMmRmODhjOWE4YzE2NjA3MDNiMmU3NmNjNWM0ZTdhMiBsZWdhY3ktdHJ1bmsKKzE3MDc2IDc0NTkxNTliYTI0OWY0NmZmMWQ0MzA1ZjViYjE4YmNlMmZhNTFjNDYgbGVnYWN5LXRydW5rCisxNzA3NyA4MzBkZTY4ZGUzMzA5NWFiNzNlOGUxNDhkOTBjZDgxODBlYzg5NzVkIGxlZ2FjeS10cnVuaworMTcwNzggY2RkOTVkNjdhNzE0MjU4MjlkZThiODU5MDg1M2JlODc3MGQ5MDczZiBsZWdhY3ktdHJ1bmsKKzE3MDc5IDFmYzMzZGZjZWM0NDJjY2ZmOGUzY2Y5NDE4MDBlMmYxNmM3NWZkMTcgbGVnYWN5LXRydW5rCisxNzA4MCA1ZmZmNGZmZWIzNWQ1YzVhZjFmN2MzZmQyYmI4NGNiZGIwNGQ4ZjNjIGxlZ2FjeS10cnVuaworMTcwODEgNjM5NjUyOWE0MjFjOWVhNDMxMzI2NWEwMjEzNTU2YmI1ZWVmN2I4NSBsZWdhY3ktdHJ1bmsKKzE3MDgyIGFlMjc1NjQ0NDU3YjU1NGFjZTQ2YmVhZjdiOGM4Y2ZhZGFiMTdlYjkgbGVnYWN5LXRydW5rCisxNzA4MyBkODdjZTJkMmU0MjU3MzE2NTY4NDBlNTExMDc4MDhkMTRlMTMwOGZlIGxlZ2FjeS10cnVuaworMTcwODQgYWRmM2EyODRhMmNmMWQ2NmU2YWIwMTQyYWU1YmMxN2IzY2MxZmVhOSBsZWdhY3ktdHJ1bmsKKzE3MDg1IDliMjBhNjlhNTA1ZTBlNmYyODg3Yjg2NjcyMjY5MzBjOWNlMDkzZGEgbGVnYWN5LXRydW5rCisxNzA4NiAzNjM4NTFjY2NmMmFlZDIyYTc1ZjZhYjZjNjc5YjUwZWUyNjI5NDI3IGxlZ2FjeS10cnVuaworMTcwODcgNjYwZGJjYzE4YjllYzZlOTZmY2UxYTA0ODgzMTU0YjNkNDRiZDQ1ZSBsZWdhY3ktdHJ1bmsKKzE3MDg4IDFmNzZmYzk4YjRjOGRmMDA3YjA4ODY1NjBhNmViMzk3MTQ1YzE1YmQgbGVnYWN5LXRydW5rCisxNzA4OSBkM2Y5MmYzZmMwYjA5MDI2ZDkzYWVhNWZhZjk4OTVhZmM5YzI5ZDNiIGxlZ2FjeS10cnVuaworMTcwOTAgOTg2MDg0MjljYTZlNDI5MjQzMGQyMmEzYzg0ZGE0ZjJjZTYyMjQ0YyBsZWdhY3ktdHJ1bmsKKzE3MDkxIGNkOGI4MTVjYjE5NjU3YTBjZjUyMWFmMGViNWRkNGIyY2Q3ZjdlNzkgbGVnYWN5LXRydW5rCisxNzA5MiA5MGNhNmFiMjY5MDllYzM0MWUwNTFkYjI0ZWZmMDNiZWU3MjVhYjc4IGxlZ2FjeS10cnVuaworMTcwOTMgZGM5ZDllYzQ0Njc5Mzk1YTBmOWM2YWY1YjE3MzhhZmE0YmU3ZTIwNyBsZWdhY3ktdHJ1bmsKKzE3MDk0IDE1YjZmYzI1ZjYwNTA5NmY5MzY2YzczNzEyOTc4YzE4MGJmYWViMzcgbGVnYWN5LXRydW5rCisxNzA5NSAyMTU1N2JhNGFmYmNlZGJjZmRkNDc2ZDA5ZjkxN2RlN2FhNWFhMDU3IGxlZ2FjeS10cnVuaworMTcwOTYgYmJmYzQ5YTg0Mzg5NjQyZTk5MGE4YmJhZDhjN2NjOTYwNDkyMjAxMCBsZWdhY3ktdHJ1bmsKKzE3MDk3IDE4ZGEyYmM1MDU4YzBmZGY4Yjc4ZjY0MWQ3Y2MzNjE0ZTM0ZjE4OTcgbGVnYWN5LXRydW5rCisxNzA5OCBiZDk1MGM1MDE2N2ZhMWQ4MWMxNDRmODJlNzFlYzhhZGNhZDNmMmQzIGxlZ2FjeS10cnVuaworMTcwOTkgZjNhOGY2MDM2NTY3MDk5NTNhNGU1ZDRhMmY0NDUwMTc0ZWYwNTdhMCBsZWdhY3ktdHJ1bmsKKzE3MTAwIDk4NGFiZDIwZWVjMjYwZDI1YjQyZTQ3M2Q5ZTU1N2Y1OGM1MDdlYTkgbGVnYWN5LXRydW5rCisxNzEwMSBmYjhmYjUzYTJlZmYwMTNjNTZmYzFhOWVkMWJhNzBiYmFlZmViNDllIGxlZ2FjeS10cnVuaworMTcxMDIgYjFhMGZkM2RmMWZjOGQ2MTA3Y2NkOWRmZmIxNDg2YzMyMWMzZGRhMCBsZWdhY3ktdHJ1bmsKKzE3MTAzIDY4YjYxYWExYWE0YWEwOTQwNGI5Y2IwZjY0NDc5ODhkNzVkYmRhNGUgbGVnYWN5LXRydW5rCisxNzEwNCA4Y2Y2NjMxMjY3MjNhZGFmZTY0ZjNkZTRlODFlMDljYTgxZDg4MzU0IGxlZ2FjeS10cnVuaworMTcxMDUgNGQ1NjUwOTVhZTk5MzMwMTcyNzJmOTc4MDExN2U4Yzg5NmU1NjM4YSBsZWdhY3ktdHJ1bmsKKzE3MTA2IGRmODkyMzhhYzc0NzcxOTE4NzU4ZGVkNDlhOTU3MzQ4Nzk4MTgwOWUgbGVnYWN5LXRydW5rCisxNzEwNyBlMjVhYTU2YTUyMDdkZjhhOTBhNTcxZDYzYmIxMGFlYTFhYWZjYjViIGxlZ2FjeS10cnVuaworMTcxMDggZDM1N2FkMzY3ZjI2MGZiYjljYjJiMzcwZjI0MTVmNjY3NjhlNmRhYiBsZWdhY3ktdHJ1bmsKKzE3MTA5IGVhOTVlZWVlMDRlNzI0OTM0OGU1ZGFmN2UzY2JlOGMxODYwNWUwYTEgbGVnYWN5LXRydW5rCisxNzExMCA2YWI1OGM1NWUwYTNjMDY4NDA2NTA3MGE3ZmY0ZmViNzY2NTU0NDhiIGxlZ2FjeS10cnVuaworMTcxMTEgNzdlMjQ0M2FiZjliZGUzMjUxODlmY2NjZjZlYmYwZjVhMGE5MzVkNyBsZWdhY3ktdHJ1bmsKKzE3MTEyIDJlMmZiZWU1M2U2OWZlNmNjZTZmMDZiZTc3YWE2ZmZlOTFhOTgzMzQgbGVnYWN5LXRydW5rCisxNzExMyA1OWMxOTA1MmFlNGZiMDIxZTgwMzdlNGQwMjhhODFmMmRkMjBlNjZiIGxlZ2FjeS10cnVuaworMTcxMTQgYmZlMzA0ZmMwNmFiOTEyMjQ0NDg1NzZkOTNiNWYzNDI0OTExNmQxMCBsZWdhY3ktdHJ1bmsKKzE3MTE1IDExYTg5M2NiYzFhMDEyYTdkZjg4NTk0ZWRiNDI0NzIxYWUxOTVkMWEgbGVnYWN5LXRydW5rCisxNzExNiAyNmRjNjJkZTliNmUxNWFhNTg5Y2U1OTc5ZmMxNWVhOGE2NzgxNjhiIGxlZ2FjeS10cnVuaworMTcxMTcgMDUzNjI3ZTdhYzE0MWU0OGUzYzI1YjI2M2FmNjk4NDZkMWZiNTk1MSBsZWdhY3ktdHJ1bmsKKzE3MTE4IGU1MjUzYjY5MmU5ZmJlMzY1YWI0MzY5Y2Q3NTliMjRiOGI4NmQ2MDkgbGVnYWN5LXRydW5rCisxNzExOSA4MTcyYWM5ZDIxOTY2Y2ZiYTUwOWZiY2RlMjE1ZWYyNmVjYWQ0YmEyIGxlZ2FjeS10cnVuaworMTcxMjAgZWRhNDQ5ZjU0ZTQ0OWVmMjJlNzNjYWFkNTNjZTM4MGFmZmUzMTA0YyBsZWdhY3ktdHJ1bmsKKzE3MTIxIDEyMDViMTgwYmE5MDNjNmFhMDRkN2VkZjNhMzRlMjAyNjU0NjUzZjAgbGVnYWN5LXRydW5rCisxNzEyMiBiZWNiMWVmMGE1NzM1MzkwNzZhNjliNzFiMjc0N2IzYjRmZjFmM2JiIGxlZ2FjeS10cnVuaworMTcxMjMgNTE2N2VkNjgzNmZjNGExYWEyMDFjNjFjMDFjNGE1MjMyM2EzYjQxOCBsZWdhY3ktdHJ1bmsKKzE3MTI0IDAxM2NlN2VlNzE2N2MzOWZmMzllNDVhNzg4ZmYxNzIyZTVhYTU1MTkgbGVnYWN5LXRydW5rCisxNzEyNSAzMTY0MWVhODlhNTM0ZDcwNmMxYjA4MzQ4NzE1N2I1MzE5ZTQ3ODgxIGxlZ2FjeS10cnVuaworMTcxMjYgZjhiMjBkOTBjOWFmMjU0MDgwNjBlNmNmZTk2ZWY4Njg5NTE4MjQyZCBsZWdhY3ktdHJ1bmsKKzE3MTI3IDAxOThkMjAyMDM5MDM2ODMxNDU1YWZjOWFkNTVkYTc3ZWViOTc0NWEgbGVnYWN5LXRydW5rCisxNzEyOCBlMzc3OWVlOTQyZDBhMDA1ZWIzMjZhZTliNjE2NjA5MDRkYjc2ZTcwIGxlZ2FjeS10cnVuaworMTcxMjkgNjJlYzBiZmQ5M2Y4MDhjNjdhM2IyOGY2ZTQwN2NhMGNkYmZiZWVjZiBsZWdhY3ktdHJ1bmsKKzE3MTMwIGIyNGRiNzcwZGZmZGRhOWMwOGRmY2FkZjliNGU1OGJiMjE5ZTU5NGYgbGVnYWN5LXRydW5rCisxNzEzMSBiOGIzZjc2ZmZkNTFkMTI0MWE2ODJmODJlZDcyZDAxZjg1Mjc3YzkyIGxlZ2FjeS10cnVuaworMTcxMzIgN2Q0MGJkMDdiMTI5NjYzNWJhODBlYzZhYjhmZmQ3ZTdhM2QyYTNkOCBsZWdhY3ktdHJ1bmsKKzE3MTMzIDJkYjgwN2YzNDViY2MwNzc1NDY5MWFjODE3NzcwNmZjYTc4YTg2OTUgbGVnYWN5LXRydW5rCisxNzEzNCA5NzY1MWYyOGIwMDRjNWI2ZmJlYmRjY2Y1Y2IyMTUwNjQyMjkxNTU3IGxlZ2FjeS10cnVuaworMTcxMzUgNGI5OGRmZGVkNDlmNDBiMDlhNjE0MzBmZGUzMTljMGNhMTU0OTkyNSBsZWdhY3ktdHJ1bmsKKzE3MTM2IGMwZmUxYThiODcyYzA0MDczMmE5NTMxNTZlZmIxMWJhZWMxOWU3MGIgbGVnYWN5LXRydW5rCisxNzEzNyA0ZDQ5MWFlYjk4MGZkMWQzM2E3NmNlNjUxMTQ5MzRhZjM0YzI0YjgwIGxlZ2FjeS10cnVuaworMTcxMzggNGRmYmQ5YjM0MTJiYWFlMzYzNjNjN2YzMWE4ZjliOGNhMTAwZWNlOCBsZWdhY3ktdHJ1bmsKKzE3MTM5IDUxMTEyM2RkODQyNDNkMzQyZGMwNmY2ZjdhY2RhMWViODdmODg2NmMgbGVnYWN5LXRydW5rCisxNzE0MCAyZGNmYWQzYjIxMTVkZWI2NTc2YWZkOTQwOGM3NjhhNzk1YjkyNzE5IGxlZ2FjeS10cnVuaworMTcxNDEgMzNjN2RmMGM1NDlkNzJmZTNkYWYzZjU1ZmFiZGU2OWUxNDg4MzJlMSBsZWdhY3ktdHJ1bmsKKzE3MTQyIGRkYWVmNDU1OTVlMmQ3NjJiZTNhMDJmZDg0NzdkMjE3NDBjZTBkZGQgbGVnYWN5LXRydW5rCisxNzE0MyAxZmFiOTI4MzY3NThmODA0M2JjY2E2NTNiNDFjOWZlZTMyM2NhZDJiIGxlZ2FjeS10cnVuaworMTcxNDQgYWRhNGVjNGNmZmQ1MDFkYmNkYTg4YzA5ZjA0Mjg5YTVkNGZiMGFjZCBsZWdhY3ktdHJ1bmsKKzE3MTQ1IDU4ZjEwMGFjYzNhYzBlZmEyYTU4ZmFkZTNmM2MwMTc1ZjY3MmM5YzMgbGVnYWN5LXRydW5rCisxNzE0NiA0NjBmZjNjZjMxOTViZTJkYzFlZDY0OGM0YWFlOGIzMjhmNmU0MjhjIGxlZ2FjeS10cnVuaworMTcxNDcgNTg4NDJjYmE4ZGJjZDIzMWY1MzRkMjhkNTY2ZWFmNTk0OGJmZjA0MSBsZWdhY3ktdHJ1bmsKKzE3MTQ5IDIyYjJlYmQ3ODM3MmYyNTUzZmVlODgwNzE5MmYyZDkwNDhiOWUxOWIgbGVnYWN5LXRydW5rCisxNzE1MCAxNGEyYjhkNGZjZmYwOGJiZjNkMGU3NmYwZGZkYmNhODM2MGMwNGVlIGxlZ2FjeS10cnVuaworMTcxNTEgNzNmMzllYTRlZmI3YTc0ZjY5MTM5OTYyZTBlMzIwNTQ3MTRkYWNjYyBsZWdhY3ktdHJ1bmsKKzE3MTUyIDhmMmU2MTM0Y2VhMDBhNTA2YTk1Y2VmOTQzN2JkODcyNDUzZjc4MWEgbGVnYWN5LXRydW5rCisxNzE1MyBiNTdlMzYwYTZkMTYxYTlhYzZkZWZjMzYyNjY2YjU0NjJmNTkzNDFlIGxlZ2FjeS10cnVuaworMTcxNTQgNmRlZTE5ODVjNjgxYzEwYWM1MDJjMmU2YzkwOTZkYjM1NGE4ZTQxOSBsZWdhY3ktdHJ1bmsKKzE3MTU1IGNiZTQyM2IzYmEzYTA2NWJhNjVkNjM4YjM5NDA2OGZjNjliNmVkNDcgbGVnYWN5LXRydW5rCisxNzE1NiBlYjdjMjdlOGZlMzdlZTdkNGFjNjAyYzAyYzlhMTdlMWJmNDQwMGQ1IGxlZ2FjeS10cnVuaworMTcxNTcgZjU1YjY3M2Q5YWNkNzQyNWNhZjk1ZTBkZTExODljZjE4ZTEyNzI2NSBsZWdhY3ktdHJ1bmsKKzE3MTU4IGJlYThmMTRlN2Q2MWNmODBlNTMyM2MxZGM5OWQyNzM4YzMwZTEyZmEgbGVnYWN5LXRydW5rCisxNzE1OSA5NTFlYjNhZjM0OTQ4M2JkNTcxNjNhNDA3YjUwOGFkMjMyNzg5YTBjIGxlZ2FjeS10cnVuaworMTcxNjAgMDExNWY0MDNmYWRkOGZiNTBkZDMwNGZjMmM1MWJmNzAwYTBhZjc5YyBsZWdhY3ktdHJ1bmsKKzE3MTYxIDNiODRjNWZmODlkYTg5M2ZkOWZiYjQ3NmRmYzVkOGE0MWIyOWNmYjUgbGVnYWN5LXRydW5rCisxNzE2MiAwNTdjN2NlYjkyZjA0NDg2ZjI5N2JiZjc2ODYzZTY0ZjE1MmU3Zjg0IGxlZ2FjeS10cnVuaworMTcxNjMgZjQ4ZWQ5NDQ4ODRiZmZmMmE1NTE3MzRmNDk3ZDJkZTE5OTE5NzJkMyBsZWdhY3ktdHJ1bmsKKzE3MTY0IDgwMWEzMDRmMjQ4ZmJmZjc2OGNkNGVjMmUwOWMwYzIyMzY1M2VmODUgbGVnYWN5LXRydW5rCisxNzE2NSBhYjYxYzMzNWEwNGRjZDFiZjQ5NTViNmRiYzBhNTE3MjhmMzQxNTA5IGxlZ2FjeS10cnVuaworMTcxNjYgZDQxYzQxMzcxZGMxMDg5MDQwZGI3NDdlMTVkMzI4NTk0Zjc5OWQxNCBsZWdhY3ktdHJ1bmsKKzE3MTY3IDY5NDliNTAzNjRkZDA4YzgyMThjZTdiNzM0YzY5NjEwNGQ5MjMyNzcgbGVnYWN5LXRydW5rCisxNzE2OCA3YjUzZWMyNzA0ZTAwYTNhNWU1ZDc0OGQzZTBmODJhMjhmNzAyNWFkIGxlZ2FjeS10cnVuaworMTcxNjkgNDMyZDMwOGM0NWU4ZDhiNDFmYzFhYzcyNDcwMjg3YWVkZmRlZTJlZSBsZWdhY3ktdHJ1bmsKKzE3MTcwIDUzOTdmZGY4OGVjMjVhMWI1ODM3ZGVjOWZjODUyODM5YWJlNDQxZTAgbGVnYWN5LXRydW5rCisxNzE3MSAyZGUxZmI1MzAyZWQ4N2VkNjhmMmJkOTdkMGY1MzFlOGViZjkzOWQ1IGxlZ2FjeS10cnVuaworMTcxNzIgNmQwZjY0ZjdkZWRkMTgzNTRlNThjOTJiM2ZhZGU2YTc0NzY5ZTVhOSBsZWdhY3ktdHJ1bmsKKzE3MTczIDIxYmY5ZmE5MjI1NTg1M2VlNDJjYWNjYzI0NGU0ZTRlYzVjYTgyOTggbGVnYWN5LXRydW5rCisxNzE3NCA3MzUyYmIxNjMyYmMwMWE0OTE2MTIyMDNjZmE1YzYyNjk2Y2NiY2FhIGxlZ2FjeS10cnVuaworMTcxNzUgZWY5Nzg1MjAwODVmMTBlNTk3ODI2YjI1OWFhOTA2YjFiN2I5ZTY0NiBsZWdhY3ktdHJ1bmsKKzE3MTc2IDkzZGFiZmMzYTgzZmM4YzUyYmFkODgyYmNiNTM3NjUzY2I4Y2FlNjMgbGVnYWN5LXRydW5rCisxNzE3NyBkZWI3Mjc0MzVmMzkwNjRlMzVmNjgyNWQ3OTQ4ZDIwZWM4OTAyYmVhIGxlZ2FjeS10cnVuaworMTcxNzggMGY2ODA5ZWJhNTBhODhjNzczZDFkNzExOGJjMzY5N2FmYjU3YTYyZiBsZWdhY3ktdHJ1bmsKKzE3MTc5IDYzMGM4YWJmYThkN2MwOGU1NDU2N2U3OTQ5MTU5MjA5ZmMzODMzOGMgbGVnYWN5LXRydW5rCisxNzE4MCAzYjJkZmJjMzQ2ODlkZWQwYjBlNzI2MjY4MjI2N2ZhNjcyYTkyY2YzIGxlZ2FjeS10cnVuaworMTcxODEgYTM4ZTEyZTRhZmI3MGM1OWRiZTVlNjQ3ODQ0MWE0YWY3NTUwMDE1MSBsZWdhY3ktdHJ1bmsKKzE3MTgyIDNlZGEzMDEwYmMwYTBkYjg1ZDE5ODE4MjhjOTY2YmZhMDY4ZjEzNDkgbGVnYWN5LXRydW5rCisxNzE4MyBlYTllNjI1YjAxYTJhMDU2ZDFlNTIzNTk1OGU2ZmJjNTdmZjA5YTU5IGNucmktMTYtc3RhcnQKKzE3MTg0IDM1NzYzYmU3NWRkYjdjYTZmNzIyOGQ1N2Y4MmNjYTQ2NGYzM2NlZDQgbGVnYWN5LXRydW5rCisxNzE4NSBkMWQ1ZTJkYzI5ZGI1MGQ3NDhkOTJkYTBjOGU0NGRlYmVmOWZmNTUzIGxlZ2FjeS10cnVuaworMTcxODYgNWM1MWMwOTZkZTNiZmU2Y2MzNmJhNzE4ZGJmMGUzNGY1NGQwYzg5YiBsZWdhY3ktdHJ1bmsKKzE3MTg3IGE2NjViZGM0OTIyZjVkZmIwZGFkZGJhOTI2ZGM3ZmMyM2Q4ZmM5YWIgbGVnYWN5LXRydW5rCisxNzE4OCA1ZGE0MDZlYmVmNTUyMDRmN2RhMWI3YTliYWZhOTgwY2MwMzRkYTM3IGxlZ2FjeS10cnVuaworMTcxODkgNjY1YjE5ZTc3NzZiNTNiMjAxZTU0Mjk2ZWZiMGEwZDk0YTQyNzU4ZSBsZWdhY3ktdHJ1bmsKKzE3MTkwIGM3ZWQ0MTJhMDc1YjAxOWRkNTBkN2NmYTYwNjViODM2NTZjYjM0ZWYgbGVnYWN5LXRydW5rCisxNzE5MSAzNmQwYjViMDk0ZTQyMWZiN2U3OTY2YTBiNTRhNTM2Mzc2MDgwMTFhIGNucmktMTYtc3RhcnQKKzE3MTkyIDdhMWZlY2MwOGQ3MGE4Y2EwMGUyMjA0ZTViMjJjNTZlYmViM2QyMjIgbGVnYWN5LXRydW5rCisxNzE5MyA2NDhhMTJhNzgwZDkwODM0NGFiZjdkZjk0ZmUxNmNiZWI5YjhiNjAyIGxlZ2FjeS10cnVuaworMTcxOTQgMDM0YmYxMDgxMzA0NzUwMjM4YTQ2NTY2OTZjOGE3Yjk1ZmMwYTYxYyBsZWdhY3ktdHJ1bmsKKzE3MTk1IGNhYzkzOTA3NmM3ZGJlZTcyMjAxYmRlMzBjNjBhMzMwODcyNDY0MjQgbGVnYWN5LXRydW5rCisxNzE5NiBjZDA0N2E4NThhY2UxOWJiYjUxZDc2MGM4ZTk4YmVhODQ4MDlkMTZlIGxlZ2FjeS10cnVuaworMTcxOTcgMDlkY2ZmNTE5MzJjNzdkZGU1MmJiZjYyYTZjNWQxNmYyOTQ5YWY2OCBsZWdhY3ktdHJ1bmsKKzE3MTk4IDY0YzI1ZmQyOWQ2ZjY3MTdiZGNhZmY3MTBiYzhjNjc2ODAzYjc0N2EgbGVnYWN5LXRydW5rCisxNzE5OSBlZDE0N2E1MzcwMWI4MDA2NTI0NzgxNGE1NWFhYzk1ZGQ2OWIwMDc2IGxlZ2FjeS10cnVuaworMTcyMDAgOGRmMTY2Y2EwOWIyNWFlOTI1YjcyMzYzMTVhMzQ2OTliOTA4ZjUwNCBsZWdhY3ktdHJ1bmsKKzE3MjAxIDZmNmY5NjVjNWUyZGI2NGI5NDdkNGZjYzczODFlODNhYTBjYjA3NTYgbGVnYWN5LXRydW5rCisxNzIwMiBmZDQ3OTk2MGU1ZTBjMmMwNzc4ZWM0MjA4MTI3NmI0MTdhMDJiNTQ2IGxlZ2FjeS10cnVuaworMTcyMDMgZGQ0NzY2YWEyZmQyZjc3Yjc2YTgyODc3ODI5ODVhNDg3YTZhYTk1OSBsZWdhY3ktdHJ1bmsKKzE3MjA0IGNhNzMxNmEwMDQ2NGVhNDhmMThmMGVhODUxOWRkYTkyNWRjZmZkZWYgbGVnYWN5LXRydW5rCisxNzIwNSBiMDY5ZDdkOWNlOGEwMGRmYWY3MTI0MGI5MTJlM2FjZDIzZWJjZmNmIGxlZ2FjeS10cnVuaworMTcyMDYgY2QwYzRkZDQ5MDRjOTYzNDEyYmMyYzY1Mzg1NzNlZTg1ZjQzY2U4YiBjbnJpLTE2LXN0YXJ0CisxNzIwNyBlOTliMGRiMTZkZDdkM2M5M2NhODg1ODVlMjZjMGU2OTBjYTgyODI1IGxlZ2FjeS10cnVuaworMTcyMDggNzk1OGE4OGVkZGExNzczODk1Mjc1OTJhOGMwYmI4OTg2ZmQ2ZDYzOSBsZWdhY3ktdHJ1bmsKKzE3MjA5IDJkNmNmNjhhYTY0YTU1ZDJmYTJiMmY3Y2QzZGQ1MzJmMDg0ZDUwMzMgbGVnYWN5LXRydW5rCisxNzIxMCAzODhjNzIxYzIwY2ZiOTUzNDEwZTgwMWVlYzE2ZTVkNTMzMTZkYTU0IGNucmktMTYtc3RhcnQKKzE3MjExIGNmZDA3NDMyMWFhZDlkMWE1MmNkZWFlN2UwMGVkZmQ5N2Y4ZTg1MTEgbGVnYWN5LXRydW5rCisxNzIxMiA3ZTQ3YjM3MGViNjc1NTE5Yjg3NTI4NjQ3MDI2NjE2MDY0Y2ViZDg2IGNucmktMTYtc3RhcnQKKzE3MjEzIDZmYjYxYjgzNDM1ZGExYjZmODdkNmJiMGE4ZmMzMjU1NjAwMDgxMzkgbGVnYWN5LXRydW5rCisxNzIxNCBkMzk1Y2FjNzg2YjIyNGIxODYxZTMyOGNkZGFmMzA1MmUwZWFjY2RhIGNucmktMTYtc3RhcnQKKzE3MjE1IDA1MDdlNTY5ZDc0YWU2NTE2ZWFkNjczZGRiY2QyNTRmNmRjMzkzYTIgY25yaS0xNi1zdGFydAorMTcyMTYgOGE5MzNlYzQ3ZWY3MzM5Y2RiMTVlMTJhYzkyYWI4MTY1MTYzYjNiZCBjbnJpLTE2LXN0YXJ0CisxNzIxNyAzOWFiMjg1NzIzMDdmODE4OGFlNTUyYzJhY2Q2ZDg4Y2U5YThmZmU1IGxlZ2FjeS10cnVuaworMTcyMTggNTc5YTFlNzMxZmM4NDI0ZWU4NTFlMmRhMGU1ZDA2YTc5OGE4YTdkZiBjbnJpLTE2LXN0YXJ0CisxNzIxOSAxZmRjYTBhZjcxZDM0M2U4OGU2YmY1MGY3OTU0NDIxMzE0YzliYmJlIGxlZ2FjeS10cnVuaworMTcyMjAgYWZkNmZhZTQ2N2U1OTI1OTUxYmU5OTk5Mzk1ZWNhN2EzZmQ0YmIwZiBsZWdhY3ktdHJ1bmsKKzE3MjIxIGVmMjcxNGJiMDczMGE3NTI1NmU4MzJiNzA3NzJhNDczYjdhM2FiYzcgbGVnYWN5LXRydW5rCisxNzIyMiA5ZjAzZDJmYWYxNTZhZGU5ZGMyOTZiMTA1ZjA0OWYyNWQyNzY4ODUzIGxlZ2FjeS10cnVuaworMTcyMjMgMWM0MzhmZDVjMGU5MzQwMDZlYjQyYjljNTYzYWE1MTBlN2EyMzMwMCBjbnJpLTE2LXN0YXJ0CisxNzIyNCA0NGZmN2U0MTYzYWExZTBjYjIyNTAyYmMwNjg0YjhjOGVhZTE5OTQ4IHIxNjEtYnJhbmNoCisxNzIyNSA1NThlYTkwZjViMWNhMjhjM2Y2MDQyYmM0NmRlMTJiOWM1NTgxN2NmIGNucmktMTYtc3RhcnQKKzE3MjI2IDliMWRhZjNkZWUxNGQ0ZTQxY2QyNDdjYzczNzY4OTE1YTUzODUxMTAgbGVnYWN5LXRydW5rCisxNzIyNyBmMWJkMzA0NDdlMzBiNTljMDhmMDIxYzU5ZjE3YzY4ZDg4YzY4MzlkIGNucmktMTYtc3RhcnQKKzE3MjI4IDFmZDY0YjNhZjc2MDIyOGJiNWViNTEzNGE2MjRhZTA4MWQ2M2M0MzkgbGVnYWN5LXRydW5rCisxNzIyOSA2M2Q4MjQ2NzliMjg1MzNiZmFhMTBlMzRjZjQ5N2EwNTZkMGM0MTFkIGxlZ2FjeS10cnVuaworMTcyMzAgN2U0ZjYwMmRjNjg1NzZiMmU4ODZiMGY1MjIxOTI2ZDA5ZTExNzMzZCBsZWdhY3ktdHJ1bmsKKzE3MjMxIDJlZWI1OGI0M2ViMTg4M2JkZjQ0MzcyZmY0YzgxMWM3YjgzMWJiZjYgbGVnYWN5LXRydW5rCisxNzIzMiAwNWYxMjEyOGMzOGRiZTQyNGMyOTdiNGZjYWEzZGY4NzY3MGJlNzNmIGNucmktMTYtc3RhcnQKKzE3MjMzIDUzMmM5Y2U2Yzg3YzE3ZDliYjUxYjA3YWEwZmNjNGNlMzgwOTBiY2IgbGVnYWN5LXRydW5rCisxNzIzNCBhMTBhZmIzYWQyNzUwYzBlMjYyNDEzNGIxZjU5YmM5MDA5MGI3MjQzIGxlZ2FjeS10cnVuaworMTcyMzUgNTQyZDEwYmQwNGY0NzdhNGI4OTk4N2ZiMTI2NzUwZmU5ZTRkMjJhMCBjbnJpLTE2LXN0YXJ0CisxNzIzNiBjZDZmNzA1YzU0YjhjNDUzYjljZDM2OWM4ZjE2NzAxYWIxNDA0ZDA5IGNucmktMTYtc3RhcnQKKzE3MjM3IGY2MjlhZjFkNGJkYWE4MmNiNWZlNjA5OTJiMzU4OGVlODhiN2ViZDMgY25yaS0xNi1zdGFydAorMTcyMzggOGQ0NzEwMTQxOWI4NGNhYjkzZGM1YWNmMmQyMDExMTMyYjE3MmQxZSBsZWdhY3ktdHJ1bmsKKzE3MjM5IGNkMmJlMTUzZjIyOGY3ZmNlNzY5MDNkMWM4YzlhNmY2ZjM2YzAxMTIgbGVnYWN5LXRydW5rCisxNzI0MCAzNjdjYTQ5MTkwYmM1MjY1ZTZkNzFlZmZhYmRjNzk1MDI0ZDZlMTc5IGxlZ2FjeS10cnVuaworMTcyNDEgMzIwMTU4MDI2YTRiYzRlZTkxNjUwZWQ5MDdiZDQwODMyZTE0ZjczYiBjbnJpLTE2LXN0YXJ0CisxNzI0MiA4ODg1M2MxMDMwODc5N2M4NWNhYzU4ODc1OWNmMDkxMDcxZTVhMTE0IGxlZ2FjeS10cnVuaworMTcyNDMgNmE1ZmJlOGM1YWE2YTg4OTM4ZjgxMjJkYjIyMDc4NGNkYWE5N2RjMyBsZWdhY3ktdHJ1bmsKKzE3MjQ0IDNlMzc2OThjZDczN2Y0ZjdjYWNjNDQ5MzllYTAxNzI4NzRmODdiNzAgbGVnYWN5LXRydW5rCisxNzI0NSA4YjQwNjg1NmJjMzFjMTJhZjRiNzgwYzU1NTY3Mjc3Mjc1N2E4OWIyIGxlZ2FjeS10cnVuaworMTcyNDYgMDU3YmMxOTcwMzQ1MjZhNWRmMTBjZTVmMWE1YmE0MTMzZTA5ZjNkNCBsZWdhY3ktdHJ1bmsKKzE3MjQ3IGQ2ODliOGNlOWQwYTkyOGJhNjUyMzkyNjg1MjFiMGRkM2U0MDFkZjEgY25yaS0xNi1zdGFydAorMTcyNDggODcyMTkxNWE2YWNiODMwN2E1ZWMxMjBhODcwZWUyMjhiM2FiY2JlNSBjbnJpLTE2LXN0YXJ0CisxNzI0OSBiMTc1OThmZjJjZGQ3NDAxZDhmODY2NTFmNWZlMDAwZmJiYWE2ODBkIGNucmktMTYtc3RhcnQKKzE3MjUwIGQ4ZDE4MTJkZmNlMDY0NmIyZmRlNTU5YmQyNjJhOTFjODE5MjVhNzkgY25yaS0xNi1zdGFydAorMTcyNTEgZDg0NjY4NTUwMjZmNWU5YmRhYmFiN2EyYmEzZDY4Y2QwMzI2YmMwNyBjbnJpLTE2LXN0YXJ0CisxNzI1MiA2NTYzZDcxZTdkOTVhZDBiZjhkYWExNmM0NDcxOGYwN2QxMzQ4MjgxIGNucmktMTYtc3RhcnQKKzE3MjUyIDc4NmE1N2I3ZGM2Y2NmNTZlNjMwZWI5MWEyNjIwMTZiOWExNDk4MmYgY25yaS0xNi1zdGFydAorMTcyNTQgYmVlZmE4NWEzOTI0YzNlMjJhNTgzN2JkM2ViNjE4NmQ3NmVjODQ5YyBsZWdhY3ktdHJ1bmsKKzE3MjU1IGZjMTBiMjI3YzE3ZGRjMmY5MTg5NTJhYmM4NzM2ZTYwNDJkYjAyYTUgbGVnYWN5LXRydW5rCisxNzI1NiA4ZDAzNWMyZmMyMzQwODU4MzUwOWM4MjVmZTc1MDdkODkyOTczYjlmIGxlZ2FjeS10cnVuaworMTcyNTcgZDFjMzk1YzQ3MTAyYTE1NmI0MjJiMmJmNWQzMDk5NTU5MjQ3OWIwMSBsZWdhY3ktdHJ1bmsKKzE3MjU4IGE3NmFiN2M4ZmMyOTIxYmJjMWVjMDI1MmFjYzAyOTAwODkzZTk3MDAgbGVnYWN5LXRydW5rCisxNzI1OSA0MzA2MTA3YjEzOTU1MThkOWQzMjk3ZTE4MzNhYmVhMGFlZmQzNzE3IGxlZ2FjeS10cnVuaworMTcyNjAgYTcwN2E1ZjE3MTM5MzI0YTg0ZGMyZTZlNDUxMDMwZWNkZjZjYjAyZSBsZWdhY3ktdHJ1bmsKKzE3MjYxIGIxOTQ0Y2U1NDkyYjJmMmJjMzJmMGZkYTdhOWEwMTQ3NzI4OTE3MWIgbGVnYWN5LXRydW5rCisxNzI2MiA4NjI2NmY3NjNkNDQxOTcxN2VkNjQwZjIwN2Q2MDM4MjI4OTNlM2VmIGxlZ2FjeS10cnVuaworMTcyNjMgOTBmMDk0NmY2NGU3ODFlNzMyZDZmNTY3Y2VjYmQ0NmU2MzVhOTAyOSBsZWdhY3ktdHJ1bmsKKzE3MjY0IDYwNzI2NGU3YmY1MTQzNDBiNjIxNzkxMTM1MGJmMDA3NmNhZGQ4ZTYgbGVnYWN5LXRydW5rCisxNzI2NSA2YmU0NDZmZmEyZDlhYmM5MTNhNzJkM2NjNmI5MjhlMGRkZWY5NTYwIGxlZ2FjeS10cnVuaworMTcyNjYgZDQyZmMzYzcxNzNlNWM3M2M3Yjg5ZmIyZWVhNjA5MWQ0Yjc2MGY2ZCBsZWdhY3ktdHJ1bmsKKzE3MjY3IDEwYmU5NjgyYjAwM2YyM2MyMjc2ZDEyNzFkMjViNWIzMWMxMDZlNWQgbGVnYWN5LXRydW5rCisxNzI2OCAwZGNhZTg0NTA2YmFhOWNiNzM1MmMyNzc2NGI3MTliNzY5YmIxMjhkIGxlZ2FjeS10cnVuaworMTcyNjkgYmEyMmE1ZWQ0NjQxMGJjZDkxYWEwZjU2NmNjYTA3ZWZjNmJmOGI0YiBsZWdhY3ktdHJ1bmsKKzE3MjcwIGUzNmFmZjUyZmI0ZTBmYzM2MDhjMGQ1OTIyMjZjZGRjYzg4ZmJhMzIgbGVnYWN5LXRydW5rCisxNzI3MSBhY2Q0MTEzZTMwMWEzYzdiYTNkMmE3YTAyZGE0MjEyNDZhM2IzMmEwIGxlZ2FjeS10cnVuaworMTcyNzIgMjRiZTA0OWQyMDM3OTM0MmE1ZTA2NzdjMDk0YjNiNGM4MzRhNTUzNSBjbnJpLTE2LXN0YXJ0CisxNzI3MyBmOTQ0OGY0NGU3MDFjYWQ1NmM3Y2Y1ODE1OTZmMTUwMzU1MGM4ZjU5IGxlZ2FjeS10cnVuaworMTcyNzQgNjQ2MDQxMWY0NzNlZmZjZmQ4NjA2NWM2ZDA3YzdhOTA2MzBmYjAwOCBsZWdhY3ktdHJ1bmsKKzE3Mjc1IGM2MTZiNzkxMDc0NThkZmViNGZhZDVlOGYxODEyYTdjMjUwYzAxMDMgY25yaS0xNi1zdGFydAorMTcyNzYgYzM4NGZhYWU1MDUyYzVmMzllNjgzYmFiYTIwMTFkYzI4ZGU4NjdkOCBjbnJpLTE2LXN0YXJ0CisxNzI3NyBmOGU2Njg0NDdlMmExZDI5MGQ1NzFhNDk5YWJjMTZkYTg2ZDRjNDMxIGxlZ2FjeS10cnVuaworMTcyNzggNDQ4YmRmNDQxNzkyM2ZhYjdhYWNkOGY1NTYyNzg4NjE4MzM0ZWQ4MSBsZWdhY3ktdHJ1bmsKKzE3Mjc5IGJiOTA4MzMxMmQ4MTRjNGViNGRhY2ZmMTdlMWMzZGVjOTAxMDc5YTkgbGVnYWN5LXRydW5rCisxNzI4MCBjY2IzN2UyYjI0NjAzYjdjMjIyZDU4ZDA2OWUxZjc5YWU2OGZhZGE4IGxlZ2FjeS10cnVuaworMTcyODEgOWYxZjBhNmJjMThlNzU3ZjUyNzRjYzcyZGUzNGFmYWM0NDk4NjNiOCBsZWdhY3ktdHJ1bmsKKzE3MjgyIDgzNzZhZDY2NDVlM2RkYzU5Mjg3YjVlZjFkYWE5NTU0YTgzMzMwOTUgbGVnYWN5LXRydW5rCisxNzI4MiAzNWM0ZmMxNDE0YTU5ODg4NjE0YjliZTc4NGEyNWYyMzNiYTY3OTg0IGxlZ2FjeS10cnVuaworMTcyODQgNzdlOGU1NTBhZTEzZjc1ZTFjNjQzNzAyMzA0NzU5ZTk0OTEyYzk0NyB1bml2ZXJzYWwtMzMKKzE3Mjg1IDRmZTAxNDgwODg4NWE0NmY0N2I4MTNhMzUyNzM4Nzk5NGFiNTdlNDEgbGVnYWN5LXRydW5rCisxNzI4NiA3ODg2YjNiNmM0MGY3YmQ1ZWVjYWU1YzM2Y2ZmZjE4ZTI2Nzk3Y2Y0IGxlZ2FjeS10cnVuaworMTcyODcgMzQzNzkxMjdlZTNiNGQ5MWZmMDVlMzBlNTgzZjI2YTE2NDY4MzU3ZiBsZWdhY3ktdHJ1bmsKKzE3Mjg4IDlmYTNjNTcxZGFmZjIwMmUzNzdkMjMwYmRlM2U4MjA5NjdkMTQxNDIgbGVnYWN5LXRydW5rCisxNzI4OSBjMDUwOTk4OTQwNWVjMGVlYmE3NmNiN2YyZjE1OWE5ODFjMjc3MDc4IGxlZ2FjeS10cnVuaworMTcyOTAgZTM0OGVkOTQ2ZDFmNGMxYjBiYzE4Yjg1ZmZiOWRiYWZhOTk3OTY2MiBsZWdhY3ktdHJ1bmsKKzE3MjkxIGFjMzkxNzhmYTg1ZmM5ZTRjMjRlMWQxNjkxNjE5ZjJmODYzYmQ5NGUgbGVnYWN5LXRydW5rCisxNzI5MiAzYTkzMmNjNjQzMjMzZmRjZDhkYmFhOTJlZjYwZGMyODgzNDZjNDJhIGxlZ2FjeS10cnVuaworMTcyOTMgMTk0NDM1ODVjY2NjMjU1ZTg3YzU3ZGE3ZWExOGQ2NGYxMjhkODVjNyBsZWdhY3ktdHJ1bmsKKzE3Mjk0IGY3ZmQwOTVjMzFhNmFhYzk5YzllMjgzYWU3MzVlYmIyZmRmN2Y4ZjYgbGVnYWN5LXRydW5rCisxNzI5NSBjNzM4MDQxZjk3NWRiZTgzZWE2NGJjMWUxZGY0NThhMjFkZDRiNWIzIGxlZ2FjeS10cnVuaworMTcyOTYgZjRjOTJhMjQyMTFiZGRkMDMwY2U1NDM1ZDcwYjE3MWY3NzYwODc0OSBsZWdhY3ktdHJ1bmsKKzE3Mjk3IGYwNTFhYzgzNDBmN2I4YTFmYzA3ZjIzYmRhMjIwOWY5MTQ0MzE1MTMgbGVnYWN5LXRydW5rCisxNzI5OCA5M2IxZGFiMDk3Njc2ZDkyOTQ3MDMyYWMzZmMwNWNmMmU5NzFlZDA5IGxlZ2FjeS10cnVuaworMTcyOTkgNTIwY2U3ZWNlMjUzOTg1YWYwODllNjE3YzE0MzBlNzY4ZTU3NmRlMyBsZWdhY3ktdHJ1bmsKKzE3MzAwIDVkMTJkOTY2MGMyZWE4ZDM4NzdlNDgyZDI2MTI0MTJjZGZkNzQ5MDUgbGVnYWN5LXRydW5rCisxNzMwMSBjOWVlNmY3NDY3MGRhZjU1ZDVlYjJhNmEyNDdmNzFlNDhjNmU3MjdjIGxlZ2FjeS10cnVuaworMTczMDIgM2UzODc1MDdhOTkxOWIwNTUxMzI4Y2YyY2I3MzJiZTEwNzcxYjFjNCBsZWdhY3ktdHJ1bmsKKzE3MzAzIGZjNWI0MDYxNjI2MjM3M2VmNzQ2YmRhZDdlZjMxYWRkYmNjMTM4MGMgbGVnYWN5LXRydW5rCisxNzMwNCBlNWNkY2UyYTJiMTY0OWY2ZDYyZTcyOTQ1OTdlNzdkZjViYzJhOTJiIGxlZ2FjeS10cnVuaworMTczMDUgMGQwNjEzYjk1NzU4ZTdiY2Y5ZDA5M2I1MmU4YjRmZDkwMjcyNDMyNiBsZWdhY3ktdHJ1bmsKKzE3MzA2IDBkMTAyNWFlZmViZmYyNDg4YzkzNWQ1MzMyOTc5MzkxODFlYTAwNzIgbGVnYWN5LXRydW5rCisxNzMwNyAwMTVhMzRiZmJjY2JhMDk5MmJkYTc0NTE5NzhmMTRiM2I3ZDk2OWMwIGxlZ2FjeS10cnVuaworMTczMDggNjkxOWQ4ZTE0YTMwMzY5MDA2Mjg5M2ViZjdmMzhhZWYyMTEwZjg5MCBsZWdhY3ktdHJ1bmsKKzE3MzA5IDIwYWNlYjhlZGZhNWU2Y2E0ZmFkZjljNTI5ODdjNDI0NmMwZWU1MGQgbGVnYWN5LXRydW5rCisxNzMxMCAwYjY2ZDAzMDBlZWJlOWMyMDdiOWZjOGNjMTAzMTU3NjVhMjY0MDY4IGxlZ2FjeS10cnVuaworMTczMTEgOTVlZWIwNjFmYzZkNGQ0NTUxZTc4Mzc5YWU4MmQzZTAxMGMwMTRmNSBsZWdhY3ktdHJ1bmsKKzE3MzEyIGVkYTI2ZjEyMzIyNzRiZjZiZjE4YjA0YTkxZmM3YWUxODViNmMzNjQgbGVnYWN5LXRydW5rCisxNzMxMyA1ZWRkNDlkMzQwZWE5YWEwYTRkYmI0OWI1MzBlYzQwNmM5YmM2NWQ4IGxlZ2FjeS10cnVuaworMTczMTQgZGIwMjYwOTJjYjdlNDlkOGU3NjVmZjVjNTM4MmU3ODhhMDhkMjY0OSBsZWdhY3ktdHJ1bmsKKzE3MzE1IGFhNDQ1MzdkODBiNTNmZWRkNTZjMmU0Nzk1NmMwZDRlMTVlOGI0YWUgbGVnYWN5LXRydW5rCisxNzMxNiBlYzE2NWQwM2Q0NmNhODYxNzZjMDQ3OGY1ZmE0MTE1Y2Q2NGEzYWJkIGxlZ2FjeS10cnVuaworMTczMTcgMTdjZWM5NmY3NWJjMWQ1NjA5ZDIyMzE1Zjg3YTAxOGRlNDEzMjgzZSBsZWdhY3ktdHJ1bmsKKzE3MzE4IGUxM2RmNGU5MDc2Zjc1OGJjN2Q5MDQzZDhlODc2MzEyOWJkMzk4NDcgbGVnYWN5LXRydW5rCisxNzMxOSAwNzIxZGY3ODkyNzBlNzk0MzhkYThjMmVjMGY5YzIwZGZjMzJmMDk1IGxlZ2FjeS10cnVuaworMTczMjAgMTQyY2I0ZTczMTBjZGVhNGM1ZTA4MWQxNDNlNjUzNjgyOGNjMTIzMCBsZWdhY3ktdHJ1bmsKKzE3MzIxIDBlZjZlYTU4NTkwYjYwYTVhMzZjODcwOThkYzc3YWQ4ZmFjMWQ1M2IgbGVnYWN5LXRydW5rCisxNzMyMiBmOTBiODIzMjA1ZmYxZTFjNjhiYjJlN2RlYzI5OGYyMDYxYjY0YWRmIGxlZ2FjeS10cnVuaworMTczMjMgMzlmZjZiM2M0M2FmYzNlYjNhYjRkODZmNjY3MWFhNDc5ZTZiODZlNyBsZWdhY3ktdHJ1bmsKKzE3MzI0IGMzYzQ5ODU5ZTgwYjA4ZmQxMTBkZTRiYTIyNTdhNjUyNjQ5Yzk4YTUgbGVnYWN5LXRydW5rCisxNzMyNSBmNmI4NmUyZGM1NWJiZmYyNmE4Y2EzNDc1MTJhNWQ0ZmEzMzA3NGVmIGxlZ2FjeS10cnVuaworMTczMjYgOTUzN2U3ODkzZjNjM2Q0NTNhYzUyZjY0NmVkNzkwYWM2ODQzZjY1OSBsZWdhY3ktdHJ1bmsKKzE3MzI3IGI3YmI0YTM1YzEyMTg5Nzc3OWE4ZTFkOTk0YTc4YmYwNWU4MzhmMjQgbGVnYWN5LXRydW5rCisxNzMyOCBlNGNhOGMyMTM3N2EzY2I3M2I5M2MyNWUzNTgwOWQyZjVhMzMyZTEzIGxlZ2FjeS10cnVuaworMTczMjkgNzE0NTY3ODJkOGZkNWExZjMwYjk1ZmQwMTAzZTJkZjY3YjExNTI4NCBsZWdhY3ktdHJ1bmsKKzE3MzMwIDk5OThiNzA4N2VlNjA0OWFjMGZlYzFmZjdlMGZiMmNlY2NiMzY5OGYgbGVnYWN5LXRydW5rCisxNzMzMSBjYzY4M2EwYWM1NjhlYjg0NDcwNTA4MGNiMWYzYTNiZmUyODE2ZTQzIGxlZ2FjeS10cnVuaworMTczMzIgODllM2I2YTU0ZmU5M2M2ZGM1MzgyOGNjOTliOWU4MmM0ZmRkMGQ0NiBsZWdhY3ktdHJ1bmsKKzE3MzMzIDBkMTVjODA1MzcyNmIyN2Y0ZjJiMDJmZDE5NGExMzFmNGJiN2ViNzMgbGVnYWN5LXRydW5rCisxNzMzNCA1MDA0MzQ5ZWRlNGRmOGVjYTQxMWVlZmJjNDhkODJkZjUyNWQ0NmYwIGxlZ2FjeS10cnVuaworMTczMzUgOGE2M2M2MDRlZTU5OGZiNjQwZjFlZTUyZjk1ZTIzNTcwYTdkOWQzNCBsZWdhY3ktdHJ1bmsKKzE3MzM2IGMzMmY1NDkwZjVlM2FjMmU4MjkyODFiOGU0YTNkM2Q3MWQ3Zjc1ZGUgbGVnYWN5LXRydW5rCisxNzMzNyAzNGY5YTAxN2NlNjMyY2NkYzhjMTcyOGQxMjU2ODQ2NzQ0ZTRkOTFhIGxlZ2FjeS10cnVuaworMTczMzggYWMwMjQ2NTg2ZDUyNzgyYjVjZWZlYjE3OTY3MWVkMTcxNDgxYTYyOCBsZWdhY3ktdHJ1bmsKKzE3MzM5IDUxMzY5YTU3YjBhYWI0ODBhMDc5YzZlOGJkMTNlMTNhOTI3NWE3MTIgbGVnYWN5LXRydW5rCisxNzM0MCA4YTcxNWQyZGZlYjlmOWE2MWQ3YWMyNjBhYzYzZjUzMWM0NTVlZTdkIGxlZ2FjeS10cnVuaworMTczNDEgYWJhN2ViOWQ4ZDYxNDU0Zjg5YTVmZDg3ZTk5ZGIzMzYxYjM5MTBmMCBsZWdhY3ktdHJ1bmsKKzE3MzQyIDUyYTYwMGIzOGY3ZWU1OTgwYzBlYmU2MjBmOTg5YzFmZjMzMjFjNWIgbGVnYWN5LXRydW5rCisxNzM0MyBmNzhmMjg3YjNhZGRiYzg4N2MxOTQ0YjViODczZTY5NDFmZTAxOTJmIGxlZ2FjeS10cnVuaworMTczNDQgMzM0ZDlhZWJhYWYxMGEwMmVkMTNhMjliNzBkMjExNjVhNDM5ZmEwOSBsZWdhY3ktdHJ1bmsKKzE3MzQ1IDc3MjhiMGVhOTM0NDFjNTMwMGFjYWZlZTMwNjhjNjhjMjIwNGViMDEgbGVnYWN5LXRydW5rCisxNzM0NiAyYmEwOGQ5OTFjNDMzMGFmNGQ3ZWU0NjgxMGMyOTE3NmUxOTI4OTM5IGxlZ2FjeS10cnVuaworMTczNDcgYjE5ODg2YmVhMzc4N2ZhZmMwZDIxYjhkNDVhYTJhNzBhZWE0YjY4ZiBsZWdhY3ktdHJ1bmsKKzE3MzQ4IGU2YTlkNDEyNjUyZDI4YTljZTUxYzU0YzI5OWI1Y2M3NGRiZjBiNjUgbGVnYWN5LXRydW5rCisxNzM0OSBhZWQzN2Y1YWE0NzVlNzQ3M2Y5ZThkNmFkY2QyOWZhNGMwOGMxYmQ4IGxlZ2FjeS10cnVuaworMTczNTAgZDMyN2ZjNDdmOGZkZGZhZDk3ZGQ5MGRkZDBjMWI4YjNhODYxZWU4MSBsZWdhY3ktdHJ1bmsKKzE3MzUxIDM3MWU4OGFmNjQ1ZjFlODU3NDk1ZmRhNWVlM2EwMzA1NDYzZDA1ZmYgbGVnYWN5LXRydW5rCisxNzM1MiA3ZjIzZWM1Y2Q5Y2E4NDU4Yzk2YThmMWVmYmQzZGNkNmYwZDM4MGZhIGxlZ2FjeS10cnVuaworMTczNTMgMjFkODQ3NjUzZjU0Yjk1OTkwMzI0MDMxMzliYTM0YTA5MzM3ZDVhYSBsZWdhY3ktdHJ1bmsKKzE3MzU0IDU4YmE5MGU0ZTk4NWYxYmFhOWNlZmFhZWQxZGM0N2U5YThkMzMyNGYgbGVnYWN5LXRydW5rCisxNzM1NSBlZWYyNTczMGU2NGRhYWU3ODIxMjQyOWRmODgzN2IzOTNlZDgxNDgxIGxlZ2FjeS10cnVuaworMTczNTYgMTVhY2Q1YzU5MWZkNGMwNTE4ZGYyNGViOWIzMTA5ZTBmOGRlZWUxNyBsZWdhY3ktdHJ1bmsKKzE3MzU3IGRlYjNlOTY4NWExZWRkYzJlMWJhOWVjY2U1Y2YwMWY3OGZkNDQyYzcgbGVnYWN5LXRydW5rCisxNzM1OCAzODIzZmM3MjJiNTBjNTMwOWQxNzRkNTVjNWI5YmExZDQ5ZmQ1NDkyIGxlZ2FjeS10cnVuaworMTczNTkgMjhhYzE0OGQwMTI5YTc4MDJjYzc1OGZmYzE4ZDg2YTNmYWVlNDIxZiBsZWdhY3ktdHJ1bmsKKzE3MzYwIGM4NzI3YWNhMTQwNGM4OWYzNjZiZGVmMGRmMzZhZTQ4YmYzMGQ5YTcgbGVnYWN5LXRydW5rCisxNzM2MSBjMmY3YWQwNzBiOWVmZjMwMTNlODhmYWU5ZTM2ZTZkNzViMjAyZDBlIGxlZ2FjeS10cnVuaworMTczNjIgYTAzOTJmNDM4OTYwNWY4NzA1MDdiMjlkMzJkYTIwNWE2ZDM4NGNmMCBsZWdhY3ktdHJ1bmsKKzE3MzYzIDc1ZWQ0MjYzNDM2NjI5ZWFiNDk3MGRkMmI5OWI1MjlkYWIxYTk4YzYgbGVnYWN5LXRydW5rCisxNzM2NCAyOWZhY2I3OGQ2ZjQxNjc0MDhlYzZmMjI4Nzc5NzUwNGQwNmY3Yjk4IGxlZ2FjeS10cnVuaworMTczNjUgMGQ0OWRkMGYxYmNlMzEzNWQyNjE5Yjc4MjI4NDcwNTNlYmU4YWQyMSBsZWdhY3ktdHJ1bmsKKzE3MzY2IGIzNDA5NWU0ODhjZjFhYzg4MThiMjIxM2NiZGMyOWFiZTg5NDJlOWIgbGVnYWN5LXRydW5rCisxNzM2NyAzYjYxOTM4NWE5MGU0N2M5NjhjZjAyY2ZkYzlmYjdiMzc4NGVkODdiIGxlZ2FjeS10cnVuaworMTczNjggMWRiNDUzMjk2Yzc2N2JkYWNlZmFjZWZmMDYwYWY1ZGU3YWZhYzU2YyBsZWdhY3ktdHJ1bmsKKzE3MzY5IGI4MjgwMmJmN2ZmZjJkZmNjNGE5YWU3MTkwZjBhNTEwYmJkMzQ0ZjUgbGVnYWN5LXRydW5rCisxNzM3MSBiZjg0NGFjMmM4MWFiZjMwMjMyNWM4MjEyYjI0YmVmMDMzYjYwOTllIGxlZ2FjeS10cnVuaworMTczNzIgNTE2N2QyM2JkNmIwYmYwMWRhZDIwOGUwM2I2OTQyZmE4ZjkxYjdiMCBsZWdhY3ktdHJ1bmsKKzE3MzczIDc0MzUzMzFiNDhlZTY1ODQwNTExNjVlNjEwNzRmMzFjNzhiMGFjNzMgbGVnYWN5LXRydW5rCisxNzM3NCBhZGRhYmE5OTEwNzdkNDgzOGJiZDYxZjY0NmU1YTgwNmMwMGFhMmU4IGxlZ2FjeS10cnVuaworMTczNzUgOWZlZDRlZWJjNTg2NGZjZDhlNGVlYTUwNzM5ZWNjYzU1NmZhMjdlYSBsZWdhY3ktdHJ1bmsKKzE3Mzc2IDIzNWJjZDNlNWYxNzQ0NjkzZjZhOGQ4MzdjM2ZlODQ1ZTQ1YWY0YjYgbGVnYWN5LXRydW5rCisxNzM3NyBjZDNlNGQ3M2RmOGU0ODYzZjYzMmM1M2UwYzAwNzkwMzk2YzUwNWY1IGxlZ2FjeS10cnVuaworMTczNzggOTE5ZDM2ZmRhOGM4ZDE4NTcxMTg3MThhNzY2NTEwM2VmMzMzZmVhYSBsZWdhY3ktdHJ1bmsKKzE3Mzc5IGZjNTRlMzk3MTY5ZmY2ZWFkYmNiMDlmNjU0ZTg4MzUxZDNkZjFmMjUgbGVnYWN5LXRydW5rCisxNzM4MCBmZjRhZTY5MWJlOWI1MGY5YzJlNmUxMmUzYjQ0MDJjNmRhNzI4NzA0IGxlZ2FjeS10cnVuaworMTczODEgODZkNDc4NjczNGNhMWRkNjUwMGU0ZGUzOTQwZGRkYjAxMGQwOWQ0NyBsZWdhY3ktdHJ1bmsKKzE3MzgyIDczNjZiYjk1ZjIxMjk5MGE4MGJhN2NmNjczZmU0Mzk0NjAxYzJkN2QgbGVnYWN5LXRydW5rCisxNzM4MyBiZTFhYjE4NzM1OGM4MWYwOTYyZGJjODJjYWI4MDM1MDk4MzcwOTQzIGxlZ2FjeS10cnVuaworMTczODQgOGQxYTQ2OGY4ZTU5MTU0YjcwMmI5ZTRjY2M1ZjMxNzRiM2VjOTEyNCBsZWdhY3ktdHJ1bmsKKzE3Mzg1IDMwNjdhZTI3NDU4YzI0MDU5MmVjYzJlZTVhOGM2Mjg0NDQzMmE0OWUgbGVnYWN5LXRydW5rCisxNzM4NiA3MTUwOTc5Zjk2OTQxNTY1NTFlZjhmNjQ0M2RkYWIyZjgwZjNlM2M1IGxlZ2FjeS10cnVuaworMTczODggNjM1ZjY5MTIzMzQ5M2U1Yjc5MzVhOTQyODc0YTAwY2M4MzJlZjZjMyBsZWdhY3ktdHJ1bmsKKzE3Mzg5IGE1ZDY1NDU5YTdiNjkyMDMwZTU0NTExMzRjMDY3NzRjMDhkYWI0YmYgbGVnYWN5LXRydW5rCisxNzM5MCA2ODc5NWMxM2FjZWEwMDExNmExNWUxMTZjZjQzNGNiNTY3ZjMxZGY4IGxlZ2FjeS10cnVuaworMTczOTEgNDE3NWVlODBhMDg1OGM5ODc2ZjA3MzA2ZjcxMWM4YjlkYmY4ODJmMCBsZWdhY3ktdHJ1bmsKKzE3MzkyIDA1MmIxMTNjNzVkNGNiZTZlZDk2MDE0ODg5MWNkZjBkZGJkY2IwMTQgbGVnYWN5LXRydW5rCisxNzM5MyAzNjlhYzE4NTA1NWQzMTFjMDFkYTMwODkyY2RjYWRmYTc0NzgzZjg5IGxlZ2FjeS10cnVuaworMTczOTQgZGMzYmVmNzcxZDA3MzJjNjkxY2U1ZGE5NWE5NTBlMjQyNmRjZGEyMCBsZWdhY3ktdHJ1bmsKKzE3Mzk1IDM1YWU4ZGZmOGVkMDk5YmVhOWQ5YTVkMmIwNzIzMjBiNmFhMmNhOTYgbGVnYWN5LXRydW5rCisxNzM5NiA1NjFjMGIxZDUxNGIzNGY4OWFiY2IzYzJjZTQzNjFjZGZhNmZkMDhlIGxlZ2FjeS10cnVuaworMTczOTcgYTQ1Y2ExZjdmMjQxNWJiNzI0MWVkOTc4NTY4Y2FkYjllNDU0MWIzNyBsZWdhY3ktdHJ1bmsKKzE3Mzk4IGMxNjM5NjUxMWFhMzU2YWExYzlkYjdkODhhM2Y5ZmRjNDU1MzBjMjYgbGVnYWN5LXRydW5rCisxNzM5OSBmZjcxMmRlOGJkODEzNDVkNzQ4YzQxMmFjMmExZmRlMTJlMzg3NDhjIGxlZ2FjeS10cnVuaworMTc0MDAgMTIyNzc1ZmZhMzZjOTNmZTAyZGNkNTQwNTRkNWNlYjdhOGY0MWZkNyBsZWdhY3ktdHJ1bmsKKzE3NDAxIGVmYmEzMDcwY2RkZWM4YWY5YmFjOGE3NjFhYjE5ZDZlODI5MDFkMTMgbGVnYWN5LXRydW5rCisxNzQwMiBhZWQxMjI2YTdmYzRmMzRkMTBjYzM0YTA3MGNhNmVkYTFiNzg5OWMyIGxlZ2FjeS10cnVuaworMTc0MDMgZTljMzEzNzQ1MzAyMTdhNjY4YzM4MDRkNGY3YzhkMzEwMGVmOWNhMCBsZWdhY3ktdHJ1bmsKKzE3NDA0IGQ0OTBjMmExODZkYWZjZDlhZjM4ZTNkZDZmZDAzMjU3NWNkM2M2MjcgbGVnYWN5LXRydW5rCisxNzQwNSA3ZmE0MzAyYTVhMDg3MGYwNDYzMTkzYTI1MGFiZjQzOTRjMzdhODAxIGxlZ2FjeS10cnVuaworMTc0MDYgMjhkZjRmNDU5NjdmYjY0ZWI5MmI4Y2NlZjUxOWVmMGEwMTM5ZDViMCBsZWdhY3ktdHJ1bmsKKzE3NDA3IGE4ZDFjMDMwYjE5ZmU2ODBjNzBiNjc2OTVlNDM2MTM5NTViMTFjYjIgbGVnYWN5LXRydW5rCisxNzQwOCBiM2YxNTYxMTYyNzEyM2Q5MDlmOTlmNTJjNjNlNzdiZGE4YWIwZWYwIGxlZ2FjeS10cnVuaworMTc0MDkgODc3NDVlNTU0NzI3MTRkY2MyODhiMzVmNzQwOGViZjNjODUyYzg4YiBsZWdhY3ktdHJ1bmsKKzE3NDEwIDIxOWUwMDIyMWM4NDM1Y2ZiN2ZkNDhmMzYzNzk3MDdmOWRjYzhlZGUgbGVnYWN5LXRydW5rCisxNzQxMSA0YWMwOWU5NzA4MjgyZGY1NzFjMDVlYTI0MWMwMzM5MDJjNzdmZDQ1IGxlZ2FjeS10cnVuaworMTc0MTIgYTcxMzg1ZjhiNGRhYmZkODFmMzNkMWVkYmJlODg2MzliODllNzQ3YSBsZWdhY3ktdHJ1bmsKKzE3NDEzIDVmMmI5ZWYzZjJhZWMxYzM4MjNhMzkzM2EwNGMyOTYyNzk0NGUzNDIgbGVnYWN5LXRydW5rCisxNzQxNCAyOGNhYWEzZTI5MmZmZTFjM2IxMDg4NmU1MTAxNWQ5YjYyY2EyYjM2IGxlZ2FjeS10cnVuaworMTc0MTUgZWViOGVlNDg4MTA2YTdjYjliOWViZjNmOWIwMWM4MzI2MTM0MTAyZCBsZWdhY3ktdHJ1bmsKKzE3NDE2IDA3YTJkYzFiNzJhZWEyZmVkMTQ5ZWNiOWM0NDBhMzExYTY4ZTY2ZDQgbGVnYWN5LXRydW5rCisxNzQxNyBmZThlZjQxYzMyMjNmOTlmOWIxN2RhNjBkNTJjYjYxMzZkNmRlYjM2IGxlZ2FjeS10cnVuaworMTc0MTggMDNlNjE1MGZkOGQ1MjRhODJkZTUyNzVmNjdjZjdjNDMxMDVlNDViZiBsZWdhY3ktdHJ1bmsKKzE3NDE5IGJjZjIzYjUyYjAyZmQ5YWViMGFiNjg1ZDliYWQxNDdiNjU5OGIzNzIgbGVnYWN5LXRydW5rCisxNzQyMCBhYzgxZTBjYWM1ZjZjZDhiMDlmNmEzMThlMmMwNGYxNjYxZmM0NTBmIGxlZ2FjeS10cnVuaworMTc0MjEgYjdlZDU0M2Y0YzU2ZDJhNjIxZjZhYzUxNGQ3ODEzNWY5ZWU1YzQ5NyBsZWdhY3ktdHJ1bmsKKzE3NDIyIDYyOTc5YzdiOWE3MTliMzEyNDM5MmJlMTI1ODA2ZDJhMmRkNjFiNjcgbGVnYWN5LXRydW5rCisxNzQyMyBmNDQ0Y2ZkNGZhMDc1NDEwOTIxOTY3MWUxZGEwYzMyMDc3MTVmZjJmIGxlZ2FjeS10cnVuaworMTc0MjQgNTVkNjczMDI0ZTVmOTZiN2I0NjY5MTMyNWVjYzVjMzc0YTE5NmEyNSBsZWdhY3ktdHJ1bmsKKzE3NDI1IGJjYTFkMjAxMzYyNmI5MjQ1ODE3YmM5N2U0ZGE1MWU5MzE5MjQ4MDEgbGVnYWN5LXRydW5rCisxNzQyNiA2MDA1MTU3NDdjNTFhMzVhMjRmMjZiOWY4NDI5ZGRkZDRhOGFkMTg4IGxlZ2FjeS10cnVuaworMTc0MjcgMjViN2FjMDU2ODllNTA5MmRkZWNmMDY3MzBmNjhiZTIyNWViYTZjOCBsZWdhY3ktdHJ1bmsKKzE3NDI4IDg1NzM3NmQ2OTliYjlkZjQyOWE1MDhjNzdhZDBhZmFjZTI4NmJhYWEgbGVnYWN5LXRydW5rCisxNzQyOSBiNGEzN2FiMzI5ZGEyNDgxYjk1YzNjMzFhNmQ5YWFiMGRlZjhlMTlkIGxlZ2FjeS10cnVuaworMTc0MzAgYmE1NDIxZmYwMjU2N2IwMmU3Mzg2NWI2NGJlOGQ0YWI5N2RjNDgzYSBsZWdhY3ktdHJ1bmsKKzE3NDMxIDgzNjlmY2Q3OWE2NGJjZGY0OGY5OGE2YzRlODYxYjlmMjQ1NTQyMDAgbGVnYWN5LXRydW5rCisxNzQzMiAxODMzZDJiYmY3NmE0OWNhMTBmZWZmMzc0Y2E0NmUyNTNhZTYxZmNhIGxlZ2FjeS10cnVuaworMTc0MzMgMzQ0ZDIyYjlkYjMyYWQ5MmI4ODUzY2YwNmI4YzUwYmYzMTkzOGI2OCBsZWdhY3ktdHJ1bmsKKzE3NDM0IDIwYjIyZmRlMWNiNzlmOGYzZDNiZDU4MjRkZGZjNzRmYzNhMDQ1MjIgbGVnYWN5LXRydW5rCisxNzQzNSA1Zjg3ZWVjN2I2YjhmNjZkMmI2YTYwZWE4ZTU1OGIyZDA4NmYxMGNlIGxlZ2FjeS10cnVuaworMTc0MzYgNGQ3NDQ1MTVhNzNlNGIyYjQzMmUyNjViNTk4NWY1ZjQ3YzNmMGI4MSBsZWdhY3ktdHJ1bmsKKzE3NDM3IDY0MzVjYzQ3ZmNjNmZmMjQ4YjE5Njc0ZTc1NjBiM2ZhMGY3ZTQwZWIgbGVnYWN5LXRydW5rCisxNzQzOCAyMTNkYmM4ODAxNTk5NjdmYzAwM2NjMTc3MGM1ZGJhNDdkZjk3MDM3IGxlZ2FjeS10cnVuaworMTc0MzkgODljZTQ4MDk2M2Y5YmI0MGU0Y2VkZmEwOGFiMTMyMzU1MGU1ZTFlMCBsZWdhY3ktdHJ1bmsKKzE3NDQwIGQ4NGQ1NzU5NDgxNTU2YWE3YTgyMGQzOWZhOTBhYWQyMmNmNjczMTUgbGVnYWN5LXRydW5rCisxNzQ0MSBjZDFiOWQ4ZDA0NWRkOTRkZTJlYjM5MWMzMzIzMjI3N2FiMzY1ODUyIGxlZ2FjeS10cnVuaworMTc0NDIgZThkODc1OGFkZmRiNjM4YzYyNGQyMzMxOTNiOWY5YTg4Y2E2NGRjYyBsZWdhY3ktdHJ1bmsKKzE3NDQzIGRjYmMwODRkMDQ2ZWJhNWQwMjRiMjQzNWI5ODMzNDQ1NDM3ZjUwOTIgbGVnYWN5LXRydW5rCisxNzQ0NCA5YWI0MTlhNWUwNTI4OTE5ODlhNDcyOWU0NjdlMjYzMDVmODU2ZjQ3IGxlZ2FjeS10cnVuaworMTc0NDUgYzQyMTA1YmRiNWZjNGViMWFlNDYwZGU2Y2ZhZDAzZTcyM2Y3OGI2ZCBsZWdhY3ktdHJ1bmsKKzE3NDQ2IDE2YTljMDU3ZGMxMTlmMmM1MzU3ZTIzODNjMjNmZjIzNzYxNDU1NGUgbGVnYWN5LXRydW5rCisxNzQ0NyA5MGYwNzg5ZDU3YjcxN2QzMGQyNzRkZDlmNmY0ZWI2YTQ4M2NkNjEwIGxlZ2FjeS10cnVuaworMTc0NDggNmMzMTdhZGMxOGE5ZTJiYWRmMWFjYjZiOGQ2OTlkZTMwMzkwZWIyNiBsZWdhY3ktdHJ1bmsKKzE3NDQ5IGExZTJlOGQ1NWVmMDA1MDA3YTBmZmQ3M2JlNDM0YmVlNzEzMDdlNmEgbGVnYWN5LXRydW5rCisxNzQ1MCAyYTQ0MTZhZDgzN2M0NTk2YTQyZjkzNWU4ZjFiNTdjNmQ3MTdiMTIwIGxlZ2FjeS10cnVuaworMTc0NTEgMjU2ZDFiYjYzODg4OTQ3ZmM2MTYwZDYyZjA4ZDQ1NGI3Y2ExMzhiYyBsZWdhY3ktdHJ1bmsKKzE3NDUyIGY0ODYxNzZmNTZmODcwODcwYWE0NzFmOWQ1NDdiM2JmYTA1YjVlYTUgbGVnYWN5LXRydW5rCisxNzQ1MyA2OWY5NmI2Y2FkMjkyYjQwNjBmMTJjNDM4NTg4N2M0OTAwZjFlNGY5IGxlZ2FjeS10cnVuaworMTc0NTQgNDlhMDQxMzMwNDYxY2U4NGE4NDVlMGVhYThlZmQ0ZWEyOGIxMWNhYyBsZWdhY3ktdHJ1bmsKKzE3NDU1IDAxNGNmNmQyOTM5ODcyZGFhZTJhODEwZThhMDJiMmUxOTM4YTRmYTMgbGVnYWN5LXRydW5rCisxNzQ1NiA4ZTVjYTNmYmNkYjY0NjMyYjk1MWMyNDI2YjRhZmM2OTA4NGJmMGU2IGxlZ2FjeS10cnVuaworMTc0NTcgMjRmYmJmMTNkYWE1YmQ2NzZlM2YzMThkNGVhOGM3MzNlYzJmMDVhYyBsZWdhY3ktdHJ1bmsKKzE3NDU4IDgwYTc4MjA4NmE1N2YxOWI3YzJlNmFiY2FhZThmOGUxOTExNjE0MzIgbGVnYWN5LXRydW5rCisxNzQ1OSBkMjYwOWQ0MzA0ZWZjNWNhY2ZjNzMwZDg1YThjY2E5ZTAyNDA1NzJmIGxlZ2FjeS10cnVuaworMTc0NjAgOGFkOWJkOWNhNjBjMDA0YWVjYjdlZThiYWI0OTQwYmZhY2RmZWQ5MCBsZWdhY3ktdHJ1bmsKKzE3NDYxIGYyZmM2NmE2MTUzYjQwNTZlNjJkOWFlZTVmMTBjODk0MjEzNjJjMGEgbGVnYWN5LXRydW5rCisxNzQ2MiBhYzU4M2U2YTNjOGI1MWE1ZjIwYjYzNTg2YjA2NTU5ZDQyYTAzYWYyIGxlZ2FjeS10cnVuaworMTc0NjMgMTQyYTkwZWVhOGY0YTE4OTIxNjkxNDdiMTNjOTFkYjExMDNkNTExMiBsZWdhY3ktdHJ1bmsKKzE3NDY0IDBiNjMzMzI1OGY1NDdkMWU5MDBjZGQyN2Q2ZDllMjczZDlhZjkwN2UgbGVnYWN5LXRydW5rCisxNzQ2NSAxM2M3M2EyMTljYjExZDllZTM3NzgzZDQ3MTU1MDI1MGZhYzJjY2Y0IGxlZ2FjeS10cnVuaworMTc0NjYgZGNiOTI2ZTcyOTZlYzBhZDJmYzRiYTAzZWMxNDU3NjA2M2VjOWE3ZSBsZWdhY3ktdHJ1bmsKKzE3NDY3IDFlNmMwNDRkOGU1OTg1MTU3ZDZhMGRmNmJiNTA3NzUzMTg1NzE0ZTUgbGVnYWN5LXRydW5rCisxNzQ2OCA1YTUxMmVjOGE3YWRlMjhkOWU5YzE1YmM4ZWQ1ZTk1MjU5OTU1MTk1IGxlZ2FjeS10cnVuaworMTc0NjkgMzNlMmVmMzM5ZTUwZDE5MTNkNWY1Y2I0Y2QyNjMzMjI5OGFlZGNlYyBsZWdhY3ktdHJ1bmsKKzE3NDcwIGM0ZDA1OTg1YzZmMzA2OWM5MTJlNjFmNTA3MWZhZjMxNmVmMGEzZGUgbGVnYWN5LXRydW5rCisxNzQ3MSAyODQ1MDhjNjUzYzdjM2U5MzFiMWJlMjNjMWM1NTlmNTYyMzJjMDY0IGxlZ2FjeS10cnVuaworMTc0NzIgOWQ3OThhNzYzZDI0MTc5OGQ3MGYwNTJkMTY1MzdjZTVkODg5MWE1ZCBsZWdhY3ktdHJ1bmsKKzE3NDczIGNiNzYzODM1YjE3NjFkYTdlNzFlZjczMWY3OWViYjM1NDU0Y2E5YTggbGVnYWN5LXRydW5rCisxNzQ3NCA0ZjA2OWY1ZGZhN2I5NzgwYjBhNTJhNjZkY2Y2NmFhMTQ1ZTg0MDFmIGxlZ2FjeS10cnVuaworMTc0NzUgNGFjY2M2M2Q1NmRjNTY2ODY0ODE1NzQyOGUwMGZkMjAyMGQ1MTg4ZiBsZWdhY3ktdHJ1bmsKKzE3NDc2IDQxYWZjZDA2OWE2YzUxODRkMDM5ZTkwZWQ0NDIzNDhiMjE3MWEwNGUgbGVnYWN5LXRydW5rCisxNzQ3NyA0NmY3NjJhNjFiOTk2MzAwNTIxMzExNWFkZTU1NWQyMzEyOGI4MjM5IGxlZ2FjeS10cnVuaworMTc0NzggYWFhMWRjMTYxY2UzZDJmMzBiMWMzODE1NTY0MDRkYzk2MDdlNDgzNSBsZWdhY3ktdHJ1bmsKKzE3NDc5IDk2MTg2MGQ2YmVhOTNiYTU0ZjQxMmU0NTJlNDA2MWYzMTYyZDBmYTEgbGVnYWN5LXRydW5rCisxNzQ4MCBhZjM2YmE1MDYxZjZlODQ1Mzg4ZWYzMjU5ZWQwZWUxYWE3ODc1NjY2IGxlZ2FjeS10cnVuaworMTc0ODEgZmU0N2QyMzhiNTBkZTI1MmMwZDg4MjA3NGE2NzMxNGQzZDc0MWI2OSBsZWdhY3ktdHJ1bmsKKzE3NDgyIDQwNTk1MDE3YTk5MmU1NTJlM2JjYWUzZTlhM2JhM2E3M2RjOTBkOGUgbGVnYWN5LXRydW5rCisxNzQ4MyA3MjExZmJlMGRiOWQ4NzA5YjgyYTIwZmMyYzg5OWZmMGZlYmZiNGIzIGxlZ2FjeS10cnVuaworMTc0ODQgOWQ5OWEyZGY2NzVmNDk2YWI0YjA3NmFkZTkyODE3M2IwMDFlMmIxNiBsZWdhY3ktdHJ1bmsKKzE3NDg1IDc4OWM1YjZjMGYwOWEwOTc5YzU5MjRmZTExMGViMDdhNmViNTgyZWEgbGVnYWN5LXRydW5rCisxNzQ4NiAzY2QyMTc0ZWUxMGQxMTYyMjM0NTM0YzI1ZDQ2YzQ4MDNhNjdiNzkyIGxlZ2FjeS10cnVuaworMTc0ODcgNGQ2YTVlNWZlOThkYzg5MTA2OGQ0ZTgyYjQyMTBmOTc5ODhjNWRlNCBsZWdhY3ktdHJ1bmsKKzE3NDg4IDdkMGUzNDUwZWU0MTA3NDZhNDZhNjgyN2Q1MDEyODdmZjljZTM1YTYgbGVnYWN5LXRydW5rCisxNzQ4OSA4YmQ1MzQ5ZTdhYThlMDRjNjE1YzM3MzQ0M2IwMjY3ZTdhNjA5ODEyIGxlZ2FjeS10cnVuaworMTc0OTAgZGI5ZWE1YjVmMzM3ZTdmNWYyYWUyNmMzYTZhMzI3ZDA1OGFkMzU1NCBsZWdhY3ktdHJ1bmsKKzE3NDkxIDBjMzAzYTIyZDlhNDk3MTE5MTE0ZDYzNmUxNDY3OTEzMTFjOTViZDMgbGVnYWN5LXRydW5rCisxNzQ5MiAzNzM5N2JkMWY4YThkYjRiMTg2ZjEwMTU1MjU0ODkwNTk0OThmMDkzIGxlZ2FjeS10cnVuaworMTc0OTMgMmUxNzBjMmY2MWUxMzhiMGU3YjVhZThlZjJmZjU3MDUxMTIyNWNlYiBsZWdhY3ktdHJ1bmsKKzE3NDk0IDEzMzYyNGFiYzUyNWFlY2RlYmYzZWI1ZTBhMjc4ZGQ1Y2Q3YjJlOTUgbGVnYWN5LXRydW5rCisxNzQ5NSAzZmVmZWFmYTNmNGEwZjVhMmE2ZTZiMzQ1NTkwOGQwMzM5NzA3Mjk3IGxlZ2FjeS10cnVuaworMTc0OTYgOGE3ZDQ3ZDA3OTgxMjJiNGU5M2E3ODhhMGQ0ZTlhNDFiZmY5Y2FjYiBsZWdhY3ktdHJ1bmsKKzE3NDk3IDA4ZTFjM2M0MWU2MDdmNDYxZmVhM2EwMDE5YjdkMjljZDIxOTJiOTYgbGVnYWN5LXRydW5rCisxNzQ5OCBiOTU0YzMzZjBiNGIwY2Q3OTM0ZjBhOTIyYTdmNzJiYTc1MTE3MjA1IGxlZ2FjeS10cnVuaworMTc0OTkgNjYzN2MwOTFmZjQ0ZjM2MmI4OTNkMWFmYjdmN2U4ZGMzYWVmNDcwNiBsZWdhY3ktdHJ1bmsKKzE3NTAwIDJkMzBjMzVmZWViZTUwMzFhZTg3NTUxZTJlODFhMDM5OTBlMWMzMWIgbGVnYWN5LXRydW5rCisxNzUwMSAxYjgwNjU1MzkwOWY1ZGJiZjIyNDY4MjZiODE5Y2E5ZTY2MGY5NDk1IGxlZ2FjeS10cnVuaworMTc1MDIgM2I3MGU2MDI5OWEzMTg3NzUwNjEyNWJiNjliZjUzYWRmMTk4MjgxZCBsZWdhY3ktdHJ1bmsKKzE3NTAzIDE1Y2JlMzk5YTljM2I1ODVjMjA0MzQ4ZDI4MTRjMzg5MGU1OWNhZTEgbGVnYWN5LXRydW5rCisxNzUwNCAxZWM2YzYzMzQ3ZWEzODMzZTI3N2E1NmNhMmFiZWE0YjU0ZWZhZmE4IGxlZ2FjeS10cnVuaworMTc1MDUgZWRkYTM1M2JkZTEyYTFkYjZiZTgyMDc2ZjgwNWIwYjI1NDNjOWM4OSBsZWdhY3ktdHJ1bmsKKzE3NTA2IDdmYzQ1NjlkOTYyNTA3MDUyY2Q2YjMzN2U4NDBmNDQ0Y2QwYmNmZjcgbGVnYWN5LXRydW5rCisxNzUwNyBmNGYzODQxYTI2ZWRkMTRiYmM0NjkzMjY0ZTE5N2YwNWE1ZTNjODEyIGxlZ2FjeS10cnVuaworMTc1MDggM2Q2ZmU2NGJjZDIxOGEwYzRjZTdiMmVlYTFiNmIzYWE2M2E1ZDhmMyBsZWdhY3ktdHJ1bmsKKzE3NTA5IDBiZDc0NmJjNzYyN2Y3ZjQwN2FmMDE0N2JiMDNmMmRiZTU2Zjc5ZDIgbGVnYWN5LXRydW5rCisxNzUxMCAwMjI4OTE0ZTBjNWYwZjcxMGI2ZGIyNDQwZTNmNDYzNzNmNjBmYThmIGxlZ2FjeS10cnVuaworMTc1MTEgNjAwMjllM2UwNWVlYThlMWZkYTAwMTI5NzZhOTYyNTk4YmU0NWYxNiBsZWdhY3ktdHJ1bmsKKzE3NTEyIDk0NjcwOWU4MmJlMDJkNzA2MWEwOTZjNmQ3ZWQ2NjgzMDM4YzNjNDEgbGVnYWN5LXRydW5rCisxNzUxMyA2ODZkM2NjYWViNGE3ZTFhMDMxMjQxNDZkZGVkYzE1MmMyYWE3NjhmIGxlZ2FjeS10cnVuaworMTc1MTQgNjk5ZmJiYmEyOWE3MzBjOGEwODM4MTljZmY2ZGE2YmNlZjEwMDU3MSBsZWdhY3ktdHJ1bmsKKzE3NTE1IDk4MzUwMmIyY2Q0M2E0M2Y4YWI3ZGFhZWM4NzM4ZmM3MDQ3YjliOTYgbGVnYWN5LXRydW5rCisxNzUxNiBlN2Y3M2QzNWVjZDhjMmY4MmYxYjY0OTJkYmNjZGRkYWFmMjAwYzA1IGxlZ2FjeS10cnVuaworMTc1MTcgMmQ2MTg4YzJlYTU2ZjFiYWY5ZWE5ZjdhOWMxNWQyMmMxZGY2ZGQ5MiBsZWdhY3ktdHJ1bmsKKzE3NTE4IGQxZWQzMDgyNTgxYTYyODE1ZjRmMWY2OTkzY2MyZDYyMDUzZDliODAgbGVnYWN5LXRydW5rCisxNzUxOSBmODM4NDA5ODYyNjg0NDFmMWJhOWNiYTExMTQxYTVhYmY3MjY2M2Y0IGxlZ2FjeS10cnVuaworMTc1MjAgNmZjZjVhNzA1MzNjZjBjZWNlYjkyMDIyZjZlNzg2ZDYzODU1NmExYSBsZWdhY3ktdHJ1bmsKKzE3NTIxIDE1NzA4NTQ5MTFjZTA2ZTdmZmZlNGUwZWFiNTMwYzhmM2NkNmE4NTAgbGVnYWN5LXRydW5rCisxNzUyMiAwODAwNTRiMTIzNTY1YTc0YjNhNWY1Y2VlZDliYzk5ZTI0ZmQ3ZThhIGxlZ2FjeS10cnVuaworMTc1MjMgNDJjNDFkYWRmMjkzNmZlNDBjNjI5ZDIxYTg3NDA5ODI3ZjQzYzY5ZCBsZWdhY3ktdHJ1bmsKKzE3NTI0IGE1YjQwMjk1ZGMxOWJhN2UyODc4YjNmYThkOGU4MmUyYzY5ZTFlNWMgbGVnYWN5LXRydW5rCisxNzUyNSA4ZGI4NjA2ZDg0ZWFhMGE1NmMyMTNkZTU1ZjY5MWViZWVlZmY4ZWVkIGxlZ2FjeS10cnVuaworMTc1MjYgMGM2YjlkZTE5MTAwZjQ5MzcyMjE3MGJiY2Q3ODdkYjA2M2UyMzM4OCBsZWdhY3ktdHJ1bmsKKzE3NTI3IDFiMjBhZDZlYjUwMTk0MGQ3MzFjODY1OGRmMjMzNjRhNWIxNjY5NGIgbGVnYWN5LXRydW5rCisxNzUyOCBkZjhkNTc1ZDk2N2Q4OGQwNTgxMWJkNmVkNDYwYmJmYTY3MWQ4MWQ5IGxlZ2FjeS10cnVuaworMTc1MjkgNzU2YzhjNjUzNWZlMmRkZWMyZjBlZGNmOGEyNGQ0OWEwODM5Y2ZjYSBsZWdhY3ktdHJ1bmsKKzE3NTMwIDIyMDExZDk3NjkxNzM4NGY2ODk4ZjEwOWI5YmM4MDYxNTcxMTZjMWQgbGVnYWN5LXRydW5rCisxNzUzMSAzYzU4NzE2ZmFmZGU4YjNmNzNmNmE4YWU3ZDZmODE4ZjYxNDAzYzE5IGxlZ2FjeS10cnVuaworMTc1MzIgYTc4MTNhZDczYTRlZGVlZDAzMmNiNWY5YTMzMDFkYzE5MWRlMzEzYSBsZWdhY3ktdHJ1bmsKKzE3NTMzIDk0Y2E4N2EzZTVlZWUyOGM1ODBmYTdkZWM5NjRjNWMwMGI1YzBlNmYgbGVnYWN5LXRydW5rCisxNzUzNCAwODgyMzA5OWFlNjI2ZTExMjJiNGI5NDYyZTNlOThmNjJkMWJiMWYxIGxlZ2FjeS10cnVuaworMTc1MzUgZTJkNjJkNzQ3ZjdhODJjMTgzY2U3ZjA0YzUwZjlhOWQ4ZmM4MzI4NyBsZWdhY3ktdHJ1bmsKKzE3NTM2IGU0MzJhMTg1ZjRkYjgzMzFiMzFlZGE2YzBlZjg2M2IzMWU3NzVmMzMgbGVnYWN5LXRydW5rCisxNzUzNyAyOTUxMjY0MzM4NTZjZDMzM2EyM2EwMmMxYmI4ZjhhMWI1N2U2NjMyIGxlZ2FjeS10cnVuaworMTc1MzggZWRmMWUxNWM2NzFhMDg0ZTUzOGUxMWJhZGFlODYxZmUwOWFiYzhmNyBsZWdhY3ktdHJ1bmsKKzE3NTM5IGM1MmZmMDJiYmQ3MDRmZTQ3YzljZjUyYjY0NTRmZjlkNDM1NTZhOWIgbGVnYWN5LXRydW5rCisxNzU0MCBmYWYzZTczNDI1NGRkNmY2MTFhZmNiYjgwNGM2ZjhlNWExZWFhYjI0IGxlZ2FjeS10cnVuaworMTc1NDEgZTM4NGY1MDE0OWM5NDA0NDUwOGFlOTM1N2YwZjcwOWYyZWFkZTEwOSBsZWdhY3ktdHJ1bmsKKzE3NTQyIGU4NmZhN2U4NTBmMTQyMGJjYjU0NDhiOTJmMWZhOGYxZjQ3MzZhOTkgbGVnYWN5LXRydW5rCisxNzU0MyBkNmZmYjZkN2ZlOGFkMzY1ZmMxYzU1ZDk5NDcxMWEwNzkzMmMwMDI5IGxlZ2FjeS10cnVuaworMTc1NDQgY2VjMDAzYmEzYzdiOTc5Yzc0MDNiZjFiODhkZTE5NzYyOTc4MjI2MiBsZWdhY3ktdHJ1bmsKKzE3NTQ1IDY3YTQ5MTNjMDc3ZmVmYzkxMmVmN2IzMWRjYWZkMmVjMzdjZTFjY2IgbGVnYWN5LXRydW5rCisxNzU0NiBiYWI0ZmE2YzNjMjQxYjZhOWRhNGEzZDZjMjYxMGQ5ZmQ3MGY5NjE4IGxlZ2FjeS10cnVuaworMTc1NDcgYzZmNDNjNjAzNmJhMTA1MTM3YmI3MTJkNDUxNzIyZGVhNmRmMWYyOCBsZWdhY3ktdHJ1bmsKKzE3NTQ4IDM0MTEwNTM4YjExODQ0ODU1ZDhjMTJhMTQ4ZjU3MmY4MDZhMDUyOTIgbGVnYWN5LXRydW5rCisxNzU0OSAyYjliMTU5NjU5NTE1Zjg4OWVhNTQ2YTE2YmNiYjk3M2UwYzA0OWE1IGxlZ2FjeS10cnVuaworMTc1NTAgZWYzNzA3OGQyNzJkNjQyYzExMDU0ZWQ1Y2RkZDBjMmYxYjQ4ZWRiOCBsZWdhY3ktdHJ1bmsKKzE3NTUxIDg1MDM4YTAyNGIxOTFhODg4MWFkYzZmZGRkMzQ5NjU5MmJhMzAzOWUgbGVnYWN5LXRydW5rCisxNzU1MiA5ZTNkYzdjNDdhZmEyOWYxMDc1OWZhMzFhOTE4OTU0N2UzMTMzYThmIGxlZ2FjeS10cnVuaworMTc1NTMgNDA3Y2UxYzk5ZTk4ZTMyOTE1NjY2ZDQxZTUxMTA2ODhkN2RjNjY1YiBsZWdhY3ktdHJ1bmsKKzE3NTU0IGZhODI4MjBiZDNmZjNkZDNjMjdhNzdlY2U2OTlkYmFhMDA4NjhlNTQgbGVnYWN5LXRydW5rCisxNzU1NSA5NWZlMDgzYzc4ZWU1ZTBiNDgzMmQ0NDRiMTAyN2RkYTBmYmZkNTMzIGxlZ2FjeS10cnVuaworMTc1NTYgNTgxZDFlNzdlMzVlNzVkZWQzMzdiZjY2ODU2NzIwMDEyMGI3NzlkYiBsZWdhY3ktdHJ1bmsKKzE3NTU3IDkxZGRlN2JmZmU3ZDllM2MyMDlhYTU2NWM0ZDJmYjE0NTY1YzIxMTkgbGVnYWN5LXRydW5rCisxNzU1OCA0MzkzNmEyNWVhZjEwMDM0ODkyNjI0YzY0ZTdkZDRiNWE4NTk2YzBkIGxlZ2FjeS10cnVuaworMTc1NTkgMDRjMzk4ZTc0ODc4OWM3YzQwMTRmMmRiNDI2ZGQ0NDNmNmVhYzg4OSBsZWdhY3ktdHJ1bmsKKzE3NTYwIDQ3MTJmNWI4ZjI3OWFmMmE4N2Y5NTExMDhlNDdiYzhlNTAxNDU1MzAgbGVnYWN5LXRydW5rCisxNzU2MSBmZWY5Yjg5YWQxNjIyYWU5N2FjNjFmNTE1MThlMzQxZjFhNGRmMTEwIGxlZ2FjeS10cnVuaworMTc1NjIgMmZjYjk5MGI5NjVmODZmNWYyYWE1MmI0NzUzYTE1MjVlZTVmNWI0OSBsZWdhY3ktdHJ1bmsKKzE3NTYzIDg5YjJhZWU0M2UwYmQ1MjdkZjJlNmJhNzlmYjQ2ZTA1MDI3MzY4Y2EgbGVnYWN5LXRydW5rCisxNzU2NCBlMDI0NDM4NTIyZGQ3MGJiMzdjYWVkZjU2NGI5NGY2YjhiODRjMTZkIGxlZ2FjeS10cnVuaworMTc1NjUgYWM2ZGYwNDk0YzU4MjZiYmJmODNhYWQwMmRmMTcwOWFhNTQzYmJhNiBsZWdhY3ktdHJ1bmsKKzE3NTY2IDE5MjIzYmJmMWFhMTllNTUwYWU1YTJlMmJhMDMyMzY3YjVlNmEyZGYgbGVnYWN5LXRydW5rCisxNzU2NyBhNjk3MDQ0OWRmNDI1YTVmNGRjNTNjNzU4YjEwMDlhOTY1ZWU5ZTc2IGxlZ2FjeS10cnVuaworMTc1NjggNThiODMyYjg3NDVlZTJlZTYzZWI2ZTc4ODFlZWRkOGY3OThmZmIyMyBsZWdhY3ktdHJ1bmsKKzE3NTY5IDJlYzU5YTExZDNjNjFlMzE2YWYyMjVmNjNmYTA0Yzk1NTA1YTRkZGQgbGVnYWN5LXRydW5rCisxNzU3MCA4MzBlOGVjZTY1NjM5YjUzYmRlNTZhZDUwNWY5NDBlZmRhZDBlZTM1IGxlZ2FjeS10cnVuaworMTc1NzEgNWFlMWQ4YTlmMWRkOGVmZmI3M2U0NjI3YTY4NjM5ZjE4N2YzYmY0MCBsZWdhY3ktdHJ1bmsKKzE3NTcyIGMzYTI3YjZlYmUxYmNiMWZlMDI1YjAxZWMyOTliNWUyYWY5NWNiYTcgbGVnYWN5LXRydW5rCisxNzU3MyA2OWNhNDZhZjQzNmE2YzIzYjRlNGJmNDFiYTdjM2QzZWQ1MmM5YmM4IGxlZ2FjeS10cnVuaworMTc1NzQgODcwMjM3MDg5YmEyOGU3NjM1MDc1Njc2MmUyOWMyZThiMmQxMDA4ZiBsZWdhY3ktdHJ1bmsKKzE3NTc1IGQ4Yjc5ZTM5YzQ3ZTE0NDJmZjA5OWExMzE2YmJmMjIwOTliYWU4MTMgbGVnYWN5LXRydW5rCisxNzU3NiA3ZjQ5YzU4NjRmNzc0MWI1MGY2N2Q2OTlhNDJkMzg3OWYyNGU5ZjQ2IGxlZ2FjeS10cnVuaworMTc1NzcgNGQyZTljZjFlYjIwYjZiZGJhMjBkYWZhMDFmZjFiY2UxOWQ4Y2Q2NCBsZWdhY3ktdHJ1bmsKKzE3NTc4IGMwNGFhYzE4NjU2YWIyOTgzYTE4YmE5YWUzNDBkNDYxNDY3NzQ1NmIgbGVnYWN5LXRydW5rCisxNzU3OSBhNmY4MDEzYmJjM2QxNmYwYTU5NGVhM2M3M2QyYmE4M2E0ZjkxOGVkIGxlZ2FjeS10cnVuaworMTc1ODAgMDZiYjVkNWQ4OTkyN2Q1NjUxY2YwMTk3OTAwNTlmNTQzNTBkODMxMyBsZWdhY3ktdHJ1bmsKKzE3NTgxIDE3NjY2MGZmMGM5NTk2Njk0ODkwODhjNDI0NDUxMzM3Mjk3NjVkNTYgbGVnYWN5LXRydW5rCisxNzU4MiBiZjQ2ZjE4NWM1ZTRjMGMxNjI2ZmRhYzQ3MmM0NTNhZDMzYzk0Yzk5IGxlZ2FjeS10cnVuaworMTc1ODMgZTJjMDNjMzBiMDZkZGZjNmZlYWNjODNkYmY3YTExOWFiMjgzYThkYyBsZWdhY3ktdHJ1bmsKKzE3NTg0IDg3NDljYzg0Nzk3MDIyNjVhMTIwMTA0OTZlZTlkNjFmMmQ1NDU0MTQgbGVnYWN5LXRydW5rCisxNzU4NSBmZmMzMDBlOWQ4NjdiZDFkOTg0MDdmZDA3MTg4OTFhNjNhNzFmMWM3IGxlZ2FjeS10cnVuaworMTc1ODYgZjFhYmUwM2IyZjE2ODQ2NzI5OGRiMGQzNWY4MzcxOTdiZjAyYWU1NSBsZWdhY3ktdHJ1bmsKKzE3NTg3IDMzNmE2MTc5ZTA1OTcyNGRlZjgwMmQ1N2FjYTNkOGU3YTA2ZTgxODcgbGVnYWN5LXRydW5rCisxNzU4OCA4MTRmNDIxZTAzMjY3MzE2ZDdiN2RhNDI3OGIzMDJkODI4YWQ4MTg4IGxlZ2FjeS10cnVuaworMTc1ODkgOGFhMTEyZjllMTMwYzMyZDE3ZmI4OTE4NDg4ODg5YTBjOTc2MDk4OSBsZWdhY3ktdHJ1bmsKKzE3NTkwIGQ0NmEwNDM2ZDZlMTk4MTdmM2ZlMDZmM2EwN2RkZmQ3Y2Q4YTk4YmMgbGVnYWN5LXRydW5rCisxNzU5MSAyYjlhODkwMTYyYjA1MzhlNDc0MmQzYjRlMDQ3MmU2NGMyYWVmZDk5IGxlZ2FjeS10cnVuaworMTc1OTIgN2VkMDgwYjhjZGFjYTc3OWE4ZjdkY2FmZGM3MmNmYzZmZTZkYzhmZCBsZWdhY3ktdHJ1bmsKKzE3NTkzIDIyMTQwNjI2OTVlNzk5ZTY5NjM2NWNlM2JjYmE5OTAwZDUzZDU2MTggbGVnYWN5LXRydW5rCisxNzU5NCA1NzA0MzczNDFhMDlkMDdmZmI2MmQ2ZWFjZDBlZjc3YTY4NWYyNDMzIGxlZ2FjeS10cnVuaworMTc1OTUgOGJiNmRjYTY2ZWNkYzQ4YTdlNWE0YjlmZmI2ZjQ3NGIwMWY1OGUxMSBsZWdhY3ktdHJ1bmsKKzE3NTk2IGMxZGUyYzNlNDVjYTY0NjdhMjNjOWUyNzg1OTNjODhiZGMxOWMyMzMgbGVnYWN5LXRydW5rCisxNzU5NyBkNzMyYTNhMTM5OGViMDhmYmE5Yzc3ZGE2YTNmNTY2NDNjMzczYmE5IGxlZ2FjeS10cnVuaworMTc1OTggOGRiMDk2Yjc4MmY5NzMzZDJiZGVlZWVhMTg5ZDA2NmIwMGJhYjQ2NyBsZWdhY3ktdHJ1bmsKKzE3NTk5IDRmOTVjZjFiMjY2NGY3YzcyYjkxYTRmNmI0MzM0ZjAzZjM0NDkzZTYgbGVnYWN5LXRydW5rCisxNzYwMCA3MDk0Mjc2N2RjODEwYzhiZTUzZjA1ZmU3NDM5NWQ3ZWVlNzliMDM0IGxlZ2FjeS10cnVuaworMTc2MDEgMDI5ZmY0NmM3OThjN2MxMTY1YjNlYzRmMDI4NTQzNDZkMzBkZjJmMyBsZWdhY3ktdHJ1bmsKKzE3NjAyIGUxNTRlNzlmNGQyMmJmOTZiZDE0MzU0N2ZlYzk5ODYwN2M2ZGI3NWUgbGVnYWN5LXRydW5rCisxNzYwMyA5ZjhiMjEzYjg0MTU3NzEyZTE2ODUzMTUzY2Y5YzlmNmU3MDM1ZjYyIGxlZ2FjeS10cnVuaworMTc2MDQgNmYzZmQ3YTJhN2JjYjM4M2JiYTI2M2IzMjllYTJkMGFkYTk4NGFkZCBsZWdhY3ktdHJ1bmsKKzE3NjA1IDAwZTgxNzJhYzBjYjk1NGI1NDg1NmI4NGI3MmJhMzdkOWYxNTU4NGEgbGVnYWN5LXRydW5rCisxNzYwNiBmODk4NGYwM2RlMjAyNTMxOTFmNWE0OTAzMmJlYTNmNmQzZjZkOTRhIGxlZ2FjeS10cnVuaworMTc2MDcgNDZhNjk5MDc2OWQxNzBhYjU2NjA2ZjYwMDNiZGMyMjlhY2MxZjUxYiBsZWdhY3ktdHJ1bmsKKzE3NjA4IDlmZmNmNzQ5YzE1YTlmYmJjNjU4ODE1Y2FlYmRlZWFlZTZhMzVlYWMgbGVnYWN5LXRydW5rCisxNzYwOSAyZjc3Y2I4NTQ3YTFjMDE0MmY0YTFlNmVlMGY0MzNmNWVlMTA4YjYxIGxlZ2FjeS10cnVuaworMTc2MTAgOTMyMDcwNzZkNjEyMThkMGNlOWQ5ZjZiMGY0NzQxMGNiNTU0ZGZhOCBsZWdhY3ktdHJ1bmsKKzE3NjExIDZlOTMzMWU2OGEzYmQ3OGU5Zjg0NWU1MmFjNTQzZTJiNGM1N2I3YmUgbGVnYWN5LXRydW5rCisxNzYxMiBiNGVhNTc4NzBmMmFhYzU5ZDIwY2ZkMDMzODkzYTY3OTY1YmZkNTA5IGxlZ2FjeS10cnVuaworMTc2MTMgYTg2NTY4ZjU0Mzc1ZGRjNDgyNTA1YWY3NDMxN2NlMGZmM2E1MjlhZiBsZWdhY3ktdHJ1bmsKKzE3NjE0IDVhOWRmZmZmMGRhMmI0NmQwMzAxMjkyMGNkMzQxOTkxMjZiMTU3M2IgbGVnYWN5LXRydW5rCisxNzYxNSBiNTQ1MWE2ODcyYTI5OGExNzQwYzRjNjJlYzEwOTNjOTkwOTUzNzUwIGxlZ2FjeS10cnVuaworMTc2MTYgYzU2NmFjOWM1MmQ3OTJlY2NkNWIwZjgwNzhiN2Y0MTViZGMyNTAxNCBsZWdhY3ktdHJ1bmsKKzE3NjE3IDVmNjM4YTI5OTg4OGM3MDRkN2U0MmRlZTU4ZDg4NzdjOWQ2MzZhYjkgbGVnYWN5LXRydW5rCisxNzYxOCBkMjcwNTg0MDQ5ODEwNjM2Mzc0YTYxYTcwZTlkNTgzMzk0MDUwNDU2IGxlZ2FjeS10cnVuaworMTc2MTkgODI4ZWY3ZWNkMWY3NmNkODMzYWM4ZWVlZjkxMzA5OWVjMTk2NjU1MSBsZWdhY3ktdHJ1bmsKKzE3NjIwIDlmZTVjODJjNGM4YTBiOGM0YWU0N2I2YzdhNDNkMTcxN2IxZmQ3ODQgbGVnYWN5LXRydW5rCisxNzYyMSA3Mjg2MGVmMDMxNzE0ODY3MWZhZTcwYTJmZWJmYWNmNjFhZWM0ZjBkIGxlZ2FjeS10cnVuaworMTc2MjIgNjBjZTM3ZjA2NmQ4Y2VhMTA4MmVjNmU2ZDJkYWVjMzU4NWE2NDhmYiBsZWdhY3ktdHJ1bmsKKzE3NjIzIDkyYWVlMzFkNzYxMzhiYTc0ZGQ4ODI4YTIyYjIyZDMzMGJkOGVlMGYgbGVnYWN5LXRydW5rCisxNzYyNCBhYTE4ZTUyMzliNDY5YzNiZjIwMWFlNWIxN2NhODFhN2JjNDRmZTQwIGxlZ2FjeS10cnVuaworMTc2MjUgM2ZmYWNmMWRjOGYwNWY2ZTlmOTBkMmQwNzY1NDlkMTdjNTM1YjQ2YyBsZWdhY3ktdHJ1bmsKKzE3NjI2IDEzMzAwNzY0NmZiNDc3MGY3MjRjOGFiZDA1YzE4YWRmN2NjNGMxNWIgbGVnYWN5LXRydW5rCisxNzYyNyA2NDg2M2M1NmNlOGUzZTkwOTI0NTIyY2RlZDFhODVjZjI4NGU5ZDY0IGxlZ2FjeS10cnVuaworMTc2MjggYzVlYzBiMTFmOGM5NTgzOGZmZjFkNjM1ZjVlMTY4YjY0MzJiNTFlMCBsZWdhY3ktdHJ1bmsKKzE3NjI5IDUyMTc0YjAwMmYxZmYzN2YzMGFkNTUxMGNiZmFjOTEyNTdiMzg4ZjYgbGVnYWN5LXRydW5rCisxNzYzMCA3NDU2Yzk3Yzk5ZWZhMDY4NjQ2ZDhiZGI3ODE0NzRhYWU2NzM1MTZjIGxlZ2FjeS10cnVuaworMTc2MzEgMTc5ODc3MGNhMzZiMjBhYzc5ZWM4ZTBlZTczZWI4ZDJjZGRlYmYwYSBsZWdhY3ktdHJ1bmsKKzE3NjMyIDZiNzcyYzUyN2NhNzRjZmU3MGI5NjFjODU1YWFlMmFkNjBkZDkyZjAgbGVnYWN5LXRydW5rCisxNzYzMyA4ZmFlM2Y5MTE2MWY4ZWI0ZGIyZDU0NDhlODgwMjI5NjRmN2VkODY5IGxlZ2FjeS10cnVuaworMTc2MzQgN2JhNDkzYmMyNGEwYzBmODFmNDY5ZmZhMmE5ZDY0MjA5ZGQ0YWYyYyBsZWdhY3ktdHJ1bmsKKzE3NjM1IDA2NGU0MzRlNzQ0ZjE3MjQzZjBmMjcxMzY3MDY2MmNkNzMzY2FmNGYgbGVnYWN5LXRydW5rCisxNzYzNiAwODE2NzFjZWY3YzFiNmRmZDE4NzYyZGY2ZmNhMzNjNDczMjQ1ZmI5IGxlZ2FjeS10cnVuaworMTc2MzcgM2MwMWY5MjFjNDUzZWMzNjg0NjQ3MDMzOTVkNTM4YjE1ZDhmMGIxNyBsZWdhY3ktdHJ1bmsKKzE3NjM4IDc3ZWRkZGRiYjdjY2Y5NDE4NzY4ODc4MjNmNWJiMDc3YmY2M2M0MWEgbGVnYWN5LXRydW5rCisxNzYzOSAwOTg1ZGRmZDQ0MmJlOWIwODgyNjA4MTNjNzdkMTgwYjc3MThlMjRhIGxlZ2FjeS10cnVuaworMTc2NDAgZDBiNzc3ZWM5ZTAyN2FkYzFiZmY1ZTI0NDMzMDUxYjY5ZDk1N2NkYiBsZWdhY3ktdHJ1bmsKKzE3NjQxIGFkMGQ5MzJjY2UzMmQ3NjNlN2RkOTgxNDM5OGYxNDdmYWM0YmIyMWUgbGVnYWN5LXRydW5rCisxNzY0MiAxZWRiNmI2ZTNiNWI1OTQyMzc2ZTg4MWY0ODNmYmZkZDc2MTdjYzllIGxlZ2FjeS10cnVuaworMTc2NDMgMTc5ZTA5ODIzOGU4MDk2MzliZWVjNzAzNDg2ZmZlMjExMzg1NmFkZiBsZWdhY3ktdHJ1bmsKKzE3NjQ0IGJlMmRmOTkzNWVkZDhmYTFiYjEwOWRjNjhhNGExZmU4NGRhOGM2MTQgbGVnYWN5LXRydW5rCisxNzY0NSA0MzI5M2NmNzUzYzE1YzAxYmY1OWFkYjc1OTEzNzg5ODg1MGJhMGQ1IGxlZ2FjeS10cnVuaworMTc2NDYgZmY4OGM2NGNmZjJlNTE5NWEyMWNkOGUxYzQwZmNhM2MyOTQ5ODc0YSBsZWdhY3ktdHJ1bmsKKzE3NjQ3IGFmYmFkYWM2MGZmNzRjOGYwMTQxMWVmOTNjZDE1NzE2M2Y2YzkyMmMgbGVnYWN5LXRydW5rCisxNzY0OCBmZmQzZTlkYTg5YjBlYjhmNDQzMThlMzE2NGM1ZmM0ZTFkMGUwNzZmIGxlZ2FjeS10cnVuaworMTc2NDkgYzM2MDJhZTQ5ODkwNjlkM2E1NmM2NmMzZGI3Y2MxYmYxY2U3OGRlNCBsZWdhY3ktdHJ1bmsKKzE3NjUwIDdjNTc0YmZhNmUxMzhjZjNkMmQ2YTYwZTgzMTYxNmI1MTgwYWU1MGIgbGVnYWN5LXRydW5rCisxNzY1MSBkNjgyOGRkOWE5MjcwNTk1MTM4M2VjOTQzZDRjMmM5MGJmNTZjODE2IGxlZ2FjeS10cnVuaworMTc2NTIgYTkwZGFjNGJmODhhMjRhMTAwYjA2YzdkZDUxYmM0M2IzNzA4YTU4MyBsZWdhY3ktdHJ1bmsKKzE3NjUzIDNlM2MyZWZjNzljNzNjMDFjOWNlZmM3MmQ2MjNlOWIzOWEyNWVhNjggbGVnYWN5LXRydW5rCisxNzY1NCBjZjlkOGJmNTZkMTQ1MDc1ZDk0MTE5MmFiNjMyOWU4MTgyMDZmMzFhIGxlZ2FjeS10cnVuaworMTc2NTUgZmNhNWY4ZjFhOGY0NzFlOGQ0N2NkYTkyMGZlZWUwOTMxNWZjOWEwYSBsZWdhY3ktdHJ1bmsKKzE3NjU2IDI1NzQyOTU1NDVmZjdjMTYwZDljYTNmNmQ4NGE1MzY3YWZjZDgzOGMgbGVnYWN5LXRydW5rCisxNzY1NyAxZDc4MDMzYTUzZDc3MmEyNzY4MGUzYzEwZWQyYTQ4NDE5YzI5MDEyIGxlZ2FjeS10cnVuaworMTc2NTggMjk5MDJmNzc0OGZhNjc4ZTliZjRhYmQ3ZjU1ZDMwYTY4ZjhkNWU5MiBsZWdhY3ktdHJ1bmsKKzE3NjU5IDdkYTM2ZjZmZDU0NGJhNzdmMjUxZGVhMDlhMjc3M2Q4MTBiY2I2YjYgbGVnYWN5LXRydW5rCisxNzY2MCA2OTg3M2EzMGI3Yzk5NzM4NDAxNTZkZDU1NDEyOTJjZWYwNmVkOWRlIGxlZ2FjeS10cnVuaworMTc2NjEgNzQ2MWVkY2QyNDlkNDUxMjg0NTc0Nzc3ZGEyNjcwODBiNTRiMDk5ZCBsZWdhY3ktdHJ1bmsKKzE3NjYyIDZkYjY5NTJkODg3YWM5YjU3N2ZjM2NhZDMwM2E0Mzc4NzY5MjQ2ZjAgbGVnYWN5LXRydW5rCisxNzY2MyAwM2VlYTdlYTdlNWNiZGIyZDJhZDgxNWQxMjBlZDRjYWY4NzhhZGMyIGxlZ2FjeS10cnVuaworMTc2NjQgNGQxMGExMzU2OGFhM2Q5NTExYTZhMjQyZjFlYmU4NDNiZDM3M2UwOCBsZWdhY3ktdHJ1bmsKKzE3NjY1IDUyM2ExMmVkMzFmMGRlM2MxNzkxZDc0NDRmYmJmOWQ4Y2U3MGZhNGQgbGVnYWN5LXRydW5rCisxNzY2NiBmNTY1M2FhZTFjYmQ3Y2M3MjA1NjUxZmUwMDQyODgxNzRmOTBkZjg0IGxlZ2FjeS10cnVuaworMTc2NjcgZDU0M2RhYTE1ZDcxNTg4NmQ2YjY2ODJjYTc5YWM5ODQ4Y2NjMTllYSBsZWdhY3ktdHJ1bmsKKzE3NjY4IGI3ZmIxMjE2ZjZiNjIyMjI3M2ViMzFkZDFiNzk3YmE0YTFlNjZkYTAgbGVnYWN5LXRydW5rCisxNzY2OSBiNTZhODgyNzdlOGNlZjU5ZWMxOWI0OTkxMzczODUxNjcwOTBhYjZlIGxlZ2FjeS10cnVuaworMTc2NzAgNGZmODRlNzM0NTg4ZmFjZDE4MWViYzFkYzE5NmYzYTgxYzgyZGMxNiBsZWdhY3ktdHJ1bmsKKzE3NjcxIGI0MTNlODdlZWVkNDIzNzM5MGFiMmEzNWVjMTg2NTAyOWZkMjExODQgbGVnYWN5LXRydW5rCisxNzY3MiAwZGQyMDRkOTM2ZTE2MzUyMjY2ODRhNzllNTI5MWVmMTRkNzJmZjAwIGxlZ2FjeS10cnVuaworMTc2NzMgYzk1YzY3NmIxODQwNzAwNDViZWExMjEwYTkwZmIzOTc5Zjk2YThhMSBsZWdhY3ktdHJ1bmsKKzE3Njc0IDE4MmQ4MjRmMmI0NzNiZTA4Mzk5NmVkNzY2MjA3MDUyNjM2MGIzMjYgbGVnYWN5LXRydW5rCisxNzY3NSAwNzk2MzQyMWZhZmNjOWZlNTQ0ODUwMTJlMWFhYjIzZGVkNDRmNDY4IGxlZ2FjeS10cnVuaworMTc2NzYgYzUzNjk1ZjNkODQwZDE0YWMzODBlYWM5ZWE2MGJmMTI0MTVlY2I2OSBsZWdhY3ktdHJ1bmsKKzE3Njc3IDNlMzkzZjliMTI5MzkyNjgyMDdlMzliMzBhMzY1ZTkzZDE5Y2QwNGMgbGVnYWN5LXRydW5rCisxNzY3OCA0OTQ0ZTM4NTlhODYwOWVkMzYwN2Q1Mzc1NjZhYzljOTBhMzVmM2E4IGxlZ2FjeS10cnVuaworMTc2NzkgYTEwMzMyODNhMjVkYzYwYmRmNTViMWZjYTA3NzNkY2UwNzczY2UyZCBsZWdhY3ktdHJ1bmsKKzE3NjgwIDlmZDAzMGFmMmZlMDM5YWNlNGI4YjQ0YjUxMzhhNGU0MGEwYWFjYTEgbGVnYWN5LXRydW5rCisxNzY4MSA5MmRjZWEwODU5MzA1ODc2ZmYxNmMwZWUyOGM5ZjEyMDM0MDgxODBjIGxlZ2FjeS10cnVuaworMTc2ODIgYjFhMGZiNTU0NDU2Y2FlMGEyNjczNjIzNTg3MWI5MGM0MDA1MjYxNyBsZWdhY3ktdHJ1bmsKKzE3NjgzIDlmOTZjOTJmMDNlM2JlNmMzYjE2ODdhZmI3MjFlMjY3OWNhMjVmY2QgbGVnYWN5LXRydW5rCisxNzY4NCBiMWYyMjBmNjM2ZWRkMWU4Y2MwMWNhMjg3N2Q0ZGZlMGUxZGM1MjY2IGxlZ2FjeS10cnVuaworMTc2ODUgMDcyODhkMmRiNTk2NDI0NmFjYTM5NmI3NGY1NmM3ZWJjZTMxYjFiNyBsZWdhY3ktdHJ1bmsKKzE3Njg2IDFhMWI3OTVmMGM5YjllZGQwZDg0MjFlNjllNTVmN2VhYmVjNTYyZWIgbGVnYWN5LXRydW5rCisxNzY4NyA1NGFkYjdiNGY4Yzg0ZGU4ZGM3YmI1M2JkODY0ZTdkOTNhMGI1MmRiIGxlZ2FjeS10cnVuaworMTc2ODggZWU4MTNlODQzZjNlNTcwZTM2YzdlOTc0NDBkMDI4MmI2ZjkwNzI2YiBsZWdhY3ktdHJ1bmsKKzE3Njg5IDFkNjI3MjQyZTI5YTJjZmI2YWNkY2RlODZkODE0YTkzYzJhMWFmODkgbGVnYWN5LXRydW5rCisxNzY5MCA5NmQzMWExNDM4NTdjZjhiNWYzNTQ5NGI3ODMyYWMzYzMwNmQ1NWEwIGxlZ2FjeS10cnVuaworMTc2OTEgNjdlMGZmNGFhN2I5NzdmMWFiNTY1YTFmNWMwM2Q2M2QzMDliYWRmZCBsZWdhY3ktdHJ1bmsKKzE3NjkyIGI3Nzg3YTkwNTJlM2QwODFkMDBmNjk4ZjE4NzQzNjk1YzE4NWVjNzcgbGVnYWN5LXRydW5rCisxNzY5MyA3NmFhZDViMDY1NDNhZmM3NDQ0Y2I3YTc5NmJjYjc2OWMxZTYzNzgwIGxlZ2FjeS10cnVuaworMTc2OTQgM2IwY2EwY2MzNzUwZTIyMzNhMWJjODQwZTkyMjg5Y2MzNTI4ZDhiMSBsZWdhY3ktdHJ1bmsKKzE3Njk1IDYyNWE5YTY5NTQ2OWI1Y2M0YmUzYzk1NGJiN2RkYzU1NDcwZGNkZjIgbGVnYWN5LXRydW5rCisxNzY5NiA2ODE4OTI4NTY1OGYyMjg4MGZmNTFkYWM5OWQ2NzU3ZDE1ZDRkOTBlIGxlZ2FjeS10cnVuaworMTc2OTcgNDYwYWIxOWEzMjg5YmI5ZjczYWZjYzEwMWU1YTJhZmYxZDc3NDA5OCBsZWdhY3ktdHJ1bmsKKzE3Njk4IDk0YzI0NmU2Mzk5ZDIyMDFhMzhkMWY2OTFiMTc4NDg1ZDhlM2EwZWQgbGVnYWN5LXRydW5rCisxNzY5OSBlN2Q2Nzg5OTA4ZDcwOTM0YjNjOTJkYWExYTFhNmQxMDBlOTE0M2ZhIGxlZ2FjeS10cnVuaworMTc3MDAgODhkM2E4OTc0NDA5ZWU3MmM2MjkyNTdlZDc4ODg1ZDZjYmY0YWZkZSBsZWdhY3ktdHJ1bmsKKzE3NzAxIDQ1ZWM1ZGY5YTYyZDMxZWFkNTUyOWYyYzdhM2Q2Yjg0YjA1YjQxNWUgbGVnYWN5LXRydW5rCisxNzcwMiBmNmU1MDFmYzMyYzc3MWRmZWY1NGUxMTk1ZTFiNTk2ZjdkZGU5NTcyIGxlZ2FjeS10cnVuaworMTc3MDMgZTUyYzI0MzE5YWVmNTE4YjQzMGU3NzcwNDQ1OTliMTJhNzc0YmM1MSBsZWdhY3ktdHJ1bmsKKzE3NzA0IDkyY2RiYzBmNTVkNTAzMmY2NGY3YWRkMGQyNzYwMDZhZTljZWVmNjIgbGVnYWN5LXRydW5rCisxNzcwNSBjOGNhOTMxMDdmMmVkYzRmZjg5ODY5NjgzNzUyNjU5NTBlOWIxNzYzIGxlZ2FjeS10cnVuaworMTc3MDYgNTQ0OTMwMmM0ZDJlMTQ4ZDQ3ZWQxOWVmMDM2MzBmNGMxZmQ4MWNlNCBsZWdhY3ktdHJ1bmsKKzE3NzA3IDQ2M2ZhZjAxNjg1ZTcxMjcxODMyNTcxYmU1ZGUzMzc3Y2ViNDEwYWUgbGVnYWN5LXRydW5rCisxNzcwOCAxMjkzNDkyZGZlNjAzZWE0YWI3N2E5MjhlMzVmYTM1NjdmNjhiZjgwIGxlZ2FjeS10cnVuaworMTc3MDkgODliYzg0NzVmYzg0ZTE3MGQ2NjA0Zjg2ZjVkMTViZWFjYmVkMzFkYSBsZWdhY3ktdHJ1bmsKKzE3NzEwIGFlMTJiOGMzYzNiMzNhYjZmMDU4YTdlNDJjYTgxMTQ4YjM5YTkzN2IgbGVnYWN5LXRydW5rCisxNzcxMSA4M2FmZjFlYTViNzBkZTY1MjRmZGExMTcxYzhlYWJhMzdlOTFlMGExIGxlZ2FjeS10cnVuaworMTc3MTIgNmVkYTZhMWE2OTNjNTQ3MjVlNTE3MWNiYTg2ZDg3NjFiYTYwN2MwOSBsZWdhY3ktdHJ1bmsKKzE3NzEzIDE2NjExOWVjMzE5NTViNTllNTdmZTNjYjM5NzRiMTI4MmNhZmMxMjEgbGVnYWN5LXRydW5rCisxNzcxNCBlOTc2NjBkMWYxYWFlYjEyZTNjZjBhNTY4ZWM5OWMxMjY0Mzc1YzA5IGxlZ2FjeS10cnVuaworMTc3MTUgMThiM2RlZjZjNGI4Mjc2MmMzNjAxOGY2OWY3NDA1MjM3NDQxNWQzYiBsZWdhY3ktdHJ1bmsKKzE3NzE2IDA5YzE0YWU1YzJmNTQzNTc4YjhjYzE5NjVlYmQ1YTc1NzA3ZjRjOTQgbGVnYWN5LXRydW5rCisxNzcxNyA1YjhjZGE2ZjNiNWY2OWVjMjQ3MzA1YTA0ZTkwZDNmYTAzNWJlNjQ4IGxlZ2FjeS10cnVuaworMTc3MTggYzNmMGQ2ZjE5ZjdiZmZjM2RkNjM0MGZkOTc5OTkyMWZhMTJhMDViZSBsZWdhY3ktdHJ1bmsKKzE3NzE5IDU2ZmRhNGU5ZWNlOWY3YzIyODg4MTA0ZWUyYzM5MWMwNThkN2M1Y2QgbGVnYWN5LXRydW5rCisxNzcyMCA1YmFmN2Y3NDM5NmYxZGFmYzJmOGFmYTZlMTA5NmE2ZWZjZmJiNTBiIGxlZ2FjeS10cnVuaworMTc3MjEgNGMwODlhZDI5ZWVhYzQ1YTRhOWRkNmFjZDk1YmIxZDgwNmRhNWYxOCBsZWdhY3ktdHJ1bmsKKzE3NzIyIGM4OTJlNmFhOTk5NzZjODMwMTkzZjQwYzRhNDdhYzk2NzgxMTFhYjEgbGVnYWN5LXRydW5rCisxNzcyNCBiNjgwMDZhNTY0NzExNmIwMWM0MjYxMTQ5Mjg3NzhjMTMwNDMzNDliIGxlZ2FjeS10cnVuaworMTc3MjUgMjVkZGQzZGM3YTdhMmU0ZDU3YzMyYzQwZTliMGIxNDRiNDlhN2JjOSBsZWdhY3ktdHJ1bmsKKzE3NzI2IGUzNWEzYTc3MmRjYTllZmIyNTY4NjVjMmYwNmNkNzFiMDQxMWQ0Y2YgbGVnYWN5LXRydW5rCisxNzcyNyBmYjZiNTEwMzNjM2I2MGUxMTc2ZTE1OGQ3M2IwZTRhZjFjZjY3MTQzIGxlZ2FjeS10cnVuaworMTc3MjggYWMxNGI4NmYwZjhiOGY4MGVlYTUyZGEwODUwYzU5NmI0M2M2ZjRkYiBsZWdhY3ktdHJ1bmsKKzE3NzI5IGE5M2IyZjE3NmE1ZTJmMTVlYzkwMWU0ZWQxZWNjYjQxZGY5Y2Q4YTQgbGVnYWN5LXRydW5rCisxNzczMCA2NDMxY2Y1YzhhMDA0YzY2NjUxYzRmNDc5MDYxMjA4YTU1M2RmMzY5IGxlZ2FjeS10cnVuaworMTc3MzEgMTdiNWM0M2MwOGE2YzRkOGFlZjBjNmQ2MWY5NzZmYjIzZGU2NzdlMiBsZWdhY3ktdHJ1bmsKKzE3NzMyIDczZmRlNDQ1NjNkMWVmOTI4ZDFlZjFhMmM2MGI4ZDY1OTA5NWVkOGYgbGVnYWN5LXRydW5rCisxNzczMyA3OTg2YTQ1NTM5MzBiMjYzMDFlNzBjMGRjNDhjM2E4ZmJhNTYyZTY3IGxlZ2FjeS10cnVuaworMTc3MzQgNjhlMjNmMWZmNWRiN2EyODhjM2Q2ZmVkNmQ5YTliY2E5MTg4OTIzMyBsZWdhY3ktdHJ1bmsKKzE3NzM1IDI4MDk2NjJhZTljZTE4Mzg0ZTdjYWM2YjdjZDdkNThlNzkyODFhYjAgbGVnYWN5LXRydW5rCisxNzczNiAzYTU5YTA3MzNkZjhjMTZmYTNlMTZjOTllMGFjNGVmYTA0ZGE2YThjIGxlZ2FjeS10cnVuaworMTc3MzcgNWQwODkwOTVmNDBmNWNlNjVkYjBjZDQ2N2U3NzFkMWU4ZTg3YTIzOCBsZWdhY3ktdHJ1bmsKKzE3NzM4IDUyOGI1MmJkNGJjMzJlZDIzZWJlZjM3NzBiZjZiOGQ0NGVjYTAxZmUgbGVnYWN5LXRydW5rCisxNzczOSBkNmJkY2IwODk5ZGRhOTBkZjMxMTljNmIyZjYyZmI2OWNhNWYzZTM4IGxlZ2FjeS10cnVuaworMTc3NDAgOTY4YWU1NWZlNmVlYWIyOGQwZmM4ODJkMWE3MGNmZmU2MGNkOGJjZSBsZWdhY3ktdHJ1bmsKKzE3NzQwIDU1YmJhMTk3ZDQ4NzBjZGFlNjJhZWNhMDBlMjAyNDBhNzU2Yjg0ZjggbGVnYWN5LXRydW5rCisxNzc0MiBmNjU3OTMwZmQyNzRjM2I4MWYyZGE1NDA4YzA1MDUyMmJmZTk3MmQxIGxlZ2FjeS10cnVuaworMTc3NDMgNGZkZjY2MDBkOGFhNzAxMGMyOWZlMjQ1NjY1Y2ZkNDM0MzBlN2I0YSBsZWdhY3ktdHJ1bmsKKzE3NzQ1IDY1Mzc0OTAwM2RiOTc2MzkwMmNjODIyMWMzNjg1NjcyYmNmNzY3MDMgbGVnYWN5LXRydW5rCisxNzc0NiBjN2Y1NTU1MWZlMzFiY2NjMGIxYmEzODdkYWYzZTllYjAxODM5OTY0IGxlZ2FjeS10cnVuaworMTc3NDcgYWZkN2VjZTM3YzQ2OTVlZTY5ZjU5Y2JlNjIwNzk3YTljODM1OTQxZCBsZWdhY3ktdHJ1bmsKKzE3NzQ4IGU0NjQxZDE5MzIyMGYzODZjMGQ5N2E3Mzg1Njc0ZDg4ZDE3N2U4ZDMgbGVnYWN5LXRydW5rCisxNzc0OSAxOTY3YmUxMzU5ZWU1OThiYTkzOGQxMWI4ZjFlNjVjYTUzNjE4N2Q0IGxlZ2FjeS10cnVuaworMTc3NTAgODM0MDYyZjY5NWUwZjIxYzc0YjkwMTdlYTkyNjYwMDRhNzc1ODNiOCBsZWdhY3ktdHJ1bmsKKzE3NzUxIGRlMTg5MmVhY2NmZmFjYWJlZWMwODg5MDU5ZmU4ODkxZjcxYjZmMTcgbGVnYWN5LXRydW5rCisxNzc1MiA0MjBkM2M1N2VmZWM3Mzg3NGVkYTdiMmRmMDE5NWFiNTY2MDA5NGM1IGxlZ2FjeS10cnVuaworMTc3NTMgYWQ5OGMxMzY0NzVlN2IyMzczMmI5YmQ4ODdlZGNlOTE3M2Q1ODAzNiBsZWdhY3ktdHJ1bmsKKzE3NzU0IDQxMTFjZjIyYTBhZDk0MWNhMmU0NTI4ZDllZjk1MDQzNDRmYzgwNDMgbGVnYWN5LXRydW5rCisxNzc1NSA0YmVhNGY1OWM0ZTQzYzljNWM0YTYyNjUzYjhmZTQwZGZmN2VhZDhlIGxlZ2FjeS10cnVuaworMTc3NTYgNjA2YTgwODM0YTg2MjIzOGM3Y2E5N2NlNWE1YmI0NGE5MzYzYmYzZSBsZWdhY3ktdHJ1bmsKKzE3NzU3IGY5MzJjMTI4Mjc5YmNmM2ZjNDc3NzZmNzA4Y2RkNDdkZGY0ZDkyYmYgbGVnYWN5LXRydW5rCisxNzc1OCAyOTFhYmViZWE1NWIyZWQ3YzQwOGUxYTA5ZDU3NjQyOTY5ZGJmMDkwIGxlZ2FjeS10cnVuaworMTc3NTkgZWM3NTZkNThlOGE3MGVmYTc3NWRiNGY1MzVlYTI3NjAyNzQ4MWVhYSBsZWdhY3ktdHJ1bmsKKzE3NzYwIGY0YTFkM2Y4ZjI2Mjg5NzcwM2IwNWYwZTVmYzc3YjhkYzY5MDNlYTcgbGVnYWN5LXRydW5rCisxNzc2MSBiMTVmY2U4NjhlNTBiNzdhMDY5OTQ3ZWY2MTJmYjhiOWU1NWNkMjcwIGxlZ2FjeS10cnVuaworMTc3NjIgNDU5NjdmZjFiNmRjMThlNTcxMGQwNjAxZjU0ZjZkZmM3OGU3ZTFkMyBsZWdhY3ktdHJ1bmsKKzE3NzYzIGEwYTEzZjEwY2U0YmY1Y2VjYzI1ZGNjMGMwMjZhMzUwYzg2MzMwMDQgbGVnYWN5LXRydW5rCisxNzc2NCBkMDEzOTRiMGFhNjk4ODBhNGI1ZDU5YTliZDhkYWE0Y2MwM2ExODEwIGxlZ2FjeS10cnVuaworMTc3NjUgOGY1OWJkOTU3OTUyNTc3NjhlOWNlZjI2MjcwMzdmYTZmN2E2ZWU5ZSBsZWdhY3ktdHJ1bmsKKzE3NzY2IDEwMTg3MjdmMzIzMTc2Y2FmZDBlMmVjOTFhOWEzZDIxM2ZlNjU4NjIgbGVnYWN5LXRydW5rCisxNzc2NyA2ZmIyYWY3NjY4OTJlYjg3YmJiM2Q2YzQyYzBlMjAyMWNhMmUwZmQ0IGxlZ2FjeS10cnVuaworMTc3NjggYWY4ZDc3YWE5MGY4ODU4NzBiN2Y0ZWU5MzJjZTU5ZTg3NDg2NTJlOCBsZWdhY3ktdHJ1bmsKKzE3NzY5IDJjZGY3YWM5MTYyZDkzNTA0ZGUyZWRlNjRhN2Y1ZThmNDJjYTQ2MTIgbGVnYWN5LXRydW5rCisxNzc3MCBhMDYyNzQ5YjgwZjhjNTAzZWU0Y2RlZTdlZjI4MjIxODBjYjkwOThhIGxlZ2FjeS10cnVuaworMTc3NzEgNzljZGVlZWVmYWZhNTc1NWU5MzEwYmM5ODZmMGM1ZThhMjQ0NTgwMSBsZWdhY3ktdHJ1bmsKKzE3NzcyIGVhMmJhOTEwZTVmMDVmZTZjYWNjYmMwNjYxYjI0MWIwYThjZWEzZTIgbGVnYWN5LXRydW5rCisxNzc3MyBhYWQyYjVhM2Y3YmY0YzM3YWEyMTdlMjVkZTRiNzZiMjQ0MDI4NTU5IGxlZ2FjeS10cnVuaworMTc3NzQgY2VmYjE5MTBhZDBkN2I4NGRmYjNmZDk3Y2FkNzRhZjg1Mjc5ZDgyZCBsZWdhY3ktdHJ1bmsKKzE3Nzc1IDkxNGFlN2Y5YzY0Y2Y3ZjAwNjE0YjM5YzcxYWVjMDRkYjY3MTRkOGEgbGVnYWN5LXRydW5rCisxNzc3NiA5NWIyMDAxOWI3MTE0NTRjNDc1N2M3Y2Q2NWJkNTcxNzFkMzIxODBmIGxlZ2FjeS10cnVuaworMTc3NzcgZmFkODI0N2VmMGE1MmRhNzM0YzcyODhmNWViOTAxZTQ5ZjJkYzVjMyBsZWdhY3ktdHJ1bmsKKzE3Nzc4IDNkYjhiODAzMWE2YTQ3NDQxODQwNTk4NDk3YmRjNmM5YjZkZjdiNmQgbGVnYWN5LXRydW5rCisxNzc3OSA5YTg3MDBmZGM1MmJlODA2MGYzN2RmOTdiZDc2NDNiMDllYjlmY2RhIGxlZ2FjeS10cnVuaworMTc3ODAgNzVmM2Q1ZTdiODljYTJlMTg1YWMwMzAxOWYyOTQ1MDlkMzM2ZjZmNSBsZWdhY3ktdHJ1bmsKKzE3NzgxIDE1MzU0MWY4MjRhMzYzOTY3OTI1NzZmMWUwYzY2MjY2ZjhkMWUyYzkgbGVnYWN5LXRydW5rCisxNzc4MiBiNGY3NDQ4MmY5YWZlMTA3ODAzMDY3YTdkZDA2MjA5ZmRlM2NlYmViIGxlZ2FjeS10cnVuaworMTc3ODMgNzZjMWU0MGM1YzVkZTkwNjFlNDYwYTZiOGFkY2VmZjllZGIyZjk5OSBsZWdhY3ktdHJ1bmsKKzE3Nzg0IGM4ZjIyZjE1NDk5ZjhiMTdkZTY0MTYxOTgyMGUxMDI5MmMyOTgxMGQgbGVnYWN5LXRydW5rCisxNzc4NSAyZWEyOTc4NjliMDI3MWUwZWI1MTkyOGU0Mjc1MjllMzAwNmY5N2NmIGxlZ2FjeS10cnVuaworMTc3ODYgYWYxZGU0ZjUwNTA4OWIzNDZjZDQ3ZmM4NWExMzNlY2I2ZTQ2NWJhMSBsZWdhY3ktdHJ1bmsKKzE3Nzg3IDU2MTBlY2QwN2RjMDM2ZTRhYTIxYjYxZWNhY2VmZGNhMTVjZWUwYjYgbGVnYWN5LXRydW5rCisxNzc4OCAwYzkzZDJlMjdhYzA3YzEzMDM4ZGNjN2ExNzgxN2U0MDNjMDFlMmFhIGxlZ2FjeS10cnVuaworMTc3ODkgODI3ZTlkMjFhNzgxNjRkZWZiM2M4YTVlZjcyNjg0MTliYWVjOGRkZiBsZWdhY3ktdHJ1bmsKKzE3NzkwIDcxNWEzZTkyNDczNzE4MjgwNmE5YjUwNzIxODMzY2VhMzVlMGIxNmEgbGVnYWN5LXRydW5rCisxNzc5MSAzZGE5OWYwYzE4NGYyNmJhNGNiZTlmZjQ4ODQ5OWQyOTIzOGE2NTE2IGxlZ2FjeS10cnVuaworMTc3OTIgMTM0ODg1MzlmMDJiZmUyOGJiYWFmMWIzZjQ3ZjkwYWZjNjZlNWM1OSBsZWdhY3ktdHJ1bmsKKzE3NzkzIDAxMWRmMjY0N2Y0MTNkMmQxNWRkODRkNzczY2I4MDQ5MjBmNTk0MGMgbGVnYWN5LXRydW5rCisxNzc5NCBmZDdmODc5YWZmODFjNWFiY2QzZDVhYmJjOTJiZmUxMTQ0YTExOGU0IGxlZ2FjeS10cnVuaworMTc3OTUgYzEyODc1ZGVmYzBlNGUzOTYwN2YzMDRlOGIxOTVhNTdiYmU5NWEwMCBsZWdhY3ktdHJ1bmsKKzE3Nzk2IDE2MjllZjczOGIyZjA5NjdmYjMzOTA0NDk5NTA4YTY4ZGRmM2NlNWYgbGVnYWN5LXRydW5rCisxNzc5NyA5Y2VhNGRiNDFkOWZhZmVlZDRmYzQzZjZjNjQ4ZTcwZGJiOTUxMmYxIGxlZ2FjeS10cnVuaworMTc3OTggZjljZjYxMTA5NmJmNTAyZjhmZDc5YjI1OTU1ZTg2MDBjMzM1NmZiOSBsZWdhY3ktdHJ1bmsKKzE3Nzk5IGUxNWU5N2E2YzE0YTgzNDY1MTgzZjdjOWQ0Y2MxNDQ3YjAyNmViZGQgbGVnYWN5LXRydW5rCisxNzgwMCAxOTkxOWUxNDZmZjhmMzFiNWUzZmJjYTljYjdiNmFlZGRmZTIwMTZkIGxlZ2FjeS10cnVuaworMTc4MDEgNzU5MmY3MjE5YjdjNmNhMWQxMTM1NzVmMjkxYTg5MmNmY2IzZjVhZiBsZWdhY3ktdHJ1bmsKKzE3ODAyIGE1OTYwMGE5NzVkMTI0NzBkMmVkODZmYzQ0NTI0ZTU5NDY4YmRmN2EgbGVnYWN5LXRydW5rCisxNzgwMyA5ZTQ0NWRkY2EyZDc0YTAwMTgyZWE5MjU5NjFjMGJlYzVjZGZhZTk1IGxlZ2FjeS10cnVuaworMTc4MDQgNzNjZWE1OTY1N2JhYmM3ZTYzZDZjZmI2ZTNkYjlmMjUzMzg3OTM3NyBsZWdhY3ktdHJ1bmsKKzE3ODA1IDdhY2I4YmJjMjE1YmI3MmEzMzA4ODYzMmJmZDk5M2U2YTgyMGQwYzUgbGVnYWN5LXRydW5rCisxNzgwNiAxNGI2NDdkNTUwZDM3OTMxYTkyMTA4NWM0NjM5MzYwMzI1MmNhOGViIGxlZ2FjeS10cnVuaworMTc4MDcgZjhiNTI2ZmMzOWY2N2ZkMjY0MTkxODI0M2U5ZWFlOTc4MWE2NWJhYSBsZWdhY3ktdHJ1bmsKKzE3ODA4IDAwNWEwYjRjMzgyZDM1ZjQ1ZGQ2YjJjMTIzNTdiMWM3NDQyN2Y2NzcgbGVnYWN5LXRydW5rCisxNzgwOSA2ZTcwNTI0NzM3Nzg2YjM1ZTI2MjlhZTMzYTg1M2EyMzI3OTgzNTJkIGxlZ2FjeS10cnVuaworMTc4MTAgZDllNjZhODNlNDMzODRhNjM0MWU3NjFhMDY1ZGIxMjBkYjJmN2FhZCBsZWdhY3ktdHJ1bmsKKzE3ODExIDM0MjQ5N2FkOGZlYzk3NjMyZDQwZTI5NjRkYWI1Mzg1MmFiMGRlMTggbGVnYWN5LXRydW5rCisxNzgxMiAxZjlkMjM3NzdmZDAxNzQ0OWViMjg5MTk2ZGM1NGFjOTFhYTE3OTBhIGxlZ2FjeS10cnVuaworMTc4MTMgYzc4ZTc2YTU3MWI2NWRiOTM5MmIyMDEyYjAyYmVmM2I3MTU5NmEzOSBsZWdhY3ktdHJ1bmsKKzE3ODE0IGRiMWNjZTFmZmI2MDgyNjgxMTUzYjYyNjMyNmQ0OGI5OTg5ZjhiZTkgbGVnYWN5LXRydW5rCisxNzgxNSA1MDM4NmM3M2JhMjI1ZDI5ODVmZDI2NTA2NDU5NGJhOWU0OWRkOGYyIGxlZ2FjeS10cnVuaworMTc4MTYgYjAzMWFiY2EzZTkxYWJlMDVkM2UwNjBiOWQ1MjhhMGQ0YTg0MTg2ZiBsZWdhY3ktdHJ1bmsKKzE3ODE3IDU2OTIxNGE0MTgyYzkzZTRmM2MyNjcxYjM5YjVhZmJhNzViZmUxYmQgbGVnYWN5LXRydW5rCisxNzgxOCBlYmFlYjE5ZTAzODA5Yjg4NjFjYmQyY2YxYjFkZWUxYTQ0MGRlNjRjIGxlZ2FjeS10cnVuaworMTc4MTkgOWMzYWVmYTVjZDdmNTkzMmFkMzRmNzgwNjM4Y2EyMmRlYzIyZDZmYSBsZWdhY3ktdHJ1bmsKKzE3ODIwIDczZDA5MzIyZjJjMzYwMDc1NDdmMTU2MGNhOTMzNzg0MTQ5ZDQ0NzEgbGVnYWN5LXRydW5rCisxNzgyMSA1NGVjNWVjMzIzNTJmMGVhODdiM2U0OGFhYThiNDkwMTRkMjI1ZTEwIGxlZ2FjeS10cnVuaworMTc4MjIgMWFhMzcwMDhmZDJjODI1ZTEwYWI3ODQyNTIyZDAzMDJiMTRlNGI1MyBsZWdhY3ktdHJ1bmsKKzE3ODIzIDkzMTRjYzc5ZDZlMTJlN2MxZGFmZGVhNjU0NDFhMTJjNjljNTZjMjggbGVnYWN5LXRydW5rCisxNzgyNCAzMTRlYjhmN2FlMTM1MjlhNTc4ZDZjYmNlODEyMDg5ODQ3ZTcyYjMyIGxlZ2FjeS10cnVuaworMTc4MjUgNTMzNjk0NmI2NDk1YTE2NDBlYmIyZDBiNzk2ZDQ4YWM0ZDc4NjkzMiBsZWdhY3ktdHJ1bmsKKzE3ODI2IGI0MTEyMzhkZTlkMTBmMTJhMTgyYmU1ZDNiNWFmN2IyZjY4ZjRhZjQgbGVnYWN5LXRydW5rCisxNzgyNyA2YWY5YWExNTY0N2Y5OGY3ODc0NzE5ZjhiMGU4OWE0YjQ2YzQzOGExIGxlZ2FjeS10cnVuaworMTc4MjggMzJkMjYzZDQ0N2I3ZTEzYTc2YjViYmEyMDgwMzI2Mzc3ZjAxZTc5MyBsZWdhY3ktdHJ1bmsKKzE3ODI5IDNlZWNkYTJiYTkzYTM4NDY2NjIwMjc2NWEwNGFmMGY3OWUxNzQ2NzQgbGVnYWN5LXRydW5rCisxNzgzMCA0OGI0NWEyODEyNzcwMDE2MTg0ZGRmNGVlZjUwZTZmNDA3OTU1MTQ4IGxlZ2FjeS10cnVuaworMTc4MzEgYzc5MDczNzlhNmJkMjI4NTNkMDY3NDRmZGQ5ZmQxYzhlNDFkMTI2ZSBsZWdhY3ktdHJ1bmsKKzE3ODMyIDI3ZWFiODAzMjc2NjJhN2VlNTVkZmYzYjExMmRmOTg2Yjc3NTU3MDYgbGVnYWN5LXRydW5rCisxNzgzMyA4MzliYTM1YjBhYTMxNDQyODVlNDE5MjAyNWM2YTAxMTc4ZGMxMGQ5IGxlZ2FjeS10cnVuaworMTc4MzQgYjAxMmFlYmJiZTUxNzhmYTBkOTFlY2IxNTBkZTRjM2ZjZDhhYmI4NyBsZWdhY3ktdHJ1bmsKKzE3ODM1IDE3NGQzNGVhYzUxNjNiOWM5NGMxMjI3N2VlM2VkNDAxYzlhMmY3YmIgbGVnYWN5LXRydW5rCisxNzgzNiBlNzlkMDdjMjQ1NzFlMzhlMjE5OWM3ZTliZjJiNjQwMjljZDA3ZDBhIGxlZ2FjeS10cnVuaworMTc4MzcgMjZkMmU0ZjU4YWRjYTk3MGJkZGY5OTg0NDIzY2QzZjQ4ZGE1NTBiYiBsZWdhY3ktdHJ1bmsKKzE3ODM4IDgyMTIzY2UwMjY4NGZlMjUwMWZkYmEyNWIzMTA3Njc0OWJiN2FhOTMgbGVnYWN5LXRydW5rCisxNzgzOSAwZmE1OGZlYTMwY2YyMTZjMjM3ZjJlZjJlY2U4YWU5MWRiMjBhNzUyIGxlZ2FjeS10cnVuaworMTc4NDAgYjYxY2QxYTQ4OTYwM2JjNDc5ZjZkYjJlNzZjZWQzZmI2NWFjNDRlZCBsZWdhY3ktdHJ1bmsKKzE3ODQxIGVjZTZjMTllZGNjMTU1YjRmZjdjNGJmZTY1ZTc0MmRiNTgwYjljZmIgbGVnYWN5LXRydW5rCisxNzg0MiAzZmM2YzVhZGRmMWVjMWFjMjU2M2YwYmZjNTk0NDc4NjdlNDY3NDIzIGxlZ2FjeS10cnVuaworMTc4NDQgYTlkMjRhNTNjNTUzMzRkYTIyYWFiY2IwNjdlMTcyYTU3MzdiOThkNiBsZWdhY3ktdHJ1bmsKKzE3ODQ1IGJiZTA5Y2NjYjQ5YmUwNzA0ZjA4MDA2MWVmNGEzYjg5OWNhMDNkYTMgbGVnYWN5LXRydW5rCisxNzg0NiBlODU3NTRmYTY5MTc0ZmE3MmVjNjE0YjE3MmFjYmEwOWM1MmYwMWM5IGxlZ2FjeS10cnVuaworMTc4NDcgMmI0MjM2NTgwZTBjNGZiYTBlNmY2Zjg4M2ViMWFmMWM5NThiYzA5ZiBsZWdhY3ktdHJ1bmsKKzE3ODQ4IGJiNmNjYTU3ZWI4YjBjOTRiMTY2OTlkOGNiZTQ5ZTQ2ZjUyOWMzZmUgbGVnYWN5LXRydW5rCisxNzg0OSA1ZDQxY2E0OWExMGFkYzJlOGNiMmU5NjhmZjEyNDk0ZDlkYjY3YmQ4IGxlZ2FjeS10cnVuaworMTc4NTAgNGM0OTM0Y2E4NTc5NjIwZTIxYjgzMjdjMGZjMzMyNzJjY2Q0N2E1YiBsZWdhY3ktdHJ1bmsKKzE3ODUxIGZhNWM0ODIzNjdjN2FmNTAzOGRlYmVmZjZlN2M4NDdkM2Y3OTMyZjYgbGVnYWN5LXRydW5rCisxNzg1MiA3ZjRlMjgwNDVkZmI0NTg0MTI0NjI1ODFlNzQ4ZGM2OWJiOTVkMzc5IGxlZ2FjeS10cnVuaworMTc4NTMgZWVjMmViMTIxZGFlMGNjMWQwYzgxZjQ2OTM5YzVmMzkwNjRhN2Q2NiBsZWdhY3ktdHJ1bmsKKzE3ODU0IDVlNGVlZDA2MmI1NGE5ZTZmMjM4MDAxYzI3MDJkNjZhMmY5OTUyNmQgbGVnYWN5LXRydW5rCisxNzg1NSAwYzViMDJjYzU0ODkzOTJhMmNmY2JmOTBiMjc5YTVhZDA0NGEwM2ZkIGxlZ2FjeS10cnVuaworMTc4NTYgYzE2YmRmNTU1Yzc5NzgxMTA4ODc5NmMyMjFkZjcxYzBiZTI5ZjcyYyBsZWdhY3ktdHJ1bmsKKzE3ODU3IDFhM2I1YzhkNjczMGQ5Nzk3M2Q5MDJjODAyZDA5M2VkYzZlZjZiNWYgbGVnYWN5LXRydW5rCisxNzg1OCAwYTk3ZjVkZGUzYTc4ZGM3YzM3MzliZjgyYzM4ODQ5MzI0OThjYzk0IGxlZ2FjeS10cnVuaworMTc4NTkgYTM0OWI4OWJmMTBlZTVkNTFkN2IyYjI0NDc3YmEzMDM4YWFiMTk3YiBsZWdhY3ktdHJ1bmsKKzE3ODYwIDlkNTE0MmM4Y2YyZGRkZDk3MzhiZDRmNDU1NjhmNzNmYmNjNTc5ZGQgbGVnYWN5LXRydW5rCisxNzg2MSAwMDMyZGZmZWIxNjNiNGZhZDgyNWE4MjE0MzkyM2FjNDE2MDAwMzhmIGxlZ2FjeS10cnVuaworMTc4NjIgZGRiMjAxOTA1OTFkYmJmMTZmNTIzZWYwNWY4ZTZlODc1ZmY5MTM3OCBsZWdhY3ktdHJ1bmsKKzE3ODYzIDBjZjUxMTFiZjA5Y2IxYmYxNzA1MGVmZWYyMjlhZWUxOGQ4YzBiZjAgbGVnYWN5LXRydW5rCisxNzg2NCA4YjZmZTZiOTk3YzJkYjdiNGEzOTEyY2ZmZjg3NTM0NmZkMzMxYTcwIGxlZ2FjeS10cnVuaworMTc4NjUgY2I0YjJhMTZlYjg3MTI1NTk4OGVmMTYzMGRmZWM3ZWFhM2RkZmY2OCBsZWdhY3ktdHJ1bmsKKzE3ODY2IGFhMDUyYTUyZWY4NzEyZjA4NWY2ZWY1NWRmZjg1ZjVjZWExYTg0MzcgbGVnYWN5LXRydW5rCisxNzg2NyA5ODQ3YjQ4NmQxNWZiYTgwOWY0N2YzMDQwZmFhODY4YjNhNTMwYzlmIGxlZ2FjeS10cnVuaworMTc4NjggYzVjZjZmYmE1NGRkYjhiNzM2NjI3MjMwZjBmMzNmMWU2Y2FlZGZkMyBsZWdhY3ktdHJ1bmsKKzE3ODY5IGRiM2E5NTc4YWIwYmVmY2ViYzM5YjQ3NGVjN2QyZTcwZjIzZWRlMTEgbGVnYWN5LXRydW5rCisxNzg3MCA2YzUxYjVhZjFiZGUxMzA5NjIwZWVjYTk2M2RiYmMxNmMwNWVhOGU0IGxlZ2FjeS10cnVuaworMTc4NzEgMjViYzE2OTUyYTI0ZTU0NzdiOWI4NDQ1MmMwYjcyODhlOGYyZTAzYiBsZWdhY3ktdHJ1bmsKKzE3ODcyIGIwZDFkZWMyMzUzYTQxMWFlY2Q5Y2IzMzM0OThlZDk4NTBhYjNhYzIgbGVnYWN5LXRydW5rCisxNzg3MyBkYTNlOGM1MDY0Y2FmM2JkMjJiMWQxM2RjZmNmYTdlODg5NTIwMGExIGxlZ2FjeS10cnVuaworMTc4NzQgZmI3YWM4YTQwYTk3YzI0ZTBkYTNjMjdhNWM1NDYxZWZmN2U4YWE3OSBsZWdhY3ktdHJ1bmsKKzE3ODc1IGMyODVkZjE1YTA1MDM4MzAxNTlkZmU0YjcwZTkyYzM0NThmYmViM2IgbGVnYWN5LXRydW5rCisxNzg3NiA5OGIxZmE2YzE2MDAwZTdhNGYzNTQ4MTNjYzc3YzkxODhhYzk4MzhlIGxlZ2FjeS10cnVuaworMTc4NzcgYTZkMzVjYzRiZjVlZTVkODMyMTc0YmIwNmFkNGVlYTI2NDZkZDQwOSBsZWdhY3ktdHJ1bmsKKzE3ODc4IDQwNWFkMGE3ZjdhNjEwOTllN2JiZDhjNTc4N2Q2YWNkYmYwMjk1YTYgbGVnYWN5LXRydW5rCisxNzg3OSBmMTJkMzVmOTk0ODg1NWZjMzRjOTY1OTdkNGJhMzRiZjI2OTI0YzIxIGxlZ2FjeS10cnVuaworMTc4ODAgMzdiMWNhZWVkNzA1NTdhNTkwNjMzMmY2MmYxZjZlZDQ1OTgyZTMwYiBsZWdhY3ktdHJ1bmsKKzE3ODgxIGRiOTEzNWYzODA2ODlhMjNlYTAwMjQyM2YzZTUxZWZlM2JlYzFjMDIgbGVnYWN5LXRydW5rCisxNzg4MiAwYmIzNDg5ODZkNTI4MWIyZTNkOTY2OWNlNzUwYmUyY2VmYzU5Yjk2IGxlZ2FjeS10cnVuaworMTc4ODMgMjljMmQ1ZTUyMTYxMmI4MTIzYjZjOTRmMjE4YzhjMzk1NGE2NzVjNSBsZWdhY3ktdHJ1bmsKKzE3ODg0IGIzNjhlMDZhM2I2Mjc1ZTkxNDY1NjkyMmEzNjc1N2M2NWNlNjA0NzggbGVnYWN5LXRydW5rCisxNzg4NSA1ZmZhNTE1ZTYyMGU0ZDc2NDQ4NTczNDI0NTZlODZlYjVkNDJkNjg1IGxlZ2FjeS10cnVuaworMTc4ODYgMjVmMTA5MmVjZDg2ZDU0ODBmMjg5MjQ4ZWIyNDM5Y2FlZGVlMDRjNiBsZWdhY3ktdHJ1bmsKKzE3ODg3IDUyZWI0OTlmMjViMDlmZDU3YmU1MDg3YzMyOWRlNzZlMDgyMzQ2ZjUgbGVnYWN5LXRydW5rCisxNzg4OCA3YTVjMzg1OWEzNjEzOThmYTE2MmNmYWYxMzBlZjAyMTZlNDkwMjE4IGxlZ2FjeS10cnVuaworMTc4ODkgOWJjNTI3MDZkMjgzNGY3YThjNTM4NjllMzI4YTlkNGU1NzgxODk2MSBsZWdhY3ktdHJ1bmsKKzE3ODkwIGNlNWRmZjMwYTkzNWQxOWYxOGVkZWI0MmU0YzE5N2JjMzljYjcyZmIgbGVnYWN5LXRydW5rCisxNzg5MSA2YzkxYTA0MWMxZDJiMmM5NWZlNmVmZWRiZjA2MDc5ZDQyZjc1NjYzIGxlZ2FjeS10cnVuaworMTc4OTIgOTRjMDMxZDdlOWMyZTgyODllNGExYmYzMzQxNjY3YTkzZTJiYTYyOSBsZWdhY3ktdHJ1bmsKKzE3ODkzIDg5NGRjYTIyNWQyNGFlYzI4NTljYWU5ZDI1ZmEzYmJhMmI1NjZhNDQgbGVnYWN5LXRydW5rCisxNzg5NCA2ZTlmZjA2MGE3Mjg4Mjk5Zjk5N2UxNzI0M2JjZDIzZWRiZjljYWM0IGxlZ2FjeS10cnVuaworMTc4OTUgYzdkNDZlYWU5NWQ4OThkODgwNDhhMTRkZmRlZTBkYzgwMGVjOWIyMSBsZWdhY3ktdHJ1bmsKKzE3ODk2IGU5NzEzY2JlMmJhOGQzMDdkNDk3MWZmNzljMDY3OWVlNGVjMmMzOGEgbGVnYWN5LXRydW5rCisxNzg5NyA5MjFjNzQ1OTc3MWI0MTJlY2EyNGVmYTgxYzMwMDBmNTZhODRmZGNmIGxlZ2FjeS10cnVuaworMTc4OTggZDEwNmRmZGZmNDgwYWViZjFhMzU5YzY5YTNiOWI3MmRmMjI0ZDRkOCBsZWdhY3ktdHJ1bmsKKzE3ODk5IDdlZWZkZTkwZWMwZWU0YjRjZTFmNDkwODQzODE1MmVjODI4ZTgwMzEgbGVnYWN5LXRydW5rCisxNzkwMCAyOTNjYWYwZTYzMmExNzQ0OGIyNmMxM2I1YTFjMTdhYTlmNzdkMThhIGxlZ2FjeS10cnVuaworMTc5MDEgYzBjMjU0ZmJkZTU3NmJjMDE5ZGRjOGMxNTE1YTM1MjQ4MmJlNDRmZSBsZWdhY3ktdHJ1bmsKKzE3OTAyIGRhZTdjZWY1OGFjMjZhZGRjMjEzMDUxMDg1ZDZhY2ZiZDgwMGVmNTYgbGVnYWN5LXRydW5rCisxNzkwMyBjOTBjM2FhYmQ4ZjUwMzZhNWY4MTg3ZTE3MjA1MWVkNDhmNDM2MjdiIGxlZ2FjeS10cnVuaworMTc5MDQgYzY1NGIyMDE4NDAzOWM4OGM1ZTcwNzAwZWEzZjI2Yjg2MjY4MDZlOSBsZWdhY3ktdHJ1bmsKKzE3OTA1IDQ1N2YwZGY0NmRkOTgwNTVlYjhlYWQwMDFlN2FmNjBlYzNkNmY4NTQgbGVnYWN5LXRydW5rCisxNzkwNiAxZGQ3MmE5MmU5MjJjMzVhZDNkYzVjZmFhMmZjZWUxYWFkYzk5ODZjIGxlZ2FjeS10cnVuaworMTc5MDcgNDNjNDlkYmQ0NTQ2ZThlY2FkMTQ5MGMxZDIyMjgzMmYzYWQ5NTgxZCBsZWdhY3ktdHJ1bmsKKzE3OTA4IDc4YmNhZTc3ZThjNzAzZTg2NmJhYTkzNGJkZDg4ZmUyNTQ2YWE3ZDEgbGVnYWN5LXRydW5rCisxNzkwOSBmY2Y4NWM5MGEyNzQwYmZjNmZiYzFiNjQxNjMyNzZlZWVmODUzYTRhIGxlZ2FjeS10cnVuaworMTc5MTAgMjU1NzljZDZjZGQ5MDM4MDdmZTQ4Mjk4ZjlhYzgzODc5MWMwZWQxYSBsZWdhY3ktdHJ1bmsKKzE3OTExIGJlNGZjOGI2ZTFjYjgzYTAzMDYyODZmODFkYzE4M2NhMWRlM2Y5YzQgbGVnYWN5LXRydW5rCisxNzkxMiAwOGU2ZjEwMTkxNzE0OThiMDRiNzgwM2Y0OTIzZjE2Y2E0MjQ5ODJhIGxlZ2FjeS10cnVuaworMTc5MTMgNjI3ZmY1NzhmMTJmOGY4NTE5MmYxNzMyYjk0YjQ2OWU1Njk5MDU1NCBsZWdhY3ktdHJ1bmsKKzE3OTE0IDQxYmZjOWE0MGZlMzk0OTZiODM0ZDIzNTU5ZDZjODE4ZWRlOGY4MzAgbGVnYWN5LXRydW5rCisxNzkxNSBiZjI3Y2FiYTNkMGU0MDkyMzE4NTk4YzQzM2QzNzU0NDJlZjllYTk2IGxlZ2FjeS10cnVuaworMTc5MTYgM2EwNGJlYmI2NjZhZWIwZTBiY2U4ZmRjZjEwZTc5NTRiMGEzNGM4NCBsZWdhY3ktdHJ1bmsKKzE3OTE3IGFjYjg4NjA3YjRiZDdlOGJjMGRlNDJhNGY5ZmJjYmUyZDdhMGUyOTYgbGVnYWN5LXRydW5rCisxNzkxOCAxNzdhZTFjNTIwMzc2NTAyMDZhY2RiNTdlMzQxMzRjOTk2MDc0YjdiIGxlZ2FjeS10cnVuaworMTc5MTkgMTAzNjEyNTE2YWE4ZDM1ZmNkZGVhMGZkY2Q5OTllYzdkOGQ5MDQ2MSBsZWdhY3ktdHJ1bmsKKzE3OTIwIDY3NTc0ODM3OGM4MTk5ZDk3NDliNTRhODkxY2VmNzE3ZDI2ZjNjZTEgbGVnYWN5LXRydW5rCisxNzkyMSBmNzgwNDY5YTk1NzdmOTVjOGM5NzVmMTIxNGMwMzBlOTg4NjkyMWZhIGxlZ2FjeS10cnVuaworMTc5MjIgYzA1OGJjMzU2NDBmNzhhZTg4NDBkYjYxMmYyYTliYjkzYmVkODdjYSBsZWdhY3ktdHJ1bmsKKzE3OTIzIDExOGFjODVhZjMwYTA1YzRiYzEyMTcxYWNiNmNkOGQzNDI4MWM4ZmMgbGVnYWN5LXRydW5rCisxNzkyNCAxODc5YTQ4YTMxMzM2YTRlYjRjZDI1ZWQ3OTFhYTQzMDE0NjVlZThiIGxlZ2FjeS10cnVuaworMTc5MjUgNjkwYjQxZDQ3YzFkNmFkNTY1ODZmZGE2Njg5YzkzYjAyMDAyZmM0MiBsZWdhY3ktdHJ1bmsKKzE3OTI2IGE1M2YxNmIyMGYxZDkxYmQ5ZGIwMzMzNWI4OTA5NmRkZTFhMzE4NDUgbGVnYWN5LXRydW5rCisxNzkyNyA1N2ZlYTg3MDk3NThmMWYzN2ZmODBiMTRiYTgxODQ0MmYzNWM2YjYzIGxlZ2FjeS10cnVuaworMTc5MjggNzFhNGFhZGRlMDE5OGI4NjZhNDYwNmYxYzczYTYxZjU1NzJlN2E3MCBsZWdhY3ktdHJ1bmsKKzE3OTI5IDYzZDIzN2EyNWY0OTFlMjY4ZWNhZTc2MjRkODQ5YzZkODhlMjUyNDkgbGVnYWN5LXRydW5rCisxNzkzMCBiMjVlYWJmNjZkOGQzNzVjNDU1NTI4MjNiNTFiNzU2NDg4NjQ1ODU3IGxlZ2FjeS10cnVuaworMTc5MzEgN2NlOTA2MWY3OTY3ZmZjNzMyNTI1OTU1ZDNhNDdlY2ZmOWZlMTE1NSBsZWdhY3ktdHJ1bmsKKzE3OTMyIDc3ZDFkNzlhNjVkNzVlODRhODQ3NzNjMzdkODFjMzJmNTBmZmZlYTcgbGVnYWN5LXRydW5rCisxNzkzMyAzMTQyMDI3YjU5NzlkYWVhYmQ1MjYxNzUxNWY0MTg0YjkxNTc2YTI2IGxlZ2FjeS10cnVuaworMTc5MzQgYWQ4ZWYxNTVjYTM5MGU4YTY4MTAyMmFlMzExZDQzMzhkOGJhYWIxYiBsZWdhY3ktdHJ1bmsKKzE3OTM1IGRjNGNhZWRjNTk2MTFiMTcxYjE0OTc4YzE2YTZhZjFkYjcwNjI2NDEgbGVnYWN5LXRydW5rCisxNzkzNiA0N2U2ODA3NzExN2U0MjExNTA5ZGMyODNhM2U3NjdhMTIzOGU1ZjUwIGxlZ2FjeS10cnVuaworMTc5MzcgY2RmZWMzNmYxMmNjOWZhMWI4ZTlkYTVlYWE1NjBhODY1NzkyZTliZCBsZWdhY3ktdHJ1bmsKKzE3OTM4IDBlMGVhNTZlNGJlODRjMDQ4ODIwYjEwMjg2NWMyYTA2ZmRmYWJmYzUgbGVnYWN5LXRydW5rCisxNzkzOSBhMTE5ZTBjOGI4MGIwZTRkMTk2M2JiMzM0YzYzZWEzODJiN2JiMjkwIGxlZ2FjeS10cnVuaworMTc5NDAgYzJmMTNjMzk1YjlhZTdmODg1ZmM0N2E4MTZhYWIwNmYzMjg4ZTFlMSBsZWdhY3ktdHJ1bmsKKzE3OTQxIDAyYWQ5Y2I1MjIyMjc4MzA2YTU3ZDg3MzdiZGQ5MmM1ZThiYzFkZmEgbGVnYWN5LXRydW5rCisxNzk0MiA5YmU2N2M1YTgyM2FiMWRhMWM5MzIwYTYxMWFjYzUxZTNlNzMzNDZmIGxlZ2FjeS10cnVuaworMTc5NDMgZjlkNGJkNzliNDY0ODBjMTRhYzRhZDdhMjc3MjMwZTExNGEzYWMyMCBsZWdhY3ktdHJ1bmsKKzE3OTQ0IGYwOWE4NGFmNjRiZDg2MzIwMWJjYjY1ZmZlYmY2MDlkNmNkMWExMzYgbGVnYWN5LXRydW5rCisxNzk0NSBhMTNhMmFjYmUyMTRlZjhmYzA2YmEzNWUzODAwYTNlY2MzNGIxNTlmIGxlZ2FjeS10cnVuaworMTc5NDYgMWE2ZjkxNTg2MzBmMWQ2ZWZhOTViZWQ4NzBiMDkwNmU0MDViYWE1MiBsZWdhY3ktdHJ1bmsKKzE3OTQ3IGQwYTZkNDQ0ZDZiYzc3YjE2ZDg2NjM3YjM2YmExZTVmYmI2NTJhOGMgbGVnYWN5LXRydW5rCisxNzk0OCA1ZGE5NjIyZmVkN2I1NDc0YjVkYzRlOTFiYzdiNWUyODdjNDdjMGNkIGxlZ2FjeS10cnVuaworMTc5NDkgNDFjNDJiMWJkNTgyOGI5NDg4ODBjOTVjZTc3ZGIyNjA0YzBhYjY3YSBsZWdhY3ktdHJ1bmsKKzE3OTUwIDQ0ZmExNmYwMWI0ZTEyMjlhY2MzZDI0NTZlYzY3YzY2NDg5NmE2ZWMgbGVnYWN5LXRydW5rCisxNzk1MSAxYjM0YzQ3NWRhODdmYWUzZWE4ZDVhNTQ2NjQ3MTNlYWZkNzM4NzZiIGxlZ2FjeS10cnVuaworMTc5NTIgZWMxZjIzNjViYzJkNTdiMTFlNjBjMjU1NWRlNzJkNzc3YWU2MDYxYSBsZWdhY3ktdHJ1bmsKKzE3OTUzIGMxOTk0NjBjY2RlOTA2NjAzYzkzMjZiODAzODE2MDg1MTg5MTYzOTIgbGVnYWN5LXRydW5rCisxNzk1NCA5NWJlNDNkMWQzMzI2NTcxOTM2ZWRlNTk3NGE5MGVlMjA3NTFhNjZlIGxlZ2FjeS10cnVuaworMTc5NTUgNWZiOGRjMjg5ODEyZGY5ZWI0ZDY0NjIwMDk4ZTg0ZDIzMzBkMjAzMyBsZWdhY3ktdHJ1bmsKKzE3OTU2IDdkZTA4MDhmMWZlMzIwN2RiYzY1YTExMGYwYzYwNDY0M2UyYmVmZjMgbGVnYWN5LXRydW5rCisxNzk1NyAxYWNhYzQ3NTZhMDNiZWJhNDBmZmJkMjQ3NzBkODAwYTA0YWY3ZjgxIGxlZ2FjeS10cnVuaworMTc5NTggZjhlOTYyNTA2MDYzZGRhZjUwODBkMTM2ODY1ODE3N2U0NDNlMjliNSBsZWdhY3ktdHJ1bmsKKzE3OTU5IGEwMmY5ZGFjMjE2Y2Q5ODk0MjRmZjA5Y2Q5YzMzZmIzY2Y0NmY3YjAgbGVnYWN5LXRydW5rCisxNzk2MCA4YmZhOTcwM2E0ZTRmNDAzNzBlNWU5YTRjYzQ3NGJiNjgzY2JkMDQwIGxlZ2FjeS10cnVuaworMTc5NjEgYTVhOWNmYzAwOWI1YjNjMGFiOGIzZWRhOTE0ZGIyN2IxZGM2NDNhMSBsZWdhY3ktdHJ1bmsKKzE3OTYyIDI5MDA0NTIwMjZjY2Q1ZWUyMjI1ZGQ4N2Q4ZjFkZTgyYmJmNGY4Y2UgbGVnYWN5LXRydW5rCisxNzk2MyBmNzZhMWVjZDZiNTkxNmFmZTBmNTY1NmU2Njg1MjQ1ODhkMWFmNmE4IGxlZ2FjeS10cnVuaworMTc5NjQgNjY2MDkxZjBkNzE0NDcxYWVkNTVkODc3ZTMzODk1NjA1OTZiNGI3NyBsZWdhY3ktdHJ1bmsKKzE3OTY1IGQyYzE3YWRmMmYwYzQ1NTY5NTJiYTc0NDBkOTNlNzVlY2Q1YjA4MDAgbGVnYWN5LXRydW5rCisxNzk2NiBjZTA2Njc5OTEzM2VhNDc1MDU1ZjEzZTNkZTA3ZGU3NjAzYTJlYzg5IGxlZ2FjeS10cnVuaworMTc5NjcgMzA4MWQ3MDFiZTg2MTVmMzJjOWE4OTEwMjcwZDJkZDFlMWI0MDYxMyBsZWdhY3ktdHJ1bmsKKzE3OTY4IDE1NGI3MWUxNjU2NTAzYTY5ZThiMTNlYTlmMmRmNWY3MTA1ZjYzY2MgbGVnYWN5LXRydW5rCisxNzk2OSBhODA1NDEyNDViNjYzMjAwZDFlMmM4YzE4NGJlODZhMWNhN2U4YmM2IGxlZ2FjeS10cnVuaworMTc5NzAgZTk2ZDY2NGRlMjU2YWNiOWRlZDg2MDcxMzZiMmJmYmJkNDNkYmY5YSBsZWdhY3ktdHJ1bmsKKzE3OTcxIGM2ZDlhZmE2ZTZhMDVjNWU3YjM4NGQ4MmRkMjk1NmUwYzQ2NjJhNGEgbGVnYWN5LXRydW5rCisxNzk3MiBmYzY4NmRlODYwNTliODQ1NjBmMTRhODdiOWJjNDgyZDFkNDAyZTU3IGxlZ2FjeS10cnVuaworMTc5NzMgNGUxZTlmNWMwNzk1MDY4ZTQzZDJhZThmMmVhZTlkZjAzZmM2Mzk3NCBsZWdhY3ktdHJ1bmsKKzE3OTc0IDFjZDAyODVlM2NmZWQ4N2MyMTg4NzhlNmJkN2ZkNzIwNjU5YzI3ZDQgbGVnYWN5LXRydW5rCisxNzk3NSBkMTZiNzQxM2RjNjk2ZGY3NGZmOWVjY2E0YzJiMmE3NDc2M2Y3NzgzIGxlZ2FjeS10cnVuaworMTc5NzYgNjZkMjQ4MzI4OTY3MmQ3NWUyYzhkM2JkY2Q4OTM1YjhiZDJkNjYzNiBsZWdhY3ktdHJ1bmsKKzE3OTc3IGEzNThiYTcwN2U0ZDM1MWU1NDVkNGI0OWViNGNhNWUyZTliMGZiNTkgbGVnYWN5LXRydW5rCisxNzk3OCAwYzBlOTA5YjhlZDIzYWQ0MGQ2YjhkMmE5MmM5Y2JkOWI0Nzg2NzU1IGxlZ2FjeS10cnVuaworMTc5NzkgN2QwYWY0ZTgxM2Q4NWRlZWFiZmE4OTlkMzNiZDQxN2U3OTM1ZTI1MCBsZWdhY3ktdHJ1bmsKKzE3OTgwIGVmMWY0NzNhYWVlYmViM2YyZTY0Y2I0MmY4N2RmOTZjNTQ4OTZjMjQgbGVnYWN5LXRydW5rCisxNzk4MSAzMmI4YzVhNDgwYWRlMzVjZGI1NWZiNWIzNjkzZmQyZmFiOGRkMjZlIGxlZ2FjeS10cnVuaworMTc5ODIgM2FlOWQzMTNiYzMzZTBiNGZhNWZhZTY1NWE3MzIzYjM4YzI0MmM2NiBsZWdhY3ktdHJ1bmsKKzE3OTgzIDY4MDM0MjkyNTBlOWJkMDhmYzc1MGE5MTgyNjM2M2RiMGNhMjU4YTIgbGVnYWN5LXRydW5rCisxNzk4NCBmNzcxNDUzYzNhZjU4ODY0ODgyZmMzMzk3M2Q1YTlkMGY4NWNjYzVjIGxlZ2FjeS10cnVuaworMTc5ODUgZWJhMzIzZDc0MDdmYTEzNmViMmYyNGQzNjMwMjMzMzBkMThkODdhMSBsZWdhY3ktdHJ1bmsKKzE3OTg2IGNmMjY2MWE0NTk4ZWJiMjdjNjdlOWQ4MjYxMWRhODJiYzM5MTc0NzMgbGVnYWN5LXRydW5rCisxNzk4NyA3ZTZlNDBlNDFjNmU0YTdjMzY0NTQ1MTNlOTA1ZTJiNWU5NGZiMWI4IGxlZ2FjeS10cnVuaworMTc5ODggYjM5MTc5NDBlMWZhMWMxYTA0YTY5ZjFiOTUyNGFlMGY3ZWVlMGVhYSBsZWdhY3ktdHJ1bmsKKzE3OTg5IDM0YTZlM2VhZDFjMDQ4NTU3MGYyMmZiNDE1ODIzODcwODUyYTRiMGQgbGVnYWN5LXRydW5rCisxNzk5MCAwNTY4NmY5N2YzOGQyNDZkZDM0NWZlYWJiYzhlMzY1MjUyZDFjOWZkIGxlZ2FjeS10cnVuaworMTc5OTEgYTVjMzQ2OTIxOGU5YzQ1NGNiNWFlMjRkYjY2Y2Q2YmJkY2MyNWU5MyBsZWdhY3ktdHJ1bmsKKzE3OTkyIDlhZDA3NjRmMmU4NDFiMTY1OWJlNzY3MTcyZjQwODNkMmY4NDA3YmUgbGVnYWN5LXRydW5rCisxNzk5MyA5MTIwMWRlMjVmMzZkNjQ5MDI4NDA3ZTRkZDU4YmMwNDAwNGM4YWQwIGxlZ2FjeS10cnVuaworMTc5OTMgZTI3NjMyOWNjZTAzNmE1ZjllOWQzNDUxMjU2ZGNhNTk4NGU1NDNkYyBsZWdhY3ktdHJ1bmsKKzE3OTk1IGRhOTA2N2JjOTQ5NDI4ZjZkODg0OGJkNTE2MjRjYmNkYjk3ZWUyZDkgbGVnYWN5LXRydW5rCisxNzk5NiA1NzE5MmYwYWMxM2E3ZDZmZGY5M2Y1NmE4MTYwMjgwNWY1ODM1Nzc3IGxlZ2FjeS10cnVuaworMTc5OTcgZGQ0OWYyOWQ5ODc5NWUyNWQxMzQyNmJjMzdlMzAyMzQ2YjdlYzZjYyBsZWdhY3ktdHJ1bmsKKzE3OTk4IGZiOTk1ODkzM2IyNThiNTgzNmVhMzdjYTY2MTQ2Y2U3MzE3MmY5ZTMgbGVnYWN5LXRydW5rCisxNzk5OSA0MzMxODc0NjY5MDE2OWQyYjQ5NTQ0MjU1NzhjZTI1ZWIzMWJhM2JhIGxlZ2FjeS10cnVuaworMTgwMDAgNTYzZGVlNTk4ZDNhOWY0NjNkMzgzNjQ0MjdmZDNkZTllYTg0M2VjYiBsZWdhY3ktdHJ1bmsKKzE4MDAxIDc0YzAyMGFkZDg0NmVjNGI2NmEyMGM5YjgyOWM2MGFiMWVjM2E0NDAgbGVnYWN5LXRydW5rCisxODAwMiA2YjAxZmMyMmVmNmVmOGVkM2RmZTM5OThjOTA5NTBiOGUwOGYxYzg0IGxlZ2FjeS10cnVuaworMTgwMDMgYTE5YjFkNmE1OWNlMWM2OGU2MmFiYjNjNjViNTUwOGUwYzQ1ZWM1YSBsZWdhY3ktdHJ1bmsKKzE4MDA0IDVjZjBhMDJhNTc0YjExOTk5YmNlM2M3Mzc4ZWFiNWRlNzRkOTZjN2QgbGVnYWN5LXRydW5rCisxODAwNSA1ZTViNDMxMThjNTJkYTZmYzZiYzliZWU0N2IwMjRjNTIzMDFkNzVkIGxlZ2FjeS10cnVuaworMTgwMDYgYTJmY2M0ODdiOWRhMTg1ODc2ZmQ3ZTljZTAzMWFlYjE1YjZiZDM5MyBsZWdhY3ktdHJ1bmsKKzE4MDA3IGZkYzJhYmRmNDc3N2ViZDJmOGQ5ZGQzM2E2ZjlmYzk4ZGNlMGVlN2IgbGVnYWN5LXRydW5rCisxODAwOCA0ODZmM2ZmMTRkOTVhYzk3ODJhNTNjZWJlMTliMzVmZWEyZWYxZGY5IGxlZ2FjeS10cnVuaworMTgwMDkgY2E5ZjZhOGU5ODg1NzEzYmM3ZDgxOThmNjAyYWMzZDEyNWYzZjhhZCBsZWdhY3ktdHJ1bmsKKzE4MDEwIGVkNDlhNjc4NjllOWMyMGY0YjZjM2U0OTljZjY2NjNjN2RkMGI5YTQgbGVnYWN5LXRydW5rCisxODAxMSBlMTdkOGNkMDk2ODlmMDFhYjdjYWFjMmRmNmI0NjNmMDg3ZjRlNjM1IGxlZ2FjeS10cnVuaworMTgwMTIgMTczMDU5MWQ1ZDVkYThhMjUzYWJlM2NjMGY3Nzk2ZDAwNmRhODBkOCBsZWdhY3ktdHJ1bmsKKzE4MDEzIDc0ZjE2NWRjMGI1YWU3YjVhYmYyMDQwMGE0MmY1MzNjY2FkZDU1OTYgbGVnYWN5LXRydW5rCisxODAxNCBiZWNkOGExMjE0NjRmMzZhNGFhOWRiZDI3YTY3NGU4YTc3YzM2NzY0IGxlZ2FjeS10cnVuaworMTgwMTUgNDU5MjMyYTliODA0YzBhMGNmNjQ5NTdjOTIzYWU5NjE3YjgyNjQ0OSBsZWdhY3ktdHJ1bmsKKzE4MDE2IDdiMDdkNjJkMmM3OTYxZDQ1NGY2ZGUwNzg3MzQ0YzFmMzIwZTRmZTUgbGVnYWN5LXRydW5rCisxODAxNyBlNzE5NzFhNDAyZDMxOWFlZmM0ZTNjYWIyZWM3YTI3NjRiOTNlNjlmIGxlZ2FjeS10cnVuaworMTgwMTggM2MyMTA2NGU4MjE0YzI3ZGRlZTYyMTZhMjgwMzQyYzUxYjJjYjc0YiBsZWdhY3ktdHJ1bmsKKzE4MDE5IDAwN2E5MWQ3NzcwM2ZlYjZiYzJhNTY0ZDIzMDBhMzNiNTY5NGY2NTQgbGVnYWN5LXRydW5rCisxODAyMCBiMDc1MzU5ODAzMDE2NTQwY2ZiOTQyNzc4NDhlYWMwNTUwMWIwNGM0IGxlZ2FjeS10cnVuaworMTgwMjEgYTgwMDZiYmI2MjI1Nzc5YzNhMGQ3ZWJhODBmZTg4OTc1MGFjOGExOCBsZWdhY3ktdHJ1bmsKKzE4MDIyIDg5MzBlYzNiYzAwYTkxYjcyMmEyN2ZjNGZjYmQyODhhMWZjZTc1MDcgbGVnYWN5LXRydW5rCisxODAyMyAyNTc3NTE5ZDVlYTEzOTc0NmE2ZTI5NzBkMDRlMzdmMjhmMDhkNDM4IGxlZ2FjeS10cnVuaworMTgwMjQgZTYxZTY0ZDFiNWVjM2I4MWM3NDIyODM4ODhmYmRiY2JkZGZjMmQyOSBsZWdhY3ktdHJ1bmsKKzE4MDI1IGU1ODJmNTczNDNmNGQ1YzgzNzQzZGVjYjdiYTgwNDFmZDMyYmRiYzIgbGVnYWN5LXRydW5rCisxODAyNiAyZWRmMzY2ZjU2M2M4ZGI2ODc2YjIxM2E4MDE0MGM5MDk3ODA4YmE2IGxlZ2FjeS10cnVuaworMTgwMjcgZjYxMDJjNWQzZjljMmMzMmQ5OTlmYjM4ZGY1NWY5MzEyNDUxNjI1NiBsZWdhY3ktdHJ1bmsKKzE4MDI4IDA5YzdhYzE4OGNlMjE3OGI4N2IwNjUwNGIwZTRmZTU1YjNiYzRkYjkgbGVnYWN5LXRydW5rCisxODAyOSA4NWEwMmNjMzc1OTBhNmY0OTBkZDg4Y2JkOTg4NjA2ODk0NjViOGRmIGxlZ2FjeS10cnVuaworMTgwMzAgZDJmNGQ3NDhjOTIxZWJkYjA5MGYzMjc4ZGNhMTZiODRmNDg1ZWY5ZiBsZWdhY3ktdHJ1bmsKKzE4MDMxIDc0NGFhMDYyZjQ3MDFhNDE1NDBkZDQ2ODI3YWNlNWMyYWFlOTBiODAgbGVnYWN5LXRydW5rCisxODAzMiAzZWI4Njg3Yzk4YzZmN2MyYzRjYzc5MTI5NWI1Y2NhN2M1ZjM3YjU1IGxlZ2FjeS10cnVuaworMTgwMzMgYWIxZjkwZGQ1MDJmOGFhODU5MjAzN2RiNjc3NDNkY2YyYzVlZDc0NCBsZWdhY3ktdHJ1bmsKKzE4MDM0IGU3ODIzZjBjYTIxYTA2MTJhYTA1OTlkY2M4NTE2NWMzZDU2NjU0NzkgbGVnYWN5LXRydW5rCisxODAzNSA1MmQyZDM2YjhiZjdmNzg1NmVlYzc2NTIzMjY4ODRlMGQ1YzM0ZTBlIGxlZ2FjeS10cnVuaworMTgwMzYgMWI3M2IzNTE0YjU4NTVkNWVkNDdiNzIzODViMjM5NTc1ZGUwMmFkYSBsZWdhY3ktdHJ1bmsKKzE4MDM3IDAxNWRhMTNmMDAzOGMxNjZmMGU0NmViNzRjMTY5YjlmNjA5MTcyODQgbGVnYWN5LXRydW5rCisxODAzOCA1NDI3Mzg1OGVhZDljNjI1MTA1NGU5NTQ3N2FhNTQ3OTY3YjMyYjk5IGxlZ2FjeS10cnVuaworMTgwMzkgMmVkMzU4NDQ2ZjJmZTMzOTAyMzkxZThmNDgyMzU5ZmQyMTFlOGZlMSBsZWdhY3ktdHJ1bmsKKzE4MDQwIGIzMzg3ZWViYTY4ZGZlNGNhOThkNWY5MmFkMmQ0ZTIwZjM0MGY1ZTIgbGVnYWN5LXRydW5rCisxODA0MSA0ZDIxODcyNjRjZmE3YWQxMTMwMGNlOWVkODI1MzNkMDkxZTBhYzBjIGxlZ2FjeS10cnVuaworMTgwNDIgOWU5ZWUzYzVhNjA3OGYzYWVmYjEzYTU5ZTRjYWRiZjE2MWFlOTBmMyBsZWdhY3ktdHJ1bmsKKzE4MDQzIDEwMGJlZWJkZTlkZmY1NGQ0OGI0NTA1NTcxMjFhMjExYjQ3ZGFlMmUgbGVnYWN5LXRydW5rCisxODA0NCBiMjg5MmNiYzYzZGI3MzQ0MTgwY2I1MjcwMjU5MmVkNTZiNzk5NTNmIGxlZ2FjeS10cnVuaworMTgwNDUgNWFhOGM1YWFmZmFkZDY0MjQ1ZDQwOTczOTY3MGE2NjExNmQ5N2EyOCBsZWdhY3ktdHJ1bmsKKzE4MDQ2IGYwNDRiMDZlMzE3ZGFhMjQwMmQzNzlmNjQ4NGM3ZjE0OTBkNWE4ZjAgbGVnYWN5LXRydW5rCisxODA0NyAzMTljNmUzNzE4MjUxYzk4MzUzNDM2MTFmZDI3MzI4MGY0MGZjMTNiIGxlZ2FjeS10cnVuaworMTgwNDggNjU2ZDQzNDM4OGM4ZTIyODMwMjJhYzE0ZDk2ZDRjYjUyMmM0MmM0YSBsZWdhY3ktdHJ1bmsKKzE4MDQ5IGRiNGQ4MGE2NzM4OWEyMDYxZDFhMWEzZGUyMzA4YzM0MDAxMGZjMDQgbGVnYWN5LXRydW5rCisxODA1MCAxYzYzZTIyNGY2MTY2NDBjNjhlYTQ2NTljNWJkODdlODQ0ZTdhYWIxIGxlZ2FjeS10cnVuaworMTgwNTEgZTNkODM2NWVhMjMxNTEyNmU4MDNkNDkyZDdmOWQ4YTcwMWI1ODg5ZiBsZWdhY3ktdHJ1bmsKKzE4MDUyIGFmMDJhYzU4MDAyOGM5ZTVkMWMwOTJmMjAzNTJmNWNhYzRhMmZiZWMgbGVnYWN5LXRydW5rCisxODA1MyAzNzQzYTZkYmM0YTc3MmI1YjA4YmRjZDExMmIzODI3NWY4NmQ2MDkzIGxlZ2FjeS10cnVuaworMTgwNTQgNDhjYzc3YjYzYWQ1ZGY1ZGVjMGMzYjA1OTc4MjY5MTEzMTZjNGYzZSBsZWdhY3ktdHJ1bmsKKzE4MDU1IDIzYmYzMDg1OGVmNDUzMWVmMTQyNjJmOTA2MWUzOGU2MTdhNTM0M2MgbGVnYWN5LXRydW5rCisxODA1NiBkNDY5ZDE1NzIzZDM1ZjA1MmZmYjY0YzA0Y2RmYmI0ZTIwNGYyY2IwIGxlZ2FjeS10cnVuaworMTgwNTcgNzdlYThmY2VmMjRjYjM1NWIwYmUxZmQ2ODIwODM1ZTNmMWIxODQzNiBsZWdhY3ktdHJ1bmsKKzE4MDU4IGM1MGI3ODZlYmM0ODRiMjRmYjkwN2JmMjAxZDg3YTk5YWY1M2JiNDUgbGVnYWN5LXRydW5rCisxODA1OSA0ZWViMDI4MTdiNWQ4MGU0MTNiN2E2ZWFkYzViM2U1Y2ZiZjI3YWVkIGxlZ2FjeS10cnVuaworMTgwNjAgOWI3ZGRkOWNhZTMzZTI3NzFlOGQyNzJlNjM0MjU5ODk2MWViOTM0ZiBsZWdhY3ktdHJ1bmsKKzE4MDYxIDY0MTdjZTkxNGRhZTg3ZWRkMjg0OTE0OGFkMWY2YjQyMDk5ZTQwYjcgbGVnYWN5LXRydW5rCisxODA2MiBlMGE1ODM1YWY4MzM1MGEwNzg2MGFiN2UxYTc5Zjk1ZjQ5ZDA4YjdkIGxlZ2FjeS10cnVuaworMTgwNjMgMDRlNzZlMDhlMTBmZjQxZmUyYWVjOGE1NmJlYWU2ZmRhMzUxZGJhYSBsZWdhY3ktdHJ1bmsKKzE4MDY0IGM5NGYxYzc3NjE1MzZlYTcwNjMxNjcxZmMwY2UzOWMxZTEwNGRkZjUgbGVnYWN5LXRydW5rCisxODA2NSA3MDFhNTYxYmRlZmE4MTY0ODY0Y2FhOTI4MmE0YWIyZTVhODViYWFkIGxlZ2FjeS10cnVuaworMTgwNjYgNzgzOTY3YjE2ODc5YThhODRiZTU4YjE5MmZlMTZiOTdhZTkyMmE1OSBsZWdhY3ktdHJ1bmsKKzE4MDY3IDlmMzA3NzUwNmQxYTE2YmE0ODdiYzUxMGIwN2ZmMDFhMTZkOGRjYmQgbGVnYWN5LXRydW5rCisxODA2OCBkMmMyMDVjMzZkOGE0MThmNzBkYzkxMWYwOGY5M2I0NDRiZDM0YjYzIGxlZ2FjeS10cnVuaworMTgwNjkgZTRjOWI4MDVmMzlmYmQ3ODNhMDkyNTBhMTA5ZGMxNzdiMzM3ZDEzNiBsZWdhY3ktdHJ1bmsKKzE4MDcwIDUwYTg4OGVjNTdjMTI3MTFmZDUxMWEyOTNjZTA1MzY1OTEyMGNhYmQgbGVnYWN5LXRydW5rCisxODA3MSA4ODJjZWZlMjFkYzM2ODE4NWQ3ZmZkNzkwOTg2M2NiMDY3NTgyN2U4IGxlZ2FjeS10cnVuaworMTgwNzIgN2Q0NTI0OWIxNDc3ZDljNzhiOTU0ZmEzOTQwMzU5NmI0NWJjMDdmYiBsZWdhY3ktdHJ1bmsKKzE4MDczIDk1OTg2NTBmMmJjOTAyMzIwYjdlOTIwY2VjODJjNjBmZDQ4ZDAzMWIgbGVnYWN5LXRydW5rCisxODA3NCBhMzk3NWQyODExZjAwODlmNTJkYTJjZTNjNTg2YWE3ZTdiNmNhODhjIGxlZ2FjeS10cnVuaworMTgwNzUgYTgyZTRjMjk1YjkzMDBkMzA4YjI2ZDE0YmY0MjA5YmIxZjMwNzg1OCBsZWdhY3ktdHJ1bmsKKzE4MDc2IDViNTY1NGNhNzU1NWI5OGIwZTJiNDFjZjY2MTEwOWQ2MDNlNDNjYzIgbGVnYWN5LXRydW5rCisxODA3NyA5OWYzOGM3NTVhYmViYTQ1NTAxMDk4ZjZhMmFiNDA1NjYzNTkwMWU3IGxlZ2FjeS10cnVuaworMTgwNzggM2U3MDE2Yzc5ZGFhMGU3YWZjZDNlNDUyZmRmMmRmNzAwYzVlMzNjNyBsZWdhY3ktdHJ1bmsKKzE4MDc5IGQ3YzkzYTc4Yzk0OTI4YWZiOWMyOGMzYjQ0YWI5ZjE3Zjg5MmUwNDUgbGVnYWN5LXRydW5rCisxODA4MCAzZDkwZTFkNzYwNWY3MTI3MjNjNGI0ZDZiY2UzMGJlY2M0YjI0MGQyIGxlZ2FjeS10cnVuaworMTgwODEgZTQ3MGE5NjE4Y2E3MmFiYTM1ODZkMTRhMzRhM2QyMzQ2MTQyNzBmZCBsZWdhY3ktdHJ1bmsKKzE4MDgyIDdlOTJiN2E1MDU3YzUxMGYxZDNiZWUyNzkyZTM0M2RmMDNhY2Q3ZTQgbGVnYWN5LXRydW5rCisxODA4MyA0ODZhMzFkOGEzYjM1YzVmOTFmZTE3MjdjNTQzYzhmYTc2YzA2M2Y1IGxlZ2FjeS10cnVuaworMTgwODQgNDg3YjM1MDJhNDViMzEwZmNkYTcwYWEwOWZkYjJkNjU4Y2Q1ZDFhZCBsZWdhY3ktdHJ1bmsKKzE4MDg1IGY3OTI4MjBmM2NkNGJlZjU2MDUzY2FkZmU4ZTRkZTVkMDEyNjQ1YWQgbGVnYWN5LXRydW5rCisxODA4NiBkMmI5Y2M0NDBiOGRkNDJlMDMxNWYyYjhkMzI2MWYzMTBjN2EwYjAxIGxlZ2FjeS10cnVuaworMTgwODcgYmQ4OGRmMjBkYTJmNTlhYjRlZGRkNTkyYTM5NTM3NjAyNDBjYTU5MSBsZWdhY3ktdHJ1bmsKKzE4MDg4IDEwYjNjYmRiZGZkOWZkOTE5NWY1ZjU0MDIzYTJkNDNmNzAxMzIwOTcgbGVnYWN5LXRydW5rCisxODA4OSAzOGM3OTVhZmIzYjgwNTNlYjZhOGQyYWNkZjZlODdiNjliNmQyYWQzIGxlZ2FjeS10cnVuaworMTgwOTAgODY0ZjE3MTRhZjI4NzFiMzA3Y2U0MzcxZjk2YTlhYTU2YzA0Y2JkZiBsZWdhY3ktdHJ1bmsKKzE4MDkxIDAzNzIwYTI2Y2ZlNzM2NTQ3Zjg2N2Y0NzgxMzg4ZDAyYjdjZGRkYmUgbGVnYWN5LXRydW5rCisxODA5MiA4ZmUyYTc5ODFkNzBiMzJhOThkYmE2NDBhNjQ0MjA2MmYwOTA3ZWQxIGxlZ2FjeS10cnVuaworMTgwOTMgYzk0YzJhZTc0NmYxY2IzYTY0MmE1ZmQxNGE4MzAzYzBhN2ViZTU5ZCBsZWdhY3ktdHJ1bmsKKzE4MDk0IGYxYWRlOGFiMTg2OTU1MzdjY2VjOTBmN2NlMzNhODZkNjY1Njk1NTcgbGVnYWN5LXRydW5rCisxODA5NSA3NWJmYmUzN2FiN2E2YzA5MDM0YmZhN2MwYTA2ZWI3NmM3NDZlOTllIGxlZ2FjeS10cnVuaworMTgwOTYgOWFmN2ZjZTM2Mzg0MTMxNzNhMDA3ZmNkMzQyMjQyZWVmMTlmOTA4MyBsZWdhY3ktdHJ1bmsKKzE4MDk3IDAyMjdiNTk2MWVlZjc0YTg3ODIzMGE2MDhkMGYxZjJhOTlhNWI4MGYgbGVnYWN5LXRydW5rCisxODA5OSBkYTQzYjE2OTg2YjY3NzAxZDhiNzA0NDU4N2M3MTVkYzJjNzkzNjYzIGxlZ2FjeS10cnVuaworMTgxMDAgNjU3NzUwYzFkNzgzNTRkODc4NzczZGNmMmMzMmQ4ZDkyNDg2NGM3MCBsZWdhY3ktdHJ1bmsKKzE4MTAxIDJjZGZjNDZlODA2OGQwZDhhZDk4MjNjNDVjODExZjQ2Yzg0ZWZmYWIgbGVnYWN5LXRydW5rCisxODEwMiBlOWU4ODI0ZTNkOGRmZDlhM2JmYjJlZDlmZDQ3YWMyNGI2ODQ0MDYyIGxlZ2FjeS10cnVuaworMTgxMDMgNzFlYTJiYjAxODg5NTcyZjk2ODc4NjY4ZDExNmQxNzY0MTQ5YTlkMCBsZWdhY3ktdHJ1bmsKKzE4MTA0IGU0ZWE0NGIxMGFiYmVmMjVhZDEwN2UwZmUxMTY0YjljOWVlNGQ2ODQgbGVnYWN5LXRydW5rCisxODEwNSA2ODM3MTM1MDgxZDQ3MjdlZWZkZTc0NzU0YmRmMmIwMjBhNjFkMzI3IGxlZ2FjeS10cnVuaworMTgxMDYgZGQwZDE5OTY3NGY4MmE0Y2Y1ZTMxZjcxMzE5M2MwZjRkMmY5NzE4MyBsZWdhY3ktdHJ1bmsKKzE4MTA3IDg2ODZmMjg0ZmE4ZDc0OTAxM2VjZjQzZDk3OTc2ODBkMDM5ZWY0YTggbGVnYWN5LXRydW5rCisxODEwOCA3MzVlZDg1NmRlNjBlNDE4ZjY3NTdhYzczY2JhZTRiYTBjMGE1NWMyIGxlZ2FjeS10cnVuaworMTgxMDkgMmEwNWMxZmJkODk0N2RkMjMzMDFmOGY0ODBlZWZlZGE1MWRjNTliMiBsZWdhY3ktdHJ1bmsKKzE4MTEwIGNjOWViMTg3YjczMDJjYTM3NzBiMTE2YTlhYzJjZDRhZGRjODg5NDUgbGVnYWN5LXRydW5rCisxODExMSA5NzIwYzJjNmY0MzVkM2Q2Y2RlYjNiOTAyZjRhYjIwMmIyY2Q2NTY3IGxlZ2FjeS10cnVuaworMTgxMTIgMGY5ZmQzZmQ3Nzk5YThhY2NmMWY1NmJiYWNlZmQxOTA5MzExMTBjOSBsZWdhY3ktdHJ1bmsKKzE4MTEzIDA4MTMwMjBiMjk3NzVlMWNmMmNmYTM0MTgwZjNhYWRlNDdlNjdlNDYgbGVnYWN5LXRydW5rCisxODExMyAyZmE0ZTM1MDgzZTAyMzQyY2EwMTRiZjViZmJhNDZhZWNiODE2YzMxIGxlZ2FjeS10cnVuaworMTgxMTUgYmQ0Y2Q3M2NiMGQ2ZDVmODhjZWQ3ZGY3NGQzMGQ3ZDE0YjIyNmJiNyBsZWdhY3ktdHJ1bmsKKzE4MTE2IDYxZjgyMzAwOTE0NWNhMTNhOGZiNWY2OTg3YTE2MjkyOTk2NjMzY2MgbGVnYWN5LXRydW5rCisxODExNyAzMTQyNjk4ZDE3MmM4NTdiYjk5MThjNTEyZjFlYjhmMDU2NjIyNjBiIGxlZ2FjeS10cnVuaworMTgxMTggYTE4N2FkODJjMzNmNDcyOTNmNDRhNGMzNDIzOGQzZDQ0YzYwNGFjMCBsZWdhY3ktdHJ1bmsKKzE4MTE5IGQyYWEyNjZhZTQxYzg4ZWI3ZWMwZTIxODkxZmVhMDZjNDVkOGJjMDcgbGVnYWN5LXRydW5rCisxODEyMCBiYzRmODllZWZiMDRkNDJlYjdlMWIxYzIzZjRhMzY2ZTgwMzAwNGRiIGxlZ2FjeS10cnVuaworMTgxMjEgODc3ODBkYmY4ZDE3NGIxYmRlNzUzYWY1MGU4NjE1NjEzZTg4YWIzZCBsZWdhY3ktdHJ1bmsKKzE4MTIyIDBkM2JhYmFjNDM5OGZiZTM4YjVmNDcwYWQ5YTg4YjRmMDJhMTAwNGQgbGVnYWN5LXRydW5rCisxODEyMyBiNTE2Mjk5ODBjODg2YzI4NGViNDNiNWRjYjQ0MjZiOTFjYTMxNWM5IGxlZ2FjeS10cnVuaworMTgxMjQgMzg3ZjMxYWMzMmU2NDhjNTQzNzk3ZjQzYTJmZjIzOTBiZDhmZmMyMyBsZWdhY3ktdHJ1bmsKKzE4MTI1IGM5NGMxYjY2MGRkYjE1NmE3ZWZiNGVkODFkMDBkODRmOGM0MTI1YzUgbGVnYWN5LXRydW5rCisxODEyNiBkNTAzMzVhYzU1ODAzYzA0OTExZjRjOTEzNTFjMjI0MzllY2Q1MWI1IGxlZ2FjeS10cnVuaworMTgxMjcgMDgzMjgxMGM0NjEyNDMzNzhjNTMwNTgxYTU4NDdjYjUwYTAwMTNjZCBsZWdhY3ktdHJ1bmsKKzE4MTI4IGQ1NzQwZTEyZWE4YTI5YTlkYWE0YWRhYjVkYWU1OWYzOTdiM2U1ZjQgbGVnYWN5LXRydW5rCisxODEyOSA3NGM2MTUzYWJiYzEwZDBkN2RlZDI0MGZjNDdlYjI1YmI4NzkwMjY5IGxlZ2FjeS10cnVuaworMTgxMzAgOTI5YzkyYzUwY2IyYmJlYzgzNjdjMDU4YmUwMTkxMjQwOWFmMDU3ZSBsZWdhY3ktdHJ1bmsKKzE4MTMxIDNlOTZmZDQ0YjlkMGY3OGZkNDkyNTk4MWM0MmFmZDVjY2I4ZDM4MDQgbGVnYWN5LXRydW5rCisxODEzMiA2MzgxZmE4ZDdkZjMzNzA0YmMyOTZkODA0ZWI3Yzc2ZTMwZWM5N2UyIGxlZ2FjeS10cnVuaworMTgxMzMgNjgxNThkNjRlODc0ZTk1MDc0Yzg5MTY3MGRkYjQ0YzBkMjdmM2Y0NCBsZWdhY3ktdHJ1bmsKKzE4MTM0IDg0N2Q5OWU0ZjI0YWQzZTIwN2U5YTZiOGQwYWJlN2UxOTRkODA2MDEgbGVnYWN5LXRydW5rCisxODEzNSA2NWQyNjVkODlkOGY0MjU1YzczNTdiOTk4ZDIyMGU5ZjZjMDc4MmNkIGxlZ2FjeS10cnVuaworMTgxMzYgYmEzNjc3ZTFmODFiNjVkYzc0YzQxZGVmOTVlZWQ1ZDYwNmJjOGQ2MSBsZWdhY3ktdHJ1bmsKKzE4MTM3IDExNjc2ZGRhZmYwMTVlMjg3YTBlNzgxZjI3YjliNjcwZTg2YTIwZDkgbGVnYWN5LXRydW5rCisxODEzOCAyNTQxMDYyZWQ0ZGQ5OGJhYzljYjFmYzcwOTRjY2YwYjI5NTIyYWQ1IGxlZ2FjeS10cnVuaworMTgxMzkgYTVjYTU0OTY5YTNmZmU3MjhhZjUzNjE2ZTc2ZGNiODMzOTEyYTczOSBsZWdhY3ktdHJ1bmsKKzE4MTQwIGFmMmFhODA3YWNkZTdmYTRjYTA4ODY0MzA0MjI0OTIxYmE2MTZlMDEgbGVnYWN5LXRydW5rCisxODE0MSBiZjIxZTQxN2JlZDIyMzQ5MjA1ODVjMzJiMzk5YmI4ZTQzYzg2YTUxIGxlZ2FjeS10cnVuaworMTgxNDIgNGM3Yzc3OWJhZDg3OWI4ZGViNzBkZGQzNWNlN2EyYTQ1NDhkYzI4YiBsZWdhY3ktdHJ1bmsKKzE4MTQzIGI5NDBhMGZjMjllMzM5NDkzNjUwNzdhMGY1YTFlODU3NzMzNzNiZjQgbGVnYWN5LXRydW5rCisxODE0NCA4ZjQ1OTJmNTQ5ODhkYmVkNDYwYTcyZDkzMTY0YzYzNGIyMWMzZGRmIGxlZ2FjeS10cnVuaworMTgxNDUgMTMyZTY5ODkyYWE1ZDE1YWU1MDg4MGFkMWM1YWExMTFiZmQ5YTRlMCBsZWdhY3ktdHJ1bmsKKzE4MTQ2IDNhN2FmZDNlNmM5NzgxNGI0MDQ4NDc4MTMwMzEwM2U3MTUxMThkM2QgbGVnYWN5LXRydW5rCisxODE0NyAxZjRhOWFkZTMwZWNjMTdjYjFiNzgzNDFkMWUwYjA1YjhmMzlmYTMzIGxlZ2FjeS10cnVuaworMTgxNDggMjcyYzI5NjUwODFjNjUxODYwMzY4ZDc0MWM1YzZlZmM5MTRjMTljYiBsZWdhY3ktdHJ1bmsKKzE4MTQ5IDIzYjExMDhkNmM4YjVmY2FkNzI4MjgwMWIxMjc4ZDRkMWJmNTE4YTEgbGVnYWN5LXRydW5rCisxODE1MCAxZjlkNWViODRiMGIyMGMwYmI2ZThhYmE2ZGIwNzZlYzg0NjM5NjkxIGxlZ2FjeS10cnVuaworMTgxNTEgOWRkN2VhYjgzNmQ3Y2ZjOWM1OWMzZWVhNmI5NjA0YTcwY2U0MzIzZCBsZWdhY3ktdHJ1bmsKKzE4MTUyIDA5YmY2ZDMwMDI0ZmIwODhhNTA4ZjY5MDJlZWY1MGU1MDM0ZWQ3NzYgbGVnYWN5LXRydW5rCisxODE1MyA4NDdkYzYxZTMwZjVjOGU4OGU5NzY5NWI0NDdhOTQ1YTA5YzY5NmRiIGxlZ2FjeS10cnVuaworMTgxNTQgNzU3ZmY4OGUxN2FhZGJkYTNkMzFjZjg4YzZhZjRmMjkzMGRmYjJmNCBsZWdhY3ktdHJ1bmsKKzE4MTU1IGU2YTEwODU3MjVhY2Y0NzhhOWU4MWViMzc1ZTQ3MzA1ZjhjZDBjZmUgbGVnYWN5LXRydW5rCisxODE1NyBmMjBkZWFlYWY4Yjk3YzIxZDZmZTAyOTU0YmVkZmI3ZmQwNDU2ODAzIGxlZ2FjeS10cnVuaworMTgxNTggODVhNTA5ZmFjY2M3OTZmMzAyZGZmOTY0ZGJmYTI5ZGJkM2I1NTUyOCBsZWdhY3ktdHJ1bmsKKzE4MTU5IDY4YmNlNWQ4M2Y3YjkzYTcxZWUyZDRhN2UzZDljZDg3ZjYyYTY1ODggbGVnYWN5LXRydW5rCisxODE2MCAwZGE0Y2NjN2U4Y2YzNmU2ZmIyYmY1ZWNlYmZiOGQ1YTM4NjVhM2I1IGxlZ2FjeS10cnVuaworMTgxNjEgMmE5ZDI3NjU2MjVlNWE3NzVkZDViZGE2MGQ0MzU1NGE3NjdjZDIyNyBsZWdhY3ktdHJ1bmsKKzE4MTYyIGIyMTEwMjZjZWY4NGNhODAzZDg2ZjlkYWEyYjk2MzY4MGU1NjJhYzggbGVnYWN5LXRydW5rCisxODE2MyAwODIwOTk0ZTJkNWU4NzZmMWUwOWJmMmM0NzVkODc3ZGMxYWMzNzNjIGxlZ2FjeS10cnVuaworMTgxNjQgYTZmM2VmMTA4MTVlY2I4ZGMxMGQ4ZDdiOWNhMDk0YWFkZGNhMGZiYyBsZWdhY3ktdHJ1bmsKKzE4MTY1IDA3ZjI0MjYxYzZlNmViZTNlZmNlNDQ4Y2U0OTQ2YzUxNmY3ZmIyNmEgbGVnYWN5LXRydW5rCisxODE2NiBhOTk5ZDA1OGZhYjU1ODE1ODM4YzAwMDYyMzViOTg3ODg5YTQ3YWU4IGxlZ2FjeS10cnVuaworMTgxNjcgZjg3MjFlODQ5NDI0NmNiYTQxODMwMTkyZWRiN2EyODQ3ZWNlYmM4OSBsZWdhY3ktdHJ1bmsKKzE4MTY4IDg0N2FlNDAwNzRkNGUwMDczNGIzMGEwZDRmNzZiZTI1YWJhNjQ5NDcgbGVnYWN5LXRydW5rCisxODE2OSAwNzU4Y2NiMzM2M2NmZDY0ZTlmNzZjNDg4MDExY2VkNmU1Y2NiODZlIGxlZ2FjeS10cnVuaworMTgxNzAgNWQyYTIxODVjNjUxYTQzMzliYTRlYTgxNjdkNjBhNjRiZjU2MGM2MCBsZWdhY3ktdHJ1bmsKKzE4MTcxIDMzMzM3ZTVhNDMwMGM5OGRhYTE1OWFjZDhjMGYxNThmNzUyNWVjMzkgbGVnYWN5LXRydW5rCisxODE3MiA4NmQwNjk0MTQwOTlmZTk4MzYzNTQyMWY5ZTViODcxMzJhYjA3MTNlIGxlZ2FjeS10cnVuaworMTgxNzMgNDk0NjhjMDA3YzBjZDVhZjI5YzM5NzFlZmY3NDk2NGM1NDE1YjNiNyBsZWdhY3ktdHJ1bmsKKzE4MTc0IDg3YjVlNDgwNzYyZjg2YjE3OTcwYzViM2NhOTAxYmE2NDY4MTcwMTkgbGVnYWN5LXRydW5rCisxODE3NSBiNDlmNTIyYmY4OTNlYTUyYWIwNTk5NjhhZjYyMTVkYWVhZDUwZjRmIGxlZ2FjeS10cnVuaworMTgxNzYgOGU4NjVmNWVjZjc4NDFmZDQxOTEyYWIwNGUzMGJkMTNmN2M4MWY0ZSBsZWdhY3ktdHJ1bmsKKzE4MTc3IDEzOTc1YWVjNTE1MjE1NjAxNzMzOGZhZmYxZTI5NmUzZjhiM2NkY2MgbGVnYWN5LXRydW5rCisxODE3OCA4YWE5NDdlMWVlZTgyYTJlZjJlMmNmNjBkMDAxMWMwNDM4YWZjYmE1IGxlZ2FjeS10cnVuaworMTgxNzkgMDllYzg4MmNkZTYxNDQyMGI5NTUxYTM4YmMxOTdiMGRhNzZhYjZkYyBsZWdhY3ktdHJ1bmsKKzE4MTgwIDNiZDEzYTJmYzgzODI0ODRlMDAyYzUyZTczY2UxYjVhNWEyMzQyOTIgbGVnYWN5LXRydW5rCisxODE4MSAxMWUzYTZlMTZhOWYyMjVmYTYyYTg4MTRkZWMwNGZlNGMwM2UwNmQ4IGxlZ2FjeS10cnVuaworMTgxODIgZDE3YmExNDE0ODBhZTdhNjNiNzc4MjcwYWNlNDZmZTFkNGY5ZTU5ZCBsZWdhY3ktdHJ1bmsKKzE4MTgzIGZkMTcyMTdkNWJhODY4YWYwZmVhMzQ3YzhhOGNjY2E5ZmIzYzgwZjAgbGVnYWN5LXRydW5rCisxODE4NCBkOGFjYTNjODkwZjdhNGZjMzUyODU2YjJjMWVlNDhiNTYyMzUwNzI4IGxlZ2FjeS10cnVuaworMTgxODUgNjU1OTRmZWI1NTI3NTdlNzZlYWQ5NjcwZTUzZDBiYzQzZWJmNjcyOSBsZWdhY3ktdHJ1bmsKKzE4MTg2IGU1ZDRjNDI0YzQ0ZjkzNmI3NjRmOGE1MGEzZmNhZGNmODMzMjNkZDcgbGVnYWN5LXRydW5rCisxODE4NyBjMTg0NmQzMzFkZTlkMWQzOTc1MmQ1ZTUxMTMwMWYzYmZlYjc5MjQ3IGxlZ2FjeS10cnVuaworMTgxODggMGQ2M2MwY2E3YWU0MjIzOTQ2NTNlYzFiMTQ3MzM0ZWEwNGY3M2Q5NCBsZWdhY3ktdHJ1bmsKKzE4MTg5IDVkNTg2ZDQ1Y2I1YTUyNGFkOGEwM2Q4MTg5ODUyNzFlNzc4ZTk0ZjkgbGVnYWN5LXRydW5rCisxODE5MCA4MTg5MDRhOTljYTM3MzE3ZTFjMjM3YjE3ZWJmOGI3YjcwOGVhMTY1IGxlZ2FjeS10cnVuaworMTgxOTEgNzg4YjUyM2Q0ODI3YjI0Njk0NmMwNTNjNTVmODQ4YjYwNGNmOTJlZiBsZWdhY3ktdHJ1bmsKKzE4MTkyIDEyYWVjMzM4MWM5NDZiYzdiMTg4NzBmMjM1ZDBhZjlhZDAyNzk3NmQgbGVnYWN5LXRydW5rCisxODE5MyBkNTE1N2M4YmIxMWE0ZGRhMTJjMGM3ZjFjZmQ5MmI4ODM0MzhiMjVlIGxlZ2FjeS10cnVuaworMTgxOTQgMTAwYzUzM2Q5YTNlNjE1NjZkM2M1MWVhNzA0YmI2YzQxYjg3N2JiMiBsZWdhY3ktdHJ1bmsKKzE4MTk1IGVjNzk4MDBmNGMyNzcwMjVmMDA3Y2FkMzNjZDViZWE3ZTA0NjQ1ZmEgbGVnYWN5LXRydW5rCisxODE5NiBiYmM5OTFhYjZkMzIyMWE2ZjUzZDUyYzVlZjUyMjE4ODZmZWRmODg0IGxlZ2FjeS10cnVuaworMTgxOTcgYTgxZjkyMDI4MDNkYmQyZTU1MTYwYTE0OTU1OTU3ZTMyMDRlZDFhNSBsZWdhY3ktdHJ1bmsKKzE4MTk4IGNhMWFlMjFhMzAzOWIzNDFkM2U2NjU1Zjg0OTZkZGI5MzcwYzA3YjkgbGVnYWN5LXRydW5rCisxODE5OSBjMmQ3NDUxYjQyZjY2YzUyOGI1MDMyNmZkYWE0ZmUxYzI3ZjAwYWJlIGxlZ2FjeS10cnVuaworMTgyMDAgZDk5YTBmNmNmY2UyMGM4YWU5OTYyNjY2ZTZjZTM5NTVkMGExNjEyOSBsZWdhY3ktdHJ1bmsKKzE4MjAxIGMyZDEwMjc0YTIxNDg5MmY1M2Y3MjNlMjE2Y2IyYjhkMjkzNzc5ZWQgbGVnYWN5LXRydW5rCisxODIwMiBjYjExZmE1YjExZjQyM2RmYjUzMzg5YWQ0ZDIyMzE1OTkwZWU3NTVmIGxlZ2FjeS10cnVuaworMTgyMDMgYWNmMmIxOWU0MzQ0MzIzMTRhYjY3MDIxM2I3NzJjZGVkM2I4MWY4NCBsZWdhY3ktdHJ1bmsKKzE4MjA0IGU1OWY1MzhiYjgyOTNhZjI4ODUxMWQ1OTBlYzQ2NGJlZmQ2MTMzMWQgbGVnYWN5LXRydW5rCisxODIwNSAwM2RjNzYxZDJjYzQ5ZTg4NDg1NmFkMjExNWFlNjU1MzZlNzdkNmM3IGxlZ2FjeS10cnVuaworMTgyMDYgNTYzZGNmZWMyYWU5ZTZjM2FlMTlmZTViYzdjOTc1Yjk4NTkxY2ZhMiBsZWdhY3ktdHJ1bmsKKzE4MjA3IDMwNDg3MWQ2ZTg2NjI0NDY3ODQ3N2JlMTk3MzkyNDFiYjMyZDM3Y2QgbGVnYWN5LXRydW5rCisxODIwOCBkNGE0NjMyNmZhZjQzNjk0ZWE2NzM5ZWYyMGU3NjA3MzU0NmRhM2Y3IGxlZ2FjeS10cnVuaworMTgyMDkgMGMxOTY3MmQ0N2JiMWUxNzExY2Q0YmIyOTEwZDY3MzllNTBhM2IxYyBsZWdhY3ktdHJ1bmsKKzE4MjEwIGIzZGViZjY0N2I1M2VhODMxMmJiODYwYjc1MjU4MTAzOGI0MzViOTYgbGVnYWN5LXRydW5rCisxODIxMSBhNjIyNGRhN2I0ZTQzNWNiZmYyZTE3YTk0ZTFiNTg1ODU5MWY4ZDY5IGxlZ2FjeS10cnVuaworMTgyMTIgM2U1NGNlZmM1OGM2MDFlOGYyMGUyOWQ5NzY3YWU5NDAyM2Q4YjJlMyBsZWdhY3ktdHJ1bmsKKzE4MjEzIGY0ODBkNTJjMDc2MGFkYjE0OTJlMmMyMzVkZjI2NmE5NmY1Zjc1OGIgbGVnYWN5LXRydW5rCisxODIxNCA3YmU5ZWRjNGQ1ZGIxMWIwMjZkYzdjYTQ4ZDkyNjFkOWViYmEyMDRhIGxlZ2FjeS10cnVuaworMTgyMTUgMmEzNjk2ZDMyNzIxZTcwMDlkMjlmODdjMWQwNTEwZjI2ZjA3MWM0OCBsZWdhY3ktdHJ1bmsKKzE4MjE2IDZlNzBiYWE0ODdlZDUyMzRkNGIzZmJkNjVmYmQyNGVhYmUwN2EyZTkgbGVnYWN5LXRydW5rCisxODIxNyBlZTI3MWMyMGIwNWYzYjI0OWEwYzIyN2ViZTBjNmRmN2RmZGI4ZmJmIGxlZ2FjeS10cnVuaworMTgyMTggYWIzNDM4Y2YxZjNlNmIzNmE5OTBjYjhhMjVhYjEyZTJjOTViYjYzMiBsZWdhY3ktdHJ1bmsKKzE4MjE5IDEyYjkyYTM1NjQxYmUyZWVjYmE2OGVmZWFjYWQwYmVmZTQyZDgzOTEgbGVnYWN5LXRydW5rCisxODIyMCA3NGUxZDc5NTIwZmQ0Y2RlY2NlYWZhYWNkZDNmYTFhZThiYzdjM2M5IGxlZ2FjeS10cnVuaworMTgyMjEgYTNhZjE0NWQyNTMxZTBjMzY0MjdmYzUxMzc3NGYwM2EzZTM0NTkyNSBsZWdhY3ktdHJ1bmsKKzE4MjIyIDlhMTdjZGNkMzMyMDM1OGRjMTY1MzNkNDY4NDcyYTFhMWI4YmQ0NjUgbGVnYWN5LXRydW5rCisxODIyMyA0N2Q5ZmJlNjUzN2M4N2NkNmRiOTNjMmJjNjc2N2FmOWQ2YTZjMjAyIGxlZ2FjeS10cnVuaworMTgyMjQgMDk5NTJkNmVkMzcyNTlmMTZkNTYxNjUyYjIwMDUxYjg1NmM0YWM4OCBsZWdhY3ktdHJ1bmsKKzE4MjI1IDFlNGRlNjAxMDUxYzE2MjQxMThkZWEzMzY0MzkxZTU3NDc4ZjI5OTUgbGVnYWN5LXRydW5rCisxODIyNiAzYzYwODMyNDdjZTc1NWM5NjAwMjc1MmVhOWM1OTNlNzc0NWY2NDk4IGxlZ2FjeS10cnVuaworMTgyMjcgODI3NWQ4NjQzZTc5ODkxMzRlZGIwNDdhNTNhMjMxYjQ5MDk4OWVmYSBsZWdhY3ktdHJ1bmsKKzE4MjI4IDkwMGYyNjZjNWQ4ZTJjMTkyNzI0NmY3NzRkNmFiOTI4MDRjNDUxMzkgbGVnYWN5LXRydW5rCisxODIyOSAzYWJjYjY5NjY2MTc1OTI2NGNhYjZhNTYyODY5ZWU4YTBlMzlmMzEwIGxlZ2FjeS10cnVuaworMTgyMzAgMmUxYWIwYzk0MWMwZWNjMjdhZGVhMDkzM2MzYWYxZjc5OTAzMDU1OCBsZWdhY3ktdHJ1bmsKKzE4MjMxIGM3ZjVkZDJiZGM3ZDY5ZjUzZTllZjc5YjA5OGMyZTZmZmM0ZjQ1MTQgbGVnYWN5LXRydW5rCisxODIzMiBmNjIzMzkzOGZmODliMGU2NDhmNmYzMTAyMGU5ODFlNWFkNjk3YzQ2IGxlZ2FjeS10cnVuaworMTgyMzMgMDE5MjJhMGY2ZjkyYjJlM2ZlYjNmOGM4OWVhOTllMjE5OTI1ZmM4NyBsZWdhY3ktdHJ1bmsKKzE4MjM0IGE4MjZhNDZiYWU1NGFjOTBmMGZhOWVkMDFmZDI2NTIwZGJhY2VkZDEgbGVnYWN5LXRydW5rCisxODIzNSBjZWU5NmIzOTFmZmMyNjA2NzVlYjU2OTgxMmFkMjE2ZDZlNjE4YmM0IGxlZ2FjeS10cnVuaworMTgyMzYgNDkzY2E5ZTQyNjBlNTJhMjM3ZjQwZGQzNDc2NWJjYTRjODgxOGE4ZCBsZWdhY3ktdHJ1bmsKKzE4MjM3IDgzY2RkNDU0ODVhNTczYTJhZTViZjg3MjRiNzE1MThlOTZmNjE1MGIgbGVnYWN5LXRydW5rCisxODIzOCA5YjFiZTFkODQ4MTA0NjczOTc0NjgwYWNmYzRiNDhmNzMwOGM1NzE5IGxlZ2FjeS10cnVuaworMTgyMzkgN2E4MmY4NDI5MGY3YmJkMzA0ODhhMTU1YTg2YjM5ZDJiODMxZjJkNyBsZWdhY3ktdHJ1bmsKKzE4MjQwIGJiMDA2YWQwMGQ5ZWFjNmNmOTU3ODM3YTEyZDNiYTgzZmJmNGY4MjIgbGVnYWN5LXRydW5rCisxODI0MSA1MmMyN2I3MTE2ODY5MDA3MjQ5YjYzZjE1NTVjMmE0ZDA2MmUyOTYzIGxlZ2FjeS10cnVuaworMTgyNDIgYzEwNGYwMGM5OTA5ZWIxODYwNWQ4NzgzOTAyODNjYTk4N2QxNWJmYSBsZWdhY3ktdHJ1bmsKKzE4MjQzIGVlYjdjOGE1Yjc5ZjY0M2MyZGI3N2I0NzA5ZGI3YzY5NDMzNTNhZmEgbGVnYWN5LXRydW5rCisxODI0NCAzY2IxMmUwZTdhY2QxMDJkYzM4YjZjZjRlNWI0YWIzMDE3ZTQ1ODY4IGxlZ2FjeS10cnVuaworMTgyNDUgMjJkYmNmZmM1NGVmMTBmODgwM2NlY2E0Y2FkZDVkMTI0ODBhYTIyMSBsZWdhY3ktdHJ1bmsKKzE4MjQ2IDE2YzEyZDE2OThmNmFkNjBkMWQ2OWQyYmQ2YzUxMWUyYTRjOGE2MjcgbGVnYWN5LXRydW5rCisxODI0NyBiMzQ2OWViNzhiYzY2ODExMzNkYTI1ZGRlNTBiYTczMjcwYzI1NmE1IGxlZ2FjeS10cnVuaworMTgyNDkgZjI5MDFiNmFjNWVkOTQ2OGM1NjJjOTA0ZjI4MzI4MWJjMDgxMTYxZSBsZWdhY3ktdHJ1bmsKKzE4MjUwIDg3YTViYWUxYjk0NGE5OTkzMWY3YjVjMWI3NzcyZGI5NmIwZTBkYjEgbGVnYWN5LXRydW5rCisxODI1MSBmNjJlM2U3ODcxYmU5MjM5MmNiOTNlZDIxNGE2MDIxZmUzZGQxMTliIGxlZ2FjeS10cnVuaworMTgyNTIgNTE5MmJmZDdhOGJiZDU5MDE3OTMyNGUwMmRjNjliN2ZlOWNmNWJjNyBsZWdhY3ktdHJ1bmsKKzE4MjUzIGZhZTViMWU0MTQ5MWQ2MzZhOTRkZjUyYWM0Y2RmYzgwNzZiNjExZDEgbGVnYWN5LXRydW5rCisxODI1NCA4NmYwNmMxNTNkZGE0YTNhMzQzNmI3OTczMjEwMWUyMWZhOTVhNWE2IGxlZ2FjeS10cnVuaworMTgyNTUgOTZjMzk0YTQzYjViYWZjNjcxZWJiMDQwZjNlOTEyMDNkMGQzZWViNSBsZWdhY3ktdHJ1bmsKKzE4MjU2IGQyNjViZjRhZGE3YzkyMTBmNTZkZjNkOTUyOTgzNWI3MzU4YzFjZDkgbGVnYWN5LXRydW5rCisxODI1NyBiNzE0NTlhZWRhOTU2OGRlNzljYTM4YjQ0ZTllZmQ2NjczYWMzMWMyIGxlZ2FjeS10cnVuaworMTgyNTggNWQ1YzUxMzA0ZjdjNWFhOGM3MDUwMjY5MjRkZGNiMTNhNjk1MDVlZiBsZWdhY3ktdHJ1bmsKKzE4MjU5IDNhYjdmYWFlODAzYWYyNGMzYzY3MGNlMDE4YTY2ZWI2YzI3ODIxMDIgbGVnYWN5LXRydW5rCisxODI2MCBhYTFlYzI3MGYyZDM4Yjg0ZTAyYzE3YTllNmM0OGI5OTcyZWRiZmMzIGxlZ2FjeS10cnVuaworMTgyNjEgOGY4MjMxNmY2OWQ0MDUxZmI5ODFiZGVlZjc3ODkxYjc4MjQ5ZTc4NiBsZWdhY3ktdHJ1bmsKKzE4MjYyIGM0NWM1MDgwYzg0NDgxMGYyYWQzMWM5MTZkZTNhOGM1NzNkNTcwMzIgbGVnYWN5LXRydW5rCisxODI2MyBmZGVkNWM5ZWNjOWJiZjRhMGQ4ZDQzZmNiMGUzOGJkNTEwYWU5MzY5IGxlZ2FjeS10cnVuaworMTgyNjQgNWI0YWJjZWZmNTNkNGQzOTVhYmMyMWFiNzk3NDdlYzFjMmQ0ZDA5MSBsZWdhY3ktdHJ1bmsKKzE4MjY1IDlhNjg5NGY4ZTFhMDk3MzVkOTkzZjI0Mjk4MDhmZjZlMWRlYmYzMDggbGVnYWN5LXRydW5rCisxODI2NiBhZjFlOWU2NGVkOWQyNDE4OTBkZWE2NDVkNzNjMGZjMjUwOWRiZTk2IGxlZ2FjeS10cnVuaworMTgyNjcgNzcxNzEzMThlMzIxMjg3Mjk4NDJlNjcxYWQyNjQ5OGFmM2FhZWEwNSBsZWdhY3ktdHJ1bmsKKzE4MjY4IDM3NTIyOWMzYWMwZDk5ZWFjYWM5YmU0MWI5Njc4NGZmNDBlMDEyYmYgbGVnYWN5LXRydW5rCisxODI2OSBkZGQ5MDNmYjZhNzEwODAzN2NkNDk4MjM5ZDkwYTFmMGJlMGI3MDdkIGxlZ2FjeS10cnVuaworMTgyNzAgOTljYTQxOWNhNThiYmI3ZTEzZGUwOWRiMTBmZDE4NzFjZjIzNGIzNSBsZWdhY3ktdHJ1bmsKKzE4MjcxIGI2NDhjYjBkMTk4OGYxN2Y0NDU5ODRiMTAxYWQ1NTA2MDY3MWY1YTMgbGVnYWN5LXRydW5rCisxODI3MiA1NmU5N2U3Mjc1NjljM2EyNjMxMDg3ZTc3MzgxZTZlMjQ5MmNkYzFiIGxlZ2FjeS10cnVuaworMTgyNzMgODc2Y2Y3YjNkM2RmYjFiNWI5ZjEyNGQ3OWFkNjE5ZGY5MDAxMzBlOSBsZWdhY3ktdHJ1bmsKKzE4Mjc0IDRhZTQ5MjliMTJmZmUxZDg3MzE2ZTdmODAyN2YwZDg1ZDNjZWFjOGMgbGVnYWN5LXRydW5rCisxODI3NSA4NmY0ZTFlZjgxY2FhYzA1NWI4ZGM2MjAyYTJhN2M3MzkwNWY0ODIzIGxlZ2FjeS10cnVuaworMTgyNzYgMGYwMGI2YzdiOWI5NWUxMzY0ZDBiMjY2MWIxODFmMzQ2OGU0ZTNjNCBsZWdhY3ktdHJ1bmsKKzE4Mjc3IGM4ZDRlNmYxYjVmZTk3NWMyNzZmMTk1ZmE4MTRkOGIwNmJmOGFmNDQgbGVnYWN5LXRydW5rCisxODI3OCA2YjI1MjRlOWM2NzJlODA1ZDYwZDY1NWU4MTYzMDhjZTJlOWU2MzRjIGxlZ2FjeS10cnVuaworMTgyNzkgMDY0NjVlZDgxODI2MzA1YTg4N2RhYTIxODY4OWZhZDVkYTM0NmQ3YyBsZWdhY3ktdHJ1bmsKKzE4MjgwIGJkNDFlNjI3M2VkOWIzMTQ2NjljNzgyYTM5OTVjMGY0Mzk1Y2JhZjUgbGVnYWN5LXRydW5rCisxODI4MSAyN2U0ZjU2MDFhYTU4OWMyMGRmNzYyOGZmMTJmYTUyZGJjYzZjMjQ5IGxlZ2FjeS10cnVuaworMTgyODIgNDkxODUxN2VkNmI0Y2I0ZjBiM2ZhZjgxNDU5YmI2NmUwN2QwZDk4NSBsZWdhY3ktdHJ1bmsKKzE4MjgzIDM5YWI4MjdlNzJiZDZlNzdiZGUzZDkzNDJhOWY1YmM1OGNlYjBmY2MgbGVnYWN5LXRydW5rCisxODI4NCA3ZWJkZmU0MjVjODFlYjYyMzY3NjJiODM3ZDI0NmRkYjU5YWI2MGMzIGxlZ2FjeS10cnVuaworMTgyODUgOTdlYTBiNDk0MjJmZmYyYTg0YWI5YjlmMmI4NDFlZmQ0NTJiNjcyYyBsZWdhY3ktdHJ1bmsKKzE4Mjg2IGJlMzMwNzkzNjBjNjY5NGFjZDA1NzE3OWVkYWFmMTE3Yzg3ODFkY2IgbGVnYWN5LXRydW5rCisxODI4NyBhOTM1MTA1MTkyM2UwYjA0NTE1YTIzODk0YmMwMzFjYjg4YjVhMzdiIGxlZ2FjeS10cnVuaworMTgyODggYzBmMWViZDMyMDcyMzkwMDgzNTA2MWY1NTAxM2M4YjA0ZGVkOTk0MiBsZWdhY3ktdHJ1bmsKKzE4Mjg5IGM4MzNkY2RiM2ExNTU0N2E5YmQ5MTFmNjkzMmU2M2NkOTAzN2E2NjkgbGVnYWN5LXRydW5rCisxODI5MCA3OGE3ZjhhNjRmODVhNzQ4MTdiNTliYWY3ZTdkMTNiNTA1YTRlMDBlIGxlZ2FjeS10cnVuaworMTgyOTEgZDVhNTQyOGU5NjVjNGQyNTBiYjQ1YzE0NWQ4NTQxYjNlN2U1MDQ0MCBsZWdhY3ktdHJ1bmsKKzE4MjkyIDg0OTY5ODU1MGIzMmE2OGI5NWY1ZDEzNjM3OWZhZjNiM2YxN2UzMTggbGVnYWN5LXRydW5rCisxODI5MyAyMDQ5ZDU3MGNhNWE3YjBlNDNjYTE1NTcxZDA1MTc3YTY0NWI0YjM5IGxlZ2FjeS10cnVuaworMTgyOTQgYWM2ZmJhMGVjYzI5MDI0Mjg4ZmJmN2E2OGI4M2I0YjFkMjUwZTZjOSBsZWdhY3ktdHJ1bmsKKzE4Mjk1IDUzYzlkMTVhZDk4ZWQ2OTM0ZjExMTQ4YjI0NGFlMmFlOWE4Mjc4OTkgbGVnYWN5LXRydW5rCisxODI5NiBmYjEwOTM3MDYwY2NiYzM4OGQ4ZGQ2MzdiY2VlMmRmODU3ZjUzNzhjIGxlZ2FjeS10cnVuaworMTgyOTcgNGU4NTc3ZmI5NDA3ZmY2ZTRlNDAzMTg5YjMwZDc1N2YzYThlNmM4ZCBsZWdhY3ktdHJ1bmsKKzE4Mjk4IGQ1ZjA2OTZjMzdlODFiYWIyZjkwN2JmOWM0ZjljMjBiNzZhZDdjOGMgbGVnYWN5LXRydW5rCisxODI5OSA0MzM0NTg2NTFlYjQwMjc5NTRmYjczMjVjMDM2OWMwZGI3YzQzOWFhIGxlZ2FjeS10cnVuaworMTgzMDAgMzI4ZmFjMWNhMjEwZmNiNjAwYjM1YmZhNjQyNTY2NGUzZWNlMmZhYiBsZWdhY3ktdHJ1bmsKKzE4MzAxIGVmNDY2YTE5ZTNiYzZhMjU2ZDAzNDM4MDk0ZGU3NDFlNWI2NTZmODAgbGVnYWN5LXRydW5rCisxODMwMiA0YWM1NTVhODc2YTIzZjUwMGY3NjRmODY0MTc1MzY0ZDZhNzhmYWIyIGxlZ2FjeS10cnVuaworMTgzMDMgYjg1NWM4OGM2YWY2YTQxNmQyODEyNTE1YmU1NmMzNzgwNzkwMTk2NyBsZWdhY3ktdHJ1bmsKKzE4MzA0IDY4ZGU5MTg1YjQxZTJhMzFjZTIzY2E2ZTNiOGNjNGI2NDhmMmMwNTggbGVnYWN5LXRydW5rCisxODMwNSA3ZTUxNGYxZmUzMWZjZDRmYWZjNjA3YmYwZjgwMWVjNDZkZWEzNWMyIGxlZ2FjeS10cnVuaworMTgzMDYgZGNkMmJlYmMxODBlZjQzYjVlMGE2NTRmOTA2ZWVlOTNlZTc1OTE0YiBsZWdhY3ktdHJ1bmsKKzE4MzA3IGY4MTNlZGUxMzRiZjY4ZDQ1YzcyY2MwMzBiMDRhNzYwMmE2ODJiNmYgbGVnYWN5LXRydW5rCisxODMwOCBmODIzYjlhYTBjMDM2MTUxNDk4NDZiNzUyOTU2YTk0M2NlOGQxOTI4IGxlZ2FjeS10cnVuaworMTgzMDkgMzFmNzBjYTA2YzY4Zjk0YTc0ZjRhNGQ2ZDc3NjQ4OTVkMjY3MjFiMCBsZWdhY3ktdHJ1bmsKKzE4MzEwIDlhYjdhNTk3ZWVmZTkxNDI5ZWRkMDg4N2IzYzIyZjNkODc3NTg0ZTIgbGVnYWN5LXRydW5rCisxODMxMSBhZTQ5MDA2YjJkOGZhYTZhOGI4MDgwNWJhMzVjYjc0MmUwNzdkNmU3IGxlZ2FjeS10cnVuaworMTgzMTIgZGI2ZDliYjdlYzk0NTNiNzc0Yjk4OGY0ODFkNDM5MGI4YTk1ZTczOCBsZWdhY3ktdHJ1bmsKKzE4MzEzIGYyYzE3NmQ4NDZhNGE1YjkwY2MxYzdiYjI5Nzg0NmI5NDE5Y2NmNzggbGVnYWN5LXRydW5rCisxODMxNCA3NzIxZmI1MDk0NjIzMWQ5Zjg2M2UyM2NjODc2ZmUzODYxNzg5ZmZmIGxlZ2FjeS10cnVuaworMTgzMTUgY2U3NzczOGI4MWFjYmY2YmRmZjQ5MTgxNWQ4M2NkYThjZjQyOWY5YiBsZWdhY3ktdHJ1bmsKKzE4MzE2IGQwMTQ2ZDEyODg5N2U3MzU0NjYxZDkxNDg4Mjk2OGMwZDcxZmUxNGEgbGVnYWN5LXRydW5rCisxODMxNyA1OTcwODlkZDI2MDlhNWVhMmUxZWQ1N2E1NjUzOWM5ZjFmMWIzMjkxIGxlZ2FjeS10cnVuaworMTgzMTggYWYzOTdmN2RiYmQ1ZWI1MDc1N2U5ZTViNTY2ODhmNGE0YTM4YWI0YiBsZWdhY3ktdHJ1bmsKKzE4MzE5IDVkNzU4Y2Y1MTExZDdkOGNmODQwMTBmMTQ5MWE0NzI3NzY2ZTljMzYgbGVnYWN5LXRydW5rCisxODMyMCBhNzlkMzYyNGY4NDU0YTZkNDI4MjE4YjhjZTQ0ZTdlZTMyOWZmM2ExIGxlZ2FjeS10cnVuaworMTgzMjEgZDM5N2Y2Njc3NWU4YmM0MWNhNjNjNTUwNjUxMzZjNjk4NzA4Yjg1YiBsZWdhY3ktdHJ1bmsKKzE4MzIyIDlmNzc1ZTI0OWJhMTgwODQxOTZiNTYyMTlhN2U0YzU0NTliZTE0OWYgbGVnYWN5LXRydW5rCisxODMyMyBiYmU4YTY0ZTIxOWU1OGY1ZmI1Mjk4NDlkNWExY2U2MDI4OGZjZDM4IGxlZ2FjeS10cnVuaworMTgzMjQgYWFhOTFlZDNmY2ZkMjlkNTk0MDMyZDEzYzc4YzI1MTgxNjc2ZDg4NyBsZWdhY3ktdHJ1bmsKKzE4MzI1IGM3ZjIyNWFlMzE2MDViMjAxMzUyZjVmM2VhYjE1ZTQ5ODBjYmE3ZTIgbGVnYWN5LXRydW5rCisxODMyNiAwYjg0YjMxYWE5NzUxODk3ZmI0Zjg2NTczYTJiZmFmN2ZlOTdjNmQ4IGxlZ2FjeS10cnVuaworMTgzMjcgOTczMWJiYjUyZmI0YWM0OWI2ZTNlNWM3YjY5Yjg0NzQ1MTRmNDMyMiBsZWdhY3ktdHJ1bmsKKzE4MzI4IGQ3ODY0MzQ1YjFjOGE4YzRlN2FiOTJiNTkyZjBkM2NkZjMxZTAyODkgbGVnYWN5LXRydW5rCisxODMyOSAyMTk4NmNjMTRiYjJhN2QwYzQ1NzFlMjc1OGZhODQ1ZWU4MjMwOGY4IGxlZ2FjeS10cnVuaworMTgzMzAgYWMyMjBjMzFkZGQ3ZTlhYjAzZDIwOWEyYmZmZDdlZDM5OWE1Y2I5MSBsZWdhY3ktdHJ1bmsKKzE4MzMxIGUwZDhhNmYyZDA5MTFiMjZkNmZhNWM1MzQzY2JlODRjOTY0YjVmM2QgbGVnYWN5LXRydW5rCisxODMzMiA4NmNmNjQ4MGQyZmE2M2I3ZTRkYTMyYjMxMTNiNDVlNDc1OTk5MTQ1IGxlZ2FjeS10cnVuaworMTgzMzMgNDg4MDRkYWI3ODhjYTZkYTVjMGVkZTUwOWU0YmQyZGRlNTYwNmI0OCBsZWdhY3ktdHJ1bmsKKzE4MzM0IDJlY2U4ZmE1NjgwODA3OGI3NDU2NmZhM2U2YmU3MjRlMjFiMGVmNTUgbGVnYWN5LXRydW5rCisxODMzNSBlZjkxMzkzMzc1NDc0ZmE5ZDZkMzQ5OTQyYzM2ZWI3NzllZjQ0NzMxIGxlZ2FjeS10cnVuaworMTgzMzYgNjU1ZjRjNGJiOTQ0OWIxZGE2MGQ0ZGIxY2NjY2VhMzE0YmNmYTU3MyBsZWdhY3ktdHJ1bmsKKzE4MzM3IDNiZTFmNWM1MjBhZDUyNWYyZjU3NjkwMjViYzAwNGM2OGE1ZTFjNWQgbGVnYWN5LXRydW5rCisxODMzOCBhNWNmZjhjMWY0ZTRhNDIxNGI4ZjM5Y2VmM2MwNjg2NzMyMDYyZGRlIGxlZ2FjeS10cnVuaworMTgzMzkgODU2YjJiYzIxNmY5ZmIzODI2Y2YyMTUxNGE1NDYxNGMzYTE1NDY0OCBsZWdhY3ktdHJ1bmsKKzE4MzQwIGU5ODk2NGJjMjY4MTQzMjMxNDBjZjE5NGUzMzdlMmU0ODcwZjRiMGUgbGVnYWN5LXRydW5rCisxODM0MSAzYzMzZjJjMzU3ZDNiNmM3NWY0YzMwNjllZTE5YWQxZDBhYTdkNjU0IGxlZ2FjeS10cnVuaworMTgzNDIgMDdjMmUxMzYyNjBjM2VjZTQwMjY1ZDg1MjBmMjJlMWQ5OWNjZjFjYSBsZWdhY3ktdHJ1bmsKKzE4MzQzIDY4MzhlNzJmOGRkMjcwN2RhMDhlMjEwNTk2ZWU2ZDliOGQwZDQ1ZjYgbGVnYWN5LXRydW5rCisxODM0NCAxMDVjMjUwNTJkZTk4ZWM2YTQ2NDU2NGQwNmUxZjljNjQ0NzkyNGQ5IGxlZ2FjeS10cnVuaworMTgzNDUgMDc3MDUxNzdjYTZiZWQ5NWE4ODI2NjQ5ZDU0OTljMTA0ZWU3ZjYzZCBsZWdhY3ktdHJ1bmsKKzE4MzQ2IDEwOTFhZDlhMDMwM2NmYzhhMjZhMzlhMzVmZTQ4ZmU0M2ExODY3ZDkgbGVnYWN5LXRydW5rCisxODM0NyBiMzM5OGM0NTJkOTU5MWEyMTQ0NTA0MDYwOWFiM2EzMDI3ZDdhNDcxIGxlZ2FjeS10cnVuaworMTgzNDggZjBjYTRjNjc5NTdiNTdhOWYyY2M1YWYwNmI5NWEwY2VhZTFjYjJiNSBsZWdhY3ktdHJ1bmsKKzE4MzQ5IDJkMWJiYmFjNzZkMzA3YTBmOThiZWVjZjVkYzM0MDNlMjQ4ZGVjNTcgbGVnYWN5LXRydW5rCisxODM1MCAxMGY2ZTE5NTY3MWRmZTdmN2E4YjhlOWEwNWQyMmUxODUyY2VkY2FiIGxlZ2FjeS10cnVuaworMTgzNTEgOGE1OTZkMTBiYzcwODUzYmJmYmFhOTFjYWRjMmY5MDcyMTFjYjMzNyBsZWdhY3ktdHJ1bmsKKzE4MzUyIDU4YjRhZTRlYzU1YzZlOGNlMmIwYmFmMjc5ODcwMmZhZjdhNTEzMmQgbGVnYWN5LXRydW5rCisxODM1MyBmNjQwMzkwMjNkNjQ5MjNhMDlmYmU0OGI4NDhjNDQ2OWYxMWY0OGQ5IGxlZ2FjeS10cnVuaworMTgzNTQgZmQ4NGIzNTI0MTQ1NzYxMzg5ZDZjYmQ4Zjk5NjkwY2NiYTdmYjQ4YSBsZWdhY3ktdHJ1bmsKKzE4MzU1IDhiNTk2NDUxZjFjMThmMTc0ZmRjZmE5YWVhM2ViYTM5NDkzZWY2MjYgbGVnYWN5LXRydW5rCisxODM1NiAzMmM0NDBkMmIwZGZkNmRkMWM3NmRmYzQ3MTc5YjJmNGUwYjFkMTU1IGxlZ2FjeS10cnVuaworMTgzNTcgMjZkNDE0YzBhMDkyMDJlMGJmMDUxZGI3ZDhjOTA5MDRhMGE2MTNhNyBsZWdhY3ktdHJ1bmsKKzE4MzU4IGYzYmY1ZjA4MmEzZjhhNzlmZjIxNmI0ZmNmZDU2ZGU2YjE0MmJmMTggbGVnYWN5LXRydW5rCisxODM1OSA0NjI3NTYxMWNkNTliZTg4ODI1M2QyMWYyYjNjOWUxNDM2MDFkMWFkIGxlZ2FjeS10cnVuaworMTgzNjAgOGJlODg5ZTgxMTViY2IwNGQ0ZmM5YWE1ODliYjU1ZTBmNjdmZjJjYyBsZWdhY3ktdHJ1bmsKKzE4MzYxIGQxMzdiOTRmM2RkZmQxNmViZTM1NGYzZWY0MWNhMzRkOTliNTM2ZjIgbGVnYWN5LXRydW5rCisxODM2MiA1NWY0YTZlOGI1YjNhN2U0MzFiOTMyOWJmNDlhNjliODU2YmQwZDRhIGxlZ2FjeS10cnVuaworMTgzNjMgZGFhZGQxZTg1MzE2NTgxODRjODY4ZDc5MzZhNDIyNWY2ZmE2MjhkZSBsZWdhY3ktdHJ1bmsKKzE4MzY0IDM5NzQyYzkxYWRkM2U0N2UxMTI4YzQwOTEzN2Q5NWZkZDJlNjkxMjEgbGVnYWN5LXRydW5rCisxODM2NSA0YjY1OGMwNTljMjNkOWRmOWNiY2JjNDhjNzI2ODkyYmM2MDQ1YWNlIGxlZ2FjeS10cnVuaworMTgzNjYgNWU5ZDAxMjdhY2U5YTFjYzYwMWE3MDU0YmMzMTQzZjJkYjg4ZGEwYSBsZWdhY3ktdHJ1bmsKKzE4MzY3IGFjODMwYzllOWE4MzcyYTMxYzFiNzVmNzg3MTdmNzA5OTBiY2I4NzUgbGVnYWN5LXRydW5rCisxODM2OCAzNDA1OGFmOTc2Y2VjZWVhZGYxMDMyNDBiZWMyNWU1YzljYzcwNjQ4IGxlZ2FjeS10cnVuaworMTgzNjkgZWNkZTc3MTQyOGY5ZWI0NzJlODY1ZTlkMzBmMjZjZDFhMWUxMDdkNSBsZWdhY3ktdHJ1bmsKKzE4MzcwIDMwNTQ2YTJiOTQ1MGU1ODljOTgwOTUxMjAzZTJkNjAyMzFjOTY5OTAgbGVnYWN5LXRydW5rCisxODM3MSBkYjc1NzAyMjVlZjg0MjE5YTkwMGJmYTdiMThmZjQzNjgxMmUxZDI2IGxlZ2FjeS10cnVuaworMTgzNzIgMzQ4MGU4M2UxN2FiYjFlODQ3YWMyMjE0YWU5YThlNjg1YmFmMWMxMSBsZWdhY3ktdHJ1bmsKKzE4MzczIGUxMWMxMjMyM2ViZjVjNTA5MjUxZDk2MmMxODQ4MDc0OTc0NWRhYTYgbGVnYWN5LXRydW5rCisxODM3NCBlZmM5NmFhYjcxYzI4OTFkMDdlMTAzZWIzYmQyMThhMTg0OWZmZTdmIGxlZ2FjeS10cnVuaworMTgzNzUgM2U5NGNjMmEwNDczZmY1ZjhiZDc1ODY5ZWMwNDUzMzE5MmYxZGI0MiBsZWdhY3ktdHJ1bmsKKzE4Mzc2IGRkNTgzYzMzZjQ1NWFjYTM1M2U0OGI4MjVjNTQ4ZmE2NjcyZmQxYjAgbGVnYWN5LXRydW5rCisxODM3NyBjMTMzMzY1NzJmNGY0MWEwMWJjMzhjZjVjOTE5MDhhMWYwMzBlYjdmIGxlZ2FjeS10cnVuaworMTgzNzggNWU0MWViZGZhOWEwMGU0M2Y1NmM4ZjM4Y2E5OWYxNjQxOTY0MmI2YiBsZWdhY3ktdHJ1bmsKKzE4Mzc5IGMwYWQ0YzJlZjQ0NDYxZmNhMjg2ZjM3MjdiOWQyMzgwZTI4ZTIzM2UgbGVnYWN5LXRydW5rCisxODM4MCBlZDI5ZGY3ZWI1Yzk2MTg2ZTdkMjAwMjc5MWNhZmNlNWI5ZDdjYmM3IGxlZ2FjeS10cnVuaworMTgzODEgODg1NGQ5ZDVhZGQ1ZjQ2MjFlMmZlNzE5NWYzN2NjMTFmNGY1ZjA5ZiBsZWdhY3ktdHJ1bmsKKzE4MzgyIDA3MGVlMzFjYWYyOGI3MGVjMDUxMjJiMWYyMTQ2YTNjMDZiM2ZhYWUgbGVnYWN5LXRydW5rCisxODM4MyBhYWE1NDc1MmU0YmFkMDM5NjA1YWNjODM5ZGYwOWZlOTYzZGU2Mjc5IGxlZ2FjeS10cnVuaworMTgzODQgMTAyMjFhNmM3YzNjNWY2Y2VjYWZmM2IzMDgyYTUxNWFjOWFkZDhjNSBsZWdhY3ktdHJ1bmsKKzE4Mzg1IGNmMTc1MGMzZjdmN2Y5OGQwOGVkZjAwMGZhZmM0YjBmNzk1NzA2MjMgbGVnYWN5LXRydW5rCisxODM4NiAzMmM1NWY1NzQ2ZGVkMjBhMjM1M2Y3NDhlMjkzZDgyY2U5NzhhZGFkIGxlZ2FjeS10cnVuaworMTgzODcgOGQ5ZmZmZWQzNGY0MDY0YmRjOTBkMmE3ZjVjYTgzM2U1NjViNDZhNyBsZWdhY3ktdHJ1bmsKKzE4Mzg4IDA0MWQ1N2UzYTJiOTA0YmU1YThmZmYwY2M2ZjI5OGY1MDdhMTExYTUgbGVnYWN5LXRydW5rCisxODM4OSA1ZmUyZWM1MDQ4MzZjMTBmMjA5OTk0NjhmNjU2OTUwOTUzZWU4YWJjIGxlZ2FjeS10cnVuaworMTgzOTAgYTkzZDc5ZGE0ZjhjNWRiY2YzZjg0YmRjNDA3MDc2NjU0ZTlkNTI0NyBsZWdhY3ktdHJ1bmsKKzE4MzkxIDc5ZmNkMmIzMTgwOGJkZTZjZGExNDc4NjMxNWViNjJhYzlmNTM1OTUgbGVnYWN5LXRydW5rCisxODM5MiBhZDE0ZGRiZDA5YTcyNWVmNmI0M2VlYTE0M2JjNzI4MWM2MDU3ZDAwIGxlZ2FjeS10cnVuaworMTgzOTMgMjlmNDI2OTQ0MDJiODBjZDk0Mzc1YjAyOGMyMTA1NmRhY2M5ZDI2NyBsZWdhY3ktdHJ1bmsKKzE4Mzk0IDVkOThkNDk3MTNmMjFhMWM2OTNkY2IzMTQxODE0NzI0MjgyYjAxYjUgbGVnYWN5LXRydW5rCisxODM5NSAwY2I3NTFiNTYzOTE2YzMwZThlN2E2ZWIzNTU1ZWI1ZjZjYTAwN2ZkIGxlZ2FjeS10cnVuaworMTgzOTYgN2VlMzllMTRjZjJiMGY4MmM0YmU4NWFlMDllYjJjNDdmZWQzMDY5MiBsZWdhY3ktdHJ1bmsKKzE4Mzk3IGM1OWY2NDVkYWVkZWQwZGRhNGU4YjAxMTI1OWU2MDVjNDZmZjA3NWEgbGVnYWN5LXRydW5rCisxODM5OCA1MDM1OGQ2NGRjNDM3YjdlNWFiMzkxNWMyZGI4MmFhNDRlNjY2ODkxIGxlZ2FjeS10cnVuaworMTgzOTkgM2IwNGQzNDI1ZmYwZjMxMDg5NGNlNzI1NTg3MjMyNGNiZmQzZDkyZSBsZWdhY3ktdHJ1bmsKKzE4NDAwIDVhYWM1ODczYWFhZTdkMDRkZjdjZDM5ZTI3NmQ2YjBlYzg3Zjg5YmYgbGVnYWN5LXRydW5rCisxODQwMSA5ZDQzMTI5YzhjNTVmMzM3YTliZjU5NTZiMTdiNjI2NDkxNTkxOWI4IGxlZ2FjeS10cnVuaworMTg0MDIgNThiYzk5ZTAxMmE4NWZhOTk3NzE1YjhkZmQ2MDZmZGEwMDg3NjUyMSBsZWdhY3ktdHJ1bmsKKzE4NDAzIDYzNTk0ODAxMDZlY2ZhOTlhZDYxOWM0ZWJkNzJiY2FlMDBjNTQ0ZmQgbGVnYWN5LXRydW5rCisxODQwNCA3ODUxNTVlMmNmY2EyOTQ5ZjBkNzdmYjYwNjBlNWY4OTQ0OTg5OGJkIGxlZ2FjeS10cnVuaworMTg0MDUgY2JkNGYzNTViYjk2Zjc5OGMzMGMxZmViN2YzMDI1M2Y4Njc4NjhkNCBsZWdhY3ktdHJ1bmsKKzE4NDA2IGQ2OTYxMWNjZTg3NzY4M2JjYzU5N2QyZTI1NmRkZTI2YmNkMzVjZTQgbGVnYWN5LXRydW5rCisxODQwNyBiYjkzYjFkY2E1NzE5OGQxOWFkMzg0MjhkNzVjZWI1NDg0ZGE3YzJhIGxlZ2FjeS10cnVuaworMTg0MDggYWY3YzYyM2Q4ZDMzYmQ3YTkwMDNjMTM1YjEyOTkxZTZiYmI4MTkzYiBsZWdhY3ktdHJ1bmsKKzE4NDA5IGYzYjA2ODJkMjZkNjAxMWEzN2Y1YjE3NzJmZGJjMmM0Y2Q2MDI0MGQgbGVnYWN5LXRydW5rCisxODQxMCAyZmRiY2RlZTJlMWYyZWQ2OGE1ZTlhNmVkYmM2MTkwNWQ5MzNiMTM1IGxlZ2FjeS10cnVuaworMTg0MTEgODQ1NjQ2YjA5YmY4MjQ1ODJiODcxZDA5MjdmZjk3MjBhNGIyZTUxNCBsZWdhY3ktdHJ1bmsKKzE4NDEyIGY5YjE4NGE1NzIyMzk1MDE3OWIxYzZjZjEwM2RkYzMyN2YyZGI4YzAgbGVnYWN5LXRydW5rCisxODQxMyA0ZDljMzFmMzJjMDljMjRiZmUyNDQwY2E2OWNhNmNlMDA0MzE3ZDI0IGxlZ2FjeS10cnVuaworMTg0MTQgNTc0MzkzMzZjMmUwZWU5NmVmNTkyMjAxMmY3Y2IyZWYxNTg3ZmE2NiBsZWdhY3ktdHJ1bmsKKzE4NDE1IDQzNTQ2YzVhZWVjY2VhN2VkOTk5MDg5Yzk5Y2Q2MDA3ZGM4ODE3NWIgbGVnYWN5LXRydW5rCisxODQxNiBmNzIzNDViNDM2NjIwMWNmZTU2NTRlMWZkMTFlM2Q2OTRjZjMxYzI1IGxlZ2FjeS10cnVuaworMTg0MTcgZDNmNmYzMTU1YzI0MDRiZDFjOTFkNjdhMDJjYTQxN2U0NTliOWQ1MCBsZWdhY3ktdHJ1bmsKKzE4NDE4IGIxNzU0MDBlOGIyMmFmZDMzYzk0N2IzMWY4NGEzMWEzNDNhYmE3ODMgbGVnYWN5LXRydW5rCisxODQxOSBjODFiZWQwMTY4YTA5NDljYjE5Y2EyNDQ5ZGE2ZmU4YmFiNjE1ZmIxIGxlZ2FjeS10cnVuaworMTg0MjAgZDA4ZjhjZWIzZDU1NmUzZWU0NWY0NjFjZWJlMWI3MWVkNTkzOGFkZiBsZWdhY3ktdHJ1bmsKKzE4NDIxIDE0MzY0NmJhZmQxYmU4OTBmNmRmZWZiMTU3YjNjZWFmZWYwYzM5NWQgbGVnYWN5LXRydW5rCisxODQyMiA5NDUzZjZmYWNlZmE0NWUxNzY5ZDM2MTlkNTVlYTgyMzE2ZTBjODA4IGxlZ2FjeS10cnVuaworMTg0MjMgNzRlZTY2MTU4MWI2ZDQ3ZTg2ZTU0NGQyYmE3NWIzOWI3YjQ4MDM0NCBsZWdhY3ktdHJ1bmsKKzE4NDI0IDM1ZThhMjllNTQ4ODRlMDNiYTUyZWZhNDY0MWZjODFmNTlhYTk3MmQgbGVnYWN5LXRydW5rCisxODQyNSBjMTA0MjZkYTdiY2UyNDIwZDU5MzA3ZDVjYTQ3ODFlODY0NDlhYWM0IGxlZ2FjeS10cnVuaworMTg0MjYgNGMyMDM3OWU2NjNkNDU4MmJmMGE0MjE2YmFmNDU4ODAwZjI1NTdjMyBsZWdhY3ktdHJ1bmsKKzE4NDI3IDk5NDIyZDYxMGRiM2FlOTZmMzEyOGI4MDRkZWFjODJiZTZmZWExOWYgbGVnYWN5LXRydW5rCisxODQyOCBkMzg1MTZjZTZmMTQxOWQ3ZTI5Mzg3MDg0NDMyNTZjMWRkZjkxZGY1IGxlZ2FjeS10cnVuaworMTg0MjkgYjM0MjBiMDAyZDU1Y2Y3MTkwYTQ3YTNjMmNjYjNjZTAxYzhkNjU1ZSBsZWdhY3ktdHJ1bmsKKzE4NDMwIDU2YWRjNjhlMDZmNjkxM2RjOTQ3MzljNTQ5NGRmMzI4M2NjNDU3MWMgbGVnYWN5LXRydW5rCisxODQzMSBkNDEwZjZhZDNjNjAxOGVlYTMxNDEwN2FmMWI2M2E5ODUzYTU5Nzg2IGxlZ2FjeS10cnVuaworMTg0MzIgMDI3ZWU5YTg3MGQyYzIzM2M4ZmQxNTU2ZTVhODYzOTIzNzE5OWZlOCBsZWdhY3ktdHJ1bmsKKzE4NDMzIDIxNzVlNTY3YmQwNjI5MGRiYmE3MjgwYjI4MDgwOTY0Nzk2NWE2MzAgbGVnYWN5LXRydW5rCisxODQzNCAyNDA3NGY5NzIzNWM0OWQzYjM5M2Q3YWQxZTZmYTI0YTA5NjYwYjkxIGxlZ2FjeS10cnVuaworMTg0MzUgNGE5ZjE1NTJiYTY4ZTBiZjAzOTg3MDM5NjY1Nzg1MDMxNzBjMDFhNSBsZWdhY3ktdHJ1bmsKKzE4NDM2IDAzYzMyZmFhMWE0OWI0YzdjNTQ0MmMyYTA3ZTJjMGJlODYyMWYyNjAgbGVnYWN5LXRydW5rCisxODQzNyA1OGZlOTM3ZjczNGE0ODc4YWY0NDliOWE1OTlmYjlmZjhkNDZlNWIzIGxlZ2FjeS10cnVuaworMTg0MzggOTZjM2FlMTNkZGNhODE4YjIxM2NjMTQ2ZDNkMTdkM2U2NDFhOTE2MyBsZWdhY3ktdHJ1bmsKKzE4NDM5IGUwNzY1YzU1MTJkNzE5ODk3ZDA1YWE0YTQzYjJlNDc1ZjFmNWY2NjcgbGVnYWN5LXRydW5rCisxODQ0MCAzMWQ3OGYzNjE1MzBjZjA4NzNlOTM0MTZlNjIwYWQwMDk0MmMyMjE1IGxlZ2FjeS10cnVuaworMTg0NDEgNjY4MTY2YTUwYzcwNzFiNjU3NjI5MTVkNTAzNDFjZmU0NGVhMjc3ZCBsZWdhY3ktdHJ1bmsKKzE4NDQyIGFmYjQ1YjdmYTI1MjhjZWE5MDQ3MjJiNmQ2NTJkZWNlYWVlNDBkM2MgbGVnYWN5LXRydW5rCisxODQ0MyA2MTc5ZDRhZmE0ZTRlNWNmZjNjMjU2MmFiNjgwZmYzNTI3OGUyYWRlIGxlZ2FjeS10cnVuaworMTg0NDQgYjhmNWI3MjY3ZjE0OTdjNDU2MzhhMWUyYTgxZWI5NTM1YWIxNjc0NyBsZWdhY3ktdHJ1bmsKKzE4NDQ1IDY3YzI0Yzc0ZjE4Y2M0MzQ0YzQxNGIyMmE3MjM4YzE3NTMyMTFhY2IgbGVnYWN5LXRydW5rCisxODQ0NiBiMmE5YmM5MTY2OGE3ZjI0MGY0OTNhODY2MWVkODIwNDg2NWFhMzRiIGxlZ2FjeS10cnVuaworMTg0NDcgZmY4NDExMmRhYmM4OTUyMzYwNTgyMmYwZTdhYzUwNjY5ODI0NDc4MSBsZWdhY3ktdHJ1bmsKKzE4NDQ4IGViY2U5YjI2N2JiOGVhNjE5MmQxOTlmMWE2ODNjODM5MTFlZGU0ZWIgbGVnYWN5LXRydW5rCisxODQ0OSBjZTkyMjMwMjgxNjQ4Y2ZkNWMwNWFjMjYxOTc3ZjYyOTViNDNjNDA0IGxlZ2FjeS10cnVuaworMTg0NTAgODU3YTU0MDBiZTg3ZWFkYWNlODcwZmEzODMyNTg4ZWIwZjY3ZmVjZSBsZWdhY3ktdHJ1bmsKKzE4NDUxIDFlNzU2ZjkzYmY1ZGExZTk3ZDM4ZjIzZDJiYTY3YmNhZTg2Y2Q3NjUgbGVnYWN5LXRydW5rCisxODQ1MiAzNjI4NjYzMmZmM2E5M2NmMjNmOTJiZGFkOWQ4ZmFjYjNmMDMwYWE4IGxlZ2FjeS10cnVuaworMTg0NTMgNTI3NTZmNjEzYzE4MmE4YjMwMTQ2NTZhMTU4Nzk2OTlhMGE3ODYxYiBsZWdhY3ktdHJ1bmsKKzE4NDU0IDk2OTQ5MDlkYmIwYTc5ODg2YzUyMGVmMjg3MThjMDQ5YmMyNmEyNTggbGVnYWN5LXRydW5rCisxODQ1NSAxNzc5Zjg1NzRhODNhMGY0N2NiNmU0MjZlZTQyZjY5ZTA4MWNmNzM5IGxlZ2FjeS10cnVuaworMTg0NTYgMGY0MmY2NjY5ZTgwMmMyZWYyNDZjOWQwYzZhZjVjY2VhMWY0NjRlZSBsZWdhY3ktdHJ1bmsKKzE4NDU3IDU5YTQ1ZmE5NTMxOGZlZWY3NzkwODVlYzEzOGZhNzUxMmM4ODAwMTMgbGVnYWN5LXRydW5rCisxODQ1OCAzZmU1OWVkMTFhZjEwZTU0MTI4NmY2YmI5NDJlMGI3MmQxZTEyNTVhIGxlZ2FjeS10cnVuaworMTg0NTkgMTQ4YjhjMWI3MTNhOWRhOWEwOGIwMTVjZDVkNDQ2OTg0N2U3N2I4NiBsZWdhY3ktdHJ1bmsKKzE4NDYwIGQ1YzlkZDI0ZDk3N2I4YzcwNDUyYjI5ZWVjNTNhZWY0OGU4ZGViOWUgbGVnYWN5LXRydW5rCisxODQ2MSA2NjMwY2NhMjk4Y2MwZWI5ZmNkYTcyYTUwODdjMDNhODI0YzEwM2JkIGxlZ2FjeS10cnVuaworMTg0NjIgNTM0MjNlYzBhNzI4ODRiMDU3ZjQ2MTI0ZWNlZGU5YzIwMzc4NWY3NiBsZWdhY3ktdHJ1bmsKKzE4NDYzIGUyM2Q1YjJlMjI4YzQyYzIzOGI2MzQzMmQxNTI0NzIyYzhkYWUyNzMgbGVnYWN5LXRydW5rCisxODQ2NCA5ODdjNzRjODg0Mjg5N2Q2ZjgzNjY4OWUyYjdhMWQ4NjFiYTE0Yzc5IGxlZ2FjeS10cnVuaworMTg0NjUgMTVlMWViMTAxOWI4YTM3YWY0ODhhY2YzNmRlYmZmYjdiY2Y1YjE0NyBsZWdhY3ktdHJ1bmsKKzE4NDY2IGUxZjJlM2VjNzZkNGZlNmFmYmY0NmZjN2QwMmZmYTk0ZjVmOWNiNmMgbGVnYWN5LXRydW5rCisxODQ2NyBmOTliYjZhOTJlODRmNzgxYTY3ZWJmY2U2NTEyODc5NDRlODI2YjkxIGxlZ2FjeS10cnVuaworMTg0NjggNTliZmJiZTU4MWMyZDBiYTllNzZjODRhNzFiYjViZGIzNDdjZDk4OCBsZWdhY3ktdHJ1bmsKKzE4NDY5IGZmMDc2Nzc1M2Q4MTNkYzA4MGI0MGNjMTYwYWRhYWI1NWZmYzJlMDQgbGVnYWN5LXRydW5rCisxODQ3MCAwOTA2YzhlMmM5NjFjM2IwM2YxYjNhYWYzZjgwYzUzN2YyNDViZDQ4IGxlZ2FjeS10cnVuaworMTg0NzEgZWQzMTViNTVmMTllNjJmYWYzOGNkZDAzNzRiN2VmYzMzYTA0NzU1NiBsZWdhY3ktdHJ1bmsKKzE4NDcyIDJmZTc0Mjc1OTFlYTk2N2ZjODdiMGQ5MWRjMjY5OTkxYzZkMTBiMjggbGVnYWN5LXRydW5rCisxODQ3MyBlNTdmOTNhZTRmZTlmNjg1MmMyY2U5YmE5NzA4ZTExN2U0MWJjNTNlIGxlZ2FjeS10cnVuaworMTg0NzQgMzU3NDlhNTU3ZjFlNWQ2ZDBiYTVhN2Y5YjNlZmM1MDJmMTNiY2Q5NiBsZWdhY3ktdHJ1bmsKKzE4NDc1IDdiYjdiNzJmYTY2NjZjMTUyZjA0MmE1YTEyZWRiZjE2YTM4NjRiNjkgbGVnYWN5LXRydW5rCisxODQ3NiAwNzg5ZGQwNjJkNmMwODMzZDAxZmJiNGZmMWI0MjMyNTZjODUzZTg0IGxlZ2FjeS10cnVuaworMTg0NzcgZTEyYjY1MGYwZmFjZTZkMWY4N2ZkZTljZWU5MWFmZjU0OTIyYzAzMSBsZWdhY3ktdHJ1bmsKKzE4NDc4IDA1MmUzNzJjZTE1MWM4NDc3N2YzZmRkOWEyOGIwYjIxMmY0ZTVmMDAgbGVnYWN5LXRydW5rCisxODQ3OSBkM2U4NmZmODkzYjEwNTZkN2UwNjUxN2QxZTlkODZhNTg0NmJjYzU5IGxlZ2FjeS10cnVuaworMTg0ODAgNTBkOWI1OTA2MjdkNjRlMzZkMjlhMDU4M2JiNzRkNzNlODllNTFlYSBsZWdhY3ktdHJ1bmsKKzE4NDgxIDMwZWM4NzMzMzhhZDE1NjQ0ZmRlN2ZhZWUyNDY2MWQwYzllYTdkNGIgbGVnYWN5LXRydW5rCisxODQ4MiA4MjYyYmZhNTE0YzJjMDAyOTNlNzM2ZDI2ZjViYThjNjc2NjYxMzRlIGxlZ2FjeS10cnVuaworMTg0ODMgZjU5NDkzOTdjOGE1ODhmZjZlZDAxZDM4MGVhNDY5ZGUxNDVjYjYwZCBsZWdhY3ktdHJ1bmsKKzE4NDg0IGRiNjljMDkyYzkwNmQzOTc5MzRiMzAyM2Q2NzgyOWI4OTMxMWM3ZTkgbGVnYWN5LXRydW5rCisxODQ4NSA1MGRlM2IxOThhNjIwNWIwNTcwMGNjMmEzYjgwN2ViZGZhZWRiMzM3IGxlZ2FjeS10cnVuaworMTg0ODYgMzhmMDlmYjE4YjgwMjBjNzdhMmM2YzlkNjhhOWY0ZGZmM2VjNmNhYyBsZWdhY3ktdHJ1bmsKKzE4NDg3IDUzODA5NzE5OTc4Mzk4NmQzNGI3NWVhZTY4MGNjZDVkM2VmNjcyZWIgbGVnYWN5LXRydW5rCisxODQ4OCA3ZTJiYjk5NGMyZDNhYzZlNTYzMDJlMTJiOGQzNDg2NDIzY2NmNmI1IGxlZ2FjeS10cnVuaworMTg0ODkgN2YyMmUzNGNlNDBlM2VhYTJjYjkyZWM1NmNkN2ZhOGQ3ODllNDJjYyBsZWdhY3ktdHJ1bmsKKzE4NDkwIDUwYmJlZWRiY2U0YTY4M2JhMzA2M2Y4M2JiMjAyZDgyMzQxNzg2ZmMgbGVnYWN5LXRydW5rCisxODQ5MSBkYjdlZTVjNjBhZjBiODdkMjMwNmMwMjA4NjQ5Yzc2NjEwOGQ2NzUwIGxlZ2FjeS10cnVuaworMTg0OTIgNTUyZGI4ZDgzYWNkODk2ZDIxZDYzYmFlNmRmMGI5ZDY3ZDI1MjBkMyBsZWdhY3ktdHJ1bmsKKzE4NDkzIDE5NzU2YjkxODA0MTY2MjZmOTU0OGU3ODJhMTM2ZWM2N2ZlMTFhYTkgbGVnYWN5LXRydW5rCisxODQ5NCAyYTYxMmFlMjUwOTU5MmEyYzM4MDk4YzM0YWE1NmIxZjcxMWVlYTVhIGxlZ2FjeS10cnVuaworMTg0OTUgNDQ2ZjNmOTM5ZGYwMzk3NjY1N2UxOTFjYjNjMmI5MDI2ZGYwMGI0NiBsZWdhY3ktdHJ1bmsKKzE4NDk2IDgzODU1MTg2OTc5MDRkODkzYjcwMmM0MDVkZTQyNDljOTI5ZDZmYWEgbGVnYWN5LXRydW5rCisxODQ5NyAyZDZlNzY4OWRjNDIwNTc5NTJiYzYyZjI3NDVkZWM1YWFjNzY2OTNjIGxlZ2FjeS10cnVuaworMTg0OTggN2ZiN2M1MWEyZTYxNjIwMDdjM2ViM2M1YWQ3NWMxYjkzYWE0ZDJkNyBsZWdhY3ktdHJ1bmsKKzE4NDk5IDc2MzlhOTU1MjQ3OWUzMDkzZGFjYTgyZDM3MGVjMGFlMTE2NTZiOGIgbGVnYWN5LXRydW5rCisxODUwMCA3ZmI1MDk5YmUyMDI2OWJjNTBiNzIzYjU3M2EwYjhkOGI5MDNhYWRhIGxlZ2FjeS10cnVuaworMTg1MDEgYzRiZWM3YzRkNmZmNjQxMzhkY2UyYTJjODBkZjY0YzJiOGU4NzQyOCBsZWdhY3ktdHJ1bmsKKzE4NTAyIGYwY2RhMGQ0YjUzYzIwODI2YThlNTgzYWEwMzAxNzU0NzU3ZTczNmEgbGVnYWN5LXRydW5rCisxODUwMyAxOWM4YTJkMzgwN2Q1OGRhMDQwZWFhN2QzY2U2ZjM4OGMxZjg0N2ExIGxlZ2FjeS10cnVuaworMTg1MDQgNjNiODBiNzdmNWIyZGIzMDlmOTg3MmE2ZWFhNTExMDI2ZmM4MmQ2NCBsZWdhY3ktdHJ1bmsKKzE4NTA1IDhjZmUyNmVkNzI4ZDk0MmQwZDUyZjFhNDU2MzFkY2JjZWQ1MGQ5YjIgbGVnYWN5LXRydW5rCisxODUwNiBjMTNmNWEyMGVhMzEyMzM4YTFmZDY5YjM0ZGRlMWE1Y2UyOGMxMTQ2IGxlZ2FjeS10cnVuaworMTg1MDcgNWIxNThmYzBlZDU1NWExYWIxZTg0MjQ1MTkzMjMxYTAxOTAxZTY3MiBsZWdhY3ktdHJ1bmsKKzE4NTA4IGU5ZjRiNzY2OTlhYTIzMTBkY2YxOTY1YzEzMzg3OTc4NTU4YzE3MDQgbGVnYWN5LXRydW5rCisxODUwOSAxYTRhNWE5MzZmNTA4Y2U1YzU0N2ZhMDA4NDQ3MTg5MDgyMjJhN2FhIGxlZ2FjeS10cnVuaworMTg1MTAgNTZjNzQ0ODNiMDUwY2MyMTY3MGVmNTc0OTNlMGU0MTkzNTIzMTQxOSBsZWdhY3ktdHJ1bmsKKzE4NTExIDJmMTc4YmRkZGMxNjM3ZDFiMTVjMjhiYmNmYjkxYTc2NzY0ODY1YTMgbGVnYWN5LXRydW5rCisxODUxMiA5MjdiY2MzMTVlNTZlODMwMWYyYzU1ZTdiMWNmYTQ3NTk2N2Y5ZGE5IGxlZ2FjeS10cnVuaworMTg1MTMgM2UyNTRmNTZlZWYxY2Q1YzRmMjc2NWY0MjE5Zjg5ZGQ0NGMxNTU2OSBsZWdhY3ktdHJ1bmsKKzE4NTE0IDgyYmVjMzg4YzYzNjI5YWFjNWI4NDBhOGE4MWQ0NjU0ZThmMjk4OTEgbGVnYWN5LXRydW5rCisxODUxNSA2NDA1ZjMwYWEwOGMyY2M1MTA4ZWNhNmUzM2Y3ZTM5Mzk0YTgzNWE2IGxlZ2FjeS10cnVuaworMTg1MTYgODNkNTk5NjUyYjYyMmI1MzlhYWJlZGM4YTBkZjgyMDc1MzExNjI5OSBsZWdhY3ktdHJ1bmsKKzE4NTE3IDE3M2Q3MGU3MmM5ZjY1YWU4YTVhOTZkMmVlOGE0MTc0MTFkYjhjNTkgbGVnYWN5LXRydW5rCisxODUxOCAwMjZhOTIxMDUxNDUyOGM0ZGJlZmRlZTdlOWE2YzIzNWI3NzAyZjhmIGxlZ2FjeS10cnVuaworMTg1MTkgNTZjZTM4ZTU3NTAyNmJiM2MyYjA2OTY3NDc5NDI5ZWQ2NmE0NTEzYSBsZWdhY3ktdHJ1bmsKKzE4NTIwIDY1ODVkM2MwNGEyOWQ4NTY5YWQ2NGQ2OGJhMGFmNTFjZGYyZDkyNzcgbGVnYWN5LXRydW5rCisxODUyMSBlYWY1YTc4YmQyODI3MTE4YTI2MTY2YjMwOTAzYjRkNjRhODEyZDA3IGxlZ2FjeS10cnVuaworMTg1MjIgYWZhZDY1OTc1YTgyZTVjNDk5YWNlMzEwNzIxODMyMTM4Y2MyYjdiNyBsZWdhY3ktdHJ1bmsKKzE4NTIzIDVmM2VlNWYxYjNkNzk3ZjllZGY0OGNiZTJiN2JiNzM3NzM2Njc4NDIgbGVnYWN5LXRydW5rCisxODUyNCAxZTQxNzE3MTdlNzdjY2YxODFmYzZjMWQzYjcwODkyZTlkODQzYWNjIGxlZ2FjeS10cnVuaworMTg1MjUgMTgzZDBiZDJmZDY2ZGMyZWM1NGEwODY3NmY0MjBlNTJmODQxNmU1ZCBsZWdhY3ktdHJ1bmsKKzE4NTI2IDE2OTA3NTVjNTk4NmJhYmQzNDQwNTVmNmE4ZmRkYzg2Y2I1ZmVhZTYgbGVnYWN5LXRydW5rCisxODUyNyA5MGVhMWUzZWVlYjE0ZDM0M2RkOTFhNGIwMDFkYjFlZmQxZWE2ZDcwIGxlZ2FjeS10cnVuaworMTg1MjggM2Q1NWJmNjU2OTlhZGRjNDZhMGZlODI2MTI5MDVhYTUyODA3NzQ1OSBsZWdhY3ktdHJ1bmsKKzE4NTI5IDhiNGNhNWRhN2RjMjY1ZDg3NmNiMzEyMzcxOTllYTY3MTk1YmE2ZmIgbGVnYWN5LXRydW5rCisxODUzMCA1YzY1ZTY3NmYyOTk2YzUwZjA4NjRiNGYwNDgzODJmYTk4YmY5OTU0IGxlZ2FjeS10cnVuaworMTg1MzEgNTFiNTg5ODA0MDUxNGY4M2JlNzRhNzM0MzM3NzE0YjkxMDNmZTk4YyBsZWdhY3ktdHJ1bmsKKzE4NTMyIGMzYzhiZmFkMDdjYTMyYzMyOWM4YzJlOTNkNmVjNjJhNmY1NDdlY2UgbGVnYWN5LXRydW5rCisxODUzMyAyNzdhN2ExNWViOTRiMDUzNjE1MmM1NWVhZWQwYzgyNmU3YTY3MTBjIGxlZ2FjeS10cnVuaworMTg1MzQgNjdiM2FjNDM5ZjY0MDIyODBmOTU3YzMxMDkxNWEzNWYyZGU4NGM0ZCBsZWdhY3ktdHJ1bmsKKzE4NTM1IDc1YzNhNjQ4NDdjNDlhZjIwNzY1MzJmNWJmNTNmMTBkMDQ0ODMxYjIgbGVnYWN5LXRydW5rCisxODUzNiA5M2E1NzViYmEwOWY2Zjg1Njg4YTdiNmViNjdjZTk5YWI1NDhhOGVkIGxlZ2FjeS10cnVuaworMTg1MzcgM2YyZmYzOGNjNjU3NGVkOTljMTIxODBkYWVhZWVlNGVkOWU1MDMxNSBsZWdhY3ktdHJ1bmsKKzE4NTM4IDI5YTJhMTE0ZTljOTMzMmM2OGQwYjQwMTQxOTBlN2Q2NjY2NTFhZmQgbGVnYWN5LXRydW5rCisxODUzOSAwMWE0ZGMzMWI1NzliMjRkMWI2NjdlNDUyNGIwZTA1ZDlhNzNiNjI5IGxlZ2FjeS10cnVuaworMTg1NDAgOWM3MWFkZDdlMTYwODE4YWVjY2EyN2NjMWIyYWE5MzZmZDlkMDhlNyBsZWdhY3ktdHJ1bmsKKzE4NTQxIGVhNDgzMmRlZWFjNTlmMTdhMGI3NTNlMDY1ZGM0ODcxZGEyYWUwZTIgbGVnYWN5LXRydW5rCisxODU0MiAzY2E3MDJjYWE2MWFlYWNjNjk5NWQwY2JmZGE4YTg2MmE0ZWUxMGY1IGxlZ2FjeS10cnVuaworMTg1NDMgYTUxOWYyMDdlZDM2ODcyM2RjMjA5NmNkYjhiNGQwOGExNjQ2NGVmMCBsZWdhY3ktdHJ1bmsKKzE4NTQ0IDEwNjEyY2JiNDYyM2FkZWZiOTZjZjY5ZGU5ODJiZjBhMTdhNTQ2MGUgbGVnYWN5LXRydW5rCisxODU0NSBlY2RhY2Y1MTc1OTQ1MjVkYWE1YjhlOGMyNDQ1MTRlMzA5MzI4YTAzIGxlZ2FjeS10cnVuaworMTg1NDYgZDZmODY2MTlkYmM3MzRmYWUzYzNkZTQ3NWU1YTlmMTEwMmM1YzhkYiBsZWdhY3ktdHJ1bmsKKzE4NTQ3IDk4NmQxYzNjY2RkZTkxYTE0MTZjOTM1ZTg4ZWU1M2QyOWViMWMwMWYgbGVnYWN5LXRydW5rCisxODU0OCBlOGY1ZTYxYThiOTQzNWE4MzY1OTUxMWNhMTRhYTAxNmFiZDkyZTRkIGxlZ2FjeS10cnVuaworMTg1NDkgODRjZGM4OWFjNTYxZjk4MmFiN2I5OGEzZDQ2ZDU2NWE2MGE3NGY5ZSByZWxlYXNlMjAtbWFpbnQKKzE4NTUwIDE3NWEzYjE3MjA2ODgwYTI4ZDdmNDE2ZmMxMTBjOGVhMjk4MDU0OWMgcmVsZWFzZTIwLW1haW50CisxODU1MSA1NTZhNGU1M2MyNjk3NzMzOTE4ODFjNjE1ZGZhMTdhMTBkM2VkMjhhIHJlbGVhc2UyMC1tYWludAorMTg1NTIgZTYwNTYyNDAwMGJmMTkxMDUwNjliMDdhMGM2OGIyNDZhZmI2N2E1MyBsZWdhY3ktdHJ1bmsKKzE4NTUzIGY0MTcwNTMwNGFmNDQyZjMyY2U5MDZkZDJmNGQ4OTkxMTQ2Y2YwOWEgbGVnYWN5LXRydW5rCisxODU1NCAyODBhNzhlZDAwMzU1MjgwOGRjNDRjYmJmN2M1NzYyNjZhZTE5ZDRhIGxlZ2FjeS10cnVuaworMTg1NTUgNmYxNDUzYmJkNTY5MDJlYjRmYTc1MTcxMTAxMDcwZjFiNDBmOWVmNiBsZWdhY3ktdHJ1bmsKKzE4NTU2IDEzOTY4NGE5MDA0MWEwZWNjODkwNzZhNzY1YTRiZjYxY2Q1OTNlNTIgbGVnYWN5LXRydW5rCisxODU1NyA1N2E0ODU3NDMwZmY1ZDI1NzcxZDVjZjI0MzI1MzdmMWU0ODNiOTljIGxlZ2FjeS10cnVuaworMTg1NTggMzZmN2MwOWMyZDdmMjQzZTZjM2E2ZjVjZjc3ZmMwOTdmZTVhMDI3YiBsZWdhY3ktdHJ1bmsKKzE4NTU5IDBjMjJhZjJjZGQ2ZmIzN2E3MTA5ODk0YmI2MjE3YjIxYTI0NDdmODggbGVnYWN5LXRydW5rCisxODU2MCA4ZTAxNDE3ZWMwMDE3YWI0ZTRmMjU5NjQ3ZjNmNjRkODNmOTgzMzg4IGxlZ2FjeS10cnVuaworMTg1NjEgNGIxNjhlZWI2MWIzYjdjNzRjNjhiZGRiYWYwY2U2MjM0NGY2NDEwNiBsZWdhY3ktdHJ1bmsKKzE4NTYyIDVhNWU5ZTdmYjZiMjEyNzA5YzQ1YWJiYzhlNjRlYzQxYjRiYjVhNmYgbGVnYWN5LXRydW5rCisxODU2MyAxOTk3ZGZlZDhkMjFkNmQ5ZjVlYmRkNGQ1ZDBjOGU4ZWY0MTE2NWQ2IGxlZ2FjeS10cnVuaworMTg1NjQgZjZlZTBkNDY3MmQ2Mjk2MDY1ZDZiODgxNmVhMDgxNWZlMzRiYjMxMCBsZWdhY3ktdHJ1bmsKKzE4NTY1IDYxMmZiNzcyN2ZhMjk4ZTE2ZjFjYzk0NGFmM2Y4ZDY2NmY5NThlOTMgbGVnYWN5LXRydW5rCisxODU2NiBiNDA4YWNkY2FmM2VlZWNjNWZmMGYyYTFiZGNjODBkZTc4MDBkYmEzIGxlZ2FjeS10cnVuaworMTg1NjcgYmY5YmIwZTNkZDM0MTNmMzA2NzYyZmNhMTliZTgzZGE4OTUxOTZlZiBsZWdhY3ktdHJ1bmsKKzE4NTY4IDMwNzVhMTUzYTA4M2UyMjliZGNhMmZlYmFmMDE5MzBlMWUwMWY0YjggbGVnYWN5LXRydW5rCisxODU2OSBlMjk3OGMwYjdjYmQ2OTIxYWY5NmEzOWQzNDFiMGJmMGE5NTIwN2E3IGxlZ2FjeS10cnVuaworMTg1NzAgMTYxODkyYmY3YzE1ZWZlOThlZGY0OTkwM2VmYTkwMWUyYjRiNTMxZSBsZWdhY3ktdHJ1bmsKKzE4NTcxIGE2MjZlMzlkNjg0ZGMyM2ZhNmY1ZjRhYTYxZGU3OTg2ZTVkOWYwZWMgbGVnYWN5LXRydW5rCisxODU3MiAyNDgxYjVmZTg2ZDZkY2U3YWM0NjAzYzMzYjk1MTVhNmJmNDMxOTE2IGxlZ2FjeS10cnVuaworMTg1NzMgOTAxZjM4ZjdmNmY3NTUwNzc1MmQwMzZhMjA3MDQwN2E1YTFiM2NkMSBsZWdhY3ktdHJ1bmsKKzE4NTc0IDM2OTNhYmQwZWFjMWQ0MWE0NzA4N2UwMjc2ZTc1NGM1NjNmZmMxODkgbGVnYWN5LXRydW5rCisxODU3NSAyYTMwNTEyOWQ1NjZlYzE0M2U0MjcyYThiMDUwYmYyODU2MTlmYzkwIGxlZ2FjeS10cnVuaworMTg1NzYgNGQ5NzhhZDhmYjA1ZDYwNGVhOTc0YTA2ODY3M2I3MmQ4YjkwNTE1YSBsZWdhY3ktdHJ1bmsKKzE4NTc3IDM2MmU1M2Y0M2RkMjM2MWI5MDk4OGZlNjRjODI4MmVkOTQzOGRlOGMgbGVnYWN5LXRydW5rCisxODU3OCBjNjU2ZjMwOGFhMWY4N2ZjZmRkZmEyM2FkZmI4MGI1ODAwYjUyMTA4IGxlZ2FjeS10cnVuaworMTg1NzkgNmUyZWM4ZjdjODcxZjc0YTNiZWMyZWExZmU2MTI3ZjFhZmE5ZDVmMyBsZWdhY3ktdHJ1bmsKKzE4NTgwIDI2NWY0ZWY3ZDdiMWQwZDYyNWEzNDMwNmVjMDZhZDhkOTA2ODNlYzcgbGVnYWN5LXRydW5rCisxODU4MSAwNjEyNTJmNWM3Mjk2Y2QzNDY4NDhlY2MzNDFhOGVmNjJmNDhlNTk2IGxlZ2FjeS10cnVuaworMTg1ODIgZWFkOGI1Yjk5NGFkN2NlNjEyY2Y2MGViYzQ2MDJjZWY1ZTRhYTM3NSBsZWdhY3ktdHJ1bmsKKzE4NTgzIDNlODYyYTUxODYxZmQ2YjZkY2YxOTJlMTdkOGJmN2QzNTBkYzVhMzIgbGVnYWN5LXRydW5rCisxODU4NCBhYzdhZTNlYWQ4OGE0NGFhYTM1NDlhZjAwYjVmZTdmZTgxYmEzNmU1IGxlZ2FjeS10cnVuaworMTg1ODUgMmRjYzRhODZhODc2YTcxZjdjNmE5ZTczN2FjNWE2M2Y1YzM2MGEyMCBsZWdhY3ktdHJ1bmsKKzE4NTg2IDhlNDAyYWVjYTBhM2QxY2RmOGRjMzRiZmEwZTVmNDc4YzdlOWIyMzkgbGVnYWN5LXRydW5rCisxODU4NyBkYjlmMTg5M2JlMDE2ODE2Njc2MjVhYTM0OGUzYThiYzlkMDU1NDJhIGxlZ2FjeS10cnVuaworMTg1ODggNjQxYWQ2YzgzM2JlODA0Y2FkZjVhYzgwNWUyYWEzNzNjYWEzMDJiZCBsZWdhY3ktdHJ1bmsKKzE4NTg5IDRkZDBiOTdhYTZlMTY2OTI4YjBjNWE1YTI2YjkwZmQ5ZDk5Y2QwOTkgbGVnYWN5LXRydW5rCisxODU5MCAyYjNiYzA4ZDRkODUzYWVmNDA0ODRmMTNkOTdhNWE1ODI1ZmExYmI3IGxlZ2FjeS10cnVuaworMTg1OTEgZDNjN2VkMTVjZTI1Nzc4ZWI5NTExZmJmMTA3MWE4M2Q4NGZmNjVlNyBsZWdhY3ktdHJ1bmsKKzE4NTkyIGEwNjQxNTk5NGNiNTZhNzg2ZjYxZjVlMTAzMDA5NDU3NGJkYTdhMDMgbGVnYWN5LXRydW5rCisxODU5MyAzYWQzMDA0ZGZlNmRiNmQ5ZDQzYTg2NjgyNzc1NGZiMjA2MDBmMzIzIGxlZ2FjeS10cnVuaworMTg1OTQgMDBjNjg1NWQ3NDJhOGQyYTUxODgzZjY4ZTc5NGU3Y2ViOGE5NmEzYiBsZWdhY3ktdHJ1bmsKKzE4NTk1IDMxN2MyMDNhYmVlNjg2Y2I2YmRhMjg3YWJmYTFkNTJlOTlmMGZlM2YgbGVnYWN5LXRydW5rCisxODU5NiA4NWRjMGNlMDE2MmU2ZjNjZTY1NjQ0M2UwYTQ2NDBlNmI4OWU3ZTE1IGxlZ2FjeS10cnVuaworMTg1OTcgNjEyNGNlZGY4NDM4ZGM4NmEwZjgzOTUyNDNmYzk0YTE2ZjM2YmU2OCBsZWdhY3ktdHJ1bmsKKzE4NTk4IDI3MjkwZWI5YzUyNjRiMDdiOTVjNWM5ZGNkZmZjZDU0NmQ5MWYzMDggbGVnYWN5LXRydW5rCisxODU5OSA3NmNhZjA4NTVkMWZmZTdlOTcxYmMxMTAyY2E4OTI5MGE5OWNmODNmIGxlZ2FjeS10cnVuaworMTg2MDAgOTc4MjFhNDZlMDAwMzAzYTZiODJjMDkyMzE2MWZlMGJjMDVmYjBjOCBsZWdhY3ktdHJ1bmsKKzE4NjAxIDBhNzcwMTNjNTBhY2EyMDQ1YjE0ODg0ZjU4MzE4MDc1Yzc3ZDMxOTIgbGVnYWN5LXRydW5rCisxODYwMiA5ZDE1YmFmNzE0NWFmZjJlNTA1YzBmMmIzYmY0NWFlZGJiMWQ4ODk0IGxlZ2FjeS10cnVuaworMTg2MDMgYWJiOTQ2MDkzMThlNmM0MzQwNDc3ZDBmMjE2YjNiNjIyM2E0Njc4ZCBsZWdhY3ktdHJ1bmsKKzE4NjA0IGJmODA4NjY4MjRlY2I1ZWY4YTc4YzU5YTM4ODhlYzExOTcwMGMzZDkgbGVnYWN5LXRydW5rCisxODYwNSA0YzA0M2UyMjdjNDQwN2VhZGIwOWYxZjFiZDM4ODk5ZmRmMjRkNGNmIGxlZ2FjeS10cnVuaworMTg2MDYgZjVjMDQxMzRmNGUyYmQ3YWQzYTlkYzhjNWFiY2E2N2EwM2IxOTJmNCBsZWdhY3ktdHJ1bmsKKzE4NjA3IDRkYmJmMzIyYTlkZjJjZmJiNTU4OTBhYzQxNWE0M2I2Y2YyYTZiNzUgbGVnYWN5LXRydW5rCisxODYwOCBmYTNmNTM3YzgyNDljNDRhYWY2NjA1NTZhNWExZWQzMjI5ZTI3MDgwIGxlZ2FjeS10cnVuaworMTg2MDkgNzlmOWUzMzMzMTZlNmJjZGUyYjA5YWMxYzA3YWU0NTk3YTY1ZDhlOSBsZWdhY3ktdHJ1bmsKKzE4NjEwIDc3Yzc2MWNkMTI3MmU5YjAzMDQzYmU1YTI2YWIzZDY0MzYyNzkyZTMgbGVnYWN5LXRydW5rCisxODYxMSBkNjdjZmNjMDY4M2VkYTg0ZmQxNjQxNTU1YmI4ZTAxOTUyZTRjZjYzIGxlZ2FjeS10cnVuaworMTg2MTIgOTM5YjhmZmZjNDUyZTA1MjViMzgwMDYxYjYzMjg2OGQzNTVlNmU5ZCBsZWdhY3ktdHJ1bmsKKzE4NjEzIGMwODIyYTA1ZTkyM2I2ZjUwMDk0ZDg1OTBkNDI0MGVhODE5ZmQ4YjUgbGVnYWN5LXRydW5rCisxODYxNCA4ZDAwZjc1NTVlZWMyNzgyZjg1MGNhMGZjZmI5ODY3MGZmM2FmZWI4IGxlZ2FjeS10cnVuaworMTg2MTUgN2M4ZmFjNGFjMzFhYmQ1OGM5MzFiYWJlMjZmZTNjMDlmMDA0M2IxNyBsZWdhY3ktdHJ1bmsKKzE4NjE2IGE0M2E4YTFmNDZlZTFiYjY1Yzc0NzNiYzliZTY5ZTJhM2ZiNTM2MGMgbGVnYWN5LXRydW5rCisxODYxNyA0NTk3OWNkY2QzNjk3MzljYmI4NTlhODVmNWY2YzVkNjU1YTQ5NDc1IGxlZ2FjeS10cnVuaworMTg2MTggYTllMTViY2FiMzJjYjYwMTMzZGI3NjEwZjAxYjNkMjZlOWNlMTUyYyBsZWdhY3ktdHJ1bmsKKzE4NjE5IGExZDg4YWIwMjNhMGJlY2Q1ZGVmYTUwYjhjMzUzNmYzNGNlMWU3MjkgbGVnYWN5LXRydW5rCisxODYyMCBhMzFjMzg2OGM4MTJmY2U3NjY2ZDEyNGI4Y2I1NDQ1ZjZkZWRmYWMxIGxlZ2FjeS10cnVuaworMTg2MjEgYTU2YzAwMGU1NzljZjdlNDM1NjcxZWZjYjhhNzUyMzczOGY1MjkwMCBsZWdhY3ktdHJ1bmsKKzE4NjIyIDk1ZWU3OWRmZDc0NjIzMTg2N2Q3Mzg0ZWIwYjAzN2E0ZmE1MTA0ODEgbGVnYWN5LXRydW5rCisxODYyMyBkZWY0MTZjZDkyM2RmMjJhOGIxYWZkYTQwYzRjYTY0OWQ4NjkwZDBiIGxlZ2FjeS10cnVuaworMTg2MjQgMzVlMDhkZDM3ZGYxMzdlMTY1Mjg1NjgwNWU5Mzk1YzJlYTZjZmUyNiBsZWdhY3ktdHJ1bmsKKzE4NjI1IDdiM2Y4ZTc2MWEyZDgyZGIzNzZjMjgzMzA3OGI0ODU5ZGUxMzg1Y2QgbGVnYWN5LXRydW5rCisxODYyNiA2ZDhmN2UxMjQyYzAyOWQ4MTYyODk4YzMxZDY2NDZhMDViMjAzZDI3IGxlZ2FjeS10cnVuaworMTg2MjcgZDZlNmE1Y2ZlYjNkNmI3ZDAxYWU1ZmVkZTZjNDY5N2VjNDI4MzgyYiBsZWdhY3ktdHJ1bmsKKzE4NjI4IDg3NDVmYjNhMTE5MTcyYWQ4ZWIzZjgwNGY5YTA3MTBlMGY1ZmJmODMgbGVnYWN5LXRydW5rCisxODYyOSBlNzkxZjQ5MDVkMjU2MWMyN2ZkYTE1ZGEzMmUzNWFkNzFmMmI3MGM0IGxlZ2FjeS10cnVuaworMTg2MzAgZmIxNDNmYjIzNmQwYWY0YjY1NGYyMTBmYjY4OGFmZWI0YmU4M2Y5YyBsZWdhY3ktdHJ1bmsKKzE4NjMxIDE4YTZlNmQ5YjRmODhiZWYzOWY2MzRkNGJlN2MzNTA2YzAyNGVjMjQgbGVnYWN5LXRydW5rCisxODYzMiAwODY4YzM2MWFmNWFmZGEyZmYyYWNlMzkwMTM2NzkzNjU3MmVjMWI3IGxlZ2FjeS10cnVuaworMTg2MzMgZWRiOTY2NmMwN2MwNGE4ZjllODc5Y2MzYTljNDVlNWYwOTIwNGZjNiBsZWdhY3ktdHJ1bmsKKzE4NjM0IDA3NmJiMjlhNjVkYzRiMDkzY2NhYzMyODdiMDE4NDVhOTQzOWQwZjcgbGVnYWN5LXRydW5rCisxODYzNSA1ZDZmYjdmZjY4Yzc5YTY5ZmNlNDRjMDRiMTNjYWMwY2YxNDczYzEyIGxlZ2FjeS10cnVuaworMTg2MzYgZThhYWQ4NDI0NzNhNGE1ZGJjMTlmNWRlNzgwNzE4ZWYyNDE5Y2I1NyBsZWdhY3ktdHJ1bmsKKzE4NjM3IDQzNzBmYzE5Njk3ZTRhOTY5MzBkZTBiOWM4Nzk2ODllMGU1Y2UwYTQgbGVnYWN5LXRydW5rCisxODYzOCA1MDc2NTQ0YzMzOGIxMzlkYjlhNmNhMDgzOWM1MGExYTM5YzNhZDliIGxlZ2FjeS10cnVuaworMTg2MzkgYjVhMzdiZjlkMTJkYTdhMjExNDhlMjVjYTdhZjY2Y2VmYWEwNzhmMSBsZWdhY3ktdHJ1bmsKKzE4NjQwIGM2NjljMjlkMWI4Y2RmOWJkZDgwYTI4M2FlYWIwYjc5MjE0ZTIzMjAgbGVnYWN5LXRydW5rCisxODY0MSBkNjQ2ZDYwNjg5MjQzMGQxNjIyMmM1ZjBmZjU4NGZjMGVlMDM2YTA5IGxlZ2FjeS10cnVuaworMTg2NDIgYjFjNTc3ODQ4MGExOWY5NTYzN2IwZWUxODQzZWE3NWZkMzBhODkyMiBsZWdhY3ktdHJ1bmsKKzE4NjQzIGFiNTM1MjQ0NDIwNTdlZGEwZTIyOGY4MmNhZTMwZjQ5NzlhZDZiYzYgbGVnYWN5LXRydW5rCisxODY0NCBmY2EyY2Y4NTBlNGFjZjEyMmI0ZTEyMDBhMmVmZGMwYjEzNTNhMmM3IGxlZ2FjeS10cnVuaworMTg2NDUgNzhjNGI2M2I1YjlkMzU0ZjcyZTNkNjlmNDA5ZDk2MzllNjEzMmNlNyBsZWdhY3ktdHJ1bmsKKzE4NjQ2IGVmZjExZmFjNWYzNjM5YTk5MWMyNDEyNmFkZTVlYzZiNDY0ZGU5NGEgbGVnYWN5LXRydW5rCisxODY0NyA4M2UxNDY5NzRiNzJhNGE5N2YyODYwYjIyZjUzODVjMDYzZDk4YzlmIGxlZ2FjeS10cnVuaworMTg2NDggYjMxYTA0NmY4OGE3NzI0MTI5ZWRhNTgzY2E3ZDg0MzlkZTBiOGJkYyBsZWdhY3ktdHJ1bmsKKzE4NjQ5IGRkZDNkOGMyY2NhMDUyOGE4YWQ1Mjk0N2VmZTBlZDFkYmIxYWY4ZWYgbGVnYWN5LXRydW5rCisxODY1MCA5ZTk1NTY5MjRiMGE3NDIxZThjYmI0NDY3YmI3ZDNlZGQwOGM5MmEzIGxlZ2FjeS10cnVuaworMTg2NTEgMWRiM2NhOTUzMGMyODYzZGU3YmZiMGJkMDk5ZDdkZjFiNmZjNTE4NCBsZWdhY3ktdHJ1bmsKKzE4NjUyIDQ4NTRlZTU4NWUwZGY4ODFjODAyNTYwODU2YjY4ZDBkMjRiZDBhNjAgbGVnYWN5LXRydW5rCisxODY1MyAwMTMxNzkzNzZmYTM1ZTUzZTA2MGVlNTcwZjc5ZTExNTUwY2FkMDlmIGxlZ2FjeS10cnVuaworMTg2NTQgMGZkZmFhZWE1ZTJmOTAzMWNlMzAxYTgxOGJhM2EwZTE5Y2ZiZTQzOSBsZWdhY3ktdHJ1bmsKKzE4NjU1IGI3ZDVmNjhiZTAxN2Y0YzgwMzliYjg1N2FmYmRiMTlkOTJmMmExOTkgbGVnYWN5LXRydW5rCisxODY1NiA2M2MwNDgzZWZmNjhmZjhkMjI3NDQ5NjhjNWZkNjgyOGM2YjNmODhiIGxlZ2FjeS10cnVuaworMTg2NTcgYjU3ZTNlMzc0MzE0ZTM1M2I1YTg3MGFlZTZmN2Q3NDM3YmFjNTQyNSBsZWdhY3ktdHJ1bmsKKzE4NjU4IGVkZDE5MjE3YjM5Njk1ZGE5YmE3Njk3NmViN2NjODQ2ZDEzMjk2NTAgbGVnYWN5LXRydW5rCisxODY1OSBkMDI3ZTg1ZTIwOWY3ZDg0ZDE5ZGZjOGRmZDUzMTQwNjQxYmMxZjYzIGxlZ2FjeS10cnVuaworMTg2NjAgNWEzMDhhOWY5OWE1NjY0N2ZkYjNjMmQzYTQxY2Y4MjRjZWQ1OGEzNyBsZWdhY3ktdHJ1bmsKKzE4NjYxIDNhMjYwMjc0YmNjNmExNWI0ZWM2NzAyZjhiMTBjMzEzOWQ3YTlmYjkgbGVnYWN5LXRydW5rCisxODY2MiAyMjhmZmQzNmEwZGRjNzM5ZTBiNzkzYTQ2MDQ4NGZhNjY3YTAwYTNlIGxlZ2FjeS10cnVuaworMTg2NjMgZWIxNzY3YjA2OGZlYzIyNzZmNzMyYTkyOGU0ZDE2ZDI2YzQxMTcwOSBsZWdhY3ktdHJ1bmsKKzE4NjY0IDliNjgxNGJmYjJjMGQ5ZjUzMjIzOTkyODFjZTlhY2FiMTE4MzZmYzggbGVnYWN5LXRydW5rCisxODY2NSAzNzgxOWE3NzdmYzBjNDllZjQzMGU0N2EwY2EzZDNkNzkxNjI2ZmEzIGxlZ2FjeS10cnVuaworMTg2NjYgNTQxNTgwNGZiMzQ1YzY5MjI0YmZmMTdmOTFmYWZkODViYmFjMzhkZSBsZWdhY3ktdHJ1bmsKKzE4NjY3IDNiOWI4ZjJkZGZlNzk2YmNkODczMDgwOTRlOTc4MmVkNGIzOGRhZDMgbGVnYWN5LXRydW5rCisxODY2OCAyMmZlZDJiMTVhNTRiMmI1YzFhNTY4NGFhZmFiNzVmNmUyMzViMmY1IGxlZ2FjeS10cnVuaworMTg2NjkgMzdkMTIwMjFkZjA1MTEzNDU5NzQxYjgyZjQ1MzNlYmRiNjgxMjRiNSBsZWdhY3ktdHJ1bmsKKzE4NjcwIGY5NzcyZjg3YjEzZTNkMGZjZTZkYTVmN2JhMjUwN2ZlZGQ2OGJiNjYgbGVnYWN5LXRydW5rCisxODY3MSA5NTQ2MTFmZDM1ZTFlOTQwZDQ2Y2YxMjZlYmMxYmE3MWE0ZjkzOGI5IGxlZ2FjeS10cnVuaworMTg2NzIgMWEwMGQyMTkxMGM4OWYxYjM4YjEyYTg2NTNjMWEyNjJkNmU1Nzk5YiBsZWdhY3ktdHJ1bmsKKzE4NjczIGE1NjNlZWM0NmMxYWJlOTFmNmExM2MwMGE2MTkwMDIzMTZjMTk2MjMgbGVnYWN5LXRydW5rCisxODY3NCAwNjQwMjZkYzc2NGU4OWU1MGU3YTgwYWE3YjFlZmRhZDQ4MzA1ZjA5IGxlZ2FjeS10cnVuaworMTg2NzUgZmFhZjlmMTBkODQ5NDM5ZTc5MTNjOWQ0NTI4NjBkMzQzYzMyNDdjMSBsZWdhY3ktdHJ1bmsKKzE4Njc2IDg2OGQyYWNmNzQ1ODA4YzkwMzNmNTdjZDU4MjlkOTdhNjllY2Y1NmUgbGVnYWN5LXRydW5rCisxODY3NyBjNjhiMDYyNDlkOGEyMTQ2N2E3YWU1M2M1ZjNiNmM0YmViYWQ5YTA0IGxlZ2FjeS10cnVuaworMTg2NzggNjQ1ZjhmZDZmYTlkY2M1OTk1MWNjMmQyOWQyNjk4MDUyODhmMDdlOCBsZWdhY3ktdHJ1bmsKKzE4Njc5IDJkMzk5MDY1NjI0ODAwNDE4MjYwZWY3ZjlkNDNiY2VjOTg1NTI2YzEgbGVnYWN5LXRydW5rCisxODY4MSA3OTc3MGNhMTVjNWE5ZjUyOTE0YjE2MmNiOTAxZTVlNGIzZWU3MGExIGxlZ2FjeS10cnVuaworMTg2ODIgMzNiNDQ0Y2JhZGI5OTJhN2U1NzI5MWJiOWU3NTM5MTNiODdhNmJlZCBsZWdhY3ktdHJ1bmsKKzE4NjgzIDBmMjJmZWI5Mzk3ZGI5YjFiODA3ZmNlNjA0ZDdmODZkOTRhMDY3OGUgbGVnYWN5LXRydW5rCisxODY4NCBjN2RmYmEwZGI4NzkwYjAwNGQxMWZiYzNiNWJhNTU3MWZiZDE2NWY2IGxlZ2FjeS10cnVuaworMTg2ODUgOTgyMTc3N2Y4ZGFkNmMwZjQ1ZjMyZGI4MzUzZWE5OTA3MWRjZmZmOCBsZWdhY3ktdHJ1bmsKKzE4Njg2IDdmN2VmOTQ0N2U1OWZjYTRiOGUyMGE1MmJkZDMxNTMzNTdkZmViMDQgbGVnYWN5LXRydW5rCisxODY4NyA0MzI4ZmZlNjQ3YmY3YmVhZmNjZGQ3NTU4MTM4ZWUyZDhiNzgzOTgzIGxlZ2FjeS10cnVuaworMTg2ODggMTc0NDkwZTkyNGQ0N2YxOTJiZDk4ZmE4ZGQyZWU1M2Q2OWY1MDdmMiBsZWdhY3ktdHJ1bmsKKzE4Njg5IDgxZGI5MmU4MGVhODg2M2RiOTk5ZmM5ZWVlYTM2NGZjZjcyNTU3ZjUgbGVnYWN5LXRydW5rCisxODY5MCAwNWFkMjk3ZTE0NGZlOTdkZTUyZWUwMmI3NTA0NDg4ODBjMTIwY2Q3IGxlZ2FjeS10cnVuaworMTg2OTEgOTMwOGRjOGM4NWUwMzVjNDQ0YjVkNGZhN2EyOTkxYjE3NDAxMzA3YiBsZWdhY3ktdHJ1bmsKKzE4NjkyIGUwMGY3MThlNGQ4YWIzOTVlNjgxOTRlM2RjY2UxNThlN2NjZmJkYTYgbGVnYWN5LXRydW5rCisxODY5MyA5YTIzODVlZTFkOTk0NDY0MDc2MTc4NTVjODRkNjI0ZWU2YmRkOTMyIGxlZ2FjeS10cnVuaworMTg2OTQgMGFlMzg5ZTkzNWZjNDE2ZWI4NzQzN2JjZDM1Y2UzOTE4ODE0OGMzYiBsZWdhY3ktdHJ1bmsKKzE4Njk1IDdlYTMwYTE2MzQ2MzZkOGZlYWMyZDY0ZThiYjU4YzNjZjljMmIxMWEgbGVnYWN5LXRydW5rCisxODY5NiA2ZTMyOWYzZTE3ZjBlNTM5YTYyOGQ4OGQzMDM1NmJhMWQ2ZjI4MTUzIGxlZ2FjeS10cnVuaworMTg2OTcgYjFiMGE3MDNlYzRlNmEzYjA2NzNkMTNkMmIzYmYxNTc0MGI2ZWI3MSBsZWdhY3ktdHJ1bmsKKzE4Njk4IDBlNGY0OGM1ZmM4NGQ4ODA2MDUzZDljNjg1NTM5MDg2MzQ3YmRiZGMgbGVnYWN5LXRydW5rCisxODY5OSBiYjMwM2E3NmE0NzgzN2NmMDQ3MjY2YmI0Njc5ZTdiNGNiNmQxNTU2IGxlZ2FjeS10cnVuaworMTg3MDAgNjdjOGFiZDIxMDI1YTU0MmZlYTc2MzZjYzgzYTE0ODhlNTcwNTc1NSBsZWdhY3ktdHJ1bmsKKzE4NzAxIDNiNjQzNjUzZTA3ODIwYmY1NzM1YjI2ZDU2YTY2MTc4NTNlYmQ4NzkgbGVnYWN5LXRydW5rCisxODcwMiA3ZDUwMjViYmEwMzdjNmM0ZmE1MTA5MWI5ODhlNTk1YTY1YTk1NTFiIGxlZ2FjeS10cnVuaworMTg3MDMgMTdlYmE3NDA0MDk5Y2U1M2QzZjU4NjIxNDFhZGJmZTI5M2UyZDFkZCBsZWdhY3ktdHJ1bmsKKzE4NzA0IGY2Y2QzNjQ5OGE1MDNmMzE2NTE2NzMxMmZkZDVhYzg2NmE4OGMyOTIgbGVnYWN5LXRydW5rCisxODcwNSA2MDFjNTNhOWU0OWRmMWZiMjBhOTJlOGY2NDFmMGM2ZDIyZTAzNzZkIGxlZ2FjeS10cnVuaworMTg3MDYgMjgzMzU2ZmI2ZWZjNzU5ZGFhNzlkNDUxNTcxODQ0ZDBlMjIyN2E2YSBsZWdhY3ktdHJ1bmsKKzE4NzA3IDIxMGJiZTUzYjZkNGFjNzhiZGViNDc0NzMzZDFhOTQ5M2JlNzA4ODMgbGVnYWN5LXRydW5rCisxODcwOCBkNDFmOWIwYTQwY2FhNjE0Nzg5NWVlNGNhMjU3NmEwZWZiODJiNTE3IGxlZ2FjeS10cnVuaworMTg3MDkgNjc5ZDUwNzA1ZTA2OTVlMTE2NmI0MzUyMTIwYmMxZWY0M2NhNzVjNCBsZWdhY3ktdHJ1bmsKKzE4NzEwIDQwNWE1OTczNTg0MTZkMDJhNDA5MDVkZjQ5MmNhZjZhNDliMDRlNjkgbGVnYWN5LXRydW5rCisxODcxMSAxN2QzYTYzZTIyYzc0MjgzOTBmODIyMTI1N2MyYjg3ZTNkZmVjOGIyIGxlZ2FjeS10cnVuaworMTg3MTIgYzcwNDIxNDMzOTlmMzE4NDRhMmQwYTIyNDIxNTMxMjAzZmNlNDA2ZiBsZWdhY3ktdHJ1bmsKKzE4NzEzIGEzYzFhMjM0Y2VlNzE4NDE0Y2MyN2M4Y2VlZDBlNjgwYmMzZGVkMTAgbGVnYWN5LXRydW5rCisxODcxNCAwZDhiNWIzZDlkODNkMDY2Y2VkNjgxYjk5ZTNhMmNmNjJlNmM3NjhlIGxlZ2FjeS10cnVuaworMTg3MTUgYTg0YjUzYmE5MGM0MWRiZWRjYTMzY2Y0MzYyMjdlZWViY2VhNmYwMiBsZWdhY3ktdHJ1bmsKKzE4NzE2IGZjNzY1NDY0YjE3ODAxMmM3Y2MyYWI5YjQyNDgxYjcxYmQwYmQ1OWMgbGVnYWN5LXRydW5rCisxODcxNyAxNTJkMDA3MTgwMDYwOWQ1MGIwY2E0ZTk2MmZlZTdhNzc4NTIzZDk1IGxlZ2FjeS10cnVuaworMTg3MTggOGM3MTQwOWFjMGMzOTRkMTk2NjU4Njk4ZTg5NTQxZGU1MjIxNWExMSBsZWdhY3ktdHJ1bmsKKzE4NzE5IDBhOGRhNmYzOTdiNzhmNTgxOGQ5MDc4Nzg0MTcwOWRlZThiMGRhOGEgbGVnYWN5LXRydW5rCisxODcyMCA4MWUzZDg2MjZhZGYwZjc5MDU3OWJhODk1MTEwNDI5MWFhZmVjMmFiIGxlZ2FjeS10cnVuaworMTg3MjEgMzE5NjdhMjMzNjAwOTJhNWM4N2Y4N2RiMDlmODQ4MmRiYzFiYWE0OCBsZWdhY3ktdHJ1bmsKKzE4NzIyIDA4M2E1Yzc1ZWQ5MDQ1MjIxM2I0ODQ2MDQ2MDg5NjJiOGQyMmMxYTkgbGVnYWN5LXRydW5rCisxODcyMyBlN2Y2ZDU0YzAxNGQzNDFlZTUzYTM3NWM5ZjVlN2FhMTIyOGMzN2RiIGxlZ2FjeS10cnVuaworMTg3MjQgZmMxZTU4MzFmZTEwNzdiNzgyMWVlM2Q1ZmZlMDU1OGY5NjY1YzZlZSBsZWdhY3ktdHJ1bmsKKzE4NzI1IDcxYjE5ZDM2YWFmYTkzZmViMDAzYzIxNDAyNzkwMmE3M2RiNzI1OWEgbGVnYWN5LXRydW5rCisxODcyNiAxYjAzZjc2YWIwM2VhNzQyNTVlYjc1NDUyYjk2YTQ5OTViOTRjOGVlIGxlZ2FjeS10cnVuaworMTg3MjcgNTU3OGU5YjQyNGQ0YWE4ZGRjZTU2ZWEwYWNmZDJkYzA0YmJmMzI0ZSBsZWdhY3ktdHJ1bmsKKzE4NzI4IDcwYTU5ZTNmYjI3OGJiNTIwZTk3MTM3YmNjZGM1NWE4ZDg4ZDY5ZmQgbGVnYWN5LXRydW5rCisxODcyOSBmNWEzZDk4YTM1YmM0YmRjNzRhODRmYmE2ZWVkODU5ZDBmMDdhZDI5IGxlZ2FjeS10cnVuaworMTg3MzAgMzA2MGNiZmEwMWJlNmRmYzZmZGI4OGYwZjVjMTBiNzNiYmZiZjA2ZCBsZWdhY3ktdHJ1bmsKKzE4NzMxIDFhNGMxYzBlMTRhMTNmNTk1MjY1YWI2NGNiMTRjYzQ5MTM4NjYxYTggbGVnYWN5LXRydW5rCisxODczMiAwMTBkMDM4NTM1NDY0NmYxNTcwMDUxZjE5MzZmNjUwNzQzMzFkZTBiIGxlZ2FjeS10cnVuaworMTg3MzMgNjJhZWVmYTAxZmRkNTU0ZTMwYjUwNWU1ZTAzNzc1NGRlNzFjNTRlNCBsZWdhY3ktdHJ1bmsKKzE4NzM0IDM2ODVlZjJhNTVhNDhlM2Q2YzAwYTkxOGViYWZmNzMwZjNiMjRkZjUgbGVnYWN5LXRydW5rCisxODczNSAzZGQyMTdmYmRkNTliMWVkMjY4MzcyMTg3ZGM4MWQ5ZjE1ODA5ZWFjIGxlZ2FjeS10cnVuaworMTg3MzYgNGMwMWVlMGE4MDczZjlkZTQ4ZDJjMGY1N2Q4YmFmOGY1ZDYzNzExMyBsZWdhY3ktdHJ1bmsKKzE4NzM3IDE5NTU1N2EwZjA1MGI4MTI3MmUyYTVhNjE1N2UxMDczNGE5MjIzYzcgbGVnYWN5LXRydW5rCisxODczOCBhMzNkZTIzYjMwNjZmYmNkYmIyN2U5MTZmNDJlODQwODg3ZWQ4M2FlIGxlZ2FjeS10cnVuaworMTg3MzkgOTNkMDU2N2M5ZmM5Y2IxZjE0ZTgzNzJmMTExZjNmNWNhOGQyM2U5YiBsZWdhY3ktdHJ1bmsKKzE4NzQwIDc1MTIxNWZhMGRhN2YzYzMxMjY3NDY1ZjRjZDA5Njc1ODFiMmEwMWQgbGVnYWN5LXRydW5rCisxODc0MSA5MDk5MmM4MmQ0NmU5ZmNmZmM0ZjVhZjQ2MDgxMTRjYmYwNDZmYjM5IGxlZ2FjeS10cnVuaworMTg3NDIgM2VhMTBlZTkxZTljNWU1ZDQ5OWI4NGIwMDk4ZDEyYTRkY2UzZWIxZiBsZWdhY3ktdHJ1bmsKKzE4NzQzIDQxNTQ2MzUzMjU1YzdmMGE5Yjg0MzQ1ZGYxMGE0MTI4YzVjNGYxN2QgbGVnYWN5LXRydW5rCisxODc0NCAxOTBkMTRiNzBjMjdiOGY1NTMyMGM1OTkyNDQxYjEwMWM0NDdlNzNmIGxlZ2FjeS10cnVuaworMTg3NDUgZjQ3ZDFjYmZiZTcwNjMyNGI5YTZlM2Q2OGYzZjUyMzlkMjBlZGRkNiBsZWdhY3ktdHJ1bmsKKzE4NzQ2IDdjZDQ2ZmY4OWJmYzNiMGVmZmUxOGM4OTU0YzZmYzk2YWZlZTI2ODkgbGVnYWN5LXRydW5rCisxODc0NyBlNmEwZmQ1NGI2MDcyZmE4NGEyOGVlNTY5MGEyODBhM2VlMmZiMzZlIGxlZ2FjeS10cnVuaworMTg3NDggYTcwMjVmMDcwOWM1Yjk5Zjk1MDhiODIyNmMxOTk5NTA2MTQ0YTVkMyBsZWdhY3ktdHJ1bmsKKzE4NzQ5IGY4MzExNWVkZjE2YWY2YWQ2YjQ3ZTg3ZjBmZWVjOTViYWM3YmM5YzMgbGVnYWN5LXRydW5rCisxODc1MCBiNTMyMDYyOTViZGZlZjc1NDI0Mjk1MmM0YWMyNGZkOTM5ODAyZDBmIGxlZ2FjeS10cnVuaworMTg3NTEgYjBiYTQ2YjE2ZTA3NTA5NGZiMDQ0Yzk1ZWI5MzdkNTQyYWE3MjRhZiBsZWdhY3ktdHJ1bmsKKzE4NzUyIDdjYmU0NWQ3OWFiNWMwYmQwNjIwNzIxMTZmMTdiMjJkNzk2ODczOTAgbGVnYWN5LXRydW5rCisxODc1MyAxOGM0YzdjYTkzZWEwNmExOWNiMzMxNzFhYmU2MWJmNWI1ODNjOGJhIGxlZ2FjeS10cnVuaworMTg3NTQgOGVmMzFhMDM5YTk2NDBhMDU3NTFhMTM2NjEyZWJlOThiNTk2NjczMyBsZWdhY3ktdHJ1bmsKKzE4NzU1IDU1M2EzMTVmNThlOTJmZDEzMmQxNGQ2ZWQ4ZDg3YjdjYzc1OGNjYTIgbGVnYWN5LXRydW5rCisxODc1NiAxYzZiMGQzYTU4ZWFkYjU1NjdmY2NkZGJkODYxZmM3ZDk0ODQ0YzQ1IGxlZ2FjeS10cnVuaworMTg3NTcgODc2NGRmZmJhZjIzNGUxOTY4N2YyMjlmYzgxZGE0M2I5ZDMzZTc3NCBsZWdhY3ktdHJ1bmsKKzE4NzU4IGM4N2UyYTJlMzM1ZDBhMjkwMjYyNWI1MmUxZGRmNGZjZjIxMTBmYmYgbGVnYWN5LXRydW5rCisxODc1OSBjNTY4YmE5ZGMxODBhMmNhMjMwOTI0ZjUxNGEwMTJkOTgzNjdkY2JjIGxlZ2FjeS10cnVuaworMTg3NjAgODM2NmZjZmI2MDkwNGNmYjVmYWY2ODNkNjI0MWM5NTI4YmQzM2FlYSBsZWdhY3ktdHJ1bmsKKzE4NzYxIDE1MjgxNGY2Y2QxMTMzZTdiMzJhMjc3NmFmYWU3MjRlMzM0ODgyMmQgbGVnYWN5LXRydW5rCisxODc2MiAxMTI5ZTE2YTExZGZiMzU3OTE3ZDVhNmE4YzFkMTQyOTE5NzExZTJlIGxlZ2FjeS10cnVuaworMTg3NjMgY2Q4M2Y3YTljZGNkMWYzMTU5ZTYzOTFiYTE2YzEwNmI2MGVjMGExYiBsZWdhY3ktdHJ1bmsKKzE4NzY0IGVlZjMyMWI2ZTQxY2U2NjNjNjg2YjdmYjYzOThmYTZmZDM4ZGU2ZTkgbGVnYWN5LXRydW5rCisxODc2NSBjOWRkYmUzNDA3ZmE0NDAwZGE5YWNjZmY0ZjA3ZTc1ZTI5YjM4ODFhIGxlZ2FjeS10cnVuaworMTg3NjYgMTQ5NDU4YTU3NDBhZjFmNTk2ZDVhZWI3OGI4YmZkMTg1YTIzZTZjNCBsZWdhY3ktdHJ1bmsKKzE4NzY3IDEzZTVlYjAwNmViMzIxYmJmZTQ5MzljMzJhNDE3NGJkZGFhYzUwYWYgbGVnYWN5LXRydW5rCisxODc2OCA1MDg5MGUzNDU0Yzk1MGE4OGViNDMxM2U1MDRiYTZhZThhMTA0M2JjIGxlZ2FjeS10cnVuaworMTg3NjkgMTMyNWJkZTk0ODk2ZGQ1ZGQzNmY4NTlmMTUxMTUyYzNmZDQyNDdhNyBsZWdhY3ktdHJ1bmsKKzE4NzcwIDk4ZTk1ZTBmNWJlYzc0NWU5ZTAxMDI3OWZlN2UwYWY5NjdiZTk1YmIgbGVnYWN5LXRydW5rCisxODc3MSA4ZGIzMTlkZGZiMzc5ZTdjZjZhNzc5ODIxNzMxMDg2OTE2ZWRlNTI5IGxlZ2FjeS10cnVuaworMTg3NzIgZjdmM2JlM2QwMGI5YzlkZWQ2YzRmYjYxMDM0ZDFlY2VlYzRiMmNhZCBsZWdhY3ktdHJ1bmsKKzE4NzczIGE4ZWRiM2Y3ZjRmODNiOTVhMDUzYmVkMDU0MTM1YzE5M2YwMWYwNmMgbGVnYWN5LXRydW5rCisxODc3NCBlODI0NjQ0MGE4MjVjOTRkZWE5YWQyNzlmZjZmNmJiYmQzMTQ4MzY2IGxlZ2FjeS10cnVuaworMTg3NzUgZDdkMTY2NTUwYzQzMzlmYWVmOThiYjIxOTdhYzIzZTg3YzA4NjJlYiBsZWdhY3ktdHJ1bmsKKzE4Nzc2IDg4YTEyNjdhMzM5NWVhZjEzM2UxOTg0OTE1YjAyZDZjZmVjODY3NDYgbGVnYWN5LXRydW5rCisxODc3NyAxODUxMWUxMTI4NzAwZDFlZDViOGQ2OTJlOWJmYWY4MmEwYmZlZDUzIGxlZ2FjeS10cnVuaworMTg3NzggYWU2MzZiOGFjNDgwOGRmNGJiYTljZmFiYjk0ODIxMTMzOTYzZmYwZSBsZWdhY3ktdHJ1bmsKKzE4Nzc5IGEzODE5MGY3MWJmMmI1ZjU3N2FiNTIzM2QwZmU1MjRlNTM4MWUzMzAgbGVnYWN5LXRydW5rCisxODc4MCBiYTZkNGI1MjE4MGE3N2ZmZGM2NjIxMzBlMmI1NjI4MjBhNzdhYmEwIGxlZ2FjeS10cnVuaworMTg3ODEgYmUyNTdhNzU1M2EyMjcxNjYzZmJkMTA1ZDNmMTY2NmQyZTQ5ZTA3NCBsZWdhY3ktdHJ1bmsKKzE4NzgyIDAwN2Y3ZmFmNjJiMjAzMThmMjdkYTBkYjFiNDg0MTk2ZDQzMzU0NWEgbGVnYWN5LXRydW5rCisxODc4MyA0ODk2OTJlNzkxNTE0MzIxNDE0ODBlMWNjMDRlZTg2MmYwMGQzNTc2IGxlZ2FjeS10cnVuaworMTg3ODQgZmRhOWY4NmRjNGU4NDQ1NWRiOTM5YjU2YjcwMTIwZGJjYzg0MThiYSBsZWdhY3ktdHJ1bmsKKzE4Nzg1IGZmNmMzMGU4Y2E3M2M4NjljZmJkMTJjNDQwZmM5MGRlOTBiNGZlNDMgbGVnYWN5LXRydW5rCisxODc4NiA3MDJlZDk5NjUyMjhiYjA3YjYwYTdmN2YwYTUwZTZhNjI2ZTMyNGFkIGxlZ2FjeS10cnVuaworMTg3ODcgOWQ1YmVlZDBiOTNmZGYzNWFjZjIxMTk1ZjU2YTliZjRkNGQzN2YyYiBsZWdhY3ktdHJ1bmsKKzE4Nzg4IGFjMTNjZWY0MjNjODMzZjVkMTI3OTcyMzIwMzE1MTM2OTQxNTI0NzggbGVnYWN5LXRydW5rCisxODc4OSBjOTU5ZjRiM2VmYTExYWU0OWEzMTc5NmI4YWRhZWUyYjI3MWVkODViIGxlZ2FjeS10cnVuaworMTg3OTAgMTg3MmU2MDlhNjM0YzAyYzE0M2IxODcwNzljNWI1MmM0NDNlMWNmYiBsZWdhY3ktdHJ1bmsKKzE4NzkxIGE0ODQ1OTNjZDQwN2UxYzY2MTU3NGEwNzFmYjFmZmExODY3NTNkODQgbGVnYWN5LXRydW5rCisxODc5MiAxNGEyN2FjYzc1NWFiNDM0MWZiNzdjYzhjNjZkOWVlNDIyNzEwYTBiIGxlZ2FjeS10cnVuaworMTg3OTMgZGMzYjlhNTgxNjg2Y2Q4YzRjNGE5MmRhYmIyMWE0NmUyNDg3Mjc0NSBsZWdhY3ktdHJ1bmsKKzE4Nzk0IDE4ODFiOTY4OTg5Yjg4ZGE3M2RiODQ2NTA1Mzc0NTUwNTZkNmRkMWQgbGVnYWN5LXRydW5rCisxODc5NSAzNWE0MTk0ZjllYWQ5Yjk2ZmM2M2Y1MjIwMWVlNzIyNTk5ZmE0MzM3IGxlZ2FjeS10cnVuaworMTg3OTYgYjFhNWVkYjgwZjVjZmNlY2I1YjMxNmJhMjYxNDExODcyMzliNGVjYiBsZWdhY3ktdHJ1bmsKKzE4Nzk3IDBiMGZjZTE0ZDRlODgyNmJmYzZiY2FiMzFkYzhiNzc0OTE1NzlmZWQgbGVnYWN5LXRydW5rCisxODc5OCBiZWMwZjYxY2ZjZDU2ZTA2MzRkYjdmN2UzMTQ5ODJhNDRkYzc4NjI4IGxlZ2FjeS10cnVuaworMTg3OTkgZDlkMGRjYjczNWQ3ZjdhYzQ1NzI3NWQxYzE1MDdhMDE0ZjhkNmZiYiBsZWdhY3ktdHJ1bmsKKzE4ODAwIDhmZDIyMWFlZDM1NzU5YmYwOWRlYjgzNjIwNDlhYjcyY2Y0YzA4MzcgbGVnYWN5LXRydW5rCisxODgwMSA4NjdhNGE2ZTdjZGE4NzdmODdiNmNlMDBkMzc1ZjgyOGM2YjQ5ZTFiIGxlZ2FjeS10cnVuaworMTg4MDIgZWE0NjRlZGE2MTU4NGI4OTg5NDIzMDU4NWQxYTM0NDQ2YjI3MzRhOCBsZWdhY3ktdHJ1bmsKKzE4ODAzIDVhYmFlNzk1NzQyZWE5NjkzN2RmZWIxYmVkMjZlODYzZDAwNTBlMzQgbGVnYWN5LXRydW5rCisxODgwNCA2NDM5MGNlYWFjMWFmOWNmOTY4ZmMwMGZlNDMxNjc1ZjU4ZDhmODU5IGxlZ2FjeS10cnVuaworMTg4MDUgNWIwNjNiYWViZWY4YzZkNTdjZDk0ZmRmMWUwNTBlMjA4ZWI1MjA4OSBsZWdhY3ktdHJ1bmsKKzE4ODA2IGY0NjRhMDNiZTg1YWU2ZDkxMmFhYmUwZDU1MzRmYTFhZjg2NzlmMWQgbGVnYWN5LXRydW5rCisxODgwNyAyZWRmNWVkMzA1ODM5YjFjY2YyNTQxMTczZTYxODQ4N2E0NDc0ZDBjIGxlZ2FjeS10cnVuaworMTg4MDggNGY2MjE3MDg1MTRiMWFhNWYyMWEwNjEzMTA0MTI1OWVmYmMwMDlkYyBsZWdhY3ktdHJ1bmsKKzE4ODA5IDZhODUyNDhiNDM5ZWFhM2Q5MDhlYzEzYzYyZTA5OGIwMmVhNmI1MzUgbGVnYWN5LXRydW5rCisxODgxMCAzYmMyNDQwNDI3ZDMzMWNmZDIxN2E5MGY2NWQ2MzZmZmU3MDQzOGIwIGxlZ2FjeS10cnVuaworMTg4MTEgNzZhZDJhOWEzZTUzNGUxYzA1NjRiNDYzMzUzMzlhZGY1YWRjMjBkNyBsZWdhY3ktdHJ1bmsKKzE4ODEyIGYyZTEzODk1YmRhN2RmNTE4MDc3MTZmZDBhZTAxY2QwZWE1YzA5YmIgbGVnYWN5LXRydW5rCisxODgxMyBkYjI2YjQzYzkyNGYzMGRjYTA3NGViZGI3MzUyNDUyNzUzMTE3ZTg2IGxlZ2FjeS10cnVuaworMTg4MTQgMWY5MmQ2M2IyMGYwMjMxMDdmYTU5ZWVmNDA3OTk3ODRlOGZmNjMyOSBsZWdhY3ktdHJ1bmsKKzE4ODE1IDgzNDliNGRmYzUxYWRlNjNkMjRmYzljMGIyNzFmMjFmZjE3Y2U1MzAgbGVnYWN5LXRydW5rCisxODgxNiAwMWVhZTQwODU3ZDgzZGJlNTlhZWY4MzlhODY4M2Y5ZWRmNGE2NzM4IGxlZ2FjeS10cnVuaworMTg4MTcgMjgzYTBiMmFhZGM1ZjJhYTk0YWJmM2ZhNmNjNjNiNzQ2ZWVlY2ZlMyBsZWdhY3ktdHJ1bmsKKzE4ODE4IDg1N2FhZDg0MmFlN2Q5OWQxMjgyZjMwZGZmMDhjZWFmY2MwOTgzM2IgbGVnYWN5LXRydW5rCisxODgxOSBjMWE4ZGViMTVmMGUwNjZlZTFhMTBhMTczNDI3NjA3MGEwYmYzMWNiIGxlZ2FjeS10cnVuaworMTg4MjAgYzgyMDU1NTJkZGUxZWI2OGRlMGM4YmI1ZjY1NmE5NDFhOTA5OGUwNiBsZWdhY3ktdHJ1bmsKKzE4ODIxIGZkYTNmZjE5ZDFjNGE5NjllYTY0ODU0ZWYyNDNkY2M1ZGI3YjMyMTEgbGVnYWN5LXRydW5rCisxODgyMiBkNzNiMjFkYWUyOWEyZWU4OTg5M2QwNGE5NjRmMzkyYWMwZWE0YWEwIGxlZ2FjeS10cnVuaworMTg4MjMgYzAwMDBiZDYyNTJjNjgwMzI1MDRkMTRmMjE0NzM1YTgxNjEwYmI1YiBsZWdhY3ktdHJ1bmsKKzE4ODI0IGYxNzUxYWJmNzcxZmZjNGFjYjYxMTk5NjMyYzJhMTk3NWVhOTQ1ZGQgbGVnYWN5LXRydW5rCisxODgyNSBjZjE3YTNjZTUzODc0M2VkMjNhZjMyYWU2ZDBjYWE1YTQ3MTVlZTU3IGxlZ2FjeS10cnVuaworMTg4MjYgZGM4YTMwYjg4ODdjODA3M2JlNWE3ZDIyZDllODNlNzhjNTUzYmU2NCBsZWdhY3ktdHJ1bmsKKzE4ODI3IDVhYmI0NzMwNGJjNzY4NWU2OTBjNWRlMDgyOWE1Zjk5Y2EyMzNkYzIgbGVnYWN5LXRydW5rCisxODgyOCBlNTliODM1YWQ4OWE1MmVjZjk3MWMyNGU1Y2MxZjI2NGRlOWIxYTg5IGxlZ2FjeS10cnVuaworMTg4MjkgZGNhZTNlMDhkODQ4NDg1NzNjMmYyYmM5NzQ0NGU3N2Q5YjNjN2Y0ZiBsZWdhY3ktdHJ1bmsKKzE4ODMwIDViYmE4NWQ0OWU1YWY4YjZjMjk0ZDRhYTE5ZmZiYTJhNzkxMDU4ZDkgbGVnYWN5LXRydW5rCisxODgzMSBlMjFkYTg0ZDBjNjVmMGExMDI0MjRlZDhkODY4Yzc3OTVkMTRkNGJmIGxlZ2FjeS10cnVuaworMTg4MzIgNzcwMDhmMDdjZTI1ZGFhMDNjNDcyODM3YTVhYWU2NzdhNGIxMzY2NyBsZWdhY3ktdHJ1bmsKKzE4ODMzIGZmOWM3OWJiYzNlZWQxYjIxNTZmN2EyZTc3N2I0ZGM0ZDYyMzcwMTYgbGVnYWN5LXRydW5rCisxODgzNCA4ODliN2JhZjhiYmI0YjNjOWRkMjAzNmRkNThkNGE5ZGE3ODQxNzYzIGxlZ2FjeS10cnVuaworMTg4MzUgNzIxMzkyNjNmOGE3OTc1MmQyMzFlOGQzOTljMDQ0NmFkNTAwOTkzNiBsZWdhY3ktdHJ1bmsKKzE4ODM2IDViOTEwM2U2MmZhYzNkYTRjZjI4MjVmOWMzYTdjNjNmYWVkZGM5MGIgbGVnYWN5LXRydW5rCisxODgzNyA1NDIwNTgyOGIxZTE3M2M2ZjkyZThmMmQ5YTMzNDFkYzgyNjBlZjJlIGxlZ2FjeS10cnVuaworMTg4MzggNTFmYzQ1Mjc2YTQzM2Q3YTA1YjUzMzdjZGJhNjc5YTllZDMwMmYyNiBsZWdhY3ktdHJ1bmsKKzE4ODM5IGYxNjU0NWY1ODM0NTYwOGI1YWRjZTg0MzczNDkwN2NjNDEwZjEyMzcgbGVnYWN5LXRydW5rCisxODg0MCAyNGRhZmJiMGRiNThmNjYyZTVlMGUzYjcyMTBhZmU4NzZhYjRjNGUxIGxlZ2FjeS10cnVuaworMTg4NDEgYTM2YTQ5MzJlMzk5MTM1YzE1NDA0ZDY1NzZhYjlmZmU1YjgyNWQ2YSBsZWdhY3ktdHJ1bmsKKzE4ODQyIGFmYWU0MDY4ZDJkZDk4ODI4ZjIzYzY0Mzk0NmQ1MmQyZGQwY2IyODQgbGVnYWN5LXRydW5rCisxODg0MyBkMWNiNDEzOGZkMzRhNGE5Njk3NTIwNzRiNzcwMjg1ZWFkYmNmNWNjIGxlZ2FjeS10cnVuaworMTg4NDQgOTEzMDRjNGM3MjU2ZjgzZDYwMjc1Y2EzOGNlNWE4NTg2NjAzMDViNiBsZWdhY3ktdHJ1bmsKKzE4ODQ1IDJiMjkzMTlhZTY4MTk0MDNlZjAzM2MxOGZjYjAxZmYzZGYzODBjN2MgbGVnYWN5LXRydW5rCisxODg0NiA2YzE3NTFmNmFmZTIzZTBkZWI0MzRiNDVhZmI0YjU0MDMyNzQ5ZGUyIGxlZ2FjeS10cnVuaworMTg4NDcgMTdmMjNmOGNkOGM3N2YyZDU5NThjNTMzYWZhODAyYzA0OGRiNjAwNCBsZWdhY3ktdHJ1bmsKKzE4ODQ4IGJkNWFlZTZiODM5MGQ0ZGIyMjBmMzkzYzcxYjI0MGRhM2JlY2ViOGQgbGVnYWN5LXRydW5rCisxODg0OSA1ZmI4NjUwNzUxOWMwOWQ5YWRlY2NjMWZhMmM1NTRlNjk0NzJmNjY4IGxlZ2FjeS10cnVuaworMTg4NTAgYWUyOWE4OWI3N2MzYTEyNjRkZTg1M2UyODc4M2M2Y2NiYTA3YmVmMCBsZWdhY3ktdHJ1bmsKKzE4ODUxIDFmMWVmZjA4MWEyYTc1MTJlODIyZDkwMDRlMzhmYjhhZjUwOWNmM2IgbGVnYWN5LXRydW5rCisxODg1MiAzZjRiNjAwMmMwN2QzMTNkYTYzNzNjOWI1Yjk3ZTFkYjZiMWJhZDYwIGxlZ2FjeS10cnVuaworMTg4NTMgNjIwODRjZDk1N2JkNmQ0ZDI0ODFmNTY3YWJmYWQ2ZDI0MTRkYzk4NiBsZWdhY3ktdHJ1bmsKKzE4ODU0IGFhY2JhMzc0NzZkNDI2ZWQyY2E2NWQyYjk4NmIyYTdiMDM4NTgyOTIgbGVnYWN5LXRydW5rCisxODg1NSBlYWUyNjExNzk4NmZhNGI4YjIyMjU4MTliNDVlNzVmOTEwNjA4NzE5IGxlZ2FjeS10cnVuaworMTg4NTYgZjlhMTVhNTgzYzc5ZDlhNjE5MDc1ZDIzYWY4ODYwZTU3Y2VmMzlkNCBsZWdhY3ktdHJ1bmsKKzE4ODU3IDg4MzI1YjczYTZhM2IxMjk2NmE4ZTNjZTg0NmY3MDg0YzNiOTRmNTQgbGVnYWN5LXRydW5rCisxODg1OCBjNTAzZmE5YjI2NWUyMmJlMmU1NWFkNGE1Y2RkMjllZTk3MTQwNjFkIGxlZ2FjeS10cnVuaworMTg4NTkgNjk2NWMyMDViNjAzNjRmZTg4ZmViOTUzNmE4ZWE4NDJkYjU4ODAxYyBsZWdhY3ktdHJ1bmsKKzE4ODYwIGYzOTBmNDNhYzRiNjQ5YTlhYTgzM2ZiZWEyYTJjNTliN2MwYjUxYzMgbGVnYWN5LXRydW5rCisxODg2MSAxZGMwMmIyMjk1YTk3NDY5NWVjNGE2ZDRhYzJkOTNkYjI4ZDJkOTE1IGxlZ2FjeS10cnVuaworMTg4NjIgM2Y2MWVmNzJhZWYzNTA2ZTI3YzRlZGEyMGIyNWUyYWNjNDRmYzY1MSBsZWdhY3ktdHJ1bmsKKzE4ODYzIGYzNzQwNjc0YWM1YmYzMjk5ZWZmOTU2YWU4ZmEyOTcxYTYyODcxNmEgbGVnYWN5LXRydW5rCisxODg2NCBlMWU3NmZlM2NiNTNiMTUyNWVjYjVjN2MwODRiYjdjYzlhOGQzMzVkIGxlZ2FjeS10cnVuaworMTg4NjUgZThlZTA3ODVjODQ2ODY4Y2RkZDQ4NzNjNjE1ZWQ3MDE5NGI2MzUwZiBsZWdhY3ktdHJ1bmsKKzE4ODY2IDkyNTFjZjcwZWQxZjhiNWVkNWIzYzAyYmNlMTcyMGQ5ZmUwZTU4NDIgbGVnYWN5LXRydW5rCisxODg2NyBjZWQ4MDQxZWI0ZWE3ZGE5NTU0NmJkNzQxMzk3MzZjMzRiZDg1ZmYwIGxlZ2FjeS10cnVuaworMTg4NjggNTE4MTFkNzhhOWRhYTY0ZmU1OWEzZmE1YTQ2YjZjMGYyNzc1ZTY2ZCBsZWdhY3ktdHJ1bmsKKzE4ODY5IDMyMzUyZTEyMGMzNzk0ODJjMTg4MTJkOWFmMjY0NTYxMDUxYmIxOTggbGVnYWN5LXRydW5rCisxODg3MCA0Yzg1NmExODA0NTg3YjA1MTc3MDU0OWI4ZjRkZWMwNDY1N2I4OTk1IGxlZ2FjeS10cnVuaworMTg4NzEgMmRmNDU3NGQ5MGZlNmQ4ODg0MGNlN2I4Y2I0MDY4ZTcwZmQzNWUzOCBsZWdhY3ktdHJ1bmsKKzE4ODcyIDMzZjVlZTZhMGViZTc0OWZmNDVkZjJlYmY4MDY5NDU2MjI2OTY4NzkgbGVnYWN5LXRydW5rCisxODg3MyBkOTBlZWFiNWY5YTQxOGVkZjgzMTMyODE0MTlmNzVhYzYzYWY3OTA2IGxlZ2FjeS10cnVuaworMTg4NzQgOGU0ZGZiNjgxNjg5YmEwYzNmNmVlNGQ5NzkxMzMxZjFhNTU5ZmFhMCBsZWdhY3ktdHJ1bmsKKzE4ODc1IDliYzc1NDQxM2E4YzJkYTNkYmQzMDVhY2I3ZmM0NWEwN2MyMTA0YmMgbGVnYWN5LXRydW5rCisxODg3NiA3NTRlY2QyMWZiZWY2NWUyZWUxNTQ5NjU3NWM0MmI5YWFhZWMyMWVjIGxlZ2FjeS10cnVuaworMTg4NzcgYzgzMmVmNzI0OTlkYjNiZDU1MjgxZGRiNjgxYzM0YWRjMTE0NmNhNiBsZWdhY3ktdHJ1bmsKKzE4ODc4IDhjYTZkOGNhZmNkMzc2NzRmMGMyZjE4ZjZhMWQ2NGQ3MGNmZDE4OWIgbGVnYWN5LXRydW5rCisxODg3OSA3MjM0ZDdjM2MyOWY5NzVjOTQwNDAzODI3YWUyMzhjODQwNzJhNDlmIGxlZ2FjeS10cnVuaworMTg4ODAgMjFlN2ExOGRlYmU2ODFiNTQ1M2ZiZGIwNjY2NTcxZTBlMjRjNzZlNiBsZWdhY3ktdHJ1bmsKKzE4ODgxIDQ2Zjc3MmM2YTIwMDNjZTkyMTJkN2JkNjUzMmIzYTI5ZDE4OTIyZmQgbGVnYWN5LXRydW5rCisxODg4MiA3YzEzYmM3YzQ4NWZhN2UxYTQ2ZjdlMzBjNjk3ZWM3MTY1NDAzNjgyIGxlZ2FjeS10cnVuaworMTg4ODMgY2ZhYzIyNDVhMmM3MmUxMWYwMDlhMzQzMTc2ZWEzODFiYWM2OTdjZCBsZWdhY3ktdHJ1bmsKKzE4ODg0IGQ3ZjUzZjEyZGJlZTFmZjkxZjdkZjc2YWNjY2YzZmU5NmY2YThjYWYgbGVnYWN5LXRydW5rCisxODg4NSBjZTBlNDFjZTc4N2ZmZjkzZDUwZTY1MzVlMGVmNGJiMTBhOTE4NzljIGxlZ2FjeS10cnVuaworMTg4ODYgMGY4MTI3MzY2YTNmN2JlMjcxNzQ1ZTUwNzI0ZmQ2ZWJhOWRkMTU4MSBsZWdhY3ktdHJ1bmsKKzE4ODg3IDVkYzE3NzNjN2Y3Yzk3ZTA3ZTgyODNmN2Q5NTIzZjJjNjYyZWU2YzggbGVnYWN5LXRydW5rCisxODg4OCA4NjUyNjYwMTFkZmE5MmEyYjFhMDBjMWVhOTYzNDM2NTRlMmYyNWFlIGxlZ2FjeS10cnVuaworMTg4ODkgNTk4OGY3NjQ4MGQ2ZDlmYTg3NDBhYWYxZDEwZGY2YjlhNjk0MDM2OCBsZWdhY3ktdHJ1bmsKKzE4ODkwIDgzZDMzZjdlOWZkNDU3NDc4OGViNzZhOTc3OGZmNTliZDFjOGRhMDIgbGVnYWN5LXRydW5rCisxODg5MSA1NWQ4OWE4ZmU5NjNmZWIxN2IxMWMzNWUzOTAxMDlkZjAzZTllYTE3IGxlZ2FjeS10cnVuaworMTg4OTIgOGJhODkwOWZiODIzMDRlY2M5N2U5NmNkN2QyZmQyN2I5MTc4MGE5ZCBsZWdhY3ktdHJ1bmsKKzE4ODkzIDFiZjVkOGI0Y2ViZTg4ZWQwOTJmMTQ5NzlkZGUyYTM5NTI0MzYwYTAgbGVnYWN5LXRydW5rCisxODg5NCA1YmE0NTkxNmFmYzdmMDc1YjJlOGEzMWFiZDBjNTMyY2ZjN2Q4ZDQ2IGxlZ2FjeS10cnVuaworMTg4OTUgNzYxNTUxMTIxODdlMGFkZGIxNWYzNWZmMDFhNzkxMjliMjc1MTBhZCBsZWdhY3ktdHJ1bmsKKzE4ODk2IDE5ZWVlMmRiMmIxNmNiNTg0OTk0M2NiMmUxNmQzZDgxZjI3OTY3ODcgbGVnYWN5LXRydW5rCisxODg5NyAxMTQ0YWZiOTQwMTljZGEwOWZhOTI1YjU0Yzk5OTI3MmE5MmY3ZTY1IGxlZ2FjeS10cnVuaworMTg4OTggNzNjNDFiNDlhOWI4MGVmZWQ0OGNkMWUyZDg4NGU5MWNlNjBlMzM5YyBsZWdhY3ktdHJ1bmsKKzE4ODk5IGJhMjk1ZTJjNzNlYTYwOGJkZTFkOGU1N2QyYzlkNTBkZGEyOGQ1ZTkgbGVnYWN5LXRydW5rCisxODkwMCBiNjg2M2JhODg5ODk2MmQ1OWM5ZDg2YmM2ZTlhZGYyN2ViOWFjNGIxIGxlZ2FjeS10cnVuaworMTg5MDEgNGE2NjU4ZTE4ZjM2ZjEwMGM2OTRjMWU3ZGU3ZmE2ODg5OWVlYzIyNiBsZWdhY3ktdHJ1bmsKKzE4OTAyIDYzYTBhNmQxOGE2MDQyNTY4NDhiNTU4ZGJhNWM1MzRjYTMwYzM0NGEgbGVnYWN5LXRydW5rCisxODkwMyAzMGUzMWMyYWI2MGZhNTliYjgzMGIwZGQ3ZjQ4NzcyMjJiZDc3ODZmIGxlZ2FjeS10cnVuaworMTg5MDQgNzhiZDk3ZDg0MTNjY2Y3YmY3YjQ0M2YxNWU2MGQ0MzMzMzk4MjUxMiBsZWdhY3ktdHJ1bmsKKzE4OTA1IDhiYWMwNjU5MzkzZWJkZmZkZTQ3NjZiODUzNzhlM2FmNDUzYmY3MTggbGVnYWN5LXRydW5rCisxODkwNiAzNWRmZjQ3MTJjOGU2MjVhNmRkMTY0OTM0NGY3MDllMjZlZTg0YTJmIGxlZ2FjeS10cnVuaworMTg5MDcgM2E1NmY2NTA5OWFhNzhkZGM4NDJlYjBkMjNmZDdkOTMwYzUwZDliMiBsZWdhY3ktdHJ1bmsKKzE4OTA4IDc5MzdiY2JiZGQyNGEwOGQ4ZmE2NDdlYjI0NjMzMGRmZWUyMjBiMmUgbGVnYWN5LXRydW5rCisxODkwOSBlNTBjZmE1NDc1ZjM0MjA3Y2UxOTFmNzFhN2RlYTFkMDY1ZjUzNmMwIGxlZ2FjeS10cnVuaworMTg5MTAgNzBiYjExMTkwNDRhY2VlZWIzMDdkNTllNWJlMTIxNzNlMzljOTRjYiBsZWdhY3ktdHJ1bmsKKzE4OTExIGJiODA1Y2NlYjQwMzAwYTg0MDNlNTczMmIzNzMzYWQyYjg0ZWIyMWQgbGVnYWN5LXRydW5rCisxODkxMiBlNjJkNWFmZjBjM2FmMWQyNDQ2NTM4ZDhlOTE5ZWI2YjU1Njc0MjQyIGxlZ2FjeS10cnVuaworMTg5MTMgNDc5OGRjNzM5YzE5YTM5ZjY0MTFiYzlmYzdlMWNlNmI4MDBkMmJmNiBsZWdhY3ktdHJ1bmsKKzE4OTE0IDc1YTIxYzIzMGEyNjgxOWYxZTc3NzhhZDhlM2YxMjk4OWY3ZWM4MDggbGVnYWN5LXRydW5rCisxODkxNSBhY2EwNWQ3NWQyMzJmMTAwZDk2ODAyYTJhZDFiMmRhNGQ5YjdmN2VjIGxlZ2FjeS10cnVuaworMTg5MTYgNGNjOWExZWJlYTYyOGVkMTg0NmQyNDc5OTg5MGIxMzhiZGI2ZTgyOCBsZWdhY3ktdHJ1bmsKKzE4OTE3IDY0ZmFiMDA0N2ExNDI5MmE3MjBhOTZmYTc1ZTQ0Y2VhODMyMTU3ZGMgbGVnYWN5LXRydW5rCisxODkxOCA4ODNjN2Y2MTU3ODkwOTljNjRlNTdiZmMxNTA1MmQ0NDUwMTFmOTU2IGxlZ2FjeS10cnVuaworMTg5MTkgZTMyNTllNGJlYzYwNjM5MmQ3NDAzNDYwMzZiZGVhMWEwOGQ0OTNkZiBsZWdhY3ktdHJ1bmsKKzE4OTIwIDRjNDBlOWQ3NGM1YWE1ZDIwNDViODA5NTI3MjZhM2FhN2E5NGQyMmYgbGVnYWN5LXRydW5rCisxODkyMSA1NjRiYzI0MmZmMGYwODNlYjJiNmJjNzA1MDY3ZWYzNWEwNzg0ODNkIGxlZ2FjeS10cnVuaworMTg5MjIgNTk2ZWRmODEyOWEwNzgwZDU2ODZiNDM0MGJlNWNiODkxYTBlNjY2OSBsZWdhY3ktdHJ1bmsKKzE4OTIzIDZiNjQ3YTVkNWI3ZTM5MWVlOTJiMTdjZjAzZWIzMTFhOWJkNGZiOTkgbGVnYWN5LXRydW5rCisxODkyNCBhZmM2ZjExMzdlYTQ3YzkyNDI3MDY0N2RiNjgyNDIzODU2NTZhZTk0IGxlZ2FjeS10cnVuaworMTg5MjUgODEyODVmNTQ1ZDU0Njk2OGFhMWUzM2M5MjA3OWQyZTVkZTIyNjIwYyBsZWdhY3ktdHJ1bmsKKzE4OTI2IGE5N2FhOTIzODc3MTEzYzE2NTYxZDU4NjcyMDRiMmM0MTVlZjUwNmMgbGVnYWN5LXRydW5rCisxODkyNyBjMjlkYTJjMTQ0MTdkOGUwNjllZTNlNTU3NzU2Y2FlMDc2MGFhOGZkIGxlZ2FjeS10cnVuaworMTg5MjggZDliNjlkNzgwYTE2MGIwNTJjNWJhYzhiM2FkM2RlNGQzMmU3OWJmZSBsZWdhY3ktdHJ1bmsKKzE4OTI5IGZlMzZhYjRiM2U5NzMyNTQzYWQyNmZjZjE4MTlmZjQyNTViMDVhNWUgbGVnYWN5LXRydW5rCisxODkzMCA0ZGI2NjQzODk0MTUyMDJkYjlhOTFhZTFiZGJmNmRkNzAwM2Q5NWEwIGxlZ2FjeS10cnVuaworMTg5MzEgNjhhODAzYjRkNjE4MmFiNGM3MmE1ZTBhMmZkMTBjNTY1MTc1NjJiMSBsZWdhY3ktdHJ1bmsKKzE4OTMyIGI1MzQ1ZTk5NTk2YmVhOTg0NGI3MDU3ZTI1MTBkMTM1NTgzZjNiYTggbGVnYWN5LXRydW5rCisxODkzMyBhZjdkNzkxNGZiZjk5YmNiMjQzY2FjMTdkZjIxYmMyZDkyMzM5YWNhIGxlZ2FjeS10cnVuaworMTg5MzQgYmFlODg5ZjQ0Y2QxZmRkZDIyNTE4NmRlOTJiYjlmMTFlYTk0ZTc2NCBsZWdhY3ktdHJ1bmsKKzE4OTM1IDcxM2VkNmM2YmNiNTM0ZmQzZjBlNTQwOGEzZmQ4MThjYzMyNzMzNWQgbGVnYWN5LXRydW5rCisxODkzNiA3ZTU1ZmE5M2Y0ZGJjMjg3OTBlNGFjMDMwZDY2OWM0YjRmYmEwMzdmIGxlZ2FjeS10cnVuaworMTg5MzcgNTBiYmU4MTFiMzQ0YzkwNjUyNWZjNGFmZDBjMTA5MjZhYTk1NzhkOCBsZWdhY3ktdHJ1bmsKKzE4OTM4IGVhYmQwMDhiMzZlZTdmZWNhN2UyYmU4NjQ4NmZkZjNhOWVjMTYxNzYgbGVnYWN5LXRydW5rCisxODkzOSAyZDNlNjAxNzlkN2FmZWFkNzE2MGU0Y2MwMzcwYmU2NWQ5OGIzODRiIGxlZ2FjeS10cnVuaworMTg5NDAgOTFhNjNkZjdlZWU0MThkMTg3MTZiODUxZDVjYzUxOThiMTQ0NjllNSBsZWdhY3ktdHJ1bmsKKzE4OTQxIGM0MzU1OTA1YjA0NGRlMTBkNTI5OGM4OTViOGZjNGU2NGNiNzcxY2IgbGVnYWN5LXRydW5rCisxODk0MiA5M2Y4MzY0MzJjMmJkMmEwMjhkMTIzYTU5ZDU2OGEzMzk5YWQzNWMwIGxlZ2FjeS10cnVuaworMTg5NDMgMWI2ZTQ1N2QwM2FiNmNiNWUzMjgzZWYyNjRhODA4Nzk1MDlmMzcyMSBsZWdhY3ktdHJ1bmsKKzE4OTQ0IGUyYjJiMDQzYWI0ZWY5NzU1MTE3YmFkNTI5NmNjMGE4ZjZmZjU5YWUgbGVnYWN5LXRydW5rCisxODk0NSBhYmZiMTFmOGUwNTFhMDEzYzM4MjJiYjljNDVmNGYzNmU1YzJkMmIyIGxlZ2FjeS10cnVuaworMTg5NDYgNGMzMDdhMTJkY2I5NzZhNDcxNjY2YTY1MzE1OGU3NzgwZmUyY2Q0OCBsZWdhY3ktdHJ1bmsKKzE4OTQ3IGQ1NmI0OTI2NTMxMGZlYTRkYTY1NTEwNzI0MGJjMDc5NTc4Y2RjNzIgbGVnYWN5LXRydW5rCisxODk0OCA0ODFjM2Q1MGE0ZTU1NTdjNWI1YzcxNWNlYTQ4ZjY4NTVlMjdlODIyIGxlZ2FjeS10cnVuaworMTg5NDkgMjYzMDM1YmVhM2FmMjEwZTI0NDg5ODljNzQyMzA0NGIwZjI5OTQ5YSBsZWdhY3ktdHJ1bmsKKzE4OTUwIGRiYTgzODA5YTc3NTA3NzEzMDIzNDE3ZTI0YTFmZTU2YzEzOTNlMjYgbGVnYWN5LXRydW5rCisxODk1MSA2ZTE0M2FmODQ5MjdhODZhMTU4YjVkMzE0NTE0MGYyOTA4ZGVmYWUzIGxlZ2FjeS10cnVuaworMTg5NTIgOGFjNDBkNDhhNTgxNGJmOTcxYmFmZTAxMTEwMDMzMDNiZjVmNDMzZCBsZWdhY3ktdHJ1bmsKKzE4OTUzIDQ1YzA2NTY2OGVhNWM4Zjk5YzEyODFiNzZkZmE0ZWM3YzU1ODgxNDcgbGVnYWN5LXRydW5rCisxODk1NCBmM2Y2Yjc1OThiYzVhMDUyMzYyNDY3ZjkxM2MyM2ExNDZmYjhjYjY3IGxlZ2FjeS10cnVuaworMTg5NTUgMGMxYWNjMTU0NTVmMGI0YjBlMjkzY2UxMGRlZTgwMzllN2NhYzg2NyBsZWdhY3ktdHJ1bmsKKzE4OTU2IGNhNDZkMzQ1NDI2OWU2OWQ3YWFhNWE5MzBlZDVhMWE2YzVmNmVjNDIgbGVnYWN5LXRydW5rCisxODk1NyBhYjAyZjE3NDFhMjhjN2NjMTcwN2NkZTE2MDdhZTA4NjkyMjQwYzg2IGxlZ2FjeS10cnVuaworMTg5NTggZmI2NzEyMmU1YzFlZGJhZTdiNTExZjczNmYwOTYyNjJiM2NkOWIwZiBsZWdhY3ktdHJ1bmsKKzE4OTU5IGUzNTM2YWE3YWU0YWM0YTRhMWE1ZTFhMzZjYzYwZTgwYWRhZWM2ZGUgbGVnYWN5LXRydW5rCisxODk2MCBmYjc2N2E0NDk2MWU3MTkyNTk3OWEzYTNmYjI4OTY5ZWY5ZjM5MzFjIGxlZ2FjeS10cnVuaworMTg5NjEgOTY3YWJiZWNjNDA0MWEyMmUxMTMyNjQyM2Q5MWRjMTY3OGY0ZTdhYSBsZWdhY3ktdHJ1bmsKKzE4OTYyIGFlMjk2MjI5ZjQyNjk1N2U2OGI1ZDQ0Yzk4NDE5MTRjMGIwOGJjZTYgbGVnYWN5LXRydW5rCisxODk2MyAzZmNkN2Y0NjVmMzQ5ZmNiOGY2MzI1YmYwYWRhODBlMWZmMDljM2JkIGxlZ2FjeS10cnVuaworMTg5NjQgN2NiOTQwYzE1NjQ1MWVlM2U1MGUyNjVhNmVlMWUyMGE5MDc1YzdiMyBsZWdhY3ktdHJ1bmsKKzE4OTY1IGUwNDE4YjFmNWNiN2NiMTcwZDIyNTlmN2ZhNTgwN2U3M2M0NDcxZDcgbGVnYWN5LXRydW5rCisxODk2NiBiYWU5YWJhZGVlMjJhNDg4MzgwN2RiNmExZjZkY2E4MjNiNGEyNTRkIGxlZ2FjeS10cnVuaworMTg5NjcgZDY5NTcxYmY3ODQyNjdiZGVkNzQ0Zjg3ZTRiODZlYzAzMmY1MmJlYiBsZWdhY3ktdHJ1bmsKKzE4OTY4IDI4YzQxNGRjYjNlMThlNTQzZjAwMDkxNjQ4MmRhOTQ2N2IwMTU1ZTUgbGVnYWN5LXRydW5rCisxODk2OSBkYzFjNTc3MTRiM2RkNGYyNDNmNjBjZmZkMTQ1MmE3MGFmNTNiMjRjIGxlZ2FjeS10cnVuaworMTg5NzAgMjhkOGNjYmUyMzdmNjgzZDIxNTE5NjgxYTNkNTAxY2QyOTJhYmU4NyBsZWdhY3ktdHJ1bmsKKzE4OTcxIDRkNDUxYzkyYmM1MGIyZDY0NDVhOWY2MThlY2MxYWQwYmI5NjVjOTEgbGVnYWN5LXRydW5rCisxODk3MiAxNDBkNDVhYTA5ZGMwOWQ2MDFlNzk0Y2M2Mjk1MDE1ODlmMGM1ZjhjIGxlZ2FjeS10cnVuaworMTg5NzMgZTA4MjRiMzU0NGZiZWU4MWIyNjM3NzFkY2ZiYmNlNDA1OWViMjE0YSBsZWdhY3ktdHJ1bmsKKzE4OTc0IGEwNTlkMTM2MDVhMGUxNzk5YTJjNDA5MDI3YWQ3OWY4MTJhMWE4MzEgbGVnYWN5LXRydW5rCisxODk3NSA3MDY2NmIyN2MxYjFhY2RkNzEyZjNmYWFlNzFhNWRiMDhjN2VhNTU4IGxlZ2FjeS10cnVuaworMTg5NzYgNDRmZDFhN2NiMjc5MzlhZjFkZWE0ZjQ4NDdiMTg3MGVmOTJmZTNiMCBsZWdhY3ktdHJ1bmsKKzE4OTc3IDNlMTM1MjRlZDg2Y2MwZWMzNGZhNTE5ZDdjNDA2YjlhNjlmOTM0MzggbGVnYWN5LXRydW5rCisxODk3OCA2MGZhYzYyZjZjMTVlYTA2MDA4NmNlNGFlYjM3NThiMzJhMGRjZTVmIGxlZ2FjeS10cnVuaworMTg5NzkgOGUwMTJhZTlhMDQyMzI3YTdkNTFmOTlhODBlZTVkYTA1M2EwYTYxZCBsZWdhY3ktdHJ1bmsKKzE4OTgwIDY0NTQ1Yzk4NmI5OGIyNmYwZDQyMjhlMDgzMjYxNmU2ZDZmNzg5ODYgbGVnYWN5LXRydW5rCisxODk4MSA5MmIyMTRiYjQyODg0ODU4NDE2ZDVkOTBkZGNjZjYzOGY1MTRlY2I1IGxlZ2FjeS10cnVuaworMTg5ODIgZTA1MjNhNDJjNzhjYWU5MmVhYWU4NjcwMTUzNTEwOGI1NWEwODdjZCBsZWdhY3ktdHJ1bmsKKzE4OTgzIGY2ZDhhMTM5MjlkNzI3MDUyNDQ1MTYzMmZmNzY5YjYwNjc5Y2M0YjkgbGVnYWN5LXRydW5rCisxODk4NCAyMzljNzM3MmMzZDM3ZjhjZTRiNjQ5MWI0Yzk2NTkxMmE1ZDJlNjYzIGxlZ2FjeS10cnVuaworMTg5ODUgZjk5N2RlZDRlMjE5ZjMwYWRiMGI4OTQ0YmE2YjMwYTUyZjc0ZDJhNCBsZWdhY3ktdHJ1bmsKKzE4OTg2IDQ1NDBlNDE4YjgzYWI0ZjEwODUxNjNhZTFjMDE2MzliODk0ZGZkZWMgbGVnYWN5LXRydW5rCisxODk4NyA1NDhlN2E1NDI5MTg1ZmYwYWVkZGFkY2ZiZjNkNTc0MDJjM2RhZGUwIGxlZ2FjeS10cnVuaworMTg5ODggZmJmMDdlMWYzY2EwNzFkOTI3MGU3MTJiNDMyZjdkMmUwMjFlNzhjZSBsZWdhY3ktdHJ1bmsKKzE4OTg5IDZmMWZkODUwMDM5OGNhOTFkOWZkOTZkNWE5OTk4NmIwMzEzNGU5YzEgbGVnYWN5LXRydW5rCisxODk5MCBkMDg2NDkwMmM4YzdkODk5NGZlZjRlOTUxMDFkMDQzYTJkNDIzOTliIGxlZ2FjeS10cnVuaworMTg5OTEgNTYzNjhkMzUwOGRlNTYwMjQ0NDkwZjg4NTU4MTU3MDNkZTIyMjU4ZCBsZWdhY3ktdHJ1bmsKKzE4OTkyIGE5ZTNhNTI4MTVlMmJiM2UwZWJlN2JmNWNhMTg2YTU2OTUyNWZkODggbGVnYWN5LXRydW5rCisxODk5MyBhYTAzYzIwZTg5YjdhZWY5MmQ4NWIzYjYxZmQ2Y2NmNGRkMWJlYjlmIGxlZ2FjeS10cnVuaworMTg5OTQgOGY2NTUyYzcwMzBkMDU0ZmEwZWFjOGRkYjI0NTZhOTVkNTE4NjJlMSBsZWdhY3ktdHJ1bmsKKzE4OTk1IGQ0ODAxOGIzM2UzNTdmNDlmZGFiYTAwNjFiOWMzYjI3NDM1YjQ0ZWUgbGVnYWN5LXRydW5rCisxODk5NiBhMDZiNzNhZDM3MWVhNzc2MGY1YzQzM2MzNzJlZTM0OTU0NWMyNDBkIGxlZ2FjeS10cnVuaworMTg5OTcgNTEzZTU5YjNiOWE5MGI0MjUwZjZmZjI4Y2Y0ZjNhZTY3OTcyNDMzZSBsZWdhY3ktdHJ1bmsKKzE4OTk4IGZhOWVmMGUyZGMwN2RhZGUzZTc1YTJlNzNhM2YwZDAwMDMwNzJmZjggbGVnYWN5LXRydW5rCisxODk5OSA4ODNjYjBlMzFiYjJiM2Y1M2EyZGE4MjU5NzU1ZjMyNjgwYmRjMWJiIGxlZ2FjeS10cnVuaworMTkwMDAgNDliN2MxYmM2MDA0MjkzYmUyMmU0YTBhMGNiMjg3OTg5N2ZmNGJhMyBsZWdhY3ktdHJ1bmsKKzE5MDAxIGQ5NmNlOTcwOGMwMDdjN2RkMjhmMGZlZDk1ZmM0MzIzZjQzMjYxYzcgbGVnYWN5LXRydW5rCisxOTAwMiAzOGRjZWMwNjYxN2JkZmExZjUyYjhhYjAyOGFiYWY3NDA1YmRlMTU5IGxlZ2FjeS10cnVuaworMTkwMDMgMDU4YmQxYmZmMDA4MGU1OWIwMmM1MWE1MGUwNzFlOTdjYTc2ZDU4ZSBsZWdhY3ktdHJ1bmsKKzE5MDA0IDQ5Zjk0YTJiMWRkNDBjZjkxNDg4NDAzOTFkZGRhYWMxMTBjZTQwNzQgbGVnYWN5LXRydW5rCisxOTAwNSA2YWE5NzJkZjgwZDU3NjJjZjI0N2EwMDIzZGZjMzgzZTYxYzVmMjAzIGxlZ2FjeS10cnVuaworMTkwMDYgZDEyYmRlNGIyYWU5MmNkMWVmZGQ5YzcxMzM4YzBkZjE4ZjhjYjllZiBsZWdhY3ktdHJ1bmsKKzE5MDA3IDI2ZTgzMWJiMGQ2ZWM2ODhjNTBhOWQ0NGQyNDE3YTBhYjU2OTQ2YTYgbGVnYWN5LXRydW5rCisxOTAwOCBjZDlkZGRkODk3YTk1NTNlMmY4NmIyMmU5MDVkMzdiMzJiM2VjOWI3IGxlZ2FjeS10cnVuaworMTkwMDkgZmJmOGFiZWM5M2QxOWZjMDM0N2FlN2NkYTAzZTJkMWEyMWEwMjVjZSBsZWdhY3ktdHJ1bmsKKzE5MDA5IGI2MDgzMWVlYWI1YTA2ZGQzYzVlODI5N2E5OWUzOTI5N2FhODc5NGIgbGVnYWN5LXRydW5rCisxOTAxMSA3ZDc2NWMxZDQ5ZTJmMzE1N2E2ZjE4OWNjNTc4NGQzNjU1OTg1ZDkwIGxlZ2FjeS10cnVuaworMTkwMTIgY2EwNTU2MDZiM2ExMWMxNzViMzRmOWU2ZjgzMzg4ZjY4MTg4Mzk5MCBsZWdhY3ktdHJ1bmsKKzE5MDEzIDQ5NTFmNWM0ODEwNWJiZGRmNzI4MzRlZWUwYzdiZWM3M2FhYTJlNmQgbGVnYWN5LXRydW5rCisxOTAxNCA4NWUzNWU2OGUzZGIwNTc4OTZlNDZkZDBiMmVlNWJmZTI4OGU1ZWFhIGxlZ2FjeS10cnVuaworMTkwMTUgZGY3YmZiMzRiMmEyZThkZDY4OGYxMzFjMTEwYzBiNTg2M2M0MGUzZCBsZWdhY3ktdHJ1bmsKKzE5MDE2IDNlZTU1ODYzNDE2NGRhZjQ5OWY3NzY1NzAzNWFkODRkNGU2MWZmODIgbGVnYWN5LXRydW5rCisxOTAxNyBiMmM4Nzk1YTM0NDg5ZWIyMmY2NjhjZGE2ZWY2ODM3N2Y5M2NhNDNiIGxlZ2FjeS10cnVuaworMTkwMTggODNjMWYxNDY4MmEyNTYxYWQ3YzRmNWU3MmI3ZGZiNmM2ZDU1N2IwZiBsZWdhY3ktdHJ1bmsKKzE5MDE5IDYyYmY3Mzk5OGNkYjIxYjQ5NGMzNmUxMjg5ZWRkNjBmZDk0ODU0MWMgbGVnYWN5LXRydW5rCisxOTAyMCA2Mzk2Y2M2YjFmN2ExMjdlZDIxN2E5MTMzYmY4NDRiYTk1ZWNkMmQzIGxlZ2FjeS10cnVuaworMTkwMjEgNjgwZDZhNTBjMmU4NDRmMTE4OGE4Y2ZhYzYxY2VkMTdiYzVmZjhkYSBsZWdhY3ktdHJ1bmsKKzE5MDIyIDQ2OTIwYjYwY2QzMzQzZjI2MzM1NTQ5NDRhNzc4OGQ0MGZiMTNjNWMgbGVnYWN5LXRydW5rCisxOTAyMyBjMGRlNzEwZjMxYzAzZjgwMTk0NTVlMWRjYTM0MzI4MzhkYzc5MTBjIGxlZ2FjeS10cnVuaworMTkwMjQgZmQyNzgwMzFmNDQ5Y2I4NTE3NDRmZGJjNDQ3NTY1MDc1MmQwMmU2YyBsZWdhY3ktdHJ1bmsKKzE5MDI1IDVmNDBmZGJkZDAyYzQxOGQxYWUzZTFjMmJkOGFlMjRkMGFhMGQ3ZTIgbGVnYWN5LXRydW5rCisxOTAyNiAyMjA4YTAzZDA1YTNhZGQxZjMyYzU5NjBhMTAzMmQ3MDYzMDg5MWI2IGxlZ2FjeS10cnVuaworMTkwMjcgMGE3MjA3MGVhYjZlYmE2MzBjNDg4ZGM3NDZmMzg1OWMzMTQwYjI4MiBsZWdhY3ktdHJ1bmsKKzE5MDI4IDEwNjQ2ZDA5MmE1MmZiMmQzNjMzZmZlMmRkMGIxODJmNWI0Njc5YzMgbGVnYWN5LXRydW5rCisxOTAyOSA3MWNlYWJhM2Y2MTUxYjQ0ZjllN2NiODA4YjA0NjY3Y2YyZDM2MjEzIGxlZ2FjeS10cnVuaworMTkwMzAgYTBlNTIwMzhjYzRlMWM4MTNjNjRlODQyNzQ3YzMwYzZiMWI2MWNlNiBsZWdhY3ktdHJ1bmsKKzE5MDMxIDc4Y2RkYmE0NTgwNTMyZmFhNzdiYjU1NmEzNTMyNWM3ZjQ1ZGY5ZWEgbGVnYWN5LXRydW5rCisxOTAzMiAyYzdkZjQ1NDk2YTYyNzZlNDYzOWJkMjQyMTcyMDNhMjJjMjE0ZjI1IGxlZ2FjeS10cnVuaworMTkwMzMgN2FlNmEwOWQ0ZDAyZGVkZDVlYzlmNjE1ODkzMGQ2YjUzY2EwNzg4MCBsZWdhY3ktdHJ1bmsKKzE5MDM0IDcyNWIxYmFmM2RhYjkxYzJiNDMxZTUzYjlkNTk3ZGUwM2RlOTEyMWUgbGVnYWN5LXRydW5rCisxOTAzNSBmNzViODY0ODk5ZmIxNTMxNWQ4MTA4ZTg0Zjg2MzY3YWJkNjU5ZDUwIGxlZ2FjeS10cnVuaworMTkwMzYgMzBjNGM0ZTllM2Q1Njc3ZjQ0ODAyOWQ2NTFiOTI0ZmI5Y2UwOWFiMSBsZWdhY3ktdHJ1bmsKKzE5MDM3IDQzODQyOGQxYmYyNzBlNjk3MGYyYjRhZTU2MWU0OGU2OWRiNGM1NmQgbGVnYWN5LXRydW5rCisxOTAzOCAyZGNiYzFkZmNhOWM1NGRlNjMwNzE4NjQ2ZDdjZTM3NjhlOWE2YjVkIGxlZ2FjeS10cnVuaworMTkwMzkgMjc3NDk4MTgzMDMwNzQ4YTBkNjE5NTJmZGY5NDZmMTU1NDdmNWM5NiBsZWdhY3ktdHJ1bmsKKzE5MDQwIGQwZThlMTk1OWMwYmU0MmYxMjBiOWQzODg0MTAzM2Q5ZGJmZDNmNjQgbGVnYWN5LXRydW5rCisxOTA0MSAzYTBlYjQ1YjJiNWUwMjZkZmQzNTE3NTM2NDQ1MzQ1NTk2MzY0YTY3IGxlZ2FjeS10cnVuaworMTkwNDIgNmY5MjkyMGMxMTUwMDlkZjQ1YTAyMzg4MmY2MzFiN2Y0MDIxODE5NyBsZWdhY3ktdHJ1bmsKKzE5MDQzIGE1NGMyODJiZmI2M2RhMmI3YTc4ZTVlNmM5ZmI0ZjFmYWM1MzI0MDQgbGVnYWN5LXRydW5rCisxOTA0NCBiODgyZjRjODU2NjY4YWYzMzI3NDg3NDI1OGU0ZmM0OTQyNzgzNGEzIGxlZ2FjeS10cnVuaworMTkwNDUgYTEzMGQ1ZjdlNThhZWIyMTk2NGRjZTY0YTQ3ZDljNGRlYTJmYjFjMCBsZWdhY3ktdHJ1bmsKKzE5MDQ2IGUyNmY4ZDZjZjI4OGVmMzZlMmJiNDc0ZWVjYTJmZmZlZjM2NWJkMzMgbGVnYWN5LXRydW5rCisxOTA0NyAxMTVmZGM2MWFlOTE0YjgyYTljOGZiMTM0MzhkMDgxMmYyN2QxNjI0IGxlZ2FjeS10cnVuaworMTkwNDggMDFlOGE2ZDhkYThiYjY1ZWZlZjUxNTE1OTkxMTExN2VkNWQwOTJjOSBsZWdhY3ktdHJ1bmsKKzE5MDQ5IGQ3MjE4YWM5OWMwOWFiMmNlZTZkYTc0ZWIwMTdiYmVhMmRmY2JmNWEgbGVnYWN5LXRydW5rCisxOTA1MCA0OTllMjI5ZTZjZWRhODkyZWY1NzIwMzVlYTU5Y2Q2NmE0ZGExZmJjIGxlZ2FjeS10cnVuaworMTkwNTEgOTkxYTE3ZDYxMDM2Mjc2OWNhNDI1YmNiNDdmZWJiNjVlNGYyOTBhMCBsZWdhY3ktdHJ1bmsKKzE5MDUyIGMxMmQ4NjIzYjI5NDkwZTEyMGI5MDBkY2FlNTM0OTQ5MTU2OGVkNzggbGVnYWN5LXRydW5rCisxOTA1MyBjMDJhZTdhZTAxMWQ2MjgyYWIyMTkzY2EzOGRlN2RmOTNhOWE5ZmUyIGxlZ2FjeS10cnVuaworMTkwNTQgNGZlNjlhOWY4YjMwNzZiOWVmMTcxZjk0ZjE5ZjIzMDViNTM1MGJiNiBsZWdhY3ktdHJ1bmsKKzE5MDU1IDFmZjRmODkwMWQ5NjA2MDk1NWQyN2I2OWUxZjU3ZDE3NzhlMjIzNzAgbGVnYWN5LXRydW5rCisxOTA1NiBmNGFjMDYwYTg0MWIzOTljMDcxNmQ3NmU3ZjQ3ZDhkOTA2NjNhNjMyIGxlZ2FjeS10cnVuaworMTkwNTcgMWFhODM0OWY2Njk1NTgwNmIwMDVkMDQ3YmFlZWMwNjQ1MDg5MjcwYSBsZWdhY3ktdHJ1bmsKKzE5MDU4IDU3MTI2MjAyOTg4ODJhYzA2OTcxZjA5ZGNjZjliZDE5MGI1OTBkNjUgbGVnYWN5LXRydW5rCisxOTA1OSAxYmI3NjUxNjgzZTc0MTI4NGExNDJjNTczZjU4MWM4ODVlY2ZiOTdmIGxlZ2FjeS10cnVuaworMTkwNjAgMzI3NTViNDU2MzY5ZDgyMjY5YjQ3M2ExYTFmNDI4ODBlNWRmYjVlOCBsZWdhY3ktdHJ1bmsKKzE5MDYxIDAxZTVkM2U1ODgzM2FkOWU5OTBkZjg3ZTQzMmY2ZjdiMjBmNjk2NDAgbGVnYWN5LXRydW5rCisxOTA2MiAzNDg0NjcwYzM3ZjJlOGRiZjIwNjAxMWMzZDk5ZWZlNGNiYjBjYTk4IGxlZ2FjeS10cnVuaworMTkwNjMgMzg2NzhjYjBiM2NkYjhkZDYyMjA3ZWVlMmRjMzMzODMwZTEzYTNiOCBsZWdhY3ktdHJ1bmsKKzE5MDY0IDM5N2FlNTNmMWE0ODk5MDZlNTYxNTE5NzlmZTM2NGQ2MDA2M2RjNTYgbGVnYWN5LXRydW5rCisxOTA2NSA3NDNkNTIwNzViZTVlZmNiZjA3ODE5MmE2ZWM4ZDI4NTMwMzFhOWQwIGxlZ2FjeS10cnVuaworMTkwNjYgMjNhYjU5OTIxMjJlODE0MDhmZmUyMzQ1MmQ3NWE3ZDc1OWRlMWJiNSBsZWdhY3ktdHJ1bmsKKzE5MDY3IGEzZjU3ZWQ3NTdlNTBhOWI1NDk2NDAyZTRkZDcxMTc4NmIyMzU3YjAgbGVnYWN5LXRydW5rCisxOTA2OCBhNjQ1M2NmYjczM2YxZDdhZjgzNWZmZmQyYTZlYTIzYWY2NjdmNWRiIGxlZ2FjeS10cnVuaworMTkwNjkgNzQzZjE2MzM2ODI3M2IzYjVkNWY0MDI5N2U0NzE5NDEzZjQ3ZDgyNyBsZWdhY3ktdHJ1bmsKKzE5MDcwIDhkNGEyNWM4MWE5Yjk0MzBmYjAyZGE5MGQwZDU4ODNiNWVkZGNkYTggbGVnYWN5LXRydW5rCisxOTA3MSA1NWU4YzAyNmUxZTNmZjIyYzVlNjI0YmUyNTBhZDlmMzI3ZTNkMzgzIGxlZ2FjeS10cnVuaworMTkwNzIgMWU0M2EyNDU2ZThmZTRjY2U1MWQ1MmE0MmIyZmQ0MWM3ZmJhZTMyNiBsZWdhY3ktdHJ1bmsKKzE5MDczIDk4YjY1NDg0YWRlNmE4NGNlODExZGFiYjhiMGQzMTNmNWYxYzg1NTcgbGVnYWN5LXRydW5rCisxOTA3NCAxZGY0MGQ3NzI0Y2NkZTQwNjU3YzM4Yzc0NTE4YTkzNjY0NTUxNWU1IGxlZ2FjeS10cnVuaworMTkwNzUgYzBmNjFkNGY1YTA0ODgxMjM0NjlmYjNjYzMwYzU1OTZmN2E3NTM4MCBsZWdhY3ktdHJ1bmsKKzE5MDc2IDYzNWU5ZGNmZWQyY2M2NTg0ODk1Y2NjNDIxNzA0YjZkYzMzNDM2ZDUgbGVnYWN5LXRydW5rCisxOTA3NyA3Mjg2MGVlOWVhZjA4OTBmZDBlMmI2YmE1OTMwMzUyMzFjMGM5ZTZkIGxlZ2FjeS10cnVuaworMTkwNzggNWFlYTE1ODE1NDNiNDQ4Mjg1MGE1YjIxYWEzODVkNjM4NzZlMDYxNiBsZWdhY3ktdHJ1bmsKKzE5MDc5IDM5NzQ5MWFhMjBhNmViY2E3YzkyODkxYjVlNWRkNzBmMzdkODU4MmMgbGVnYWN5LXRydW5rCisxOTA4MCBhNGU1NGJmZDNjMjlkNjU2OTExZWFhYjhiY2JkZjA5OTI5MDQwZTRlIGxlZ2FjeS10cnVuaworMTkwODEgMjU5Zjc5YTM2ZTJmMzZkMGIyZGUxYjRiZGE4MjUwNjZkNGZlYjFiYyBsZWdhY3ktdHJ1bmsKKzE5MDgyIDE4NWRmYzE0YTkzNDJmYjc2NWJkMTUxYjRhZGM1ZTllOGU2MThlMTIgbGVnYWN5LXRydW5rCisxOTA4MyA1ODg2OTFmODA2ZjRkMDgxYTM0NDE2NzAyMTM4YzFmZDhiZjMwZWUwIGxlZ2FjeS10cnVuaworMTkwODQgYTBlNDZjM2JlNjNlZjJkZjRmNDFkNDU5NzE3ODYwNmFlNDhjNWViNiBsZWdhY3ktdHJ1bmsKKzE5MDg1IDU0NTM0MTQ4ODczZTZmOWMxNzkyY2U2ZWZkZDJkYzJjYTU2NmFhODMgbGVnYWN5LXRydW5rCisxOTA4NiBkMzI5MmVlNWI2ZTI0YTE1YzU0NWUwYjFiOTExMmJlOWI4MmU3MzQ5IGxlZ2FjeS10cnVuaworMTkwODcgZTU2ZGQyZGQ5OTYwNzJhNzk0OTY4OWU0ODdhMzRmYjE1MDUxM2FiMCBsZWdhY3ktdHJ1bmsKKzE5MDg4IGM3YzQwNGIzNWYzM2EwZDU0YzgyZjY3NTg5OWYxOTBjMTNlNTBmZDcgbGVnYWN5LXRydW5rCisxOTA4OSA4YzRkYjhiOWFmOWI5MGU1MzZiZmI1MDBlNDcwZTYyMDYyZTFmOGYwIGxlZ2FjeS10cnVuaworMTkwOTAgYWJiOTQ1MDY2NDM2NzUwODA0NGY5NGZkZWIwMmU0YzQxMGFmMzFiZCBsZWdhY3ktdHJ1bmsKKzE5MDkxIGUzMDI1ODY0NTJhMzA4MzgwY2JhNDllNjA2MDJkODhlMTA3ZTc2NjkgbGVnYWN5LXRydW5rCisxOTA5MiAzOWExNGJjOGEwZjc5MGI4NDhiZWRmZDNjNmQ0ODdiOTlhY2VhNmNkIGxlZ2FjeS10cnVuaworMTkwOTMgM2EyMGRhMjg5M2M0N2Y1OGJkNmRhOWFhMjY1ZGU3ZDQ4NzYyYTlhMiBsZWdhY3ktdHJ1bmsKKzE5MDk0IGRmMmVkNTY2NGJlNTE1MjJlMTJmZGY3ODUzNmQ3ZGFkYzM3YjAzZTYgbGVnYWN5LXRydW5rCisxOTA5NSA5YmY0MzhjOGY1Yzc5MzhhNWY1ZjU1MTdjZDMyOTYwNjBiNTAxYTJiIGxlZ2FjeS10cnVuaworMTkwOTYgNDFlZDRkODZkYjc3NzI1MGM2MmM0MWJhNmUzZDA4NzEyY2VlYzVjZSBsZWdhY3ktdHJ1bmsKKzE5MDk3IDVjNjAxODRmN2Y1MmFiMWQ1MjIzM2VjOWUzOTgzNDkyMGFmYzk3NTcgbGVnYWN5LXRydW5rCisxOTA5OCBlNWQ1OWE5ZGJmYzAyOGNkZWYwZWQyNjdhMjM5YWMyYzAzNTI3YjRmIGxlZ2FjeS10cnVuaworMTkwOTkgM2ZlNzU5MjRlYWMxMGRjYWE5NzM5YTYzMjM0ZWUyYjczYjE5NTNlMyBsZWdhY3ktdHJ1bmsKKzE5MTAwIGI0ZDRmMjAyMTExNDRhOWM4ZTI4MDMxZjQ4ZGZhMmVhNTBjN2QxMTMgbGVnYWN5LXRydW5rCisxOTEwMSAyZmY4MjYzMThlODllZGZiZDBkNzZlYTdjYTU4MjU0ZGExNGM0MzYxIGxlZ2FjeS10cnVuaworMTkxMDIgN2Y2MThiYzEzOTgxMTA5MjJjNTU1NmQ2Y2JkZTNiNTNkMDlkMmZiYyBsZWdhY3ktdHJ1bmsKKzE5MTAzIDA1YmU1Zjg1ZjNiZjYwOGQ2YjlkOTI4NTcxYjVhM2RmZDhlOWYxNWQgbGVnYWN5LXRydW5rCisxOTEwNCAzYzVmMDk0MjJiNjlhOWZkODcyMzBiZTc0ZWU5YzVmNzAyMWM0YmQzIGxlZ2FjeS10cnVuaworMTkxMDUgOWZkOTZlMjQ1NWI2MmM3NzU3ZjFlMGUxN2RkZTVkNDU5NjBjMGZiNSBsZWdhY3ktdHJ1bmsKKzE5MTA2IGZhMjA5Y2M4NGNhY2UzZWM4ZDNjOTg4Mzc5YjdmMTY4NWU0MTc2ODUgbGVnYWN5LXRydW5rCisxOTEwNyAwOTczNmFlYWI4MzExZmYyMzdkYmE1ZWMwMjQ1YTYzYTIyYTcwYTlkIGxlZ2FjeS10cnVuaworMTkxMDggYzQxZGQyMjA0YjljOGUwYjMwM2QxMjIxODBjMTdjZDVkYTA1MjhkOCBsZWdhY3ktdHJ1bmsKKzE5MTA5IGE2OGM3MDMyY2RmMjk5ZjJiM2VmODEzOGRjYTdmYTQ1NTIzZDI5ZjQgbGVnYWN5LXRydW5rCisxOTExMCAxNDBjNTI4NThmNjVlNDA4OGFiMTVmZjU3OTZhZWRkOTdhMzAzZmJlIGxlZ2FjeS10cnVuaworMTkxMTEgZmEyNzFkN2IyYTYyYmNhZmRmOTM2ZjRjMTZjOTY5ZDg1MjNiOTI1NiBsZWdhY3ktdHJ1bmsKKzE5MTEyIGFhYjg3MTYzNWZmYWU0OWI4OTA5ZWY2NjBlZGIyNjRmNjAzMGFlZDggbGVnYWN5LXRydW5rCisxOTExMyBiZDhkMjk4YWY4ODBjMmExZTAyYzE4ZWQ3OTlmMjM0ODZhNTAyZTFmIGxlZ2FjeS10cnVuaworMTkxMTQgM2Y4OWU3MjQwMDg2MDU2ODM5NDEzZTM5ZjA0YTdjOGJiNWNjMjIzMyBsZWdhY3ktdHJ1bmsKKzE5MTE1IDRiNTFkMDY5YmUzNTBlZDlhNTQwNGYwMjQ3NjM5NjlhY2JmMDAyYTYgbGVnYWN5LXRydW5rCisxOTExNiBjMWNmNWQyYzI2Y2FlNzBlMzBjOGMzNWUyODQ2YjFlMWIwMDExOGU0IGxlZ2FjeS10cnVuaworMTkxMTcgZjgwNDUzZTQ0NWI1YTQ0MTU4ZWQ5Njg2MmFkMDJjNWFiZWIxMGRhYiBsZWdhY3ktdHJ1bmsKKzE5MTE4IDA3MDcxODcyZGUzZTExNGIwMTI2YzNlMjdhYjdlNmY3ZTk1MDYyMDAgbGVnYWN5LXRydW5rCisxOTExOSBmZDhjNzIwMzI1MWZmMzdkYmIzOTdmN2Q0MjNhZTQxZjE2YTAzYzY4IGxlZ2FjeS10cnVuaworMTkxMjAgZjQ5NGNhMGEyYjM0NmZmNjhmYWFjY2M2NTA4YmVhMjgwMmRhOWEwOCBsZWdhY3ktdHJ1bmsKKzE5MTIxIDkzODZiMzJiZmYxZGFiNDI0ZDBiNTU0ZjY5ODYxOWJjYjU0M2E4ZmEgbGVnYWN5LXRydW5rCisxOTEyMiAyMGVmODQ5ZWM4NzdjNzJlNTRiNmE0NGJmNThkNDVhZTNhZDQzNTFhIGxlZ2FjeS10cnVuaworMTkxMjMgYmRmYzZmMWZhNDc1Y2U2NzMxM2Q5M2RjMWUzM2FlMmJjZWJhZjUzZCBsZWdhY3ktdHJ1bmsKKzE5MTI0IGE3MDRlYTVlY2ViNmIzZDFhZmMxZmFkY2RjODg1NDQxY2VkZjc4NGEgbGVnYWN5LXRydW5rCisxOTEyNSA3NjNhM2Q0MmJhZWRmMTY3ZDI5MjU5MDc0OGFmM2EwNjcxMmQzMmY2IGxlZ2FjeS10cnVuaworMTkxMjYgZTE4ODg5ZTM5NDljMDY5ZjFjMzQxZTBlNzdjMmI2NDY1M2IxZmNjNSBsZWdhY3ktdHJ1bmsKKzE5MTI3IGQ2MTRiNmU5ZmI0ZWQ5NGUxZjAwYjcxMDkwZTk0MWMxMzljN2FjZTIgbGVnYWN5LXRydW5rCisxOTEyOCA5OWYzNDY3Mzg0MTVhMDZiMzJmYjdhNGJiMTE4OTAxNzljZDE4OTJiIGxlZ2FjeS10cnVuaworMTkxMjkgNjBlZTMzOGYwZDY2NmZkZWZlMDAzNjAyMTUzMTk2NmZjYzYxZjkwZiBsZWdhY3ktdHJ1bmsKKzE5MTMwIGMyY2U5YjJlNWJiNDIzYWFlZWRiMGYxZDk1NDk4OGExOWUxOTdhMGIgbGVnYWN5LXRydW5rCisxOTEzMSA3Nzk1ODI2NmM3ZDdhYWJmZWM1MzlmYmI3MWU0NTQyZjZkNmUwZGVlIGxlZ2FjeS10cnVuaworMTkxMzIgOTAyNTVkNDQxY2Q1ZjYyMWQwODVhNDhlM2JlMTY3MjRmZWUzMjI5YiBsZWdhY3ktdHJ1bmsKKzE5MTMzIDdlZjIzODJmNjEyM2EwNjVmOTA3NjIxMGRhN2MxMjQ1OTNmOWVjZjEgbGVnYWN5LXRydW5rCisxOTEzNCA4MzVlOWRkNTRiZmI4YWM2M2ZlYWUzOTNkOGUxZjRjYmZlMWU4ODQ5IGxlZ2FjeS10cnVuaworMTkxMzUgYzg1Y2E4YzYyMTI5Y2M4MTE0YzUzYTcwNDFmM2FjYjFiYTZlNDk3NyBsZWdhY3ktdHJ1bmsKKzE5MTM2IDJhZWIzYTM0YzdhY2RiMzNmZmE1Zjk4N2U0NWY3YjJiYzZhNmFjMzkgbGVnYWN5LXRydW5rCisxOTEzNyA5Y2U1MTQ5ODI1ZjZhZWFiZDBkN2NiNDY5MGY2MDJmZDViMGE4NGJmIGxlZ2FjeS10cnVuaworMTkxMzggY2E4NTU0N2ZjYjVlNDI0ZjUzYmY2YzRkNDQ2ZWMwYzc5NTk2NjE3NiBsZWdhY3ktdHJ1bmsKKzE5MTM5IDE2ZTIxNzcyY2EzZjE0NjIwMmRhZDc1OTlhZWQxOWM0MjU0OWJiMDAgbGVnYWN5LXRydW5rCisxOTE0MCBiNDZmOTU2YWJjZjg1MmY1NjBhZTk5MzQwZTQyZmUxYjFlOGFiMzcwIGxlZ2FjeS10cnVuaworMTkxNDEgNzg1Y2U2MTk2Nzk2MTQyODM0MzBkZjQ5MzBkZmYwNjI0Y2ZlMzcwNCBsZWdhY3ktdHJ1bmsKKzE5MTQyIDhiODFhN2U1OGExZDE5YzhiZjZmOTVhYmY0NTg3ODI3NTVmN2YzNmUgbGVnYWN5LXRydW5rCisxOTE0MyAyYWJjYmU0NDI3MWFiYjA3NjM0NTM3Mjg1OWNjNTE4YmMzNWYyMzFlIGxlZ2FjeS10cnVuaworMTkxNDQgZWE0YTJmM2IyNjZlMDE4NjVmZDY0YTMyNTgyNjY0YjhjZmI3OGI0OSBsZWdhY3ktdHJ1bmsKKzE5MTQ1IDY1YzZhMjk5OGIxYmRlZDBjOTk2NTNkNjIyMDczMjI1ZmU3OTQzMmQgbGVnYWN5LXRydW5rCisxOTE0NiBhMDU1OGViZjY2MTI3NTNlMDM4OGI2ZDdhZTNjMGMwNDY1NWRhNDU4IGxlZ2FjeS10cnVuaworMTkxNDcgMTVlMGMxMDA5MmJiNGRiMGFkNjczMjcyZmEyOTczMTI4YTFjOTg2MiBsZWdhY3ktdHJ1bmsKKzE5MTQ4IDIwZTNjMGQ1ZTQ2ZmQzNDNlMThmMTFjNjBjM2FlNWZmZGFhNmExNDkgbGVnYWN5LXRydW5rCisxOTE0OSA0YjcyODg4YzllMmY3ZWRkMzM2NjkzZjg1ZjJmNjZhMzJjZTM5Y2JiIGxlZ2FjeS10cnVuaworMTkxNTAgYzBhMjQ0MWE0NDU0YmRmMzBkYTFkMjc4NGRiYzJhNGIxYWU5M2U4YSBsZWdhY3ktdHJ1bmsKKzE5MTUxIDkzYmEzM2RjMzMzYWYyMmM3YWFkZWRjN2IwYjExY2IxMDZiODE1ZjcgbGVnYWN5LXRydW5rCisxOTE1MiA3YTI1MTQ0MGNlNjdkNjg5NGFiZjJmYmRlOGIzMjZiNjJmNjAyY2ExIGxlZ2FjeS10cnVuaworMTkxNTMgMDk0MDNjNWNkYWZiYzA4YTYwYjI2ODU2ZjFkNDI4MGRmM2I2NmFjYyBsZWdhY3ktdHJ1bmsKKzE5MTU0IDA1MDFjMmExMDMxNWZjNGYwZDRjMTQ4NTNlYzEwNjQyNjM3Y2YyZjYgbGVnYWN5LXRydW5rCisxOTE1NSAyN2E0YTE3YWVjMjUxNGNkODg2NDY3OTk3MjllOTU2ZDE4NWY1M2Y3IGxlZ2FjeS10cnVuaworMTkxNTYgMjhjNmVjNTgxYWE2OTY4MjJiOTllM2NmMjkyYmFhMzEyNTNkNmI3NSBsZWdhY3ktdHJ1bmsKKzE5MTU3IDdiMzQ3NmMxMzgyZWJjYmZjYTVkZDc3NzE0Y2RlMDk1Y2FmNTY3MjIgbGVnYWN5LXRydW5rCisxOTE1OCBhYjk5YmQzOTQ3MGNlMzkxYmFjMmY4Y2NjNjA3OTk5OTcxM2ExMGQ1IGxlZ2FjeS10cnVuaworMTkxNTkgZDBkOGM5ZDUyZjE4NDk5ZDBhYWRlY2ViMDExYTQwMjgxYTQ2NmNkYSBsZWdhY3ktdHJ1bmsKKzE5MTYwIDJkYjI5OTM5NTgwZGJhNzhkNTA2YTMyMWEwNjJjMmE1MjQwOTJkZjQgbGVnYWN5LXRydW5rCisxOTE2MSBlMWUwZTk5NmIwMDM1ZGEyMmQ5ZGI1NmU4NGJmMDYyZTBhOGUxN2VhIGxlZ2FjeS10cnVuaworMTkxNjIgMjZjMWZmZmRmZmYyZjA4ZTc0YzlmNGNhYmMwM2YzNjRiNzFjMzZhMCBsZWdhY3ktdHJ1bmsKKzE5MTYzIGJkZmI4MWQzYzYxMGVhZDhmMzlkYzZhNTM5NjczZWM2MWEzYjc4NTIgbGVnYWN5LXRydW5rCisxOTE2NCAzYTFlNjU4ZTQ0NzQ2YzAyMTZjNzBhZjZmZDU1MjlhOWU4NzkyMTQ5IGxlZ2FjeS10cnVuaworMTkxNjUgZTdmNDEzZDRlZTE1YWI4NmQ0NjRhMTViZTNmYzdkYWQxZDQyZDkwMCBsZWdhY3ktdHJ1bmsKKzE5MTY2IGZjM2Y1MDU5NDVkNGNkMDgyZDY1MDZjYWUzMTg3MzIwNjMxNzRhYmUgbGVnYWN5LXRydW5rCisxOTE2NyBmYjBmNTZiYjE0MDU5OTczZTU2NDU5NmQ4Njg5Y2RhODdkNjJjMzFkIGxlZ2FjeS10cnVuaworMTkxNjggOGU4NzNmYTU0NTBlYmY1NmJlNDA2ZjE5NmE1OGQ0ZWE4ODY1ZGE5NyBsZWdhY3ktdHJ1bmsKKzE5MTY5IGY4NGY4ZDgxZTMyY2U3MDcxMTJiMzg2NTA5ZDk5OTczYjQyNjMxNzEgbGVnYWN5LXRydW5rCisxOTE3MCA4ZTY2ZWE2MDI2MTZkYThmZWU5MThhYTcxMTkwZDQ4N2M0YTc4NTY5IGxlZ2FjeS10cnVuaworMTkxNzEgOTY2M2Q1ZWJiNjQ2YzEyMmM4YzFiNTM5Nzc1NDQ3MDczOTVmNTgyNiBsZWdhY3ktdHJ1bmsKKzE5MTcyIDU0YjBhZWY2NTBjNTI5ZDA3NmU4NzgwOTFmNzcwNjlhMGQ2NGU4NGIgbGVnYWN5LXRydW5rCisxOTE3MyA4YzQxZjM4NjFhYWRkY2NhZjJkMGYyYmFiMTVmOGU3ZjQ5ZDg3MTkyIGxlZ2FjeS10cnVuaworMTkxNzQgYjgwMTgxNDVlMmE1ZTc5NTI2YjU2OWU3MmEwZjdkNzU3M2U1NzFiNiBsZWdhY3ktdHJ1bmsKKzE5MTc1IDY2MmFkZjAzZTRmYTJmNjZkYTZmODgwYTgxYzA3MTAyNWM1OGEyZWYgbGVnYWN5LXRydW5rCisxOTE3NiAyNGU0NTdiYTFmOTI2YzViNGM3NGM4YzIyMTY2ZjhiMDQzNjA2NWUwIGxlZ2FjeS10cnVuaworMTkxNzcgMjhjNjBlZjQ4ZmEzYTFjYmExZTE5MzgzOThmZmJkNDJlMmU4YTIwMCBsZWdhY3ktdHJ1bmsKKzE5MTc4IDc5ZTcyY2UyMmE0MzBmMDFhMDRiYmZkYTU3ZmRkMjJmOWI1ZmMwZWYgbGVnYWN5LXRydW5rCisxOTE3OSA4NjFiZjhkY2ZiNThiODY2N2Q4NWU5NmEyMDczMjgyMzkwMWZmZTgyIGxlZ2FjeS10cnVuaworMTkxODAgMTdjYWM3MGNhZTc2NjIxNzBhMmE5NThlNDdlY2RlZjYzNmVmNmUzNSBsZWdhY3ktdHJ1bmsKKzE5MTgxIGIzMzVkNGRkMjIzZjM4ODRhNjc2YmM0MDAyNmJlOTc5MTE0NmJlNWUgbGVnYWN5LXRydW5rCisxOTE4MiAwZWZhNmM5N2E0ZmFiNTY1ODZhZDQ3YzAwYzllYjU1NjkzYzc1ZWQ0IGxlZ2FjeS10cnVuaworMTkxODMgYTU4Yzk5M2Q5MjM0NTcyZjgyOWQ4NThhNGU4MmIzZDc3NWVmYWZkNCBsZWdhY3ktdHJ1bmsKKzE5MTg0IDkyNWIyMzNmMDJlYTBkY2UxOTQ0Njk2NDc5ZGRmMWQ0ZTYyMzZmN2QgbGVnYWN5LXRydW5rCisxOTE4NSBhZmQwOTMwZjg2ODM5OWFlYjI1MGZlNGQyZDMxNjBhM2IyNTRjZmRkIGxlZ2FjeS10cnVuaworMTkxODYgOWQ1NzIwMzgyMDZlMDI3NjA4OTU2MzEzYmY3ZTkxY2VhMzA5NGZlMyBsZWdhY3ktdHJ1bmsKKzE5MTg3IDMzMDIzOTU3NWUxZTY3NTdmY2ZlNzdhNjdmZGY0YWUzYjZmMmFlMjMgbGVnYWN5LXRydW5rCisxOTE4OCBmZmQyNTFkZmFiZjQyYWQ4MmE5NzIwNjQ1ZjMyOWMxOWVlYmMwMDliIGxlZ2FjeS10cnVuaworMTkxODkgOTNhZmIyYmIyMmVkMDliYWY4Zjk2MDcwNDgwMzY1MTcyZDg4ZTFiNSBsZWdhY3ktdHJ1bmsKKzE5MTkwIGFiZDM4M2YxOTA1YzgxZWNlOTBmNGUyMmNlM2RlNDE4YzVjNWI1Y2IgbGVnYWN5LXRydW5rCisxOTE5MSA0ZDQyNGQxMzk3YjJkOGI5ODU0NzgzNTc5ZWJmMzIwZDU3MTIxNWMyIGxlZ2FjeS10cnVuaworMTkxOTIgYmUwNmJmY2JlNTFhMmVhYzUwMjU4Yjc3MmNmNDI1NmFjMjdlYWZhMyBsZWdhY3ktdHJ1bmsKKzE5MTkzIDI0ZThjNjljZDM0ZGE1NGE1ODI5NzcwMzNhMDBiODJhY2UzYjkwYzQgbGVnYWN5LXRydW5rCisxOTE5NCBiYWNiYjQ1ZmU4NDQ4ZmUyMzY3ZjQ1MjIxMGQ0N2E4MTcwMjVkMTcwIGxlZ2FjeS10cnVuaworMTkxOTUgMDFkNWI4MGEzYzAzODIzNzVkZjk0NjQ4YTc0NmNjYjg5MzhkZWYzYyBsZWdhY3ktdHJ1bmsKKzE5MTk2IDM2ZGIxOTM2MDhiZWUxNTQ1YjdmOTU5NDE1ODgxMjdjZGNmY2YzZTEgbGVnYWN5LXRydW5rCisxOTE5NyAyODUyZWFkYjdkYWJhNTEyY2IzMWVkY2M0MzI2NjM1MmJkNDg4ZDYwIGxlZ2FjeS10cnVuaworMTkxOTggMmQ4ZTAyOTAyZDY3ZTk4ODk3MTRkOTAwM2FhZmU5ZjI2YTBmZDZmOSBsZWdhY3ktdHJ1bmsKKzE5MTk5IGZhOTNiZDFkODcwOWQ4Y2JiZGNiZTA0YmI5N2MwNzZhN2IwOTI4ZDYgbGVnYWN5LXRydW5rCisxOTIwMCA2ODdmOTNkZGYzZDczNDNiYTAzYmNhMjNjZGQ5OWE5MzhiZDgyZTQ5IGxlZ2FjeS10cnVuaworMTkyMDEgNjU0OTgyYTQ2NjA3NzY5ZWViMjBmNWNhZDQ4MjFjOTg2YjhmMWYwYSBsZWdhY3ktdHJ1bmsKKzE5MjAyIDIwNzA3NDU4OGI5ZmRlMDRkMWQ2YzFmMzA0NTZlMjA5NGI0ZmZlNTggbGVnYWN5LXRydW5rCisxOTIwMyBhNGJiYTNlYjM0YzFmMTczNmUyOTM1NjYzNWRlMWFkMzUwMzc4MDM1IGxlZ2FjeS10cnVuaworMTkyMDQgMDVhOTEzZmY5N2E2ZTIxMGY2YTIwMTk4N2I5NTk0NzFmY2FjNDMzYSBsZWdhY3ktdHJ1bmsKKzE5MjA1IGY4N2E0MWI5NmUyOGNjOThkMTAxNDRlNGIwYWU4NDZkNzZiY2RmNWUgbGVnYWN5LXRydW5rCisxOTIwNiBhOGQ4ODU3YWIwZjFlY2Q1YmFhNjBjZTlmNTU5YjMwMjhhODQ1MzNlIGxlZ2FjeS10cnVuaworMTkyMDcgMGNiNDc5NTUzNDRlNDQ0ZTAxMWFiMzc5MjUwZGRjYWMwNzZhZGJlYyBsZWdhY3ktdHJ1bmsKKzE5MjA4IDkwZWRlNTE2NWQxZjNjMTVlYTA4YTJiODc4OGIzMjdhNTE3MGFiMDcgbGVnYWN5LXRydW5rCisxOTIwOSA2ZjFjMzdlODExNjA1YmZhMDUxMTVjY2VmNjdkMjk5YmU4MWYxODhmIGxlZ2FjeS10cnVuaworMTkyMTAgNmRmMTI3MzJlMjYyZjNjNzgzYjJjMDY5YTdkZDZjYmVhYjhiOGViNSBsZWdhY3ktdHJ1bmsKKzE5MjExIDdjNGViNDBkNGZmNzkyOGU1MGRlMTNkMmQ2MGQ4NzUwMWIwOWRlMTkgbGVnYWN5LXRydW5rCisxOTIxMiA2NmQ0YmY1NmUzMmRiYjE4NWIyZWUyYzM2MWU0MjAzMDMyNjYxYmMwIGxlZ2FjeS10cnVuaworMTkyMTMgZWYzMmJmYTVmNWM2ODEzNDgwYjRhMTM4YzYxNGQ1NzM1NTAxYzg5MiBsZWdhY3ktdHJ1bmsKKzE5MjE0IDBlZWIyZWUyMDc5OTlkYWFlYjFkYjZmMWEwNThmNGZmOTU4NDEzZjcgbGVnYWN5LXRydW5rCisxOTIxNSBhZTA0ZDYxNGEzZTAzM2I0MGViZjdkYWE4Njc5NzljYjhhN2I0NzliIGxlZ2FjeS10cnVuaworMTkyMTYgYzNiNzVhN2ZhZDNmNzgwNmM3NDkwOTc1YjJiN2I3MjIwOTcwNGE4NyBsZWdhY3ktdHJ1bmsKKzE5MjE3IGU0NDIwYzI0NjhmOTBhYTZiMWI2MWZmMTcwYjNiZjIwZmE4MDUyZjMgbGVnYWN5LXRydW5rCisxOTIxOCA0ZmYyODU4ZDdhODU1Njg2NDY5NTc2ODEyZmY1MzJlNGE0MWNiNDNjIGxlZ2FjeS10cnVuaworMTkyMTkgOWYyY2E4NTVmYTQ0ZGI2NGExNjhjYjkyZWRkYmY5ZTc1ZDI4MGY4YyBsZWdhY3ktdHJ1bmsKKzE5MjIwIGZhOGJlMjg3MzBjOTg1MzI0M2I0MjdmYzBjZmYzNzMyNDIwYmJhYzAgbGVnYWN5LXRydW5rCisxOTIyMSAxMDljNmEyODBlNTFhYTJjN2VmMmMzNWZkNjAxNjY2NTQ2OThiNGU1IGxlZ2FjeS10cnVuaworMTkyMjIgOTVkYWU2MWNlZDUxODMzZDhmMTg1OTFmODcwMTYwY2ZkZjc2OGM5MCBsZWdhY3ktdHJ1bmsKKzE5MjIzIDhjNWQ4YjYxNzk3OWFiYjFlNmJkZDI1MWY1Zjk4YWRiNDcwMDdkZGMgbGVnYWN5LXRydW5rCisxOTIyNCA2NTVhYWNjZDFjYWY4YTU1OWZmYzMyZjE2M2QxMDIyOGU1OWM0MTJiIGxlZ2FjeS10cnVuaworMTkyMjUgYzI5Y2ExOTgwMzAzOGJjYjRhMmYwYWE0OTY5Y2ViYmZhMWNlYmMzYiBsZWdhY3ktdHJ1bmsKKzE5MjI2IGYxZTJmOThmMDEyMDc4MDM3MWQyMGFiZGFlMTZmNGJkNmQyOWFiNjAgbGVnYWN5LXRydW5rCisxOTIyNyA1MGY3ZGQxYTUzNTdkOWM5NTkzMjdiOWIxNjc3MzIxZjI1MzljYjJmIGxlZ2FjeS10cnVuaworMTkyMjggMzhjYTljYzlmYzQ4YTFjZjMwMDdhOWE5MDliY2YyMDg3MmQ5NTc1YiBsZWdhY3ktdHJ1bmsKKzE5MjI5IDNjMWI0MjZiM2ZmNGM2ZWNjZWIxZTEyNmZiZWZhNDdkMGY3MzRmM2UgbGVnYWN5LXRydW5rCisxOTIzMCBjNjk2YTUyYzI2MjE4NDU4MjMxZmQ4ZjYzNzFkNmJkYjllMzc5YjdhIGxlZ2FjeS10cnVuaworMTkyMzEgYzA0Y2E2Y2JhMWUzYzhlOGI1MmQ1YTM2MTUxMTQ4NzA1YjdjMTAyNiBsZWdhY3ktdHJ1bmsKKzE5MjMyIDRiNWJlY2ZhMmViM2FjZDRmMWY1OWNkNzljMzA2M2M3MzAxMzdjZjYgbGVnYWN5LXRydW5rCisxOTIzMyAzZmU4NTU1MjZjNTU2MDQ5ZDg5YzQ0ZTA2YjJmMTFiZDZhNWE2NzU0IGxlZ2FjeS10cnVuaworMTkyMzQgNjcwYTAxOTRhOGRhN2U4YmU4ZDE5NzkxOTY5ZjgyZmE2ODllMmRmZCBsZWdhY3ktdHJ1bmsKKzE5MjM1IDVkZmQ3ZTE2YzYyZjE3MmU2NGFkNGI0ZWQ4NTAzMTdkOWI5ZDJmNDcgbGVnYWN5LXRydW5rCisxOTIzNiA2MzI1YmQwNjNmMGE4ODMzNmZiYTU1MDdjOTQ1NjZjOGM0ZDlhNTUzIGxlZ2FjeS10cnVuaworMTkyMzcgNmZkNjNjNWMxOWE5MjE4YjI4OTllY2UyOTQzZGJlOWE1ZjBjNzA2NyBsZWdhY3ktdHJ1bmsKKzE5MjM4IDhiMWEzODIyNGFkZTliNTc1YTU1M2IyNTg1ODY5YTEyOWQyMzFhN2QgbGVnYWN5LXRydW5rCisxOTIzOSAwZDRiNmJhNWVlZWM4NTA1MjJjZDkzNTc3OTNiM2NlZTgxZmYxZWZlIGxlZ2FjeS10cnVuaworMTkyNDAgNGNkNTc0NDY5ZmUxYWE4YzlkYTBkZThmMWNjNjI3NDJhNjlhMWUyOSBsZWdhY3ktdHJ1bmsKKzE5MjQxIDVmMDY4M2E2OWVmYzY4ODRjNjQxNzNhMDNkOGNkMDNlNTQ2Mjk2NmEgbGVnYWN5LXRydW5rCisxOTI0MiAzYTRkMmJlZmJiNzQ3MzQyZGYzMzBhOGUzM2JhNmQ2NzgwYzhhMzhkIGxlZ2FjeS10cnVuaworMTkyNDMgNDhiNGFjZjczYWQ3YWJkMjAzZDMyZDNjODk1YTAzNmMyZWNkOTQ0MiBsZWdhY3ktdHJ1bmsKKzE5MjQ0IGVjOGY0N2ExY2M0ODM4ODc4MWQ4MmM0MmM3NzFlN2JhODZiY2I1ODMgbGVnYWN5LXRydW5rCisxOTI0NSA5OGE4OGFiZTU4ZDQyZWI3ODkwZDkxMjhlMjMyYWIwMTRlYzk5MjczIGxlZ2FjeS10cnVuaworMTkyNDYgYzg5OGNlYmEyMjYxODQwZWI5Y2Q0YTExOTFiNDhiNzUxZmQ3NmMwNSBsZWdhY3ktdHJ1bmsKKzE5MjQ3IDFmYjY2NzJiMjBlZjNjY2FmMjEwNDg2NzgwMWI5MTFjZDBhZDY3Y2IgbGVnYWN5LXRydW5rCisxOTI0OCBjMjU1NWI0ZjM4YTMxNDBmNjEyMTE5YThkNmJlMDQ1MTQ0NzhjZWFkIGxlZ2FjeS10cnVuaworMTkyNDkgNTU2ODg3Mjk2ZDJhZDhhZTFhZGQ0MTg2YWIwMDA2NzY4NzI4Y2RlMCBsZWdhY3ktdHJ1bmsKKzE5MjUwIGZkNGE2MzU2NmJhMWY0ZDk5YTI3OTU5OGExNmMzMDhiMTM2ODBmNDUgbGVnYWN5LXRydW5rCisxOTI1MSA0NmE4Y2ZlOWFmYTYzNGQwYzM4YzNkNDFjMWI5Y2YzNDNhZWI1MTM1IGxlZ2FjeS10cnVuaworMTkyNTIgZDM0ZjI1MDQ2YWQ0YmE0NjlkNzdlN2E0NDRiN2VhODExZDA5MmNjZiBsZWdhY3ktdHJ1bmsKKzE5MjUzIDJhYjI4YjIxM2Q3MDVkY2M5ZmQwMzNhMjU0MzRiYTRkYmE2ODZmZWMgbGVnYWN5LXRydW5rCisxOTI1NCAyZWNjZWI5ZDg3ZjU5ZTIyMGZkYjQ2ZGFmMDE2NmU3ZWQxMTFmYzI3IGxlZ2FjeS10cnVuaworMTkyNTUgMDM5NDI3MGQ0ZDA2ZDVhMTg3MjU3ZTQ5NDVlNDEzZWYyNzQ3OTIzZCBsZWdhY3ktdHJ1bmsKKzE5MjU2IGY3MDBlNmI4ZGUxZmE2MDU5ZTI3ZWJkNGUyNjcxYjAxNDAxNDIwMDAgbGVnYWN5LXRydW5rCisxOTI1NyA3NGQxNDBhM2YwMzQ2MzU0ODQ4MjRhMjI5NmNmNWEwZDZhMGIxMjgyIGxlZ2FjeS10cnVuaworMTkyNTggYjIyZTRkY2E0NTFhMzU3Njk3YzZiYmQ1MWM1NDllNWMzMDI3MmQxOSBsZWdhY3ktdHJ1bmsKKzE5MjU5IDBiYjU4Y2RmYTY4OGZmMWQ5MzdmYWI5YzBlYTI5MDJmZjc3NmJmNjIgbGVnYWN5LXRydW5rCisxOTI2MCA4MGMwYjI4MGE0ZjkxMWVmNmI3YzgyZmUzMmM5ZDRhMGMzY2ZlNDJmIGxlZ2FjeS10cnVuaworMTkyNjEgZGNlN2I0ZTZkNDIxYmNiOGNjNzEzZGU0YTRjMzI2MGU3YTFkNjFhMiBsZWdhY3ktdHJ1bmsKKzE5MjYyIDE2NmU4NzgzNmU4ZTYwNTkyNjBjOWFhN2QzNjExNmQyNmY4MTE0NzMgbGVnYWN5LXRydW5rCisxOTI2MyBhYmU4NWQyNjIyZjlmYmRlZjUzY2I1NDBlNWI4ZDJmZDEwMDkxNWQyIGxlZ2FjeS10cnVuaworMTkyNjQgMDhhYzU1NmYyZDEyZGU1OWViYTY1ZDM0NWE0N2Q5N2E3ZDVmNjkzMCBsZWdhY3ktdHJ1bmsKKzE5MjY1IGMyMmU4NzI1MDFhMGM5NTJlNDZmZjQ1OTk5MTFkNThiYTQ3YTZhZDkgbGVnYWN5LXRydW5rCisxOTI2NiAzOTBjYTQzZTVmNzlkMGYyZmIwOWZmYzFjMGE1OGNkZDRkNGZhNjY1IGxlZ2FjeS10cnVuaworMTkyNjcgN2FkOTc4MzJhNWNkMDViMTdhNWVlMjBhNDUxYjJlNjdjZjIxNWMxOCBsZWdhY3ktdHJ1bmsKKzE5MjY4IDJkNzJkYjlmNWNhNTQ0Y2RiZWQwOTJmOTA5MDRhZjNiYjhjYjc5MDAgbGVnYWN5LXRydW5rCisxOTI2OSA5OWVkZTIxOTA4NzI3MzY0MTYyYzE1YmUyYWM2MjRiM2E3NjRhYWFlIGxlZ2FjeS10cnVuaworMTkyNzAgZWM3MDllZThlNmZhNjUyN2JhZGIwM2ZkMTRhNzMyMGY3ZmQ2NTNkMSBsZWdhY3ktdHJ1bmsKKzE5MjcxIDc0MzBlYmFiZGJkY2FlZTMyOWNjYjFjN2JjMmQ3YWVjMzQ5ZDM2ZTIgbGVnYWN5LXRydW5rCisxOTI3MiAzZDRhN2NkMGJmMTc4YWQ2M2UzOGJkM2NlZWY1MGYxMzI3MjQwMmRhIGxlZ2FjeS10cnVuaworMTkyNzMgYWVkYjkzZjljNmI4MGQ1OTkxYzAyZGM5NjVlOGIwYWY4ZTA2YWNiNCBsZWdhY3ktdHJ1bmsKKzE5Mjc0IDEwZWE0MDYwYzhkYzU1YmQ1M2Y4YWZlYjAxYmYyMmFjY2NmYzVhZDkgbGVnYWN5LXRydW5rCisxOTI3NSA4ODE5ODY3ZjE0ZWY2NTliZThmZjgwNTFjMDEyNGE0ZDljNWQ0MzllIGxlZ2FjeS10cnVuaworMTkyNzYgMTg1YjkxOTY3MTQ3ZGQwMjc2NjE1ZTI4YTMyZjJiNzYxZDJmYjk5OSBsZWdhY3ktdHJ1bmsKKzE5Mjc3IDEyZDAwNDhlZDZjYTViNjhjMmU2NDdmNTZhMmYzNzg4MGE0NTdjZTkgbGVnYWN5LXRydW5rCisxOTI3OCA3ZDM5ZDlkY2YyZDYxMTM3OGZhY2M2ODA0MDgwMjRiZmI3NTU0ZGNmIGxlZ2FjeS10cnVuaworMTkyNzkgOTAxYjk0NjU2OTI4YjBkMGFlZWI2YzA3MjgwYTI5YzhmMjQ3OThjMSBsZWdhY3ktdHJ1bmsKKzE5MjgwIDFhYzdlNjE4NmI2ZTNmNzdiYTdiMzg1YWVkZGM0NjkyMDQ2NWRlOWYgbGVnYWN5LXRydW5rCisxOTI4MSAxZWY3ZTQzNzE1ZjU0MGMzMGJkZDYxMDdjNWFmY2IwZmMzOGQ2OWMwIGxlZ2FjeS10cnVuaworMTkyODIgMzgyMDQwOTNkOWM5MjlkNjQ0ZWY5YzU2YmI4OWRhZjk5NDU4N2MwYSBsZWdhY3ktdHJ1bmsKKzE5MjgzIGFhODQ0NzExNDYzYWE4OTRhZmZjZTA5YTg3YmJhYzNmNGM3ZTBlMjcgbGVnYWN5LXRydW5rCisxOTI4NCA4YjMxOGI4ZDc4Yzk0NDY2ZGNiZWY1YmE5MTI1Y2I1M2IzOTZmMjkyIGxlZ2FjeS10cnVuaworMTkyODUgNWM0MDExMzQwOWMzMjc3YzY2MjQxYzliYzdmM2NlNjFlZTkwYWM3NyBsZWdhY3ktdHJ1bmsKKzE5Mjg2IDI1ZWM0ZjhjNjBhYWNmNmEwMjgzNDliYzcyODcxMjYxZWNkNzJlMjAgbGVnYWN5LXRydW5rCisxOTI4NyAzZmZjYzliM2JhYjg3ZjcxNDg4NDM3MzA2ZDdjMDJiYmIwYWY0MWVjIGxlZ2FjeS10cnVuaworMTkyODggN2VhN2ExYzVhOGQyMDNiM2ZiMjUwMmU2OGVmMTU1YTk4ODA5ZGE4MSBsZWdhY3ktdHJ1bmsKKzE5Mjg5IGM4ZWY4NjRiYTg2MWYyMzRjYjUzNWFhZmQ4ZjgzNzVlNmFmZjNiNDQgbGVnYWN5LXRydW5rCisxOTI5MCA2NDk2ODQ0YzRhNDI4MDkwNmI3NTI5Y2QzOGQ0OTEyNDNkNDc5NWYzIGxlZ2FjeS10cnVuaworMTkyOTEgOGE0NDBmZjI3NGVjYmNiMWU1MzU2NjQxOWI4OWNlMzRlMDVjZjVjMCBsZWdhY3ktdHJ1bmsKKzE5MjkyIDJiZTdjOTBjMWRkZWQyZTY0MTBjMTc3ZDk1NTE4ZDU4ODQ1M2QxMzYgbGVnYWN5LXRydW5rCisxOTI5MyBjMTZlMDYxZDIzZTg4NmJiMWIxMWNjYmE0Mjk0OGQxNjYzNzc3MjJjIGxlZ2FjeS10cnVuaworMTkyOTQgNmI1ZTIwZjY5ZTllZTlkNTZjYmY1MGNkZTA0NjM0NDZmOGM5YTdiZSBsZWdhY3ktdHJ1bmsKKzE5Mjk1IDAwNzZlOGQyOGY5ZWJhOWVmZjQ1MDg2OTZkYzMzNzMwYWYyYjQwMDEgbGVnYWN5LXRydW5rCisxOTI5NiA1YTRiZGZjNjYwODNlY2MzM2MzYzIwMGQ4MTg0ZWFmNTI2ZTlmZjg0IGxlZ2FjeS10cnVuaworMTkyOTcgYTYyMTk5NTA3NjZlNzhhZjM4NmQ5ZTRlZTVlN2FlMmEwNWYwZTNiZSBsZWdhY3ktdHJ1bmsKKzE5Mjk3IGIzODJmMWYwN2VjNmIyYzk1NTUxNjU4YjMwYzYxMzllZWIzMjA3N2EgbGVnYWN5LXRydW5rCisxOTI5OSA2NzlmODI2YjI0Y2EyNjliOGYxOGM0MDQzZWNmNWMzZDVhZDg3ZmY2IGxlZ2FjeS10cnVuaworMTkzMDAgMjQ2YjNhNmFhN2E5NDExZWE3Nzg2MTM0YTMyNWZkMDIyZDRmMmZlMSBsZWdhY3ktdHJ1bmsKKzE5MzAxIGQ1NTdmZjBhMmY2Yzk3ZDQyYTgwMzI0MzY5OWM1MTAxY2U1YjFiMGUgbGVnYWN5LXRydW5rCisxOTMwMiA3YTM5NzA0YTUwNDdlNGY2ZmM3MzAxMTA5MmJlMmRlOTIxNThjZDMyIGxlZ2FjeS10cnVuaworMTkzMDMgYzQ1M2ZiZjMwZjYxMzc3ODFmNGY1ODRkMDY5ODE2ZDg3ZDFjNWIwMyBsZWdhY3ktdHJ1bmsKKzE5MzA0IGIyYzUxNmJiNzM0YTcyOWVhZjJkZTZjYzc2NjZkZWNlNDBjMzRhMjUgbGVnYWN5LXRydW5rCisxOTMwNSBjZTk4NTAwNTExMjA0OTBkZTMwODUyZDNlYmM5N2MwYTBkMjU4ZWVjIGxlZ2FjeS10cnVuaworMTkzMDYgYjc4YzhkOGM1MmU2MWY2YTE2YzY5NTgyNWVkNzNiYmRkZjNkZjA3YSBsZWdhY3ktdHJ1bmsKKzE5MzA3IGY5M2UyM2E4MmE3M2QyZjFiYTlhNmUwYjAyNDA5MDc4ZDU2MWQ0OWMgbGVnYWN5LXRydW5rCisxOTMwOCA1NzU4NzI1ODRiMGNmYzZkZDVmMzI2MTA4MTYwODlhMGYxOTJmZWQxIGxlZ2FjeS10cnVuaworMTkzMDkgYWM1MmQzNzI3ODY3M2ZjZjQ3Mzk0ZWU3NzE5NThlZGVjMzhjMzdlNCBsZWdhY3ktdHJ1bmsKKzE5MzEwIDE4NzcwNTdhYTkyNjIwNzYxN2I5NWY2YzllODQ2ZjQ4NjUzNGM3YTMgbGVnYWN5LXRydW5rCisxOTMxMSA2NGEzMmRmNWMwNjM0NWQ4OTA2ZWIyNWY3ODIzZGRiZWRmYzQwZmUyIGxlZ2FjeS10cnVuaworMTkzMTIgYWYzOWRlMjYyYjljOWI4ZjFiN2Y4OWFhYmNlZjVmMzE4NGZjMGExNCBsZWdhY3ktdHJ1bmsKKzE5MzEzIDk5YmVmZWFjODQwMGZmYTgwNjI5OTBiMTY1OGFlZTc1ZmVlMGI3MDggbGVnYWN5LXRydW5rCisxOTMxNCAyODg1YTMzOTYzNWVkZTlhMDI3MWMyOTBkMzJkMzU1ODhiOTkzMjAxIGxlZ2FjeS10cnVuaworMTkzMTUgMmUzZGQ2MmNlYWM1Zjg4NDM5ZTM5YzM4MDEyYTNiMzZiMThjYjU5ZiBsZWdhY3ktdHJ1bmsKKzE5MzE2IGRkY2U3MTVlNDliYTA2Nzc4N2Q1YWEwOWJhMDAzNGI4YmY5MDg4ZGMgbGVnYWN5LXRydW5rCisxOTMxNyBiMzA1YzE1MzZiN2FhNGQ0MjBiZGJkODdkZmJiMzVjZjM3MmI1YTVlIGxlZ2FjeS10cnVuaworMTkzMTggYTUwNmYzYjc1Njk0MTQ5OTNlODE0ZjA3NzVmODEyNGM4NDM3MjYxMyBsZWdhY3ktdHJ1bmsKKzE5MzE5IDNjYzg2MzU1ODc5MzNlYzVhOTFhYjYwY2IzNmI5MzgzMThjMGM3YWQgbGVnYWN5LXRydW5rCisxOTMyMCBjOTlkNmQ1YWZkNzVkMGJjYjAwZWJlOGFiOWJhNTc2MzIyNGJkMmU1IGxlZ2FjeS10cnVuaworMTkzMjEgNWVmNzFjYjY2NDk1MzYxNDFmZGVmZGQ4NWVhYjZlMTNhOTk2YTI3ZCBsZWdhY3ktdHJ1bmsKKzE5MzIyIGMxOGFjOGMyZjAzNjViYTdkM2E1OWU2NzI1OGQyMDE5NGIxOTY0NjEgbGVnYWN5LXRydW5rCisxOTMyMyAwYmIxNzEyN2IyZjhlYTNjMjhhOWZhYWQ2YzRjZGM3M2M3ZjExZmQyIGxlZ2FjeS10cnVuaworMTkzMjQgYTRmNmI2MzMyMzBjMzcyMmQzN2E4ZGI1YjY3YWI5YTFmMzI5ZTM4OCBsZWdhY3ktdHJ1bmsKKzE5MzI1IDJjYTg3ODNjZThhMzVhZTdlMmNlOTIzYzE0Y2Q4ZmUxZmMyNjhiMGIgbGVnYWN5LXRydW5rCisxOTMyNiAyODZhOWQ5ODczNzUzNjNkM2UyYTU5MjU4OGU3MTU2ZDkzNDk1NTBmIGxlZ2FjeS10cnVuaworMTkzMjcgNjVhNzA4OTUwOTIyYjZmOGY4MzI0ZjkwOGI1MGE2YzAzMmJjMGQ1MCBsZWdhY3ktdHJ1bmsKKzE5MzI4IGVhODhjMmE3MzE3MzA0NGYxNDgwYTliZmYxMmFkOGEzNTYyY2MxOWQgbGVnYWN5LXRydW5rCisxOTMyOSAxYzcxYWE3ZDU1MTMxYWJmMmQwMGJjMWEyMGY2NDI5ZjJhY2VmNTA1IGxlZ2FjeS10cnVuaworMTkzMzAgZWQ0MzM4YzdlOGE0NWM4OTdiZjg0MDNlZjU4ZGRkOTM0NjU0MmJlNCBsZWdhY3ktdHJ1bmsKKzE5MzMxIGMwYjBmYzEzMjc5ZTIzMjE2NDdjMjQ4ZGE3MDdkNjQ0ZTk1Y2Y5M2YgbGVnYWN5LXRydW5rCisxOTMzMiA4MDdjYTY5NzYyMGFlZTE4YmMyNmFlMzBkMTAyZTNkOTlhYmY5ZWE1IGxlZ2FjeS10cnVuaworMTkzMzMgYWIwMmJjNmE1YWIyY2FkYzA4ODU5NmM2ODE4M2VmMmUyN2EyM2Q3ZCBsZWdhY3ktdHJ1bmsKKzE5MzM0IDU0OWU5OTNhNDc2Y2Q3MGYyNTM2OTMwMzFhNDQ0YWYxOTU2YmMyMjIgbGVnYWN5LXRydW5rCisxOTMzNSBmNWJjYmE1ZmE0MWM4YjBjNmYyYTk3ODRiNjUzNDIwMTRmNzYxY2FlIGxlZ2FjeS10cnVuaworMTkzMzYgNGQ0MDZjMjZjMTZlYTc5ZGE3YTM2OTczMjczNjAxZDJjMmU1MDRjNiBsZWdhY3ktdHJ1bmsKKzE5MzM3IGI2MzEzYzkxMTRlZDZkMTJjNmE5Y2RmMTYxYTNkMWQ4Y2Y2NGMzYzAgbGVnYWN5LXRydW5rCisxOTMzOCBmN2IxNjdjODMzMTg1OGRkNzQ4MzVmZDRjODE5YzgyN2MwMTQyZGJiIGxlZ2FjeS10cnVuaworMTkzMzkgNTdjZTkyYTE2YjNjOWVlYjI4YTYzMGI3NWMyODk2Y2M2ODc5YzliZSBsZWdhY3ktdHJ1bmsKKzE5MzQwIGVkYzBjOTlhNjlkNmQyMjU2MjI3M2RiYmI1OWM0NWM5YzZiNmFjMDIgbGVnYWN5LXRydW5rCisxOTM0MSBkNTk2NjNkM2U0MzNhMzU5OTdjZTg2OWRjMzM0MGFiMGFhMjQ2MWFiIGxlZ2FjeS10cnVuaworMTkzNDIgZTk3MjE3ZjViMzIzMTlmM2E3Zjk4N2UzMjJlZmNiNjdmZjJkZDk5ZSBsZWdhY3ktdHJ1bmsKKzE5MzQzIDgxMWIwY2NiNjJhZWNlOTM3ZDEwM2RiOWVjNWEzZmM3NDEwOGU5ZDEgbGVnYWN5LXRydW5rCisxOTM0NCAxZmI3YmVmYjU5ZjA3M2IwMWJhMTQ0N2RmMzU2MTFhMDdlZWQ5N2JhIGxlZ2FjeS10cnVuaworMTkzNDUgYzIzM2VmY2I0ODllNWJmNWY0N2M0ZTY5NGZkZTEwZDQ4YzNhZmNjMyBsZWdhY3ktdHJ1bmsKKzE5MzQ2IGJmOTc4MThkZDllMWUyOGI4YWQxZGRjOWFmNTk4ZTMyMTIyZDFlOGYgbGVnYWN5LXRydW5rCisxOTM0NyA1ZjEyZGY4OGEyMDg1YWEyMzg5ZTBlMjUyZGIxZTlkZTliNTE1NGE5IGxlZ2FjeS10cnVuaworMTkzNDggNDY0ZGU4ZGZhNTllOWE3NWRhZDlkNDcxOThmNmM4MmVkOTU1YjA2NyBsZWdhY3ktdHJ1bmsKKzE5MzQ5IDc3MWRiYjE1NTU3NWZiY2ZlOGRhNWQ3ZDhkY2U0MjhlMTkwMDVjNjUgbGVnYWN5LXRydW5rCisxOTM1MCA5MmNiZWZkYjY3NGE2NWNkNzgyMWJjYzY3YWVkZGFhMjg5YjZjOTkyIGxlZ2FjeS10cnVuaworMTkzNTEgYTY4ODg0ZGUxMmVjNTRlNTRiNjhjOTZkNzM1NTNmZGZhYmRhMGZkMiBsZWdhY3ktdHJ1bmsKKzE5MzUyIDg3ZjJhYmI3MzE4NDhiNmZmYTJiZjI0OTY4YWVmZjY1OTY2YTdjOGQgbGVnYWN5LXRydW5rCisxOTM1MyBhNGM2ZTQwMWVlMTg0YzNmZmQ1MjU4MDQ4MzM0MzEzZTIzYjMwMjc2IGxlZ2FjeS10cnVuaworMTkzNTQgZmM0YWNlMDI0MmNiMDk0YjZiMzZlZDYxZGIxNjY4M2U3OGM0NzNhZSBsZWdhY3ktdHJ1bmsKKzE5MzU1IDZlNWFiNzg0MGIwNWQwYmM5NGQ5YmZlZWMxOTA1YTJjZmJjNTBjMzUgbGVnYWN5LXRydW5rCisxOTM1NiBmNGQxNWZkZDE1ZGQ3YjFlZTc1MWNiNzY5MjM3ZjJlOTA4NmM2NDYwIGxlZ2FjeS10cnVuaworMTkzNTcgNjlmMTYyZGNkOGI0YzA5YzVlZjRkZGQ0YjU3YjkwN2I3OWQ2ZjhjOSBsZWdhY3ktdHJ1bmsKKzE5MzU4IDFmZjlkNTcxYmFjMDlhNzgxNTY3ZTA2YTkxN2RhNWUwOTlmODBlODIgbGVnYWN5LXRydW5rCisxOTM1OSBkMzI5NjA2MzYxZjhiM2JjNWRlNTg0ZDMzZWYzN2Q5ZDUyY2U4ZTg5IGxlZ2FjeS10cnVuaworMTkzNjAgZjc1MWI5NmRlNjIxZWU3MTRlNWFhZTViYmU4YzY4MGUxYzg2OWU3NCBsZWdhY3ktdHJ1bmsKKzE5MzYxIDU4ZGUyODI5Y2ZkZDNiODk4MTAyNTUzY2Y5N2VkZjgxMGM5NGNlYTEgbGVnYWN5LXRydW5rCisxOTM2MiBjOTdlNjE4OWFkOTZhOWVhZDUyYWJhNTFmNGI5MzhjNWUyNzk4YjUzIGxlZ2FjeS10cnVuaworMTkzNjMgYjExNzgwYjA2OGZhNmMxMjI5Y2JlZDI5NWRmM2NiZTk3NDA3NWZhYiBsZWdhY3ktdHJ1bmsKKzE5MzY0IGJmMDMwOWQ1ZmMwYTkzOWU5MGFlYjFiNzYzZTEyOGJmNDE2NzJhNWQgbGVnYWN5LXRydW5rCisxOTM2NSA4ZDc2NTVhYzhiZjg2OGE1MzRlMDQxMzg5NjkwNjY5Y2NhZDIwZDg3IGxlZ2FjeS10cnVuaworMTkzNjYgNmZmY2U4YmUzZTBiOGRkMzE0YzY5NmU2NjFjNjQ4MDZlZGE0YWY2YiBsZWdhY3ktdHJ1bmsKKzE5MzY3IDg4Yzg3Yzg5YjQwNjgwMDc4OTRhMTE5MjVhOGI2Y2U2NWM0ZWNhMjIgbGVnYWN5LXRydW5rCisxOTM2OCBiMjZjYmMxZmU0ZTNiNWJmNjE5NmJhNjk1Mzg5MTZkNjRjOTM2ZDQ1IGxlZ2FjeS10cnVuaworMTkzNjkgYmRmYzZiZjdiMGRhZTdkMjI4YWE3ZmZkNzUwOWZkNmRiYmRlZWFiZSBsZWdhY3ktdHJ1bmsKKzE5MzcwIDVjM2JmMmU4OWQ4MDExYWZiNWZlZjY4Yjk4YTcxYTI2YjM3NTljN2YgbGVnYWN5LXRydW5rCisxOTM3MSA1ZjU4OGRkNTQzOWJmMDA2YTE2ZGYwZjE0NTFkMGRmNGI5MDkwZjExIGxlZ2FjeS10cnVuaworMTkzNzIgYzg3ZmRmN2RlMGU2YjhmOTE3NzAwZDEwOGYxYWUxNzJhNzJmY2I2MiBsZWdhY3ktdHJ1bmsKKzE5MzczIDE4ZWYzZDVlYWI0ZjIyY2I5M2E3YzcwMDJhNmFjNmZhYTg0NDdkNjAgbGVnYWN5LXRydW5rCisxOTM3NCA4OTNhNTE1ZDMzMWE3M2FhYjM2N2Q5ZTFiYWY5YWFjZWJmZGY1Yzg4IGxlZ2FjeS10cnVuaworMTkzNzUgNTY0M2UzN2I5OWFlNjllZWY2M2JiZWU1ZTRiN2MwOTY4MTkxZjdjZSBsZWdhY3ktdHJ1bmsKKzE5Mzc2IDkwYzYwMGE4MTllOTZkNDYwNjk3OWUyZDY4ZTM4ZGQxNGZkYjQxMTIgbGVnYWN5LXRydW5rCisxOTM3NyA4YmE2YmM4YzJlMDkzODFmMzc2ZjExOTM5YTk4OWM5ZDNjNDExNGM0IGxlZ2FjeS10cnVuaworMTkzNzggYWY4ODQ2NTk5OWM3YTZjMDMzNDZiYjBiOGY3NWQ3ZThmYTFlZTI2MCBsZWdhY3ktdHJ1bmsKKzE5Mzc5IGVlZTY3YTg0ZTVmYWFmMzAwYTFlZjI2ODFiODk5ZTM2ODAxZDJmZjkgbGVnYWN5LXRydW5rCisxOTM4MCBiM2Q5MjNhNjYxNTJjZDhkNTM2OWY2OWVjZmE0ZmQyNDhkOGUxMTU1IGxlZ2FjeS10cnVuaworMTkzODEgNjMxZDRjOGRiNzg0MDgwMjg2N2Y5M2IzOTZmMjI1YTYxZjU3YzM1NyBsZWdhY3ktdHJ1bmsKKzE5MzgyIGM4MDIzODVhNmFjM2U2NDIyNjkyOGFjMDNlMjhjNjg3ZDVkNDUzYjggbGVnYWN5LXRydW5rCisxOTM4MyBlM2Q0ODgwNzQ4YjVjNDc1YzRjNThlOGZmMDAzZWVhNTNkMWI0NDlmIGxlZ2FjeS10cnVuaworMTkzODQgZjQyNzk5YzY4OTI5ZWU2NGM5YzgyNGY2ZjkyYWFkNWRlOWFiODI5NSBsZWdhY3ktdHJ1bmsKKzE5Mzg1IDlkNjI1MzAzZjkxNGJlODMwYTk5MjdkM2E1NGEyNTEwNWQ2MTU4NTUgbGVnYWN5LXRydW5rCisxOTM4NiAyNGU5NDZlOTUxZmEyYTM1YTE4YTU5MjFjYTRkNjlhYTQ1MGMyMzU4IGxlZ2FjeS10cnVuaworMTkzODcgYzM2OTY3YmRjOWRkNGRhYmI3OGJjNWY3MjQwY2UzMjA5YjdkNGIwYSBsZWdhY3ktdHJ1bmsKKzE5Mzg4IDU3ZDI0OGRkYmUyYWJhYjRkZmY0YWE2NmM1YjA4NjhiODM3ZGU5ZjYgbGVnYWN5LXRydW5rCisxOTM4OSBhOGUxMjNkZjI2OGI5Y2JmYTA1MDE4NzAwYjZkMWE2ZTU5MzQ3MjE3IGxlZ2FjeS10cnVuaworMTkzOTAgZjNlODNlNTE0ZGQ4OWFmY2VmODA0OTgwZjdmNDAxZGNmMWJmMWNiZiBsZWdhY3ktdHJ1bmsKKzE5MzkxIDc1MWU5Y2M0NzdkOWQwMzQ5Mjc1ZGFiOTNhY2JhOGE0YTI0NjJjMDUgbGVnYWN5LXRydW5rCisxOTM5MiBhODBmNjdiNzIzMDhlOWQwNTE1YmRiNDlhZmZhZGVmYmVjMjU2ODVlIGxlZ2FjeS10cnVuaworMTkzOTMgMDZkZDk0ZTIwZjNiODFiY2MxNDA4ZDUzNzI4YjAxMjY1NDBkM2VlNyBsZWdhY3ktdHJ1bmsKKzE5Mzk0IDdmYzY0ZGYxM2RiMGFjYWZjNjMzOTFkMDJkYzRhYTNiNjE1MTYwNzQgbGVnYWN5LXRydW5rCisxOTM5NSBjNDhhZjM5Y2IyOTJlMDFiN2M5MmI3MDA3NDZmY2RmNjhlOGE5ODJjIGxlZ2FjeS10cnVuaworMTkzOTYgYjU5ZjNhMWViMTIzOTFiYzFhZWRhNzVhNjlkOTJjMzM5NWYxOTBiNSBsZWdhY3ktdHJ1bmsKKzE5Mzk3IDA4NGIzZGM5YjZmZjMxMDJhZThkNWY5ZTliN2NiNGI3OWI1NDkyYmEgbGVnYWN5LXRydW5rCisxOTM5OCA1NGY3MjA5Y2M3MWU3YjY5MDlkMzJmMmMzNmQxNGM4ZWY0MTdmNGQzIGxlZ2FjeS10cnVuaworMTkzOTkgZjRlNzFiYWI3ODUzYzk3YjU1Nzk3OTA5YzBlZmU5NjY0Y2ExZDNkYyBsZWdhY3ktdHJ1bmsKKzE5NDAwIGE1NDBjNmZkMGNlZDFkODgxZGJlY2ExN2I4MjFiMjEyN2UzZjQxN2MgbGVnYWN5LXRydW5rCisxOTQwMSBhNDdkOTNlZjEwM2E3NjczYmMyMmYzYjY1ZTdmNTJkY2FiMzJiOGQ2IGxlZ2FjeS10cnVuaworMTk0MDIgODIzNmYzZTc1ODVlMTRmYzgwMDBhNGE5MjZmNGUwNTUxN2M0MDY3NiBsZWdhY3ktdHJ1bmsKKzE5NDAzIDhlZWQzNzNiY2U3ZmU1MGFkZTJhNjFmNTc4NGMwNTBhNGY5OGE1YWIgbGVnYWN5LXRydW5rCisxOTQwNCBmZWY0YzAzOTczM2RjYjgxZGM3Nzk0YmMyOTU5Y2U0MTZhYTBjM2JhIGxlZ2FjeS10cnVuaworMTk0MDUgMTIxNGFiZWEwYzdiMmE4MzUxMTcwZDg4ODQ1NWEzZTZkZDJlMWQ0MCBsZWdhY3ktdHJ1bmsKKzE5NDA2IDQ2NTI3MjNlYTY1NWNhODJhOGZlMjY4YTFlMWM0NjY3YTcxM2ViNmQgbGVnYWN5LXRydW5rCisxOTQwNyAzOGVjZmQxMWQ5YjUzYTI2YzRjZWIzMWNjYzE3ZTQ4ZWI5YWU4YzY3IGxlZ2FjeS10cnVuaworMTk0MDggNjBhMmU5OWM4NjNiZTk3MTllMzE0Mzg5NTY4ZGIzOGE5ZTA1MWEwYyBsZWdhY3ktdHJ1bmsKKzE5NDA5IGNjOWNiMWU5MGIzZDI0YmQ3OGQzNDAzYjM3ZmFiYTg1M2QxNTcyYzMgbGVnYWN5LXRydW5rCisxOTQxMCBkYTg2ODFmMTdiNTAwZTY0ZTFkZTY3MWQ0NGU0NTNiNGZlYjU3Y2IzIGxlZ2FjeS10cnVuaworMTk0MTEgN2U5ZjQwNTFiYTRhZjEzZmZkNWE1Y2M5ZjFlNGVhYzAyY2YzM2QyNiBsZWdhY3ktdHJ1bmsKKzE5NDEyIDhmNzBiNWRkZDVjMDhmNjQwODhmNjc4M2NhYWNkNWM1MzdmN2ZiNmUgbGVnYWN5LXRydW5rCisxOTQxMyA3ZGU1MDQzODI3ZjcwZmRjMTg2YjZkZjZlZWVjYmMwMjE4NzFkNGExIGxlZ2FjeS10cnVuaworMTk0MTQgZTU1OTJmMWVmNDFmODY1MWYyN2UzZmI2NWM4YjEwNTUxZDZhOGFmZSBsZWdhY3ktdHJ1bmsKKzE5NDE1IDlhOTU3OTRlMGY3ZWM2NWI1MzY5ZGQ4NDVmN2IwZjAwYjhiYjk2N2QgbGVnYWN5LXRydW5rCisxOTQxNiA0NDRjMGVlZDVhNjZjNWFjOTU1MjFiNDczZDA3ODc0YTRmMTI0YzM4IGxlZ2FjeS10cnVuaworMTk0MTcgZDM4YWZiMjBjMzM2YTcyNGFlZTIzMjQzODkxNzkzNWI0NWQ2NGFlNiBsZWdhY3ktdHJ1bmsKKzE5NDE4IDI3ZmNlMmQ3ZmFjZGI0MjdkOTc2OGFiODFhNmNjMmNlNTRmZDBiODQgbGVnYWN5LXRydW5rCisxOTQxOSA5Y2U5ZTAzNDJjYzFmMGYwMmU1OWJlY2JlZTc2MGIxNjlkNzliYmVlIGxlZ2FjeS10cnVuaworMTk0MjAgMTkyZTk4NTVjN2MwMDY1NTZhZDI3OGUzMGViYTY3YTlkNWY1ZDRjZSBsZWdhY3ktdHJ1bmsKKzE5NDIxIDhjMWM3ODdiZDZmOWUyYjVhNWRjZDM1ZWQyNGQ2ZTMxOGQ1MmFhNjEgbGVnYWN5LXRydW5rCisxOTQyMiBlOGU2MzZjYzFhMDkzM2Q2ZTc3Y2NkZjBjMTMyYmYwMjMzMTU0MTNmIGxlZ2FjeS10cnVuaworMTk0MjMgMGQxMzA1YzgzZGU0YzllMGRjNTgxZGYzZjAzMTZlMmIzNjE4YjUwMSBsZWdhY3ktdHJ1bmsKKzE5NDI0IDYyMzQ1NjU3NmQ2YThlNTRkNWU5MGI0NjgwNjhiZDhmYzEzNTU4ZDIgbGVnYWN5LXRydW5rCisxOTQyNSAzMGQzNGJiZjg2MjAxYWE5OGM4YjRhODZhNjhlZjNhOGYxMGQzYmY5IGxlZ2FjeS10cnVuaworMTk0MjYgZDM0ODRjYTQwYjhhMGQ3ZjkxMWNhYzEyNDJkNjJlYmEzNjZlNjlkMCBsZWdhY3ktdHJ1bmsKKzE5NDI3IDIzYjVlN2QwM2Y3NmZiYjg1OTQwYjAwMjAwOWFlZDExMjU2ZGQ2YzggbGVnYWN5LXRydW5rCisxOTQyOCA0Y2VkYzgyNmJlZThiNmQxOTg2NDg4ODk5MTM5Y2M0ODRhZjIwOTY2IGxlZ2FjeS10cnVuaworMTk0MjkgYjRmZjFjZjRhMTBmYWZiODc4Mjk0NjFiN2Y1NTI5OGU1YzQyMWYyNiBsZWdhY3ktdHJ1bmsKKzE5NDMwIDkxNzYzMDEzYzM2ZmNmNWM2ZTFlMDliYzBjMmNjNDMxNjIzZGMwYzcgbGVnYWN5LXRydW5rCisxOTQzMSBjOTA0YTQwZTE0ZWE5ZmYzZTQ3MjAxMzI4NmIxNWEyMmEyMzA3N2Y0IGxlZ2FjeS10cnVuaworMTk0MzIgODY1NzM4NGRjYzRhYjI4M2VkZDNhNzJkMzdjZGQzYjg2M2M3NmYwZiBsZWdhY3ktdHJ1bmsKKzE5NDMzIDJjNjQxN2VmNDYyODUwYmRlZjg2N2VhYTZiYTBjOWEyMzg1MDk2MTEgbGVnYWN5LXRydW5rCisxOTQzNCBlZTBkZDBjNzk2NGVkYmNhMDY2M2EyNjRkYTVhMDY3NDkyOTI2YTE1IGxlZ2FjeS10cnVuaworMTk0MzUgNDc3MmZlMmRiMmM0NmMyNDVhZTM0ODViODM2OTE1Y2JkNTczYjkxYSBsZWdhY3ktdHJ1bmsKKzE5NDM2IGJmOWMyNGJlZGE3ZDU3NTM0ZTkzMGY2Njk5NTk4ZTcwMmZiN2UzMDcgbGVnYWN5LXRydW5rCisxOTQzNyA1ZjNhODM1MDYxNWM4YjljZTYzODcyMzQ2OGEyOWI1MzNjNjc3MTUzIGxlZ2FjeS10cnVuaworMTk0MzggZjY1NDQ2OGI5YWU4YTlhMDUxYWFhMjhkY2U3ZWYxOGE0NjMxMmZmNyBsZWdhY3ktdHJ1bmsKKzE5NDM5IDA2OGNiODQ5NGI3YjFlNjYxZmYwMzQyMjY5OTdkOTdjMzk2ZTA4MzMgbGVnYWN5LXRydW5rCisxOTQ0MCBiNDM5ZWVkYTAwODI4ZjNiZjBkNmFlNTA1MWE3MmVkNjQ3YzdlMjhhIGxlZ2FjeS10cnVuaworMTk0NDEgYTYzZGM1OWJlMGY5ODZhMjQyYWIzZjQ0NDA4OTgzYjA4OGMyMzIyNCBsZWdhY3ktdHJ1bmsKKzE5NDQyIGRhMTVlNWY2ODY0NGE5NjBkZWIwYjZjNzI1NWI1OWZlMWEzOWE3NWYgY25yaS0xNi1zdGFydAorMTk0NDMgZTJiMmZlN2ZhYmI4OTQzOTA0MWUxYTVjODI0NzM2NzZiZDhkZDgxNyBjbnJpLTE2LXN0YXJ0CisxOTQ0NCA5ZDA4YzM3NDczY2I5MjZhYmY5NjM5ZDY3NjY1ZjE5Njc1ZGMyZWU0IHJlbGVhc2UyMC1tYWludAorMTk0NDUgYzBjZGY4MjU5OWUwM2YzOTRjODUyMTZmMGI2Y2NmMTdkYjI1YjEwMCBsZWdhY3ktdHJ1bmsKKzE5NDQ2IDlhOGU5NjFiNTA1ZjAzMDY5NmQwMmNmMWM4YTJjMzAyODcwNDFiNTMgbGVnYWN5LXRydW5rCisxOTQ0NyA4MTdkZjllZmFjYmFlNzQzMDE2ZjU4ZWY3NzFkMGFmZWYxMGU3NGE4IGxlZ2FjeS10cnVuaworMTk0NDggM2Y2YzA1ZTA0MDgyNmRjNzIyOWQ0M2RiMzc0MTQyNDE2ZjAyZDhlOCBsZWdhY3ktdHJ1bmsKKzE5NDQ5IGFhZTJiYjhhYzM3MzllMGM1OGU0ZjJkZjdiZDViZGNlMWEzOWE2NGMgbGVnYWN5LXRydW5rCisxOTQ1MCA1ZmEyNTU0MmI4OTY3NWQ0MmIxNWQ4ZGZhNTViNmY2NjIzMmIzYzQ1IGxlZ2FjeS10cnVuaworMTk0NTEgOWJiMmI2OTYzYzgyNWFhOTBlNWVlNmJjMGY3OTExYmE3Y2FjNTdmOCBsZWdhY3ktdHJ1bmsKKzE5NDUyIDU2YTgxMDZiYWY2MzVhZGEyOTAxOTRiNjE4YjA1YzFkNWU5ODhkZTEgbGVnYWN5LXRydW5rCisxOTQ1MyBiYTg0NDYzZWZjN2JjNWNiZWVmZDJhNzMwYTRiOGI5MTI2OGNkMjAwIGxlZ2FjeS10cnVuaworMTk0NTQgZjgxM2U5ODdlNjVjZTQwYTgzZjRlOTM2MmNmMGViYjQ1N2JlZjY5MCBsZWdhY3ktdHJ1bmsKKzE5NDU1IGRmN2Q1MmFlMjBlNGNkMDUzNjBjOGExZTdhYTA4Y2I5ODM3OWE1ZWYgbGVnYWN5LXRydW5rCisxOTQ1NiA3NGFlODBkOTBmYTZjYzI2NDM2NTlhODg2NTljMWZjMTA0NTJkZWNjIGxlZ2FjeS10cnVuaworMTk0NTcgYjM2MjUxMzE2ZjZhZWRhNmUzYjlmYjUxZDk2MDc4OGFhMTJkM2IxNiBsZWdhY3ktdHJ1bmsKKzE5NDU4IDllZjk3OGM2ZjAzOTU2NTBjOTliNzJiOGEwMTE0ZDgyYjA0ZDliMzQgbGVnYWN5LXRydW5rCisxOTQ1OSBmZmRjNzE4NWJkYWJkNjNlMDQ5MzBiMDE1NzZhOGY5MjY3ODlkMGFjIGxlZ2FjeS10cnVuaworMTk0NjAgMDg1NTExOTE2Nzc2MjY5NmM2YTE4YTRhZTU3Y2FmZTA4MDY0MDQzYiBsZWdhY3ktdHJ1bmsKKzE5NDYxIDA3ZmZiMGMzYmQ1ZWU2N2MxOGJlYjdiMjIxNDJmNDUzZDU0MGFlMzIgbGVnYWN5LXRydW5rCisxOTQ2MiBlMTA0MzY3MjU2ZjAyMDM3NTRkNGZmYTVmNzNiODA3NmU0OWRjNGMwIGxlZ2FjeS10cnVuaworMTk0NjMgMjYwZjAzM2FlN2RmMzg5OGI5MzNiNmYyZTc1Y2NhYWNmMWQ0MGUwZSBsZWdhY3ktdHJ1bmsKKzE5NDY0IDg4NWQ1NDUyNDhkYjM4MDc5MzM3MTUxMDNhYzAyNjJiM2Q5Zjk4YmMgbGVnYWN5LXRydW5rCisxOTQ2NSAwYjQ1NWE0Mjg5Njc3ODdlMDRjY2Y4YzM4Yzg0NmE0OGM5NzJjNDk5IGxlZ2FjeS10cnVuaworMTk0NjYgOTZkODg2OGEwMDI4NGQ5OWM4OGUzOTQyODI0YTc2NTE5YzIwNjA2MiBsZWdhY3ktdHJ1bmsKKzE5NDY3IDBjZDg3YTVkMWVmOTc0ZWFlN2YwMWMyOThiZWE5NDNhZGM1ZmQ0NmUgbGVnYWN5LXRydW5rCisxOTQ2OCBlZjJiZTEyYjE4ZmVhMzk2NmE5N2U4YTYyNDRiMzY1ZDQwM2RiMGVhIGxlZ2FjeS10cnVuaworMTk0NjkgYjA1YjhiNmMwYjQzMDk4OWM3YjdiNmQ4YzQzOWI1NWZlMTg2OGUyOCBsZWdhY3ktdHJ1bmsKKzE5NDcwIDQ0ZWY2NDRjYjUyNmVlYjdmZGMyYTQ0ZDhlN2Q4YTA0Y2NhYTQxMDcgbGVnYWN5LXRydW5rCisxOTQ3MSA5NDFhNzZmMzg3NDc0MjU2MTQxOGRiOWRjNDY3ZjhjMTlkYTAxYThlIGxlZ2FjeS10cnVuaworMTk0NzIgZjQyNWQ4NTIzNDgwYjAxZmMzNjQ2MTA5Mjk1NWI3YWU2OGUxNjRjMSBsZWdhY3ktdHJ1bmsKKzE5NDczIDczMzA2OTQ5MTE5YzA0ZDM1OGExMDU2OGFlMGQyM2M2ZjU4NDk2MDEgbGVnYWN5LXRydW5rCisxOTQ3NCBmMGY1NzI5ZDYwM2ZiNTlmOGE5NmY2NzM3MTU5ODMxNmM2YjZlZDk0IGxlZ2FjeS10cnVuaworMTk0NzUgZTNjZmZjMDM5NGJmYjZjMDQ1MmI1ODY1Yzg3NzczMmQ2ZDYzMDY0NSBsZWdhY3ktdHJ1bmsKKzE5NDc2IDhlZjI0NjdmMDE5MWJiNjEwMDRiMzAwNmFkZjBmOWYwOTdmN2VkNDkgbGVnYWN5LXRydW5rCisxOTQ3NyBmNjhkYmZmZmY5MjdiZmE1NjZmZDJjM2E5ZThhZWZiNWI2MTMwYWQ5IGxlZ2FjeS10cnVuaworMTk0NzggMjBlNTJlNWE0MDhhMTZmMDI4NjZhNmZhZTIyODYzZDA0MmE0YTFkNiBsZWdhY3ktdHJ1bmsKKzE5NDc5IDhmZjRjZjQ5MjY3ZWM1NDc5MDFjMGRlNmY2NTIxOGZiYjEwMGM2YmUgbGVnYWN5LXRydW5rCisxOTQ4MCBlMmE2MzU4NDU2NmY4MmRiOTM3ZTBhMzMxYTFiM2JkZjhiMjUyN2U2IGxlZ2FjeS10cnVuaworMTk0ODEgZTA1MGI5NGYwNGQzYzk2NzI3OTNlZjZhNDljZDE4M2UzZmY5Mzc4OCBsZWdhY3ktdHJ1bmsKKzE5NDgyIDU2OTE0ODg0YWFiNjMwMWI0NzYyNGVmY2IwNjA4ZDZjNWMxNzIzMTkgbGVnYWN5LXRydW5rCisxOTQ4MyA0ZTJkMWM2ZjI5MDRkYTY0YmVmM2M1ZDEyOTFkZjlhZDgwODM4Y2UzIGxlZ2FjeS10cnVuaworMTk0ODQgMWM2YmE5NDZkOGZhMGJlMmU0NDAyMTNmYjRjZDNhNzQ1ZjVkNDE5OCBsZWdhY3ktdHJ1bmsKKzE5NDg1IGM5NTg2Nzg3MjBmZGFjNDI0NjU0NWY1YTg5ODU0NWRkYjEzMDJkMDYgbGVnYWN5LXRydW5rCisxOTQ4NiA5MTc4MGVhZDhjMjViMjcyN2M0MjJjYjhmN2VhNWZjNGU2ZTI2NGM5IGxlZ2FjeS10cnVuaworMTk0ODcgM2E2YjRhMDAzYTE3ZTRiOWFmNmZkZmIxZDMzYTczNDllOTlmNzIyYyBsZWdhY3ktdHJ1bmsKKzE5NDg4IDY3YTA2NjZmMTFlMzIzMDcwZjUzMjg1MjMxMWZhZDc1YzM0MTY2MDkgbGVnYWN5LXRydW5rCisxOTQ4OSBjOWYyM2Y4MGZjOTMwZDg1ZmIyOWZhMzNlYzg0NGViY2E2YTRkMjk5IGxlZ2FjeS10cnVuaworMTk0OTAgNjExNzY4MzQ5ZGQ5MGYzOWFkZjEwOWNkY2Q5ZTFhZTA5M2ViMGUxYyBsZWdhY3ktdHJ1bmsKKzE5NDkxIDA2M2Q1YzRmNmNlNThiMzQwODgxMWM5ZDQ3N2FmNzU4YTUyOTEzNjIgbGVnYWN5LXRydW5rCisxOTQ5MiBjODdlNzAxN2Q2NmIzM2E4OGFiZDk5ZTM5MWY5NTkzNWJkNzFiOGU0IGxlZ2FjeS10cnVuaworMTk0OTMgOTZlOWNjYmYxNjVmNmE0ZTIwMTVmNzlkMTcxNDgyZjNhOTA5YjE1OSBsZWdhY3ktdHJ1bmsKKzE5NDk0IGM5NTA5ZDg0ZjNkZjdmOGViMGY2MzhjODI4MjMwMWViNjg0NGE2NmYgbGVnYWN5LXRydW5rCisxOTQ5NSBlMzgxNDUzMDYyMzEyNjM1YTc0MTYzMzE5Njg3YjRjNWE5OTk2ZWEyIGxlZ2FjeS10cnVuaworMTk0OTYgMDU2NGIxMzRiNTg0MDM1NTFiZGJhMWQwOThjYTJmNDUwY2ZkOTk0NiBsZWdhY3ktdHJ1bmsKKzE5NDk3IDIxNzI3NzU4MzQ2OGQwNTY4ODRlNGYzYjVhZDViNTlmZmZjNzllMjIgbGVnYWN5LXRydW5rCisxOTQ5OCBkNDU1OWI3NDU3YTBlMzJhMzE1MjVkYWFiNDI2OTk4MjFjMWQwYzBlIGxlZ2FjeS10cnVuaworMTk0OTkgMmZiNjQ5ODM5NjVmZjIyM2FlYTI1MjM5MWZmMzRjYTFiNTNhNGFlOCBsZWdhY3ktdHJ1bmsKKzE5NTAwIGUzMGMxOTc1MzJhYTEyNmE2ZGFhNGIwN2ZjNjk4MzZhMDYxYmFjOTIgbGVnYWN5LXRydW5rCisxOTUwMSA1OWY0ZjY5NjAxMDE2OGRhMThhOWJhOWE3OTBkMmY0ZTJlM2Y3YTNkIGxlZ2FjeS10cnVuaworMTk1MDIgNzk1NjhjMGQzZTc3YTY5MzYyYjM1NzljY2Y1YjQ3NTAzNTY1MGExZiBsZWdhY3ktdHJ1bmsKKzE5NTAzIDE0NmRmZTdlMDMzODJjZWIyMTkwY2IxOWNlOWI3ZDY5MTlkMzBlN2MgbGVnYWN5LXRydW5rCisxOTUwNCA3ZDFlN2I2ZWM4Mzk0NTM0ODZkYjJhY2U4MWVmMWY2MjU5MmNmZTljIGxlZ2FjeS10cnVuaworMTk1MDUgMzhmNjk3MmRjOGI0MTdmZjJiYWI5ODUzMjE1NWVjOGQ5MWNjNjE2NCBsZWdhY3ktdHJ1bmsKKzE5NTA2IDE1ZjAwNjRjODQwMDk2ZWZkYzlhZGM1NTZmMTczNWM3NThhYTE5MWQgbGVnYWN5LXRydW5rCisxOTUwNyBmN2E5Nzc2NzcxYWIwZWZlMWQ2NzIwOTJlOTAwMTBiYWFhNWQyM2U1IGxlZ2FjeS10cnVuaworMTk1MDggN2YxMjdiZTA3YzUwOTU3NzgxZTFjMzgxZWRmNzdiMzc5MDk2YTYxMCBsZWdhY3ktdHJ1bmsKKzE5NTA5IGQ2ZDVjMTFmNzVhOTIyZTk1Y2UyYjkzNzRjYzBlYWJiZDYwMWY4NzggbGVnYWN5LXRydW5rCisxOTUxMCBiOWU1NDgxZjY0NGMzMGFmNzQ2MzRkNmM3ZTVkNDljMTM2ZjE0YWUzIGxlZ2FjeS10cnVuaworMTk1MTEgNzI4YzExNTYyMTg3MmYxNzAxY2VlM2RjZmU3ZjM1M2I4ZjNjZGNjMiBsZWdhY3ktdHJ1bmsKKzE5NTEyIGE1MWI5OTYxZjNiYmIwYzA2MDVkYTdlMTJkMGU5Y2I0ZWYwNzk0N2EgbGVnYWN5LXRydW5rCisxOTUxMyA4ZDg1MDk2MTc4NzQxZjU5NDA4ODc4ODg4ZTI4YmQyMGZhMmM4ODJjIGxlZ2FjeS10cnVuaworMTk1MTQgZDNlOGI4ODA2NTFiN2Q0NzM1NGU5ODk5MWIxMzNmMTJjNGIzMjE5MiBsZWdhY3ktdHJ1bmsKKzE5NTE1IDkxNTIxYzUyYjFkYjU1YWZjNmQ2ZmNjYTQyMDQ4MzljMzlhYTRmZGYgbGVnYWN5LXRydW5rCisxOTUxNyBkYTlhNGExNjk4ZjFmNjg0ZTc5NjkxYjk2NjRiN2M2MDdiYmUxYzkyIGxlZ2FjeS10cnVuaworMTk1MTggYjlmZThiZDllNWY0ZmJiMDZkMjk5NjdhYjJmZTZiMGMwZGJkNjc4NSBsZWdhY3ktdHJ1bmsKKzE5NTE5IDU5MjFiMTI5ZjM1MDQ4NDM1YzA2ZWM3NDlkOWY4ZDQ3MDYxMWFmZDggbGVnYWN5LXRydW5rCisxOTUyMCAxZDdhZWQwNzY5NjQ4MTI2YTVmNjA0YzkzYzE4MmY3MWRmOGJiMzA1IGxlZ2FjeS10cnVuaworMTk1MjEgN2Y4ZTgxN2FjNDIzYzQ1NjlmODkxNTY4YjdkMTAxYTdlMjBjNzllYyBsZWdhY3ktdHJ1bmsKKzE5NTIyIDc5ZDUzMzkzNGFjMWIzMDk1ZTBjNGY5YTRiNzMxZTIxYzBlZmZmMjggbGVnYWN5LXRydW5rCisxOTUyMyAxYTVhNDQxNzcyZmY2M2FhOWY5MThjMWJlOWViNTliYjJiMDZhMWJjIGxlZ2FjeS10cnVuaworMTk1MjQgZGVlYzZmYTgwNDcxMDgzN2QxNzY4MTJkZjhlOTVhZDE5MzI4OTUzZSBsZWdhY3ktdHJ1bmsKKzE5NTI1IDAwNDlmNzdiMzZjNjIzMjM3ZTcxZDI5NjlkMWJlMTY3N2ZmMDk4N2UgbGVnYWN5LXRydW5rCisxOTUyNiA2YWY0MTVmMGMwMWViMDBkMjM3MjQ5NjVjZTIzOWU3MDIzZTYxNjc5IGxlZ2FjeS10cnVuaworMTk1MjcgODljMWNjZWY1Y2U4MzYwZTNiNDY2NDAzYTAzZDcxMDQ1ZjUyNjYxOCBsZWdhY3ktdHJ1bmsKKzE5NTI4IDk0YTM4NDQzZjk5YmI1NzA1NTVjYjE3MWQ1NDVhOTkyOTljNTM1NWUgbGVnYWN5LXRydW5rCisxOTUyOSA1NzQ2ZDBiZjVmMDRkZjdmMjUzYjljYjIwZjU0NjYxNTZmNmQyOGMzIGxlZ2FjeS10cnVuaworMTk1MzAgZGUwZTg3NTJkNWI3MmNlNzQ1MGNmNDg1NTBjMzgzYjExYTJkMzIyZSBsZWdhY3ktdHJ1bmsKKzE5NTMxIGU5ZmNiNDZjMWYyY2FjYmMzOTc0NmQ1ZTdmNTQ4MzZhZGVmNjIxZGIgbGVnYWN5LXRydW5rCisxOTUzMiA3MjUyMzgyOTM4NjljYzVhYzlmNjY1YTcwYzcxNDYzYWU3ZWYzNzk5IGxlZ2FjeS10cnVuaworMTk1MzMgNTdhOTcyMmM1ODhkNGRhMmI4YTVhMGU4OTFmOTJiZmQ1N2M1Y2Q2MSBsZWdhY3ktdHJ1bmsKKzE5NTM0IDk5MGZhMjVjZGUxY2NmMTU2OGM4Njk0MzBhOGRlNjYzZWVmMjJiMDEgbGVnYWN5LXRydW5rCisxOTUzNSBhOGEwMGRlMDI0ZTczODBhOWZlODRkY2JkNzI1ZjJhN2NiNTZiOWFkIGxlZ2FjeS10cnVuaworMTk1MzYgOGJjYzEwZGI1NjJlNGY5ZmY4ZTIyZjI3YzEzNThkMGZkN2UwZDFiYSBsZWdhY3ktdHJ1bmsKKzE5NTM3IDBkM2FlOGYwODQ5ZDkyYTUzOTdlMWU0OGNhODhlN2JkNjY5MzRmNjggbGVnYWN5LXRydW5rCisxOTUzOCA1YmNmOWM0OWI2ZTc4YzQ1ZmI2ZWEwZTc3MmM3YmFmMTkyMWJiMGM4IGxlZ2FjeS10cnVuaworMTk1MzkgZjRlOTdlYzFkYzlhYjYyZTYxNTJlZmRjYTI4OGMyNzQ5YTY5ZmZmNyBsZWdhY3ktdHJ1bmsKKzE5NTQwIDk2M2Y5NWViNzY0NmRhYTE4ODE4YTQ5MWYzMTI2MGVlNjI0NDNkODYgbGVnYWN5LXRydW5rCisxOTU0MSAyOTRiYTE2YjBlODhhNDc2M2QzZWEwN2I1ODFhNTRkNGE1ZWE4NWFjIGxlZ2FjeS10cnVuaworMTk1NDIgYjk1NWU3NDk1NWQ1NGM5NThhNjkyMjI3OTE3MTgyMmYwYmQxOTgzMyBsZWdhY3ktdHJ1bmsKKzE5NTQzIDA2YWQ1MDUzZjQwYTA2MmM5MDc3OTdlNTAzYzBiMTM1YmU0ZmY4ODkgbGVnYWN5LXRydW5rCisxOTU0NCBkYjRmYzgyYWE0NGJhOWI1M2I2ODRhNjgwY2ZiNWFmYWExMjU1MGNiIGxlZ2FjeS10cnVuaworMTk1NDUgMTdlZDYxZmQ1YjY1NDA5MzNmMzU5NmM3NGEzN2MwYjA4ZDBhMmE4MSBsZWdhY3ktdHJ1bmsKKzE5NTQ2IDI2YWNjMjQ0NWYzNzM3MzJmMTdkZDUxODJhYzBmMmUxYzA2MWFhMjkgbGVnYWN5LXRydW5rCisxOTU0NyAzY2IwMGNiZTc0NTUwODRlNzIxZTkxY2NhYThkMzU1M2Y2NDlhYzIwIGxlZ2FjeS10cnVuaworMTk1NDggZDk0ZmVhNTc4MzRjMzNhMDFkYWIwMGM5MTM4ZGNiNzU4MDc1NjEwNSBsZWdhY3ktdHJ1bmsKKzE5NTQ5IGY3YWUwZDkzN2NkMDc0MzFhMzAwYzcyMzMwOWZlODI2MjBhMzY0MTUgbGVnYWN5LXRydW5rCisxOTU1MCBhNmYwODBmZTUyNTExZjkyODZhYTMzNTI4NzJlOGQ5MGYxZmY0NjBlIGxlZ2FjeS10cnVuaworMTk1NTEgYTBiYWY0Y2Q4MzVjZjJmNDBkYjkxNTQ0NjkyY2I2OTJiMDU4NGU1YyBsZWdhY3ktdHJ1bmsKKzE5NTUyIDEwMmZmZTE2MTFlMGY4NDc0OWQ4ZmRmYzAyYjhmOGFlZDJjYTNiODUgbGVnYWN5LXRydW5rCisxOTU1MyA2ZWJiMTRiMTQxYWQ1MWI5Y2M0Yjg4ZjIxN2I4ZGIzYjE4M2VmMDg4IGxlZ2FjeS10cnVuaworMTk1NTQgNzM2YmNlZWNhM2RiZDYzYWY4MzI4OGRiMmJiYjE3NmY3MTdkYTRmNSBsZWdhY3ktdHJ1bmsKKzE5NTU1IDQxMzRiNTk3MjIxOWNmYmM5ZWZlNjNhNzU3MzNiYjgwNTVmMDkzNTUgbGVnYWN5LXRydW5rCisxOTU1NiA2NjI2NmM0NmNjZmRjZDYyYWE5N2E4ZWNiM2YyZDY4N2Y2YTYxMmY1IGxlZ2FjeS10cnVuaworMTk1NTcgMmE4NmQ1MTlmODBlNWU4ODUyMTM3Y2Y5ZGViYzgzNTYzN2U0M2ZkMyBsZWdhY3ktdHJ1bmsKKzE5NTU4IGRlNWE4ZGQxYzZmMjQ3NTZmYTQzYTQxNjNhMGM3ZjMxY2I5YzVlODEgbGVnYWN5LXRydW5rCisxOTU1OSAzYmRkNTY1Yzc3YmRkZGQyMjgwNGYwNzNlMTU5N2VmMmI3NWZkYWFhIGxlZ2FjeS10cnVuaworMTk1NjAgZTE0YzVmMzRmYTA1ODU2YTU0MTJjYTg1ZDAzMmE0MTkyYjNhOTRkYSBsZWdhY3ktdHJ1bmsKKzE5NTYxIDU2NDkyN2M1NTc0MjVmOGJmNThjZGJhY2QzODYyZGFiNDE1Zjk5NGMgbGVnYWN5LXRydW5rCisxOTU2MiBjMDJhOWRiNTZmZTE1ZDViMDUzMjYwM2E0MjVjZDlhYWY3MjIxYzVjIGxlZ2FjeS10cnVuaworMTk1NjMgMWI0MDBjODU0YTJjMmZmZTQxODlkMjg0ZWU2ZjI5M2RiNjRkOGI5NCBsZWdhY3ktdHJ1bmsKKzE5NTY0IDczMzRiMmNlZGRhOGU3NTBiZTJlYjUzNDhkMGI3ZTdjMTljN2EwZDMgbGVnYWN5LXRydW5rCisxOTU2NSBkMmE4NDE0YTFlYWIzZDFlM2Q4NWQyOGQ2Yzc0ZTM0MmQ0OWVmYWE0IGxlZ2FjeS10cnVuaworMTk1NjYgNjBjOTBmZjljMmY3OGFkNmQ4ZTgzOGIyMzRhMDcxODEzNDNhODhjNiBsZWdhY3ktdHJ1bmsKKzE5NTY3IGY5ZjRjMjMzZWUwMzdjZDUzNGM1NjhjZTEwNjU3MDI1YTQ4NzNkMjUgbGVnYWN5LXRydW5rCisxOTU2OCA4MTcyOTA2YzZkYzhmYjM3ODYxNTg4YmJiYzBlYTZlNmE1YTQ3YTlkIGxlZ2FjeS10cnVuaworMTk1NjkgMDQ2ODU5NmUzMDE4NzQwMDhkMDdlNmE3YThhMzVlMDEwZWU4ZThjNiBsZWdhY3ktdHJ1bmsKKzE5NTcwIDkzMmExZjhkOTJmNzA5MTcyYzI3ZDZhOWY4ZTRiMmNkNzI1OGRiYmQgbGVnYWN5LXRydW5rCisxOTU3MSA2MTdjYjQwY2I3NGI4Zjc0MjAwMWQxNjc5MzNiZTIxMjNlZWZmZjNkIGxlZ2FjeS10cnVuaworMTk1NzIgOTY5NmM5NWQwOWI3NDI0Y2QxMjNkNDBiZThmOTk3YWUxYjdjMDBmMSBsZWdhY3ktdHJ1bmsKKzE5NTczIDU3Nzk5ZjAxM2FhZDI1NGE4Zjg5ZGY2YjYxNGE4YjRiZDk2MGU4NDQgbGVnYWN5LXRydW5rCisxOTU3NCAxY2YzNmViNWEyNWMwZjU2MDJmY2UwNzNmYzQzNjFjOGNkOThlNzY4IGxlZ2FjeS10cnVuaworMTk1NzUgNTg5MDhiYjQ3Y2NhY2FkN2E2MTcwZGQwZTgxNWQ3NjNlZDBkZTgxNiBsZWdhY3ktdHJ1bmsKKzE5NTc2IDJjMWY4ZDNiYmEyZjgxZWJiNTI3YjY2NGQ1MjE5MDk3NjFlOTU4YWMgbGVnYWN5LXRydW5rCisxOTU3NyA2MzQxZjhkOTA5YWM1ZjU2YzFjMmY3NGQ2ZjlkYTA2MjM5YjY0ZDkzIGxlZ2FjeS10cnVuaworMTk1NzggZTRiNDdiNDM5M2M4YWQ0ZDZhY2QyNWUyOGY4MWI5M2Y4NDAyYTI3NyBsZWdhY3ktdHJ1bmsKKzE5NTc5IDZkMWZkOTI0NGRhZGFhYmVmMmE5ZWVlZTIxNmNlNzExMTY1ZmNiN2IgbGVnYWN5LXRydW5rCisxOTU4MCAzZTkzOTZhYzRiYTA3ZTRkY2Q5ODYwNDU1OWY5NjRjMTUyNDQzNzQ4IGxlZ2FjeS10cnVuaworMTk1ODEgZWY2NGRjNjg1MjBmZGI5OTJmYWU1MmRmOTQzNDdkNmI1ZWRmYTA5YyBsZWdhY3ktdHJ1bmsKKzE5NTgyIGExZDhiYjY4NjU5YTQ3NDM3ZWVmNzBkZjdkZDIzMTQ0OWMzMDg1ZTIgbGVnYWN5LXRydW5rCisxOTU4MyAwMWMyNDcwZWViMmVhMDM0MTU4NzZjYTM3YzU0NmRkZmMzYmY3ZjlhIGxlZ2FjeS10cnVuaworMTk1ODQgODljMTI2ODg3ZGYwOTNlMGQzN2I3NTQ5MDJhZTgzYWZhYjY2ODg3NiBsZWdhY3ktdHJ1bmsKKzE5NTg1IDQwN2Q0MDIyY2M4YzA0MjhiMTU0ZmU5NmE1OGU1MGQwM2UxZGM0MDUgbGVnYWN5LXRydW5rCisxOTU4NiA0ZGIwZmRkYjY5MTc4ZGJmY2ZkN2JhMWFhZjM5M2Q3NjA5MDQ3NWMwIGxlZ2FjeS10cnVuaworMTk1ODcgY2MzMzhhNWMxNmU1YzQyMDNlNGZlMzFkMTY1MTVmMzM1ZTExNDg2ZSBsZWdhY3ktdHJ1bmsKKzE5NTg4IDU5ZjFiNTdiYzkwOTk4ZjA3NDk3Njg2Y2FjNjZhNTI1NzIyOWRmMjMgbGVnYWN5LXRydW5rCisxOTU4OSAxMjA2MjFiZDMzZmNhNTlhMTAyNmExNmI0YmRhNWI0MTZiM2M2NzVmIGxlZ2FjeS10cnVuaworMTk1OTAgZDE3MGMxZTc3MmM1NTNhOWI1ODk2YjZhNGExNGRlZjVkN2U0OTNkOSBsZWdhY3ktdHJ1bmsKKzE5NTkxIDU4M2E4MTJjNDVjODg2MTM0NTU2N2E1Y2U3Y2I4YzFiNzVkNDNhYmIgbGVnYWN5LXRydW5rCisxOTU5MiA4MDBiMDA0YWNjNzE3ODBlNmQ5OTNkMzJiZjgxNDM0M2NhOTE1OTI2IGxlZ2FjeS10cnVuaworMTk1OTMgMjU2ZTE1OTlkOGQ5NmMzYmJkNzQ3YmMzNjFmZjVhMGYxNDY5YjRjMyBsZWdhY3ktdHJ1bmsKKzE5NTk0IDc0MTQ1YWIxZmRjNWJkOWRmNTAzZmE2NzViNjQ5OTJiYzY2NWIzZDUgbGVnYWN5LXRydW5rCisxOTU5NSBlODFkZGE1ZDM3YzRiMWIwNjMwMjA2Mzk4ZDZiNTFmNDI1MGU4ZTJlIGxlZ2FjeS10cnVuaworMTk1OTYgODZjNzY4M2I2MDZhOTBiZWU5Y2M5MDg0MGVhYjVlYjY4OTQyMDIxOSBsZWdhY3ktdHJ1bmsKKzE5NTk3IDhmMDM0YmNlZTg1NmJhZGYwZjU0NjRmNzIzMjc2MjI3ZGU4MDhiMTQgbGVnYWN5LXRydW5rCisxOTU5OCBjOTlkMTlhOTZlOWViYmVjZjYyZGM3NzE1MTY2YWU3ZmVkYjliYzE4IGxlZ2FjeS10cnVuaworMTk1OTkgMDVlYzFiMDU0YjRkOTNmZTA2ZjI4OWU3ZThkMzczY2ZkZDdmNmQxZCBsZWdhY3ktdHJ1bmsKKzE5NjAwIDlmODZjYmE0NzY2YjU0ZWU5NTE3MDBkZDgwZjUwZDViNzg3Y2IyZTAgbGVnYWN5LXRydW5rCisxOTYwMSBiMzI3OGJmNGYwOTE4MjM3MTNjZmM0NzExMzMyMGMyYmJjZGE5ZTc0IGxlZ2FjeS10cnVuaworMTk2MDIgMzg2Y2M2OThhZWY5NTU2ZjZkYjQwYmIxYzQyNzllYzFlYjJjMTMwNyBsZWdhY3ktdHJ1bmsKKzE5NjAzIDg0NGZkZTYwMGE2MWQzMzg5YWFiMWJmMWRlZDZmNmE0NWNmMDZjZmMgbGVnYWN5LXRydW5rCisxOTYwNCBkZGFmZGJmOTE0OTg1Yjg5MTRjZDhhMDRhNTcwOTk0ZjZhNjMzYzc4IGxlZ2FjeS10cnVuaworMTk2MDUgYzEwMDU2MTAwZWE1ZGQyZmU4NGQ1MmMyZTMyNzBkODliYmU5ZWUwYyBsZWdhY3ktdHJ1bmsKKzE5NjA2IDg0NjZiYjM3Mjg5Y2Q2ZTc2MTBhYTg4ZDM4ZmVhMjQ3MTQ1NjhmYmYgbGVnYWN5LXRydW5rCisxOTYwNyBkYjYxODk0YjBkNmZjM2U0MDBlNDAyNDRjMDVmOGM5ODY4NDEwOGVmIGxlZ2FjeS10cnVuaworMTk2MDggODVkMmFmOTcyZTYyMzA0YzBiOTIwNjIwOTc2ZGZhM2VmNzRjMmEyZCBsZWdhY3ktdHJ1bmsKKzE5NjA5IDM1ZjU3YzcxNzBiZDQwYTc1ZDhkYzMyYzIxMDU0ZWZiMWJmMmEzMTUgbGVnYWN5LXRydW5rCisxOTYxMCA0Y2E2MmFmZWMwMDQ1MjVmYzNjYjczNGZhYWY1NjYwY2ExZTkxMjUyIGxlZ2FjeS10cnVuaworMTk2MTEgYjQyYjIyYTkyMjhjYzg2MDVhNTlmOTE2YjA1NDk5YWJkMDhmMDczMSBsZWdhY3ktdHJ1bmsKKzE5NjEyIGUyYTBkYjgzOWViMWE0M2I0NTI2ODYzOWQyZTU1ZjI5MmM0NjdjMGYgbGVnYWN5LXRydW5rCisxOTYxMyBlNDQ0YTUyNzExODEyY2NjYzcxMGE5YWRjMDAxNTQxYzlkZDMxZmIyIGxlZ2FjeS10cnVuaworMTk2MTQgOTUxODg5M2NjOGE3ZDZmNWQyMjZlY2Q3ODBjZWMyNTQyZjMzZDA5YyBjbnJpLTE2LXN0YXJ0CisxOTYxNSAwNmY2ZjBlMWUxMDYxNmM4YjY2MzRkNzdkMWY5OTYzOTkxMDVjYzAyIGNucmktMTYtc3RhcnQKKzE5NjE2IDNjMGEzNTAwMjEwOGQyZTEyMDQzMWQ1NGQ2YzNjYmJmNTE1N2I1YWMgY25yaS0xNi1zdGFydAorMTk2MTcgNmE1NWI2NzdmNTA5NjQ1ZjNjODdiYmVhOTUwY2IxOTgwZWVhMTYyMCBjbnJpLTE2LXN0YXJ0CisxOTYxOCA3ODE1OTE5ZTJhZjhiNjNlMGVhNzYxNjZkZDM1YTkwZDA1NjMxZTdjIGxlZ2FjeS10cnVuaworMTk2MTkgOTBlOTBjOTIxOThiN2RhNjA5ZTU2MGZjM2IzZmM3NjdlNTM2Y2VjMyBsZWdhY3ktdHJ1bmsKKzE5NjIwIGNhMWJlN2QwMDQxM2U4YWFhNWUzOWNmNWFkYzM0MTYwY2FjZTc4MGYgbGVnYWN5LXRydW5rCisxOTYyMSA1YzNhZWRjOTY5ZGE0NTY3OGNjOWIwZWQyMGYzOTM0ODVlOGIwZTQ0IGxlZ2FjeS10cnVuaworMTk2MjIgNTE5NzdhZjIzMGZhNDdiZWU5NDgxMzc2MzFjMDViNzE4MjkwNzJlZCBsZWdhY3ktdHJ1bmsKKzE5NjIzIDIzYzdhMDEwOGY1OTBjZmM3YzFiOTgxYjAyYWVjYzUzNTE4NTdiZTEgbGVnYWN5LXRydW5rCisxOTYyNCAyZmI0ZDYyNWJkMzlmMDFhNGEyY2JmODdiY2Q4OWJlOTJkNjVmMGExIGxlZ2FjeS10cnVuaworMTk2MjUgMzQ0ODU5MWU4Mjc1ZTdhNzVhNDcyZTAyOTVmNGVmYzgxNTE3Y2M5YiBsZWdhY3ktdHJ1bmsKKzE5NjI2IGUxZmE5OGZkMjM5ZTc1YTEzZjA4Zjc3NWE4MmE5ZDM1NjI4NGU1MDkgbGVnYWN5LXRydW5rCisxOTYyNyA4OTk2Mjg4YTg4NzNiMWM0ZTc4MTRiYmIwYThlY2RhNTI0NWZiOWVmIGxlZ2FjeS10cnVuaworMTk2MjggNmM5NmU4MzI4ZDUzMDFiN2I2ZDVjMTQyMWM5OGQxMjZhMGJlNDdkMSBsZWdhY3ktdHJ1bmsKKzE5NjI5IGE4ZTUxZjZiNWNmYzA5N2M1ZDRmYWJkODI0NTIxMTM1YzVlNDI4NWYgbGVnYWN5LXRydW5rCisxOTYzMCBmZjEyMmM0MDRmNjQzMWM2ZjQ1OGE0YjFmZjc3NDRkMzk4NWRmYzk0IGxlZ2FjeS10cnVuaworMTk2MzEgZGI0OGQwYjEzYjFlZDAxMjIzNzE5MDU1ODM5NGYzNzc3NzUzMzQzOSBsZWdhY3ktdHJ1bmsKKzE5NjMyIDJmNTg1Y2JlNzFkYTU5ZGUzOTdhNzdjMGE4NWQ3MDhiNWEzMTAzNDcgbGVnYWN5LXRydW5rCisxOTYzMyBhN2M1MTRlMTUwMDM2NzBhYWI5MWZjYzU5ZDA3M2ZmYTM1MzA2ODEyIGxlZ2FjeS10cnVuaworMTk2MzQgYTgwNGM5MWMxODJlMWMxNWUxNzk2YjE1MWZjMGYwOGNkMjdmMzY2ZiBjbnJpLTE2LXN0YXJ0CisxOTYzNSAwYTM4ZjRkOTY2N2VjZWZkOWExOGYxZjY4NTgxYWI2MzdkNjE5ZTA3IGNucmktMTYtc3RhcnQKKzE5NjM2IGY0ZjI4NjBkM2E1ZjNlMDk5OGM4Y2QzYTZmZDJmYzYwMDYyMGRlMDcgY25yaS0xNi1zdGFydAorMTk2MzcgYjRlNDJkMjk5NjNkZDRjYmQyZDJjNTZlOTBlODI5MWRiMjJmMmVmZCByMTYxLWJyYW5jaAorMTk2MzcgN2VlMzc4ZDVhNDFkMmQ4MzE2ZWUzMjZmODE4OTkyNDE5YTQ4MDRlMiByMTYxLWJyYW5jaAorMTk2MzkgNjM0OGNkNDU5ZWU0OWUzZTU1N2U3ZjViNTEyN2UwNzhiMzBmN2IyYiBsZWdhY3ktdHJ1bmsKKzE5NjQwIDY4MGM4ODVkZmFjZTkxYjk0NjE2MmViNTYyMmZjZjNjZTZlMTU5NWUgbGVnYWN5LXRydW5rCisxOTY0MSBiNmE1MmU0MzgzNDQxZjVhMzMxNDAxYmJiZDIyYjNmOTlkZTEzMzM0IGxlZ2FjeS10cnVuaworMTk2NDIgZDQ0NmU0ZWM5YjdiMzk3NzBjZmY3ZmE5MjllNGY2OWIzMDQ2MThhNSBsZWdhY3ktdHJ1bmsKKzE5NjQzIDkwNTAxMWU4NzQwYzU0NTljZjhiYjFiODc5MjNhMDVmNGRkN2ViZjkgbGVnYWN5LXRydW5rCisxOTY0NCAxNGFmZmJkMDM3NTA2YzRkOThiYzk4MDc0MGUwMmEwNjU0NjFhOWE4IGxlZ2FjeS10cnVuaworMTk2NDUgYjIzNTE2MGYxMzQ2NzA4NTE5Y2UyNWY1MmExMDA4YmY2MzUxMDhkYiBsZWdhY3ktdHJ1bmsKKzE5NjQ2IGU0ZDliYTBhYzBiMmNhMTRjYjM0MThkMjc2Y2Q0N2NhNzBmY2Y3N2UgbGVnYWN5LXRydW5rCisxOTY0NyA2N2VkOGE2OTA1YzMzOWRhOGU1YTlhMTg5MWZjNjA2NWE0NGU1YmMzIGxlZ2FjeS10cnVuaworMTk2NDggMzgzOWYwYWExZTdjY2VjZThhMTIwODczMTNmNDkyZjM3NzllYjc0OSBsZWdhY3ktdHJ1bmsKKzE5NjQ5IGE0MTgyYzY3OWM2MWM0NDgyNTI0MGY2M2M0ZWE0MmRmZjUzYzM3YWMgbGVnYWN5LXRydW5rCisxOTY1MCAyOTE1ZWIwN2JkMjVhMzRiOWZlODRlZjNjNzkxMGE4MThlZDA2NDU5IGxlZ2FjeS10cnVuaworMTk2NTEgYjllNWMxMjIyMTJlZjM0Nzg2YjEwOWI1Mjg0Njk4MjExYjdjZjdkOCBsZWdhY3ktdHJ1bmsKKzE5NjUyIDY4YmQ5NmU0MjZlMzJiYjFiOTkyYmExMWJmMTAxMmFkZmU5YjRjZDQgbGVnYWN5LXRydW5rCisxOTY1MyBlYjI5OTI0YTMzNzBlMWZhODIwYWFiYjgyMmRhZWM1Njk1YzQ3M2MxIGxlZ2FjeS10cnVuaworMTk2NTQgYmY4ZDJiOTJlYTBlZjMyNTFjY2FiNmMzM2IwY2FjMTBjOTJiMDhkNiBsZWdhY3ktdHJ1bmsKKzE5NjU1IDVhMTIzMGRlNDM2YTg2MDU3ZjdmZDQ1ODI4MzIxZjYzMWU2MmM4NGQgbGVnYWN5LXRydW5rCisxOTY1NiA1ODY0YTljNThjODFjMjI4MWE2MTc4NTRkMTlkN2NlNGE5MTE2OWE1IGxlZ2FjeS10cnVuaworMTk2NTcgNGZlZWE5OWJlNzc3Zjk2MjdiNDBkODY5ODJhNzBiZjgyYWQ3Y2E2YyBsZWdhY3ktdHJ1bmsKKzE5NjU4IDYwZmQ5ZDQ1NDIwNmRhNTdlZjVmMjM5OTIyNzllMzZkNmFjMmUzZWQgbGVnYWN5LXRydW5rCisxOTY1OSA5OTc3ODA2Yjg2MTc0ZDk2ZGI3NzYxMzM4ZTY3YTRiYzc0MjQ1YzkwIGxlZ2FjeS10cnVuaworMTk2NjAgMjZkM2U4ZWFjZWRmYWRlZTZiOTA5YTVlMTRmNGRjNGE0MmU3NzYxMyBsZWdhY3ktdHJ1bmsKKzE5NjYxIDk1MTljYWQ2YmY5ZDRjNTNiNmIxODNlMzYwZDRkMjBhYzdmMGExODIgbGVnYWN5LXRydW5rCisxOTY2MiAwMGZlYTQxNzMwY2Y0M2M1Y2M4MTg4OWYyZDg3MjJkZDM1NTM0MGJmIGxlZ2FjeS10cnVuaworMTk2NjMgZTk5MWQ4ODQzYWI0N2U5MTZiOWM0YjRmNmEzYTkyZTgyMTRlYzYxZCBsZWdhY3ktdHJ1bmsKKzE5NjY0IDY3YmFkOWYyMGIyOWMxNzkzZWU5YWM3MWZjZmU5YmIyNTMzNzg3MWUgbGVnYWN5LXRydW5rCisxOTY2NSBhODlmNzgzYzEzM2E1MDI4ODhmZTcwZjMyZTdjMTQzMTU2OTYwNmRjIGxlZ2FjeS10cnVuaworMTk2NjYgZGFlMzllYmJjMDA0MWNjMTViZTJjZmI1Yjg2M2E3NjhlMTkzYmU1NCBsZWdhY3ktdHJ1bmsKKzE5NjY3IDdmOGY3YmViZDFmNjQ2NzY3OWY3MmVhMjk4YTM5MTFhZDE4ZmRmOWMgbGVnYWN5LXRydW5rCisxOTY2OCAyOWFhODMyYjg3ODc0Nzg2NmQ3OGY5ODAyZGNhZGZjMDY0ZjNmYmQ3IGxlZ2FjeS10cnVuaworMTk2NjkgYjgwMjQzZjdmOTdjYmU2YTc4NjQwNWRjODljNTlhMTg0OGVkZjhjOCBsZWdhY3ktdHJ1bmsKKzE5NjcwIGFjMTgwYzk4MjI5NTAwMWE3ZTQ2NjI1NDBjYjhlNDNiNWM2MTU0ZDYgbGVnYWN5LXRydW5rCisxOTY3MSAzYzIxNDJmMDc2YjQ2ZmUyYWIyYmQwNDY1Zjk1NWM0ZmRiNDdhYmE2IGxlZ2FjeS10cnVuaworMTk2NzIgMjU4ZGNhZmUyZDBiOGRjNmJjZWMxNmUyYTIzMmQ5MTg3N2EwMjY4ZSBsZWdhY3ktdHJ1bmsKKzE5NjczIDA4ZDkzNzEwN2ZlNmNjMjA5NWIxOGE2NTQ5M2M4ZGQyNGQ5MjRmNWQgbGVnYWN5LXRydW5rCisxOTY3NCBlMDA2MmU4OWQ4ZjQyN2E1ZmE4OGU1MGZlNTEzNWE2ZTkyYmZlZDBhIGxlZ2FjeS10cnVuaworMTk2NzUgMmM5MTg2ZTQwYjMwNzc4ZmQwNzAxYjE0YTczNDFiMmFhZjExNjNhYSBsZWdhY3ktdHJ1bmsKKzE5Njc2IGE4Njk1MDUxOTU4NjNjODdhZWYyMDM3MzJjZmRlZWVjMTNhZjUwNTcgbGVnYWN5LXRydW5rCisxOTY3NyA0NDQ1OGZlOTQ3ZGRiMDU1NDVjZjhhODQ2ZmU4YjI1NzhjYmI2NTljIGxlZ2FjeS10cnVuaworMTk2NzggODE1Njg3OWZlNjBkMWUyZGFiMzA3OTZiOTI0ODk4NmVkMzE5MjA0YSBsZWdhY3ktdHJ1bmsKKzE5Njc5IDgzODk1YjRjZTBiYmYxZWVmNWU0NzBmM2M2Y2RiZTM0NmQzZWZkN2EgbGVnYWN5LXRydW5rCisxOTY4MCBiMjU4NWQ4ZmRiOGJiZjQ0MjI1Y2Y3MmRmNjFkZjg5NTExNDNlYTM3IGxlZ2FjeS10cnVuaworMTk2ODEgNzRmZDE5NTljZjQ0ZWUyYjNmYzAyMTZkMDIzNzA2ZDE1YjM4ZmIyZCBsZWdhY3ktdHJ1bmsKKzE5NjgyIGFlN2Q3MjA3ZGE0ODgwMzZlMmY3MThmZGFhOGJlOWY3NmQ3OTg3ZDkgbGVnYWN5LXRydW5rCisxOTY4MyA4YmYwYzQ5ZmNlMTAxYWJhOTE3OTZiNGUwNDE4OGExMDgyNWVjMDMzIGxlZ2FjeS10cnVuaworMTk2ODQgNTBkOTE1OWVkYWFiNjc2YmJmZjJlZTc3NGUyYjI2ZTQzZjVmMzljOSBsZWdhY3ktdHJ1bmsKKzE5Njg1IDFkMWJmNjgxM2VlNTY5ODc5ZGM1MDc2OTMxOWY5YjNkY2U2YzgwYWQgbGVnYWN5LXRydW5rCisxOTY4NiA1ODBhZDY4NTQ0NWY1MTgzYTYxNjFhNWRjYzYyNDk0M2YzZTdhNTM3IGxlZ2FjeS10cnVuaworMTk2ODcgYzNmYjA0NGQ3ZTZmMWFjOGQ2MDYxOTYzYTdiYmFiNTUyMjhiODY3MCBsZWdhY3ktdHJ1bmsKKzE5Njg4IDRlYWRkZjQ3OGU5N2E0NjNiNzdhOTkxN2E3M2Y2YWEwZmEwOWU4ZjQgbGVnYWN5LXRydW5rCisxOTY4OSBiMmNmZjU3MDU3NzVlMjY5OTM5OGNkZGM3OTE2MTA1MTEzMTI2ZmEzIGxlZ2FjeS10cnVuaworMTk2OTAgNzY1ODAxZGUxNTEyMDgzZDZhNDk2MGMwYWJiY2QzZmVjNWU1OTBhMCBsZWdhY3ktdHJ1bmsKKzE5NjkxIGZmY2IzY2ZmOTQzOTRkMDUyMzI2MzE1MGE1NTI2NGZkMWZkMWYzMzAgbGVnYWN5LXRydW5rCisxOTY5MyBmZDJhODY5NzY5YjI0OWI4NzY3MzEzOWQ5ZTE2NGVlMTcyMDI4NTk0IGxlZ2FjeS10cnVuaworMTk2OTQgNTNlOGViZDExNjIwZDQ1YzA4YTcyODRkNzMxNTU4MjVkYmE0NjU0YyBsZWdhY3ktdHJ1bmsKKzE5Njk1IGY1NGJhZTg2YTJjNmJjYzYxNmJlMGNlMmVlN2M4MTFmNzBlN2NkOTQgbGVnYWN5LXRydW5rCisxOTY5NiBmNzk2YTg3NzExN2U3MTViMzQxZjFiYTdlMDBkYzA0MjRlMjAzZjNlIGxlZ2FjeS10cnVuaworMTk2OTcgMGYwZWZjMmQxMmYxNDNhNjg2ZWNlNzY2OGMzNWMxNzg1Mzk1YWVmNSBsZWdhY3ktdHJ1bmsKKzE5Njk4IGFjYmU3NGYzYTc4NmYyZjQ1NzljNmY3ODQzYzZjMmM3ZTM4ZDE2ZWMgbGVnYWN5LXRydW5rCisxOTY5OSBkNGEzMTVlNDA5NGM0ODcxZGY0MzNkMGY2ZjY2MWIyMWJiMDIwOWU2IGxlZ2FjeS10cnVuaworMTk3MDAgNTFjZjQ1MWZhYWU0NjAxOThmOTcwNDZjMGJmNTQwNTBiYzAxY2RlMCBsZWdhY3ktdHJ1bmsKKzE5NzAxIGE5NTY5MzQ5MWVjYWFmNzEyZGViNzg4NjcyZTdmYTBlY2MzZjI0NDUgbGVnYWN5LXRydW5rCisxOTcwMiBjZTQ3NDk4YTMxNTg1OTczYmE3ZDNjOTU1ZjMyNzk4MDRiZDk4YWMzIGxlZ2FjeS10cnVuaworMTk3MDMgM2IwNTIxMmMxNjE2MDI1NTcwMzhhYzg4ODBlNjRmOGIyZDBjNmNlMSBsZWdhY3ktdHJ1bmsKKzE5NzA0IDY3MzI5MDU2ODZkNDBlODFjYmYwODFkMjlkOGFlN2QzYWYwMWVlODggbGVnYWN5LXRydW5rCisxOTcwNSBmNTM3MGUxZTIzOTJlNmU0MmFkNDM5YTlkNjFhNTllMDVkMWQxY2Y1IGxlZ2FjeS10cnVuaworMTk3MDYgMjdmMDRkNzE0ZWNiYzUzNmNlN2FmZGYyM2VhZTFmZDI2YjVhM2UxOSBsZWdhY3ktdHJ1bmsKKzE5NzA3IGI0NjNhY2Q2ZGEyMjI5OWVkMWEwNzBmZThmMmJiYjdjY2YyOWVkMmEgbGVnYWN5LXRydW5rCisxOTcwOCBiYmRlYjZkNGRlYTE1MmZjMzZhNTE4YWEyOTZmOWNjN2YxZmQzMTIyIGxlZ2FjeS10cnVuaworMTk3MDkgNTJmZTM3N2YwN2YyY2UxNjBiMDMyNWYwYWVjMjI0MDU3MzZlOGY4ZCBsZWdhY3ktdHJ1bmsKKzE5NzEwIDU5MDJiNTc5NGExN2ViN2Y3MzBmZjM4NmYwMjAyY2NiNDNmM2Y5MzYgbGVnYWN5LXRydW5rCisxOTcxMSBmMjljNzY2ODY0Y2I1YTM4OGYzNDI3N2U1Yjk3Y2Y4ZWQyOGE2MDgxIGxlZ2FjeS10cnVuaworMTk3MTIgMGU2YTNkYTRmOTU2MTMwNTIxNjY1YWI2MGE4Y2NiYjFkOTg2ZmJhMyBsZWdhY3ktdHJ1bmsKKzE5NzEzIDA5ZjZjMTM3MjA1Njk5MzcwODg2ZWY2YzdjNjZmMWFjNzliNTY2NzggbGVnYWN5LXRydW5rCisxOTcxNCBlMWIxZTY4Y2JkOGMxNWI4MWNlOTIxZTRkZGY2ZmU4OGQwMzE0NjgzIGxlZ2FjeS10cnVuaworMTk3MTUgOTUwZmMyMjYxZGE0NjFhMTI4ODk5YzJlNGUwMWY5Yzc0ZDIxMzlhNiBsZWdhY3ktdHJ1bmsKKzE5NzE2IDNkMjk2OTBhMjRlODk1NTA2NGQwNzM5ZDdlMzIzY2QyNzA4ODUzNDEgbGVnYWN5LXRydW5rCisxOTcxNyA3NmE2ODRmZTNmN2ZjNWQ4MzkwZGEyNGEwMjM3ODdjYzg5MmFmOGUzIGxlZ2FjeS10cnVuaworMTk3MTggMzI2YTRkY2JjZDIyYTc2NmYzOTZlNDEwNGFjMTc3YWFmNzRmNWUwMiBsZWdhY3ktdHJ1bmsKKzE5NzE5IDgxNTZkZWIwZTYyZGU1ZTEyMTU5N2E4OTZhNWFiODI1MDU5ZGFkYzggbGVnYWN5LXRydW5rCisxOTcyMCAwOWRjZjVlYmNkODAzMmZjOWJlMzA3NGNjOTU3NTNhYTFmOWEzY2JmIGxlZ2FjeS10cnVuaworMTk3MjEgMmQyZWUzMGY0M2VhZGQ1ZGNkMmQ3YWMwODdhZWNkOThjMWU3NTAzNiBsZWdhY3ktdHJ1bmsKKzE5NzIyIDk1YTdjNTg5OGZhYTFkYTdhMGM0YjZkMzUzYTFmODAyOGZjNTk2NjAgbGVnYWN5LXRydW5rCisxOTcyMyA0ODk0YmEzZWRkMGE1MzQ0ZjRhMTlmMTJlMWYzMmY4ZGMxMWZlOTJiIGxlZ2FjeS10cnVuaworMTk3MjQgYTg3NzFhNTJhYmIzN2ZlMDdjOWM1ZWVjZTFlNWI4NWYyNTZjYzU1OSBsZWdhY3ktdHJ1bmsKKzE5NzI1IDJkNGRhNmNmZWU2MTgyOWY4M2I0ZDZkZDlkYjMyNzJhMDRjNjdkOWYgbGVnYWN5LXRydW5rCisxOTcyNiBlNWYyYWI4MTFlYzNkODE4YmQ0NjdjNjVjYTgzY2E2ZmRmMTBmOTg1IGxlZ2FjeS10cnVuaworMTk3MjcgODQ3ODQ0MjQ4YzZmOTI3NzI5NjhiZTk0YzlmMzAzNzlkMTM3NTE3YiBsZWdhY3ktdHJ1bmsKKzE5NzI4IDA1Nzg1YmRmMjg5Y2QwNjA4YTMxNTJjMWZkNWI5N2VkMWE2MmIwMmMgbGVnYWN5LXRydW5rCisxOTcyOSBiYzg5ZjExNjE2MGI5NzRhYzI2ODg4NTNhOTNkMWZkOThiZjY4MTY5IGxlZ2FjeS10cnVuaworMTk3MzAgZWM5MDgzYWMyNmRmN2RkYzFhN2JiYmY3YjdhYjQ3YWQyMzE0MGIzYyBsZWdhY3ktdHJ1bmsKKzE5NzMxIDI2Y2U2ZWZjOTc0NDI3OWFjNjdmYmMxYmIxOTY4NWRmOTRhYmExOWMgbGVnYWN5LXRydW5rCisxOTczMiBjNTU3ODA4MTVhNmU1YTM1ZDMzYWYwYTY2YjZjMDY0NDgwYzA1Y2EyIGxlZ2FjeS10cnVuaworMTk3MzMgYjBhYWY4Zjg1ZDEyOGUyNDBhNjJkODk0MTM3YWQxNmM2NmMzMTkzZCBsZWdhY3ktdHJ1bmsKKzE5NzM0IDhkN2Y3MmNjMmVjYzgxNDU0YzQ5MWQ2NjliYzAzYjg1OGE5YzI4NDAgbGVnYWN5LXRydW5rCisxOTczNSBjZDQwODVjZWUzMDkzYWE1ZjQxMDI5MmYzNjhhYWE2YWVmYjc4ZjcwIGxlZ2FjeS10cnVuaworMTk3MzYgOWZhMjAwOTgyNTgzM2M4MTg2MTg1NDVmNTZiZjNjN2Y2NWUyYmVmNCBsZWdhY3ktdHJ1bmsKKzE5NzM3IDc3YTU0NzAyOTlkYmU0ZDI3ZTQzYmFjNTE0NmRiYjdiYWJiNWQ5NDkgbGVnYWN5LXRydW5rCisxOTczOCAxM2NkYmZiNTkxYTQ3NDNhMTc1MGI5ZjM0YjEzYzRkNjAwY2Q5MTQwIGxlZ2FjeS10cnVuaworMTk3MzkgZDA1MmRkZGJmZDQ0NTBhMTE5MzVkMjAwMDc2NzllOGI1YWYyODUzZCBsZWdhY3ktdHJ1bmsKKzE5NzQwIDI1MTRmY2ZhMGYwODI1NGZmMzQ1Y2Y1ZDI0MjA5M2MzNDE1OWZjNjIgbGVnYWN5LXRydW5rCisxOTc0MSAzYTQxMWQ0MWVlYjRmZjA3MDRkMmViMmI0NWYxYmVlZjNjZmNkZTU1IGxlZ2FjeS10cnVuaworMTk3NDIgNzk3NmNmN2ZkMTk2ODNiNThhNDRlNGM2NDMxZmEyOTU2YTY5OGVhYSBsZWdhY3ktdHJ1bmsKKzE5NzQzIDdkYzY2ZDViMTAwZWVhZmYwOWM1MjRlODg2ZjQwYTE5N2U4ZTEwNmIgbGVnYWN5LXRydW5rCisxOTc0NCA0MTI2ODAzZTFhODVkY2FmZGRlYTFlYjZmNTg2NTcxOGRhN2QyY2JiIGxlZ2FjeS10cnVuaworMTk3NDUgZjM5OWU2YTg4ZjY1ODQ5NTgxNjIxYzc2MWUzODM2Zjk4YzQwYjMyNyBsZWdhY3ktdHJ1bmsKKzE5NzQ2IGQ2NzVkNzVhZjgzOTVlYjg0YWU4ZjMyYWIxY2VkODA5N2RlZTEzOWUgbGVnYWN5LXRydW5rCisxOTc0NyA1MjgwZTg0MzlkNTU2Mzg0Mjk0MDQ1NGJhMTdmN2Q0OWY5MGQyMjNhIGxlZ2FjeS10cnVuaworMTk3NDggOWQwMThhM2Q3OTQ2YWE3MWQxOTc1OTYwZTA2MGY3Yzk0MDVhNjQ3YiBsZWdhY3ktdHJ1bmsKKzE5NzQ5IDc5YmJmN2FkMGZjMTc5YjI2YzRkYTQzNmUwODIzYzEyNWVkYWMyMGIgbGVnYWN5LXRydW5rCisxOTc1MCAxMGI4NDA2MGI3ZjM5YzY3NWNmOGVkOWQ4NmIyYzc0NTVmM2ZkNmMyIGxlZ2FjeS10cnVuaworMTk3NTEgOGQ3NDg2YThkNjlhYzBiMWE1YmNjYzg5ZGVjMzA3ZTM2NmE5MWE3NSBsZWdhY3ktdHJ1bmsKKzE5NzUyIDMwYmE4ODM3NjRlYmI0ZTE5NTRmNjFhNzI5YzFkYzgzZGIyYjdhZjYgbGVnYWN5LXRydW5rCisxOTc1MyAxY2Y1MjUzNmMzODFlZDBkYzMxYjVjNmRhZWM2ZmZiNmIyNjU4YTJiIGxlZ2FjeS10cnVuaworMTk3NTQgYWJhZWE0NDNlMjhjMmZjYWI5NDE0YTQ3YTI2ZjE2NjY1OWIyYzZjNSBsZWdhY3ktdHJ1bmsKKzE5NzU1IGJkY2Q3OTg3MzkyNGNlNjQyYjBhYzNkYmIzMDk0NWNkOTY4NWY0OWQgbGVnYWN5LXRydW5rCisxOTc1NiA4NTk4MjkzODQ2NjNiMzZkOTBmOTRiOTBhODgxZTZkZmUzYTExOGEwIGxlZ2FjeS10cnVuaworMTk3NTcgYWQ3MzQzNzM3YWVlOWUxMmVlNzQ2MmU5YTJiYTZkMTg2N2MxZGI2ZSBsZWdhY3ktdHJ1bmsKKzE5NzU4IDdiNWI1NzU2YjJjYWQwZTFmMTRlMjMzOGFkYjBmZjI3ZWIyYmFhN2IgbGVnYWN5LXRydW5rCisxOTc1OSAxY2U3NTFmYTY3ZDgwNmVlN2I1NDkyNzBjYTZkZjkzNzI2NTk5MjAxIGxlZ2FjeS10cnVuaworMTk3NjAgZDNmNjQ2NDA0YTQzNTcyYTU2YjA0MWM3NTFkZTg3NmNiMGNlNmM3NCBsZWdhY3ktdHJ1bmsKKzE5NzYxIDY4Y2UzMjg2MTYyNmY4ZTY0MzM1NmZjOGU5YjFjMGY1YTNlMjBlMjUgbGVnYWN5LXRydW5rCisxOTc2MiAxNGRiZGUxZWNkZWFiOWMzMzY3NzU4MjA5NmRlNmM5MTAyMjMyMjJiIGxlZ2FjeS10cnVuaworMTk3NjMgZmNmYjQ0MmQ3YjM0ZTI5NjUzMDU5NGRmYzE0NjdmYWU2Y2RjNjc3MyBsZWdhY3ktdHJ1bmsKKzE5NzY0IDBmZWI2MzQ5MDA5MzVhYTZiMzc3NGEwNGNmOTNjNDRiNzU3ZmUxY2YgbGVnYWN5LXRydW5rCisxOTc2NSBmMjg3YzY4NGUwNGM0NWU2ODAxZTlhYjE5ZjY3ZjkyZTdkMjkxZDBjIGxlZ2FjeS10cnVuaworMTk3NjYgODA2YzZhZTIzMTAzMjQ3NTU1N2MwODc4NzY0NTA4OTA2ODEyNTcyYyBsZWdhY3ktdHJ1bmsKKzE5NzY3IGYyN2QzMjk5ZGYzOTA2MjA2YTllY2ZlZjBhOGVmMDljYTI3OWVmOWUgbGVnYWN5LXRydW5rCisxOTc2OCBmMWM4ZWE5MmVlODUyZWU0YTdhYmNmMTljODBkNzU2MzBiNGQ2NDdmIGxlZ2FjeS10cnVuaworMTk3NjkgYjNkNTA0YmRkOTc5ZmEzNmU0MGE2MTI0YjQwYWRkN2U2NDEyOTZiYyBsZWdhY3ktdHJ1bmsKKzE5NzcwIDhhZWNkYjIyMzQ4ODE3MzBhMWQ4MTE0NDhhYmUyMzYxN2U3YzdkN2EgbGVnYWN5LXRydW5rCisxOTc3MSBmYTg0ZjlmNDEwOTIzMTE2YjFjZDU3ODc3MWUwNTA4NGQ5ZTlkMWVkIGxlZ2FjeS10cnVuaworMTk3NzIgNzRhOWQwYTQyMzFhNWViMGExYjM4NjRiNmUxNDJmNWUwNmJmMWY0OCBsZWdhY3ktdHJ1bmsKKzE5NzczIGRjZWEwOTM4ODMzMmNhYjg1NzI5MzQzYTgzZjc1Mjc5N2JhZTA2ZTIgbGVnYWN5LXRydW5rCisxOTc3NCAzMjBmYTUwYTFhN2QyNTU2MTgzZDExODZlZTBmYTEwMGZiOTY0M2JlIGxlZ2FjeS10cnVuaworMTk3NzUgOGQxZTg0NGZiYjFhYjVhZjBjYjAxNzY5OTVhY2Q5NWVmOTZjMmQ3MSBsZWdhY3ktdHJ1bmsKKzE5Nzc2IDU3MmI2NTRiZjRlZDU0YjA3Y2UzMDZkZjM3MjI1MDBiOWVjMzQ2OGYgbGVnYWN5LXRydW5rCisxOTc3NyBmNTVmMzVkYzUzMjAxYTU0OWQ0Y2M4OTc5NjA4ZmFkMDNmOTU1ZTQ2IGxlZ2FjeS10cnVuaworMTk3NzggZTg2ODc1ZjA2OWIxNmUzNGQwOTZiMDM3M2I3YjQ4ZTg2NzcyNDQ4YiBsZWdhY3ktdHJ1bmsKKzE5Nzc5IDQxZjNmNGIyZmU0YTY3NjJhYjAxMDg1YmRkNzU5ZGE4ZmY2MTRlMWMgbGVnYWN5LXRydW5rCisxOTc4MCAwZjA3NzBhNzkzYWNkMmZiODViOTg5NGI5MjNjYTFkNmMxMTE5MTdmIGxlZ2FjeS10cnVuaworMTk3ODEgYjczMjQ5YzhkZTE4MDE2OTNkMzY0ZDk5MTMyNmMwMjlkNDRmMTFlOCBsZWdhY3ktdHJ1bmsKKzE5NzgyIGYxZDQ1ZDZjMTJhMjhjMjJhMzlhOGFjMTRmYzczMDg5YmMxNjExYTkgbGVnYWN5LXRydW5rCisxOTc4MyA2YzkzZjE4ZDMyMzM0NWVhZjZlYjdmMzc0NGQ4ZmQxN2U4ZTVmY2QzIGxlZ2FjeS10cnVuaworMTk3ODQgZmE4OTA2ZWNkYjcwMjQ1OTUwZDhlZmQ3M2UzYTYwZTU2NmZkODQ1ZCBsZWdhY3ktdHJ1bmsKKzE5Nzg1IDIwM2FkNmYzZWY4Y2UxMmUyYmZhMTkyYmNiZGYzOTlhOTlhNmU0Y2MgbGVnYWN5LXRydW5rCisxOTc4NiBkYTYzOGM0ODRkMDhjNjNkNjU2NTZlYTU5OGU1ZGFjY2EwYjAzMDk3IGxlZ2FjeS10cnVuaworMTk3ODcgYTQ2YTEzMjAxZWViODg0NGMxMzkyZDcxMmYyMGU2NDVhYTNlMWY5MCBsZWdhY3ktdHJ1bmsKKzE5Nzg4IGYwN2ZhN2Y1MjYyYTkyZmRjNDUzZTdiZDhhNmM2MDRkZjg1MzFhMzcgbGVnYWN5LXRydW5rCisxOTc4OSBmMjkwMjY1OTM3NGFjODhlODI0YjJiMmExYmI0ODc1ZjdjNjk2YzFiIGxlZ2FjeS10cnVuaworMTk3OTAgNDkzNDEwMjIyNzE5MmVjYjY3ZTIyYzdjYTc5YzczNTE2NDIwNjBmZSBsZWdhY3ktdHJ1bmsKKzE5NzkxIGIwNDU2ZDNhMGYxZjFkM2VjNjMyZGYxNmIwYjNhZWIwZmRkODkzMzkgbGVnYWN5LXRydW5rCisxOTc5MiBiYjI1ZjJiN2JkYWUwM2I4YzQxNjFmZWZhMzdmMGQ5NmE4YzA1NTM4IGxlZ2FjeS10cnVuaworMTk3OTMgNmQ1OTgxN2NmNzkyOGViZWI1Mzk2YmU0OWY0YmZkMTE2YjM4ZWM0ZSBsZWdhY3ktdHJ1bmsKKzE5Nzk0IDQ5MWZiNDliNDZlNmZkZWQ5NjU4NTgyYTliNGY4OWVhNWZjZGUyY2YgbGVnYWN5LXRydW5rCisxOTc5NSAwMDQ5ODVhNWFkNWE4MDYzYTU5YTg1MTgwOThkNTk3MjI5MTY5NjliIGxlZ2FjeS10cnVuaworMTk3OTYgNDE1MjA1YjJjZGIyZGRjZjI1MWFmOGE0NGY5NmJmNDk4NzE5OGY1NiBsZWdhY3ktdHJ1bmsKKzE5Nzk3IGI1ZGIyM2M3YTgwNGExOTJiYWJkYjBjZmVhZjJlYzJjYzc5OTQwYzAgbGVnYWN5LXRydW5rCisxOTc5OCA1YWI0ZGE2YWQ0ZmM3YmM4ODQwYzZiZGY0NmI3NmFkNGVjNjlkYjliIGxlZ2FjeS10cnVuaworMTk3OTkgYjBhOTgyYzkxYWYwMTMzZjM2NWFkNGYyNjBhYjY0Njc1ODgzYmQzMiBsZWdhY3ktdHJ1bmsKKzE5ODAwIGZhYTdhYWViMDIxMGRmOTE4YzBjZjJiOGVhMTRlMzNhNjNhM2VmNzkgbGVnYWN5LXRydW5rCisxOTgwMSAzYzY1YmFiZjMyMmZiM2M1ZmFkMzZkNzJjYTE2ODg2ZjMyOGI5NGQ3IGxlZ2FjeS10cnVuaworMTk4MDIgMjU0OGQxYTcwMTgwMDJmNWE2NjYxZWRjZjQyYmYyYjJjOTJkZTIwNSBsZWdhY3ktdHJ1bmsKKzE5ODAzIDAyZTA5N2Y3MmQ0N2IwYTNiNWM5MzUyODQ2YTlkNWZhZDYwM2I4M2QgbGVnYWN5LXRydW5rCisxOTgwNCAzYTJlOGEzZWRlNDgxOTM5NDY2NTdlNzhjM2U0NDBiNzdiOTZkNGYxIGxlZ2FjeS10cnVuaworMTk4MDUgOWM5MjFhOGVkM2E3MjNiODRkYmY5ZDhmOTE3Njg4MjlhZGI5ZGRmZiBsZWdhY3ktdHJ1bmsKKzE5ODA2IDUyYTNmODI2MTdjNDBjN2U0ZmUxZjFmNWVmOWM5ODM2NzcyNTA0ZjQgbGVnYWN5LXRydW5rCisxOTgwNyBhYmM4YzZjMDI1Y2U4MzcxMTk2NDcyOWJlYTZkZjJmOThlMWRiMTY4IGxlZ2FjeS10cnVuaworMTk4MDggYjA0NmEzMWFmMmUwNmU4M2ExMzI3M2U3NzA4ZmI2MzVhNDYxNDEyZiBsZWdhY3ktdHJ1bmsKKzE5ODA5IGViNGVkOWYyM2QyMDY5OGU1MWE2MTVjNmY4ZGNlNGYwZmFmOTFkNmMgbGVnYWN5LXRydW5rCisxOTgxMCA5NDY4M2M4NWVjNzZlNmQxNjA0YzA2ODRhZmQwZjUzN2Q3YzNmZDNjIGxlZ2FjeS10cnVuaworMTk4MTEgOGM2NGRkYTFkMjZmMzBkZWFhM2YwZTZlNjM4M2E3ZTdjZmI2N2Y0MCBsZWdhY3ktdHJ1bmsKKzE5ODEyIGI4MjU5YzdmZjQ5YzliZGViNThkNjI2YWFhZTViMzVkN2E0NzkwN2UgbGVnYWN5LXRydW5rCisxOTgxMyA1ZDdlMGVhMzE4MTgwY2ZiMDRiZTk3MTg3N2NiN2U2ZTgyMWZlN2IzIGxlZ2FjeS10cnVuaworMTk4MTQgMDlhZWM2NjhkZjNhZTI4YzI2ZmUzZGE4YWI0NWJiNTU3MGFmMDQ5MiBsZWdhY3ktdHJ1bmsKKzE5ODE1IGMyOGRmZTVmODdhNzNiZTE5MDhjODdlMTk5MWU2MmE3YTQ1ZWJlNmIgbGVnYWN5LXRydW5rCisxOTgxNiBhMDE1YWVkM2ExYWMxMDk4ZmUzNGU0NTkxNjkxMWMwNjRmNGQzNTQyIGxlZ2FjeS10cnVuaworMTk4MTcgYWY4MTBmMDg0MjViZWYyNTQ4YjVmZmI1MDg3N2FhODE2MjAzYTU1ZiBsZWdhY3ktdHJ1bmsKKzE5ODE4IGU5NDQ1YzUxZmYyOWY2OTIzMTY2NzA1ZWMyNjBhM2RmZjQ0NmUyMTUgbGVnYWN5LXRydW5rCisxOTgxOSA0YmFhNWE5NTU1MzJhZTU1YTg4MWQ1Y2I0NTA0NjEzMjQ5ZGM4MTg1IGxlZ2FjeS10cnVuaworMTk4MjAgOGE0Njk2ZDdmNzRjMGMyMWU2ZWZmZmM2MzgyYmQxNzlkOWZmNTMwNiBsZWdhY3ktdHJ1bmsKKzE5ODIxIDMxZTMwMmU5NGRhODgxYjJkZTNiN2RhODJiOGM3NzcyZmQyNTRmMDEgbGVnYWN5LXRydW5rCisxOTgyMiBiMjUxMzFiYzZlYzdjODgyNTQ3MTUzOTk5ZThkZWE0ZWY1NzA5ZGUwIGxlZ2FjeS10cnVuaworMTk4MjMgZmFhNTJmMzg0YWY2NTI0OGRiNGJjMjYyZmIyMDczYTE4MzMxMzgxNSBsZWdhY3ktdHJ1bmsKKzE5ODI0IDA5YmExNWVlMTk2MWJhMzM1N2RhOTE5NzJjMjRlNjE1YTM2ZDQ2ODIgbGVnYWN5LXRydW5rCisxOTgyNSBiNmMwY2ZiMWVmZWFjY2M2Njk1YjY2MzViZjZhMDIyYjFlMWY1OTg2IGxlZ2FjeS10cnVuaworMTk4MjYgZGZlYjNhZTY5MmMxMTE5ZWQ3MDkxNDA5MDMyMDBiNDM1Mzg2OWM3ZSBsZWdhY3ktdHJ1bmsKKzE5ODI3IDgzMmU0MDkwOWVmNDg0ZjRhZGYxMTA4ODk5OGJjOTM2ZjgwYjczNzcgbGVnYWN5LXRydW5rCisxOTgyOCA5ZmQyMGNhZTdiNzY2NzU0YzU2YzdiMjQ4NDJlZmU3OGM1NDUwNTQ5IGxlZ2FjeS10cnVuaworMTk4MjkgYzdjNTM1MzYxNDY3ZDQ5MDFkMTk1YmI5ZTBmOTIyZDY4Y2Q3NzdiOSBsZWdhY3ktdHJ1bmsKKzE5ODMwIGFjZDUwNjA4NDcyN2U3MzRkODdiMzAyY2NmYjZmNmNmOGZmZDE5MGUgbGVnYWN5LXRydW5rCisxOTgzMSBhMWIzNDQ2YzcyMGYxYTRmZjc1OGUyZTE0MWEwZjAzZmI3ODNhZThmIGxlZ2FjeS10cnVuaworMTk4MzIgY2Q2ZTRiYzk5Mjk1Yjg1NWZmNDc1YThjN2YxOGVmNzEyODE1YTg1MSBsZWdhY3ktdHJ1bmsKKzE5ODMzIGU1M2IzMjg0NTIyNGU3OTMxOTUyMTZkYTg2NmI2NGFmYzViNDg1ZWMgbGVnYWN5LXRydW5rCisxOTgzNCA5MTIzMWJiYjM4NDJmNDc2ZjA4YzZlM2Q4YWJmMGUwYTg1MGUwOTQ1IGxlZ2FjeS10cnVuaworMTk4MzUgYjgzMjBhMjZjMDY1NzZkNzM4YTVjMDQ0ZGEzZjQ4YWYwYTYxZDMyMSBsZWdhY3ktdHJ1bmsKKzE5ODM2IDBkNGU4MDZjNDJjY2JkM2VjMmJhMzkzMzU4ZWNmYWM5OGNhODllNTkgbGVnYWN5LXRydW5rCisxOTgzNyA2MDJlYjA0NmIzZTdkMzQ0NDc5NzIyMTE3YzFlODEwMThkZjMyNDI4IGxlZ2FjeS10cnVuaworMTk4MzggMmMyOTBkNGMzYjM4MmY3YTg3ZmI1ODYzY2Q0ZjRhNWYyMWQ4NWZkOCBsZWdhY3ktdHJ1bmsKKzE5ODM5IDZmNDJjMWQ1NWU2YWYwNjg0MDFmMWE0NGUwZjUzOTQwODEwYzllMTQgbGVnYWN5LXRydW5rCisxOTg0MCBlYzI5ODk1ZWU0MGNmZDI2MTFmOWY1NGE3MDQyNzNlNmEyNjMyMjAwIGxlZ2FjeS10cnVuaworMTk4NDEgMzhlMTdhMDg5NDkyOTA2NGYyNzU5ODAxY2RmZjczZDA1MTMzNDY4MyBsZWdhY3ktdHJ1bmsKKzE5ODQyIDZiYmUyNjhmOGFkODQ5MThjZjRhYWJiNzI3MjcwMDE4YTM0N2IzN2YgbGVnYWN5LXRydW5rCisxOTg0MiBkMGM4MzBkYjVlNjhlZGQ0YWFhMzQwMTIxNmU2MTBjOWZmMTQ1ODI2IGxlZ2FjeS10cnVuaworMTk4NDQgOWE5ZWFlY2YwZmQ4MjkyNmJkMjMwMGU2MWViOWQyY2JlY2Q0OTk3MCBsZWdhY3ktdHJ1bmsKKzE5ODQ1IDcyM2NmNWUzNzhlNTdkYmQyZmFlZDg3YzdiN2IxZDQ1YzU5Njk2ZmMgbGVnYWN5LXRydW5rCisxOTg0NiA2NDUzMmJhNWRjZWQ1ZGZmM2U1YzUyODk1Y2QyZmYzZjVjODI4ZDFkIGxlZ2FjeS10cnVuaworMTk4NDcgYjgzYTNiNzgzMTRlYjg5MzE5OTNhNWVmY2RjYzI1OGZjYWJmMmRmNiBsZWdhY3ktdHJ1bmsKKzE5ODQ4IGQ4ODhkYzdiZWEzMmViZjUzMTgyNjU5YmQ4YzQ2MWZlMjYwYWViMmMgbGVnYWN5LXRydW5rCisxOTg0OSAyZGZlZTMzM2E2NTEwMDYzNzgwMjZkZmE2YjUzMzg3ODMxOWQwNGM2IGxlZ2FjeS10cnVuaworMTk4NTAgYTc5ZWJiYTY0NjZhNjM3YmYzNTlmYjgxNmIzYmU2MWY5NTcxNTc1NyBsZWdhY3ktdHJ1bmsKKzE5ODUxIGU2YzViYzViZWFiM2EwN2M3MWE0NWNlM2U0MGJmZDZhMGUxMDYzZTYgbGVnYWN5LXRydW5rCisxOTg1MiAwYjRjNTdhMjU5NzdlZGE3YTk3NTYxZWMxYzQwMTZlMmNkMWM5OWM2IGxlZ2FjeS10cnVuaworMTk4NTMgZDVlNTNjZjlkZTdjMzMwOTM2MmY0YzdkZTA2NzUxNzUxNzcyMTJhNiBsZWdhY3ktdHJ1bmsKKzE5ODU0IDJiOTM1NGY0ODUyZmFhYjA1ZmQ4MzczYzIwYTYzZmY4OTNkYjk0NjggbGVnYWN5LXRydW5rCisxOTg1NSBjMWUxOTQ5ZjM5ZmVhMjE1MmU1YmZmOGExZWFhOTBiNzNlY2EzMzljIGxlZ2FjeS10cnVuaworMTk4NTYgNjcwMmMwZGYxNmI2NjhhYTAzZGU3NmY4NGQzZmFjOGI1MWUxYTVlYiBsZWdhY3ktdHJ1bmsKKzE5ODU3IGM3OWRhYjY1MmVhODQ0MTNjOGMzNGI3NWY5MWQ2OGZhM2FjZDZjNjAgbGVnYWN5LXRydW5rCisxOTg1OCBkNmVjZTdjM2IzNWVhZjZhNWU5ZDc4ODk2MGZiZmY2NTM3N2RkOTkyIGxlZ2FjeS10cnVuaworMTk4NTkgZjVjYjZkNjZhOTc3YmRlMzMwODc0NGMwMGQxMjE2MjcyOTAyNTZlYiBsZWdhY3ktdHJ1bmsKKzE5ODYwIDFhNWEwM2UyZGE3Mzk2OWUyMjY1NWZlY2Q2ZTBjNTNkYThmNDM4MWMgbGVnYWN5LXRydW5rCisxOTg2MSBjNWE0MTdlOGQ4NGM4MzYzNzRhMjkwYzFmMDg3ZGVmODJiOTFjYzRmIGxlZ2FjeS10cnVuaworMTk4NjIgNjFjOWZhOTRjZTlkOWE0YWQ5YTE4MGNhNTg2YmU0OWMwZGQxMDFiMSBsZWdhY3ktdHJ1bmsKKzE5ODYzIDFjOTViNmIwNmFlMzFkMjdhNWFiNDE1ODY5NTJhZDA3OWE2NjgzMGQgbGVnYWN5LXRydW5rCisxOTg2NCA0MTUyODU1ZWY5YThiNjM1YTg0MTAxMGRmZTM0OTU3YWY1ZTExZmQ4IGxlZ2FjeS10cnVuaworMTk4NjUgYTk3NWYyYzE1NGMwNjA0NTk5OTEzYjYzY2UxZjFhMTFkNzZlYWQ1OCBsZWdhY3ktdHJ1bmsKKzE5ODY2IDdjN2NjZmI1ZGIzZWYxMzc1YmM2NzA3ZDhiN2ZlNmMyY2MzMjRiNzYgbGVnYWN5LXRydW5rCisxOTg2NyAxZGRjNzBkZDFkMWJiYWQwMzE5ODhiYzM1MzYxNjIxNDdlODAxMTZjIGxlZ2FjeS10cnVuaworMTk4NjggODYzMTg3MzNmZTcwOTM1OWZhNzE5OWNkYTZiZjExYWU2NDBmNGQxZSBsZWdhY3ktdHJ1bmsKKzE5ODY5IDQ1OWM4ZWYwYTAxMDM1OTgzNDljMDUzM2RjYzVmZDU2MzI5NGZkNDYgbGVnYWN5LXRydW5rCisxOTg3MCA5MTA0ZWQzOGFjMDUxYzlkNTA5MWFkYzJkMTk5YmU5NGY1NzcwNWFkIGxlZ2FjeS10cnVuaworMTk4NzEgNDFiOTI0OWU0ZDQ4NjNiZDVhYTJiYWM3NjJhMzU4NzkxNWIzY2ExMCBsZWdhY3ktdHJ1bmsKKzE5ODcyIDg2ZmQ3MjNmMjkyODZhMmMzZmQ3MzY3Mzc3ZjcwN2JmODg1NTIxNmYgbGVnYWN5LXRydW5rCisxOTg3MyA0ZjlkYjgzNDgyNWNhYTBjM2ZkOGIxNmVkNjdmYjc5YWNlOTkyMTUyIGxlZ2FjeS10cnVuaworMTk4NzQgZWVlN2QwYzVhZTU5MmFmNGRlOTUwZmI3MmIzNjIwOTRjMThiYTUyMyBsZWdhY3ktdHJ1bmsKKzE5ODc1IGU1OWVkYTUyNWZjMWU3YjUyYjc0NWViM2Y4ZjBhMGZjZGMwYmNkN2MgbGVnYWN5LXRydW5rCisxOTg3NiAyZGMzY2ExZDg5MGM3NzMxN2U2MzRjZGI2NTVhMDMzYzE5YTE0NDc1IGxlZ2FjeS10cnVuaworMTk4NzcgZjNmYjA1YmZlZWViMTM1YzZlOTI2NmY2MTBiYmUyOTY3YTI1ZDI3OCBsZWdhY3ktdHJ1bmsKKzE5ODc4IDUzNGE5M2Q4MmVkY2ExYWRmYjBlOGUwY2U2NmE4MDE5ZDYyNzMwMzggbGVnYWN5LXRydW5rCisxOTg3OSBiN2IwNDhkYTE2NzM1ZjA0YzE2MGMxZDYxMjE4MjJhYjZhMTVjNzI4IGxlZ2FjeS10cnVuaworMTk4ODAgNTQ4NzE2ZTJmMWYxM2MzOGI4YjVmYWQ4MmFlMDBmODM4ZTAzNjQ3MCBsZWdhY3ktdHJ1bmsKKzE5ODgxIDNiNDk0YzVjNjIzNGRlYWQxMWEzNWI4Njc2MTM5ODI0ZDQzYzhiNjkgbGVnYWN5LXRydW5rCisxOTg4MyA0YzE3Y2IyYzYyMWU5YmQwOWFiYjdiYjIwOTA2NjYxZGU5YTBhMmU4IGxlZ2FjeS10cnVuaworMTk4ODQgYTFkZDBiMDcwOWQyMDYzZmYzZmY2Y2U3ZDUwN2FiMDU1OTI0NmNhYyBsZWdhY3ktdHJ1bmsKKzE5ODg1IDk5ZGU0YmYyYjllNTUxOTNiMjgwYTcwY2E5ZDA5YjJlZTBhMzJlZmQgbGVnYWN5LXRydW5rCisxOTg4NiBkNTZkNzdmOTM3M2JkZWY5OWJiM2JmZjgxMDlkM2ZmYjIyMTAzOWUwIGxlZ2FjeS10cnVuaworMTk4ODcgZGI1NTYwNDM1M2IzYTJhNGRhMmM5MzZjMjE3YTYzNjZhOTgxNjU2OCBsZWdhY3ktdHJ1bmsKKzE5ODg4IDhlYWY3NGExMTFlYmQ5MjA1OTgzYWU4MTJhNzExOTMzODAxY2Y3NDYgbGVnYWN5LXRydW5rCisxOTg4OSBkMTVhY2UzMjExMDI2NmY2ZTNkNTAwYmE5OGI0ZjAyOTk1OWYyNmRmIGxlZ2FjeS10cnVuaworMTk4OTAgNmJkZjU2M2M3NjNiM2E0ZDAzMzc3MGM5N2E2YTUxNWEzYTkzZGY2NyBsZWdhY3ktdHJ1bmsKKzE5ODkxIDNjNjUwZDljMzhlNzRlZWFjM2ZlNDBmN2JmYzY3ZjgyN2U0NWM0OTQgbGVnYWN5LXRydW5rCisxOTg5MiAxOWMyZjUwZTUzOTU3MWM0ZWY5ZGE1NzJjNjg2NjkxYjY1NjZjMTViIGxlZ2FjeS10cnVuaworMTk4OTMgM2Y1YTU0YThhMWZiNTA1ODk2N2EzZjBiMGRkZmQ3ODA5YWFhYWM0OCBsZWdhY3ktdHJ1bmsKKzE5ODk0IDdhMzZmNjIwMWM5NDAwNzJkMmYzNjFhY2I4MDJhOWM0NGJiY2I0ZjQgbGVnYWN5LXRydW5rCisxOTg5NSA4OTU0NmJkZGMyMmNjMGRlZWYxYjRkYzY2YzI2NDAyMGM5ZTM0MjNkIGxlZ2FjeS10cnVuaworMTk4OTYgOTUzYzUwZjEyMTg0YWFlMmM0MDIyYjRkYmJkMjY3NGI0NGUxZTU0ZCBsZWdhY3ktdHJ1bmsKKzE5ODk3IGYwZWZkY2QyNDUxMmZiOGQ0YjRiNGYwZTA2MDMwNzc5MGFjNGZhYTIgbGVnYWN5LXRydW5rCisxOTg5OCBjZDdhYzRkOWFkZDAyMDc5YTI4Yjk3Mjg2NWJmN2RiOTM4NTkyYTRmIGxlZ2FjeS10cnVuaworMTk4OTkgZTIxZDRjMjA1NjVkMDBjYTQyNDczMzQ0YTUyOTg0YTM3ZDA2ZWU2YyBsZWdhY3ktdHJ1bmsKKzE5OTAwIDNjZmJiY2JmNzEzNGQxMTdiODIxMzgwZmIyYjU1NmRiYTlkZWNhNTMgbGVnYWN5LXRydW5rCisxOTkwMSA5NzFmZjZiNThlZGJmYjdlNjZmYjUxNGVlMjgxNDgxOWM4YzJlMGYzIGxlZ2FjeS10cnVuaworMTk5MDIgZjQxNDZjYTBmMjkyMWUyMGI0ZDc0MmM1OGY3MzFmMTgxMjgwODUwMCBsZWdhY3ktdHJ1bmsKKzE5OTAzIDJhODAxOTFkMTIwMzBlODM5ODFiZDA3OWEwM2JiYjUyZjEzNmZlMzEgbGVnYWN5LXRydW5rCisxOTkwNCA1MWM2YTJjYjAzZDFiNDE5ZTFkNGE2YTdhMzFhMzhiOTMzMGNjODQxIGxlZ2FjeS10cnVuaworMTk5MDUgNjVhNjM4YTI0ZjdlOTU0ZjQ4MDc3YmJlZDM4NTcwNzRiNjMxYzk3YSBsZWdhY3ktdHJ1bmsKKzE5OTA2IDNlYzUwMDQwM2YwMTBkOGVmZDU0MzA3MWNlZWVhMzlkMWQwMjdjNTggbGVnYWN5LXRydW5rCisxOTkwNyBiNDBhYjMxMDU1MjFmMTk0NWNkZGI3NWM5NmNhYWM1MzMxMzMyOTFjIGxlZ2FjeS10cnVuaworMTk5MDggMWU1OGQ3ODJjMDlhYzlmM2ZjMTM1Yjk1NDBjM2M3NWNkOGM1OWI5MyBpdGVyLWJyYW5jaAorMTk5MDkgZDU4MTFhZjhhY2YzZGQ0ZTMyOGJkYmQxNmI3MjgxYzdkYWFmODQ0OSBsZWdhY3ktdHJ1bmsKKzE5OTEwIDUzM2NjOTA3ZWRiZDJjYjYxMzc5ZGQ3NTA0MGYwNWEwODcyNTBiMzAgbGVnYWN5LXRydW5rCisxOTkxMSBiYTgxZDc5ZGMzYTMxZGFmNTcwMWY3ZmUyNGYyYWZlZTM5YTQ5NGQ1IGxlZ2FjeS10cnVuaworMTk5MTIgN2UxZTY3MjU1MDllNmM1OTcxYzllOTRkODJlNGRjZjc5NDJkNDdkNCBsZWdhY3ktdHJ1bmsKKzE5OTEzIGFkNzQxNzQ1Y2I2YzA5NDE2MjZmY2E1NDA0YjMyYWVlYTQyYmNhNWUgbGVnYWN5LXRydW5rCisxOTkxNCA4YTM0ODMwODMxNmQ1NDRmYjA2ODFlYzQ5NDhhZDgxMzJkMDZjMjdlIGl0ZXItYnJhbmNoCisxOTkxNSA0MjBhMDc4MWJiOTJmN2M2MDExYzdlODhhNjgwMjFjYzFmNjU0NGNmIGxlZ2FjeS10cnVuaworMTk5MTYgYzFlZGIxNGYwNDNiYmI3MzJhMmVkMjQ3MWMwNjllYWJlZTc0MmNmYiBpdGVyLWJyYW5jaAorMTk5MTcgNDBhZDBhMDc2MWQyNGZhNjU0YjAxNWJlZDg3YjE0MGQ3YzZhZjIyOCBpdGVyLWJyYW5jaAorMTk5MTggZjM5NGFmOGM1ODBmMDU1MWU0NjA5M2FhZDJkNDk1OWE0N2U2OTBjMyBpdGVyLWJyYW5jaAorMTk5MTkgNjJmNzRjMjU5NzYyZGZlNWU1ZWQwNDgzYmNkMjBiNjRhOTIxMWQ3MyBpdGVyLWJyYW5jaAorMTk5MjAgM2Y1NTg3YzI4YTUwZjkxM2E3YzBkMDVjYmVkZGQyODhlMjhlZDY3YiBpdGVyLWJyYW5jaAorMTk5MjEgZjRkNDk4YTlkOTg5MDNmYmMxNjgxMDAyZGUxY2UyOGJmMDEwYmUyNyBpdGVyLWJyYW5jaAorMTk5MjIgNTI3OTdiNGIzNzViYzk0MjZjZDFiMDc0MmVhYmRkMmVlMzk1ZDM4MyBpdGVyLWJyYW5jaAorMTk5MjMgZDI3Zjg0NGY2Y2ZlNTYyZTI3M2E1OGUwOTk2NDhkY2UxNjZmZmY1ZCBpdGVyLWJyYW5jaAorMTk5MjQgOThhMmJiOTA1MjBkNmNmNWUyODMwODg3NDhiYjUxZmI4NWQwMjhmMSBpdGVyLWJyYW5jaAorMTk5MjUgYWZiMzNmZWYxNGNiOGUzNmU0Y2Y0YmE4ODE4NGYwNTFlMmY2YThhZSBpdGVyLWJyYW5jaAorMTk5MjYgM2E4NjY2ZTEyOWFkZjllYjZlMGM2YjA0OGQ3YTRlYWJiNDE3OTFjZSBpdGVyLWJyYW5jaAorMTk5MjcgMjIwYjYyNzM4ZDc0MjgxMzM5MDJjNDNlZDJmNTAwYWY2MTVmOGY2MyBsZWdhY3ktdHJ1bmsKKzE5OTI4IDVkNjhhZmM1MjI3YzkxYjFiZjNkZjJhYTY5OGMxOTIxNTExODE2NWQgbGVnYWN5LXRydW5rCisxOTkyOSAxNzJkMmEyODE2YmZhM2EwYWZlYjEyNmYwYmUwMzU3ZjQyODk0NTEyIGl0ZXItYnJhbmNoCisxOTkzMCAwOTViODBkMmU3ODVkOWY5MjBjOWViMjQ0ZDJjNzJmNjllZjNlODJjIGxlZ2FjeS10cnVuaworMTk5MzEgMmVkN2M1ODk0M2U2MTEyYWYyNWY5YmFhN2RjY2Y4NGE3MWU4ZThjNCBpdGVyLWJyYW5jaAorMTk5MzIgYzU3YTFiNjc4MWIwNGZiNDUxN2QzMWVhOTg3YTZhZjMwNjg3YzQ5NyBpdGVyLWJyYW5jaAorMTk5MzMgN2JiMTI1NmI1MDZkYjQ2NGRlOGFjOTk0NGNmYmI0YjExZjY1N2IyNSBsZWdhY3ktdHJ1bmsKKzE5OTM0IDMzNzVhMmE5OGU1NjZmZDEzZTQzYzJiYmY2OWJmODM3YWRjZDE1ZGQgbGVnYWN5LXRydW5rCisxOTkzNSBlYjQzNjZiM2UzOTFhYTkwYzNjODM3MTM1NTg4OTBjYTUzOTVlMTFjIGxlZ2FjeS10cnVuaworMTk5MzYgNmNhNzJkNzE1MzZlMGM3ZjFkZWViODRmNjc4NTcxODNkNDEwYzkzNSBsZWdhY3ktdHJ1bmsKKzE5OTM3IGZmNzVjMzgyZjBkMzJlMGY3MmQzOTAzZGRiMWE4Njk2ZTE0M2Q1MDIgbGVnYWN5LXRydW5rCisxOTkzOCAxZjcwMGE3MjA2YjJmYzQ0ZmIzYTcyZWMxZDk0YjE2MjBjZGFhMDEwIGxlZ2FjeS10cnVuaworMTk5MzkgNWU2YWI5MzliZGJjYzRkYTZjNGVkZDA0Yjk5NzlmYzllOGM3NzA5MSBsZWdhY3ktdHJ1bmsKKzE5OTQwIGJkNDBiMTNmYTVhYmZhYjkzZGE0YTM1NWE2ODUzYWZlMTA2YjM5YmUgbGVnYWN5LXRydW5rCisxOTk0MSA3ZWI1YTZlOGM5OGQ0NTBjY2JkMzhiMDlkY2FmNjc4NWQwNzk4MTZhIGxlZ2FjeS10cnVuaworMTk5NDIgN2E0MTc1ZTEwNjI2Y2Y3NDk4YzM5MjhkNDExZTU1OGY4OTczNTEzNCBsZWdhY3ktdHJ1bmsKKzE5OTQzIGQ1OGU5M2RhZmI5OGMyZmRkZGY1MDUxZWYzNjgzYTZkYTA3MTNjNjIgbGVnYWN5LXRydW5rCisxOTk0NCA0ZTZmMTRlNzU1N2U5OTAwNTQ3NmM0YTA5MGJmZjEwODFkNDJkZDNjIGxlZ2FjeS10cnVuaworMTk5NDYgOTBlNDA2NGNhMDQ1ZWNlOGQxYTk4NTAyZDgyYzdmMDA2ZGVkNGVkZSByZWxlYXNlMjAtbWFpbnQKKzE5OTQ3IDQxNWExOWJiMTY3NWM0Nzk0YzE2OGM2NGViOGQ0MjUyZGJmZjUxYTggcmVsZWFzZTIwLW1haW50CisxOTk0OCA3NDMyOTZjZTA1MmIxODdhYTA3NDMwYWZkZWE1NDYwNjhjOTNhNjgwIGxlZ2FjeS10cnVuaworMTk5NDkgMTRiN2E3YjhkNThkYmJmMmE0ZGUyZGJiMTg0ZjYyMWU4NWI3MjQ5MiBsZWdhY3ktdHJ1bmsKKzE5OTUwIDc5N2ViYjcwMzNkNzI2ZWYwZTkyOGVjNDhiOWFhZWE0MTQwZjdlYTAgbGVnYWN5LXRydW5rCisxOTk1MSBhMTA2NmU1YTEwNjVjYWQ0MTZlZjRjMWJhZmY5ODRjMWRlZDM3MDJlIGxlZ2FjeS10cnVuaworMTk5NTIgZGMwZjYyZTc1ODhiM2U4OTVjZGQ0ZDgzNDhiMTY0NzY2ZmM3ZDI1NiBsZWdhY3ktdHJ1bmsKKzE5OTUzIDNmNTI3NmNiYmM0ZGEyNDRhYWZjNDhmOTI5ZWM2NWUyMWFhZjliY2UgbGVnYWN5LXRydW5rCisxOTk1NCBhNTgxNGY2MjBlODZkOWE3MDNkNjk3YzlmMDJjZGQ4OGM4YzE3YjllIGxlZ2FjeS10cnVuaworMTk5NTUgMzNjODY4MGIzYjM1NDA0NmQyMzI0YTg2YzE3ZmMyYWQ5OTkwNTJhOSBsZWdhY3ktdHJ1bmsKKzE5OTU2IGQ3ZTAyYjllZTE3OWMxZTQzYWRjZmQ0YTlkYWM5ZDc5MDIyNTA3MmQgbGVnYWN5LXRydW5rCisxOTk1NyA1NDY5MjJmYThkOTk0OTBhMzQwMjNkODZlZjcxYTFjYjYwYjJlY2E0IGxlZ2FjeS10cnVuaworMTk5NTggZGQwNGJiZmQ1YTc2Y2VlYWEwNTJkNDEzMWEzMmY4Y2FjMWYyODVjNyBsZWdhY3ktdHJ1bmsKKzE5OTU5IDJjMWJlNzkyNGIwNGFmYWY3NGJhYzdjM2M3N2UxMjA2YmU0NTgzNmIgbGVnYWN5LXRydW5rCisxOTk2MCAyNmNkZWQ1OWMxNzI1M2Y5N2M2NWUxNGQzYzcyNDkwZTJmM2RmYzEwIGxlZ2FjeS10cnVuaworMTk5NjEgZWI0YTVmZjBmNzJjYzg1MzcyOWRjOWJkZjM3ZmMyMzNhNWVkM2RkYyBsZWdhY3ktdHJ1bmsKKzE5OTYyIGVlNjc5M2FlMDZjMTRlMDAzODcyOGI2NGYzY2NmN2ExZWZmZGUxMjMgbGVnYWN5LXRydW5rCisxOTk2MyBiNjUwZDdkYWE1OTNjYzk2YjIzMzAwNmIxMGMxOGM3YjNjYzg2MTgzIGxlZ2FjeS10cnVuaworMTk5NjQgYjQ1YWU4YzQ2N2FhZjQ0ZDBhZWJjYzgyMjcxMDI0NjcxNjU3ZDc3NCBsZWdhY3ktdHJ1bmsKKzE5OTY1IDQzMTcyODg5ZThlNjZiMTg5OGM1ZWYyMjc2MzQyOTUxYjc3YmI2YWYgbGVnYWN5LXRydW5rCisxOTk2NiA0NjJiOGRmZTg3NTM5MWU5NjMxNjA5NjI3Y2Y3OTVjYjBjZmE4MWQ0IGxlZ2FjeS10cnVuaworMTk5NjcgODMyM2IwOThjNmNlMGIxYzYzMTFkMmFlNTNkMjhjYzE4YmQ0NDRhYiBsZWdhY3ktdHJ1bmsKKzE5OTY4IDkwNzlmNzBhNWI4M2Y5ZjIyOGU1ZGE4MjQ3ZDY2MDQwZGNhNTdjMGQgbGVnYWN5LXRydW5rCisxOTk2OSA4NWQ3NGYwNDA3MTJlNjRkYTUzMDk0OGZlYzBjYWRhYzA0ZWUxODc1IGxlZ2FjeS10cnVuaworMTk5NzAgZjdlMmMzZDljMzg3OTFkMzE3OWNiNTRhMzQxMWEwNTZjYmU4YWU0ZCBsZWdhY3ktdHJ1bmsKKzE5OTcxIDdlMTgxZWJhNmI5YmQ0ZDgxNGI5NGIwMTFlMDk0MTM1ZDZhMTNkNWIgbGVnYWN5LXRydW5rCisxOTk3MiBiYzA1NTViZTIyMTIzYTRkNWE4ZGMzMjRjYjVjYzE4ODdkNDc4MjQzIGxlZ2FjeS10cnVuaworMTk5NzMgNTJjYjBjNWZkZjIzODA5OTI4MzkyZDMyMzQ2MWFkMWM2YTIyY2UzMyBsZWdhY3ktdHJ1bmsKKzE5OTc0IGYyNzE3YjAxMzdkMDcyNzRkZWFhZmE1MDFmNzM1OWEyMWI4MDljMjggbGVnYWN5LXRydW5rCisxOTk3NSA2NDM0ZGM3NzZjYjk3NWEyYzM1OTUwNjRhM2Y3ZGI5MDBmYWNmZDE3IGxlZ2FjeS10cnVuaworMTk5NzYgMTM4MGE1MmYxYTIxODYyOTBmOWVhNWNjMjU5YTI5Yzc4NTc1MjdlNiBsZWdhY3ktdHJ1bmsKKzE5OTc3IGNlOGFjMzdkYjMwMGE1YTc0MDQ4Zjg1N2IzOWJiNDVjNDdkMzY0MGQgcmVsZWFzZTIwLW1haW50CisxOTk3OCA2YTUyN2JlNGM0ZDE5MDdkODRkOWViNDM2MjBlNTY4OGYzYzhmZjk1IGxlZ2FjeS10cnVuaworMTk5NzkgM2YyMjgxZTI0ZTJkYzRjYzlhNjE5OWY0ZDk1N2E1ZjA0NTM0MjcyZCBsZWdhY3ktdHJ1bmsKKzE5OTgwIGMwNjRjMGQzYzQ5YjkzNjIyNDlmNmQxYmNkYjRlNjZlY2U1MDY3M2MgbGVnYWN5LXRydW5rCisxOTk4MSA3NDA0Njc4MjA3MmQ2MDhjOGFjMGQ3OWNjZmY0OTk4ZTlhNzgyYzQxIGxlZ2FjeS10cnVuaworMTk5ODIgYjFhYmIyNjIyOTc5M2RmN2M1ZmRkYmU4ZWI5MzMwY2EzZWE2MGRjOCBsZWdhY3ktdHJ1bmsKKzE5OTgzIDdlOTM4ZjBlOWE0OTc1NDhlODk5ZDQyYTZkNTg3ZThiNDY0NGM2ZWEgbGVnYWN5LXRydW5rCisxOTk4NCA3NzE5NjU1N2ZkMzE2N2NhZTQzM2RiODA5Y2E3NzUzMWMxZGI2MmQzIGxlZ2FjeS10cnVuaworMTk5ODUgOWNmZDljMzI5N2RkNDI5M2M2MDIzYzZiMGM1NGVhODcxODdhZjAwMSBsZWdhY3ktdHJ1bmsKKzE5OTg2IDQ1YWQ3YTQ2OGJhMmEzNTNiZmM2ZDZmMjQ4YWFiODVlYzZhODM1ZDcgbGVnYWN5LXRydW5rCisxOTk4NyBkZDVhMWIyODA0NDA3OWMwNjIyZjA1ZTcwM2NhZDYyNzQ0MGQ0YzM2IGxlZ2FjeS10cnVuaworMTk5ODggNTc5YWM4ZTM1ZjViNWU4Mjc3ODc3ZjU1NWQ4MzRlODk1MWUwNDQyMCBsZWdhY3ktdHJ1bmsKKzE5OTg5IDhmMzM5MjY5ZTAyN2Q2Zjg5MTZjM2YzZGVkNmM1ZDlhMDI1YmViNzQgbGVnYWN5LXRydW5rCisxOTk5MCBjMjE0ZjM3MjA2NThlMmI4NjUzNWYwODYyYmM5NzQ3ZGYwNjlmNDFjIGxlZ2FjeS10cnVuaworMTk5OTEgOTg5ZmVkMjhiNzRmMzNhNDQ4ZTA0ZjYzOWNkODRmNzMxYjQ3MjA3NiBsZWdhY3ktdHJ1bmsKKzE5OTkyIGQ5ZWU1NmI2ZGIyNmE1NDdmZDczZjhjNWVkNjhlNmVjNzlmMDk0MWMgbGVnYWN5LXRydW5rCisxOTk5MyBkY2Y3M2YxMGY3Y2NmMDNkNzljZGYxMWJkNDg5MTUxNTE4MDU2Mjg3IGxlZ2FjeS10cnVuaworMTk5OTQgOWJmMzc0OTMzODcyMDVhY2YzZGRiZWE3YzgwYTc0MGRmMmExZjNhMSBsZWdhY3ktdHJ1bmsKKzE5OTk1IGVkZGE0YTQzMjM5YmNjMzBiNTBjMjAzMDRlODhhNjdlYjc4NDIyNGMgbGVnYWN5LXRydW5rCisxOTk5NiBhMzhjY2UzZjQxYjQxZGZjMjIwZGEzNTZjNWNmMGE1MDY1MWVlNWExIGxlZ2FjeS10cnVuaworMTk5OTcgYTQ4OGE2M2NiODY3NGU2YjcwNDI0Yzk2NzAzMTgyZTRlNjk5OTllMyBsZWdhY3ktdHJ1bmsKKzE5OTk4IDhmZjI0YWJlYjM4ODExMGNiNGM1ODI3NTg1YWJjZGQ5ZWYzNDBlZDEgbGVnYWN5LXRydW5rCisxOTk5OSAxODIzZmEyMzE1MjE1YzA0ZTg1ZTBkNGEwMmQwZTA5ZDhiMWM0NDZmIGxlZ2FjeS10cnVuaworMjAwMDAgYWRjOGE0MWJlZTlmNjk3NjkxM2IyYjI1MTkxZTE5NDc3NmNlMjg5NSBsZWdhY3ktdHJ1bmsKKzIwMDAxIDMzZjc3NjlhMjE4ZWQ3YjU0ZjZiN2E4NWQ5YTU2MjViMDI4MDVmNzcgbGVnYWN5LXRydW5rCisyMDAwMiA3ZWI4YjI0MGRkNmM0YjAxNzc1ZmE4OWJjYjhlMGZhMzdjNTBlZWJiIGxlZ2FjeS10cnVuaworMjAwMDMgN2VkM2U3YTA4YTMxMDE5ZGM4MzkzZDcwMjRhNzFmNDMzMjdiNDc4ZCBsZWdhY3ktdHJ1bmsKKzIwMDA0IGJmNjc4YTExYzIxYWVjN2QxOWZiNzQ1OGU3MGMzM2EzYjg1MTM5YjEgbGVnYWN5LXRydW5rCisyMDAwNSA3NmVhYjJlYmNlNThhNDRiNDg4MGU1ZTJjZjNhMDIyMDlmNjc2Zjc3IGxlZ2FjeS10cnVuaworMjAwMDYgNDg2M2I1OTViZGFlODYwMDEyNDZlMTRiZjIxMzMzYjVkMTU5YWY5YiBsZWdhY3ktdHJ1bmsKKzIwMDA3IDZmZTEzZDAwOGUyNWY3YTkzMmUzM2NmMDE1MGVkYWM5MDZlMWQxN2UgbGVnYWN5LXRydW5rCisyMDAwOCBlMTIxNGY5ZTEyYTNjY2YxODY4ZTNmZDVmMjU4ZmQwMjc0N2NkYWVjIGxlZ2FjeS10cnVuaworMjAwMDkgZDMxYWRkOTlhODQ2OGNhOGNiMTMwMDUyY2RmNGQ2YWZhMzljMGVkYSBsZWdhY3ktdHJ1bmsKKzIwMDEwIDMzZDhkZDAyYWE5OTEyOTE5ZmU2MmJjNzgzYTYzZjg2NzNjYmVmMzEgbGVnYWN5LXRydW5rCisyMDAxMSBmOWEwN2U5OTkwN2U2ZWI5NzRlNDkzYTQ0ZWM1MjlhYWE3ZmMxYTE4IGxlZ2FjeS10cnVuaworMjAwMTIgM2I2ZWE0Y2ZlZWUwNjJlY2JiYzBmNDY4Njk0ZTk2NGNlZmEyMThlOCBsZWdhY3ktdHJ1bmsKKzIwMDEzIDg0OGYwODU1OTkxNmQ0YTczMTg5NmRmMzI4M2M0MDI1YTE0ZDFkMTcgbGVnYWN5LXRydW5rCisyMDAxNCA2NDZlYzJhNGQ3ZjRlMGNiMjc2MDkwMjg2MTI5MGY2N2M5OWRmNjhjIGxlZ2FjeS10cnVuaworMjAwMTUgOWU2ZTRmNWU1NjA0NWY4NjQzNTIyMjVkOWU3MGQ3YzRjNjNkNWMyZCBsZWdhY3ktdHJ1bmsKKzIwMDE2IGRhNmM2NjI5ODJiNjQ0NDNhYWUxMTlmOWRkNjE2MjU2Njk0NDMxZDMgbGVnYWN5LXRydW5rCisyMDAxNyBhODMwMWQ0ZWQyYjFiOTU4OTZlMGI3YTQ5OWU4ZWY4YzJiNzA2N2M4IGxlZ2FjeS10cnVuaworMjAwMTggMjA1NGNlYTM4NzU0YmQzYmFkYmNhM2ZjNDQwM2M0M2ZiY2Q0NmEzYyBsZWdhY3ktdHJ1bmsKKzIwMDE5IDFiODc0NWZhYTJlZDJjOWYxNGJlYWM1ZWNjMjViMzczMmY3ODdhNTggbGVnYWN5LXRydW5rCisyMDAyMCA1NGI2ZDI4YTY4NzhjOWIxMDJjNjhlZDRiZjM5ODM0ODFiMmU1YWJmIGxlZ2FjeS10cnVuaworMjAwMjEgMTE0NjA3MGY0N2VjNmI3ZWFjNDQ1ZDVjODY2ODlhYTU0M2UxOTc1NyBsZWdhY3ktdHJ1bmsKKzIwMDIyIDMyYmNiNGUyMTAwNTRmZjE4MmY0Y2I1MTI4NjM0NTA3OTIzNzU5ODggbGVnYWN5LXRydW5rCisyMDAyMyAwYjMzZmM2N2NhNGU0OWQ3ZTNhZjQ0Y2QwMTdiMDBkYTE3MzZmMzRmIGxlZ2FjeS10cnVuaworMjAwMjQgMWM5MGExY2Y3OTVjOTY4MGI3ZTQ3OGMzOGY3Y2FjOTJmYzFlZTI0OSBsZWdhY3ktdHJ1bmsKKzIwMDI1IDU1MjE4ZTA0OTViYzQ3ODRmM2JhN2VhNTQ0YzhkMTk0Mjg2MTNiYjUgbGVnYWN5LXRydW5rCisyMDAyNiBkMGZkNjBjNTlhZWZhZDBhOGVmOGViYjk4YjlmMjM0ZDk5YzdkZjVjIGxlZ2FjeS10cnVuaworMjAwMjcgMGZhMmMwNTE4OGEwYjc5YzZlOTJlNDA1NGU2MjdlOTVmOGE1Yzc4MiBsZWdhY3ktdHJ1bmsKKzIwMDI4IDIwNmE5ZjE5NzhlNTAwYTg2OWNmYTNmODIwNWZkNjA5YTY3ZGY1OGIgbGVnYWN5LXRydW5rCisyMDAyOSAyZWQ4NDVmODFiMGM1ZGY4ODQ4MTZkYTJmMDlhZGZlMDQ2MzM2MTFlIGxlZ2FjeS10cnVuaworMjAwMzAgODE2ZDg2MDAyNjgzMWIyNDA5ZGYwNjUzMzdkZDdjMDYzNjljMDIwZiBsZWdhY3ktdHJ1bmsKKzIwMDMxIDcyNDNkZWIwMjBlODdlMzJjMDc1YmJkNDE0OWU3OGI3Y2ZlMDVjYjAgbGVnYWN5LXRydW5rCisyMDAzMiBjOWI0ZWZmMTVkY2RhY2Y3OTA0ODQ1Y2I5ZDcwMGI0YTU1ZjI1ZDIwIGxlZ2FjeS10cnVuaworMjAwMzMgZjU4YTY1ZDRjYzIzNzgzN2VkNTRmNzNjNmIxNDQ0ODkxNTExNWM4MyBsZWdhY3ktdHJ1bmsKKzIwMDM0IGY0MjllZTk0NDhhYWQ0ZDJlYjM3NjQ1NTNjNzU1NGYzZWM0NzZjYzMgbGVnYWN5LXRydW5rCisyMDAzNSA4ZmIxMGFmZmI2MTU3YWNkZTU3ZWNmODIxZmIxM2I5N2U1YTAzZGMyIGxlZ2FjeS10cnVuaworMjAwMzYgYzJlNGJhM2M4NWNjOTJjYjgzOTI5MjA3MGFiYmZiN2E0MmVhMTYwYiBsZWdhY3ktdHJ1bmsKKzIwMDM3IGJiZjVlYTJhMjJlNTU5N2I5ZDdjNGRhNTk4NmU5YmZhYWEyZmQ5OWYgbGVnYWN5LXRydW5rCisyMDAzOCA4MzY4NDA0MzczZWNjZjI2MzdmM2ZiZTMwMDUzOWU2NTI0ZTAzMjFjIGxlZ2FjeS10cnVuaworMjAwMzkgZjA3YmM0ZjhkYjllNjk4N2NkMmY2Njc1ZmYyMzEzOTUyNzc2ZjA0OSBsZWdhY3ktdHJ1bmsKKzIwMDQwIDM0OWM4Nzg4NjA0ZTI5MzI0OWI5ZWVhZDkyYjNmZjBjMzFjNDI5ZjUgbGVnYWN5LXRydW5rCisyMDA0MSAyMDY4MDllMjViNTBkMmRkZTIzODhhYTgxOTI5YjllNTViM2UxZmI4IGxlZ2FjeS10cnVuaworMjAwNDIgNTA4MDdjNDY1MDM0YjY5YTIzYzI4NDY2ZGY3MGFlODYxZWY0MjQwNyBsZWdhY3ktdHJ1bmsKKzIwMDQzIGM3NGM0YmRjYjQxMTIyZjM4MDgzYTlkYWRkOTk2ODBkMzYyZTYxZDYgbGVnYWN5LXRydW5rCisyMDA0NCAyNjA4NjhjYWUxYTFkNWRmZDg3N2ZjNGYxZWZlODk2ZjRlNjRlZTlkIGxlZ2FjeS10cnVuaworMjAwNDUgY2U5MGY1NjdmYTQyMDJhNTljNGQ3YWUxMTcxYjllMDdjNzk1YjUzNCBsZWdhY3ktdHJ1bmsKKzIwMDQ2IDBiOGI2Zjg0MDZkY2ZiODA2ZDJlZDhmNTkwZWJmZjhmNDFlNmZiMDEgbGVnYWN5LXRydW5rCisyMDA0NyAzYjhhNWJiZmQyZTU3MjBkNmU5NjE0MGU0YzQwZDUwYmY0OTU5MWFhIGxlZ2FjeS10cnVuaworMjAwNDggMTU1MDg3MjI0OWU5ZTg1MTkzMTBmMWJmZmNjOWI3ODQ5ZDk0MDc2ZCBsZWdhY3ktdHJ1bmsKKzIwMDQ5IDFiZTBkMWM1NzgzNDAyNWRkNWQxYzMzNWQyYjA5MGZmNTA1NzE5ZmEgbGVnYWN5LXRydW5rCisyMDA1MCA4YzZmMjJjZWY4NzgyMmQ2ZTAwYWI2NWUxMWFhNjlkMmM1OWVmYWJmIGxlZ2FjeS10cnVuaworMjAwNTEgZjcyMTczYzc5M2I2ZDgzMmNiZTQ3N2Y2NjY1NmYxYzJkZTM0ZTk2OCBsZWdhY3ktdHJ1bmsKKzIwMDUyIDEwOTQwNTYxZTg5MWMxMDBjOTkzNWExOWZlNTI4NTEwYzA2Yjk3YTAgbGVnYWN5LXRydW5rCisyMDA1MyA3MjkxODkxY2IwYmY3Njg3Y2M1ZGYwNzNiNmU5MjNiZTA1ODk3YTQxIGxlZ2FjeS10cnVuaworMjAwNTQgZTNiNWQwM2UzZDdkYjdjNmNmYmIzZjYwZGVhYzYyYmIzODZlOWFjMyBsZWdhY3ktdHJ1bmsKKzIwMDU1IDE0M2VmODhlYzg1NjM0YjQ0MDY2ZTZkZDdlNjc0NTUyYjI3NGFjNTAgbGVnYWN5LXRydW5rCisyMDA1NiBhZDY4M2YyMGJiMTQwNzViMWFjMjExNDFmZjAzMmZlOTE2ZmZiYmU0IGxlZ2FjeS10cnVuaworMjAwNTcgYjQ0ZTc3YTEyOTc4OGRlNWI5MDYyMjlhODIwOWFmZGE3YmU1MjhhYiBsZWdhY3ktdHJ1bmsKKzIwMDU4IGRjOWExNTFhMGJkNTJhOTY4MmJkMDc3MDBlOGQyMjliOGEyNjkwMjAgbGVnYWN5LXRydW5rCisyMDA1OSA5ZGJhYjNkNTRkZWVlYzNmYTBjNTQ2ZmUwYWU4OWI4NTJiMGFjNGM1IGxlZ2FjeS10cnVuaworMjAwNjAgMzQ2ZTk3ODYzMGE5YzNiYzdkZTFiZjA2ZjA3NjU3NDEwOWZiMDRkOSBsZWdhY3ktdHJ1bmsKKzIwMDYxIDBkNTIzNThjYjI4ODM0MTk1NDhkNGE3Zjg1NDI2MjI1MTQwOTQ4YWEgbGVnYWN5LXRydW5rCisyMDA2MiBkODA3NDg4ZGZjN2ExMmI3YWUzZmFiYzkyMWM5NTI0ODljY2EyMTRkIGxlZ2FjeS10cnVuaworMjAwNjMgOTYyMTk2Y2U3MjMxNTYzZmIwNTg0NGZiNjNlNmU5YjEzZDg4ODYyYSBsZWdhY3ktdHJ1bmsKKzIwMDY0IDRmNjhkM2Y4ZmRjODIwMDgwNTk3NzlhODQ1YWQ0ODk3Y2FlYzJmOWQgbGVnYWN5LXRydW5rCisyMDA2NSAxMDkwMmVjYWJjYTljNzMwYTFkZjBlZDA2MTdlNzkzODJmMDkzZmZiIGxlZ2FjeS10cnVuaworMjAwNjYgNzNmNDFiMGZmNzc3NWFmZGU1ZjQyNmFmMWEwZDBkMGFhOWQ1OWMzZCBsZWdhY3ktdHJ1bmsKKzIwMDY3IGNkMjQ1NWNiMTNlZjU1YzY1ZWM2ZjU4NDAxYzFlYjBiZWMwZTNkN2QgbGVnYWN5LXRydW5rCisyMDA2OCBlNDkwNzgxMDFhNjg3NDFkNzdhNWYwNGI4Y2I3NGFiNTEyMWE3ZGUxIGxlZ2FjeS10cnVuaworMjAwNjkgNTk2ZWZhN2U3ZGY4M2NmYWZkN2JhOGE0NDFhMzBhNjA0NjkzOWQ3NSBsZWdhY3ktdHJ1bmsKKzIwMDcwIDYzY2FjZGViODA0NWJkNTE5YTI2ZDZkNmE3OTcyMDAwMTg5NWNjOWQgbGVnYWN5LXRydW5rCisyMDA3MSA3MDdmOTVkMDVlNjkwNzY0ZTg4YmQxY2M0YTY3YjI0ZGQwMzk0ZDI5IGxlZ2FjeS10cnVuaworMjAwNzIgOGRmMGY2NWUzODYwMzU4NzgxNmQxOTU3N2RiNGI5ZjAxYTk4ZGE0ZiBsZWdhY3ktdHJ1bmsKKzIwMDczIGE3YmJmMzNmY2UwNWFlNGJiZjAyMjllMTI3OTliYjVmYTM5MmU4OWIgbGVnYWN5LXRydW5rCisyMDA3NCA3OTE2ZDMyYWEwODEyNWQ4YzlkZjZlZGZjNjJkZDI4ODNjOGZmNDA3IGxlZ2FjeS10cnVuaworMjAwNzUgNWVlMzU0M2VhMzNmNDI1MGU5N2M4MWZlOGM4NTU0MWY0NmQ5N2NmMiBsZWdhY3ktdHJ1bmsKKzIwMDc2IDllNjQ2ODM1NmEwYjMzNzE2NWY1YjI1ZGYwN2QyNTU2Y2FjOGQ5NjAgbGVnYWN5LXRydW5rCisyMDA3NyA1NmQxOTVmMjFiNGZlMGRhOGU1YWNkYTllZWFiOWY0MmQ3ZWY5ZDQ1IGxlZ2FjeS10cnVuaworMjAwNzggZjlhMzAwMTVlOGIwZmNiNGZjYzdmNWNmMmNmNzg3YzJlNDEyZTg5YyBsZWdhY3ktdHJ1bmsKKzIwMDc5IGYyZjhmM2UyYWMyMzFjMWJmNDlhY2RjNWYyNzQ3NjhjMGIxN2JkMWQgbGVnYWN5LXRydW5rCisyMDA4MCBkNDhkMDljNzg3YTg0OWQxNDA1ODJlNzg1ZmJiOWFiNDNhZjU5NGQ3IGxlZ2FjeS10cnVuaworMjAwODEgZjVkMzhjNWIxNzUxZTNkNzE2ZDVjMTU2M2EwODc0OWY4MmRlZGRjNyBsZWdhY3ktdHJ1bmsKKzIwMDgyIGQ3MThjMjkzYTFmZmEyYjdmNGY5ODE4YmM3MDgyNmMwZTEwZWIxMDUgbGVnYWN5LXRydW5rCisyMDA4MyBiYWNhYzc1ZDIyZmRlOWU4NmEyNGQwZDYwYTc4NTUzMGRhMzMwYzhjIGxlZ2FjeS10cnVuaworMjAwODQgZWIwNmEwMmUwNTA3NmJlNGNlMTZkNGFkOTkwNjc3ZGIxYTA0M2MzOSBsZWdhY3ktdHJ1bmsKKzIwMDg1IDExNTM3OTZkMjFjMjQwNzA2YmQwOTMxMjBlODMzZjFkN2Q1MmY5OTYgbGVnYWN5LXRydW5rCisyMDA4NiA0MTIwZWJlMDhkZDA0MTZjYzNkN2M4N2NhY2FjZTVkMGYxN2IxMDkyIGxlZ2FjeS10cnVuaworMjAwODcgMzRlZjA1NDQxNDEzZjI2YjY1Y2IxNTQwMGNhZTgyYTI3NzY1OGUwNyBsZWdhY3ktdHJ1bmsKKzIwMDg4IDM4ZWY0NjYzNTk0OTI2NTY5MDNjNzQ0ZWIyNGQ2ZDA1ZDFlMDc5YjQgbGVnYWN5LXRydW5rCisyMDA4OSAyZTdmNDczMTRhZGFhMzE3NzgzNGJjZjEyZDRiZmQxZjdkNGE4M2ZiIGxlZ2FjeS10cnVuaworMjAwOTAgNTcwNWQ1YThiY2IzY2Q5NWU0ZmFiMGQzM2MxMmE5ZWYzNmQ4YTdkYyBsZWdhY3ktdHJ1bmsKKzIwMDkxIGM1OGI2ZDg2OGQwODE2ZjVhNjk0ZTEwYTZiZTM1MjQxMjU0ZGVlODkgbGVnYWN5LXRydW5rCisyMDA5MiA3YTQ5NDBhNGFjYTZmNzI5ZTI5MDgwY2I5ZmRkOTM2ZDc2MGViNDI4IGxlZ2FjeS10cnVuaworMjAwOTMgNzA1N2I2YWE0NmVjNTVmY2ExODBjNWZkZTU4ZDcwZTBjNTZkYWQ3YSBsZWdhY3ktdHJ1bmsKKzIwMDk0IGFjNjU2YzgzN2I2Yzc2NGJhYzEwZWI5MmQwOTZmMzM5NzJlYTZhZmEgbGVnYWN5LXRydW5rCisyMDA5NSA2Y2ZhM2Q2NWFiNTQ2OWJmMDY4YjkyZTUyYzZhZWFkNDgxZTNlMzUxIGxlZ2FjeS10cnVuaworMjAwOTYgOTA1NDZkNmU1NDQ1NGZjNjg1OTRhMjA1ZjkxMTJlNjYxMTIxZTFjOCBsZWdhY3ktdHJ1bmsKKzIwMDk3IGI3NDJjYWYwYTg2MmE0NWMzZjE1NjU1NzBhOGJlNzNiMjA1N2VjODUgbGVnYWN5LXRydW5rCisyMDA5OCA0MDdkNjBiMmZhNDFhOTRjOWRmNGUzYzY2NWNhOGMwN2VkMzNlYTBhIGxlZ2FjeS10cnVuaworMjAwOTkgNzgyMjM5NDg4MDU4NWJmN2I2YTViYTJkMmFmN2U3YjIxY2JiNGU5ZiBsZWdhY3ktdHJ1bmsKKzIwMTAwIDE2ZjE0NWFhYzJlYzEyZTVkNjEyMTc4MzJjNDc0OWE3YjlmMzYxZjYgbGVnYWN5LXRydW5rCisyMDEwMSBjODgxN2E5YmJiZGRiYzRjMGNjZGFiZTFhNmIwNmE3OWNiNmM3NGIzIGxlZ2FjeS10cnVuaworMjAxMDIgNTJkYTA5NGI1M2VjMzliZjk1MDVhZWY2MTk2ZWI4ZjAxZDg0Yzc0NyBsZWdhY3ktdHJ1bmsKKzIwMTAzIGQzZjdjN2ZhZGVjMDM5ODljYWVkNzk0OTBiZTljZDAyODgxYmVhYmYgbGVnYWN5LXRydW5rCisyMDEwNCA2NDg3NmJiOGFhY2RjNWIxZGY5ZDA2Mzc0ODQyNWIyY2QyNTVhYTU0IGxlZ2FjeS10cnVuaworMjAxMDUgMjE1ZGM3MjVkYjg0MDQ5ZWQ2OGY1NWE3NWI4ZDdlZjUxYjZiNWVkNiBsZWdhY3ktdHJ1bmsKKzIwMTA2IDRkNmVlN2YyYmVlNjYwOWEwYzMwNjc2Y2RiMTJhODY3NTQxYTI0YmMgbGVnYWN5LXRydW5rCisyMDEwNyBmMWE0OWVlYzdjMmJmMWRiNzU4NWQyZWMyNzMxMDk2OTFmMGQxNTIzIGxlZ2FjeS10cnVuaworMjAxMDggZjZlMWZhMmRiNDhjYmI3YTRmNzJkMjViZTdmOTBmMDNkMDRmYTYwZiBsZWdhY3ktdHJ1bmsKKzIwMTA5IGExYjk5ZDA4OGNlYTgyOTRkNWI5MjEzMjdkMmI0MzRhMDMxODMzODUgbGVnYWN5LXRydW5rCisyMDEwOSBiNTlhNTM2YWUxZWYzNzc0ZmQ4NWMxN2Y2MjNlODkyNmI3YjZjMDk1IGxlZ2FjeS10cnVuaworMjAxMTEgYjNkY2UwNjg2OGQ2ZDM1ZjU5MDM0NTJlNmU5MGQ3ZjBhYzQxN2MzOCBsZWdhY3ktdHJ1bmsKKzIwMTEyIDNmOTEyZmI4YzE4MDgxODRlYmE2MzI4NjdiMjBhYjFkYmJjYmEzNTggbGVnYWN5LXRydW5rCisyMDExMyBiNjAwOTZkNTAwMWE2ZTBkODM2YTA2NjBmZjk1Yzc5Y2QxMWUwMTkxIGxlZ2FjeS10cnVuaworMjAxMTQgZTNjYzIwZTllYTM2ZWNkZDc4N2JmYjdiZmQ2ZGYwMjExYTNlZDc0OCBsZWdhY3ktdHJ1bmsKKzIwMTE1IGVlYzM5MWE1NWY4NDQwMTllYjRmM2Y5YzY0YzE2ZTMzZDgyMzFjNjQgbGVnYWN5LXRydW5rCisyMDExNiBiMjkxODMzYTBlZmI3ZTFkMTQ2NmQzZTQxNzJlYjAxMzRlM2FjMWI5IGxlZ2FjeS10cnVuaworMjAxMTcgZjkzOTVmNzYyN2M0YjdiZjI0YWY0YjY5OTM5NmQ0NWZlMGRjNWQ2YyBsZWdhY3ktdHJ1bmsKKzIwMTE4IGFiNzA3MjA5NDA5YmI5NTg1NzRhZDM0NjEwNjVhNDE1YTgxMGQyODcgbGVnYWN5LXRydW5rCisyMDExOSAwMmE0YjBjZmM1N2UxMzU0YjBlZjdlMGE2NmUzYzk1MzI4MDk0YWMyIGxlZ2FjeS10cnVuaworMjAxMjAgM2ViOGQ3MjU5OTY5MjRjMmE3NTdmYzBhYzk2MTk2ZDQwZmQ2NzE4ZSBsZWdhY3ktdHJ1bmsKKzIwMTIxIDMyZmI2NjQzYWRmMWYwNGNiODc4ZWI2ZmFiNTU1NWNlNmJjNzE1ZjggbGVnYWN5LXRydW5rCisyMDEyMiA5MmIzZTA4MzE5NzAyYTRjNzMzYjRiZjQzMmNhZTBjMGM5OTI2NmIyIGxlZ2FjeS10cnVuaworMjAxMjMgNDVjZGExYjM5MzU1YmM3NjYzOWUzZjVhZGQ5NzE3ZjcyMGM1MjJkZSBsZWdhY3ktdHJ1bmsKKzIwMTI0IGJmNGNjOTlkNzExZDBhYzc0ZjAwMTQ1OWE1Y2MxYjVlZTNkODNjMTQgbGVnYWN5LXRydW5rCisyMDEyNSA0ZTE5ZmI4Y2YxZmJkMzk4NzBlY2JhZDZiNmQ3ODgyMDc4ZTdiZTI3IGxlZ2FjeS10cnVuaworMjAxMjYgZDJiMDFkNGUxN2U5ZGNmZDJiMjc2YTk4Y2E3M2Q0OWRkZDBmMTBlMyBsZWdhY3ktdHJ1bmsKKzIwMTI3IDcxYWYzYjYwYWE2MjkxMjNhNTY0MzI5NGM5ZGZlZDViODYyMWZlZDUgbGVnYWN5LXRydW5rCisyMDEyOCA1ZjcxMTg1ZWYyYjVhZGRlZGU3YWMyMWJiZGU3Y2YyZjg3MzM1ZmM2IGxlZ2FjeS10cnVuaworMjAxMjkgMTQxMjMwOTU2MzI1NmUxZTQzMDE2M2ZjN2ZmZWVjNzY2ODVlMGU0ZiBsZWdhY3ktdHJ1bmsKKzIwMTMwIDM5MGE4MzE1ZDYzNDJiNGMyZjcwZjhhMjFiZWEyNDRlYzhkYmVjNzkgbGVnYWN5LXRydW5rCisyMDEzMiA3YzA0NzI5MzJmYmY5NjBiZDU5YmIyOGQyYzkyYTE3NjIzMmU1ZWYzIGxlZ2FjeS10cnVuaworMjAxMzMgMjJkODUwMTdiZWNlODk4OTliNzIxMDYyZjMwYjI5Y2RlOTIwMTcyOSBsZWdhY3ktdHJ1bmsKKzIwMTM0IDUzNmU4ZGQzNTk1MzI0NGQzMDI2ZmRmMzE5NmI2YTg0ZTI3YzYzZWEgbGVnYWN5LXRydW5rCisyMDEzNSBlZTQ4MDM4MjY3ODQ3OTY2OTM1Nzg5N2IwNDA0M2YxNzYxOTkxNTIxIGxlZ2FjeS10cnVuaworMjAxMzYgMWIxMmU2MzQwMDM4OTRjYzE4Yzg0MTIxNThmZDllN2UxZjhlOWY4ZiBsZWdhY3ktdHJ1bmsKKzIwMTM3IGEzNDBiYTRhYWMyNzBkODRhZjZiOGQxZTAyMmE3ZjdkNjcyMWZhMDkgbGVnYWN5LXRydW5rCisyMDEzOCAyNWU5M2EwMWY4NmQ5ZWYwNWRlNDgyZmZhMTJjNjc4MDNiNDk2MGUwIGxlZ2FjeS10cnVuaworMjAxMzkgMDM3N2Y5MjdjYWZhMzM4NDYzODYzNDBiMmZlN2Q0NDlhZjA3ZmJkNyBsZWdhY3ktdHJ1bmsKKzIwMTQwIDc1MTAzYmVmMGMyNDU1ZDMzODZjYWYwNDQ3ZGZiYTQyM2YzNTI3NDAgbGVnYWN5LXRydW5rCisyMDE0MSA1OTQ3MmJjYmZiOGU4YTVhYmQ1OGIxNzI3ZDAzYjU1N2E3MWM1Yjg2IGxlZ2FjeS10cnVuaworMjAxNDIgMDJjZWMwMGYyMmJiNTNjZjYwOGQyZTMwNmYwYjgxMjJmOGZlZDEwYyBsZWdhY3ktdHJ1bmsKKzIwMTQzIDZkMzA1NTJjYjRmOTkwODdhMWYzOTBhZmRlYjEyNDNlOTI5NmNjMTUgbGVnYWN5LXRydW5rCisyMDE0NCA0YWE3YWZiZjI5ZDgyMTU3ZTI0OWM4MzBmMWI5NzZkODEzNDRiMmFlIHJlbGVhc2UyMC1tYWludAorMjAxNDUgZmRjNTIyZGM5ZGY1NTZjY2FiYmNhN2ZkOTY3NDg2ZGUxYjQxNDNhZCBsZWdhY3ktdHJ1bmsKKzIwMTQ2IGI1NTNmYmFjMTQ2ZGRiZWFkMDY5YjQ2OTE5YTEyYjIyODM0ZWNiYjMgbGVnYWN5LXRydW5rCisyMDE0NyA4N2Q1MDlkMDg1YTBmYzM4ODUyZDcxOTg1NjRlZmVmMzRkNjgxODAwIGxlZ2FjeS10cnVuaworMjAxNDggODcwZGEyNGQ0YmFmMjRlN2FmMDc4ZjE2MDUxMjkwNGVjNTVlODQyZiByZWxlYXNlMjAtbWFpbnQKKzIwMTQ5IDIyZDM0OTc0ODM4NGY4NjY2YTgwYTg2ZTg2OWI1MzM2YjM5YTkzYzAgcmVsZWFzZTIwLW1haW50CisyMDE1MCBjNGE1YmQwODg1MWJjZmFiNWY3YWQ4YTYyMDY5NjdkODE1YmJiNjIyIHJlbGVhc2UyMC1tYWludAorMjAxNTEgZWUyNjQ2NjliNjc4MGU5N2VkZTUwNGY0MDJlYmMzZTMzNmZkMzY1OCByZWxlYXNlMjAtbWFpbnQKKzIwMTUyIGEwMDI5MThmYzBjMjc2NDRjNDc5OTBjMTM3MWI5ODYzMzJjZGE3ZDIgcmVsZWFzZTIwLW1haW50CisyMDE1MyAxMmZlZTdmYjAxOWIzYjg0MzU2YjMyMmZjYzc2YmJjMmVjOWU3ZWY2IHJlbGVhc2UyMC1tYWludAorMjAxNTQgYmViMjk4MmQ4NWFhODIyYzQ1NGZlZmU0Yzk3MDQyZmZiMTUxMGM5YyByZWxlYXNlMjAtbWFpbnQKKzIwMTU1IDExYTIxZDU5MjgzNDg3YTVlM2NhNjE3MTg2OWVhNGY4YzE3NDMyMDQgcmVsZWFzZTIwLW1haW50CisyMDE1NiBhNjI2YWNjMzBmYzIzOTlhYmQ5YWJiOTk2ODllYWQ2NjQ2OWViOTFmIHJlbGVhc2UyMC1tYWludAorMjAxNTcgZjRjYTkzZThhMmQ0Nzk2NGM4N2Q3OGE2YTBkNjhlM2U2NzQ0MjIxMSByZWxlYXNlMjAtbWFpbnQKKzIwMTU4IDYzOTNmNTVkYmQ3YmU5ZGY3ZTI3OGNiZTdiMDNjMTkyY2E1ZjA3MTEgcmVsZWFzZTIwLW1haW50CisyMDE1OSA1ZWQ0YzdlOGI0Zjk4ZWNmZGY0NjM1YWM2NzUwYmEwOTNmZTMyZjdmIHJlbGVhc2UyMC1tYWludAorMjAxNjAgOWRkYmI3NmMzMTE0NTQzNWJlMmZhZmNiOTE2ZWFiMzVmMTVjNGE4NSByZWxlYXNlMjAtbWFpbnQKKzIwMTYxIDQyYjFhNjk5YTVkZGMxY2Q1MDBiNTk0ZGVhZWE2OTZlZTI0NmI5M2YgcmVsZWFzZTIwLW1haW50CisyMDE2MiBkNDY3ZDE4NGI0MjkzMDRlODNjMWMwMjhjMTAzZmRjMGZiMTMxMTE2IHJlbGVhc2UyMC1tYWludAorMjAxNjMgMDkzZTlhMjRlZTc2N2ExZDRjY2RlZjE5NmQxNWJmYjk4NTkyNzA5ZSBsZWdhY3ktdHJ1bmsKKzIwMTY0IGUyZTkxNDZmNGFiNGQ5YzI5YmYzNGIwYjExMDQ0NWM5N2U4NWI5MWIgbGVnYWN5LXRydW5rCisyMDE2NSAyNGQyMmVlZTk0Y2YzNzE1NzNkMTIzMmI2Y2QwMTNlMzI2NGE5MjcyIGxlZ2FjeS10cnVuaworMjAxNjYgNzJmZDI2NTdiZTM0Mjg3ZjU5NmYzNGJiNmI3YjFkNTZiMWIwZjMwMiBsZWdhY3ktdHJ1bmsKKzIwMTY3IDUzNmNjMTI2ZmI5ZjhhMDcxMTJiMDUwYmQxYjc0MmJhZmYwOGU4OTcgcmVsZWFzZTIwLW1haW50CisyMDE2OCA2ZGM0M2UwYzZiYmY1MDM1MzQzMzAwNjJlNzNiNzI5ZWUwYmUxOTBjIHJlbGVhc2UyMC1tYWludAorMjAxNjkgZTUxMGM0Y2M1NzM3NjNkM2RjZDE0YjYxMmZjOTVhYWUwZTMyMmMzOSByZWxlYXNlMjAtbWFpbnQKKzIwMTcwIGE0Njk2NGQ3MTExZGRlZjRhMmEyOTIxZmQ3NGQwYzNjNGQ0NjY3Y2QgcmVsZWFzZTIwLW1haW50CisyMDE3MSBkN2UwZDIwY2RkYWRiMzYzMmU1ZTAwMDZmNTIwYjkxYTM4YzBmNTk0IHJlbGVhc2UyMC1tYWludAorMjAxNzIgZDlmZjEzMTAwZTJmMjEyMmNhMjNhOTk0NWY2NTU5MWE1YTZlM2U0YyByZWxlYXNlMjAtbWFpbnQKKzIwMTczIDVjZjM1NWY2N2FhMzdiMWY2ZmNkZDUwYjhmOWJhZTNiNGNhYTY5NWIgcmVsZWFzZTIwLW1haW50CisyMDE3NCA1NzNhOTEzODg3MDViNTAwZmNhNWI0ZDczYWMxZjNkZjAwMWFjMDM4IHJlbGVhc2UyMC1tYWludAorMjAxNzUgY2NlZjAyZGE4OGE2N2Y5OTE4Mzc0ZThhN2VhMGMxODQzZjRiMTc1OSByZWxlYXNlMjAtbWFpbnQKKzIwMTc2IDMxMjAzZDk5MzU4MjczY2Y3MzNiOWZlMWRjMjNmYzZmNzg3YmUxMTUgcmVsZWFzZTIwLW1haW50CisyMDE3NyA5OTU2YTFjNWQ0NDA1NGQ2NGY2MWY4ODVhZWIwZjgxZTRlY2JjMTAxIHJlbGVhc2UyMC1tYWludAorMjAxNzggMTkyZjI1ZTQxZmJiZWU5ODhiZjFiNWQ5OTUzODZkNGQxZGYxODJhOSByZWxlYXNlMjAtbWFpbnQKKzIwMTc5IDJiNTc2OGMxMzU5OTIwMjkzZTU2ZTBlODYzNWFkMmEzNzQ2NDMwNDEgcmVsZWFzZTIwLW1haW50CisyMDE4MCA5OTI0NjBjNjY4YzE1YmY5MjY0ODRjZWUzMDM2YzkwN2UzODg0ZDk1IHJlbGVhc2UyMC1tYWludAorMjAxODEgOGRlY2E3OWVhNmFiYjU1ZTMzZjhiMzgwNTdjOTU2YjhmYTBkODc4YyByZWxlYXNlMjAtbWFpbnQKKzIwMTgyIDA0Mzc3NWIzYjhiMjk2NjM0NzQ5YmY5MjFmOWFjODBmOGM3ZTY2NmIgcmVsZWFzZTIwLW1haW50CisyMDE4MyBmMzRjOTA5ODkxMzgzNDVkY2Y2NzNhZDIzMjM1NWI0OTY4NWY2MmViIHJlbGVhc2UyMC1tYWludAorMjAxODQgZDFjMTM1MGEzYTVmNDJiNTg1YzY4YzQ5OGFhMjRlYzhkNDc5ZGFkNyByZWxlYXNlMjAtbWFpbnQKKzIwMTg1IDVhNGUwODM5Y2NlNzZjZjA2ZGUyNGYxMzRlNjZiZWY0N2VhYWUzMTEgcmVsZWFzZTIwLW1haW50CisyMDE4NiA1YmQ2ODZlMGVjZDQxZjYwMDE5ODcyOTRiZmE4N2JmY2YwM2U2NmRjIHJlbGVhc2UyMC1tYWludAorMjAxODcgZDE2ZWRjNzA0ZGExZjU4Y2M1NGQ4MjhmMmFiMzhkYTJkM2Y5ZGMxMCByZWxlYXNlMjAtbWFpbnQKKzIwMTg4IGQ1M2E5Njc5YTkzYmI4YmU4MWFkOTVkM2UwM2JlZjNkMjVkMTY4ZjUgcmVsZWFzZTIwLW1haW50CisyMDE4OSA5Nzc2Y2Y1ZGJmZTM4ZDBjNzg4MWI2ZGVlMmQxYjU1ZDZiYjBiM2YwIHJlbGVhc2UyMC1tYWludAorMjAxOTAgNzZiODlmYTNlZjM0MDYwYTNjYzFkNDZlNGY5YTNlYTVmNDQyNmRlOCByZWxlYXNlMjAtbWFpbnQKKzIwMTkxIGMwMTE0ZWRmZDMxMzc2YTg4NmNiZDdjYWE4ZTEzNTMxOGRmMDViNGUgcmVsZWFzZTIwLW1haW50CisyMDE5MiBlZjEyMjNkODQ0MmRjNTY4MWQ5ZWE0OGVmYTE5NTQzNjcyMDJiYzU1IHJlbGVhc2UyMC1tYWludAorMjAxOTMgNmIwZmY1MjlkNjE1MDI0M2I5MGUwOWU4NmUxYmI2NzQ0ZGRhNDI2NiByZWxlYXNlMjAtbWFpbnQKKzIwMTk0IDdkMDQyNDVlZDc1ZjM5YmYyZTRmZDM0YmNkYTY3MWZhNzVlODg3NmYgcmVsZWFzZTIwLW1haW50CisyMDE5NSBkNjU0N2ZmOTQxNmJhYjgxOWFiODliZGE5ZWIwOGUwMjdmY2EzNTNkIGxlZ2FjeS10cnVuaworMjAxOTYgMDNiYTA2MjQ3NDg2NjMwYWFmYTdlMGY0ZWRjYTIzMDhlMWVmNWUzYyBsZWdhY3ktdHJ1bmsKKzIwMTk3IDgzNmNkZjhkMTI0NWQ1ZjkyYjNkNWQzNmE4NTM2OWQ5NDkxMmQ0Y2IgbGVnYWN5LXRydW5rCisyMDE5OCBlYTMyNmViNDc3NWNjMWM0MGVlMWUyMTJkNWRkNzU5NjhlMDE1MWVkIGxlZ2FjeS10cnVuaworMjAxOTkgNDZhNmMyOGQzNWU1ZGI4ZDE0YTYxNzFjMzQ3NjkyYjRmNDkzZDU2OSBsZWdhY3ktdHJ1bmsKKzIwMjAwIDMxMWU2YWVlZjg1OGFkNTA1MjNlMDZlYTY1MTA1MzMxOTU4OTI0ZTMgbGVnYWN5LXRydW5rCisyMDIwMSAyODhkODA1YWYxNDIxOGYzZjQ5Mjk5NWJlYmIyNmRhZTBkNjQ3ZjQ5IGxlZ2FjeS10cnVuaworMjAyMDIgNTA2YTA4MGQzOWVjZmMyMjkyMzk4NzRhZmUwY2JlNjFiYjJhMWJjNSBsZWdhY3ktdHJ1bmsKKzIwMjAzIDM3ZDllZDU1NDE2ZmYxOWFkNjRlNGYyOThlMzMzNmUwNzQzNjkzNTcgbGVnYWN5LXRydW5rCisyMDIwNCAwY2RmY2NkYjY4NzEwYTEwYzU2NjhkZGRmMzJhZDM0OWU5NDY1YTQyIGxlZ2FjeS10cnVuaworMjAyMDUgYjBhN2ZhZjk4YThlZGIzZjNhZTAzYWM0MGYzZmMzNDdlZWM5NjFkOCBsZWdhY3ktdHJ1bmsKKzIwMjA2IDc2MzVmODgzOGM2ODkyZTI5YzE2MGI4Mzk4Y2QyYTRkNDllNmZlNjEgbGVnYWN5LXRydW5rCisyMDIwNyBiNzM1NDdiZjhiYzI0ODcyOTFjNTBmNWRiM2JkZWY1Yzk3OTdmNjVjIGxlZ2FjeS10cnVuaworMjAyMDggMTFlYmE1YmJmYTE0YWI1MWEzMjJjM2M0NzIyZWQyMTUxZTQ5YTlhNSBsZWdhY3ktdHJ1bmsKKzIwMjA5IDZiZThiYjQ4MDhlMTRlZjlkZGY5ODg2YjhlYzU2ODU5YmI3MmYxN2QgbGVnYWN5LXRydW5rCisyMDIxMCA1N2E1ZjZiMDMzN2QxZTE3Mzg4NGViODU0YTZmOGRmMjE2YjI5NWFkIGxlZ2FjeS10cnVuaworMjAyMTEgMzEwMDY2Yjk5MmYyZjhhOGUxYjc4NzBkZjJhZTkzZmI4YjhhNzRhNyBsZWdhY3ktdHJ1bmsKKzIwMjEyIGIyNWEyNDEzMDIwZTIzNThjZWQ3OTlkNzFkMmRkOTA5ODk1MWYyNjMgbGVnYWN5LXRydW5rCisyMDIxMyA5OTA2ZGIyYTFmZmE3ODYxMTQ3Yzc3OTMyNGJjNDdjNjk5YTk1OGJkIGxlZ2FjeS10cnVuaworMjAyMTQgOTJiNjVmMTIxYTNlOTc2NzIwMWVhNzEwNmQ2MzZhMDViOTE1ZDlhYSBsZWdhY3ktdHJ1bmsKKzIwMjE1IDliOGVhNjM4N2RjNjA5ZmQwYTkzZjRmNDY5YmM2ODgwODEzZTQ3YzAgbGVnYWN5LXRydW5rCisyMDIxNiBiZDExMGVhZGMxOWFkNDA5OTUxYmYzYWYzMDJjMTRkNDlhNDVlNzcwIGxlZ2FjeS10cnVuaworMjAyMTcgZTdmNWI3MGIwNjA2YWJiMGQ4YjVkOTg5M2I1Yzg4YjU3NjAyMjg5MCBsZWdhY3ktdHJ1bmsKKzIwMjE4IDkxMWUyMTFiODkzMGI5MGUyNGZiZTIyZDE5ZGE1YjNhMjAwNzMwOGYgbGVnYWN5LXRydW5rCisyMDIxOSBhM2RlYjIwMWVjZGExMGY4MTVkYWY0YWQ5MjZhMTQ4MzRhODdkNDk3IGxlZ2FjeS10cnVuaworMjAyMjAgYmI5ZTIxNDAzNWUxMjViOTEzNDg1YzI3NTM2ZTM2MGM0ZjU2MzQ3NiBsZWdhY3ktdHJ1bmsKKzIwMjIxIDc2MDc1NDQxOGVlMDI3MGFjNGVkZWI4NWE5YTM5YTZjYzE4N2Y0ODQgbGVnYWN5LXRydW5rCisyMDIyMiAwODA4MjhiZjhkYmRlOGZlMThiMTQ1M2I2YTk2Y2Y3OWE5OTI5NjVhIGxlZ2FjeS10cnVuaworMjAyMjMgNGIzNDZjYzM5ODliYWE5OTNlYTU3NThkYzk0ZGIyZjQ5YjcyZThlMiBsZWdhY3ktdHJ1bmsKKzIwMjI0IDEyZjdmMTY3YWM1MzNkNDZhNGZlZTQyY2MxYjYxYzUwNmU5OTQ1YWQgbGVnYWN5LXRydW5rCisyMDIyNSBkMzI4Y2ZlYjBjNzViYzA0NjRkZWQwMGFkNWM3OGY3ZmEzZDAwNjYyIGxlZ2FjeS10cnVuaworMjAyMjYgMTgxZDAxMzIwZWY0M2UzZjU2NGU3NmQ0MGU4ZmExMGZkMDYxNzM5ZiBsZWdhY3ktdHJ1bmsKKzIwMjI3IGIzZmQ0NGZmYWIxZTkxNjEwMmUyZjZhYjEzZmViMWU4YTQ0NDBlNDQgbGVnYWN5LXRydW5rCisyMDIyOCA5MmI2MGRlZTdmMDgzNWRmMjg5Y2NlNTY4MjE2NjE1YjdiODA1YTU2IGxlZ2FjeS10cnVuaworMjAyMjkgY2NhZTQxMmJiYzNlMjJjZmE2MjQ5YTcwMmE5N2M4ZDI3YjIxMDY0MiBsZWdhY3ktdHJ1bmsKKzIwMjMwIDIxNDZhNzNjZTM1YzBiZGQ0NDk5ZjNlZTliNGIxN2JlODU0ZmYxNmUgbGVnYWN5LXRydW5rCisyMDIzMSA5NmVhMGVjY2RiMzE3Mzc4ODgzNTg4MTZiNjc3MTY2ZmJhMGYyOGM1IGxlZ2FjeS10cnVuaworMjAyMzIgYzMyNzUyYTI4NjUyMjEzZTJjMzdlNjc4MzdjMjFkYjBkMTE1MDUyNCBsZWdhY3ktdHJ1bmsKKzIwMjMzIGE1NzEwNTc4YzJlMDIyMTY2MjkzMzRjMWExYjdjZTFlNWJhYmY4MjMgbGVnYWN5LXRydW5rCisyMDIzNCBhYjRlNGNiMDk0YzFmNjQzMGQ0MzhjOTNmN2FmYzczYWE5ZjI4NzczIGxlZ2FjeS10cnVuaworMjAyMzUgODNlZTYzYmNmMDM2NTk4NzI3ZmI2MjcwM2JhMTJlMGYyMDUzZjhjMSBsZWdhY3ktdHJ1bmsKKzIwMjM2IDk4NzZkNmJhZjg0Mzg5NjM4MWNmYzg2MmVjZGUwOWZhNDFkNTM3ZWQgbGVnYWN5LXRydW5rCisyMDIzNyBkZTk4NTg1MzBhNTUzZGM4NGVhYWRkZTgyMTY5NmJkMTEwYWI5NzMwIGxlZ2FjeS10cnVuaworMjAyMzggZjFkMmU4OGZhMTFkZTMyNjA1ODM1OTBlMjE5NWUzMWY4YWZmZDc3NCBsZWdhY3ktdHJ1bmsKKzIwMjM5IDVhZmZmY2E2NmUyZmFlMjZmMjA2MDI3ZmFiYjBmYzA5ZTcxOWFkNjIgbGVnYWN5LXRydW5rCisyMDI0MCBmOGZkYmViNzM2NjcwOGI3MzM5Y2YxZDdkOGM4NDY0ZTI1YTYwZGVjIGxlZ2FjeS10cnVuaworMjAyNDEgODc2ODYxZjEzNTQzNmNlN2M3OWNmOTZlYzA1YjI5NzAxNjVhYTNmMCBsZWdhY3ktdHJ1bmsKKzIwMjQyIGE5ZWY0NGJiZDk2ODI5MDU5N2I1Njg2NjY5NGYyMzA3ZTgyNzY4ODYgbGVnYWN5LXRydW5rCisyMDI0MyBlNzIyZDQ4ODNlMTk3MTVlZjI4OGE1MmUxNjUzZGYwY2MwM2U0NzdhIGxlZ2FjeS10cnVuaworMjAyNDQgMzMwOGFmY2FhMTMxNTVkNzNkNjNiM2ViZWIzZGQxODM3NGNhN2ZkMyBsZWdhY3ktdHJ1bmsKKzIwMjQ1IDJkMzBhMDk5NzA1ZjM5ZmNkY2VhYWVkODVkNjM0OTk2N2UyN2IxZWIgbGVnYWN5LXRydW5rCisyMDI0NiBlZDNlNjZmMzA4MzdjMjIxMTY1MTZmY2NmZDdlM2I1ZjYzNjkzYTZmIGxlZ2FjeS10cnVuaworMjAyNDcgYWVkNmIxNDM2ZGI0Nzg3MGY1YzgwMDU5NDIzMGE0NDM5OTBiM2RhMCBsZWdhY3ktdHJ1bmsKKzIwMjQ4IDE5NDMzMThmYWUzMTc3YTU4ZWNiZWVjMGYzYzk0ZGM4MTY0OTk1MjQgbGVnYWN5LXRydW5rCisyMDI0OSA0NDY4YThkYTY3Y2EwMTA0MjRlYWVhNzRhNzgyOGNkYmYwZjZmNWY4IGxlZ2FjeS10cnVuaworMjAyNTAgMjhjZjBhNzk0M2NmZDdiMjM1MzFiYzJkZDY4YjE0MzA3MzJhNGJkYyBsZWdhY3ktdHJ1bmsKKzIwMjUxIGNjOGEyMWJhNjQ0OTk4Y2NlYWQ0Mjk2OTI0NTNlN2JmZDhkMjRhM2YgbGVnYWN5LXRydW5rCisyMDI1MiAzYWFlZGJhYzk1YjMxMmJlNWYxMzkxODg0OTk0OTU0YjZmYzYxODZlIGxlZ2FjeS10cnVuaworMjAyNTMgYTE4NDBiOWIxNGYxNDVmMGQxZjEwZDk3MmNhNmI3ZDNmY2U4MDlmMiBsZWdhY3ktdHJ1bmsKKzIwMjU0IDk2MjFkMGZiYzJlNTJmMGQ3ZjQ5ODFiNzNmOTcwZWJmMGU3ZjMzNjYgbGVnYWN5LXRydW5rCisyMDI1NSBjYTU2NWUzZDNjYzVjMDY5N2ZjYTNkM2JlNTE4MzlkZjE1NzZhY2M3IGxlZ2FjeS10cnVuaworMjAyNTYgNmI4ZDkxZWE5ZGUzNDM0MGZkZGE2ZDQyZjIxMmJkZGVlMWFkOTg0NSBsZWdhY3ktdHJ1bmsKKzIwMjU3IGQxMDllYzY2N2VjMjVkOGZlZDEwNjJhMzQ3NmYwZmU2OGYxNDIxYTggbGVnYWN5LXRydW5rCisyMDI1OCA4YTNiYTEwZjEwZjZhMjU0OTE2YWQ0ODBlYWJjYTEyMzg1YjdjMWIwIGxlZ2FjeS10cnVuaworMjAyNTkgMTFlOGJiNGQ4NDVkMmMwYmU1M2ZlMDFhYmJmNTY2MzgxMTdkYzNhNCBsZWdhY3ktdHJ1bmsKKzIwMjYwIDUwNzlkNmUzYjYxNTA4MDA3ODY2NWZjYjRkNjJmZDI0N2JkMGIyYjIgbGVnYWN5LXRydW5rCisyMDI2MSBlMmIzZTZkODUzNDMwYTIxMGZjYmFhZmVmZmFlM2FkMTE1MDMzMWViIGxlZ2FjeS10cnVuaworMjAyNjIgYmI3NWQ5M2Y2YTMxYzkzMzRkZWE2YzM1YWVkODBiZGM0N2FhZGE3NyBsZWdhY3ktdHJ1bmsKKzIwMjYzIGYzOThlNTg1NmZhNzQ2NTMwNTViOGJiYzM4YTYzOTMyOTAwMWIxZjUgbGVnYWN5LXRydW5rCisyMDI2NCA2NWYzNjMyMzZlY2Y3ZmE2YTgzNmFhOWYzNWNkYzFlMjM3NDIxOTAxIGxlZ2FjeS10cnVuaworMjAyNjUgZTg0M2VlZTdhMzNlODYyNWIwNjI2YTQ5N2ZmYTY0MjIzMjlmMWI1ZSBsZWdhY3ktdHJ1bmsKKzIwMjY2IGQzODI3OTIyOTA5Y2EyNTc1NGRiOWM3NjUxZTFkNTE1NDQxNTJjZTIgbGVnYWN5LXRydW5rCisyMDI2NyBlNTRlMTFjMzBlNGIxNTQ5N2MzZjcyY2ZlNDY5ZTE4NGQwMjAzYTAyIGxlZ2FjeS10cnVuaworMjAyNjggY2I0MGU3NzBjOTAzZGQ4ZTBiOTk4OTkxZjJhMTM0YjVmOTI0MjFhZSBsZWdhY3ktdHJ1bmsKKzIwMjY5IDBjODdhYzY3NGNlMTgyMDY3NGE5ODNkNGNmNWQyMzFhZTdhMzQ0OGQgbGVnYWN5LXRydW5rCisyMDI3MCBhODBhODQ3ZjVmNGViYTU4YmUxMDA5NTA0NDZmYmJjNTRmZDE2M2Y2IGxlZ2FjeS10cnVuaworMjAyNzEgNWY2ODc1NGViM2I2YmM4MDA3YzMzZTk3MGZkMGVjYzkxYjhkODFkZiBsZWdhY3ktdHJ1bmsKKzIwMjcyIDMwZTUyNzBkYjEyODNiZjhjZGEwYWE4NmQxNjI2ZGZkODRjMzkyM2QgbGVnYWN5LXRydW5rCisyMDI3MyAwZjZkOGZlNGEzYTkxY2ZkN2NkYzcwOTI3ZjVhNDJhZmVjZGNjYzQ5IGxlZ2FjeS10cnVuaworMjAyNzQgNDYyMmFmNGRhOWUyODJmYjFkY2U3OGE1YWUzMTE5Y2ExOWQ0NGExYiBsZWdhY3ktdHJ1bmsKKzIwMjc1IDhhMmRkOTc4NzNmMjU3NjJmZjRiN2NiMzM5NzBmYTYyNWNiOTM0ODkgbGVnYWN5LXRydW5rCisyMDI3NiBkMzY4NTUyYzJiNzI2MTAxZjlmZmI4NjlhYzY1NjU1NzlhZDk2ODFmIGxlZ2FjeS10cnVuaworMjAyNzcgN2M0YmFjMmY3YjNhYjcxOGUyMzliNzAzNDUxY2U4NTE2M2M5ZDU5ZSBsZWdhY3ktdHJ1bmsKKzIwMjc4IDliMjk3YWYxOGUyZjMxNTA4NDQ5Y2U0NjYyM2I3ZTQ4MTg3YzhmZDYgbGVnYWN5LXRydW5rCisyMDI3OSBiNjEyYjUxOWQ0MWE1NDY5ODc2ZTUzMDlhOWU2YzcxMjZmNGVjNTIxIGxlZ2FjeS10cnVuaworMjAyODAgYmJjYzk4MzczMTJlOGU1OWY2YmM1ODA5ZDUzYTgxZjdlM2NjYTM0OCBsZWdhY3ktdHJ1bmsKKzIwMjgxIDBlYzA2YjQ3NTVkYjcyNGQ1MjZlZGEzOTI0M2UzZjM0Y2M3NGY4MTIgbGVnYWN5LXRydW5rCisyMDI4MiBlNGFiZTc0YmM5NzMyZDcyOGIzMWE1ZjRhNTM5NTEyOTAzYzJlNmU3IGxlZ2FjeS10cnVuaworMjAyODMgNDcxY2UwZmFhNzc1MGY0MjA4ZTY5NTIxNmVjNzQ0ZDc0MWRmYmZjZiBsZWdhY3ktdHJ1bmsKKzIwMjg0IGIyYmM1NjMzMjA0NWFlMDI1MjVhYjkzMWY4ODJjNDA3YzUxZTVkOWEgbGVnYWN5LXRydW5rCisyMDI4NSAxMTJiZDQ3ZTA3OGQzMTkzMGM2YzVjODE3MmE1OGEwZWNhNjY3NDcwIGxlZ2FjeS10cnVuaworMjAyODYgNjg3MzU0OWQ0ODRjNzU4NWQ2MGJkMmJmMzQ3NGU4OGEyYTMyYjAyYyBsZWdhY3ktdHJ1bmsKKzIwMjg3IDRiMDZlNGRiMDA3NWRjM2IwNTViZmVmZGMxOGU2Y2VhM2U0YzNiNDggbGVnYWN5LXRydW5rCisyMDI4OCA3MTdiMGM4ZGU3MWU5YTEyNjdlZTYyY2M4ZDhmYjZkN2MyZmZmZTQ5IGxlZ2FjeS10cnVuaworMjAyODkgODYzZTgwNzNjN2FhZjMxZjMxN2JlODcyZmQxZDc2NTdkYzNjMDlhZSBsZWdhY3ktdHJ1bmsKKzIwMjkwIGJlYjlkMmIwMjg0NjU3YmUyM2ZhOWY5YjM0NDk4ZTJkYWE4OGM4OWYgbGVnYWN5LXRydW5rCisyMDI5MSBjZjhhNTk1Y2VjMzM3NDhiNTIzNjI0MDRmNzMzNTNhNWE2Zjg5YjU4IGxlZ2FjeS10cnVuaworMjAyOTIgMDA0YzliMDMxOTI0MWM1YzA1NDZhYzEwY2I1OWI1NGI5MDQ3YjdlNCBsZWdhY3ktdHJ1bmsKKzIwMjkzIDcwNzYzYzQ3NTJlMmZhM2Y3ZWM2YmEzOTAxMjUwNDZiZjAwMzlhODkgbGVnYWN5LXRydW5rCisyMDI5NCAxMzg1N2ZiMzMwMTc3MGNkMmNhNDI3NmIxYTBiZjI1OWQ0MTBhZmI5IGxlZ2FjeS10cnVuaworMjAyOTUgODUzZDZhOTdiN2Q5YjRkMzg2YzczNWY2Y2YwYTI3MGM2ZTg2NTM1YiBsZWdhY3ktdHJ1bmsKKzIwMjk2IDNiOTA1ZjI4ZjIyNTY5OGM4YjRkM2Y1NmM1MTMwNDdkOThlYWYzOTEgbGVnYWN5LXRydW5rCisyMDI5NyAzNGVjNWUyZmEzNTYxZWNiZjAzYWVhZWNhODU5OWFmYzljMDYyMGE0IGxlZ2FjeS10cnVuaworMjAyOTggMDE3OTFhMDk3NDU2YjZmZTc1MTJlNjA4ZDcxMTEwNDNhMjEyYjBlOSByZWxlYXNlMjAtbWFpbnQKKzIwMjk5IGFmYmI2NWI2MGZhMjAzODE5MzI0MWI1MDU2NjI0NzBlOTMyNmVhOTMgcmVsZWFzZTIwLW1haW50CisyMDMwMCBjOWUwN2JjMzAzYTIzZWQwYzc4M2I5OTA2MWEzMTkyNzBkNjljMjJlIGxlZ2FjeS10cnVuaworMjAzMDEgOWQ3NmQ4NTUyYzM2MTI3NzRkNmFhYWY0NzhlNjQ3OTg2ZDBlMGY5MyBsZWdhY3ktdHJ1bmsKKzIwMzAyIDY5NGI4YzNmMjVlN2M2ZDM3MzFmMTQyNTU5YTg0MmE4YzQ4ODdkMjQgbGVnYWN5LXRydW5rCisyMDMwMyA4NGEzZDcwZWM2ZjQ0ZDY1ZmFlYmM3NDlkOGU5MjM5ODI1NTk1NWQ2IGxlZ2FjeS10cnVuaworMjAzMDQgZjk2NzQ4OWVlM2I2NGJhZDg2ZTc0NWQxNWZkODY3ZTRkMjViZjZmMyBsZWdhY3ktdHJ1bmsKKzIwMzA1IGJkODQ0YjIwYjljODU0NGZiOTE5OTc3OGFmZTc5ZjA4OTcyZGUxNGUgbGVnYWN5LXRydW5rCisyMDMwNiAzNzA0YmUzZGIzMDI4NjI2MGY2MjhiYmZiNmFiYzE4ZWZhZWRlNGZhIGxlZ2FjeS10cnVuaworMjAzMDcgYmFkMmRhZWI3NDQwYzMzMTIwNDJkNTZmODY0MGZlZmQyZDI3Y2Y2YSBsZWdhY3ktdHJ1bmsKKzIwMzA4IDRjNDk3YzVlNzJhZGNlMWRiOGRjYjg1YTI2YzQ5MjEzMGQwMmYxZDYgbGVnYWN5LXRydW5rCisyMDMwOSA2NWE5MjI1MWQ2Yjg1Y2FjMjM1OWUyNjNkODM1ODY2YTdiZDExODg5IGxlZ2FjeS10cnVuaworMjAzMTAgOWRjYjRiZDY1MTU0OGU4NzY5OWE2MjBmMGJjNmY5MGIzZGFkOTZjMyBsZWdhY3ktdHJ1bmsKKzIwMzExIGI4ZmNmNDVkYzZmZGM3NDM5MjNkYjc2NjRjOTQwNGEyYjU3YzU1OWIgbGVnYWN5LXRydW5rCisyMDMxMiA5NjVlZWI0NGU0NTQ0MTIxYzIyMTc0NjkwYzAyNjEzZTEyZTBjMmZjIGxlZ2FjeS10cnVuaworMjAzMTMgM2ZhZGMzN2NmYTkyMDllZDQwNjc2ZTVhMDljMjY0MGEzNzc2YzU2YiBsZWdhY3ktdHJ1bmsKKzIwMzE0IDY0Mzk2MjQzYzExNDFkY2Y5MDg3NjBkNzNjMWQ0MDcwNDViYmI0M2QgbGVnYWN5LXRydW5rCisyMDMxNSAzNDAyYzcxNjZkMzA4MTE0NGNjYTRjYmYyNDJlZWMwMzY4NTU4NDY0IGxlZ2FjeS10cnVuaworMjAzMTYgZjNmOTY0MTc0M2EwN2U4OGRmOWVmYzc5ODY1MjlhYmNmMGRjNjliNCBsZWdhY3ktdHJ1bmsKKzIwMzE3IDYzMmM0ZDViNzViN2E5NmRlYzNmY2EzMmQzYWFhYWI5YTJhYTIxMjEgbGVnYWN5LXRydW5rCisyMDMxOCA3YzYxNzE1NzUyYmUyMDI2YWJiNThiMDQ1MTM4NDA3OTAxMDlkMDFkIGxlZ2FjeS10cnVuaworMjAzMTkgOGVjN2Y2NTZmODA4MzFlNmRjNjYxMmEyNDNlNWU1NjEwNzc5ZjBhMCBsZWdhY3ktdHJ1bmsKKzIwMzIwIDI1N2I1N2JjY2RmM2JlODk0YjJiZDhmZDk3NjdlZDc5MjE2M2E2NDcgbGVnYWN5LXRydW5rCisyMDMyMSAzMTYwZGE0ZGRkODkxYWUwYmU4MDZmZDFmZmUyZWI2N2NhMzA3Nzk4IGxlZ2FjeS10cnVuaworMjAzMjIgZWMwNzVjYzgyYmRiM2Y1N2MyZWY1YmY3OGZjZGQ0NzM4ZjM3YjJkMiBsZWdhY3ktdHJ1bmsKKzIwMzIzIGMyZmIyZDQ3NmJkMzhjZGYyN2FiMzg1YzM0OTQ4MzYyODJiYjAwODUgbGVnYWN5LXRydW5rCisyMDMyNCBlNTAwOTAyNWU2MmYyYzFhZjk4ZmMzNDcwZjMwMTVmYTAyZGM2ZjE0IGxlZ2FjeS10cnVuaworMjAzMjUgYjRiM2NmZmM3YzM1NWZmMjE0YTRiNDRkNTdmMDBmMWFkY2UwZGQ4NiBsZWdhY3ktdHJ1bmsKKzIwMzI2IGJmYzEwYTgwNTQ1YmFhZDg4OTNiMmI5MzE0MWI4YzQ0ZDZkOGI3MjQgbGVnYWN5LXRydW5rCisyMDMyNyBiMDA1ZWI5YmM4NDJkOTdhNWEzMTVkMjFkOTVhYzExYmEyZTgxZjEzIGxlZ2FjeS10cnVuaworMjAzMjggMmNjYzBmMmM5ZTFmMjgxZmEyY2ZjYzFiMmZhMDYzYzc0MmQ5MTU4NCBsZWdhY3ktdHJ1bmsKKzIwMzI5IDBmMzJhYjVhZmZmODllNjQ0YjE2NzcwNjE0ZDg1YWE2NjI2NjUyNGYgbGVnYWN5LXRydW5rCisyMDMzMCA5OGY2OTI0NWJiNjljZDI0N2FmZDQzMjk4NDQ2YmNkOTNhYmI3NDY3IGxlZ2FjeS10cnVuaworMjAzMzEgMDJkNjlhODg3MDM4OTEyMTRiNzg3MjhjNTJjMzRhYWYxYTU0ZWEwYyBsZWdhY3ktdHJ1bmsKKzIwMzMyIDQxYTQyMzI5NGNiNTEzMTI4NTlhNWVjNjA2NmRjMzJmYzNiNWRhNjggbGVnYWN5LXRydW5rCisyMDMzMyBmYmMxMmQ2Y2QwNTExYjk0ZTY0MTRiMDVkNTcwZTAzOWI5YWZmZmU5IGxlZ2FjeS10cnVuaworMjAzMzQgMWNkZmYyODM4YTE3OGVmNDYxZDkyNGJiOWY4Nzk2NDU0YmE3MDRiMyBsZWdhY3ktdHJ1bmsKKzIwMzM1IDc0YjlmYjFjOTYzMzk3OTI4YTNlNWMwZWM4ZGM4ZjlhZTUxMzFhMmQgbGVnYWN5LXRydW5rCisyMDMzNiAyZDUyMTQyMGRiOGYxZTI5MmJlMmQ0YzFjZDcxMThkZTFhZmMzY2Q5IGxlZ2FjeS10cnVuaworMjAzMzcgOTIzN2Y1OGRjYzE5MjI4ZjA5MGQ1ZjYzMmVkODBhMzA1ZDZiZTUzMSBsZWdhY3ktdHJ1bmsKKzIwMzM4IDExMTkwMmM5OTFhOTA0ZjNjYTJlMTQwMjRmYTc4YTBmNTQ0NTQ0MDcgbGVnYWN5LXRydW5rCisyMDMzOSBmMGYwNDY3YTMzMzQyZGFjODY3NjllYzE3YjkxMDM3ODQxOGMwNmY2IGxlZ2FjeS10cnVuaworMjAzNDAgMDE4NGM1MGE4NzUxMGFkYTgxN2ViNTk5YWVhNTkzOWViNDQ1YWJkYSBsZWdhY3ktdHJ1bmsKKzIwMzQxIDA0NzVjOGI3MjIzYmE1OGI4NDcxOWE2OTg3MWEyMWZmNzkxOTc2N2YgbGVnYWN5LXRydW5rCisyMDM0MiA0NWMxODI1MTk2ZWQ2NjAzYTdkMmRhNWQ1OWUyMGFhMjg5ODE4MmFkIGxlZ2FjeS10cnVuaworMjAzNDMgNTFjOGNlMWEyZTI1OTk1M2YyOWRjZjI2YzZiMjAxYjVmY2U3Zjg3ZiBsZWdhY3ktdHJ1bmsKKzIwMzQ0IGY3NGY1YWFmZGM3ZTI1MGE1ZDU0ZDMzNTIzOGY4Zjk0NWU0Y2E5YTcgbGVnYWN5LXRydW5rCisyMDM0NSA5OTQxYzQ0ODE2YzFjNzMwNjg5YmQ0ZjVmYTk0MWU3ZjdmNjg0M2MzIGxlZ2FjeS10cnVuaworMjAzNDYgMWEyZmQ1YzRkY2Y1NzBmZDEwZGNlNDQzODUxMzAwYTg3ZDE0NmUzNiBsZWdhY3ktdHJ1bmsKKzIwMzQ3IGYzYjZhYzEyOGRlOWYxMzc1YjhhNGY4ZDA3NDg3NzhmODlhOGQyZjcgbGVnYWN5LXRydW5rCisyMDM0OCBkOTE1Nzc3ODMzMzU3NjQxNDYxZTQ4ZDkxNmYzMjdiYzFjYmNjOWJiIGxlZ2FjeS10cnVuaworMjAzNDkgNGVlMzQ2YjM1NTI0YTg4NWRkZGVlNDA5OWNiYWFhMTkyNWU0NGYzOSBsZWdhY3ktdHJ1bmsKKzIwMzUwIDNiZGE1OTA3MTM4OTUxMzQxNzA0MWU4ODFlMWI5NGNlYmUwOGRmNTQgbGVnYWN5LXRydW5rCisyMDM1MSA2NmE3YzhjOGRkMjcyMzhmNjQ0MzBiMjJkZmMwZjI4NmRmN2Q3M2JmIGxlZ2FjeS10cnVuaworMjAzNTIgMGQwNTQ2YmQ4NDQ4YWM1MjIwYzAxZmRiODNiMjAxODg3YWNlN2U5ZSBsZWdhY3ktdHJ1bmsKKzIwMzUzIGU4NDZlOTYwZTdmNjMxZmJiM2FhMDYxYWQ1MWMzZTUwMGZhMTQyMTMgbGVnYWN5LXRydW5rCisyMDM1NCA5OWM0NzFjZWQxNzAxODVjZGZjZDgyZGJkZTYwNGI3Yzc3ZWQ1MWU3IGxlZ2FjeS10cnVuaworMjAzNTUgYTAwNGM2MmU2OTZlNmUyMjkxMDZmN2EzODc4MWNhMTkzMWZiYmRiNSBsZWdhY3ktdHJ1bmsKKzIwMzU2IGU4NzQxZGMzNmFkMTNiOTE5NDE5NDg5NGQ2MmFjMjI5M2VhOGEzOTkgbGVnYWN5LXRydW5rCisyMDM1NyBjMjllZTM3M2Y3MThmNzhhYjQyMzQ2ZDVhY2MxNGVhOGNiNjNiNWFjIGxlZ2FjeS10cnVuaworMjAzNTggZjFlYzUyZWY3NzFjMTFhNmI0YmRjNGI3OGI1YTE1NmEzZjcwYTliZCBsZWdhY3ktdHJ1bmsKKzIwMzU5IGYyNDI3MmU4OTYyMTUyNTc4ODUxZGM5MTI5MDNlM2IyMDA1Y2U1YTQgbGVnYWN5LXRydW5rCisyMDM2MCBiODRmMDg0YjI5OTJhODFlNmIwNmMyMDliYjNjZWMzNWY3MDY3NjIxIGxlZ2FjeS10cnVuaworMjAzNjEgNGI5ZTY4NGJlYmI4NzJlYjNiZTI1ZmQ0N2VlNWFjMzNlNmM1YjA1MSBsZWdhY3ktdHJ1bmsKKzIwMzYyIDhhYTRkZTIwN2FlMzY0YjQ0YmFhYzIyODY4ZWE5YjhiZTAzMjFlNmIgbGVnYWN5LXRydW5rCisyMDM2MyA5MjZiNjRmYmE1ZTdlZDU5YTJmNDAxM2FjZDYzNDMxM2I5MDU0ZDJmIGxlZ2FjeS10cnVuaworMjAzNjQgYjRlMmI4ZTlmMWU2ODQyMzY4Zjk2ZmE5NDM5OTVmMjU5MzFlMjdhNCBsZWdhY3ktdHJ1bmsKKzIwMzY1IDI0ZTgxYjQzMDY3ZGM2NWY1YWEyMzgxNWQwOTQwYWM0NDhhMmQ4MjAgbGVnYWN5LXRydW5rCisyMDM2NiAyODg4ZmM2MGJmOWFjZWFkNjRkZTEyODNkMWE3NjY1YmM5ZDkyMGQwIGxlZ2FjeS10cnVuaworMjAzNjcgMzM5YTkzYjAwODRjNzViM2FjNDE3ODZkNjIzMWZlNTQ1NTU4Njc2OCBsZWdhY3ktdHJ1bmsKKzIwMzY4IDE0MjU0NWQyYWFmYzgwYTc3NzNhNmY5MGZhNzUwMGJjZmI4YjY1NDAgbGVnYWN5LXRydW5rCisyMDM2OSA0YWI1ODYyNDY1M2U3ZjU1YWUxYjkwNGEyODBmOTIxNWI5ZDM2ZjRkIGxlZ2FjeS10cnVuaworMjAzNzAgMjVmNTViMmUzOGFjYzgzZDJiZDJlYTE1NGExNzdkOWQ5YTRiNTEwZCBsZWdhY3ktdHJ1bmsKKzIwMzcxIDBiNjllMTdlMDU1ZmE3NGUyNTk3Y2YzZTc2YWUxMWQwMTZhNDEwNGEgbGVnYWN5LXRydW5rCisyMDM3MiA2MTNkY2Q1NDc2YjZlNmRhOWJmZmVlMzNiZWYyZjJiNGU3M2QxMGUwIGxlZ2FjeS10cnVuaworMjAzNzMgZWQwN2Q2YTg3M2U3MzQwYzVlZDljYTJhMGY5MzkyYmQ4Y2U4YjRmOSBsZWdhY3ktdHJ1bmsKKzIwMzc0IDA0ZGFlZTNhYjYyN2EwYTY5MmJhYjkyMTk0ZDUyYjljNmI0OTM3ODMgbGVnYWN5LXRydW5rCisyMDM3NSA5OWFkMDI1N2I5NDJkZWRjMTdjNmIyZGZkZTBhZjhlNTYwMGQ3OGJiIGxlZ2FjeS10cnVuaworMjAzNzYgMjI2NTAzMmVmYzlmMGY0YmM2MjhkYjI0ZjlkM2Y2MzU1MjllNDM3ZCBsZWdhY3ktdHJ1bmsKKzIwMzc3IDcxNzUyYTQxYjU3Zjk4YmE2Y2M2NWZkODhiMTExODJhNGZjY2NiODcgbGVnYWN5LXRydW5rCisyMDM3OCA3ZTgyOWRkMDNmOTdhOGI2OWNmMDlmZjFhYTJmYzYzZjMzMTk1Y2ZjIGxlZ2FjeS10cnVuaworMjAzNzkgNjQwYWZmZGY5OWU1MDdlYTUxNDEyZWI4NzI3MTlkMTlkYWMyZTAxYyBsZWdhY3ktdHJ1bmsKKzIwMzgwIDc0ZTdlOTNlY2Q0MTQxOWRhNjk1NmFkYmYyY2Y3YTFkYzc3NmMyM2IgbGVnYWN5LXRydW5rCisyMDM4MSA5NmJkNGE4NGYxYTQ5NGMyN2U1YzRhY2FiM2RiNWQ0M2Y2YWQxNWJlIGxlZ2FjeS10cnVuaworMjAzODIgZjdjMTJiYTQyNzM3MDhlYzhhOTI5MmE3NzAyNzAyZTYwNGQyNDJlZSByZWxlYXNlMjAtbWFpbnQKKzIwMzgzIDVmNGZjZmI4ZDNkZDM2NjcwMWFjZTMwODNiNGI4MDJmNGZhMDUwNGEgcmVsZWFzZTIwLW1haW50CisyMDM4NCAzNTEzOWE5NDU0ZDQzODAxNWFlN2IyMGE3MjYyZDkyNWYzZjY5NDBhIGxlZ2FjeS10cnVuaworMjAzODUgMTViNzYwOWUzZTJjODkxZDRkNjAyMzRmZTYwZjVhNzI2YmZjNzQzNyByZWxlYXNlMjAtbWFpbnQKKzIwMzg2IGI2NWQwODllODg0MTg5MGExMGY3Yjg4YWQ5ZWFmN2E2YTFlZjFmMDcgbGVnYWN5LXRydW5rCisyMDM4NyA2ZWVhNGNlYjc1MTY1MjgyZTJiOWI4MjljNjBjYjJmZTgyNjkzNDlmIGxlZ2FjeS10cnVuaworMjAzODggYTM0MjkzY2VkNjNiNjEwOWY0NzVlNjVkODgzNjZmMTJjMWY3ZDRjYiBsZWdhY3ktdHJ1bmsKKzIwMzg5IGU1MjZkOTI0ODk2NWY0N2Q0NzM1Y2I1NTRlZjA5MTU0OGRhMDBiYjYgbGVnYWN5LXRydW5rCisyMDM5MCAwYjA2MGNmNzYyY2U3Mzg1MTllOTJlOWVhNGZjNDcyYWQ4MjcyMGZhIGxlZ2FjeS10cnVuaworMjAzOTEgNmEzNzc2MjAxNzUwNzVmZDNjYjk3NmRmZDAxZWI0NWZhM2M3YTczNCBsZWdhY3ktdHJ1bmsKKzIwMzkyIGY3MmRjZDY3Y2NjYjA5Y2IxYTgwMTQ5ZDQxYmQ1NjRlNGE1ZTBjMWIgbGVnYWN5LXRydW5rCisyMDM5MyA4MDZmZDg4MDE1ZjUzYjczOTE2MjY2ZWE0YTZhNjE3MTJlOGZkNjMyIGxlZ2FjeS10cnVuaworMjAzOTQgNWU5OWExZDBlYTRkZDc5MDQ0YTcwYzAxMTRkMjcxODdkYmYxZTk0OSBsZWdhY3ktdHJ1bmsKKzIwMzk1IDYxZDk1NGU3YmU5OTIzYTQzNGVjOTc4M2M2ODA3ZTNlNjQ0MWFlZTkgbGVnYWN5LXRydW5rCisyMDM5NiBjNWJhYjc5NGRjZGU2NDQ5YzI4NTdiMGEyY2I2NzI2YTYyNjczNmY5IGxlZ2FjeS10cnVuaworMjAzOTcgMzI3ZWZiNTlkYmNkZTdiNjBjYmEzOGMzYWM5YzM4ZjJhZjczMTc3ZiBsZWdhY3ktdHJ1bmsKKzIwMzk4IDhlMTQxNWVmOWIyOGQ4MzI2ZWJmZTI1YmNiYzVjNDExYzYyM2M2NzAgbGVnYWN5LXRydW5rCisyMDM5OSAxMTE1M2MxNDE5OTkzMWFhYTY0NmIxMTYyYzc5ZDdmYTU5NTQ4MWMzIGxlZ2FjeS10cnVuaworMjA0MDAgNTVlZTE1YzRlZWU2ODNmNGFhYTI1MGIwOTQ4MmY1ZTRiNzJlYjQyZCBsZWdhY3ktdHJ1bmsKKzIwNDAxIDA2OGZiNThhMTFkNDg2ODFjMTVhZTk3MDNiODVjMjAyMmFmYWM5NzIgbGVnYWN5LXRydW5rCisyMDQwMSBkNjExMjc2ZTlhZDUzYjVkMzJkMWU4MDY1ZTFkODExYzMyZjdkOTZmIGxlZ2FjeS10cnVuaworMjA0MDMgN2I2N2ViMjZiMzlhYjY4YmY1NjJmNzM2MmRjOTVkYjVlNGFlNjQyNyByZWxlYXNlMjAtbWFpbnQKKzIwNDA0IGZkMDY4M2NiNzMwMTJmYWFjMDVmYjNkMGM5MTY2NDhkNDJkMTM2ZmUgbGVnYWN5LXRydW5rCisyMDQwNSA5MGFlMzdmZjYxN2ZjZWI2MDQxNjM5MjkwMTcxY2Y1ZDMzNWI3OWU3IGxlZ2FjeS10cnVuaworMjA0MDYgNzZmYWU2MTQ1MjZjZWMxZWI2YjU1ZGE5NWI5YzZlZGUyYzcwODdhYSBsZWdhY3ktdHJ1bmsKKzIwNDA3IGM2NTFjZmQwZmZkNDg4YTVjYzM3Y2M5ZDhkOTYwYmFmY2Y3NTRlOWIgbGVnYWN5LXRydW5rCisyMDQwOCA3NzNjNjRkMzhhYzY4OTdjZTRlOTk4YWI0ZDZlYWE2MDUyMzhkZGY1IGxlZ2FjeS10cnVuaworMjA0MDkgODE4MjNjZmI1YjE0NjgyM2IzNjIxNzJkZDgyOGIzZDAzYTgxYTlmZiBsZWdhY3ktdHJ1bmsKKzIwNDEwIDMzZDcxZTgwYTA5Yzc3MzE5MDk0ZGRhYTA3NDIwZjY5NGUzMjE5ZDIgbGVnYWN5LXRydW5rCisyMDQxMSAxZTIzZDkxYzBhODIxYzA2ZGM2ODI3MmI0MDJhZWMwZjY2NWZkMDVmIGxlZ2FjeS10cnVuaworMjA0MTIgZjkzOWNlNTJhNzM0ZDVkMmY2YjA0YzIwNjgwZDcwYjEzYjEzNmNlYyBsZWdhY3ktdHJ1bmsKKzIwNDEzIGY5ZGZkNTg3YzE0MmI2OGRkYmRmZTljY2ZjOWRiZTM3Yzc1MTdiOTEgbGVnYWN5LXRydW5rCisyMDQxNCAwNWJhZDJmMDViZmE2ZWNlZjJmMTRlNDA4NzNhZjZiYjhkN2ZkYjVkIGxlZ2FjeS10cnVuaworMjA0MTUgYzljYWU1YTcwYjQ4Mjk3MjEyNTA3ZWJjNDhiZWIxNDdiOTkwY2UwNyBsZWdhY3ktdHJ1bmsKKzIwNDE2IGIyODQwYTNjNTYwMWQ3NzQzMDAwMjQxZjY4NzFlNDVmYmY5MmU0OTUgbGVnYWN5LXRydW5rCisyMDQxNyA4Mzg5YzRkZjQ4OGRiMDViM2UwMTUwYmI3ODczZDAzNWIyZTM2N2NiIGxlZ2FjeS10cnVuaworMjA0MTggNzllZmJjOWEwM2RlZmMzMmUzNzAwOWUzOWQ2YTVhMjdjZmE2MzI0MSBsZWdhY3ktdHJ1bmsKKzIwNDE5IDVmYjBjNDY3NTNmOTgzMDEwNzczYzI5MjlkZjE3NzFlMjViODdjMzQgbGVnYWN5LXRydW5rCisyMDQyMCAwZjVhMjZhYTRlNGEzMGFlNjRiM2QzZDFmNmRmNzkyZjQwYTQ5NTc0IGxlZ2FjeS10cnVuaworMjA0MjEgMDFiZTA4MzMzMzA4ZWEzNTNiYzQ3ZDZjNjQ5MGMyMzE4YTRmMGEwNSBsZWdhY3ktdHJ1bmsKKzIwNDIyIDUwMGQ1MzQ2MGY1NjA4MzU4YjA2MWFhNTg2MjM5MWVlZDUwZjFjNjEgbGVnYWN5LXRydW5rCisyMDQyMyBjNDQ0MmZiOTlkMjY1ZmIxNDk4YzkxMzg1ZTI0MWNjOTU4NjA5ZTI3IGxlZ2FjeS10cnVuaworMjA0MjQgMTdhNzFkMmI4MWY3Y2Y3ODU0MmNiMzUzOGY3OTY5Mzg5OGU4MWYwOCBsZWdhY3ktdHJ1bmsKKzIwNDI1IGM0OTdmYTNmZTM4YTJlM2M4NWQ5MjZmZTFjYWYzOWY1MmNkYzRjYzEgbGVnYWN5LXRydW5rCisyMDQyNiBkZDZiZTYyNWE5MjMzZjg1OTU5MDIxODk0YmUwOTNiMDI1OTM2ZjI3IGxlZ2FjeS10cnVuaworMjA0MjcgMWNmZWY4YWRlMjcwNzM5MDM0MGU5NzIyYjYwZmUzNGRjMWNmMTM4NCBsZWdhY3ktdHJ1bmsKKzIwNDI4IDAyNTkyOWMxNTMxZDNkNzZmNmRlNGNmN2JmMmNlOTFkY2RjNWVmNGQgbGVnYWN5LXRydW5rCisyMDQyOSA4M2M3YjRiNzU2NjhmZmNkNDcyMmVlZDUxMzljMTBmOGI3YWQwZTI0IGxlZ2FjeS10cnVuaworMjA0MzAgZDJkYTY4MWNjYjU0ZGY0YjBiMmU2ZTNkZTc2M2MzYzBjODBiYWE3NyBsZWdhY3ktdHJ1bmsKKzIwNDMxIGUxYzUwN2NkYzZmMWY3Y2ZkNzcwMGU4ZGVhNDBmOWQzZjllYmY1NDYgbGVnYWN5LXRydW5rCisyMDQzMiAxNjJmYTZiMTM2NmYzYjRhNDdjMmNkYWIwYjQ5MmE3OTczMGI4Zjg2IGxlZ2FjeS10cnVuaworMjA0MzMgZjE3YTgzMGUyNWVhYjM0ZTIxODAxNTU3M2E5OWFjMGVhODY2YTVjZCBsZWdhY3ktdHJ1bmsKKzIwNDM0IDUyYThlMzVkZjEyNzk5NGMyOGI1ZTUxMTcxZjhjYzBlOTY4NDYyNWQgbGVnYWN5LXRydW5rCisyMDQzNSBlMGE1YTYzYWQ3NTY5NjFiZGI2YjQ0YjAwODA0MWRhNGQ2MjUzYWJhIGxlZ2FjeS10cnVuaworMjA0MzYgNDQ5MzE5OWQyYjk1NmVjMThjYmJjMmJmMzNlODIzNDA1ZDY5MGUyNiBsZWdhY3ktdHJ1bmsKKzIwNDM2IGZmMDY1ZTY3NGFmNmM5YWI4OTViZDllZmY3ZDllOTAzOWEzNzZjN2QgbGVnYWN5LXRydW5rCisyMDQzOCA0OTA4NWJiN2JjZDk5NDE2OTljOWEwYWYyOTVhZGRkZDY1MTZjMTQzIGxlZ2FjeS10cnVuaworMjA0MzkgZTUyMmVkODBmYjM5MzNhNjFiNmE1YWEwYzdiZmNlZTViM2ZjOWE1NyBsZWdhY3ktdHJ1bmsKKzIwNDQwIGRhNWVhYjMzMTQ3Yjk1OTViMDRjMzI0YmQ3ODNkM2YyYTUwNTUwYzggbGVnYWN5LXRydW5rCisyMDQ0MSA2MjUyNjkzYWZkOWFmMWNiZDlkNmQ2OTQ2YTMyMzc5YjA2Y2RlOGMzIGxlZ2FjeS10cnVuaworMjA0NDIgMzU0YTU3MWEwNWI0ZjRlNTEwODE4N2M1M2U0M2RkMzUwMjljMjhlOCBsZWdhY3ktdHJ1bmsKKzIwNDQzIDY5M2ZhNmI0MWRmYTVlMGJjZTZhMjVjZjU1MDg3Y2NiZDIwZDhkNjIgbGVnYWN5LXRydW5rCisyMDQ0NCA4NGQ3ODM5YmRjZjYzZGMwZTM1OTRhYzg5YTQ5N2M4MWRlNzA5ZmQ1IGxlZ2FjeS10cnVuaworMjA0NDUgY2JjOWY4ODY1NTk1ODljYzRkNDA4OThiMWMwODEwMWNmMWZjOTM3YSBsZWdhY3ktdHJ1bmsKKzIwNDQ2IDA1NDM2YTc0MDEyZDFjNjAyNmQ5MjkyNTFlYWNhZDZhY2E3OTYyN2MgbGVnYWN5LXRydW5rCisyMDQ0NyAxZDk5NTFkMTI2ZjVjMzQ1OTA4ZTMyMDUyNTQ1ZDc4ZTM2ODMwYWM4IGxlZ2FjeS10cnVuaworMjA0NDcgMDIwZTk1ZDgxODBkNzk0M2ZlNTQ3MDFlMWRiMGE3ZDdkODdlMmIxZSBsZWdhY3ktdHJ1bmsKKzIwNDQ5IDE5Njg2YTYyNzlmNDc1ZWI4NzExNzU4YjRjYTMzZDI3NjNjMjZkYjYgcmVsZWFzZTIxLW1haW50CisyMDQ1MCBmZmYzMDIyMWQxOWEzNGMwZWViZmRkZGEzMGI2NTk3NWE2ODZjNDhlIHJlbGVhc2UyMS1tYWludAorMjA0NTEgNzMyZGRlZTY4OTU3MjA4YjFlN2VmYTI4MDk5NzMzNDk3NTBjOGM0NyBsZWdhY3ktdHJ1bmsKKzIwNDUyIGQwNmJiYjhjNDkzYWMwMTY5N2VlZjQwMTQ4NGExYjRjODVkOTRkYTQgbGVnYWN5LXRydW5rCisyMDQ1MyAyOGMxNGE3OWFkMjI1YjUzMjE1ZjNjZjQ0Mjc5Y2VmYTIwZTg2N2FjIGxlZ2FjeS10cnVuaworMjA0NTQgZGI5MjhhMjc3ZjhiMmU4NDg1MzNkMzk5ZGJiMjYyMzI1ODcwNTc4ZCBsZWdhY3ktdHJ1bmsKKzIwNDU1IDM2MjMyZjU0MzIyMGVlZGM4ZDNhZjdhMTE0OTMzNjM2NTdmNzZmNmYgbGVnYWN5LXRydW5rCisyMDQ1NiA4OTVmYzVjOTU3NjNlZDEwZDdhNGQ3NGRiOTgxM2MxMWRhMTQ3MzhjIGxlZ2FjeS10cnVuaworMjA0NTcgMjgzNjgzYjVlNzY3Yzc5MTRlODE4MGVlZmU5YTA4MGM2ZGUzNjc4OCByZWxlYXNlMjEtbWFpbnQKKzIwNDU4IGI2ZjA4ZDI3OTViNWUyNDQyYzhmYWFmMDUxZDlmOWVkMGVkNDg3NjcgbGVnYWN5LXRydW5rCisyMDQ1OSA4OGE1Yzc2ZmZjOGQzZDhhZWUzNDI0OTYxYzlkYzdlNWQyZTIzMjhhIGxlZ2FjeS10cnVuaworMjA0NjAgNDJiY2FmZmE1ZDliMWFlNzQ3YjNjNTJhNjgwZmM3OTdhMTUwNGJhYSBsZWdhY3ktdHJ1bmsKKzIwNDYxIGQ5NDQ0MjNlNmZmZjZkYzI2Mjc2ODNjZDAyY2U4NmIwYzEwYWM0OGUgbGVnYWN5LXRydW5rCisyMDQ2MiBhOWFkOGRlYWMxN2Q1YjJmYjI2ZDM5MTNiYjZiYzQzY2E0NmM4OTM3IGxlZ2FjeS10cnVuaworMjA0NjMgMDQwNWM2NTdkMmFjOWZkZGYyZGZmNjdkOGJiNTNjZTNjODc0ZGM2ZiBsZWdhY3ktdHJ1bmsKKzIwNDY0IDc1ZTMyMmQ2MDRmMTZlMjk4NzJlZTMxZjlkMDFmMTA2ZGFlZDg3OGYgbGVnYWN5LXRydW5rCisyMDQ2NSAzZWFjMjBhZmQ1NGFhYWQ3NDc3MjY2ZGFjYzkwNDJmNGQ5MjY2NTNiIGxlZ2FjeS10cnVuaworMjA0NjYgNTE4ZGI0NTQ4NjMwMTlhNGU4ZmFiYjNjMTRlMmFmODk0NTQwYzNhOSBsZWdhY3ktdHJ1bmsKKzIwNDY3IGQxMTJmMTM1YWY4ZDE0MTlmMzc2NzJlYWZjY2U5NzU0Yjg4N2M5MGYgbGVnYWN5LXRydW5rCisyMDQ2OCAwZGQ1ZDZkOWE5NTJhNmYxMTEwNTQ2MDgzNDQ1MmE0YWMyMWEzN2U2IHJlbGVhc2UyMS1tYWludAorMjA0NjkgNzA3NDMwMzg0NjAzMTkxN2MyNjMwZDNmOThjZWVhODU2ZDEzZWI3NSBsZWdhY3ktdHJ1bmsKKzIwNDcwIGNjYzQ0ZTU0M2JlZWYxN2ViODQxMDhiNDU5ODFmN2NlM2ZjNTAyMjcgbGVnYWN5LXRydW5rCisyMDQ3MSAzZGQ5ODYwZTRlMmQ0YmQzZTdkODI0NjI0YzI2ZGNlNDlkNGNhZmUyIHJlbGVhc2UyMS1tYWludAorMjA0NzIgMjI4ZjRiOGQxOGYwMWE5OTA4NzM5YjQxYjcyZmI2NTc1MDgzMzM1YyBsZWdhY3ktdHJ1bmsKKzIwNDczIDQ1MjY2NmNiMjgzZGY4YjkyNDViMzM5MDVmYThkOTkxN2YwMzBkNDYgbGVnYWN5LXRydW5rCisyMDQ3NCBjNjU3YTM5Mzc5MDIwNzcyNjVkZTBhZGM0YTA2ZWI3MWU4NTkwNTFkIHJlbGVhc2UyMS1tYWludAorMjA0NzUgYzE5MzdmYWFiYjIzNzQ4YTRlMjgzZTdjNGU5MGM3ZDJhYjc3YTBhMiByZWxlYXNlMjEtbWFpbnQKKzIwNDc2IDJmY2IzZmE2N2UzYjY4Nzg2NjRjNTJhMzQ3OWNjYzFiYjMyYTcwZGQgcmVsZWFzZTIxLW1haW50CisyMDQ3NyAwZDcwZGFlYjg5NmUxZWYzOWI5MDQwMzIxOWZmMjRjOWU0ZWZkMDJmIHJlbGVhc2UyMS1tYWludAorMjA0NzggZjk5ZGYyYTBlMmNmOWM2MjMxMThhYzZlOTkwMDE4ZjNiZmIwZDJjOCBsZWdhY3ktdHJ1bmsKKzIwNDc5IGQxNmRjMjZlYzQyN2FiMDBiOTU0MGU4YzgwYzE2MGUxNzgyNWMyZTMgbGVnYWN5LXRydW5rCisyMDQ4MCBjNWY3MTkxY2U2N2U5MzRiZDFmMTJiYzVkZDE3Y2UzYTU4NjFiZThkIGxlZ2FjeS10cnVuaworMjA0ODEgN2ViODdjZjE2YTUzNjBjMTQ0YmM1MjlmMjlmMDAzM2FiY2M0NjNhYSByZWxlYXNlMjEtbWFpbnQKKzIwNDgyIDVhNTgwNWE0NWRiZjQ5NDExMWUwYWFmOGY0MjFlZjYzMWY3MTg1NmQgbGVnYWN5LXRydW5rCisyMDQ4MyA5NmY5Yjg2YjdiM2RkZDY3NjBkMGVhM2Y3OTYxMWZjNTgwNGQxODIxIGxlZ2FjeS10cnVuaworMjA0ODQgMWUzMDQyYTRlNjBlMmUzY2YxMjQ3ZjcwOWNjZmI5YWE5YTE4MDQ3OCByZWxlYXNlMjEtbWFpbnQKKzIwNDg1IDQ0YTNhYzU5YzI2OGRkOGVhNTIwZjhmYWRiODA4MmU4ODVkZWIzYjkgbGVnYWN5LXRydW5rCisyMDQ4NiAxZjNhMTk0ZTIxZjMxZjQ1N2ZiZGQ0M2I3ZTZjYzkyMjk0M2MyYTlhIGxlZ2FjeS10cnVuaworMjA0ODcgMDBhNmIwNjA1MTEzNTM1ZTNmMzE4ODM4ZTQ4NTcxNjU4OWY2YjZiYiBsZWdhY3ktdHJ1bmsKKzIwNDg4IDU2ZjFiOGJhNWNhMTdkMWJkMjk1MWFmYzU4NTVmNDE4NDk1ZDE1ZTEgaXRlci1icmFuY2gKKzIwNDg5IGJmOTRhZjM5NmIxZTEwN2FkM2NkOGYxMTY3MTZiMjc2ZWE4MTJkYjggbGVnYWN5LXRydW5rCisyMDQ5MCAxZDcyNmY1Y2Q1N2EwZmRmYmE2MjJmYWFhMzVmZWMyZDY3NmM5ZTJiIGxlZ2FjeS10cnVuaworMjA0OTEgMWI0OWIxNzdhMTA1ZTEzY2NhMWYxYzRlN2I0MWZlZWJjNDY1ZGIyNiBsZWdhY3ktdHJ1bmsKKzIwNDkyIDMyZTdkMDg5OGVhYjg1ZGU4MTM0ZjkzMjY4MGE4NWM2ZTdhYmNlYzAgbGVnYWN5LXRydW5rCisyMDQ5MyBjM2JiMGZmMzk2ZGNjNjMzY2I2NzE5NmE0Mzc3NjEzM2Y3MDIzZmY5IGxlZ2FjeS10cnVuaworMjA0OTQgZTE1YWI0ZTY1MmFkY2I3ZmE1NTZhMTgxNTRjYzExNmQ0OWM3YjU2MiBsZWdhY3ktdHJ1bmsKKzIwNDk1IDFmZThlNTBlNmUxYjk4MmQ3YjdkZDFmNjhlNmE5NGQ0MDZhMzViMzUgbGVnYWN5LXRydW5rCisyMDQ5NiBiNmRiZmM0NWFjOWJmMTkwMzhlMWNkMzI1OGQ5YjlhYzIwODQyZjM5IGxlZ2FjeS10cnVuaworMjA0OTcgZjYzZjc0OTM2NGVmZmRkMzZlMGY3Yzg0OTkxOGQ5YjY3OTMyOTU1NCBsZWdhY3ktdHJ1bmsKKzIwNDk4IGQ2MzhlNDE5YzMwNDUyZDlkMWQ3ZmU5YTk4NjFmZDBiOWQ0NWVmM2QgbGVnYWN5LXRydW5rCisyMDQ5OSBkMzI0YWUyODkyZmZhNGFiZmIyMTdmNWE1OTg5YTdkMmQwOWE5MGU5IHJlbGVhc2UyMS1tYWludAorMjA1MDAgNGQ3ZmIyNGZlNzk1M2Y5MGY4MzY0YjJhMWZhZDkyNmIyZTZiYmE2NSByZWxlYXNlMjEtbWFpbnQKKzIwNTAxIDRhYmQwNzJhYjNkNWI1YmRhMWNkNmFjYmQwYWY3MTI5MjIxM2FkNWEgbGVnYWN5LXRydW5rCisyMDUwMiAzODdlODBlMTFhNzk1ZmNlNTY3NjdjZjQ5ZmFjMzIxYTNlN2NkZjFlIGxlZ2FjeS10cnVuaworMjA1MDMgMjJhZjE1Zjg0MTBhOGIyNzczNDM0ZDlhZmNkYWMyMjhjMDQyMTg0MiBsZWdhY3ktdHJ1bmsKKzIwNTA0IDc5ZjBjZDNhNzFhMWU5OTZlZDg0M2EyMGM3MTcwY2I4ZGNiYzkyY2UgbGVnYWN5LXRydW5rCisyMDUwNSA2MjRmYzk3MTNkMThiMTEwMTU2ZGZiNjY5MmQ2YTVmMjYxZjBhZjg0IGxlZ2FjeS10cnVuaworMjA1MDYgMWViMDBhMTIzYTBlY2Q3ZDY4MTQ2MjA5MDQwMzViMGJjNTk1MWJkNiBsZWdhY3ktdHJ1bmsKKzIwNTA3IGMxOWQ2ZGI2ZTk5YjdhYWM3Y2Y3YzhlYzlhMjBmYWM1NTgwNjgyNjQgbGVnYWN5LXRydW5rCisyMDUwOCA3ZGNkYjE2YmQwNjhjY2FlYzU5MTc0NzU2ZDc5OWMzYjQyOTc3NDQwIHJlbGVhc2UyMS1tYWludAorMjA1MDkgMTg4NTQxN2Y0NWRhMzk4NTViOGM0MjAyODM2YTJmNDNiMDA2N2UwYSByZWxlYXNlMjEtbWFpbnQKKzIwNTEwIGI4MzBkZjA4M2E5YWRkMDcwOWI2OGQwYjUxOTIzMTZhMDExMTg1ODYgbGVnYWN5LXRydW5rCisyMDUxMSA3YWNiYTc4ZTFlMDkxZGJiN2VlYzI5MDgzMDE2ZjViYjkxYzE3OGU2IGxlZ2FjeS10cnVuaworMjA1MTIgYWFjNjVmNTBkZjZmZjE0NGI2NzAxZmU1MWExNjNiMzBhNmJjZDAyYyBsZWdhY3ktdHJ1bmsKKzIwNTEzIGI0NGJhN2MwMTIxNzc1ZDY0NDEwY2YxYzkzZDAyNzViNWM4MmE0YjQgbGVnYWN5LXRydW5rCisyMDUxNCAxYjczMGJmM2Y4ZDJhYzFkMTUyMzdlYzllZWU0ZDUyZDI2N2RmYzZkIGxlZ2FjeS10cnVuaworMjA1MTUgZWZiNWM4MTRmZmI2YWI0ODU2Y2U4MjJiZjNjZWE3MzE2MzNiYzZkMSBsZWdhY3ktdHJ1bmsKKzIwNTE3IDk5ZTk0NmE4MjY5OTIxNzA2MGI5NWRhNDYyYWI3ZjdhZmIwMDZiMmEgZGVzY3ItYnJhbmNoCisyMDUxOCBlMmFmOTBiNjFiMmJkMjY3OWI0ZWFjY2UzZjg0ZDM1ZGM2NjRkYzE2IGRlc2NyLWJyYW5jaAorMjA1MTkgYjdhNzEzNWJjY2M4YjNlMWFkMTQ4NWU3Zjc3MGVlNmQ0MTFkZThhMiBkZXNjci1icmFuY2gKKzIwNTIwIDBiNWQzZTAzMTIwMThhZGNjZDA5MDA3NmViZTExZjBhOGRjYmZiMDcgZGVzY3ItYnJhbmNoCisyMDUyMSBjOTdiMzcxMzZkODNlMzUzMDA1MDliZWE1MmE0NWIxMWFlMWVhYmEzIGRlc2NyLWJyYW5jaAorMjA1MjIgNjgxOTMxMGRlODI4NDQ3Y2RkZmZmMGQ2MDE2NTA2OTFhZmQ1NTliYSBkZXNjci1icmFuY2gKKzIwNTIzIGExZjA3ZmNjM2Q0MTNmNzUyN2Y0ZmQ5NTIyMjBlM2M5YzcwM2VjMTMgbGVnYWN5LXRydW5rCisyMDUyNCA0NGEwYTlhMjc3ZWY2OTFhM2NiM2RiNjg1YWYxMDU3YjkzODYwODQ1IGxlZ2FjeS10cnVuaworMjA1MjUgMTY4NjA4MGE3YzZjMzc2ZDM3YjA1ZWUyNTIyOTdmYjkwNDc4ZDQ5MSBsZWdhY3ktdHJ1bmsKKzIwNTI2IGQ5MWZjMDIyNjhkOGQwMTBiNzI1YjEwZjAwYjU3NGM5ZTEzZTdjYWYgbGVnYWN5LXRydW5rCisyMDUyNyA5YzExMzJmMzA5NWEwNjNhZTRiZTZjMzg3YTYwNzIyZTE0NTQ2ODM2IHJlbGVhc2UyMC1tYWludAorMjA1MjggOTUwZjFjM2E4ZTZhYTE1ZjFkNDM3YTI4MjIxOTAzMTZkYjJhMDM2NSByZWxlYXNlMjEtbWFpbnQKKzIwNTI5IDdlOGVkNmUzOWViZDBkNzU1OTNmMDFhZDMxMzg3N2U5MWRlYmIwN2UgbGVnYWN5LXRydW5rCisyMDUzMCA5MWNiZDAxYjg1Y2JkZjkxYWMzNTFmN2Q3ZDEwZDYzYzcxOTkxNmY5IGxlZ2FjeS10cnVuaworMjA1MzEgYTk0ODVkNDA0ZjA1ZDI0MTA2MzcxMTQ1MGExOTc3NmNiODg1NDU4ZiBsZWdhY3ktdHJ1bmsKKzIwNTMyIGRhNDgwOTk0N2EzMjEwNWI4ZjRkMmI3NTI2MWNjZjFlNTU2ZTI0MDEgbGVnYWN5LXRydW5rCisyMDUzMyAyNDkxMjNjMWY0ZGMxMTM0MGE0YjQwYzdkZjQ1ZDJmYzMzZTQ0NjdhIGxlZ2FjeS10cnVuaworMjA1MzQgZmNkZGU2ODAzMzFlNWFlY2M0ODQyYjIzZjEwMDM5ZDAxNjU4MmYyZiBsZWdhY3ktdHJ1bmsKKzIwNTM1IDdmNWUzZTZiMmEzOTIwNzUwMGMyMGUwOWM3ZGIxZmE1ZGE1NTRjZTUgbGVnYWN5LXRydW5rCisyMDUzNiAwYmMzMzc3ZDBkNzIwOGJjMjIzOWJhYzQwNDc4YzYwZmU2NjAzNjg4IGxlZ2FjeS10cnVuaworMjA1MzcgYjdkZjg4YTc4YWRiYWI4MWQ5Zjg3YjY4MDU5OTk2OWY1YWYwZDZkOCBsZWdhY3ktdHJ1bmsKKzIwNTM5IDk5MjFhOWQyN2Y3MjhjNjE5MDU2MTNlZjYyZWFiMDNmMTljZTIzYzUgbGVnYWN5LXRydW5rCisyMDU0MCA4ZmY3NmNmMzBhOGNjMzdjZjZlZWEzNmNmNjA0YjRiZWI3OTliODQ4IGxlZ2FjeS10cnVuaworMjA1NDEgN2Q2NzZiNDIzN2E5OTMyZjkxM2ZiMjgxMzE3ZGMyYzkxOTEwMTAzOCBkZXNjci1icmFuY2gKKzIwNTQyIDMyZTczNWJlZjBiYzI5YjA1NjkzNjY0NzRkMTEzY2NiM2VhODg1YjcgbGVnYWN5LXRydW5rCisyMDU0MyBiZDY1Zjg4OTNiZTNhZWY0MDUwMTRjNWEzMjc5Y2NhYTMzM2QxMTljIGRlc2NyLWJyYW5jaAorMjA1NDQgYjEyNTQxNjM5NGZhY2EzMDY0ZmZkN2YyMTI4MjBkYjRlYmY2NzM2OSBsZWdhY3ktdHJ1bmsKKzIwNTQ1IGExOWU2OGUzNjVjNzU3MWQ5Nzg0OTQ2MTMxYjM4ODU3ZGMyMWZmYzMgZGVzY3ItYnJhbmNoCisyMDU0NiA5OTM0MjI1ZmUyOTc4Mjc0MGJmMGJmZWYwOGUyYTYwMGZiNjg0ZGMwIGxlZ2FjeS10cnVuaworMjA1NDcgOWJlNzc1OGE4Yzk0Yzg4OTY5NzQzMTlhNjMzMGRlMjRkZDMxMDhlNiBsZWdhY3ktdHJ1bmsKKzIwNTQ4IGIyODIzNjM0OWRlNTE0NzM3MTExZDNjNWU2NmM0ZjExMTIyYWIzNzggZGVzY3ItYnJhbmNoCisyMDU0OSA5ZTgxZDM5MWI3NjU4OWQ4NmZhY2M0NWRhYzJhZDM1NWMzNzAwNTY3IGRlc2NyLWJyYW5jaAorMjA1NTAgOTg3Y2ViOWVjMDIzMzNkYzBiMWQwMzUzNjU0ZGI3ZDc4NWQyOGM5OCBkZXNjci1icmFuY2gKKzIwNTUxIDg4N2I1Mjk3NjUyYTNjNmZhZmFmMGQyZWU0YWJiNjJiMDdjYTE0YzMgZGVzY3ItYnJhbmNoCisyMDU1MiBlMDZjMzZjMTNmMTI4NjI0M2VkMDg1ZGYwNTA1NTQzNTc4MWU0OTE0IGxlZ2FjeS10cnVuaworMjA1NTMgNTNlZTBmYTY3NjYxN2E5MTdjOWE4MmE5ZTcxMWRjMjZlNGFmMDBmMCBkZXNjci1icmFuY2gKKzIwNTU0IDAxM2RlYjVlMTcyYmY1Yzk0YTEzNmUxMTdmYTA1MTVlNzdkMGI3YzUgZGVzY3ItYnJhbmNoCisyMDU1NSA3MDM3ZDFmNmU3OWFlYjQ2OTQwMDFmN2Y5NjEwODQ2NmY1MmNmNTI0IGRlc2NyLWJyYW5jaAorMjA1NTYgNTg3ZGEyOWQ2OWQ1ZDBjZTk3MTQzNTQxNDE0Nzk2ZDZiZTc5M2MxMCBkZXNjci1icmFuY2gKKzIwNTU3IDE3MjEyNjJhYmFhODJhMzM3ZGJhZWI0NTczZjIxZjk4MTc3NGZlOWMgZGVzY3ItYnJhbmNoCisyMDU1OCA0YjgxMWE3MWJlNWMyZmFkOTdhZTVjOWZhMjIwYWIyOWNmMWM3MGJhIGRlc2NyLWJyYW5jaAorMjA1NTkgYWUwNzU5OWFkZjMzZjdhODZkYmQ3NWU1Y2ZiN2VmNjcyODExZjc3NSBkZXNjci1icmFuY2gKKzIwNTYwIGUyZGFlZjA2ODQ5NmJjMTM2YjYxMzE3NGM3NDUwMDgzN2JhNGUxZDYgZGVzY3ItYnJhbmNoCisyMDU2MSA1NmM1NDQ1ZWM4MzU4NmU1Zjc3N2FhZmNhNWQwNmE2MzNmMzZlNThmIGxlZ2FjeS10cnVuaworMjA1NjIgYWE3MDg3YWM2ZDk1NTliYzk5MWY4ZGQwOWY0ZGVjZDRiNzQ2NzAwNSBkZXNjci1icmFuY2gKKzIwNTYzIGJkMzEzYTVlMjBkNzg4ZmY5MGQxMTA1MDU3ZjM2ZjlmNDFkZjY0MGYgZGVzY3ItYnJhbmNoCisyMDU2NCA1ZGJmZTgzMTYyMzYzODljZTdhM2Q5ZTYwYmQ4ODMzOThjNGExZjc1IGxlZ2FjeS10cnVuaworMjA1NjUgYjVmNTgzZWVjYjIwM2M0YzI4NGIyMGNjMzQzYjA0Yzc1MjAwMTE3MCBsZWdhY3ktdHJ1bmsKKzIwNTY2IGQxZWM2NzliYWEzZGI4MmFiODVhZGM4MDdjMmFkMTlkMGUxNTBjNDMgbGVnYWN5LXRydW5rCisyMDU2NyA1NTdhYWQzZTc0YmE2MzRiMDJmZWI4MDc2ZDEzYjc1YjJhMjk0M2YwIGxlZ2FjeS10cnVuaworMjA1NjggNmM4MjI3N2U3N2YzNTdkNzRhMzU3MTgwNDc2ZDRjNDA1ODBiZTA2ZSBsZWdhY3ktdHJ1bmsKKzIwNTY5IGRkMjRhYmNiMjMzMWM3OGNkNjhkNWVhNGQ3MjkyOTE1ZThjYzk0MTcgbGVnYWN5LXRydW5rCisyMDU3MCAxMTE4MWNkMzg5N2RjMWI4MDFjYzFkMTk3NjRiYzMxYTcwNWNmNWE5IGRlc2NyLWJyYW5jaAorMjA1NzEgN2EzNjdhZDQzZjM1MjM4ZDQ2NjRjY2ZiOThhZjRlMDE5NGFjNzM3OSBsZWdhY3ktdHJ1bmsKKzIwNTcyIGZhODMyNmNjNzYxY2IzYWZmZDY4MDJlZTAzZTEzYjM1YTVmMDRhNzQgbGVnYWN5LXRydW5rCisyMDU3MyBlYmMyNGExMDQxMzI5YzVlZWYyZTUwYWU5YzlmNmE2NDg2Mjg4ZWQ3IGxlZ2FjeS10cnVuaworMjA1NzQgYTg0ODc0Njg3Y2IxY2RlMzg3MTc4MDk4NjVjNTU3ODhhMDc3YjUxMSBsZWdhY3ktdHJ1bmsKKzIwNTc1IGE5N2UxOGU0OTlhOWNmN2IxYmI0YzBhOWEyM2Q0YzkxNTZmMDU4NDUgbGVnYWN5LXRydW5rCisyMDU3NiAwNDcwYmFiZGFlNDlmZWU4MzM2NDg0ZTRkMTIzOTc4N2RjZWU4ZWQ4IGxlZ2FjeS10cnVuaworMjA1NzcgYTY2OThhMDE2YWZlMjA2MWY3Nzc0NWIxNzJiOGUwMjYyNDE0ZjcwMCBsZWdhY3ktdHJ1bmsKKzIwNTc4IDA4NWY0NjBiMGUzYjU5OTRhMjRiZDg0MGIwMjI5YWVhZjYwZGJjYjcgbGVnYWN5LXRydW5rCisyMDU3OSBkNjQ5OGIxZWY1MGQxY2Q5M2YwZDcyNjQyOTNiOGVmNTMwMWZhM2MyIGxlZ2FjeS10cnVuaworMjA1ODAgZGViOGE1ZTE1MWEzNDZjZDU0YTY0YjA0NjdjZGZmMGExZGUyODZiOSBsZWdhY3ktdHJ1bmsKKzIwNTgxIDMwZDc1MThlMTdlNWJmYTkzNTJkMjU2OTg1YWM2NGM3MDYwZTQ1ZmQgbGVnYWN5LXRydW5rCisyMDU4MiAwZmY0Y2RmMzRmYzFhNTBmM2UwYjZmNDVhN2Q3NGFkZWYxZDA2YTVmIGxlZ2FjeS10cnVuaworMjA1ODMgNjQ1MjMzMDc3OTRlOTM1NDdjNTg1NjI1YTA2YjRiNzFmM2ZiZmMzNyBkZXNjci1icmFuY2gKKzIwNTg0IDViNmQ1OTYxYzllMzhlMGY2MmYxOTQ4ZGJiMzYzMzNjNjBmNmJlNzQgbGVnYWN5LXRydW5rCisyMDU4NSBkNzY2NDliZDM4ZDAxYzk2ZTVkZTI2YzFjZGY2YjAwYmMzYzE5MTRmIGxlZ2FjeS10cnVuaworMjA1ODYgYjkwNzZkODcxOGFiMWQyZGJhZDBhMGM0NGRhYTA4ZmQ5N2YwMTdlMiBsZWdhY3ktdHJ1bmsKKzIwNTg3IDRjMjliMDRlNGQ2ZmMxODZjNTFmZGYxNDIyZThhMTI2OWI3NTE3NDUgbGVnYWN5LXRydW5rCisyMDU4OCAxMmM4MGI1NzBkMDBhMGVjYjkyOWI4Y2JlNjdhZmJkNDVjYzExMjQ2IGxlZ2FjeS10cnVuaworMjA1ODkgNzZlZThiNjJlZTJhODJkNjIzYzZjNGUwOTFhNGM4Y2ZmMTBlZGM2NiBsZWdhY3ktdHJ1bmsKKzIwNTkwIDE1Y2NlM2Q4MGQwZmQ4ZDNiYjFhNzZkMzA0MDdhYTk2MjQ4YjUyYTUgbGVnYWN5LXRydW5rCisyMDU5MSBkN2QwNTEwM2MwMjNmYzY0NTk5Y2NhZTM0ZjFmZDEyNDM3YjEwMmU2IGxlZ2FjeS10cnVuaworMjA1OTIgOGQ5ZWI1YTRlYmNkOThkZGI1ODRlOTQ4NzBhZDJhY2FiNGVlNzU4MiBsZWdhY3ktdHJ1bmsKKzIwNTkzIDk5YjA2YTY0OWIxNDdiNzUwYzdkOGFkZjVlNjEzNmI4OTI5OTJjMDYgbGVnYWN5LXRydW5rCisyMDU5NCA3OTQ4Y2Q0Zjc2NjM3NDI0M2ZjYTE0ODdjYjZlNGFhZTdlNDdmY2IxIHJlbGVhc2UyMS1tYWludAorMjA1OTUgODY0M2U2ZGUxM2RmYTcwMzVhNGU4ZGU0M2IyM2I3ZGEzODRlYjBiNyBkZXNjci1icmFuY2gKKzIwNTk2IGU2ZTgxZGNlYmZkZTVkOWU0YzI1NjNhODEwYzAyZjllMGU0Y2Y1NGMgbGVnYWN5LXRydW5rCisyMDU5NyA5OGYzNGM0NjQzZTk4MDAxMjRjYmU0ZGRmMGY2NGY4N2M0MWZmMmE4IHJlbGVhc2UyMS1tYWludAorMjA1OTggMGJlMjc3MDM5ZDkzYjQyZjM2ZGE3Y2Y5MzUxZmUzMmM4ZTczYmVjNSBsZWdhY3ktdHJ1bmsKKzIwNTk5IGQ4MDUwMDA3NmU5ZmI5NWNmZjgyYjgwZTI0MjlkOGZiNTU3MTY0OGIgbGVnYWN5LXRydW5rCisyMDYwMCBiZjdmMTY2ZDNjOTc0NjBkYjBlODkyMmUwYTU3OTE3ZWE0NDY0YmQwIGxlZ2FjeS10cnVuaworMjA2MDEgNTVlMzIwMTg5NTA4N2IzZWQxMTUxNTMyZjk1ODYwYjVmMjk2YjVjNSBsZWdhY3ktdHJ1bmsKKzIwNjAyIDFjMmQyNmVlZjdlZDFiNTljOTgyZDc1NWExNGQ4NGU0NjM5ODAzOGIgbGVnYWN5LXRydW5rCisyMDYwMyBiYjZjNTlhODVjYTE0N2RkMTRkNzdjN2M5ZWJlZDM3YmVhMGIwN2FhIGRlc2NyLWJyYW5jaAorMjA2MDQgOGIwYzBjNDgyYTU1ZmQwNmQ5ZWNlOWQzN2Q3YzBmNjY3ZjQ4MWQwZiBkZXNjci1icmFuY2gKKzIwNjA1IDgzOWY2ZjJjZDY2ZjNjZmRhMjYxOTk2ODE1YWUwZWI5ZjhlYWNhZmUgZGVzY3ItYnJhbmNoCisyMDYwNiAzMDkxZmI4M2Q1MjcxY2NkMzkxMjc3YWI1M2E3ODBmNjZkMzY1ZTY2IGRlc2NyLWJyYW5jaAorMjA2MDcgOGZjN2JlY2Y3ODM5NDcyOTI3ZmY2NDhjZGY2ZjliZDk4MmVlMThmZSBkZXNjci1icmFuY2gKKzIwNjA4IDBhOWUzYWE3MWRiOWYyMzBiODU3ZTg5ZDgzODQzZWQ1YTk4YzM4YmQgZGVzY3ItYnJhbmNoCisyMDYwOSA4MmY4YTJiMWI3OWNjMzJkYjE2YTc2OThmMmM2YWZiYTIwYzJlM2ExIGRlc2NyLWJyYW5jaAorMjA2MTAgZmM2NThhZGNlZGM4ZTliNGJjMjg2ZTk1ZmU1YmYyYzk1NTYzMmI1YSBkZXNjci1icmFuY2gKKzIwNjExIGY4OWU4NTE1M2QwNDc1MzljNGY0NzQzNDRhMGM5NjgwMmI1ZmMwZjUgZGVzY3ItYnJhbmNoCisyMDYxMiAzOWNhYmQwYWFlMWViZDI4NTNlNWNjNThjZjM2NmM3YjFkMzRkYjNiIGxlZ2FjeS10cnVuaworMjA2MTMgOWQxZTMwNGVjYjE4YTU4ZGI0ZmRhY2MzMDgxYWQyYTc1NTg0ZDUyOSByZWxlYXNlMjAtbWFpbnQKKzIwNjE0IDU1MjdkNjJmYWZlMDVlNmI2NmE1ZTgwYTlmNmUwZmIxYWZkZGM1OTQgcmVsZWFzZTIxLW1haW50CisyMDYxNSA2ZjhlZmRiZGZmNDgyM2JjYWZlZGUyMWMzOGE2ZWE4YTFjMWI1NmUwIGRlc2NyLWJyYW5jaAorMjA2MTYgMTYyYjk0YzhkMmQxYTk0YWU2YjhjNDVmNzUxMDhlYWNhZTc2MjlhOSBkZXNjci1icmFuY2gKKzIwNjE4IGU5YTRlMjdlOGQ0ZTE2ZTE0YjMyYWIyNjY5NTMwMzdlYTI0NjgxMTUgbGVnYWN5LXRydW5rCisyMDYxOSAzOTlkOTk2MDFiMmRjMGQyZTdiYjRiNTUwZDg0MjE4YzM3NzNkMTk1IGxlZ2FjeS10cnVuaworMjA2MjAgMGM5ODc3MTIwZjM4MTc4M2Y3NTAzYmRjYWI0ZDU2MDA1MDY5M2Y2YiBsZWdhY3ktdHJ1bmsKKzIwNjIxIDNjZDRhZjY2NmRlNmIzZTZmMDBjODEyMjIyMGIxYWQ5Zjk3NTdjMzkgbGVnYWN5LXRydW5rCisyMDYyMiA5ZTA5M2JmOGY2YTkzZjJjMzNkN2NmYWIwOTE2NmJlNmQxOTY4ZTU5IGxlZ2FjeS10cnVuaworMjA2MjMgMWViYjRlNTY2MjU3YWE4OWRlZDBmM2Q2ZjAxMDgzNGY1YWEwMTRhZiBsZWdhY3ktdHJ1bmsKKzIwNjI0IDQ5ZDliYTU1NTg4YjY3YjZjYzYxMWJjMzE0ZmI5YWFhNjM5YjQ4MTEgbGVnYWN5LXRydW5rCisyMDYyNSBlZTRkMTc4NjJiNjE4MGIxNDA3NTgwZmY1NzY5Mzc3NDY1NDgzZDMyIGxlZ2FjeS10cnVuaworMjA2MjYgMDAyZWM3MzNiNWRjNWI2MzhkNWNkZDUwMDQ3YWE4NDA0NzRlZTQyOSBkZXNjci1icmFuY2gKKzIwNjI4IGQ0ZDA2NTI5YzIxODExZDMwZWNiNzJhZTJjMjExMjI0N2VmODIxMDQgZGVzY3ItYnJhbmNoCisyMDYyOSA5ZTUzYTVkNzFmMWRhMWVmMzEwNDVmNWYzM2EzNjk2NjNlZGQxZDkwIGxlZ2FjeS10cnVuaworMjA2MzAgMTgxMjQ3NmI3ZmU0NTcwMjE4ZTNkNmM1M2FmZTk1ZGQ4ZmE2ODQ2OCBsZWdhY3ktdHJ1bmsKKzIwNjMxIDY4ZTcxZTliYzIwNDU0MmE5YTJjZGRhZDE1YjI4NTAwYjE3Yjc1MGYgbGVnYWN5LXRydW5rCisyMDYzMiBhYWI2YzFmMTkyODlkY2ZkYmRiYTJjMTk4NjYxY2U5NzExOGM3MDMwIGxlZ2FjeS10cnVuaworMjA2MzMgMzA2NGI3M2FkYzFhZDc3MDRhMTllZTdjMjE0NjZkMzUyNWJmY2FiOSBkZXNjci1icmFuY2gKKzIwNjM0IDQ0MjRlMDZkNDE1OTU0ZmExMjI3N2IzYjZiMjcxZmNmNDMzNTM3NDMgZGVzY3ItYnJhbmNoCisyMDYzNSAxZTkwMmZjNzM2NDUxODU0NzNkNzQ1NDEwMjhjOGI0NmQyMjFkNzE0IGxlZ2FjeS10cnVuaworMjA2MzYgZmZjMjkyM2JhZDFhOTY0NThiYzZhODk4YjJhMmQ4MDEwZGI3NjI4ZCBsZWdhY3ktdHJ1bmsKKzIwNjM3IGY5NzAxOTUxOTZjNGZiZTc2MzEyY2RmZjU4NGY5OGMxOWQ4NmJlY2MgbGVnYWN5LXRydW5rCisyMDYzOCBhYWQwYWRmODA2YWRjODJkYjI2YWYxNDcyYTEyOThmODBlOWQ0NTIxIGxlZ2FjeS10cnVuaworMjA2MzkgMzc5ZmU4ODc2NDRmYjgwYzYzZDc5MjcyOTFjMTcwZmMzN2ZiMmJhMSBkZXNjci1icmFuY2gKKzIwNjQwIDU0NjIzNjI2ZGE0ZTNhMWZlOTE4YmViMWVlMzcwZjBlNDg0ZTQzY2EgbGVnYWN5LXRydW5rCisyMDY0MSA0MzMwMTNhZjQ1OTg3OGE4YjBjNDQ1YjNiNWZmMDM4ZTJmNDFmODlmIGxlZ2FjeS10cnVuaworMjA2NDIgZGVkNDFiZTg0ZGE0ZmFjYzE1ZDlmYzA3MmQ4MzdiZjQ4ZmE1YTM2OCBsZWdhY3ktdHJ1bmsKKzIwNjQzIGUzZjBmZDM4YzI0YjcwYjA5YjU5MTZkMzY5YTgxYTVkN2ZmNGVlMTggbGVnYWN5LXRydW5rCisyMDY0NCBmM2I4Nzg1YmQwMjIyYTYxZmUyYmJhMzgwMzI0ZGM3YjhhYzM5OGQzIGxlZ2FjeS10cnVuaworMjA2NDUgYjQxZjZlZjZlYThmNzhmMTZhY2FiYzgwODBiYTY4YTdkNTM3YmU4OCBsZWdhY3ktdHJ1bmsKKzIwNjQ2IDJmMTYwNjJhMWI3Yzc1Y2ZiZTY2MGE5ZjhlYTc3ZWVlYWNmODkzNjkgbGVnYWN5LXRydW5rCisyMDY0NyBhZDI1YmZjYzQzNzcxNWY3MGNmZDM3N2Q5ZWZhYTk4YmVhMjlhMzFmIGxlZ2FjeS10cnVuaworMjA2NDggZmU0YzEwMzRiNDgwMTNiNGYyMmRjNzcxOGQzMTVjMWVmOWQxYWUxZCBsZWdhY3ktdHJ1bmsKKzIwNjQ5IGJhOGY4ZTRkNDJiMDQ3OTI1ZjgxNjE2MDlmMTBiNjg3NGE0ZWE2NTkgbGVnYWN5LXRydW5rCisyMDY1MCAxYzg2YzhkMWM5Yzc2MmE3MjJhNjZlYTZjNGFiN2FjYjcwNTcyNmFmIHJlbGVhc2UyMC1tYWludAorMjA2NTEgNjE5OWU1YmQzNzBiNTYwYzQ1MzM4ODUyYzFjMTdmMmMzNmM4YjgwNCBsZWdhY3ktdHJ1bmsKKzIwNjUyIDM1MGJlMTljYTZhNWY4OWRkY2E2YjYyOGE1YmJjMDZiZmUxYTU3NGQgbGVnYWN5LXRydW5rCisyMDY1MyAyYTdjZmMxNzJhNjg0YTBhMmQ3NDIwMTY5Yjg1YzY5YzQ0NmM3MmFkIGxlZ2FjeS10cnVuaworMjA2NTQgNWUzYmFiOGFlZjdiMGZhYTI3YzFkYWVkNTgwY2Q2OGNiYWM2YTJjZCBsZWdhY3ktdHJ1bmsKKzIwNjU1IDY0OTNkNWU5NDFjMmE4MGZmZWE1ODJmYzI3NDFhYjRhODhjNjkyODYgbGVnYWN5LXRydW5rCisyMDY1NiBmZjgxMGZiNTk1MTMyMTlhY2QyY2VkNjkyNGNkOTMwYjMxNzk3YmY2IHJlbGVhc2UyMS1tYWludAorMjA2NTcgNzVlNzgxNDA0MWRhY2I4ZWJkM2Y5NDMyZTc3MzM5N2NjZWU5ZWVjNSBsZWdhY3ktdHJ1bmsKKzIwNjU4IGE2YTM5OWFjZjYyMDY0ZjlhYzJmYTQxMmM2NTMwNDQ3NWZlMmEwYzkgcmVsZWFzZTIxLW1haW50CisyMDY1OSA5OTQ5Yzg3MGUxNDQyMGEyNjgyNjdiNGE4ZDYwNjA4ZjkxNjU2YmY1IGxlZ2FjeS10cnVuaworMjA2NjAgYmIwOTUzNDBhYzk4NzU5M2VjMTk0ZTI0YThmYzAwZWZmNjZmZTI3OCByZWxlYXNlMjEtbWFpbnQKKzIwNjYxIGVkZTI5YWQ2NDQwYWMwMjhiODM3MDhiNDBmNTVmNTg1ZDc4NmU4NjAgbGVnYWN5LXRydW5rCisyMDY2MiAxZGVhNDMxZmIwYTA0MTEyMzE3ODcyNGEzMGYxOGJhZTAyMzY5NzM0IGxlZ2FjeS10cnVuaworMjA2NjMgY2Q5MmMwZDdlYWM0N2Y5ZDQ3NTY2N2IxMTZiMTJlNzEzMTBiN2JjMyBsZWdhY3ktdHJ1bmsKKzIwNjY0IDlmNmNmZGY3MWQ1MDY5YWE0MzMyNGM1OTk2NzA0Mjc5OTc3Mjk1ODUgbGVnYWN5LXRydW5rCisyMDY2NSA2ZGMzNjA3OGY1M2UxZTg2ODdlYTNiMTBkMTdiM2UyMjA3ZmE1ZGJmIGxlZ2FjeS10cnVuaworMjA2NjYgMWIxZjBjYjI4NWMyNTgzNmE2MjJmMTc4YzJiNjQ0MmJjY2QzYzBlMSBsZWdhY3ktdHJ1bmsKKzIwNjY3IGJkZWQ2ZDMxODZjMGQyOThhZDY3ZTkwYmNmODc5ZWRhNDlmOTlkMWYgcmVsZWFzZTIxLW1haW50CisyMDY2OCA0ODk2NjMwNTkzNDEzMjJkMjczZDA5YzRiMDkwYWZhNTIzNGE0NDExIHJlbGVhc2UyMS1tYWludAorMjA2NjkgYTYyNmZhMGUzZDc1MDRkNmNlNzA5YzViMTQwOTkwNDA5ZDAzZDMwOCBsZWdhY3ktdHJ1bmsKKzIwNjcwIDBjZmFkZDc2MDdkNTFlMjU0ZDIyNTliYzk3YWVhZTIwZGU1MjUxYTYgbGVnYWN5LXRydW5rCisyMDY3MSAwNmQ3ZGE4MTQwOWRlMWMwZmM0ZjMzMjk0M2I2NmUwYWJjZGY3YjlhIGxlZ2FjeS10cnVuaworMjA2NzIgZTEzZWVkZDA0YTRhODFjNzVjMTM1ZmI5MGE2MDQ2NmU3ZjIxNDYwZiByZWxlYXNlMjEtbWFpbnQKKzIwNjczIGU3ODVkN2JkNzU5OGZhNDlmMGVmNTA4N2M5ZWNiNjIwM2FkY2UyMDQgbGVnYWN5LXRydW5rCisyMDY3NCA2MGY4YzE1YzAyNTVkYjk4N2UzYjc2NjA3NWQ5YzJlMDg4ZjY1YzAwIHJlbGVhc2UyMS1tYWludAorMjA2NzUgMzliZjFmNmNmMGY5YmQ1ZjgyMDY4MTVhZjZhZjFlZmY2MWVmNTBjNiBsZWdhY3ktdHJ1bmsKKzIwNjc2IDE0NzYzMmFkMWJjYzNhM2Q3MzMzMjM3M2YyMzNlNjFkYTk5OGU1NmIgbGVnYWN5LXRydW5rCisyMDY3NyA0Mzc0ODJmZTU1ZTY0NzdjNTUyMzM4MTVmMjBkZmViY2E4ZGQ3NDRlIGxlZ2FjeS10cnVuaworMjA2NzggMGViZmU5YTFlYjQzZTk1YzQ0YmNkMGZhOTA3OTA3ZGVmYTliNTQyMSBsZWdhY3ktdHJ1bmsKKzIwNjc5IDgyMGU1YTBjMzExMmZjZjNkNzliN2Q5YmViMzY2NDQxYTNjMWVhNDEgcmVsZWFzZTIxLW1haW50CisyMDY4MCBmOTcxZjI1MmQ5Yjg3YTY1NjI3ZmJkNjVjMjAyYzhhMjgwNGY5NTQ5IGxlZ2FjeS10cnVuaworMjA2ODEgZDA1ZGJmM2YzNmY2NzI5NDI4Y2I5ZWU2NTExZjJhZGE2MjA1NGQ2NSByZWxlYXNlMjEtbWFpbnQKKzIwNjgyIGVkNzcxYjVkYjVhYWYzYTc3NjcwNGUwMTYxM2FlZDlmMzMwZjEzZTAgbGVnYWN5LXRydW5rCisyMDY4MyAxYTIxZGQxM2U2MGE2ZTc0MmVhMWIwYmQ1OTg3NmYwMGJhZTczMmY1IGxlZ2FjeS10cnVuaworMjA2ODQgM2VlOWEzZjYwYmM3OTY0YTE3MjFkMTViZDQwMjZkNGU3NTdhZWM3OSBsZWdhY3ktdHJ1bmsKKzIwNjg1IDUzYmJlYjI1YmRlNzE5ZjQ2YWI2YjhjNmE5M2ZhZGY0MzkxNzZjZTggbGVnYWN5LXRydW5rCisyMDY4NiBiMTZmYzg5YzE5NGY2YTM1NGYxNWM0MTc4YjhkYzdmYWI5ZmY1M2FmIGxlZ2FjeS10cnVuaworMjA2ODcgYjc2ZDFiNWU4ODYwMGQ2ZWVmZTM3YmUxYTg3MTJhYTRhODk2NDM4MiBsZWdhY3ktdHJ1bmsKKzIwNjg4IGM1N2NlNzVkY2RlMGM4MmYxNzZkOGMxZTJmZjRmNDY3ZDViYTczNjUgbGVnYWN5LXRydW5rCisyMDY4OSAyNjExOTZiZDE2ZDdlZjIyY2ZjOTk3ZWJiOWNkNzg2MTk2N2E2YTQ4IGxlZ2FjeS10cnVuaworMjA2OTAgZjQ2NWNhZTMwMWVlNjE1ZDMwMTg4ZGI0MGIzNWI4NDRhMDZlMjVjYyBsZWdhY3ktdHJ1bmsKKzIwNjkxIGIzOTI2NmY3NDg0YzQ0ODA1NGUzNjlmYThhNjFlZDVmOGEyYTg3MGYgbGVnYWN5LXRydW5rCisyMDY5MiBjODg2Y2QxYzIxODQ3M2QyY2ZmZjc2MzZlMjQzMDQ2ODE1MGY1ODE4IGxlZ2FjeS10cnVuaworMjA2OTMgZjQzNzRkNzkzMWJhOWZmYmViNTM1YTQxNGY5MTZhY2I5ZjQ3NTE1YSBsZWdhY3ktdHJ1bmsKKzIwNjk0IGM0N2NjOWE5ODY0YzRlNDIxYTA0Zjg3ZmU5MzFhMmE0ZjcyNWYxOWEgbGVnYWN5LXRydW5rCisyMDY5NSBlZjZmM2UxODE4Nzg2NjMzYjRhYmEyNWZiZjNjNmE1Yjk4MzgwOTAxIGxlZ2FjeS10cnVuaworMjA2OTYgNDdkMTg2MDJkNWVhNDU1MTA2ZTQyZWRhOTZiMmQ2YzAzM2U4MWNlYSBsZWdhY3ktdHJ1bmsKKzIwNjk3IGEwNmE3MDQyNjBlOTZhMWQ1ZmU1ZjQ1NDdhMDdkMmJhNzk5NDk3OTggbGVnYWN5LXRydW5rCisyMDY5OCBhOTg3Y2YxODE0MzQ5MGRhOGFkYjk0N2M4YWNmNGUzNmUzZjYwMmU2IGxlZ2FjeS10cnVuaworMjA2OTkgNWUwZWMzOWM0Y2VjYzRjNDg0ZTYzNGU2NGYwNzJmMWJjMTcxOTk2OSBsZWdhY3ktdHJ1bmsKKzIwNzAxIDA4MGExMjkxYmY2YzlmODFmNzYxMmM0MTE2MjBiZTZhZmI3OTgzY2UgbGVnYWN5LXRydW5rCisyMDcwMiAzMzI2OTdkZThkYjhlMmQ1Mjk0YTdjM2JkYjU4NDE1ZjZkZDMxNzMxIGxlZ2FjeS10cnVuaworMjA3MDMgYjUzNGYxMDczOTg3Y2QzNjAzMDY4NmI3M2NhNjdkNWVkZDk5ZTUxOSByZWxlYXNlMjEtbWFpbnQKKzIwNzA0IDA5OGQ2Zjg2OWE5ZGU4NTUxNzRkNWY3ZjBhZTMyYTQ3ZWYwMmNmOWQgcmVsZWFzZTIxLW1haW50CisyMDcwNSA2ODYwNTRlMDNhYzU5YzViZDIwYzYwNGYyZGQwMWE0NjFiNTU3YWEyIGRlc2NyLWJyYW5jaAorMjA3MDYgZWY2NWJjZWU3MmNhMjIzNmNhN2IzY2EwZTgxMDQzZTg2Njc5N2MzOCBkZXNjci1icmFuY2gKKzIwNzA3IDY1ZTI2MTEzYjNmYjJlMTFmOWI2MTFkYWUzMGQ4YTRkNGMzNDQxMzAgbGVnYWN5LXRydW5rCisyMDcwOCA0ZWYxYjZhODNhNDc5NGUxNDRiNjhlNGJmNjU5NzU1ZTJiNzg1M2M5IGxlZ2FjeS10cnVuaworMjA3MDkgMmYwZGY5ZjBiMDg4NzgyZDg2N2ZkYzhlNzc3NTgxM2NlNDc3NmRlYSBsZWdhY3ktdHJ1bmsKKzIwNzEwIDY1OGMwNzdkZDM1MTMxMzVjNDlmMjE0N2Q2ZDhmODU5ODY5YzBkMzUgbGVnYWN5LXRydW5rCisyMDcxMSA1MWFhNDI1MDI5NzU1MGRiMWVhYWI1ZTBiNzZmYTY1MzE0MmU0Mjc3IGRlc2NyLWJyYW5jaAorMjA3MTIgNDdkNDRkODU0MmI3YjJmYjY1MTIyOGJlMDQ1MzM3ZGIxYWMxMWJmMyBkZXNjci1icmFuY2gKKzIwNzEzIGRkNmY4YzljYWZmMGVjNWUwNDVlZDU2MTE2MGY5OTcyZGFhY2FiMzQgZGVzY3ItYnJhbmNoCisyMDcxNCA3YTlmNmMwOTc5MWE4ZWVkMjY0YTQ4NDJkYTk1YTE4MWRlODYzYzAwIGRlc2NyLWJyYW5jaAorMjA3MTUgNDdmNGQwNTY4YzdjYjczMjc0ZGNlOGY0MTYyYTQ3ZjdhMTExYzA5NyBsZWdhY3ktdHJ1bmsKKzIwNzE2IGMxODgwZjZiMzE4OWNmODRjMzRlZjJlMDM4MDQ0N2ZkNGRkNjdhZTEgbGVnYWN5LXRydW5rCisyMDcxNyBjZTM3MzQyZjZmNmUzZjMwZTYzNmEwN2UxZTZiZGE3NjM0MjRkYmVhIHJlbGVhc2UyMS1tYWludAorMjA3MTggY2M4ZDE0OGMzOTZhZTkwOGM5YjQzMzQ2YWQ4OGVkYzE4ZjVlMzRlMCBsZWdhY3ktdHJ1bmsKKzIwNzE5IGZiMTAzZTNkYTJhZWFmZjNjOWZlMTljMjJjOTYwNmUxNzRkNjM5YzYgbGVnYWN5LXRydW5rCisyMDcyMCAwMWI1MDQzYTQ1MDlmNzA0NDQzNDA4NzFhMTQwOGRlYTQ0NjE0NTE5IGxlZ2FjeS10cnVuaworMjA3MjEgNjY5NjA0ZDkzNDNmMDVkMTdjYTgzNWI3YWE1NTlhZmJkMjU3ZTU5YSBsZWdhY3ktdHJ1bmsKKzIwNzIyIDRiMmZkYWViYmZlNWRlMzFjODcwYjM0ZjA2Y2RkNGFhMThkYjdiZDYgbGVnYWN5LXRydW5rCisyMDcyMyAwZWEwOTEzZjgyNGRhYjNmZTFiNWIwMTM3N2U5MmJjMzNjOTA5M2E1IGRlc2NyLWJyYW5jaAorMjA3MjQgZDdjY2I5MzFjYTc5NTU1ZWY4Njc4MjQ2MTc1NWIxMmNhZWUxN2YwZCBkZXNjci1icmFuY2gKKzIwNzI1IDdhMmExMjJjOTk3YzIwNjM3NWJkMTMwMTQ0N2VkYzA2Nzg1MjYxOGUgZGVzY3ItYnJhbmNoCisyMDcyNiBkY2UxZjUzNDUxYTVhZjQ2OTJlNWQzOGE2ZmU5NWI2M2NjNzM0MzhhIGxlZ2FjeS10cnVuaworMjA3MjcgNTk2MDRmNWI0ZGQxMjkwZTFlYzRmZDFhYmM2N2ZhMjk0NzgxZGE1MCBkZXNjci1icmFuY2gKKzIwNzI4IDQxOWViYzY3M2VkOGRmOWM2Zjk4MTBiOGY2MDBhNTY0ZGU0MTBiN2EgbGVnYWN5LXRydW5rCisyMDcyOSAwZWJiOTE1MjFhZTZiY2VkYmJjMDVlZWM3YjkyNjE5MmIyMTI4YjZiIGxlZ2FjeS10cnVuaworMjA3MzAgYjRiMzY1N2NiMWZhYTQ1NzNhNGQ1NGRlNzRkNjk3Mjg2NDk4NzlkMSBsZWdhY3ktdHJ1bmsKKzIwNzMxIDk5M2ZiMTgwMWY0MWIyNGE2YWMwODA4ZWRhZWI2YzRiZGM1N2Y1NTUgbGVnYWN5LXRydW5rCisyMDczMiBhMTU3NWRiZjdkODEyYjE5ZTg2NTdiMDAzOTI2ZjRiOGI3YWQyYTUxIGxlZ2FjeS10cnVuaworMjA3MzMgYWIxN2I4Yjg4Njk2MmQ5MTAwYWU2MGJiYjE2ZjA4YzllMzY0M2I0MCBsZWdhY3ktdHJ1bmsKKzIwNzM0IDUzODdjYjc2NzA1OTRhMmY5ZWZkNmM0ZjNjNDY3ZjRlNjIxNzdlMjEgbGVnYWN5LXRydW5rCisyMDczNSAxZGFjZDBkNjA2MzdjODczYzkzNzFmZDRlMDM5ODA1NGYxMTIwNjNlIGxlZ2FjeS10cnVuaworMjA3MzYgMTI5NmU4NjMwNGVmNThmNGYyYmU1YzU3ZTVkZGRiMzZiZGRiZjEwMSBsZWdhY3ktdHJ1bmsKKzIwNzM3IDBlZDhjNWYzZjUzMDYyNDEyNTIxYzQzMGMzMDZjYjNlM2YyZDRhMDUgbGVnYWN5LXRydW5rCisyMDczOCA5OWM0OWYwMDkzODhlNTJjYjQ4MjQ5ZDJlYTNhNjY1MWU1NjFhYWY2IGxlZ2FjeS10cnVuaworMjA3MzkgODk5ZjM2N2ViYTU2YjUwYzkyZTEwNmE0ZTdkMzg0MmViM2I5ZjY1NiBsZWdhY3ktdHJ1bmsKKzIwNzQwIDQ3OWVhNjllYzg1YjMyMGI5YmI2MGIzMzdkMjczMDdkNzE0Y2NhYzQgbGVnYWN5LXRydW5rCisyMDc0MSAyMmEwYjJlMzI5MWYwMmE4ODllNGRlYzg1NGEzMTE0NmYzM2MxN2U2IHJlbGVhc2UyMS1tYWludAorMjA3NDIgNzhjNjRjMGY2NjFjYmM0ZjUzYTg4NTRmNTJjYzA5MTA4ZTU0MjIzZSByZWxlYXNlMjEtbWFpbnQKKzIwNzQzIDgwNDI1YjJjMWU0YzcwMjNjZDVlYjE3ZmNiZWYyN2NlMmJlYTkxMmQgcmVsZWFzZTIxLW1haW50CisyMDc0NCAyZTAxNWY4YTFhYzIwMWIxMmYyMjUzNGY0MWViMGEyYjY2MjAxOTRlIGxlZ2FjeS10cnVuaworMjA3NDUgMWM2MDRiYzZiOTFlNTRmZGYxNjE2N2FiZTkxZGJmNWEyZDM5ODQwMiBsZWdhY3ktdHJ1bmsKKzIwNzQ2IDFmYjNlY2E4OTY5ZWE4Y2ZlNzAwMDc1YWI4MjFmZjhhYTMzM2Y4OWQgbGVnYWN5LXRydW5rCisyMDc0NyA2ZTAwOGM2MTk4NTUzODU2ZjExNzc3OGI4NjFhMmZjZWJjZmU0ZTJmIGxlZ2FjeS10cnVuaworMjA3NDggM2I1YmViOTI3N2UwNDdiZTMzMTFiOTZmOTM0MGE5NzkyMzNlNWQ4OCBsZWdhY3ktdHJ1bmsKKzIwNzQ5IGE4ZmE5YzBmMWUwYmI1Y2NkNzg5MmJhNzc5MGQ2OTBlMGQxMDMxYTIgbGVnYWN5LXRydW5rCisyMDc1MCA4YWVlNTM5NTA1ODMwOTI1MzM4NGFjZmNiMmEzZTVjMjBlNTFiYjdjIGxlZ2FjeS10cnVuaworMjA3NTEgYTJiNjU2YTUyMjk0M2ExOTE5M2MxMmE0OTFmN2VkZDQ0Y2I5YTA0YSBsZWdhY3ktdHJ1bmsKKzIwNzUyIGMxOTk4MGMwM2UyZGUxNWY0Nzg3NmJlNzA4MmE0MDk0N2I0ODk3ZTcgbGVnYWN5LXRydW5rCisyMDc1MyA1NTk3ZDRiY2RlMDc1ODViMzkzMTU3ODllY2VhMzZiNDYxOTczZDcyIGxlZ2FjeS10cnVuaworMjA3NTQgN2ViMzI4OGM4MWUzNTViY2Y3ZTc4ZWUyMzUxYzk4YTYxZGI4MDY4OCBsZWdhY3ktdHJ1bmsKKzIwNzU1IDUzZmNjZjRkNmE0MTQxMzU3MjdlZTI0ZDNkMGNjNDcyNDVhNGUyMTkgbGVnYWN5LXRydW5rCisyMDc1NiA0OWU3MWE4M2Y3OTBmYTIyNGExN2E1NTg5N2ZkMzliZjUwZjVkOGE3IGxlZ2FjeS10cnVuaworMjA3NTcgYmY3MGQxZjRmNjFmNmNkMTUxNzQzZWViZjMzMjc1M2VlNTAyMjVkOCBsZWdhY3ktdHJ1bmsKKzIwNzU4IGNlOGMzNTY1NDJhYjdjZTY2YmMyYmQ0MjFhMzE0NjZkMDY0OTRiZWEgZGVzY3ItYnJhbmNoCisyMDc1OSBkZDVmYjM5ZTY1ZWYzNjUzZjJkZjAwNjc1MzU2ZGY1MTY2MDg3ZjMwIGRlc2NyLWJyYW5jaAorMjA3NjAgMzM4MDI3OTYxMmEzM2M4YmM3YjM5M2I4MjQwMDRkMGEwMjhlYTJjNSBsZWdhY3ktdHJ1bmsKKzIwNzYxIGZmOWE4MzM5YWQxYjRiMjk1OWI2YzY1ODcyMjE0YjQ0N2Q5OTUxZjcgZGVzY3ItYnJhbmNoCisyMDc2MiA5ZjU1OTdlYTk2ZmMxNGVkMTdmZTFlOGYwOTkzZGRkMzczNDY2ZGE1IGRlc2NyLWJyYW5jaAorMjA3NjMgN2YwZjVlY2U0NTYyOGJlOWM0MjNlMjg2MzMyYTFlOTk0MTg3MDAxNCBkZXNjci1icmFuY2gKKzIwNzY0IDE0ZmQ0YmI3Nzk5YWMxNWY3ODk4MzkzYjc3Y2Y0ZTVhYzdkMDkwZWIgZGVzY3ItYnJhbmNoCisyMDc2NSAxNTc5ZDMwOTY3NmUzNTA3Y2E5OWE2M2RjNTg4NDhmNDY1OWU1OGIzIGxlZ2FjeS10cnVuaworMjA3NjYgNTRkMzk1NDI1ZTkyOTM0NjdkNjFiZjc3YWEzYzhjYjZjNzA5ZjAwNiBsZWdhY3ktdHJ1bmsKKzIwNzY3IGMzNGNhYjg3ZDcyMTlmYmY4MGZmYTgxZTM2NDRkNzVlZTMxNmFjZjQgbGVnYWN5LXRydW5rCisyMDc2OCBjODM2MjMwM2VjM2IxZTMzMjIzYjJlNjZmMjNiOGZjMmQ5MzVjNGQ1IGxlZ2FjeS10cnVuaworMjA3NjkgMjIyNzY3ZWIyOGY3NWNlZTBhMWE4YzZjZjMxYmFjMjM5ODc5NGNlOSBsZWdhY3ktdHJ1bmsKKzIwNzcwIDRmMjA0OTViOGJlZGM1OTllZDc0MWU3ZTM1MzM2ZjhhNzJiYjVlZjggZGVzY3ItYnJhbmNoCisyMDc3MSA0YWY4NjViMjIxZWRmMGMyMTk4NDgyYWY0MTY4YTAyY2YyOTMzYjU3IGRlc2NyLWJyYW5jaAorMjA3NzIgYjg4MWRjM2JjZmIzZDNiMzIyNWQ1ZjlhNmMzMDYzYmFkOGY2YjQwNiBkZXNjci1icmFuY2gKKzIwNzczIDRiMDhmZDA4N2QzNjQzZTQ4YmE0NzU2NmQzZGU1ZDMxODU4M2ExYzUgbGVnYWN5LXRydW5rCisyMDc3NCA4Y2Q4NzQxZWJlYzBkNDQ4MzFjZDlhZWI4MTYxZTdkZDM3Yzg2OGJhIGxlZ2FjeS10cnVuaworMjA3NzUgMjIxMWM4OTk1YTVmOGQ4NWFjZmNmOGFhMTg5ZTE5ODMwOWNmMjEwNiBsZWdhY3ktdHJ1bmsKKzIwNzc2IGQ2ZGY4ZDM3MWI2NzQ2NzhhZjkwYjUzNWMzMzQ5NWVhOTQ3MGU1MGEgbGVnYWN5LXRydW5rCisyMDc3NyA4ZjVjZTU4MTE5ZTA1NGFiNzIzNjU4ZWZkZTI1YTIxNTM4YThmMjQ2IGxlZ2FjeS10cnVuaworMjA3NzggZjdjMzg1MjI2ZjY1YTg1MzVlZDUyMjI5ZDM0MzYzODQ2OWJlODQ5YiBsZWdhY3ktdHJ1bmsKKzIwNzc5IDI5ZDg0ZjkyMGQ1Yjk3MzFiMDc0Y2JmNTVhYzJjNzJkZjRjMzgyODAgbGVnYWN5LXRydW5rCisyMDc4MCAxOWE0NDhmZGVkZjcyNGI2MTRiY2Y4Njg4ODE5ZGQ2NTljMDZkNWQzIGxlZ2FjeS10cnVuaworMjA3ODEgNGJjZjg4ZTRhYmZmMjA5OWM0NWE2MGM5YzEyMDUyYjlkN2FlYmMxNSBsZWdhY3ktdHJ1bmsKKzIwNzgyIDc4MDI0OGNkMWQ5YWZhNWI3MDY3YzA5YzUxMTk3Njc5N2I5OGRlZTAgbGVnYWN5LXRydW5rCisyMDc4MyA1MDM3NmQ0NzA2NDgyMTc3ODc4MWRlNWVjMjA1MjhjMTY0MWY0Y2M0IGxlZ2FjeS10cnVuaworMjA3ODQgZjEyMzk2YzUxYWVhZjRkNDlkMmU2Y2ZjMTc2ODY4ZTZhNDAwYTAxYSBsZWdhY3ktdHJ1bmsKKzIwNzg1IDBhZGZiZTMyODlkNWFlM2NiMGUzNTI4MjBiOGU4ODgyYzc1ODc3YWIgbGVnYWN5LXRydW5rCisyMDc4NiAwYmUxNmQwZWNmNjRhNzk3MTIzMzg3MTllMTc4MjY3NmNjMzNhMmUwIGxlZ2FjeS10cnVuaworMjA3ODcgMDdhODc1MjAwMWJhY2I5YzE1ZDE0MDhhZDg4NmQwODY1MTk3NTc4MiByZWxlYXNlMjEtbWFpbnQKKzIwNzg4IDBiM2RhOTk4MjRjN2Q1ZGZjYWEzMjI4OWJiMDYzZGEwN2Q0YjE3YTQgbGVnYWN5LXRydW5rCisyMDc4OSAyNjc0NTA1M2Y4NDA1OTZhYzM0ZDkxMWRjYTZjMDVmYzk2ODEyNzUyIGxlZ2FjeS10cnVuaworMjA3OTAgYjU0ZGJlZjFmOGQzNjU2NGZmZWNmMDhlMGFhNjZlZDdiZjEyNTZjOSBsZWdhY3ktdHJ1bmsKKzIwNzkxIGQ4OTBhMjFiZWJkYTJiOGExNGYzMTkyNDZhMjMwY2Y2ZjE5YzhkZTYgbGVnYWN5LXRydW5rCisyMDc5MiBjZWY1YjYwMGZhMTYyODQ2ZmFlYmRmZTgxZWNmMGIxMDUxMjhjMTExIGRlc2NyLWJyYW5jaAorMjA3OTMgNzUwOWVhMDcyY2NiNDIyZDFjZjczYTc3Y2QwMTg0NzcxNDNlMTFjNiBkZXNjci1icmFuY2gKKzIwNzk0IDVjMDZhOTU5NmZiZmZkZDExZDNiNWJkMWQyMTViNWRhZDdlNTAxM2MgbGVnYWN5LXRydW5rCisyMDc5NSAxYmVjZjQ0MmQ3MzU1OWJjNTY2YjhlZDUwYmE5YTFlMzEzNzJjOWRlIGxlZ2FjeS10cnVuaworMjA3OTYgYzNmZjU3MjI2M2QzMzJmODUxNWFjYjBlMzE4YWE1NTAxMjk4ZjhlYSBsZWdhY3ktdHJ1bmsKKzIwNzk3IGVkMWU4YjZlMjZlY2IxYzczZmYzZTc4YzBjYjM2M2VlMzkwNGQ3YmUgbGVnYWN5LXRydW5rCisyMDc5OCA5ZWE4N2MwYTdjMDQzNzgwZDU2OWI2M2E3MWQyMjQ0ZDg2NmZkODhjIGxlZ2FjeS10cnVuaworMjA3OTkgYWQ1MDBiNTI2NzNjNjM5ODZkNjRiZDA1ZTVlNTYwMjgyNjc1MDhiNCBsZWdhY3ktdHJ1bmsKKzIwODAwIDI4OTJhYTI2MDdkNWY1ZTc0NzhhZDgzYzQwNzZmMTZjNmUyYmQ1ZDIgbGVnYWN5LXRydW5rCisyMDgwMSBkYjA3NGFiYTllMzY0Y2E3NjI3NWNiMTYzOTI5ZjA0YWQ5MTA1OWUxIGxlZ2FjeS10cnVuaworMjA4MDIgM2RkNDk1NDJjNGQwMWExNjFjOWUyOTMwMjhhZWM0MWZmZmViNjMwZiBkZXNjci1icmFuY2gKKzIwODAzIGM4NzJmZGYxMDEzMGY0NjllOTJmOGEwODgyMWEzYWY4NmE4NjEyMGQgbGVnYWN5LXRydW5rCisyMDgwNCBmMThlODA4YzAyMzBkMDM4N2FkNmMyMmRlMzZlOTI0MTBlYmZkZDA4IGxlZ2FjeS10cnVuaworMjA4MDUgMmI1YTliZmYxYjExZTkzODJkNWE5YWY4MmFiZDUyYjBlNjZmYzEyYyBsZWdhY3ktdHJ1bmsKKzIwODA2IDdlZDBjYWViZGQ4NjFjZTJkYWEyZjI1NDIyNTkxMmIxZDZlNzMyYzggbGVnYWN5LXRydW5rCisyMDgwNyAzZTI1NmY5ZDk5YWRlMGE5MTUyODk3YTMwNGQzZDY4OTQ5OGE0MjQ5IGxlZ2FjeS10cnVuaworMjA4MDggYWRhM2JkMWI4NzEzNDdjY2IyYTBlZmQ5OWZhNTIyZjE5YTU2OGVkYyBsZWdhY3ktdHJ1bmsKKzIwODA5IGZiMzFjMzM3NjFjOTY1ZjBjMDhiMWEyODU1OWUxM2VkYzExYjZkNWYgbGVnYWN5LXRydW5rCisyMDgxMCA5ZmYzNWY3NjYxYmQ3M2VkNjAxYjU0MjQyNjI3MDAzZTk3ODhmMzQyIGxlZ2FjeS10cnVuaworMjA4MTEgN2Y0NTU0YTFjYWUyMjhmMDI5MTk3NmM5ZTkzNGZhM2I3OGVmNzgzYSBsZWdhY3ktdHJ1bmsKKzIwODEyIDY5NjBiMmJiYmZjYWEyMTFiYmYwYjEwODlkMzdiN2IzNDViMTRjNTcgbGVnYWN5LXRydW5rCisyMDgxMyAwMTdhNjRhNGJkYzdhOThjNjAxOGM0ZDc3NGM4MGRkYzUyZmI4NDM0IGxlZ2FjeS10cnVuaworMjA4MTQgMjk1YTJmNDkyN2FiNjlhNWNhY2EwZDM5M2VmNzI5ZjkxM2YzNjNjMyBsZWdhY3ktdHJ1bmsKKzIwODE1IGEwZDA4YzQyZTcxMDJiYWVhYjMzMWExNDkxZmQ5NjlmMTBhZDA3OWEgbGVnYWN5LXRydW5rCisyMDgxNiBiYTk3MTExYTZhZDlmOTk3ZjAxMDg4NjVlMjMzMmNjMmYzOTZhMzkxIGxlZ2FjeS10cnVuaworMjA4MTcgMDU1ZmMwNDZlMDgwZWMwZTJkYTRhMThmZDBmYWEyMDEwNjkwMzJmZSBsZWdhY3ktdHJ1bmsKKzIwODE4IDAyOGExZDM5ZWZiNjVjNGIzOGZhODU0Y2VhNDI0OWMxNjM3NjBlMTIgbGVnYWN5LXRydW5rCisyMDgxOSBkMmQzZjg4NjYxYTNlOTk0YWY3MTc4MjU2MGZkMmZjNjA0ZGNjMzZkIGxlZ2FjeS10cnVuaworMjA4MjAgMjgwNzk0OWUwYmE1OTFmMTRmZjFkMjMwMWRhNWIxOTk4ODMxOTM3MSBsZWdhY3ktdHJ1bmsKKzIwODIxIDc5YWVlNDk4YTJiZTUxYmY4ODlhMTg2NjVhN2MxODJiNTgzNTdkYjIgbGVnYWN5LXRydW5rCisyMDgyMiA3NzYzNTQ5Y2NhNDU2NGE0ZTUxMzFlNWU1NmRjNGM0Mjg1MmYzN2VjIGxlZ2FjeS10cnVuaworMjA4MjMgYjc3YzQ4ODhkN2NjYWRkNmY3NDc2YmZjZjMyNTZmNDMwZjNmNDM5MSBsZWdhY3ktdHJ1bmsKKzIwODI0IGI1M2I2MGYxZWQ0NTk2Nzg3ZmYxYTRhYzM0YzIzZDk0OWYzNWEzMzcgbGVnYWN5LXRydW5rCisyMDgyNSAzMzVmYmRlZTdjZjgzYzI3YmZhY2JhMzM1MjQyZjc1YmI2YmM0MTI4IGxlZ2FjeS10cnVuaworMjA4MjYgOTdlY2U5MzIxYzUzNjRmZTg3OWU4ZWM2MTE0YmI4NTkzMGJhMzMzNyBsZWdhY3ktdHJ1bmsKKzIwODI3IDBlODZiZGViMGI5MjYxN2ViNzA4MmNlOTRkZjA0ODdkNzdlMjUyNzIgbGVnYWN5LXRydW5rCisyMDgyOCBiZTk2OWU3MTdiOTFiMGEyOGJmNTJjMGNkYWVjYTkxMmJhZjIwOTllIGxlZ2FjeS10cnVuaworMjA4MjkgZmRlNTUwOGU4MmRlNmNkOWQ4ZGQ3NzBkYTY4ODliMjM3MmNjOGY1YyBsZWdhY3ktdHJ1bmsKKzIwODMwIDA0MmRjYTFkNDUyNmUxNTkxY2NkOTY1ZTNkNWU3ZGVjZjk3N2YyYTIgbGVnYWN5LXRydW5rCisyMDgzMSBjY2I2ZDc2NjMzYmU0ZDlkYTI3ZWE4ZTZhNDNhNDRiZmYzZDc2MWZhIGxlZ2FjeS10cnVuaworMjA4MzIgNjhiZjA3ZTdiY2NjOTRkZDZlMmRhYjhhN2Q1MGM5ZGQ3NjM0ZTc0MyBsZWdhY3ktdHJ1bmsKKzIwODMzIGI4MjNhMzMxODNmYzY0YmJmOTZjYjc2NzFlODAwNzRiOWUwZjcyNTkgbGVnYWN5LXRydW5rCisyMDgzNCAwOTRjZWU2ODk4YzEwMjZjNGE5ODY3Zjc5NWY2ZWNjZjYzOThmNzYwIGxlZ2FjeS10cnVuaworMjA4MzUgNDNiN2VlNzE4ZjUzZmZhOTFjM2U2YTY0MmVlZjA1NjMxNmQ5ZjFiYSBsZWdhY3ktdHJ1bmsKKzIwODM2IDIwMGYzYTVkZTFjOWFkYjJlZThjYWQ3MmMzZmExZmRmM2MzMzg3NjIgcmVsZWFzZTIxLW1haW50CisyMDgzNyAxZWIxMjI1OWZlZWE2NDc5ODQ4MjY3ODY3NWVlYjM5MmRhMWE4MmY5IGxlZ2FjeS10cnVuaworMjA4MzggZWIwM2M2ZmMzMWU1YmQ5ZmI1MzEwZTA4MTU5NTA3MmQ3ZjZkZmRlNSBsZWdhY3ktdHJ1bmsKKzIwODM5IDE1MWEyZmEyOTZmZTQyYWZhNDFmZGNlNWU3Y2U4NTg1YTJiMTE3YWEgbGVnYWN5LXRydW5rCisyMDg0MCBjYjExYzU5YzE4ZGQzYmZmYWNmZTFiZTYyOTU1Mjk0Mzk4Mzg3ZTE4IHJlbGVhc2UyMS1tYWludAorMjA4NDEgMTNiZGI1YjIwN2QyNmQ5MzY5NjU5NDZmZmQwOTNmZTBiNGU1ZmY0MiBsZWdhY3ktdHJ1bmsKKzIwODQyIDUyNGUwZjNjMTY5YjI3MDdiYWE1ZTk1MTI5NzY2MzcxZGYyMGMxM2EgcmVsZWFzZTIxLW1haW50CisyMDg0MyAxN2MyMDBhN2RiODVhZDZkNDhlNWFkOGVhNjVkNzRjNGM1ZmVlOTgxIGxlZ2FjeS10cnVuaworMjA4NDQgNDNhYjlmODI0ZDg5MGQ1NWNiM2E4NGFjOWMzMjI0MmUxNWE1N2Q4ZiByZWxlYXNlMjEtbWFpbnQKKzIwODQ1IGQ1NjY2NmRlYjk1MzhmZjNhZTAzOTU5MDQ2N2RmYzhhZDE2YzA3ZmMgbGVnYWN5LXRydW5rCisyMDg0NiA2MDI3ZDNjZjgwNWNmNzA3YTNiNTk4YWQ4OTkzZjcwOWFlN2E5MTZmIGxlZ2FjeS10cnVuaworMjA4NDcgMjA2MGVlMGE3ZDkyYzQxZjNkMmIwOWQ5NTkwYjAxZjRlOGEwODkzMyBsZWdhY3ktdHJ1bmsKKzIwODQ4IDIxMzVkN2RlODZhZGIyYWE1ZDg3MTFhMWMzYTNmNjVmMWMyYjc5ZGQgbGVnYWN5LXRydW5rCisyMDg0OSBhOTNkYWFmYmQxM2Q3NDhjZTk1ZDE2YWM5ZWRjYWJjZGE1YmRjMTI3IGxlZ2FjeS10cnVuaworMjA4NTAgMGFmODI0Yzg4MjAzMDYxZTQwNGVhZDA1YmMzZjFmOWNhN2JiOGUzYiBsZWdhY3ktdHJ1bmsKKzIwODUxIGZkNWY4MzE4ODc3ODZkMzEyYzM4YjM2ZjdhYmRiYWYxYTk2YzM5OGQgbGVnYWN5LXRydW5rCisyMDg1MiA5M2I1OTA3MjliZGM4OTkwZWVmNzFjYTU0NTFlYmIxYzNhYWQ2NmI2IGxlZ2FjeS10cnVuaworMjA4NTMgZmQxMmU4MmI3NzI3ZmIyODJmNWVkN2RkNDEwN2JmMDk2MjJkOWQyNiBsZWdhY3ktdHJ1bmsKKzIwODU0IGExZGRjNDA4MGNjNTcyMTk3ZWNlODY3OThmODk5YTM2Zjk3NzBkNDcgbGVnYWN5LXRydW5rCisyMDg1NSBmOTViYWRhNTI3M2UyODk5MGNjY2MzNmYzNmIzNGVmMDY0MjczNWZkIGxlZ2FjeS10cnVuaworMjA4NTYgOTM5ZTNkYTU5YzYxMjIxMjYzMGExNGZjOTU3MTAwYTZiN2E1ZTc5YyBsZWdhY3ktdHJ1bmsKKzIwODU3IDViMDk3ZjYxNzE3MzUzODkyZDA4ZjQ3YmZhMmE1NGVkNjU1MGUyMDcgbGVnYWN5LXRydW5rCisyMDg1OCA4ZGE5NDczZjA3MzZiMDQ4YmE0Y2FlMTRmODUzNGIzMmVkYzQ1N2MzIGRlc2NyLWJyYW5jaAorMjA4NTkgMTRkYTUzMTQ2NjRkOTQ4MmNkYTIxMDZlMDQ5NTE4NGRmOGVhZWUyMSBsZWdhY3ktdHJ1bmsKKzIwODYwIGM0ZjU1NDAxZThhZWQ1NzAxZTE0MTIzMmFkNTc1Y2M3Y2YzZmU0MjEgZGVzY3ItYnJhbmNoCisyMDg2MSBlMjA4MGRiNzFiMWIwY2JhYWI2NmZlYzk3NzZjNDhjYTY4ODI0ZWJiIGRlc2NyLWJyYW5jaAorMjA4NjIgYzEwYjQxODU1MjAyOGFkN2JmYzExYmVkNTM0YzZkYjYyMGRlMDBmYyBsZWdhY3ktdHJ1bmsKKzIwODYzIGYwYzNkZTIyY2FlZGRlYTIyNGI3ODEzNDU0ZjJiYTc0YjMwYmZkZGQgbGVnYWN5LXRydW5rCisyMDg2NCBjYzk4NGVkMjY1ODZhYzA2YzZlYzg5ZDZmNDc3MGRlZDdiM2Q1M2Q3IGxlZ2FjeS10cnVuaworMjA4NjUgNWQ1MGQxZmFlMDc4N2Y1OTJkNTdkZGIxNzNkMGRkZjA3MmI4YjhiYiBsZWdhY3ktdHJ1bmsKKzIwODY2IDM4ZmRmOThkYTk5ZmRkMTYyZTJkYmYzYWZmNGM3ZDZhOWM1ZjYzYmYgbGVnYWN5LXRydW5rCisyMDg2NyAzNGIxNTA0ZTY2NDRjN2U4ZGExMGRhMjM0YjBiMWQ0ZjdiNDQ0MTUyIHJlbGVhc2UyMS1tYWludAorMjA4NjggYWU4YzRmNDcwYTBlNDQ3MjdjNzM5MjQwMzVmYTEwMDgwOWUwNDY5ZCBsZWdhY3ktdHJ1bmsKKzIwODY5IDUzZGUwZWVhNGQyNWM4NmU5OThlZWM1N2EzNzIzYjhkNTU0YWQ0OTIgbGVnYWN5LXRydW5rCisyMDg3MCA2OTczN2Q3ZjQ3NzZmZDZjMzI5NDNkNTBiZDYyMWNhMjEzOGQ2ZDI1IGxlZ2FjeS10cnVuaworMjA4NzEgYTQ2ZjFmN2E5Yzg2OWEyYzc1NDllMWI1NzYxYjUzZDVlNTNhOTQ1MSByZWxlYXNlMjEtbWFpbnQKKzIwODcyIDBhN2FmMGU1MzhkNGFiZGNjMGI1N2ZhMzM2ZDY3NzVhZWMxNDExYTcgbGVnYWN5LXRydW5rCisyMDg3MyA5YWY4MDZiMjg2YzYxNjU0NzY2ZDNlMzBjMTQ4YzE1MDQ5YzBiMTE3IGxlZ2FjeS10cnVuaworMjA4NzQgN2I5NzcxZjY4NTZiMzA5ZGQzMzJjYTlhNmQyZWJjNjQyNGUxMTc4YiBsZWdhY3ktdHJ1bmsKKzIwODc1IGQ4ODQyMzVmZTc1YzNmNGY2NTEzMTM0MDNkMTkyMDcwZWNlNmUxZTYgbGVnYWN5LXRydW5rCisyMDg3NiA3Nzg3MWM0OTkyMTVmYjE5Yzc0Njc0ZmNlMzI2YjdjMzIxMzg2MWU0IGxlZ2FjeS10cnVuaworMjA4NzcgNjE5ZmQ4ZTA2N2RhZWNmMDc3MDgzZDk3NjVmYTQ0NWYxOTc0ODA2MiBsZWdhY3ktdHJ1bmsKKzIwODc4IGZiZmZiNmRlMjVkZGNiM2I4M2VkYzJmOGVkMTdkYWY3OWVmNzEwYzEgbGVnYWN5LXRydW5rCisyMDg3OSA0MjFiMWQ2NjA0OTUwODg2OWYxYzdlNzI4ZTI5NjRkZTJjNWUwM2JkIGxlZ2FjeS10cnVuaworMjA4ODAgODRmZjE5NzdkNzcyNWZiNTI0MDU3ZWQ3M2ViZjlhYzc0YzVhZWE4MyBkZXNjci1icmFuY2gKKzIwODgxIDQ2OTA5ZjIyMTcwYzNlODY4MjYwMmQ2NjdkMGVhNWZiYTEyNjBkYzEgbGVnYWN5LXRydW5rCisyMDg4MiBmZjZhNmQzNDcxOTVhZDRkMjQyM2Q4N2M2YmNjNmQ1Y2NjZDAwZWNjIGxlZ2FjeS10cnVuaworMjA4ODMgMWJlNmQ2OGFlMTJjZTdiMWE0ZmMzNGFiMzY2OTE2YjhjY2JiZmE4OCBsZWdhY3ktdHJ1bmsKKzIwODg0IDZjNWE4MDBkYTc5MWY0MjU5Y2QxZTFkM2Y4NjZkZTAyMTdmZjU4YTQgZGVzY3ItYnJhbmNoCisyMDg4NSBhNjQzYTg3YTRiMmNhYTQ2MzFjODMyMjRlNzM1ZTlhOWVjMDdmMWQzIGRlc2NyLWJyYW5jaAorMjA4ODYgNzBjZDlhNDE5MDc2OTQyNzQwNDI3ZmQ4ODM0MjVhMzBiZTRlNWFjZCBsZWdhY3ktdHJ1bmsKKzIwODg3IGJkNTM0OWI0MTFmNjFhNjlmMWFmNTAxZmQ2ZWYzNTQ1OWMyMGRlZTkgbGVnYWN5LXRydW5rCisyMDg4OCBkNDI2OTQzN2U4YjNkYzFmYzVmMTdkNTc3NDkxYTFlOGM5OWQ0NzY4IGxlZ2FjeS10cnVuaworMjA4ODkgY2U2OWZiOWM4ZDU2MTcwOGI4OTI5ZTNhOTI3ZWYyY2I0NTE2NjZjOSBsZWdhY3ktdHJ1bmsKKzIwODkwIDE2MDA1YjI4NTU3NjJkZjFkYTAwYjEzZGU3NGNlMDg4ZmRhNzM4NDMgbGVnYWN5LXRydW5rCisyMDg5MSBhMWZjZmRjYjM0Nzk2NjgxNTMyZGZkYjJiZTM3ZTRiYWZiNzcwMDZiIGxlZ2FjeS10cnVuaworMjA4OTIgNWFiYzIzMjk5MjJmZWQ2YTMyNjBkZTgxNmVmMDNjMWI3YjMxMDU0MSBsZWdhY3ktdHJ1bmsKKzIwODkzIGE4OTVkN2Q3MzlhZDQxNmI3NGUyZjhkNTZkZWE1MzY1ZDY0OGQxZWEgbGVnYWN5LXRydW5rCisyMDg5NCA0NzRlM2RlMDBiMDUwZWNiYmIwNTEyZTM0ZDc4MGI4ODk3OTU5OGUzIGxlZ2FjeS10cnVuaworMjA4OTUgMjk3YTI2NmFjNGVlMTcyYmRkNWZmMmVhZWZmMDQ5M2Q5ODA2OTc1YSBsZWdhY3ktdHJ1bmsKKzIwODk2IGRlYTBiYWRlNjU2ZDQ5MTUxMGYwOGFiZWI0ZmVmYTZhYmI5ZmYyYTUgbGVnYWN5LXRydW5rCisyMDg5NyA2OTRjOWYwY2Q4MTQyOTc5MzQ4ZDZiMzQxMmNlZTUzOTBiMmFiYmExIGxlZ2FjeS10cnVuaworMjA4OTggODMxYzI3Zjg3NmFjOWRiY2Q5Yjc3YWI3NjYzMDBhZmI2NGEwYmUzNSBsZWdhY3ktdHJ1bmsKKzIwODk5IGJiZjcwMjA0OWVjNmIxYmYxZjliMzYwZDAyZjk2MTkzN2RiZmI4NjcgbGVnYWN5LXRydW5rCisyMDkwMCBlNGU4NTNkNTU2NzVhMjk2YmUzZTZiN2JlZWRkYWNkYTAyMmI5M2YzIGxlZ2FjeS10cnVuaworMjA5MDEgZWEwY2FkOTJjZmQyN2I3ZjZkY2NhNzNlMDJlZDQ0NTM2MTc1NjdhOCBsZWdhY3ktdHJ1bmsKKzIwOTAyIGNlN2YwZTM4MDgzMDQ4N2JkOTNkOGUwZjFkNjdmODBkNGE0NTI0YmQgbGVnYWN5LXRydW5rCisyMDkwMyA1NjIxNzYxOTFlNjA0OTg3NTlkYjZhMDBiMmJjNzhmMjUyZDBmNTdhIGxlZ2FjeS10cnVuaworMjA5MDQgZTE0YjQxZmQyYWIyNTE1MjE4ODY3MjM0ZjI3MTgxNzQ1NGIwYTQ3NSBsZWdhY3ktdHJ1bmsKKzIwOTA1IGNmZTA4MWM5NTUzZWM3ODQ3NmZkNzU0YWM4OTNiYzE3MWIzNjc3YzAgbGVnYWN5LXRydW5rCisyMDkwNiAzZTY5ZDdkYjVmOGQ1MGZiNTUzOWU0N2Y4OTdhODRlMzUyNDIxNWE2IGxlZ2FjeS10cnVuaworMjA5MDcgYTQyOTEwYjU0NDJhOGZkNzc0YWY2ZTQzZGM3NTcyZDMwZTNiZTcxZSBsZWdhY3ktdHJ1bmsKKzIwOTA4IDIyYjUxNTJkMjNmYzJiZWUwODBmZjI2OTEzNmFkMjM4MGIzNzM0MjggcmVsZWFzZTIxLW1haW50CisyMDkwOSAyMjM0NDE1NDA0NDMxNjY3OGI3NzdhMWM4YjY4M2M1ZDliOWIxNDdiIHJlbGVhc2UyMS1tYWludAorMjA5MTAgYjg2ZWVlZGRhZTIxMzQ2ZTRiY2ZkMmY2ZTA2ZDQ0ZTI3M2FmMjQzNyByZWxlYXNlMjEtbWFpbnQKKzIwOTExIGRiNDNiZTE5ZDNlMzNiMDAwMTU5MTcxNDM1ODhiMTNiZDY5NmRlYmQgcmVsZWFzZTIxLW1haW50CisyMDkxMiAwOTYwNzJkODg3OTg2OGFjYjBkYzJiZDhmYmEyNGRmNWNmOTkyNDA5IHJlbGVhc2UyMS1tYWludAorMjA5MTMgZDA3OThiM2EzOGMxNTZlZjE3YjI4ODRlMzc4YjQ1NWZiOTdiM2Y2NSByZWxlYXNlMjEtbWFpbnQKKzIwOTE0IDJlZGFhOGU5ZjM4MTUxNWNiMGE3ODdlNzNkOWVmZGM4MmI4YjE5ZDggcmVsZWFzZTIxLW1haW50CisyMDkxNSAwNzExZjNjZDQ0ZDA3NzA3MDM5NDNmNjZmZDVkNDg5ZTJmNDg4ZTNkIHJlbGVhc2UyMS1tYWludAorMjA5MTYgZTE4MTZmNjQ5ZmY4ZTEyMzY0OTgxMTcyN2ZkNmJmYTkzZWMxMTQ2NSByZWxlYXNlMjEtbWFpbnQKKzIwOTE3IDVkODk0YTVmY2UzOGMyYzk1ZGUwMDY3Njc2NWMzOGEyNjZlNWQwNjUgcmVsZWFzZTIxLW1haW50CisyMDkxOCBiMzhmZDJiZDY4YzBhMTllNDUyNDA3ZjRlMmZiNTY3YjBlZWFkNTYxIHJlbGVhc2UyMS1tYWludAorMjA5MTkgMTQ1OGI1OTZhNDM0YWM4YzNjZDA0NzkwNzZhNzRmZDc5ZjU0MmE5NiByZWxlYXNlMjEtbWFpbnQKKzIwOTIwIDc5M2I3NTU0M2YxM2Y1YjViM2I4MmYzYTViNTUxMDhmMmY4YTRlYjUgbGVnYWN5LXRydW5rCisyMDkyMSA4YzQ3ZDlkYTMwZGUyNmRjODg4OWJjOWJkMjI1NWM4MzkxYTExMDhhIHJlbGVhc2UyMS1tYWludAorMjA5MjIgOWRmZDIyZThlOWI3NmRkMTk3MTAyODY2ODA1ZDg2YzliMjIzMTU3NSByZWxlYXNlMjEtbWFpbnQKKzIwOTIzIGE0MjlkYTdkYjcwNjk1NDY3Y2Q2MmNlNWY4NmRiN2RkMWY5MjBjMWYgcmVsZWFzZTIxLW1haW50CisyMDkyNCAyNDg0MThjYmQwMDUyN2Q0N2U1NWY1ODc2ZmI0NWQ4MzI2MGE4ZjM3IHJlbGVhc2UyMS1tYWludAorMjA5MjUgNGVkNjU3ZDM3Y2VhN2JkOGMzZGE4MGU0ZGExMmI2N2RiNWNjODZkZiByZWxlYXNlMjEtbWFpbnQKKzIwOTI2IDU2OTZkZGRhM2U0MGY5NzFmYmExNzNkYTI0Zjk0NDEyOWMyZWQ1NTggcmVsZWFzZTIxLW1haW50CisyMDkyNyBmYzY4ZjZlZDcwMTQyMDQ1NWY2N2QwOGI0ODhlZDg5YjRmNDcwYjA5IHJlbGVhc2UyMS1tYWludAorMjA5MjggNGFkN2EyYWI0MmI0MmU4YzUwYzk4ZTlkYTcxNTM0MDkzNDE0YjJiZSByZWxlYXNlMjEtbWFpbnQKKzIwOTI5IGU1YmEwZDJiNDdlMjk0MjUyZTFlYWI0ZWYzNTFlYzUyYTNlMmUyODggcmVsZWFzZTIxLW1haW50CisyMDkzMCAxMDMxMTFhZDk5ZjFmMGUyZWJhNTA0MzE2MzY5ZGRlY2RiZTAyMTU3IGxlZ2FjeS10cnVuaworMjA5MzEgYWY0ODk1ODc1MDlkY2RkZTYzYzA5MmU4MDNkY2NhZGVjOWExZjhjOSBsZWdhY3ktdHJ1bmsKKzIwOTMyIGQ4NmIyNDVlMDg1ODAxYzI0YzcyNDE0MzhkMjhkZTViOTVkM2M2OGEgbGVnYWN5LXRydW5rCisyMDkzMyA5NWJhYTMzM2VlNDNjYjgwMTc4NzVhZGFmMjg4N2M4ZmRkNTk3ZjIyIGxlZ2FjeS10cnVuaworMjA5MzQgNWUxMTQxMTU3ZDUzZmQ5NWU3NjhjYTBjZWMwNjc0ZjI2ZWI5YjcwYyBsZWdhY3ktdHJ1bmsKKzIwOTM1IDc4ZjY3MDcxYzk0OWViMmM5MmMzZmVlOWRkMmEzNzcwY2Q5ZjRiYzggbGVnYWN5LXRydW5rCisyMDkzNiAxNzhiZWRmOTUzNmQ4Y2UxYzBmYzY2NjZlZTMxMDg1NWM3MDcxZTJhIGxlZ2FjeS10cnVuaworMjA5MzcgMDVhYjBhNzE0ZTRjYWVhOTc0MGNlMjU4OWNkNDc1OTEyZWMzYTAwYSBsZWdhY3ktdHJ1bmsKKzIwOTM4IGIyMDE4ZTVkMjE0MmI5NDFkMjE3MTIwOGRiNjg3Y2E3YzFiNWY0ZDIgcmVsZWFzZTIxLW1haW50CisyMDkzOSBlZDhiNzljNmNiNGIyY2RhYWM0M2Y3NmFiOThkMWFhOGI5MmU2NWNkIGxlZ2FjeS10cnVuaworMjA5NDAgZjlhMzRhYzE0YzhiZTk5NjIyMjJiMjQxYjc2ODc0OGVkMmMzZTYxMyBsZWdhY3ktdHJ1bmsKKzIwOTQxIDczZmNjNGY0YTE4MjI5MGVkMTUzMDRiOWQ4MDg1M2FmYTk2NmFiMzYgbGVnYWN5LXRydW5rCisyMDk0MiA0MDFjY2ZjZjI4YzM4ODQwZWE3ZTc3MmRlMjEwMGRjODczMzUxYjY4IGxlZ2FjeS10cnVuaworMjA5NDMgMmYyZWU1ZGFhNjBkYjY1Nzk3MGNmNTZlNzU4MTlkZmU3ZmUyOThmNSBsZWdhY3ktdHJ1bmsKKzIwOTQ0IGIwYjQ2ZDc3MzRlMGVkM2U0OGM0YmY1MmE0YzQyOGNlYmQzZWIyNzEgcmVsZWFzZTIxLW1haW50CisyMDk0NSA1MjdkMGZmZGYwOTkwMTYxMWJmNjM2MWMzMzhiYmYyYzMzNTZiNjJjIGxlZ2FjeS10cnVuaworMjA5NDYgZDU3OWE1ZDhiM2ZlYTgxYzExNWNmZmM2NzRhMDBlMzgwODQwMmNmNSBsZWdhY3ktdHJ1bmsKKzIwOTQ3IDJhOTRiZjIzNWRhYWNmYWVmNGU3OTM3N2UwOTFiNzhlZjBlN2Q1MzYgbGVnYWN5LXRydW5rCisyMDk0OCA1ZTg3YTA4YWJiMDU3YTE1Y2E5MmNkMmFjOWJiMGFhMDVlMzMwNTkzIGxlZ2FjeS10cnVuaworMjA5NDkgMTkyZDM2ODY5NDQ1NThhM2YzNTk3ZGNmNGRiOWM2YjEzYzBmYTkwYiBsZWdhY3ktdHJ1bmsKKzIwOTUwIGRiMTNmYjVjODU4YTUxOTMxMTE2YjI0NGZlNjdiM2U5ZjYwMDA2NGEgcmVsZWFzZTIxLW1haW50CisyMDk1MSBhMmI5OTZjNzE2YTFjNTA0NDU5OTFiZjU0ZDEwYmFhZmI0NzdhMDQ4IGxlZ2FjeS10cnVuaworMjA5NTIgNjJlZWMyOTM2Y2QzZjllMWI2MDA1ODVmYTkxYTM1ZmM2YjBmMjk3NSBsZWdhY3ktdHJ1bmsKKzIwOTUzIDk1MjZmMGVkMDY2YTA0N2U0YzRlOGZkMDU0ZGVkNWU5NzcyMjQ4OTMgbGVnYWN5LXRydW5rCisyMDk1NCA0N2M3YzFlYjk1NzRkMTk5Y2U1NGU1ZTMyMmI0M2I0Njk4Nzk2OTI5IGxlZ2FjeS10cnVuaworMjA5NTUgNzA2YmI2Yzk0NWRmZjU4MzM3YTdmOTM0ZjQ2NjUwMzZiMjQwYmE0MiByZWxlYXNlMjEtbWFpbnQKKzIwOTU2IDg1ODUwNDFiYTU3YjFiZWNlMWRmN2QzOTQ0ZDYwN2ViYmY0MGViMzcgbGVnYWN5LXRydW5rCisyMDk1NyBhZTA4YTAxZjJmMmRkMmY1ODdmYTY5N2RjYzVjMzAwNzJjYzIzZDA1IHJlbGVhc2UyMS1tYWludAorMjA5NTggZTgxOWNjMGE5ZWY2ZGMwYmVkZjE5ZjUzYmU0NTM5NWUzZjMzOTlmNCBsZWdhY3ktdHJ1bmsKKzIwOTU5IDgzNjE0ZDBlMDBmMTVlNzQ1ZjBlMjRjOTk4YWUyYTkyNDY3Mzc0MTUgcmVsZWFzZTIxLW1haW50CisyMDk2MCBjZGY4OGJhMmQ5NjhiOTNiMGJhYzVlNDM4MDljZjg0YjE5NTQxYjc3IGxlZ2FjeS10cnVuaworMjA5NjEgMDc2OWUxMWQ5ZDVmNDhmM2UzNjFhNTRhOTU2M2UxMGViNzA0MzczNiBsZWdhY3ktdHJ1bmsKKzIwOTYyIDllZTIxODI0ODFhZjlhMTQ3M2E2YWI3MGI4MmQ5YmU1NDE5NzZjZWYgbGVnYWN5LXRydW5rCisyMDk2MyA0NDdlYTY1MTgxYzI4NWMwNjc0Nzk4MmJhNDdkN2VkMTdjMTBlOGFlIGxlZ2FjeS10cnVuaworMjA5NjQgMjk4ZmIyOWRhYTgxYzI3MzQzNjJjNjdhZmUwOGVmNWJlNzU0YTZhMCBsZWdhY3ktdHJ1bmsKKzIwOTY1IDgzNzgyNWE3NzljMTZlYTMyMWM1MzI2NjE4NGIyMDQzZmYwNmM5NjEgbGVnYWN5LXRydW5rCisyMDk2NiA1YTlkZWJiMTQ0NDBlMjUyZTMzNTVmMzNiYTQ5NWJjMTRiOTZiOWI0IGxlZ2FjeS10cnVuaworMjA5NjcgMjdmMjQyMmVhMzM1NzgwYTc3MGZlMTQ3Mjg2ZjZiYzI2OTRhYzhhZSBsZWdhY3ktdHJ1bmsKKzIwOTY4IGM4Y2I3OTc3MjM2NGU0ODYwYWIxY2FmNDBjMzJiODhiYjNkMTg2NGYgbGVnYWN5LXRydW5rCisyMDk2OSBmZjY0NGU2MDg1MjhjZjZjNDc1Y2EwM2M5NWFlNzIxOGM0MzdiMWM1IHJlbGVhc2UyMS1tYWludAorMjA5NzAgZWM5MzQzYWQxZTYwOWE3YzViYTVkZTg0YzJmNDNhZDMzMjRkNjYxNSBsZWdhY3ktdHJ1bmsKKzIwOTcxIDk3ODA2YTU5OWM3ZWI1YTY5NzY3Y2MzYjM4OTE1MGIxMzBkMDdkZWIgcmVsZWFzZTIxLW1haW50CisyMDk3MiA0NWJhZGZiZmIwMGVmNjEzNmYwNTczZjFlNjExNmFmYWNiMDdkMjU5IGxlZ2FjeS10cnVuaworMjA5NzMgMjdlZGU4YjA5NWQ2ZGYxZDE0ZTE5ZGEyYWRhNTVjZDQ3M2U5ZTlkOSBsZWdhY3ktdHJ1bmsKKzIwOTc0IDY0ZTFlYTM0YjU1MzAwZDNmMmU1NTk0Zjc0ZTBjYjNlZTE5ZDg1ZjMgbGVnYWN5LXRydW5rCisyMDk3NSBiYWYyMTM3ZTk2NzZjYjQ0NmM5ZjdkNGJkMWE5MzJlMjRhYTBlNmUxIGxlZ2FjeS10cnVuaworMjA5NzYgZTYwZmMwMTc2MmEwZjkwMTc3NDY2NDQ4NzQzY2FmZWE3ODZmZjI2NiBsZWdhY3ktdHJ1bmsKKzIwOTc3IDZhMmUyNTQ4ZTZjZjM5YTFkOWYxZDM1NzRiMWVhYmUyY2MwOWI5NGQgbGVnYWN5LXRydW5rCisyMDk3OCBhNDMwMTQzMWIyYWM4ZTc1ZWZjMzhjOTI2OWQ3NGNmNTY5ODFjOTZhIHJlbGVhc2UyMS1tYWludAorMjA5NzkgNTBlMzM4MGIwODZhMWQ0NzYyMWUzZjk4ODVmMWVjNjYxYWNlZmE2ZCBsZWdhY3ktdHJ1bmsKKzIwOTgwIDUzYjBmNjVhMGEwNWQ3NWRmMTNhZGU0NWYzMjYyZWU3YWIzY2FmZTMgcmVsZWFzZTIxLW1haW50CisyMDk4MSAxODA3MTA5MTFmMTVkN2RjNjdkNGE0MDg2Nzk2ZGU2ZGQ2ODk0MzNlIHJlbGVhc2UyMS1tYWludAorMjA5ODIgNTgyODQ1ZTE0ZTVjYzE1Y2MwOGNkMTg4N2YyYjcwMmQ4MmY0Njg2ZCBsZWdhY3ktdHJ1bmsKKzIwOTgzIDk5YWVhNmY1Y2ViZDI4ZWY1MTljODEwYWYyZGU2NDZkMjNmMmUzNTIgbGVnYWN5LXRydW5rCisyMDk4NCA5Zjk3MTY3ZjE2NDMwMTY3M2NlZWNiOTZhN2VmYTc0NDAxMTA3M2NmIGxlZ2FjeS10cnVuaworMjA5ODUgMGMxYTA0ZTk4MTM0MmZkNWI5NGQxY2EzYWM4ZTU4Njg2Zjg1ZjQ3ZSBsZWdhY3ktdHJ1bmsKKzIwOTg2IDBkNmY3NjBiNmVmMWE2NDQzNmIxOGZhNzExNzc4OTE1MGU4OWJjMmQgbGVnYWN5LXRydW5rCisyMDk4NyBmYWNmZjVmNTBmY2NhZjI4ZTlkZDkwMDZhNGFmNTY0YmVjYjVmN2Q3IGxlZ2FjeS10cnVuaworMjA5ODggMDM4ZTJmNzQ4MDBkOTc4MzAxZWU0MGNkODFkYjUxMmJkMzk0MmFmMyBsZWdhY3ktdHJ1bmsKKzIwOTg5IGNhN2UyZTFhZThkZjk2ZTU4NjY5MDJkNDJmNjM3MzIyMmU4Yjc0Y2MgbGVnYWN5LXRydW5rCisyMDk5MCBlODZkMzMwODFiYmE5NGJlOWQ3ODZlNjY4NWY5M2Y5YjU1Yzc0ZGRmIGxlZ2FjeS10cnVuaworMjA5OTEgYzk4N2RjZDg4MmI5YzczMThkODUxZjc2ZGRkYTAwYzFiODBiNzQ2MyByZWxlYXNlMjEtbWFpbnQKKzIwOTkyIGJkMWM0ZmU5NzdjYmRjNzU3MzJmNWYwMWNiZDFhMmZjYWNhMWY2ODkgbGVnYWN5LXRydW5rCisyMDk5MyA4ZDJiYmJiZjJjYjlmZGMyZmE4N2JhM2I4M2JkZmRiYzMzMjBjNDk3IGxlZ2FjeS10cnVuaworMjA5OTQgMTliNTA0ZmI5ZDE1NmU3YjE3Zjk4OTIyMWQxNWQ2Y2E4M2UwZmI0OCBsZWdhY3ktdHJ1bmsKKzIwOTk1IDUxMTU4N2FiMmRkMmU2ZjI4MmQ2ZmFkZTgwOTJlMDg4ZTNiMjVjZDkgbGVnYWN5LXRydW5rCisyMDk5NiAwMjQyNjc0NDE3NjFlOTQ0YmZhYWYzZGNhYzgzZDYzMTU1ZGE2MjUzIGxlZ2FjeS10cnVuaworMjA5OTcgNTM5MWI5ZDAyMmFjMTI3NTcxNTFmNzg3YjM0MWZjYjQwYmIwY2E4NiBsZWdhY3ktdHJ1bmsKKzIwOTk4IGVlNWYwMTY1ZTRlM2ViMWRiMGQwOTQ0Y2NiZmZiNWE2ZmRhNDk4MWYgcmVsZWFzZTIxLW1haW50CisyMDk5OSA0ZDYyYTJmZWM5MzBhMmE4ODQwMTc3ZDdjZDVkNWY3NTQxMzIzNTA1IGxlZ2FjeS10cnVuaworMjEwMDAgNmFlNjEyMjkxMmQyZWRiOWQ0MjUxMGI4ZjY4ZmVlMzBmOGRhM2RkOSByZWxlYXNlMjAtbWFpbnQKKzIxMDAxIDllYmU4NWU3MTU1MDQxMDRjMDBiY2RiM2RmNmU2OWExZDZmY2NkMDEgcmVsZWFzZTIwLW1haW50CisyMTAwMiBiOTk5NzlkMGY5ZTdjMDgwNGRiNDliNzVjMWE2OTY0NTI1NGY2OTEyIGxlZ2FjeS10cnVuaworMjEwMDMgYmQ5N2E0ZmRiNmYzYzVmODI2ZDY2NmVkY2JkYjc0MzU3MzQ5NDA0MyBsZWdhY3ktdHJ1bmsKKzIxMDA0IGMwMDM3MzE3N2JiYjZkNmE4NjhhNDZhYjM3OGMwMjdlMmI4YzhjYjkgbGVnYWN5LXRydW5rCisyMTAwNSBmYTIyNTVkMzE1MDBlOTJkNDQ3NjJkMzY4MDFjZTI5ZmM0OGU3ZmYxIHJlbGVhc2UyMS1tYWludAorMjEwMDYgYTAyMDg1ODcxYzNmZTRmYzY2NWEzZDExNjY2MWVmYTVjZTQ2MTg2YSBsZWdhY3ktdHJ1bmsKKzIxMDA3IGRmMWM1M2E4MTUwMjkxMjY1ZDY3OWNkNDNlYzU3M2ExNTI0OTY2MGMgbGVnYWN5LXRydW5rCisyMTAwOCBhNmY4YjJmYTJlMjAxODNlNTExMTk0MmZlYTdjNjc2YmIyN2EyOWY4IGxlZ2FjeS10cnVuaworMjEwMDkgOTE2MTlkN2RmNThiOWIwN2FlOTQ4MWRiY2RlZWIxMTUxMmM3YTVjOCBsZWdhY3ktdHJ1bmsKKzIxMDEwIDZmZGNlNzZkNDA2NjVlMGRkNjIzMjUyYzBkMjcwNDMzYTc1NzZkMjUgZGVzY3ItYnJhbmNoCisyMTAxMSBiZjE2YzNjYTU4MGVjNjQ3NzRiZTlmZmFjZjQ5ZjJiZTU5MDhlZTdjIGRlc2NyLWJyYW5jaAorMjEwMTIgNzNhMWU5ZjdjODNmMjE2NjE5NjNlNDAzYmM1NGZhMTlkMjkxMmFjZiBkZXNjci1icmFuY2gKKzIxMDEzIDhjNDVhNjRlZTgzMWI3ODkyYmZiN2I5MDY5MzYzNmUwMDBmMWQzMzYgZGVzY3ItYnJhbmNoCisyMTAxNCBlOTE5NDczMTc2YzgyMzRkY2I1ODE4NTIzNTEzZTM1MjEwNjkxN2YwIGRlc2NyLWJyYW5jaAorMjEwMTUgZWQ0MjUyYmYwODBjOTdlMWQ4Njc5MGU1MDNjNjcwZDAyNzFiNTNmYSBkZXNjci1icmFuY2gKKzIxMDE2IDQ5ZjBmZjZlYjRlYjEzNWRjMmE1ZWM1NDI2YTIzODJlZWMzZDI4NTUgZGVzY3ItYnJhbmNoCisyMTAxNyBjMDc0MzAyNWIyM2RiMzhmMWYzMDM4MmQ5OTI4NTQxNjBjY2UyOGRhIGRlc2NyLWJyYW5jaAorMjEwMTggNTQ2NmNjYmIyZjk3NDk4ZWJiYjBmNzU4ZmEyZGJjNGMwODUwMzI2YyBkZXNjci1icmFuY2gKKzIxMDE5IDViNTA1NmNmMTQ4OGM3NWNjNGMzYTNkOGYzNjE5YjAyNDQ0NWYyNjUgZGVzY3ItYnJhbmNoCisyMTAyMCBmYjkzZGZiZDgwNTIzNTdlOGQ4NTg0ZWZmODk3YmNkZmVmZjA5ZjNmIGxlZ2FjeS10cnVuaworMjEwMjEgYzJkNDlhNzMyMTY2ZGJiMWQ5MmU5MWRhYjgyZmJkYmUzYjU1Mzc4MSBsZWdhY3ktdHJ1bmsKKzIxMDIyIDk1N2Y5NDI4NjYwZjIyOTY0ZDUyZmFjMTYwZjBjN2FkMDMyMDJjZTEgbGVnYWN5LXRydW5rCisyMTAyMyAzY2JiODU3MjZmNmVkMjE0MjYzZDlmM2M4ZTExMTVkMGMxZGI2OGNlIGRlc2NyLWJyYW5jaAorMjEwMjQgZTBmMGY3YmM1ZGE3Njk0YmFjNzA1YWIyYWU5YmEwYmY5ZGVhODI0NSBkZXNjci1icmFuY2gKKzIxMDI1IDNhYjZjNDM0YTljODc1M2MyNGFiZmU1MmZkMWU3MDBmMjkxOWQyOWEgZGVzY3ItYnJhbmNoCisyMTAyNiA2NTMyMjEwMzk1NWEwNGQwOTBmMDg3ZTkwMTdkOGU4Y2ZjZDAyMTAzIGRlc2NyLWJyYW5jaAorMjEwMjcgMGQ0NmI3YzcxMDVlMmUzZWUxMTRiZmUyZTlmMmUxYzY1MTQ4YTEwOCBkZXNjci1icmFuY2gKKzIxMDI4IGE3ODI2ODQyNDg2OGExOTFhYmI0YWI0YzMwYzUzY2RjZjU1ZGQyYWQgZGVzY3ItYnJhbmNoCisyMTAyOSAwZTUxOGE1M2VjNWJlYWQ5YWRiZmNiOGQ5MWI4Njk1MmM0ZmM0ZmQ5IGxlZ2FjeS10cnVuaworMjEwMzAgZGNiMWMzYmQ4ZTBlODk3NjZkZmVjZTQ3MzE4ZWQ4OTk4YWY2OTc2ZiBsZWdhY3ktdHJ1bmsKKzIxMDMxIDk2ZDExMjE1MDEzYWIyMzMwZTk5ZWRjYzBmY2U5Y2Y4MjNmM2EwMDQgcmVsZWFzZTIxLW1haW50CisyMTAzMiA5NjMzMGNjYzg3MGE5NDQ0MTMwMTQ0MjczZDBkMmFhNzM0OTkyYzE1IHJlbGVhc2UyMS1tYWludAorMjEwMzMgZWE4MzA4ZmQwNmYyM2Q5YTM5ODg1NGNlM2NjZDBkYWI0NmUzN2JhOCBkZXNjci1icmFuY2gKKzIxMDM0IDg1OTNiN2UwYjY0NTQxNjNmZTMwODJjNDM2ZDhjOTg0M2Q1NzJlOTQgZGVzY3ItYnJhbmNoCisyMTAzNSA2NTY5Yzg0OTliMTcwZmE3YjUxZDBiNjY2NWRmMTljNzJhMGJiYmQyIGRlc2NyLWJyYW5jaAorMjEwMzYgZTc5YmI1YjhhNWQwZTlhYTUyNGZkMTFhNjIxYjdlNzRmMGMyNjY0NCBsZWdhY3ktdHJ1bmsKKzIxMDM3IDFiOTI3MDFhMGVkMmRkNWZiNDcyM2ZhOWMyODNjNDE5MzJlZjdhOGMgZGVzY3ItYnJhbmNoCisyMTAzOCBiNzNjMjgxN2NjMWFjMDIxY2M3MjBmNmY4NDkyYmE4MmRhMzBmNDk3IGRlc2NyLWJyYW5jaAorMjEwMzkgMTRkYzc1YTU2MDBhYzVhYmEyOGJlNjYwMWQxZDhkYmIzYTdiM2M2MCBsZWdhY3ktdHJ1bmsKKzIxMDQwIDgxYThkMTgzMGI2M2FiYzk4MWRiZDI2M2NjNmM5MTk5MTRjOGQzOTEgbGVnYWN5LXRydW5rCisyMTA0MSA2NWEyZTNlOGJmNTZkMTA5N2Y0MzA1ZTY4MmMwZThiZTU3OTJiM2E3IGxlZ2FjeS10cnVuaworMjEwNDIgNTg2ZmQ3OWVmNGQ5N2M4ZDc0OTE3ZDJjYjRmMGQxNmM4NmRkOGIwMiBkZXNjci1icmFuY2gKKzIxMDQzIDEzYThkY2E0YjA0MGFmODgwOWRiMDhmNjU0MTYyZDU4YTEwYTcxNzEgZGVzY3ItYnJhbmNoCisyMTA0NCBiMGZjODM2ZjJjZWFkMGIyMGE4MGRkOGRkMmZlNzI4MDNkZmYwZWFjIGRlc2NyLWJyYW5jaAorMjEwNDUgZTg5NzU1MGI0NzQ4NDBmNzYxNmI1MDNlMWFmYjExYTJmNDMxNDFjNyBsZWdhY3ktdHJ1bmsKKzIxMDQ2IGY4NDc1ZmE2YmEzNmRhNWM1YmE4ZWU4MTcwYjM3ZGU1NWVjYTQ3YTIgZGVzY3ItYnJhbmNoCisyMTA0NyBjNDAxNmFiZDZiN2YzZWExZGQ1MDVkNTZmODcxOWM5NzFmOTYyMTQxIGxlZ2FjeS10cnVuaworMjEwNDggYTNjMzI5ZjY5ZTNhNjBiZTQzYTYyYTgzMDAxMTZjYWY5ODQ4NGY2ZSBkZXNjci1icmFuY2gKKzIxMDQ5IDJiMDE3YjJjOGY3Y2I1MmZhNmE4NTQ2OGE0MGVmODUyYjY2NjI5YjQgbGVnYWN5LXRydW5rCisyMTA1MCBlNjZjZjlkNmFkNDNlZDA1NWZjOTMxNjcwN2RmNTVmYmZiMjg3NmI1IGxlZ2FjeS10cnVuaworMjEwNTEgOWEyNjgzMmRhMGY5ZTY1Nzc1OTg3MjNmY2MyZTI4NGE0MTg4OGE4ZSBkZXNjci1icmFuY2gKKzIxMDUyIGExZjM1NzY5NjI2NGIzY2JlZmFmODUzYTQ3ZDY1Mzg3MWViMDdjYTQgZGVzY3ItYnJhbmNoCisyMTA1MyA4Y2FmMjE5NzFmMzc4NzllY2UyOGY1MDg3MjZhYmIwNjc0MWRkZDY0IGRlc2NyLWJyYW5jaAorMjEwNTQgN2RlN2QwNjk0YmE4N2E0ZmZiNGMzM2U0YjUyZjRmNjBkYjU1ZTI2OCBsZWdhY3ktdHJ1bmsKKzIxMDU1IGEyMzJhNmMzZmM4YzdkZmE4M2UxMmY2NzM5M2FkMGI4ZWFmMjdiYzMgbGVnYWN5LXRydW5rCisyMTA1NiAxNWY0MzgxY2ZmMGYwYzY4YmY0ZTM3YjQ0MGEwYWNlNTA5ZWNiZTAwIGxlZ2FjeS10cnVuaworMjEwNTcgZDkzYjQ5Mjk4YWZkNmYxMjFmOTJhOWM3ZTdkYWNiZTIyNzMyMWFmYyBsZWdhY3ktdHJ1bmsKKzIxMDU4IDJlYzA4ZDZjN2QxMjA0Njk1NDdhMTA4Nzc4MmI1MTA4NjJlMjE4ZGMgbGVnYWN5LXRydW5rCisyMTA1OSA5OTliMTNkZTM5YTQyZGM3N2I3ODQ5NTNjNjk1MTlkMjY0OTRmMDVkIGxlZ2FjeS10cnVuaworMjEwNjAgMWMxODNhZTVjOTM0OTJiYzhmMmEzZGVlZmYxZWZlMWNkNTY5ZTc5MyBsZWdhY3ktdHJ1bmsKKzIxMDYxIDVhNmI4M2Y0MTUyN2I3ODBiMDZmNDI4YzdlNjkxYWQwOTQ5OWJmODYgbGVnYWN5LXRydW5rCisyMTA2MiBiYmFjMmE2YTVkMTZmYzI3MmIxYTdjYTYwN2FkMDY3MzdmMWExZTkzIGxlZ2FjeS10cnVuaworMjEwNjMgYWM1NDg5YTI1NDhkZTQ2MzU3YjBmZDc3NTFmMDljMTEyZTdhOTE4YSBsZWdhY3ktdHJ1bmsKKzIxMDY0IDg4OWRiNmQ1NTUwNjAxYzUzMmIzZWFiNDBjNzRhMzJhMTI2MThkMDMgbGVnYWN5LXRydW5rCisyMTA2NSBiZGUxY2Y1NzQwZWM2OWY4Yjc0NjhjZGVjYWYwZDI1MDAxOWQ1ZjE4IGxlZ2FjeS10cnVuaworMjEwNjYgMTA5OTIxOThjOWQ2N2FhNWRlZDI0Njc5ZTEwZTMxZjhlM2RkNWIxNCBsZWdhY3ktdHJ1bmsKKzIxMDY3IDYyNDcyNjU2ODA3ZWE5OGU0ZTZhMGE4NzUzNjY4MGMzZTg1ZDk1ODggbGVnYWN5LXRydW5rCisyMTA2OCA4ZTE4Nzc0MGFhOTZhNjgzMTNjZTVjNWEzYzMzMDg4ZGY4ZDY1ZjdjIGxlZ2FjeS10cnVuaworMjEwNjkgZjkwMWE3ZGM1ZmI0Y2I4ZjE2N2UxNzZiMGIyMTFmMWExN2QwNmZmNSBsZWdhY3ktdHJ1bmsKKzIxMDcwIDFmODNlNDE1NWZjZDE3MmI0NzM5NzgxOTQ0NDlhYjJhNTU4NmIwYzEgbGVnYWN5LXRydW5rCisyMTA3MSA3ZGU1ZDM3ODU3OGNkZTFkMDA3NmIwYTBlYmM3MmJjZDJlMTk0ZDM0IHJlbGVhc2UyMS1tYWludAorMjEwNzIgZTg0OTQ4ODY3NGRhMjY2MThkNTRhN2EyYzQ4MTJmZWU3NzBhNDI4YSByZWxlYXNlMjEtbWFpbnQKKzIxMDczIDQxMGJiZjVkOThmOTdhYTIzNTgxZjgwMjUzZTEzYjlhOGY4ZjAxYmQgbGVnYWN5LXRydW5rCisyMTA3NCA3MmIxNTczMWE4NzY5YTNkZTQ2ZTlkZjcwN2U5ZmU4NTkwOTNiMzc2IHJlbGVhc2UyMS1tYWludAorMjEwNzUgOTAxOTM3NTBjYzgzNzZiZjNjODAxZDU5MGFmZTVlOTBmZmIyMDY2ZSBsZWdhY3ktdHJ1bmsKKzIxMDc2IGYzYmFiOTI5ZDcwZWUwNzcwZjVkNjhmYzQ3ZDNhMmI2YTQ2M2RhZmIgZGVzY3ItYnJhbmNoCisyMTA3NyA2MjI4NjdlNGQ4MzJmYjAzYTFhMWQyNDA0ODFjNmYyZjI0YzViYTM5IGxlZ2FjeS10cnVuaworMjEwNzggYWRkMDk1NjM5ODUzMGRlNDllMzU2NTczODk4NzZjNjU5ZjllMTAwMCBsZWdhY3ktdHJ1bmsKKzIxMDc5IGJjMDViMGI1ZTA1NzgxMzJkYWI2NTI3NGI4YmM4YWQ5MTk4ZTZiNTkgbGVnYWN5LXRydW5rCisyMTA4MCBmZjJkN2MxODM3MTUyYjY5ZTE5NjgyZTBiZDMzNmUxYjU1ZmM1OTQzIGxlZ2FjeS10cnVuaworMjEwODEgNGNjYmI4ZTVmYjI0Y2JjNzM5NWZmZTE4OTRhYWQyMjcyYWNhMmViMiByZWxlYXNlMjEtbWFpbnQKKzIxMDgyIGI4ZmJmYTU2OWMzNDgwM2I2YzUwZTEyNTc3NjA1MTQzNDdkYTYyN2EgZGVzY3ItYnJhbmNoCisyMTA4MyA2YjZlMGIwZGI0Zjc1NTExYzdmNmYxZWZlMGI2MjFjNjYwZjZlOWVkIGRlc2NyLWJyYW5jaAorMjEwODQgYzkwYmRlOGI2N2I4ZGM4NzU3YmI5NjdmNGZiZGZkYzA5YmM4YmY1OSBkZXNjci1icmFuY2gKKzIxMDg1IGRhYmU3MTAwYjIxZjMwN2Q5YzE3MGU3NDFmNDhhNTFiZTRmNDMzY2YgZGVzY3ItYnJhbmNoCisyMTA4NiA0Y2MyYWY4YTJmNGU2NjMwZDFkYWQ2NWMwOTJlYWEwOTQ1MGI0NjcxIGRlc2NyLWJyYW5jaAorMjEwODcgNmZlNTZhOWIzMDIxOGY5MjA0ZDk0OGNlZDI1OWQ1N2NmMmQ5MmRiZSBkZXNjci1icmFuY2gKKzIxMDg4IGRkMDlmMTFmYTQwZGM5NWRmODVmMGI2OWIwMTk3YTFjN2UyNWZkZDEgbGVnYWN5LXRydW5rCisyMTA4OSA1ZmM2ZDAyN2U4NjExOGVlYzcxMWRjZTljYWEzNzQ1ZjdjZDVmMGUwIGxlZ2FjeS10cnVuaworMjEwOTAgYmJjZGJkOGY0NDY5OTUxYWMwNWUwMDkyYTkzOTJmNTg3YjY5YTA4ZiBsZWdhY3ktdHJ1bmsKKzIxMDkxIDdlNDU5ZmIzYzMzMjliZTJlZWViOTMxM2M5MzdkNDI3N2JhOWU4NjEgbGVnYWN5LXRydW5rCisyMTA5MiA1OTIxMDlmMmE2ZmQ2OTYwNjlmZWQ2M2QyY2QwYzdmOGNlNWRiZTU3IGxlZ2FjeS10cnVuaworMjEwOTMgNjI1NDczN2NiNjI5NjgwMTMzOTk2NWQzNGJhMjg4MDc3YWQyODlmZiBsZWdhY3ktdHJ1bmsKKzIxMDk0IDg2Y2NmOTNjYzk1MjI4MjJkNDQxZTdkN2Y5ODQyMjY2ZTE5NmQ2YTMgbGVnYWN5LXRydW5rCisyMTA5NSAxOGExZTA5Mzk3ZGFjOTVjNmVmZThjNzM1NDc4NTMxNTdlZjIyMzhiIHJlbGVhc2UyMS1tYWludAorMjEwOTYgNDEwMTY2NzUwMDJmZTRkOTlmMjQwZDkzOGE2NzkyNzExYWIyMDQzMyBsZWdhY3ktdHJ1bmsKKzIxMDk3IGEwMDFmY2I3NjE3NzlkZTQ1OWNkYTgyMzZmZDU3Y2ZjMWYxYTk3NzEgbGVnYWN5LXRydW5rCisyMTA5OCBiZDAwNTZlZTFhNmU0OTA1ZjM5MmQzM2NmYTBlZWYyZmI5MDJhZDQ0IGxlZ2FjeS10cnVuaworMjEwOTkgNmVhMzY2YTJiMmE2MzRmNGMxNTE2OTU2ZTFjMmRhNGFhMjA0ZDMwZCBsZWdhY3ktdHJ1bmsKKzIxMTAwIDIzNjdiN2EwMDFhN2U3ZTY5YTlmNGFmNjg3Y2Q4NDA4ZWQyZDdlMzggbGVnYWN5LXRydW5rCisyMTEwMSA3YTlhNjkyNzI5YjQwMzljZjc0MDMxZmUxNmIzYWQ5ZjY2Mjk0ZTE1IGxlZ2FjeS10cnVuaworMjExMDIgYzJmY2E3N2JiZjNhYjhkNmZjMjdiMWQyZWRlOTM1M2JiMTQzN2YyNCBsZWdhY3ktdHJ1bmsKKzIxMTAzIGRlN2Y5YWEwYTYzYTUyM2JmMjcxNjRiODQzYTU1OGVmZTUxNzYwYmYgcmVsZWFzZTIwLW1haW50CisyMTEwNCBmNzRlOTJjOGVhYzFhNjllOThmMTcxZTgyOGI3MmI0MzA3NjhkMDlmIHJlbGVhc2UyMC1tYWludAorMjExMDUgMDM3Mzg2YTJiMjQ3Y2JlOTMyMGYwMzg3YzZkZDgyYzYyMTI5NzliMSByZWxlYXNlMjAtbWFpbnQKKzIxMTA2IDE0MjEyOWU5YTk4NTY0OTA2MDc2ZDUwODJhNDMwY2MxY2FiY2RmYjEgcmVsZWFzZTIwLW1haW50CisyMTEwNyA5ZGRhMGMxMWUwMDY5OWE5NDQwMjhmYzFjMDE3ZjZkY2MyNmVhNWIzIGxlZ2FjeS10cnVuaworMjExMDggYTNjOWI0MTQwY2M1ZWM1YmZmN2EzYjNlMWQxNGE3ZmNkMDgwOTA0NiByZWxlYXNlMjAtbWFpbnQKKzIxMTA5IDAyMjQ4NzNjMGFjNzRiMDFiMDEzN2RjZDE1NTgxNjRmODRlOTYxZDkgbGVnYWN5LXRydW5rCisyMTExMCA1ZDZmYzE4YzQwMDk4NWRhZDc0OTE2YmFkNDk4MDY4NDMyNDg1ZDc3IHJlbGVhc2UyMC1tYWludAorMjExMTEgMTVjMDRmZTI0ZDg1ODY2MmRmNTMyZmUyMGM1NzIxYjNhM2JmMzI0MSByZWxlYXNlMjAtbWFpbnQKKzIxMTExIDgzNDU5Y2MxOTFjMWM5YzhjYzZiMDhhZGE5OWMwMmYwYWY2YWQ1NGYgcmVsZWFzZTIwLW1haW50CisyMTExMyBjNTc4Yjc1YWQ2MmZkZWQ3MGI2NGFiNzM1MWZkNGEyODg2OTU5N2RhIGxlZ2FjeS10cnVuaworMjExMTQgOGNmNzJiMTg3YjNhYjk4NjZlOGQ4NDFkZjkyZjE4NGE3NjBlNTI4MiBsZWdhY3ktdHJ1bmsKKzIxMTE1IGJlMmRkYjI1YjY5OGIzOWE4NzljNDY0NTE2MTZhZWNhOWJiMmIxZmIgbGVnYWN5LXRydW5rCisyMTExNiBlMjFjZDQxMzVmM2RiMWFmMjNiM2U1ZjcxMGIwN2Q2MzgwMzNkYmE0IGxlZ2FjeS10cnVuaworMjExMTcgMDk5YWU0OTE4MDY5YTViYjk1MDgzNjQ0ODc2OGMxYzUwY2I0ZDIyMSBsZWdhY3ktdHJ1bmsKKzIxMTE4IDdmNWQ4MDQ0Zjk5NGMxZjUxNDA2OTUzZDU4NzkzZTJjMDcxNTlhYjIgZGVzY3ItYnJhbmNoCisyMTExOSBiMTQwYjc4ZjE3ODVjYmE4ODRkNWJhNWNiMTFmYzhlMDNlOWRjOGJlIGRlc2NyLWJyYW5jaAorMjExMjAgYTYyMzFmMjRkYmI2ZTBhNDc0ZTQ4M2ZlZTE1ZDAwODU5NzM4OGJkMyBkZXNjci1icmFuY2gKKzIxMTIxIDllYjQ2OWE0MzE0NDE3NjhkZTgxMTEyMTA1YTM2ZjFmNjFiZDI4YjMgbGVnYWN5LXRydW5rCisyMTEyMiBlNjRjNzAzMWQ5NGZjYjcyYTQ0NTJjMzIwYzFiOTFhZTUyNzZiNjhlIGRlc2NyLWJyYW5jaAorMjExMjMgYTQ3NjNiZmVkOWYwZTkzMDc1NTNiOGMyNWNiZWY1MzNmOWY5YTBkNyBsZWdhY3ktdHJ1bmsKKzIxMTI0IDMxY2QwZGIwZjA5ZmNkOTk1ZDE5ODU4MTQ5MDkyMWY5YzY0YjFjNWIgbGVnYWN5LXRydW5rCisyMTEyNSAyZWNhZjllMjFhMDQ2ZDZmZTkxODQ5YjhlY2Q2NTFhYjdhMGMyOWU5IGxlZ2FjeS10cnVuaworMjExMjYgNzUxN2ZjYTMyMjYyY2JhZmQzODljOWMwMjI0MjIyN2ZlODVjODZlNiByZWxlYXNlMjAtbWFpbnQKKzIxMTI3IDY5OTEwMTk0OTU5OTQ0ODQwMTM4ZmMyMGNjOTQ5ZWM1Yzc3ZThjNTAgbGVnYWN5LXRydW5rCisyMTEyOCBjMDYxNmUwOTY0MzBmMjBkNzExYzQ0OWY2Mzg0MzVkNGVhYjRlNjA0IHJlbGVhc2UyMS1tYWludAorMjExMjkgZTQwNjgxNTc4MmFmZDQ3MWI4YTRhNzU4ODdjNDQxOTg2NjhiZGU0OSByZWxlYXNlMjAtbWFpbnQKKzIxMTMwIDQwZDc5NGI1MDQxZGYwNDE0NzA1MWExNjc0YzJmODExZDRkMjIyNDggZGVzY3ItYnJhbmNoCisyMTEzMSAwMjUzMDc3N2I1MjE4ZDQxYjk2OTYwZmM5Zjk2ZWFlZmQ4MTBhZDlhIGRlc2NyLWJyYW5jaAorMjExMzIgMDUwNTRiZDc5NTliNjQ1MTU4OWQ3ZGMwM2YwNGFiMDQ0ZjhhNDM4ZCBkZXNjci1icmFuY2gKKzIxMTMzIGM2MTY2NTU3ODJmMWFmYzE5MDg3OTA1ZjYxNDFiNmEyMTdiNjNiNjggZGVzY3ItYnJhbmNoCisyMTEzNCBjMjlmMzEzNWEyMGNiMDQ0NDk1NmNiMTU0ZWM1N2VjNDlkNTc5YWU1IGxlZ2FjeS10cnVuaworMjExMzUgMzMzYTJjNmViNzQzOGE1MTcxNWU1YWM4MzJhMjg4YmE4ODRlY2Q2NiBkZXNjci1icmFuY2gKKzIxMTM2IDE2NmI3YjM2NTg1MTkzY2E3ODZkM2Y3ZDc0ZGUxNWJiNTA3NGMyNWQgbGVnYWN5LXRydW5rCisyMTEzNyA5NTIyOTc2ZDFlOTk2Y2NjYjM1NDEzOWY3ZjAzZDEzNDQyZTg5ZTY2IGxlZ2FjeS10cnVuaworMjExMzggYWM3ZGNmMGU1MTA0YWZhMTQwZjQzN2JlMDVhMTY1NGJjM2QyMWMyMCByZWxlYXNlMjEtbWFpbnQKKzIxMTM5IDFmMTM2NDgwNjU5OWNhMzFlZThiZDUwYjFlZjI1OTg4NzhjNDdiZDIgbGVnYWN5LXRydW5rCisyMTE0MCA5ZTllZGRhYzI1Yjg1OGY2ZmMwYTFlZDlkYzAxMTM1NmExZGI3NGVjIGdlbi1icmFuY2gKKzIxMTQxIDI3ZGQ5ZWMzMTYyY2Q4Y2FiOTRiZDczNDA5NGUyMDQ1NzAzNTFlYjMgbGVnYWN5LXRydW5rCisyMTE0MiAwYWY2ZWFmOWY4OWVlZjRhOWRhZWQxNGQzZjM1OTJlZGM5YjgzMjZhIHJlbGVhc2UyMC1tYWludAorMjExNDMgMzY0MjQ0MjY5NTA2M2E5ODEwOTJlYTRlOTc3NmI5ZTVkZjIyMTY5YSBnZW4tYnJhbmNoCisyMTE0NCA2YWNiYTllNDc1OGNiMDE4OTBiZTA2OTE3MWY4ZGVmYmZjYTE2NjM3IGdlbi1icmFuY2gKKzIxMTQ1IGUzMjgyMTg1NDZiNTk4YmZlNDZmNjg5NDUyYWEzYmYyOGZhODYxY2MgbGVnYWN5LXRydW5rCisyMTE0NiBiN2YyZTIzMTI2MTBlYzRmYjM1MWQ3ZGVmNDNjMTA4M2M4MmIwMDFjIGxlZ2FjeS10cnVuaworMjExNDcgOWQ1MzNhZTU3NGQyMGQxNGMzZGNhZDJiNmJjMDQzNmI2NDcwMGY2MyBsZWdhY3ktdHJ1bmsKKzIxMTQ4IDhlZWEyZWZiMzRjZDFmMTZlNmNiZjcxMjcyNzVjOWU1MTcxYTI5NjggbGVnYWN5LXRydW5rCisyMTE0OSA4NWUzZmExZWI4MzZjODgyMjBlZmY0YTBiNzVhYTk3MTc3ZDJjYzI3IGxlZ2FjeS10cnVuaworMjExNTAgZTg4N2Q2ODYyZjc3YjQwODMwZDc0N2YxYTA1YTE2YjQ2OTBhY2EzZSBsZWdhY3ktdHJ1bmsKKzIxMTUxIGI0OTk0NWU4MDQ0YTgwNmZiMmJhMjhjNTAxNjg4ZDVmZmJmY2RjYmYgbGVnYWN5LXRydW5rCisyMTE1MiBlZmY4ZGE3YzNkY2I5YmViMGU4NWJiZmY4MDg1NzI5MmM3ODUwOTQ3IGxlZ2FjeS10cnVuaworMjExNTMgY2FjMjA3YjNhNDNmZDhhODk0NjRkZDJjZTBjYWU0YzNkMjNmZDg5OSBkZXNjci1icmFuY2gKKzIxMTU0IDdhMzM4ZjUzN2U0MmJiMmEzZDFhYjRjNjBkMTBhNDAwYTM2NTE5MWQgZGVzY3ItYnJhbmNoCisyMTE1NSBhNDQ3ZmM5NDcyOTk5YTE2Mzg4MDI2NGYzNTQxOGM5ODlhODVkOTg3IGRlc2NyLWJyYW5jaAorMjExNTYgMjhjNGI2NmVjYmM1OGRhYjRhMzkxNmE3OWNhZDU5ZmNkNWY5ODM0MyBkZXNjci1icmFuY2gKKzIxMTU3IGE3YzJmZmViYmQyNjZmYWZiMDE0ZTgxMjQ5MWRmNTExZjM5NjA1NjIgcmVsZWFzZTIxLW1haW50CisyMTE1OCA0Y2IzNDMxNGJkOTcwOWMwMDU2ZjczM2VhNzMyNDk5Mjk4ZjZkMTU2IGxlZ2FjeS10cnVuaworMjExNTkgNTQxZTA5NWE2ZWQ2NTE2OTI1ZTY2MWY4YjliYzhjN2Y3MWVlNzZjMCBsZWdhY3ktdHJ1bmsKKzIxMTYwIDQxOGNhYmNiNzYzZjBhYzJkNTViMGZhNWQ3NmM4MTgzZTJkOThlZGYgbGVnYWN5LXRydW5rCisyMTE2MSAzNTRhNGRmMDllMzg1Yjg0OTNlMDJkODMwZTk1YTdhNWM3YTlmMDA1IGxlZ2FjeS10cnVuaworMjExNjIgMzFjYjVkMTczMTFhYjUyODkwOTExZjcyNWVhYTUxZGUyYzIyMWIzZCBsZWdhY3ktdHJ1bmsKKzIxMTYzIDAxMTZlNDU5ZGFkMmNiZGU2ZTkyMjY0ZGYxNzdkYzA2NTZmMWQ4MjEgZGVzY3ItYnJhbmNoCisyMTE2NCA0ZTMwMTlkYTkxYTkzNjVlYmE1MTU3MjJiMjhkMGU4MTQyMGJhMWQ2IGRlc2NyLWJyYW5jaAorMjExNjUgMjJmZWJhOTY1OWNlNzkyMGRkNjEyY2Q4NTM2MmVjOTQyZjM0MWE5OSBkZXNjci1icmFuY2gKKzIxMTY2IDExYWMwMmMwMzY5MGQ0MTQ0YTBiZmVmNTI1YTdkNDRmNWMzNGQ0NTkgZGVzY3ItYnJhbmNoCisyMTE2NyA5N2EyMDgyOTFjZDhiYjA4NDliZDU1Zjg5NTcxYTY5NDgzYzY1NDU2IGxlZ2FjeS10cnVuaworMjExNjggNDdjOWQwY2I2ZTMxNGRiYjc5NmQ5ODEzYjM0NzEwODBiNjA2N2EyNCBsZWdhY3ktdHJ1bmsKKzIxMTY5IDc2N2M0YjI4MjEwYWRlYjRlZTI4YzNkYWI2ZmE2YmViYzBhNTBjNTEgcmVsZWFzZTIxLW1haW50CisyMTE3MCBkYmU4MmE5YzZmN2Q3M2Y1OTkzYzQ1MTA2MzY4OWNiNzk5MjNjOWI2IGRlc2NyLWJyYW5jaAorMjExNzEgODA2NDdiODJlMWIyZDg3NDZjN2NmYjcxYWNiMGUxZWQ1NTJjMTEyMCBkZXNjci1icmFuY2gKKzIxMTcyIDBlN2NhZDUxY2Y2NjUzMGU4YTRhZDdhNzcxZmI0YzgyMWVhOWY1YzkgbGVnYWN5LXRydW5rCisyMTE3MyBhNzFmZWU4NGI0ZTQ5MDFiOTU3MjQ0MjBiNWUxODhiZjU3MjMxYTQ5IGRlc2NyLWJyYW5jaAorMjExNzQgOGNkNGEzZjAxOTUyMWQ5YTdkNDc1NjA2NDEyNjIxYTJjMGY5ZmI3YSBsZWdhY3ktdHJ1bmsKKzIxMTc1IGI1MWI0YzJiZjVmOWVhZmE4OThmMDBlODNjMTkyODJiOGYzYjJkOGUgbGVnYWN5LXRydW5rCisyMTE3NiAxN2IzZWU5Y2M0M2ZhMmY5MTM1OThjM2ZiZGUxM2RiMDM3MGZkNGM4IGRlc2NyLWJyYW5jaAorMjExNzcgZTFiMzA2MjVhNDY3NDA4OTMzZDQ4YjA2NTRkOGJlY2Q0NjdkNjIwNyBkZXNjci1icmFuY2gKKzIxMTc4IDJjZTcwYTg4M2FmNmE3YzA2MGUzZTc1NzliOTAwYjNjZWVlMDBhNmEgcmVsZWFzZTIxLW1haW50CisyMTE3OSAzMWMxMWFiMWEzZTg1NzRlYTQyYjJlZDY0ZmY1YzUyMWZiNTNiNDY5IGRlc2NyLWJyYW5jaAorMjExODAgMDQ2M2I5ZTU3MDRlYjI4Nzg1N2U4Y2MzMjZkM2VkN2ZlOWE3MTA5ZiBkZXNjci1icmFuY2gKKzIxMTgxIDdiYzQ3M2IyYzY1NDI0MzA0Mjc4NGI4YWNhMjY0Y2MwMjVjY2RjODkgbGVnYWN5LXRydW5rCisyMTE4MiAxYmNlOGJiNDFkYmQzZjA5ZDcwZTAyZjkwY2Q4MjMxNmYwOTliOTZiIGRlc2NyLWJyYW5jaAorMjExODMgMmU0YzZiYTdkMDljMTRkMTBiODE0ODc3YzQ4ZWU5YTBhNmFiZGYxZSBsZWdhY3ktdHJ1bmsKKzIxMTg0IDljZThhOTk1YmYxMmU1ODNkNDc0NGE0MzNlMmE4ZWViNmJmYjNlZjEgbGVnYWN5LXRydW5rCisyMTE4NSAwNjc2ZWEyZmY4NjdhOThkYTQyZDllNWQ4ZmRjZDRhYWZkOTkwYWQ1IGxlZ2FjeS10cnVuaworMjExODYgNTRmNzYyOTNkOTI2OTg1MTVkNTAzMzdjODkyNWQzNDc4YTkyNWE3NCBsZWdhY3ktdHJ1bmsKKzIxMTg3IDhlZjg0YjgzZWMxZmE0MzU1MTRjYjE1ZTBmOGUwYjdhYjU1OTE2OWMgbGVnYWN5LXRydW5rCisyMTE4OCAxMjZhNjZiMzQxM2NkMmJiZmY0MmE2N2ViNmY4MjJiOGYyMTZkZTljIGRlc2NyLWJyYW5jaAorMjExODkgYjFmNjMyODBiMmMyOThlYzkxMTUxOGZlYzg1ODFlOGFmY2M4YWQ2NiBkZXNjci1icmFuY2gKKzIxMTkwIDY1MWM2NjQwNmJmODIxMWMwYzEwYmQwYzVlOGU0ZjJhZWI0YjgzMTMgZGVzY3ItYnJhbmNoCisyMTE5MSBkNjM5YTFlMWYxZjQ4Zjg4ZmU0M2MwNzFmMTUwN2ZjMTY2MDdmYWI5IGxlZ2FjeS10cnVuaworMjExOTIgN2MzNDg5OWFkNTA2MjNlMmMzYjUxZDcxMGMzYjU2ZDk4YmI5NjcyNCBsZWdhY3ktdHJ1bmsKKzIxMTkzIDBlYzAzZTFiZTU1ODhlYjdlYWNmMmMwZDg4YmRjNTY4N2FhNDk1N2EgbGVnYWN5LXRydW5rCisyMTE5NCA0ZDFjNzg0OTMyMjFhYmFhMzIxYTZkOTAzNGYxNDJhODcyMjdhOTQzIGxlZ2FjeS10cnVuaworMjExOTUgZTViMjczZTk1Zjc0Yjg0OThjODNjOGFjMzc5YmZhOTViYTM0NDM0NCBsZWdhY3ktdHJ1bmsKKzIxMTk2IDMxYmQyNWEyZDhjNWI4ZDdhZjcxODk1NWQxNmMyYWZiZjA0ZmI3MzEgbGVnYWN5LXRydW5rCisyMTE5NyA2ZmJjNWYyMDFhMWY4NzYwY2U3YTE1MWU3M2U5ZTU4Y2Q3MDk2ZWUxIGxlZ2FjeS10cnVuaworMjExOTggYTY2NTcyYWM3MWU3ZGM3ODRiOTUxYTc5MjcxNzc2Y2ZjODdhMTI3MCBsZWdhY3ktdHJ1bmsKKzIxMTk5IDAyYWExMzNkZWI1MzhlNGU4N2YyZjQxMGQyZjk5Y2Y5Y2M5YTFkNzEgbGVnYWN5LXRydW5rCisyMTIwMCBmOTI2ZWIxZjU3NzAxYzIzMDEwNzJkMTA3YjlhZWZkYzM5YmFkMGZjIGxlZ2FjeS10cnVuaworMjEyMDEgZWZiNTA2OWNjNzRmZTcwOGMzOGJmNTYxZDM3YWQwYzJkOWU5NDhkZCBsZWdhY3ktdHJ1bmsKKzIxMjAyIDBiYWQ0MmU1NjMyMDQxNWMyZDEyNzUyYjFiNjdkYzA0YWM4MTA3YzggbGVnYWN5LXRydW5rCisyMTIwMyBjZjZhODY0Mzg3ZDM3ODgxYWQ3Mjg1ODY0M2Y2ZmFmYTk3ZjRlZTg4IGxlZ2FjeS10cnVuaworMjEyMDQgYzVhYzZmMDU1YzYyMzVjMjQ3YTA0ZGIzNDg5MTZjYmQyY2QwMTdhOCBsZWdhY3ktdHJ1bmsKKzIxMjA1IGQzZTQzOTlmZTJmOTQzMTYxNWFkYmFiZjZhNDNiN2RmNjRlYjhlNzYgbGVnYWN5LXRydW5rCisyMTIwNiBjNjM4YTdhMmZlNzdiOTMyMjJmMDdmYzBkZmIyODBkNmYxZDUyOWZhIGxlZ2FjeS10cnVuaworMjEyMDcgNjc3MWRhYjFmZTMyZmYzOTA4MGM2YmU0NDg1N2VmZGY4YTNmMWIyYyBsZWdhY3ktdHJ1bmsKKzIxMjA4IDM0MGU5MzAxZTg1YjMyNGZjNWMxNTU4MTFiYjBmYzk3Yzg0NWEyM2YgbGVnYWN5LXRydW5rCisyMTIwOSAxMmQ3ZDRkYjY5ZjJmNmYwNTE2YWZlMGIyZDUxYjEwZDY5MzViOThhIGxlZ2FjeS10cnVuaworMjEyMTAgMDlhMDhhMWU0N2Q2OGFhNzZmY2ZmNmIwNGYxMDdhYTE1YzU5N2IyOCByZWxlYXNlMjAtbWFpbnQKKzIxMjExIGU3ZjdlZWYxOGM5ODYzY2MzYTc2Y2MxODY2OTViOTRjNDAyZWNlMGMgcmVsZWFzZTIwLW1haW50CisyMTIxMiBiNzMyNDFlNTA1NTY3MGVlNGY0OTI4YmU0NjMxOGIxNzliMDNmOGU1IGxlZ2FjeS10cnVuaworMjEyMTMgY2M3NjMxZmJmN2Y5MmUxM2Q0ZDRhNGFlN2JiOTY5YTk1Mjc4YzlhOSBsZWdhY3ktdHJ1bmsKKzIxMjE0IDgyNjAwMGE0MDg2NjUyMjhjNjc1MDBkZGQ3MGI3MzAwZGQ1MDY5ZjQgbGVnYWN5LXRydW5rCisyMTIxNSAyZjIxZmViZjZkNDYyYjdmNzRiNWQ2NzliZWMzOTY0OGM2MzY3ODAzIGxlZ2FjeS10cnVuaworMjEyMTYgZjVhYjM0NzlhY2Q0ZDUzMmE4MmZlZDhjODIzNDAyNzVmNTNmNGIyNCBsZWdhY3ktdHJ1bmsKKzIxMjE3IGMyNTg3NmE1MWYxYjU5NjMwZmRjMGYwOTk4N2RhYWFkOGNhYjEyZDEgbGVnYWN5LXRydW5rCisyMTIxOCBhMmU2ZmZmNDcxYjAyNTMyMDA5NjdkYWRjYTE0ODk5YThhOGVmOWUyIGxlZ2FjeS10cnVuaworMjEyMTkgMTVhMjRlMGJmOTRmMjJkMTJhNWY4NThiZDE1YjU1OTNjZDljNjM3MiBsZWdhY3ktdHJ1bmsKKzIxMjIwIGQxMjIxZmJkZDg1ZDhjZGY5NGNkYTU2ZDI4NTgwNWRmN2Q5ZDhjOGEgbGVnYWN5LXRydW5rCisyMTIyMSBiZDM5OTNjNDk0YTFiZWVhMWE3YjZlYjQzNTE0MjE2MWEyNzkyNjFhIGxlZ2FjeS10cnVuaworMjEyMjIgZDNiMTk1NmUzZGUwYzEzZWMwNGQ2YTg1N2FiODllZWZjYWU2ODliMSBsZWdhY3ktdHJ1bmsKKzIxMjIzIGFlMGYwOWM3YzFlOTExNjA0OGM3YzdjYzE1MmI5ZWJmYjM4OTIzYzYgbGVnYWN5LXRydW5rCisyMTIyNCAzYTU4MDI3Y2FlNGU3ZGRmN2Q0NjM5Mzg2YTZhNDgwOTg4OGI4N2IwIGxlZ2FjeS10cnVuaworMjEyMjUgYTc4MjU0NDFjYWE0YTc3N2E3ZWMwMzRjODRjNTBhZDZjMDcyODhjYSBsZWdhY3ktdHJ1bmsKKzIxMjI2IGE0MzhhYmEyZDEzN2I3YTU5MTMyNzM2YjU5N2E1NDNjMGQ0ZWVkNmIgbGVnYWN5LXRydW5rCisyMTIyNyBhZWRjM2U5MjBkZWJjYWRhOGQyZjhlMTNmYzhmY2UzMjFjZDIzYjM2IHJlbGVhc2UyMC1tYWludAorMjEyMjggOGU1YjUzN2Y4N2ExOTE4Y2MyNzUzYTg2MjFkMzlhOWRkOTExNjU0MCBsZWdhY3ktdHJ1bmsKKzIxMjI5IDE5YmM2M2E4NDQzOTBlNGE4MmI3OTFiZTUyNGEwMGI2OTMxMDdiYmYgbGVnYWN5LXRydW5rCisyMTIzMCA1OTY1MzM5NDI5YzljZDIyZmU1YjA1MzAwYTY0NmMzMTAzY2FjYjJhIGxlZ2FjeS10cnVuaworMjEyMzEgOTkwYjczZmEwNzRjZGE0Y2FiMzEyZWI4NGU2NjU5ZTgwNmU3NzY3OCBsZWdhY3ktdHJ1bmsKKzIxMjMyIDM2ZTgyNTY2MGEyNDUxYWNjOGI2ZTU1MWU1YzhiZGQ5NTkwZjVjMGUgbGVnYWN5LXRydW5rCisyMTIzMyA5YTRjYWMyYjhiOGZjOTg2NzAzMTJjOGFkNmQ4MzUzZWU2NDE1YzEwIGxlZ2FjeS10cnVuaworMjEyMzQgMWE2YjhmNjlmZWQ2MjE4NGZhMTc1NmE3NzdkOGY0MTBjMDMyNDY5ZiBsZWdhY3ktdHJ1bmsKKzIxMjM1IDVlNDM1NzNmMGRmMWYxOWE3Mzg5NjQ3ZDEwMTZjNGNiMWVkNzA2M2UgbGVnYWN5LXRydW5rCisyMTIzNiBlZDM3NDVkYTc0MTkyODA4NmM3NGI5NjQ2ZDI2MGIwM2EwZWRjZjI0IHJlbGVhc2UyMC1tYWludAorMjEyMzcgYmU0MmNlMjk1ZWRiNTNhMzU5NDg3ZTA0ZGFiY2U1MDg2YzEzOTFkNiByZWxlYXNlMjAtbWFpbnQKKzIxMjM4IDU4NzM2Y2E5MTQzYzBmNmY3NWZjZDNiODkwMDMzYzg4YjUyZGE2NGQgcmVsZWFzZTIxLW1haW50CisyMTIzOSA5MDA1OTQzYzc1NGVlOTIwYTBiNjgyZjU2Njc2YWU5Y2IwNDE0MWVhIHJlbGVhc2UyMS1tYWludAorMjEyNDAgNGE4NzI2Nzc5YmJhZjczYTM2ZjJhYzFhMzE4NmY0YmEyOWY5N2RhMSByZWxlYXNlMjEtbWFpbnQKKzIxMjQxIDI1NjQwNmI1Y2YwYzRmNGI4ZmQxMzhiYjNiZGZkNDQyZmZkMWZiMTEgcmVsZWFzZTIxLW1haW50CisyMTI0MiA3NmMzZmY1N2ViNmQwNjZmMjE0OTA0MDRhZDhjNzU0YzgwYjE4Zjc0IHJlbGVhc2UyMC1tYWludAorMjEyNDMgNjI1M2QxMjhhNzhiZjkyYzc2N2Y1MGQ3MzM5ZThkNGNiOTM5NDNkNiBsZWdhY3ktdHJ1bmsKKzIxMjQ0IGUzNzA4Y2IxZTBkMDdjYjljNWNjYzFkMDEwYjIxZTIwNzA4NDJjM2EgcmVsZWFzZTIwLW1haW50CisyMTI0NSA4MjY5OTQ5OWIzOGVjMWQzMDQyOWM4ZDI5OGMxMWExYzJhMzhlZTdhIGxlZ2FjeS10cnVuaworMjEyNDYgNTQ2Yzc4NTJiYWM1NWNkOTIyNjc3YTM3NWQzYjlhOWQxMWRiM2EwZCByZWxlYXNlMjAtbWFpbnQKKzIxMjQ3IDBkNGFkODllZDMyZDg3ZWNhZWRiM2U4YTVkYzEzYjIwOTkwMWQ3MjcgcmVsZWFzZTIwLW1haW50CisyMTI0NyA3M2RlOTRhNzIyZDIwNmE0NWMwYjQ5ZDMwMTFjNjI5ZWFkNGQ2MmIxIHJlbGVhc2UyMC1tYWludAorMjEyNDkgMDc1N2I2Yzk5MzA0MTQzN2QxZmIzMDA4NDQ2YWJkNTQ4NDNhMGViMSBsZWdhY3ktdHJ1bmsKKzIxMjUwIGY5ZDEyN2FiMzJlYzlhYWQzMzcyODgwNjA2NGVlM2EwMzY1YWE2OGMgcmVsZWFzZTIxLW1haW50CisyMTI1MSBiNjY0YjAyYzNlOTFjZjQ5ZTJlMTJlZWYwZWM4NzM5MGEwNjJlMzFhIHJlbGVhc2UyMS1tYWludAorMjEyNTIgNDA5YWJmMjI1MTg1ZDIxZDM3MDRiOTMxM2JmMDRlMGI0NjEwOWI3ZCByZWxlYXNlMjEtbWFpbnQKKzIxMjUzIDA4NjE5YmYxODI5OTA0MjM3ZTdhMGNjOWRhOGE3ZjkyZWNjODkzNTYgcmVsZWFzZTIxLW1haW50CisyMTI1NCBlMWRkNDYzMGVmM2I5MWJhZDdmMjFkNTgxZDM5YWU2OTQ4NzlkMTdmIGxlZ2FjeS10cnVuaworMjEyNTUgNjk5MWRkYWZlMzgyOGEyZGMxOGZlZDVkMmY4YTNhZDNhOGRjZmUxMyBsZWdhY3ktdHJ1bmsKKzIxMjU2IDZlZWYyMWU1MjNiNjQ1Njk0OTE0Mjc4MmIxZjhjNTNmMWUzNjU2OWUgbGVnYWN5LXRydW5rCisyMTI1NyAzYTg3MzJjNjc4OThjNmRhYTRjZmEwYWE1ZDQ5ZTA0M2RiNWFjNzQ5IGxlZ2FjeS10cnVuaworMjEyNTggYWNkM2RhNWQ1NjNjYzgyY2ZiMDc0MGE1NWM4NDRjNmViNmEwMjg0MyByZWxlYXNlMjEtbWFpbnQKKzIxMjU5IDQ5NzUxNzNlMWEwMmQ4MmFlZDg4OWMwNzMzZjZhNWU2Y2M3Njg5N2EgcmVsZWFzZTIxLW1haW50CisyMTI2MCAyMjA0MDVjMDcyMzI1OTNhNGNkOWE3MTI3NGMzMjhkYjJlZmJmZjBhIGxlZ2FjeS10cnVuaworMjEyNjEgODNjNDc0OGI5MzkwZThjZTQyNDQwZmEwNThmMDMxOGM5YTc0YzVmZCBsZWdhY3ktdHJ1bmsKKzIxMjYyIGFhOGUyMzhhYjBhZDc2MzRlN2RkZDY3ZGE5ZjFjYTc4YWEzMzQxYWEgbGVnYWN5LXRydW5rCisyMTI2MyBhNGRjMjFiNDc3NGRjOTk3ZTA3MDM5ZTFiZWJhZDc5MTExYWIzOGU1IHJlbGVhc2UyMS1tYWludAorMjEyNjQgN2QyZTZlMWQ2MGNlNThiYTRmOWRmZjA5ZWFkMWU2YjcwYzgzNWNjMSBsZWdhY3ktdHJ1bmsKKzIxMjY1IDRlYmQyOTJjOTc1ZjgwOThmMWY1YWI0YTljYjI3NTljODcyYTY4ZmMgbGVnYWN5LXRydW5rCisyMTI2NiBmMDM2MTgzNzMyM2Q2ZDZhNDgyNzQzMTJjNGJhMWQ4M2ViMjU2ZDE1IGxlZ2FjeS10cnVuaworMjEyNjcgYjg5M2QxMjA0NWNiNDYwOWVhMjIxMzVmNTdjMmRiNjVlYmYxODU4YyBsZWdhY3ktdHJ1bmsKKzIxMjY4IGY5MjYxOTA0Y2ViYmM1NTlhNGNlMDRlYWM2MjI3MTY2ZjY0Y2EzYjIgbGVnYWN5LXRydW5rCisyMTI2OSBkOTIzYjNjOGIxNTI2OWFjZjI3YzdkMTAwMTg4ZWJjNzkyNDliNjUzIGxlZ2FjeS10cnVuaworMjEyNzAgZWFlNjZiZjI0ODc4ODhiZDQ2OTE2NjI4Y2NmM2QzNTcwYWU1MjcyNiBsZWdhY3ktdHJ1bmsKKzIxMjcxIGZlNDA3MWJlZmY0MTg2OGY4YzBmNDY5MDRjZGUzNDMxYzg3YmViNTkgbGVnYWN5LXRydW5rCisyMTI3MiBlYjUyNDMyMmExYzMxYzYzNTI5NzlkMjU1YTUyMTUyMzI2N2FhZTYzIGxlZ2FjeS10cnVuaworMjEyNzMgZjgyODdkODRiNzU1MTcxNmY1YWM4YzIxZTM1YWQ1NTJkOGNkZWVkNiBsZWdhY3ktdHJ1bmsKKzIxMjc0IGYwMjYwNWI4ZmRjMWU1OTcxNTYyMWY4ODFmNWRiOWUwODFlOGNjNWIgbGVnYWN5LXRydW5rCisyMTI3NSAwMzdjOGJlNTA1ZTA1OWQ3NzRjODczNDVmNTExNWYxNThjYmQyM2ZiIGxlZ2FjeS10cnVuaworMjEyNzYgYTFlZjQzYTZkNmUxMzEzZjQ5YTkxN2RhNjYxZjliYmJjZjBiODRlNCBsZWdhY3ktdHJ1bmsKKzIxMjc3IDA0MzljODJhOGZmNDc1NjEzMDY1YWJmNjQ0ZmQ2OWM1NGVhNjdiOTcgbGVnYWN5LXRydW5rCisyMTI3OCA0NTE3MDkzZWI5OWVhY2JhOGFkMDhiMTJlZjNmMGYwYTk1MWY0YjMwIGxlZ2FjeS10cnVuaworMjEyNzkgZTRkNjU1YWU5MTQwZTMxM2Y5OTUzMzkzZDliZjk3NGQ5YjRlMjZjMyBsZWdhY3ktdHJ1bmsKKzIxMjgwIDQ3NzE3ZTU2NjdlYjE1ZjE4NGUwYTc3MmQzMmI1ZDdjOGFmNWZmNTggbGVnYWN5LXRydW5rCisyMTI4MSAyNGMyOWIzNzE1MTAyY2RiMzU2OWYwYjZhNDhjMGMyYzJiMGVlMTYxIGxlZ2FjeS10cnVuaworMjEyODIgOWZhNTRiZDdhN2NiNTZlYzhlOTRkZDQ0MDMwOGRmMjIzNDE3NDE2YyBsZWdhY3ktdHJ1bmsKKzIxMjgzIGM0ZGIwOWI4NzQyNDIzMGQyMmU5ZmZlZWZkZjNlNWM0YmI3YjMwOTkgbGVnYWN5LXRydW5rCisyMTI4NCBlM2NmMzM0OGZlY2E1MzBhZjQ4M2RlZGM3NGE3NDU4ZDFmODhhMmMxIGxlZ2FjeS10cnVuaworMjEyODUgZjFiNWZiZWVjYzBlOTkyMTcxNDcyZDllOGVmZTEyN2JkZjVmOGQyZCBsZWdhY3ktdHJ1bmsKKzIxMjg2IDQ4MjZhNmNkYWZjNDBkZTIyYWNiZWNlNDM3ZDAwZjM4ZmY2NmYxNjYgbGVnYWN5LXRydW5rCisyMTI4NyA0NWRlMWFjMmEzNzY3YjY4NWNhMGJhMTA4ZDU4ZTRhOGY3NTk1MzEyIGxlZ2FjeS10cnVuaworMjEyODggNWQzZTdmOTljZjUyY2Y0NmRmYzlhNTgxYmZkNzhhZDRiYzliZmY2NCBsZWdhY3ktdHJ1bmsKKzIxMjg5IDA2NWIxN2ZjMGQyZWUwNmY2NTEyOGI1YWJlYjI2MjFjZDNlZWYxNzAgbGVnYWN5LXRydW5rCisyMTI5MCA5ZjFkZmE3ODZiYTY1NWVkYTEyN2YxZmU1YzYyODg5ZjZhNDhkZTkyIGxlZ2FjeS10cnVuaworMjEyOTEgMDUxNGIxNmMxYTY4M2YzYmQ1NDdhY2Q5ZmEwZDQ2NjNjMWJlYjcxMSBsZWdhY3ktdHJ1bmsKKzIxMjkyIGZiN2M0NGFlNGE2Mjc3ZDQyYjY2MzFmZTYwZjZhYWI2NmE3ZjQ0YjkgbGVnYWN5LXRydW5rCisyMTI5MyBkNTBkNGY4MWFhNGM1YTdjMDBlZGY5MDQ1MzNjNTg5NWRhZjAwMTRmIGxlZ2FjeS10cnVuaworMjEyOTQgMzU4Y2I3NGMwODY0ZjlhOGI3OTNhNjcxZGYyYTM2YWE0MWQ2ZTNhNSBsZWdhY3ktdHJ1bmsKKzIxMjk1IDU3ZGQxM2I2YzgwMzEwZDQ0M2IyMGZmNTVjY2ZkNjNmMjhiMzhmNDAgbGVnYWN5LXRydW5rCisyMTI5NiAzMDlmYjAyNmM4NGVjZDU3ZmQyNTcwOTVlN2M4MzVkYjAyMjk3MzhmIGxlZ2FjeS10cnVuaworMjEyOTcgMWEyYTkxNGIyNDZjMjJjNmYxMzFlYmNhMDRmNGU4ZDE5MjE1OGIyYyBsZWdhY3ktdHJ1bmsKKzIxMjk4IGM4OGY0MTQ4NjA1ZmQ1MmNlMGViMjA2MjYzNGQ3OTg5NDFmNjI5YTkgbGVnYWN5LXRydW5rCisyMTI5OSA2YjBhODE1N2JlM2I2ODA2ZjEzZTBhMzJiMDRmZWVhYzBiN2Q3YWI2IGxlZ2FjeS10cnVuaworMjEzMDAgNDE0OTFkMTk2NzQ4Y2Q0ZGZmOTAzMjI5ZjBkNjUxMWQyNTc2ZTQ3YSBsZWdhY3ktdHJ1bmsKKzIxMzAxIDNkOTE2NGQ5NWU3ODlmNzE4ZDY3OWQ4MjYxODExNzgyN2Y1ZjM0NjYgbGVnYWN5LXRydW5rCisyMTMwMiBhNDZlMzVhY2Y5YzFjNjRiYTkwMTYzYmFjMGVkNGVjZDliNmYxODU3IGxlZ2FjeS10cnVuaworMjEzMDMgMTZlNGViNDI3Nzk3OGY2NmJlOGI0NjZjZWU1NDhjZTk1M2U3NTM4MiBsZWdhY3ktdHJ1bmsKKzIxMzA0IDc4YmZiZTJlNzE5Y2IzYmQ5MDM1NGQ0ODQ5NzY2ZDEwZTk0NzJhOTcgbGVnYWN5LXRydW5rCisyMTMwNSA0MjZlMGM3MjFiYmY2ZWIyMGE1Mjk3Y2JlMDc0Y2QxODE5NDFkMGY5IGxlZ2FjeS10cnVuaworMjEzMDYgZWJmNjFiNWI1YWViYmNhNzExY2M2Y2E3NTRmZGEyMTE1MGM0YWVjNiB1bmxhYmVsZWQtMS4xLjEKKzIxMzA4IGZkODMyMTJlYjhmMjRlZmQ2NDk0Yzg5YTQzMjYyNWM1ODU3ZWY0MDUgbGVnYWN5LXRydW5rCisyMTMwOSBkZWU0OTg5NjFiZmUzYzkwZmM3NTllMDJhYjRjNGE4ZGQ4ZDNkN2YyIGxlZ2FjeS10cnVuaworMjEzMTAgNGFkODQyZjlkNDMxNDdhODAxOGJjMGY4YjFkN2Q5YTMxOWVlN2M3NyByZWxlYXNlMjEtbWFpbnQKKzIxMzExIDQ0MTIyZTdiNDljZjJjOTQ3M2U2OGRhMjEzZGNhODkyNWZjNDljMDIgbGVnYWN5LXRydW5rCisyMTMxMiA5ZTMyNmM5ZTZiZTU5NDIxMDFjMTAzZDZhOGM2N2Q1NTQ1NmRmYTI1IGxlZ2FjeS10cnVuaworMjEzMTMgODZkYWIwZDQzYjczMTJmMGI4ODdlNTc2OTFjNGZlNzhkNTg3ZTczOCBsZWdhY3ktdHJ1bmsKKzIxMzE0IDk3MzRmODk1ZjRmYmVkOThiNDdmYTYyZGQxMjY2OThmMGY0N2Q5MmEgbGVnYWN5LXRydW5rCisyMTMxNSBkMmM5NTAwMzIzOTMwMDFmN2JkMjMyZmM4YThmZTQ1ZDFiMjY1NjU0IGxlZ2FjeS10cnVuaworMjEzMTYgN2M4ZGFkNWYyZDk2NmRjMjFkYmRkZDcwZGRiOTBmOTFlMjliN2QwNiBsZWdhY3ktdHJ1bmsKKzIxMzE3IGI1NjU4YTIzMGUxYTUyNzYwNDVlMjdiZDQ2YTNlOWFjMTNmZjhmMzUgbGVnYWN5LXRydW5rCisyMTMxOCA4YjdmZjQ0YjQ2Njk1OTdhNjQ3ZjQ4MDYyM2QzNWRhOGY2ODdhYzkwIGxlZ2FjeS10cnVuaworMjEzMTkgMDYzMmRjZDY5ZWEzYWYxOWE2OTgzNTY3NGI0ZDY0NWE3MTQ2YjY0MiBsZWdhY3ktdHJ1bmsKKzIxMzIwIGUzYmEzNzM5ODU1YWQxZmY3N2Q4ODRiZDdmNTdiZGMwODlmYzNlNDkgbGVnYWN5LXRydW5rCisyMTMyMSBmMzg5MjNjZTNjNmIwZjRhZGJhMzE2N2JmMjQ5MjU4NDY3ZjdmODViIGxlZ2FjeS10cnVuaworMjEzMjIgMWYxZDJjNTBiM2M3ODQ4MTFjNzRhMTNhNGM2NmNkNjU4ODgzNDg5OCBsZWdhY3ktdHJ1bmsKKzIxMzIzIGY3YzAxYjkzOGExNzM4YWQ3NTI1ZjE0MTEyNWEwZjE4NmFhMDk0MDkgbGVnYWN5LXRydW5rCisyMTMyNCAwNDNlMjAwMTc0ZjFiN2U5YzM0ZjRlZDYxZjFkMmM4ZWVjNjk4MmM5IGxlZ2FjeS10cnVuaworMjEzMjUgZTMxYTM0OTE2NmY0ZTBjZDFlMjVlMTk5ODBlZmEyN2MzMDEzYjQyZCBkZXNjci1icmFuY2gKKzIxMzI2IGJjMDVhOTUyNDJhMzc4MDNhNTFiZGU1MjkyYTFkOWJkYmQxOTMyNWQgbGVnYWN5LXRydW5rCisyMTMyNyBmNjA3OGEzMGY3MGEyODBlYTZlYjU4NGUyMzNiOWVjODM2YTY4NzZkIGxlZ2FjeS10cnVuaworMjEzMjggNjgwMGJjY2UwNDU1NWI5ZmEzZmUyNGYzNDA1MDk1YWU2NTI3NmFjNSBsZWdhY3ktdHJ1bmsKKzIxMzI5IDRmYTMxZWNhM2JlNGE1NGQ4ZTkxN2QzNTA4MGI0MWNjZDMxMzZkMDkgbGVnYWN5LXRydW5rCisyMTMzMCAyOTVhY2MwNzU1ZjBjN2ZlYzhhMWQ5YWRlYzUwMmExZmVhMzllMWJiIGxlZ2FjeS10cnVuaworMjEzMzEgNTVmM2EwNGUwNjQxMWVjZmYyNzY1ZDA3ZjAzY2Q5YTcwNDM5YWQ4MSBsZWdhY3ktdHJ1bmsKKzIxMzMyIGZmYmI5YzkxOGFjMDQ2YjBjZTZjNWJiNmI3YjE0NDBiMzQ4NjZmNzAgbGVnYWN5LXRydW5rCisyMTMzMyAwMzQ0ZTRhYzcwYjBjOGY5NTVlMjE1ZjAzZDY2NGQ1MmRjOWQ2ZGI1IGxlZ2FjeS10cnVuaworMjEzMzQgYjE0NTIxZmQ4ZTM5MTYyMWEzMWQwZmJmY2IxMzVmZWQxZTExYzgwYSBsZWdhY3ktdHJ1bmsKKzIxMzM1IDIwZTNhNmUxMGMyNDhmZTAzY2NiY2RmNDUyY2Q3ZDcwN2FmNzA1YzUgbGVnYWN5LXRydW5rCisyMTMzNiAyMmY4NWM2YTY1MjBhNjk1OGIzYTkxMTg1YzhjZDk1ZTViMDIzOWViIGxlZ2FjeS10cnVuaworMjEzMzcgOTMyOTAzYzdkMDU0YjAyYmI4OTcwY2UyZjIyMTRmOTcxMjYwMThlZCBsZWdhY3ktdHJ1bmsKKzIxMzM4IDk4MjE2M2M0ZTlkMmJlMGEwMzJmNmU2MTg1MWM4Mzg5ZTAyMmIzMDkgbGVnYWN5LXRydW5rCisyMTMzOSA2OGMxMmQ1NTU2ZGY3MTZiZDA0NmNkZjg4MzE1MDA3MzQ2MmZhZDdhIGxlZ2FjeS10cnVuaworMjEzNDAgMGZmNzZkNzgxZDJjNjExOGQ2OTgyMTk4OWM0ZGU0OTQ5YjI2ZjFkMiByZWxlYXNlMjEtbWFpbnQKKzIxMzQxIGZmOGUxODNhZTU4Zjk0MWVlMjY5NjY1MjYxMjRlNDRmY2UyNGE5NWEgcmVsZWFzZTIxLW1haW50CisyMTM0MiA3Y2Q2ZTUxNWZkMzBhNjkxNjE3OTQxYWM2ZTExZjRhNmJhNjRjY2I1IHJlbGVhc2UyMS1tYWludAorMjEzNDMgMzE0ODQyZGNkNTJlOTRlNzQxZWM3OWNlOTIyZWEyYTZhZmU3Mzg3MiByZWxlYXNlMjEtbWFpbnQKKzIxMzQ0IDg5M2JhMWYwMzc4YTFmNjQ0YmMwNWFkNGM0OGI2MGI0OGYzZGQ3MTQgcmVsZWFzZTIxLW1haW50CisyMTM0NSA2N2M4NDFkODIxZTA3NGE5YjdmNGNlNzE0MDFiNTVkMTM1MjJkMDU3IHJlbGVhc2UyMS1tYWludAorMjEzNDYgOTA5ODQxNTk3MWQwMTcwMWJjM2YyYTk5Y2MyNzI0MWQyMmI5Yzc4OCByZWxlYXNlMjEtbWFpbnQKKzIxMzQ3IGJlOTY3MWU2MWY0YTYwODY3YTRmZjExZDAxYThiZWVjMmFmN2QzMGYgcmVsZWFzZTIxLW1haW50CisyMTM0OCAzYTZhMmU1OWRlMDNjMzcxZmYzOWY4MDI2MzgyMjlhYWRmMTE2OWI1IHJlbGVhc2UyMS1tYWludAorMjEzNDkgYWMwMDI3ZTJiM2I3YTRmZDNmMmIwMDRmNTVlZTc2ZTNjZTQ5NWIyNSByZWxlYXNlMjEtbWFpbnQKKzIxMzUwIGU4NjUwZDc1ZTVhNDU0Yzg4YzUwNmRiMjY1NjJiOTVlNGYwYjUzMDUgcmVsZWFzZTIxLW1haW50CisyMTM1MSA3NWMxZjljM2YwZDFmN2I4MzA2YTg2NzM1ZmNjYTEwMDk2M2NjYjI3IGxlZ2FjeS10cnVuaworMjEzNTIgOWMyYmMzZTRkZjczODM3MWZhOTc0MGY4N2RlNTkyMzY0MmNhMzg3YiByZWxlYXNlMjEtbWFpbnQKKzIxMzUzIGQ1MmU2MzVlMjA1Zjg3NjM0MzRhYmU3NTg4MmU0NTNlMTkwM2JhMTcgcmVsZWFzZTIxLW1haW50CisyMTM1NCA2Y2VjNzYxZGYyYzM0YWUxOThhNTk0MzVmMjMyMjNkYWJiNTY5ZDlhIHJlbGVhc2UyMS1tYWludAorMjEzNTUgZmE0YTc3ZTQyNGRkYjM1ZTg5MzExMzc0NWZlZjJiMzg1NDIwM2UwNCByZWxlYXNlMjEtbWFpbnQKKzIxMzU2IDA3MWM5NTcyMjFlY2M1OWQ4NTU0NWEyMDk2MGMyZTdkNTAxNmUwOTUgcmVsZWFzZTIxLW1haW50CisyMTM1NyBjODIzZWM0N2RmNDk1ZTU4Y2YxNzM4NTEzZjAzMDQ1N2FkNzdlNDA1IHJlbGVhc2UyMS1tYWludAorMjEzNTggMWFhNTkxZTQxODE1NDVjM2JkYzg1MDk4MzQxZTU0N2MyNDQzNTk2ZiByZWxlYXNlMjEtbWFpbnQKKzIxMzU5IDE0MGNiMjQ2Yjg2NGFlYTAzZjVhYjY3ZTFlYTA2ODcwNzQ1OGU3MjcgcmVsZWFzZTIxLW1haW50CisyMTM2MCAxNTlhYmZjOGIxYmM1MWJmYzkyZDE2YTBiZGQ2OGEwNTc2NTA5NGNlIHJlbGVhc2UyMS1tYWludAorMjEzNjEgMGM5Nzg3MjhlYmFmZWM4NzMyZDg4OWM0M2YwZWRhN2Y1YzlmYTEwMyByZWxlYXNlMjEtbWFpbnQKKzIxMzYyIDBkMjg3NDM0MTQ0YjU5YzJjMWU3NmY0Y2JkMmM0MDU5MTc3OTA3ODAgcmVsZWFzZTIxLW1haW50CisyMTM2MyBjZGE2Y2E5ZGZkNTkwZDQ5ZjgxOWUxZmE3Y2UzNzQ2YThhYTk5NWVkIGxlZ2FjeS10cnVuaworMjEzNjQgM2JhN2EzNThjZTAyODg1YWY0ZDVhM2I1YjJlZDY1ODI0OGQzZTQ5MyBsZWdhY3ktdHJ1bmsKKzIxMzY1IGZiMzViM2EyMjYwNDYyMjFmN2I3ZDM0YTJiNjY1YjQzYmEzNjI5MWEgbGVnYWN5LXRydW5rCisyMTM2NiBlNDI3YWZiNTYzN2YwOGMxYzI0MGVmZWFlMTk1MmIzMjkwOWEwZmRlIGxlZ2FjeS10cnVuaworMjEzNjcgOTNiZGM1ZWNlMWJmNjk4N2I2MTdiODljYWI0Y2YyNTlhNmFkNzdiMCBsZWdhY3ktdHJ1bmsKKzIxMzY4IGU0NTI3ZDQ1ZTk0MmQxYzk1ZjYyMGVlMTk2MWJkMzViMmJhZjgzNjYgbGVnYWN5LXRydW5rCisyMTM2OSBmOTk1YzRmMjUxMjAwOGIzYTVhNjRjOTljOWQ0ZTNjYjMyY2ZmZDg2IGxlZ2FjeS10cnVuaworMjEzNzAgZDAxNGI1MjI2OTAwZDczMzIxMTliNjhmYTM4N2NiZWFhYzdhMjM1MiBsZWdhY3ktdHJ1bmsKKzIxMzcxIGJmOTM2YzUyOTYzNTNjMjY5NGNhM2VmYzVjZGM3MDIwMzgzNGZjOWQgbGVnYWN5LXRydW5rCisyMTM3MiA0OWFjYzhhYzYwYzIzMjQxNWQ5YmQ1N2RiY2JlYjQ2MjIxYjg3YmY3IGxlZ2FjeS10cnVuaworMjEzNzMgNDEyNDNjYjRlYTA1ZDc3NzEyYTU0NmM4OTY0NTE4MDU0NTQ4NGM1NiBsZWdhY3ktdHJ1bmsKKzIxMzc0IDk3NmIwYWU0ZjUyN2MxYTFlNzVjNWI1YWM0MzUxMjMxZGFlYmVlMTIgZGVzY3ItYnJhbmNoCisyMTM3NSAzZjBiZGQ0YWU2ODQwMGY2NDg4N2MwODY2YzMzYjY1YTAxOGRiNWE5IGRlc2NyLWJyYW5jaAorMjEzNzYgNzU0ZGViODY4MjBlNWY1Y2E4Y2ZiYTYwZjI0ZjJhMzk5NTBjMDZiZCBkZXNjci1icmFuY2gKKzIxMzc3IDZjYTNkZDgyY2IwN2VkNDM1NWFiNWIyMzIyZGFhZDU4YjRkM2YwMzcgZGVzY3ItYnJhbmNoCisyMTM3OCAwNGE2NGQyZDhiMmQyMDU3ODkwNWM1N2RjZWM0NjMwYWQ0NTJiMzU4IGRlc2NyLWJyYW5jaAorMjEzNzkgMDIyNmQwNmUzZWZmNTkyNzQ5MGVhN2NlNjc1OGMwNDZiOWQ1NzhmZiBkZXNjci1icmFuY2gKKzIxMzgwIDdlZjY2MmFlZDlkZTRlMGE2N2E1OWNjMjQzOGM2MWE3NzU3MzU4NzAgZGVzY3ItYnJhbmNoCisyMTM4MSBmNzMwMjljNzFiMGRmMDllZTA3OTU1OTIxMWI0YTQwNmE5NGVmNzc5IGRlc2NyLWJyYW5jaAorMjEzODIgMmQwYjY5YTY3ZjY5NGM2NWIzOWI1ZjM3ZTJlMGYwOWIyMDgxNDMwNiBkZXNjci1icmFuY2gKKzIxMzgzIDQwNWVhYmEzNmIyZmM4NjJlYzJiYTdhNGQ3ZWFmOWViMjhjY2EyMmYgZGVzY3ItYnJhbmNoCisyMTM4NCAyNzgzOWJhN2VjMjJlZDQ5ZTJjMzE0ZjkxNjNhYmQ2OWE1OTRiYzUzIGRlc2NyLWJyYW5jaAorMjEzODUgODVkYjk4OWY2YTczYzZjY2M1NmFjNDM5ZGI2OGI0ZThmNWE5MzJhMiBsZWdhY3ktdHJ1bmsKKzIxMzg2IDZhMTYzMDExNzgwNTE2N2VhYjljMDhkNDZjZDNhOWY5NzQ1MDg4ZjcgbGVnYWN5LXRydW5rCisyMTM4NyA3OTQ1ODJmYzA2MjNlM2I5NTg3N2FkOGZkNWRlYWYxNTM1MjFjYjMwIGxlZ2FjeS10cnVuaworMjEzODggYzJhNjBkZTkxZDJjNzEzODEzZjNjZDIyMTI3NWVlOGUwMjRlYjA1NyBsZWdhY3ktdHJ1bmsKKzIxMzg5IGVkYWRmYTI4MzU5Zjg1MjUzMDBkYWNiNDMwNDQwMWEwZmQyODk0MTcgZGVzY3ItYnJhbmNoCisyMTM5MCA1ODQ2OTIwMmVlOGQ4YjFiNWM5N2QxZDVkODViYWU2ZjQwMTJhYmNmIGRlc2NyLWJyYW5jaAorMjEzOTEgZmU2MzM1MzRmNDQ3ODYzNzU0N2EyNzQ3OGI5YzM2OTY2NjM1MjEzMCBkZXNjci1icmFuY2gKKzIxMzkyIGExMmVjODg3NjUxNWMzN2U3NjM5NmI2YWM1N2FjNTc2ZDdmNDJmOTkgZGVzY3ItYnJhbmNoCisyMTM5MyA1NjY4YTg1NTBiZTQ1NDViNGJlNGQyMTUzY2Q4OWUyOTczYmU2OTgwIGxlZ2FjeS10cnVuaworMjEzOTQgZTkwZmMzNGQ3M2QwMGZhMjJhMWI1MmFhZjU5NWFkMzM5OWEyNjg2MiByZWxlYXNlMjEtbWFpbnQKKzIxMzk1IGU4ZGM3MzM4NjcwNjJhMTQ5YWExMjc3MzI4MGY5NTdhYjc3NGJiMzkgcmVsZWFzZTIxLW1haW50CisyMTM5NiAwZmRjMjc3OWU4ZDQzYzRjZDdlZmMyYjI2YjZhY2ZlMzI5OWY3MGIyIGRlc2NyLWJyYW5jaAorMjEzOTcgOGRiOTQzNjdmYWUxYzgwODA3MGIxYzFmYzIxMTlmNTQwMDdiNTk4NSBkZXNjci1icmFuY2gKKzIxMzk4IGIzYmEwZjQ4YWRjNGNlODA1YjUxNmUzZGZjZGY4N2ZiY2IxNDQ3ZGQgZGVzY3ItYnJhbmNoCisyMTM5OSAxMTY2MDExYTljZmNhOTgyZTAzMDI4M2Q1MmY2MjMyZmU5Y2JiZTAxIGRlc2NyLWJyYW5jaAorMjE0MDAgZjcwYjJkNjNmMzA5YThlMjYxMWY2NTFhYjgyN2RiNjQ4YTM3NjQxMCBsZWdhY3ktdHJ1bmsKKzIxNDAxIGQzMmZlNDhmYmI5NjhkNzBjMTAwZTZkZWI3YzJlZjM4NzUyOTJiMjAgcmVsZWFzZTIxLW1haW50CisyMTQwMiAyNjRlZDU1ZGVjNmUxYWQzNTQxOWNmOWRkMGJiMTM2NDZiMzQwNWE3IHJlbGVhc2UyMS1tYWludAorMjE0MDMgNDQ5ZGE4NTdkY2U1OTQ0MWE5MWZkMjdlMjBmN2UzM2ZkZGY2NTZmOSBsZWdhY3ktdHJ1bmsKKzIxNDA0IGMwMjliNzQzMzJkMmFhZmNiYmMwY2Q4MDcxZDU0MmZiNmIxMTVjNTUgZGVzY3ItYnJhbmNoCisyMTQwNSBkMmM5OTYzZTQyOTE1NTU2ODE3YzFiZGM2YjZlYjU5ZDdhOWRhNmNhIGRlc2NyLWJyYW5jaAorMjE0MDYgMWRhNzI0Y2VlMjJkM2Y2NTU5Y2RiYTAxZDEyN2VkZTkxYzBkM2I3OCBkZXNjci1icmFuY2gKKzIxNDA3IDVhNzg0MTM0MGRjN2MxYzkzMGQxZDU5ODQzNWYyMjljYjgyOWU4NDQgZGVzY3ItYnJhbmNoCisyMTQwOCAwOGEyYzJlNzk0ZWZkZTZjOTQxYzhhNjE1M2YxOWZmOTExY2IzNmVmIGRlc2NyLWJyYW5jaAorMjE0MDkgMDIwMGNkMjI0OTJlYzI2MDljZjE0ZmQ0MDYzMDQyMzk4Y2QxMmZmMiBsZWdhY3ktdHJ1bmsKKzIxNDEwIDRiYWI5ZWNmM2UwNWUyZjY2OGZmMGJmZmIwZmVmMTA2YTdhOWZjNTYgcmVsZWFzZTIxLW1haW50CisyMTQxMSAxNzMzMDQyOWNkZmViNTgwOGIwODFiODNjZWViOTc3ZjJjMmY0MzUxIHJlbGVhc2UyMS1tYWludAorMjE0MTIgNzk4YjVlNmI0OTE1ZjBkZTk0ZWE2MjgzMTk5MzEzYWFiNjNhNDJiZCBsZWdhY3ktdHJ1bmsKKzIxNDEzIDU1OTY1MDRhZDQ5YWZiMGE1Y2ZhMDM3NTY3YzllZjY5YTQ1YWNmMjYgZGVzY3ItYnJhbmNoCisyMTQxNCBlNTg3OTllZWZhMzk3ODFjMDFiODhkYmNhYjkyMDQxMDc5ZWI5MWE3IGRlc2NyLWJyYW5jaAorMjE0MTUgMjdiODY2NTE0YzllYmRjZmQyYTA2ODA4NTA3ZTg0MzQwMDQyNDIwMiBsZWdhY3ktdHJ1bmsKKzIxNDE2IDI1MTNiYzFkYjEyZmVkYWE0MzA5ODJjMjhmMWI1MThlNTUwNWY5NGUgcmVsZWFzZTIxLW1haW50CisyMTQxNyA1MjBlMWY0MDEwMWFhMDFkMzgxYjQyMDgwNmE0MTMzMzU5NWZkMWI2IGRlc2NyLWJyYW5jaAorMjE0MTggODkzN2QyMzRiMmE4ZDY1MmZjOTViNjAzZTNhNTNmMjU1MDg0ZDFjOSBkZXNjci1icmFuY2gKKzIxNDE5IGM2NzIzY2Q1NTQ1OGIyNDhkYTc4MGM1MWMxMmM3MTNhMDRmNzhjYWMgZGVzY3ItYnJhbmNoCisyMTQyMCA2NTBmNzAwNGU2ZDM5YWEzMzYyNzQ2ZDNmYTZkNDA0NTQxMjcxZmZjIGRlc2NyLWJyYW5jaAorMjE0MjEgMjNiYjNmNDljYjk0MjQ5ODNiZGJhYWZjMzliYTlhM2ZmODgzYmQwNiBkZXNjci1icmFuY2gKKzIxNDIyIDQ0YTg3YzMwMGYyYmE0ZjNhMGY4NGNiNDNhMTgyMjEzNjYzN2I2ODEgbGVnYWN5LXRydW5rCisyMTQyMyAzZWRhNjIzMWUxYzI1ODQ5MDhhNDgxNDFhMGUxN2UyZmM4ODIyZDM0IGxlZ2FjeS10cnVuaworMjE0MjQgZDIzZjk5MzFiMDMzNTlhODVmY2YyYzI5N2M4ZTMzZmY4MjA4NDQ2NyBkZXNjci1icmFuY2gKKzIxNDI1IDRlMjZiNDFkMmYzZGJjYjZlNzRjNDQ4ODBjNzI0NWFjMmVlYzdiMWIgZGVzY3ItYnJhbmNoCisyMTQyNiA5ZGU2NTYwMDQyMGI2MDcxODM0MWZiYjljYWMzNGU3MzYyZjY3ZDZhIGRlc2NyLWJyYW5jaAorMjE0MjcgOWM1OGRkYzQ3MTk1YWQ4MzMxMTgxZTllOTcyNGQ2MzBmYjZhNjBiYyBsZWdhY3ktdHJ1bmsKKzIxNDI4IGJlMDk2YmI0ZTNmMjI3YTc0NDQzM2EzNDJiMmQzNWRkNjc0NTNlOWYgbGVnYWN5LXRydW5rCisyMTQyOSA5ODU1NmNkZmU3MTY5NGViNWMwZWE4YjcwMzA2ZWNjYjAwOWMxMDI1IGxlZ2FjeS10cnVuaworMjE0MzAgYTgwZTBkMzlmMTBiMjdmYThhZDRlOTUxYzYwZGEzZDAyOTJhYjQ0NCBsZWdhY3ktdHJ1bmsKKzIxNDMxIGZhM2E0MjA3ZDk1NzA4NDc1MmNkNWFkM2QzY2Y5MmM1MTAwNTk4MTMgcmVsZWFzZTIxLW1haW50CisyMTQzMiA1NjY1MmU2ODQ3MzdiOWRiMmZjNTJlMGRlMGRmNTNmYmMyZmFjYzVjIGxlZ2FjeS10cnVuaworMjE0MzMgOTAzMjEyNjEyNzcxMjkwYTQ5ZjYwN2I2NjI0YjI1YTRmMmNkOTc3YSBsZWdhY3ktdHJ1bmsKKzIxNDM0IDExNzM3MWFmNTQ0YjA5MGE1NDA4YjMwMDJiNWE3MjliZmU0YmVkZDcgcmVsZWFzZTIxLW1haW50CisyMTQzNSBjYWE4ZmZjM2NkMWM3MGUwN2I3NjdmNDQyZTUxNmUxMDIzYmY1N2U1IHJlbGVhc2UyMS1tYWludAorMjE0MzYgNzdmNDE2Mzg3OTIyZWE3ODE4YjI2NDVmYTgzM2JhMmZkMTg0M2M0ZiBsZWdhY3ktdHJ1bmsKKzIxNDM3IGMwMjg4NjcwMjMwZTkzMjViZjQ2M2U0NmUyOTM3OGViMDA3OWMzYmUgbGVnYWN5LXRydW5rCisyMTQzOCAyZTFhZGJlODllNGE1ODQ0MWViN2UxMjliYmFjODI1MGVmNjI2NWNjIGxlZ2FjeS10cnVuaworMjE0MzkgODExODQyZGFjZDM5ZTFlOWM3OTkxZTFiOWY0MDU3ZGJjZjMwZjY1OCByZWxlYXNlMjEtbWFpbnQKKzIxNDQwIDQ1MWMwYWJiZjhhOWY1NDUyOGUxYzBiZDk1ZjExNWQ1NGNjMzdhYzcgbGVnYWN5LXRydW5rCisyMTQ0MSBlYWFiY2ExMzE3NGUwM2ZjNGRmNjllYTJiMmM5Y2I1YTkzMjAxY2I0IGxlZ2FjeS10cnVuaworMjE0NDIgM2ZkZTFkMjAzMzFlYWY2MWRmMTBkMDMyNDJhZjU3M2IxNmZkMTJlZSBkZXNjci1icmFuY2gKKzIxNDQzIDQ3MmVmNjgzMThhOGJmOGZkMjcxOTIwM2FjOTMyM2VkOWE4MTU0MWMgbGVnYWN5LXRydW5rCisyMTQ0NCA0ZDM3YjcyYWUyZDI2MDQwMDU2NmM2YzEyMTA1NTg0NDE0M2RmNDA1IGRlc2NyLWJyYW5jaAorMjE0NDUgZjI0ZWMyM2NkNDdlZGZmNzZiNDJkMmI2OGFmMjY5YzgwODFkZTM0NiBsZWdhY3ktdHJ1bmsKKzIxNDQ2IGM3NmRhZDA2NDYxYjg4ODQwMjA3MTAzYWZiM2RkODdhNzJlYTUyOTAgbGVnYWN5LXRydW5rCisyMTQ0NyBmYmUwZGVkNWU0YzFiZjAyOTFlNDdkYjM5YzI0YzI1M2NkNDdiMTlhIHJlbGVhc2UyMS1tYWludAorMjE0NDggZmI5NmE3OGU3MmFjNmY1NDg3ZDI4M2M2NTNiNDU3MzI3YjhlZDk1NCBkZXNjci1icmFuY2gKKzIxNDQ5IDc2NDQ5MmE4ZjZhNzU5MzczZTZhYmUxMzRjNWM5ZTE1NWEyMDc4N2MgZGVzY3ItYnJhbmNoCisyMTQ1MCBlM2VhYzIxZTFkMzA0YmMzNzZjMzcxZDQ5ZmU2ZTMxMTY4YjY3NWRlIGRlc2NyLWJyYW5jaAorMjE0NTEgOWQ2ZDExMTZiZjJjY2U4YzQzMjlkOTA5YWU1ODY2YmQ0YWJmMTdhYiBkZXNjci1icmFuY2gKKzIxNDUyIDE2OTRhYjg3ZjFkN2MzMzM5NWU5OTNhYmRiYWViMjYyYjg0NzIxNWMgZGVzY3ItYnJhbmNoCisyMTQ1MyBmMzk5ZTZiYzUwYWZkNWYzZGU0MjI0ZTE4MWQ1M2Q3NGY0YTQ1NjEwIGRlc2NyLWJyYW5jaAorMjE0NTQgMDFiOTIwZWE1MmYxNmZkZWQ0NTc5MDc1YjU5Yzc2Zjg3NmZhMTdmOSBkZXNjci1icmFuY2gKKzIxNDU1IDJlMzE2NjViYmRjMjU1MzE0ODllMDYzYjU1YzliMmE2OWNjOTAwNDAgZGVzY3ItYnJhbmNoCisyMTQ1NiBiZmVkMjEyM2IxNGQ3YzQ1MDY3OTZlMGNiMjk4MzEyZWZkODczOTkwIGRlc2NyLWJyYW5jaAorMjE0NTcgMGJkNjdjOGE5NjllMDUxOGRhOTg5NGMyN2ZhMGRjMGYyOGI2MzkwMyBsZWdhY3ktdHJ1bmsKKzIxNDU4IGI2MWYzYjZjZTFmZjkwZDI0M2M4NmViMTNmNzI0ZGQ0NjQ1NDIwMzcgbGVnYWN5LXRydW5rCisyMTQ1OSAzYjI5NWNlMjcwNWY2N2FjNmYxMmI1NGFjMmRkNjEyZWMxYTY3OTExIGxlZ2FjeS10cnVuaworMjE0NjAgZTEwMGMwNWQ0NDRlZTkwMTY1Y2M5ZDNjZjA5YmFlZDNlOTBmZTE0NCBkZXNjci1icmFuY2gKKzIxNDYxIDI0YTBmODRhZDc0NjVlN2IyMTMwY2VmMzI0YjQwZGRiNTdiMTIwNWEgZGVzY3ItYnJhbmNoCisyMTQ2MiAzMzhhYWExNGM0ZTVhZWViZTMxYTdmYWY4ODM2ZmExNDljMGU4ZGFlIGRlc2NyLWJyYW5jaAorMjE0NjMgYjIxZTcwYzZkMDlkNGEzMDM3ZjU5MjU4ZGZlNTA4YTgxOWVmZmVlMSBkZXNjci1icmFuY2gKKzIxNDY0IDYzMGM4NmQzMzMwYmQ0OTdjYTYyZTQ3ZWI1ZjA3OTdmNjJmOTcxNzkgbGVnYWN5LXRydW5rCisyMTQ2NSBiYWYwNGNkZjY1YTMwMGRlNmE0NDYzZTJlMmRiYTAxMTYxMWIxZWI3IGxlZ2FjeS10cnVuaworMjE0NjcgZmRjM2IxNjIxNWM3NWYzMmRhMmQwNzNkZTJiMjlmYTdiMWI1Yjc3OCByZWxlYXNlMjEtbWFpbnQKKzIxNDY4IGY2OTI1YWQyZDE5MTFiMzhlODcyN2U5MjNiMGQ0MzViNzI0ZTE3MzIgbGVnYWN5LXRydW5rCisyMTQ2OSA0MGQxOWY5MDdlMTIwMTU0NjAwOGU5NTk5ZDIyMjUzMDg2ZjA1YTUxIGxlZ2FjeS10cnVuaworMjE0NzAgZDFjNjBiMDcyMTdmOGM2MmRmNjQ4YTVkYTYxZmNkYzMxNTY2ZjhhMiBsZWdhY3ktdHJ1bmsKKzIxNDcxIGRjNzQ4MjNiNDllYTU3MGRlYzRkOTlhZmQ2YTI3YTFkMjJmODM5YzcgbGVnYWN5LXRydW5rCisyMTQ3MiBmNmIzYTdhOTBkODNmYzBiYTAyNGUwM2EwYzFiM2Q1M2ZiOWJhMjBlIGxlZ2FjeS10cnVuaworMjE0NzMgMDgwMTAwNjQ3Mzk2YzhkMDM0ZmM2ZTMwNmQ3N2Y0OGUwY2I1NTFiZCBsZWdhY3ktdHJ1bmsKKzIxNDc0IDk1ZTM5NDdjYTNjZWExOTQ1MDg3OGZkOGI1ZDc1ZDg2NmQ0NDE1ZGMgbGVnYWN5LXRydW5rCisyMTQ3NSA4MzQ3OTI1MjMwOTQ4OTEyMmY4ZTg5MDI5OTVmNGU5YTZjZGViNWQzIGxlZ2FjeS10cnVuaworMjE0NzYgOGNkZmY1NDVjYmRlNTBlMjk1NmZmMGUxZjY2ZDM1NmRhMzE1ZTE4NiBsZWdhY3ktdHJ1bmsKKzIxNDc3IDljNmE4ZGNkNzIyZDU1NTMxMDZhYWFjOWY1NzdjNzllOWJlMmQyYTAgbGVnYWN5LXRydW5rCisyMTQ3OCAwNjMzMmIzYzQzMzVkNDMzMDBiMmQ0NDJlMmU3MTcyMGEzZmNjZmYzIGxlZ2FjeS10cnVuaworMjE0NzkgNjEzNWMxMmU4NDQ4NjcyYjEzZGM0YmM4ZjRiOGIwZmUzZDMzNTZiNSBsZWdhY3ktdHJ1bmsKKzIxNDgwIDFlMDJlMjAxNGUzNmE0MDlkNDY1NmNjYmNlN2RjNWVkNWVhZjhkMGQgbGVnYWN5LXRydW5rCisyMTQ4MSBhYWRkOTk4MzA1MzFhZjUwNjUzOGExZDllMDk4YTUzODUwYTkzMDgwIGxlZ2FjeS10cnVuaworMjE0ODIgNzRiM2M0ZTNmNDg2MTEwYTQ4YWEzYTFhODdiMzJjMzFhNzUwMTg3NiBsZWdhY3ktdHJ1bmsKKzIxNDgzIGY4MGY2ZTkyMjhkZTZkZTQzZjAwYTlkZDZlNjhjNjRjNjY1MjM2ZDEgbGVnYWN5LXRydW5rCisyMTQ4NCAxMTY1MzIxNDFhZGVlMzgwNDM4NDM4ODA0ODE1NzVmZjFmZGY5MzAyIGxlZ2FjeS10cnVuaworMjE0ODUgMWQwZDNlNmEzMjAxYTAxMzY3NWY1ZDRjMmQ0MTdmMWUzZTgxNTZjMyBsZWdhY3ktdHJ1bmsKKzIxNDg2IDcyNmU1ZjJjZDM2ZWQwZDdkZWJhODM5MGU4ZTk0NjlkOGM0NzhjZjcgZGVzY3ItYnJhbmNoCisyMTQ4NyA3ZGU1YzM3NjIzMmNiNGEzODA2NjE5N2NjNTAzOWVjMzFjNWNiNjc1IGxlZ2FjeS10cnVuaworMjE0ODggODI0ZDYxMTEzYTcxMjIwY2M5MzNjZjJmODVlODQzZDU1ODNlODM3MyBsZWdhY3ktdHJ1bmsKKzIxNDg5IGM4NjYyNTQzY2E2YTY4NWQ0MTY3ZThkYzdjZGMzZDAwMmRmZWMzNjEgcmVsZWFzZTIxLW1haW50CisyMTQ5MCBjYWRjMTg5NDJhMzQ0NTc5MTFmZWQ2M2JmODgzNjk5YjYzNzhhYTc3IGxlZ2FjeS10cnVuaworMjE0OTEgN2Y4M2VlMzc5N2EyNjQ2NmRmZjRjOTkzZjU1ZjA3ODUzYzEwODlmOSBsZWdhY3ktdHJ1bmsKKzIxNDkyIDdiMDNjMTUwNzU0YTA5ZDQyZmM5Y2E1Zjg2MDNkMWNmNDIxNGEzMWYgbGVnYWN5LXRydW5rCisyMTQ5NCBhZmRhNWZmZjUwMjcxYmQ0MmM0YzA2Y2YxOWFkNTViMjNjMmE1OTMyIHJlbGVhc2UyMS1tYWludAorMjE0OTUgODJmOTUyNGNjODQ0MTJhYWI0MTMyNDA3ODc1NjA1OWMyMDAxODVjOCBkZXNjci1icmFuY2gKKzIxNDk2IGI0YWYwOTFlMzFjNGE0NjE3M2Y0Y2Y0NzIyOTQzZjU5ZTk3YjBkOTYgZGVzY3ItYnJhbmNoCisyMTQ5NyAyZTZmYjZlNjQyOGZhMDk3ZGNmNWUyYjY4YjU5OTk5YzA5OGIwN2E0IGRlc2NyLWJyYW5jaAorMjE0OTggZDk0ZjhiMzIxM2U4Y2RmZWRlNTk1MDUzMGZiMDY0MTFkYzRmN2NmOSBkZXNjci1icmFuY2gKKzIxNDk5IGE0NTc3NjI3MGM4ZTExYWNjODI4YTg2NGQ5OWVjOTIzMGNkZmJhYjMgZGVzY3ItYnJhbmNoCisyMTUwMCAyMzIwOGYzMDI3ZjY4MzFhM2NiOTQ4M2VhZDE4ODFiOWE4OGQzNmEyIGRlc2NyLWJyYW5jaAorMjE1MDEgYTMxODkxY2JhZDQ0MjdiNDg3MmM4MmFjYzExNjI0YWUwMDAwYTRiOCBkZXNjci1icmFuY2gKKzIxNTAyIDY5Yjg4ZDM0ZTcyMmRlOWYyODY3ODAxYTE3NmM3ZTI0MmY2NjM2OTAgZGVzY3ItYnJhbmNoCisyMTUwMyA0N2JiMDYwMjNlODA1OTNhOTQ3ODhjZDJjNzI0NWM1NjFlYjY1MjFlIGxlZ2FjeS10cnVuaworMjE1MDQgZjQwMzJiZWQ0NzBmMzhmMmRmZjA4MjIwYzAzZTFiZDY4YmRmODVlNyBkZXNjci1icmFuY2gKKzIxNTA1IGM1ZTQ2NjM0YzdkOTc4ZTQ3MWJlODdlNGE4NTJiMTZjZTE2YjBjZDYgZGVzY3ItYnJhbmNoCisyMTUwNiA1M2Q0ZTcyYmI0NDNiMGIzNThiODEwNmM1MjRiODdmNTIzNjY3ZTA5IGRlc2NyLWJyYW5jaAorMjE1MDcgZmY4MWU3MzVlMTg0ZmUzNTFlZGY5ZjczZGZhZGQyNjI0NWY5MmViNyBkZXNjci1icmFuY2gKKzIxNTA4IDIzOTI3NjY0YzcyOTVlODZlZjYzYWEzZTMzNzhjYWQwMjJjNWIyYTcgZGVzY3ItYnJhbmNoCisyMTUwOSBlYjgwYjQ5YzdiMTVmZmM2ZDZkYTVmODcxMTRhZmEyYjBkMDBlMjM4IGRlc2NyLWJyYW5jaAorMjE1MTAgZTZkZWZlMjRjZTg1NTY1ZDhkMDA4ZjE5ZTAxMTA3NGEzNDY3MDkwZSBsZWdhY3ktdHJ1bmsKKzIxNTExIGI2ODk0MGNmMjAxNzIxMDRiOGEzY2IwNmMyNTdiMDZhNjU5M2I3YTAgcmVsZWFzZTIxLW1haW50CisyMTUxMiAxMTY1ZDNmN2VhZjNjYTVmZDA0ZTdkZGEyNjhmZjFjZWRlZTM1MzBkIGxlZ2FjeS10cnVuaworMjE1MTMgOTUxMjc0N2FmZTllOTQyYTc5YzQ0OWNjYzcxNmE5ODJmNjQwZjhiNyByZWxlYXNlMjEtbWFpbnQKKzIxNTE0IDU2ODJmOTZmMjVkZTI0Mzg5YTFhOWRlODBmNmE0YWM3ZGJmZDZkNDEgbGVnYWN5LXRydW5rCisyMTUxNSAyODM2YjI2ODYxODA2YzY5NTU1NGEwYTk0MGQyYWVlMzk4YjcyNDkwIGxlZ2FjeS10cnVuaworMjE1MTYgZmMxNjgwZmM5ZDIzNjg5Y2MyNDEzZWVkNzhlM2E3ZjljY2FhZTg5OSByZWxlYXNlMjEtbWFpbnQKKzIxNTE4IGJjYmJjNTFmMGJiM2Q5NmNiYTNjNjVjNTQ1ZmEyYzNkYWFmNWZkMjkgZGVzY3ItYnJhbmNoCisyMTUxOSBiMGY5ODQ3NTkxN2Q0ZTVlMTAwNGFiNWMyNWI0OWIxNTdiODZmMDA1IGRlc2NyLWJyYW5jaAorMjE1MjAgMzdkOWQyYTdjYTUwZGZhYmM5YzBiMjgyNTlhMWU3ODM0MGFlMTFiYyBkZXNjci1icmFuY2gKKzIxNTIxIGVlYjJlNzdjNWJhZDJhYTJkNmM5ZDBhZTAxNWQ5OTU2MzY2YTM2MTQgbGVnYWN5LXRydW5rCisyMTUyMiA3YWIwOWZiYjg2OWEwZTVjNzlmZjM4ZDRkZTQ3OGVjNjE2YTExYzVmIGRlc2NyLWJyYW5jaAorMjE1MjMgYTI5YmVmNDU3ZWQ4ZjAyYmNjYzUwNTQ2NTA4ODQwODdlMmE5YjBmMSBsZWdhY3ktdHJ1bmsKKzIxNTI0IGMxZTQxM2VmOTgxNzc2NTE0Y2Q3NmQ2ZWZmMmE4ZTQwMzkxN2YwOTIgbGVnYWN5LXRydW5rCisyMTUyNSBkZmNjMDM4YzJkNGNhNjk5OGZlMTRjNDM4YjA3MDkxZThkZTFlNmM1IGxlZ2FjeS10cnVuaworMjE1MjYgZDg0MTRmNTFkNGY1OGVmNzljMzZiZGNjMzQxNzY2Y2E5M2Q3NjYzNCBsZWdhY3ktdHJ1bmsKKzIxNTI3IDMzYjQzNTdhZWJiOGMzYjFiMmJiMzNjOTYzN2ZkYzMyMGZjMjQ5NmEgbGVnYWN5LXRydW5rCisyMTUyOCA0ZTVlOTc3YmQzZTJhNzQwZjI1NDMxOTZmY2Y0ZWJiNGQ3Y2M3OTEzIGxlZ2FjeS10cnVuaworMjE1MjkgMDkyMzViZTc0NjQ5Mzc1MTg2MTExYjYzMDA4NGNhNmZlM2YwMzk5ZCBsZWdhY3ktdHJ1bmsKKzIxNTMwIGQ1NmVjYWU1N2UwYzI1MjkzZDllNjY3OTZkMWQ5YWJjZDk1OTEyMGIgbGVnYWN5LXRydW5rCisyMTUzMSBiNmNlYmJlYjA3ZDFiMjkyMjRlYTZiZTQwNmUyZWRmNjgzYTRhZGJhIGxlZ2FjeS10cnVuaworMjE1MzIgZjgzYmRkMDc1MzYxYjFmOThhMjUzNDEyMGY0NDI4MDYzNTgzMDQ1YSBkZXNjci1icmFuY2gKKzIxNTMzIDlmMDEzZDEzYTI4YjFkYWYxODVmMjllYzVjMWI1YTliZmJkZWZlZGIgZGVzY3ItYnJhbmNoCisyMTUzNCBiNDQxMWRlMDE2NjJmN2Y5MjQ1OGYzZjQ4YmQ0NTI5OTYwMWY4ZWFkIGxlZ2FjeS10cnVuaworMjE1MzUgNzYzNjBhZmRiOTcwMjdmMDNmYWY2Njk3MmUzNTY5MDZjODI2MGIyYSBkZXNjci1icmFuY2gKKzIxNTM2IGZhMWU4OGViMTk5NGE2YmRkMmIwMWQwYmQ5MWNjNTIxN2VhNmI0NDggZGVzY3ItYnJhbmNoCisyMTUzNyAxNDE3Y2Y0NzBhZTllNWRmNDcxODllNTY2OGUyYTdiODFlMjAwMThlIGRlc2NyLWJyYW5jaAorMjE1MzggZDJlYjIzNjM2Y2M2MjdlYzk5NTUyZGY0ODBlZDkzZDYzN2QzYmY2NSBkZXNjci1icmFuY2gKKzIxNTM5IDQ2ODI1ZWQyMzUyOGEyYzNiYTAwYmZkZTkyMmVjNzk4Y2Q1YTExMjAgbGVnYWN5LXRydW5rCisyMTU0MCBmMzE1ZjU2NzRiOTVmNjJiYTYzMjkyNmE4OTJkMGVmMWEyNzk1MWQ2IGxlZ2FjeS10cnVuaworMjE1NDEgYTk3MzM0OTcxYTgxODZiNGE3OWM0NDgwODZkMTYwYWUxODNiZmE4ZSBsZWdhY3ktdHJ1bmsKKzIxNTQyIDJmZDEzNzdlYzQ4YzBkMmIxYTZiM2MxMzBiNzkzNThhYzk3MzdmMTEgbGVnYWN5LXRydW5rCisyMTU0MyBhODNmZjc3Mzk5OTI5ZjVjZmZjZGFiMTNlZjBiZDlmZjc3MWU2ODAxIGxlZ2FjeS10cnVuaworMjE1NDQgNmE1ZWYxOTk0MTUzNmUxYmQ0ZDI5NTU5ZTNkYzVlNGU0YjFiOTJlMiBsZWdhY3ktdHJ1bmsKKzIxNTQ1IDk5YzhiNWIwYzg5NjM4NDU4YWI3YmI2NTg4MzM1ZmNmYzg3NjlhYTUgbGVnYWN5LXRydW5rCisyMTU0NiA5YzM1NGU2OWE0ODllODU5MWJiYzZlNTIxYWEwOGZmMjNkOWU0OWMwIGxlZ2FjeS10cnVuaworMjE1NDcgMGI0MDYxZWVjNjhlMDM5OGMwYmJjM2Y1YmRiNWY3YzE4YzhlY2Q1NSBsZWdhY3ktdHJ1bmsKKzIxNTQ4IDQ1OTE3MzIzNzkxNTAzZDhjYTc2OTcwNmFhMDRlNTVkOGQ0ZjQ5MTcgbGVnYWN5LXRydW5rCisyMTU0OSA3MWYxNjFlOGExZDcxNjg2N2U4ZDgxMWUyN2QxYTFjODY1YWVmNjkwIGxlZ2FjeS10cnVuaworMjE1NTAgNDBlMGY1YTMzMmU5MGE2NmFlMDQwZGRhY2JkYjRmMWM0OGI5MzJlZCBkZXNjci1icmFuY2gKKzIxNTUxIGQ5MDUyY2Q5ZTBhNzYzZTFjMTk3NDZhOTM4YWFlZWNiYjNkMTFiNTUgZGVzY3ItYnJhbmNoCisyMTU1MiBmMDRhMWRkZDc0MWEzNDg2NTRlYjcwMzk3MmNiZTFlOTczZmUzY2UwIGRlc2NyLWJyYW5jaAorMjE1NTMgYmE4YTU2MmJlMzgzNThjZjVkNGU5MTIzMDRjZGUwYjlkODY2YjQxNiBkZXNjci1icmFuY2gKKzIxNTU0IDZhNWZlMWE5NDNjY2Q1YzE1ZDU1ZGVlMDBmNmU3NzVlZGFiZjcxMDQgZGVzY3ItYnJhbmNoCisyMTU1NSBlYWNiNzhkOWNiOGVkYjBjY2Y3YWJmZTQ1OWE5MDk0MjMyNjJiYzVmIGRlc2NyLWJyYW5jaAorMjE1NTYgNjYzNzAxNmRmNmUyOGY2NmY5NDI2ZjFlYWMyMDdmZTUyMjNjOTI0MCBkZXNjci1icmFuY2gKKzIxNTU3IDE3M2JjNzI0ZDExMGUyOTgwMzYxZjNkZjgxOThjNjQ0MDhlZDI2OWEgZGVzY3ItYnJhbmNoCisyMTU1OCAzZGFlMjUxYjVkZjVhMzI3NWRjYWY3NjE1OTliYTExZDJhOGQyMzQ5IGRlc2NyLWJyYW5jaAorMjE1NTkgNWM5NzY5MDE2NzNlNWQwNmY0MmQ1NDlhZDYxNDIwNDFmMTYzYzZlMyBsZWdhY3ktdHJ1bmsKKzIxNTYwIGY3ZGU5ZTA0ODdjZjE0YzJlMTQ0NjI0NTRlMWRiNGIwMWYwNmI2YjAgZGVzY3ItYnJhbmNoCisyMTU2MSA4OGVlOTY2NWRlMDU0M2RiZmY2M2ViMzA2NWNlMTY1MzcwNGE3YWI5IGRlc2NyLWJyYW5jaAorMjE1NjIgZjdmMDc2YmZjYWU5YzhjMmQyOGUzOWY2ZDcyMGVjYjkxMjc5NTJiZSBsZWdhY3ktdHJ1bmsKKzIxNTYzIGI2NmE2NTJlM2MzZmU3YjhhNzFmMDNlZDQ3MmE1MTIzY2RjMWZkZWIgZGVzY3ItYnJhbmNoCisyMTU2NCBhYTc2YzE3YTVmMDhjZDk5OWY4ODkxODhhYjg3YzdkYTEwNjBjZGJkIGRlc2NyLWJyYW5jaAorMjE1NjUgZGU4NTYwYzY4YzZmZGNkNjY3MWE1NjQ4ZmQ5ZWM5ZTBiOWZiNTQ0ZCBkZXNjci1icmFuY2gKKzIxNTY2IGU4YzY2MWRmMzAzODE0YWVkOWNjZjY4Mzc1MTZjYzhiYWU1NjU3M2EgZGVzY3ItYnJhbmNoCisyMTU2NyBjMTVhY2YyZTAxMTA4Y2FkM2JmMjM2M2ZhNTJjM2Q1M2M2NmQ1ZTJkIGRlc2NyLWJyYW5jaAorMjE1NjggZWIwNGEwNTY0YTgxODYwN2IxMDlkNzRiMDhmNDc0NGEyMzY4YzJkZiBsZWdhY3ktdHJ1bmsKKzIxNTY5IDk2NTMyNzJmMDM2ZjQwYTMzNjgxZWVlMTc1MjY0ZGQ4MTFhZDVmZDkgbGVnYWN5LXRydW5rCisyMTU3MCA2ODRiMDA5OTAzMmQ0NjJjOGEyYTNhZTliNjMzMzU2MGVhMDE1OWFjIHJlbGVhc2UyMS1tYWludAorMjE1NzEgMDVjNDkzNDZiNjhiOGRmNmU5MDYyYWIyOWRlMTQyYmNhNGVmODcyYiBsZWdhY3ktdHJ1bmsKKzIxNTcyIDMxMTE5ZDBhMThlNmZjMjkzZjA5OGQ5ZmYxMzg3ZDY4ZGIwZWMwOTQgbGVnYWN5LXRydW5rCisyMTU3MyAxMDMwMjg3MjUyNTNiMzg3ZDczZWViNGUyOTUwZWVkMjY5YTZhMmFmIGxlZ2FjeS10cnVuaworMjE1NzQgNTFjNTAxYzY4NjA4YzUzYWYwNjdkOWJiMWVjNmMzYWRiYzMxZTlkNSBkZXNjci1icmFuY2gKKzIxNTc1IDY1YzkyODdhYmY4NWJhODhlMDA5N2U2ZjI4ZGZlYWI4ZjA5YjhiMzQgbGVnYWN5LXRydW5rCisyMTU3NiBlZTdhODZmODczODM1ZmM1N2I2YmQxMzcyMTYwMjNkNDE3YWI4OWZkIGRlc2NyLWJyYW5jaAorMjE1NzcgYTRmYmMyZjAxMzlhODJkN2VkN2IyZDU2OGU2YThhYTNkNjYxOTRiNCBsZWdhY3ktdHJ1bmsKKzIxNTc4IDljMDRlMjNmOGQ0M2IzOTE4NmUyMzQ0YTVkZDI3ZDYxNjBlNDViZWIgbGVnYWN5LXRydW5rCisyMTU3OSBkNDVhYjcxNDZiMzdjZjg3NjhkNDBmZDU5N2VkYjY5ZDkxYmQ1N2RlIGxlZ2FjeS10cnVuaworMjE1ODAgNmRhODYyMzM5YTBlOTlkYjVkOTdlNWQzNjE0M2FiOGUzNWM2Nzc5MyByZWxlYXNlMjEtbWFpbnQKKzIxNTgxIDI5MzNhZTQ5MjE2ZjI2MzgyYzJhZjUwMjdiOWRiZjZkNGU2MjQ5MmYgbGVnYWN5LXRydW5rCisyMTU4MiBjYTJlYTc1ZGYzZjI1MmIwNzI4ODYxMzZhMzNiZmI4ODY1NzliMzYyIGxlZ2FjeS10cnVuaworMjE1ODMgOTQ2YjgxNmFkNWNiOGZkZjgzZDcyNWJjYmM2YzI4N2QyZDZmMzk5YiByZWxlYXNlMjEtbWFpbnQKKzIxNTg0IDlhZDRkYjk3ZTJkOWI2ZWQyOTEwOTM3OTFlY2JjYzk0Mjc4Mjc2OWMgbGVnYWN5LXRydW5rCisyMTU4NSBkNGZiOTQxNTNiMzA4MjA5ZTVmOWIwYzcxODk4NmZjZWY1NGZjNmQ0IHJlbGVhc2UyMS1tYWludAorMjE1ODYgZmJjY2YxOGFhNTdiZmViMGMzZDdmZTBhMTdlNDg0OWMzMDU3YTJmNSByZWxlYXNlMjEtbWFpbnQKKzIxNTg3IGE3OGY0YmQ1OWUxMGEwYjNlZjNkM2RlMzBkZWVjODQwNDAzNjliMzQgZGVzY3ItYnJhbmNoCisyMTU4OCBhYmM0YTNiN2QxOGUwMWM3OTFiMThhZmYwMWQwMDdiOTA0NGEyY2RmIGRlc2NyLWJyYW5jaAorMjE1ODkgMmYxYjRjZGNiYjA2YzQ0MjIyOWJiNjJmZWRhNzM0Njg1OTVhNThlOSBsZWdhY3ktdHJ1bmsKKzIxNTkwIGU3OGE1MTI2OGM4MWRmYzc1NzA3ZmJiNzA0YTI0OTkyNzA3N2M4ZDYgbGVnYWN5LXRydW5rCisyMTU5MSA4YzM4NDQ5ZGY3NDYwOTQxMWMxMzRhNGJkYmJiNDA3NWMzYmVjYTA5IGRlc2NyLWJyYW5jaAorMjE1OTIgZmVlNWI1NzE3ZGJiYjg5MGQ0Zjk0YWQ3ZGIwZGMzZWQ5YmYzY2I1MiBsZWdhY3ktdHJ1bmsKKzIxNTkzIGM2ZDg2NDVkNGM4ODVmZmY5OWEwMzI4OWI2YjhlNGZlOGRhYzU2MTkgbGVnYWN5LXRydW5rCisyMTU5NCA3MGFmNGExNzNhOTU2NGYwODgwOWU2OTY3MjcwMmZkNmUzYTdmOWNiIGxlZ2FjeS10cnVuaworMjE1OTUgY2IyZWFmNDU3Mzg2Yjc4NjkwMTQ0NDc4N2U0NTI3ZDYwOTIwYjU4NyBsZWdhY3ktdHJ1bmsKKzIxNTk2IDZiOTMxYmY2YmRmNjdmOWI3ZTg4NjkzODdjMGY0ZTk2NmQ5MGE4NjIgbGVnYWN5LXRydW5rCisyMTU5NyBjZjgxNDljZWRjY2QyMWFmMmVmNmM0MjYxMjg2YzZlNGRjYmRlY2ZiIGxlZ2FjeS10cnVuaworMjE1OTggMDA5MzRkNjJlNzgxNjcyMzJkYzM1YThiNjk1MTJmZGU2ZjU1ZGVlYSBsZWdhY3ktdHJ1bmsKKzIxNTk5IDNkYjkyMWYzZWRlMGJhNTVjOGI2MTk2ZDUyNzRmNDljYmIxN2YwYWUgbGVnYWN5LXRydW5rCisyMTYwMCBlZDBmMGQ5Njc1MGNkZTY1NjY0OTRlNTZhYzgxODQ0NTAxYjdhZDAxIGxlZ2FjeS10cnVuaworMjE2MDEgOTM5YmJjNTFjZDIxOTNkMmRjMjFkMzQ1NDU2Nzg4OTMyMjc3MzRlMiBsZWdhY3ktdHJ1bmsKKzIxNjAyIGMxYTVlNTE3NTkwN2IxMjYxZDY0Yjk2YTVjMmJjZDNhMzZlMDhkNDMgbGVnYWN5LXRydW5rCisyMTYwMyBjZGExNjM4M2JjNmJhYTJlYmQ3NWU0ZTk0YmU1Yzc1Njk3OGNjN2MyIGRlc2NyLWJyYW5jaAorMjE2MDQgM2IxM2IyNjk1YjdhNmI3NjAzYTJiYTRkZDdmZGU4YWNjY2FmZjNlNyBkZXNjci1icmFuY2gKKzIxNjA1IGI3M2UxZjQyMmVhOGJmYWEzYjI0YzYyN2NhZGU3NjAyYjdkZDIzYzMgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNjA2IDQwNGM2MGUwMDM0NDcwNjczYjkxMmNlMTJjY2MwZDEwYjBiZjJmOWYgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNjA4IDhkNmI0YWMwNDQwYjRjMGMyMTc3ZWFmYzJkYjBhZGE0YzIzMWY4ODkgbGVnYWN5LXRydW5rCisyMTYwOSBmZWVhM2QyZjM1NjNmMGJmYWY1ODZlMWI3YWYxYWM0MDAzYTAyOGUzIHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyMTYxMCAxMWQ5ZTQ2ZjE0NzA1MTcxOWYzODhhN2JjMmMyMmNiNmFiM2IxYTkwIHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyMTYxMiA4YjkzZDA0ZmE3YTliOWY1MGE1ODZmMGE4Y2FhYmE3YTA5ZjcwOGM5IGxlZ2FjeS10cnVuaworMjE2MTMgOWY3NDk2NWUwZjM1ODU1Yzg2MGM4ZjE4NGVjYjBiZWU4ZDA1MjYyNSBsZWdhY3ktdHJ1bmsKKzIxNjE0IDM0ZDVlNDhjMWVkMjYyNTdjNWFkZjU3OThiNWQ2OGE2YTk4NjBjYTYgbGVnYWN5LXRydW5rCisyMTYxNSA2YzUwMWQ4OTIwMDMwYTkyYWRkOTZhNGNmNzIxNGI4YTE4MDNjZDU4IHJlbGVhc2UyMS1tYWludAorMjE2MTYgNDk4ZDdkZDk5ZGE0MWU5MjY2Mzg5ZjFlMzE4NjEzMjUyZDlhMDVjYiByZWxlYXNlMjEtbWFpbnQKKzIxNjE3IDk5YWQ2ZmQyNzllOWJmNWE2MDlhMTBlNTRhOGYxNDM4YzE0NjMwNGYgcmVsZWFzZTIxLW1haW50CisyMTYxOCBiMWExZGUxOGY5MWZiY2QwNzQ2NDU4MTk4MzY4MTkzZWMxOTJlNWFjIHJlbGVhc2UyMS1tYWludAorMjE2MTkgODdlZTFjM2ZkMGM4MjI3NTU4NWU3YjA3YTdhNGY4YWQ2ZmIzOWMzYyByZWxlYXNlMjEtbWFpbnQKKzIxNjIwIDgyYTM0OTMyZWEyMmQ2MjlkMTRjZTJmODdmMzg3MjY2YTYyMWNiODUgcmVsZWFzZTIxLW1haW50CisyMTYyMSBjOTkxMjlhMGE0N2Q5MDdiYjdkNGYzMjVmMDA4ZGNmY2Y3NDZiNjhiIHJlbGVhc2UyMS1tYWludAorMjE2MjIgMDRlMjVjMDE4NDliNDRiYjQ0ZmUyOTQ3NGI0Njc5NTkwY2NjODU5ZSBsZWdhY3ktdHJ1bmsKKzIxNjIzIGMzOTdkNGNkODM3ZDIwNmY1YTEwYTMxZDljMmQzYmFjZTAwNWE1OGUgbGVnYWN5LXRydW5rCisyMTYyNCBhNGQzNTA4YWVmYzBmOTU4YTk5MDA4Y2MwOTQ0MWEwOTEzM2RjZmQyIGxlZ2FjeS10cnVuaworMjE2MjUgZGZiNzc0MjJjNjA3NDI5NjcwMjA3NDFiMmQzMDEyNDczMmZiNTI2ZCByZWxlYXNlMjEtbWFpbnQKKzIxNjI2IDEwNmM5OTk1ZGI2OGFlNWM4Zjc2OTgzMGM3MjYxYjA0ODcxNDc5YTkgbGVnYWN5LXRydW5rCisyMTYyNyA3OTVhYTQ1OTAyMTEwYTk5ODYxZDczZmI4NzM2YWJmYTIwNmFlYmQwIGxlZ2FjeS10cnVuaworMjE2MjggMmUyZWY0NzExNGY3NzI0MGQwNjhiMWMzNzNlMzY4MmE2NWYzN2Y0OCByZWxlYXNlMjEtbWFpbnQKKzIxNjI5IDJmYmIyNWMzMDcyZWI2ZDQ3ZTY2ODExMzQ5NjAxN2VkODE0NzNlNWMgbGVnYWN5LXRydW5rCisyMTYzMCBlMDYxMTU1Zjk5ZThlYjA3NzA0M2YyMDQwOWNkMGE5YzliMzgwY2Y4IGxlZ2FjeS10cnVuaworMjE2MzEgOThiZGU2ZTVlNzQzMmRjN2Q3NzY3ZWY3NGNlOWIyNzk4OTk0YTUxYSByZWxlYXNlMjEtbWFpbnQKKzIxNjMyIDI2ZmM5MDVkZGMxMmU1NWI3Yjc4MWNkYjQzZjYwNDMzMTkxY2ZmZGYgbGVnYWN5LXRydW5rCisyMTYzMyA2ZjhhMjQwMmY2ZmE0YjNmOTFlNTBkZWMzMWY0NDc3NTYxZDRhMDljIGxlZ2FjeS10cnVuaworMjE2MzQgOTk3N2NmMjA2NTMyYjE0NmYzMTkyNzJhYTgyMzBiYjljZGQ0YjhmMSBsZWdhY3ktdHJ1bmsKKzIxNjM1IDRjMzNkYzM0NTkwMmE5MTU3ZmYwMzk0MTg2YTdiNTZlNWUzY2ZkNzQgbGVnYWN5LXRydW5rCisyMTYzNiBjN2EyNGQzYjM1OTczOTY5NzI5N2JmMGQ1MWU5M2NkMTM0M2U0ZmFhIGxlZ2FjeS10cnVuaworMjE2MzcgNGI3ZmQzYWUxZDkzMGI5MjI1OGU0Zjk3Y2YwNmU4OTIxYmIxZmU0NSBsZWdhY3ktdHJ1bmsKKzIxNjM4IGY0MDkyYTVmN2JiYzcxNDBiMWQ0MDk3MTYzZDIwODZjOThjZTg2MmEgbGVnYWN5LXRydW5rCisyMTYzOSAwNjliODE1MTliZTc4NTBiYjQwYWEzY2U2NGRiNDNiMzJkZTQxNmNhIGxlZ2FjeS10cnVuaworMjE2NDAgNTg0NmMyNThiODg5NjM2OTZkOGU1NWVjOGZiYWI4MzQ3OTdkYzZkYyBsZWdhY3ktdHJ1bmsKKzIxNjQxIGM0Zjc1ODU3NTAyYTZkM2Y2NzE4ZjA3NmFiZjYzOWQwNWE2ODdmYWUgbGVnYWN5LXRydW5rCisyMTY0MiBiYTFmM2RlMTAwODU0MzRmMTFlZjk3MTE3MzVmMWUwNWI1Yzg4ZTQ1IGxlZ2FjeS10cnVuaworMjE2NDMgNDI3NDFlNjc3MzM4NDFmMjkzZDhiZGE0ODkxMGI4ZmRiZTIyODEwZSBsZWdhY3ktdHJ1bmsKKzIxNjQ0IGVhN2M3N2ZlNTBhZTk5ZGFhNGQwNWU5MDE5YmZmYTg3MmM2OTM4NzUgbGVnYWN5LXRydW5rCisyMTY0NSAyYmI3NWExZjMxODQxOTI4NWNkOGMyODc4OWQ5ZDRlNzA5NjcwMjQ4IGxlZ2FjeS10cnVuaworMjE2NDYgZTZlY2Q4YTA3ZWE4OGYyN2JmNTUwNDhhZTZiYzI5NTA4ODU1MTRhOSBsZWdhY3ktdHJ1bmsKKzIxNjQ3IDQ2ZGQ4NzNkMjZmNjQ0ZjQ5ODMxYzZmODRmNGNiNWE3YTg2YTMyYTkgbGVnYWN5LXRydW5rCisyMTY0OCAyMDJkZGRiN2M5NzQ3NGNhNzA2ZjY3NjY0Y2YxOGM0YjdkMmE1NWVkIGxlZ2FjeS10cnVuaworMjE2NDkgODYyNjE3MWIyYzcyNTI4NTUyYzE2MGFlNmM2MzU5NTBjNTY5NWQyMSByZWxlYXNlMjEtbWFpbnQKKzIxNjUwIGNjMjQ4Njc1N2M4YmYzZTIyYmI5NGM2YjMzNTJiYzAyN2ZmNjNiZGMgcmVsZWFzZTIxLW1haW50CisyMTY1MSBjNWI1MDU1MmQ1NmQxZjYyNzNjMzFjNjNjNmJiMTNkNTA4YTZiMjU5IHJlbGVhc2UyMS1tYWludAorMjE2NTIgMzJjYjI5NWQwODYyYzIyYTFiMDdlODE0NTkxNzZlYTBmN2U5NzI1OCBsZWdhY3ktdHJ1bmsKKzIxNjUzIDg2YjFjODIxNjBlYTk4ZDU3YTBmOWY0MWEyZDBiYjg5ZThiYjIxNmMgbGVnYWN5LXRydW5rCisyMTY1NCA4ZGU5MTA0MjE3M2Y3ZjRlMTAxZmE0ODI3ZGMwOTJhZjhhYjc0ZWViIGxlZ2FjeS10cnVuaworMjE2NTUgMjU0YTRhOWFmMGZiYzZlODU4MGU0OWJhMmM1YjcyMWI1ZGFkMTMzYyBsZWdhY3ktdHJ1bmsKKzIxNjU2IGY0ZWEyMWEwZjk1NDJkMzdmZDM4YTRhYzU2NjM3NjM0ZjNkMGQ1NzEgbGVnYWN5LXRydW5rCisyMTY1NyBkMjExNzA5ZjI1ZjFlZWNiNDE3YWM1MjE5MTBlZTE4MGJjMjM4NjRjIGxlZ2FjeS10cnVuaworMjE2NTggYjJiZjg4ZTA2ZmM1OTk3YjVmZGRmNjJkNDEwOWMzYTRjMWZmODEzOCBsZWdhY3ktdHJ1bmsKKzIxNjU5IDY1YWZhYzg0ZDRmNzMyMzZlY2ExM2U3ODM2NDA0ZTg3MTc2OGM0YmMgbGVnYWN5LXRydW5rCisyMTY2MCA3MzI4YzhjZDkxN2Q5ZWY2MGVlYjE4NmQwYWMzYWZjMDhhZjkyOTBhIHJlbGVhc2UyMS1tYWludAorMjE2NjEgYTU5Y2E4NDQ2ZjkyYjZlZGI3N2ExOWMzMWIzOTkyOTRhNzk2Yzk4MCBsZWdhY3ktdHJ1bmsKKzIxNjYyIDQ4NjEzNzM5NTkxNzZjNThjZDI2N2ExMWI0MTM3NDljNGQ3NmQ0MDMgcmVsZWFzZTIxLW1haW50CisyMTY2MyBmNzJiY2VjZGQxZjdlMmZjYjFkMWExYzIyYjkxMjA0ZGNjZWQxYzhhIHJlbGVhc2UyMS1tYWludAorMjE2NjQgZDk3YzgyY2JkNzY2OTFjY2MwMzZiYjE1ZGJhOTVjZDRlNmNmNjc1MyBsZWdhY3ktdHJ1bmsKKzIxNjY1IGQ1MDI2NmI1ZGM0OGM1YWUxY2YwNjQ0ZDU3OWI5OTBhNDQ1MGVhMzcgbGVnYWN5LXRydW5rCisyMTY2NiBlYWU5MjcyOTAzNTcxYTI3N2NiMDhkZDRiOWE0Nzg4NzlkNmFmYTMwIGxlZ2FjeS10cnVuaworMjE2NjcgYjFkNmFlMzI5ZGQwNThmZDVhNTY1NWI0ZWIzMzM5MmM2MTRmNmMzNyBsZWdhY3ktdHJ1bmsKKzIxNjY4IGZkOTQ2MTM3M2NhYjMwMDhiODI5MmE1NTEzOWNhNWJmNDMwNzE2ODggbGVnYWN5LXRydW5rCisyMTY2OSAyMWI1YjJlYWViM2Q0MWU2MjgyM2ExMzNlODRhNjE2ZTkxNWEzYjNhIGxlZ2FjeS10cnVuaworMjE2NzAgMWZiY2Y1NDljMWM0NTM1ZjNiZTgwM2ExODQ0ZDgwNjg0MGM3MjI0ZiBsZWdhY3ktdHJ1bmsKKzIxNjcxIDY0ZmE3MmE4NDM0NzQ5MDAzOTA1ZjgwZDVhY2U0YmYwYThhODc2MDEgbGVnYWN5LXRydW5rCisyMTY3MiAyM2Q4ZWIyOWU0ZmEwZmZlNjgzZjJjMDFjOGE5MTdlNDE4Mjk1ZDE2IGxlZ2FjeS10cnVuaworMjE2NzMgZTRkNmE3Mzk5OTdkOTYxZDJkNDgyMDZkMzAyZDYwYzdkMWY2ZmQwZiBsZWdhY3ktdHJ1bmsKKzIxNjc0IDM3ZWU5Y2Q1NGExMTNmY2IyNTI1MmJjMzE3NWE0NDc5MmMyNzI0M2MgbGVnYWN5LXRydW5rCisyMTY3NSBlMDY0ZjUyNmE2ZWZlODE5MmEyYWNjM2E5ZjlkYWM1MjZhMTZkZTc3IGxlZ2FjeS10cnVuaworMjE2NzYgZmM1YTNlYzA3NDVlMWQ2Yjg3ZjU5MGEwNTcxZmNiOTcwNTU5ZGU5NSBsZWdhY3ktdHJ1bmsKKzIxNjc3IGVjOWFhMGRjOGI3MzYwNmE3MTZlYjFlYTBmOWMzMjcwMDQ1MjYxYmUgbGVnYWN5LXRydW5rCisyMTY3OCBiZjU2MjQxOGRmYjgxZTBmNjZhM2E0YmFiMDU0Y2EyNGJjYmRlZWViIGxlZ2FjeS10cnVuaworMjE2NzkgY2QzYjRkZDNlNGNhMTkxNzk0ZWZlYjMwMzUyYWExNGJmNjA4NTc2ZiBsZWdhY3ktdHJ1bmsKKzIxNjgwIGVhMjZjOWI2NmZiZDlkMmVhYjM1M2ZkY2MzN2RjY2FkMGZiZTNhZjYgbGVnYWN5LXRydW5rCisyMTY4MSAwYzcwMTM1Mzg5OTgzY2M0NWM1NDJhMTM3MjNhYWVlZWY3ZmYxNDEzIGxlZ2FjeS10cnVuaworMjE2ODIgYjI4N2YyOTI3ZGIzOGEzZTUxZDBkYzA1Yzg5MTE0ZWExMTQ5NTg5NCBsZWdhY3ktdHJ1bmsKKzIxNjgzIDNmY2Y5OGNhNmM0YTE0NmY1YWY3YzhmYTMwOWQ0YWNhMmYxNzZlMmIgbGVnYWN5LXRydW5rCisyMTY4NCA5MDYwYzA2YmVkYmM0MzE4NDQ0YWIyMGE4YTkxOTM3Y2ViNmFmYTljIGxlZ2FjeS10cnVuaworMjE2ODUgYzQ5MzAxMzFmNWUzYWM3Mjc1YTY3YzRkMzUyNjE5Y2Y4YTNmNmM0NCBsZWdhY3ktdHJ1bmsKKzIxNjg2IGMxZWM4N2YxMDQ0YTQ5Y2QxNzg2ZTgwZTllYWIwZGI1MGRhN2JiZjYgbGVnYWN5LXRydW5rCisyMTY4NyA3MDQ2MWYyZDIxMDk4ZDFjNTI5Mjg0MzAyNjBkOWUyZjMxOTQ2ZDU0IGxlZ2FjeS10cnVuaworMjE2ODggZTY3NWZmNTc0OGYwNWYyNzlhYzQ2OWY0NDNlYzE2MmQwMDNmM2Q0ZSByZWxlYXNlMjEtbWFpbnQKKzIxNjg4IDIyYmVkMmRkMWIyODY1NjRkZWE0ZDlhNjdkNGVkODBkYzMyMjUxOTMgcmVsZWFzZTIxLW1haW50CisyMTY5MCAxMzc4M2UwYTM0MjM3ZDUwZDUyYWE5MjBkMDc1NTlkMGVhMTI1MGMxIHJlbGVhc2UyMS1tYWludAorMjE2OTEgNmQ0YzhhMjliZTcwODdmOTA2ZWUyZjQ2OWM4OTRhNjVhY2Q1NGIxZSBsZWdhY3ktdHJ1bmsKKzIxNjkyIDA0N2Q3YzQ4MDY4YWRkN2EzNTA0ZDQxMmQ2NzJmNTRiMzNmNWM0MjAgbGVnYWN5LXRydW5rCisyMTY5MyBmNTNkOGM1MmM4MWY4ZDllMzRkMmYxOGMwNjliNGJlNzk5ZDkwMWJkIGxlZ2FjeS10cnVuaworMjE2OTQgZjYwZTg1Mzg0Yjc5ODFhNmVmOGU4YTExZWJlMTU5YmMxMmIyY2MxMiBsZWdhY3ktdHJ1bmsKKzIxNjk1IDAwMjNhNzhjMWM4MmM3MTUyMGQ0NTM1N2FhN2NhZjdiZTBkMzIxOTUgbGVnYWN5LXRydW5rCisyMTY5NiAwOWE1ZmUyYTc0MjY3Mzg4OWMxOWIxMjM0OGEwMzVhMjRiNTZhNDUyIGxlZ2FjeS10cnVuaworMjE2OTcgNzI5MzlhMjIzMGQzYmYxNzA4OWEzZDI1MmNmZmYzOGYyMjI1MzU2MSBsZWdhY3ktdHJ1bmsKKzIxNjk4IGJmYWE5N2ExOWIzMDgzZjM0Zjg3YWNiNDllZTFjOWFkZDFkMDAwMmIgbGVnYWN5LXRydW5rCisyMTY5OSAyOWJlODcxYmQ4NzY4NTY2M2RiODUyMjdhOTY1OGVkMmE1MTE3NWE5IGxlZ2FjeS10cnVuaworMjE3MDAgNjQxN2Q1ODgxNmNmZGQ1Yjk2NTQwOTA2MTdiOTJjOTZhZjQzYzRjNSBsZWdhY3ktdHJ1bmsKKzIxNzAxIGEwNjgzMWIzNTQwNzYxYjA4NWJkY2RjOTMxNWE1MzAyYzA2OWJhZDEgbGVnYWN5LXRydW5rCisyMTcwMiBmZDg5NmI3Y2FiYjc0MjI1MzJjMmVlNDUwNmY0M2I3ZjdiN2I1ZDkzIGxlZ2FjeS10cnVuaworMjE3MDMgNzQ2MTM0OGQ5OWRhNDQzNmZmZDI4NjZjOTg2Njk0NzkxMGFjNzA3MSBsZWdhY3ktdHJ1bmsKKzIxNzA0IGVhZTE3YzU3NjcyNzQyNTk3YTA2Y2ZhNzQ2ZGUzY2RlYWZhOWE0ZTUgZGVzY3ItYnJhbmNoCisyMTcwNSBjZmU1M2E2MjBjZmZlODEyNzM2OGU2OWIwMGFiZGFkMmYzYjBlNzY1IGRlc2NyLWJyYW5jaAorMjE3MDYgNDljMDdhY2M2ZTgzZTdiN2I2NzFiZjcxOWU1YzY2ZjVjYTI5ODI3NSBkZXNjci1icmFuY2gKKzIxNzA3IGM5NDAyODdkYmE3OWJkZjU2MzkwYWFkOTNlNWZhNjM4Njg2YWIyYzUgZGVzY3ItYnJhbmNoCisyMTcwOCA2NDZlMDUyZTA1YmVkNTFlZjJkNDMwMWVhNDVjMTdjN2JhZjJlMDVmIGxlZ2FjeS10cnVuaworMjE3MDkgNThlYjUwNTI4NjkyYzhlNmM0MzgxNzJiOGVjZWNiZDAxZjE5N2U3MyBsZWdhY3ktdHJ1bmsKKzIxNzExIDEyZTdhZDEwODIyOTE2MDVkZTU1NGI3ZjQ5MjA5ZDRiNjc2MTY0ZjcgbGVnYWN5LXRydW5rCisyMTcxMiA5YjQyZGY0Yjc0ZDQ1NjNlYTRmOWIzZmFlZmMzMzUyMGEzZTBmNzVkIGxlZ2FjeS10cnVuaworMjE3MTMgZjQwMTQwNTg4YjFlODNhNzVmYWE1NWUzYmIzOWM0ZWQ2ZDUyYjY3MiBsZWdhY3ktdHJ1bmsKKzIxNzE0IGU3NjBlZWQ1ZjY4ODJjZDQ3NjBjNTA3MDgxNTAyNTVlN2M0MjI2MTYgbGVnYWN5LXRydW5rCisyMTcxNSBhYTM0NDM2MTQ1ZDAzM2RiYjAyNDE0MGM2YzI3M2FkZWUyZTA4YmJiIGxlZ2FjeS10cnVuaworMjE3MTYgNWQzOTY0ZTYyMmE4NTJjYzNiOWU5Njc0NGZiNjFhNjhhMzUyMmMxMCBkZXNjci1icmFuY2gKKzIxNzE3IDYzOGQ5MDQ0ZmJlMjFlYjhmYTYzOGQ1YjBlYzg3NzQ5NDU3MTc2NmEgbGVnYWN5LXRydW5rCisyMTcxOCBhNzVjYTIxN2Y3Mzc3N2Q0ZGZmNjY1ZjZlNTAwMDcwY2VlOTcwZjVkIGxlZ2FjeS10cnVuaworMjE3MjAgYWNlNzBlMzI3OTI5Y2FiYmRlNWQ5MTlhNWQ1MmQxMDU4MGY1OTBiNyBsZWdhY3ktdHJ1bmsKKzIxNzIxIDU1NTExY2FhMjRlZWI1OTZlYzZmNzgyNjMxYjVjNWMxMDg0MmE3MTcgbGVnYWN5LXRydW5rCisyMTcyMiA1ZTFhMTRkOTkzYjM1YjkyMzU2Mjk4YjUzYWFhOWRiMmU3NTEwMDBlIGxlZ2FjeS10cnVuaworMjE3MjMgOTliNWQzMzRkZTFlNDMxZmRiNmYwMGQwNWVjZWUxMTkyOTNkN2Y5MiBsZWdhY3ktdHJ1bmsKKzIxNzI0IDE0NGEzMDA1YjViYWUzZGE1MWMyYTRmM2VjODc2NWE2Nzc1ZTk1NGEgbGVnYWN5LXRydW5rCisyMTcyNSA5Yjg1NjRmNmUzNGQ1MWNhZTI5NTgyZGJhMmNhZDhmZjAwYmI2OTI5IGxlZ2FjeS10cnVuaworMjE3MjYgYzQwNDEwNzJkMTAxMDEwZGIyZDNjODU0OWY5Nzc4NWYyNTkzYzBjNSBsZWdhY3ktdHJ1bmsKKzIxNzI3IDM0NmRjYWZjODc4YjQ2NmU2ZTA4MWYyOTdjZTdiMWU5M2RjNzQ5ZWMgbGVnYWN5LXRydW5rCisyMTcyOCA2NzA0NjRjOTRiOTJhNjgyMzIwZDE3OTQ5MzEzNWM5YjBjM2E4YTNiIGxlZ2FjeS10cnVuaworMjE3MjkgN2Q3NzYxNGZkMGI3ZmQ3MDFjNzg2MTgzYmFhNjkzZjMyMDc4OTA0ZSBsZWdhY3ktdHJ1bmsKKzIxNzMwIGM2YzMwZTQ1YWI1YmE2NjJiNTg1ZjM0OTMzY2Q2OWM2NDM4N2U5MDAgcmVsZWFzZTIxLW1haW50CisyMTczMSA0Mzg0ZjkxOWI0NDg1NDFmZjEyOGNlOGMzMDBjYjk2MjY0NjhiM2Y1IGxlZ2FjeS10cnVuaworMjE3MzIgOGQ2MmRkZTc2MjdjZWY3Y2YwZTRmODhjMDNmYzNjNjQxZjFlYmExZCBsZWdhY3ktdHJ1bmsKKzIxNzMzIDEzMmEwNmFkOTZlZWMxYTVlODlkOWI2ZjMyMmFkMGVmMjRiNTU3YzkgbGVnYWN5LXRydW5rCisyMTczNCBhODYxOTVlNmM3ZTMzMmE1N2I2OGJhYjBjM2VkMmY4MTRkZWYxMjY3IHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyMTczNiA2YjYwZDBkOTc0YzMxZDViOWRjOTZlOTdiOWU4MjUxMzFkN2M4YTdjIHJlbGVhc2UyMS1tYWludAorMjE3MzcgMjg4MTg3NjZhNjRjYTVmOTViYmQxZjY4ZTZkM2E4ZTJlMjA3ZmM2MCBsZWdhY3ktdHJ1bmsKKzIxNzM4IDYxZTUwZDBhYTU5YTFkODk2OWQ5ZDg5N2U3MzQxZWI5YzI5ODVkOTYgbGVnYWN5LXRydW5rCisyMTczOSA0MDUzNTJlYTUwYTA3ZDMxZjY1ZDdiMWJkMDUzMTI4MGMxYWQyMmMyIGxlZ2FjeS10cnVuaworMjE3NDAgNDI0N2I0YjJjNDhlNjkxNDdhOThiMWUxYTM3MjJhZTg4MjNhZWEzNSBsZWdhY3ktdHJ1bmsKKzIxNzQxIGZlNDQ0MjhmOTc3NGRmODQ1YmJmMzczNWNmYThhYTVhMzk2ZDE2MjUgbGVnYWN5LXRydW5rCisyMTc0MiAzMDQxNGI0MWZhYzk3ODRiNmYxMzViYTc1YjFlYTI5NDEzMDNiM2ExIGxlZ2FjeS10cnVuaworMjE3NDMgZTk5NTQ1NjdjNTRiMDJmNzA0YTljZmQwYTEyNWRkNWRmMGRkNzRiOCBsZWdhY3ktdHJ1bmsKKzIxNzQ0IDIxYTA0ZDE1ZTM4YzI2ZDgzM2QxZTAxYjk2OWRmZTNiYTJlNzg0MTMgbGVnYWN5LXRydW5rCisyMTc0NSA1YjgyMGQ3YTNlN2MxM2UyOWYzZjM0MmNjOTQ2NmQ4YWI0Y2ZmOTExIGxlZ2FjeS10cnVuaworMjE3NDcgMjc4MzE4MzA0MzU3OTE5MmRmNTAzNDk3Y2I4OTIyMDQyMjczNjQ4MCBsZWdhY3ktdHJ1bmsKKzIxNzQ4IGM3YmVmNmFhNmY5MjY3MjdkMTE5OWZiYWNhN2E1ZTU2YWMwNzJkN2EgbGVnYWN5LXRydW5rCisyMTc0OSAyMWM1NDliNjY3MDI0MTFjOGU2Mjg3MTUzMTM3YzRmMjU5MTI5MTJlIGRlc2NyLWJyYW5jaAorMjE3NTAgMTE1Mzg4MDU5N2NjNzJhOGNlY2JkMWViM2U4MzUyMDMxOWU3MDQ2NiBkZXNjci1icmFuY2gKKzIxNzUxIDlhMzczYTE0M2ExMzBmMmFiYzg2MzQwMGI4MjMxYTAzZTIzMWY5ZGEgbGVnYWN5LXRydW5rCisyMTc1MiAxOTI1MGY5MTgxZGM0NGUxYTk1NmE5Mzk1N2Y2ZGI2Yjg0MmM4MjA4IGxlZ2FjeS10cnVuaworMjE3NTMgMjNlNmJiYTg4ZDZhN2ZjN2Y1YjljOTg2MjEwNjk2YjYzZjYwNTk4NyBsZWdhY3ktdHJ1bmsKKzIxNzU0IDI4YjYyOTFlMmE1Y2Y3ZjU1MmQzZGI5OWZiN2U5MDA2Y2I3NmQ1MWEgbGVnYWN5LXRydW5rCisyMTc1NSAzZjI4M2M5OGU4MTUwNzliNTRjZGZkM2EwNzNkMDYzOWNjZDNjYjEzIGxlZ2FjeS10cnVuaworMjE3NTYgMTE1MWFiOGEyY2RmZTU4ZTI1MGI1MDU2MWRkYmQxYjVlOTExYzg3MCBsZWdhY3ktdHJ1bmsKKzIxNzU3IDdmZGI0MTYwM2U5YTNjM2MzMTBjYTk3YTc0ZTAwNDQ3ODQ4Njg0ZTIgbGVnYWN5LXRydW5rCisyMTc1OCA4NTk1MDUyMjQ4NTAyMGVmYjAxZjhiMjM4ZmNlODVkZjM1YTJhZTk5IGxlZ2FjeS10cnVuaworMjE3NTkgNzIxZjFhODkzZmJiYzI0OGNjMDcxZmUzMjNmNThjYzNlZTI1NWU0ZiBsZWdhY3ktdHJ1bmsKKzIxNzYwIDlmNDNlM2E5YmI2ZWUyNTI2ZTI4OWM5MjZkNTliYTgyNjc0NDk1ZDYgbGVnYWN5LXRydW5rCisyMTc2MSBiOWQ0N2QwODNkMmNhZjM0Mjg3YjVkODk3N2Y0MzI3OWY1OGU3NDdhIGxlZ2FjeS10cnVuaworMjE3NjIgMjc1YWZiNWE3NjdlMmJkOTExMTBiOTc5NTYwM2VjMGJjOTdkOGI1OCBsZWdhY3ktdHJ1bmsKKzIxNzYzIGY4NGFjYzlkZmQwYjVjZGNiYWQ5Y2YzMTQwMmU3MDA1ZWQyZjUyOWIgZGVzY3ItYnJhbmNoCisyMTc2NCAwODU3ZmI0ODlmYTNhNjMxMDc3YTk3MzFkOGU2MTVmNzAzOTM5ZTZmIGxlZ2FjeS10cnVuaworMjE3NjUgNzMwYWIwYmVkNmFiNDZmMGExNzA4NzhjZjFiNDhjOTc1NDcyYWU1MyBsZWdhY3ktdHJ1bmsKKzIxNzY2IGZhZjdmMTcxYTlmMzIyNDA5YjUxOGUwMTZmYzM1NWU4ZGEwZTdlNDQgbGVnYWN5LXRydW5rCisyMTc2NyBkY2QxYTBhYWFlY2I0OWNhNzk3Y2E2Y2VhN2U1Yjg2ZmQ3ZTc2MzMyIGxlZ2FjeS10cnVuaworMjE3NjkgMjFkN2JhZTlkYzJkYjZjMmNiM2Q3MmQ5ZTNmNzNkOTJhOTNhODA4NSBkZXNjci1icmFuY2gKKzIxNzcwIDU5NDQ2ZDBmODM0MWRkMTczMGYxNjFlMDNlMWQ3Mjk2MjE1NzQwOWMgbGVnYWN5LXRydW5rCisyMTc3MSAxZjljN2I0Y2VlNzdhZmU5ZmE4YTRhNWU0ZGVlMTEwMDA3NzZiNTJjIGxlZ2FjeS10cnVuaworMjE3NzIgZmRiMzZhMGM3ZTZlOThlNjIwYmZmMWZhMDY0ODg2NTYxMGU2ODEzNSBsZWdhY3ktdHJ1bmsKKzIxNzczIDRhYzk4ZmU3YWJkMmI1MTY3NjI2OTg2NzQ2ZGU0MmM0NjQ1MzE0NDMgbGVnYWN5LXRydW5rCisyMTc3NCA2MjM4YTIyMmI3Y2Q2NThhYjQzMzllYTZjM2E2YmE0Nzc1Y2E4ODljIGxlZ2FjeS10cnVuaworMjE3NzUgMzg0YTYxZmE2ZjVhMjA0N2RjNGYzOWVmNmZiMzU5ZDY3NzdjYjE0MyBsZWdhY3ktdHJ1bmsKKzIxNzc2IDBhOTBlNWVjNjFiNjk4MWU2NTZlN2VjOGQ0OWEyOTY0ZjgzNzU4NzcgbGVnYWN5LXRydW5rCisyMTc3NyAwMWZjOThiYTM5OWYxYThhZjFmMzlkNGY3NDM0NGJlNDBmMjE0ZTM0IGxlZ2FjeS10cnVuaworMjE3NzggMTlkY2ZiOTM1ZjYwZTRlMGY4YWNmODYxMjhiYzMwNDI4ZDRjYzc3MSBsZWdhY3ktdHJ1bmsKKzIxNzc5IDI3MTA2NGRhMWQ1MmNjZWM5OGZlMTg1MzEwMGI4NTgzNGM4Y2Y1ZGYgbGVnYWN5LXRydW5rCisyMTc4MCAxZjNkNzY2ZGFkOTFlNWVlMjY5MjhlNTkyNTk0YzIxY2Q1Y2ZkYmIxIGxlZ2FjeS10cnVuaworMjE3ODEgOTE1OTIyMmU2NDYzZmQ1OTQ1MDQ4YjY3ZDNjOWQ3NjJiYjZhNWFkOSBsZWdhY3ktdHJ1bmsKKzIxNzgyIDEwNzE3ZjhhNmQ5Njg0YzI5N2UxNTA5YmFjZmU0ODVhZjRiMDNkMmUgbGVnYWN5LXRydW5rCisyMTc4MyA5OGQ4MWNiZThiYmQ3ZmRiMzk2MTc0MDVhMmEwZWE3MzIzYWFjNzM0IGxlZ2FjeS10cnVuaworMjE3ODQgMzVmZWM0ODdiY2VmNzc3MzhkNWZiM2ZmYTlkODM4YzcyZDE0YWEwMyBsZWdhY3ktdHJ1bmsKKzIxNzg1IGU1ZTViYjU0ODJkM2I3MmM2NzExMjZhODk3MTM4Y2I0MTg3ZTdhMDAgcmVsZWFzZTIxLW1haW50CisyMTc4NiA5MjBlZTdmMmE1OTIyZTY4NWVhOGM1NDMyMDdkOTNlYzY1YzYxN2VmIHJlbGVhc2UyMS1tYWludAorMjE3ODcgMmI1ZTczODNjNzdhMTZmMzRlZGU0ODc2ZTNmZjgxZjhkN2Y1ZjRiMCBsZWdhY3ktdHJ1bmsKKzIxNzg4IDI5NTUxOGU2ZmNlYWJlMTkwNzYyNWQ4NTRiZWQ5OTAyMmFmZTBmZWUgcmVsZWFzZTIxLW1haW50CisyMTc4OSBjMDZkODE3OWU5ZTNiMzM2ODk2YTU2ZDlkMjA4ZDM4NmQxNzg1OTg3IHJlbGVhc2UyMS1tYWludAorMjE3OTAgOTE0OTQwOTQ2ZTJlYTFmY2NhZTAwM2ZjMDEwM2RiYzgwOTBlY2I4MyByZWxlYXNlMjEtbWFpbnQKKzIxNzkxIGM5YjRjOGFlNjE3OTIzMDUxYTYxZmYyNjMyN2I4YzgxZWFmODExNjMgbGVnYWN5LXRydW5rCisyMTc5MiA0MDMwYzkwMTkwNjdjNWMyMDY3ZTg4MzBhMzJmMDFiMGM2ODRlMjU0IGxlZ2FjeS10cnVuaworMjE3OTMgZmRkZTlmYWNiYjZlYTdkMTU1ZDBkNGRlMjhhYzZjYzFlZDZlMDg2ZSBsZWdhY3ktdHJ1bmsKKzIxNzk0IDc3YzgyODI0ZGY0MTI5ZjM3YmRhNjExOTc3YWIxOGQzODgxNDQwZmYgbGVnYWN5LXRydW5rCisyMTc5NSBkNTlhODQ3NmFmYWI5ZGY1NGFhMDQxOGVkNWNlMDQzYzdhMzcyZTIxIGxlZ2FjeS10cnVuaworMjE3OTYgYzhlNDcyOGQyYWIwZjNjYThhMGQyYjIxNjlkZmZhNGMwNWNlZjU1NSBsZWdhY3ktdHJ1bmsKKzIxNzk3IDFkM2M1N2NjOGQwODVjODY4N2I3OGQ4OWU2OThhZDBjMzM2ZGQyNTggbGVnYWN5LXRydW5rCisyMTc5OSA5ODNhY2FjNTY0NjZiM2JjZmNkZGQyYzQzMTgyOTBlYTdjOTUzNmRjIGRlc2NyLWJyYW5jaAorMjE4MDAgMDVjZjZiM2U2M2RlNTU0ZTE3YjkzNTY2NTM0NDBkNmJjNTNkYmE0MyBsZWdhY3ktdHJ1bmsKKzIxODAxIGU1M2JjYmMzMTY1ZTM5Njc5YWY2Mzg5OTNlZTI1YmI0NTA3NTZjY2YgbGVnYWN5LXRydW5rCisyMTgwMiBkM2MyNWIwNmI3ZTViNDRkYzUzMDFmZGZjYzI2NDg4MDA5NjY1ZGYyIGxlZ2FjeS10cnVuaworMjE4MDMgNTdlNTk1MjVkMjE3ZGZjZTM1ZDE4YTQ2ZWI4ZDI0OGViYWI4Y2VlZCBsZWdhY3ktdHJ1bmsKKzIxODA0IGZkZjhkMDgzMTI3ODk1M2EyODU3OWMxZGNhMDMyYjcwZDcwNWQ1MzQgbGVnYWN5LXRydW5rCisyMTgwNSBmNzE5NjQ4NmY0MmQxODA5ZDVlOGE0YTZlZGQ3YzFjY2FmZDUzNTJhIGxlZ2FjeS10cnVuaworMjE4MDYgNmE1MDkxMGNhMzAzYWQwNGEzN2NmOWQ4YWVmZTk5YzNlYTZjOGNmZSBkZXNjci1icmFuY2gKKzIxODA3IDU1NzE3ZGMyMjdmNGRlMTBiNDkwYzhmNWY2MzNiNWQ2NWNiYzFlYTIgZGVzY3ItYnJhbmNoCisyMTgwOCA5NGZiY2YxOTY1NDk1NTdiOGUyNzFmYjZkOWVhZjY3ZThkOWRhNTdmIGRlc2NyLWJyYW5jaAorMjE4MDkgMDc3MmVhYTE3NjMxOWFiNGZmYzU5NDhlNjgwMzhmZWUwNDUwNzc4NSBsZWdhY3ktdHJ1bmsKKzIxODEwIDczMzVhYzdjNTMxNTdmYzAwZDljMWRlMzhhNTIwYWEzODhmYmEwN2QgbGVnYWN5LXRydW5rCisyMTgxMSBjYjVlYTRkOGU4YmY5ODExZDY2NmRmNDRjM2I0MGEwYzc2OTQ0M2E5IGxlZ2FjeS10cnVuaworMjE4MTIgZTVhMmU4OTE2ZTBiNGU2NGMzZjI3ODBiYmUyNTA0NjYxZTM3YjE3YSBkZXNjci1icmFuY2gKKzIxODEzIGM0M2ZlMjEzZWUxMDhmNTM1MzM5YjliMjkzYjU1NzljZTZiNGJhZTQgbGVnYWN5LXRydW5rCisyMTgxNCBhZDgyY2FmZTQ1YWNmNDkxZjg5ODYxNWRhZjkyYTNjMmQyNzQzOTQzIGxlZ2FjeS10cnVuaworMjE4MTUgMzM4MThlYzYzOTViYWQ5MGE4ZGNjMzI4ZmRiYTVmMzIxNDc1ZmRmMyBsZWdhY3ktdHJ1bmsKKzIxODE3IDFmMWM3OGJhNTdmZjQ1N2Y2MDBhMjRjNTQ2MzU2MjkzODY0NWQ2MTEgZGVzY3ItYnJhbmNoCisyMTgxOCBkNjIzM2Y3Yjc0YzE4ZmU1Y2FmNjQ0NTc1NjE1N2YxNzYyM2VmMzZhIGRlc2NyLWJyYW5jaAorMjE4MTkgOGFhNjNhZWE3MjY5NTk4YTcxM2JlNDQ3NDg2YWM1NmU4OGE4MjAxNyBsZWdhY3ktdHJ1bmsKKzIxODIwIGNiNjZhOTgzMDk2ZjdjZjM5NTE1YjRjMzNhZTRhZWUxNTY2YzUwYzUgbGVnYWN5LXRydW5rCisyMTgyMSAzYjg4ODg1OWQ1MmIzYTYwN2JjODViNTlkNmE4Yzg5NDBkZWFlMGMzIGxlZ2FjeS10cnVuaworMjE4MjIgY2E4YTQ4YWJhMjJlY2UyOWJkNjc3MDlkNTVlYWI5ZDU4ZGZlMWNlNSBsZWdhY3ktdHJ1bmsKKzIxODIzIDVlYmVlNWMwNjBkMGU3ZGIyMThjN2MxYmZlMjEwOGRhNWE3YjY0ZDIgbGVnYWN5LXRydW5rCisyMTgyNCA3NDhmNmIzYThiZjYyNzQ4MWYyOTc2MmRlYjIyNTQzOGMyY2M5ZjA2IGxlZ2FjeS10cnVuaworMjE4MjUgYWMxMWFmN2Q4NjBhMzVmNWNlNzY2OTQ3NjE0ZGUzZmM1Mzg1NTEyZiBsZWdhY3ktdHJ1bmsKKzIxODI2IGZjZGI4Yzk0YjVkOGYzM2RlYjhiNDY3MGI2ZjI3Y2VmY2M3YjllOTggZGVzY3ItYnJhbmNoCisyMTgyNyBjZDYzOWE5NDcxYjhmNzkwNWVmNTgxZWM5NDZhOTBhYzBmYzEzN2VhIGxlZ2FjeS10cnVuaworMjE4MjggZTYzOGYxMjA2ZWUwYmQ5OWE5YTkxZjI0NTJkODkzOGQwYTUzYTJhNCBsZWdhY3ktdHJ1bmsKKzIxODI5IDcwMjc1MDM3ZjEyZDhkZWQ2YWQyMmJjYWY5M2FkNzQzMjNjMGZiOGUgbGVnYWN5LXRydW5rCisyMTgzMCA3NDYyM2IwNzZkMWJlOWUzM2QwOGZjZGY2NWUxMWQ3ZWZiNmVjOTY1IGxlZ2FjeS10cnVuaworMjE4MzEgOTVkZGNkNDQ0ZDM5MmZiYjEzNmM3NjdiMWEzYTIzN2FhMTQ4MmExNiBkZXNjci1icmFuY2gKKzIxODMyIGQ4OWU5MzZlMWIxMDY1YzVmNTcwYzAyNTllNzMzMDJkZDY0M2M1ZGEgZGVzY3ItYnJhbmNoCisyMTgzMyA3MDcxMWE5OGQ5ODk3Yzg5Mzc5YmFkMDRhZmU0MzljMzE1ZGM5ZjhiIGRlc2NyLWJyYW5jaAorMjE4MzQgZTA5YmVlOWI1NzI5MmQ3NjEzZWU3NjI0NGJlODQyNGE1Njc0N2FlMiBsZWdhY3ktdHJ1bmsKKzIxODM1IDU4NGJlMGJiZDk0MmI2NDU1YzM5OTJmYWI0ODZjZjE2MTZjOTBlOWMgbGVnYWN5LXRydW5rCisyMTgzNiBmNjVjZTU5OTA1NDdkNTEwNGNhZGFmYTAwOTY1MmM2ZWY4YjYwMTE4IGxlZ2FjeS10cnVuaworMjE4MzcgYjc3NzVlYmJmNDQ5MDk5YTRlMWIwNTQ5ODI1ODUxNWNmMGU2M2Y1YiBsZWdhY3ktdHJ1bmsKKzIxODM4IGYxNDgwMDIyOTY3N2RlYTBhYWI2ZThmNWE3ZGIyZjRmYjk1OGZkODggbGVnYWN5LXRydW5rCisyMTgzOSA5MjYyNmY0MmUwNDMzY2VmNjZmNWRlNjYwZGVlOGE0OGI2NTI4NTZmIGxlZ2FjeS10cnVuaworMjE4NDAgNWZjMmJhMWMzZjI0MjNlZTkzOTMwMzMyOGJkYTY2YTU4MWUwNmJlMyBsZWdhY3ktdHJ1bmsKKzIxODQxIGEwMjc3OWZkOWI5MjBlYjdmYTk1Yjc5YzVjNDEzMmI5ZTU5Mjg3ZWYgbGVnYWN5LXRydW5rCisyMTg0MiAxZjk3NDNhMWVkN2IwYjA4YWE5NDE4YjhlNzNkNzJiMjJjMTU1MjJmIGxlZ2FjeS10cnVuaworMjE4NDMgNmQ0YTUzMGZlN2MxNjIyMTExNjg5ODBkNmUwYTkxMTlkNGZhYjE5NCBsZWdhY3ktdHJ1bmsKKzIxODQ0IDM4NGI5MTEzYTJlMGM2OWFkZmI0MmQ1YTcxZDkyMDMyYTFkMmE3ZDAgbGVnYWN5LXRydW5rCisyMTg0NSA3OTI3ZThjZjQ2MTUwYWM0ZDEyYWUwODcyMmM3Zjc1YTkzOGM5ZWU4IGRlc2NyLWJyYW5jaAorMjE4NDYgMzgyMDZmMjliMGZjMWM1NDc1ZDc3MTg1YWFiYTUzZjIyMmNmMWJiOSBsZWdhY3ktdHJ1bmsKKzIxODQ3IGNmYjU3ZGI0YzM4OGU3NTVmOWRlMWEwNWQ3MmVhY2NlNjBiNjM4ODEgbGVnYWN5LXRydW5rCisyMTg0OCA0OTJhMWJkNGQwYzVmZTFhMmRmYzZkYmMxMjE1N2Y1YWU1YjNkOWJmIGxlZ2FjeS10cnVuaworMjE4NDkgOWVlOGYxNmIwZTI3MmY2OWVhNDQwYWY1OGYyODk1N2I4NTA2NTg0NiBsZWdhY3ktdHJ1bmsKKzIxODUwIGY3YmU3ZTlhNmYyMDI4MWNiYmU1NjgzYTBkMTgwNTg1MWJiOTJhYmMgbGVnYWN5LXRydW5rCisyMTg1MSBkM2JjODJkMWM1YTkyODU1YzA0MDg3NDQzY2QxZTkyYzliNzg0NmY0IGxlZ2FjeS10cnVuaworMjE4NTIgZTQyMWFhNDUwNDBjZDA4NjkxY2EzODIyNDk1NWYyNTczYjJhYzBjNiBsZWdhY3ktdHJ1bmsKKzIxODUzIGE3YmMzMzllZTJmMzUwODk3Y2E1NzUxY2EzYzExNjMxY2YyZmExZTggbGVnYWN5LXRydW5rCisyMTg1NCAyYmExZDlkOTk2YTM4M2VlMjEyNGRjM2I3NzE2MWU3Zjg2MzZhNWZjIGxlZ2FjeS10cnVuaworMjE4NTUgMDUwNWQ5ZGM4MzNkNzQwMzU5NTI4MzUzMzFkYTJjZDRjZTZhZjZlZSBsZWdhY3ktdHJ1bmsKKzIxODU2IGM2NTlkNGMwMDljYmZiMzdmMTQ0Y2Q4ZjA2ZDg2OTk5ZWQ3MTE3M2EgbGVnYWN5LXRydW5rCisyMTg1NyBhZDJmNTI2ZjAwMTlkNDE5ODFlOTkyMDgwNDI3NTI3ZWFiZTQwOTkxIGxlZ2FjeS10cnVuaworMjE4NTggOGNhNzBjOWMxOTcxMzc2ZTU0YjU1NTU5NjRiOTgwZmExZWJmYmJmNSBsZWdhY3ktdHJ1bmsKKzIxODU5IDQ3OTMyZDgyYjhlYjFmZjYwMThhZDFjOGFiZDMxZTZkNzAxYzQ2NTYgbGVnYWN5LXRydW5rCisyMTg2MCBhMzhlNzcyNDBhNjczOTgwZWU4ZDk4MTgxNDYxNWYzMTI3MmQyNDQyIGxlZ2FjeS10cnVuaworMjE4NjEgNTRkMDQ1OWM4ZTBmZGJkNjNjMjRiZWEzYjQ1YTU4NzY1MDE1NzhkOSBsZWdhY3ktdHJ1bmsKKzIxODYyIGZkNzRjYjViOTU3MzJjODlmNGY5MGY2ODNhMmE1NTAxNjQ4YmQ4MWYgbGVnYWN5LXRydW5rCisyMTg2NCAwOWM2ZmU3ZGJiMWM1M2NkN2FlMWU4NWJkNDEyNTYxODVlNmIxZTM5IGRlc2NyLWJyYW5jaAorMjE4NjUgNDVmNTNmZTQ0YzBlNmQ1Y2E2YzUyZjQ3NGI0NDI0YjFmNjVlYjE4NiBkZXNjci1icmFuY2gKKzIxODY2IDYyZTI0YmM0N2I2MjA3MmQzMTU3NDEzZTQyNDIwMmRkMzlhMmNhNWQgZGVzY3ItYnJhbmNoCisyMTg2NyBiMjFkZjA5MWZiYmZkNmQ3YzdmZmU4NjgxNmM4NGJlNDFlNDEyYmMxIGRlc2NyLWJyYW5jaAorMjE4NjcgZDI1MDk1OTEzM2I1YTk5NmIxZWRmOGE0NzcyZmEwMmU1OGEzYTk3MiBkZXNjci1icmFuY2gKKzIxODY5IDRjNTllOTM0ZTc2NWRlNTAzYmU5MzY5ODk4ZTY5MTE2NjlmZjdlOTIgbGVnYWN5LXRydW5rCisyMTg3MCAwNjRkZTg0Mzg1Y2FlYTBkMjdkN2U1OWQwNGU2YTljZmEyMzg5MzdjIGxlZ2FjeS10cnVuaworMjE4NzEgNTFjMzgyZDU4NTFiOTE5MmY4NmQxYzQ1YzYxODJlNzk0YTViOGFkNCBsZWdhY3ktdHJ1bmsKKzIxODcyIDA3OTE3ZjE0MzQ4ODYyMTYwM2VjNTY3MTlkNzk5Yjc0MGQyMTNmMjIgbGVnYWN5LXRydW5rCisyMTg3MyAwMDY5NTU1MWQ3MjEyMTE3MDVkZDczYTIyNTE2MzJmMjFkODZiZDk1IGxlZ2FjeS10cnVuaworMjE4NzQgNDM4MTQ2MWNjZTVkZjkyY2UxMzVkNWE0ZDRiYzNmMGYyNmU3ZjE1ZiBsZWdhY3ktdHJ1bmsKKzIxODc1IDkyMThmYTY1MjM5MWYzYTg5MWM3MjRjNGI5OGQzN2Y4NmI3Y2M0NzUgbGVnYWN5LXRydW5rCisyMTg3NiAyNTI0NGJkYjE2M2Q5MjFlMjEzMGNlNmFlMGUwMmUyYWYzZjYxYTQ3IGxlZ2FjeS10cnVuaworMjE4NzcgMWMyZGE3OGI4MzliOWIwNThkNjZiNjczNWEyOGU1MGYwNjUwY2IyOSBsZWdhY3ktdHJ1bmsKKzIxODc4IDY3OTRkY2FlNWQwY2Q5ODRlMGQwZDc0ODNhYTVhZTgyNDhkMGJiMzYgbGVnYWN5LXRydW5rCisyMTg3OSBjNzY2NzU2ZDg0ZDMzNzU4MzM4ZTk0OWY0YWU3ZWJkMmQ3YzVmNzAwIHJlbGVhc2UyMS1tYWludAorMjE4ODAgZGFlYTk0ZjA2NDI5NjA5ZjRiZmJkZDliZmI2NDBjZTc5MzYxYjgzOCByZWxlYXNlMjEtbWFpbnQKKzIxODgxIGExZjE5ZWUwMWFhZTBkNWVlM2MzMmI5N2VmYmMzYzNmMWI1MzFmNTQgcmVsZWFzZTIxLW1haW50CisyMTg4MiA1MzU0NWMzNzFmZTM4NDBkMTIwOTQ3YzU5MWM0MGMzZDgyZTE2OWQwIHJlbGVhc2UyMS1tYWludAorMjE4ODMgM2NkMzA4MWRmNjAxYzIwYTkyZjgxYWY0MjUxODhhYjE3YzA3MjNiMSBsZWdhY3ktdHJ1bmsKKzIxODg0IDk1ZWE2MTBmM2Y1NGQ3MmFjODY2ZTM0OTdiODE2YjgxMjVlN2RkNjEgcmVsZWFzZTIxLW1haW50CisyMTg4NSAzNmM1NjFlZTk2YjUzMjlmNTBiMDMwY2RiOTNmNWE5YmJlZjAzM2ZlIGxlZ2FjeS10cnVuaworMjE4ODYgOGRmNzc0MTVhNjFkNTY0Yzg2Mzk1NjgyMzU5YjRjYzFiOGNmNmZhYSBsZWdhY3ktdHJ1bmsKKzIxODg3IDAzYzIwZTdjY2U2YWNkNGQyODA0NDgwZGI0YjdiY2JlMWRkOTM1ZjYgbGVnYWN5LXRydW5rCisyMTg4OCA3MGUxODU4YWQ3MDMyMjFhNjI2MDgzN2VjYWI5Mjk4ZmM4Zjg4ZDUyIGxlZ2FjeS10cnVuaworMjE4ODkgMjM3MzY4NjQ0YzEzZDUzN2M3YzJjYzg3M2E1OTMzMTVmNDQzMjUwOSBsZWdhY3ktdHJ1bmsKKzIxODkwIDcyNmY0ZDA2YmQ0YmQzODgwMjkxZWNhMTYzN2NhOWUyMDU1MWIxNTIgcmVsZWFzZTIxLW1haW50CisyMTg5MSAyNGQwMDU1N2ZiYzk1YWE3ZmQxZmRhMzM4MTJmOGI3ZTEwMGMyOWFkIHJlbGVhc2UyMS1tYWludAorMjE4OTIgYjA5NDk2NTk2MGFmOTFkMGE5MzE2N2EyODlmZDE0NTllZWI0ZDM1MyByZWxlYXNlMjEtbWFpbnQKKzIxODkzIDRjMGFkYjhhNWJjNjUzOTM0MjhmNjQ1MWE0MDQ3YzhiNDczMzIxMzEgcmVsZWFzZTIxLW1haW50CisyMTg5NCA4Y2Y1M2QwZjg1Yzg3NGU3YTFlN2Y3YzAxNWZlMmEyNGQzYjVkZWRmIHJlbGVhc2UyMS1tYWludAorMjE4OTUgNWM3MzYyMWM5NTU5YjU4ZmJmY2MwNTY5Y2Y3ZDgzZTA3YTU5NzE5YyByZWxlYXNlMjEtbWFpbnQKKzIxODk2IDViMDc0NzAyMzlkYjg5MjRiODczNjQzYmY0NjczMzM0ZTk3OWI2MTAgbGVnYWN5LXRydW5rCisyMTg5NyA0Y2E5YWNlZDU1MDM3Y2YzMTY1NzE5OTcxYzg0MzYyY2FlZWEyNDcxIGxlZ2FjeS10cnVuaworMjE4OTggNTUzMjBkNjI5MWM5ZjVhYjhlOGQ2MWVlNDUwYmViYTYxZjc0YjcyMiBsZWdhY3ktdHJ1bmsKKzIxODk5IDNjMDUwZDFlMzViMTAyYTk2Y2QxMzEwNWRkMWI4MzhmZmRkZjliNjcgbGVnYWN5LXRydW5rCisyMTkwMCAxMWY0Y2Q0NWE4MGMwNzgzN2QwODQ5NWRjZGVkOGQwNGZkZmY4Njg3IGxlZ2FjeS10cnVuaworMjE5MDEgYmFhYWM5NGZlYzU0NzUyMGFmZTcxNjY0NmRmNTI0ZTQ2ZTY4YjU3NSByZWxlYXNlMjEtbWFpbnQKKzIxOTAyIGVlOWI0NTgwNDMzNzcwYjQyN2RlNmYyZWUxZDI3MzI5ZjZjNWYwYTkgbGVnYWN5LXRydW5rCisyMTkwMyBjYTlkN2E2Mzc5NGYwMTViOGI4Yzc4NWU1ZDEzOWU1N2E0YWM4OGExIHJlbGVhc2UyMS1tYWludAorMjE5MDQgOTE3MTY4ZmJmZDk0YjNkZjdmZTZhM2U4ZWIzMWRlODIwOWZiMjE4NCBsZWdhY3ktdHJ1bmsKKzIxOTA1IGE1NTdlOTViOTJmMGJkZjJlZTFlNTcxOWIyOGRiZjYyOWIzZmVkYjggcmVsZWFzZTIxLW1haW50CisyMTkwNiBhZTY3NmNmMTQ5NWQ0ZmNmZjM3ZTc4OGNjZGE1Mjg4ODc1MmE5NDczIGxlZ2FjeS10cnVuaworMjE5MDcgYzc4MGM2MWIzNWNlYzk4ZGI5MmU5M2I0ZjViZmUyODdhODMyNGYwOCByZWxlYXNlMjEtbWFpbnQKKzIxOTA4IGFkNmM1YzI3ZWNiZTYzZTg2MTZhMjNmMzY4ZWExOWUwOWRjODE3Y2EgcmVsZWFzZTIxLW1haW50CisyMTkwOSBmOGUyODY5OTc2YjBlNTA3NTA5MTQ1MjIwYWE2Yjg1MjI0OGE1ZDgyIHJlbGVhc2UyMS1tYWludAorMjE5MTAgZDUxYjJkOTMzODE0Nzg2MTljMjdjZmE0ZDMwYmRmNWU5MDRlMTJkYSBsZWdhY3ktdHJ1bmsKKzIxOTExIDMzNWU3NWJjYjUxYWQ4NmUwMGJiNzU4ZTQyNWU1MjQyNjhjMDljNjEgbGVnYWN5LXRydW5rCisyMTkxMiAyY2U2YTliMGE1MWQ2ODQ3NzkyMDc1MDRhOWM5MjI0NmExZjQyMDBhIHJlbGVhc2UyMS1tYWludAorMjE5MTMgMTQwYjcyOTEzMGQwYzVmMGJlMzI4ZGRmNTcyM2JmMzQ0NDQ4OTg3OCByZWxlYXNlMjEtbWFpbnQKKzIxOTE0IGIwMzI5NjQ5YjhjZmNmYTViYTM2MWZhMTYyYWU5NDc2ZmVkNWQ2NjEgbGVnYWN5LXRydW5rCisyMTkxNSBjMjVmMmMxM2QzODA2ZjRjMzg3NjU3ZWNhYjM5ZTU2Njg5MjRkMTQwIGRlc2NyLWJyYW5jaAorMjE5MTYgZGY0YjZiNWVhOWI4NWM1Yzc4YjhkZmU4NzBlOTRhNDU3Yjk1YTQ4NiByZWxlYXNlMjEtbWFpbnQKKzIxOTE3IDU5ZDE0Yzg4NjUxY2I0NDRjYTBlOTI1NzVhYmExMjViNDExNzVjZjAgbGVnYWN5LXRydW5rCisyMTkxOCBmZWM4ZjQwMzVmYjI4NjZhZTQ1ZTgxNDgyM2RlNjkxYzlhYWU3NjU1IGxlZ2FjeS10cnVuaworMjE5MTkgZGU2ZjE1ODk2ODYxOTgwY2E4ZDcyZjNmODFkM2E3N2Y5MGMwMDUyZCBsZWdhY3ktdHJ1bmsKKzIxOTIwIGIyNmZmMTY0MzIxMWYxNGMyYzYwZDRhMzhlOTExYzljZDIxMWUyZGUgbGVnYWN5LXRydW5rCisyMTkyMSA3MDQ0ODY2NDIwNzlmZTYzMTM3YzNhMTM4NWU2MWI2MmQxZDkzMzg0IGxlZ2FjeS10cnVuaworMjE5MjIgMWFhN2UyMTlmNTJkYzgyYTlkNTZjNjgwNDgyZWNjOTZkM2E1OTlkYSBsZWdhY3ktdHJ1bmsKKzIxOTIzIGM3Y2IxYzllOWQ5YzU3ZGI1MjYxNzViN2YzZmZjZDI4NTJiNTkyNGUgZGVzY3ItYnJhbmNoCisyMTkyNCBjNzEyYjE2ZmZhY2Q2M2I1ZDYyODJiMTMzOWQwMTI2ZGJiYTQyNmFhIGRlc2NyLWJyYW5jaAorMjE5MjUgYjE0MmI1MTczMDljNzUyZDExMWE1NDU1MjQwZWVhODQxMWExZTA4NiByZWxlYXNlMjEtbWFpbnQKKzIxOTI2IDkyMGUwMzYxZGQ2ZTNlNzQyY2Q1MDMyYzRjZTcwNDU2ZWM4NDEwZjggbGVnYWN5LXRydW5rCisyMTkyNyAxMzNlNTcwMTUxMDE0ZjlkZjA3YTIyMDZkYzIyNjE0NjMxYjZmZDY4IGxlZ2FjeS10cnVuaworMjE5MjggOGNhMmVmNjYzYWQyMGNiZDllODIwM2I4MmRmODlmNjk2ZDM1NDJjOCBsZWdhY3ktdHJ1bmsKKzIxOTI5IDI3NmJmNTk2ZThkMTgwODYxNThlMGViODYyMWM4OGJlODdkYzJiNzAgbGVnYWN5LXRydW5rCisyMTkzMCBkZjljNGM1NGVmM2VmOWQ2MzQyNTg1NzNlYmEyZmY1ZmM2NThhNDdmIGxlZ2FjeS10cnVuaworMjE5MzEgNzRiN2I4YTk2MjhiNjYyMDBmMDE0MjI3MDAzOWQzNGIyNmQ2ZGI1NSBsZWdhY3ktdHJ1bmsKKzIxOTMyIGU1YmFmZGRkMWRhMDQyZTljNDBmMGE0MWQwZGExY2I5NGJjZmRjYmUgbGVnYWN5LXRydW5rCisyMTkzMyBkMDkzOGJjMTJhMTFlNjdiM2JlMDhlMWViYzYwMzU1MzE1MDQ0N2E0IGRlc2NyLWJyYW5jaAorMjE5MzQgYzZlZjcxZTk0M2RkNjQwYjRmZDIxZWUzYmI5MmZkNjNmYWVhODM2MyBsZWdhY3ktdHJ1bmsKKzIxOTM1IGFhYzYyYWFhODQ2ZGVmYWQwYmM0NTU0OWNhMzM0NWZlZjI3ZDRmMmQgbGVnYWN5LXRydW5rCisyMTkzNiBkYjY0N2Y3YzgzMWJjNThhMjMwMjZkYWZiYWU3NDM4ZWYwNjJjMTNhIHJlbGVhc2UyMS1tYWludAorMjE5MzcgOTJmODE0NDllMTZjMjFlN2Y4Zjk0YTQ1YzRhMThhMTExMjE4ZmY4OCBsZWdhY3ktdHJ1bmsKKzIxOTM4IDAxNjkyYmYwMmY5Nzg1MDU1N2E2ZTQ0Yzg4NjYyZTMxOWJkZjEzZjcgbGVnYWN5LXRydW5rCisyMTkzOSAzY2QwM2E2NGMzMzhjMDAzNDM5OGEzMjQ2MjFkOGJlMTYzMWZkZTc5IGxlZ2FjeS10cnVuaworMjE5NDAgZjhiZDE0YWVmNGQ2ZmI1ZGRmNGU5ZDdjNzI2ZjJmZDg2ODljNDk3YyBsZWdhY3ktdHJ1bmsKKzIxOTQxIGFmOWFkOTBhNDQ0NThiNmUyZDQ4Y2NkOGRkZTFjMzE0MzgyZDY1ZjcgbGVnYWN5LXRydW5rCisyMTk0MiA0ZDQ2YTFiMzNjNjIxM2JlMDBlN2U3Yzk0NTllNGNkM2QwZTMzODRmIGxlZ2FjeS10cnVuaworMjE5NDMgZTcwOTI5ZTEwNjYzY2VkZGE4MGI2YjQwYzRhNzQzYjhlNTU3OGI4ZiBsZWdhY3ktdHJ1bmsKKzIxOTQ0IDgwMmE4NGU4NGVhOTQyZjYwNjQwOGQxZDQ2NjcyMzRiYjU2MWYzNjEgbGVnYWN5LXRydW5rCisyMTk0NSAyOWUwOWI5NmVkMzYzNWE5M2MzOWNkZWRjZjdmNTVkNjEzODUxMzM0IGxlZ2FjeS10cnVuaworMjE5NDYgNzRkZmUzMjAwNDIzZGQzNmMzY2FhMGRmYmZiYzRjNjIwODg0NzM0MyByZWxlYXNlMjEtbWFpbnQKKzIxOTQ3IDFkNTA4M2U2ZDE3ZTZjY2U1N2U2YTlhMDBjMmI4M2JmODM4MmQxMTEgbGVnYWN5LXRydW5rCisyMTk0OCA2YmVmMDlkYTliOTMyNGYyODJkOWFkNmIzM2YzNjQyOTc1ZjdhZjU4IGxlZ2FjeS10cnVuaworMjE5NDkgMGViZmIyNTllY2M2NWU4Y2MyNzE1ZTZhNGU5NTk4NDBlMDk3OWZkMyBsZWdhY3ktdHJ1bmsKKzIxOTUwIGNiZDIyYzkwMjdiMmIzZDNmMzQ5NjY2NWY5YTAxZTQ2NDJjYWJhZDIgbGVnYWN5LXRydW5rCisyMTk1MSBmZjhlMGNlMWQ5ODY5ODA2ZmM2OGQ2NTI2YWQ1YjAwNmNhNWFiNjExIHJlbGVhc2UyMS1tYWludAorMjE5NTIgMTQxYmQ3MGUwYjcyMzA1OWM2ZGQ1NDhmYmM3OTdkNGVjNDBhZTY4NCBsZWdhY3ktdHJ1bmsKKzIxOTUzIDJlMTczZGExMWQyZDE0NmM4YmI4MjNhNzJmZmM1OWYzZDY4NzFiZmYgbGVnYWN5LXRydW5rCisyMTk1NCA4MjQyOTA3Yzg5NTczZjhlZWIzNmFjZTIxYjRjMDkyOTE1Mzc3ZmY3IHJlbGVhc2UyMS1tYWludAorMjE5NTQgNTcyNTMzYTMwMzhkMTgzMmM4YTIwMGZiODcxODExMmRkODM3NThlOSByZWxlYXNlMjEtbWFpbnQKKzIxOTU2IDc5ZDMwNGUzYmEyNTdjOTBjYTkxNGE5ODUyZmYxNGI1MWQ1YjVkMWIgbGVnYWN5LXRydW5rCisyMTk1NyBiMTBmZjMzNzg5NmJlNTc3ZWQ3YzNlZjQwMWIzZDlhYjYzZGI1NmQwIGxlZ2FjeS10cnVuaworMjE5NTggNWRlMjNhNjM4YWQ2NGU5ZjU5NWRjYWQ5Nzc0Y2QwMmYzN2E5YTliMyBkZXNjci1icmFuY2gKKzIxOTU5IDc0M2Y4ZTFkOTUzY2JjMWJlZjY4OTRhZWMwNmUwOGFiMmE4ZWE3YTEgbGVnYWN5LXRydW5rCisyMTk2MCA1NzY4NGQzY2VmY2U5MWMwMzkxOWIxYzUxZGI0M2Q4ZGM1ZjU0Y2FjIGxlZ2FjeS10cnVuaworMjE5NjEgMmQ2ODYyNjE0M2E3OWM5ZmFmNzFiMDllN2JjNGM1Y2MwNDEwOTliYiBsZWdhY3ktdHJ1bmsKKzIxOTYyIDIyYjJmNGI0MzZhZmY4MzkwMjVhNTM3N2M5NmQzMTMwY2ZiODk1Y2YgbGVnYWN5LXRydW5rCisyMTk2MyA0ZDMzYWNiZGM1MDhmNGJkNzk2YmYxYjhmMmNiYjA0ZDgzNzY1ZWEyIGxlZ2FjeS10cnVuaworMjE5NjQgMjNhZTQ3ZTAwMTE5ZjNjNjk2MmViNzQ4ODYxOTA1MzgxNjRjMzdiOCBsZWdhY3ktdHJ1bmsKKzIxOTY1IDQ0MTU1MTIxZjAyYjFlMjgzNzQxZjU2MmIyMjQzYWI2YjUwZmNhNTAgbGVnYWN5LXRydW5rCisyMTk2NiA1ZWI0NjBhNjVmZjcwYTM0ZTVmNDU4ODVlOWMwNzljNjQ1ZDU5NjA3IGxlZ2FjeS10cnVuaworMjE5NjcgMDFhZTk2MmRmODg1ZTRlNmU3YmNjYzhmMjU1NDYxMDIzOGNjMzE3NCBsZWdhY3ktdHJ1bmsKKzIxOTY4IDk4NDg0ZWYyMjVmOTI4OWY2MjE4MTU5Y2E3ZjNiODRmNzE2YzgwMDcgbGVnYWN5LXRydW5rCisyMTk2OSBhYzEzYTZjZTEzZTI0Y2QwZGFhMThjZjQwMmM4OGMzNzQ1OTRmYzU2IGxlZ2FjeS10cnVuaworMjE5NzAgMDFjNjM5OTcxYmZmMTNiZmQ1NGY4NDQ5NmU4MmJlYzk2MDUwMjE5OCBsZWdhY3ktdHJ1bmsKKzIxOTcxIGI0NjVjZDUwY2YzNjRhOTYyMzVhYjIzN2M0NTRkOTk2OTdhZWYxNzkgbGVnYWN5LXRydW5rCisyMTk3MiAwZTIyMzEyYzQ3MzM0YmJkODljYjlkZTMyMWI1M2NkNTVkZTA2YzdjIGxlZ2FjeS10cnVuaworMjE5NzMgZjk5OWQzNjA5Zjc0NjZkYzY0NTI3MzJmYjdhNWJkNTczZjAxNTgwNCBsZWdhY3ktdHJ1bmsKKzIxOTc0IDI0MDIwNzBlZTAyNGMzMmUyMWJhNWMwNzc4ZjAyNzU2NGNmMDdlOWIgbGVnYWN5LXRydW5rCisyMTk3NSAxOGRmMDk3OGRlNWQyZTExMjI4NzZkZmRjOWQyMDU2YWUyODY2MDI2IGxlZ2FjeS10cnVuaworMjE5NzcgYjMwN2U1YThiNGQ4ZDU5MWY5ZmU5NDYxODkyYzJlM2Q2MWRjYTYxNyBkZXNjci1icmFuY2gKKzIxOTc4IDAxNDYzOWRjNjVmOGM3NjRkOTE2NGJhNGI0ODRmYzIzODVmZDc3OWYgZGVzY3ItYnJhbmNoCisyMTk3OSA3Y2QyMmJmNTZkN2JjMjE4MWM0MzJkZTY3N2Y1MDlhN2NhYThiMjEyIGxlZ2FjeS10cnVuaworMjE5ODAgZDExMTk2MzNhNzNlOWNkZGE2YjdkMWRmYzQxY2Q1YzU5MGFkNWFiMiBsZWdhY3ktdHJ1bmsKKzIxOTgxIDAyYjgxZGYwNDhiYzU5ZjY3ZmM2OWE1YzEwNmYyM2U0MmVlNjY4NjYgbGVnYWN5LXRydW5rCisyMTk4MyBjMmZiYjU5NDFlZTU2ZmI4YTk4NTZlOTNiMzAzZDQ0N2YwOWMyZmRmIGxlZ2FjeS10cnVuaworMjE5ODQgNGQwZWE0YzIzODZkNWQ4OGM0MzM3MTkxZjBiMTc3MGE5Yjc3ODBmMiBsZWdhY3ktdHJ1bmsKKzIxOTg1IDNkNTNiNTlmNDhlNjZjODM1ZDAyODYzOWM4Njg4ZTYzYmE5MTBhNGUgbGVnYWN5LXRydW5rCisyMTk4NiA2MDQ3OTBkNDkzZmE3MzU5ZDY2ZTgyZjlkMDhmOTI4ZmNkYjJmYThjIGxlZ2FjeS10cnVuaworMjE5ODcgMThhM2UwZDg4MDhlMGY3NTU2NGIxM2M5MWU4YmMxMzBjYTdkYmY5OSByZWxlYXNlMjEtbWFpbnQKKzIxOTg4IGQ1OTFhOTZhZWQwNjQzZDU5ZWU2NzU0YmJlZmE2Y2NjYmNkNTFiZjUgbGVnYWN5LXRydW5rCisyMTk4OSA5NjQ1NWY0YWJhZGQzM2U3YmE0MTEwNGYwYjQyMjJlOTY3Njc1MTliIGxlZ2FjeS10cnVuaworMjE5OTAgNGE0MzE5NTI2NzZiNTdiMDJlYmIxN2IyMjgzNzkwNTc1ODViNzZjZCBsZWdhY3ktdHJ1bmsKKzIxOTkxIDZkOTg3NGJiOTc4ZmJmNWM1ZmQ5ZjYyZWU4ZTM3YWQzNWQ2YTZkZjggbGVnYWN5LXRydW5rCisyMTk5MiA5OThmODA1MTRhMTMxMjk4OGIzNTQ0OTU4MGQ0NDRjN2IwNWZkNjQ2IGxlZ2FjeS10cnVuaworMjE5OTMgNzYzYmI2ZmFlMjgwZmY3MDI3ZWQ3NGZlMDBlN2U0NTY2ZGVjMjk3MyBsZWdhY3ktdHJ1bmsKKzIxOTk0IDcwYjliNmY0ZTc5YzJhODI5NjRjZjk3ZTg4ZTdjMjQyZDQxMmZjMzUgbGVnYWN5LXRydW5rCisyMTk5NSA0NDYyYzU3ZjZjOTQ4ZGRkOGQwMjZiY2U2Y2U1ZDE2ZGZjYTcwNmNiIGxlZ2FjeS10cnVuaworMjE5OTYgNzRmMDUwZjdjMzY0ZGVmYjU4YzE5YTU3OGI2Zjc0NWYyNmM1M2Q4NCBsZWdhY3ktdHJ1bmsKKzIxOTk3IDFiNjg2OGU4OWEyM2U4ZjBhMGUwN2NhYjFkOGNlZWMyNzk0MmIyZjggbGVnYWN5LXRydW5rCisyMTk5OCBhOGIxYWNjN2EyMWY1NGQzZDUyZDRlZmVmNGUwNzNiODY0YzVkZWYwIGxlZ2FjeS10cnVuaworMjE5OTkgODEzMTViNmY5NDY5NTEwMjA3NGY0YjFjMDQ3N2YzMmMzM2E4ZTBkYSBsZWdhY3ktdHJ1bmsKKzIyMDAwIDQxMDA3ZDUwY2NiNzNkMjc1NjAzZGNlNjQwNjNmOWJmMTg4NGNiYjMgbGVnYWN5LXRydW5rCisyMjAwMSAyOWU2NjFjNTJjMGI1NWU5YjU4YmJiMTdmMDI1NmE3ZWI0ZmVlOWY2IGxlZ2FjeS10cnVuaworMjIwMDIgMGMzYWQ1MDNhZDZjNDkyMDI4MWUzNmNmOWUzOTg1MzlmOWYxOTQyYiBsZWdhY3ktdHJ1bmsKKzIyMDAzIGMzMDcxYmQ2YTcxMzMxOGNiMGFiNzllZjk2OWZjMzNmZDVjMzAwNjEgbGVnYWN5LXRydW5rCisyMjAwNCAxMDczMjY1MTU0MjVkYjc5YTkyOTQyYjA1NjkwNWI4MTZhODRlNzVhIGxlZ2FjeS10cnVuaworMjIwMDUgNjkzYjM5ODMxZjcxODEwNzI1NTc0NmUyMDE0NWI1NDY0NGNkOTE5NyBsZWdhY3ktdHJ1bmsKKzIyMDA2IDUwMDA0YmVkNGU2NWE5MTZiM2I1MTUyMzRhN2FmOWI5NTMzY2FlY2IgbGVnYWN5LXRydW5rCisyMjAwNyAzMTViM2NiMTI3YzA2MjIxZDg0MmVlYWVkYjViMDAwMTg0MjExMGMwIGxlZ2FjeS10cnVuaworMjIwMDggY2ViYjRlMTg3NDQ5OWQ0ODMwNTc3MDExNTUwMmI4NjIyYzY0YWUzYyBsZWdhY3ktdHJ1bmsKKzIyMDA5IGRjOWJhZjgwYzQ1YWZkOTI2NzY3OWE2NTY2M2Q5ZTFhYTQ3ZGRiMTAgbGVnYWN5LXRydW5rCisyMjAxMCA0Njc3ZDJmZjMxNTA4ZjVmYTZhYWI2NDBjNTgzNGY1NTkwNjMzZjQ5IGxlZ2FjeS10cnVuaworMjIwMTEgYTYzNjFjMmU1MDQ0YWNkNDQ3MWFhODU0OWMzYWQwNGNlMTBlOTk3OCBsZWdhY3ktdHJ1bmsKKzIyMDEyIDMzZjgyMDgwNTU5ZTE2OThkNDA3OTIzOTIyYzQwYzE3YWU2YWE2OTYgbGVnYWN5LXRydW5rCisyMjAxMyAzYWE4N2YzNGNhYjAxYjY0NGQyNjIyYTAzOTBmMTI2MWQzYzk0OTlmIGxlZ2FjeS10cnVuaworMjIwMTQgNmY5MjQyZDg3MDU5ZTg0ZmE4YThhYTY3ZWFlNDliY2ZkZWQ2MjY2NyBsZWdhY3ktdHJ1bmsKKzIyMDE1IDQwOTAwNjIwMjkzZTZkNmRjYzAxY2Q1ZGFjZmUyMjk2MDM5ZjExZjMgbGVnYWN5LXRydW5rCisyMjAxNiBiODBhYzhlMzFhODAyZWZlNzQ5NjBkMzM4NzUyODEyNDMzMDM3NTczIGxlZ2FjeS10cnVuaworMjIwMTcgN2M5MjgxMTZiYWEwMGRlMGYzZDFjMjQ2NTA1ZWI0YTNlZjg5ZThhZSBsZWdhY3ktdHJ1bmsKKzIyMDE4IDA4MWQ5NmZiY2Y0MzJjYmI3NTE4ZGZlNzYwZDU3YzBmMWI2NWU4MGQgbGVnYWN5LXRydW5rCisyMjAxOSAxYmMxZmRmMTQ4MmIwNmM3N2ZhY2E1NjBhNWMyYzZiNmNiNmM1YWE1IGxlZ2FjeS10cnVuaworMjIwMjAgZmRiMzg4ZjJkZjRlYWE3MzE5MGI0MjUwMTg0NTRlMGU5MWQ0ZmViNiBsZWdhY3ktdHJ1bmsKKzIyMDIxIDEzMmM0YmZkYmE3NDgwMThjZDA2NjBlMGM5MjM0OWMyNzg5MzlmMjggbGVnYWN5LXRydW5rCisyMjAyMiAxMzFhOWY3NWUyNTgyZGQ1NGVmNmMxM2RhOTY1NjU3MGNlNWYyZDQ4IHJlbGVhc2UyMS1tYWludAorMjIwMjMgM2NjNjY3NTA2ODdkNWNlODM0ZTY1MThkZDZmM2Y1MWEwZDk1ZGJmZSBsZWdhY3ktdHJ1bmsKKzIyMDI0IDdlNTJiZjUyYWUzMzQ4N2RjNDc1ZjIwMzQ2MzhmYzViYzkwNzljNmUgbGVnYWN5LXRydW5rCisyMjAyNSAyZGVhNDBlNDBkOWQ1NzNlNTA2N2E1Yzc2MGU5OTBhMzc1MjRkMGM3IGxlZ2FjeS10cnVuaworMjIwMjYgMDMzMDU2MDJiYTliODViM2JmYTgxYTMzN2IyNmQ0NWU0Y2I4YTQ0OCBsZWdhY3ktdHJ1bmsKKzIyMDI3IDVlMGE0MGNjYjlkYTRjZmM5NWE3MjdlNTQwYTBiM2VkYzQ5ZjA2ZmQgbGVnYWN5LXRydW5rCisyMjAyOCBhODU3NWYzNThiOWZkZjdkNzBhNTRjMTM1NGU5YWFlODBmMGFkN2FkIGxlZ2FjeS10cnVuaworMjIwMjkgYWI4YWE0MzAyMTA5OTEzMjI2ZTMxN2YwN2E3OTE2NWRlMzNlYzdiYSBsZWdhY3ktdHJ1bmsKKzIyMDMwIGMwMzJhYWY2YzgxMjMyMGRmMjEyMTg1MDhkZmQzOTY4MDc5OTcwNDAgcmVsZWFzZTIxLW1haW50CisyMjAzMSBhMWY2ZmQwMTIwNWYwMjJjY2VlMzAyNmRmMGU1YmE4ZjBkYzAxYTZiIHJlbGVhc2UyMS1tYWludAorMjIwMzIgZTY2ZDY0N2I3MzJmMjNmNzViNDFhN2ViZWU4NTc5NjdiMWI2NjljYSByZWxlYXNlMjEtbWFpbnQKKzIyMDMzIDFjNWQyNTZiMTI1YTRjNDhhMDk4M2NkMjg4MGVkYWZiZGU0Y2JlZjcgcmVsZWFzZTIxLW1haW50CisyMjAzNCAwNDVmNTUxMzVhZDAwNGE0Y2JiMWZlZDdlNTUzNThkYWM1Y2RjMDVkIGxlZ2FjeS10cnVuaworMjIwMzUgODc2YWVjZWY2NDgzZjM0ZTM5NTIzY2M4OTJhODMyYzA3OTMzMmM1YiBsZWdhY3ktdHJ1bmsKKzIyMDM2IDNlNWNlOTk0NTk4NjJhMjIyNzY5Njg0MmY1MWVlYjdkYzg1ZmRlMWMgbGVnYWN5LXRydW5rCisyMjAzNyBlMTQ2NDE0M2M0NjMzMDYyNDQ2NGJkZWY5YWMxNDQ3ODIwNzRmOThmIGxlZ2FjeS10cnVuaworMjIwMzggMTJjYmM5NDJmNTQ5ZDUzOGVmZmYwNWQ5NzZjZmE2NzA3MDA5NjgxNiBsZWdhY3ktdHJ1bmsKKzIyMDM5IDc3ZmQyMGJjYzc2NjFhNzBiODRiNWIxNGQ0M2JhY2Y4YTJhOWI0MmEgbGVnYWN5LXRydW5rCisyMjA0MCA0M2FjMTgwNGQyYWFjYmRkY2I1YzkzOThiODk4ZTUxMzBkNDc2YzA0IHJlbGVhc2UyMS1tYWludAorMjIwNDEgZWYyMDMxYzU0ODc1NzYzMjRkNjdmMzY3MWI5ZDUxYjg0M2YwNTg2ZSBsZWdhY3ktdHJ1bmsKKzIyMDQyIDUzMzFmNDcwNThhMTk5MTIzMjAxYTIxZmZkYzI3NDcyYmVmYmM0MmQgbGVnYWN5LXRydW5rCisyMjA0NCAyYjE2NTI2YTM1YTRkZTEyMWViN2YxYTJmNmU1ZjZjNjhjNTExYzI1IGRlc2NyLWJyYW5jaAorMjIwNDUgZjUyYzA4M2I1NTg4MTZlMTNiNjM1OWZmOGU3NDc0NDcwN2JmMjMxZSBkZXNjci1icmFuY2gKKzIyMDQ2IDMxNDdlZmUzMWViODk4MjE1MzY5Y2I3MWQxYTgxMGI2OWFlYmM1MjYgZGVzY3ItYnJhbmNoCisyMjA0NyBkOTcyY2ViNGRjMDY0MGNmMDUxOWI1ZDM4MjY3NWNjOTM0OGMyZDc1IGxlZ2FjeS10cnVuaworMjIwNDggZDY0NjI4Y2M4ZmZjOGE4NmRmZjczZmMxM2I2NzVmM2Q1M2FjYTQ2MiBsZWdhY3ktdHJ1bmsKKzIyMDQ5IDZmMzAxYjNjZjMyM2VjOTM1NDljNjg4NmYwMWIwNWI4MjllNzU4NzQgbGVnYWN5LXRydW5rCisyMjA1MCA0ZWUxZmVlMWQ0YWRiNzQzMDQwYmU1YzljNjRjOGQ0NTdkNzFiMWVlIGxlZ2FjeS10cnVuaworMjIwNTEgZDE2NjlhZjlkMGVjNTJkMzdiNzQ5NWUxM2MzNTMwZDYxM2VlNTFlYiBsZWdhY3ktdHJ1bmsKKzIyMDUyIDczNDM2MjJmMmI4NWQxNDEyNGE0YzNiNzhlOTgwZTYwYzViOWI4ZTUgbGVnYWN5LXRydW5rCisyMjA1MyBkM2Q5Y2VhMjMxNTY2OWEyMWU3NGU0ZThjYTIyYTZkYzAxZjA1MTQzIGxlZ2FjeS10cnVuaworMjIwNTQgYWUxOWM2OTkwNzQ5NjIwYjBhZTkxOGE3ODdlNzIwNDYyYzM2ZGFiZSBsZWdhY3ktdHJ1bmsKKzIyMDU1IDlhYzFkMzVmODEzNjZjZTJiMjU0ZTgyMmI1YWY4OGViYmMyZTFhMTYgbGVnYWN5LXRydW5rCisyMjA1NiBlYThlOTYzZDllNjcyNDQ2OWRjZjYzNjE2MDFiYTZmMWMyNzk5ZGExIGxlZ2FjeS10cnVuaworMjIwNTcgNmY1OTAzMmFmMTU4ZjE4NTYxNDYwNWU5M2EwZTk2MzUzMDljN2VjMyBsZWdhY3ktdHJ1bmsKKzIyMDU4IDgxMzM3ZmJhN2RkYmUwNTliMDkxODJmMTVmOGRmMTUyNzk5OWQ0NDMgbGVnYWN5LXRydW5rCisyMjA1OSBjMDc2NTVmNzI2NDdiMGRmZDk0NDJkZjYwMmRjMmIyZWFiOWIxODAxIGxlZ2FjeS10cnVuaworMjIwNjAgYTVhYWY2OGZmY2RhYWFiYzkxODdkZGFhYWU0YTI3ODY5M2NiMmQzZCBsZWdhY3ktdHJ1bmsKKzIyMDYxIDllY2NmNzhmZWExYWMwM2ViNTg5YmM3OTA2MWZiOGE2M2M0YjlmMGQgbGVnYWN5LXRydW5rCisyMjA2MiA0MzI0NTdmMDIyODc4NDEwOTZiYmZmNDFkNWFkYWRiZDczMmEyZjY1IGxlZ2FjeS10cnVuaworMjIwNjMgY2I3NjExN2MxYjRiYjgwMDliMzllNGQ4MTgxMTZmYjFlZTc0NzM5NSByZWxlYXNlMjEtbWFpbnQKKzIyMDY0IDI3NjM2YzkxY2IyN2M1YTEwNTQ0ODc0YTY1MWFlMjM2ZWUwMzdiZjEgbGVnYWN5LXRydW5rCisyMjA2NSAxYjA5YTljYjA2ZDU5ZjUwMDBlMzI3ZGQzN2FkYTI3YWVkNmEzYjUwIGxlZ2FjeS10cnVuaworMjIwNjYgM2MxMmVlZTdiYmQ0MjM2NDc2YmFjNDQxYTdjNzRhMzVhMDE4YjIxMiByZWxlYXNlMjEtbWFpbnQKKzIyMDY3IGEzNTY2ZWU1YjFmOTQ4NDQ0ZDlmNGI2YTA0MDUzNzUxNjRmNDg3YzIgcmVsZWFzZTIxLW1haW50CisyMjA2OCAxMTExMmI3MzZjN2I1YWMwZTI3YWFlN2U0MDQxZDFjNzRiNzdlOGM4IGxlZ2FjeS10cnVuaworMjIwNzAgMTJiNGJjNGE4MDQ4OGU1ODNhMzAwMTY3ZWNkYTQwM2Q1NGJkMmQ2ZiBkZXNjci1icmFuY2gKKzIyMDcxIDQwODFiNTZmMjBmZjU5YmZiMTEzNTY0NGE4YmEyZWVhMTA2NDJkMmMgbGVnYWN5LXRydW5rCisyMjA3MiAyZGZmYTNkM2Q5NGZmMWFkYTJiN2RmMDBjNTA1ZDg4M2NmMTU3OTk3IHJlbGVhc2UyMS1tYWludAorMjIwNzMgMGUyMTJlODhkMzNkMDkyZDlkNDcxNjdlZTZhNzQxNjIyYjA0NTQ1OSBsZWdhY3ktdHJ1bmsKKzIyMDc0IDRkOWViZWVkYmQwNDVmZTE4YTk3ZGM0NmE1MWQwZWIyNmNhZWY4MWIgbGVnYWN5LXRydW5rCisyMjA3NSA4YzQwMmFkZWVjY2JiNWIwM2FhZTZkZTZmM2ZjYzAwMGM2N2MyOTJlIGxlZ2FjeS10cnVuaworMjIwNzYgMGI5Y2VhNjNiY2ZjZGNjMzNjOTg0Mjk5NDM3NDZlYzY5OTBmNWY1OSByZWxlYXNlMjEtbWFpbnQKKzIyMDc3IGY1ZTI1ZmU0NjZhNDE5MWRkNWQwZDYyMzE3Nzk5MjQ0NmVlZjcxZWYgcmVsZWFzZTIxLW1haW50CisyMjA3OCA5MmVmMzhiMDEzNDYzYjI2M2UzNzliNTUwZTBmNWM0OWMwZDMwZTBiIHJlbGVhc2UyMS1tYWludAorMjIwNzkgMGNlMzVlN2Q2ZTMzNjYzNTM2Y2NjYjk5YTA0ZWRkNTQ3ZWRjZWM0OSBsZWdhY3ktdHJ1bmsKKzIyMDgwIDY0MzQzYTEyNzIwODNjMDUwY2MyZWM2YjY4YTVmNjVhYzE5NGMyODggbGVnYWN5LXRydW5rCisyMjA4MSAyMjQ1NmQwZWU3Mzc5OGM0NzIyNjYzZjY3NzRmMWI5ZGQ4NjA0NDhlIGxlZ2FjeS10cnVuaworMjIwODIgYzdiYjk1NjNiMTQ5ODAzN2MzYTAyYmZlZWViNzMzMzNhNTIzYTAxMiBsZWdhY3ktdHJ1bmsKKzIyMDgzIDliMjkxY2E2NTQ2YzRiNGY5MjRmZTZmYzFiMmVjOWZmMjUzNmRjYzYgbGVnYWN5LXRydW5rCisyMjA4NCBmMTJlMWE3NjZhMTQyZDU0NzU1NDdkZDQzNTdkNzIxNjI1Mjk2YTM3IGxlZ2FjeS10cnVuaworMjIwODUgYWFhZmM4NTJjMmQ1M2Y4ZDI5MjUyZjc3ZTg5Mzg4NDdhNTIzMDY5MiBsZWdhY3ktdHJ1bmsKKzIyMDg2IGZiODM3YzVhZTVkM2YzNmIxODY5ZWYzMDkwYTU1OTA4NTBjNWQwODAgbGVnYWN5LXRydW5rCisyMjA4NyA1YmRiZTYxYTBjMjhiYjJjM2Y5NjA1ODUwZmRiZDEwZDJjMjcyNDhhIGxlZ2FjeS10cnVuaworMjIwODggNTliN2U4ZWNmYjk2NjczMjFkMjlmNGEzMzc2YmNiNjUxNDRhMjc1ZiBsZWdhY3ktdHJ1bmsKKzIyMDg5IDcxZmVhZTdiZjU2MDk0YmYzNDAxNzE5NGNmMGE2Yzk5OTFhMjFjMDIgbGVnYWN5LXRydW5rCisyMjA5MCBiZGJiN2M0ZGM2M2FkYzU3NzY3NTBhMTVkMmRkNmI2MzEwMWRlNmYzIGxlZ2FjeS10cnVuaworMjIwOTEgMjIxNTVhNzE4MjU0MTVlNzNiZjg1YWE5ZTJlMTQ3NzYwODA1NjJmMyBsZWdhY3ktdHJ1bmsKKzIyMDkyIGRlYWQ5ZmFiYmVmYjdiNTdhMDE5ZWNlYzRlOTU1NDBmMDFhMGM1ZjUgbGVnYWN5LXRydW5rCisyMjA5MyAwYjE2MjVhOWU4OWE3MmNmZWM2N2NmN2NlYTI4MmNmNzBlNWUxMzRhIGxlZ2FjeS10cnVuaworMjIwOTQgZDIwYTRjYTA3MDVjMWVhZDkzMDlkMzZhMjY0YTJhYTk0ZTEwYmE4NSBsZWdhY3ktdHJ1bmsKKzIyMDk1IDAxMzJhZjYzNTA2YjljZGUwZDdkNzZjNzFkOTI0ZmFhZDdmMmZmZGEgbGVnYWN5LXRydW5rCisyMjA5NiA4NTg0MjE3ZGRjOGQ2ZDIwODIxZmEyNzk4NzdjM2M5MWM4NzcwMzRjIGxlZ2FjeS10cnVuaworMjIwOTcgY2JhYmU1MjJiOGYxNjc2ZTVmN2E4MWUyNzFhYTgyM2QxMjExNTRiYyBsZWdhY3ktdHJ1bmsKKzIyMDk4IDIyZTgyMzE0NjNiYTZiMjNlMTVlNGRkYTE0NWM2ZGM5YWJjNmNmNjUgZGVzY3ItYnJhbmNoCisyMjA5OSBlZGYwNThiMTZkZGYzZmFkM2YyMjU1MGQ0NWQ1NmJiMjRhNDNjZjM4IGxlZ2FjeS10cnVuaworMjIxMDAgY2JmZGY2MjNjMjY2ZjY5M2ZkYTI5ZTU1MWNjZWIxNGI4N2U1YjQ2MyBsZWdhY3ktdHJ1bmsKKzIyMTAxIDVhZjFlZTQyMjU3NTI3YjUyNGFkNmFkOWMzZWY3MWEwYWMzOWQ0NjEgbGVnYWN5LXRydW5rCisyMjEwMiA3NjI4YWE4MTZhZGE5ZGE5NjhhMjRjMzUzNGQxMGJlOWIzMjNmYmYwIGxlZ2FjeS10cnVuaworMjIxMDMgMjkxMDQxNzNhMDcyZWJkNjNjMWNkZmU2NzJjZGZjYWEzMDg3NTAxZCBsZWdhY3ktdHJ1bmsKKzIyMTA0IDQ0M2E4NjIyZTg1MWFiY2Y2MmUyODY1ZmFjYzI1OTE3ZmEwMjg3NjQgbGVnYWN5LXRydW5rCisyMjEwNSA3OWM2NzZmOWIzNGE5MTQwYjk4NDdlNzljMDU4MTlhMDUwYjFkYjgzIGxlZ2FjeS10cnVuaworMjIxMDYgOTc1M2IwMjY5ZjNhYzBkZDY4NDBlYzhhMjE5NDNmZjJlYmY0OTZjMiBsZWdhY3ktdHJ1bmsKKzIyMTA3IDM0ZjAxYzZjYzgxODYxMzcyZWY5ODk4MGFhY2QzODM3OTZiYmQ4Y2YgbGVnYWN5LXRydW5rCisyMjEwOCA1NWI0NWI0N2ZjNDg3OGZiZjQ1NDQ4ZGM3Mzc5Mzg2ODljMmI0YzUyIGxlZ2FjeS10cnVuaworMjIxMDkgMzZlN2QxZWFiZDkyMWFiMDQzNGU3NTIwZGFmYWMxZDMxOTdiNGM0OCBsZWdhY3ktdHJ1bmsKKzIyMTEwIDkxNDEyMmZiZWFkMmRjMmRkYmE5OThiM2RkMWFjNDUzNGUwYzM4OWIgbGVnYWN5LXRydW5rCisyMjExMSBmNjFkZjhmMGNiNDM4YTY3NTM5NGU3MDk5YWE5NDNkZTI1OTBkZDY1IGxlZ2FjeS10cnVuaworMjIxMTIgZGVhZjdiMTM5YmM4ZjRiYmMwYzZjZDNlYTE4NTJmNzNhZTdkZjQ4ZSBkZXNjci1icmFuY2gKKzIyMTEzIGYwODIxODlhNDQ0Mjk0YjQ2ODk4ZjY1ZTVhOWQ2ZGQ1YjUzNjE4MzkgZGVzY3ItYnJhbmNoCisyMjExNCA1MTBmN2Y2YTg3N2VjZjc0YjU2M2ZlZmQ4NmU0OWM0MGIxNDZlZDRmIGxlZ2FjeS10cnVuaworMjIxMTUgMmJjNjQ4OTMyZDQ0ZmIxNTMzZGM0NjZiODcwYWY0MGQ0NDk4NDc3ZSBsZWdhY3ktdHJ1bmsKKzIyMTE2IGI3MzI2OTBmNTYxYzZlNzY1YjUwMzc1OGEwZTBlOTU2ZDNiYzU5OWQgbGVnYWN5LXRydW5rCisyMjExNyBlN2MzYzliZjUyYjI3ZDU4ZWFiNmM5YmJmMWExNTUwZGIzZjc0MWRjIGxlZ2FjeS10cnVuaworMjIxMTggNDJkZDYyNTFjYzNjYzRmMDFiZDQxMWViMDkxMzE5YzMzNzQyODQ1MiBsZWdhY3ktdHJ1bmsKKzIyMTE5IDcyYTM2OTFmMTA3MWZhZjJlMjYxMWJlOWJjMWQ3YmEyYjRiZmU0N2EgbGVnYWN5LXRydW5rCisyMjEyMCA1MmJkOWUxZGIzZDkwYTUyMTY5ZWUxYTI3ZTA2YWQ3YmZmMDMyNGY3IGRlc2NyLWJyYW5jaAorMjIxMjEgNTJlOTJjZmFiMjM3NmEzZDQ1MGEwOGQ5ODQ4ODFhYTFkZDIzNDI3NCBsZWdhY3ktdHJ1bmsKKzIyMTIyIDJmMjc4MzhkOGZjNTk0Mjc1ODYyNDg2ZjAzMzUwNTAxMzhlMDU3NDggbGVnYWN5LXRydW5rCisyMjEyMyAyZTQ5ZjBlOTJiYzVhYTVjOGI4NmZkZTliY2YyZWQzYmUzMmViMGU3IGxlZ2FjeS10cnVuaworMjIxMjQgMWVmZDY5YmYxODRjMzkwODUyM2IzOTE4NTc3NWE1YjEyZGNiMGIyZCBsZWdhY3ktdHJ1bmsKKzIyMTI1IGZhMDJmNzliYjQ5MWNjNzExMGY4NzRhNTA1YWIyMjhiYjYzNmFhMzEgbGVnYWN5LXRydW5rCisyMjEyNiAwYWExOTE2Y2YxMDM0OTFkYzdiNmQ0ZWNkODliYmFmNWQ2ZjM1ODdjIGxlZ2FjeS10cnVuaworMjIxMjcgOGUyZjYyOTZmZDdiNGE2NzVkNWMwYmE2YWMwMGFlMmY2YWNjZmVhZiBsZWdhY3ktdHJ1bmsKKzIyMTI4IGY0OWExMmU3ZTI0YTQwYTBmNDc0NTM0NzgyNDI5MThmZmIyNDY4ZDIgbGVnYWN5LXRydW5rCisyMjEyOSA0YmZkOGE1ZGEwYjFkZjFiN2Y3Nzg5ZDY0MTQ0YWQxM2E1ZDZlZmY0IGRlc2NyLWJyYW5jaAorMjIxMzAgMjNmNTViOWY0YmM3NDRiMTEwZjViNTU1ZjQ0MTRkOTQ1Mjg3MGJmMiBsZWdhY3ktdHJ1bmsKKzIyMTMxIDRhOGRlZDA4NzI2MmYyYzU2NmUwN2FkZDMwYjYxYzEwZDQ1YzU2YTMgbGVnYWN5LXRydW5rCisyMjEzMiAwZGVkYWU3YmUzYWExMDQ3MWJhYzBlZTk3Yzk2ZTZkZTA2NjU5YTMzIGRlc2NyLWJyYW5jaAorMjIxMzMgMGZkYzVlZWJlNDJkMWM1MTg3Yjk2NGM2YjUxMGI3NjExOWUwYzlhMSBkZXNjci1icmFuY2gKKzIyMTM0IDZjMDE4NWRmNzE0N2MzOTgzMDQ1MmY2YzVmYzM0OTY2YjhhNDA2YWMgbGVnYWN5LXRydW5rCisyMjEzNSBkYWI5NWNhOGFjZmMyYTRhNzA2NTIwNDVjNzU5YWFmOTMzNDMxNGViIGxlZ2FjeS10cnVuaworMjIxMzcgNDE5MDg2OTM3NzQ2NzVhYjZhMDFlODc4YmVhOWYzYmIyYzY1NDgyOCBkZXNjci1icmFuY2gKKzIyMTM4IDY1MDk3M2UyOTI2Y2ExZjQwNzgyZDFhNzMxMmJkMDgxY2I0MTc2ZDIgZGVzY3ItYnJhbmNoCisyMjEzOSAwOWRmMzI1NGI0OWQ3YzkzMDY1ODUzMDJmZTgxNWFiMGJkYjUzNDM5IGxlZ2FjeS10cnVuaworMjIxNDEgMTU0MWQ1YzZhOGYxODEyMDhhYTczNzZlNTc4YjA3YTA3MmM5ZWVkYiBsZWdhY3ktdHJ1bmsKKzIyMTQyIDkwMGUzODUyNGJmMjkxYjFjZDZhZWUyZTEzYjA5ODU5NmRmMzY0N2IgbGVnYWN5LXRydW5rCisyMjE0MyA3MTQ5MTczZThlZGNkYWM2YmZiMjZhZTU1M2MwZDAzYmE5OTIyNDYzIGxlZ2FjeS10cnVuaworMjIxNDQgZjg1OGY5ODdlNzcyYTI5MjAwNmU4ZjQ2MmNmZDA0NWM5NTRhYzZhOSBsZWdhY3ktdHJ1bmsKKzIyMTQ1IDZjMjFlOTM5NGI0NGY0ZmUxZWQ4OGQ2OGI3YzlhMmE3YzEzNmRiNjcgbGVnYWN5LXRydW5rCisyMjE0NiBmZTNiYzRhNGFkODQzNmU5YWUxZDhjNTMwOTA3YzMzMDA0ZmIzYzZiIGxlZ2FjeS10cnVuaworMjIxNDcgYTVlNGQ0YTMwYzk4Mzg1MzY3Njk5YzFkMmMzNzMwZTE0YWE2MjBlNyBsZWdhY3ktdHJ1bmsKKzIyMTQ4IDAxM2NmZmNmZDhhM2I0MDE5YWE2MzJkMGM1MjUyMWQxNDljYThhY2IgbGVnYWN5LXRydW5rCisyMjE0OSA5MGQwNmNiY2UyNmE0YjAxNDU3ODk1M2NkYzIxMjcyODBlMWQ0Njg1IGxlZ2FjeS10cnVuaworMjIxNTAgZTAxZDI5NjM5ZDhlNWQzYzdhNTdlMzdjMjdmNWY1NTE5NGI0NjdkYyBsZWdhY3ktdHJ1bmsKKzIyMTUxIGEwODE5NzA4ZmU5YzcyZDU4YjRmZTYxNzUwOGFmNTEwMzFhNGIyNWMgbGVnYWN5LXRydW5rCisyMjE1MiBmOGZkZDUwODNhZjM2NTkzODBmZDU1OTE0ZjA1YjUyMDk2YzY4ZjZlIGxlZ2FjeS10cnVuaworMjIxNTMgMmIxNGYxMzA4Mjc1NTI3ZDJiNGQ0ZWEyZTY2YTIzYjdmMjYyMjBjNiBsZWdhY3ktdHJ1bmsKKzIyMTU0IDEzNDZlY2YzMThmMjc3ZDBiZTUyY2FjMDk3NWM0M2VhMzA5ZGY2MWUgbGVnYWN5LXRydW5rCisyMjE1NSA5MzA2ZGFkZGMyNmZkYWI3ODU4MGNlMDY4Yzg5MWRmZWQ2MWM0YjNkIGxlZ2FjeS10cnVuaworMjIxNTYgMzg4ZGY0OWMxYzM4MjI4MjhjMzUzYWIxOTE0ZTZkOTY5NDQ2ZWIzMCByZWxlYXNlMjEtbWFpbnQKKzIyMTU3IDRkZGM1YWI5YmVjNDE5ZjYzMGMzYjRlNzQ4NGFjNzgzYmJkNDRjMmQgcmVsZWFzZTIxLW1haW50CisyMjE1OCBmNzJkNjFiMTI0NmVlMDFjMTMxODY4YTI5ZWU4OTE3MmJmOWUyYmNjIGxlZ2FjeS10cnVuaworMjIxNTkgZTkwYTY1OGE1OGQ0ZjYzM2FmYTE2MzhiOWMwYzA3M2NhZjVhMTVkNyBsZWdhY3ktdHJ1bmsKKzIyMTYwIDQ4ZTBmYjA1NWMzM2NhYmEyNDllMzc1ZTRiNzI5NmM5NWU4ODc0OWQgbGVnYWN5LXRydW5rCisyMjE2MSBmZWZjYzFlODBjZWUzNTYwYWI1YTcxMjRjZGMxNjcyYzcwZDk0MDFiIGxlZ2FjeS10cnVuaworMjIxNjIgMWRiNjkwMGEwNzgzNWEzZjVjM2U5ZWE4OTQ5NTI3NzQyN2RmZjdhOCBsZWdhY3ktdHJ1bmsKKzIyMTYzIGI3NjIyMjBhNjE1OWZjMzNjYzJlNzcyMTlmZDI0YTg3ZGEzZGZlNWYgbGVnYWN5LXRydW5rCisyMjE2NCBmMjg4NWIwZGRiYWViNjBhY2IwNjA4ZWJiNGFhMTgyOTMzYmM2NDM0IGxlZ2FjeS10cnVuaworMjIxNjUgNDc4OWMxMmE4OWYxYmY0NDMyM2JiMDdmM2Q4OWI4ZGFmY2FmNDZlOSBsZWdhY3ktdHJ1bmsKKzIyMTY2IGNmOTI1NDIxMDAxNWRiNmY5NjY0MWZiYmM5YmEyZTQ2OWExZGJjOWYgbGVnYWN5LXRydW5rCisyMjE2NyA5YWE1ZDY2Y2QxM2RjZmEzZDIyZTVkYjZkODA4ODBiMjI2M2E0YWQ0IGxlZ2FjeS10cnVuaworMjIxNjggZWVkOGE4YThmNjIyYzhkOTlkMzljYzg4MjZhMDE0YzYxNDBiOWYxNyBsZWdhY3ktdHJ1bmsKKzIyMTY5IGQ3NTkwMTIyZjlhMjYxMzczMTEzM2EzYjYyZTZkNGY2ZDA5YzQ4YjUgbGVnYWN5LXRydW5rCisyMjE3MCA5MzEzYjQ4ZjExYzNmOGM2N2JkMjcyODVmOTA1MTEwN2Y4NTU1MjY5IGxlZ2FjeS10cnVuaworMjIxNzEgOTE5ZTYwZDc3MzM0MmNhNGFhYmEzOTFhNDk5ZTU1YzYyOTJjMjFmOCBsZWdhY3ktdHJ1bmsKKzIyMTcyIGY5NDZiN2Y3ZDgzMThlZjMwNGQzZjU2NWU1MmQ5ZGIyOTg3YzBiOWIgbGVnYWN5LXRydW5rCisyMjE3MyBlZDYyYWQzMDgzNGViMGI1MzU1OGRhNzExYWRmNTIxNzY2MjkxNjMyIGxlZ2FjeS10cnVuaworMjIxNzQgMWFlNzE4OTc2YWM2ZGMxMThlYjI0YmYzNDc3ZGU0YWIyYWQyODViNSBsZWdhY3ktdHJ1bmsKKzIyMTc1IDBjMzA3ZmEzNDRiNWNhNjM1NjMxOTFhNDY4Njg3ZGIyMzcyY2RmZTEgbGVnYWN5LXRydW5rCisyMjE3NiBiMDBlN2IzOGY3N2YyNzUxZjRkNzUwYTcyNmM5ZDhkY2ViM2NhOTMxIGxlZ2FjeS10cnVuaworMjIxNzcgYmQ5NzJmYTg0MWM1ZmViNmFjZDQ3NDA1YTY4NjQ0OTQ1NDgzZGYwMCBsZWdhY3ktdHJ1bmsKKzIyMTc4IDljM2Q1Mzk1ZTNmZDkzMDkzOTJiYzZmZDNiM2YyZWIxZDNhMzk0MjUgbGVnYWN5LXRydW5rCisyMjE3OSBkMTQ0YzgxZWFmNDQ2ODBmOTUwNzZjODI1MzA1ZGNlMmFjMTllYjk1IGxlZ2FjeS10cnVuaworMjIxODAgZGM0YmU3YmQ2NzQ2MTA0MWUwMDE2OGMyNTQyNjIzNTRlNGY5ZTE5YSBsZWdhY3ktdHJ1bmsKKzIyMTgxIDY1MWU2Mzk0MjA4YzhkOTFkODMyYmNiNWVhODhjZmI4ZThhZWYxM2IgbGVnYWN5LXRydW5rCisyMjE4MiAxZTY4NmIwODk4YTJmNjg3M2VmM2UxYmI5ZmU2MzEwZTMzMzc2OWViIGxlZ2FjeS10cnVuaworMjIxODMgNDcxYTkwMTgxMjljM2ZkMTkxOTFkNjc3ZWY3NTA5NTA3ZDkzODZmMCBsZWdhY3ktdHJ1bmsKKzIyMTg0IGYxY2YyYTQ0NDE3NDlmYjIwMDIzMjllYWRmYzcxYmEwMjhkYzk0NGMgbGVnYWN5LXRydW5rCisyMjE4NSAzNDI4NDIxNjIwMWJlYTk5MzViNDE4MjNjMWU5ZDE5MzVlYWI2YzBjIGxlZ2FjeS10cnVuaworMjIxODYgM2RkOGU2NGY1MTJlODRhZmM0YzM4OGJmNDY1NGI4N2I0Y2ZiNzcxOSBsZWdhY3ktdHJ1bmsKKzIyMTg3IDllNGMxMjY3M2ZhYjQ0ZmJlNTI2ZWRiYzZiYmNlMDkyZDRjOWJlMDMgbGVnYWN5LXRydW5rCisyMjE4OCBkYWM5Y2NhNDkwMTIxYzFhYjYwYTUxYmFmY2FmNzJiMGQ3ZDgwOWRkIGxlZ2FjeS10cnVuaworMjIxODkgOGI5ZDg3YWY2MWViZGJmNjk1M2JmYTBhOGFlNWVjNDM0NTJhOTNiZiBsZWdhY3ktdHJ1bmsKKzIyMTkwIDExM2YwYjU3NDRjNDBjOTFmMDkwNTEwNDVmNDExMmE2MGY0OWQyMTcgbGVnYWN5LXRydW5rCisyMjE5MSAwMDkzNTAzMWIzNzNjNTQ5MDg2ZTJkMDM2ZGM3NjM3ZGZkNDhjZjg1IGxlZ2FjeS10cnVuaworMjIxOTIgYmE5ZTRmNTUxMzNmOTNiZTM2NDEyYjFjMzk2YWJkZGMyZWZjYzlmNyBsZWdhY3ktdHJ1bmsKKzIyMTkzIDlmNzg3NTlhNTFiMGY3M2M4MzhmODZjNTM1MDkwYjJmODBmYWRkMjggbGVnYWN5LXRydW5rCisyMjE5NCA0ZjRkODMwM2RlNjBjZjZjMDZmZGU0Zjg5ODJkN2I1ZTJlYTMyMWIxIGxlZ2FjeS10cnVuaworMjIxOTUgMDhjZDgxY2RmZmE5ZGQyZjRkNjY5MzkyOGUzNjdmNzZkMDhjMzg1YSBsZWdhY3ktdHJ1bmsKKzIyMTk2IGFjY2YxOTI1NDMxYzc3MGU4MzFmMTZiNTc0ZDVkZGU3YmIxZWNiNWIgbGVnYWN5LXRydW5rCisyMjE5NyAyYjExZDE2NmIwN2I3MWEwYzUwNzQ1NjM5ZjllOWVmMmZkODczMjkxIGxlZ2FjeS10cnVuaworMjIxOTggMzYwY2VjZTc2MTIzNTVlM2ZhZTRiZjRhYzI4YmI2ZDExYTIyMGVhYiBsZWdhY3ktdHJ1bmsKKzIyMTk5IDdmYTFmODdjYTZiMmQzZjYyYWI4YTg3OGNmZDFkNDIwMGFkODE2NjMgbGVnYWN5LXRydW5rCisyMjIwMCBiMGFhZjc4MGJjYTY2YzdkZjQxYzhlZDc5MjMzOTIyYWJhODY1NzZjIGxlZ2FjeS10cnVuaworMjIyMDEgMTE0YTkwYTQzZGI3ZTllODA3YmZkNDE1MjQ4MWZjZjg2NGIzMTZjZSBsZWdhY3ktdHJ1bmsKKzIyMjAyIDgwNTA5MGNlMzI4YTAwMTdjOGVlMDkyOTcwYzc5MWFlMjRmYTJjYTQgbGVnYWN5LXRydW5rCisyMjIwMyA5MDU5ZTdjMWQ4YjAxOGI3ZDE3MTVmN2U1ZDgyMWY1NjYxZWRiNGM1IGxlZ2FjeS10cnVuaworMjIyMDQgOWZjNGE1YWJiMzY5NDNhZmYzZTMzNGZjN2JjOWM3YzQ3N2QxZThiYiBsZWdhY3ktdHJ1bmsKKzIyMjA1IGFlNDNmOTliNDdlMWUyNzY2YmQyOTg4Njc1M2NlZWNhZjJmNjZkMjQgbGVnYWN5LXRydW5rCisyMjIwNiBhMmIzNTg3ZjU5MmE4ZjVkZGU5ZGU3YzY0ZDFiYzE3M2Q1OTBjNDljIGxlZ2FjeS10cnVuaworMjIyMDcgOGVhNjBlMmIwZjIxOWU0MjMzYmZiYTViZWExNjgxNDBlMTA4NTdkOCBsZWdhY3ktdHJ1bmsKKzIyMjA4IDI4ZjBlYThkNjI3ODFiNGFjMmM1NGU4ZmJhYWNlNDlmMDA3N2JiMzAgbGVnYWN5LXRydW5rCisyMjIwOSAyYWUzN2NmYjE4OWY5ZTlhYjQ4YjIyNTNmNWVkOTRjNjkyNjRjODIwIGxlZ2FjeS10cnVuaworMjIyMTAgMTlhM2M2YWY0Mzc0NDY0ZTAxNzJjMTZkNjQ5NWE0ZWRhYzZjOThiYSBsZWdhY3ktdHJ1bmsKKzIyMjExIGIxNmY4ZDAxYzUxZTNhMzNhODM1ODE2NWU1ZmFlNDJkZDU2YzQ4ZDQgbGVnYWN5LXRydW5rCisyMjIxMiBjOTQyYTk4MjFkMDk5NzM4NmI0ZTRhNWM2OWQ5ZmRkZmZlZTM0MDAyIGxlZ2FjeS10cnVuaworMjIyMTMgODExMTQyMDllZThlZWU4OWE2Mzk2MjhkZDU5MTU5NjczYTg4Yzc1MiBsZWdhY3ktdHJ1bmsKKzIyMjE0IGNlZmRjZDYwYThiMmIwMTY0NGNlYzdkZjYyZTRlMTQxM2RkYmUxOWUgbGVnYWN5LXRydW5rCisyMjIxNSBmNWI3YTFlYzRiOWYyYjFkNDY3ZDUxNjQ5YTgxOWFjNTA5NWYyZTZiIGxlZ2FjeS10cnVuaworMjIyMTYgMWJjNjdjZjU3ZDBhYjZhNmI3MzE2Mzg4MDZkNmQ5M2IwNmExNWFkOCBsZWdhY3ktdHJ1bmsKKzIyMjE3IGZlMjBkMWNmZWMzZDlhM2MzOWUxZmIxZTA4ZDZiZmNjZTU0ZjczYTYgbGVnYWN5LXRydW5rCisyMjIxOCBjMWRhYTk0YzIxZDgzMGUzMmU4YWMxODVmNTlkYTNjYTM4YzUzMWM4IGxlZ2FjeS10cnVuaworMjIyMTkgYmI4NWNjYmQ0ZmVlNTU0M2RlOTJlZjhhZWJkOWY5ZjQ3NGM3MWMwNyBsZWdhY3ktdHJ1bmsKKzIyMjIwIDdkMjdlMzg4ZWM2YzllZDAyMzUxNTk4NmE4YTE4NmQ1MmQzNmNhODIgbGVnYWN5LXRydW5rCisyMjIyMSBlYzY3NmUxNDA3M2Q3ZmNmYTUyMWNkODgxYmZkNDU4ZTc3MTY5ZTI3IGxlZ2FjeS10cnVuaworMjIyMjIgNTBkYTYzNzM0MWFlNTIyZmJhMmFjYjUyNWFlYzAxZjBkNTNlZWUzNiBsZWdhY3ktdHJ1bmsKKzIyMjIzIDAzODQ5OTQ2NjcyNzI4ZjFhN2MyYWIwN2RhMmYwMmU1YmQ2MWU5YTUgbGVnYWN5LXRydW5rCisyMjIyNCAwNzhjMTk2MWUxNzUxNDYwMGQ2NWZhOGM1MjEyYzY0YWIxODRkMGE1IGxlZ2FjeS10cnVuaworMjIyMjUgODIxZTM1NzA2YzA3MTU5ZjViMTEyMjMxYmU4YjM3NDdkMWM2Yjc3MSBsZWdhY3ktdHJ1bmsKKzIyMjI2IDMwYWUzYWZmMDNiZDk4NDg5OWY1YTcxMDI5NWU0M2M5ZDUxZmI3OGUgbGVnYWN5LXRydW5rCisyMjIyNyA2MDBhYzVkYmM2NjY0ZjU0YjYzMTU2MzI3MjA0Yjk2NDZmZWUwMDA2IGxlZ2FjeS10cnVuaworMjIyMjggZTU3NTRmMDQ4ZjBiYzM1ZmJjMDBlNDVmZjUxNDJmMmQzMzNiNGQ0NyBsZWdhY3ktdHJ1bmsKKzIyMjI5IGJhZDQwOGM3ZDlkNzg1NDA2Y2Q1YTliNjgzMjZiZjkyM2QzODA3MDYgbGVnYWN5LXRydW5rCisyMjIzMCA3YjFhMDgwNDE2MWVlZDg3MjQ1ZGJlZWZiY2IxODE4Nzc4MzY5MDAzIGxlZ2FjeS10cnVuaworMjIyMzEgMGFiOGY5MzdmZjY2NWI4NThkYWRiYjk3Mjk5NzEzNDliNGRkOWE4OSBsZWdhY3ktdHJ1bmsKKzIyMjMyIDIzODc2ZTJkODRiNmYxZTUxMjI1MDEwZWU1ZjM1NjVjMzI5YjEyYzkgbGVnYWN5LXRydW5rCisyMjIzMyA2MGE3NTAwMmE3NGNmZDAyYjU3Yjc5ZGIxYmQzMWZiZGVjYWY4ZDBiIGxlZ2FjeS10cnVuaworMjIyMzQgOTgzMTVmMGUxZDI2ZDc0MjdmNjdiNjAxZTY1ZTQ4ZDJlZTJhMTliMCBsZWdhY3ktdHJ1bmsKKzIyMjM1IDZiOGI2NWZjY2IwM2Q5ZjFmYzgzNmIxZmExODE5NmY1OGU5ZTY5OWEgbGVnYWN5LXRydW5rCisyMjIzNiAyNjNkY2FmMDBlZWRjZTBjZjJiNmNiNGQxOTI1ZGRjYzA4MTkzN2JmIGxlZ2FjeS10cnVuaworMjIyMzcgZTRiNjcwNWRjODRmOTBkZDE4NTAwNTI1ODdhZjg0M2U2OTU3ZDU2YyBsZWdhY3ktdHJ1bmsKKzIyMjM4IDllNTc4ZmNiOGRkYWI3M2ZkMTMwY2MyYWUyMDk3NjdiNzlhZDlkMGIgbGVnYWN5LXRydW5rCisyMjIzOSBkMzI2OGQ2MmU0NjIyMWQyNmRkZjhkOTc3YzgxMmE5ZDEwMDU0YzU4IGxlZ2FjeS10cnVuaworMjIyNDAgZDkxNWEwZWRiMmVhMzExMWQ3MzZhZDIwZGFhN2MzMjFkMTM4OGVhZSBsZWdhY3ktdHJ1bmsKKzIyMjQxIGIxNTMwN2QyOWJlN2JjNGZkZWM4ODM2NDJiMWJlNGZmMzI2MDA1ZTMgbGVnYWN5LXRydW5rCisyMjI0MiBjMTcyOWNkYzA3MzQwY2U2MjBkNGJlOGRlNzJkMjgwZmE3YWZiZDM4IGxlZ2FjeS10cnVuaworMjIyNDMgM2E3ZDY3ZWUxMDExM2U4ZmIyNTZkYzQ3MTkxZDRlYjI3Mjc4NDNjOSBsZWdhY3ktdHJ1bmsKKzIyMjQ0IDgwM2E3YTE0NDhiMmQxZmFmYTE1NDAwNzkzMmRlODUwNzY3MGE3M2YgbGVnYWN5LXRydW5rCisyMjI0NSAyZDBhMDRlMjc1ODFlOGFkYmRjZjFhMDQ5ZTUwM2MwYWY0NTkyOGM1IGxlZ2FjeS10cnVuaworMjIyNDYgZjY2Y2NmMmM2M2ViM2E5M2UwMmFkZmM5MGJiYzQ0OGU4NzcyY2RlNSBsZWdhY3ktdHJ1bmsKKzIyMjQ3IDRkZjcyZWE3OGFlODA2MjgwYzJlN2M3NjkyNGZmYzRkMjExZDNjZGMgbGVnYWN5LXRydW5rCisyMjI0OCA5YTg4ZTUwYmYxMTQ1NmUxOGU1ZTAwNDBkZGJjMGRjYmIwOWRhMjBjIGxlZ2FjeS10cnVuaworMjIyNDkgYWQyYjgwNzU1ZDJkNGM2YmRiZTQ3MGJmOTg3ZDJhNmEyYTdiNWJmYSBsZWdhY3ktdHJ1bmsKKzIyMjUwIDhkNDdhMjFkOTVlMDQyMDdjYzc0Yjk1NDhlZjIwODM5ZWYzM2UzN2QgbGVnYWN5LXRydW5rCisyMjI1MSA4ZTYwZjMwMDM3YTFmY2Y5OGQ4NTZhMjNhNWUxOGZiMjgxZTY0ZDQxIGxlZ2FjeS10cnVuaworMjIyNTIgNzQ1Nzc0ZGJlZDU4ZTc1ZjhiYWQ2MjJhZmZiODQ2N2NiZjU4NzhlNCBsZWdhY3ktdHJ1bmsKKzIyMjUzIDdkYjViNTQyM2NjZjk5MDNkYzFiMmZkM2Y1YzgzMTY3NmZiMzdkY2MgbGVnYWN5LXRydW5rCisyMjI1NCAzNTA1MGQxODhhNmFjMWMxYzQ5ZmQ3ZjljNDc5NTRjN2ZmZTk5NDRlIGxlZ2FjeS10cnVuaworMjIyNTUgZTI4MmQ2YjJiNzU4ZTY0ZjM0ZDI1MjI3Y2M1NDk1MWQ3YzJlYjg5NSBsZWdhY3ktdHJ1bmsKKzIyMjU2IDI4YjY0M2JhZDc0ZDJiNjg1MDdlYzNlYTY2YjJjZjM3NDM4MjIzYzEgbGVnYWN5LXRydW5rCisyMjI1NyAwYzVlNTE2OTRiMGY3ZWY0ZGZmNjQwN2EzMTZkNWEyOWVjNTgzNjhkIGxlZ2FjeS10cnVuaworMjIyNTggZjIwNzI3Y2MzZDBmMmYzYmYxMjRkYWUxODhmMGI5YWM1ZjIzOTE3OCBsZWdhY3ktdHJ1bmsKKzIyMjU5IDM5NjlmY2JmOTUwMDg2ZjRlNjcyZTA4ZjdhNTE2ZmJlNWE2NGJmZmEgbGVnYWN5LXRydW5rCisyMjI2MCAyYmIyNDJkYzY5ZDhlNDlhNzZkYmMwMTRhMGFkYjI3ZWZkNjJjMTY1IGxlZ2FjeS10cnVuaworMjIyNjEgMTFiYmEzMGU5YzI4NDBlMDQzMWU0NWY3NmIzZDdiMWI1M2YwODZhNCBsZWdhY3ktdHJ1bmsKKzIyMjYyIGM5MGYwMDM2MTA5ZDRiYWE3MWFjNjIxZjBiN2UxMDgxMDQyYThhNTMgbGVnYWN5LXRydW5rCisyMjI2MyBhMzA3N2Y5NmQ0Nzg5NTlmMmQxNGU1Y2ZjOTFjMGJiYjI4MTdjNjQ4IGxlZ2FjeS10cnVuaworMjIyNjQgNjVmZTZiMDcyNDdiMDA3MDdiNWM4OTRhNDdhODcyOThkMjgzMGEwNyBsZWdhY3ktdHJ1bmsKKzIyMjY1IGY5NDk0MTM1YjU3OTA5NWQwYmNiZDJlZDdiODY2YWQxYzk3ZTQzNTkgbGVnYWN5LXRydW5rCisyMjI2NiBjOTc5NjI1ZmViNDk2ODkxZTU0Mjk3ZmY2Njk5NzI0MDUxYmM1MzYxIGxlZ2FjeS10cnVuaworMjIyNjcgOGJkMDZlMzI0OWJiNWUwYzFiOThhMDg0YWViOGIxOGY0NDI2Njc2ZCBsZWdhY3ktdHJ1bmsKKzIyMjY4IGY1MWIxM2JmNWQ1NGY5ZjJhOGUwZGFhNDBlYTRlMGQ5YmE0M2ZjYmUgbGVnYWN5LXRydW5rCisyMjI2OSBlNDI2MjMwZWE1NzMxYzlmMTYxMTU2MmEyZTlmOWYxZWVkZGJjZDVjIGxlZ2FjeS10cnVuaworMjIyNzAgOWNjNjdhYWZlYzZjMTg4MDAyYmY5NGRhZGU5ODg3OTNlN2RhMzYxYyBsZWdhY3ktdHJ1bmsKKzIyMjcxIGU1N2E0NjE0NDY5ZTZmNGNiMDM3YmNjOTk3YzE5NDg2MjY1NjhjN2IgbGVnYWN5LXRydW5rCisyMjI3MiBhYjJmODA5NWM0ZmNjNmQwMmI4M2E0OWE5YmI1NTFjOTJjZWM0OTg1IGxlZ2FjeS10cnVuaworMjIyNzMgYTFiNGYzYTFlZTA3OTY1NWNiZWI1Y2JhOTM4NGNiZTA1ODQxNjI3OSBsZWdhY3ktdHJ1bmsKKzIyMjc0IGQ3OTg2NWMwZjgwNDU4OWQ4YjdiYTFjY2ZkMzI1ZTBlMGI4YTNjOTkgbGVnYWN5LXRydW5rCisyMjI3NSBkMDA4MDJjNzRiYTRkYzQxOTAyNDFlMzA0NGZkMDViOTgyOTUzNWUxIGxlZ2FjeS10cnVuaworMjIyNzYgYjYyYzgwZDU4ZDFlYzNiZTVkMDc3NzdiNDVlM2U4NmFlZjc3YTg5NCBsZWdhY3ktdHJ1bmsKKzIyMjc3IDM5YTczYzY3NzNmMTJlZDk5YmJiMGRiNmU5MThjODE5ZjdiNzBlN2IgbGVnYWN5LXRydW5rCisyMjI3OCA3NjQ5MjNkOTg1YTc2ODE0ZTRhN2M5MmJlOTRkN2ZjZDNlM2Q0ZmYzIGxlZ2FjeS10cnVuaworMjIyNzkgMzEwYTkxNzBhYWQ0NzZkYWUxMmQ2YzQ5OGYwM2RlNWVhNDZkNDM0ZSBsZWdhY3ktdHJ1bmsKKzIyMjgwIGVmZGRjZjcxOWZmMmVmYzcyYTI1ZmQ3MTRkN2Q1MzE4YzFhZjkwNzQgbGVnYWN5LXRydW5rCisyMjI4MSA5NGNhOGViYTdlNGYwOTdiYTE2MjBkMjQ1ZWU2ODhmMzYyZDAwNzQ0IGxlZ2FjeS10cnVuaworMjIyODIgZTJlNTg5ZmVhZDMwZjFhZDhmZTc0YzIxN2QwMzViZDc5NmRjNjA4NSBsZWdhY3ktdHJ1bmsKKzIyMjgzIGY3NTEyNWVhZDBhMjNiOTYzNDgwNmFhYzFlODZiYzViNjBjOTA1YzAgbGVnYWN5LXRydW5rCisyMjI4NCBjM2U4ZjQ3ZmU3Yzg0ZGY1NWM2YzczMzI3MzM1ZTA4NWNkMzQ0NmMwIGxlZ2FjeS10cnVuaworMjIyODUgMGE5Y2U4MWRlMzk5OTE2YTcxY2FjYzRiOTljMzM2ZDBhZTVhNWZjNSBsZWdhY3ktdHJ1bmsKKzIyMjg2IGNiOGZkY2U5ZTY1YTZkMjljOTk5YTU2YjNlMThlYjhkM2IxZDNiZWMgbGVnYWN5LXRydW5rCisyMjI4NyAyN2I0ZGJkNDI4ZmU3ZDViMDA2NmU5YmNjZjhlN2ZjMTk1ZWMzMjBiIGxlZ2FjeS10cnVuaworMjIyODggMzZjYTM3NmU1ODY0NjVlZGUwODhmODc2MTE1Y2QwNDFjZGExZGFjYyBsZWdhY3ktdHJ1bmsKKzIyMjg5IDg4ZDEyNGM3NDc2NjA2ZjZkMmMzMjIwZmJjNTE4MGVhY2M2OTM5OWYgbGVnYWN5LXRydW5rCisyMjI5MCA1YzI3ZjBlNGY1MGY3MzZlZjg1ZTYxNjdhN2U3MWMwMDllZTRiMTRjIGxlZ2FjeS10cnVuaworMjIyOTEgOWY3ODUwNzNlNDhiZGYzYzQ5ZGY0M2EyYmNkYTc0NmEwMzRlZWE1MCBsZWdhY3ktdHJ1bmsKKzIyMjkyIDZlOTU4ZDVlOTg4YmQwNWMzNDZjNzM1MmQ1MzA3ZDkzOGQwMDhhZTkgbGVnYWN5LXRydW5rCisyMjI5MyBmM2UyNzhiYzQzOWUyNzA4YTFhZDA3NDIyYzljMjBjNjAyZTRlOWYwIGxlZ2FjeS10cnVuaworMjIyOTQgOTZlYmYyYjg4NmY3NjgyOWI0Zjk3OWE5NzYzYTgxY2NhYmFiYzM0MiBsZWdhY3ktdHJ1bmsKKzIyMjk1IDE5NjBjZWVjMWEwMGJhNTYyMzkxNGEwYWY0MzBjZTIzYzBmODg2ZDYgbGVnYWN5LXRydW5rCisyMjI5NiBjNGIzMWJlN2UwODBiOTViYzk2ZWUxYjE5YTlhMGVkODU0OGU0NzRkIGxlZ2FjeS10cnVuaworMjIyOTcgZTQxMWJmYjlkYjU3NjRhYmI0NWUzNzVlYTgzNTc3NGZiNDMyZGVlZiBsZWdhY3ktdHJ1bmsKKzIyMjk4IDZmYWVkNjE1YjA1OGRmYzAyYTI5YTY1YjMwYmUxYWQ0ZWRiOGQ3MzYgbGVnYWN5LXRydW5rCisyMjI5OSBlNzlmZDM5MzRmNjEwMjdmZjA0NDkzYWVhOWQ1ZDc1YjhmYTZhYmNhIGxlZ2FjeS10cnVuaworMjIzMDAgOTdkZTg2OGFkMGY0MDI4NDNjNTZjMTE1Njc4OWZiMWYwNmU0ZDM5NCBsZWdhY3ktdHJ1bmsKKzIyMzAxIDhlYmY3MWUxZWQyOThlYTkyMWI2ODIxY2FiNjVlOTgyYzI2Yzk4MzIgbGVnYWN5LXRydW5rCisyMjMwMiAxMWE5NzY3ZTVkOGE1M2YyNWU0YzE1NTdiYzhhMzE3NzY4ZjBiMzI1IGxlZ2FjeS10cnVuaworMjIzMDMgNDVjY2YzYjg4OWI1MDM2OGRkMDE1ZmE5MGFhYzc3NzkwM2IyMGQ0OSBsZWdhY3ktdHJ1bmsKKzIyMzA0IDllNmY3ODA0ZWYxNDVkZDhjMzc1NjNmNTdiMzNhNjI4MTQ3OWMyNjYgbGVnYWN5LXRydW5rCisyMjMwNSBjOTVmMGExMmI1MWE1OWQwNmE3NTFiZjc2MDlkMGEwN2UwZjc2YzQxIGxlZ2FjeS10cnVuaworMjIzMDYgZGU1ZDdhOTQyOGVmOTBjYjdmMzk0YWE1MTY2NTMxYjFiMzQ4ZTE4ZiBsZWdhY3ktdHJ1bmsKKzIyMzA3IGMyMzg3NDVlMGFhZTZjMDY2Y2UyMjA4Mzk1MjI5ZmE3N2Y4MjdjNjkgbGVnYWN5LXRydW5rCisyMjMwOCA2MzUwYmJhYTYzMmE3NTVkODM5YzNkNjZjYTBkODQ0ZmYxMDVkZjllIGxlZ2FjeS10cnVuaworMjIzMDkgOWVjNTYxMWNmZTljMDMzMDM0MzJiYTc1OTBjOWExM2QxZmZkMmUwNSBsZWdhY3ktdHJ1bmsKKzIyMzEwIDM0MjBjOWU2YWYxMTI5ZTViYTY0NTgwZjdjZDcxOWIxNjQ2NGEwOWEgbGVnYWN5LXRydW5rCisyMjMxMSA4NzVhYzhlOTM1NDI0YmQ2YjAzNTMyODQxNGIxNzJkY2JiZjg4MWE4IGxlZ2FjeS10cnVuaworMjIzMTIgZWVhOGRmYmJlZTg2MDI5MGY3ODMxZmI5ZTJhN2U3ZTZiNDA3Njg0MCBsZWdhY3ktdHJ1bmsKKzIyMzEzIDEwZWMzOTY4NDI4ZGM4M2M4NWMyMTFkZjYwMDNhZGM4NGE4MjgxYzYgbGVnYWN5LXRydW5rCisyMjMxNCAxMzFhMDFiNmY2YzcxNGU1OTE4YmVlZTVkNTBhODhjMDZkNzI2ODY0IGxlZ2FjeS10cnVuaworMjIzMTUgYjc5ODRjOWJiZjJjZGUwMzhiNDNhMDA2YTVjNTcwYmMwYWE3NTdhYSBsZWdhY3ktdHJ1bmsKKzIyMzE2IDM3M2NjNTk0MTU5MDBiNDRiNTliZTI3MzZjYTA3NDUzZjBjZTM0MWIgbGVnYWN5LXRydW5rCisyMjMxNyAwMjAxYmI1ZTNiODM2YjM3YjZmYTVjYzRiN2NmY2NjZmFiY2EyOGRmIGxlZ2FjeS10cnVuaworMjIzMTggNmJhNDQxNTA3MjIwNGE2MWJjMjdiMThlMjljY2ViNzAwYjk0NGNiOSBsZWdhY3ktdHJ1bmsKKzIyMzE5IGI1NTQ3OGJkOTE2NWM0ZmUzOWY0MjY2MmY3Zjg0MjhlYTE5ZWE0OGMgbGVnYWN5LXRydW5rCisyMjMyMCBiMzU1Mzc2ZDA3MzEyNzhhZWM1ZmFkMWU5Mzk5MmJhODc4OTdkOTMyIGxlZ2FjeS10cnVuaworMjIzMjEgNzgyNmNjMzdhMjM0YjhiMTBiZmE1ZTVhZDg1OTc4ZjYzYzM5OTE2YSBsZWdhY3ktdHJ1bmsKKzIyMzIyIDE3NTI1YjZjNTMyYzU5MjRlNjFmODJjMWMzNzE0YzU5NzFiZTk3OGEgbGVnYWN5LXRydW5rCisyMjMyMyAxM2QwZjM0YjZhMTYwOTk5ZmVjMTFiZjc1MTlmODk2NDAwNzc3MDQyIGxlZ2FjeS10cnVuaworMjIzMjQgOGNiZjk4NGM5YzEzZjQ3NWE2YzA4ZjBhNzk2NGY4MDRjNTg5NDViZiBsZWdhY3ktdHJ1bmsKKzIyMzI1IDkxMjk5NDE4YjcyZGM5YThiZmNiMmU2MTI2MTJiMmU3MDUxNTI5OWMgbGVnYWN5LXRydW5rCisyMjMyNiA2MDBhOWEyYjdhMTgzMTMwZjBiNjRmZGUyYzBmMTJlY2NhYmU4ZDZjIGxlZ2FjeS10cnVuaworMjIzMjcgOTU1MTVjNmI2OTRhYjVjZmFkZGM2NWU0ZTUzMjI4N2MyODAwZGQ1OCByZWxlYXNlMjEtbWFpbnQKKzIyMzI4IDc3ZTQwNWYzYTk0MmE5MTdmZjFlNDU4YzYxMDczYWIxZjhlOTgxZjkgbGVnYWN5LXRydW5rCisyMjMyOSA2NzI5YmYzMGQzYWU1YjE4ZGY2NTY1MjZlNTE0MDM0ZTgyNDRhN2ZmIGxlZ2FjeS10cnVuaworMjIzMzAgZTA4NDdiYTFkNmY0ZWIwNmEzZTg2ODE0NzRmNGFhODFkOGM0MzQ4ZiBsZWdhY3ktdHJ1bmsKKzIyMzMxIGFmNDgyMDU1ZDVjZTQ5MGEwZGNjYmRmNmJjZDUzMTAwYzY2MGU0NzMgbGVnYWN5LXRydW5rCisyMjMzMiBmOGI1MWM4Y2EwODI2MzE4YzZmMjg3YTAzYWVlYmFlNTg0ZGM5Nzg5IGxlZ2FjeS10cnVuaworMjIzMzMgNjdiZTNhNjhmZGU0OTI0MTRiYTIyMzcyZWY0MzM1MDhlYTkzOTQ1ZiBsZWdhY3ktdHJ1bmsKKzIyMzM0IDc4NzUyZWFlMTMyZTFiMmNhOWQxNzMxYWFmOWM3NWUzMjAxZjFhMGMgbGVnYWN5LXRydW5rCisyMjMzNSA0OTAxYTkzNTQ5MGRkODZiYjQwNzJlYWZkMTQ5NjFhNTYxNzE2NzZmIGxlZ2FjeS10cnVuaworMjIzMzYgYzM5NTlmNmU0MDQ0NzhiZDU2MzM5YTNlMTZjMDMxYTYyYTAyMTZmZCBsZWdhY3ktdHJ1bmsKKzIyMzM3IDk1N2RkNjQ2YjViNzQzNGZkODlhMzA2MTc0MDc3YjMxMmI2NTIyYmQgbGVnYWN5LXRydW5rCisyMjMzOCA2NzY5OGQ2ODkyMDMyMGZhOGUyMWFlZTNlZmVmYjAxNGE2YjgyYTNmIGxlZ2FjeS10cnVuaworMjIzMzkgNDBhMTdkOTUwMGE4YjZlZTdmMjk0ZjYzYjI0NmNkMzJiYWE3YzUyOCBsZWdhY3ktdHJ1bmsKKzIyMzQwIDk4YmJhOTgzYmZkMzdjZmY5OTA5MmRiNzAyNDlmNDg5NGE1YzNiYTYgbGVnYWN5LXRydW5rCisyMjM0MSBkOTgxMjE5MzBlNzA2MWY0Y2JmNzI1MmYwN2Y3YzQwYWQ1YTQ3MjhkIGxlZ2FjeS10cnVuaworMjIzNDIgM2Y4YTU2ZjUyY2Q2MWJiYTU1Yzk4MGViZDk0YzVlOTE0NzliYjAzMCBsZWdhY3ktdHJ1bmsKKzIyMzQzIDY0NjNjZDlkYjJmY2VlY2Y1OGMyZTY4ZDQzOTU5MzIwOGQ1ZGUwMTUgbGVnYWN5LXRydW5rCisyMjM0NCBmYjEyZWE5MjkwYjJkMjE3MjkxNmFhMzVjMzJhNzMxYzFmOTAyZTA1IGxlZ2FjeS10cnVuaworMjIzNDUgODE1ZTc4MTI1MzU3YWY3OThkNTgyODU1NWU1MTkwZTU2ZTIyMjUwYyBsZWdhY3ktdHJ1bmsKKzIyMzQ2IDRhOGFiNjc3NzNhOWM2YzUzYTUzMDVjZGQ2MThiNzA2YjUwZTYzYjggbGVnYWN5LXRydW5rCisyMjM0NyA4YzM3OGY5MDg2Y2Q3M2I1NGJmYmIyMWJiZGUwNjY4MDJjMDNjZDNjIGxlZ2FjeS10cnVuaworMjIzNDggZTAwMWE5Y2RlNmJhZjZjOGFjZGI2ZTVhMmRlOTM3ZGVkOWQ4YmY2NSBsZWdhY3ktdHJ1bmsKKzIyMzQ5IDJkNjdkMjM4ZDRlOTE4YmFiZWMxYjM0YTI2MGVjMTE1YWMyZDNkMzUgbGVnYWN5LXRydW5rCisyMjM1MCA4NTI5MmQ5NTllMWI4NzdlOTU3ODM5ZWI1MTY1ZmVjMzNiNzNkZDBhIGxlZ2FjeS10cnVuaworMjIzNTEgMDhjZmQ4ZTk5ODA2NjI4NDE5OTIzY2JkYmJlMGQ4NzkzZGEwMTM0YSBsZWdhY3ktdHJ1bmsKKzIyMzUyIGYwZDUyYThmZGU1ZmU4ZDk5Mzg5ZDE1YjFmNTFlNTViYjQ1YTJmMWYgbGVnYWN5LXRydW5rCisyMjM1MyBlZGY4ZDJkMWE5MGI2OTg5M2Q1YWU2YjU4ZTA0M2Y4YmFhOGMzOWRlIGxlZ2FjeS10cnVuaworMjIzNTQgMmYzYjE4MzA5Y2NlNjc4YzQ2ZmNkZWNiNjY4NDU0YzU2NGYwMmIxMyBsZWdhY3ktdHJ1bmsKKzIyMzU1IDgwOWFlYzY0YTc4ZWJhMmY4MTAyOWMyYWI0ZTkyOWE3OGFjYjFkODAgbGVnYWN5LXRydW5rCisyMjM1NiA0ODFiODFkMzAwZGY4MmU5NGU5ODBmNDViYzExMzk2ZGZjNTU4YzliIGxlZ2FjeS10cnVuaworMjIzNTcgM2YzNGY3MjRmMDE0ODliY2JkNjE5M2U4OGFkMDY2NWEwM2NkYWY4MyBsZWdhY3ktdHJ1bmsKKzIyMzU4IGNkNDQyNTQzNjBiNmVhOTRjN2Y0ZDE3ZGMyMjI2ZWNlZjFiZjVlNTEgbGVnYWN5LXRydW5rCisyMjM1OSAxZTZmNGJiNjUwNjlkMjNlMjRjNjAwM2JkNjBhZjZiOTZiNmI5MWUxIGxlZ2FjeS10cnVuaworMjIzNjAgNjRkNGFkNzNhODg3NWUwZTgxODIxMzBkNDBhZDA5Y2NiZTc5NmJjZiBsZWdhY3ktdHJ1bmsKKzIyMzYxIDdhMWVmNjc1ZDhhY2YwNDRhZDAxY2E0MDhiYzc3YmFhMDVjZTQwOTMgbGVnYWN5LXRydW5rCisyMjM2MiAyZjQxYzk1MmJlYjA1OGVkMzhmNjkzM2ZlYmY1YTAxM2QwNDcwYTQyIGxlZ2FjeS10cnVuaworMjIzNjMgNzc2NjI4ZWVhOGY3MzY3NDYwZmFkMDlkNTNhZGQ0YzY5NWY3ODU1NiBsZWdhY3ktdHJ1bmsKKzIyMzY0IGI3NjU4ZTY2NWQyZWM3YTM5ODc0ZDhmZmM3N2JhMTNhMTg5MWYwYTMgbGVnYWN5LXRydW5rCisyMjM2NSA5N2EzZDNkNzAyOWY4ZmIyNmIyNDQ1MGRlZGM1NDdmYWUxOWU0NTcyIGxlZ2FjeS10cnVuaworMjIzNjYgMzUzNzA2MmIzZGMxYmUwODFkNGI4ZTQ2ODI3MTRlNGQ1YzFmYThmZiBsZWdhY3ktdHJ1bmsKKzIyMzY3IDlkMDI0YWUwNTgzN2M5NGJlODY1M2VjZDEyM2U4NjljNjRiOGE1NGMgbGVnYWN5LXRydW5rCisyMjM2OCBkNjRlMDU5Y2QxOTlkYTM4ZWExMmY2NDM3YTRjMjBkY2E4YjE1MWRkIGxlZ2FjeS10cnVuaworMjIzNjkgYjA2ZDlkYmRhZjhmYmU3NWJiMzEzMThjYjUzNDBhZjk5MDQxYmFjOCBsZWdhY3ktdHJ1bmsKKzIyMzcwIGIxNjBmYTYzZjQwYzU3YTQ0MTM2ODQwNGY1MWI1ZWQxYjAzYjlhMTEgbGVnYWN5LXRydW5rCisyMjM3MSA1ZDZiMmMxN2VhMmNkN2E4NzE4MTIwMDY4ZjM2NWM2OTljZGM4NTEzIGxlZ2FjeS10cnVuaworMjIzNzIgMDM5ZTNkMjZlYTM1Y2E2MTMzOGFhMjUxMDk2OWRlODYzOWZlNjcwOSBsZWdhY3ktdHJ1bmsKKzIyMzczIDY3ZjM1NGQ0MzQ3ZDU4MjI4MjM2YjZhYThkZjVmNWViYWMwODhlOTggbGVnYWN5LXRydW5rCisyMjM3NCAzMDg2MGJlM2FlN2JlOWY0ZGRmNWYxN2M2MGI3ZGFlNTJiNDc1NGIxIGxlZ2FjeS10cnVuaworMjIzNzUgODAyYzRmOTQwYTRlYTMxYTA5OTM2MWIzYTZjMDAzYzI0OWExYTIzZSBsZWdhY3ktdHJ1bmsKKzIyMzc2IDk2NjEwOTNkM2UyYWZmYzNmNzY5MzAzNzBmZWM1MjkxZGE3Nzk1NTAgbGVnYWN5LXRydW5rCisyMjM3NyA4MWY0Y2RmODY4NTU3MjI2MmIyYjk4MWU5ZDVjNTU1OWFkOTc3ZWZjIGxlZ2FjeS10cnVuaworMjIzNzggMmY2NTkzYmY1OGFmYmY5M2ZkYTQ2ZDZiNTA0NWEwNjc0MGQ3ODM2NCBsZWdhY3ktdHJ1bmsKKzIyMzc5IGNiMzQ2YmFlZGFkNmM0YTQxOGJjYmNkODA2MjE0MGE1YjFhNWU5NGUgbGVnYWN5LXRydW5rCisyMjM4MCBmMGRiMzQ1NjIxYmE3ZWZjYWYyZDAyNzUzYzExNDRiODI5NWI3YjY4IGxlZ2FjeS10cnVuaworMjIzODEgNzA0YWQ4MzRkZTI3Njk2YmU1YTUwZTkxZWRkYmU2ODczMDViOWI1NCByZWxlYXNlMjEtbWFpbnQKKzIyMzgyIGIwMDAyZDdjMjJiMWYwY2RjYTk2ZWE1NTExODI1ZmIwMDNkYmQxMjIgbGVnYWN5LXRydW5rCisyMjM4MyBmZmY2YzY2Mjg1OWQ5YzBhMDliODgxYTdkYmMwM2IxNjE1ZWIyOTRmIGxlZ2FjeS10cnVuaworMjIzODQgNTBmODhlZTcxZDQ1YTNkN2YyODA3MjA2OWJiNDE4ZDM3MzZkYTI4ZSBsZWdhY3ktdHJ1bmsKKzIyMzg1IGNhMTJlMWUzMzNlYTEwNDAzNjAyODkxMzllZTM3Yjg4NWM0OGQyNDYgbGVnYWN5LXRydW5rCisyMjM4NiA2MzcwYTBmOTg4ZjBkM2Y2NWEyMTc5YzlhZjY5ZjZlOTE2YWJjMjM5IGxlZ2FjeS10cnVuaworMjIzODcgZmRlM2IwZjcyZTM4OTAyZWVjZTU3OGNkOGE0MzU1ZTEzZTQ3NTYwZCBsZWdhY3ktdHJ1bmsKKzIyMzg4IDFkNDYyYjczNzgxMGRjODIwZDk5N2YyZTgxMzQ2M2IxNWViYmM1NTIgbGVnYWN5LXRydW5rCisyMjM4OSBmYzM5YzIyYjVhN2FkMTViNDc0OGVjNWUxMDA3OGVkYTRkOTZjYzdjIGxlZ2FjeS10cnVuaworMjIzOTAgYjE0OTUxY2QyNTY3M2E2MDE2NmM3MGU4YTQ5MTQ3NTZlMWExNmMxZCBsZWdhY3ktdHJ1bmsKKzIyMzkyIDI5NjdjYTk2ZDA3ZWU3ZWUwOTk3YmI2ODA4MzkxNTU3NDZjNWM5ZjQgbGVnYWN5LXRydW5rCisyMjM5MyA3OGQwMGY3MDIzYTIxNmYxYjc3NTgyMTM2OGJmZTFmMGExZjZkYWEwIGxlZ2FjeS10cnVuaworMjIzOTQgY2RkMGM3YTQ1NTc1YTI5MTFmOTViOTBjY2YzOWI0ZmZmOWRlYzljMiBsZWdhY3ktdHJ1bmsKKzIyMzk1IDMwZjhiNjU0YzJlNWJmZjNjZGFmMTJhOWIxODEwMWNkNWRmNWMwMTYgbGVnYWN5LXRydW5rCisyMjM5NiBiY2ZlMzBjZDFmMGRlMTZjOWVkOTU4MmM0Yzg3MDdkYjg0ZTg4NGVmIGxlZ2FjeS10cnVuaworMjIzOTcgMTE1ZTQwOTlmM2Q5NzlmYjBkZWI0NGM5YjZiM2IzOTZmZmYyMTBkNyBsZWdhY3ktdHJ1bmsKKzIyMzk4IGJlZTc1NTcyMTNiMjI5OTMyOTY0NjNkODg5MDMyMzllMmM5NmM3ZjkgbGVnYWN5LXRydW5rCisyMjM5OSBhOTdjODA2NGM5ZDgzYTQxNThhN2FlNjkyZWQ5ODhiMWYzNzEzNTNiIGxlZ2FjeS10cnVuaworMjI0MDAgNjgwMjMyZmI2MWYzMDIwN2YxZGM3ZmZkMjc0ZjhkNDY5YWE1OWZjZiBsZWdhY3ktdHJ1bmsKKzIyNDAxIDA5NWM4OWE4MjVhOTBhMWJmOTdkODgxMTViMDU1NjYwODEzYjdhYzUgbGVnYWN5LXRydW5rCisyMjQwMiA3ZTlmNWM1OWU5ZjI3ZjAyNjRkYTI2NTcwNDc0ZjlhZDM1YWY0ZWVlIGxlZ2FjeS10cnVuaworMjI0MDMgN2U0NDg3M2RhZjdiZGMzN2JhMWVmYzkzYjFmMjIzMTg5ZGJkYzFkNyBsZWdhY3ktdHJ1bmsKKzIyNDA0IDMwMWJjYjAxYjUwMzQ1ZjFhZDYwMzc0OWRmODZiNzhhZDk0ZmNhMmUgbGVnYWN5LXRydW5rCisyMjQwNSAwMWE5Yjc4MDcxNjBiMTgxMDhhMzg5NDJiN2YzMTIwM2ZiNjhmN2NjIGxlZ2FjeS10cnVuaworMjI0MDYgM2MxYzk5NDhmZjY1NTdjZWRjMGNjNDJmNGNiMjg4YjVkYzkwNmJmNiBsZWdhY3ktdHJ1bmsKKzIyNDA3IDM4MzdkY2NkMTFjYWQzNTI3NTAwZGExMjRhZmYzODBhODQ3NTdjODUgbGVnYWN5LXRydW5rCisyMjQwOCA1MGZiNDY4M2E0NjE4NjM3OWZkNTdiMzE4ZGNjZTc0MzNkMzEwZWZiIGxlZ2FjeS10cnVuaworMjI0MDkgMmM0YzJjYWFiY2ZjZDkzYjM0YmYyMzljZDJlYjczZmRlMzQxOGU4ZiBsZWdhY3ktdHJ1bmsKKzIyNDEwIDQ3YTQ1ZGEwM2IwOWFjODEyNWZjNTA3NWNlMjc5OTUzMDkyNzdhNDIgbGVnYWN5LXRydW5rCisyMjQxMSBjZDEzMTBlODdmZTIxNTVmMzQzYzVhNTc4OTM4YmFhODg1ZjY3OGNmIGxlZ2FjeS10cnVuaworMjI0MTIgNjdkY2YwNGZhNzU0MTg1NGM1YWFhZTgxOGY5NmRmNjY2Nzc3MDhmYyBsZWdhY3ktdHJ1bmsKKzIyNDEzIGFjYzBmZmFiMDc3MWM5MDM3NDM4ZGZiZTk1NDc5ODNkNWQwNzQ1ODkgbGVnYWN5LXRydW5rCisyMjQxNCBkZTFjMmQ0ZDcyYmExNzdhMmE4ZmUzYTA2ZGZmNDkzMjEzNGRhMDQzIGxlZ2FjeS10cnVuaworMjI0MTUgZmIxNTNlMzA2MTUyODg2ZTM0MGQ1YmQxZGFhNDc1ZTQ0NWVjMzcwOSBsZWdhY3ktdHJ1bmsKKzIyNDE2IDdiNTNmYjNiYTAxMTkyYmVhMDQ5MzExMzU2YTQwY2RmYTAwNmI3NGIgbGVnYWN5LXRydW5rCisyMjQxNyA4NjkxNDg0YzViZWY1MzNkZGEwNGNhZGJmZDU1NTIyZDIxODFmM2VkIGxlZ2FjeS10cnVuaworMjI0MTggYjQ4NGIyMDdlOTY0MTllODBjNWIzYzQ2MmRiMTY0OTUzMDU0MzZjMCBsZWdhY3ktdHJ1bmsKKzIyNDE5IDRkZDM4ZDkzMDE1NzNjOTBjY2Q5NGU4ODUyZmIyZjhkMDNjNTYzZjMgbGVnYWN5LXRydW5rCisyMjQyMCBjOWE0ZTZkMWJjMzBiMTk4ZWJmZmFmMTEwNDdiMjcyNGUzYzg1M2U0IGxlZ2FjeS10cnVuaworMjI0MjEgYzBhMTZiNGM5ZWRiN2UxYTA5YmI2YTMzMWE1NmRjYjZhOGVlNzE5OSBsZWdhY3ktdHJ1bmsKKzIyNDIyIGQzN2UxNzY1ODA0OGRhYjhlZDNlOTgwZTA4YzBiOGI3OTA2ZDAyNWUgbGVnYWN5LXRydW5rCisyMjQyMyBmNTEzYzZjN2QxNjcwYmNjZWQ1OTYzYTEyNWJjOGExNzMwYzExNTc5IGxlZ2FjeS10cnVuaworMjI0MjQgZThiZTQwYzc1YTNmNzE3YzdlNTVjNGM4MWRjZmE4Y2NlMzkyMDBiOSBsZWdhY3ktdHJ1bmsKKzIyNDI1IDc3NjQwYzM4ODQ3YmEyNTdiMzlhOThiYzAxNWM4YjVhMWEyOWNjMzAgbGVnYWN5LXRydW5rCisyMjQyNiBkMTZhM2E1YzhhODZiMTMwYjI5ZDJjYTEwYTJlZGYxZDdmY2I1N2E4IGxlZ2FjeS10cnVuaworMjI0MjcgMzczYjZhYmFkYzUwMGZjYzhjZmNjNjYxMzZmNjI0ZmIxMTg4MmM3ZSBsZWdhY3ktdHJ1bmsKKzIyNDI4IDI0MmFjNDI3ZjBkMGYwZDNkNmY5MTdiYmUwOTUzZmQ4MWEzYTc3NTMgbGVnYWN5LXRydW5rCisyMjQyOSAzYzdhZDUwMzdhYjFiYzVhMjIzYTk0NmM5ZDM5MTExZTI1MjRiMzhhIGxlZ2FjeS10cnVuaworMjI0MzAgNDE3ODU3OTNhOGEzNzVlMGJlMWZmOGFmYzAwZjQzOWZiZDlmODNjYSBsZWdhY3ktdHJ1bmsKKzIyNDMxIGNkMWMyNzg3ZWJiNGE5MzAxOTRiMmE0YzNkYWM4YTYwMDIzNzM3NTggbGVnYWN5LXRydW5rCisyMjQzMiA2ZTQ2YzdjZDM3NDkwZTE0MTQ0OTBkMzBhNDIwYWQ4ODU3MDI1ZTU1IGxlZ2FjeS10cnVuaworMjI0MzMgNzFmMDVmZDMwZTczZDVjYjc4Mjc1NDM2NWNjNGVlOTQ2MzRkZDc4YSBsZWdhY3ktdHJ1bmsKKzIyNDM0IDI1NTkyNjY5ODY5MmQ0NmM5MWExMGZhNDBkNzBkMWMwNThmNWE1YzcgbGVnYWN5LXRydW5rCisyMjQzNSA4NGI2MDIxMzE1OWIwMjIzNjgwOTI1YWQzYTkzNjkxMWRmZjA4ZmU2IGxlZ2FjeS10cnVuaworMjI0MzYgMGY2MTJkNjg3ZWJjZDc3NDc0ZWQ5MTMyMWI3OWJjMTcxYmEwMWU1ZCBsZWdhY3ktdHJ1bmsKKzIyNDM3IDUzZjM5OTU5ODc5OTllYzNmNjEyNmE0NTljN2IyMjI2ZDJlOGMxNDYgbGVnYWN5LXRydW5rCisyMjQzOCBhY2IxOGM5ZmIyMGY2YTUxOTA4YWIxZGUzY2NkMTU2MTE1YjUyMjMxIGxlZ2FjeS10cnVuaworMjI0MzkgZTI5YmE4ZjFlN2Y4MGEyZTYyMjVlYzUyODMzNDdmNTM0MDM1OWE4YSBsZWdhY3ktdHJ1bmsKKzIyNDQwIDY1ODg1ZWE3NmMzNzcxNjQxOGRkMTJkNmNhZGRlOTBlMWY5NDFkYTEgbGVnYWN5LXRydW5rCisyMjQ0MSBjYjdmYjU2NWM4OWI5NGZjODMxZjQ5ZDMzYWQzZTgwMDJjYjM1N2RjIGxlZ2FjeS10cnVuaworMjI0NDIgYzMzNjNlNGQ2ZDFkNjBhZDRhZWVhMmFjYmZlNjM2MjM5NWE3YWQyZCBsZWdhY3ktdHJ1bmsKKzIyNDQzIGM2MTI5NDI4ZTA1M2NjYWQwMWJkN2U2MWNkZmJmY2Q1YzhmZmRiNDMgbGVnYWN5LXRydW5rCisyMjQ0NCAzOGI1OTA2ZmYwMzFkM2NmOTNjMTI2OGQ1ZDA5NTExMjRkMDgxYmQ4IGxlZ2FjeS10cnVuaworMjI0NDUgZTExMGNkNGZjM2M2MjUwZDE2MGRmMzYyNjUzZTc1OThkODcyNjI5NCBsZWdhY3ktdHJ1bmsKKzIyNDQ2IDViODdlZTQ0MDAwYmFhMDZiODViNDkzYjM4ZWQ5NTU3YjYyYzQ2ZGUgbGVnYWN5LXRydW5rCisyMjQ0NyBhMDhkMGU1ODYxY2NmMjU4YWIzZDQ4Zjk1NTYzNjNkM2YwOTU1ZDMxIGxlZ2FjeS10cnVuaworMjI0NDggYWM2ZDljNzQyODY0MzI1MzE2ZDhmNjhmODBkZGViODNmZTVhYzYwMCBsZWdhY3ktdHJ1bmsKKzIyNDQ5IGQzZGQwZjJmYjFmNDQxYTg2NTRmYmM3Zjk0MzFhNGVhMWQ4NDNjYjAgbGVnYWN5LXRydW5rCisyMjQ1MCBkOTljMTI0MGQwYWMzZWU5OWI0ZWM0MzZkMGY1Yzg2ZmM2NWUxNmY5IGxlZ2FjeS10cnVuaworMjI0NTEgNzg4YTE2MzUxZTE4OTQzODg2OTUyZjZmZTU4ZWY0YjUxNjg0MTQ5OCBsZWdhY3ktdHJ1bmsKKzIyNDUyIGZiZTIwNzRjNWZhNWEyMTkxNDIzZTk0ODkxYmQ1MzhiNDQyYzRlYTcgbGVnYWN5LXRydW5rCisyMjQ1MyAzYjk4Y2YxNjkyZDQxNTVjZjkyZmNkMTU5NGE1YjQzOTYzZjVlNWZjIGxlZ2FjeS10cnVuaworMjI0NTQgYmUwMjRjMjc0ZTAyY2Y5YTI3YzQzZmY0ODVhODY4NmFmYzg0Y2ZhYyBsZWdhY3ktdHJ1bmsKKzIyNDU1IDM4OGJjZGVlNTEyOWEzZGZhZGM1ZDA1NjAxNTQ2OTU5NDI4ZmFkNzcgbGVnYWN5LXRydW5rCisyMjQ1NiA5ZjgwYzcwYTdhNTFlYmY3MDEyMzI2NThmYmVkOTU1M2I5YTZmMWJmIGxlZ2FjeS10cnVuaworMjI0NTcgMDZmOTAyNzE0MWZmOWFiOTIyODBkYjIzMzkzYWUyZjc0NDdhNDBhOSBsZWdhY3ktdHJ1bmsKKzIyNDU4IDJmZjU3MDJhZGI1NmRhYjg0MjljMDMwYzY0MDNmYjM3MjVkOGIzZDkgbGVnYWN5LXRydW5rCisyMjQ1OSAzOTU2YjIyZDVlMjkzNGY2MmViZDcxZTM0ZDQ0MWE3NTcwMmZmNWQ4IGxlZ2FjeS10cnVuaworMjI0NjAgZmJmMWFlNzY5MzA2NjAxNWNmZmQ1MzliYjk2OWI0OGNmZjZmZGVlMCBsZWdhY3ktdHJ1bmsKKzIyNDYxIDk2OGQxNjk1MDFmMjc2NmFiZDBiMmU1MTM2YWEyY2NkYTdjYzFiNjUgbGVnYWN5LXRydW5rCisyMjQ2MiA2NjE3MDMwYzUxZTNhZDg1MDMwYzdkZTFkNTMyNzU0NGM1ZGY2N2NlIGxlZ2FjeS10cnVuaworMjI0NjMgYWYxYzY4OTMyNGY1MzE2YWY2NWUxNTA1N2FhYzVkZmVjZTY1NmFkMSBsZWdhY3ktdHJ1bmsKKzIyNDY0IGZlZGJhODY4NjVlMjk0Yzk0YjBmYzljZTVjODY0MGUwZDRhYTE4NTYgbGVnYWN5LXRydW5rCisyMjQ2NSAxYzM5Yjk2ZDI5YzMyNWZhZDExNTI5NTc4ZDUwY2RhZDkyMTNlMmRhIGxlZ2FjeS10cnVuaworMjI0NjYgMTRmNzgyYmE0MGY5MTJmNzU4OGM2MDhlNjNiZDkyNWNlZTc5NTAxMCBsZWdhY3ktdHJ1bmsKKzIyNDY3IDA0NjQzYTE4NDU0NmExMTY3ZjlmYmZjZmU5NDZkZDIwMGU4ZGMyMmMgbGVnYWN5LXRydW5rCisyMjQ2OCA0OWZkNzI0MzUxZjRhODU0YjdiMjJiMmYyNWUyNWE4YzE1Y2NlMjE0IGxlZ2FjeS10cnVuaworMjI0NjkgY2E3ZGJhY2JiZTE4NjZiNmRhNzRkNzA3YmQ1OTBjN2I3YjUxMzU1MiBsZWdhY3ktdHJ1bmsKKzIyNDcwIGMzYzg3Y2U0YWZkY2E2YjM3OGJlYjNkMWJmYzQwODQ4ZGYwMGU3OGYgbGVnYWN5LXRydW5rCisyMjQ3MSA3ODYxZWU5NTFhOTFjNGU5ZjVmZjcxNDAyYzI0YzJlZTRkY2QyNDQ2IGxlZ2FjeS10cnVuaworMjI0NzIgZWI1ZTJiNjgzNTRmNWRlYmYyM2QzMDIwZjhhZWMyNDM0ZTcwZGQ5MiBsZWdhY3ktdHJ1bmsKKzIyNDczIGJkOGNiNjY1YjVlMTA4YjJmOTRjZjA0ZDQ4YzVlZjZmMjczNDMwNGMgbGVnYWN5LXRydW5rCisyMjQ3NCBlOWE5N2IwMjg4OWIwODBmODNjOWRmNDkzOWU3NGNlOTljODFkYjRkIGxlZ2FjeS10cnVuaworMjI0NzUgYTlmZjBmNmZmMjYwZWE0MTM2MTE5OWFiOGQ2OTJiNjRlYzgzNGI3NiBsZWdhY3ktdHJ1bmsKKzIyNDc2IGRkODJjZDQ4NmQ4YTFkMTlhMjQ3OGNmMDFjMGRjNzBhODU3ZjE2OWMgbGVnYWN5LXRydW5rCisyMjQ3NyAzNWM2NWQ5YWE4NmEyNmY4NzliYmVmNjBmOGQ3YzlkOTE4NmZjMTMxIGxlZ2FjeS10cnVuaworMjI0NzggYjY1MzEyMjM4YzBiNjY0YWFkMzJkZWM4ZWFmODdlZmIyNzUyYTJlOSBsZWdhY3ktdHJ1bmsKKzIyNDc5IDFjZTVhOTBmYjE5MmI4NDY5ODJjZmFmMjc0NTgyMDlhYjg4Y2VhZDEgbGVnYWN5LXRydW5rCisyMjQ4MCBkODk5YmZiZmZiYmExNzk0NzU3Y2YwMTc2ZjNkNTUyM2Y2MzEzODdkIGxlZ2FjeS10cnVuaworMjI0ODEgYzM0YmJmMTczODVlNGQ0ZDBjODVjNDY0Mzc2M2FjYzM0ZDI4ZjdmYSBsZWdhY3ktdHJ1bmsKKzIyNDgyIDU1MDE5NThlZGMzNjFkMTRjODFlMGRkNzIwMzI4ZTViNGVkNjZkZjYgbGVnYWN5LXRydW5rCisyMjQ4MyA0YzhkNzg2OGE4ZTc2MTAwMzUzYzRhNjczMGQ1Y2Q1MjAzYzUzZjEyIGxlZ2FjeS10cnVuaworMjI0ODQgOWZiNDljZTI0MGQxOWViZTRlY2Q5MWNhMGVlMGQ2MTJlMmM2YTMyYyBsZWdhY3ktdHJ1bmsKKzIyNDg1IGI5NTAyZDFhMjdhN2E1OTc4YThiYWNmNzFjYWRlZGUyZTM5ZTQ4ZWQgbGVnYWN5LXRydW5rCisyMjQ4NiAxYWZjMzExNmM2MDIzNWJhMzBkZTkyZmZkZGU0MjZmM2Q1ZGZkOGU0IGxlZ2FjeS10cnVuaworMjI0ODcgMWJhOWUzNjg0ZDM1NDgyYjczYTM3NGZmNTc0MmI1NjRjZTM2ZGRmYiBsZWdhY3ktdHJ1bmsKKzIyNDg4IGYxMGI2OGVjZWVmYzFhYWZlMjk0NWVlYjlmMzFlMzNjNTM4YTY4OWEgbGVnYWN5LXRydW5rCisyMjQ4OSBiZTg1ZjY4NmFkOTdiYmJlMjBmYzRlMDVlYmNmM2IyNmU2MDNlMGQ0IGxlZ2FjeS10cnVuaworMjI0OTAgNmY2YWNiZjc4OTM5NDNmODM0YjVjNDIzYzllMzkwODFiMjBmNzkxNyBsZWdhY3ktdHJ1bmsKKzIyNDkxIGI4NjVjZDVjMTkyNTAzNmRhZWFiM2Q4YjJhZGZjM2I2YTM1ZTUwYzYgbGVnYWN5LXRydW5rCisyMjQ5MiBhNWE5MzJjMjE1ODMwZTA5NTA1N2Q2YzI2NjU5ZWNmMjI3M2U1MWRmIGxlZ2FjeS10cnVuaworMjI0OTMgYmE4YzYyZTVmOTJkNjlkZmEzMWNiZWIwMmQ4ZmZjNWQ2YjY0YWM5MCBsZWdhY3ktdHJ1bmsKKzIyNDk0IDE0ZTYwNTFkNWYxZjA3YThiNDQwYTI3Y2MwNTNjZTgzNGFjMGE0YmMgbGVnYWN5LXRydW5rCisyMjQ5NSAzYWEwNjA2NDQ5MDMxNjZlOTFkNzVhYzdhMTI0M2FhNDFmOGU4OTQ5IGxlZ2FjeS10cnVuaworMjI0OTYgNWFkNzFmZGIyMDViMzU2N2FiMmIwYjA3NzRjY2E2YmZmMTlhMjJmOSBsZWdhY3ktdHJ1bmsKKzIyNDk3IDVjMmJmNmNkZTEyMzAzYjFjMmFjMjIzYTliMjdhMjdmMDYyYThkZDcgbGVnYWN5LXRydW5rCisyMjQ5OCBmN2EyMTMwYTI1NjM2Nzc0NGRlNzM4NDNkZGY2OTI4ZDdmOTU4NzA4IGxlZ2FjeS10cnVuaworMjI0OTkgMzc1NThlODY1ZWFkNTRjMjc5Yzk2MTU3ZGRhNTU3YjI1NmM0N2JhYSBsZWdhY3ktdHJ1bmsKKzIyNTAwIGMzZDUzZDM0YWI0NGRlYmM2OTRiMzBiMzZkZTNlYjk2ZDA1ZGQ4YzIgbGVnYWN5LXRydW5rCisyMjUwMSAxZTg3ZGIwY2EyNDgyZTFjOGU1MzEzNmM3YzY5NzIyZTg3MDQyMWJjIGxlZ2FjeS10cnVuaworMjI1MDIgMTQ1NmVjNzM1MDg3MmQ2N2E5NTJiOTUyZjBlNTk0ZDI2NzY5NWRjMiBsZWdhY3ktdHJ1bmsKKzIyNTAzIDE1N2JiYjg5NjE5OGI5OGMxZmY5YzlhMzUzMWNiNTY4MzA0NjRhNzkgbGVnYWN5LXRydW5rCisyMjUwNCAxMDY5MDkwYjEyNGVmODdmM2U1Y2QzZjM3ZTg3OTljNTc2OThmMDU1IGxlZ2FjeS10cnVuaworMjI1MDUgM2RkYjIxMDkzMmNhNmRkMWM4YzM0ZjY1MjNhZTIyZTFjNzgwMDlmMiBsZWdhY3ktdHJ1bmsKKzIyNTA2IDZjNGE4NzMwNjYzYWRlMGU4ZTM4NDdlOTg5OTVlZDAxOTkzMmExYzUgbGVnYWN5LXRydW5rCisyMjUwNyA2MzAzMDI2NjY0NjYyYjlmZDBiOTQzZTdmNWU4NzgzYzg3NjdiMTkxIGxlZ2FjeS10cnVuaworMjI1MDggODE0NDBkZDMyNmJiZTE3NTJlYWZkMTA2ODVkZTg1ZjIyOWViOTA5ZCBsZWdhY3ktdHJ1bmsKKzIyNTA5IGI5NzAxNTM4ZjgyNzZhNjk0YzVmYWI1YTdjNWY2Y2Q5ZGY1ODQyNzYgbGVnYWN5LXRydW5rCisyMjUxMCBlZDlhYmFiOTcxMDc4Y2RhZmIxMWQ4YmNlOGZiNzEyYzQ2OWFhNzJiIGxlZ2FjeS10cnVuaworMjI1MTEgY2VhOTQ1NzY0ZGIyMTlmZDk0YjY2OTliYzg2MmQ3YTI2ZTMyNDYwOCBsZWdhY3ktdHJ1bmsKKzIyNTEyIDExOTAzZWIwMDlmNjcwMjFjOWJkNjQzOWY1YTU0NjZlMWM4NmRlYWMgbGVnYWN5LXRydW5rCisyMjUxMyBmYTc4NmY4YTc1NzBhNWIzYzI2Mjg5YjAyM2U4YWFmNTJiMTgwY2FjIGxlZ2FjeS10cnVuaworMjI1MTQgYTdiYmFjNjljOGVmMjI2NjA2N2U2OTE4Y2VlYzFmZTJiZTVjMjZmNSBsZWdhY3ktdHJ1bmsKKzIyNTE1IGIwZDJkZThjZTI0ZjRjMjU3MzM0Y2JkNjZjMjY1NzI0MTE4M2RlODcgbGVnYWN5LXRydW5rCisyMjUxNiBhZjAwMThiYjhjZmMzMTllY2JiOTYxMzIzMjc3NWFhMTdhNmIyMDI2IGxlZ2FjeS10cnVuaworMjI1MTcgMGMyYjQzOTFkZjdkZDBjNGU1YWRlZmI0N2E1YjM2MDk3NjgwOTExMSBsZWdhY3ktdHJ1bmsKKzIyNTE4IDZjYjlmNTM4ZGNlNDk4N2QwZjJiZGFkMzM2ZGNmYjg5ZDMzNDYxZDkgbGVnYWN5LXRydW5rCisyMjUxOSBmYzc2MTczMTIxODI4M2Y3YjFiNmUxNzY1ODkyN2M4MDliNjYxNzVlIGxlZ2FjeS10cnVuaworMjI1MjAgYTYzYTY5MzM1NTRmOTUwZDgyZTM5MTRiZjJmYmI0OTZlNGQwMDhkMCBsZWdhY3ktdHJ1bmsKKzIyNTIxIDZmNjJmNWE2MmEyYzZiZDA2YTkxZWQ3NGFhOTM5MDkwZGRiYmYwMjIgbGVnYWN5LXRydW5rCisyMjUyMiAyZDg4ZGVhNDY0MTc3Y2E1N2MyNzJkZGVmM2M2NGExMDY4ZGJjM2UzIGxlZ2FjeS10cnVuaworMjI1MjMgMWY0ZWI4YzkyNWQ1MThlNTliY2E4MDI2YTQyNDJiYTQxZWU0NGE1NCBsZWdhY3ktdHJ1bmsKKzIyNTI0IGY3ZGMyMWNiMTY2MWRjMzc4YjIzOTM0NWQ4ZDIxYmM0NWIzODMzMTAgbGVnYWN5LXRydW5rCisyMjUyNSAzZWEyOTA5ZTA1MWZmYjY2NzcxOGQ1MTQ3NmUzYzdiODM5ODU5ZTMzIGxlZ2FjeS10cnVuaworMjI1MjYgY2JhYTU0NWM3ODhkYWE5NzkyMTA0NjA2ODE1NGYyYjdmYmI4MTg3YSBsZWdhY3ktdHJ1bmsKKzIyNTI3IGQzNzBhNThmYjdmZDhmM2RkMDU5MmZhZGE0YWQzNDYwMzNhN2U3OGQgbGVnYWN5LXRydW5rCisyMjUyOCA3OTU3YjNmNWQ0NjJkN2RkMDE1YTMwYWNmZTM1NzM0NmI2YWM5N2JiIGxlZ2FjeS10cnVuaworMjI1MjkgNDIyNDZiOGM1OGJiYTg5NjBiM2NiNzQ0MmQwNzJkODA0NTY3ZDg2MSBsZWdhY3ktdHJ1bmsKKzIyNTMwIDFmZWMwMzAxMjM0Njc4OTU0YzAzYzJkNjgzNWY3YTYyZGE2MmU5N2MgbGVnYWN5LXRydW5rCisyMjUzMSAyNjFlMjhlN2ZhMDFmYWExMjVlMzRiYjJiNDdjMGQyOWY5ZDY0MGYwIGxlZ2FjeS10cnVuaworMjI1MzIgYjUyNWU2MDJmNmMyYTQyODU5NjQ5Y2RjOTc0MThmM2YyZjZlZTI0YiBsZWdhY3ktdHJ1bmsKKzIyNTMzIGRiNDg4Y2M5ZjI1OTg4NmU2NmU3MWQ4NTFlZTYzYzM5ODI3NjBiOWYgbGVnYWN5LXRydW5rCisyMjUzNCBlZmRjZjQyZjg4NTI3MmViZGQ4YTkxYTJiZmIwNzg1NzI4ODZiOTU1IGxlZ2FjeS10cnVuaworMjI1MzUgNzNmNjg1ZGI4YzBjNzkyOTdmOGI3NWYyY2EyNDJjNjUyOWZmZGIyMiBsZWdhY3ktdHJ1bmsKKzIyNTM2IGI0MTYzOGExMWU0ZTQzOWVmZGJlZmIwMDVhYWNmNWQyOGVlMjg3YTggbGVnYWN5LXRydW5rCisyMjUzNyBmOTNjMTZjMTBhNTVjMGU5ZGRhMzczMGJkY2EzYWEwNmEyY2I4MTMxIGxlZ2FjeS10cnVuaworMjI1MzggZWE5Y2ZjMzhlMTFiZDgwZTE4N2NkOTEzMjZhZDMxMzQ5MTBhNzBmMiBsZWdhY3ktdHJ1bmsKKzIyNTM5IGJhODdjMjQ0ZmI1OWJlNjU0YjdmYmFkZWQ3MTY2N2ExYzA3OWVhMzMgbGVnYWN5LXRydW5rCisyMjU0MCAwNjEzZmE1N2FlNmQ5YzczNTRmZWY4NGI1ZTI1NjgwMDJjZjA2YWNhIGxlZ2FjeS10cnVuaworMjI1NDEgMDVjOWEzNWYyMTRmMjhiNDlmNTc1ZmVkN2NlMGQ3MzAyMzRiNjBjMSBsZWdhY3ktdHJ1bmsKKzIyNTQyIDYwMjY0ZDFlMTAwZTlkNjRlOTIxZjQ0YjkyNmVkZmZjNDQzMDQ5NTggbGVnYWN5LXRydW5rCisyMjU0MyBkNmIwODRjMjViYThiZDExNzRmMGY0MmI5ZTI5MDhlOTJlNTJiYmU3IGxlZ2FjeS10cnVuaworMjI1NDQgZWJmYjc0Y2U3ZTU2ODEzNDc3NDkyMTJiMjc1ODAwYjE4NzdjZDQ2MyBsZWdhY3ktdHJ1bmsKKzIyNTQ1IGIxMTEyYTJjMzU0ZmYzYjRkNWY0OTAzNjhhM2RkYTk0YWU0NzM4NDYgbGVnYWN5LXRydW5rCisyMjU0NiA3ODZhY2VkOTM3YzUzODliMWM1ZjkxODUxMTdjMWVmMWE5ZWY5MGFiIGxlZ2FjeS10cnVuaworMjI1NDcgNjEzMGRlZWI0Y2M2MTViNGMwMmMwZTY1MWU0YjA4ZmMzZjZlMDVlZiBsZWdhY3ktdHJ1bmsKKzIyNTQ4IDg2Y2Q1N2Y5ZGI5Yjk2ZjBlZDZjZjk1OTk2M2ZiM2QwZTEzZTI4NGQgbGVnYWN5LXRydW5rCisyMjU0OSBkNDY2ODJiZGE4MmZmNWNkODAyYTYxYWRmNDkzMjE4YjEzZGUyN2FjIGxlZ2FjeS10cnVuaworMjI1NTAgODE0NDcyMmRjMDc2NWVmOTJhM2YwN2ZlZTc2YmI5NGNiNjBjMjY3ZCBsZWdhY3ktdHJ1bmsKKzIyNTUxIDcyNTdlODdlMDcyMDE2YTM3ODAwZTE2Y2M3Njk3NjE3MDJhZDAyOWYgbGVnYWN5LXRydW5rCisyMjU1MiBkYjk3NjI1MjlmNDU0NjY2NjQyYjBlMDQ5NzQxZmVkY2FmMDBkYTNkIGxlZ2FjeS10cnVuaworMjI1NTMgMzhiZTE3N2JkNDkzYTA4ZjEyNTc0YzIwOWVhYjUxYzJiZGExZWQ0MCBsZWdhY3ktdHJ1bmsKKzIyNTU0IGE0OGEzZDc1NDc1ZWNmMmYwMzVkNWM0MDQ5OWEyODVlNDU1MzQ2MmUgbGVnYWN5LXRydW5rCisyMjU1NSAzZDk3YTRiNWM2YWE1ZTQ3M2E5MDg4ZDg2YWZkOTNjMjE4NWU5NThhIGxlZ2FjeS10cnVuaworMjI1NTYgMTNmNGJhMDU1Njg3ZjQ3ZTcxODkyNTQyODcyMmNkZDZkYWM3NzY2YyBsZWdhY3ktdHJ1bmsKKzIyNTU3IDliNWEyYzFhMDJmM2MwYjlkNTc4NjQ2ZTIxMWM1ZWUyYjgxNWYyYWQgbGVnYWN5LXRydW5rCisyMjU1OCA1YjZhNmQ3ZDQ0YWVkMmIyMDFiN2U0MjU0YTZjMDFjMjBiODg3YTVkIGxlZ2FjeS10cnVuaworMjI1NTkgZjkyMGRkYjc3ZDhiM2Y4NDA3YTlhOWQ5ZDhiMzY2YTFjZDU4NzQzNiBsZWdhY3ktdHJ1bmsKKzIyNTYwIDk0OTA1ZWI3MmY0ZmNiNWIyMzU4OTkxZGY3YmIyOTdlMmRkMThmZGEgbGVnYWN5LXRydW5rCisyMjU2MSAwNTFkOGUzODBmMzgyZmVkMWE0NmZkYzFlZDJhYTc0ZWU0ZjcxZWEzIGxlZ2FjeS10cnVuaworMjI1NjIgZTkzZjVjMzg1ZmY0NDM0YzM0YjEwODg3YTMwOGYzYjI1Yjg5YjE4YSBsZWdhY3ktdHJ1bmsKKzIyNTYzIGQ1YWNmZjE3OGFkNWU2NjQzZmVlMmUyMTY3NmE3NmU3ZjMxMWZjZDEgbGVnYWN5LXRydW5rCisyMjU2NCBjMGVlMTBlMGUxM2UzNWU1NDI4MjhmMDRiZDUwODdkMjA2MGY2NDU2IGxlZ2FjeS10cnVuaworMjI1NjUgYmU5YjUwNzA0ZTRjMGE4MDMxNDljNTgwYzQxZTBmZmI3ODdmNDgwYiBsZWdhY3ktdHJ1bmsKKzIyNTY2IDBkYWQwZGM3MTQ5YjJiN2MxZGIwN2QyZGU3ZDNjMzNmY2QzYmFkN2MgbGVnYWN5LXRydW5rCisyMjU2NyBlZmY4Y2E2NzliZjZhZWNhNjczZDBhZTQ1Y2NkOGI2YTIyZjk5Mjc2IGxlZ2FjeS10cnVuaworMjI1NjggZWExMzFmZjFkOGNkODJmOTk5MDg5ODMxZGVmMWJhZjA4NTgyMzA2YSBsZWdhY3ktdHJ1bmsKKzIyNTY5IDkyMjJiNmUzYjM2ODdlZjAyOTI1YzIyNjhhYjg1NDI3NmMxZGUxZDcgbGVnYWN5LXRydW5rCisyMjU3MCA3OGRhY2I1NDM4ODdlZmI4MWI1ZWRjZDk0NjdiYTQyZjM1ODEwNTMxIGxlZ2FjeS10cnVuaworMjI1NzEgZjE5OWQwYWE5ZjgxMGY3Y2E1ZWE0MWIyOWEzODliYjM5ZTE3YmU5ZiBsZWdhY3ktdHJ1bmsKKzIyNTcyIGI3Mzg0MjgyMzhmMTk1MDBjYjEwYWQ1MGMwZmUzMWQ5ZDMyNTVmMzcgbGVnYWN5LXRydW5rCisyMjU3MyBhMWFkYmYwNzU2NTc3M2M5NzEwZjVmZWU3Y2M1NDliOWRjNzhkNDgzIGxlZ2FjeS10cnVuaworMjI1NzQgNjNiOWIxNzdlMzUwZmQ2NmQ1MzY0MDc0OWUyNmRjMWU1YTQ3NGM2NyBsZWdhY3ktdHJ1bmsKKzIyNTc1IDE3ODAyMDc3ZTc3Y2Y1OWZkMTQ3YzkyYjQwYTVmN2IzYTQ0MDQ1YTggbGVnYWN5LXRydW5rCisyMjU3NiAzYjMwNzliODU3Mjc0MzUyMGE3N2E3MDk3ZjQ1NDZmODdkNDkxMjJiIGxlZ2FjeS10cnVuaworMjI1NzcgOGMyYTI5Yjc1NDhlZDYyNDJlMTVkMzUwMjBjZTI5NTFlMjEzZmE3OCBsZWdhY3ktdHJ1bmsKKzIyNTc4IGJhZmJlNWNjOTQxZmYxYWM3MjA3ZDU3YTVmZjE5ZGJhNjEyNDQyNjMgbGVnYWN5LXRydW5rCisyMjU3OSAyYmYyNjkwOTY2ZmZkMzIxYWM2NTNhMWUxZjY2N2Q2M2NlOWE0NTdhIGxlZ2FjeS10cnVuaworMjI1ODAgMzZmYThlOWJjMmRhOWU4MjU0MzkwYTk0ZDI1YjBlNjQ2NjNkOTk2NCBsZWdhY3ktdHJ1bmsKKzIyNTgxIDAzMzQ2MmRmMTdiZjU4YjdiN2RiNzc5ZDZlM2MxNWI1MDYxYzk1ZjMgbGVnYWN5LXRydW5rCisyMjU4MiBjNGIyYTZiMDRkMGI5MGMxMDQzMDRhNGRlMWZlMGJiOTkxNTg0MDRiIGxlZ2FjeS10cnVuaworMjI1ODQgZmNhYjM2YzkzMzI3Y2E1YTU2ZmMwYTA2NzBiYWZmNDU0YTIyMmJiNSByMjJhMi1icmFuY2gKKzIyNTg1IDQ4NGMwNWRjNDk5ODQxNzdkMTVmZWRkYjk2MjFmM2U3MmQzNWQ3OWMgcjIyYTItYnJhbmNoCisyMjU4NiAyOTRhNTZiZjczMTVmMDAwNGJmZDVhMWQ3ODhjYmNhYzU1MjQ2NmY5IHIyMmEyLWJyYW5jaAorMjI1ODcgZmQxMTk4OTkwNDVjODM4NGNjZWVkODYzNjBlZTQwZTIyMWQ2MmI1NiBsZWdhY3ktdHJ1bmsKKzIyNTg4IDllNGY3MzllOWE4NDg2OGVhMDVmNjBlNGUxZmY4MTFhYmViMzkzMTQgbGVnYWN5LXRydW5rCisyMjU4OSA2Mzg2ZjAxZjI0MDE2MmQ5N2EwOGI5ZWUyYjg2NzYzOWU0ZjgyZDY0IGxlZ2FjeS10cnVuaworMjI1OTAgNWYxZTc1NzFiMTI5Y2IwN2I5MmE1NTFlM2FjODYwNzgwY2Q3YWIzYiByMjJhMi1icmFuY2gKKzIyNTkxIDhhNmNkYTE3NTVlYjk5MWQyNDM0NjdkN2Q5MDYxYjk0NDMyNGU1MzkgcjIyYTItYnJhbmNoCisyMjU5MiA3MzQwNjZmMjE2NGYzNmU0MmIyNjUxYzAxNzAxOWYxMTNiYmFkZTFjIHIyMmEyLWJyYW5jaAorMjI1OTMgNWM4ZGU2OGIzY2RjYmM0NjNkYWE1MzM1OTRiN2UyNDJiNzNmYmY5YyByMjJhMi1icmFuY2gKKzIyNTk0IGFmMDU4ZDY5ZWFlZGQ3OTIyYmYxMmJkNmViNTEyOTczZmViYzRlNTUgbGVnYWN5LXRydW5rCisyMjU5NSBkNzY0ZDU1NjkyYTE0ZjQxYzY1M2ZmOWQ3YTYxMGRmMWM0M2RiZjRlIHIyMmEyLWJyYW5jaAorMjI1OTYgNDc5YjU2MGRlY2E3MDE3MTdhYTlmMjIwOTUzNGZhOTgzMzc4MWEzZCByMjJhMi1icmFuY2gKKzIyNTk3IDkzNWFhMDc0Y2RiODZhYmM5MTUzMmJiNTZiZDY0YjA3MzY1NWVlMGEgcjIyYTItYnJhbmNoCisyMjU5OCAyYTA4M2UwNTA2MTdiNTkyMWQyMjJiY2JhNjhjMjI4YjVhNzQxMTUwIGxlZ2FjeS10cnVuaworMjI1OTkgNTBkM2IzNjZlOGM4YTkwZDZmMzBkYzcyZTE0MTk4MThhODY0MzdhNyByMjJhMi1icmFuY2gKKzIyNjAwIDg4NDIyMDgxMDk1YWY0MDhlY2I4ODY4ZGEzYzhhNTczODZhMTgzNWYgcjIyYTItYnJhbmNoCisyMjYwMSBlOWI3OTVkNGMwNjBjZDcyMjA0M2Q3MjI5Mzc3NDYyOTY1ODdjMzY5IHIyMmEyLWJyYW5jaAorMjI2MDIgN2I1NTNiMWMzZThiZDE0ZDBjOGI0MTY5YzRiYzIzNmFhMzRhZDlhZiBsZWdhY3ktdHJ1bmsKKzIyNjAzIDYwZDVjYmJlYWRjM2I4NjhmNmVlZjVlZmM2YmVmZGExNWRjNmI0MTEgbGVnYWN5LXRydW5rCisyMjYwNCBmYjQ3ZGI4NTQxMGU0OWY4NTU4MzAwODdmMWRjZmQ1ZmJmZjY1ZTNmIGxlZ2FjeS10cnVuaworMjI2MDUgYzJkYjE4YzA3MGZlY2RhMTZjNGRmNDUxNTIwODRkZGVmOGYwYjM5YiBsZWdhY3ktdHJ1bmsKKzIyNjA2IDVlYmRjM2FkODg3NzlmZThhZGVlOWQyZWE3ZTRhZGU3NjJkMDliY2EgbGVnYWN5LXRydW5rCisyMjYwNyBjZTZlYTQ0NDllOTdjYjFlYTI5OTAzNmJiYjg2MDFlMmMxNGE5NjE5IGxlZ2FjeS10cnVuaworMjI2MDggYjljYWY4Y2IxMmEyZWMzOGY2MWYzYTFiOGJkYzI1MzA1MTMzNzcwZCBsZWdhY3ktdHJ1bmsKKzIyNjA5IGI0NTA4NDczMDkxNmQ5OWUwMTIwMjc0Y2FlMDEyNWNkZTBkYTcyM2MgbGVnYWN5LXRydW5rCisyMjYxMCA3N2Y0OTVlODIyYzE1ODIwMWFmOWVhYmU1MzgwZmJhNDIxY2U2Y2UyIGxlZ2FjeS10cnVuaworMjI2MTEgMGU3YWVkNTNiNTgzMzMyYmRiYjY3OWFjN2VkZGRiNGZlNTgyZDI5ZCBsZWdhY3ktdHJ1bmsKKzIyNjEyIDNhMmZlNzQ1YTBiYmZhZmY3NTU5YzgyODFmNDU0ODBiMjI1YWRhMTIgbGVnYWN5LXRydW5rCisyMjYxMyBiMjI2NThhNDY4Y2ZhYWQ0MzY1NDJjMDFjNzIyOTc2Mzg2YTU3YzBjIGxlZ2FjeS10cnVuaworMjI2MTQgNjIxODQ5OWFlYmRhMmI5OTkyNjI0MTYwMzAwNjU4OTdjOGUwZDg5NCBsZWdhY3ktdHJ1bmsKKzIyNjE1IDBmODczZDA2YWMxM2ZiZTE1MzE3MzgyNTJmY2JjN2M2YmUwNmU1YTUgbGVnYWN5LXRydW5rCisyMjYxNiBmYjMxOWU5Y2MyYWRmZWQzZmE1ODdjMjAxZjFlYWFiNDY1ZmEwYTdhIGxlZ2FjeS10cnVuaworMjI2MTcgNzc2MWFjOGJlYjgxOWUyY2FiY2NlOWJhMWIzNjQ3NjAyYjdmZjAxYSBsZWdhY3ktdHJ1bmsKKzIyNjE4IDBjNmM2ZTg3ODM4OGI5YWM0OWNhZGJiYzUzNDgxNjZmNzBjYTY4NjIgcjIyYTItYnJhbmNoCisyMjYxOSA4OGIxZWNkMDQ4ZmJjMjNjNTA3ZTkwOTJlODQxNDY3OWEyOWFmOWRjIHIyMmEyLWJyYW5jaAorMjI2MjAgOGJjN2JjYTMyYTk1NjhjNmFjMmQ2MzgzMTI4MTc1MjgyMDVhNTljMiBsZWdhY3ktdHJ1bmsKKzIyNjIxIDJmYzEwMmI4MzhlZDgyMGY3NjgxNmE0NWZmY2M5MTkxYmI0NzNmMDUgbGVnYWN5LXRydW5rCisyMjYyMiA5NjI2M2NmYjJjOTY2Mjk5OWJjNmFhN2EyNDM1ODJkN2VlZGY0MDU0IGxlZ2FjeS10cnVuaworMjI2MjMgZTg1MWU2MTQ4YWQ4ZDllNTY1ZmYzOGZmODM1NDhmZTg2MjMxMDc3ZiBsZWdhY3ktdHJ1bmsKKzIyNjI0IDEwMGRjYzllNmYyZjNhYWQ5MDAyOTFkNjYzMDc3MjkyNDY4ZWQwZjIgcjIyYTItYnJhbmNoCisyMjYyNSBiOTRjZTdkNzBjZmNhOTA2NTVkYmU2ZGY4YjY3NzBjMjFkOGVlNmZmIHIyMmEyLWJyYW5jaAorMjI2MjYgNjBjMGNmZjVkNTdlY2JlMGU5Y2YxYjc1ZGNjZGZkMzhlYTRkYzJiMyByMjJhMi1icmFuY2gKKzIyNjI3IDg1M2RiZTEyYmJlNjhhNjYyYWVjNzZiNTI0YzBiMjljMTMwZTRiOTcgcjIyYTItYnJhbmNoCisyMjYyOCBiZTViZTk4OWNhZmZlYTA0NmJhMGUzMzBjZmM3ZTU4NTZmMmExNmRmIGxlZ2FjeS10cnVuaworMjI2MjkgODYwN2JjODkwYjFmMDI1ZDJkZGVmYzhmMGNjMWYzMTRiMTUzMWM3YyBsZWdhY3ktdHJ1bmsKKzIyNjMwIGEwMzg5OTM4OTBiMjNlNmMzMmNkZTk0NTgwMTQ5NjUxZmZiYzc3OTYgcjIyYTItYnJhbmNoCisyMjYzMSA1NTQ0NTA0MDlhNzM4ZTIxZjk4MDA5MzcwYTBmODA1NzNlNjk3NTRmIGxlZ2FjeS10cnVuaworMjI2MzIgZDllYTk5YTZmNmI0NDY2ODZlN2M4N2VkNjEwYzgzYzBmNjdiYTYyZCByMjJhMi1icmFuY2gKKzIyNjMzIDViY2JjNTkwZjRhNzExNjBjZTg2MTExMTYwNDYzODAyN2UzMDdjYzYgcjIyYTItYnJhbmNoCisyMjYzNCA4OTk2ZGM1MjBiNTdiYjcyNGE5M2ZiYzZhMWY3NWM2NTM0YzZhNWZjIHIyMmEyLWJyYW5jaAorMjI2MzUgYWM2YmZhNTVmY2ViZjRiODAxMDZiNTE2Mzc5MjU2MWM4Zjg4N2RiMSBsZWdhY3ktdHJ1bmsKKzIyNjM2IDYxMjVkOWY5MjQ0MWRjMzJhNTNkNjExNWM4ODI5MWM0NmVjN2UzNzggbGVnYWN5LXRydW5rCisyMjYzNyA5ZGU4M2RkYTlmMDlhM2QxNmJhZTI5YTljYTQzMTU1OTU3YzViOTU0IGxlZ2FjeS10cnVuaworMjI2MzggOTMwNmY4MjhmYmI3NzM0ZmIxMmQ1NzdmNGYwOTVmNzYxMDk1ZjM2OSBsZWdhY3ktdHJ1bmsKKzIyNjM5IDAxZTY2NzgwYWY2MTYzMWJlYjc2ODE2NmRhNWU4MzNjZmYxYjQ5YjYgcjIyYTItYnJhbmNoCisyMjY0MCA4MWM3NTY1YTU2YWNjZTg1OGU2ZWRmY2VhZTg2MzM1Yzc3NmFiMzRlIGxlZ2FjeS10cnVuaworMjI2NDEgN2U1ZTk3NGIzZDM3NmQ0YmI1ZWZhMTMxOThhYmYyYWM5ZGI3NDU3NyBsZWdhY3ktdHJ1bmsKKzIyNjQyIGJjOWM4Y2ViYzJlZmM4MDc4NjA1MTRhOWVlZjBjOGNlNWQwM2JmMjUgbGVnYWN5LXRydW5rCisyMjY0MyBjNDAzYWYwMDM4ODRlNmFkYjVmNTIzZDkxZjc2ZmRmODRlOWMxYWQ5IGxlZ2FjeS10cnVuaworMjI2NDQgMGQxYmJlNjVhMWQ4NzdiODU3NTA0ZTgzMmIzNGE1NGZmMzE1NzcyOSBsZWdhY3ktdHJ1bmsKKzIyNjQ1IGQ0YmE2ZTJhYWFlMzRhYzNlMGJiMDM5MTE3OWY0N2JmMWRlZDUzODAgbGVnYWN5LXRydW5rCisyMjY0NyBjY2M0YWY2ODdjYWM2Y2QyMThlYzAxMzk1YmExYWI5ZGFhZDg5Nzg0IGxlZ2FjeS10cnVuaworMjI2NDggNWY3MzExMTVlMzUyNmJkYTc4YTMxYWNmOWE5NzAzZjAzNjBiZmViMiBsZWdhY3ktdHJ1bmsKKzIyNjQ5IDQ3NjMzYjc5ZWMxOWYzYWU2NmVkZGRmYjYxY2Y2Njk3NzYwMzI4MjUgcjIyYTItYnJhbmNoCisyMjY1MCBiMmRhZDRkMTdjYTlhZTFkZmYzZmI1YzIzOGYwNWRlNzM5OGNmYTJiIHIyMmEyLWJyYW5jaAorMjI2NTEgMDkyOGNkNjJkZGVhNWQyMGMxYWM4MDI0MDc4MzJjZmI2M2Q4MzMzNCBsZWdhY3ktdHJ1bmsKKzIyNjUyIGE2Y2UyZDE2ZDczOWY3MmIyNGI3MTlkOGZhMDk1MjllMWY3MWY3N2IgbGVnYWN5LXRydW5rCisyMjY1MyAwYjExZjA5Y2YxZTQwZDNjYzA1MTdjOGY3NjA0OTJmZmJlMmYwNGE0IGxlZ2FjeS10cnVuaworMjI2NTQgMjkzYTQxMmM5ZmQ5N2Q5NTI0YmU1OWVjNjYxMTc4YzE2ZDE3M2M4OSBsZWdhY3ktdHJ1bmsKKzIyNjU1IDEyNTc4NWYxZTEyZmU3YjgyYTUxODgyZTUwYjY1OWFkNzE3ODZkMWQgbGVnYWN5LXRydW5rCisyMjY1NiA4MTFmMjg5NjM3YWQyNGVmMWUyZjI0Y2NkZjFkYzg5OTMxYmZmNzUwIHIyMmEyLWJyYW5jaAorMjI2NTcgYjE1OWNlMzMxNWNiOGRhNjhjMGJlZDUwYjhjNzU1ZGQyMzViODFhYyByMjJhMi1icmFuY2gKKzIyNjU4IDM0YTc0YjgxYzliMmZhNjg1NjQwMDgyYjIxODNjMGQ0ZWY4MjNmYjMgcjIyYTItYnJhbmNoCisyMjY1OSA3MzBkY2Q2ZDU5MGIyYmJlMWNhOGVhZDJhYTdiZDllYmIxODZjMTgwIHIyMmEyLWJyYW5jaAorMjI2NjAgZjUyZmEyYjcwM2Q3MmM2ZGQwMTlmMjVkZGY2NzRjMTVlZTJmNzMzYyBsZWdhY3ktdHJ1bmsKKzIyNjYxIGU3NmY3YzgzZWIwZDU2MDk3OTdhNjQ4YmM1MGRhNTc2ODFjMzdhYjIgbGVnYWN5LXRydW5rCisyMjY2MiA1YzAzNTg0Y2YzY2MxYzY1ZGRiMTk2YTUzOGQ3MDA2OThmZjYxYTFmIGxlZ2FjeS10cnVuaworMjI2NjMgMmI3YzBiZWRmZmRiZDM5NDI5NDYzMDVjZjAxNjQ1ZjU1NjVlOGUxNyBsZWdhY3ktdHJ1bmsKKzIyNjY0IDg1ODYyOGNmNmUyNTY5NDU0NzJhY2M5NjlkZWI2Yzc3Mjk3N2Y1MzMgcjIyYTItYnJhbmNoCisyMjY2NSAxN2U3YjFhMzMxZjM1ZGZlZjAyZGI4OWRmNDg5YjAxZTQxYmMyNGU2IHIyMmEyLWJyYW5jaAorMjI2NjYgZmEzOWYwMGRkNWMzMzNiZGFjY2FkOGQ3ZWEwMGViMTdlOTQ4Y2UxYSByMjJhMi1icmFuY2gKKzIyNjY3IGZmZWY0ZTQxZjA2ZWRjNDFmZDgyYWRjMWM1NDUyNGYzNGJjYWVhYzkgbGVnYWN5LXRydW5rCisyMjY2OCBjNjM3ZjI5YzgxOThhZTAzNzJjNTgyZDAyNjY5MmM0ZGViMWU3MGJhIHIyMmEyLWJyYW5jaAorMjI2NjggZDdmNDJjOWRlOTQ0MGQ3YTZhMjUyYzUwZjNkY2IwNWM5N2ViZWNjNCByMjJhMi1icmFuY2gKKzIyNjcwIGRlMmZiYzUyYzFlYjlmNGQ4MTliMjdkMjE2N2JmZDFkMTMyNzdlMTcgbGVnYWN5LXRydW5rCisyMjY3MSA3NTI2OWFiMjZkMDMxMzc3YjE3MDI2MTRjOWYyZTRjZDA5MjU5ZTljIGxlZ2FjeS10cnVuaworMjI2NzIgOGQ2NDA0NDUzNDQ4NTdlNDhkNWEzNDk3MmFlZmJjNDMxNjYyZDc2ZCBsZWdhY3ktdHJ1bmsKKzIyNjczIGM3MjYxNmQ2MTQzYzJjODk3MjcyYWYxMDgwYTQyMjc0NDE2ZWM5OTMgbGVnYWN5LXRydW5rCisyMjY3NCA5Y2Y2Njk1ODExMTAzNGJlNjMyODEwN2ZhYjQ5MzVkZTBlNWY1ODc0IGxlZ2FjeS10cnVuaworMjI2NzUgNTAwYzM1OTAzOGM3YjIzNWY5OTE3ZmEwOGQyMzk4MmVhYzFhMmEzYiBsZWdhY3ktdHJ1bmsKKzIyNjc2IGIxMzliZGI2ZDQ4YTRiY2Q1MDk5Y2M4ZmUzN2Y4NDJhYWQwMWU5MTEgbGVnYWN5LXRydW5rCisyMjY3NyA5OTlkZTU0YWM2YTYyMWU2ZTdmYmYyZjk4OTU5YmY4YTgxYTA5ODZkIGxlZ2FjeS10cnVuaworMjI2NzggNWQ4MWM2YmZmMzA2ZTVhZjBhNjU4MDE2MmY5ZWZmNmI1YTJjYTRmYyBsZWdhY3ktdHJ1bmsKKzIyNjc5IGMxNDBiZDdkM2JkY2ZmY2VmZWUwZTg5OWI0Zjk5NjczZDYzYWY1ZGYgbGVnYWN5LXRydW5rCisyMjY4MCBkYWQzMjA5Y2U5NzMzMmE5ZGEyNTU5ZTZiOWY1ZTkxMDliYzg4OWJjIGxlZ2FjeS10cnVuaworMjI2ODEgZTE2YWQ1ZjdmMzg3MjIxYmY3ZWUwYmU3Y2JlM2ZjYjc2NjdjNTBhZCBsZWdhY3ktdHJ1bmsKKzIyNjgyIDVmZWMxYzlhMjFlYWRmNGU5NTVlMDJiNGM2OGRjOGIxZGY1ODgxZTMgbGVnYWN5LXRydW5rCisyMjY4MyA3YmU0YzczYmFjNTNlMTQ5MzdhNGI4OGI4ZDA4M2VlYjIzZDk1NGQwIGxlZ2FjeS10cnVuaworMjI2ODQgZGU3NDgzNDdhNDA0ODBmZjQyNDAyOWZjNzhkZTdiMmE4ZTg2NjY1NiBsZWdhY3ktdHJ1bmsKKzIyNjg1IGNhMWI4Y2MxYmEyYmQ2NWJkZWVjMDI2ZmRjMDU2MmU3MDE4NTAzZTAgbGVnYWN5LXRydW5rCisyMjY4NiAwNzU3MDk4MzUwYzI4NTdkNTA2ZjRmMDMwYzk3NDg4OGZkZTY1MDNkIGxlZ2FjeS10cnVuaworMjI2ODcgNGQ2OWQ3NDJkYjJmNDRiZDg2NGUwOGE1YWNhM2ZmNzMxMzk1YjY3MiBsZWdhY3ktdHJ1bmsKKzIyNjg4IDA5MjJkNjA5YWNkMTI1MmE3N2VhMDk1ZDljNzZiZDI0N2I1ZGY2YjQgbGVnYWN5LXRydW5rCisyMjY4OSA3MTM3MmEwZjUwZTFiNGQ1MGQ4MDQxMWE3YzEzNjI1N2JjMTFjM2ZkIGxlZ2FjeS10cnVuaworMjI2OTAgMmFlYTM5NGY0N2RkNDBlMWYyYzY0Yzc0MWEwNmJhMWM2MmUxZDk1OSBsZWdhY3ktdHJ1bmsKKzIyNjkxIGY1ZDg3YzQxZjY1YjIwMjdiNjA5MGFhZTU3ZmU2MTMwODY2OTMzYjIgbGVnYWN5LXRydW5rCisyMjY5MiAzYmZjZGNhYmE3MDM0MjU0NGNiNWM1MTk4NmMzZWVhNWVmYzcxZmEwIGxlZ2FjeS10cnVuaworMjI2OTMgMjVkMmY2NDgzMzg0MTlmYjVhMGE5M2QyM2RjYTY5OTk4ZjNhN2Q3MyBsZWdhY3ktdHJ1bmsKKzIyNjk0IGY5NGM0YmI3ODg4YjJjNzgyNzlhMzFiNDVjZTZlY2QyNzJkOGU4NDcgbGVnYWN5LXRydW5rCisyMjY5NSBjZWUxZGVjYzRmZjIwOWEzZjQyZWYzN2U1YzQzZjRjNGFlNmJiNzgwIGxlZ2FjeS10cnVuaworMjI2OTYgMjgxN2YxZDNhZGJlMzAzZjBhYTA1NGExYzg3OTRhNTdlNmI5NTFkOSBsZWdhY3ktdHJ1bmsKKzIyNjk3IDEwYjQ0ZTNiMzkwNTQ3YTE3NmZhNDBhYzU0NDM2ODQxMDEyYmJlZWIgbGVnYWN5LXRydW5rCisyMjY5OCA3ZmI1ZjE1Njg1ZGQwNmE5MjY4YWI5NGVkNWM1ZTA5MTNkZWY0MjdiIGxlZ2FjeS10cnVuaworMjI2OTkgOWFmZDlkNWZiOTdhMGI2MGU2YzE0MDYyMDkzNjk0NzgzNWFiYWVkMSBsZWdhY3ktdHJ1bmsKKzIyNzAwIDI1YjliNjM0ZDllM2QxZWFmZjU3MDUzMTE5NWM3MTdkMzkxMDFiZWIgbGVnYWN5LXRydW5rCisyMjcwMSAzYjVmMzRjNWJjNmM5M2ExNzAwODBkNWI0NzU1YjI0ODljNDU0M2FiIGxlZ2FjeS10cnVuaworMjI3MDIgNmMyYjdiNjI0ZWYyM2YyMmQyODQ3ODU4Nzk4YzdmYjUwNjUyMzhiMSBsZWdhY3ktdHJ1bmsKKzIyNzAzIDhmOTBlMWY1MGMxMTgzOGZjYWQwM2JmODAyZmVlMWI4ZmMzNDc3NDEgbGVnYWN5LXRydW5rCisyMjcwNCA1MDAxOWNiNzg0ZTBkY2VlYjNkZGExNTRmNmFiOTAyMzk3MDc3OGI4IGxlZ2FjeS10cnVuaworMjI3MDUgNzUzMzQxMmRjNThjZDZhOWZjZWJmYjY5OTNkOWE3NGRmYzg0ZWNmMiBsZWdhY3ktdHJ1bmsKKzIyNzA2IGY3YWFmNzIxYTgxYjNjZmI3NWM4NWJjNTZmOWQ5NTk4NzZlMDQ2MzUgbGVnYWN5LXRydW5rCisyMjcwNyAxMzRlMTMzZDhjNDQ1Y2M2ZGFmYzY1OTFkN2I1N2IzZGEzZWY4MDdkIGxlZ2FjeS10cnVuaworMjI3MDggMGI2NDJkMjIwYjAyZTJkMGRmODkzYWMyMzg4ZGQ3NjlhNTFmYjZhZSBsZWdhY3ktdHJ1bmsKKzIyNzA5IDQ1ZDBlMTE0MjEyZTk4MDUxNjQ4YmMxYzY4ZTk3ODA2ZWQ3M2Q3ZmQgbGVnYWN5LXRydW5rCisyMjcxMCA0YTMwZWM3OThlNmMyZWI4NThhMDcwYjg1MjQ2YTY4NDQ0MTZmYzMxIGxlZ2FjeS10cnVuaworMjI3MTEgNjFkNTNjMDUzZTQzNGU5ZWEwNjYyYzUxM2MyMGQxZjIzYzRiZGVmYSBsZWdhY3ktdHJ1bmsKKzIyNzEyIDZlNmZjN2I2YTM2MDFiZGU2ZWY0ODM3MzhhZGZiNjI0YzI2MDhkMjkgbGVnYWN5LXRydW5rCisyMjcxMyAwZGNlZTliY2Q4MTNlODYxNjA1Mjc4ZWQ5NmVjMTc0MTY3YTA4M2YxIGxlZ2FjeS10cnVuaworMjI3MTQgYjNjOTJmMDEzODY5ZjA2ODllZmZkNTJjYjVhMDE5OWFhNzlkNWM5ZiBsZWdhY3ktdHJ1bmsKKzIyNzE1IDQ1ZWEzYjVmY2JlNTc4N2IwNWNiZWM2NTc2MWY2NWQ4YWZiZWE2MDcgbGVnYWN5LXRydW5rCisyMjcxNiA4ZDJiMmNiMmZlYmNmMDRlOTUxMjFkOGE2OGViYThjM2Y0MDNmMzkwIGxlZ2FjeS10cnVuaworMjI3MTcgNTUzZDY4ODQzOGM0MzQ1NmVhNzQ1ZTU0OGNmYTIzNDgxMzI1OTE0NSBsZWdhY3ktdHJ1bmsKKzIyNzE4IGMzOTJjM2U0OWRkNTZlZDE0MmZlYzZlYmFjYWEzMTUwMWQyMjZmZmUgbGVnYWN5LXRydW5rCisyMjcxOSBmOWY0YmRjYmMyNWFhZTNiODUyZGI0YzEyYzQ4OWEyODdhMDIxN2ExIGxlZ2FjeS10cnVuaworMjI3MjAgYmM2M2FmYzcwMWVmNzBkYTY1ZTBmN2Q2OTg2ZmMzMjg2YjljZGVkYSBsZWdhY3ktdHJ1bmsKKzIyNzIxIDBlNzBkZjk4NDI0ZWRjYzM2Yjg4ODFmY2IwZGEyZmY0MzNiN2IxYTQgbGVnYWN5LXRydW5rCisyMjcyMiBlMWM5MWFjNTVjY2E4MDRjZTdkMTI5MjNiNDU4MzY3ZTQyM2U0NGQ2IGxlZ2FjeS10cnVuaworMjI3MjMgNjdiMzI1Y2UwMjI2ZDQwYWYxMDEyNGRiYTM5NTZmZmUxZDIzMDcyNyBsZWdhY3ktdHJ1bmsKKzIyNzI0IDQ3OTZhNjdhOTk4Yjk5MGNiODIzMzc4YjhkN2UxZTFjZGNmMWVkMzUgbGVnYWN5LXRydW5rCisyMjcyNSA5ODRmZmExMjQ2MDYwOWI5OTI3YzFiOTc3MTUzMjI0Mzc4NjM3MjI1IGxlZ2FjeS10cnVuaworMjI3MjYgNzdmZWE4ZmExZjE2NDMxYzM5ZmVlNzJkZmM0N2JkYWNjMWVmYWNiOSBsZWdhY3ktdHJ1bmsKKzIyNzI3IDkzY2I1ZWM0NDAxNzk4ZDUyM2E2ODFmMmFiZDY1MGZmMDMxYTI3NjggbGVnYWN5LXRydW5rCisyMjcyOCBjMTcxYjA3YmY2YTllOGRlZWZjZDk3YWNmYTZjOTk2YWFhOGMwMGU3IGxlZ2FjeS10cnVuaworMjI3MjkgZGU5NzdkNzYyN2ViZmZjMTkxNzEyMDZjYTQxNTAyZWVjNjUxYmNmMiBsZWdhY3ktdHJ1bmsKKzIyNzMwIDAwM2EwZmU5YzM1MDNlZWQwNmFlNTg5YTQ3NTM0YTZhZWJjOGNmYmMgbGVnYWN5LXRydW5rCisyMjczMSA1Yzg1OWQyY2IzN2JkYzUwNjk2NTJjYTgzNDBiMzNiMGE0ODdjZmFlIGxlZ2FjeS10cnVuaworMjI3MzIgM2U2OGUxYTAyYWQyMDhhZGQ4ZjMzYmFjYzJkNzAyMGJmNGM2MjAxOCBsZWdhY3ktdHJ1bmsKKzIyNzMzIDQyYjJmMTkzNjI1NDZlZDNiODE1MTdmYmRiNzM4MWQyNjA2ZWIyMGUgbGVnYWN5LXRydW5rCisyMjczNCAzZTc0MzE4YTFiNzYzYmRiNGIxNGIzODgyNjYwMTM2YjdkYjA5OGZmIGxlZ2FjeS10cnVuaworMjI3MzUgYzYzODUwMzhkZTM5YWZlNWM3MTI2MjZiZDE4MTRiNzA2ZTgxZTU4YSBsZWdhY3ktdHJ1bmsKKzIyNzM2IGMxYWM1ZjgyN2JjMjYzMDAzYzZjMmY1OGU0Y2FiMzM2YmFjMGIwMzMgbGVnYWN5LXRydW5rCisyMjczNyBkNzliNTE4NjdjZGI1MTkwMWE1ZWQxMjRmOTNlY2ZjMDNlNTQ2NGEwIGxlZ2FjeS10cnVuaworMjI3MzggNTZiNTBlNGQ2ODdlYmE1MTIzZGQ5MDE0OWI4NDA5ZmE2ZTE0NDAzMiBsZWdhY3ktdHJ1bmsKKzIyNzM5IDY3MzRjODA2NTExNDhmNWEwODU1YWY2OGQ3ZTdkZGQ4MzZiNTFjMTUgbGVnYWN5LXRydW5rCisyMjc0MCA0MzU0YmE0NzM1YTA5Njc3NjE0NGM4Njc5MjFiZTI3NWFkYmU5ODQ1IGxlZ2FjeS10cnVuaworMjI3NDEgNjE3NTU1NTc5NjExZmEzYmIyNTc2OTkwZmU3MzJhMTg5YjQyM2EzZiBsZWdhY3ktdHJ1bmsKKzIyNzQyIDU0N2I2ZWYxMTA4Yzg0OTQ3OWQ5MDZhMzRiYWRmYjFlY2ZhYTQxNTAgbGVnYWN5LXRydW5rCisyMjc0MyBmYzVjNzU4MDdlMTk1MmNiNmRlOTYyMjJiMDI3Y2Q5Zjg1OTYxNWNkIGxlZ2FjeS10cnVuaworMjI3NDQgMDc4MjkyYmY5NGNjNzIxMGE3NWFlZWQwNGQ0Mjg0MDhiNWJmYTUwYSBsZWdhY3ktdHJ1bmsKKzIyNzQ1IGQwY2UwNDYwZjRhN2M2MWFkZDQ4NGJiNWViYTdiYTBhYTc5ZDhkMjYgbGVnYWN5LXRydW5rCisyMjc0NiBjZTRmMWU5OGJhN2U0MzY5YjNlYzkwNmU5M2E3ODNmOGFjNjYzN2NjIGxlZ2FjeS10cnVuaworMjI3NDcgNjJiZjk0MDFhMWFjZmRkZmI5ZWM5ZTRlNTMzYzgwYmJkMWY1ZmYxOCBsZWdhY3ktdHJ1bmsKKzIyNzQ4IDE3YjJhZmJhN2E2ZmIwNGEzMTIxZTI0MTZjOTk5ZTcwZWJkOTRhYzQgbGVnYWN5LXRydW5rCisyMjc0OSA1OTkzMWRiNTcyYjI0NDlhODgyNzM1NGIwZmQxYmJkYzNiOWFhN2ExIGxlZ2FjeS10cnVuaworMjI3NTAgZmVmZTk1MzE5ZjI0YjBkMjIyMjBmMDIzYzg0NWIyMjBjYjM2OTczNiBsZWdhY3ktdHJ1bmsKKzIyNzUxIDg3NjI4MDMwYWQ3NWQ2ODdiZmRlNDk2ODViNTlkOTc5ODM1YTBjNzcgbGVnYWN5LXRydW5rCisyMjc1MiAwNzZhYjhjYjQ1MWVhMDIzNzY5Y2MwYTYzMWVmOGM2ZmU2MTk4YTY5IGxlZ2FjeS10cnVuaworMjI3NTMgZGJiYTJjYTdkYzFlNWQ0ZDM2ZWRiOTlkYWNkNWVhYzQwNTU2MDA0YSBsZWdhY3ktdHJ1bmsKKzIyNzU0IDMzNGY0MTc4NDc3YWE3NzcyMTY5MWM0NGMzMDJjN2RlYTczMjY3NTQgbGVnYWN5LXRydW5rCisyMjc1NSBjZTMxOWI4MmE4ZTRkZDlkMzJmYzI2NTI2ZWVlN2Q5YTdkMDliZDhhIGxlZ2FjeS10cnVuaworMjI3NTYgNWNmOTI0MWQzNWIwOWE5YjBkZGZjM2Q5MjllZGU3YzczYTJkY2I4ZiBsZWdhY3ktdHJ1bmsKKzIyNzU3IGNjMDIzNDFkZWRlNDdlMDU4ZDVkNjQ3NzE0MmRlN2ZmYjcwYWZhNGEgbGVnYWN5LXRydW5rCisyMjc1OCAyNDQ4MGE2ZDI3YzRkNDc5MzVjOTQ0Y2QxMDljMzVjNzAwZmVkNzUzIGxlZ2FjeS10cnVuaworMjI3NTkgYjFhY2JjZjdkNTg2ODQyNmNlY2ZiNDBmODk2OGU1MTY5NDc1NWU2OSBsZWdhY3ktdHJ1bmsKKzIyNzYwIDU0NmVmMzE4YmE1ZGNkNGE3M2I5ZDc3YThiODUzNmNiYjQwOTYwZWIgbGVnYWN5LXRydW5rCisyMjc2MSA0YWVjOWNiN2ZlNWQ5ZDU4MzMyMDA1Y2I1NTgwOWU0N2Q3NWViYzY2IGxlZ2FjeS10cnVuaworMjI3NjIgMWE2Y2YzMjUxNDFlMGQ5NTVmMjBmZmVlMjI1YjQ4MWM1OTExNDM0ZCBsZWdhY3ktdHJ1bmsKKzIyNzYzIGZiYjM1MjY4ZmVkNGY4NzhiMWVjYTgyMzRjNzlkMDVhNmE3YmUwYzggbGVnYWN5LXRydW5rCisyMjc2NCA5OWU5NTNjNjcwOWNlZWY0NzE4YjNlMjE3Mjc1NDc1M2VjODYwZjdmIGxlZ2FjeS10cnVuaworMjI3NjUgYzBjNWZlNzkwMmNmMjcxYzI2MTRjNzQ0ZWI5MjBlZDlkZDBmNzRlZSBsZWdhY3ktdHJ1bmsKKzIyNzY2IDQxMmQwZWI1ZDRiYTUyMTQyNmQ4MjRhNGUxOWI5NGE0NzhkZjMxMTQgbGVnYWN5LXRydW5rCisyMjc2NyBhMDg0N2I3YTg5MDI4Yzc2NjE1ZjgwYjFiMjllN2M2NjMyNWQ4NjBlIGxlZ2FjeS10cnVuaworMjI3NjggM2E5MDIxMWEwMjk1OGZlYWU0ODdlMzAzZTk1ZGFkOWUyNmI1MWRiMiBsZWdhY3ktdHJ1bmsKKzIyNzY5IGFiMTk0ZjFmMDUzYjY2ZmRmODZjZmNiYWZmODNjYjc5ZTFlM2JmYjEgbGVnYWN5LXRydW5rCisyMjc3MCBmM2VjNTQ4ODkwOGIzYzQ5OWQ4NjAwMjAzNzIyZGJiZGJhODBmMGQ5IGxlZ2FjeS10cnVuaworMjI3NzEgNDQzM2ViYTczOWU3ZjE2YTdjMGRmMDEyMzAyOWY5ZDU1Y2E0ODAzZiBsZWdhY3ktdHJ1bmsKKzIyNzcyIGVjNTFlMTBhNjIyOWM2ZWMxNjI5N2RlMmY1ZWQ1MTgyZTU4MzIyZjkgbGVnYWN5LXRydW5rCisyMjc3MyA5NmEwYmIzYTg1MjFhMWI2YjU5ODIzN2U0ODdkMDk3MDZhZWQ0YTgxIGxlZ2FjeS10cnVuaworMjI3NzQgZGQ4ZDYxNTNhOGM2NWRiOGUxYzQ3NWM1NDQ5ODhmZDgxYzcxYzFmYSBsZWdhY3ktdHJ1bmsKKzIyNzc1IGVkZTdmY2I4YjBiMjM3NzFmNzE4MGZhOGNkMzhiOTc2YmRhZWYyOTcgbGVnYWN5LXRydW5rCisyMjc3NiBkZWFjZDYwMjcyYmUzMjQ3YmYwODZkN2QwNWYyYjI3ZGJjNWZmNGQwIGxlZ2FjeS10cnVuaworMjI3NzcgMjAyZDhkZDY1ZWI1YjJmZjRmNzBjOTdmMzBlNGE0NzdhOTY1NDdkNyBsZWdhY3ktdHJ1bmsKKzIyNzc4IDNlNzg5NzgyMjQ1OTdmNDE2MTMwOTg2MTU1ZjVhYTI4M2VkZGUzMTkgbGVnYWN5LXRydW5rCisyMjc3OSBkZTEwMTUxYTdmNjNlZGJkMTlmNDg1YWE1YWYwZjNhNDQ1MzNiMTNkIGxlZ2FjeS10cnVuaworMjI3ODAgOTc1MzYwOGUyZDU3YTNkM2M4MDcyYzFjNDMwNWJhM2FjZGNkZTE5NSBsZWdhY3ktdHJ1bmsKKzIyNzgxIGNmOWUzNDE4ODc2M2MwMjE0NTIzYzc5MDg5ZmJlMjMzODMyMGUwNWQgbGVnYWN5LXRydW5rCisyMjc4MiA0N2ZhNGFjMDQyZDdmMGUzMmU4MTI5NmNhZTYxZDNkZGE4NGU3ZjljIGxlZ2FjeS10cnVuaworMjI3ODMgYjRhM2ZjMTQ3OTI5NGI0MzkzYzQxYTVlMTVhYjU4MTc3OTQyMTU3NyBsZWdhY3ktdHJ1bmsKKzIyNzg0IDcyZDliN2MwZDIxMWRiNzY5NWIzNzdiN2I3MzI2MzYxODg2NjFlOGEgbGVnYWN5LXRydW5rCisyMjc4NSBlMTQxYjM5MmI2MWRkMmI0M2U1NjU3ZjdmZDJiODE5MTk4NDk5NzYyIGxlZ2FjeS10cnVuaworMjI3ODYgM2UxMGMwODc0MDFjZmNjZWI1ZDBlMDBjZWYxMDA3MjA1M2QzZjE0NiBsZWdhY3ktdHJ1bmsKKzIyNzg3IDJkMjUxNmUzNzI5OTMxMmNhNzQ2NGNmZDk1YzBmOWEyN2RmMGIxM2EgbGVnYWN5LXRydW5rCisyMjc4OCAxY2Q4NzY0MjM1OWNhNTk1MjlmODkzNWYxOTRiMzliZGI4MmFkOTI0IGxlZ2FjeS10cnVuaworMjI3ODkgZDcxMWU4MmVjZTIzMzJmMTAxOTk1ZWY3YzA4NzkxOWE4MjQ0NDY4YiBsZWdhY3ktdHJ1bmsKKzIyNzkwIDg1NjA1YzkzNjUyYjVhNGUwM2FiMjBlZjA0Y2RlMjUzZWQwZjhlNjEgbGVnYWN5LXRydW5rCisyMjc5MSA0NzdiNmRkZDQyNDI1ZjYyZDA4MzZlNjY3ZDQ0NmI5MTE3M2UwOTFmIGxlZ2FjeS10cnVuaworMjI3OTIgN2U2MjhmNjAyNDVlOWIyZDNiMGVmZGM0NzYwMjJmZjI3MGI5NDNkOCBsZWdhY3ktdHJ1bmsKKzIyNzkzIGRhNWVlYmJmZTQxZGE1Zjc1OGJmZDRkM2VlZmNkOTM4NTAyNjUxM2YgbGVnYWN5LXRydW5rCisyMjc5NCAxMWE3NThjNTYwMjc5MGY2OTM0YTMwMjdmYTBmYTU1MzQyMTU1MGU5IGxlZ2FjeS10cnVuaworMjI3OTUgMTlkMjcxZjI5N2RjNzU4Y2UzN2U3NTA2NmVmMDkyZDVlMTYyODdjZCBsZWdhY3ktdHJ1bmsKKzIyNzk2IDAxYTY5MDFjZDMwNWUyOWVhYzcyZTUyZTJhNzc2MWFhM2U5N2JkZDkgbGVnYWN5LXRydW5rCisyMjc5NyA2YzMwZDIwZDI3ZjJjY2E4YWFhNWU5MjViYThlNTIxOWM5NjcyYThiIGxlZ2FjeS10cnVuaworMjI3OTggN2IzOWQ5MTQyNGEyYWYwYzlmMTJmNjUwNzBmODFlMzg5ZWJjZjg0NCBsZWdhY3ktdHJ1bmsKKzIyNzk5IGRkYzRjMmY1ZWZiYzk1OThjNWE4MWQ4N2VmMDJiNjEyZWI2NWEzYzEgbGVnYWN5LXRydW5rCisyMjgwMCBlYTc2ZGVhNjQ0MGY5Nzg1NzY5YmM0NDNlMTNhNzI4NzJmZDU3OTg0IGxlZ2FjeS10cnVuaworMjI4MDEgMzdlMGIwZmNjYTU0MGY2N2IzODE2OWU1YWQ1NGVhYTc4OWVlNTNiYSBsZWdhY3ktdHJ1bmsKKzIyODAyIDJjMmNjMzFiZGYxNTNhYzY3MDVjMmNlNDQ1OWMyYWMzNTEwOWVmZWUgbGVnYWN5LXRydW5rCisyMjgwMyAwMjI1MWIwNDhiYmJmMTkyY2IwNjYwN2U0NDA0ZDg3ZTc2ODA4NTAxIGxlZ2FjeS10cnVuaworMjI4MDQgMTg0OWY0OWFhNmY4NjY1ZmI5OGU3ZjEwMjg4ZmRjNDQwMjJhYzFjYiBsZWdhY3ktdHJ1bmsKKzIyODA1IDA3Mzg4YTZhNTUyNmI5NWE0NDIzZmEwM2RkNzMzNDk0NDY3Y2I5NDAgbGVnYWN5LXRydW5rCisyMjgwNiA4MTE2OGVmNGNiNjU4YmY1Y2ZmNDc5YjEzNGUwYjY5YWU5ZTQ5MGQ5IGxlZ2FjeS10cnVuaworMjI4MDcgNDliYjQxYTY5ZGZjMzhlYmM2YzRhNzgwOTAzMDAwOTNjZDczMmUzYiBsZWdhY3ktdHJ1bmsKKzIyODA4IGQ5ZWNiMjE3MDM1NGY1NjJkZmE2YmNiZGU4ZTkyMzY2ZWIxZjJmYTkgbGVnYWN5LXRydW5rCisyMjgwOSAzODExNTgwZmRjMzczY2NkNzJkOGVjZmM5NGY0NGVmNTE3ZTY5Mjg0IGxlZ2FjeS10cnVuaworMjI4MTAgM2ZhMjljZjczMTlkNDg0NTA1NjhkZDlmNWMyOWJmMzAxYjY5OGI2NSBsZWdhY3ktdHJ1bmsKKzIyODExIDg1NmUzZmExNGNiYTY4ZmY4NDNkMDZkOTgzOWNlYTAyOWJkNjdlMzggbGVnYWN5LXRydW5rCisyMjgxMiBiOThlNDM0NjI1N2JmYmMzN2MxOGY4MzEwOWIwYTljNzY3NTA2ZDk4IGxlZ2FjeS10cnVuaworMjI4MTMgYjBmNTI3OGEyYWI0MzdmMmQxMTY3OWZlNTE4NGJjMzI1NjdmMWI2MSBsZWdhY3ktdHJ1bmsKKzIyODE0IGNlYTdmZWExNzQyYjQwMzg0MTYzNTRiMDJmMzRiNzE2MTJmMTk2NzIgbGVnYWN5LXRydW5rCisyMjgxNSA5ZGE2OGMwMzc5YWJiOWJiZWI1YjFmZGI5MWFlNTJkMDE3NDE1MzNiIGxlZ2FjeS10cnVuaworMjI4MTYgYzQ4NWQ3NzM3NmZhNDA3NTA2MDhmMzUzYzU3N2YzNDU4MmVhZTcxMyBsZWdhY3ktdHJ1bmsKKzIyODE3IDQ3NmViN2RjZWVlYzI0OTdkNGIxN2YyYjBlMGI3MjYyNGMzOGIxMTAgbGVnYWN5LXRydW5rCisyMjgxOCA3MjU3NjJjYTI3NzQ5YWQ2ZWE5N2MzNzU5YTg0OTJhZDk3YWYxZGZkIGxlZ2FjeS10cnVuaworMjI4MTkgMjY1ODhkNzAzNTMwOGYxMGMzOTU0MGY0MzI4YzZhOGQ1NjFlNTY2ZCBsZWdhY3ktdHJ1bmsKKzIyODIwIDdlZGMyZmNlMWY4ODE1NzQ4MjhlZDhkZWFhZmQ0YmQ0ZmNkYzliMmMgbGVnYWN5LXRydW5rCisyMjgyMSBiNjczMDk0MDdjZmM4ODU0YzEzNDBmMDBjMjQ1OGQxNmY3Y2ZmZmNmIGxlZ2FjeS10cnVuaworMjI4MjIgZmJkNDlkMTcxN2M0YzI4MzhhZGNlYWEzNWFmZmNmYzlmYWU2MWFiZiBsZWdhY3ktdHJ1bmsKKzIyODIzIGY2ZjkzNDE5YmZiNjgwMjNjYzI0YjgwZmVlMGYwZmUzNDA3NzM4OGYgbGVnYWN5LXRydW5rCisyMjgyNCA0M2RkYzQ2YzVhOTk2NzhjNzkwMmUyNmU4M2RkYTUyNjk2MzcwY2VkIGxlZ2FjeS10cnVuaworMjI4MjUgZGMyNzgzOWMwYjgwZmFiMWVmMGEzMDc4YWZmNzJlNTQzODBkODg0OSBsZWdhY3ktdHJ1bmsKKzIyODI2IGZkNDhhNTVhYzM2NGZlMzA3ZmFjMjZhNzg2YmE4NDEzYjQxYmRkOTcgbGVnYWN5LXRydW5rCisyMjgyNyAxM2E5M2E1ZGNiMWRlNjdlNzJiNjJiNDJhYmNmZjRkZDgwOWFiZDgwIGxlZ2FjeS10cnVuaworMjI4MjggNDRhNjJlM2I3MDZmOTI3ZjJhYjMwMTZiNDliMjRlZWQyZGM3ZmI2OCBsZWdhY3ktdHJ1bmsKKzIyODI5IGMwY2YxYTI0ZmMxM2RkOWQ5MzE0NDdlMzIyYmYyNmZkNWMyYjhiMzYgbGVnYWN5LXRydW5rCisyMjgzMCBjNDNkN2E4ZjAwYTQ1OTVhYTAwMmZlNjJjZTRlYjZkMzRiYWU2OTA0IGxlZ2FjeS10cnVuaworMjI4MzEgYzU5ZjA2ZjM4YTQ2OGY5ODAzZTBlN2ExZGRlMzY0OWI3M2QxNjgyNCBsZWdhY3ktdHJ1bmsKKzIyODMyIDUwMDlmYTZkZGZlYjMyMjg2NzViNTYxYjU1ODdmMTc5YTFiNTAyZTggbGVnYWN5LXRydW5rCisyMjgzMyAyZmUwODkxOGZhYzY2N2M5ZjBlMGExMWY2ZDdjNzI2ZjE0ZDhkNzFmIGxlZ2FjeS10cnVuaworMjI4MzQgODQ0NTUzNDczZmE0NjY4ZjAzNGE5ZDgxMmRjYTRlMjkyNzVjZWMwMiBsZWdhY3ktdHJ1bmsKKzIyODM1IGJmMmM3Nzg0MGYxY2M2ZmZiMDg3MmExOTU4OGE2NzE2MmYxNzRhOTEgbGVnYWN5LXRydW5rCisyMjgzNiA0N2UwYzBmZGQ0YzhhMDA3OTdiYzdhN2ZlNWZlMjVjOWEyMjJiZDA2IGxlZ2FjeS10cnVuaworMjI4MzcgODU3NjVlNjFkZWIwYzMxZDgzZDQwZGQ1OTAyMmMwYTIyN2E3MDY3ZSBsZWdhY3ktdHJ1bmsKKzIyODM4IGE4MGI0YjAwNmViN2NmMzNmODM4MmIyMWIzYjM2OTE1MWI3YjEwNjAgbGVnYWN5LXRydW5rCisyMjgzOSBjNDg2NTQ5NTlkYzQ2ZmQwMTQ5ZTkxM2JkYmUwZWMwYjIxYmRkNTE4IGxlZ2FjeS10cnVuaworMjI4NDAgZGIzNmUzOTZmMDQzMTcyMmFhNmIwMDMyYWU5ZTI3MDY2MzZlOWQ3OSBsZWdhY3ktdHJ1bmsKKzIyODQxIDFiZTE4ZWY4NjlhNDc4ODkzNzNkYTMyMTk5YjQ0Y2ZjNzk3MTc1OGEgbGVnYWN5LXRydW5rCisyMjg0MiBiYmRmODZmMzU4ZTk1NTg4OGI0MDRkN2Q1MWQ1NDBjNzkxOWUwZTRiIGxlZ2FjeS10cnVuaworMjI4NDMgMDY2MzE1NDQ3OTQxNmIwOTdiNGZkNTJhZGQyNmFkMmRiODMwNmUyOSBsZWdhY3ktdHJ1bmsKKzIyODQ0IDAwZGU3MTlhZTgzMTk3Nzk0YjU1ZmI5YzVhZjAyNDhkMTUzYmMyZWMgbGVnYWN5LXRydW5rCisyMjg0NSAxY2VjZTc0M2E3MDg0M2FjMzMxZmJiYjZkYWRjNWZlZGQ3ZTJjODNmIGxlZ2FjeS10cnVuaworMjI4NDYgMDRmZDM4NjljNmJiZWIyMDVkMTE5MWQ3MTFkZDk2Yzc1YmYyZTJjMSBsZWdhY3ktdHJ1bmsKKzIyODQ3IDkwNGIyZjk4MTFhMjkxMmVkZDVhZjU1NmExOTEzNTU0NGNkMGRlOGYgbGVnYWN5LXRydW5rCisyMjg0OCA1ZDk3MzQ0OGU2OTFkZjMzODU0ZWI0NmNmMjFlN2FlMjFlYTVlMWNmIGxlZ2FjeS10cnVuaworMjI4NDkgNGFjOWE0NGM3ZTQ3OGM5ZjliOGYxZmFhOTYyYTkwMzcwZjNhOTE3MSBsZWdhY3ktdHJ1bmsKKzIyODUwIDEwYmY0YmVkNTA5NmY4NGIxNzMxNGRlMDUwYTdhZTk2NmI5NWM5NjYgbGVnYWN5LXRydW5rCisyMjg1MSA2ZDVhYzNjNDM0MTYzNGY2MTQ2ZDJhYjlkMjJiN2ZjNzEzNjU3MjNmIGxlZ2FjeS10cnVuaworMjI4NTIgNDNmZTkzNzdlMmNmNjAzNjU2ZDUxNGIzOWMyYjI4OWM2Y2UxZjgxOSBsZWdhY3ktdHJ1bmsKKzIyODUzIDZiZWJhOGI2ZjYwYWRkOTZiMGE2ZWQ4OTUzZDBhMDNhODQ2MWU5ZWEgbGVnYWN5LXRydW5rCisyMjg1NCBiNGU5MTg2MTJkYzk3NTBiZWUzOGQxYTE3OTc2YTc2NzQ0MWU3MjJiIGxlZ2FjeS10cnVuaworMjI4NTUgYzc3M2RhYTQ0ODQwNmU4Yzk0ZGQ5ZGI0YWY2NmRmZjMyOWYzMjgxYSBsZWdhY3ktdHJ1bmsKKzIyODU2IDhmMDM1ODAwYTM3M2Q3NmM5OTY2ZmQ3MmZmMDc2YzNjNjhiZmMyY2QgbGVnYWN5LXRydW5rCisyMjg1NyBjMzk2YWZlZjFhYTkyMzI5YTQxZTcwODMxZDRlOWQyMzM1ZTI0NTBlIGxlZ2FjeS10cnVuaworMjI4NTggZjdjZjg5NjFjNjY3OGU0MGUzZDU0ZTMwZDRmNmM2OTI3MTZiNzY1NCBsZWdhY3ktdHJ1bmsKKzIyODU5IGY0YTg5OWU3ZWM5M2FmMDU2OGI2YjI2MjdhN2U2YTc3NmNlMTU4MjggbGVnYWN5LXRydW5rCisyMjg2MCAyNTNhYWExZWRjYmQxODA1M2IyYWIxNGNiMmMwYjhkNjhmY2E5ZGRlIGxlZ2FjeS10cnVuaworMjI4NjEgMzM3YjUzNjc5YzczNDg5ZDk1MjhlMTE0YTE2ZDY4OGU2MjQ4MzJlZSBsZWdhY3ktdHJ1bmsKKzIyODYyIGI3MzAxMDdkYmQxMzc1MmEwZmM5NzczMDE1MGZkMDA1MDhjMjk4MTIgbGVnYWN5LXRydW5rCisyMjg2MyBhODg1ZDg3NjFiZDI5MDUwMGY0YWFmZDQ3ZDdhZDlkODhiNTQzODljIGxlZ2FjeS10cnVuaworMjI4NjQgNTY2M2I4ODNlYTVkOTk5YjYxODQ3NmU4YjgwYjdhMDNjYTgzZTE5NyBsZWdhY3ktdHJ1bmsKKzIyODY1IGI3MDZjMDI3YzNjMGNhMTQyNWQ0OTE2MjEwOTNjZDM4M2QwYjBkMjkgbGVnYWN5LXRydW5rCisyMjg2NiAwYmVjNjk5NzgzZDAwOWJkYzJhMzRmODJiNjYxYWY1NTU5ZmQ4NzVhIGxlZ2FjeS10cnVuaworMjI4NjcgMWFjMTEwZTkwNWMyZjI1ZTRhNDk1YTljYmEwMGIwYjQwM2JiNjJkNyBsZWdhY3ktdHJ1bmsKKzIyODY4IDM4YTZkZGZmODY2ZjE3ODZlNTY0NGUyMDU1MzhjMDRiYzBmMDM2YWUgbGVnYWN5LXRydW5rCisyMjg2OSAwZjUxNDY1ZjlmMzM0MGM2OWQxMjY0MzM1MTM1NTQyNjA3ZTBmOTJlIGxlZ2FjeS10cnVuaworMjI4NzAgZDEwNjUzZTcxY2ZlMDQyMjA1YzM2ODBiYjI4N2JjZWRhZDBiZDYzMiBsZWdhY3ktdHJ1bmsKKzIyODcxIGYwOWJlNjQxYzdhM2ExYjE5MmRkZDJhY2U3Y2YwMWJjNmZmOTU4ODYgbGVnYWN5LXRydW5rCisyMjg3MiA1NDUwODBlMzA2MjdjZGNiMGVjZWMwNDAxMzgwMjI4MmYyOTFiNzhiIGxlZ2FjeS10cnVuaworMjI4NzMgZWYyY2Y5OTQzYWNkYTdlZWQyYzQyYzdkMGJjNzkyNzA1MWYyNDg3NyBsZWdhY3ktdHJ1bmsKKzIyODc0IDQzY2QwYjRlNzI2MWZkODEwZjhmM2I5OTFkMzZlMjRhMDgzZjI3YzYgbGVnYWN5LXRydW5rCisyMjg3NSBhZTA1NmYxMTQ5NzQ5NjU1M2U4ODk3ZDNiYjIyOThmZDQwMjIzMDAwIGxlZ2FjeS10cnVuaworMjI4NzYgYWQwY2NlNGE1ZGUxZjc4YTIwOTNmYWJjY2JmM2UxOTM2ZmFmYTM2ZCBsZWdhY3ktdHJ1bmsKKzIyODc3IDIwZmI3NTkxZjg4NTU5YzBhNjk2NTUyMDIwNDkyNjI0OWVkZTVhYzEgbGVnYWN5LXRydW5rCisyMjg3OCBjMGE0NDgyOWJjZDVmZjI2MTE1ZjFiOTVhNzc3Y2I0MDFkN2UyZjMwIGxlZ2FjeS10cnVuaworMjI4NzkgY2YxOTE5ZWE5NGMyOGEyZjFkM2Q5ODQwYzg2YjY0N2M4NzNjMTI2OCBsZWdhY3ktdHJ1bmsKKzIyODgwIGY1Y2RlN2VlYjZkNzdkYTY5ZmJmNTg3M2M1NjAwM2NjYjgwYjUwMzkgbGVnYWN5LXRydW5rCisyMjg4MSA3MWQ0NWYzMTRkOTBhZTM1MmVmMTZlMzgyOWIzM2E4ZDMwOTU0YTIxIGxlZ2FjeS10cnVuaworMjI4ODIgMDhhYmVlMmEzOThlZmE1NGVmNDZhOThkNDYxOTU1OTY1NWQwYzE0NCBsZWdhY3ktdHJ1bmsKKzIyODgzIDQwZmVhZWRiNzg2N2UzNGM3NzhmNmY3YmNiZjBkOGJmMjJiZGM0YmQgbGVnYWN5LXRydW5rCisyMjg4NCA2MGYyOTBhN2VhZThjMTQ4OWIzZjdkODI2YTk2ODEyZTJjZWE1Yzk2IGxlZ2FjeS10cnVuaworMjI4ODUgZjRhZjI3Y2IyNjMyNDBhMGEyMWUyZTI3NDc1ZWQ4NDdlMWNhY2MyMyBsZWdhY3ktdHJ1bmsKKzIyODg2IGM5NjQ3ZmE3OGYwNTJmM2VmMGI1M2JhZWVmMzUwMWYwNTYxMDEyMzYgbGVnYWN5LXRydW5rCisyMjg4NyBlMDNjZTJkNjU1ODU1N2EyOTQyZGFlMjYyODA4NjljZTJkZTFkYzljIGxlZ2FjeS10cnVuaworMjI4ODggYjFiMDQ3OWM5MTA2ZDVlZDczYWZmZmM1MWJlNmExNTk0YzJjYzliNiBsZWdhY3ktdHJ1bmsKKzIyODg5IDkyZGY2ODQ1MTIwZDY0NjE4Mzc5ZWZjOWQ2Nzc1NGRmYThkNTQ0YTEgbGVnYWN5LXRydW5rCisyMjg5MCBkNTViNzVhYzJmYjQ4ODMxNjVmNDg1MDAxOTc1ZmNmNThlZGE0ZGRkIGxlZ2FjeS10cnVuaworMjI4OTEgNzk3NDA5ZDk3MDIyNDVhMzliMzdjNDE1YTg4YWRlZmM2NzU2MGIxMSBsZWdhY3ktdHJ1bmsKKzIyODkyIDAxZGFlOGEwM2Y4NjM3NjIwNmM4NGZkNmJlYWRhNmZhZjExMzc4ZDIgbGVnYWN5LXRydW5rCisyMjg5MyBhM2MwNDVmYTQ5ZjUwY2E5NTdlMzg1OWFiMDc3NWQ5YjA3OGQ5Y2MyIGxlZ2FjeS10cnVuaworMjI4OTQgYTRmZWVmY2UwY2U4NDk2OWFjNDk1NzRmMWU3MjEwNzIzM2ZmNjFlYSBsZWdhY3ktdHJ1bmsKKzIyODk1IGQ0YjNiOGUyMzU0NGI4ZjRkZWY4MmI3NmE5Yjg5MGM0ZjQ2YTA4ZGMgbGVnYWN5LXRydW5rCisyMjg5NiBiMzllNTZkZmUzNWQyYjk5NDRlNDIxZmYxZGY2OGU4YjEyY2ViNjIxIGxlZ2FjeS10cnVuaworMjI4OTcgZGUwZjAzNTIwNWVmOWEzNDdjM2I0Njc2Yzg4NTc4ZGUyY2FjNTkzOCBsZWdhY3ktdHJ1bmsKKzIyODk4IDc5ZTIzMjdlNTFkNjEzNmQ4ZDIyZjZlZjM1ZGVmYTI4Yzk1Y2ZlMGEgbGVnYWN5LXRydW5rCisyMjg5OSA2YjgxZjllOWQ4NjAwYTI4NGZlYTNjMmU4MzhlMWVlZDNmMDNiYWQ4IGxlZ2FjeS10cnVuaworMjI5MDAgOTJkMGZhYzhhMTY5MzRmNTllMjIyNTg3YzUxYjMzMjZlNjhjMjE0ZSBsZWdhY3ktdHJ1bmsKKzIyOTAxIDU3NWY1MGNlY2ViYTE4MzFhOTg5MjBmNDIzN2ZjODAxZDI0NTQ5ZGQgbGVnYWN5LXRydW5rCisyMjkwMiA5Mzc5NjU1MTZiNTQ3MmYyOWY0ZjQ1NjhiOTgyZDliZDBlNDU1NTg4IGxlZ2FjeS10cnVuaworMjI5MDMgMmZhNjE1ZGZjNDY0YzgwZTI2MzQwYTY0YmE4OGI2MGQ2ZGMxZGQzOCBsZWdhY3ktdHJ1bmsKKzIyOTA0IDgwYmViYzUzODlmZDBkMThiZjU3MTVjMTFiYzRiNjQ3M2EwMjk4NmQgbGVnYWN5LXRydW5rCisyMjkwNSBiNGVkY2U5ZDZlOTkwZWM0ZTkxNTYzZmRhNmY2MThhOWQ1NzYzOTZmIGxlZ2FjeS10cnVuaworMjI5MDYgODRiZTBjYWI2M2E4ODRiNDZiMGEyNzZmZTdjYWRkZjI4NTVmZGZlZSBsZWdhY3ktdHJ1bmsKKzIyOTA3IDc4MGU3NDE1ODVlMTBlMjZjNTZkMTFmOGJmYzFiYjM2N2FmODY4MzEgbGVnYWN5LXRydW5rCisyMjkwOCA4ZjhlOTcxMTMyYjg2NzM4NDY1NDI3MTQzMGE0NzI2NGVlMjlkMTkxIGxlZ2FjeS10cnVuaworMjI5MDkgZWM3YTJhNmNkYmU5YzQ4NmE3YTY4OTE0YjgzMGY2NWIwZjAwMzU3YSBsZWdhY3ktdHJ1bmsKKzIyOTEwIDA4YzNjOWVkZDk5YmIwYmExZTQ4MDgxYWJjNDBmZThjMDc0N2YyYWYgbGVnYWN5LXRydW5rCisyMjkxMSBjZjY1ZWJmODc1NjA5MTMxZThjOTNlNjMyYzY1ZDEzOGE4NWQ1NWQ5IGxlZ2FjeS10cnVuaworMjI5MTIgOGQzNThjMjRkY2ZiYjEwNDNhOTcwYThmYTExYjdkZGMxNmVmYjk4MyBsZWdhY3ktdHJ1bmsKKzIyOTEzIGNjNjA0YjcxMDM2YzRmZjhjMmQyMTNiNDhlYmNjODYyNzU5MDljNzggbGVnYWN5LXRydW5rCisyMjkxNCA4N2U4ZmMwYTk4NjJiNTUzOWM3ZjJhNmYyN2IxNjEzYzRmNDk2Nzc5IGxlZ2FjeS10cnVuaworMjI5MTUgNzhjZmI5OTNmMjc0MTkwNmQ3NDE4N2YwZjM2NTI4NGQ5MTdjNjkyZCBsZWdhY3ktdHJ1bmsKKzIyOTE2IDdkZjMwMGQyODRjNmFhMDIzZjNiM2ZmMjUwODMwODVjZTA2ODhhZjYgbGVnYWN5LXRydW5rCisyMjkxNyAzNTg0NTUwYTYyMmFkNTlhNjkyZWFlODI5MmFlMTljYmJjN2ZkNDBhIGxlZ2FjeS10cnVuaworMjI5MTggYjMyNzEyOTdiOTg0ZWE0OWI2OTM2MTRkZWFjYjg0YjU3NzhjYmJjNyBsZWdhY3ktdHJ1bmsKKzIyOTE5IDcxNTI0NDEwOGZhYTBmNzcxOGJlOWI1ODYwZmNiMmRlZjJiNWM2OWUgbGVnYWN5LXRydW5rCisyMjkyMCA2ODVkY2FlNWMxMjM3MDI5ODM2YjllYjM5ZTEzNjc0NTdhMjA5Mjg5IGxlZ2FjeS10cnVuaworMjI5MjEgYzc2OGQzMTkxZGYxYzFlYmVhNWI5ZDE4NzZhZmYxNjhkMWJlNmZmNiBsZWdhY3ktdHJ1bmsKKzIyOTIyIDkxNTMzNjc1ZDZjYmYwYWQ1ZjI3NTE3NTFkMTU3MDA1NTQ1ZTU0NjcgbGVnYWN5LXRydW5rCisyMjkyMyA4MmRiOWE5MDA2YWM1ZWUzY2ViZjM3M2FhYWZhNWQ2NGFlNzhkZDJjIGxlZ2FjeS10cnVuaworMjI5MjQgNjk1ODc4NGIxY2VmMDE1Y2RkZmUyMzJiODg1NmE4OGZiOTk1YzQ0YSBsZWdhY3ktdHJ1bmsKKzIyOTI1IDNmODRiMjAwMGY2MmI0MTQ4ZmY3YTRmZjYyMjc0MDY4MDEzYTE0YzcgbGVnYWN5LXRydW5rCisyMjkyNiA3ZGU0ZTZiOGQxOTljMGU0YTQ1MmRjZWRkMTgzZGRhOTBkNzMzNDBkIGxlZ2FjeS10cnVuaworMjI5MjcgOGRmYjEzYTRlMTc1YzBmMzUxNTYxMzZkYTFkM2M1ODRlMGRlNTc3MCBsZWdhY3ktdHJ1bmsKKzIyOTI4IDhjYmM3NGY1NTg2YjUwNzY3ZDMwZDYyZWYzZWQ2ZTcyNWViMTk4NWYgbGVnYWN5LXRydW5rCisyMjkyOSA3MTRhZWVjYzIzMTYyZjc0N2JhZDFhZmY3ZTJlZWRjYzlmNjNkZWZkIGxlZ2FjeS10cnVuaworMjI5MzAgNmViYzI2MzMzZTZkN2NjMWVhZWUzOGFlNTZkYTRhOTY1NmY2ZjQyNSBsZWdhY3ktdHJ1bmsKKzIyOTMxIDc0OWU0OWM5NDdjMDcxYmU5MDMwYThkODUwYmZkMDM4Y2UzMDU5ZmQgbGVnYWN5LXRydW5rCisyMjkzMiAzNzMxYWQxZDkwMzMzZWQxMWIzODM4NzM1OGIzNzdlN2YxY2UwMmVkIGxlZ2FjeS10cnVuaworMjI5MzMgMzFhNjZjMGM3ZDMwMWU2YTNhZTI1N2FmMTA3ODc1OGQ1ZDQ4NzlmYiBsZWdhY3ktdHJ1bmsKKzIyOTM0IGNmYzVlNTE2MGNmNWRmODI2NTAyMWI3MzkyNDI2NWRmYmI3NDkxNGEgbGVnYWN5LXRydW5rCisyMjkzNSA2YjgyODUzZGYyZWRiNzg2Nzc3ZmIyZGNmMzVmOTdiNmZkNDA1NDk0IGxlZ2FjeS10cnVuaworMjI5MzYgOTMzZTgxMjk3NGMzZWE5MGQ5M2UyZTAyMDQ1NzY2NzE2NGNjMGMxMCBsZWdhY3ktdHJ1bmsKKzIyOTM3IDA0MjE4ZTg1YjE1NmZkNjU4ZjQ3MDBjMDEwMDQzMDBmNGI3MGVkYzAgbGVnYWN5LXRydW5rCisyMjkzOCA2MTdmNWU3MmIwZWM4MzMyZDkyZmQ5NWExNjRjMjQzMWEyMjhiYjg2IGxlZ2FjeS10cnVuaworMjI5MzkgMzcxNmIxMTZmYjMxMzIyNTViNDU3NGNiMTU5MDlmZWFlMzFkNGQxZSBsZWdhY3ktdHJ1bmsKKzIyOTQwIDk4MzBkMDBiODg3ZGZhNDI2ZDBkOTkyMDZiZmRhNDg4ZTdkYjQyNzkgbGVnYWN5LXRydW5rCisyMjk0MSA4NDNkYTk3OTUzODEzMDdmMDE1MjQ3YjFmYzE5ZmNiZTlkNzM0NjQ5IGxlZ2FjeS10cnVuaworMjI5NDIgYmM2YmQzNWY1OTk4ZGY0OWY1ZGM0ZjIyMTAxOTQxNmM2YmU3NzNmYiBsZWdhY3ktdHJ1bmsKKzIyOTQzIDM3MmQ4YzFkMmI2NGUyODhkNjEwMjA3MGNlNjFlOGY1NTYxZDFkYjQgbGVnYWN5LXRydW5rCisyMjk0NCAyYTRlM2M5Mjg1YjU0ZmJlODZiYzg3YzEyYmExZTY3NDIxOTA5ZDZkIGxlZ2FjeS10cnVuaworMjI5NDUgZmJhZjRlNTUyNjNmOTEwMzkzZjlmODdhM2YwZGNlODMxNDkyZGJmMyBsZWdhY3ktdHJ1bmsKKzIyOTQ2IDQ1NjU3Mzc2YjliOGNjOTM0NjM1YmZmNjhmMjNjYTYzYTJlZjc3MzYgbGVnYWN5LXRydW5rCisyMjk0NyBkNmUxYjEwOTE2MDk3MWIzNzI0OGFjMWRjNjJlM2MwNzM0NjNlMmM4IGxlZ2FjeS10cnVuaworMjI5NDggZTIwMmE3NWQ4ODFlMTQ3OTk1YmI0MzY1NTZmNmU3ODY5ZDZlZGE2OSBsZWdhY3ktdHJ1bmsKKzIyOTQ5IDE5MDFmODc1YjdkM2QxZDhkNGYzMDJkMTI3OThiNjJiMWRiODNmYmEgbGVnYWN5LXRydW5rCisyMjk1MCBiN2Y2ZmJjMDg3YTc3ZWFhNzA3NjcxYjI2YmEwZWUxMzNiYmU4NDNhIGxlZ2FjeS10cnVuaworMjI5NTEgNTAwNTU0NWI2NDg3ZjA2YTdlZDY5YWZmYjNkMzIwNDUxYWYyNDQ3OSBsZWdhY3ktdHJ1bmsKKzIyOTUyIDExYjM3M2IwMGYyYWZlMWFlZjA1N2U4Y2YyMzBmODA5NDc0ZDlmN2EgbGVnYWN5LXRydW5rCisyMjk1MyA2ZWFmYzRhNjM1OWE4MGE4ZWUxNTQxZTA3ODY1YWU0NjhiODExMWUxIGxlZ2FjeS10cnVuaworMjI5NTQgMGIwYzg0MDc4ZjkxNjBkYTI2MTVlZDgwZjcwYzNiNDc5YzkwYzQ0YSBsZWdhY3ktdHJ1bmsKKzIyOTU1IDFjOGE5NTBkNjk3MDBlNzViMTQ0M2U4MThiNDc4ZWYwMTEwZDIyMDkgbGVnYWN5LXRydW5rCisyMjk1NiBiZDI1MmIxODMyYTJkYmExODkwODAyZWEwYzM2MTZjNTY1ZDAwOTAyIGxlZ2FjeS10cnVuaworMjI5NTcgYjQ1MjE0MzZlOGY4Zjk5ZDI4MTcyN2EzNzc2NzgzYTU3ZGJhNTNmYiBsZWdhY3ktdHJ1bmsKKzIyOTU4IDk0MzNkZDNjMTk3ZWY0YjFmNmEzZDVhNTk5MmI2NDFiNTA5NjA1ZjUgbGVnYWN5LXRydW5rCisyMjk1OSA0NTBlNWEwZTkyNmI5NDBkYjg5MzlhMTQ3MmI4NzU3ODRjNzI0MDZiIGxlZ2FjeS10cnVuaworMjI5NjAgMGQ5NjE0NWM0NGI4OWY2YTBmZDNiODFkNzI4NjM1ZTYxOTJiNjIwYyBsZWdhY3ktdHJ1bmsKKzIyOTYxIGZiMmQ4M2FhZmY2ODY0NWZlN2Y2ZjJhMTBmNmMxODU0YmIxOTY2NTAgbGVnYWN5LXRydW5rCisyMjk2MiAwMWRlMGE3MDMwNjk4Yzc0YzMyOGU1MTRmNTNiZjJiYTJlNjU2NjY2IGxlZ2FjeS10cnVuaworMjI5NjMgZDE5NjQ4Y2E4NzQ5Y2NjMWE0MjQ5YjE0NTc1MjU5ZGIyNWI4YjVlYyBsZWdhY3ktdHJ1bmsKKzIyOTY0IGNkZmRkNTM1OTQxMWEwOTc0MjkwYjQwNDI5NzdiNzJlZWY0N2EwOGUgbGVnYWN5LXRydW5rCisyMjk2NSBhNjg0YjRjMTAxMjg0M2U5MzFiZTMwMjI3YTY0YWI0NTc5NzEzNTU5IGxlZ2FjeS10cnVuaworMjI5NjYgNzc2NmVhNzI0MzIwOTRmNzlmM2FiZjM0OTM4ZDk2MjhmNDQyNGY1NSBsZWdhY3ktdHJ1bmsKKzIyOTY3IDIxZDJiOWVlZGMyZGUxNzk5NjA0M2M0NTllZjVhMjA0NmVhMzI2NjAgbGVnYWN5LXRydW5rCisyMjk2OCAyYTliYmRiZWZiYjFjOTRmMWQyZmUyMDk2MzE2ZTc5NzE2NjEyYzY2IGxlZ2FjeS10cnVuaworMjI5NjkgYmE5YWFiY2Q4OWUzZGVjZWEyZWU5MmUxZWNkNTc3Nzk5NmQyZmI0MSBsZWdhY3ktdHJ1bmsKKzIyOTcwIDIyNmQ1ZWVmYTQ0YWZkNmI1Y2JjNTZiODY2ODg3YTYwMGQ5OTYzYWMgbGVnYWN5LXRydW5rCisyMjk3MSA1NDg3ZDlkNTNhMGUxZTU1MjEyMWJjOTAwZGI3MzMzMzc1MDk2M2ZmIGxlZ2FjeS10cnVuaworMjI5NzIgZjMwMzZkNGUzYzIyYWY4MTJmMDg5YWFlMTQxMzVmZTFmNzkwY2YyOSBsZWdhY3ktdHJ1bmsKKzIyOTczIDRkMmNiNmVhYTQxMTM4YzlhMDA0MmIyNTNlYjhkMWQ1ZWI1YzA1Y2QgbGVnYWN5LXRydW5rCisyMjk3NCBkZWIwOGFmODlhMzVkNjk4ODQ2MTJkMzJlZjExNDI4OWQwNjYzMDliIGxlZ2FjeS10cnVuaworMjI5NzUgMmU2ZGEyZGQyYWI4MjA3MGI0MTExZjU5YWI0NGZhZjUzNTQ3N2E0OCBsZWdhY3ktdHJ1bmsKKzIyOTc2IDg1ZWIxYzkxMWFlNWMwYzc2NmMwZjc4OGViZjVjZTM4ZjgwMmNkMTkgbGVnYWN5LXRydW5rCisyMjk3NyBiN2RjNTE1OTQ0OGY0OGE3NzMyMmI5MmRlZmRiZDlhMzQyODNiNTYyIGxlZ2FjeS10cnVuaworMjI5NzggMmMxYTk4MzA5OGEwNjRiNDhkOTI1YTI5MzhmNGZjZmIyYzRmOWU1NiBsZWdhY3ktdHJ1bmsKKzIyOTc5IGQ5ZGFhNGE2N2JlMjYyMzg5YTEwYzRmNjIyMTEwZDRhYTE0MzQ2MzIgbGVnYWN5LXRydW5rCisyMjk4MCBmNTZjOTE4MjBmYWUyZDJjYTgzYmQzZmE4MjFkNTZiMGE4NjI3Y2ZhIGxlZ2FjeS10cnVuaworMjI5ODEgMGU0NjQ2YmY4MDQxMTBlMzM3ZWUzODQ5NGE3ZTFlNDlhOTgxMmE0NyBsZWdhY3ktdHJ1bmsKKzIyOTgyIDU2YzU0OWEyNTNhNmU5NGM2ZmM5YTZhMTFhNDc5M2E4ZTliMjkzMjYgbGVnYWN5LXRydW5rCisyMjk4MyA1ZGQyOGFhMmJlNmJmZDAwNDA0MzEyYzBjNjY0MjE1OTIwMDlkNTFlIGxlZ2FjeS10cnVuaworMjI5ODQgOGQyYzc0MzZiOWQyN2Y3ZjMyNWNlNjQ5YjQzMjcwMmNkMzg0ZWEwOSBsZWdhY3ktdHJ1bmsKKzIyOTg1IDhlNmUyNDhkZmRkODY1YmI4YjZjMzIwMjhiNWI0MjYxNzI2ODlhMTMgbGVnYWN5LXRydW5rCisyMjk4NiBhNWVlYjFlNzBmNDFmMmZlODZkZDg1Mjc2MTI4Mjg2N2ZkOTljM2JlIGxlZ2FjeS10cnVuaworMjI5ODcgMmE0NjViMGViNTRlNDIwYWEzZGYyNDc5NmRiZjJlM2YwZWVhMjAwNCBsZWdhY3ktdHJ1bmsKKzIyOTg4IDg1NDE4NzhjZjJlMTNkMjU2MDRmYTk1MDM4YjRiZjhmNGMzYjg3MGEgbGVnYWN5LXRydW5rCisyMjk4OSBmMTQzMGUzMzgyYmJlNGJhZjgyNDJiOGI1ODU5OTgxNjkzYzE3NTljIGxlZ2FjeS10cnVuaworMjI5OTAgZGMwNTliZmI1M2IyMmVjZDY1MTIyODdlOWYwYmJkMjI1NTc4ZTIyZSBsZWdhY3ktdHJ1bmsKKzIyOTkxIDk4ODU2YTRhZWQxMDE3MjZhZTZkMjRiNWFkMDY3ZDAxZDg3MTJjYzEgbGVnYWN5LXRydW5rCisyMjk5MiA3ZmE0MDU5N2RhN2U3ZjkyZTM0ODBmYzY3YmEyMGM1NzU1NDNiMmQwIGxlZ2FjeS10cnVuaworMjI5OTMgYzkzZDdkMDg1N2EyNzZkYmNiMWExMjQzMWQxMTUyY2U0MzRiNWMxOCBsZWdhY3ktdHJ1bmsKKzIyOTk0IGZhMDYyMWU0YWQ4YWM3ZjdmOGQ1NzRjNGZhZTM0YzUzMWFlMzY5YzYgbGVnYWN5LXRydW5rCisyMjk5NSAzNWI2YTFkMGIxZTA1NGI0ZDY0ZTIwNTg5YWY4ZDI0ZmQ4Y2ExNTZjIGxlZ2FjeS10cnVuaworMjI5OTYgM2Q3NmRmYzM0YzU3ZTYzNzU1MjhkODE3NmUwMWJmOGQ1NDIxYmM4MiBsZWdhY3ktdHJ1bmsKKzIyOTk3IGRiYjlkODJjN2NlMzdmZjQyODU3MzA0OWE0ZjI4YWNiYjc5MzQ4MDMgbGVnYWN5LXRydW5rCisyMjk5OCBjMDU4MGQ4YzE5M2UzZTMzZmNiNzhjNTc5NGIzYWE2NDhkMjQ1NThmIGxlZ2FjeS10cnVuaworMjI5OTkgZTFmMWU5ZWJmMDUwMTNhNzA2ZTZmMDc5MTNjNjMyMTU0Y2M5ZmRiMSBsZWdhY3ktdHJ1bmsKKzIzMDAwIDVhN2FjOGMwNjNjY2NmYzBjNmVjMjdhMzA0Y2RkOWY1ZTM0YzBmYzQgbGVnYWN5LXRydW5rCisyMzAwMSBhMWQzOTcwODg1YmRiZWJiZTcwNmFkYjY0OWYxZThhMmI3MDcwMDU2IGxlZ2FjeS10cnVuaworMjMwMDIgY2E3Zjc1NzZkODIzZThjNzBiODZkMDJhNWY4ODgyZGVmMDUxNzI1ZSBsZWdhY3ktdHJ1bmsKKzIzMDAzIDY0YmNlZjE3MDJhZDk3YWUwMTdmZWY2YzA3OWZiNzE4YTFiNmNlOWEgbGVnYWN5LXRydW5rCisyMzAwNCA4ZTg3Y2RkZWQ5NmZiZmU3ZjVhNmU1YzJjNGUzMzQ5ZDVlNzYxNmIzIGxlZ2FjeS10cnVuaworMjMwMDUgOTZkYTk4NWNkZTk4NDI2YWFjNGQzYTFiNWQ0ZGE0OTNhOTA2YWMyMCBsZWdhY3ktdHJ1bmsKKzIzMDA2IDQ0MTc1YmIwYjdiZmM4MDdlZWM2ZGRhOTI5NjBkYmE5ODBkNGExNGQgbGVnYWN5LXRydW5rCisyMzAwNyBkMDkyNjhkMGVhNTI5YjY0OTEzY2UwNGI5YmJiZmJjNTNiMGE3MmI5IGxlZ2FjeS10cnVuaworMjMwMDggOTRkMGYyZWVhMDQ3ZTJlOGIxMjNlMzE5NzUxZGY0ZjEwNzBmNTZkNSBsZWdhY3ktdHJ1bmsKKzIzMDA5IDU3OGVmMzZmOGZkZTBhNDJiNmNiZGQ0YTRiYmU4ZTk4ZDg0YzMyODcgbGVnYWN5LXRydW5rCisyMzAxMCA1ZmNkMGQ0MWE0NDZiZDY1MjUwNzA5NGUwMGY0YThhZTQxNDdkN2JiIGxlZ2FjeS10cnVuaworMjMwMTEgMmJjY2U4YmFiOGJiZThkYmQzNzgyM2M4MjY1NzdhNDBlYTMzMGVjOSBsZWdhY3ktdHJ1bmsKKzIzMDEyIGQ1NDM3OGQzMzM0ZmQ0MjhlMGFhZWM5MTk0MjI4MGNjNGY1MGQxMDkgbGVnYWN5LXRydW5rCisyMzAxMyBkNGY1M2IxZmI0MjQwZGZjMmIzODdjZGVlMGQyNmNjZmRlOTViNTc5IGxlZ2FjeS10cnVuaworMjMwMTQgYTVlYWVmNDdhOWIzMzYwZmY0MjJjN2QzYTZhNDI4MzAyYzkwNDNkOSBsZWdhY3ktdHJ1bmsKKzIzMDE1IDQyZDBiZGU3MzUzM2UxMjQ1YzYzNTMxNDI2YzZmY2IyNWYxZWY0NDAgbGVnYWN5LXRydW5rCisyMzAxNiA0MzI1OTEzMjg0MTAyNDViZDhiNTA2NjE3ZjE0MWIwMThiYTZjZGRlIGxlZ2FjeS10cnVuaworMjMwMTcgMzM1YmYzZWFiOWYxYWRkOWQ5YTVmMDNhODk2NzM3NDg5MDE2ZjVmYiBsZWdhY3ktdHJ1bmsKKzIzMDE4IDZjN2RkOWIzZTUwYjVmMzM2OGQ0MTMyY2IyMzMwMDM5MzMyOGNjZmEgbGVnYWN5LXRydW5rCisyMzAxOSBjNTUyM2IwZjg5ZDU4M2RlZGVkMWVhNzBlMmUwMWIzODczMjI2ZGRkIGxlZ2FjeS10cnVuaworMjMwMjAgZWUxMmMzOGU0NmE2ZmMwMzVjODdhYzAyM2U0OWZlOTQxNjA2Nzc5MSBsZWdhY3ktdHJ1bmsKKzIzMDIxIGIyMzIzODY0NmQxNTZiMmQxNzA5NTQxZGFhYWFmZWI4NzVjOThjNzcgbGVnYWN5LXRydW5rCisyMzAyMiBlNzE0NzE1NmVmMzNlNzRhNDc3YmMwNzEzYTFiYTQwOTkwMjdmZjJlIGxlZ2FjeS10cnVuaworMjMwMjMgMWM2MmI0YTU5N2Y2ZTcyYjA1YzczZGYyZmMxMmZiNWYzN2M1ZWU4MSBsZWdhY3ktdHJ1bmsKKzIzMDI0IDA3YmIwOWRmMzMyNGYxMDIwMWM4ODI5Mjk5Nzk4ZGQ2YTQ2NzM3ODggbGVnYWN5LXRydW5rCisyMzAyNSAxY2M4NGRmY2Q2YmQyNzRmM2I1N2Y0YjM0NjZlZjg5YzBjYWMyNWQyIGxlZ2FjeS10cnVuaworMjMwMjYgN2I3MjJiNmNjNzdiMzFjMjg5ZjI2NTgwMWFlN2FiMzAyM2JjNzg2MiBsZWdhY3ktdHJ1bmsKKzIzMDI3IDlkZTJmN2UxYjZlOGI5YmUzODFiYTEwYWYxMDY5NTM2Mzk3YmM5OGMgbGVnYWN5LXRydW5rCisyMzAyOCAxM2I2NTRjZTYzYTQ3N2JmNmQ2ODVhNWExOGRjYmIxZDIzZGE0OTA5IGxlZ2FjeS10cnVuaworMjMwMjkgMTczMTIyZTVlZGU0MTcyYzQxMWExZThiNjgwYWQ3MDZiNDY4MDk1YyBsZWdhY3ktdHJ1bmsKKzIzMDMwIGM3MzdkMTNkYTkyZDJhZTBhMDYwMzBhNmE5MDhiMjE4OTE1NTU3ZTMgbGVnYWN5LXRydW5rCisyMzAzMiA0YWJmYzE3NjY4NWMzMDJhMjFjMTYwM2M1N2U0YzdiY2M0MzA5NmY0IGxlZ2FjeS10cnVuaworMjMwMzMgZjgxNGVhNmJiNjY3NmI4MjQxOTVjNTEyMDhkZDY2M2E3YzlmZWFlMiBsZWdhY3ktdHJ1bmsKKzIzMDM0IGNhZDkzM2E0NTRmZTYxZDRkZjE4MGFhMmJlMjkzOGYyN2U4ZGM2NmIgbGVnYWN5LXRydW5rCisyMzAzNSA5NGUxNDFlMjBkNjE4ZThlMTMxZjkwYmY3Y2RhYzI2MTFiYWE4OGNhIGxlZ2FjeS10cnVuaworMjMwMzYgMGI1NzcyOTI4NGRmYjRlNmMyMzlmMTZhYjM0OTQxZTE5NDI2ZTA5OCBsZWdhY3ktdHJ1bmsKKzIzMDM3IDkwNzk3MTBlYzIxNjk2ZTM5ODQ2Nzk4MmNiYzYxYzhjOTFiNjk2YzYgcjIyYTMtYnJhbmNoCisyMzAzOSA5NjA0NzRkMTI5YWVkNzM2NWVjNzlhYWViMGEyNmJjYTRkZmU4NjQzIHIyMmEzLWJyYW5jaAorMjMwNDAgYzk3ZGRhMjM4YjM2MjY2MWJhYjc3YmJhOWQwYWMzYTc5YzUyYTIxOSBsZWdhY3ktdHJ1bmsKKzIzMDQxIDNmNjIxNDg5YmU3MjFkYTZlNGFlNTJiY2U0NDY3MjlkZDcwNWI3MjcgcjIyYTMtYnJhbmNoCisyMzA0MiBiMzVhMmJmMGM5ODBhYjQ1M2I0ZGFhNDMxZGQxYTRhOWRjMjdkZjM3IGxlZ2FjeS10cnVuaworMjMwNDMgZTJlOWYxNzIyYzRmYTI5ZjBjZmNlMGZjZGQ4Mzk0MTk1ODcyZTAwZCBsZWdhY3ktdHJ1bmsKKzIzMDQ0IDk1ZWE2NjEyMjMyNTY4OGUyNGI3ZWIxNzE0YWYzMjIzODVmZjU3M2EgbGVnYWN5LXRydW5rCisyMzA0NSA5YzU0YTE2YWM4YjllZGM1MzRkYThhNmQzMjE1ZjQ2YzI4NmUwMmExIGxlZ2FjeS10cnVuaworMjMwNDYgNzAwZmVmZGMwM2QyODVmMzI0ZmFjZTMzYjNhODc4NWZhMmI4MmNmYiBsZWdhY3ktdHJ1bmsKKzIzMDQ3IGMwZjk0YmM1ZmZlODA2ZTc3ODYxZjY5MmJiZDE2MTQ0YTEzOGQ4NzkgcjIyYTMtYnJhbmNoCisyMzA0OCA3NzA5N2E1NWU5NzMxZjA1ZTA0Zjc4ZDVhNTMyNTY5ZDM5ZTliZmU5IHIyMmEzLWJyYW5jaAorMjMwNDkgMDMwODBlMzk1YzllZDBmZWE4NTgzNTZmZTkwMzc1YWViZWZlN2E4ZiByMjJhMy1icmFuY2gKKzIzMDUwIDc4ZTczYjg1MWFhOWRiYTM2NGZlOTFmZmI2MzdkMzQ3OTY4YWM4OTkgcjIyYTMtYnJhbmNoCisyMzA1MSAyODViNzQwYjg0NDE5MmM2N2Y4NDM4MjBjNjI2ZDY0ZWRhY2M2NmEzIHIyMmEzLWJyYW5jaAorMjMwNTIgNDNkYzgyN2RkNzE3Y2FmYmFkNWI0YTQ0NWE3ZjI2NTNmNTFlODEzNSBsZWdhY3ktdHJ1bmsKKzIzMDUzIDA5MWMwMWQwN2Q5ODE0MjdjYTE0YzEyMDg0ZDIyZjk5OGY5ZWM5ZGQgbGVnYWN5LXRydW5rCisyMzA1NCBkNDgwMTRkYmI4NWY2YTlhNWI2ZDJlYzA0NDBjZjVjMzA2MjkyYzA5IGxlZ2FjeS10cnVuaworMjMwNTUgZWQ1NDk0M2NlMjRlMGZlNDQ2ODg4Zjk1ZjgwNmQxOGQ5NmNjNDc2MSBsZWdhY3ktdHJ1bmsKKzIzMDU2IGZlMjI5NzI3YTQwY2ZkNDlkYjQxOTYzYmM1MWFhZTMyY2Y2Mzc3YTkgbGVnYWN5LXRydW5rCisyMzA1NyBiNDdkMjk2OTljZDI5OGIxYjJiNDMyNmY4NDU1M2JlNjk1ZGEzOTE4IGxlZ2FjeS10cnVuaworMjMwNTggMzJjZmNlNGQ4M2RjMDYwNDgwYjkxZmI0OGE0N2JjNDhiZWEzZTg0MiBsZWdhY3ktdHJ1bmsKKzIzMDU5IDkwMzFhYWIyN2VhZWRkMmE1MGI0YjNmNDM1MWUwM2QwZjc4OGM1YzkgbGVnYWN5LXRydW5rCisyMzA2MCA1NjAxNTVlNzUwODc4YzJkZjAwMGQ5YWY1NzUwNjkxZWVlMDJhM2ZlIGxlZ2FjeS10cnVuaworMjMwNjEgOGNhYzVlYjcwM2ZkODQ2NWRjMjQwOWVmY2E5NjZlNDU1NWE1YzI4ZiBsZWdhY3ktdHJ1bmsKKzIzMDYyIDA4NmZmYWZhZWQ1NTI1OTkwZjU0ODc1YTBhZGEzZTA0N2EyMDA1MDkgbGVnYWN5LXRydW5rCisyMzA2MyAwNTg0YzkxMzI1MjVhNTg4ZTA1NDQ2MmM3NGZkOGE2ZWIwMmY5ODlhIGxlZ2FjeS10cnVuaworMjMwNjQgNzlhMzFiYTg3M2EzNDNkZDk3NTM4YWUwNGUyYmY0MmJjY2NjMWQ1YyBsZWdhY3ktdHJ1bmsKKzIzMDY1IGNlNTdmZmY5Mzk2MjlkMGNhYmU4MTMxZWExMzA4NTA4OWVkYzMzNmMgbGVnYWN5LXRydW5rCisyMzA2NiAzOGMxMmZhZjYxMmFhNTg5YzgwOTkwNGVlNDA3ODc1MTExNTYxODUzIGxlZ2FjeS10cnVuaworMjMwNjYgMDg3OTZhMTM3ZjFhZGEyNDYyZjdhMzE3NzMwNmRmNWY2N2E3NjdlMSBsZWdhY3ktdHJ1bmsKKzIzMDY4IDcwNDExZWJhMjI1YjFhNTFmN2NjM2E3ZjI2OGVlOTZmNWY3NTNiZWMgbGVnYWN5LXRydW5rCisyMzA2OSBkYzg3ZDkxZDBkZmQ2ODVlODU0NGUxZTYyZTQ3ZGRiNDc0N2I3ZTg1IGxlZ2FjeS10cnVuaworMjMwNzAgOGQ1ODVkODIyZjlkMGRiMWNjOTEwYTgyZDU1YTJjMDMwZjQ4ZTczZSBsZWdhY3ktdHJ1bmsKKzIzMDcxIDBjYmIwNjBkYTJjMzRiY2QwOTRlZjVhMWJiMTkyZDA5OThjMzVhZmYgbGVnYWN5LXRydW5rCisyMzA3MiBiNzM5NjI4N2NmNjViOTcyNmMyNDg1MTk3OTI3OWY1ZDc3MGEwMWFjIGxlZ2FjeS10cnVuaworMjMwNzMgNmIxYmUxNGQ3NjUwMzI0OTAzNzVkMjAwZTg0NDRlYzFjMWRhMzkwMiBsZWdhY3ktdHJ1bmsKKzIzMDc0IDUzZTBjYWUzY2Y2Y2QwOTMxYjZlN2Q3ZThiNzgyNjYxY2U2NDViMGIgbGVnYWN5LXRydW5rCisyMzA3NSBmZTVlYzFhM2E3ZTBmNzMwYjA3YTFkNjU5Y2MyYmE0ZWQyY2Y5ZTYwIGxlZ2FjeS10cnVuaworMjMwNzYgM2Y3M2E4YmY3NmY3Yzk5YmE5NmYxNjhlNDZjYWIxZTI3Zjk1NDI5MyBsZWdhY3ktdHJ1bmsKKzIzMDc3IDNkYzMxNTQwOTk2ODE0MmMwZDZkNTZkNTExYmUzZGRhYjU0M2MzNzYgbGVnYWN5LXRydW5rCisyMzA3OCA2ZTU3ZGMzMDU1NTEwOGE2ZmMxODMzNGExYTJkODAxNmNkYzAyZTg2IGxlZ2FjeS10cnVuaworMjMwNzkgMzcyMTQ5Nzc5MjQwNjY5Zjg0NzUzMTJiYmI4ODlkM2Q5ZDViZTMxNyBsZWdhY3ktdHJ1bmsKKzIzMDgwIDkxOTUzMmM1MGExNzU5Yjg5NGRiOTVmMDEwNTUzNGI0MWQxYjVhMDEgbGVnYWN5LXRydW5rCisyMzA4MSA4ZWY0NTY5NDliNzYyNDZhZWU4NGM2ODU1MmQ5NWU0MzVjM2UxN2I4IGxlZ2FjeS10cnVuaworMjMwODIgMzllZWFiNjg5ZDA2N2IwOWNhNWZkYjM4MDliMWRhNzMxOTRjMTc1OCBsZWdhY3ktdHJ1bmsKKzIzMDgzIDViMjhkN2RjMzAwNjI1YjU4M2YyZGYxNjJkODgzMzE4ZGYzODU3YjEgbGVnYWN5LXRydW5rCisyMzA4NCBiYmFlYTUzYWMwODdmNTg2NTc4MmQ1MDU4MGY1OTJmOTRiZGNmOWM4IGxlZ2FjeS10cnVuaworMjMwODUgZTQxOTA2MGUxM2M4ZDQ0MTNmMGQ3YTZkYTRjMmNmYWY1OWEwMzkwNCBsZWdhY3ktdHJ1bmsKKzIzMDg2IDEzNTlmYWM2MTdmMWJiNDdiODY2ZjA2YTU5NTRjZjA5NWNhNTRjZGQgbGVnYWN5LXRydW5rCisyMzA4NyAwMGQ4MDk0N2Q4MTc5Zjg4OWEwYzc4MmE4YjYzMTAyMzVhZjAwOThlIGxlZ2FjeS10cnVuaworMjMwODggZjQ0NjA2YjI0MmM1OTExMTQwNzkxNjE0MjY5ODk2YTg1ZjJlMTk4NSBsZWdhY3ktdHJ1bmsKKzIzMDg5IDUzMjUwY2IxMDZlYjQ3MWI3NDQ4M2FiNjgxZTY2ZDgyMjVmMTM0OTEgbGVnYWN5LXRydW5rCisyMzA5MCA5Y2YxMzM4ZmQ4ZDk4NTAwMjIyOWRiZWIxNGIzNjE5YmMzNWQ5M2MzIGxlZ2FjeS10cnVuaworMjMwOTEgNTQyMGU3ZDM0OGE0NGM2MzFiOGMzNWVjOWJiNTU2NDM0MDFmYmRkMiBsZWdhY3ktdHJ1bmsKKzIzMDkyIDUxNThlNDc4OTQ1OTIxODEwZTBkNjY5MzZjZjEyNjk5Y2IwNmE3OWEgbGVnYWN5LXRydW5rCisyMzA5MyBjMTU5MjBjMmNmNmNjYjlmZTk4ODQ0ODRkNDAyM2Y2ZDQyYzhlZDEzIGxlZ2FjeS10cnVuaworMjMwOTQgMTBmNTkyN2RiZjA1ZDA4OWRjNmI2YjMwMjYwNmY1YzU1ZTQ0MTNlNyBsZWdhY3ktdHJ1bmsKKzIzMDk1IDM3Nzc0NmEzODk3MjE5OThjNDFiOWRiNDk0Nzk4NzE4ZmM5OTZmYTAgbGVnYWN5LXRydW5rCisyMzA5NiBkOGRkNzVlM2IzMDQ2NWZiMWU1NzNiNjkwOGJkZmZhOGIwNTVmZTZjIGxlZ2FjeS10cnVuaworMjMwOTcgMjA5MjRhNzBmYTFiYmM2NDczYTgyYTc3MjQ2NzYwYmQ4YTY0ODQ5NiBsZWdhY3ktdHJ1bmsKKzIzMDk4IDZmZjdlZTg0ZDVhMTU4MzVkOWM2MTRiYzdlMGE5N2RiMTg2YjNmNmMgbGVnYWN5LXRydW5rCisyMzA5OSA5ZTRkMWE2MzA3ZjYzODU1NTI1YjMwYjcwOWUzMGY4ZjBjM2UzZDc0IGxlZ2FjeS10cnVuaworMjMxMDAgN2E5ODBjOThjOGFlZmZkM2YyMmUzYzkwMTdjODQyYzdiNDBmZDk3NSBsZWdhY3ktdHJ1bmsKKzIzMTAxIDY2MmUyMmY5OTYzOWY1MDc0ZTJjODRlODQ0Y2UyOWNhZmE4MGQzMTIgbGVnYWN5LXRydW5rCisyMzEwMiBjNWMyNDFiZWY4OGQzYjA2NmY0YjhmYTFmYTA5N2MyYzJkMDg5NWI0IGxlZ2FjeS10cnVuaworMjMxMDMgOGFmNzRmMDM1OGFjMzlhOWJjZDA5NWIwMWI0YTYyZTQyOTQ2ZTUyNyBsZWdhY3ktdHJ1bmsKKzIzMTA0IGJmMDIwMmRhYzQ0MTcxNjBiZWI3NTUxZmU3ZWZkMjQ5ZGYyNGI2YzggbGVnYWN5LXRydW5rCisyMzEwNSAyYjU4MWY0YzY5YjRmMjA5NGUzZjEwZTIzOGYzMTcyNGUyM2JmOTAwIGxlZ2FjeS10cnVuaworMjMxMDYgZjNmNjk0MTExZWEwODE2MGI0N2EzNjEyNGQ5MWU4YjA4ZDkzOWQzMCBsZWdhY3ktdHJ1bmsKKzIzMTA3IDVlNzliZWQzNDI2ZjkzZGYzMzZmZDZhNzdlZTBkMTlhOTA3OTFhOTAgbGVnYWN5LXRydW5rCisyMzEwOCA5ODMwMzIzZjVmOGViMmU1OGJhNmVhNWE2NzhiZDYzMzkzMjczM2EwIGxlZ2FjeS10cnVuaworMjMxMDkgNDNlZDhhMzQ1ZjRkODMzOTFkMzg1ZTVjZDdmMjhmMzcwNGM5YzcwYyBsZWdhY3ktdHJ1bmsKKzIzMTEwIDU1NjhiMzIwOTE0ZjZkYjk1NzQyMzA3ZjgzNzIxMzNiZTQxMGUzZTcgbGVnYWN5LXRydW5rCisyMzExMSA0MTQxM2M3ODM4MzY3OTM3Mzk2MjBlNmQ4ZmFlYWQzNDJiYTBlNzc5IGxlZ2FjeS10cnVuaworMjMxMTIgOWE1YmJmODQ1YzYzM2VjN2ExZTY1YzU4Y2VmMTYxYTEwYzQ0NzhjZCBsZWdhY3ktdHJ1bmsKKzIzMTEzIDg3M2JlOGUzNDYyYmVlNjdiYWI1M2M3ZjhiZjgyOWVjMTU4Y2E1NmUgbGVnYWN5LXRydW5rCisyMzExNCA1ODcxZTBhYTAyMWI4NTBjY2Q5ZWM5ZGNjYTE5YjEyMzYxMGE2ZTYwIGxlZ2FjeS10cnVuaworMjMxMTUgMmE4MDliM2QwM2U5NGJmZjYwNjZkM2QyYTZlZTdjOWNiYTEzOTgzOSBsZWdhY3ktdHJ1bmsKKzIzMTE2IGQ5OTcwZDYzMTg3ODBiOTg4ZjUzNTRlMzkwYWFmOTBkMjA3MGM3ZTggbGVnYWN5LXRydW5rCisyMzExNyAzNmNhMTZkYzM1YjlkOTk5ZGYwNGFjZWEzMDE1NzgwYjUzMTYyNDBmIGxlZ2FjeS10cnVuaworMjMxMTggNjc2Mjk4YzBjNzYyOTYzNDg4NzhjMGZlMDcyZmQ0Y2QxNTA4YzEzYyBsZWdhY3ktdHJ1bmsKKzIzMTE5IDMwNDY1MmZmYzZhYzYwMzU0ZjlkYzczYTEzM2U0ODA4MDQxYzU4MTUgbGVnYWN5LXRydW5rCisyMzEyMCBmMmEzMDA5YjUyOGU5M2U1YzA2M2NhNTQ2ZTJlNzVhM2JiODhkZTYyIGxlZ2FjeS10cnVuaworMjMxMjEgYTM0OTkxYjkxMDA4NjE5Y2JjN2UwNWYwNWJiOGVmMGJiZjgyMDRjMCBsZWdhY3ktdHJ1bmsKKzIzMTIyIDU3ODA3MjQ0NzBlZWI0ZTdhMGJkNzdlMWUwM2Y2YmIwMWU0MjFlNmQgbGVnYWN5LXRydW5rCisyMzEyMyBhZjk4MjgyZTkyNzdiN2NkY2E4NjE5Yjc2OWNiOWU2ZjRhNDg5NGI2IGxlZ2FjeS10cnVuaworMjMxMjQgZGY0OTM2NDZlYzRkY2Q5ZTg2YjEzM2UyM2E5ODZhMGY3MDg2NWI1MyBsZWdhY3ktdHJ1bmsKKzIzMTI1IGU5MWI5OTEzODk4NWFlOTUxNThmYjhhNDEzMWVmZjg0MGViNjk2NTggbGVnYWN5LXRydW5rCisyMzEyNiAxODA4NmM5MTNlZDVjNTEzMWIyNGFlMDkzMjZlZmM5NGJkOGU0OGViIGxlZ2FjeS10cnVuaworMjMxMjcgNTEzNjMzNDhkY2ZhYjdiMDJmN2QwZjQ0YmI3MzU1NTBkODU2MGJmZSBsZWdhY3ktdHJ1bmsKKzIzMTI4IGExOWVlYTQxNjY4ZmNmZmEwMGVmMTJiYjQwODA1Y2I3YmIxOTExM2MgbGVnYWN5LXRydW5rCisyMzEyOSBlZDNlNTI5ZmJlNDc5MWM4YWJlOWQ0MmY4MDY1NmI4ODUzODNjNDU0IGxlZ2FjeS10cnVuaworMjMxMzAgNzBiZGY4NDg2MmFkMWNiMzM0M2Y4ZjUzYTQ0NGViODY3YmZjZjYyZiBsZWdhY3ktdHJ1bmsKKzIzMTMxIGI4N2MwNTg2MjgxNTU5NjcyZWM0ZGI4OTdlYTg1NWYyNjQ4YWUwOGQgbGVnYWN5LXRydW5rCisyMzEzMiA2MmQzMWVjNDNkZjY2MzQ5N2Q0MmM4ZDczYjFmMWYxZTI2YjA5NDlmIGxlZ2FjeS10cnVuaworMjMxMzMgY2MxNDZlZTUyODk3NWI1MjczYWNkODZjMWY1N2YwODU1ZDVhYzA0YiBsZWdhY3ktdHJ1bmsKKzIzMTM0IGJjNTA1ODFiM2Q3Y2RlMjc4ZmRjYzA1MGNiYmJiYWZhMWVmNmYzOTYgbGVnYWN5LXRydW5rCisyMzEzNSBkMWNkNGNkNzIyNzFlMDdhNzU3ZmY5MDA0ZDQ4MDBkZjRhM2ViZDJhIGxlZ2FjeS10cnVuaworMjMxMzYgMTZlNGQwOTZmNzg3ZDFhOTUyNDg5MmJiOTFmMTQ3YTM0ZGNjNTQxYSBsZWdhY3ktdHJ1bmsKKzIzMTM3IDk2ZjUzZjg4MzFlZWU0ZDI5MDlmNjhmOGI4NjcyMzViYzZhNWE5NmUgbGVnYWN5LXRydW5rCisyMzEzOCBjOGZlY2UzN2YwMjBiMGU5NjI2MjNmMjg5MDFkZTljMzYxOWY5NDEzIGxlZ2FjeS10cnVuaworMjMxMzkgZGY2NmI0ZGQwYjBkYmI0NDg4YmFjZjZhM2Y2YmE3N2EwZDdmNmM4NSBsZWdhY3ktdHJ1bmsKKzIzMTQwIDcyZTZlYjY1MzMxMjA3YjgxNmUzZWJhNWIwODJiNDQ5MTQ0MmFmNTIgbGVnYWN5LXRydW5rCisyMzE0MSAzYjBkYTEzYWNlNDg1NzIyZWQyZTQ2ODkxNTBhMDIyYzZhZDQ3ZTIxIGxlZ2FjeS10cnVuaworMjMxNDIgYjI4ZmM4YzM2ZTNkZTc4ZjdlMTUxMTkzYzg5MDQ0NGIzYmVkMWMzNSBsZWdhY3ktdHJ1bmsKKzIzMTQzIDJkYTY2Y2U3ZWUyMjk1MTc0NzIwOTM0MTMxMmM5NjRlMTVkOWJiYzQgbGVnYWN5LXRydW5rCisyMzE0NCA3MzMzMTRmY2ZkYWEwYTk1ZWY2YmI3OGQ3ZmVlZDI0ODJjMmVmZjc5IGxlZ2FjeS10cnVuaworMjMxNDUgMzFmZThiM2UyNzZiYWFkZTQ1MDFmNzVkNThmMDdiODRjZDgxMGFhNCBsZWdhY3ktdHJ1bmsKKzIzMTQ2IGMzM2E4NTVjMTI3NDVmODJhOWM4ZDUyZGNmOGQ5YmYyNzJkZTI4MDAgbGVnYWN5LXRydW5rCisyMzE0NyBlOTEzZDc1NzEzZTY0MzI1MTczOWFkNjIxYjg2NjQ1NWEwZmVhMGNiIGxlZ2FjeS10cnVuaworMjMxNDggM2FmMDA2NTAzNjc4YTdjNGVhNjI1NWFiMDVmNWVlMjM0NTY5MGYwOSBsZWdhY3ktdHJ1bmsKKzIzMTQ5IDUxY2M4MjYwNWQzMmRiN2IxNDJmNTUzNjZlOTFkZTZiMWRhNDFmZWYgbGVnYWN5LXRydW5rCisyMzE1MCAxYzQxZmJkMDlkOTNhNjg2MTFjMjBlY2E3YjA4ZDQ3OGNjMDA2N2MwIGxlZ2FjeS10cnVuaworMjMxNTEgMDQ5MWVhNjExYmM0Yjc3M2MxYmI5ZmNhNWI1MGNmYzYwM2ZkYTVlNyBsZWdhY3ktdHJ1bmsKKzIzMTUyIDg0Mzc2MzU2ZmY4OTBlOTAyNzkyMGRkMjI0NmYwZDZkZGE0ZWFlMGUgbGVnYWN5LXRydW5rCisyMzE1MyBmYzQwZDBiNTQwNDM3ZTk4ODczNDI4MzZlMWMzMzlhMmNmZmQ2NGRkIGxlZ2FjeS10cnVuaworMjMxNTQgMWY2MTUyNjMwN2MwMGI2Nzg4YTFhNjk4YmM4OWY0NzA4NTY5NjgxNSBsZWdhY3ktdHJ1bmsKKzIzMTU1IGZmMzc3NDcyZWFjOTQwYjI1ZGExMzEyNDQ2OWUyNzRjNjgyODBmMWQgbGVnYWN5LXRydW5rCisyMzE1NiAwNzgxOGNiY2QzMDI2ODhjYTEyNDE3NTZmYzk5ZWY3YzE5ZWVlNmNhIGxlZ2FjeS10cnVuaworMjMxNTcgZGUzOTk1NmI1NDU4MDQzNjVmMTYyNGE1MmU1MmQyN2I0OWQxMjhkMSBsZWdhY3ktdHJ1bmsKKzIzMTU4IGMwODI5NzE4MjNjZTkxMzA4OGExOThkZjlhOGViYzE5ZDVjZDY4YTQgbGVnYWN5LXRydW5rCisyMzE1OSA1OGQ1MDA5NGJmODA4NDc0MDExZjhiNzRkZDM4MTlhODYzOWFhNzkxIGxlZ2FjeS10cnVuaworMjMxNjAgYTdiYTAwZTNiMGRlMmZkNGJkYzcyOWQzMDM1M2VkYmVjN2YxNWJiZiBsZWdhY3ktdHJ1bmsKKzIzMTYxIGYzOWE5YmU3YzlhZjc0Njg1YzQxMWVhNTc4MzI5MjNhMGNhN2ZiY2QgbGVnYWN5LXRydW5rCisyMzE2MiBkNjhjZmQ4NWU2ZGI5YjVmYmJjODMyZjZkMmM1MzFhMGM5NzMzYmIxIGxlZ2FjeS10cnVuaworMjMxNjMgZDU3YTZjODEzNjU4Y2MwMzAwZjVmNGQzNjlhZWU3MDNkM2NlZDViNiBsZWdhY3ktdHJ1bmsKKzIzMTY0IGEyODhhNTVmOTI5MTUxYmJhZDVlYTJlNmE4ZjQ2NDMwZTZhNzc4MDMgbGVnYWN5LXRydW5rCisyMzE2NSA0OWI3ZTM5ODA4NTNiYzJkNTUzNDdjMWJjZDdlNmRhMmFjMWI4NTQzIGxlZ2FjeS10cnVuaworMjMxNjYgY2JhNDQ5YWI1OTE1NzljOTRmY2QyZDdjMGI1ZmE3N2Y1OTZkMzY4MiBsZWdhY3ktdHJ1bmsKKzIzMTY3IDcxYzg1M2RlZGIwNzI5MWRlZjBiY2U4YzQ2MGFmYzI0Njg4NzcyM2MgbGVnYWN5LXRydW5rCisyMzE2OCBjYTBmNTRkYWNkZDhjNDVmZTVmYmQwYzYwMDg0ZWUwYjA0ZWVkOTM3IGxlZ2FjeS10cnVuaworMjMxNjkgMjAyN2RjMTI0ZWRkYWRiYzllODA0ZWM2Y2YwYTJmNjQyNmNmMmU5ZiBsZWdhY3ktdHJ1bmsKKzIzMTcwIDIyNjNjYjQzZWFhYmJlYTBjZmQ1ZWIxY2UzMTI1NDdiYjZlMjI2MTMgbGVnYWN5LXRydW5rCisyMzE3MSAxYjU1ZDc5YzY5ZDVmZTA0OWQzNTNhNzUzMDMzYWRhYzFhNmY0NjFhIGxlZ2FjeS10cnVuaworMjMxNzIgMjk0YTM4YTE5YjVhOTdlZTVhYWRlMWI4NGNlZGJmMDk1NDViOTY3YSBsZWdhY3ktdHJ1bmsKKzIzMTczIGQ5NmNkYmI0ZDI3YmMxZTE1YzdiNWZkZjhiZWY5NjdkODNkYmFhMTAgbGVnYWN5LXRydW5rCisyMzE3NCA4ZTRkMzViYzY3M2ZmYWQ5ZGIzYzJiOTc0Yjg3ODNkOWUxZTFkZmJmIGxlZ2FjeS10cnVuaworMjMxNzUgNjM5MzAxNTljYTNjNzJhOGI4ZjQ0M2YzNDM5NzNmYWE4YzIyMDA1NyBsZWdhY3ktdHJ1bmsKKzIzMTc2IDE2ZjY0ZDdkYThlMzIxYzIxZGEwNzU2ZmJkN2QxMDY1ZTMyOTQ1MGQgbGVnYWN5LXRydW5rCisyMzE3NyA5N2NmNmRjZDBhZWQyN2E2YmRmYmVhMmFlZmVhMTg4NDYzYmQ0M2M3IGxlZ2FjeS10cnVuaworMjMxNzggY2IzNWQwZjcwNGRlMGI3MGIwNmIxYmJmZTEwMTJiMDNjYzYxY2UyNiBsZWdhY3ktdHJ1bmsKKzIzMTc5IDAxZjY2ZjVkYjMyNjE4NTMxODJkYzRmOThlOTgyZTcyNDZiYmQ4MjggbGVnYWN5LXRydW5rCisyMzE4MCBkZjQwOTg0NGI2NTk3OTNmMzY5ZmFhZGI4NWFjYTk2OGU2OTNkZDQxIGxlZ2FjeS10cnVuaworMjMxODEgY2U0MTRhNmQzMGI0NmU4MzZlY2U2NjFkMjk3MzAwYjQ4MGY0NzQ3MiBsZWdhY3ktdHJ1bmsKKzIzMTgyIDI4OTQ0NTg4NzdjODI5OTM3MTI5MDkxYTJiNTQ2MzA3N2NiYzUzZGEgbGVnYWN5LXRydW5rCisyMzE4MyA2MDQ2ZTk1NDZhNzAyYjYxNTMyMzYxYTkxYzZmY2M5NzRjMDQ5NmQ1IGxlZ2FjeS10cnVuaworMjMxODQgOWJjNzZlMzZiYTU3ZWM4ZjVhM2ZiY2MzMTQ4ZGZlM2I4NTIyZjFiMSBsZWdhY3ktdHJ1bmsKKzIzMTg1IDM2YzA3YTE3MThlOTg5Mjk4ZTYwZDhmMGY0NTdlOGFhYjU3ZTM3OWIgbGVnYWN5LXRydW5rCisyMzE4NiBjMzI3YThhYzlmMmI1ZmQxMDBmMDVmYTQyNjBhZTdkODI4NWRhYmVkIGxlZ2FjeS10cnVuaworMjMxODcgNjIxZWQxMzQ0NWRlNTVmNzlhN2ExMDE3OTZiOWQyM2E1OWVhZGFkMCBsZWdhY3ktdHJ1bmsKKzIzMTg4IGI2Y2YyZjI3ZTQ0ZmFhNTNkYWVkMjUzMzlkMjQzMDdkN2JkNDc5MDUgbGVnYWN5LXRydW5rCisyMzE4OSBmMmYyNWE3MzhmN2YwOTNiNDRjNTI5MmQ1NzY5NjZkY2U4YmNjOTcxIGxlZ2FjeS10cnVuaworMjMxOTAgNjE5YTJkNmI1ZWE5MjE5ZDE3NjQxNTJlM2M1NmExZTk5ZjYwNTI4ZiBsZWdhY3ktdHJ1bmsKKzIzMTkxIDY5NDRmNWI5ZGUwM2RiOWU4NjBhOGI5MWM4ZDQ3ZGE5MTNkN2RkZWYgbGVnYWN5LXRydW5rCisyMzE5MiA4OTZmMmQxZTJmNDZkNzZjMTczNDMzMzQxOWQ5OTQzYTljZmYyNDFjIGxlZ2FjeS10cnVuaworMjMxOTMgZmQ3YTdmODMyMjU4ZDdhOTcyMzhhOWMzMzgyZDRlMTZiYzVkMDg5YyBsZWdhY3ktdHJ1bmsKKzIzMTk0IGFhY2E0ZDNjZjYyYjY3NWJlMDcwYzY3N2EyMzBmODQxNDM4M2Y4ZGUgbGVnYWN5LXRydW5rCisyMzE5NSAzYmY2MjJiYzI3OTIxODE5M2RmMTg4MTcxNTU0NTY5M2EwMjBlNTYwIGxlZ2FjeS10cnVuaworMjMxOTYgMGQ1MzVjODZiZTVmNTJmMGE4NDExYzhkYzFhOWExOTIyZmE0ZWNjMyBsZWdhY3ktdHJ1bmsKKzIzMTk3IDg1MjJiMDIyZjgwYTI5MzVmNjYwMmFjMGU4NDYzYmM1NTJlZGI5ZWQgbGVnYWN5LXRydW5rCisyMzE5OCA2NzczZGNmZTM0YTM2OTFmNTgwZjE5ZTI2MjUyMmM0ZWZjMWI2YTUyIGxlZ2FjeS10cnVuaworMjMxOTkgZDk0MGFmNTI1ODQwOGVkNDhkMGJkOWZjMjQzYTMzMDNjOWFmNzNhMSBsZWdhY3ktdHJ1bmsKKzIzMjAwIGJlNGJhYWZhNGM1MjhkMDYyMzU2NGUzZWE3NTQ1OTBlMWZmOWI2ZTcgbGVnYWN5LXRydW5rCisyMzIwMSA0MTc5OWI3MGE5NmMxZTNjYzExOWVhOTMzYzYyZjlhNTA4ZDkxYjU5IGxlZ2FjeS10cnVuaworMjMyMDIgM2YxOTIyOTkwOTAzNDkyNDBjYTMyZGEwOWNjZmFjNDU4N2MxNTcwMCBsZWdhY3ktdHJ1bmsKKzIzMjAzIGVhZjEyMDNiODVjZmQwODRlMDI3YmI0ZTRhOWE3ZjhiOTNlNmY0YTQgbGVnYWN5LXRydW5rCisyMzIwNCAwNGNlMmE0OGMwYTgzMWE4NGIxYTIyYjU2MDk5ZTg0YjA2YWQxYjg2IGxlZ2FjeS10cnVuaworMjMyMDUgNzYxMzNhNDY1ZTAzOTZmNDhjZGYzY2M5NWQyYzU0NjI2NzVmYjI1YyBsZWdhY3ktdHJ1bmsKKzIzMjA2IDc4OTQ2YTc4NDM1MTIwMmQwNTJkMmZhYjM5YmY0ZmNhOGQ1MmM2MzIgbGVnYWN5LXRydW5rCisyMzIwNyA5NmM0YTNmMDhkY2UyNGRiZGY1ZjcwNTFlMTk5MDBjYmZlZTk4YmYxIGxlZ2FjeS10cnVuaworMjMyMDggMGY5ZGY1NjNiNjVkZTRlMTQ4MjIzMWEzZTRkNDg0YmIxN2UyMTYxZSBsZWdhY3ktdHJ1bmsKKzIzMjA5IDg0YWYxZGQwMTFlZTMzZjdhY2RmOWRlNjY2NWVkZDA4NzJiNzc5MTcgbGVnYWN5LXRydW5rCisyMzIxMCBmMzZhMmQ0MGExZGY2OGFmMzQyMjMzMTcxMTA0NmE3Yzg0ZmYyMzMyIGxlZ2FjeS10cnVuaworMjMyMTEgMzM2NjljODkxNGI0YWUxMjNjM2M5NTg0MjdhOTBkOWNiZjU0MTQ1MSBsZWdhY3ktdHJ1bmsKKzIzMjEyIDkwOThhMzA4YTU3YjA3OGNhMDI2NzQzYTU3MGI3Mjk5YjhhNWJjMDggbGVnYWN5LXRydW5rCisyMzIxMyA2MDgxZDczNjE2N2IwZTY5M2YwNWIzNzllZmMwNzVmNmQwMTU1MTFiIGxlZ2FjeS10cnVuaworMjMyMTQgMDNmM2FiMGM3Mjg2ZGNhMWFlYmQxMzZhZGE3YjY0ZDE3ZDQyOGI2NSBsZWdhY3ktdHJ1bmsKKzIzMjE1IGNhZTNmZjMxYmQ5MTJjMTQzN2RhYjQ2YzgyMTNhOGMzYjU5ZjgzZmMgbGVnYWN5LXRydW5rCisyMzIxNiAwODM3NGE4NTI2ZTIxMDNmZDZjMGI2Y2Q0MjBiMjBkMjFkYzA3YTJlIGxlZ2FjeS10cnVuaworMjMyMTcgY2M1MmIwNWFjOTc5NTQ0MmE3NDc3ZGY4MWNkZjgxMWMzNWE4YzE3ZSBsZWdhY3ktdHJ1bmsKKzIzMjE4IDk2OWUzMDZiNjJmZGU5YmRhNjc4NDg2MzcwYjkzYzc1MTgyMGFmZjQgbGVnYWN5LXRydW5rCisyMzIxOSA0M2U1ZmQ1NGY4Yzk4ZDlhN2RmNWYyOWU1ZDZkOTNkZDhjZjg2OGVlIGxlZ2FjeS10cnVuaworMjMyMjAgODE3NzQ1ZTVhZGZiMzc2ZDE2NTcxOGNkNGI4YzI0MWRlMTk4ODZlMSBsZWdhY3ktdHJ1bmsKKzIzMjIxIDQ4Njg5MzQ2ZThiYmQ2NjcwMmI0YjE3NGM2ZTE0YzM1YTUyZTMwMjEgbGVnYWN5LXRydW5rCisyMzIyMiAwYjUxZTYwN2YzMzM3Zjk0NTcwMjQ0ZDk2OWFkNTU1ZjgzZjE0MzE0IGxlZ2FjeS10cnVuaworMjMyMjMgZTkxMjhlYTQ1Y2RhODIzZTc3OGU1OTAyMDUxNjA5NDA1ZTRmMWNkNyBsZWdhY3ktdHJ1bmsKKzIzMjI0IGIxNDA4YTI4ZDhiZTJiNmYxNjc4OWUzMWM1MTk0MmI0NWNmMzZiNTIgbGVnYWN5LXRydW5rCisyMzIyNSBmNzYxY2FiMjhjMWMxMGY0OTVlOWQxMzI2ZmZhYjliM2JmOGVmYTcwIGxlZ2FjeS10cnVuaworMjMyMjYgZDRjOTY1MzE2NjEwNGY2OWRmZTRiMzcxYzE0MTgyY2E0MjAwZWE4NiBsZWdhY3ktdHJ1bmsKKzIzMjI3IDIwYWRmZWM2MTQ2N2Q1YmM0ZGMyYTIzZjcyMzc4NWFhMDIxYTFjMjcgbGVnYWN5LXRydW5rCisyMzIyOCAwNWY2YjA5ODk5NTMyYTY2MTdiNTZjYzI5YjlkZDBkMmFlYjliOThjIGxlZ2FjeS10cnVuaworMjMyMjkgOGVkYzQ0YmQwYWM3ZjE0M2EzOTA3ZTUzZjg1OGQwMDJiNjYzYzhiNCBsZWdhY3ktdHJ1bmsKKzIzMjMwIDRlNDQ1YTNlMDdjNmI1MzU4YjlmZTFmZjhlYmY0MmYyYjI0NGEyM2YgbGVnYWN5LXRydW5rCisyMzIzMSBkYTAwMTg4ZDUyNzA5YWY2ODlhMzUzZDkwOWZlYzEzMjI4OTU0ZTllIGxlZ2FjeS10cnVuaworMjMyMzIgNjMxM2ZhMzhlOTBlYWRhMzRkNjQwOTIyOTc4MGE5NzFlYmFkZmJmZSBsZWdhY3ktdHJ1bmsKKzIzMjMzIGE5NjBlNjczMDc3ZmM1YjI4MzU1ZTMxZjFmNTQyYWY3MmFmYmM4ZjcgbGVnYWN5LXRydW5rCisyMzIzNCA4ZGNmYWYwZTY1NTliYjZkY2I0MWJhNjk0Y2I4MmIyYWJlYzYwODk0IGxlZ2FjeS10cnVuaworMjMyMzUgOWFiNmFmNjgxNWFmY2I2ZGEwNjA1Y2ZlYmM4YzhiMDkyZDllMTM4ZCBsZWdhY3ktdHJ1bmsKKzIzMjM2IDBmZDk1MjAwYWI2ZWM0ZDdhMDQ5MTYyZjUzMjk0NDJmMWQwNWQyODIgbGVnYWN5LXRydW5rCisyMzIzNyBiZjRiMWIwOGEyYzZmMjI5YTk4ZmRjYjgzNzJkMjgzYmNiOTk4N2RjIGxlZ2FjeS10cnVuaworMjMyMzggZDU2NDZjMGM1MTMwY2MyZjkyZGUwNzFhYzEzOGI4YmU4NzgzNjlhYyBsZWdhY3ktdHJ1bmsKKzIzMjM5IDk4ODEyZDIyMTA3NTE4MDZjZTcyZjYzNjI4MzEyMTA0YmJlMTRhYjEgbGVnYWN5LXRydW5rCisyMzI0MCA3MTJhZmRhZTExMjM5NGMwYTk4OWYwZjE0YTVjYzk1OGM5MDhkMjc4IGxlZ2FjeS10cnVuaworMjMyNDEgZjQyZjg5YjViOGY5YmI0NmEyYzQ1YjE1MGYzZmEzOTJiNGMyYjhiZSBsZWdhY3ktdHJ1bmsKKzIzMjQyIGRiMTZlMjZhMDcxYjgzNDNjMzliOTA0YzllOTFjMGUyNjE5MWEyNDQgbGVnYWN5LXRydW5rCisyMzI0MyBmY2I4NzcwNjlmYWE3MTE3MzJjMDliZjIwODM4MGUyNzg0ZjJmNTgyIGxlZ2FjeS10cnVuaworMjMyNDQgY2VjOWUyNWFmMTIxYjE2NTcxZjgxMDdiMTIyM2Q3MjJjYjFjMWRlNiBsZWdhY3ktdHJ1bmsKKzIzMjQ1IGZmYTFhODdhYzQzYTg4NmVmMjU0ODIyMDIzNTg2YTk1YjhkMDExMWYgbGVnYWN5LXRydW5rCisyMzI0NiA4NzEzNGM3ZjJiYzc3YjgzNjQ1NGI2ZDZhOTczOTE3OTIxMzU3MWVkIGxlZ2FjeS10cnVuaworMjMyNDcgOWQ3Y2E1OTE0ZDFjZWI1NjNiNTBiODNkZWY3ODQ3OGU1MjY1YTgxMyBsZWdhY3ktdHJ1bmsKKzIzMjQ4IDI4ZWYyMmEyNTk4ZTVhYTMxYjE3ZWJlNWEyZTQ3YmQwYjZlNmJkZjMgbGVnYWN5LXRydW5rCisyMzI0OSBhYjZjMTQ4MjJkZTFiZjY1ZWMxMGRjMGU3NjZiZWM3ZmExNjEyODcxIGxlZ2FjeS10cnVuaworMjMyNTAgYjA3Y2I1MWQ3MzFjODcxMTVhMTYyMTU3MGYzYzlmODFjY2M2ODJmZCBsZWdhY3ktdHJ1bmsKKzIzMjUxIDY0NmUyNDcyODg1MjNiOGVjOTBhMGE3NGUyOWYyMjdjMmIxZGYwNGEgbGVnYWN5LXRydW5rCisyMzI1MiA5NDFjMjg2ODYwMzk2ODRmMDIxOGM3OTA0N2I0ZmIwM2E4NmJhM2M5IGxlZ2FjeS10cnVuaworMjMyNTMgOGEwYzk3NDUzZGY0ODM1ZDJmYmNmYmEzMjRkOTIyODI2OTdlMTFhMSBsZWdhY3ktdHJ1bmsKKzIzMjU0IDFmNGUyNjI3YjYyNzAxMWQ0M2IxMDI0M2ZjYTFmNjcwNmQ0NDU4NTkgbGVnYWN5LXRydW5rCisyMzI1NSAzNGFmMTlkY2VmNTkzZjFjYWQwZTY3ZTk5MzNlOTM0ZjgxMzI1NmMyIGxlZ2FjeS10cnVuaworMjMyNTYgN2ZmZTI3NmE2ODU0YzgzMjI3ZDI0ZDU4MDNiZjFkMWJmNjJhNjMwMiBsZWdhY3ktdHJ1bmsKKzIzMjU3IGIwYWZiNjkxMzQwMWFhNzRhZWJjOTYyYWNiYTVmMDg3NWJmMWM1NjYgbGVnYWN5LXRydW5rCisyMzI1OCBjN2NhZjc5ZjUxNDMzZDg2YmM0Yjk1MThiZWQwZmZkNDRlNjRhZjJkIGxlZ2FjeS10cnVuaworMjMyNTkgMzgxNWM4YWQwMmQwMzM0MDkxZTIwN2E4NmQwOTlkNmJiZmEyNzEyMSBsZWdhY3ktdHJ1bmsKKzIzMjYwIDljOGIxOTYxNTAzNDEzNDM1NjA0ZmFjMmU0Njc2ZTdmYzg0ZGZlODQgbGVnYWN5LXRydW5rCisyMzI2MSAyYTdiNGQ0NDYwZDNlYmU4NmIyZDkzZWQxZjk3NzgwMGEzZjU0ZjZlIGxlZ2FjeS10cnVuaworMjMyNjIgNTZmZmVlMWVlZWVjNGY5OTBkYTEyZmVhNGJmMTM5YjdiOTA3MjBmYSBsZWdhY3ktdHJ1bmsKKzIzMjYzIGVkMThkNDQzOWYwODRmMjllZDk2MmE4YjkwMjFhNjlkNTk4NThkN2YgbGVnYWN5LXRydW5rCisyMzI2NCAwZmUzMThhNzg5OTA0MTQ5ZmMwMjg1NWEyYzkyMzc4NGI2M2FkOTgwIGxlZ2FjeS10cnVuaworMjMyNjUgZDAzYzE5ZGIzMDk0NzdiZWI0NGU5M2U1ZDcyNzVkZWQwY2UyMGFhZCBsZWdhY3ktdHJ1bmsKKzIzMjY2IDc1YjdlOGJkYjIxZWY2MDU0NWM5NmVhODFjMDMxZjlmNjE5OTM1ZTEgbGVnYWN5LXRydW5rCisyMzI2NyAzZmFhYmY1NGI4YjgzZDEyNWRmY2VjZDViYTk3NTI0MDZjMDRiZjMzIGxlZ2FjeS10cnVuaworMjMyNjggZTMxODRlNDYzMDNiNTQ5ODI5ZGU2ODBhNTU2MjFkYzgwOGQwM2RiNSBsZWdhY3ktdHJ1bmsKKzIzMjY5IGYwMjBkYTc4MWI5MTVjYzZhYmEzZGE2NzMwNDJjYmY2YjNmMWMwNWIgbGVnYWN5LXRydW5rCisyMzI3MCBjYTdhZjJhNWQ5MTViOWM2NGYzYTMzOGU1OTQyOTQ4ZjNmYTE1NTkzIGxlZ2FjeS10cnVuaworMjMyNzEgNzE4OTVkZDI2OGUyZDA2Mzg0Nzg2MTVmYjc5NmJiNjBjODk3ZGZmMSBsZWdhY3ktdHJ1bmsKKzIzMjcyIDA4NDQ2YTk4NmE1NjJkMmFhOTBlZjM1OWUxOTc1MGQ1N2E0YWE0ZjAgbGVnYWN5LXRydW5rCisyMzI3MyA4YWExYWRhMzNmNjRlMjAyN2JjNGM5OTMwZjI2NGNmYWYxZDU2ZmIxIGxlZ2FjeS10cnVuaworMjMyNzQgMGZkMTJmOTJjZThmMGM2MGM2NTcyY2VmMDIwNzQ1OGMwNzc2YzI0MyBsZWdhY3ktdHJ1bmsKKzIzMjc1IGI3MGMwODgxM2JhOTdjMjRhYTA3MzBhM2QwZTY5NjRhMTUxMzIxMTIgbGVnYWN5LXRydW5rCisyMzI3NiA0MGNjNjYyMWVkZGNhMDcyMWJkMTk5ZTdlNzlkZTJmNGZjYTg0YmU1IGxlZ2FjeS10cnVuaworMjMyNzcgMTA5ZGVmNGE1ZjZlOTg1MmE2MjIxYjIzZDVhOTY1OGVjNzZiYzc5YSBsZWdhY3ktdHJ1bmsKKzIzMjc4IDcyOWZkZjA0NTQ5NDFlOTYwYjkyM2Q5YjdlYWZiODA1OGYxOTU1YzMgbGVnYWN5LXRydW5rCisyMzI3OSA0Zjc0NzE0MmU4NGM4Mzk5MjYwYTMzOWNkODUzOTAxOGMwMzNjNzg0IGxlZ2FjeS10cnVuaworMjMyODAgYjdlYzk4NWQ4NWM2MTk2ZTIyMGI1MjA0M2ZmZTZjZDEzMWZhZjkzYSBsZWdhY3ktdHJ1bmsKKzIzMjgxIDdjNWNkNjg1YzFkZTAyZDk3NWYzOWUwY2U3NGFjZDdhMWFlYjI0ZjcgbGVnYWN5LXRydW5rCisyMzI4MiBlNjNmOTc1NjJhNjI5MTQxNmZlYmI0ZDRjMDhhYzAwYWRlOTc3NGU4IGxlZ2FjeS10cnVuaworMjMyODMgZGYxYjgzZmQwZWJiZGJiN2FkYWY3ZDA5Y2UyZTZiZjlhMGJkODNhOSBsZWdhY3ktdHJ1bmsKKzIzMjg0IDRiYmI0ZDliNGQ3NzY0MWQwZDU5YTkyY2NjYTI4YWZmY2U3ZjFlZWEgbGVnYWN5LXRydW5rCisyMzI4NSA2Mzc4Y2IxMTdiNzNiYjMyYWU5ZDUwZDljNDUwNGQyOTJiYTUwNWYxIGxlZ2FjeS10cnVuaworMjMyODYgZTVhM2Y5ZDc3NjZiN2QwZjRiOTQwMWVjNmM3ODhhZjVjM2JhZGUyZSBsZWdhY3ktdHJ1bmsKKzIzMjg3IDVjOWE5NTVlZjE3Y2RhMTE3MzAxMmNkZTYyOWUxNzFhM2YxNGE5MmIgbGVnYWN5LXRydW5rCisyMzI4OCAxMDRiNWM5Yjg4ZWFlOTdkZGI4YzU5MTYyMzk0ZTIxNjk5OGU4YzVmIGxlZ2FjeS10cnVuaworMjMyODkgMDYyYWM5YWFmZTQ3YjgzMGIzNDlhNGJjYzU4MTk3ODgyYWI3YTJhMiBsZWdhY3ktdHJ1bmsKKzIzMjkwIDA5OTZmMDdkMDRhM2FjZjBkNjBjMTRlMDVmYjc4NDFiMTE4YjgwZWUgbGVnYWN5LXRydW5rCisyMzI5MSBhYjYyZDE0N2JhOTBmMzU5NzUzODg4ZDM1NzUzZjJlMTZmMmMzMmRmIGxlZ2FjeS10cnVuaworMjMyOTIgZTUyMWZjMzcwYmUyMDUwZjQ1M2E2YTFlOTgwYmQ0NDcwZTAwZGY0YSBsZWdhY3ktdHJ1bmsKKzIzMjkzIDhhNmYyZWU2ZWFiYTMxYTRjYTQ2OGFkN2Y0YTJhMWE3MmFiNGU5YTMgbGVnYWN5LXRydW5rCisyMzI5NCAzYTRhMDAzOWVkZjMyYmY2OTI1OGQ5ZDBmOTlkZDUyOWQyZWQ3MjY3IGxlZ2FjeS10cnVuaworMjMyOTUgNTk4ODJlN2FhYjg5YzkxMjQ0MGRkN2IxNTA5ZDM3MmM3NGFlZDEzYiBsZWdhY3ktdHJ1bmsKKzIzMjk2IGNkNzJiNjRhZWM5Nzg5Y2VkZmU3ZjA3MjllZTQxMjQ0ZjFmZWQyZDIgbGVnYWN5LXRydW5rCisyMzI5NyBlMDhmNDIzZjkxNjVjMDVjZWVkMzQwMzE2OTFhNGQxYmM2NTY5ZGFhIGxlZ2FjeS10cnVuaworMjMyOTggNjZiYjEwZWU0OTYxMmI5MTYwZGI3ZDlhYWIyNWFlNTcyODVlYWY2NCBsZWdhY3ktdHJ1bmsKKzIzMjk5IDE5MjlmYzY5NmEwNDg0MWMzZDYxZGVmOTlmOTA3NWRiNmFmZWM1ZWQgbGVnYWN5LXRydW5rCisyMzMwMCA3YjhjMTE3Mzk3MTRkMjcwMDY0NmY2M2NiMmI3YzAxYWVlZjAzMzExIGxlZ2FjeS10cnVuaworMjMzMDEgOWI4MThhZjBkNzMwZTliYzBhNTc2OGJiZThjYWM1YzI0ZWE4NjY2NCBsZWdhY3ktdHJ1bmsKKzIzMzAyIDRjNWNkM2QxY2Y0YjViYzNjODFkMjdjYmU5YThmZTg1NzU3ZWFkMzIgbGVnYWN5LXRydW5rCisyMzMwMyA2MzEwODM3Y2E1MzQzOTE3N2FhNDY3ZmY5MDRiZWFiNDdjOTMzYTNiIGxlZ2FjeS10cnVuaworMjMzMDQgMWE1OGM3NDY2MmU5M2Q2NGQ4NjY5ZTY3ZTNiMjYzMmIzNTJkZTgwNCBsZWdhY3ktdHJ1bmsKKzIzMzA1IDZlOTNhMTU4NjgwMGE3OWE1ZWY2YjBmZDRiN2I5OGI4YWI5MDAwYjMgbGVnYWN5LXRydW5rCisyMzMwNiA0OTY2Y2Y3OTNiNDRjMDYyMzk2ZjljYjIzMWNmOWM2Mjc4ZTYyNWNkIGxlZ2FjeS10cnVuaworMjMzMDcgMGVlODkwM2QzZmVkMDE3MTI3Y2QxNDJiODYyMGExZjg0YmJhZDJlOCBsZWdhY3ktdHJ1bmsKKzIzMzA4IGJmZDRlMDNhZDIxMmQyNDlkZjQ5N2ZkZjVmODFmZTFlY2Y1ZWFmZDMgbGVnYWN5LXRydW5rCisyMzMwOSA5MjBjNjNjZmNhMGNkZTMyODJhZDVmZGJlYzU2ZGVjNDBjNDhjNmUxIGxlZ2FjeS10cnVuaworMjMzMTAgODhhMDNlYTU3NzE0ZjhmMTU1ZGZhN2U2MjQxZTJlYTBlMjMxYjA5ZiBsZWdhY3ktdHJ1bmsKKzIzMzExIDMzZWRjOTk4NjFiOTBkNGQzZjVhNDEwNGE4ZjMxZWZiMzdhYzdiMmMgbGVnYWN5LXRydW5rCisyMzMxMiA1YjFhZDdhY2FiYjViYzU0Y2VkZDk0NGY4Mjg2NWVlNzQyZmNmYjU1IGxlZ2FjeS10cnVuaworMjMzMTMgYzJiZjBiMTMzODBlMzA0ZjBkNjYwOTc2OWU5NDY4M2Y1MmE0OTNmMyBsZWdhY3ktdHJ1bmsKKzIzMzE0IGQyZDgzNWIzNWQ0NzVlNWI3NWQyZjRhMzEwNmRmMGM0ZDFjNTUzZWQgbGVnYWN5LXRydW5rCisyMzMxNSBjY2VjMDJiZmU5YTA1OGY2NDQ5NjhlYWRhYzU4NjZhNTYwYmU2MGIwIGxlZ2FjeS10cnVuaworMjMzMTYgMmNhZGRiODJmZmVhMmY1M2JiOThhZjM1NDc0ZWE2ZDVmNTA1ZTQ5ZCBsZWdhY3ktdHJ1bmsKKzIzMzE3IDYzOTAxMzlhZDA4MjVkY2IxZGFkYjcyZWNiYzEzNTJiNjk0YTJlYWMgbGVnYWN5LXRydW5rCisyMzMxOCA5YTU5OWIxZDlkMWM4NGE3Nzc4Y2VkZTU3MzJkMTRjOWJjMTg5MmE0IGxlZ2FjeS10cnVuaworMjMzMTkgZWYzMDM0YTYwYTNlYzJlZjI5ZGJiMjBlNDMwM2E0MjVmYmVhZWExMyBsZWdhY3ktdHJ1bmsKKzIzMzIwIGY4NDY5MWIxMTQwMjdhOWE5OTE5NzJiZDczYjk4ZDJiNDE0NzczMWUgbGVnYWN5LXRydW5rCisyMzMyMSAxNGM4M2NmN2YzMzgyZTJmYzBmMGIxOTUwZTU2OWI1Y2M4OWJkNzU0IGxlZ2FjeS10cnVuaworMjMzMjIgMjk5ZjVmY2IwYmE4MGVjZGQ2ZDBiYTZlZGNjNjY5MGFhZTZiMzNjMCBsZWdhY3ktdHJ1bmsKKzIzMzIzIDY5ZTgyMDYyNGNiYzMxNmEzOWUxODk1ZTBlZDBhM2Q5ZDlkYTM4MTMgbGVnYWN5LXRydW5rCisyMzMyNCA5MGE0ZjIzYWJkYTdkY2YwNjJkMWUzNWNhNDEyMmUzY2FlNTRjODAwIGxlZ2FjeS10cnVuaworMjMzMjUgOTM5NzdmMTc1NTJkNThlODM5M2NlYzAwMzY3ZWQ5NDBjYzBmNmQ2NCBsZWdhY3ktdHJ1bmsKKzIzMzI2IGUwMWRlOGJjNTgxMzc3OGFmOGM1NzZjOWZmMmEzMjBhYTBiN2E2NzAgbGVnYWN5LXRydW5rCisyMzMyNyAzOTlkNzc3YWYwNDg1MTI2N2RkMDcwNDRlMjBhMWIzOWFiOTVmMGMxIGxlZ2FjeS10cnVuaworMjMzMjggZDhhYmY5Y2UzMjI1MzI1Njc5Y2MzODQ3YWRlYzljY2QyMWQzOGVmOSBsZWdhY3ktdHJ1bmsKKzIzMzI5IDUxMTc3NmQ2ZDdkODY4NWE4NmE0Mjk3MTUwYmUzMDZhYTk0YTBmYjAgbGVnYWN5LXRydW5rCisyMzMzMCBhYWU1Y2Y3ZTU4NjE1YzQ3Y2IxNWZjODU4ZDcxYmQ0YTNkNzMyNzcyIGxlZ2FjeS10cnVuaworMjMzMzEgZDkyNTBkNWI3OWE3NTkyNmNiMWI2NTIyNmJjM2RjODYxMGE1NjMyYiBsZWdhY3ktdHJ1bmsKKzIzMzMyIDhmMTliMmE4YzYzYzY3Nzk3MGQyNzQ5NjdjMGQyMTUyZDgyYjM0NGMgbGVnYWN5LXRydW5rCisyMzMzMyAwMDRjZGVmYjcwZDFmOWRiY2YyZDI5NTdkMjQ5ZTZjZjIzYTU3ZTQ2IGxlZ2FjeS10cnVuaworMjMzMzQgOTI5OGZlZTQ0NmI3NzQwYWQzZmM2Y2FmMzQ4MDkwZWRjZDQ4ZjFhNyBsZWdhY3ktdHJ1bmsKKzIzMzM1IGY0OGE0MWM5NzAyMTU2OTQyMjVhMjk2NWE0OWJlMWNlYjVjY2NkMmMgbGVnYWN5LXRydW5rCisyMzMzNiA0Mzk3ZmE1MTUyZmE0MTY2ODFiNjUyNmUxYWZjMjMzNTZmNjVmNmQwIGxlZ2FjeS10cnVuaworMjMzMzcgMThkZjMyZjZjZWExM2UzZTI3ZmRmNGRhMTRjZjAwMjI2ZTRlYTdmYyBsZWdhY3ktdHJ1bmsKKzIzMzM4IGZkZmMxOGQ1NTYxNTMwODlkMTFlNTA5ZGJhMzc4YjczZmIxZmZiOTIgbGVnYWN5LXRydW5rCisyMzMzOSA0OGU5M2VmM2M1YjcwYjhlNDQzYjdkMGNlNjE2ZDA3YjE4NTE1MDU3IGxlZ2FjeS10cnVuaworMjMzNDAgMzE5MmEzMmZkNDhmNmM0Yzk4OWJkMTcwYTQyMGNlNWZlOTAzMTgyMCBsZWdhY3ktdHJ1bmsKKzIzMzQxIGRhZDk0Y2E0N2UyMTM5MTRlNDExYWQ0NTI5OWNmYzdlN2ZmNTI3OGYgbGVnYWN5LXRydW5rCisyMzM0MiBiNDE2MWNlNTg1ZTY0Y2ExYzlkMjFlZDFhYjlhYTRkODJmZWVjZTg0IGxlZ2FjeS10cnVuaworMjMzNDMgMzg2ZmIyNmUwODc0N2ViZjU1ZWYyMGJlYjhkYWY0MmU1ZWNjMjcxOCBsZWdhY3ktdHJ1bmsKKzIzMzQ0IDM3MTliYTVlZTg0NDZhNmRkMjMxZGVhN2U0ZWY1M2FhYzBjMTc0NGMgbGVnYWN5LXRydW5rCisyMzM0NSA5MzNiZjY4ZTI2NTAzYThjMmIzNmMxODIzYzFjNzdlYzJkN2E3ZmZhIGxlZ2FjeS10cnVuaworMjMzNDYgNDBkNGQxY2Q2Yzg0YTQxNjE2NmY2Y2UyOTk4ZDRlNGEzZTM2NDBmYyBsZWdhY3ktdHJ1bmsKKzIzMzQ3IGI1MmE2MzA1MjMwNjg2OWIyZjVmNTY5ZDQ5MjVhNTUxNjNmMzI4ZGYgbGVnYWN5LXRydW5rCisyMzM0OCBiMjhjMDdhMWI0MGRmOTllNTEzMzIzYzJlMmJlY2Y3NzhhNzRhMGZiIGxlZ2FjeS10cnVuaworMjMzNDkgZDY1OGExNWE5MGFkOTU5Mjg2YTYyNzJlZjgwNWQ2MGFlMWNiZjM5NyBsZWdhY3ktdHJ1bmsKKzIzMzUwIDI4OWMxYTcwMDI4NjRiOTVjM2Y1OWVjYTM0NjBmMjE1MzQ5NmI3NDkgbGVnYWN5LXRydW5rCisyMzM1MSAxOWFiYzMzOWQzZmNmMmYxYmE5MmRhMzAyNzM5NmM3NzAxNzllYzE5IGxlZ2FjeS10cnVuaworMjMzNTIgYTM4MWFiMGY5ZDI4M2JiYWIyNjZjODg4NGNhMWEzMzYxMzk1YTJiOSBsZWdhY3ktdHJ1bmsKKzIzMzUzIDU2YmRkOTBjOWZkNmRkODY2NmY3NDI3M2E4YjAwMjViYjQxMzk3YzIgbGVnYWN5LXRydW5rCisyMzM1NCA4MTliNmZmN2U1NmE2YjVmYzYwMTg0NmZhYTJlNTM3ZGM3ZjM4YTc4IGxlZ2FjeS10cnVuaworMjMzNTUgMmE2OGM2ZTFmOWM1NGE5ZGFhYzI2N2Q3ZGM5NzE1ZDY2OTFiZjQ3NyBsZWdhY3ktdHJ1bmsKKzIzMzU2IGFiMWFmMWNhMDMwYzVjNWJjNDBkYTRiMGJiY2YwYjRlMWZhYjczOWUgbGVnYWN5LXRydW5rCisyMzM1NyA2MDA5ZDg1OWZiNTczZWNiMGJhZjJjMGQ4ZmZmNmUyMzkzNjU0YTc2IGxlZ2FjeS10cnVuaworMjMzNTggZDE5MTAyMjNiMjQ3ZGYzZDMwMWUzMzhjZWMxZGM2ZTdhNDhmZDBhZSBsZWdhY3ktdHJ1bmsKKzIzMzU5IDhhMTYxNGNlYjM3NzdlYzBiYWUwYzVhMTk0YmRiN2E5YWY2ZjI1NjMgbGVnYWN5LXRydW5rCisyMzM2MCAzZGY0YjhjZGI4YzY4NzljMGJlYmQwMDdhODEzMDI4N2RlMGFkMjJlIGxlZ2FjeS10cnVuaworMjMzNjEgOGYyNWVjMDEwMThiNWE4NjVkNjU3NDk0NWUyNmI1ZmQ1ZjQ2MTdjNyBsZWdhY3ktdHJ1bmsKKzIzMzYyIDgzMjE2Y2E2N2ViZWExYjM0MGVmNjM3NzQyNGZjZDBkMzlmZTUwM2IgbGVnYWN5LXRydW5rCisyMzM2MyAzMzRiZjBiYWVlYjdlYjkxYTBlNTk1NjQzMWY2ZjNkZTg0M2UxYTU4IGxlZ2FjeS10cnVuaworMjMzNjQgZDdkODRlYWU5MmJhMGExMjliMTY3MTEzNDk4NjE0ZjdlOTRhMTNkNSBsZWdhY3ktdHJ1bmsKKzIzMzY1IGJlZmE3MjU4YzIwMGYzOGU4OWUxNWEzZWU2ZjU1Y2IwYzhjNjQ0NzYgbGVnYWN5LXRydW5rCisyMzM2NiA4MGUzNmRhYjIxMTE3YTQ0MGIxZmQ3YTkzODQyZjM1MjY5OGQyYzdlIGxlZ2FjeS10cnVuaworMjMzNjcgZThhMjlkMjNjNzBhOGQzY2JjZmIwMDMyM2NhZDJlN2Q2MGZlZWU2NyBsZWdhY3ktdHJ1bmsKKzIzMzY4IDEyYTc4N2ZiNzFkZjM1MjZlMDE4N2VmZGJjMzc4MzlkMjIyMTVhNTggbGVnYWN5LXRydW5rCisyMzM2OSAyMzNmOTYwNmJhOGUyNGUwMzIxNzRmMTc4MGI5M2QxMWE1MThkNWI2IGxlZ2FjeS10cnVuaworMjMzNzAgOGVjOTVjZTc4NzM1ODM2NmFiYmZlZGJjNmI3NmQyZDQyNDNhZTcwYSBsZWdhY3ktdHJ1bmsKKzIzMzcxIDU1ODc0ZDhlMGRmYmE4YTBkNmNhNThhMmY1YzY2MGMxM2I5MWZkMWEgbGVnYWN5LXRydW5rCisyMzM3MiBlMDI2ZjUxN2Y2NTViNDUwOTYwMmRkMDA3MjgyODVlNjIzNDI3MTU5IGxlZ2FjeS10cnVuaworMjMzNzMgOGMzNzE0MzVmNjkzYzBmYmU2ZDhmYTg3NDdkYjllYzk3M2VkMGU5NCBsZWdhY3ktdHJ1bmsKKzIzMzc0IGI5ZjYwYjgyNTI2MWEwZjk1ZDYzMDg0MDYzM2ZlYTJiYjRjYTA1M2IgbGVnYWN5LXRydW5rCisyMzM3NSAwMTc2ZjYxYWY4NDVkNGM4Y2YyYmQyYTUwZjQ5NDcwZGNkZDA1NGNlIGxlZ2FjeS10cnVuaworMjMzNzYgZjgyMmIzNTZjM2Q5ZGZhODBhNWI2ZGI0OTQ2YTc3M2YzM2M1ZTAyMiBsZWdhY3ktdHJ1bmsKKzIzMzc3IDA5ODE4NjYxM2IwNTdkODFjYWEwZWY4NDNmNTFkODI4OTRmNjEwYjUgbGVnYWN5LXRydW5rCisyMzM3OCBhZWQ2MjExOGQ2MzJlODhkMzViYmY2ZDI3NzZjNDRjNzQ5MTE0ZmUzIGxlZ2FjeS10cnVuaworMjMzNzkgOWMyYjliNzZhMDhlM2VjZDk5NjgyNmNmNGZkOGU3ZDVhZDFjMTcwYyBsZWdhY3ktdHJ1bmsKKzIzMzgwIDNiY2RiNTE5YWJmODgxMTI5MjlkMjBmNjI2NDc4NzliMGZlNGJiYjkgbGVnYWN5LXRydW5rCisyMzM4MSAzZmIyOTNmYTE3YzU0Njg0ODlmZWFjYjNiNjI3OTBiM2EwMzdiZTk4IGxlZ2FjeS10cnVuaworMjMzODIgNjk3MjA2ZTc0NzYzOWIxOGFhOTRhNzhkZWU4MGI1MDY4NTA1NmJjYSBsZWdhY3ktdHJ1bmsKKzIzMzgzIGZkZmNmZmMyMTUyYzYwZWFiNjIzN2VlZWJhZmE1ZWUxM2ExOTk5ZmIgbGVnYWN5LXRydW5rCisyMzM4NCBlM2EyZTYwNzZiYzUyNjUwYTAyYjdhYWQxODAyYmY3MTY4NzNjNWViIGxlZ2FjeS10cnVuaworMjMzODUgNzNmYmNjOTU4Mjk1ZjM5NTY5ZTNiNTA1M2IwOTU2MTBmZTNkNDEwZiBsZWdhY3ktdHJ1bmsKKzIzMzg2IGEyNzZhZTVmZThjMzAyOWIyZDI5OGU3OTExNjcwOGY4ZjQxNmNmYmIgbGVnYWN5LXRydW5rCisyMzM4NyBiYTM3MTQxOTFhN2EyZjNlZWJkYTJiN2EwNDFhNGE0ZGMwNWNkNTY3IGxlZ2FjeS10cnVuaworMjMzODggNDQxYjJlMTU1ODI2YzE4ZWY3MjY5MDNhNDZlNmI0Y2E2M2EwYWM3OCBsZWdhY3ktdHJ1bmsKKzIzMzkwIGNlMjdkOWMwYzM1ODIzMTU0YWVlOWFkNmNhZmI3MTY3NTVlYWI3NDEgcjIyYTQtYnJhbmNoCisyMzM5MSBjMjc4MmMzNWU3MmQ3NDViMzVmYzNmMGM5YmI4OWI2NzczNmE4NjFiIHIyMmE0LWJyYW5jaAorMjMzOTIgM2FhYzkxNmMxNTA1YzdkYjc2ZjhkYjA2YTE1OTA4MzFjM2ExZTlmNyBsZWdhY3ktdHJ1bmsKKzIzMzkzIGE5N2ZiYzViMThiNmZjMTFjOTgwYzQ4ZDI3NmJjMGJiODJhMTVhM2UgbGVnYWN5LXRydW5rCisyMzM5NCBmY2MyMTZjNThjODdmYTJjNjIwMTVhYzM2MjgwMjIwN2NhZDA5NjE3IGxlZ2FjeS10cnVuaworMjMzOTUgNzI3Yjk1ZGQ4Njg4NjExNWExNWNiOTUyOWY2NTdkYTNjMWNiNDU4NyByMjJhNC1icmFuY2gKKzIzMzk2IDFjNTI5MTI4MDU0YzhjMjBjZTFhNTljZDI5MmE5OWMwOGUzYjk3ODEgbGVnYWN5LXRydW5rCisyMzM5NyA4MzI1NmJlZjBkNzVlMzEzNWU0ODcxNGE2OWQ2NjdmZTVmMDIxYWQ2IGxlZ2FjeS10cnVuaworMjMzOTggNzBlNTdmNzU5NDAyN2QyOGY4ZmNkNDRhYjE1MThlYTY2OTMzZGI1YyBsZWdhY3ktdHJ1bmsKKzIzMzk5IGVjMmQ0Zjk5YmFkYzRiNzEzY2QxZWIyMWM2YmUxMDg4YzRmMmIyNmYgcjIyYTQtYnJhbmNoCisyMzQwMCA2ODkwMDcxODc3ZGM4NjBjZGQ5NjNhNGRhNzQ1ZTFhZThmOTlhYThmIHIyMmE0LWJyYW5jaAorMjM0MDEgMjI1ZjE3ZWM4OTMyM2E4YjE3Yjg5NTBjZTk5MWM0NGI5ZWFjNWVhMCBsZWdhY3ktdHJ1bmsKKzIzNDAyIDk1NjBmODZjNGZhNGE3ZjMwZDM0OTM3YzY2MzcxYmM0N2QyNDlhYzUgcjIyYTQtYnJhbmNoCisyMzQwMyBjYTk1YmNlNWEzM2VmZmY3YjhiM2NhOGFmNTM1NjE4MmExODgyMDczIGxlZ2FjeS10cnVuaworMjM0MDQgYmRlOWRlYjU5ZDFiYzA5NTczMWViN2JkNmI3OWVjNTk3OTQxMDNjYSByMjJhNC1icmFuY2gKKzIzNDA0IDJhYzZjMzJmYzIwNmRmOTE0ZGMyZjlkNDU2ZTc5YzU5NjUzNzI4YjYgcjIyYTQtYnJhbmNoCisyMzQwNiA4OWU1ZjEwYzlmOTk0MDBmMjg3MGVkODcwYjg2YjkzYTQzZjVjYjcwIGxlZ2FjeS10cnVuaworMjM0MDcgYjk0YmM3ZWM3YmU4NTFlYmVmNGRmMzQ0NGZjMjllZjU2NzY0ZmZlMyBsZWdhY3ktdHJ1bmsKKzIzNDA4IGU3OGM4ZjRlMmI4Yzk0MzU1MzMwNGUyYmYyYjFkYmM3YTM1ZDBhMTIgbGVnYWN5LXRydW5rCisyMzQwOSBjNmZjODc4MTA1NTE0M2MwNDNlZDNmOWVjZjNkZDUwM2RhNTkzMjZmIGxlZ2FjeS10cnVuaworMjM0MTAgYjVjYzU4NmFjMjVhZWQwZDgyZjA2MDFkNWM5YTBhMjJjYjI1M2ZhNyBsZWdhY3ktdHJ1bmsKKzIzNDExIDg4ZGEzOGE1ZjBiZjVhODUyNjJmNjRmZmFmY2M3MmQwYzRhNjc0MmMgbGVnYWN5LXRydW5rCisyMzQxMiAyMDZiMjVmZWJkZTNjZWEwMDA0NDQ1ZTI2ZWJjNTVmYjA3Mzc4NWM2IGxlZ2FjeS10cnVuaworMjM0MTMgMWY0ZDk5ZTdiMWU3NTQ5OWNjMzUzYmU1YThkYzcxZjllYmFkYTM5NCBsZWdhY3ktdHJ1bmsKKzIzNDE0IDU3MDdkYTkwMDkzNjI5YmZmNmIxYmZmZmZmNTE3MzBhMzExNTM3MmQgbGVnYWN5LXRydW5rCisyMzQxNSBjOGZiMDBmNWViNWU1ZGE4ZTliNDA5ZDk1MGM0Y2U3ZmRkOGZmMGM5IGxlZ2FjeS10cnVuaworMjM0MTYgNzJhNTM0N2QyZjlhZDk5ZThkOTA0ZDA0ODg1NjNmM2NkODFhNDUzYiBsZWdhY3ktdHJ1bmsKKzIzNDE3IGM2OGVmNDdiMTcwOWRhZTY2ZGEzYWNmZGM3NTNlMjU2ZWNjYWQ5OWEgbGVnYWN5LXRydW5rCisyMzQxOCBkNWQwMDA4NjJhNjY5YTk4NDY0NjBjN2UxMjAzNzFkNTExNzkyYjExIGxlZ2FjeS10cnVuaworMjM0MTkgYmJiMzUzZDMxZTI1NDI1YzhlY2Q2YTM0YzRiMGRhYWEwYWExMjAxYiBsZWdhY3ktdHJ1bmsKKzIzNDIwIDQxNmYwYmMyMjhlOGI5NDU5NzlkODk0MTViNjg2OTdkMWExZWQ0YzggbGVnYWN5LXRydW5rCisyMzQyMSA4YmEzMjg3MTgzZTA1YmUxYWQ2MTg5YjkyOWMwMGZmYjg3NWY2ZDhkIGxlZ2FjeS10cnVuaworMjM0MjIgMmM4YTVhMTcyZjQ3YmIzNWE4NWExMGQ0NWRhODJhZDRhYWU1MjNkMiBsZWdhY3ktdHJ1bmsKKzIzNDIzIDZmZjUzMTQzNWIzNGRjNzE5ODRmYWRlMDIxNzU4ZDIyMmM3MTZkYzYgbGVnYWN5LXRydW5rCisyMzQyNCBiZWE2ODY0NDk1OTU2MzU0ODJiMDRiYmViOGZhNDY4Y2IzMjQ0NzE2IGxlZ2FjeS10cnVuaworMjM0MjUgZWRiMGI4MDVlNTQ5ODg5MGFiMDBhYTUyZjQwYWE5ZTkzZDllOWZlYSBsZWdhY3ktdHJ1bmsKKzIzNDI2IDNiMzU2Zjc3OTIyZDhkYjVkMTMzODNlNzNkMDFmNjk2MDY2Mzg4YTkgbGVnYWN5LXRydW5rCisyMzQyNyA0NzBjMWM3MmEwYTdhNWYwYjliYTA0OTBhNGJhNDQ3YzM2MzYxNGIxIGxlZ2FjeS10cnVuaworMjM0MjggNWI0ZjczMjFkOWNiZjgxYjZiZDQ1MWE2NWFhY2FlOTRlNjQyZTM4YSBsZWdhY3ktdHJ1bmsKKzIzNDI5IGRiODJjMGI0MGRmYzQwZmVlMWJlZGRiNWZkZTM2ZjYxMjZmODI4ZDkgbGVnYWN5LXRydW5rCisyMzQzMCA2NTA4YWRiZDBiYjFiYjI2NjM3NGQ3YjQ5NzIzODdjN2U1ZDI2MTI3IGxlZ2FjeS10cnVuaworMjM0MzEgMDA2Y2ZhYWMwMjlhNzY4NGJjN2JiMTg5MzQ2NDFkOWVmMjZmNTYwZiBsZWdhY3ktdHJ1bmsKKzIzNDMyIDA5MWU5ZTNjZWVhZjA3YjQyOWZiMTUxMWM0ZWVjYTUwNTEzNDRjZjMgbGVnYWN5LXRydW5rCisyMzQzMyBhYmQ2YTA4YjJjMzI3MWFmZDhmMDQ0YjIxOTI3MmQzNDIwYTc3MGZlIGxlZ2FjeS10cnVuaworMjM0MzQgNWZiMDY5MWZiNjkwMzkxZTM3YzIxN2MxOWE5YjEyNDIwMzBkMDY0ZSBsZWdhY3ktdHJ1bmsKKzIzNDM1IDgzMTA2NjMzZjkzMzM0ZjU3Mjg2NzRhN2UzOGQyYmY5MjE0MzI5YzQgbGVnYWN5LXRydW5rCisyMzQzNiBkZTNlODUxODE4YTQzMjdmYjk5Y2QwYzVmM2I3ZjkxMTcwM2Q1ZDI2IGxlZ2FjeS10cnVuaworMjM0MzcgZjEwMDc5M2NhOWFmYzcwZmMzZmI5ODBiODFiOTI4NjQxZWQ0M2M1ZiBsZWdhY3ktdHJ1bmsKKzIzNDM4IDhmNzlmYTUzN2JkMjRiMzBhMzhjMTk3NWNhNjkwNWQ2MzY2NjZmOTcgbGVnYWN5LXRydW5rCisyMzQzOSBmZWYyODlkNjZlOGUxNTgyMzEyOWE3Yzc3NWU0NTVmYmViM2YzNTI2IGxlZ2FjeS10cnVuaworMjM0NDAgNzU0YjgxNjI4NGQxMzhlZWNmNjc4N2NjYmFmODNkNzk0NjE1ZjQxZCBsZWdhY3ktdHJ1bmsKKzIzNDQxIDg3OTlkZmEwZjc2YWM0N2M1MTJhZjljMmU1ZGJmYzAyZGQ1OTZjZjIgbGVnYWN5LXRydW5rCisyMzQ0MiAwMWE1YzQzZjE4OTRjZGYxYzEzNmY5Nzc2NTc5MzMwOTdlYmRhNWQ5IGxlZ2FjeS10cnVuaworMjM0NDMgNWVjYzAyYzFlZGFjM2FjNjc5NjBkYjljMDZlZTNkZmU2MzdlNDMwMyBsZWdhY3ktdHJ1bmsKKzIzNDQ0IDc4NGUyMWJkZDlhMmY5ZGRhMzRmZTZjMzYyMTIwNjM1M2Y3YTJlN2YgbGVnYWN5LXRydW5rCisyMzQ0NSA5ZGUyOTE2OTRiMWUxYmQxY2ZjY2RlYTdiMmNlZTYwMGU4Yzg4ZTMxIGxlZ2FjeS10cnVuaworMjM0NDYgNmQ3M2I1NGQ5MjA1MjAxNGUyMzFiYTk3OWNiMzliNjUzNTUwNzM5OCBsZWdhY3ktdHJ1bmsKKzIzNDQ3IGM2YjYxODlhODM5NzYwOGM2NDI0ZGM4NDllYjBjNWRmYjljNDVlNTMgbGVnYWN5LXRydW5rCisyMzQ0OCA0YzY5MjJmMjY2ZjA3OTRmYTgwMTU1MmI5NDBmNzVkMzVmNmI0MWQ5IGxlZ2FjeS10cnVuaworMjM0NDkgOGQ3OWRiMDFiMmJhMjVkYjhlZTFiOTIzZDlhOGE0NTA3MDUwZDg5MCBsZWdhY3ktdHJ1bmsKKzIzNDUwIGM3ODE3YjYwNzRiNTgwNDRjYTY4YjdjOTNjMWIwMjI0ZmUxOTM3OWYgbGVnYWN5LXRydW5rCisyMzQ1MSA4ZTRlNDkxMDU1OTU0YmJmNjdiMDQ4YTdiNzQ1ODNkN2UzMTVmMDM3IGxlZ2FjeS10cnVuaworMjM0NTIgNmRkYTQ5OGNjY2M0ODU1YTIyZGYwMzI1MmIzMWU1ZjY1OTQ4NTk2ZCBsZWdhY3ktdHJ1bmsKKzIzNDUzIDU4YjRjZmE1NDg3MTkxYzFmYjJmODJmMGU4YmEwMTk5OTNkNmI4NDUgbGVnYWN5LXRydW5rCisyMzQ1NCA1NjQyZDM3ZjFiMTYxZDU1NTM1ODQ3YzkxMzI5NTMxMDQ5NDE3YTg4IGxlZ2FjeS10cnVuaworMjM0NTUgZTk0NmM1ZDJmZTE1MWY1YjFiMjc1MWQ4M2IwYTkwZmY5ZjNkZmRjNCBsZWdhY3ktdHJ1bmsKKzIzNDU2IDQ5YTEzZTZlOTM1ZGIyOTY2YTI1ZWQxMDM0NDE3ZTBjNjcxNDgxYWUgbGVnYWN5LXRydW5rCisyMzQ1NyBiZTU0OGQ0YmU4ODhmNDdlZWM4NjU5MGM4YmM4MjE5MjJjY2ZmZTI4IGxlZ2FjeS10cnVuaworMjM0NTggMjEwNjAzMThmNTM5YWYwOTlhYTRjNzE3NjE4Mjk4MzU1Y2Y1N2ViNiBsZWdhY3ktdHJ1bmsKKzIzNDU5IDM0MDhkOTI5YmI5NDBhZDYxMGQyYjY5NGQ2NmM3OTM5MDM1MDE1MzUgbGVnYWN5LXRydW5rCisyMzQ2MCA2ZGU0ZWU0Nzc5NDlmOGQ3ODYzNzQxZjM5NDE4NTJjMjAzMTMwNGQ2IGxlZ2FjeS10cnVuaworMjM0NjEgYjRmMGYxMGE2YzVmNGQzNzIxMjUxOGM2MmYyYWE0MjUzZDhkYWQzYSBsZWdhY3ktdHJ1bmsKKzIzNDYyIDU3OGMxYmI3MjgzOTkyNTY1OTY0YTA4YjFlNGM4OTYyZjg1NzM3OTQgbGVnYWN5LXRydW5rCisyMzQ2MyA3MmVlNTczNDdhZWE2NTMzNDFhYzZmNzVjNzNhMTJlMWI5ZTllNzhjIGxlZ2FjeS10cnVuaworMjM0NjQgZjVkNzkxYzJhY2M5NTBlZWI4ZWZlYzg1NWZmMjMxNTRiNzMyZTEwMSBsZWdhY3ktdHJ1bmsKKzIzNDY1IDdkNWFlN2Q3YzdhOTYzNmVhYzdjMmJkZDBlZTRhYzQyMmRjM2Q1MTggbGVnYWN5LXRydW5rCisyMzQ2NiBlNWMzY2E3YjUwOTkyNGI1YzQ1ODIxNzIwMTJmZTMzYmY1MWNkMTNlIGxlZ2FjeS10cnVuaworMjM0NjcgOTg3M2M5OWM0M2Y3NTM2Nzg3NDNjNGMzMzlmZjZlZDhiNjk3NDIxNCBsZWdhY3ktdHJ1bmsKKzIzNDY4IDhlNmY2MDRiMDc5OTM3YmE4NzRjMTdlNzUyZGMyZDhhMjI2ZDY5MzUgbGVnYWN5LXRydW5rCisyMzQ2OSAwMDE1MmU2ODc0NWE1MThkZmUyZTUyZjY1ODljMTM0ZjRhNzVmMTI1IGxlZ2FjeS10cnVuaworMjM0NzAgMjBiYTQyY2NiMzZmNjc2NTQ5MmI4ODY4MDJlMjQ1YWIzMzY5YjQxNyBsZWdhY3ktdHJ1bmsKKzIzNDcxIGUyZGE5YTkyOWFjYWI1NTI5MGU5ZTc2ODI1YmRjMmQ2ZmM4NmY4MzUgbGVnYWN5LXRydW5rCisyMzQ3MiBiYTVhYWE2YmMxZTU2YjViZDc2MTFmZGUwMWU5NTY4ZDgzNjdjM2ViIGxlZ2FjeS10cnVuaworMjM0NzMgZTdlZjg4MTM4OTQxOWE2ODY3NzA4OTIwMjE5YjE3YjRhZjU4ZjUwZiBsZWdhY3ktdHJ1bmsKKzIzNDc0IDY5Yjk0MWQxMzE3Njc1MzVmODkxYjEwYzlhMDNhZmJjNzdlMTJkYmYgbGVnYWN5LXRydW5rCisyMzQ3NSBiMmY5NTdmOWM2ZjQxM2JjZjM5NzlmMDIxMWNiYTdlYWU3ZDY3ODhkIGxlZ2FjeS10cnVuaworMjM0NzYgZTNkNzU3Nzg2MTllM2RjNmI3ZWY2MjlhNWY2NTk3YTczZjVlNmJmNyBsZWdhY3ktdHJ1bmsKKzIzNDc3IGQwNTM3MjZmYjAxYmRjNjRhYTU4YmE3NDMwMmQ5NmY5M2MxZDgzYzcgbGVnYWN5LXRydW5rCisyMzQ3OCA5Njk4YjcxYjAwMzE1YWI5YWI3Mzg5NWJjNGQ2NzQzNDJkYjljYjE1IGxlZ2FjeS10cnVuaworMjM0NzkgZmFjZTFlYWE2OGNhOWI1YWVlZWZlNjgyNjk1ODAxNmNkYTYwMWM0NSBsZWdhY3ktdHJ1bmsKKzIzNDgwIGE1YTMzMDY0NmMxMzJhYzJmNDNkZTUwZWFjOGFjM2EzZWYwZWViOGYgbGVnYWN5LXRydW5rCisyMzQ4MSBjMGE2ZjUzNzczZTM1M2NlOTJhMmZhODExMzQyNmE2ZjM1MGZlYjE5IGxlZ2FjeS10cnVuaworMjM0ODIgYmY1NTc0ZjRmNDFmNzZmZDY0ZTBhYjNjMWY3NGNjYjBhMTkyZjBjZCBsZWdhY3ktdHJ1bmsKKzIzNDgzIDVhY2QyYTgxZDZmYTcxNDY3N2E4N2UwMjA1NGYxMzFjMTg1ZDVjNzMgbGVnYWN5LXRydW5rCisyMzQ4NCAwYjk5MTc0ZDZiMTc4NDU4NzZiZTc4OTM1NWE3NmNmNTQyMzRjMmE3IGxlZ2FjeS10cnVuaworMjM0ODUgYWJhZjllYTJlNTYwNzI5OTUwOTYyYzdlMTczN2Q0ZGNmZWM1NWRhYiBsZWdhY3ktdHJ1bmsKKzIzNDg2IGE0ZWYwM2I1YTkyODZkOWRjOTFiNTExYjAwZDE5ZjA4NzMwZjg1NTAgbGVnYWN5LXRydW5rCisyMzQ4NyBhODFkYjEyOTVhOWUyMjc4ZWNmZWEyMGI5NzdkNWNlZGZmYmIwZDQ1IGxlZ2FjeS10cnVuaworMjM0ODggZDZlYWU2NGZkYjVhYzE4NjBmN2FmOWI1MTM4YWYwNjJiMmM3YjJjNCBsZWdhY3ktdHJ1bmsKKzIzNDg5IGFhMThjMGVjYzRmYjY3ODQ3ZWU0NTQ3MzlhYzVkOWQxYjZlOGNiYzQgbGVnYWN5LXRydW5rCisyMzQ5MCBhYjUwNDIwNThiNmYxZWZlYTQwZTY5NTJkMzdkZDY3NjVlZDkwOGI0IGxlZ2FjeS10cnVuaworMjM0OTEgOTJmODY0MzZiNmJlNjMzZGEzMGEzODg4NjBlZDRiMWY2MjI0YzAxZCBsZWdhY3ktdHJ1bmsKKzIzNDkyIDFiZWU0OWJjOGQ5YzU1ZWQ5ZTYxNzVjOTYwYmNmN2RmOWM5YmNiNjEgbGVnYWN5LXRydW5rCisyMzQ5MyA4YmFkNTVlZGZkZjM5MzgxYTY2YWZmYTdiNzg0ZTMzODU0NDNjYmYyIGxlZ2FjeS10cnVuaworMjM0OTQgNWEyZTdjNzhkNDMzNDVlYjZjODI3YzlmNmRhNzkxNjY2ZWQ4ODc2ZCBsZWdhY3ktdHJ1bmsKKzIzNDk1IDQ2NGY5YTA5YTkxMDM4YTlkY2M4NDEwOTE4MWNkMDg0MmFjNWMxYjIgbGVnYWN5LXRydW5rCisyMzQ5NiBkNDc4MjQ5NGExZTNjMjllZDMyNGVlNTQ2MjljNTQ2ZDk4YjZlYmYyIGxlZ2FjeS10cnVuaworMjM0OTcgODEzODZhNzFlY2NlODY1Yzg4MmM3ZDdhNzUwM2M3YzlhZWRjNGYwZSBsZWdhY3ktdHJ1bmsKKzIzNDk4IDdlYTYxZGE4NzhhZjEwNzNlMWU4MjU4ZDE5ODQ5NGU3NmEzOTIwMTUgbGVnYWN5LXRydW5rCisyMzQ5OSBhY2ZiMjc4NjYyYzYyYzMyMDIyNTk1MDU3ZTgyMGU5NDVmMWUzNjI2IGxlZ2FjeS10cnVuaworMjM1MDAgOWVlNmE5OGYwMzJjMzEzZThmMDg5ZmE0ZWU1NTJjZjdiOGVmMGM5YSBsZWdhY3ktdHJ1bmsKKzIzNTAxIGQxNjcxZGRlYWNlMGI2NDQxNjY0ZmNkYTA4OGU5NTFlMWMxNGM0MTIgbGVnYWN5LXRydW5rCisyMzUwMiBlN2FjYTJhMzAyY2Q3MTM0ODQ0Zjk5MWMzYWQ1NGJjMGRmYTAzYjU5IGxlZ2FjeS10cnVuaworMjM1MDMgMjc0NWMzZGMyNGFmMjljZTQzMDk2ZDA0MmI3YmVkZThkMGI4MGUxZSBsZWdhY3ktdHJ1bmsKKzIzNTA0IDVjNDI2MWU3NDQ3ODBjZjAwMzExY2E2ODIxZGVlOThlNmVkNDIzZWUgbGVnYWN5LXRydW5rCisyMzUwNSBhZmY2ZmNkMjZjMTVjNDcxMzAxYjZkYTljMTFhYWE1ZGNkOTdkMWY5IGxlZ2FjeS10cnVuaworMjM1MDYgN2NlZGJhYWExMmU0NzRmYzU2ODI3OTMwYTMwYWJiMjYzZDFkOWFjMyBsZWdhY3ktdHJ1bmsKKzIzNTA3IDBlOTQwZGE4NDViZjgzNzkwODJiMjQzNjM1NjdjNWM3ZjkzMGI5NTQgbGVnYWN5LXRydW5rCisyMzUwOCAxNjY1OGRmODQ1NmE2NjI4MWI1ZmMwZjU3MDcxMmJmNmM4YTk1ODZiIGxlZ2FjeS10cnVuaworMjM1MDkgNzE2MGQ3OTU0NzNlOTE4M2U3NGRkYzFiMjgzZjljZWVkOTE5MGI0OSBsZWdhY3ktdHJ1bmsKKzIzNTEwIGYzYjNmZDVhYmZhNjE2ZGZhM2M3MGUwMzczYzI4OGVjNzM3NWFkMjEgbGVnYWN5LXRydW5rCisyMzUxMSBhNGQzMjhkNTA4OTc1OWJjZDgxODVlZjJlNTE5ZTA3N2Q4ZjQ2ODJjIGxlZ2FjeS10cnVuaworMjM1MTIgMTBiOTdhZTY5MDI1YzY1NGE3MzVjNjNjMzY4MDBlOTk3M2M2NTQ5YiBsZWdhY3ktdHJ1bmsKKzIzNTEzIDFhY2VjYzkwOGVlODZiNGYzZDEwN2MxOWViN2RjNWY4OTQwNDZiNGYgbGVnYWN5LXRydW5rCisyMzUxNCAxZGI1YWE2NzY1YzAxYjE0NWQxYTNjNjlhYTQzMDI0YzNiZDMwZWZlIGxlZ2FjeS10cnVuaworMjM1MTUgYjBjZTkyNTYxZTA3NWJkNWFiMzczODU0MDQ3ZGFlM2JlZGIyYzNmYiBsZWdhY3ktdHJ1bmsKKzIzNTE2IGI4NWNkMTYzY2Q1Y2QwZTdkMTU2NWYxNjgwNGMzZWQ3OGE0NDZmMGMgbGVnYWN5LXRydW5rCisyMzUxNyBkOTZjZDM4YTNmZWM3Mjk0MjYwN2RhYzE0MjFjZmY4ZDkxMjUxMzJkIGxlZ2FjeS10cnVuaworMjM1MTggYzY4ZjM2NDFiYWNkODI3MjNkMzBhNTE1YTc0YjllNzZjZjU2MGE4ZiBsZWdhY3ktdHJ1bmsKKzIzNTE5IDY2OTI4NTU5MjI4ODRiNTFjODhhYmViMmUyOWE5ZGU1YjY3NDc5MGIgbGVnYWN5LXRydW5rCisyMzUyMCA2ZjAyNTY5Y2M0NmZkYTUyMTdmY2I3NzRkMzcwNDQzMzZkYmZlOTVmIGxlZ2FjeS10cnVuaworMjM1MjEgZTNmNjNhOTU0NTVmN2MwMjQ4MmY5OGJkNWZmZmNmM2ZjYmU4MDc5OCBsZWdhY3ktdHJ1bmsKKzIzNTIyIDMxODU4OTQwNGI5NTcyNzgzMGJlYjUzOTJhMDJlNzk0MWM5M2NmN2UgbGVnYWN5LXRydW5rCisyMzUyMyA2MTUyZjgyZWE4MjM4MDMwZGM1N2FjOTBlNDU3MjA3NGU0NDgyMjlhIGxlZ2FjeS10cnVuaworMjM1MjQgMWVhNWJiYmFiN2Q3NzFkY2E5ODljNjdhMjNmYjgwNjZlYWFhMzkxMSBsZWdhY3ktdHJ1bmsKKzIzNTI1IDU2ZjE3ODEwNTM0YzJkM2I1NThkOThiODIwY2I2MDNjOWM4NjUxYTEgbGVnYWN5LXRydW5rCisyMzUyNiBkZTI5YzhlNGRlOWIzMTRhODc1NjQ5ZjYxYmYzNjJiNWE5MmQxMmQ4IGxlZ2FjeS10cnVuaworMjM1MjcgODczZDU4NGMxMjIxMzkwYjk5ZjE1YzZiNDUwMzcwODQ4NWE1ZTFiYyBsZWdhY3ktdHJ1bmsKKzIzNTI4IGQwOTJhYmNmOWM0Yjc2ZWYyODJjYmRiNWJhYzc5ZWVhNDUwMDFlOTkgbGVnYWN5LXRydW5rCisyMzUyOSBlNGU3NDljNDJmNDYxN2ZlNjQwZWQxNDY5MmYxNDAwMzc2ZTZhN2YxIGxlZ2FjeS10cnVuaworMjM1MzAgMjQxZWY4YTkyM2M3NjM5YTNmMTg3YTU5ZWFlOGY5NGY4MzQ5MThiMiBsZWdhY3ktdHJ1bmsKKzIzNTMxIDU5MzRhZWViMzk3ZjBlZmU1ZTliYmRmMGIyYmQxZTcwMjJhYWQyYWEgbGVnYWN5LXRydW5rCisyMzUzMiAwNTI1MDQ3NjE1OGE2NTVhNTkwMjQ5OWEyY2Q0NTgyZmRkMmZkZTU4IGxlZ2FjeS10cnVuaworMjM1MzMgN2VhMDQwMjlkMWFlYWQ3YTI5MzIxOTNjODdiZmIyYjcyMzI2ZGNmOCBsZWdhY3ktdHJ1bmsKKzIzNTM0IGNlNGE3ZTRhZDZjNDhjOWYwMTZmNGJlYjIyNWJhOTgzMjE1YjdmZWMgbGVnYWN5LXRydW5rCisyMzUzNSA2MTJlODZhNGNkOWY2ZWMzYTUxNDAyNjFlYTQwZGNiNDBlMmUzZjEyIGxlZ2FjeS10cnVuaworMjM1MzYgZjA5MTZhNmRjZWYyNzVmZmUyY2E0OTA1NzJmZGYxNmRjYzY1NzQ5YiBsZWdhY3ktdHJ1bmsKKzIzNTM3IDIyNjljYjM3MWUwNWZjMGNiNWNmNGY1NDgwZGEzZDdhYjY4OTk3Y2EgbGVnYWN5LXRydW5rCisyMzUzOCBkN2Q5NTZiNDdkMjQyZTJiN2U2MGQ0OTVmOWJiMjMxYmMzMWFhODBiIGxlZ2FjeS10cnVuaworMjM1MzkgMTY3ZTdmOThiNTFmYjM3ZDAxNjQwNTA4NzAzNTk5N2YwYTEwZjE3NyBsZWdhY3ktdHJ1bmsKKzIzNTQwIDY2YTU2YTIwY2ZhM2Y2Y2UyMjY5NTA1NTg3Y2VkZTM1NjQ1MGZiM2QgbGVnYWN5LXRydW5rCisyMzU0MSAyOTgzYjU0MjU2YzcyMjVlNjFkZWNiYjJiZDVlNTlkZDI3NGY1ODk5IGxlZ2FjeS10cnVuaworMjM1NDIgYTI2NWQ4YmQyZjI3NzdjMWU1OTZkMzNiNmQ5OTQyNDYxOWU1NmJjOCBsZWdhY3ktdHJ1bmsKKzIzNTQzIDhiM2VhNzMzNWMxYmRjNjUzMjAzZDMxYzAyNTI0ODliODFjNDIyYWYgbGVnYWN5LXRydW5rCisyMzU0NCA5N2NmYTQ2MWQ3OTNkMzVkZTc5ZjViYTVlZDQ2MDBkNDZlZTQ2NWY4IGxlZ2FjeS10cnVuaworMjM1NDUgMzgwZDRiNGVlNjAyNDNjMjIzYWUwNWEyMDdlMWMzNmI1YTU5NGI5YSBsZWdhY3ktdHJ1bmsKKzIzNTQ2IGUzNzUxYWYwZjFkZDE3OGMyNDA1ODYyZDFlZjlhOTNjNzE2ZjhmMzUgbGVnYWN5LXRydW5rCisyMzU0NyAwNGYyOTZmNzExZGYwMjNhZmQxZjIxYzkxOTE4ZmY5MDQwN2RkNjhjIGxlZ2FjeS10cnVuaworMjM1NDggZmI1ZjEyMTE3MDM2MDM1MDk2MjVhZGMzMmZlZDU1YWZlNjA4NTkwMiBsZWdhY3ktdHJ1bmsKKzIzNTQ5IGNjYjdhYmM3MTRlZGRhN2U5NDlkODEyN2I4MmZlN2FhMDRkZDJjMzggbGVnYWN5LXRydW5rCisyMzU1MCBjODUzZDI0NmYzYzhmNzAwNDEwNjU0NzE5ZDVhMjUxYWMxZjJkOGIxIGxlZ2FjeS10cnVuaworMjM1NTEgZjQ4NzgyMjM3Zjg1MzI4ODAyN2IyODg2NjdmZTVmOGU2YjI0NDVkZSBsZWdhY3ktdHJ1bmsKKzIzNTUyIDVjY2ZlMDQ0OTJhYzliNzM0NmJmYjRmMzViYzAxZmVjZWJkOGExZWYgbGVnYWN5LXRydW5rCisyMzU1MyA2ZTdkNWFlMjgwMGZjOTQ3NDE0MGVjOGJjODE2MzJjOWJjYTliYmQ1IGxlZ2FjeS10cnVuaworMjM1NTQgYWNkODM3ODIxNmMzMWYxY2MyYjY2MDdiYjdjYWEyOGUxOGY4MDc3YSBsZWdhY3ktdHJ1bmsKKzIzNTU1IDE3OGJhMzNmNjdlNGU4ZDFlNDY3ZGVkNGI3MDM1Mzk2ZmEzNDk5MDcgbGVnYWN5LXRydW5rCisyMzU1NiBhNDNjYjZjNTkwNzBmODBlNTBjNjdiN2Q5NmZhYWE1OGQxMDc1Y2E4IGxlZ2FjeS10cnVuaworMjM1NTcgYjI4NWRlY2YwNDIxZWM2Njk5MTQwMDM0OTBmNTY0MTBjMjM0ZTJiMCBsZWdhY3ktdHJ1bmsKKzIzNTU4IDQyNmIzNzlhMTM4YjQxYjcxYWI3NmE3NWQ5ZjQxODNjZDA4Nzc1YzQgbGVnYWN5LXRydW5rCisyMzU1OSA1ZDJkMWUyZWM0NzNiMTAyNTBiMTg5NDUwNGM5NWRiMzE5YjBmMTZhIGxlZ2FjeS10cnVuaworMjM1NjAgNmNjMGI0ODA0OWVjNGI1OWViZDc1ZWVmNmM1YmQ2NDY3YTU0Yjk5MyBsZWdhY3ktdHJ1bmsKKzIzNTYxIDc5MzkyYWIyYzAyYTllMmRkOWJmOTMxZmNhMjE2MTBmNjU5YWZkYzQgbGVnYWN5LXRydW5rCisyMzU2MiA2MjExNjg0ZWQ5ZGRmMDc3MzYwMTI2YWM5NTQzZWNkNzgyNDk2NGI4IGxlZ2FjeS10cnVuaworMjM1NjMgNDJiNTI3OTM3NDBjMGRmMTcwNWExZmMyOWRiMzc4MjEyNDc5MTVjYiBsZWdhY3ktdHJ1bmsKKzIzNTY0IDg3NGJiMTcwNzRiMGQ0ZGY4ZjMwY2E2OWFlMjU3MDI1N2Y3NWVhMWYgbGVnYWN5LXRydW5rCisyMzU2NSAzYjNlZTk3NjMzYzExZGIwNDllN2EyZmY5YWRhMTcyNGZmMDU0NGYyIGxlZ2FjeS10cnVuaworMjM1NjYgYzUzNDVjMGFiZDcwNjE5MzA2NDA1OWE3NmQyN2RmOGI2MzJjNGM1YyBsZWdhY3ktdHJ1bmsKKzIzNTY3IGZhZWM2OWMxMTY0MDM2MWExYWU4YzE5Zjc5OGU1NDZlZDgwZWI0MDMgbGVnYWN5LXRydW5rCisyMzU2OCBlNDRjZGVmNzkxZWU4NDA1NWE4MmU1YjFjY2RiM2RkN2MwYmM4ZjQ1IGxlZ2FjeS10cnVuaworMjM1NjkgMDgyOTVlYzU4ZWE5N2RkZTE2NWJkZTliZGRlOTNiNWFlODllMmI3ZCBsZWdhY3ktdHJ1bmsKKzIzNTcwIDFjYTIyOGUyMWE5ODdhNzIyZjE0NDZjODJlYzc5Y2ZhNmE0YTQ1NWQgbGVnYWN5LXRydW5rCisyMzU3MSBhYTY4MTM0NWJmYWIxMzM3M2QyYWYyOWE1YWI0MTU1ODY0M2IzNzgzIGxlZ2FjeS10cnVuaworMjM1NzIgY2EyYmM1Y2RhYThlOWVkMjFkNDYyZTMzZGNiOGVmNWViMWFhODk5ZCBsZWdhY3ktdHJ1bmsKKzIzNTczIDMyNmU1YTcyYzY2MDI4ZTJiYTdkMGIyNjJjNTk0YjY0NTJhOTI0YTAgbGVnYWN5LXRydW5rCisyMzU3NCBiNDQ0N2JiNWFhMGVhZGVjOTU2YTk1Yjc5MDNkNmEzZjA3ZTY5ZTQ1IGxlZ2FjeS10cnVuaworMjM1NzUgMTIzNTNiMTMxMjI0YzZhY2M4NTk5NjY5Y2M0ZTJlOGI3MmIwNzg3OCBsZWdhY3ktdHJ1bmsKKzIzNTc2IDMzOTNkNmY4MDdmNWQ3YjViYTMxZWExZDljZTI5YjlmNmExZTQ2MmUgbGVnYWN5LXRydW5rCisyMzU3NyBlYTE5MTBkMmM3ODFkZDBhOWRkYjgwYjQzMGZiYTI3MzllZWQzZjVlIGxlZ2FjeS10cnVuaworMjM1NzggMjg0ZWFiZTNiNTUyY2RhM2ZjZGQwNjhhNTY2OGYyODE2MGU5ODhmMSBsZWdhY3ktdHJ1bmsKKzIzNTc5IDdiNDFmN2EyZTUyODU0ZjI5YmNjYTA3OGQ4MjYzYzI4ZmYxNTBiOTYgbGVnYWN5LXRydW5rCisyMzU4MCAyZTA3M2JjNzI2ODY5NTFhMmFhOTM2MDllNmQ1ODYyMzM2MGRhYzZjIGxlZ2FjeS10cnVuaworMjM1ODEgNGVmN2ViOTBiNjlhYzc0ZGM3ZjQ2MDE5MTFlZWZkNjhiMTQ4NTZlMiBsZWdhY3ktdHJ1bmsKKzIzNTgyIGY5YTY2YjI0YmZmZmJhMmUyZjYwOTY5NDA4YTQwZTUyNjQ2NTAxN2EgbGVnYWN5LXRydW5rCisyMzU4MyAxMjUzNTUzZmMzY2M4ZWMyYjMxOTBmNGY0MzgzZGUyNzg3YzMyZTMwIGxlZ2FjeS10cnVuaworMjM1ODQgZjI5YjhlYTBiNjk1NDQ5Y2I4YjJjNDkwNmI4NTAyNTgzYmEzMjJhZiBsZWdhY3ktdHJ1bmsKKzIzNTg1IDI2N2M2ZmUwYWJjMmVlYjhiN2RiMTI4ZGZlMzU4YzRkYzA2NmM4MzcgbGVnYWN5LXRydW5rCisyMzU4NiA1YTk4ODAxNTZkNzEyNTM3ZTU0YWY2NGZjYmJiMWFjOTZlMmJhM2ZlIGxlZ2FjeS10cnVuaworMjM1ODcgYmRhMjc0ZGRlMjdlMTAyNjRiMTBlNTM4ZTIwMmE1YWQxNWZjMTYwMSBsZWdhY3ktdHJ1bmsKKzIzNTg4IDQyOWEwOGUyZmM3ODJjM2M2YjZjZTg5MDJkMTlhZjVmOGYyN2M0ODQgbGVnYWN5LXRydW5rCisyMzU4OSA4NTg1NTM1ZTQwNGJjYWI5ZGI0ZDE0ODM1ZDE5ODQ0MDM3OWNiYmU2IGxlZ2FjeS10cnVuaworMjM1OTAgYjMyZDY2YTRiNWU2YWQ0MmI4YjU2Y2NmYTdlZDZiNzkyZmNhOTNiNyBsZWdhY3ktdHJ1bmsKKzIzNTkxIDU0ZjA1YjliMWZjNGJiYmE5MmY2Y2ZlOTUwYzdlODc4MjdmMGQ2ODcgbGVnYWN5LXRydW5rCisyMzU5MiAyNmI1ZjhiOTQ4NzJiN2FmZjcyYWQ3NDcxYTE1YTlmZDA3N2UyZDY4IGxlZ2FjeS10cnVuaworMjM1OTMgYTk3NjM2NzViNzRjN2E1ZmJkMmI1NDQ3ZjA1MzVkMmExNDE1MDNlNyBsZWdhY3ktdHJ1bmsKKzIzNTk0IDc5ZmJjZmZmNTc5NzBiZTE2YTljM2JjMDhiYzRjYWJlMTgwNTVhMjcgbGVnYWN5LXRydW5rCisyMzU5NSBjNTI0N2EzNjZmZjU3YmVkODg4ZGQ0OTRkMmRjZWQ4N2IyOGU2MzU5IGxlZ2FjeS10cnVuaworMjM1OTYgMDRmZWU3MGZlZDhmZWFiOTRjMjM5ZDVhNGYzN2ZlMDIzOWZiYmJiNSBsZWdhY3ktdHJ1bmsKKzIzNTk3IDg2ODk2YjVmMWViYzJmODFiMjEzOGFiNGIwZmFmOTc0N2NjN2QwZmIgbGVnYWN5LXRydW5rCisyMzU5OCBjNzBhMmI1N2E0ZGQyNTFlYWMyNDVmMWE1YTY4OTYzMjcxMDdlMDhlIGxlZ2FjeS10cnVuaworMjM1OTkgODM4MzdhYzViYjQwZjRkNWE1MTQwODc4NzY1MTNlNGU3M2VjNWI2OSBsZWdhY3ktdHJ1bmsKKzIzNjAwIDFiM2ZmZGYxMjE1MDliZjY0NDE0MWRmYjkwMWQ0NzhlZGRhYmIxNWIgbGVnYWN5LXRydW5rCisyMzYwMSA0YmYzZmNlM2Y2Y2VkZjVlYmZlNzkzMjJhNmI2ZjJlNmFjNDFiYjIxIGxlZ2FjeS10cnVuaworMjM2MDIgNzA5NmU0NGNkMWJkMjllZTEwZjljNWVlOGE2YmZiOTNjNmRjZThjZiBsZWdhY3ktdHJ1bmsKKzIzNjAzIDg1MjI2ZGY5YTViZTkxZTE3OGE4M2M4YjQxYmNiYjI2MTUxMDc2ODQgbGVnYWN5LXRydW5rCisyMzYwNCA1M2E5NTcyYjYyMzc3N2UwMWE3OWJmZjYwN2Q4Yzc1MWQxZWY2ZmI5IGxlZ2FjeS10cnVuaworMjM2MDUgMTRlMGZlMTUyNzExZmEyNDY3ZGQ5MGYwNzM3ZjAwNDFhZjk1YzgzMCBsZWdhY3ktdHJ1bmsKKzIzNjA2IDQ0YmVkMjU0ZDgzNzNjZWNmY2ZiYzBkODk5NzQ3M2RhODM1Y2FiYTAgbGVnYWN5LXRydW5rCisyMzYwNyA3YmQxMjI3MGRjM2U3N2NkYzlmNGY4YjIzYjIyNWU0MjZkMjA1MzI3IGxlZ2FjeS10cnVuaworMjM2MDggMzZkMTQ4MjE0ZDhlMjdkZmY0MjU4OTM2MTYzZDQyYjExYTFjNWUwZCBsZWdhY3ktdHJ1bmsKKzIzNjA5IDY3YTdhOTlmMmQ1YWMzOGM2MzZkYmMwMzJiZDQxNWQ3OTc5MTQ0ODUgbGVnYWN5LXRydW5rCisyMzYxMCAzMmUxMmY4ZDc1ZDgzMjZiMzQ2NzQ5MDQ5NmQyODljNjE4YTIwY2U5IGxlZ2FjeS10cnVuaworMjM2MTEgYjc5ZmZkM2ZjYTI4YzhmZjVhOWRhOGJlZWRlNGU0ZTM3Yjg3MTVhZCBsZWdhY3ktdHJ1bmsKKzIzNjEyIDQyNWM2YzU1OGZhYzFhYTk5YzQ1OTU0OGIwNGNkNTlkM2UwZmNiZjUgbGVnYWN5LXRydW5rCisyMzYxMyAzM2RhYzYxODFiZTU3YzhlOTI4ZjAxM2IxZWE4NWY1MTBkYjBiMjIzIGxlZ2FjeS10cnVuaworMjM2MTQgMGE5MTViMjJlMDA2YWExY2JiMDBlZWZlYzkxZDQxNDEyZGFhNjFmMyBsZWdhY3ktdHJ1bmsKKzIzNjE1IDY2ZTc3NTg1YjRiZDk1OTQzNzUyMzkwZTliOTVlNTBkNjY2M2QyMTUgbGVnYWN5LXRydW5rCisyMzYxNiA5ZTdhMGFmNGMwYTNiNmE3MWM0Nzc0ZDhiNTYyOWUzYTNiNjE5YTlhIGxlZ2FjeS10cnVuaworMjM2MTcgZDFjN2IzZWRlNDgxNTkyNjIwMjRkNmRmMmY4YjA1NWYyMGZkNTc5ZCBsZWdhY3ktdHJ1bmsKKzIzNjE4IGZkYzE5MTQ0MDZlMjZlMjcyZmZiNDY5ZDhjMjM1NmM1OWQyNmY3NzggbGVnYWN5LXRydW5rCisyMzYxOSA0ZGJiNTA1ODFkOTAzYTQ0MjhiNDE1OGNlNzgxOTJhZWRmNjA5ZWQyIGxlZ2FjeS10cnVuaworMjM2MjAgYzBkNjYyOTY2MjcyNzQ2NDdjOWNlYjIxZjUxYzcyZGYzZTQ5YWNmNSBsZWdhY3ktdHJ1bmsKKzIzNjIxIDkyZDU2YWU2M2VkM2Y3ZDBkYzUzMGZiYTQwNmFmYzVjZTQ0MmNmOTAgbGVnYWN5LXRydW5rCisyMzYyMiA5OGY1OTdhMTdjOTA3Zjk2MmQ4MzJiY2ExMDI0ZTVkZTQwMDYwOWM1IGxlZ2FjeS10cnVuaworMjM2MjMgZTE5MWNlZWU2NzJmZmUxNTVmNWM0ODkxODYyZDZkNzZlY2IwZTgyNyBsZWdhY3ktdHJ1bmsKKzIzNjI0IDhhMDljODU1Zjk1NzMwNDEwNWRiOGI2MTJkYTZjMDJjNDFhNWExMDIgbGVnYWN5LXRydW5rCisyMzYyNSBjNDA4MzMzZDM3ZjA2MTU1NjAyZWI1NzMwMjUyMTViMzEyZmEzYmIxIGxlZ2FjeS10cnVuaworMjM2MjYgYjk5N2FjNzBlNDQ1ZWRiYTNmYjUxNzYzZmQzMTJmODQ5MTBjY2E1MSBsZWdhY3ktdHJ1bmsKKzIzNjI3IDZiMWQ4Y2I5OTA0YWMwMWQ0MTI2ZjJkMjBmODg0YWUxM2MyOWQwM2IgbGVnYWN5LXRydW5rCisyMzYyOCBiMGQ4MzA2YzA5YzUxYjBiNjlkY2E4NmMzNjBkNjQ1MDU4MGJlNzJkIGxlZ2FjeS10cnVuaworMjM2MjkgZTQ2ZjY5ZjU3OThiNjg4YzFiMDJjYmM4MDk2ZWVlYjRkZTY0YjM2ZSBsZWdhY3ktdHJ1bmsKKzIzNjMwIDdiY2FjYTY1MzM4ODI0ZDY0NjI3MzJkYmZiYzg4ODFjMDNiYmEyOTUgbGVnYWN5LXRydW5rCisyMzYzMSAzMDBiMWQ4YmZhNGRlMWQzNTEzMWRlYTg2NWI2OTc4MjlmNmM4YTk1IGxlZ2FjeS10cnVuaworMjM2MzIgOWU3MmJjZWI1NDBiNTQ3NDBmNGRlYTE0NGRiMmFkOWI5OTQ1NjQxYiBsZWdhY3ktdHJ1bmsKKzIzNjMzIDg4MzBiZTMyMDlhMmFkMWJmZDNhNDE2NzAxNTY2YjlhZTJmYjI1N2EgbGVnYWN5LXRydW5rCisyMzYzNCBhYmZkMTcwMDFlOGY1ZWZlMWE3MzljYmYzZjI2M2E3ZWEwOGQ4ZjZiIGxlZ2FjeS10cnVuaworMjM2MzUgOGVmM2U5NTE4MmMzNmRjMTNkNWI1MmZjMTVkNTRmODA1NGQ4OTRiYiBsZWdhY3ktdHJ1bmsKKzIzNjM2IGRiZWM4NjNkMzNkN2VhMzUwMTVjNDBlMDVmZWY5ZTk0ODkxY2JiY2QgbGVnYWN5LXRydW5rCisyMzYzNyA0YmNjMjMxYzFhNDFhNGUyOTNkM2U2ZTIyYjRkNDY5YjRjMWU4MmViIGxlZ2FjeS10cnVuaworMjM2MzggOTQ5ODM5NDJjOTRiOWI3ZWFiZTMxZTkyOWE3YmNjYjhjOGI3OGE1MiBsZWdhY3ktdHJ1bmsKKzIzNjM5IDNhYjNiNTM1ZGFmMjQ5NWY2ZWEwOWQyZGNjNmZjYzkwNzkwNTJjOTEgbGVnYWN5LXRydW5rCisyMzY0MCAwNjFkYTIyZjQyMDM5Y2NhZGFiZDFkMzRlYzU3ZTdkN2FkNjNmYWFhIGxlZ2FjeS10cnVuaworMjM2NDEgOWMyZDQ0NDY3NGQwOTAxZjU5NGY1ZTI4MzZjZjRjODU4ODlkYThmNyBsZWdhY3ktdHJ1bmsKKzIzNjQyIDJmODliMzQ0ZmRiM2RkNWM4NGMyN2RjNTlmYjhhYmY2NWM2ZjE3ZGYgbGVnYWN5LXRydW5rCisyMzY0MyBhZmY4ZDE0YjI4YWRhM2Q3OWVmMGI2NWE1MmFmODk1ZTNhNDI1ODg3IGxlZ2FjeS10cnVuaworMjM2NDQgM2FkYzNhMTRjZGU0MTI3YWMxZjRhZTRkZjliNDBkN2RiZmEyNzYxOCBsZWdhY3ktdHJ1bmsKKzIzNjQ1IGI0ZjgyOTk0MWYzZGY0MTFlMTE0M2ExMWNkYzdkZDE4MDgyZTY3MDUgbGVnYWN5LXRydW5rCisyMzY0NiBiZTA4NzM0YjBhZmQyMTAxNjkyYWQ4OWEyMjQ1ZDkxMTZhODZjNTk3IGxlZ2FjeS10cnVuaworMjM2NDcgM2I0NWMwNGE0ODMzYmU5MGNlN2M0ZDU0YjhjODMwYzg3MjBlZTYxNSBsZWdhY3ktdHJ1bmsKKzIzNjQ4IDJiYTQwMThkZTJlMzEwNjQ4MDliNWM2ZDUzZTI0YjlmNzc0NDU3N2UgbGVnYWN5LXRydW5rCisyMzY0OSBiZTU4ZWVlNjlhOTQ5NDQzYjBhOWVlZjg4OTQ2OGZiYjUyMDJiNDlkIGxlZ2FjeS10cnVuaworMjM2NTAgM2MwMWMzNGQwN2Y2OGVjMTZjYTRjOTUyYzcyYTg4N2E4ZDVhZDViNyBsZWdhY3ktdHJ1bmsKKzIzNjUxIGY5MDhiMDYzZjI4Yjc5NzVlNWVmODg1YmQ2ZTk2MmM3MmQ4MWRjOGYgbGVnYWN5LXRydW5rCisyMzY1MiBiZThjYmE1YTNiN2JlODc5OTMwY2RhM2RlMzc2MmNhMDBkOTZmY2JiIGxlZ2FjeS10cnVuaworMjM2NTMgYjQ3MTY4MTc4ZDg3OWNiZTMyOTM4MGQ3ZDcwYjcxNzI3NGRmOTdhOCBsZWdhY3ktdHJ1bmsKKzIzNjU0IDk0NmJlYmQwMDEzMmMzYmJkNDAzNzgyMGJjYWJhMDBkZTdhMjEyOGYgbGVnYWN5LXRydW5rCisyMzY1NSA3NzNhMTMwYjMzMGViZWFjZWM5M2IxNDQ3MDRmYWNmNjJjNjM4OTk3IGxlZ2FjeS10cnVuaworMjM2NTYgODUzYzI2OGJmMjQ3OTVlN2EyNWJlYWNiNzQzYWEzMTU0NmMxMDhiMyBsZWdhY3ktdHJ1bmsKKzIzNjU3IGMyN2NmOTEzYjFkNjkxMDMwZDdlMmQzM2U3MTQwMmZkODhkMjIzMjMgbGVnYWN5LXRydW5rCisyMzY1OCBhZDFmMDgxMjgwYWEwMDlmNWUzMmZhYzUzOWU4OTFkODdiODhlZmQyIGxlZ2FjeS10cnVuaworMjM2NTkgMjA1MDg3N2MwYzM2M2FjMTgxMWFiNWNhMzEwNTUxN2Y2MTQwNWYzNiBsZWdhY3ktdHJ1bmsKKzIzNjYwIDcyOTQ5MzJkNzRlY2FlZjVjNTNjOTU2ZDU4YTQ2YzJhZWU2ZmE0ODEgbGVnYWN5LXRydW5rCisyMzY2MSA5ZmU5NzU0OGQ5NTIxZmQ4ZWE4NDk3YjI4YmJmNGM2OTQ3MzdiYTM4IGxlZ2FjeS10cnVuaworMjM2NjIgYzlhMjEyMzI5ZGE2ZjBjYTFiYzdlMWYzOGFhMmVlNjg2NGZhYWVlMCBsZWdhY3ktdHJ1bmsKKzIzNjYzIDY1ZjYwZDNmY2RkNzdlMDJlNzMwMjVhNDRmZjIyMGM3YzIzMDA0NTIgbGVnYWN5LXRydW5rCisyMzY2NCA2NTc5MDU2MjAzM2MxM2NiYzgyYjBmZDRjMThlZTdhYzI3YTc4YzQ2IGxlZ2FjeS10cnVuaworMjM2NjUgYjc0NjEwYzkyZDhiODI2ZDBiM2JkZWJlYjI3ZWMyMTBmMjQxMzM2MCBsZWdhY3ktdHJ1bmsKKzIzNjY2IGY1N2YxN2NiNDEwODY1NDJiY2FiMGEyMjA4YzhmOTIwM2EzZGNkNjYgbGVnYWN5LXRydW5rCisyMzY2NyBlZDJlZWFiODAyZDJjNDliZDE1NDk0MDI3MzhmMDVmZDk2NzE3ZjAyIGxlZ2FjeS10cnVuaworMjM2NjggOWFlNzhlZjg1OGUyY2E5YmJlYTZmYjAyYjA5YjYzMmUxZjFiYzY3NCBsZWdhY3ktdHJ1bmsKKzIzNjY5IGI2YTVmZWNiZWMzY2JlYTZmOGNjY2MwYzA5NjI4ZmJmMTg1ZDZhMzkgbGVnYWN5LXRydW5rCisyMzY3MCBjM2E5MzdjZjYwYTVmNWNkYTdkNjViYjMxNTE0MWFhYmFiMjM5ODQxIGxlZ2FjeS10cnVuaworMjM2NzEgNmIxMDQwODNmNWYzM2E5MGI4ZTdjZjE3YjZhODEwMmU1NTQ5MDUzYyBsZWdhY3ktdHJ1bmsKKzIzNjcyIDQ2OWE4ZTFmN2VkZjUxMzdmMGMzMjIxNGNiODI0ODM3MGMyN2FlYzUgbGVnYWN5LXRydW5rCisyMzY3MyBiOTgxODVjODgyZTRlNzZmYTE5MjlhOGMxYTU4NWRkZjRhOWJmNjkwIGxlZ2FjeS10cnVuaworMjM2NzQgMmE0YmI3ZDE5YjYwM2ZlODU2ZDQ4NWZmYzNjNTU0MzQ1ODYwNjRkNiBsZWdhY3ktdHJ1bmsKKzIzNjc1IDRkYWI2MWY0ODQ1ODE3MjFmYjA5ZGNiZTYyNzc5N2I2ZDVmZGM5ZmQgbGVnYWN5LXRydW5rCisyMzY3NiA2OThiZjdjMjJiZmViYTYyY2VlY2U3OWM0YWU5ODc4NDhhNTI4ODVkIGxlZ2FjeS10cnVuaworMjM2NzcgMWNhNjI3YzRjMTA1ZjIxZmJkMmMyN2U5NTVkMzk3ODgzNWNmNWIxOCBsZWdhY3ktdHJ1bmsKKzIzNjc4IGU0ZDBiMWY5NGVjYThkNmIyMzI0NTcyNTQ2M2RiOGVjMzFhYzdiYTYgbGVnYWN5LXRydW5rCisyMzY3OSA2MjFjNzcwM2U4Yjc1MjhlOWRmOWJhMzczOGJlYmFjYWE2ODY2M2JiIGxlZ2FjeS10cnVuaworMjM2ODAgNTkwMGE5ZDgwODQ4MDkyNjljNTViYmJiYzg5NGQwYmUxNTU5NWI3ZiBsZWdhY3ktdHJ1bmsKKzIzNjgxIGMxNjhlZGE3MzZlNDRhN2M4YjRjZGFlMzRiMjE2YzcxMTQxODZiODUgbGVnYWN5LXRydW5rCisyMzY4MiA5MDMyMjE4NTJjM2E1OWMzMTcwNzM2ZWEyNDNhZTJhMTM4ZGU2MDNhIGxlZ2FjeS10cnVuaworMjM2ODMgNGYzZDEyNDA4MzBlNmY1MzAzOGE4MDJlZGRhMDQwODA0ZDViNWExZiBsZWdhY3ktdHJ1bmsKKzIzNjg0IDNhMTgxMzNmOTkwNjQzNTA0YjQ4ZTAwMDRiYzU5MTg0ZDJiMmYyMzQgbGVnYWN5LXRydW5rCisyMzY4NSBlZTg5NTY3YmNhYjQ0NTBhNTFhZGU4ODQxMWE3OGE1MjgxMTJjOGE0IGxlZ2FjeS10cnVuaworMjM2ODYgZjYxODYwN2U4Zjk4NDIwZDY4ODhjNGU0Nzc3MmJlODIyOGE5YTgwMCBsZWdhY3ktdHJ1bmsKKzIzNjg3IDQ2OThhM2VjNWZhOGNmYWQ5YjRkNzk1MTM5ZTRkYWRiYjY0NmY1OTYgbGVnYWN5LXRydW5rCisyMzY4OCA2ZGEwMzcxOGMxMzMwYzNjMjIxMTg3ODczYWE5Yzk3ODgxOWUyYTBiIGxlZ2FjeS10cnVuaworMjM2ODkgN2QxZjQ5MGI2Y2IxNzI4MjRmOWRkZWIwNzNlYTRkZjUxNTI0OWYwOCBsZWdhY3ktdHJ1bmsKKzIzNjkwIDUxOGUzMGY5MGQxZjdkODg0NGUyNzE4OGRhYTU5Y2NhNTZjNDY4MmYgbGVnYWN5LXRydW5rCisyMzY5MSA0NzEyYmI2MmNjMjVkMDViMmQwYzc2YTkzY2IzYmY1OGFlZTg4OTFhIGxlZ2FjeS10cnVuaworMjM2OTIgNjMyYjlkM2E4ZDFhN2IyOTA2ZjdjODJiMTc0MWZjZDZiMTk2NDJhYSBsZWdhY3ktdHJ1bmsKKzIzNjkzIGIwMjk4NmU5YTZiZTQ3MjI2NjQyYjdlNWVkNjU3ZGUxOGJhZDhlNTQgbGVnYWN5LXRydW5rCisyMzY5NCA1ZDVhZDk1MWE2ZDZlMTcwZDRmMzNiNjQyOWE2OGVjY2E4YmE5MDk2IGxlZ2FjeS10cnVuaworMjM2OTUgY2VlMGZlNWZjZTExNWRhNTk1OThhODRmYTllOGMyN2IzY2UwNWYzYyBsZWdhY3ktdHJ1bmsKKzIzNjk2IDU2MTQxYjg2YTdmMmM5NWExMmY2NmRlZWE0OTgyZjc0YTUzNTljYjMgbGVnYWN5LXRydW5rCisyMzY5NyA3ZjUxYTRiN2RlYjQ0MGVlMmZkNWQ2YzQ3M2M0Y2YxMDFkMTYzZDVhIGxlZ2FjeS10cnVuaworMjM2OTggYmEyODUwNDA4ZjBhMjYwZDU4ZDk0MzZjYTI0MzRhNGVmNGJkNDdkMiBsZWdhY3ktdHJ1bmsKKzIzNjk5IDUwMDBiNWQ0YzMyNjVmNTQxMGU3NzhiMzNhZDdjMmUyNTM4N2JkNGEgbGVnYWN5LXRydW5rCisyMzcwMCAyMDExOGY0MTI5ZGVmZGZlMzE5ZmUwODc5NzgxMDc3ZmRjZDUwYmI1IGxlZ2FjeS10cnVuaworMjM3MDEgMzU4Mzk3YjkwNzBmNmE3ZWU5NWZlMzkzNDA5N2EwZmRmMWI5NzljNCBsZWdhY3ktdHJ1bmsKKzIzNzAyIDA4ZDdhNjc1NmJmZWQ5MmE4ODhhODBiM2FmNGVjOTdjNDU2Njc5MWEgbGVnYWN5LXRydW5rCisyMzcwMyA4NTU3MWQ1ZjY1NDViNjdiYTZlYmY4MDg3YWY3YTY0MGVhZjgwZTFkIGxlZ2FjeS10cnVuaworMjM3MDQgOWJlMmNjNmI5OTU5ZDgzMWM1MWFiMDZlMDRiMDEzNGM2OTlmMjI0NiBsZWdhY3ktdHJ1bmsKKzIzNzA1IDU2MjgzNGVkOGJhYmRmN2FlMzFjYjZiOTMxODE4OWY0ZjkxNDQxYWQgbGVnYWN5LXRydW5rCisyMzcwNiA0NjdhYzQ1M2NjYzMyYzdlYjYzZDJiOWRlZGE1ZjI4NDdhY2JmN2IyIGxlZ2FjeS10cnVuaworMjM3MDcgMDM2MjRkNzQ4NGZhMDYwMGUwYzQ4ZmRlY2E3NGExODQyMTdlNzVlOSBsZWdhY3ktdHJ1bmsKKzIzNzA4IGJjOTA1YTExYzE0OGE0OGJjYjVmZDQwYjEzMzVhNTJkOWQ2NDlmMzAgbGVnYWN5LXRydW5rCisyMzcwOSAyN2FiMDMyN2IyZmMzYTllN2E3YmQwM2E4ZTg2M2MzMzQ1ZmY0OTEyIGxlZ2FjeS10cnVuaworMjM3MTAgODU1MjQ1YmI0ZDQyNzZjZWY3OGEyY2NlZGQ5ZWY2ZTYzYjU0NjY2NyBsZWdhY3ktdHJ1bmsKKzIzNzExIDM1M2EzZTlmODUxNmMxNTk5Yjc4ZmRhYTNlMzY4MzQ4Y2U1MGNhNWIgbGVnYWN5LXRydW5rCisyMzcxMiBiMWE4NjE2ZjEzZTRjZDcyNmJlNTU4MDM5OGY3NDRlMDRhZTlkMzhlIGxlZ2FjeS10cnVuaworMjM3MTMgNjllNjVlNzM5MWI4MTdiYzA0ODQ2YjdlOGExYmY3MDk4NWY0MDI3MCBsZWdhY3ktdHJ1bmsKKzIzNzE0IGI3MjU2OGEyYzE3Y2VjMjMwODkxMTRjYTFkMjU0ZDNkYWQ0NWU2YmYgbGVnYWN5LXRydW5rCisyMzcxNSA5OWIyYmQyNWJiMTJkNDdhMDFmYzE0MzE0NDU5NTU1YWU2MTZlZjI0IGxlZ2FjeS10cnVuaworMjM3MTYgNDFiZWQxZjZkMjZjZWIzYTc1N2IzZWEyMTMzOThjMmY4MTU2ZjJiYiBsZWdhY3ktdHJ1bmsKKzIzNzE3IDY0ZjRhYzYwNmFlNTMxM2Q0MjVlZDhhM2MwMDg2Y2ZhY2IxMmFjYzQgbGVnYWN5LXRydW5rCisyMzcxOCA1OThjMDJhYjA2MmQ0M2ZmY2M2NmYxZGU5NGI0N2MwYzE2M2I1YmQ0IGxlZ2FjeS10cnVuaworMjM3MTkgZWM5NTk2Njg3MjkyOTYzZTM2ZTRiYWQ0Yjc5ZDE4ODQyODVmNzVlNiBsZWdhY3ktdHJ1bmsKKzIzNzIwIGJmZjZjMmQ3NmYzMzZjNTJkNmRlYjQ4YzY3OTE0MzNlYTdhMDNmYmEgbGVnYWN5LXRydW5rCisyMzcyMSA0ZjcxZGNmZDBhOTM3MGVmN2JlNDI2YjQzOTg3Mjc2ODE4MjdjNzJlIGxlZ2FjeS10cnVuaworMjM3MjIgYTk2MjM1YjJjYTYyNWIzMGE2ODY0NmE2Mzg0ZWFlYWMzYzY4ZDk3ZiBsZWdhY3ktdHJ1bmsKKzIzNzIzIGM2OGQxODU1ZGFhOWVhMjQ4NTFhYWJjMWYzMDljODc1Yjk3OTQ4N2IgbGVnYWN5LXRydW5rCisyMzcyNCBmZmJmOTRmZDljZWY4ZTJmNmU4NTMxZGFjZTAzZTMxZWUyYWIwMDYzIGxlZ2FjeS10cnVuaworMjM3MjUgN2U3MWVlYmFiNGVhMzllOTlkNjI2ZDcyY2JiMzk1YWE1ZTk3NmE1YSBsZWdhY3ktdHJ1bmsKKzIzNzI2IDJmMGM1YWY0ZDVlYTA3ZmI1NmEwNWI2ZTZkMTViYTRiZGIxZGQ0ZTQgbGVnYWN5LXRydW5rCisyMzcyNyBjZTEyYmIxMDk3YTQxNjc1MzRlNDNjNDY0ZjdmMWU3NjUxYzUzZmNlIGxlZ2FjeS10cnVuaworMjM3MjggOThkZjAxMTVlY2Y5MDEyYzQ2Y2VjOTk5YWE5NmMzN2MxZDY1MzI1YiBsZWdhY3ktdHJ1bmsKKzIzNzI5IGM3MjkxNWQ4YWFjNzI4OWY4NmNkYzhiMzI0MDE0YTRmYTZlNWY0M2EgbGVnYWN5LXRydW5rCisyMzczMCA2MGUxMmY4M2QyZDIyNWUzYjFhODkyZWYwNGYxYjk2YTg2NDZkM2ViIGxlZ2FjeS10cnVuaworMjM3MzEgNWI1YzE1YTA5NWNjN2FiYjUxNWY0ODcxNTRlNDQ0YjllOTYyMzIxMCBsZWdhY3ktdHJ1bmsKKzIzNzMyIGViZmQ4N2U4Nzg4NGUwNmY4MDJlMTBkYWFiMmU5MzE4OWVjZGJmNzMgbGVnYWN5LXRydW5rCisyMzczMyBjNDZlOTRmZDY5ODZiNmUwZWE2NmY3OGMwNDQzNTFlMTM4MzdmYmU0IGxlZ2FjeS10cnVuaworMjM3MzQgODk2NGVmODRjOTJmNGQyMTc4YmIzOGZlNDFkMWY5ZmEzNGM1OGU0YiBsZWdhY3ktdHJ1bmsKKzIzNzM1IGJiZGMwYWJmYmIxMzk3ZmY1MWJhOTczNDc3MmJjY2U1ZWYyZDk5YWUgbGVnYWN5LXRydW5rCisyMzczNiBkYzcyMDRkZDI2ODZlYTNlY2ZiOTI4YWQ4ZWYwNjk1NDNkMjUyMDg5IGxlZ2FjeS10cnVuaworMjM3MzcgOGQ1YzAwMGUwZTViNDQzODhmNTMzMzkyYmUyNjA5N2NhMzg1ZjNhZiBsZWdhY3ktdHJ1bmsKKzIzNzM4IGE1YTMwYmEyODk5ZjU3ZTlkZWY2MWZjNzliM2M1YzI0YzQ2YmI2MTEgbGVnYWN5LXRydW5rCisyMzczOSAyZjA5NWMzZTAwN2RkNzc2ZDQ3NDQ5Y2Q4MWE1YmM2NmZjZDA5YjY5IGxlZ2FjeS10cnVuaworMjM3NDAgMGNiMjg3Y2Q3NTQ3YTg0N2M2MjQzZWVkNjU2MTQ1NWYyMjI1MDViNiBsZWdhY3ktdHJ1bmsKKzIzNzQxIGMyMzk4OWUyMmZmYTUwMTE0ZmIxNWZmODgyZGYzODUwZmI2MzJjNGMgbGVnYWN5LXRydW5rCisyMzc0MiAwNzFjZmVlOGQ4ZWI5YWMyOTY4M2FhZjgwMDQzN2U0NmE4MDQxNTE0IGxlZ2FjeS10cnVuaworMjM3NDMgNzY5ZGY4NWQ3MGJjMTNmZjBkYzQyNWU0M2Y0NmQ0Y2U3NGU3MWM0ZiBsZWdhY3ktdHJ1bmsKKzIzNzQ0IGRkMGNkZDNkZWZkODM5Zjg4YzZiZmVmYTFiYjAwYjRlMDhmMTc1ZDAgbGVnYWN5LXRydW5rCisyMzc0NSBjZDk2YzRiMDFmZjBmMGE4MzEzZWMwMzFmYmQzNjA0YTY4MmIwMWEwIGxlZ2FjeS10cnVuaworMjM3NDYgOGY0NzMxNzliMDczMDA5NGYyYTU4MDg4ZjRjMGMyZTdiZWI0ZTQ3OSBsZWdhY3ktdHJ1bmsKKzIzNzQ3IDVkNjc4MzU2Yzg5NDI5YjJlNGI5M2NhOWZjNGFmMTBjNDQ2M2VmY2QgbGVnYWN5LXRydW5rCisyMzc0OCAxYTk0OTRmOWVkYjI3MDIxN2Q2ODAwODQ4ODIwOWEyMjVmZGQ5YjllIGxlZ2FjeS10cnVuaworMjM3NDkgNGFmOGQyNGZhNjkxZWVhMWEwZTZhMWY1MDAxNWVkM2VhOWFlNDRkMCBsZWdhY3ktdHJ1bmsKKzIzNzUwIDRiZmRiYzgyMzEwZjFiYzM1YTZkMGI2ZTRhZDJhNTIwNDBmNDlhNjcgbGVnYWN5LXRydW5rCisyMzc1MSBiNjkyNzNiZWUwOTUwY2Q3YzkwYjIyMzIwNWVlM2M2ZTZlZmJkZDc2IGxlZ2FjeS10cnVuaworMjM3NTIgYmU2N2I2NmU1ZmVkMGY3MjY2Y2VlNzkzZDE2ZjlkYWIwYjg0Y2MyNSBsZWdhY3ktdHJ1bmsKKzIzNzUzIGUwOWZiNDg0ODc2NTM1MjhmZTY0MTJjM2MzMzQ2MWE4NWIyNDQ4ZGQgbGVnYWN5LXRydW5rCisyMzc1NCA3Y2JkNDA3YmU2ZTdkM2QxNmQ3Nzg2NDJlZjEyMmE3MDA2MDIxYjI1IGxlZ2FjeS10cnVuaworMjM3NTUgMTQ5YTY1ZmE0MjdjMzQ5NTliNjIxZGZmYWQ3MjU4NmY3ZWRjYTgwYyBsZWdhY3ktdHJ1bmsKKzIzNzU2IGJmNGZmMDVlYWI1MjA3YWQwNjZlZWIyMDUzMTQxMmE5OTU5ZDVkZTAgbGVnYWN5LXRydW5rCisyMzc1NyAxZDllNjlmY2YwZjhkNGY1MTYyN2VlZjIxZTllZGNkZDFiYWQzNjg3IGxlZ2FjeS10cnVuaworMjM3NTggYzhiMGU5OTQ1MTU5OWY1Yzc3MTc4YjE2MmVhZDYzNDUyM2MxZTVkMCBsZWdhY3ktdHJ1bmsKKzIzNzU5IDY4ZmVmYTk4MmM1YzI5MWU5NzljN2MyNjI2NTZhNWM1MWQwYjBkZjMgbGVnYWN5LXRydW5rCisyMzc2MCA3Y2JkMjg4N2Y2MGZjZTNlNGE5NDY5MmEwOTA1NGZlM2ZiMTQ4OTE3IGxlZ2FjeS10cnVuaworMjM3NjEgYTliMTlkYjE4MGEyNjAwYjAyMWIzYzY4MWU2YmZjOWQ0MzUzNjlkMyBsZWdhY3ktdHJ1bmsKKzIzNzYyIDJiYzQxODNmYjU3ZTY5ZmExNjBkYzI0MWQ0OGVjODk0YTUwM2Y0OTYgbGVnYWN5LXRydW5rCisyMzc2MyBhMGM4YzJlNWE0NGQwODcyYWM1MjNmOGQ4Yjk4Zjc1Njc0MTRmM2VjIGxlZ2FjeS10cnVuaworMjM3NjQgZmRkYWNlZmVlYjM2ZGZhMjZiMTUxMmE1NzFlZGExNjg4ODNmZWNjOSBsZWdhY3ktdHJ1bmsKKzIzNzY1IDczM2NiMjY4YWQyZmIwYjc0MDdjY2NmNWQ4NWEyNzlmZTM3NGI4MGMgbGVnYWN5LXRydW5rCisyMzc2NiA2NDI2YTVhZGJmNzc1M2JmMDZjN2M3NWRkNDBhMTZkZWNkZTQ3N2YwIGxlZ2FjeS10cnVuaworMjM3NjcgODQzMzFjOGQ5OGE0MWFkZDkwZDdiNjcxNGZmNDNmOThmOWZlNWJjNSBsZWdhY3ktdHJ1bmsKKzIzNzY4IGUwODY0YWFjOWI2YjI1ZDI3ZmMxNWRhZjljNjg5YWVhOTczNTUwZmQgbGVnYWN5LXRydW5rCisyMzc2OSA5Mzg0MWM1ZjQ3NWIxMDBhOGMyNTRmZGZkYTYzOTdkMDc0YzI0NTUxIGxlZ2FjeS10cnVuaworMjM3NzAgOTdjNzVmOTgxYTllNjI3M2Q3M2M2ZjJkYzE3YjIyMzBiZmYxMDc1YiBsZWdhY3ktdHJ1bmsKKzIzNzcxIDM2NGMyMzhhNjg3MTBmZDk0NjMyYmQ1MDg2MGUxZDhmYjUzYTRiNTAgbGVnYWN5LXRydW5rCisyMzc3MiA4ZTBjMzE4NDljNjQ4ZTdkMzZlZmJiZDFjZTc1ODFiYzVkNDE5YjYxIGxlZ2FjeS10cnVuaworMjM3NzMgZGZjOWYyM2M4NjU1MzQ1MzMyMzE1ZGQ3MjRiM2FlYTU3MDc0ZDM3MyBsZWdhY3ktdHJ1bmsKKzIzNzc0IGJkYzQ4NmM2NmRmMDRiYTBkNzQ0OTE5MWE3NmVjOTc2ZThhYjM3ZGIgbGVnYWN5LXRydW5rCisyMzc3NSBjMTNhNDczY2UxYjdlZGRiYjA4ZGYwOGI2M2NkMDRmODg5NTAwNTQyIGxlZ2FjeS10cnVuaworMjM3NzYgZGZiMmVmYTU1OTY3MmI4N2VlYTBmNTdiNWU1OTY4NTA2NmI1NTAxYSBsZWdhY3ktdHJ1bmsKKzIzNzc3IDYyYjIwNzU4ODg2NmNjNmY1MGU1NTA4ZjNhYWYzMWJlOTVjOWNjMDkgbGVnYWN5LXRydW5rCisyMzc3OCBmOTM4Y2QxYmE5NGVjNGUzMjczMDA1NDA0ZTA5YWFhODUwMDA2YjlmIGxlZ2FjeS10cnVuaworMjM3NzkgMDZmMTI1NGQyMjgwOGVhZDE4MjAyM2FhNWM2NjQ5ZDAwODFiN2U2YiBsZWdhY3ktdHJ1bmsKKzIzNzgwIGQyMTE2MGE5MjE3OTEzODljMTI4NTZmYjEzZTUwZjM0OWI1YzNmZTQgbGVnYWN5LXRydW5rCisyMzc4MSBkNTFmZTUyMGU1ZmRjMDIwYzMyNzVkYmE0MDAyMTAyYmIyODc2ZTE4IGxlZ2FjeS10cnVuaworMjM3ODIgMjNkYzdiYjBiZTRmYjc3ODY4ZTA1Mzk2ZjE1MTAxYzk1ZTBlOTQ4OSBsZWdhY3ktdHJ1bmsKKzIzNzgzIGQwMWM1ZjI5OTE1YTI4YzgzOGE0NzI1Mjc1M2UyM2Y4NWY3ODViMTkgbGVnYWN5LXRydW5rCisyMzc4NCBiYzNjODQxOTg3NGM2ZTFmMzg5Y2Y1Yzg3OTdmMjAxODAwNzdhYWQwIGxlZ2FjeS10cnVuaworMjM3ODUgY2I4N2JkOTdmNzQwZjE3NTFhZmZlNDgwMWUyNTFiMjlkMDkzMWY3ZiBsZWdhY3ktdHJ1bmsKKzIzNzg2IDNkMTM0MTdhNjNlMGZkNzM1YTg1ZTJkMWIwNmM4ZWUwNzE3YzhmMDEgbGVnYWN5LXRydW5rCisyMzc4NyA1NGE4Mzk2MDQ1NDAzYzBlMjg3ZjJlY2ZkMWIzOGE3MGZkMGUyODE2IGxlZ2FjeS10cnVuaworMjM3ODggZmQ1NjE0NGE5NmU4ZmE2NDRjNWUyOTE4OWI2NTM5MWU2YTVlNTkzZiBsZWdhY3ktdHJ1bmsKKzIzNzg5IGM5NDhiY2IwNDE1ZTBjMzJlYTQxMzg2YmY4NDQzZmRkMDRjYzkxOTIgbGVnYWN5LXRydW5rCisyMzc5MCAxZjNjMWU4MzFmMjE2YTQ5YmU2YzA4MzIzYTczMDYyOWNmN2UwOTU3IGxlZ2FjeS10cnVuaworMjM3OTEgM2QzYjZiNGNiNzlmMzk5YjIyZTIxNDlhNzcwNzJhOTI2MTczZjIxNSBsZWdhY3ktdHJ1bmsKKzIzNzkyIGNiMzM0YThjOGRkMjNhNTY2ZmRhZDBiZjdiMDQ0NWMxMjlkYWUyYzcgbGVnYWN5LXRydW5rCisyMzc5MyBkYmZlZDNiZjE2MGVlZGEwM2QzYTMyMDE3OTlhMzFhMzUzNWU4NDM2IGxlZ2FjeS10cnVuaworMjM3OTQgZjBlMzNjNTdlNDZlODAxMDE0ZDk3OGQxMGJjYWNjYjQ1NmQ5ZjkyYiBsZWdhY3ktdHJ1bmsKKzIzNzk1IDliODRlZmJmNmIwZDBiNzc2NzMzMmQyMzRjM2U3ZTQ2ZGY0MTI2MzEgbGVnYWN5LXRydW5rCisyMzc5NiBiYzEzOGJjNzNjZGQxYzM1NGY3MTllNzYzMzY3YTc5NmMwMWFkMzExIGxlZ2FjeS10cnVuaworMjM3OTcgNGY3YmVmZWMzNWIwMTk3ZjRiNzkwNzJhNThhMTg5YWU0Mjg3NmJmMiBsZWdhY3ktdHJ1bmsKKzIzNzk4IGMyMDA1YmI4NzliNDY3ZDU0NzlmZjMyYWNjMjdmNTg2NDRjYzczNTggbGVnYWN5LXRydW5rCisyMzc5OSA4MGI4YmZhMDQ0MDZiZjNmNDkxNWY3YmFhMmJjNmM0MGY3MTM0ODE0IGxlZ2FjeS10cnVuaworMjM4MDAgNGIxNjE1YmY2ZWIwOWQzMWM3NjIxYzY1YTllZjkxMzQxM2U5MzliOCBsZWdhY3ktdHJ1bmsKKzIzODAyIDAxYWY5MWFlY2NkNDQ3MjU0MjQxNzllMjdhZjY4MzFmMzkzNjg5NTkgbGVnYWN5LXRydW5rCisyMzgwMyBmZTFiNmNlNGViOTM2MzU5ODkyYzQ3MGZjNzk1MjI5NzZhOTQ0MGViIGxlZ2FjeS10cnVuaworMjM4MDQgMmQ1OTlhMzZiNjdhOGMzMGNiOThhNDNkZWY0OWM3ZWRmMzdlZDlhYSBsZWdhY3ktdHJ1bmsKKzIzODA1IGFkMjY2MjA5NWQ3NzI0NjkxZDBjNDg0YWZmNDZjMmJkMjk2ZDQ4ODAgbGVnYWN5LXRydW5rCisyMzgwNiBmNTY3YjQ1NzM3YzBlMzQ4MGUyOGQxMmYxMTAyODgzZTA1MjE2Y2I4IGxlZ2FjeS10cnVuaworMjM4MDcgMjk0OTAxYWI4NjMwYjVkYzA5NzAzY2ZjMDc3MDhhMjQ2ZmFlNGFlMCBsZWdhY3ktdHJ1bmsKKzIzODA4IGE4OTk1YTZkZThkMDA1ZTY2MzY2ZTczMTVjNjBmODMwOThhYWQ0MDIgbGVnYWN5LXRydW5rCisyMzgwOSA0YmE0NTQ4YmE5NDE3OTQwZGUyYmI4MzM5N2MxMmYzYzlhNjMxMzk2IGxlZ2FjeS10cnVuaworMjM4MTAgMzY3MTRiOThmZTUxMjBlNjUyNzFkODAzMWU3ZGFlYzlmZTU5OGNjOCBsZWdhY3ktdHJ1bmsKKzIzODExIDczYTEzOTVhMjM1MTY0OTA5NjlhMDQzMWY2ZDMzOWRmMTgxNGY0MzIgbGVnYWN5LXRydW5rCisyMzgxMiBhMTJjY2RiY2U4ZGE5M2ViYTY1YjhmYTRlNDI5YzUxNDY3ODk3YzY4IGxlZ2FjeS10cnVuaworMjM4MTMgYTU2NDI3ZTVjNWUxNzI4NGMyMmY5MjdlZjFjYjM0MmUzZTIxN2VlNCBsZWdhY3ktdHJ1bmsKKzIzODE0IGQ4ODI1NDc1YjgwMDcyZThlYTliOTg3ZmU4NmNiODMwYjk3ZTAzODIgbGVnYWN5LXRydW5rCisyMzgxNSA2YTVhMTBhNWI1MjY1ZGQxM2U2NjUwOGJmYTAxZmExYWNmZTVlZTE4IGxlZ2FjeS10cnVuaworMjM4MTYgYzk2MDhjNzkwZjZmNWZhODUxMzkxNGEzNDllNGVlYTVjN2U5NzEzNCBsZWdhY3ktdHJ1bmsKKzIzODE3IDY1ZGQ2MTU3Zjk5OTM0YmE0MTA3MGY4NmM4ZjYzZWFjOTBkMjAzNGMgbGVnYWN5LXRydW5rCisyMzgxOCA3MjJiYjFmZDMxZWEwOTZmY2ViZjBjYzAxZDFmODZlOWRhM2JiNWYxIGxlZ2FjeS10cnVuaworMjM4MTkgMDMzNmVlNWI0NmQ0MjIyZWMzMDdhNGJkZTZmN2ZiNWMyZDlhZWJkNCBsZWdhY3ktdHJ1bmsKKzIzODIwIDk0OWJhNDdlOGYzMGNhN2YzZDYzODIxOWM1MzlmZDE3Y2Q3ZWUwZGYgbGVnYWN5LXRydW5rCisyMzgyMSA4N2U1ZmUwNTZkMjk5ZjVlYTJhYWM1MmQ4YTc4OTBkNjE0MmVhNzcxIGxlZ2FjeS10cnVuaworMjM4MjIgYWU1MDdjZjY3ZmJmYzQzZDJmMTkxODk5MjAwODFmYzQ3MGQyN2Q3OSBsZWdhY3ktdHJ1bmsKKzIzODIzIDRhMjU3YTU4YmU4YmZiNzMzMWFmNzZhNmI5MDI5NDhkMWY4ZDQzNTkgbGVnYWN5LXRydW5rCisyMzgyNCBkYTgxMTI1YjJhZjhlYWYxMGJkMTMyZmFiMzBhZTc2NTcyYmQ2MzZhIGxlZ2FjeS10cnVuaworMjM4MjUgNDczYWRiZjUyMTcxODQ4ZDIxNzMzMTYxNDgzYTMwZTU1NjAyODcyNCBsZWdhY3ktdHJ1bmsKKzIzODI2IGVjNzJiNjNkMjY5YWViOWEzMjkyODRiMDBkN2U2YWI1ZWNjN2E2NGMgbGVnYWN5LXRydW5rCisyMzgyNyBkMDYyMWE2NjljNTY5MGQwNmJkZTI4NTBlNmIzNmQ2OTVkMzM0YzRhIHIyMmIxLWJyYW5jaAorMjM4MjkgZWMwNWFmYWZlMTNiOTVkN2Y2NGFhNTEyYWFiNzZlN2UwN2M3ODBmNSByMjJiMS1icmFuY2gKKzIzODMwIDM3N2IwOWFjNzI2ZTdlYTJlMjY1ODQyNzFiN2EzZGE4ZDZmZmZhZDMgcmVsZWFzZTIxLW1haW50CisyMzgzMSA5MDU4ZTQ5YzZjNTdkMjM3YjkwYmFjNjQwZThjNTA0ZTgwY2MwMmI0IGxlZ2FjeS10cnVuaworMjM4MzIgY2UyYTNmMTU2MTVmNmJhM2FmNzI3M2VjMTM1MzIyNGNiZWI5OWFiYiByMjJiMS1icmFuY2gKKzIzODMzIDhkZGRmZmZiOWYyYmI3ZTRjOGY3YzFjOTJlNWJmMjc2ZTIxNTM2MWYgbGVnYWN5LXRydW5rCisyMzgzNCA2Zjk5MDJhY2UxOGQ4ZWI2ZjBiODAyYmU2OTI2YTNlMzY4OGJmYzY2IGxlZ2FjeS10cnVuaworMjM4MzUgMDhmMTY1ZjEzNWE4YTY0MzYwZTRkODIzNTlmODQ0MjVkYjg2NTNkZiByZWxlYXNlMjEtbWFpbnQKKzIzODM2IGNiOGU4YjQyY2RmYmViNWUxNzQzMDRjNDFmOWE0ZjljYjg0NzhlNjEgcjIyYjEtYnJhbmNoCisyMzgzNiBlOWZhZDU1ZWY3MDRkYmViY2RlNWUxNGNiOGRiOTZhZjg0YzIyZTU1IHIyMmIxLWJyYW5jaAorMjM4MzggNjE4MDljNTE0YWQ4MDY5ZWYyNDMyMzYyMGQ2M2M0ZWQyY2Q0ZWMwZiByZWxlYXNlMjEtbWFpbnQKKzIzODM5IDgwNWYxODRiNmRlMDlhNTI5Y2EyMDM3YzE2M2RlYTU3NjRmZmYyYmYgcmVsZWFzZTIxLW1haW50CisyMzg0MCBkMDY0NDZkNGU3OGRhMjM0MDhiZjU4NTViMjMwOGNmOTM4YmE2NWIyIHJlbGVhc2UyMS1tYWludAorMjM4NDEgNzExMTM1Y2UxZTU0ZjVlNzY5MTE1MDEyZDFjOWQzZmRkYzM3ZDMxOSByZWxlYXNlMjEtbWFpbnQKKzIzODQyIDU0MWY4MjVjN2Q2MzdjZWM5ZGNmZWNkMjRiYzY4NTZhOTE2NTQ3ZWQgbGVnYWN5LXRydW5rCisyMzg0MyBhOWJhYmExNmViZjM5ZDFjOTk4NzAwMGQ3N2M4ZmRmZWUzZWIxYWI2IHJlbGVhc2UyMS1tYWludAorMjM4NDQgNWY0OTUwZGQzN2M4YTliNzNjNDIxNmJhNzc4ZTQyYTEzMTVkZmE3NSBsZWdhY3ktdHJ1bmsKKzIzODQ1IDVhZjZjODljOGNiNzVmMzM3ZDMwNWU5NzY4NzkyOTAwMzliM2Y0ZDkgbGVnYWN5LXRydW5rCisyMzg0NiAxNTFlNDVlOThjMTFkMzU2MzAxOTU3YTMwMGU1MjNmODFhMjNkMzhjIGxlZ2FjeS10cnVuaworMjM4NDcgMmNiMzJmN2Y3OGMyZDFlNGZkNmVmODFiMjZjYjI0N2VhODNkYzBhMiBsZWdhY3ktdHJ1bmsKKzIzODQ4IGNlODhlYjQ2NWNlNzZjMTNhZDA5ZDkxMWIwYWIxZGQ5MWE3ZjM4YmEgbGVnYWN5LXRydW5rCisyMzg0OSA5MDU4YmNjZTY5ZTMxOGM4MGQ0NGZhMDNhZjIyZWE1YzJiMDI2ZjYwIGxlZ2FjeS10cnVuaworMjM4NTAgODRhNTg2YWNkYzAyMzczM2FhZTNmZTFkYThlZTMxMzNiMzdjYTUzZSBsZWdhY3ktdHJ1bmsKKzIzODUxIDM3NmVlMTc0ZWNkMDc3NDIxMTY5Yjg5MDMzYzA0Nzc0ZTRiNDU3YmIgbGVnYWN5LXRydW5rCisyMzg1MiBiZjAzYjhlM2VmOTNhZjExNTA5MDlkOGM5NWNjMzMzY2I0NjAzN2U4IGxlZ2FjeS10cnVuaworMjM4NTMgODBiY2M4YjdkNjE5MGViNzNlMGExMWY0MWY2NDA0ZTNlYWM0N2E1ZCBsZWdhY3ktdHJ1bmsKKzIzODU0IGI1Y2EwNjg3YmE2YTgwOTZiMTFiYmY4ZDZlNmU5NWUwYmFjYmZhYWUgbGVnYWN5LXRydW5rCisyMzg1NSA4ODdhOTNmOWQ1ZDVkOWNiZmEzOGM0YmViZDIzMjUwOWNmMzRmZTBhIGxlZ2FjeS10cnVuaworMjM4NTYgN2QxMjU3NDg1YWVmMmU3YjgwZjcxZDdmZWZiOGIxMGUwMWJhMjhhNCBsZWdhY3ktdHJ1bmsKKzIzODU3IDliZDYwM2Q0MzRmNTUyYWI4MzNiMDMzMTU1NTc1NTA4MWY3YWFlYzIgbGVnYWN5LXRydW5rCisyMzg1OCAzMjVkNTEzYTUwYmJhOGU5MDBiYjZmYTQyZWFiMjYwNGNhZGUyMmU0IHJlbGVhc2UyMS1tYWludAorMjM4NTkgYWFkNzYyNTAzZDExZThjMjQ0MzI2NWZhOTU0MzJlMzAwM2M3M2ZiYiBsZWdhY3ktdHJ1bmsKKzIzODYwIGQzMjk4NDM1ZDg1YjU4NGI2NTA5ZmIwOGJiY2MyNzczZWNkYWY3NjMgbGVnYWN5LXRydW5rCisyMzg2MSAwNTBlZDhhMjFjZGU1ZGRmM2VmYjVhZDVmMzMyZThkZWI2MTRlMDIyIGxlZ2FjeS10cnVuaworMjM4NjIgOTI0NmI2YzdlNzQyMmJjNmU5MjM1NzNjMDJhMjMzNzU2MTk2OTY4MCBsZWdhY3ktdHJ1bmsKKzIzODYzIDgyYmNmYWM4OTY0MjVjYzhhZmZkNWM3MzZkMTZlODEyZWMyNWM4NjcgbGVnYWN5LXRydW5rCisyMzg2NCAyNWQ3NjRkODgxNDkxYzczZDEwMTk4ZTQ4Mjg0ZTFlZTIwYTRmNTVjIGxlZ2FjeS10cnVuaworMjM4NjUgMGQ1ZTZmYzA0ODFkNjE0YWNmYzkwMjRlZDM3ZGJjMTVjMDMwYTUwNSBsZWdhY3ktdHJ1bmsKKzIzODY2IGM0ZDlkODY3NDUwNjJlYTFlMzI0YjE5NDdiMTc3OWE4MWE0YTk5MGYgbGVnYWN5LXRydW5rCisyMzg2NyBjYTVmMmZmODM5NzkyYWM4MmU5NWI5OWEzZThlNTFiOGQwMjNlMjJhIGxlZ2FjeS10cnVuaworMjM4NjggYjQ3ZTE1ZmE0M2U4NTFjMzYwNzJiOGY2ODg4ZmYwNTE3Y2IyZWQ2MSBsZWdhY3ktdHJ1bmsKKzIzODY5IGViNmI5NTNlY2Y3Y2E3ZWYzNTNjODIyOTUzMWMyYTdiOTAxODgyNmQgbGVnYWN5LXRydW5rCisyMzg3MCBmZjU3YTFhMzcwYjM1MDFmMjUyMjZlMmFkMjZiNmM3MmRjNGNhNDIwIGxlZ2FjeS10cnVuaworMjM4NzEgZWViZGRkM2I5NGE1MzBjYTkxNTAzYTQ1YThlNmIyNWYwMmVkZjAwOSBsZWdhY3ktdHJ1bmsKKzIzODcyIDVjMWRmZDkyODc3ZDQ1N2Q3NTExYTVjZjdmNDhhOTI2MWU3MTRkYjMgbGVnYWN5LXRydW5rCisyMzg3MyA5MDA5YzI1Njk0ZDFmYzFiYmNlNTVhMGRhMGQ2MGE3OTEwYmI4NzRhIGxlZ2FjeS10cnVuaworMjM4NzQgNGI3OWQ3ZDkxYjRmOWEyYTNlOTNlZTI5MzhkOTU0ZWRjYjdlYTY4ZiBsZWdhY3ktdHJ1bmsKKzIzODc1IDc5NDU2MzlkZjI2NTAwY2FjZGRkMDQxNjhhYThlYzQ0YjdjMjFiNzUgbGVnYWN5LXRydW5rCisyMzg3NiA3MzcwMmQ3ZjEzYjFiMTU5YTM4ZWVlOWU3MGZlZWI5N2ZmZDk2MWE3IGxlZ2FjeS10cnVuaworMjM4NzcgMmQ4ZGJlYmY4MWUwNmExN2NlZjRiYzhmZGZmNDNmMzZkODU3MTFjYSBsZWdhY3ktdHJ1bmsKKzIzODc4IDdmM2QwY2MyMTg4OTk2ZmYwMzFkYjdhM2JmNzJhOTk4OTk5YWY3Y2QgbGVnYWN5LXRydW5rCisyMzg3OSA2ODlkMGJiYzkxYjEzOTI1OTI3M2Y0YWNhYmJhYzEwMTM2NzlkNmFlIHJlbGVhc2UyMS1tYWludAorMjM4ODAgODI4Y2IwYzJjNDgwNWRlMzE0ZGIzMjA0NDU0M2Q1MzliNThkMjRiMyBsZWdhY3ktdHJ1bmsKKzIzODgxIDdkY2M4YTI4MTMzYTIyYjA5NDNlODUxYjU4YmFiN2Y5N2FlZTQyY2MgbGVnYWN5LXRydW5rCisyMzg4MiA3MTZhNDA2ZTliNGZiM2Q1YTc0NzA5NWYwZGU0ZWJkOGU4ZmM5ZDVjIGxlZ2FjeS10cnVuaworMjM4ODMgYmVhOTQwNGNlNjJjZDI0ODNhY2JkN2YzODE1ZWIxYmUwMTJlM2RhMCBsZWdhY3ktdHJ1bmsKKzIzODg0IGJmNGIzNzUxOGMxNDc3MmVhMjNlYWFjYmYzMDAyNzMzMzQ5NzFhNjIgbGVnYWN5LXRydW5rCisyMzg4NSA0MDNkZDU5Y2E3ZDVkZjAxMjAzOGRlYzdiMzQ5NTA4ZWNhZGFhZDQxIGxlZ2FjeS10cnVuaworMjM4ODYgMzAyYTFjMDI1ZGM3OTJlYTg4MmI5NDA3MDM0Zjg0NjgzNDRhZjg3YSBsZWdhY3ktdHJ1bmsKKzIzODg3IGEzZDZiMzFlOGJiOWZkY2RlYzQwZDgyNDUwMGVkYjU5MGE1NGJjNmUgbGVnYWN5LXRydW5rCisyMzg4OCBiOTc0NTIyOWJkMTMyYzcyNDlhOWFlZGQyMjk5NzBmZDYzYWNkYTNhIGxlZ2FjeS10cnVuaworMjM4ODkgNTdiNTE5NjZhNGYxZjA2ZjMwNzJlNjkxZDk4Yzc4YzcwNDI2NTE5NSBsZWdhY3ktdHJ1bmsKKzIzODkwIDBiMWMxMzk0YmVjNjExOTNhMDJkYTliMDU2N2Y4NGE1ZjMzNjJhYzggbGVnYWN5LXRydW5rCisyMzg5MSBlNGY1MTM4MjkyZTY1OWJlMjY1ZmQ3MDBiNGEwOTZhMjg1ZGRlOWY5IGxlZ2FjeS10cnVuaworMjM4OTIgYjZmODE5N2Y0ZGY3ODRhYWFiYTY4ZTI4ZmVhM2I0MDRkNjljYzBiMyBsZWdhY3ktdHJ1bmsKKzIzODkzIGFhNTY0NzU2OWVlMmFiMzQxNWZiMmQwODM2ZGEzMzFhMzAzNmU5ZGIgbGVnYWN5LXRydW5rCisyMzg5NCA0ZmI3NzI3ZTRmNDc1YmVhYzA4NDBlZjVhNDFkYTZkYTVlMzcyZTA2IGxlZ2FjeS10cnVuaworMjM4OTUgN2MzODFkZDA3NzljYTc2YzlmYjA2MTU2NTJlODc5NjliNTY0MmNkYSBsZWdhY3ktdHJ1bmsKKzIzODk2IDJjMWE0NTg0YTcwNDMzNWUwNTY5ZTk5MDUwNjg2NDRjZTA5ZmUxZTcgbGVnYWN5LXRydW5rCisyMzg5NyAzZDI5OWIxNTY1MTExOGNjOThmZWYyOTM2ODViM2M5NjI1OWI4NTJjIGxlZ2FjeS10cnVuaworMjM4OTggOTdiMThjMDlkMjJhMmEzNDY0MTdhMWMxMDdmMjVkODU3ZGU3NzVmZSBsZWdhY3ktdHJ1bmsKKzIzODk5IDE1OTg1ODhlZjFhZGI3ZTRmOGQ5NDE2Y2Q2MjUxZTlhNmU1ZjcyYTcgbGVnYWN5LXRydW5rCisyMzkwMCBhY2M3ZTNiNGQwNDJmZWU1YTc3NDIzMzk4MTRjZTg3YmEyYzllNTZmIGxlZ2FjeS10cnVuaworMjM5MDEgZTQ5NmI4NTIyOWM3OWJkMDJhOWM3NmM5MjM3ODg3N2NhMWJjNjhjNyBsZWdhY3ktdHJ1bmsKKzIzOTAyIGQ1YjMxZWYyM2NlYmUzMWYzNmI3MTBlZTQ1MDNmNGUyN2E3NjU1ZTIgbGVnYWN5LXRydW5rCisyMzkwMyA2Yzg0ZDU1YWJiNThhMTM1N2E3MGM4OGFlY2MzOWFmMDc1NzY1NWQwIGxlZ2FjeS10cnVuaworMjM5MDQgZmVkOGExODg5NGY1ZjliYmQ0Yzg1ZjUwZTMwNTE1N2JkNDFlZGMxYiBsZWdhY3ktdHJ1bmsKKzIzOTA1IDg5OWJlYmM4OTA0N2U1MDgwYjMyMDliNDJkMjA4OTZkNWY1MTM2ZTAgbGVnYWN5LXRydW5rCisyMzkwNiAwNGYyODAxZDk5NzcwZjU5MzQ3Y2E1ZWU1ZTFkOWZjZTcxYTkzOWM4IGxlZ2FjeS10cnVuaworMjM5MDcgM2Y4MGM5MWI1YzNjZmRiNTRlOGEwZjdiZTZlYWZmMWQ3ZDRiOGRmNCBsZWdhY3ktdHJ1bmsKKzIzOTA4IDhiOWUyZmJjYWUxZmZjZmJjYzI0ZDc1OTYwMWJiNWY4YWFiOTA0MDIgbGVnYWN5LXRydW5rCisyMzkwOSA2ZjJjYjE4MDY4ZGRmOTA2NTJlNzQ5OTc2NzgzY2M5MjIyZmQ0MTM0IGxlZ2FjeS10cnVuaworMjM5MTAgYWE0NmM2NjE4OGQzNmM5NTUwMjNkMTJiZDBkY2I5NTI1ZmM3MWMyYiBsZWdhY3ktdHJ1bmsKKzIzOTExIDcxYTliMDUzYWI0MmIyY2QyYmI1MDc5ODRjZDA5YjQ1YjNhN2RiZGUgbGVnYWN5LXRydW5rCisyMzkxMiBjODBkYWZjZTFiNzRhNmFkZjk0MzIzMjdhY2UwOWY1MGI1M2JjYzZhIGxlZ2FjeS10cnVuaworMjM5MTMgYWI4MzNkOWEwOWI5ODBhZjBkZmI5NzcxNzAwNjg1OWYxYjI1OWVmOSBsZWdhY3ktdHJ1bmsKKzIzOTE0IGVmNzhlYzYwMmE0MDYzODA3ZDA5Y2Y0ZmUwOTFiZDY0YWUzNmU3MTYgbGVnYWN5LXRydW5rCisyMzkxNSA3YzQxYzRmYmY5YzczYzJhNzVmNDMxZTM3ODU1NzUyZjc4NmJhOWZmIGxlZ2FjeS10cnVuaworMjM5MTYgYjA3ODk5MWNiNTZhM2QwM2YwNGM1ZDI0MGEyNWU0NzFhYjAzNTc4ZiBsZWdhY3ktdHJ1bmsKKzIzOTE3IGNhYmI1NjhhNTU4YjFlNjM0Y2U1ZTNmNTAxMTJiNTk3NDgyODZlNTEgbGVnYWN5LXRydW5rCisyMzkxOCBkZDc4YjFhNzFmM2VhZjczMTIxNWQyNDgzZWU1YWE0NGU3MDRlOWQ5IGxlZ2FjeS10cnVuaworMjM5MTkgZmVjOTUwZDhjMjVkN2I0ZmFiMmM5MzE0OGIyNDY0OGNlYTMzMWU5NSBsZWdhY3ktdHJ1bmsKKzIzOTIwIDUyOTU3YTJkZmFmZTY5MDQ1OTg5NjMyNDIwM2I0YmZiZWQxYzMwYzUgbGVnYWN5LXRydW5rCisyMzkyMSBlYjAwNGNjMDA4ZDI3NzZjOGE4MTAxNzBhMTM3YjUzNTRlYjExZjMxIHJlbGVhc2UyMS1tYWludAorMjM5MjIgOGRlYjNiNWZkN2MxNzg5ZmI2ZDI5Yzk4M2E0OGY4NDUyOWVjODM1MiBsZWdhY3ktdHJ1bmsKKzIzOTIzIDJkM2NlZTlmMTYzMzIwYWMzNDYwNzg1ZDAzMWVkYTM4MTY1NGViYTMgbGVnYWN5LXRydW5rCisyMzkyNCA3NTdiY2ZhMjAxZGMxOThhNDYyNzgyMjdiMzlkNDMyMDI4ZGE3MDA4IGxlZ2FjeS10cnVuaworMjM5MjUgZWRkOWQwYjNjNDdlZmFlN2ZiMjAxMGUxMzMyOTBiNTZlYWFmMGI3ZiBsZWdhY3ktdHJ1bmsKKzIzOTI2IDczNDQ2ODdiZjJjMGFiOGZkZDlkNTBkNzE3MTk4ZjdmMTc0ZDdlY2MgbGVnYWN5LXRydW5rCisyMzkyNyBkMGViMjAzNmVjY2FmMjY0ZTk1ZmE1YWE4N2FmNGZkOTJkNGY3ZDRlIGxlZ2FjeS10cnVuaworMjM5MjggMzkzNTU2YWRiMjk1MGEzNzcyYjQxYTY1ZmNkODZlYWJmMWJkYzlhOCBsZWdhY3ktdHJ1bmsKKzIzOTI5IGRjYWEyYzg5NDMwZTc4ZmVjMTFhN2ZhZmI4M2I5N2E3YTkyMGNlYTIgbGVnYWN5LXRydW5rCisyMzkzMCBjZTEzYWEzMWUxODlhMDk4MWRjNDVjMmYyNTY2YzA3YjE0NWFkMjFlIGxlZ2FjeS10cnVuaworMjM5MzEgYzA1ZDQ4OTUyMzRjMTBlYjlkZjFlMzFhOTI4MDEyYzY5ZGU3OGE0NiBsZWdhY3ktdHJ1bmsKKzIzOTMyIGY3MDA5MTY3ZGQ2N2MzOGRkMDRhZDI1NjMwOTc3MzZkODA4YTgxMTkgbGVnYWN5LXRydW5rCisyMzkzMyBjNDc4YTUwOTFmM2ZmZmJkNWE5ODkyM2NmOThiYWFjMjE4YmQ3Mzc2IGxlZ2FjeS10cnVuaworMjM5MzQgNWNkOGM4N2E4OGFlZDgxYjQ3NGEwZWFmMjcwMTgzYjUxMzY0ZjAzZiBsZWdhY3ktdHJ1bmsKKzIzOTM1IDAzOTdhNzVhNWJmZGQ1ZmNmZDJiMTRiZGJhNWE4YTRmZjVjZDU5ZGUgbGVnYWN5LXRydW5rCisyMzkzNiAzY2UwM2UyZjAxZWY3ZjAxNmYyNDE4ZjJlMjc3NDkxZDc4ZTM4ZDE1IGxlZ2FjeS10cnVuaworMjM5MzcgODhhMjQyYmZiMjNhYjBhMTVkOTRhYjgwMGQxNzYyMWU5ZmNlMDAxNiBsZWdhY3ktdHJ1bmsKKzIzOTM4IDk4ZTVkOTAxYmZkZmQ5MjA4ODM0NDMzZmVmOWQyODA1YTg3ZDgxMDkgbGVnYWN5LXRydW5rCisyMzkzOSAzZTliODVkZTQ0N2I5YTYwN2M2Y2UyOTc0YWZjZGQ5OWIwOTFmOTg0IGxlZ2FjeS10cnVuaworMjM5NDAgNTM1ZGMzNjUwYmVjZjUzZGVhZWM4Y2YwMGZjY2Q0NmZlNGMxZWEzNyBsZWdhY3ktdHJ1bmsKKzIzOTQxIDNjZmQ1NzhmNjQ4YjI0OGVkZjIwNzhiZGMxZDI0ZWIwYjI5MDRkNjcgcmVsZWFzZTIxLW1haW50CisyMzk0MiAzZmI0MDNlYWVkZTFlNjI3YWUyZjNjNjdhMTk3MDZkZDcxMGFiNDk5IGxlZ2FjeS10cnVuaworMjM5NDMgZDk1MWMyZGUwOTVjYWVjNDk2ZWI4OGRmNTFkMjUwZDkyZTRhNTkzOSBsZWdhY3ktdHJ1bmsKKzIzOTQ0IGFmOWYyOTAyNjRhZmRkNzkzYjQ3YzM3MGE2OWUzOTc1N2NkMjdiOGYgbGVnYWN5LXRydW5rCisyMzk0NSBhYmE3YTQ4OTVlNGRhZTQ5MWNlYjA0MTgxNjJjOTJjZmIxMjhkYmJhIGxlZ2FjeS10cnVuaworMjM5NDYgNzQxOGUwZDVmYzAxMGZhMTg3OWQwNjYwNzk1NjhhYWY1ODZiMTZmMyBsZWdhY3ktdHJ1bmsKKzIzOTQ3IGFlOTRiNWY3ZGQzMGY1NTQxMDE5Y2IxYzg1OGI0OTI1YmUzZTIzNDcgbGVnYWN5LXRydW5rCisyMzk0OCBmNjE0ODI1ZDMyNmFjMjc4YjNiNzk2ZDIxMTRjMDAzMzJhM2Y1YTMwIGxlZ2FjeS10cnVuaworMjM5NDkgNjFlOGYwMWRlODIxMjU4NTYzZTQ0N2Q5Y2JiMTJlN2JhYmNhNDI2ZiBsZWdhY3ktdHJ1bmsKKzIzOTUwIGU4OWMyNWNhNmIyOWY2MDUwNjc2ZTFmNmI3Y2VjYTUzYjU4MzllMGMgbGVnYWN5LXRydW5rCisyMzk1MSBlM2MyNGZjMjBhOGRiYzA2YzQ0OTQyODQ4ZDBjZWU2OTFkNTY0Yjc3IGxlZ2FjeS10cnVuaworMjM5NTIgYTBmMWMyZDJhYzllNGEyMzAzMzIzNDljNDdkNzI1NTBjNTNjNWM0ZCBsZWdhY3ktdHJ1bmsKKzIzOTUzIGYzMWIxMmE0Mjk1MWNkNzU3ZjIyYjIwMTAyNWY1Y2M1M2JhYjM3M2UgbGVnYWN5LXRydW5rCisyMzk1NCA1MDVkZDM0ZTBlZWJmOWY4Mjg5MzZiNTk1MmFmN2ZmODVmODlhZjJmIGxlZ2FjeS10cnVuaworMjM5NTUgNDMzYWU0ODM4NzAzNWYxOTY3M2YxZGM3MWQ1NzBkNDUzY2U0Y2Q5NiBsZWdhY3ktdHJ1bmsKKzIzOTU2IDk5YWQyYTlkMjBlMWMxMjc4ZjBhY2ZhODY5NjIwNjFhOTJiYTE5NmEgbGVnYWN5LXRydW5rCisyMzk1NyAzMTFhMmFiZWE4YTQ3YWMzMmEzNTM0YjFlNTlmM2JjNzlhN2M1NDA3IGxlZ2FjeS10cnVuaworMjM5NTggMzY3Y2Q4ZTVkZjQ3OTQ5NGU3Y2UwNzViYzFmNWE0NTQzZjEwNzI0ZSBsZWdhY3ktdHJ1bmsKKzIzOTU5IDk5ZWU3MTkxOTdiYTdlYzBhNDBkMzU3MWY4ZGQ5ZDE5YTA5MTc2NDQgbGVnYWN5LXRydW5rCisyMzk2MCBhMDMzMmFlODQ4ZTI2ZmI5NmFjNjAzNzllYjYzMWRiM2ZiYTJjMGE5IGxlZ2FjeS10cnVuaworMjM5NjEgODZmYjE4ZmEzNDZmOGE4YTY5Nzg3NDRmMjc2YjVkNDhlNWZiMTc2NiBsZWdhY3ktdHJ1bmsKKzIzOTYyIGMzZTBiZDIwNzc1Y2M0OWY0MzQ0YjU2YzJhNTJiYTQxM2ZjZTJiNDMgbGVnYWN5LXRydW5rCisyMzk2MyAzODM4MGQ1ZjI3ZDQwYjJjYjQ2ZGMxNWI4MDRiZTc0NDMyODY1YWIyIGxlZ2FjeS10cnVuaworMjM5NjQgNjkwMzQyMGYwYTgyNWFjY2VlZjQ5OGFjOWM4YWM1YjkwNzVlMzA0MSBsZWdhY3ktdHJ1bmsKKzIzOTY1IGQwMjA2OGQxNjNjZmNlZGVjMTA2Mjc5ZWFkMjdiOWZiMGEzOGRiMzAgbGVnYWN5LXRydW5rCisyMzk2NiBhZGY1NjVmMGY4YWU2MDg1ZWU4MGNiYmU2MGE3ZmEwYWM4YTg3MGM5IGxlZ2FjeS10cnVuaworMjM5NjcgMzk4MTM1ZTQwMGM3ZjgzYjUyZDk3NmE3YjY0ZjdmM2Y5ZTFhYjViMSBsZWdhY3ktdHJ1bmsKKzIzOTY4IDY0OGJjNzRjNDdhYjcyNjJlM2Y4MWRkM2E5NDYxMGFlY2QyMmRlNDIgbGVnYWN5LXRydW5rCisyMzk2OSBiMjI5MjA4YTJhNzI3MzhiOThlZmRkMDkxMjQ5NmRiYzJiNmI1OGY5IGxlZ2FjeS10cnVuaworMjM5NzAgZmEwYmY2Yzc5ZTA0MmEwMmFmMzNkODI4YzA4OWEzNDcwOTI4YTM0NiBsZWdhY3ktdHJ1bmsKKzIzOTcxIDVkZTNhNTk0NzI1N2JiYjE0NDY0OGQxMzYzZjRhM2MwMjYwYmFhMGQgbGVnYWN5LXRydW5rCisyMzk3MiA1ZjY4NTBkMWY5ZTg1MjM5MjFkZGExYTQ4YjkwOTY0NjZkYzM3N2VhIGxlZ2FjeS10cnVuaworMjM5NzMgNGIzZWZjNzUwMTM5NmZjMjAxZDYzODY0NWQ0ODhkZmVjN2RiZGI5YiBsZWdhY3ktdHJ1bmsKKzIzOTc0IGIzYTAwZDMxNjViZWUyMzA4ZTEyNTkzNTJlYjRjOWNlZGJhN2FiMmIgbGVnYWN5LXRydW5rCisyMzk3NSAyOTI1ZTI3YTI4MWM1MjFhM2JmMWFhMTQzMWI2M2RjOTlhYTM5ODcxIGxlZ2FjeS10cnVuaworMjM5NzYgNzk4ZjYxOTk3YzA4ZDVkMmQwNDFlZGJmZDE3NGJhNTFlODFmMjIzMCBsZWdhY3ktdHJ1bmsKKzIzOTc3IDQxMzNhYmVmNWFiYmQxYTBmYzlhZDgzMmU0NTIxNWMxNGUyNTkyZDYgbGVnYWN5LXRydW5rCisyMzk3OSAxODRiOGI5YTI2NTRjYmRmY2ZjZjU3YzQ2YjczNjkyMDZjNzIyNDE0IGxlZ2FjeS10cnVuaworMjM5ODAgZTkxMmI2ODNlZDNlMTUzNmYwYjRjOWY1ZTZlMWQzYjU2YTIwZjU0NCBsZWdhY3ktdHJ1bmsKKzIzOTgxIDMxMDQ1MGU3NGYyZjU3ZGRmZGJhYjJhZTY4YTkyYmIzNWU0Nzc0NjUgbGVnYWN5LXRydW5rCisyMzk4MiBhNDRjYzBjMjFjZmUzMTU0MjVlMzgwZTY0NmMwMWFkMmQxZTMzMzM3IGxlZ2FjeS10cnVuaworMjM5ODMgMjg5MDc2OWIxZTY5NjYyNGY2ZjkzZDBhOTgxZGM0MWJiYmM0ZGUzNSBsZWdhY3ktdHJ1bmsKKzIzOTg0IGE2YTRiZDJmMDZkMGY5ZmUyODQ3MTA4NDQ5NzhmNDU2YTNmYmY0YWEgbGVnYWN5LXRydW5rCisyMzk4NSA3ZjQwODk1MTk5MjZlNWM1YTE0MzMxNzI0NGNiNGFkYmRmM2MxNTI0IGxlZ2FjeS10cnVuaworMjM5ODYgMDkxZjk2NTZkNzliMzU5MThmOTA0MmNhYjY3OGVhYTIxODI1MWNhNyBsZWdhY3ktdHJ1bmsKKzIzOTg3IDVlNmY4MTg3YmQ0ODkzZjM5NTQ1MGIyZjFjMzg0ODVlZjc4MzA3YzcgbGVnYWN5LXRydW5rCisyMzk4OCBkY2Y3NjljMTJkOGI0MTJmYmRiNzE1Nzk1MjI5NDU0NGJkZWNlYjUwIGxlZ2FjeS10cnVuaworMjM5ODkgODQ3MTVkNTJkOTU0ZTlkNTA3OTQ3YjU2NWJkMDAwZDBiOTM0ZWJmNiBsZWdhY3ktdHJ1bmsKKzIzOTkwIGM2Mzg0NTkxZDg0NmNlNmExYjNkNjZjNzI0YTE3MzdlMzUyMzY0ZDkgbGVnYWN5LXRydW5rCisyMzk5MSA1ZTM0N2U0ZTA1YmY1ZWNjOGIwZGE0MjNmZDQ5MzRkNWE2OGRjZWU3IGxlZ2FjeS10cnVuaworMjM5OTIgYWFlZmMyZjIxYmFlZjFjZTM5ZTgyZDBiMzQ5NGZjYWFkNjFmMWZiMiBsZWdhY3ktdHJ1bmsKKzIzOTkzIGFjYjg1NGI4OTdiYjYxNTRmODQ5YTM5MGE2ODQyZWEzZGNiOTcyNDAgbGVnYWN5LXRydW5rCisyMzk5NCA2NzZmMTA2YTUwMDIzZDQxMGYyNWEwMDM2MWI3ZDQxMjM4ZjEwMmZmIGxlZ2FjeS10cnVuaworMjM5OTUgNmFjNDUyNDRjNDFlMGFlN2NkNTc3MGM1ODQ0MjUzM2ZjZDNjMGJmOSBsZWdhY3ktdHJ1bmsKKzIzOTk2IGYyMjQ2MzJkMDI2MDNmMWI2ODQzNmVmNDI2N2I5NDY1YjQ1ZGNiOGYgbGVnYWN5LXRydW5rCisyMzk5NyA3MTMwNzUwYTYyMjIyZTQ0ZmM0YjFlYzFjNDg0ZGUyNDY3MWE5OWNhIGxlZ2FjeS10cnVuaworMjM5OTggNTg3Yjc0ODU0ZjhjMDUwNDkyYmUzYTlmZWU2MDkxMThiMmNkMWExMiBsZWdhY3ktdHJ1bmsKKzIzOTk5IGFiZDcxZTg5ODQwZjc3ODQxZjA1NDhmNmMyZGFlOWExOGYyNzA0NGYgbGVnYWN5LXRydW5rCisyNDAwMCBjZDgzNWNhYTUwNmMwOTJiMTA0YTFmMjY2ZmY1ODYxNjRlYWI3ZTMyIGxlZ2FjeS10cnVuaworMjQwMDEgY2Q2MDAwMzlhMTIzZTBmN2I1NTczYWVhMGIyZWRhZjVlYzlhMzBlNiBsZWdhY3ktdHJ1bmsKKzI0MDAyIDczY2FiZTY2NGMxMWViNmJhN2JiMmI0MjE3ZjRjNzBjNmQ1MTVmOWIgbGVnYWN5LXRydW5rCisyNDAwMyA4MzU5YzExODlmNzMwMjUwNDlkZjkxZTBkZDBjNjJlYWI1NWQ2MmNjIGxlZ2FjeS10cnVuaworMjQwMDQgYjNiMmZhNzZhMzkyOWVjZWYwNmMxYjc5MzgwMWUzYTdlMjg2Njk4YSBsZWdhY3ktdHJ1bmsKKzI0MDA1IDYzNWZhMTRlZGE1MDlhODFlYjM1NDJjOTQwZTA0OWY1MTkwNWM0MzMgbGVnYWN5LXRydW5rCisyNDAwNiBiMDYyODA0M2U1MzdkYWQ3ODRhNTAxYmYyZjYyNjkwZDlmNGRkODdmIGxlZ2FjeS10cnVuaworMjQwMDcgZmFhMjcyNmRlYTM3MTU3ODM3YzhiOTI5NjJiMjA2Y2MyMTM2MDE4ZiBsZWdhY3ktdHJ1bmsKKzI0MDA4IGE3ODg0ZTdlZWNjOWIyNTg5Mzk5MTcxYzkxNTg3Y2IyZWIxMWNkYzUgbGVnYWN5LXRydW5rCisyNDAwOSAwMGE1ODFiZGVkZWJhZjAyNDJmNTFjOWRhYjc4ODAxZTk1ZmY1NDQ4IGxlZ2FjeS10cnVuaworMjQwMTAgYzdhYWM3OGUyM2I0OWMzMWJlMTk0NzNkZGI5ZGNhNDFmODgxMTNjMyBsZWdhY3ktdHJ1bmsKKzI0MDExIDNiODc3NDBkMWJiYzg1YTYyODg0NDU2ZGQ5ZTA0NjgyNzJiYmI5YjYgbGVnYWN5LXRydW5rCisyNDAxMiBhZDQ1ZDIyYjE5NWQxM2E4MjlmNTJhNDE0NzI5MzM0MWRhYzM3NmVhIGxlZ2FjeS10cnVuaworMjQwMTMgM2U0NjI1ODE4ZjVmZjU5NjRjYThlOWMwYWY4ZTkyMmRmZWZjMTA2YyBsZWdhY3ktdHJ1bmsKKzI0MDE0IGQ1ZjZiNGQ1ODM4MGVhYTVkNjRiN2VkOTJiYTc5MDE1YzI5OWZhMmYgbGVnYWN5LXRydW5rCisyNDAxNSA3ZGE0MTc5OTk1MTExMzA4ZjY1OTdmZjEzYmI3NzdlNmE2ZWY5NGYwIGxlZ2FjeS10cnVuaworMjQwMTYgMjNkMjMwZWY0MTViYTU2YTMyYjIzZTJmZjY3MjM1ODhkMGNjZDRlMCBsZWdhY3ktdHJ1bmsKKzI0MDE3IDgzNjBkNjQzMjcwN2M1Yjg3NDQzZTAzZDEzMjU3M2NlNjM5ODM4N2QgbGVnYWN5LXRydW5rCisyNDAxOCA0NjE3ZDNkNzcwYzU5OTBmYmIzMGQwNjhjY2UxM2U4MWU1MzA4M2VmIGxlZ2FjeS10cnVuaworMjQwMjAgOWY2Mjk1NWRlNGMzYTFlNzJiMGQyMTI0MmQwODQ5Y2QwMTI4ZDAxZiBsZWdhY3ktdHJ1bmsKKzI0MDIxIDA4ZGZkM2MyMmY0MWRjZTNhMTQ4YjZjMGEyYjgyMjdmNWNiNTRhZjAgbGVnYWN5LXRydW5rCisyNDAyMiA3NzU5MjZiY2YwNjkyNWY3MWViNzgxODY4ZThmZTUwZjBiYzE2ZGJhIGxlZ2FjeS10cnVuaworMjQwMjMgYzhiYTJkYjFjM2MyNGJjYWYwMWQ3NTQ5ODczZjdiYmU2NmFhZTE4ZCBsZWdhY3ktdHJ1bmsKKzI0MDI0IDg1MTA5YTYwOTliNWUxZjI3YjQzMzc2NmIzZDAyYjYyOWMwYzA5YmQgbGVnYWN5LXRydW5rCisyNDAyNSBmMmFmNDJjZjgyN2FiN2UzOTYxMWRiNmQ3Njc0MzMwYWQyN2Q1NzU2IGxlZ2FjeS10cnVuaworMjQwMjYgZWNkNjQ5MzE0ODJjOWYyZTc1NTE2Yzk3NmViNzE1OGZlNDYzODFiMCBsZWdhY3ktdHJ1bmsKKzI0MDI3IDI3MjMzNjY0OGQxZmYxZTJjYTFlMWRmNzU3ZTE4Y2I0MTRkNzJhNWEgbGVnYWN5LXRydW5rCisyNDAyOCAxN2Y3YzljMWQ2NmE1MTRhYmQ4ODIzMmQ3NzE5YzRhMTc1NDhmZmFmIGxlZ2FjeS10cnVuaworMjQwMjkgODI4YmYzMTc4ODBhMjA1ZTllNzQzMjA1N2FhY2MzN2ZkYmY0ZWVjYyBsZWdhY3ktdHJ1bmsKKzI0MDMwIDA1MGZjNTJhYjNkNDE1MjcyMGExNmRhOGM2NDlmMjFkYzBmZDA2ZTQgbGVnYWN5LXRydW5rCisyNDAzMSBhNGJmM2M1Y2M0NWEyYmEyM2M0N2E4ODk5OTQ5YWVlMGEwYjE5MTQyIGxlZ2FjeS10cnVuaworMjQwMzIgNWIyMzZmMzc3YTI1ODg3MWZkZTYwNmYyNzAzNTdmOGQzNWUxMTZlMiBsZWdhY3ktdHJ1bmsKKzI0MDMzIDZhZWFiMzgwMjkyZWQ0Njk5YzgyZmY5YWIwZmMxZTY2MTU5YjQ0YjAgbGVnYWN5LXRydW5rCisyNDAzNCAwODM0MTM2MjI1OTU5N2JhNGZmM2MxMjlmZmNmMWY4OWI1YjM0OGYwIGxlZ2FjeS10cnVuaworMjQwMzUgNmIxNGQyOWU1MzA4OTcwMmYwYjEzNThhNzk4Zjg1YmFmYTk1YThlNiBsZWdhY3ktdHJ1bmsKKzI0MDM2IDc4MWFlMTc2YmFjMmMyNTIwMDhmNGU1MWNlMmU3YTkzMjk4YTc5NDcgbGVnYWN5LXRydW5rCisyNDAzNyAzN2I4ZDkyZTEyZjUxOGRjNzBmYTE4YmRjZGM3ZTY0Y2FmNGIzYWFmIGxlZ2FjeS10cnVuaworMjQwMzggM2EwN2JkMmIwMzg2ZTFmM2IwZmZlODQ0ZmI4MWMxZTk4M2EyZjU0NCBsZWdhY3ktdHJ1bmsKKzI0MDM5IGE2YWYwMDkzNDdlMTMxMjg4NjljNWVmNWQ0ODcwOTI3YzhlYjk5MDIgbGVnYWN5LXRydW5rCisyNDA0MCBiM2Y0OGM1ZDZlMTY3NDgyNmIzYTM1OTk1Y2ZjMzY0MTU1NjI2ZTgzIGxlZ2FjeS10cnVuaworMjQwNDEgN2IwNTQ2ZWU0Nzg5ZWRkNjU3MDVhMGJmOWE5NDJjMDYwMDhkYzE1ZCBsZWdhY3ktdHJ1bmsKKzI0MDQyIDUyM2VjNzAyMThlNDkwYTZlOGI4MmU3Y2EwZTIyYmNkMmI3ZTI3NzYgbGVnYWN5LXRydW5rCisyNDA0MyBlYmE2M2RkMGMyZjVhOTJkZmU1MDQ2Yzg5OTU0NWM2ODJiZTAwNzNkIGxlZ2FjeS10cnVuaworMjQwNDQgMTI0NGVlMThiYWVjMzNmNDZmNmEwZGVkZTA5NGVmMjhhOWQ4Y2Q3NCBsZWdhY3ktdHJ1bmsKKzI0MDQ1IDc0NDEyZTU5YmZmODI2MTAwMGI1ZjY4NDU1NGFmOTNmNmE4OWM4YzIgbGVnYWN5LXRydW5rCisyNDA0NiA3NmE4NTc1MmQ0NTI0YzI0NDgwYjFlNzM1N2IwMzJlYTkwZWMwNzIxIGxlZ2FjeS10cnVuaworMjQwNDcgMTA0M2UxMGJlNzgwMDkxMjEwNDExMjE5ODMwMWE3NDdlM2M2MjBiNyBsZWdhY3ktdHJ1bmsKKzI0MDQ4IDc0NGExOTIyMGEzY2I3NmZlMzMwZGYyMmFlMDVhZjcxNTE4OTE2OWUgbGVnYWN5LXRydW5rCisyNDA0OSBhNmJiYTMxYjNjZDc3NTgxNDIxZGUwYzE0MTMxNTI0YmM4ZjRhMmQyIGxlZ2FjeS10cnVuaworMjQwNTAgNTdjNjFjNjIyNGEyZjRiNjBjNzI3OGU2YTNhYTM1YTUwN2ExNDg0NSBsZWdhY3ktdHJ1bmsKKzI0MDUyIDRiYjY3NTNlN2Q1M2VlNTdkNmQ1Njk1MzVlMWRmYTFkYjIyYWU1MDUgbGVnYWN5LXRydW5rCisyNDA1MyA2MTEyM2I4NjBiNDU1NmE0YWE3ZDZjZWQzOTI5NmEyODJmM2VlMWExIGxlZ2FjeS10cnVuaworMjQwNTUgYWIyZTMxNTg0OWE3YjZjN2FhMzE1YmZjODUxZmNmMjU1MzkxYTAyNyBsZWdhY3ktdHJ1bmsKKzI0MDU2IDYxMjI2ZGRhZGM5NzU3MjM2ODRjNTNjZmQzNzE0NTZiZjFmZmM4MTAgbGVnYWN5LXRydW5rCisyNDA1NyBiMWQ5MDI5ZTA5ZDE0ZDUxNzc1OGJkMDA3YWNiMDI2N2Q1ZDcyODViIGxlZ2FjeS10cnVuaworMjQwNTggYTJiMTFkMDBiNjk3NDY2YzI3NmI5MDNlODlkOTllODAyM2E1MzBhOCBsZWdhY3ktdHJ1bmsKKzI0MDU5IGE5MDAyZmIwYTdkNzlkM2I0Y2RjYzEzMTRhMTNhNjZlMzljMTBiM2MgbGVnYWN5LXRydW5rCisyNDA2MCA0ZGY2NTI3Yjc4ODIyMDc4ODg4ZjcwYjc1NDEyNTg3ZGQyNTg2NGNkIGxlZ2FjeS10cnVuaworMjQwNjEgZmViODA1MDlmYjIxNTA2MTgzNmRhOGNlMmM2ZWFkNTAwODUwMjZmNSBsZWdhY3ktdHJ1bmsKKzI0MDYyIDI1ZmVkMWQwOTYwNTM1ZTMxMDg1NTVlYTdkOTc5MTMxY2MxYmM3ZGIgbGVnYWN5LXRydW5rCisyNDA2MyA0MGRlODRiYzYyYWQwMjE0OGYwMmFjMjYxN2MxODI1MmMzOWQwYmY1IGxlZ2FjeS10cnVuaworMjQwNjQgOTYxYjI0ZjhlMWQ4Mjk4ZjdmMzVkODVhOTZlNjY3YTQ3NzUzOGNkMiBsZWdhY3ktdHJ1bmsKKzI0MDY1IGM5MWYxN2E0ZGM3YmYyMmU5N2FiMDJiOGJjNmRlMTY1NTEyNjZlNWUgbGVnYWN5LXRydW5rCisyNDA2NiAyZjdiNjkyNmUzOGRkMTI1NTY0OGU5NjliODY3YjA5MjFhYjI3YWRlIGxlZ2FjeS10cnVuaworMjQwNjcgZTBhZjI4MmY1ZGZhYzRhYjljM2M1YmY2ZWFiNWQ2ZDVjYzI3Yzc2NyBsZWdhY3ktdHJ1bmsKKzI0MDY5IDc5ZmNiYzMxYTAzZWM5ZGU0Mzk1ZWE0MDNhNDRiN2I2MTk5ZDdhNTggbGVnYWN5LXRydW5rCisyNDA3MCA4M2EzZTIxYTdjYzNmNDdhYjNiM2RjNmNiMWNhZjU3ZjYyYzlmY2JiIGxlZ2FjeS10cnVuaworMjQwNzEgNzNhYmUwYWY3ZTA3MGVhYzE3ODc2ODcxMmJkNDFhNDhmOTlkYWE3NyBsZWdhY3ktdHJ1bmsKKzI0MDcyIDljMjNhYmFiOTYyZGE1MGFmMDYyMTdkNTFlM2NiMzhmOWY0Zjk4MmIgbGVnYWN5LXRydW5rCisyNDA3MyBmYTk3Yzk5NzJkMWIzOGViNzkxYzQzNTJjMGZlZWFkNjAwZjIzYWRmIGxlZ2FjeS10cnVuaworMjQwNzQgNjEwYTY0NGZkNGMzYWJmNDJhZTJkM2ZjNTMwYzkzNzE1OTQ0MzIyNCByZWxlYXNlMjEtbWFpbnQKKzI0MDc1IGVmOGJkOGJlOThiZWIwYjVhMjQxM2RhNjA1ZGRkYzE5NzE5MDM0NTYgcmVsZWFzZTIxLW1haW50CisyNDA3NiBlZTcwZmFjOTUzNWI0NTA5YjU3YjdmMzI5Y2YwNDNiYWVjODM0MjZkIHJlbGVhc2UyMS1tYWludAorMjQwNzcgNzU2YjllZGYyNTRmYzIxM2Q0ZjIzMWEwOWVjZjhhOTM5Y2ZkZjdkYSByZWxlYXNlMjEtbWFpbnQKKzI0MDc4IDUxZWFjYWRjODE1YTI5NjA1ZmU4ZDgzNDMyZTkzYjAyMzNlOTU4MDUgcmVsZWFzZTIxLW1haW50CisyNDA3OSAxMDQyMjNiMzIyNmE0MGFiM2I3MWQ0ZjRlYjE0MDg1N2E0YmIwMjhmIHJlbGVhc2UyMS1tYWludAorMjQwODAgMDYyOTY2NmU2NWM1M2Y4ZDRjYjQ0ODM4MWQxOTkwZTk4MzFmZDU0MiByZWxlYXNlMjEtbWFpbnQKKzI0MDgxIDA3NmU1ZTQ5ZTI3ZDM5NDYyN2E2ZTFhZjBmNDAxM2QwNmE3ZjcwNGMgcmVsZWFzZTIxLW1haW50CisyNDA4MiA0MmYyMmVhNmEwZjEzNjEzNzNlZWJhZDY1MzkxY2E1MDZmYTYxYjlhIGxlZ2FjeS10cnVuaworMjQwODMgMDI2YmYwYWI2OGE1MTViNGQ3OWEzOWY3NzkzZjQwMGZjN2NmYjNiZiByZWxlYXNlMjEtbWFpbnQKKzI0MDg0IDQ2NGQyMTNkYTg4OGM3ZjJmMTE2MmMyMWVlOTY2Mjc1Mjc5ZTM4OWIgcmVsZWFzZTIxLW1haW50CisyNDA4NSA4MjFlMTQyZTE5ZmE0Y2Q4MWIwYTNlZjU0ZDNmNGE1YWU2YTRmMDk5IHJlbGVhc2UyMS1tYWludAorMjQwODYgNmQzOGZiYTA1ZjM1NzRlODI3MDFjNzRjZmFmNjQ4YTVmZWRiMjFjMyBsZWdhY3ktdHJ1bmsKKzI0MDg3IDhkNGI2NjQyYTYwNGEwMDFiN2MyYzU5ZmRlNzQ2N2Y0YzNkZGU3NTggcmVsZWFzZTIxLW1haW50CisyNDA4OCAxOTY1MTE2ZDFhZWNhOTQ0YjFlYjViNWYxMDI2MTRjNTZkZDg3NjQwIHJlbGVhc2UyMS1tYWludAorMjQwODkgZjRlZmYzMjQ3YzY2YWM5ZjgwOTg0MGY4ZTI3OGQ2NTcxN2QyYWQyYiByZWxlYXNlMjEtbWFpbnQKKzI0MDkwIGVmMWU5YzhhYTNkZGZkYjY4MDQ5MTYyNmI1MTM5OTczZmEzOWY3Y2UgcmVsZWFzZTIxLW1haW50CisyNDA5MSA1N2FiNjVjMmYxNzA3OTFkNmUwYWM0MWJkOWY4NTdlNmUwMDkxODZiIGxlZ2FjeS10cnVuaworMjQwOTIgM2UwOThhOTYzNTYxZDc3MDM3OTIwODY5ZGRmMTZlNGQ0MzZkMTU2MyByZWxlYXNlMjEtbWFpbnQKKzI0MDkzIDNhNzQ4Y2FhMDNiOTFhMTUwYzVhZmIwODIxYWNjMTc0OGUzMmYyODkgcmVsZWFzZTIxLW1haW50CisyNDA5NCA5YWRlZDYyMzVkODkwZTkwYTIzNzM4ZGZkOWQ4NWIwMjk1ODc5YWRkIGxlZ2FjeS10cnVuaworMjQwOTUgMjYxYTcwYzBhYTc5MmMzYjY4NmU3NDZiZTIwOWQ2NzQ2NTEyM2Y4YyBsZWdhY3ktdHJ1bmsKKzI0MDk2IDUzNDZiNjkwNmQxYWY4NWU5MWEzZjcyMDNkYmMzODliOWNlOTdhODggbGVnYWN5LXRydW5rCisyNDA5NyBjYTQxOGE1ZmE0NzFjYjhkMjU5NzNlYWM5YmIwODNhNGRlMTdhMGQ1IGxlZ2FjeS10cnVuaworMjQwOTggNjU2YzNjODRkZWJlZjRlZjdiOWM0NzdkMDU4OWUyOTQ1YTUwMTkzZCByZWxlYXNlMjEtbWFpbnQKKzI0MDk5IGM3YWEzMzJhMmZmYWZiNzM0MDRkNTdjNGQyMmUyNzVlMTg3YWUwMGMgbGVnYWN5LXRydW5rCisyNDEwMCBiM2Q4ZDI2MTViMjNiZjRmMGRiM2IwOGY3YTg0ZDI4YTQzODU0ZWM0IGxlZ2FjeS10cnVuaworMjQxMDEgZGVmMmExMTlkNWNkYTMxYTQ2YmViYjZlZGM1ZmI2NWNjNWNhMjRlZSBsZWdhY3ktdHJ1bmsKKzI0MTAyIDM3NTEzNjZjMmYzOTMxY2E5ZGIyODExM2Q2N2VkNTVhZWZlZTdkNzEgbGVnYWN5LXRydW5rCisyNDEwMyA5NTIwMTE1MzI1MWNiYjBiZjkzNDVmYzRmYjc5ZDc3ZmZlYzUwNTgxIGxlZ2FjeS10cnVuaworMjQxMDQgNmYyNTlmN2JiZWQ4MGU0YTVjYTlmMzJkNjJmMGEwYmVkYWExM2M3YiBsZWdhY3ktdHJ1bmsKKzI0MTA1IDE0ZGM2OTNhZjUzMjE5NTY5OWE4MDM1ODI0ZjE5YWExM2RmNmMyNGUgbGVnYWN5LXRydW5rCisyNDEwNiA1ZjI0YjIwZTEwM2QyMzJkOTg0Nzk1YzRiZWMxNDM3NTkwZGU2ZTgxIGxlZ2FjeS10cnVuaworMjQxMDcgZGFiNTJkYmQxMmFhMTQ0NGJlOTc3MzhkYjg0ZTkyMTllYWIzMjBmMiBsZWdhY3ktdHJ1bmsKKzI0MTA4IGQxMzllYzQ5ZDIwNGQ3MDc4OWY4NDJmZTcxZDcyMTNlZjhkY2NlNTkgbGVnYWN5LXRydW5rCisyNDEwOSA4NjA0NzI4NzdkZGExNTExMWI4MTFiNGRhNDMwZGM5OGNiNjg2ODIxIGxlZ2FjeS10cnVuaworMjQxMTAgYjBjMzEwY2RiOTg2OWFmNjkzZTBiYjJmYjY3Y2I2NzM5YjNkYzBlZiBsZWdhY3ktdHJ1bmsKKzI0MTExIDNmYmQyNTNkZWE1ZDRhOWM2Zjg1M2YyYjRiZGE0Mzc5ODgzOGUxNjAgbGVnYWN5LXRydW5rCisyNDExMiBjMWViYzAyODVhNWU3ZDFiMTljODA3OTA4MGI2YmJjNzM2NDJiYTMzIGxlZ2FjeS10cnVuaworMjQxMTMgOTgxZTU0NjhjOWI1MzFmZWQ0OWQwMDIzMzViYjU2YzI5OWU0NTA4OCBsZWdhY3ktdHJ1bmsKKzI0MTE0IGYxODdkMjQwNTZmNDhkODU2ZmFjNDdhNDI5OGMyYTYyMWNhNTBkOWUgcmVsZWFzZTIxLW1haW50CisyNDExNSBmNmM3NDYwY2NhZjg5OWYxMjM4OGZmOGQ0OGIwMjhlZGQ2NjIwYTdmIGxlZ2FjeS10cnVuaworMjQxMTYgMzgwM2FmOWQ4Nzk2M2Y4YzI5N2I0NzI0NmY2MWZiMGFmODUwMWY5NiBsZWdhY3ktdHJ1bmsKKzI0MTE3IGVhY2Y4MWRmNmM0Mjc1NmRmYmMxZDczNjI5NzkxZTQ4ZDIwNWFiN2MgbGVnYWN5LXRydW5rCisyNDExOCA5MTZmMTkxZmNmZjQzZjA1YjY0OTVkNDA0NThjZWRjYmIzZmNkZjhjIGxlZ2FjeS10cnVuaworMjQxMTkgOGQxNGY1MzRhNWMyNzZmNjljNWZiOTAzYTVkOTZlMjQzMzRkMTA2YiBsZWdhY3ktdHJ1bmsKKzI0MTIwIDY5OTBmZTljNDBmNmE3YTI4YjBlOTBhMjQ5OTEzYzJjZmMwNjMwMDEgbGVnYWN5LXRydW5rCisyNDEyMSA0YWRlNzZhNmIyNDViYTc4ZGJlZTg1OGJlOTAzN2YzYjJhNWRhMjA4IGxlZ2FjeS10cnVuaworMjQxMjIgZTEwZDkwNzBlMTA3MzJjMTFlYzNhYjUzYzRlZmFkYzQ3MTY5ZjM1MiBsZWdhY3ktdHJ1bmsKKzI0MTIzIGVjNjMyYTQxZWUzNWQ5YjY0NjEzNGRjYWExOGE1OTUyZWI4OTMwY2EgbGVnYWN5LXRydW5rCisyNDEyNCBkOWE5ZDkyNjI0ZGI5NzQyOGEzNGMyYWVkYmRkZTRkMGY5NTZmOTdhIGxlZ2FjeS10cnVuaworMjQxMjUgNDA0YWVlY2E1MWU5YzQ1MWExMGJjYzNhMWFmZmIwNTQ0NzAwOTI1OCBsZWdhY3ktdHJ1bmsKKzI0MTI2IDI5NjJmMDE5MjRjOTk3YTM1Y2Y5MmVlZjRjYWU2NDBkZDZkMGRkZTkgbGVnYWN5LXRydW5rCisyNDEyNyBmMzRhOGRmOGJiYTQ2MDA4OGIxZWU5MzQxYzQzNWE4ZTc1NDk4ZmY3IGxlZ2FjeS10cnVuaworMjQxMjggMDUzZGJkOWI1OGRmMDNjMDAyMzE5N2Q4MzA5NWJiZjA4NmViYzUxZiBsZWdhY3ktdHJ1bmsKKzI0MTI5IDc3YmIyYWUwNjdjMjU4Y2Q0YTdkNjZjYWE5M2QxYTI3MWNkNzNiYmYgbGVnYWN5LXRydW5rCisyNDEzMCAwNDQ0ZjU3NmM5MmIxOWU4MWMyNDU1ZGM2MjA1YjEwNDNjNzU0Njg0IGxlZ2FjeS10cnVuaworMjQxMzEgNjM5OGQxMDU1ZmNmYjlkZTJjZGQ4NjVjOGE3NDIwOWE4MmUwYzY5NSBsZWdhY3ktdHJ1bmsKKzI0MTMyIDhjZjFkOTI2NjkxMTMyOGU4M2Q2ZTQ4Njk5MmRhZGNlMDBmOTY3MWYgbGVnYWN5LXRydW5rCisyNDEzMyBkMWIzY2E4OWQ3OGI0OWRiZGNmY2I1YjA5MmRlOGUzZjJmNDk5N2UzIGxlZ2FjeS10cnVuaworMjQxMzQgMjQxMDVlOTg5ZjE3OGYyZjYwOGU1MWQxZGYwYTdkYmY5OTAyZjJkNCBsZWdhY3ktdHJ1bmsKKzI0MTM1IDE1YzkyNGExMWFlY2M0ZGU0YTY3OGQ5NDM5ODcxY2U4NGU4MDgwYzcgbGVnYWN5LXRydW5rCisyNDEzNiAwY2FlYTVmZWZhNWMxYzdkZGU2OGIxNzI1OTgzYWVhZmM0NzhmNzEwIGxlZ2FjeS10cnVuaworMjQxMzcgNWE0N2I1OGE0NGJiNGU0YWIxM2MxYTU1YjYzODM5NzJkOWViZDY1MCBsZWdhY3ktdHJ1bmsKKzI0MTM4IGQ5YjliNWI0ODE1YjYyMWRjZjMyYjBjNDY2YTkzYjlhOGVkZmM3OGIgbGVnYWN5LXRydW5rCisyNDEzOSBkNmZmMWRhYWUzOTgxNzY0NmU3OGE4NGI0MDdjZTk4MTY4MTRlMTU3IGxlZ2FjeS10cnVuaworMjQxNDAgODk1NzM0MWY5OGY4NDdkNmY0ZDYzZGUwZDQ2MDdlNmY1ZGVlOGE1YSBsZWdhY3ktdHJ1bmsKKzI0MTQxIGY1NDgyOGViOGUwNzY4OWExZjVkZDU5NjBiMDEwZjk3ODNlODFhODggbGVnYWN5LXRydW5rCisyNDE0MiBlYmJkYzM4ZWIxMWM4YThiZjlmMTY1ZTk1NjhlZWEwMWM5YjdjODZkIGxlZ2FjeS10cnVuaworMjQxNDMgNDBhODg5ODlkNmNiYTQ0ZTg1M2FlMmVhMDk1MDg2NGFhYzI1NzQ3MyBsZWdhY3ktdHJ1bmsKKzI0MTQ0IDJkOWU0MWE3MmE2OGIzOTI0YTVlYTc3OTg2Y2M5YjFlMGZlMTBkNzUgbGVnYWN5LXRydW5rCisyNDE0NSA3YmIzMWZiNDgzYmM4NjdiNDQ3OTJhMzk1OThjNTg2OTMzMjg4ODBiIGxlZ2FjeS10cnVuaworMjQxNDYgYThhNjYxMjBiYWRlZGJhZGJmOGJjMThiOTM1OTYyZmU3ZTdhZTJmZiBsZWdhY3ktdHJ1bmsKKzI0MTQ3IGY1NzZmZmQ1Nzk2NmI1N2RhYmQ2NWQ2NTJiNzEyMzlhNjIyOWI1NjUgbGVnYWN5LXRydW5rCisyNDE0OCA3ZThjZGU0NjRkYjQwZTk5MjhmYzhjYjQzMjViNjQwY2RiZTY1N2IzIGxlZ2FjeS10cnVuaworMjQxNDkgN2UyNDdmMDgzN2UyNjk1NDRkMmJhODU4NmY4NTU0Y2RhNmY2NmI3YSBsZWdhY3ktdHJ1bmsKKzI0MTUwIDgxMWFjZTNjNDBkMDFjMmFlZWIwZTQzYmU4ZjZiM2ViYjExOTBmYzYgbGVnYWN5LXRydW5rCisyNDE1MSAxNzljZDM3MGI2MjFmYTI0ZmMzNmM4M2NmMjY3ZTQ3ZDlkMmJiODJjIGxlZ2FjeS10cnVuaworMjQxNTIgMjc4NzRjODYwMjY4MzczMTE5MThkYzY0MWNjNGNiNTAyZGI4NGM5NSBsZWdhY3ktdHJ1bmsKKzI0MTUzIGQ1NGUyOTQ0ODRiMmJmZGIzYjI3MWEwNGM4YjA4NjFjZjIzY2YxMDEgbGVnYWN5LXRydW5rCisyNDE1NCA3MzJlYTIyZWI1MTgyZmQzMGEwZWIyN2YzYzA4ZGZkYjYxNmQ1N2JkIGxlZ2FjeS10cnVuaworMjQxNTUgOGE3MmVmNmI4MTE4ZDdjNWFjNzdhNDFlOGU1NjkxMTk2NTAyYjcwZSBsZWdhY3ktdHJ1bmsKKzI0MTU2IGVlZjliZDg3ZmNjMDc4ZDg4OTYxMWRmMjU5Yjc4ZTBmOTYzMDkwODIgbGVnYWN5LXRydW5rCisyNDE1NyAxOTgxN2E0ZmEyYjZjZmJiYjU1MGFmN2RkYTA4NmEwYTdmNzBkMTk3IGxlZ2FjeS10cnVuaworMjQxNTggODlkMTcxZjZiYzdkNjMwNTgyNTcwNDg3MTg2YmQ1MTQ5NDAzMzc5OSBsZWdhY3ktdHJ1bmsKKzI0MTU5IDZlZTE5YzE5YjJjMzczYTgzNjNiN2M1ZjBmMGNhMTQwN2ViODhjMTYgbGVnYWN5LXRydW5rCisyNDE2MCA1YzQzNWI1YjU5ZGY5MGVmMTUyZmNiOTljNzY0MzRjMGU3NjVmOTllIGxlZ2FjeS10cnVuaworMjQxNjEgYTYwYzFlOGIwYmJiZWJhOGYwODI1ZjA4ZDFhNjlmZTk1MWFkY2FmZCBsZWdhY3ktdHJ1bmsKKzI0MTYyIDdmNTYxZmU5ZWRmYzIyODNjNDkyZjJhOWI4NWY3N2E1NjgwYTE2YWEgbGVnYWN5LXRydW5rCisyNDE2MyAwYzE3NTE1YjA1ZGI4YjdhMmU0NmNmNmFiMjE3MTVhOWM2NzJkZWE5IGxlZ2FjeS10cnVuaworMjQxNjQgMmNkMmFlNGRlMzBkOTIxYWIyZjRmNGMyNDRlYzVmYmE0NWZhNjcwZSBsZWdhY3ktdHJ1bmsKKzI0MTY1IDY0MGYwMjg0ZTMwYWIyOTRjY2FjNTgzNTI0NjgyYmE3NGE4MzdmY2YgbGVnYWN5LXRydW5rCisyNDE2NiBlMjMxNDBmNmZiOTAzOTZlMzM0NzZhOTIzYTg0OWQwNjExM2RiMWNlIGxlZ2FjeS10cnVuaworMjQxNjcgNDFkMmQwMGEzMWYxNWQ5MTU4ZGU1NmRlY2NkZjFiYzQ4ZGEwMDNjZCBsZWdhY3ktdHJ1bmsKKzI0MTY4IGY0Njc5ZjZhOTU4Zjk1NGU5NmNkZmRmOTU2MDQwZmNiODg1NzQ0OTAgbGVnYWN5LXRydW5rCisyNDE2OSBkZTRmNmIxNGQzODBhY2QxMzVmZDE3ZjJiMzg5Mzc2MGZhZmNhOTZhIGxlZ2FjeS10cnVuaworMjQxNzAgNWI2MWEyZmY2OTZkMGY1YTg2NGE0NjQ4ZTIyZGY3YWE3YTMwMmVmYSBsZWdhY3ktdHJ1bmsKKzI0MTcxIGI1ZmU5YTk0MTRmY2E2NmI5NmY1NzIzYmY3OWI4MGI2MzA0OTZlZTcgbGVnYWN5LXRydW5rCisyNDE3MiBhZjM2NzM4MTJlMzM2MTJhMWFiYmY1Zjg4NGMxY2ZkMGFiNGE4YWE2IGxlZ2FjeS10cnVuaworMjQxNzMgZTE4NGJiZDcxNjdjM2YwNDdmOWJkMjQxY2YxMDRiM2Q4YmNkMjliMSBsZWdhY3ktdHJ1bmsKKzI0MTc0IGMzZDNkYzgyNzY0YzlmNGExOWUxMTExYmNmMzU0N2JhNjljYTkxOGQgbGVnYWN5LXRydW5rCisyNDE3NSA4NzIyYjBhYmVhYzYyNzhlZmZjOGU3NjFmOTY3YzdjMjliZjQxZTNkIGxlZ2FjeS10cnVuaworMjQxNzYgMGI2MzMyYzJhYmEwMWNhY2U2NzZjNDM2ZTViMTllODg3N2FkMDUwOCBsZWdhY3ktdHJ1bmsKKzI0MTc3IDM1ODY0ODg3M2FkZWEyZGJlMGJkNmY5MWMyMGE0NzdlMDM2YTdhN2MgbGVnYWN5LXRydW5rCisyNDE3OCBkM2YzZDIxYWMwNGJjOTM2MzI4ZDkwNzYwODBjZWE1NjljYzdjZDBmIGxlZ2FjeS10cnVuaworMjQxNzkgYmZjYzJlZDljYWJhMjdlZDQwMWYzMDNjNWY5YjVjODZiZTk3ZmNjYSBsZWdhY3ktdHJ1bmsKKzI0MTgwIGYyYzc4OGFkYmRiYmFmM2I0NTgxNGYwODIyYWE1ZTc0MWEyNmE5ZjYgbGVnYWN5LXRydW5rCisyNDE4MSBiMGE2ZGJjOTAwNDcwNjM5ODc0Y2YyZDg0ZjYyMDhkZmI2MjA1ZjNjIGxlZ2FjeS10cnVuaworMjQxODIgNjAyN2ZkZjFlYmRhM2FjMDk5YWVlNTNlZDQwNTEwNGM1NDlhMzFkOSBsZWdhY3ktdHJ1bmsKKzI0MTgzIDMxNmZmZmQ4MGIxNjFjOGQyM2Y0OTFhMzE3NGNiMzhhN2ZhZGE5MWUgbGVnYWN5LXRydW5rCisyNDE4NCA4MGJhYTI3YmYwZWMzMTY1Mjc5ZjQ1ODE2MjUwNjg5NDFkNDQ0NWIwIGxlZ2FjeS10cnVuaworMjQxODUgNjY5ZWRkZjQ3MGJhZGQ2ZTc3ODczYjJjY2U2NWYzMzE3YWFlNjBhZCBsZWdhY3ktdHJ1bmsKKzI0MTg2IDgzNDYyNTVjY2E3YzdhOTEyZjhkZmY2OTQwZDU0ZDVkM2Q0Y2YxY2QgbGVnYWN5LXRydW5rCisyNDE4NyA1NWEwNjBmNDE3M2Y3MjA2NmQ2OWM4MDQ0NzliZDIxMDkyMGU3NGQ3IGxlZ2FjeS10cnVuaworMjQxODggMDZkOTViNjg3N2M0NWFhZjk5MGRjYzliODAzZGZhMjY2YTY0NTU4OSBsZWdhY3ktdHJ1bmsKKzI0MTg5IGQ4OGRkNWMyYjI4MmI5NTA2MTQ1ZmE2ZTU2ZTUzMDI0NTRkNTNiNmIgbGVnYWN5LXRydW5rCisyNDE5MCA5MzI1M2M2NWQ4NjMxMTVjZWY1NTUwMGZiM2E0OTI5ZjJmNWQ1MzFkIGxlZ2FjeS10cnVuaworMjQxOTEgMjNhMjA5NDg0ZjAyOGU2NjFlODRlMzgyOTE2OGM5ODc4NjEzN2FkNSBsZWdhY3ktdHJ1bmsKKzI0MTkyIGI5ODUwYzQ0NzU2YjNjNzhjMGI5YWVlZDU3ZTVmM2M0Y2E3MTk4ZmEgbGVnYWN5LXRydW5rCisyNDE5MyAyMDAxNDcxNjU1NmI2YmJiYWE2ODIzMThjN2U0MjkzMTQ2OGI2NjU4IGxlZ2FjeS10cnVuaworMjQxOTQgN2I1ODY0OTQ3YmFmNmNjOTM0ODk1MzY0MWFlYzdjNTUwMTJjYjMwOCBsZWdhY3ktdHJ1bmsKKzI0MTk1IGIyMWI0MjMzMGU0MDIxOTg5OGI3NzE0NGIxODNkYjM5NTkxMDJiZmEgbGVnYWN5LXRydW5rCisyNDE5NiA5MDg3MWZhNDNmNGUwYWUwMTE0N2I0MTdlOTg2MmFhMDJhNGNmZjE0IGxlZ2FjeS10cnVuaworMjQxOTcgOWU4ODg1YmJkYmM5NTMzMWJjNGRkODcwZjEyNjA3MDc2MjU2ZjBhMSBsZWdhY3ktdHJ1bmsKKzI0MTk4IDdhOTkxZDAxMmNkNjMxY2ExMjA0MDFmOTliYmNiMzU1MDI5YWY2NzggbGVnYWN5LXRydW5rCisyNDE5OSA5OGRiYjA3OWM1ZDQ4YzFjOWM3YzlhOGQ0MjNmNDc0NWE4NGQ1NTE1IGxlZ2FjeS10cnVuaworMjQyMDAgMjFmYTc1NzkwODIyMjNjNzY1MTRiMjlmYTAyZGUyYmNjMGU2N2UzNiBsZWdhY3ktdHJ1bmsKKzI0MjAxIGVlMTQzN2Y1ZGUwMzMyODg5ZDVlODM0ZWU3ZjQwNWYwZTg2NDE1YTYgbGVnYWN5LXRydW5rCisyNDIwMiA3Y2VkYmZhYzc0NmI5NzczZDI0OTlkNTc0N2JhMjczZjVmMTkxZDYzIGxlZ2FjeS10cnVuaworMjQyMDMgNWMwMmQyMTVhMzhkYjkwMjY4NDFjYWUxNTMwMDllYzk0MjM3ZWFmZiBsZWdhY3ktdHJ1bmsKKzI0MjA0IDJiNWQzMzI5ZDdlMmE0YmU5M2M5MjI3ZTY2N2VjNGY0OTBiOTNjOGEgbGVnYWN5LXRydW5rCisyNDIwNSA5YWVkNzQ1Mjg2NjFmNzI1Mzc2YWM0MDI2M2QwYmJmMzA3NDllMjk1IGxlZ2FjeS10cnVuaworMjQyMDYgZmE3ZTBkMDBjODI4ZTQ1ZTQ2ZTlhNzU5ODBlY2MxMDUzYjZkZjE4NSBsZWdhY3ktdHJ1bmsKKzI0MjA3IGNkNjA2YTU4NDkwM2U0ODE1ZWZiZGI1MDUyOTMxZDdlMjhlYjA2NDcgbGVnYWN5LXRydW5rCisyNDIwOCAxOTc1MDVlNjc1MmEyNTRkYThiNTQzMDBmNWZjOWZiZTNlMTJhODQ4IGxlZ2FjeS10cnVuaworMjQyMDkgZWNjZTVkN2RhNjA3ZGU0YWYyOTNjZTRlMzk1ZjEyMTZjMGU5ZmUyYiBsZWdhY3ktdHJ1bmsKKzI0MjEwIGJhOTQ1NWZjNGM4YjBlMjViMmRhNjQ5NTMzNjhkODI2ODAzMTkyZmEgbGVnYWN5LXRydW5rCisyNDIxMSAwYjY0NTIwYzIwMGM4OGM3ZDRlNDVjMDM5OTBkZDY2ZTVmODdhOGNiIGxlZ2FjeS10cnVuaworMjQyMTIgZTA1M2U0NGY5NjY2ZmY4ZGE0NjdkOTk0MzlkMmNlMTQ5YzU5MjdmOCBsZWdhY3ktdHJ1bmsKKzI0MjEzIDEzYTE4Y2JmZmQ5YzcwYmNiZGMxZDIwM2QwMWYxYmUxMzY3ZTBiODQgbGVnYWN5LXRydW5rCisyNDIxNCA1NDBlNTMyNWZjNmIwOGRiMjIwNDMxNDVlMmM2YWIwZThjNjFmMjU5IGxlZ2FjeS10cnVuaworMjQyMTUgMTNkZjhiNmMyYjgwYzc1MjgxNjIyZGJjYzAzMzNmNjlmMTE0OTkxZCBsZWdhY3ktdHJ1bmsKKzI0MjE2IDQ1Yzk1MmQyYTYxMTM1MjMzZjIxNzRkYjBjODZmMzNkMmY5NGJiNDAgbGVnYWN5LXRydW5rCisyNDIxNyA1ZTczNWYxOTdjYTY3ZGJmODZjNzgzOTU3MDYzYzU1MjUzMmMzNDc5IGxlZ2FjeS10cnVuaworMjQyMTggZDNkZDBjMmExNzcxZDg1ZmVmYWI2ZDkyZTM5MWU2NzgxMzkwZGRiYiBsZWdhY3ktdHJ1bmsKKzI0MjE5IGU0ZDM4MGY1ZjI5NzY2NDFiNmI2MmY0ODY2OGUwNjMzZTQ2MWY4MGEgbGVnYWN5LXRydW5rCisyNDIyMCBjM2IzM2VhZDM1NDZlZjQxYjk3NDFmYzdmMzNiNGViNmUzZDgwOWUwIGxlZ2FjeS10cnVuaworMjQyMjEgM2M1ZDBlZWExYWUyYjIyOGNhN2E4YzhjZjY5ZDE0Mzc0ZDRlMjExNyBsZWdhY3ktdHJ1bmsKKzI0MjIyIGVmMTJjOWRkZWZhNzA1NjAzYjkwMzRlNWE2NzM2MjdjNzdkNzJiMWUgbGVnYWN5LXRydW5rCisyNDIyMyBjNTU1ZjFlN2M0YmU0ZDkzZDM5ODZhMjlkMjdjNzNlMTI4MTRlNDA3IGxlZ2FjeS10cnVuaworMjQyMjQgOWJmYzMxY2E4MGYzNDJmYTI0NjdlYTE2YTNkNjY5MjY1NWMzZDVhNCBsZWdhY3ktdHJ1bmsKKzI0MjI1IGQyN2NlOGZlNDNmODM5OTFmMzE0NzJlNGU3MzNlOGJlOTNiMzdlOTAgbGVnYWN5LXRydW5rCisyNDIyNiBjM2IwODMxOTk1OWM0Y2EwOWQyZDM1MGM1OThjYjk5ZTM2NWJmNDE4IGxlZ2FjeS10cnVuaworMjQyMjcgMGQxNzY3ODQ0YzRiNzA3YTI0YjBhZjhmZjE0MWQ4ZDIwYmQxNjVlNSBsZWdhY3ktdHJ1bmsKKzI0MjI4IDc3MWIwMjliZGI4YTE4MzZjY2YwZTVjMDJiZjhiNGU4YzQ4YmI0MjAgbGVnYWN5LXRydW5rCisyNDIyOSA5ZWRlNGQ2Y2M5ZGU4ZDVlZGYyMDA5Zjg1MmFjZWYxNDEzN2MzNjhjIGxlZ2FjeS10cnVuaworMjQyMzAgYzNiM2UyZTQwMDM1ZWEwZTdlMjlmYWU3YjNkNWIxMDIyZjkzMGZlNSBsZWdhY3ktdHJ1bmsKKzI0MjMxIDYxNWE0ZjU2MDI2ODUxMDY4NzMyYzE2NDE3ZWZmOGEzN2EzNDNhNzEgbGVnYWN5LXRydW5rCisyNDIzMiBmNzljZmQwNTRmMjFiODFjOWUyMzdlNWVkMDViYjlmMjY0MzU3NDcyIGxlZ2FjeS10cnVuaworMjQyMzMgY2E4YmVjNGIzMzgzNzQyY2YzYWJlMzhiMTEzNzhmYTU0N2U5MjFlNCBsZWdhY3ktdHJ1bmsKKzI0MjM0IGExM2Q3Y2QwZWY3ZjI3NTExZDE0Y2Y2YjMyMzI4ZTE0ZDUwYWMxOTYgbGVnYWN5LXRydW5rCisyNDIzNSBkYTVmYmMxZWIxZDA1ZmY5MWM2MTY0YTI0MzQ5ZDQ2MmEyYTQxNDZhIGxlZ2FjeS10cnVuaworMjQyMzYgM2Q1MjJjYmI3YTgxZjE5NjViMjc3Yjc1NDhlMzVjNmFlNTEwY2VlYyBsZWdhY3ktdHJ1bmsKKzI0MjM3IDMwMGI2OGQ2M2I5ZjRjMjViYjViMDYyM2E3MjM1NWM2ODhkOGI3OWIgbGVnYWN5LXRydW5rCisyNDIzOCBhM2M1N2U1OWI1YTgxM2JmZGZiNGNhNzE3MTUzNWNmNmRlYTMyOTliIGxlZ2FjeS10cnVuaworMjQyMzkgM2U5ZDZlOWZiZTU4ZjZhNjM2ZGNlOTQ3MDY2YzkyMDI1MTE4NGZhZSBsZWdhY3ktdHJ1bmsKKzI0MjQwIDljYTdlNDZmYWEyNGJjMjk4NGE4ZGZkZGQxNTE2NmM2ODY4ZDcyODYgbGVnYWN5LXRydW5rCisyNDI0MSA1NTQ1ODE4ZjU4MWE4MmY2ZDYzM2IxYzZlN2Q5ZWMyZDM2MWU4MzcxIGxlZ2FjeS10cnVuaworMjQyNDIgOTBhMGYwOTUxOGM4ZjZlZjJiNTFmYTQ5ZGY4NTY3OWFjMTRjZGNjZSBsZWdhY3ktdHJ1bmsKKzI0MjQzIGJiODcxNjA5NWE4MWE1Y2Q1NTY1MmFjYmM2MWZlYzBlY2E1ZGUwYzIgbGVnYWN5LXRydW5rCisyNDI0NCBmMWNmZGNhNzNmODY5NTg3N2M4YmU5ZWY4ZWIwZWI0OWExOGYxNGY1IGxlZ2FjeS10cnVuaworMjQyNDUgYzFlY2FmZDE1NTYwYjUxOWIxZTY0NDE5ZTUxZWNlYzRhNjFjMjZmMiBsZWdhY3ktdHJ1bmsKKzI0MjQ2IGUxNjdiODJjNjQ0NDBkODBjMGRjYTdmN2I3ODI0NmI0MDVlNTQ5NTcgbGVnYWN5LXRydW5rCisyNDI0NyBlYmE4Yzc3MWRiNjRjYjUwOThhMmE3YjFmNWU4YTYxYzcwNTgwZTBkIGxlZ2FjeS10cnVuaworMjQyNDggY2U2OWQ0ZWUyZmEwMGUxN2FmNjVjYzg1NzI4OTljNDY5Zjc2Njg4MCBsZWdhY3ktdHJ1bmsKKzI0MjQ5IGFjNTE5MTZiZmRhMDdlMmQ4OTBjMDkyOTMxYmUyZjQ1NDM0ODVlYTYgbGVnYWN5LXRydW5rCisyNDI1MCBmMTY3MWE2MTAwNzk5Mzk2MGFlM2RlNDcwMDZiY2U3MjRmZTNlMzc1IGxlZ2FjeS10cnVuaworMjQyNTEgZTcxY2NmYmYzNmJiOGRlZDYyODQ2MmRhZjU0NzQ5YzkzNTY3ZjExOCBsZWdhY3ktdHJ1bmsKKzI0MjUyIDA3ZjFkMmM1ZGQwNDFjOGQ4NDExOGY0YjZhNjZjYTQwYmQ4ZGEwZmUgbGVnYWN5LXRydW5rCisyNDI1MyA5NWUzNTg0YWJlNDU3NmUxZGM0ODJiNjI3NDdkMWI3NTYyZjc3YjBiIGxlZ2FjeS10cnVuaworMjQyNTQgNDRmM2Y1YTViZmUyNDVkNzRhYTdkMDg2ZGQ1NTlhYTI3YTZmMDMzZCBsZWdhY3ktdHJ1bmsKKzI0MjU1IDYzYzE0NjY5NTI3ZTQ5N2Q5MDQxYTJmMTliMTJmMThmZGI4ZTI0YzIgbGVnYWN5LXRydW5rCisyNDI1NiA0YjllNjNjZjAyYTZmODI4YzlkMGM5MDMxYzJkYzU2NTdjZGQzZDA1IGxlZ2FjeS10cnVuaworMjQyNTcgYjBkZjFmZDgxOGZjMWY1NjViMWEyNDVlMThhY2I5MGFhNTc0MTc4MiBsZWdhY3ktdHJ1bmsKKzI0MjU4IGIxNjNlNzg2YWM3NGU0YTU2N2U0MTA4YjkwNTE4N2M0MGI3NDlhMmIgbGVnYWN5LXRydW5rCisyNDI1OSBmNzExY2Y0NTg1MjVlZWQ3Y2JmOGEyYzBkMTZkNDVhYjhmZjhlY2E1IGxlZ2FjeS10cnVuaworMjQyNjAgYWFjZTRmYWZmMTdkZDkyNDVlZGZiN2ZiNTE0ZjJmZWYzMjQ0MGEyMyBsZWdhY3ktdHJ1bmsKKzI0MjYxIGY5NmU4OTFjZjBlNGVlNTJkYjliNDRkMGFlZjE3OGE5ODQ2OWFlZGMgbGVnYWN5LXRydW5rCisyNDI2MiBhYzJiYzA3ZTg2OTdmNzY1ZWE1OTQ5YTYzOTQ4MWNiMDM5YWZmNGNhIGxlZ2FjeS10cnVuaworMjQyNjMgYTg1YTNjMTBiYTRkYTRhZDkwY2IzODEwOTQ3MTdjZTFhNDU0MTk2MiBsZWdhY3ktdHJ1bmsKKzI0MjY0IDAxZTQ3Y2U5NjIwMTBmNmMxNGFhZTBiYWExMmJlYjFkZDBjMjQ1YzMgbGVnYWN5LXRydW5rCisyNDI2NSA4MTYyNjRiZGExMzZjZTYyMTdmODU5ZjBmMGM4N2FlMWZkN2VjNGZlIGxlZ2FjeS10cnVuaworMjQyNjYgMGQxZGViNDAyMTlmOWZjMDI4N2ZjZGZhMTcxNWYyNTVkYjFjNjcwYSBsZWdhY3ktdHJ1bmsKKzI0MjY3IDViNTc4ZDRkODkwMmI5NWI1MjFkZGJlMGI0ODhhMGNhNGNjZTgwMTEgbGVnYWN5LXRydW5rCisyNDI2OCBkOWI3ODUzYTA0MzFiMzY4NDg4NjNlZWEyZDE1ZjAzODllNWMyOGJlIGxlZ2FjeS10cnVuaworMjQyNjkgM2E1NDNhZjE5Yzc5NWZhMTkzZjQ4NTJhMjYyMWJkMWVjMDBkMjM0YiBsZWdhY3ktdHJ1bmsKKzI0MjcwIDIyZGYzZWQxMWUyMTk2ZGMyYjM4ZjQwZTg3ZTJjNGVhYjJlMWYzMjEgcjIyYjItYnJhbmNoCisyNDI3MiAwOTI0NGM0NjgzMGY3Yjg5MDg2YmI4YzJmNzRkMjYyOTQ4Yzc4YWMyIGxlZ2FjeS10cnVuaworMjQyNzMgMTc0Y2NiMDM1YjNkODU4OTNiYjgwYmFmODg1MWFmMDljZjgyNjVjOCBsZWdhY3ktdHJ1bmsKKzI0Mjc0IDU3MGE1NGJiMWE1OTg4ODJjMTA1YjdlMWMyZGRiNGIyNjljMTFmODUgcjIyYjItYnJhbmNoCisyNDI3NSBjMzI5YjgxMWVlNTQ5NmJkNTljNDg0OTI0MDQ3MDRhZTM4YTM2ODJhIHIyMmIyLWJyYW5jaAorMjQyNzYgZjBiNTc1ZDZmZWFhNzBkZjQzMzllNDA0N2NhNzczMDdlOWIyYzI4YyBsZWdhY3ktdHJ1bmsKKzI0Mjc3IDU1NWE5ZTAwMTlhNzc5OTZiOTM5YmQ5ZTc3Yzk2YzllYmEwN2I0NTAgcjIyYjItYnJhbmNoCisyNDI3OCA2YmZmZDJlMjMyNmEzMTQxODA2OWZkMjU4MDc3YThhODllYTU4ZGJiIHIyMmIyLWJyYW5jaAorMjQyNzkgODRiY2ExZWYxMTY4YmM5N2E4MmU1NGY3ZDQ3NzQ0ZGRkNThkNWRkZSBsZWdhY3ktdHJ1bmsKKzI0MjgwIDNlMGNjY2NjNGRjYjFlNzdhYWIxZTk1ZDVkMTg3Mzk3NTZkYmJiOTkgcjIyYjItYnJhbmNoCisyNDI4MSA0NjViYWIwN2QyYTg4NDgwOGY2MDA1ZDQ4Y2Q2MzUyMjU5NjE1MzJkIHIyMmIyLWJyYW5jaAorMjQyODEgZjcxNTgxY2U3YTNjZWQ2OWMxYmJlNWFiOTEzOTkwYTVjOGM0MTY5NCByMjJiMi1icmFuY2gKKzI0MjgzIDkyZDZmNmY5N2M3MGM5NGY2ODg3YTVjMzIzNGM4MWRjNGVmNDVlZTUgbGVnYWN5LXRydW5rCisyNDI4NCAzMGUxM2YwZWE3NmIyMWM3YTI1MmNlNDIzNDZiYTAyMzIyYWM4YjNkIGxlZ2FjeS10cnVuaworMjQyODUgNDM2NTMxYjBhY2Y4MWExNDdiYTA3ZTYyNzA0NGVlZThlYTEzNDVhMyBsZWdhY3ktdHJ1bmsKKzI0Mjg2IGY3YjYxMDA1OTNkY2YxNzY5NWMzZGMzMzM3NWQxMjg4ZGE3OWUwMGMgbGVnYWN5LXRydW5rCisyNDI4NyBiZWE5MmMzZDc3YTMyYTQxNmU2M2IwZWNiNjA3ODk4MTNkZDI4YzgyIGxlZ2FjeS10cnVuaworMjQyODggMzk0ZGE0ZWZmYmVjNjg4Mjg0YzI4ZjMxM2Y3NGFkOWMwODcyYmIxZCBsZWdhY3ktdHJ1bmsKKzI0Mjg5IGQ5MTRlMGYzOWY4Mzc4ZTMxOTM3NjMwYTU1NjZjYWJjYTFmZTBkNGQgbGVnYWN5LXRydW5rCisyNDI5MCAxYjRlMmE3OTc1OTYxYTA4OWRhOTQwYWIwOTEwN2UwZmYyZDNiOWYxIGxlZ2FjeS10cnVuaworMjQyOTEgNmUxMGExNDk5ZTI0MjNkMmI0N2Q0ZjRjZDI0YjZlYzc5ZmQ2ZDQzNCBsZWdhY3ktdHJ1bmsKKzI0MjkyIDk0ZmUxN2M2NzcxNTQwODAyNzkwNjJlN2I0NTE1YTRkNmI1YjBhMzYgbGVnYWN5LXRydW5rCisyNDI5MyA2MWEyZGY1Njc0NmVlZTNmZGExZjk4Zjg2OWNkMjE3ODNkMzQ2ZDYyIGxlZ2FjeS10cnVuaworMjQyOTQgMjJjZWRlZGEyYTczY2M1OTZjNmZhN2E4MzMwMTI4YjM3YWFiN2U4MyByMjJiMi1icmFuY2gKKzI0Mjk1IGI1YzJmNzk0ZDgwNTkzNzE3ZTJlODc3ZjYxODA0OTc0ZDk0NzQ3MGUgcjIyYjItYnJhbmNoCisyNDI5NiAxZmRiODlhOGI2MjE5OWJhOGU2Mjg4MTc5ZDNlNDU0YmU5N2NhMGM2IHIyMmIyLWJyYW5jaAorMjQyOTcgNDRjNzc4MWQzZjBjY2Q0OGMxMTk3YzQ5YmE4YTU2OTZlYzlkNGJjYiByMjJiMi1icmFuY2gKKzI0Mjk4IDQxZWY5ODJhNjRiMWIxZDE5ZDdhYTk5M2VmZGMwZDYzZmExNTY4ZjUgcjIyYjItYnJhbmNoCisyNDI5OSAxMjY4OTVhMzkyYmE3M2ZiOTc4MzU3YzNiZGVlZjFjZWEyZjk1YjNmIHIyMmIyLWJyYW5jaAorMjQzMDAgMTQ1ZmFmMjk4Y2RjYzEzMjRjZWNiZWJkNWRiMjM2MTVjZjZiNDdkOCByMjJiMi1icmFuY2gKKzI0MzAxIDk0Yzg1OGZlYWU3Zjg4NjEwY2YzZTMyN2MwNzI2NDFhODdiMzE3NDEgcjIyYjItYnJhbmNoCisyNDMwMiBjNTJiYjg2MmQwZjc3MzU0ZGE3YzRkYWY0N2M5MzgwNmZhNTA5OTBiIHIyMmIyLWJyYW5jaAorMjQzMDMgMzBhNDA4MGJjMzBiNTkxZGNjYmE4MzEzZGJhZGFhZjc0NzAzYmNiNiBsZWdhY3ktdHJ1bmsKKzI0MzA0IDRhOWE5Y2MwNDFkZWNlNmExOWUxZDA4YjAwYzhjZjA3NDFlZmNmYzkgbGVnYWN5LXRydW5rCisyNDMwNSBmZTI5MzI3ZTQ3MWNlMmU2ZjRmMWM1NGQxZjE1MWU3YTg2NzFkNzczIGxlZ2FjeS10cnVuaworMjQzMDYgOGMzMjE5YTRkY2Q2ZGViNjE5YTg1YzZiNzA3NDcxODU4YzY4YmUxMiBsZWdhY3ktdHJ1bmsKKzI0MzA3IDQxYjhkNjY3MzBkNjFmNGExYTYwZWE5OTViNDQxOTAxMmNmYmU4M2EgbGVnYWN5LXRydW5rCisyNDMwOCAzM2ViNjNiODZhMTkzNmVlNDc0OGNlYTJmYzcyMTViNTI1YjA0NzBhIGxlZ2FjeS10cnVuaworMjQzMDkgNDlkYzE0NGExNTU1N2MxN2U2YTkxNTczYzk0ZGIxNmZmNjcwMzFhMyBsZWdhY3ktdHJ1bmsKKzI0MzEwIDU3Yzc5MWE1ZjgxYzc1ODcyYmVkYmU0YmQwMzE5ZjcxZWYzMDU2NzcgbGVnYWN5LXRydW5rCisyNDMxMSAyYjY1MGMyMWE1NjM4ZDU4ZmFkZTg3MDRiNjcyNzhlY2M1NWNjY2IzIGxlZ2FjeS10cnVuaworMjQzMTIgNDIzNjViNzBlOWQ4YjhlNGViNTA0YjMwNTBmNDA2NzQ2MjBkOWJmNCBsZWdhY3ktdHJ1bmsKKzI0MzEzIGY0ZDlmYTIwN2U0MGU1YjBlYmFkZWU3MjY0OGEwZDM1MWU1OTU4NzQgcjIyYjItYnJhbmNoCisyNDMxNCA2MmM2M2JhOTBkZjIxMGJhMzYwYThmOTc1ZjY2MTgxNWU4M2U5NzdmIHJlbGVhc2UyMS1tYWludAorMjQzMTUgMGY0MDgyNjFiM2M4YjdhYWJhYzFkMzliMjU1ZDY5ZDU5ZjBkMjg5ZiBsZWdhY3ktdHJ1bmsKKzI0MzE2IGE5NjUzODExNzMxYTAwM2JhNDgwMWNjYTJkNzAzYmM5MTMwZGVjMjAgbGVnYWN5LXRydW5rCisyNDMxNyA5ZjY2YWFkZGY4ZDQwYmYxYTM4MjFmMmFkMTkxZjlkYzM4N2Y4ZTZjIGxlZ2FjeS10cnVuaworMjQzMTggN2ViYzNlMjk4M2QxMWIyZDVmYTNjYzU2NTQ5ZDlmYTk4MGM1OThlMyBsZWdhY3ktdHJ1bmsKKzI0MzE5IDFkYWViZmYxNzdlZjEzNzdlMWNiOTkwZTMyZmJkMDFmOWZjZTk1ODggbGVnYWN5LXRydW5rCisyNDMyMCBmOTU3ZDM5NmM4NGU3MWRmMjI3YmVmNzMwYzYyMTI4ZTJhYWU1OGVlIGxlZ2FjeS10cnVuaworMjQzMjEgZTc5ZmMyNTdiY2EwZTZlZDEwNzgxYjA3YmE4Mzc3NjYxNmNhNjRlYSBsZWdhY3ktdHJ1bmsKKzI0MzIyIGRlZTBlODY2NjUzZTZlNDFiNWY2NTFhMjA5MjIzOTBlYmRkOThiMGQgbGVnYWN5LXRydW5rCisyNDMyMyAzZGZiYmY0MmJmMTZhZTk3ZmJiZDJhNDZlZjEzYjE5YjBmZjBjNWViIGxlZ2FjeS10cnVuaworMjQzMjQgMWVlNzViZDRlZTM0NjhkNTE3YmM1MTc1YmM3ZGY2MTU4OGY3YTgzNiByMjJiMi1icmFuY2gKKzI0MzI1IDEwOWVkNjk2NDgzMmFkZjg3YzliMDRkYzQ1NjA2MmY3MWUwMWM0ZWMgcjIyYjItYnJhbmNoCisyNDMyNiBiZDJlODlkNzdkNDVhZGYxN2JlMDdmOGQ1MTI4MTJmMzdhZTRiNjE1IHIyMmIyLWJyYW5jaAorMjQzMjcgNGM4MzI4NzhkZTc0ZWI3MjFhNWY2Y2VmZGMxNmI5YWI0ZDQyNWQwYiByMjJiMi1icmFuY2gKKzI0MzI4IGUzZTNjZDQ3YmFkNWZkMzgzYmM1OGJiMjI1ODkyNTgyOGFmNzQxMjggcjIyYjItYnJhbmNoCisyNDMyOSBkMjEwMjhkNWNjODUyOGM0NjVkNzhkNjZlMjZlY2Y0NGIxMDE4NzMxIHIyMmIyLWJyYW5jaAorMjQzMzAgNDgyNjBiMGI1MjZmNjlhMTVhMWQ0NzBkN2RjNzZkMWVmZWE1NzdiNCByMjJiMi1icmFuY2gKKzI0MzMxIGVlMjRiZDBjYWQyOTAzYjEwODRhZjBiMTgzMzY5NDQzZjczOWU2N2YgcmVsZWFzZTIxLW1haW50CisyNDMzMiBjN2U4MzNiM2NkOWM1YWFhMmZlZjVkZDJjYjUyM2IzNmQ4OWZmMTc4IHJlbGVhc2UyMS1tYWludAorMjQzMzMgOTc0NjIxOTgxM2Y5OTc5MjdlZWRjMjdhZGVlYzU1MGU2NTg5MmMxZSByZWxlYXNlMjEtbWFpbnQKKzI0MzM0IDExY2IzZGUwODIzZGE4ZWMyOGI4ZTI1NjQyZDU3MTU5NTg3OWQyMjIgcmVsZWFzZTIxLW1haW50CisyNDMzNSAyMjM5NTMwNjlhMWEwOWYwMjk2YWYyYTlkYWYxMGVkMzY5MTA0MDI5IHJlbGVhc2UyMS1tYWludAorMjQzMzYgM2ZjMDZjMTE0OWE0M2RiMmY4NjZhNzUzOWVlN2FmOWNiMGI5M2FjMyByZWxlYXNlMjEtbWFpbnQKKzI0MzM3IGM0NDk5NTk2YjFhNDBmZDhiY2YxZDg5Njc4ODcwODgyNzRiOGRiNjEgbGVnYWN5LXRydW5rCisyNDMzOCAxY2Y3N2RmOTVmNDUyNTM4OTc2NTkzZTRmOWI3ZWU4MWMzMjdkYzhhIGxlZ2FjeS10cnVuaworMjQzMzkgNTk4MWRmZGRhODU3MGI2MTcyM2VkODhmOTkxOTg5MzIzMDliYzY3ZiByZWxlYXNlMjEtbWFpbnQKKzI0MzQwIGFmYjc4OWFhZGExNmZkOGRhNmZkNDJkOTNlNGJkNmVhZTgxY2Y2MTMgbGVnYWN5LXRydW5rCisyNDM0MSA3NzhlNmE4MGZjZWU0ZjU1ZmY0MzY2ZDg4YWRjZmRjMzI5NTZiNDE2IGxlZ2FjeS10cnVuaworMjQzNDIgYzNlNmU2M2Q5YmEyZDgyOWYwMWNjNjg2Mzk0YTE4YmI4ZmY2OTE2NSBsZWdhY3ktdHJ1bmsKKzI0MzQzIGU1Y2Y3NGY3OTE2NzliYWUxNWVhMzQzNDI2N2UxNGRkMzE0ODM0ZTYgbGVnYWN5LXRydW5rCisyNDM0NCAwODQ2YjRlMjUxN2RmMDI4YmNhMmE0YjZkMmEwMDJlOGZlMTE5MjU2IGxlZ2FjeS10cnVuaworMjQzNDUgNzBiNDMwNmY0ODhkYjE0NjBlYTEwMDk3YWY3ODFlNGY1YjFmMmRiOSBsZWdhY3ktdHJ1bmsKKzI0MzQ2IGIzZDYyN2VlMmI3M2ZlMWMwNWY3MDYxYTMyYjk2NWE4ZmQ3NmY2MzIgbGVnYWN5LXRydW5rCisyNDM0NyBlNmVhZjk1N2VhMjZmNzE2NGRmYjZkMGFkMDRjMDYyNDZlODg4Yjc0IGxlZ2FjeS10cnVuaworMjQzNDggYjExNGIxMDA3NDE4ZWUyZTEwZDE0MTZjMGYxYTIwZDc2M2NlNGI5NSBsZWdhY3ktdHJ1bmsKKzI0MzQ5IDg4MWY0OWJlZmNhM2MwMWEwNGJhOThjYzZkMDdhMWQyYTQ1MjAyOGQgbGVnYWN5LXRydW5rCisyNDM1MCBjZDBiNzViMTlkZjdkODI2Mjc4MmFhNTU3MTU4Y2FiMDM1MWYwMDQxIGxlZ2FjeS10cnVuaworMjQzNTEgZmVkNTA3MWRhOTU3NWQ0ZDY5NDQ1ZjQ4YzMwMjFlNDExZTZhZjI0NiBsZWdhY3ktdHJ1bmsKKzI0MzUyIDdjYTVhNDgxYzBkMTc5NTU2OTYzY2QyZGVjNTU2ZWY1N2FjODQ3YTkgbGVnYWN5LXRydW5rCisyNDM1MyAxYWUyYWZlNjc1ZmRhN2JjYzUxMGNkOTZjY2Y5ZWM1MDRjNzYzMTY0IGxlZ2FjeS10cnVuaworMjQzNTQgZGEzODhlMWQ0MDRiZmI4M2Y1OTEwM2JmMjhjNjYyZWRjYzM3NzBiOSBsZWdhY3ktdHJ1bmsKKzI0MzU1IGI3ZjM4ZTc2NTE0NzkzMzkzNWFhZGVjNmEwNWFlY2RhZGFmNzQyZDYgbGVnYWN5LXRydW5rCisyNDM1NiBiY2JkYTYwNmQ4Yzc1NzE4YjQwMjgzYzdjNWY5ODFjMTYwZGNjYjZhIGxlZ2FjeS10cnVuaworMjQzNTcgZDQ1NjkxYTY5ODdmZTk2N2EwNWZiYmNmMWI3ZjA5N2M0OTBjZjMzOCBsZWdhY3ktdHJ1bmsKKzI0MzU4IGJhYzk0MmU2ODVmYWQyZGJiZDIwZDlmNjNhZTgxOWIwNDJjODM3ZGEgcjIyYjItYnJhbmNoCisyNDM1OSAzNmM4OTdiY2Y0ZDdlNjk0MjQwMTEzODYyM2VmM2MzOWY5OTEyZWJhIHIyMmIyLWJyYW5jaAorMjQzNjAgZjhmZGJmYThkNWYzYjgyZmVhOTlmOTVlYjc5OWY4N2Q4NzJkODYzNiBsZWdhY3ktdHJ1bmsKKzI0MzYxIDJjMGE5YTUwODZlMTBiOTlmMDQxZDBiMGFjYTJkYjZjYzFkZGQ0NzMgbGVnYWN5LXRydW5rCisyNDM2MiA5ZGY4MmMxM2M2NzVmMDc0MDAyZDAyODMyYmZhZDk5MTM1OTc2NmRlIGxlZ2FjeS10cnVuaworMjQzNjMgZTc2MzA2ZWVhMzcwOTc1MGRiNTc2ODM1ZWFjNWI2N2QyMWM0MmZmYiBsZWdhY3ktdHJ1bmsKKzI0MzY0IDU5N2QxMGNmNzkzOGU5YmIyNjU5N2UzMzZmNWFlZjI2ZDNkNmUxNjggbGVnYWN5LXRydW5rCisyNDM2NSAxODAyYTllZGI0ZWVmNGQ4ZTYwZWZkOGUxNzU5Yzk0MDBhZWIwNzI3IGxlZ2FjeS10cnVuaworMjQzNjYgYmMwMmMzYjA5NjI2YTA0NWY2NmI0NzkwZDJjOWY3N2M2NmRlNDk5ZSBsZWdhY3ktdHJ1bmsKKzI0MzY3IGYxODc0OTZmZmFlZjlkMjFmYzI2Mzg5MGU5YTU5N2U4OTNlOWM3OTMgbGVnYWN5LXRydW5rCisyNDM2OCBhMmQ3OGUyMWE3ODU3ZTE2ZWMwN2U0MDY5NzEwMTA0MjVjMDJiYjYxIGxlZ2FjeS10cnVuaworMjQzNjkgNTBjZmJkZGM2MDM3ZTk3NTFlOGUxOTdlYTQ3OWE3YzE2MmRkMzMwYyBsZWdhY3ktdHJ1bmsKKzI0MzcwIDIyNWM3ZGQxN2UzNzI2Nzk0M2QzZDczYWNlNDQwMjdiYzNhOWE4MGEgbGVnYWN5LXRydW5rCisyNDM3MSBjOWM0YzUyM2RjYmYxMjhkN2E2NWFiNzlhYmQ3MmIyZDE0ZTdjYzhkIGxlZ2FjeS10cnVuaworMjQzNzIgOWIwNTlmMWIyYTFmMDU2OTk4Zjk5ODY1MTI3YzMxMDJkYzAxYTJkNCBsZWdhY3ktdHJ1bmsKKzI0MzczIDdkM2EyMTFlZjIzMzY5OWZlZGFmNDlhZDkwOTcyNGQ4ODYyYWExOWMgbGVnYWN5LXRydW5rCisyNDM3NCBiYTY3YjljOTdiNjk2YmY2MjU1ZDViMzliMGMyZjVhMDc1YTU5YWU1IGxlZ2FjeS10cnVuaworMjQzNzUgNjM5MmYwMzIyMmUwMTBlODAzMzg2NzI4YTc5ZmRhODY4ZjM3NTgyZSBsZWdhY3ktdHJ1bmsKKzI0Mzc2IDYzOWMwYTNhZThkY2I0NWRhMTYxZjJkODBlY2Q4ZDI3OTEwMTZkNmIgbGVnYWN5LXRydW5rCisyNDM3NyAzMDRiMzQwMjM4NzY5MjBmNTcwNDY1YzI4NjJiZWQ0MDZmNDJjNmMwIGxlZ2FjeS10cnVuaworMjQzNzggNDdlYTczZmQ3ZTZiYTMwY2I5ODZiMDEzNzkxNGQ3Mzc5MDJhNjAzYSBsZWdhY3ktdHJ1bmsKKzI0Mzc5IGRjNjQxZTEyNTZmOWM0ZGU4MDcyN2VmNmQyNWRjMzAwMjA5ZTgwZjkgbGVnYWN5LXRydW5rCisyNDM4MCBjNWZiZTkyZTAyZDNhMTU3MDBjOWY0OWM0ZWQ4YTI5YjM2ZGY4YTRlIGxlZ2FjeS10cnVuaworMjQzODEgMzc5ZmM2NmY0Yzk2ZDBhMWY3YzE3NmY5YmVkZDEwY2Q3MzViNmQyZiBsZWdhY3ktdHJ1bmsKKzI0MzgyIDAyNWFkMjdkNDIyNGY0NTcyNDUxMzRmY2M5YmFlZTBiMzg2Y2U2YTUgbGVnYWN5LXRydW5rCisyNDM4MyA4Y2VmNzVjYWNiMDE2MDRjZGYwMDAwYWRmZWI2NjhjNjcxZDQ5ODVhIGxlZ2FjeS10cnVuaworMjQzODQgNWI0NTk2NzdmYzQ0NGZjOWIwYzAzYmJiOTZkZDUwYWIxOGEwZDE5OSBsZWdhY3ktdHJ1bmsKKzI0Mzg1IDk0ZjVhOWZhMzU4MzQ3NTA4MTRkMTYyOWQ2N2Q0M2RhZWJkOTQwYjMgbGVnYWN5LXRydW5rCisyNDM4NiBjOGQ3NzViOWZmOTJhOWJiOTM5NWQ1MGI2YWY2ZmEyMTY4NmRhNDMwIGxlZ2FjeS10cnVuaworMjQzODcgZDNiNjQwMWNhMjczYjVlNGM4ZWNkYTNhYTkzNzc1ODlmYjgwNDMzMSBsZWdhY3ktdHJ1bmsKKzI0Mzg4IDUyY2U4ODdkYjNjOTMxYTYzOGUxYWY1ZmNhNWMyM2U4Zjc5NzhmM2QgbGVnYWN5LXRydW5rCisyNDM4OSAzZWIyNGY0Yzg4ZDViMTljZmVhNGY4ZGVlYzliZjE0NDRhZWZiM2I1IGxlZ2FjeS10cnVuaworMjQzOTAgZWE1YjBmMGI3MTZmMjU0ODQzMjY4YTkyN2EyODRjNzQ3NjQ0ZDFiOCBsZWdhY3ktdHJ1bmsKKzI0MzkxIDQxZWEyYWJiNzRmYjM5YzFiYzc3N2I2ZWY3YThhYjE5NjhlNTdkOTIgbGVnYWN5LXRydW5rCisyNDM5MiAzNDdlYTY5MzAwMmQ1MmI4OWUzMTBkMGI0NTg2MGYzYjEzZmI0YjUzIGxlZ2FjeS10cnVuaworMjQzOTMgZDk1YTRlYzY4NWUwZTM4YTM5NzRlZWNiYTY5ZDUwNWEyMTZhNDk5MSBsZWdhY3ktdHJ1bmsKKzI0Mzk0IDVlMjVjNjY5NzQxY2Y5MTFhMWRhYTkxMTYxYjU1N2I0ZjM3YzJhOTMgbGVnYWN5LXRydW5rCisyNDM5NSA0N2Y2NTMzNjc0ZmRhMmRiNjI2YmRmYjYzNzQzMzczNTg1YTkzY2JiIGxlZ2FjeS10cnVuaworMjQzOTYgNTMyNzBkMjgxYmYwODNiZDhkMTY0ZTI4NzZkNDQ2NGZhNjA5YWU1YiBsZWdhY3ktdHJ1bmsKKzI0Mzk3IDdkZTEzM2NiYmFmMThlODY4M2EwNDgxMzI5MTEyYTQ1NjRiNDVjODAgbGVnYWN5LXRydW5rCisyNDM5OCBjMjE1MDMxM2Q5ZDEzZTZiNTI2ZWVjYjFmNTJhNDBlNDlkM2IxODY1IGxlZ2FjeS10cnVuaworMjQzOTkgYjEyODBjYmE3OWI1OWFjM2Y2YjljZDRkZjFmYzQzNGI0N2QwOTNlNyBsZWdhY3ktdHJ1bmsKKzI0NDAwIGNkYjcwYmY4OGRiMWE4ZDBiYTYwMGY0MDI0NjJkYTEzM2JhMDYwMGQgbGVnYWN5LXRydW5rCisyNDQwMSA5YmEzYzgyOTQ2Yjg5NjFjMTc2NzllNmUwM2ViNjk3ZWNmODdlNGQwIGxlZ2FjeS10cnVuaworMjQ0MDIgODJkODQxMzYzNmU3NzkwZDU1ZjlmOGZiODNiNDQ3NWZlM2ZiOGVlMCBsZWdhY3ktdHJ1bmsKKzI0NDAzIDgzZmM4ODM1MGY4MGEyMmI5ZWNhYzU3NWJkZDExMTE3NzQ2OTVkYjcgbGVnYWN5LXRydW5rCisyNDQwNCAwZmVhYzQ1ZWU2NjJlZmQwOWU3MzBjNjQ4MDBjM2ZlNTJlNTI3NGZmIGxlZ2FjeS10cnVuaworMjQ0MDUgMTgzZjI4NTk5NzM2NjMxZDUwOTIzMDM5OGZiMjcxMDI1MjFmOTExOSBsZWdhY3ktdHJ1bmsKKzI0NDA2IGQ2YzE4M2NhMDkzYzgwM2I0NmVlODZiNzA0YTk2M2I5YTFhMmJmZjYgbGVnYWN5LXRydW5rCisyNDQwNyBjZWM4MDA5MzFhMzcwZDI1Yzk0YTlmYWUzM2E4ZmYzNGY2ZTI5MTI1IGxlZ2FjeS10cnVuaworMjQ0MDggZTQyMjAzMWI4ZmQ3MDg2MmUwNTc3NGEwMzY5ODk1NDY1N2I4ZWRkYSBsZWdhY3ktdHJ1bmsKKzI0NDA5IDY3NDcxMDcwYjk2NjgzYzFmMmU1ZjBmM2ZiNWZlMDdlYzIyOTQ4NzkgcjIyYjItYnJhbmNoCisyNDQxMCAxMTQ3NWRkNDZmYTc2MTMyNzA0NzIzZTMzZTg4MmIxNjRmNDU0M2IzIHIyMmIyLWJyYW5jaAorMjQ0MTEgMzRmYzUyMzgzMTBkMzNjNDA4NTM0ZWVmYThmNzIwMjE5ZGM3NGU5ZiByMjJiMi1icmFuY2gKKzI0NDEyIGU5YTAxZTI0YTRhOTc0ZjU0YzBiNGI4ZGMxYjM1NDY5OGRjYTc5Y2IgcjIyYjItYnJhbmNoCisyNDQxMyA2MTg1YTY3YjMwMTI4NDA5ZTk1MzgxN2NkOWRlMThkNTJkMDViNTMzIHIyMmIyLWJyYW5jaAorMjQ0MTQgMDNhZWE3NTc1YWZiYTZiZjk4MjBkMWJjNDMyMzA5MDkwMDgyYWRiMCByMjJiMi1icmFuY2gKKzI0NDE1IGE3MThiYTk5MmYxMDRhZjNkOWFiZTdhOWVhOTQ1YjZiOTRkNTUxZDAgcjIyYjItYnJhbmNoCisyNDQxNiBiZTM5ZmE1NTU4YzU0NWRhMzNlOWM4MzNlNDU3NWUxYWM5N2RmMDUwIHIyMmIyLWJyYW5jaAorMjQ0MTggZDE5NTEzZTI4OTNjOTllZmU1ZWJjYmYxNWU1MTc2YzUwNGJjMGJjMSBsZWdhY3ktdHJ1bmsKKzI0NDE5IDM4MjdmMTM2ZTBkNmU2YTBhMTk1NGFhMzkyNWJlOTgyOWJiYWIyZmEgbGVnYWN5LXRydW5rCisyNDQyMCAyNzExZjhkYjE2NGNmYWI1ZTdkOTRkZGVmNGNlMjNjOWVlM2EzZTMyIGxlZ2FjeS10cnVuaworMjQ0MjEgMTI2NjhkMGFmOGY3ZjU0Zjc5MjdlODY5YTJjZDAyODk5NTAzZmUyYyBsZWdhY3ktdHJ1bmsKKzI0NDIyIDA1MDk1Mzk4ZjkzOTJlMmU4NzRhM2FlYzY5YjlkYjU1NzI2M2I2MGQgbGVnYWN5LXRydW5rCisyNDQyMyBhZjFjNWZiNmE3MDM5MmIzMGVjNjFhMWYxYTYzMTMxYWM0Y2UxOTBlIGxlZ2FjeS10cnVuaworMjQ0MjQgOGQwYzEwNmQ5MDk5MjY4MTFlMzNhMDM3ZWIzM2YxMTZiMzRiMDYyMSBsZWdhY3ktdHJ1bmsKKzI0NDI1IDM4ZDBiZDBmYTdmMmU3YjcwYmI1M2U5YzllOTQ1MzM5NWE1OWQ2NDIgbGVnYWN5LXRydW5rCisyNDQyNiBlZDNkY2UxN2ZjNzliN2E2YzZmZmNjYzZhMjlkY2M1NTUxYmUwNmM2IGxlZ2FjeS10cnVuaworMjQ0MjcgZjdkYjJjMGEzMGZjZThkNTk3M2MyMGU4YjE4NGRkOWUwYzcxMzdiNyBsZWdhY3ktdHJ1bmsKKzI0NDI4IDBlZDZmYzdjMWMwOTNkMDZjZDA4ZDU4ZjQ0M2E4OWZiNmIzMzIyN2UgbGVnYWN5LXRydW5rCisyNDQyOSAwYTY3NDYzZjhiN2QyMjU5YzhmZjJmZTFlNjE2ZTRlNWU4OGNhNWE5IGxlZ2FjeS10cnVuaworMjQ0MzAgY2Y3OTcwMzM0MDQxOGZkNzRkOTQzYzdkODBmMzM2YWI5NjdmNmEzMyBsZWdhY3ktdHJ1bmsKKzI0NDMxIDJlNmNlM2E1NjI4NGJmZWNhNWI4ZjdhNWE2MDBjMzQ0ZDg3OGIyMTYgbGVnYWN5LXRydW5rCisyNDQzMiA0OTNmOTMyZDU4MjliMWRjOGMxODAyYzExODI0MGZmYzZjZWVmYjJmIGxlZ2FjeS10cnVuaworMjQ0MzMgNDY4NTMwNzM4NGViMGQ3ZmQzMWEwODYwYThjNjVkMDE2ODA1ZGMwMyBsZWdhY3ktdHJ1bmsKKzI0NDM0IDY3MWE4NDg2NmFjOTk5NjM4ZWNmMGViZDhhNjYyZTg3ODZhYTJlMDMgbGVnYWN5LXRydW5rCisyNDQzNSA2ODdiOGM3MTkyYTFhMTY2YzA2ZDQ3YWI3MGVjOWZlMWNiMGI5NTAxIGxlZ2FjeS10cnVuaworMjQ0MzYgMjE4MjA3MzJhMTE3MWJmYzY3NDZiNzJhZDNmOWZmNDA3MTc4MmU0ZCBsZWdhY3ktdHJ1bmsKKzI0NDM3IDIxYmI0YzRiN2UyNmY1MDg3MDZlYjc4YjRmZTU0OGNkNWFhOWFhMzQgbGVnYWN5LXRydW5rCisyNDQzOCAxN2U4N2FhMzc3OTYyYzU4NjRkNmFkMDlmNzI0MGZiODEwMTVmNzM0IGxlZ2FjeS10cnVuaworMjQ0MzkgNmI2YTljYWUyNTZlZTMxYzM0Y2Q4NjVkZWIzMDIxODA4ZGMyNGFhMiBsZWdhY3ktdHJ1bmsKKzI0NDQwIGRkMjhhNGVjYjM3ZjYwOTM5NDk1MTBlOWJlNGUzODlmNmRjMmFhYTcgbGVnYWN5LXRydW5rCisyNDQ0MSAxNWZmNTA0NjMyZWQ2YThlODFkNzdmOTAxZTNhOWRlZDU0MWUzMTM3IGxlZ2FjeS10cnVuaworMjQ0NDIgYTEzYTQzOTNmNDVjMDFlYWViMGMwMjUxMzZmMTRjNTA3ZGFiMzIzZSBsZWdhY3ktdHJ1bmsKKzI0NDQzIDZlMzQxNTFhZWZlNjYzMDUzZjFiY2QyOGZkZTAxYWMzZmQ5NzcyMjMgbGVnYWN5LXRydW5rCisyNDQ0NCA2MGUzNmQ1MTg3NThmMWUyOTRmYzE3MmI5Y2QyYTY2ZmMwZTU2MTMzIGxlZ2FjeS10cnVuaworMjQ0NDUgYTlhODczNDFhOWU3YjA2ZWNkMDQ4ZmQ0MDcwNGQ1ZGQ1NTk0N2ZjZCBsZWdhY3ktdHJ1bmsKKzI0NDQ2IGVjODhmYzQzMDEyNzYxMWU2YTg4MGViY2E5ZjYwZTVmNzU0MWRmNjQgbGVnYWN5LXRydW5rCisyNDQ0NyBhYmUxNGFjNjIwMjQyMTM3NTUzODdkNjJjMWQwOTA5NjQ4NjVjYWMzIGxlZ2FjeS10cnVuaworMjQ0NDggOTQzNjM5Yjk0NGFiNGVlMzJiMzNkOTRmYjE1ZTBiN2Q4ZDg4MzI4NCBsZWdhY3ktdHJ1bmsKKzI0NDQ5IDE5N2E5MDQ4OWJlZWQ5YzVkYWQ1NDcwZmYxNWM1ZjBjOGFmMDFhNjUgbGVnYWN5LXRydW5rCisyNDQ1MCA1YjhmMDdlNjM5OWMxZTY3MDJlOWRhNDIzNTE1OWYxNjhiYWE5NzdkIGxlZ2FjeS10cnVuaworMjQ0NTEgYTJkMDNjZWJhODBlYmZhNjI1Y2MyYTQ1N2U4ZjEwNDUwN2YzZWIwNSBsZWdhY3ktdHJ1bmsKKzI0NDUyIDY3NTA4YTM1MWFhMmJmYmI2Mjc5MDQwYmYwNzhmOTdkMTFiMjA5MmEgbGVnYWN5LXRydW5rCisyNDQ1MyAxYzZjMDI3ZmQxMTBiZjliNWUzZjRmNDlhMjkyZWY0OGJjNjUwZThmIGxlZ2FjeS10cnVuaworMjQ0NTQgNTFiNDU3MmNmMDEzZDFhNmM4Yzc5NmIxOGUyMGY1NmI4NTllNzM1MCBsZWdhY3ktdHJ1bmsKKzI0NDU1IDg0MmIyODA0MjFiYTYxZWNkNGExOWFkYmZjMDkxYjcwNmQyZTc2NDAgbGVnYWN5LXRydW5rCisyNDQ1NiA3Mjk2NmM5ZGY5YTk5ODdlY2M2MzE0M2IyMjk4YTQ1OTU5N2Y0YjAxIGxlZ2FjeS10cnVuaworMjQ0NTcgOTZhMDhmZDM4ZWY4MTI1OThkNDU4ZmY4YTM3NDE4NGYzNWJiOTE5YyBsZWdhY3ktdHJ1bmsKKzI0NDU4IDg3ZmE2ZTliZDc3ZWMzYzdiZDYxODEzZGQ2YzUzMmM3YjI1NmNjMDEgbGVnYWN5LXRydW5rCisyNDQ1OSAzNGZlNzQzMzUyNmJhNDc4NWJhNmUyMDZmMDI4NDhmYWI3MjgxZTQxIGxlZ2FjeS10cnVuaworMjQ0NjAgOTBhMGQ4MDAzM2I0ZjcwMzQ2YmZmOTYwZmU3N2IwZWI5OTY5ZWM4NSBsZWdhY3ktdHJ1bmsKKzI0NDYxIGQ0NTA5Y2Y5M2Y1MGY5MmMwYTY3MmIzMTg3ZDNjZjhhNDE4OGVmZTQgbGVnYWN5LXRydW5rCisyNDQ2MiA4ZTcyNDU0NjBkMzBiZmY0OWU4ZDc1MWUxNmE1ZmEyNGZkZWNlNTA0IGxlZ2FjeS10cnVuaworMjQ0NjMgMGRkMTZmZDM2ZWU4ZTVjNGI5MTU1NWM3NmY0NTcwY2NlZDBiYmRkNSBsZWdhY3ktdHJ1bmsKKzI0NDY0IDkxOGI1NzM1NGQ4NzQ4Yjk3MzRkMTNjMmE0NDI4NTRhMmQwZTk5NDYgbGVnYWN5LXRydW5rCisyNDQ2NSBiZTVmNTI5NjJhZGIzNGQyZDUzY2ExYTBiMjdkYmU2ZTBiNzZiOTYxIGxlZ2FjeS10cnVuaworMjQ0NjYgMTFhOTY5ZTJmYTUwNTM1NmIwZjA2ZDNkMGRjZmQwYjRjYTM5MzE2MSBsZWdhY3ktdHJ1bmsKKzI0NDY3IGEyMGIzNzJmYjkzOWMyMjA4NDEwOGVhNWEwMjFjYzliNDMwY2Y1MmEgbGVnYWN5LXRydW5rCisyNDQ2OCBiY2E1M2EzN2E4YTVhZmUyNDk5ODZlMDkyOTY2MGQyNmU3ZTkyNTFlIGxlZ2FjeS10cnVuaworMjQ0NjkgOWZlY2JhNTI2OTM2N2FlYjkzY2E3NTVhZjgxYTg1YzkwNDUxNGViNyBsZWdhY3ktdHJ1bmsKKzI0NDcwIGU1OTI0NzJkNTVhMzhmMGJkZDQ4OGRhMWVkMzk1ZTkzNDFjMDUyMTggbGVnYWN5LXRydW5rCisyNDQ3MSAxYWNjNGJhNzNiOWQxNjE3N2MzNmQ3MTc1ZWNjMGY3Y2VkOTA4ZDk0IGxlZ2FjeS10cnVuaworMjQ0NzIgNmZhOTZiMzI5ZTE1ZWUxYzA1ZGY3OTNiNmRlZWMwNDA3Mzc3ZDNkYSBsZWdhY3ktdHJ1bmsKKzI0NDczIDczMzg0ZTEzYmQyYWUxMTJiZTQ2ZGNhNWE4YjExZmU4OWMwODA0ODcgbGVnYWN5LXRydW5rCisyNDQ3NCA5NDNjYTgxYWQxZGYzZjUzOTk3MzMzZjhiNWRhM2MwODU5NTZhMzBkIGxlZ2FjeS10cnVuaworMjQ0NzUgZTFhNjdiZTZjNmU0MGEzZTBiNjVmMjRiY2YzYTFkNGE2MjE0YzMwMSBsZWdhY3ktdHJ1bmsKKzI0NDc2IDdiNjg3OTcxNGI3NDY2ZTQ0OWYxN2EyNzMzNmViY2NkYmY0N2VmNGUgbGVnYWN5LXRydW5rCisyNDQ3NyAyMWFjNTVmYjJkZDhjODJhZDIwZmNmNmMxY2E4Y2Q5M2Q4NDgxNzBlIGxlZ2FjeS10cnVuaworMjQ0NzggY2ZlNDA3ZTRkOGMwMTVkYTY0YjE4NzhlYTZiMjliYzk0ZThkZjJhNiBsZWdhY3ktdHJ1bmsKKzI0NDc5IDBiNGFlYjQxM2Q3ZGY3MzBhODgxNmVlODM2MGIwYTE4MDJmMWFlZjkgbGVnYWN5LXRydW5rCisyNDQ4MCBmZDQyZWFjZTUwZWE1ZGFiNDY3NjM0YmYxZjc4NWY1YWVhODcyNzdjIGxlZ2FjeS10cnVuaworMjQ0ODEgNDc1YzgyNzFlMDU3ZTlmZThhNjY4NGU0ZTdlMGQ4MjA5MzA2YTlkYiBsZWdhY3ktdHJ1bmsKKzI0NDgyIDg5MDVlNjcyNWNhMWIzYTgzMDgxN2JmMDViMzc5MDhlZDFjNzQ3NDggbGVnYWN5LXRydW5rCisyNDQ4MyAyZGZjNjAwZjk5Y2VlNmQ2MjFhNzlkZmYyMWExNWYxYWY3ZjMxMWE4IGxlZ2FjeS10cnVuaworMjQ0ODQgMjQ1OGNiY2MxZGQzNzY1ZTZmNmNlNWI4MzJjOWE3MmQ2ZmRiNGM3MCBsZWdhY3ktdHJ1bmsKKzI0NDg1IGRmMmZmYjBjZDZiYmE2MGIyMmNiOGI4NTA1Yzg5MzA0NGYxYWQ3NjIgbGVnYWN5LXRydW5rCisyNDQ4NiAwYjZhMThjNmU1OWVjNDUwODU2YWM2ZDFiYjU5ZjhlYzY5MTVjOTE1IGxlZ2FjeS10cnVuaworMjQ0ODcgNzg5MjkyY2YwOTE0YzQzNjNkNDE0NmU0YzZiMTA5NzIxNWYyZjU2YyBsZWdhY3ktdHJ1bmsKKzI0NDg4IGM5YTc5NjQwMGE1MWM1MTQ4N2MyNzFlMzM1NDE5NTZjN2U4ZjFhNzkgbGVnYWN5LXRydW5rCisyNDQ4OSBkNGNjMDVmNmUxODM5ZDMwZjRkYjBiYTk4MTliNTE3NzBhOWQyODhlIGxlZ2FjeS10cnVuaworMjQ0OTAgN2QxZWFjNDFjZTNlY2ZlMGFlMmNmZDQ5MjcxMmM4ZjhmNTRhNzM2YiBsZWdhY3ktdHJ1bmsKKzI0NDkxIGJjNTFkZTY0M2I1ZTU4Y2FjZjNlYjE2N2NjZTk0NzE0ZWNmYWM4MGMgbGVnYWN5LXRydW5rCisyNDQ5MiA0ODU0MjI5MDBlZjA3OWMyMTdmYzc1ZGZiM2ZiNzE3ZjU5OWU2MTYwIGxlZ2FjeS10cnVuaworMjQ0OTMgMGZiYzkyODlhNGM3Y2U0MDM5YmM0ZjEyY2Q0ODBjOGM3ZjUyYWU0ZCBsZWdhY3ktdHJ1bmsKKzI0NDk0IDk0NGQ2ZTAyZjM1OTE3NzgzYjRjYjhiMzY1NWQ2YzBlMzQ3OWNhMzggbGVnYWN5LXRydW5rCisyNDQ5NSA0NzNmMjk0MTFmM2IyZWQyMzg3MzU2ZDcxNjI5NDk4M2ZlYTgzYTdmIGxlZ2FjeS10cnVuaworMjQ0OTYgYWMxMzU3ZmQxYWVhMWY4YTEyNGNkODIyNjVlY2U3YWZlOTRiZDE2OSBsZWdhY3ktdHJ1bmsKKzI0NDk3IGMyYmZmYTY3MmI3NTliZjlhZjM3NTMzMzFmN2RlZTZlOTgxMmI5NmIgbGVnYWN5LXRydW5rCisyNDQ5OCBhZWJjZTQ4NWI1NmI5Y2I1MDU5YWE2OGFiYzFhNzE4OWUwZmVhMmQ3IGxlZ2FjeS10cnVuaworMjQ0OTkgMDE4OTE4NmY0ZWQ5MTgyMjkxZmU3NDA3N2Q3OGNkYjkxMTU5MGMxZCBsZWdhY3ktdHJ1bmsKKzI0NTAwIGVmNmY2OTJjNzZlMjJhOWJlZjFlNzgzZDNhOWE5MDRkMTk2OGJhYjYgbGVnYWN5LXRydW5rCisyNDUwMSAwOGYyMWE1Mzc0ZDlhOWZiOWM5YWIyNGViY2I5NGMzYWUyM2Q2MmQ1IGxlZ2FjeS10cnVuaworMjQ1MDIgYTYyM2Y5Y2Y5NTM1NDIzMWEyZGNiYmMyNWIwYzBkMjczYWM4NGQ5ZiBsZWdhY3ktdHJ1bmsKKzI0NTAzIDZhNzNkNThlMTc0NzIyZjI5ZjhlMTRhYzhiZTNkMDBmMmE5OTdlNjggbGVnYWN5LXRydW5rCisyNDUwNCAzM2M4ZDMzNWEyYzQzNzc2MmU4YTdjMWEwNzFiNGJlZWIzMzM3YTUwIGxlZ2FjeS10cnVuaworMjQ1MDUgYzE4YWQ1MmRlY2UzNWMzODFjZGM4ZGFjNDhjMDM5YmMxYTZlN2MzMCBsZWdhY3ktdHJ1bmsKKzI0NTA2IDQyNmMwZDI0ZGViZDhhNThlZTdiNjE2ZDA1MTdkM2Y3MmIyNmVhNWMgbGVnYWN5LXRydW5rCisyNDUwNyAxNTE5ZDZmYWFiMTU5NDA0NWVkYTU3ZTM3YzU3MDE5NWYzNGI0MjYwIGxlZ2FjeS10cnVuaworMjQ1MDggNWIzYjI5MjQ3NTczNWE5OGZkY2YxOGU3MGZmNjQwYmMwOWFmNTAzZCBsZWdhY3ktdHJ1bmsKKzI0NTA5IDkyMDkwMmY1YTg4NGMwOWY0NWE4ZDAxMmY0OWU1ZGZmYTE2MDQ4ZDEgbGVnYWN5LXRydW5rCisyNDUxMCBhZDdiNDQyNGFhYjZmM2IzM2I0YTM0ODc0YjdkNjQxNTRhN2I3MWE3IGxlZ2FjeS10cnVuaworMjQ1MTEgZjE3YTM3ZGU2Mjg1YWE1MWRkZWFhOTNhYzU4YjY4YzEwNDhkNzY0ZSBsZWdhY3ktdHJ1bmsKKzI0NTEyIDYwNDE1YmY1ZjhmMmE0NjYxZTA5ZjlmYTViYzU4NGUwNzlhY2U3YzIgbGVnYWN5LXRydW5rCisyNDUxMyA5NDc5MzEzOTI2OTRlZDM5YTMyYTlmYjM1ZjM3ZTJlMWQ5MGUyZTcwIGxlZ2FjeS10cnVuaworMjQ1MTQgZGI5YjU5NzY4MjllNDQ3YzNhMzZmM2ZhOTdhMmVkYzNlMzY1NmQ1NyBsZWdhY3ktdHJ1bmsKKzI0NTE1IGM4NGRmODQ4NjE2MzY2ZjdhZmI4NzY0MTA4OGViOGI3NjFjMjU3ZDcgbGVnYWN5LXRydW5rCisyNDUxNiBkOTVlYjdlYzQ1NTM1NDJiNThlYWEyYzE1MjVjYzRmN2NlOGU1ZmE4IGxlZ2FjeS10cnVuaworMjQ1MTcgZjc5ZTQ3MTlkYjk2NDVmNWMzODA4NTk2ZWU0OGEyY2ExOTk5Nzg2MCBsZWdhY3ktdHJ1bmsKKzI0NTE4IDg2NGNjNTkzYmRkYTI3N2RmOTc5OWY0MDE5MzJlNzgzZTcwZTZlZjIgbGVnYWN5LXRydW5rCisyNDUxOSA4MTkyOGM5ZDcwMTE3ZWVkNmQzYTJjNDIwMmEzZjdhMzMxZDRkYzRmIGxlZ2FjeS10cnVuaworMjQ1MjAgYmNmNjY2ZTg4MzEyMWQyYjdlMzdlNzE1M2RjMGMwZTE3NjYxM2Y3YSBsZWdhY3ktdHJ1bmsKKzI0NTIxIGVhZDFmYTI2OTUwMmExY2U2ZmI0ZmQzYjU4ZDE4ZDU3ZThmMGE4YTUgcmVsZWFzZTIxLW1haW50CisyNDUyMiBkODI2NWEwYzNjZjAyODhhNmQyMWU5ZWRiOWM1MDU1NWYzN2NkNTc5IHJlbGVhc2UyMS1tYWludAorMjQ1MjMgMmQyMTY1MGY0NmY4OWQyZWEwZmM1YmRhNjZiN2JhZDU3MWQ0NTE1ZCByZWxlYXNlMjEtbWFpbnQKKzI0NTI0IDE1MWI2OTY3YmQyMTBiMmMxMmNlNWIxZDdmOGQ5ZjI4MWQ2ODViMDEgcmVsZWFzZTIxLW1haW50CisyNDUyNSA2NzA5YWQ0ZmU3NWVjOGU1NThjNmVlYTlmMWJjZjk1MzQ0NzU4ZGRlIHJlbGVhc2UyMS1tYWludAorMjQ1MjYgM2IwOWVhNzIzZWNlNzIyZTkxYzgwMzkyOWRlMWQ2NTFmMDJmNzBlOSBsZWdhY3ktdHJ1bmsKKzI0NTI3IGQyNmU2NTk1MDc0MDJjMzc2ZDI4YzVlM2FjNzRkNTA0M2RmNTgxNTAgcmVsZWFzZTIxLW1haW50CisyNDUyOCAxOThhZWJlMTIzOTk4ZDk2NWQ3YWFhZmI1MTYyMThlZDE3ZTRmMjM0IGxlZ2FjeS10cnVuaworMjQ1MjkgYTM5YWY4MDBiOWEzZWQ5ZjQ3ZTUxNGY2MGQwYmRmOWMyYzgzOWM5OCByZWxlYXNlMjEtbWFpbnQKKzI0NTMwIDE0OGZmZDk1NzYxOGQzMmVhZTA5NGJkOTk4ZGQ0MzU2YWIwOWFiMjMgcmVsZWFzZTIxLW1haW50CisyNDUzMSA2NTZjNGNmNTE2NWZhODBkYzM1YTY3Njc4NGNiY2U3NDkwOGRmM2NiIGxlZ2FjeS10cnVuaworMjQ1MzIgOTIwNWNmYjc3MDk0NjY1MDA0MTgwODJkOWIwMWE3ZmJjZTQ1MWJhYiByZWxlYXNlMjEtbWFpbnQKKzI0NTMzIGQyMjkwZTk3ZGUxODdkM2RkOTY0ZDNiYWJhYTM1MzZjNjk4NDIxNDYgcmVsZWFzZTIxLW1haW50CisyNDUzNCAzNDMyN2NmNDUyOTk0YThmMDViMzg2YWQ5OGQyNDY0MjQ0OWY0NjRiIHJlbGVhc2UyMS1tYWludAorMjQ1MzUgMjJkODIxNjczZTUyNjdhMTMzNWQ4OGUyM2NhMjg4MjE1M2EwOTZmNiByZWxlYXNlMjEtbWFpbnQKKzI0NTM2IDAyZDAxNzAzOTc4ODVjNmRlNzY1NzhkNzU0MDAwYjhhMjFiMzQ4YWEgcmVsZWFzZTIxLW1haW50CisyNDUzNyA0YWYzMTg2ZTY2MzE1MTg4MTcwYjA3YjBiZjJiOTcxZWUyNDUzZThiIGxlZ2FjeS10cnVuaworMjQ1MzggNWFiMGRjN2YyZWIwNDYyZmZlMzQ1MWU3ODBmMTg5NjZjMDRjOTBlNiByZWxlYXNlMjEtbWFpbnQKKzI0NTM5IDk1YjQyZjEwNTVjMjRlNzBjMTk0YmZhYjBhYzY3MjUzNzM3OTA2MzYgcmVsZWFzZTIxLW1haW50CisyNDU0MCAwYmM4ODM4NDA3YmI1Nzk2ZTg5YWJhZmFkNmViMTM4NmJkZjBkYmY5IGxlZ2FjeS10cnVuaworMjQ1NDEgYWNjYmU1Njg0YWM2MTRkNWViMzNkOTljMzlmODBmMTFiMmEyMTdmZSByZWxlYXNlMjEtbWFpbnQKKzI0NTQyIDAwZWNmZTE5YThkMjlmZWE0NGVkZDI5Mzg2YzlhYTgzMDE3YWU5YTEgcmVsZWFzZTIxLW1haW50CisyNDU0MyAwNjBjMzc1ODc5NTFiMWE4NDFjNTFhNDJhYjlhYWE4MGQ2NGU2ODQwIHJlbGVhc2UyMS1tYWludAorMjQ1NDQgYTNkMDFhMjI1MzI5NzNkYjYxMzFjYmUxNTdmY2FhYWEwNmIwODQ1OSByZWxlYXNlMjEtbWFpbnQKKzI0NTQ1IDQ5MzAxOThmOTJkYmYzNjM0MWMwMjAyNzhkYWU2ZDJkZDk5NTAyNTkgbGVnYWN5LXRydW5rCisyNDU0NiA4MDNjY2JlM2VlN2NhYjVjMjE4MjhhMGNkYjU4Y2U0NzNlOGNhMWIzIGxlZ2FjeS10cnVuaworMjQ1NDcgOWRjODdlNjFiNWEyZTIyZWUyMjllMDJjYzk5ZjcxY2I5YmRlNmI3NSBsZWdhY3ktdHJ1bmsKKzI0NTQ4IGI3ODI0OTBkYTdmMDgyMTg0MjYxNDBlMGIyNWMwODE4ZWM3MzRjMGQgbGVnYWN5LXRydW5rCisyNDU0OSA4OWE1YzExMDZiODJmMTgwODcyMGZiNzk1OGNkZTUzOWQ5ZmRjMmI2IGxlZ2FjeS10cnVuaworMjQ1NTAgNDJkMDgxOTU0NmQ2MDlmYjgyYjliYzI2MzU4NTg0YzdiM2ZlZDlkNCBsZWdhY3ktdHJ1bmsKKzI0NTUxIDNlODQ2MGZiMmZiZTQ5ZjgwNzZmZTUzMThlNzA1NzQ1ZWUwYTU3N2MgbGVnYWN5LXRydW5rCisyNDU1MiA5ZDZmYmNiOTUwZjliMzRhNGRjMWRiYzFlNDU1ODcxMTYzYmVkNmFlIGxlZ2FjeS10cnVuaworMjQ1NTMgNTRkZGMzNzlkNGZjMjg5ODAyODljMDAwNDBiZmY5NDkwNTRiN2JkYSBsZWdhY3ktdHJ1bmsKKzI0NTU0IGFkODc2NzRkZTNhMWIzYzRlZmVlMjU2M2FkMjU3NDJlZWVmZDZkZWUgbGVnYWN5LXRydW5rCisyNDU1NSA1YzBiYTZlYmM2MmQwY2RiOTMyNTM2MzQ1MGI2MWMxYTBhMmIwMDA3IGxlZ2FjeS10cnVuaworMjQ1NTYgMjAzNDkwMmIwZjFhYzg0YWZiYjVlZTk3YzE5ZjgyZGFkYjFlYzdjNSBsZWdhY3ktdHJ1bmsKKzI0NTU3IDEyODlhMDU1OWU1YTQ0ZGQxZDBjN2UwN2E1NGJjNzVhNDE2NTRiOGYgbGVnYWN5LXRydW5rCisyNDU1OCBiYTZhN2E1YzMyZTg3MTczMWJmYzdkNTYzMGJhZWM2ZDkwMDgxODc2IGxlZ2FjeS10cnVuaworMjQ1NTkgY2I5MjFkNDgzZTAwOTQyZTQ0ZmMxMjYzYzE5OWJjNGM4ZDViYWUxNyBsZWdhY3ktdHJ1bmsKKzI0NTYwIGJhMTY4NTZiZmJhYmQ4ZDRkZWEwMTIwZjZkOTAwZTlkMDZlZDcyMmQgbGVnYWN5LXRydW5rCisyNDU2MSAwNjJjNmY0NzEwNmZiZTFhY2Y0YzgwOGZjMzE0MDJkYTRiNjJhZjAzIGxlZ2FjeS10cnVuaworMjQ1NjIgMjI0ZWRiYWY2MzAxOTE1NDQyNTFiYTI4NzUwNzFlNzhlMzNiMzI5NiBsZWdhY3ktdHJ1bmsKKzI0NTYzIGIyNmQ1OGI5ODEwY2FkN2U4MzE2YzIwNjE4NzM4ZjAzN2Y2OGRlNTEgbGVnYWN5LXRydW5rCisyNDU2NCA0NWUxMTc3NDI0ZTFjNzk5Njg3MmY1YmJlZTEwYjczZWU3NWQ3ZmVhIGxlZ2FjeS10cnVuaworMjQ1NjUgZTM4NmY2ZTI2YTQyZTM4MWY3ODRlOWUxOTE1ZjUwYmMzMGZhYmNhZCBsZWdhY3ktdHJ1bmsKKzI0NTY2IGQwMjRhNWM3MmNiNTYzYzRiNDM0NDY5YzQ4M2RjOThiYWY4MmRkODYgbGVnYWN5LXRydW5rCisyNDU2NyAxOTE4NmIxN2QyNWFhMzkwMGQ3YmFhMGE4ODNmMGUwOTM1NjA3MmZkIGxlZ2FjeS10cnVuaworMjQ1NjggMTQ1MDc2NzFjMDJjYzk5ODlkMjk5YWMxMzJkYTZhZmY4YjY0MjY4MiBsZWdhY3ktdHJ1bmsKKzI0NTY5IGZiZjY4YzU5ZDY2Y2NkMjYwNzFhNzRhODdhZDM3NTMwZDdhYWQ3MzkgbGVnYWN5LXRydW5rCisyNDU3MCAwOGRiZjZiM2MzMTY0MzE4ZWJiMjU3MGRiYTg3YWYxNDc1YTViMDY3IGxlZ2FjeS10cnVuaworMjQ1NzEgZTVkMjk1NTQyYzdmYjk2NjExNjljMTdhODgwMTVkYmJmOTAwNzExMSBsZWdhY3ktdHJ1bmsKKzI0NTcyIDEwMmQxOGVhMDJjZmFjMzlhMjEzOGVhYjcyOWVhMjU5MWM4OGIwM2QgbGVnYWN5LXRydW5rCisyNDU3MyBjNTA2YmY3YjI2YjhhMGYxZjk4ZjJjZTlhZjBjY2QzOTZiN2M4NjUyIGxlZ2FjeS10cnVuaworMjQ1NzQgNDI3MWRhNzBlZDllMTM2MjFmM2U1NzU1YmMwZWIyNDY0YjkyZDNlMyBsZWdhY3ktdHJ1bmsKKzI0NTc1IGU4ZmVhOTVhODJhNDAzNjA3ODBhZGIzMDBiYWI0ZjQ3Mjc0YWI1MzUgbGVnYWN5LXRydW5rCisyNDU3NiAyZjJhYmVlZWZkODc4YmVmMzM3YzcxNmJlODllMDIyNTlkNTMyNWFkIGxlZ2FjeS10cnVuaworMjQ1NzcgMjY1NjdmMjg2NzdlMTRhZmI0NWVkOWQ1ZWYzYTgzOGY2ODVhMDZiYyBsZWdhY3ktdHJ1bmsKKzI0NTc3IGFiZWM0ZTNiMDgxZjJmODAyYzBmMjdiYzFlYTcwZWQ3NTJhYmQ4NGMgcmVsZWFzZTIxLW1haW50CisyNDU3OCA0ZGFlODQyYWE3YzU4ZmZkZTRiNDdiZjk1MDI4M2Y3MDdkMzc5MzQ1IGxlZ2FjeS10cnVuaworMjQ1NzkgN2E3ZjU1N2I0ZDU0MThlYjM3MDJkYTUyZTk1ZGM5YzgzZGU5NmUyYiBsZWdhY3ktdHJ1bmsKKzI0NTgwIGQyOTZlNmJiMTdlNTRjZjA3Y2YwMWUxYWFmY2ZiYWZiNzQ5MGM5ZGUgbGVnYWN5LXRydW5rCisyNDU4MSAyYjVkYzZjNzdjM2RlNmRmYjVmMzE1Zjk1OWI5YTNjNzQ1N2U1YTA3IGxlZ2FjeS10cnVuaworMjQ1ODIgOTc3MDlmZDhmZGEwMjZiZWU4YWEzZDdlOGVhYjUzYjNiMzE4NmY5NyBsZWdhY3ktdHJ1bmsKKzI0NTgzIGFjM2ZkZDE0MTJkOWVhYTgzYzdjYzAxNTkxNDk1NmQ2NTA2NjMwNjkgbGVnYWN5LXRydW5rCisyNDU4NCBkNjRkZmJkYzVmOGM0NDgwNmMwMjQzYzI2MDJiMzJjMjAxMDYxYzRiIGxlZ2FjeS10cnVuaworMjQ1ODUgZWNiYmVjY2RlMDdkZDNiOTYwNWU0Y2IwODVhNzkyOTNlODYzYzBlZiBsZWdhY3ktdHJ1bmsKKzI0NTg2IGNmYmUzOGEwM2U4YzE5MDdjMGNiMmU2OTlhMzMzNjZmODQwMmE3OTYgbGVnYWN5LXRydW5rCisyNDU4NyBiMDEzMjNiZmNmNmNlOTMyOWY0OTJmZTJhODg0MDJiYjhlNjY5NmZjIGxlZ2FjeS10cnVuaworMjQ1ODggMjhmNGNlYTIwOWQ3OGVhODZhNTI3OWRmODY3ZjkwNTE5YzBlMjYwNSBsZWdhY3ktdHJ1bmsKKzI0NTg5IGY3MDJmZjM5MGU0ZGM3NzNkMmMxZjI1NmE1OGE1YTEyOGMzY2IyNWQgbGVnYWN5LXRydW5rCisyNDU5MCAwM2YzMTU1Y2I2ZWJlMTdmYzY3ZDZlNThhYWZjNzc4NWI4ZjY2NjZiIGxlZ2FjeS10cnVuaworMjQ1OTEgNjQzMjQ0ZjdmNDY3MDhkMWU3MTk0ZDEzODFjOTdiMjMyMGI3ZDJjOCBsZWdhY3ktdHJ1bmsKKzI0NTkyIDM2NTdiZWZhYmE0ZjBhODFkYTFiZTFlZWJiZWY0MjIyOTU1YzUwODQgbGVnYWN5LXRydW5rCisyNDU5MyA5OTFiMTcwY2Y0Mzg1ZDEwMjU3MWRhM2E5MjZlYjAyM2YwMzVhNDU0IGxlZ2FjeS10cnVuaworMjQ1OTQgZDM1YTU3NzFjNGM2OWY0ZTNiNzg2MzA3MjE3ODE4MDA1NGQ1YzgzZSBsZWdhY3ktdHJ1bmsKKzI0NTk1IGQ0OTA3Y2RjYzI5OTQ1NDM2NjYzNDVmOGMwYmQ4ZDBiOGM2ZTQ1MDIgbGVnYWN5LXRydW5rCisyNDU5NyA0M2I4YTk2MmEzMmFlZWNlZTIzZDJiNmI0ZjIwOTk0ZTlhZDcwOGFjIGxlZ2FjeS10cnVuaworMjQ1OTggNTBmMjhlZDgwNDRmZmMxYzQ0NWZjNzNjMGZkMWE4ZDE3NzlhMTk2NiBsZWdhY3ktdHJ1bmsKKzI0NTk5IDFlN2MwYjg0OTU4NGQ3ZmY3ZmZiZDczZmEyMGZmNjBhMTU4MjZjODQgbGVnYWN5LXRydW5rCisyNDYwMCBkNTFmMjE1OGZhNzkwNzBhNGFkMTUzNTgxODAwYTUwYmY0YWEzZjBkIGxlZ2FjeS10cnVuaworMjQ2MDEgZDBjMjA0MGZlZGU3ZDRmYWQ4NWYzYTkxMDBkOTc5MmE0NGUxZDY4MSBsZWdhY3ktdHJ1bmsKKzI0NjAyIDc3NmRkMmU3Njc4ZTA0M2Q2NWU4NGMxZDQwODkxY2FhMjNkYmFlMzggbGVnYWN5LXRydW5rCisyNDYwMyA5ODM1YmFiMjg3NmU0MmY4M2Q2YmVjNTRhMGI3ODJhNjA4MDhlMzE0IGxlZ2FjeS10cnVuaworMjQ2MDQgMjM3NWQyZGZiNWIzYTYyYjg2Y2RhOGYzYmJjMjk0NGJkYWU4ZmIzOSBsZWdhY3ktdHJ1bmsKKzI0NjA1IGU4ZGRhYjEzNzMyYWJhZDBiMjk0OWM4YjljYmM2M2FkZWQ3MGUzNjIgbGVnYWN5LXRydW5rCisyNDYwNiBiODEwYzMwYjRhYTFhN2FkOTBlMDdkYmE5NmQwNDc1YzRmN2Y1YmMxIGxlZ2FjeS10cnVuaworMjQ2MDcgMjRhNmMzZmQwZTU4YmMwYTE5NDM2ZDBhZTdjZjU1NDVjODAyZWE4NCBsZWdhY3ktdHJ1bmsKKzI0NjA4IDU5ODk0NDk2YjVjNzM2MmRkNGVjOWNmYTY1NjQzMWY0MTlkNWEzMTIgbGVnYWN5LXRydW5rCisyNDYwOSBiYjc4YTUyYjhmZmNlMjcwNWRlODNhOTUxMDYwMjZlNTJjMTZjYmY0IGxlZ2FjeS10cnVuaworMjQ2MTAgMTE5NDIyNDMwZThmY2JlMWYyMGM5MDg5OGE3NWYxNWU0YTE5OTM3YiBsZWdhY3ktdHJ1bmsKKzI0NjExIDlhMjQzZWUzNTRhMTM0Y2M1ZDNmYWI3NzM2YjU3ZDU3MzQ2MTY2NWMgbGVnYWN5LXRydW5rCisyNDYxMiA2MmVhMzE3ZGZjN2Y0YTBhNThlNWYwMjZlZjZkNWI2ZDU1ZjAyNTYxIHJlbGVhc2UyMS1tYWludAorMjQ2MTMgZjU1MzJjYzE1MTRiN2RiNjM1YjA2NjRlNzg2NjBlOTQ4MTgyN2Y1MiBsZWdhY3ktdHJ1bmsKKzI0NjE0IDEyYzA5NGEyMzI3MzQ2ZTZiOWIzYTQ5MTNhM2Y5YzhkNDBjZmJlY2QgbGVnYWN5LXRydW5rCisyNDYxNSBkZTc2NDY2M2MzMjVjMDQ2N2E0NDAyZjZhNmUxM2FhODgyYzNkOWYwIGxlZ2FjeS10cnVuaworMjQ2MTYgYjZmNTkyZWVjMjQxZDZlY2NjYjI2ZDljOThiM2I3MjJmMzRjM2RlNSByZWxlYXNlMjEtbWFpbnQKKzI0NjE3IGQ5ODBlYmNjNjk2YTI4ODI5NWE4NDQ3Y2NjY2M1ZDM2OGJkYTYwZGYgbGVnYWN5LXRydW5rCisyNDYxOCBkODZkNmUwZDE1OGM1YzgyNDA3NDEyY2MxMjNlMDdjNzRjMzg2OGY1IGxlZ2FjeS10cnVuaworMjQ2MTkgMGQyZWVmNjM2ZDEyOWM1NzVkOTJkOTg1ODVhYTY3NjYyZTg5MGJkYSBsZWdhY3ktdHJ1bmsKKzI0NjIwIDg5OGM4MjVlMDhhY2NjZDY0NTA1ZjNkMmU2Mjc5ZmFlNTVkNzg3YjUgbGVnYWN5LXRydW5rCisyNDYyMSBjYjYyMDNmZjI5ZTVhMWUzYjU4ODAwNzA2ZmM1MjY0NGE1NGZjYzQ5IGxlZ2FjeS10cnVuaworMjQ2MjIgMjYwNzQzM2IxM2U5ZTgxZWNhMjgyZDMyYTM2MDJhNDI2ODM4OTlhMSBsZWdhY3ktdHJ1bmsKKzI0NjIzIDkwODA0YTM0ODkyM2RjN2YyNzY4YmQwMzc5MzYwNjI1MWM3ZTRlZmEgbGVnYWN5LXRydW5rCisyNDYyNCBiZmE1ZjdiNGU3ODg1OThiZWZmMWYyMGZjODU3ZWMwM2Q1YmJmZDBmIGxlZ2FjeS10cnVuaworMjQ2MjUgMDEwMjY5MjQxN2FmMGZlM2UxMmUxYjIxN2VjMWY5NTVhMzBjZTZhOCBsZWdhY3ktdHJ1bmsKKzI0NjI2IDkxZGQyMjM4MjljNmUwMzU2MDExYmUyYzZjMWY0YmI0NzliMTY1YTggbGVnYWN5LXRydW5rCisyNDYyOCA0ZDUwOThjZmE3ODFiZmUzYTdiZjMzZWE2NjRiYjJhMTU5YzJmMWFlIGxlZ2FjeS10cnVuaworMjQ2MjkgOWIyZDFmOGY0YmUzNDk4M2I4NDA5ZjI5MTAzZjA5MGU1OGFjNWVmZCBsZWdhY3ktdHJ1bmsKKzI0NjMwIDBjMmVhMjMzYWQyNDkzYjUwNDliMGMyZDgyZWViYzEwZmU4YTU1YjQgbGVnYWN5LXRydW5rCisyNDYzMSBiNTgzY2FmMWJlODgyYjMyOTgwOWIxOTAzZjk5ZTYwMGVlY2NiODIwIGxlZ2FjeS10cnVuaworMjQ2MzIgYmI1NjZmNTI1ZjEyY2Y4OGVkY2JhMDA3Yjk4N2NmODMyODU1MzUyMyBsZWdhY3ktdHJ1bmsKKzI0NjMzIDRiY2ZiOWRjNTdlMDNkY2IzNTA4ODJlNzYwNzQ2ZDczMTBhZmE2ODEgbGVnYWN5LXRydW5rCisyNDYzNCA2MGRmMmJmODU0YWNlNDE3YjcxMDA4YTU0NjAxOGFkMTJjMjM5NWE3IGxlZ2FjeS10cnVuaworMjQ2MzUgM2EyY2Y1ZTQ1NjU2YTk4YTc1NzI5NDM1YTM2M2Q2YzljMGFmMGE5YiBsZWdhY3ktdHJ1bmsKKzI0NjM2IDE4NTJjYWJhNzAxNGI0MTU0OTdiMzk4YjJmYjIwOTVmMWQ3ZmQ0NjUgbGVnYWN5LXRydW5rCisyNDYzNyA2NDQ4ODUxMThmZTc3OTg3NmM3Mzk5YmFhYjM0YmY1NmRkZTczYTcwIGxlZ2FjeS10cnVuaworMjQ2MzggNzUyZmE0ODVjNGFiYTVmNDcyYTExMjVhZjc2OTFhZWQ5MmY1OTk1MCBsZWdhY3ktdHJ1bmsKKzI0NjM5IDhhMjZiYjM2OWY1Mzc3ZDY4YTM5NzEwZmNhNDU0ZWY3NmQ5YTJjY2IgbGVnYWN5LXRydW5rCisyNDY0MCBjOWFkYWNlM2M4MjNlZmRmNTdkNGFmZDk5YTNlNjAyMjQxNWY3MGQwIGxlZ2FjeS10cnVuaworMjQ2NDEgMzRhMWE1MGU2YWI2ZjgxOTFhMTZjNmUyZmYzYmY2NGJkOGRlZWQwMyBsZWdhY3ktdHJ1bmsKKzI0NjQyIDc4NGM4YmMwYjMwMzRhNTQ4NWEzZmQ3OWE4MmEzNmZlMDI2ODI1ZmEgbGVnYWN5LXRydW5rCisyNDY0MyA4NDhmNjk4ODgyOWYxYTJlNTQwZDRmZmY3N2Y4YTc1MjA2NWMzMWVjIGxlZ2FjeS10cnVuaworMjQ2NDQgNDQyMGE0YmQ5NmE0NGMxYTMwYzVhMDljYjc2NDI2ZGVlYzc5MWM2MSBsZWdhY3ktdHJ1bmsKKzI0NjQ1IDJhN2Q1ZmZlY2UxYzliODdiZjQ0M2I4YTVjODM2MTc5Mzk4ZDU2YWMgbGVnYWN5LXRydW5rCisyNDY0NiBmYmJkOGE0Y2E3YTZmY2M1Yjk4OThhOWI3ZWM2ZDA0N2I4NDJjYmY1IGxlZ2FjeS10cnVuaworMjQ2NDcgNmQ4NzRhOTFiNThiODFiODgzYTBjOWUzZmEzYzZkZjQ1MWM4MmI1NiBsZWdhY3ktdHJ1bmsKKzI0NjQ4IGNmMmZiMjBhNmNlN2ViM2IwMmVkMjllYmFhNjNiYWQ2MTAxNzE0ZTMgbGVnYWN5LXRydW5rCisyNDY0OSAxOGY2MDgxMGI5NGEzZjAxMGZlNGQ4MTQ1ZTNkZTM1N2ZmN2JlZjdkIGxlZ2FjeS10cnVuaworMjQ2NTAgN2M2ZGY5NjRiMDRiYjQxNGFiNDViOWJhNTYyYjIwYjVjNWMxYjFlMCBsZWdhY3ktdHJ1bmsKKzI0NjUxIDkzZjU0MDU4ZWY0OGY1ZGNiZmQ5Y2EwNTIyYzU2MzkyMzQyYzQ0NTAgbGVnYWN5LXRydW5rCisyNDY1MiA2ODA0MGRiMDg0YjZhYTU3YWNkNWU2ZjIyNjdlNWY5MDI5MDY3NTMxIGxlZ2FjeS10cnVuaworMjQ2NTMgNTI1Yzc3MzY4Y2QwNTdkZjM1OTc2Y2U3YmE4ODQ4N2UyZmEzZTMwZCBsZWdhY3ktdHJ1bmsKKzI0NjU0IDNkNjhlMzExMGUxZmU1OGVlNmU2ZTUzMjFjYmU0N2NkMzQxMzc1NzcgbGVnYWN5LXRydW5rCisyNDY1NSAwYjFmYWYxMTZmNjNlYThjNTZkMTdmMjQ3OTUwMTJhYTlkNDE3MGFmIGxlZ2FjeS10cnVuaworMjQ2NTYgYTM5MmUxZmFlNjFkZDIyZmU5MTIyODE0NWVlZTNjZTA5OWQyMjIwYSBsZWdhY3ktdHJ1bmsKKzI0NjU3IDdhNThjZDMzN2NmNDQwYTFjMTEwZDEyYzllMTI1MDUzNWQ4MjNmODkgbGVnYWN5LXRydW5rCisyNDY1OCBmN2VhZWVhYzljNjVlN2JlNGI4MWM4NzM2ZDg1YjJjM2U2ZTlhYjI0IGxlZ2FjeS10cnVuaworMjQ2NjAgZDFmOTM4ZWVlNzAwYTI2MjkxNzc4YWQ5MDg1MTlmNzMwZTc4MGY3OCBsZWdhY3ktdHJ1bmsKKzI0NjYxIDhhOGY1N2RjZjlmZTczNjM5N2Y0OTliMzI1MzM4N2E2MzVkYTQ0NjQgbGVnYWN5LXRydW5rCisyNDY2MiBmNTljNmI1ZGQxMjIyYjJmY2IyMmQ1NGZhZmU2ZTcyMjhkNzQ5ZWQ1IGxlZ2FjeS10cnVuaworMjQ2NjMgMTIzMTBkNjQzZDhkNzI5NzY1ZDExMzJjNDE5NmUzMmJiMDkyY2NiYyBsZWdhY3ktdHJ1bmsKKzI0NjY0IDkzOGI1YmY3NGZiOTRmNWJmODU1Zjc4MzJkMGEyMzNkNmE0ODYxOTYgbGVnYWN5LXRydW5rCisyNDY2NSBhNTE0NmY4NDMwMTAwNjI3NTBiMzQxZTY3Yjk3MzMxZjc3NTQ5Yjc5IGxlZ2FjeS10cnVuaworMjQ2NjYgYmU5OTBlNzAzZDBmMTQ3MmNmZGM3NDI0ZjkxMThlZjY0NmIyNmMwMiBsZWdhY3ktdHJ1bmsKKzI0NjY3IGJlMzI4M2VkOGY5NzU4ODQzOTMwNGM4NTk0MDBlMjc2NzE2ZGFiOGUgbGVnYWN5LXRydW5rCisyNDY2OCAyNTdjOTM4OTAwYTZlNWUzZDRlNzgwMWZlOGE4ZjlkMDExOWRkOThlIGxlZ2FjeS10cnVuaworMjQ2NjkgZmJkZGI2NGQyMWMyY2IzZDk4ZWNiZmIwYzk1MTUyMTY2ZmI4Mzg3NSBsZWdhY3ktdHJ1bmsKKzI0NjcwIDAwM2RjNTczYjI5NTBjZWI0ZTc4MzE1MjYyNjFkNDU4ZTVhNTZlN2EgbGVnYWN5LXRydW5rCisyNDY3MSBjNjcwNDZlZjUzODU2N2JjZDRhYzk1NzI5YzI3MGU1MGI1MzU0ODJlIGxlZ2FjeS10cnVuaworMjQ2NzIgZGUzYzg4YjVmODg5NjJiZDdmZTFhM2Y2NDU0YTkwOTZhMGMxYTY3MyBsZWdhY3ktdHJ1bmsKKzI0NjczIDJlYjI1ZWYzNDM4NmMzOTc1ZGQyZGNmMmViM2Q3MGE3YWUzOThkMmMgbGVnYWN5LXRydW5rCisyNDY3NCAyYzIwOGRiZjBjYjAzODc1NzA3YmQxMDdjZDcxZTVjYTNiZjU4NzU5IGxlZ2FjeS10cnVuaworMjQ2NzUgMjkwNzJlOGU4ZDk4MmIxYWZiYTQyNjc5MWFiM2U3MTk5N2VjY2NhZiBsZWdhY3ktdHJ1bmsKKzI0Njc2IGU4YjA5OGZlM2RmODc4ZjhjNDFiZGRhMzgzZTAzY2VhZTg4NzcxZTUgbGVnYWN5LXRydW5rCisyNDY3NyAzMDEyZjYyNmRmN2NiMzVlMTMwY2VkYTA5YjYwMmY3M2M4MDRiMzJhIGxlZ2FjeS10cnVuaworMjQ2NzggNzFlNWVlY2Q1ODllNTVjMzM1NmVjYmNjZjBhZDJjODAyZjdmOGY1ZSBsZWdhY3ktdHJ1bmsKKzI0Njc5IDA0MDIzMGMxNTg5MDQ3YTdlMmNjMmY1ZWE5Mzg3ZmJiNTU5YTdmMTAgbGVnYWN5LXRydW5rCisyNDY4MCA1YWI5YTY1ZTIzNDY2MTQ2MTUzNWIxYTQ0NzFmYzZmMDdhYzZmZWJjIGxlZ2FjeS10cnVuaworMjQ2ODEgZjU3NzY3ZDc2ZGU2ZGI3ZjRmNGRmNTBhNDM5YTM3MzQ1ZGI3NGMzMSBsZWdhY3ktdHJ1bmsKKzI0NjgyIDhhODlmZjFlMDY2MmRiNGRhMDRlNTllNmI3ZWE4ZTNmYzg2ZmJmYTEgbGVnYWN5LXRydW5rCisyNDY4MyBkODdjYTkzMmU3MGZjZDBiYTUwMGFhODcwOGVjY2E1MTM2NDc5NDVhIGxlZ2FjeS10cnVuaworMjQ2ODQgYWY1MTYwNGQwMGRiMjcxNDQ5Yjc3ZjEzYjY4MTZhNTA2N2I3ZmJjMiBsZWdhY3ktdHJ1bmsKKzI0Njg1IDhhMDM1MDg3ZWI3Mjk3NzZiMjdkZWQyZGFlYmYxOTRmZTcwNTFlMDYgbGVnYWN5LXRydW5rCisyNDY4NiA3MzQ2NmE3NmYyNWUyZTcxNzI1MjkwNDg3YWRjN2VhMmZlMTQ0MzFlIGxlZ2FjeS10cnVuaworMjQ2ODcgYzI5NjZhN2JkMTEzNTE0OTgzOWQ0M2UwYjFmZGNlMGQ2OTgxMmZhMiBsZWdhY3ktdHJ1bmsKKzI0Njg4IGM1OTM5ZDBjNzQ3YTQ5MmMyNTJlZmM0NzI4YzNjZWJjMzYxYWUxNjkgbGVnYWN5LXRydW5rCisyNDY4OSA0OTc3MmQzMTg0NDBiOGI0OTU2YmFhZDMwNjRjYTlmNTA2NjAwNTdiIGxlZ2FjeS10cnVuaworMjQ2OTAgN2UwZDJkNTliYmNlOWI3ZWM0ODc1OTFiZDc2NjYyNWRlOWNhNjg5MCBsZWdhY3ktdHJ1bmsKKzI0NjkxIDUwZDAzNjZlOGYwNTgyMmY5Y2ViODEzNGNkMTM0ODkxMWQwNzBmZTcgbGVnYWN5LXRydW5rCisyNDY5MiA1ZjU3MTM0NGM4OWNjZjAzMjY3MGIwZGQ3MTg2MmViNzliMzJiM2VkIGxlZ2FjeS10cnVuaworMjQ2OTMgMTE2YWYyZjAxNDQyYTkwMGIwODhkZTdlNjE3OTBhMjU0YmQwZGE1YSBsZWdhY3ktdHJ1bmsKKzI0Njk0IDc0M2Y2N2JlZmI1N2U5NTMyNjhjNzI3ZTVmY2ExM2MyYTU4M2JiOTkgbGVnYWN5LXRydW5rCisyNDY5NSA0NGViZWFiMjY5YzVhNzdlZmUyMDgwMDJmYzhjOTc4Y2ZlZTdiNWQyIGxlZ2FjeS10cnVuaworMjQ2OTYgOTEzNDU4ZWFlZjkwMGI5YzE2OWZhNGI3NTZmODRjN2U4YWNkMmU1MSBsZWdhY3ktdHJ1bmsKKzI0Njk3IGQxNmIzMjcxODFhOGQ2YjE2MTNkMjI2NzUxYmU1NmVmZDJjYzMzMGEgbGVnYWN5LXRydW5rCisyNDY5OCBhYmNkMmY1MmYzMTZkYTA3ZjMyNGQ1YTRjMTkxNGE0MTMxMDk4ZmVmIGxlZ2FjeS10cnVuaworMjQ2OTkgYzQ0YzkxMTYwNmE0NGNmNzEzYTAyMGZlMDRhODBhM2E2ZjFkYTg4ZiBsZWdhY3ktdHJ1bmsKKzI0NzAwIGViNzhmMDNkY2RlYzY4MzAyODNmM2ExZTcwOWU0NjBhYmUwZTMyYTIgbGVnYWN5LXRydW5rCisyNDcwMSA4MWE1NzhlYjczNDYzOTVjZmQ3NzJlZmI2ZWE5MDdmMTZlZGRmOTRmIGxlZ2FjeS10cnVuaworMjQ3MDIgNDJjZDUwNTk0ZDBkOTc4MmQxYzdiNjAzYWJiMjEwZjczMmFkODUxMyBsZWdhY3ktdHJ1bmsKKzI0NzAzIGRmYWNjNzMzY2JmNGI1Yzk0NTZjMjdkMmZlNWQzZjEzMDRjODU1NDcgbGVnYWN5LXRydW5rCisyNDcwNCA3NTAzN2Q4NmIxMTM2MzE4MTcwZjhlYzdlOWVkMDJjMjlmYzMyNDUxIGxlZ2FjeS10cnVuaworMjQ3MDUgOTZiYmIzZDBjNmEwNDRmMDE2MjVlMWFiZTdlYzQ1N2Y0NWUxZWU2ZCBsZWdhY3ktdHJ1bmsKKzI0NzA2IDJjMzJmYzVmMjNjMDM3MDQzZjJlNWUxYmViNzMxZGIzMzdiNmU3MWYgbGVnYWN5LXRydW5rCisyNDcwNyA2NTc4YzdkYzMyOGIxZTcyNzY5Zjk5YmU0ZDYyNDVkOTJhOWMxNjY5IGxlZ2FjeS10cnVuaworMjQ3MDggM2YzZWYwNzQzNTM3YjI3YTQwODcwZWJlN2Q5ZmYzODBhMDIyMWEwZiBsZWdhY3ktdHJ1bmsKKzI0NzA5IDgyYWY1NGI0MzgxNzc1MWNlM2U0ZjQxMDRiZDQ0NTAyNzA1ZDA1YzUgbGVnYWN5LXRydW5rCisyNDcxMCA1NjAyMjJlOWQ0NzEwYjBhNGY2Mjc1ZjJiZDc1M2FhMjY1ZDRmZjMwIGxlZ2FjeS10cnVuaworMjQ3MTEgZWMzMmU1OWRmNDAwYmI3NjdkNDA3MmRlNmMyZWZiMmY5NDAwMTMwNCBsZWdhY3ktdHJ1bmsKKzI0NzEyIDVjOWJhMjQxODM5MDFiZjU5MjQzNzhjOTFlOTJlZjIyNzg4ODgyZjMgbGVnYWN5LXRydW5rCisyNDcxNCBkZTEyNTc5MmJmYWFkZGQwODJhNzkwNmI5MjU2YzAyNGZjYWI1YWQzIGxlZ2FjeS10cnVuaworMjQ3MTUgMzNkNTllMThiNjhkNDQ0YTM1ZDU3N2M2ZmZhOTA1NDFiZjhkZmI4YiBsZWdhY3ktdHJ1bmsKKzI0NzE2IGNiMDhiYzY5ODY4NTllNzRkNjVhNjlhYzA0Nzk0NzViZDA4M2FjMjEgbGVnYWN5LXRydW5rCisyNDcxNyA2ZGE2MDkxYTMxZWVmMjA5YTYxMTQ3YzE5YmQzZTg4YmYxNDE0ZTVkIGxlZ2FjeS10cnVuaworMjQ3MTggMDViYzU5MDUyMjQ5MzRlZmE0MzY0MDgwMzMyYjMzYzYxMWJjNDAwYyByMjJyYzEtYnJhbmNoCisyNDcxOSAyMmM5ODhjYzE1MmQxMjJiMjQ3MTdlNzZkYzY0MDgzN2U5NTJkOTJhIHIyMnJjMS1icmFuY2gKKzI0NzIwIDNkOTdhMDU0ZjlkNGFmZTVhNmE3ODZkM2I2ZTgxN2NkZjBhMTM3YTYgbGVnYWN5LXRydW5rCisyNDcyMSA2OThiNmVlYjlhODZkODkzODFiYjMzNTlhODI0OGMxYjM5YTNlNzQ5IHIyMnJjMS1icmFuY2gKKzI0NzIyIGViZjhhMDM2MTUxZDQ2NWMyNTk2ZWE4MmNmMGEyMTFhOTBmM2RlN2EgcjIycmMxLWJyYW5jaAorMjQ3MjMgMjA0ZDFkNWIwOGQ2OGE4Yzc4ZjU3MDgzODVkYmJhMjZlOTUxYzZlOCByMjJyYzEtYnJhbmNoCisyNDcyNCBmYmQ1N2VlNWI3N2Q3ODI1MDA5MjkxY2U3NWExZDVkODZhMjIwOTM2IGxlZ2FjeS10cnVuaworMjQ3MjUgM2NlODcxYTA0NTViNTJkNWRiNDQyMWFiOTBmZDU2YTliZmUxMzFjNiByMjJyYzEtYnJhbmNoCisyNDcyNiAzNjNiMmY3NTI5MzUxZWRjYWJiMDVlOWJiZDM5ZjEyNjM1MTc4MjFhIHIyMnJjMS1icmFuY2gKKzI0NzI3IDZlYTcxOTNiZGMyZWFmZDE5NDNlNWFkODM1N2E5MjI4MDZiNmZlZTIgcjIycmMxLWJyYW5jaAorMjQ3MjggMDY0MzExMTQ5Y2I0ZDNkZmM0OGJlZTJmYzRlYzkxN2MwN2VjNmFjMSBsZWdhY3ktdHJ1bmsKKzI0NzI5IDJhZmU0MmYyNDU1OTA4ZjBkMDBlNDNkYmZhYWYyY2U4MjNmMDRkMDMgbGVnYWN5LXRydW5rCisyNDczMCA5YzgwYjVhZjgxMjFhNzRiZGEyNzA4ZWZhM2FmOGMxZjYwZWI1MTc0IGxlZ2FjeS10cnVuaworMjQ3MzEgZmUxOGViMDU1MTA3NDA4MjY5YjUyOTZiZGNlMDAyMDM1ZDdiZDc4ZCByMjJyYzEtYnJhbmNoCisyNDczMiBjZWRiNTAzOTE1NWE2NTUzMzE0YTJmNzQzZmY2Mzk3YzQ4NzY2NDNhIGxlZ2FjeS10cnVuaworMjQ3MzMgMzFhMjQ5YTM0MGY4MTdhZDI5MWI3YmJiN2I3NWM3YzVlOGJjYWQxZiBsZWdhY3ktdHJ1bmsKKzI0NzM0IDg1MDg2ZjNlNzBmMzQ3ODg5M2Y0YzZjZWRkNzJhOTRiZTgyMDJlMWMgcjIycmMxLWJyYW5jaAorMjQ3MzUgZmRjMGNmNTZiYTljZmQ1ZjAyNGVlNDJlN2E5MGQ1YjE2MGRmZmRiYyBsZWdhY3ktdHJ1bmsKKzI0NzM2IDI3NjY4ZGFiNzdmODhhY2YyZWVhMDVmN2YwZDU4ZDYxOWMxY2JkMTMgbGVnYWN5LXRydW5rCisyNDczNyAwNDA3Mjk0MDIxYTBhNmEwMThhMTY4MjM0NTFmZmZkZDQ1ZDkyNWQwIGxlZ2FjeS10cnVuaworMjQ3MzggMWQ4OWRhODI1Zjk1Nzg4NmViZGIyY2ExMzE4ZmY1MjYxM2FiZDVjMyByMjJyYzEtYnJhbmNoCisyNDczOSAwYTk0OGNlNDdlN2EwNmEzNTI2NzU3ZjdiM2ZhZmU5MzUzZWMxZGRjIHIyMnJjMS1icmFuY2gKKzI0NzQwIGU2M2Y0NjY4Yzk1ZDA4NzA5M2ViNjY0YTdlMjQxZjU1OTIxNjhmNzQgcjIycmMxLWJyYW5jaAorMjQ3NDEgZmYxYjU3MWFjYTcxMGY0MDM5MTk5OGQ2OWM1YjA0OWUwYTNkY2MzMSByMjJyYzEtYnJhbmNoCisyNDc0MiA4ZmIwYzI0ZjRkNDUwZDk0MGI0ZTVjZjYzMzNjNjFjYTYzYzVjODJhIHIyMnJjMS1icmFuY2gKKzI0NzQzIGIxMTc3NGNjZDEwMWY3MzBlOTI3MTMwY2VmMTBjODE4NjFiMDM4YzIgcjIycmMxLWJyYW5jaAorMjQ3NDMgN2Y0Njc4ZWVmYWZiMTQzOTM1YzM5YzAzNjRlMGI1M2IzM2QyODgyMCByMjJyYzEtYnJhbmNoCisyNDc0NSA0MjE2ZWYxOTYyMGJiZGVkZTRjYjNiMWYzMDVmNTk2YThlMzdlZTYzIGxlZ2FjeS10cnVuaworMjQ3NDYgOGIyYmQwNzgwOTI1ZjlkNWYxYzZiNzc3MGVjYTg4MmQzMTI0NDQ2NyBsZWdhY3ktdHJ1bmsKKzI0NzQ3IGY1MzZmODUyOTViODYzN2NiZjE1YTc1ZTNhNTcyNzFmZjIyMmI0NmQgbGVnYWN5LXRydW5rCisyNDc0OCAzZmNiMjI0OGJiZThkOTA3ZThlNmNjZTE4ODVjNmIxMTgyYmY4ZTIyIGxlZ2FjeS10cnVuaworMjQ3NDkgNmIzMGMzZjQzNzhkNDMwNGNlMWU3ZjY4NjQyNjc1MWFkYzVlYTNlNCBsZWdhY3ktdHJ1bmsKKzI0NzUwIGMzOTIwYzQzNTMzMzE4ODRmMmYyMjhkYWZlNTJjYWZmN2JlOTY3ZTQgbGVnYWN5LXRydW5rCisyNDc1MSA1NzFkNWI3Yjc0NmM4MmFkODExOGQ0MmMzYjZhMmFmZWNlYWUwNmVkIGxlZ2FjeS10cnVuaworMjQ3NTIgODEzNDllNTE2NTliNTFjNWZjZGUyYWVhMmNkMWJhNDk5NmU3MGNmZSBsZWdhY3ktdHJ1bmsKKzI0NzUzIDRjYjIyM2VmODY5YmEwNTM3YzdjOTFiY2I3MDM4ZGE3NTM4NTg2NjAgbGVnYWN5LXRydW5rCisyNDc1NCBhYTQ3NTNmOTQ1NzIyMTQxNjIxNjA5Yjk5N2QxZjBiYTgzN2IyYWMyIGxlZ2FjeS10cnVuaworMjQ3NTUgNTU5MjEyNTVlYzkzZDIzNDM4NGFmMWE2NzZlNDc4MTQxMDM1NjRlMCBsZWdhY3ktdHJ1bmsKKzI0NzU2IDI3NGFhOTFiNDE3YzEzZjUwOTkwMjJmMjBmZDk2MzI3YTMzYjdkODMgbGVnYWN5LXRydW5rCisyNDc1NyBlMGUyYjYxNjFjN2ZkNmJkZWFlN2FhOGMxNDI0NmNjNTUwMjYzNTAxIGxlZ2FjeS10cnVuaworMjQ3NTggYTk2NTZjZTAxNWIwZDhmMTI5ZDc5YTg3NzBjYTQwNDc1ZmEyZTc5YiBsZWdhY3ktdHJ1bmsKKzI0NzU5IDA2M2Y4YTMxYjZiOGI3MjllMmM4Zjg3ZTE5MzQ5ZjYyMjdhYjY0ZWMgbGVnYWN5LXRydW5rCisyNDc2MCBhNjIwZWY4NGIwZmIyNjIzMTg1MTgyODQzZGZjZmNmNTM1MGI3YzcxIGxlZ2FjeS10cnVuaworMjQ3NjEgM2ZjYzJlMjk5MmQ0ZDVlNTdiNDc3Yjk0NTVlMDA4ZjE3ZjE0YjhkOCBsZWdhY3ktdHJ1bmsKKzI0NzYyIGIyZDMzOTEzNjRiYmI3MzE2Y2YwMzA0ODI4OTZiYmQ3OTA3MzQyMTkgbGVnYWN5LXRydW5rCisyNDc2MyBkYmQ2YTc2MTIxNTk2YmUwM2IzY2NhYTczZGNjNGZiZjRjMjk0MTQzIHIyMnJjMS1icmFuY2gKKzI0NzY0IGEwMjllMzQ4MzA0YzhlN2NhNTkxMzhmMDk0NjVlYmYyYThiOTMyMTEgbGVnYWN5LXRydW5rCisyNDc2NSBmZDlkN2FlM2Y5NGE3MDI1ZGU2NWQ1MjE4ZjM0YjM4OGRkNzY1MTJjIGxlZ2FjeS10cnVuaworMjQ3NjYgM2QyY2M4NTc3MTI3ZTU2M2U4ZmIyY2NiNGEwNGEyYTUwYjU5OGYyNSBsZWdhY3ktdHJ1bmsKKzI0NzY3IDE0NTBlZTZiOGI5ZWNkN2RhOTdhZDYwMjY2MjQzOTBkYmUyZTAzN2QgbGVnYWN5LXRydW5rCisyNDc2OCBjNjVmYWM3YzI4NDMzZTZlODYxNGY1Y2Y4NmU4OTM0MmY1OTNkZjhiIHJlbGVhc2UyMS1tYWludAorMjQ3NjkgOTdkODU3ODgxYzgyYWYzZDJkZTk3Yjg3ZWVkYjY0ZWNiMjA5YmM1MSByZWxlYXNlMjEtbWFpbnQKKzI0NzcwIGY1NDY2MjNlZjBjNjU2NWRjZmI0ZTkxNGFlMzhjOWRkN2VmYzU0MzAgbGVnYWN5LXRydW5rCisyNDc3MSA1YTU5MGYxOTZlYzU4M2E3MTgwYWU3Y2E1NThkZDJkNmIxZDliNDlhIGxlZ2FjeS10cnVuaworMjQ3NzIgOWE2MzRkNjA1NDJhZTcxNjQ0NjI3MzBjNTU0NjdlYzAzOTY1MWIzNiBsZWdhY3ktdHJ1bmsKKzI0NzczIGQ3YTllYmE3NGZlMjYxMWNmYTBlYjBmMTA3MjFlMTBkYjNjOTM1MDUgbGVnYWN5LXRydW5rCisyNDc3NCAzMGVmZTQ2ZjhlM2NhYTVhYjFmZTQ0MGExOGIzMTczOWZiN2VhNDY0IGxlZ2FjeS10cnVuaworMjQ3NzUgMDVhZDdhNjlkOTMzMTFjN2RmMWE5ZDNhYzViMzU0OTA4NmU1MjUyZiBsZWdhY3ktdHJ1bmsKKzI0Nzc2IGQ3ZDI1ZWMwMmQ0MTI5YmVjZTNlZjBlYzZjZWIwMmI0YjcyODQzNjcgbGVnYWN5LXRydW5rCisyNDc3NyA0ZjYyMWJhYzc1MjY1ZGEyN2VkNDJiMzNhOGYyMTFjOTRlODEwMWRkIGxlZ2FjeS10cnVuaworMjQ3NzggNTE5MzI5MGFlZjBhNWI0YzFlMzM4NjgyZTc1NDE4ODBhZjNmZGRiMiBsZWdhY3ktdHJ1bmsKKzI0Nzc5IDQwYzU2ZmVmYTE3NzJiNjI5NDA2OWFhMjUzYWQ1MzFiNTE1MWM2NjkgbGVnYWN5LXRydW5rCisyNDc4MCA3N2M3NDc2ZjQxYmRlNzY3NDEyODNhMDU5MDdjN2Q5YzIyZjJiNjk4IGxlZ2FjeS10cnVuaworMjQ3ODEgN2U3NDU1ODkwZmQ2ZWIxYTU5YzZmYjU1NDQxNmIyZWEwMzM0MTBhZiBsZWdhY3ktdHJ1bmsKKzI0NzgyIDk3ZjA5OTY3MWJiY2RkZThmMDJiOGRlMDNjNmJiMzE1M2M4M2Y2MTMgbGVnYWN5LXRydW5rCisyNDc4MyAzYWJmMDAyMTVjMWNjZTA2MzAzYjUyMDJkN2UyOWYxNTBlNWQ1ZmZkIGxlZ2FjeS10cnVuaworMjQ3ODQgZmEwYmRlM2M4NmIyNzhiOTVkMGRlZGFkYmQ3ZjRkZDBhZDljOTJkZSBsZWdhY3ktdHJ1bmsKKzI0Nzg1IGJlNWNhMGIyNWJmZGM3YmRiMjYzMTgzMGE1ZDJlMWFhZDA4MGYzOTUgbGVnYWN5LXRydW5rCisyNDc4NiBmYjZiM2ZjNGUwYzFhYWIxMzQ2ODBjOWViZjBmODc0NjczNzBhMmFmIGxlZ2FjeS10cnVuaworMjQ3ODcgYmQxMmI1OTczZGFhOTk2NTI0ZTE5NWE2NDZmNzY3Yjk2OWY4NTJmNCBsZWdhY3ktdHJ1bmsKKzI0Nzg4IDdhZjQ1YWZmZDM1MzJhMGIwOGNmN2JhODRjNmI3NWI1ZDY4YjBkN2QgbGVnYWN5LXRydW5rCisyNDc4OSA5ODQ2NDM5NGNjZTMzNjgzYmFlZTE2ZmZiOGIyY2E4NDYzYzUwNDViIHJlbGVhc2UyMS1tYWludAorMjQ3OTAgZTNjMmZkMTc3YTZlNGUyZWU3ODk4OTM2YTgwYzVjZWU1MjhlYzRmMSByZWxlYXNlMjEtbWFpbnQKKzI0NzkxIGM1Nzk3YTAwODNkOGZhMmEwZDUzNmU2ZDg0ZDU5ZmE5MWZhZjllYTAgcmVsZWFzZTIxLW1haW50CisyNDc5MiA0NjVjOTMyNWFmNjlmNDE4NjRkMjZjZTg3NzBlZGM2OWI1MmU5ZjNkIHJlbGVhc2UyMS1tYWludAorMjQ3OTMgZjY4NWYwNzA0YmJkM2E5ODVjZDJjZTdlYjc3YjhmZTAxMDA4NDdmZiByZWxlYXNlMjEtbWFpbnQKKzI0Nzk0IDBmNzRkYjc0YThmNDA4MDMwN2JjNDhhN2JkZDBiNWRlYzk2YzYyOGEgbGVnYWN5LXRydW5rCisyNDc5NSAzMzAzZjJkOTJjZWY5YzhkMzQ4OTJlY2M3NDA0NzllNzAxZDlhMzc4IGxlZ2FjeS10cnVuaworMjQ3OTYgNjY0YWM4MjI3Y2M1M2YzZTM0YWM5ZGZlOTA2YjliYWUyZGRkODY2YSBsZWdhY3ktdHJ1bmsKKzI0Nzk3IGRmNzcwZGQwYmVjNGE3NmZlZmJhNGIxN2UyMTdiYmU4MThiYmY4YTEgcmVsZWFzZTIxLW1haW50CisyNDc5OCBiMjc1OTlhYmNjNDlhMTE3ZTgxZGRlNTc5OTdmYWRmNDlhMmNmOTZhIGxlZ2FjeS10cnVuaworMjQ3OTkgOTQyMzI0NTUxNGE4ODVlYzllNzdiZDliN2NmYThhMWNlZGE3MDU1NCBsZWdhY3ktdHJ1bmsKKzI0ODAwIDNhOTMxNDViNmE5NjMyZGIyNjk0NmRhOWI5N2FmMjNhZTcwNWJmOGQgbGVnYWN5LXRydW5rCisyNDgwMSA0ZTM1ZmE1ZDU3MDhkYzU1NzBjYmVhMzE3OTJkNmE3NGMzYjFjMmZkIGxlZ2FjeS10cnVuaworMjQ4MDIgODM0OGU4NDQxZWFmNzViZTg4ZWJiZTk3NzkyYzMwODIxYjQyYjU3MSBsZWdhY3ktdHJ1bmsKKzI0ODAzIGYxOGNmZGUyZTgwNDllOGUwZDI5NmZjZGRkNGYzY2JjYTZkOGUzMWMgbGVnYWN5LXRydW5rCisyNDgwNCA5NTlhMmVkNTczNWNkMDg1OWJkYmU5ZGQ2ZmMxOWJhNWY5MTFjNzFlIGxlZ2FjeS10cnVuaworMjQ4MDUgODAzYWEwYzJiMTMwZjkyZDVkNDI1Nzk2YzQ4ZjM1Yzg2ZjRkMWM4NiBsZWdhY3ktdHJ1bmsKKzI0ODA2IDY3M2JiZjExNTUwODkyMjVmNGU5YmFiMjYwZjgzNDk4NjZlNmQ0MjYgbGVnYWN5LXRydW5rCisyNDgwNyBlMWYzZmU1Njc3ZGEzZDhlZTVlZThhNGEwOGJkOGZlNTMyZDQzOTg4IGxlZ2FjeS10cnVuaworMjQ4MDggYTNiMDY3M2JhMmNhNWZhNDNjMzk4NTU2NzdmNGU0NWQ0NTdhMTI2ZiBsZWdhY3ktdHJ1bmsKKzI0ODA5IGFhYzIzMzMxYTI1ZDc4MzBlZmNmYjYzYTlkMzBjNzNjMzVmMDJjYzUgbGVnYWN5LXRydW5rCisyNDgxMCBhZjI2MjNiYjVkMGJjM2Q4ZGE0YjJlZDFkZWQ5MDdmMTI0ZDhlNjJiIGxlZ2FjeS10cnVuaworMjQ4MTEgY2NiMjZhMTE4ODY3ZTgyMDRjNzRhNzZkZTg4MGE3NDYyNTA3MzQ4NCBsZWdhY3ktdHJ1bmsKKzI0ODEyIGI0ODkxMGE5NTc5NzFhNzllOWEzOTc0ZWNiNzkzYTg4NmVmNDUwM2YgbGVnYWN5LXRydW5rCisyNDgxMyA0YzgyYzhlZDZkZjRkNGM0N2Q0NzU1YTk5NDNlMGNmMmE3MDQ4MjAyIGxlZ2FjeS10cnVuaworMjQ4MTQgMjFjN2Q3NTY1OTc3Y2VhNjk2NjdmZDg0NjM0MzkzZTY4ZDEzZTcyZiBsZWdhY3ktdHJ1bmsKKzI0ODE1IDAwYjNhZDFjZTQwNGQ2ZmZkMzNhYjY0ZWVmYzM1NmQwYTEwOGJjOWQgcjIycmMxLWJyYW5jaAorMjQ4MTcgMDAzYTk4NWNhYjk1YmJiNmE5OWI2MzYxOGIwYWZkMjNhNDNjNjJjMiBsZWdhY3ktdHJ1bmsKKzI0ODE4IDc2MjI1NDM0YTZmZWQ3NDRhMWMyZDRlOWRlZGVlMDE0N2ViZTg3ZjYgbGVnYWN5LXRydW5rCisyNDgxOSA4NzMyOTFhNDg4OWVjOTJlNmViMDhmNDc2MDVjNjM4MzQxY2M0ZmRkIGxlZ2FjeS10cnVuaworMjQ4MjAgMmQzNzZkOTI2ZGE4MmE5MDIxZmE4MTQyYjRkNWVmNDYwMjA4MTM4YSBsZWdhY3ktdHJ1bmsKKzI0ODIxIDlkOTVjMWE4OWNmY2IwYTMzOTdhOTY4YmU3NGEzMGZlMzZjMjQ4YzMgbGVnYWN5LXRydW5rCisyNDgyMiA1ZTA2ZjhmZTM4ZWU0YWZmODM3ZTExNmQxYTQzZGI4MzhhNjhkZDQ3IGxlZ2FjeS10cnVuaworMjQ4MjMgYTE5OTI2OTRjODI0MjVlMGM0MjVjNGUzMTMxMTIzZjRhZWQ3ZDU5MSBsZWdhY3ktdHJ1bmsKKzI0ODI0IGJiMTY4ZGU1MGEwMzJiNzM5OGM4ZTQ1MGYxYWIzNjI2MTliZGQzZGYgbGVnYWN5LXRydW5rCisyNDgyNSAxZDFjNDY4MjRmYzNlN2VkNTAwYWE3NGE1NGJmNDdlMmIxYTViZjRkIGxlZ2FjeS10cnVuaworMjQ4MjYgYmY2NDQ4ZjAyMjczNzRlZGE5MTg5ZWVlNWJkYWM1ODI3NmNiZDE2MyByZWxlYXNlMjEtbWFpbnQKKzI0ODI3IGNhNDUwZTRkZmY5YTYyNjQ4NDA1MjE3YzRlNDQwN2RlZmQ4YzhlZDYgbGVnYWN5LXRydW5rCisyNDgyOCAwNDQ2MzAxNjEwOTNjOTE3NDRjNTM5ZTZmNTBiOWVkNDBiNjNhZGE2IHJlbGVhc2UyMS1tYWludAorMjQ4MjkgMTYyMTA2YjE2ZTQ0NGMxYTQ3NWI2MDg0ZDBkZmZhNDRiMzE0ZGZiMiBsZWdhY3ktdHJ1bmsKKzI0ODMwIDQ0YzQ3OWY4NGUzNjhjMGI1ZjNkODUzNTg0YmM4ODlhZjMyNjgxMjggbGVnYWN5LXRydW5rCisyNDgzMSAyNDc0NDE0ZDQzNDI5MjRiMDZmYmI5ZGMxOGJiMDY0NDZmYWY4NGYxIGxlZ2FjeS10cnVuaworMjQ4MzIgN2MyZjk1ZGVjY2FkNWUyNDg0ODVjMDUwMTczODcwMTcwMzZiN2E4MSByMjJyYzEtYnJhbmNoCisyNDgzNCA2NWY0MDk0ZjQzZjQ2ZmQ1MjlhNjg0ZmUyOWE3OGMxNTIyMDIxM2JmIHJlbGVhc2UyMS1tYWludAorMjQ4MzUgODE0Y2UwOTI5NTNlYzIzZjM5ODE0ZmM4ZGMwZDQwYmZkNzg1ZTc1YSBsZWdhY3ktdHJ1bmsKKzI0ODM2IGU5MjAyZmUzMmYwYjhmZjZlYWI4NTk5ZDJjMzRmNzY4YmM4YmQ2ZmQgbGVnYWN5LXRydW5rCisyNDgzNyA4OGJhYTRjNGVlZTEwNWI2ZTQ3OWFmNGU1YmQxMzc2NjkzMGE4YzdmIGxlZ2FjeS10cnVuaworMjQ4MzggY2NhNTZhOTc2Y2IyNWNiMDYwMjQ4NTFlODFmYTEyZjIwYjJhNmI0NiBsZWdhY3ktdHJ1bmsKKzI0ODM5IDRhMzQ4NjJhMzk5NDIzZjQ3MDI1OTM5ZDM0NGZjMzhmMGFkODM1NzAgbGVnYWN5LXRydW5rCisyNDg0MCA2NTJlMTgyNzk1ODNjMTQ2YTkyOTY0ODVkMTdjZGQ5ZTRhYWZmMTRiIGxlZ2FjeS10cnVuaworMjQ4NDEgNWE1MDQxMDJhMDljNTAyNDdhMTIzYTc3ZDkxZDJhY2YzMzE5ZGJhYyBsZWdhY3ktdHJ1bmsKKzI0ODQyIGEwM2IxM2JlMmY2OGY5NWJkNDZkYmRlMWIyY2E4NjFiZmNmYTQ5OWEgbGVnYWN5LXRydW5rCisyNDg0MyAzODE1YTk1OTgxOWM0NjkzODNiNWU3ZjEzZmY4ODExY2FhNGM0NDFhIGxlZ2FjeS10cnVuaworMjQ4NDQgM2M5ZjM5MWQ3ZTAzMzg0MjBjYzJiZjg5NTlhZmViMDUwZDliMmNiZCByZWxlYXNlMjItYnJhbmNoCisyNDg0NiAzMjQ4ZWFkNzE5Mjg3OWQ4Y2JkMGM0MDQ3NGYxMzM0MDdmZWMxZDY5IHJlbGVhc2UyMi1icmFuY2gKKzI0ODQ3IGQ2YTQ0ZmQxZjRjMTQzNzA5MDY3OTI3NjIxOWY0ZDY3NjY2MWZjODkgbGVnYWN5LXRydW5rCisyNDg0OCBlM2RlMzhhYTY0NjIzMTQ4MWFkMDM2NGU0OWQwMDdjODQ0MDY3ZGFmIGxlZ2FjeS10cnVuaworMjQ4NDkgMDk3ZGQ5NTNlMTE5NjI0ZjAxOWY4OTA1ZWMzOGJmNzU1MzM2ZDZmZiByZWxlYXNlMjEtbWFpbnQKKzI0ODUwIDU2OGM3NWRkNTA3ODJhOWI0MDMxMTcxNmMyM2I5OGNiMGZlM2IwY2YgcmVsZWFzZTIxLW1haW50CisyNDg1MSA4NWU2OTRlOWI5ZmMxNDY0NGQyNTUxYjAzNDFkMmQwYWZkZWRlOTk3IHJlbGVhc2UyMS1tYWludAorMjQ4NTIgZTNhYTVhYWIyODc2ZGZiZTFkOWFkMWFmOWVlNWJkZmQwN2FjZWQxMiByZWxlYXNlMjItYnJhbmNoCisyNDg1MyA4MmFjODM0NzQ0NjI5MTEyNWFlMWNlY2ZjZmE4M2M2OGI3NjBmZGI2IHJlbGVhc2UyMS1tYWludAorMjQ4NTQgMjViYWJkNDMyYjI0ZjRiYjEyNWRhZTFlMmNiZWU4ZjE3NjAwNmZmZiByZWxlYXNlMjItYnJhbmNoCisyNDg1NSAzMjZkOTk3MmY2ZjYxMDAzNmY5YTRlOGJiZWUyMWExYTZhN2Y2NDA3IGxlZ2FjeS10cnVuaworMjQ4NTYgZThkMzZjMTgzMTM3NTczNzRmYmMyODY1YmQyMDBlNDcyNDVlOWRiNiByZWxlYXNlMjItYnJhbmNoCisyNDg1NyAwNDYxMmRjMzIzZGYzMDgyMGM0OGU4ZThlOGQyMTcwNTRkYzczY2ZmIGxlZ2FjeS10cnVuaworMjQ4NTggNzY3ZDI0NWZkOGRjZmI2OWVmNmI0ZjMzYjRiOWIyODFmMGYzN2VlNSByZWxlYXNlMjItYnJhbmNoCisyNDg1OSAwOTUxOGM0YzY4NTA4YjQyZDA4ZjcwODlhNDRiODlhZDkwMGEyNTY0IGxlZ2FjeS10cnVuaworMjQ4NjAgNDhmMzIxOThjZWI5MWY0OWRkOGEwMGE0MGQ5MmRkNGE1NWZlMDU3ZCByZWxlYXNlMjEtbWFpbnQKKzI0ODYxIDA4MjVlYjFkYmViODFjYWI3NjAxN2Y1ZjRlYTM3ZmJhMDA4YWQ4MjcgbGVnYWN5LXRydW5rCisyNDg2MiAxNzk5NzgyMDk3MWQwYzI5YmU1N2RjYzVhMWQ5Zjk4YTkyM2QxNGUzIHJlbGVhc2UyMi1icmFuY2gKKzI0ODYzIGZjOWUyNzExNzE0ZGVlOTk1OTZhZDM2NDEzZDAyYTJiY2ZmZTg3YmQgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjQgNmMyM2EzZmIwYjA0OTg3MmE1Mzc3NGFlYjE3NTA2NzI1MDZiM2EyZSByZWxlYXNlMjItYnJhbmNoCisyNDg2NSA2MDYzNTQ0MDEzOTZmNTQwNmJmYTAxOTlkNzJmYTRhYjFmNzA2M2ZmIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY2IDNmZmVlZGEwMjBkY2FlMTBkNjgyMjMyZTdjNWFiM2E4YjQwMGU0ZGIgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjcgNDc5Y2Y4ODJiZGI1ZTY2MmNiNzE4ZmQzYmUzM2EwNTA3MmI0NWQwMiByZWxlYXNlMjItYnJhbmNoCisyNDg2OCAxMTAwM2I2NjU1NDVkNjFmMTQ4YmU3YzA4NTAwOWMyZWM1MDdkNTBlIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY5IDMyNDY4NGFkYjQ4MzUyNDEwNTMwMTNjZTg3MDBhNTY0MDYwODAwNWMgbGVnYWN5LXRydW5rCisyNDg3MCA3NGM1ZGNjMTViNzM1NTY1NDkyNjg4YTViZTYwYWU4NjVhNzE2ODUzIHJlbGVhc2UyMi1icmFuY2gKKzI0ODcxIGU5M2YxNDQ4NjJkZTk3MmIxYjExN2U0NmExZmNhMzJmZmUyMDQ0NjcgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NzIgOGFmODZhOTUyYjJjYTNmYTIwYjc4M2ZlOGQ4ZGUwMzQxZDcyY2U3ZSBsZWdhY3ktdHJ1bmsKKzI0ODczIDRmODkzMjEzNGRjYTNiM2ZkN2E0ODEwMjEyM2JiNjc0OGVhNDQxMDkgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NzMgZGNhOGI1ODc0NjQzOWE5ZjdkZjIxMmY2NDNlZTRkNDBlYjhkZjI0YiByZWxlYXNlMjItYnJhbmNoCisyNDg3NSA5MzViODYwMmNhZDk4MzY3MDRhM2FhMTdjYmJkOGU0ZWM5ODI0MDkyIGxlZ2FjeS10cnVuaworMjQ4NzYgOTAyNTE5N2E4ZWEwYzRiYmM3NmEwZDA4YjI0NGU0YTdkZDhiMDIzMiByZWxlYXNlMjEtbWFpbnQKKzI0ODc3IGUwYTVkMTZhOWNiOTUxOTZjYTE4NjE0NDIzMDkzYmViMjIxZTM5ZDAgbGVnYWN5LXRydW5rCisyNDg3OCBjYjU1ZjE1YjI3MzAxMDVmZDliNTkzZTIxYTk5MDcyNGM5Yjk0NWE3IGxlZ2FjeS10cnVuaworMjQ4NzkgYjQ4NGFhNjFjYWI0YTZhZWU2ZmYwN2YxODkyZjk1YTQ1YTliN2VhMSBsZWdhY3ktdHJ1bmsKKzI0ODgwIDlkNDgwZDBmZTY5MDU3MWNmYmFlNTIwYjJkNzFkNjViYzFlYWUwMjIgbGVnYWN5LXRydW5rCisyNDg4MSAyNjhiNTdkOWRhZWQxOGEzYzhlNzZiNWQ0M2IwZmE4YTVkOTBjOTM0IGxlZ2FjeS10cnVuaworMjQ4ODIgZmM4MTMxNjRjZTlmOTgxM2U2NzIwMGI0NjdiYzhlOWY4NThiZGRjYiByZWxlYXNlMjItYnJhbmNoCisyNDg4NCAzNDlkNjZjZDg3NGMzMzVkYzQ2NTYwOTRiZDNiYzQ3NmYxYWI5NTJkIGxlZ2FjeS10cnVuaworMjQ4ODUgN2MyOGU5NTZmOWIwYmFkNmJjNmExNDllM2VlZWNiZTAxZjI3ZWMwNiBsZWdhY3ktdHJ1bmsKKzI0ODg2IGFjM2NlMWZhZWM2OGVhM2M3MTE0YTFjZjBkZTRjZmMyNjYwZjdhMzQgbGVnYWN5LXRydW5rCisyNDg4NyA0MjMyZDI1N2U0ZmYyMmViODdmN2IzMzUwMTg3NDdhOWQ3NmIzMGE3IHJlbGVhc2UyMS1tYWludAorMjQ4ODggNDFmZjQ3Nzc5MjZlYjUxOTE5OWE1ZGI5NzFlZTU1ZDllYWNkZmNhNSByZWxlYXNlMjEtbWFpbnQKKzI0ODg5IDEzMzliNmQzMmU5NTNkYjhiOGI2YjQwNjc2ODc5OTQ3ODIyMzQ0ZGUgcmVsZWFzZTIxLW1haW50CisyNDg5MCBlNjliMjFmMjUyOWVlNmM0NTlhYTJmYjcyNjhmZTk0ODNmYTM1NWRhIHJlbGVhc2UyMS1tYWludAorMjQ4OTEgNGEyYzNhZTA5ZTBjNGVmZGVhMmE1NjNjYzgzNzA2Y2IxZTNkZGMwMiByZWxlYXNlMjEtbWFpbnQKKzI0ODkyIDJhNzg1YjY2OGExNjA5MjU0ZWRjN2Y2MGIzZDY4NjNmYjBhNzJjZGUgcmVsZWFzZTIxLW1haW50CisyNDg5MyAwMDZjNTViZGY3ZTE1NmZjMmU1NzU2ZWRkYzQwZjUyN2VmNjk5MmJhIHJlbGVhc2UyMS1tYWludAorMjQ4OTQgYzQ4ZDhiMzYyYWNlZTFjZGUyYjA3NDA2YmFjMTNjMDhkNDI2YmM0OSBsZWdhY3ktdHJ1bmsKKzI0ODk1IGNhMjdkODJhYzg5YjQ2ZTNkM2U5ZWEzZTA3YTMzNDg5MmM5ZDc3MDggbGVnYWN5LXRydW5rCisyNDg5NiBlOGNiMjM2YWFkMjc5NjI2ZmFhZjdlYmE2YzRmODZiNTgxNTNjNjFiIGxlZ2FjeS10cnVuaworMjQ4OTcgN2JkZTljYTkwNTU0OTM0ZTEyZWRhNmQ0ZDZkOTFiY2RhNDhkZTcxOSBsZWdhY3ktdHJ1bmsKKzI0ODk4IDBhZjlhYzg3ZmZiYzFkOWUzMjU2NmY4MjE1MzExMTY1MDFhMGJlOGYgbGVnYWN5LXRydW5rCisyNDg5OSBiZjUxOTMyMWU3OTY3ZTJkMjA2YzE5MGI4MmNiNzgwMTVkYWRjN2I0IGxlZ2FjeS10cnVuaworMjQ5MDAgNWQ0MTM1NjA5ZWZjMWE4NDA4M2RmZWIxZjFjZmQ1MjE5OWYwY2E5ZCBsZWdhY3ktdHJ1bmsKKzI0OTAxIDljMzJlOTIwMGFiZWU5MWUyMTcwOTI3Mjc1YzkxY2RjMGE0Mzc2OGMgcmVsZWFzZTIxLW1haW50CisyNDkwMiA1ZjMyMTM2NTVkOTU1ZjQxN2I1MTAxYjg3YzRhZDM1NTg2ZjY4MjFjIHJlbGVhc2UyMS1tYWludAorMjQ5MDMgMTE0YTZiY2ZlODZiYjg0ZjFmY2E2N2JjZWM1MWIxYTFjMDI4ZmI4YSBsZWdhY3ktdHJ1bmsKKzI0OTA0IGY3MjI0NGNmODVhOWI3NjIyYjQ3YmFkNmQ3NGViMDhkNjlhNmUxNmQgbGVnYWN5LXRydW5rCisyNDkwNSBhZDEyNmMwNjM2NTQ4ZDM1YmU0NzVhMTFkNjE2Y2U2ZTc3YmNiNjMzIHJlbGVhc2UyMi1icmFuY2gKKzI0OTA2IGE2MGZjZGM3NTM0NmIzZTM2OGE0NDg0MDk5ZmUxZTU3YmM3YTczNDQgcmVsZWFzZTIyLWJyYW5jaAorMjQ5MDggZDU5ODY4YmFmZWIxMGIyY2VkOGMyYWIyNmJkNDYzOGIwNjY4OWU5MCByZWxlYXNlMjEtbWFpbnQKKzI0OTA5IDU4YTgyYTRiZThiMTczZTUyZTlmY2NlMWZlZTMzYjZmZGM1YTNiMDAgbGVnYWN5LXRydW5rCisyNDkxMCA2ODg0MmQyOTVkMmNjY2RmODZiOTBjY2I5YzFjODQ2NDU1NmE3MTU4IGxlZ2FjeS10cnVuaworMjQ5MTEgODJjYjE3NDk4ZmMxZmI3ZGViNzNiMmYzYjk5MjYzOGRjNTQ4MzQ2YiBsZWdhY3ktdHJ1bmsKKzI0OTEyIDNiMzliYTJiODAwZWRkN2Q5YTI0NTQ3ZjA1ZjMwZDU5ZjM4M2ZjNmMgbGVnYWN5LXRydW5rCisyNDkxMyAxODk0Nzk2ZTkzMGMxNDU3NGJkMzM0ZGJkZTUyODZlNTE4NTRlOTg5IGxlZ2FjeS10cnVuaworMjQ5MTQgNDU1NDA3MmU3NmI0ZjA5YWI2ZmVjOTkzYjhjZTkwODA0ZWExYTI0MSBsZWdhY3ktdHJ1bmsKKzI0OTE1IGIyZTc5Y2FhNjhlMGIxYzliYzg1Y2UzOWRjYjMzYmExMWFiNGYyYzEgbGVnYWN5LXRydW5rCisyNDkxNiBlNmE3YWQ2YzM2NTJkYTNhMzhkNGJmYTI2NTk3YzhkYjVmY2QwNzc2IHJlbGVhc2UyMS1tYWludAorMjQ5MTcgNThiNzdlZjQ3MmQ0YzJhMzMyMGY2NWM0OThiNzZlNzRiMGE4ZGIwOSBsZWdhY3ktdHJ1bmsKKzI0OTE4IDUyMDUzYWZjYWQzMjVjNjM4NjdhOWM1NmUwODE1MGJjY2M5OTg2MTMgcmVsZWFzZTIxLW1haW50CisyNDkxOSAxZWMzNGEwZDAyYTc3Y2U0M2FiMjliZWRiNTUzZDg4ZWNhOGE5MzU1IHJlbGVhc2UyMS1tYWludAorMjQ5MjAgNDNiNjQyNDVmMWFhN2I5ZTEzYzc3ZTc5NjljYTk5OTc4OWI5ZDFmZiByZWxlYXNlMjEtbWFpbnQKKzI0OTIxIGFiOTJlYWExNDBlZjk0ZTc1Y2QyZjYzOWI5NWU0ZjZlZWFkNmJhZTkgbGVnYWN5LXRydW5rCisyNDkyMiA4NDc0MjVkNWJjYTgwNzkzOWI3NmQ5MTg2OTEwODFmNjg0MzdiM2U5IGxlZ2FjeS10cnVuaworMjQ5MjMgZjg0NzUxMzVhYzEzNDM2ZjA2MmMzNWVlMTlmOGM2YzdjODhmMjVlOCBsZWdhY3ktdHJ1bmsKKzI0OTI0IGZjYjY0OWIxMDA0ZGUzN2U5OGQxZjI3N2Q0ZmIxN2EzODA0MWRhYmMgcmVsZWFzZTIyLW1haW50CisyNDkyNSA1ZDc3ODI1YmJjMTA2NThmMjExNTEzMzU1ZTg3YmFjZmJhZGYwZjk5IHJlbGVhc2UyMi1tYWludAorMjQ5MjYgOWUwMjMzYzBlMDAzYzkxOGM3NTI0Mzk4ZDBmMDIwODY2N2IxMGZiNyByZWxlYXNlMjItbWFpbnQKKzI0OTI3IGFjOGQ4NWRhNmQwZGJiZTQ4NzM3YzBlMTA3MWU1YzJmYzZmNzgyOGQgcmVsZWFzZTIyLW1haW50CisyNDkyOCBlMjA0N2FmMGIyZTZlNmZkMmI1MjVlYzE5MGFkMTZkMjRkNWY2NWUzIHJlbGVhc2UyMi1tYWludAorMjQ5MjkgMTJlMGQ1OGU0NGJkYmExNGNhNDY2YTNkNzdkNDM4YTI2ZTQ1ZWEwZSByZWxlYXNlMjItbWFpbnQKKzI0OTMwIDE4ZGI5MWMwYTc4ZjFjZTdmMjBiNDI4MjdlYTEyZDg1NzQxYzU3MzYgcmVsZWFzZTIyLW1haW50CisyNDkzMSBlZmQwNGQxZjMwODVlMWZhNjE0MmRmMjIzODJkNmMyMWVjNmE3YzUwIHJlbGVhc2UyMi1tYWludAorMjQ5MzIgY2Q3N2FhMTFlZGRjMTlmNmM4YTNmNWYyNTFmMmNhNWZkOWZlYzY5YyByZWxlYXNlMjItbWFpbnQKKzI0OTMzIDgxMmQxNTQzYmEwODlhYTEwM2Y0NjU2YjNiODlmN2U4MTJmYjUzYjMgcmVsZWFzZTIyLW1haW50CisyNDkzNCBkMDg5ZDFlODQxMWNjYzQzNDliNTFjNTM0NWNkOTc5ODIxMmE0YmZlIHJlbGVhc2UyMi1tYWludAorMjQ5MzUgZjc3NzU4Yzg3MmZiNTExZjYzYjAwMWJkYTBjNzFhMjA4ZjdlOWVhNiByZWxlYXNlMjItbWFpbnQKKzI0OTM2IDhkNTFjNzUzOTcxOWIxOWM1NDE1Yjg2MjVkODFmNjkyM2NkNGU1NDYgcmVsZWFzZTIyLW1haW50CisyNDkzNyA5Y2NlYWQ1ZmQyOTcxMTc4YTZkMTY0Yjc4ZTYwZDUxZWRhNzU5ZmZmIHJlbGVhc2UyMi1tYWludAorMjQ5MzggMzk3N2FkM2IwODI1N2Q1MGE2NDdhYjg2NjJkOGFlNDg5OGEwNTY3NCByZWxlYXNlMjItbWFpbnQKKzI0OTM5IGI5MzcxZjMyNDFiODUwMDdlMmI4YTVmNmQ1MDU1ZmI5YmUyODFhYTAgcmVsZWFzZTIyLW1haW50CisyNDk0MCBhYzRiMWM0YzNiMTJmMjg0ZGYzNzFhMGZlYzdmZDRmYmU0MGEwODc3IHJlbGVhc2UyMi1tYWludAorMjQ5NDEgN2IyZDcwMWVjNDA0ZDczOWE4ODA2NjJjMjJlYTMwMTY4Njc3Mjc0MiByZWxlYXNlMjItbWFpbnQKKzI0OTQyIGE5NGU0ODIxMzk4ZGEyOWM1ODIwMTdkOTAyM2QxY2IzZTkxNzM1N2QgcmVsZWFzZTIyLW1haW50CisyNDk0MyBhMmVhYjRkZTU1MDUzOTliMjAxNDU3M2FiOThjY2YwZmZiMTY1YWE2IGxlZ2FjeS10cnVuaworMjQ5NDQgZWM2MjMwNDcwNzNhMmJlNDE3Mjg0NDk5NWZjMGNkNWRkNjRjNGNmOCBsZWdhY3ktdHJ1bmsKKzI0OTQ1IDE2YTgyNDIzYjg2MDIwNDU3YTRmNGU4MTljODA0YjRiZmYyMjdlOWMgbGVnYWN5LXRydW5rCisyNDk0NiBmZGMzOWUyN2E0OTRlOGI2YTc0YjJlNTAzNzIxNzE2Y2M5OGEyOGVkIGxlZ2FjeS10cnVuaworMjQ5NDcgMjljMWE1OGRkYTUzZmFmMzU5OWVjZTZmOGExYWQ5NDQyMjUzMDM1YyByZWxlYXNlMjItbWFpbnQKKzI0OTQ4IDA5N2FlMGFkZjQ3ZmJjNDE2Y2NkZmQ0MDBhZWE3OTExMzgxNzQ3MGMgbGVnYWN5LXRydW5rCisyNDk0OSA2ZTlhNGY5YTU1YTQxYjM0YTZmOWM2ZjNiM2RiODdjMTVhNTQ3ZjY5IGxlZ2FjeS10cnVuaworMjQ5NTAgZDA0ZWI4ZDY2NGUyZGYzMGM2ZmJlMDRhZGVlMGRjZTNlZGZjZjgyOSBsZWdhY3ktdHJ1bmsKKzI0OTUxIDkyZGE3NGM4ZTVlOGMwMmI3ZDdhMTk1NTc5MGNlYTVmYzU4MzQzOTAgbGVnYWN5LXRydW5rCisyNDk1MiA1YjdiMzg2Y2IwZDQ1MzU3NmE3Yjg1MTk2OGI4ZDFmYjc5MTc0Y2ZmIGxlZ2FjeS10cnVuaworMjQ5NTMgN2RkMzk1OTg4Mjc1ODFjYjE1Y2Y2ZjZlOWZiNzZmNDdlYmU3YjZlZSBsZWdhY3ktdHJ1bmsKKzI0OTU0IGZmNzBlNTYzNGFlOTEyN2E3OTFmYjFiMzdlYmVkYTk0NjJmNzYyMGIgbGVnYWN5LXRydW5rCisyNDk1NSAxOGE3MGE4MmFmMTU5Nzg4NjE0NjJmN2I5NmZlZGJiNjk0NTlkOThjIGxlZ2FjeS10cnVuaworMjQ5NTYgZTU2MDQ3ZGI2NTM4NDcyMzUzMjJiNDUwMjAyMjJjYTNiMzRhM2U4MCBsZWdhY3ktdHJ1bmsKKzI0OTU3IDVmZjhiYjI1MDMxYzgyMzA4YzgxYTFhMTlhZmIyYmU4MmFkNmEyZmUgbGVnYWN5LXRydW5rCisyNDk1OCA4NTc4MzU1ZDIzZDM0OTVhMDRhMzA4Yzc5YzU5MmUwMDUyM2VjNjkyIGxlZ2FjeS10cnVuaworMjQ5NTkgY2FjOTMxYWQzY2M1YTY3MmQwZTI2NjM1OTE2YmRkOTAwMWVmNjBiNCBsZWdhY3ktdHJ1bmsKKzI0OTYwIDY5NzA1MWY2N2U5NzZhNTAzYTY4MzYxMmY4ZmI4MDc3ODg4YzVmZjMgbGVnYWN5LXRydW5rCisyNDk2MSBmZTU0ZThkOTNjYjQ4YzIwZDFmODUwMDZlMDcxNDc0ZmJhNWI5YmYyIGxlZ2FjeS10cnVuaworMjQ5NjIgNTJiM2I4NDZmMTFmNTRkY2I1ZDY3YTAzNjJmYzIyZjAwNzMwYTI2MCBsZWdhY3ktdHJ1bmsKKzI0OTYzIGE1MGRmNjVhY2E3YTliODE1MDA0Y2NjYmM0M2E2OTMxMWE1NDc1ZTQgbGVnYWN5LXRydW5rCisyNDk2NCAyZjQwNzMyNjlkYWZkMzM4N2JhMTgxYWFkZjk5ZDNiZDJlMGZmNzhiIGxlZ2FjeS10cnVuaworMjQ5NjUgNjRkMGM5NDlmMzNlMmZlYmRhN2JjMWU0NjNmYThkNjc2NDBiNTYzOCBsZWdhY3ktdHJ1bmsKKzI0OTY2IDAzNWQ5Yzk2YWFlY2ZjODg0MGQ1ODI0NDBiNWYxZDdiY2I3MzYzNjkgbGVnYWN5LXRydW5rCisyNDk2NyA2N2RhMTEyOTM0MDZjZDRmNzQ0ZmMzMTg2Nzc1MjU1MDMwNTgyMjY2IGxlZ2FjeS10cnVuaworMjQ5NjggYmUyMTNmMWNkNDYyZTFiNThhYWZjYWYxZDI0MDJlZmI0N2ZmYjA4NSBsZWdhY3ktdHJ1bmsKKzI0OTY5IGZiMzRmNTVhMDNmYWJmNDAyMTdmMjE3NGRlYTFjMjMzMDQ5MDdiNjMgbGVnYWN5LXRydW5rCisyNDk3MCAzYmEwZjFiMjAzMjBjOTc0ZmIwYmMwOTVjNDExYjM5ODEyM2IyMjEzIGxlZ2FjeS10cnVuaworMjQ5NzEgYTllMDZmZmFmN2ZiZTlkOGM3OWE5ODhlNjg0ZTY4MTRiZmFiZGQ3NiBsZWdhY3ktdHJ1bmsKKzI0OTcyIDkzN2NjMTBjZDM5ZGYwMTc3YzFlMmNmOTcxODc4ODFlYjVhMGFlZjMgbGVnYWN5LXRydW5rCisyNDk3MyBkYThiOTk3NDY5ZTdkYzBmYjU4MTgxYjE1YTczYzM2NjgzYzQ0Y2Y1IGxlZ2FjeS10cnVuaworMjQ5NzQgOGRmYmZiYzkzMWI0YTY3Yjg5MWY0MjFkODg0ZmI5YzU4YWMxNzcyMCBsZWdhY3ktdHJ1bmsKKzI0OTc1IDA5NWNmZjIxOTU2Y2JmOTE0ZTU3MWU5ZWJlMmUyMGY0ZDU2YTIxMTYgbGVnYWN5LXRydW5rCisyNDk3NiBlYTg1ZWVhNmIyYjk0OWZkYTYyYjU2NTBhYmM5NTZkYjQ1MTU3MGFkIGxlZ2FjeS10cnVuaworMjQ5NzcgM2I0M2Y0MGFmMjdhOTg0YTFhNjYwOTEwZmQzMDAwZmM2N2JmYjBjYSBsZWdhY3ktdHJ1bmsKKzI0OTc4IGNjZWE4NzgyYjg0NzIzMWUwY2U4NGNjM2FiNzg0ZDRjMmJiODExZDUgbGVnYWN5LXRydW5rCisyNDk3OSAzYzhhOWVmM2I5NTQzOTYyZWI3ZGIwYjg1YzI0ZTQxMTZhMGQ5NTcxIGxlZ2FjeS10cnVuaworMjQ5ODAgNWQwMDllNWUxM2Y3OTllZWQ4NTQ0ODBjMGJjZDlmZDg2NWU4NWYxMSBsZWdhY3ktdHJ1bmsKKzI0OTgxIDcyNDZmZTVlNWEyODI3ZTJkNGU5OTBiOGM2YTkwZTE4NWJlMDQ3MzAgbGVnYWN5LXRydW5rCisyNDk4MiBkNTk0YTU4YjQ0NmQ1ZjNjZTRiYmVjZGRmMThlZjFkMDAxZDhlOGRkIGxlZ2FjeS10cnVuaworMjQ5ODMgMTQ5MWYxMTM3ZTBlYTU3MGU1OGFiNDljMjE4NzA0YzQxNWFmMzdkOSBsZWdhY3ktdHJ1bmsKKzI0OTg0IGJlODY5N2M3MGU3YzJlNTU0NDlhNTYyMTNiOWJiMTA5OTJiNTQwYjIgbGVnYWN5LXRydW5rCisyNDk4NSBhMzNiYjczMjQ2ODM5ZGI4Y2Q5M2M0NzEwNjRlN2JjYjM0NjIyMDQ3IGxlZ2FjeS10cnVuaworMjQ5ODYgNzU4MzM5ZGJkYWVhNzgyZDVmZTAxNTg4MzExNzAwNjI5NGM0NTEwNCBsZWdhY3ktdHJ1bmsKKzI0OTg3IGRlMWViY2VmN2QzMTA3ZTRiMzA4MjJmOTJkZWE1Mzc3MzE3MDVhMDIgbGVnYWN5LXRydW5rCisyNDk4OCAwNTFmM2I2NWRkYWI4NDk1YmNmMWIwNjY2ODJjYTI0ZWM0OGQ1NjM5IGxlZ2FjeS10cnVuaworMjQ5ODkgNmQ0Mjg4ZTg5MThiMjY3NGI4N2NmNDM4YjJkMzcxNzcwZTFiNTdiNiByZWxlYXNlMjItbWFpbnQKKzI0OTkwIGRjY2NiOWNlYTA1OTMxYTI1NDI0NzJjZDU0OWM1NjhmYzliMjA0YmQgcmVsZWFzZTIyLW1haW50CisyNDk5MSBkZmM5NzA0MDlmN2VkMDIzNDFmN2UyMmI2NzBmZmM1MjZmNzYzMzZiIGxlZ2FjeS10cnVuaworMjQ5OTIgNjZlMDA4MGM2ZGNjOTAxYjBiODRjYzg4MDNiNGE3YTg4NzQyNGE4YSBsZWdhY3ktdHJ1bmsKKzI0OTkzIDU4NjE4ODU1NzdlOTk3MDUxYTI5MjM1NTdkODAxYjJlNTg0MTU0MmEgbGVnYWN5LXRydW5rCisyNDk5NCA2ZjZmMGUxMDM1NjZkYzljOTUxZjZmMzI5OTA2ZmNiYjYyNGM2MDZjIGxlZ2FjeS10cnVuaworMjQ5OTUgNjNhMmZhYzIxMDRjOWE3YTJkYzUxMGIzZmU0YWI2MjVkMWRiNWUzMiBsZWdhY3ktdHJ1bmsKKzI0OTk2IDZhZTg1ZDgzODQ2NmEyNTdjZjUzYzNlNjFmMDNhN2Q5OGJjMGM2MTcgbGVnYWN5LXRydW5rCisyNDk5NyA5YzdkYTI3MmM5Yjk0ZTg4MTYyN2M3YjhhNjBmZWExZWZkM2JmNGE5IHJlbGVhc2UyMS1tYWludAorMjQ5OTggY2QwN2U4NDIzNWU2ZGIwMzUzZTFhY2ZjMDM5ZmQ4NjcwMWJhZjczMiByZWxlYXNlMjItbWFpbnQKKzI0OTk5IDJiNzQ2NTQzYWIzZDcyOGRlNDc2ODNlMmE0MThmN2Q1NTllNjU3Y2EgbGVnYWN5LXRydW5rCisyNTAwMCA2MjIxOWVkMjE1OTliY2U0ZDkzMGJkYjUxZGJmODJjOThjNzk3YzVlIGxlZ2FjeS10cnVuaworMjUwMDEgODUxZTRiZjMwMzU4ZWY4ZDAzZTA0NmNkMDkzYzE3ZDMzNmVlNGUxYSByZWxlYXNlMjItbWFpbnQKKzI1MDAyIGI3MmRhMDc4MGU3YTU5MmEyZTVjNDA5ZWJmYWYyYzM1ZGZhNjI4ZTIgbGVnYWN5LXRydW5rCisyNTAwMyAzYTRhMzRmZGZhODFhMDk2YmNhOGIxZGQ2OGFiYWEyMWE1OTZmNzQzIHJlbGVhc2UyMi1tYWludAorMjUwMDQgMzVlM2YyNDE4YjJkYTlmNmYyOThjNmM0MTQxMjZmYWViNGQzMjhkOSByZWxlYXNlMjEtbWFpbnQKKzI1MDA1IDNjMGJkMmYzN2E3ODhhMWZmMDRiZjlkNDUxN2Q5MmFlNWFhNTc2YzMgbGVnYWN5LXRydW5rCisyNTAwNiBhM2E2MmU0NDBmMmE2OTJkMGZmNzUzODBiMzEwOTRhOGQzZTg0MjBkIHJlbGVhc2UyMi1tYWludAorMjUwMDcgN2UyYTNhMmJhYzMzZmM5ODhmZTYxNDY2YmNmMjEyM2ZiOWVlZGM1YiBsZWdhY3ktdHJ1bmsKKzI1MDA4IGE1YmUwNzY1YzU3MTM2MTE5ZjU0ZTRhZTI1OGRlODQ1M2ViODRmMWMgcmVsZWFzZTIyLW1haW50CisyNTAwOSA5OTEyYTk2YzFmYjM5NGYwYzExNzcwY2Y3MGU2YWFlYzUzNzYyYTU1IGxlZ2FjeS10cnVuaworMjUwMTAgMTk1OTE3YjdhNjAyNDJmYjRkMDZlZjEzMDY1YjBkNzdjMTc2ZDU1NiBsZWdhY3ktdHJ1bmsKKzI1MDExIGViMDUxOWE0NjdhYmEyNGZkMDczZDhkZmFhNTZjMWYyNTY4NjRmY2YgcmVsZWFzZTIyLW1haW50CisyNTAxMiBlYzQ4Zjk2YzkyOTVkZGUwODBlZjI3ZWY0OWY1NGIxY2IzOTQwYWY0IGxlZ2FjeS10cnVuaworMjUwMTMgYzNjNmRlMTQ1MzA5OTZhNjZiYWNhMjc2ODk3YmM3YWZjMmZlN2MzNCByZWxlYXNlMjItbWFpbnQKKzI1MDE0IDY4ODM0YTY5NzQ2YTg1ZjdjYmJjMGQzZWYzODViMWYzMjgyMTJiMjUgbGVnYWN5LXRydW5rCisyNTAxNSAyOWIzZGM5MGJlOTVjYjQ4YWE1ZTViYjhkOTZjOTViNDUxMGI2ZGMwIGxlZ2FjeS10cnVuaworMjUwMTYgOWEyNjgyOTgyNmU5NzkyYjgxNzRmMzdiM2YxOWQ3OWM5MTA0MWFmYSBsZWdhY3ktdHJ1bmsKKzI1MDE3IDZiMGUxNmNiNjVkNTkyOWVkYzhkZjc3ODEyN2Y2MjRlZWE5ZGZiM2QgbGVnYWN5LXRydW5rCisyNTAxOCAzNGVkZGNhMWZkYTc5YTU1NDBjMjc5ZTQ3ZTBjYjYwZjdhN2MxZmVkIGxlZ2FjeS10cnVuaworMjUwMTkgN2M1ODJkMWI5Y2Y4MWUxYTRhYmIzNmYxYmE0MTUwODE2YTg0YTI3NyBsZWdhY3ktdHJ1bmsKKzI1MDIwIDIyZGFkOWZlMDljYTEzZGNmOTlhZDExZTI5OGYwMzE2YzI3MDlkMTUgcmVsZWFzZTIxLW1haW50CisyNTAyMSAzNjI5MTViMzg3MjQ0NGNjOTk0MDc4MzAyNTc5OTZjNmM4ZmZmNjliIGxlZ2FjeS10cnVuaworMjUwMjIgOWRlMzUwYTY1NDJlZGYxYTg3MTkzNDc0YjNlNjRiMmZjYWMzNjcyOSBsZWdhY3ktdHJ1bmsKKzI1MDIzIGI1Njg0M2MxNTI0OWIzOTg5ZWU0NTZkMzE4MzhiOTQ0ZTZmYzQxOTEgcmVsZWFzZTIyLW1haW50CisyNTAyNCBhOTExOTM0MTI2ZmQ4NjZkYzEwZmM5YTUwZjFmMTUwMmIyMzY3N2U0IHJlbGVhc2UyMS1tYWludAorMjUwMjUgNzI0OGMzNzUxM2YzNzVkZDMwMzA1NmI4ZDk1MjUxNjRjZWVkZDVjNiBsZWdhY3ktdHJ1bmsKKzI1MDI2IDgyMzkxMjllNzVkMGEwYWE1MjVjMjI3Zjk1ZjBiNTlkYTZjNGFhZjYgbGVnYWN5LXRydW5rCisyNTAyNyA3MmJiNzBlOTY0MGU0ODA0YjEyNmNiZDc1MWU0ZDU5NDkwZGQ1ZTY2IGxlZ2FjeS10cnVuaworMjUwMjggMGQzYmI2OGUzYTI4YTMyZTEyNjA2YWVmNGUzZGI1M2M2ZjhkYWU4OCBsZWdhY3ktdHJ1bmsKKzI1MDI5IDU0NGUyNjIwNjFhMzYyY2NkMjA1ODFjZjFlNzIxOTBiMjJlNTVhYjcgbGVnYWN5LXRydW5rCisyNTAzMCA2NDZmOGMwODhmNWQ4NDdlYjg3MGRmYWM5OGZlOTk0ZDdkOWMxOTlhIGxlZ2FjeS10cnVuaworMjUwMzEgODk3MGU3NDY2ODExMzNhODQyYTVhMDk3YTA4YzRlMjRjNWIyYmU3OCBsZWdhY3ktdHJ1bmsKKzI1MDMyIGZmYWJhYzUwOTczZGZjNjE5Mzk0ZDBhOGM2M2VhZWU2YjVjYWQ2YTMgcmVsZWFzZTIxLW1haW50CisyNTAzMyBhMWMzMjgzMzdjOGU4NDg4NjIyMDdjMGI1YWZlM2MyMjFmMGYwMWYyIHJlbGVhc2UyMS1tYWludAorMjUwMzQgODhjNDYzZjg3OWVmMjc1NWJiMzE0YjUyZTQwMzUzYjljNTcwYTUwMCByZWxlYXNlMjEtbWFpbnQKKzI1MDM1IDA2OGU4NzNmMDkzMmFhYmFiMzc4NDZkZDM4M2U0YzI2NTgwMzEyNGMgcmVsZWFzZTIxLW1haW50CisyNTAzNiAwOGEzYWE5NTEyZTk4MmIyMGFiODQwY2M2ZGI0OGEwMzE1ZjQ1NGUwIHJlbGVhc2UyMS1tYWludAorMjUwMzcgMjk5OTY4YzI3OWI5ODBkNzMxMDZkMWM5MjE4ZjU0Y2I3OTAyYTA4NCByZWxlYXNlMjEtbWFpbnQKKzI1MDM4IDNhNTUxNTA1MGI0MzZiYzUyM2Y2OTNjMTcxNTE2YzhhZGRjZmM2N2UgcmVsZWFzZTIxLW1haW50CisyNTAzOSBhMWQ2Y2Q5N2UzMTk2M2NlMmVmNmFiOTMxMjBhNzAwZTI2OGY4MmM0IHJlbGVhc2UyMS1tYWludAorMjUwNDAgZWRjMzUzMmZiMmI4ZmQwZmZkNjEwNjE5ZTQ4NmZkYWEwYzBhODNhNCByZWxlYXNlMjEtbWFpbnQKKzI1MDQxIGM0ZmU5NWZlYTNlNmZmYWZmMDJkMmM5Yzc5ZjJiN2IxYzg4YmVmNDMgbGVnYWN5LXRydW5rCisyNTA0MiBkMDVlYmJkOTY1YTM3MTI1Zjc0NzE1ODQ2Zjg2NmViOWI4ZjAzY2MxIHJlbGVhc2UyMi1tYWludAorMjUwNDMgMTE2ZTMyMThhN2NhNjA3YThlMjc3Yzc3MWFlMDRlYWJmODQzZTNjZSByZWxlYXNlMjEtbWFpbnQKKzI1MDQ0IDhiMjQ1Mjk3YzE2NmU2Y2MyNTZjYzJmMDNlMzhkY2E4ODIxMDg2YzMgcmVsZWFzZTIxLW1haW50CisyNTA0NSA1OTE1ZDQ1YjgwOTg0MTZmOThlMWZiNzI0OTA0MzU5MjFiOWQxNTFlIHJlbGVhc2UyMS1tYWludAorMjUwNDYgYTQ5YTY1YTk1ZTM1Y2QzNjljYzhlNmEzZGZhMjkwZmUxMWQyNTNiZSByZWxlYXNlMjEtbWFpbnQKKzI1MDQ3IDFlZGY1ZWQxYWYwODFhMDI1NWQwZTgxZjViOTNjYTg4MDM5MjI2MWMgcmVsZWFzZTIxLW1haW50CisyNTA0NyBmNzZhNDI1YjE0ZTRlZThhZGU1ZTkyMzk1OTg1Mzg1MzRiM2E5MGE0IHJlbGVhc2UyMS1tYWludAorMjUwNDkgM2U3OGJmMGUyYmU4ZDJkZGYxOTI2YmRkYzNjMjM4NDVmZmJiY2YxMSBsZWdhY3ktdHJ1bmsKKzI1MDUwIGRiMmMxMjgxMjVmNDU2OWFiOWJkZGJmMGFiYThhZDhmMmJiOWM1NmYgcmVsZWFzZTIxLW1haW50CisyNTA1MSAxMGQxZDdkNjM1ZDQyMmVmNzRhNGQ2M2JlOTU5MjcyMTc1YzNlMWFiIHJlbGVhc2UyMS1tYWludAorMjUwNTIgMmYzNjQ4NjAwZTYwMWZkZDk5NTljN2E0NTM5YjY0ZmVjYTY4YTA4NSByZWxlYXNlMjEtbWFpbnQKKzI1MDUzIDdmZTNlNjFhYmNlM2VhODJjMmQzYjQ5YWFmMjZlMWFhMTg1ZjhhOTAgcmVsZWFzZTIxLW1haW50CisyNTA1NCA1YzYyZWZiY2U0ZmEwNjFkZGRjODg2MTkzYzJlNjY2OTU3ODJiMTBlIHJlbGVhc2UyMS1tYWludAorMjUwNTUgZDc0ZGM0MDY2NDE2ODkyNDkwMjdlYzdhYWM3M2MyMjBlMTQ4ZTFjNCByZWxlYXNlMjEtbWFpbnQKKzI1MDU2IGFlZGQ4NTE4NzQ5NjQ4N2ViOTFjNzRiMWExNzI0YjI1NDBkMDYyYjkgcmVsZWFzZTIxLW1haW50CisyNTA1NyBjZTM1ZTU3MGZmYTIxZWJkYjA3NDdjNmM0OWZiMTM5ZGE3NjE3NDc1IHJlbGVhc2UyMS1tYWludAorMjUwNTggYTBiMzUyZTc2ODYyZGYwYzg5OTViZGI5ZTU3NWU4MGEyN2VkMzFmOCByZWxlYXNlMjEtbWFpbnQKKzI1MDU5IGVhMTc1NWQ3M2U5MjFhYzkwYTYwM2ZjMmUyZjZjNzgwODNiYTM1OTkgcmVsZWFzZTIxLW1haW50CisyNTA2MCAyZTIyODQ2MWEzOTFiMThkNzk2NWM1OTNjNGM5YzZhODJhNDNmNDFjIHJlbGVhc2UyMS1tYWludAorMjUwNjEgMzJjMWMwYWZjZjk4ZGM0YzdkNzg1NjQxYjZhMGYxY2M4NzdiMWRhNSByZWxlYXNlMjEtbWFpbnQKKzI1MDYyIDNiNTRjNDQ1MjRlYjYyNDM0Mzk2NjMzOWE1N2VmMjU3YmI3YWQ2NTggcmVsZWFzZTIxLW1haW50CisyNTA2MyA0OGVjZDYwNjFlODhkMGRiZTkwMmNlNjczYzcxNDNkOTFiNTM0NTNlIGxlZ2FjeS10cnVuaworMjUwNjQgNDAyNzM2MWU3OTU2YTIxZWZmOWYwNGIxMDgwODQ1NDhmMTg2NTQzNiByZWxlYXNlMjItbWFpbnQKKzI1MDY1IDc1MzFjYzU5MmU0NjNhMWY4NDBlZGQ1NzY0OGEwZTNhNjc4ZTI5ZGYgbGVnYWN5LXRydW5rCisyNTA2NiA0YTVhMDEwYzhmNDQ0Mjk5Nzk2YWRlNWRlMDVkYmE3Mjk4NGI3MjY1IHJlbGVhc2UyMS1tYWludAorMjUwNjcgYWE4M2ZlNmU5YzRmNWRkYzRmZTQxYjczYTExOGFjZTQ2YTU0OTJkNCBsZWdhY3ktdHJ1bmsKKzI1MDY4IDNiNzMzMjViMzJlNTk0M2ZiNDE3ZDU2ODY2MWRhODc3ZDQxZGJmOWIgbGVnYWN5LXRydW5rCisyNTA2OSBhNmEzMWM1NWExNmQwNTAwODhkMzdjNzU1NGFiYWFjNjkzMzhjYjhmIGxlZ2FjeS10cnVuaworMjUwNzAgODY2NjE1ZjBhZTJhNzI1OGQ2YjA0NTFmZWZkNGNiODFhOTdkZmY0ZSBsZWdhY3ktdHJ1bmsKKzI1MDcxIDNiZTQwZDNhZmY5NDVmNmE5MDM4YTM2ZjYzYWRjYmEzODE2YmUzZDYgbGVnYWN5LXRydW5rCisyNTA3MiA0MzczOTNlNzgwY2JmZjNkMzJlYTk0NDAyNDFjNDBhOGVjNDdmMDcyIGxlZ2FjeS10cnVuaworMjUwNzMgYzY0ZmM1NmY2MDcyNWY4OTI4MjgxZmNkMjRmZmEwYjk5YzBjY2YyOCBsZWdhY3ktdHJ1bmsKKzI1MDc0IGUyMjMzOTdiMjZmYTVhMjY1ZmRmMzQ5MmZmYWNjZWY4MGNlYTQxNTIgcmVsZWFzZTIyLW1haW50CisyNTA3NSA2MzAyOTNiZTEwMzU2ZTFiMDYyNzM1NmE0ZTc2MjM2OTc2Y2QyZmFlIGxlZ2FjeS10cnVuaworMjUwNzYgNGM2YzEzYWE4YTk5NzUyOWY3MDYyOGM1ZmY2YmNhNzU1MDFmZDY1NCBsZWdhY3ktdHJ1bmsKKzI1MDc3IDRlYWU2NmJlMWQyOTFiYTI3NDU5YWI2MTg3NmQyOGFiYzlhMzk0OTUgbGVnYWN5LXRydW5rCisyNTA3OCAxZDkxODIwMTI4YTFjOTljYTA4NDQ4ZTE5Njg5MjAwNjZkMDMzN2E2IGxlZ2FjeS10cnVuaworMjUwNzkgODFhODNhNjUyNDZkMzAwNmM5NjdhNGM1MjQ3Y2RkZTc4ZTM4ZjUzOCBsZWdhY3ktdHJ1bmsKKzI1MDgwIGVjNmI2N2QyODAzZDJmYTIyZGMxYzJlNWY4YjczNDA0MzAxNzJjZjkgbGVnYWN5LXRydW5rCisyNTA4MSBlOTkxOTgyMzRkOTZkMjRkNTRiNDkzMGNmOTA3MTFiMzhjY2RhNGRjIGxlZ2FjeS10cnVuaworMjUwODIgMjVlNDRhMDEyNWU0NTdjNmFmNjZkNzQ1NDZmNWI2NmU0N2ZlNjRhNCByZWxlYXNlMjEtbWFpbnQKKzI1MDgzIDllMTczY2IzNWI2ZGZkZDczZWQzNWIwZDFkZDYzNDJlNGI5M2Q5NTAgcmVsZWFzZTIyLW1haW50CisyNTA4NCBlYmU2YmQ1NzZmNjVkOWI4YWVlMDhjMjg5MTQzZTNjZDI4ODY2NWFkIGxlZ2FjeS10cnVuaworMjUwODUgODg0ZTU3YmYzYWRhNDEwNzNiNmU2ZDc5MThhYjhhZTIzMjA4OTNlMyBsZWdhY3ktdHJ1bmsKKzI1MDg2IDVkMmJmYmQ0N2YxYmUyYTAyYWZiMDIwNTI3ZDJjYWNhMTlkNmJhMjggbGVnYWN5LXRydW5rCisyNTA4NyA2Nzc2MWQ1YjRhZTZhMmVmMTU3MWRmN2Q0NjlhNTJkMGZlNTQyYzJjIHJlbGVhc2UyMS1tYWludAorMjUwODggNWEzMjlhMjU3MTk3Zjk1MmM2ZGRmNmRhN2M0NmRjYTg2NWUzYjA2MSBsZWdhY3ktdHJ1bmsKKzI1MDg5IDU0ZWNjYzVkMjJkZDI3NDFlZjg5ZjgwZTAwNTY4NTNlOWE4ZTYyMjYgcmVsZWFzZTIxLW1haW50CisyNTA5MCBlNjU0NzViNGYzY2Y4YjU4ZTY5OTRhNGMwYTlhYWFmNjc5ZTc4MjM3IHJlbGVhc2UyMS1tYWludAorMjUwOTEgM2UyNmY1ZGFjYmJlNjYyZjEwYjU5Y2Y4Y2M2MWY0M2YyNmM2M2E5YiByZWxlYXNlMjEtbWFpbnQKKzI1MDkyIGQ5NjMxODQzODExODcyODhkZjg5Nzg0MWYwNjZmZjY3NTlhNmFmNTMgcmVsZWFzZTIxLW1haW50CisyNTA5MyAzMWIyNTAxNDE3NGJkNmM4NDgyNDNjZmFkY2U5NDY2OTQ1ZTJkNzc5IHJlbGVhc2UyMS1tYWludAorMjUwOTQgZGNjYmQ3YmI1YmQ1Yzg1MTUzMzNlY2Q5Njk3NGY4ZjA5Y2VlOTI5NyBsZWdhY3ktdHJ1bmsKKzI1MDk1IGMzYTg2NDhiZjA5N2FiNzAxMjhiNGZiMWZlYTk2M2RjN2Y3NWIwNDcgcmVsZWFzZTIxLW1haW50CisyNTA5NSBjZjMxYjEwZTQ1YjQ4NjE1MDk0Y2FlOTBlM2M1YmQwNzI1ODdkOGU2IHJlbGVhc2UyMS1tYWludAorMjUwOTcgYmE4ZGI5MGVlZjRlY2FhOGExZmNiZTQwM2E2ZTNhNDhiMDg0NWRkYiBsZWdhY3ktdHJ1bmsKKzI1MDk4IDMwYTgxNzAzOGFmMGY0YmQ2ZGI2ODlkZDMwZDY2NTIzOWQyODg0MTkgbGVnYWN5LXRydW5rCisyNTA5OSBjYTFiNjdmNWEzZWNkOGY0N2I2M2E0NzdjYzVjZTAyZTlkZTRkNDZlIGxlZ2FjeS10cnVuaworMjUxMDAgMmI1NmFmNjlmNjdkZWQ5ZjY4NGZhMzM2ZGI2ZGY2MzgzZGI4ZTg3YSBsZWdhY3ktdHJ1bmsKKzI1MTAxIDhmNGNjODIxYWZhYTcyODNhNWU4ZTgxM2ZiMjU3NWQ5NTNmNDNmMjggbGVnYWN5LXRydW5rCisyNTEwMiBlYThjODQwMGE0YzhkMDBlNzRlNzRhYjRlMTgzZTFjZjYwZGY1YWI5IGxlZ2FjeS10cnVuaworMjUxMDMgOWQ1YWRmZjg3ZjMwMDIwYWEyYmQ4YzM0YjM3NTQ3YWM4NTBjM2EwYSBsZWdhY3ktdHJ1bmsKKzI1MTA0IDM0Zjg1YTBhN2ZhYWRjYjdkY2ZkOGRkOGVjNmFmMjBhYmM2OWUwYzUgbGVnYWN5LXRydW5rCisyNTEwNSA1M2ZjNmVjOGE4Mzc2MDViMzFmYzgwOTg3MzdlNzNlYjEwNTBjOTM3IGxlZ2FjeS10cnVuaworMjUxMDYgMWI3ZWMzOTVkMzkyNGY4ZjI5ZjU0ZGU0N2EzNzEwMmNmYjNkOTI5YiBsZWdhY3ktdHJ1bmsKKzI1MTA3IDQ0MmVmZjI5YjQ5ZjdiMzM2MzhmODMwNWIxZThlNzllMzZiMWNlNzggcmVsZWFzZTIxLW1haW50CisyNTEwNyBkODIzZmMxMzVlOTBlN2JiODQ1OTE1Y2VjOTAyNzdlYmZjZDJjOGQzIHJlbGVhc2UyMi1tYWludAorMjUxMDggNzQyNDZhMmQ5OTYyMjNlYzFlZTFkZWM5YTc0NmE4N2M5NzFlOTI1MyBsZWdhY3ktdHJ1bmsKKzI1MTA5IDY2MDVmMDc2Zjk1YTJkMDU2YzIzYzBjOGVkMTFlODc3NTJhZGFkN2MgbGVnYWN5LXRydW5rCisyNTExMCBjNGY3MmI0NzIyZGE2MzRkMGM1MTdlMDRkZTQzNGJiMmRlNmMzYTkyIGxlZ2FjeS10cnVuaworMjUxMTEgOWMwYTBjODk3NzNmMTgyYjAwNjU5N2VlOWY0OGFkY2ZlMTBkNmViYSByZWxlYXNlMjItbWFpbnQKKzI1MTEyIDlkNzcwOGRkY2ZiOTk4ZTI5NDkwMjU0MmViYzA1ZTM0MzZjZjY5NzggcmVsZWFzZTIxLW1haW50CisyNTExMyAxOWQ2Njg3NTFiMWVhZjAzNDMwMDgwNjZjNWUzY2I4Mzk1OWU0ZjQ0IHJlbGVhc2UyMS1tYWludAorMjUxMTQgY2ZiZGU4NTE5ZTUwMGUxMjMwYTNlNjc0YjNkMDNlYWUzMTkzMmU1MSByZWxlYXNlMjItbWFpbnQKKzI1MTE1IDBlZmY5NjFhMTViNTM4OGVlYjUzMWU0N2I5ZDM5M2RkZmUyYTk4NmEgbGVnYWN5LXRydW5rCisyNTExNiBkNjAzNTBkNzFiNjA1ODI4ZTViNjA0NGZmNzE4YjFhYzk5NzNhYTgzIGxlZ2FjeS10cnVuaworMjUxMTcgNDA2MzFhZTc0YjE3YmJhMjA1MWM4NzRiOTU5MmRlZTdmNWM0MzMwYiBsZWdhY3ktdHJ1bmsKKzI1MTE4IGNiNDBhY2E0MTg4OWNlNzczODVmNmY0NjhlYjkzOWVmMGQyMWZhYWYgbGVnYWN5LXRydW5rCisyNTExOSA3MjMzYjg2YmU2NTZlMzlmOTRlYTkyZjYwYjAzYTE0MjdiMWI1OWY5IGxlZ2FjeS10cnVuaworMjUxMjAgZGJiNzAzZWI2YjNkOWI0ZTBhM2VmYzhkMTdkYTk2MjFiMmUwZmI0MSBsZWdhY3ktdHJ1bmsKKzI1MTIxIDFhMjZkY2RmYjZjYzlkZWUzZDhkMzA5NTc1OWVjMmJlOTA0MzlhMzMgbGVnYWN5LXRydW5rCisyNTEyMiBhMWIwNjU4MjkzYTcwOTkxM2I4MTM5NGQ5NjUyMjVjYmJlOTMyMDVhIGxlZ2FjeS10cnVuaworMjUxMjMgNjUyZGM1MWI1ZjgzMjE4N2NiYWQwNzM0ZmY4NDBhZTE2NTFjODJjYiBsZWdhY3ktdHJ1bmsKKzI1MTI0IDAxMTBhMDk4M2U2MTkzMGNjMTA1ZDFjNDYxNzg0ZGY2ZjdiNDg1MTEgbGVnYWN5LXRydW5rCisyNTEyNSAzNjg1NjE1ZDIxYjMyN2Y1ODExZTY4ZDEyM2YwMjk3ZWMxNGEzNjY0IGxlZ2FjeS10cnVuaworMjUxMjYgOGIxMTZhODQ0OWJkNWVlZGZjODJjZmU3NjNkMmEyZDMyN2M3MjI5YyBsZWdhY3ktdHJ1bmsKKzI1MTI3IDhhMmNkMWMwYzEzNTRlYzhmYWQ2YjM4ZjIzMzVjMDBiODhmYTA0NmYgbGVnYWN5LXRydW5rCisyNTEyOCBlMjI3YzhkMDNkNmQ4YzI0ZDQ1NGM1M2E3MTYzMWRhNGZjZDA5NzI3IGxlZ2FjeS10cnVuaworMjUxMjkgZTZkNWM0Yzc0NWJjMDEzYzRmYzYzMTA4OGM1M2ZiMzE3NDQ1YTdiOSByZWxlYXNlMjItbWFpbnQKKzI1MTMwIDU3ODdmYzQ4YzJiNTVhNTA3MThhYTQwNmRmNGEzOTFiNjE4ZTA3ZjIgcmVsZWFzZTIxLW1haW50CisyNTEzMSA4ZTY3ZDkwMzViNjk5YWJiYTIxMTgxMmM1NTNiNjVlMmQ5ZGExOTViIGxlZ2FjeS10cnVuaworMjUxMzIgZWM3NTBlMzc2NzFiZTNlYjUyNWVkODhlZDE3ZTlkNGE5ZDU4MjAxZSBsZWdhY3ktdHJ1bmsKKzI1MTMzIGQ1YTM4YTMyZjc4YjUwY2M4NTg4ZWNjMjQ0NWE0MjM2N2M0ZTU1ZmEgbGVnYWN5LXRydW5rCisyNTEzNCAxZWQyNjhlYTJkMjYzMDM5MzM2NTFjNmYxYzEwMjFlNWU2OThjMTRlIGxlZ2FjeS10cnVuaworMjUxMzUgMTZjYzUzODQwMWIzZjA4MmRkZDhmZDU2N2U3ZDVhMjNkMWY5ZGIxYiBsZWdhY3ktdHJ1bmsKKzI1MTM2IDliZWMxODNmZWZmZjYxY2VkM2NjYWQxYzA1ZDZkM2YxNjBiMzk5ZWUgbGVnYWN5LXRydW5rCisyNTEzNyA2MzNlNjQ1NjRlZGZhMWFiYzVjYTJhNjU2ODYwOGZlYjE3OWI5ZjBhIGxlZ2FjeS10cnVuaworMjUxMzggZjg4NzM2MjVkOGY2MDRiNmZiZjU4M2QxZTMzMzM5Y2YwZTE5YzViMyBsZWdhY3ktdHJ1bmsKKzI1MTM5IDZmOTU4ZjQ5OWI0Mjk1NzA1MzY0ZTVjZWZiZjVjMTRmMGVkY2EyMDAgbGVnYWN5LXRydW5rCisyNTE0MCAwZmU4NzU4NjZkNGVmNTY4NjI1NTM4MWQ2YmJhNTg2NDNhNThmYzgyIGxlZ2FjeS10cnVuaworMjUxNDEgZGExN2ExMGUyZjIzMWM5MjA3NjU5NDJlYjViMjdhMTA2MWE0Y2IyNSBsZWdhY3ktdHJ1bmsKKzI1MTQyIDNlMGRiOTg0YmQzZTMwNGM3N2FlMTliM2EyY2RmOGZlYzg3YmVkNDIgbGVnYWN5LXRydW5rCisyNTE0MyAyYzY2MTdmMjcwZTJjOTJkYmJjZjAxZjBkMjFjN2RiNjQyMmNlZjZiIGxlZ2FjeS10cnVuaworMjUxNDQgNWE1ZDk0YzQ5OTc1MGUzZDNjYThjNTk0MzY4ZjVkZWI0NmIxNmYxYSBsZWdhY3ktdHJ1bmsKKzI1MTQ1IDZjNWMxMTJkNDUzMzliZDc3Mjg1M2JmODk5OTljZDFkODlmYTYxMjYgbGVnYWN5LXRydW5rCisyNTE0NiAxMzgzZTZmN2IxMWY5OWQ3NDM2OWVlY2I5MDNiMjkzYjUwMmJmNmMwIGxlZ2FjeS10cnVuaworMjUxNDcgM2VmN2JlZDAwN2Y2ZWQzN2MyOTY5OWY2NGNlYzAzZDg2NzdkYTQwMCBsZWdhY3ktdHJ1bmsKKzI1MTQ4IDA1ZmFiZDhmNGU3ZjhkNjVmM2QxYjBhYTUzMTVhZjk0MmE0ZTIwNjIgbGVnYWN5LXRydW5rCisyNTE0OSAxOWUwYTkyZTMyNzc3ZWQ2ZmE1ZGMyN2NmYmY5ZTg4NzFhNzVlZGZiIGxlZ2FjeS10cnVuaworMjUxNTAgNmE4YzQ2ZDgyMTJiYzY3YjI5MmU2OTgyZTc1NDE0NjcxMWYyOWFiMSBsZWdhY3ktdHJ1bmsKKzI1MTUxIDk1NzYwYWIxMTg3NTVmNTcxZmIxZGM5ZTQyM2I5NzhjOGFhZDQ1OTcgcmVsZWFzZTIyLW1haW50CisyNTE1MiBhNjhiYTc1NWQ3MDBlNWUzMWFjZmVmNDE4ZmYyM2ZlNTNjMjhkZTJiIGxlZ2FjeS10cnVuaworMjUxNTMgY2UxMGE3Zjk2N2U1YTdiZGI2MjRlYzczZDY0MDhhNWQxMzU1OWI0ZCBsZWdhY3ktdHJ1bmsKKzI1MTU0IDQ4M2Y1ZjI3MmRlZmM2ZjQ3ZTQ5OWMzZjY5Yjc2NmJjMWUxNzQ2MDMgbGVnYWN5LXRydW5rCisyNTE1NSBjODg4NjIwZTgwNjJjN2M3ZDBmNTA4YjAyMThiMzM5YTM3Y2E3MGJhIGxlZ2FjeS10cnVuaworMjUxNTYgMjZhNTRkM2Y1NWU0N2ZmMzU0NzM0ZmEwNjVjNTljM2VmY2E3YzU3MCBsZWdhY3ktdHJ1bmsKKzI1MTU3IGU3ZDhhOWRhM2IxODA0MGI3ZjMxMmRiMzZkODhmZDRkZjIzYTM4MzUgbGVnYWN5LXRydW5rCisyNTE1OCAwM2EyYmE3NDE3OWI5ZjE1ZjBkYWM3M2JiNzRhMGIxYTUyYTA4MjFjIGxlZ2FjeS10cnVuaworMjUxNTkgYWRjYzE0MTQyNDMyZTgxNGUyMDc1NWFjOGQzYWVmMDU0YzNkZDJjNSBsZWdhY3ktdHJ1bmsKKzI1MTYwIDI0MDk4ZjRmNjgyZWQxNmZlZjE2ZGZhMjI5NTJiZmU3NWQ3ZmFhMGIgbGVnYWN5LXRydW5rCisyNTE2MSBmYTMwNTFlMGZkOTMyMTIwOWY3ZWE0NjdjNTc0OTgwODI4Y2FiMTQ4IGxlZ2FjeS10cnVuaworMjUxNjIgMmM4YjAzZWQzOTA2M2E0ZTMwZmUwNTU0ZmU3Njg0M2FhNDU3ZjY4YSByZWxlYXNlMjItbWFpbnQKKzI1MTYzIGUwZGJkMTc1NGFhOTA4YzE3YzE1ZjhlMzc1YjhiNmFhMTJjOWMwNjcgcmVsZWFzZTIyLW1haW50CisyNTE2NCBhYWU5NzdjYTU4YTNhN2IxZTEzZTE0MDIzNzZiOGJiN2UyNDMwM2IxIHJlbGVhc2UyMS1tYWludAorMjUxNjUgMzQ1YjkyZWQyYTNmYjdhYTJmYzlhNTQxZDRkYzk0NTZmYjU4MzVlMyByZWxlYXNlMjEtbWFpbnQKKzI1MTY2IDkyNjBmNjk0MzJhOTNjOWE3ZDRhZmQyMmU0YjE5NWMzMjRjNjEzNDggbGVnYWN5LXRydW5rCisyNTE2NyA1OWQwOWJhMWY3ODJjOGY4ZWFmM2FlMTdiNjA0NWZmYjg3MTU2MWExIGxlZ2FjeS10cnVuaworMjUxNjggNjNjYmE0MjNmYTA0MGJmMTA1ZjJjODhjOGIxOGU1MzA3MmQxOWRjNSBsZWdhY3ktdHJ1bmsKKzI1MTY5IDc0NDE1MzNhY2EzYmI5YmY2MDUzZmU4YmY5MWQ5MzZjNTE3ODk0MmIgbGVnYWN5LXRydW5rCisyNTE3MCA3YTExYmZjNjYyMTQzMTcxMzdmMzU2MThlZTBkNjQ1NTlmMWNjM2ZmIGxlZ2FjeS10cnVuaworMjUxNzEgNDQ0NTkxYWZmZDBlMDNjYzMwNmM2YzY2MzQ5YzY3ZjRmYzViZDM4OCBsZWdhY3ktdHJ1bmsKKzI1MTcyIGZmYzQxMTZlYzExOWY4YWJjZDliZjllZmI2YjcwYzAzYWQ0MTc4NWYgbGVnYWN5LXRydW5rCisyNTE3MyBmM2IwZTNjYjM0MGIzMDIxODkxMDkzM2M5YjljYTE4MDYyYWM4YjkxIGxlZ2FjeS10cnVuaworMjUxNzQgMDVlNjMxMTFjMzEwNmUwZDliYTNiOTg1ODhmMzYzMzYxNTQxNzQyOCBsZWdhY3ktdHJ1bmsKKzI1MTc1IDkwNTIxM2UyODY3NzU3MTNjZmYzZTZiYWE1Y2VkODMxMjVmYjI4MDMgbGVnYWN5LXRydW5rCisyNTE3NiA5NjljZTAxN2JkM2ExNzViNTUwNTQ1NjIxOTk1ZWJhYjM2YTQ0MzczIGxlZ2FjeS10cnVuaworMjUxNzcgM2E3MDc1MjBkZTMwOTNlN2Y4MWE5ZjgwMDBjZDNiYzFjMDA0YzU3YyBsZWdhY3ktdHJ1bmsKKzI1MTc4IDkwYzFmM2YzN2RhZTQ2YTg1ZmU3MmY2YjEwYmZmNjE3MWRmNmI4MjkgcmVsZWFzZTIyLW1haW50CisyNTE3OSBiMTJkY2QyNzZkYjBmZDIzZTllZTlhMDc5ODEzYTBiMjFkZTI0ZmIzIHJlbGVhc2UyMi1tYWludAorMjUxODAgYTRlNDczNjc5OWIxOGYzNjlmN2ZjYjIzZWJlMDllNTRmMTJjM2ZlZCByZWxlYXNlMjItbWFpbnQKKzI1MTgxIDFkODZjZGIxNzI5MTYwOWVkMGVkYzMxMTBmNTMyMzI1YzRmZDdkOTAgcmVsZWFzZTIyLW1haW50CisyNTE4MiAxNGRhN2RkMzdjOTRlNmE2NDhiMjgzNzkxYmVmNmVmZjI0OTEzNDVhIHJlbGVhc2UyMi1tYWludAorMjUxODMgZGZmMjI4YWQxN2I5ODM1MjVhMzc2NThkZmNlODEyOWVjYWUxYjQyMSByZWxlYXNlMjItbWFpbnQKKzI1MTg0IDZmNDU1ZDQ5MTg3MTVmMzcxOWVmN2Q4M2Q2MjE5YzAxMTViNzlkMTUgcmVsZWFzZTIyLW1haW50CisyNTE4NSAwNmY4YTgyMWI2ODNjZDEzNTU1YzhlNThiYzFmODBhOWZkYzMzNzMyIHJlbGVhc2UyMi1tYWludAorMjUxODYgN2U3OTY0YzY4MmI1NjIzOGZjYmQzMzM4OTc3ZDYyNTJlZDE2MWRhNyByZWxlYXNlMjItbWFpbnQKKzI1MTg3IDdiYTJhOGMxNjJmYTI2N2E3NzNhMTUxYjMxMjA1NWM5MDUzNGY4MDQgcmVsZWFzZTIyLW1haW50CisyNTE4OCA5YjQxNGRmNDhlMTQ3ZTk1NzQ0NDIxYzYxODY1NmM1ZWNmOGM3NzNlIHJlbGVhc2UyMi1tYWludAorMjUxODkgNzMxYmViNjdmZWM5MDE3YTkyNmIyNmY5YTZmMmI1OTA0Mzc0OGUwZiByZWxlYXNlMjItbWFpbnQKKzI1MTkwIDVjYWVhMmIxMzJjYTE4NWUwN2UwYmZmNTBkOTNhNzM2YWY5MTk2MjUgcmVsZWFzZTIyLW1haW50CisyNTE5MSA0ZjU0ZTlhMjk3NmU2YzIyMWNkNjA2YmZhOTZjNzAxMGE4ZmMzZjk1IHJlbGVhc2UyMi1tYWludAorMjUxOTIgYWE3MTNjNGM0OThkZWRmM2RiMjBmYTU3MTdkMDI3ZGFhNTlmOTc2NCBsZWdhY3ktdHJ1bmsKKzI1MTkzIDA3MGQzOTIwNDJlM2VlZjY3MDJjNTE4NzhiY2VmMzM3MmVkYjhhMjUgbGVnYWN5LXRydW5rCisyNTE5NCBjMWQ1NWE2Mjc4OTc3NDAzNzdjZjFlN2YwYzA5ZWExNGNjZGQ3YjM3IGxlZ2FjeS10cnVuaworMjUxOTUgZjM3OWJjMGM1ZTNmYzk3MjQ3M2M2M2UyOWIxZTVjMWQ0OTY4YzQ0ZSBsZWdhY3ktdHJ1bmsKKzI1MTk2IDZhMWU3NGFkZjhkNmNlYzRkMmMxMTI2Njc5NjY1ODE5ODdhOTAwOGMgbGVnYWN5LXRydW5rCisyNTE5NyAxMWNjMDU5ODU3NGQ4MTg0NWYxOGMyZGJmY2VhMDMyM2ZmZmY1M2FiIGxlZ2FjeS10cnVuaworMjUxOTggZmMxMGU3MDIxOGQzYmUzYzI1ZmNhMzM4OWUzNzQ0YzVhZDkxZjYzMCByZWxlYXNlMjItbWFpbnQKKzI1MTk5IDVlNjdhZDc2YzcyZmRhZGJjOGE3MTQ4MDk5OTQ0YWY3YmM3NjY1N2YgbGVnYWN5LXRydW5rCisyNTIwMCBmZDQxODRkYTA5ODMwZjZkY2IwYjUxZjZhMTQzMjYyMWVlYjE2MTllIGxlZ2FjeS10cnVuaworMjUyMDEgNGIzYjA2ZGUwMmEzMTE1YmMwNDA4ZTVhZjU1YzM2NzY0OGVkMzE5NSBsZWdhY3ktdHJ1bmsKKzI1MjAyIGZlMmI2NGZjNTdhMGEwZTQwZmNhZTg2MGU0YTJiOGMwMzdkYjQ1NjUgbGVnYWN5LXRydW5rCisyNTIwMyA0M2Q5YzJmOWEyZjZiYzAyMTczNWQ5MDYyM2JiYWU4ZTc0NjM4NjVjIGxlZ2FjeS10cnVuaworMjUyMDQgNDhiNTlmYTZmNjQ3MjJkNWVjZmM3NThhMWM0ZmM1MTQxMWYyNjg4MyBsZWdhY3ktdHJ1bmsKKzI1MjA1IGE5M2E3YmNiYzM4NmZkNjg3OGFkYTQwYmIyNmQ5YTVkNTY3MGNlYzggbGVnYWN5LXRydW5rCisyNTIwNiAyNmI3NThjMDBmYjYwNjQ1MzExMTZjMTEyY2I4MWRlZjQ4N2NmOTUyIGxlZ2FjeS10cnVuaworMjUyMDcgNDU3MzFmMTM2MGVlY2UyNjViOTJmZjM1OTY4NWQ1ZmM4ZWQxNDMwMSBsZWdhY3ktdHJ1bmsKKzI1MjA4IGZkNDI0ZjUxOWE4ZWJlODNlODYwMzgzZTE0OTVmZDU3NTA1NWU0YTEgcmVsZWFzZTIyLW1haW50CisyNTIwOSBmYWFhZWI1MzVkMzkyZTdlMGRiYWZiZTM2ZDQ2YTVjODY4NzZiMjEwIHJlbGVhc2UyMS1tYWludAorMjUyMTAgMGQwOGNiODQ5NTExODA4YTM5ZGViZmRlZGU3N2Y4ZDM2NGZiNjRiMCBsZWdhY3ktdHJ1bmsKKzI1MjExIGUwZmMyODZkNTdhNDZjZDZhNzg3YWE1YjkxZTE5ZmZiMmE2NGFlZjYgbGVnYWN5LXRydW5rCisyNTIxMiA5ZTM4NGYxMDMwNDcyMTA4N2VmNzViMWQxZjk1NjgzMmI2OTI1YTlmIGxlZ2FjeS10cnVuaworMjUyMTMgNjU4M2M5NWNmNjkyMjQyZGIxMzlmY2QwZGFiZDliMDhiODU5MGQzYiBsZWdhY3ktdHJ1bmsKKzI1MjE0IGM0MzNkZTE3YzE1ODNhYWE3ODI4ZWM4ZDZhMDU4Yzk2ODQ3NjFiNzYgbGVnYWN5LXRydW5rCisyNTIxNSAxZjJlOTI4NTAxODg3Mzg4ODlhYzNiMGQ5MDVlZmEwMjZjMmU4MzVmIGxlZ2FjeS10cnVuaworMjUyMTYgMmY2MTY0NzRlYWVjN2RmNWFiMThjNTczMzYyOWNjMmQwODlmNmNjZCBsZWdhY3ktdHJ1bmsKKzI1MjE3IDljZmY4OTBiNGZiMDc2YTgzNTFmM2RjYWYwY2U2NzA2ODRkNmUzMzAgbGVnYWN5LXRydW5rCisyNTIxOCBkNTIxY2YwODk5YzgwM2I1MmIwZGFlZDQ5YjdlOWQ4NTg3YjcyMTU1IGxlZ2FjeS10cnVuaworMjUyMTkgNzY2MDdhMGM2OTU2MDhmNTc2MzA0NDMzODZjNDY4NDFkMzRlYTFhNSBsZWdhY3ktdHJ1bmsKKzI1MjIwIDIwYmM0ZmYxMjE1YzBmZTcwYzg3NDAxNDBiY2ZiNDc0Mjk0ZGQwNjcgbGVnYWN5LXRydW5rCisyNTIyMSBmNWFhYjhlYjgxMjQxNTdiMmRmYzk4YTUyYWFjYWI2ZDAyMTQwYmNlIGxlZ2FjeS10cnVuaworMjUyMjIgNTNhYzgyODQyMTdhZmQxZmE3MzNjZjIyOTVlMzM1MTcxMTgxMTMyNyBsZWdhY3ktdHJ1bmsKKzI1MjIzIGNiZjQxOTI1ZGQzZTkzMTcxYjBkZDkxNjFhM2ZmNjBkYmFiODZmN2MgbGVnYWN5LXRydW5rCisyNTIyNCBmNzA4YTkwN2RjNjkxYTdhY2IzODc0NDE2NDBkMzRhNmFjMzZhZjE0IGxlZ2FjeS10cnVuaworMjUyMjUgNTNmZWNjOGRkNGM5MDVjY2M3NzVhZTM0YmRhYzU4MzcyNDcwOWVlNCBsZWdhY3ktdHJ1bmsKKzI1MjI2IDZmNjJkNTFjOWMxMjgxOWFkMzM4ODg2ODliMzliYTBjOTNmZGY5MjQgbGVnYWN5LXRydW5rCisyNTIyNyBkYTAwOGI1YzUwMzVlYzA1ZGI1Mjg5MTEzYTQzMjVkYzdlY2JjOGVkIGxlZ2FjeS10cnVuaworMjUyMjggM2NkMGI0YmI1ZTM0ZDI0OWFhYzM4MTc5MzU3MzE5YzRjMTlkNzlhYSBsZWdhY3ktdHJ1bmsKKzI1MjI5IGI1ZDAwMmU5MDgyN2UwNmZlN2RiMWJiNTA5MzIwMDkxNjg4OGI2MWMgbGVnYWN5LXRydW5rCisyNTIzMCAwNDJkYjAzODJjZDNiODMyZjVlY2VhY2VkZTZjMzYzMzE1ODZkZDliIGxlZ2FjeS10cnVuaworMjUyMzEgNTA0M2I3MzhiMDcyMGMzZjBlMDRjMjc1MjY4MGU3ZjI0NDllYmM3MiBsZWdhY3ktdHJ1bmsKKzI1MjMyIGVkODYxZTBkNGE3MWQ0ODY2Y2U2MTUwMzA4YTQxYjczNDBmYzc2OGQgbGVnYWN5LXRydW5rCisyNTIzMyA4NDRmZTcyNWIxY2Q0MzEyOGZmNWZmZmZlYmIyZjU0NjlmMzY1NjhmIHJlbGVhc2UyMi1tYWludAorMjUyMzQgNGQ3MjEzNTdiZGRiNWE4YWY1Njk5ZTZjZDk0MmVlNmYzNTYxYWE1NiByZWxlYXNlMjEtbWFpbnQKKzI1MjM1IDdmYWYwZmRkZjdlNjhhYWZjOWQyYzYyNzYyNTNhN2U1MjZmMmE1MTcgbGVnYWN5LXRydW5rCisyNTIzNiA3OGUzNmYwNTIzYThjODU4YTNiZDczMTcwODFkNTZmZDJhOWY4NTU5IGxlZ2FjeS10cnVuaworMjUyMzcgZTQ4ODQ2NzE3YzI2ZjNjMzY4YmM3OTdhNjFiNTNkNDdkNmJkY2VkYyBsZWdhY3ktdHJ1bmsKKzI1MjM4IDQ5ZDkzNjg5NDAyYjU0ZTAxMDRiYzMwZjY0NDJkNzM3Y2UyZGY4M2IgbGVnYWN5LXRydW5rCisyNTIzOSA4ZGFmZTRhNzhjYWM0NjUxNWE2M2Y1NDAzNDM3MDQ2NDhmYWQzMTcyIHJlbGVhc2UyMi1tYWludAorMjUyNDAgMzVmODQ4OTNhY2Y3NjljOGQyZjAwYTA5MTA5YWE1YjFiYzQxYjA5NyByZWxlYXNlMjItbWFpbnQKKzI1MjQxIDFjNzY5MjE3YzEwNTlmM2ZlMzM1N2UwY2U4OTU2NTQzNjc1MzYwZjEgcmVsZWFzZTIyLW1haW50CisyNTI0MiA5NGJhYzg4ZjE1MGYwMDEwMmY1NDAyNmJhNGYyMWFhOTQ2ODYzYjQ0IGxlZ2FjeS10cnVuaworMjUyNDMgMGE4MTNhM2RkYjkyZGQ5Y2FmOWE1YjFjMmIyM2U4YjJlYTU4YjY1NyBsZWdhY3ktdHJ1bmsKKzI1MjQ0IDA0Y2Y0ZTEzZTVjOWZiMzRlZDc0MTMwZDVkMTlhYmY5MmMxNWU2MGUgbGVnYWN5LXRydW5rCisyNTI0NSBjODI4NmNjNzAyYzk5MjRmMWUyYjIxM2NmZWVhZTIyMDJmZGQwNDAyIGxlZ2FjeS10cnVuaworMjUyNDYgYWJlZGIyNDE4ZjYyMzFhZGYyNDIwNTA5MmE1OTk5NmYxZjFlNGMwMiBsZWdhY3ktdHJ1bmsKKzI1MjQ3IGUxMDg2OTcyNmNkNDFiNzJhOGIxZjkxZGMwYWYzYjMzZjRmYzc0NTUgbGVnYWN5LXRydW5rCisyNTI0OCA4MzZjMWRiZjIzYTBlYTk4MWNkZjYzYjNmNzFkMzU0MjY0YmNiZjFlIGxlZ2FjeS10cnVuaworMjUyNDkgMTk4MzRjZDEwMWQ5MWI1ZjMyNmU0NTFkOTE0MmU5MTE0YWFlZmQwNyBsZWdhY3ktdHJ1bmsKKzI1MjUwIDY0ZTVhMzlmMWZmMDk2MTU4MmY2MWEzOTU2MjdhNWJiNWQ0MjVmNGUgbGVnYWN5LXRydW5rCisyNTI1MSAxN2E1NmUxYzZmZjhlMjdkMmQzZGQ5NjUzZTRiMWQwNmMxZjg5MjVhIGxlZ2FjeS10cnVuaworMjUyNTIgOGVkN2M2MWI1ZjFiYTM1YjE1YTFhNGI1MTkzMTEyNjYyMWJjYmU1NCByZWxlYXNlMjItbWFpbnQKKzI1MjUzIDg2MTNkZjE3ZjE5YmJkMzhlNTkxNDE4Yzg0ZGQxZjIzYWMxMTgwMDcgcmVsZWFzZTIyLW1haW50CisyNTI1NCBmMjQ1OTU1YjNmYmU3ZjRhMmMxYWFhYjIyNTBhNWRiNmZiNTc4ZDFiIGxlZ2FjeS10cnVuaworMjUyNTUgMjFmNTlkOWVkMTY5ZjRkYjA3NjNiODNjZTAwNDdjMGRkODFlYTUwMyBsZWdhY3ktdHJ1bmsKKzI1MjU2IDkzNzM0OGVmMThiODU2MDQyM2E4OWU2OTI1ODE0MGI0NjlhMjE3M2YgbGVnYWN5LXRydW5rCisyNTI1NyA5OGU5MmE2NGU3M2MyZmY3NTFlYmFiMjU1YzFmOGQxNDUxYzNlNmUxIHJlbGVhc2UyMi1tYWludAorMjUyNTggODZmY2Q5NDM4Y2JlYmQ3MTgzNzhlNTRlNjRiMjJiOWVjMjI1ZWE5YSByZWxlYXNlMjItbWFpbnQKKzI1MjU5IDRiNWMyOGE2MmQxNmU0YTRmNzhjM2I0ZDNhMTI3ZjBiYTM3MTE4NTQgcmVsZWFzZTIxLW1haW50CisyNTI2MCA1N2VhYTVkNjlhYzM1ZjUwZDgwYTdkYzBkMGZjNDgzMGYxZmI5ZTViIGxlZ2FjeS10cnVuaworMjUyNjEgNGMxY2NmMzYwMjVjZDk3YWFkZDBlYTEzMTY3ZmFmY2Q0MDFjOTAwNCBsZWdhY3ktdHJ1bmsKKzI1MjYyIDFmNmJjNDk4ZTZlNTZlMmZjNTVlNWVmM2QwNDQwYmZhMjdhN2Q4M2UgbGVnYWN5LXRydW5rCisyNTI2MyBjMDUxOGFkNzJiOTJlMGFhOWNhZGE1MTA2NzA1NmI3ZjcwZWUwMDEwIGxlZ2FjeS10cnVuaworMjUyNjQgZjAwNzgxZDY2NGE5YTRiNDMxZWJiMDdlNDNmYTE2OGQ2ZDc0NzViOCBsZWdhY3ktdHJ1bmsKKzI1MjY1IGRjYzA3NzhlYjdkM2I0MWMxNzgyYWNiZDM2N2QxMDEyMzY1NTE1ZWIgbGVnYWN5LXRydW5rCisyNTI2NiBmODgxZTA2MThkZjBhZjY2NTBkMTFkNjc2NWE0ZjMxNGVhNzdjNDU5IGxlZ2FjeS10cnVuaworMjUyNjcgN2Y2NTIzYjMyMTc5MjYyM2E2MWMyNmYwYjMyNTI3NmQ0MmUxOWYxMSBsZWdhY3ktdHJ1bmsKKzI1MjY4IDE2ZmFmNjg3NTAwNDUyZjlkMmIzMzExODNjNGVhNmFlYmUxNmNiZDUgbGVnYWN5LXRydW5rCisyNTI2OSA3YzMwY2IxN2MyZjY1NmQ3YTA1MzZlYjllY2MzMjdlZjIwOGRjZjJjIGxlZ2FjeS10cnVuaworMjUyNzAgMTZjMmFlMzY5ZDcxNWUyZTlmNjdmMDZmMjE1MjhmM2U5Y2JlMzIwMCBsZWdhY3ktdHJ1bmsKKzI1MjcxIDc5NGZlMzdjYTVmNGU4YjU5OTYzYjE4ZDc3YTZhZjNiZjhjNjM2MDMgbGVnYWN5LXRydW5rCisyNTI3MiAxNTE3YjQ1NDdiODc2NmNhMzg3NTA1M2Y1OTBkODE5NTk2MjFiNDAzIGxlZ2FjeS10cnVuaworMjUyNzMgOWQyYWU4NTMxOTQ0MDQ1ODgwNmU0ZmQ5YWExMDM4YTQ4OTE4ZjI4YSBsZWdhY3ktdHJ1bmsKKzI1Mjc0IDBjNjk5OTJjY2UwOTk0NmQzODk3NWYyMzQxM2Q2MDFmNDc3MGE4ZjEgbGVnYWN5LXRydW5rCisyNTI3NSBlMTYzNzEzYjQ3Y2YyMWIxM2NkOWI4NTkxYTZkYzE1YWY2ODJlZjJjIGxlZ2FjeS10cnVuaworMjUyNzYgMTVjMGU3YWVmNjY2ZDE4ODNjMmQ3ZTVmNzJjOWI4YTQwZGZkY2NlOSBsZWdhY3ktdHJ1bmsKKzI1Mjc3IGI5ODE1ZjRkOGJlMzU4NTQ5NTZmZjJmNzdhOGU2NjJjYzgxOWEzZDIgbGVnYWN5LXRydW5rCisyNTI3OCAwNzZlOWRjNzdhYWRiMzg1NzAyMzY1NWY1ZWY1MTBkODg5ODliN2M3IGxlZ2FjeS10cnVuaworMjUyNzkgYzM3NjM5NzYxMTJkNWFmZmJiOWU0NTU5ZjkwMTAyMTg1ZDk1MzZiNyBsZWdhY3ktdHJ1bmsKKzI1MjgwIDU5YmI0M2I2ZWIxMWYyNWZjOWM0MjBkZjIzZTI5ODY5N2Q4NmE5MTYgbGVnYWN5LXRydW5rCisyNTI4MSAwZjVkZmEzM2Y5ZWU4NGUwZDZjMDc4NzY1NGNhZWMwZTJiYWI0MTE2IGxlZ2FjeS10cnVuaworMjUyODIgZjdhYTMyN2ZmMGZlYjkyNzFlM2VmZmEyYTY0OWU2OWUxZjhmOGQwMCBsZWdhY3ktdHJ1bmsKKzI1MjgzIGVmYjZlNjE3YWVhMzlkZDFhYWE3ZjFjYzhjOTBlYTQyMTU2YWM5MGYgbGVnYWN5LXRydW5rCisyNTI4NCA4N2FmZjY0OGQ5OTRlMjM3ZGMyNmVmNjZkNDQ4MmE1YWZkNTJhOGRhIGxlZ2FjeS10cnVuaworMjUyODUgMTA5N2Y3MzAyOTRiMmM5MGE5YzdhYmY2MjU1M2NiY2Q3NWJlYTUzYiBsZWdhY3ktdHJ1bmsKKzI1Mjg2IDlmNmUwY2YxYWIzMDk3YTE1NWU3NWZmMmYxM2Y4ODdjMTA5MjU2ZGYgbGVnYWN5LXRydW5rCisyNTI4NyAyNDQ4MjkyMWE3OGE5YjkyZDRhNTk1ZDk1NjY1NGRmNDdiNjRiMzFjIGxlZ2FjeS10cnVuaworMjUyODggYTEzYmYyZjcyNjI5YWI2OGE3MTMwNzU0YzdhNWNkMTY2MDhkNzQxNSBsZWdhY3ktdHJ1bmsKKzI1Mjg5IDdlNzE1OWMwMjgzMDkxZjhmZWI3YjBlZWJmNjBkNWNmMTJlYjIyYjQgbGVnYWN5LXRydW5rCisyNTI5MCA4OGUyMTdlNTA1M2ZlNDQ3ZGZkZDA3OGY1MGIwZTRhZjQ3ZGUyZjI4IGxlZ2FjeS10cnVuaworMjUyOTEgNzc4MjQxNTgxZDRhMzU2YzYwMzgzZWVkNmRiNjA3NjAzZGQwZjI5YyBTb3VyY2VGb3JnZQorMjUyOTMgN2YzNWJiOTJmYmY3NTM0ODAyYjg5ZDdlZTk3ODc4OWM2MDM2YmRkMCBTb3VyY2VGb3JnZQorMjUyOTQgN2Q1YjJjNjc5ZjNiY2QxM2Q2ZjY4YTA3ZmVhZjdjMTEwZDdiNjA1NSBsZWdhY3ktdHJ1bmsKKzI1Mjk1IGFiNjhhZDQzZDUxNDM1ZDYxMDNhNTU1NGI0ZTMyODg0MDliMGIxZjggbGVnYWN5LXRydW5rCisyNTI5NiBiMzg2MjliOTE1NDUxMmJhY2QzMWQxNDM0ZjUxYjc2NWUxMTkwODY3IGxlZ2FjeS10cnVuaworMjUyOTcgNzFmZmM5ZmI1OTg2ZjU5NTMxYTA4NTljZTAwMmJjOGU5OWY5ODZhNCBsZWdhY3ktdHJ1bmsKKzI1Mjk4IGUyMGQxMmI1ZGFkMWMwZmM2MjNhZWZlNjA4NTBmZDRiMDgwNmNmMGYgbGVnYWN5LXRydW5rCisyNTI5OSBkNzQyNzk4Y2Q0YjRhNDZiOGM0N2E3MTlkY2Y4MDEzYmE5YjY2NmQ3IGxlZ2FjeS10cnVuaworMjUzMDAgODI5OGU5YzUzNWRhODRmMTkzNWZiNTJmMjYzZWUxNWUwNjJmOGVkYiBsZWdhY3ktdHJ1bmsKKzI1MzAxIDRhYjI5YjA2YTc2Y2JhMGUyMmM0OGEyM2ExNTMyNWZiNjYyNGE0ZTAgbGVnYWN5LXRydW5rCisyNTMwMiA2YmRmYzlmNmYwNTkwMzJkNWVmZmM4MDhiNGIxYWU2MTAxNGYzNjIxIGxlZ2FjeS10cnVuaworMjUzMDMgMzJkMGVmNmYxOTU1NzA2MmMyYjAzMGE2MDgzYmRmOWMwMDFmMjExNyBsZWdhY3ktdHJ1bmsKKzI1MzA0IGY3NDU3ZmFiNzZmMGRiYmM3MGIyNzlkMTg3NGNjM2EwOTEwMDY1MDUgbGVnYWN5LXRydW5rCisyNTMwNSA5ZDQ0ZTc1MmQ2MTdlYzU0MDliNGFkZmY4ZjVmNTliZmRkMzIxOTdkIGxlZ2FjeS10cnVuaworMjUzMDYgOWM4MzIzYWJmMWRiZDI3ZDljYTBjZDdkNzI1NDk5ZTlhNTk2OTE3NiBsZWdhY3ktdHJ1bmsKKzI1MzA3IGYzOTIxMzQwNWUwNWM0OGI2MzlmM2M3Y2EyY2JlMGU2ODJiZDQzYzAgbGVnYWN5LXRydW5rCisyNTMwOCBjYmYxZGJjYTFmNjMwY2MzNzAyZmNiZGUwYjcxYmQ2MjhhNDZjZGRkIGxlZ2FjeS10cnVuaworMjUzMDkgNzY2YzU5MzdhNjFlYzY3N2E5ZDgyNzY2MTIzOWFmZmYxMDJlNjEyOSBsZWdhY3ktdHJ1bmsKKzI1MzEwIDkxYTZkYjZlZmExNDlhMjUxNWNlZGFjZDllNDZlYjUzNjUxOTAxZTMgcmVsZWFzZTIyLW1haW50CisyNTMxMSBkMjQ0MTEwNWE5YmZmMTA4Y2VjOTAzMmQyMzVjZGUzMGQ4NzcxOWFjIHJlbGVhc2UyMS1tYWludAorMjUzMTIgMTdmODQ2OWYwOWQyMDdhZWIzNTIwYjk0NjE3ZjI2YTMzY2MzZGEwMyBsZWdhY3ktdHJ1bmsKKzI1MzEzIDgxYzJiZGE1ZDM3Nzg4ODY0ZDIzOGVkMWViYjZlYzhjOWU2NzJlMzkgcmVsZWFzZTIyLW1haW50CisyNTMxNCA0ODY0NDQ0NTIwZDkyYmNhMGRjZjA3ODZjMWUyNTBiNDk0YWNhMzJiIGxlZ2FjeS10cnVuaworMjUzMTUgNjc2ZGIwMzAwZjA2Nzc4NWZiZDkyODRiMDFlNDY3YTM3MTliOGIxYiByZWxlYXNlMjItbWFpbnQKKzI1MzE2IDBjOWViY2YxN2ViZmQ1OTI5NmUxNjlhNGE5OTUyYTVhZWViODQwN2MgbGVnYWN5LXRydW5rCisyNTMxNyA5N2Y0OWVkY2JkZTcyMGEwNzM0OGI0NTFiZjhjNzZhNjg2MGQzNDFlIGxlZ2FjeS10cnVuaworMjUzMTggYjU1ZjJmZjhiMjVmNjE3ZTQ0ZjM5NzliOTY3MWQxMTdjODA1YzBhNSByZWxlYXNlMjItbWFpbnQKKzI1MzE5IDJlOWUxYjAyYjdkN2I2MmIyODIyZDgwNzQ1Y2JiMTUzYjNjNzdlYzUgcmVsZWFzZTIxLW1haW50CisyNTMyMCA5ZmE1ZDQwY2M3MjIyZDZmMTdkNTkxOTRmMDhmYjA0MzAwM2Q3YjBiIGxlZ2FjeS10cnVuaworMjUzMjEgNWVkNzgyYmRiYjJhYTAwNzlhNmQxYzM1NTBiMzhjNWFkNDg5ZDc1OCBsZWdhY3ktdHJ1bmsKKzI1MzIyIDM5NTdkMTU1ZjhjNTUwMTk0YThlNWQzOGVhNjM5MzlmNTY4YTQwOTQgbGVnYWN5LXRydW5rCisyNTMyMyA3YTkxN2FkOGY0NDI0ZjUyZmQ0OTZiMTBhYzlmN2VmZDVjNzMxNTFiIGxlZ2FjeS10cnVuaworMjUzMjQgZWEyM2U2ZTQ5MjkwM2QxMDNlNjM2NjM1YjM5N2M1OTBkYWY1MjE0MCBsZWdhY3ktdHJ1bmsKKzI1MzI1IGQzYjFmMmMwZWJjZmMzZTNmOTkwNTVkYzQ2NDhmMGFiNjg0MzdmNjMgbGVnYWN5LXRydW5rCisyNTMyNiAyZmFhMjNmYWNlZjcyZGYyNGVmOGIzNmEyZWEzOThhZTVkMTYyYjVhIHJlbGVhc2UyMi1tYWludAorMjUzMjcgOTRiOTBjZGQ2ZTBmZTVlM2Y3YTI5MzliYjVhNzRhNzg4NzBkZGE3OCBsZWdhY3ktdHJ1bmsKKzI1MzI4IGM1ZDNlNDU4NzQ5ZTc4MWU4Y2QzMDZlZDI0ZmNjNGQ3Y2ZjMTU4NmQgbGVnYWN5LXRydW5rCisyNTMyOSA5YzQwMjUyM2Y4ZjVhYjU3ZDQ1ODg3OGE0YjQ1YjcyMzQ3YmNmMjAxIGxlZ2FjeS10cnVuaworMjUzMzAgNGQ1NTQ3MDBjNGQxNzIzMjY4YTk4NjQzZjhiMzI3ZWU3ZWEwOTRiNCBsZWdhY3ktdHJ1bmsKKzI1MzMxIDYyNzQxYjI1ZWQ2NTE3ODY0ODUyNTU5M2VmZmM2NzU1MTg4YzEyZWMgcmVsZWFzZTIyLW1haW50CisyNTMzMiA3MmM5NTQ0OGVlNGIzYzBiNWM0ZDgyZjhlZmNkZmY3YzMxN2FkYWZjIGxlZ2FjeS10cnVuaworMjUzMzMgYjFhODcxZGM1MTk2MmQ1YjgxMzdmM2YyODY0ZGZjM2Y3ZGNiZTU5ZCBsZWdhY3ktdHJ1bmsKKzI1MzM0IGZjZTcyNzhkNDZiMGE4NDkwZTQ2OWI1ZmMzOWQwMDY3MjI4Y2ZjMjUgbGVnYWN5LXRydW5rCisyNTMzNSA0YTEzMzc5MDY2MDhmYjc2YTNlOTQwMTE2ODJmYjM3OWY3ZDhiOTIxIGxlZ2FjeS10cnVuaworMjUzMzYgZWE4ZGI2ZjVkMWM1NzkyNmNlNTcxM2RjOGRiNDY3MTQ4OGQxNzIwZiBsZWdhY3ktdHJ1bmsKKzI1MzM3IDA1MmVmYzA2NTIwYTIxZGJmNjhjMWM4NmNiYmVhYTEwNzY2MzI5OTYgbGVnYWN5LXRydW5rCisyNTMzOCA4ZTBjM2I3NWVmZjU4YjE1YTk4NjZiZjgwY2M0ZTliNDk5ZWI4MTBlIGxlZ2FjeS10cnVuaworMjUzMzkgZTk2NGUwZmM0YmZlNzFiYjNkMDMyN2UwOGE2MDUwZDFlNWJjYWI4OSBsZWdhY3ktdHJ1bmsKKzI1MzQwIGEwYWQ2OWMwYmMzNjdmMzQxM2Q1ODdlNGQ4MDk1Mjk3OTcyYmNkZDcgbGVnYWN5LXRydW5rCisyNTM0MSAxOWUzZjg2NTllZWNlMmM1MGMzZjM2YzdhYmM1MjQ1NWExNDBlYmRjIHJlbGVhc2UyMi1tYWludAorMjUzNDIgODhhOGZjYWQwMmQwZGNjYmM0ZmY3OTdhNjc4ZjI0YzZmYzNhMDdlOCBsZWdhY3ktdHJ1bmsKKzI1MzQzIGM4MGY1NjAxMGIyODVjODNiZWVkZTMxZjY5ODRiNjFhMzgzMzEyYmIgbGVnYWN5LXRydW5rCisyNTM0NCA0ZTljYzI2ZTAzZmRlOTAzOGM5ZmIxYTYxOTFhZjJkMjZkMWY0MzcwIHJlbGVhc2UyMi1tYWludAorMjUzNDUgZTA4YWIzNDdkMTJlOGIzZmFmZTJhYWUzYTQ5YjgwMGNiMzM1M2E0MCBsZWdhY3ktdHJ1bmsKKzI1MzQ2IDRjMzM4N2JhMTE5ZDAxODdiMjJhMTU4ZTRiNDIxZmQxOTgzMDIwNDYgcmVsZWFzZTIyLW1haW50CisyNTM0NyAxOGI1YzdmNjRjODA1YzE1ZTRmNmNkYTNjYTUxYjYwNDUxODJiNDJmIHJlbGVhc2UyMi1tYWludAorMjUzNDggOWI0NWE1ODc0YzA5OTE5YWMwYzRhZTZjNjA1OGZhZWZhYTQyMzdkMiBsZWdhY3ktdHJ1bmsKKzI1MzQ5IDM1ZDlmNTY5MzYxYWZlNmNhM2QwOTY1NDE5MGFhMGMxZDFiZTZjYWUgcmVsZWFzZTIyLW1haW50CisyNTM1MCAwZjYzMTExYmY0YzVkNzc1ZjkyNjY5N2QzZGE4ODQzYWM2ZGFiODEwIGxlZ2FjeS10cnVuaworMjUzNTEgZjkyZTg2OGViNDQwYjc2MDk5NDhhNTU3NjJkY2JjOWFlZjZjOWNlNyBsZWdhY3ktdHJ1bmsKKzI1MzUyIGM4NDNiZTVkNThhOWRjOGM3ZGMyYmY1NGE1YTc2Yzk5MzkxMzkxOTUgbGVnYWN5LXRydW5rCisyNTM1MyAwOWFiOWNlMWY1MmE2MDI0ZWViNTJlNzE1MmVjYzM4MGY4MmE3ZDVhIHJlbGVhc2UyMi1tYWludAorMjUzNTQgMDhjNWIwYzdkOWQ4MThlN2NhZWM5Yzc1MTM3ZjcxMjliNWJjYWQ4NSByZWxlYXNlMjItbWFpbnQKKzI1MzU1IGE3ZmJkZTZlMzRhNTBmNDU4ZmRiZWUxYzM0YTZhZWFiNjNhNDk2OWMgcmVsZWFzZTIyLW1haW50CisyNTM1NiA0ZTk5NjMxNGY4ZmI0NDEzOWQzODFiODYyNmQzYTFlNzU0NzYwOTEyIHJlbGVhc2UyMi1tYWludAorMjUzNTcgMWFhMGNlNjBmNmE4NTI3MGMxNTI0NjhiMjE5ZDYxYzg4YjY1ZThlOSByZWxlYXNlMjItbWFpbnQKKzI1MzU4IDI3MTQ3MzlkNDgzYjYyN2Q3MTI4OTBjOWJkYWFmNjExNGE0YjQ1YTcgcmVsZWFzZTIyLW1haW50CisyNTM1OSAwYjE1Y2YxMTQzMWU0ZDE3NmUwZmZjMWE4Njc1NDdiOGQ0OTk5Y2QxIHJlbGVhc2UyMi1tYWludAorMjUzNjAgY2I1YjRhNTRmZjEyYTRjZDgzMDFmNjI0NmFiMzg5OTgzZTJhMzY3MCByZWxlYXNlMjItbWFpbnQKKzI1MzYxIGRlZmQyYjFhODQyNjg4YmYxNjM5MDk2M2UxY2I3MTViNTRlYTBkYTQgcmVsZWFzZTIyLW1haW50CisyNTM2MiA3YWVlMGY4YWZhYzUwOGNlNmZjMThlMGQ3MWYzNGE1Zjk3MTE5ZTgxIHJlbGVhc2UyMi1tYWludAorMjUzNjMgYmM1YmY3MmZiNWQ0NWQ0YzBkNmFlZjZhMzUyNGZiMGRlNmM3ZTQ4NiByZWxlYXNlMjItbWFpbnQKKzI1MzY0IDk2NTg3NDI3OWVlMmQyNjY1OTYxMDVlM2U2ZmQ1M2RmMjFjMGQ5MzQgbGVnYWN5LXRydW5rCisyNTM2NSA1ZTk1ZjNlZTc3ZWMxNDNjN2UyM2YwZTY2NWM1NzE2ZjNhNDhiNjFiIHJlbGVhc2UyMi1tYWludAorMjUzNjYgYTZhNWIxZmNjMmE3ZThmNTRlYTAwY2IyMmM0MmU2ZTgyZDc4ZDFiNiByZWxlYXNlMjEtbWFpbnQKKzI1MzY3IDUxMjY2YjJiNDM2MGQ0ZTZkMDk5Njk5MzUwZDhiOWViNTE1NmYxYjMgbGVnYWN5LXRydW5rCisyNTM2OCA1MmFhM2UzZTU3N2YxMjBjNTkyYzhmZWMwYTc3Mzc5YjIwZTFiNTQwIHJlbGVhc2UyMi1tYWludAorMjUzNjkgNGNkYWZmYzllMThjYzBmMGJlNTM4MjAzZTQ2NTg2NjhhYmZjYzgyMSBsZWdhY3ktdHJ1bmsKKzI1MzcwIDhhNzkxMzMwZmMyMDNiNmMyNTA3NDUzNTc3NTIxZTk5NjQyMGJjYjQgcmVsZWFzZTIyLW1haW50CisyNTM3MSBkMjRhYWRmZTNjMDZhOWE4YmMxNzM3ZDA5ZjQzM2VjMTFkYjFkYWI4IHJlbGVhc2UyMi1tYWludAorMjUzNzIgOGNlMTdkYTk4ZThjYmFmY2I5OGUwYjE4MjE4NzQ5MDQ1YWZmMDI5YiBsZWdhY3ktdHJ1bmsKKzI1MzczIDgyZmIwZjk5ZTJkYWQzMThkZTQwM2E0ZGQ5OGJiYzVjMDI5ZTFmNzYgbGVnYWN5LXRydW5rCisyNTM3NCA5NjM2NzVmZTk3ZTc4OTFlMjM4ZmJmZDliNzcyYWJkODhhODEyNjkwIGxlZ2FjeS10cnVuaworMjUzNzUgZTc5OTQ5ODgzNmI5NGVjOWZkNDVmYjBjNjFkNTQ3YTFiMWE4ZDYwNiBsZWdhY3ktdHJ1bmsKKzI1Mzc2IDk4ODVkYTNmZWVlY2QxYjEzMGFjM2U0MGU5YzA4Njg2OGJmODEzMzYgbGVnYWN5LXRydW5rCisyNTM3NyBlM2ZiOGQxNmE1MWFjYTU3ZDNmOWFmMmE4ZmQzODhjMDRhMDQ4YTAwIGxlZ2FjeS10cnVuaworMjUzNzggNGViODE4NjlmNjE5N2I1YjI1YWVkZDAzNzJkOWRkY2Y4OTc1OTZkMSBsZWdhY3ktdHJ1bmsKKzI1Mzc5IDQ4MWU5YTQ2ZDY4MDExYjMyMzc4YmVmZjBhNmZiOWJhZjM2NzU1ZWYgbGVnYWN5LXRydW5rCisyNTM4MCA4MGEwNGNiY2QwYzgwMTFhNjAyZWMxMDY2NjEzZTQ2OTE3NDRmZjkzIHJlbGVhc2UyMi1tYWludAorMjUzODEgNDRlZGJlMGYyMTc0OGU4ZTJlM2NkNTAwMTJiYWE4NzUwZGQ1MTg3YSByZWxlYXNlMjItbWFpbnQKKzI1MzgyIDMyZDI0ZjhkNjRmN2IzNmRhNzQ0MjkxNjQ0NmJjNjAxMWUxNDc1YjUgcmVsZWFzZTIyLW1haW50CisyNTM4MyA5ZjVlMzU3ODY3NTI1MjdiZGJlOTY2MGFkYWJkM2ViOWViMTQ3NzEyIHJlbGVhc2UyMi1tYWludAorMjUzODQgNzFmMjVmOTVlOTAyNTlkNTIxMDZkNzRlNWQyY2JkNWU2NDhlNmMyMSByZWxlYXNlMjItbWFpbnQKKzI1Mzg1IGI4NjkxNjAxZDJhMDI4ODI5N2E1NmQxOTllMTlmMDA2NDRmNWZkMmMgcmVsZWFzZTIyLW1haW50CisyNTM4NiBlMDY4NDQwZTExNmY5Mzk2ZTg1ZmVmMTQyODEyZmFhNzE2M2Y0NmIyIHJlbGVhc2UyMi1tYWludAorMjUzODcgOTVkYzMwMjQ5MjdjOTg4ZWJmMTYyZGE2NTc1ZGIxZGQ4YTU0MDg5NyByZWxlYXNlMjItbWFpbnQKKzI1Mzg4IDAyYTdjNjRlMzMzMWY5OTdkYzUwMzIwNzg3YjI0NzY4MWIzMDY3YTQgcmVsZWFzZTIyLW1haW50CisyNTM4OSBmYmU4MjBlMGM2MDFkNjY1NzlmMWIwMTMwY2I2NmRmYWY4MDE5Njc5IHJlbGVhc2UyMi1tYWludAorMjUzOTAgN2ZiZWZlM2UzZGVlMmQ3MjJhNWRjZGM1ZjVlZTMyYmFhYTMyYzBhZiByZWxlYXNlMjItbWFpbnQKKzI1MzkxIDU1NmZiN2YxYjYwNjc0M2UxODY1NGRlM2JmNTQ5ZjFjZDdiNmM5MDggcmVsZWFzZTIyLW1haW50CisyNTM5MiBhNWIyNWE4MTZhNmQ2OGMyZTkzY2M4NjRkYzI1OWZhODY3NWM4NmRlIHJlbGVhc2UyMi1tYWludAorMjUzOTMgOTkzNDFlODUwMTdlYTQ2YmRlODBjZGRjZDM0NTY1NmY5ODc5Y2I0MyByZWxlYXNlMjItbWFpbnQKKzI1Mzk0IDc2MTA3NTI4MGE5NWU2MGJlMWE1NmRmNTQ2MjU3OGFlN2MzOTI5MzkgcmVsZWFzZTIyLW1haW50CisyNTM5NSBiMTJlOTcxNDM2NjhkODdkOGI2ZGIzYTU4MmQ0MDU1N2Q5ZGJjZWJiIHJlbGVhc2UyMi1tYWludAorMjUzOTYgZmRhYWZhYTg5NTg3ZDc5OTBjNGVjZWVhYTBkMDg4M2E3M2EyNTZhOSByZWxlYXNlMjItbWFpbnQKKzI1Mzk3IGFlNDhkNTQxZjY1YWMzOWFhNjVlYmE4ZDEyZjQ2YTUwYmIxZDgyZmEgcmVsZWFzZTIyLW1haW50CisyNTM5OCAyMjkzZTBkN2I1YzQ1MDZmZTEzNTgzZTc2ZGY5ZjA1YWViMGYxY2U2IHJlbGVhc2UyMi1tYWludAorMjUzOTkgMjI5YjYyNGM2YjU0YzkxNjBiMzkyMzQzYmJhNjRhNTY1ZTMyNzQ2YyByZWxlYXNlMjItbWFpbnQKKzI1NDAwIDcyMjNjNTRiMDcyNzZkOTgwZGRlODkzM2E1ZGIwMjk5MDIzYTViYWIgcmVsZWFzZTIyLW1haW50CisyNTQwMSBlNmQ0NGNmMjlkYmY5NzZhNTFlNGY1YWNkY2JhYmYwNDg1NmVmMDAzIHJlbGVhc2UyMi1tYWludAorMjU0MDIgMTMzOWNiZTk0Y2VlNTU0NWEzMmJiMmZlZTQxYzRkMzU5OGRhNzg3ZCByZWxlYXNlMjItbWFpbnQKKzI1NDAzIDg3NWZiNWI3MjkxMGMzNTFmOGEyNDNkMDMwM2JjMWZhZGJlNTY3ODkgcmVsZWFzZTIyLW1haW50CisyNTQwNCBlMGEyODhkYjAyMmRlMWIxMWNjYmZjYTY0YWJmNTU5NjJmMTg5ZTg2IGxlZ2FjeS10cnVuaworMjU0MDUgZjM4NjMzMDNhOWY0ZmE1NWYwYmVhYzc3OTBhZGY3MGNiYjZmZTdmZSByZWxlYXNlMjItbWFpbnQKKzI1NDA2IDQ3YWExMDgxYWYyODA5ODAwN2UxZGZmODg1OWZhNjRhYjRkNTMwNTMgbGVnYWN5LXRydW5rCisyNTQwNyAxNDk4YzZlNGI0M2ExZjZkYjkxMGViZmVmY2Q0YmUzOWUwN2FkZDhmIHJlbGVhc2UyMi1tYWludAorMjU0MDggY2EyY2JhMTBiNDQ4N2FhZjBmZmYyOTVlZjBlNTZjZjAwODNkY2I1NyBsZWdhY3ktdHJ1bmsKKzI1NDA5IDI3NjJkMjI1MWU4NWRjNjRhNzYyMTBhMTFhNWYwZTRkM2NlZjE1ZDkgbGVnYWN5LXRydW5rCisyNTQxMCBlZmEyM2QyNmZhMzVkNDZlNGZlY2M0NzQ0ZjUxMWI4MWQxN2Y4ZWEzIHJlbGVhc2UyMS1tYWludAorMjU0MTEgNmJlNjU5MjNjMDJkNmRjNDY1NTFmOTliNzg3MDRkYzlmYTdiZjcxYiByZWxlYXNlMjItbWFpbnQKKzI1NDEyIDliMWNjOTlmNTkzMmE4NDk3OGMyMzhlMzU0NDlhY2E2YjMyZTYyMzEgbGVnYWN5LXRydW5rCisyNTQxMyBlY2ZmNDA0NjE5N2RhMTgwOGI3YTIxZDgwYTMzMjFjZWU3MGE4ZmYzIGxlZ2FjeS10cnVuaworMjU0MTQgZTMxYWQ0ZGQzMGQ5OTg4MzMzOGRiNzUzMzc3OWIwY2M0Yjc4NWVhYyBsZWdhY3ktdHJ1bmsKKzI1NDE1IDA4ZDVjZjU5NmIwMTA3MWMwZGM2M2M0MDc0ZWM2MTAzNzEyNzFkNjkgbGVnYWN5LXRydW5rCisyNTQxNiA0OTE5N2ZkNzYzNjJiMmY3NGZlZWJiMzVjYmIyMTgwZmFlYTRjZTUxIGxlZ2FjeS10cnVuaworMjU0MTcgNWNiY2ZkZTNhZDU1MDc2N2RmODhhMTk1MTQ1NDY3YTNlZDZlM2RlNyBsZWdhY3ktdHJ1bmsKKzI1NDE4IDg2ZDBmN2Y4NjU1MDU4N2ExOTE0NTdmZjg1ZDQ1YTc2ZDkwZDJkOTggcmVsZWFzZTIyLW1haW50CisyNTQxOSA5ZjFlYjhmZjE3OTU2YWQ4ZTI4MTc2NTUyNGZkZGVhNTlmMmRlYzQ0IGxlZ2FjeS10cnVuaworMjU0MjAgNDM4NTQzMTE2NGRhNTlmYzY1Yzc2OTZiN2M5MjliOWVjYTkxZjU3NSBsZWdhY3ktdHJ1bmsKKzI1NDIxIGNhOGEyODQ5ZGQ1NmVjMTM3YzVlZjZmMWI1MTVlMzg0MDVmMGVlZGMgcmVsZWFzZTIyLW1haW50CisyNTQyMiA0NmJjZWUxMWI0ODA1MGQxMTU5NWYyZDAzYWEzNDVjMzUzN2RlNjQzIGxlZ2FjeS10cnVuaworMjU0MjMgNTFlZTNiZGRiNzJjZTZlNDEzNGM3MTJkYjQzYTFiZWM2MzA4OGE5YyByZWxlYXNlMjItbWFpbnQKKzI1NDI0IDVjYjZjYzQ2Y2Q0MmNlNGQ2NDg1ODBlNWZhN2NkNjIzM2M1NTUzNTggcmVsZWFzZTIyLW1haW50CisyNTQyNSAxMDg3Y2E1MTllYjlhZTdmMjVlMzYzZjNhODgzY2FhOWJhYWE2MTQ3IHJlbGVhc2UyMi1tYWludAorMjU0MjYgYTUwYmFhMTI2Yzc1ZTZlOGQ2Y2Y4ZGQ1NGJkMDUzMmYwODZhYzhjOCByZWxlYXNlMjItbWFpbnQKKzI1NDI3IGI4Mzc0ZGU4NGUyYWU3MzUxNTFjYmE0NjFjMzU3MjdkMDQ2OTNmYTMgcmVsZWFzZTIyLW1haW50CisyNTQyOCA5NzIyNGE5Y2M4M2M2NTEyYTcwZGZiNmE5ODdjZTc3NzZhYWZlZWMyIHJlbGVhc2UyMi1tYWludAorMjU0MjkgZjU3NmQ5MDAwMjZmMzZiOTU5OTNmNjQ5NWVmNTgwNDg5Mzk3ZjU1YSByZWxlYXNlMjItbWFpbnQKKzI1NDMwIDVjMTQ4ZjVlMWMxMTQyMDAyNTliYmM3ODRlNWI0NzBlMzAxNjk3YTMgcmVsZWFzZTIyLW1haW50CisyNTQzMSAzYzNhY2FjODY3MzQ1NDlmYTI1MDMzMjhhOWUzYzJlYzIxZDBmZmRhIHJlbGVhc2UyMi1tYWludAorMjU0MzIgNTAzMmVjODkxZTc0NTYzZThkMmIxMzYzN2JmMzNkODI2ZWRjMWZmMiByZWxlYXNlMjItbWFpbnQKKzI1NDMzIDRiYmFjYWVkYzZlMmQ3NDE1YmIwMjVjNDZhNWMwZTg1ZWZhNzQxM2MgcmVsZWFzZTIyLW1haW50CisyNTQzNCBjMmY5MGNlNTk3NTUzOTgzMTM3YWIwNzcyODdiZjVmYzY0MGUxZDc2IHJlbGVhc2UyMi1tYWludAorMjU0MzUgNTIxMDYyOTBkMzkyYzk0YWU0ZWQ0YjQyZTVhNWM4OTg5YmNkZDYzMCByZWxlYXNlMjItbWFpbnQKKzI1NDM2IGVjZTQzMTVjMTIwNmY3ZDQyYjQ0MWI5ODI3MzVlZGRjM2E4ZjhmNDggcmVsZWFzZTIyLW1haW50CisyNTQzNyA2NTkyNmE5NzBhMTcxYzgxZTMyZDAzODM2MDZkZGVhYzJkNDBiNmRjIHJlbGVhc2UyMi1tYWludAorMjU0MzggNWQxYjIyMDNiNmVjZjdjZDI1NmIzZjc4NjNmOTMwNzg2MjMyNTMyZCByZWxlYXNlMjItbWFpbnQKKzI1NDM5IGIzODNjM2ZmM2IxZWNiZTI2ZjE2MzRjYTMzOGZlNjI5MGM3YmM1NjIgcmVsZWFzZTIyLW1haW50CisyNTQ0MCAyODUyYjRjYjdmNmFiZjA4NjQ1ZDU1NzAwYWIyOTljODRhOTFjNWVmIHJlbGVhc2UyMi1tYWludAorMjU0NDEgYjcwMjExYzFkMjU2NzllNGU0YTNjY2MxMTZhNTgwNzM5NmM2N2FmYiByZWxlYXNlMjItbWFpbnQKKzI1NDQyIGI1Yjc3MzUwYTAwNDQwM2Q3MDRlN2UwNzQwMTI4NDA2YWE3NDQ1ZTggbGVnYWN5LXRydW5rCisyNTQ0MyA4ZDVkYzFhN2VlMTg3YmNhMTAyZTAwZTU3MzhmNjQ1OTFlNjY1YjY4IGxlZ2FjeS10cnVuaworMjU0NDQgNjA3MmZhNDEwZGNjOTRhNGMzYzljMDNjZTllYjNiMWE4ZTY0YmU5MyByZWxlYXNlMjItbWFpbnQKKzI1NDQ1IDU1YzRkMDgzYzMwOWEwZWE3NzJhNzBjNTEwOTQ5ODg4YjQ4ODE2MDAgbGVnYWN5LXRydW5rCisyNTQ0NiBkZmVhYzAzMzQ1NzRmNzllMDZiOTM0YzNmMDk1OGQ0NWQwZWIwMTQ5IHJlbGVhc2UyMi1tYWludAorMjU0NDcgYWQzZDU5NjEyMzQ1YTI0MTI4Yjg2Yzg5OWEyZDNhOWZjZjA4YjAxZSByZWxlYXNlMjItbWFpbnQKKzI1NDQ4IDY4YTZhOWRkNDJmODAxMWNmZmM1MWI2NWY3ZTJkMzA5MmQwYTI2MjkgcmVsZWFzZTIyLW1haW50CisyNTQ0OSBhOWFmODk4Njg2ODlhMDU4ZmYwZmJjM2VlYjI5ZjM1NmEyYThiOGQ5IHJlbGVhc2UyMi1tYWludAorMjU0NTAgNWIyNGE2YWUyZGM0ZjBkOGRmZWViMmFhODQ3Y2UzZmU0ZGU3MzE5YyBsZWdhY3ktdHJ1bmsKKzI1NDUxIDczNmZiNWFlYzliM2I3YzFlNTc3NmZkYTgyODhhMDM5OWY2Y2VkNTIgbGVnYWN5LXRydW5rCisyNTQ1MiA0MDA5YzA4NDAyYjE0NTYwNTUyMGU2NzQ4Y2Q0NTQyYzhlMmUwZDk2IGxlZ2FjeS10cnVuaworMjU0NTMgOTBkM2NlM2ViMTljYjU5YWM5MTY2MjdkMGU5Yjc1Y2U2MjNiYjJkMyBsZWdhY3ktdHJ1bmsKKzI1NDU0IDcwNjUxMzVmOTIwMmYzOGNlODhkYTFhNGNkNzVhMjkwNTBjMzk0N2IgbGVnYWN5LXRydW5rCisyNTQ1NSA3YTNlMDNiNTQxZmZiMTI3ODEyYWVlYzczNDhkMGYyNDU2NDA0MWUzIGxlZ2FjeS10cnVuaworMjU0NTYgY2M4YjdmNzExMjdkODRkMGZhNTM4ZDhiODAxNzM5YzRjZDZjYzcwZCByZWxlYXNlMjItbWFpbnQKKzI1NDU3IDY2Yzc0NWE3YWJiMWZlODIxZWFiNTRjNTI2YWE0NTEzZTdmYmIxNDggbGVnYWN5LXRydW5rCisyNTQ1OCA1OTU1ZTBlMjk3NmQzZTkxNTE0NzZmN2Y2YjFhYmI3ZDM4MzhkYzQzIGxlZ2FjeS10cnVuaworMjU0NTkgOWU1ZmY2NzQ3NDM3ZjlmZTQzOTZhOWExOTI3ZDAyNDNlNjNhY2ZhMiBsZWdhY3ktdHJ1bmsKKzI1NDYwIDJlZmQ0M2NhMDMzZjY0OWRlMTM1MjU3OTFkMWU4ZWI4NjlmN2U5M2QgcmVsZWFzZTIyLW1haW50CisyNTQ2MSA5NjY3MjUwOTU4NTQ2ZGYyY2VkOTliZDk3MTI4OGU5M2EwMGM2NWJkIGxlZ2FjeS10cnVuaworMjU0NjIgZDBhY2IzY2IwMTFkYTU1ZWI3NTYzMTE3NGQ0Zjc5YjBlOWZlNTY3YSBsZWdhY3ktdHJ1bmsKKzI1NDYzIDQyM2JjOWI1MWE3ZTQxMzNjNWRiNDU1ZDlmN2JhNDg4YjQ2NWE1YzQgbGVnYWN5LXRydW5rCisyNTQ2NCBjODFlOGVhMGM0YmE3YzczNjU3OTY0OGJjYjk0MmQ4YThjNTJiY2IzIGxlZ2FjeS10cnVuaworMjU0NjUgZmNmMGMyNDRlMjg3ZTkyZDZjNjAwNmFiZGNkYWIwZGYzYzBhYTQ1OSByZWxlYXNlMjItbWFpbnQKKzI1NDY2IDY0NDJmYmU1ZGQwNDI0MGExNjU3NTBlY2M5MDU1NDlkNGVlZTBkN2QgbGVnYWN5LXRydW5rCisyNTQ2NyBjZDBjZTQ3MGMxNTNjOTQ4YWFhZjhmYzRjNTM5ZDI5MWFjNzY0ZDA5IGxlZ2FjeS10cnVuaworMjU0NjggZDM4NDU4MDUyNDQyZmYxNTJjZGE0OWFiOTg3ZDA3NzFlNDRlYjg2ZiBsZWdhY3ktdHJ1bmsKKzI1NDY5IDkzZWI0YjYxZjY4N2JiZGI0MDY0MjQ0Y2M1ZmQ5MTIwNWFkNzBmODUgbGVnYWN5LXRydW5rCisyNTQ3MCAxM2FjMjdmYTA3MDQ4Mzk0MTBmZDViZWRjZWJiMzQ0N2M3ZWJkNGZhIGxlZ2FjeS10cnVuaworMjU0NzEgMzU0Y2RlN2Y5MGExNTI3YWFmYjY4ZjgxOTczMjhmYmJlMDYxOWI3YiBsZWdhY3ktdHJ1bmsKKzI1NDcyIDU4ZjJjMjk5YjY1NDQzMzhiMDc2NzJlYmI5ODk0MjkxNjlkODg0MmEgbGVnYWN5LXRydW5rCisyNTQ3MyBhZDc5NjllOGY1OGRmYWMzOTUxOTg2NDI5NDViYmNlNjVhMGNkNjBkIGxlZ2FjeS10cnVuaworMjU0NzQgYzQ5NDA4NGRjNmQ4ODkwODMxZDMyZGVjM2ZmYjg5NWViNTA4MWU3OCBsZWdhY3ktdHJ1bmsKKzI1NDc1IDhiMTA0YTg1Yjk5YzdhMjc3Nzc0YTFmZTYwOTJjOTExYTgyYTkwYWIgbGVnYWN5LXRydW5rCisyNTQ3NiA3OWYyOTJkYmFiY2VhMjk1ZGI2YTYxMGM5NDJiNTMxMTU5MWFlZjAyIGxlZ2FjeS10cnVuaworMjU0NzcgYzQ1NGI3NmQ1MWU3YjkwMDcxNWNmZTQyMjlkMGVjNTVjNDgyMDIzYSBsZWdhY3ktdHJ1bmsKKzI1NDc4IGQxMDRiYjUwYTE5NGQzMmFlY2Q1MDE1NWVlZGNiMTNkYWMwNzZiYjMgbGVnYWN5LXRydW5rCisyNTQ3OSAwYzQyMzAyNjllZDNlZmI5OGM5N2U0YjY4NDAyYjBiNDM1OWI1N2Y1IGxlZ2FjeS10cnVuaworMjU0ODAgMTA0Njk2NDg5NmExYTRlMzk2NjQ2NTg1MmRhYzRiNDlmYjlkZjg2NyBsZWdhY3ktdHJ1bmsKKzI1NDgxIGNiYzA4YjE3MmQxZmQ2MTc1YmVkOWI2NDA2MzQ5NTExNjIyNGQ3MzIgbGVnYWN5LXRydW5rCisyNTQ4MiAwODU5ZTc2NDUwOWU2YTk2MjYxNDQyNzU0MjRiM2EyZDEwYzRlZWVjIHJlbGVhc2UyMi1tYWludAorMjU0ODMgYjJhMmNjMGMyYTYzNzMwYjg1MzBjYzM1ZDk3M2E2YWIwZTAwOTE2OSBsZWdhY3ktdHJ1bmsKKzI1NDg0IGQ0NDA2ZmJmY2I0ZTU0ZTliNDE1MzRlOTA5Nzg0NDQ1YzgyZjIyMDggcmVsZWFzZTIyLW1haW50CisyNTQ4NSAwNzRiN2UzZTU0OGQ4ZTczMTExZTlhZDkyZmVhOGEwY2RkYzE2MGI2IGxlZ2FjeS10cnVuaworMjU0ODYgM2EwNmUxOWRmNDZiOTAzYjI5N2FlZTM4MzRhZGYxNGU2ODQ4Y2FiYiBsZWdhY3ktdHJ1bmsKKzI1NDg3IGVkZjA1YzY5YmJmM2JiYmU1MDM1ZmJmYzQ2ODBjMDY5MGQxODViNWEgbGVnYWN5LXRydW5rCisyNTQ4OCA3NGYxNmY3YTYzNjk2Njk3YzYxOWU2ZGUxMmYyMDNhMGJmOTkxN2Y4IGxlZ2FjeS10cnVuaworMjU0ODkgOTg2ZWIxZDRlYmVmNTNhZjQ1NjgzNmEzMGI5OTlkZjU2MzExMDNjZSBsZWdhY3ktdHJ1bmsKKzI1NDkwIDU5OTQ0NDBlNWRkNTJiODZjNTM3ZGEzMGIwNzBhNWJmZTRmZTU5MmIgbGVnYWN5LXRydW5rCisyNTQ5MSAyYmZkMTM3YTk3NmY1OTgzZTRlN2MxNjkxZDI3ZGM5NTMwMTNhOTc4IGxlZ2FjeS10cnVuaworMjU0OTIgZTEzYWE0YzY3MmE5NDliYTg3MGM4ZDhjODY1NzI2NzllZGUzN2U1YiBsZWdhY3ktdHJ1bmsKKzI1NDkzIGU4MWIzMDc2YTZjMzBkOWNhNDI3YzY1ZGI5MjFkYzk2NWE4MmFhZjIgbGVnYWN5LXRydW5rCisyNTQ5NCBjY2E5ODhmM2Y2NGYyMDQ3YTNmNGYzZTE0MmM2YmFkNDMyN2MxOGM3IGxlZ2FjeS10cnVuaworMjU0OTUgOTllNjA4MTdjZTZlY2UyNTMxOTZmMTk0MjM0YWMzZDE4ZjdmNjU1ZSByZWxlYXNlMjItbWFpbnQKKzI1NDk2IDU0OTMyMDU0ZjZhOTQxZTVlYmE4YzhiMjc1YmQ4MzgwMjk2ZWJlY2YgcmVsZWFzZTIyLW1haW50CisyNTQ5NyBlNTk5ZTdiOGFiZjcwMjUzYmRlNWJkNGRlYjRlN2VmYjY0MjVmYTE1IHJlbGVhc2UyMi1tYWludAorMjU0OTggOWZkZGU4Y2NkY2E2NWU0NGI4NjczZjBhMjMzMTRlZDIxOTg5ZjExOCByZWxlYXNlMjItbWFpbnQKKzI1NDk5IDdlMTg4MTQwYjYxODFjMjc5MzA5ZWFlMjM5ODVhNmM5ZGQwNTNkZTEgcmVsZWFzZTIyLW1haW50CisyNTUwMCAxYTUxMTBiNGJkNzJhMmUwNmI5NjIzNjMzOWY1YmUxMDcwZTYyZWU0IHJlbGVhc2UyMi1tYWludAorMjU1MDEgZWQyYTE3YTM3NmQwYzZiZWU2ZTM0YmMxYmIwZGJlMjg4NGNmNjJkZiByZWxlYXNlMjItbWFpbnQKKzI1NTAyIDM0NzcwMzAzMjdhNjBlMzBmYWFkMjhjOGNiNmQwMjIzN2FkMzRmMjEgcmVsZWFzZTIyLW1haW50CisyNTUwMyAxZThiZTc0YTM3NGJiYWRkNjIyNjU2NGUxYmQ2ZjZiZTRiNWM5N2EzIHJlbGVhc2UyMi1tYWludAorMjU1MDQgNGZmOWY4YTc0YzgyN2VmM2VhMmIzMTI1ZGU4ZTVjOWIwZGY1YjkwYyByZWxlYXNlMjItbWFpbnQKKzI1NTA1IGMyNWQ2ZDc4MGIxYjQ3MmQ4YjVhNjM1Mjc1YjM2ZTNlZTlhZjA5MmQgcmVsZWFzZTIyLW1haW50CisyNTUwNiBmZDBlZTBhMDcwNDdkMTdlYzcxOGYxNDI0ODk5ZWRkYjYxNDQ3Y2M1IHJlbGVhc2UyMi1tYWludAorMjU1MDcgOGViNTkxZGQ3NjgyNjhkMGZhYjkxNmJiOWMzNGMwMzQzZWY4MGJjZCByZWxlYXNlMjItbWFpbnQKKzI1NTA4IGJlZjQ0ZDEwOGU1NzYxMzgwZjIwZGIzZDczYjA5ZmRhNzEwNzRiYjcgcmVsZWFzZTIyLW1haW50CisyNTUwOSBkYjA0MDkzOGRjNjYzYjNkNmVlZGQ2MTU1ZTFlZjcyZTUwY2JkOTIzIHJlbGVhc2UyMi1tYWludAorMjU1MTAgMWQxYTAxZDk1NmEyZWYwZTg0OWYwOGQ2OGU2NWMxNjYwOTZiMDg2NiByZWxlYXNlMjItbWFpbnQKKzI1NTExIGVhOWJlMmU1ZDk1NDQ1NDQxYmY3M2YwMjJkMWM1MWRmY2EzZGUzZGQgbGVnYWN5LXRydW5rCisyNTUxMiAxZTYwYjFlMTgxNDVkZGUyODJjYTk0Y2IxMmI4OTE5YmQxZjExYmY5IHJlbGVhc2UyMi1tYWludAorMjU1MTMgZTRkN2U1MTI5ZTRjMTY3ZDBjYmY5YTI2ZDlmNGQ4MTJjZjk4ZmUxNSBsZWdhY3ktdHJ1bmsKKzI1NTE0IDRiMzQ1OTUxYTVjNTFjZmRmZDUzNWE3OTZkNDIyYzFjN2IxNjFmYTEgbGVnYWN5LXRydW5rCisyNTUxNSBhNTM3MzBjZDI5YzE0NzRhNWQ3Y2M4YmUzYzg5MjliN2ZhNzg2ZDkxIHJlbGVhc2UyMi1tYWludAorMjU1MTYgNTEzMTAzMjQ5NDYyZDdjNWIzZjdiYTBiMGI4ZmI0MjhkZGZkODllNiBsZWdhY3ktdHJ1bmsKKzI1NTE3IGU4MWE0ZTk5ZWNmYTNjNmIxMjEzNWIzOWFjNWRmYmNkNTAwNWM4NjcgbGVnYWN5LXRydW5rCisyNTUxOCAzNDVkZWYzN2IwZDdhNTg3ZTc1MGE0NmI2ZmUwMzgyZjllNjYzZWIxIGxlZ2FjeS10cnVuaworMjU1MTkgZTMwMTYyYjFiMzA0NjhkYmZjNjE5NGY2NzcyZjA1ZmNiM2U4MTE1NCByZWxlYXNlMjItbWFpbnQKKzI1NTIwIDJiM2Y0MzgwNjczZjgxNjJmZjEyOGQyY2NiODkyYjFiZmIwMGYzOTggcmVsZWFzZTIyLW1haW50CisyNTUyMSBiMWQ1NzNhMmE3NzQ1YjM3OTNmZGFkZTQ2ODQzZmNhODczNDdhNGExIHJlbGVhc2UyMi1tYWludAorMjU1MjIgNzE5MDJlMWNmYmVmMzBiMTc2YjhiNmU4OWZkOWNlYTQ4ZGNiNDVkMSBsZWdhY3ktdHJ1bmsKKzI1NTIzIGQ2OTdkODhkMjViNDBjYWVhY2M1MGE0MWY3OThkZjEwYjM4YmRkZjMgbGVnYWN5LXRydW5rCisyNTUyNCBhZjUyYmY4ZTJiODlmNDM1NWEwYWFkMjYxZTQxYTk2Njg2YmZlZThkIHJlbGVhc2UyMi1tYWludAorMjU1MjUgODFkZmEyZGI0YzYxYjMwZWNiODgzZWY1Zjg0YTg3NTExNWE0MjFjYiByZWxlYXNlMjItbWFpbnQKKzI1NTI2IDQyODYyMTY5NTQxZmI5ZDUwMzBhNTlhMDU1ZjAwODA3MWU2YTIwMjMgcmVsZWFzZTIyLW1haW50CisyNTUyNyBhZjYxMjJkZjI4ZTA3ZTQyY2E1Njk4MDg1ZjIyYTU1NGZhOGIyNmM2IHJlbGVhc2UyMi1tYWludAorMjU1MjggMjJjNjY1ODdjNDUyZTI0OTk4Y2MyMzlmYzFkN2VmZjkzOTVhMWQwMyByZWxlYXNlMjItbWFpbnQKKzI1NTI5IDgzNzk1MWVjZGNlOTU3NTRjOTk5ZTg1NWQxZGE5ZjZmZDVlZTRmZWIgcmVsZWFzZTIyLW1haW50CisyNTUzMCA4NTc5ZDNkMzAxZDQ4ZDQ4NTBhZWQ2NDQ0ZDA2MzJkZTFiNGNlYTc0IGxlZ2FjeS10cnVuaworMjU1MzEgNjg4MzFhYzU0OTViYjAxM2ZkMDNmODkwNDIwZjRlODJkNGQwMDNmOSByZWxlYXNlMjItbWFpbnQKKzI1NTMyIDRkNWJlY2M2OTAyYmNjZjNmNmNiZjRjNzgzNjkwMDA0MGJhOWEzZWUgbGVnYWN5LXRydW5rCisyNTUzMyAzMmExYjQ4NGEyZjNhNTJhOGM0ZThlMDlmM2Y3N2EzYWNhNmFjNWVhIGxlZ2FjeS10cnVuaworMjU1MzQgMTAzYzRjNGNjY2ZiN2I3OTRiZTM1MzdmMGU5Y2M1YWUyZDAyMTczMiByZWxlYXNlMjItbWFpbnQKKzI1NTM1IGNhOGJkOTk3ZTQxOWQ0MTg5NjljODZiOTExZmJjNjMyYzNjMDg0ZDUgcmVsZWFzZTIxLW1haW50CisyNTUzNiBjNWM5ZTM2YzM5MDk5ZjkzOTM3MWU4NDlkNzhkMWQyOTVlODJhMjJlIGxlZ2FjeS10cnVuaworMjU1MzcgMGUzZTY5ZTAxZWNkNjQ3ZDliZjM1N2IwNWNiMmI4OWYxNjY1Yzc0ZCBsZWdhY3ktdHJ1bmsKKzI1NTM4IGNkYTMwNmIyMzIxZjZkNjJiNTViNjQzNGFlMTFiZDljZTkyMjZmNjUgbGVnYWN5LXRydW5rCisyNTUzOSBlMjE5NmJhMzQzMzBmY2ZkOWE2ODY1MjdhMjhjNzJkZWYxMTI4ZGI1IGxlZ2FjeS10cnVuaworMjU1NDAgZWUzM2JiYWYzMzgxOTM0ZjZiN2ZhYjc4MTJhZGM2N2E5NThkOTNkYiBsZWdhY3ktdHJ1bmsKKzI1NTQxIDZmYTU2YzQzYTFiYWU0OGM4YTAxOWM5NWE4ZjAxOGZhNzgwMTU2YzUgbGVnYWN5LXRydW5rCisyNTU0MiBkYWYwNGRiMWE2OTk4ZDc5MmMwNDVkNmJlOWMwZjlhYTc3YWIyNjZmIHJlbGVhc2UyMi1tYWludAorMjU1NDMgMjY2MzM0YTVjNGNhMjZjNjVlNjMyM2Y5NmRjZGEyNmUyMTQzM2JhZSByZWxlYXNlMjItbWFpbnQKKzI1NTQ0IGQyYTc2ZjdkZDY1MTA2NmQ2NzdiZDRlNTAwM2M1MjJmZDFlMDgzN2IgcmVsZWFzZTIyLW1haW50CisyNTU0NSBmOGE5ZGI2N2ZhNWI0NWU5ZGViYmIxNTNiNzAyNzMzNjEzNjczZTg3IHJlbGVhc2UyMi1tYWludAorMjU1NDYgNTM0ZTc5MDU5YmUxMDA4NzY4NGRmOTA2NjAxZWU4MjU4YjY0NjlmMiBsZWdhY3ktdHJ1bmsKKzI1NTQ3IDgxYThkYjE1ZmI5ODhiZWE0MDkzNGRlZDRmYWUyMTNmOTMxNzk0ZWQgcmVsZWFzZTIyLW1haW50CisyNTU0OCBhYzExMzFmNzNkMWZkNzA5ZGI3Njg4M2FmOTM0MzZiYThlMTVmNGY5IGxlZ2FjeS10cnVuaworMjU1NDkgYzYyODllYzhkYTBhNzljYzE4ZGVkZWNkOWQ4N2ViNmNkZTc4Zjg1NiBsZWdhY3ktdHJ1bmsKKzI1NTUwIDJjNWY4MDM3MTI2MWVkZmE5ZGZmM2EyNGViYWNkZDkzMzAxMjBkZmEgbGVnYWN5LXRydW5rCisyNTU1MSBjNmE2NjBmODlmZmU4NTY4ZWZkOWQwYjIxOGRmNTgwMDQ4NDFmODg3IGxlZ2FjeS10cnVuaworMjU1NTIgMWNhMmViNjUwZTEzNzdiNTVmN2M5YTc0MGY0MjBhOWM1YTUwMjBkNiBsZWdhY3ktdHJ1bmsKKzI1NTUzIDk1ZTg2NDMwOTgyYmU3ZDkyMDA2N2YyMzlkMGMyMWNlMGY1Nzk4NzEgbGVnYWN5LXRydW5rCisyNTU1NCBjYjRlZGQxMDg3N2Q5MTdjOGVkZjdhZjM0N2RkNTRlYzVmNzU0ZTFjIGxlZ2FjeS10cnVuaworMjU1NTUgMDQ0ZjllNzEzMjBmNjJjZWM2MDIyZDM1ZjljM2I5MGU2YTAzNTIwYSBsZWdhY3ktdHJ1bmsKKzI1NTU2IDk4YTNmYTVmNjg3Y2FhZWZjMTU5ZmQxZTU2YTYxYmQ5ZDkwMmU0ZDEgbGVnYWN5LXRydW5rCisyNTU1NyBmYzZkYzJlYTI1Y2Y3N2I4YzA3MDNmNjYyMWI4ODZhNjA0MDFiMmRlIGxlZ2FjeS10cnVuaworMjU1NTggMjRiYTY5M2U5YzczOWU2NzZlZjIyNDUwMDgzYTkxZGI5NjAxZGE4ZiBsZWdhY3ktdHJ1bmsKKzI1NTU5IDAxZDQ1ODI2OTc1MDJkNjUwMWFiYmU3NjA5NDU4YTFmMTk4MDM4MjcgbGVnYWN5LXRydW5rCisyNTU2MCBkN2YzZjgzYjk2NTg4YzJjMGU1MGZkNWI3MmE0YTlkOGM0ODQ5ZjIzIGxlZ2FjeS10cnVuaworMjU1NjEgMjZlM2I1NjNlMjYxMzJkYWI4YjE0ZmU3NDkxYzE4NmVjZTIxYzIwOCByZWxlYXNlMjItbWFpbnQKKzI1NTYyIDRlYmFjYWVlMzAwOWUyNjdkZGZkYjU5ZTcwZTBiMjE1NWJmNjdlOTkgcmVsZWFzZTIxLW1haW50CisyNTU2MyBkYWIwNWFiMDM0N2I5M2I3MTdlMDYwMmI2YTkyOTE4NTFhYWEyY2NiIGxlZ2FjeS10cnVuaworMjU1NjQgYWQ4MWY4ZmI0ZWU0NzUxNDM4YTc1MTJlZDBjZjgzNjBiYTM1OGIwMiBsZWdhY3ktdHJ1bmsKKzI1NTY1IDVmMmMwZjZmMGFmNzM0OWM3NTFkMGQ4MzUyMTBkYTYzZWQ2Zjg2MjcgbGVnYWN5LXRydW5rCisyNTU2NiA0MDlhYzBmNjg5OGY0MWIyZDcyNDZhNzA0OGExYTY2Nzk5YmM3MzIwIGxlZ2FjeS10cnVuaworMjU1NjcgOTI4YzEyODJlNWUyYjVjZmM4YmY3YTMzZDZjYTQ4ZjcxMmI0MjU5OSBsZWdhY3ktdHJ1bmsKKzI1NTY4IGY0NDg3MzUwYzUzNzg3YThmNGJjNDllMjkyYWFkYTNjM2QyNDIzMTAgbGVnYWN5LXRydW5rCisyNTU2OSBiODk4YzBmZWI3NTRlNDg5ZmM0MzUzZmQ5ZmEyOWVmYzZlNzE1ZWM1IGxlZ2FjeS10cnVuaworMjU1NzAgZjBhZTM3NjI1MTg5NWM4MGJiMTljYjA5ZDYzM2FlNjU5ZjQ0MWRkMiBsZWdhY3ktdHJ1bmsKKzI1NTcxIDdmZWYzNTZkYWQ3NWY5MWJiN2MyNDZiNjM1ZmZlYjYzZjg3NzQ5ODcgbGVnYWN5LXRydW5rCisyNTU3MiAwYjA4ZWVmYjZmYzA3N2VkZGU2ZDc1NzhlMmVkZWU0NTI3Zjc1MDljIGxlZ2FjeS10cnVuaworMjU1NzMgMGRjMTBkNTU3MDYyMzhkNDc3ZjljYTFmZWE4YzYzZTY5ZmE5ZDk5YSBsZWdhY3ktdHJ1bmsKKzI1NTc0IDIzOTI2OWM5NjUxNDQzZGQyZGFiYjI1OGIwNjgwNjU5MzRhYjFkNmMgcmVsZWFzZTIyLW1haW50CisyNTU3NSAyMzYwNmI0OWFmNzQzMDQ2NDNhOTA3YWUwNmQ1MGU1NTdlOTgzMjliIHJlbGVhc2UyMi1tYWludAorMjU1NzYgMjZiZWJmMjA4OTFlNzU5YmIyMGEwNDFkYTNmYzRjOWNjY2RjNzFjNSBsZWdhY3ktdHJ1bmsKKzI1NTc3IGUyNGJhMDRkMDFiMDhlNzFjZmU2NmYzYTJhOWM4M2E2NWEzNDU5OGYgbGVnYWN5LXRydW5rCisyNTU3OCA5MDc4MzJlZTcxNzM3MTM5NDNjMDMyYzhjOGIyMGM4Nzk0OTYyY2Q2IGxlZ2FjeS10cnVuaworMjU1NzkgNjRjNzMxZDE4MGU5MWUxZGQyNjc4NDE5OWUyNmZkMDZiN2Q4OGM0YyBsZWdhY3ktdHJ1bmsKKzI1NTgwIGRhNTE4ZmM3ODA2Njc0MzI2ODQ3YzZmOTg4NTgzNDZjYmI5NzkzYzUgbGVnYWN5LXRydW5rCisyNTU4MSA1NDQwZTRiMTdhZmZiMmVlM2EyYTIzNzg0YTI4ZDA0ZmY2ZTM2NTZiIHJlbGVhc2UyMi1tYWludAorMjU1ODIgNzhiZGZiYjZlNTllMTM1ZGU5YmExMWI3NWFhMmFjMDJiNjQwMjg3YiByZWxlYXNlMjItbWFpbnQKKzI1NTgzIDgxMjU1YjViZTIxOWZhMzYxZjM5N2U1NWIwZGNlMDRjNzBhZjM5NTkgcmVsZWFzZTIyLW1haW50CisyNTU4NCBkNmQxMmUyMWQ0NGY1MjcwYjZkNWEyOTlhZDI4OGY5N2ZmOWUwMjdiIHJlbGVhc2UyMi1tYWludAorMjU1ODUgZTYxZDI5ODJmYzEzNWQ0MTVjN2UzN2Q4NGVhYjE0Mzc2ZGJiNzBmZSByZWxlYXNlMjItbWFpbnQKKzI1NTg2IDAxYTU1YzNkNTA1YzBkN2FhZDc5NWI3ODg1ZDhjMTUyMGUxMzI3MDYgcmVsZWFzZTIyLW1haW50CisyNTU4NyBhNzYyZWRiMDQ2MWE3YmVjNDcwYTBjY2FhYTY3OTQwODY3YWExNTU1IHJlbGVhc2UyMi1tYWludAorMjU1ODggNjdhNWUyNWRjODhiYzc0ZWIxYzkwZjEwZmRlMDFjOGQ4ZDAyZGMxYSByZWxlYXNlMjItbWFpbnQKKzI1NTg5IDdmNGQxNWQ4NzhjY2Q2MDUyYzEyY2YwODExZWU1YTcyODYxMjVhNTQgcmVsZWFzZTIyLW1haW50CisyNTU5MCAyZjQ4YWU1YzhhOTQ3MGQxOWQyNGJjYmFjMDFjYjQ2ZjRhODA1MTVmIHJlbGVhc2UyMi1tYWludAorMjU1OTEgNGI2ZWRhN2QwYzhmNTRjZWNkMWE4ZDgwZGEzOTYwZDM2MjZmNzQyOCByZWxlYXNlMjItbWFpbnQKKzI1NTkyIDk5NjhkOGRkZGQ1M2RkNjI5NmNjYzFlNzAxYzk1ZDI2MzRjYWVhN2EgcmVsZWFzZTIyLW1haW50CisyNTU5MyBmYzQwNTZiOWNmMThjMTcxNjhhNzZlMDk1ZGUzNjAzOGFhZDEyZjg4IHJlbGVhc2UyMi1tYWludAorMjU1OTQgNDUyY2MwZjNhZTNjYThmNzlmM2ExMDU3MTg3NGY3MDZkY2IwOWQ1MSByZWxlYXNlMjItbWFpbnQKKzI1NTk1IDY0MWYyNjNmNGY0NGJiOGU0OTRkZWRiMDQwODQ4ZDRhMDIyOGZlZTkgcmVsZWFzZTIyLW1haW50CisyNTU5NiAxODJmMDE3M2E4ZWVmNWJjMTU1MmE4ODY2MDk0N2U1NzdkM2ZiNDQ0IGxlZ2FjeS10cnVuaworMjU1OTcgMjJmYzhiODIyZDQwZDJiMDYxMWUxMzkwZTc4NDgyMmUwYjkwYjA5OCBsZWdhY3ktdHJ1bmsKKzI1NTk4IDI5ODg3OWE5ZjlmNGJiNDViZjAwZmQ1Yjg3YjUzYWRlMjdhY2NjODMgbGVnYWN5LXRydW5rCisyNTU5OSA1MGM2NjY2ZmM0NTY3MDM5YTY4MDhmMzgwMDRjNmYzYjcwNzJhM2U0IGxlZ2FjeS10cnVuaworMjU2MDAgNDI3ZTMzMWI0MWEyZTFjZTQyOTRjMmRjN2ZlYzc3Mzg4NDI5MzIxZSByZWxlYXNlMjItbWFpbnQKKzI1NjAxIGFlNTc4YzhjNmNlZDM4MDc4NjU0Y2UxZWIzMzBlMzJkZGZiNzdmMWUgbGVnYWN5LXRydW5rCisyNTYwMiBlNTRmNWM1MGVmMDliOWRhZWFmMTZlZmQzY2ZiMGMwYjhjOTZiNmRjIGxlZ2FjeS10cnVuaworMjU2MDMgMjM2YWU1M2Q2NDY2MjI0NjMxMTdiZTk3NTA0ZTdkN2FjNjA0MzFiMSBsZWdhY3ktdHJ1bmsKKzI1NjA0IDc1ODRiNmYxYWZkZTQyNGRkNDA1MmU3ZTZhMTY1ZTBmYTdmY2YxY2EgbGVnYWN5LXRydW5rCisyNTYwNSAxNjNkZTcxZjE5NDI5MzhhYzJhNWNmOTFjOTAwZDE2ZWJlOWI0NDFiIGxlZ2FjeS10cnVuaworMjU2MDYgNmEyNzllMTcyZDIyM2U2ZmYyOWRlMWIwMzI0ODkwZTlmZmMyOWExMSByZWxlYXNlMjItbWFpbnQKKzI1NjA3IDcyZmRhNjRiMmEyZThjZGI0Y2MzODBjMzdhY2YyNGE4YmFjN2M3MDYgbGVnYWN5LXRydW5rCisyNTYwOCBlOGU0NjVlNmQ0NWY5ZjA5MzFhMTMzNjdiYTFhZGM4YjQ2Nzk5YmUzIGxlZ2FjeS10cnVuaworMjU2MDkgMjdhMGZiMDE5NTk5MTI0YmEzNjE5NTQ2NTYzNzRlYzE0OTE4ZDRkMCBsZWdhY3ktdHJ1bmsKKzI1NjEwIGFiY2VkNTU4MWMxODUwYTRhYzIzMTFmOTk4YjcyMzViNDhjNGM4MjQgbGVnYWN5LXRydW5rCisyNTYxMSAxZTdjYzhlNGJhYWI5NWE0YWI2NzZjMmQwOTBiNGJjZTRlNjkwODhmIHJlbGVhc2UyMi1tYWludAorMjU2MTIgMjcyZjk2NTM4NWM3MTNjNzhjMzBmYThmZDI1ZGY5ZWExNWNjYzFmMyByZWxlYXNlMjEtbWFpbnQKKzI1NjEzIGVkYWJhZDAyNWVmMWE1YjVlNTE3MmE1OTMwNTFhNzAwZmZhOTlkYjUgbGVnYWN5LXRydW5rCisyNTYxNCA5ZjExOTEzMmZmYmM0NjNlOTc5MGRhNWY5YjRmZTQ0NWNmNTJiZDM1IHJlbGVhc2UyMS1tYWludAorMjU2MTQgNzBlZGQyOTJjNzU3YWY2OGNhMjI1OTBjZWU4YzdkMTMxOWM5OWVlNCByZWxlYXNlMjItbWFpbnQKKzI1NjE1IDM3YjY5ODE1YWYyMmZkNTZmNjNkZmY0Zjg0YjU4MjNhZWNmODkzNTYgbGVnYWN5LXRydW5rCisyNTYxNiA5M2RiNzIzZDVlNDc4OTEyMGExODMyMjc0MWIzZmMxOTFlNjAyOWJkIGxlZ2FjeS10cnVuaworMjU2MTcgMDkzOTQyYmFlMWE2MzlhZjAzODExYTU0OGI1MGE1YTUwYzkxYjc2YiByZWxlYXNlMjItbWFpbnQKKzI1NjE4IDU0YjYzNjE2MGFjZGZlNjQ2ZDUyMmFjYWJmMmExMGM4ZmNiNTNmOGIgbGVnYWN5LXRydW5rCisyNTYxOSBhYTNiZjUyNWY0ODJjYjk4ZDU3NzI3YTQwZDUyZTA0MzEyYTE5NGNkIGxlZ2FjeS10cnVuaworMjU2MjAgMjE2Y2NkYTI4NGQ4NTg1ZTViZmRjMjZlNWI0NjIzMTczODUzN2IzNiBsZWdhY3ktdHJ1bmsKKzI1NjIxIDA3NTA1YTQ1MTAxNzZiZjM4MDRiZDMzMWU4NGNhODdjOTY5ZjE5YzAgbGVnYWN5LXRydW5rCisyNTYyMiBkMzA3OTdlNWNjMWFiODU1MzU5Mzg5NzE0MmUxMjBkMzc3ZGRjMDNjIHJlbGVhc2UyMi1tYWludAorMjU2MjMgNmMzNGNkM2E5OGE5M2UwMjhmZWU3ZWQ5ZDJjYjI1YWRkNjNkOTIzOSByZWxlYXNlMjEtbWFpbnQKKzI1NjI0IGFmZjIxNDUzYmVmZmYxYTMzMWEyNWY4NjA1ODE4M2NiOGEwMWY3NzEgbGVnYWN5LXRydW5rCisyNTYyNSAxN2U4YTNjOTMxMGNjMzkwMmY0YzdhNmU4ZWQ1MGJhNjYyYTllYjhiIGxlZ2FjeS10cnVuaworMjU2MjYgOGU5OWQ1NjgxOTg0NmVmNDA4NWY1Mzg1OGNmMjRkZDFmODc0ZDI3NSByZWxlYXNlMjItbWFpbnQKKzI1NjI3IDE1MGEyYTljNTViODdjYWVmMjQ3MzE2NjhlYWRkNWE3YTk2ZTI3YWIgbGVnYWN5LXRydW5rCisyNTYyOCA2NDg1ZDFiYTczNWNjNWVjNWE2ODMwMDM0ZjZlOWU4ZjE4NDhjNjNlIHJlbGVhc2UyMi1tYWludAorMjU2MjkgZjlhNWE4ZmMzMTc3OTZlMDFjNjBjOGQzM2YzZmJiMzZhZjM2MDM1NSByZWxlYXNlMjEtbWFpbnQKKzI1NjMwIDJhOGJmM2QwYmQ4NjVlYjcwYzE5ZTUyYzg2YTEyOTRhNmQzNmE3MTcgcmVsZWFzZTIxLW1haW50CisyNTYzMSAxMDAwN2FhNzhhNWU5NTQ2MjhkOTU3MmIzZTAwZjlmYmFlMmQzNWU5IGxlZ2FjeS10cnVuaworMjU2MzIgNjlhZDJhMWFkNjg5ZTE0NjBmMDE5ZTdlNzQwM2RlNDc1NTgwNzI1MSByZWxlYXNlMjItbWFpbnQKKzI1NjMzIDBiYjE3ZDNiNTE5N2QxNmIwMmQ2YzhjMTljMDU4NTk2NDIxZTQwYmUgcmVsZWFzZTIyLW1haW50CisyNTYzNCAyODM4MTY1MjllNzI1MGZmZWM1NDQyNzg5YTJiNjQzNjQ0NzBmZTk3IHJlbGVhc2UyMi1tYWludAorMjU2MzUgNzYzZDVhZTg5ZTllZDg3YzA0ZDA5YWZkMTgzZTJmZmI2MGI1MmNlYyBsZWdhY3ktdHJ1bmsKKzI1NjM2IDE3Y2EyOTA3ZDEzNTlkMTMyMmU4OTNlMDM3MjVkYjZlYWVmZTAyOTEgbGVnYWN5LXRydW5rCisyNTYzNyAzYzY4NWMwMzc3OTRmYTgyZGQ4MTg0ZjMwYWRjY2M4NzdjOGZkMzg5IHJlbGVhc2UyMi1tYWludAorMjU2MzggZjJkYTI1OGFhYzIwOTY4NTY2YmU0YTY0OGI2NzU2NTRmNzQ2MGZhYSByZWxlYXNlMjItbWFpbnQKKzI1NjM5IDk4OTE5NThmYzRiMjk2YjcxMTQyY2ZkYTMyMWQ4NmRhZmUwZTBjMTcgcmVsZWFzZTIyLW1haW50CisyNTY0MCBhYTQ0ZDM3OTliNDdiYmIzNTJhYzZjMTJlOGNjODE5MzljZTFjNWE3IHJlbGVhc2UyMi1tYWludAorMjU2NDEgNmQ0ZTA1ZDI1NzU5NmY0ZTYzNThlMTA2YjllMDNhYmI1MmYxNDRiMSBsZWdhY3ktdHJ1bmsKKzI1NjQyIDIyZTBkYWRhNTZkN2I4NjRiYjNlZDUyNDhmYTdjNWY2MDdiYTY5MTQgcmVsZWFzZTIyLW1haW50CisyNTY0MyA2YTM0OGEzOTAwY2RmODM2MDUwMGJmMjU1NGZlNTMyODI0M2MxYzZiIGxlZ2FjeS10cnVuaworMjU2NDQgZjAzNDZkOTMwNzcwMTZlMmM2YTEzMTdiMDIyYmU4NjA3ZWNhOGIzOCBsZWdhY3ktdHJ1bmsKKzI1NjQ1IDVhZGU3ZTgyMDRlNTIwMmY2MTE1MTQ3NWVlYTFkOTM0YzQ3ZTNiZmUgbGVnYWN5LXRydW5rCisyNTY0NiAxNjBlMzM1ZmJlNmZkZDJiNDFkZWQxNjM2MjljNWYzYWUzNjA2OTczIGxlZ2FjeS10cnVuaworMjU2NDcgNTZmNGRmY2NhOWQ4MWZjMTUyYjUyNGRmODlhODc2ODVmOWZlMTQ2MyBsZWdhY3ktdHJ1bmsKKzI1NjQ4IGNiNmM4NWQ4MzkxZjVlZDUxNzI1MjdjNGM4MDIwYzkyYjIwODU1ODEgcmVsZWFzZTIyLW1haW50CisyNTY0OSBlNGU1NGZjNWZiM2QzOTUyODhhYTFkMDRkNjY2ZDBmZDhmZDJmYjM4IGxlZ2FjeS10cnVuaworMjU2NTAgOTA3OGYyOTc2YmNjYTNjMDQ0ZTg4ZGRhNWY2NjNhMTRlMjQzNGUyNSBsZWdhY3ktdHJ1bmsKKzI1NjUxIDE4NzM4MzNjNjE2ZGY0MzNiMTdkYWMxZjk3NmIzMzk5YjI3OGViM2IgbGVnYWN5LXRydW5rCisyNTY1MiBhNzk1ODk3MWRlMWM3MmRjM2NlZWE4YzQ5NGY2MTgzNzE2NDdlZTk5IGxlZ2FjeS10cnVuaworMjU2NTMgMTI1NzdhZTk1OTU2MjMyNjZjYzk5ZmVlODhjMjgyMGQ0NTAwMTgyOSBsZWdhY3ktdHJ1bmsKKzI1NjU0IDQ5ZWRiZWU5ZGFlMjIyNDhjNWQzMWM4NjQ3YTMyMDllMjc0NjdmZTQgbGVnYWN5LXRydW5rCisyNTY1NSAyNGFmODQyMDMwYTBiNDc4Nzg2M2E0OTlmYWNiOThmZDViNGMwNmU2IHJlbGVhc2UyMi1tYWludAorMjU2NTYgYzZjMWE1ZmJiNmMxZjNlZGVlZjlmNzdjZGY2OWFhNTMwYjQyYmQxYSByZWxlYXNlMjItbWFpbnQKKzI1NjU3IDNjNzRhMWIxMjg3YWZhY2NlMmI4N2E3YTg5MDY4MzE4ODBkZjFhNzkgcmVsZWFzZTIyLW1haW50CisyNTY1OCA5YTA5MWQ3MjEzNmFjMDVmMTVlODQ3NjJiNjgxOTc3NzdhZjdkNzE5IHJlbGVhc2UyMi1tYWludAorMjU2NTkgNTQzYjJhNDg0NjdiNjRjZGJlMzY0NjY5MjUwMjE4OGFjMjkyZTc0NSByZWxlYXNlMjItbWFpbnQKKzI1NjYwIDYzM2E5NmE2NTAwOTE0OGVjZTkzZWM4YWY4NDMzOTcyY2Y1ZjA2YTcgcmVsZWFzZTIyLW1haW50CisyNTY2MSA0MWI1MTUzZDcwNWU1ZjdjMGE2ODFiZjU1MWViMjMwYzM2MThjMWIxIHJlbGVhc2UyMi1tYWludAorMjU2NjIgNTRiY2M1ZWMzYTUxMjU1NzJkMDkwMTViYTM5MDUzMjJkZTQxYWMzNyByZWxlYXNlMjItbWFpbnQKKzI1NjYzIGEzNDYwY2IyM2YxOTQ1MTU0ODdlZDI4OTQyMmMyNTliZjBiNTkxNGMgcmVsZWFzZTIyLW1haW50CisyNTY2NCBhMGNjNTI3MzVlNmU0NjhkOTRmZjIwZWY2NDQ2MTk0Y2MyNzkzYWY1IGxlZ2FjeS10cnVuaworMjU2NjUgYzQwMzYzMzM1NTg1NTE5NjY2OGFmNTczNzA2ZGIyY2ZmZDhhYjdhOCBsZWdhY3ktdHJ1bmsKKzI1NjY2IDljNDM1YjFiNTlhNTZjMDQ0YWZjOWYwN2MwMjQ2OWE3ZWI0MzY3YWQgbGVnYWN5LXRydW5rCisyNTY2NyBlYTNiMTg3NzQ2ZjdkNTM5ZTdjMjIzODMxM2I4NjE1ODdlOWZhNGJiIGxlZ2FjeS10cnVuaworMjU2NjggMDg5YWI1YmE5NDY2YjQ2ZWRhNjAzMjM5MmUyNjYxZDlhNGNmZWVkZCBsZWdhY3ktdHJ1bmsKKzI1NjY5IDk5ZTFmZWMyNmI0MDVhYmI0NGI2MjEwZGEzZGNiMDUxYzBhZWU0OTIgbGVnYWN5LXRydW5rCisyNTY3MCBiNTVkN2JjMDVlYzg4Njc2YjJmMTA4ZjQ4OTY1ZTMzNjA0YjI3MjIzIHJlbGVhc2UyMi1tYWludAorMjU2NzEgMTM0Y2I0MTg2OTQ2NmFiY2Y0MmY4MDhlYjViYTFhZGM3ZGZlMGY0YyBsZWdhY3ktdHJ1bmsKKzI1NjcyIDA0OTczOWNhMGMxMzVkMWE1MWMxZTUxMjkyODliYTk5NWRmNDkyNmIgcmVsZWFzZTIyLW1haW50CisyNTY3MyAzNWM5YmU2OTM4ODhlMDBiZGFmODUwYWEwZmQ4YjBkOTg1NjA5N2FmIGxlZ2FjeS10cnVuaworMjU2NzQgMTlkMWQzNTAyMGJkNDM3ZDNiZGI0NjEyNDBjZWYwZDIwNmE0ZDM4YSBsZWdhY3ktdHJ1bmsKKzI1Njc1IDNmNmRkZWFjNDg1NmI1Mjg4ZmUwNzAzZjJjNTRmMWEwOTdkN2RiYmIgcmVsZWFzZTIyLW1haW50CisyNTY3NiBhNDE1Y2EzZTg5MDM4NjAxNGI3ODAxMmU1ZTJlODRiODZjZjllNjdlIHJlbGVhc2UyMi1tYWludAorMjU2NzcgMDQwOGVjZDg0YWEyYTI2MDQ5ZjJlOTFkZDRmNmJlNjZmZTVjMzI1MyBsZWdhY3ktdHJ1bmsKKzI1Njc4IGNjNzg4YjNiMjFiNjIyNGIzNmQ3Njk5NWIzOGVjZWRkZmRmZjcyNDQgcmVsZWFzZTIyLW1haW50CisyNTY3OSBkYzgwY2UxMWZhZTM5MDlhMzE0MTc1NTgwYjRiMzI0YTBiNGEzMWY4IGxlZ2FjeS10cnVuaworMjU2ODAgNWY0ZmZiZmU2YmU2ODFiNWY5NjBiNmIxOWY0MzkwZmYwM2FiYTZiOSBsZWdhY3ktdHJ1bmsKKzI1NjgxIGFiNzRmZjgwZjlkMGFjNTNiMjMyMmNmNWZiZTYzODk2OWU1NDBlNmUgbGVnYWN5LXRydW5rCisyNTY4MiBkYzYwNTRlNWI2NDJjZDNjM2YxZjYxN2Q3ZDQzMjkwZTI0YzJkMGYwIHJlbGVhc2UyMi1tYWludAorMjU2ODMgMDk2Yjc1MTIwZTcyYjQ0ZmU0YTMyZGUyOTNjZjhjYjIwMGVhNmIyMSByZWxlYXNlMjItbWFpbnQKKzI1Njg0IDVhNzc4YWUxODUxMjM4OTFjZWVhYTBkNjE5YWM0YTJmYTVmODdjYjMgbGVnYWN5LXRydW5rCisyNTY4NSBhYzk3NmQzNjcwOGQzZDc4MWMwZjdhNjA2NjhjNzE0ZWY0ODA2YmJiIHJlbGVhc2UyMS1tYWludAorMjU2ODYgMzFkOWQxMWEyOTRjYTk3ZDViY2ZiOTFjZmY5ZWM2MGIyNDNjMWRkZCByZWxlYXNlMjItbWFpbnQKKzI1Njg3IGRmZjBhNDRiMjM2OGU0MTRhNDQ1NjhlYWY3MmExMzVmZjk2MGI0YjIgbGVnYWN5LXRydW5rCisyNTY4OCAxNmYwZGVmYTQ1YzIwZGYyNjA0MTYwYWYzODEzY2MyOTEwMjJhYTY5IHJlbGVhc2UyMi1tYWludAorMjU2ODkgMzk5MjU0NGRjMTQ1ZmJlYmZiMTM3MzUwMjg2NmNjNDk0ODgwOWM2YiByZWxlYXNlMjEtbWFpbnQKKzI1NjkwIDZkMDhhMjk1NWJiNjI1MTg3Mjc5MjFmMTQwODgxMmVlNzVkODMwNzAgbGVnYWN5LXRydW5rCisyNTY5MSBhNjE5M2E4N2Y1MDBlMjc3N2IzZjE5NjgzOGU2MDJiNmJmN2ZiODU0IHJlbGVhc2UyMi1tYWludAorMjU2OTIgMWE3NTBmYjkzYjE2OTM2MWNiYjBlZjhkMDQ2MWY1MDYwZjJlOTZmZSByZWxlYXNlMjItbWFpbnQKKzI1NjkzIGYyZWI5NWZiNDUyOWUyNzY5NTZmMDZhZGVhYTdiMzIyYjE1NDA4NWYgcmVsZWFzZTIyLW1haW50CisyNTY5NCAyOGUzNzkwNWJlZTQ1ODI5MzQ4NTk3M2JiMGMxNzRjZDI4OThlMzhkIHJlbGVhc2UyMi1tYWludAorMjU2OTUgNzk4NTZhZDc0OWFiN2RjNzM5ODZhOTMxMjMyMDZiNTFjYzc1ZDNmMiByZWxlYXNlMjItbWFpbnQKKzI1Njk2IGRlYmIwMDVmMTY3M2EwMzkyZjczZDA3ODk5MGViODAxYTFkMjEzNjAgcmVsZWFzZTIyLW1haW50CisyNTY5NyAwZmQzODMxY2YyYTA3NTdhM2Y2MzcwNzVkYTYyNGY4YzI5ZmYwMmRlIHJlbGVhc2UyMi1tYWludAorMjU2OTggMDI5ZTRjYmQyMzEyOTliMWJkMWNjYTJhYWY2ZmRkNDRlZTEzNGNlMiByZWxlYXNlMjItbWFpbnQKKzI1Njk5IGM5MDFkMTU4YWQ2ODkzNmU5YzExNTE2ZjIzYWQyODhhMTNiMDZiZDkgcmVsZWFzZTIyLW1haW50CisyNTcwMCBhMzRmOTE5NWY2MTFlNzNmNjMyNWZlZjRkYTNiMDExODA3MjA4MDk1IHJlbGVhc2UyMi1tYWludAorMjU3MDEgNmMzZTMyMzU3ZDkxMDhjMzI3NjE2YWJhYTJlMWJiZGFmMzZhYmM5YSBsZWdhY3ktdHJ1bmsKKzI1NzAyIDdlY2M0OTExN2Q3ZTg4YjY3MjUwZjRjMzQzN2YyNjNiN2Y3ZDk5YjEgcmVsZWFzZTIyLW1haW50CisyNTcwMyAyNTQ4ZTJmMzIzZmE3ZTljZTNmMDg2NGIzNzI0Y2UwNDkwZDczY2JmIGxlZ2FjeS10cnVuaworMjU3MDQgMTJkMjA0ZDkzYWYzNjUzNDUyZmNmMWMxNjgyY2M2YTQ1Mjk3NDY1ZiByZWxlYXNlMjItbWFpbnQKKzI1NzA1IDY0MWZiNGI0NzIwZTc2OWNlYjgxZmNkNDYyMWE1NzViODMwMTJjNzggcmVsZWFzZTIyLW1haW50CisyNTcwNiBmOTc2ZmFhMzMwZWExNjdkODJhZDVlZmJhZGQ4NDU0OGZhMmUxOTgyIHJlbGVhc2UyMi1tYWludAorMjU3MDcgMWY3MzI1MWM2MjVhYzYyMjA5ZGY2NmM2Mjk4YWYxODY4YmIzNGNhYyBsZWdhY3ktdHJ1bmsKKzI1NzA4IDI3ZjM2ZjRiZjUyNThiZWM0NTAzMzMxNGZiZmQ1MDgyODIzNGUwZTQgbGVnYWN5LXRydW5rCisyNTcwOSBiODc5ZTY4NTFiZTNiOThmMWIxYzBhNTEwYzkyYTI1Y2IyNzZlYjQ4IGxlZ2FjeS10cnVuaworMjU3MTAgNTFhYTllYjI0ZDgxZjYyN2IwZDljZjI3YjdmNTNjM2JlZWM2MmY3NSByZWxlYXNlMjItbWFpbnQKKzI1NzExIGZiOWEwMDgyMWMwZDUwZDMzZjgwZGM2ZGMxMmJjZjRiNzQzOGQ0NmEgcmVsZWFzZTIyLW1haW50CisyNTcxMiA0Y2U1MTdiM2UzMDFmNmNjNTJkNjRkYTg4ZDExY2ExYzliYzE4ZTk2IHJlbGVhc2UyMi1tYWludAorMjU3MTMgYTI3MzNmZWZmYjM2Njk3YTFjMTRkYmI1YWY4NjQ5YzkwNzI5NWI3OCByZWxlYXNlMjItbWFpbnQKKzI1NzE0IDFiYjRkMmJhYmMxNDVjNmYyYjVlN2FjMzBjMGYyOGJjMjM3MTU5MjggcmVsZWFzZTIyLW1haW50CisyNTcxNSA1YTlkYWRhN2NiYWMzN2Q1NWQ3MjQyNjg5MGE1NWIwYzAzYWI0MzFhIHJlbGVhc2UyMi1tYWludAorMjU3MTYgZGNhNGE3YzM2ZWI5OWNjOWE1YjQzZThiYTYzOWMwMzhiYTEwN2RlZSByZWxlYXNlMjItbWFpbnQKKzI1NzE3IDM1MTNhOWQwOTBhOWE5NWUzZmU0Y2QyMTVjZTM2Mjg2MGY3YmFhMDMgcmVsZWFzZTIyLW1haW50CisyNTcxOCA5MmViZTQ5ZDIyYzUzYmQxNThhOWNmNjE0ODg4ZTBlOWFjYzMzYjViIHJlbGVhc2UyMi1tYWludAorMjU3MTkgODRmMmM3NzgzZDMxMDE2NWI3YmZkODRmODA4NjE1ZGI1NzYyOGQyYSByZWxlYXNlMjItbWFpbnQKKzI1NzIwIGRkMTdhYWRlM2JlYjhhNTUyNDVlZmJhNjdlOGJiYjM3ZjQxMDE1N2YgbGVnYWN5LXRydW5rCisyNTcyMSBkZjk3OWJkZDZhZWZkMmJlZGIyNDUzNzAwODgwNDIyMmVmYzg1NGZjIGxlZ2FjeS10cnVuaworMjU3MjIgYzhhNmVhMDBhOWUxYWRjYmIxOWE2MmMwMWVjZWQwNDI1MWJmMGIyNyBsZWdhY3ktdHJ1bmsKKzI1NzIzIDE3ZDU2MTI0M2ZmODEyZGQxMmFmNmVkODA1NzViYWFjZGQ1NjJlZjcgbGVnYWN5LXRydW5rCisyNTcyNCA4ZWQ2NDdkMzFmNDRlZjRmYTk1YjE1YzZmZTEyMzU4NDJiZTAwYzE0IGxlZ2FjeS10cnVuaworMjU3MjUgNmFjNDE1MGM0ZTg4NDFhMjliMjFiNmNhMjY2ZjNiZWY4OTE5YTI5NyBsZWdhY3ktdHJ1bmsKKzI1NzI2IDM0Y2JlZmQyYzNmZTk2Njc2NTU4NTcwMDUxN2U0MThmN2M4YzU5NDMgbGVnYWN5LXRydW5rCisyNTcyNyBjODU0YjZkMGIyYzA0YmI3MTk3N2ZjMWM0ZjI0ODk3M2Q0NDhhYmU2IHJlbGVhc2UyMi1tYWludAorMjU3MjggMTIxZTE5OGY2ZGRhOWU4Yjk1M2Q3NDZmMDE0MmU4MjQ0MTJhMDRkMyBsZWdhY3ktdHJ1bmsKKzI1NzI5IGYyYjZjY2MwMDgwODUxNGNhMzRjMWJiZWQzNTM4OTQyMGI3NTdmMjggbGVnYWN5LXRydW5rCisyNTczMCA3MTVkNjMxZWVhMmY0MjYyM2FjZmNjOGFmZmI1MTQxMmQzYTA2ODU0IGxlZ2FjeS10cnVuaworMjU3MzEgN2YwZDM5MDE0ZTJlMTVlYTlmYjNkYWExMDBhOTI2YzkyNDJkODI3MSBsZWdhY3ktdHJ1bmsKKzI1NzMyIGMyMTA1NjJlMTU1ODBjNjI2NTE3Y2YyYjkyZmM2NTc1YzZhMzM0YmYgbGVnYWN5LXRydW5rCisyNTczMyBiMzU3ZGYzMDFmNWYyNTZmMmYzNGFkMjlmMzM4N2FiNTMwNGI3NTNjIGxlZ2FjeS10cnVuaworMjU3MzQgMDcxZjUwM2U1ZjRmNGFlYzM1M2I0ZjlkMjk5MmFjYTNhMDZiYjRhNCByZWxlYXNlMjItbWFpbnQKKzI1NzM1IDBhOTZkYWI3MGExNTc0ZWI4YTBiZDVjNDFmYjdkMDg3ZTU3N2ZkNDUgcmVsZWFzZTIyLW1haW50CisyNTczNiAyNDE3Njk0MzI0ZWYwOGQxMzBmZjNmZmJlZTliZWM4ZjFiOWM4NDI1IGxlZ2FjeS10cnVuaworMjU3MzcgODYwMGRiYTRmNTlkM2QyNTIxNzIyY2Q3ZGFhMTIzNzczODllNWIwOSByZWxlYXNlMjItbWFpbnQKKzI1NzM4IGNmOWYxYjZkYmEzYjQ3ODdkZWI5ZmI1ZTljMTlkOWJjZWJiY2ViYTMgcmVsZWFzZTIyLW1haW50CisyNTczOSA3NzVkYTYxNzhlODY1NTdmMDFjMjdhZGI2MTYyYzE4ZTY5ZWQ3ZDk5IHJlbGVhc2UyMi1tYWludAorMjU3NDAgNDY2OGQxYzkyNmNkZjA0OWNmNThjZjlhN2FhOTNhMmRhMDgzNzA3YyByZWxlYXNlMjItbWFpbnQKKzI1NzQxIDU1NTEyZmUxZDZmMTRhNDE3MmU1NGU3NTE5Mzc4ZWQ5NGYzYWFjN2YgbGVnYWN5LXRydW5rCisyNTc0MiBiOTAwNGI4MzY5OTRkOTQzYzk0Y2EwZDRmYzM2MzhjYmEzNDQyMzgwIHJlbGVhc2UyMi1tYWludAorMjU3NDMgNjhlN2U4ZGZjNWY1MDJiZDYzZTQ3MmYwZDRhODY0OWM2YjllMWE4MSByZWxlYXNlMjItbWFpbnQKKzI1NzQ0IDE2NWUyMGFjMGFiMTJhN2MyOTQzOTM1OTQ0NWQ5ZmVhMDcwNjI3YjEgcmVsZWFzZTIyLW1haW50CisyNTc0NSBkNWY2M2U3Y2FiMzFiZDRiNjUzZWQ2MWJmZjJjMTBmYzc4MzFiYzYyIGxlZ2FjeS10cnVuaworMjU3NDYgNDJlNmMzY2RjMDk1ODI3NmM2MjI2MDE5ODgwNWI1MTcwYTVlZTMxZCBsZWdhY3ktdHJ1bmsKKzI1NzQ3IDhmYzlhNTc2ZmJmZmM0MWRhNTEwYzBmY2YyMTE3YzNjZDU3ZDQxMjMgcmVsZWFzZTIyLW1haW50CisyNTc0OCAwOTI5ODk0Y2RmOTVmYzA1NjFhZjIwYjE5Mzg3ZDA1NjliOGNhZWE0IGxlZ2FjeS10cnVuaworMjU3NDkgYjU5ZThhOGRmNTdlODY3YjJiNTU4ZDliYzEzMmUxNzY0MTA5ODRlMiByZWxlYXNlMjItbWFpbnQKKzI1NzUwIGM3M2M2YTViNmE4MDQ0YmUzNzk1ZmUwMDUwNGNjNTZiYWNlOTc2OWEgcmVsZWFzZTIyLW1haW50CisyNTc1MSBmZDA1MGFjMWUwY2U1YjI4ZGY3ZWFlZGJhMDlkYmUzOWMwN2EyZTUwIGxlZ2FjeS10cnVuaworMjU3NTIgYWY4ODQxYWMyOTg5ZGJhYmUyZmRjYzQ2NjQ0ODZlZTA1NTI2ZTg2MCBsZWdhY3ktdHJ1bmsKKzI1NzUzIDExZjZmOGMxY2U3MzRmOTg1NzdhYWVhOThhNWVlNTkxZDZjYTg1NjMgcmVsZWFzZTIyLW1haW50CisyNTc1MyA3NjU0MzRlN2FhMDE5YzFiYjgyZjk4MTNiODAyNTgzMDg2N2NiZGMwIHJlbGVhc2UyMi1tYWludAorMjU3NTUgZTg4ZDVlMjY4N2VlNDczMDY2ZWZiODAzNmNkNzkzOGI5NGQ5MGVkMCBsZWdhY3ktdHJ1bmsKKzI1NzU2IGFiNjYxNmU2Y2ViZmQxZmI5Yzc4ZTJjNDlhZjA4YTYwODk0ZmNjYmYgbGVnYWN5LXRydW5rCisyNTc1NyAwYzhhMzg1ZmM4YTAxMzBhMTBjM2M4MGZjODdjNTljNjg0ZmMyMzc4IGxlZ2FjeS10cnVuaworMjU3NTggNjcwNmI4M2QxYmQxNWMzOWFiOTVkZjQzNzlmNGMzNzlkZmM4NWJiYSBsZWdhY3ktdHJ1bmsKKzI1NzU5IDEzMmEwNjRkYTY1NmU1MjNlNmYwNWNlODVmMTMyN2MyNGRiODAwMGYgbGVnYWN5LXRydW5rCisyNTc2MCA5NjNlODE0ZTY5Y2NmNWZlNjAyYzRiYzBjMjY0YTA1OWYzMTc0OGM5IGxlZ2FjeS10cnVuaworMjU3NjEgOTg0ZWI5OTVmYjllZGMzYzVjYzFlODgyMzBkYjI2NzIxY2M4ZGU2ZCBsZWdhY3ktdHJ1bmsKKzI1NzYyIDcxODU3ZjE2MjIzMTE1NTYzMWJmMTZiMjE1NDk1YjU1M2E4MGIxNjMgbGVnYWN5LXRydW5rCisyNTc2MyA4YmZjZjY4MjcyNDgyYmFiNzMxMDQ3NGIyMTMyNzlmNTE5OWZhODAxIGxlZ2FjeS10cnVuaworMjU3NjQgYTZiYjgwMDI4YWNmMmRjYmI2NDJjZWQ3OGJiNjM0MWNiZmY4Nzg0ZCByZWxlYXNlMjItbWFpbnQKKzI1NzY1IDM1MWY5YjRkODBjNWQyNzBjNWJkM2VmNGM1YWY5MzExZTUwYTc0ZDAgbGVnYWN5LXRydW5rCisyNTc2NiBjZWNkYTRlY2MwOTBjYTY5ODhkYjhkZDYyNzcyYmU5MTgxN2IyZjZkIGxlZ2FjeS10cnVuaworMjU3NjcgZTE1MDEwOWQyYjljNjBjOWFkODM4ZTI3NGIwMDU0OGM5MDVjMDhiZSByZWxlYXNlMjItbWFpbnQKKzI1NzY4IDA3M2RiNjhhMmMyYmJlZmZhMWI3YzE0NjdmZTlmOGUzYjEwOWFhYTAgcmVsZWFzZTIyLW1haW50CisyNTc2OSAwYzhlZDM4NDFhNjRmOGY4MjZiZmQ1Nzg4YmI3OTAzMDE3NGEwY2JiIGxlZ2FjeS10cnVuaworMjU3NzAgYTNlZTcxMzIwMzZhZjA1ZDExZWM2MjJhYjFlNjg4YzZkNjMxNzhlZSByZWxlYXNlMjItbWFpbnQKKzI1NzcxIDRlODIzYmYyNTEyY2VlODdmOTY5MTc2MzRjMDllMmU2YjBiMWU0ZGEgcmVsZWFzZTIyLW1haW50CisyNTc3MiA0NTdiZjE4NGU3YmE4YjU3OGUyYWU0YTBhYTc3ZjZlY2U3MGVmOWUzIHJlbGVhc2UyMi1tYWludAorMjU3NzMgNGE0NTk3YmM0ZWEyMjI3ODQwMTRlMGNjNGEzOGFmNmVkZDJkNTNhZSByZWxlYXNlMjItbWFpbnQKKzI1Nzc0IDM2YzUyY2ZiZDBiNzVlNjA1NGQyZTBmZWU4ODY4NTI2OTQzYjdmMjEgbGVnYWN5LXRydW5rCisyNTc3NSA5MjdiZDRmNmUzNWIyZWU4ZTYyNTJhNzA0NGNiYTZkYjQ1M2QzMDQ5IGxlZ2FjeS10cnVuaworMjU3NzYgNTNhMWYyMWIwNDUxNDg5M2M1ZDdkZWM1NTE4YTlhMTJlYWViZDMzOSBsZWdhY3ktdHJ1bmsKKzI1Nzc3IDcwMTM0MGM4NzcyMzE5YmM2ZTRlNDA5YjQ4OGE3ZmFmYzg3ZWJmMTAgbGVnYWN5LXRydW5rCisyNTc3OCBjNzhmZmJmYzM2ZDkzNjYwZGRmYThjN2QwMTEzZjAzZWIzYmQ0YzE1IGxlZ2FjeS10cnVuaworMjU3NzkgZGYzNTY1NmU3ZDk5NzE4ZmY3YTdkZGVjZmFkZDU4MmRhNDhjYTYzYSBsZWdhY3ktdHJ1bmsKKzI1NzgwIGU2MjE3NGM3ZDhlNTE3Njg2Zjg4NGVmZDAwYjdjOWFjYzkyMDAzZDUgcmVsZWFzZTIyLW1haW50CisyNTc4MSBiMTQ4ZTE4YWU3N2FiMDM5MWIyNzI5YjNhODVjYTRkYzgzODA1N2IxIGxlZ2FjeS10cnVuaworMjU3ODIgN2FmYmJlMjg4YWYzZGE2Y2Q5YzhiOWRmYTljZTFhNmZiYjU1Y2FhYiBsZWdhY3ktdHJ1bmsKKzI1NzgzIGY2NGExMTk3YTUyYTQ3ODE2NWJhYTM5ODU2NGQ3NDQ4YmNjNzc5ZTEgbGVnYWN5LXRydW5rCisyNTc4NCA5ODk1ZTJlMzM2YzNhMTBmNmJkYzFjNzViODNjMGFlYzVmZWYwZDcyIGxlZ2FjeS10cnVuaworMjU3ODUgYjUyM2E0NzBhMGNlOThiZTk0Y2EwYWE2NDRkNGY3YjRiMzBhOGEyMCBsZWdhY3ktdHJ1bmsKKzI1Nzg2IDVjM2EyNTkyMzhjZmY1M2M0Njc3YjBjYmE1NTdiMTgzYjdiNjA4NDkgbGVnYWN5LXRydW5rCisyNTc4NyBiZTQ5MmRmODNkMDMwMDhiYTU3Y2FlMTI2ZGI5MTU0NDI5NWY5MjVjIGxlZ2FjeS10cnVuaworMjU3ODggZjUyZDZhNjc1ZjVmNzg3NjMxNDZjOGNhMWJjOTgwODRjYWJlYzVhNyByZWxlYXNlMjItbWFpbnQKKzI1Nzg5IGVhYzU2MGNjMDM5OWQ3ZjMzOGIwMzdhZGZlYWE4YWI2MDY4ZDhjZGQgbGVnYWN5LXRydW5rCisyNTc5MCBjMTA2OGIwOTI4NzlmY2U2MWI5NjliYWE3MTI1OWM5ODYxZjA0YzRkIGxlZ2FjeS10cnVuaworMjU3OTEgZjRlMjRhYjBkMTI0YWVkYjU4OTQ5OTQ5NTAzYzEyYjU2NWVlMTBkZiByZWxlYXNlMjItbWFpbnQKKzI1NzkyIDcwMDJmMjRmODE4ZmIyYzdlMDlhN2M4ZmRiYzA4NWUxZDZmYzhiMDAgbGVnYWN5LXRydW5rCisyNTc5MyA1MDNiOTJlNjZhOGM3NjVlZWNmNTljMGYwY2FiZWIzM2FhMzM2YjM1IGxlZ2FjeS10cnVuaworMjU3OTQgODMyMDU4ZjIxYWEyNzQ0NTVlMjNmNWE4OGUzY2NjZDgzMThlZjljYiBsZWdhY3ktdHJ1bmsKKzI1Nzk1IDIzN2FkNDNmODlhOGY5NDUwMmZkZDA0MDNmNjQ2NDNjMDVmMDI0MDMgbGVnYWN5LXRydW5rCisyNTc5NiBjMGFlNmY0NmYyMzE1NzQzMjJlY2FiMDZlZjJhMDAwNWFlNGM5ODgzIGxlZ2FjeS10cnVuaworMjU3OTcgZDhkOTgxZDBhNDdlNWYyYTllZGY1OTIwOTk2ZTBkZWQ4MjMwYzE5YyBsZWdhY3ktdHJ1bmsKKzI1Nzk4IDg4OGZjZDliODU4ZGNlMzMxNzM4MGM5OGJmN2IzNTIxNGFjNTdkMWIgbGVnYWN5LXRydW5rCisyNTc5OSBkMmU0NTdjNDRiZjI3NTc1MjlmYjVhYzFlZjFlNzE2NjdkYjI2Mjg5IGxlZ2FjeS10cnVuaworMjU4MDAgMDhmNzQyZGY5OTM3YTJjY2IzYzlkYzU3MmMzMTgzOTMzMjhjNGMxNiBsZWdhY3ktdHJ1bmsKKzI1ODAxIDI3M2VlZTM4NzEyY2ZmZWExYjNhN2Y1YjE4NGQzZDY5Njk1YzFmNzMgbGVnYWN5LXRydW5rCisyNTgwMiAxMDg0NmYxZTE1OTJmOTlhYmJkMGI3MGYxYWUzZDQ5NTI5OTU2NDQ0IGxlZ2FjeS10cnVuaworMjU4MDMgYjE4MzZjY2M5NTFjOTdmNTAxNWM2ZmM1MjQwZTZiOWViYTliMzZmZCByZWxlYXNlMjItbWFpbnQKKzI1ODA0IDlhZmVhZjk5NzlhMGEyYmExZjg1NzdiZWI1MzQ3YWQ5ZjE1NDg4NTcgbGVnYWN5LXRydW5rCisyNTgwNSBkMWFlY2Y2NjMxNjc5MGU1ZTgxZjg2N2JlNTYwYWM1YTlkMDk4MzhkIGxlZ2FjeS10cnVuaworMjU4MDYgNzJmZDg0MTY5ODRiODA4NTA4ZDQ2YWJhNmUyMmJhMWFlMTg2ZGMyNiBsZWdhY3ktdHJ1bmsKKzI1ODA3IGVjMWE1YTAyOWY3NGM1N2ZlMjgyOTM2YzUwN2Y3ZWI3MTEyZWI4OTQgbGVnYWN5LXRydW5rCisyNTgwOCBkNWFhZDZjNTgxYzlhZTQ3M2U5MmM1ZDJjNzQ5NjEwOTBjMmQ2ZDNkIGxlZ2FjeS10cnVuaworMjU4MDkgZWY2ZTJmZWY4MWQyYThiOGJhOGUxMjA1YmIwOWMzNTk3ZTdlOTc3MSBsZWdhY3ktdHJ1bmsKKzI1ODEwIDllOGFhMjk1MjNmMDk3OTc2MmJmZGUwZWI1YTUxMzNmZDk4NjZjNTQgbGVnYWN5LXRydW5rCisyNTgxMSA4ODFiNjQ4NGYwZGZhYTYxYjI3ZTM4MjdmMGVmMGY2YmU1MTE4M2YxIGxlZ2FjeS10cnVuaworMjU4MTIgNTIyMDhmZTRhYzQ3MTE0OGNjNzFmNzQ4YjRjNWQwOWFjMzFiMzhiMSByZWxlYXNlMjItbWFpbnQKKzI1ODEzIGQ4NjRlMmJkOTFhNmUxMTQzZmU5ZGZiODFjZmQ2MjNhMWVmNGNlMDIgcmVsZWFzZTIyLW1haW50CisyNTgxNCAyMzkyNWRmNGUzNzEzMDY4ZmVkODllNTBiODhiZjQyMjEzYmY2MWM4IHJlbGVhc2UyMi1tYWludAorMjU4MTUgN2I1ZDZmMWYxYzZlYzc2NTNiMzk4MjIyMWVlZmY2Yjk0ZGEwMzJkZiByZWxlYXNlMjItbWFpbnQKKzI1ODE2IDJhN2Y3MWE5YmQyZTMwY2VhZmNhZGRiNWUzZTVkNzhiOTVjODY3ZDggcmVsZWFzZTIyLW1haW50CisyNTgxNyAxZmUzODAyMzM2YTM1NmNhZGU4N2VmNjBjNmYzYWM0OWZiZDhjZTc5IGxlZ2FjeS10cnVuaworMjU4MTggYTM2N2JjNjFkNWI2MDdlOWYxZWQ5YjI4MDcxMzEyMDRjNjA3NzJkYyBsZWdhY3ktdHJ1bmsKKzI1ODE5IGY2ZTZmZGI5MzVkMjE0MjE5MzRhNTM0ZjA1ZTlhNzQzYjYzNDFmNGQgcmVsZWFzZTIyLW1haW50CisyNTgyMCA2OGZlMmIzOTExNTk0NzJlYTBmNDYwMDM1NTA1OTdhNjEwNjJiYmQxIGxlZ2FjeS10cnVuaworMjU4MjEgYmVhMDFkYzJmMDBlMmJmM2UyZTdiODRlNTg5ODExOGM3NWE5ZTRmNyBsZWdhY3ktdHJ1bmsKKzI1ODIyIGMzZTBlYTA5NzM3MzY2ZGI5OTRjMmM5YzYwYjQ2ODFlNzJlNDViZGMgbGVnYWN5LXRydW5rCisyNTgyMyA5YmE5ZDEyMzg4MDRmNDU4NzA4ZWY0ZGU5NTEzNDA0ZDYzZDQwNDhlIGxlZ2FjeS10cnVuaworMjU4MjQgODViZDUzNGNiZDE5ZjY5MzMxNTg4NDU4MDIwNGQzZDMxZWVhNjg4NCBsZWdhY3ktdHJ1bmsKKzI1ODI1IGY1NTFhZjkyNjYwZWIyMmYwNmI1NDFlOTUwMWM3N2YyOGE0MGM4NjggbGVnYWN5LXRydW5rCisyNTgyNiBhYjk4YTBkZWY5ZDc2MzMzN2YwMWI2NjU1NzJiMWJlZjJmZTBiNmJiIGxlZ2FjeS10cnVuaworMjU4MjcgYWIyNGVmMmM5MzIzODlhZmQ3NTU3MzllNGM4NzY2MDY1ODQxNDczYyBsZWdhY3ktdHJ1bmsKKzI1ODI4IDFkYjE1MTBhYmUyMTg3YjY1NmViMjQ3ZDlkOTZjNTQ2MmM0ZGI0YzggbGVnYWN5LXRydW5rCisyNTgyOSBhYWY1ZWUzYjhmOTM1NTY0OGU1ZmU2NTE0NzM3MTdmNGY2NGRjNTIwIGxlZ2FjeS10cnVuaworMjU4MzAgZWViYWU0ZjYwZDA1Y2EzNDQyNzczZDc4NGQ1OWM2MzZhMGRhMDVjNCBsZWdhY3ktdHJ1bmsKKzI1ODMxIDhkMDA2MTQ5M2M1N2QyMjdiZWM5YzliOWJlNTVkNzUxMTliMWIxYzUgbGVnYWN5LXRydW5rCisyNTgzMiAwZTQ3NThjY2ZlMmJlNjkwZWMzZmZjOGY1YzJjYjE1YzEzNGUxM2FjIGxlZ2FjeS10cnVuaworMjU4MzMgYWNmNWVjZDgwNmFmYzc5ZmE1MTg3ZjRlNzVjODk2YmE0NjdiZjYyMiBsZWdhY3ktdHJ1bmsKKzI1ODM0IGFkMzgyNWQwNGRlY2Q2MjI2NDg5MWQxYjAzYjJmZDU3ODc1M2ZmZGEgbGVnYWN5LXRydW5rCisyNTgzNSBiYzg4ZjFiNDc2NDhkZTZlNmU1N2IxZmFhZTMxY2MwNWZkZmI2M2ZjIGxlZ2FjeS10cnVuaworMjU4MzYgN2FkZWQ2ZDA2OTZlMzQ1ODRjYjk5ZTI4YWRhYjFhZGEzYjdiZGNkYSBsZWdhY3ktdHJ1bmsKKzI1ODM3IGU0ZDEwYmQzOTczZjE2NDgzZTM2NjhjOWNjYjJkODQyYTVhZTBlMzAgbGVnYWN5LXRydW5rCisyNTgzOCBkNzdlNzQ4ODY1ZmY5Yjg5YmE5M2M4YzM5ZTJjYzg5OWRiZGYyMTQ1IGxlZ2FjeS10cnVuaworMjU4MzkgODA1YmU3YzBlMjZjNTMwOWYzNWVjOTY4ZWZmN2VkOTFhMWU1MjBiYyBsZWdhY3ktdHJ1bmsKKzI1ODQwIDY0MDgzODRjODEzN2IyNDhiNTcxNTg0YzFjNDNlNTliYTgxMDdjZDkgbGVnYWN5LXRydW5rCisyNTg0MSBmYjQ1NzkxMTUwZDE5Nzc3NzM5NmI5OTM1OGFlMjE4YTNhMmNjYzg1IGxlZ2FjeS10cnVuaworMjU4NDIgMTU3MDJlMWI5NjFlYmI2Y2ZlYWE0YWE2NjAzMzgyZWYwN2E3ZjY0NiBsZWdhY3ktdHJ1bmsKKzI1ODQzIDdkZTNjOWI1OGRiOGZlZmVmNDg3NDc1MzQ4NGE4YzdmYTZhYjA2YzcgbGVnYWN5LXRydW5rCisyNTg0NCAyM2I5YWU2YjNmN2FmZWI1YTA0YjM0NjExNTE2NzVlZTVmOWQ5MTg2IGxlZ2FjeS10cnVuaworMjU4NDUgMGYxYWUzN2NkOGViMDI3ZTkzNzU3YTgyMDBkYjY0YjhlYjRmZTgzOSBsZWdhY3ktdHJ1bmsKKzI1ODQ2IGZmY2IyZmQyOTQ3ZTEyOGE3ODEyYWU2OTY1NzM0Zjc2MTAxNTdhODkgbGVnYWN5LXRydW5rCisyNTg0NyBiMzYwYTY1MGEwZGJlNDllZDMxOWI1YjM0MmZjM2Y3OTkyMGQxODg1IGxlZ2FjeS10cnVuaworMjU4NDggOGVjZDFiYWQyNDA4MWI1Yzk1MjE4NDA1YTFlZTc3YWNiZWZkNzk5YyBsZWdhY3ktdHJ1bmsKKzI1ODQ5IGYwMmNkYjJiYzE3YTczZmI5ZDQxMjk2ZjhmYzJlMGMwNDZkMDczZDcgbGVnYWN5LXRydW5rCisyNTg1MCAxMzYxZjdiYjNmMTk5MzcxNmJkNDkwMmExNjBmYTVhNmQyYmRmN2RjIGxlZ2FjeS10cnVuaworMjU4NTEgNjAzOTI1NGFhYWRjNDg3Mjc5NzhiZTk0NzdkYWE0OTBjNmY0MTk0ZCBsZWdhY3ktdHJ1bmsKKzI1ODUyIGQ0ZjU0MTQ2N2I2ZDUyZTU4OGZmMGM0MjMyNjQ1OTllMWE2MTY4MTggbGVnYWN5LXRydW5rCisyNTg1MyBmZjlhYjdkMzBiYmZiZDIxYjZiNzE2MWQ0ZGJjMzU1MmQzN2E1NzBmIGxlZ2FjeS10cnVuaworMjU4NTQgNDIyNTEzZjQyMGNmMzlmYzI3MWI0NTZhYjE0Y2I1NzM2MDAyZDExNCBsZWdhY3ktdHJ1bmsKKzI1ODU1IDY2YWRiNTUxY2QzOGYzZDJiMGZhNThjNjA3MTI3OWY4MTdhZjI0ZjMgbGVnYWN5LXRydW5rCisyNTg1NiA3MjI0YTFkZjQ4MDlmYjQ3MWFmMzRiMmRkMGYzMmE5MzdjOTJlYjVlIGxlZ2FjeS10cnVuaworMjU4NTcgOTFmOWEyNDg4N2NiNWU1ODA4ZWUwNTNhN2FmMGNiZTMzMjE2OWM3YiBsZWdhY3ktdHJ1bmsKKzI1ODU4IGVjZDE4MWIwMmE4YTk2NmFlMWQ3YWI5MWYxMGZkMjFlMWRiYjc4YzcgbGVnYWN5LXRydW5rCisyNTg1OSAzOTNiMGMzZDk3NzMyNDdhNmZmMzEzZWQwZjkzY2Y4Y2MyYzdjM2Y1IGxlZ2FjeS10cnVuaworMjU4NjAgNTRiY2UzY2FiY2NkNTdjN2MzOGY2ZTQzMGE2Y2E2OTg4NTgzZmYzOSBsZWdhY3ktdHJ1bmsKKzI1ODYxIDNhM2RlNjU2N2YxYTVkMjE1OTcyZTY1NmFmYjY5OTU1MTM3NzI0OTUgbGVnYWN5LXRydW5rCisyNTg2MiA4MmJkYmNhMDJjMDc1MWFjYTM5MzdhM2U5ZWMzNWVhZWU1NGY3NTdjIGxlZ2FjeS10cnVuaworMjU4NjMgOWUzZDZiNWNlZTA3NjJkNjYwNTM5NjJhMGJlYWM4YjkwN2M4MDFjZCBsZWdhY3ktdHJ1bmsKKzI1ODY0IDViOGJlODYxMWQ4Y2Q4OTFkMTIyYzg5OGQzYWU1ZjVkZDM3MDg1NDAgbGVnYWN5LXRydW5rCisyNTg2NSBjODE2NTc1OGE2ZGU3YzJhMDVhY2M5NTc5NWE2ZGVkNTdlMjc1ZDNiIGxlZ2FjeS10cnVuaworMjU4NjYgMjVlMmI1ODBiMmNmYmJjYjFiYTE1NDgyMmQwZTc2NjcxMTkyNDM1ZCBsZWdhY3ktdHJ1bmsKKzI1ODY3IGEzMmM3YjNmMWYxMTA2YzljODhkODAyZWM0MWFkMWQwZTlkNTYxNTYgbGVnYWN5LXRydW5rCisyNTg2OCBlOTRlZGRlY2YzMzBhMDQwNDI5NDk4ZmE3ZmQ5MmE4ZWQyNTcxMGRmIGxlZ2FjeS10cnVuaworMjU4NjkgZTc3NzQ1MjY0ODMwNmVlNjIxNGE1Y2U4YWEzNzAwOTA2NDlkMGQzNiBsZWdhY3ktdHJ1bmsKKzI1ODcwIDNiZDIyYmQxODdjMzJiNTNjMmZkNmI4OWIxNjNiNjhiMjZkNTE3ZDQgbGVnYWN5LXRydW5rCisyNTg3MSA1NGMwNWE5NDdiY2JjNThkODk1MDE3MTQ1N2MzMzkyNGU2M2E4OWFhIGxlZ2FjeS10cnVuaworMjU4NzIgMGVkYTNmODJiNmYzZjQyODE0Zjc5OGYxYTQ4ZWYzOGJmZTQzMmFiYyBsZWdhY3ktdHJ1bmsKKzI1ODczIDIwNWMxMDYzMmYwODdmMzllMThiNDFlNTIwZGMzZTcyN2JjZjUyMWEgcmVsZWFzZTIyLW1haW50CisyNTg3NCA2NThlYTAyNjYzNGM0YzIyMDEzZGM4MWRhOTUzOGQ5ZTk1NjA5ODFkIHJlbGVhc2UyMi1tYWludAorMjU4NzUgMGRkMmY5YjU3Y2ZmNWFjOTE4ZTg3NWIyN2Y2NDY1MmFmYWQxOTJjYyByZWxlYXNlMjItbWFpbnQKKzI1ODc2IGE0MDU0M2IzZTNiZjMyNjQzYmIzNWQ5Y2RkNTJkODBhMWJjZGYxOGEgcmVsZWFzZTIyLW1haW50CisyNTg3NyA4MTQzMjlhNjQyNmNkNzdkOTYwNmYxM2M4YjAzNWUyZTFjYTMwYzA2IHJlbGVhc2UyMi1tYWludAorMjU4NzggNGVmMzY5M2YxYTI2YWFkOTAzN2RlZTk1MTNkMmVmMTk4MjNiOWNjMCByZWxlYXNlMjItbWFpbnQKKzI1ODc5IDY2NTc5MWQ1M2M0MzU2YTIyNjY1N2I5OGMxNTZhZjUyYjU5YzE4MjQgcmVsZWFzZTIyLW1haW50CisyNTg4MCAxNjI0NWE5Y2JmYTFkZjM3MGRhN2YxNDJmYmNmZDlmMjgxZWYwN2EyIHJlbGVhc2UyMi1tYWludAorMjU4ODEgN2M3YzkwZmM3MDA1YTdlZmM3OWY3MDg0YWYzMGVhMDdiMzkzMzRjOSByZWxlYXNlMjItbWFpbnQKKzI1ODgyIGMzZGY5YjdhNmFjYWIxODljNGNhZjQ1ZGYzMzI5MzFkNzczYmY0MjQgcmVsZWFzZTIyLW1haW50CisyNTg4MyA3OTViZGQ2OTIxNzYwMjVhNGE5MWFjNmNlZjg1MjgxMjAyZjBjNGRjIGxlZ2FjeS10cnVuaworMjU4ODQgOGJmYzkxODQ5MjQyYzMwODk4ZGNhZGQ5OTg5NDc0NDVmMmU4YzJhZiByZWxlYXNlMjItbWFpbnQKKzI1ODg1IDY0YTY4MzYxODQ4Y2Q0MDI2ZmRmZGExYjcxNDVlYTY5M2IwZGVjMzYgcmVsZWFzZTIyLW1haW50CisyNTg4NiAwYWFlMDk5ODZmYzk4ZjU2ZDc5YzMyYmUwNDFjYWQxZGFiNDMyMzVlIHJlbGVhc2UyMi1tYWludAorMjU4ODcgNGZmMzdjNThhYjg5MzkzYWQ5MjdhMjE2MDMyODg5MjU2MWRjZWFkMyByZWxlYXNlMjItbWFpbnQKKzI1ODg4IDBjMTkxMmY5ZDFjZTgzZGVmZTQ3MWY3ZDBmOWY2YjBlNTdhZWZhNTQgcmVsZWFzZTIyLW1haW50CisyNTg4OSBhMmZlMGVjZDBjZTJhYmQwY2RhNjY5OWY1ZjhjZDI1ZmYyZjY3MjYwIHJlbGVhc2UyMi1tYWludAorMjU4OTAgMmY5YzZjYmVhYTYyOGQ1ZTNkZGJkNWM2NTVlMDQ1YjAyM2ZjODFhZCByZWxlYXNlMjItbWFpbnQKKzI1ODkxIGQ2NmU0ZTdjOWU5YTcwYzU2MDNlNDU5OGZkOTIxM2U3MDA2Mjc5MTIgcmVsZWFzZTIyLW1haW50CisyNTg5MiA0NTcyMWMwMjE2MDY2NGZjYjVkYzU3ZjYyMmEwZjA2YzJhZDhlZTNhIHJlbGVhc2UyMi1tYWludAorMjU4OTMgZWYzMTRiMzdlMjYwY2VkYmJjNTcxYjZmYzUyMDM3MTgwMTVlOWJiOSByZWxlYXNlMjItbWFpbnQKKzI1ODk0IDkxOThmYjA0MzVmYmFhY2VhOTA3MTg4NWNjMWNkYzg1NWNkZDQwM2QgcmVsZWFzZTIyLW1haW50CisyNTg5NSAyOTEyMDE1YTFlN2I3NmI4NWU1ZTNjMmE3NDZhYTRiYWE5MDZjNWEzIHJlbGVhc2UyMi1tYWludAorMjU4OTYgODA5MGQwZDYzZWUxYTU5MTdlMGRjYjk1ZTg4Mjg5NDhmOGY2MmY5YSByZWxlYXNlMjItbWFpbnQKKzI1ODk3IGY2YTdmZGJkMzBkNGYyMTZmNjFkYTYwNmU5ODg5Y2VkNTFlM2QzZGQgcmVsZWFzZTIyLW1haW50CisyNTg5OCAyMWU4OTcyZDM3ZTQ2ODFlY2I0ZTk5YTQzZDg4NzBmMTQwZTdhZjYzIHJlbGVhc2UyMi1tYWludAorMjU4OTkgMWFmYmM1NjE4OGIwMDc0OGNiOWExMDc3OGYxNDliMGExZTA4YzQ4YSByZWxlYXNlMjItbWFpbnQKKzI1OTAwIGRhOWFkZWM2NmUyYjIxOWExNDcxNThiODlkNDk1NjYyMzhhZTY1YzAgcmVsZWFzZTIyLW1haW50CisyNTkwMSBlMmNiZTljMzM0MTFhMGIwYjU3ODRlYTU1OGYzNDBmMDhkMjFiZmU1IHJlbGVhc2UyMi1tYWludAorMjU5MDIgNzVlZjFmMTY3MjVlZjRlY2FiZGNlZDk2MDJiMzE0NTQ0OGNiNmVmZiByZWxlYXNlMjItbWFpbnQKKzI1OTAzIGI3MjZlNmIzYTg1MjNjYTQ1MjI0Mjk3NzVhMzM1NzAzNTQ2OTA2NDggcmVsZWFzZTIyLW1haW50CisyNTkwNCAxNmU1NDJhZjJjNDViYzA3OTAzYWEzMGNiZWQxYmE2Y2E1Njg4ODc4IHJlbGVhc2UyMi1tYWludAorMjU5MDUgYzVjMTMyNjE2NmI5MjFhNDc5NjRjMGQ5NTk4OWQ4MTY2Njg2NjdlOCByZWxlYXNlMjItbWFpbnQKKzI1OTA2IDc1NjYxODdhMjAxY2YyMTQ1OTg2ZjczODliMjVhYjU5ZjU5YTVkZDAgcmVsZWFzZTIyLW1haW50CisyNTkwNyAxNDJmZDNlMTA3M2QxZTA3NTg0MjAyZGYzOGI2MTY3Y2QyNWNhYTg3IGxlZ2FjeS10cnVuaworMjU5MDggNmIzZTk5YjJmZjkxYzQ1NzFhMGQ2YjI2OWIyY2JkNTM5ZTJhMWZkNCByZWxlYXNlMjItbWFpbnQKKzI1OTA5IDA5MjJjOTE5Y2VkYmUzN2MwZDU5NzBmMjM5MDA4NGE1NjkxYjhmZWIgbGVnYWN5LXRydW5rCisyNTkxMCA2M2ZiY2E4OThlYWMyNmFjNDQ4NDg1ZDM4MGNmNzdkZjVkZmM0NzFkIGxlZ2FjeS10cnVuaworMjU5MTEgZmFkMDcxZmI0MTQxZmU2MDliYTY3NmZmNzU4NWE0NWE5ZjRlN2ZmMyByZWxlYXNlMjItbWFpbnQKKzI1OTEyIGFkMTViMzlhZDhmNzEyNDA0MDExYTI5MzUzMzM0NDBlZjlhOThiYTIgbGVnYWN5LXRydW5rCisyNTkxMyA4YjYzNmZjYjg2MTVlYTI5MjBlY2RiOTc3ZjVkMjYxYTQyYTQ4Mzc4IHJlbGVhc2UyMi1tYWludAorMjU5MTQgOWViNGU2MjMwOWIwZTIzMmUwN2NlZmQ0MDdjZmU3MzFhYjZiMWExOCBsZWdhY3ktdHJ1bmsKKzI1OTE1IDI1YjU5OWYzNjBiYzIxZDE4MzU3NGZiYjk5YzNkYTQ0ZmVmYWQ2MGMgbGVnYWN5LXRydW5rCisyNTkxNiA2ZGUxYTE5ZjQ3YTQyNWZlMTFmMjkxYmFjNmJhNDIwYTJiMmI0YjBmIHJlbGVhc2UyMi1tYWludAorMjU5MTcgZjlkOTZkZWRkMWY0NjZiNDdkMTA0N2E2MzNhZTkwMjMyMmYyNWNjMSByZWxlYXNlMjItbWFpbnQKKzI1OTE4IGYyYTNhZjRmYTRmZmVlZjM0YjdlYzcwZThhMTQ2NWI5NWJlZDUzMDEgbGVnYWN5LXRydW5rCisyNTkxOSBiNjhhZjRhODAwMGJhMTJhNjFhZGZmOGNkNTYyOWEyNDQ0ZGVmZDI1IHJlbGVhc2UyMi1tYWludAorMjU5MjAgM2Y0MjE2MzRjMzdjYzZjNWUyZjU1MDI4NTdiNTdiYjg2NGFmNzBmMyByZWxlYXNlMjItbWFpbnQKKzI1OTIxIGI1OWFkNGI5N2E0MjZlMTRmYjVmMDM0MjljOGY4ZjVhZThiOWEwYjUgcmVsZWFzZTIyLW1haW50CisyNTkyMiA3YTRjYjRlOTc5NzY2YWE2MGVkNTc0MzU1NjllNzcyNjg3YWJjZjlkIGxlZ2FjeS10cnVuaworMjU5MjMgMDQzYWQ3YWRjODk2ZjRhNDhmZTMzNDUyYzVlZjAyZjllYzkyZmVkMiBsZWdhY3ktdHJ1bmsKKzI1OTI0IDMwM2I2YWQxM2EzMmQ5OTUxMTJjOWEzMTNmMDdkYmM1NjdjN2Q4ZWMgbGVnYWN5LXRydW5rCisyNTkyNSAzYmYyYjVhY2E2MWVjMTg1MGQ1MDI2OTgyMjQyNmQxOGU2YmJjZjA4IGxlZ2FjeS10cnVuaworMjU5MjYgOWJiNDUwMzY1ZGY3ODcxYzBlNDljM2UyNDgyODM4NTczOTczNmY5MyBsZWdhY3ktdHJ1bmsKKzI1OTI3IDkwNmFkMzZjYjdiY2NlNzVkNWM4ODUxMDhjZGZhYWNlMDA3NWYzZjMgbGVnYWN5LXRydW5rCisyNTkyOCAzOWU0MmQ2ZjVkYTJkMDcwNGE1MjYyYmIzYjlkZmIwYmZhM2JjZWQ0IGxlZ2FjeS10cnVuaworMjU5MjkgYWVkZGEwYWJkMzEzZTAwZWFhNDdjZDI1ODdkOGZlYWQ1YTM5MzMwZSBsZWdhY3ktdHJ1bmsKKzI1OTMwIDZhMWM4NzUyYTY1ZmIwNzFmZGQ0NTEyYTk1M2RhZTE2MGZlM2MyMDYgbGVnYWN5LXRydW5rCisyNTkzMSBlZTRiNTliNWZlYjcyZjdiZWIwMmQyNzA5YTQwYjFkOTk4NTNhOGE0IGxlZ2FjeS10cnVuaworMjU5MzIgNDcwZTlkYTIxYzRhZTRmZjUxZjM2Mjc4MjUwNzNhZGY3MzE0ZWYwYSByZWxlYXNlMjItbWFpbnQKKzI1OTMzIGQxOTBiMmQzMDNjMjgxZDdiZDJjMTk2ZDQ4MTQyMGFiYmUwNGJlYjYgcmVsZWFzZTIyLW1haW50CisyNTkzNCA1YTMwZDRiM2RhMzdhMTBjNjAxNGE3ODE0NjAyZTk2MWUyNDBkMWM5IHJlbGVhc2UyMi1tYWludAorMjU5MzUgMjk4ODAyYWJkMzhkZmZmYTc5YjQ3MmMyZjVkZGMzMzcwZWIyNGZmYyBsZWdhY3ktdHJ1bmsKKzI1OTM2IDA2YTgxNTZlM2JjZjczYmZjYjY0NTdkMDg2YmIyNWNjZDYyMjRmNmIgcmVsZWFzZTIyLW1haW50CisyNTkzNyBiYzIwYmFhYWUzZWUxMTllMzlhOWYyZTJhMmY2YTI0M2QxOWRiMDQ4IGxlZ2FjeS10cnVuaworMjU5MzggZDcxZDNiNzE1YjEzZWEyOTRhZDgzZjUyZmRmYmYxZGJiYjAzMWExNCByZWxlYXNlMjItbWFpbnQKKzI1OTM5IGU2YzZiYWJjZWVlNTM2MGYzZGI3Mzg0ZDdhNDhjYWMxYTk1OWUyNzggcmVsZWFzZTIyLW1haW50CisyNTk0MCAzYTIxZGJlMWI2ZmU0Njg5YThlODVkNjBkYzUxYmMxNzczNGRhZjE5IHJlbGVhc2UyMi1tYWludAorMjU5NDEgNjRhMTA0OWZlNTNiOTYxYTUxYjg5OTBkNTQ5MGE5YmQxNDAyYjdkYyByZWxlYXNlMjItbWFpbnQKKzI1OTQyIGYwZWY4YjQyNmQ4ZDliMDdjYWIzZmFjN2JiYTM0YzliZjI4ODRkODcgcmVsZWFzZTIyLW1haW50CisyNTk0MyAyZDMzY2ZkNmMxN2YwNzc5YmY3Y2QzZDQwMjQxYjAwYjg4YTY5NTcwIHJlbGVhc2UyMi1tYWludAorMjU5NDQgOWExN2IzYTNhZjA5ODljMGQ0MWY0YWQzMTRhZTNkYTFmZjQxM2UxOCByZWxlYXNlMjItbWFpbnQKKzI1OTQ0IDExYzk1MmM3ZDRiZTY2MzgwNDA3NjQ5MTBiZTgwYmQ5YzNjMTdkZTYgcmVsZWFzZTIyLW1haW50CisyNTk0NiBiY2QxZmRmMTNhY2ZlMzY3MWFmNjg2NjQxMjBhNGZlODhjZmQ0YmM1IGxlZ2FjeS10cnVuaworMjU5NDcgOTNkYWE0ZmRlMDg3ZWRkYWM4M2Q1MTI1YTE5OWI0YTE3ODliNjZhZCBsZWdhY3ktdHJ1bmsKKzI1OTQ4IDNkNjgwODVmNDk1ZjllNThlMzY1MjQ3ZGUzMjE0OTY4NmJiMGUxOTUgbGVnYWN5LXRydW5rCisyNTk0OSA5MWVhYjc0NTgxMGYxMTNjNDA1ZmU2ZjI0NzZhNTI2YWU0ZDYxOWMwIGxlZ2FjeS10cnVuaworMjU5NTAgZjFkYmVjYjdlNDE2MGQyNzRlMmZhZDQyYjQ0ZDgwZDkzZTM2NzkzZiBsZWdhY3ktdHJ1bmsKKzI1OTUxIDY2ZTg1YTczMmRkZGUxOTI1ODZjYTRhMDJiNDAyOTVmNDFiNGE4ZGEgbGVnYWN5LXRydW5rCisyNTk1MiBjMThmZTQ4NzI1NzE2MGZkNjgzNzNiMDQwMmIyNzU5NWY5YTIxYmM2IGxlZ2FjeS10cnVuaworMjU5NTMgN2JjZTQ3NTFiZmIzNDBmMmYxODI4ZWQxZjM3N2Y2Y2YyMmUwN2Y1NyBsZWdhY3ktdHJ1bmsKKzI1OTU0IDdkMGYwYmI5NDQ4YjAxMDA2MjZkODM4YWE3Mjc2ZjE3YzE3ZmQ5YTQgbGVnYWN5LXRydW5rCisyNTk1NSBhNzU4ZDRjNDAxZTA4ZWFhZGM4MjA1YWNmMzZjNzcwODAzNjZjNTgxIGxlZ2FjeS10cnVuaworMjU5NTYgOWI1MzEwY2ZhMmUwZGRiMTYwYzczZjdiN2RiNWJiYTc2NWFjN2NmYiBsZWdhY3ktdHJ1bmsKKzI1OTU3IDIwNGQ0NmZjNTRmNjhlMDMzNGZkNzE2OTM2MGRkODA5YTI5MGMxYTUgbGVnYWN5LXRydW5rCisyNTk1OCAwYTNiZjIyYWVjYTRhMmU0Yjg1ZjRlZTcyMWExN2JkNTU0MWUzNGMyIGxlZ2FjeS10cnVuaworMjU5NTkgMWM3MjA3YWQ1ZGI4MTU3ODIzMzhlZGNlNTdmNWNhMTRmOWIyNjhmNSByZWxlYXNlMjItbWFpbnQKKzI1OTYwIDgwODIxYTY1ZmQ0OTgxODE4ZDRlNzI4YjljOGU3NDM3YTVmZGZkMDAgcmVsZWFzZTIyLW1haW50CisyNTk2MSAxOTRlZDVlMGRjOGZmMGRlMTMwZTliMjVlNjg5MzIwNDE2YjM2ZjhiIGxlZ2FjeS10cnVuaworMjU5NjIgMGM1YzY0Yjc1ZDVkMGExODEyZGU5ZWIzYTA3NTU1MWI2YzQ5NzQwNCBsZWdhY3ktdHJ1bmsKKzI1OTYzIGEzMzFjNjE2YmIwYWQ1Y2M1NGVhOWY3OTNlZGZmZDY2OGNjYzM0ZjYgbGVnYWN5LXRydW5rCisyNTk2NCBmM2E5MTNlNjRlYjhlZDRkYjkyNmIxMDA5MGE5ZGQxYWU4MDJhY2ZlIGxlZ2FjeS10cnVuaworMjU5NjUgMjg2OGU5YTllMjgwYjY4YTM5NjUyZTI2OTdlNTJiN2E1NDQyYTY4NCBsZWdhY3ktdHJ1bmsKKzI1OTY2IDNmNGIyZjkzZThiNWI1NDI2ZTg4OGM0OWI0NDliN2M1ZjgzZGRhOTkgbGVnYWN5LXRydW5rCisyNTk2NyBkYTE2NDVmZDljMjQzOGFmZWJlNzRjMDkzMjA3ZGI4YmY2NWE5OWM0IGxlZ2FjeS10cnVuaworMjU5NjggMWM4MzhiZTZkMDA0YmI4ODYwNjJmM2VkYzk4YTYwNDhmMDkzZTYwMiByZWxlYXNlMjItbWFpbnQKKzI1OTY5IGFjMjRjMmM5YmNhZjgzZDhjZGY1ZWNkZmRhYjgwMTY2ZTZiZmZhNTMgbGVnYWN5LXRydW5rCisyNTk3MCA4Mzc3NmJhNTgwZWYyMGE1YzQzNWRlNDJiN2Q2Yzg3NTJjYjg4NDAxIGxlZ2FjeS10cnVuaworMjU5NzEgNGM3YmIwYjRkMzU0YmQyNDc2MTNiZmZiYTEzYjk2ZTQ2NmMwZDMxNyBsZWdhY3ktdHJ1bmsKKzI1OTcyIGM5YjczMjYyOGU2YzYwNjNmMThmMGIyZDA1ZmM2OTVlNDVkZWY3MzcgbGVnYWN5LXRydW5rCisyNTk3MyAyNjc4NWZlNjNjYmJlMmQ0YzY1OTFhZGI4Njk4ZDYzMjZiMzQ3OTZjIGxlZ2FjeS10cnVuaworMjU5NzQgZjYyYmZiMGIwOTQ2Y2Q2YzEzNzI3NTkzNzFjYTBmYTUxNTc4N2VkZSBsZWdhY3ktdHJ1bmsKKzI1OTc1IGRkYzk1NDNjNzZhMDMxYzljYjJkMjM3OGQzYjEyNTMyOTIwMjE1YjkgbGVnYWN5LXRydW5rCisyNTk3NiBmMjk0ZmRkMThiNWIwOGE0YzA3MzFmYTkwNWE0ZWNiMDc2NzI3NjFhIGxlZ2FjeS10cnVuaworMjU5NzcgZDZmNTA2NGYyNjczNzEzZmE2NWU5M2ZlMTQ4NzJjMGVmNGNmOTA2YiBsZWdhY3ktdHJ1bmsKKzI1OTc4IDMyOTliN2FiYThlYmU3MDMyOWMxZWMxYzA0ZmVjZWE5NDU5MTRmMGUgbGVnYWN5LXRydW5rCisyNTk3OSA2Nzk2ZGQzMGE2MDI0Nzk0YmQwYTEwYjdkNGE2OTZlNjBiYTI5YmQ2IGxlZ2FjeS10cnVuaworMjU5ODAgMTlkNGU4MzZiZDA3NWVlZGVhMjExNTIwYzI2YWRiMTAwYmQ2OTUzZiBsZWdhY3ktdHJ1bmsKKzI1OTgxIGVjNmVjYmIzNGIwNmI5ZTA0NWI4OGU2NjJkNWRkODcwMWJlMjMxZDMgbGVnYWN5LXRydW5rCisyNTk4MiA2YTg1MDQ0OGZjOGU4ZTNhYzliMzZlYTk3MDc1NDk0M2ZmMTE4Mjc3IHJlbGVhc2UyMi1tYWludAorMjU5ODMgODMwYzgyOWE3ZWIyYWVkNTUyMmE3YTQ3OTc4OTY5ZGE4NmY0ZWNmZiBsZWdhY3ktdHJ1bmsKKzI1OTg0IGE2YmIzY2M5MTliOTY1NmQ2N2U3N2Q4ODU5Y2M0MGIyMmJjNjRhMWMgcmVsZWFzZTIyLW1haW50CisyNTk4NSBkOWYzMDMwM2M4NjBkMDIxOGMxZDU4MDQyNjNmMTQyZTE3OGQwYjQ3IGxlZ2FjeS10cnVuaworMjU5ODYgODgwZDMxMDY0OTliYWI1YmVmNGI5NzZhMzdkZDJiZWFjYTEyNWU3ZCByZWxlYXNlMjEtbWFpbnQKKzI1OTg3IDg5OGMzOTI0NzdkOTFkMTI4NjUyYzU3NDE4NTE4NGU3MjY1MmI5OTAgbGVnYWN5LXRydW5rCisyNTk4OCAwNDQ2ZWViNzg3YjdmOTJkYWQyMWE1NmRhYmQyYWM3MzE0ZWJkYzU0IHJlbGVhc2UyMi1tYWludAorMjU5ODkgNTFiMWM1ZWEwZmJiNDU2MTc0ZTU0MGI4OGY3M2E0NWEzN2FlMDAxMyByZWxlYXNlMjEtbWFpbnQKKzI1OTkwIDg0Njg0ZmMwMmRhMDA0ZjQ4YzNlYzk1ZjBhNWM1Nzg2NmUxNmU5N2EgbGVnYWN5LXRydW5rCisyNTk5MSA3MjMwZTAxYzNjNDk0ZWQ0YzMzMjA1OGE5MjRmOGMwNDI5Mzg2ODBlIGxlZ2FjeS10cnVuaworMjU5OTIgZTZmY2NkZTYxMDg2NmQxYjJmYTI2N2I0ZDcxMTU3ZjE4NTI1M2Q5OCBsZWdhY3ktdHJ1bmsKKzI1OTkzIDc4NzBmYWMwNDlmNzIxM2E3Nzg2MWU1MDk3NDQxMzJiMTFlNDczNzMgbGVnYWN5LXRydW5rCisyNTk5NCAzNDk0MDQ0MjZmYWFjMzdlMjQ1YzVkNzJkNTg5MTJjNTgyNDUxYjliIGxlZ2FjeS10cnVuaworMjU5OTUgZjhjNjU5ODQ4YWQ2Zjc4MmI3OGIwYWQzYTBiYWE3MjhjNmNmNDBmNSBsZWdhY3ktdHJ1bmsKKzI1OTk2IGI5Y2U5NjkyODFjYjczODIxMzUxZjY5ZTk4YzU2NGQwZGZjMDBkNTQgbGVnYWN5LXRydW5rCisyNTk5NyA3MjZjOTYxZjNkYjUxYTc1MGZlZWVjMTVmOTlkOWQ2NmM2ZGU2ZmI1IGxlZ2FjeS10cnVuaworMjU5OTggMGY4MDE2MjZjMmQzNzljOGM4YjRhNDkyMzA3MDQ4ODUwYTFlNmY3MiBsZWdhY3ktdHJ1bmsKKzI1OTk5IGQ3NzhlYTlkZTc4MGZhYzBmODc4NjMzMTU0NjIxOTQ2Yzc0NWY4YjggbGVnYWN5LXRydW5rCisyNjAwMCBjMTY2NjEwNGI1NTRmOWE2Y2VjZTNiNGExZjM0NjFkMDE1ODMzYjk3IGxlZ2FjeS10cnVuaworMjYwMDEgOWMyY2EzN2JkZWVjNTgxNTZlNGFhMjhkZWZhNWY0NGIyMDFiN2ExMyBsZWdhY3ktdHJ1bmsKKzI2MDAyIGVjMTA0M2Y2ZDA1ZWZjZTc3NzhhNmNmYjg2ZTRiMzI3Mjg1NmM4ZTcgbGVnYWN5LXRydW5rCisyNjAwMyBjZWNmMzFkYjhiMGRiNTczNDM4MGMyOGFjMzVjNjQ2ZWNiODM0MDJhIHJlbGVhc2UyMi1tYWludAorMjYwMDQgOTZiMTM2YjYxMTc4NDU0OGViYTA3MzIzMTlkZTYxZTU1ODIxZGY1OSBsZWdhY3ktdHJ1bmsKKzI2MDA1IGQyOTExOWQyNDNlOWUzN2E0YTQwNWRlZTE3ZmQ1MTVlN2MwZWEyZGMgbGVnYWN5LXRydW5rCisyNjAwNiBiMTcyZWU5M2MxM2M2YzkzMmRkYjBmZTZmYjY5YTAwYTk2NWI4NDY5IGxlZ2FjeS10cnVuaworMjYwMDcgMTUwZjAzNDA3ZDBkMjY5NzI0M2QxNmFhM2JmYmZmMjVkZTg0YmM3MCByZWxlYXNlMjItbWFpbnQKKzI2MDA4IDg2YTI3YmExYmVlNzVmMDIyYmRlMjJkZTEyYTA5NmQ4ZDlmNmVkNWMgcmVsZWFzZTIxLW1haW50CisyNjAwOSA1NjU1YmZiNjA3Y2E3MjI0YWQ5N2NjOTViYmMzNzFmMzlmYjFkZDE4IGxlZ2FjeS10cnVuaworMjYwMTAgOGE4MzZkMGI1OTc0MTY1ZmYwYjg0N2ZjMzFiNGIyMWNiMDUxZTQ0MiBsZWdhY3ktdHJ1bmsKKzI2MDExIDE2MTZiZDhiMzFiYzA0ODA4NzM1NDA5Nzk4Njc0YTViNDE4ZDFkZDkgbGVnYWN5LXRydW5rCisyNjAxMiAyMjg4YzcyNGZlMmJhZDAxNDBmYTY5OWM2NGMyMDBkMDRjZmZkYTk1IGxlZ2FjeS10cnVuaworMjYwMTMgZjNhNDE2YjE3OGM0MjNjZjA5YzQwZjQxZGVkOTZmMDExMGNkNWZlYiBsZWdhY3ktdHJ1bmsKKzI2MDE0IGU5NzE0NzVjMDQ3MTkzMWNlZWI2M2U3YmVhNmNkMWJmYmRmZjhmM2UgbGVnYWN5LXRydW5rCisyNjAxNSAyZGExMTM3NjAwYWU3ZTllYWExZDUzODk5ZGFlMmQwYjA1Mzk5OTIxIGxlZ2FjeS10cnVuaworMjYwMTYgYTgyY2UxOThmZTY5OGMyZTU3NmQ0MmUyZjk1ZjliN2ExZGJiYTFiMiBsZWdhY3ktdHJ1bmsKKzI2MDE3IDEwNzAyM2MwYzQ1NmRmM2MyYzgzMjQ5NDU1OThmYTA3ZWZmNmRlMjYgbGVnYWN5LXRydW5rCisyNjAxOCAzYWFkZTE1MGU3MTcyNDdiMzlhZWUwNDY4N2Q2ZDg5ZjEzMTBmYWE5IGxlZ2FjeS10cnVuaworMjYwMTkgYWY3MTkxNGQ4YmRmMGRmZTVkYjQ3ZDk5NWZkMGEwMGFiYjgzN2RiYyBsZWdhY3ktdHJ1bmsKKzI2MDIwIDQwOTMxMWM3ODM4MzY1M2Q2ODEwOTkzMTRjMDRkOTllMWI3N2FlY2MgcmVsZWFzZTIyLW1haW50CisyNjAyMSBiY2NkNDYxM2M0OTZhMzBiYjFiYWQ2NDE5Y2E3ODQ5YmY1OWVmNmQ5IGxlZ2FjeS10cnVuaworMjYwMjIgNDY0MDdkMGE2MDAwZjVlZTI4OGI1YWQ5NDhlNDMyMGNjYTZhZTczMSBsZWdhY3ktdHJ1bmsKKzI2MDIzIGMxNmJlYTc5ZjRkYjNiNGU3YzUxYTUxMzNlNzMzOTc1YWUyNDNjYzggbGVnYWN5LXRydW5rCisyNjAyNCAxYWVhN2FmMDkyNjBlN2YyMTRmM2ZjZTU0ZDIyZjIwMWMyZjFmOTExIGxlZ2FjeS10cnVuaworMjYwMjUgOWQyYThmNmIwNmI2ZmI5YzQ1ZDc3NmRkZGY0MThiNzc3ZGU1MjVkMiBsZWdhY3ktdHJ1bmsKKzI2MDI2IGY2M2YyYmM4YmRiYTZmMGQ1ZDhlNDJhM2VkZTdiNTAzNGIzNTcyODcgbGVnYWN5LXRydW5rCisyNjAyNyA0NWRiZmNmMGZhMTlmYmNiODA3YTU2YjE5ZWU3MTU1Y2MxY2UwNTVkIGxlZ2FjeS10cnVuaworMjYwMjggNTMyYzI3YTczNWI3YjkyNWI2NjhkZDk4MTNhYTljYzk0ZTlmMzQ5NCBsZWdhY3ktdHJ1bmsKKzI2MDI5IGQ5NzFkMWViNzJmNmUyNGZmYWQ5YjlhOWY2YTkwMjRkYmZhN2JlMjkgbGVnYWN5LXRydW5rCisyNjAzMCAzZTBkYTg0OTM5ZDBiMzM0MDZiY2VhMDgzNjJjNjBkZGE3YTJlNGY5IGxlZ2FjeS10cnVuaworMjYwMzEgYmYzYjA3YzYyY2Y3YmUyNGU0NjllM2M0MThiYTY1NDc0ZjY4YmE2MCBsZWdhY3ktdHJ1bmsKKzI2MDMyIGZjMmU3ZTM5N2JjNjZiZjk3YTg2MDkwMTdkZWI0M2QzYjkyMjA1YzAgcmVsZWFzZTIyLW1haW50CisyNjAzMiA0MDQ1ZTZlOTJmYWZhYmFkNDJmNmM5OTg5YjY3MDc2ZmJhZDQ1MmNhIHJlbGVhc2UyMi1tYWludAorMjYwMzQgODZjZTllZTE0MDQ1MGUxNmE1YmFiZmUxNGQwM2E1N2I1NmM0MDBiNiBsZWdhY3ktdHJ1bmsKKzI2MDM1IGI5Njc0MGM0MmU4MDcwYjcyZDQzMTU2NDU2MDg5NDU5MTI4MzY1NWYgbGVnYWN5LXRydW5rCisyNjAzNiA5MTFmZTA3OTMwNTA0NjgxMzFhYTdkOTJjN2Q4NjZhY2Q3NzlmNzRkIHJlbGVhc2UyMi1tYWludAorMjYwMzcgNTc4MTFjMzU1ZjNhYmNlZTU3YjMzMzA3MThlNjQyYzllMTFiZjUyMSBsZWdhY3ktdHJ1bmsKKzI2MDM4IDBiNThlYTA3NDk1Y2IwN2ViOGZmY2Q4ZmFlNGU4NzgyZWUzYzZiOGYgbGVnYWN5LXRydW5rCisyNjAzOSA4ODFhNmMyZDVkYjJiOGNkNmZhYmU4ZmNiYmIxOTM1NmI5N2M5YTBmIGxlZ2FjeS10cnVuaworMjYwNDAgMThjZmVmMDExYWJlN2U2OGFmNWUwZmJkZmNjY2Q4ZjgxY2M5MzRjYyBsZWdhY3ktdHJ1bmsKKzI2MDQxIDQ4OGI5YjNmNTk5YWQ0MTBkYjFjMTI2NzU5N2M4NWZhOWJlNDBjOTAgbGVnYWN5LXRydW5rCisyNjA0MiA3YzBjY2FjOTdmOGVmZDdkODU2ODEzY2U0Yzg1NGQzZWYzM2YxODYxIGxlZ2FjeS10cnVuaworMjYwNDMgMTIwZTRiYTA1NTBiZDcwOTc5NzkyOTFiODk3MTk1ZGQ5ZGUyZjhkNyBsZWdhY3ktdHJ1bmsKKzI2MDQ0IDQ0YmU1ZTc0ZjE3MjdiZTQ1NTkwY2YyMjFkYmViODhiZjk0Y2RiMjggbGVnYWN5LXRydW5rCisyNjA0NSA2ZjJmMWIwNGU4MmUwZGM5NmQ3MDUxODk3NzNjNDg4YmNjM2Q0ODhmIGxlZ2FjeS10cnVuaworMjYwNDYgZmQxYjhlYmU0ZWFlNDhiNmQ0N2ExODgwMzI1MzljMjBmNjIwYmViYSBsZWdhY3ktdHJ1bmsKKzI2MDQ3IGI0NTc2MzY1MzllODBkNTExMTFiMGQ4ZjU1NjYwMmM5NWIwNWU3YzIgbGVnYWN5LXRydW5rCisyNjA0OCBmOGJkOTMwNjQ0YWEzNDRlNTk2OWVmZWI5NGNjNjM2YzczMTQ2MGY2IGxlZ2FjeS10cnVuaworMjYwNDkgZWVlMzM3MmMyZjk2MmQ0ODU1MjkyYWE1NGQ0NzE1OGZlODAwNWE4ZCBsZWdhY3ktdHJ1bmsKKzI2MDUwIGMwNTk2Zjg0YThmYjE0OWIzNzgzNzA5ZDk1MTYyOGNkNmViMTUwYjYgbGVnYWN5LXRydW5rCisyNjA1MSA2MTQxNjdkZjIwOTYwYTYyYmNkY2ZjZjYwZmFkOWRlOTZmMzQxZTVkIGxlZ2FjeS10cnVuaworMjYwNTIgMDBiMjk3MmFiNGE0YjFhMWIzZTk4YTY5NWYyZjA5NTU1YmViYmQ5YyBsZWdhY3ktdHJ1bmsKKzI2MDUzIDVhZTNjMzE2NzNlNGRkNjYyMWE3ZmY3MDM4YmRmNmVhYjFjMjkxYzIgbGVnYWN5LXRydW5rCisyNjA1NCAyYzAyY2YyNzhmMDI4MmYxN2VjOTU5YWQ2ZDlmYzEzMDY1NGRkNzFmIGxlZ2FjeS10cnVuaworMjYwNTUgNTk2MTY3NjQ3YmNmNTdkYTQ2MjU5YWY2M2NiMzUwNTQzOTA1OTBkYyBsZWdhY3ktdHJ1bmsKKzI2MDU2IDE3Mzg3MTI5MzAzNDRhYTI0YzQzMTM5Y2QyOTUzM2JlNWYzZTA1MWIgbGVnYWN5LXRydW5rCisyNjA1NyBmMDU4M2IxZTkzYWIwZjhhNTI2M2Y0ZDYzOWFjMmM0Mjg2N2FiMzdjIGxlZ2FjeS10cnVuaworMjYwNTggZmEwZjM1Zjk0NGI1NjMwMGQ0YWZhOTgzMGYzYjNhYmQ1ZjA2N2EwMiBsZWdhY3ktdHJ1bmsKKzI2MDU5IDZiYjQzODZiMTExMTAzMzQ0Y2U4ODMzYjM3MjFjZjI3M2JiZWRhYzEgbGVnYWN5LXRydW5rCisyNjA2MCBhNGExZTZmNTU1MzE4YWUwMjM2MzMzNTc4OTIyMDczMWQwZDg1ZmJmIGxlZ2FjeS10cnVuaworMjYwNjEgMzVmNThjMjk3ODk5NjQ0Y2MzNzkxNmI2MWU2OTM3ZTRhOTEzNjVmNCBsZWdhY3ktdHJ1bmsKKzI2MDYyIDBlZWNlNzNjMTNjMDhkZWFkNzRhMDk1ZTRmODJkMWJlMWZlMGNiMjggbGVnYWN5LXRydW5rCisyNjA2MyBjZjFhMDVjODY1OTVjMTBjYjIwYTRmYjE1MzA2Y2VhOWFkYTY3NTRmIGxlZ2FjeS10cnVuaworMjYwNjQgZjA3Y2E5OTcyMzA0MDg5MjlkMjQzMWQ1NGM5YzY4YWM2MjMzOGFkZSBsZWdhY3ktdHJ1bmsKKzI2MDY1IGUwZWUwMDk0MTdkZjA3M2VkMWU0MGM3OWVjMGViOWNkMDNjY2VjMzUgbGVnYWN5LXRydW5rCisyNjA2NiAxOGRjY2RmMmM0NmQ4MDI3NGViYmRkOWMzYjllMzU2NWU0NTcxZjYzIGxlZ2FjeS10cnVuaworMjYwNjcgODcwM2QyMDUyMzM5OTg2NmYyOTE3YzU3ZWMyNTBmMjFkYzdjY2NhNiBsZWdhY3ktdHJ1bmsKKzI2MDY4IDE0ZWJkNzYxMDkwMjZjYWNjN2YzZDM0NzcyYTUyYTk2MDRkMzc4ZTAgbGVnYWN5LXRydW5rCisyNjA2OSBkYzJmNzQ1ZmNjNjdlODJjN2RlNDRjZWRmZDQyZmNmNWNhYjkyODVlIGxlZ2FjeS10cnVuaworMjYwNzAgYWVhNmRmZWFhYWI4NDE2OTJjMDI4OGQwMGY1Y2IzMTNkNzMyZTcxMCBsZWdhY3ktdHJ1bmsKKzI2MDcxIDNhYTRiZjdhYzMxZTk4NWYzNTEzYTg2N2E0NzE3MTUwNTljNTdhMWYgbGVnYWN5LXRydW5rCisyNjA3MiA4YTIyNWJkODc2M2FkMGZkNjBiZGQzNzg5YWVmOWVhNGVkOGM5MThkIGxlZ2FjeS10cnVuaworMjYwNzMgY2E0NjVlNGQ4OGJjMWY3MmJjMzY5MzRlYTM5NWY5NzM0NTExOTFmMyBsZWdhY3ktdHJ1bmsKKzI2MDc0IGIzODNkZmUzNmVlZTdkZWEzNmZiMzJhNjIzZTk1YjFhODBmMjEwNDQgbGVnYWN5LXRydW5rCisyNjA3NSBjYzhiNzMwNDBlODM3ZDZiZWUzMDcxMTg3ZTJlODZkNjk1NGEwMzAxIGxlZ2FjeS10cnVuaworMjYwNzYgY2VjYTZjYzQ0NDIwOGMxMDhjZDY5ODdlMjg0MjgyZDUwMTgyNmVhZiBsZWdhY3ktdHJ1bmsKKzI2MDc3IGUwZWRmZWVhNTE4M2I0NjMwMTczNzI2ODNhZjkwODI3NTNiNjE3NmIgbGVnYWN5LXRydW5rCisyNjA3OCAyMmZkYjQxNmJhMmYxYjQyOWZlYTc2MjAzZDZiZmMxMTIyYmVjOTE1IGxlZ2FjeS10cnVuaworMjYwNzkgMGJkZDQxM2EzNDE2OWI0Njk0OTYxYjA5MzkyMmE2MTk4ZGY1NDJjMyBsZWdhY3ktdHJ1bmsKKzI2MDgwIGMzZDYzNzMwODk1NGEzMTIzZGNhODdhZmEzOWE1MzJlNzA5NWFjNmUgbGVnYWN5LXRydW5rCisyNjA4MSBmYTBhYzg0NTkyOWIyMWUwZWNlNjVhMGE2YjczMzA5ZmI2YTk1ZWJmIGxlZ2FjeS10cnVuaworMjYwODIgNmM0YjE5MzAxNmM2NzVjMWM1MDMwYzMxNzY3OWRhYTkwNGQ0ODBhZiBsZWdhY3ktdHJ1bmsKKzI2MDgzIDI1M2RlNTg4ZjJmYjY1ZTJmMTc0Y2RkZDkyM2FlZjgyNTZiNjdiNzkgbGVnYWN5LXRydW5rCisyNjA4NCBiYTY4ZGRhMTVkZjA2ODdlY2NhMTIyZTc2YjEwM2RhNmJmMGZlMjQzIGxlZ2FjeS10cnVuaworMjYwODUgMWUzMDYyZTY5ZjJjYzExMDM1OWQxNTRlNjJjMmVhN2Q0MTY5NGJjNyBsZWdhY3ktdHJ1bmsKKzI2MDg2IDliYWE4YzlhMWU4NDNhOTgxMzliZWNiNjk1OTA4NWQ5MzhiYWM2YWMgbGVnYWN5LXRydW5rCisyNjA4NyBmYTk1NTljNWIxMDM3MTUzMjY0MzZiYTBmNTQ2NzYyZDVjZjliMmRlIGxlZ2FjeS10cnVuaworMjYwODggYzg0MTEwZjA1ZGMzNmM0NzE5NzYwMWY2OWVlNjIzYzljYjVmNWIzZSBsZWdhY3ktdHJ1bmsKKzI2MDg5IDA5NzM2OTNlNGFkMjFkNjg4YjNhNDc3NzE5YjZhZjU3ZTUwZWExMTcgbGVnYWN5LXRydW5rCisyNjA5MCAxNGI3OTg2YTkyZTEwMzhmYTkwMmM0MDY5MTYzZTcwYWRhNmNiYTE0IGxlZ2FjeS10cnVuaworMjYwOTEgY2RmZjNjN2MxYTc2NDM3OTEwZjQxOWNlMDQzNWNiOWFmMWNmNzgyYyBsZWdhY3ktdHJ1bmsKKzI2MDkyIDY5MzFkYmQyZWRiNDIxZGI1MjNlMmI5Y2U2YjA3OTNkZmQ5ZGFhYjQgcmVsZWFzZTIyLW1haW50CisyNjA5MyAwYjY0NTUwYTc0NjExNWM0N2ViNmU4MzQyZmYyYzNhYjg4NGIwYTc1IHJlbGVhc2UyMS1tYWludAorMjYwOTQgMDAxNTRhMGZkZTYxNzVhNGM4NTRkZjZiNzU3YjM0ODA3YzU2NGMyYSBsZWdhY3ktdHJ1bmsKKzI2MDk1IGQyNDY3MDM4NGMzOWNkMjYwYzQwZWZmZmJjMzY3Y2EzM2VkNWQ0ZjAgbGVnYWN5LXRydW5rCisyNjA5NiAxYWU0MjMyNjJmYzk4NjgxNWVkOTY4YWMxOWM2Nzg5MDRiZGM2NDhkIGxlZ2FjeS10cnVuaworMjYwOTcgZjAyZWE4ZTgyNGIwYzEzNzg4ZTFlMTQzYmQ3NjEyMjg1M2MzZDdmMCBsZWdhY3ktdHJ1bmsKKzI2MDk4IDczZTgyNzIyYjAzYzM5MmYxNTZhMWFiMDU5N2Q2M2I1OWRkNGI3ZTkgbGVnYWN5LXRydW5rCisyNjA5OSA4MTBjMTRmMjQzNzM2ZDkyMmI3MjAzM2FkMWQ5OGViMDBkZDA3NGNjIHJlbGVhc2UyMi1tYWludAorMjYxMDAgODI2YmMxNTIyZDIyMTJjM2Y0ZWIzMDAwNzkxYmE0NmQ0MGRhNzRiMSBsZWdhY3ktdHJ1bmsKKzI2MTAxIGU0NDljODFjMWMwMWY0ZTAyYzUwZThiYzE1NmMxZTEzZTM5Y2JiZDAgbGVnYWN5LXRydW5rCisyNjEwMiAyNzFkNjIxZjBlOWZkZjIyZGE4M2E4MjhjYzE5NTUxYmRlNDg2MDBhIGxlZ2FjeS10cnVuaworMjYxMDMgNzcxYjJhOGQ0NDVkYzMyMWFkNTczZjc5YjNjZDhkYjdkMjJhZWZmOSBsZWdhY3ktdHJ1bmsKKzI2MTA0IGY1MWI3Nzg4NDAxMjg3ZWZlM2VmNmU2N2Q2Y2VjNzk0ZjZjZDRlYWMgbGVnYWN5LXRydW5rCisyNjEwNSA3MzYxZWM4ODE4OGE5MWUxYTFlOGM0YmQ0ZmUzZDVkZGJlNTVjOTZmIGxlZ2FjeS10cnVuaworMjYxMDYgMjgwZTdhMjBlMzFhNWM4NjgzNGFiZTRhYTljMjMwOWIxZjk0YzlkNyByZWxlYXNlMjEtbWFpbnQKKzI2MTA3IGMxMThkMDk1YmRkZWI1ZGIxNzM2Y2RhZmZkMjJkNWM3OGMzZmM3NWMgcmVsZWFzZTIyLW1haW50CisyNjEwOCBmZWUyZjY2ZjNjMTY1ZWYwYzE2MTkxNGZjMmJhZTM5ZWY2NTMwMjY5IGxlZ2FjeS10cnVuaworMjYxMDkgMWJkZjIxN2JhZDkzMDliNzY2OTE2YTQ4ZmEwZTdkZmZjYmMxMGVjZCBsZWdhY3ktdHJ1bmsKKzI2MTEwIDIyMjRhZmM2M2E1YmI5NjNmZjM1MTQ0NGRkMjQ0ZDEwMDY5N2I0NGQgbGVnYWN5LXRydW5rCisyNjExMSA1M2VkOWRkNmJjZDVkNDkwOWU3OTk0MzYwZjFkODEwN2I1NGIzOTY3IGxlZ2FjeS10cnVuaworMjYxMTIgNTIyNDA1YWIzNWMxYWQyYzYyMjhjMDU2MjZkNmZjOGZiZmFhOGNhYSBsZWdhY3ktdHJ1bmsKKzI2MTEzIDRjMTBmMTY5MjUyMzI2NDU3OWQxNjBiZmI2N2Q0OWU0MjM4YTY2ZjAgbGVnYWN5LXRydW5rCisyNjExNCA0MDgxZWZmOTMyZmUyODc5MjZiM2NjOTIxMjI1OTY1ZGVjMjk1OWQ4IGxlZ2FjeS10cnVuaworMjYxMTUgMmFhOTQ5ZDAyZDQwNTMyOGQzMTA0YzQyNTcyMzg2OTkwMTg5MWQ2MCBsZWdhY3ktdHJ1bmsKKzI2MTE2IGNiNWZjYTNjZTc5YTlmYTc4YzZhNzJhNzkwODhmMDdkNWExY2RmZDUgbGVnYWN5LXRydW5rCisyNjExNyBmZDQ0OTk5ZTdlYWQ0MjE3ZmQ1MTNmNTA4NWRhZGY1OTA2MjE1NGRmIGxlZ2FjeS10cnVuaworMjYxMTggNjg3MWU2NzQ1YWE1NDIxMGE5YjEwMmNlOGNhM2M0NzU0OGJlM2YyOCBsZWdhY3ktdHJ1bmsKKzI2MTE5IDZmYTQ2YzIxNzY2ZDkyMzFkZGFhOGRjN2NhYWZkYTc0MWJmNjE0ODkgcmVsZWFzZTIyLW1haW50CisyNjEyMCBlNzBjOWI3YWFmM2Q2ODk2NGUxZmMzYzk2MmUyNTQ3NTRlNWE0ZGYyIHJlbGVhc2UyMi1tYWludAorMjYxMjEgODcxOTg2NjAxNGFiMzZhOTA5Zjc1NjBiMjhlNDY0MmFhNjIxMGM2MyBsZWdhY3ktdHJ1bmsKKzI2MTIyIDk5MzFmMTU0YmU5ODhmNWQ4OGQ0ZTllZDBhODY1ZGU5ZDcxNzJhOWYgbGVnYWN5LXRydW5rCisyNjEyMyA4MTdiNDk0YzliNWU0OTdiNGZkMDAzNzk3MGFjMGE0ZTJhMmFiN2E0IHJlbGVhc2UyMS1tYWludAorMjYxMjMgNWI1NDY0MGU3MmI2NmI4YzA4NTc5NWUyOGVmNzU2ZDU4Yjk1NWM2YyByZWxlYXNlMjItbWFpbnQKKzI2MTI0IGE3ODg0ZDdkMmQ0ODkwMGY5NWQyZDBkNDZhZjkzNGQ0NDkzMTkxMjggcmVsZWFzZTIyLW1haW50CisyNjEyNSAzNDI4MjI5ZjEyYmIxOWEyODY5YzMzZmI0MmUwOWU4NTM0MmM3NDVlIGxlZ2FjeS10cnVuaworMjYxMjYgYWQzY2U3MzAxNmJmYWExYmM2Y2M1ZTY2NzdjOWU3NjczNjNhZDFjMCBsZWdhY3ktdHJ1bmsKKzI2MTI3IGQyNmQ4NTc1YWM2MjFjZjJmYzhlZDZiOTgyZWFiMzI5YmU0ZThmODQgbGVnYWN5LXRydW5rCisyNjEyOCA1NGVhOGE5M2VjZDdlNjIxOTdiM2I2ZjMzMmRlY2FmOGVjMjNiMzZhIGxlZ2FjeS10cnVuaworMjYxMjkgM2E1MDY1MDA1ZmNmZDEyMTEyYWEyYjMyY2QzNjVhNTg4YTU1OTUxNCBsZWdhY3ktdHJ1bmsKKzI2MTMwIDlmNTA5ZTQ5MGZjYzc5Y2ZmZWRkYjJkNGY1ZjNkNjFlYjZiZjMwOGUgbGVnYWN5LXRydW5rCisyNjEzMSAzMTRlMTQxNmFhNWQ1ZjVkY2NlNjAxYjRhNTY2ZTE5YTY0MmM1OGI5IGxlZ2FjeS10cnVuaworMjYxMzIgMjYwYTE3MjBmNjI5YzRmZjM3MDFhYjRhNGQ2NjIzNjZkNjVhZTE1OCBsZWdhY3ktdHJ1bmsKKzI2MTMzIDU5ZDM5MTNhMjljNDQzOTMyM2M3NDEwYTdiYjY0OGM5ZWVjMjRmYzkgbGVnYWN5LXRydW5rCisyNjEzNCBhNmY4ZTEyODZiMTU1NmVkZWViZDUxMjNhZTA0ZDY2ZDc3MmEzYjY4IGxlZ2FjeS10cnVuaworMjYxMzUgMDJmZGRmN2MyNWMyZGUzZTMyYmYwNzgxODMzMjdiMzUwM2EwZjNiOSBsZWdhY3ktdHJ1bmsKKzI2MTM2IDc0ZGU4NjQxODI4NDEwZTI1NjJkYjU3ZjcyNjQ2Y2Y1ZDJiMTZjMTggcmVsZWFzZTIyLW1haW50CisyNjEzNyBkNmVmOTU3YmYyOTBmYzZlNjVmNzFmZDcyMzQyYzY5NDE2MWNhMmVhIGxlZ2FjeS10cnVuaworMjYxMzggYTZhOGM2OWVjMGU3YzU4ZTEzYjkwY2I1YmFlZWNlZmE2M2NjNTM2NyBsZWdhY3ktdHJ1bmsKKzI2MTM5IDM2MTg2YWYzYzEyNTE2NGE3MGVhMWZhZDJhNTdhOTcyNzBlNmI4Y2EgcmVsZWFzZTIxLW1haW50CisyNjE0MCAxNDlmYmJiMDM5MTU3NWI1Zjg4NWI3YzkyZTA3MjlkOTZhY2VmYTg1IHJlbGVhc2UyMi1tYWludAorMjYxNDEgNWY3ZDcwYWI3NGVlZmZkZmNkZGU3MjFjZGE1ZmFlYjcxNWM0YWVlOCBsZWdhY3ktdHJ1bmsKKzI2MTQyIGVjNjdmY2UzZmEzY2VkNGEzYzhkOGNjNDhiOTY1NzBmZjJmY2RmYmYgbGVnYWN5LXRydW5rCisyNjE0MyBkOTlhMWRkZjk1MTgwNTE3OGQ4ZjE4NWE3ZjMyNmE4MmIzZmExYmUxIGxlZ2FjeS10cnVuaworMjYxNDQgMDFjNWFlNmZjNWJiYmEzYTdlMWFhMTU3YzY2ZDFlNTVlOTNmMzBkZSBsZWdhY3ktdHJ1bmsKKzI2MTQ1IDBiMmMwODc1NDJiY2JmZjM3MDQ2MjIzNDlhYmI5ZDljNWI1YjA2YmMgbGVnYWN5LXRydW5rCisyNjE0NiBhYThkNTk4MjNhZGQxYThlN2Y3ZThhN2ZlOGM3ZjcxMGE5N2UzYzhiIGxlZ2FjeS10cnVuaworMjYxNDcgYThjNzVjZjc0ZGMxNDExMmMwZWM4MGMyYzJkYmY2NWFmYzczOWRhOCBsZWdhY3ktdHJ1bmsKKzI2MTQ4IDAyOGViYzhmYjM5MDhhOGNkYjdhOTQwYmUxYTFjNDVjNDQxNzI4NjggbGVnYWN5LXRydW5rCisyNjE0OSAyMjM5NmY3N2MzNTZhYTMwOWZiOGYwMjBhNjg5ZDg0MzlhNDMzYjkxIGxlZ2FjeS10cnVuaworMjYxNTAgOTdhMzQ2NDNlNTQ0YTk3MDVkZGRkNDg3ODFkODIxODMyMTA1MTEyZiBsZWdhY3ktdHJ1bmsKKzI2MTUxIDA2NjY4ZDhkOTM0M2Y0NjRkOTEwOGQzZDJjYWJhZTRmNThiMzliNjUgcmVsZWFzZTIyLW1haW50CisyNjE1MiA5YWNhYjc2YjAwMTc4ZDY0ODdkNjRjYjAwZDJlYTg1MDAzYTNhMzRhIGxlZ2FjeS10cnVuaworMjYxNTMgMTkyMjkxNWNiNzNkN2E4YWNjYzUxZmY5NWQ1NDg4MDgxOWVmNmY2MiByZWxlYXNlMjItbWFpbnQKKzI2MTU0IDNjODc4MTQ5MmQxZmRiOGJhMzk1MGUyZTk0YTRmNzVlZWIyZTRhN2IgcmVsZWFzZTIxLW1haW50CisyNjE1NSBmNjYzZmZiZTllNWM0MGQ0YTJhYzU5ZThhODhkNWYwOGVhOTJiOGFkIGxlZ2FjeS10cnVuaworMjYxNTYgNGVkMDZmOGFhZGQzNzg2MzI4OGUzNmRhYTZlZTMxNmU0YmU5YmFmMiBsZWdhY3ktdHJ1bmsKKzI2MTU3IGFjNWUxZDkwMjliNzk0NTI2YzdkMzIwODJjN2UzMDgwZDlhZThlMTEgbGVnYWN5LXRydW5rCisyNjE1OCA2OTNlMDAxNjQwODFhZWRjY2M4Y2Y0NzUwMmY4ODQ4ZThjYjZmMTU1IHJlbGVhc2UyMi1tYWludAorMjYxNTkgMGViODNhYWNlMDcxNjY3ZGE5NWE4MzJmZGVhYWE4NmYzNmFmMzhlYyBsZWdhY3ktdHJ1bmsKKzI2MTYwIDU4YjJmNDYyNmI2NGQ3OGExZjE4NDU4NzYyNDcxZjg0NTVkZDE4OWEgbGVnYWN5LXRydW5rCisyNjE2MSAyMTAwODg3YjQ3Y2JiOWJlMmNmZWMxZjNjOGI2YWNkZGY4MWYwODVmIGxlZ2FjeS10cnVuaworMjYxNjIgZjAyNzcxNDZhYTE2ZGI2NDlmN2QzZjlhNzJmOWI1YWE0NDg4NWY5MyBsZWdhY3ktdHJ1bmsKKzI2MTYzIDE3YTE3NTFhZDFkOTAyMWZlYTg0YTE5NjA1YzM4OTliN2RmZGY3N2QgcmVsZWFzZTIxLW1haW50CisyNjE2NCAyMWYzNTMxMjQxNDVjNDNhMzkyMWM4MjI1ZTllNTU3MzA1Y2Y5YWZmIGxlZ2FjeS10cnVuaworMjYxNjUgNzczNDNhYTAzZTJmMzYzYzdiNDEwNDE2MTBmNzhjODMzNGNiNjFmNSBsZWdhY3ktdHJ1bmsKKzI2MTY2IGYxYWY4YWQxMTAwMGEwODliZTBmOWZkYjViYTM3MmMxOTgyYzE3YTMgbGVnYWN5LXRydW5rCisyNjE2NyBjODE1ZTAwM2RiY2Q4YmQ1YzBjZTQ1ODQ0MTE0ZjYxN2Y2NTZiZTRjIGxlZ2FjeS10cnVuaworMjYxNjggODgyZWE1Y2M3Njg3YWJiZThmNGM3MGMwMjRkODhhOGUzYWQ0MzI5NyByZWxlYXNlMjItbWFpbnQKKzI2MTY5IDMzMzdjNDFjMTMyYjExNGE5NGM1MmI1MGMxODRmZDlmMmM4MDI0MmEgcmVsZWFzZTIxLW1haW50CisyNjE3MCAyYjcwMjVhMjMyZTFmN2Y0OTRjYzk5YjMzY2ZiNTg5MzJhNmQzZTI0IHJlbGVhc2UyMS1tYWludAorMjYxNzEgYTNiZjJjOTdlODA4ZTQxNjQ4ZDY0YjFhNWZhNjkzZjExYjg4ZjcxMyByZWxlYXNlMjItbWFpbnQKKzI2MTcyIGRkODk4OGNhNGIxNDY2ZDM2N2ExOGZjYzBmZWE4NjA1NjE0NTA2ZGEgbGVnYWN5LXRydW5rCisyNjE3MyAxMmIwMDNiZTVkOTZjNTM4OTc3MDQ3YTMyZjZlNWExZmFlN2MyY2QxIGxlZ2FjeS10cnVuaworMjYxNzQgNTMzY2Q1MTk3NTc1ZGE3N2MwN2YxMWE2NmE1ZDM2MjNiMDU5ZmU3MCByZWxlYXNlMjItbWFpbnQKKzI2MTc1IDQzZWU3MzdhMWI3ZjEwYWFhMGE5YmQ1OTIyOGYzN2I2ODlkZjNjZDcgcmVsZWFzZTIxLW1haW50CisyNjE3NiAzNTE1NzY3MTIzZDhjOGNlNTM4ZmEyZTM1MWY2ZDg2ZWZhYTE3YjMwIHJlbGVhc2UyMi1tYWludAorMjYxNzcgMzViNzk4NDM4NTI3ZWI2MmZkNzYyYjZiNDVmNWI5ODYwN2E0YWRmYiBsZWdhY3ktdHJ1bmsKKzI2MTc4IDZhZmZmZmYxZmZmMWVlYTU3ZmVkMDMyMjZhNDU5NTE0NmUwZmE3ODUgcmVsZWFzZTIyLW1haW50CisyNjE3OSA0M2NlZTE4MTgyNDIwYTFjYzY4NTNjNjAzMjliOTU0NGY1NGZlNjA4IHJlbGVhc2UyMS1tYWludAorMjYxODAgYzFhZWM2MzI0YWQ1NGUwYThlNTI2MmZlM2NlM2IxYTZhMjc0ODYxYSBsZWdhY3ktdHJ1bmsKKzI2MTgxIDBhY2Y2ODIwZDllMzUxMDMzNTczYjY0ODhlYTc2ZTYzYTNlMDczMjAgbGVnYWN5LXRydW5rCisyNjE4MiA0MmNjODdjNDAxMDM2YjFmMzA2N2I5NWY1NThmYmFhZGFhNWNjZjlhIGxlZ2FjeS10cnVuaworMjYxODMgYzU2ZWFhZDNhMGIzOWYyYWUwZjUzODI2NTA0MmU2MmJiZTVmNDEzYSBsZWdhY3ktdHJ1bmsKKzI2MTg0IGY4OWYyMDEwODdlYTY3NWE1MTFiODliMmFiMjZjNzc1ZmFmYjJjMjIgbGVnYWN5LXRydW5rCisyNjE4NSBmNjhkZGY3ZjIxZjg0YTViNWUwZTI0MmVkNzNhNzQ3NWM4ZjA4MTYyIGxlZ2FjeS10cnVuaworMjYxODYgOGJhNDk5ZWNjNmM5MTI0YzYwNDNhZWI2ZmUzMjUzOTQyZDk5YWIxOCBsZWdhY3ktdHJ1bmsKKzI2MTg3IDI5NTUxZjc0N2MwZWQ5ZDQ2NzE4ZDg0NGI4ZWNjOWFhYWM5NmY3NjkgcmVsZWFzZTIyLW1haW50CisyNjE4OCAzYjZmNDhiNTQ2NjZlY2ZhMTIxZWExNjk2NmE0YjczNDBmNzMyZDkzIGxlZ2FjeS10cnVuaworMjYxODkgYWFmNTcyZTMzNGMzYzhiYTM5NDlkYWExMzZhY2IzYjRmYmYyMzVjNiByZWxlYXNlMjItbWFpbnQKKzI2MTkwIGQzY2YzODNkZjA5NmMyYzhjZTY1NDVjMDg0MzcyMzBlMzU3MzM5ZmYgcmVsZWFzZTIyLW1haW50CisyNjE5MSBhOWRkNWU2ZDY4MDU2M2UwNzg2M2Q3NGY3ZDU4YzI4MDMxMTc1ZjAzIGxlZ2FjeS10cnVuaworMjYxOTIgM2FmOGFiMWIwNWZjN2YxMjkwMjM2NmYxM2I3ZWE1ODYxN2E3M2JjNSBsZWdhY3ktdHJ1bmsKKzI2MTkzIDVlZGE3ZGIwMDdkNmQ3OGU2ODExOTE2ZTMwNWM4MzZjMDU1YzRhZTEgbGVnYWN5LXRydW5rCisyNjE5NCBjODY1Y2Y4YmVlNDBkNjk1MWIwMzIxZDI2MGNmMTMyODdkMzNmZGQwIGxlZ2FjeS10cnVuaworMjYxOTUgMDkwODcyOWU5NGUwZjE1ZjFkNmQ4NzAwMTU5NzhlNjlmMzlhYjZmZiBsZWdhY3ktdHJ1bmsKKzI2MTk2IDczZDE0NWJmZDhlNDVlMGIwY2MxODk5NmY0ZjQxZjg4ZjViZGEyZjQgbGVnYWN5LXRydW5rCisyNjE5NyBmMWY1N2JmMDkwOTJlYmU2YzI2OTkzM2M4NzU5NTBlMTg3OTMyOWIxIGxlZ2FjeS10cnVuaworMjYxOTggZWYyZmJjZTcxNzM2OWRmY2UwODA3NTBjZWUyM2Y0ZTg4ODFiNjdmMiBsZWdhY3ktdHJ1bmsKKzI2MTk5IGQ3NTMxMzA3NDM1NTUxYTBkYjVmNTg3MjBhNzBiNDlmMDFkYWFhMGEgbGVnYWN5LXRydW5rCisyNjIwMCAyZWRkY2U0NGIzYmVkYmM3MTIwNTEyODViZmRjZTk4ODU5NWMzOWQzIGxlZ2FjeS10cnVuaworMjYyMDEgMTg2OTZmYzM1MDYyZjYyYWE0MGMxMzg0OTA0MWRkYzA3MjQ1ZjEwOSBsZWdhY3ktdHJ1bmsKKzI2MjAyIDM5ZWEwOWZmNTczNGVjY2RmMWM2MjcyZTVmMTUyYjNmZGRhYzhmZmIgcmVsZWFzZTIyLW1haW50CisyNjIwMyAwNzlhYmUwNWU4YmM4MWMzZDhiOTI2ZWE1YmFlYzExOTA3N2QzMWZjIHJlbGVhc2UyMi1tYWludAorMjYyMDQgMzgyNzkxZGRjZTFjMTgzMmYwNTBmNWU2ZGJjZmY5MDZiZTE3NjZhMiByZWxlYXNlMjItbWFpbnQKKzI2MjA1IDIxNmRhZDcyMDliYzcwMTMyY2EyMjliOTIwZDk0YWIyNDQ4ZWI3MjAgcmVsZWFzZTIyLW1haW50CisyNjIwNiBkNzAyOTY3OTQzNWY3ZWMyOTA2MGNlMTgwNTdlMTQzZTk0NTViZGUwIHJlbGVhc2UyMi1tYWludAorMjYyMDcgNjgwNzFhNzI2OTcwNmI4MWJhNTc5NTE2NjQ0YzAzMWFkYjRhY2VkMiByZWxlYXNlMjItbWFpbnQKKzI2MjA4IGY2MDkzYmFjOWZiNjRmZTM0ZjI1YjY4NGY3NWU2NGFmNzc2NGU4NzUgbGVnYWN5LXRydW5rCisyNjIwOSBlNTg5ZTQ3M2YyMzJmYmY3N2Y4OWU4NDE5NzgwMWRkNzk5NWQ0MGJjIGxlZ2FjeS10cnVuaworMjYyMTAgZDZkNjQyMzlhYTA1MTU4YTJmNzgzNjJiNmM4YjYyNjgzMGQxNjk4YiBsZWdhY3ktdHJ1bmsKKzI2MjExIGY2NjAwYjBkYjY4OGE3NzY4MGMwMDFmZjBmN2U1MGY3NDc3NDhjYzggbGVnYWN5LXRydW5rCisyNjIxMiBlZDAzODA2ZDg4Y2RjOTcyOWVmMDA1YjkwZDRjYTFmMjgwYjYzNGU2IGxlZ2FjeS10cnVuaworMjYyMTMgNmU5YzBkOWJkZDdmZDRhNjI0MTc4N2Y0NGNlZmU0YTdmZTVjMmExYyBsZWdhY3ktdHJ1bmsKKzI2MjE0IDE4OGIwZmEyODAwN2U4NmE5OGU1MTM1YzFmMDI1YmI0NDkyNjMyNmUgbGVnYWN5LXRydW5rCisyNjIxNSAzMmVlYzZkNzljOTNmMmFiNTEyNjI4MTUwZDQzNmViODlmZGJiMzI3IGxlZ2FjeS10cnVuaworMjYyMTYgNDE2ZGI4ZDk2MjE2YjkxMWVjOGE5NTU0Zjc1ZWMzM2FhNDI1YWMzMSByZWxlYXNlMjItbWFpbnQKKzI2MjE3IDI3M2Y1MWY1MjAwMDE5MTc4NDZkNDVkMmVjODJmMWJlMTA1MGEzM2QgcmVsZWFzZTIyLW1haW50CisyNjIxOCBlMjRiOGQwYjY0NzA0YjEwY2UzYjE1MDQwOGIyMTRlM2RkYmY3MTc3IGxlZ2FjeS10cnVuaworMjYyMTkgMjJmN2VmN2JhNzJiYTQ1Y2U1NjkxNTlkZWY3N2QzZDQ1NjE4MmY2OCBsZWdhY3ktdHJ1bmsKKzI2MjIwIGJiZjA1YWYzYzE5MTM4ZDM1NzE3MjUyOTRjZjZkMjNkYTVkYTY3NDQgbGVnYWN5LXRydW5rCisyNjIyMSAwNDM2N2NmZjg2ODk1ZjZjY2I1ODBmNzJlMjAxY2E5NzFiOTA5ODVmIGxlZ2FjeS10cnVuaworMjYyMjIgYTY1MjdkMWVlNDc0MjhhYjYyMjU2OWYxNzdhYmVkMjU4NmVkNDk3MSBsZWdhY3ktdHJ1bmsKKzI2MjIzIGY5MjM2Y2FkNjllNjI4MGZhODc3MjRiN2M0Y2ZmNDQ2NTg1ODg0ZjQgbGVnYWN5LXRydW5rCisyNjIyNCA2ZjhhNWFkMzllNmZlNzJlMWYwZTEwODVkMGMyZTVhN2Q0MTU4NGM3IGxlZ2FjeS10cnVuaworMjYyMjUgNjgwNGU0OGEwMDMzYjQ2NjQ1Yjg3OGNkMWE0OTFlYzY2MTc0NWYwNCBsZWdhY3ktdHJ1bmsKKzI2MjI2IDcwMTQ5MjE4MjBhNTFjZDFhZWVhZDNkMWRhNDM4MjQ1YWQyMzhmNTEgbGVnYWN5LXRydW5rCisyNjIyNyBhNTYxZmYxYjRmZmExZmJhOTc5ZTMzMTJkMTdjZDdkNTlhYmRiYTVlIGxlZ2FjeS10cnVuaworMjYyMjggZTJmMjE4N2MzZDJjMWNhNzk4ZWFmOTY4YWI5NTEzNjI1MjUwNGRkOSBsZWdhY3ktdHJ1bmsKKzI2MjI5IDAwZTY0MGU2ODBiZDI5OGRjNzcwOTdjOGVlN2Q3NzQxMGM5MDM2NTYgbGVnYWN5LXRydW5rCisyNjIzMCBiMWZhOTBmOGI2YzIxMjAzZDBiZjAzNmRiNjJhNzRmMGVlOTljZjYyIHJlbGVhc2UyMi1tYWludAorMjYyMzEgYzkxNjI2ZDFmNDExZjBjYmZhMjc0YWZhMTViMGMxYzc0NWQzMDM3MCByZWxlYXNlMjItbWFpbnQKKzI2MjMyIDI1MjQzOGJiMDVkOTdhODRhZDFkODgxY2E1MmJiYWQ2ODU2OWRmMTAgbGVnYWN5LXRydW5rCisyNjIzMyBkNDYyYzc5MGNjNWJkNzY5Nzg3ZjliODFiNzQzY2IzM2U3YmI3N2YzIHJlbGVhc2UyMi1tYWludAorMjYyMzQgOGQzMzdiM2I2NTVhM2FhNjE3OGEyNjViOTFlYWNkOTQ4YTc2ZTkwZCBsZWdhY3ktdHJ1bmsKKzI2MjM1IGMzZTlhMDUyZTI2OGEwMDcwZGE3YjJhNjI5YjdjYTlkNTc3ZTE0MTEgcmVsZWFzZTIyLW1haW50CisyNjIzNiBlM2RlOWQxOWZhYWFmYzZjZjhhMTg0NjIxNjYyZWM2ZGZjMjIwNGM2IHJlbGVhc2UyMS1tYWludAorMjYyMzcgMWEzYjA4NjYzZWJlMDFlN2JmNzlhMTY2MDVjMjcyYTRiMTk0OGFiMSByZWxlYXNlMjEtbWFpbnQKKzI2MjM4IGE0MWExZTAwNTFjNWQ2ZTIwMmRmMjlkOTU0YWU5MWQ3MWQ0ZjAyOWQgcmVsZWFzZTIxLW1haW50CisyNjIzOSAzYTY3MThiOWI2NWE4MzhiMjg3NmQ2OWQxMTExZmQ5YjY4M2ZmYWFiIGxlZ2FjeS10cnVuaworMjYyNDAgZTE0MjNlYzllNmVjMzYyZDA5NjdhNzU0NDc3YzRiN2ViYjYxZDlmYyByZWxlYXNlMjItbWFpbnQKKzI2MjQxIDM4OWQ0MjlhZGE3MmM2ZDQ3ZTIzZmYzNzMyYWY5YmY2MjFhNjY3YTggcmVsZWFzZTIxLW1haW50CisyNjI0MiA3OTI4NzUxYmZkZWU1MTg3YWIzOWI2Yjg4YTRiYjM4NTBhMjA5YjgzIHJlbGVhc2UyMS1tYWludAorMjYyNDMgNWJlMDY3N2Q4MTBkMDI2YTc5NTU2ZDFhZDM5NzgyZDc2OTZmZDhiMiByZWxlYXNlMjEtbWFpbnQKKzI2MjQ0IGQ4YmM2OGNiMTdlMDM3MDEyOGI5ZGU0ZjM1MGY0MTRhMjAyMDA4MDkgbGVnYWN5LXRydW5rCisyNjI0NSA1ZDM4MzAwNmQzNmI5ZDM2NGE1MjQyYzA2OTQyZTI2NDlmNTJlM2Q5IHJlbGVhc2UyMi1tYWludAorMjYyNDYgMjg5ZWExZDVjNWFjY2NkYzE5ZGZhNmU3NzY3NzYyNGFhOGE2MGJhNCBsZWdhY3ktdHJ1bmsKKzI2MjQ3IGMwZGQ4YmJkZGU2MDQwODM0Nzk1ZDY1YTJlYTZhNDAzYTI5MTY5NmMgcmVsZWFzZTIyLW1haW50CisyNjI0OCBmOTc0NzNiMzQwYTU4MDNjYjBkY2NmNzY0ZTQzNTA3NDJlYmNkN2MyIHJlbGVhc2UyMS1tYWludAorMjYyNDkgMmIzYTZhODQ0YmZmZGJiOWU4ZGU4NTNmZWU1MzU4NjQ2NDkxMTE4NCBsZWdhY3ktdHJ1bmsKKzI2MjUwIDE3MGZiNWI5NDczZjhhMzQyNGQyYTYwYmQ2NzI0NDMxNzFjMDBjZjYgcmVsZWFzZTIxLW1haW50CisyNjI1MSBhZjcyZDJjZjJjNTVlYjg4NDkwMDZkMGUwMDA2NWE4MTBhYzUxZDA4IHJlbGVhc2UyMS1tYWludAorMjYyNTIgYjgxZDBlODkwNDEyY2MxYWYyYzQ1MjAyYTI4OTEzZjg0MzcxYWQwYiByZWxlYXNlMjEtbWFpbnQKKzI2MjUzIDMzYjJhODliZjRhNmE1YjI2N2I1ZDE4M2UyNTg1MzY1NzA4NmZkYTMgcmVsZWFzZTIxLW1haW50CisyNjI1NCAxYTM3NTY2MWNjOTczMjk1MDEwNGQyMDVlNGM3ODgxYmEwYzRmNzk3IHJlbGVhc2UyMS1tYWludAorMjYyNTUgNTcwYTc4MDI3OWQxYTQ2MWJlNjQyZTNiNzRhMTFjYmExOGY5ZWU5YSByZWxlYXNlMjEtbWFpbnQKKzI2MjU2IGI1YWFkZTk3ZDcyM2ZhOGE2M2U3YjE5YmIxNjMwZGM2MWZlMmM3MGYgcmVsZWFzZTIxLW1haW50CisyNjI1NyA3ZDQwYjY5MWRiYTc2MzdjY2JmNzdhMTI5M2RkMjM4ZTM3MmU5YmE0IGxlZ2FjeS10cnVuaworMjYyNTggOGJhY2E0ZWNlNjQ1NTM1MjcwN2FiNmZhZjExMTNkMGFkNTI2OWQwYSByZWxlYXNlMjEtbWFpbnQKKzI2MjU5IGVhNDM1MjNiNWJlNzYyN2Y0YmE2MjJiNzhhOTg3OGFlZjM1Y2MyZDggcmVsZWFzZTIxLW1haW50CisyNjI2MCBjMGQ3YjU3ODhjYmU2M2JhYWMwMjQ0OTUyMTA3MzlkMDY3N2Q4OTc0IGxlZ2FjeS10cnVuaworMjYyNjEgODkxM2RmYTExMDI3ZWRhYTdhYTExNWNjZWI3MDE2Y2VhOWJlOWYxMyBsZWdhY3ktdHJ1bmsKKzI2MjYyIDExY2ZlODM4M2NmODg3NTFmYWQzZDc5ZTFlNmIyYmQzMTIyZDAwNjYgcmVsZWFzZTIyLW1haW50CisyNjI2MyBmYmRkNDBiOTJiODcwYjdmZjdiZDRlZGQ2MjM2YjA2N2I4YjRhZGE5IHJlbGVhc2UyMi1tYWludAorMjYyNjQgN2U4NGRhOWM5OGViYTZiODA4MWZjM2MzY2MxYTY3ZWIyM2FlZTU3YyBsZWdhY3ktdHJ1bmsKKzI2MjY1IDlkMjZkNTY4ZGJiMzA3NjNjNWVlMmFiMzA0YjNhMmNhYWFkOTFiMWQgcmVsZWFzZTIxLW1haW50CisyNjI2NiBiNjA4NDQ1YjI1ZjAyOWIyZGFkYzg1ZmYwYWYzMWNlYjcyM2YzY2EwIHJlbGVhc2UyMS1tYWludAorMjYyNjcgYWM5OWJlZDI0YjdkMTA2Y2E1MWI2MDQ0YzUwZDdjYTE2OTU4NjBmZCByZWxlYXNlMjEtbWFpbnQKKzI2MjY3IDdkMTUwNGM4MGZhMDcyYjRiYTg2ZWRkYTEzYTEzYjBhMDVhZThlYWIgcmVsZWFzZTIxLW1haW50CisyNjI2OSA1YWIzZThmMTRkNDY2MzlkNmM0MGM5Y2I2MmQwZDdjZjhiODc2ODczIHJlbGVhc2UyMi1tYWludAorMjYyNjkgMzk0NzkwMzE2YWEzODBkMjJlNGQ2NzBiYzY5YTYzOWU3MjVmMDMwMCByZWxlYXNlMjItbWFpbnQKKzI2MjcxIDk5MDAxZmQ5NWU0OGRiODE1YThmZDAxYjNkZDAxNzc5ZTFlZTc4ZTUgbGVnYWN5LXRydW5rCisyNjI3MiAwNzczZDIzMjI0ZDJhYTZiNTUwNTFjZmQwNzY5YWVmM2FjNmZkZjdmIGxlZ2FjeS10cnVuaworMjYyNzMgYzI2YWYxYWJjMmM2MjEzMDEyYWQ1OTBmOTQxZDlhODllYWRmYTE5MCBsZWdhY3ktdHJ1bmsKKzI2Mjc0IDEyMTMzYzhiODNjZjVmNGVlMzI0Y2U3NDNiNDBiZmRhYjQ5NWVjZWUgcmVsZWFzZTIyLW1haW50CisyNjI3NSA3MjgxYTA2ZTNiNTdmM2JlYmM1NzUyMTQxZWIwM2FjZjViYjY1MmZhIHJlbGVhc2UyMi1tYWludAorMjYyNzYgZmViNmQxYmNkZDFkNjJlMTg5ZGUyMzA1ZGM1OGUyY2I1NzczYzEwYSBsZWdhY3ktdHJ1bmsKKzI2Mjc3IDkwODFjOTJhMGNjODVlNDRmYzY3ZWMzZmNhNzM0NDliZmZlODc4MWQgcmVsZWFzZTIyLW1haW50CisyNjI3OCA4YTAyYzMzZWQyYzE4YmIzODQwYjA5YjFlMGY1ZTQ3ZmM2NWIwMWUwIGxlZ2FjeS10cnVuaworMjYyNzkgMTVjMThiYzlkNzE1NjVmZTc4Nzk0OGZkZTZhMDFmMGVhMzA2OWNhZSBsZWdhY3ktdHJ1bmsKKzI2MjgwIDU0MjI5YzM1MTMyZTc3NTFmMWJkMDY3NDBhMmY5NDBhOGJkZTU2YjMgbGVnYWN5LXRydW5rCisyNjI4MSAyMzkyYWYwNWYwNTI2YjU2MDMwMDBiNzhjZTViOGY2MWI5YWYyYTY2IGxlZ2FjeS10cnVuaworMjYyODIgM2M4NzZmZjI5YTgzZWQ5ZWZkZTQ5MjVhMTg3NzZhYjU1YmJhMGI2NyBsZWdhY3ktdHJ1bmsKKzI2MjgzIDNmMjFlNGUzOTI2ODEwM2YyMTU0MzUwOTIyOWI5NWVmY2NjNWUwODEgbGVnYWN5LXRydW5rCisyNjI4NCBhNWVlYjI4OGUwMjBmNzMwYzkwZDY4NDk4MTE5YTQyZWY1YTNkNDA4IGxlZ2FjeS10cnVuaworMjYyODUgMDc3Y2U4YjVkODNiNTliNzNlNzNjN2FhNWQxMDNiNDUzZjJiZWRhOSBsZWdhY3ktdHJ1bmsKKzI2Mjg2IDRjNDk5NDQ3Y2M0OWY4ODczZWUxODVkYTg4OWE4ZTk0NWRiMjAzODAgcmVsZWFzZTIyLW1haW50CisyNjI4NyAzMzIzZjNmNDIyZGIwOWExMjI0Y2UwYjkzZmVkNzlmNDMzZGU0NDRiIGxlZ2FjeS10cnVuaworMjYyODggZTIzMzgxZmE0NzUwMzgwMmNkMTQzYmYyYWZhOTNjOWU0NDY4ZmFmZCBsZWdhY3ktdHJ1bmsKKzI2Mjg5IGUyZGVjM2NkZjNjMjY4MGZmZDdlODYyZGJjODJiZmExYWNhNjcxNjkgbGVnYWN5LXRydW5rCisyNjI5MCBlMzA3YTk0ZGQ3N2JmZGNkNWI3ZGU3ZGIyNDA1YWFhNTNlODc2OTc2IGxlZ2FjeS10cnVuaworMjYyOTEgMjY3Yjk3MzJiZjQ2NTUwMGIyYTA0ODY5OTA0ZjZmNmYxMTdiZjUxZCBsZWdhY3ktdHJ1bmsKKzI2MjkyIGE5NmU3ZTVmMzQwNzcxNWE3MDIzMmYyYTVmYzc4Y2Y4NmExMTUyYjQgbGVnYWN5LXRydW5rCisyNjI5MyBmNzZjYTlmYmM3YTQ3NjJjNDhkNjMwNzhiYzQ3MzA0MzM2MTQ0NDEzIGxlZ2FjeS10cnVuaworMjYyOTQgMzJhOWIxOWRiYTFkZDY3MDBhZTNiN2U5YmJiYjJhMjZlMjIzMjViZCBsZWdhY3ktdHJ1bmsKKzI2Mjk1IDQ0ZWU2OGFjNWU3Zjk2MWI2ZmMzOTkxNDdmMGMxN2MyNDJlODZiMmUgbGVnYWN5LXRydW5rCisyNjI5NiBkNGY5ZTE5YjhjMGI0Mjc2MGEzODdhN2Y0ODBkNTg5ZjQ3NGQ3MjllIGxlZ2FjeS10cnVuaworMjYyOTcgZjE0ZTQ1NTBiMmYzY2VhOGM5M2I3N2E0NGRjZDdlYmI0MTYwNmNhMSByZWxlYXNlMjItbWFpbnQKKzI2Mjk4IGE1NGIyM2IyZjE3MjBjMzM3MjcxYjg4N2Y5MGRlY2FiZDA1YmViYmUgcmVsZWFzZTIxLW1haW50CisyNjI5OSA1YzU1Mzc3MmNhNTRjM2ZkNGRlOWYwYmI0ZTlhODRjMDg2YTkxNmM3IGxlZ2FjeS10cnVuaworMjYzMDAgNTM0YWFiNWJjY2VhNDViM2M2ZWJmMDY0NDk4MjJlMmQ2NjFkNjMwZiBsZWdhY3ktdHJ1bmsKKzI2MzAxIGFiNjc5OTMxYWUwZDE3MTcwZmJmYTA5MDJhODM4Y2NkZWNjOTY5ZmQgcmVsZWFzZTIyLW1haW50CisyNjMwMiAwNTdjNWQ3OWM5ODhhZGRiNzc5NzZkZDdjOThmNTgzZTdiMzc2YzlkIHJlbGVhc2UyMi1tYWludAorMjYzMDMgOTc5Mzk4MzRhNjczNTIyMDFhNGQyYzVhNTg1OGM3NmE0ODAwZDgwOSBsZWdhY3ktdHJ1bmsKKzI2MzA0IGM4NzUwZDYzZGMzNTU4NDI2NGQzY2Y3MWMxM2RhOGQwMWUwNGQwMzEgbGVnYWN5LXRydW5rCisyNjMwNSA1MGM5YzI0MTQ2M2QyMWFlYWYxNmJlMDgyMDhkYjM2ZmI2YTQyOGUzIGxlZ2FjeS10cnVuaworMjYzMDYgYzA0OTA2ZmExNzhjODhiYjAyNGY0N2E2NDA2N2RmNGM3YTAwN2ZiNiBsZWdhY3ktdHJ1bmsKKzI2MzA3IGNjNTBhMDkxZjU3M2FmZmMzMTEyZGNjZWNmM2RiODQ0ODY0OGJmOTkgbGVnYWN5LXRydW5rCisyNjMwOCAxYThhNzQ5OGIwYmIzNzFhY2UyMmRkZmMyZDNhNTQ0MzU0NmY0MjE0IGxlZ2FjeS10cnVuaworMjYzMDkgNmNiNTI4MjlkYTFhMmFhYzY3Njk2YzBiNDM4YzdjMjBhOTZlZWNiZiBsZWdhY3ktdHJ1bmsKKzI2MzEwIDVmNTQ1NGE0OGI1YWI5NmZlMzkzMzRkMGZkNzY1ZGJjNzJkOGNmNmQgbGVnYWN5LXRydW5rCisyNjMxMSAyMWYzMTkzOWRjMmY3NDhmMmZmOTBlODM4YmYzOWMyNDY4OTlhODA5IGxlZ2FjeS10cnVuaworMjYzMTIgNmEzNjExMmEzZGNlMDY3NWJiMmJhNTY3ZGY1NjRkOWY2OWE5ZjljNCBsZWdhY3ktdHJ1bmsKKzI2MzEzIGM4YzFkYzA3MjdjZDUwY2RlN2RjYzZiM2ExZmY1YjNmZmE0ZTFmNmYgbGVnYWN5LXRydW5rCisyNjMxNCBiZmEzMzBiODUyMDUwN2Q5OTEyN2RmYzgyYjhjYTA3MGYyMzg3NmMzIGxlZ2FjeS10cnVuaworMjYzMTUgOWE1OGU5N2RiNDQ3YzNmNDk2YTk2ODU0MTg5YzlmMDY3MDE2ODc0ZSBsZWdhY3ktdHJ1bmsKKzI2MzE2IGNlYTg1MmY4YWE0NzYzMDM3ZjAxNWUyMzA3OTc5NWM4NmQ2ZDdiYWQgbGVnYWN5LXRydW5rCisyNjMxNyAwM2E4MzM0MGM5MTRhOTJjNmZiNzgzNzFkZThmNTg5NTc2YjBjYTAwIGxlZ2FjeS10cnVuaworMjYzMTggNGY5ZDVlYTRmMzdkOWMxMjFiODBhODU3ZjA2MDBlZGI0OGZjYzlmMSBsZWdhY3ktdHJ1bmsKKzI2MzE5IDVmMmRjZGQwOTMyOTM2YzVkMmJmNGJhNDdmNDEwZmVhYTg5NTk1OWQgbGVnYWN5LXRydW5rCisyNjMyMCBmODE3MDFiNzEyMTY0ZjY2MjJlYThhMDU0YzA2M2NhMDQwMGZhOGNhIGxlZ2FjeS10cnVuaworMjYzMjEgYTBiYjVmYTFhYjJkY2RlMGVmMGMzMzk3ZDI0MTM1NTZjODVmZjE3ZSBsZWdhY3ktdHJ1bmsKKzI2MzIyIDNmMjNkNzJlZjQxMGY2NjZlMDRlOGIyOTAxYWZkZWJiMGIzYTExMjYgbGVnYWN5LXRydW5rCisyNjMyMyA2ZDczMWI2NDY3MGI2OTBkMjRiMzg4NWJlNGVmOWE3ODVlODhkMjljIGxlZ2FjeS10cnVuaworMjYzMjQgOTU2M2M5NjY0YTBiYjhhMmVjZTY4OWYzNWI0YTIwNDAyMjVkYzEwNyBsZWdhY3ktdHJ1bmsKKzI2MzI1IGEwMDQ3M2YzMzE3YjkzZjc1NDg0NWIxNjk0Yzc4NTMzYzUyMzQyMmQgbGVnYWN5LXRydW5rCisyNjMyNiBiMzczMTRmY2JjYzlmNzUyMDc0N2UyZDBhNDg5ZjhlMTFhYWQyODRjIGxlZ2FjeS10cnVuaworMjYzMjcgMDg0YWI3Mzc3N2EzNDE3NGRlN2Q4OTgzMDllNDA3MWNiZmIxYmJjOCBsZWdhY3ktdHJ1bmsKKzI2MzI4IDU0OTViNmRmMGM2NWQzMGY3ZGIzZDUxYzQ4Yzg4MDcyZmU0MDIxNTIgbGVnYWN5LXRydW5rCisyNjMyOSBiYTAyMzZmODQzMThjMjM5ZWQ4M2E4YmY1NmVhOGZkNTNhZDA4YjAxIGxlZ2FjeS10cnVuaworMjYzMzAgMzEwMGJhMjY5MTNjN2Q1YmFhMTEzMWZkYTc0ZjUwYzEzNmQ0MjRlYiBsZWdhY3ktdHJ1bmsKKzI2MzMxIGY5M2EyNmQxYmZhMGU5ZGQ4MzE4MTE4MDZjNDI3NWM3YzFlZTcxOTggbGVnYWN5LXRydW5rCisyNjMzMiA5MGI4MzRjZTU3MDc3ZmVkYTVmYzE5YTA1YzMyODQzMmE3ZDJmOTMwIGxlZ2FjeS10cnVuaworMjYzMzMgOTU4MTlmN2YwYmNkMmNkYzhmZTVjYTI5YjA0MDE1ODU5NjRkZjgyMCBsZWdhY3ktdHJ1bmsKKzI2MzM0IDY5OWNjMTM5ZDJkMjQ4NjZhMTBiYTFhZGM5NjMyY2JlY2UwMzFhNzQgbGVnYWN5LXRydW5rCisyNjMzNSA3Mjc3OGVjOTRkZWM2Njc2MzgyNzMzMTEwMGJiOGYxOGEwM2JjYTU1IGxlZ2FjeS10cnVuaworMjYzMzYgMjllNmNiODMyNDk3YjVmZThhZDJlNzMzNjhiYmRmMDNiOTRiMGJkOSBsZWdhY3ktdHJ1bmsKKzI2MzM3IGE5ZTQwMjRkOGEzNzcwMTk1NjA1MjliYWRlMDU4NzEyZGI1MGJmZTUgbGVnYWN5LXRydW5rCisyNjMzOCA0YmEwOTFjYzcwYjg5YjE2NjQ0YWE3NWUxNzM3ZGZkZDI0ZDQwMGQ2IGxlZ2FjeS10cnVuaworMjYzMzkgMzYzYzdmYzE3NGFjOGJkYjdiODMxOTgxYjg5YzYzYzMyMTM0NzFhMiBsZWdhY3ktdHJ1bmsKKzI2MzQwIDlmZTk0YzAxZWFmMWZmZjUwMDdjMDM4NDI1NWU0MTgxYmQwZGNkNzUgbGVnYWN5LXRydW5rCisyNjM0MSA5Zjk0OTAyN2Q3YmExOTNiZDYxNDNmMmFhNjQ0YjkwMzcwNDY3ZDI4IGxlZ2FjeS10cnVuaworMjYzNDIgZGMxZmIxOWQ5OTBkNjkyZjE3Y2QxZTBjZTc3MTA1Y2MzMmM1NDU4MCBsZWdhY3ktdHJ1bmsKKzI2MzQzIGQwOTc0MGIyZTAzZGUxZjg1Y2EwODQzNTZhNDVkMDFhYzAyZWNjYTQgbGVnYWN5LXRydW5rCisyNjM0NCAxYzI2YTMxMDY2NTMxMGY2M2ZlNTc1Nzg3NzNmZDAzMzFhMmJlMzUyIGxlZ2FjeS10cnVuaworMjYzNDUgYzVhNjdmNTA1MzJlOTE0NzExZDBjZmY1OTdiYTNlYzk0NmI0ZTQwMSBsZWdhY3ktdHJ1bmsKKzI2MzQ2IGQ5ZDgyYzFlZjg2NDUwZGYyMzM1NTAwZTliZTNiYjczYmFiN2M2ZmIgbGVnYWN5LXRydW5rCisyNjM0NyAyOThhN2M1MWQyYzAxZGVkZDVhMDgwYzQ2OWU2YzA3MTRjZWUyMGQ1IGxlZ2FjeS10cnVuaworMjYzNDggYzhkNjFmZjFjMGQ2Yjc0OTU0OTBhYTk5ZDQwM2YyZmQ4ZTMzNDc4ZSBsZWdhY3ktdHJ1bmsKKzI2MzQ5IGJlNTQ0NjVhMzljNDU0YTU4YjJiMTdjMzRlYTliOTVhYjBlNzJkMTcgbGVnYWN5LXRydW5rCisyNjM1MCA2MTY2MTU4M2ExMmZhYjJhZjBjZmQwYzUwODNjM2IzMmFlMTMxYTFlIGxlZ2FjeS10cnVuaworMjYzNTEgMjQ2NjNiODZiOTc1MDVlY2E2MDcyMTkxN2Q0NzNlMmIyMzM5ZDc5YyBsZWdhY3ktdHJ1bmsKKzI2MzUyIDFlMWM3MjE0MzNkOGU0YTNiMDg3NTNjZTQ4MWFlZTViYmY3OTVkMDIgbGVnYWN5LXRydW5rCisyNjM1MyBiZWIzMjE4OTA1YTJmZTliMTRiNjM0ZTIwYjJkOWY5NGEyNDNhMTVhIGxlZ2FjeS10cnVuaworMjYzNTQgMGExOWYwMTZhOTk0NjQ3ZWExMjg5Y2I0MTMyMGMyYmQzYTEwYTU0YSBsZWdhY3ktdHJ1bmsKKzI2MzU1IDE5NmRmYTdlZDM0OGRiZmU5NjE1NzYyNjgxOTQ1ZGIyMTA4NmI5NDEgbGVnYWN5LXRydW5rCisyNjM1NiA2OTBkNzEyZTI4MDdjM2UxYzhjYzUxMjBiN2E1OWIzNDQ3MmJmMjJhIGxlZ2FjeS10cnVuaworMjYzNTcgYjlhZDFlOWY1OWE4NWVhMDc5ZTg3MGU4ZTE2NTY0N2VlNjYxMDA1YSBsZWdhY3ktdHJ1bmsKKzI2MzU4IDJkZDBmODRhZjA3MTY5MjkwMTYxZWEzNTMzNWE0ZjhhMmRjYTU2MGIgbGVnYWN5LXRydW5rCisyNjM1OSBhOWNiOTE5ZTQ5ZTMzMWJiZThiZTkxMWQ2Zjc5Yzc3MGZhNjdjYTdiIGxlZ2FjeS10cnVuaworMjYzNjAgMjVhNmUzOWMzMWEyMDcwZTE1MWZlOGY2YWZlNmRhYjA2NDQxMjY1NSBsZWdhY3ktdHJ1bmsKKzI2MzYxIDBiMWUyMGMzNGM4ZWE2YzE5ZTRjNTMxNTU3NTk5MGI5ZDJkZDhmMTIgbGVnYWN5LXRydW5rCisyNjM2MiBhMDU2MWNmNDkxNjM0ZGIxNGM3NmUzMjM5YWRmNjZhZjBjYzBiNDQxIGxlZ2FjeS10cnVuaworMjYzNjMgOGY5OGNiM2EwZjM2OGNhNDNmMWY1MDMzMGMwNDEwY2E4YTRhMTRhMiBsZWdhY3ktdHJ1bmsKKzI2MzY0IDRmMDYzYjgwMzA4ZDk5MjNkMDVhNjcxZTQ3YTQ5MmQwOTkyYWZlOGUgbGVnYWN5LXRydW5rCisyNjM2NSAxZjdhZjRmYjNhNTE1MmNhMTQ4ZTFlMGFjMmY2NjNlNDg1NmVhMTI4IGxlZ2FjeS10cnVuaworMjYzNjYgZTU0YjljMzg0OGI3YTM0OTIwODBhNDg5ZjM0NWQ3MTczMDQxM2VkZSBsZWdhY3ktdHJ1bmsKKzI2MzY3IDFjZWFmN2Y4MDU1ZDZmMzBhZmE3ZGFmYTVkNzgyYWE3ZWZlOWI0MjYgbGVnYWN5LXRydW5rCisyNjM2OCBkYjAwM2I4YTliYjk1NDYwMDkwOTViMDMwYTc3ZGQxN2ZjNTc5Yzc4IGxlZ2FjeS10cnVuaworMjYzNjkgZDUwNDhmOWI4YjgyNTdiMWMxYmRkY2FiOTE5Y2I1NGFkZjdjMjhiYSBsZWdhY3ktdHJ1bmsKKzI2MzcwIDhiZTYyMzg3NDhjNGQwYWYzY2M3MGEwYmI2NjNhZDcxN2E4NDljNzUgbGVnYWN5LXRydW5rCisyNjM3MSA5MzFkNDQ4ODIwYWVlZjM4ZGI2MjIwM2JiMDliZGVjMTIzNWFmMDA3IGxlZ2FjeS10cnVuaworMjYzNzIgOTg5Mzc3Y2RmMDUzMmQ3Nzc2Y2I2NjdjNmM1NjM3ZmQzYzdhOGU2YiBsZWdhY3ktdHJ1bmsKKzI2MzczIDA4YWIwYTZiZjFlYmIxNGE5MGY0Y2I5MzI4Y2QwZjZkYmI5YTNhM2MgbGVnYWN5LXRydW5rCisyNjM3NCBkNjMyMjk4MzA2OWUwNmFhMjRjOTNkZTk4ZmVjOTU5ODViZTcyYjg2IGxlZ2FjeS10cnVuaworMjYzNzUgM2IwODNiMjYyOTZhOGU4MTI3NjRkMjhlMTM2YjI3YmEyMjU4NjgxNiBsZWdhY3ktdHJ1bmsKKzI2Mzc2IDIwMmFlNWI3NWNjYTI0MzgyNzI0ODczYmZmOTk4ZmEwMjM0NjE0M2QgbGVnYWN5LXRydW5rCisyNjM3NyBiNWY5ZjdhOGY1NjY2ZTQ4OWZiYjU1ZDJiMDM5MmFkMWY5MzZiMzY4IGxlZ2FjeS10cnVuaworMjYzNzggNDQ2MzdiZDdmNTliNjQyOThjMmQyYzI0OTJiNGIzYjU4NWZjMDAxNyBsZWdhY3ktdHJ1bmsKKzI2Mzc5IGIxYWI0YmM1MjI0M2QwMGQ5MDc0MGM4ODIzMmYzMzljNjg0NjFkZWMgbGVnYWN5LXRydW5rCisyNjM4MCBjNjAwM2RlNzM5NzU1N2I5Yzg0ZDM1ZWIzNzBjZjY4Mjc5NzJhYTUzIHJlbGVhc2UyMi1tYWludAorMjYzODEgZTI4NDg2MThiZDE5NTlhZDE0NmE5YjFhMWVmOWU1YThjZWQwOTE0YiBsZWdhY3ktdHJ1bmsKKzI2MzgyIDI0NzE4MzI3MDA5NThmNzRjOTIzNmFhYjM4NjE4ODY4MTViM2Q4ZDYgbGVnYWN5LXRydW5rCisyNjM4MyBlYmUzY2U2Y2JmZDc4NjE1MjI4YmVjY2Y5MGUzYjdlMWM3ODVmN2MwIGxlZ2FjeS10cnVuaworMjYzODQgODk5MDAyYTg4MmEwOGE1MDlmZjZiMmVjMjQzYTFmZTQ3ZDdkMjNlZCBsZWdhY3ktdHJ1bmsKKzI2Mzg1IDRlNThhMzhlM2MwNjFhYWMxZDdkZTdkNGVhZWU4ZWU3ZGJlY2VjMjYgbGVnYWN5LXRydW5rCisyNjM4NiAzZTg5MjU4MmE4NTBiYzhiNjExOGZkN2U3MDgyYmVhNDNjODk3OWQ1IGxlZ2FjeS10cnVuaworMjYzODcgZjNmYzk3ZGE2OGE5ODU4YzNmOWE4ZjkwMzA0ZThlZGZlMTViODRiMyBsZWdhY3ktdHJ1bmsKKzI2Mzg4IDAzYzM5NjQwZDgxYTg5NDJkY2ZjNDVhMTNlYTlhZTdjM2ExZjRkNWEgbGVnYWN5LXRydW5rCisyNjM4OSBhOWE2YzExOGRmYmE3NTQzYjJmNjFlZWY4NzVmYWY3NGM2MTMwMmI3IGxlZ2FjeS10cnVuaworMjYzOTAgODI5MTQ3M2ZkZTNlYjMyYzUxN2MwNzUxNmRmOGE5OWNiMjk2MGRlMyBsZWdhY3ktdHJ1bmsKKzI2MzkxIDE4NjIzNzRhYjI1Mzk5ZDU1Zjg2OTg3NzljNTI3N2JhMzI0Njg3YWIgbGVnYWN5LXRydW5rCisyNjM5MiA1YmRhNTQ2ZWJlMjRhY2Y5ZWFiMTcwYmYyMWM2YzgwNzUxNmFlNWM5IGxlZ2FjeS10cnVuaworMjYzOTMgMWRiM2EwMjk2NWU2NTVlZjRlZjg1MWE1OGZkOGE5NzU5ZDJlODNhZCBsZWdhY3ktdHJ1bmsKKzI2Mzk0IDhiOTI2MGU5MjAxMGI1NGU4YWI1ZThlMzRmZDZlOGI1NDY5YjJmOTQgbGVnYWN5LXRydW5rCisyNjM5NSA1M2JhOTExMGExZjE3Nzk3Yzc1M2VjM2Q3MTE3ZTZiZDQ0MGUzNzQ5IGxlZ2FjeS10cnVuaworMjYzOTYgYjFlZTQzMjFhNTBhN2IyYzU5YmFkMTMwMTQ2OGEzYjI3MDJkNDIzNSBsZWdhY3ktdHJ1bmsKKzI2Mzk3IDhmNjQ1MTgwNTM0ZDUzZjZiZjYzNzM1NTE1OWVhYTM2YWFmNjk1ODQgbGVnYWN5LXRydW5rCisyNjM5OCA4OWRiOWUzZjM1YTc0OGIxOWQ5NWIzNGE5NjUyNWU4ZDUyMDY0YzNhIGxlZ2FjeS10cnVuaworMjYzOTkgOWQzNTI2NjdkNzE1ZWVjMDc4MzQ4YzhkOTU0ZjYwMGE3YWEwYmFkZiBsZWdhY3ktdHJ1bmsKKzI2NDAwIDQ1NDM1MWVmNTBmMWQxOTcwY2U0YjljM2JkMzBjYTU4ODEyM2Q2NTYgbGVnYWN5LXRydW5rCisyNjQwMSBjZDIwMmVmNjcyNmUzNDU3ZjUzYjY1Y2Q1NDcwMzcyYTNhNjFlZjVmIGxlZ2FjeS10cnVuaworMjY0MDIgZjFhYTE4YzhjOTZiODIxYzk1YjIwYjU0ZjIxMDE1N2ZmZDczZTExOCBsZWdhY3ktdHJ1bmsKKzI2NDAzIGUxZjhlMjk1NDc0OTlmNDk3M2ZmOWJhYmRiMzNmM2I4ZmEwYjliMzMgbGVnYWN5LXRydW5rCisyNjQwNCA3ZmVjZDZkNThmMzhlZjE3NGQzYWIzNDI0YmZlOWVjNDM0MmNkNTBlIGxlZ2FjeS10cnVuaworMjY0MDUgMGYzN2NiNWE3ZTllOGNkNWIwODJkN2Y1MTY5NTUwMGQ0MWYzNGU2NyBsZWdhY3ktdHJ1bmsKKzI2NDA2IDhiMTI2OGJjMzcxYTY0ZmY1YmJjZjM3NzljY2MxMGY0MTU5MjUxYzYgbGVnYWN5LXRydW5rCisyNjQwNyA3NjllMGE1MzhlNTQzZDE1Y2Q4Nzg2YmI3YWZjNGZiZmEzNmJhYzc4IGxlZ2FjeS10cnVuaworMjY0MDggNzUxMjg5Y2QxYWI3MTJkOWU3NjJhMTg0OWU4MjUwYjkyZGVmZTU1OSBsZWdhY3ktdHJ1bmsKKzI2NDA5IGMxNjY4YTgxOTI0MmM1MTNhMmFlYzE5M2M0NWRkMmYwODg4ZGEyYjcgbGVnYWN5LXRydW5rCisyNjQxMCA5ZTZmZjc4NzI4MGE5NWRkNGMwOGZkMGFkNTE0ODAwMTZjOWY3NGI3IGxlZ2FjeS10cnVuaworMjY0MTEgOGE4YWZmY2NmNDYzYmI1YzU3ODBkZTcwZjk4OTk5NzM5NzdmOTUyMSBsZWdhY3ktdHJ1bmsKKzI2NDEyIDE5ZWEwMGZlZGEzMzZjZDExZDk5NDY5MTgwMGQ1NWZkYmUwODJkZDMgbGVnYWN5LXRydW5rCisyNjQxMyA4ZWI2ZGQzZDgzMjJlZmJkNGY4YmM0MjJjODgxMjNhMTA5YTA5ZWIxIGxlZ2FjeS10cnVuaworMjY0MTQgMDRmYmY2NWM3M2VmNmZjNmE3ODhmYzQ4OGM3NjVlNzA1NTlhNjEzYSBsZWdhY3ktdHJ1bmsKKzI2NDE1IDcxYmU1YmE4OGFhN2E3MmM3YWMwMGU2MjgyOGUzOGE4NzQ5M2VjNDUgbGVnYWN5LXRydW5rCisyNjQxNiAzYWYyY2FkY2NkNmFjNjUyM2U5YjBlOWM2MjM1NmJjN2I2NDY2OWExIGxlZ2FjeS10cnVuaworMjY0MTcgYTEzNTk4MGRkNGU5YjZiOWJmMTJlYmUzZDE5MjcwN2ExODhjNjBkOCBsZWdhY3ktdHJ1bmsKKzI2NDE4IDZiZTI4M2QxNDhmN2UzODgyNTU5NDk0NDE1OTRkMzBmOTFhNmQ0ZGMgbGVnYWN5LXRydW5rCisyNjQxOSA4MDA1ZmMxYWVmMzljOGYwNjI0ZTQxNWM2OTEyZjcwZWFmNWIyOWQ2IGxlZ2FjeS10cnVuaworMjY0MjAgNGMwYWI1ZDZhNjNjNDFlYWMyOWNhMjg3YzdkN2M2MTUyNjI2NWU2MiBsZWdhY3ktdHJ1bmsKKzI2NDIxIGMzMjhkNzI1MGU5MjY2MDAzNmM5YmE4YWQ1Y2M0ZGYwMmEzNGI2YjkgcmVsZWFzZTIyLW1haW50CisyNjQyMiBkYmQwZWU3ZjYwZTA1Njk3MGE2YTA3MzFiNGQ1OTBhMjM3OGZiNTgzIGxlZ2FjeS10cnVuaworMjY0MjMgYzM3MWJiM2U4NTI5MWI5ZTMzNGZjNTM0NzVjNGY2ZDI0MjlhZGVlZCBsZWdhY3ktdHJ1bmsKKzI2NDI0IDUzMGFiYTMxMTZhNDBkMDg1ZTRhMTA4OTc5ZjYwM2UyOWJlYmYzZjggbGVnYWN5LXRydW5rCisyNjQyNSBkYzBjMTIxM2M3OWFiZGRhMDkzNWIzODA2NGEzZmYyMGFmM2MyYmI4IGxlZ2FjeS10cnVuaworMjY0MjYgOTM4ZmYzY2I1MWMyNmJmZTQxOWViNjVjZWI3YWVjZTM3YjlkNjE4ZiBsZWdhY3ktdHJ1bmsKKzI2NDI3IDAzZmYzNTY5YmEwNGNhZjZjNTY4MWQyODBlZTZhZGRkM2YwYzE2OWQgbGVnYWN5LXRydW5rCisyNjQyOCBmMzY3NzQxNGJjM2RlZjZhMDkwNTVmYzZlYTc0OTRkMmI2MzM2ZWJkIGxlZ2FjeS10cnVuaworMjY0MjkgNDJjOTk3MjhiNmNjYTJmOWVjMmI3ODNlNTNmMTRjYzc2NzI5NDgxMCByZWxlYXNlMjItbWFpbnQKKzI2NDMwIGJiYWIzYTE3YjRjZjRlM2M3Y2QzZjRmNGM1YjcxMmZhNTUwMDkxN2EgbGVnYWN5LXRydW5rCisyNjQzMSA5N2I5NDgwYmJlZWM3NWU2MTU5YzU0MDk3MTM3NzA3MzQ1ZGUzODlhIGxlZ2FjeS10cnVuaworMjY0MzIgZmRhNzNiZmYyMWZmYTU2ZDVhOWVjZTJmMjQ5Y2YxYzhjYmM4Y2IzMiBsZWdhY3ktdHJ1bmsKKzI2NDMzIGQ4OWU1NTczZGQyMzdlMTNiMDYyNDdhZDIwNTNkYjlmM2RkMmMxZTAgbGVnYWN5LXRydW5rCisyNjQzNCAyMWQyNTIwMjg0MDRjODBkZDgyMjllZjkyYzY4ZWQ5YTgyZTAxNGQyIGxlZ2FjeS10cnVuaworMjY0MzUgNGZmOTBjOTljMzAyYWE2YmQ0M2M0ZDIyODFlYzNmZTFmZWZiNzcyMiBsZWdhY3ktdHJ1bmsKKzI2NDM2IGI3ZTg3NzMyZjZhYjk0MTNkNTRmZGNkYWE5ZWM5OWZmMzRiNmUxNjkgbGVnYWN5LXRydW5rCisyNjQzNyAwZmNlNTU2NzVjYmNiMzgwYzI0MmYzOWRlZjczYjhlMzg4MzE0OGE0IGxlZ2FjeS10cnVuaworMjY0MzggM2JkMzM2YjZjYjAzYTY3ZjczZTcxMGVmMTY2NDBhZDMxN2Y1YTNjZSBsZWdhY3ktdHJ1bmsKKzI2NDM5IDRhZGRmNGNlYWZjNTQ3ZjQ3YmZlMDQ4YzU3YjJlYzY4MWVhMjQ1MDQgbGVnYWN5LXRydW5rCisyNjQ0MCA5NjljMWQxMThjOTdkZWJmZDNmYTZhOGZmNmExMmNhYjQ5MmU1MjRhIHJlbGVhc2UyMi1tYWludAorMjY0NDEgMTBlMDEyMmI1ZmVkNWY4OGQ3MjFkYTlkZDlhZDdmNTk1NTc4ZjgxZCByZWxlYXNlMjEtbWFpbnQKKzI2NDQyIDNiZjc2MmUwZTA2ZWQwOWE5MWUzZTI2NjQ0MTQyZmExYjllZWJhM2YgbGVnYWN5LXRydW5rCisyNjQ0MyAzOTNlOWEyMTZhODhiNTAwMTA5ZjAzMTgzNmVhNmNmZjJjZDBkMDdkIGxlZ2FjeS10cnVuaworMjY0NDQgZTQ4NGYzMGRhYzc3YTYxNzFhMjdiOTdlZTM2NTYwMWFhZThjODc5ZiBsZWdhY3ktdHJ1bmsKKzI2NDQ1IDhjM2RkMWMyZWY0NzllZTZlYzRlNjBlMTliYWE4ZWQzNTdlMjcyZGUgbGVnYWN5LXRydW5rCisyNjQ0NiA0MjNhMzY3OGJjN2M3MTc2ZWE2MGFiMWUyMTc3YTliNmZhMTllYWRkIGxlZ2FjeS10cnVuaworMjY0NDcgNGU4MjUyMjg0N2QwZGU4MWUwMDM3NzUwNjNjNWVhYjU5MmQ5NGIxMiBsZWdhY3ktdHJ1bmsKKzI2NDQ4IDA5ZGIzZjVkMGJkMGVhMGJmM2JiMmE1ZjU5YTE2NGQzZGIzZGFmMjIgbGVnYWN5LXRydW5rCisyNjQ0OSA4YzdhMzlkMGZlZmQ4MDFmNmRkYzg5Y2UwZmRmYWExMjZmMzkwY2U3IGxlZ2FjeS10cnVuaworMjY0NTAgMzE0ZjkyYTI0MjkzYjJhYmJjZjA3Y2VhM2U3ZDU3YzQwMTY0NWMxOSBsZWdhY3ktdHJ1bmsKKzI2NDUxIGIzOTU0NzdkODRkMGQ3Njk5NzMwN2Q0ZGE2ODhhMDM3ODNhZTdiZTcgbGVnYWN5LXRydW5rCisyNjQ1MiA5OTc1NzU2MmJmYjk1N2ZkNGI1OTQ5NzlmMzA5ZWNlOTI5NzcyYjhlIGxlZ2FjeS10cnVuaworMjY0NTMgOWViYTYwYWNlMmRhZTBjMjVjNDg5ZWM2ZjVhMDU5ZGMyNmE3NTk1YiBsZWdhY3ktdHJ1bmsKKzI2NDU0IDkxMWY5ZjE0ZTJkNTdlOWI2MjQyYzZhMmFlYzI5NDU2ZDVhZGI3YmMgbGVnYWN5LXRydW5rCisyNjQ1NSAyYTU0Mjc4NDA2MmY1YTkzZDVjM2MwOTA1YzYyOGY5OTMxZTI1NmRmIGxlZ2FjeS10cnVuaworMjY0NTYgYjVhYWUyYTY1ZjZkMTIyYTBmNzM1ZmEyZTVlOWI4NDYyNjNkNzJmMSBsZWdhY3ktdHJ1bmsKKzI2NDU3IGY4Njc5ZjY3OThiZjY3YjkxNGYzNzFlMTc0YzFjYjc2NzE4MDg0ODcgbGVnYWN5LXRydW5rCisyNjQ1OCAwM2FiZmE3ZGI0NDk4YzVjYjljZWRiMGY5ZDU4OWMyZWFlODljMGVkIHJlbGVhc2UyMi1tYWludAorMjY0NTkgNzE3MmNlZjIzYjA1NDllYmZlNjkzZjhiYjlmODZjOWMzNmU1MTdhYyByZWxlYXNlMjEtbWFpbnQKKzI2NDYwIDczODk1Yzk5ZmNjNWJiZWVjNzVlMWM3M2IyYTg1YTk5MDE4NzliZmYgcmVsZWFzZTIxLW1haW50CisyNjQ2MSBiNmY0MzJiMzIxNDM4Y2FjYjU0Y2I4ODc1ZGJjMDNiMGEwYjZmOWNmIHJlbGVhc2UyMi1tYWludAorMjY0NjIgNTY5ZTM4M2JlMGRhOWE2ZDZjN2UzZmM2YzY5ZmZhMzcwNjhhZWQxNSBsZWdhY3ktdHJ1bmsKKzI2NDYzIGQ0NDU0NWM0YTQ3YTgyZjMyMGU1MDViMDIyNmFjYjE4YzQ2OTdjNjkgbGVnYWN5LXRydW5rCisyNjQ2NCBkMjdlOTdiOGE4NjZlNmRjNGZiY2NjMjhjNTA2YzZjNTQ1NjFkNzk1IHJlbGVhc2UyMi1tYWludAorMjY0NjUgMjZlM2ZlOGE4OGY1N2I3MWNjYWZiYzJkYTIzOGU3MWQ4ZmQzNmRmZiBsZWdhY3ktdHJ1bmsKKzI2NDY2IDAxZjczZmQ2NjMxMDlmYjEyMjQzZDhiZTU1OWVjZjMxNjAxODNjNGEgcmVsZWFzZTIyLW1haW50CisyNjQ2NyA5NzgzNmY2MTkzZGMzMDcxNWI4MjBmYzExMGI4ZjBkYmM2YjE0Mzc1IHJlbGVhc2UyMS1tYWludAorMjY0NjggZjVlZGY3MDI1MjY3Njg1ZTMxNzI5NTJlYmI2Y2VmYWYxZjc2NGVjNyByZWxlYXNlMjEtbWFpbnQKKzI2NDY5IGRmNDVhZGY3N2QzNmRmZGU0ZDhiNjE0ZmMyY2M3MzQ2MmZlZDc4NTIgcmVsZWFzZTIyLW1haW50CisyNjQ3MCA3YjAwZGFiOTg4Y2Y0NDA3ODZlMzljYTU4OTk1Nzg1MGVjMGE3N2UzIGxlZ2FjeS10cnVuaworMjY0NzEgMmQzYTJiZWIzZDRkNzAyOWYzZWU5OGQ1N2VkNWI3MzljNDQ2YjY2ZSByZWxlYXNlMjItbWFpbnQKKzI2NDcyIDQwNzllOWMyM2ZjMTcyNzYzYmViNmQ4ZjlmNGJmOWExN2RhYzgzMzAgbGVnYWN5LXRydW5rCisyNjQ3MyBhM2M5ODJkNDEyYjQ2ZTFjZjk0Y2Y0NGM3MjMzMzhkNzBmOWRlNGZhIGxlZ2FjeS10cnVuaworMjY0NzQgZTc1MTNlMTQyYzcwZWRmYmM5MjM0MTA2OWZiMjQ4Njc1YzY3MDFlYSBsZWdhY3ktdHJ1bmsKKzI2NDc1IDFkYTAyYmJhNjI3NjczYWNmYzQzYjAzY2I0MWUwMmNkYjM3ZjI1MTggbGVnYWN5LXRydW5rCisyNjQ3NiA3MTIxZDdkNTcyZDAxYWYzMGI2MjI2ZDg1MGZhNzcxZTVjYmJlMTFhIGxlZ2FjeS10cnVuaworMjY0NzcgZmRlODc4YmMwZTNiZTVlNDk4MTc4ZjE1YzJkYWZkMGVkMmQ3ZDU5NSBsZWdhY3ktdHJ1bmsKKzI2NDc4IDBmZmI1NGIxYzNlYTVjYTFlODg3OTRjZjE5ZWQzMTJiYzg1ODI3NTIgbGVnYWN5LXRydW5rCisyNjQ3OSBmOTE3ZTdhNmU5MTFiNzcxZTFkNjE0NThkZGYzN2JhZmEyZTUwZmEzIGxlZ2FjeS10cnVuaworMjY0ODAgZmE0MWYyNDEwNjg4NzMxMmI1ZjYyMmNiMTI5OTRmMTYzNWRlY2FkYiBsZWdhY3ktdHJ1bmsKKzI2NDgxIDczN2Y0NDU4ZTVkZTAxMWUwM2MzMTllMDhlMzk1MzY4ZmU3OTY3YjggcmVsZWFzZTIyLW1haW50CisyNjQ4MiBiMGU1OWYxZTQ5NWFjNmRiOTU2NmY4ODdkYzgyMmEzNzI1N2ZmNDRiIHJlbGVhc2UyMi1tYWludAorMjY0ODMgNjI3YjdjYTUyMjFhYzBjOTFlYTE5MzkxYTcyM2ZlZThiYzUwY2VhYiBsZWdhY3ktdHJ1bmsKKzI2NDg0IDIyZGEyNjA4Mjg1Y2ZlNzdhNGVhYmM2NjVmY2U3YjUyMzU2NTAzYTUgcmVsZWFzZTIyLW1haW50CisyNjQ4NSAwYmEyMzM0MWU1Y2ZmNGU4ZTVlZDFiNzY3NmZlNTc2OWY3YWFlNzg1IHJlbGVhc2UyMi1tYWludAorMjY0ODYgOTA4MDVmY2M2YzcwMjU3M2YxMThlYjk5ZGJjN2RhMjZkZDM3NTFmNCByZWxlYXNlMjItbWFpbnQKKzI2NDg3IDM2OGU4MDgxZTczYzRkYmQyODA0M2ViZTFjOGJhYTNlNjc4ZGYxY2IgcmVsZWFzZTIyLW1haW50CisyNjQ4OCA3MDY1MGFlMWEyY2YwMDIzZjE3MzgxYmUyOGRlZmI3ODQxMDQyMGU4IGxlZ2FjeS10cnVuaworMjY0ODkgNWFhZjNkN2I4ZDhjMDg5M2IxNTBlZjBkYjc3OWVkMGZiZTQ0ODZkZiBsZWdhY3ktdHJ1bmsKKzI2NDkwIGFkNDRiZjExNzllYjI1NGI1Y2E5N2M3NTVmY2NiZmUyYmM1NTlhY2QgcmVsZWFzZTIyLW1haW50CisyNjQ5MSBkZTA5Yjg3NGYwN2E2ODhjY2M2NjI3MGI3ODNlN2FiMDVkMjg4MTNjIHJlbGVhc2UyMi1tYWludAorMjY0OTIgOTBhZGJjZjYyMDEzNjFjN2RiYjhjYzgzNTM5YWQ5Nzc1MDJjNDQ1MyByZWxlYXNlMjItbWFpbnQKKzI2NDkzIDY3NTc4YTgzMGQ4MWNhMzkyNmViZTY5NmM5MTllMDM5YjVmMDM1MjggcmVsZWFzZTIyLW1haW50CisyNjQ5NCA2ZGExZjk5MTdlOWIzZTUzMzVmYjU1YWIzODFiZDQyYTU5N2Y3ZjQ4IHJlbGVhc2UyMi1tYWludAorMjY0OTUgNDY5NGEwZGYxNzRlNDhiOTUxYmFlZTdiOWJjNWNjZWQxY2YzMDYzYyByZWxlYXNlMjEtbWFpbnQKKzI2NDk2IGEwNDdmMTZmYjhiM2U3MjIwYzkyMTViNDhkMjc1MjRlNjgxOWU4MDcgcmVsZWFzZTIyLW1haW50CisyNjQ5NyBkOWI3MWY2MjgxNGY4ZDFhNWZlNmQ5NTE5ZjQxYjg5Y2M1Y2EyOWM4IHJlbGVhc2UyMi1tYWludAorMjY0OTggOTFhMjIyOGYzMDIxYjc5MmQwZGQ4ZDIyM2U5NjE0OTViODQyYjA2MiByZWxlYXNlMjItbWFpbnQKKzI2NDk5IGFiNTEyMzI3NGNjZmYzZjZmMGViOTQ3OGUxY2RiY2ZmMjZhYWI4OTUgcmVsZWFzZTIxLW1haW50CisyNjUwMCAyYTExMTQ0ZjhmMGMwNzc4MzY2MTk5OGE0YjY3ZmNjY2MxN2MwNWQ1IHJlbGVhc2UyMi1tYWludAorMjY1MDEgNDZmZmIxNDllYTczYTQ0MTQ0MjY1YjJlZGFhYWY5OTY3ODJjMzE3MSByZWxlYXNlMjItbWFpbnQKKzI2NTAyIDhiYTMwZTJkOGFlNjU2ZDJlMjc2ZDUxYzhjYTc1ZGQ0YzE4ZTI3Y2MgcmVsZWFzZTIxLW1haW50CisyNjUwMyBiN2Y5NTA2ZTYwYzk0ZmUwMWZmNmZkOTZiYjk3MzY1ZTM4ODI3NmZiIHJlbGVhc2UyMi1tYWludAorMjY1MDQgYTU3NWU2ZWU4NWQ5OTY5NTUxNGQxYTkwNTU2NzQwYmEwY2ViYzEzZiByZWxlYXNlMjItbWFpbnQKKzI2NTA1IGEzNmY5ZmIyYzQwNDJhZjI2NDUyODY0NjZlMjc2YTIzNjAyN2UzNTQgcmVsZWFzZTIyLW1haW50CisyNjUwNiAwZWNlZjhiZmJkNGIwMjAwMjU5Nzc0NmNhNGE0OTgxZTdmYzBiYTM1IHJlbGVhc2UyMi1tYWludAorMjY1MDcgNjFjYzA4NzQ1ZDMxNTkzNjBhYjM0YThhZTBjOWZjNmIwODNiZGU2YyByZWxlYXNlMjItbWFpbnQKKzI2NTA4IGRiZjAxM2NjM2RlZWUwYTQ1ZmVjOTQ2ZGYxMzAxYzRkNzYyNGUwODMgcmVsZWFzZTIyLW1haW50CisyNjUwOSBjNDYwOWNhMTdlM2VhMGQwNzg1M2JmYjNjZGYwMjI5NWYxMThjY2QxIHJlbGVhc2UyMi1tYWludAorMjY1MTAgNjJmYWJiZDQ1N2JlNmI0YjQ5Y2JlZGFkZTA4OTEyMTQ5NTQ5YjkxZiByZWxlYXNlMjItbWFpbnQKKzI2NTExIDUyMjU3YWZmZTBjOWVhM2FhNTMyNzc4MDY3OGNmMjIwOTAyYWU5ZjUgcmVsZWFzZTIyLW1haW50CisyNjUxMiBmNzY5YjQ5NThlNjY2MzlmYmY2YzIzN2I2ZTdiYzQzOTFlMDVhNTUwIGxlZ2FjeS10cnVuaworMjY1MTMgOTUwNTI3MTU2NTFiNjAwZDYwNGVmNTk3NGI5NmEwNTliNTFiNTU4YyByZWxlYXNlMjItbWFpbnQKKzI2NTE0IDkzNjg1NjdhMTA0N2NlNzhiOThiOTJlN2FkODY5OTNhZWM5YzVmNTAgcmVsZWFzZTIxLW1haW50CisyNjUxNSAxZWI0MmZjNjhiNWY4NWU4ZjI5Y2FiNmFmMzAzMGZlODYzZmQ4NzhlIGxlZ2FjeS10cnVuaworMjY1MTYgNjFlYjcxODI1MzVlZjA4NTA5Y2UwNmY4ZjhhODkyMjU5ODMzZGM2OCBsZWdhY3ktdHJ1bmsKKzI2NTE3IGFhZTgxNGY5NGJhZGRmYWQwODg5NzJiZTJhZjQxN2U2OWU2Mzc0YjYgbGVnYWN5LXRydW5rCisyNjUxOCA1NGFmNDQ5Njc2MDQ1NWY1NWQxOWVkZGM0NzBmMDk5MDM0ZmJlZTgwIGxlZ2FjeS10cnVuaworMjY1MTkgNGFiMjFlMzU0NDAzZTA1YmZhMWNjNWVkZDU2Nzg0NmJlZWExZmJhOCBsZWdhY3ktdHJ1bmsKKzI2NTIwIGZjYTM3OWMzMDkwNmUxZDZmYWM5YmNiNGE4NWViZDkzMTRiZTJlMDcgbGVnYWN5LXRydW5rCisyNjUyMSBjNTQ4ZTcyNmIzYmM4YmU2YzdkYTBiZWNkNmVhYTg1MjE4NzVhOWRkIGxlZ2FjeS10cnVuaworMjY1MjIgMzYyYzFiODFlZTljNzllYjZlNmFmM2UxNzcwOGJjOWRkY2QzZTc1YiByZWxlYXNlMjEtbWFpbnQKKzI2NTIzIGRkNDE2Mzc0YWIzODYyZTJlYWQ5MGQzY2E2ZmExZmY2NTg4MjEzNjcgcmVsZWFzZTIyLW1haW50CisyNjUyNCA4YzE0NDI0NWIzMTVjZjQ0NGNhZTM3M2EyNWJjOTUyZmU1YmM5OTAxIGxlZ2FjeS10cnVuaworMjY1MjUgODgzZDY5ZGU1NjBiZmY5MTFmNzMyZmI5MDQyODg3YzZiYjQ0NWY2MSByZWxlYXNlMjItbWFpbnQKKzI2NTI2IDE5NWZlNWZmNTBhYjkwMGIxYzI1MmQ0YzM4OGZmZGM4MmFiNzM2OWUgbGVnYWN5LXRydW5rCisyNjUyNyBmMGRjOTdiYjljMGRmYTU3MjZlZWJlMjc5MjUxNmIzNjNmZDBlMDYzIGxlZ2FjeS10cnVuaworMjY1MjggMGFiMjQ1ZGU3ZGRhNzRjZGM0NGQ1MzJjZjZiYjk4YzE4ZmZjMjliZCBsZWdhY3ktdHJ1bmsKKzI2NTI5IGI2M2Y0YTE5ZWJkZDI3Zjg3MjY0YTBjOWU1ZGE1ZTE0ZGNmMTE2NWMgbGVnYWN5LXRydW5rCisyNjUzMCA3MTNmZjg4OWQwOTQ4NTlkNDEzZjRlMWIyMTk0N2NmYzBkZjJlMDYyIGxlZ2FjeS10cnVuaworMjY1MzEgM2EwYTJmMDc3YjhmMDEwOWQ0YjBhMDFiZTQ3MjQ0ODRhMjA2MjE3YSBsZWdhY3ktdHJ1bmsKKzI2NTMyIGQ1Y2U3ZmY1MzFiZDE2YmVkMDE2MWM3YTUzMjZkMTQ4MGY4YTUzZWUgcmVsZWFzZTIyLW1haW50CisyNjUzMyBmMDM1NzIwODQ4NTFiNDllZjhmYTBkOWEwM2QzNGUwZDdjODRiNTBkIGxlZ2FjeS10cnVuaworMjY1MzQgMmZjOTRiYTVkYmZmMTMyOTI3ZGNlN2Y1NTk1NGRhN2RlZGExMzkyYiBsZWdhY3ktdHJ1bmsKKzI2NTM1IGUxZDBkN2M2OTk5YTUxNjczOGQ3NmQ1OTA0NDJlY2RiMzMxMzFiMzYgbGVnYWN5LXRydW5rCisyNjUzNiAxNjMyODc2MWVhYmY1OTRjZDIzYTNiOTQ5NDc2MTUyY2Y1MTljNzYyIGxlZ2FjeS10cnVuaworMjY1MzcgNjhkNzBiNDEwMDllZDk2NDEwY2Y4NDJkZDQ5M2Q2Y2IzZTJmZDE4MiBsZWdhY3ktdHJ1bmsKKzI2NTM4IGVmNzNmZjdhOTg5ZTdmMGU1OTY0OWRlYjgxZjQ0NTJmNGI2OTQ3NzkgbGVnYWN5LXRydW5rCisyNjUzOSA4Y2YxZWY4MTRlZTQzYThiOGNjOGQ1NjE4YWQxMGJmZDA1MGI4NjAyIHJlbGVhc2UyMi1tYWludAorMjY1NDAgNjIxODgyOGIwYTExMmJkZWE4NjZjYjBlNGVhYjI0MWEyYjYyMDA4MyBsZWdhY3ktdHJ1bmsKKzI2NTQxIDFhNjE4MTk2ZTE1YTljNTczMDM1ZGI5NjMzZTliYjQxMWRkMjEwYWYgcmVsZWFzZTIyLW1haW50CisyNjU0MiAxZGY5MzE4YjJiOGUwNmUzZjAxYTlhMjYzY2VkYTViYjI0NTgzYmY4IGxlZ2FjeS10cnVuaworMjY1NDMgMWE3N2FmNjExMTA1OWZiZDc0ZDcyYWE5MmEzMGFhMGI5NjUwNzY1YiBsZWdhY3ktdHJ1bmsKKzI2NTQ0IDk5OGNjNDg0NjRmZWZhYjdmMDJmZjE0NmJhODNiMDBlYzllNjY3YmQgbGVnYWN5LXRydW5rCisyNjU0NSBjMjc3ZWJjM2NlMGYxOTEzYmEyZWMxNTliOGIyODRjNGI1MDFlMmQzIGxlZ2FjeS10cnVuaworMjY1NDYgZTc3OTk5MTY1OTZkMzllNTk2NWNhMTlkMjFmNTBkZGZjNGMyZTQxMCBsZWdhY3ktdHJ1bmsKKzI2NTQ3IGI0MzUyZjVhMzQ1MjIxMjQ2OGQ1OGFiOTZiMzE3ZjZmMjQ3NWNiNmEgbGVnYWN5LXRydW5rCisyNjU0OCA3YzBlOGRiY2Y1N2E1OTRlZWRmYTQxNjhkZjQ1YzQ5MTg0NGJmZTUyIGxlZ2FjeS10cnVuaworMjY1NDkgMmZkNjNkNzVlOTJmOTUyODU0Y2Y5N2VmNGYzOGEyZDI4YzQ4ZjU4YiByZWxlYXNlMjItbWFpbnQKKzI2NTUwIDM3NDM1ZjlmMDRkNjQ1NTJmYTAwNDg2ZWM4MWIzOTJkNzQ3YzNhM2UgcmVsZWFzZTIyLW1haW50CisyNjU1MSAwYmMzYTQxZDRlNDBhMjZiNjcxNzc1ZDExZWI4MzEyMTg0M2JiNWIzIGxlZ2FjeS10cnVuaworMjY1NTIgZDQ3OGY4YWZjMzZkZDUxODRjOGRkNzNmYWI4ZmQ4NGZiN2Q5NDIwNCBsZWdhY3ktdHJ1bmsKKzI2NTUzIGYxZDYxNDIxMjhkM2U0OTM5OTI3YTk5YjgwZmYxYWI3ZDA2OWI4NTggbGVnYWN5LXRydW5rCisyNjU1NCA1MDhmZDk1MmM5ZTlmMjNlNDNlOTA0MDI1Y2U4OTgxYWQ2YTI3MTZkIGxlZ2FjeS10cnVuaworMjY1NTUgMGM4ZTc2MmE2NzdjNDgxY2JlMjkxNThlYzk5NmU3Zjc0N2FiODcyYSByZWxlYXNlMjEtbWFpbnQKKzI2NTU2IGYzYmUwNWU2MmFkMWE4ZDY4ZDA4OGE0ZjcyM2IyZmE2NzJkZTJkODUgbGVnYWN5LXRydW5rCisyNjU1NyA2MGYyNDI1ODljMzI3YTkzOTUwMTFkMTcyZjlkNGRkMjljMjZmMGVjIGxlZ2FjeS10cnVuaworMjY1NTggNjc1OWJlMDg4ZDY4YmRlNjdjYjM0MThmNjg2ZTZlODM3OTAzMzQxZiBsZWdhY3ktdHJ1bmsKKzI2NTU5IDk1MGEyMmViOGNjOGFkZWY1YWQ2OTIyYjY4ZjQ3ZWNmZjE4OGY0MTUgbGVnYWN5LXRydW5rCisyNjU2MCAyMTdlZWE5ZDY2MTU5NTgxMjRiN2ZmNTg5YzRkZjEwNjQ2NjMxZWI1IGxlZ2FjeS10cnVuaworMjY1NjEgZDA3OGY4NDhhYzNiODgwZjVjMWM4NzU5OWU1NDMxNGM5NTU4YjQzMiBsZWdhY3ktdHJ1bmsKKzI2NTYyIGM0MDhlOGIyNjc1YWEyZWFlNzIxMThhYzQxZWMyN2U4OTE0YTkyOGEgbGVnYWN5LXRydW5rCisyNjU2MyA0OWJmNWE4ZmExNTE3ZTFiZjkxYTA1N2E5YWY0NDJmMDhhMjMyOTE0IGxlZ2FjeS10cnVuaworMjY1NjQgNTgzYzIyNmFmZGU2Y2IyMDRhMmJkY2I3YjI2M2Y5MjFjMGFkYTA4OCBsZWdhY3ktdHJ1bmsKKzI2NTY1IDZlNTY4ZWUzMWE5Y2VjMDgzMGE1ZDliMGIwODlmOTAzMDNjZTI3MmUgbGVnYWN5LXRydW5rCisyNjU2NiA4ZjlhZDJjMDVkYWRlYTllNWMzZTQxNGIwNzAwOTdiY2Y5ZTNiMDZkIGxlZ2FjeS10cnVuaworMjY1NjcgZmQ2MDlkMmMxNjY5MWYwMjEwMmY4Nzk1NWY4NWI5ZTgxZTE0MTFlNyBsZWdhY3ktdHJ1bmsKKzI2NTY4IDVjMzAxNzc1NjY1ZDljZmFkODVmOWRmN2MzOTMzZTUxNjE0MTY2YjAgbGVnYWN5LXRydW5rCisyNjU2OSAzODJlMzdhYzM3NGRhMmNhNzU0ZDc2NmJmOWVjYTg4MjViMTIxNTMyIGxlZ2FjeS10cnVuaworMjY1NzAgNmIyYWY2ZGFmZTdjNzNmNTY4YTJmNGMwZGU1OWE1ZTE0NGJjOGRjZCBsZWdhY3ktdHJ1bmsKKzI2NTcxIDBlNDQ5N2ZiMmRlOGQ0YTEwOTQ4MWZmZDIxZmZmYzc3Mzg0MjcwMDEgbGVnYWN5LXRydW5rCisyNjU3MiBlMTZkYmY4NzUzMDM3MzgzYmU4NWMxNjljMWUyNGUxODI0ZTdkMzM0IGxlZ2FjeS10cnVuaworMjY1NzMgZWY5MTlkMjk1YTEyMGQ2NTg1YThiMDQ4OThiMGU3Nzk3YzUwNTYzZSBsZWdhY3ktdHJ1bmsKKzI2NTc0IDE5ZjUzYWE0ZTFlNTE0NzczMjg5NDNiZjk4NWYwODc4YTAxZDYzMjEgbGVnYWN5LXRydW5rCisyNjU3NSBkOGU5ZjZmNTdmMTMzNjUzMzlmYjQ4YzlkNGExMjhmMmM5ZDg0YTVhIHJlbGVhc2UyMi1tYWludAorMjY1NzYgYjE5YTVhZGI2OTkwMDQ5M2E2YjZiYzMwM2YzNzU5ZjA1Nzg3MmExOSByZWxlYXNlMjItbWFpbnQKKzI2NTc3IGJhODg5OTg5YTdlYjAxZmFkZjBhNmRiMTM2OTI5OTExNzRiMzU4YWMgbGVnYWN5LXRydW5rCisyNjU3OCBkNjE0YWU5NDhiYzNhZTNiNWJlYjFmN2YyNmJhNGFjMWY4MjU2MmQxIGxlZ2FjeS10cnVuaworMjY1NzkgYjIzNmQyMDgzMGZlNTNkNThmMjRiZWFjNzliZDUzOGIxZTNhNzQ4YiBsZWdhY3ktdHJ1bmsKKzI2NTgwIGIwOGI1MWRjZTI2NGUzZjY0MTg4ZTc0ZGQ5ZDBiOTViNjg2OTdjYTIgcmVsZWFzZTIyLW1haW50CisyNjU4MSBiZDA4YzY5NTVlOWJkZDE2NDQ1MDlmOGJlYzVkNDUzZWY4MGU1ZTBiIGxlZ2FjeS10cnVuaworMjY1ODIgNTU0ZjIxOTdhN2E3NmM4ZjczOTEzMzVhNGU3YmMxYWMzNDc4YmViNyBsZWdhY3ktdHJ1bmsKKzI2NTgzIGFiNGZhNzhhZmRkZjYxOWEyNmM3ZmNjYmZlZGU2OTI5ZTdkZjM5ZDMgbGVnYWN5LXRydW5rCisyNjU4NCBmNWFlZWFhZjAzOTc0ZTFlN2U1ZWY3YTBiYTYyMjNiODc1ZGViZDFlIGxlZ2FjeS10cnVuaworMjY1ODUgZWQ1ZDc1OTEyZDYwZGE5MWQ1YjkzZjIzNjYxMDE3NGQzZmFhNGRhYSBsZWdhY3ktdHJ1bmsKKzI2NTg2IGU2MzllMzRlZjkwMTFlOGYzYWYzOGI3YzVjMWFlZDExYmRhMDk1NTcgbGVnYWN5LXRydW5rCisyNjU4NyBkZDM1MGI2MzkzMDk5OTQ2OGQzOGQwY2NjMjdlMjFjNmRiZTgxYmM5IHJlbGVhc2UyMi1tYWludAorMjY1ODggYTQzMTg5MjNjN2FhMzM0ODY0ZDFiNmM4YjM1NmNhNTE5NDQzNTczNSBsZWdhY3ktdHJ1bmsKKzI2NTg5IDZkYjZlM2RjODM2NmJlYzY2NjQyNWU2N2NlMDJiN2EzNGQxNDgxNTQgbGVnYWN5LXRydW5rCisyNjU5MCAyYjQ3ZDBkY2ZhNjY2YThkNTgxYzM0YjBhNmFiYjczOGQ1MTU5NWVlIGxlZ2FjeS10cnVuaworMjY1OTEgODYzMTI1NTQ1MzAxNTkzMDZiNGZkYzg0NGVmZDQ2MGNhZGE1MTYzNSBsZWdhY3ktdHJ1bmsKKzI2NTkyIDhiYjkwZThiZjM2M2QzZDBmNGRlZmIxNzMyNzNlNTNlNzZlZDExOGEgcmVsZWFzZTIxLW1haW50CisyNjU5MyBkMzI1NDMzMzdhMjE3NWU1YmRlNzM4OTkzOTBkMWIyMTA0MmExYzg0IHJlbGVhc2UyMS1tYWludAorMjY1OTQgNDBhMTg4MDU1MzY5MWZjYzk5YjNlNWFjYjg0NWMyNTY5MmFhZjI3YiBsZWdhY3ktdHJ1bmsKKzI2NTk1IGFlZjI0OGMxNjQ1YTI0MmJiYzcxNWUwNjMxY2U5MDZhNGUxMGJhZTAgcmVsZWFzZTIxLW1haW50CisyNjU5NiA3NzBjMmQyZjU0NzI5OWJkNTEyMzA2MDE1ZWRjNTEyMjRhNDIwNGQ1IGxlZ2FjeS10cnVuaworMjY1OTcgZjUxZDFhMmQ0YTRhMWZhZDFhYTNiYTQ2ZGU0YjRkYjVjMDQyYTA2NiByZWxlYXNlMjItbWFpbnQKKzI2NTk4IDVkMTM1ZTQxNGM3NjQzMmRkM2UyMTQyMTk5MWMyZjI5ZTE0ZGJkNzkgbGVnYWN5LXRydW5rCisyNjU5OSBkMzI4ZTViYjhhODgwZjY0ODI1OGIyOGIxNTExYTg3ZTU5NDM4YTZiIHJlbGVhc2UyMi1tYWludAorMjY2MDAgZGFiYjBhM2Y0N2E1NTQyMDIwNTFmYjhkNWQ2NzhiZGRiMmIyZDZkYyBsZWdhY3ktdHJ1bmsKKzI2NjAxIDc2YzQ1MDM3MTEzZmRhMzYzYzIwOTVmMmIyZTQ1YzhlZjUwNGRiNzUgbGVnYWN5LXRydW5rCisyNjYwMiAzMDQ1OGExMWI1ZTA5M2FkNTMwYWZmOWU4NDU0M2FlZjg3NzIwMWNkIGxlZ2FjeS10cnVuaworMjY2MDMgNGUyMzRiODcxNzBiMDhlZTI2YTVkYWQ5YTliN2M4YjQ2ZDhiMzIyZSBsZWdhY3ktdHJ1bmsKKzI2NjA0IDI0YjNlYWQ4OWNhZTg3ODM2MGU0M2I5ZTNlMmNlZjNhZTFlZGU2NTIgbGVnYWN5LXRydW5rCisyNjYwNSA4ZmVjMTEwZTlkMDIwODQ5MGRjOTBhZDJmNmZhNzYwNmY3ZjgxYjk5IGxlZ2FjeS10cnVuaworMjY2MDYgZTA0NzBmMmRkNDEwZThiYjc1MjFmNDM4M2VlOGMwMDViZTMxZmY2OCBsZWdhY3ktdHJ1bmsKKzI2NjA3IDVmZGFkYzk0MjY2NTAyZDcyNjczZGQyZjNmZjEyNTQzNDg4MDU3ODMgbGVnYWN5LXRydW5rCisyNjYwOCBiMGI2MzIxMDZmZDc2NWQxY2FiZDljZjgxOGM1NGU2ZTczZDM4NjA3IGxlZ2FjeS10cnVuaworMjY2MDkgOTc2NTBlZGY1OGJiMTdkYjM5NjAyMjVlOGVkMWFmMWJlNjkwZTVmZCBsZWdhY3ktdHJ1bmsKKzI2NjEwIDVlODBhZDM2ZDhmZmJjNDRiMTQyYjdmYjQ4ZjVmMTVhMmU5OWQ2MTkgbGVnYWN5LXRydW5rCisyNjYxMSAyODRjZmNhNzRkZjQwZDYxMzU2ZDQxZmJhMGNiNmYxMDllZjBhY2NiIGxlZ2FjeS10cnVuaworMjY2MTIgNDA1YjI5MWMzMjFkYTBlOTFjMTEzYWZiMDQ5Yzc0YWJjNmZmYjQ0MCBsZWdhY3ktdHJ1bmsKKzI2NjEzIDRmMzM1Y2EzZjExY2MxODQ0MTgxYzMyNmQwMTljNTViZTI2MzRlNDQgbGVnYWN5LXRydW5rCisyNjYxNCA3MmNhMGZkNGRjYTZiZjU2NThhMjBlZjY1MzNjMWRkM2RlMGE0MjlmIGxlZ2FjeS10cnVuaworMjY2MTUgOWIxNzUwMThmZGVmNzg1Y2EyYzlmN2U5NTIwY2I1NjYyMTFlYzQ1MyBsZWdhY3ktdHJ1bmsKKzI2NjE2IDI5MjIxMTMyMTc2OTdjMWIwNzFjYjc5MzRkOGRiNWVmNGQwYjI3MDIgcmVsZWFzZTIxLW1haW50CisyNjYxNyBhODM5YTZiZTg1Nzg4ZDUwMzcwNGFmNGY0NmM3ZjI5NjM1MzRlY2NjIHJlbGVhc2UyMi1tYWludAorMjY2MTggNjY3YjAyNmE4OWQ5MGUyZTQ4YzFmMjAxODkyNjBlM2MwMjY0YWRjNyBsZWdhY3ktdHJ1bmsKKzI2NjE5IDlhOWJlYzEwYWE4YzZjZDI4YjcyOWVjMDAwMGY0ZTYxNjY3MWY3MzggbGVnYWN5LXRydW5rCisyNjYyMCAxY2Y4ODU5MzE2NjkzOTA3MjhiZjc5YjdjMzk2ZGU3MDY3MGJhNTM5IGxlZ2FjeS10cnVuaworMjY2MjEgOWUzNTMyYjc1NDcxZTY4ZjZjY2Y2OTg5NmQ5MTNiZjg3ODVlOTU4ZiBsZWdhY3ktdHJ1bmsKKzI2NjIyIGU1MjQ5YTZjYzFkODdmZTZjM2UzMjk0Njg4NDQ5NzYwM2EwOThjNDAgbGVnYWN5LXRydW5rCisyNjYyMyA3MzUzOTc3ZDZiNjRhY2YyMGJmMjU1ZjdiY2YxZGFjMTQ3MzNlMjVjIGxlZ2FjeS10cnVuaworMjY2MjQgMzc4MTJmMmJhMWFhYmViNThhYjQxODNjZTFlNGUxNzRiNTYwY2EwOCBsZWdhY3ktdHJ1bmsKKzI2NjI1IGI1NzJmN2EwYmI1NjM1YzU2ZjRkZjdkYjk1NGI5ODA3YjM3YmUwMjggbGVnYWN5LXRydW5rCisyNjYyNiA4ZDRiMjVjZWVlZmU5ZjkxOGVjZjVlZjE1N2NhMGVlZDFlYmJmODIwIGxlZ2FjeS10cnVuaworMjY2MjcgN2I2NmNkMTVkY2U5OTAzMWE5N2E0MDZjMTQ0YTdjMjMzNzkzMzZiYSBsZWdhY3ktdHJ1bmsKKzI2NjI4IDIxY2U1ZDVlMGVjNzE0YTk2Y2I2NzI3NTAwMzE3MTdiZjc4Mzg3OTYgbGVnYWN5LXRydW5rCisyNjYyOSA0OTMyMDZiNzAxZGI1MTc0MTljZDJmODdlMzQxNzUwZjRjNmIzNzNmIHJlbGVhc2UyMi1tYWludAorMjY2MzAgZWMyYTU1NTllNzY5NWJiZDZlNzU2ZmU1ZmI2MWViMmVmYWQ2MzY2NCByZWxlYXNlMjItbWFpbnQKKzI2NjMxIGY5NzA1ODhlODliMTBkMzJlZWMwOWQ3MmY5MDdlMTMxY2NjNTNhYjIgbGVnYWN5LXRydW5rCisyNjYzMiA4MDNlNmE2OTUzMDY0YzM5OWUzMzc4YjNhNWEzZmEyYjcyZjU5OWI2IGxlZ2FjeS10cnVuaworMjY2MzMgNTgyODU1ZjZkMzViZWRmYjBiMTY3Y2FjYjJjZGIxZmRhNmFkN2Q5MSBsZWdhY3ktdHJ1bmsKKzI2NjM0IDcwYTA4OTcyMjM5MzViZjIxY2EyZjA0NDA0ODA2ODQ0YzE3ZmEzYjMgbGVnYWN5LXRydW5rCisyNjYzNSAyOWNhOWUxMmJmMTAxOWEyYzliN2U5ZWQwNWE2MTk4YTI3YTVhMDNlIGxlZ2FjeS10cnVuaworMjY2MzYgZDQ3MjkwZGQyZDU3ZTY1MTY1NjE0ZGY0YjFmOWVlOGM4ZTBhNmVkZCBsZWdhY3ktdHJ1bmsKKzI2NjM3IDQ2NDUwZjE3YTA3MDU2MWM2ZjVhYzg3MjEyMGYyNzY0NWZkODhkOTEgbGVnYWN5LXRydW5rCisyNjYzOCAzMTRlMDhlODA5MGZiNGQ5MGE2ZmI0YzViMTE5NTJhMjRmMjVhZjNhIGxlZ2FjeS10cnVuaworMjY2MzkgNWY1Y2VhMjcyYjQ2MjMxYzA4ZTEwZTYyY2MyZTMyN2ZhZGI5NDNmYyBsZWdhY3ktdHJ1bmsKKzI2NjQwIDIwMDU1OWZjYzY2NGY3YjY2YjkzODI4MjUxZTJjZDgxYjIzYTVhN2IgbGVnYWN5LXRydW5rCisyNjY0MSA5ZTIyYTg3MDJkZTJkODRkNDhjZWRhODcwZGRiMGY3MThhNjAzMGQyIGxlZ2FjeS10cnVuaworMjY2NDIgZjVmZDdlMjk1ODk3NTk1Y2YxMjc2ZDM1YmZlMzUyNzMyYjY2YTk2ZSBsZWdhY3ktdHJ1bmsKKzI2NjQzIGE0ZTc1ZDUzZDMyYjRmNTc3YjU2MWFkNWZhMDRhNDZhZWQ5MjZkOTcgbGVnYWN5LXRydW5rCisyNjY0NCAzZWRkZDlkNjhhZjdkYmMwNDVmMWQ2OWE4ZjMwMmI3ZDEyMmIyNWJhIHJlbGVhc2UyMi1tYWludAorMjY2NDUgMDBmNjYzNjBiZTE5ODYwNjUyMzQzYmFiNzllYTE2MjExMjBiZTY2MyBsZWdhY3ktdHJ1bmsKKzI2NjQ2IGFmZTI2MzY3MmZkODRiYWJiZDM1Mzg1YTQyOGNmZDUyMTQxMWZlNzQgbGVnYWN5LXRydW5rCisyNjY0NyBlMTE0NzFhMDYyNmMxMjJkNDVhOTE4ODc0ODI5MWRlYjM3Y2M2MmU5IGxlZ2FjeS10cnVuaworMjY2NDggYjYwYjczZDQxZWI0YTgzZGU0ZjFhZDYxODk4ZjY4ZDE2OWY1YTU1MCBsZWdhY3ktdHJ1bmsKKzI2NjQ5IDQ3MjhiZWRmNGI3ODlhNzA1MThlODEyZmViMzY4MWIxNzEzNmNkNmIgcmVsZWFzZTIyLW1haW50CisyNjY1MCA3YzYwOTRiMThkMTYxMDBhZTlkNDJkNDc4YjQ3M2EzNjFhMTg3YjA4IGxlZ2FjeS10cnVuaworMjY2NTEgNWRkNTJhOWIwNDM4YTg2OTVmYzI4NDM3NGNhNWZhNTJlMGVjZjgwNyByZWxlYXNlMjEtbWFpbnQKKzI2NjUyIDY1NjEwYmM0ZTZhNTczZjA0N2M1NGQyZGQ5OTUwOTExM2Q0NGE4ZDggbGVnYWN5LXRydW5rCisyNjY1MyBiOTNlZDFhNGU0OWYxYTg2OTJlMDE4YTA5ZGE1MTY0M2NkYjE0YWUzIHJlbGVhc2UyMi1tYWludAorMjY2NTQgOGYxYjM3MWZmYmFmNjFkN2FiMjkzZGI0NzA3Mjg1ZDg1Mjk5OTMwZiBsZWdhY3ktdHJ1bmsKKzI2NjU1IGI3MzVlODljY2RhNzRmODBkNzAyZjMzYjJmNmMyN2RhNGRjMWM1NDYgbGVnYWN5LXRydW5rCisyNjY1NiA2ZmE3NmI0ZTU5ZmVmZTgxYzUxMTE5OGM3Zjg5NjVkMDJhMjc5Mzc0IGxlZ2FjeS10cnVuaworMjY2NTcgMTdjYWZlODA1ZjA0NWY2NTJhNjUyMzQ5ZDlmODUzYzg4MDRmY2Y5MCBsZWdhY3ktdHJ1bmsKKzI2NjU4IDA4ZTZmOTRmM2FiMDA3OTg0NjIyNWNjM2M2ZTg4NDMyMDUyOTY0ZjYgbGVnYWN5LXRydW5rCisyNjY1OSA1YTZiZThmYThkZTI0ZTZjN2FmYTM3OTdkNTM3MTU5MGYyZmI0ZGQ4IGxlZ2FjeS10cnVuaworMjY2NjAgMDE0NzhhMTMyOTA4OWI4MDI5Y2UxY2VhODM3YmMzMzRlZjMwOTUwNCBsZWdhY3ktdHJ1bmsKKzI2NjYxIGI1ZjZlOWY2ZTdmNGI3OThkZTA4NjA3NmI1MjAyZTNhOGMwYzY5ZTYgbGVnYWN5LXRydW5rCisyNjY2MiA1NzMyYTljYzkxYzdhOTQyYjBiZmZhMzc4OGQwNmFlYmI3YjliZTgwIGxlZ2FjeS10cnVuaworMjY2NjMgNTNlYmFlNzgyM2Q5NzQyZjM1MTRiY2RkMTg1OThlYWEzNzIwNzFjMCBsZWdhY3ktdHJ1bmsKKzI2NjY0IGEyMTUzMjg1NjUyNDYwMDk2OTYyZDNmYzRmYjFmYjJlNDE3NTE2NzkgbGVnYWN5LXRydW5rCisyNjY2NSAyMGE3YjJjZjNjMWZlMzk1ZTdlNWI3M2E5Y2QyOTE0ZjExNzUwNjM0IGxlZ2FjeS10cnVuaworMjY2NjYgZWY2ZTMxZjBjZWUxMjc2MTZiN2I3MGFlYTQxYmI0Mjc3OTA0ZDA0YiBsZWdhY3ktdHJ1bmsKKzI2NjY3IGNmOTY0MGJlNmY4YTk1MjBlM2YyMWNkMWM2YWFlYzBhZDBjMjc1ZDAgbGVnYWN5LXRydW5rCisyNjY2OCA4YWU3YjQwYWM2ZDA3ZWJlZDY1NzBkNDA1ZGFkNzFlMGVhZWU3NjhmIHJlbGVhc2UyMi1tYWludAorMjY2NjkgZDA1MzJhZTA1ZWQ3MmFjMmM3MWE5M2QyYjA5NDI0OTM1NDE3NzdlZCByZWxlYXNlMjItbWFpbnQKKzI2NjcwIDRjZTYxMTY1MGQwY2U4N2UyMzcwMzAyYjk2YjNlOTU0MWQxYWI4NzggcmVsZWFzZTIyLW1haW50CisyNjY3MSAwMTc2NWQzMDUzMmUyOWQ0NmZiYjk0NGRhYzg0OGVjMDkwMWQwODY5IHJlbGVhc2UyMi1tYWludAorMjY2NzIgYmE2NzIxYWU0YjgwOTMzY2I1YjgyZTAzNWQ3MGI3ODFjNDNkMmY5OSByZWxlYXNlMjEtbWFpbnQKKzI2NjczIDVkYmM3OWVlMDg4NWJkNTYzYzM0ZmIzYWRhMDE0ZTAxMjdlYWUwZWUgcmVsZWFzZTIxLW1haW50CisyNjY3NCAwYjA4OWM4YWMwNzczMDEyZWM2MGY2OTNlY2ZkZjAzNTdlMTU0MjViIHJlbGVhc2UyMi1tYWludAorMjY2NzUgYWFiNDI3M2E3Y2Y3MTY3MzlhZDZhZTY2ZmU2Yjg0NjhjMTdlY2I5NiByZWxlYXNlMjItbWFpbnQKKzI2Njc2IDRjOGY1YTg5MGY5OGJlZWVmMzc2YmFhYmIzYTFiNmZiMTQwOGNjYTAgbGVnYWN5LXRydW5rCisyNjY3NyAxMzM3NjMzMzI3NjczNDAzYWY4YzBjMmYzZjNlN2NhYjdmMjE0ZGRmIGxlZ2FjeS10cnVuaworMjY2NzggYWYxZmY0MWJlNDdiODQ1MzA2YzZlYmY3ZDJmZDQ2NzQxODE0OGFiNCBsZWdhY3ktdHJ1bmsKKzI2Njc5IDQ2Y2ZiODVmMGFhZTc2MDQwN2UzNGIzYjRiNzUyODg0MGY1ZjMyZDYgcmVsZWFzZTIxLW1haW50CisyNjY4MCBhNDQzZTVlNWVjZTdmNjFjMmNhYmNhYTJlNmM3MGI1NDMwNmQ0ODI5IHJlbGVhc2UyMi1tYWludAorMjY2ODEgMjNiZjY4Nzc4YTJhODVjMjkxYWJhZjFmZDE3ZGVjMjk2ZjJhMTliYyBsZWdhY3ktdHJ1bmsKKzI2NjgyIDM4ODQ0OTM3MDk0NjI0N2YwN2U3N2E4N2UzYzliNTI0YjEyN2I5NDAgbGVnYWN5LXRydW5rCisyNjY4MyAxNzRiYTAzYzg5ZmI0ODEzYTRhOGZhY2I0YzhlYWZkMWVmN2NiMzEwIGxlZ2FjeS10cnVuaworMjY2ODQgYWY0OTliNTBhMDk0NjQzYzc3ZjdiNmQxMjc3NzEzMmZlN2M3OGQzNCBsZWdhY3ktdHJ1bmsKKzI2Njg1IDNjN2IyMmQxMTJkMzVlM2NmMjNlZTczYzNlMjk1OTZlZDZiOTNlN2EgcmVsZWFzZTIxLW1haW50CisyNjY4NiAxODA2ZDAyYzA4YzQ0N2E1MmZhYzE5NDY4NTUwOWM0MTUzMDdkYjlhIHJlbGVhc2UyMi1tYWludAorMjY2ODcgNjg5MjZkMGFhZDQwM2JmOGE0ZGFiZGYwMzFjM2I5NGY5MDc1NTdhMyBsZWdhY3ktdHJ1bmsKKzI2Njg4IGJhMjkwMTI4N2NiN2NhODZiZmNkMzE5MTkxMmY4NmIxODE4Y2E0OTMgbGVnYWN5LXRydW5rCisyNjY4OSA4YjU5MjYwMzJiNTZhMjA1YTRjYWVmM2VlMTNmNjNiZjZjZTFkNTJiIHJlbGVhc2UyMi1tYWludAorMjY2OTAgZmZkNWQ4NmU5NmNlYjBmOTI0MTFmYWRjMzc2NWMwZmNlOGVlMzgxYSByZWxlYXNlMjEtbWFpbnQKKzI2NjkxIGMzMzA3N2RjMGM4M2I5YzE5ZGE2Mjc5NDFjMDUwYTllZWNhM2RhZWIgbGVnYWN5LXRydW5rCisyNjY5MiBhYWU2ZGM2YjJhNTg5OGUzMmMxMDBjN2Y0NTgxMDYyYzVmZGNjZmE1IGxlZ2FjeS10cnVuaworMjY2OTMgYzFkMWFlMTVkZTkyYzlhZjU0NjY5ZjJkOTc0YjMwMGU4ZmEzODg2ZSBsZWdhY3ktdHJ1bmsKKzI2Njk0IGNkMDJhMzY3MDRmZWYyM2FiYTUzOTExMTg3OTVmNjU5YzIyMzA3YWQgbGVnYWN5LXRydW5rCisyNjY5NSBjOTE3ZmU5YmM2NTRmZTk2NjA2MTc3MGRjNDBkNGRiNWRjNDg1OWM5IGxlZ2FjeS10cnVuaworMjY2OTYgM2RlYmM4YzM0Y2M5MTBjODIzNzA4ZGRiYzVhZTJiNTBlOThhMGNiZSBsZWdhY3ktdHJ1bmsKKzI2Njk3IDg3Yzk4YWY2MWZjNGFiOTVjZjAzNGZmYmNmZjk2ZGZlZjg5NTkwNjYgcmVsZWFzZTIyLW1haW50CisyNjY5OCA4Mzg0MjdmMGFmMjMyZDE0ZGE0NjllMWUxYTMwMjJmYWY4MzQwNDc5IHJlbGVhc2UyMi1tYWludAorMjY2OTkgOTdlMGI1MDRjMDAwOTg4MWFlYjk0ZWFiYjk1Njg1MjAxMDU3OWU4NSByZWxlYXNlMjEtbWFpbnQKKzI2NzAwIDAyZDUyODNiMWUyMWZjNjJlNmU5YWMxOWI4NmY4NTZhOTA2MWRmYTYgcmVsZWFzZTIxLW1haW50CisyNjcwMSAzNjk3YTMzNjQwMGZhYmMyNjE0MDY0NjZhNjcwMTdlYmEwZjMxYTM4IGxlZ2FjeS10cnVuaworMjY3MDIgNTU0MjNjMWFiY2QxNDlkZTg4MzBlNWZhNjhmN2IzZGJkN2VkMGRlZCByZWxlYXNlMjItbWFpbnQKKzI2NzAzIDEzMDU2YjYyNjdhMjVmMTZlY2EwZWFiZjljNjZhN2M3NmZlZWNhMGYgcmVsZWFzZTIxLW1haW50CisyNjcwNCAwM2IxZTk4OWIxZDk3NzQ1OGQ3N2JjNmQzOTY1MTZiMGRkMDVjZGEwIGxlZ2FjeS10cnVuaworMjY3MDUgYmZmYzcyMzZjNGJhMjg5MTQ3ZGU4ZGQ4YWFiN2EzNzA5YzgxNTRkYiBsZWdhY3ktdHJ1bmsKKzI2NzA2IGQ5M2Y1MzdhNzUyYjg4NmVkZWE2NGFkZmJlMThjZDljODhiNTRkNzMgbGVnYWN5LXRydW5rCisyNjcwNyA4N2M3MTZiMjhhM2VjZjBiMGZiNzBkZjRmN2EyYjE1ODUxMDUyOTFhIGxlZ2FjeS10cnVuaworMjY3MDggMmQyZmFhNTFkY2ZkYWU4Y2UzZTAxMjkwNDQ0ZTI2ODhjNDQwNjIyMiBsZWdhY3ktdHJ1bmsKKzI2NzA5IGFhMDg1NTRkMWE5YjQxYWI5YTIzMjQ3NmMwZDBjYjQ2NjY5YmJjOTcgbGVnYWN5LXRydW5rCisyNjcxMCAxYzljZTM0ZDUyOWRjMzhmMjk2MDdjNGRjYTY3NTkzMGRhNDg5NTgyIHJlbGVhc2UyMi1tYWludAorMjY3MTEgYjQ5MWFiNzg3N2QyZDJhMjVhOTc5MzRiYmIwZjI5MDIwMjQ4NjljOCBsZWdhY3ktdHJ1bmsKKzI2NzEyIDIzOGRmZWM5Yzg5OWU4ZTMzZGM0NzgxMGI1N2M5MTU3OWZjZGEzN2EgcmVsZWFzZTIyLW1haW50CisyNjcxMyA5ODFjNmI2ZmYyZjE3MjAxOWE5ZDQwMDliZWIzYmFjMjlhMjA4ZjNkIHJlbGVhc2UyMS1tYWludAorMjY3MTQgOWM5ZTA3MzU5ZDZlNjQwNDdhOWNmYWVlZTc3NmIyNWNkMDE4MjYyNSByZWxlYXNlMjEtbWFpbnQKKzI2NzE1IGQ0NjZiYzE5ZjczMTJhZTU3NzBiZWExNDIyNWE4NGFlOThmNDJjMGEgbGVnYWN5LXRydW5rCisyNjcxNiA2N2JjYjRmNTIzN2YyNDUyNjA3OWNlNWVmMzIwYWMwZGJmNjI1ZWUzIHJlbGVhc2UyMi1tYWludAorMjY3MTcgMGE0ZDZiMjQwYWIyNDg3N2JkZWU4NDFmMTdiZmNmZWVjYmM5YjYyZiBsZWdhY3ktdHJ1bmsKKzI2NzE4IDA2NmQ4Mjc1YWQ2NDNhYmViZjgzYmQxYWY4M2FjZTg0NGFkMDMyYmYgbGVnYWN5LXRydW5rCisyNjcxOSBmZDY5ZjNlZTc3ZWFjMWY2MmEyNjc0MjEzNDZkZDgzYjgyYmI3ZDYxIHJlbGVhc2UyMi1tYWludAorMjY3MjAgZWNmMDcwYzM0OTk5ZTY1NjM3YWM5YWQzODFlZmNjODA3ZmZiZjBlYyByZWxlYXNlMjItbWFpbnQKKzI2NzIxIDdiZjdjZjNhMzViOTA0NGNkYWMzMGQzZTI4ZGUwY2ZlY2E1YWRjNGQgbGVnYWN5LXRydW5rCisyNjcyMiBhZWU4ZjE2ZjI3NzQxZDE2ODIwODU0MTI4YWFjYzk1YzkwMDQzMTEzIGxlZ2FjeS10cnVuaworMjY3MjMgMThmOGE3YjU2Zjg5MDAyM2ViMGVhZTA5NmJhNjVhOTZkNjhjZTcyNyBsZWdhY3ktdHJ1bmsKKzI2NzI0IDM2ODQwYTk4OTcyMmQ3ZTg0NDNlODZlODlhMmRlMWM4YTJmZDg5ZGIgbGVnYWN5LXRydW5rCisyNjcyNSBiZWMxNTdkYmVlMmUwOGE2YjI1NjYzZGI5OTQ0ZDRjMmEyYzI3Y2U4IGxlZ2FjeS10cnVuaworMjY3MjYgM2VmZDM0ZmU2NjY4MDY0YWE0M2YzYTExOWRiZTdkZGZhZjMxOGZmZCBsZWdhY3ktdHJ1bmsKKzI2NzI3IDNiMzIzZGY5NDViYjZiZjE5Y2ZhZTM2NWJkZDlkZjllNjRkNjM2Y2UgbGVnYWN5LXRydW5rCisyNjcyOCBiMjdmMzZjZjNkM2UwMjNkY2VhYTZlNzcwYWE3Nzg5YzgyZDBjZTdlIGxlZ2FjeS10cnVuaworMjY3MjkgZDNkODU3YTg4MmYwZjgzOWI3NzFiNWM3Y2NkYjBjZjdhZmJiOWM3OSBsZWdhY3ktdHJ1bmsKKzI2NzMwIDdlZDQ5YWYwNDhiYTA5M2U0NzM4NGU3NDY0Zjc2NGY4Y2JjMjk4MGMgbGVnYWN5LXRydW5rCisyNjczMSAxMDViZTkzNmI1YzM2ZDYzNzhlNzE3YTUzMjgwNmNkY2Q4NzFmODllIGxlZ2FjeS10cnVuaworMjY3MzIgYWQ5N2ZjZTlkY2ZlMjVlYzY4YTY0NjNmMGIwZjExNDUyNWIxNGZmZSBsZWdhY3ktdHJ1bmsKKzI2NzMzIGM1Njg4OGQxNzA5ODRlMTMyZjNmZWM4OGJkZjgxODQ5MmJhNzIxYzQgcmVsZWFzZTIxLW1haW50CisyNjczNCA0YWY2NjlmOWM0MmUwODJiMWFlN2VmNTk5YWQyY2Q2NTQzNDJhODIyIGxlZ2FjeS10cnVuaworMjY3MzUgNjc1MWU4YmNmZDI5M2ZjYWIwNzY0MGQzZmUyNDY5MDBhNTNkNzJiNCByZWxlYXNlMjItbWFpbnQKKzI2NzM2IDNiODI1Njc1ZDExOTQ0NzI0YWZhYjg3ZDRiYWIxM2I0MmI2M2Y4MjcgcmVsZWFzZTIyLW1haW50CisyNjczNyBjYmJlMjg5ZTdjMmU5Mjg1ZjM4Y2U0ZmE3MGFjM2ViZDY3MWRiMDg0IGxlZ2FjeS10cnVuaworMjY3MzggMmY3ZDg2OWRhZDRkZjdiYmRmNjcxMTkxZmU2ZGVlYWMwMWFkOTBmZSBsZWdhY3ktdHJ1bmsKKzI2NzM5IDRkNmJlYWI3NjZlMjc0ZDlmOWZlMzIxNjlkYmQyZDEzNTMwMDQ0NTcgbGVnYWN5LXRydW5rCisyNjc0MCBlNWRmMDg2ZWQ0NTUxODUwZWFiOWE5Njk1MjY2OTA3ODRmNjg4MzI1IGxlZ2FjeS10cnVuaworMjY3NDEgOWJlMDFiN2I2YzgwYWJkYzlkMzFkYzAwNjk0M2UyZThmZDM2ZjRiOCBsZWdhY3ktdHJ1bmsKKzI2NzQyIDgyYTg1MGRiN2VjNTc3ZTgyNzAwODA3YTg1N2Y1Y2RlNWM5ZWQwYWMgbGVnYWN5LXRydW5rCisyNjc0MyAxMzAzZGMwNzIzZmNjMTIzYzljZjA1ODY5NDYxZmI3YTU0YWU0ZTc4IGxlZ2FjeS10cnVuaworMjY3NDQgY2E5MDdmMjhlMmQ1NTgyYWNlMTYyY2M3NTg0Mjc1ZmFmNGVjNTUxNyBsZWdhY3ktdHJ1bmsKKzI2NzQ1IDA3MTlhMzc3YTYxNmMxMzlmYmQwZDg3ZjRjMzBjODFhODViZjJiMTYgcmVsZWFzZTIyLW1haW50CisyNjc0NiA0MjI3ODQ3MDkzODBhYTRlYTdmYjRkMzY0YjZmMGI0NWExYzllZTEzIHJlbGVhc2UyMS1tYWludAorMjY3NDcgZjhmZjlmYWI5MmNlZTQ1NGZjOTMxYmFhOWMxNjY3MjEwZWQwYjFmMSBsZWdhY3ktdHJ1bmsKKzI2NzQ4IGE5Yzk4MTgzZmY4N2ZlNjY1OGRkN2Q5ZGMzZDAzNmU5MmM2MTdiMjUgbGVnYWN5LXRydW5rCisyNjc0OSA2YTdiMjZiZGUwZThiOWM4NjFkNGRkY2E0NGNjOTZiNTg0OTIxZmJjIHJlbGVhc2UyMi1tYWludAorMjY3NTAgYzc4YjUyZGFjOTYzMGMwNDNjNmFlZTMzY2UxYmI4YjZhNDdhNDZkNCBsZWdhY3ktdHJ1bmsKKzI2NzUxIDQwZmUxODNhODkyMjAyZDVjNjQ3N2Q0ZWNjMmE5ZTg5NjE2Yjk0ZjYgbGVnYWN5LXRydW5rCisyNjc1MiBmYTczMjBjYjM3ZDk1ZWM0ZmY4NTkwMDc1MDc4YzBhMGZjOWIyZWZhIGxlZ2FjeS10cnVuaworMjY3NTMgMjMwMDczNDE0NTA0MGJjYTgxYWViYmQ4Y2I2ZDgwZTVlNDYzZjY2YyBsZWdhY3ktdHJ1bmsKKzI2NzU0IGRmZDk4ZTk1MjFiMzdlZjkwOWEwN2ViMzIxYzk2ZDRmNDU0NmNiMWEgbGVnYWN5LXRydW5rCisyNjc1NSA0NGZlY2MzMzg4OWQ4YzAwZGQxMWRmZjg4YjRiNGYyOWMxMDAwMmMwIGxlZ2FjeS10cnVuaworMjY3NTYgYmZlOTFlMWUzMWIyMDA2Mjc2OTNjM2YwZDI1OThkNDkxY2E0ODNiOSBsZWdhY3ktdHJ1bmsKKzI2NzU3IDM4ODQxYmVhMjRmZGRkZTk1M2NjYTg3NTBkNzNhOWEzNzJiZGMxZjIgbGVnYWN5LXRydW5rCisyNjc1OCAwZDg3NDAwOTRiZWNhMjZkNzBlZTY1ZGU0MjNjYTEzYTc0NzBhMTVlIGxlZ2FjeS10cnVuaworMjY3NTkgOTU2ZDAzOGIxZGQyNmY1NmMxNTdjNjQwMjczZGYzMDc3YzQzOWFmNiBsZWdhY3ktdHJ1bmsKKzI2NzYwIGE4NjhiYWViZTk1NjQ2NTZlMzU4YmRmYjI1ZDRkYTdjNjdiNWRlMDcgbGVnYWN5LXRydW5rCisyNjc2MSA5MzU0MmVmYWMwNjY2OWJhYWE4NGE3OTA1M2IyOGQzMTdkNDI0MGEzIGxlZ2FjeS10cnVuaworMjY3NjIgNGU3ODE1Yzk1ZDNlYWE5NGQzMDMxZTRiNTk2ZDFkMzNmYTE5ZDU0MSBsZWdhY3ktdHJ1bmsKKzI2NzYzIGI5NzI2YmE3MWFhM2Y1ZTdiMmM3NWI3NDJhZGJiZWFmMzBlZmQwNTEgbGVnYWN5LXRydW5rCisyNjc2NCBjNWMyYjI0ZGI4YTcxMTk1MDg5OWFmMzRkMGM2MTIzMWUyNDU4MmUxIGxlZ2FjeS10cnVuaworMjY3NjUgYjJhYTI2NDhkZjI3YjBhZTZkNjlmYTA2YWRiODU4MTcyMjUwZWZmNSBsZWdhY3ktdHJ1bmsKKzI2NzY2IDk3N2U1MzRmYzZjNzc0MjIwY2QyNThiYmVkNmZhM2UwZjNjYmRjMWMgbGVnYWN5LXRydW5rCisyNjc2NyBlMGVkNjhhZGJhMzMyNzU2ZjQyM2EzMmU2MmRiOGMyNjE1MGZjMWUzIGxlZ2FjeS10cnVuaworMjY3NjggZWUyOTJhNTNlNWZjZTg5NGYwNWE1ZDBhNjRiYzE5Njc4ODIxNTUzMiByZWxlYXNlMjItbWFpbnQKKzI2NzY5IGM1YzRjMTEyMTA4Nzc5N2RlYTEwZjNiNDIxMjk5OTE2N2E3MDdlNTkgbGVnYWN5LXRydW5rCisyNjc3MCAxMGFlMmQ2MTFhZTk0MTdkNjhiYTJlMTgxYzA0ZTZmNDQ4ZWIyMWI3IGxlZ2FjeS10cnVuaworMjY3NzEgNDczMzg1ZmNhMjk5Mjg4M2ZiZTk0NjQ4NWUyOTMxYjEzMjYwODY1ZSBsZWdhY3ktdHJ1bmsKKzI2NzcyIDk0YmY2YWNlZmY3ODhiZWZhZGZiNTg0NDk4OTAxNjBlODJiZjBhODIgbGVnYWN5LXRydW5rCisyNjc3MyAyMzM5ZGRlNmJhYmVjZjhmMTI5MmU0ODRlN2RmMzAyMTVlN2MwZWVlIGxlZ2FjeS10cnVuaworMjY3NzQgNjBkODZiMmVhYjBmYWZhMjI4OTJlNDA4NDNjNWFlMGQ4ZDczNDRjNiBsZWdhY3ktdHJ1bmsKKzI2Nzc1IGU1ZWYxNjZmYzIyZjYyM2U4YzYwZmZjMTZlZTgxNThjMjQzNjMyYjggbGVnYWN5LXRydW5rCisyNjc3NiAyMTFiMTZhYzA2NmE3MDQ4MzQ3MjExMjg3NGI3OGM5N2M2ZWE1N2M5IGxlZ2FjeS10cnVuaworMjY3NzcgNThjYWM3MDYwMmFhNjk5MzU5MDk0NjliN2Q2YjdmOTRmNzg0YTE5YSByZWxlYXNlMjItbWFpbnQKKzI2Nzc4IDM5ZTVjMGQ2YzE4MjJhODBlN2JmOWM4OGI2ZWVhZGVlMDFlN2JjNjMgcmVsZWFzZTIxLW1haW50CisyNjc3OSA4MWQwNjcyMDViODZmMmI3ZDA1MWVlZWIzMDE1YTllZjVmYTdlOGZhIGxlZ2FjeS10cnVuaworMjY3ODAgNGY2N2U1NjY4NmU1OGQ5YWVkY2U2OThjMDg4MTk1YWExNzE3ZmM2NyBsZWdhY3ktdHJ1bmsKKzI2NzgxIDkwZWZhMWNhYjNiYzJjNzU2MWQ4ZDg3MWI5Yzc0YjY0ZGZiZjkyNTIgbGVnYWN5LXRydW5rCisyNjc4MiA2NDJhNDUzZTdhMmU5MjNlMDU5MDBlNjI1OTIxZTg3YzIwZjg3NDY3IGxlZ2FjeS10cnVuaworMjY3ODMgZjM4YmRiMmZjYWUwMmQwNTU3YzdlMmYwMWNlYjg5OTJhNDQ0MTc3NiByZWxlYXNlMjItbWFpbnQKKzI2Nzg0IGMzNzVjNWIyNjYzMTJlMTMwMzU5ODQ0MjI1OTk3OGRjMTRiZTYxOTYgbGVnYWN5LXRydW5rCisyNjc4NSA2Mzg5MGJjMjlhN2NiZjRmODk2NmIyMDgwMTYyOWJhYTdmODdhZTJhIGxlZ2FjeS10cnVuaworMjY3ODYgNjI0MDNiOTNmNDcwYjIyZTA5ODI4YTI4OWY3ZjFjZWQwNGQ2YzFmZSBsZWdhY3ktdHJ1bmsKKzI2Nzg3IDExNTcyODFmMDBhMDJiMTM3N2Y4ZjdkMWViMTgxZDVhZGEyYmNjOTQgbGVnYWN5LXRydW5rCisyNjc4OCBhNGQ2NzViOGI1M2MwMjQwNzkzYmU5MjUyNDU4YjEwMzBhY2U5ZTQxIGxlZ2FjeS10cnVuaworMjY3ODkgOGViYTRjOTJkZjJiNGU0ZTU2MTdlNWRmNDkyOWQ2NWFlYmU2NzNiMiBsZWdhY3ktdHJ1bmsKKzI2NzkwIGUxMWU5NTBhY2MyMzUxNjEwNTFmYmZiODcxOTA3ZGE1MjVjY2QzMjAgcmVsZWFzZTIyLW1haW50CisyNjc5MSAxYmU2ZTc5YjFkNDYwNTA4Mzk2YTUzYjMxNzE0NzIxZmY0ZDAyMmZiIGxlZ2FjeS10cnVuaworMjY3OTIgYWI1MjMxMmY4MmM3OTE4ODY0MGJjMWE5MTg1MjM1NTVjNmYzMmYwOSByZWxlYXNlMjItbWFpbnQKKzI2NzkzIDU2MjQwYmNkYTg4YzkxZjBiMTMxYzlmYzYzNmQ1YzgwYjVjYzNkZjkgbGVnYWN5LXRydW5rCisyNjc5NCBmYjY0ZjIxMTc2YWZhZWFkZTM1NDk5ZDhmNDBhZTI2YmYwNGZkOTQxIGxlZ2FjeS10cnVuaworMjY3OTUgOTkzYzc3NTg3ZGNhMjM5MjMyY2Q3YjFmZmY2NzU1ODRjYzVmNDE0NiBsZWdhY3ktdHJ1bmsKKzI2Nzk2IDI1ZmQ0YThmOWUwOTIyNzRjZDNlMzIzZTliMTJhYWUxNzNhZjhjMjkgbGVnYWN5LXRydW5rCisyNjc5NyBmOWQ1ZTFmYjJhYTY5NzNjYWE0MmY3ZWVkYmI0OWZjZTQ0YTAwYmVkIGxlZ2FjeS10cnVuaworMjY3OTggODI0NjBmZGE0Zjc2NzEwYjYzYTIxMmNhZWE1MDhkZDZlNGJmMjQxOSByZWxlYXNlMjItbWFpbnQKKzI2Nzk5IDA4ZDZjOGI3ODBkOTY5OWQyOThkNjllOGNkYjRjYjViNmVjMzBkZjQgbGVnYWN5LXRydW5rCisyNjgwMCBkZTBhYzAzZTVlNzJkOGM4NTZmZmY4YWNmYzJlMGZlZDRjN2U4YjMzIGxlZ2FjeS10cnVuaworMjY4MDEgMjhmNzFjNGJkMTZiYjU5M2FkNTA0MTQxNTE2MWJmOGI4NTlhYzI0YyByZWxlYXNlMjItbWFpbnQKKzI2ODAyIDZiMmJhM2I3ZWQzMjZiZTRhYTQ4NzkzMGQ4MmVhZjRiMzRmYThiNDkgbGVnYWN5LXRydW5rCisyNjgwMyBiMTU4OTYwNTM5MzMzNGEzMDQwNzBhOWYxNjQyNzFhNmQ4OWQyMzBlIGxlZ2FjeS10cnVuaworMjY4MDQgMDNkZmU3ZDM0M2RiYWMzZjgwYjU4YTk0MTZkYzI5Y2JmODVlZjFiNyByZWxlYXNlMjItbWFpbnQKKzI2ODA1IGYxMjE5MzA1OTIzOWRiMmE0OTQxODgyNWRhNmJkNmZjMWRjMjQwM2YgcmVsZWFzZTIyLW1haW50CisyNjgwNiBkM2YyNzViZDJjNjBhMWQwZjg2MTBkYTNiZDEwMDU4YjM1NjVjZDliIGxlZ2FjeS10cnVuaworMjY4MDcgMTlhOTQ5MjUzNzgxMmZhMjExODIwYzU2ODcxZGI1NDhmMDk4ZWJiZSBsZWdhY3ktdHJ1bmsKKzI2ODA4IDA4Y2NiMGYzZTJkNDk2YzdiZTc2YWIzYjNkMzE2MjZlZWFmNGRkYjIgbGVnYWN5LXRydW5rCisyNjgwOSA0NTNlNTlhNDcyYjIxYTI4ZjliMTQ3MGJjMzIwM2VlMzQ0MzVhNDdmIHJlbGVhc2UyMi1tYWludAorMjY4MTAgNzJmMGMxYTI0NWY4ZGY5NGYwZjE2N2EyZjM5ZDBiMjIzYTJkZjY2OCBsZWdhY3ktdHJ1bmsKKzI2ODExIDFjYzkzZDUwMWI0NWYwNmI4NGJiZWM3Y2ZiNDcwZWFiZGRhYjUxYWUgcmVsZWFzZTIyLW1haW50CisyNjgxMiAyNzNkZDI1MDhjNTdlMWI2NTdkNjZiOGYyYzQ3ODE2NWY5NTM3OTc0IGxlZ2FjeS10cnVuaworMjY4MTMgNmJhZTBjMzFiYmZiMjYxMDRmYTBmZjg4NGNhYmFkNzU3ZjhhMjRkNyBsZWdhY3ktdHJ1bmsKKzI2ODE0IDI0ZTIzMzRlN2JiMmY4YWZiNmYxODViZjdmMzFmODY5YTgxOGZlZTggbGVnYWN5LXRydW5rCisyNjgxNSAyNmI5MjRhZDI2NmNmYjU2YWY3YWE3N2ZiNDEyMTZjOWYzNTBiMjJhIGxlZ2FjeS10cnVuaworMjY4MTYgZjk4YTI3Y2I5MjgyMzk0MmU1MmM2NTQ5YWQ1MTIwMTk2NjRiODAwYiBEU19SUENfQlJBTkNICisyNjgxOCA2OGM3NzZiYTVlYTVhZDFjNWRmYmVkNWM0OWIxODE4YWM1MjA3Y2QyIGxlZ2FjeS10cnVuaworMjY4MTkgNjRlYjExOWI4MTZkNWFkNWY1MTgyYmU5NmI5MDA3ZGYwODkyZDA3ZiByZWxlYXNlMjItbWFpbnQKKzI2ODIwIGRkYjQxZTg3ZDY1MTRmNzYwZTI3ODZlM2Q5ZDY2YThlYzI1NWRjYWQgbGVnYWN5LXRydW5rCisyNjgyMSA4YTQ1YmZkNmI0NzE3YzFiNDI1YTVjOGE0NTgzODM1N2UyMzM5ZTlkIGxlZ2FjeS10cnVuaworMjY4MjIgN2U1MTQxYjY4YzVmMWQwNGRjMGI3NzQxMDdkZjdlOTlmYWRhYzJlZSBsZWdhY3ktdHJ1bmsKKzI2ODIzIGQ5YmI0ZWMzZTc1YjMyNzg4MmIwMDIwMzk3YzJiZTNmZjZlNWYxNzAgbGVnYWN5LXRydW5rCisyNjgyNCBlNDNhYWZmZmIwM2M2NzZmMWE2MWE5ZWE0OGRlZmI3NTk2ZWVmOWJhIHJlbGVhc2UyMi1tYWludAorMjY4MjUgNjEzNDhhYTJmZjk4NmQ1YmZkNmNmN2Q5OTg3N2M5ZWI5YmMzNmZkZiBsZWdhY3ktdHJ1bmsKKzI2ODI2IDgxODM4NTlkY2ZjZDIxNTE1NWNmZTgxMmQxMGNkOTUyZGQzZjMxYTEgcmVsZWFzZTIyLW1haW50CisyNjgyNyBiZTU0YmE0YjJjNDQwZThlYzk3MjMxMzZiYmRjYzk3YThhNTAzYjVkIGxlZ2FjeS10cnVuaworMjY4MjggYzI1NTZlMzBmY2I0ODJhZGQwZWEyMDFkYzRiMDdjYzkxOTUwNTExMCByZWxlYXNlMjItbWFpbnQKKzI2ODI5IGFiMjM0MTA3ZTI2NzMyN2M1MzE2OWJkZmU2OTJhYzczZTkyYjY2M2MgbGVnYWN5LXRydW5rCisyNjgzMCAzYWJmZjExZjgyYjM1Mzc1NjliODBkMmNhMTc1N2ZkZmE3MWE4MDI5IHJlbGVhc2UyMi1tYWludAorMjY4MzEgMTBjODIwMDgzYzJkYzE2NDRjODJkMGM4ODE0MzExNWQwMjYyZDhkZiByZWxlYXNlMjItbWFpbnQKKzI2ODMyIDEyYjQ2NTc1ODcyOWRhMjkwMDQ0YzdkOTRkYWUyZDY4MTZkZGUwNTkgbGVnYWN5LXRydW5rCisyNjgzMyBiZDFjNGI2NWRiNzkxMDRkNDVlZmM3ZmIxZmJmODI0NzkyMTZiYzZkIGxlZ2FjeS10cnVuaworMjY4MzQgYTIxOThmNzJkNWViZWEwMDdmM2RmNWYxZWY1YTdkM2UyNDhjNWYzMiBsZWdhY3ktdHJ1bmsKKzI2ODM1IGJlMGJjNTVlY2Y0YTBmNjE4ZmIwODViODNmNDcxNDQ3NDVjNmZmZmYgbGVnYWN5LXRydW5rCisyNjgzNiAwNzdkNDRiMDQwNWJlNmIyMGNjODUzM2VmY2M2NWMxMjE2YzY3MDFjIGxlZ2FjeS10cnVuaworMjY4MzcgMzQ0YWU1MzFlNmE3M2UyMjcxMTcxNzliZWEwNGFlMzNkNWEyYzliNCBsZWdhY3ktdHJ1bmsKKzI2ODM4IDdjZTAxODgzNzhlZjNhOGQ4Njc2MWE4YmYxNjUxNTBkNzk4OGU2OTAgbGVnYWN5LXRydW5rCisyNjgzOSA1MGE5N2E5NjI5OTg3YTAyY2I3MTM2OTk5ZjMyMDFjNjUzZWJhZjEyIGxlZ2FjeS10cnVuaworMjY4NDAgZDNlMDI1ZWYxZmIyZGY5OGMwODYxYTE5NzlkZDQwMDQ2YzIwZDdkYiBsZWdhY3ktdHJ1bmsKKzI2ODQxIGQzNWI5ZmZmODFlMDliMjVmZTM3YjVkNTllOTNlOWNjZDgzZTM2MjUgbGVnYWN5LXRydW5rCisyNjg0MiA3MzI0OWFiZWQ2ODM3NjBkYjIxOGI2ZDYyZGYyNmZhOGE1ODA5YzA1IGxlZ2FjeS10cnVuaworMjY4NDMgNWQ3M2EyYzdmYWU2M2ZlNjEzMjY2NmJhY2M2YzliNWJlMzNkOTFlNyBsZWdhY3ktdHJ1bmsKKzI2ODQ0IGQ5MTc4NTdmZDMzNGVhOWU4ZDUzOTkwNTRhNWE0MWJjYjcwMTJhZmMgbGVnYWN5LXRydW5rCisyNjg0NSA1YmQzMGEzNjg5N2IxZTQ3NjBkYzQ3OWQwZjExMWIxOTM4ODVlMmIyIGxlZ2FjeS10cnVuaworMjY4NDYgMTc1NjIxMDZjMmEwNDY2ODJkNzI2ODdiYWYzMjA1MjNiMzBjZGQ3YSBsZWdhY3ktdHJ1bmsKKzI2ODQ3IGNkZDVjNzUxODIzY2Q5Mjg4NWU1YTE3NmZhMTE1ZWY5MTQyNmZkYTkgbGVnYWN5LXRydW5rCisyNjg0OCBjNzZlNWMxYzZlNDU0NWI1NzQwYjQ0M2I2YzkxYWZmODU3MmRiYjk4IGxlZ2FjeS10cnVuaworMjY4NDkgYmI1NzkwYzZjZGFhMTQ3Mzc0NWViYWUyNjUxYWI5YzBjMDA5OTAyNyBsZWdhY3ktdHJ1bmsKKzI2ODUwIDliMWUzYjdiZDdmMTI0MjY5YmMzNjhiOTNjMjk2NDM3NzFlYWE4N2QgbGVnYWN5LXRydW5rCisyNjg1MSBiZTY1MzZmMmViZWZiMTYzMzIyNWJiYTY2YjM2MzAxMzdmYTE4NjMzIHJlbGVhc2UyMi1tYWludAorMjY4NTIgMjY3YWU1OWVkZGI0YzRiNWU1NmIxNTY4ZThjNWQ4YTRlZGYwZGVjOCBsZWdhY3ktdHJ1bmsKKzI2ODUzIDY4NGVkZDE2YmJkODFmYzQ4N2IyY2YzODA2YjQwZTJmNWE5MTYxYzYgbGVnYWN5LXRydW5rCisyNjg1NCA4NjczYzJlZGYyMWNiZTQwNGE1NzFjZGI0MzJlMDJhZjMwYTBmY2I0IGxlZ2FjeS10cnVuaworMjY4NTUgYmRhOThiYWM2OTU2MDFjMmJiZGM0N2UyNmUzNWIzOTQzYTY0YjlhNSByZWxlYXNlMjItbWFpbnQKKzI2ODU2IDBjNDJjZWU0NzVkZmYzNWQ2MmIxMTNjNGY0NWJmY2NhZTRhZmI0YzYgcmVsZWFzZTIxLW1haW50CisyNjg1NyA3NmYzNzZiZWE1ZTVhOWE5MTg4NTM2ZDExZDVjNzUxNmM4YzA5ZWU5IGxlZ2FjeS10cnVuaworMjY4NTggNjhlM2YzZGQ0ZDQ4ODQ5MTlkOTVkYzA4ZDQyOTJiZjEzYjU5OWJmMCBsZWdhY3ktdHJ1bmsKKzI2ODU5IGY0MzE4ODg1Y2U5YTYzMjg4YjEwMDllYTA5N2M5YzFmMGNkNjkyOGMgbGVnYWN5LXRydW5rCisyNjg2MCA5ODlhN2FkZjg0ZWZiMzU3YzUxNzVkY2NjMTg0NGRmZjRjZGIxNmI1IGxlZ2FjeS10cnVuaworMjY4NjEgODU2MTVlYTY1YjFiZjgwYWY5NjVjNjc4Njg3NDA2NGQ2ZTViODdmMyBsZWdhY3ktdHJ1bmsKKzI2ODYyIGRiYTRmNTE3NjQ5MmY0NTQxZTU2YjRjZDMwYTMxMjVlYzRiNzI4ZGQgbGVnYWN5LXRydW5rCisyNjg2MyBhZDkwNGRiNzM0NGE5Zjk0MWVhMGZmYTJhMzg1MWNmOWQ2OGJjOGY3IGxlZ2FjeS10cnVuaworMjY4NjQgNjI2ODhkNmFjMzg3OWMwY2Q3ZTVlNGMzM2IwNGVhMzYyZDRlNjcxYiBsZWdhY3ktdHJ1bmsKKzI2ODY1IGRjM2E3Zjk4ZDRlZDEyZjNlODYyYmI1MjJiYWEwMjRhYzExZTdjMjkgbGVnYWN5LXRydW5rCisyNjg2NiA2MzFmOTI4NjY3MzI5YmI2YzZkMjhhZGQxYWZmOWIzMDg2MTRjM2M1IGxlZ2FjeS10cnVuaworMjY4NjcgMTcyYjYyNTBkNTI2MDNiZjc3NThlMzM0YzI3ZGZiMmU2NzY4NWQ0NiBsZWdhY3ktdHJ1bmsKKzI2ODY4IDc2ZWY0Yjk0MmIxMzFiZDg4M2NlMWI1N2M2ZjZiMzAzYjc4M2RmZDkgbGVnYWN5LXRydW5rCisyNjg3MCA3YWI4YzM4MTE3MjM5NzE0ZWU2NWQ5NzI5ODJiY2JkNTI3MDNkOTk2IHJlbGVhc2UyMi1tYWludAorMjY4NzEgYzQ0YjIxZmNkMzhhZDMyZTY3ODUzNGI5YmFmNGY1ZTcyNTFkNjMzMSBsZWdhY3ktdHJ1bmsKKzI2ODcyIGIxZDg2ODM1MjFlYzRmMzc0ZmE5MmE3NzRhYzI5ZWFlODRjNWJlZTAgbGVnYWN5LXRydW5rCisyNjg3MyBmYmEwNTM0N2JiMzBhZDdhYTI2Y2E2YmVhYWI1YmIwYzliYjhmNTBhIGxlZ2FjeS10cnVuaworMjY4NzQgODIzMDljNzMyNWVmZTM2ODZjODFhMDg5NjZmYmQ4YmExNzE4NDU5MSBsZWdhY3ktdHJ1bmsKKzI2ODc1IDdiYzMxYWQ5NDc3Y2Y1ZjY1ZTAyNjY3NDQ2YThmOGU2M2UzNzBmN2QgbGVnYWN5LXRydW5rCisyNjg3NiAyNjc1YjE1OGJmNjc3ZGZkOTMwOWU5ZmI0MjZjNDJlZDViM2U5MjI3IGxlZ2FjeS10cnVuaworMjY4NzcgMzVmMDFiZjM0ZDYwNDM3NmU5MzQyNGVkZTdlODZiNTVlNzhhZjg5OSBsZWdhY3ktdHJ1bmsKKzI2ODc4IDllZWE1ZWRkODU3ZjZhZTRlM2MxMzliMDNjN2Q1NjVlNjdiMTAxNzggbGVnYWN5LXRydW5rCisyNjg3OSBiMzg5OGQzMjY1MTllZTIzOTA2NDZiODU2ODRlN2ZhNjczYjNmNjg5IGxlZ2FjeS10cnVuaworMjY4ODAgYmZlYTE0ZjhmZjM1M2M1ZmYyODAxNWNiMDFiYmM0ZTQ1YWMzNmI2NyBsZWdhY3ktdHJ1bmsKKzI2ODgxIDczYzAxYjFjYmRiMmMwMTYxZTMxZDNkMjRjNWMwNjkxYjRlOGMxMTUgbGVnYWN5LXRydW5rCisyNjg4MiBjMDNlODg5OWQ0YjE5MDQ0MmZkNzcxNzZhZjY5OGM5ZjE2NWFiZjFhIGxlZ2FjeS10cnVuaworMjY4ODMgMDAxNDM4N2ZkNjA0NGQxMTI1NDAzYmZlMjU3ZDA0MmQ5Y2FjMGM0OCBsZWdhY3ktdHJ1bmsKKzI2ODg0IGI4NzI4ZDU4ZTljMzMzZWIwZTg1Njg2MjBiZGViNDMwMzJiZGZkYzUgcmVsZWFzZTIyLW1haW50CisyNjg4NSBhOTBmYWE1Zjk0MTcxYzcwNzExNTNhNzEzOWZjMDNhNjY5YzRhYWI1IGxlZ2FjeS10cnVuaworMjY4ODYgMmFmZjEyZTJhOTRmNWM5ZGUzNTY5NzExN2FmYzEyZjExNzg0MGQwZiBsZWdhY3ktdHJ1bmsKKzI2ODg3IGI2MDJmMjI5MWI1ZmQzZmU0ODdlODViNzAwYWEwYmE1YjAyZTRmYmUgbGVnYWN5LXRydW5rCisyNjg4OCAwZTE3NzFmYzAxMmYyNmRkNzNjNDhhNGY1Zjc4M2YxZWQyYTIyYjY3IGxlZ2FjeS10cnVuaworMjY4ODkgYzc5YjFlNTU1MmU4NDk1OWFmMjRlYWM4OTEwNTFjYjc4YTRlODY1NSBsZWdhY3ktdHJ1bmsKKzI2ODkwIDk4ODI3YTlkNjJjMzJlYWM2Yjk2MThlYjgzNDhmZjM1NGY4NzNlN2YgbGVnYWN5LXRydW5rCisyNjg5MSBiMjFiNjk2NTg2NjI4OWIwZDMzOTEwZmMxNjQ4NTJmN2E0YmE3OTAzIGxlZ2FjeS10cnVuaworMjY4OTIgOGE0OWExM2ZiMjhkZjcwZTMzNDdiNzNiNzdlZTBjOGY1NGM5YWM1YSBsZWdhY3ktdHJ1bmsKKzI2ODkzIGNlY2EyODE2NzgwMDhhM2QxMzRkZDEzNWVmYjYwNWZjMmJiZDJiODcgcmVsZWFzZTIyLW1haW50CisyNjg5NCBlY2VmNjVlNTdjYzZiZDk5YjRmY2UwMmY5MWRhOGYwYjgyNzcxMDFhIGxlZ2FjeS10cnVuaworMjY4OTUgYTk4ZTkzZWFmZWY3ZTAzZWUwYzMzYTNmMGYzNTZiOTRlMmMyOWJjMyBsZWdhY3ktdHJ1bmsKKzI2ODk2IDI2MDBjZjdkMzNhZjgyM2NiNmI5NDNjMmY1NmNkZDVjY2NiMzllNWUgbGVnYWN5LXRydW5rCisyNjg5NyBhNGVmYjU5Zjg3NjcxODMyNTQwZDM2M2QzZGNkNjFmOGJiN2E1ODBlIGxlZ2FjeS10cnVuaworMjY4OTggNzBiNWUxMTFjY2IwOTAyZjcyMGI2MTllMGMxNzRlNzJkMjlhY2UzNyBsZWdhY3ktdHJ1bmsKKzI2ODk5IDhkOTQ2YzkzMzllODIxMDFlYmFiN2VhNzE4MzkyZWExYTNkMTZjOGEgbGVnYWN5LXRydW5rCisyNjkwMCAwYTRjOTI1NTlhMGI0MTY2NGYyMWFjMDRlNzJjNTExZGQzNDQyNTdjIGxlZ2FjeS10cnVuaworMjY5MDEgZmE4ZmUyZTk4MDYyNWFlNjhiYjVkM2Y0M2M0N2U5Y2YwNWEyNjY4ZiBsZWdhY3ktdHJ1bmsKKzI2OTAyIDllNjdhMGQ1NzA1ZmJhYjlmYjZhYWYzYWMyNjk2YmNmODcxNzI0MDMgbGVnYWN5LXRydW5rCisyNjkwMyBiNDkwZmYxNzA2ZDk2NDYyZjMyOWQ5MTRmMTE3M2EyNTkxYTRmZGFlIGxlZ2FjeS10cnVuaworMjY5MDQgYmQ1ODk0NmFhNTIxYjJlY2Y3ZWU0ZjU1ZDM5ODEyMmY3MWEzZTQ2NiBsZWdhY3ktdHJ1bmsKKzI2OTA1IGY2ZGVkNmVmYWJjZjMwOTAyNjBiM2VkOTIxNzBlNzJjMjM5MGNkNTQgbGVnYWN5LXRydW5rCisyNjkwNiAyMjBiOThmMDY0MTU2NGEwNTk3YjQ2ODRjM2I3YjJkMTEyNTA1Yjg5IGxlZ2FjeS10cnVuaworMjY5MDcgNDBhMDMxMTU1ODk3ZjliZWI3MmZmN2QwYThmM2UyNjkxY2ZiYzFlNSBsZWdhY3ktdHJ1bmsKKzI2OTA4IDFiZjM0ZjQzOTRjNTE3ZTQzNDQ2MDEzMjU4NzM0YTBiZjY0OTkwMDMgbGVnYWN5LXRydW5rCisyNjkwOSBjZTFkYTJmOTc4MDc2ZTRjNjliMjljNDE4NzFhOGRmYTExNWIzZmVjIHJlbGVhc2UyMi1tYWludAorMjY5MTAgODg5MDM4NTNmMTgwZWU2YmIyZTBjMWU4MDg3Y2JkMjg4YjAyNDI0ZiBsZWdhY3ktdHJ1bmsKKzI2OTExIGI3NGFmZGQwNzJlYjBhMTg5OWZjZDRmMTY2NWY4YTgyMGZhOGI5YTEgbGVnYWN5LXRydW5rCisyNjkxMiAzMDNkODFlMTVlNzBjM2EyNDI3YTcyYWU2ODJlZjA3Njk1YmMyOGY3IGxlZ2FjeS10cnVuaworMjY5MTMgNDQ2YjJmMmMwMWQ4YWFjYTMyNTdhYjNjMWMyYzEzODUzZjQ4YWY0YyBsZWdhY3ktdHJ1bmsKKzI2OTE0IGIzYzUwZjY5ZjM4YmYyMzhiZGQ1NjBmN2QxYWU1ODhlNThhM2QyNTAgbGVnYWN5LXRydW5rCisyNjkxNSBhNjcyNDhmZDIzNzAxMGY4MmE1NzM0ZjllN2YxODkxMTI1YjlkZmQwIGxlZ2FjeS10cnVuaworMjY5MTYgM2IyYTdlZTA4NjY3NjFkZDg0MDNkZTg3ZThkNTU0NmI4MjA1NzQ4YyBsZWdhY3ktdHJ1bmsKKzI2OTE3IDNhZWNkYmE0NTUyODVhMGU2ZGI0NzQ0ZmM0YjQ3YWEzYjg3ZGJiNzcgbGVnYWN5LXRydW5rCisyNjkxOCBlNTI0MmY1OGE1YjZmOTBkODZkY2RhNzMwMjQxMDE0ZDQzYzliYzExIGxlZ2FjeS10cnVuaworMjY5MTkgYzRmYTM3Zjg5NzgzOTkzMjFlNDg2NjJhOTk0NjBlM2I3N2E3NDM1ZiBsZWdhY3ktdHJ1bmsKKzI2OTIwIGZlY2NlMDE3MzI1NGY3ZWEyZGNlYTJhYTgzNzUwMjBmOTFmNzNkYzcgbGVnYWN5LXRydW5rCisyNjkyMSBhMzk5ZDhiMTNjMmY0NThiNDk1MTBhZDgwNTQ2ZjdlMmZhNTViNzBhIGxlZ2FjeS10cnVuaworMjY5MjIgNWQwOTU4OThkYWU2NTliZmQxYWZjN2RmYWJkNTQyOGQ0Mjk1OTliNSByZWxlYXNlMjItbWFpbnQKKzI2OTIzIDUzYzYxNDI4OGVhYjk0ZjZiMGVkZjhhNDU3MDg0YzRhZmE1NDE3MGEgcmVsZWFzZTIxLW1haW50CisyNjkyNCAzYTQ3OTM1NzVlY2Q3ZWY2OGNlZGFlZTI1N2UwOWViOTY2OTk5NjBjIGxlZ2FjeS10cnVuaworMjY5MjUgYzVlOGY4OWZkMzU4NjhkNTFmYzI2NWM0OWE1NDAxZTA0MWE2NmY2MCBsZWdhY3ktdHJ1bmsKKzI2OTI2IGVhY2E2MjdmMmE1NDZjZThlOGZjNTQyZTZmOWI3MjJlZGFjZGYzNDggbGVnYWN5LXRydW5rCisyNjkyNyA1MDg5NjVjZTVlNDcyZjk2ZDkyNmFjNzEyZTBiMjdhYmE0NThjZjFhIGxlZ2FjeS10cnVuaworMjY5MjggM2YyNDJjZGQwOTA0ZWUxMTVjNWY0NjVlNTBiY2ZjZmExMDFhOGMxYiBsZWdhY3ktdHJ1bmsKKzI2OTI5IDFhNjdmYmM3YTA2NjgyMzFiOThlNDkyOTlkNDRkYWIxYThkNzdkM2QgbGVnYWN5LXRydW5rCisyNjkzMCBjYWY2MmVlZjc3MjNlNGM4Nzg0NGZkN2E2MGE1ZDNkNDNiN2EzOGRjIGxlZ2FjeS10cnVuaworMjY5MzEgM2Q4M2ZhYmVmMGE0MGVlNWQxZjBkY2M0OWI3NmEzM2VjMTJlZGVmYSBsZWdhY3ktdHJ1bmsKKzI2OTMyIGFlMGEzYjE0ZDJlOGJlNzgwMTRmZWQ1M2M4ZGUyZGRiYmMwZjRlMzIgbGVnYWN5LXRydW5rCisyNjkzMyBkYzI2MjNlMDI0M2UyOGJmNzdmYWU5Y2VmNTA4MjViMmUxNjE2YzBmIHJlbGVhc2UyMi1tYWludAorMjY5MzQgYjZjMzJiZWI0ZGJjYzljODAyOTA5ZjM3Y2IyNWZhODQ4YTBmMjkwOSBsZWdhY3ktdHJ1bmsKKzI2OTM1IGQ1YWU2ZjcxNGNkNTFjYzdkMmFmOTcyNDYwZmNiZjAwYjFlYzBhNDAgbGVnYWN5LXRydW5rCisyNjkzNiA0ZDg4NGFkODBkZGE1NTRlOTllODc4ODUxMDJjMzQ0ZTEyY2RjNWViIGxlZ2FjeS10cnVuaworMjY5MzcgMGFjNjUzZjQ2OWYwNzBkNDRiYTVhYmI5YmI2NTY2NTQwZmE3MDJhNSByZWxlYXNlMjItbWFpbnQKKzI2OTM4IDY2OGM1Y2E0ZTBkNDhjNjE3MmE1Y2FjMTJhNjkyMWQxNmExNDEzNWQgcmVsZWFzZTIyLW1haW50CisyNjkzOSA5OWRmMjU3MTQyZjY0MzhkYTdlMWM1MTI0YTFlMjM1ZTliMjljZDcwIHJlbGVhc2UyMi1tYWludAorMjY5NDAgN2Q0YzVlNGEwY2NjMjZmOTk4NTBhZTYzY2MyNDc3ZjdhODJhNDMxYyByZWxlYXNlMjItbWFpbnQKKzI2OTQxIDhmN2I3OWNkYTBkMzIxZDdlODNlYWQ2MzUxNjBjZjdmYjBjMzY2YjAgcmVsZWFzZTIyLW1haW50CisyNjk0MiBjMzY3NjA3YmI1ZjdkMjA0ODk4NjViMGE0ODBlMWQ2ZTEyZTQ5YjdiIGxlZ2FjeS10cnVuaworMjY5NDMgNGUzZWE1NWY3ZTExOGNhNmUyN2I4ZTg1YTdkZTIyMzc4MDhhNGIyNyBsZWdhY3ktdHJ1bmsKKzI2OTQ0IDdkYmE4MGQ1OGZmZDY2NDQzNjg5MDljNmYzODY2YzhjMDM4ZGI1YmYgbGVnYWN5LXRydW5rCisyNjk0NSBiZWI1MjcxNThjYmNkZTcyYzE5ODU3ZjQzODA3MmQzMzUxNzMyMDY4IGxlZ2FjeS10cnVuaworMjY5NDYgMTkwYjZiYzE5MTJhNWQ1ZDYyZDc5YmM5OGU1YTYyZjE3NjYwMGE4ZCBsZWdhY3ktdHJ1bmsKKzI2OTQ3IDA2MDJjN2U2Yjk0ZDcyMTNhNGVkMjc3NmFlMGNjOTA2MmMxYTJhMTYgbGVnYWN5LXRydW5rCisyNjk0OCBjNmFmNTc0YmRhMjkyOGYxY2RkMThmMzYzZDkzYzk4N2RmNTMwMGI0IGxlZ2FjeS10cnVuaworMjY5NDkgMGU4MzcwZTcwODg4NjNjZDNkMTU1YTAyNzY3YTZlOGRkMzY1MTJhNSBsZWdhY3ktdHJ1bmsKKzI2OTUwIGZiYTU3ZTQwZjU0N2QwYmQ2Mzk4MWRlYWY1MTkwNDkyYWQ5NGFmM2YgbGVnYWN5LXRydW5rCisyNjk1MSBmMTI0OTExNzE2Mzg2MDM4MjFiOGI4MjZiYzUzYzAxZjMzOGViYWM1IGxlZ2FjeS10cnVuaworMjY5NTIgYWI5NGVjNGFmOThhOTM0ZjZkOWM3ZmU2NGIwMThlMzA4MzUwMTM3ZCBsZWdhY3ktdHJ1bmsKKzI2OTUzIGIwNjU4ZmVlZjkzOWUxNmMyNGExNjViMjI2NjAzNmVlNjFhZGY4ZjggbGVnYWN5LXRydW5rCisyNjk1NCBhNGJiMTgyMTJiNDgwZWI5M2QxYmI3NThhODNkNTJkYjUyOTAzODQyIGxlZ2FjeS10cnVuaworMjY5NTUgYWNiZThlN2Y5OWQ5M2I3ZmYzNGRjMmRmYmU4MjA2NjU0ZmUxYWFhZSBsZWdhY3ktdHJ1bmsKKzI2OTU2IGQ2N2YxZTNhOWYxYWJmNThmMmIzYWUyZGQzM2IzYmEyZThlYzFjMzQgbGVnYWN5LXRydW5rCisyNjk1NyBjODQ0ZmNjM2M5NTIzZmZhN2M3YjM2ODMxNmQwYTFiYjgzYmZkMGZiIGxlZ2FjeS10cnVuaworMjY5NTggYzNhNjdjZTU4MjQ1ZjQyNTRhMDk0Yzg3ZjVmNzQ1OGYyNDczZmMyNCBsZWdhY3ktdHJ1bmsKKzI2OTU5IDQzODBhN2FhMThkYzZjZGVjOGQ4ODk0NThjNWYzZWI5OTdkMWFjYmQgbGVnYWN5LXRydW5rCisyNjk2MCBjMmJjMmVkMTQ1ZjcyN2M1YzFiNDM2YjA5NDQxY2YzZDdmZDg1MjBjIHJlbGVhc2UyMi1tYWludAorMjY5NjEgZWQwMDdlNDdiM2ExMzk5ODkwYjIyYWIxYWYwZTc0ZjI5NzMyYWM1MyBsZWdhY3ktdHJ1bmsKKzI2OTYyIDJiMWQ2MTc4MWQ2Mzc0ODk3MTMyN2I2ZGUwOTFkOWVlMmE2OGQ5ZjAgbGVnYWN5LXRydW5rCisyNjk2MyAxOTdmYjMwNWZjNWNjY2ZjODIzNDJjZDQ3MjEwMzAzYjI5YmMwYzcwIGxlZ2FjeS10cnVuaworMjY5NjQgOTBlZTU1YjlkNzJhZDFjMzdjNzkwYzI5YjAxNWYyYTUwYTZjODM1NyBsZWdhY3ktdHJ1bmsKKzI2OTY1IDdlNDAwNTgzNzU1ZmY0ODA2Y2RkY2UwZDQ1YzMyZjhiZWE3ODM0YjQgbGVnYWN5LXRydW5rCisyNjk2NiBkYmFiYjFmN2VkM2E0NGNiNzhkYjdkNWFhODg3NWE2N2QyODM2OTBkIGxlZ2FjeS10cnVuaworMjY5NjcgY2ZmZDA5MWY1NmQwZWYwNWFhYWFmOGU1ZjdkZGQ1ZWExOTUwMjJiNCBsZWdhY3ktdHJ1bmsKKzI2OTY4IGVmOGQ0NTYwNjdmZDI4Yzc2Mjg1YTI3OWI1MTE3MjYxMTM3NDU1ZDkgcmVsZWFzZTIyLW1haW50CisyNjk2OSA3MTIwNjIwZjQzMmJkMDkwYTYxZWY4MDhhYTAxZGQwYjUyMzY2MGU4IHJlbGVhc2UyMS1tYWludAorMjY5NzAgNWVkZWE3NTJhNDIxOWRjMmFkOTU4ZDZiZThkZGI4NWQwMDUzM2E2NiBsZWdhY3ktdHJ1bmsKKzI2OTcxIGE2OGZhYTI2ODUzY2U3MzlhZWVhMWMwMDc4MDY1MzUzYzYxZjdmZTUgbGVnYWN5LXRydW5rCisyNjk3MiBlYzI3YWMxOWY5ZTNjMWM5ZjA5ODNjMGI1NGYxNzhiYjI3MTE5ODQyIGxlZ2FjeS10cnVuaworMjY5NzMgNDU2ZDU4NDUxZmVlYTc0N2NlMTFlODdiMTkwODVjY2UyMWYzNjg4YSBsZWdhY3ktdHJ1bmsKKzI2OTc0IDBhMjgxOGNjMzQyY2U0ZDQyMTZjZjY5MWU2Mzc0MjJhN2ZkNWVmMGMgbGVnYWN5LXRydW5rCisyNjk3NSAyMWIxZDc0MmU0YTcwMDljZGEwNjUxZGQ2ZjhmYTZhNmEzMjA0MWZhIGxlZ2FjeS10cnVuaworMjY5NzYgM2NhZWUyOTU4Mzg3Y2Q5MmYzZGU0NjBiM2IyZGY5YTYxY2FkZjE1YSBsZWdhY3ktdHJ1bmsKKzI2OTc3IDRhMWY1YmQ0ODZmZjlmODBlYmJlZmIxMTcxZDE1YWY4YzEzNDQyZTggbGVnYWN5LXRydW5rCisyNjk3OCBmNGVhYjI2OGU2MTdlOTA0OTI2MWZiNDhkZTEzMWJmNmI2MzkxYjE3IGxlZ2FjeS10cnVuaworMjY5NzkgYTY3MTVhZDQxNmU1ZGEyZWVmMGQwZmFiM2UxOGE4MjlmN2E2MmUwOSBsZWdhY3ktdHJ1bmsKKzI2OTgwIDlkYTg1ODM3ZmYyNTA4NGIzZTM4OGEyM2Q3MDhmNmJlMDQxNGM3MzMgbGVnYWN5LXRydW5rCisyNjk4MSAzZTNiM2MxNzcwYWMxMWI1OWZjY2Q1OTMxNzFlNmI5MDA1MWY2MWEzIGxlZ2FjeS10cnVuaworMjY5ODIgNTQ0ODNiYzIxODcxZWY4NWJjN2EzMmM4ZDMzZDc2MWZiOWQ5NzQ2YSBsZWdhY3ktdHJ1bmsKKzI2OTgzIDkyNjI2ZTVhYjA2NzM1NGRkMWI5ZGIxMmE3M2RlOWUxZTg2Y2FlZmYgbGVnYWN5LXRydW5rCisyNjk4NCBhMWRlMGJhYjU0NzUwOTNmOTA1YTIyNWY2YTI2MzMwMDQ1Y2MxYmZjIGxlZ2FjeS10cnVuaworMjY5ODUgODdmNDAzNzdjZjU0MzhiNTEwNjE5ZGJjNzgzZDQ5MTgxMWUzMzIyZSBsZWdhY3ktdHJ1bmsKKzI2OTg2IDVlZGQ4MDcyNmQ5NjZmZGEyZTkwZGQ1YmZlNGIyN2M0YjNiMmU1YTUgbGVnYWN5LXRydW5rCisyNjk4NyBjMDBmZWJiZTA5Mjk1ZTMwMGQxODE2NzY2NTA1NzgyMzUwZGNkY2QxIHJlbGVhc2UyMi1tYWludAorMjY5ODggYWVkMzljYWY5ODYwZGQ2MDhiYjJjODRmODFlMzU3N2NmYjU1MjJmOSByZWxlYXNlMjEtbWFpbnQKKzI2OTg5IDY1Y2Y0Nzg5NTBmZjVjM2E4ODFhNWViZGRhODc1MzM5NmFiZTU3ZWEgbGVnYWN5LXRydW5rCisyNjk5MCA2M2QxNDE0MWRkMTBkMDI1NWNjZmI2YzBjNGM3Nzc2YTIzY2FlODNkIGxlZ2FjeS10cnVuaworMjY5OTEgYTZhNzY1YzdkMzNiNGQ3MWE3NjNiOTZhMGQ2ZmFmZDMxZWIwNmE4NiBsZWdhY3ktdHJ1bmsKKzI2OTkyIGVhOTc5YzUyMDZiN2U2Yjg3NTVkOTA3MTQxZDM3OTQzNGE3YmViNjQgbGVnYWN5LXRydW5rCisyNjk5MyA0YTRkMTIwYjJiMGUwOWE4ZjU2YjA1MzJjODgzMjU3YjU5ZDViY2ZmIHJlbGVhc2UyMi1tYWludAorMjY5OTQgYWZlOTQ2OTE4MjY3YTFjNTA2M2QxMjE2NzMxMDBmNTJlZGY2MzY4NCBsZWdhY3ktdHJ1bmsKKzI2OTk1IDFhNTIxNjIzNTYwMjhkNGYzZjRiYzc5ZWZjOTA0ZjQyZTg5Zjg1OTIgbGVnYWN5LXRydW5rCisyNjk5NiAxMTY2MDEzZmFiNzc5NTM2ZjY1NTMzYTZhNDE4OTE1MGVmMzE1ODRlIGxlZ2FjeS10cnVuaworMjY5OTcgMGVlOGVmN2NhMDljNjMyZTM3MjJhNGRhNmZlNmQwOWYyYTE1YmViYSByZWxlYXNlMjItbWFpbnQKKzI2OTk4IGRiZWUyZjYyOGE5MDY3MjJmYzQzMGUwZTM0MmM4Mjk1YzhhMWFkMGUgbGVnYWN5LXRydW5rCisyNjk5OSAxZTYwYjVkNDE0MTdiMTM4NGEwOTc4ZTQ4YmViN2UzN2Y1MjUwZGEyIGxlZ2FjeS10cnVuaworMjcwMDAgODU1MWU2NDI3MjdjMjM1ZTE1NzMyOWMzYjlkY2VkNjcyMzdiZWRmOCBsZWdhY3ktdHJ1bmsKKzI3MDAxIDBiN2ZlMGZhOWRjNmIxYzNhOWU4MmZkNDAxMWNkNGExMDc1ZDMyNzQgbGVnYWN5LXRydW5rCisyNzAwMiA4YzIxNWRkZmQzZDFhMTg1Y2ZjYjVmYmRiMWIxOWM3NjNiMjE4NDhhIGxlZ2FjeS10cnVuaworMjcwMDMgOTQwZmVmMzI0ZWJjYjVmOGMzMTM0NjFlN2MzODE1MDNmMjEyZDFlZSBsZWdhY3ktdHJ1bmsKKzI3MDA0IGEyNTA4MGY2OTAxZmU2YzhlOTMzYjZjNDM4ZDhjMGYwYmNlMzJiNWEgbGVnYWN5LXRydW5rCisyNzAwNSAwNGE0YTBlNzFhOGRjZjcwMWM4ODc0ZjA5MzU1OGNiMjhlOTU2MDMwIGxlZ2FjeS10cnVuaworMjcwMDYgYzY0NjNhZmQ5ZjA4NjBiODQzYmFlZjAxZTIwYzk1M2JiODJhZWFmZSBsZWdhY3ktdHJ1bmsKKzI3MDA3IDcwZDc2ODMzNTUwYjBkOTM1OTU4OTQ1ODA4ZmQ5NjRhNmQyNDVkZmIgbGVnYWN5LXRydW5rCisyNzAwOSAzZWJkMzc2YWE0Y2I2Yjc5NzUyNTFhOTFmMDlkYTM3YjM1ZmQzM2I0IGxlZ2FjeS10cnVuaworMjcwMTAgZTFlOTBiMGYxZjQ1MDBiYjU1Y2JlMzAyOTg4NjAzYzFjZWJjODYzOCBsZWdhY3ktdHJ1bmsKKzI3MDExIDIyMGVkN2ZlYmIwMDE5Y2E2ZmE2NzZlZmY5ZmNmYTU3NDJiZWU3N2IgbGVnYWN5LXRydW5rCisyNzAxMiBlYzg5NDllNGU0NmQ3ODI0NjI1ZDA2ZmVlYjJmMzBiZTNjYWNlYjk4IGxlZ2FjeS10cnVuaworMjcwMTMgYjk0YWNjMTg3NDBlN2U2ODYyZWE3NGYyM2NmN2VlOWVjYTNmNDc3MSBsZWdhY3ktdHJ1bmsKKzI3MDE0IGI5MjE4ZWZhZThmNTVjOGZiYmFhZTI2MjBmOTg2YzllNTI2OWY2ZTAgbGVnYWN5LXRydW5rCisyNzAxNSBhMzQ1MjMxMjFjZjQ0MTRlOTFjMWNkYWM1ZTQzZjdlZmE2NDhkNTI3IHJlbGVhc2UyMi1tYWludAorMjcwMTYgZjBjYTM5MzVkMDExZGRhNzJmMzhkZTA0YTE0OGYwYzYxZTI1ZDlkOCBsZWdhY3ktdHJ1bmsKKzI3MDE3IGI0MDE2NWE0ZWZlOWFkMmJkYjM2YmIzNmQxMGVjZmQyODViY2NhZjkgbGVnYWN5LXRydW5rCisyNzAxOCBlYjZhMTY1MWNjZGEwMzcyZjY3YzJlZDljYTNhNjA5MzM3YmE1YzM4IGxlZ2FjeS10cnVuaworMjcwMTkgYjg2ZWFlYjBkN2RkNDJhNzdlOWNlYjU2ZmYzYTM2NmZlNWM5ZjNiZCBsZWdhY3ktdHJ1bmsKKzI3MDIwIGVlNzcyZjZlODgxYmIyMzQyMGEzNzdjNmI5MWIxYTZlYWRkMTE0NjkgbGVnYWN5LXRydW5rCisyNzAyMSBiZmRiZTI1YTQ1YjA2ODY4ZjE3N2UwOGU4ZDdlZGM4NDZmMzY3ZDc0IGxlZ2FjeS10cnVuaworMjcwMjIgNWY5NzgxOTZmZDNkMDJmZjE3ZGI4ZDc2MWFmMmY3MDZiOWNjOTVkMiBsZWdhY3ktdHJ1bmsKKzI3MDIzIDk0YWE0ZWI5YmI3ZDk0MmQwNWY0MjJiYzBjYmFhNGE1YzEyZDI3NzAgbGVnYWN5LXRydW5rCisyNzAyNCA1YzVmZmY1ZGUyNTBkNzNiNzBlZjNlMmY1ZWJjMDEwYjJkMjJkMTgwIGxlZ2FjeS10cnVuaworMjcwMjUgMThkNThkZTIwM2Q2ZThkZTMwZGYzY2IzODFiMmFkZGIyNDY0YTM3NyBsZWdhY3ktdHJ1bmsKKzI3MDI2IGI1YzNmMTBjZTYzOTc5ZDY3NjdmMjhhYjIxMmYyMDNkYzRkNDQwMzkgcmVsZWFzZTIyLW1haW50CisyNzAyNyAyN2UyMTIwY2I0NzYzMTNmOTI3YjdmYWY5NGQyNmFkYWE4MTgxYzhiIGxlZ2FjeS10cnVuaworMjcwMjggZTQxOTA2NmY0MDhmMmQ0MmU3YTcwNTcwMmQwMzRhMTZjNTYzNDYzNyBsZWdhY3ktdHJ1bmsKKzI3MDI5IDgxMGRjZjlkODFjOThkY2NmYzZjMTE3ZTBjYjYxZjgwYjAxMGYwODkgbGVnYWN5LXRydW5rCisyNzAzMCA2ZGNkNGI2ZWU1ZGE5ZTk0ZDk1OGM5NzBjODU4MjhlN2M3OGFiYWEzIGxlZ2FjeS10cnVuaworMjcwMzEgMmJlY2I1NzkzYWNkMWM5ODZmZDFmNDI4YjdkMzlhZDhjNDg0ZDZiOCBsZWdhY3ktdHJ1bmsKKzI3MDMyIGRjN2Q1YzJkNTg0NWE5YzE2ZDg3YzI1MWUxYTI0MDUyMDVmZmY3ODggbGVnYWN5LXRydW5rCisyNzAzMyBjYTg3MTE5MjU1ZWIxNzdmZTdkNmU0ZGU1ZGI1YTJkMDZjYjMyMDI4IGxlZ2FjeS10cnVuaworMjcwMzQgZTMyMTUyYWZkZTRhYmNjYTg5MjZkN2EzN2ZjNzU4NGE2NzhlYzY5ZSBsZWdhY3ktdHJ1bmsKKzI3MDM1IGMzZGJhOTFhZmE2ZDE0MmUzOWY5YWRmZTNiYWE4M2IyZjFhZjdkOTkgbGVnYWN5LXRydW5rCisyNzAzNiA4ZWZhNTJlMGE4NDQ4NTkzOWEyNGE1NDA5Njc4ZGE5OTEwZjA5NTZiIGxlZ2FjeS10cnVuaworMjcwMzcgZWRjNDIzOTQwY2Q2NjM5ZTQ0YzFmMWI1YThkYzZkYTUxZmE1MzEyYSBsZWdhY3ktdHJ1bmsKKzI3MDM4IGI5MmY4MTkzODg0M2Y5YjZmOTdjZjc1MGRhNTU5YWY2ZTBhM2JjMGMgbGVnYWN5LXRydW5rCisyNzAzOSAyZmNjNmQ0ZTRjZDI2MWYyNjU4NjRhNmI2ZDkxMmY2YWFlZGVkODBlIGxlZ2FjeS10cnVuaworMjcwNDAgZjM1ZTc1MWY1ZmYyNTg0NjYxMzRjNTljMDM1ZTFhNmIzOTBlMGQwOCBsZWdhY3ktdHJ1bmsKKzI3MDQxIDNhMWFjMTFlYmU1MGMzZTIwNmYxNThjZDZkNzZmZjU0MGMxMjg0ZWQgbGVnYWN5LXRydW5rCisyNzA0MiA3MzJiNjkzMTgxNjhjMmM4MTE5MzQwZTM3ZmY1MDcyNGQ1YzEzZjhiIGxlZ2FjeS10cnVuaworMjcwNDMgNWM1OTAyZGU1YTU0MjE0ZjJiZTUwNWQwOTFlYjdmYjA2MTcwMDI5OCBsZWdhY3ktdHJ1bmsKKzI3MDQ0IGIxODM0OGJkY2EwODNlMzNlNWY2M2MzMTA5M2U5Y2E0NWY4OTZlMWYgbGVnYWN5LXRydW5rCisyNzA0NSBmMTU5ZWE5NTVlODBlYTJiZTRhMzJmZWI0MGE3YjUxZjFmZDE2YTQ2IGxlZ2FjeS10cnVuaworMjcwNDYgZTNhODQwZmE1ODRjYjhiZTljNjdjYWYyYjQ5OTk0MjkyMjkwNDcyNyBsZWdhY3ktdHJ1bmsKKzI3MDQ3IGQ1MDdhZDg2MjM0MjMyMzc2Njc5ZDJlNmNiZjg3YWE5ZTAwYjNmMTggbGVnYWN5LXRydW5rCisyNzA0OCA2MTM1OGY4MDBiNjE2OTAyNzlhZDE0Zjg0ZTUxZWRmNGM4MGJiOTZjIGxlZ2FjeS10cnVuaworMjcwNDkgMzI1YmJiNDkzN2M1ZGM5ZjNmNDcyYTUwOTcyNTA1ODNjMGMzOTRkZiBsZWdhY3ktdHJ1bmsKKzI3MDUwIDhhOWEzYWZmMzJmYzU4ZDQxZDg5YTljNTczN2ZmMjlmMjVjYTI2N2YgbGVnYWN5LXRydW5rCisyNzA1MSAxNDkzOGU3NjI3NmExYTY5NjYwYzk5MzcyOWUxNGE3MTg4NTk4Y2UxIGxlZ2FjeS10cnVuaworMjcwNTIgYzRkMmQzMDVmZDk4MmE3ZGNlOTAwZmZiOTdkZTE0NDJkZjRkYjM4YSByZWxlYXNlMjItbWFpbnQKKzI3MDUzIGQ3YmQ3YjczMjlhN2VjZDczOTU4YjcyNDUzODc3MzQxNDcyYTc1NWMgbGVnYWN5LXRydW5rCisyNzA1NCBkNmZhYTEzNzk0OGRlZmNkM2Y0MGM2NDA3OGZkYzRhMDVkZDM4MDUzIGxlZ2FjeS10cnVuaworMjcwNTUgMzk5YWZjZTg2ZWIwZDgwODI2NzBlZjIwMWY3Y2I3MDJlNTc4Njg5ZiBsZWdhY3ktdHJ1bmsKKzI3MDU2IDNiZGZjNDVkOTA5NjhjOWM5OWUzNmE3YjdkNDVjYTdjMzhkNTJjODEgbGVnYWN5LXRydW5rCisyNzA1NyAzYTJhNmFmOTA5OTI4M2JkOTlmNjFlZWNhMDIxODgxZDIyZWZjMmRlIHJlbGVhc2UyMi1tYWludAorMjcwNTggODk4MzE1OGU5ZjExMzQ2ZWNlZmRkMjBlYzE1ZjdkYzE3NWM3YWViMyBsZWdhY3ktdHJ1bmsKKzI3MDU5IDA4MDU3YTk4NzkxMGIzZjk0YTFhNTdiNmIxOTQxZWRiNjdmMmYwMDYgRFNfUlBDX0JSQU5DSAorMjcwNjAgYTU2ZjhjMzBhZjcxYzg5NWFkY2M4ODZhMGY1NjFhZWU4MjdlNWUwNCBEU19SUENfQlJBTkNICisyNzA2MSA4YjlkOTEzMDgyMGVmN2VkODRkMzY0YzI5ODIwZTE2YWIyNmE4NDdiIGxlZ2FjeS10cnVuaworMjcwNjIgNjI2NmYxYmQxYWI5M2VmZGYxNjhiNDRkMjgzNDliM2E3MjBjNGY5ZCBsZWdhY3ktdHJ1bmsKKzI3MDYzIDAxOTlhYTI3NGM3YmZmZGU4NjM0YjdmY2Q5ZTZhMWQxY2Q1ZjEyY2QgbGVnYWN5LXRydW5rCisyNzA2NCBjY2VhZjc4Yjg1ZGM3MmUwMWMxMGVmYzNjNWE0ZDc2ZWViZWMwZjliIERTX1JQQ19CUkFOQ0gKKzI3MDY1IDBmNTcwYmU2NzM2ZWJlMmVmNGNiNmU1OTIwMjg4OGVmYWZkMDkyZTUgRFNfUlBDX0JSQU5DSAorMjcwNjYgYzBlOGMwN2FlMWQ2Y2I1NWUxOGMyZTkzOWU2ZTJlODNkMWE2OWRkYSBsZWdhY3ktdHJ1bmsKKzI3MDY3IDc3MThiMjc0YWQ4YjEyY2QwMmEwZTQ4ZDM5OWNlYTE3ZGFkYmVlYWUgbGVnYWN5LXRydW5rCisyNzA2OCAxOGRkYzAyY2UzNmYzNTgyZTkyMDk0MWE2MWFjMmEwMTUwZTgzM2YzIGxlZ2FjeS10cnVuaworMjcwNjkgNjdiOWY1M2E3ODAxNGNhZGM1MTcwYzE0ZDFjZjFhZjY5NDFlNTE3ZSBsZWdhY3ktdHJ1bmsKKzI3MDcwIDlhNWM0ODU3OTYzMzllZDZhMGYwZTczOWNlY2ZiYjlhN2MzMzBmNGEgbGVnYWN5LXRydW5rCisyNzA3MSBkNGY2ZTJhZGRlNDg0NmMyMDdlMjkxYTE2MmQ4NzMwNGM4M2ZlYzIzIGxlZ2FjeS10cnVuaworMjcwNzIgYWJlMWJiNzZlZTQ0NzQ0OTRiNjYwOWYwYjJjMTRkNzJkMTRmMjMzMyBsZWdhY3ktdHJ1bmsKKzI3MDczIGU0YWRkN2JiNWYxNDhkYjUxY2Q3MGJjYjNhMWRlOWE0NmNjN2NhODkgbGVnYWN5LXRydW5rCisyNzA3NCBmODVmNDUzMWMzYzE2NDQ4OTI2NjAxNzI3ZGJiZGRjOGVmZjAxMDI0IGxlZ2FjeS10cnVuaworMjcwNzUgZTM3ZjFjMGY5YTFlOTM2ZmE3NjM4ZWU3MDFkZmNmZjhlOTAzZjQzYiBsZWdhY3ktdHJ1bmsKKzI3MDc2IDA1OGJkMmQ1MGUzMzM5ZjYxNGRlMGM3OWNjYmRmMDMxOWEwZDFmYWMgcmVsZWFzZTIyLW1haW50CisyNzA3NyA1NmE0ZDNhNTBiNzZiODZkYmQ1MmQ2NWVkMTU5NDkxOThkNWY3NjkxIGxlZ2FjeS10cnVuaworMjcwNzggM2IzNzlhZTM1NjlkOTMxMGM0ZjM1ZDEzNTAxZWI5ODUyM2UyNWRmNCBsZWdhY3ktdHJ1bmsKKzI3MDc5IDQ0Yjk5NzdkNDg0ODdkZWRhNTUyNTEwMjQ5YjZhMTZjMGY2YjE5MzIgbGVnYWN5LXRydW5rCisyNzA4MCA1NjUwMzJiNDhmNTA5YzUzMzM4ZWIyOTJlNTEzMDViNmExM2Q4OGI5IGxlZ2FjeS10cnVuaworMjcwODEgMjhiOTk3MWYwNjhmN2NkNGI0YzRkOTQ4Mzc1NGM4MzhkYzk4NWFiNyByZWxlYXNlMjItbWFpbnQKKzI3MDgyIDJiMTIxOWE3MmVmY2E2ZWM3NjZmYWYxNzg3YmIwNGM3ZjRlODE4OTcgcmVsZWFzZTIyLW1haW50CisyNzA4MyA5NjliZDU5N2Y5MjM4Yzc5NjY2ZWNhMmRlNmMzMDVkMjVmZWNjNDlhIGxlZ2FjeS10cnVuaworMjcwODQgYzI3MzNlOGY2NjEyYjliMjVlYThjNzQ2YjA3NjIyN2NhMTg0MTE3MSBsZWdhY3ktdHJ1bmsKKzI3MDg1IGZjNTM2MWUwMjhmM2Q3ZDZmNzBlNWUwNjY0ODVjZWQwODRmNmQwYzAgbGVnYWN5LXRydW5rCisyNzA4NiA3NzE1NGNlZjI5ZDE5ZjQwZjM1YzhhNjJkMTUyOTFmNTAyYWQ2NDk3IGxlZ2FjeS10cnVuaworMjcwODcgNDQ0OTU0YzU0MzRjMWVmN2Q4MTRmOGYyOGZhZWI0YTZhMjZmY2RhMSBsZWdhY3ktdHJ1bmsKKzI3MDg4IDIzN2NiZDJhOTFlOWJiZmNiMjZlNjMxNTQ4NTliMDk1MDA1YjkyZGQgbGVnYWN5LXRydW5rCisyNzA4OSBiMDYyMDg1YzFmZjJiODBhNjU3MmIzNTMxYmJiNjc3ZjNlZTdmNzNiIGxlZ2FjeS10cnVuaworMjcwOTAgNDhlOTM3ZTFiM2ZlM2QxMGMyNmFhMGQzOTUxOWYzMzZjZTA4ZTQ5YiBsZWdhY3ktdHJ1bmsKKzI3MDkxIDc1YzUxOTk5YzhkNTRmOTVhZDFiNTg4MDEzMWU0YmJkZDg2NDUwZjUgbGVnYWN5LXRydW5rCisyNzA5MiAyZjZmODcwOGUzZTk0NWE3MTY5MmJjOWI3Njk2NGU3NjBjOTcwZjUzIGxlZ2FjeS10cnVuaworMjcwOTMgZGIyMzllYzMwN2UwNzQ3MWMyZThiYTFmMzAwMmVmZTJlMjcwOGVlZCBsZWdhY3ktdHJ1bmsKKzI3MDk0IDEyMzVhOTVmZWRjZDZjYWYyZjRmOTRkNjY3NjBjYjFhMWNlY2NiMDkgbGVnYWN5LXRydW5rCisyNzA5NSAyY2Q2ZWQxYzFiNTgzYmEyNzg3NTA5ODAwMGE2YmFjZmU4MDM2MDk3IGxlZ2FjeS10cnVuaworMjcwOTYgOWQxMWY1MTg2MGRkM2UxZmQzZjNmZmMyYmZkOTVjODgwZmQ4ZWRlOSBsZWdhY3ktdHJ1bmsKKzI3MDk3IDU1NjJhNDk5ZmI3Zjg0NTFjZmU5Y2RkMTU1ZmY1YzVhZjJkOGZmMzAgbGVnYWN5LXRydW5rCisyNzA5OCA1Zjg1Y2FlMjVlMTg1NTQxOWYyZWIzNDIzZTg5NmZhNDBlODIwNDg3IGxlZ2FjeS10cnVuaworMjcwOTkgYWY4ZDQwZTRjMzc3NzMyMDcxYWEyODY5MzQ1NzcwZmQxZTI0OTRmNCBsZWdhY3ktdHJ1bmsKKzI3MTAwIGUwYTkxYzY3Mzg4ZjRmZDBhYTUwZDc2MmI1NjYyMzU0ODNhZDkyYWYgbGVnYWN5LXRydW5rCisyNzEwMSBiZDI2YzEyMDU5MWE1NzhlOWIxNDBjYjUxNmJiMjYzMjliYTljNDI0IGxlZ2FjeS10cnVuaworMjcxMDIgN2VhYWJlNzdkNWNiZDlmN2ZiM2U2YTMwYzQzOGM2ZDJiYmVlOTYxMSBsZWdhY3ktdHJ1bmsKKzI3MTAzIDMwODEyMmI2OTk2ZTQ0ZGMxOGVlOTU4M2M1NGU0NzMzNWEzNjNmNTIgbGVnYWN5LXRydW5rCisyNzEwNCA2NTVmNDg2Mjg0MzY5Y2Q0YzgzNzUzMjkxZTI1NTg3ZGEwZDY2ODllIGxlZ2FjeS10cnVuaworMjcxMDUgMTg0MmRiNmExMzk0ODU0NmMxZDZhYmQ0Y2RmM2Q5ZGQzODlmNTIzZSBsZWdhY3ktdHJ1bmsKKzI3MTA2IGRmMWEyNzVmZjRmMjViNTRhMzU0MmRiOTM1YWZkZDk0ZmJkMzA4MDUgbGVnYWN5LXRydW5rCisyNzEwNyBhNjhkMjQ2NmQ5NGJmNTU0OTIwOGJmYWU0ZGRjZjZmNDA5MDNkNWY4IGxlZ2FjeS10cnVuaworMjcxMDggMjdmNDgzMTRiYTlkMGUxZWMzMzY0ZjY0YTExNjA1YTk0NTI4YTgxMCBsZWdhY3ktdHJ1bmsKKzI3MTA5IGEyMTM2YWU5ZDRmNzZlNzI1MDkwNzQzMjMzYjcyMjYwOGRhOGM1ZmYgbGVnYWN5LXRydW5rCisyNzExMCA2ODk1MjAwZDYyYjE5Y2U5ZDhiNGMxZmUzN2VmYmM2OGQxMzNkN2NiIGxlZ2FjeS10cnVuaworMjcxMTEgZmU3NjliMDcxNTAzNTNmZTIxYzQ3NjM5ZTI3Yzc3OWI1NDQwODM0NCBsZWdhY3ktdHJ1bmsKKzI3MTEyIDJlMWRlZjQxN2VjYjg5N2M5NGVmNzZmMTE4NDAyZjUyNTY0OGRkMmUgbGVnYWN5LXRydW5rCisyNzExMyBlYTAzNTQ5MGY2MjQ1YzI4OTE0ODIxZGJjNDM5MWI0ODI0ZDMyZDU5IGxlZ2FjeS10cnVuaworMjcxMTQgMzg4MzIwMDBmN2U5NDViZTVjNDRhNjc2NjA0ZTUwN2Y2NjRlMjUwYyBsZWdhY3ktdHJ1bmsKKzI3MTE1IDQzZGRjZGNkM2M3MWZlNGVmNzQxMmM2OTQwZDJlNmM2NGI4ZDI1MmQgbGVnYWN5LXRydW5rCisyNzExNiA0ZDU5MzI1NGJhOTM5MjVkZWVkZDAwYWFjZTk3NTYxNGY5ODkxNjMwIGxlZ2FjeS10cnVuaworMjcxMTcgMmQ2N2EwYmE5MDIwZDI4ZTg5MmQ4ZDY1YzNhNGIyMzE3M2UzNDBlNSBsZWdhY3ktdHJ1bmsKKzI3MTE4IDM2Njg3N2VkZDQ4NzYzY2NhOGExNzQ2ZDUzMzM3MGQ5MjMxZDQ3NzUgbGVnYWN5LXRydW5rCisyNzExOSA3YmM0ODAyOWVhYTljYjNkOTBiYmU4MjdkZGY3NjcyZTliNDdlYTQxIGxlZ2FjeS10cnVuaworMjcxMjAgYTE2OGIyZjZkN2RhYWQ2ZjU4MjZlZjllZTk1NjM3OTY3MTg5MGZhZiBsZWdhY3ktdHJ1bmsKKzI3MTIxIDQ3MWE1N2JmMmRhZTE4NWQ0ODBhZTNkOGNiYTA0OTZhMzE1MTlkNGUgbGVnYWN5LXRydW5rCisyNzEyMiA0MTA5N2U5MmY1NjBmOTk5MzRiYjJhY2ZjZDI4MTY0OGNiMWY5MTFlIGxlZ2FjeS10cnVuaworMjcxMjMgMmM4ZWE3ZjlhM2NlZGMzN2ZmMWE2NTM5ZmZiNWQzOTI5MWMwN2E5MCByZWxlYXNlMjItbWFpbnQKKzI3MTI0IDAyNzkwNDBhZTAzY2JhNGQ4OWJlMTBhZDU0MjYzNjUxMzBmNjc3MTggbGVnYWN5LXRydW5rCisyNzEyNSA4ZTVmMjY3OTY2MjAwYjAzMzcyMjczZjc5Y2E0Y2RiMjcyMGZlMjAwIGxlZ2FjeS10cnVuaworMjcxMjYgMDc3MWY5MzgyZDFlMzJkZTg5NTYwYmZlZTUyZmIzMTFlM2ZjNDgyZiBsZWdhY3ktdHJ1bmsKKzI3MTI3IGM3ZTgwNzgxNzE1OTFjY2Q3Y2ViZDdlZjU0NWUxZTE3ZjdhMmJlMWYgcmVsZWFzZTIyLW1haW50CisyNzEyOCA5MTMxNzMwMWRkMDk4Y2EzM2I3ZjIxMDIxYjc1NjY4Zjc1MTFhMzljIGxlZ2FjeS10cnVuaworMjcxMjkgZTY0MGQ4OWI0OTA3NDE1YTA4NDA4NjIwZmYzMjJlZmRjMmY5YTg0NiBsZWdhY3ktdHJ1bmsKKzI3MTMwIDk0ZDBkYzlkNmU0NGVmMTA3NDIzYmU2YjkzMGVmOGJlZDY2YTgwNzQgbGVnYWN5LXRydW5rCisyNzEzMSBiYWRiYzUzMzQ0ODg2MTIyYWE4OTgyNTMxZGNiYWJlZTBhNGViZTBlIGxlZ2FjeS10cnVuaworMjcxMzIgZjE2ZjZkYTRmNWZmZGI2ZDVkZGM3MGEyMTBkY2Q4Mjk2NmEwYzY0YSBsZWdhY3ktdHJ1bmsKKzI3MTMzIGQ1OGZiNTQ0NTExODg4ZTZmYjU5MTg2M2VjODU5ZTY2NjY3YWE5MzggbGVnYWN5LXRydW5rCisyNzEzNCBhN2NlYWRiMDNlZGM5MTc0NTQ0YTU5MmI1NjExNjRmODI2ODFkMjc1IGxlZ2FjeS10cnVuaworMjcxMzUgMWNiY2RkY2EzM2IwMjgzYzM4NDZlODAyYzM5YTNjYmNiY2JkZWNiZCBsZWdhY3ktdHJ1bmsKKzI3MTM2IDVmYjA4ZDgzMmVhYzljOTA4MzdkNGYyM2NmOGZlOWQ1ZGI3MjFlZWQgbGVnYWN5LXRydW5rCisyNzEzNyA0NjgwZWY0ZmU5MGFkNDUzM2QzNGJiNjQ2MDc0OTUzZTJhNzA0OTk2IGxlZ2FjeS10cnVuaworMjcxMzggMzViNjI5MDg1NWZjMWU4NzQzODgzNWZjYTkxNTM3YWE5MDNiYTJkYyByZWxlYXNlMjItbWFpbnQKKzI3MTM5IGY2YjI3MTlmYmYxMTk4OTdlYWQyNTA3MWNmZGMyYWQ1OWQzNWEwYTYgbGVnYWN5LXRydW5rCisyNzE0MCAwNmRiZDA4OThiMzllMjQzZGEzMWQ0N2U3MWFmZDZmMDM4ZDFmMThmIGxlZ2FjeS10cnVuaworMjcxNDEgYTU1MzRmYWU1MTEwMTY4Njc3MjI5MTE3MDAzYzE4MzdjMmRhMGIzMCByZWxlYXNlMjItbWFpbnQKKzI3MTQyIDBjNjVmNDFmZDkyMTllZDhmZDIzYmRjNDZiOTFjNWQzOWI1ZjlmOGUgbGVnYWN5LXRydW5rCisyNzE0MyA1MDA2MzAxNmQwNDY5OWQxMTg2ZmUyOGQxN2VjYTdjNjgxZTE3YzRkIHJlbGVhc2UyMi1tYWludAorMjcxNDQgNWY4NmMyMWJkOWZjODkwNTY1NmEyYTQ0ZjdiN2JmZjQ0OWQzMmMwYSByZWxlYXNlMjEtbWFpbnQKKzI3MTQ1IDcxZGI0MjhmNmUwOGE0NTlhZTRjNDJiMWU4NmU0NWJjOTY3M2EzMzYgbGVnYWN5LXRydW5rCisyNzE0NiBiZWMxYjk0MmUwYmMzY2Q3MWU3NjlhMDE3MjMxMWY1NjkyMzBiYmI4IGxlZ2FjeS10cnVuaworMjcxNDcgMjQ1MjI0ZDFiOGM5MjAxYTJhZTg0M2VlMTIxN2UzYmUzZTc1MTY0NCBsZWdhY3ktdHJ1bmsKKzI3MTQ4IDU1YzkyMjY2OTkxMzEzNDFlMjdmNDhhNGVlODM3YjlmYWM1MTFjNzAgbGVnYWN5LXRydW5rCisyNzE0OSBjN2NkYTYzYTAwN2U0NGY2MTZkMDVhNGIwOTZiZGQ2MzdmOGI1OWE4IGxlZ2FjeS10cnVuaworMjcxNTAgNzMwNDkwZmYyNWVhMzliZDY1MDIxYTllNGVlMGE4ODM2MjhhYzdiZCBsZWdhY3ktdHJ1bmsKKzI3MTUxIDU0ZjZmODkxMzlkYjUzZDkxOGU1NTYxYzc1NTk3M2YyMzA1YTUyNmMgbGVnYWN5LXRydW5rCisyNzE1MiAwZGFiOGJhMWQyOTgwNzlmOWMwNDU5ZTZlMTVlZTVkNmViMmM2YzNiIGxlZ2FjeS10cnVuaworMjcxNTMgMjRiMGY2ZDY5M2UzNGIzN2M1MmRmMDU5MDhlMmI3YzVkZDgzZDZlYSBsZWdhY3ktdHJ1bmsKKzI3MTU0IDdhMzJjMjM1NmU1NjdjZjg5OWEyNjg0NjIzZjU0ZjAwYTViMjE0OTcgbGVnYWN5LXRydW5rCisyNzE1NSBlMGZiZjljNGQ0NmMyZDJiZThkNzg1MzdkZDJmYjRlYjc3NTczYWVkIHJlbGVhc2UyMi1tYWludAorMjcxNTYgOTMyOTc3MDYzN2E4NTg1MjE5NGY2ZWI2OTRkMTQ3NTM5MDJkMjU3NSBsZWdhY3ktdHJ1bmsKKzI3MTU3IDlkYTJkOGMxMzIwOTA5NDgzNThiODYzYjVhMGI3ZTNhMzEwYTBmN2EgcmVsZWFzZTIyLW1haW50CisyNzE1OCBjMDFjMWI0YTgxNzE2ZDFlMjM3ZDQxMGJjM2JlMTk5NjhjNGRjNjQwIGxlZ2FjeS10cnVuaworMjcxNTkgNDg2ZjQwNDVkMTNkZjYwODk2YWVmOWJjMjFkOTYxNmYzNWNmZTk0NyBsZWdhY3ktdHJ1bmsKKzI3MTYwIGNkZTY2MDg3MzljNDJkNDVhMWY2YjA4NTA3Zjc1NTdjNDg5YzQ1MTAgbGVnYWN5LXRydW5rCisyNzE2MSA3ZGQ0MzJlMWRlMjY2NjQwMmVmNmI1OTBmZjMyMDA1OWUyYWM2ZjIwIGxlZ2FjeS10cnVuaworMjcxNjIgN2NkYzUzMWU2YTUwNGEwOWQ3ODM3ZjdmYmJiYTUzYzI5MDYzMGVhZSBsZWdhY3ktdHJ1bmsKKzI3MTYzIDFmMWE2ZjdkZDYwMDE0ZGIwNmNkOGJhZWVkODg5ZTE0NzlhM2Y5NTIgbGVnYWN5LXRydW5rCisyNzE2NCA4MGQ0NTBlNTUyZjY5OWNlNjdhMGY3ODFlN2JhMWM3OGNmOTI2MDhiIGxlZ2FjeS10cnVuaworMjcxNjUgZmNjMzZlZTE5MjRiMzE2ZGE5NzY0NmU4ZTkyMjQ3MzQ1OTdlMGNiZiBsZWdhY3ktdHJ1bmsKKzI3MTY2IGJhMjk0ODVkMDcyMGJlZWE4ZjAxNjU3ZTQyYTJkNWUzY2YyZTg5ODQgbGVnYWN5LXRydW5rCisyNzE2NyAxZGE2ZDY3ZjRhMDVjNWUzMGYzZjU0MmY2YmRhNTJhY2Q0NjE1NTAyIGxlZ2FjeS10cnVuaworMjcxNjggMmFkMTNlZTZkODUwNWMyYzI0MTAwODZjMTk2MDUxZjg1MTg4MzA1NyBsZWdhY3ktdHJ1bmsKKzI3MTY5IGJmMTU1NWE5MjcxMTdkYjE4ZDNlYzYyOTNkYTg5NGFmYThmYzQ2MTcgbGVnYWN5LXRydW5rCisyNzE3MCBiMmIxZjFmZjVjNzFjZGE3YzJkZjc0NThmYzlkZjlmZWJhNmI1NTU1IGxlZ2FjeS10cnVuaworMjcxNzEgNGVjNThjMjcwZjNlYzBjMGM5ZWVmODk4OTUxMzc2NjYzMWJkNDJjYSByZWxlYXNlMjItbWFpbnQKKzI3MTcyIDdlYWQyZDlkZjdmOTY4Y2Q1NGNjY2Y2YjFiNzA2NTdhNzA0NzNmNDQgcmVsZWFzZTIxLW1haW50CisyNzE3MyAwYjEyYWZjNDAxMmE4MDZjYmE0NWU2MzU0NGIwYjc5NWFjODc3ZDczIGxlZ2FjeS10cnVuaworMjcxNzQgMDYwMWVjYzdmNGJmNzM5ZGQzOTc4MjE3YzJjM2YzNDcwY2UwNzdjZiBsZWdhY3ktdHJ1bmsKKzI3MTc1IGM3NGQ4NmRjNDAxNzc0ZGM5OGVlNDA1MTRmYzZjZWQ2Nzk4MmRlYWIgbGVnYWN5LXRydW5rCisyNzE3NiBjYzY1YjViY2ZjMzgzNjliOGQ5YjY1NzZhNDc5YWY2MWMxNjk2NTdjIGxlZ2FjeS10cnVuaworMjcxNzcgNzlkY2Q1N2YyNzJkZWM0OTMzMzM1NmM5MDQ1Yzc2NGY5Njc2NjIwNiByZWxlYXNlMjEtbWFpbnQKKzI3MTc3IGJiNWIzNzA0OTJkNmEzNzY5ZTdlM2FhNTBiZjQ1NzA2YzJkMzQyZmEgcmVsZWFzZTIyLW1haW50CisyNzE3OCAwMWU0YjY5OGZmN2VmZTBiMWYzMjk3YTFiNjljYjdkZGIyNGFjNmE5IGxlZ2FjeS10cnVuaworMjcxNzkgZTNlMDE5YmM0ZTFlY2U0MTQ1ZWUxNzU3NTFjZDZjNmI4NDcwMWM1NSBsZWdhY3ktdHJ1bmsKKzI3MTgwIDg5YTdmYTkxOGMzYjdmNjg5YWY0MzRiZjU3OGIzNmYzNjdiYTRmOWMgbGVnYWN5LXRydW5rCisyNzE4MSBmNmMyNmQwODNiZjZjOGRmMzA4OTNlZTZkYWJmNGZjOTg2MTg2ZjVhIGxlZ2FjeS10cnVuaworMjcxODIgYzdkN2QyMzE5YjNhMWM3YmI1M2IxZGVmMWE2ODdjMTczMGI4MWQzMyBsZWdhY3ktdHJ1bmsKKzI3MTgzIDIwM2QxNDEyYTdlODI2ZDNjMDQyOTYyZWY1ZmIyNTE5ZjUxZjM2Y2MgbGVnYWN5LXRydW5rCisyNzE4NCBlNGQ1NTdkNDZiOTZmZDY1NDIyZGJlMzc2NjVhNDczZGY3MzAzYWQ0IGxlZ2FjeS10cnVuaworMjcxODUgMmQ5N2JjMmJhNTBkMjc4ZDBiZWI2MmY2M2RmNDNlZDA2NjZiNzViMCBsZWdhY3ktdHJ1bmsKKzI3MTg2IDhhMGExNGUzNzI1ZTM3NjNmMTU2Nzc3NmZhYTBiOTcxZTFkZjI5MjAgbGVnYWN5LXRydW5rCisyNzE4NyA0M2Q2NThkYzhkZDM2ZTQ0NzM2ZDNiNTE2YmNlY2M5M2ZkZWYzMTI4IGxlZ2FjeS10cnVuaworMjcxODggMTMwZmZmNDg2ZmE2NGVmODIwMDZkMjcwNTVkMjQ3NjFlNDUwM2I4NSBsZWdhY3ktdHJ1bmsKKzI3MTg5IDMxMjZjNDI2Mjk2MjliNzk1YWMzZGMwNGM2NDdjMTdhZTM3MDk3ZTYgbGVnYWN5LXRydW5rCisyNzE5MCA5OWQyMjcyMzI1MmY1OTA4OTk1ZGQ4NmEzNjU3NmIyNzUyODBiZWUwIGxlZ2FjeS10cnVuaworMjcxOTEgYzQ4YmY1ZGY2MTRhYzA0YTdkMjU1Njg3YTliMGQ3NTUwODY1MjIxYSBsZWdhY3ktdHJ1bmsKKzI3MTkyIDhmZjY5MWRjN2YyOTFkZGQwYzdiNTI2ODdhZGJiNThmZmExN2RjODYgbGVnYWN5LXRydW5rCisyNzE5MyA5ZjAwMDljYTk3YjlhNWMyZDdjODdlZDhkYThkM2MwNTExMmNlZmMwIGxlZ2FjeS10cnVuaworMjcxOTQgYWJjZmE0OTk1MmM0MzI2MjdlNmQxMTRjNmYwMGM4ZjgxOGRjZGVkMyBsZWdhY3ktdHJ1bmsKKzI3MTk1IGQ1ZTg4YzBjOWUwOWVlNTVhYjM4MTU5MDAzZTMzZGE5ZWEyMWY4OTkgcmVsZWFzZTIyLW1haW50CisyNzE5NiA0MWM0ZGRhYjM2ZjJlMjFlMmMxMzc0MjE4ZTJhZTBkZGY2YTUxNjY4IHJlbGVhc2UyMS1tYWludAorMjcxOTcgZTQyNzJhZDFhNjM2OTRhMjBkMWIxNTMyY2ViZTQ0OWFmNzczZjM4MCBsZWdhY3ktdHJ1bmsKKzI3MTk4IGFkZTFkNTYxMDlhODJmOTUwYjU5ODkyMDMwMWQ3NmEzMmIzYmRjOTAgbGVnYWN5LXRydW5rCisyNzE5OSBmNzMwNmFlODY2MmRiNTg4MjBjZmVkYjI4NDY1ZjlkNDk3ZWFkYjUxIGxlZ2FjeS10cnVuaworMjcyMDAgZWQxYmEzN2E0NmI3M2YwYzViMjcxMjQ1NTU0YzJkYzdiZTQ3YTMyZiBsZWdhY3ktdHJ1bmsKKzI3MjAxIDlmMGFkMGViNjFmMDg2Y2NkN2E3ZjJhNjYyZWJlMDhkMzQzZjQwNzkgbGVnYWN5LXRydW5rCisyNzIwMiA4YWUyNmQ5YmUxYjRmYzEzZjRkZjU5MTFiYzE0YThjNTlkNWMxYWFlIGxlZ2FjeS10cnVuaworMjcyMDMgMWNmMWY5ODEyMjE5Nzk4OTQzMzE0ZjEzYWYyNWEwMDgzYmZiYTVhMCBsZWdhY3ktdHJ1bmsKKzI3MjA0IDA2NWE3ZjIzYmUyZmQ0NGFjN2FiMDllNmUzYzc1NDdmODU1NDk0ODcgbGVnYWN5LXRydW5rCisyNzIwNSAzNTlhNTdlOTZkNWViNjNiZGM1NzdlMjJlOGQ2NzBhMzcwM2FkMWJjIGxlZ2FjeS10cnVuaworMjcyMDYgOTUyNjNjY2VjODE5Y2NjNTJmYzFkZWI1ODI0OGNhMzY4ZmRjNWNjMiBsZWdhY3ktdHJ1bmsKKzI3MjA3IGM4ODE1YmQwMWZmNTc4ZTU5YTU2NTQ2MmJhMGQ1NWFhMDkyOTIxMGEgbGVnYWN5LXRydW5rCisyNzIwOCA5MDMxMTJjMWM4ODc2MDg4Yjk3ZmYxMTc3OTM2MjNhZjRhZDRmMTRiIHJlbGVhc2UyMi1tYWludAorMjcyMDkgM2YxOTZiNGRjNGMxMDZlYzM2NjhiN2Y2OWViZmE5MTI3YjJjZjEyYiByZWxlYXNlMjItbWFpbnQKKzI3MjEwIDZjNjE5YzE2MWI4N2Y4ZGZkODExMjY1NmIwNzYwZjcyZDYwOTZkMWUgbGVnYWN5LXRydW5rCisyNzIxMSA4NWE0ZTcyN2IxNmJhMWU3M2FjYTRkNWIxMjhiMWQzYjE5ZTVjYmZhIGxlZ2FjeS10cnVuaworMjcyMTIgYmQzN2ViNGRhZjNiNjc0ODI4ZDYwYzQ5Y2E0ODdlOWQyMTlmMDcxNyBsZWdhY3ktdHJ1bmsKKzI3MjEzIGI0ODFiYTk2N2FkODM3MTBkMzY5YWFhNTk2ZjE0M2U1MDkyOWNkNzAgbGVnYWN5LXRydW5rCisyNzIxNCBiZWI2OTllMTBiMjljZTIyNGUwMTBlNTk4OTQwZWM4Mjk4MmIwNmQ4IGxlZ2FjeS10cnVuaworMjcyMTUgZjZjMmMwODlmZGYyYWUwM2UzNzliNjk5YzQ2MzIzZGMzMTNlODdjNiBsZWdhY3ktdHJ1bmsKKzI3MjE2IDcyNTJiODY3ZDgxZTI4ZWZjZjYyOWUxMDlhNDk2ZmNlNDhlOGE0ZDUgbGVnYWN5LXRydW5rCisyNzIxNyBjOWM4ZjUyM2ZmMWI1NjY3ZmZkZGQ2YzI4MThmOTM2Y2NlY2ZkNjg2IHJlbGVhc2UyMi1tYWludAorMjcyMTggODU0NTgzY2Q2M2M3Y2U1NzNiN2I4NzI5MmQwYmU0MGNhYWQ0MTlmZCBsZWdhY3ktdHJ1bmsKKzI3MjE5IGQ2YWU1NDRhY2QyNGExZjcyY2UwMDUzNGZlZDQ2NGZkZTkxZWU1MDQgbGVnYWN5LXRydW5rCisyNzIyMCA0NjI3NWY5ZTc0MDcxMGQ5YjBlNWEwYWYyNjRiZDQyZDk2NzE3Yjc3IGxlZ2FjeS10cnVuaworMjcyMjEgOGE0NzY5MjRlY2ZlYTE5NGY0N2MwYzI2NjBjZDA2ZGIxZDgwYTM1YSBsZWdhY3ktdHJ1bmsKKzI3MjIyIDhiYzRlNWJhMWY2NTE3YTc4ODdlODkyYThiYzcyZjMxNTVhODAyNjEgcmVsZWFzZTIyLW1haW50CisyNzIyMyAyYjA3MTMzNzIwNWMwMWMyNjg1YjFiYmYyMmFmZjNhNWYwNTRmNTJkIGxlZ2FjeS10cnVuaworMjcyMjQgODY4Y2ZiZGNhOTA5Njk5YjBjNTY5MzAwYTFlMDI3NGQyNzVhOGRhZSBsZWdhY3ktdHJ1bmsKKzI3MjI1IDUwMjdlN2MxMmExNjAwM2EwNmZiMDNhMGE0NDFmZmNiZWQ4ZGM5NTEgcmVsZWFzZTIyLW1haW50CisyNzIyNiA1OTg2ZGJkMDA5NGZjM2IzZjQzMjQxZTAxYTllOGJjY2NhYmVkYmFmIGxlZ2FjeS10cnVuaworMjcyMjcgNmQwMDhhNGUyNjMzMzVlZmY3ZWUzNmQ3NTE0YjQ3ZTlkMGFlMmNhZiByZWxlYXNlMjItbWFpbnQKKzI3MjI4IDYzZWUzMWJiMjVmMzI1NjAyOTM3N2Y2Yjc0MDM2N2M4YThlMDUyZDcgbGVnYWN5LXRydW5rCisyNzIyOSBkN2IzMDdjMzc5YzhkYzFkZDVkMDM2ZmZjNDc5ZGE3MzQzYjk5MzcwIGxlZ2FjeS10cnVuaworMjcyMzAgYjc5ZDQzMzA1YzcyZDk0NzNmNTg1MzZjZWExOTMxZmY5M2E3M2U2NCBsZWdhY3ktdHJ1bmsKKzI3MjMxIGRmYTY4NjY4ZDAwZWNkYjU2YWZiZmRiZTQ1ZDg2YzUzNjMwNWI2NzUgbGVnYWN5LXRydW5rCisyNzIzMiA2YzFhMGRjODUxYjZjMWNjMzk1Yzg2ZjE3YWY2NzI5YWUxOGMyMzZkIGxlZ2FjeS10cnVuaworMjcyMzMgMWE3NmUzYzQ1MDhmMzYzNTNiMmUzZGI2NWNlMmZlN2Q2ZmNjYmI0MyBsZWdhY3ktdHJ1bmsKKzI3MjM0IDQ4N2E2Yjk5Zjc4MTFiMGU4MTA2YzAzZGRmMjFlMWE0ZWIzN2QyZjQgcmVsZWFzZTIyLW1haW50CisyNzIzNSA0NWQ2NzY5MzM4ODI4ZjdmMWJkYTMwOGUxN2FlNDE3NTg2YzIzZWYyIGxlZ2FjeS10cnVuaworMjcyMzYgOGU2NzYwYmYxODg0ZTdjYjQwMDg3YTFiZjZlNDkzNTQ0ZGI1YjUxMiBsZWdhY3ktdHJ1bmsKKzI3MjM3IDhhZDgxYjM3OTU1MjAwNThhZTFjNzg0M2YwMTAzMGQ2MmVmNTJhYTcgbGVnYWN5LXRydW5rCisyNzIzOCA2M2QxZTMyNjNmNDU2MmYzOTU0NTkyNjEzNjQxNmJlMTQyNGY5NGVhIGxlZ2FjeS10cnVuaworMjcyMzkgOTVlN2JiYmQwOTU0OTQ1ZWRhOTg3Y2U3MDFlYTM3MzY1MTVlNDE3OSBsZWdhY3ktdHJ1bmsKKzI3MjQwIGMwMmQxYzlhNjYyZTY2NWE0MDdkNTA5OTRhNDQ0ZjIyMTQzMTUzM2EgbGVnYWN5LXRydW5rCisyNzI0MSA0NTg4YjY4MjBhMTFlNTRiYmQ0MDlmYmVmY2M1NzE5MGJhNWJjNTQyIGxlZ2FjeS10cnVuaworMjcyNDIgMTVhYjI5MzkzNzc5ZjE5YWE4M2EyYWJmNGM5ZGYzYjdiNzUwMTFkNiBsZWdhY3ktdHJ1bmsKKzI3MjQzIDVhZmQxNGEyYThiYzZjODc2MDE0ODFhNjUyZDg4MWY5MTZjZTQ3OWQgbGVnYWN5LXRydW5rCisyNzI0NCA4MzJmMDUwMTE0OGJiNzhlY2YyZWU0M2UyOWQzYjI2OTVjNGVkMTdmIGxlZ2FjeS10cnVuaworMjcyNDUgMDQ5OWRmNTg4NGQyZjU0ZmZjNDNmMDRmNjczMWU0NjY3MjY4NTFkOCBsZWdhY3ktdHJ1bmsKKzI3MjQ2IDRmNmQzMWRhY2Q1ZTY3ZTQ5YzUyYzU3NzM5YmUyY2QwMGVmODkzMTQgbGVnYWN5LXRydW5rCisyNzI0NyAwODQ3NWM4N2QyNGY1MGQyN2I4NDNlMTJlOGUxMDc2NTlmZDc3N2NjIGxlZ2FjeS10cnVuaworMjcyNDggYmJhZWFmMjcxOWM0YmJlNjU2MmU4N2NlMGEwY2U5MTg2NTc2YTdiYiBsZWdhY3ktdHJ1bmsKKzI3MjQ5IDhiN2Q4N2VhNDg5NGUxZDYwOTYwYmIwODZmZDI4NTNiN2Y3NmFhZDYgbGVnYWN5LXRydW5rCisyNzI1MCAzZGJhODY2ZTg2MmU5ZmZhNjFiYTQ1MWI0YjZmOTcxZDUwMzAwMjM2IGxlZ2FjeS10cnVuaworMjcyNTEgMDAwYWI1ODRlNzdhNjFiNDI4OGFlYjFiNjNiY2QwZTc1Y2NhNTdmMCBsZWdhY3ktdHJ1bmsKKzI3MjUyIGVhN2U3MTdkZWUyNzIzYjQxNjQ5OTc2MGQ1NTU0N2YwOTgwODYwMjIgbGVnYWN5LXRydW5rCisyNzI1MyA0YzY3ZGQ0MmExZDllYTM4YzU5OWM5NzM0OGZlY2NjY2M3ZDQxYmQ5IHJlbGVhc2UyMi1tYWludAorMjcyNTQgYWI1MzU1ZDg3M2RkNTg3YzFiZWU0NzAwZGQyMDNmM2U4YWFkN2NjOSByZWxlYXNlMjEtbWFpbnQKKzI3MjU1IDFjZWY2MWQ1OTQ3ODY3MWUwNWJiMzI1NGExNmQ4Y2IyZTYyZTVjZmMgcmVsZWFzZTIyLW1haW50CisyNzI1NiA3YjY2ZjAwMzQyMzNhNzY2NzQxYzMzNmU0OTYwMWJmM2I2N2RiYzEyIGxlZ2FjeS10cnVuaworMjcyNTcgNDFhYjUzMmQ0ZjYwMWNjYTQ0Y2M2OTk1YjAwMzdiNWE5YjM4ZGNlMSBsZWdhY3ktdHJ1bmsKKzI3MjU4IGMxNDVmZGRlYTM0MDg0ZmY2M2ExOTBiYTM2MTIzNGZjMDA4MGYzN2UgcmVsZWFzZTIyLW1haW50CisyNzI1OSBlYTlkMzMzZjkwMzRlMWQ1MjM3NDYyYmI4MzAwMzI4ODNmZWVhZTQwIGxlZ2FjeS10cnVuaworMjcyNjAgYTQ0ZjM4NzdhMzg2YmYyNzM4NzU0ZTE5YzUzMTc4YmRkODgwZDQ3NyBsZWdhY3ktdHJ1bmsKKzI3MjYxIDgzZTQ1OGE2M2MzZmJhYzQzNzZlNDJkOTRiMjJkZDYzODEzMzNmZDAgcmVsZWFzZTIyLW1haW50CisyNzI2MiAzMjRjNzI2NzVjOGQwNGI0YjIyNTNjMGNhNDI4YjY4ZDQ0ZGIyZWZjIHJlbGVhc2UyMS1tYWludAorMjcyNjMgMDJjNTA0NWQ1YjRlMGEzMjdmOGZlODg5Mjc3MGI4NmVjYTgzMjQ4MSBsZWdhY3ktdHJ1bmsKKzI3MjY0IGFkMWQ4NjJmYjYzMjY0ZGYwYTNmODIyY2M0ODZhODU2NGUxMTc5NDcgbGVnYWN5LXRydW5rCisyNzI2NSA4MzA1YTE5NTg0YmM4OGFlMTZlNjhhOGVjZjU1ZWFkMTIwNjY2MDI4IGxlZ2FjeS10cnVuaworMjcyNjYgZjUwMzBhMjk5MzVkY2FiM2EzMmNkYTBhODZiMTAxMGFmZjhlYTc2MSByZWxlYXNlMjItbWFpbnQKKzI3MjY3IDI4NTcwMmYwODI0YTYzN2U3M2M4ZTVmMWJhNWY0YmFmYzQyNTJkMTIgcmVsZWFzZTIxLW1haW50CisyNzI2OCAwODk5NDA5YTBjYjZkMWUxZTNhODYzNjk4N2NjMzljNmZlYTU2NDI5IGxlZ2FjeS10cnVuaworMjcyNjkgMDFjZGQzOGQzNWZhMGQwYzIwYjFlM2YzM2ZhOWYxYTM4YWRkZDU3MyByZWxlYXNlMjItbWFpbnQKKzI3MjcwIGEwN2JjMzAzYTYwZDhhZTNiNzRlNTk1YzE2MGMzYzg4ZmFmNTUxNjggcmVsZWFzZTIxLW1haW50CisyNzI3MSAwNjZmODkzODA3MWE1NTA4OGRkZjdkZmNjYjY5MjI4MWFmYmMzYTkwIGxlZ2FjeS10cnVuaworMjcyNzIgNGYwNjA2Y2VlZWY4Yzk0Mzk0ZWIyYmNmMjkzZTFkZTUwNWUzNTcwMiByZWxlYXNlMjItbWFpbnQKKzI3MjczIGU4YmFlMjUzNzg0YjNlZGNiY2UxMzI2NDI3NGNiZTQ3MzcyMmI3N2QgbGVnYWN5LXRydW5rCisyNzI3NCA5Y2U3MWIxY2MxN2Y3MThlOWNiOTI1MGNiMjBkZjI3YzFlZDNlYTcxIHJlbGVhc2UyMS1tYWludAorMjcyNzUgNzNjZjRkODQ3NTcwZWNhYWI1NDg1MjQzZGE4N2JlYTQxNTkxMDk3YyBsZWdhY3ktdHJ1bmsKKzI3Mjc2IDkyZjI4OWMyZjdjNjNkOTc3YjE1OTE5ZThiMzhkYWZlNDlkMzU5YmIgbGVnYWN5LXRydW5rCisyNzI3NyBiMTZkNGJlNmEyMzJlZTE4MTExODQ3NWUzMGQwYWI5MWU0ZTQ1MWFiIGxlZ2FjeS10cnVuaworMjcyNzggOTIxMDY0YzI2Mjk3YjI1ZWIyM2JhOTZkNGNjMWJlYjE3NDNhNThjZiBsZWdhY3ktdHJ1bmsKKzI3Mjc5IDY4OTNjZWVjODYxMGU5YzU0ODQzNDYxZDQ5MzhkNzk1ZjJmYTRiYTcgbGVnYWN5LXRydW5rCisyNzI4MCAwNzVmNzU1YTY1ZGExNmJkZWZmZjM3MDkwMGE4MzkyMmEwNTQxNjM0IGxlZ2FjeS10cnVuaworMjcyODEgMTI5OGU5N2ZiMzQzYWRiMTZiMmRkMWVkYmQzYzQ2Y2U2Yzc1ZGJhMSBsZWdhY3ktdHJ1bmsKKzI3MjgyIDdlM2VhYzVkMzI5OTc5Y2Q5NjIwZjhlMGIxZmUzNGE1ODQ3Y2EwZGUgbGVnYWN5LXRydW5rCisyNzI4MyA2MjBiNjk5Njg1ZmYwNDI4ZDI5NTYwYzk5NzlhYzMyZDNlM2RmYTFkIHJlbGVhc2UyMi1tYWludAorMjcyODQgZmYwY2Q2ODc4YmRkZTVmYmYyMzY1NzU3MTFhMDg1ZDM0YjU3MDc2ZiByZWxlYXNlMjEtbWFpbnQKKzI3Mjg1IGNlMTYzZjM0MGNkZmY1YzM2MjJmOTYyMjhlYjgxYmUzMTQyYTZlOTAgbGVnYWN5LXRydW5rCisyNzI4NiAwYmNlZjNjYTIxYzA2YTM3MjM4N2QxOTE4ZTk3NThlZDdhMzljNzE3IGxlZ2FjeS10cnVuaworMjcyODcgNWY2OWQ2ZjE3YWEzMTA5MmQ3MDc3YWYyZjhjZGI4NzU4YzJhMzBjNyByZWxlYXNlMjItbWFpbnQKKzI3Mjg4IDgxNWQwMjgwMGQ5ODBiZjAyMTIwODQ0OTU1ZmZkMDgyODE0NWM4ZjYgcmVsZWFzZTIxLW1haW50CisyNzI4OSBiYWU5OTZiYjdkODJjZTJkZWU5MjQxNzcxZjRhMmFlNWNjMjU5NzY2IGxlZ2FjeS10cnVuaworMjcyOTAgMzc1NjBmNDM0ZjZhMmJlYWUwZGE2ZDJhNzVjYjE0MWMxODdjZGY2ZiByZWxlYXNlMjItbWFpbnQKKzI3MjkxIDEyZjQ5ZmE4ZjQ3ZjJhYmEyNDY2YmYyMDRjMWM0MTllMThlYjA3ZjMgcmVsZWFzZTIxLW1haW50CisyNzI5MiA5MjExYmM3MjQ5YTA3ZWIzNDQyZDRjY2QwNTIyNjNhZTU5NTcwNTE2IGxlZ2FjeS10cnVuaworMjcyOTMgZmJhN2QxMDM1ZmVkNWVmYzFhYTQwMzMxYTEwYzQ3YjVjM2ZjZTQ4OCByZWxlYXNlMjItbWFpbnQKKzI3Mjk0IDU1ODZmMjA4NTgxNTg2YjVmOTFiOGQ5MzA3YzM0NDNlZWViYjczNDIgcmVsZWFzZTIxLW1haW50CisyNzI5NSA5NzBhYTk3MTI4MTMxYWU0OTc3ZTc5OTI3MDYxZDA0ZDhlMjkyYWJhIGxlZ2FjeS10cnVuaworMjcyOTYgN2RmZTQ4YzdhYTY1ZTBjNmNlY2QxNWU5ODFhZmMwYWE4NGIwODZhNyBsZWdhY3ktdHJ1bmsKKzI3Mjk3IDI2YmExN2I3NThiOWVkZDk5YmJkY2NlOTQ1ODY1NTU5NmY1ZGE0N2YgbGVnYWN5LXRydW5rCisyNzI5OCA4ZWIyZjMxZWVhOWViM2VhZTJhYTJjNjQzODZmMjg5YzA0MWEwNWIzIGxlZ2FjeS10cnVuaworMjcyOTkgZTU1OGE0MGI2YjUyMzExNjEwZDhiMDkxZTRmMzhjMDhiMmFhMzFiYSBsZWdhY3ktdHJ1bmsKKzI3MzAwIGVhYjhlY2E5ZWM1MWQyYjkyZjcyOWRhMjNhNTAzZmQyOThkY2E0ZTggbGVnYWN5LXRydW5rCisyNzMwMSA1YTIzMDJmNzk3MjQ5ZTlhMTY2YzA2OTEwODliOWFkNDViOTVhOTU1IGxlZ2FjeS10cnVuaworMjczMDIgMzA0MmRhZDE0OWFlNzNlNzNjZDJjNTQ5MjU3YjE4OWYwZWZmNDBhYiByZWxlYXNlMjItbWFpbnQKKzI3MzAzIGI1YmRlNzdkYTIwZTA3Y2Y5MTdkYThmZmNiMjgyYjgyMTkwODYyMTYgbGVnYWN5LXRydW5rCisyNzMwNCBkM2I1ZmFmZWNiMjlkZjhmYWUxZjZjNjY5MmIxYjc5ZmJkZjFjMGRjIGxlZ2FjeS10cnVuaworMjczMDUgMzUwMGRhNjY2YzBjM2Q2OTZlMTc3OWU4ZDMxYWViYjQxZWZhY2JjYSBsZWdhY3ktdHJ1bmsKKzI3MzA2IGQ2MmU2ODQ1NDJiOWJiZjUzNjZjZWJlZDNkYWMzMTFlYTdlYzliMGEgbGVnYWN5LXRydW5rCisyNzMwNyA4NGYwOTJiMTA2ZWZiOTBmZGE2MDI5MTExNmQ2NjE4MDMyNWE3ZDAxIGxlZ2FjeS10cnVuaworMjczMDggODMzNTRjMmNhMzkwM2QxNmI0MTU5ZDhkM2ViMjA4NTNmYmM5YzViMSBsZWdhY3ktdHJ1bmsKKzI3MzA5IGE2MGEzZDljNmZkOWE2ZTg2M2E4MzhlMzIwODFiY2UwNTczYzIyZDYgbGVnYWN5LXRydW5rCisyNzMxMCA2ZTJhM2M1NzAwYWM5YzdhMTFkYmE2NzViNDA1NmRmMzg2NjQ5NGVmIGxlZ2FjeS10cnVuaworMjczMTEgZGU2MjU1MTdhZGU4MDJkNGQzM2Y4NGY4Y2JkN2Q1ODExOGJkNTViZSByZWxlYXNlMjItbWFpbnQKKzI3MzEyIGFlYThmYjNlM2YzZDdkYjgzNWRlN2EzMTM4ODg4OGU5ZWMzN2EyN2MgcmVsZWFzZTIxLW1haW50CisyNzMxMyA4NWUxMjA0YjY2MTcxYmNmN2E5ODJhMGMwZDcwZGUxMWJiNGRiMTMzIGxlZ2FjeS10cnVuaworMjczMTQgNjUyZjFiMzE4ZTVhMDgxZTdkNWNkMTQ2MjgzOWVkZTMzNjRjNzMwYiByZWxlYXNlMjItbWFpbnQKKzI3MzE1IDM3MTE4YjZlNWY0NjEyNGNhNDQ2MGI3MmIwMjUxN2I2MGJlNTk3MzkgbGVnYWN5LXRydW5rCisyNzMxNiA4M2FhOTlkZWRhNzRkZTE1OGI1ZDk5MjQwNTcyOTA4OTEyMGU2NmI3IGxlZ2FjeS10cnVuaworMjczMTcgZWQ2MmMwNGIxOWY1MjBlMzU5YjY4MTVjMGUzYmZkYjIyZjk3ZGU4YSByZWxlYXNlMjItbWFpbnQKKzI3MzE4IGY3Y2U2OTY5NzllMThiMDExYTdlNDA3Nzk1ZjFkOThhYTIzMjRjNDMgbGVnYWN5LXRydW5rCisyNzMxOSBkNGJkNjYwMTcwMWQzNWRjOTc5ZmQ3YTk5NTY4NWU5ZjdmNzQ4MWNiIGxlZ2FjeS10cnVuaworMjczMjEgMzgzNGNiMGU3YmU2NWM1Y2NjODUwMzA5ZDE2ZWJhNTY0OWQ2MTdiYyBsZWdhY3ktdHJ1bmsKKzI3MzIyIGNiMDhjYTU3ZTJhOTY2Mjg4NzE4MDdkZGVhMjRmNDRiYTNiNTEzOTIgbGVnYWN5LXRydW5rCisyNzMyMyAxMWE2ZDliNWY5OTA2NTk2YTExYThlM2EyYWU5MjgyODE4ZWFlYzE2IGxlZ2FjeS10cnVuaworMjczMjQgYWEyMzg3NzBkODA4ZjUzZWVlNjYxZWY1OGZkMzM1M2Y5ZmE3YjYzYiBsZWdhY3ktdHJ1bmsKKzI3MzI1IDFhMmI1MzQ0ZDFjY2YzZTYxNDhkMDYxZTk5NjRlZDA4YjczODcwYmEgcmVsZWFzZTIyLW1haW50CisyNzMyNiAwM2JiYTcyODI4NTJjYmQyYWM0YTFjOGQ4NDYzZGJiNDA3M2ZiY2ZiIGxlZ2FjeS10cnVuaworMjczMjcgMzEzODE2NzIwMWFhY2Q3OGNjM2VlMmY1Njk5MDU3ZGJiNDE1NjIwZSBsZWdhY3ktdHJ1bmsKKzI3MzI4IDRlZWQ1MWFkNDkzZDRlZjNhNWYzYzkxZTQzOGYwZDIzYzEwOTkyODQgcmVsZWFzZTIyLW1haW50CisyNzMyOSAwOTZiNDc1ZTFiZWYwMjU4MzczOTBjYzU5ZjhmOGY0NGMyMmU4NzUzIGxlZ2FjeS10cnVuaworMjczMzAgN2Q4YzZiODg5YjU0ZTMwMWRkZmE4YzYwNzQyZjQ0NjM0NTQ4NWQyNiBsZWdhY3ktdHJ1bmsKKzI3MzMxIDExMWMxZTU5YWQ3MmVhMDI2NTE1M2IwMjI0MjFiZWFkY2QyNzIwMGEgbGVnYWN5LXRydW5rCisyNzMzMiBmNTQwNWM2ZWM0YWNkMzY5ZDNlMjkzNjZmZTFhMDkzNTk4NzdmZTU0IGxlZ2FjeS10cnVuaworMjczMzMgZjdlMTkxYzhkYjIzZjMyNjZmYTA1OTFjMTEzMDBlZTM3YTE0YzU4NyBsZWdhY3ktdHJ1bmsKKzI3MzM0IDFmZTAwNWM0MjgzNjg3YmM1YTVkNjFlMTYzYzI0NTg2ZWE4YzliMjQgcmVsZWFzZTIyLW1haW50CisyNzMzNSAyNWIwYWYyN2RkYzg1NzJkMTAwMWNlNmQwMDU1ZmMwMjVjMWVhYmQxIHJlbGVhc2UyMS1tYWludAorMjczMzYgMWE4MDk2YmI0YzQ4MjgwYzQ4YzI0MmY4YTAzNmJkOTU1ODE1NzAzZCBsZWdhY3ktdHJ1bmsKKzI3MzM3IGUyZmE3NDFjNTQ3ZjUxNTEwZGFmNmQ1N2FhNDg3ZGMwNWNhOTUyY2MgcmVsZWFzZTIyLW1haW50CisyNzMzOCBlZGQ3YzAxNDZhYzgyNGY1YjRlNGM5Y2M1NWYyYWRiOTNkM2FmYmU5IGxlZ2FjeS10cnVuaworMjczMzkgYTcyOTk3ZjdkYjRjNzAxOGY1Yjk1NDRkNzA3NjFjNWYzODhhYTA4OSBsZWdhY3ktdHJ1bmsKKzI3MzQwIDdlYmQyY2QzYWVmMDFiNzM5NmI4MTM2MzhmZmM5MDg5N2U2ZmYwNjkgbGVnYWN5LXRydW5rCisyNzM0MSA4MTQ5ZDk3OGIwMDZmNzcwYTkxYTc5OTg2OTZiNjA0MWVmZmQyNDJmIGxlZ2FjeS10cnVuaworMjczNDIgZmU5YzcxMzJhODY3ZThlN2EyYTg1NDQ2MmRkODk5YmJlMDNhNTg5YyBsZWdhY3ktdHJ1bmsKKzI3MzQzIGM2OWRjNDNiNzAwYTk3Zjk1Zjg1ZmM1MDVhMTJiNDI2Y2JlODM5NDMgbGVnYWN5LXRydW5rCisyNzM0NCA0ODFlNGE0YjhkZTA2OWMxNTdkMGQ3MzljYzZhZGU0YzBhZmZlNGE1IHJlbGVhc2UyMi1tYWludAorMjczNDUgMzYwMGQ4ZDA3MzU4MzI5ZDc3ZWU0NmU5Y2ZmZjE0MmRmY2QxZWNmMiBsZWdhY3ktdHJ1bmsKKzI3MzQ2IGE3YjE2OWVmODNlYWNjMWNmODMyMjJhODBiOTMwY2Q2MTkyZTJmZmYgbGVnYWN5LXRydW5rCisyNzM0NyAyNmEwZDBkYTEzMTJjM2MwY2ZjNjY4MGYyMmRhZWU4ZmI5NGMxYWYyIHJlbGVhc2UyMi1tYWludAorMjczNDggMDgyNWJkN2I1YjU1OGUwMWU5YTQ0NGEwZTNiNDhkOGNkNDAxNDgyYiBsZWdhY3ktdHJ1bmsKKzI3MzQ5IDM1Yzk4OTRmMDZiOTYwY2UxMDVjMzYyOWFjN2QyZTdmOTRhMWE5YWEgbGVnYWN5LXRydW5rCisyNzM1MCAzMjQ2M2U4ZTVlMWFlNmNkOTgzNGMxMTY3YzU3NzkzN2Y1Nzg1ZmUxIHJlbGVhc2UyMi1tYWludAorMjczNTEgYTE4MWNjY2ExMzEyODMyZGMyYjNhMDMyZWVjZmYyZWM5YTViMzQxYyByZWxlYXNlMjItbWFpbnQKKzI3MzUyIGQ3YTYyMDQyZTdlZmE1OTUwZDBmNWIyNTc2ZWY5MDRhZmE4YmRiMDkgbGVnYWN5LXRydW5rCisyNzM1MyAyMTJlZTYzNjViZmY5ODNkOTFkODUxOTg0MmUzNGNjNjIwODYzZDY2IHJlbGVhc2UyMi1tYWludAorMjczNTQgN2Q4YTE1MDQ5NmE4ZjA2ZDA2YTM3MDI1ODhlZDI5NjJmOGVjMzI4NiByZWxlYXNlMjItbWFpbnQKKzI3MzU1IGQ3Zjg1MTJkYTQyMzZjOWZjMWQ1OTczMGZhNmM5MTc2MTFkNjBmMjUgbGVnYWN5LXRydW5rCisyNzM1NiBhNTYyOTI3MzI1NjZkZDQ3ODI0YTBlYTJhN2IyZmJkYTliMWM1ZTA4IGxlZ2FjeS10cnVuaworMjczNTcgODg2MzA3NmUyZGY5MzA3Nzc4NjI1YzRkOTlkOTI1NmVjMmVkMTU4YiBsZWdhY3ktdHJ1bmsKKzI3MzU4IDMzZWE1MjJkZDNkMjJlYTk5MTNjZTI3ZmNkZmYwNDcwNWI1NTcwMTkgbGVnYWN5LXRydW5rCisyNzM1OSBiNzcxODU3ZWQ3ODg4ZGUzM2I5NjhhYmVhYTM4NzM4YmQ5YWU2ZWFkIHJlbGVhc2UyMi1tYWludAorMjczNjAgNGFiOWRmMjQxNmY5MzZkYzJhZjM3ZmIwNDcxZTM0MzAxM2MyMzk5OCBsZWdhY3ktdHJ1bmsKKzI3MzYxIDk1ZGE5OTE4N2M1NzU0MjA5MzdkN2U1ZjIxMTRhNTA2OWFkNDZkMzQgbGVnYWN5LXRydW5rCisyNzM2MiBhZDZmYTFjMDRlNDc0NzcwOGRkYWIyMjNlNWYyYWNlN2ViZTAxODc5IGxlZ2FjeS10cnVuaworMjczNjMgNDhhZDQ3MGMxZjhlMTZhNDJhZDE5Mzk1YTI4NmJmZGQxZGNlMmRlYiBsZWdhY3ktdHJ1bmsKKzI3MzY0IDQxNDY4ZjkzNTNjZTlhODkzMzMzYzE3MjAzMjg2MTU1ZjA0NjRiNGIgbGVnYWN5LXRydW5rCisyNzM2NSA3MDNlNjNhZTBmMDFmYzRkZjAwY2ViYzI0OGQ4MjY0MmJiNDM5MzAxIGxlZ2FjeS10cnVuaworMjczNjYgMWY2NTEwMDUxYzhhZTg2MmQ5MmE0ZTRhMjdmZTI4MjNkN2JkNTMzMSBsZWdhY3ktdHJ1bmsKKzI3MzY3IGRhYjg3MDFiZDNmYTI0YjQxNWU4YzNjZmNmMWE1MDNhOGVjZWNhZjcgbGVnYWN5LXRydW5rCisyNzM2OCA0ZTYzZTk3NzFmMzBjNTA5ODQ5NjE2ZDhlZTc5ZGZiMmY3YTUxNjU2IGxlZ2FjeS10cnVuaworMjczNjkgYjg4NzVmMTZhNGJlNTQ1ZjJiNzkwNDRmZjQ4MTcyMDdiNTBlZTEyOSByZWxlYXNlMjItbWFpbnQKKzI3MzcwIDQ1YjllMTIyYzMzYTdhMWVkZjE4MjJhMzdkYjNlZDZlZGZlMjhmNDcgbGVnYWN5LXRydW5rCisyNzM3MSBiNzFlMGY5NmRlMjMzNTdhZjMyMDgzM2YyYWJhZTA3YTEwZmI4MGUwIGxlZ2FjeS10cnVuaworMjczNzIgZWExODc3OGRmNmMzNzAwOGMyMTlhZDY5MmJiM2U1MmM4NmE3Y2FjYyBsZWdhY3ktdHJ1bmsKKzI3MzczIDE0ZTJlYjllNWVmMmJlYTYwYWJkOGIxNDlhNWZjMzFjOTRkNGM0NmYgbGVnYWN5LXRydW5rCisyNzM3NCAxOWE2MDk1MTdhYjhhNmJmNTJiM2M5ZTQzZjkzNThjODA3NGIyZmFhIGxlZ2FjeS10cnVuaworMjczNzUgMTRkOGVlMWU4ZGU1Y2NkMTRjNTEwODAyNDc0ZjBmYTY0YmI2YzE4YSBsZWdhY3ktdHJ1bmsKKzI3Mzc2IDAwZTU3OGY3OGNhYWEyYTg3NjNlZDBjNTI3ZTU4M2YzMmRmNDgwODUgbGVnYWN5LXRydW5rCisyNzM3NyA0NGY3ZmMzMDc2NzM2ODM4NDA0OGUyMDc1NTlkOThlNGVjNTNlN2QwIGxlZ2FjeS10cnVuaworMjczNzggYzg4MjkwNDYwNzkxOWNhMzFkYTc0ZGFiMWM3Mzk1OTA5ZGU3M2E3NCBsZWdhY3ktdHJ1bmsKKzI3Mzc5IGRjODcyYTJmNTEzYjQ0MjFhYzBlOTRjZjEzOWRlNDkzMThjZjkxMDMgbGVnYWN5LXRydW5rCisyNzM4MCA5ZDg5YTlhMDU0ZTA0MDllZjEzN2U1ZWYyNTg2YTU2YjQ3ZTY5NWJiIGxlZ2FjeS10cnVuaworMjczODEgZThhMjYzZGIxYmUwMzNhYjU5Y2JmNGZmMzM4OTkxYzE2OThkM2I3NiBsZWdhY3ktdHJ1bmsKKzI3MzgyIDcxZjEzY2Y0ZjllMmQ5MzJiNWQ5ODkwNGY0NjdiNmI4MTQwNjUzZjQgbGVnYWN5LXRydW5rCisyNzM4MyAyZTVhMWU4YzBiNDgxZDY0YTM4ZmZkZTVkZWY1YjdjMDU5MGVjNGE5IGxlZ2FjeS10cnVuaworMjczODQgZWRmOTUwYmY0MjMyNThjNmZhNjI2NDM5Y2U0ZjQ4NzEzNGY0ZGIzYyBsZWdhY3ktdHJ1bmsKKzI3Mzg1IDU4NDMzYjY2ZjU4Mzg5ODA2ZDcxNzc4NTlmOTBiNWVhOTgzZGI1NDYgbGVnYWN5LXRydW5rCisyNzM4NiA3ZjgzYjIxMjRiNGVkMzkzNmVjZTk5NWIzYjg2ZjdmNzZlZGVhNTFlIGxlZ2FjeS10cnVuaworMjczODcgZDhkZTliNWY1NjFlZWU4ZWYyNDQ2NTYxNDY1YTRhNDcyM2RhNGEyZSByZWxlYXNlMjItbWFpbnQKKzI3Mzg4IDM4NDhhYTNlZGFmYzZjNzczNDc5OWI3NzA4NjhiNWJjMmM3MGMyMDIgbGVnYWN5LXRydW5rCisyNzM4OCA3NGQ1Y2Q2OThiYmY3MWNkOWI0Yjk2NDE5ZDkwYzA5MDg4MzVjNGFkIHJlbGVhc2UyMi1tYWludAorMjczODkgZmNmMmUwMWM2MTZhNjA0ZWFmMGY1MzVhNWU4OGZlMjc0MzBiOGNmZCBsZWdhY3ktdHJ1bmsKKzI3MzkwIDkxMzU3MGFiMDczNzQzMzc3OTM2MmU4MTYyMzhkM2E3NGJhNzRlNTMgbGVnYWN5LXRydW5rCisyNzM5MSA5YTlkNmNlNWVkNGUyMjVmYzVjZjNmNzZmYTBmMzk3MWQzYjVlYTZjIGxlZ2FjeS10cnVuaworMjczOTIgYmJmZWY5NDhjNDNlODAwNDFjNTFmZmY4OGMzYWI3MmRkYzE4ZTJiNSByZWxlYXNlMjItbWFpbnQKKzI3MzkzIDc0MzY4OTg3ZjdmMGEwM2RlMTk0NWU4ZjdjZGJmYjFiMDViYzdlNDYgbGVnYWN5LXRydW5rCisyNzM5NCBiYmNlZTc0NzhmY2I4NDA0ODk3NWRkNDRhMWE3OThmMWE3NDRlM2IyIGxlZ2FjeS10cnVuaworMjczOTUgMzRiOGNkYmJkOGZlMzM5NGU1NGViNTg3YzhmYWFlYmNiOGVlNjRjMCBsZWdhY3ktdHJ1bmsKKzI3Mzk2IDliNmQyNTljMjVlYjdlYTYwMWVlNGZjYjkxYTZkZDVjY2IxZDBiNTIgbGVnYWN5LXRydW5rCisyNzM5NyA1YjUwOGNlMDQ5ZjVkMDg1YjM2MTlkZTY1Y2JhNzgzYTFiZDAxNWUyIGxlZ2FjeS10cnVuaworMjczOTggYzRkNjhmODJhNmRkYjgxNjhiODkwZTMzYzczMGI4MDVkNTA3YzZlYiBsZWdhY3ktdHJ1bmsKKzI3Mzk5IGQxMGYxYzZkOWVlOTQzMDY4Mjk1ZTAxYTVmNTAwYTIwNTkxYTE4NjUgbGVnYWN5LXRydW5rCisyNzQwMCBjMTBjMDkxOTJjMTJiY2ExZTFjOTA4NTMxZWJmNjQ4OTQ0NGE2OTRlIGxlZ2FjeS10cnVuaworMjc0MDEgMDdlNzQ5OTM1NzNjNWI1ZWQ1Y2E2NWNhZTJhZGNkMTZlOTNlZGZmNiBsZWdhY3ktdHJ1bmsKKzI3NDAyIDI3NWQwNGEzNTU0MjI2NGJkMjJiM2NkODVhY2Q2OGQyMGNmYjAwODggbGVnYWN5LXRydW5rCisyNzQwMyA3N2E5NmFjNGRkZTRjMDgwNWFhNjE2ZmE5YmQ3MTMzMTAyNzY4NzBlIGxlZ2FjeS10cnVuaworMjc0MDQgZWFlNDk2ZWZhNDYwMTMyNzQ2YzUxM2UxZDhhYzI2NTE5NmYxYmRiYiBsZWdhY3ktdHJ1bmsKKzI3NDA1IDJjMjI0NWFhY2VmODhmYzg1ZTk1ZDBhNDk4ZTE5MTgyNmY2NDEwNmMgbGVnYWN5LXRydW5rCisyNzQwNiA5Mzc3MTU4NjUyZGQwZDRiODZhMWVjMmIyZmMwYjUxYWQ1MGY4ZjRmIGxlZ2FjeS10cnVuaworMjc0MDcgYTNkNjEyOGFmYjJlNTUzMWM5MmQwMTUwNzYzZjZkZDdjMzI5ODc1OSBsZWdhY3ktdHJ1bmsKKzI3NDA4IGE3OGQ0MWVlOTQ3NGY3NjE3NGExY2MyYzE0NWUyNTAyOTZkYjMzMmUgbGVnYWN5LXRydW5rCisyNzQwOSBhZjA1MzJmMjNhYjNmZmZmOWU3MDA0MTc2YWQ1MzllYjBiN2FlNDVjIGxlZ2FjeS10cnVuaworMjc0MTAgNjNmYmJlZDEwNzE0YWE1NDY4MGRiOGY2NTY1YmYwNWQ0MzRmN2UzNiBsZWdhY3ktdHJ1bmsKKzI3NDExIGZlZjM5N2IxYjg1YzNkODlmN2FkNGNjZTJkNjE2MGI1YWNlOWFlOWIgbGVnYWN5LXRydW5rCisyNzQxMiA5MGNjYTg1N2QyMDMyMmExYjI3ZTdmYTllNjhhMmI0ZDYxMmI5MTY3IGxlZ2FjeS10cnVuaworMjc0MTMgNDA0NjI4MmNiMzM4Y2Y3ZTUzNmFhMTI0NmJmY2YyNTM2OGYwZDkzOSBsZWdhY3ktdHJ1bmsKKzI3NDE0IDhlYTg2NTY0ZmIzMjY0MzlmZWVmNmMwYTc5YmE5M2VmNmQ0NDU3NDcgbGVnYWN5LXRydW5rCisyNzQxNSBiYzZhYWU3NGRkZmU1YzQwYjNlNzUzNjYxZTkzNGYxNGU2N2ViZGE4IGxlZ2FjeS10cnVuaworMjc0MTYgMmM3OWIxYThkNjE2NTM5MTUxZjZmZjllYTgyMzJmOTViYmM5NzAwYyBsZWdhY3ktdHJ1bmsKKzI3NDE3IGQ5M2YzNDIwMTUwMzhhNzk4ZjY3OTU4ZDNkYWIwNzc1ZTJlYThjOTIgbGVnYWN5LXRydW5rCisyNzQxOCA3MTg0MGExYmQ4MmZjN2M0NjQ3YjQzYjExYjQyNjgxOWEzZTJkYzNlIGxlZ2FjeS10cnVuaworMjc0MTkgYTkyMjExMmQ3ODBjNTg5N2ZmNDQ1NzBjODM0YTA0Zjk4Yzg3NjJhNyBsZWdhY3ktdHJ1bmsKKzI3NDIwIGNiMTY5OTVhYTdlODA5ZWUyNGU3M2ZhZGY2ZGRlNDQ3MzNjYmQyNjEgbGVnYWN5LXRydW5rCisyNzQyMSA5OTEzY2Y3YzQwODYxZmY0OTQ0Yzk4Y2ZlZmNhMmMyNDhjOGQ4ZjhmIGxlZ2FjeS10cnVuaworMjc0MjIgNjdmMmI0MGJhYjcwNzBhMmRhMDU1YzAxZWIzY2ZlNWU2ZWJhY2VjYyBsZWdhY3ktdHJ1bmsKKzI3NDIzIGU5YTZhMGM0YjMzZjNjOGRmZGRlMTdmZjE0ZTlhMmEwZGYwODBhNmYgbGVnYWN5LXRydW5rCisyNzQyNCBkY2MyYjc1ZDdhNzhjMGY0ZDA0MWI5ZDMyMzZkNjBiY2VhYTY4MzUxIGxlZ2FjeS10cnVuaworMjc0MjUgMTg3MTczMzUyNDM1NDk2NWNmZTliMmRlN2NkNjlmMzYxZDUwNThiNiByZWxlYXNlMjItbWFpbnQKKzI3NDI2IDM3ZmZjZTJkOWMzY2UwNTM2ZjBmNTliOTRiYTY5MTJiZmE2ZjNhZmIgbGVnYWN5LXRydW5rCisyNzQyNyBkMjRjOGM5NDY3NDFiZmI3OTczMzFjOTE2NzdhYTBmZTEyMWEzOTM3IGxlZ2FjeS10cnVuaworMjc0MjggZGQ5ZDJlYzk2ZWFkMGNlNzI0YTM1OGZmNjY2YmU4ODYxZmUwNzUxMyByZWxlYXNlMjItbWFpbnQKKzI3NDI5IGI5ZTBjNTc1MzIzODA4NGI2NWNiODFlZWMyNjEzNWNlZmFkOGVlMDAgbGVnYWN5LXRydW5rCisyNzQzMCAzZTg2M2E2NWIxYTQ0MmNkYzQ2YjM2MTQ2YjAxNGU5OWIzM2I4NmU0IHJlbGVhc2UyMi1tYWludAorMjc0MzEgZTg3ODk3NTFhNWNjYzM2NjUxNDhiZjFiOTkzZTA3MjkxMTcxMzNmYyBsZWdhY3ktdHJ1bmsKKzI3NDMyIDkyODM0YTI0OGMxNWNiZjdlZjNmYzE0ZDg0MThiOGE4MDMyYWU0OGUgbGVnYWN5LXRydW5rCisyNzQzMyA2MGU0MWE1NGU3YjEwOWIyMGJmMDEzMDM5NWUwOWFhOTMxMzI3MjdjIGxlZ2FjeS10cnVuaworMjc0MzQgMmM2ZjkzMWQ4ZGQyNTE0MWJiYTYwZTdiNDM2NzlmY2MzOGI3YzlmYSBsZWdhY3ktdHJ1bmsKKzI3NDM1IGM3OTQzMmZlYjg2MjE1NGFhODZmZjc4MjgwZjQ3NGJlZDYxZjE5Y2MgbGVnYWN5LXRydW5rCisyNzQzNiA1YWY5MDgxYTZjZDQwOWU0YWViMTA4YTMxMWYyYmFiYzZkMzAwMzg1IGxlZ2FjeS10cnVuaworMjc0MzcgMGQ5NzE2YzNiOGVjZjM1Yzk5MjRmZmUzMDQ4NGEzNjZmMmM2ZTBhZiBsZWdhY3ktdHJ1bmsKKzI3NDM4IGIxMjgyNTVjMmJlYTcwNzdkYjMyODllZGEyOGU0NDQ5M2E4NDUwNjggbGVnYWN5LXRydW5rCisyNzQzOSA4MTQyZjhkNjY4YTBmNGFiN2FhZmVlOTBiZWM5YmJiMzE3MjdjZTA3IGxlZ2FjeS10cnVuaworMjc0NDAgODZiMzc2MGQyODVkNjBmNmRjOTIyNmRhN2M4ZGJlMjdmNWVmMDNjNiBsZWdhY3ktdHJ1bmsKKzI3NDQxIDEzMTQ2NDJjYTA5NzZiYmYwZWJjNTYzYmJjYTg0NmNmNTJhODlhODUgcmVsZWFzZTIyLW1haW50CisyNzQ0MiBhMTgwNWE1NDY2NmZiYmZkOTFhMGM2ZjMyOGI1OGUyMTMyZGYwNzcyIGxlZ2FjeS10cnVuaworMjc0NDMgMzJkYjA3NWRlZjNmNTY0YjViNmIxZDAxMjdhZDRjNWQ1MDIxZjgzYSBsZWdhY3ktdHJ1bmsKKzI3NDQ0IDk1Y2NkNWJiZGM4NmQ0ZjI1Y2Q4ZjllOWQ0OTZiMzg3NGYwNTQ5NjcgbGVnYWN5LXRydW5rCisyNzQ0NSBhNTE2MmZkNjVjM2Q1YmIwZDk4NjJiODMzOTU5ZjRhYTliNjYyNDEzIGxlZ2FjeS10cnVuaworMjc0NDYgNzAyYTU5MDBkZjdkNjVmOWQ0MDY4YjI1MTAwODk4NzVjNjhjNjk2MyBsZWdhY3ktdHJ1bmsKKzI3NDQ3IDE4M2ViYTJkMjIxNDBjMWUxZWJhNWM2M2MxZTJkZmRiNmU1OTdhNDQgbGVnYWN5LXRydW5rCisyNzQ0OCAxNTQ0N2E1NTczYmQxMTQ4OTI3M2U1MTQxZTMwMGRlMjMwMDIxNDFjIGxlZ2FjeS10cnVuaworMjc0NDkgODAwOTEyZjdkZjJlMzkyYTA0OGQxNmZiYmQ5ZGNhMzIyNTRjODdiZiBsZWdhY3ktdHJ1bmsKKzI3NDUwIGU2NmNlZDQ4MWM3N2E0YmNiMjU1NDlkOWUzMDlhYWU4NWVjMmIwMGIgbGVnYWN5LXRydW5rCisyNzQ1MSBkNzEyNmMzNDEyOGE5ZDliZDEzMzY2ZjA5MTYwZmI4NGYxOWVmNTdlIHJlbGVhc2UyMi1tYWludAorMjc0NTIgNmZlZDEzNDIyYmIxYWFmZDEyMzk2MTljZmMzNWUxZjczYjFlZjFiNSBsZWdhY3ktdHJ1bmsKKzI3NDUzIDIyZDJmMDM3YWY5ZDNjNGNlYjQzYzZlYzUzNGZkNTBiYjJmYzUyZmQgbGVnYWN5LXRydW5rCisyNzQ1NCA4NmRmYjk2YTE4MzFmZDI3ZWFhM2EwYzMzNDVkMmYwY2YxNTI5Y2MwIGxlZ2FjeS10cnVuaworMjc0NTUgMzU1ZTQ2Y2MxMjRmZjExMTZlNDVjZjAzM2UyZjE0YmNlYTgwOTQ5MyByZWxlYXNlMjEtbWFpbnQKKzI3NDU2IGI3NGQ0YTU5NzkzYWFkNDQ3YjUxNWMyMWM5ZDcwOTZlYjcwZGIyNTMgbGVnYWN5LXRydW5rCisyNzQ1NyBiMTg1Yzg1OTUyZmU4MzhkNzA5YTM2MDVjYjdkNmJmMmFmM2I4YzBiIGxlZ2FjeS10cnVuaworMjc0NTggYmMwMGVlZWYwYWM3YmFjYzA0MzAxNTM2YTAyZWNiYzc2NzE4NjBlZSBsZWdhY3ktdHJ1bmsKKzI3NDU5IDQyOThlMjY5YmQ2NzIwMTA0MzhjYTNjZjg5NTVjMjI3YTlkNjgxYmEgbGVnYWN5LXRydW5rCisyNzQ2MCA0MDI2NTY1ZmE3ZWJkZmYxOTBiMmM1MjkxODFlNTVlODg5ODAzZjA0IHJlbGVhc2UyMi1tYWludAorMjc0NjEgYTJiNjc3YWY3YjI4OWQ2NWEwYzExNTA5MTI4ODRiNzY0NzM2ZGNlZiByZWxlYXNlMjEtbWFpbnQKKzI3NDYyIDY4OTk1ZTg1NGE4OGUzZDVkN2Y3YmRhNzc3NjQzZTE3MDYwZGY4YjMgbGVnYWN5LXRydW5rCisyNzQ2MyBkYmIxNGY4NWFlN2I2MGRkMzI4ZmYxYTZlM2E0ZGE4OWIzNzc3YzkyIGxlZ2FjeS10cnVuaworMjc0NjQgMmEyMDU3NDQwMGFmYjYwODgwYTQ1YTk4Yzg2MmE4YzQ2YTNmNTA3YyBsZWdhY3ktdHJ1bmsKKzI3NDY1IGY3YWJiZDE1YjRmNDgxOWIxN2QwYzg0YjIyMDA3NzlhYzkwNTdiMDAgbGVnYWN5LXRydW5rCisyNzQ2NiBjZmNmYjVkZjZlNjFjYzRiNTBmZTNjNTJiMDc1ODQ5ZDg2NjRiYjhlIGxlZ2FjeS10cnVuaworMjc0NjcgNTE0ODFiMzljZDg2NWMxZTdlZTRiMzIxZWE4MDI4ZmI2OTU0M2FlYSBsZWdhY3ktdHJ1bmsKKzI3NDY4IDBhMThlZjVjYjNlN2VkNzcxOThjNzMwZjJlOWY0MGMyNjM2MmNmMDggcmVsZWFzZTIyLW1haW50CisyNzQ2OSBmOGQ0MWUyNjQ5YjdlNWRlNzdiNjY5MTI3MTdlYjY4ODgyZGVkZDc1IGxlZ2FjeS10cnVuaworMjc0NzAgMjhmMmJhZTEwMzFiZjNmMDg1NTZhMzllMjhmNzEwOTIxZTlmOGZiYyByZWxlYXNlMjItbWFpbnQKKzI3NDcxIDQ2YTg0ZDJmZjRlMmFjN2EwMjhkYzRjMzFkZjFhNDM4MjJhZmZjMTAgbGVnYWN5LXRydW5rCisyNzQ3MiA2Njc2NjIzYjNiNzQyMTkxNmU3OTU0OWZlNzRiZDQzM2EwYTg3MGMxIGxlZ2FjeS10cnVuaworMjc0NzMgOGNlZWU2NjMwMzIyYzU3NTQ1NDM2YzM3NmIwNjEwZjRhODVmYzM2ZSBsZWdhY3ktdHJ1bmsKKzI3NDc0IGY3YzBkNjg3MWIwN2YwMzExZmQ2OTY5NjQwYTkzMjAwYTgxNWRlMTcgbGVnYWN5LXRydW5rCisyNzQ3NSA3MzM2ZjUxZmFhNDZjYjdlMWI1MjIwMzQzYTk1NWU0MjgwOTdkZjUyIGxlZ2FjeS10cnVuaworMjc0NzYgNmNkOTMyZmYwZjA5ZDhjZmU3M2Q2ZGQwZjE1YjczOGY5OTgxMjg4NCBsZWdhY3ktdHJ1bmsKKzI3NDc3IDgwMTYyZGJkNDdmMDEzMmZhNTljOGZkZjIwYzZjYWIzZGViNmU4NDkgbGVnYWN5LXRydW5rCisyNzQ3OCA4MDVjMjI4Y2Y3N2I2ZmZmOTIwYjk4N2E0ZTY0NTMyMjg3NmI0N2M0IGxlZ2FjeS10cnVuaworMjc0NzkgMzRkNzEzNzA5OGE3NTE5NDc4NTgxZTRjMWIwNThkMmNlMTI5NjFmMyBsZWdhY3ktdHJ1bmsKKzI3NDgwIGNiZGJiOTJlZmQzNjlmODQ5N2VhOGE4MjM0MTJmZDliNjE1ZTg3YjAgbGVnYWN5LXRydW5rCisyNzQ4MSBmMzVlMjlhYTBkOTI0YzQyNDViZTQxYjE1Y2FkMjIzOWQzMjg3NjdmIGxlZ2FjeS10cnVuaworMjc0ODIgZmY2ODczZDI4YTE0NjgzZTVjMGZiODQ2N2M5NjY5MGNmODdiMTgxZSBsZWdhY3ktdHJ1bmsKKzI3NDgzIGZhNmJlOWVlNmM5YzRlYjdmZGIzOTVlYzQyMjFjMjJkNjhkNmZmYTEgbGVnYWN5LXRydW5rCisyNzQ4NCAxMzI0MGI4ZjhjYTAxNDFhMmVhZmQ4OTAyNjJmNzc1NzdiOGViZjk3IGxlZ2FjeS10cnVuaworMjc0ODUgMWUwYWNiNDVjYThmMGZjZTFjNWY2NWFkMjFlYTViZDIwZmQwYzNlZiBsZWdhY3ktdHJ1bmsKKzI3NDg2IGYzNmZhMTBlYmZhMGMyNjA1N2VjZTNmN2U3MTI5OGFjZTAyZmI1MzYgbGVnYWN5LXRydW5rCisyNzQ4NyBmMzNiYjljMTMxZjhjY2U1NjQ0ODQ5ZGUxNWQwZDAxNmJiN2FjZTBmIGxlZ2FjeS10cnVuaworMjc0ODggYjUxYTU3OGY1NzY5YjVmMTk5OTk5OGFjZjUwMWI2MWQyYzk3NWYyMSBsZWdhY3ktdHJ1bmsKKzI3NDg5IGJmMzQyMWEyODc0NDZjZDIxNjgyOTgyZjNiZjI3YjBjNjA2NWVlNjUgbGVnYWN5LXRydW5rCisyNzQ5MCBkMzMyNDg0ZTM5NGE4MGI0NmYwZmYwZjY0YjUwYjdjNjRhMDYxMTUxIGxlZ2FjeS10cnVuaworMjc0OTEgYWE2MjE3YmY5Nzc2NDNhYzQ3OGRkMTA4Y2UxYTgzMGU0NDMxNTJmNiBsZWdhY3ktdHJ1bmsKKzI3NDkyIDVkYTYwNWQyYjU0NzdhNDExOTc0ZmVlMjZkODQwZGRiZGFhYWJmYWMgbGVnYWN5LXRydW5rCisyNzQ5MyBmMzgxMTJiODgzODhlNzhmYjM4YjY4ZDk0ZGJkOTRlZDlkOGYzYWJmIGxlZ2FjeS10cnVuaworMjc0OTQgN2RjZWYyZjg3MDY4MjI2ZGM3ZGJhOWIyY2JkYWEwYzI4OTQxOTFhNiBhc3QtYnJhbmNoCisyNzQ5NSBlMzMzOTNjZTRjNTEzYWQ3YzJlYzA3NDVhZmJhMTQyOGZhZTRjMTkxIGFzdC1icmFuY2gKKzI3NDk2IDMwYzdjYzVmMjU4NzNlZjg3M2JhZmYwYTA5YzU2Mjc5NGFhNTExYTIgYXN0LWJyYW5jaAorMjc0OTcgMzNmMjFlYWJjMTU1MDZkZDViZDkxYjYwMTU3YWI3NjUwNWY0NjcwNyBhc3QtYnJhbmNoCisyNzQ5OCBjOTZlNTg0MzhhOWYxNjUzMzhmNzJkNGYyZGQ2ZGViNjYwMGFmMGQ3IGFzdC1icmFuY2gKKzI3NDk5IGY3NGYzYzMxOTA5OTNkYTI0OTZmNjRjYTIxNGNkODlhM2MwZWM0YjAgYXN0LWJyYW5jaAorMjc1MDAgYzQyNjM2MzA2ZTk2YjZkMDg3ZDA2OThjZjVlOTIzOWI5MmQ5M2Q3YyBhc3QtYnJhbmNoCisyNzUwMSAyYTZlYzk5MjIyOGJhN2EzNWYwNGYyMTRmZGYyNWZlMGVmZDM2MjhlIGFzdC1icmFuY2gKKzI3NTAyIDg0NGYxMjlmYTEyODUyODU1NzdjZTQ1NTkwMzkxMWQ4ZDA0NmI1YzAgYXN0LWJyYW5jaAorMjc1MDMgZmRmODBlMDRlNGJiZDEyYTFjMTZiMzNkYjA3NzM5MzI1MWFmOTg5ZSBsZWdhY3ktdHJ1bmsKKzI3NTA0IDMxMTM3NTQ2NGZhYzMzMmFjYzMyMjQ3YzhmMDE4NDc0NDY4NmIwMjEgYXN0LWJyYW5jaAorMjc1MDUgOWU2M2IwZjQwOWQ0YjM2MDY3YjdjMzYxNzU2ZTMxZmQ2ZmE0MTJlZiBsZWdhY3ktdHJ1bmsKKzI3NTA2IDc2ZTlhMTRmYjdjNWEwYWYzYjk2NzlmZTg4ZjRlYjIzNzcwZGRjZDUgbGVnYWN5LXRydW5rCisyNzUwNyAzOTliMDlhMjdhZjMxNGI0NzBiMzE2Mzc5NWYyOWJiM2U5ZmU2NzNiIGxlZ2FjeS10cnVuaworMjc1MDggNzA3YzZmMDI2MTQyYTQwZDZiNWQ4NmQxNmQyZmQ5NGEwOTllOWFjNyBsZWdhY3ktdHJ1bmsKKzI3NTA5IGU1ZWNlZjVhMTIzYWQ4OTBmMzUxMjE2YWM3MmZhYzdmNTQyODExYTMgbGVnYWN5LXRydW5rCisyNzUxMCAxMmYyYmU4NWRhMjU5YTUyNjMwMTliOTRmM2VhNGYxN2Y1Y2M0MmVkIGxlZ2FjeS10cnVuaworMjc1MTEgOGRmYWNiMDZjM2QxYTRmMTAyYWIxYzY4MjIwYmY1ZjEwNjllOTlmYiBsZWdhY3ktdHJ1bmsKKzI3NTEyIDg2NWE3N2NlNDBhOWY4NjNkNzQ0MzJiNmEwMTk5MTNkM2VjNWYxM2UgbGVnYWN5LXRydW5rCisyNzUxMyA3YzFhNzZiNzg3MTIyMmMyYTE5YmQyYWU4ODQxYjA4ZmY0MmVlZDdhIGxlZ2FjeS10cnVuaworMjc1MTQgYTQ4M2M1ZGRiN2YxYjVlNzExMGZiZDliMGVmMTk0NzYyNDFlM2Y1YyByZWxlYXNlMjItbWFpbnQKKzI3NTE1IDE3NmFkNzA2YWZiYzU2YmI3MzdkMzczMmUxZWYyNGFhYWE0MjY2ZDUgbGVnYWN5LXRydW5rCisyNzUxNiBjMzZiZTc5ZmRiZWExNzE2MDNjNDUxOWE3OTFmOTZhNjBjZGVlMGYzIHJlbGVhc2UyMi1tYWludAorMjc1MTcgYWJlZGM1Y2VjYzY0OWQ3M2M5NGZkMTAxOGIwOTAzNDY4NmMwZWM0NSByZWxlYXNlMjItbWFpbnQKKzI3NTE4IDM5YzBiZjIwMWRiOWM0MzFlYTlkODQyM2JhNzc2NjgwOWVhMThiMjQgbGVnYWN5LXRydW5rCisyNzUxOSA0MGJkYTNlMDkwZjY3YmE2ODRiM2Y2Zjc2ZDQzNjUwYTIzMmMxMDc3IGxlZ2FjeS10cnVuaworMjc1MjAgMjFiZDg2ZTAwYmNlYzFiMzM0NjM1ODA1M2IxNDkyYWIxYjkwZGU1MCByZWxlYXNlMjItbWFpbnQKKzI3NTIxIGU5ZTYxMTFiZWVjMTcxOWU4ZmRkNTk0ZDRlMTIzMTMxODQ5OWI0YWMgbGVnYWN5LXRydW5rCisyNzUyMiBkN2Q4MTZlMWY1MjI2NGFhODQ5ODJiMTFmM2ExODMwNDBlNTA5MTlhIGxlZ2FjeS10cnVuaworMjc1MjMgNzE4OTA5MTIxNzM3MWJmNGJkNzg4MjIyYzllZGJhMzQ1NmU3ODZiMyByZWxlYXNlMjItbWFpbnQKKzI3NTI0IDY5ZmQ4MjY1OGJmYjMyNzQ4MTk1NjczNjRhZTZjMDFlZmMxMTQ4YmYgbGVnYWN5LXRydW5rCisyNzUyNSBiZTAyZDUxNGI5YTY2OTZjMjBjN2JmYjNlMTdjOWUxNWE4NjQ5MWQyIGxlZ2FjeS10cnVuaworMjc1MjYgNDgxMDgwZjcxNDM5YWIzMmJlY2I5MDZiYTBiOGNmMGQwZTllZmQxMiBsZWdhY3ktdHJ1bmsKKzI3NTI3IDdiY2Q4MTc3NjI4ZjM1YWE2YTM5NjhhODNkMDE4NmM2OTkyMzE5MWIgbGVnYWN5LXRydW5rCisyNzUyOCBlYTAzODQzNzU0YzAwMjRlNzQzZWQ5MjUyODQwNjY3N2UyNzNiZjg3IGxlZ2FjeS10cnVuaworMjc1MjkgNTYyZDdmOGE4MmExOWJiMzJlMWRhODNmMTQ0MzI1NTBjNGNiYTJkMCBsZWdhY3ktdHJ1bmsKKzI3NTMwIGJiN2MzOTZkZTNhYmE3ODBhMTBhMjM5NjhkYjU3NjM2ZDM0YWIwODUgbGVnYWN5LXRydW5rCisyNzUzMSBhNTlkZjJmYTRlYzhhZmY0NjY4MzkwMzhhNjU3Mjk4ZTdkMzIwYzVjIGxlZ2FjeS10cnVuaworMjc1MzIgMjA4ZmIxZDYxMTQ4NGU3MTFjMDRmZjI1YzdkZmEwMDBhZjQxMDk4NyBsZWdhY3ktdHJ1bmsKKzI3NTMzIDk0NTZhMmNjZGE2MTBhMWRhNGRjZWZkYTQ3Mjk3NjJmN2FmNWZkYWQgbGVnYWN5LXRydW5rCisyNzUzNCA0NGMxOTY5OWZhN2VmOWRkM2YzMjkyYzlkNjhkMDkyNDA3MjQ1OTkyIGxlZ2FjeS10cnVuaworMjc1MzUgOWRkZWQ2ZjE4ODE5MWQwODc0NDQzMmQ0ZDg0MzQ4YjJjN2I0Y2ZkYiBsZWdhY3ktdHJ1bmsKKzI3NTM2IDIzM2E1MGUxMGU2NmJhNGNmMDM1ZGZkZjc5NjJlODMyMGJhMWNiNDUgcmVsZWFzZTIyLW1haW50CisyNzUzNyBjYjcyODE0MWFlMTJhMjUzY2Q2ZTViNDEzYzUxMGYxZGM1MGM0ZGFiIGxlZ2FjeS10cnVuaworMjc1MzggNjM3ZGZjZDk2M2I5ODMyYTRiODUxZGQ3ODA1MGQ2NjIzNTQ3N2ExMSBhc3QtYnJhbmNoCisyNzUzOSBkNGQ1YzM0MGUwNTQzODJiMDc4ZWQyOGJlNzAwM2YzNzJiYjg0MzcyIGFzdC1icmFuY2gKKzI3NTQwIDIyYjIxMmRkODZjMWRhM2M1ZGJkNjY4ZmRiYWYxNTkwYWExMTkyNWMgYXN0LWJyYW5jaAorMjc1NDEgZmQxNzM5NGY2ZGNlZTFiOGYyNzgwZTA0NDBhNTY0NWM2MGEwNjhmNCBsZWdhY3ktdHJ1bmsKKzI3NTQyIGU2ODVmMzJkODA2ODhkMThhOWFkM2MzMGVhOTM2OGJhNDAyNTg1NDMgbGVnYWN5LXRydW5rCisyNzU0NCA4ZWUyYWI0ZjJhMmQ0OThlMmEyMDdiZTQ4NjIxOTM1ZGFkNDVlZWEwIGxlZ2FjeS10cnVuaworMjc1NDUgYTM4N2Q0ZTUzOWMyZDgyZTdkYmFlM2JhNzk1YmQ0MDJkZGI5ZmU3NCBsZWdhY3ktdHJ1bmsKKzI3NTQ2IDc4YWIwODZhMzU0ODQ2ZmNhODg1NDdkODZiZTlkNjU3NjY0YTcyODkgbGVnYWN5LXRydW5rCisyNzU0NyAwOTU0MjZhZjRhNDI0MDY2NDY5MjIzNTI3MmYzZmEwZDgwYTlhODI2IGxlZ2FjeS10cnVuaworMjc1NDggODBkYTk1MWM4OWZiZTE0MWUxNzQyMDE5MzUyMTAyNzljYWRhMzZiNiBsZWdhY3ktdHJ1bmsKKzI3NTQ5IGQzZTQ5MGE1MTQwOGI4OGZiODg5YTQ1ZjNkYTNjYTQwODk3ZmI3ZDYgbGVnYWN5LXRydW5rCisyNzU1MCBmZGQ4MzY1NzUyNDhmODY5ZGY4M2MzOGJjZGNhYjM1YzIwZDFlM2NkIGxlZ2FjeS10cnVuaworMjc1NTEgYzMxYWZlYTg4OTM0ZTA2NDY4MjEzOTJiZDI2N2IyZDUxNWNkZTI4MyBsZWdhY3ktdHJ1bmsKKzI3NTUyIDBjYWI0ZTRmZGNmMzgwYzYxYTFkOTkyZDRkMDdiYTRmNzBlMTJiMzUgbGVnYWN5LXRydW5rCisyNzU1MyA1ZTRiOGQxZTlmZDZiMmI5N2QwYmU0MGY1NzM0MzNhM2FmNmI2ZjM2IGxlZ2FjeS10cnVuaworMjc1NTQgMzcxOTU0Nzg1NzM5ZjU3NDYzZDg2M2M3Zjk5OGI4NTQ5YzBmZDBiMiBsZWdhY3ktdHJ1bmsKKzI3NTU1IDJhYmY5ZTk0MDI3NGYwOGZjNDVlYThlMTFhZTZkMWYzMjljMmZkZGYgbGVnYWN5LXRydW5rCisyNzU1NiA0M2ZiYzY3Mzc0YTU3YjZlZjY2MDM3NDdlNWJhN2E0ZGRmMmYwM2IyIHJlbGVhc2UyMi1tYWludAorMjc1NTcgMjVmZTNhMGE4MGZiODYyMzhjYWRhYzcwMjk4NWUyMjdlY2U4YTgxZiBsZWdhY3ktdHJ1bmsKKzI3NTU4IDk4YWQ3NzJkZWZhYWJiYzIwNmMzOGViOWQ2YjhhZmYwNmYzYjRiNGUgcmVsZWFzZTIyLW1haW50CisyNzU1OSBhMDM4YWJkMDhlNGFiNTJiMGJiNGIyYWIwYzg2NGY1YTQ4YjVhYjU0IGxlZ2FjeS10cnVuaworMjc1NjAgYzg5ZDMzM2ZlMGZlMzQ2NzE2NTc1ZDgwYTQ3MjI5MmMzYjY1ZGY2YSBsZWdhY3ktdHJ1bmsKKzI3NTYxIGI5OTNlNjUxZWI3NDVmNzg0NmEwMmJjMjc4MDU0ZjA3NWU5YzUyZTAgbGVnYWN5LXRydW5rCisyNzU2MiBjYjczZTg5MWQzZWUzZjYwYjI5NTZhOTBiYjllMTBkMDhkM2YwMDQ2IGxlZ2FjeS10cnVuaworMjc1NjMgNjNhODg3ZDhhMWUzYTUxOTNhMjdmOTczMjEwMjc2NTg0Y2U0ZDViOSBsZWdhY3ktdHJ1bmsKKzI3NTY0IDVjMTUxZDk1OGZjMTQ0MjExM2M1MjFkMjI0ZDZhNmQzYWIzMDYwY2EgbGVnYWN5LXRydW5rCisyNzU2NSAxNzIzYmNkYzFlODU0ZTg5MWI3OWQ1NzE1MTU3NTdkZDUxMGE0YmYwIGxlZ2FjeS10cnVuaworMjc1NjYgYzRkY2I4MGY0OGVhMTU4ZWUwNTU0NGE0OTE3NDU3NmY5ZjY3OTEzZiBsZWdhY3ktdHJ1bmsKKzI3NTY3IGEzM2YyZGQ0NjQ0NGI2N2QwOWNhZDUyMTZhMWJiOGE0OGI2YjdlNjYgbGVnYWN5LXRydW5rCisyNzU2OCBiZWM1YjY2MTA2MjI5YzcwYTg5NTA2OWZhMzRkODE2NjcwMjI2Y2Y3IHJlbGVhc2UyMi1tYWludAorMjc1NjkgOTgyYTkwYTRkNjdiODNlMzhiYTJiY2UzNzczNDgyNzVkY2FmZjZhYiBsZWdhY3ktdHJ1bmsKKzI3NTcwIGRjMjBjN2ViNDM0ZjUyMWFlNjdhYzlmZDhiYmI5Zjc3Mjc3MjRjNWUgcmVsZWFzZTIyLW1haW50CisyNzU3MSBjY2U5MzE2YTYyZjg4Njc4YzUwMWUzZTBmMTUzYWViZTFmNTBhODIzIGxlZ2FjeS10cnVuaworMjc1NzIgYTJiY2IwMGRjYmQ1OTViMTE0OTVjMTM3Zjg2ZjQzYTkyNTA3ZmIzMiBsZWdhY3ktdHJ1bmsKKzI3NTczIDdiNWU2MTM3M2Y2ZWRjOWJkNTAwNTk4YjM0NTc1YzUyMDBiYmU2ZGYgbGVnYWN5LXRydW5rCisyNzU3NCBiOWYyM2UyMjUzZjg4N2MyODg1MDQ2Mjk4YjFiN2RlZTVjMzNhY2JiIHJlbGVhc2UyMi1tYWludAorMjc1NzUgNmViNzRlODNhNmYxMWE0ODM5NTA5ODM2MDU3NDY0ODEwMjJjMzk2NCBsZWdhY3ktdHJ1bmsKKzI3NTc2IDA3ODA5ZjZhNzk2OGIyN2RhZmY1MDY3NDVmZGI2ZTYxM2Y2ZTQ4ZmYgbGVnYWN5LXRydW5rCisyNzU3NyBiZjY0MDE4YTY0ZmY0Yzc1NGNlMTAzZjBhYmI1ODQyN2E0OTg3N2E4IHJlbGVhc2UyMi1tYWludAorMjc1NzggNWNjYWFhZDRmMzNiMWJhZmM4ZDYzMWZmYjk1ZWNhYmMzZmQ3NDllMCBsZWdhY3ktdHJ1bmsKKzI3NTc5IDNkMWYzYjdhZGUwNzM0MzM5NjM3NWFkNmY0MWVmYjA1Nzg3MTI1ODggbGVnYWN5LXRydW5rCisyNzU4MCBmMDI1OTllYzVjYjkzMTA2ZjNjMzIyN2EzMGEyYTdkNzBiMDQ3ZTk2IGxlZ2FjeS10cnVuaworMjc1ODEgOTkwZmMwNGNmMGQ0MDAxNDE1NTE1ZTlhNTY2NGEzNjhiZGVkNmI1NyBsZWdhY3ktdHJ1bmsKKzI3NTgyIDBiNmEyYWU3MDZlMjFhODc2MWE2NGQzZjU0NzQ5MjRmNzI0ODk0YjEgbGVnYWN5LXRydW5rCisyNzU4MyA3NzRkYzA3ZjFjMTZlMjM5NmUwOTQzMzFkYzZjMTAxYTMzZDc5YTAxIGxlZ2FjeS10cnVuaworMjc1ODQgOWRlYmEzNWU2MjRjYmY5NTIyYjY2N2FmM2Y0YTE0ODM3NTc1NzZlYyBsZWdhY3ktdHJ1bmsKKzI3NTg1IDA4MjAyM2MyMGNlZjIyNTA1OGUwYTVhN2ZmODMxZmNjMDhkNDNjMmIgbGVnYWN5LXRydW5rCisyNzU4NiBlNDhhNGIwYmRiYjU1ZGE0OTZkZDVmNGEwMzJiNmU4NWU3MjRjZTc1IGxlZ2FjeS10cnVuaworMjc1ODcgZjIwMTJkYjE2MTZjM2U1NjkyNDcyMTU0ZWI4YWM4ZTM4NzA1MzU4ZSBsZWdhY3ktdHJ1bmsKKzI3NTg4IGZhOWFmMjQ1Y2ViNGVhZDI1NjVlM2ZlOWQ0MWNkYTJhYmY3YzA2NmUgbGVnYWN5LXRydW5rCisyNzU4OSA1NjFlMzNhNmEzMTM4NDE3YzZkOTgxN2E4YTM2MGVlZWMyYzA4Yjc3IGxlZ2FjeS10cnVuaworMjc1OTAgZWZhYmMxNTExZGMyNzFlYzA5N2I0NjlkY2ZkY2Q3MTA2ODI4YjZjNCBsZWdhY3ktdHJ1bmsKKzI3NTkxIGE1NDY1OTM5NjhkNjRkZjQ2NTlkNzYyNzUzOGM0NzliYWY4YTZmZGYgbGVnYWN5LXRydW5rCisyNzU5MiAyNTM2N2M3YzQwYTRjNmRlNTQwODE5MDg5MmFkYzIzNDQ1ZDIxNGRkIGxlZ2FjeS10cnVuaworMjc1OTMgMDZlZTg2MmQ5ODE1NDM0NDk1Mjk2MzQ4NjcwODg3Yzc5ZmIzNWRhMiBsZWdhY3ktdHJ1bmsKKzI3NTk0IDI5NmRkMzI0MjVkNmE3M2Y0ODlkNDllNDc5M2VkNWVkN2ZlMGMwMDggbGVnYWN5LXRydW5rCisyNzU5NSAwODY3ZGE1ZTg1NDg5YWM4NTVmOTcxN2FlMWQ5Mjc0ZjcxMmMxMTI1IGxlZ2FjeS10cnVuaworMjc1OTYgZjBhMmVjNzhiZDA1YzM3NTdhZTA0M2NhYzUxM2E4MjllZTRjNzA2NiByZWxlYXNlMjItbWFpbnQKKzI3NTk3IDE2MzE0ZmY1OGVmNDgwNTJjNWMzMmU2OTBhMWE1NGRjNTdlMzliMjQgbGVnYWN5LXRydW5rCisyNzU5OCBjOGExOWE0MjgzNTg0YmI5YmNlYWVhMGUyNzE4NmJiMjY3ZmIzNTdjIGxlZ2FjeS10cnVuaworMjc1OTkgNDk0YThiZWI0NTgyNjVhMWRiYTU1MGFhZTJhYzJjYjg0YTk3ZmQwMiByZWxlYXNlMjItbWFpbnQKKzI3NjAwIGRmZDg1ZTkwMjNmY2JjNDk2YjliZTRlZTRkOTVlMGU0YjBkM2RlYzIgbGVnYWN5LXRydW5rCisyNzYwMSBkYWE1YjE0NDkyZWU5MDlkYTJlZDFhMjkyMjg3ZWU3NTQ3NmZlODYwIGxlZ2FjeS10cnVuaworMjc2MDIgNzZhZjhiMzA4OTRhN2NmOWYwNTM0ZTUxMTc0OTkwZGM3ODIwOTNlZCByZWxlYXNlMjEtbWFpbnQKKzI3NjAzIGFkNWYzYTA1MjZkMWY0M2U3ODE0MGZiMGMwOGRkMGMzZjRjNGQ2YTcgbGVnYWN5LXRydW5rCisyNzYwNCA1NjU3ODFlYTEzN2JlMmJkYzUyOGMzNmI1Yjk1YmNiYmY3NWIzODU1IHJlbGVhc2UyMi1tYWludAorMjc2MDUgNDJlZDAyYWZhNjNiZjc2YjZmYjRkZDU1NmI3OGMxYTJkYjc5Mzc2YyBsZWdhY3ktdHJ1bmsKKzI3NjA2IGIzNDcyMzM3ODNlZTM5M2JjZWM1YmJlODc2M2ZhYTY0NzY1MjY3NGIgcmVsZWFzZTIyLW1haW50CisyNzYwNyA5YmVhMmMwYzgzOGU2YzY3Nzg0NjRjOGFhM2NiMGZlZDJjYzAwYzUzIHJlbGVhc2UyMS1tYWludAorMjc2MDggNjJkOGY5NzQ4MTFmMWE0NjI2ZTk3ODFlNzk0YmUxZmIyMzMyNmQwNyBsZWdhY3ktdHJ1bmsKKzI3NjA5IDhhNjdmMjhhNDJhNWRjMThjZjUwMTZiOWYyZTJmNzUzNmYzY2JlYzIgbGVnYWN5LXRydW5rCisyNzYxMCA1YjY2ZTYzZDdhYmI3MGQ0ODRmMzhjZTkwNTRiMGI1MDY4NTQyNTBhIHJlbGVhc2UyMi1tYWludAorMjc2MTEgNDBkOTY0OTNhNDI5NTFiZjliMjY2NWYxYTc0MmJmMmQxYzM3YWM0NCBsZWdhY3ktdHJ1bmsKKzI3NjEyIDI4NjBiZTI0NDI2M2U0MDQ5NzRjN2Q3OTQ5OWRmNDMwMzM1YTkwMGIgbGVnYWN5LXRydW5rCisyNzYxMyBiNjIxMzg0M2Q4YmVkMDBlZDAyNjMxYzIxM2ExZWRmZGI1ZTI1ZWI2IGxlZ2FjeS10cnVuaworMjc2MTQgZTA2YjFhYjBiZGI4MGMzNDg0YzFmODQ4MWYwZTRkMDI0YjQ4MmZhMiBsZWdhY3ktdHJ1bmsKKzI3NjE1IDExYzQyNTM2OThkYzczZGNhNGY1MDg2YzhlZjEwNWNiN2Y3NmZmZDQgbGVnYWN5LXRydW5rCisyNzYxNiBjODkxN2I1OWMwNjU5YWEzOGY1M2Q4NjI3MDc3NzgzMDgwMDFkZTYyIGxlZ2FjeS10cnVuaworMjc2MTcgNzNhODg0NDg3YTc2NjgwYWIzYTI2YTg2YmQwM2I5YWE5OTRjMjA4OSBsZWdhY3ktdHJ1bmsKKzI3NjE4IDJiZTYzZTIwYTQ5ODJkNWFiNzQ5MWU4ZjJjZWZiZTZmYjU0MjVjY2UgbGVnYWN5LXRydW5rCisyNzYxOSAwNTk3N2M1Zjg4MGNmOGExY2NjOTBmNDYwMzc0YWM0OGEzODUxOTI3IGxlZ2FjeS10cnVuaworMjc2MjAgMzg5NWI3OGQzZWUwY2VjZjVkODJlODY0ZGMyOGEzMWMyNzUxMGMyOSBsZWdhY3ktdHJ1bmsKKzI3NjIxIDUxY2RhNmU4NzY0YTZlMjJkNTczMmM2YzBiMmRhYjQ4MTM2MzE1M2QgbGVnYWN5LXRydW5rCisyNzYyMiA5ZWFmYjRjZWE0N2E1YzkwMDNmNmJiMDhkYWJjOGExODExNTM3NWYyIGxlZ2FjeS10cnVuaworMjc2MjMgZmMyN2ZmZTIwMzZhYTEwZmU3MmViYzY2ZWVkODUyY2NjMjI1YzZmNSBsZWdhY3ktdHJ1bmsKKzI3NjI0IGEzZmMxZDhlMGFlODFlNGEzZmQyMGVmOGJmZGQwMWIwMzczNzI0YjYgbGVnYWN5LXRydW5rCisyNzYyNSBjNDIzYTg4YjIyY2VkMzQ2YThjNGMzNzhmZjdhMmRkZmU4MjllMTI0IGxlZ2FjeS10cnVuaworMjc2MjYgZGE0YzcxMjAxNDNmMDhkOTMzODUxMjQzOWZlYThlZmIyZDQzM2VkYSBsZWdhY3ktdHJ1bmsKKzI3NjI3IDUwNDQzMTI3YjIxZGM0OTcxODIzNGMyNGFkYjg1NTUyZWJmYzgxYzkgbGVnYWN5LXRydW5rCisyNzYyOCA5YTU4ZDY0ZjhmYzNmZDUyNjRjNjgwYWEwMGNiMzcxYjEyOTUxYzQ5IGxlZ2FjeS10cnVuaworMjc2MjkgNWQzZWMyOGU5YTdhZDNlODBjYTI0MjZmZTA2OTIxZmU4YmM3YWZkMyBsZWdhY3ktdHJ1bmsKKzI3NjMwIDMwNTQyMmQ2OWQzMTMzMmRhOTkzMWQ1NGEyY2UzYjIxMzUyNTExZjUgbGVnYWN5LXRydW5rCisyNzYzMSA0YTdiM2JhYzM4MTI4N2IyNDE2Y2Y2MTM3NDY0ZTlhMjI2NjMzNjcxIGxlZ2FjeS10cnVuaworMjc2MzIgODA0ZWE1MWNmY2U2ZTJjMDMyMTJiNTNmOGU4NDcyNGE0NTYzODNkNyBsZWdhY3ktdHJ1bmsKKzI3NjMzIDdkMDk4MjA1NmY3MmI1N2Q4N2E5MzVhY2I1N2MzZGZmMmM4MzdiZTQgcmVsZWFzZTIyLW1haW50CisyNzYzNCA1NTQyYmYwYmJjZTIzY2I4YmEyZDIzMWQzOGVlMGY0ZTNkYjFmNWZjIGxlZ2FjeS10cnVuaworMjc2MzUgNjJmNGI0NWIwNWZkZGExM2I5NDQwMTk0ZDc2YTE2YzIwZjFiMDhjNSBsZWdhY3ktdHJ1bmsKKzI3NjM2IDgzMTIwZjVhNDhjMjEzOWVlZGJlYzgxNDVjZWI5ZWU1OTNjZWFiYTUgcmVsZWFzZTIyLW1haW50CisyNzYzNyA0MWM1NGIzN2UwMzA4ODQ3MmFiN2FmMDE1ODQzNzMxOTcyNTI5MzE3IGxlZ2FjeS10cnVuaworMjc2MzggODhjZDI3ZGI3OWI5M2YyODU1ZjBlZmViODU4MzY4MTI2MmVlYjNjNiByZWxlYXNlMjItbWFpbnQKKzI3NjM5IGE2NzE3Mjc1MTk1YzkyOTAzYmNlNjBjOGY2ZWMyOGVhMWVkNmYwZGEgbGVnYWN5LXRydW5rCisyNzY0MCBlYWM1NGE4MzI3MmY0MjAwZTlkYWUxZjJhNTVkN2EwMWQzZWRmNDA3IGxlZ2FjeS10cnVuaworMjc2NDEgMmY2MGY5MGNlMzA5M2RiYjE1OTcxMzc2NDY0YWE3MDkzYmRkZGYxMiBsZWdhY3ktdHJ1bmsKKzI3NjQyIDZhYTJkMDllMzJjMTNmYjU2Yzk2ODFiZWYyMTYwNDc0MmRiYTgzZDAgbGVnYWN5LXRydW5rCisyNzY0MyAyN2U5NGNhY2I0M2JkNmMzNGZhZjU2MDBjZjA3NTBlMTNhNWI3NzBjIGxlZ2FjeS10cnVuaworMjc2NDQgM2I1NzFlMzJhNmU0NWZiODI1YmJiNjlhOTYxZmIyMGQyZTUxMGFlYyBsZWdhY3ktdHJ1bmsKKzI3NjQ1IGU2MDMzMjU0ZGYyMTQ1NWI4ZmM0MTQ1ODUyOTNlNTI2ZTQ2M2NmMGYgbGVnYWN5LXRydW5rCisyNzY0NiAxOGMxYjI5MGU0ODQyOTc0NzIzZjMxMjZjZDRmY2VmZjI1YTIyMjdhIGxlZ2FjeS10cnVuaworMjc2NDcgNGE1YzZmNjk0NDdkNmI5ZmY3Nzc4YjIwYTVjZTAyY2NjNTkwMmQ4NiBsZWdhY3ktdHJ1bmsKKzI3NjQ4IGQ5OGIwY2RmN2U1MWI2YTE5MGZhNDAzNDNiM2E4Yjc5YzEyMjRjOTAgbGVnYWN5LXRydW5rCisyNzY0OSA3NmNkMjg2ZTdkZTVlNzc5NWI5MTkzMDVkOWJiNmYzZWQ5NzRlYWFkIGxlZ2FjeS10cnVuaworMjc2NTAgM2EzZTA3MWQ4NGY5ODVmZGMyMzk5NTYwN2Q3OWNhZTZhMGZlNGZhOCByZWxlYXNlMjItbWFpbnQKKzI3NjUxIGQ3MjM3MDM3ZjM3OTRkOTI0NzQxZmY5OGUzODQ4ZjczMDFkOGFlNTkgbGVnYWN5LXRydW5rCisyNzY1MiBhNGY0Y2U1ZThhYTk5MTRlMzIzMDdmNTg4Zjc4MDVlYjBjYzUyOTUyIGxlZ2FjeS10cnVuaworMjc2NTMgZDFiMmJmZDkzYTI3MDg5NTBjYTBjZTZkNmIzZjczNWIzOWRmYjcwMCByZWxlYXNlMjItbWFpbnQKKzI3NjU0IGMzY2YyMjMzOGUxY2U5NDcyOGZmZDdjNDg5NGFlNTQxNjYxODM4ZGEgbGVnYWN5LXRydW5rCisyNzY1NSBjMzIwYTA3ZjAxNDY3MWEzZTMwYThkM2MwMTMyODlhMGNjNjM0Nzc2IGxlZ2FjeS10cnVuaworMjc2NTYgMWNlYmNlNTBmZTcxMjI0ZDEwOTRjNjVkYTBhMzQ5NTk3ZWJmODliMiBsZWdhY3ktdHJ1bmsKKzI3NjU3IDk5ZGE5MzY4M2VhNWIyNTQ4NjBlMTYxM2YxOTBhMDQ5NGQwZTM2YzkgbGVnYWN5LXRydW5rCisyNzY1OCAzNTI5YWQyMTM5NTU5NDNkMzQ1OGExMDI5MjI3NmI2NWFlN2Y1MTUxIGxlZ2FjeS10cnVuaworMjc2NTkgZWIwNGYxN2NjMDA4Y2E3NTMzZDc0OGQzN2E1M2RiMGY5N2U5OGE2MCBsZWdhY3ktdHJ1bmsKKzI3NjYwIDcxZjFmMzVjMDM1NzM0NzZlYTM5ODMxMzU0NjdmMDQwN2RmMGQwMWYgbGVnYWN5LXRydW5rCisyNzY2MSAxYTcwM2Y5YmJkYzBmZWRjYWNlNDc5Zjc1NGZhMzE5Mjg3NmRmMzI1IGxlZ2FjeS10cnVuaworMjc2NjIgMTU5OGExZTQ3M2UyNDc5OGZkNTlhY2RiMTQzYmM2MTY3NjgzMTQ1OSBsZWdhY3ktdHJ1bmsKKzI3NjYzIDgxOWM4MDMzNzA1Yjk1NGY1NTZlNzJmZWFjMjM1ZjdhMTBkOGMyNjUgbGVnYWN5LXRydW5rCisyNzY2NCA5NzA3ODZkMDJlODA1ZGYxN2Q0ZDliNjQ3MDc3YzRjYTFkYmY2NGU5IGxlZ2FjeS10cnVuaworMjc2NjUgYzBhNjdhMWNhYjA5Yzk3MzdjMjFlN2EwNzQzMzRlNWZlMGU0MDhiNyBsZWdhY3ktdHJ1bmsKKzI3NjY2IGQ4OTA5NzkyMDA1YWI4MmVkMWJjMmIxMzEwZmRkYWY2Y2QxODRiMmIgbGVnYWN5LXRydW5rCisyNzY2NyA0NDUyMmE3NWRlZWNlYTk0NGM4MzJlZmU0ZDM5ZDY3MTExYjIxOTAyIGxlZ2FjeS10cnVuaworMjc2NjggNGU4NTMwNmE5YmJmYTgxZWM1YmU1ZjM4NmIxNDMyODFkMmVjODYyOSBsZWdhY3ktdHJ1bmsKKzI3NjY5IDE1NzZhMmRmZjAxZjhlOThhMjU1YTFlODdmNTYyNTNmNGQ1NTM0N2UgbGVnYWN5LXRydW5rCisyNzY3MCBkODE0YTczMTkyNGEzMTVlYTU5N2VlMmRjNGRmNGQzOWNhYWIxODE3IGxlZ2FjeS10cnVuaworMjc2NzEgYjU5NjJiNTg3Y2MwOTI5ZWExY2ZmNGQ1ZWVhZGMwMjdiMTZkMDE3ZSBsZWdhY3ktdHJ1bmsKKzI3NjcyIDA5ZTRkZTVkY2IzYmFiMWVjZDQ4ZWM1NDhiNDc5MzhjZjZmNWZiNjUgbGVnYWN5LXRydW5rCisyNzY3MyAzY2FjZWYyNDllYjU1MGIyNjMwMjZjOWFkZjY3MTU2ODMzOGYyNGI1IGxlZ2FjeS10cnVuaworMjc2NzQgMmQ0MDc0ODRhNGU2MzM4ZWZmNTQ2YzFkZWM0ZjA1YjkwNGRmZmNjOCBsZWdhY3ktdHJ1bmsKKzI3Njc1IDY0MDM3MGYwOGUyYWYyOTk2N2JhYjg4YWZjNDE0YTZhNGQ1Y2FiY2MgbGVnYWN5LXRydW5rCisyNzY3NiAwYTA4ZWQwNWJkNDI1YzBhMTZhZjcyNTFjM2JjMTgwYTNkNjFkYmRjIGxlZ2FjeS10cnVuaworMjc2NzcgYTI2Y2E4YWIyN2YyYjIwMTUxMmE5ODUxNGYyZWRkYWEzZmZlNzc2ZCBsZWdhY3ktdHJ1bmsKKzI3Njc4IDg3ZTI1MzRlOWQ2NGIzNzA1MGMyNzA3Zjg4MjlkYzU1Zjg3ZjRlYjIgbGVnYWN5LXRydW5rCisyNzY3OSBlNjYyMjI2MjExZTUzOWNhZWRmZDE0YzljZTIzYmZiODQyYzg3ZjAxIGxlZ2FjeS10cnVuaworMjc2ODAgMzc5YjAxZTA3NDIyMTk5MDY5NjNiODJmOWRkMGZiM2MwMzk2MzkyMCBsZWdhY3ktdHJ1bmsKKzI3NjgxIGEwMzI5OGEzYWNhZDE0MzkwOTJlMGY0OTgzMGUwYWM4ZmJlMjI5MmMgbGVnYWN5LXRydW5rCisyNzY4MiA1MmIwOTc2ZTQ4YTFkNmU0OWQ0MDUzYjk4MzdkOWRiNGE3NzhhMjBhIGxlZ2FjeS10cnVuaworMjc2ODMgOWMwMTc4NGNlN2NhYjUxNDMxZDhiOWQ0NTBlYWVmY2JjYzczMGI2MiBsZWdhY3ktdHJ1bmsKKzI3Njg0IGM0YmY0NWNhNGQ1NTY3NjlmMDEyN2NmZTY2OTY4ZDAxMTllN2M1NTggbGVnYWN5LXRydW5rCisyNzY4NSA5MzQzNGJjMDg5OWQ5ZmQ1NGE3OWI4ZTc1MTE5NWI0NDJlNGQwN2MwIGxlZ2FjeS10cnVuaworMjc2ODYgYzkxYjdmMzQ2MjZiOWNkM2U1ODczY2QyYjU0Yzc5MzQ3OWY1NGRlMyBsZWdhY3ktdHJ1bmsKKzI3Njg3IDQyOGNiYmYwNTYzOTA2OTg1MzA4OWM5MDZjN2FmNGYxN2RkYTdhNmQgbGVnYWN5LXRydW5rCisyNzY4OCAxMzI1NzdmNjkzYjFjYzE1OTczMTgxOTRiMWU4MjQ1Mzc3ODFkNWEyIGxlZ2FjeS10cnVuaworMjc2ODkgNDE2NjU0ZTI3ZDg4OTMzNTYzZjJiYjQyNTRkNzRjMDI0OTI0Y2RmOCBsZWdhY3ktdHJ1bmsKKzI3NjkwIDY5MTM0YzYxZjg3YzA2YmMxYWQzODExNDMzYmMyMDBlMjYxNTllNmMgbGVnYWN5LXRydW5rCisyNzY5MSAwOGQzMDdjYmNjZDk1MTIwYWVkOWM2N2I4M2VjYjY1MGFmZDYzNjRkIGxlZ2FjeS10cnVuaworMjc2OTIgNWVkZTliY2M2NTFlYjJmMDE5YTRjYTZlM2U2MjlkZTc2NTVhYzNiZCBsZWdhY3ktdHJ1bmsKKzI3NjkzIGEzNTNkNmE0NTI3NjllYTAyYmIyOTFiODdkNTEwZWMwMGFkY2EyMTAgbGVnYWN5LXRydW5rCisyNzY5NCBjNGIzYTJiMjQ3YWMzN2EzNzEyNWY5N2UyODVmN2UwZDE3MWViMjRhIGxlZ2FjeS10cnVuaworMjc2OTUgNjU4ZTEyY2MwMzM2MmQ1YTY0Mjc3NzdjOGMxNmMzZGJiMzVhYmZlZSBsZWdhY3ktdHJ1bmsKKzI3Njk2IDc0ZjlhMjA2ZDRmMDhkZTEzMjNlMjQ1M2FhYTRiYmQyNzMzNmIwNjMgbGVnYWN5LXRydW5rCisyNzY5NyBhOGRmMGMwYmUyNDIzYWViNmQ2MWZlYWIzNmU0MmM4Zjk2MmI2ZDEwIGxlZ2FjeS10cnVuaworMjc2OTggZGQzODI5MWI4OWZiNTQwMDc1YjlkYzFiYTViMWQ1MjQ3OTJlODliMSBsZWdhY3ktdHJ1bmsKKzI3Njk5IDI5YWU4ZTg5MTUzYmQ2ZTU1N2JkZDk5YmQwZTI3ZDYzZjg4ZDQ5MDIgbGVnYWN5LXRydW5rCisyNzcwMCAxMjgxNWQwNTA4MGNmNjljMmM5YTk5M2U0ZWVjMTk2MDcwNDAyMzk4IGxlZ2FjeS10cnVuaworMjc3MDEgYzQzNDY2ZjdkYWU4NDE2NDU3ZTcwODFhNmI0MjkyYjY0Yjg0MDRkMSBsZWdhY3ktdHJ1bmsKKzI3NzAyIDQ3OGEyZDY0YWM1ODMwOGZhYmY0ZTRjZDc1N2E3MjY0ZmU5NzNjN2MgbGVnYWN5LXRydW5rCisyNzcwMyAzMTIyNzM1M2NiYmNjMDEwYjVkODI2OTYwZTMwNjc0NmQ5ODE3NTFmIGxlZ2FjeS10cnVuaworMjc3MDQgYWZlNDc5YTYyMzVlYzA4NDE1ZTc0NjUzYmJiMDMzNjJkMDI0NGNlNCBsZWdhY3ktdHJ1bmsKKzI3NzA1IGFiMTg3N2E3YjI2MjViZDZjNDZlZmIzMTQ5MGM1NmE1ZWZlMzkyOWEgbGVnYWN5LXRydW5rCisyNzcwNiBkOWFkZDQwZjkyZmYzMmYxOTg0N2RlMzI1YjViZjNlZmEwZGEzYmEzIGxlZ2FjeS10cnVuaworMjc3MDcgMTdkNTI2Mjk3NzU1N2Y3ZTYxODBjZTdhYjE3OWVlYzE2YWU1MGFiZCBsZWdhY3ktdHJ1bmsKKzI3NzA4IGFhNGI5YTdiMzgxN2ExOWU1ZmE1ODQ5MWE5YTAzYWNjMjE2ZTk4NjEgbGVnYWN5LXRydW5rCisyNzcwOSBlYjM5YmE2MGRhZTBjZmMyOTViYzgzY2U4ZDBkNGRhNjVkMGQxZTg3IGxlZ2FjeS10cnVuaworMjc3MTAgZDQ5N2Y1MjNiODJlZDc0YWNhMTI2Mzk5NTE2ZTMzYTFjZmQ4MDhhYSBsZWdhY3ktdHJ1bmsKKzI3NzExIGUzNzUxZmMwM2U2Yzg3ODJlOTc2YmNmNTBlYTNmYjFmOTZmYzFmYmQgbGVnYWN5LXRydW5rCisyNzcxMiA1M2IzMjI3MWU4ZTFmMTZkZjRkOTM4Y2JjYmQ3NDdmMzZmZDhiYTIzIGxlZ2FjeS10cnVuaworMjc3MTMgNjk3Nzc3Y2M4M2NjMGZmMDYzNTg1MTJmYTRmZmU2ZmZkNzFjYzc1NyBsZWdhY3ktdHJ1bmsKKzI3NzE0IDhiNGExNjViYWFlZWRmNjk4NGU0YWMwZWJmMDE1YTcxNzUzNTg2ZTIgbGVnYWN5LXRydW5rCisyNzcxNSBkZGY2NzE2MzM0NjVlNTA2ZjViN2M5NjdhZTFjMWY2Zjk2MjA3YWQxIGxlZ2FjeS10cnVuaworMjc3MTYgMjEzMWJiNzkwYWY5NThjNjUxMzQxNzg1NzUwNGI2MDBhMTQ4NGVkOCBsZWdhY3ktdHJ1bmsKKzI3NzE3IDA2YjlhOGRhZDcyMWIxOTA2ZTBmOWJkYzBmMWYyMTcxMzU4NTgwN2QgbGVnYWN5LXRydW5rCisyNzcxOCAyZjYwMzQ0YTQ5ZTg4Y2U0ZWQ5OTc0MzUxMDkzMTk1MTNmMDU0OTNiIGxlZ2FjeS10cnVuaworMjc3MTkgNDlhM2U4MzM0N2RkZWQwYjA5OTc4NDljZTcwNThiOTBhYTg3NmM5MSBsZWdhY3ktdHJ1bmsKKzI3NzIwIDY3ZWFhYmIwMTdlMGUwZDAxYjg5YWQwZTFlNmI3ZDE0OGYwOTIxMWQgbGVnYWN5LXRydW5rCisyNzcyMSBhOWI4MDljOGI5ZGJhYTNlNDE1ZTE2NWQ2MTZiMzQzOTcxODg2ZDI3IGxlZ2FjeS10cnVuaworMjc3MjIgMTM5ODU5MDE2YjQ0YmI5ZDA2NzI0YjEwZTg4ZTY0MjYzZDZkNWU5YiBsZWdhY3ktdHJ1bmsKKzI3NzIzIDNlZjAxOWNhYWQxZTUxNTA4ZDQ5YjY4ZjA5ZmNhOGNjMTllODhlZDcgbGVnYWN5LXRydW5rCisyNzcyNCAyYWUwMTQ1OTMxZjFmMzA4ZDNkZGIyOTI4ZWVkOGU4MmVhMzNjMDQ2IGxlZ2FjeS10cnVuaworMjc3MjUgZjA5Y2Y4ZWJhN2UyMzc5MGZkMzY1NTY1OGZiZmU5NmVmMjYzMjUyYSBsZWdhY3ktdHJ1bmsKKzI3NzI2IGJiMDY5MmUzMGZjNmIwMWQzYTE1MGNlMGIxY2QzNTFiY2NmYzNlY2YgbGVnYWN5LXRydW5rCisyNzcyNyAyMzJhYjBkNjYzNzUyYmEyZWE2YTExZTEzNDZlMTRmODcxNGYyNWU2IGxlZ2FjeS10cnVuaworMjc3MjggMmRjMjNmMGYzNDIxNWQ2ZjQ2YTM3OTQzNTkwNDIyMmEwZTEwYmEzNiBsZWdhY3ktdHJ1bmsKKzI3NzI5IDQ4OTMwYjAwNDNiNzcyYjhhNjAyOTEzNGM0ZTFkZTZmZDJmMzc4MzQgRFNfUlBDX0JSQU5DSAorMjc3MzAgMTg3YzRmYWRlM2RiM2ViNWY5MTFhNWQ1NjU5OWQxOTE3NTY2NDA2NSBEU19SUENfQlJBTkNICisyNzczMSAzMGQwZDhkYmYyNDQ1OGViMTY4NGQ4YjA2ZTlmMjMyODYxODQ1YTE5IERTX1JQQ19CUkFOQ0gKKzI3NzMyIDdmZWQzNTEzYWJmYTcxM2RlYzE2NmRlOThiY2FkNmM1MTMzNDY4MmYgRFNfUlBDX0JSQU5DSAorMjc3MzMgM2EzYmM3ZDlmMWY1ZTYxNjFjMjA4ZjA5ODM4ZjY5OWJjYTk2MDQ5NyBEU19SUENfQlJBTkNICisyNzczNCA0ZjZlNTZjNDQ3MzlmZTZiOTRmYmM3ZGYzYmU4NTdkMGRhZDg3MDFiIERTX1JQQ19CUkFOQ0gKKzI3NzM1IGQyZDgxZDUzZDRhMTJkZjMwYWNkNjFlZDAzZGJkYTVlNGE1YTU5YzcgbGVnYWN5LXRydW5rCisyNzczNiA4MDhiNGZlNTE4NGZjYWQ3NjVmMWViOWFmYTM5NDk3MDIyODdlMGYwIGxlZ2FjeS10cnVuaworMjc3MzcgYWE1Yzk5YjYxZGY3Nzc0MWFkNjliMmU2OWZkMzFlM2UwZjJiZDc5MiBsZWdhY3ktdHJ1bmsKKzI3NzM4IDEzN2ZkZGU3MDAwNjAxMDJmMjRjNDI5M2Q5YTFlNGZmYjM4ZWQ4NTcgbGVnYWN5LXRydW5rCisyNzczOSAxNTdiYmZiMTdmNDRjZTkyZGJmNmI1OGY3ODIyYmJiNGJjNWRjNWUwIGxlZ2FjeS10cnVuaworMjc3NDAgNTVlYWIxMGU0NzJkMzlmMzg0NjIyYmY3ZGE1YmNmNTExYmNkNzg4YyBsZWdhY3ktdHJ1bmsKKzI3NzQxIGZkYTUxM2I2NzFiNmM5ZjYyYmU2Nzk5NzQ0YTAwOTNjNmVjYzdhNGYgbGVnYWN5LXRydW5rCisyNzc0MiA0ZWFkZjdkZmNkYjRhOGVlZDRkYTNhMTllNzVmNDBhYWYwM2RkMjczIGxlZ2FjeS10cnVuaworMjc3NDMgMTk0MTQwYzgzMjc2MDQ5ZGY1NTU2MmZhNDY1N2QzODk3NGI0MzQ1YyBsZWdhY3ktdHJ1bmsKKzI3NzQ0IGEzNTcxNDM2ODM3YzFhMjQ1ZDIzMDkyYzhlNWNiMTNhMzY4ODNkYjkgbGVnYWN5LXRydW5rCisyNzc0NSAxN2U5NGU2MjM1M2M3MzhkMzc1ZTc2NWZlNzdjMWE5ZDIxZTg0ZjE1IGxlZ2FjeS10cnVuaworMjc3NDYgMzMwOGE5NmI5NzZmNmU4OTUwZDdmNzZlZjI0NjU5OGRhNmZhZjdmMCByZWxlYXNlMjItbWFpbnQKKzI3NzQ3IGYzYzhlM2FmN2I2YmY2MjY3OGIyYTZmNzA1MjNiNGQxNTM3NWUyM2UgbGVnYWN5LXRydW5rCisyNzc0OCAwMjBkOTY2MjUzNTc4NjdjZjYwZjU3MTc5NTI5MDhlOWI4YmMxOWE1IGxlZ2FjeS10cnVuaworMjc3NDkgZThmZDVjYWIwZGIzZWE3MjYwNzVkNDk4YWU5ZWIyMDdlOTRlNTg2YyBsZWdhY3ktdHJ1bmsKKzI3NzUwIDcxM2FkN2UwNDA2YWE2MmFlMzEwZWZjYjA5NmMwYzgzMzM2OWRmMWMgbGVnYWN5LXRydW5rCisyNzc1MSA5NzlmZjVkMGFlMDdhZjU0M2E3NzM3MzY0N2VkZmQ1ZTA5ZjkzOWMzIGxlZ2FjeS10cnVuaworMjc3NTIgYWEwZDJkNTFmYmRlYzExMmFmMzA0MzMyMTY3MTdkY2RkZTVmZDE2OSBsZWdhY3ktdHJ1bmsKKzI3NzUzIGE3MTg2YmI5MTQyYzkyOWVlMWQwMDVhOGFlNmQzZThiMjE3ZjlkNDYgbGVnYWN5LXRydW5rCisyNzc1NCAxMDEyOTA2ZThhZGYwZmM1MTAxYTY0NjVjMGE5ZTUxMDA2YjEzYTk2IGxlZ2FjeS10cnVuaworMjc3NTUgOGQyM2JmYTIwY2RiY2RiMGFhY2EwNDhlNGMyZDdhN2Q3MjkzNDA5ZSBsZWdhY3ktdHJ1bmsKKzI3NzU2IDRhYjRkYWM0NjJmZmRjOTk1ZjNkOTI2NjlkOGNhNzViMDIyNWYyOGIgbGVnYWN5LXRydW5rCisyNzc1NyBlMzYwNWViMmY4NjZiM2I1MzNmOWM1ZDFmN2IxYjdiOTcwMDAyODRkIGxlZ2FjeS10cnVuaworMjc3NTkgZjZlYWE5ZDk5NmVjMjQyYzY1YjZkODY3YzFlZjA3MzA5ZGNmNGMxNSBsZWdhY3ktdHJ1bmsKKzI3NzYwIDQwZTAxNDAxODFjZjg1MDAwYzA1YTExNDU2YTYwMGQ1YTM0NzczNmMgbGVnYWN5LXRydW5rCisyNzc2MSA0M2VlMWMwNzUwYTIzNTU0YmRlNTU0ZmY3M2E3MzMwM2RiOTM5OGMyIGxlZ2FjeS10cnVuaworMjc3NjIgZGZlNTRhZjI5YTQ3M2ZmZThlMzc5ODIzZDMwYjM1NzZhZjU3NmQ0NCBEU19SUENfQlJBTkNICisyNzc2MyA5ZDY0MWNlNjZhZjM1ODIxY2E4MmM1ZjA4ODZhYThlY2U4OGRjM2M3IERTX1JQQ19CUkFOQ0gKKzI3NzY0IGY3OWM3YWFlNjYyMGQ4YjJiM2Y3ODc5OTMwMDYxN2YyZmE0ZGM0NTEgbGVnYWN5LXRydW5rCisyNzc2NSAzMDcwYjcxN2ZjM2Q4MzMyNjZiOGZlOGEzNWVhNGE5NjY3NDUwMWRjIGxlZ2FjeS10cnVuaworMjc3NjYgODljZTYyMTI2NjY0ZjI0YjY0MGJmOWM5NDYyYjgyYWNmMTg0Yzk1MiBsZWdhY3ktdHJ1bmsKKzI3NzY3IGFhOWUwNTQyNzBhMmE5ZmVmYTY2YjllZWFiMjc5ZGYzZDUzNTc3N2IgbGVnYWN5LXRydW5rCisyNzc2OCBlYzJjODU0YmQxOTZkM2FjYWM0NzRjMzMwNWNkNmJlMTE1N2VlYzJiIGxlZ2FjeS10cnVuaworMjc3NjkgYzlkZTU1ZmJiMmIxZGVhN2NlZmQxM2VkNmRjYzQyZTI3NjFiZjJmYyBsZWdhY3ktdHJ1bmsKKzI3NzcwIGUyZDQ2MWJlZmM3YThjNWIyMTc0YWY3NzBlMzlkMWY1YmI0MDQ2OTIgbGVnYWN5LXRydW5rCisyNzc3MSA2NzI4NDNlZTRiNjFmYjM5MWEwOGYzYWE1ZWM1ZTY5NzlkOWE4NWEyIGxlZ2FjeS10cnVuaworMjc3NzIgZDhhNjgyZDRjNjkyNDA0NzAwNmM5YjI0OGNiMzNlZDIzYjIzNmY3NyBsZWdhY3ktdHJ1bmsKKzI3NzczIDQxNTZiZjliMDA0M2MwYjc4YjlmYTA0NDNkZjA2Y2M1YmY3OGZiNGMgbGVnYWN5LXRydW5rCisyNzc3NCAzYzQ1ZGNkMDEwMWRlZWJlZTk0ZTBmODhjMDQxNDIxYjNiZWQ1NWQ3IGxlZ2FjeS10cnVuaworMjc3NzUgNjY3MzE3MWZjMzdlYmYxYmUxODU4YjhkMGVjMmY1ZjYxZTM5NmQzZSBsZWdhY3ktdHJ1bmsKKzI3Nzc2IGRiZGFkYTk2Njg1ODJkZjE0ZGNjZTczNTU3NDU4MzIzN2FiYWVhY2UgcmVsZWFzZTIyLW1haW50CisyNzc3NyAwZTI3YjY3MjQ3ZGFhNGIwZjBlYTQ4NGM0NDI5ZTBhY2Y1YmU0YjcyIGxlZ2FjeS10cnVuaworMjc3NzggYjQ1ZDFiMzA0MGFlZjAwZjc1Yzk2MjU3NTMzNGQ0NjhjYWZhYjYyZiBsZWdhY3ktdHJ1bmsKKzI3Nzc5IDNhYWFkOWRmNzExZTQzZTRmZTkyNGVhMzlmZTI3ODU3OTVhOTNjNzYgbGVnYWN5LXRydW5rCisyNzc4MCBlYjc1OWRhMDY0YWE4NWRiODYzYjY5MzM1MzdhYTMwYzIyMzZkODdkIGxlZ2FjeS10cnVuaworMjc3ODEgYWM0OWIyODA3Yjc1MGQ0Nzk3OGYwODkyNDU5OTBkNmY0YmZkZjIxNSByZWxlYXNlMjItbWFpbnQKKzI3NzgyIGI4ZTM1OTZjZWJkN2QzNDRjMDc5MjBjMmU1MTFjZGIxYzQzOTExZmUgcmVsZWFzZTIyLW1haW50CisyNzc4MyAwYTMyN2I3Njg4Njg3NGFiZGJmMTk3MDE4OTI4MzQzOWVkYzM0OWQ2IGxlZ2FjeS10cnVuaworMjc3ODQgMDdkZDJmYzZhYzliNzdhYmNhMzg1YmI3YzAyMjdhYzQ5ZmRiMzgwOSBsZWdhY3ktdHJ1bmsKKzI3Nzg1IGJiNjRhODYxNGY2NjgxNzRlNDNjMDM4OWI3MjMyOWVhY2Y3MGQ0OWUgbGVnYWN5LXRydW5rCisyNzc4NiA0NzdjNzRkMDA2NmYwNjI3NjgwZWM5MmU2ZTY4Y2JmZThhMzkyMzQ5IGxlZ2FjeS10cnVuaworMjc3ODcgZWQ5OGM4OGIyMzUzYmU0MDkzYjA3MDUzYTk5NjJkN2E1YzUzMGY5NyBsZWdhY3ktdHJ1bmsKKzI3Nzg4IGY2MDUyYWViMTM0ZmNhMWU4MTZmZjIyYmZmZjA4MDljZjBlMDBhMjMgbGVnYWN5LXRydW5rCisyNzc4OSBjN2VkOTI1Yzc1YjMxMGE5YWViOGZhMzMxOGYyMDk2Yjg4MDZmOGNjIGxlZ2FjeS10cnVuaworMjc3OTAgNjA4NzM1ZGQyZWJjN2Q2ZTUxYzgyMDZkZDE4YTIwZTZjYjUxNzI2MiByZWxlYXNlMjItbWFpbnQKKzI3NzkxIDgxY2E2Y2E1YzMwNzRiMzQzY2ViYTdmOWYxYTUwNjc5YTMxNmYxYTAgbGVnYWN5LXRydW5rCisyNzc5MiBiZDM2NjViZDJmNzgzMzI0MDk2ZTkzODNhNjMxMWZlZjc4MDJjYmJmIGxlZ2FjeS10cnVuaworMjc3OTMgOGM2YTk5MjI0NTU3OWYzODEyYTk1OWNjOWFhM2I1MTE1NDBmMmQ0NCBsZWdhY3ktdHJ1bmsKKzI3Nzk0IGViNTU0YWEzNjFlOWNlODIwNmU3Y2ViM2M0ZDc3NDI1MjU1ZGM3ODAgbGVnYWN5LXRydW5rCisyNzc5NSBjYTVhYzk2N2M3YzRjY2NhMTNkY2I5ZDg1YzcwMmQ4ZTA1YzBlN2U1IHJlbGVhc2UyMi1tYWludAorMjc3OTYgODAxMjlkNGE4Y2VjMTc1MzFlM2U2M2VhN2U4OWQyNjNiMDRmMDJlNCBsZWdhY3ktdHJ1bmsKKzI3Nzk3IDMwNDQwODcxYzZlNTY0MGM2ZDU2ZTUwMWYzOTQ3YjQzNWVkMGVmZTIgbGVnYWN5LXRydW5rCisyNzc5OCBkMDQ5ZmQ1OGU0ZGRjNGRkZWVjNzQ4MmRlMjRjOWJlZTg4MTRmMWJiIHJlbGVhc2UyMi1tYWludAorMjc3OTkgNGRlNWM3ZTYyMzFlNWQzNjkwNWY3NGM3ZGExZjRiNzRjZTBhYmI4YiBsZWdhY3ktdHJ1bmsKKzI3ODAwIGQ2ZWM0ZGFiOTI3ZTY3ZDIyODU3NGE1ZjkzYzdhYWQ2N2VjZjM1NzMgbGVnYWN5LXRydW5rCisyNzgwMSAzMWE3MTE5YmQ4ZDRkZWY3MTM3NDIxMTk2MWUzYmVkYmFlYzAzZTI1IGxlZ2FjeS10cnVuaworMjc4MDIgOGUyNjZkMGFjZDEwYTA4MjFkNTEyNmZmZDcxOGQ3ODYzMDA4MTJkNiBsZWdhY3ktdHJ1bmsKKzI3ODAzIDQ3MDhjMDlmMDM1MGY5NTQ2NDA2MzRhMDgwMDk5YzE2YzVhZWZkODUgcmVsZWFzZTIyLW1haW50CisyNzgwNCAwODkyNmNjNWYyYWZkMDQxNmYwYTczZmIxOTMwY2E0MDNjZDNjMTM3IGxlZ2FjeS10cnVuaworMjc4MDUgYTA4OGNkMDhkYWRlNzY2MjUwZDE4NjYwNjlkNzlkN2M0NzkwN2I2ZCBsZWdhY3ktdHJ1bmsKKzI3ODA2IGY1Y2ZhMGVlMDJjZjNmNjZhMmFiNzNiNGUyYTZkODFkNjZjMGJmNDIgbGVnYWN5LXRydW5rCisyNzgwNyBkZDZhOTcxMWI0M2NkOTA2ZjBlNDIxYjY5MjNmOGZhY2ZlNDM1MDA1IGxlZ2FjeS10cnVuaworMjc4MDggYTBhNTllNTJiYWVjNWRkMGM4ZWE2MDVjODBiNzBmNjNkY2JlZDhhMSBsZWdhY3ktdHJ1bmsKKzI3ODA5IDUxNWU4NzIzY2FlZmY2NTk2MzRmMDkzOTRmOWFjYzYwYmIyYzc4YjUgbGVnYWN5LXRydW5rCisyNzgxMCAyNzU2OTNiY2VlNzQwMmIzMGI2YzgzNzdiNjEyOTBkMDg3MDcxMTVmIGxlZ2FjeS10cnVuaworMjc4MTEgMzZlMmZkM2YwOGY3NTgwZGVlNDZhZDhiMDY5ZTkzODk3ZTczYmM4NSBsZWdhY3ktdHJ1bmsKKzI3ODEyIDViZTk2MWE4ZTlkYjNlMTgwZjg2M2RmNDIyZWJiYTk4ZjBmMGZiZDEgcmVsZWFzZTIyLW1haW50CisyNzgxMyBiZDYyNjhiMTdiNzU3N2M5MTdhYmQyZGI5OTc2ZGJjZTQyZTQ0NjM2IGxlZ2FjeS10cnVuaworMjc4MTQgM2RiMjYxYTkzYTViOWY3M2EzN2U2MzUyOTgzZWE4OTc5ZWY2YTdjMyBsZWdhY3ktdHJ1bmsKKzI3ODE1IGY0Y2Q3OGIzYjc3NGNmYjk0YTcyYWE2ZmY1YTQ1NjQ4MDcxYWVkMDkgbGVnYWN5LXRydW5rCisyNzgxNiBlZDg5MjQxMWVlMGQwMGI1ZWE4NGU0OGJiOTIwZDBkYmMzMTFmYmI0IGxlZ2FjeS10cnVuaworMjc4MTcgOWFmYWMwZGQ2YjZlNGVhMGU2MzJlMDUwOGRjMjk1OGU5YTk5MmYzNSBsZWdhY3ktdHJ1bmsKKzI3ODE4IGVhNDgyMTk2NDA0MzI0YzNiMGY5OWQ0MmM1MTRjYzliYzZjMGIzMzcgbGVnYWN5LXRydW5rCisyNzgxOSAxNWVlNDQ1YWYwN2Y3YTg1MjY5OTFjZDFjODIwNjNmODJmNTYxOTljIHJlbGVhc2UyMi1tYWludAorMjc4MjAgZjU1ZDU4ZWU0ZWEzZmNjMDBlMjYwNDRkN2JkZmFhMzA4ZTc5MjYyZiBsZWdhY3ktdHJ1bmsKKzI3ODIxIDE0YmQ1YWIwY2RiNjZjNjVmNTc1OGNlYTM3Mjg2MWJiZGExOWI1MTMgbGVnYWN5LXRydW5rCisyNzgyMiBmNDQzNmUxYjE4NjhmZWYyZjEyZGM3MjY5OWU1MmNlNTgzNDhiOWUwIHJlbGVhc2UyMi1tYWludAorMjc4MjMgNzM4M2U2NzRmY2Q1MWI5MzAwZTc1OTg1OTc3ZTNiNWVlN2I5Y2M3MCBsZWdhY3ktdHJ1bmsKKzI3ODI0IGZlMjI1MGY0NWFjMDg0NTMwYjkxYzczNDg4NjFjM2RmZjk2OGJkOWQgbGVnYWN5LXRydW5rCisyNzgyNSA5ZWY4MjM3NzY2OWQ1M2E5YmI1YzFiODIyZjlkN2U2YTdjODJjNzUxIGxlZ2FjeS10cnVuaworMjc4MjYgN2RjM2Y0MDc3ZTU5NTUzZWM3Zjk1OTNkZjI0M2YzYTA1NmQ2ZGFkNCBsZWdhY3ktdHJ1bmsKKzI3ODI3IGQ5OGY4ZTAzZmEzMTJhM2I0NjA1MjIzNWFiMzQ0NDViNTAwZGNiMzEgbGVnYWN5LXRydW5rCisyNzgyOCAzMDFkZDU0NjViOGUyYjI4NjBkOGZiZjUwMDI1ZDQwNTU2Y2NmMWU5IGxlZ2FjeS10cnVuaworMjc4MjkgNjY5ODk2NjgzOGM4ZTQ5MDJhYzM1NjJjNzg5ZGM2ZDkyOTQ2NTM5MSBsZWdhY3ktdHJ1bmsKKzI3ODMwIGZlMDNhYjU4MGY5NTViOTJiNjg0ODE4Njk5MzkxMWIwNWRkMzk5YzkgcmVsZWFzZTIyLW1haW50CisyNzgzMSAyY2Q1MWIwNTJkZGY3N2I5MzViNzE0MDVjYWMzMjkzMTJlZTY0ODY4IGxlZ2FjeS10cnVuaworMjc4MzIgNmQ2MTEyNmFjZTY5NWIzODc1OTJlYmE0MjIyNjY3NTNjNjkwMmUzNCBsZWdhY3ktdHJ1bmsKKzI3ODMzIDIyNmJhMzRiZDk5OGI1ZWUzZmQwYWFjOWVhNmUwZTgyOWEzNDFmZWEgbGVnYWN5LXRydW5rCisyNzgzNCA5ZDQ3M2Q0ZDExYTY5M2U3ZGNjMDY5NThhNGE0YTNkYzM4YTNkYmMwIGxlZ2FjeS10cnVuaworMjc4MzUgMzJkZGUzN2M4ZDk1OTc0MGZlYjFmNTNmOGZkMGNkNmYxZWYzMmI2YSBsZWdhY3ktdHJ1bmsKKzI3ODM2IGMzZDllMDFjNjEyNDA5N2ViM2JjMjc0OGNhYWE4ZjViNWIzMWM3MjkgbGVnYWN5LXRydW5rCisyNzgzNyA2ZjgyNGQ2ZjEyODYyOTEyNGI3MTE5NDEzNDk5NGNjN2VmNmE4YmQ4IHJlbGVhc2UyMi1tYWludAorMjc4MzggZGRkNmZmMDY5M2M0ZjAwZGQ3YjFlZjczYmFjNjMxMjdjZTE4M2MyMyBsZWdhY3ktdHJ1bmsKKzI3ODM5IDM1NDMyMzM3MWUzODQ4ZDViYTNiNTE4ZmI1ZjdiZDM4MTJjOTIzMjIgbGVnYWN5LXRydW5rCisyNzg0MCAyYWRkMjdiNTU4NjRhYjAwZDliNmQ3YzkwNDZiZTIyMjM5MjdkNzJmIGxlZ2FjeS10cnVuaworMjc4NDEgNzQ3ZmE2NWE5YjQ3NWE5MmU0MGM0YzljMTJhZThjMjU2OWJmMzZhZSBsZWdhY3ktdHJ1bmsKKzI3ODQyIDIyNTcwZTc2Y2NhMTYyMWU2ZGMzZjA5NmY1OTI4ZDhmY2RlZWI1MWEgbGVnYWN5LXRydW5rCisyNzg0MyBhNWVhNGRkMTc4ODNhN2FhYTYxMjllZWYwOGNmOTM1YmZiZTIwYjE5IGxlZ2FjeS10cnVuaworMjc4NDQgZjBkMTM5OWEyNDQ1ZDBkYzliNTQ4Yjc5MTFiMjAxMmM2ZTZmMzZhYiBsZWdhY3ktdHJ1bmsKKzI3ODQ1IGY4MjhmMzIyMDZiYTUyYjRlMzQ0YjdkYzBkZTE0N2I0MGExMzhmMjcgbGVnYWN5LXRydW5rCisyNzg0NiBkOTcxYjg3MDM1MDgxMjFjYmZhZmU0Y2I1ZWU0YzBiYzU0MmI1OTM4IGxlZ2FjeS10cnVuaworMjc4NDcgZDIxNmU2N2FjMjIxYzIyMGEwOTlmNzY5ZGFkMmMzNDRlZDJhNWQ4ZCBsZWdhY3ktdHJ1bmsKKzI3ODQ4IDI3ODI1ZDI2ODMxN2ExMTE2MDQ0Y2IxOGIzN2ZhNDAwYmZhMWQ3NjUgbGVnYWN5LXRydW5rCisyNzg0OSA1ZjE0OWFkZTlhZjE5MTYxNmI3MWFjOTQ1Y2U5OGUyYTdhMGI2MTNkIGxlZ2FjeS10cnVuaworMjc4NTAgMTg5ZWI2ZmE5ZGVkODUzMWZmYWQyYjFiMTBlMDBhNWQ3YTIzOWUwMyBsZWdhY3ktdHJ1bmsKKzI3ODUxIDJkNzdiZTQxZWU1ZmIwN2U1OGE5ZDI0OWZlZDM1NjE0NzNjN2EwMDIgbGVnYWN5LXRydW5rCisyNzg1MiA3ZmMyY2VjNGRjODI4ZDQ5ZWM5YjJkNDMwYjFlZjNjNWZhYmY4YzMzIGxlZ2FjeS10cnVuaworMjc4NTMgYTFiZGRmNmEzMmNhYmY2ZGExMzM4OTdmYzZiNDJiMDEyMmJkZmRlZiBsZWdhY3ktdHJ1bmsKKzI3ODU0IGViYzg2NjdmMzI1YWRiYmM3MGI4YmQ3MjA1NTY2NDFmM2ZjOGVlMjAgcmVsZWFzZTIyLW1haW50CisyNzg1NSBlMzM0ZGQ0ZTUxMGZmMTcyN2Y5M2U1NDBhYzAwN2ZjMmRiMGM4NGU3IHJlbGVhc2UyMi1tYWludAorMjc4NTYgNGE2NmJlZjE1YzNiYjY3ZGEwMzc0NTIwZDNlMWEzMGUwMGQ5NDdiMiBsZWdhY3ktdHJ1bmsKKzI3ODU3IDE2MWE1ZWYwMjMwZTM5MDY5ZWFjYzBlOGMxMmNmOTMxYjIxYTUwZGMgbGVnYWN5LXRydW5rCisyNzg1OCA5YjI0OTdlMjk3OTUzYTk5ZjhlMWQ4ZGNlYzY2ZGUzOTE2NWRiNGY1IGxlZ2FjeS10cnVuaworMjc4NTkgZTU2Mjk4ZGMwZjhhZTgyMTQ0MmU0MTljYmRmZWJkZDUzMjg0MWM1ZCByZWxlYXNlMjItbWFpbnQKKzI3ODYwIDc5ZjEyOWIwNzNkZWJlM2JkYzBhODJjNTFjOTU5MzU0MGRmYzg1NjkgbGVnYWN5LXRydW5rCisyNzg2MSBiNmE4MmY4MTg1NDA2YzRjZWNlZjM3OTkyNDMzZDA1ZWVjYWFhYjNlIGxlZ2FjeS10cnVuaworMjc4NjIgZjY2YjNhMzUwOWM3MGNhMDZiMzY1ODcyMDBmY2U1MjY0ZDI1MjJmMyBsZWdhY3ktdHJ1bmsKKzI3ODYzIDQ1YjRmYzYzYmY2NzE5MzY1NGIwZWY0NzcyODYwZThhMjhiZjQyZDIgbGVnYWN5LXRydW5rCisyNzg2NCA5MGI0OTY2OGQwYWMzZjk4YTk2YmY2MjVjNTI5MzZiNjZjZGQ0OTYyIGxlZ2FjeS10cnVuaworMjc4NjUgNWRiY2NlMjFkZmVlYTY3MjIwNDE2ZGMyYTlkZjdmZWZhMzQwOTJhZiBsZWdhY3ktdHJ1bmsKKzI3ODY2IGUxNDA5YWIwZmU2OTg3MzVkMmNmZWFkZDkwNjM3YTNmZjc2MDExNzEgbGVnYWN5LXRydW5rCisyNzg2NyBhZDRkMjNmMWJmNmU2YTJiYzczODZkNDY4NTY3YzlkMGQ0MDY1ZjdlIGxlZ2FjeS10cnVuaworMjc4NjggYjM4NzU0ZjFjYjYxMTIyZWFlY2IyZGFkM2Q3NWI3MmZlOTlmNzEyMyBsZWdhY3ktdHJ1bmsKKzI3ODY5IGI2ZTUxYjA4NmNmNGQ2Y2M1YTllMzY3OTM3ZDNmYzdiZDcwMWJjZmQgbGVnYWN5LXRydW5rCisyNzg3MCA1NjQ2MjlkMWYxYWM0YTIwZmUxMGZlZjg3NjIwNWJjNzVjNDlhNTdhIGxlZ2FjeS10cnVuaworMjc4NzEgMDNkODVkMTk3MDUyYTkxMmM2ZWZmOTE5NTRjZGQ3YjMzNmRlMzAyMCBsZWdhY3ktdHJ1bmsKKzI3ODcyIDg2OTFlZGE0YzA1NzMzNDc5YTM1NjkxZDU2MWE4NDY2NzkwNjdkODEgbGVnYWN5LXRydW5rCisyNzg3MyA3ODk5ZmQyYWY5MTI1Zjg2NTE1MzkzZjc2NjZlZWFiYzc5ZjAzZGVmIGxlZ2FjeS10cnVuaworMjc4NzQgNzFiYTJlOTY5YzExNDE1ZDQwZDE3NmM3NGYzMzgwNTM3N2I5YWM2NCBsZWdhY3ktdHJ1bmsKKzI3ODc1IGUwMTI4ZDYxNmY4Nzk1OWY4NmFkZWE3ZDc5ZjEyMzc4NmRmMWViN2MgbGVnYWN5LXRydW5rCisyNzg3NiBmMDVhMzExZDc5ODg2MjU3ZTI3YjI5NDE5MmU3YTUzMWQzMzIwYTU4IGxlZ2FjeS10cnVuaworMjc4NzcgMTJhYWY4ZDVhZDJiZTcwNzU3Mjg2MjYwNjYwNzkwNTZlZTQ0YjI1MiBsZWdhY3ktdHJ1bmsKKzI3ODc4IDRlNjI3ZDhjZjlmNGQyYTg0OTZmNGEzNzlmZGFmZTg1ZjIwN2ZkMTAgbGVnYWN5LXRydW5rCisyNzg3OSBkZjA2Mjg2NjJiNDgxZTM4NTQ5NDUzOTZhNjZhZjYwMWY5NDhlZDdhIGxlZ2FjeS10cnVuaworMjc4ODAgYmNjMzVhMGYxYTc4ZThjZmIxOWUwZmY4MzljYjk5MDM4NjgwNDkzMiBsZWdhY3ktdHJ1bmsKKzI3ODgxIDA4NTQ1MjRlY2UwMDg0MGRhNTQyMzI2ZDQyYjZmNzFlOGQzYzQ4NzIgbGVnYWN5LXRydW5rCisyNzg4MiA0YmZjOGM1MTliNmRkNTRhOTVkOWJkYjZlYzkxN2M1MzFjZDliMDJlIGxlZ2FjeS10cnVuaworMjc4ODMgZmIwNjkxZjEwZDkxMmI0OWY0M2I4N2U1YzUwYmFkZjgzZjUxMDg4ZiBhc3QtYnJhbmNoCisyNzg4NCAzZGRhY2UxZDEyYTlmZTUwYzZjZWY0YzkwOGMzY2EwNGIxM2EzN2ViIGxlZ2FjeS10cnVuaworMjc4ODUgODA5MWE0YTNiOGFlYzJlZjMyZTE3ZjhiMjhlYWRmOTUzMGJiZGYzNSBsZWdhY3ktdHJ1bmsKKzI3ODg2IGVjMWEyZDdhYzAyYmMwNDkyMzk5MmQ2MzU5ODk1MWJiNzY5MWJlZTIgbGVnYWN5LXRydW5rCisyNzg4NyAzMDMzNWM2OGI3ODdmOTFmZTA2MThmY2NkNmYxYzgwY2M4M2E3ODg3IGxlZ2FjeS10cnVuaworMjc4ODggMjY3MGE1ZGI2ODQzMTVjZmU0NTczZGMxMzNiYTc1YWY0OWEzOWU4YiBsZWdhY3ktdHJ1bmsKKzI3ODg5IGRhZjc1NzljMjI0ODIxOTJjY2U5ODU0NWJkZTdmNWVlNDY2NGQ1ZGIgbGVnYWN5LXRydW5rCisyNzg5MCA2ZGNmMTI4ZDdlMDMwOGFjZjg1ZjZjMDY2MGRjZmM0YThjMzUyYzc2IGxlZ2FjeS10cnVuaworMjc4OTEgYWM3NjI4NzY5YmE1M2UxYmM1NjRhOGZiNWRmMzkzMzFkMjliNGI4YyBsZWdhY3ktdHJ1bmsKKzI3ODkyIDE3YThiNzRiYmU1Y2YwNGM2OGMwZTk0NDYwMjQ3ODU1OThkOGJhYmUgbGVnYWN5LXRydW5rCisyNzg5MyBkZmU2ODg0YjU5ZTBlN2U0MGJlZjY2YjdkMzA1ODFhNmNmYTJhNjRiIGxlZ2FjeS10cnVuaworMjc4OTQgZmUyY2ZjZTRlNjU4NjNlZDMxNzJiNWIxMzQ1NGI5Y2U0MGU3YjE5NiByZWxlYXNlMjItbWFpbnQKKzI3ODk1IDQ4OTdlMjllMTljYzA2N2M2YjkzMGYwZmUyMzAzY2UwYzQwNzViNDMgbGVnYWN5LXRydW5rCisyNzg5NiA4N2Y4Mjg3MjZmZTZlYWI2MTk1OThmZWQ2MThhMTFjYjk3OGNlMzM2IGxlZ2FjeS10cnVuaworMjc4OTcgMzI0YjJlN2FmNjgzNTdhMGI3M2Y5MzI4MDE4ZTM1ZjA1ZTBiZDMzMyBsZWdhY3ktdHJ1bmsKKzI3ODk4IGZhMzJlN2E2NWE3ZThmOGJlYTMzYzlhNWMyODM3N2M0MGQ4MmNhOWYgbGVnYWN5LXRydW5rCisyNzg5OSBkZmU1YTY4OTk3OWJhODIzY2ZiZWQ3NTBlYTIxNTFlMDViZGZmNTI2IGxlZ2FjeS10cnVuaworMjc5MDAgYWJiNTJkNTZiYTVhYWJjNWYyMDk3YzJhOTcwMWY4Y2U0ZTYxMmU4YyBsZWdhY3ktdHJ1bmsKKzI3OTAxIDEyZDg1Yjc4NTI2MzYzNGU3YTI2OWRhNzExODMxZGRhNTFiZjU2ZGUgbGVnYWN5LXRydW5rCisyNzkwMiA3ZWNiNmViMWZlNzczOTc0NTczNjU2ZTJiYjRmMTA3YTI4ZjNiNjBmIGxlZ2FjeS10cnVuaworMjc5MDMgN2ZhYzEzM2Q1MzlmZmFjYjBhMjU3YThiNWM0NTQyNjc0YWU4MDIzZiBsZWdhY3ktdHJ1bmsKKzI3OTA0IDU2Y2U0YzhmNGYxNjlmMjFjOWMxNzhkNTFhMDBiOWM5ZWJkYzU4MGYgbGVnYWN5LXRydW5rCisyNzkwNSA3MDJlMTEzZDM5YjBkNTViZGI4ZDhlYjVjMTY5YWE5OWUwYTc5NTc4IGxlZ2FjeS10cnVuaworMjc5MDYgZDhiYTM3M2JmMmIzYzcyN2I0MTYzM2IzNDNlNzAxNzI1NTVhMzA2ZiBsZWdhY3ktdHJ1bmsKKzI3OTA3IDk0ZmYwNzQzODM3N2I4N2Q0OGI2NThiNDYwN2IyMGM1MDk0YmIzNzAgbGVnYWN5LXRydW5rCisyNzkwOCBhZTJmYjhkYTM4NjNlOTk2NDI1OWRlNDgxN2FlNzFiNmIwNmRlNzcxIGxlZ2FjeS10cnVuaworMjc5MDkgNzVmZDg2MjkwMWQ4M2U3ZjAzMzY1YWMyZjRmZGIzODdkNjY0MmRmNCBsZWdhY3ktdHJ1bmsKKzI3OTEwIDhhMTBhNzIxYjg0YmNlZWNjYmViZWFiMzY3YTBiZGQ3ZDAyNDc1NGEgbGVnYWN5LXRydW5rCisyNzkxMSAwY2Y0ZTA1MzljYzFmNTgwYzNmNmJkNmE2NDgxNzQyNTMyODMzMThhIGxlZ2FjeS10cnVuaworMjc5MTIgMTc1Y2QwZTA4OGFhY2NmOTNkNGEwMDA1NmIzOTQ1NDM2OWM1MzZmNiBsZWdhY3ktdHJ1bmsKKzI3OTEzIGFkZjBiMjE1YTUyYWUyNTkwNGZkMjhkMGI3NmU5NzM5ZWIzODdiYWIgbGVnYWN5LXRydW5rCisyNzkxNCA1YmQwZjI0MWVjNWFkYmI5MjhhNWYxNTcyZTJjOWNkMzliMTQwNzEzIGxlZ2FjeS10cnVuaworMjc5MTUgYTczYTU4OThiZjQ5MmE1NjEyYmExZWFlYWNhZTllNGFjYTBmNWM5NyBsZWdhY3ktdHJ1bmsKKzI3OTE2IGE1MzI0YjA5NDk0MmUzMjg1Njc0NGMwMDVjZGQzZDFhMTUzZTY3ZmYgbGVnYWN5LXRydW5rCisyNzkxNyAzY2IwNTVhYWU3Mzk1N2Q4MDIyMzUzN2I4YjJjNjY1NWUxZjA2MDZjIGxlZ2FjeS10cnVuaworMjc5MTggMWYwMTc4NzA1NTJlNjUzYmI4ZGExNDE5YmEzYmI4MTM0OTFmNjkxOCBsZWdhY3ktdHJ1bmsKKzI3OTE5IDMyZjkyZDc2NmI4MTM2YWFiNDNiNjJiNzE1NjhkNjE5NmZjZTA5YzggbGVnYWN5LXRydW5rCisyNzkyMCA2MmY2YmFiZWNlMWZjMzI0NTc0ZGMyYmU1MjY2ZTlhMDM0NTFiYzNkIGxlZ2FjeS10cnVuaworMjc5MjEgMzQ0NDAwNWI2NTI3MDNkMmZiNDFkYmM5MWE3YTliNWQ2ZWVmMTc5ZSBsZWdhY3ktdHJ1bmsKKzI3OTIyIDk1ZGY4N2Q0NDkyM2JmZDRjZWZhYTBkOWE0YjU4NTQ4NmZmZGFmZjAgbGVnYWN5LXRydW5rCisyNzkyMyA5NTBjNWEwOWFkOTk4OTQxOWRmYWFmZjRhZjM5MDFjMzRkYTYyYTQ2IGxlZ2FjeS10cnVuaworMjc5MjQgODJjNDg2NTM4NjFiNTZlOGJjMGMzODZhYTBjZTQ3OGYxZTdjZTU0YyBsZWdhY3ktdHJ1bmsKKzI3OTI1IDFjMjZlYjc2ODI5MzZkMDE5MDc2MmE4MTRlNWZjYjFmODRmM2QyOGQgbGVnYWN5LXRydW5rCisyNzkyNiBhZjFmYjRmZWMyYjQ0ZDQyNjBmNDA2OWE3NjE1OWVhOTgyYjNhMzYzIHJlbGVhc2UyMi1tYWludAorMjc5MjcgNDE4OTU2MDlkMDg0Y2RhNzUwODNhYzk2NWI2YmY2MDAxM2Q2YTMwMyBsZWdhY3ktdHJ1bmsKKzI3OTI4IGU5NjFjZDJmMjJlNDI4YTQxZTI1Yzc1MTE5OTc0NjYyNmI5OWJiMGUgbGVnYWN5LXRydW5rCisyNzkyOSAyOGE1YzhhZmEwNTZlNTJjZWI3MGRlMGEyZGIxY2IxMmMwMWZiMmQwIGxlZ2FjeS10cnVuaworMjc5MzAgOGQ1ZTBlM2Y2NDQ1MDBmMjZlZjhiMjk0N2RhMTYzZDZkNDdhZDI1NyBsZWdhY3ktdHJ1bmsKKzI3OTMxIDA2ZjFlMmZkMDViY2FhZTE2ZjNjZDgzZmQzMTZjOTRhYzI5Zjc0YzggbGVnYWN5LXRydW5rCisyNzkzMiA2MTQzNThlM2M0ZjZhZWZmMmIwZDk4ODZjZGY5MWZmZGU5YjM2MzFhIGxlZ2FjeS10cnVuaworMjc5MzMgZmY5ZWZhNjkyNTk0ZmJiODNmZWI4NWY3NTU2MTc5NDBkMmRmOTRiMCBsZWdhY3ktdHJ1bmsKKzI3OTM0IGQwZDNmNzYwZDA2NzVkZTM3NzA2NTQxOTFmMjcyZDBhNjNhNjFlNWUgbGVnYWN5LXRydW5rCisyNzkzNSBjMDBkZjIzZTg1NmU1ZTJiZDFkYmIxNDk0NDIzM2Q5YzczNGE5NWFjIGxlZ2FjeS10cnVuaworMjc5MzYgMGJkNTIxZWI3MTRlYWNhODZmOGNhMjQ1M2FlNGZiNTM2NGJlMWJlMyBsZWdhY3ktdHJ1bmsKKzI3OTM3IGRkOTkzZDAxZTc0MDQxMTg4Mzg0NDNjZDVjMzFkM2FhNDgzOTQxZDAgYXN0LWJyYW5jaAorMjc5MzggYjViOWIwMzM0NDY5YzQ3NmZlZmYwZmJmNmQyYzc2OWMyMDI1Mjk0NyBhc3QtYnJhbmNoCisyNzkzOSBkMmY0MWM4YTgxZjBkOTUzOGNhNTJhMzIwY2RhMmUzMzg4ZWM2MTY4IGxlZ2FjeS10cnVuaworMjc5NDAgOTZmZGU5ODA4ZTE1YzdhMDMzZGE3M2ZlYTRjYWViMzViZTNjYzUyYiBhc3QtYnJhbmNoCisyNzk0MSA0MjI4NmQyZTRkMmZmNzVhNjE4MjhkMDFjNGJhYzVhMDlhMmE4MmI2IGFzdC1icmFuY2gKKzI3OTQyIDUzZjIxZjQzNDk1NjY1NmFjOTc5NzlmZDQ4OWQyNTNlN2JkZmQ2MTEgbGVnYWN5LXRydW5rCisyNzk0MyA0ZjAwMTM0YjU2MWRiNTM0YTMyZjVmZDQzYmZhZTIwNzU2ZDk3ZWJhIGxlZ2FjeS10cnVuaworMjc5NDQgZjIwMjVjNjc2ZTI0MTU3MjVmNmQzZmNjM2Y0MzBlOTVmYmM3YWE1YyBsZWdhY3ktdHJ1bmsKKzI3OTQ1IGQ4NzUwODk3Yzg5N2NhYWIxMTQzNmY5ZmQ1MDM3MzAyMjEwOTQxODUgbGVnYWN5LXRydW5rCisyNzk0NiBhNmE0YTk1MWM2MTZjZTdhOTNmY2Y1N2QyNDU1MTM1MDhkN2FmYzg0IGxlZ2FjeS10cnVuaworMjc5NDcgZTIxMzgxZmQ4NzU2NDEwYWRkM2U3OWRkNmFhYTZkMDk0NjIxY2JmYyBsZWdhY3ktdHJ1bmsKKzI3OTQ4IGM5ODA4ZjUyMTIwYWZiOWUyNmQ0ZDhkZjYzODNjM2Q5OGQ5ODU1Y2EgbGVnYWN5LXRydW5rCisyNzk0OSBkNWYxN2Q4NWY2YTA2NTgzYjZiZjdhYzY2YWIyM2I3OTI2YWMxYWFiIGxlZ2FjeS10cnVuaworMjc5NTAgZGY0YTlkM2FiYzU2YTEyYTdhYjA4ZDg0ODRlZTJmOTgyOTIwNzlhNCBsZWdhY3ktdHJ1bmsKKzI3OTUxIDVkNmU0NzBjZTA1Y2Q1YjE4MGUyMWZiNDE5NGZmMjM4Yzk5ZjY2YzMgbGVnYWN5LXRydW5rCisyNzk1MiBiYmFjNGUzY2NiNjI1MjM2NmI5Y2JkOTMwZDRmMzNjNjZiMWU0ODIxIGxlZ2FjeS10cnVuaworMjc5NTMgNGJmOTQxNDlkMjFjN2U0NjNiYThkYWJhMWRiMTkxNDlmMzBjNjc4NSBsZWdhY3ktdHJ1bmsKKzI3OTU0IGQyNmI2MmYwYzZkYmMzNTJmMGMyNTBmNWI3NDUwNzRjOTNiYzgyZTkgbGVnYWN5LXRydW5rCisyNzk1NSBmMDU5ZDU0MzVkNjUzMmVkZTcwNTgzODQzZTkyMjM4MTcxOTg3M2IyIGxlZ2FjeS10cnVuaworMjc5NTYgYjQyNjlmYTY3YzNlOWNjNGEwZTFmNDczOWYzNDJmYWY2NTk5NzUzYiBsZWdhY3ktdHJ1bmsKKzI3OTU3IGIyNWMzMWUwMDhjOGM3ZDIxNDk3ZTNmNTZiYWE2NjFkN2VlZDk4ZDUgbGVnYWN5LXRydW5rCisyNzk1OCA5MzQ4ZmEyMGYyMTQ5MjBkMWFlY2JkM2ZiZTMwYmMyYWM3ZmMyZjY5IHJlbGVhc2UyMi1tYWludAorMjc5NTkgNDc5ZjhmNGVlNGFkNDU1YWMzNTFlMmM3MjM1YmEyNTQ0ZWRkZjkwZiBsZWdhY3ktdHJ1bmsKKzI3OTYwIDBiYjM5ODZjZjY1M2E2MDVlZGVkODZiOWE1MWNhNTk5MzhjMmMzOTggbGVnYWN5LXRydW5rCisyNzk2MSBjOGQ2OTRiNjQxZjE5MjQ5ZDljZGJjOTk0YWNlNWUxZTA5YjBlMjk4IGxlZ2FjeS10cnVuaworMjc5NjIgYWFiYzk3OTAyZTEwNDZhYmNiZTUyMzQ1NTA5OWQ3NTlhNzJhNmVlZSBsZWdhY3ktdHJ1bmsKKzI3OTYzIDdjYTQ2ZTA4MjAwZGZlZTUzZTIxNmIxN2JlMzE4NDZhNjJmMjU5ZjUgcmVsZWFzZTIyLW1haW50CisyNzk2NCA0NTdhMDQ3ODMxODNmNTZmNzAxNjE4YWU0ZDU4YmFkNWZiYWI3MGRhIGxlZ2FjeS10cnVuaworMjc5NjUgOGMzOGVhMDkyZjIwN2ViZjQ3MDljMGJlY2I1NzliMTJmODUyNjBlYyBsZWdhY3ktdHJ1bmsKKzI3OTY2IDEwZGJkZTY5ODc2NjkyNGRmY2QzNzdhMjg3OWRkMmU4ZGE5ZDg2NjUgbGVnYWN5LXRydW5rCisyNzk2NyA4MWM1NmNiYzFkNWZmNDg1ZTY0MmE3Y2FkODU1YjRkNTcwM2EwMzJlIGxlZ2FjeS10cnVuaworMjc5NjggMDA0ODhjYTllMDRmNzU0Yjg2NzEyMTMyMWRjYTM1ODIxN2RlNTVhZSBsZWdhY3ktdHJ1bmsKKzI3OTY5IDg1MTEyMWVjYzExMTE3YTQ3ODI1ODkzYzUwOTVjMzdlM2YwMDU2NzIgbGVnYWN5LXRydW5rCisyNzk3MCA4MGZkMGQzNjFlMTdmNjA0YWRhZjZmMWE3NjAzMGZhYjMwZGY1NmNkIGxlZ2FjeS10cnVuaworMjc5NzEgOTIwYWQwOTkzMGRjNTA5Yzk3ZGQyZDY0ZGE4YzFhNmRjZDJjZTcyMyBsZWdhY3ktdHJ1bmsKKzI3OTcyIDNlNzE4YzNkNTFlZmFiZDEzOGExZDE3MmIwMTFhNzRlZDQwMjM1YTcgbGVnYWN5LXRydW5rCisyNzk3MyBhMzJjZmYwYzc1ZGNjN2VmYjVkYmUyZGE5ZjdhYTM3M2M4YjFmOGNjIGxlZ2FjeS10cnVuaworMjc5NzQgY2NjYmMyYzc4YzA5OGIzNzlmYTEyOGM2ZTczYTM1YTFlNWFhZTcwMiBsZWdhY3ktdHJ1bmsKKzI3OTc1IDI0NDExN2FlYmJkNTg1YmVlOWVlYWY1Y2EwMDQzNzVmNmU5MzZlZjIgbGVnYWN5LXRydW5rCisyNzk3NiBjYTIwYmUyNDM4MWZiMzA1ZjMyOTEyZjc5NGNjYmUyZGM4Nzk2YzVhIGxlZ2FjeS10cnVuaworMjc5NzcgNDM4MmIyMzc0MzkwMWRlNzI0ZWM1ODhiYTljN2RlZDU1NDBhZmI3OSBsZWdhY3ktdHJ1bmsKKzI3OTc4IDliMWIyYjU4Yzg2NjYyMzY3MGNhNjQwYjUxOTllZGE4NTNkNzNjMmMgbGVnYWN5LXRydW5rCisyNzk3OSAwMGY4ZGRhMTdlZTJiNTJhZmFkZTk1MTQ4YzEwNzllMGVmZjE0ZGYyIGxlZ2FjeS10cnVuaworMjc5ODAgZWMyZTI4MzAwYjc2NTljNjc5NzMzYjBlNzFhOGRhNzA0OGIzZjQ1NSBsZWdhY3ktdHJ1bmsKKzI3OTgxIDI1ZDY3Yzk0YTZkMWEwYzczMzVjOWZkNjg3NTdkM2ZiOTkxMGY4NWEgbGVnYWN5LXRydW5rCisyNzk4MiBjMzlhZWQ0NWRiZTk5ZGM5YTM0NzhhM2Q1OTc0MGQxOTA4MmNhOTE5IGxlZ2FjeS10cnVuaworMjc5ODMgOWRiYTEyMTY3ZGI2ZjdkMjI2ZmE5NDUyZWYzOWY1ZWE2NmQ5M2M2YiBsZWdhY3ktdHJ1bmsKKzI3OTg0IGNiMzA4YTEzYTFmZDIwNDY4N2ViYzQ2ZjNkYmNiZWFlYTE1YjVhZGUgbGVnYWN5LXRydW5rCisyNzk4NSBmZDA1YzJkMzVmZTcxOTFmMmRhZWQ4ZWRiZWE4MGZjOGE3OTUzMDU0IHJlbGVhc2UyMi1tYWludAorMjc5ODYgODM5MzE1ZGUwY2ExMGUyY2I0OTg1MTMxNjI3NmMyMGQyOGYwYTQ3MyBEU19SUENfQlJBTkNICisyNzk4NyAxZWE1NjllYTUxZmQ5ZGU4MDA4NzQxOTUyNjhjYTliMjE4ZGZlYjlhIERTX1JQQ19CUkFOQ0gKKzI3OTg4IGU3YjZiYzJiMzVlMmU0MmJlODc3YTRkMzE2YjE3YTM0OTQ0Njk0YWMgRFNfUlBDX0JSQU5DSAorMjc5ODkgMzA3MzMyZjM3YjdkOTM3ZDRmZTNiNTE2NTQ5ZjIyNjhjMmU2OTIyMSBEU19SUENfQlJBTkNICisyNzk5MCAzMjU3ZWZkYTQ1MTMzMWU3YmNkM2I2MGQwMTc0MDY1NzM1YzgyYjM2IGxlZ2FjeS10cnVuaworMjc5OTEgZTRhOGUzZTQyMTBkOTc3ZTdlNzk3NjZjNGM2NzM1NzQxMTg0NDAxYiBsZWdhY3ktdHJ1bmsKKzI3OTkyIGRhODhlOTkwZjkyY2NkMmU3MTgzZDYzNzcxYjM2NGM5OWExODg3ZDMgbGVnYWN5LXRydW5rCisyNzk5MyA2ZTBkZWVlYjk3ODdkM2IzZDdmYjcyOTcxNTYzZWM0YWI3MWUxN2Q0IGxlZ2FjeS10cnVuaworMjc5OTQgZjkyOGY3ZWVhMmQ2OTg1ODZkMzA0ZmQ1NGI3OGFkOWZmMDBkOTlhYyBsZWdhY3ktdHJ1bmsKKzI3OTk1IGE1MDZhYjliYjRhNDE0NzA0OWVkN2Q3NDA1ZTU5MzJiMThlMTdhNGEgbGVnYWN5LXRydW5rCisyNzk5NiBhMDJhYmE3MmNiYjI0OTllNWEzMDE3NzY2ZDg3MmYzYjJkYzQyOWRmIGxlZ2FjeS10cnVuaworMjc5OTcgMDAxNjdiMmVjYWNjNWViYzM3OWI2ZmZiNTA3YWM1MDU1YzY0NzkwYSBsZWdhY3ktdHJ1bmsKKzI3OTk4IDEyZTE0NjE3MWYzZGM5MDZiOTFiYWUwYzZjOWY0ZDFmYmU0YWE2OWIgbGVnYWN5LXRydW5rCisyNzk5OSBkN2NhMGEyY2UwNzQ2Yjg2YjMxMjI3NTY1NzliYTgyZDhkNTE2NTJkIGxlZ2FjeS10cnVuaworMjgwMDAgNTlkNTMzNTgwZTcyZDYxNTNjOGNlNGQ2MzE3ZGEwNTljM2ViZTE1MCBsZWdhY3ktdHJ1bmsKKzI4MDAxIDI2MmFkMTZiNGRlMDlhMzJiMWMxMzRiYzI1MDAxZjdhMDE3OTU3NDEgbGVnYWN5LXRydW5rCisyODAwMiBmNWUyOWM3MzM2ZGQ4OGViZTE2MGU0M2U1MmExNmRlNDIzOWUyZDIxIGxlZ2FjeS10cnVuaworMjgwMDMgNzNiMzA5Y2YwMjEzNTUyOWM5OWQ4NGJjYzNmMzRmOTg2M2JkMTUxMyBsZWdhY3ktdHJ1bmsKKzI4MDA0IDJiMDc2NmFmYWEyMjJkMGFiMDcxZWIwN2NhOGY4MjRiM2NiMGEzYzcgbGVnYWN5LXRydW5rCisyODAwNSBmZDQ1NzViNTZhNGRlMDE4ZTY3OGNlNDczNjZlMjRlODg0Zjk4YWFmIGxlZ2FjeS10cnVuaworMjgwMDYgOTQwYzRmNTQ2ZTdmMTdlNzQ4M2NlOWQ0NDc5NjU3YzE2NDhmNjIzZSBsZWdhY3ktdHJ1bmsKKzI4MDA3IDNlNGQ0MzI4NzJlYTc5MThmMzczMmQyODUxZWE4ZmQzNTE4YTM0MTYgbGVnYWN5LXRydW5rCisyODAwOCBiNjcwN2UxNTk5MDlhNjVmODhjOGM3ZmRjMjYzOTg1ZWYwNmU2OGI4IGxlZ2FjeS10cnVuaworMjgwMDkgNDM0ZWM1MjNmMzJjN2Q2MDZkZjI4NjMwYTgwNDY3NDA2NjViYjhlMyBsZWdhY3ktdHJ1bmsKKzI4MDEwIDEzZGUyZjZmMDdkZGRjOTgxOTAzYjM1NjhjNDg2YjQ4NGUzZjFjOTQgcmVsZWFzZTIyLW1haW50CisyODAxMSA2NTQyZGZhNDBlNzdjNzYxZDAxNDgwOTY4NmEyMjdhNjkwMWJhYzNiIGxlZ2FjeS10cnVuaworMjgwMTIgOGE3NGYzMzVjZmJhYjllMTI3NzU0MTdiOTcyNmUzOTg1YTM3NDg1MyBsZWdhY3ktdHJ1bmsKKzI4MDEzIDc5MWJiZWRiYmJlOWUzNzZjZjhiZDQ5NGIyNGI4MmU3M2FjNzY3YzMgbGVnYWN5LXRydW5rCisyODAxNCA0MGViODBkYzQyNTAwZTk4MGUxOGNhY2QzZjY4MzliMzEwZjQ4NDJjIGxlZ2FjeS10cnVuaworMjgwMTUgOGExYzA4NmFkMjEzYTc2NWQ0MWVlNjA5ODBmNTIyYTMwZmFlMTVhYyBsZWdhY3ktdHJ1bmsKKzI4MDE2IDM1ZGJhNjAwN2FjMzdkMmY0ZDRkOGMyNmVkZDk0OWY3YWY1OTE5NjEgbGVnYWN5LXRydW5rCisyODAxNyBkYmMwZjJmMTE0MTQyMGNkZjI5NzhiNTQyNmUwNDVmMmM2ZGUzYWQ1IGxlZ2FjeS10cnVuaworMjgwMTggNjQyZGRjZmU4NjRhNGZlYWZhODhlZjZiY2YwMTJiNTVlYTdiNDk0OCBsZWdhY3ktdHJ1bmsKKzI4MDE5IGI2NGRiNTUwOTcyYzE0MGY0NGExZmZkYTllZTljZjY1Nzk1Y2Q4NmEgbGVnYWN5LXRydW5rCisyODAyMCA3MzU0NDFmZGFiN2U0NzRmZTQ1MGExNmQ4YTY2YjQ0NTc5NWUwN2E3IGxlZ2FjeS10cnVuaworMjgwMjEgODBiMTI5NDRhNDJiMGFmNzE1MDU3NTIyODZiODg4ODkwMWJjZTkzZiByZWxlYXNlMjItbWFpbnQKKzI4MDIyIGM5ZDI0MjhhNmE4NWVlODg1ZWVlNGE4Mjg5YTIxYTY4OTBkZjI4NDcgbGVnYWN5LXRydW5rCisyODAyMyAxMWIyNjJmZWQ1ODA5Y2NjNDU0ODUyZjdkNTRiYzZlZjcwYTkwYjg0IERTX1JQQ19CUkFOQ0gKKzI4MDI0IGZiNDU5MWMwNDcwZTI4MDBmYzg4NzU3NGUxZGZlNTA1YWJlZjM1ZjEgRFNfUlBDX0JSQU5DSAorMjgwMjUgZDZlNWU5YTFiY2EwOGQ1YzQyNzIyZmZjMzU4NThiYTI3MjdmMTM0ZCBEU19SUENfQlJBTkNICisyODAyNiBiNDdhNmEyYTFlNTYwYzI5MTFlNjBkNzgyNmI3NTg2OWMxZDY2ZmU0IERTX1JQQ19CUkFOQ0gKKzI4MDI3IDE4NjljZWNkMzkzMzQ5MjEwNGRmYzM4MzMxNzY3MmMyZGQzZTc4ZTIgRFNfUlBDX0JSQU5DSAorMjgwMjggZjczMjU5NzY4NDI2N2E5YmJiNGY5MGQwMzZiODIzMWI4Y2ZiOWM3ZCBsZWdhY3ktdHJ1bmsKKzI4MDI5IDY0NDVlNDRmY2I3ODM2MGQ3MjVlOWM4MGE1ZjNkNDBiZjUyYTBlZTYgbGVnYWN5LXRydW5rCisyODAzMCA0ODJjOTQxZDU5M2Y4NjFjNGZmNTFhYTU5YTRlMjkzZTNmNzdmNjUwIGxlZ2FjeS10cnVuaworMjgwMzEgZjNlNjliOWFjYzQwNmIzZTFkZjBkMTQzMjA0MjMyMTIyMDIzYTUyNCBsZWdhY3ktdHJ1bmsKKzI4MDMyIGRkY2I5Y2UwNDU0NjQ5NjMyZGIyOGZiNjY0NjQzMzQ3YTc2YWM1YmUgbGVnYWN5LXRydW5rCisyODAzMyAwZGY5YTljMDhjMTM5ZTk2MWQzZjIyMDhkMmUxMzE2MDg0MDk2ODk4IGxlZ2FjeS10cnVuaworMjgwMzQgN2Y4OTY3ZjU5Y2Y4MmYwZjIyMGQ3ZGUzZGNjZTc4YzdhZjExMWE3MCBsZWdhY3ktdHJ1bmsKKzI4MDM1IDQzY2FhMjEyYjk1OWNmN2IwYTlhODU3MDRjY2JmYjMyNDUxNTkyMTAgbGVnYWN5LXRydW5rCisyODAzNiAxMTBjNmVkYWY2MmYzODU4ZTRkNjExYTZlODJhOTQ0ODk0N2VlN2RhIGxlZ2FjeS10cnVuaworMjgwMzcgZjZhOTdjZDNiYTI0YjQ1NTdlMDczZWUwYmEwZTBiNjllYmU5ZWMyZSByZWxlYXNlMjItbWFpbnQKKzI4MDM4IDFlYmMxMjhlNDg0MmMyODRhMmM0YzRiNGY3NzdjYjY0YjM2NWNhNTcgbGVnYWN5LXRydW5rCisyODAzOSA3NzgwOTM1MzNhNDYzOTlhYmIzYjEwN2Y4YjQ5MTQwNmE3OWE0ZjY4IGxlZ2FjeS10cnVuaworMjgwNDAgN2FlM2Q3NDg2ODAxZTdmYmVmY2NkNzc0YmI4MzQ2MGQ2MWMzOTYzNyBsZWdhY3ktdHJ1bmsKKzI4MDQxIGRhOTA2NTNmYzJjNmViY2ViMGMyZDRlZjg3MGI2YmM0Y2NmZTNkMDcgcmVsZWFzZTIyLW1haW50CisyODA0MiBmMzNjMDFjYzQxNGM4OTc1NDU2NDIwOTRlOWJkNDZlZWMwN2I5ZTkxIGxlZ2FjeS10cnVuaworMjgwNDMgYTlmMjU2N2MyZjgzNzY1ODIxN2U2ZGNhMzI3NTdlYjFhZjk5NjFiYyBsZWdhY3ktdHJ1bmsKKzI4MDQ0IGZiMWQwZTU1YjE1MjFkNmJhYmRjNjk4YjE4YjIzOTZlMGFkZmM1NTYgbGVnYWN5LXRydW5rCisyODA0NSBiZWVkMWMxZTdjNmRmNjc3MTczM2ZmMmUyNDlhMjhjMDIyYzVlODA1IHJlbGVhc2UyMi1tYWludAorMjgwNDYgMGQ5ODY2MGUzNjUzOTVkZGQ5NDVjYjE3NjNhOWRlZWRiZmVjNjdlMCBsZWdhY3ktdHJ1bmsKKzI4MDQ3IGEwZWI4ZTM4MmQ3NGNiMTIyYjdiMWNhNDcwMDJjM2NiNTgyYWI3OTkgbGVnYWN5LXRydW5rCisyODA0OCAyN2RhMmI4MWE0OTZhOTI1ZTExMWI0NWI4ZTdmMzY3OGU4ZjdjMDJhIHJlbGVhc2UyMi1tYWludAorMjgwNDkgN2JhM2U1ZmJhYWQ4MGMzMzBhZGRjN2M1ZjY2ODdmNDNkYjQ1YzJhZCBsZWdhY3ktdHJ1bmsKKzI4MDUwIDhjZjAwMzM4YjcyOGQzODdkY2NjMTA5ZTEzNGZjODFkZTkzNzNiYjEgbGVnYWN5LXRydW5rCisyODA1MSA0YjM0MmVkMzA5ZTAyY2Y5YjZiYjIyYTc3ZDM2ZTkwODNmYTZkNTUwIGxlZ2FjeS10cnVuaworMjgwNTIgNjk3ZDIyM2EyZjc2NjYwMzY2ZDMyNTJkN2ZjNmY1ZDcyODg2M2RjMSBsZWdhY3ktdHJ1bmsKKzI4MDUzIGVkZjc1NzIxM2E5MmRiMDNjZjg4ZTcxMDlhZmUwYzliZGVkN2E1NGYgbGVnYWN5LXRydW5rCisyODA1NCAyMjRjNTE2YmMxMWYxZTE0NDZlYzczZDRiOTMzOGIyMDBkZjNmMDhlIGxlZ2FjeS10cnVuaworMjgwNTUgOWQ4NGE1YmQ3NjdmYThkMDY1ODYxZjI0OGU0MDllNDUyODE3YjM5NyBsZWdhY3ktdHJ1bmsKKzI4MDU2IGFiNWVlYTJkZDNjMDBjMDhkMTQxNGRiYWYxOGNiMGQyZGZkODRkNDcgbGVnYWN5LXRydW5rCisyODA1NyBmZDFiNWVmYTBjZTNlYWNjODkzMmM4NTA3MjFkNDRkMTEyMGUyNmRhIHJlbGVhc2UyMi1tYWludAorMjgwNTggMWFiMjdjMTc3MGRmNWI4NjliN2RlN2NhMDUwYjAxMDExYjU5ZjBmYiBsZWdhY3ktdHJ1bmsKKzI4MDU5IGY2NzJlMWRiYWQ5MjI0MTFiNDMyYzgyODIxMTM2YTFjODU1ZmVkMzMgbGVnYWN5LXRydW5rCisyODA2MCAxOGNhNGU3ODNmOTg3YmQzM2E2YzUyZGQyZWY1N2RjYjYwYTFmZmE4IGxlZ2FjeS10cnVuaworMjgwNjEgZTYxYjExOGU5Y2FiMjkyNmNiNTRlYmZlMjBhNGRkOWMyOTRiOTJhNCBsZWdhY3ktdHJ1bmsKKzI4MDYyIDk1NTkxNGIwYTRkNjQ2ZTc4YjFhYjgwZDdjZDA2ZTIyNjA1Y2Q0NTYgbGVnYWN5LXRydW5rCisyODA2MyA4YmMyNjViMDg0ZDk3YzFmN2NmZjNiZmU0YjIxMThmMWVhNDliMzcwIGxlZ2FjeS10cnVuaworMjgwNjQgNTlkOTIyODc3OGFkNjNlOGJkNzY4ZjAyYTY1ZDdmYjFjYzQ1MDY2NiBsZWdhY3ktdHJ1bmsKKzI4MDY1IDcyOTI4N2Y3ZmMyZTVmYWIwMDQxNTI5ZDk1YmQ0MGRjMDU3ODYwNmYgcmVsZWFzZTIyLW1haW50CisyODA2NiAyZjQxMWYyZDc5MWFkZTc2OTY1MDBkZmE3OTY0YzFhOGUyNzQ2MDU5IGxlZ2FjeS10cnVuaworMjgwNjcgYTYxODkzZDdjZWYyNTBjZDM0ZGMyMTQ4YzBmZjg4OTE4ZDhlMDVjNSBsZWdhY3ktdHJ1bmsKKzI4MDY4IGIyNjVlNzZiYWI4ODMyOTM0MWJhODQ0N2E1MmU5Yzk4M2I4NzY1M2UgbGVnYWN5LXRydW5rCisyODA2OSA2YTZkMDJiZTMyMWNjZDEwMTgyMzczYzUwYjkyZTA1MmI2YTdjNjI4IGxlZ2FjeS10cnVuaworMjgwNzAgZDI1Y2Y5NGQyMGIxZWFlZWIwODg4ZGM2MjFjMjI3MDk0YzEzOGY0ZiBsZWdhY3ktdHJ1bmsKKzI4MDcxIDRmYmY1MzQyMTFiOTdjODgyYzA5ODQ0YmMwMDRiMTY4MGFmMTFlYzkgbGVnYWN5LXRydW5rCisyODA3MiA1NzlmMDljMGZkYmNkOTJhZGQ4NjYzYzQyYjc2MDMxYzYwMzJmNTUyIHJlbGVhc2UyMi1tYWludAorMjgwNzMgYmRiYTcyZmZkMjFiZjlkNjI2NzRiYjEwNjNiYjdkN2Y2MWQ2NmE0YiByZWxlYXNlMjEtbWFpbnQKKzI4MDc0IDk1YzQ2MjNmODE4NTA4ZjJmYjk0NGYwYTcyZjMwYTUwZDJhNzQwMmUgbGVnYWN5LXRydW5rCisyODA3NSA3MGI2NzUzMTE3Y2MwMWJkN2Y3NzQyNDc2YTM4YmUwY2Q5YmEwNGI4IHJlbGVhc2UyMS1tYWludAorMjgwNzYgNjQ3ZjkzNjc3NTBlODc0MDEzMWM0NGQxY2FlZDZhOThkODVmNzg3ZSByZWxlYXNlMjItbWFpbnQKKzI4MDc3IDY4OGVlZmJhMDg2OWJiNWQzZjJjODE2YTUwMGVhYzIwMzUyMDA1MGQgcmVsZWFzZTIxLW1haW50CisyODA3OCAzNzk2ZDM5ZjBiODBjODFjODVlZGM5N2M2ZDRiMGE5YjlmYzk1N2U0IGxlZ2FjeS10cnVuaworMjgwNzkgMzI2OWJkZDY1OTg4ZWZmODk3NjM3MDg0YTgzMWFjZWI1YmU0M2E5OSBsZWdhY3ktdHJ1bmsKKzI4MDgwIGZlYzBiMGFlZjE0YmE0ODdlMDY2ODY0YTg2ZjRlYjM5NWY4MzgxMDMgbGVnYWN5LXRydW5rCisyODA4MSA5ODA3NjdjNmNkOTc1YjYxN2UzYTA3Y2YxYjZmZDhmYTNhMDVkOWMyIGxlZ2FjeS10cnVuaworMjgwODIgNDc5Y2I1ZmYyZTYwOWM1YTIxN2E4Mjk0MGJmZjkzOTNhYjdjMjMxOSBsZWdhY3ktdHJ1bmsKKzI4MDgzIDcxZGNhN2M3NmZhMjI3OTJiZTkzZmI5MGM0YzRiZTdlOTA5MjVjMWMgbGVnYWN5LXRydW5rCisyODA4NCA3YjEwZTdmZjc5NGRjNTAwMGZhZWNhMWYzMDYwMmZlMWVkODFiMjcwIGxlZ2FjeS10cnVuaworMjgwODUgNmQyNmQ0YjljNWEzNmMxOGU1NTA3MzkzYjBlODc4MmVkYjUyNjNhYSBsZWdhY3ktdHJ1bmsKKzI4MDg2IGFlZTE4ZWEzZDI4NDc2NTM1MDdmMmIxYWIxNjllNDE4YTNkZjQxMWEgbGVnYWN5LXRydW5rCisyODA4NyAwNDkyYWQxYWM2MjM1ZDFmYWYzYTg0MzkyODA1Y2NjMmFlZTUxODUzIGxlZ2FjeS10cnVuaworMjgwODggNTY3NzA0YmZhNTk1YTVhYjdiNGNlNzFhOTZjNDE2MmIyNDAxNzQyMyBsZWdhY3ktdHJ1bmsKKzI4MDg5IDI3NGU0MmE2OTFlMGM4NDM2NTNmZjhiMmEyNGM5YzZiMmM5NDljZDAgbGVnYWN5LXRydW5rCisyODA5MCAzNjQ5M2E3YzYyNTM5YmNhOTk1YTkzYjEzNjcxZjRjNGNmOTMwNTM2IGxlZ2FjeS10cnVuaworMjgwOTEgYmU0N2RiMzgzMDdlMTgzMWE2YjRmNDdjNmFlNjI4MWU1YmE4MTExMSBsZWdhY3ktdHJ1bmsKKzI4MDkyIDhiNDcwMjgxNjQ1ZTYwMWRmMzJkZDBkZDg2NWU3ZDAxYzIwMGJmNGQgbGVnYWN5LXRydW5rCisyODA5MyA3MzRmODljMTk0ZGQ5ZjEwM2VjMzA0YmFjZDllZjg4YzQzNWVmOWNlIHJlbGVhc2UyMi1tYWludAorMjgwOTQgZGViY2Y3MjA2N2YwNTk2N2I1ZDc1NjQ3ZDYzNDRkMWYwOTgwYmYwNiBsZWdhY3ktdHJ1bmsKKzI4MDk1IDljNmYwZTE5OTkwMzVhNGYxNDc1NTI2MjcyMTVkNzVkZmE3NGQ2OGEgbGVnYWN5LXRydW5rCisyODA5NiAwY2RiNmU5YmNiNTIxNGRiMzg3MGU1YjhhNmExNDUyZWQwOGMzN2FlIGxlZ2FjeS10cnVuaworMjgwOTcgYTI4YzljMzM2YWI3MTE5MTcxZGI3ZTVkNmNjMzQ1OTAzNWM5ZDVhOCBsZWdhY3ktdHJ1bmsKKzI4MDk4IGU3MWJiYmEwYTBiOTc2NjhjNzY4NDBmNGQ2YTMwZGU5YmRiM2Q0YTYgbGVnYWN5LXRydW5rCisyODA5OSA4MmUzZmRiMjgxNjQ1MGMyY2I1ZWRlZDBmYzY4MGM4ZDUyOTljMDEwIGxlZ2FjeS10cnVuaworMjgxMDAgYTk4OWEyZWFhMmFjMTA5MjU1ODRiMGQyM2ZmNzgzN2RjMTQwNzIxOSBsZWdhY3ktdHJ1bmsKKzI4MTAxIGJhMzAzOGEyN2MxZTM5Yjc1NWY0OGFkZWJhNmMxNTYzMmJkZTk1MWEgbGVnYWN5LXRydW5rCisyODEwMiBlZWY3M2U4ODIzZDVhZWY5MWQ0OWI3ZWMxYzcwMWY5Nzg3M2Q5MzI3IGxlZ2FjeS10cnVuaworMjgxMDMgMzFiOWQzNjk4NjFkODQ5OTdkOTViZDFiYTQ1NDAyYjc1MWJlM2MxZiBsZWdhY3ktdHJ1bmsKKzI4MTA0IDgwYzdhODJkNjE0NDg5ZTk0NTA0ZjE2OGJhZDY4ZmZmMTgwZDYwM2YgbGVnYWN5LXRydW5rCisyODEwNSAzNDEyOGNjZjJlZTYxOTNiMmZmNDdlYWI4ZmE0ZWYzZTcxMjFlOWVmIGxlZ2FjeS10cnVuaworMjgxMDYgYTJmOWJiNTQyMzFiMTNhOWJjNzM3ZjVhMTA2MDVlODllMjUyYTAxNSBsZWdhY3ktdHJ1bmsKKzI4MTA3IDZlYjk1ODcxNmQ5N2M4NDBjZWQyYmVjZDQ5MzQzMzUyODEwN2RiM2YgbGVnYWN5LXRydW5rCisyODEwOCA0MTgxZTNhNDJkMGEyM2RhYmRhMGY3Y2Y4OWEwOWQxNDEyYjA1MGM2IGxlZ2FjeS10cnVuaworMjgxMDkgNTY0YWJiOThkZWI4OWM0ZTI5ZDlhN2M2OWZhYjU1YjI4M2I3YjgzNSByZWxlYXNlMjItbWFpbnQKKzI4MTEwIGU1YmM0NzBkMWQxZTFmZTA3NjY2ODZjMjQ0OTVhMGE2NmNhZjRhOWUgbGVnYWN5LXRydW5rCisyODExMSAwZDQ2ZTRiODljYWU3YTRlYTFlM2VkNGIyYWM5ZWQwNmQ1MTZhZDQ1IHJlbGVhc2UyMi1tYWludAorMjgxMTIgMmRjZDRkOTI4MTQ3MDNmOTkxZGY0ZWE2OGZmMmIxZDhkZDdlMTQzOCBsZWdhY3ktdHJ1bmsKKzI4MTEzIGFhOGJkMGRjNGY4YTEwNmYwNjg0MGEzN2FlOWE1OTQyN2U0ZjdjMDggbGVnYWN5LXRydW5rCisyODExNCA2Yzk2NTg3YTE5N2Y5Y2RhNDMyYjhmNTI1NGJmZWUwYmE1YjRkOWY1IGxlZ2FjeS10cnVuaworMjgxMTUgMTFjNzAxMDM4ODA1NjUxOTNlYTRjNWYwNzllN2IyMzY2ZGQyZjFlOSBsZWdhY3ktdHJ1bmsKKzI4MTE2IDQwNjc4OGNhZWY2ZjI2ZWNmMGQ1MDcxYmY5OWZlYmVjMTY0NzRhODQgbGVnYWN5LXRydW5rCisyODExNyA5NDI5YzNjZjQyYTcxMmJmNDBhMGI4ZjE2OGZhZDBlODVmMTg3ZmZjIGxlZ2FjeS10cnVuaworMjgxMTggZGIyN2E0MmNjZjQ4YWMzMGVhYTE3MmIxNDJkZjI2ODgyOTkyYWU1ZiBsZWdhY3ktdHJ1bmsKKzI4MTE5IDc0MTQzZGI2YWUyZjk3ZmI2YTU0MGFmNzU4ZWE2MDU3ZGRlMjY0ZGMgbGVnYWN5LXRydW5rCisyODEyMCA0Yzc0NmJhMjRkZTIxYzgxMGI1MGE3OWFiZjA1N2NlMzE2ODRlZWU5IGxlZ2FjeS10cnVuaworMjgxMjEgMzQzZTY0YzkyZWIyOGUwOWI1ZTBjNzQ5NDM5NjIyMzliZjBjZmM0NCBsZWdhY3ktdHJ1bmsKKzI4MTIyIDFkM2Q5ODBhMzE4NjA0MWMwNjIzOTZiOWNkNTdmOTkyNmFhN2I5ZGUgbGVnYWN5LXRydW5rCisyODEyMyAxMjlkOGQyZTE5MDRjNzI2OTQ0YzFkNTljNzFjYzJlNmUwN2E1Yzc2IGxlZ2FjeS10cnVuaworMjgxMjQgNWM3NzMxNmIyMWY3MGQ3NThjZGI2NWM1ZDg4YTIwZmYyM2M4NWQxOCBsZWdhY3ktdHJ1bmsKKzI4MTI1IDM3NGY4NzljNWQ4YmQ5N2YwYWM0YmJmOWNjNzUxYmE0NDZhMTQ2ZDUgbGVnYWN5LXRydW5rCisyODEyNiAyZDNjNGE3YWVjMGE3MDZkZjUyNTJiNjQ1NDgzYjRiMzg5YzEyMTk5IGxlZ2FjeS10cnVuaworMjgxMjcgNTEwZTczYWUzZTllOWQxMjNlYTMzNjAyZWVmMTQ5Mzc2MTNmZTYxOCBsZWdhY3ktdHJ1bmsKKzI4MTI4IDllMmY1Mzk2MzRlODBhMWVkNjNjYzg2MWUwOTEyYTA4MGQ0ZWUwYmIgcmVsZWFzZTIyLW1haW50CisyODEyOSAxMTI1ZDk0ODlkZmE0MDA3YmU2N2FiZjc3OTg4ODg1YWU3NTNlOGJiIGxlZ2FjeS10cnVuaworMjgxMzAgNjkwNzlhYzdjNTEyZTU2MGE4MWNlNDA3MmFiNjNlYjZjYjMwNGIzNSBsZWdhY3ktdHJ1bmsKKzI4MTMxIGJiZDVmOGFmNTg4YWMxMGNmMTRkMzBhZjcwOTY5NDBmYTVkOTY3M2QgbGVnYWN5LXRydW5rCisyODEzMiBiNTY0MGU3NGFhNWMyOGJlZmMxOWJjZmZjYmI0NDZhODkxNTI3NTdlIGxlZ2FjeS10cnVuaworMjgxMzMgM2I4YTcwN2I0MWM0NjJmMGQ5MGU2ZmUwOWIwZDNkZWM3ZDA2OTVjYiBsZWdhY3ktdHJ1bmsKKzI4MTM0IGIyZjdkZjQ2NzcyMjFjY2FkYWRjNTkzNjVhZWFjZGYwZTg1ZGY0NzIgbGVnYWN5LXRydW5rCisyODEzNSA4ZDg1MGQ1OGYxMDljN2Y1N2VkNDdhYzJjODcwMTU4Y2MwYzVkZTk1IGxlZ2FjeS10cnVuaworMjgxMzYgZDcxNWNhOWRiM2FhYTJkMTRjMDg2YTI5NTFmZjJhYzgzM2M4ZGY2MSBsZWdhY3ktdHJ1bmsKKzI4MTM3IDA5ZmYwZWQzM2VmY2I5MTk3ZWE4NGI3ZTRjZmQ5YjI4MmU2NzBmNjEgbGVnYWN5LXRydW5rCisyODEzOCBiMDI3M2YzOTdjZjEyMmRiYTIzMmE5YzMyOWZlZDBhMzFlMjEwNDVmIGxlZ2FjeS10cnVuaworMjgxMzkgNDkyMzE2MGUwNzA3ZjdjM2U0ZmUwMWM1OTZkNWU1NGYzYjAxYzAxYyBsZWdhY3ktdHJ1bmsKKzI4MTQwIGIwZDVmYjU3N2FiNjAxY2RhMzhiYWVmNDI0ZmFhZjk4OTRlMjViMzYgbGVnYWN5LXRydW5rCisyODE0MSBmZjA1ZWVmM2E2ZDFlYjBkMGFjNTAzOGQxZThmMTA2MTMzNjRhODIzIGxlZ2FjeS10cnVuaworMjgxNDIgZWFhODc2MzJiMWU4ZWRmOGUyYmU4M2YzM2U5MDJkMjQyZGRlNmRjNyBsZWdhY3ktdHJ1bmsKKzI4MTQzIDU2NTYwOWJiOGQ4OThkM2MzNzViNjFlNTgzODk4NDM5ZWNmMzA2MzggbGVnYWN5LXRydW5rCisyODE0NCBlZWM2ODMyODE4YTM3MDA5ZThkNzBiM2JiOTNiNGEwNGY1NTNhMjllIGxlZ2FjeS10cnVuaworMjgxNDUgMTAzOTFkNThkMTg0MTFlMzc2NDAyNDI2ODBjZjBkYjhlZjAyYzAzYyBsZWdhY3ktdHJ1bmsKKzI4MTQ2IGU3NTY4NjdhY2U4MTBjOGZiY2Y1OTk1OTBjMjc3ZTI2YzFlYTAxZjMgcmVsZWFzZTIyLW1haW50CisyODE0NyBjNjU5ZjA0ZWU0OTkzNjhkNTQ2MzYwMTVkMGNlZGEzZWI1NDMxZmIwIGxlZ2FjeS10cnVuaworMjgxNDggNmQ5OTc0YjQ1ZmVhMTMzMzk0OWRhZDY2NmY1NjljZWJjNjE4OWVkZSBsZWdhY3ktdHJ1bmsKKzI4MTQ5IDFhMzI3MGUyNmMxNjJmNDk5YTBmMTY0MzUzZjg2OTIyZjFmOTIyYTYgcmVsZWFzZTIyLW1haW50CisyODE1MCBiYTAzNWY0YjQ3YzE1NjAyZjExNTQwN2M0NjUzNzY3OGNhYWEwYzNlIGxlZ2FjeS10cnVuaworMjgxNTEgNDkxNjlkMDBhYjE4MjI0M2M5NGVjOWY3ZDBiZWYyNmRiYTQ4ZjE2NyBsZWdhY3ktdHJ1bmsKKzI4MTUyIDE5ZTAxMGY3OTJhMzgzZTJlY2I3MzU5ZGUwMTgxODk4YmY3NzIxMzMgbGVnYWN5LXRydW5rCisyODE1MyAxOGMzNWJiNWZlMDc0M2ZmNTcxYzgwMjZkNGU3YjlhNzE5OWFhODU0IGxlZ2FjeS10cnVuaworMjgxNTQgYTQzNTE5ODg3YjE3OTRkNzAxN2UxYTcxNzhiY2FlNzlhYmI5MDQ4NiBsZWdhY3ktdHJ1bmsKKzI4MTU1IGMyNDhiZWU1MmRjNmE3OGU5ZDhhYTA2MTM5OTVjZTRkYjM5ZTNlN2QgbGVnYWN5LXRydW5rCisyODE1NiBkYmY2ZTU2MzAyM2I5ZDRmNjc1NWI3ZWZlYzZkZDJhNTY1MDQ2ZTUyIGxlZ2FjeS10cnVuaworMjgxNTcgYzFlYjY2ODUyNWUxMWNlNDdmYTk0N2IxMDA5OTBkMzRiMDNjNDg5YSBsZWdhY3ktdHJ1bmsKKzI4MTU4IDI3YWU5NzhiZWU1ODU3MzQyOWE5NzY2MjEwZDBkNTM4OWMwZTk4MDIgbGVnYWN5LXRydW5rCisyODE1OSA4YWIzMDMzNzViMzA1ZTgzODg1NDdlMWQ0YzdlY2E4NDY4N2RlNzU0IGxlZ2FjeS10cnVuaworMjgxNjAgYzg4ZDA4NDhjNWM5MzBjMjZjMDBkYmIxMWY1ODMxMTgyMGM5ZjdjMSBsZWdhY3ktdHJ1bmsKKzI4MTYxIDljMjVhYTEzYzM2ZTFjOTJiOTA0ZWYwMzBiNzhiZDY1NzdjODcwNmUgbGVnYWN5LXRydW5rCisyODE2MiBiNTA0ODM1Njg1YzM0ZWE3M2U3MjBlNjY4MDAzOGE4ZGI4OTJkODJkIGxlZ2FjeS10cnVuaworMjgxNjMgMjdlY2E0NzY2OTM3YWVmNGNiZTJmYjllZGQ5OWI1NjIzNDg5ZDA0YiBsZWdhY3ktdHJ1bmsKKzI4MTY0IDNkMjMzNTA5NGI4OGMxN2ZhNmI1ZjZkMDg1NDlkY2M0MmIyNWZiOGQgbGVnYWN5LXRydW5rCisyODE2NSBkY2ZhYmU2NWMyMmU1YjJiNjhjZTE1NTNhZTA3MjQ5ZTVlOWY4YmMzIGxlZ2FjeS10cnVuaworMjgxNjYgZTA0MzFkOWM0NDc0MjAyN2Y3MjhiNWMzMjYwZWJiOWI4NDk0YzViMiBsZWdhY3ktdHJ1bmsKKzI4MTY3IGNjZjY2YTFhYTBiODQ0MjlkNTU0OGQyYjUzZjYwMTlkNTE3MmFkODAgbGVnYWN5LXRydW5rCisyODE2OCA1ZWQ3Yzk3N2QyYTk2ZGI2ZDQwMGNmOWZhNWQ2ZTQ4N2QxZWUzYzIyIGxlZ2FjeS10cnVuaworMjgxNjkgZjBiZDVjZDRiMTcwNmIzMzlmMGExMzdlNGFlZjI5ZTZjNjA5MGMxYiBsZWdhY3ktdHJ1bmsKKzI4MTcwIDRjYWZkOWRiYzhiNDc5MTZlOTIzNTY0MjM4YWE5MzZlYmEzMDkwOWUgbGVnYWN5LXRydW5rCisyODE3MSA1OGVhNDIwZGRjNWVlYWRlMGUyZmZiY2JhMDRiYzI0YTBmMzNmNDU3IGxlZ2FjeS10cnVuaworMjgxNzIgMjcyMjA1N2ZmZTg2MDEwOTk3NDYxMGFjNjE2YzZiNDM2MjYyYjllYSBsZWdhY3ktdHJ1bmsKKzI4MTczIGFjYjI1ODU0NWE1YzEyNTQ2YjQ1MTljMDM0NTQ0MzY5Mjk2N2FkNDMgcmVsZWFzZTIyLW1haW50CisyODE3NCAwYWZhY2Y1ZGM0MmVhYmY4YjBjMjk5ZDAxN2UyMDhhOTIzMDNlNjVlIGxlZ2FjeS10cnVuaworMjgxNzUgZDc1YmQ5ZTVjNGQ5YzNkODRkNTMxODUwMThkOGNlNGExNjg1MTUxNCBsZWdhY3ktdHJ1bmsKKzI4MTc2IDE4MjQ5ODNmZDk0YTc0NDg0OGEzMmQ0MmM5YTBhM2Y1MzNlNTFmZWUgbGVnYWN5LXRydW5rCisyODE3NyBjNjBlODk1ZDExMjViMzRkYjI4MTMzNGM4NWMxZTlkZGVkMTE2OTg5IGxlZ2FjeS10cnVuaworMjgxNzggODAxYTQ0YWIyYWFlNjcyMTg5ZGM3OGU0M2UzZTNjNjVjOWFmYjFiZiBsZWdhY3ktdHJ1bmsKKzI4MTc5IDllN2VjMmY1YTFiZDM3M2ViYjgxYmNiODJiMGUxNTYxMGJmYjRiNjMgbGVnYWN5LXRydW5rCisyODE4MCA2YzZkZjY5MjM2YjFkMjk1YTg2NmNjOWUyN2VkYmEwNjMzYjM4N2ZmIGxlZ2FjeS10cnVuaworMjgxODEgZmUzNDcyZjJmOGViNzIyZDVlZTEzODkxZjBmZjhkOWQ4OWQ3M2ZkMiBsZWdhY3ktdHJ1bmsKKzI4MTgyIDY5NmEyODQ1NjllNjRjYjhhMTBmNmQzN2Y5YTM2NzdjNWVhZGUxOTEgbGVnYWN5LXRydW5rCisyODE4MyBmMWQxOGZjZDU2ZTY5NjI4NTk5MmRkMjYxZGQyNzYyYzFiNTBkMjM0IGxlZ2FjeS10cnVuaworMjgxODQgNTNjYjcxNjM4ODQxZTZkZDg4Mzk1MjZkNzVlODI1ODlkZjUyOTI1ZSBsZWdhY3ktdHJ1bmsKKzI4MTg1IDFmZTA2NjU1YzUwYzk1OWUzZWVhZDQ4MTQzZWI2ODVlMWNiZTFlZWQgbGVnYWN5LXRydW5rCisyODE4NiBmYWUzODZkNWUzNTQ1NmU1YWIxOWUxOWQzMThmOWIxYTE1ZDZhYTRlIHJlbGVhc2UyMi1tYWludAorMjgxODcgYzIzODUzZjdlYmViOWUwNWNlYjM1OGNiZWExMWFhMDBjMWE2ZTA2ZCBsZWdhY3ktdHJ1bmsKKzI4MTg4IDAxZDZjNTE0NmZmOWFlY2EyZmYzMTA3NGNkZGVmMGViNWJlODAzNzIgbGVnYWN5LXRydW5rCisyODE4OSBjZWM0MWUzNzYxYWMzZTQzNDhjNWNmZDgzNzFkNjUyYWQ2M2ExYTMwIGxlZ2FjeS10cnVuaworMjgxOTAgNGRlOWFjMGU0MTczNjYxYmUxZjFkZTMyMTE0NjljYjBmZmUxYTM0NiBsZWdhY3ktdHJ1bmsKKzI4MTkxIGYwZDYzYWExZGZjN2U5MDlhMmQwM2FhMjZhNzA4ZGYzZTRiNjNkYmYgbGVnYWN5LXRydW5rCisyODE5MiAwZjYxZTA3NDE0N2ZiMWFhZmNhMjQ3ODM1YTc3MGQyMDBkYTY2NDEyIHJlbGVhc2UyMi1tYWludAorMjgxOTMgMWZkMzg5MDBmNTNiODYxMGVlOWYyMGZmYjM2YWE0MDFmOGM1OGQzNSBsZWdhY3ktdHJ1bmsKKzI4MTk0IGZjYmRlMjI2NTQ1Y2MzOGMyNjNiNWMzNzU0MTUwMzM2NWM0NDdmNWMgbGVnYWN5LXRydW5rCisyODE5NSA4MjU5NDhjMjFmMGRjMTM4ODVjYjgxMGViMzIxNDM2NTY1NDNiNjNiIGxlZ2FjeS10cnVuaworMjgxOTYgZGJmNGNjNTYwODk4ODNlMDc5YzcwOGUzZTY4ZDY3N2RmMmUzNjI3OSBsZWdhY3ktdHJ1bmsKKzI4MTk3IDRjNDZiM2VkYWE1ODdjMGUxZjc1MGIzOTRiOTAxMmQ5ODMzZDlkNzAgbGVnYWN5LXRydW5rCisyODE5OCAxOTUxYjJjNjYwNDQzOGIxMzJmYjE4Mzc4ZjhmMjAyZjBlODM5ZmYzIGxlZ2FjeS10cnVuaworMjgxOTkgMWM2M2QzMDgyNjU2OWVhMTc0NjViOTA1ZTE4ODY5Y2I3YjEyZDFhMCBsZWdhY3ktdHJ1bmsKKzI4MjAwIDQ1MmQ2YTkxNjE5NjI0NjNmNTY1ZWNkOTFhNGM2MjdmODVjZThjYjcgbGVnYWN5LXRydW5rCisyODIwMSBkZTcxZTZmZTY0YjA1MjU5NDlkMzI5NTk5YzJiZmRjZTY3MmUyZjQwIGxlZ2FjeS10cnVuaworMjgyMDIgNmE5ZWEwYzIyY2VhMWY5YWIxMDg5YWE4NTA5NTNkM2VlMTRiNDZjMyBsZWdhY3ktdHJ1bmsKKzI4MjAzIDQ2MWFmZGI1Y2I5ZWRmNjMwNmQzZWU4N2FlMzI3ODA2ZGQ2ZDRjMzYgbGVnYWN5LXRydW5rCisyODIwNCBkOWZmOTdjZTc1YmJlZDFlNzY3Mzk3OGExMzcwZmM3YWQxNDY2MzcxIGxlZ2FjeS10cnVuaworMjgyMDUgOTMxZmIzNzAwZDBiYTkxYjkwNWVjZDEyOGE3OGUxNzBhOTU2NzhhMCBsZWdhY3ktdHJ1bmsKKzI4MjA2IDg2MjY5NWI5MjBmZGQ4OGY4YTZiMzc3ZTAyM2I4ZDczMThmOWQ0ZjEgbGVnYWN5LXRydW5rCisyODIwNyBhNjJjZWU0ZWVkOTY2ZjFmYzJkM2Q5MmM5ZGM0ZTUxNDRjZGYwMDE2IGxlZ2FjeS10cnVuaworMjgyMDggMThjYmFkZDgwNzEyNWFlZDQyYjE4YTFlN2JiYTYwM2JjZDUzNWJlZiBsZWdhY3ktdHJ1bmsKKzI4MjA5IDMwY2ZmOWMxYmY2OTNjMDhjZWEyYTk2ZWQzZTE5MTdmNDcyMTY2ODMgbGVnYWN5LXRydW5rCisyODIxMCBmMTQ3YjU5NDQyNDQ2N2YxNDI3OTM5NDg1N2E0OGVlNTg0ZTM4MzEzIGxlZ2FjeS10cnVuaworMjgyMTEgOWIwNmY0NGJkNGEzNGQ4NzNkNmQ1YzM1NDg2NDE4ZjcyZjc5OWM3OCBsZWdhY3ktdHJ1bmsKKzI4MjEyIDY4NWNkNTJjNGM0MzhjM2ZmNTU0NzA3MDI1NzUwYWExYmNiMGU0OWEgbGVnYWN5LXRydW5rCisyODIxMyBhYjYzYWYzZWMzNDk1Y2JjN2M4OTAzYTMxYzc0YjgwYzNkNjJhMmM1IGxlZ2FjeS10cnVuaworMjgyMTQgYzc1Y2RjNDcxYjIyNDRhOGIzYTdjNWUxY2U5NGExYWEzZTVmMGI5YyBsZWdhY3ktdHJ1bmsKKzI4MjE1IDdjZTgyZTlkMDhjNzhhNTA1OTBiZjgwZmEyMjE5YWE0OTRiNjc1OTMgbGVnYWN5LXRydW5rCisyODIxNiA1ODYyM2NlOTRkNDA2YzQ5MTRkNTlkZTUwNWU3ODljYWNhOTZhNTY5IGxlZ2FjeS10cnVuaworMjgyMTcgNzRlZDQ1NzIwOGMxYTBmNTM0ODk3Y2NmODYzYTU0MzRhY2ZmMGFmZSBsZWdhY3ktdHJ1bmsKKzI4MjE4IDdiN2Q4ODIwYWUzODBmMDllNjBiYjZhY2VlMTkzZGMxZjZkMzE5NzggbGVnYWN5LXRydW5rCisyODIxOSA2NDIwYjk3ZWI1OWYxN2MxMWFiY2E0YjQ3OTdhOGMyODM3NDI0OTFkIGxlZ2FjeS10cnVuaworMjgyMjAgNTBmYWE2ODM1ZGRjNDE3OTk0MjEwMjIxOTdiODFhZTg3Njg4ZTVlZCByZWxlYXNlMjItbWFpbnQKKzI4MjIxIGM0NTY0MmUxZGNhOTNjNTM1ZjJmNTY3MGUzMjljNTFlNDNjZGM3YzEgbGVnYWN5LXRydW5rCisyODIyMiAzYWU4ZTNmZjdlM2YzNDM3Y2M2ZTkxY2I4YmIyZGVmODI0YjFlMWE5IGxlZ2FjeS10cnVuaworMjgyMjMgMzFkMjg2MDA4OWU2MDBiNmY0YjIxZDU4OTYxMjlkODNiNDU0ZWMxYyBsZWdhY3ktdHJ1bmsKKzI4MjI0IDRlNDRmYWJlMGZhMDE3YmI4NWIyNTAxYzQyMTY4MjEwZDhiM2VkZjIgbGVnYWN5LXRydW5rCisyODIyNSAwMTExMzhiNWYzODlhMjg0OGUyNWViNjIxM2NlNTdmZDM0YmU4OWRkIGxlZ2FjeS10cnVuaworMjgyMjYgYWU5YzlmOTBiNGIwMWJmYTBiMTkxMWI1OTc3ZDI1ZDZjOThjODczYSBsZWdhY3ktdHJ1bmsKKzI4MjI3IGQzZDdkZTcwM2EyMmRhYWM4ZDlkOTcyN2Q2NmY5YWVhYTI4NmQxOWIgbGVnYWN5LXRydW5rCisyODIyOCA1ODhkMTQ1YzQ0ZGQ5ZTZjOTYxN2Q5ZTcyMDM2Zjc5MzFmZjQ2MDY0IGxlZ2FjeS10cnVuaworMjgyMjkgN2M5MWQzMDNjNTYzZWJlODZhODFkOTVlYTZlNmY0Y2U4NWE4YWM5NCBsZWdhY3ktdHJ1bmsKKzI4MjMwIGMwMDFlNWExNTM2OWYzN2E3YmExMjFlMjA5N2Y2YWU4NjI4MDgyOTUgbGVnYWN5LXRydW5rCisyODIzMSBhN2RiZTRlN2Y1ZGVkY2MyZjBmYzM4NTNjMDcwZWVmNDI2M2JlOGZjIHJlbGVhc2UyMi1tYWludAorMjgyMzIgZTVhMDdjYzgxNTU5MDU4NGM1YWNhM2YxYWJmZDRiZTkyZjVmZGNmOSBsZWdhY3ktdHJ1bmsKKzI4MjMzIDRjZjUwMjcxNmQxNWQ1M2ZlZmU1Y2RhYWFiMmM4MGNlMzFjZjgwNDQgbGVnYWN5LXRydW5rCisyODIzNCAzMWVlMzJjMjNkMjljNTlmOWYzMTAzM2ZiN2UzNWI1MTE0MjNkNmRhIGxlZ2FjeS10cnVuaworMjgyMzUgOGUzZTBlMTFmMTRjYWNhMzMzNTQ3YWJlZDNmYmE0ZDM2ZTc5YmUxNCBsZWdhY3ktdHJ1bmsKKzI4MjM2IGE2MDJlNDg3OGI0ZWNkMGNhYWIzOTQ1OWM0MmRmNDlkYmNmYTlmZmUgbGVnYWN5LXRydW5rCisyODIzNyA0NTNjODhmOTYzZWMzMjYzODhlODVmMzVkNWZiMzhmMGVlYTE4YmZkIGxlZ2FjeS10cnVuaworMjgyMzggY2E1OGY1YTQ1NThiOGZhOTI4YzNkMmUwYmEzNjkxNGI3NDNmYWQxZiBsZWdhY3ktdHJ1bmsKKzI4MjM5IDY0ZjRkZDc3MGM2N2RhNjUwOWE5MjE4NDE4Zjg0Y2UyNzRmZDViY2QgbGVnYWN5LXRydW5rCisyODI0MCBlMzk5ZDBhODc1YjdlMWZmMzg5MjRjZGRkOGU0NzNiODg4MzZhNjQyIGxlZ2FjeS10cnVuaworMjgyNDEgYzAwNGIyYmNkNTQyMWM0NDQ3ZTM0NWVmOWVlNDlkZjFlZWVjOTAzYiBsZWdhY3ktdHJ1bmsKKzI4MjQyIDE5ZjI1YmNmNWEwMDJlZDFiZTdiZmVjMTk0MTMxZmQ1NWZjMzRiMDQgbGVnYWN5LXRydW5rCisyODI0MyBhZWE2OGNiMzY4NTk2MTM0Y2MyYTUxYTIzMWVlNjViYTliMTdhYTAxIGxlZ2FjeS10cnVuaworMjgyNDQgMTdlOTVjYzA2ZjY5M2IwNmM4ZGNmODEyYzFmNjRjMWQ3ZmNmMjhiYiBsZWdhY3ktdHJ1bmsKKzI4MjQ1IDJmZjQyNjhmMjVkYzczOGE5ODk2MDIwNTY2ZWVmMWIyYWI0NDcxMzIgbGVnYWN5LXRydW5rCisyODI0NiAzYWY4ZDgxZDdmODZlNDhhZjljODNkMTU5MzIxY2I2ODNlMTZiNDIwIGxlZ2FjeS10cnVuaworMjgyNDcgYzlhZjg3NTA0OGU3Mjk2YjUwZjRiNzFiN2ZhZDcyMGI1MmJjMzA2MSBsZWdhY3ktdHJ1bmsKKzI4MjQ4IDExYzFjYzk3Yjg3YTMxZjZmNjM1ZGZhNTEzZWEyODJlMjkwNzViN2QgbGVnYWN5LXRydW5rCisyODI0OSBjZjU5MjhmYWIxMDhkZTlmYmUwMjYzMmQwNzE3NmM3MTdjMmIzYWE3IGxlZ2FjeS10cnVuaworMjgyNTAgNjkzOWQ3MjE4MmU2YzQ5OTFjYzc0ZTU0Yzc0Y2U1MDM0OTczOGI1ZSBsZWdhY3ktdHJ1bmsKKzI4MjUxIDEwYTRlYzQ1NTQ5ZDBkODk0OTEwZGRhOTgxOGI5Nzg4MTkzNTQ1ZTIgbGVnYWN5LXRydW5rCisyODI1MiA4NzNmMTJmNjhlM2IxMDE0OWJjZDdmM2Q5OGQyOTVmNmZmYjk5Y2U3IGxlZ2FjeS10cnVuaworMjgyNTMgZGFjZDEwZDQ2ZTUyOTQwNWI4Y2Y4NGU5Y2RkZmUwOTAyZjQ2Y2Y5ZSBsZWdhY3ktdHJ1bmsKKzI4MjU0IDNjOWM1NmQ5N2U1NWU3MjNiNmU3M2I4M2IxN2RmYWNlNWFiMmI4ZGYgbGVnYWN5LXRydW5rCisyODI1NSA4YWI0NmRmMzE4MmU3OTQzM2NmYjI5ZTcxMDgyYTFlY2Y3YzFhZDBkIGxlZ2FjeS10cnVuaworMjgyNTYgMzRjYzk4ODkyZTg5MmU2NzM3ZWUxYjMxNDM4ODAyZTQyYzcxZTFmNSBsZWdhY3ktdHJ1bmsKKzI4MjU3IGFkMzYxZTFkNTRiYmEzZTJmNGIxMjUwM2E2ZGZkYzRhNDAxNGRmYTcgcmVsZWFzZTIyLW1haW50CisyODI1OCBlOWRkM2U5MWU2NTMxMGI3MDc4OWYwOWFmODA3NWMzYTcxNjI4ZDg3IHJlbGVhc2UyMi1tYWludAorMjgyNTkgMTM2Yjg1MzYyMmNjOTIzNDc2OTYwNzdhZTMyZDk0NzBkODlmZTE4ZiBsZWdhY3ktdHJ1bmsKKzI4MjYwIGJlZDVkNWU1MzZiYzBjZWMyYmFlYzQxYzNmN2M0ZGZkZTg1MWYxNGEgbGVnYWN5LXRydW5rCisyODI2MSA4NzQ0OGEyMjhjY2EyYmVjYjI3MmIzODU2NjkzY2Y3ZWI5YTIyM2M2IGxlZ2FjeS10cnVuaworMjgyNjIgMGVmNmMyYWQwNzZiMTMzOTBkNjliODVmMThhYWIwMzhiNmZmYjZlMyBsZWdhY3ktdHJ1bmsKKzI4MjYzIDU5MjQwNmUwYzliMDE5YjY2NDJhYzRiMDJkNmQ5OGJiOWJhM2VmOTUgbGVnYWN5LXRydW5rCisyODI2NCBmMjQ0NzY4NmVjNWViZTdmMTk5ZDdlZTA5NjBjZjhjZjdiY2Q1ZTQzIGxlZ2FjeS10cnVuaworMjgyNjUgZTQ1ZDE2MTFlODY5ZDY0MGRkNTEzN2U5MmQzOGFmYWUzMTMyOWFiOCBsZWdhY3ktdHJ1bmsKKzI4MjY2IDRlNzk1ZmU5ZjU0YjIxYjhmZTQwM2UzMWZkOWE1MGVmMmZkODNlMGMgbGVnYWN5LXRydW5rCisyODI2NyA1YjY1NmMzZTEzMmI4Njc0MWNlNmM1YTIzMzI2Y2M3YTUxMjc3MWI3IGxlZ2FjeS10cnVuaworMjgyNjggYTNlYmQxMjMzYzAwZWFiZjkwOWJlODIyMjNmZmJkNWYxOGZhOTI1ZSBsZWdhY3ktdHJ1bmsKKzI4MjY5IGU1MDE0YWM5N2JhMTg3OWE2ZTQ5NDY1OTgzNDQ2NTQ1YmViOTRiYmYgbGVnYWN5LXRydW5rCisyODI3MCBiNTRjZmE5OGI2NmI5YjM0YzYzNDcyNWI4ZmYzNTAwOWEwMjQwMGY3IGxlZ2FjeS10cnVuaworMjgyNzEgZjBkYmQ1YjQ5ZDhhMDFmNTE5N2QxMDZjNDFkZWQ4Yzk3MzQwZDQyMCBsZWdhY3ktdHJ1bmsKKzI4MjcyIDI1NWQxZDNlNjZhM2FkOWIyZDNiYjFhMTYwNmRiZjFhYWM0OWQ0ZTEgbGVnYWN5LXRydW5rCisyODI3MyAyMzA2MDAxZjZlYWEzNTBmYTA1OTcyMzFiNjhiZGU0MGM0ZDhjNDIxIGxlZ2FjeS10cnVuaworMjgyNzQgOWNhODk2NDIzMzc0MzJjZDM4YWMzYzdiNmVjNmVhZjJiYTk4NDAwNCBsZWdhY3ktdHJ1bmsKKzI4Mjc1IGRmMjMyNmE0ODk0ZGVlNzQzYWFiOTRhN2VhZjkwNTUwOTE4NDQwZWIgbGVnYWN5LXRydW5rCisyODI3NiAyNThlMGIxMzQ3YzJhZDg2OGQzYjY3ODQzOGY4N2Y5NDUzMjIxMjg5IGxlZ2FjeS10cnVuaworMjgyNzcgOWJlY2ZlZjZlMzFhNmJkNzA3ZWVlYmM3NjY3M2Y2Y2M1NDhjZmY4MiBhc3QtYnJhbmNoCisyODI3OCA0ZjEzZTU5ZmQwYTAzZjk2NTBhZjdmNmQ5ZDIzMmE5N2QyZWNhZTBjIGFzdC1icmFuY2gKKzI4Mjc5IGNmNTYxZTYxMjM3OGMxYTNhZmM5ZGQyNGVjMWRkZmVkYTg2MzYyYzQgbGVnYWN5LXRydW5rCisyODI4MCA5OWY1ZDE4YmU1ODgwMzg2ZGE2NDI3NTMwYjlkOGI3NTE1ODI3MTczIGxlZ2FjeS10cnVuaworMjgyODEgYjUxN2Q5MjkyY2U3YzBmMWYyNjMyYTIzZDljYTE3MjU4NjY0Yjc1YiBsZWdhY3ktdHJ1bmsKKzI4MjgyIDgwODliYTM5NzQ4MGU0MGNjZGJiNjU1MjU4ZTY0ZGY4MDk5ZjE2ZTQgbGVnYWN5LXRydW5rCisyODI4MyA3MjUzMzdiNjhjYTAyYjNjMWE4MDc5OWY4MzhlODFjZjQyYWVlMzU2IGxlZ2FjeS10cnVuaworMjgyODQgZmM3NDAzZTExODc4MzMwYzNhZDRmODU3ZGZhYTVlY2EzY2FjZDFkYyBsZWdhY3ktdHJ1bmsKKzI4Mjg1IGY0ODUxMDRlNGVlODUyYjRjMjkxZWM5ZGQ2NGQyM2Y5OTM1YmI4NzQgbGVnYWN5LXRydW5rCisyODI4NiAyMzliZGFiYjYzYWY5ZDcxN2ZkZDljNzJmNDg1MzljNWRlNDNiM2U1IGxlZ2FjeS10cnVuaworMjgyODcgNzEwYmViZTIxODJjYjE0NGExOTlkMmQ5ZjAxN2MzZGNkZTJiNDlkZiBsZWdhY3ktdHJ1bmsKKzI4Mjg4IGQzNTQxZDkwZDVlMDZlNWJkYjA2NDE3ZjdmNjY4NTdkMjJmMGZhZmIgcmVsZWFzZTIyLW1haW50CisyODI4OSBhYWFlNjkzMjE3NzE3MTgzOGJkZjkzNzczMDk1NWFjYjI4Y2ZiNTY5IGxlZ2FjeS10cnVuaworMjgyOTAgNWZmM2Q4YWFhOGY4YTA2YjE4MjlhMDM0M2M3Yzc2YTBjYjMyOTRmMSBsZWdhY3ktdHJ1bmsKKzI4MjkxIGM0ZTU1MDcwMmEyOWEzNDU5ZGVkMTI2ZmU0MDhjMmRjZjk2ZGI4MGQgbGVnYWN5LXRydW5rCisyODI5MiA4NzkxMTkzYjA5ZDY0MTdiZTRmZDYwZWJlMjhiMmY4YzM4YTM1MmQ0IHJlbGVhc2UyMi1tYWludAorMjgyOTMgMDJiMmYwODg1YzUyMTAyNDBkYzJmYjEzOTE0MGIyNTc2MDIwNjQxYSByZWxlYXNlMjItbWFpbnQKKzI4Mjk0IGQ3OTdjZmE4Y2EwZDA0NWQ1ZDNhYTBlMGIxOTA5ODAxZTBmMjJhMzQgbGVnYWN5LXRydW5rCisyODI5NSAyNGYxZDg0NWNkYjU3MzMxYWFmNWE0ZDcxNWU2NTU2ZjBkODU3NmY0IGxlZ2FjeS10cnVuaworMjgyOTYgNDkyYWRkYjgxMmVmMTE3ODA4MWE5ZjMyZGZkMWQ0NGM2YTVhYjUxYSBsZWdhY3ktdHJ1bmsKKzI4Mjk3IGQ3ZWYyYmExYjZmNWVmMGFjMWY1OTYyOGRmZTU1NmRhOTkzZDY2ZjQgbGVnYWN5LXRydW5rCisyODI5OCBhZWJmOGM1MmE4NDJkNDFkOTJhOGU2MzAwNGNlYjAwYWMzNWQ3OWZiIGxlZ2FjeS10cnVuaworMjgyOTkgNGU0YTM0NGM5YjZjZTdiMGM3MWNiNTI4MDBlNjA0MDhmOGYxNDhhYSBsZWdhY3ktdHJ1bmsKKzI4MzAwIDQ0ZDFkMGI2MjNhOWFmNzk0MmZmN2IxNTg2MjE1OGRmZWMxNDM4YTcgbGVnYWN5LXRydW5rCisyODMwMSA4ODYyYmM1OTY4NWFjZDYzN2Y1YWY0NjY0Y2JmNmJmYjBkZDdkOWRmIGxlZ2FjeS10cnVuaworMjgzMDIgYzhkOTU5MmM5ZTc0OTdhMjE3YTIwMjAwNDg3MTQ4ZWM0YjRkOGRhZSBsZWdhY3ktdHJ1bmsKKzI4MzAzIDI3ZjBkZWViZjI2NDhhZmE1NTdkNmE1NGQxMzY0OWViYTkyNGJhYzIgbGVnYWN5LXRydW5rCisyODMwNCA2MzEwYTRhMjFlYjg5MmNlM2ZiOGFiNzQxOTI4MTcxNGE2NWVhOTE1IGxlZ2FjeS10cnVuaworMjgzMDUgYTg2OWQyZGU1MzZmOGQzMGNjNmU3YzZmZDM1MDFmNGIyNmU5ZDc3YiBsZWdhY3ktdHJ1bmsKKzI4MzA2IDhmOGZlOTkwZTgyYzMzNGY1MGNjNmE1ZmU5ZGVlMTJjNDJiOGI2Y2UgbGVnYWN5LXRydW5rCisyODMwNyAyY2RmM2QwZGZhYmQ1MDEwYTY5YTdkYmQ2MTc4Yjc5MGZlMjZhYjdlIGxlZ2FjeS10cnVuaworMjgzMDggYmM2NjBmNzM3OTVjZDdjZTA3MDljZGM4OGE3NmFjZmFmMTM5ODA2OSBsZWdhY3ktdHJ1bmsKKzI4MzA5IGY1N2Q2ZGI0MjNmMmRiZGI0NzNiOGM1ZTc1MTlhNDk4MzkwOWMxYzIgbGVnYWN5LXRydW5rCisyODMxMCBlY2Q0YWRhMjUyYmMwOWFkOWE4NWY0ODkxZDBhY2QzOTM5NmYxZTIyIHJlbGVhc2UyMi1tYWludAorMjgzMTEgNjQxNzg2YmVhMTNlMmI1YTYxYTdmOGVhNDI5YjIwZDk2NWQ3NTQ2YiBsZWdhY3ktdHJ1bmsKKzI4MzEyIGFhYjdkZWJjNzNhODhlMjEzNWRjNzE4ZWNkNzIyN2Y3MWZmN2QwNjEgbGVnYWN5LXRydW5rCisyODMxMyAzMTE0NWQ2NjdiMTRhNWU2NjRkNzQxZWNmMzg1ZmUzODYyNzY3ZTRkIGxlZ2FjeS10cnVuaworMjgzMTQgYjNlZmJkY2NmN2M2NGMwYmQ1N2Y0NmMyYjUwNDRmYzYxMDk4OTM2MyBsZWdhY3ktdHJ1bmsKKzI4MzE1IGM2YWQ2MDNiZDI2NDVhZWM4YmU2NTA5ZjJkZjgyOGVkNmMwYjM3MDYgbGVnYWN5LXRydW5rCisyODMxNiA1YWNhZTcxOWNiOGFiYTVjNDRlYTgzNTMzYTYxOTQ0N2U5NTVmODgwIHJlbGVhc2UyMi1tYWludAorMjgzMTcgNWMzODQ1N2Y2YjNiODViNmMxYjc0MTQ4MzA0NmQ5ZDQwNjIxNmNiOCBsZWdhY3ktdHJ1bmsKKzI4MzE4IDM1ZmU1ZTNjZjg4NWY2NDZhNjllMTBjMDkyNGY3YzExYTE3MzA0NmUgbGVnYWN5LXRydW5rCisyODMxOSAwZWU0OGFlZmE0NzQ5ZTczZDkxNzNiYjk5ZTdlNjJmNjBhYjc0ODRkIGxlZ2FjeS10cnVuaworMjgzMjAgNTlhY2Q1MDI4ODA0NDdmNDBlMmRkMGQzOGJmYzQ4Yzc2N2E2ZGE4MyBsZWdhY3ktdHJ1bmsKKzI4MzIxIDY4NGFiMDY0MGUwNGZhMGZmYTg5M2M4NWRhM2MxM2I2Mjk0YjNhYjEgbGVnYWN5LXRydW5rCisyODMyMiAwMWUxZDZhYmM1MDEyMmYyOGViYzE0NTNlNThkYTgyOWI1MTg2ZGQ2IGxlZ2FjeS10cnVuaworMjgzMjMgZTNkOTZlMDBkYzZjMWMzMzM5ZjM5ZWZlMzRmNWQ2ZGEzNzM0NWM4YyBsZWdhY3ktdHJ1bmsKKzI4MzI0IDg4NjY4NmZjOTJhOTljZmQxZDMxNDA5MDRlN2ZhYjIwZDQyNzNhMDQgcmVsZWFzZTIyLW1haW50CisyODMyNSAwZDVkOGUxY2RjMjJjYTE2NzA2ZGMxY2U1MDJkMjk0ZGJlNjUxMjhiIGxlZ2FjeS10cnVuaworMjgzMjYgNGNiMjUzYzU1NmIxMGEzZDRiOWY0MWY3MzFmY2I1OTJlYmZmODc4NyBsZWdhY3ktdHJ1bmsKKzI4MzI3IDcxNDc5NzE1NmM1MTJiOTRkZWU0MmY0MWJjMDE2YzI0YWViNmY5ZDUgbGVnYWN5LXRydW5rCisyODMyOCA4ZWVmMDM4NTBmNTc3NjdmYWM3MDA0MWQ1ZGQ4Mzc2OTFlOGU3ZTU3IGxlZ2FjeS10cnVuaworMjgzMjkgNWZjNDYwOTgxNTg5MjA1NzVjZGE2Yjc0OTY2NmQwNzY2OGVlMWUxOCBsZWdhY3ktdHJ1bmsKKzI4MzMwIDUxYzI2OTk0ZDhlYzY5YTczMDc5ODkyMzBmMzc1OTI2ODZkMDAyMjMgbGVnYWN5LXRydW5rCisyODMzMSBhMTE0MzIyNGVlMGQwZjc2OTRhOTQ2OGFhMTU2YjFkYzYxYTUwYWJlIGxlZ2FjeS10cnVuaworMjgzMzIgOTQwNjA1ZDQxNTVmZGM2NzkzYzEwNDQzZWU4NDk0OGRhZTFkZWRmMiBsZWdhY3ktdHJ1bmsKKzI4MzMzIGQyZWIwMDc0NDhhM2U2NThhZDY3MjQwYTRmZGY2OTkzYzI1YjYxOTYgcmVsZWFzZTIyLW1haW50CisyODMzNCBjNGE0Yjc0MmFkNmM2NWRiM2UxN2UzYzZmY2MwMGE4N2IyZjMzMzQyIGxlZ2FjeS10cnVuaworMjgzMzUgMGRkNWJjYzFlZTBiZDNlOTk4OGYxZjdmNjI5YjY0ZTQ1YjAwZTBkMiBsZWdhY3ktdHJ1bmsKKzI4MzM2IDQxOWQ0N2M3NzE0MzQyOGVmZDZlYzA1NWI2ZjlkMDhhMzAzMWZlNGEgbGVnYWN5LXRydW5rCisyODMzNyBlOGY3NzMwN2Q5YzZhMjhkMDE3ZjdmNTE1ZmMzNzgwZTE2NzQ1MGU5IGxlZ2FjeS10cnVuaworMjgzMzggYzBlOTgwYWI1NGRiM2JkOTUwYTYzZDI1ZWYxMTE5NWQ3ZDAxNzAzNyBsZWdhY3ktdHJ1bmsKKzI4MzM5IDYxN2JkNTViNGE2ZWRiYzI0ZjRjZTVlN2ViMjM3ODkzZDQwY2QzZmQgbGVnYWN5LXRydW5rCisyODM0MCA5ZWU0ZjRjYjk3NzA2OTk4MWE0MWI0OWU1OTgxM2NiNmI3NWUzMjg4IGxlZ2FjeS10cnVuaworMjgzNDEgNjA2MGNmNjY4MmMwMjU2OTgzNDJiOTU0NjM3ZjU1MWY3NWE2YjlhYiBsZWdhY3ktdHJ1bmsKKzI4MzQyIDY0NTA4YTM3YThkNWI1MGM4MWMxZTE4ZThiZTM1OGJkN2MxYjY1MDUgbGVnYWN5LXRydW5rCisyODM0MyAyOTRmN2JlMjYxOWE2MDMxZWQ5Y2YzNzhhNmEwYWM1ZDU1ZjRlZWY0IHJlbGVhc2UyMi1tYWludAorMjgzNDQgMjE5ZTcwMzg5MDcyNjc5OTdjZGE3MzkxOTc3YmQwMmZlZDA1NGM5ZCBsZWdhY3ktdHJ1bmsKKzI4MzQ1IGU5NTAwNzA5ZDQ5Yzk4YTg2ZDA1YzJmNmZkM2NmNWJhM2M3MDc0YWIgbGVnYWN5LXRydW5rCisyODM0NiAyYjY2YWRkZTAyMzA2NjkyNDI2YTNjNDdkNGQwNmI5MDhjZTlkY2I1IGxlZ2FjeS10cnVuaworMjgzNDcgYmI2YTcxZDNmZGNiNzU1Zjg3NDdiYzE0MWVjZTg5NDg0NjQ5Y2VlMyByZWxlYXNlMjItbWFpbnQKKzI4MzQ4IDY3MDQ4NDU0YWExZTc0Njc5MzlkNzJjYzA4NjVhODljMzA1YmE2MzIgbGVnYWN5LXRydW5rCisyODM0OSBkMTM1NTFjZDY2M2U1NzcyZThlMzI5YmNhOWY5NDg4YjQxOWIzMjY5IGxlZ2FjeS10cnVuaworMjgzNTAgNTMwNjQwODY1N2ZjNjY0YWFjMDI5OWVlZWE1MDFkOTNjODQxMWJlMCBsZWdhY3ktdHJ1bmsKKzI4MzUxIDU0YjYwMWQzYjJhNmRkOTFmMjY1ZTQ2M2MyMmViZjM2N2YxMjJlODQgbGVnYWN5LXRydW5rCisyODM1MiA3NDE3YTZkYzczNjY2MmQzYTFiYWQ3YTkxMTVhZjVlNDM4YzIyNDg5IGxlZ2FjeS10cnVuaworMjgzNTMgMGMyMDE1NDhkM2Q0ZmU1Mzk1YzI2MmEwNWUxODgzMzM2MjRmNzljMyBsZWdhY3ktdHJ1bmsKKzI4MzU0IDU0NGEzMjZiYWY3ZjI5ZjEyNjNiMGNlNTMwMWZkY2ZkMTAxOWFmZjkgbGVnYWN5LXRydW5rCisyODM1NSA4YWRjYTVmOWJmZmQ4NmZlYzYzMmY0ZWViOTg5ZjllMjA0MjFkMDRkIGxlZ2FjeS10cnVuaworMjgzNTYgOWYyNmUwYzBjNjkyNzEwNGJjZmI2MmQwYjAzMzgxOWJkMzQyZmM2YiBsZWdhY3ktdHJ1bmsKKzI4MzU3IDEzMzg4Y2FmYzE2ZTk2MzNiM2YxZDUyMzBiMDA2ZTEzMzBkNTM5OTQgbGVnYWN5LXRydW5rCisyODM1OCAxYmNhZmJjNjljOTY3Mjc1ZGQ3YzQ3MGFlNWM2ZDk4ODJmOGI4NTJjIGxlZ2FjeS10cnVuaworMjgzNTkgNmExOGI0ZTgzOGVhZjNmOWM3NTMyMjkyM2UwYjcxMWFkMmVhNDc0ZiBsZWdhY3ktdHJ1bmsKKzI4MzYwIDMzMGY2ZTQyMjc0ZjgzODdjMDhkNTcyNGI3OGYyZWIyMjEyOGQwYWUgbGVnYWN5LXRydW5rCisyODM2MSAwNWRhOTViY2Q3MjRkZmY3ZTc4ZTQ3ZTQ3MzgxMTQzNjg1N2M4ZTQyIGxlZ2FjeS10cnVuaworMjgzNjIgYzU1ZThkNmMwOTFmMDMzY2Y3ZWViNjM2ZGU0MzdiNThkY2UyMWYxYiBsZWdhY3ktdHJ1bmsKKzI4MzYzIDYyODEwYmViOWFmNDc3NzMwYmNmMDdmZGM3ODZlYzY2NGEyMDY2ZjAgbGVnYWN5LXRydW5rCisyODM2NCBkYzY2ZWI0Y2QxN2FjMmEwMDBmZjE5MDYwZThhMzg0NDFhOTJhNjljIGxlZ2FjeS10cnVuaworMjgzNjUgNmU3OGE1NGJhYzNjODQwNDFiYWZlM2MwMDMwM2Y1NDVkOGVmMDg5ZiBsZWdhY3ktdHJ1bmsKKzI4MzY2IDhiNmJmNWJjNTEyMjZiNzIyOGZhMzE2YzY3N2Y4ZDUwYmQyMmZjYTEgbGVnYWN5LXRydW5rCisyODM2NyBiOTMzZDE5YWU4NTEyY2JhMDFlNzI2NGNhNDVkMWVhMDAwMTgxMzY3IGxlZ2FjeS10cnVuaworMjgzNjggMDQzZWJhNTE4YzY4OWNiZGRiMzcxZTViNzBmZmU5OTA0YzVkOTIwNSBsZWdhY3ktdHJ1bmsKKzI4MzY5IGMxZjY4MmJlZWJlYTFjZjFlMWU4ZWFlNzI3OTk3MjNjZDNjZmNjMzMgbGVnYWN5LXRydW5rCisyODM3MCA3M2ZiY2YyMWIyYzBmYmFjYzlmNzJkNDQ3ODk2ZGQwOTM0YTNhNDQ5IGxlZ2FjeS10cnVuaworMjgzNzEgZDkwYTZhZGQ3Y2EzOTgyODdjMGY5NDY4ZmE4OGRhZGE2N2UzZjExYiBsZWdhY3ktdHJ1bmsKKzI4MzcyIDFiNGVmOWNkMTg5NzQyYmM4MGFlYmFmYmU1ZjRkZGRkNjQzMjA2ODkgbGVnYWN5LXRydW5rCisyODM3MyBjNDViMjg2NTg4MDVmYTY2OTRlMzkzNjUyZWIwMTkyOTM1OGIyYWUzIGxlZ2FjeS10cnVuaworMjgzNzQgODBmNjVjNjNlODYwYzI2ZGQ1YjI3MzJhODYzNTcyYTFhNjRmOGM0MCBsZWdhY3ktdHJ1bmsKKzI4Mzc1IDk1MTg2NTkxY2JjZmVlZTE0NjcwNmVmZjA4ZTNjNTczODdjMmJkYjcgbGVnYWN5LXRydW5rCisyODM3NiA4MTY3OWViZWMwN2Q3MTliYTZjY2E1OWUyZDViNzY4MDYyNWY0YTYzIGxlZ2FjeS10cnVuaworMjgzNzcgZjY1ODEyOTliYzAzYjUxOGJhN2RjYzE1MTk4Zjg3NjdhNzk2OWRjMSBsZWdhY3ktdHJ1bmsKKzI4Mzc4IDQyNjM2MzhhNDY5ZjhkYjg2N2RiMDk4Y2EzMGNmZmJhYzcyYTAyM2IgbGVnYWN5LXRydW5rCisyODM3OSA4ZWExMTdlYmIyZjM0OWRlNWU4ZTNkNDQxOWY3OGFhOGU0MTdmZmFhIGxlZ2FjeS10cnVuaworMjgzODAgNjY4ZWVhZDEzYTdjNTdlZTY1ZGI2MGZmMThjZTkzNzU0ODQ4YjZiZCBsZWdhY3ktdHJ1bmsKKzI4MzgxIDcxOTAzNDhkNDY2ZGZmNWQ2NjA1NmNhYTIyNzNhMjg5MDY0MGYxYmQgbGVnYWN5LXRydW5rCisyODM4MiA3YmViMTY5MjNiNzFiYjcwZmU5NWFmMzZhNjU4ZTY5ODZmOTI4ZGRjIGxlZ2FjeS10cnVuaworMjgzODMgMDYzZjIwMzE2NjBjM2UyNThmMzY4ODBmNWQwOGQ0MzE4OWIzMjc3YSBsZWdhY3ktdHJ1bmsKKzI4Mzg0IDI1ZjY5NTRmZWYzNDIzZDA3YjhmM2FmOGU3NzU4NWQ3Mzg2NmUyNGQgbGVnYWN5LXRydW5rCisyODM4NSBiMWFiNGU4ZDdkOWM1YTBiMjg5ZjNkNDM2OGM4OWMyYjQ0YzdjZGJlIGxlZ2FjeS10cnVuaworMjgzODYgODBhYzg2MTk0YTEyYmI5NGFkNjIxZTdjMjFlMzZkNWVmNjllOWJmMSBsZWdhY3ktdHJ1bmsKKzI4Mzg3IDllMTFiYjgzZDk1M2JhM2FiNjFlM2I5NjNlNTQ3YzU3Y2VkZjE1NTYgbGVnYWN5LXRydW5rCisyODM4OCBlZTk5ZDIyMjU3MGE5NDYwMGRmMDcwMDM4ZWY3M2Q0NGZjZmE4ZWQ2IHJlbGVhc2UyMi1tYWludAorMjgzODkgMjJiNzBjMzk4M2I1MzhjYWU1NzRhYzhjZDdiZjk0MTA5ODgyMTM1MSBsZWdhY3ktdHJ1bmsKKzI4MzkwIDRiYjc3NmEwMmU2ZTg0ZjhhN2EwODJjNWMyMGU5NjQwNjFlOWE5NTEgcmVsZWFzZTIyLW1haW50CisyODM5MSA4MGQwMzVjNDUxNDkzZGRlYzc0ZmNiMGIyNDRlNDliNGViYjE3MzRmIHJlbGVhc2UyMi1tYWludAorMjgzOTIgMTQ2MWI5NDYwNmM1NDE0ZWIyOWIxNjU3YWNhNzdkMWQzNGQ4MmJkNyByZWxlYXNlMjItbWFpbnQKKzI4MzkzIDAwZjExZWVkZDYwMzM0NWNiYTk5MjNhMzZkYmFmMDU2NTM0NTE2Y2QgcmVsZWFzZTIyLW1haW50CisyODM5NCA5MTMwZWE2NjkzZGE3ZWU5OWEzYzRlM2I3ZDUzYmQwNWVjN2FjMWM5IHJlbGVhc2UyMi1tYWludAorMjgzOTUgMGQ2NjE3YTljYjYxMGQyNzIyYWEyNTIzNzBkNTEzMmEzZWYzNGM0MCByZWxlYXNlMjItbWFpbnQKKzI4Mzk2IGY0YmIwZmYzMTBkMzQ4OWMyM2Y3NDg2NDIwNTNlM2RlZDZjYmYzOTkgcmVsZWFzZTIyLW1haW50CisyODM5NyBiYzgxZWUyMDYyOGYzY2M5ZDUwMTBjZDQxODk3OGY1YWUyZGQ2YTRiIHJlbGVhc2UyMi1tYWludAorMjgzOTggNjQ2MWFjZGViNThjOTA4MmFmZWU4ZTU2NGYwYmNlYWJjZGVlNjEwNCByZWxlYXNlMjItbWFpbnQKKzI4Mzk5IGM1NDE3ZjBlZTVmMDgwMmIxODczODliNzE4YjEyZDMxYjk0NTU0NzEgcmVsZWFzZTIyLW1haW50CisyODQwMCBmZDA2NmQxOTRjZmY0MWMyYmJmN2E0YTVhM2E3ZmRlZDU2YzQ1Y2RjIHJlbGVhc2UyMi1tYWludAorMjg0MDEgNWU0ZWFkZjE5MDNhMDI4ZTY1NWFiNTgyOWZmNTEwMGU5MDJlNTg2YiByZWxlYXNlMjItbWFpbnQKKzI4NDAyIDg2YWEyYzJkYTQwZTRiNTJjYzZkZWUxMDNmNTMzN2M2ZTY2YmY3YjEgcmVsZWFzZTIyLW1haW50CisyODQwMyBjNTEyYTk0MzNlYWYzYjNmMTYwYmJhNjkwNWRjNTU1MzVhZTczODQxIHJlbGVhc2UyMi1tYWludAorMjg0MDQgYTBkYzZmNTA0OTcyODVhMTQ2YjEyMGY5M2ExZTU4ZGM0NjU1ZjgzZSByZWxlYXNlMjItbWFpbnQKKzI4NDA1IGFjNDY4ZTIwYjRjZWQ4YmNhMDZlYTRiOGViMDU5ZTVjZTQ2ZDQ5OGMgbGVnYWN5LXRydW5rCisyODQwNiAzYTc0OTk0MzFkY2NmM2NmZmQxZmY0OGRjMjdmMzJiY2I5MDBmMmJlIGxlZ2FjeS10cnVuaworMjg0MDcgZjk1YzBiODk0ZjI3NjZlOTJkZTgxNWY5NDhlODE5YTlhYThiYjYwZCBsZWdhY3ktdHJ1bmsKKzI4NDA4IDJjY2NmODI0MjAwOWJhYzU1OThiMjYyYjM5M2NkMTFhNmE0YTU5ZDYgYXN0LWJyYW5jaAorMjg0MDkgZmNiNTIwMWM2OWVkODY3NTJhNTg0NjYzYTQ1NmEzYTUzZGEwNTkxNSBsZWdhY3ktdHJ1bmsKKzI4NDEwIDQ4MTM4MzczNzA5YjQ3MDA0MDQzYzQzOTBiMGFmMDQyYTQwOGFmZGQgYXN0LWJyYW5jaAorMjg0MTEgYmJhZWJlNmI3YzFhZGZlYmU3ZGE1OWM1YmFlYWYzMDI3MjYwZDYxMSBhc3QtYnJhbmNoCisyODQxMiAwYjcyNjQ5NmNmNDRmMTdhZGZlM2I3Y2JmYTQ2Mjc2ZTRjY2U0MTM3IGxlZ2FjeS10cnVuaworMjg0MTMgNTliN2Y0ZTlmZDYxNDcwZGJkZGFkMGE2ZTUwNWFlNzA4YTUwNDQ5MCBhc3QtYnJhbmNoCisyODQxNCBjNzQ0MTQ0YzQwNDlkZjY3MzdhZGRlN2JiMGQ2MDk2Y2ViOGUwNTJhIGxlZ2FjeS10cnVuaworMjg0MTUgOTRhZGY2OTk2MThmZWQ1YWQ0N2M3MDIwMTk4Yzc4OGQwYmNiOGRhMiBhc3QtYnJhbmNoCisyODQxNiA4ZmRiMDg3N2QzNTIzODM4NzBhYjA5YjQ5YTkwNzBmOTA4NjE2ZTYwIGFzdC1icmFuY2gKKzI4NDE3IDc2MmRkMDllZGI4MzQyZmIwNDg0MzlmYWI2ZWE4MWQ2MmMxMzFkNjQgbGVnYWN5LXRydW5rCisyODQxOCBiNDM5ODZmNzNmYzlmOGEyOGFkOWRmNjcwMzMwNzhkZDA3ZTYxNzJjIGFzdC1icmFuY2gKKzI4NDE5IGY4MjQ3NWQ3ODQxNTI1Yzg2ZjU4ZWJkODJhYTUwNDQyNDE2MmZmZmUgYXN0LWJyYW5jaAorMjg0MjAgMTJiYjZmMGM2MGY4YzYzOGMxMmNiZGI4YTRmNDY5MmY0YjcxZWUxNCBsZWdhY3ktdHJ1bmsKKzI4NDIxIDA4NTdhYWRjNjEyYTMzNThlYTI0Y2IxNDRjYmJlNGZiZjA0ZjA2YzUgbGVnYWN5LXRydW5rCisyODQyMiBiNWI3MGU0MTBmMTI0ZjhlYjk1OTM2ZWM3MzE2NDc1MDY4ZWMyMTYxIGxlZ2FjeS10cnVuaworMjg0MjMgYWNlY2RjNGY3MzMzNjNjNGU3ZTE0NTJhYmRlZDY5Mzc3MTNhNWJhNCBsZWdhY3ktdHJ1bmsKKzI4NDI0IGM2ODMxMWVmZDM0NmVkOWY0MDY3Nzg5MjMzNDY0YTAxZDVhMjI5ZDYgcmVsZWFzZTIyLW1haW50CisyODQyNSBkNDIxYmJjOTk2MWM4Y2ZlMGFhMjY1OWIyMGM4MGM2ODc0ZTE5YWY4IGFzdC1icmFuY2gKKzI4NDI2IDM1NzQ5ZGIxMDgwOTMwNTYxMDA1MGZiZjYxYjVkODU1Y2QyYjRlMWQgbGVnYWN5LXRydW5rCisyODQyNyBmMzZlMTZjYThmNTA1ODBmNTI4NWVkODNlMzIxMmYwNjBlZDFjNTYxIGxlZ2FjeS10cnVuaworMjg0MjggZjJkNzU3NDllNjFjNWUzMjI0OTJhMWUyOGNmZGNkYzA3OWQzMDMxOCBsZWdhY3ktdHJ1bmsKKzI4NDI5IDY4NjI3ZTBhY2QxNWJhYjg1YmFlZmIzZGEyYWRhOWVkYjZiYWUzOGEgbGVnYWN5LXRydW5rCisyODQzMCBmZWViMGIwMmI4ZjI1MjllNWU0MGM5N2FhM2ZkYzU2OGU5YTg3ZWI4IGxlZ2FjeS10cnVuaworMjg0MzEgMjRlODBkOTZiZDBiNmU5MjZhYjk4NTE0YTA0NDRlZjY4ZWI1N2Y1NSBsZWdhY3ktdHJ1bmsKKzI4NDMyIDBlYmVjODNlYjNkZGZjMWM1YjVhMmFmZDEyZGU3NjJhZGUzYWFiMzQgbGVnYWN5LXRydW5rCisyODQzMyBhYTQ1MDM1NTYzMzllZGNlMDM3NDkzMmFiYjI1ZDlhNDRhN2U4OWIyIGxlZ2FjeS10cnVuaworMjg0MzQgODFiZTYxMDU2NzE3Zjg4MTM2MDYyZmI3Mjg4OWY3Njc4YjUxMmZhOCBsZWdhY3ktdHJ1bmsKKzI4NDM1IGJiMjhiYmMyOGMzMjNhYjI5ZDUwNjU1ZTI2Nzg4ODkwYzQ2YzZjNzYgbGVnYWN5LXRydW5rCisyODQzNiBlNDEwNTg4NDViNzkyZWQ2NjI3ZTk4NGYwY2NiMTJkNGMwMWQyNmY2IGxlZ2FjeS10cnVuaworMjg0MzcgOTBiMTNkOTk5ODI3MTBmZjZjMzllMDkyYmVjYTY3YTczOTFkMzJkZSBsZWdhY3ktdHJ1bmsKKzI4NDM4IDgxYWNiZTE2ODBhMzMwOGJiODE4YWUwNjMyZjc3ZjkxNWMxYjBjNTAgcmVsZWFzZTIyLW1haW50CisyODQzOSBhNmRlNTBjMGQ0NTdlYjYxY2ZlYjU5OTJkNzUxMWMwY2M4MWQ3M2ZkIGxlZ2FjeS10cnVuaworMjg0NDAgMDQ5MDk2ZWZhMmMzY2E4NzZiMTljMzdiMjQ2OGQ3Mzg0NWZkOTYwYSBsZWdhY3ktdHJ1bmsKKzI4NDQxIDhmYTc1M2E5NzA3N2JhMDlhZDVjNDIxYzAwNzA3Y2FkYzA5MDM2ZjcgbGVnYWN5LXRydW5rCisyODQ0MiAyYzJiODRiZGExNDFiN2E0YzhjNTkzMWVhZjdhMGY2YTJiMjcyYmQ1IGxlZ2FjeS10cnVuaworMjg0NDMgMzQ4NDMwOTU3M2YyMWM4MzljNzc1MzkyYjVjYmVkZWMxMTIzZjE4MCBsZWdhY3ktdHJ1bmsKKzI4NDQ0IGFkMjg5ZmJiNmI0OGQ3MmI3ODM4ZTgzZmUwZjMwYjdmODdmMzZmYTkgbGVnYWN5LXRydW5rCisyODQ0NSBhZmYwNjdiYThkMDc4OGYwYTkzN2U5YmUzZGVmNjI1MGI3MzhhNTg3IGxlZ2FjeS10cnVuaworMjg0NDYgOGM2MWM5MjAyNWI2Yzc3YjgzZTkyYmM3ODkzMDc0YjA0N2MxZGM2NCBsZWdhY3ktdHJ1bmsKKzI4NDQ3IDQwZTljZmRlMWM1MDg4MGExZjE4ZTBhNGJlZTEzMTNjZGY0OTE4N2UgbGVnYWN5LXRydW5rCisyODQ0OCA3ZmIzNzU5ZDM4NjZkNTA4NGU0YTIyMjU5MmYwZGM3Njc5NWU4NDhiIGxlZ2FjeS10cnVuaworMjg0NDkgOGM4MDUyMzc4MDE3Y2I0NTNiMGYyMzE1NTBlZDczYWU1NzYwNTI5OCBsZWdhY3ktdHJ1bmsKKzI4NDUwIDRlOTk2ZTk1OWVjMTg3YzcxMzc4MTc3NzdlNzFjMTA0ZWQwMWQyODcgbGVnYWN5LXRydW5rCisyODQ1MSBkNWViZDYxNmEzZTZmNGJjZDU4MDkzYmM1NWMzOGEzNjU5NmMxMTgzIGxlZ2FjeS10cnVuaworMjg0NTIgMGUwMWI4NWFkZDgxMjZlNmFjNzM3ODU3Y2U5OWViNmYwM2IxZGIzMyBsZWdhY3ktdHJ1bmsKKzI4NDUzIDdkM2Y4MzA2YTAxZWQ1YWU1NDNlYjg0OGFmYzU5ZmRmODRkYjcwYzYgbGVnYWN5LXRydW5rCisyODQ1NCAwYjk3OTJjYmU5MDA0MmIxNzcwMWVkMzI0MzkzYzE2ZTY2N2QzOGFmIGxlZ2FjeS10cnVuaworMjg0NTUgMzY0N2IzMGFhOWRlMDlhYzU2YjJkYjcyZjc0YTE2ZTRlZTI2NDk4MyBsZWdhY3ktdHJ1bmsKKzI4NDU2IGRiNDllZTc2YjdkMGUzZjc2ZGNmMDViYTJiMzI0YzgzOTEwNzAzZWMgbGVnYWN5LXRydW5rCisyODQ1NyBlZDBiMDI2NzJmMDkwNWRkMGE5YTNmYTYwZjJmYjA1YjhmMjAxYWIwIGxlZ2FjeS10cnVuaworMjg0NTggMTE4OWY3N2NkZjg0NWQyY2U3OWU5Y2VkMDJmODZlMjEwNzAzMmZjNCBsZWdhY3ktdHJ1bmsKKzI4NDU5IDhjZjIwNTg5MmY2NjI4OTYwNmNjMjZhMzg4YjUzZWNkMzM0NTFhYmMgcmVsZWFzZTIxLW1haW50CisyODQ2MCBiZDJhYTAyNDdhZGFhZDhjNDZhOTdkOTc0NzI0NDBjOTllZjY3NjVlIHJlbGVhc2UyMi1tYWludAorMjg0NjEgNzZjZjg4ZTg5Mzc2ZGMyNTRhZDdmZjYxMjBlNmY4MzFjMDk0NmNlMyBsZWdhY3ktdHJ1bmsKKzI4NDYyIDQzNGJjMWRlYTRmOGJhN2U3N2Q2NTg2YjMzZWQ0ZWY3YmQxMWYwM2MgbGVnYWN5LXRydW5rCisyODQ2MyBlYzM3MzY5NmMxN2JjMzc4NjI2NWM5NzIxYzdmOTlmZTFlNjRiZTc3IHJlbGVhc2UyMS1tYWludAorMjg0NjQgZDA0MTNkZTE0M2VjMjQ1YWIwZTEyNWZjZTNkMzMwODVmMTM4NGI5OSByZWxlYXNlMjEtbWFpbnQKKzI4NDY1IGQ4M2MxNGFlNjQ3ZGQwMzEwYzFhYTBmZTA1ZjBmZWM0NmQzYjVlYTIgbGVnYWN5LXRydW5rCisyODQ2NiA0MDI5ZDY3Y2RiZDVmZGJkNDIyNWZkNzdiODg0N2UwYjAzODNkZDUxIGxlZ2FjeS10cnVuaworMjg0NjcgY2JlZTJlZDZjZDc1NWE3NzI3YjNiOGVhMDI2Yzg2Y2FkYTUzNDQ2NCBsZWdhY3ktdHJ1bmsKKzI4NDY4IGE3YTYwYjE0MWQxZGE2ODM4ZGM5ZTFlMWMzMzQ5OTk5NWU2Yjc1MzEgcmVsZWFzZTIyLW1haW50CisyODQ2OSA2M2NhMTJhYmEwNzkzNGE1OWE1ZjQ1YzczN2VlNmY3ZjhjYjZkZGFlIGxlZ2FjeS10cnVuaworMjg0NzAgOGU4ZDNlNGFmNGY0Njg5NGI3ODJjOWE3ZDIwOTczYjEyZTIyZjZjYyByZWxlYXNlMjItbWFpbnQKKzI4NDcxIDFhYTA4MTVmYWQ0YjExNjcxYzU4MTM1MjQ5YTlmOWVmY2QwNDFmYjQgbGVnYWN5LXRydW5rCisyODQ3MiBlMGI4NTVhYWQyMzAyMDkyZTMzNmRhZDAxNjdiMGUzZjMxYThhNTE2IGxlZ2FjeS10cnVuaworMjg0NzMgZTIwNDJjNzZhZjA2NTYwY2NhMmJlNmE0MzFkYTk1ZDhlYjZiYTM5OSBsZWdhY3ktdHJ1bmsKKzI4NDc0IGI4MDY3ZGRjMTFmODdhOTdkNDVmM2ZlNzI3NTliM2FlMWNiYzM0ZTMgbGVnYWN5LXRydW5rCisyODQ3NSBhZDNiZTQ3MWIzOTkyMTkzMzA2ODVkNDFmYjliMmY1ZGY4MjEyYmZlIGxlZ2FjeS10cnVuaworMjg0NzYgMGQ0OTI5MDI4OTRhNTU4ODcwZTc1M2M0NmVhYzQ5MDgyZDVjMzlhMSBsZWdhY3ktdHJ1bmsKKzI4NDc3IDdjNzZjMGZjMmU5MmEwOTdiZjhlOTAwNTgzYjFkNWEyNGUwYTVlNjQgbGVnYWN5LXRydW5rCisyODQ3OCAxMDBmMTU0OTgyYzhiYmUwOWNhNTE4YWQwZjkzZGNkNGI0OWY4YzZjIGxlZ2FjeS10cnVuaworMjg0NzkgN2RjN2FiNWRiOTA5OWU4NDY0OWI0YzM1NGIxZDRkMTE4MDE2OWYyMCBsZWdhY3ktdHJ1bmsKKzI4NDgwIDgxYTM2ZDJhMmQxMzdkMTIwOWI1NDE4MjNmZWRlNGQzN2FhODIzMjAgbGVnYWN5LXRydW5rCisyODQ4MSA1YTg4ZjE3NGI2ODRjYmJmODBjMWM3YjcxNjRlZDgwMjMwOGMzOGVjIGxlZ2FjeS10cnVuaworMjg0ODIgYWIxNzZlMTY0ZWFiNjk0OGIyNzkyNWU0ZjIxYWRlNmYyZDBhYzJmOCBsZWdhY3ktdHJ1bmsKKzI4NDgzIDQ2YjA1MDQ1NTUzMzY4M2JkOGRkMjI3MDZlZmMxNmM3MDAyODUyZTQgbGVnYWN5LXRydW5rCisyODQ4NCAwM2VhZGM1N2Q0Mjk5YzQxNGExZGU5OTEyZDYzYTkyNjcyODdiM2I1IGxlZ2FjeS10cnVuaworMjg0ODUgODIzMWY4NmM4NjI4YTQ2MzljMTkwMTQwY2E3OWZmNDkwOWNlNWExMiBsZWdhY3ktdHJ1bmsKKzI4NDg2IDI3NGZhMGIzNGNhN2U2YjNkNDRhMTE1ZGQ3MjY4YWEyMTUxNGRhMTAgbGVnYWN5LXRydW5rCisyODQ4NyAwNWIxNWNlMjhlMzFmYTRmOTRhODUyOTQ4YzQwZDNjODIxNDVlMGNiIGxlZ2FjeS10cnVuaworMjg0ODggNWZiNmY1YmI3Njk4ZmI4Zjk5MTFlMmY5OGYwZjIwMjBlNmQ0NzYyNiByZWxlYXNlMjEtbWFpbnQKKzI4NDg5IGVmYzEyOGEzMzRhNTVmMjc0YTNiZDFjMzFjOTYyM2YyMTI3MmVlYzAgbGVnYWN5LXRydW5rCisyODQ5MCA4MjVmYzg1NTIzMjU3ZDllOTBjNjcyMjhhOWNjODAzYzNiNWU0NTc4IGxlZ2FjeS10cnVuaworMjg0OTEgMzFhNzc0YTZmNjA0YjU3MGY5MTcxNmU1NThlN2RhZjRhNDFkMzI0NCBsZWdhY3ktdHJ1bmsKKzI4NDkyIDZhMjIxODM0ZWQ3ZGY0MmU4MGMyMDFhMTE0MjYwNzdkZDRlNjI5MDAgbGVnYWN5LXRydW5rCisyODQ5MyBhNTRjNWNmYTNmOGZiMjE0Y2QzNWY0MWI5YTFmOGNjNDczZTUyNmQ2IGxlZ2FjeS10cnVuaworMjg0OTQgYmUyODY4YTYzZWQ1M2QxZjI0ZTRjMDcxZjQ4OTA2ZTVhMTM5MjhjMiBsZWdhY3ktdHJ1bmsKKzI4NDk1IDAwNGRlMWFjMjNjNDQyMzNkOWFiNDIwMWZlYWMzYTYxODFlYWYzNTQgbGVnYWN5LXRydW5rCisyODQ5NiA0YWVhY2Y5Zjk4NThlNDVmZDAyMDA0MTRiZTgzMjAxZDE2NjAwMzk2IGFzdC1icmFuY2gKKzI4NDk3IDI2YzUwZjMyMjYyMjAwMjI4MGJkZjMyYzhlYTc5OWJkMmE3NjZkYjkgYXN0LWJyYW5jaAorMjg0OTggMDJlMGU2ZDM4MTNlOWViMzQyZjVkMzZhODRmNDJjNjAxOTIwNDljMCBhc3QtYnJhbmNoCisyODQ5OSA4ZTQ3MzYxYzRiNWIwMzk0OWJlOTI3MWZjMTRlNmY1NDQ1YjdjOTAxIGFzdC1icmFuY2gKKzI4NTAwIDEzZTkwZTNjNGM5OTMxYmZmNWIwNTdiODBhN2I5ZmE3YjJjYmIwYjYgYXN0LWJyYW5jaAorMjg1MDEgYzU1NjkwNjQ3OTYxMzAxMjkzNjk0MmM5NzJiMzMyNGNhNjRkMGMzNSBhc3QtYnJhbmNoCisyODUwMiA4OTQyMTUwNWRiNTkwMzI5M2RiZWEwYWVhMDIyNWUzYjNkOGIxOTY4IGFzdC1icmFuY2gKKzI4NTAzIDBjNTQ0ODhhNzQ4MjE5ZmZkYThiZTZmZjhjODU0NmQ1ZjNmNjJmZGIgYXN0LWJyYW5jaAorMjg1MDQgZWQyYThjNTQ4YzQ0NGQ4YjlmOTVjYmQzNjVlMDE1NGM0NDZiYWM5OSBhc3QtYnJhbmNoCisyODUwNSA1YTEwMTZiMmM0NDBjZGMxYTQyZTg0MmU4YWIzYmQ2ZjQ0ZTVhMDU1IGFzdC1icmFuY2gKKzI4NTA2IDVhNDFhNzBiYzVkMTdjZTE0M2VmNjliMTFiZGMxYzQ4MTA2YWE2MDIgYXN0LWJyYW5jaAorMjg1MDcgMmJlOTY5ZDI5NTEwYmE5YzRjYWZiZWRmZWQyYzAzOGE0NjQ5MWIwOSBsZWdhY3ktdHJ1bmsKKzI4NTA4IDlhMmRlMzllOGRhNzVmYmJmZWVlNGIyNjBkZDRhN2Y3YTQzMzIwMjQgbGVnYWN5LXRydW5rCisyODUwOSA3MDYwM2Y0ODQwMjk0NmEyMzg3ZTBlMzVjMzg4MjEyOTlmZmI4NzkxIGxlZ2FjeS10cnVuaworMjg1MTAgNGM0ZjkyYjBhZjkwMzY5NTQzMjBmYjUyZTJiN2JmNmMxMWZmNDdjNSBsZWdhY3ktdHJ1bmsKKzI4NTExIGIzMzdlZjE2YzBkMmQ4YmMzMTMwZDczNTQ0Yzc3NTczMWE2NjFhMzcgbGVnYWN5LXRydW5rCisyODUxMiA1ZmU0ZDkzZGY0MjkxMzRlZjg2OTVjMTJlNTlmZjk2MmZmOGI3M2QyIGxlZ2FjeS10cnVuaworMjg1MTMgODRiZmI4YTgwNWZjOWZmNjZiMzgxZWUxZTE2NDZjMWQzMjEyYTM0NiBsZWdhY3ktdHJ1bmsKKzI4NTE0IDlhMTc4YWRiNGUyZGIwMDg3MmRjYzVmYzU3OTMwMWRjZWFjNGJmNTYgbGVnYWN5LXRydW5rCisyODUxNSAxOTk4MmM1ZWI0OTNhZjA5YTIyZjUwN2E1YmU1MDJhZDU3ZTIxZGE0IGxlZ2FjeS10cnVuaworMjg1MTYgODc3MTk4NzA1YzkyYWRiMDI4ZGFhMmUwNmFlYzk5NGVhYjJjMTRlNCBsZWdhY3ktdHJ1bmsKKzI4NTE3IGMxNDlkMzkzMTQzNDQ3NDBmNDY5NmM5NTA2NWFkYWZjZDRiNGVhODQgbGVnYWN5LXRydW5rCisyODUxOCAwMzM3ZGFkODQwM2UxMGE3MzU4YmU1Njc1ZjMyNjYzOTQwZWYzZDAzIGxlZ2FjeS10cnVuaworMjg1MTkgNDI3ZWZjMzViNWJlYjZkZWI5YmQyOWYwMjMxYmU1NzY4M2QzMjA1OCBsZWdhY3ktdHJ1bmsKKzI4NTIwIGFlMTQ2OWU0NjhhMDQ5MDg5NmJiMWFiOTFmZWNiOWNlMDk0OTQyMDcgbGVnYWN5LXRydW5rCisyODUyMSA2YTg1YTFjOWQzM2Q4ZjNhZjMyZTc0NDYxZjAzN2EwMzc1MmQ0ZTQ3IGxlZ2FjeS10cnVuaworMjg1MjIgMWI4MGUwZmQ1YTQ4MTQ1OThmNDRhNTU3MDY4ZTZiYzhhMDVlZmMwMyBsZWdhY3ktdHJ1bmsKKzI4NTIzIDk4ZGRjNDI5N2YzNjFkZTVkYmU5YmNiMzM0NTJmNjM1NzUwM2U2YzQgbGVnYWN5LXRydW5rCisyODUyNSA1NjcyYjE1NzM4NTVhNTE1YWEzNjNmZDdmOGU3ZGFlMmI0MjcwYjlkIGxlZ2FjeS10cnVuaworMjg1MjYgNzNiMmNiYWU5ZDkwMTc4MDQzNzBjZTViZWI1ZmE5OWM3MGIyNjY1YSBEU19SUENfQlJBTkNICisyODUyNyBjMDJhNjY4NDg4ZDA4MmM0ZDBkYjhiMzg3Mjc3N2U2OGMxYTJjMmQ2IGxlZ2FjeS10cnVuaworMjg1MjggYTY5YTEyNDg0ZDY5YWE4NjZlNjcyNjhmN2E3NjE0NTJkMDNhMjc1MiBsZWdhY3ktdHJ1bmsKKzI4NTI5IGJjNTkwYmVhZGYwYmQxNzYzNGJiMGUxZjY0MmRiNjY3N2FkN2QzOGIgbGVnYWN5LXRydW5rCisyODUzMCAzMjMzMWQyNmQ3Y2YxOTExNGYxZjgwYjNlZWI1OWE1NTc5ZjQ4ZTk1IGxlZ2FjeS10cnVuaworMjg1MzEgOGExNmRlMGJlMTExNzgwOTJiYmVhMDUwNjUwMTRjN2FkNGI0N2VmZSBsZWdhY3ktdHJ1bmsKKzI4NTMyIGY5ZTQyNDNmZjc5MmU3OTQxMWMxODhhNTExNmRlMjVjNjg2ZjE2ZjggcmVsZWFzZTIyLW1haW50CisyODUzMyA0YjU4MGE0NjI1MDgwY2RiZWIyMmRiOGYxNDBhNWEwNWVjNWI0Yjc4IGxlZ2FjeS10cnVuaworMjg1MzQgMzllMDlmMzBmN2VmMjg0NmE3ZjFhYjU5NjIzMGUxZjQ0YzRlNmQzYiBsZWdhY3ktdHJ1bmsKKzI4NTM1IGMwZDVmZjg1NTVhZGVhNDcwNWQ0NTU2ZmZiMDk5NTQ3YWM4YmJiNjUgbGVnYWN5LXRydW5rCisyODUzNiAwZWNiM2NhYmY0MGI5YTg2ZTYzNmNiOTk3ODc2YjVkNjcxZmYzMzU3IGxlZ2FjeS10cnVuaworMjg1MzcgM2EyNmUzNTJmMGE2ZDI3NWZmMWUwNzdjODBhYWE4Y2FkMjEyOWRlMSBsZWdhY3ktdHJ1bmsKKzI4NTM4IDAwYjZkZDQxNGI4MDQ2MWZiNzgwMWE0ZThjMWQ2ZDNlMWMxYjg3MWIgbGVnYWN5LXRydW5rCisyODUzOSAwNDAxYTBlYWQxZWIzMzQ3ZDEyMGQyYTA4MTRkY2E1MjJmMTJiODEzIGxlZ2FjeS10cnVuaworMjg1NDAgYjQ3MGI0MTc4MzlkOGNiNDZkZjMxYTM0NTI3MGI3ZTMyZTM2ZWZlMSBsZWdhY3ktdHJ1bmsKKzI4NTQxIGYwZmYwNjBjZDE5NGU1MTc4NzI1ZTVjOTI4MjE3NjY5NDAzODJjMzQgbGVnYWN5LXRydW5rCisyODU0MiBmYjMzNGIxYTU2YTY1YzA3MTA4YWIzOGJlODE5MzA3MDcxOTMzZTVlIGxlZ2FjeS10cnVuaworMjg1NDMgYTJiMWYzYzExMzg3YTY0NzA4Yzg1ZWRlMDg4Y2IxZDFkMGI1MGRiNyBsZWdhY3ktdHJ1bmsKKzI4NTQ0IDg4MzQzODVmMjliZjU0MTBkOWY3MjhhYTBkMzdhNmQ3NmM1Nzg4OTQgYXN0LWJyYW5jaAorMjg1NDUgNzU5NjFjYjM3NDdmOWRiOWJmNDAxY2ZkMWE5NGZkYjE0MDMxMTI3YyBhc3QtYnJhbmNoCisyODU0NiA2OTI5M2I4NDlkODU4MDdiNGQ2ZTE4MWJiMjQ2YjU1MGFhMmZjYWU4IGFzdC1icmFuY2gKKzI4NTQ3IDdjNzMzMzgwMjcxNDliMjBjODY5YTlmNDBkYTUyMzNlYjY4N2MzNWUgYXN0LWJyYW5jaAorMjg1NDggNGVhMDgxMTAwMzA1MjliOGI4YjI4ZGY5NWIwOWM4MjUwNTI1N2RiMCBsZWdhY3ktdHJ1bmsKKzI4NTQ5IGVmYzBlZGMzMGZlYTQzNTBmZWMwYzA1YmRmOWUzM2M1NjMyZjNlMGIgcmVsZWFzZTIxLW1haW50CisyODU1MCAzMDE1YzY3OGY4MWRkZjg1MGRmMTAwZTVhODZlMzEzZGMwNzUwMDA2IHJlbGVhc2UyMi1tYWludAorMjg1NTEgMGNlMjcyMmEzZTE1NGQwOTM0YmJiOWI1NTI2ZWRjNWU5MzhmODI4NCBsZWdhY3ktdHJ1bmsKKzI4NTUyIDRjODE2M2EyNzY0MDI5N2E2YjFjYmM5OWY1ZDQ1ZGY1ZDJkODk5OGMgcmVsZWFzZTIyLW1haW50CisyODU1MyA5NTNlYmUwYzBjMjVlZWFhZTNiM2VmNzhlNTRhMThiZTA5ODA4ZjhlIGxlZ2FjeS10cnVuaworMjg1NTQgYzczMTBmMzQ4Yzc4ZTJhZmNhZmI2YWNiMWJlYWFhOTYzZTFmOThhMyBsZWdhY3ktdHJ1bmsKKzI4NTU1IGU1MDBmMThmMzEzMTI4MmE5N2U3YzZmYzNmNWE0NmVjMzE1YmJhMmUgbGVnYWN5LXRydW5rCisyODU1NiA2YjY3ZDI2MDc5ZjI1NTY5MGVjZmNjMjJkZTJiMjA3NTc2NjJiZWY1IGxlZ2FjeS10cnVuaworMjg1NTcgMjdjNzE4YzgyZWZkZTE0NmM0Zjg5YzE3NDQ2OGZiNjExNGQ2Y2I2ZCBEU19SUENfQlJBTkNICisyODU1OCA0OGQxMDhlNWI4ODQxYTBlODkzODlmMDFmOGMwM2UwZTk4NGM1OTgxIGxlZ2FjeS10cnVuaworMjg1NTkgMTcyODQ1YzA5YWZlY2Y1NDI1M2E0Zjg0M2NhNGFlN2VlMzVkMTA0ZSBsZWdhY3ktdHJ1bmsKKzI4NTYwIDU2ZjlmNWFiNmVjMTFmOGE5ZmMzYjY4YTRhMWY4YzJkZmIyYjAyMWMgbGVnYWN5LXRydW5rCisyODU2MSA1MTY1YTBlZTg0YzYyMGE2ZjZlY2QwM2Q1M2FkY2RkOTQyYzY3YTQ3IGxlZ2FjeS10cnVuaworMjg1NjIgZjFjNjljMzJjNDJiMmJlYWU2NDkzM2NmM2JhMzU2YjM2Mzg1NTBhNiBsZWdhY3ktdHJ1bmsKKzI4NTYzIDk2NGQ2ODg4YTIzNjhlOWUxYzBjMTJlNGM0MzQ2YTIzMGJlODU1YjQgbGVnYWN5LXRydW5rCisyODU2NCAzNjhiYzNhNDkxOWUzMDVjNWM4MzcyZmIzNTA2ZmZlYjkwYjA4NjdiIGxlZ2FjeS10cnVuaworMjg1NjUgODUyOWU1NThmNzFkNzQyZmU1YmY3NjgzZjkxMjA2ZGQxNzcxYTRjMCByZWxlYXNlMjItbWFpbnQKKzI4NTY2IGI4OWViZDU3Y2ViNGE5NWYyY2IzODA0YWQzNGZmZDE5NjNjMzVkYTcgbGVnYWN5LXRydW5rCisyODU2NyAzOGZhNzRhMjA1ZWE1NmQ4NTY2ZjQ2OWY1ZDQwNGE0NzA0NDUwOTYxIGxlZ2FjeS10cnVuaworMjg1NjggY2M1M2RkYjY0MjRmM2I0MTUyNWY5MDhlNzNkN2NlNmQ0ZTk1N2I0NiBsZWdhY3ktdHJ1bmsKKzI4NTY5IDBmMDAxNjYzMmJlNDlmOWYwOWEwNTAyOTBkNGFiY2Y4MTdiZjViMzYgbGVnYWN5LXRydW5rCisyODU3MCAwZDkyZWI2M2RiODlhZTg5NGI4YjA0ODhhYTdiMWNlOGIxYjg4YTdkIGxlZ2FjeS10cnVuaworMjg1NzEgZGRhZDM2N2I4MGMzZDQ2ODEyZGEyZGM1YjhlMzg5ZDE2YWE0N2I0MCBsZWdhY3ktdHJ1bmsKKzI4NTcyIDgwNjM0Y2EwMmRiZjkzNjRjMjEyMjE5MmY5MWMzMGQ0YzA5YWNjZDEgbGVnYWN5LXRydW5rCisyODU3MyBkNDQ2YjUxNTEzMTZlYTgyZTc4MDUzYTAxNWZlY2NiZDRlYWVkM2JkIGxlZ2FjeS10cnVuaworMjg1NzQgYWY2OTQ1ZjMzYjA4NjBmZjEwYzA2MDAyNDczNWViYjFiOWUyZWY1MSBsZWdhY3ktdHJ1bmsKKzI4NTc1IGJlMjVkMjM2ZjI4NmRkNGU3MWFhMTFkOWE3MmEwYTAwM2ZhNTQ4ZjggcmVsZWFzZTIyLW1haW50CisyODU3NiBkZWI2NGRmYzg0MTY2Y2E1MTU2NzUyMzNiMTM2MGM4NmRjN2UyNDczIHJlbGVhc2UyMi1tYWludAorMjg1NzcgNjVlMGYyZTM5NWFjODM3NjYwMjZiZGZlZmE2YWIyZTAyM2ViZmFiNyBsZWdhY3ktdHJ1bmsKKzI4NTc4IGFkYWJkYjk5ZWNjNGVlNzQ2ZDI4Y2M1MzJmMTJhYTk4NTA3OWIyYzIgbGVnYWN5LXRydW5rCisyODU3OSA0YjE1NGYxOWQxYWYyZjRmMGVkYzNkM2Y0Yzk5MDNlNWY4YmJlYjA3IGxlZ2FjeS10cnVuaworMjg1ODAgMGUyMzY2ODc5Mjg5ZTIyNjBjYTI5MzBiZjg1NWQ5ZjcxMmZkMzA3NCBsZWdhY3ktdHJ1bmsKKzI4NTgxIDRiMjA1ZTBmYjQ2YmMxZjg2MTIyZjY3Y2FiNmYzOGViYTk0MDk5ODIgbGVnYWN5LXRydW5rCisyODU4MiA1YzI0MzM4ZjNhZTVmNDIyYjY5YjQzOWY3MzFiMWU2MTk0ODZjYzdmIGxlZ2FjeS10cnVuaworMjg1ODMgMTBmOTg4ODg1M2NjNjA0MTJiY2ZiZWU3NmMxYTg0Zjk3YmY5ODQyMiBsZWdhY3ktdHJ1bmsKKzI4NTg0IGFjNzQxNTg3ZTY2YjkyMzQ3NDhkNmRlYjRkMWM5OGQ5MjYxNjExMDYgbGVnYWN5LXRydW5rCisyODU4NSA1Y2I4ZDU3MmI0ZGVmMDFhYzNjMjJkNTFjMmJmNGVlNjYxYjA3ZTY0IGxlZ2FjeS10cnVuaworMjg1ODYgMGM5ZGZkNWEwNmQ0NDcwYzAwMDQyOTlhYzQ1YjA2YTQxMWJiNjc4YSBsZWdhY3ktdHJ1bmsKKzI4NTg3IDc0MWVkZDFjYTIzYThiZTliZjRkNjE4N2Y1ZDExZjYxYThmZjJjMmUgbGVnYWN5LXRydW5rCisyODU4OCBlNTY2YWY5NDY0OGJhNjYzMjA5NDUyMWM4YzQwN2FiZjA0M2RlNGU3IGxlZ2FjeS10cnVuaworMjg1ODkgNjQ1ZGMzM2NkNDgxMjQwZjA4NTk3YjVkMzZmZGRlY2Y3YWU2MWEyNyBsZWdhY3ktdHJ1bmsKKzI4NTkwIGJmOTBmYjcxYWE3NmQ5M2EzNjEzMTI2Y2Q1YzkzOTJjYTM1OTkwZGUgbGVnYWN5LXRydW5rCisyODU5MSBjMWNhMDNlZTUxNmUxM2RjNmJkYjA4OGNlYjZmN2JlMTEzYjNhZDZjIGxlZ2FjeS10cnVuaworMjg1OTIgMGYwZDM0NzRmM2Y2ODlkZmUyMTM3ZDUzZjhhYWM0MWM2OWUyZjI2NCBsZWdhY3ktdHJ1bmsKKzI4NTkzIDEzYTVmMzI2MjgzMjEyNTdiZWM3ZDAzYmMwNjhkMzE2ZWJmNzgyZjkgbGVnYWN5LXRydW5rCisyODU5NCBlMTYxNzE1NmY5M2ZkYzlhNzM4YmY0YjJmNjliYTAyMDYzYWU2NWQyIGxlZ2FjeS10cnVuaworMjg1OTUgYzIxM2U5YjgwMDI2Mjk5NzllNTkxOTFmYjA3YWIzYTFkZGZhYWJkZSBsZWdhY3ktdHJ1bmsKKzI4NTk2IGEzN2NmYzFjOTcxNmM3YTY1ODM0ZjkzYWEzOTYwYmRhZmE1MWNmYjEgcmVsZWFzZTIyLW1haW50CisyODU5NyAyYWMxMGQ5MzJkN2Y1NTkxNzJiMzZiOTg5ZjQ0Y2NkZjhiYjUyZDBlIGxlZ2FjeS10cnVuaworMjg1OTggNjEwNDhhZGEwNWJjYzk1NDkzMjdkOGE1YjYxMjYzYWE3ZTQ4ZWQzZCByZWxlYXNlMjItbWFpbnQKKzI4NTk5IGI2YmZhYTZjYTg0ZDA1NGE4MTg5ZGNiNWY3MDBkNDk3NDI0MWQyM2EgbGVnYWN5LXRydW5rCisyODYwMCBiOGI5MmIzZjViMTdjNmVjZjliNzkwZTk5YmMxNzdhMTVjZTE1ZjMzIGxlZ2FjeS10cnVuaworMjg2MDEgOThkOGJiMmVlNGMzMzg0ODFjYTFhN2ExYWUyYjFiZDYyZGIyMTc1ZiBsZWdhY3ktdHJ1bmsKKzI4NjAyIDQwYzM1MTkxMzlkZThiNmMwMjAzY2U5MjZiNDIxYjY1MjFjZDBjMzkgbGVnYWN5LXRydW5rCisyODYwMyA5ZWUyZmIyN2QzM2E3MjE4NGM4N2IyMzJkYzFlOWIyMGJiNGQzZGYxIHJlbGVhc2UyMi1tYWludAorMjg2MDQgMTNkMDZlNWM4YTVjM2VmNGI5NTUwZGU2MjVmNDc4ZDc0ODUxZTI4NSBsZWdhY3ktdHJ1bmsKKzI4NjA1IDFjMDE5N2Y0OWM1OWMwMzc3NjVkNThhMjIxMzEyMDE2ODM0ODQ5ZDggbGVnYWN5LXRydW5rCisyODYwNiA1YTE3ZjA5NzgzMjYwMDljMDZhMTA2YmZmOTY4NWVmOTk3ZGEwY2QyIGxlZ2FjeS10cnVuaworMjg2MDcgZjRlOWYwOWRmNGYyMzk4M2M2MzhiMDE4NjUyMmE3YmNiMzkxOTBkZiBsZWdhY3ktdHJ1bmsKKzI4NjA4IDI5ZWZjMmQ4M2FkZTYxOWEwYTM2YzZhMjc2MmEyNDUxOTY3ZTBjNTcgbGVnYWN5LXRydW5rCisyODYwOSA0ZjQwMDMwNDNiNTAxMzFlZDdkYWJjZDAwMGQxYTg5NTNmYzcyNzllIGxlZ2FjeS10cnVuaworMjg2MTAgMDM4NzExYWUxM2UwZTE4MzQ4YTUzMTAxOGI0MDhjNGE4MzE3MGI1ZSBsZWdhY3ktdHJ1bmsKKzI4NjExIGJjZGI2MGRmNGUzZWZiMzMwOGI5ZTg1MTViOWU0MTA1ZDZjZTZiOWUgbGVnYWN5LXRydW5rCisyODYxMiAzZWZiZDE5NDNiOGMxZTg4OGNkY2NmNmUzZDNhMmU2NWU3OWUwZjBkIGxlZ2FjeS10cnVuaworMjg2MTMgMTE1MDU2MGMxMDAzMTA4ZjI2NjFkY2M2OTE0NjJhNGYyOWMwNjJhYiByZWxlYXNlMjItbWFpbnQKKzI4NjE0IDI0ZmUyYWM1YWRjYzE5Yzk4OTI0ODA5ZDk2MDhjOWNhMGM4MDE2ZTMgbGVnYWN5LXRydW5rCisyODYxNSA4YTZmNTRiNzYzNDM0MDc2YzkyZTZmZjQ1ZTQ1NmM3MTcwOTgwY2RhIGxlZ2FjeS10cnVuaworMjg2MTYgNGI5ODQ0MTg4ZDA0ZTcwZDI3ZTBmNTY5NTAyYTk4Y2M3NGM1Mzg2MyBsZWdhY3ktdHJ1bmsKKzI4NjE3IDE4MTYwY2I2MzY1MDljZmU0ZGNmNjI1NjljYzlhMjE2YzljYWRkN2EgbGVnYWN5LXRydW5rCisyODYxOCBhMGJlMTgyNjMxY2MzYmFiZDJiNzQ0NGNhZDZmNTJkODZjMjgzYTJhIGxlZ2FjeS10cnVuaworMjg2MTkgNDZhYzM2NTM5NmE0OTc4NGNiMjAxZDlkMTUyZmM4MGUwYzhlYTc4MyBsZWdhY3ktdHJ1bmsKKzI4NjIwIDJiZjA5ODkyNGJhNDA5NTJkMzQ2YmRlZmYwMTkwMjQ2ZjZiNDg4ZGMgbGVnYWN5LXRydW5rCisyODYyMSBmMTg4NWI5OWEzOWNkYWM2N2M2YWZlMGYwOGI1ZmEzZmExNzZkYzYxIGxlZ2FjeS10cnVuaworMjg2MjIgYjNjNDU4ZTNjMjgwZjhmZDYxZDI0OWEyZTIwNGQxOGI3NzNlNDhiOCBsZWdhY3ktdHJ1bmsKKzI4NjIzIDQ2ZTcyYTcwODg1Nzg0NGI4MmZhMDVhMDE4YmM0NDcxZjkwMjBhYTYgbGVnYWN5LXRydW5rCisyODYyNCA5MDk2MGY3ZjRmMzE0NGRlMWE3YjcwMDhiZmU4NTZiZmFiNzBmZWM2IGxlZ2FjeS10cnVuaworMjg2MjUgNDVkZjJkZTM0Y2QzOWJmN2NiZTI2NGU3MDkyYTFjMDQ2MzUyOGUwZiBsZWdhY3ktdHJ1bmsKKzI4NjI2IDVkMjA3ZTU3ZDA0MDE0MGNlM2I1MmE3NmVlMjYwMWQ3MjNkZjlkOTUgbGVnYWN5LXRydW5rCisyODYyNyA1NTA4ZTA0ZDQ5N2M2ODUxNmZhZGVlYjkwODM2NGNmNjFlYjUwNThlIGxlZ2FjeS10cnVuaworMjg2MjggOTZkZDk5MjdlMDExZDhiMTVhNWE0M2NlZTk5Mjc4MWU0NzNhNmY5MSBsZWdhY3ktdHJ1bmsKKzI4NjI5IDRiMzJiZTY2MTc3ODVkMzUwMDU0YjVkNGVmOThlNGNkYTg4YTUzZjQgbGVnYWN5LXRydW5rCisyODYzMCA0NzA4MWE3NTNlY2M0ODI2NGM2ZDkyOGIxN2E3OGUxZGMzNzdiMmU0IGxlZ2FjeS10cnVuaworMjg2MzEgNjRkMTA1ZGQwODIzYmE5Yjg4NGEwZGIyZDBkODliNTMyYTMxOGE3YSByZWxlYXNlMjItbWFpbnQKKzI4NjMyIDhkZDZmNTVmZDRiN2U3ZWQ5YzVhN2ZhMDg2OGU4NDgzNzMyMmIyNzQgbGVnYWN5LXRydW5rCisyODYzMyBjMTg0ZTQxNjhkMTRjOGU5NzljZjU4NWEzZmIxOTBlMDZmNmM4MzQ3IGxlZ2FjeS10cnVuaworMjg2MzQgY2JiNmNjNzlkMzM2NTA3NTQ1MDA5YzZiN2JmNzdjNWU1ZjJmZjUwMyBsZWdhY3ktdHJ1bmsKKzI4NjM1IDI3ZjgzNTRmNDFiNmU3MjQ2OGVmOTI3OGEyYzEyMzlmZjI3NzQ4NWYgbGVnYWN5LXRydW5rCisyODYzNiBhZmQwMDMwZTRjMzhjNjBmZDlhNjY1OGRiZGYyNjI2YzZkZmRmNGYyIGxlZ2FjeS10cnVuaworMjg2MzcgYWJkNjI1NDE3YTUzNTlhMDUzOTBiOGMyZmU1MGRjMDNiMjg3NDY5ZiBsZWdhY3ktdHJ1bmsKKzI4NjM5IDJlN2ZlNTVjMGUxMWFjZTc2NzU1YzU5ZDVmZDcyYTliYzU2NjA0YTcgbGVnYWN5LXRydW5rCisyODY0MCAyZDEzZjlkOTgxMzU3N2RmNWU3Zjg2ZGE5MDUxMWM4MDgwZWM0YTQzIGxlZ2FjeS10cnVuaworMjg2NDEgYmY3NWYzYTQ1OTI3ZmZiMzBhMzUzMGI0MGY5OGFlZDVhOTYwODU1ZSBsZWdhY3ktdHJ1bmsKKzI4NjQyIDFlNDZkYTFlNjUyMjZkMDdlYTUxMDNmMjRiZWYxMzRhODcyMTdlZjIgbGVnYWN5LXRydW5rCisyODY0MyAyNDkwY2Y3ZTY4YTQ0YWUxZWE1NDdlYzJiZDFkZjkxNWYzMTQ1MTYwIGxlZ2FjeS10cnVuaworMjg2NDQgOWYzZWEzN2RjNDNjYjc4NThmNDA3ZTQ4Njc5ODI4NzJiODBkNjM4YiBsZWdhY3ktdHJ1bmsKKzI4NjQ1IDc2NzY4YWRiNmYyMzI4YjJlMWUxMTgwOGM2ODgzMGY2OTM1NzViZmEgbGVnYWN5LXRydW5rCisyODY0NiBjYmNkNzNmNTg3YWQ3YTQ5ODgwYmFkOTA3OTM1ZDc3ZDdhM2Y0YjY5IHJlbGVhc2UyMi1tYWludAorMjg2NDcgMTI5NDllY2VkNTVmZjdkOWM0NGY5Y2FmZTM3ZGVhYTU0NmJiYTI0NCBsZWdhY3ktdHJ1bmsKKzI4NjQ4IDc1Y2Q0YzIwM2Q4ZjNiZGYzNDc1YmY0NDA0M2I2ZWVjMWRlZjg3MWUgbGVnYWN5LXRydW5rCisyODY0OSA1MzMwYzA2MjA4MTBlNWRhYWE4YTdiYzM4ZWY3YmY1YzE3YzIwZmMzIGxlZ2FjeS10cnVuaworMjg2NTAgMDIyMGIwMDc1YTM1ZDQ5ODVhODJjMTVjYmJhOTYyZTgwZjg3N2E0OSBsZWdhY3ktdHJ1bmsKKzI4NjUxIDk1MWY1ZjI4ZjJmZWIzM2EzOTRiZmExMTY3YTAzMWNmOTY5ZjJiNjQgbGVnYWN5LXRydW5rCisyODY1MiBjZGFkNmIwOTIxZDU3ODI1MzExNTk5MGNhYmJjYjhjNDI3MTdjODE1IGxlZ2FjeS10cnVuaworMjg2NTMgNGZkMGI3NmM3NDllZWI2MWM3Yjc1ZDkzNDY4NmIwOTQxYmU2NWU3ZSBsZWdhY3ktdHJ1bmsKKzI4NjU0IDhhN2EyZjFmODhmMDY1MzRjNmJkMzkwMmM4MWI3OTM3YzVkNDNhYjYgbGVnYWN5LXRydW5rCisyODY1NSBhYzBlMWU5MzFmMzkwMGM5ZWQ2MGE2MjFiNjY1NGYxOTliYTkxN2M4IGxlZ2FjeS10cnVuaworMjg2NTYgNDBlNWIyZGE5ZjI4NDNjYjJiYzM4ZjU4NzJhYWM1NTRmNmY0NWUwYSBsZWdhY3ktdHJ1bmsKKzI4NjU3IDVmNWYxYzgyNTc4NDQwMDBjNWZmYzQxYzcxMjgwZmY2MmU4ZGJkY2UgcmVsZWFzZTIyLW1haW50CisyODY1OCAyYjE3MDFjZDQ1NjYyMTRmNjZhNGRjNDM2ZWZiYTY1YzNjMmVkMmU0IGxlZ2FjeS10cnVuaworMjg2NTkgZTcwOWEzYzhiZmVjYzVkZmRjYmYxODAyMzFjYmJmOGMxMDYxYjJlYyBsZWdhY3ktdHJ1bmsKKzI4NjYwIDIzYTJiYWQ4ZDgyY2U2NDE3ZWJmZjBiYzM4NjA5YmNkY2NjODEyYWEgRFNfUlBDX0JSQU5DSAorMjg2NjEgZmQ4YWE3YWVkNGQ1MWU2Y2Y3ODZlYWIzOWEyMjVlY2EyZjE3NzNkMyBsZWdhY3ktdHJ1bmsKKzI4NjYzIDE5OTA0NzUwYzM2NTdjNzU3MzYzMzA2MGY4ZjNlNzNmYjI1NzkxNDEgbGVnYWN5LXRydW5rCisyODY2NCA4MDljMTRmMTEwMWE5NWI5MDYzYmE3MzYxMTk4ZGE0MTI3NGM0MGUwIGxlZ2FjeS10cnVuaworMjg2NjUgMWE3ODk1Zjk3YjMwZDEzODczYWRlOTc3Mjk1MDUwNTU3YzNhMDY3MiBsZWdhY3ktdHJ1bmsKKzI4NjY2IDg3NzVkZWU2MGQ4OWE1NTlhYWM5Yjc5MDk1OTdmZDIwZWI5ZTc1NWYgbGVnYWN5LXRydW5rCisyODY2NyAyOTcwZTVlNzYwMWZmMjZiZTQyNzk2NWQ2YTYwYTE0ZGI4MzYyNTc3IHJlbGVhc2UyMi1tYWludAorMjg2NjggOGZkNGUyMmU3OGYwMWM1Yzg3Mjk0NGJjOWMxZjVlZTY5NDQyYjI1NSBsZWdhY3ktdHJ1bmsKKzI4NjY5IGFhYzFlZTk2NmY1NmE0ZDYwYTI5MjQ5OWExZTZjNjhlYTczM2E4MTAgbGVnYWN5LXRydW5rCisyODY3MCA4ZDc1MWI2MmVjYzQyNWI0ZTA3ZmY0MzQ1NzQwMDk0MzVmZmFhNWRlIGxlZ2FjeS10cnVuaworMjg2NzEgOTZiMmZmYjc3YjAxNzQzN2U1MGQ0OTEzYWQxZjMzYWY2ZjQzZDUyMyBsZWdhY3ktdHJ1bmsKKzI4NjcyIDI5MzBmYWYxMjVjYTlmM2ZkNDVjMTUzYjM2ZGRhNzI3YWVkYjU4ZDYgbGVnYWN5LXRydW5rCisyODY3MyA3MDA4ZTUzNTc5ZWJkNzU4ZmY3OGY5N2VhZDQ3YjJmNWQ1YzY4ZmU0IGxlZ2FjeS10cnVuaworMjg2NzQgYTBmNjQxOWNiMTNmZTZhY2RjNWNlZDBhMTAyNzVlMTQzZTVhOWY4NiBsZWdhY3ktdHJ1bmsKKzI4Njc1IDc3OGY3MjIxZjk1NTExNTUyMTI0NzIzZWQ0YzhiYmI1OGI1NTczZWQgbGVnYWN5LXRydW5rCisyODY3NiBjYzM1ZDdiODc4NTJmNDE4OGFiOWM2YTA5MDEyYTgwNDdkYWY2YjQ1IGxlZ2FjeS10cnVuaworMjg2NzcgYzgwNDQxMjNkMTEwYjZkYWFhMTk3YjE5YjUxYzM3MmMyMzQwYTljNiBsZWdhY3ktdHJ1bmsKKzI4Njc4IDBiZjk2OGVlMTVjNzY1NGVmNzc3NTNmZDZkMTM5MWEzYTFhMGUyZjMgbGVnYWN5LXRydW5rCisyODY3OSAxYmJlZGY1NDgxYzhiYjlkOGM4MDRjZjRhYjNmZjc1MDgzZWEzZTM0IGxlZ2FjeS10cnVuaworMjg2ODAgZTFiYTQxZGM5Nzg0MjgxNjgyY2UyNDE2N2YzMzM4MWU0NzhiYmRlMSBsZWdhY3ktdHJ1bmsKKzI4NjgxIGRiZjNjYzFmNDczM2M1ZWE5YmM0NWU0MDdmZTA0NTdkNTQyN2MzNGYgbGVnYWN5LXRydW5rCisyODY4MyAxMzg1ZDE3OWExN2FkYTQyMTE0MWVkOGUwZTdhYmYwMGU2NDVjYTE3IGxlZ2FjeS10cnVuaworMjg2ODQgYjEyOGU4YTExZTI5NWFlMjNlOTk4NjY1YTFjM2ZiOGRjMGY1NTk5ZCBsZWdhY3ktdHJ1bmsKKzI4Njg1IDQ4MGNhZjdjMGExNGUwNDVlYzI4YzAxZWZjOWQ3N2YzNjg0YTg1MWUgbGVnYWN5LXRydW5rCisyODY4NiBmYzJiNzM4MDJmN2I5ZDk3MWQ4NWQ0NmU2ZmRiZDVjMTc2MTVkM2YyIGxlZ2FjeS10cnVuaworMjg2ODcgMWRkN2U1MWZlMGJlN2NhYjZjOWI4YTQ2MGI5MTZlNzAzYjBhODBmYiBsZWdhY3ktdHJ1bmsKKzI4Njg4IDQ2OTBjYTc1NWJlYzYzOWZiYmJjYjZmMWJlMjQzZGIzZGYzYzBjNGIgYXN0LWJyYW5jaAorMjg2ODkgNmIwZTg0NmI4ZDM3ZTU0MTU3YWU3NmZlZWI5YjEwYTQyNmU4NjIzNyBsZWdhY3ktdHJ1bmsKKzI4NjkwIDlmY2I3N2IwNGY5N2ZiMzA5NzBhY2U1MjdlODQ0Mjc1MWJlNDhmZWQgcmVsZWFzZTIyLW1haW50CisyODY5MSA2ZWI4ZGI1M2Y3ZmNhYzQ4MGEwNDE1MzA1ZTE5ZDE3NDFlNjQ5MzUxIGFzdC1icmFuY2gKKzI4NjkyIGUyMDVjN2RlNWE1YTQ1NGEzYzM3MTEyZDM5NzViOTZmZTkwODEzMWMgRFNfUlBDX0JSQU5DSAorMjg2OTQgMjk1NTllMjFjZDUzMDQ5M2ZiNDVjZGFkZmE5MDVhYjI3NWUxNzcyNyBsZWdhY3ktdHJ1bmsKKzI4Njk1IDFiZDA4OWIxZGI3ZmRhYWM5NWI2MGFkNzZkMzY5NjZhODIwOGMxN2EgbGVnYWN5LXRydW5rCisyODY5NiAzZGIwM2MwZDE1MzEwYWE0YzE3OTcxYzMyNjg5NjQ3YjM2ODhhM2U5IGxlZ2FjeS10cnVuaworMjg2OTcgZTU3ZTRiYjUzMmJhYjQ4OTAyMTZmNWY5NmY0NTlhYTE5Yjg5ZjA4OSBsZWdhY3ktdHJ1bmsKKzI4Njk4IDA0YTU0MWU2ODk2NDQyYTYxNjY2ZmY4ZWNlODQ3YWZkNDhlYzRjMDMgbGVnYWN5LXRydW5rCisyODY5OSBhZDY1Mjg2OTFjMzA5YWE4NzkyZWFkYjY0ZWYwYTZlMjE3NTlmNzRjIGxlZ2FjeS10cnVuaworMjg3MDAgMGVjNDc1M2NjYjBmYjYyZTE1NDM0Yjg0NjA3ZWJlZjg0YThlYWUwNSBsZWdhY3ktdHJ1bmsKKzI4NzAxIDUyNzJiNzYzYzI5YzliYTdmNGZjMmIwMDliYjZmYTU5NzBhNzc0MzIgbGVnYWN5LXRydW5rCisyODcwMiA2MTU4ZmNhNWJjYmYyMmE5ZjYxODE1YTJjMDMyZjY3ZGNhNjQ5OGVlIGxlZ2FjeS10cnVuaworMjg3MDMgNGI2MTg1MTI4ODE0YzE0M2NjOTE4YjA4YjE5OGVmNmFhOWRkNmM5YiBsZWdhY3ktdHJ1bmsKKzI4NzA0IGZkYTQ4ZGQ5NGIwNzA0OTMxZTUyYWUyZGQ3YTg2YzNhYTI2NGMzZWQgbGVnYWN5LXRydW5rCisyODcwNSA3MzQyOWNhNzQ4Y2ViYmFlMmU0OWQ5ZmUwOGY5ZTI5NGRhZGFjZGVlIGxlZ2FjeS10cnVuaworMjg3MDYgZTlhNjNlNDgzMTA5Y2U4YzliNTk1MGVjYTRjYWUxNmQyMTZmNjQ5ZSBsZWdhY3ktdHJ1bmsKKzI4NzA3IDg1ZDgxZTA5ZTJmN2Q3OTU0YTJhNDY4NjVkNjU0YzE0NTRlZDUwYjQgbGVnYWN5LXRydW5rCisyODcwOCA2ZWMxNTQ2ODQwYWU2NjJmZjg1YWY4YTM2OTlkMTAwZDk5Y2M2MWE2IGxlZ2FjeS10cnVuaworMjg3MDkgYTAzZjc3ODY5YjJmNTQ5NjAyZjFkYWY1ZjI5OTc4ZWYyMzBiYjE5ZCBsZWdhY3ktdHJ1bmsKKzI4NzExIDk3M2Y1ZmYyMDdjYzU4YTViOTUyZDgxOTc5M2M1N2QzMjA2MWQ5MzkgbGVnYWN5LXRydW5rCisyODcxMiA1ZWE4MmNiNTU2ODIzZDViYzhhMTAxNzVhNmI2MDc0OWFlODI2YjhhIGxlZ2FjeS10cnVuaworMjg3MTMgODU0ZGQ3Njk2ZWIyYmVhY2EyN2NmNTc0ODNhZmJlODhjNDc1OTIyNCBsZWdhY3ktdHJ1bmsKKzI4NzE0IDU3ZDNiOTY2NTFiNmVjODYzNTA4NDc5ZDc5OGJjNzk2OGZlODBjYzYgbGVnYWN5LXRydW5rCisyODcxNSA4Y2U0YmE4NTM5NjkxOWQxZjI0ZjI5OGVkNTM0YTAwYjFjNWY5MWNmIGxlZ2FjeS10cnVuaworMjg3MTYgYzZkZTY4Y2M4ZTJiYmNlOTcwYzNkMzdlZDQ5NDQ5OGRjMjRkYjQzOCBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjg3MTcgOTNlMjU0NTc3Y2ZhNTMxYjk4OGQ4ZmEyODNiYTc5YTIwYjA0MGRmNyBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjg3MTkgOThlMTJhYThjNTQ3NWY1N2I0MzI3OTIxZDBkNGE5NjVlNjk3MjBlZCBsZWdhY3ktdHJ1bmsKKzI4NzIwIGZiMDBmZDkzMTg4YTc2NTlmODNkYWZjZWRmOGUxZWI3MmQ4MzExYTggcmVsZWFzZTIyLW1haW50CisyODcyMSBjNzcyNjQwZDUzNWUwNDQxOGE3NGZlZDIzOTI0YmY0MWUyNDgxNDQ2IHJlbGVhc2UyMS1tYWludAorMjg3MjIgNmMyMWU5NWE0ODgxNzc1NmQ2YWQwZTE3MTlhOWQ5ZDA5YmVlZTA2MSBsZWdhY3ktdHJ1bmsKKzI4NzIzIDliODkyNGJkNWI1Y2NkZGQxNGE2NmNlMTM3MGRjYjRiYjQyZDU5MTIgbGVnYWN5LXRydW5rCisyODcyNCBmM2Q4OGVlMDU5MjhkNTA2MWMwZGY0MTQ3YWY0NzZlNjIwMjg4MDQ3IGxlZ2FjeS10cnVuaworMjg3MjUgNDY5MmM0ODdlZTkxMWVhYzU4ZGNhYzVlYjUwYjYyMzc5MzU1MmVkZCBsZWdhY3ktdHJ1bmsKKzI4NzI2IDFiYmY4ZTU1YThiYjliMGVlNDQ1Yzk0OWNhNmE3MDg1NmVjYTA1MGYgbGVnYWN5LXRydW5rCisyODcyNyBhZWMwZjk0NGY2YTAxNzYxZjMwM2E0NDAzMWRiNzRjZTU1Y2VkNTdiIGxlZ2FjeS10cnVuaworMjg3MjggNjA5ZjNkMzFkMWMyNGE3MzA4OGY1YzM1ZjQ3ZWMwZjdmYmM0YmVmOSBsZWdhY3ktdHJ1bmsKKzI4NzI5IGNkNzBjODgwM2ViNWMwZDBhNGFiYWI0ZDJiZmZjYWZhNWJhZWExMWQgbGVnYWN5LXRydW5rCisyODczMCBjOTdhNGNlM2M1OGVkYWJlNjg3MTg3OGQ3MDllYzA2MGE1ZGY5NGY5IGxlZ2FjeS10cnVuaworMjg3MzEgNGQ2ZjgyMDQyMzRhOGQ2OWNlZDJhMzVjMzBlYmM5Y2Y0MTNmZWZhZCBsZWdhY3ktdHJ1bmsKKzI4NzMyIGI2NGZjNmExMDQ5ZTliNzE1N2Y5ZmM3MWQzOTY0MGE0YjY5MmIxMjEgbGVnYWN5LXRydW5rCisyODczMyBjNDU1NjQ3NjhmNTI2ZWRmOWE2YmUxOTI4Y2RkZGY5Yjg4YzNmMjIwIGxlZ2FjeS10cnVuaworMjg3MzQgMDU1ZjdmYWU4MTUwOTEzNGZlMzllYzFhYzZiNDFhZjBmYjc2MjhjNiBsZWdhY3ktdHJ1bmsKKzI4NzM1IDc1MmY2ODk1Y2M2MzBhOGZmNGRiN2FmYjA4Mzg3Y2M5NThkMzFhMzggbGVnYWN5LXRydW5rCisyODczNiBmNWVjMDhkNDU4NTkyODc0YzQ5ZGVjMjgzMWI3NWM2MzkzMWM5YTg3IGxlZ2FjeS10cnVuaworMjg3MzcgZGE0ZTVlNDZhZTNmYjllZDY5ODFiYjA4YWJlNWQxYzNhNjYxZTMxZiBsZWdhY3ktdHJ1bmsKKzI4NzM4IDY3Nzc4MTE5NjE1MjYwNzdmYThkYmU3OTk0MjU3YTJjMmZjMDcwOTYgbGVnYWN5LXRydW5rCisyODczOSA2MWMyNTA2ZWMyZThlYTRkMGNmOWQ1MzU1NGEyNGMyZmM0YWE4M2Y1IGxlZ2FjeS10cnVuaworMjg3NDAgZGJmOTJjNTVmYmI4Yjc4OTIyYzY0MWI2ZTNlNWUyMTBkNTQ5ODA0OCBsZWdhY3ktdHJ1bmsKKzI4NzQxIDQwMTQ5YjUwMDIwY2JiNjg2ZWM3Nzg0NTU4ZjczZmY1MmY2OGMwZTggbGVnYWN5LXRydW5rCisyODc0MiAxYjBlYTQ3Mjc5YzY4YWQ4ZjQwZDQwZmEyMzUxMzVhNWUyYjFhMTg3IGxlZ2FjeS10cnVuaworMjg3NDMgN2JlMjY1NDRiZTRlMzVlNGZlNWJjN2U3ZDU0MWRiNjAzZTZmNDY3YSBsZWdhY3ktdHJ1bmsKKzI4NzQ0IGM2NzA5NDVjODY5NTIyODg5YzIwNTg5OGMzNjBiZjAxNmViOGI1N2QgbGVnYWN5LXRydW5rCisyODc0NSAyMmQxOTg5MTBiMjA4YTYwNjc0MjY2Y2MyMTI2NzVhYjEwMDY0NDQ3IGxlZ2FjeS10cnVuaworMjg3NDYgMWM3ZWUyM2RjNDllMTY5OGFlNzk1MDVjNzYwYzVkMzkyYzliZTJiNiBsZWdhY3ktdHJ1bmsKKzI4NzQ3IGVmZTYzOTE1MWJmZWM1YmUyMWFmNTIxMDYyOTEwMzkzOTUxMDFjYzIgbGVnYWN5LXRydW5rCisyODc0OCBlYjI4ZGNkZGQzNGRiYmMyNmU3ZTIwZjk2NTFiYmFhMDQ1NWNjZjUxIGxlZ2FjeS10cnVuaworMjg3NDkgZGYwM2ZjYzY2MTA0MzYxODM4NzM1MzUzMDE0YzMxMTZiYjMyZGM3YyBsZWdhY3ktdHJ1bmsKKzI4NzUwIDcxNzc5YjgzOWUwOTg3NGQ5YmE0OTM5Nzc1YTAwMzE1YWY1ZWIyYTcgbGVnYWN5LXRydW5rCisyODc1MSAwMzk5YzhhZWE3YjI4NjFkMTdkODJmMWI5OWNmNzliMzc5NjkzMTkxIGxlZ2FjeS10cnVuaworMjg3NTIgYmQ2NTEwYzVjYWJjNDdkOTVmNWY2ZmYwOTQzY2NiNzE1MzBmMmI5NCBsZWdhY3ktdHJ1bmsKKzI4NzUzIDQ2OGMzYmU2YzNlMmNkMTI0ODlhZWJkMTI2NzdhNTMzMDAwNTk3NTIgbGVnYWN5LXRydW5rCisyODc1NCBhYmI3NjhiNDE3YTEzMzBkNmY0M2VkZDY4NDY3YjhmNWNiZDk1NDMwIGxlZ2FjeS10cnVuaworMjg3NTUgODZmZjk1YjFjNjM2ZDVlMTU5ZTBiNDU4ZjlmYTZjMzAwYjZhZTFiMSBsZWdhY3ktdHJ1bmsKKzI4NzU2IGViN2I3YjcxOWVlNTY0OWRlOTM2NDRlNTIyYzM1ZDg3ZDM3MWYzODMgbGVnYWN5LXRydW5rCisyODc1NyBiZDNiOTJkYzk0MGE2NDllYzdlZjBkMmQxYTE2NmI3NjU4NGNmM2NiIGxlZ2FjeS10cnVuaworMjg3NTggOGVkYTE2NmIxMDRlY2E5MDRkYTJkODYxMTM5YTc5ZTc2MDE4YWM3ZSBsZWdhY3ktdHJ1bmsKKzI4NzU5IDkyYTNkODk3ZTgxOTNlZDIzOGQzNGYxNjY3MDAyMThiNjRmNTM0ZTAgbGVnYWN5LXRydW5rCisyODc2MCA1M2UyYzQ0OGIxNjlhMzI3NTI0MDFhYTZkODFiMTMzZTRhYjNjNjhlIGxlZ2FjeS10cnVuaworMjg3NjEgYjk2OGYwMzgyMzVlYTFhNTUxMzRlODE3N2NjY2ExZTk0M2E2YmE3YSBsZWdhY3ktdHJ1bmsKKzI4NzYyIGRmMGZmNWIxN2UxYWExNWRkYjlkODA3NmEwMzA1ZGQzMTJkMmJkZTMgbGVnYWN5LXRydW5rCisyODc2MyBlOWU3NGNjNTU0MGFkOGJhMGYxYjNkZTI4YWMyODU5ZjhhYmYxODAzIGxlZ2FjeS10cnVuaworMjg3NjQgYmRjM2RlZjNkMDg1ZGRhZDFmYjhhOWUzYjk4MmNjNWU4OGVlMGRmMiBsZWdhY3ktdHJ1bmsKKzI4NzY1IDgyM2YwMmEyMjIxMGQ4YTZhNGFkYTc0MjcwNDBlZWY3M2RlMTJjY2UgbGVnYWN5LXRydW5rCisyODc2NiAxNGFkNTYwZjRhOTdmODFiNjlmNWZkNmE5ZDY2NzVjYmExOWJiZTAxIGxlZ2FjeS10cnVuaworMjg3NjcgZjE3NTgyNzI3NjRjNzBjNTI5MzA1MDAyMGQwYmMwOTFjNGI4ZDkzOSBsZWdhY3ktdHJ1bmsKKzI4NzY4IDdkZTg4Y2YwNzgzZTJjYzNjMjJkNTZjN2RhOGViYWIxZGIxMWRmNmQgbGVnYWN5LXRydW5rCisyODc3MCA5YzdhMDZhYzhiMjc3MmU5NDFjZDQyZjBmMDUwM2JkNDM5YWE4MDdkIGxlZ2FjeS10cnVuaworMjg3NzEgMjRlNzg5YjZjY2I2NDE2ZDA0M2Y2NGM5YWYyZTI0OTgyYzU1NTc4MyBsZWdhY3ktdHJ1bmsKKzI4NzcyIDZiNjJhYjg0ODVlYjgxOTY0N2NjNDcxNmI1YjU0MTllNzZmZTY0ZWIgbGVnYWN5LXRydW5rCisyODc3MyAwNzM5MDQ2YTBjM2E1MTQ4MzRkZmIyYWI5MjdiNTM0YjU5MjI0M2UwIGxlZ2FjeS10cnVuaworMjg3NzQgMzM3ZmNjMjQ5ODViMzQ0YWI2Yjg4MzhjMzdkZTU4OGRhZTQzNmQxOSBsZWdhY3ktdHJ1bmsKKzI4Nzc1IGEzYjI5NTkxOGM1ZmQ1YTUzY2YxMGFjNjI0ZDZiMjBhYTdiZDIxNzkgbGVnYWN5LXRydW5rCisyODc3NiAzM2IyNDlhZjQzNjRkYzg0YjhhZTIxY2Y1NDQ0ZTZlN2ZlNGFkZTMwIGxlZ2FjeS10cnVuaworMjg3NzcgOWM5NTRlNjRkMTdhOTRhMGIxNDMwZWRhYTU2OGNiMGQ5YmE1N2RiNiBsZWdhY3ktdHJ1bmsKKzI4Nzc4IGEzMDIzMDg4MTlmMDVkYTg3OTE3NzM1OWZjZGZmZmRkN2U4MTcxOTMgbGVnYWN5LXRydW5rCisyODc3OSAyZjQ0YTkwZmZmMDc3ZWVhZmI3YzJjOTYyOWEyZjQ2OGY4MDM2OTFhIGxlZ2FjeS10cnVuaworMjg3ODAgMmFlMmEyMDNmNDdhYzJhNmVhNTlmNTIwYmE5ODc4OGQ0N2MxODk4ZiBsZWdhY3ktdHJ1bmsKKzI4NzgxIDlmNjE3MTA2MjhjNGYyOTViYjUxNmQ1MzNjMWRlZDQ5MGEyNGE5YWUgbGVnYWN5LXRydW5rCisyODc4MiAyYzNiNTM5N2MzZjllYzExNjg5NmFiOGYwYmUyZWVmNDdlZDcwNTEyIGxlZ2FjeS10cnVuaworMjg3ODMgYmQyNGMyNTk4YTQyOWQ3NmYxNTEwYjg3OTBlY2NjMDc3ZmI3OWJkOCByZWxlYXNlMjItbWFpbnQKKzI4Nzg0IGI1MjlhYzJmOWFiNjRiOTBiZDAxNTNhZGI5MzI4NGU5MWI3ZTVmOWMgbGVnYWN5LXRydW5rCisyODc4NSA0OWEzZWJlOWRmMTQ3NjY1NTNhMTExZTdmNDVkYTMxYTNlOTc1YWJmIHJlbGVhc2UyMi1tYWludAorMjg3ODYgNmVhODk4N2M3NDZmYjU1ZTc2OTQwZTkxZTBjNzM3NTJkZTE3NjNkNSByZWxlYXNlMjItbWFpbnQKKzI4Nzg3IDI3ZmY2OTRjOGMwNTBiNDVmMWE5N2M5OTQwMzdiZDg1Y2NmYTgxNzggbGVnYWN5LXRydW5rCisyODc4OCAzYWVjYTZjNTBmMzgwMGNhZThiNTI5ZWJmZjhhY2VmZTZjMzE4NDA3IHJlbGVhc2UyMi1tYWludAorMjg3ODkgODAyNTgzZjg4YWUwZDgyNTkyOWZmZDFhNWEwMWNiZmIzZjM4Y2EyOSBsZWdhY3ktdHJ1bmsKKzI4NzkwIGM4Y2I4OTc5MDYyY2U3ZDYxNmI0NjFhMDUxYmQ5MjVjY2FjOTUzZWIgbGVnYWN5LXRydW5rCisyODc5MSAwZWI4ODIwNjhhN2NlZTM2YmYxYzkyOWIyMDM2OTY5NGY5YTBhMDNmIGxlZ2FjeS10cnVuaworMjg3OTIgODY2MjBhZmIyMjEyNGJkYjE1ZDg4YTBhNGI2NDFjYTAzZGI4MmY5NSBsZWdhY3ktdHJ1bmsKKzI4NzkzIDZkZWM3NGY0NDI0MjA5ZGYzYTg5NTlhOTBkODAxZmYyZGU5NTE0NGUgbGVnYWN5LXRydW5rCisyODc5NCAzN2ZjNmE4M2ExMzRlYTcyZDk1ZDYwNGE2NDBmNDg0ODFjZDQwYzA4IHJlbGVhc2UyMi1tYWludAorMjg3OTUgNTg2ZmEyNDQ1OTgyNDczMmI0NWNkY2FkNDk4NDFiNDNiZTVmNjExZCByZWxlYXNlMjItbWFpbnQKKzI4Nzk2IGM0M2M0MjgzOTAxMThlMTU0MzhjZDIwYzEyOTM3YWNhNWM0ZmY3MTcgcmVsZWFzZTIyLW1haW50CisyODc5NyBlN2RiMWM5YTEwZmNiODcxMTIyODZmOGVhYTg2MDAzMWUwMTY4YjhkIHJlbGVhc2UyMi1tYWludAorMjg3OTggMDMzYWRjYmI0Y2IyYTc0NGE5YjM0MjU3NGFhNWZhNWNkNjVlOTUzOSBsZWdhY3ktdHJ1bmsKKzI4Nzk5IDJiYTgwYTQzMTJmZjUwMjA3YjUyM2I3NzY1NTlmYjc1MzNiZWUzOGUgcmVsZWFzZTIyLW1haW50CisyODgwMCA4NWFiNDY1MGRmYWE2YTQzMTJmYzdjNTk2ODliZmZiMjFiODM1NWQ4IHJlbGVhc2UyMi1tYWludAorMjg4MDEgOTZlMmVmZmVjOTRkMWJlYTU5MGE2MzcwNDQ3NjlmN2U1ZDk3ZjYyYSByZWxlYXNlMjItbWFpbnQKKzI4ODAyIDk4OGY0MjVkMTc2NjVlN2RjY2U1MDIwZmI5NDIxNTgxN2Q0Mzk5ODEgcmVsZWFzZTIyLW1haW50CisyODgwMyA0NjE3MGU1NjBlMDFlMThjN2QyYTgzOTM0ZDAxNWY4NzkxZDZhMjQ5IHJlbGVhc2UyMi1tYWludAorMjg4MDQgMWY5ZTk3OTgzMDJiZmZjMGIxNzFiOGFhYjg0MDEyODc3YWNiMWRjYSByZWxlYXNlMjItbWFpbnQKKzI4ODA1IDBmYmI3NmI1MDc0YjdlOTFmZjRjY2RiMmI0ZDM1MGViZmUxNTJhOWEgcmVsZWFzZTIyLW1haW50CisyODgwNiAzZjUwNDEyOTU0NDhjODZiZTViOWIwNjc4Yzg4OTgzM2Y1MmViN2FiIHJlbGVhc2UyMi1tYWludAorMjg4MDcgNTI1NWI0NWZkZGMyNTlhYjc4YjFkODJkOWRmZmY5MjNkYWYyNzNmZiBsZWdhY3ktdHJ1bmsKKzI4ODA4IGYzYzNlNzMyZDEyZTY5NGJlMWNjZjQ1MDJiZTNjMzc3N2RlY2ZiZTEgbGVnYWN5LXRydW5rCisyODgwOSA1MjQyMGZlNjdjOTY5MDA0N2RhM2M4MDk3OTExODI1ZWUzNDVhZTNmIGxlZ2FjeS10cnVuaworMjg4MTAgYzYzMTIzNjBjODYxNzFmZGNhOWVkMjI3ZDBlZjA3MzYxNzdmODk2YyByZWxlYXNlMjItbWFpbnQKKzI4ODExIDM3ZDg4YjQyZWQxMWE4YTA5MjM3OWRjOGMzMmY2ZTI3ZjE2YTI2MWYgcmVsZWFzZTIyLW1haW50CisyODgxMiA2NTEzNDY2YmI3NzQ3YTA3MzRmOWZmYzdhMjc1Y2IyYjg2NjdlYWFiIHJlbGVhc2UyMi1tYWludAorMjg4MTMgMGI2OGQ4MTBhOGJlY2YyYjg3Nzk4YzQyMDE0NDYzZDkzY2FkNzMyYiByZWxlYXNlMjItbWFpbnQKKzI4ODE0IDlkZDIxYzFmYWQ5YTQwMDcwMzAwOTExNGQwOTc4ZDk4YTI2N2RmOWQgcmVsZWFzZTIyLW1haW50CisyODgxNSA3ODZlMGU5YTVmN2Y5MjgyN2UyZDU3ZGNlMWVlYjBjMWFhODU3OTAwIHJlbGVhc2UyMi1tYWludAorMjg4MTYgMTE2YjA4NThkNGIwYmRiMDI0NGRmNGRhMzJhMTEzMzgzYTIxZmQ3ZCByZWxlYXNlMjItbWFpbnQKKzI4ODE3IDY1MWFiY2Y2M2ZlMTNkM2UyNmYwODgzODg3MGNjMTYwODIwODYwYTIgcmVsZWFzZTIyLW1haW50CisyODgxOCAyYmZlNDRjNGRhY2JmMzc4ZDQyODU5NjZlMDAyZmM3OGRmMmQ5YTIyIHJlbGVhc2UyMi1tYWludAorMjg4MTkgY2FhM2EyZmM2YTIwODY1OWRiMTU4MjAzODE0MTg0YTdlYjY1NmFjZSBsZWdhY3ktdHJ1bmsKKzI4ODIwIGMwNjZkYzNlYTE1MjE2OThlNmMwY2JiYTQzNWRhY2NlNWRhNjkzNDUgcmVsZWFzZTIyLW1haW50CisyODgyMSBlODRkMzI0YWM2NmE0ODg2NWM0OGZjMjJmODc4Yjg5NzllNDFiYmIxIHJlbGVhc2UyMi1tYWludAorMjg4MjIgNGRmMGU2OTFmNGRhZTg2YjA3Y2VlZDI1MzM4ZmZmMWY1OGNiZGQxMyBsZWdhY3ktdHJ1bmsKKzI4ODIzIDJkY2JiYmIwMDdjMmFiNzdjMGRlZTk5YWQ1OWY2YzBjYmE0OTE0YjEgcmVsZWFzZTIyLW1haW50CisyODgyNCA0ZDEwYzMxNzllYWQwZjU2MjgxMzYwNWVjM2IzMjhhN2YzNzYzYmRmIHJlbGVhc2UyMi1tYWludAorMjg4MjUgZmJjODIwZDcwMWJjYTk4Y2JjNDA0ZmZmYWE1MDQ5M2I4MzMxNzVkOCByZWxlYXNlMjItbWFpbnQKKzI4ODI2IDVlNGU4YzFhYjcwNDAwMTMxMmUwNzkyMWEwYTBmNDEzN2IyNjAxMzYgcmVsZWFzZTIyLW1haW50CisyODgyNyA0ZGY4MDdhZGZmODczZDUwYjEzYWEzYzliZTM3YjQ4MGJhNWM2MWM5IHJlbGVhc2UyMi1tYWludAorMjg4MjggMTA3NjdhOGMyZTJkNjVjZDllMzViMjFiMDI0MTlmYTMxZTE1NTA5NCByZWxlYXNlMjItbWFpbnQKKzI4ODI5IDBjNDRmYTA0ZjUzMzVlZmRkOGUzMzAyZjhmZDFlYTNiNDJhZDI0MzAgcmVsZWFzZTIyLW1haW50CisyODgzMCBlNTM3ODdiMWFkODU4MTgwNmMyNWVhNmFjNGFiODk4YTEwMDgyODgwIHJlbGVhc2UyMi1tYWludAorMjg4MzEgNzI1Zjg3NTk3YWQ5ZTI3Y2M0NzhiMWVlMjUxZDY4YTM0MGQ3Zjg1YyByZWxlYXNlMjItbWFpbnQKKzI4ODMyIGU4ODkxZTY5NTJlYjYwMTVjYzA2MDA4ZmRjN2I3MDdlN2ZjNjg2YjcgcmVsZWFzZTIyLW1haW50CisyODgzMyA0NjJjMzViOWFjMWZhNGE0NjI1YzAxZTdhOTNjODY2YTQzYTA0MzYyIHJlbGVhc2UyMi1tYWludAorMjg4MzQgODBjZTM4NGQ0MDhhNmY5ZTk0NmUzOWIyOTE1ZWExMzdkNWNhY2E3OSByZWxlYXNlMjItbWFpbnQKKzI4ODM1IDkxMTEwNzgyOTkwM2I4YWUzMGI3MjMwN2Q1OTM4NDE3YTVkYTk2MjcgbGVnYWN5LXRydW5rCisyODgzNiBlNWUwNTdhNmQyODFmMzE1ZmQyYTcwOTQ2MWQyZTFhNmYwZmNjMDNkIHJlbGVhc2UyMi1tYWludAorMjg4MzcgZGUyMWU5M2JhZGY2MzY1ODMzYzZmNzkzZWE0ZTZiYTgwMjZjZjFmOSByZWxlYXNlMjItbWFpbnQKKzI4ODM4IDc5MjlkNzU2NmE5NDI4OTE5NzgwMTQ5YTliZjQ4YTY1NjcyOWJjZmEgcmVsZWFzZTIyLW1haW50CisyODgzOSBiYjIwMzNjOGI5MmZkZGM0MTllM2YxOWIyN2QwODZkN2M0Y2VjNjRlIHJlbGVhc2UyMi1tYWludAorMjg4NDAgZjU1OWU5N2E0MWJlNGQwYjQ2ZDk3YWYxZTc1OGVjZjQ2NmNkOTRlMiBsZWdhY3ktdHJ1bmsKKzI4ODQxIDMwYmY1NTQ5MWU3OWVkZDk2OThhZDM4YzlhNDNiMjVmMTU4MjcxNmMgcmVsZWFzZTIyLW1haW50CisyODg0MiA5Y2E2MDlmOGJkZjIyNjE3YzQ3ODZjZGU3MzMwNjNjMGJhN2I2YjE5IGxlZ2FjeS10cnVuaworMjg4NDMgODhkMGY2ZDZiMDNlYzFiYTU5ZjBiMjAzMTQzY2E0ZDUyZTFlZTFkYSByZWxlYXNlMjItbWFpbnQKKzI4ODQ0IGI0NmM3ZGEwNjQxMGU3MWY5N2M0OTc3M2EyZGU3ZjMzNzcwN2Y0NTQgcmVsZWFzZTIyLW1haW50CisyODg0NSBkYzMxNjY4YTdjMDlkY2JiMTU3Mjc5M2RlM2NjYWYwZTkyN2IzZGZjIGxlZ2FjeS10cnVuaworMjg4NDYgOTc0MjRiOTlkZjkxYzU4ZjIxNTE2MzUwMTcxMjMyNTIxMjBjMTcyOSBsZWdhY3ktdHJ1bmsKKzI4ODQ3IGQ0ZmY5ODQxNDE3YWUwNmYyNTJmMzllZTMyNmNmZjM4Y2IzOTg3NWYgbGVnYWN5LXRydW5rCisyODg0OCAwMjI2ZjE2NTZkODE1MWY3OGFmZDkzNDhiOGZmNjcyMjRhOGYzZDFjIHJlbGVhc2UyMi1tYWludAorMjg4NDkgNzEwMzU0ODMzYmQxOTgwOThmNTY2YWU0NTBmZTRkODUxOTlmMDBiMyByZWxlYXNlMjItbWFpbnQKKzI4ODUwIDUxY2RmNDcwZjk3NDQwOWY1YjAxN2JiZjFlNmFkM2I0MmNjMjBmMmUgcmVsZWFzZTIyLW1haW50CisyODg1MSA3NWM0YTY3ZGNiOGMzNjAzMjFhYmI1MWZjNmI0Mjg1MGM5OWY2Mjg4IGxlZ2FjeS10cnVuaworMjg4NTIgNDEwZjZlYWJiYzBiODg0NGEwYTFmMjBmZjRjMWNjYWFhOGQ4NzkwNiByZWxlYXNlMjItbWFpbnQKKzI4ODUzIDZmYzBiNzE2YzAzODlhMDhkMzcxZTI0MmYwOTQ0N2M0YjE5MmQ2NjYgcmVsZWFzZTIyLW1haW50CisyODg1NCA0MDgwMWRmODU5MTIxYTRlNjBhMDk3OGY2NDE4MjQ3NDZkYzg4YmVlIHJlbGVhc2UyMi1tYWludAorMjg4NTUgYjQ4YTIzNmI4YzdiNzdkODEwYmE4MDViNDY0YjM0YmI0OTNjMjBjZiBsZWdhY3ktdHJ1bmsKKzI4ODU2IGQ5MzVhMWQ3MDIzMGI5MThmZTYyZTlmMDg4ODg1MjI1MTkxYmRiNDEgbGVnYWN5LXRydW5rCisyODg1NyA0ZDdlOWU0MGQzZTRhYzk4MjcxZmQyZjRmZTZkMjMwYzI2ZGUyYjViIHJlbGVhc2UyMi1tYWludAorMjg4NTggZDJkYmVhMTdmYzZmZThjMGQwNjk4M2Y5ZDE5NTY0MDRiMTE2MjgwNyBsZWdhY3ktdHJ1bmsKKzI4ODU5IDk0MzE1YTk3YjM5ZTY2ZWNjNWMxNTAyZTUzNDE4ZDJkZWVlYzc2MWEgcmVsZWFzZTIyLW1haW50CisyODg2MCA3ZDBjNGQ3ZTBhOGM3MTkxZDJiODk4ZTY2ZGM3MGNlYTcyZjE0YzY2IHJlbGVhc2UyMi1tYWludAorMjg4NjEgNDVhMjE0ZjFiZjBiNDU0YWZmOTNjODc3MDlhYTIxMDVjOTk2ZGMzNyByZWxlYXNlMjItbWFpbnQKKzI4ODYyIDgzMjA4NGEzMDI4MDk2YzM3ZTBlZWY3OGY1ZjJhOWE1OTFmYzg3ZjUgbGVnYWN5LXRydW5rCisyODg2MyAwNDg5NjhjYTI2NjhkNDIzNTIyNTA1MjBiNWQ3ZDU3N2E3YmNjMmZjIHJlbGVhc2UyMi1tYWludAorMjg4NjQgMjUzZTM5N2RmNjdiMWUzNzQzZjkxY2U2OTNmNDA3ZWEzMDQ4ZGViMiBsZWdhY3ktdHJ1bmsKKzI4ODY1IDBhMDk1YTI1NzQyNDUwMDM5MmRjZGNhZjc0ZTNmNzZmZmM4MDAyMTEgcmVsZWFzZTIyLW1haW50CisyODg2NiAxODQ5ZTIzNTUyZGZiYzFlMTZhOWMzOGZlZWY5NGMwZGZlNDZkYTZiIGxlZ2FjeS10cnVuaworMjg4NjcgNTZjYjkyZGJiYWFmYzA1YmRlZWMxMDM0MzUzZGIzNmU2MTg5NGJkMCBsZWdhY3ktdHJ1bmsKKzI4ODY4IGFhMzA0OGViZDE5YTBhNWE2ZDg0OTA4ZjNhMTg0NDMzNmJhYzhmNjcgcmVsZWFzZTIyLW1haW50CisyODg2OSBmNzQ5ZDUwZGNjZGM1ZWJmZTUwNDlhOTJhNDEzYjVjMzdlZmJmMGYwIHJlbGVhc2UyMi1tYWludAorMjg4NzAgOTFiNGY3YWJlYmE4ZDU1MmNiMjJiOWIwZmUwYWViNGRlZTViNWRhYSByZWxlYXNlMjItbWFpbnQKKzI4ODcxIGZiMGY3Y2M1YTY5ZjZiZjRhNTZmYTg5N2NkODNhMmJhMDM4MGZjMDIgbGVnYWN5LXRydW5rCisyODg3MiA2MjM3YmUyN2E1OTczNWJmNmU3MDIxNmUwZTk0ZmJjYWM3NDY3YjE0IGxlZ2FjeS10cnVuaworMjg4NzMgNTU0Zjk3NTA3M2EwMzgwZWY3MTg5NWM2YmE4YjhkN2QzMjAyYjU5YyByZWxlYXNlMjItbWFpbnQKKzI4ODc0IDI5ZjYxNjBlYzBiZDkzYzgwOWE0MzRlYzIyNGJkM2YxM2M0MjBiZmMgbGVnYWN5LXRydW5rCisyODg3NSBmZTYyMTFiZjkwYmI4ZjU0OThkNjk2ZTI3MjAxZmQ5ZGJiNGQ4NTYwIHJlbGVhc2UyMi1tYWludAorMjg4NzYgYzZmMzA3MmQ1OTVkNTRmNTEzMTI3NmFjZDY4NmE5MzYwOWVlZjU4ZCBsZWdhY3ktdHJ1bmsKKzI4ODc3IGViMjUyYjM3NGVjZmM4NWU2Yjc3MmVkZWIyNTg5MTgyYmJmN2ZmYTAgcmVsZWFzZTIyLW1haW50CisyODg3OCAxZjliM2NiNjZlMDk4ZTAzYzRkYWEyMmZlYmY4N2U1ZTlhZDNjN2NjIGxlZ2FjeS10cnVuaworMjg4NzkgMTEwODhjNTM0NjdhMTc2OGQ2YWI5YjQ0NmQyMjg4M2VhYTk3OTVjMSByZWxlYXNlMjItbWFpbnQKKzI4ODgwIDcyZDU2YjQ0NjBjYjlkZjNjYTUxOWQ3NTEzMTAwYWNjYjRiZWU0YWYgbGVnYWN5LXRydW5rCisyODg4MSBiNjI1MTRjMjE3NjI5ZTIwM2U0M2E2Y2U2ZmIzZTJiZTNiZWRmM2ViIGxlZ2FjeS10cnVuaworMjg4ODIgM2MzYjg5NDZkYzYzYzVkYjY5MjhhNWNjNzY3MTA1YjcwYjkyMjQ4MyBsZWdhY3ktdHJ1bmsKKzI4ODgzIDBjNzc5NDkyY2Q4MDc3ODg5ZjkzNTcxZjJkZTlkYzZhN2NmZDY0MDAgcmVsZWFzZTIyLW1haW50CisyODg4NCA4NTQ1MzRjNjA3YTE2Y2Q0ZGZhOTQwNWI1MzYwMzMwMTY5YWY3ZGYyIGxlZ2FjeS10cnVuaworMjg4ODUgZGZiNzRkNjExODNkNzM3ODkwMjA5ZmMzZGFjMDU2ZDU5MTU4NGQzZSByZWxlYXNlMjItbWFpbnQKKzI4ODg2IGNkODM3ZWNiMWQ3MDk1M2U1YTVhYTg2OGFlY2IyOThkZTlhMGZmNGYgcmVsZWFzZTIyLW1haW50CisyODg4NyBiZGUwZDI2MjZiMjA1ZGNiMzg2NTFhNDhmZTI5OTJmOTk2OGJmNmQzIHJlbGVhc2UyMi1tYWludAorMjg4ODggZDMyNTg4Yzg4NjMzMjk0NjhjYzRmNmQ5OTc1OGNiZDVlOTkwM2M0NCBsZWdhY3ktdHJ1bmsKKzI4ODg5IDg5ODMwNGY2ZGEyM2I1Yzk3MTVjNWMwZmJjYTY3YTAwNTE1MWY4OWIgcmVsZWFzZTIyLW1haW50CisyODg5MCBiNjExMjMyNzEyNGI0NmEyNzQxZWUwNWVmNWQ0NjY5NGZlNzFiOGI0IGxlZ2FjeS10cnVuaworMjg4OTEgYWEzMWM2OGRhODRkZjZmMjhkNzdlZGVmOGIyZTdkNjc0ZDU2N2M2ZCByZWxlYXNlMjItbWFpbnQKKzI4ODkyIGRiNWYxZGI3YjM0ZTE4YzRiYTZiNTdmN2UzMDVmNjcyN2VmMjRjZDggbGVnYWN5LXRydW5rCisyODg5MyA5YmEwMTExMzg4MzE4YTRjM2JmMGJlZjY4NGY2NTVhYzA0ODUwNWE4IHJlbGVhc2UyMi1tYWludAorMjg4OTQgZThjZGVhNDRmN2FiY2VjNmExNTgzNjU4ZDQyMTU4ODJiMWM3NGUyZiBsZWdhY3ktdHJ1bmsKKzI4ODk1IDZhMmRmNDRiOGJmZDQ5NmZhZTA3NTFlOWIwZjAzYjljNDcyY2FlYzAgbGVnYWN5LXRydW5rCisyODg5NiA3Y2Q2ZjU0OTA3NThjNjNiNjE2ODMwNzY5ZjVkNjFjN2IzMzlmYjIzIGxlZ2FjeS10cnVuaworMjg4OTcgZjgxODBhNzRiMGZhNWM2ZWM3NWI1ZDYzNDAyZjhkNzc1ODdmZjJiZCByZWxlYXNlMjItbWFpbnQKKzI4ODk4IDA1ZmZlMjAxZTkwMmQ4MGY4ODcwM2EwM2E3YjMyMjc3Y2IzNjgyOTMgcmVsZWFzZTIyLW1haW50CisyODg5OSAyZWI0ZWVkNTM4YzZkM2VmZDVkYTJjNWY1MDFkZmMxYjNlODJlOGRjIGxlZ2FjeS10cnVuaworMjg5MDAgZDBhYWQ1MTllNzEzMGRhM2QwMTIyYmMyM2QyYjJiN2M0MTkyNTFkNiByZWxlYXNlMjItbWFpbnQKKzI4OTAxIDRkMzY3ODcyZmNjNjY1YmZjMjRmZTZhYzE5ZTk1M2ZmZjk5ZGNiNmEgbGVnYWN5LXRydW5rCisyODkwMiA3NmNjZDViZjlmZjI2MjlmZTQzYjE1NDQ1MmQ2M2NlMDVlYzY1MGQ2IHJlbGVhc2UyMi1tYWludAorMjg5MDMgNDFlYjI0Yjc0N2MwMmNkY2Y1YTkwMmIwZWM2MDI4ZmU1NDg2ZDBkNCBsZWdhY3ktdHJ1bmsKKzI4OTA0IGRjYWZkOTljODViNjhhODgzMDczOTEyOTQ1MTBhODI4YWI1NWU4YWQgbGVnYWN5LXRydW5rCisyODkwNSBhNzcyNTRjYmQ0ZjA2YjFlODI1Yjk1YTVhYmI5NjA2ZGM1NzI1ZjRkIHJlbGVhc2UyMi1tYWludAorMjg5MDYgZDA3ZjhkYjNkYjQxZTRiOTQ5NzgyYTYwY2JkMzczMzM4MTUzNWQ2NiBsZWdhY3ktdHJ1bmsKKzI4OTA3IGI1YTlhYWM0YjEwZmZmNzgzYzk0NGU4OGU4MjNlMDRlYzc4NzE4MjMgbGVnYWN5LXRydW5rCisyODkwOCAwOTU1MWM2ZGEyOTlmODE4Y2I5ZmRmZjcxZDJiODZiYzE4NGJlMmE2IGxlZ2FjeS10cnVuaworMjg5MDkgMTZlNjYxOTcwOTMwNzBjODg3NmI2ZWU3OTU5NjBmNTA4NTAyNjdhMCBsZWdhY3ktdHJ1bmsKKzI4OTEwIDFkOTFlZGZkNzVmMmI0NWQ2ZTRlODljM2FlN2RmYWU2NGYxMjcxNTUgcmVsZWFzZTIyLW1haW50CisyODkxMSA0ZGE4YTRkZTA3YzIzM2QwN2IzZGMwN2YwMDQ1NjE5NGEyZDM2MWQ1IGFzdC1icmFuY2gKKzI4OTEyIDI4MzBmOTYxNDI5NDA1ZmNjYWU3ODE1NzVlNzA5MDgwMTY0Yzg1ZGIgYXN0LWJyYW5jaAorMjg5MTMgZDhmNDk4MGI5NjVjZWJhMDFhOTI0ODlhMzJkOWEyMDI1Zjk4YjhiYiBhc3QtYnJhbmNoCisyODkxNCBkZmY0OGM0MTc5ODAyMTRkZTViNjEyODNkYWI2ZGY5NDJjN2RhMGU5IGxlZ2FjeS10cnVuaworMjg5MTUgOTY5NjBkNjczOWUwOTcyYzllZjBmZTlhOWMyM2M5MTUxMzg3ZDFjMyBsZWdhY3ktdHJ1bmsKKzI4OTE2IDFmMmIxZTY4NDg1MDM2YjgzNDNkODg2NGM3OTE1YmRiMDhhZTRiNGMgbGVnYWN5LXRydW5rCisyODkxNyA3ODQzYjUzMDA5ZDA2OTIyOWVjOGU2MzdhZGU3OGE1Mzk0OGE4ODQ0IGxlZ2FjeS10cnVuaworMjg5MTggYjY4NmRkYjI1YzY5YjRiNjYxZWUzMGRkNDdiZmQ5OTYyYmQyNGE2ZSBsZWdhY3ktdHJ1bmsKKzI4OTE5IDU1ZjA5MGIzOGI4OGQzOGYzMzgzZjZkYTdmOWRmOWE1OTBmMzVkMGMgbGVnYWN5LXRydW5rCisyODkyMCAwZmJiZTc5YjRlZGI1YjBhNGViZDU5MTNjZGY0OGMyMjQ1ZTJlZGY0IGxlZ2FjeS10cnVuaworMjg5MjEgMThlNjc5YmUyMTE5MzY4OWE3ZDYzMmY2MmM0MjQ5Nzk2ZWZhODliMiBsZWdhY3ktdHJ1bmsKKzI4OTIyIDhhNmVlYjBjNzkzNDE0NGU2ZTZiZWU3NDE3ZjY4NzE4MDhmYTc5ZmMgbGVnYWN5LXRydW5rCisyODkyMyAyYTc2M2U3YjdkZWJkMDdkY2M1YmRhYzQ3NTY1MTNjNDdlMzM0OGNmIGxlZ2FjeS10cnVuaworMjg5MjQgMjU2NTRiODExNjE2YjBmMDU3YWU5MGVmMWM2M2JmNjc3MjVlZDkwOCBsZWdhY3ktdHJ1bmsKKzI4OTI1IDU3ZWMxNjQzMTg4YzkwMzFmY2E2NWNlZWI4YWE1M2E4MzdiOWRmOWYgbGVnYWN5LXRydW5rCisyODkyNiBlMmY2NWE0OWNhMzQzZTE5MTVlNmY2NzI4NzVmMTRlMzYzMWMzMjExIGxlZ2FjeS10cnVuaworMjg5MjcgN2QyNjliYzEyNTg3ZGQ1NzM3MzFlMTI2NWE2Yzk5MDczNmVjZDcxYiBsZWdhY3ktdHJ1bmsKKzI4OTI4IDhjOTU0ODYzMDFiM2Y3NDljNmNjNThjODlhNTBmZjZjNmEyY2E1MTIgbGVnYWN5LXRydW5rCisyODkyOSBiYmY4Y2Y1ZWU5Zjk0MjI4NGViNjkzZGMzOTEwNjdlOWRiMGYxNzY2IGxlZ2FjeS10cnVuaworMjg5MzAgOWQ1MGJjODMxYmNhMDRjNmI2YjkxNmNmNGMzYzM0ODRhZDI0MWRkMiBsZWdhY3ktdHJ1bmsKKzI4OTMxIDIxNDQ0YmRjYjA5YzA0ODkxZDA2ODdlZmU2OWMxOTczN2Q2NzkyNGUgbGVnYWN5LXRydW5rCisyODkzMiA4MGY2NzM4NWY1OTlkYzE3MzNhMTc5ZDkxODViMjA5OTExYWNiMmNiIHJlbGVhc2UyMi1tYWludAorMjg5MzMgZmM1MzRkMWM5YzI4Mzk2N2ExYTkxODc1YzJkYzVjMDU3MWQ5YWQxMSByZWxlYXNlMjItbWFpbnQKKzI4OTM0IGNhYzFiMDM0YjkwMzc2YmE5ZGJjZjM4ZWVhMDY4MWQzMjM2MGE0ZjEgcmVsZWFzZTIyLW1haW50CisyODkzNSBlNDc1MmYzMTYwNTNmYTM2OGJmYTBjOThlMDM2MGVmMGM5MjhjM2FhIHJlbGVhc2UyMi1tYWludAorMjg5MzYgY2U3YmJmM2Q5NDkzNTIxMzI4NjIwMTQwMzYxYjFlODVkM2I2ODQ5MSBsZWdhY3ktdHJ1bmsKKzI4OTM3IDg3N2EzOTE0ZGYyMjQzODRjNjk0MDdkMGNhY2I3MDczYjU2YjFhYTggcmVsZWFzZTIyLW1haW50CisyODkzOCA3NjZiZmM5M2VjYmE2NmI2ZDY2ZDI2NDM4MDgzZjk2NzY0Y2EzYjdiIHJlbGVhc2UyMi1tYWludAorMjg5MzkgNzViMDhlNmU5N2M2MGQ2ZWIxZWRlNzlmZTEzMjdhMjk5NDliZjBkNiByZWxlYXNlMjItbWFpbnQKKzI4OTQwIDIwZDdhNTQ1NTkwNzgzYjQ3NzYzN2Q5YjViYTczMjAyNGU4ZDQ4YzggbGVnYWN5LXRydW5rCisyODk0MSA2ZDU4NzE1NDMwYTdiYjgwNDRkNWZiY2FkNmUzOWRhMjUzNGY1M2JjIGxlZ2FjeS10cnVuaworMjg5NDIgMmFjN2IwOTY0YzdiYTk3NjczMzlhYzFhMjBhYmVlMjE0ZTc3YjMzZCBsZWdhY3ktdHJ1bmsKKzI4OTQzIDRlMDVhYWI2MGJkZmFhNWZjN2M0YTE5MTMzZjNlYjQ1NmZjOTJhNDEgbGVnYWN5LXRydW5rCisyODk0NCBjM2VlYWFmZTYyNjVlM2I0NWI0OGM4MDM5N2Y3OGI5MTBmZjM1MTA2IGxlZ2FjeS10cnVuaworMjg5NDUgNWY1ZmQyYzRmY2YyMjdlOGEzNzBhYzEwYjEwYWFlODczMWQ4MjlmOSByZWxlYXNlMjItbWFpbnQKKzI4OTQ2IGQwZTU3NDMyNmQxOGIzYjM4YmFjMmYyMzRhYTI0NDhiZjM5N2M4YmUgcmVsZWFzZTIyLW1haW50CisyODk0NyBiNTI2ZTEyYjk0MWI3ZmRiNmVhMTFlM2VhMGRmMDRlMmIwMDIxMGY3IGxlZ2FjeS10cnVuaworMjg5NDggYzU3Mzg0OGM3NWMzMzJhYmE5YjdjMjAxMzlmMmY2ZmU5ZTFkMDNjZiBsZWdhY3ktdHJ1bmsKKzI4OTQ5IDBhYTY0ZWViZDQ5MzJjZjljNjUzMTZkMWFhNzFkYjIzOTRlMjg4MzUgbGVnYWN5LXRydW5rCisyODk1MCBkZWE2MTliNTg4MmQwYzk2NDVlY2Y3ZmZiMzUzNDcwNGZhZjcwODgxIGFzdC1icmFuY2gKKzI4OTUxIDE5NTgzM2EzZjEwZGFmMGQyYjcyM2QxYTk3MjBmODY4Mzg1MzI4MjIgYXN0LWJyYW5jaAorMjg5NTIgYzQ2MjhkOWFjYzlhMTU3MGQ1MDRkYWQ4ZTkxMDQ2MmI1Y2NkM2JjYyBsZWdhY3ktdHJ1bmsKKzI4OTUzIGRiOWZlZTM3M2IzMDNiMDBkYjhlYzk5YWFiZjQ2ODRjMGIxZDJhMGEgbGVnYWN5LXRydW5rCisyODk1NCA3NDI5ZjIyNDczY2M3YzA0YzQzZDk2Mzg2M2ZjODdmYmFlZTkzM2Q5IGFzdC1icmFuY2gKKzI4OTU1IDU2ZGQ4NmI0Y2I4Nzc3ZTE3ZjM1NWIzOTJhYzhhMjQ0ZGRiZTJiY2MgbGVnYWN5LXRydW5rCisyODk1NiAyYzk4ZWIxYzMxNjJkOGZkZGQ1NzFhODQ5Y2ExNTBkNDI5ZjJhNTFhIGFzdC1icmFuY2gKKzI4OTU3IDI3ZjgzNTUxOWE1ZTdkZWJlODdlMzc5NjE5ZjVhZTc1ZWFhMjlkNzUgbGVnYWN5LXRydW5rCisyODk1OCA5MTY3NDkwYjBkZTk0YmMyMzBjNWRhZGY5ZDZlNWU4NzZiMGU4OThkIGxlZ2FjeS10cnVuaworMjg5NTkgMmJjMmUwMmZkNmRkMTJkYjQ1ZWUyNDRiZjI2ZDBkOTU4NzJiZjVjOSBhc3QtYnJhbmNoCisyODk2MCA0NTU3N2UxODU2ZDBlOTM4NjQ5Y2ZkNDI0YWFmYTZkYTRiNmIwMzQ0IGFzdC1icmFuY2gKKzI4OTYxIDdmZDJkYTIwMTgyM2QxY2U3ZGRjNTYwOTNkMDMwYjNiZmViOGUxYjQgYXN0LWJyYW5jaAorMjg5NjIgMjRjNWExYzg3ZjNiZjEyMjllNTA2Zjg3NTkzZDRjMWIxMzg1NTk1NyBsZWdhY3ktdHJ1bmsKKzI4OTYzIDY2OTRmMGNjZjhlYTRiZTc1Njc0ZjE1NzIwYmMzNDYyZTYwMDRmNmEgbGVnYWN5LXRydW5rCisyODk2NCBiYzA5Nzg0NTlmZmI3ODBjZjM4MzZkNDdkNzQ0YTVmNWY2MzczZjhhIGxlZ2FjeS10cnVuaworMjg5NjUgYjNhOThlZWEzNGM4NDFjMjNmOGM3MzY0ZWFjYmYwYjA0YWNkNTIyMyBsZWdhY3ktdHJ1bmsKKzI4OTY2IDJkODBiZjY1Y2QwOTc5ZDkwMmE0MzdjYTQyYTg3YTNmYmI1NGRjZmUgbGVnYWN5LXRydW5rCisyODk2NyBlMWE3MzI4ODViZTA5NjE1OGU2ZjRmNTBmZDg5MGUyNGQ1YTliYzg2IGxlZ2FjeS10cnVuaworMjg5NjggZDFiNmIyY2E5ZDliODUxZDIzNjQ5MjJjYzAwYzM4YmQ0OGM2YmU0ZCBsZWdhY3ktdHJ1bmsKKzI4OTY5IGQxMjRmYjA4Nzc3ODU1ZGZmMmE3NTc4ZDI5MWM4ODY2YmQ3Njc0ZTkgbGVnYWN5LXRydW5rCisyODk3MCBiZDA0ZTJiZDQzN2ZjNWQzOWRkMmU2Mjc0MGEzOGU5NzFlYmJkODEwIGxlZ2FjeS10cnVuaworMjg5NzEgNTlmODJkOTY2ODJlOWE4MDg1ZGM0ZGQ3ZTEwZGY4MzE1NmYxYmY1YyBsZWdhY3ktdHJ1bmsKKzI4OTcyIDM3N2Q2NGNiNTM0NzBiMDY2MjliZWRkYTEzODA5NDM1N2IzMTRiMzEgbGVnYWN5LXRydW5rCisyODk3MyBkNzIyYmI1MjA1YWQ3MDI5ZGRiMTZmNTA1MmMwYzgxNWZhMWJjY2I3IGxlZ2FjeS10cnVuaworMjg5NzQgNDA1OTRlZjM0YjMwOWM0ZWRlMzExNGM4NzBkYmU0MmExMDk5ODc4ZSBsZWdhY3ktdHJ1bmsKKzI4OTc1IGFlMmYyMzQ4ODJiMjE2ODYzZTI0NzkxMTUyMDQ4NGVkZmFjYjAxYjUgbGVnYWN5LXRydW5rCisyODk3NiBhMzY0N2QxMWNiNzEzNDc5MDlhOTVlZDEwZWUyNGVjYTQ2MDg0ZTQ4IGxlZ2FjeS10cnVuaworMjg5NzcgNThiZmE3ZGRjOTk5YWM5NjQyZWY4ZmE2NjgyYjI2ODE2ZGQ0MzhhMCBsZWdhY3ktdHJ1bmsKKzI4OTc4IGI1ZDA1ZjEwZDBhNWJjMmMzNDg5MTNmMmZlYWJjMTJkMGU1NTVlMGIgbGVnYWN5LXRydW5rCisyODk3OSAxZWE2ZTM1NDc2MTAzODBmODgwNjBlMWM5MDMwZWI4Y2IzZjYxYzlhIGxlZ2FjeS10cnVuaworMjg5ODAgMzBlZTk5YThiMGFlMzVhOWI4Y2IxZjczMjJlMGJlYmJhZGY2MWMzZiBsZWdhY3ktdHJ1bmsKKzI4OTgxIGMxMmE0ZjdhMDBiNzRhZjE5ZjUxMGI1NmU3YWM1NGE2NzBlZDY0YjQgbGVnYWN5LXRydW5rCisyODk4MiAyZTE0MDcwMGZiNmMwYzUzYmFmNDAxMWNlYjZjOTUxYWMzNjUyNTU1IGxlZ2FjeS10cnVuaworMjg5ODMgZDdiYmE3ZWIwZWFkMGM3MTNmMTI3NGQ1ZDhlNWVkYWUwMTgzNWY2MiBsZWdhY3ktdHJ1bmsKKzI4OTg1IDU0MjA5NjlkZGQ3MGJhODViYjJhYTQ1MWU4ZTczMThlMjgzODg1NWUgbGVnYWN5LXRydW5rCisyODk4NiA2MzZjMGY4YjM5ODc5MzY4OTQ0YjI3YWQ0NDM5ODkyOGQyMDI5YTExIGxlZ2FjeS10cnVuaworMjg5ODcgMTk1ZDJmMjU3NmU0MmNhNDg2ZGEzZWM2ZmMxNGYxNTc4YWRiZDRjMiBsZWdhY3ktdHJ1bmsKKzI4OTg4IDExNTczNmRkZWQ3ZDA4Y2U0OGE2YWY1ZTU2OWE1YzdmOWExM2NiODEgYXN0LWJyYW5jaAorMjg5ODkgYjkyMzNlY2Q5ZDQxOTQ3MzIzZjcwMWJjMTBmZDE3NzJlOWViN2I1ZiBhc3QtYnJhbmNoCisyODk5MCA3MGQ5M2I2MjM3MGI3YmJhOTQ5NTJhZDExYjU2ZmRhNDhkMTNkOGE2IGxlZ2FjeS10cnVuaworMjg5OTEgYjk2YjgyNjRkNmFkMmZmZDllMjE4M2U4YWQ0NTA3OTkzMTk2NjYyMCBhc3QtYnJhbmNoCisyODk5MiA5ZTgxNWYyYzBlODRmMDM3NDlmOTIxNDYzODgyZTNiYzZiOWExOGRiIGFzdC1icmFuY2gKKzI4OTkzIDEwOTRjNmUwMzY1ZTViMDU3MGNhODUyYzIyOTJlNWNhNzJmZGVmMjggYXN0LWJyYW5jaAorMjg5OTQgZmU5NWNmYzZlYmE3ZGMzNGQ1NTk1Yzg3MDNjNjQ4MTVjNmZiMjUwMSBhc3QtYnJhbmNoCisyODk5NSA4ZTRjYWJiMmUwMDNkMjliOWE5ZGM2NGE4ZTMyZTJkNmE5ODcxOTQ2IHJlbGVhc2UyMi1tYWludAorMjg5OTYgY2EwMWY0Yjg1ODUzZTQ0YjM2ZjQyNGMxM2E0MzY5NDVkYzY4ODk0ZCBsZWdhY3ktdHJ1bmsKKzI4OTk3IDc1ZTVhMmE3MTcyOTVhYzIwOWQ0NTI2YjdlOTA3Mzc5MGRkMjFhMjkgcmVsZWFzZTIyLW1haW50CisyODk5OCAwODE0OGU5MTZkMzg1MWYyOGI3ZTc5OWY3ZWZlYTVmMjc3YjJlNWNkIGxlZ2FjeS10cnVuaworMjg5OTkgODYxMDY1MjU2NDg3MGE4MzBiOTdjYjRkYzgwZTQwZGVhZWI4NmM5NiBsZWdhY3ktdHJ1bmsKKzI5MDAwIDkzZWY3NDU1NTVkN2MwYjUyMjQ1YzMyYTBmNDcxNjcyYjhjNDQxYTcgbGVnYWN5LXRydW5rCisyOTAwMSA2MWQ2MjRmNWMxMDdhN2U4NzczNWMwNzk2MzZiMGU4MDNlOGVhZGU3IGxlZ2FjeS10cnVuaworMjkwMDIgMmMwZTBmMGRjYTZmNTEyZjQ1ZGYyMmJiNjIyOGE5YTdjZTI1MTVhYiBsZWdhY3ktdHJ1bmsKKzI5MDAzIDVmZTA3Y2Q0YjJiZmQ3MTE0NTIxNDg2NzIyNzRjNDc1MDQyNTFkZWIgbGVnYWN5LXRydW5rCisyOTAwNCAyZGMwZGE1MzcyYjQ3MDJiZTU1ZjI1NDA4ODdkZDI4YjBkMWUxZGNiIHJlbGVhc2UyMi1tYWludAorMjkwMDUgNDdhYTlmYzc0ZGE4Y2Y1MzBmYTBjNGRhZjNhOGU4NTI2YTI1NWI2MSByZWxlYXNlMjItbWFpbnQKKzI5MDA2IDk4ZTU4ZDNjNWZjZmE0ODlmZGNiNDA3Njg4ZDM3YzgzNmUyZmY2YjggbGVnYWN5LXRydW5rCisyOTAwNyBkZmVlYzNiMzRmYWVjMjQ1NWQ0MDU5Y2VmYzRkM2U0MTdkNmUyMjY0IGxlZ2FjeS10cnVuaworMjkwMDggMmZhNTU5ZmI2ZWM1MjI5OWI4NzE3MWU5YjhmMWUxNGRjZDgzYjgyOCBsZWdhY3ktdHJ1bmsKKzI5MDA5IDM3MzFiZTI4ZTFhMzI2NGM4OTRkMmI1YWRjYWJjZWZmOGEyN2VhM2UgbGVnYWN5LXRydW5rCisyOTAxMCBjN2I5ZGE4NTliNTVmODM2NTE4Y2I0YTQxMDdiMzFlZTM3YmY0ODM3IGxlZ2FjeS10cnVuaworMjkwMTEgNjE4MjJkMmI1ZTg4NmE3NWU0NzU2NjU0ZTA5N2U0Mjg1NDFlMmJkMSByZWxlYXNlMjItbWFpbnQKKzI5MDEyIDBlZDgyOTQ3NTcxNzQ4ZDAwNmM3YTlkYWZmMGJmMjc2MDQ0MzBmNjEgbGVnYWN5LXRydW5rCisyOTAxMyAwZTkyODgwNzUzNmMxNmEyMTMzOGQwNDg3NzMzYTQxZTYzN2UyZTFiIGxlZ2FjeS10cnVuaworMjkwMTQgMWRhNWUxN2JmZTYzYTIwODEzNGRkZDM4MDU1ZTU3ZWQ1NTY2NjA2MSBsZWdhY3ktdHJ1bmsKKzI5MDE1IDQxZTFkOGMyMjRkZjJlM2FhZTc4MTU4MjhlMTkyN2Y5MDk5OThlNzEgbGVnYWN5LXRydW5rCisyOTAxNiA1NTUyMzRkNGYwZDAwOTE0YzY4Y2ZhNTg1N2U4MGZkYWFmODY0N2MwIGxlZ2FjeS10cnVuaworMjkwMTcgZjYxZDFkMmI5Y2UzYjIyZGE0YTYyYjJkYTRlOTViOTNlNmY3ZDgyOSByZWxlYXNlMjItbWFpbnQKKzI5MDE4IDM2MTI0MTU3YjMxN2FkYmFiODM1ZmI2Mzk4MTg4ZDZhODhlZWUwYTQgbGVnYWN5LXRydW5rCisyOTAxOSA0ODgyOTVkMWJhMTFlYjIxNjc0NDRjZWFhZTU0OTEyYzFlYjY2N2M5IHJlbGVhc2UyMi1tYWludAorMjkwMjAgOGNiMDc0MGRhMWZkNTk5MmViZWEwNzU3YjVmOGNjYzRkNWM4NzRhOCBsZWdhY3ktdHJ1bmsKKzI5MDIxIGZjNzAyOTA4MTA5MzA2OGY0NzNmYjJhZWY2NDA2NjAxYjYwMWY0YWIgbGVnYWN5LXRydW5rCisyOTAyMiAxNGM0YzgzM2NkYTljYTRlNGVkZDcxZjFiN2JiNjc3OWY5YTk5YzFlIHJlbGVhc2UyMi1tYWludAorMjkwMjMgMTNmYjRkMTZmNjA0MmJhZTAyMzBlMDE3OTY3ODIzZjdkM2MxMDZkNSByZWxlYXNlMjItbWFpbnQKKzI5MDI0IGZiMGNlNzdhMzE4YWJkMzg0MGU1NDA4NmEyY2NmOGMyOTM3NTc4OGUgcmVsZWFzZTIyLW1haW50CisyOTAyNSAwNzA1Y2EyOWFiOTY2ZmQxMzJjNzAyMDY5MDg4MTMwM2U3NzE3MWFhIHJlbGVhc2UyMi1tYWludAorMjkwMjYgNDQ0NDdmMzE1YWU5MTE1ZDlkNGQxZGNhMzU2NTgzMGMzNTljNzA4ZiByZWxlYXNlMjItbWFpbnQKKzI5MDI3IDc3OWJiNmRkZGU0YjhiMjQyNDYwZjc1NjllY2Y2MjQ3ODczNWQxMmUgbGVnYWN5LXRydW5rCisyOTAyOCA2ZGNkMDY2NGIwOWUyY2Q5MjQ1NmMyNGRkNTJlYjE0MWNjOTA3NmZmIHJlbGVhc2UyMi1tYWludAorMjkwMjkgZDA3MjhiNGIwN2MzM2IxN2Q2ZjQwZWMyNzVlMTU4NjUwYjViMDkwZCByZWxlYXNlMjItbWFpbnQKKzI5MDMwIGIxOTkwMmFkMTg1ZmJkOGIzOGRiMjQ0NWUzMjFmODQxYTY0ZGQ4NzUgbGVnYWN5LXRydW5rCisyOTAzMSBiMTFiYzIxNGU0ZjJmNzZkOTlmYjkwYjE0NzUzMzFlOGRmYjc0NzEyIGxlZ2FjeS10cnVuaworMjkwMzIgYzQyYzk4OGIyYjk5Y2E5MGEyZmFjNDA4NGU2ODdkZjc4OTU4ZmY5OSByZWxlYXNlMjItbWFpbnQKKzI5MDMzIGFhZThiOTQzODVkNmI1OGE5YmE1MmRiZjIwYjQyODNlZTA5NDJlNzEgbGVnYWN5LXRydW5rCisyOTAzNCBkZTM3MGU2NTAzZGY2OGEyM2VhODNjMjdhYjEwMWQwMWNmYTdkYWM2IGxlZ2FjeS10cnVuaworMjkwMzUgYzg1ZDdjZGQ5ODNmMzI4NTZiMmE5MDFmNDc0NmEzM2Y0YjA5OTFlNyBsZWdhY3ktdHJ1bmsKKzI5MDM2IDQzNjcxZTAxMTZkNTJmMDUzODEyY2YwMWU2YzY2YTVmYzQ1MjhkZDkgbGVnYWN5LXRydW5rCisyOTAzNyAwMjMxY2M1NGY4N2VhYzQ4NDRhYTY3ZmI4ZGY3ZTZkMjQwODkyNjdmIGxlZ2FjeS10cnVuaworMjkwMzggODI0MTYyZWI3OTc3MzcwZmYwMzg1ODBkYjFiNWE5YzU0YTI1MmY4MiByZWxlYXNlMjItbWFpbnQKKzI5MDM5IGM1YTgxYzNiZGFkYWJjNTc4NjFlZDBkNzdiZDRjNmVlMDE5OGRmZDQgcmVsZWFzZTIyLW1haW50CisyOTA0MCA0MDVhNWI0ZjQ1M2JlYzQ3MDVlMjFiYzk2NTIyMWMyMWIxMTgyZWM1IHJlbGVhc2UyMi1tYWludAorMjkwNDEgNmNjYTYxNGI1ZTAzM2E3OTZmZWNjYzgzZGZmMzI1YWIyMzg5ZDQ2YyByZWxlYXNlMjItbWFpbnQKKzI5MDQyIDEwMGRhYTM2MTk4ZGQ4NThlMzg4YmY1NDMyM2U0MjEzYjI4NTQ4NGMgcmVsZWFzZTIyLW1haW50CisyOTA0MyA4M2Y2NGMwNGYwMDI2OTBmMjdjMmMyNGQyYjAyYmYzYmE4NzU3ZGM5IHJlbGVhc2UyMi1tYWludAorMjkwNDQgMzY3OWM0ZmM2OGJjMDQ4NjZlOWE2MWVjYzRmY2EzOTdkYzUxMWIzMSBsZWdhY3ktdHJ1bmsKKzI5MDQ1IDI3NmI2YzQ1Mjk5OTRjZTM1YWI2NmRiNWNhNzIyM2MwYmI4NjJmMGEgcmVsZWFzZTIyLW1haW50CisyOTA0NiBkNDlmMTY0ZTZhOTc0ZDc0ZjBlZmQxNjQzNTE1NDJmYzgzOTM5NTRmIHJlbGVhc2UyMi1tYWludAorMjkwNDcgYzFhNmY0NGUyNTM0ZDgzYjhmYzRkOGY2OWQ5MWI1MTA5YTBmMjFjMyByZWxlYXNlMjItbWFpbnQKKzI5MDQ4IGE1MjY5NWI3MWU3ZGFiNWNiZmM3NTM3MzUzNjJhYTgxMGQ1ZjE1NGIgcmVsZWFzZTIyLW1haW50CisyOTA0OSBkYWUyMjgyYmM3NmI0MjcyN2QxY2Q4ZmIzMGI5Y2Q2NWFhNjVkY2JiIHJlbGVhc2UyMi1tYWludAorMjkwNTAgYjI4N2JkYWNkZTM5ZmFmMzZjMDI0Y2I4M2ZlNTc2MzY2MjczNTVmZSByZWxlYXNlMjItbWFpbnQKKzI5MDUxIDYwMDM5OTE3MzFhOTkwNmM4Y2NjOTI4NGUzNTZiNThhODU4MDI0YzkgcmVsZWFzZTIyLW1haW50CisyOTA1MiAyMzQ3ZjkwMTg0MzE1M2Q5MzRlYmZlNDNiMzg4ZmI5ODNiZTQ1ZmZmIHJlbGVhc2UyMi1tYWludAorMjkwNTMgNDQ5MmQ3NzMyN2M1ZWUwOWY3M2MwN2FjZjNhNjM1ZjQ0OTBmYmQwNCBsZWdhY3ktdHJ1bmsKKzI5MDU0IDI5MTFlYjM3NzI2NmQ5NzVhOTg4OTAxNGEzMjU3NTAxOTA1M2ViZTkgcmVsZWFzZTIyLW1haW50CisyOTA1NSBiMzI1NjQ4N2FlZTg4ODYzNjRkZmFmMmY5ZTc5Y2Y4ZjliMGViMzk4IHJlbGVhc2UyMi1tYWludAorMjkwNTYgNzc0NzcxYzUwYjE4N2NmNjMxMGZmNmNhNTY1MTU4M2E2OWU0YmViYyBsZWdhY3ktdHJ1bmsKKzI5MDU3IDJhOTQyYTFjNDJlODQ5ZmRjNTRiN2Y5YWZmZjcxY2I4YjEzY2VjMzMgcmVsZWFzZTIyLW1haW50CisyOTA1OCBmZWQ3YzQxY2FhYWVmNTUzMjFlYzJhNjZhMjQyZmFhNGM0M2VmNThiIHJlbGVhc2UyMi1tYWludAorMjkwNTkgYzYyZmI2M2RjZmQxYjUzZDE3OTJkNzA5MTRiZDAyZDczNmYxNDgzMSByZWxlYXNlMjItbWFpbnQKKzI5MDYwIDZiMWQ0NjQzYTBmZDUwZTgwODQ5NmVjYzVkOWMzNzNmZmI2YzUwMDcgcmVsZWFzZTIyLW1haW50CisyOTA2MSBlODRlMDgzNzJlZmExZWM1MDUzYWExYWE4MGU2MzI2MDM0NGI5NjIzIHJlbGVhc2UyMi1tYWludAorMjkwNjIgNTIzZmQ4OTAzNTk4NzhhZGViZDVmYTdlNDI0NDExZDQ5MjdhY2Y0YSByZWxlYXNlMjItbWFpbnQKKzI5MDYzIDFlMzU5ZGNiNGZiM2I3MjI0NGY4N2NlNTA1OTkyYjJjYzI3YWJmNTggcmVsZWFzZTIyLW1haW50CisyOTA2NCAzOTM4ZTlhMDk2ODk0YzZjODY2YWU0NGM4ZDUyNmExOWY2ZDFlZDc3IHJlbGVhc2UyMi1tYWludAorMjkwNjUgODZmNjYwNjEwMDNjMDZjYjk3NDM3ZTA0ZmUzMTNmN2FkZjBjZjkxZSByZWxlYXNlMjItbWFpbnQKKzI5MDY2IGFkMzdiOTNlN2EyZTZmMTM0MTI0ZGUwMWQwMzcwZDg4ZmQ0YTc3MDEgcmVsZWFzZTIyLW1haW50CisyOTA2NyBhNjdiOWExOTUyNjViNWViMGU0MWRkNDU0NmY0ZDUxZTIzYTQ5ODA0IHJlbGVhc2UyMi1tYWludAorMjkwNjggYTZlZGMxYjNmZDU2NjE2YzQ2YjMzZjA1NGEzMWYwNDA4MzAwNGJmOCByZWxlYXNlMjItbWFpbnQKKzI5MDY5IGMxZjdhZjQyYTdmMTc2NzkzNGM3YTY5YTk5Njc1MzEzMDMyYmM5YzEgcmVsZWFzZTIyLW1haW50CisyOTA3MCAxYjg2OTdkNjA1NjhjNDdiNzRiNDQwNzk1ODAzNGZjZWViNGQyZmI1IHJlbGVhc2UyMi1tYWludAorMjkwNzEgMWRhZWFiYjM2MjQ0MzBlZTIyYzcyNDFmODg3MDhiY2I0NTVhYjE2MiBsZWdhY3ktdHJ1bmsKKzI5MDcyIDk3N2ZhMTM1OTA2ZDFhMTRiODQ1YjhlZmI4ZjQwNDcwODM5NDVhMDcgcmVsZWFzZTIyLW1haW50CisyOTA3MyAyODhjMWZmZDYwNmVhYmJmNWI0ZDVjOTBmM2M5NTMwMjQ1ZjkzY2I3IHJlbGVhc2UyMi1tYWludAorMjkwNzQgZjM3YTM0YzI1NmM0YjA0M2UzMWEyY2FlNTMxMjllYTYwZmIwNDgxMSByZWxlYXNlMjItbWFpbnQKKzI5MDc1IGY5OTA2ZTYyNjFjNWYwZDQ3MThkZDFmN2NkNjFiNGQwMTE4ZDEzODQgbGVnYWN5LXRydW5rCisyOTA3NiAzZWVlNzI5MzFkMTc4M2U1MGVhOTkwZTMzOGYxYjEzZDkzZmE2MjgyIGxlZ2FjeS10cnVuaworMjkwNzcgZjNlNzBjYzI2NDIyZDBkMTM5NTEwOTgwYjM1ZTU4MDAxNWYzNWNiZCByZWxlYXNlMjItbWFpbnQKKzI5MDc4IGM0YzA5M2UyM2M2ZGQxYzgwNTg3OTUwZmU3OWY2NjIxMjBmZTA4ZDAgcmVsZWFzZTIyLW1haW50CisyOTA3OSAzOGExZTU2YjliZjM1MjQ5NWFhMzRlMTZjOWEwOTgwMGUwZDZlZGM0IGxlZ2FjeS10cnVuaworMjkwODAgNjM3OWE1NTE0MDY1Yzk1NmMxMjVkYTU3MzA3YjZhMmY5MDdjYWE5MSByZWxlYXNlMjItbWFpbnQKKzI5MDgxIDVmMmM2YWMyMTVjNzk5NWVkZDc5NGIxNmNmMjhkZmNmODdjNGM5ODAgbGVnYWN5LXRydW5rCisyOTA4MiBiNWRlYzBhNTU0YjM4MGZmYzI3ZDQ1YzE0ZjcyM2E2Mzk4NDRiNmJiIHJlbGVhc2UyMi1tYWludAorMjkwODMgZGYyNzZiNzNmZTRiNTc5NDgwY2RkMjJiZTJmNDU0MTZlMmMyZDhlMCByZWxlYXNlMjItbWFpbnQKKzI5MDg0IDJkY2RlOTAzOTFhYWUzNDc1OGFlZDAyZTE5ZDU2Y2I5Yzc0MzczOTYgcmVsZWFzZTIyLW1haW50CisyOTA4NSA4N2RhYTU2NTQ0MmRiODAxOGE4ZGZiYTkyMDBmYzhiMWZjZGEwZGMxIHJlbGVhc2UyMi1tYWludAorMjkwODYgYTAwMDVkMjY3NzNkMDJjMTA1M2VmYTczMTg1NmZiZjdjZDUzZWQ5NiByZWxlYXNlMjItbWFpbnQKKzI5MDg3IGI5OGY4NWRjMmQ4ODE1NThiMTEzNDYzZTVlZmUxOGZhZDY5MTJlNDEgcmVsZWFzZTIyLW1haW50CisyOTA4OCA4YTc1OTczMzY3NmZiYTlhYWU2YjYzM2RkZWNkYWY2MmNlOWMyOGFiIHJlbGVhc2UyMi1tYWludAorMjkwODkgNGJiOTE4ZWE2NGQxZTJiYzVkYmIwYzlhZmEwMWU1MTVmNDY4YjkxYyByZWxlYXNlMjItbWFpbnQKKzI5MDkwIGY4NjdjYTZjN2Q2OThlNWViZjIxZTY5NWQzZDU5YzQ2YTQ3NGM5MjMgcmVsZWFzZTIyLW1haW50CisyOTA5MSAzYjYwOTUyMDQzY2QwNTA5M2Q1NTM3OGVmY2QxNmUxMzZlYTIyM2Q5IGxlZ2FjeS10cnVuaworMjkwOTIgNWJiMmMwNTdmZDQwYjg4YTJkZDZjN2M3MzVmZDA2MTI3ZWQ4NTAyMiBsZWdhY3ktdHJ1bmsKKzI5MDkzIDQ0NmI4MzVmYzE5YjJjZmVkNzkzODBiN2U4ZmU4M2NkNDhhNWNhMWYgcmVsZWFzZTIyLW1haW50CisyOTA5NCAyNWQxZjRmOTE0ODdlMGRhYmM3NzIzNzg2NjY4YjE3YzgxMjA3ZmVkIGxlZ2FjeS10cnVuaworMjkwOTUgODUwNjJhMTJjMjRmOGZiNDU0NDc5NmEzMzhiNzhmYzg1YTkwZDg4YiByZWxlYXNlMjItbWFpbnQKKzI5MDk2IDRjYTMyZTRmNzgzOTNhMjdhZTgwNmU2NDdiYjA5ZTdlYTc0MzYwNTEgcmVsZWFzZTIyLW1haW50CisyOTA5NyBlZmE5YTg2NDY0ZDM0MmNmMWU2M2EwZDU4ODA5MTAyNDgwNmVjMWE5IHJlbGVhc2UyMi1tYWludAorMjkwOTggODU1MzkyNzkwOTRkMTVlNzExNTg1ZmUyODkzYzI0YzQwZDRjODQwOCByZWxlYXNlMjItbWFpbnQKKzI5MDk5IGE5NGYyNzJlNjAwZDkwOTk0YzI0NWU0NGNkNWZkN2QwZGQxYzUyMTggcmVsZWFzZTIyLW1haW50CisyOTEwMCBlYjg0OTk3M2I5NDE4ZGUzNjhlMDUzMmEzYWNhYzVhNGJmZTljMDcxIHJlbGVhc2UyMi1tYWludAorMjkxMDEgNDIxMzlhYmZkYmU1YmViNWQ2M2UxMWYzYzNlYzA2YWNjMDA4OTA4OSByZWxlYXNlMjItbWFpbnQKKzI5MTAyIDI5ZDQwZWFlODczNmIzZjNiY2ZmYmE3Mzk2YjdlMTNmYjg4Y2NjZmYgcmVsZWFzZTIyLW1haW50CisyOTEwMyAwZTZmMGEyMmM2YTkyM2M4NWYzN2YwMWE3ZDAwMzkwNzBmZDcxNzc1IHJlbGVhc2UyMi1tYWludAorMjkxMDQgNWNmMzNkYjU1MGQ3NWNlYmM4ZjlhOWQyMzYyNjY2MWQ1ZTU3OGZiNSByZWxlYXNlMjItbWFpbnQKKzI5MTA1IDEzNDM4NTg2ZGFhNjM3M2NkYjRjMTY0ZTk2ZjBmN2IxNTg5ZjAyYjQgbGVnYWN5LXRydW5rCisyOTEwNiBiZjI4ZDBmNzhiZDViMjliNDM2YTNjNjc2ZDgwNzM2NGI2ZTRhOTU1IHJlbGVhc2UyMi1tYWludAorMjkxMDcgNWM2ZmFjOTVhOTRiNGZjYzk2NWExZDMzNjRkNDkzMGFhZjFiYmM5YSBsZWdhY3ktdHJ1bmsKKzI5MTA4IDE5OWYwZjZhOGEzNjMyMDZkNzQ5MzU0Nzg3N2I3ZjRkZDY1ZmYyYTMgcmVsZWFzZTIyLW1haW50CisyOTEwOSA4OGMxYzRkNzg5MTY2ZGNlMzNkZDYyOGZjMDJjODRhNTM3M2QzYzVjIHJlbGVhc2UyMi1tYWludAorMjkxMTAgMzNiZDY0NDViN2U5Mzk0YzM2N2RkN2ExNzNmYjA2OWM4MjQ4ZGJkYyBsZWdhY3ktdHJ1bmsKKzI5MTExIGUyMTg0NzUzMTY3NDM4NGM0NDIwM2MxNGNmYzdlYzgwZTM2NTk0Y2QgcmVsZWFzZTIyLW1haW50CisyOTExMiAxNWVlMjk5ZDM5ZTY3MWQ5MjBjODE4YWY1YWRmZWE4YzRiMjQyMDM2IHJlbGVhc2UyMi1tYWludAorMjkxMTMgNWQ4YmIwMGZlZTE4OTljNzZhOWU1Njk1M2NiYzU0YjZlMDU2MjIyZCByZWxlYXNlMjItbWFpbnQKKzI5MTE0IDQ5OTI3YjZiNWY0MGZhNDNlNWExYTM0MWY5MmI0NzY2ZDE3MzhhMDUgcmVsZWFzZTIyLW1haW50CisyOTExNSAzZmE1NDRhM2M1ZWRhYWVkN2VmNjA5MWRkMGU5MmIyZTg2OGRkZmI2IHJlbGVhc2UyMi1tYWludAorMjkxMTYgMTE1N2M0MDAzMTZiMWU2Yzk2YzQzNTIwMTkzOTIxMWZlOWJhYTgyYSBsZWdhY3ktdHJ1bmsKKzI5MTE3IDIxMDM4NDZlZWY3M2FmNTQ4OWY3ODY1MzliYjQ1YmRjMmMyMTg2MTUgbGVnYWN5LXRydW5rCisyOTExOCBjNTgwNDFlNmE3OTk3NGU0YzhjYjQ4YmYzODllNTc3ZjFiZDA5NDFmIGxlZ2FjeS10cnVuaworMjkxMTkgMGExYzFjNWUxYWI0ZjI5ZTBmOTdlYjAwMGNiMTc4N2YzNTM0MzNhMSBsZWdhY3ktdHJ1bmsKKzI5MTIxIDRiZTk3ZWRhNDM2YmI2MzMwOWVhMjQ4ODMxNDEzNmEyZjY1MzQxOWEgbGVnYWN5LXRydW5rCisyOTEyMiAwNjkwZWE2ZDExNTM1NzJiMzJjOWU3N2FkMTBmODdlMmEwMjQ0N2RkIHJlbGVhc2UyMi1tYWludAorMjkxMjMgZjUwOTlhNTMwZDY3YWY4MGFlZjAyMzUxYjczMGNkY2JiNTNkZTI2NiByZWxlYXNlMjItbWFpbnQKKzI5MTI0IGNiOWMxZjk0MjIwYjk5ZWFhZWVhNWM4NjhhNzk0NGY0OWQ3NDMwNWYgbGVnYWN5LXRydW5rCisyOTEyNSAwMDBkMTU1ODFhNzY4NmQ5NWVlMDBhMTUyOTVkY2U4YmNhNzMwZTg4IHJlbGVhc2UyMi1tYWludAorMjkxMjYgOTAyNzRiYTA0NDI0ZDc2MTA1ZTI2YTExMjFkMWE3OWVjMGU3NjM4ZiBsZWdhY3ktdHJ1bmsKKzI5MTI3IDE0YjY4ZjU5Mjk1ZTM5NTZiN2YxMzViZWQ3ZjhkYThjMDIwYmRhNzMgbGVnYWN5LXRydW5rCisyOTEyOCAzN2MwNDQ1YmRjOTBkOTdkNTRiOGRmNGY3YmJmNzZiMGZhNDFjOTFiIHJlbGVhc2UyMi1tYWludAorMjkxMjggMDEyODMxM2MyODU1ZDcxNzUzZjAwZmNjYzYwYmIzOWVkOTJhMGM1NCByZWxlYXNlMjItbWFpbnQKKzI5MTMwIGRkYmY2OWFiYjk1Y2M4ODZhYzFiY2QyYTFiMjA0ZTcyMDlmNzVlYTIgcmVsZWFzZTIyLW1haW50CisyOTEzMSA0YTgyNWI5MDIzMTBlOGRjZjQ4OGM0MzBmOGRkODNhNDRkZDBjOGY4IGxlZ2FjeS10cnVuaworMjkxMzIgYjY1OWFiNDk0NTcxZWE3ZTdiMjhjYTcwZmEzNTczMTAzOGMzMDczYSByZWxlYXNlMjItbWFpbnQKKzI5MTMzIDYzYzZmNDVlOTQ3ZGU0OTI5NGRmMTY5NDRlODY2ZWMxNzc2YmE4NTQgcmVsZWFzZTIyLW1haW50CisyOTEzNCBjZjkyNjYwZTFlM2NlM2Y0ZWU5OGQ5YWJjYzIwMjYzYTAzY2Q5ZjU0IHJlbGVhc2UyMi1tYWludAorMjkxMzYgYzVkOTE3OTFlNTdiMjk2MzRkNmE5NWI0NDM1NjAxMzY5NzkwOGZjMCByZWxlYXNlMjItbWFpbnQKKzI5MTM3IDg4OTdhMGIxY2IwNzU0MThhMGQyNWQxYTg5MTI4YWE0MDgzNmI1NDcgcmVsZWFzZTIyLW1haW50CisyOTEzOCAxYTc5YjllMzllNzI1MmI2MDgxYWM5MTc4ZDZmMTNkZjExYmVjYWJmIGxlZ2FjeS10cnVuaworMjkxMzkgOWNkNmVkOTU0MDY1ZGI2MjBlZmMyMzc4ZWUxZmQ4MjdmNjRhMjAxNCByZWxlYXNlMjItbWFpbnQKKzI5MTQwIDYyODUzMTk1YmU2OGQxZmQyNTI2Yjg5NTE0N2QxZjU2MzU3Y2Y3MTMgbGVnYWN5LXRydW5rCisyOTE0MSA0MWU4MjgwYTM2ODVhNzAyN2UwODY1NGIwZGY4MTg3YTAxNzdkYjA2IHJlbGVhc2UyMi1tYWludAorMjkxNDIgYmFjNWE0OTMyOTA1OTlhOGNhOTM0M2YwYzI5NmE1MjJkNzNjM2JiNCBsZWdhY3ktdHJ1bmsKKzI5MTQzIDY4OTZjZWVkNDZhNmIyZDJlZDM3NTJkMTI5MWZmZjE0YWMwYjg2NGQgbGVnYWN5LXRydW5rCisyOTE0NCBjNTIxNjVmMmNkZjQzOTFmYmI2NGMzYzQwMTUyMmY3ZTc2MTg3MTJiIGxlZ2FjeS10cnVuaworMjkxNDUgMzg2ZTZmZTJjOGQyYzlhMDZjMDUzOGViNDlmM2Q3ODg2OWJiOTZhYiByZWxlYXNlMjItbWFpbnQKKzI5MTQ2IDY1ZGZmYzljMGExNjllN2JlYmEzZDc0YjMyODMyNzU4NjliOTZjMTUgbGVnYWN5LXRydW5rCisyOTE0NyBiYTUyMmM3NGE5MzEwMWM0MzVhZWZmZTdlZWFlZjI5YjBlNjA3YmI0IGxlZ2FjeS10cnVuaworMjkxNDggY2U0OWYxMmExNzY5ZTZhOTdjOWRjNjRkN2U3N2Y3OTEyNGNhZjA3NSBsZWdhY3ktdHJ1bmsKKzI5MTQ5IDM4ODQzZDM1YjY0NjYwMmE0NmJiNTZhNWVkMTI2N2Q2ZWI5NzEwZjggbGVnYWN5LXRydW5rCisyOTE1MCBjN2Q1ODAxYmJhZThiY2RjNTg5NTVjZGRjODFlY2FiZWY0NzMzYzg2IGxlZ2FjeS10cnVuaworMjkxNTEgNjk1YWQ4Zjg3NzA5NTExMzM5ZmFjMmQ4OGNiZWY2YWNmYTFkYjk1MSBsZWdhY3ktdHJ1bmsKKzI5MTUyIDA4MDlkYzU5OGZlMjNhMmIzMmM3MDE4ZTE5OTdiNTljMTVmZjdlMTAgbGVnYWN5LXRydW5rCisyOTE1MyBmNGFhNjU2NzEwZjAzOWYzNzdmNGEwZTcwZWEwY2I3ZjJjMGViNWRhIGxlZ2FjeS10cnVuaworMjkxNTQgNTZjMGJhMjAzMjliNGRlZDQyNWYxZDc3N2JmZTFlN2NjOTMzZDYzYyByZWxlYXNlMjItbWFpbnQKKzI5MTU1IGIyZTgzN2YyZDE0MWM2ZmJmOWQ3MWZmMmYyNzE3ODAyZjBmMGU1OTUgbGVnYWN5LXRydW5rCisyOTE1NiBkOGVjOThiNzRmYTc4YjU1NGJhOWMxZjE0ZjdmYmU5Y2ZmZGMxZDM5IHJlbGVhc2UyMi1tYWludAorMjkxNTcgYjM5YmQwM2E4ZGFiNjY5MjM4OGQ5YzE2ODQ0ZGNlNWM4NWNhMGFkMiBsZWdhY3ktdHJ1bmsKKzI5MTU4IDEzZDYzOWE0YWZkN2I4M2E5OGMzYWYwMzE0NmE1YTdmMjMwZDU4N2UgbGVnYWN5LXRydW5rCisyOTE1OSBhOTYyMWJhN2UzZGJkMTM0MGIwZDA4N2E3NmNlNDRjMzQ4NDI3NTVjIGxlZ2FjeS10cnVuaworMjkxNjAgZTllN2YxNjBhYWM5OTBlMjE1YmFmZGZhMGZkOGIzZmRkZDE5NDI5ZiBsZWdhY3ktdHJ1bmsKKzI5MTYxIDUwMDEzZDFjNmE0M2VhMWJlZWY1MjZmMTNjMDY3YjUzZWJhMjY4NDkgbGVnYWN5LXRydW5rCisyOTE2MiBiNzhmNWM3ZTU3OTAyMTkwODM1M2E2MjA4NzAyYWU5NzBhY2JiYmRmIGxlZ2FjeS10cnVuaworMjkxNjMgMmZiOTEwYjEzOWMyZTI1ZDU2Y2ViMTQ0NzU0N2JiNGRjOGMzNWRmNCBsZWdhY3ktdHJ1bmsKKzI5MTY0IGZlYjg4NjNiNmZjNDY3NGJkN2I5ZDQ3OTFkYjU5MDU3Njc3Y2I2MmIgbGVnYWN5LXRydW5rCisyOTE2NSA2YWU2ZjIwNjBlMjhkMzY0MzVhOTI5OWExODRmZWNjN2RhZWU2ZDc5IGxlZ2FjeS10cnVuaworMjkxNjYgYzYyMWY3MWJjNzAyNTYwOWYwOWI4ZDE4OGNmNTUxNDBlOGE0MGQ3YiBsZWdhY3ktdHJ1bmsKKzI5MTY4IDgxMjA0ZTIwY2ZlNTllMzcyYTdhNjAxMWZhNmJmNTY1MDQ1YTc3ZjAgbGVnYWN5LXRydW5rCisyOTE2OSAwYTdhYTg3NGM0NTBiZGRhNTk5OWEzMmMwYjJkYTVlMmMyNGYzNTZkIGxlZ2FjeS10cnVuaworMjkxNzAgZTk1OTE3MmNhZjQ5MzIxODgwZjgzYzk4ZGZjMzZlM2E5MzhjYjg0MiByZWxlYXNlMjItbWFpbnQKKzI5MTcxIDQ0Nzc2MmViYjExZDJkNzJhMTUxODg5YjliMmU0NjE4NWE4NzcyYjAgbGVnYWN5LXRydW5rCisyOTE3MiBlZTc1NmFiNmExM2UwZGY3MzhmYjc5YmVjMThkMWU3M2QxMTZiOWQ0IGxlZ2FjeS10cnVuaworMjkxNzMgMGY1MDUzNmExMGJiNzc2NGU3ZDc3MjJmYzBmMDY3ZDRiZjA0MjFkNiByZWxlYXNlMjItbWFpbnQKKzI5MTc0IDFmZTFhNTdkOGViMWIyN2I4ZTM4N2JkYWRkNzllNzBkYzk5YmFmZjggbGVnYWN5LXRydW5rCisyOTE3NSA3MzNkZjJkMWViYTk3MWJmNTBhNDcxMGQ1ODA2YTc3OGJkMDYzNjU2IGxlZ2FjeS10cnVuaworMjkxNzYgMWE5ZjQ3ODg1MjYwNGE3ZDBjY2MzODAxYmEzNmFmY2Q3MzYyMzY2MSBsZWdhY3ktdHJ1bmsKKzI5MTc3IGJhZDk2OTk1NzZkOWQ5YmQ1NjBkODJkNGIyNzhkMDhlOGRlYmQ3Y2QgcmVsZWFzZTIyLW1haW50CisyOTE3OCBhZTY4NjNlODc3MjQzN2JjMWM3MjU2Y2QxM2U0MDk0Y2FkYjZjOTNjIHJlbGVhc2UyMi1tYWludAorMjkxNzkgMDZmNjE3M2I4MGZiNDE3MWQwNzk3YjY5NDlhMDZmYTM3ZTY2ZWM0OCByZWxlYXNlMjItbWFpbnQKKzI5MTgwIGUwNjc0M2ZhYjQ3NzVjYTg0MzM5YjNjNWMwYzc4ZTdkN2I2ZDAzYjcgcmVsZWFzZTIyLW1haW50CisyOTE4MSA0MWM1OTIxMjJmNjI5ZmQ1ZDlkNjA5YTQ3YmQ2ZGY3ZjkzMTE2YzVjIHJlbGVhc2UyMi1tYWludAorMjkxODIgMmFkYWRjMTk5MjNjZTEyZjMwOTMxMjM4OTUzMzZmMmUzN2Y1ODdkOCBsZWdhY3ktdHJ1bmsKKzI5MTgzIDI5MGVhMGM2ZGU2YTVhMWFjZjJhM2MwNmIyMjE2NzE2MjFkMzIwYzUgbGVnYWN5LXRydW5rCisyOTE4NCA1NWIxODM5NDEyM2I3YWM2MjU3NThkZWM3N2Q0Yzg1OWNlOWIyZjU1IHJlbGVhc2UyMi1tYWludAorMjkxODUgZTM3NGVhN2FjNGNlNDhhMDQ0OTI5NTQ4MjgwYWRlMTlmY2NhZmRlMCByZWxlYXNlMjItbWFpbnQKKzI5MTg2IGY1MzJlOWI2OTU1MWMyZTdlNzg0YWJiMWU1Y2YwMmVjOTg4MjQwM2MgbGVnYWN5LXRydW5rCisyOTE4NyAzYzI2YWU2MWU5NTIzZWJkZjM1MDVjMWRiZGU5Nzg1YzAwMmU0NGNhIHJlbGVhc2UyMi1tYWludAorMjkxODggOGIyMGIyNmYxMTg2OTk4MDIzOWNiMTA2NzhkNzE1ZDhkMjJjOTRhOCBsZWdhY3ktdHJ1bmsKKzI5MTg5IGY2ZWRiMWVmMmUzZjgwMGY2NWM2ZTA2NWZlYmY0ZmNhZDFiNDRlN2MgbGVnYWN5LXRydW5rCisyOTE5MCA2MWU2YjU3ZWJiZTFkODBlZWEyODIwYmM3MjBkNzM1YjcyZGM1YTJlIGxlZ2FjeS10cnVuaworMjkxOTEgZDYzNGZiZDVlNDIzMmRkN2MwOTE3MDdlNDI4ZWUyOWUxOWQyNWRiYSBsZWdhY3ktdHJ1bmsKKzI5MTkyIDhlOTJiZTY1ZGVkMzY2OGZlNmFhYWE4ZDRmMTc1NDUyM2UwN2I4NmIgcmVsZWFzZTIyLW1haW50CisyOTE5MyA2NWZhMTkzZWExMDkwY2U3ZDljZjk2NGY0MWFmN2ZlZjgzZWFiNWFjIGxlZ2FjeS10cnVuaworMjkxOTQgZjQ2MTgyN2RjN2RlNmMzZjNmMzVmOTFjZTkwM2Y3MDQyNmViMzQ1ZiBsZWdhY3ktdHJ1bmsKKzI5MTk1IGZhMTczNzE5YWM4YzBlYTYxMWI4YTY2YWU0ZGE2Mzc5MGY4Y2JjMjYgbGVnYWN5LXRydW5rCisyOTE5NiBiNTlkMWExMTkzOTMyZGIzNmQzM2Y2MWM5YjQzNmUzNzk3ZTA1YjAyIGxlZ2FjeS10cnVuaworMjkxOTcgYWNlODJkYTNiNDUwZTRhMjlhYmYxY2YzMGNkZjFjZTEyOGNlYjZmOSBsZWdhY3ktdHJ1bmsKKzI5MTk4IDc4N2ZlY2QwYWExYmIxMDc2ODY5ZjUxMzAwNmNhYjk5OWZlNWRkNjkgbGVnYWN5LXRydW5rCisyOTE5OSBjNTljZTUxM2RlZjYyNWJlYTZhMDU4MDkzODcxNmU2YWZjYTc2ZTMxIGxlZ2FjeS10cnVuaworMjkyMDAgM2EzZDVhZWM3YTZhZmYxZGZlZTRmNTM4ZDc5ZmJjZjY1N2JhYjc0ZiBsZWdhY3ktdHJ1bmsKKzI5MjAxIDcwMDVmNGI2Y2MxMjJjY2Q5ZmZiOTExYmE4OWE2ZTJlNWRiZWEyNGYgcmVsZWFzZTIyLW1haW50CisyOTIwMiA2ZDIxMzgzODk2NjcyNTYyMDU3ZjNiNzVjYWZhOTRjYmYwOTk0NjE1IHJlbGVhc2UyMi1tYWludAorMjkyMDMgOTJhOGEzNTJlMDI0MzA2MzNhOGVjZmRmNjE0YzA1MjcwNjBkZWY2NCByZWxlYXNlMjItbWFpbnQKKzI5MjA0IGIwZmE1ZjZhOGJiOTdkZTdhNTU3ODlmMzQ4MzA5NDhmZGZlZWRjYTQgbGVnYWN5LXRydW5rCisyOTIwNSBlZWVkN2M4YjIzMWFlZDE2NzY3ZTM3MGU3N2YyYzEyM2UwNTY4YjYwIHJlbGVhc2UyMi1tYWludAorMjkyMDYgOTcwMDJiMjUwNDI1Njc5ZDE4NjI2YTY3Yzc4MmVjZTdhNjg5MWM2NyByZWxlYXNlMjItbWFpbnQKKzI5MjA3IDcwZjkwMjZhMmIxNmZkMzhkODdjMjcyNGQ1NmYwM2IzOGMxYzkxZjcgbGVnYWN5LXRydW5rCisyOTIwOCAyMWFiMmE2NzRjMGExNDY0ZWEwNmJkZDJjOWViMGI0NGU0ZDdkNGMxIGxlZ2FjeS10cnVuaworMjkyMDkgMzk2YzhhMjQ4ODBjODI1ZDU0MjRmMGU2Y2YyYzRiZjljZTE3ZjE5NyByZWxlYXNlMjItbWFpbnQKKzI5MjEwIDg2YmY4NDBjMmExY2E4YmU0ZmRkNDAyNTc3MDJlMzAxNTdiY2U4MzUgbGVnYWN5LXRydW5rCisyOTIxMSA1NGViZjA4NWQyNmZhOTY0Y2FmNjJkZjY3YzZhNzQxYzgxZmIzMTVhIHJlbGVhc2UyMi1tYWludAorMjkyMTIgZjdjY2Y0OTkxNTY1YzNmYjMzMjAyOGExZDNjMmE2YWMzZmYxYTZkNSBsZWdhY3ktdHJ1bmsKKzI5MjEzIDczNDBiNjRhNDkwODIyM2ViYmYzZTAyYWU3ZThkZGExZDQ2M2ZkODMgcmVsZWFzZTIyLW1haW50CisyOTIxNCA0ODkwZjFiZGVhYTY0MmUyMGM3ZTRmODc2OTFjYzI1NDM3OTY2ZjM3IGxlZ2FjeS10cnVuaworMjkyMTUgZjdhNDZiMGQzYzA3YWEzMGU2NWFlMWMyNjMzM2FlZmIxNjc1ZDE2NyBsZWdhY3ktdHJ1bmsKKzI5MjE2IGQ0M2U4MmI4ZDc5ZDU2ODllOGJjOWJiNzY2ZGI4NGMzYzQ5NjhkMmMgcmVsZWFzZTIyLW1haW50CisyOTIxNyBlYzBhNDhhZThlYjQ3ZWExNmY3Mzc4NDgxNjVlY2U4ZDQ5OWZiOWVjIGxlZ2FjeS10cnVuaworMjkyMTggOWJkMmY5NzkyZWZiYTY3ZmY1NGZkYWZhY2M5ODJmYzA4YTNhMzE5MCByZWxlYXNlMjItbWFpbnQKKzI5MjE5IDNjOTVlMDk3Njg0NDhlY2EzNDIzZGMwMmUwYWJmNjA1MDA0MTk2MDYgbGVnYWN5LXRydW5rCisyOTIyMCAyZDE3ZTNjYjc3NGU4MzYzZDkxNTQ0NGM0ZTFjZDI1NTYzYWUzNDEyIGxlZ2FjeS10cnVuaworMjkyMjEgNzVjYmVjNDBkYjdkNWZjNTQxY2ZkMGZkYmUzYmJlNTAzZTYyY2NlNiBsZWdhY3ktdHJ1bmsKKzI5MjIyIDZkMzVkNDI5MmRlYzQ2ZDIxODM5MjYyYzVmYWViMjNhMWQxMmUzNzkgbGVnYWN5LXRydW5rCisyOTIyMyA2MzIyNTgxMTQ5OGQ1MTFkMzFiMWMzYjA0MmFkZmE2ZGY0OWRlYjBmIGxlZ2FjeS10cnVuaworMjkyMjQgMDgzOGM0MjQ3OTE3ODNmZWM4YTVlM2RkYjZkMWQ0MGQwNDViMTgxOCBsZWdhY3ktdHJ1bmsKKzI5MjI1IGY0NDlmYjViYmFiOGFkNjlhNTNiMjU0MmM0ZDE5NjM0YzI5MzJkNTAgcmVsZWFzZTIyLW1haW50CisyOTIyNiA1NjMyODQxYTMyYTQwNTllYmVhMzc1N2Y1YzM2YmY3ZjEwNTE5ZDQzIGxlZ2FjeS10cnVuaworMjkyMjcgNmVkMGJiZGFiZGM4MTllYzBhMjVhMWEwN2QwNTBhMWYyMjA3MmZhNCByZWxlYXNlMjItbWFpbnQKKzI5MjI4IDY5YWE2MGQ3NzFkMWYzMTk5Y2NkMzYzMTRkNTBhNmM0MmMzNDhiYTcgcmVsZWFzZTIyLW1haW50CisyOTIyOSBiNGVkOWY5MzE5Y2RlNDExNWRhMWYxNTk0ZThlYzA3MDQwMmEwNmEzIHJlbGVhc2UyMi1tYWludAorMjkyMzAgZjQ0N2I2OTYwMWI5MTU2ZTFkNWFhMjBmMTA1OTU3NWEzYmU1ZGUyOCBsZWdhY3ktdHJ1bmsKKzI5MjMxIGNhOTg5YTcxYjZjN2RkN2RjZDExNWZiZjFmOWUyNzA2MzFmYmEzYTAgcmVsZWFzZTIyLW1haW50CisyOTIzMiA3MWUzYThlOWQ4ODQwNjFjMWQ1N2Y5NmI5OWEyNDFmODE0OWUzOTU0IHJlbGVhc2UyMi1tYWludAorMjkyMzMgNDQ3MjlmYmIzZDViYmMxYWZjNmM3ZWE3MGVjYzM2ZGMyMmExMjBkNCBsZWdhY3ktdHJ1bmsKKzI5MjM0IDhhZTljMGIwYWEwZjE1NGRjYzQ4ZGYxNWExZDNjY2JiYjQ2NWYzMTQgbGVnYWN5LXRydW5rCisyOTIzNSA3YTU3ZGRmNzI3OTRlZjlmMTM5YTY0ZjBjMGU4YmU5NDhjM2RkZmE2IHJlbGVhc2UyMi1tYWludAorMjkyMzYgMDM3ZGZiYTA3MGFjNzhjMzhhNjAyZDJkYTk5Zjc5NDNjNzVkNDVmMiByZWxlYXNlMjItbWFpbnQKKzI5MjM3IDU2OThmMGZlMmVhMDA5MDA2MDhlYjc0YmIzM2FkZTYzMGYzNzE2ZmEgbGVnYWN5LXRydW5rCisyOTIzOCA5NTFlM2ZlN2VkM2FkM2E1NmU0YjZjYjc3YzgxZDdkM2E4YzIwOTE4IGxlZ2FjeS10cnVuaworMjkyMzkgM2E4NzlmMmZjYTA2NmFkMjY4MjQ4NjBlNDE5NmVlNWJhYzhmODE4MCBsZWdhY3ktdHJ1bmsKKzI5MjQwIGQ1ODcxZDZlNzM1ZDc0ZGZjNzE1YWVhYTY4OTEzYmIwZGY3MjhkYzggbGVnYWN5LXRydW5rCisyOTI0MSAzNjIzMDFhOGMzZTQyODk4NmQ0MDUyM2MyNGU5Y2QzZTM1MTk1MjdkIHJlbGVhc2UyMi1tYWludAorMjkyNDIgOTFlYmY0ODhiNWExODdiYjNjYjMxMjM5ZTEzNjBhNGU1NDhmOTFiZSBsZWdhY3ktdHJ1bmsKKzI5MjQzIGMzNTVmZDM3ZDY0MDdiMTQyZmMyZGYxNzhjZmQ4NTQyMDgzNzk5ZjEgcmVsZWFzZTIyLW1haW50CisyOTI0NCA4NGVlNWE0OTk3NDMwMTA2ODg2ZjlkNjg5ZTM0ZjZlNzI2ODJiYjFjIGxlZ2FjeS10cnVuaworMjkyNDYgZWRmNWU3ZTU1ZDE0MGE3NzE3NWU3MDJhZjU2ZGVjNzExYWQ5NmVmZCByZWxlYXNlMjItbWFpbnQKKzI5MjQ3IGFkZThhZjFhYTNjNjhmNDMzYjY3MmY4ZDE3OTFlZTlkNjNhM2I4MGQgcmVsZWFzZTIyLW1haW50CisyOTI0OCAxZGFjYjZhYzM4ZTljZWU1MzBhN2Y5NTBiNDc4Yjg5YmFkMWU1Y2Y4IHJlbGVhc2UyMi1tYWludAorMjkyNDkgY2M0MWI5Y2FjYWU4NDdlNTEzZjZmYzUxMzQ4NGJlMmE0NTc4NjM4OSBsZWdhY3ktdHJ1bmsKKzI5MjUwIGYwYTc0YWUwOWFkNzNlNDhhMzUxOTU1ZDYwOWE4ODVjNzAwZjkyOGEgcmVsZWFzZTIyLW1haW50CisyOTI1MSAyZWY3MWYzNTFjNzRhMmUxZjUwZjEzNmUyNmRhZmRhYTBlYjRiMjVjIGxlZ2FjeS10cnVuaworMjkyNTIgNDIzYWE1ZWY5MjQ3YmQ0ZjVkZmViZmM0ODFiOTAwNzUyNDAxOTcxZiByZWxlYXNlMjItbWFpbnQKKzI5MjUzIGNmMThjYTBlZWE4OTJkNTViNDkzOTQ4YmYxMmZjZmYxNDhhMmQ4NGIgbGVnYWN5LXRydW5rCisyOTI1NCBhZjIwYWVhYWE5ODIwNGEwNDYyN2QyN2JmYzljZjI2Yzc2YjhkZjljIGxlZ2FjeS10cnVuaworMjkyNTUgYmYzODQxMTFiM2IzOGY3ZjgyMTdlMWRiMDI4NmVmYjUyMTE5NDU2ZiByZWxlYXNlMjItbWFpbnQKKzI5MjU2IGVhMWE0Y2ViYzUzMGE1YjNkZTdlYmRlOGZlODhhNDMwYWRhZDYyNmQgcmVsZWFzZTIyLW1haW50CisyOTI1NiA2MWQ1MzE1MzNhODYyMjRhMWMyNjkxN2MxODAxM2Q5MWY1OTJmYmZiIHJlbGVhc2UyMi1tYWludAorMjkyNTggODM4Mjg1ODNkOTE3MzhmNmJhODZlNTY4ODg4ZmM1Zjc1MDY2MWYzOSBsZWdhY3ktdHJ1bmsKKzI5MjU5IDMxYjJmYjQ0ODUxNDYzMmE1NTE5ZGI3NjdmOWU3ZjcyZmFkMzUzYzMgbGVnYWN5LXRydW5rCisyOTI2MCBhM2Q2MTJmMDU2M2YxNjQzNmRiN2UwY2E2NTRkOTEyMmZkZjc2NTQzIGxlZ2FjeS10cnVuaworMjkyNjEgYjg1OGY0Yzg4M2RkZGU0ZDA4NGM5YjhlNGJkNGJlYjM4YmY5ZGYzNyBsZWdhY3ktdHJ1bmsKKzI5MjYyIDAwMWI3ODlmMWY4NGMwMDc4Y2NjNTFmOWQ2ZGVjYjBmYzEyMmM5MzMgbGVnYWN5LXRydW5rCisyOTI2MyBhYzE0MzE3YTlhZThiMzE2ZTRiYTUyN2M3MDc0OTJjZjc3NGY2ZGY1IGxlZ2FjeS10cnVuaworMjkyNjQgM2VhZmJkZTU2YjIxOWYxZGFhNWUyYzg1MmVhZTA5YWMxYmZjNWRjMSBsZWdhY3ktdHJ1bmsKKzI5MjY1IDY2ZTNlNWYwOTNjYTExMzc0ODdkYzgwODY5M2ZiY2YzYmQ0MjZlOGEgbGVnYWN5LXRydW5rCisyOTI2NiA4NWM4N2IzYWM5NmJjMjZlNTc0Zjk1NGUzMWI3NmJmOTRhNWNiODc1IGxlZ2FjeS10cnVuaworMjkyNjcgNmM5MzBlMjU2YTE2ZDI0ODk4NmFlZDc5MDNkNzQ1M2VjZjA5MGY1ZCBsZWdhY3ktdHJ1bmsKKzI5MjY4IGJjODFkNTMxYzYyOTMyMjUyYTcyNThlMzZiODIxMWY3ZGZhOWJjNWMgbGVnYWN5LXRydW5rCisyOTI2OSAzNDI4NDgyNWQ5Y2Q4MWMyOTMzM2ZlZDg5YTNmMTk0ZGVkNWZmYTFkIGxlZ2FjeS10cnVuaworMjkyNzAgYzc3ZDgzNTcwYjNmY2FmZjZhMzZiNzgyMDQ4NDZlNWY5ZTA0Yzg2YSBsZWdhY3ktdHJ1bmsKKzI5MjcxIGFiOWQ0MDE2YjU4N2Q1YWU5YTdkNWU5NDJmMjE0YWRlYmEzYTg5OGEgbGVnYWN5LXRydW5rCisyOTI3MiA2MDAxMjY1ZWM2ODYxNTZjN2E3YTRkMTkyZTMwNWFjYWEzMDA1ZjJmIGxlZ2FjeS10cnVuaworMjkyNzMgYjk3NjlmNzEzM2M2MGFjMmI0MjZhMjQxZjdlZDNjMjE0ZWMyMjZkYSBsZWdhY3ktdHJ1bmsKKzI5Mjc0IDBiYmVhNGRjZDliZWQ2ZDgxYzkyNzQ1Y2Y2OGU4ODhiMTZmYmNmOTYgbGVnYWN5LXRydW5rCisyOTI3NSAzN2JkMmE5MDFjMTAwYTlmY2ZjMGJiYzU1NDRiZTdhMTk4ZDdlMTI5IGxlZ2FjeS10cnVuaworMjkyNzYgZmRjYTg3YzQyMzRlYTQ2YTU0MmFmYzE3OGI3MjAwZTVlNzQxNDFlNCBsZWdhY3ktdHJ1bmsKKzI5Mjc3IGNkY2IxMDJmOGU1NmMyY2Y0YTkwYTg3M2Y0M2Y1YmI1YmE3ZGRiYWUgbGVnYWN5LXRydW5rCisyOTI3OCA5MTUxMTI2NzExNTJmNDNmYTlkN2RjYjZlZmEzMDY2NWE4NjFkOTE3IGxlZ2FjeS10cnVuaworMjkyNzkgNTQ4MzQzNjNjY2YwZGE2OWYzNDBkMGZiNzQxN2RlYTJlNTZlNmQwMCBsZWdhY3ktdHJ1bmsKKzI5MjgwIDVkMzUyZGU5NDQxNTgwYzgzYzJkYzAyYTZlYzQwNjkxNDY4MTdiNzMgbGVnYWN5LXRydW5rCisyOTI4MSA3Nzc5OThhMjI3Yjc0ZDE3ZjRkY2IyNzE5MmViZTdiOWU5YWU2OWMyIGxlZ2FjeS10cnVuaworMjkyODIgYjhjYmRiNzM1Y2YyYjE5OWU1NjRmOTRlOTE4OWI0YWY0MjBiNTY5OSByZWxlYXNlMjItbWFpbnQKKzI5MjgzIDRhOTJjN2Q5ZDQxNTRiMDVmYmQyNDVmZmUwNmRhZDhhNGUwZDcwNjAgcmVsZWFzZTIyLW1haW50CisyOTI4NCA3NmFjMTYyOTNlNGI2Yzc0MDdlYTk1MTRmOTM3MmI3ZDgxYTBmODFjIGxlZ2FjeS10cnVuaworMjkyODUgZmY2N2Q1ZmYxMjNlNTY5Y2IwYjU1NWNjNGU0OTg3ZTc0MzQ0YzNhZCBsZWdhY3ktdHJ1bmsKKzI5Mjg2IDc5NDE5ODk3YTM2ZmU3OTc3NTU2Yjc0ZDYwMDhiNTY2Y2YxMjIzNDAgbGVnYWN5LXRydW5rCisyOTI4NyBjNDQwM2EzZWZhNWQ1ZjhiOGQ4NGU0NmNkMmI4OThkYzZiZmQxNTAzIGxlZ2FjeS10cnVuaworMjkyODggMTIyMjdkNzlmNmJhNGM3NmRmMDVmYzY3MWYxNWM2Yjc1MTg2ZmVjMCBsZWdhY3ktdHJ1bmsKKzI5Mjg5IDBmNGU5OThlM2ViYjYzMzRjYjFiYTdhNTIxMzY1YjZkZTAzMGVmNzEgbGVnYWN5LXRydW5rCisyOTI5MCAwMzJmMTk2MDU5YWEwYjRmNzFlMGM4MGU0ZmNjMGZlOTdhNmFiZTEzIGxlZ2FjeS10cnVuaworMjkyOTEgOTkwYjI3NTE0OTM4MmI0ZTdkN2Q5NGI0YWY0OGFmOTFkYmE2YzQyOSBsZWdhY3ktdHJ1bmsKKzI5MjkyIDFhZmIyMjhlNDI2NWI1YTg2ZjA4YzBjODRkYjQwNjA2OTQzMTUwMTYgbGVnYWN5LXRydW5rCisyOTI5MyBjZWJlZTJhOWUzY2Y5OTYwYzAwNTU1MzVmMzlhMDRiNWVhZmU1NmI5IGxlZ2FjeS10cnVuaworMjkyOTQgYzJkZDQxMzAxODQxMDhiZTUzYjUxZjdlMzlhODU4OWYxZmFjNTMxMCBsZWdhY3ktdHJ1bmsKKzI5Mjk1IDA5M2ZlNWI5ZjZmOTQ5YWE1YmJkMTE0ZjAzNWM5MjhjMDFkNTVjOTUgbGVnYWN5LXRydW5rCisyOTI5NiA3ZWE2NzRhYzU5MGVmNTc0OGQzYzRhMWRiNzQxNzYwNzc0YzE1NzEzIGxlZ2FjeS10cnVuaworMjkyOTcgZGM0MjBkZTE3YTZlZTYzY2VlMDIwYjUxOTY0N2ExM2YyYTM0NTYzMSBsZWdhY3ktdHJ1bmsKKzI5Mjk4IGRlYWJkMDUzYjZkZTFmNGVkNjU2YWZkMzk3OTVmZmU5ODU3ZDdhYzkgbGVnYWN5LXRydW5rCisyOTI5OSA4MDUwMTU3YTQ0MzBiYjdiZDg3MjEzNTk4Yjc0Mzg0YmIwMDAzYTk4IGxlZ2FjeS10cnVuaworMjkzMDAgMDkwYjcyYzBkMmViNzMwMjU5YTlhNzYyOTVkZTI1MTI2ZDFmYTg2YSBsZWdhY3ktdHJ1bmsKKzI5MzAxIDQ0Y2M3YzYyZDk4ZGIzNzc2MWM0MzE3YzU0ZWM1MmYyZTUwMjdjZmYgcmVsZWFzZTIyLW1haW50CisyOTMwMiAwMzViOGRlYjUyYzFlZjRkMGViNTMwMTdjYTdhNDAyYzE4ZWU3Mzk2IHJlbGVhc2UyMi1tYWludAorMjkzMDMgNDcwMjkyMTI5N2QxMjU1YTEwY2M5YzczYmQxMjg3YjM1YTA3MTA3MSBsZWdhY3ktdHJ1bmsKKzI5MzA0IGE4OWQwMTQ1NTllMDU3ZjAxNjIzMjljYzRkOGU0NWI5NzA5ZWM2NGQgbGVnYWN5LXRydW5rCisyOTMwNSAyZjM2NDdiMjFiMDc2MzM5MGYyZDE3ODc1MTQxZDgzNTU0ZjQ5ZmY4IGxlZ2FjeS10cnVuaworMjkzMDYgODU0MDg4N2JjZWM2YzliOTBhMmFhYWI0MTAyMjc5NTIyZDFmN2M1OSByZWxlYXNlMjItbWFpbnQKKzI5MzA3IDI0MzUwMzkyNmM4MWQ4MGVjNTNlMWFiMDRiMDM1ZDMzNWJlZGQwNDIgbGVnYWN5LXRydW5rCisyOTMwOCBlZWE0MGM0MTcyMDUzOWZiZjdiMzQzMGQwZDBiYTMzMTk5YjEyNzcyIHJlbGVhc2UyMi1tYWludAorMjkzMDkgMDllM2YwZDhiZTEwYmViNWFiMGVmZTg0ODRhZGE0N2I0YTdiMjJjOSByZWxlYXNlMjItbWFpbnQKKzI5MzEwIGVhYjc5NDAyNzdmYmIzYzEzNGJkYzQ0MTE4NzZkMmU5MmMzNGI3YzkgbGVnYWN5LXRydW5rCisyOTMxMSA3YjdiOTY1NTU4NDJhOTRkNDY3NTczYzQ2YzI1YzQ3MDViMzNjZDFhIHJlbGVhc2UyMi1tYWludAorMjkzMTIgMzFiZGM2NmZiMzA3ZjAxNWNmMGU4YzA3MDhhNTg1OTlkNGFkMzYxYyBsZWdhY3ktdHJ1bmsKKzI5MzEzIDRhY2I1NTAxYjQ5MDBjNzEzZDAyMmYwM2RlNzgxNGM0ZWI5ZjVjZjMgbGVnYWN5LXRydW5rCisyOTMxNCA4ZmIxMmFjNzljOTM3YWE0Mzc4NTk2NTZmYjFhZDYxM2FiNjE1YjQ3IHJlbGVhc2UyMi1tYWludAorMjkzMTUgZWVkMGZjZjg1YjYyMjkwNDI5YzIxMTljNWRmZDdmMGNlMDY3MzA4ZCBsZWdhY3ktdHJ1bmsKKzI5MzE2IGE1ZGIyNDZkOTRhMGI5MWFkOTQ0MzRiMmM5NzZmOTUzMDNmZTI5MzcgcmVsZWFzZTIyLW1haW50CisyOTMxNyAwNTdkZTQxZGFmNDg5MmQwMWZmZGU5OWUzODZmYjM0NDZiNjdlNzk2IGxlZ2FjeS10cnVuaworMjkzMTggNjczODFlYmQ1ZjRmNzI2MDgzYWI4NTVkN2EyNWU0Zjc0ODAxOGNkYyBsZWdhY3ktdHJ1bmsKKzI5MzE5IDc4ODU4OTlmYjQzZWI1MGNkMjk5NDJhZmY3MTA0NGFiYjdiMDgyMWEgbGVnYWN5LXRydW5rCisyOTMyMCAxZjVmNjQ4MTg4NmQ5YWIzNDgxMWRlNmU0NWY5MzA2MjVmNTJmN2Q1IGxlZ2FjeS10cnVuaworMjkzMjEgNjgwYmZjYzljYTA2NmM2YzZkZTI3ZGMwM2U0M2JhYzdkZDBiNzJjNSBsZWdhY3ktdHJ1bmsKKzI5MzIyIDJmOWIwYTM1ZTIwNTc4OGY3ZTIzYTFiZjQ3N2QwODgwNDJhMjQ4MWEgbGVnYWN5LXRydW5rCisyOTMyMyBhMTFjZmFlNzFkZWIwNzg2ZTYyMjMwMDcwNDk4OTQwMGNhOTY1NDBmIHJlbGVhc2UyMi1tYWludAorMjkzMjQgODRhM2RkOTk0Y2QxODgwNGY2MzNiNmM4M2Y1ZjI5NmQwYmQxMzUzNSBsZWdhY3ktdHJ1bmsKKzI5MzI1IDU0ZjMyYmE3MDQ3Y2IzZmIxODkyMDcxM2U3YmI0ZTRiZTU4YzVlY2YgcmVsZWFzZTIyLW1haW50CisyOTMyNiA5ZGQ5YzUzMWNhNzhjNGYxMGRjMTE2NGM2MTI5OTgwMzVkNjcwNWM0IGxlZ2FjeS10cnVuaworMjkzMjcgNGM4YThjNzRmNGJkYTk0ZmYzODVmNjVjMTVlNGJmMjM3ZjBjZmYwYiByZWxlYXNlMjItbWFpbnQKKzI5MzI4IDgyM2U5NDdlMjQ1MDI1N2ZmYzU3Yzk4MWQyNWNkYTFiZmFlZWE2Y2YgbGVnYWN5LXRydW5rCisyOTMyOSAzNWY0NzZkNjQ4MWVmNDI5ZGVkYWMwZTYyOTQyZjM2MjkwOTNhOGZiIGxlZ2FjeS10cnVuaworMjkzMzAgNDFlMDM2MWEyMTkxMjJmYWU3MzNjMGY2ZDJkNTMyZjEwYTM0YTU2MiByZWxlYXNlMjItbWFpbnQKKzI5MzMxIGU1NmI1MmU3OGJjOTc5MGI1M2I2Nzg4NTBhM2YzN2QyZjI4MWRjOTggbGVnYWN5LXRydW5rCisyOTMzMiAxNTFhYTM0MzRhYTY3MDIzOTcyY2E3M2FkZGNjZmMzNzg5NDE3YTk3IGxlZ2FjeS10cnVuaworMjkzMzMgZDE3ZmZhMDUyMmI3NTllZTk4YTczY2Q1MWQ2N2I4ZGQ2OTllZWFhZSBsZWdhY3ktdHJ1bmsKKzI5MzM0IGI5YWE4NzFmODQ0YmZjZmZjZWM2MjU2ZTcyMTI2NTJiY2MyZmI4YTYgbGVnYWN5LXRydW5rCisyOTMzNSBiN2IwMTJlNzhkYTM1ZTNiYzU1MTdjNTIwMTFkNWExYTk2YjliMzkwIGxlZ2FjeS10cnVuaworMjkzMzYgMmIxNTgyNjdiMDBlNGMwOWMwMTEzMDdiMDljMjhhMjYyZTcyZWVhNCBsZWdhY3ktdHJ1bmsKKzI5MzM3IDJiY2I0MTYxMWZhZTkxOTM1MmI0MDcyYjA5YTdmYmVhOWEyMGIxOTIgbGVnYWN5LXRydW5rCisyOTMzOCA0ZWI5NGM1NmM0NmE0NzFhNDZkM2Q5YTdkMGQ3YTA4MDEyZjc5MTgxIGxlZ2FjeS10cnVuaworMjkzMzkgY2I5MTBjMzk0OTI3MTQ5NTM3NTAxNDAyMTNlYTI1ZTU2OTBhMzYyNCBsZWdhY3ktdHJ1bmsKKzI5MzQwIGE5Y2ZlYjQyZTI0MDk5ODY0YTNmYzA2NmNjZDMxN2Q5ZGJmMzdkNzcgbGVnYWN5LXRydW5rCisyOTM0MSA1N2ZiM2Q1ZTNkZDM3NjAxZWZmODI3OWViMDY1YjdhZGRhMTVmYmQ1IGxlZ2FjeS10cnVuaworMjkzNDIgNzkzMDVhMmVmYThjODc4ZWMzN2IxYmM5MGZmOWE5YjExNjg5YmVhOCBsZWdhY3ktdHJ1bmsKKzI5MzQzIDkyNTNmZTg2YjkyMmZhMWExZDEyYjIwZTAxZTE2MWMzM2E5YjNmMGIgbGVnYWN5LXRydW5rCisyOTM0NCA1ZjdhMzM0YzA5MjUxMDk5NDNiNWZlZGJmNWVlODgwNDdhZmE1YjdkIGxlZ2FjeS10cnVuaworMjkzNDUgMTU2MDdlYzQ5ZmFmMTA4MTg0N2JkYjkwNDgyOTcxY2ZkN2Q4Mzg3YyBsZWdhY3ktdHJ1bmsKKzI5MzQ2IGQ0Y2ZhNDA0M2MwOTRkN2JhMGJmMDVjNmM0MTIxNDk5OTNjYTYyYzIgbGVnYWN5LXRydW5rCisyOTM0NyBjYTAyNWU5ZmU1YmMyZTkwNGI0MjNlZjdhYWVhZWEwNmJmN2Y4N2RlIGFzdC1icmFuY2gKKzI5MzQ4IDgzYTMyYzU0N2I0OTkzYjYwZjVhNDgzYTQ4MmRkYTdiZThmZWJmZjAgYXN0LWJyYW5jaAorMjkzNDkgMDk4Y2RiYWQ1NWNmMmU3NjA0MmY2NzI0NDZlMDE4M2I0ODEyNDNkYSBhc3QtYnJhbmNoCisyOTM1MCAyZDdmNDI3NzA3MzMyNWNhODhkYTM4N2YxYThjZGY4MTdlNTQ3M2M5IGFzdC1icmFuY2gKKzI5MzUxIDQ1ODdkMWFmMmM0MTQzZTVhNDkwYWZkNjNhOWQzMTBlYmIwYjU0YWEgYXN0LWJyYW5jaAorMjkzNTIgYWEyZWE1ZmY1ZjQyNzA5ZDc0OGQ2OGQ5N2RjODNjMTU5ZTI5ZTdiNCBhc3QtYnJhbmNoCisyOTM1MyAwN2M2ZDNiOTI5M2MyNzVkYzk1MTk5ZTQzNmJiNmMwM2JkNGNhOTQ0IGFzdC1icmFuY2gKKzI5MzU0IDQ2YjU2NzNjYTM4MGRhYjg0NWE1ZmQ5OWFkMmJiOGRlZGI5MDEyMWQgYXN0LWJyYW5jaAorMjkzNTUgZTM2NWU2YmY0MWJiMDFmNjgzMmJkZjIzYmUxMTZkNzk0ZTU4Nzc0NCBsZWdhY3ktdHJ1bmsKKzI5MzU2IDRkNTAzMThiM2ViMTgxZGI3ZDYyODhmZDU1YTAzNTAxZWI5NmNlNjIgcmVsZWFzZTIyLW1haW50CisyOTM1NyA4ZDQ0ZDYxNDk0MWQ0NzdhNjZiYzMxN2YwNDU2MzNjZGEyMjBiNjA5IGxlZ2FjeS10cnVuaworMjkzNTggNmYxODUwOGJlZDNkMjc4ODVjYmRmZmFlOWEzZGQxOGVkN2VmZGYxNiBsZWdhY3ktdHJ1bmsKKzI5MzU5IDdlODBlN2QwNWExNmM4MzliN2RhMjc1YTY5NDY4MzJjNGM4NjZjOGMgbGVnYWN5LXRydW5rCisyOTM2MCAzNGYxN2ZiNDljNTEzMTEwMzk4NmNlOWIyMTVkMTFiNGIwZTYyYmM1IGxlZ2FjeS10cnVuaworMjkzNjEgZmVjMTViYWQzODZkOWYwZDMwNzA1YzRkNmMzNDUwNDIzMTRiYjAzNyBsZWdhY3ktdHJ1bmsKKzI5MzYyIGE3MGZjYzVkYmJhNTA1ZGRiNTU4Njk3ZjE3NmEzZWQwOGE4NGNkZjMgcmVsZWFzZTIyLW1haW50CisyOTM2MyA1MjlkYTUwNWVhYmM3MzEwMzg5MzBiZjg3MTFiZGQ5YmY0MTJmMDkyIGxlZ2FjeS10cnVuaworMjkzNjQgMTc1MDQxZTM0NTg3YTc2MWVhYmY2ZTg3MGFhOTA0YThkYzk4NDFmMyBsZWdhY3ktdHJ1bmsKKzI5MzY1IDdmMDMwYjhmOTE3ZDkwYjAyYzRmMzllMGIwMmUxMWViZWYxYzhlYWEgcmVsZWFzZTIyLW1haW50CisyOTM2NiBmYmVhNzBhNDAyOTE1NDIxODMxZmE1Y2IyYTE0ODBhNzFmOTIyY2JhIHJlbGVhc2UyMi1tYWludAorMjkzNjcgYWMyMzllZTBjOWU4Yjg3MWRhMDg2ZDA0YTRjM2Q2N2Y3ZjY2NmQ0MSByZWxlYXNlMjItbWFpbnQKKzI5MzY4IGNmODc5MjAzNTFhY2U5Mjc3YTY3YjkxNGMzNTg1NmYzYTIwM2NiYzQgbGVnYWN5LXRydW5rCisyOTM2OSA0MDJmZGFlNjdlNDQwZjRkODZhNTczOTEzNzY0NGJmNThjZDRiMWZlIHJlbGVhc2UyMi1tYWludAorMjkzNzAgMTk1MDBjOWI1OGMxNjFiZmM1M2E2ZTdjNjAwNmY2NTllYzNlNjk5ZiBsZWdhY3ktdHJ1bmsKKzI5MzcxIDUwOWJiMGI2ZGZhM2NiY2M5MGI3MzcyMGZiODY4ZTc2NDA3ODJjNzkgbGVnYWN5LXRydW5rCisyOTM3MiAxMjQ5MjQ1MjEyZTQ0NjE2MWM0ZjVhN2VmN2IwY2RhNGZmYmFhYzhmIHJlbGVhc2UyMi1tYWludAorMjkzNzMgMzdkODdkYzgwM2Q3YTRiZDYyZGU3NWYxMTIyYWVlMTdkYzM2ODhjOSBsZWdhY3ktdHJ1bmsKKzI5Mzc0IGQzYjczNzdjOGFmYWRlMTIwOWRmODkwMDA0ODcyMzMyMmU3NTc4NjQgbGVnYWN5LXRydW5rCisyOTM3NSBjMzM5OGMyNWRmZWY3ZDkwNjU2ZWQzY2RhMTM3MWEzMGMyYzY5MTk1IGxlZ2FjeS10cnVuaworMjkzNzYgZmI3YzUyY2E5ODQwNTEwZTZmZjFiNmIzNzkwMTM5Mzc0ZGNkNzZiNCByZWxlYXNlMjItbWFpbnQKKzI5Mzc3IDA5NWRiYmViYTljMDRmZDY0NDM1M2QzOTUxZDQwODNjZGY0YWE5ZjUgbGVnYWN5LXRydW5rCisyOTM3OCA0ODdkM2MyNDkwYmMwMzU4ODEyMGVhZDI1YWQ5MDdmYTk4NWYxMGE1IHJlbGVhc2UyMi1tYWludAorMjkzNzkgMDNjM2Y2MTBlMDU0MTMwOGI0YjU4NGU2ZjJlODNkMTViMTJlMmVkYyBsZWdhY3ktdHJ1bmsKKzI5MzgwIDUxODI4ZWE1MGI1OWMwZTgxZTRjNzdjZTUwYTQxYzlmNDAyNjA4NTMgbGVnYWN5LXRydW5rCisyOTM4MSAxNzk0ODI4NzVjZmJhNWM0MGY3Zjg4NzJmNzE4OWVlNWZhYzg5ODY5IHJlbGVhc2UyMi1tYWludAorMjkzODIgNTA5MDVkYjM1ZGE1YjBmMDY5ZmRjNGYyNWQ1OWIwMTZmYzhjMThiNyBsZWdhY3ktdHJ1bmsKKzI5MzgzIDZlYTllZWY5OTEwODQ3ODYzMDhmOTg3OGVhNjAyM2NmYTg5ZjcyZmMgcmVsZWFzZTIyLW1haW50CisyOTM4NCBkZjA1NWE5ZWZmOWNmOTA3NzhjMGRiZTZkYzMwYTkxMGIyMGQ3YzEyIGxlZ2FjeS10cnVuaworMjkzODUgMGJhYzY2ZTFiMzU2OTA0ZWFlNDJkNzg4MGNlN2IzZmE0NjU1YjY3MiBsZWdhY3ktdHJ1bmsKKzI5Mzg2IGFjY2QyZjU0ZTE4NDdhYzQ1YTllZDg5MDM5NDE4NGUyYWYxZWJhOGIgbGVnYWN5LXRydW5rCisyOTM4NyBkMzJjNDVkMjc4YjI0OTBkZjU1ZTlmNzA4MjNmMjExYWE4NDhlYWM1IGxlZ2FjeS10cnVuaworMjkzODggZjdkYTMzYmNlMWQ5Mzk5NmM4ZTdiY2YyNDQ2MDE2Mzk4MmY4Mjc2MiBsZWdhY3ktdHJ1bmsKKzI5Mzg5IGZiYTE2YjliYzk1MTdmNGJkOWY1NDNhMmZjMzg2MTVmZjFlNWU4MzcgbGVnYWN5LXRydW5rCisyOTM5MCBiMDYzODMyOWUzYjlhMWE5YjY1YmExYjcwYmU1YzMxMGZiYmU2ZWJkIHJlbGVhc2UyMi1tYWludAorMjkzOTEgZjJkYWUzZDlhNzViZDNjM2U1ODZkZTIyYTI5YzE2Yzk0MTI0MDdmOSByZWxlYXNlMjItbWFpbnQKKzI5MzkyIDhiYjYwMDNmN2Y1NGM1OTY2ZWFlZWU0OGU2ZDkwYmZkNTBiZjIwMGIgbGVnYWN5LXRydW5rCisyOTM5MyA1YjZkNTViNDUyODdjNDM0ZjYyZDEwYzc3ZWE0MmZiNzA3N2JlYWQ1IGxlZ2FjeS10cnVuaworMjkzOTQgOTkwMWZkYTdjMzY2NGE3Zjc1MzIzMmU5ZWE4ZGU4ZWZlMDFjZWI1OSBsZWdhY3ktdHJ1bmsKKzI5Mzk1IDRlZjc2ODZjNGM4ODlmNjcxNjY4NjJiMjNlYjQxNmQ5OTFiNjcwZjMgbGVnYWN5LXRydW5rCisyOTM5NiA0ZjRlMDI2MGI3NzEzMjM4MTNmMzdjZDk1YTBiZmYxNWMxMWRmYjViIHJlbGVhc2UyMi1tYWludAorMjkzOTcgZThmYzQ1OWVjMDE1NTg1YmZiMTAxMjk3MTliZjE1MTlmYzM2MTk1YyBsZWdhY3ktdHJ1bmsKKzI5Mzk4IDZlNDE0ZmJhNDZmNjhjMjlhMDg2NWNjYzVjZTRkYTlkZGQ1MWU1YTMgbGVnYWN5LXRydW5rCisyOTM5OSA4MzRiMGUwMzg5YzVhOWIzYTkyODk1NDI1Yzc0ZDY5NzA0YTM5NzVjIGxlZ2FjeS10cnVuaworMjk0MDAgZGM0YTAzMzZhMmEzM2NjMWM2YTg0OWY0MzFkNTM4MzYyNzIyNjZkZSBsZWdhY3ktdHJ1bmsKKzI5NDAxIDZkNTU0MmNhMjc3YTM5YTg5NzY0YzY3YTM3MDc4MjUyYWYzOTU2NGQgbGVnYWN5LXRydW5rCisyOTQwMiA1ODk0MWZjYjZmNWJjMTU2YTFiMWViOGNkNDUyNDdkNzQ2MjUyODUyIGxlZ2FjeS10cnVuaworMjk0MDMgNzA0OTI2OGYyNTJkMjcyNWU3OGQ5NTU2YWRjOWQ3Yzg0M2FlZGNkYyBsZWdhY3ktdHJ1bmsKKzI5NDA0IDc1NzU2Yzg1NThiZDkxMTcxY2M1ODQwNzM3MzY1ZGNlOWVkNWY1NDUgbGVnYWN5LXRydW5rCisyOTQwNSBkZWY5NjA5ZDkzNjljYThhZTZlZTI5ZDdhM2E1ZjM0YWY5ZWJlNDkyIGxlZ2FjeS10cnVuaworMjk0MDYgMzA2NWI1NGUzYWI3MWJmMTdkZjI2YTFiZDNiMGIwN2Q3Y2M5N2VmYyBsZWdhY3ktdHJ1bmsKKzI5NDA3IDExZmNjY2NkMzYwMDQ3OTE2NzRhNDVmYmYyNGNiZTAyZGQ5MjI2NmYgbGVnYWN5LXRydW5rCisyOTQwOCA3OTA3Mjk0Nzc2MTBlYTc3YjgxNjc3M2JkNzM2MDI2ZmRkNWU5OWFmIGxlZ2FjeS10cnVuaworMjk0MDkgMDRjYzEyYmRjZWRlYWE3NWJkNTRiMGU2MjlmZWIwMzE0YzU4OGRhZSBsZWdhY3ktdHJ1bmsKKzI5NDEwIGJlODgxNjE0ODQ4YjI4ODYzZmYyM2Q1N2ZlMDEwN2U4OTY2ZmVhMDMgbGVnYWN5LXRydW5rCisyOTQxMSA5NDI0MGFkNTBkYmUyZTcxYjhjYjNkNjhmZWE5NTEzZWM3ZmVkNzc1IGxlZ2FjeS10cnVuaworMjk0MTIgYjZlZTgwNDdiMjUwZDRhOTRkZmNjOTZmOGE5ZTVlYzJiMDI3NjNiMiBsZWdhY3ktdHJ1bmsKKzI5NDEzIGZiNTdkNTc3N2EyNDkyYjcyNzNmMDRmNWM4YTI0MDkzYTZiNDA2MjcgbGVnYWN5LXRydW5rCisyOTQxNCA0OGU0NjEyZjg3Y2Q5MjhiOWVmN2FjOTdjM2VjNmFmMzk4MDg3YTEzIGxlZ2FjeS10cnVuaworMjk0MTUgNDNmNzAxMDljZGE1YzU1OGJlMjk2NjljNWY0OTI4OTE2ZmE0ODA4OSByZWxlYXNlMjItbWFpbnQKKzI5NDE2IGUxZGIxZjkwZTE3ZjlkMzcwZjEyNzdmYWU5NGQ3NjYwYTE1NGFjOGYgbGVnYWN5LXRydW5rCisyOTQxNyA3Yjc3M2ExMjcxYzNkZjM4MjRmNzA5ZTA0Yzg1ZWY2YjdhOTQ4YjNmIGxlZ2FjeS10cnVuaworMjk0MTggM2RiNzcyZDQ1Zjk4ODZjOWJjMjMwMTY0MmIwYzkzNzhkZmUyNjQ0ZCBsZWdhY3ktdHJ1bmsKKzI5NDE5IDI2YjQ0MGMzN2M5NGM4OTI2MWNjZjk5MzNjNmNjZTNmNTZhMmNlMzcgcmVsZWFzZTIyLW1haW50CisyOTQyMCAyNTNlOWVkZmRmYzA2MGZmNzdiNDg5NmY0YWUyYjc3MWNmMDk4OWJlIHJlbGVhc2UyMi1tYWludAorMjk0MjEgYWFlMzc2NGM0ZDU4ZDQ5MWY0YzY1ZjFhYTJlMDA0Y2UxMDIxYjZlMSByZWxlYXNlMjItbWFpbnQKKzI5NDIyIGI5MjQ2ZjhmYjhmZDMwNGNlYzczNmVlYmFhMWQyMjlhOTg3MGU4YWQgcmVsZWFzZTIyLW1haW50CisyOTQyMyA4MDhlNTEzYTJmNWMyZmM0ODg5NmY4N2E3NjIxM2FhMGRlNjA5Y2ZkIHJlbGVhc2UyMi1tYWludAorMjk0MjUgODU4NWZkOWFlY2VmOTVhZGU2NTg1ZjgxZDhmNzlhMTJkNjQ0OWYyMSBsZWdhY3ktdHJ1bmsKKzI5NDI2IDM2ZDQxOGJlYTU1MjE4ZjBmMGY2MTA0ODNmMjU2YTQ4YjYzOThhNTcgbGVnYWN5LXRydW5rCisyOTQyNyA0NDVmZWIyNmFkZmI5YWE1MjAxZjI2NDU1ZWJiMzA4MDRlOWRhNjFmIGxlZ2FjeS10cnVuaworMjk0MjggZjRmMTc2NzhmZGQ4NjU4ZGJhNGJmZmQ5ZTkyMDIwMWQxMGZmMzA3YyByZWxlYXNlMjItbWFpbnQKKzI5NDI5IDk0OWVkODM2NWQ1OGQzNTFiYzcyMDU1NmEzMWVkMGZlMmJiNTRhYTIgbGVnYWN5LXRydW5rCisyOTQzMCAxOGVkZjIzYmY0OTkzZDcxMDI5NDdlMzQ0Nzg5ZTNjMTM1YTA0M2VmIGxlZ2FjeS10cnVuaworMjk0MzEgZGJhNjBkMDI0ZTQ4NDM2M2EyZjhlOWNkMzk3NGVlY2E3YjQ0YWIxOSBsZWdhY3ktdHJ1bmsKKzI5NDMyIDA5NjY0MmQ3ZWNhMjViYjdkMmNiMjI2MzI1ODhjNTIxODBkYzcyZTAgbGVnYWN5LXRydW5rCisyOTQzMyBmYzZhMTlmNjlhYzdlMmI2MGVlNzljZWZhMmZmYzE2M2UyZDA5ZjM3IHJlbGVhc2UyMi1tYWludAorMjk0MzQgMDFiZjljODhkOTYwMzZiNjY2MmExNTkyN2FkZDI2YzI0YzQ1NmNlMyBsZWdhY3ktdHJ1bmsKKzI5NDM1IDcyNzM0YjM5ZjhhYTBhY2Y1MjZhZDIzYTY3OWFlZmE0NmFhMDI4YWUgbGVnYWN5LXRydW5rCisyOTQzNiBkOTBlZjQ2ZDA4MzgyOGJjOTVjMGJkNDZiOTExZWZlYmM5MmJlNzMxIGxlZ2FjeS10cnVuaworMjk0MzcgNGEyNGM2YTY0MjlhNjY3MzUwN2UzYTZiNzk1MzA2ZjU5OGQ2NzcxOSBsZWdhY3ktdHJ1bmsKKzI5NDM4IDkxZDNkNDQ1MmM0ODIyMGI0Njc5NWMwMzNjYzRjYmU0ZjMwNTdiMTYgbGVnYWN5LXRydW5rCisyOTQzOSBlMzQ5ZmUwOTNiMzRhOTE4NDlkMTg5OWFkYTU1YmEzYjI5OWI3ZDM0IGxlZ2FjeS10cnVuaworMjk0NDAgMzIzZTRjMTE0NmQwYzYwMjVmNmJmZGU0OGMyZjEwNjQzMGU3MjIwZiBsZWdhY3ktdHJ1bmsKKzI5NDQxIDU1MTdjMzZhYzQ5N2RjMzY0MGIwNmJjZGI5MWVkOTQzOTdhODlhNzQgcmVsZWFzZTIyLW1haW50CisyOTQ0MiA2ODc1YmQ3Y2I1NzA1NzNlZWMzM2NiZTY3NDM1ZWIxOTBjY2FhYmViIGxlZ2FjeS10cnVuaworMjk0NDMgNWI4MjhmZmUxYjM1ZjAxZWU2Y2JlMzcwMjE1ZTdiM2M3ZDlkOWI3NSBsZWdhY3ktdHJ1bmsKKzI5NDQ0IDQyNTJiMDRmM2VlZDYzNGNlMjNjY2QyMDdmOGU1NTY0NDJmMTk0ODYgbGVnYWN5LXRydW5rCisyOTQ0NSA4ZTczMzgzNDc0ZWFlYjdlZTI5MmY2ZDM5YjYzOWRjNTY5NTNiNTBmIGxlZ2FjeS10cnVuaworMjk0NDYgZDdkYTA4MGQ3NzYzMDRjOGJjMzllZDc1N2RlYjE3ZWFkYWEwOWZmMSBsZWdhY3ktdHJ1bmsKKzI5NDQ3IDQ3MmE0MmUyMDI0NDA5YWRjNTk2MGE2MzAxMmQyMjk1ZjhiMDM5MGUgbGVnYWN5LXRydW5rCisyOTQ0OCBjYjgyOThhNmVkNDdjNDRkZGYxMDY1MWE2ZTcwMmFlNDE5NjkxNzE4IGxlZ2FjeS10cnVuaworMjk0NDkgNjY2MmY5ZDQyMjBiNWNkYTA2NDVlMTZiNjM5YjNhYTk4NGYwODE2YSBsZWdhY3ktdHJ1bmsKKzI5NDUwIGE2OGM2ZDYyZmU3ODhkZjQwMDQ5MWQ4ZjY4OGFlZjM5NzI5YzRmZDIgbGVnYWN5LXRydW5rCisyOTQ1MSAwNDBhZjljNzM2YmIxOThiZTg1MzYzMjdmYmYxMjc1M2RlNWVjN2MwIGxlZ2FjeS10cnVuaworMjk0NTIgYjY0NzhkNDYzNTU1NGJlMTUyOWFlOTVkYTg5MTI0ZWNkNWJkMzE2ZSBsZWdhY3ktdHJ1bmsKKzI5NDUzIDJkODM3ZTIwODNmYWYzNTA5NDJkNmM0NmY2ZDhiOGU2NmE3ZThlNDUgbGVnYWN5LXRydW5rCisyOTQ1NCAxZDAyYjQwNWUzMWZiMjE5YzA3NTJkNDAyMjk4ZjU5ZDIwMDU5NTZlIGxlZ2FjeS10cnVuaworMjk0NTUgNGYxYjczOTZhM2M1NDI2ODk0NDc3ZTczMWViYjgwOTMzMTYzY2JhMyBsZWdhY3ktdHJ1bmsKKzI5NDU2IGQ4MTJiOGFhZWZiMzFiNDY2MmZiNmI1NmNkOTY5OWM3Yzc0NGJkYTcgbGVnYWN5LXRydW5rCisyOTQ1NyAwMTQ3ZWJlZjk0NTNjMzYxZjQzODQyYTllMzM3YTViYzQxYmJlMWNmIGxlZ2FjeS10cnVuaworMjk0NTggMDZlMDA1NjY2YzQyMjkxZjhmZGQwYjU2NTJkNWQ0NjI0YTJhODI0MCBsZWdhY3ktdHJ1bmsKKzI5NDU5IGUxYmY0NjA0YzBhNTg0YjFiYjE4MDQ4MjM5MDY1NTc3ZTgyNmUyYTkgbGVnYWN5LXRydW5rCisyOTQ2MCBkMzA4ZGY4MjRlMmQxNWJjMDEyZjljMTdkYjI1NzNjZjE5MDFkYjI4IHJlbGVhc2UyMi1tYWludAorMjk0NjEgMTUyMjE5ODA3MTQ0NzJkMTIzNGEwNmJhNGIxOThjNzNiMTVhYzI3NCBsZWdhY3ktdHJ1bmsKKzI5NDYyIDE0MjViZWEyZWE2NmExMGM4ZGIzOGJiYTAzYTVkODc0MDFkNzg3NDYgcmVsZWFzZTIyLW1haW50CisyOTQ2MyA5Y2VkM2U1MTg3ZWUxZDY2NThlZDQwZTMxZmRiMTA3NDRlNWZkNjc0IGxlZ2FjeS10cnVuaworMjk0NjQgNmUxMWFlMDRhZjEwOTQ5YTYwZTVkYmNhZjcwOGI3ZWEzMDJiNzAyNSBsZWdhY3ktdHJ1bmsKKzI5NDY1IDkwZjRlZWVmYzUxNmY5ZjNkM2UwN2MxMDVjMzFhZGYzN2YxMDBiODIgbGVnYWN5LXRydW5rCisyOTQ2NiA2MTFhZjc5YzBlODkyYjRlYzM0M2JhMGQ5ZjI5Yzk1MmJkOTFmZGVlIGxlZ2FjeS10cnVuaworMjk0NjcgMjczY2FkN2Y3ZGY3MjE5NjdkYWJiNGM0NGUxZWQ3M2E3NDJlNDFjNCBsZWdhY3ktdHJ1bmsKKzI5NDY4IDE5NzYyYTQ5MzZmYzg0YjRjMDljZTA1ZjQ2ZTE5MWEyNjIwZTJkZmEgbGVnYWN5LXRydW5rCisyOTQ2OSAwZmRmY2NkZmVjMDZmMmVlYzI0NWIzYWNiYzkxNzNlMjM3YzYyZTk2IGxlZ2FjeS10cnVuaworMjk0NzAgOTBhMDljZDE1MzA1OTMxZGY1ZDAxNzY0MzI4YjYwOTdlODNhYjlhOSBsZWdhY3ktdHJ1bmsKKzI5NDcxIGJiODEzMzQ2YjIyN2VlMWM5NjQ2MWYyYzNlNWEzOTg5NGZlNWU3YTEgbGVnYWN5LXRydW5rCisyOTQ3MiAxYWFhMTJjMDhiMzU5NDlmOTRkNTI5NjRhNmFkNjY5N2UwODZlYTJhIGxlZ2FjeS10cnVuaworMjk0NzMgYTc1MzZjZWIwNmY2M2NiZmVmYzIwOTJhZWFjY2I2ZDI3OGE2MzQ4MCBsZWdhY3ktdHJ1bmsKKzI5NDc0IDU0OGU2ZmZiZmY3NTdhYjg5NmFjZTA4OTI1MDY5NzYyOGYyYWZjYjcgbGVnYWN5LXRydW5rCisyOTQ3NSAzZjNiN2E2MDg2YjczYjNiZWIwYzg3N2I4MzZlN2JiNTlkYTljMmQ4IGxlZ2FjeS10cnVuaworMjk0NzYgOGE4OGU5NzdhNzFiYmU2M2VjMGI3YzY3MmZhNzJkM2YwZjQxMmYwNSByZWxlYXNlMjItbWFpbnQKKzI5NDc3IDgzZDIxZWE5NDU3ZGIyZWNmYzZkMTkxNDYzZDlmMmJkZjlhZTI5YmUgbGVnYWN5LXRydW5rCisyOTQ3OCBiZGUzNjYwNTQyY2QzZTE5MGFjOThmNmJkNWVhYmQ3NGIzYjk4ZmUxIHJlbGVhc2UyMi1tYWludAorMjk0NzkgNDFlY2FlYzViNGY4MWVmODNkYjdlY2MzNTIwMjBhM2RjZWJlYjZiZSBsZWdhY3ktdHJ1bmsKKzI5NDgwIDcyMDU3ZWY5MDJhYWVlMDcwZDExZmNkMzNmMzQ0MWJkZjc1NjYxMmMgcmVsZWFzZTIyLW1haW50CisyOTQ4MSAyOGNmZjYwYTYwOTcwMmRlNzk5MTcxOTY0MGU5NjA1OTFkNjc2ZDAxIGxlZ2FjeS10cnVuaworMjk0ODIgNDk0NmQ0ZjM3ZDg0ZTJhYTQ4ODhkYzBlMWFhYzU1ZWY4ODk4YTlmMSByZWxlYXNlMjItbWFpbnQKKzI5NDgzIDNkNjI3ZTNkOTU2MTM2NTIxYWE3Yjc0NDMzZDMzNzEzNTIzOWE1MTQgbGVnYWN5LXRydW5rCisyOTQ4NCAzMWI1ODQ5Y2FjNDJmYjU4MTM0MTUyYmYyZDEwNDE5NGQ5NTJjMjI0IHJlbGVhc2UyMi1tYWludAorMjk0ODUgYjI4ZTliZjBmMDQ2YWU5YTNjYzlkMTA4YTM0MzA5NmY0MTVmNzZiNyBsZWdhY3ktdHJ1bmsKKzI5NDg2IDAyOWU3NWZmZTc1MGQzNGMzYWRlMDUyMjEyZTIzMGNkZmQ2OTZjZmMgbGVnYWN5LXRydW5rCisyOTQ4NyAzNmVhMzFiYzkwNzY1MGUxMDRmODg2N2VmMzUxOGQ5OWUyOTEyZjUxIGxlZ2FjeS10cnVuaworMjk0ODggMDNiMDI3MGUxMTZiMzcyYTVjODEzZDhmMDQxZDllMmZmYjMwMWQxYiBsZWdhY3ktdHJ1bmsKKzI5NDg5IGM2Y2EzOWIxNThjZGY5YjM2MDNlZjgzMTk1ODhjNmUxMDFlNzUzMjcgcmVsZWFzZTIyLW1haW50CisyOTQ5MCAzMjYzYWQ0ZmNmODExYTE1N2VhOTkwZWNlOGI5MzhjOGRhODJlOWY4IGxlZ2FjeS10cnVuaworMjk0OTEgZDQyNDU1OGQyNGY5MDMyYTlhYTBkNzU1NGIzMTRhNjJhM2RmZGM1NCBsZWdhY3ktdHJ1bmsKKzI5NDkyIDViZTVjODRkZWEyM2ZmNzAyNDhkNjQyOWEyYTM4MmViNjI1NmM4ZjUgbGVnYWN5LXRydW5rCisyOTQ5MyBiZDY3N2M4ZTQwNjcwMjQ5NDZhY2Q2ZjBiOTYwMzk0MjZkNmI1N2ZiIGxlZ2FjeS10cnVuaworMjk0OTQgMzZkZTVhNzMxMjU3ZWJhYjE0ZWMxMWZkZmMyOGVmNDY2NGFlOTFiMSBsZWdhY3ktdHJ1bmsKKzI5NDk1IDliZmQ0N2E5YzhiMzUwMTk0YmZkNTk4NWMyMzI4ZWM0MzIxOWFjMzcgbGVnYWN5LXRydW5rCisyOTQ5NiA2ZmE1Yzk1NDA4ZWJkODQ0MThmODAzZjFhM2YwYTE3MDg3YjVhNTYxIGxlZ2FjeS10cnVuaworMjk0OTcgOGUzMjQ2ODQyNzczNGM5YWExNmI1NDIxMDY0YmViYjE3OWE2ODNjZiBsZWdhY3ktdHJ1bmsKKzI5NDk4IDc1ODMwMWVlMGJiNzY1YzhhZGU3OWJmNjQyYTFiZDZlMTYzYjcxZmIgbGVnYWN5LXRydW5rCisyOTQ5OSBmNTRlODkyNzJhZGVkMjk1M2IxOWEyNjcxNjMwOWM0ZmIyYTE4OGExIGxlZ2FjeS10cnVuaworMjk1MDAgOWI0NzM4NmJhNWI4MDU0Yzc3ZmU3Nzk5ZTdlZmVjZmJkODU0ZjQxNiBsZWdhY3ktdHJ1bmsKKzI5NTAxIDEyNDRmNGMzODM0ZjQ5MDIyZmJlODJiYjRhMTk1YzZkNDVjNmNhMjUgcmVsZWFzZTIyLW1haW50CisyOTUwMiAxOGUwOTcyMDczOGY2ZmY1MzFkNzc0NjU1NGI5ZjA0YWFmMDE0Y2I4IGxlZ2FjeS10cnVuaworMjk1MDMgMGJkYTIwYWZlNjIzM2ZiMzdkMjk5MTQzZjRlNDZkNjVmMGE0MmFhZSBsZWdhY3ktdHJ1bmsKKzI5NTA0IGQ2OGZjNDlhNzA5NjAxYmMwMDliMzJiOTZhNWNkNGI4MmI4ODkxYzMgbGVnYWN5LXRydW5rCisyOTUwNSA2NGE5NmI5N2UxZTk3Y2ViN2NkNWM2M2ViNzNiZDBmZWZkNmY2NjFiIGxlZ2FjeS10cnVuaworMjk1MDYgMmRmOThmZjJjZGRhMWE2NTI3NjQxMWNlMTNiNGRiYWQ0ZTY5NDE0MSByZWxlYXNlMjItbWFpbnQKKzI5NTA3IGEyZjM2OTM0NjM5MzA3ZWJmZTA2OGM5NDc2MDc5YTY5NTUwM2MwOWUgbGVnYWN5LXRydW5rCisyOTUwOCBmNTQzOWY4MTMzZjg1N2IzODlmNjlhNGFlYTVhMTFkZDMxNThlOGI4IGxlZ2FjeS10cnVuaworMjk1MDkgMjI1ZWExZjUyZGU5NWE5MTk2MDU1ZWI5OGZkMWE2YTVlMGYwNjNjOSBsZWdhY3ktdHJ1bmsKKzI5NTEwIDFkZTdhYzcyOWJmYTkyM2EyZTAwZDYyNTg4MjYzYTM4YTEzYmE4NTYgcmVsZWFzZTIyLW1haW50CisyOTUxMSAxODNmYzIxZmI4NjYyMzIzZGNiMzI5ODAzZjMzZWVjYTYyY2UwMGVhIGxlZ2FjeS10cnVuaworMjk1MTIgNmVkMmUyM2FhZTQ1NjUyMzgwNmUyZmQ3MTJmNDY3OTdlZGZkNDg0YiBsZWdhY3ktdHJ1bmsKKzI5NTEzIDc3MWI2ZjUyMWI5NTYxZDhlNDJlOTI0ZDFhMTU0MzNlNGM2OTM5MjMgbGVnYWN5LXRydW5rCisyOTUxNCA1MjFlODljNGZmNDQ3ODIwOTE3M2E0NTg5ODhmMzAwNjFiMTJhNjNiIGxlZ2FjeS10cnVuaworMjk1MTUgM2E3NjA2YTIyMzdiYjY5NTcyMWNkMDYzOTE1YjM1YTUwMmRkNjlhNiBsZWdhY3ktdHJ1bmsKKzI5NTE2IDUyNWNkZGI3NjgyYWNlZTdlZDhiOTM4NjRhNTc4ZDIxZTg3MjAxYWIgcmVsZWFzZTIyLW1haW50CisyOTUxNyBlOWFhMzk0YzcxOTE3MjdmYmFjNWY1ZTg1ZDgzZWQyOWM4ZjZjOTc2IGxlZ2FjeS10cnVuaworMjk1MTggY2UzNjljZDU2MjZiZTcxNDFiM2I4MmE2ZjhkMmQ5NmIwODhiY2NhYyBsZWdhY3ktdHJ1bmsKKzI5NTE5IDRiODA0NGQxZjFhYzMyODE5YTZjMGI2MDExOWM3MDZmNTdkOTFiMGYgbGVnYWN5LXRydW5rCisyOTUyMCA5ZGEwMjY5MzdmYTUyODA5NTBjNTg3OWIwZDY4ZjU4MDQzYzc5YTU0IGxlZ2FjeS10cnVuaworMjk1MjEgMWM5OWE1YTBiODdiZGU2MDJkZGEwZmJlZGNmZTQzNWExNGU0ODU0YiBsZWdhY3ktdHJ1bmsKKzI5NTIyIDZlZTJmOWI0YmY1YzRiNzJmYzEwNzc0NTU2M2JlOThmMWM5MmYzNjIgbGVnYWN5LXRydW5rCisyOTUyMyAxZGJhYmM1YmVmZjdmNTVhOWJiYzQwMmI1YmE4M2U3ODNhNjAzOGJmIGxlZ2FjeS10cnVuaworMjk1MjQgYTU1OTk3NDBhNmU4MGY5MDgyMWE2ZTgxN2Q5NTliZGE4Y2U2ZmNlMyBsZWdhY3ktdHJ1bmsKKzI5NTI1IGI0YTYyODNiOTE1YmM2MWQ1YjY2OTllYzNmNDk1YTJlOGJlOTA3ZTkgbGVnYWN5LXRydW5rCisyOTUyNiA1ODE5YzQ0MzliYTI0NjRlOWEzNDRlNDdkNDc5ZjFmNjI0MTAyMzRmIGxlZ2FjeS10cnVuaworMjk1MjcgYzU0NzE2YWVkMjZhMDZkZWFhNmE5ZDUxZTI0ODhhZTM5ZjIzMWI2ZCBsZWdhY3ktdHJ1bmsKKzI5NTI4IDFiNGM1ZTY2YTRiNGFkMTdjYTEwNWJjNDhmYzllZTZkMDcwNDllOGIgbGVnYWN5LXRydW5rCisyOTUyOSA4MTIxMzU4ZTMyMTcwM2E1NzRlODlmMDdkNDYzNTcwMWZiNjM4YWIyIGxlZ2FjeS10cnVuaworMjk1MzAgNjk2ODY0YWEwNWQzMzQzMTAyNTA3MDI1NjBmYzlhZDYxNjA3MDE2MSBsZWdhY3ktdHJ1bmsKKzI5NTMxIDZhNDI1MzZmYjllZWJiOTkwMGU0ZWJiYWYzOWE5MTc2NTkxYWQ4MzEgbGVnYWN5LXRydW5rCisyOTUzMiBiYTIxOTRhZDNiNDIzYzNlYjgzYzhkNDM4MDgwYjQyNjA5OTk5MGQ1IGxlZ2FjeS10cnVuaworMjk1MzMgMWEzMGVkMTlmNjRhZmY5MGMwZTFlNjEwNWEyZjMxMDM1MGU4OWQzMiBsZWdhY3ktdHJ1bmsKKzI5NTM0IDEzYjJlYzUzNmUwNzA1ZTk4MTNjM2RjYTU2Yzc0MzZiYjRkYTQzODQgbGVnYWN5LXRydW5rCisyOTUzNSA5ZGQ5Mzc5YWM2ZDY3OTNiNzc2OGIxYjlhM2M1Y2Q0YjgzODlhMGNjIHJlbGVhc2UyMi1tYWludAorMjk1MzYgM2MyM2U0YzNkYTAyMDg2ZjVhNmZjYjcyZTM0NzZhZjI4ODdkNjliZCBsZWdhY3ktdHJ1bmsKKzI5NTM3IDk1MWRhY2MyMTg0N2Q3MDUwZjIxODc5NDhhZjhjZWQ1MWYwMDI3MTYgbGVnYWN5LXRydW5rCisyOTUzOCA5YjViN2RhMzYyYTVjNmZhNWRlZjMyMDFiYjU1NDcwYzc3ZDYyYzQ4IGxlZ2FjeS10cnVuaworMjk1MzkgMGRiZDZiNzNhYmQyMzFmMTM4OWY5NmU2M2RkZDZjZjE0NzlkNTRlMiBsZWdhY3ktdHJ1bmsKKzI5NTQwIGZlNmU5ODk0YzJkNDJhNGJhZWNiZDA2YzhkOTVhYjkyOWI3ZTBmNWIgbGVnYWN5LXRydW5rCisyOTU0MSA5NTE0MDc5MzIwMDE5ZDY5ZDAxNzdkZDgxMmUzMWE4ZTg3OWE0MDc4IGxlZ2FjeS10cnVuaworMjk1NDIgZDI3ZTVjYWQzOGQ3ODI0ZTRlODgwOWYxZWMxZGJmMTFhMzMyOWJjZSBsZWdhY3ktdHJ1bmsKKzI5NTQzIGVmNTg5M2JiNzllZjM5Yzk5Yzc1NjQ4MTc0MTFlZGE1OTE5NjE5NTIgbGVnYWN5LXRydW5rCisyOTU0NCA4N2I3ZmFlMTBhMTkzMDc3N2I5M2ExNzJmMWE3MGIyZGEwZTcyZWVmIGxlZ2FjeS10cnVuaworMjk1NDUgODY4ZmYwZGZhYmQyY2JiMDY0OTQwYTIwOWJjMzA4MGFlYWY0NWU4YSBsZWdhY3ktdHJ1bmsKKzI5NTQ2IGYyZWQ3MjJmZjAwMzUwYzI2MDgxYTZiY2M4ZTg0ZDkxYTMxZWQ5YjcgbGVnYWN5LXRydW5rCisyOTU0NyA4OGJiYzMwYjA4NDc4ZDEzMjY3MzJhZjk1YzQ3MWU3YmNlZWEyYTAyIHJlbGVhc2UyMi1tYWludAorMjk1NDggYjA2M2M0M2Y0ZGYwMzJjZTg4MWQxMWM1NzgxMmQwODZlNmExNjBkOCBsZWdhY3ktdHJ1bmsKKzI5NTQ5IGRhYjJjMTJiNjgyZTc4NzU1ODcxYzM3YmFlOTRlOTlhYjJjZjU3NTcgcmVsZWFzZTIyLW1haW50CisyOTU1MCA3ZmE5M2I1ZGRmYmQ0OTI1N2U0MzIyNGE4MDkzODgxNTU5NjgwZjA1IGxlZ2FjeS10cnVuaworMjk1NTEgZDJiZTc5NmM0YjgxZDdiOWE3MzcyYmE2MWE0YTFjYmViMDVkNjkwZiBsZWdhY3ktdHJ1bmsKKzI5NTUyIDFhZmNhMzc1ZjJhOWUzNmYyODk5MTViMDYyMzUyMjhhZDU0MDk2YWYgbGVnYWN5LXRydW5rCisyOTU1MyBmM2Q0NDkyNmExYmVmZGVmZDdlMGZhODg0YjRkZjE3YWNkMjA1MWE0IGxlZ2FjeS10cnVuaworMjk1NTQgOTgzMjJjMDc1ZjRkOTUzODg2MjVjN2IwYmNlMWQ1MTc3ZDY0MzdlMCBsZWdhY3ktdHJ1bmsKKzI5NTU1IDUzYTM4MjM0NDhkOTNhZjIzZjdlOWM0Mjk0YWEyZDg1ZTFkZjg2MzkgbGVnYWN5LXRydW5rCisyOTU1NiBjYWIxNjc2MTNlNDNiNzM3YmY5NTRjODJkNDNkY2Y1YTI5OThjNTdmIGxlZ2FjeS10cnVuaworMjk1NTcgMTNhZjgwZjAyMDgwMDhmMTJhMDAwZmE5YTQ2OTNmNTcwYmNhY2ZjZCBsZWdhY3ktdHJ1bmsKKzI5NTU4IDk5OWFjY2ZhOTFjNTZkYTdhYThlYjIzMjYzODRjNjgzMzI3ZjJlY2UgbGVnYWN5LXRydW5rCisyOTU1OSBmM2E2NDAzNWJhOGJmMTk2MzI5NTM0ZTI3ODBiZGZjOTliMTdkM2FhIGxlZ2FjeS10cnVuaworMjk1NjAgMmMxYmJmYzEyMmMxYTY2ZmVkMjY2NDBkMmVjZTEyMDdkMjEzYThiMiBsZWdhY3ktdHJ1bmsKKzI5NTYxIDRhMjg4YjQ5NGNiMmM5YTgwYWQzZTNkNDE5MjczNGEwY2YxZTU5ZGEgbGVnYWN5LXRydW5rCisyOTU2MiBkNjllOGE5ZmVkMTFmY2YzNTk4MjQ1MDlkYzFjMmZmOWYzZTFhODZlIGxlZ2FjeS10cnVuaworMjk1NjMgMzRlNzBiODliYmI3MjMyNDNhNjkyMGQwZTJlYmYzOTFiNzZhYzQxMCBsZWdhY3ktdHJ1bmsKKzI5NTY0IGI1NjRlYzRiN2U1YjMzMTllNDJjMzcyNjkwZjY3MzA0NTljOThkOTkgcmVsZWFzZTIyLW1haW50CisyOTU2NSBmMzUzNzMxN2IxYjI1YTZmMWUwNDRiZjU1MDgyNmMzMTQ3ODkzMWJkIHJlbGVhc2UyMi1tYWludAorMjk1NjYgMzUxNThmZDYwYjNiYTIyYjcyZDhhZjM5YzkxNzc5NGNkZjg3NWI4YyByZWxlYXNlMjItbWFpbnQKKzI5NTY3IDYyZjg4YzAyYzk4NzI4ZjMwNmViNmJkMWUyN2FjN2I4MDU5YmUzNWUgbGVnYWN5LXRydW5rCisyOTU2OCBkOTQ3NGMwNDQ1YmFiZjU1NmFlNDE3MjhiMjU2NWQwNDJkOTI5NzFjIGxlZ2FjeS10cnVuaworMjk1NjkgNTI2NTJmYjg2NDlkNzMxYWQ5ZDcwOWFhM2FmODY3NjYyODY3ZWIwMCBsZWdhY3ktdHJ1bmsKKzI5NTcwIGZmMWM2MDQ2ZjEwYjk0N2Y2MWE2ZjhhODcwNjQ2NzAwZDNlM2U3MDMgbGVnYWN5LXRydW5rCisyOTU3MSBmNjJmNzczYmM5ZmRkMmEyZDlhMGY2YTMzYWM4YjA0YTJiMzQxYTI0IGxlZ2FjeS10cnVuaworMjk1NzIgZjQ2NzQyN2UwM2ZhOWQ1Y2JjMWQzMjMyYmNhNzg3NWY1MzQ1YTE1YyBsZWdhY3ktdHJ1bmsKKzI5NTczIGNiYmY3ZjI0MjVkOWUxMDhhMjY0OTMxYTlhZjA0ZTIzNWRmZjFkNWEgbGVnYWN5LXRydW5rCisyOTU3NCBlNTI2MzY1ZGRjY2RmZDBlZGQwMDk5OWIwYzk0ZTU2Y2QwNGUwN2VjIGxlZ2FjeS10cnVuaworMjk1NzUgOTMzYzZkNjA4ZDAxYjNjZDQzMDk3YTMyMjYxZmM5MTliM2NlZDFiOCBsZWdhY3ktdHJ1bmsKKzI5NTc2IDEzNWYwOGI3M2JkNWQ4YjFlNzEwYTFjZjk1YjBiZjM5NTY2ZjFjYTEgbGVnYWN5LXRydW5rCisyOTU3NyA3NTYzMTlhMTM3YjgzMjZkZjBhMGM4MmU1ZGY1NTEyNTU2YjZhZjY3IGxlZ2FjeS10cnVuaworMjk1NzggMDgyMGFkNDk4MjlkODBiOTg3NTgzNGJjMzI3YmJhZDM4YmEyNmYxZSBsZWdhY3ktdHJ1bmsKKzI5NTc5IDFmMzY1Yjk4ZjExY2M1NDVhYjFjNmU5NzFiZWFmNDc2NGQ1ZWM3MTkgbGVnYWN5LXRydW5rCisyOTU4MCAwODExOTA0ODRhZjYxNjE2YWExYzdlYzk1NDA2YWFiMjA3NWNmZDhiIGxlZ2FjeS10cnVuaworMjk1ODEgMDA4NDgzNDJkNDk4NGFlNDc1YzNkMDk4YzgzN2JhOWViNDZlZmFhMCByZWxlYXNlMjItbWFpbnQKKzI5NTgyIDUzZTkwNDFlZmJlM2ZkNmE0OTE5OGY2NmNiMGY0N2Y0ZDgzMjAzZjUgbGVnYWN5LXRydW5rCisyOTU4MyA1NDA4ODFlZTJkNGFjYzRjNTg4NjczOTBhOTY3YTc3YjVhNTI5YzI4IHJlbGVhc2UyMi1tYWludAorMjk1ODQgZWYzZjY5MjlmYzBlMTk1OTU0YmQ1YTdkNTY0MWNjZjgyYjhiNDdkZCBsZWdhY3ktdHJ1bmsKKzI5NTg1IDI4MzI2MjhlZThjYzg0MDhhMzY2YWFkOWI4NGRhMWRiNzAyZTQwZjQgcmVsZWFzZTIyLW1haW50CisyOTU4NiBlNjFiOTQ2NDc0ZGZjNjkyODJjZDkxN2ViNmEwZmMzYzI4OTg2MjkyIGxlZ2FjeS10cnVuaworMjk1ODcgOTY0ZDZiNzljMjJlMmU5YzNkZmFhNTM4MzExYjcwZDdmY2I0YmFiNiBsZWdhY3ktdHJ1bmsKKzI5NTg4IDI2NzM3MzJhZDVmMTkxYjY2OWFkOTQ2MzQ4NzZkYTNkZTA2NTU4ODQgbGVnYWN5LXRydW5rCisyOTU4OSBhZGFhNDUwZTdkNzBkYzAyMWEyMTc0YWU5ZDQyNjhhY2VlOTQ3NGU3IGxlZ2FjeS10cnVuaworMjk1OTAgOWZmZWE1MGU4MzMwMTc3OWE4ZDBiMDRlYjIzYTk0MGI2M2MyNWFmNCBsZWdhY3ktdHJ1bmsKKzI5NTkxIDJmMmEyZmQ4NDRiZDc0YmE4ZjY0MGI0NDliNjcxZWFmZGNjNGJmMjUgbGVnYWN5LXRydW5rCisyOTU5MiA5MDQ4MjA3OTkyZjAwYmI1M2NhMmRlMTU1N2RiYWQ0MGI3MWI1ODg5IGxlZ2FjeS10cnVuaworMjk1OTMgODk2NWEyYjgwNGI1MDQ5NWJjZjcxMzc5ZDJjZmExY2QxMWNhNzdlYSBsZWdhY3ktdHJ1bmsKKzI5NTk0IGU5YWViZDRjZjU2Y2Y0ZjgyNjhiMmFmMGYzZGU1MmQxZWY0YzYwMmEgbGVnYWN5LXRydW5rCisyOTU5NSA5YzRiYmIzYmJkMGRlNzIzNmVlNTUyNDM4N2FlOWI5MzFhYzUzYmY1IGxlZ2FjeS10cnVuaworMjk1OTYgMDA0MjE2ZDdhMWRhYmMwMDlmMmYwOWYxOGQ0ZTllZmJjODc0MGQ4ZCBsZWdhY3ktdHJ1bmsKKzI5NTk3IDFlYmI1ZGM3ZjY5NmVmNzUyNzc2NjA3Nzg5NTVlNDlkZGRkY2NiYzcgbGVnYWN5LXRydW5rCisyOTU5OCA2NDE2Nzc2MDk5OGM0MzE0MzliZGViODYxYmUxMjkyYTg3NTFkOTBmIGxlZ2FjeS10cnVuaworMjk1OTkgM2FkNGZhZTllZDNhZDBjNmM4NDQ1NTA2Y2U3ZTFkYzQ4NmZkYTEyNSBsZWdhY3ktdHJ1bmsKKzI5NjAwIGNmYjMxN2U0YTc3MDFkMmJmZDRkMmU0NzRiNzUxOWZlZmNlZDY3MDggbGVnYWN5LXRydW5rCisyOTYwMSBhNmQxNmU4NGZlYzA1NGU5NDIxZDFkNWQwNmNkN2ViNjE3ODVmMjI3IGxlZ2FjeS10cnVuaworMjk2MDIgMDk5ZDM2Y2JiYjYxMWFiNWZiMzI0YmIyZjQyNTYzYTA0MTMwNGM4YSBsZWdhY3ktdHJ1bmsKKzI5NjAzIDk4ZjNmZDFlZDQyZjA1NzY2NTUyMmQ5NDFmMGU2ODc3MTRhODMzNmYgbGVnYWN5LXRydW5rCisyOTYwNCBlMjIyNmQ0N2ViZjAxMjk3Yzk4YTFhOTA3YjRhYzU5MTBiZDQ0ZGI2IGxlZ2FjeS10cnVuaworMjk2MDUgMjNlZjdjMTYzYTEyNTAyOWY1MTA5Yzk4NTU3MTViMzk4YzdlNTVlYSBsZWdhY3ktdHJ1bmsKKzI5NjA2IDQyMDMwNDdlMjAyMjM3ZTRjOTFhOGRlNDI1YjA1MDBjYTc1ZjlmZGEgbGVnYWN5LXRydW5rCisyOTYwNyBhNTZjOTBjZmMwMGMwZGJhNzUwNzEwOTE3OGU4MzliYTcxYTJlMDRiIGxlZ2FjeS10cnVuaworMjk2MDggNDJjZjFiNWU2MzkyNmY2ZGRhMzY5ZWQ5ODZhZTE0ZDE0MzE4MzBiOSBsZWdhY3ktdHJ1bmsKKzI5NjA5IGU5OGEyMTMxMDFiMzhhOWI4ZDUzYjhjMWMyMTJhNTI4MDE0NzEzY2EgbGVnYWN5LXRydW5rCisyOTYxMCA0YjkwNWUxOTgzYjYxMGIyNWEzNTM1Yjk1OTIwNzJhNjk4N2ViN2E0IGxlZ2FjeS10cnVuaworMjk2MTEgMDc2NTEyYTBjNmMyMmM5MmI3MjgzMjE0Y2Q4OWI0MDBiMmZhNmI2OSBsZWdhY3ktdHJ1bmsKKzI5NjEyIGY0Mjc4YWY4ZWVmYTAyYmFmYTc5Njg2ZmQ5ZWM0YmIyMzhjYjQ5YjQgbGVnYWN5LXRydW5rCisyOTYxMyA2ZTQxY2ZkMjViZGYwZmUyODZhMWQ2ZDczM2RjNTcwZjk5ZGE5YWRmIHJlbGVhc2UyMi1tYWludAorMjk2MTQgYTJhZTYzNWU0M2I2MTg3MTEyNTg1NzIxZDk3NjljZDEzNTZmZmUwYiBsZWdhY3ktdHJ1bmsKKzI5NjE1IDRhYjZiN2MzZjMxMTdkMjc2MzAyNjI3ZTZiOWViMGQwMDQ3ZTMyZGQgbGVnYWN5LXRydW5rCisyOTYxNiAxNDRkOWQ0OGI5NmNmZWE4MzdhMDBjOWUzZTRlMWMyYzM2ODFlMzkzIGxlZ2FjeS10cnVuaworMjk2MTcgMDBiNGNmZjkzNjE4ZTgwMDJkOWIzN2FiZTliZGY5MTliYjVhODZjYyBsZWdhY3ktdHJ1bmsKKzI5NjE4IDZjZTkyMjhhM2RhMjAwYTJjZDExMzViZTE5MzdjMTE3OWUwN2JmNGUgbGVnYWN5LXRydW5rCisyOTYxOSBjMmVjNzg5ZGVlNTY3NmJlZDAyYzZhNmZlNzI1OTkwYmRhYTQ5OWZlIGxlZ2FjeS10cnVuaworMjk2MjAgYmRkZTk0ZTAyOTE4MGI1NGUzNTMwMDFjOTA3ZjQ2NzA2ZjlhNTFhMCBsZWdhY3ktdHJ1bmsKKzI5NjIxIGE0OGFjYjViNDBlZmM0NTU2ODVkNTdiMTRmYjllNWM0YWI5ODdmN2IgbGVnYWN5LXRydW5rCisyOTYyMiA5MTM5MjdkMzI2MWVkYjIxM2RkNjI2NzU4NWMzNTU4OWQ5YzFkM2NjIGxlZ2FjeS10cnVuaworMjk2MjMgOWJiNGFkZmJmY2M4MzEzOTc0ODUyOGRhZTEzNmQ3OTAxMzdlNTE2OSBsZWdhY3ktdHJ1bmsKKzI5NjI0IDY1ZDZmMGJmYTQ2MTUwNDBkNGFiOGIxMWNhYzEyYzM0MGM5OWY3YjEgbGVnYWN5LXRydW5rCisyOTYyNSAwYjYxMWU1MGM1ZmMzYzRkY2RlN2UwNzQwYmRlYWNiOGU2ZGY3OWFkIGxlZ2FjeS10cnVuaworMjk2MjYgNTgwODNkOGVhOWE1YWQzZTYwMWIzYTAwYzM2Y2I4MzVmMzRlZjM0NyBsZWdhY3ktdHJ1bmsKKzI5NjI3IDNlMWU5NjE2ZjhjODY1YTAyNDI4YzViYzIwM2ZmNjAxMjMzZWIxNGMgbGVnYWN5LXRydW5rCisyOTYyOCA5NzQ5NzMyYTBmNmI5ZmZlODBmOWZkMjMwM2YyNzM1Y2M2ZmE5ZDk0IGxlZ2FjeS10cnVuaworMjk2MjkgZWMzNDE0YzU4ODcyNjI5ODQ2MTU5MzU0OTM4ZDExZDQ4ODVjYjNjNCBsZWdhY3ktdHJ1bmsKKzI5NjMwIDYwNzhhYmM2OTAzNmZjNzZmYmUwZTljNDgzNWM0ZDliNTY2OTQ2N2MgbGVnYWN5LXRydW5rCisyOTYzMSBiYjcxODc4MmU3MzY5YzVjMjViN2ZmZDVlMjQyODA2Yzc5MzdmYzkzIGxlZ2FjeS10cnVuaworMjk2MzIgOGNlYjQ1NWY1NTQxMTJjYzdmNWUwMjU4OTk4Y2RhMDgyMjUxMThhNSBsZWdhY3ktdHJ1bmsKKzI5NjMzIGY0OTI5MjYyMWIxNzNhYWY3ZDk4YWFjMTBhYjAwN2MwYmY4YmJkNDcgbGVnYWN5LXRydW5rCisyOTYzNCAyNGE1NTIyZDA3ODRiMzU5ZDIwOWQ0ODliZTcxYTZiMDMyMDk5OTRmIGxlZ2FjeS10cnVuaworMjk2MzUgZjBlZTM3ZTg5MzJmYWM4ZDA1M2U3MDYzMTlhZDVmMTk3MTY2ZTk4ZSByZWxlYXNlMjItbWFpbnQKKzI5NjM2IDI3ZjY0MzE0ZjBkZTdlZmFiNmI2ZTliNzVkYmY5MDg4YmY4MTVlNGUgbGVnYWN5LXRydW5rCisyOTYzNyBlNjI3NzRiNDQ3YzEwN2E4ODhjNDRkZjM2MzAzMDJkNTRhNzhlZTU2IHJlbGVhc2UyMi1tYWludAorMjk2MzggZGQxMGQ5N2QzMjlhNjBlNzBlMTJhNDI2N2Y5MTZiZTVmNjgwNGI1NiBsZWdhY3ktdHJ1bmsKKzI5NjM5IDNjMDgzZjg4MTY1NWQzNGY2Y2MzMDA4NWM2NzgxNzQxZjMxMDgzNGUgbGVnYWN5LXRydW5rCisyOTY0MCBhZjViNDE3NmY0ZWY2ODZkYTFlZWNkODRmYzdjNzIwMGFiNTk2ZTMyIHJlbGVhc2UyMi1tYWludAorMjk2NDEgNjNhMDg2MzlkYWUyYTNlYzBlMjNmNzAzNzE0MzhlNTQ5Zjk5MWRhMSBsZWdhY3ktdHJ1bmsKKzI5NjQyIDI5ZjdkMWQ1ZTZkNjI0OWZmZWE2MjRmODYxNDA5Yzg2YWNkNDM4ZTAgbGVnYWN5LXRydW5rCisyOTY0MyBlM2QyNjkxZmI2YjhjMmZhMGNjN2RjNDU1NTUyOGJiYTkxMzgyMjU2IHJlbGVhc2UyMi1tYWludAorMjk2NDQgMjNkZjQ2NTZlOGEyYWE0NzdjMDdhZGY0YjNjNTk3NzdkZTUyZDhiYSBsZWdhY3ktdHJ1bmsKKzI5NjQ1IDFhYjY1N2UwMDc2Mjc1ODRjOWY4YTdkZDU4YmQ4YmIxOWM3YmI0Y2IgcmVsZWFzZTIyLW1haW50CisyOTY0NiA5NWM5YzU2NmJkZDZkOGNlY2NlYWE3OTUwY2JiYzM2MzFiYTkzNmQ3IGxlZ2FjeS10cnVuaworMjk2NDcgNGI2ZDhmNTE2Njk4MTdmMTM3MDhlNmNhMzNhMmFjNWZmZDA4NDk5OSBsZWdhY3ktdHJ1bmsKKzI5NjQ4IDI1MWU1NTJjODM1MjEwZTY3YmEwM2RhOGJjNzZmNmIxNGRmNWUyNDYgbGVnYWN5LXRydW5rCisyOTY0OSA1YjYyYjllYTQ2MGIyMzllMzJmYjYyYzM2YjNiODBjM2FlN2Q5ODVhIGxlZ2FjeS10cnVuaworMjk2NTAgZTcxNzcwYTdmNTQ5ZmE4ZDNmYmM2NDIzYTRkYTdmYTQxNzlmYzNmMyBsZWdhY3ktdHJ1bmsKKzI5NjUxIDA0ZDNmOTVjZmQ4OWYwYzBiNDgwZmRiMDg1MzYwMzBmZDMzZDc4YzQgbGVnYWN5LXRydW5rCisyOTY1MiAwODI5MzBkZmJlYmRkYmU5NmZkMjdhZjEyMjQ2NzM2OWY2ZjExNmQ4IGxlZ2FjeS10cnVuaworMjk2NTMgMWMwNTUxNzFiODcxMWZiYjk5ODY0YzNkOWM3Y2Y0ZDhkN2VhZDU0YSBsZWdhY3ktdHJ1bmsKKzI5NjU0IGY5NmZhM2E2ZGRhNDE4YzI0NGMxZWQ4ZmQ1Y2E4YWJhNTc2MDcxN2IgcmVsZWFzZTIyLW1haW50CisyOTY1NSA4M2FlNGE5MDJkZjA4ZjczOTkzMjIyNmJiNmY4NzhkOWVhMjJhOWQ0IGxlZ2FjeS10cnVuaworMjk2NTYgZGJlMjU2ODdiZTZlNWMzNjkxNzNkNzk0MDg2NGZiZGY4N2MzNGYxYSBsZWdhY3ktdHJ1bmsKKzI5NjU3IDBiMjNjZGEwMDQxNzBkOWE2MmMyMGE0OTBiODUzMGQ0ZDAxN2Y2MWQgcmVsZWFzZTIyLW1haW50CisyOTY1OCA0NmQwYjQ2YTc1NGZlMWI1N2FmYjliYWQ5Yjk3ZTE0OWQ2MDM2YzMyIHJlbGVhc2UyMi1tYWludAorMjk2NTkgMWFmNDEwZTMzYmVjZjU4MWQ3NGI3ZjQyOTlhNDU0MWI5MWQwNjlmYyBsZWdhY3ktdHJ1bmsKKzI5NjYwIGY3MmIxZjg2ODRhMmI5ODI2ZDQ0MDhjZDMwMjdhNjY1MjIwOGE3OGEgbGVnYWN5LXRydW5rCisyOTY2MSAzZTU5ZDY3NGI4YzM2NDMzZWNlMGM1YTA5ZmM4NmQ3NmJjYmY4YzQ0IGxlZ2FjeS10cnVuaworMjk2NjIgNGMyNTMyYzFjYjJkZTI0ZDNkNTAxMzMzZDRlNGUwYTlkOGZkNjdiMyBsZWdhY3ktdHJ1bmsKKzI5NjYzIGFmMzk2NDY3OWUyZmJkOWJmOTY5NmFmY2EwZDQxYjgzNmZhNmIxMjIgbGVnYWN5LXRydW5rCisyOTY2NCBhZTE2OWY1Yjk0ZTA0ODEzNjQ4OTQ4NTg4OWIzMzg3M2Q3YTkzMWM0IGxlZ2FjeS10cnVuaworMjk2NjUgMGUwYjNkY2Y3ODc4OTg5NDMxZDk4ODc1NjY3MjAzY2ZlYTE4ZTZlMCBsZWdhY3ktdHJ1bmsKKzI5NjY2IDM4ZDFmODNkNTc3MTA4YTZlMzA5ZTA2MDBiODAxOThhNzE4NzcxNDQgcmVsZWFzZTIyLW1haW50CisyOTY2NyBkNmRjNDZiOWFmM2MwZTI2OGVhNDcwZTI3YzcyNjBjZGM4NTAxNTUwIGxlZ2FjeS10cnVuaworMjk2NjggMzkwYmY1ZDJkOGU3ZGY2NjAwMTkxOWRhMmNiZjA1MGNlMTEzOGNkZiBsZWdhY3ktdHJ1bmsKKzI5NjY5IDljN2FhNDNiMjFhOWE5YjBlZmVjZTBjODNjZmYzNzY5MzFhNWU5MDIgcmVsZWFzZTIyLW1haW50CisyOTY3MCBkNTYzM2U5M2Y3MDdmMzQyYjU0MjAwM2RjOWVkZjMxMGM5YzRmZDVlIGxlZ2FjeS10cnVuaworMjk2NzEgOTM3MzU3ODgyMmI1OTBlMDdhMDEwZDY1Y2U3NjRjYzJlM2U0ZGM1OSByZWxlYXNlMjItbWFpbnQKKzI5NjcyIGE0MmY2M2E4MGNjODczNmE3YTY1MGZjNGExNmUxY2FjZjQ1Zjk1NjcgbGVnYWN5LXRydW5rCisyOTY3MyA3ODVhZDA3NDAyN2JmMGUzM2ZjYmE1NDU5NmEwOTYxMGNhNTMzNTkzIGxlZ2FjeS10cnVuaworMjk2NzQgY2I3MWU3YzYyMGUyZjUwYTk3YWVmMjRjMDNlZDcyZTAzZGY3NTQ0OSBsZWdhY3ktdHJ1bmsKKzI5Njc1IDFkZjk4ZjY4ZDYwNzUzMGVhYWM4OThhYTU0N2FlMTY3NmUwODliYTggbGVnYWN5LXRydW5rCisyOTY3NiBkMzdmMTM3OGQ4YjhiZjlhZDM2OWFiZDA2MzJiYmIyZTI0NzcyODljIGxlZ2FjeS10cnVuaworMjk2NzcgZTAyMzNjNDQyNTAyNmVhOGIwOWNjYTNkODg5YmUzNDlkM2UxNzdjOCBsZWdhY3ktdHJ1bmsKKzI5Njc4IDdlNThhMTUwNDg3MjZmMmJiMDRlZTljOWE3ZjViOTU2MzBmMWY5NjIgbGVnYWN5LXRydW5rCisyOTY3OSAxY2Q4MTA2YmNkMjA3MWM5ZGY1NmExMTk0YTUyNGJkOWJjOGVjNTQyIGxlZ2FjeS10cnVuaworMjk2ODAgYmFmODdkMjZiYTAzZDUzN2JlYjkzZjYwODVkOWE1ZDAzYzUyNDQyZiBsZWdhY3ktdHJ1bmsKKzI5NjgxIDNmNTc3M2E4ODg4ZWZkNjY1YmE3NjM2YWE2ZmNjNDE4YmY2MWQzMGUgbGVnYWN5LXRydW5rCisyOTY4MiBkMzMwMDVmODM4OGU3NGUxOTU3ZGJhZmViMzdjYmVlYmYxMGE0OTE5IGxlZ2FjeS10cnVuaworMjk2ODMgZmY5MmNjMjdmZDFmZjMwZDU0MTViOGQwZTExOTBiYTcxNmUxMzRhZCBsZWdhY3ktdHJ1bmsKKzI5Njg0IGZmZWM2NzQwOTE0MDU5YmRlYTkxMjJjMzNiZGM3MTEwZjE5ZmRiNzggbGVnYWN5LXRydW5rCisyOTY4NSA1OGZiYTU5NTcyNmVhZGFmZWY2MWRjZDAyM2E3NWU2ZWFkZmY3NDFiIGxlZ2FjeS10cnVuaworMjk2ODYgMzgzNTg3MDI3Yzc0ZDFjMWI4MzczZGYwNzg4MTIwNTJkN2M5NGRhOCByZWxlYXNlMjItbWFpbnQKKzI5Njg3IGY0NjVkNjY5MmJkZTMzNTAzMzE0YzA1MzRmZDA5MWM0ODc5NThmYmIgbGVnYWN5LXRydW5rCisyOTY4OCA3Zjg3MDQ2N2MxODJhNzVlMGQ0NDg1NGY0YTc4ZDUyYWFkYjdmMjYwIGxlZ2FjeS10cnVuaworMjk2ODkgYjgzMDM0MTNhNTdlNWExNWRjMTdjNDljNzQ2OGU2NDZhZTZhNTIwOCBsZWdhY3ktdHJ1bmsKKzI5NjkwIGE1ZDFlMDgxNDA2MWM1MmFiMmJjMzdmNjFkNDFlNTFlZTA2MjgwOTYgbGVnYWN5LXRydW5rCisyOTY5MSBlODkwNTY3MTgyMzVkY2E4N2ExMjZlNTIyZGI1MzdlOTZmZDdmNWQwIHJlbGVhc2UyMi1tYWludAorMjk2OTIgN2NmYjUyZjk4MTM5NmZlZWU4OWU3MWIzZjIwNzZiNjk5Zjg3ZDU4YiBsZWdhY3ktdHJ1bmsKKzI5NjkzIDEyN2U0YmZhY2JiNzUwNDljMzE0ZTViMTA3ZDkyODJjYTc2MzA1NDggbGVnYWN5LXRydW5rCisyOTY5NCA3NmYzMmZiZTAzY2M1NGU1NTRmMjA0OWZhYTAxZWViNDMwMTEyZjQ0IGxlZ2FjeS10cnVuaworMjk2OTUgNTdmY2FjYmRjODg1YTU1N2MyMjMzZTIxYmEyNGU1ZGMzZTFkZjA1MyBsZWdhY3ktdHJ1bmsKKzI5Njk2IDIwZmE2MzI5YjU4ZmY4MDQwNjJhYTg5Zjk1MzJmOWI3YjRjNThlMTAgbGVnYWN5LXRydW5rCisyOTY5NyBlYjBjMGM4M2I5MmEwOWZmNmFkYzQ4NDZlZDZkMzVkYzllOTIwMTJjIGxlZ2FjeS10cnVuaworMjk2OTggZmZiZWFkMzQ4NGUxMDMzYjJjMzBjMzg2MGNkYWFkNmJiNDQyZmZkZiBsZWdhY3ktdHJ1bmsKKzI5Njk5IGM5NTE5MDUzMmMwY2I2ZDllMWUwNDQ4NzA2MzIxMThhYzQ2MWZhMTMgbGVnYWN5LXRydW5rCisyOTcwMCA1MmY2MTMzZTIwZDIwZWI2MDNiYmViMzg2ODQyM2Y5MWQyYjFjYzBhIGxlZ2FjeS10cnVuaworMjk3MDEgYWRiOTNmNGU5NzgwNTFlNDZmYWEwMGE3ZDhkZGUyYTk4MjY0ODAzNCBsZWdhY3ktdHJ1bmsKKzI5NzAyIDE5MDM4OWZkODE1OWM3YzQ2ZGRmOTk4YWUyOTc0MWIyYjNhM2RhYTcgcmVsZWFzZTIyLW1haW50CisyOTcwMyBlY2RmZjQ2MjAyYzBmZjM1Y2JlZjA1OWZiMTQ2OGRlZTE2YTE2MzRjIGxlZ2FjeS10cnVuaworMjk3MDQgNTI5NzE5YTUzNTBlNzVlZTMxZjFkNDM5NDM1NGRkNTI4ZmFiOGY4MSBsZWdhY3ktdHJ1bmsKKzI5NzA1IGNiMjQ4NzA0Yjc4NGUzYzcyNzQ1OTE5OWQ2N2Q2MTljNTRjMmEyYjggbGVnYWN5LXRydW5rCisyOTcwNiA3OTQyMGZhMjIyYjg1MDU5NWFjNTdkNDg4ZDNjMmE2Mjc4Yjk5ZjM2IGxlZ2FjeS10cnVuaworMjk3MDcgZTI2ZmY3NWRjZjY5MTFjMDFiMjMxZDJiZWExNjVlM2RhMzdkMGE5ZiBsZWdhY3ktdHJ1bmsKKzI5NzA4IGM0MmI2MzdiOTUxNDZkNzM4NmQ0ODVhMDFiMTkzNDRmMTk5N2Y5Y2UgbGVnYWN5LXRydW5rCisyOTcwOSBjODU0ODA2OTJjYWU5Y2Q5MDBhNTBhNjFkZmNiNGU5ZWQwOWViMmU3IGxlZ2FjeS10cnVuaworMjk3MTAgODdlNjliYWRhMTk1ZWVmNWY2Y2E1ZWY4YmM3NmQ1YjI1YTI0NzJmMiBsZWdhY3ktdHJ1bmsKKzI5NzExIDkzZjMwYzM4ODlhYTRiN2E4MmIzNDExZjE3ZjJjM2EzNTAxYjA2ZmIgbGVnYWN5LXRydW5rCisyOTcxMiAzZWU5NTE5ZWFhNGM0NzY3OGY2MGU1OTBlNTUzN2UxNmVkYjFhNWQ1IGxlZ2FjeS10cnVuaworMjk3MTMgZTlmODlkYmE1MDkzYjBhMzgzZDliNzIxZDAxOGIxODBlZWJiNDlhYiBsZWdhY3ktdHJ1bmsKKzI5NzE0IDQ0OWIyYjVjYWY1ODJmZGRjODkxMWVlN2QzMmQ2MGNjN2QyNzg1MGYgbGVnYWN5LXRydW5rCisyOTcxNSBlZGQyZWI4OGZkNmNhMGVjYjRkNjQ3YmM5NzlkYmM0OTdmZDk5NGY0IGxlZ2FjeS10cnVuaworMjk3MTYgYTBlZmE0Yzk1NjllMzE5NmRkYmJlNGUwZDUyNmRmMzUzYjFhMjU5YiByZWxlYXNlMjItbWFpbnQKKzI5NzE3IGU0Mjk5N2FjYzdmMWU3NTQ2ODY2ZjdlN2RjZGRkYmU2YTRkZjZlYTcgbGVnYWN5LXRydW5rCisyOTcxOCBhNGUzMDIxZWFhN2Q0MGI5ZWRiNjE0MzE1Nzg4MGFmMGU3OTM2OTU1IGxlZ2FjeS10cnVuaworMjk3MTkgYjEzODhmNThiZGI1ZDEwZTE2MDMzMmIwYzU5ZDFkOGJiYTA2NmFiNiBsZWdhY3ktdHJ1bmsKKzI5NzIwIDRjMDZiZGQ3ZDA1YzJmMzJiN2Y0MTJmZTM5MTQzOTlkNDZiZThkZmQgbGVnYWN5LXRydW5rCisyOTcyMSA4ZWQ2NmVkZmYzODdjNmQ0ODI0NDc0NzFiOGY0YjU5YzEwYjRlMWM5IGxlZ2FjeS10cnVuaworMjk3MjIgZmY3NjM5ZGRjYWYyMWNiNmM2ZmZjMzQxNjY1YTJkNTlhZTAwMzZkNyBsZWdhY3ktdHJ1bmsKKzI5NzIzIDYxYTBlZjU0MmI2ZjVlMWI1ODViMGE0OTg4NzBlYTdiMDk2MWIwNjggbGVnYWN5LXRydW5rCisyOTcyNCBkNjJjMWJhMzM5NjQwNjg2NGRhNWQwNjJkZTMzNWU3ZDBhMTZiZmNhIGxlZ2FjeS10cnVuaworMjk3MjUgM2JlMWJkYzc3OWUwNmYwNDk2MGFkOTFkYjJlMWYyOGM0ZmM2ZGNkZiBsZWdhY3ktdHJ1bmsKKzI5NzI2IDBlODk5MGU4OTJiNmQ2YTJjOGNjMzRjZDE1NWZiZTdiNDM2MDFjMzkgbGVnYWN5LXRydW5rCisyOTcyNyAwMmQ0OGVkNDQ3YTgzYjM0Y2FlODhiMzdmNzIxOGMzM2EyOGM1YTA4IGxlZ2FjeS10cnVuaworMjk3MjggMTQ5MTY1Y2RmZjdjZGM0OTM3MTk1MTNhMTQ2MzRmY2UwY2UwOTQzYiBsZWdhY3ktdHJ1bmsKKzI5NzI5IGNkZDI4OWEwNjYxNGEzYzM0OTcyNGZiOTlmMzQyMDVlOGQ0YjAwZDEgbGVnYWN5LXRydW5rCisyOTczMCA2NzliMmI4MjU0YWU2NjZkNzhmNmY1MzgzM2RkY2FmNWJiODhiYzg5IGxlZ2FjeS10cnVuaworMjk3MzEgNGJlMzRiZDczZGZmNDFlNjdhOWNlZTE3ZjY0OTIzYTU3MjQ3Yjc3YSBsZWdhY3ktdHJ1bmsKKzI5NzMyIDIyZDczMjViYTdhYzQ5Njk4MjNjZThjZWU2ZDU0ZDljOGU0NDlkNzkgbGVnYWN5LXRydW5rCisyOTczMyBhOGQxMzBhNmE3NGQ2OGU5YmEwNWE3OTUzZWE4ZjU4ZWYyYWQ4MjYwIHJlbGVhc2UyMi1tYWludAorMjk3MzQgZjIzYzM1ZjgxMDMzOTk5Yzg1Mzk4NzVjMDU0Y2FlMTQ2ODk5ZWMwMiBsZWdhY3ktdHJ1bmsKKzI5NzM1IGIxOTQ0M2JkZjQ0N2U3ZDgxYTA5Yzk3M2Y3NmExMTVlZDQ3OTE5MWUgbGVnYWN5LXRydW5rCisyOTczNiA2MGQ4MDlhMjViYWVjODEzOTA5MGE3NzRlYjQ4ZmM4MzQ2MzVkM2FlIGxlZ2FjeS10cnVuaworMjk3MzcgYjMyN2ZmY2ZlOWI3Yjk2MTRhYTAyODYzZDFmZTcxZTQ2MTQxMzU5MCBsZWdhY3ktdHJ1bmsKKzI5NzM4IDIwNWZiZjFiZDA3NTYyZjI0MjU2MDZhZGY4ZjkxMmZkNTk2YjgwOTUgcmVsZWFzZTIyLW1haW50CisyOTczOSA3NjYwMWZiMDc4ZDQwMTdjODA1Nzk0MmIyNzYxNDU4MTIzNzQ5NzkwIGxlZ2FjeS10cnVuaworMjk3NDAgMjQ0ZThmYmU0ZTIwNDU0MGQzZjQ0ZWFkYzM1YTgxNWY3OTQ3Mjk0OSBsZWdhY3ktdHJ1bmsKKzI5NzQxIDUzM2ViNTNhN2ZiZGQwM2VmNTQ2ZTdiMjBmNTY1NzIwM2UwYjcyYTEgbGVnYWN5LXRydW5rCisyOTc0MiBlMzhkNTAzMzdlOGNkODMwMjRmZGQzYWE0ZGRiNzk0MWIyZjUwMGQyIGxlZ2FjeS10cnVuaworMjk3NDMgNDIyNzlmN2QyNDRkZjc0YjI3NmIzMDk1MDE1ZTBmNWYzZmQ3YTA1MyBsZWdhY3ktdHJ1bmsKKzI5NzQ0IDM0ZmJiY2IxMDVhNDNiNjY1NjAyYjVlYjRmYjc4OWZjNGM4ZGM4NGEgbGVnYWN5LXRydW5rCisyOTc0NSA4M2NjYWFhYjNlNWU0NzdkNjJmOTc2NTA0ODVhMjkwOWY0NWJiNWJjIGxlZ2FjeS10cnVuaworMjk3NDYgNmI1NTZjNTQ1ZmZiMzhhZGJiNzBkYzQwOTJjMGJiODBiZDFkYTU5NCBsZWdhY3ktdHJ1bmsKKzI5NzQ3IGUyNzBjMGQ0MWEwNTA1N2EzMTE2NDdjNjI0YmQyYzljOGRhM2JkY2YgbGVnYWN5LXRydW5rCisyOTc0OCBjNDE5ZmNlMTUyOWU1N2JlNGFmMDJmN2JmYzFiMGFmNTg5N2Y2MWQwIGxlZ2FjeS10cnVuaworMjk3NDkgZmJjY2VmOGIzMTUzMzFiMTQyNzc4MmZjNDgyZmI0NGI5YWViZGM4MiBsZWdhY3ktdHJ1bmsKKzI5NzUwIDU3YzZlODRmNzFjZWM2NmEwZDdiODE1NjZiYzY5ZDA5NmQ1OTEyMmMgbGVnYWN5LXRydW5rCisyOTc1MSA5NThkMDcwODVkY2Y0YWU4MDhjNmRiOTZlZDNmMzVjZmZhMjA1NzFlIGxlZ2FjeS10cnVuaworMjk3NTIgNTBjOTU4ZjcwM2UzMDI4OWUyNmE2YzA2OGYwMDk4NjdiNzQ4YjU2NyBsZWdhY3ktdHJ1bmsKKzI5NzUzIGQ2NjEyOWI1NTFkYjRmYWUyMDhmMjdhYzU5YzQ3NjZmYjZjNTVhMzAgbGVnYWN5LXRydW5rCisyOTc1NCAzYWM0NjRjMzczNzRjNDM4NGZlZjE4MTUwNGRjYzM4MTk4NzVlYTljIGxlZ2FjeS10cnVuaworMjk3NTUgN2MwOGY2Y2I5MGU0Zjk2ZTEyYzkzMWVkNDI4NTA0NWZlZjVhZDZmMiBsZWdhY3ktdHJ1bmsKKzI5NzU2IGQ0NDExZDk1MGQ0ODMyNTUwMzQ1OTYwNWRhMTA1ZDkyN2U1MmVmMDkgbGVnYWN5LXRydW5rCisyOTc1NyA4NzUxNDBkMzBlMTc2NTYwYWRmNDI2ZGRmNTM0OWMwYjhjMTVmN2RjIGxlZ2FjeS10cnVuaworMjk3NTggZWVjOTk3ODM3MTZjM2FjZGM0YmQ1NDJmYTYwMGZjYTM5NGI2ZTU3MSBsZWdhY3ktdHJ1bmsKKzI5NzU5IGNlNjQwZGFiMTBlNDMyYzg3OTg5YjgwZTRjNTVlNzE0ODdkMjA4Y2QgbGVnYWN5LXRydW5rCisyOTc2MCBlZmU1OGMxMGNjZjE2ZDAwNjZiZGEyMTI0MTg0ZDlhM2I2OGY2ZjdhIGxlZ2FjeS10cnVuaworMjk3NjEgNGVkMjMwYTBjOTMxZWIwZjFjYTUzZGE1ZDlmYjE0ZjRlMzQxYWU3ZiBsZWdhY3ktdHJ1bmsKKzI5NzYyIDQyYmZjOThkMjk1Yjc4NTFlMTcwMTc3ZGVmNzEwZmYyNDkyODM0NGEgbGVnYWN5LXRydW5rCisyOTc2MyA5NmJkYjQ0NzYzYzM2ZGYxOTY1NDE5Mjg5OWY0YTg1YmJiMjE3YTg4IGxlZ2FjeS10cnVuaworMjk3NjQgYTI0YmM2YTJlMmNkZmE2NjYzY2EyNTA3MmRmNGM2OWI4YzUxM2QzOCBsZWdhY3ktdHJ1bmsKKzI5NzY1IGIwYjYwODU5ODE3MDIwNWZkMTc0MGE0MzM0NWJlNzQ0NTcyZTc4MWEgbGVnYWN5LXRydW5rCisyOTc2NiAwOTM0YThhMGJhMGQ4NTRmYWQzNDJkYjI1OGQyMzY5NzdmZWFmNGE0IGxlZ2FjeS10cnVuaworMjk3NjcgZTk2NTc1ZjdlOTZhN2VjMmYwMDRhZTcxY2RlMDUyYjhhMmUzMjhmZiByZWxlYXNlMjItbWFpbnQKKzI5NzY4IGQzMWRkYzY2YjFiNTUxZjk5Y2ZmZTRmODZmYmYzYTQzOWJjYTBiOTUgbGVnYWN5LXRydW5rCisyOTc2OSAzMTZmZGRiYzFlMDdlZWViZGE4MDZlMTM2MDI4MWQ2Yzg1NDcwNmQ5IGxlZ2FjeS10cnVuaworMjk3NzAgZmY1YjUxMGViYTZiNjc5NDViZjgzMTI0NjZkMDdjMDllZDM4OTU1ZiBsZWdhY3ktdHJ1bmsKKzI5NzcxIDZkMGNkODBlMjgwNDMwZDg4Y2IwMDIxOTg4NTg3Y2UyODBiZDlhMmYgbGVnYWN5LXRydW5rCisyOTc3MiAxYmQ5ZDlmMDJhZDFiNDU2MmM4YjAzOGI1ZDA2NGE2OGM3YTM5NGVkIGxlZ2FjeS10cnVuaworMjk3NzMgYmVhOTkxZTY1ZmZkMzljODllODEwOGNmZDU4MGRlZGEzNDk4M2E1NiBsZWdhY3ktdHJ1bmsKKzI5Nzc0IGJhY2Q2NzhiM2M0Y2VkMjM0YzJjNmQ5NDM0YWUyN2NjMTYyODMwNDMgbGVnYWN5LXRydW5rCisyOTc3NSBmNmU0NjU4NWI2YjM0YzBkYzZiZTk5NGMzZTMxNDQwMTEwOGQyNzg2IHJlbGVhc2UyMi1tYWludAorMjk3NzYgYzc3NDM1ZDg3YzJlOTIwZGM0MDU2MDVjOGIzODM0Mzk5OTc0MzNiNyBsZWdhY3ktdHJ1bmsKKzI5Nzc3IGRjZGUyNTM0N2U5Mzg5MDFkNTFhM2ZlZDczMDIyYTgyOTEyYzAyMWYgbGVnYWN5LXRydW5rCisyOTc3OCBlM2I4Zjc3YTY5ODAwYjJjYjJiMDhkZDA5NWVkNjRkZjBjYmNiNWI1IGxlZ2FjeS10cnVuaworMjk3NzkgZmY3YWQzMmM5NTU0ZWRmMjhiOWRkNzJkZjY0YTYwYjkzMDlmNjI3ZSBsZWdhY3ktdHJ1bmsKKzI5NzgwIDBjODk5MzdjZWJlZDM3NmU0MGRlNjlmODYxNDFmODA5NTI5ZTNiZjcgbGVnYWN5LXRydW5rCisyOTc4MSAwODA4MzhlMzhlN2M0YWU4NGQyMjgxMWUxODZiZmE3NmIwMmIyODZlIHJlbGVhc2UyMi1tYWludAorMjk3ODIgMzJkZjhkNTk2MGQxODJmZDdjNGExMWQyYWYyZTJiYzNmYThkZTI0MCBsZWdhY3ktdHJ1bmsKKzI5NzgzIDI1MWRkMTM2YmFjM2JiMDMxNTdjNzkzZDA3MTMyZDUwMGRiZWQwNjIgcmVsZWFzZTIyLW1haW50CisyOTc4NCBlZjFlMzgzMmE5ZWEyMDIzNTI3MGMyYjUzYmJlNzI0NGIzNDU5YmRmIGxlZ2FjeS10cnVuaworMjk3ODUgNDAzZGNiYzkwNDNmNjg3NGQwZmZhZGI0Y2QxMTQwZjM5NzcyOTNjZSBsZWdhY3ktdHJ1bmsKKzI5Nzg2IDdmYzcwNGNjYTE4MTNiYjNjMDdmYzUxM2ViY2EzYWYxNTQxOWNhOTMgcmVsZWFzZTIyLW1haW50CisyOTc4NyBiYWE0N2Q3ZTg0ZTI1ODM2MDkyNjI2YWIxMjg1OTM3NjkxOWI2ZjdjIGxlZ2FjeS10cnVuaworMjk3ODggZjJmYzM4ZjhjYTlkZTJlOGI1MWQwMzY3NDYwZDdlYWUzYjMyNmZhYSBsZWdhY3ktdHJ1bmsKKzI5Nzg5IDhiNjM4YmU3NmNiZTI0MGI1NjRkNDE0NmJmNzQ3NjA5NmM0MmQwZTQgbGVnYWN5LXRydW5rCisyOTc5MCA0MWZmNTBiNGQwOTc0MjNiMGYyYTUzYzZkOWJlYTQ0NmJiZDU0OTc5IGxlZ2FjeS10cnVuaworMjk3OTEgOGU2MDEzYmJlN2E3YzNjNGZlOTlkMGE1NDcyYWQ5NTUwZjdkOGI0MCBsZWdhY3ktdHJ1bmsKKzI5NzkyIDNmZDhjMmFmZjMwNTI5NzM5OWZmMWZiZjI1Nzg4N2ViZWMxNGFiOWIgbGVnYWN5LXRydW5rCisyOTc5MyBhMjdhYzlkMzJmMjMzOGZhYWM0Zjg5NTA5ZTllMjBmMzBhYWY5YWEwIGxlZ2FjeS10cnVuaworMjk3OTQgYTRkYmEwNThmNzBlYWZmYzNmOGIzNmNlMzE4NWQ5YjdkNzA0YjczZSBsZWdhY3ktdHJ1bmsKKzI5Nzk1IDkxMGZhNzM5ZjRhNGU3YzM0ODUwOWMxZjkzZTVkMWExYjUzZjNmZmMgbGVnYWN5LXRydW5rCisyOTc5NiA5MGU5YTNlY2RhNDQ5ZGM2YmIxYTZhNWQ5YWI4Nzg4ODhkZmNlODlhIGxlZ2FjeS10cnVuaworMjk3OTcgZDQxYzRiOTVlNzE0ZGUxOGZmODMyNDc0OWExMWEzZTI3MjdiMzgyNyBsZWdhY3ktdHJ1bmsKKzI5Nzk4IDY4MDM2MGU2OGEwNjNhNjc4YTg4YTUwNTI1M2E3OTAyNGJhYzNhYzIgbGVnYWN5LXRydW5rCisyOTc5OSBmYWRjYWI2NWFhODc0YjY0OTIxNjk4YzMyZmI4MTQxZTI1ZWM3MjJhIGxlZ2FjeS10cnVuaworMjk4MDAgMDY3NTRkNzNjNjNlNDY4N2JlNjhlMDdiYjQzNjI3MDdjYjQ5YjZmZiBsZWdhY3ktdHJ1bmsKKzI5ODAxIDA1ZDZhZGUzZTkyYjRiMWM1ODE1ZDk5ZTI4NzA3MDUzMWFmZmI0YTYgbGVnYWN5LXRydW5rCisyOTgwMiA4MjM4OTZjZTJlNWQwNTY4Y2I5YzM0MzdmZTVlMDEyOGMzZDIxNTJhIGxlZ2FjeS10cnVuaworMjk4MDMgMmIwZTgxNWMwYjMwN2ZmZTNjNWRjMjEzMGYwNWU0NDEzZDc5MjgyNyBsZWdhY3ktdHJ1bmsKKzI5ODA0IGVhMWQyMDUwZDdkYWFlY2Y1NjJhZGY1MGY5MDVjNjk3Zjg4Y2FkYzIgbGVnYWN5LXRydW5rCisyOTgwNSBmM2E2OTAzN2ZkZjBmYWQzYTU5ZjAzNzU3ZTcwZGY0YmJjNDNkZDYyIGxlZ2FjeS10cnVuaworMjk4MDYgNDRkN2VhYWUwZDhkMzhiMjI2MmQzMmNjYmVlZTBhNjc2NWM0ZWE1OCBsZWdhY3ktdHJ1bmsKKzI5ODA3IDMwODZlMTExNzgzYTc5MTA0MWI4Y2Q4ZGQ1MDNlZjlkMzAzYjY3YjkgbGVnYWN5LXRydW5rCisyOTgwOCA2MGJkN2FmMDMyNGU4MGNhMzc3Yzk0NDU0NDgzNDNiOThhYzJmZWQ2IGxlZ2FjeS10cnVuaworMjk4MDkgNjAxYjhmYzEyZmI5NTNhMTg3MGM3ODkyNzdiYmRmYzIzYTM5NjhjNCBsZWdhY3ktdHJ1bmsKKzI5ODEwIGYzNDAwZWYwMmE0NTljNDdiMjAxOTkyNWViZTgwZDUyNGFhMjgxOTIgbGVnYWN5LXRydW5rCisyOTgxMSBjNzY3NjJkNjZmNDIxYzE3MmU1MmMwMGEyNDU0YmMyMDk0NzNhOGZlIGxlZ2FjeS10cnVuaworMjk4MTIgOTU3Y2EyYzUxNzkwNDlhMzU4M2U1NDgyODk4NzBhMTZhNGI2ZTA5YSBsZWdhY3ktdHJ1bmsKKzI5ODEzIDEwODcxZjQ0ZTdkYjI5ZDZjZGY2MzhlNzllYTQxZjhjNmQwYTE0YWUgbGVnYWN5LXRydW5rCisyOTgxNCA3MzNlNGI5ZDU5MmViY2ViMDk0YzI5OWQwOThmZGQ1OGFmMTFlMzk2IGxlZ2FjeS10cnVuaworMjk4MTUgYWM3ODcyZTU1NDA1OWJkOTg5NDAzNDdhYWVhYTE2ZTcyY2NhNWExMiBsZWdhY3ktdHJ1bmsKKzI5ODE2IDY1ODljMzdjMGRkZDcyYjNmM2M4ZTdmODQ4OWU3NGI1MzZmMDUxYzggbGVnYWN5LXRydW5rCisyOTgxNyA0ZWMxOTAyZWU2Yjc3Y2E4ZDk1YzU3NDAxYzk5NzQyNjBmZTgxMTA3IGxlZ2FjeS10cnVuaworMjk4MTggNTYxMTg1ZDEzZDVjYzQxZjc2MTJkNjY4NGVjYjYzOTdkZmUxMTE3ZCBsZWdhY3ktdHJ1bmsKKzI5ODE5IGY3ODUyNzBjZWUxOTdkMTcxNGM4NTlkMzhkM2RhNjE1NWIwMmNmYmMgbGVnYWN5LXRydW5rCisyOTgyMCAzYzY0ZWY4N2Q1Zjg5ZjU0NjgwNDRiMjg3NDQ1ZGJjY2ZiMTJmYzZhIGxlZ2FjeS10cnVuaworMjk4MjEgMDY3YTJlZjZkOGE5ZjE2ZjNiOGJiNDg3ODBlZWQzODAyYjI2YzAzNiBsZWdhY3ktdHJ1bmsKKzI5ODIyIDlmNDY5ZGE1OTFhOWU3ZmFmMWM1NjA4OTgyYjU1Mjc1MWEyMjRkZDAgbGVnYWN5LXRydW5rCisyOTgyMyA1NDdkZTQwN2MxMzM0NzNlZDNmMjM5Y2I2NDI1NDg5MGI0MmNjMDBhIGxlZ2FjeS10cnVuaworMjk4MjQgM2UwMmVhZDhkZTA1ODAwNzk3OWYwYjc0M2I2MmZiN2ZhNTY3ZjI1MiBsZWdhY3ktdHJ1bmsKKzI5ODI1IDQ2YmI5YWQ4MzE4ZjE4ZmE0ZDU0Y2U5ZmNmZDczNDA2NmJlMGRmMWEgbGVnYWN5LXRydW5rCisyOTgyNiA3YjkwOTY1MDFlYTgwZDgwNTllZWNiOTg2MGM4MTYzZjg5MGUxMDM2IGxlZ2FjeS10cnVuaworMjk4MjcgYWJmNTY1Y2Y1YjU0NzRjODJlNGU5MDFjZTI5MjcxOTU1MTIzZThhMiBsZWdhY3ktdHJ1bmsKKzI5ODI4IDEzYzFhYTE1ZTBmYjVkYTk0ODM3NTEzZDYyNGVlMjA4MzI0ZWEwYTAgbGVnYWN5LXRydW5rCisyOTgyOSBkYzM5OWU5Y2FiODk4NmU5MjcyYTM4M2NmNWRmMjk5MmVkZGJmYjBkIGxlZ2FjeS10cnVuaworMjk4MzAgMzIyYjY2NGEyMDIyZDg3ODRhOTYzMzg0Nzc1MjZiY2Q5MjY1YmZhZSBsZWdhY3ktdHJ1bmsKKzI5ODMxIDM1ZjEyNWQ1MmNmNWE4MWIxMmMwMTBiM2VhM2EwYjUxNmJiZGM2NTEgbGVnYWN5LXRydW5rCisyOTgzMiA4ZmUyOTZhZDU5MzZiMzcwMjhiZWQ2ZjI1ZGJmZmNiMWRlYjBkYmU2IGxlZ2FjeS10cnVuaworMjk4MzMgNzcwOTNkNTdjY2E5OTdiZTY0ODVjODJiMGE2OTViMDA3M2UxMTk5ZSBsZWdhY3ktdHJ1bmsKKzI5ODM0IDNmN2FlYTViOTNhMTg2NzkyODAzMmEzN2IzNTNhMTVkZDc4NDc3YmMgbGVnYWN5LXRydW5rCisyOTgzNSA3OTExODYzMmUzN2U0MDFlMDc5Y2JlMDA4ZmI1MmI3NjllZDEzMGFmIGxlZ2FjeS10cnVuaworMjk4MzYgNTRhNzRiMGRmZTI2Y2ZhNjJkOTY5YjIyZTUzNGNjZjMzNWUxYzBkYyBsZWdhY3ktdHJ1bmsKKzI5ODM3IDgyMzZkNTI4ODQxMjU2YmMxZWQ3NzhiYzAwNjA5NDcwNzY1YTAzZmIgbGVnYWN5LXRydW5rCisyOTgzOCA4NzhmZWRjNmM3ZTdjNGU1NTE0MzBjMzJiZWRkNjQxNGUzMDhkNmNjIHJlbGVhc2UyMi1tYWludAorMjk4MzkgNmUyMjhlMWFmZjM4NTg3ZTAxZTMzMTgzN2E0YjI2MTE5MTFjNjczMiBsZWdhY3ktdHJ1bmsKKzI5ODQwIGI4MjQyOGIxNzk3OGZiMGRiNmUwYmY5MDUyZWE2ZDhhOWIwMjRmNTEgbGVnYWN5LXRydW5rCisyOTg0MSA0ZjJkNTE3NGJkNGFjNWI4ZWViYTgwZjBjMjNiNGEwZTU3NzhmYTU5IGxlZ2FjeS10cnVuaworMjk4NDIgZDFkODk1OWIxMzhhY2ZlZDlmNjQ1MzAyODNhZGY3NDAyM2FlZDIxMyBsZWdhY3ktdHJ1bmsKKzI5ODQzIDA4YjcyMGNkMzg3ZTMzNTk1Y2I2YTY1ZDFmMmMwZDU2Njk4NDNjMjQgbGVnYWN5LXRydW5rCisyOTg0NCAwYzdjYjI3NDZkODY0MzQ1OGVkYTJkZWYxNzBkNGRhODU5ODQwYmZjIGxlZ2FjeS10cnVuaworMjk4NDUgYzFjYWE1YmZmMjkyYWY1MmUwZjAyNjg0YmFkMWIyOTU3ZDFkMTYwOCBsZWdhY3ktdHJ1bmsKKzI5ODQ2IGMyNjA0ZDY5YWE1ZDUyYmMyZDY4M2NiYzNhMjc4MGRiYjU4ZjNiMTEgbGVnYWN5LXRydW5rCisyOTg0NyA5ZTQ4OWEwZGY3YjVhZjlkNjY4ZDY1MzkwYzhiNjIwYTliYWJlYWM1IGxlZ2FjeS10cnVuaworMjk4NDggM2QwZTAyOTc2YmMzMzY2NDdhNzk1OTViZGU1MmNhNjA0ODllN2M4NyBsZWdhY3ktdHJ1bmsKKzI5ODQ5IGUxNjg3NjNlODYxYTJjNDkxMjdmY2M4NDdmYmM1YzFiYzRhNmQ3ZWQgbGVnYWN5LXRydW5rCisyOTg1MCBkNGNjOTcxZDE4YTYzZTEwZmRmZGM5ZmJkZjkwMTYyMmM5MzJhMTk5IGxlZ2FjeS10cnVuaworMjk4NTEgMTM1YmIxMTIxNWEwOTRiZTg2MmFiNjk5MjRiODU3MzhlOGJlZTYzNCBsZWdhY3ktdHJ1bmsKKzI5ODUyIGQwZjJkMWYzZmM4NTQyYTYzMDljMDA5YTNiMDcwYzM3ZThiZDdiN2IgbGVnYWN5LXRydW5rCisyOTg1MyAwZjI3NjYzMDJiYTBhOWYzNjhlNzhiNTQ0NWRiN2UwZGQ0Y2IxMGZiIGxlZ2FjeS10cnVuaworMjk4NTQgZDJmYjQyZWM4YmI0MjJlMzE2ZGEzMzM2MjdmOTQ4OGYxYTIwNzFjMCBsZWdhY3ktdHJ1bmsKKzI5ODU1IGFiMzc2M2Q0NzdjYzQwOGE2NzhjZDEzZjFiMWM0NjljNTQ1MjViMzIgbGVnYWN5LXRydW5rCisyOTg1NiAxODg1YjJkNjM5M2E4YWNkNzA0YzI4Mzk4YzFhOTNjYTY3YWUxMGNkIGxlZ2FjeS10cnVuaworMjk4NTcgZjhhMWJhNDQ2MTU4NDY5Y2VjNjg3YmMyOTE3ZDMyM2YzODdmNTFmNyBsZWdhY3ktdHJ1bmsKKzI5ODU4IDExOTE5N2ZhNjE0MDhlZDVhYjgxMDMxYmZmYmFiZTRiYzFhZDMwMmMgbGVnYWN5LXRydW5rCisyOTg1OSAzZDUyM2RiYzk5YmVlYTRhNzk0NThiMGQxM2NiNGU1MzZmNTIzMDBmIGxlZ2FjeS10cnVuaworMjk4NjAgZTc0ODZmM2VmNzU5YThiMmU1NDI3ZjQwMGUyZDk3YTJkZjgzMWMzZCBsZWdhY3ktdHJ1bmsKKzI5ODYxIGRmNTU2ZmRlYzY5ZDA1ZjM1NDc4ZTFkYmM1YzZlOGI0OGJjYjRiNDkgbGVnYWN5LXRydW5rCisyOTg2MiAxZjgwMDA1N2I2MzcyOGY1MjU3YTFhNjczNDc2ODI2NjQ1NDYxZWMwIGxlZ2FjeS10cnVuaworMjk4NjMgZGY3MTk3MzZlMTUxYjU3NjQ2OGMzYzBmOWNiOTZmZTYwZmM0ZGNjYSBsZWdhY3ktdHJ1bmsKKzI5ODY0IGZjZjk3MzRlMTAyMTRiZTNjNGYzNzcwNzVhM2NhYzIzMmFiNmI1YzMgbGVnYWN5LXRydW5rCisyOTg2NSAxYmFmMWNkZGMwZWNkOTY5YzY3NGM3YmNmNzRjOWI2YTNlMjA0NzYyIGxlZ2FjeS10cnVuaworMjk4NjYgOGEwMTBjMjdkNmNiOWEzNmNmZTVjYTlmNTU0NjZkNDYwYWI5ZTQzNSBsZWdhY3ktdHJ1bmsKKzI5ODY3IGE4Y2FkZmIwZmY4MzJmNmJjYmNmMGRhZDdmMzJlZDkwNjZhNTgwOTQgbGVnYWN5LXRydW5rCisyOTg2OCBkMjA3ZDFkNzhjNWQ1YTFmYmRkNDI5Yjc1NWIyNDE2ZmJmMWM3MjAzIGxlZ2FjeS10cnVuaworMjk4NjkgNDgyYWUwNTViYmQ0ZmEwYWM1YzRjYWU1ZDU3NjgzYWQyMGNmNzI4ZSBsZWdhY3ktdHJ1bmsKKzI5ODcwIGJiMzhkN2FiYzNmY2RjZjc4YTk3M2ZjYzcyZDFiNGQ0MjI2NGUzMDggbGVnYWN5LXRydW5rCisyOTg3MSA0OTFiZmM0YTBmNWJiNjIyOTdhN2NjN2FhYmE0ZGUzYzk3NTRlNWI0IGxlZ2FjeS10cnVuaworMjk4NzIgYjA1NWU3ODgzYzgzZmM1Mjc0NjZiZDExMzkxZTU1YWY2YmU0YWYwZiBsZWdhY3ktdHJ1bmsKKzI5ODczIGUzZmFlN2I2YzIwNzhmNGQ4YWM1NmUxMWY3NmUyY2YwOGNmZDdlYjYgbGVnYWN5LXRydW5rCisyOTg3NCBiMjdjMWNhZDc3ZWE3MDc1MGVjNGY5NmZmZjgzZDEwYjRhODBmNzM5IGxlZ2FjeS10cnVuaworMjk4NzUgYTBkNzUyYmU1NTc3MzBiZTMxOTAyYTk0ZDliMzk4ZTM5MjY5NTE1NyBsZWdhY3ktdHJ1bmsKKzI5ODc2IDI4MTJjYWNlMzAxYWNkN2ZlNTkyNTNjNDJjZTYxY2QwNWYxZGNlYzQgbGVnYWN5LXRydW5rCisyOTg3NyBjYzYyODU0ZjYzNmNmMjEwN2E3ODM2MTA1ODRjOTFhMmQ2ZmZiN2VlIGxlZ2FjeS10cnVuaworMjk4NzggNDM4MDQzNWZlZjY2NTA0ZjRjMWQ0ODU4MGE4MzcyNDc4M2ZmMWViYSBsZWdhY3ktdHJ1bmsKKzI5ODc5IGNiZDgxZDA4YzQzMDFjNGI4MGNjZjkzZGJiOGI0MmIwZDgzZTk4MWIgbGVnYWN5LXRydW5rCisyOTg4MCA0ODgxNjAyMWY1ODgyOTIxNWZjNWU5ZWEwOGE1N2NhMGZmZmNlZmRlIGxlZ2FjeS10cnVuaworMjk4ODEgMWI0N2I1NzZlMGQ0YTYxZDE1ZjhmMGQwOTlkMTBiYjBlOTQzYWJiYyBsZWdhY3ktdHJ1bmsKKzI5ODgyIGIzODUzM2UwMWQ2NWZjOWZhOGJmOWQ3YmZkZWE0ZmUzODdmYmY0ODEgbGVnYWN5LXRydW5rCisyOTg4MyA3MDBlMTgyYjI5MDE5MzQyNzdjM2FjMjcwMmFhOTZlYjg4MjdkNzJjIGxlZ2FjeS10cnVuaworMjk4ODQgZjcxMDE3MDIyZmNlY2M2MmVmYzc1NjdjYjkyNzQ2M2E5ZDZmY2M2NCBsZWdhY3ktdHJ1bmsKKzI5ODg1IDNmYTZkZWQwYTFlOTQ4MGZlM2JkODM3YjVlZDVhNjljYmE3NDcyOGQgbGVnYWN5LXRydW5rCisyOTg4NiA1NDQ3MjdkNDFmNTY4N2ZlYzk1NzllZWFkYTIzNTI4NWEyM2JiMjQ4IGxlZ2FjeS10cnVuaworMjk4ODcgMjY5MThlMmVmZDE3N2FhN2I4ZDE5MmZlOTIyM2I5NGNhNmI1Y2QxMCBsZWdhY3ktdHJ1bmsKKzI5ODg4IDFhMDk0ZWYwZmM4NjJjNDRiZjBhMWE4NjY2MzI0NjAxMGMwMzMzYTIgbGVnYWN5LXRydW5rCisyOTg4OSBkZGU5YzYyYTcyZmUwM2FiMzBjNjRhOTBiMmVmMjQzMDFmNGEzNWE4IGxlZ2FjeS10cnVuaworMjk4OTAgNTY5ZTE5M2JmNTlmY2E3MDM1MTkyMjJmNzFiMTlkMzE3MmI0Y2NjOSBsZWdhY3ktdHJ1bmsKKzI5ODkxIGYyODM1NTMxMDg2NzA1NWI1MTgzYWJjMTdkMzk3Zjg4ZTZjZDVlY2QgbGVnYWN5LXRydW5rCisyOTg5MiBkNTg4MjRjZWIzNWQ1ODY3OWQzMjEwN2NiNDQ2YzRlNzFkZjFlNTg3IGxlZ2FjeS10cnVuaworMjk4OTMgYmQwOWUzYTJkNTM2NDBlODNkY2FiMmY0OGMyZTU4MTE5MzY3NjU5MyBsZWdhY3ktdHJ1bmsKKzI5ODk0IDAzMDM1NTIzYjM4NWVlOTYzYmIyMzA3ZDgyYzFhOTJmNzE5ZWExMjYgcmVsZWFzZTIyLW1haW50CisyOTg5NSAzNWY0NDRjYTVlMDVjMzczNzAxNjc3YTAzMzM0OTk3MzljOWZkOGY5IGxlZ2FjeS10cnVuaworMjk4OTYgMWU1MTRlMzc3NjEzZTE3NjgyNjAxOTFiYmM5YWYzYjZlYmQxOTM1MyBsZWdhY3ktdHJ1bmsKKzI5ODk3IGFiNmM3YjI3YTRjYjkxNGNkOThiZjZmNmM3YzZhNTE5OGVmZDUxYzMgbGVnYWN5LXRydW5rCisyOTg5OCA5ZDZhZWQyZTYwZTI4ZjY3NzdkNjVlNmVjMDhjYTZmNzRiMDMyMTJlIGxlZ2FjeS10cnVuaworMjk4OTkgNGQ0NzE1MjZhY2UxMjRiOTlkNGJkMTJjM2E3NDA3ZDE5YTVjYzlkNiBsZWdhY3ktdHJ1bmsKKzI5OTAwIDNkMjg2OWRlMjMzNmNiMTI5M2ExMjkwMTIxY2MzMmZiNTU1ODcxYzQgbGVnYWN5LXRydW5rCisyOTkwMSA1MWQwMDU3ODFjODY5MTRmNmExN2RkNmFkZTE0OTYzZjNmNjk3ZjExIGxlZ2FjeS10cnVuaworMjk5MDIgNjA5YjVmMzdmMTRmZTJiZDkxZjRkOWM2MTY4ZGQzOTI1ZDZkZDk2OCBsZWdhY3ktdHJ1bmsKKzI5OTAzIDQ1NzRiNjU5ZWMzN2FiZDg4N2IyOWU0N2I2YTQ4OWMxNWJhZTFlM2UgbGVnYWN5LXRydW5rCisyOTkwNCA2NTExYjE2ZmZlODlmZmJlZmI5ZjdjMWM0NTg2ZmJlOTI1YjQ5Y2VhIGxlZ2FjeS10cnVuaworMjk5MDUgMDEwM2YwYjc1ZmUyNjM0N2U4ODYwOGVkZWU4YzY1NGMxMzU5YmYxYSBsZWdhY3ktdHJ1bmsKKzI5OTA2IDRiZWUzMzc5MDk0MGNjZGRmMjMwYTBkNDlmZjM3YjQzYTNhNGQ2ZDcgbGVnYWN5LXRydW5rCisyOTkwNyBiMDQ4OWE2MDU5N2Y3NDE0MWM4YzgxMmJlYjc0ZjFjY2ZlNGU4ZTRhIGxlZ2FjeS10cnVuaworMjk5MDggYWQ3NWVmZTJmMGE2NmM3ZmRkMWYwNmE4ODBhZGQyNDlhOGRlNGM3OCBsZWdhY3ktdHJ1bmsKKzI5OTA5IGM1MjJjOGM3MWNhYjBjMTBlODU2YzU3M2MwMTg2MWIzMmE2ZmU5YjkgbGVnYWN5LXRydW5rCisyOTkxMCBjNmZmZDhlNjFjY2U2ZGJjYzBmMGExMzhmNmU2NTliMWM3M2U2OTcxIHJlbGVhc2UyMi1tYWludAorMjk5MTEgNmQ1OTA2ODUzYTdkOTA3ZTY4MzU1MDFhZjQ5NTNkMDZlMWJjN2E5ZiBsZWdhY3ktdHJ1bmsKKzI5OTEyIGMyYmU0ZGMyNTQwNTU0MzU4NzA4OTdlOTcyOWYzNjA3YzczNThhM2QgcmVsZWFzZTIyLW1haW50CisyOTkxMyA0YTAxMjA5OTI2OTE2ZDlhYjUzZTAwODYwYTRlOWIzNDc4ZWY3NTQzIGxlZ2FjeS10cnVuaworMjk5MTQgNTdkMDMzNzVhZWFkNzdhODU5OTUwMjQ5YWI2ZmQ4NmFlMjJiZmRhNCBsZWdhY3ktdHJ1bmsKKzI5OTE1IGQ0NDk0NWI4MWZmYWUwMDc3NWYxMmZiYTg1ZjE3YjczZDQ4NDU0NjEgbGVnYWN5LXRydW5rCisyOTkxNiBjNWIxMzA1MDgxZGZkMTI5OWZjYTljNTk1YTNiYjUxNTY1MTYwNTFmIGxlZ2FjeS10cnVuaworMjk5MTcgYWEwZTE5YjZlMWU3NWEwYzU3NGFiNzczZjE1OGE0Y2NjM2E5NmFkZCBsZWdhY3ktdHJ1bmsKKzI5OTE4IGEzNTBhNDg3ZWFjMTFiMzY1NTljOTU0NmQ1MGExZWUzMTk3MWQ2ZTggbGVnYWN5LXRydW5rCisyOTkxOSAzNjcyNTIyMTRkYWYwZjI3NTI5YzBmYjRhNGFjN2Y1NmVlYjI2OGE1IGxlZ2FjeS10cnVuaworMjk5MjAgYzEyNThiMWEzNmM2ZjY4ZGY2YzAxOWVhZDk1MzVmYmE2OTUzYTFlZCBsZWdhY3ktdHJ1bmsKKzI5OTIxIDRhYzM4ZjI4Y2QxMGExNWNjYzkyNGM5NGMzY2RiMzI3MDFlMmYzZjIgbGVnYWN5LXRydW5rCisyOTkyMiA3NDIxMzY3Mjc0YjQ1NDgxZWYyNzFkYTYyN2RmYzZhN2Y1MmY2YjQ0IGxlZ2FjeS10cnVuaworMjk5MjMgNzc3N2RjZWI2NmVlMTQ0Y2NjNTY1ZmMzYjU2NjdjMDQ3ODU1M2I2NSBsZWdhY3ktdHJ1bmsKKzI5OTI0IDdhMDliMzZjYTM3OWMyYzA3ZDZkNzkxOGMwZmY0ZTA4N2YyNDQxMTAgbGVnYWN5LXRydW5rCisyOTkyNSBiZGRjNDEzMTUzMzY1MGQ4YmRkZDg1NjE1MGZmMmIzY2MwNzI4YWFlIGxlZ2FjeS10cnVuaworMjk5MjYgOGVhMmUzNTk5N2EwNGIyMDU0MzBlODE0NGMyZTljMDM1NTEzYWY1OSBsZWdhY3ktdHJ1bmsKKzI5OTI3IDhiOTg4YTA5ZGU5NmRkYTY2OWFjOTc1MGFmZTM2OTJlZTE3MGRjZGQgcmVsZWFzZTIyLW1haW50CisyOTkyOCBjYTAxZjNkZTY2NGU4YjYwOTMxMjkxOTVkNjQ0ZjU5N2QwMjU3OTQ1IGxlZ2FjeS10cnVuaworMjk5MjkgY2I4NWFhZTc4OTgwMmFkNjdhNjU1ZWM3NGJkN2M4ZTAxMzkwMGMyNSBsZWdhY3ktdHJ1bmsKKzI5OTMwIDYwZTU3Nzk3YjhlNjFhMzExY2FhMjllYTY0Y2I1NjhiZWM2MGNmODggbGVnYWN5LXRydW5rCisyOTkzMSAyNzIwNGYwNzEyYTI2ZWU4YzQ1OGNmOTIxZjU1Yjk2OGIzZjkzMDY0IGxlZ2FjeS10cnVuaworMjk5MzIgNWM3YTNhMTczMTBkMWEyYThkMzZmNzNlMzAzOWFjZWQ2NmQxM2IzYyBsZWdhY3ktdHJ1bmsKKzI5OTM0IDQ5ZjQ5YWViZjVjMjBiZTMyZDhlNGNjNjJiOTEwZmY2Nzc4NzI5MTkgbGVnYWN5LXRydW5rCisyOTkzNSBlNTFjYmRjYTIwODViYTk3MmE3N2VmZmJjODBjYmI2ZmMzMjM2OTJkIGxlZ2FjeS10cnVuaworMjk5MzYgMDNhZmRhOWFkMDkwOGEzZmMxMjhlODNlM2JiMjM2MDk2M2VjZTAzNyBsZWdhY3ktdHJ1bmsKKzI5OTM3IGRkODE3YmIzNjQ2YmNiOTJkZGQ5NGRkYzA0M2RhNjQ0ZmFjZGM2NjEgbGVnYWN5LXRydW5rCisyOTkzOCAzN2ExNzhjMGZkNTlmMmYyNDMyZTk4YzU1N2JlODkwMzBmZmZhNzNiIGxlZ2FjeS10cnVuaworMjk5MzkgZGRiYjA1N2U1YWIzMTViY2U5NDYxZDFjMDYyNjkwZDQzOGExZjRhMSBsZWdhY3ktdHJ1bmsKKzI5OTQwIDE1OTU3YjdlNDI0NzllMjk5OWZkODBlNDlkZjM3NTNhNWJlZTNhMGIgbGVnYWN5LXRydW5rCisyOTk0MSBjODhmNmZmZjFjM2YxYzc4MTczNjRkMzM5ZDliYThlMTMyMWI4NmE2IGxlZ2FjeS10cnVuaworMjk5NDIgMTRmYzE4NzMzNGM1ODE1YTk4ZTM4MWQwYmQxZTdhMThhNGY1Yzg0OSBsZWdhY3ktdHJ1bmsKKzI5OTQzIGUxYTMzMTM2YjRlMjY3YmJmNDk4OWJjMzMzMzM2MjY2NjdiODViMTIgbGVnYWN5LXRydW5rCisyOTk0NCA0MThhN2VjOTI1OTkzMGZmZjg3MzU3MzQ1NTM1NWQzZGE3NDZjZGQ3IGxlZ2FjeS10cnVuaworMjk5NDUgYTU3M2FmNWRiODA3NDUyZWFjNzRjNzE2ZWEyZjllYTdkOWYwMjdmZCBsZWdhY3ktdHJ1bmsKKzI5OTQ2IGZiYjI0Y2Q1NDc2NmNlNzdiOTBlMzA1YmFlNTBjNjliYzNiMDk0ZDkgbGVnYWN5LXRydW5rCisyOTk0NyBmNzllYmJhYTQ4MzM0ZDU4MmVkZGNkZDVhYjgyZDI3YWRkY2ExNDM1IGxlZ2FjeS10cnVuaworMjk5NDggOTVlZGI0OGRiZmExNmY2M2U2ODJiZThiMGQzYjE4MDU3MDc4M2I2MSBsZWdhY3ktdHJ1bmsKKzI5OTQ5IDk5Yzc4Y2Y5NTYxMDUxYTlhMDMwYTVjZWFkYzA0YzY2MTZlZmVjODkgbGVnYWN5LXRydW5rCisyOTk1MCBiOGZmZmJiZDY4MzI2NjM2ZGRkNjYxYjRlM2U4YzFjOGRhMTM0YjZhIGxlZ2FjeS10cnVuaworMjk5NTEgMDY5MGY4MWNjZTc4YmU3NGExMDgyMGMwOTljZWQxNWRiNjNlNzMwZiBsZWdhY3ktdHJ1bmsKKzI5OTUyIDEzODM4NTMwZjYxOTU3NDQ3ZjlkOTlhMDQwMDg0OGQ1MjZkMGFlNWEgbGVnYWN5LXRydW5rCisyOTk1MyA2YzQ1OTg1YThmZGJmZjNhYTE0ZDc2MzQ1N2JiODY2NDZlM2ZiMjJmIGxlZ2FjeS10cnVuaworMjk5NTQgZjI1NWIzZjVlOTEzNjFjNDRlYWMzMmUxZmZlYWMyMjY2MDc4NmE4OCBsZWdhY3ktdHJ1bmsKKzI5OTU1IGUwNzk0OGQ1Y2Y2N2M0NWRjN2Y4ODE5OGIyOTEwNGJiOGM0Yzg1YjkgbGVnYWN5LXRydW5rCisyOTk1NiA3NDY4YjY4ZTk4Mjg2ZjRlYzFhYzE3ZGUzYmZjY2I0MGY5Y2MwYmRkIGxlZ2FjeS10cnVuaworMjk5NTcgZDFiNGU3MDE2ZDg4YTUyZWI4YjYyY2Q1NDdjOThhYWFmNzExZDYyYyBsZWdhY3ktdHJ1bmsKKzI5OTU4IDdiYTA3MmRiMzgyOGY3ZDNhZDk2MjYwYzZiNGEzODYzYWNmZTgxZDcgbGVnYWN5LXRydW5rCisyOTk1OSBiMjY4YTZlODU5Y2I3YjI4NjQ5Y2VmOThhYThkZDNiZDljNjJkODkxIGxlZ2FjeS10cnVuaworMjk5NjAgMjhlZmUxNmE4YjdkZjdhZDBlOTY0ZGMyODM0NmM1NGE1ZWJkNDZhMiBsZWdhY3ktdHJ1bmsKKzI5OTYxIGUyNmEyMDhlYTcxYjgzNTcxNmZhMDNiNWU1ZjJkNzQ4MWViNDQ3NTMgbGVnYWN5LXRydW5rCisyOTk2MiAwZjg0OGIwNjE0NmYwYzk3NTQ2N2RhMDE0OGU1NTQ0ZGQ4MDBjZThkIGxlZ2FjeS10cnVuaworMjk5NjMgYjRjZTZhYzE3ZjYwNzllNjZmMzQyMWE4ZjA2NWIwN2QwODJlNDIzZCBsZWdhY3ktdHJ1bmsKKzI5OTY0IDJmNDBmYTc5YjU5YTVmMjc5YzAzZDcxYWNjMGQxZmQ5ZGQ4YTQzZDAgbGVnYWN5LXRydW5rCisyOTk2NSBiOGE3YzRjZjNlNmQyNjAwNTk3MjBlY2NiNTgyMDc5YWFhZjM1Y2ZiIGxlZ2FjeS10cnVuaworMjk5NjYgYzEzNWZiMmJiODI1YWU4MDg1YjI4MWZjNjkyOTZmMmQzM2FiZTc3NSBsZWdhY3ktdHJ1bmsKKzI5OTY3IGE1NmUwYjI1MTdiZDgzNTY0YTgyM2Q2OWI3MjBmNmIxYWQxMzBmZjUgcmVsZWFzZTIyLW1haW50CisyOTk2OCBhZjQ2OThlNTkxZWNjOGUyOTg1YjNlOTEzYzIwZDJmZDQwZWVhZDJhIHJlbGVhc2UyMi1tYWludAorMjk5NjkgZTBiNTk2MDYwMzEzZTYzNzA4ZjdhMjk0ZTViMDBmZWZhNDQxNjE0YSBsZWdhY3ktdHJ1bmsKKzI5OTcwIDIzOGNhYzk3ZDE2NTg0YmUzMTU1YjdhNGVkNDQ0YzRlNjZhZjU0MTkgbGVnYWN5LXRydW5rCisyOTk3MSBiMzFiZDAwNGY0MzBjNzMzODhhMDljNzNiMGE4MjNlNzFiNjA4ZDE4IGxlZ2FjeS10cnVuaworMjk5NzIgM2Y4MDE5MjczNTQ5ZWNmMmE4OWU5NmViZGM2ZmRmY2YwMzliYjAwZSBsZWdhY3ktdHJ1bmsKKzI5OTczIDU0NjdjNmUxZjU0MWIwNGZlYjUwMTczOTg3NGU3ZmMwMDZmODc2NjQgbGVnYWN5LXRydW5rCisyOTk3NCAyNzc1ZGUzNWRkMjlkNDljZWQ1MDZkNmI3MmQwYWM3MTVhNzZmZDFjIGxlZ2FjeS10cnVuaworMjk5NzUgZjA3NzJiZDdjYzQwMTJjMjBmODc0ZjgxM2Q4OTMwYzg0ODg0NmZhZCBsZWdhY3ktdHJ1bmsKKzI5OTc2IGY4ZDFjNjgyMGJmYWVjNTM4OWQ3NzE5NjYxNzUyNDNlZGVlNGE0NmQgbGVnYWN5LXRydW5rCisyOTk3NyA3NmY3OWJiMzZmYzc3M2RjOTFhZTQxMzk3ZmQ1ZTdlYzNjYWQ1NDE5IGxlZ2FjeS10cnVuaworMjk5NzggY2QxZmU0YjVmN2ZmY2MyM2VlOWM5MmI5NjI0NjVhOTI1ZTFkYjQ4YSBsZWdhY3ktdHJ1bmsKKzI5OTc5IGY4NjEzMGY0NWJmNzUwZDhmOWJkODhkNWUyNGRiZDY5ZDYzOTFlZTkgbGVnYWN5LXRydW5rCisyOTk4MCA2NzEzMjcxOTVkYzMwZWE1ZDJjNDdlYjI5NDk1NzI2MDYzNjA2NzIyIGxlZ2FjeS10cnVuaworMjk5ODEgODI1NDQ1ZjlkNmI4YjAyYzhlYmNhMjIyNzVhODFjZjFkZjRiMDUwZiBsZWdhY3ktdHJ1bmsKKzI5OTgyIDAwMTVkM2YxODllMTQ5YTI5YjY2YTUyMTc1YTY4NDA0ZDJkY2M3MzcgbGVnYWN5LXRydW5rCisyOTk4MyBlZGE4ZTY4OThkZDNlZTdjMTFlMzJkMGU5NDhkN2E1ZjNhYWRkN2NkIGxlZ2FjeS10cnVuaworMjk5ODQgYTliNGI2YWExMjIwMjc3NGNlNDgzM2UzZDJlYjA1ZGMwMDQ5MGE1MCBsZWdhY3ktdHJ1bmsKKzI5OTg1IGZhNDUzMmVmOTljOWE5ZjA4ODNhMmIxMWJlYjFhOWI0ODg2MzdiZjIgbGVnYWN5LXRydW5rCisyOTk4NiBlOTIzZjZkM2I0YTMzMDkxNzcxN2ZkYjY5NzNjZTAwMjhlNTdhMDhhIGxlZ2FjeS10cnVuaworMjk5ODcgOWU0YzgwMzQwZmExZDk3NTVlZjJjZDgzZmI1OGZiMjMzMzlkNjExZSBsZWdhY3ktdHJ1bmsKKzI5OTg4IGY0MGEyZDNhMmFiNTUzNzJhNWNmNmYyZDEyNGQwZjg3MDA1OWJjZDUgbGVnYWN5LXRydW5rCisyOTk4OSAyZDQ0YWJlNTdiNDI2Mzg0MGRjZjgwNTg5NDMyY2NlMzNjZDYxZGM3IGxlZ2FjeS10cnVuaworMjk5OTAgMzc2YmQzNTdjNGQ1YWU2ZDE2N2EyZmFkN2E3ZDYyNmU1NGVmMDY5NCBsZWdhY3ktdHJ1bmsKKzI5OTkxIDVhOWU3MDY0YzkyMzRkMTI3ZDIwODQ3YjAzOTllYzMxZDA5YjA0NGUgbGVnYWN5LXRydW5rCisyOTk5MiA2NDMxMDAxNzBiZGU5MWY4NjVlOGVjM2U4MDQ1NjBlNDQ2YmNkYzZhIGxlZ2FjeS10cnVuaworMjk5OTMgNTBjNjMzYTg3ZTM1NTQ3ZjFiM2Q5Y2EwYTJjOWM3YjhiMzgxYjUwMCBsZWdhY3ktdHJ1bmsKKzI5OTk0IGZkNmZiNzNmYjIwZmRhMWZjOTg4ZTllOGNjZjQwOWU3ZGY2NzNjNzggcmVsZWFzZTIyLW1haW50CisyOTk5NSA4NTA0NTkxZTRjNjMxYjQ0NzdhYTAxYzVhMGE1NjNmOTAwZDEzZjlkIGxlZ2FjeS10cnVuaworMjk5OTYgOTRjNTUzZWI4OGMzYTU3NzkyY2Q5ZTlmN2VhNjQyNDgxMjUyN2Q1MiBsZWdhY3ktdHJ1bmsKKzI5OTk3IDBiNjZkNGU5ZjRmNDg1OTY3OWI1YjQwNTgwZGUzMDQyMjJkOGQyZmYgbGVnYWN5LXRydW5rCisyOTk5OCAxN2QxMjNmMzM2MTEwNjAwNThhYTU0ZGZmMDM2NTJjNjdkM2Y4OGRhIGxlZ2FjeS10cnVuaworMjk5OTkgNzlmOTA2M2ZiNThlY2IyOGRhYjk4NGIwOGYwNzhjN2ZmMTYyNDQ3NCByZWxlYXNlMjItbWFpbnQKKzMwMDAwIDRjMTY0MjhmYmNkODNjNWYxNzAzOTAyNjY4ZGJlMDlhYzcyMzJiNDAgbGVnYWN5LXRydW5rCiszMDAwMSBhNWE4NzM1NzExZTgxNmY4NTFkNDJiZGRlODQwYjI5MGU3NWFkYzRhIGxlZ2FjeS10cnVuaworMzAwMDIgN2FiYTg1OWNlZTU0NTMyN2M4OGU1NTRlNWFlMzFiMzEzNWJlMDQ4YyBsZWdhY3ktdHJ1bmsKKzMwMDAzIGQyZDc4MTdmY2NiYmJhZTEzZDhlOTE3ZTUyMmE3ZTljNjMwN2EzMTEgbGVnYWN5LXRydW5rCiszMDAwNCA5ZmI4YWFkZTg4N2Y4NTVjZmQyNWIxNzA4YzgwNzAzMTA3OWVjODNlIGxlZ2FjeS10cnVuaworMzAwMDUgMThkY2Y4MGU2ZjhkZWRkNGUxYzA5ZmNkYWY1ZTI2NzI1ODFiMmM5YiBsZWdhY3ktdHJ1bmsKKzMwMDA2IDM4ZmU1ZWI2YWMyNTY3MjEyNjE3OWVlMmUwMjc5M2Y5ZTQ1ZTU5MjMgbGVnYWN5LXRydW5rCiszMDAwNyAzOTgxY2YyYTU3MzA1MzRkODk2ZGM3NGRjM2ZiYmJjZTU5MzlkMDU4IGxlZ2FjeS10cnVuaworMzAwMDggYjU4MzdiOGYzYjJjNGMyYjZiMDA1ZWZmMjc2N2NhMTNmNTFlYmJjNCBsZWdhY3ktdHJ1bmsKKzMwMDA5IDhlMTU2N2RiY2JhODkzZmU2NmIzYzA5MzA3OWQzZDY5Y2NjNzBjMGEgbGVnYWN5LXRydW5rCiszMDAxMCA2MTc3YTEzZTRjMTQ1YTQwZDE4ZjJjYmEwZWZlNGM0ZWZmZWQwYWFkIGxlZ2FjeS10cnVuaworMzAwMTEgZDZkNTIyMmI3ZTU1NTJhOTJlN2EyMGFiNTQzYWFkZTc5MjdmNjdmYyBsZWdhY3ktdHJ1bmsKKzMwMDEyIGNhNmZhNjk3MTFiYjVlMGUyZGY5NjlmM2YwMmE3YTlkODI5NzIzNzkgbGVnYWN5LXRydW5rCiszMDAxMyA2MWUyYjhjZWZkODY3MDBiZjFkY2YxZDA3M2JlMDNjZTdiYmYzYWUwIGxlZ2FjeS10cnVuaworMzAwMTQgNmVhNzg2NTI4Mzk1YWI3NDQwNzk3YTkyM2Q0N2IyYjBhM2Q3YWM2OSBsZWdhY3ktdHJ1bmsKKzMwMDE1IDk5N2ZhMDIyNDRiYWMyYzJhZDA2NWE2OWQ4M2IxYjI3NjczNmViZDIgbGVnYWN5LXRydW5rCiszMDAxNiAyNjIxOTY4MzE5ZjAzNDRhMmZjMTc5ZTJlNzI5OGFjNDY1NTFmYjlmIGxlZ2FjeS10cnVuaworMzAwMTcgMGU2ZTM5ZmI5Y2Q3MzJhZDZkZDAxYzg4NDAyMWQ0MDI1ZTY1ZDNmOSBsZWdhY3ktdHJ1bmsKKzMwMDE4IDkxMGZiNjZjM2I4MWNiY2UzYjY1OGNhMmZiMmI2MTk1MWJkOThhNWQgbGVnYWN5LXRydW5rCiszMDAxOSBlNDI3MzJlMjg5YjlhNDE2ZGNjNjY2ZjRkM2U2ZDljOGEzNGM3ZDg0IGxlZ2FjeS10cnVuaworMzAwMjAgNTg0NDBkMGI5YjRlYTZjN2M2YmNjODJkOWQyZWNiNTUyYWUyOWYwNiBsZWdhY3ktdHJ1bmsKKzMwMDIxIDk3NTQ4MmQ1ZWI1Y2U3OTRkNTIxM2U0ODI4Yjk1MDY4ZTU3ZWYzYTggbGVnYWN5LXRydW5rCiszMDAyMiA5OTcwZDc3OTgwYTBlMmZiOTM5YzkwOTlhYjczNDA1NDM5YmM0NDQzIGxlZ2FjeS10cnVuaworMzAwMjMgOGE3NWM2NmJmYTE0ZGU0YmE3MmFjYzVhMDQ0OWVmOWZhNDYwMGMyOCBsZWdhY3ktdHJ1bmsKKzMwMDI0IDA5YzdlZDFiN2E4NzM5ZDgyNzk2NzIyOGM2MDE0ZGQ3OGRjNzYxNDMgbGVnYWN5LXRydW5rCiszMDAyNSA2ODdiNGIxNjUyNjhjNzU5ZmQ0NzdlMjg4ZWI4NTUwYmI2MjIwYTk2IHJlbGVhc2UyMi1tYWludAorMzAwMjYgNjc5MTJkODM3OTlmNzNjMGNlOTU3MTY0YjkwMWQyNGQwNmRiZDhhYiBsZWdhY3ktdHJ1bmsKKzMwMDI3IDhiMzYwMWE2MjMzNjMzMmRlMjRiMDZiMzRiZmY0NTdlOTU4NjZlMjcgbGVnYWN5LXRydW5rCiszMDAyOCBiOWM5MTJlMmMzYzAwNjNkYzkwYjU0NTU0MDUxYmNjYWE4ODE4NGQ3IGxlZ2FjeS10cnVuaworMzAwMjkgMGM5OTVjZDA3MDI2NzcxOTYwM2ZhNzEzZDk1Y2VhNDkzY2ZmMmMxZiBsZWdhY3ktdHJ1bmsKKzMwMDMwIDRlNmFjMmZlNjhmMGJjYThlM2YxOTA2MDlhYThmMDM3OTFmODZiN2QgcmVsZWFzZTIyLW1haW50CiszMDAzMSBjODg0YTZjNDdlMDYwZThiMWZmMDMwMzllZTU0Yjk1NjBjZGYzOWMyIHJlbGVhc2UyMi1tYWludAorMzAwMzIgNGJlYmYxYTE5MzE5YzQxNWNlOTNjM2RkN2MwMTQzOGU0MGY2ZDc3ZSBsZWdhY3ktdHJ1bmsKKzMwMDMzIGEzNmRmZmQ3NTMwMDliOGVmM2VlOTJhM2Q4MTI3MGE1OTdlMmY4ODYgcmVsZWFzZTIyLW1haW50CiszMDAzNCAyNDJhZDVjNTkyY2MyYWZkYTg1ZGEwYmMyOTNhMWVhZDQyYjlkYjg0IGxlZ2FjeS10cnVuaworMzAwMzUgNGJlNjJkYzlhM2U3ZDc0OTI2MGM0MzE0OGM3MjdkZjU3NWQwNzhhZSBsZWdhY3ktdHJ1bmsKKzMwMDM2IDcwMWI3OTdiYmRjOGZiNDQ2MGQwZTM1MzJjYzBjMTQzMTIyYTU2NjkgbGVnYWN5LXRydW5rCiszMDAzNyAwZGJmOThlZTExOGUyNjk1M2I2MTcxYzRkZGI5YTg0YmE0NWViYzg5IGxlZ2FjeS10cnVuaworMzAwMzggOGY3NDNlYmU2YzY2MzJiMDBhM2NiMmVmMTM3Y2M2NzQyZmRlZDZhOCByZWxlYXNlMjItbWFpbnQKKzMwMDM5IDEyYmM0YTNlNDVhZjhhMjRjMWI4ZWNmZWI4NmRiODVkZDcyYjczNDggbGVnYWN5LXRydW5rCiszMDA0MCA4NTFjNjI5MjA1ZDJmM2ZhZTMyYTg0NDQ5ODkzNDhkNmUwOTg5ODU5IGxlZ2FjeS10cnVuaworMzAwNDEgYjU2NmJlOGJmYzIzYzc5MDI2NGRlMGM4YmQyNTFkMzU3MWRhNDRjNiBsZWdhY3ktdHJ1bmsKKzMwMDQyIGZhNjVmOTRkYzRjZGJjNzQ1OTBmNTgwODc1MDFiZDQxYmQxZTE1NGMgbGVnYWN5LXRydW5rCiszMDA0MyBhOWY2YzAwNmFhNDU4ODY5MDk2YzQzOGY1MzFmZWZjY2U0YjU4OGQ3IGxlZ2FjeS10cnVuaworMzAwNDQgNzE1ZTI4ODhmMzc3ZmI5MmVkMjEzZmM0NTljYWRiY2FkMDY0ODc2OCByZWxlYXNlMjItbWFpbnQKKzMwMDQ1IDA2MDFhOTA1NThmZGJhZjM5ZWNiZDc4NmVhYjY5Zjg2YjUxNTYzNDkgbGVnYWN5LXRydW5rCiszMDA0NiAzNDJjMzRjNDM4YTI2MDhhMTU1NDY1ZmEyYWU0ODM2MDRjNmVhNWU4IHJlbGVhc2UyMi1tYWludAorMzAwNDcgODJiOWY1YzdkMDFhMTQ2NjI3ZmVlNjhmNGFiYTRmNWFiYWRmODFhNSBsZWdhY3ktdHJ1bmsKKzMwMDQ4IDJhYmExYWM0NzQ0Yzk2NzkzOTU1MmZlZThkYmRiNTdmMDAyNWRlODAgbGVnYWN5LXRydW5rCiszMDA0OSBjYjhjZmFkZjc1YTI3YmY4YjUzZTNhMDY4YjA3OThhMWU5NThhNTkyIGxlZ2FjeS10cnVuaworMzAwNTAgZDc1NWQ0MjkyZjNmZmIxMmZiODE3YzcwM2UyMjY3ZmM3OWQ2ZTM1MCBsZWdhY3ktdHJ1bmsKKzMwMDUxIDI5ZThkZTU5NzU2YTQ1YjYyZWRmY2I4ODI2OGI1MGQ5MTBmN2FjNDkgcmVsZWFzZTIyLW1haW50CiszMDA1MiAxZDllMzBjMDVjZGU0Y2IyNjlhYzE1ZGRlYzYxN2FkZTA0YmQ3YjdlIGxlZ2FjeS10cnVuaworMzAwNTMgOTNiNWNhOTQyM2ViMjc5NWJkN2EzMTgxMzMxMTNiOTU3ZmQ3MGE1MiBsZWdhY3ktdHJ1bmsKKzMwMDU0IDdhZTljMzZjYmNiNjZhNzE5YmVjYTgwMzQ5MGYwYjgyNzJlYTNmZTIgbGVnYWN5LXRydW5rCiszMDA1NSA0MDUyMzlhN2UwZDhiYzk0ODhjN2I4NmJjMWFjMmJlYjE2NTUxYTVjIGxlZ2FjeS10cnVuaworMzAwNTYgOGNhODA4NDNhNjcxNjE3NTk5NzI5MGU5NmFkYTAyY2FkOTc0MzFjYiBsZWdhY3ktdHJ1bmsKKzMwMDU3IGU4OTQwZDRjZDhjYWU3YWUzNmZjZmJmZmU2NjQ3M2UzZGVhOGIxNmUgbGVnYWN5LXRydW5rCiszMDA1OCBkNGI3NjgxN2M5ZTYzYzY1MTAzZjdjNDMzZTkzNzE1NzNmYWIyNjBhIGxlZ2FjeS10cnVuaworMzAwNTkgOTIwNmIwMDRmMTUyYzQzZDVhMWVkZmMyZDIzYjJmMGY1NGFiYWQ1NCBsZWdhY3ktdHJ1bmsKKzMwMDYwIDk1MjY4N2VhOWNiMTJkOThkNjYwMWU0YzgwMmNkNzM1YzRhMTY5YTcgbGVnYWN5LXRydW5rCiszMDA2MSA4OTkxZjc4ODE3Yzc5MDA0YTBjODE3M2ZjOTRjYjE2MmQ2MzE5YzE5IGxlZ2FjeS10cnVuaworMzAwNjIgNGU5NGFhMDcyNzY4NjIwNTVmNDU0OWIyYjk2NmM5ZDE2ZTg2NGQwZiBsZWdhY3ktdHJ1bmsKKzMwMDYzIDNmNDM4M2EwNGI2MjU0YjM2YTJlMzMwMmY3N2Q4YmQ3NzkwMzUzZWUgbGVnYWN5LXRydW5rCiszMDA2NCBlNjQ0MjViYjk0ZDg5YTMyMGM5MDNiYjdmMTEyOTI3NzMzYjJlZDViIGxlZ2FjeS10cnVuaworMzAwNjUgODEwMzJlOTdiYTNjYTIwMDIxZDVhZjk3OTlmMWIxMDIwZDkyODEwOCBsZWdhY3ktdHJ1bmsKKzMwMDY2IGY1YjRlMTc3NDk2MTdhOTYwMTA1Nzc4NTI0MWNlZTRhNmJkODAwN2MgbGVnYWN5LXRydW5rCiszMDA2NyBmOWQ1MTZjNjFlN2I5MzJjZjY1ZjdlYThmNzA1OTgxNDk1MTk1MTM4IGxlZ2FjeS10cnVuaworMzAwNjggNjE1YTI1YTZlYjViYWFjNjY2ZmI1NDY1NGJhNTNlOWJhNTA1MWMyNyBsZWdhY3ktdHJ1bmsKKzMwMDY5IGMyMzRmNDhkZTEzOGY0OTliMGQ0ZDlmMzc0Y2U3NTFiZTNiNGE1MjkgbGVnYWN5LXRydW5rCiszMDA3MCAwYzY0NmJhZWVjNTgyMzI1YmIxZDk0MGQzZDYwOTEwYjE2ZWQzMjVkIGxlZ2FjeS10cnVuaworMzAwNzEgMjExMDM4NTA1ZTU2YzRlYjk3M2FiYjU2YTAyZTEyM2E5YjM3NzJjNCBsZWdhY3ktdHJ1bmsKKzMwMDcyIDA1NjM4Nzc2NzgzMjU1OTgwMWFiNTAzOThmY2RiM2FhNWIzMzU2Y2EgbGVnYWN5LXRydW5rCiszMDA3MyBjMzU3NjhkNzg4M2U0ODQ3ZTllYzYwYmQ5YjBiNjJmMjhhMjVhMjM0IGxlZ2FjeS10cnVuaworMzAwNzQgMzA4NGJmOGJkMTFjMGFhNjBhM2YzNjE4ZjEwNGM4YzA3ZGVkMjQzNCBsZWdhY3ktdHJ1bmsKKzMwMDc1IDdkZGVhNGRmYTUxOWQzYWQ4ZTYwMmE5ODRiMWVmNzMyMjc1NzFhNjYgbGVnYWN5LXRydW5rCiszMDA3NiA1NmRiZDkwNzlhMTNlZDZlZjc0MWFmNTY0N2FiYjIzNDYyMDFhZGIwIGxlZ2FjeS10cnVuaworMzAwNzcgZWNlYTg0MTAxNzhlMDY1YjEyNzQwZmUzMTcxZjYxZjdkNWQyZjEwOSBsZWdhY3ktdHJ1bmsKKzMwMDc4IDc1YmZjMjRmZDc0ODUwZDE3ZTk1MjMyNWFiNTVkZDVjYzc1NmE2MDAgbGVnYWN5LXRydW5rCiszMDA3OSBjYzA1YzJjODY2MGUwYzY4YWNjYmM1NmJkOGU2ODg3MmRlNTVmMTY5IGxlZ2FjeS10cnVuaworMzAwODAgYzE2M2VkMTdmOGJhMzg1YWE4N2MwMzQ5MmM1NGNkN2EwZTUxNmRjZiBsZWdhY3ktdHJ1bmsKKzMwMDgxIGJmYjI2NjRjZGIxYmU4N2MwMWQ2MWRkNDhiMDg1MjIxYWNmNjEwMzcgbGVnYWN5LXRydW5rCiszMDA4MiBhZjUxMTliZTIyMWY0Mzk5OTNmM2NkNDJiYzgyYzM1ZWE4MmUxNDE5IGxlZ2FjeS10cnVuaworMzAwODMgMzc4Y2UwMjBkOWU2OGM2NzVmNDY2ZTEyZWIyYTRlNTVjZDBlMjhiYiBsZWdhY3ktdHJ1bmsKKzMwMDg0IDlkYjM5NmJjZTRlNzVmMjA1Yjc0MzAyZWYzOGRmYzQxNjQxYTE2MjMgbGVnYWN5LXRydW5rCiszMDA4NSBlMzllNzRhZWEyZmI4YTczNDE0ZDlmZGM1ZDY0ZTBlN2U1OWNlODFiIGxlZ2FjeS10cnVuaworMzAwODYgMTRmNTNiNmQ3ZjU4YjIwNGI2ZGMzOGJlNThmOWJlM2IzYTY1NGMzYiBsZWdhY3ktdHJ1bmsKKzMwMDg3IDJmYWIwYjY0ODhiNTEwYWM5MzYzMjk4ZjUyY2UxMDUwNTRiMjVhMzUgbGVnYWN5LXRydW5rCiszMDA4OCA3NGQxYWQ2MWY4NDNjYjJmZTRlOGUyYmMwMzhjYjg3NWZmNmI0YTNhIGxlZ2FjeS10cnVuaworMzAwODkgODc3MTk5M2M5YWFjYWRhNDBmYjgxMjJjNDAzNTkyYzY4YTUyZGI0YyBsZWdhY3ktdHJ1bmsKKzMwMDkwIDk3ZjgzNTQyZjhlZWZhYWUxZGY0MWJjNGU5NTc5ZGI5MWQ0YWYwMTMgbGVnYWN5LXRydW5rCiszMDA5MSAyOGJjMmQzYWY5MWRiNjg5ZDQwODAxODI3NWM4ZjYyMzI1NjZiODE0IGxlZ2FjeS10cnVuaworMzAwOTIgMmM3YmRiYjUwZTc2MjhjYTUwMzEzZGJkMWEwNWRlZWQwMDhmMjkwYSBsZWdhY3ktdHJ1bmsKKzMwMDkzIDAyNzg1MjQ4ZTAwYTZmNDRjN2YxNTZiMGVkMjk4MTFkMmMxNDIxN2QgbGVnYWN5LXRydW5rCiszMDA5NCAyMGUwNzU1ZjM1NTQxZDY5ZWU2NDk3NzE5MTNlOTYwN2IwOTE4Y2UxIGxlZ2FjeS10cnVuaworMzAwOTUgM2JlNGY1ZDM3N2Q4YjJjNTRhNzY1ODk4YmU4NTRiOGIwOGM5NWQ4NCBsZWdhY3ktdHJ1bmsKKzMwMDk2IDllNzUxZWVlODFmNTA0ZTQ1MjVlNjQ0YjgyMDE0YTg0OTUxZWJhYzcgbGVnYWN5LXRydW5rCiszMDA5NyBiNjI5OThmOTg5NzNlMzMxZDgxYWNhYjcxMmY0MTNlMjFmMTJmMjE2IGxlZ2FjeS10cnVuaworMzAwOTggY2I5M2Q5Mjg3YjRlYWVjNGRmMzBlODY0ZjQxMjkzOTkwYTNkMDRlOCBsZWdhY3ktdHJ1bmsKKzMwMDk5IDdkMTkyODc1YTEyZjc5OTAyYWJmMzYxOWUwYmRhZTg1NjVkMjY0ZGEgbGVnYWN5LXRydW5rCiszMDEwMCAxOTUwN2ExZDAyNTQ4ZWJhOTJkNGQ5YTRjZTFlOTNiNzQxMGJjNmJhIGxlZ2FjeS10cnVuaworMzAxMDEgODA5NmRjYzdhZjY1YmJiNjEwM2NmNmRmNDdiMTYyZGUxYzA2NGNmNSBsZWdhY3ktdHJ1bmsKKzMwMTAyIDYzN2IxMGI1MmUwMmU2N2YzNDM2MWRjYjBhYTE0MGNhZjc5NDAyNmUgbGVnYWN5LXRydW5rCiszMDEwMyBiYTE1NzhiZTU3MDZlZDVlOTVkYjE3MzRjOGFjMDBjOGI3ZTVkZTU2IGxlZ2FjeS10cnVuaworMzAxMDQgZTQxZWUyYjhlNzNkZWFjZWY2Y2YxZTYxNzc0YWU2NWI2ZTMyMmE4YiBsZWdhY3ktdHJ1bmsKKzMwMTA1IDdiYWJkYWVhN2QxOWQ3ZjNhMWIyYTFkOGI5ZTI5NTEwZTAyNTNlYjcgbGVnYWN5LXRydW5rCiszMDEwNiA4ZGZjMGZjNGMxNGI1MTAwMTAyMjBiNTFlZjgyNDViNTlhNzE2YjRiIGxlZ2FjeS10cnVuaworMzAxMDcgOTgxNjQ2NjZkMmE4OTcyYTQ3NWYyOTMxZTM3YjYyYTlhYTA0NTZiYyBsZWdhY3ktdHJ1bmsKKzMwMTA4IDU5ZGQ5MjU3YmMwMzE2ZjZhYzc2NWM1ZTIwODFhNGNlMjc3OWU4ZjIgbGVnYWN5LXRydW5rCiszMDEwOSBkN2Q1MjVlMzBjYzAyMGY2MTU4ZGYwNWZiZGU4N2FmNmM1ZGZjZGQxIGxlZ2FjeS10cnVuaworMzAxMTAgODkwYWE5M2RkOWMzOGU3MzI2OGM0MTgzNDlkNWJiZTYwMjFkZmFlMCBsZWdhY3ktdHJ1bmsKKzMwMTExIGIwYmYzNjA0MjQ0ZmQ1OWNkM2RjYzdhNzZkYjAzMDhkOTNlYjcyZDggbGVnYWN5LXRydW5rCiszMDExMiBmZDQ1NWRmNTViMTM1YmI1MzNkYjhiOGExNmQyYTFlMTFiNWQ3MzNlIGxlZ2FjeS10cnVuaworMzAxMTMgOTZiOGM4YWU3MjYyZWRkNjhlZThmYjhiZTM4YzgwMzcyMmVlMDJkNyBsZWdhY3ktdHJ1bmsKKzMwMTE0IGM2OWI4ZTYxZTY5NWJkMWU4OWQ4ZjQwNDQzZTk0ZjhiYzk3NjMyMWIgbGVnYWN5LXRydW5rCiszMDExNSAzNDI5OTU1NzI0YjI3OTIyZDZhN2FlZTU0ZWEyYmI4NDc1YjAxOTUzIGxlZ2FjeS10cnVuaworMzAxMTYgZmQ2YmU4N2U1YzI5N2U1OGJiNzAzZjQwNjAzMGU5OGFmODExOGQ2YyBsZWdhY3ktdHJ1bmsKKzMwMTE3IDBmZjQ3MzYyYmI4MTE0YTA0NmU3OTBhNDBmODk4MjUwZDFlOWYzOGQgbGVnYWN5LXRydW5rCiszMDExOCBiYjZlYTA3OTA5NDc5YTYzZDY3M2M3MGNjYmU0ODljMjc5NDM4NTU3IGxlZ2FjeS10cnVuaworMzAxMTkgZTc4M2NkZmEwYjQxOWExYjQwNGIwZWZiYTM4YTVhNmVlNmIyZjA5NyBsZWdhY3ktdHJ1bmsKKzMwMTIwIGQyMzAyMzM5YThhZDc4NDIzNGNjNjVhNmU4OWE4ODEwZDUzN2I5YTkgbGVnYWN5LXRydW5rCiszMDEyMSAwMmJhNDY2M2NhZDIxMjdhNjBhZTZiMGEyZmY4ZmEyYzZkMjY4ZjQwIGxlZ2FjeS10cnVuaworMzAxMjIgNDExODhlMzg5YzYxNDRmMmMxZTkzODhhMzA5M2VkYThjNDljNTYyZiBsZWdhY3ktdHJ1bmsKKzMwMTIzIGQxNzZjYmZkMzc2NTYwMGVhYTM5NTc3NTlmNDUxODFkOWY2ZWJiMWEgbGVnYWN5LXRydW5rCiszMDEyNCA5MjY3ZGZmZmYzMmQzMWQzZTE2NzBmYjJjZDU2ZmU5ZjliYWYxZjc3IGxlZ2FjeS10cnVuaworMzAxMjUgZjg4M2VkN2I5M2M4NjhkYjEyZWU3NDQ0Mzg4NWZjMTM4NWY1NGY0YiBsZWdhY3ktdHJ1bmsKKzMwMTI2IDZlZmE4MjE2ZGI2YTg5MjgyN2E2MWZhZDYyNzNiNzhlMjM0MDBjMWEgbGVnYWN5LXRydW5rCiszMDEyNyA3YjFkMTA3ZTYzYWU2Zjc2YTVlNTIwMDZlN2EzOGZkNzE1MzhhNGVjIGxlZ2FjeS10cnVuaworMzAxMjggY2FhMjQ1YWY3Nzg2NDE4ZDUzYWY4MDViNDMwNjAwOTA1ZDdiZWVhZiBsZWdhY3ktdHJ1bmsKKzMwMTI5IDZlMmMyZjEyMjFlNTM1MjhiNmNiYzllNDQ3Y2IxYTBmZGQwZGJiNmQgbGVnYWN5LXRydW5rCiszMDEzMCA0ODM0ZjgzNjgwMzYzODZkN2NmMmQwM2E0OGZmOTE0NmM5YzkxZWZlIGxlZ2FjeS10cnVuaworMzAxMzEgYTgwMDAxNWU3Y2YyYTZkYjA4YjY3NjMzZjZkMGMwMjA1MTdjODk3NyBsZWdhY3ktdHJ1bmsKKzMwMTMyIDYxYjNkMTc5Zjg2OGU3NDE1NjljMjk2NGFjMWMxYjZhNDA0MTAxYzAgbGVnYWN5LXRydW5rCiszMDEzMyBmMzU2ZmNiNzBlYWU1NWQzNzM3MWZlZmYwNTkyMzMzZGE3OGY5Nzc5IGxlZ2FjeS10cnVuaworMzAxMzQgYjdiZjM4ZDQ0NTk4ZjU1ODljMDk0M2U4NWFiZDdiY2JlZjRjNzU0NyBsZWdhY3ktdHJ1bmsKKzMwMTM1IDYzZDdiNWUzOTZmYjg5ZDFlZThjZmQ3Njg3NjBkYWI2NzEyZGRiZDggbGVnYWN5LXRydW5rCiszMDEzNiA0MGY4YjY0OGU3NjU5Yjc5MTU0MDcxZDI2NDAyYTIzM2Q3OTc3MmZiIGxlZ2FjeS10cnVuaworMzAxMzcgZDk5ZTM4YmI2ZGNkMzViYmFhYmUyN2ExYjdlZjRmM2FjYmYyNmJmZCBsZWdhY3ktdHJ1bmsKKzMwMTM4IGY4MzhiYzkwNTZjYzM3OWQ1OWMyYjJmZmVlNWMwMzBlMTMxODYwNjEgbGVnYWN5LXRydW5rCiszMDEzOSBiMTJlMzI2YjRlYTI0N2Y0YzU3NTE3YzgxNjdhMTBmMWRiYjI4NzJiIGxlZ2FjeS10cnVuaworMzAxNDAgZThkYzFhMGQ2ZjRkNGQxMGE0MGRmNzU0Yjk1ZDI5MDJhYTQyZDdjZCBsZWdhY3ktdHJ1bmsKKzMwMTQxIDMzOGUwMjVmZGU4YjUxNmU4ZWM5YmJlZDUyMjJkZWQzOWE1ZTllOTEgbGVnYWN5LXRydW5rCiszMDE0MiBmZTJkNDIyMzg1YjFmZWU2NmY5OTg3YWI2ZTBhOTkyMjFiYzAxNmU1IGxlZ2FjeS10cnVuaworMzAxNDMgY2IwNmJmYzg4NzdiMjQ5YjJjZjlmZmQ5NTZlYzYzZDBmZTFmZWU5ZSBsZWdhY3ktdHJ1bmsKKzMwMTQ0IDk4ZDExODU1YjQ2Y2NlZWY4MzQzYmQ3ZjRmMTU0YjMzMjk4NjhiMjMgbGVnYWN5LXRydW5rCiszMDE0NSBmNzY3MTc3MDdhNmQ3YTA5MmMyZjQwMmIwZmVjNmJiYjE5MjNhNmRlIGxlZ2FjeS10cnVuaworMzAxNDYgMzczZDBhOGVkNmJlNjRhNWQxZjFmZGY0ZWUwOWVjODdhM2EyOTQ1YiBsZWdhY3ktdHJ1bmsKKzMwMTQ3IGVkMjhiOTc1MmY4ZDJhYmY4ZGU1NGY3NzRiMmRhYmZjNWEwMzdkMGUgbGVnYWN5LXRydW5rCiszMDE0OCAxMzEyMjk3ODg3YTNmN2UwNmVhOWIzY2U4Y2QxZGM3YTI1ZDQ3YzM4IGxlZ2FjeS10cnVuaworMzAxNDkgMzAwZjkyNmYyYjNlYjU4ZmQ0OWYwNDFlM2M0ZDIzYjAxYTc5NmJhZiBsZWdhY3ktdHJ1bmsKKzMwMTUwIDhkZDI1YTZmNTkxMzkwNGM3ZGE4MzIzNmY3YTE3NGQ2ZTQ0NGY5YjEgbGVnYWN5LXRydW5rCiszMDE1MSA1YjcxNWNhZDM0ZDA4MjVkYzE4MzE4ZWExZGJkNGU5MWZmNzcwOGQ3IGxlZ2FjeS10cnVuaworMzAxNTIgYzdlYzhhZDAyMzRmYWY0ZDIxOTc1MTUwN2I1NTNkZDFmMWVlYmMzNiBsZWdhY3ktdHJ1bmsKKzMwMTUzIGJjOTA1NmQ4NDdlZjdkNDZmYWU1OTU0ZGJhNWVmN2UyOTYwYjRmZGMgbGVnYWN5LXRydW5rCiszMDE1NCBmN2Q4ZDQ5ZThmNWRlMjdjYjNjMWU3OTAxNjI4YzBlNjZlNTIzODE5IGxlZ2FjeS10cnVuaworMzAxNTUgNDNiNTRjMmJjNGU2MDIwNWRlMDVhYWQ3NzAyNTMwZjBiMmQ0ODhjYyBsZWdhY3ktdHJ1bmsKKzMwMTU2IDc4ZDg3MmNkMDY0YzJlZGM0OTBjZDljNjkwYTg3YzU1ZTM0M2YyOTAgbGVnYWN5LXRydW5rCiszMDE1NyBhYjUwYTIxYjg3YWVhMTJkZjE4MTFhMGFlNGY1YWJkODExZTM0NWRhIHJlbGVhc2UyMi1tYWludAorMzAxNTggYmM2NjYyYmEzYTc3NTViYmE1NjhmYTIyY2ZmZGQzZTE3ZTI5YWJhZiByZWxlYXNlMjItbWFpbnQKKzMwMTU5IDU3OTEwMTliNmU0ZThlMmJlZWFjNGQ0ZmFjMTZlYjA1NGQ5YzhiZGUgbGVnYWN5LXRydW5rCiszMDE2MCBjMTFhNmUxY2VkZTBkZTE4ZTE1YzQxYmE5NjVkNGY5YjI2MTNkZjJmIGxlZ2FjeS10cnVuaworMzAxNjEgNjA1OWU0MWJkNzdhM2U1NzkzYTg1Yzc2MzRjZGZjZjU3ZDc5NmE4YiBsZWdhY3ktdHJ1bmsKKzMwMTYyIGE5OTc0YTQ4YTRkNmNmOWFjYzBmNTIyYTNhNzRiZjY1YjM2ZGRhYjIgbGVnYWN5LXRydW5rCiszMDE2MyBhMjBjYjVhYmFiNmI3OGY1YTVjY2ZiM2FjYWQ4ZTA3MjE2NDc4NzQzIGxlZ2FjeS10cnVuaworMzAxNjQgYWQzZjY2ZTdmYjEwNDIwMTNhOTQxYTFmMGZlYzQ1ZmYyZTQwZjc0MyBsZWdhY3ktdHJ1bmsKKzMwMTY1IDZiMzkwNTQ4YzY5ODAwNDBiODAyMWZkY2UwZTNlODQ4MWIzMDA3ZGQgbGVnYWN5LXRydW5rCiszMDE2NiBjNzRiNjlhYjQ3NDJhYjg0ODQ3NGZjZjU3OGVjZGNhOTI2ODBiM2VlIGxlZ2FjeS10cnVuaworMzAxNjcgMjMxOGY0YmIwYmM1Y2Q4NWJlZTc0ZGIwZTI1YzIwZTgyMWJjZGIyOCBsZWdhY3ktdHJ1bmsKKzMwMTY4IDJlMGRjOWUwODIyMjg5NmEzNDI1ODQzMGE5YWMwMDNlMmU4MTVlYjkgbGVnYWN5LXRydW5rCiszMDE2OSAzNmNkMjY0MWU4MjY3NGNmYzQyYTllMDg3YjBmMGE4NjM3Y2ExNTJjIGxlZ2FjeS10cnVuaworMzAxNzAgNDE3M2U0M2VmNDBjY2U2NmY2M2RkZGFjZjFkYzA3MjNkMDg1ZWY0YiBsZWdhY3ktdHJ1bmsKKzMwMTcxIDk3NTMzM2Q0MGJmODMyYTQwMmEwNmJmYTk2NjJhNjZhYmEwOTgwMTUgbGVnYWN5LXRydW5rCiszMDE3MiBjNDI4NmE2YWIwMGM5ZTM1YjljNmFjMjRjZWE5N2EyZGFkYTgyMWFkIGxlZ2FjeS10cnVuaworMzAxNzMgNDljZWVlMDI2ZDY2M2UyMDg5YTQ0N2QxYTI0MzMzMDljNTQ5NTk1MSBsZWdhY3ktdHJ1bmsKKzMwMTc0IDUxZTc0MzIxYWQzZDYwNzNkYjM5ZjQwMDk3Y2ZiYzI4NzJmNmU4OTggbGVnYWN5LXRydW5rCiszMDE3NSBhMjIzZTI1NTQxOTAxY2U3NzY4YzZjZWY1ZWQ0MzE5Yzk2OWE3MjE4IGxlZ2FjeS10cnVuaworMzAxNzYgYWY2NjBjYWIxY2JlOTExZGU5Y2VmZWRhMGI0N2RkOTFhNzY5MmM0MCBsZWdhY3ktdHJ1bmsKKzMwMTc3IGU0MDRiYmVmZjA4MzcxYjM1Y2M2MWY1NTE3ZmI2NDY0ZmVmMWIzNDMgbGVnYWN5LXRydW5rCiszMDE3OCAzZWQ0N2IwNzg1MDgxOWQxZGFmNTMzYzdmYmUxNjAwOTZkNDU0NjNmIGxlZ2FjeS10cnVuaworMzAxNzkgNDVhYjMxMTI3YmY5MjJiOTlhNTQyOWU5Y2Q4MTYzMTU2NDkzNGQxOCBsZWdhY3ktdHJ1bmsKKzMwMTgwIDEwMWZlMzJmNTZmZmVhNTQwOGE4MDI4ZjcyMmRkMjY1M2Q1NzFmZDkgbGVnYWN5LXRydW5rCiszMDE4MSBiZmUzODk2MWNhNDJjODg2ZDUxZDM3MThhZjk4ZTk1MTFjMTAxNzUzIGxlZ2FjeS10cnVuaworMzAxODIgZjkxZDc4ZTE5Yzg2NmY5ZTY4ZGE1ZWQ4ZmFmZDFiMTg5MjFmZTQ5NiBsZWdhY3ktdHJ1bmsKKzMwMTgzIDJlZDM0ZjAxYzgxY2ExMmE3ZTNmNzAwYjFjM2E4OTAwNzljNDYyMDYgbGVnYWN5LXRydW5rCiszMDE4NCBkNjQyMTQ2OTQwODNiZWJkNGQyODRkYzljMGQ3YmQ0YjYzNTVmYjI4IGxlZ2FjeS10cnVuaworMzAxODUgMWUxNzBhOTViNjRmZGVmYjhmZTE2MWE5YjAxMDQxYmZhMTg0NWJhOCBsZWdhY3ktdHJ1bmsKKzMwMTg2IDM1OTNmMmI5MWQ3ZDYwNWU1YzQ1ODA4ZTgzNDhlODJjMWI2ZGI1OTIgbGVnYWN5LXRydW5rCiszMDE4NyA4OTMxN2Q5M2Y2Mzk3MzllMTY2MmM2MmZjZjI2NDRiZTQ3NTFkMTZkIGxlZ2FjeS10cnVuaworMzAxODggZDM0OGIxN2NlYWFkNjkzNjNmOTg2Y2MwZjYyN2FhYjcxOGQyY2JkNSBsZWdhY3ktdHJ1bmsKKzMwMTg5IGQ5MzlhZGJjYTc3NGYwMGRiOWY0YjIwYzgzZDExYTI0NDc1YzcyNWIgbGVnYWN5LXRydW5rCiszMDE5MCAwNGIzYTlmNmJlNDFmNGU0MmU3MDE0OGIyNTcwOTMwY2ZjYzRhNmIzIGxlZ2FjeS10cnVuaworMzAxOTEgZWFiNmQ3YzgwMzQxOTE3OWQyMDIxOTBiOWNhM2I5YTY0YzNhODZiYiBsZWdhY3ktdHJ1bmsKKzMwMTkyIDJmNTIzYWU5MGUwNjBjODdiM2U1NmEyYjM0MjRjNGY2MmMyYzMwOTAgbGVnYWN5LXRydW5rCiszMDE5MyBlODIzMjY5OTY0ODFiMjEwNDAzOGE2MDkzNjQyYjAzODZlMGFmNzdlIGxlZ2FjeS10cnVuaworMzAxOTQgYTM2MDBjNGVjYzhiZjJjMjJhYmU0OWM2YzE0NTAzMzlkZTc0YTQ3NCBsZWdhY3ktdHJ1bmsKKzMwMTk1IGY1NWY1ZTFlMzBiYzkyNTc1OTdhMzA0NTA5OWJmMTNjYWI1MDU2NmYgbGVnYWN5LXRydW5rCiszMDE5NiBkZmNjMjA1N2E3NTVhZTdjNmY5ZGNiODA4MGRlYWUzZGUwNTFlNWQyIGxlZ2FjeS10cnVuaworMzAxOTcgNTM4NDQ3YzlkNTQzZGIyYjQwNTM0ZjJhNGJkNTM5NTc1NzRmMmE5NSBsZWdhY3ktdHJ1bmsKKzMwMTk4IGExMmUxNzI3ODUwYWY5YjA2MTVmY2Q5ZmQ0NGNkMzU0MDI3OTE1MzcgbGVnYWN5LXRydW5rCiszMDE5OSBjZmQ1YTY4MjkzN2UwYzQzNjQ5ODRhZTZhYjU4MzVhYmYwYjNlYjRlIGxlZ2FjeS10cnVuaworMzAyMDAgOTI0YzRmMjJiYWM3OTQ5MWNjOWE5ZjgyMTZhZDFhNzdjNjljZDJiMyBsZWdhY3ktdHJ1bmsKKzMwMjAxIGE1NDM2M2VhNjk0NjA1NjkxYTMzMDc0YjJhMWFlOTExN2M0OWQ4ZGQgbGVnYWN5LXRydW5rCiszMDIwMiA5MDFlNDdjYzhjYWNjODIwZjM1NTIzZTVjMTYxMGRlOTVlZjcwMGQ3IGxlZ2FjeS10cnVuaworMzAyMDMgOTY2YjgyNzlkMWZhZDgxNDRiZTM3YjFjOTUwMzU3ZmM4OGJkZTEyYiBsZWdhY3ktdHJ1bmsKKzMwMjA0IDQ5Njc3OTA0NzJkYmQzZWM1ZmE4YmMwMmUwMmVhOGNkMzc5ZjU3ZjMgbGVnYWN5LXRydW5rCiszMDIwNSBjN2MyYjIyMmJiOGFlOGQ0YzZmZjVjMjgyNGM4ZjJjNDMwZmFlYTNlIGxlZ2FjeS10cnVuaworMzAyMDYgNWZiYTUxZjM3MjliMmRkZjU4NWYzYTk5MmU5MTJiODRhYjk4OGE2YSBsZWdhY3ktdHJ1bmsKKzMwMjA3IDQxYmQzN2JlZjNjNzczYmViNTIzZGMwOTc3ZTcxMmQ3YjhjMzk3MzYgbGVnYWN5LXRydW5rCiszMDIwOCA5YjRjMDE0YjNhMjE4ZTc2YTlkOTc2MGM3ZDQ1NWY0NDZhN2ZhNDQ2IGxlZ2FjeS10cnVuaworMzAyMDkgNTczZTQ4MmVkZWMxYTU4MzY5MTZjMmVjMWEwYmU5NDRjNWQxYzhlZCBsZWdhY3ktdHJ1bmsKKzMwMjEwIGEwM2NlNWQ4ZjI5NzU0Zjc2YzZmZDY4YzY1ZTMyYzM4MjYxNTk1YzIgbGVnYWN5LXRydW5rCiszMDIxMSA3MDlmOTA1NDE1ODUyMTg3NDgwN2Y2YTdlMDEyZWJiOTEyMTcyZDUzIGxlZ2FjeS10cnVuaworMzAyMTIgZDhmZGE0ODE4YmZkNWY1NmFhNTIwNTdiZWJlZjUwMTYwYWVkYjI5MCBsZWdhY3ktdHJ1bmsKKzMwMjEzIDE2YWZmNzA3N2U0YmVlNGFjMDk3MGFhYWQxNDRjNTg0MDEyMWFlZDkgbGVnYWN5LXRydW5rCiszMDIxNCAyYjQ2ZDcyOTJmMjc3NDMwY2ZmYzM4YzRiMzZhYTk2OWQ1ZWNjNWNjIGxlZ2FjeS10cnVuaworMzAyMTUgNmYxZjg0MjAzZWNmMGIxYTU2NTUwN2JkZDAzYzhkYTg1YWJjYWNlZSBsZWdhY3ktdHJ1bmsKKzMwMjE2IDc4ZTg1N2U5ZGQ0NzY5MDU1ZjQ4ODFkM2U4ZmI5OTEzMWM0ODZkMjYgbGVnYWN5LXRydW5rCiszMDIxNyBjNjVlOGNiOTFmNGMzNmQ5ZGY4YjlkZmQ3YWE4YzdiNGY2M2I2YjhmIGxlZ2FjeS10cnVuaworMzAyMTggNzJjZjA4OWQ2MzRhMTk4NDM0OTEyNzMzNjIyNWMxYmJmNGU5OTAwOSBsZWdhY3ktdHJ1bmsKKzMwMjE5IGNhZGZjZTY2ZDg2MTlhNmJjMzU3OWQ2YTIyYWY4YjdhNTZjMjQ2ZjggbGVnYWN5LXRydW5rCiszMDIyMCAyZjNkNmI3OWYxMWJkM2M0ZGJkMTBjYWRjYjM4MWZiZDQ1ZjFjOTkzIGxlZ2FjeS10cnVuaworMzAyMjEgZDA1MjExMjczMWE4ZTI1YmYxNzIxYjFmNTFjMWZlNjlhODU5NDhmMCBsZWdhY3ktdHJ1bmsKKzMwMjIyIGIwYWNmNWRlMzQyMWNlMGY2Y2E5MDQxYmQ3OGUyY2NhYzM5M2U1MTggbGVnYWN5LXRydW5rCiszMDIyMyBjMWM4YmRjNGUzZGJkY2YwYjliZDAyMmE4Zjg0ODg4ZmU1MTFiMDdkIGxlZ2FjeS10cnVuaworMzAyMjQgMDY1ODY0MDRlYzRjZGEzMDIwZDI2OWU1YzdiMjEzZTc5Zjc2NmViOCBsZWdhY3ktdHJ1bmsKKzMwMjI1IDMzNjk2ODgyMWRjYmNlMWFhOGQwNmQwMWQ0ZDg3NzdkYTU5ZTEyNGYgbGVnYWN5LXRydW5rCiszMDIyNiBkYjlmY2ExNDUwNTg0YjUzYTNlOTAwMDU5M2RkOTQyNzEwOWQ4NDI5IGxlZ2FjeS10cnVuaworMzAyMjcgNjBiMzg5YTRkYzA4NTUwMWFlNDU1NjczYmY5MTlmMzY1MWVjYWNmMiBsZWdhY3ktdHJ1bmsKKzMwMjI4IGI5ZTQ1YjgyOGFlMTFhMGU1NWNlYmVkZTZiNTAyYTliNWI4ZDM0YTUgbGVnYWN5LXRydW5rCiszMDIyOSA2NWFjZWM5Y2JlNjkyMjdlNTJmZDZjMzcwMDU1MDhjNjE1NTRhZGM2IGxlZ2FjeS10cnVuaworMzAyMzAgMTYyODhiMDU0ZmMzZjEzMzBkYjc4YTc3YjI1NTdlOGM1MzBlMzMwOCByZWxlYXNlMjItbWFpbnQKKzMwMjMxIDdjMTViZjc3MjZiMjRlNTIyNTAwZTQ2ZTAwMmVjZTI1N2NhZTY2MDggbGVnYWN5LXRydW5rCiszMDIzMiA4YzNlZjUyNGZhYTA2N2ZkYjg2MzdhYzE1OTVjMTFmMjU1ZmFjOWJlIGxlZ2FjeS10cnVuaworMzAyMzMgOTViYzBjMDUyMDM0NTA4N2QzMDUyMTM4MzZjMjQ4YTRmNGU0NDI1NCBsZWdhY3ktdHJ1bmsKKzMwMjM0IGNjZjBiMDI3YjU4NTZkNTdiZjM2YjhkMzYxN2UzMWQzOTA2N2QzYjQgbGVnYWN5LXRydW5rCiszMDIzNSA3ZmQxYmYyMGEwYzBlOWNiYTUxN2YyZmNkMzY5MGRiMDVhYmMwZDBiIGxlZ2FjeS10cnVuaworMzAyMzYgYzEyNzJmM2YyOGY1MTc5YjIzM2QzYzZlMzdjMDAzNjRlNjE2Y2MxYyBsZWdhY3ktdHJ1bmsKKzMwMjM3IGVjYzI3YTFjMzNjYTc5ODk1MmUxMmRlYzMzODAwYzJhMWVmZGNiMzQgbGVnYWN5LXRydW5rCiszMDIzOCA2MjAwOTZmZDU1NjRjMzZkMDM3NjYzZWRiZjk3NGRjYjQwYzk4NWUwIGxlZ2FjeS10cnVuaworMzAyMzkgYzYwOWNkNDkwNmZiNGFlZGFjM2NhYTU0NGEyODI3MTIyZmUyM2UwOCBsZWdhY3ktdHJ1bmsKKzMwMjQwIDQ5ZDAyMmI1ZmQ2NDA1MTkwZjk1NjZmNmFiYzVjNmRkNmVhMzNjODEgbGVnYWN5LXRydW5rCiszMDI0MSA0YzlmZTQ5MDVlOGZhMDZiMjdkNTkyNTdlNzkzZDY0ZmUyMjA0OGM1IGxlZ2FjeS10cnVuaworMzAyNDIgNmIzMWIyNmU0MThkZGM4NDU5ZTI2ZTRhNzc1ZThhYTk4NTBkMGI1ZiBsZWdhY3ktdHJ1bmsKKzMwMjQzIDA5NTQ0MGI5NzVhMWM4NzA1OGZmOTczZjYxNmQ5NTZhNDcxMWQzOWIgbGVnYWN5LXRydW5rCiszMDI0NCBhZjIxN2NjYTNiZmM3YzEzNDhkODQ4NjliZDMyOTE4ZDQyNTg0ZmQzIGxlZ2FjeS10cnVuaworMzAyNDUgYWQyNjNkMjY4MjU1NDgwMjQ4MDllODYyYzFjMmQxZDgxM2JjYTUyNyBsZWdhY3ktdHJ1bmsKKzMwMjQ2IDM0NmEwNzI3MGU4N2RkNjQ5YzhiM2MyMDhhNjIwOWJhM2ZhZmMwOGIgbGVnYWN5LXRydW5rCiszMDI0NyBhZWYzYTAzYTc5ZjEwZTE3N2FlMGQ3Y2I1NmQxZWM2NGFmNWUzMDU3IGxlZ2FjeS10cnVuaworMzAyNDggOGFhNzU2ZTVhY2NjODVmY2NjOWIxNTZmYTdkOGM3NGFmMjQ2N2RjZiBsZWdhY3ktdHJ1bmsKKzMwMjQ5IGZjN2ZkZWMzZmI4NjNkMmM5MTI5M2JhYWQ2Mzk4MmFlMGJjY2U0MDEgbGVnYWN5LXRydW5rCiszMDI1MCAyNDBmZGJlZjhjNjBjMzZhMGI4OGE4ZDE2NGRmYjZjYjdiOWFkZGI3IGxlZ2FjeS10cnVuaworMzAyNTEgMGYxNDA1YWNlNDM3ZTkyNmM5Yjg0NTIyZWYyZGFkNThjYzJiMjE5NiBsZWdhY3ktdHJ1bmsKKzMwMjUyIDg5ZGQ3NGY3YWUzMjZjMGVlMzJlNDIwNGJlYmFlMGEzYTFhNzk2YjcgbGVnYWN5LXRydW5rCiszMDI1MyBkMTYwODE2YjkxZTU4M2QyMzBkYmM4ZDA0ODRjNTI0NTllZDk2ODM5IGxlZ2FjeS10cnVuaworMzAyNTQgZjg1Y2IwODk1NTM1ZGU3NjhhNjBkOWJjZWUyZjMzNzk4Zjk0YjFkMCBsZWdhY3ktdHJ1bmsKKzMwMjU1IGJiNGRmMDAwMGI2ZDFhYzRlNzcxZjM3YTU1MTIxNTVhNjE5ZDJiMzEgbGVnYWN5LXRydW5rCiszMDI1NiA0NGQ3NDY4ZDZkYjZlMjMzOTE4YmVkZjgwOTBmMTg5ODMzN2QyNjA1IGxlZ2FjeS10cnVuaworMzAyNTcgOTJhNDA2MTE1ZTdjZDM0MTY2NmJhMjUwNjVmMGVlMjJkODhiZWM0YyByZWxlYXNlMjItbWFpbnQKKzMwMjU4IDVlZmU2YjBhYzBlNmJjYzIwYTU2MGFiOGYzMDBkZjUwYjI1ODI3YWMgcmVsZWFzZTIyLW1haW50CiszMDI1OSBjNTVlNmU2MDFiOTk4ZDcyYjg5YTU2YjgwZGRiM2JlYmU5NjNlNjE4IGxlZ2FjeS10cnVuaworMzAyNjAgYmM3Zjg5MTNmNWNhODY2Y2FlOGEyMWRiZjcxZjJmOWNhZWU0ZjQ3MSByZWxlYXNlMjItbWFpbnQKKzMwMjYxIDMwMDEzNDI5YmI4NDU5ZTNiODA2NDA3MzY5YmNiYjE0MDBlYjNmYmYgbGVnYWN5LXRydW5rCiszMDI2MiA4ZTI3NTEyY2MxN2RkY2I3ZDQ3YjcxN2M1YmM3NGEzZjY2MzFkZDlkIHJlbGVhc2UyMi1tYWludAorMzAyNjMgMGIzNGY1MWVhYjRlYTQ4N2JhMWMwMWNlOTk0MTM0NmQ2YTcwZWVhMSBsZWdhY3ktdHJ1bmsKKzMwMjY0IDdjNTE5NmYwMTUyNGI5ZTk3YzE4MjI2OGM2NmQ2YTdlZTk3NDcxMzAgbGVnYWN5LXRydW5rCiszMDI2NSAyZjI4NDM2MDYwYzQ1NjU0YmI4NTgxZmNjMDc1MTRjYTJjNTllMGE1IGxlZ2FjeS10cnVuaworMzAyNjYgMTQzOTIyYTQwZmFjNmY3ZGQ1MDA0NTQ1ODY5NTBhODVlMmMzMTlkZCBsZWdhY3ktdHJ1bmsKKzMwMjY3IGZiYzg1YWFhMjYwYmExYWM0ZDU4OWE3YTU0YjI2OTc1NTE1YjcwMDggbGVnYWN5LXRydW5rCiszMDI2OCA4OWM5YzZjNDA1ZWY4YzQxNWRlODdmMDEzNjYwNmQwNDU2MGI2NmU5IGxlZ2FjeS10cnVuaworMzAyNjkgNThiZDcxMDBlZTE1N2YxN2I4NWQ5NDQ4MDFhYzFlYzJmZTU0ZmNjMSBsZWdhY3ktdHJ1bmsKKzMwMjcwIDgxNmI4ZGRjY2ZlMTY1MTYxNGQxNjQwMTg5OTljZDY4M2FjOTM5MWUgbGVnYWN5LXRydW5rCiszMDI3MSBkYjkzODhmMzdkOGM0NzFmMWZkNTRkOGMwNzY3NzY4NjE5NWFmNzg3IGxlZ2FjeS10cnVuaworMzAyNzIgMDY4NjgzNzZhYTI4ZDM5ZmM2ZTllYTI4OWQ5MTU1NmU5Nzk3YWNiNCBsZWdhY3ktdHJ1bmsKKzMwMjczIGEyZDQwMmU3Y2Q4YWRkMzJhNzhiZmFkMjViMjJhZTczZGY0ZThmZDggbGVnYWN5LXRydW5rCiszMDI3NCBjZjczNjYzY2ZmNTllYTQxNjNkOGYxMjk1MTMzY2U4ODA2MjFkY2UwIGxlZ2FjeS10cnVuaworMzAyNzUgNDdlN2M3MGU4NDFmZTMzMDI3YzRlYjlhOTZjNjlkZWRhZGNjNmZmNSBsZWdhY3ktdHJ1bmsKKzMwMjc2IDBmMDYxNTZjOGUwMzc2NmY5ZmY0ZmQxODk3NTg4N2VlY2YzZTFkM2IgbGVnYWN5LXRydW5rCiszMDI3NyA1MDdhYTk2YTEyOGZmZGFkOTQxN2JhNTRlOWVlZWJjNWUyNTRhZWNhIGxlZ2FjeS10cnVuaworMzAyNzggYjJiNDc5NzA1MmM2ZmRjZGNiZmVmYzYxYjk0MzNhOTRjYzMyMWI1YSBsZWdhY3ktdHJ1bmsKKzMwMjc5IDI5OTYyMWVjYTlhZDUzMTJlZTQyZjAzYWY3NTI5NTdmZmQwMTU2ZWQgbGVnYWN5LXRydW5rCiszMDI4MCAzMGE3NzM4OTQzODE4YjdhZDUwMjI2YzBiYjBkZThhNjg0NzEyNmM4IGxlZ2FjeS10cnVuaworMzAyODEgODJkOGI1YzZhYzRhN2ZjMmVlN2Q5ZWUwYzgyOTA5NjZhMGE0MmVkMyBsZWdhY3ktdHJ1bmsKKzMwMjgyIDI1ODVkNDU5NmQ5MDNiMGExMDgwZThhYjVhNDNmNjY2ZDQzODE0YzUgbGVnYWN5LXRydW5rCiszMDI4MyBmZmMxZTllNWZmOWE3MjQ3Y2VhNmI1NjdhNTJiZjg5YWFlYTU4Mzc1IGxlZ2FjeS10cnVuaworMzAyODQgYjIwNGI0YTcyYjRlZThiYWYwNDUwYzlhNWIzMmZiMzhjMTRjYjA5YSBsZWdhY3ktdHJ1bmsKKzMwMjg1IDIzMTlkMTNkNTRmNTc1MTU1MDU4ZjU3MTAzMjA3MzBjYzI3NTk4MDQgbGVnYWN5LXRydW5rCiszMDI4NiA3ZjgxZDE2ZTJjNWQ3YWEzODRjZWMxOWYxZTM3MjQ4ZDJhMTIwMGIyIGxlZ2FjeS10cnVuaworMzAyODcgODU4ZWUxMTcxNGE2MzI0MjdlMzNjODdiYzZmODFhMjkxNmE1ODBmOSBsZWdhY3ktdHJ1bmsKKzMwMjg4IDlkMGU2MmM5YTEyOGQ3YTE0NzE2MmIzYjU2N2E2ZmMxYTZlNmMyYjggbGVnYWN5LXRydW5rCiszMDI4OSBlZGYzMDRlNjBjYzYxZWQ5YjZlNDExZTkyOGRiODA5NWI1MTFlOTFjIGxlZ2FjeS10cnVuaworMzAyOTAgMTc4ODQ0OTg4ODEyZjJkZjA2MjhjMjNmMjA1YmJkYzY5ZDUzYzk1YiBsZWdhY3ktdHJ1bmsKKzMwMjkxIDIyNTExOTVhM2RkMWZjZTcxNGY1MWJmOGRiZTE3YzU4YWVkNzMwYmYgbGVnYWN5LXRydW5rCiszMDI5MiA3YzhhZjE5NzllNzg4NWI3Nzg5OTVlNzM4NDUwMjk0ZDc3ZDI2ZTY3IGxlZ2FjeS10cnVuaworMzAyOTMgOGVjY2ZhZTA0YmI0ZjZmZTY2MTk0MWM4Mjc4NGI1ODFjMjA3ODg2ZCBsZWdhY3ktdHJ1bmsKKzMwMjk0IDY5MzI3OTQ4MTdjMmQxZGYxMTZhOTRlZjYzMzdjMjRmM2Q1NjQxN2MgbGVnYWN5LXRydW5rCiszMDI5NSAwYzg1YTk0N2UyYzAwMGQ2NjdiOTM0YjMyYjJiY2YwZWEyNDY0ZWE2IHJlbGVhc2UyMi1tYWludAorMzAyOTYgZTA5NGEwM2E4MGZmNDVlZjZjZjM0YzFjMmM4YjU4Y2JmOGYwNzYwMyBsZWdhY3ktdHJ1bmsKKzMwMjk3IDU3YTAwZGI3MzFmY2YxZjJjY2QzNGQ4MjcyMTdiYTkxNGExNzE1ZTMgbGVnYWN5LXRydW5rCiszMDI5OCA2YmJiZTY3ZDFlYWY3MTczMTlkZjdlZWM2Yjk3OTZiYmVkODk3YWNjIGxlZ2FjeS10cnVuaworMzAyOTkgZDZmNDgzZmM5ZTAyZTNkZWQ3YmZlOGZkZDAzYTgyYzgwZDMwMjdjNiBsZWdhY3ktdHJ1bmsKKzMwMzAwIGZlYTkyZTdlYzY3YWUzNTA1NTkwOTcyNjA5ZDFkZmI2ODA1MTNlMjQgbGVnYWN5LXRydW5rCiszMDMwMSAyZTIxOTVmZTZjMjhhNzk0ZmZlOWM1NmQzNmVjMWM3NTE5MzMzMGVkIGxlZ2FjeS10cnVuaworMzAzMDIgZmIzNmQ5YjUwZGY1OGM4NzFmOTRhZWExYjliN2ZjYjJhOGQ5NjQyNyBsZWdhY3ktdHJ1bmsKKzMwMzAzIGUxNTM5NjFmOTYxZjJmNmJhNzE3NzdkMjIxMDI5NDU2YWUxNWQ5NWEgbGVnYWN5LXRydW5rCiszMDMwNCAzYzMyYTk0YjBiMTc2MjYyOWFiOWIxYmMwYWYyZGE2ZGQ4ODgxODQ4IGxlZ2FjeS10cnVuaworMzAzMDUgMTNkNTlkYmZiOGQ0NGFlNjRiYmFkZWJiNDAxMTY1YmI1ZDJhNDQ0ZSBsZWdhY3ktdHJ1bmsKKzMwMzA2IDdkN2EwMWJmY2FhZmI4Njk3NWRiZTY3ZDBkNTI4OTA4ZDI5Zjk0OTQgbGVnYWN5LXRydW5rCiszMDMwNyBmNjRjOTY5MjI3MDhhNTEwNGJmYjA2ZThkZTdhNGY2ZGU3MzliM2FhIGxlZ2FjeS10cnVuaworMzAzMDggZjRiMWJlZWQ2NDA1MmQwYjNjNTFiNzZkMjVhZDg1NGEzMzY5MWQ0ZCBsZWdhY3ktdHJ1bmsKKzMwMzA5IDllNDA5MTA3YWVlYWExZjNjMzFiODMwYWE3ZmJiYTQ3ODg3NjhkMjMgbGVnYWN5LXRydW5rCiszMDMxMCBiYjE1NDZiNDYwMWJkMGQyZmJlMTdkMTEwNzc4YmExYzcxNzc0NTRmIGxlZ2FjeS10cnVuaworMzAzMTEgNThkNzVhM2M4YWZlYTdlYTRkZjMxMzE3NzNmN2U0NjFmM2JiMDdjMSBsZWdhY3ktdHJ1bmsKKzMwMzEyIDNlMWJkMTM3ZDNjMmI4OGE1ODI0ZTFmNWRhNjNiNzEzYjIxYWRiMmQgbGVnYWN5LXRydW5rCiszMDMxMyA1Y2NkZThhMTUyNmE0MGQ5MmRjNTRjOGRiNzliNjdlYzNmMTA5OWM1IGxlZ2FjeS10cnVuaworMzAzMTQgNzljOWEwN2IyODk2NTkyODZmMTQzNTFmZGEzODI0MTg5ZGE5NmE4NCBsZWdhY3ktdHJ1bmsKKzMwMzE1IDE1YmI2NzZmMmU4YzBmMmMyZjhkODQ4ZTU3MTIzZTEzMWRiZDVhYTUgbGVnYWN5LXRydW5rCiszMDMxNiAwMDA3NWYxZWY4NjZiZjQ0YWM3ZDgyNDBmNGUxYjkwY2I5NTNjMzM2IGxlZ2FjeS10cnVuaworMzAzMTcgYzQ0ZDk5NGIzOWU1NDI2OTYyNDRjNTg2ZWFhYWQwNWFiYmExYWE3YyBsZWdhY3ktdHJ1bmsKKzMwMzE4IDc4Njc5OGU4NjQ2OWNiODA4YzMwMDhjYzVlNDYxOWRhMTM3MmVmOGEgbGVnYWN5LXRydW5rCiszMDMxOSAzN2VmMDE3NjQ2YzQ2MThhM2ZjMGJjYWZhMDAzMjhjZGViOTYxYmM0IGxlZ2FjeS10cnVuaworMzAzMjAgZDJiMDM2MjgxNDAzMTNiODhhMWQwMjM0NmY2NjkxMzM0MjQwNTJlOSBsZWdhY3ktdHJ1bmsKKzMwMzIxIGE5YjUyMmU1NDVjZjZmMDgzZTA5Y2ZiNzlhOWM4NWRlZDYxMmViYzAgbGVnYWN5LXRydW5rCiszMDMyMiA1NDE5ZWY0YTRkNzBiMGM1ZmRhMjlhODQ4YWUxYWQ3MjFkYTk4NzNiIGxlZ2FjeS10cnVuaworMzAzMjMgNjczZGNiOWI1MWNlMmJkZjEyZGRhMzUxMmVkYzIyYmY0ZmNiOWUwMyBsZWdhY3ktdHJ1bmsKKzMwMzI0IGZjNTE2OWFhNDFjZWY4NWI5Njk3YzM5NDJmZGY5NTUzMjViNjU1MDEgbGVnYWN5LXRydW5rCiszMDMyNSBlYTc1OTE5Yzc2OWRiNjVkYjJmNDliNTk4ZTA0MzE3ZjVlMjZhODgzIGxlZ2FjeS10cnVuaworMzAzMjYgODY1YzU5YjViZmQ3MTI4MjhmMzRjYWQ1YTM3N2Q4Y2UwMDkzZjU4NSBsZWdhY3ktdHJ1bmsKKzMwMzI3IGJjYTU0MDliNzZlY2ZiOTM0MmQyNGJhYTEyMzIxZDk1Yzg2OWViMzkgbGVnYWN5LXRydW5rCiszMDMyOCA4MDMzMDI1NzMxNTI3YmU0YWIzNDA5ODhlOGFmYjJkNjlhNDBkNjYwIGxlZ2FjeS10cnVuaworMzAzMjkgNWY3NGUwNDAwMTJkNjllZjgzNWUyYzY2ZWY1YTdhNzNhNjZjZmQ1MCBsZWdhY3ktdHJ1bmsKKzMwMzMwIDNlZTU0ZmJmZTg0NmQ4OWVkZjBlNWFkZDNhOWU0YjAxOTI1OWVlZjcgbGVnYWN5LXRydW5rCiszMDMzMSAyY2U4Y2YyODRiMTUwYzA4MTgxNDU0MjA4ZjQ1ZjUyM2NiYmFhNDYwIGxlZ2FjeS10cnVuaworMzAzMzIgZGFhNDU4YjI4Mzg1MWJmZDNjOTRmZWUxOWE5NDhiMWVhNzQ5NGFjMyBsZWdhY3ktdHJ1bmsKKzMwMzMzIDY2MDk5NmEyOGVlOGM0ZTZiMTY2OTVmMWUxNzlhOGRjMzY1N2I0YjggbGVnYWN5LXRydW5rCiszMDMzNCA3MDQ4NDJmMDViMDkxZTU4ZDNlOTNmNGJlMzU2OWZiMDkxZjE5ZWNlIGxlZ2FjeS10cnVuaworMzAzMzUgNmNmNjM3NzY3Y2UyNGQyYzNhODExY2NkNmIyMGYwNjE4MjgwYTNmZSBsZWdhY3ktdHJ1bmsKKzMwMzM2IGI0Y2E1YjliYTkzMzU1MjhhYTY4YmNjYWFjMDk4MjlkNDExMTZjYTQgbGVnYWN5LXRydW5rCiszMDMzNyAyNzUyZTlhYWU5N2JlZDYwMWRhZThmY2ZjZWI1YjUxNjE1MjUyMWQ0IGxlZ2FjeS10cnVuaworMzAzMzggM2NmNWE3ODUyYTJmM2ZkNGYwYjBhNmRlZTI2NmVmOTkwNjliYjk4YiBsZWdhY3ktdHJ1bmsKKzMwMzM5IDNhMTMwMDQ3MjkwMTYzYTA1OTY2ZDNhZGFjMjQwMTQxNzc5M2ZhYjkgbGVnYWN5LXRydW5rCiszMDM0MCAwMzY5MTk5YTI2NWFmODQxZmZhMTYxNGFiMzE1OTE5N2VmNWQ0YmM4IGxlZ2FjeS10cnVuaworMzAzNDEgMDI5ZWRhOTM3YmI0NzQzZjBlMTcxNjAzZGE2MzBmYTQ4ZTdmMjU4NiBsZWdhY3ktdHJ1bmsKKzMwMzQyIDgzZjhiZDZhZTgxMTcyMjBkMmIxMmZkMDc4NzE2MzljYjVkZGZiMWEgbGVnYWN5LXRydW5rCiszMDM0MyBhYWNhOGEzYjIzY2QwNWQyMjI4MzA5OGYwMTk3NmY2Y2ZmMzFlYzUwIGxlZ2FjeS10cnVuaworMzAzNDQgYTZmMGJjNmU4YjM4ZGU1Zjc3MDYzNGM0MDQ5YmU1NjFiYWZlMmU2NiBsZWdhY3ktdHJ1bmsKKzMwMzQ1IGYzMDVhNTc4YjM5NDBlYzgzY2I4NmY3N2ViZWJmNzlmOTdiOGVlYTQgbGVnYWN5LXRydW5rCiszMDM0NiA0OGFmYjhlMTQyMGJiODZmOWM5YWVmZDhmYWM0YWVjYmE4YmJhOTRiIGxlZ2FjeS10cnVuaworMzAzNDcgNDIyNzlhMDIxMjVlMjg0NjFlYTQ3NGQ2MDY0ZmMwMDQ0MzBhYWNkOCBsZWdhY3ktdHJ1bmsKKzMwMzQ4IDIzYTk4MGViOGFmYmIzNWEyOTMzZTJlOGJlZTM2ZGJhNjkyNTFkNDcgbGVnYWN5LXRydW5rCiszMDM0OSAxZWFiMjZmNzE3MTk5ZDdjYTI4MzY4ZDdhYzRmYTI0NDM4YzY2YzBlIGxlZ2FjeS10cnVuaworMzAzNTAgZjQ4M2VmY2EyMjRjNmNmZGIzNTdlMGY1N2Q0OGNlNzU2MzNmYTMyYyBsZWdhY3ktdHJ1bmsKKzMwMzUxIDNkMTA2MGRiODA2MjhiYzVlOTQ5ZmQzNzNlMjg2Y2U5ZTBjMzc0ZTIgbGVnYWN5LXRydW5rCiszMDM1MiAyNmRmNjAxM2IzMDNkNGFiZGU0ZGYzMWQ1ZmEwZWU2NGQ1MDZhNzkwIGxlZ2FjeS10cnVuaworMzAzNTMgZDE3N2RkMGNhOGY3MGU0MWJlMDFjN2ZmYTBlMzM0NWQ5ZTg1MDA5NCBsZWdhY3ktdHJ1bmsKKzMwMzU0IDM1NDY4YWQ1MDIyYTc3NDU2OTFkNTA5NTIzZWM0MTk5ZTZlMzgwMWYgbGVnYWN5LXRydW5rCiszMDM1NSAxMjBhZmJhMmRiZjY0MDdjZDc3YjU2YzE1ZDI5Njg1ZTgxMTczOTBlIGxlZ2FjeS10cnVuaworMzAzNTYgYzI0OTYwN2VmNTM1ZjExMjg0ZjdkMzA1NzdiZmUxOGE0NTIwOWIyOCBsZWdhY3ktdHJ1bmsKKzMwMzU3IDMxYjFiMDQ2MDMwM2Q4NWQ3NDcwZGE4MDE5ZjI0N2E3YTY1ZGVjYmIgbGVnYWN5LXRydW5rCiszMDM1OCA5MDkzNGU0YzkxYmE0YmNkMjg2NmUyZWZmN2IzYTY0ZThlYzJkN2ZmIGxlZ2FjeS10cnVuaworMzAzNTkgNmVjMzg2YjQ1ZTFmYWVlMTY5Y2JiZWQ3YTMzMjQ2ZDgyYjYxZThiNyBsZWdhY3ktdHJ1bmsKKzMwMzYwIGQyMTk5ZmMxNGQwNjI0YWQ4MGQ4NjEyNTMzZmEzNGUxYWM3YzU4MWIgbGVnYWN5LXRydW5rCiszMDM2MSAyMTMzY2YzNTViZmM4YTJjOTI1MDk3N2FiMDIzYWMwZTEwZTUyNWE1IGxlZ2FjeS10cnVuaworMzAzNjIgZjBmOWFjY2E0MTY0YWJkNzhiNWUxZDYwNGE2ZDhlMjljM2M2NjMxNyBsZWdhY3ktdHJ1bmsKKzMwMzYzIDU0YWFjYjg3YmVkYTMwMzdkZmFiZmUzYmYzZTY3ZjkwMjgwMDZmZWQgbGVnYWN5LXRydW5rCiszMDM2NCBiNjI1ZjFiZjcyZjkwZDA0YzQ5NTA5M2I0MWQzOWM0ZTM2OGUxMTVlIGxlZ2FjeS10cnVuaworMzAzNjUgNDVmYzBlNGI1MDg0NTIyNzViNDZiYWQ5MmIyZTVlNzFjMjQ1YTQ4ZSBsZWdhY3ktdHJ1bmsKKzMwMzY2IGI5YzE1OTdkODEwMmU0NWNhNDVkOGIzZTZlYjZmMjI2YmZmNDRiYTkgbGVnYWN5LXRydW5rCiszMDM2NyAxMjc1M2U3YjE1ZjdlODZiZTE0MzU2ZTU0ZDEwOWNmMzY1Nzk3MWQ2IGxlZ2FjeS10cnVuaworMzAzNjggODA1M2JjMGI4YmI1ODFiNGI4NjcwY2E1ZmRjYzZiNjY0ODdmMWI1MSBsZWdhY3ktdHJ1bmsKKzMwMzY5IGJjMjBlOGI0NmRlMGQwYWU3YWVmMjY4ZTQ0ODhkNzg2ZTI2MmZjMGIgbGVnYWN5LXRydW5rCiszMDM3MCA5NTUxMGYwYTA2MjQ1ODRiNDFiYjdiNzVmYWY4ODY1Yzg5ZmNmNTFjIGxlZ2FjeS10cnVuaworMzAzNzEgMmE5NWI3ZDVmYmRlMGQ0Y2U3MDc0MzEzMDJiNzY2MzFiMGQwMDBiMSBsZWdhY3ktdHJ1bmsKKzMwMzcyIDE0MDY0NGYyMmY2NDhjZGYwYjNkM2NjNGNiNWQwZTk4ZDllNjA5ZmMgbGVnYWN5LXRydW5rCiszMDM3MyAwYTBjNzU5ZWQxNjc5OWFhMmUwNmNlOWYzYzk4YmY4NGE0MWIyZDRiIGxlZ2FjeS10cnVuaworMzAzNzQgNGNiZGJiMGJkZDVkNGFlYzEwMjVhNmE2ODg2NmM4NDU5YWJlYTMwMiBsZWdhY3ktdHJ1bmsKKzMwMzc1IDNiYzJhZjQxYzAxNjU3OWE4ZTFjMmFmNGMzYTdhNDFjNzIzNTkzNGIgbGVnYWN5LXRydW5rCiszMDM3NiAwOTZkMTJkYjI2MzY1MjNjZTViNzU1ZmRjM2NjMzhjNWI3MDhmYzc3IGxlZ2FjeS10cnVuaworMzAzNzcgYTQ0NzRlMTRmYWM5N2I0YTYyMjlhMDVmNzc2MjMwMzlhZmUxMjFlOCBsZWdhY3ktdHJ1bmsKKzMwMzc4IDE4ZDRmNzFmNWVkNmE5MzZhNGIwNzNiODQ2ZDBkYzkwNjkyZGNiNGIgbGVnYWN5LXRydW5rCiszMDM3OSBkNWFkMjlhNDczZTFkOTkwYTMwMTE0MTBkZGJlZTNjNjJiM2VmMGUxIGxlZ2FjeS10cnVuaworMzAzODAgMmM1MmFiZWU3ZDEwNjJjNTAwZWMyOGNhZGE3MTUwNDFhMmY0ZDUyYyBsZWdhY3ktdHJ1bmsKKzMwMzgxIDk3YzVhYTgyYjNlOWMxNTI0YmJhZmRkNzQ5Y2E2NWE3MmEzMjI2MjAgbGVnYWN5LXRydW5rCiszMDM4MiA0MGRiNzgxNTkxNzc2MjBkZTEzYWU5YmUwMWRiZDcxNjBlNzNjMThhIGxlZ2FjeS10cnVuaworMzAzODMgN2VhNzYzNzM0MWQwYTE0N2E0YzM0NmViNThiNWIzZDI2MzNhMWEyYiBsZWdhY3ktdHJ1bmsKKzMwMzg0IDQ3ZTZhYjhkNTc1MWQ0YTA3ZjhjNjY2OTg1NmQ4ODlmM2MzMTE5MzggbGVnYWN5LXRydW5rCiszMDM4NSBjY2JhM2I2NmQ2NzY2NjFmNmUxNjNlMzEwOTkxOGRlZDA0YTM5NzNhIGxlZ2FjeS10cnVuaworMzAzODYgYmNhY2EzNmE1ODNjYzQ1OTNiNWRlZDkxYjc3ZjEwYjkzOTRmOTA5ZSBsZWdhY3ktdHJ1bmsKKzMwMzg3IDA3NDkxOTcxNTM1NWFjODZlMzczYzgwYTUzM2Q3ZWU3ZjViNzFhOTcgbGVnYWN5LXRydW5rCiszMDM4OCA2ODhmYTZjZGFiOTQzYzU4MDA0MDUyNjk3OGRlODM2M2E2NWRjMmIyIGxlZ2FjeS10cnVuaworMzAzODkgODk5OWQ3MmMyZTZjZGViMWE2MDBmZDE1ZDE5N2NhYWRjNDdiYWEyMSBsZWdhY3ktdHJ1bmsKKzMwMzkwIDAwMzJkYmVlYzM5MWMxNTcwMjJmOGQ0ZTQ3ZjdkZGYzZDdlNGI1MWYgbGVnYWN5LXRydW5rCiszMDM5MSA3Y2RhMzYwMzU2N2Y5NjdhYWIyZGE3MWUzYWM2YjU5OWM0NGUwMjBkIGxlZ2FjeS10cnVuaworMzAzOTIgYzI1ZDdkMmMxNzEwNDI2Yzc2NjE2OTMzMzQxZjFhMzAxOTM2OTUwMyBsZWdhY3ktdHJ1bmsKKzMwMzkzIGZiY2YzYzRiNDI3MmUyMTVmYzJkNzVmNWQzMTU3YmQyYTgzMjdlMTUgbGVnYWN5LXRydW5rCiszMDM5NCBmNTE2MWNhNGRkNjgwZDRmYmUzM2ExOWFhYzc5YjYzNDBhNjU0MjdlIGxlZ2FjeS10cnVuaworMzAzOTUgYTQzYTJiMThiNWM0OGJmZTZjZDdhZTNhMjExYTBkMmExMjNkYzhhMCBsZWdhY3ktdHJ1bmsKKzMwMzk2IDA1MDE2YmI5MTc2NmZlOWQxYjE5YjE2YjcxNzUyN2MyODY4YmMzZmYgbGVnYWN5LXRydW5rCiszMDM5NyBiOTM4NDUyMjZkYjY4ZDgzMmMyYWExODQ2ZDVhMzE1YjljNWNkOTEwIGxlZ2FjeS10cnVuaworMzAzOTggNDJmMTlhNmM2NTcwMWNkZjM2NTAwZTQ3MGU5YjBlZTBkYjE0YTI0YSBsZWdhY3ktdHJ1bmsKKzMwMzk5IGZhZjk2NWQ3MzgyNGJmMjQ0ZWI2NGYxZmVhMDI4ZWUyNjlhMGJkN2MgbGVnYWN5LXRydW5rCiszMDQwMCA5ZDA1ODBhY2I0NWZmNDVlYTc1NzFkNDMzMGM5ZmE2Y2JlNjE1N2UwIGxlZ2FjeS10cnVuaworMzA0MDEgZGJmYzNlZjdkMDAzNTBlMDllOTU1M2U5NTY0OTczNjRiNWIzZGU5MCBsZWdhY3ktdHJ1bmsKKzMwNDAyIDMxYWRlYTQ5YTU1OGY3MjhjZTkzMzk5YmVmZWE4ZjViY2ViMjE2MWUgbGVnYWN5LXRydW5rCiszMDQwMyA5NjQ2ODg3MGQyMDZkOTRmMWE4YTRkOWNkMDQzMDE4MTk0YTdkMjgwIGxlZ2FjeS10cnVuaworMzA0MDQgM2RiMTY1ZjAyMTA3NDM2M2IxNjA4YWFhYjE1YzM1NzA0ZWY2NmE2NiBsZWdhY3ktdHJ1bmsKKzMwNDA1IDMzZGNmNGZkMGZmOTAzZmJkZmUzMDc2Y2U4NGI4MmJkOGI2OTU0ZDggbGVnYWN5LXRydW5rCiszMDQwNiAyNGNiNjIyMjUwNDBjZWJiMjgyYWJiMjRhYzFjM2FkYzI5YjhlMDBkIGxlZ2FjeS10cnVuaworMzA0MDcgZmZhNGFiMzcwMzZmMDE1ZmU5OTY0MGQyMTRhOWIwOGM4ZjE0YTEwZSBsZWdhY3ktdHJ1bmsKKzMwNDA4IDMyZTRjNzc1MzQxNjJjNWY3YWZjZGE0ZDQxZDAxYjhiMDI3NzBjZTIgbGVnYWN5LXRydW5rCiszMDQwOSA2YzUzNWRjZWRhZDMwM2MxM2U0MzQ3MmI5ZDBmNzhkMjc4MzE5NzNkIGxlZ2FjeS10cnVuaworMzA0MTAgNzk0NjZmMDRmMWM1NGI1MmI3MmVkMjFjOWRhNTI3MDkxNTU1ZjY1YiBsZWdhY3ktdHJ1bmsKKzMwNDExIGI5MWQ5NWU5YjI0OWE3OTMzNWE2YTY2MDljMTFlNmFhZmZhZGFmOGIgbGVnYWN5LXRydW5rCiszMDQxMiBhMDg1Y2MwNDc2ODEwOTU5ZGFjZDBjMDc3Nzg4ZmUwZjU2ZmQxN2MxIGxlZ2FjeS10cnVuaworMzA0MTMgODQ2OGUzZmMzYTJiYzcxY2MyYjcwODg2ZDk2MTRjMWNjMDQzNjMxOCBsZWdhY3ktdHJ1bmsKKzMwNDE0IDNkNWFiZDNkOWU0YmE4MDUxOTQzZjg1NWM0NWJmMGI1MmIxMjQ1YjUgbGVnYWN5LXRydW5rCiszMDQxNSBiYzMwNTg0OTUyMmRmNzg3Mjk4MmU3MjBiODBkMzY1M2I4ZWY1YmI5IGxlZ2FjeS10cnVuaworMzA0MTYgYTgyZDkyZjc4NDcyYzcwN2U2ZTdlMTFjNTBmZWVkNDNkNWFhZGE5NyBsZWdhY3ktdHJ1bmsKKzMwNDE3IGJkMGM0MDcxOTU4MzZiZDBmMTk5ZmJkNmJjZTI3Yzk2ZDM4OWMwZTggbGVnYWN5LXRydW5rCiszMDQxOCA2ZTU0MWE3MmFmMWFlNjU0Mzc3NDJkMjg0NTZlN2I5MjQ1MzMwN2I2IGxlZ2FjeS10cnVuaworMzA0MTkgNWNhNzA3MjM2MWJkOTVhMDBkNGFlZTEwOThhZDIzNmIxOTI1NDY5YyBsZWdhY3ktdHJ1bmsKKzMwNDIwIDcyMzcyMWVhNDAyNTk2YzQzNWVlNjZmYzc3NTZmMjE1NTYyNzYxN2UgbGVnYWN5LXRydW5rCiszMDQyMSA1NTE0MTE0NGRhYjVlNTA5MTJiMTA3NDQ0MGM1YmU3YTQ1NGNlMWU1IGxlZ2FjeS10cnVuaworMzA0MjIgYmVlYTQyMTUyNzg3NDNkYTExZWFkYjUzOWJjYmVlYmE0OGE3MDM4MSBsZWdhY3ktdHJ1bmsKKzMwNDIzIDUyNjc0MmE3NGQwNjViM2IzZmY0MzI2ZDZkMzNjNzViOTE0MGYwNzcgbGVnYWN5LXRydW5rCiszMDQyNCBhY2RiMzliNzE0YjFlZWU0OGQ0ZGJlYzIzMzgxYjgzNGUwYTAyMzU1IGxlZ2FjeS10cnVuaworMzA0MjUgMDJjNmZkNWNmNzViY2Y1NmZiNGJlYzc3NmJmZTAxODkxMTBjZTA4NyBsZWdhY3ktdHJ1bmsKKzMwNDI2IGJlNzMyZTIxOWVkMTAyNjdkOTAyNzgzYmVlNzMxNGRiMTRhMjUyZGQgbGVnYWN5LXRydW5rCiszMDQyNyBhNThjZWNmNTliMDYzZjU1NTFjOGI0YTEzYzQ1NGMwN2IwNDcwYTJlIGxlZ2FjeS10cnVuaworMzA0MjggN2I1YTdjZmMxN2E5ZTUwMTdmNzUwM2QwMzJhZTVhYmM4NWUwNzRkYyBsZWdhY3ktdHJ1bmsKKzMwNDI5IDk0YmM4MTJhM2M1Mjg1MTU4ZTYwZmUxMjQ1ZTQxNzlkMjFlYjhmNzUgbGVnYWN5LXRydW5rCiszMDQzMCAzNWZjYWJlZmM5ZDJmZDM1Njk1NzI5ZWE5YWQ2YjRjZjJiNGEyMzVlIGxlZ2FjeS10cnVuaworMzA0MzEgZjE1NTk0NjBiOTUyNjI2OTMyYzQ2NTFmNzExYzg1NGE3MWJiMjdhZCBsZWdhY3ktdHJ1bmsKKzMwNDMyIDE2MzU2M2NjYjdkNjBhZGY4NGU4YjUwNjA0YTliNjU2M2NlZjEwMTkgbGVnYWN5LXRydW5rCiszMDQzMyAyNDBhMjQwMWM0MDRkZTZhZjk5ODNjMjRjZDAwOTYzNDNjNDVkYzA4IGxlZ2FjeS10cnVuaworMzA0MzQgMzg5MjdmZDU2N2I0ZTRmMmY5Mjg4ZjhmZGM3MzRkMzE3OTkzNWI0YiBsZWdhY3ktdHJ1bmsKKzMwNDM1IGI4MjM2NmJjNTQzODQyOGE5ZDk1ZDZjMjRjOGU3NmRhNWU2OWJjZGMgbGVnYWN5LXRydW5rCiszMDQzNiAzYzA0MWIxOWYxZDM2NzdhM2MzOTFhYmJmNTViOGM5NDIzNDVlMzdjIGxlZ2FjeS10cnVuaworMzA0MzcgYjhjNzJlODZhMTJkNDA3MDBiMWJlMDc0NjczMjk0NWViOWZiZTEwMyBsZWdhY3ktdHJ1bmsKKzMwNDM4IDFjNThmZTVjNzY5ZjNjMDZlNzFiZTNiMDAwMGM4Nzg5MDljYTA1MmYgbGVnYWN5LXRydW5rCiszMDQzOSBhNWM4Nzk3MjZiM2EzMjMzNzUxNmJmNWIxMGIxZDFiZDI5NDJhZjVlIGxlZ2FjeS10cnVuaworMzA0NDAgYjljNDYyZDIzZjNjNjUyMTRkNDdkMTZhNWNiNTRjZjcyYjY0NDJjZiBsZWdhY3ktdHJ1bmsKKzMwNDQxIGE1NzNmZWRlODhlMmIxOGU0ZTdkMWYwNzhiZmZhZjk5YmZmMDkwZDcgbGVnYWN5LXRydW5rCiszMDQ0MiA1ZGY3YTI4NGVhZjRlZDc3MWYxNzc0YzJiM2I0NjVjYTdkZDVmOTk3IGxlZ2FjeS10cnVuaworMzA0NDMgYjc5MGRhMDY3MWY3YTcxZTkwMjBlNDEyODM0MWI1MGE3YjllMzY0NCBsZWdhY3ktdHJ1bmsKKzMwNDQ0IDRiNGNlMjQ5MGZlMmVkN2VlYzUxOWI2YTJjY2ZkODY0OTk5MjgyYTQgbGVnYWN5LXRydW5rCiszMDQ0NSAxMDM4OTljZTg4YjJmY2EzZTdmMWU3OTY0YmFhMTllZDFiNjkzNzMwIGxlZ2FjeS10cnVuaworMzA0NDYgYmY5ZTA0MjQyMzdmNTE1NjIyZDgwNTBlMWFjYTBmYmI2NDFiOWQyZCBsZWdhY3ktdHJ1bmsKKzMwNDQ3IDc3NmYyNzBhNmVhOWM3MGJmZTY3ZTQ0ZTQxMzU0YTEzOGViMzkyYTUgbGVnYWN5LXRydW5rCiszMDQ0OCA0NDQ4ZmY4YjMyMzkwYmZkOTI1ZjY5MzUzZDVkZGExNzE1YmUxMDI3IGxlZ2FjeS10cnVuaworMzA0NDkgNGMwM2E0ZmFkNzJlZjI2MTcwN2I4ODJlY2U0MzEwZTJlMGU4NDFlNyBsZWdhY3ktdHJ1bmsKKzMwNDUwIDg0ODc5ZTE4Mzc3Mzg0OTQ5ZmEyOWJjYTYyMWVhYjU1MGNjMzk5ZjMgbGVnYWN5LXRydW5rCiszMDQ1MSA5MDk5ODA3OWExYTIzODkzMjU0ZGJiZjU5MmQyYTQ4ZTZlYmQ3OGVmIGxlZ2FjeS10cnVuaworMzA0NTIgNjdkZjI4OTNhNTBlZTgxNzdjMTAyNjk3YzQ5NDA5YjRiYWRmODY5YyBsZWdhY3ktdHJ1bmsKKzMwNDUzIDcwMWIxMDI5YWY0MDc5MDU1MGVlN2Q0OTkxYjFmYjFjMmIyNzhjOGUgbGVnYWN5LXRydW5rCiszMDQ1NCA3MGYwZjI1YjEzNGU0MjhjMWQxN2ZiODJiNTM3N2UxMjM3Y2ExM2RlIGxlZ2FjeS10cnVuaworMzA0NTUgNzc0Zjc1NGZkMWZmMTUwMzhmYmU5MTA3YWNhZGU5MTU1MmYyMjdmMCBsZWdhY3ktdHJ1bmsKKzMwNDU2IDM1ZTViMDIxYjc3NDQ0NzIwM2VlNzM0MTZiOWIxOWRjMmYwOWM4NWIgbGVnYWN5LXRydW5rCiszMDQ1NyA3ODRlN2ZkZjhjNTI0MzQ2ZmUwM2Y1M2RiYWIwNWYxZDE0MzZmNTgzIGxlZ2FjeS10cnVuaworMzA0NTggNjk4OTYwZDU2MWY4ZGE1ODk4ZTBmZGFhMmZjMDNhZWVlMTcyMTgyMyBsZWdhY3ktdHJ1bmsKKzMwNDU5IDViMTU3NTk2OGY3ZmFmODBlNzAyODM0MWIxY2I5MjZiZjI0ZGM2ODcgbGVnYWN5LXRydW5rCiszMDQ2MCA1Njc3ZTk4MGUwNDdlNDI0OGZmZmEwMDUwYjc3MmY3MWQwYTkzYjQ0IGxlZ2FjeS10cnVuaworMzA0NjIgMmM2NzE2OWY2ZTEzZmJkZDE3YjQ3NzZkYzc5YmM1MmFlZTI1YWU0OSBsZWdhY3ktdHJ1bmsKKzMwNDYzIGUwMmRhZjYzMDdmYzhhOGViNWUwMDI2ZThjNzBkZWU5ZWMwNzM4NmMgbGVnYWN5LXRydW5rCiszMDQ2NCA1NDlkMDdkMGFlZDdlY2ExOTAyN2M5NjVjYjcwOTExYWQzYWNmMWQ1IGxlZ2FjeS10cnVuaworMzA0NjUgZjcyMmE4MzAxNDBmYjQxNWU1ZTI4NzNkNGUxMTE0ZjRkMWVlNzhlNCByMjNhMS1icmFuY2gKKzMwNDY3IDdlMjM1MWJjNmU3YTY5YmY2OGRmNzEyNTM1MTg2YmM1YjA2YWMyNzEgbGVnYWN5LXRydW5rCiszMDQ2OCAxYzY1ZmE1ZTUyYzNkODFhYjAxYmE4ZWYzYTBiZGVkNGFmM2Y2YmRlIHIyM2ExLWJyYW5jaAorMzA0NjkgMTUwMTdhNzliYWNkZGFkMjdiYmFhZDRmMzkyYmI0YjA5MTE3NzMxOCByMjNhMS1icmFuY2gKKzMwNDcwIGQ2ZGNmZjRiMzU3NDIzNDgwZTQ3YTU1NWVhMDBiZjMyZjJjZThmMzIgcjIzYTEtYnJhbmNoCiszMDQ3MSAyYjgwMTE2ODE1YjUzNWRkOTgwMmQ2YzM1OTFhNmQ5Y2JkNjRhYjk3IHIyM2ExLWJyYW5jaAorMzA0NzIgOTJlNTcyZTNjYTlmOGM4MzM5ZjdlOTZhOTU2YmE5Yjc4MmI4ODI2ZCBsZWdhY3ktdHJ1bmsKKzMwNDczIDhhOGRmZjI1MGJlNDM2MmZhMWE2N2QzMWFkNDg4NzBiNjAzZjI2ZmMgbGVnYWN5LXRydW5rCiszMDQ3NCBiY2JkOTRjNjEwZTgyM2YyOTVkMWI3NDM5OWViYjY4Yjg3OGZhYzUyIGxlZ2FjeS10cnVuaworMzA0NzUgN2NiNzNhNzMyZjc3MWVhYTIzNmYyZGY0MmI5OGY4NTI0MmViOTBhYiByMjNhMS1icmFuY2gKKzMwNDc1IDAxODMwNzc2NWQzNGRjZjYyZDZkMmFkNjZiZDdmN2JkZTUzMWVmYTIgcjIzYTEtYnJhbmNoCiszMDQ3NyBjZmExM2NlOTgzYmEyYjc4OTY2YzBlYzc4NzExY2RmN2M4MjIzNjNmIGxlZ2FjeS10cnVuaworMzA0NzggNjk5MDUwNTljN2JkMTg4NTliM2Y4YTI2M2NlODdlZWViMWVhMjdlMyBsZWdhY3ktdHJ1bmsKKzMwNDc5IDc0MDc5YmU2ZjNmMTE0ZTE5MjI4MzM1MmY5MDI3MWE3NmQxMDAzZjUgbGVnYWN5LXRydW5rCiszMDQ4MCBjZjgxZjgyNWRhYWM5MjZjZDU0N2EyNDJhMGU1NWNiZWM0MTUxOWJjIGxlZ2FjeS10cnVuaworMzA0ODIgNGUwOTMyYTExMmY0MmI1NTliNzMxYzllZDhmODdkZDliNjMxNmNlZCBsZWdhY3ktdHJ1bmsKKzMwNDgzIDk2ZTFhYjhkZjg4Mzg0YWRhNzgzMDIyYjg3NWNiOTc0MmZkNWFiYTQgbGVnYWN5LXRydW5rCiszMDQ4NCAyYTg3ZDk0ODkxMTJmYTJlMzRhYTNlODc1YjZmMjM2MGVjZmRjMmJlIGxlZ2FjeS10cnVuaworMzA0ODUgMDBjZDFkNzE1OWMyYjQ1MTMxMTIxMWVjMGVmOWM5Zjk1ZjQ0MmFiYyBsZWdhY3ktdHJ1bmsKKzMwNDg2IDZjYTFjMGQzZWYxOTMxMjI0NDE0MjUwYTEyMTczZWNkM2U2OTUxMTYgbGVnYWN5LXRydW5rCiszMDQ4NyA4ZWQ0NzJlNWJjZDQ0ZGQzMjFiNDM1ZjliZDE5OTA1NWEwNzljZWQxIGxlZ2FjeS10cnVuaworMzA0ODggODhkZjI2N2RiODU5ZTNmNGI4OWZkNjg2NGQ5MWJlNDQzMDE0MTk0NyBsZWdhY3ktdHJ1bmsKKzMwNDg5IGJkYTQxODU2NzBjY2I3NDhlODM5OWFmNjE5MGM3NzlmYWYxOWI3ZWUgbGVnYWN5LXRydW5rCiszMDQ5MCAyOTNlZGEzZTY5ZjVmNTgyMTRhYWIyOTljYTAzODk2ZGIxNGVkYzAyIGxlZ2FjeS10cnVuaworMzA0OTEgZjU3MDgzYTM0MTk2NjRhYjQ4ZTA5NGMwYjRlN2EzZTE4N2UwZDE1NCBsZWdhY3ktdHJ1bmsKKzMwNDkyIDFjNDA2MGQ5ZTY4NzRjMzVmYzJiN2ZjM2QwYWFlMGI2YjhmNTE0YTAgbGVnYWN5LXRydW5rCiszMDQ5MyBlYTY3Y2VhNjc2ZTk5MzQ1YjBkZmVhMjQ1YmM5NDFhYWQ5ZWU0OGFiIGxlZ2FjeS10cnVuaworMzA0OTQgZDg1ZWFmNDc4NTU2ZWZjNjEzZjZmNGY4OTA5YjBiNjI3OTNhZDA1ZSBsZWdhY3ktdHJ1bmsKKzMwNDk1IDgxMjA5YzBmMDhhMDU5MjZmN2JkMGU5ZjkwNTVhY2NlYWRiMDJkMDUgbGVnYWN5LXRydW5rCiszMDQ5NiA0NTc5ZTgzYzY2M2I3MDJlYTIwYmFiMWE2MjMyYTExMWI1YjRhYTc0IGxlZ2FjeS10cnVuaworMzA0OTcgNzJjM2Y3MzQ3ZTg4Yzg5NDQwNmRlZGRhNzg3YTE2ZmFjYzVhOWM2MSBsZWdhY3ktdHJ1bmsKKzMwNDk4IDI2ODdhOTA4NTQxMWU3ODU3ZjY1NjJlMDIyNzA4NjE1MzYwYmQ3YWMgbGVnYWN5LXRydW5rCiszMDQ5OSA1YzRmYTA0YzlmNjI4ZDg5OTJjMjUwNjZhYmI0ZmM5YmVjNDZiZTY2IGxlZ2FjeS10cnVuaworMzA1MDAgNmE1Y2ZmYzYyMzg3ZGRhYTA5MGJhYzUzM2VjNTBhODdjOWY3YjdmZCBsZWdhY3ktdHJ1bmsKKzMwNTAxIGMwYjNiYjQ4NWJjZjgwMDE2Y2U4NjBhZGVmNWRhYWRlZGU0ZjkwYmEgcmVsZWFzZTIyLW1haW50CiszMDUwMiA5N2RjNTMwZDkwZWI3ODUyNjJkMTU5Zjk1OTNkY2FmOTNlNzgwOTY5IGxlZ2FjeS10cnVuaworMzA1MDMgNDc5MzEwMTQ5YjJlZGUxZTcwOTcyMTk3YTRlYTlmNTgyMmVlYjJmYyBsZWdhY3ktdHJ1bmsKKzMwNTA0IGZkOWYyMGNlM2JiYTFmYzljMzhiYjMzYzgzMDcwNGY0YjUyMTIzZTQgbGVnYWN5LXRydW5rCiszMDUwNSA3NDFhYTlkNmQ4YmVkNzQwNWZjMzMxZjM3YmIyMzAwZWQyNjNiZjI3IGxlZ2FjeS10cnVuaworMzA1MDYgMGIzZmNjZmJlMmEyODc2MWVlNGM1Nzg2MWIxMjUwMjBjNmFiNDBlNCBsZWdhY3ktdHJ1bmsKKzMwNTA3IDllZTRmZDA1ZDNjYmNkNWFkN2RhYjM4MzNiYmNmOTBiMmRjMGY4YzMgbGVnYWN5LXRydW5rCiszMDUwOCBiZmEzMjYxM2RlYzhlY2EwZTgxNzYyNmY5ODRkZmRmZjVjNThiZDU4IGxlZ2FjeS10cnVuaworMzA1MDkgNzI3YmNiODExYzUwZjk1ZmQ5NDViMmYwZWY0Mzg5Mjg5NTZhMmE1MSBsZWdhY3ktdHJ1bmsKKzMwNTEwIGUyYzg4YzQ1MWMxOWE1NDQ0Yzk1YmM3MDlmMzJiZjUwYjU5MzM0MTggbGVnYWN5LXRydW5rCiszMDUxMSBmNDQxYzRlNWIyMzQ2NTY1NDVjODhmZTU0NjMxOWI3ZDliYjRhNzM2IGxlZ2FjeS10cnVuaworMzA1MTIgMTA5OGNjYzg0ZDYzZjg5MmY2MmZhY2U4MjM5NTFkNWI3YmZhYjQ3NiBsZWdhY3ktdHJ1bmsKKzMwNTEzIDgwNmQzNmU1NmJmYTNlMDgwMTFmNDliYjBiM2JlNzcwZjNkNGI4MGYgcjIzYTEtYnJhbmNoCiszMDUxNCBhZDEyZWE5YzdlZmRmNDZiNjM4OWJmM2NmNjVlNTVkZTlmZGU1YzE3IHIyM2ExLWJyYW5jaAorMzA1MTUgNDQxNDcwN2Q5Mzc2MTZjNmFkNGI2MGMyNjBhMzMxYTlhZjg0OTU5MiBsZWdhY3ktdHJ1bmsKKzMwNTE2IGUzMjcxZThiMTRkZWUwZmJlMDdkMWE4NTJjMDBmODIxM2Y3ZjdmZmUgbGVnYWN5LXRydW5rCiszMDUxNyBjNDI5ZmU1ZGU0MTczNTYyZDUzMDMxYzBmMzg1MTZhNGNkY2E2OGM2IGxlZ2FjeS10cnVuaworMzA1MTggMzM4YWM4NmY0NDJkOTlhYzFhYmE3NTQ0YzRmMWZmOGU0Y2Y5YzE0YSBsZWdhY3ktdHJ1bmsKKzMwNTE5IGQyNzlkNzYzZjQ2MjU0ZWM1ZGMxZmE2ZDI1ZTIyNjdlYTcyNzIxYTkgbGVnYWN5LXRydW5rCiszMDUyMCBkNTliN2NiY2VhYzFjNmM5NjU3ZDFiMzkxYzQ2OWFhZTIyYjZiYjFjIGxlZ2FjeS10cnVuaworMzA1MjEgYjFlMjNjMzU3MDdiZTRjMDEwMmI3NTk4YjU0OTU3ZGM5YmJiNzUyMyBsZWdhY3ktdHJ1bmsKKzMwNTIyIGI2MWE2NjAyMmQ1YTQwMWY0ZjYzMjUxMDcxMzAzNTM5ZjE0ZjM1NTggbGVnYWN5LXRydW5rCiszMDUyMyA4ZWNkZGY0YWQ4YjAyODFkNjk0NjZkYjg1NmNmZTI2NmNiMmE4NDlhIGxlZ2FjeS10cnVuaworMzA1MjQgZGMzM2QwMjc2NDVhNGYzZDkwZGE2ZDMzZmZhMmI5MmJiOWI1NzI5OCBsZWdhY3ktdHJ1bmsKKzMwNTI1IDkzYjZhM2Y2MTMyZGM4Mjg3MzIzMzE3MDJlYzYwZGQzOTg4MWQ4NzcgbGVnYWN5LXRydW5rCiszMDUyNiA0MWY3NzI2ZTNlNTExN2E5MTQ0NGRkNDM4MDkxOTE5M2QxNTU4MDMyIGxlZ2FjeS10cnVuaworMzA1MjcgYTk4NjczYmUyMGMyODAyZWZhNDVjNzRmNWQxNzQyMjYyNzA4YTUyOCByMjNhMS1icmFuY2gKKzMwNTI4IDQyZjMzYmQ2OWM3MjRjZjRmNWZhNGYxODUwMjViNWQyOWEyNTUxZWQgcjIzYTEtYnJhbmNoCiszMDUyOSBmMGJkZjRjNTkwZWM0MGY5ODFmZWE0YTIzOTIwNWEzN2MwMzI0M2E2IHIyM2ExLWJyYW5jaAorMzA1MzAgYmU1MTEyMDMxMTZmMDZmMzA4YzY3NTZmYzgyOTdjNDFkOGE5ZDNiYiByMjNhMS1icmFuY2gKKzMwNTMxIDEzYzkwMzhmYTkzNzY5OTM4YzYxZDdlZDYyYzYwYjEyZjA1NDU5NzAgcjIzYTEtYnJhbmNoCiszMDUzMiBkZDZmMWRmNTI0ZGRjNzQwMjQ5MWM0YWJmODRiMTM4NGQ1NTYxYWMyIHIyM2ExLWJyYW5jaAorMzA1MzMgNjhkYWZlMWJjMDE2OWE4NjY3OWFjZjMwMmY1MDQ3NWQxOGM2NzJkNCByMjNhMS1icmFuY2gKKzMwNTM0IDAyNTk4NTZjMWU0NzYxMDgyN2M1MGQ1ZTk1ZTUwZGIzOWNhMjdhZjkgcjIzYTEtYnJhbmNoCiszMDUzNSA5OWRmMGU1MmY2MzQzMzI2NWU1NjdmMjgwNWJiYzQ5MWU0ZDU2ZDBjIGxlZ2FjeS10cnVuaworMzA1MzYgMWFlNzgyNDkzMTMyYjlhNDBlOTA4YWZiYTQ1MmMyYjIxNjkyNzNhZCBsZWdhY3ktdHJ1bmsKKzMwNTM3IGIzMGZlNGRjYzY5Nzk4NjNiZTY3NmVjMDljNjJmYzRkZGRlN2FiZGEgcmVsZWFzZTIyLW1haW50CiszMDUzOCA2ZTFhNzQzNWRmMjVkMzUzMTczZDM2MGRmMjJjNmRhNDEwY2JjOWM1IGxlZ2FjeS10cnVuaworMzA1MzkgZTY1ZmZjYjQzNjk1MThkNzJhMTVkYzgxZjRjYzEwZDEwODE5N2IyZSByMjNhMS1icmFuY2gKKzMwNTQwIGFlOWQ4ZjUwZTc2YTM2MDNjMmY1NWJlMjZmMTdhNTY1NzgzNTc1YTYgcjIzYTEtYnJhbmNoCiszMDU0MSBmOWE1NTU3Yzk0NDdhY2ExNmRkNjM4MjUyM2I1YmJlZjE3MzExOWRhIHIyM2ExLWJyYW5jaAorMzA1NDIgMDQxYzUyZjQ5ZGYyMjc4ZGYzYjkyZTdmMmY0MDc1NzQ5NWRmMzQ1MiBsZWdhY3ktdHJ1bmsKKzMwNTQzIDE4ODQxNmZiN2FjNTJkMmVhYTUxOGI5NDY5ZTA2YzQyYmZmZjU4MTUgbGVnYWN5LXRydW5rCiszMDU0NCBlYmY3MjY1YWFlNGVhOTJmY2NlZjMwNWUwZTY4ZDJkMTNjN2JkMzA5IGxlZ2FjeS10cnVuaworMzA1NDUgMjMyODBhNjQyODhlM2VhMTdhNDQwYjc4OGQ1ZDBhZjAyMjVhMDRlYyBsZWdhY3ktdHJ1bmsKKzMwNTQ2IDVkOTk3MjYzYjg1OWI5MmYyNzVmN2VlYzExZmYzODM3OGJhNDM0ZDMgbGVnYWN5LXRydW5rCiszMDU0NyAyMzdhMTQ2MjA3ODU5YjVkNjc1Zjc3M2E4ZmY4MzMzZmZjYzUxNTkwIGxlZ2FjeS10cnVuaworMzA1NDggNzM3YTU0NzYzOTZiNjQxNjg0MWYyMDJhMzAxMWQ3YmRhOGM5ZjhiNCBsZWdhY3ktdHJ1bmsKKzMwNTQ5IDI2N2Y0NWJlOWMwMmNkNDBiZWVkMzcwNDQ4ZmY3YzBlY2ZjZTY2M2UgcjIzYTEtYnJhbmNoCiszMDU1MCA1NTQxMjFmY2JiOWRjYmZkNjAzNGI2OWQyYTgwMGRjYTA3OGFmOGQ3IGxlZ2FjeS10cnVuaworMzA1NTEgMWNkOWM4NTY0ODc1Yjg1YjUyMDdhNGQwNTk1OGMzOGM0ZDYwOTJiNyBsZWdhY3ktdHJ1bmsKKzMwNTUyIDcwZDJjYjM2ZmExN2EzMWZlN2E1ZDZkY2RhNjUyN2VkMjBhZDI4ZjYgbGVnYWN5LXRydW5rCiszMDU1MyA3ODIyNzcwOWNhMDQ0Zjc5ZTRmZTFiZDY1OTYwNDdmYTM0Njk4OThhIGxlZ2FjeS10cnVuaworMzA1NTQgYWYzNTc5NTExZjg0NjhmZDIxMDJkNjJjOTNkZGM0NTU1ZDdjOWZlZCBsZWdhY3ktdHJ1bmsKKzMwNTU1IDlkMDgyOTFjZDQxMTY2MjE5ZWJkMWI1MmZkMGQ1ODkwY2MzYjgwOTQgbGVnYWN5LXRydW5rCiszMDU1NiA3MTRjZGYwODA2YzE2ZjdhNDI2MzYwNGIwY2E5NTM3OGQxNjFlNjNkIGxlZ2FjeS10cnVuaworMzA1NTcgZTM4MmQzOTMzMzFkNWMxMjFlYzdmYWZlZDg5OWIzZjQ4M2FlNzVmNiBsZWdhY3ktdHJ1bmsKKzMwNTU4IDk0YjljZjQyNzRkZTFlMDVmOWYxNjBhMmJkYWY5M2IzMTYzNzAyOWMgbGVnYWN5LXRydW5rCiszMDU1OSBlZTM0YjY0OTUyYzBmOGE2NzJiMDdlYmE5NzU2ODBlMjM4YWUzNmFiIGxlZ2FjeS10cnVuaworMzA1NjAgY2QzYzRkZjE5YjAzNWI2YWVhYTBkMTRmYTIyZTQyNDZhMjAyNDUwYyBsZWdhY3ktdHJ1bmsKKzMwNTYxIGFmZWI3MGM4NzZhYTM1MTQyMTdiOTE0ZDFmOGI0YWRlYjU1OWM2NmMgbGVnYWN5LXRydW5rCiszMDU2MiBjZjkwMzA5ZWZlZWU2MjJkZjY0MWE5NjkwNTAwYjA4MzlhZDc1M2JmIGxlZ2FjeS10cnVuaworMzA1NjMgNjk3N2UzMjBhNzU2YzQ2ODVlYmNiYjIxOWRhZTNmOGRkMzc5MDEzNSBsZWdhY3ktdHJ1bmsKKzMwNTY0IGQzYmE3ZjRhOWY4OGFmZTVkODI2MGQ5MDBlMzA1ZTZjOTg1OTg0NDggbGVnYWN5LXRydW5rCiszMDU2NSBhYWU5NDk1MDZkMmE3ZDMyODM5MzE2YzU4ZTYzOGEyNWIyZGUxYjZhIGxlZ2FjeS10cnVuaworMzA1NjYgMTU3YTk1ZjQxN2YzZDdiY2NkMDNmMzBmYTFmM2EwNGEyYTczYjI3ZiBsZWdhY3ktdHJ1bmsKKzMwNTY3IDc5MDFmZDk1MDE3ZjA5NDc4M2YyMjFjZWE3M2MwZjZiMWM2OGU0ZjcgbGVnYWN5LXRydW5rCiszMDU2OCBjYmRmNjBjY2Y1NGY1ZGZjN2JlZDAwY2FkYzcwMjQ0YzE1ZGJkZDM5IGxlZ2FjeS10cnVuaworMzA1NjkgZWIzMjJlZjY3YzlmZWM1MDE5NDJmM2EyMGE1MDE2MGRlNTliMTA0YiBsZWdhY3ktdHJ1bmsKKzMwNTcwIGNjNWIyZDBhNGFkMWQ4NmZlMjY5NzhkYzlmNGU4YTdmYjZmN2U2MzYgbGVnYWN5LXRydW5rCiszMDU3MSAwNmIzZmEyNWQ5ZjFkZTNmYTc1M2UxNzJmNjc5ZmI4Y2JmOTczOWQ5IHIyM2ExLWJyYW5jaAorMzA1NzIgMTcxMmUyMDRhYTkyZjEyMDdmMmUxNmQ3ZjhiYWIxZGVhMTYzNTFkNSByMjNhMS1icmFuY2gKKzMwNTczIGVmNTMxNDgyYmIzN2IwZmIzOGJmMDE2MmE4NjI3Y2RlMjFmZjNkMzEgbGVnYWN5LXRydW5rCiszMDU3NCBlOTIwNDRjMGI4ZWNlZTgxNzVhYTQ2NmVlNTNhMzNjYmE0NTM1ZTI3IGxlZ2FjeS10cnVuaworMzA1NzUgYzMwZjk3Mjg3NjAyOTRmMmY4OGVmZTM1ZDllYjMzZWIyYzJkMjBlMCBsZWdhY3ktdHJ1bmsKKzMwNTc2IDE1NjRjNjgzOWU2YjBlYjgwNTlhZTRjODFjZDAyMTU5ZGMwOWRiMjUgbGVnYWN5LXRydW5rCiszMDU3NyAwYmE0NjYwNmYwZjkxMThkZWNiYTQwZDNmZjA4MjgwZTI1OGU3N2FhIGxlZ2FjeS10cnVuaworMzA1NzggYjg2NTkyNWVmNjhhYjYzZjc0OGVlZmQ2OGNkNDA5ZDIyNmI5OGNjYyBsZWdhY3ktdHJ1bmsKKzMwNTc5IGMyOWFkYTZjMWM5MDRhMjc0NWRhNWEwNTE4NmE4YTI4YjAwYTMyZTEgbGVnYWN5LXRydW5rCiszMDU4MCA3NTMzMDZmOWIwYTBlMzM4YzliMTM2MjJiNGRlZjU0NTg2MDFlMjA3IGxlZ2FjeS10cnVuaworMzA1ODEgYzFmNGU1M2M0MmRkMGNlMDVhNDgzMWRhMWRhNTQwMDQzMmI2NDU3NiBsZWdhY3ktdHJ1bmsKKzMwNTgyIDk3MmZlYzIxZjIyM2I3MTM4YmM5YmQwNzU1YmFjMWM3MDk3YTdjNTkgbGVnYWN5LXRydW5rCiszMDU4MyBhNzRjODg4MzhhNTViNDIxZjhiYmU5OTI0OWU3MmZlMDc0M2FmZDJmIGxlZ2FjeS10cnVuaworMzA1ODQgMmFlMWQxNzU3MmRhNmE4ZTc0ZmNmNWY3MDExNmNiZTU1ZmE2YzQ1MSBsZWdhY3ktdHJ1bmsKKzMwNTg1IDMxOTllOTc0ZjU1YWEzZjZkZTUyZjY5MjRlMjA4ZGFiYTkxNjE1NzAgbGVnYWN5LXRydW5rCiszMDU4NiA2NGU4YzY5ODY2MTBjMmIzNzg2NDgwNjRiZGZmZDE0ZGRjNzFmMmEzIGxlZ2FjeS10cnVuaworMzA1ODcgZDVlMDlkNDEyYjUzODgwNjdlYjkzZGM4ZmUxODdkMGEyZjVhZWYyYSBsZWdhY3ktdHJ1bmsKKzMwNTg4IGY3MjI2NDIyYzFkMGE0YjcxNDE2YmEzMDUyNTJiMzgwZjEzOGFlNGIgbGVnYWN5LXRydW5rCiszMDU4OSA5MDM1MGI1ZDMzOTdjNGZkNjhjYTNlYzQ2Y2RjZDk5OGM5YWMxZWU2IGxlZ2FjeS10cnVuaworMzA1OTAgMzgzMTk0MDllODk1NjdlMjQyOGExNmQwNWM5ZTAxYmRjNzk5MTA1NiByZWxlYXNlMjItbWFpbnQKKzMwNTkxIDkzZjMyMmY1NjJmMzk5OGNmZjI2NTEyNjAwMmMyZDFiNzgzZDI2ODIgbGVnYWN5LXRydW5rCiszMDU5MiBhYmI1YTY5ZDYwY2JmZjk5NDYzOWJmMzQwODZmOGIyMTU1M2EyM2MwIGxlZ2FjeS10cnVuaworMzA1OTMgYTEyMzc5M2NhMTkzYmU3ZDQ5MDVkNTNjMGI0ZmJjZGYxMDNmZTI2YSBsZWdhY3ktdHJ1bmsKKzMwNTk0IDNhMjk1Y2ViYTQwMWY1N2FkNmRhNjY2NmVkN2IwNTVjM2UzNzljMDkgbGVnYWN5LXRydW5rCiszMDU5NSAzODhlNTQ3NDc3NDAwZjQ1MmYzYjAxY2U0ZmY3ZTliZDc2OGU0MDg1IGxlZ2FjeS10cnVuaworMzA1OTYgNTRlZjdkNTI5NmYxMDQwYWEzOGQ4MWFlYjM1NjE5MGQzZDUzZDE1NCByMjNhMS1icmFuY2gKKzMwNTk3IDFhYzk5OTRkYzZjMjU4MTMwMmFjOThhNTM1NjM0ZWQwOTM0MjFmNjEgcjIzYTEtYnJhbmNoCiszMDU5OCAxYTBlYWJiZGE2NTRhYTU1MWVkYzZlNjdjNDZiYjYxM2YwYjJmYzczIHIyM2ExLWJyYW5jaAorMzA1OTkgOTdiNWFiNjdiOWYyOTA5ZDg0ZDI0Mjk1MDYwYzNkY2I2ZDYxMjdhOCByMjNhMS1icmFuY2gKKzMwNjAwIDUyY2U3MTM1OGUzMmExMTY5ZGNmMDNjYTc0YzFmNGRmYWIzMWI4NmUgcjIzYTEtYnJhbmNoCiszMDYwMSA3ZGFiMjc3MzFiZTgxOGQwNGIyMjhmZTUyN2M1MTYxZmU1NWZmNzFlIGxlZ2FjeS10cnVuaworMzA2MDIgYmQ3NTAzNzhkNWMxZmZjMmQzMzA3YzUwMTYwMjE5N2NjMWM1MTJhYyBsZWdhY3ktdHJ1bmsKKzMwNjAzIGU4NDFjODczYTkzNzAzY2Y0NmEzNTQ0M2MzNDRhYTUzYzlhYzhiMTMgbGVnYWN5LXRydW5rCiszMDYwNCAyN2U5YzNjZDU4YWZkMzMyZjM5M2E0ZmNhNWJhMjQyYjBkYWE5NDEyIGxlZ2FjeS10cnVuaworMzA2MDUgNmM0YmQ0ODdmZDI2MGJkOTNkYTBhYTk0MjZlNmZmZTIyYTM1YzAwOSBsZWdhY3ktdHJ1bmsKKzMwNjA2IGExNjY0YjdkYTc2Zjc5YzIyYTc4ZDIxMGRiMjVjZWNmZjkxNDVhN2MgbGVnYWN5LXRydW5rCiszMDYwNyAzZTIzZGU4MDJhNWRhY2ZmMjZjNmE2OTMwMzFhNTQzZDg2ZDNiMmE5IHIyM2ExLWJyYW5jaAorMzA2MDggYjQyMjU1YzgyMmIxZTU3MWQ1YzRlMDNkOTZhMDZmODViZDU1ZTBhNCByMjNhMS1icmFuY2gKKzMwNjA5IDhkN2RkYmIzMzBkMzFjYmNmYTU1OTBkMTUwZTVlNWI4YWE0NDg3M2EgcjIzYTEtYnJhbmNoCiszMDYxMCA1YWI0YjY0OGE0Y2Y0N2RmYzMyYTE5MGI2ODViNGQ0ZmViOGYzM2NkIHIyM2ExLWJyYW5jaAorMzA2MTEgOTZhOGVmZDkxOTQ4YzFlYWMzNThkNzNmNjdmMDI4MjNlOTBjOWFjZSByMjNhMS1icmFuY2gKKzMwNjEyIDMzYjQ2MTBhODkyMjUzYzNiNmVhNGM2ZjAzNTdiYmQ5YzFjOTAyMGYgcjIzYTEtYnJhbmNoCiszMDYxMyBmOWE1ZWQwOTI2NjAwNjEwMDhjZGRkM2U5MWY0YWEwMWQzNTY1MmM5IGxlZ2FjeS10cnVuaworMzA2MTQgYTE2YmM2NGYxMTQ1YjQ0OGY1ZTIyOWEwNzZjYjMyZjA1M2RmYzMxMCBsZWdhY3ktdHJ1bmsKKzMwNjE1IDgyMjY2NThhNjNiYjJlM2M1MDYxZDgzMzMyMWYyYTBmMWI5ZDg3MTkgbGVnYWN5LXRydW5rCiszMDYxNiA2ZDdkYWE1MzI5YzZhY2FlYzk1NjNiZDZkYjk1YjFiZjEzZWRjZTE3IGxlZ2FjeS10cnVuaworMzA2MTcgNjkzMzFmYWM0ZWYyNWIwZDEwODAxNzAwNjgzMDExNzNjZGRlOTlhYSBsZWdhY3ktdHJ1bmsKKzMwNjE4IDQzMDZjNjY1Zjg1N2NjZTg5NjA2MjMwODQwNzVkYjExYzE3Nzg5MWEgbGVnYWN5LXRydW5rCiszMDYxOSAyNDQzYzU1N2NiYzNkM2M5MDA0MDhlOGQzMGI1M2U1NWQ0YWM2MmEyIGxlZ2FjeS10cnVuaworMzA2MjAgODJlYWMzMWU2ZTJkYzk5NzZkMzVkNTY5MjRmOTk2YjE4ZDZiOTcyYSBsZWdhY3ktdHJ1bmsKKzMwNjIxIGFlZTQzYTRmMzU3MGQ3MjM4NDEwYTYwYTE4NDQxMjc0ZTllZmQ5YWUgbGVnYWN5LXRydW5rCiszMDYyMiBhMGE2ZjRkZDczMjg2ODU2ODVjZmY3OWZiM2QwYTM5NDdiZDRkZTFmIGxlZ2FjeS10cnVuaworMzA2MjMgZmFiYTZlNmM4MjRkZjllNDhiYmY0ZjI4YWFjMTAxZGMwYzE1YmE3ZiBsZWdhY3ktdHJ1bmsKKzMwNjI0IDA0NjRhY2I1YjNlNDZiMWU1N2IzYjhmYjVmNzZlMmZiNjYzNDY3ODcgbGVnYWN5LXRydW5rCiszMDYyNSA1NWRlMmI5NTE4MWU5MzlmMmJkMjdlZjQwM2Q1N2RiZDM1MDNlMTYyIGxlZ2FjeS10cnVuaworMzA2MjYgMDM2NGFhZTVhNWE0MGJhZjgwN2M5M2NlZjVjNDc0MDdmODNjZWI1NiBsZWdhY3ktdHJ1bmsKKzMwNjI3IGU3MTlhYjQ2YWRhYmZjYjFhODdkNTc3YzE4YjE2MzlkYjc2ZTUzZmIgbGVnYWN5LXRydW5rCiszMDYyOCBkMmZhMWRkY2RmNmRhNmVkZjJhMTQzNjgxZTFlMjk4NzllNDcwZDM3IGxlZ2FjeS10cnVuaworMzA2MjkgYjJmYzQ5NDk2M2IyZWM5NDI1NTI2ZTZmMDc3NjZhYjRjMDdiZjg1MiBsZWdhY3ktdHJ1bmsKKzMwNjMwIDlkYjQ4ODI2MTBlNWI4M2JiMDZkZGE4ZjQ4MjJiNDVkOWUzZTE5YTcgcmVsZWFzZTIyLW1haW50CiszMDYzMSBhMmYxN2Y0YTZhMjJjZmI5YjNjNGE1OGI0ZDU0YzBjYTI4ZWIwYzI0IGxlZ2FjeS10cnVuaworMzA2MzIgMzdiZWI0ZDYwOTI5ODNiYzgzYjhiYjY1NWRhOTUxNDhmN2E2NDdjZSBsZWdhY3ktdHJ1bmsKKzMwNjMzIGViOTM1M2I0M2NkMTJjMTc5MmUzOTE5YzliODYwYzJlZDE1ZWYwYjUgbGVnYWN5LXRydW5rCiszMDYzNCBiM2M4ZDljNDcyZGM5MjZiYmNlMzYwYjQ5MDQ0ZDkzYWFkNGRiN2M4IGxlZ2FjeS10cnVuaworMzA2MzUgODZlN2ExZjdmMjY1Mjc3MDY2NTVkOGJkMWZjM2QwMGI2MGFiNWJhNCBsZWdhY3ktdHJ1bmsKKzMwNjM2IDdlYzc3MTg5MzQxMDJhOTliYjY2MzNlNWY2ZmQwNTE4OTM5OGUyYmQgbGVnYWN5LXRydW5rCiszMDYzNyBjMGQ1ZmU5YTBmMWMzZTQyMzc2MzM3MTA3MGQ2Yjc4NTZkYzNlYzUyIGxlZ2FjeS10cnVuaworMzA2MzggMWI4ODFkNWU0YTkwM2U1YzQ2N2JlYzUzMDcxZDI4NGFlZjJlNDYzMyBsZWdhY3ktdHJ1bmsKKzMwNjM5IGQxODUwYTM2YWU0MWZkOWRmOTNiZmFhYjkwNDczOGQ3MWRkODkxNDggbGVnYWN5LXRydW5rCiszMDY0MCBlNTQ4NTUyNTdhNGY5MzBmMzFkNDIyZGFhOWRkNjBiZTU3NTQwZmY2IGxlZ2FjeS10cnVuaworMzA2NDEgYWNjODBlYWNlNGRjMTM0ZTFlMzMxNzk0Mjk1ZmQ3NmY2YThkN2E0YSBsZWdhY3ktdHJ1bmsKKzMwNjQyIDQ2YTZlZDdjYzRmZTk1ZWI4MTQxMmFkYzI2MjU2OWMyMDc0NmMxOWQgbGVnYWN5LXRydW5rCiszMDY0MyA0NWYxZTZiMTJhODEzYjQzYjM5NTMzMDRlNWYzZWY4MTQxYzMzZDdlIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzA2NDQgMDQ3YjZlMTZhYjJlNGQ5ZjhmMWQxYTlmYmFhYzQxNzEzMWU4Mjg4ZCBsZWdhY3ktdHJ1bmsKKzMwNjQ1IDZkZmRiMWMwMzA4YWQxZmU4NjRhZWNmNjg2NzgzMmYxNWY0N2FmMjggbGVnYWN5LXRydW5rCiszMDY0NiA4NjE3YzI1MDZiOGU0NTQ5YjJkZWMzYmYwMDIwYTc0M2IzM2M0YWJhIGxlZ2FjeS10cnVuaworMzA2NDcgZTg3ZDU5MGE1ZGUxODc0N2M3NWZiMTBjZTZjMWQwNGY0ZDkzYzhiZiBsZWdhY3ktdHJ1bmsKKzMwNjQ4IDIyZDY2MDQ5NGYyOWM0ZDc5MWM0NjQ5OGU1NTcwN2VhYjgxNGY2NmUgbGVnYWN5LXRydW5rCiszMDY0OSA0OWJjZmVjYjI5NjI3MjU2YWUyODgzZGYwY2MyMjY1MTcxZDJlNzZmIGxlZ2FjeS10cnVuaworMzA2NTAgNjU3YWVhZmJiYzlhMGM4NGZkNjk4OTgzMzFlNmQ5ZGVlNjNlNzRhNSBsZWdhY3ktdHJ1bmsKKzMwNjUxIGMyNjYzY2EzMWQ3ZDBlMzhkYWIzOGVkNzc4YzRhMDAzMjUzNDE0MTUgbGVnYWN5LXRydW5rCiszMDY1MiAzZDI5NjJiMDI0OWU1NDUxYWUxYmY1ODEzMmU2N2E2MDM3NzgzZjhkIGxlZ2FjeS10cnVuaworMzA2NTMgMzMzMGE1MDlkMmJkODM1Y2ZlZGM0MDE4MDBjYWU4NDE0YjdjZWY4OCByZWxlYXNlMjItbWFpbnQKKzMwNjU0IGFmOGEzMGRlNjY3MjVhMDFhYWEwMzMwMzA5ODYxZjE1N2ExY2M4YzYgbGVnYWN5LXRydW5rCiszMDY1NSA3YmJiMGRkOGQyMzA2ODk3YTQ5YTRmNTVhYzZmNTQ5NWZiNWZlMzBmIGxlZ2FjeS10cnVuaworMzA2NTYgOGUyMWJjZjIxNThhYzkxMDQ3YzE2MzY5YTU2MjcxMTgxZjNlMDY2OCByZWxlYXNlMjItbWFpbnQKKzMwNjU3IDVkNGYzMTZkODcxYzBlNmMxNWJmODEyY2RlMDFhMGEyNjE0ZGJhMzYgcmVsZWFzZTIyLW1haW50CiszMDY1OCA4MWNkYWJiZDYzZDdjZDk5ODQ0Mjg5MjZkNmQzNDFhODQ1ZDdlMjI4IGxlZ2FjeS10cnVuaworMzA2NTkgYWNmMWI1MTIxMmM1OWE5YjdkZGU5Y2VlOWQxMmMwMGY2YjE5Yjk1YiBsZWdhY3ktdHJ1bmsKKzMwNjYwIGUyMDRkZmYzZmNiZjllMDRkMTBjYjMwNzA5NTNmOGU1MWExYzMyYmMgbGVnYWN5LXRydW5rCiszMDY2MSA5MmU5MjJlNzMyN2FlMzI3MzkzNjFkOWQ3ZDRjYjhhYjlkZDEwZTM3IHJlbGVhc2UyMi1tYWludAorMzA2NjIgNTc2ZTJiNWQ4Y2Y4ODI1YTg1NjdmMjc2YjM0Mjc4OTI1MThkYTQxYSBsZWdhY3ktdHJ1bmsKKzMwNjYzIDEzNzViZmNiNjc3ZTYyMGVlMTM1ZDU1N2VjMjg1YjAxZDVjMWJlYjIgcmVsZWFzZTIyLW1haW50CiszMDY2NCA0Nzc5OWMyNzY0NjExN2U5NmIxNTEyYjBmOGVkNzAzZWVmMjJiYzUyIHIyM2ExLWJyYW5jaAorMzA2NjUgNTZiOGY5MDg4MTNjYjBjYmM0ZGIyOGIzNmNlMTk5MGMzMjYzYTY3NyByMjNhMS1icmFuY2gKKzMwNjY2IDVjZjQxMGU0NzI1MTY2MzA1YWIyNTQ5ZGU0YjU0MWQ1ZjFiYzM1YzMgcjIzYTEtYnJhbmNoCiszMDY2NyBlMjY1ZWZjYmNiZDE2NTIwNzE5ZGEzNDNhZDQ1N2U0NDkzZTBhN2Q4IHIyM2ExLWJyYW5jaAorMzA2NjggMjIyN2FkODZkMzNjNTIzODIzMzEzMjI3MThjMzQwNTM0OGQxZjM1ZSBsZWdhY3ktdHJ1bmsKKzMwNjY5IDVlZDgyMDY3MGFmMzVjOWRlNzQ5MWY4MDRiMmFiZjhlZmVkMTE0MjAgbGVnYWN5LXRydW5rCiszMDY3MCBiOTQzNTYwZTVmN2I1MjU2NzA4NGU1YTA0NGNhOWVjYzU3ZjZiYWIyIGxlZ2FjeS10cnVuaworMzA2NzEgMjlmODljNzI1N2JkMGM5ODA2ZTdiNzU2MjQ2MjM1NWViNTY2ZGJmNiBsZWdhY3ktdHJ1bmsKKzMwNjcyIGUxODAwOGI3MTFiMDIyZmNiNWYzNzc0YTFhZjA3NjYyODdjMmY5YWEgbGVnYWN5LXRydW5rCiszMDY3MyBhZTgzOGY3NzRmNmMxZTFkMWY3ZmQ4OWJhYWY1YmQyODAxNjNjNWYyIGxlZ2FjeS10cnVuaworMzA2NzQgODBmY2VhYjA2ODM1ZTYxOTI4YmU5YmE0ZDdiNTkwNDAzN2MxNzRiOCBsZWdhY3ktdHJ1bmsKKzMwNjc1IDNmNGU4MGViZGNhODM1NGIwYjFmNTgzMDQyNWU0MjljZGI1YWNjYTEgbGVnYWN5LXRydW5rCiszMDY3NiA1ODVhNjQ2MGY1Nzc2ZmViOGZlYmZmY2FiNDdjODRiNzFkY2Q1OGVmIGxlZ2FjeS10cnVuaworMzA2NzcgYjFmNWZkYmU2Mzk3MmY3OTNiZTY3MjJjNDQ4ZjlmNWM0YzcyNmFmMiBsZWdhY3ktdHJ1bmsKKzMwNjc4IGViNmIzNmIyNmU4ZDJiNmEyZmUwM2YzMjJhYjZkMWFiZWNkYjEzMzEgbGVnYWN5LXRydW5rCiszMDY3OSAyMzI2MDE5ODg4NWFjZjNiMWY4ZDY1YWRmNjU2NTcwYzZkYWU5NDE5IGxlZ2FjeS10cnVuaworMzA2ODAgYzVkMDJkNTM3MGQ5MzdiZjAwNmM0NmE3Y2RlOGVlOTQzMDQyNGNjMSBsZWdhY3ktdHJ1bmsKKzMwNjgxIGI0OWE0MGRiN2I0NzJhMjQ1ZjQwZDBlODM1NzVjNzFjYjQ3NTZkOTkgbGVnYWN5LXRydW5rCiszMDY4MiA5MTBlNzZkZDA0ZGFmNjVlYWMxNjZlOTZkYzM4YTdlODI3ZGRkZjk3IGxlZ2FjeS10cnVuaworMzA2ODMgNzM0ZWJkNDdiYzJhOWQ0MzAzNjEzZjJhZWVmZTkwNzc4OGQ2OWFmMCBsZWdhY3ktdHJ1bmsKKzMwNjg0IDJmOTNjMjMxZWFlMGVhOGNjY2M5MTgyMGIyZjJkOGUxOTczMjM4MWMgbGVnYWN5LXRydW5rCiszMDY4NSBlZjQzZGU1NjJmZDFiMjUxYmIxNTdjMmJiNjRjNmUzMmM4ZjY4ODYwIGxlZ2FjeS10cnVuaworMzA2ODYgMGNhZGMyOTE4MGU2MTVjZjBkMTdlZTA2M2M2NzE1NzgwMGY5ZGRiZiBsZWdhY3ktdHJ1bmsKKzMwNjg3IDdmMDliMTk5MmNlOWZjMzVlYWJlOTJhMWIzOGFmMDg1MzM2YThjOTEgbGVnYWN5LXRydW5rCiszMDY4OCBjY2Y1OWYxYWI0MzEyODY0ZjMwYjI5YWVkMGI4MmVhMDY2YTZhZTlmIGxlZ2FjeS10cnVuaworMzA2ODkgMGJkMDczOTFkOTIxYmNjMTUwNjQxNmRhMzQyYjhmMjIzMWMwODNmYyBsZWdhY3ktdHJ1bmsKKzMwNjkwIGFkZjRhYjNlYWE2MjFjNDQxZmE3N2IyYjJkNTdmYTNjN2E1NzMyMWUgbGVnYWN5LXRydW5rCiszMDY5MSA0Yjg5ZDc2ZmIyMDVhYzBkZDMzNDI2NmI3NDE0NDIwNTIwY2NmYjgzIGxlZ2FjeS10cnVuaworMzA2OTIgZDVkMTJlYTNhNTgwOWZlYTIzYzhkZDc1Y2VlMWQ0Yjc1OTIxNzFmYSBsZWdhY3ktdHJ1bmsKKzMwNjkzIGI5ZjViZWU4ZWMxOGU4ZmYwNGM5ODIwZDM5ZTc0YzA0MjY3YzRiOGIgcmVsZWFzZTIyLW1haW50CiszMDY5NCAwYTk3OTZhNjQ2OGVmMTNmMjMxNTY2YzMxYmI4YWMyNDhiNjgwNWQ5IGxlZ2FjeS10cnVuaworMzA2OTUgNDdiMTM0YmI1MWMzMDJkOGVhMmVkMDE0NmQ2NGM3MjczMjg0NzM0MSBsZWdhY3ktdHJ1bmsKKzMwNjk2IDMxOGFiYTk0YzFlN2IxZWNlZDk0Y2ZkMzg0NDZjM2Q1MGJmYTJlNjQgbGVnYWN5LXRydW5rCiszMDY5NyA5MjVhN2IxZjkzZWUwMGY4ZTA0ZTIxZmY4Y2FkMjYyZGZiNDEyMmMyIGxlZ2FjeS10cnVuaworMzA2OTggMDdjNmMyZTk4YTFjZGUxY2I1MWVmZjE2YmI1ZmMzOWZhMDc0MzVhZSBsZWdhY3ktdHJ1bmsKKzMwNjk5IDZmZTQ5ZGJmMDNmZDQ2ZmJmNjM2NmU4ZWQ1ZGViZDUwYmU4MjQwNzEgcmVsZWFzZTIxLW1haW50CiszMDcwMCBhMGUwY2FiNWM5MjdmYzFhZjkyZWYwYzFiNTE2YmZjYTY5YmNmZTRiIHJlbGVhc2UyMS1tYWludAorMzA3MDEgY2RmMWJhMmFiNzE1Mjk0MjI2YjhlMTViNmFjODI1YmUwODYzN2Q1MSByZWxlYXNlMjEtbWFpbnQKKzMwNzAyIDc3MDZhMDZmNWU2OTI2OTRmNWJhZTdiZmFmMjM0MWViMDk2NTcwOGQgbGVnYWN5LXRydW5rCiszMDcwMyAwMWQ5ZmQ1OTUzNzVmZTU1ZGJkMDRmOGRiNWI0OWFiZjEyZjM2N2Q0IGxlZ2FjeS10cnVuaworMzA3MDQgNzI4MzgzZGM3MzllZjAwZjI1M2VmODJiOTFlMTgzZTAyYjVmNzJhZCBsZWdhY3ktdHJ1bmsKKzMwNzA1IGM3OTg2MTNhODc2NTViYTI2MzU3ODI3NTNmMDM0Njc3MjJlM2M1YjEgbGVnYWN5LXRydW5rCiszMDcwNiAwNGFhODZkNDlkOTNlNTU2NDkwYmNkODkyZDc5NTlhYTg3MGFiODdlIGxlZ2FjeS10cnVuaworMzA3MDcgZmM0YmIzODIwNDQ5ZTNmMGZhZGU5YmJkZTU2NTQ0ZGQxYzA0OWI3MCBsZWdhY3ktdHJ1bmsKKzMwNzA4IGJjYWUyYTcwZTFlYzdjOWY4NDQwMzEzODA1MjdhMTMwYjg4ZWM4NjQgbGVnYWN5LXRydW5rCiszMDcwOSA3ZWE0NDMwNTIyZGY0OTNhMDg0ZGQ3Y2JhODlmMWU3YzM3MjViOTBmIGxlZ2FjeS10cnVuaworMzA3MTAgZDAzYzEzMDM0NTYwYTM2MmU0ZDhkMTkyOWQ4ZGNmYWRhOTZkZWM3OCBsZWdhY3ktdHJ1bmsKKzMwNzExIGIyOWNmYWQ0NDA5N2I1OGMyYjE2MmFhZGIxZDhlNzU4NGU1YmU3NDIgbGVnYWN5LXRydW5rCiszMDcxMiBiMzQ2MjcyNTQ0YTE4MmMxNmJkM2VkMDFkNGZhYWQzNWJiZDBjZjQ5IGxlZ2FjeS10cnVuaworMzA3MTMgOTM0NzMyNzg3NDE5NGJmOGFlNDY0YmE5YjQ5NGNjOTkwY2QxYWU2ZCBsZWdhY3ktdHJ1bmsKKzMwNzE0IDU5MzA5ZDRiZjg0MWI2OTI5NjE3Nzc3MGJmZWE2ZGY5MTliNzhkNDQgbGVnYWN5LXRydW5rCiszMDcxNSA2NWRjMDExMGE3MzVjMTAxMjhlZWYyMDljMGQxNGY2OTU4YjllZmFjIGxlZ2FjeS10cnVuaworMzA3MTYgZDRjOGFmOTExOWQxOTE4ZmY2NmY3OTU3YjAyNjdiZGQzZmJiMDBhNSBsZWdhY3ktdHJ1bmsKKzMwNzE3IGE1MWU1YWUyOTg4MmJjYjFiZjVlMzQyYTJjM2JkZTJjZjhiZDA2MzYgbGVnYWN5LXRydW5rCiszMDcxOCBiODcyNDM0MWJiMWFiYzMyZjlmZjYxNWQ4ZjAxZDNmODdlZmQ1ZjIzIGxlZ2FjeS10cnVuaworMzA3MTkgNzdiNzBhODg4NGNiMjNiODZmZDAxMmU0MWEwMTI4ZDI3ZGEzYjU3NiBsZWdhY3ktdHJ1bmsKKzMwNzIwIDkyODEyZjZjZDYzYjViMmMyYmJkODU1ZWM3YmYwNzBkMjUwZmRlMjkgbGVnYWN5LXRydW5rCiszMDcyMSBkYzZmYjhhNmFmM2RlZjI3ODBlZmY1ZTY5NDgwMzgyNjU2NDM0MDBiIGxlZ2FjeS10cnVuaworMzA3MjIgYWUxMjI2NzVkZjFlOTBjZTk2NDE0MzY1NjQyYWY3YjQ0N2U5NDkyZiBsZWdhY3ktdHJ1bmsKKzMwNzIzIDgxZGE3M2I5M2MzYzYyZjNjMjI2NzY4ZDdhMmVlMmM2NzNkYzE0YjEgbGVnYWN5LXRydW5rCiszMDcyNCAwYTAzNWY5Mjk5YTk3OWY3ODljMWJlMTE2ZjU3OWIwNTZlMTI2N2E2IGxlZ2FjeS10cnVuaworMzA3MjUgM2M4ZDkxZjNmNGM2N2RlNzgzMTdhNTc0ZjM5MWFlNmRiMjY0NzhkYyBsZWdhY3ktdHJ1bmsKKzMwNzI2IDRmMTljODUyNGYxYWM3ZTRlN2FjYjQ0MTY5ZDc4OTFkMTQ3MTllNTAgbGVnYWN5LXRydW5rCiszMDcyNyA2YWUzNjFkZjg3MGVlYTMxOGY3YmIwMGRiYTRkNDlmYTI4MjFmMzJiIHJlbGVhc2UyMi1tYWludAorMzA3MjggYjBkNTI4MzI3YzRjMWE2Y2Y2Y2M1MzllOWNmZTQ2NmU4YzY1YTc3MCBsZWdhY3ktdHJ1bmsKKzMwNzI5IDgwZWEwNDhmYzBkNzM1ZjFmZGFhOTBhZWZjN2EwMDZiNjQyZTBkYmQgbGVnYWN5LXRydW5rCiszMDczMCA0MjhlZWNkZmQ1N2ZjYWNlMmU3ZDE5MWVhODY5MGU2MzAxOGMzNDk0IGxlZ2FjeS10cnVuaworMzA3MzEgYTQ5NGY1YTg2MzlmMjkwNDVmYjc5NzA3NWMwNGI2YzEyNTVjNGVlZSBsZWdhY3ktdHJ1bmsKKzMwNzMyIDRhNjJhOTQxZjNiMTJhMzAzNWFjYjcxOWJjNWQ4ZDA5ZGM1NDk5NWYgbGVnYWN5LXRydW5rCiszMDczMyBkZTJjOTVkODE5ODQxNjBmNTllZjAwMWFiNWNhYTAwYWMzZTEwMDk0IHJlbGVhc2UyMi1tYWludAorMzA3MzQgZjk2NzcyZTMxZTIzM2Y3NzdlZDIxZWJiNzM4YjhjZDVkMzk5NDA0OSByZWxlYXNlMjItbWFpbnQKKzMwNzM1IDNiM2NlOTY0YWRjOWMxM2YyZmE1Njk4YTJhN2Y2NzRmMmUxNWMzZGUgcmVsZWFzZTIyLW1haW50CiszMDczNiA3YTRkNzgyNzE1ZjRjNzY2MjQ5NGNlNmNjZmQ4ZDIyM2UxYjQyMzVkIHJlbGVhc2UyMi1tYWludAorMzA3MzcgMTBiN2U2MDI0NWI1Njk0MDFiOTYzNjI3ZWI1ZjhkMDcyYjg0NzY2MyBsZWdhY3ktdHJ1bmsKKzMwNzM4IDM4ZDIyMzhjNzk1ZTQ2ZTliMTZlN2FiMzk5MmYyNGM0MDE1NDUyNDIgbGVnYWN5LXRydW5rCiszMDczOSAyZWQ1MThhYjJmZDIwYTJkMjIyOTQwNDQ2NDlhMzE2ZjFkMjI1MGUxIGxlZ2FjeS10cnVuaworMzA3NDAgMTc4NzhkNDU4Y2YxMmYzZGZkMTNlMmExMDQ5MGFmZjc3OGFlZDdhNCByZWxlYXNlMjItbWFpbnQKKzMwNzQxIDExMTlkNTgyNjA5YTE0ZjI0ZTBmNGE3ZTZmMjIwNTUwMzhjNTJjMmYgbGVnYWN5LXRydW5rCiszMDc0MiAyMDlkNjcyMTI4ODNkMDEwYzM2YzZlNTZmMWQyNzMxYTA2YzkwY2NlIHJlbGVhc2UyMi1tYWludAorMzA3NDMgMjAxY2RlYjMwNWY2NGEwOTQwM2YyZmVkNDZjOTI5ZTZlMTE2YzQwNCBsZWdhY3ktdHJ1bmsKKzMwNzQ0IDQyMGVhMjA1ZjAyNDFlZTQ1MTk1NDAyNmM4MmE0ZjVlYWE1MDdmNTUgbGVnYWN5LXRydW5rCiszMDc0NSA1ZDQyZGJhNDlmZTUwNzI3NWI5ODBiNGQxZGM1OWQ0MDI4Mjc2NjcyIGxlZ2FjeS10cnVuaworMzA3NDYgZWJlYjAwYjhkNTAyYTBjOTk1M2I0MWFkOTBjZjg4MmViZWE3N2UwZSByZWxlYXNlMjItbWFpbnQKKzMwNzQ3IDExYjM0NTY0YTBmZDA1ODIxZGE0MjIwNTZjOTgwMTkyYjM0OGRlYmMgbGVnYWN5LXRydW5rCiszMDc0OCAzYTMzYmQwZjljNGJmZGM3NTRlYzhmZTFlMTM1MjNjOWM4MDhkYWI1IGxlZ2FjeS10cnVuaworMzA3NDkgZjM0YzI4NjUwZjE0ZTE4ZTVmZjI1MzVjYzg0MTE1ZTJkOTk1ZDMxYSBsZWdhY3ktdHJ1bmsKKzMwNzUwIDdmMzdlZDU0MjkyMDAzZWE4ZjBjYzQ4ZmRkZTNhYzM0NTVjZmNjNjEgbGVnYWN5LXRydW5rCiszMDc1MSAxOGYwNzJkMTQwYTljN2ZlNzVlZTRiMTQ1MTRjNmM3MTk5MmYyZDdjIHJlbGVhc2UyMi1tYWludAorMzA3NTIgZmQzYjA3MTFiMjVmYjA1NWZhZjBiYmQ4MzgyNzc1Y2Q4MmM1ZjQxYSByZWxlYXNlMjItbWFpbnQKKzMwNzUzIGVlYmM0ZmRhYzU5NGU2OTJjZjFmMDgwMGUzYTFkNDg4YWE1ODdiM2IgcmVsZWFzZTIyLW1haW50CiszMDc1NCBlOWY0NWI4ZWZkNmI0ZDdjODc2YjQwZTViZjI0YTY2YzY1ZmEzODJkIGxlZ2FjeS10cnVuaworMzA3NTUgOGJkNmIyYWUyODc0YjA3OWZiMGU1YWY3YmM5NTFmNTEwMWJlZjVmYyByZWxlYXNlMjItbWFpbnQKKzMwNzU2IDNlZGU5MGQ2ZTFjZjEyNWEwMjAzYjQ5ZWYzYzc0OTg0OGQ4ZjE3NWEgbGVnYWN5LXRydW5rCiszMDc1NyA4NGE4ZTdkMWRhYTk3Njk4MTVkOTlkNmQzZWU3OTU4NTI5Yjc2NWM2IHJlbGVhc2UyMi1tYWludAorMzA3NTggM2JmZGJjM2RmYmNlOTI4YzkxNzFkYzQ4YTg3MTc4ZjU0ZjE5MmI0MSBsZWdhY3ktdHJ1bmsKKzMwNzU5IDBhNmI4ODE5MGI4YjFkM2JlZjUyYTljZTQ3MzUyN2VjZTVhOGE5ZTIgcmVsZWFzZTIyLW1haW50CiszMDc2MCBmNTlkODBjN2UxYmI0ZDE4ZjkwMDBkNTAxZDAzMWZiYzlkZmNmNGU4IGxlZ2FjeS10cnVuaworMzA3NjEgZjk1ZTlmM2M5ZmVhNzhkNGQ3MTdlZGEwM2QxZjUwZDg2NDg3NDYxMCBsZWdhY3ktdHJ1bmsKKzMwNzYyIGE3NzA2ZDRjNjkwYzIwYWU2MWVlODE2ZDJkOTNkNDVhNGZkMDhiZjEgbGVnYWN5LXRydW5rCiszMDc2MyAzYWZiZDU1ZmIxOGZhNGFiMTNhMzhjZjFiMTRkMjE1MTYzZTc3NDRhIGxlZ2FjeS10cnVuaworMzA3NjQgYjNmMTA1Mzk5ZDIyODExZGJhNWQxOTlhOTU2NjBjNDY2MWY0NDcyNCBsZWdhY3ktdHJ1bmsKKzMwNzY1IGQzYWI1MzJiM2I2ZDZlYmIyMGE3MWY2YTI1ZjJjYzk1ZjE2NzVmMWUgbGVnYWN5LXRydW5rCiszMDc2NiBhNTZjM2M1NjI4OGI5ZmViMjdkYjViYTkwOWRkNDUyYjU3MGQ4ZDg4IGxlZ2FjeS10cnVuaworMzA3NjcgNWRkYjkwZjgxNjlhNTg5MzlhZTQ0M2IwNzcyNGI3YmRhYjAyYjgyYyBsZWdhY3ktdHJ1bmsKKzMwNzY4IGM0MTUwZjdmNmE2OTYxNTI0YWU4ODg3MjA3NzAyZTJiNzc1N2I0ZjEgbGVnYWN5LXRydW5rCiszMDc2OSA3YzM0ZTViZjJlMjJiMWY4NTg5ZjgyNzVlZmVlZWNlZTMyYzEzZjJiIGxlZ2FjeS10cnVuaworMzA3NzAgMTZhODc2NzQ2Mjg1MGM3NDZkMDI1YzM4ZmFiZGQ4YWMwZjQ3ODJmZCBsZWdhY3ktdHJ1bmsKKzMwNzcxIGM5OTQ5M2FiYTA5OGQyNTNjMmRiNzhkMTk2YTE2NDU5MWVhN2Y2ZTAgbGVnYWN5LXRydW5rCiszMDc3MiA0MGNkNzQ3ODI2MDA4MTFhZDAyODdlNzhjNGQ4MzcyN2Y2NWQxN2JiIGxlZ2FjeS10cnVuaworMzA3NzMgMWNhN2IyZDY5MjQyNWRjNjdiODQwOTMzNmNhYTVkMzhiYTRmNDRmZiBsZWdhY3ktdHJ1bmsKKzMwNzc0IDI2MTU0NzcwMzQ0M2RhYjQ1NDA5N2I1MGQ1MTU1MWMwNTI3NGQ2ZTMgbGVnYWN5LXRydW5rCiszMDc3NSBiYWZmNTZhZGZiYzMzODI0OGY5NWViYTc5ZjU3NzVhNDFlYzVkY2Y2IGxlZ2FjeS10cnVuaworMzA3NzYgYWU4OWI1NTYwNTBhZTA1NzJmNGM2ZGViZDU3MjkwMDQ5ODczY2E5MSBsZWdhY3ktdHJ1bmsKKzMwNzc3IDNmYmZmZDczNmQ5ZDA0YzIyMDg4OTZlZDQ3NjkyM2Q2ZDNmOWJjNmEgbGVnYWN5LXRydW5rCiszMDc3OCBlOGMxYTk1NDJmNjZhNjY4ZDc4ZjdkMmZmYmU3OGNlYjNmODg3NTFiIGxlZ2FjeS10cnVuaworMzA3NzkgZmFmMjU2YTU5ZWNlYjI5Mzc3N2YyNzY0NzI0NWU1NGJlMzQ0MDNlYSBsZWdhY3ktdHJ1bmsKKzMwNzgwIDRjZGI1MDFhYjZhMjE3N2FmM2JkYTA4ODIyNzY4NTZkOGQ1N2Y0NWMgbGVnYWN5LXRydW5rCiszMDc4MSBmMDU3NjRkNzA4MmNjMWEwYTFhMmM3ZmI2MTcyZjkxM2I5NWIyOTMwIGxlZ2FjeS10cnVuaworMzA3ODIgNzc0MjhlODM1ZDY3ZWQ4MDYzNDA4YTRmMTllY2I1MWQ4Zjk3Y2UzNiBsZWdhY3ktdHJ1bmsKKzMwNzgzIDdhY2Y1NzQ0MGY0ZTA5ZmU1YmVmY2NhMDg1NTljOWRjM2Q1ZTQ4ZTQgbGVnYWN5LXRydW5rCiszMDc4NCA4ZDBlMDdjMjcwZWY5YjMxMTQ3NzRjYWJlZjM3ZTA1NTg4YmQ5OTQ3IGxlZ2FjeS10cnVuaworMzA3ODUgYWY4MTExNzI3MTdkMGEzMTAxNGVlZGZhZTU0NGQ0N2FiNjU2NGEyMSBsZWdhY3ktdHJ1bmsKKzMwNzg2IGE5ZGRhZGY3ODllYWI4ZjY5OGRhMzczZTdjNzI5YTczZTYyNGYzNGQgbGVnYWN5LXRydW5rCiszMDc4NyBiNzQ0NTA4ZDViMTI2NDZhZjIwYmNlYzI1MTRhYzNiMTEzZWU5YjdhIGxlZ2FjeS10cnVuaworMzA3ODggYmUzZDFiN2U2MmRjMjY5Y2JiODQ3YmRiNDFjZTEyODdiNDE0YjliNyBsZWdhY3ktdHJ1bmsKKzMwNzg5IGRiZTRmNTdlOGJiMjk1NmNjOThhZTlmMjE5NzMxMjI5MDM1YzRmNDIgbGVnYWN5LXRydW5rCiszMDc5MCAzOTJmZWVjZDJmMWM3MWVkOGI3M2NjOTI3MWUwODE2ZWRlZTI4ZDNiIGxlZ2FjeS10cnVuaworMzA3OTEgOTFkNjc4YTk0YzczNjNmNTBkZTlkOWY2NzMwMmRjMDA0ZjJjYjFjOCBsZWdhY3ktdHJ1bmsKKzMwNzkyIDY0ZDNmZTkwNGEwYWY4ZDY3NGIyNGVhZTA0NWRkNWRmMzkzN2FjYmEgbGVnYWN5LXRydW5rCiszMDc5MyBjZGE1YWI2MjU3NzRmYWRkNTIwMjk3OTQ1ZDk0ZTIyYTY2MjY1Y2VjIGxlZ2FjeS10cnVuaworMzA3OTQgZDJhZTVhZmZkZTE0ZTc5NjQwMTJhNDYxNzkwZjY3YmNhNmZjYTk2ZiBsZWdhY3ktdHJ1bmsKKzMwNzk1IGJlZGI3NWQ5MGUwM2MzOTlmMmUwMTZmNjE4MmVhMzdhZGFjMDMxMzcgbGVnYWN5LXRydW5rCiszMDc5NiA3ZmRkNWQ2MmM2MTVhZjIwYWY2NGI5ODEwMmE1YzE5ODhmZWJlODVkIGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMDc5NyA5ZGE0M2NkZThhMTY2MWU2OGM0NTVmYWFlOGU0NzZmZTViNDJhYzg4IGxlZ2FjeS10cnVuaworMzA3OTggY2JmMzU1ZjI4Y2E5ZjY4OTI4Nzg5OTE0OWM5YTMzNDEwYzdlNWUwZSBsZWdhY3ktdHJ1bmsKKzMwNzk5IGM4MjM0ZTI2MTE1YzY2ZDRhYzliNDhhMmJlYzZlNjE2NGUyYjZiYWYgbGVnYWN5LXRydW5rCiszMDgwMCA5ZGUwNjRjN2EyNDdmMTFmYzM4ZTA0YmNmOWE3NDIxMDAyZWU1MTgxIGxlZ2FjeS10cnVuaworMzA4MDEgODdiNjZiNmZmNWU3NmY3NzAyZWEzZWI3NDU1MDczZTNlNTQ0ZGY3NCBsZWdhY3ktdHJ1bmsKKzMwODAyIDVhMDUwMjAwZjczNjU4NmM1ZjhkNTBjZGRkNzdmZmJmN2M5ZTg4NjUgbGVnYWN5LXRydW5rCiszMDgwMyBjNmY0OWI3OTc5NjNlY2JmZjk4NWFhNGJlOGM3ZGFhZWQ2YzQzN2ViIGxlZ2FjeS10cnVuaworMzA4MDQgODY2NzU2ZjY3MGZmZDU4NDUzZDE1YWNlMDBhN2I0YTg3NWQ4ZjE1OCBsZWdhY3ktdHJ1bmsKKzMwODA1IGRmMjc1NGFjYTcxNzA0ZjRiYTQ3ZTg0NDNhYWNlNDVjNWZjZTYyZGYgbGVnYWN5LXRydW5rCiszMDgwNiA0MGU1ZWI5ZTA0ZTBlODM1YWI1Y2U1ZjY1ZWM1YzIxMDllYjkwMWEwIGxlZ2FjeS10cnVuaworMzA4MDcgMDRlNTYxMGM1ZWZlOTdhZjQ1OGZjZGQ0NjYxZWM3ZDc0NjVmYTVlYiBsZWdhY3ktdHJ1bmsKKzMwODA4IDg4ZmFhOTg1ZDk4YzNmMzY2M2EwNzM2NzZkNTAzY2ZiYzA5YmU4MjUgbGVnYWN5LXRydW5rCiszMDgwOSA5N2Y0OTRiZjczMTkwYWQ5YmQwNmIyYmJhZTViZDg2NzFiN2E3NTY0IGxlZ2FjeS10cnVuaworMzA4MTAgNzVkYTQ5OTc3NTcxYTRlYWI5YTE5MmIwMmE2YTJhYjhmMTMxM2ViNiBsZWdhY3ktdHJ1bmsKKzMwODExIGU4M2E0MmE5MGRmMTYzOTZhN2FmYmY4NzVlZDQwZThhNWZkN2U4ZTMgbGVnYWN5LXRydW5rCiszMDgxMiA3MDM5Mzc1MjI2YTdmMjYyN2FmMGI1NTQ1OGRhYmEwMTI1MmU3NGI5IGxlZ2FjeS10cnVuaworMzA4MTMgZDdmODAwMjgzMDFkZWI3NGEwMWY1ODU1MTI3M2ZkZDQxMWQ1OTNlNyBsZWdhY3ktdHJ1bmsKKzMwODE0IGJmYzE0MGM3ZTNkMDY1MWYwM2EzOTM5YWViMTJkZWQ5ZjQ5ZjM4YTcgbGVnYWN5LXRydW5rCiszMDgxNSA3MDU1ZjRjMWVkY2MzNDFlN2Q0YzQ1NGQ2YTE5NGM2ODUwMDdjMjhiIGxlZ2FjeS10cnVuaworMzA4MTYgYjgzODc3MzBkZDhmZjQxNWU3OTI3ZjZmYTJkNDQzODNhODgwNzYwOSBsZWdhY3ktdHJ1bmsKKzMwODE3IGMxYzQ1NDc1ZjE3MGU0MGU3ZTkyY2RmNTIzOWYwNjg3ZTgzM2RjMjMgbGVnYWN5LXRydW5rCiszMDgxOCA4MTU1MWFkZjEyZjZkMWVjZjI0NWM4OTk4NmRkNzdhNzM0NmNlOGFlIGxlZ2FjeS10cnVuaworMzA4MTkgMDVmZjkwNGVlNGUwN2I2YzY2Y2Y3MmE1OGUyMDhkY2U3NDQ3YmNmYSByZWxlYXNlMjItbWFpbnQKKzMwODIwIDRmYTlhZDg1YzNiMTVkYzJkZjhiZTg2NTQ1YWI3YzlmNzU1YjgwM2QgcmVsZWFzZTIyLW1haW50CiszMDgyMSAxMzY5ZDI0YmM4NjFkY2EyNjg3MTU4ZGU5ZDAwMTQwNWUzNjgyYjkwIGxlZ2FjeS10cnVuaworMzA4MjIgNWE5NzVlODJkNzBmYjViYzA0OWNkNDQ2MjBkOGVkN2FhZDU5NDFmMiBsZWdhY3ktdHJ1bmsKKzMwODIzIGRlODAxNzMzZWMxODg3NWJjMmNiNmQ4ZDM2MjY3ZDE1MjU4OTEwNTggcmVsZWFzZTIyLW1haW50CiszMDgyNCAwZjhkMTg5MzEwYjQ1YTlmZGI2NDU0M2Y1NGU4Y2VlOTI4MGFmM2ZlIGxlZ2FjeS10cnVuaworMzA4MjUgYTU1NTIzMGJlM2NiMDA3M2IzZTgyZGFjYWIwYmI3ODU3ZmI1ODlhOCBsZWdhY3ktdHJ1bmsKKzMwODI2IDcwNDYzOWQyMGE2Y2Q2MjViYzBhMzEyYjY3ZjVlYjRlNDE0ODg3OGIgbGVnYWN5LXRydW5rCiszMDgyNyBlYTc2ODBlYWY5MzdkZjczODI2NDI1MmQ1NTYwNzM2ZDAwZjBiZjc1IGxlZ2FjeS10cnVuaworMzA4MjggZGFkZDE3OGI2NWZhNTY4YWUwZGE2Yzg1ZTA3OGEwZDI5ODU4YWUzMSBsZWdhY3ktdHJ1bmsKKzMwODI5IGZmMTc5YmFkZTNmMGRjMzllNGJkMGE5OWNlNWMzMmQ5ZGEzODdmZTggbGVnYWN5LXRydW5rCiszMDgzMCAxODU4NDcxNDBjYTVkYmRkYTExZmY4ZjJiMWUzMjYzZDhjMWFlY2MyIHJlbGVhc2UyMi1tYWludAorMzA4MzEgYTJmODRkMjgzNWZhZjgyNWQ4ZTAzZTRjNjFkNDJhNDcyYjQ5ZTAxMiBsZWdhY3ktdHJ1bmsKKzMwODMyIGVhYTYxMmE0MWRkMGQ2OWViMGQ5ZjA5NTcyYmEzMGFkNWJkNDY0ZTAgbGVnYWN5LXRydW5rCiszMDgzMyA5MjIwMDk4ZjAzMjdlOWIyYzAxMzBjNDgwZTg3ZWYzNjhmNTM4OTdjIGxlZ2FjeS10cnVuaworMzA4MzQgYzY4MjkwNzkwZDUzZDZlMDFkYzMyMjcwZGQ0MDk0YzgxMTJmYzZjYSBsZWdhY3ktdHJ1bmsKKzMwODM1IGNkYWIyYjc0ZjMwN2VhZDYzNzk3NTY4ZTU5NTQzZjYzYjM5MWQ1ODAgbGVnYWN5LXRydW5rCiszMDgzNiBlZmEyZjhhYmIwMmM5YTYxNWIwMDRiODkxZjM0ZTk0MzI5Y2Y4Y2RhIGxlZ2FjeS10cnVuaworMzA4MzcgM2M3MDIzYzllOGUyNjcxYmRjZGQ3NjRiZDk1Njg5M2M2YmNlNzczZiBsZWdhY3ktdHJ1bmsKKzMwODM4IGQ5NjZiYjU0YjNkZTBkOGU1ZDc1MDQxZjgxMTVmMmY0MDk5MmY0ODUgbGVnYWN5LXRydW5rCiszMDgzOSA3MDY3ZDM2YzNjZjQ3MDE5NTYxMDc1Y2NiNTU3MDkzMWE1NWRmODVhIGxlZ2FjeS10cnVuaworMzA4NDAgNzVmMzhjNDE1ZTdkNGQwN2M4NjRiYjAwMTJiZmVhYWQ4YjljMjhkYyBsZWdhY3ktdHJ1bmsKKzMwODQxIDE1NjJjMWUxMGI0OTdkYTk3MTQ4Y2VmOTZjMjBkNmNhYzkzMDY5ZDkgbGVnYWN5LXRydW5rCiszMDg0MiAyOTllZjJkYWJiNTJjNjYyNGMwMzdmYjM2MzM3ZjljZmQyMTU2NjEyIGxlZ2FjeS10cnVuaworMzA4NDMgODhiZjEwMzEzNTg0ZGU0MTY3ZjM4Njc0MDU4Zjk1NzQ2OGU1MDI4MiBsZWdhY3ktdHJ1bmsKKzMwODQ0IDFiNjIyOWFkYjNkZjlkZjAyYzQ0YTY5ZjFlYzQyOWFlMzViYzQxMGMgbGVnYWN5LXRydW5rCiszMDg0NSBkNWEzMzg2Yzc2ZjQ5NDU2Y2I1MDViMWY5ODI3MjA4MDdlMjU2Yjg0IGxlZ2FjeS10cnVuaworMzA4NDYgYzQwNDg3OWNmOTk5YjAzMzA1ZTExYjE5YWQ0NTBmNWQ1Nzc0MjQwYSBsZWdhY3ktdHJ1bmsKKzMwODQ3IDQ0ZTM1MmQ3ZDUyZmZiYjQ0ZmFkMTBkNzIxYWYyNTAxNzZjNTViZmQgbGVnYWN5LXRydW5rCiszMDg0OCBlMmRhMGRmMzYxM2QxY2EzYWM0YWIzODg3MmEyMDM4NjFkNTU5OWJkIGxlZ2FjeS10cnVuaworMzA4NDkgNjgzMzM5Yjg1MmFiZDQ5YjliZGE2YjY1YmZhNWRiMDcyNGJmMjdiYyBsZWdhY3ktdHJ1bmsKKzMwODUwIDg3MDQ1YThlYzU0NzE3OTE2MDMwNzE3NWU5OWE4ZjA0OTFjNTMwNTUgbGVnYWN5LXRydW5rCiszMDg1MSA2Y2RhN2M2MTIxNTRhNzY4Njg1NzhjOWRkYTk1MmM1NmY1NDJjMjA0IGxlZ2FjeS10cnVuaworMzA4NTIgYTBhOTE0NzIzYzQ4MGI3MTI2YzE5OWQ2YzQyY2IyODBhMzZlZDdkMyBsZWdhY3ktdHJ1bmsKKzMwODUzIDU5N2FhOTk2NmVjNmJiMzMzMDc3YTg3NjRjZjA4ZTFmNzIxNWM0ODQgbGVnYWN5LXRydW5rCiszMDg1NCBmNGM2OTRhMDE0MjU2ODM1YjdjY2EwYWM2ZWQ1ZjQ1NGNmNjYxNzY0IGxlZ2FjeS10cnVuaworMzA4NTUgMjJmYjc2YzUzOTI2NzUxNmRkNjFjNjVhZTcyOGNmNWNiNWZhZmEzYyBsZWdhY3ktdHJ1bmsKKzMwODU2IDJjNjQ5YzdhZThmM2YyYmY3YzRhZTFkMDBhYzZhMTEyODc4NjJkMGMgbGVnYWN5LXRydW5rCiszMDg1NyBjYmNhMGJjZjFjMzFlOWVhY2Q5MWQ3MTlkMDhiNzc0YWIzN2E3ZGE1IGxlZ2FjeS10cnVuaworMzA4NTggYjQ3MGNhODRmZDJiNWVjOTllYTY5ZDZhZjFlOWJlNTNjMjI4ODJhMyBsZWdhY3ktdHJ1bmsKKzMwODU5IGU4MDQ1NmFkMTk1YjY4ZDgwNmViNjYwNmJiNjFkMjEyNDEwN2ZjMmEgbGVnYWN5LXRydW5rCiszMDg2MCBkMzRlZjAwZDlkYThhMDg2MDg2NDQzZjcyNWY4YTg2M2Q3YzRkMWE5IGxlZ2FjeS10cnVuaworMzA4NjEgOGI1M2IwY2UwNmQ0NThlN2Y0MWFlNjAxYWEyNzI0YzRkYmNhZjJjYiBsZWdhY3ktdHJ1bmsKKzMwODYyIGJhNjNkNzE3Yzc1ZjAwMDRjMGJjZWFjNzEyNGU1YjlhM2IzY2EyMjEgbGVnYWN5LXRydW5rCiszMDg2MyA5ZmUzNmFlMmE0YTJiMmE4NWY0YmJkYWQ4YTQ5NTNiYzE0YzYwMjAyIGxlZ2FjeS10cnVuaworMzA4NjUgOWJlMzE0OWZiZWU3MTdiNDYzYTg4YWQ0NzI5MGFhZjk3ZWJkZGZjNSBpZGxlZm9yay1tZXJnZS1icmFuY2gKKzMwODY2IDQxMmU2NmUzNTMwZWU3ZjBiNjcxMjc0OGZkZDgwYmJiOWZmNGI1YzIgbGVnYWN5LXRydW5rCiszMDg2NyA0ZjU5OTgxZjc4MTdkYWMxMTU5MDg5MDQyOWIzNjQ5N2VhZjQ1MjcwIGxlZ2FjeS10cnVuaworMzA4NjggMTgwMDY3YzI4ODBmZWU1YzRkNDZjYzgyMjRkYzM0ZTk4ZDllMTcxNiBsZWdhY3ktdHJ1bmsKKzMwODY5IDIwNTVkMDM3Mjk1Y2YwOTk4YzBjOTBjM2NhZGJmYjEwZTNmNzIxY2IgbGVnYWN5LXRydW5rCiszMDg3MCAzMGRhOGM5NmZkMjllZjM2NWI4OGZjOTZhZTI5NTA0YzA4YmJhNzNlIGxlZ2FjeS10cnVuaworMzA4NzEgNWFjZjY5NjdkNmRkMzcxNDg2MGRjM2RjOTZmMTkwYzAzOWY4YWU5OSBsZWdhY3ktdHJ1bmsKKzMwODcyIGRkYjUyZjU2NzNkYjVhODUzZTcyNWZlYjY1Zjc4ZWMxYjE4OWRlODQgbGVnYWN5LXRydW5rCiszMDg3MyAyMjk5MmZhNTE4MzEwZmVmMThhODVjMTg5OTQwODE2MmQzMTI2OGI5IGxlZ2FjeS10cnVuaworMzA4NzQgYmJmMTQxODViZjFlN2U2YjZkMjkxZTExODRhYzU4OGJlNDEzMjExNiBsZWdhY3ktdHJ1bmsKKzMwODc1IDQwNjc3ZmU4NTAzZDMwZTBlMWMxYjhlZWU1MmUxYWQwZGViOTE3YzUgbGVnYWN5LXRydW5rCiszMDg3NiAyN2FlZGNmNDZiY2M5MmZmM2YxNzk0ZGRjYjgxMTc5OGViMDMyNzNmIGxlZ2FjeS10cnVuaworMzA4NzcgNDI4YzhhNDIzMDQzZWFkZDM2NWI2YTg2MzNhNjliM2E0ZTM1NjIwMSBsZWdhY3ktdHJ1bmsKKzMwODc4IGRjNjExNjI3ODI1OTNkOGM3NDBkZmUxZDg4MGI1MzEzOGNhMmVhMjggbGVnYWN5LXRydW5rCiszMDg3OSA4ZGIyZTc0ZGRiMGU1YWE0ZjRmMGVjZmNlZWM4YzhmMjQ3N2I3MDkzIGxlZ2FjeS10cnVuaworMzA4ODAgYWZkMWRjNjJlMzU0ZGVlMzNhYTM5Y2M0MzhhZTJkOGY1NjI4YmFmYiBsZWdhY3ktdHJ1bmsKKzMwODgxIDU4YmFkNzY5Nzc2ZTU5OTllNGFkMzMxM2Y3ZTNhMjAzNjI4ZDk4NjQgbGVnYWN5LXRydW5rCiszMDg4MiAwNGU0NTY1ODMyYmRkMzljOGI0YjYzYTRkZjFmZmQ0MWU5MmFjZjBkIGxlZ2FjeS10cnVuaworMzA4ODMgMjczYjJiNDliZmQ4Njg5OTg2MDRjNGZlMmI0ZjZmMWNjODZkNGEyYiBsZWdhY3ktdHJ1bmsKKzMwODg0IDg5MWVjNGQyNjZkMTc4NjdlYjBjMzNjMTg0ODk2NDFhOTUwZThhMjAgbGVnYWN5LXRydW5rCiszMDg4NSA0YTQ5YjVhYTVkMjEyNzE4YzQxNGY1ZTJmOTE3ZGNhNjIxNGYzMjc5IGxlZ2FjeS10cnVuaworMzA4ODYgZWIxZTUyOWZkZmRmMGQ0YjljMmQyMjkyNTg4NmQzYmZkOTNhMDhjMSBsZWdhY3ktdHJ1bmsKKzMwODg3IGZkZTc4ZDgwZTA5ODlkMmEzNDAzYWYzYzk1ZDVkM2RhZDkzZGI3ZmUgbGVnYWN5LXRydW5rCiszMDg4OCAwMGYyOTRiZjgyOTlmNjE3NjIzMWU5ZjY1MTA5MmNlM2QyYWRjYmQzIGxlZ2FjeS10cnVuaworMzA4ODkgNjE0N2JjMTRkMjc3YjZkYmQ1NmFjZWRkNzA3MWMwZGQ1Yzc0ODk0OSBsZWdhY3ktdHJ1bmsKKzMwODkwIGZmMGUxZWQ5OThkZWRhYjNjZjcxNmU1ZTBhMDk1OGEwZmYzZTYzMjkgbGVnYWN5LXRydW5rCiszMDg5MSBjMWRjNTBkZjU3OGNkY2ViYTVmMjVkMjQ2MWFlZDcyMGQxMzM5N2I2IHJlbGVhc2UyMi1tYWludAorMzA4OTIgMTNiZWVhMmQyZDI2YWExYTFmNTFhMWFjODRmYzQ5NDM0NDAzOWY3MiBsZWdhY3ktdHJ1bmsKKzMwODkzIDljNGI0MjA3ZTk3OWRjM2JmYzA0NjA5YTg0MWYxZTFmZDI5NGZhYTAgbGVnYWN5LXRydW5rCiszMDg5NCA1YjNmYmZmMDVmZmRhOWIzZmNlMjA5YmU3MGQ5ZjJiMTEwNDU2ODUzIGxlZ2FjeS10cnVuaworMzA4OTUgYjcyNTY0OTZjOWIwMWM3NDYzZmExZDFiOTg0OTJmM2ZiOTRlZGJjOCBsZWdhY3ktdHJ1bmsKKzMwODk2IGQyOWM3OGQyN2M1ZTNiODhhZDhmMTllMTc4NjliMzE5MzU4YWI0MjkgbGVnYWN5LXRydW5rCiszMDg5NyBiZTE3OGFmZDQxODE0NTExZmVhODhlNDQ2NzU0NDgwZmQyMTdhNjJkIGxlZ2FjeS10cnVuaworMzA4OTggZTJkNzlmZmEyOTI4YzQwZWFkNGUxNWRkYjc4MWU1MTYwYzU4OGM4YSBsZWdhY3ktdHJ1bmsKKzMwODk5IDg0MGU5ZmVkOTA4YTFmYjg1ZGZlZDVlMjE1NTZmOWNlNDVlNDRjNjcgbGVnYWN5LXRydW5rCiszMDkwMCBmM2JhYmFlZGUxODlhMGI2YTNhMmNmZDdmMjdhOTJkYWMxMjk5Yzg0IGxlZ2FjeS10cnVuaworMzA5MDEgODE1NjljY2RlNWJkZjAwZGY2NWVmNzVmZGRlMTRiYzg4NGU3M2E5NCBsZWdhY3ktdHJ1bmsKKzMwOTAyIGE0NTc1MzFjMGZkNDk1MTA3MjE3Njk1MGUwNGYxYzE3N2YwZjc3MzQgbGVnYWN5LXRydW5rCiszMDkwMyA2Mjk2MDNmNjQ0MTI2Y2EzNTJjMTE5OTcwY2RkMTczYmMzN2Q4MDA4IGxlZ2FjeS10cnVuaworMzA5MDQgOGQ4NjlmOTIxZjIyNjQyMTI3Zjk5ZjAyODM2MDRmMmIxMTllMzYwZiBsZWdhY3ktdHJ1bmsKKzMwOTA1IDliY2Y4NWQwMTM1YzJlNzRhZmU4YzgxNzIwMzRhZDA2YzllYTdkOTggbGVnYWN5LXRydW5rCiszMDkwNiA1MTc0YjRhNzFlNmU0Yjc3NGZhOTVmZjY4ZjI3ZTU2Y2JiOGNlODY3IGxlZ2FjeS10cnVuaworMzA5MDcgZDM2M2Y4M2MyODQ2YTUyZjU3MjNlMTU1Y2QyYTY4ZTEzYjAzMGY3YyBsZWdhY3ktdHJ1bmsKKzMwOTA4IDkxYTU3MzI0M2Q1ZDc5ZWFhNTA4Mjc4Y2FiYWRhNTU4ZTk2OTEzMDAgbGVnYWN5LXRydW5rCiszMDkwOSAwMTU2NDdjN2UxODQzMzY0YTY2YTNhMGY5YTk2NWEwN2YzNjg2N2E5IGxlZ2FjeS10cnVuaworMzA5MTAgZjljNDhlZDY3YTkzYWQ2ZWE3OTA5NTA0NTBkMjZjODg0ZmVlYWY3NiBsZWdhY3ktdHJ1bmsKKzMwOTExIGU3Y2RiNTAzZDFlMDViYWU5MTg0YjM3NGQ5M2NiY2JmN2NlYjJmZjcgbGVnYWN5LXRydW5rCiszMDkxMiBhYTk0YzgyMGIzZWQwMmRjZDliNDYyZTRiNzk1YWZlNjBiNTBjMjE1IGxlZ2FjeS10cnVuaworMzA5MTMgODgyZTNlZWFjM2RkN2EzMDYwNWEwNmExNmY0ODlhYTc1YWE5N2UxNyBsZWdhY3ktdHJ1bmsKKzMwOTE0IGU3Y2QzY2MxMTJkMzAwMTA5MjQzNTM3Nzk3ODkyY2FjNTMzYTYyMDMgbGVnYWN5LXRydW5rCiszMDkxNSAyOGIzZDlhOGVlMWEzMzZhYTk2YjAyNTVjOGJkODY1ZTU1OTEzZWU0IGxlZ2FjeS10cnVuaworMzA5MTYgZTdiZTY4NjgwMzMyNmU0ODA4MWYxYzRhZDE5NmM3ZDFmMDljNDMyNCBsZWdhY3ktdHJ1bmsKKzMwOTE3IDEyMzU5ZTUzNzUxMmMzMjhjZDIzZjgyMWRkZjFkOTkxNmY3ODI0YTggbGVnYWN5LXRydW5rCiszMDkxOCAwMDY0MDcxNGE1OWE1ZDg4ZDhjM2Q3MTYyMzg5MjVmNjA1YTIzOTU4IGxlZ2FjeS10cnVuaworMzA5MTkgZjFkZDkwMzU3ZGNiYTE3Y2Q4MjljYTBkNDI0YjhlYjk3N2JiNDgxNCBsZWdhY3ktdHJ1bmsKKzMwOTIwIGVhZjNmODA3MDBiM2Q1ZDE5Yjg5YmZhYjg5OTc5ZTIxNjZhMGY4MzQgbGVnYWN5LXRydW5rCiszMDkyMSA0Nzk1OGM5OTQ1MmRlMzZlMmY4ZTAzYzNjY2FlMjhlZjc3OGE5YjdmIGxlZ2FjeS10cnVuaworMzA5MjIgZDE2YTk3Nzc0NmEyMzdjNjI0ZTQ5NTM5MGYzODRlMjU0ZTYyYjdiMSBsZWdhY3ktdHJ1bmsKKzMwOTIzIGRhMGM5OTEyNTVjMmVmNjQ4NDMxZDA0ZmQwMWVhZGY4ODZjNzYyMDYgbGVnYWN5LXRydW5rCiszMDkyNCA0MTcyYjI4NmQ2NThjN2ExYjhhNWUxNjViMDc1ZWVlYjNhMWNiZTdlIGxlZ2FjeS10cnVuaworMzA5MjUgZTk0NWEwM2VlNTZjNjllZjU3ZDg2OWRhYTBmOGZiZTY1ZmI1MWYxMSBsZWdhY3ktdHJ1bmsKKzMwOTI2IGFlZDJlZjk2ZWQ1NGQ3OTU5YmM1MzFiYjIwNWJjMmIxYmYyZmMxYzIgbGVnYWN5LXRydW5rCiszMDkyNyA2ZWI1ZTFhMDliOTVkNWU2YTkxYTczZDA2NjFlMTJiODEzMjkwOGVlIGxlZ2FjeS10cnVuaworMzA5MjggYWNlZGVjZDIwMTI2YWRmYjMzN2Q0MTFjMmU5NDcwYWJiODAxZjdmYSBsZWdhY3ktdHJ1bmsKKzMwOTI5IGNhYTZkZjllMDg4MDVkY2M3NTRhNzNmNDBjMDk3ZmRlOGEzNjU1ZDcgbGVnYWN5LXRydW5rCiszMDkzMCBkMTliYzNiMTgxM2NiNTE4Yzc2YmRlYTIyNWY2MDIxMTEzOThmYmZmIGxlZ2FjeS10cnVuaworMzA5MzEgZWE1ZWUzZTdiZmIxMGE3OGZhODg3MTk5NzcyNmQ0ZGYwMWE5YmM0ZiBsZWdhY3ktdHJ1bmsKKzMwOTMyIDFmZDA0YzM3NDA5YWIzZWI1NDdlMDBkNWYxZDlkMDg1MTI2MDlkM2YgbGVnYWN5LXRydW5rCiszMDkzMyBhMjRmZDQ1YWNlYjE4YmZiMjE0YTQ5Nzk3YzAzYzBkNzcxYjY2ZDZjIGxlZ2FjeS10cnVuaworMzA5MzUgNTZkODNkMGM1NWI2MGZjMTdmOWJkNjc0NDE0ZWMwYWZhZTJkODNiZiBsZWdhY3ktdHJ1bmsKKzMwOTM2IDU1MGMxNWM0OTE5YjE2MjgzY2M4MGJlYjRhNGFkODUyMGIyNWEwMmMgbGVnYWN5LXRydW5rCiszMDkzNyA1YzEzM2QxM2YzMjU2MmNjNDJmNzYxODI0MWI2NjBkODRiZTQ2NzUyIGxlZ2FjeS10cnVuaworMzA5MzggOTkyNGYyMmQ2NjA0ZTQyOTRiMzBiNmY5NmZhYjkwNmUxMzYyZDMyZSBsZWdhY3ktdHJ1bmsKKzMwOTM5IDI3NDJlYTkzYWIyMzNhNDg4Mjc2MTQ5ZmQzZDYxOTQ3NTZlY2MzOGMgbGVnYWN5LXRydW5rCiszMDk0MCAyMGRmMjRhMTMzNDkwMjllNmEyNTk1ZGYyNmM1OWZhYTBmZWRjMDE1IGxlZ2FjeS10cnVuaworMzA5NDEgOWU0MzBhY2NjZGI4ZjVjMDFlMDYzYjhhOWQyN2VlYTJlZWExZTI5MSBsZWdhY3ktdHJ1bmsKKzMwOTQyIDAwOWYzYWJiZjcyNjJhMjVhZmU4Y2ExZDAwMzIyYWUwMWZhNWNjZTggbGVnYWN5LXRydW5rCiszMDk0MyBjNzRjZWEyNDM3MmU4ZjVmMzIxY2ExM2E2MGU2MzlmZWFmMTkyOTQ3IGxlZ2FjeS10cnVuaworMzA5NDQgN2QzYzZhZDRlM2VkYzljMmNhZjI5YTgyM2Q0NGIzMzgwOGNlNjQxNyBsZWdhY3ktdHJ1bmsKKzMwOTQ1IDBhZWFhM2QxZTBmZjc5NDJjMTdhNzZlZjQwYjc2N2M4ODBlMjRiMzMgbGVnYWN5LXRydW5rCiszMDk0NiAyNGM4ZmJlYzc2MWYyMzFkN2YzOGYyMjg0OWI3ZWQwNDBiMDRjMzk3IGxlZ2FjeS10cnVuaworMzA5NDcgM2MzZTRjOGM0YTlkZmYwMjZiMmNjMTZjM2NiMDdjMjczMDkxN2MzMSBsZWdhY3ktdHJ1bmsKKzMwOTQ4IDkzYmE0MmNmNGU1M2FjZjhiMTEyYmVjY2E5ZDViNWMxOGUyZjM1Y2EgbGVnYWN5LXRydW5rCiszMDk0OSBmYTI0NTM4Zjg2NTBhNTYyYzU1MDE0ZTBhMjJkYmJhMGExZDZkYTk3IGxlZ2FjeS10cnVuaworMzA5NTAgZTI2YTJmN2YyMjRiNTlhNDIyMzg2MzlkNzQ0ZTMxYTdhYjQ4ODMxNiBsZWdhY3ktdHJ1bmsKKzMwOTUxIGJmMGJjODQ4MTUwMjE0M2IxYzdkYjIxMGViY2ZjOTgxODAzM2E4NWQgbGVnYWN5LXRydW5rCiszMDk1MiAzY2Q5ZGRkNTU2MmVhMDk5YmEyYWI2YjU4Y2JjYWNkMmFkMmFiZDg3IGxlZ2FjeS10cnVuaworMzA5NTMgYjQ2NWM5ZDIxOTZhM2NiYTg3OTNiZmUzYWIzYTFiNzhhMDMzMTgwNSBsZWdhY3ktdHJ1bmsKKzMwOTU0IDFhZTBiMTQyMzcwZTQwODRlZGE0Y2IyMjA0OTJlM2Y2YmNjYTAzOWUgbGVnYWN5LXRydW5rCiszMDk1NSBmOGE5MDA4NWFjYzQxZTlhMDYxMmJhYjc4YzhiYWJkNjMyNDRmZmY1IGxlZ2FjeS10cnVuaworMzA5NTYgNDA0NzgyMTQxOWI1N2E4ODU5MGMxOWQ4YjdlMTBiNGI4NjM2YzMzMSBsZWdhY3ktdHJ1bmsKKzMwOTU3IDM1NzM2NTkxZGMxZTdhNTMxZWMzMmQzYzk5OWQ3NGIwMzdhZDZiN2MgbGVnYWN5LXRydW5rCiszMDk1OCA3MTE2Y2I1YmFjNTA4M2Q0OWIyMmZiNWNlMmY1OWNjZGVjZWY2MjFjIGxlZ2FjeS10cnVuaworMzA5NTkgNDMwZWQxYzhlMDcxZGFiMDExNTQwZjNkYTljMjhjOWQyN2Y2MGU4NCBsZWdhY3ktdHJ1bmsKKzMwOTYwIDYwZmYxYmE0MjhjM2ZhMGIwNjRkZTc4MjkyYjkwMDUwZGQwNzZmNDIgbGVnYWN5LXRydW5rCiszMDk2MSA5MWFlMjkyYzNhOTdmMGNkMzhhMDJiYzNiMjlmYmI1YjE5NzgyMmE0IGxlZ2FjeS10cnVuaworMzA5NjIgMThlOGVkODBlOGQxNzQ4ZGZmNWYzZmI3NDBhM2IzMGNkNDVlYmYyYiBsZWdhY3ktdHJ1bmsKKzMwOTYzIGQ5ZDI0Y2UxY2JmNjU4ZDA3MzNhYWJkODMyOTA2NmRjMDc0MzU3NWQgbGVnYWN5LXRydW5rCiszMDk2NCBlNGE1Zjc1MzUwOGJjNTBiMDE1NDQ3YTE0ZGI1NmJkOTI4OGE2MGE2IGxlZ2FjeS10cnVuaworMzA5NjUgNWRiMmNmM2U3N2RiMzNjOTgwZmQwZTE0OWM4MGY2NzY2YjQ3ZDkxYiBsZWdhY3ktdHJ1bmsKKzMwOTY2IDZiMGRiZGUwZmVkNzE1YTI5OGNiNzQyMTFhZWQxZGZmNTljMjJlZjUgbGVnYWN5LXRydW5rCiszMDk2NyA4ZjEzNzI5YTk0YTk2NmExYTE4Y2E0N2Q4MTFkYzQ2NTk4NDRjMzUwIGxlZ2FjeS10cnVuaworMzA5NjggMWY2MzI3MTQwZmMyM2NmYjgwN2Q5ZjkxNmUxMzVlZmI5MTU5NGNmNyBsZWdhY3ktdHJ1bmsKKzMwOTY5IGExNjI2MmJjNjA5OGRkMDgwMTdjMzYxNjhmODRkNDNlMmJlMmRiZDAgbGVnYWN5LXRydW5rCiszMDk3MCA5MjVlZGY4ZTAwMGNhN2RmYWEyMTBmNzg4NmEzMTM0ZmMyOWRhYTE4IGxlZ2FjeS10cnVuaworMzA5NzEgZDhjMmM0MGIzODZiMTlhMGQ2Nzg2ZWViODcxOTExZjQ3MWJhNTU1OSBsZWdhY3ktdHJ1bmsKKzMwOTcyIGIzY2JlN2EwMTQyYTc4ZDk2NzU2OWU2YmQ3MzJjMmFiNjM0ZmU4OTAgbGVnYWN5LXRydW5rCiszMDk3MyAwYTQ3ZDgzMmE2NGI1YjRmMTNhMjBhYzg4NDI5Y2RiYTY1YmYzNjE5IGxlZ2FjeS10cnVuaworMzA5NzQgNDAxNWEyN2ExZDEzZjJjNzRkNjNjMjJjZjFlYmExOTQ2OTZhZWMyYSBsZWdhY3ktdHJ1bmsKKzMwOTc1IGEyMzBkMTIwMGJjMzViM2QyNjY1YWZkM2E5OWNiMTY4ZDA1Yjc0ZTYgbGVnYWN5LXRydW5rCiszMDk3NiA3ZmI1ZThhNTQxYWI4ZmNlNzNhZDY1OWY0ZTY4MjExYzBlODY5NTI2IGxlZ2FjeS10cnVuaworMzA5NzcgMzUwOWFkMDdkMTU2YWNiNmU1NjgyYjNhMWM0NGYxYjFmYTMwOTE2OSBsZWdhY3ktdHJ1bmsKKzMwOTc4IDlmZTMyMTU0ZDI4OTAyZWU2NWY3ZjkwMDlmNDQ1NGMwZmZjMzA4ZTggbGVnYWN5LXRydW5rCiszMDk3OSBiMmNlOWM2MzdhMmJjNjAyYzgyOTA0NzI1OTY2NWUxNWFlYzc0MTJlIGxlZ2FjeS10cnVuaworMzA5ODAgMTE1ZWU0MDUxOGE4NGRjYWRlYmIxYjhlZTA4Y2NhY2Q0YWE3ZmUyNyBsZWdhY3ktdHJ1bmsKKzMwOTgxIDYyYzY2ODkzYzJkYmEyYTQ1MDNkNDY0YTFhOTNhZjhlYjZhNjgwMWIgbGVnYWN5LXRydW5rCiszMDk4MiA0YzAzZWYwNmMzZmY3MDRmYTFkMGI4YzI4YjM2YWQ3NTAyMDUxZjUxIGxlZ2FjeS10cnVuaworMzA5ODMgZWE0ODA0MDZjYzY1NjIxY2YwZWU2MmQ1NDdlNjQzOGIzNWNkNmFmYSBsZWdhY3ktdHJ1bmsKKzMwOTg0IDA1NTRiN2M1ZjZkN2QyNjkyMDM5YzAwZjI1MmYxMWJhNDJiMmYyZGYgbGVnYWN5LXRydW5rCiszMDk4NSA4ODNhZjI4YjlhMGQwNjYwZWZiYjJmOTg3MTFjOWFiOWM5NDM5ODgzIGxlZ2FjeS10cnVuaworMzA5ODYgMjZhNzkyMDA3NjY1MjViOTUyZTZhZmJiNDdkODBkZjQ0OTkyNjExZCBsZWdhY3ktdHJ1bmsKKzMwOTg3IDJlZTk3NDJhYWRkODkyMTQ3ZTU1NDMwMjJjMDJiZTI2ZjEzM2I0Y2MgbGVnYWN5LXRydW5rCiszMDk4OCBlZDBkNGFlNmM2Y2U0MDkxODhjMDVmMWI2YzJiZDg5MTIxOGMyYjM4IGxlZ2FjeS10cnVuaworMzA5ODkgOGRjZTdhNWU1ZmNjZDI3ZWM1MGRiMjAxNWQ0MjQ4MmNmMTM5ODc2MCBsZWdhY3ktdHJ1bmsKKzMwOTkwIDc2NGRmMmZkYzljNjM2NzVlYzUwYTZkMmUwNzJjMWVlODc3MDU4YjAgbGVnYWN5LXRydW5rCiszMDk5MSBmNDkxMWY3YWFkMDI1Mzg1MjQwNmJjZjAyMGYzNDBiNDJjZTQwOTFhIGxlZ2FjeS10cnVuaworMzA5OTIgNmZmYWZjZWY5OGZiMzdmZDVmNDIxNTc5NmU2ZThjYTIyNjIwNzVlZSBsZWdhY3ktdHJ1bmsKKzMwOTkzIDVjNzU0OGJmMzc3YjIyODhjNmYzODU4ZWQwMGI4M2VhMDg0ZDJiMjkgbGVnYWN5LXRydW5rCiszMDk5NCAxN2Q4N2M1YmE2ZTRiNzE1MjAwNzJlM2Q3NTYyNmNhYzgxOGQyYjA0IGxlZ2FjeS10cnVuaworMzA5OTUgMDVmN2UxYzY1ZDdlODM4M2I2MzE3ZDkyNWMxODg1MDExNGZmY2I2NiBsZWdhY3ktdHJ1bmsKKzMwOTk2IGY0ZThhNmQ0YWE3YzM3ZTFiZjY0NGQ1MGI5OWJiYmVkYjhjMmNhNTMgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMwOTk3IGY4ZDI4ZTgyYzRjYzk5YTNiZTEwMmE1NGFlOWU2ODhkMTY2ODljYWIgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMwOTk4IGRlNDA2MTU4NGM4MzkxNTcyMjVmZDhjOTQxM2U2N2VlZjE0MzJkOTcgbGVnYWN5LXRydW5rCiszMDk5OSBmY2NkOWU5NDMyMTFhZDYzYjNlNjY2NzEzZTFiZTBiNjQ2NWI5YWI1IGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMTAwMCBiNzljMWFmZmYxMTI4MzUxYTg4MjMwMjg3OGMzZDMzNzQ1YmNiZjFkIGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMTAwMSAxNTRiYWMwYjI2YTU0ZWMxOTA5MjZjN2M4YmI1NTRiNmE2ZjNiNzNiIGxlZ2FjeS10cnVuaworMzEwMDIgMzEwMTRmYmUyMGRiYjA4ODMwMTQxZTZhNzRkNzQ0NTY3MDJkOTllNCBic2RkYi1ic2RkYjMtc2NoaXpvLWJyYW5jaAorMzEwMDMgMzhjN2MyZDRjZDVhY2Y0MzVlM2E1NjQ0MDMxOWJkODJjMjU5NDZkNyBsZWdhY3ktdHJ1bmsKKzMxMDA0IDkyNGFkZTgwMTA0YjE3Mzk2NjZhZDUxNzE0M2MwOWM5MDQ2MzVkMTcgbGVnYWN5LXRydW5rCiszMTAwNSBiYTkzMTBmZWY0OWRkODI5MzhkZWY4NzhhZDViMTBjYzdhMjcxNTQ4IGxlZ2FjeS10cnVuaworMzEwMDYgNmU4OWU4MGU2YTI2N2M1MTY0NjdkYjJhZjViODAxYWQwZTJjYjU3MSBsZWdhY3ktdHJ1bmsKKzMxMDA3IDcxMmIwMWQ1MmU4Y2QyYjNmOTViYThlZTk0NGEzYjI0ZmFjZDg5NDMgbGVnYWN5LXRydW5rCiszMTAwOCAxNGIxNzU4ZGZkZGVkYWNkYTA1Yjg1NmYyODU0OTE0ZjAyODBlMDZiIGxlZ2FjeS10cnVuaworMzEwMDkgMjlmZDlmZGFmNTJhOTA1YTc1NzQ3OWY4NzllMTE3NWJiOThlMTQ4NiBsZWdhY3ktdHJ1bmsKKzMxMDEwIGVlMGU1MTU0MDdmZDk3OWRlMzE4YjFmNWE5N2YyNGJjMDIyNjU1MTggbGVnYWN5LXRydW5rCiszMTAxMSA3YzhkZmQzZjRhZTkwNmUzYWExMDc3ZTI3MGMwZDMwMWM3MmI0ZTliIGxlZ2FjeS10cnVuaworMzEwMTIgZjkyODRiNTdiNDIyOWFlZDg2YzkxZjQ2ZmNiY2JiOTVmOGY5NmVhMSBsZWdhY3ktdHJ1bmsKKzMxMDEzIDViYTc5MzRhN2JhMDIxODRjNTJlM2Q1MDU3YTJhZTUzMTk3Yjg4NGYgbGVnYWN5LXRydW5rCiszMTAxNCAzNmY3MWZlZjViMTA4ZmM4MDMyMzBiZmEzMTBmZWZkYmRkMTU4OWZlIHJlbGVhc2UyMi1tYWludAorMzEwMTUgZTk1Nzg3NDdmNDNkZmU2NmI3MDY1NDQ5YmZlNmQyZThhN2YxNmNmOSBsZWdhY3ktdHJ1bmsKKzMxMDE2IDA5MDRkODc4YjhmMTg3NzdkYWY3NjU3OTE3ZDY0YjZjNGFmNjJmNTEgbGVnYWN5LXRydW5rCiszMTAxNyBlOWNkMjI4MTA0YTEzMGJmZDYxMTg0ZTIzYTIxZmZiMjkzODMwNzU2IGxlZ2FjeS10cnVuaworMzEwMTggM2JjNzFkMjM0YTI5ZTk4OTkyOThlOWI2YjNiYjUyMmM0NWNiMGVjZiBsZWdhY3ktdHJ1bmsKKzMxMDE5IGI4M2ZhOGZhMTIxZTg0ZDgzM2U2MGE1OWZmZmJkYmVlOGI2ZTVkZWMgbGVnYWN5LXRydW5rCiszMTAyMCA0MjQ3ZTY0MGUyYTZlYjJhNThjNzlkMDBiYWJiNTg4NTkxZGUxYTZlIGxlZ2FjeS10cnVuaworMzEwMjEgYTg5YzA3N2U2NDhhMThmY2QyZTQ2YjQyZTg0NzZhZmYwM2ViMTkwMSBsZWdhY3ktdHJ1bmsKKzMxMDIyIDdiN2QzYjkwNjM2MzBlNGFmZmQxNGY0MDc1NDkzMTAxOGVmNjBkOGUgbGVnYWN5LXRydW5rCiszMTAyMyAxZjE2YWJmYWY2M2U5ZjBlZTQ4OGE4OWVjZTY5M2I3ZmJlMGI5MDhiIGxlZ2FjeS10cnVuaworMzEwMjQgYWRiYzNmZThjODFjYzNhM2EwYTk1MWJlOGE0OWZlM2M5ODJkMTlkMSBsZWdhY3ktdHJ1bmsKKzMxMDI1IDVlNDM1NWQ4MGRkMTU5NzM0MGZhNzZiMTcwMzFmOGVkMGQ1MzA5YTkgbGVnYWN5LXRydW5rCiszMTAyNiBlOTA1YjIyZTM5MmJhNThmZWY5MzVlYjY3YmIzZTYxYWIwOTg5YWQ1IGxlZ2FjeS10cnVuaworMzEwMjcgZDg3NTBlMGQzZmI4ODg4MzZhYjc4MzhhODA2NWVkN2QyYTBjNjI5YSBsZWdhY3ktdHJ1bmsKKzMxMDI4IDRjMzVhNjZmY2U0ZGYwZWQ5NWViOTM5MDQ0N2FmYmRiMjUzYTllMTMgbGVnYWN5LXRydW5rCiszMTAyOSBhZTMxZmNiN2I1OGU0Y2NkODgxMTIxZjA5ZjI5YjAzMDRmNGZkMjcxIGxlZ2FjeS10cnVuaworMzEwMzAgMDkwYTUwY2IyNjkwMGUwODllNDUyN2YzNDFhYzZiYTNhYmQzZGYzMSBsZWdhY3ktdHJ1bmsKKzMxMDMxIGU0MmUzMDI1YmFlM2I0OWE1ODc3MjU5ZDlmNzRhODQxMTZmY2E0ZGUgbGVnYWN5LXRydW5rCiszMTAzMiA2MjA1MzkxNjVlNTMwOGFjOWE4NDgwYTJlZTdkZTEwODgzNjRhZjMzIGxlZ2FjeS10cnVuaworMzEwMzMgMGRkOGQ4YTc2MDE1ZWYwZGJiOTZiZWZkOTJlZDdmZmJkZjU4NjI2MCBsZWdhY3ktdHJ1bmsKKzMxMDM0IGZlNDBmY2Y0OWVlNTY2ZGZiNWZjMjkxODkxNzBkMTU2NmMwMTZlMjkgbGVnYWN5LXRydW5rCiszMTAzNSBiNDgwYTRmNzA3ZjYxNzhiMjA2MjY4MDFmZWQwNTZhMzRlM2YxNzM0IGxlZ2FjeS10cnVuaworMzEwMzYgZDlkNTdmNWY5OGNkYTcyMmI3ODRhZmY5ZGU4OGMwZWZjYWYzMjg1NyBsZWdhY3ktdHJ1bmsKKzMxMDM3IDE0Mjc2ZTQzZWNlNjA0NzlkYWM2NjcyMTQwMmU0MWQ5YzlmODU1MDcgbGVnYWN5LXRydW5rCiszMTAzOCA0NGY0NjU2ODM5MjdiM2NmYzZkYzNjM2E2ZjAzNGE0MGQ5OTYwZTViIGxlZ2FjeS10cnVuaworMzEwMzkgMjBjNTgxYzIzYmNlMzMzNjg2NTI0MzQ3NDkwZDQ5MmRhNTRjZjkxZCBsZWdhY3ktdHJ1bmsKKzMxMDQwIDBkZTE0MjUyZDI2Y2U2ZGQzYzE0MTFmYTdhY2EyMDFlNWM4MTQ2OTkgbGVnYWN5LXRydW5rCiszMTA0MSBhMmQ5NmU3ZDkxYTFhOWY5ZWIwOTE0NzM3NzU4ZjQzNWU0MzkxZmY5IGxlZ2FjeS10cnVuaworMzEwNDIgYjFkMWZlN2ZiNTE0YjE3M2E4MDhjYTVkYjk2OWY1YjQwZWQyNjUwOCBsZWdhY3ktdHJ1bmsKKzMxMDQzIGQ2MmJkMjQwNzI5MTlhYjA0NTNlNDdmZmNhYzIyY2U0M2QyOTMzNDYgbGVnYWN5LXRydW5rCiszMTA0NCAwZTZkY2UxZWMyMzFjZDQ3YzQzMGQyZjFmNWIyOWM0YWYyZTdlZDI2IGxlZ2FjeS10cnVuaworMzEwNDUgNWYzMjk0MmEyMjVhZGE5ZWE1Yjk1YWRmODBiZmRiNzViMDA5OWE4YyBsZWdhY3ktdHJ1bmsKKzMxMDQ2IDUxYWJiNWU4NjIyNjI1NTVmY2U1MjhkM2E0MjllYTc0NDMwN2I3YzYgbGVnYWN5LXRydW5rCiszMTA0NyBiMmI1NzQxMThmZmRhM2ZkZjc0ZDZhMmZiZTJhOWZjODc2OTk4YWFhIGxlZ2FjeS10cnVuaworMzEwNDggODFhMmQxODhlYTFmOWY2YTMzZmE4YjQ5NWVlMDc5Y2NlNTBiMGZlZiBsZWdhY3ktdHJ1bmsKKzMxMDQ5IDY3ODZlODZiOGZmMGFkMGJhMjU3MzgyYmQzZmFhYTVjOGJmMmNlNGMgbGVnYWN5LXRydW5rCiszMTA1MCAxN2JmZDVkYmMwZjE2ZGM4NWMxNmIyMDg4YWNjNDI4MDdkNjkzMjM1IGxlZ2FjeS10cnVuaworMzEwNTEgMGY5ZWI4NDEzYjYxYjRlNjI1MWU0OWYwNzc2MjU5NDdiY2IyMmEyYSBsZWdhY3ktdHJ1bmsKKzMxMDUyIGIxNzNhMmEyMzA4MjVhNDFmYWIxZGFmOGQwYzU0OGUzYjRmMmI5NzcgbGVnYWN5LXRydW5rCiszMTA1MyBkNWY0N2UxNDY1ZDY2ZGU1MDMyODI5YWJiZTI0ZTM1MGU3NzJkMDE4IGxlZ2FjeS10cnVuaworMzEwNTQgMGJiMTU0ZmE4MDQ3YzhmMGZjODAzYmVjYWY2YTM5NWQxNDFiZTZmZiBsZWdhY3ktdHJ1bmsKKzMxMDU1IGRkZWU4YzE1ODMwMWM2ODNjZmI5OGU1N2Y5NmZkMjY5ZWZjOTA1NTIgbGVnYWN5LXRydW5rCiszMTA1NiAyZTE4ZGJjZDllMDRjYWJkNjQ3ZWRjMzJiOWEwY2E3ODhjM2MyYjRlIGxlZ2FjeS10cnVuaworMzEwNTcgNjg5MjU3Y2E0ZDA5MmI2ZDc5ZDg1MjAzNDliNzBkNWRmMTIxOWQ0YSBsZWdhY3ktdHJ1bmsKKzMxMDU4IDY5NmM0MmRhNzg3NTMzMTgyMTEzMGUwODllYjQ1MTQyYmM3ZjYwNzMgbGVnYWN5LXRydW5rCiszMTA1OSA1NzY1ZDUyNGRlNzFlMmFjZGI5ZWRiYjBhM2U1MDJmZWQ0NTU2ZGJiIGxlZ2FjeS10cnVuaworMzEwNjAgZDExMjIzZGFhZjYxZDNjNTEzYmVjYWEwYWYxOWY5MzI5ZDczYTZiZSBsZWdhY3ktdHJ1bmsKKzMxMDYxIDAyZjEzOGM2MzlhMDgzYTEzNzRlMDc0NDY2ZmQ3ZDcyMDg4Y2Y2NmUgbGVnYWN5LXRydW5rCiszMTA2MiA4NDJkNmEyNDQ5N2FlODNhNTM2OTI4MWI1ZWJhZDNhYjBiYWM3YWQyIGxlZ2FjeS10cnVuaworMzEwNjMgOTkwOTlkZWI2MDI2NDBiYjk1NmY0MzEyNjkyZTM5MzZkYzViYWIzNyBsZWdhY3ktdHJ1bmsKKzMxMDY0IDcyYjM4ZDVmZTYxZjlhZmVlZDJhMmM2ZmQ0ZDE2MGU1YTg1NGNhYTggbGVnYWN5LXRydW5rCiszMTA2NSBjYmM4NjAyOGQ5ZjNiYWI3MGFkODI0OTc1YjMxYWNjMDA4OWNmYWQ5IGxlZ2FjeS10cnVuaworMzEwNjYgZmRjNTJiMTE5NzA5MGUxMzI5MGY5ODQzOGU1NTgzNTYyYTY0ODIyMSBsZWdhY3ktdHJ1bmsKKzMxMDY3IDg3OTQzZmFmNGZkMjE2YTYxMDJlMDdkNDk5NTQxYzhhYmM1MTE4ZTYgbGVnYWN5LXRydW5rCiszMTA2OCA5N2IyODE3MDYzNGNjZjE5MmM5YWVmNTZiNTgwODliOTg2NDYxMjc0IGxlZ2FjeS10cnVuaworMzEwNjkgMmFkZDAwOGIxYjdkMDc1ZDMzMDI3NzRiYTk5ZjU1ZmUyZmIyMjY5ZCBsZWdhY3ktdHJ1bmsKKzMxMDcwIDg4Y2VlZWVkNzBiZDE1MWQ1ZWMwOTAxMTEzOWJiZWM5YWMzODRjOWEgbGVnYWN5LXRydW5rCiszMTA3MSAwYzg4MTAzNzNhMWE3NzI4NjQ5MGM5NjFiYjU0NWNmNDAxNDFkNWRkIGxlZ2FjeS10cnVuaworMzEwNzIgZWQyZDIzZDJmZDQxMmI5ZjdlNzY1ZjI2NmExNzA5ZTA1ZDBjOTJlZSBsZWdhY3ktdHJ1bmsKKzMxMDczIGM0N2RlODhhZTg1ZDdlNTQ3YTJmZDkxNmM1MzlkYjVmZjIzOTEzYzIgbGVnYWN5LXRydW5rCiszMTA3NCBmOTgyMmIxOGNmOTE5YzU2Y2JjOWZlYTY1Y2I1ODMzOTkxY2Q5YjM5IGxlZ2FjeS10cnVuaworMzEwNzUgYmQ2M2YyOGNlN2E4YmZkYTEwMDA1YzMwNzQ3ODFiYmI5ZmI0NTE2YSBsZWdhY3ktdHJ1bmsKKzMxMDc2IGNlNzQ4YWZiZDZlZmQyZDRhNzM0MTRiNjIxOTI3N2ZkNWIzZGRlZDMgbGVnYWN5LXRydW5rCiszMTA3NyBjNDI1ZjY2ZGI0NTgyMjUwM2Q5ZWM5ZDQ0ZTI0NTc3Nzk2YjFiZTRjIHJlbGVhc2UyMi1tYWludAorMzEwNzggN2ZjZGVlYjE2ZWMwZDY0ZWJjMmZjODljZGFiNjA3N2Q0ZDYxMDJlZSBsZWdhY3ktdHJ1bmsKKzMxMDc5IDMxODA3ODgwZjU5OTY1OTE0Y2MwMWIxZmNmNTUyZmVhODFjYWEwMGYgbGVnYWN5LXRydW5rCiszMTA4MCBkM2FmMWU3OTMyNDM4OTJiZGJjMmEyMGE1YjNhMWY0NTg3NTFiNmZhIGxlZ2FjeS10cnVuaworMzEwODEgNTBjNzM0MjUwZTA1MjliNjZiNTVkYzI5N2UwYzRhZmViNWYyODU4NSBsZWdhY3ktdHJ1bmsKKzMxMDgyIDY1OTdjMDliMWU2ZGM5ZDAwZDFmMzUyOGUyNzY5OGMzMTY4MDA5NWEgbGVnYWN5LXRydW5rCiszMTA4MyAzYWUwYTJmODdhYTA2Yzc0ZDY5YWI3MGY3OWYwODQyYWVkNjMzMzFlIGxlZ2FjeS10cnVuaworMzEwODQgYzI2N2YyODcyNGRkY2NkZWJjNTMxODhlZGE1ZGE5ZTBjYTcyMDViOSBsZWdhY3ktdHJ1bmsKKzMxMDg1IDI0ZTM0YWJjNjI5NTAwOTczMDY1MGE1MGUxNjdjNTY5MjA2NTBhNDAgbGVnYWN5LXRydW5rCiszMTA4NiA1ZWVmZWM5NGE3ODQ4NTQyYjlhMDZlOGM1ZjIxYzFlOGRkYjhiNzAxIGxlZ2FjeS10cnVuaworMzEwODcgOGQ4MzU3OGRiYTgxNDFkNDZmZmZlMTAyNmFhZDM1ZTE0Njg1YTg0NCBsZWdhY3ktdHJ1bmsKKzMxMDg4IGZhYWJkOTg2N2ZiOGRjNDk5NDBkMzhjMjI5NmRhN2E2YzBhYmJiZWIgbGVnYWN5LXRydW5rCiszMTA4OSA0YWE0ZTZiM2VjYTcyM2Y0MzQ5ZTc0NmY3YjY2MzBkNTYxNzFhM2UyIGxlZ2FjeS10cnVuaworMzEwOTAgM2M4OTA0OWZlNjI4ZDM0ZGExZWFhMWU0OWFhNjUwODEyZTVkYzViMiBsZWdhY3ktdHJ1bmsKKzMxMDkxIGQ0MmQ4M2U1Njg2YzNiOTZiZWRlZTRkM2JjODVkYzg4MTQ5ZDU4N2UgbGVnYWN5LXRydW5rCiszMTA5MiBhYjE0M2FlZDQ5YjkwNmZiODMzNjAwMDNkMmU2ZDc2ZTlhNDg4ZjgyIGxlZ2FjeS10cnVuaworMzEwOTMgMjU2Nzg5YWFhY2Q2NWMwMzIzMmFjMmYxZTE0NDAzOGRhYzI5YzdmNSBsZWdhY3ktdHJ1bmsKKzMxMDk0IDYyMGJiMzU1MWJiNjc0N2E2NjBiNGRlZmFkZGUzZjIwNDU1MjcxNGUgbGVnYWN5LXRydW5rCiszMTA5NSA4NzYzYThmNmMwZDViZWYyZTgwMDI1YzAwNDkxMmFiN2M1NmI0ODIwIGxlZ2FjeS10cnVuaworMzEwOTYgYzA3NWJhMmFiZjdhYmE2ZjZmZGQzMzgwZjdjZjUyM2U1MjYxZDRkZiBsZWdhY3ktdHJ1bmsKKzMxMDk3IGYzM2U2NDQ4NDYyMDgxYzc0Y2JkZTFiYjE4NjliY2NiYjhiYmM0NDUgbGVnYWN5LXRydW5rCiszMTA5OCA3NmZhOGM3OWE4OWQwYTY5MGJjMzVkZTllOWRiNzkyOTJkYjdlNDA4IGxlZ2FjeS10cnVuaworMzEwOTkgYmE1N2MzZGFmNmU5YTM5ZDZlYjAyZDI2MjA1NjlmMzNiMzI5ZWYwMyBsZWdhY3ktdHJ1bmsKKzMxMTAwIGJkOGU2MjIyZTE2YTMyYTNhZjQzMjZiMDEwOTMwMzdhMmNjZDZhZWIgbGVnYWN5LXRydW5rCiszMTEwMSBmMjM1ZjEzNWYzZjhhMjc4NjI5M2E3NjkzOTAxYmEwNDljZjdlMDc3IGxlZ2FjeS10cnVuaworMzExMDIgNjc0ZjNlZWNmZmM1MDY5ZTcxY2M3YWFhYjJmODM2ZGMyYjE1ODY4YiBsZWdhY3ktdHJ1bmsKKzMxMTAzIDAxOTA4NzJlYmNmM2Q3NzQ4NDAxNjNmYzY2NDllMDY0MGQ1M2I4NjcgbGVnYWN5LXRydW5rCiszMTEwNCAzYjlmYjU3ZmFjMzRhMjVkNDk4YTRkNTViMTNjYzRjMjMzYTQ0ZDNhIGxlZ2FjeS10cnVuaworMzExMDUgMTYwODUwN2JjYzNmZjg0N2FmNTYxYjk2YmI2MmYyMTNmNDE5NDk5NSBsZWdhY3ktdHJ1bmsKKzMxMTA2IDliYzFjODRiMjNlNjYyMzY5MzI4MzI2Njk5Y2Q2MGY3OGIxZTg5N2EgbGVnYWN5LXRydW5rCiszMTEwNyAyZjIyN2ZmMTFmNWUzYWVjMTY0YTk1OWIzNDRhZDRjNWM3YmUyODIzIGxlZ2FjeS10cnVuaworMzExMDggNmZmYjVjOGU2NTM4ZWU4NWI4YTJlNDIyNDBhM2I3OWJkYzI1OWZlZSBsZWdhY3ktdHJ1bmsKKzMxMTA5IGY0N2FmMmNkYjk4M2I0MWY1ZWFjYmJlYmYzMTM3MjY2ODUzOTY2NTcgbGVnYWN5LXRydW5rCiszMTExMCAyZDdjMGNiYzgzY2YzZjQ5YjlhMDBhYTExNTNiNDMzY2EzNzgyMDkxIGxlZ2FjeS10cnVuaworMzExMTEgZDFlZGFhYTkzOGZiZTc0ODUyZmY1NTUyYWY0NTNjOWNhNGRlNmUxNyBsZWdhY3ktdHJ1bmsKKzMxMTEyIGEyZGI0MzdkMzE0YjQ4OTM3YmEwYmNlNzg5ZjA1NTU1YzI3MTY0MjAgbGVnYWN5LXRydW5rCiszMTExMyA2NTYzNWM3MjEzNWUxYWNjOWM2NzMzNWJkZmU1Yzc3NmI3ZDMxNDBmIGxlZ2FjeS10cnVuaworMzExMTQgYTA1ODE0MTg0ZThjNmU1MDYxY2YwYmYzMmUwMjE0ZDg1N2FkOWMxMiBsZWdhY3ktdHJ1bmsKKzMxMTE1IDk4MTk3ZWJlNWNjYjdkZWY3OGU3YjQ0Nzc5YmZmOTE2MjY0YzMxMDIgbGVnYWN5LXRydW5rCiszMTExNiA3MjgzMTQwZDQzMTk4NmIyNDNkYWE3MDJhOGYzYjk4YThmY2YzMzI2IGxlZ2FjeS10cnVuaworMzExMTcgM2ViMTBhMTRiYTAwZDk2YjM0MDQ2NGMyZWRjZmIzYjg5ZDE1NWYwOSBsZWdhY3ktdHJ1bmsKKzMxMTE4IGUzZmE4Mzc3ZjMwYzU4MGE1MGI0YjlhZWVkYzY2ZmQwNWFjYjkzY2MgbGVnYWN5LXRydW5rCiszMTExOSA5MzIxMDU2NGJiNDYwNzlmMGQ2MmUxNTQ2MzVmNGU0YmU3YzBkYTVlIGxlZ2FjeS10cnVuaworMzExMjAgZDZiNjVlMzg1NWEyNTAwZDhkMTU5ZTNiNGQ0MzZlZmJmODIxMmQ5NSBsZWdhY3ktdHJ1bmsKKzMxMTIxIDc4ZTQzYjM2ZTc4NDRlYjhkNDU5ZThiOTQyYzZjMzljOWIwNDRlNTQgbGVnYWN5LXRydW5rCiszMTEyMiA1N2JkZjRiYWM0MzVhN2U2NmVjZDVmY2MxN2Y5ZTY2OTA3ZjRiOTI3IGxlZ2FjeS10cnVuaworMzExMjMgZTVkMTgxMTIwMzAzNDkxMTVlYjI2ZGQ3MzEwYjQ0M2M1MDY2YzQ2NiBsZWdhY3ktdHJ1bmsKKzMxMTI0IDkxNWQzMjdhMjE0YTlhZmE5YjZlODQwMWY5ZTE2ZWVjZWNkNmU0ZTMgbGVnYWN5LXRydW5rCiszMTEyNSA3MjIyOGEyNWRhYWEyNTkyMzQ5MDkxMWU2MDg5NjNhNzI2OTY5ZTljIGxlZ2FjeS10cnVuaworMzExMjYgOGU2MGVjODhlY2I4NGQ5MjUzMGQ4MzQ2NDJhMzg5Njk1ZmVlOGI2ZSBsZWdhY3ktdHJ1bmsKKzMxMTI3IGEzNWRmY2E5MzMxOGQxZjllODNjMTc4NmM1YzU5M2ZkOTdhMmZhMmMgbGVnYWN5LXRydW5rCiszMTEyOCBkMTU4ZDEwZWY0YWViMDI3Yjc0NGY1NmFhZTVkM2RhYWFlYTQ5YTNiIGxlZ2FjeS10cnVuaworMzExMjkgMzEzZTk0NGEyYzg4NjIzNmE2ZTE5N2FmYjFjNWE3NWM2M2Y5NDcwOSBsZWdhY3ktdHJ1bmsKKzMxMTMwIDlhM2I4NDQzZDVhNjE2MTVmZmQ5ZGUzZjVmMzg3MDUzOTMxODk0NzkgbGVnYWN5LXRydW5rCiszMTEzMSBjNDIxNGMyMGIyMWRjMDIwYTgwN2Y2MGIxMjNkNDI0OTk0MDhlMWYzIGxlZ2FjeS10cnVuaworMzExMzIgODJhOGNhM2M5MjhjMGFkZTMzZDk3YjIxMWIwMGQzMGViODU5NmUyYyByZWxlYXNlMjItbWFpbnQKKzMxMTMzIDFmYTQ0NDE0OTg1ODlkNTAxODU3M2YyYTUwMjdkMmVjNDRjNjA3NDggcmVsZWFzZTIyLW1haW50CiszMTEzNCA0MmI2MTdmZDljNjkyM2Q3NTcyMjgyYjljMTdkYjE2OGVmZGMxZWNjIHJlbGVhc2UyMi1tYWludAorMzExMzUgMjI1NTFlMWQyYzZlNzBlZDRkNDhiZDNiZTg1OTFlYmRlNjQyYTAyOCByZWxlYXNlMjItbWFpbnQKKzMxMTM2IGNjZmFjYWVjMDk2ODkxOWViYmZlOGJkOTk5M2IwNjYwZTFiZGM3NzYgcmVsZWFzZTIyLW1haW50CiszMTEzNyBiZWIyMDA4YTNjMzI5NWQ3ZTViZjBhMmFhNDg5NWMyYTU1NWY4N2VjIHJlbGVhc2UyMi1tYWludAorMzExMzggYzljY2M5ZDBiYTk5YTg4ZGJlOWVhNDVkOTExYWM0ZmM1OTQ2NTg0YiByZWxlYXNlMjItbWFpbnQKKzMxMTM5IDFkOGM4NjIzNGQ5YzJiZGYwNjQxMDI4ODA4ZmI1OTQzZjBiNDk4NmQgcmVsZWFzZTIyLW1haW50CiszMTE0MCAwNjAyMDc4YmRjZTEyM2IwMmIwMjlmZTQ4YzZjYWU0M2U4NGUyOTRhIHJlbGVhc2UyMi1tYWludAorMzExNDEgMDcyOWY4MzkzYjE2MDNmN2U3ZTI0NWQ0MzhmZTgxYmJmZjFjM2Q5MiByZWxlYXNlMjItbWFpbnQKKzMxMTQyIDY0N2MyOTE0N2Q1ZDI3ZWU4NGJiNDNhMWY2NzQ4ZjhiNjNlYjEwZTggcmVsZWFzZTIyLW1haW50CiszMTE0MyA4MzcwMWZhYjMyZmUxMTc1ODk1OGY1ZDc3YTdhMjFhMjU5NTVlOWUyIHJlbGVhc2UyMi1tYWludAorMzExNDQgNDVhZDc3YTQzZDg3ZjY5YmFmNDAyYjAwNWE5MjgzY2Y4ZTA4MGM1NiBsZWdhY3ktdHJ1bmsKKzMxMTQ1IDJhODFjMWE4ODNjYmI1YzNlY2EyMDExZjQ3YjEzZDNmMjBkYjA2ZjQgbGVnYWN5LXRydW5rCiszMTE0NiA5Y2RjMjMzYjcyMjRiMDM3YmRjZDc2NzRiNjA4MGI5YjE5NGNmOGNjIGxlZ2FjeS10cnVuaworMzExNDcgNzRkOTYwNGU5MzUzMTZkN2ExNjdkM2Y1NzkzMjIxZWVlMTRhNzU5NCBsZWdhY3ktdHJ1bmsKKzMxMTQ4IDU1OGQwZjNiNjI1NDhiZjQzNjBmODM1Y2NiMjhiMDg1M2M0NDdlMTQgbGVnYWN5LXRydW5rCiszMTE0OSBiYmQ4YWJhYTBmMzM1MTI4MjNmNmNjYjViMmRmZWU5MzllYzEzNzNiIGxlZ2FjeS10cnVuaworMzExNTAgMTlkMGM5OTk1NTVlOTFjYmY3NzExM2E2NzhlMzg2MmJmODk3NjYxMyBsZWdhY3ktdHJ1bmsKKzMxMTUxIDY1ZmRiZDc4MWNhOTlhZjE5OWQ4ZTVlOTEyNTk5ODU4MDg1MTJiYmYgbGVnYWN5LXRydW5rCiszMTE1MiBhMjQ1MjgzMThiZTk2Y2JhM2ZiMjAyMTU0NDRmZWYxMmYxOWExZmRiIGxlZ2FjeS10cnVuaworMzExNTMgODIwMTAzOGJiZjMwYmQ1YmQxZTQxMmVjNGI3MGY4ZmE5NThkYjVlNSBsZWdhY3ktdHJ1bmsKKzMxMTU0IGVhYWVmNTE2YTY4NTNkZTcyNDg0NzJjNmZlNmI0MWFjZmIwOTFmZDYgbGVnYWN5LXRydW5rCiszMTE1NSA0NTkwNjIyM2VmYjIzNmExMWQwYzJmMzY0MjdmMDEyNzhiZmE0ZmY1IGxlZ2FjeS10cnVuaworMzExNTYgNGM5ZDAyYzU2NTdiMzVhYmU4NzA5ZGEwNTBkMWNhYmUzODI0MDExYyBsZWdhY3ktdHJ1bmsKKzMxMTU3IGFmYzlhMDk1YTJkNTZmOGY3ODllODRiZjAzMzRhNGUyY2U3MDMzNGMgbGVnYWN5LXRydW5rCiszMTE1OCBmN2IzODI2ZDAxM2ExZGVkYjIxM2IzMDJkZDU5NTg3ZWJlOWU4MzA3IGxlZ2FjeS10cnVuaworMzExNTkgNjU2N2Y0ODI5ZTdlYzRmZjFhNWJmZDNmMGE2YjYzZTZkN2JkZjAwZSBsZWdhY3ktdHJ1bmsKKzMxMTYwIDdiZjdkYWM0ZGM0OTYxNGI5MjAzNmRlMjczMjJhMTY4YmQxNGQwYzUgbGVnYWN5LXRydW5rCiszMTE2MSA2NDBlNTJkZWUxYTAzZDJhMjI1ODcxYjA2NTE0NmVhNDg2Mjk3M2M4IGxlZ2FjeS10cnVuaworMzExNjIgNDgwMzMwMTdjNzhmMjAxOGNhZDIyNTRiYmZmNDMyOGM2NjdhYzRhZSBsZWdhY3ktdHJ1bmsKKzMxMTYzIGM0MGNiOWJmYzhlN2MzZGYxNjU4OWJkZTJiZWJmYzllN2I3MTlmMGIgbGVnYWN5LXRydW5rCiszMTE2NCBlNGUyNmZlMjg2YzBiODljMmJhNjFiOTEyZWMyZTRlZWFjNGQwYWVmIGxlZ2FjeS10cnVuaworMzExNjUgOTc0ZjE5NmFiYjg3YmVjY2ViODZlNGQ0YjM5YWFlYjAzNzczOWJlOCBsZWdhY3ktdHJ1bmsKKzMxMTY2IDYwMTU0OWM2NDAzOWM4NGJiZTgxZTQ2MDQ5N2JiOTdlMWYzNThhNmIgbGVnYWN5LXRydW5rCiszMTE2NyAyY2Q0ZTBkZmYzYTQzMjc2MGFlOTQyMWFmODIwZWUxOWZhYmUyOWM3IGxlZ2FjeS10cnVuaworMzExNjggNjIwNWRhMzgzZTRjYjQxYjY4NTA2OTk4YjNhMjMwMThkZTM0Y2RjZiBsZWdhY3ktdHJ1bmsKKzMxMTY5IDAwNDI2YzdmMTQ3ZDIwMWE0MzI1NmRhZWY4N2QzMzQ3MzQwNDkxZjggbGVnYWN5LXRydW5rCiszMTE3MCBkZDczYTEyMThmNjlhODk2NGEwZDJiYTU0Y2Y1NWE4M2NiYzVmODgyIGxlZ2FjeS10cnVuaworMzExNzEgNGQwNGY0NWZmOGExZTZjNThlNzA1ZWM5YjVkZGMxNWVjMzFlZmFiZSBsZWdhY3ktdHJ1bmsKKzMxMTcyIDkzNGEyYjQ5N2QxZGQyYWRlNTMzMDhlOTQ4MjI2MTA5NTY5OGQ1MzAgbGVnYWN5LXRydW5rCiszMTE3MyA4YTE0N2E0MWMzZjdmYWUwYmNmNTMzMmUyNmU3Y2Y2ZmI4YzBkNjUwIGxlZ2FjeS10cnVuaworMzExNzQgYjY2YWNiZTI5NTc1YzQ1ZDVhZWZhNjlhYjM3MDU5ZDk5YmFmYTQ3NyBsZWdhY3ktdHJ1bmsKKzMxMTc1IGU5OTYxNWRlNzY0NzYzYzkwZTIzZTQwYjFiMDY4OTA4NDE2ODgyODcgbGVnYWN5LXRydW5rCiszMTE3NiA1MmNlNTdiNzhjNzFhODYwMTJmODJlMWZhZWU4MjY5YzFhYmU0Mzc0IGxlZ2FjeS10cnVuaworMzExNzcgZGI3ODRkMjlmNDgxZTA1YmI3ZTIzYmM1NWU4Yjk2NmQ0MmE1ZjIyNiBsZWdhY3ktdHJ1bmsKKzMxMTc4IGY2MTk4NjE0MDUwMzBhYWE4MmVlNTRmYTRmMGJlNzgxZTM2Yjk4OGYgbGVnYWN5LXRydW5rCiszMTE3OSBmMjYwMzQzZWNjZjEzMjJjYjkzMDRhZDQ0YmQyMjIwYzFjZGIxODdiIGxlZ2FjeS10cnVuaworMzExODAgNTliNGViYzI5ZDUzMTdhNmI3ZmMxYjYwZDM5YzNjYTM3MWIwZGI3YSBsZWdhY3ktdHJ1bmsKKzMxMTgxIGVkOTFiZjYwMWIyZGU5OGFmMDg0ZGM5NzcyYzZlZjU4OTk0ZDc3MjQgbGVnYWN5LXRydW5rCiszMTE4MiAxMDZhNDRhNGI5NzVkYjRmMWIwODZhZjQ1Y2Q0N2NlNTJiNmFhNWQ0IGxlZ2FjeS10cnVuaworMzExODMgYTlkZDIxN2E5YmIxMDFlMDhiMTIzMjRkODMyMzY2NTk2NGJkMDI4NCBsZWdhY3ktdHJ1bmsKKzMxMTg0IGUxMWU5NzZmZWU3ODEyYWI0MTE4YzViZmJhZDMyZTM0ODA3ZDU5MjAgbGVnYWN5LXRydW5rCiszMTE4NSBiYTNlYWZmNDliN2FlMDg5YTg4ZmMwMTI4NmYxZGE0MWU2NTE2ZmYwIGxlZ2FjeS10cnVuaworMzExODYgNjczMTUwMjZkNmQzNTk5YjY2Y2E1OTE0NzMxZWJhYzg1MjM2NGFmMyBsZWdhY3ktdHJ1bmsKKzMxMTg3IGI1OTVjNDczNWZjY2M2ZmQwMDNiM2E4NzhlODhhNDE1MDU5NjlkNDEgbGVnYWN5LXRydW5rCiszMTE4OCAwYmJiY2FjYzA1ZmI5ZTdlOGVlODQ3MGRkYzYzMzVkY2NkOThmNjdiIGxlZ2FjeS10cnVuaworMzExODkgNmExMzk0NjYwMjcwNzQxNzAyNTY2ZWQ4NzZjNTJhMjdlZGQ2OGFiZSBsZWdhY3ktdHJ1bmsKKzMxMTkwIDM1Mjc4YWFhZTc3NWNmOTcxYzIwZWFmMmM1NTA0MDc2M2I1NTdhMTIgbGVnYWN5LXRydW5rCiszMTE5MSAzYTUyOGFhMjIyYjZjOWQ2ZGZlMjEzYmJlNmM3MWI1ODU4ZDg4ZTgxIGxlZ2FjeS10cnVuaworMzExOTIgZGYzNjNkMWIzODQyODg1NmZiNGI1NDkyMzgyZmYzZGQ2OWM4N2E1OSBsZWdhY3ktdHJ1bmsKKzMxMTkzIDY1MmRmNDU0OTcwODU1MmEzMDZmZjcyYmU3NGJiNTg2NjdlMTdiNzAgbGVnYWN5LXRydW5rCiszMTE5NCBkNWViMTJiY2NkMWU5ZjU1NDVhMGQ0NjQwMGQzYjRkOTg0NDExODg2IGxlZ2FjeS10cnVuaworMzExOTUgNWQ3ODg4ZmJlYTAwNDg0Yjc1MDAxYzVlNTNkODVlMzQyMmM0MjljNSBsZWdhY3ktdHJ1bmsKKzMxMTk2IGY2MmVjMjQwNWU5ZmNiNTVlZjFkZGQyMDhjNTRmNTQ5MzliNzU4NGEgbGVnYWN5LXRydW5rCiszMTE5NyA4ZTVkZTQzNTI5Yjc1NzNjZmI0NTBiZTg0MjNiY2JjZTQxNjIzODkyIGxlZ2FjeS10cnVuaworMzExOTggM2U5OGQyZTJkODQ3ZjE2YzQzYzIxNTNlMDdjMjBjMjY0ZDUxMDc3MiBsZWdhY3ktdHJ1bmsKKzMxMTk5IDIwMzMwZTEzMjExZWFkZmZlN2I1YjQ2NzE1ZGIxNzJmZGQ0YTJkNTYgbGVnYWN5LXRydW5rCiszMTIwMCAzYjBiMzZjZGQ5Y2Q5OWU3NGFlMDUzYTYzYWY1NmVmNWZiNmE0ZjYzIHJlbGVhc2UyMi1tYWludAorMzEyMDEgYzg5NDNmODdjNjhiOTlmMmYxNjVmZmJlMjA3ZDE2YzEzOGJmMmUwNSBsZWdhY3ktdHJ1bmsKKzMxMjAyIDk2MDgwM2Y5ZjY5ODk5NGZhM2QwYWFmNDcwODkzNjcxZDdiYjlmYTQgbGVnYWN5LXRydW5rCiszMTIwMyBjZTNmYWFiMDZkZTc1M2E2YTkxNDM5NTU3Zjc3ODEwMTg4YjEwMGQ0IGxlZ2FjeS10cnVuaworMzEyMDQgOGY4NDQ4ZmI1OGQ2Zjg5NjA3NTJhMzUzOTZlZjdhNjg5YjU3ZGRhOCBsZWdhY3ktdHJ1bmsKKzMxMjA1IDk1ZjNhMWNkMDBlMTYwZDg1ZjRlODczODhlZjc0M2RlYTFhMDVlMjUgbGVnYWN5LXRydW5rCiszMTIwNiA1MTk5ZjdlYTY3NDZmMzk4MzM1YTc5M2U5OThiOTA4Njg5NzFmZmU5IGxlZ2FjeS10cnVuaworMzEyMDcgMjYxOTE1YTZjNjg1MmM5ODRmYmNmM2I3MDcwM2E2MmUwM2E2ZDM4NCBsZWdhY3ktdHJ1bmsKKzMxMjA4IGQ2OThjNTYyM2RhMDZmNTFlYzU5N2RkYzcwMGQ4MzVlNjJiMjZiYjIgbGVnYWN5LXRydW5rCiszMTIwOSBiMTlhYWFlYjZkNjQyMDMxNjNhZDljZjkwZGU2M2YwYmQ0ZjAxODUxIGxlZ2FjeS10cnVuaworMzEyMTAgZTU0NTRmZTFhYWZkMGRjZjlmMmVhNjhiYWVmOTZhM2I4ZGJkYmQ0YSBsZWdhY3ktdHJ1bmsKKzMxMjExIDc0YWFiZDQ0MTlkNDBkNjViYzdmZmJlZWQ0ZDQzOWEyNmFhNjdjYTQgbGVnYWN5LXRydW5rCiszMTIxMiBlZDFkNGU3OTcxMDk1YmZjYzRhMWVjOTMxMzQyNjNjYWFlYzc2MTRmIGxlZ2FjeS10cnVuaworMzEyMTMgOTZmZDAwNGE1OGIwZDMyZmVlYWQ4ZjYyNTljMDliNjQ5MzRjM2Q5YSBsZWdhY3ktdHJ1bmsKKzMxMjE0IDllNDdmOWVkNDlmNjQ2MjJjYjc4N2ZmMTlmNDcyNmNkZDJkNDZhNGYgbGVnYWN5LXRydW5rCiszMTIxNSAzNTk5ZjY1OTNmZTkwYzBjOTlhYWQ2ODNmNjA5YzQ5MGUxZmIzYTUwIGxlZ2FjeS10cnVuaworMzEyMTYgMjBiODAzY2YyMTlkMDk4NGZlOGE2YTkxM2UzYjVmNzA2ZTYwNmE0ZSBsZWdhY3ktdHJ1bmsKKzMxMjE3IDRjN2IxYjdkN2YzMTExNjc4NjY5MGUxODdjNmJkM2IwMzQ2ZmVkNGYgbGVnYWN5LXRydW5rCiszMTIxOCAwZWMzODk2ODg2ZTY5NmE3ODlmMGZmYjkzMzBkMzYyYTFlZTRkY2JiIGxlZ2FjeS10cnVuaworMzEyMTkgOGYzNzgzNWNmNGE0MTFiNDJmMDFjZGViYzJmZmIzMjRkMDg5MjM0NyBsZWdhY3ktdHJ1bmsKKzMxMjIwIDlhYjk3MWNkMTk2NTcyNGFmMGNhODgzMzU2ZTg0OGFhZWQ5MDU3NDEgbGVnYWN5LXRydW5rCiszMTIyMSA2M2Q2MzRlZDk0NWNjMDFlODg3MDRlZWVkNjdkMjVmYWYwYjEyYWI3IGxlZ2FjeS10cnVuaworMzEyMjIgYWM0NTNiYjM3MGEyZTljNzFiYTg4MzA0OWZlN2JiZDQxODQ1YWZhNCBsZWdhY3ktdHJ1bmsKKzMxMjIzIDdjNGRkYTBjMTQ1ZjA0MDFiNTVlMGExYTZjNDcxNmQ3ZmI4ZDEyY2UgbGVnYWN5LXRydW5rCiszMTIyNCAxYTMwMGY0NzUzMzIwNWMwODY2NWQ4NDEwMGI3M2EwYTRmYzZkM2NlIGxlZ2FjeS10cnVuaworMzEyMjUgZWIyODc4OTQwOTA1ODYwNGU0N2NiYjZlMWJkNjJmYzc5ZDhiYzE0MiBsZWdhY3ktdHJ1bmsKKzMxMjI2IDQzMTQzZDRkZDZiMWQ1MTNiMTJlODhhYjJjYmEwYTEyOTEyODVlYzMgbGVnYWN5LXRydW5rCiszMTIyNyAxODYxMzM1ZTc4YWExMTZjN2QzOTgwMjRmZDRjZjYwZTNkNzQ0OGQ0IGxlZ2FjeS10cnVuaworMzEyMjggMGZjYTY1YTA5ZjA2MjgyOGM1ZTU5YTgxNjg5MzM5NjE4YmM3N2NlMiBsZWdhY3ktdHJ1bmsKKzMxMjI5IDYxNGFiYmE1Yjc2MjRmYzM1N2Y4ODU3NjYwOWRjOTJiMTJiNGE4ZmIgbGVnYWN5LXRydW5rCiszMTIzMCAzNzk5OWY2OTI0YjRlNTUzMjg4MmZlYjllMGNkZWFjMzZjZjFlYjNkIGxlZ2FjeS10cnVuaworMzEyMzEgODRmMmM0MzhjM2Y1MmJhMThlZjMyZjkzZjhiZWY0YWViM2U2NGEwOCBsZWdhY3ktdHJ1bmsKKzMxMjMyIDA0MjhkNTkwNjlhOTg0MTI3ZGY2N2IyZTc5MWYwYTk2MDQ5MzNjNTQgbGVnYWN5LXRydW5rCiszMTIzMyBjOGM3ODE2ZDNhMmRhNmUzMDk2NDRjYmUwMWY3NDNiNTliZDk5ZTg4IGxlZ2FjeS10cnVuaworMzEyMzQgMGY2NzMxZDEyNmRlYjE4YzM3ZWQ3NjlhZjA1YzQ2MzVhNGY5NWI3NyBsZWdhY3ktdHJ1bmsKKzMxMjM1IDUzN2JmY2UyYjczMDNmMWFmMWQ2MDg3YTUxMjZjN2NmYTg2ZmY2YzAgbGVnYWN5LXRydW5rCiszMTIzNiBlMGZhNTIwNjdkYmVmYjgyNzNmN2IyYjhmMTljY2FlNDNmNjM2MjkxIGxlZ2FjeS10cnVuaworMzEyMzcgZjg3YjZkMTZiYWU4NWE3OWZmZTE1MGFjMTYyYmZmY2QxMzdiMGY0ZSBsZWdhY3ktdHJ1bmsKKzMxMjM4IDljM2M5OTNlOWI5Y2YyMzM0YWQyM2RlYTczM2RmMTA5OTg0MGUxNjUgbGVnYWN5LXRydW5rCiszMTIzOSBlNGZlMTY4ZTM1ZjE0M2ZiY2E1MmVlMGM5NDFlMDJlZDk5YWE2MzIxIGxlZ2FjeS10cnVuaworMzEyNDAgMDAxY2Y3NGRhYzUwMWE5ZTY1M2QzMzU3MjBjN2JhYjM4N2RlYmFlYiBsZWdhY3ktdHJ1bmsKKzMxMjQxIDE2ODU2Yzk1MTRlMDVhODg0NmQ0ZGQ2NTQ1NmVhOTdjYWE3ZTU4YzcgbGVnYWN5LXRydW5rCiszMTI0MiBhYWRlNGJjMTI1ZjhmZjI5MjRlNGYzNTU5YjFjNjg0MmMyZmVkYTliIGxlZ2FjeS10cnVuaworMzEyNDMgNzYzNzZlNWFmMzg4ZDAxOTJlYTk0YmEwZDM2YjNiN2M4MmY0M2FkNyBsZWdhY3ktdHJ1bmsKKzMxMjQ0IGUzYjVmMzIxZWViYjAzZjRiZWU1MDUyZTg1MTE2NmEyZWI2N2MxODYgbGVnYWN5LXRydW5rCiszMTI0NSA1OTM1YjgyNDNkNzRlNGZmMThkZDI1NDc5ZjBhOWFmNDc2YjcxMDA1IGxlZ2FjeS10cnVuaworMzEyNDYgNDEzMTNkMjBkMWRkZTI2OGFiZTM4Y2YzZWQzNTIzOTcxMThkYWU2MSBsZWdhY3ktdHJ1bmsKKzMxMjQ3IDUyMmVkZDU5MWQyY2YxMzc1YmE0Mjc1ZDBlMzk1MTk5M2Y4ZTIyMGYgbGVnYWN5LXRydW5rCiszMTI0OCA0NzRjYmJkZjAwY2U3ZDY0NDc4ZTgwNTA5YWVhNzBhODczYTU4Yjc4IGxlZ2FjeS10cnVuaworMzEyNDkgMjEyODNiNmVhN2YxYTZkZmI3MDg2NWYyYjFmZjEyNmEwOWU0ODIxOCBsZWdhY3ktdHJ1bmsKKzMxMjUwIDA0Mzg0ZjQyOTBiYWY2ZWZiYzhlMTkxZGMyYzE5ZDI0MmMwNzQyNDcgbGVnYWN5LXRydW5rCiszMTI1MSBjYWQxMTg1ZWVlZjdjMTY4YWVhMWEyOWM1MGI3N2Q4MTdhOTExY2U5IGxlZ2FjeS10cnVuaworMzEyNTIgNzI2NzIxNGYwNzg1NmJjZTc0NzE4NjJjNWY3ZjA4MGVmMTIzNmJjYiBsZWdhY3ktdHJ1bmsKKzMxMjUzIDM5ODJmMTE3Njc5ZWZiODM2OGI5ODJlNjJiNzc3OTU2MzllODFiNzAgbGVnYWN5LXRydW5rCiszMTI1NCBmMmYwNmI2ZWNkZDcxYmQ3NWY0NGEyNGVjMmY4ZTkyYzE5NDRiYmJjIGxlZ2FjeS10cnVuaworMzEyNTUgNWUzMTUyOWZkZDRmYWY5ODYxZmQyZjEzOWY0ZGFjNTcwOGMwNmVmNyBsZWdhY3ktdHJ1bmsKKzMxMjU2IGQ1MDIxODdiMmIwNmUwMGE3ZjViN2IzZWEwNmIxODc1OWU3MWM5YWIgbGVnYWN5LXRydW5rCiszMTI1NyA4ZDkyYWYxNDRjMTZlYzc4NzcwMzdhYTM4Y2FlNDIxMjQ2YTczN2NiIGxlZ2FjeS10cnVuaworMzEyNTggMDNjZmM2MzdjMzkzNTg4MmYyM2M4ODdmZjAzNDFlYmMwMTU4Zjg5NiBsZWdhY3ktdHJ1bmsKKzMxMjU5IGI0NjZjNWZiNGQ4ZWFiY2EzYWVlMDNjM2IwMGRmN2NiMDlkNmM4ZGEgbGVnYWN5LXRydW5rCiszMTI2MCBjMWVjZGRlMzJmODYzYzQ4ZGM4MDQzYzVmNzE2MzBhMWMxN2MwY2UwIGxlZ2FjeS10cnVuaworMzEyNjEgZmE5ZjllNTdlOThmODYwOGMyNGFlZTkzNmU0MzlkN2E4YzQwYWNlNSBsZWdhY3ktdHJ1bmsKKzMxMjYyIGU1ZTI0MmNmNDZiMWM0Yzc3YTUyNzA0MmJhMjBlNDBjNzdiMTkyNGEgbGVnYWN5LXRydW5rCiszMTI2MyA3YjJjZDgwMGMyMjk2ZDQyZWNhNDJmNGQ1NDFjN2NhNjEyMGQyMzEwIGxlZ2FjeS10cnVuaworMzEyNjQgMzJmYjk0YTZhNGZlOWJlY2NlMzJlZDkxNmEyMTk5NTA1ZWJhYTAwYyBsZWdhY3ktdHJ1bmsKKzMxMjY1IGRiNDE2YmQxOGQ0Zjc5ZjJmOGVmMDAxMWMzNTI4ZDYyYWVlZWM4NTAgbGVnYWN5LXRydW5rCiszMTI2NiA0MzY3ZjgwNWRiMDljM2Y2NjA2NmMwMjdiNWU5NjhlMDk4NDA4OTMyIGxlZ2FjeS10cnVuaworMzEyNjcgZDhjNzY1YzA5ZDhjMWE4ZWE2NmI5OGM0ZTNhMTc2YTdlNThhNjVmMSBsZWdhY3ktdHJ1bmsKKzMxMjY4IGNlMzQwZmI0YjYxNDk1MTJiN2ZkYmJjZWYyNWMzOWJhNzNkNGEwYzIgbGVnYWN5LXRydW5rCiszMTI2OSA0YjliOGRmNTRkZTlhZDg1NTQyMjRlYWNmNjQ2N2NhM2U4MWM1MmE2IGxlZ2FjeS10cnVuaworMzEyNzAgZGY3NDEyN2UyYzlmZDE1MjE1ODkyOTQ1MmNjYTM4OGFhMmJhODkwZCBsZWdhY3ktdHJ1bmsKKzMxMjcxIDk1MDM2ODVmYjRlODgwODkyNTI2MWU4ZWU2ZDYyNzAzOGFiZmZmYjkgbGVnYWN5LXRydW5rCiszMTI3MiBiMzMxZTVlNWNjNGFiZjM1NWRlZWU3ZGUwOTc1MDA5MzU0OTcxZWY3IGxlZ2FjeS10cnVuaworMzEyNzMgYWJmOWE5MTJjZmNlOWM1YmI4MGE3OTQ4MGZiZjBlZDFhYTJiYjkyYyBsZWdhY3ktdHJ1bmsKKzMxMjc0IGM0OTYzODMwNWEyOGIwZDI4MDZmMmE0NzRhOTFiZDJkZjlmNGJjODcgbGVnYWN5LXRydW5rCiszMTI3NSA4NTM1OTIxNzA5MWNhYWMyYmZiNGJhNDJiYWE3NjYwOTYxZDgxMjcxIHJlbGVhc2UyMi1tYWludAorMzEyNzYgOTQxZGU3OTFiMTdhZWIzMjdkZjBkMmMzYTY4NjQ0ZDU2NWQ4Y2QyMCBsZWdhY3ktdHJ1bmsKKzMxMjc3IDU5YWU0MWUwNGZmYmU3ZmM3Yjg1NjRlNDA3ODVkMjJhMjdmM2U2NDUgbGVnYWN5LXRydW5rCiszMTI3OCA5Zjk0MDA5YjFhZTBjZTc4YWUyNGIxNmQyNGEyZmI2YWE3ZDg3MGQ5IGxlZ2FjeS10cnVuaworMzEyNzkgNDdhNjkxNWQxYzM2YjRiMzk2M2ZjOTM0N2ZkOTMzNmQ2N2QzZGY3YyBsZWdhY3ktdHJ1bmsKKzMxMjgwIGM3Y2YxYjVkNDcxYjdlN2YzZTJlZmU0NDQ3MGEzZGUxYjU2OThlODMgbGVnYWN5LXRydW5rCiszMTI4MSA3ODUwZmE3ZmI2ZjFhMTQ5YTg5NzFiMzJmZjc0ZGQ1ZDkwNTgwZTNkIHJlbGVhc2UyMi1tYWludAorMzEyODIgMzI5YTAwNzc3ZTMyMGNhZTdlYTg4YTM0MGJmNDY4NmM0YzE3YjFjMCByZWxlYXNlMjItbWFpbnQKKzMxMjgzIDZiMTc4OWFjMmY5NTgxM2UxMjg1OTM0MmU5OTNiYzE4YjZjYzRkMDggbGVnYWN5LXRydW5rCiszMTI4NCA5OGMzNGNjMWNmNDAwYjY0ZTQ4YWYyY2I0NDQ5ZTIyZmNjM2JiNjljIGxlZ2FjeS10cnVuaworMzEyODUgMDM5NTUxMmNlMWI1YWI4OWMxYzY2NzY3MDBjZDI0NWYwNWZlZDQxNSBsZWdhY3ktdHJ1bmsKKzMxMjg2IDM4ZDA1MDU2MTk1YzljMTg3ZTc4NmQwN2VkOTZmMGRkZWQ3ZDY5NjkgcmVsZWFzZTIyLW1haW50CiszMTI4NyBhNGJkZTkxNTExOGM2MDU5MzRlY2FiMGFhNTBkM2FhYTI0NmUxYzg1IGxlZ2FjeS10cnVuaworMzEyODggNTk0ODIzMTcxNjZlNmE3NzMyNDczYWZlMjFjNmM5MzFiYWYxYTExNiBsZWdhY3ktdHJ1bmsKKzMxMjg5IGM4MTQ4ZDdmMGM5ODZlMGYwZGU4ZjYyZDA5NjA3MTNlMzU3ZGM4YjggcmVsZWFzZTIyLW1haW50CiszMTI5MCBhOGE2NDdlMTkyN2I1NmU5ZDY3NzI0NmM1ZmJlNWJlNTQyM2JjNTRhIGxlZ2FjeS10cnVuaworMzEyOTEgZjRjZGJhODNiZTU2MDI4ZTY1Y2ZhYzkzNzBkYWE5M2VmYWZjYWQ5ZiBsZWdhY3ktdHJ1bmsKKzMxMjkyIGZjODgxNzRjMGMwYWRkZTM2Y2E2Mzg2MTk0MWFjYjRjZGZiMjE4NmEgbGVnYWN5LXRydW5rCiszMTI5MyBhMDM2YTUxOTc2MTBjN2M5MjlkMGM5MDRmOGUyMGMyZDlmMzczMzc5IGxlZ2FjeS10cnVuaworMzEyOTQgN2I1MDQzYzBmZjQ3Njg2Nzg2MDJlYzkyZjM5ZDZmNzM3Y2Y4ZDRmMyBsZWdhY3ktdHJ1bmsKKzMxMjk1IGM1YWQwYTI0ODliODI3NWQwYTJkNGQwMzgzMTNjM2RhM2U1YmU2YmEgbGVnYWN5LXRydW5rCiszMTI5NiA4MmNiZjExNzhlNGY0ZjJhNjYwMGZkNDllMjlkYmUyOWYwZmFjYWM1IGxlZ2FjeS10cnVuaworMzEyOTcgMmQ1NWJlM2E4ZWMzNGVjYjE5MTMyZDRiYWJmMTAxNjE0ZmJiZjc2ZCBsZWdhY3ktdHJ1bmsKKzMxMjk4IGRjNWUxZDkxODA1NTgxMzRkMjg2ZmI3NDg4MmQ4NGUyMTlmYTY1MTcgbGVnYWN5LXRydW5rCiszMTI5OSAyYzM4OWEwNDQ4YTRmYjA4YzY0NTI2YzdjYTNiOGVhZDQ3NzUyZWExIGxlZ2FjeS10cnVuaworMzEzMDAgOWY3MTNjN2I3ZmQ5MTAwZTU2NTM4NWMwNjNmZTcxMmY5NjNiNWI5OSBsZWdhY3ktdHJ1bmsKKzMxMzAxIDM1NjZiODRlNjZiOWU3NTZiMjMwNmFkZTYyNjAyYjFjMDIzODIyNzggbGVnYWN5LXRydW5rCiszMTMwMiAyNGU4YzdlNTIxZjU5OGU1ZDBlZDY3MDFhNDljMjA0NThiMTFkZjI4IGxlZ2FjeS10cnVuaworMzEzMDMgYmZjNTI0Mzc5MzA3MTE4NDE2NDVlZjcyZDAzOGFlODFhMzE1NDc5NiBsZWdhY3ktdHJ1bmsKKzMxMzA0IGMxODQyMjcxNmZmMjZiODgxMDUyNzJlOWVhODkyODVlMDEyMjM2ZWMgbGVnYWN5LXRydW5rCiszMTMwNSA4YmZmM2QwOTQ0YmE3NjlmYmYyN2I0Y2FlYWRmOGI4NDE3ZmZlMzhmIGxlZ2FjeS10cnVuaworMzEzMDYgNWY2OTMxYjgzNTJlNDFmMGUxYmIzNTViZmJmYTQ3NmZhMjRhOTUzOSBsZWdhY3ktdHJ1bmsKKzMxMzA3IDFkYzYzNjY1NDNkNDg1ZTc2NGFmNTlhNTAzYWYzMDE5ODRjNDJmNzQgcmVsZWFzZTIyLW1haW50CiszMTMwOCBmYzVhNjBhNjFlMzJmNTNlZGMwODg4MzIyMDViOWRlN2FlZDgwNjUyIGxlZ2FjeS10cnVuaworMzEzMDkgZGQxMTMwMjUzZjEwM2I5NmQ2YWJkZmFkZDFlMjI4N2U0MzU2MDJjNSBsZWdhY3ktdHJ1bmsKKzMxMzEwIGNjMDFmYjY1NGNlM2Y1NWNiNmRlM2UxOTRjOTM5MGRjNTdiZTk4MmQgbGVnYWN5LXRydW5rCiszMTMxMSA5MDRmMGU3Njk4MjA5MDVlYmM3NjVjMjA0YTdmNTJmYjIzODIwNGVmIGxlZ2FjeS10cnVuaworMzEzMTIgZWJjYWVkNzk0OGU4MGUxY2M5N2Y2YmY1MmFiMGM1ZTg3ZGY2MGNkMSBsZWdhY3ktdHJ1bmsKKzMxMzEzIDIxMDAxODJmNzRlMzhhYzU1ZjQwYjQ0MzM3ZmZkZjc3MTczNmM5OWUgbGVnYWN5LXRydW5rCiszMTMxNCBjMjBmZWNiNWNjOWM1NmUzN2ZlNjdmODg5NzhmOTM1MmExZjdiY2FjIGxlZ2FjeS10cnVuaworMzEzMTUgZjM0NDQ2ZmEyMTZlNWZjYzEzNzJhNDVhY2Y1OTI2MDVkYjVkOGY3YyBsZWdhY3ktdHJ1bmsKKzMxMzE2IDBiZGZkNjViYjEyMjU5MzEwOWM5NzZiMTBhNmEzMDI2YTkxNzlhZWYgbGVnYWN5LXRydW5rCiszMTMxNyAzOWIxYmFjODkzNjVmODIwY2QzOTM4MmY0Yjk3NzMzZGE4NDQyMzMxIGxlZ2FjeS10cnVuaworMzEzMTggZjJiNDMxMzY0ZjZmY2JmMGZhNDIyMzJjZDE5NGRlMjQyODMwOWZkMiBsZWdhY3ktdHJ1bmsKKzMxMzE5IGI2NTBhNTRhNzZmZGFkYWViN2UxNTMxZTRmMmUyZjI4ZTYxNDRiYzMgbGVnYWN5LXRydW5rCiszMTMyMCA5YTYwNTRjNmQ0NmZhYjZkYjNiZmYyZjk5ZGE3OGU2MTc3N2FiMTM4IGxlZ2FjeS10cnVuaworMzEzMjEgYjU2ZjAwZWM4MDgzMTI3ODdiZTIyZTJmOGFjNTA0NzM1NTk0OWVlNCBsZWdhY3ktdHJ1bmsKKzMxMzIyIGYwNDA5ZDc1NGI5Mzc3ZWZiY2I5ZmU1ZGMxNmU4MTU0NGVjYTAzN2EgbGVnYWN5LXRydW5rCiszMTMyMyBkMmIwMWM5ZGZmMTY4MzViOWVhZjgxOTliZGZhMGVmYzliZjgwOTAyIGxlZ2FjeS10cnVuaworMzEzMjQgMjA0MmUyMDUxZDk3ODQ3NTYzNzU3OTllN2E2Y2RiM2UxNTJhMjhkOCBsZWdhY3ktdHJ1bmsKKzMxMzI1IDA0MDBiYTc4YTg5NzlhNGY4ODk4MDk2ZWQ0MzhhNzZhYjM5MzgxZTYgbGVnYWN5LXRydW5rCiszMTMyNiA2MTk3M2Q1ZjZlMjUzYzg5N2I4OTc2MTA1MGQ3NzVkYjRjYjFlOWFkIGxlZ2FjeS10cnVuaworMzEzMjcgZTYyMDk5YzY1YTNjM2MxZTM0OTQwMTdiZTFlYWYyYWI4NWYwYjI2NyBsZWdhY3ktdHJ1bmsKKzMxMzI4IGIwNTM5YTQ1MDkxNzI1MGNjNmY1ZTFmYjJiNWY2Mjc3NmU5NzcyZjMgbGVnYWN5LXRydW5rCiszMTMyOSAzNjExOTc2Y2IxNzRhNWY5NTM0OWRiNWE3NmMxOWZmZGQ2MzcyNjcwIGxlZ2FjeS10cnVuaworMzEzMzAgMGM3ZThjM2Y2NDJmNjE1YTU3MmE2Y2E0NDU2MjEwOGJkM2JlZGI4MCBsZWdhY3ktdHJ1bmsKKzMxMzMxIDM3MmUzNDgzZDMyNzU0MjgxYzYxNzUwYWIwZWM2ZmY5NzAyOGQ5ZWYgbGVnYWN5LXRydW5rCiszMTMzMiBjN2RmMjI1ZTRlNGE1NzUxOGQzZjA2NzEzNzkzMGM4MDAzYTgyNTYyIGxlZ2FjeS10cnVuaworMzEzMzMgOGQxYjI3MmM5ZTcxYzI0Mjk0ZGJjNzZlNzc4Mzk3Yzg5OTkwNjZlNSBsZWdhY3ktdHJ1bmsKKzMxMzM0IDllYzQ3ZTY1MTE3ZDM5ZGFhMzQzNGY2OWI2YjdmYjA1ZDVkODBlNjkgcmVsZWFzZTIyLW1haW50CiszMTMzNSBlODg3OGM4ZjU0ZGY1ZDVlMTFiYTdiZDUwN2Q2M2M3MDgyMDYwNDM2IGxlZ2FjeS10cnVuaworMzEzMzYgYjk1YjlhYmI5YmYzOWU1NzFlNzM2ZTMxNmUwNTVmODU5ZGNhZTk0NCBsZWdhY3ktdHJ1bmsKKzMxMzM3IGQyZTdmNDY4ZjIyNGU4MTJlZDUzZmVmOTdkZWJhMjcxMjg2NjQ2NTMgbGVnYWN5LXRydW5rCiszMTMzOCA4ZDZlZTE1ODY2YjIxNmQ0MWFiOWYwMGI3NjE4MmJlOGM0MTkxZjgyIGxlZ2FjeS10cnVuaworMzEzMzkgNTY2M2UwYzgxODYwMmYxODQwZmJlNTA1NmZjOTRkMGMxZmY5ZDhhZSBsZWdhY3ktdHJ1bmsKKzMxMzQwIDQyMzk2YTc4NmY1OTMzMmRjMjRkZDQ3NjU2YmI5M2ZiOWQxMWU2ZTQgbGVnYWN5LXRydW5rCiszMTM0MSBjZDA1YWY3MDFlNWQ2NWJiNzAyMWRiZmNiNWUyNWY5YmNiZTBlZTA4IGxlZ2FjeS10cnVuaworMzEzNDIgZjZjOTVmOTEzOGFkMzcyZDkxMjg2MzA0N2I5OWJlMWYyMWNjOWRmNyBsZWdhY3ktdHJ1bmsKKzMxMzQzIDQ4ZGM0YTU5YTUwZWY4NmUxYTAzMGQ0MzY1OTJmNTNiODM5YzYzMzkgbGVnYWN5LXRydW5rCiszMTM0NCBjYjFlZWFlYjc0YTA2NjA3ODkzYWVlZThkNDYzOGQ3MzBhNTdmMzAzIGxlZ2FjeS10cnVuaworMzEzNDUgZmFmZmIxMWY1NGU4ZDBhNGY4Nzk1YzQyOWQ2MTEyYjU4ZDA0MDRkZSByZWxlYXNlMjItbWFpbnQKKzMxMzQ2IGJmMDgzZTM1MTg1ZjU0MzBjYzFiZTVkZWUzMjdiOTYxNDM5Mjc4MGIgbGVnYWN5LXRydW5rCiszMTM0NyA1OWZiYWUzM2EwZjlkN2U1ZGU3YjIwYmMyOTVlZjkzOGZhYzhmZGVjIGxlZ2FjeS10cnVuaworMzEzNDggZWUxMGQ3ZTdmODE4Y2M0M2JmZDdiYzdjYjQzNDdiZmNmNTNiOWRmOCBsZWdhY3ktdHJ1bmsKKzMxMzQ5IGZiYzQ1YmVhZjAzNDRjZmRkY2QzM2U1N2MxYTg2MWI1NDNjOTgxOWYgbGVnYWN5LXRydW5rCiszMTM1MCBiODA0ZWU1YmViNDkyMzlkZTgwMzMyYTkzMTFmMWIyNmYxNDAzZGQ1IGxlZ2FjeS10cnVuaworMzEzNTEgMTlhYzEyYWM4MDQxNTM1M2M4ZmMyZmRiMGI4M2FiMjExYTBiY2NjOCBsZWdhY3ktdHJ1bmsKKzMxMzUyIDY1MWQxMTIzZWQ2ZTM3MjJhM2FhZmYwMmE5ZTljMjQwMWM5NjE3ZDEgbGVnYWN5LXRydW5rCiszMTM1MyBiZGVhY2Y3YjE1Yzk2NmJiNTE0MTc1YjE4MDA3MWEwZjRlZTlmNzRiIGxlZ2FjeS10cnVuaworMzEzNTQgMDExZjczNDI1OGRiOWJiZWI0NzIwYzE1YzRhZWJiNzZkYzJmODYxZCBsZWdhY3ktdHJ1bmsKKzMxMzU1IDdkZmZjYzQ5OGM0NTgzMWI2Y2JiNDM3MDRhNmZlOGI5M2U2OGY3ZTEgbGVnYWN5LXRydW5rCiszMTM1NiBjMzc3YzU2ZWRmYzhkMzZiMDc3Y2QzNTBiNzNlYWVjMTc5NjdiM2Y1IGxlZ2FjeS10cnVuaworMzEzNTcgNmJhOTQwY2Q5OWVmOTgzMWM2MjA1YTg2NjcxNjkyMzNiNTZlODA2YSByZWxlYXNlMjItbWFpbnQKKzMxMzU4IDRhMDJjYTZiZGI2ZjRmN2NjYzljN2EyNDc3MzljZTk3ZGFlNmIwNGQgbGVnYWN5LXRydW5rCiszMTM1OSBiZjljYTA4NmI4YWE2MjcwNDJhMjc4ZGJhNzU0M2I0OWJlY2EwN2Q4IGxlZ2FjeS10cnVuaworMzEzNjAgNmI1Njk2NTQxYmE0ZWY0YTkzZTU4Mjg0ZjhiMDM2MTk3YzkwZjQ3MiBsZWdhY3ktdHJ1bmsKKzMxMzYxIDdmMTcxZjlkYjhhZmU0ODQwNWYwOGM0MmFkMDM1NzVhOTkyMzE1YmEgbGVnYWN5LXRydW5rCiszMTM2MiA1MjNlZmQ3NzMyNjFhNjcyYWE5ZmJiYWJlYmY1YzgzZjZlODUzNmE1IGxlZ2FjeS10cnVuaworMzEzNjMgOTRiZDExYjExZGY3ZDVmZGIwNzUxOGFhNjkyOTc3YTEwOTk1MmRkMiBsZWdhY3ktdHJ1bmsKKzMxMzY0IDVkMmQyNGE3MzgyNTkyZDAxM2ZkOWZhMjU3M2FmMDViZWNkYTI2ODMgbGVnYWN5LXRydW5rCiszMTM2NSAyMjFlYWY3ODE0ZjQ0YjYyOTA2MGJiMmJkYjFhMzJiY2E0OGU2MDM0IGxlZ2FjeS10cnVuaworMzEzNjYgMTAyNTkxMjJiZjVmMmQxMzlhZTY3NzQ5N2M5NzUxOTYwZGYyYjkzYyBsZWdhY3ktdHJ1bmsKKzMxMzY3IGI1MTk3MGJhMjE4MDYzMzA5NDUyOTYyYmQ2YWFjNWM1YTlkY2EwMWMgbGVnYWN5LXRydW5rCiszMTM2OCA1MDE3M2VhMWZkNDQwNzE2YTkwMDI4NTZkOTkxNGQ0NzdmMGRkNzQ2IGxlZ2FjeS10cnVuaworMzEzNjkgMTViMDMxNzQ4MTE2YzM2OGM1YmRiMzBjMzY3YzE3MGM5YzhlMjgwMiBsZWdhY3ktdHJ1bmsKKzMxMzcwIDMxNjBkMzA0MTUyMTk0Y2UwODdkOGMyMTI5NjllYjQwMzkwZjI1OTIgbGVnYWN5LXRydW5rCiszMTM3MSAxYzEyOTliYzMzZDYwNzI3NmNiMzI0OWY2NDgxYmYxY2M0ODg5NzY5IGxlZ2FjeS10cnVuaworMzEzNzIgMjNmNmIwZDAxYmM2YWQ0MzRjYjYwOThkOWU1ZGUzMmE2ZGNhNmVhYSBsZWdhY3ktdHJ1bmsKKzMxMzczIGU0ZGJmMGYwMDk1YmU4NmNmMzUxZjc0YmExZGQ2NGU3NjY5Y2EzMmMgbGVnYWN5LXRydW5rCiszMTM3NCBkYWE0NDk1Y2Y2MWFiMTRjNDU4NjNjYWM4MmY5NDY4MjMwYjlmZjE5IGxlZ2FjeS10cnVuaworMzEzNzUgZTlkNzEwMmY4Mjc4MGZmYmUwMjI5NGExYzQ4OTYyYjFjNjE5YTgxMCBsZWdhY3ktdHJ1bmsKKzMxMzc2IGUwZGE0NTc3YWFhNjI0MTU5NjdiNTZkMjQ4Mzg0YThjMzZmZWU2ZTUgbGVnYWN5LXRydW5rCiszMTM3NyBjYjJjM2ZiYmE3MmVlNzZiZmVlMTZjNTA1Y2RjOWJiOGY3OWU2ODFkIGxlZ2FjeS10cnVuaworMzEzNzggM2ViMDM3NmU5M2U4NDIwNjUwYjQzMzBjYjQzNGRlOTVmMWQyYjJjOSByZWxlYXNlMjItbWFpbnQKKzMxMzc5IGM1ZGQwNzdkZTBmYzY0NmE3ZTE3ZGQzMjcxOTMyOTg2OTdhMjMyNGYgbGVnYWN5LXRydW5rCiszMTM4MCA3YTIwYmJkYmZmMzY4MmY3ZjY2NTNkNWI5NzAyNzUxMzg1NDE5MzI1IGxlZ2FjeS10cnVuaworMzEzODEgNGI3NWEwYjc2ODU3MTliZjhiM2UxMzI0NGY5N2RhNTljOTAyNmY4MSBsZWdhY3ktdHJ1bmsKKzMxMzgyIDU2MjBiMDc4NjI3MTE5YjY5YjZkMDM0Zjg3NWM1MmY5NWVjMzJjZDIgbGVnYWN5LXRydW5rCiszMTM4MyA4MWFmY2E3NDdjYWE1YzE4NmVkMDE4NzllNjIwNzliODIzNWY5NjkyIGxlZ2FjeS10cnVuaworMzEzODQgMDE2MGZmY2IxOWUzMzdiZjEzYjgyOWM1MjcxMWJlZmQyYWQzMmZlYyBsZWdhY3ktdHJ1bmsKKzMxMzg1IGNkMTBmYTcyMWE1MTJhYzhiMzgyZTBiN2UzYzMzNzc0ZTZiNDBlNDQgbGVnYWN5LXRydW5rCiszMTM4NiBhODc4MDQ3OWQ0ZTA5NzdjMjI4ZWI3ZjhjNzgyNjk1NjllOGVlYWRmIGxlZ2FjeS10cnVuaworMzEzODcgOTQ1M2Q4Y2RkMDFlOGY3YzA4YjUwNTM2YWNiMDg5ZmNiNmQzZjE4MiBsZWdhY3ktdHJ1bmsKKzMxMzg4IGU3Y2QwODYxYzI3M2I1NjI2NGNiN2NhMjVlN2VjYzNkNjMyY2RjNGUgbGVnYWN5LXRydW5rCiszMTM4OSAzODc0NjMzN2FlNmUwOGUxNTM4NmM1NDYzMmZmOWIzODM2ZWEzZDIwIGxlZ2FjeS10cnVuaworMzEzOTAgZjg0NDBiYjhlZGU1ZDE5ZjQ5ZmMyZjZmZWFjNWVhZmY5MjNiNzgyZCBsZWdhY3ktdHJ1bmsKKzMxMzkxIDgzYmI2YzlkZDc4YzBjNjNiYzUxMWQ5NDA5MDZkYWVhMTNmOWY1MDUgbGVnYWN5LXRydW5rCiszMTM5MiBkMTk2NjFlMTk4Zjc0NzJiNjAzNjBlZGViNDVmZThiZTczNzkyZTNkIGxlZ2FjeS10cnVuaworMzEzOTMgYjRlYjM0MzcyYmRiNWU3MTJjN2I2NDhmMDM4Y2FkMjBmZWQ2Yjc0YSBsZWdhY3ktdHJ1bmsKKzMxMzk0IDY1NDk0NDY5YWQzZWVmZGUyNGRiYzYyY2ZkMjIyYjc1ZjY1NzQ1NjkgbGVnYWN5LXRydW5rCiszMTM5NSBiYmJiYTBlZTYxZmI2ZjJmNjA4NDY2Mzg0YWE5YmFlODM5OWZkNmMwIGxlZ2FjeS10cnVuaworMzEzOTYgZTZjZjk1NTdkZTQyYTg5OWM5ZjlhYjU0NzZkZjM3MzJmYzBkZTg5YSByZWxlYXNlMjItbWFpbnQKKzMxMzk3IGE1MjEzN2I4OGViM2NmNjRkOWI2NWZkMTBjYjVjY2Q5YzNlN2FhNTUgbGVnYWN5LXRydW5rCiszMTM5OCA4NzBjZjE0YWRkMmFkYmM3MDZhNDlkNDdiMzU3YWVmZTBkOWE3ZmNmIGxlZ2FjeS10cnVuaworMzEzOTkgYTljOTZiYjQ2OTUzYmRlOGIxNGQ3ZDMyOGM1NjJlZDkwYTkwZWM5MCBsZWdhY3ktdHJ1bmsKKzMxNDAwIDEwMGZiNjg0Y2YzZTVmNTM0M2NhMGIwNGI2NDFjY2Y1MzBlZTZlMmYgbGVnYWN5LXRydW5rCiszMTQwMSAxMWU2MTIzZGU2ZmVkNmZmOTA2NWZhZWQ5YjcwYTQ4OWFjZmZmYWEyIGxlZ2FjeS10cnVuaworMzE0MDIgODhhNDJhN2MyMzhhNjRlNzkwMjVlY2NkZjRlNThhMTgxOGVjNDdhZSBsZWdhY3ktdHJ1bmsKKzMxNDAzIDZhZjc4MGUwODYyZDAwOWM2ODBhZTA4OTQwNDVkNjk5YzU5MTMyMDcgbGVnYWN5LXRydW5rCiszMTQwNCBhYmRlZWI4MThhOWEwN2M0MTM1NjBlMTUzOWM0NjM4ZjZiOWIzYmFjIGxlZ2FjeS10cnVuaworMzE0MDUgODc4OWU5ODIyYWE0Yzk3MWRmMWY4ZWFjNjNhMTI3ZjQzNjExOWFjZiBsZWdhY3ktdHJ1bmsKKzMxNDA2IDhhNmM0NTkxMGVjOTA4ZDU3ODM2NDk2YmQxM2E3Yzg4ZThlN2NjZTYgcmVsZWFzZTIxLW1haW50CiszMTQwNyBiZTc2ODNhNmY1MjFjNWE2ZDAyODNjNWY3NGYxMzY0NTdhMmViNGExIGxlZ2FjeS10cnVuaworMzE0MDggODg0ZmI1NThmMmI5MWQwYmQwMjE2N2ZhM2FhZGI2NmNhY2M4NzcwZSBsZWdhY3ktdHJ1bmsKKzMxNDA5IDVmZWQxMTQyZmQzNGI5MDY2YTQ2ZjEzNzc5OTE2NzgxNDFmNGI5YmMgbGVnYWN5LXRydW5rCiszMTQxMCAxNDhkOGMwYjk2NDcyMzM5YTViMjg3OTFhZjQ4ZGVjODZiODIzMDYxIGxlZ2FjeS10cnVuaworMzE0MTEgNDY2NTk2NzVkN2Y3OTIwOWNmZGU0NjBmNTVhYTkxMjJlYzAyYzVhZCBsZWdhY3ktdHJ1bmsKKzMxNDEyIDUyMGE4YzBjOWEyNWVjOGI3MWQzN2E0NWNkMDkwMmZkNjY0MWVmNjEgbGVnYWN5LXRydW5rCiszMTQxMyAyMDk0ZTE5OWZkNTU2MzFmMGM2MmYxMDA3YzUxODY0MzRlNTIzZDllIGxlZ2FjeS10cnVuaworMzE0MTQgZWFjZjk3NzU5MDM4YzM1OTJkODBjZThjZGIwMzM0MGZhNTY2N2VjMiBsZWdhY3ktdHJ1bmsKKzMxNDE1IDIwNmM1ZTNiNWJlNzViMTljZWVjZmZlZGE2OWJmZDJkOWJiNDFjZTIgbGVnYWN5LXRydW5rCiszMTQxNiBjZWRmOWVmYTY4ZjgxNGYzOGEzMTI3OTU1YTM3MjlkMzA5NTQxNDczIGxlZ2FjeS10cnVuaworMzE0MTcgMzFlODU4MWJjZjI1OTM3OGU5NWFmMjY4OWY0MDUyZTc0OThjYzgyNyBsZWdhY3ktdHJ1bmsKKzMxNDE4IDU3ZDBiYWQ3M2M4ZTVhMjRiY2YxNTQxZWEwZjI2MGIyMmUxZjA0MjQgcmVsZWFzZTIyLW1haW50CiszMTQxOSBlN2Q1OWRiNjgzOWE3MTlhYTVmNzRhZWI0OWFkOWZlNDIwMmM4NGNkIGxlZ2FjeS10cnVuaworMzE0MjAgNWFlZTFjMjcyOTM4ZDUwNTAzYjA4NGVjNGQzODJlZDUzMzA0YjhjMSByZWxlYXNlMjItbWFpbnQKKzMxNDIxIGQ4YjA2MDEyYjM4MTVmMmE5Y2YwYjRlODc3NDA0ZDlkZTg5YmY0MDUgbGVnYWN5LXRydW5rCiszMTQyMiBhNzU5MDU3ZWNmMWIzMjA1NzA1MDhjNmY5OWJhN2U1ZTkxYmZjYmI3IGxlZ2FjeS10cnVuaworMzE0MjMgNjZmYTI0Nzc3ZjBhZWZkOGM0ZDc4Y2U5MDQzYTNlY2IxMWJiNWQ4MCBsZWdhY3ktdHJ1bmsKKzMxNDI0IDc0MjhjMTJmNTAzZjZkOTY5Y2ZkMWMyOGIzOWUzOThkMTQzZjJhMzYgbGVnYWN5LXRydW5rCiszMTQyNSA0ZTMxZTQwODY4NDk4YThiYWI5YzRhOGU4MTVlODkzOGM4ZTk3OGQzIGxlZ2FjeS10cnVuaworMzE0MjYgY2YxZWZjYTgyYjE4MzdmYjBjM2I1OTc4MDFlM2NjZTAwM2Y1MmZkNCBsZWdhY3ktdHJ1bmsKKzMxNDI3IGMxNjNmOTViMzAwYzY0OWY5MDU3MThhYWI4Njg5NmNhN2NhNjY1ZDQgbGVnYWN5LXRydW5rCiszMTQyOCBkMGY0ZjNjZDRmZTQxYzg1NzUyZWE5ZjAyODU5ODc0YWIzZjQ1MWUwIGxlZ2FjeS10cnVuaworMzE0MjkgMTk3ZDY0ZGMwNGRjMjQ2ZjQ4NzBhNDg0ZmY0MTk3NTFhMjc1Y2ZjNyBsZWdhY3ktdHJ1bmsKKzMxNDMwIDU1YWRmMDhhMjEzYTJkODQ2MWYxN2Y3YTJiZmJkYzExNjM3NzUyMjggbGVnYWN5LXRydW5rCiszMTQzMSA4MWIyYmNiZmUzOWJiNjAwODNiZGQ4N2YxODQ5MjE5NmNlYTI1MTVlIGxlZ2FjeS10cnVuaworMzE0MzIgZTU4MjBhMTUwZDg3ZmU4NDM0ZWM4MGVkZDQwYjgzNGZjNDcwNWZkYyBsZWdhY3ktdHJ1bmsKKzMxNDMzIDliZGFjY2Q4YTkwOGMyMzAyMTUwMDYwMjJjOTY4OTQzNzIzZDgzZjEgbGVnYWN5LXRydW5rCiszMTQzNCAyMzNlZDZjYzhlMTRhNzI0ZWM2Zjk3YzdjOGU5ZDc4ZTMwMTVhZGE4IGxlZ2FjeS10cnVuaworMzE0MzUgYTY4MmNlYzZiODgwYTQ5NzQ3OTFjZDAwZmUwZjEyYTZmYTcxZDc0MyBsZWdhY3ktdHJ1bmsKKzMxNDM2IDNlMTY5ZDI5NDM5NWI4MWQ0YTgwOGYwNzMwZWY5NmYyNTkzMjMyYzYgbGVnYWN5LXRydW5rCiszMTQzNyAxNzQ3NDlmNWIzMmZhYTE4NjMzYjY2NDc4ODJkZTNkMmRjZDc0YWM1IGFzdC1icmFuY2gKKzMxNDM4IDQ3YjhjYWJhYjdiMTAzZmVjYjU5NGQ4Y2M3ZDNiZjk3YTNlOTIxMzMgbGVnYWN5LXRydW5rCiszMTQzOSA5YjQyMzIwZjFlMGZiMDQ4NzlhYzBmYzU2ODY4ODZmM2I4ZTMwODNkIGxlZ2FjeS10cnVuaworMzE0NDAgYjBkY2E5MmMyOTlhNWU5NjNlNGExZWIzMGJhNGQ1MmNiMDk2Y2UzZCBsZWdhY3ktdHJ1bmsKKzMxNDQxIDk1Yjc1MDQ0NmJiOTlkNGFkMWEwM2ZjMzExMzEyMDFkZmMyZmYwMmYgbGVnYWN5LXRydW5rCiszMTQ0MiBjNWViYWNiYmEwYmVjMDU5MzFhODc2N2E4NmVmM2I5MjIwZjM5YjVlIGxlZ2FjeS10cnVuaworMzE0NDMgY2RiMWFiYzFiNDA5MjliODAxYTE5MDQ5MmJkZmFjNjhjMmY1NmVmMyBsZWdhY3ktdHJ1bmsKKzMxNDQ0IGM3ZDdmMzUwZTk2YzQ1YTk2OGE1ZjRhODcwOTkxYjU4NDc3NWY3YTYgbGVnYWN5LXRydW5rCiszMTQ0NSBhNmRmYWJmM2I5MmJkN2EzNTVlODVhMTA3MDgwZjIwNjg3YWM5OGYwIGxlZ2FjeS10cnVuaworMzE0NDYgOTNkNDQ4NzBlOGI1OGExZWNkMTIzZDZhYTliZDljOTRjZTkxOGQyMCBsZWdhY3ktdHJ1bmsKKzMxNDQ3IGMzNDZkMDk1NzkxZDc4ODg1N2Q2MGY0YTVkODE5ZjBmMjk0ZjMyYTkgbGVnYWN5LXRydW5rCiszMTQ0OCBiZTM3MWZmYzRjZDA3YTFhZTUxMTNhN2VjNTUwNWQ4ZmI5ZGIwZTk2IGxlZ2FjeS10cnVuaworMzE0NDkgNGI1YzJlMDI1YzVlZjVmODkyZGY3ZWQ4ZGJiNGE0MzJhZjQ0N2I1OSBsZWdhY3ktdHJ1bmsKKzMxNDUwIDhlNzQzMmNkZjdkOGZjNjU0YWNiYzlhNDE2MGY4MTE2MDc2MTUxNzAgbGVnYWN5LXRydW5rCiszMTQ1MSAyNzU5YjA0OGRhOWI2ZjQwOWRjMTljMDQzYzNmZDg0M2JiNTkwMzU0IHJlbGVhc2UyMi1tYWludAorMzE0NTIgZWZjNDY1ODEwZTFlZGFjOWZmMTFhYTgyOWM5ZTJiYzJlNTgzMDk5ZSBsZWdhY3ktdHJ1bmsKKzMxNDUzIGVjMTA1MmVmNzNiYTg5YzQ3M2E0N2FkMzI5MzZiOWZjMDRhZDdiZDIgbGVnYWN5LXRydW5rCiszMTQ1NCAzMDE4ZjMxZjY4MzA5MjNiOTA4Y2ZjY2VmMTg1MzY2NjU1YzM1NWUzIGxlZ2FjeS10cnVuaworMzE0NTUgMmM0YWIxZGE2ZWI0N2VhMThjYTY0ZjZkYjg4MTYyNzExYWM5OTBmMCBsZWdhY3ktdHJ1bmsKKzMxNDU2IGJlZGFjYTk4NTNmOTA0Y2IzYjliNDgxMzc4ZmQ0NmNjOTM0YjQwYmQgbGVnYWN5LXRydW5rCiszMTQ1NyA4NGQzMDliNjc2ZmE3Yjc3MTI4YjQ5YTJjYTAwM2QxZTFkMjAyNzQ1IGxlZ2FjeS10cnVuaworMzE0NTggZTMxYjM5OTMwYTMxMjgzNGVjZGJjODczNWZkNTA0MmY3MWZkNmI0YSBsZWdhY3ktdHJ1bmsKKzMxNDU5IDNkYTMxNzc4ZWNkNzI0ZjhhMTQwZmU3NzQ2ZDQ0M2QxZjVhM2EyMjIgbGVnYWN5LXRydW5rCiszMTQ2MCA4NTBjMGRhMTAxYjYzZWJiZWJjNDZhMmNlODc0ZDRlODcxZWUzZmJiIGxlZ2FjeS10cnVuaworMzE0NjEgMmQ1MDA0OWJkMjFkZjdjYWExMWVjMmIxZDUwNTM5ZDc5OTZlOWNjYyBsZWdhY3ktdHJ1bmsKKzMxNDYyIDcwZTI5ZWY5ZmE2MmYwMWQ0ZjNiM2Y3OTJlNzVjNDBlYjU3OTliMTcgYXN0LWJyYW5jaAorMzE0NjMgYWM2ODNhYzY3NTlhZmNmZjU0Mzg0YTQ3MTc5MmNmYTAzMDczZjBhMSBsZWdhY3ktdHJ1bmsKKzMxNDY0IDQ0ZjNlMzE1OTI5YjllNGQ5ZmRmMzNkZjlhYTlmYzM3ZDIyZGZhZDIgbGVnYWN5LXRydW5rCiszMTQ2NSBmNjdhYjZiNjY0NTQwYjQyZDcwYWFkMGY0ZmVhMTcwMWJmYWQyNjBkIGxlZ2FjeS10cnVuaworMzE0NjYgODZiNTA2ZGJlYTE4MDMyZmYxY2MxMGU1OGNmODBhNTA4ODUwNGJjYSBsZWdhY3ktdHJ1bmsKKzMxNDY3IDFhZmFmZWQ5ZmE3NzU1YmMzODY1NDNkZTcwOGVmODI5N2RmMzNhMWEgbGVnYWN5LXRydW5rCiszMTQ2OCA4YzIxMWNjZGUyYjRiNGQ4YzU1YmUzNjRhNGY2MGFmZDdmYTk3MjJkIGxlZ2FjeS10cnVuaworMzE0NjkgYzk0MDFhMzZiYWU3MTRmMGNkNWYxNDFjZDE3ZjQ2NzMyNmVhNTg3ZSBsZWdhY3ktdHJ1bmsKKzMxNDcwIDhjNmM3OTc3MjdhOTM1ZmIwNTc5NTMxY2VjMzkwZGZmNWM5NWFhOWIgbGVnYWN5LXRydW5rCiszMTQ3MSAxYmQ0ODU3MTc1NjQ2MjYwYjlhNDUxN2E3NzI2MTAxNmIwNDM1OGUwIGxlZ2FjeS10cnVuaworMzE0NzIgMTQ0NTFkZDNhY2IwNGQxYWRkODExYWMxNmQ0YzA2NmJkYWYyY2ZmNiBsZWdhY3ktdHJ1bmsKKzMxNDczIDkyNTVmYmRlNDNmMzYyZDFjMDRmMzRkZTQ2M2ViN2E3MmYwZjEwOTQgbGVnYWN5LXRydW5rCiszMTQ3NCAzYjMwZjY2MzYyYmUwMDU4Nzk0NGFlOTY5YzY5MmIwZmFjMWUyNjU0IGxlZ2FjeS10cnVuaworMzE0NzUgYTY5NjJmNTJmMjM5ODFhNGMxODljOTQzYjM4Zjg0MGI5OGEwMTc4ZSBsZWdhY3ktdHJ1bmsKKzMxNDc2IGI1NTYwYWU0ZDk3MWRlMDU1MzMyZWI3NGNmMGZjZTBiNmY5MTRkOGUgbGVnYWN5LXRydW5rCiszMTQ3NyBkYWU3OWQ3ODMyMDU3OTYwNmM1ZmRjYzNiMjNjMjU5YTRjNWMyMjc2IGxlZ2FjeS10cnVuaworMzE0NzggMGYwMThkZjk3NGRiYjljODExMzk4ODVmZjFlMDE1YzViY2RiYTc2OCBsZWdhY3ktdHJ1bmsKKzMxNDc5IGRiMWQ0NTg0YTVlMWMxMTVjYjA4MmEyNWZjOTE3Y2U0ODY3ZDc5NTcgbGVnYWN5LXRydW5rCiszMTQ4MCBiNGVlYjBiYmRkNDhiOGNiNDViN2QxNDNmMWQyN2M3ZGUzZmFhNzNhIGxlZ2FjeS10cnVuaworMzE0ODEgNDdhNzY0ZTQzZTkwMTg1M2JmZThmMzQ2MDQ2YjNhNThiZGUwZGVlOCBsZWdhY3ktdHJ1bmsKKzMxNDgyIGI1NDBlNjA4YmI4YTZiY2IxODQ2MGNlNjE1ZDY2NDc2YWY3YTEyMjQgbGVnYWN5LXRydW5rCiszMTQ4MyBhYTg4YWVmM2FiMGVlYTg0MDM3MzMxY2FkOGI3MjY3MzdiZWE4ZDQwIGxlZ2FjeS10cnVuaworMzE0ODQgMWU3NmFlM2MxMTU0ZDZlZjFhZmJjYTI2ODcyYTFiMzBlZjY5ODFhNSBsZWdhY3ktdHJ1bmsKKzMxNDg1IGYzMTA4OTQxMDdjYjE5NTNhMWJkNWE3NzliZWU2ZGI1MjdiZmE5NmIgbGVnYWN5LXRydW5rCiszMTQ4NiBmMzMxMGRjZWYzZjhiNWUwODlmNjdjNDNmYTc0NzFlNzAyYmFkYjE2IGxlZ2FjeS10cnVuaworMzE0ODcgNzBlMTk2YWY0NzZkNDhlZWMzNTFmZjYxMGIwMzVmMmI5MGY5NDU5ZCBsZWdhY3ktdHJ1bmsKKzMxNDg4IDkxZmM5NjM3ZTU2YTA5YzIwMzBkNTUxY2ZmZWVmMDM2MjExMDEwYmUgbGVnYWN5LXRydW5rCiszMTQ4OSBlMDdiMjFlYTNjNDVkZGY0NDkzMGVmZTkxYTA4MTYyOGQ3MzYwMWQ0IGxlZ2FjeS10cnVuaworMzE0OTAgY2M0YWQ5YWZhMjFkMzM4ODBlZTJkMjIzMmNjZWY1YmIxNmVkNGI1YyBsZWdhY3ktdHJ1bmsKKzMxNDkxIGNiM2YxODkwOGNlYmVlMDViOWM5MTg0MjAwZjkwZWU1NjQxYTVmMTAgbGVnYWN5LXRydW5rCiszMTQ5MiBhYzEwNzI5ZjA5MzJkMDlhYjk3OGI5M2QzMzc4MDFmZWVkNTMwY2E3IGxlZ2FjeS10cnVuaworMzE0OTMgZTI3MzQyYTY0MTczN2Y3ZTAwNDY4MTdmMWU3MmRjOTRhZDBiZjk4YyBsZWdhY3ktdHJ1bmsKKzMxNDk0IDIyNjQ2MzQ0NTY5NzIwM2EyNzUwMzViZDA2YjMyOTZlOGNjMDg4NmUgbGVnYWN5LXRydW5rCiszMTQ5NSAzYmFhYmQwMjdjYzRkNDEyMGU4ZTEyNzBiNzUwMDMyZmU2MzNhNzhlIGxlZ2FjeS10cnVuaworMzE0OTYgOGRjYzUyMGQzYTI5NjdhMmJiYzU2MTYxZjZiMmM2ZDI1YzhkY2E5MSBsZWdhY3ktdHJ1bmsKKzMxNDk3IGIyOGQ0ZmRlOWU5ZmI4ZjNjOGI5MGNlOTNkODg3OTM1NGJmMmUwYzggbGVnYWN5LXRydW5rCiszMTQ5OCA0MzM3YTg5OWZkMTMyNDdmMzI0MjFlNDEzOTEyYjU2ZDFhNWUzYzJmIHJlbGVhc2UyMi1tYWludAorMzE0OTkgNDdjOTQyMTM1OGRkMDQ3ZDI5YzMzMjA3NTM4YjBjODY2NTFmMTQ1YSByZWxlYXNlMjItbWFpbnQKKzMxNTAwIDRjODVkZTI0N2VlZGI5N2Y0NGM5NDlmZjhkMzg2YzY0ZTIwZWMwYWMgbGVnYWN5LXRydW5rCiszMTUwMSBlMGE4YzMxMTUwMDVlMWMzMzllOTM2YTY5MDBhMjdhY2Q3NWRlM2ViIGxlZ2FjeS10cnVuaworMzE1MDIgMmUwYWE2OGQ0MzRmY2M0MDZhZGE5ZmY1YTM5OGE3ODY1MmFkYjBhOCBsZWdhY3ktdHJ1bmsKKzMxNTAzIDUzYzgwMjkyNzIwMmU4NDI3NTM4NDQ2YTQ1NzkzMWVlNTNkNTAyNDAgbGVnYWN5LXRydW5rCiszMTUwNCA4ZmM5MWY1MGI4NjE1MDY1ZDZmY2NlZThmZTgzMThkZmI3ZDg5OTM4IGxlZ2FjeS10cnVuaworMzE1MDUgZDBkMjlkZjJiNjM5MDA1M2Q1YjNkYjQ5NTk5NzAzNTI1MjRlYTVhZSBsZWdhY3ktdHJ1bmsKKzMxNTA2IGNjOTViYjc4NzBkYzU0N2MwY2M4ZTgzNWZkNzQxOGU2N2Y3OTFhMzUgbGVnYWN5LXRydW5rCiszMTUwNyBkNWVhMmI2N2I1ZjQ0M2YzYzY1NzVmY2JkZmM4YTYwMjc0NzRlYmExIGxlZ2FjeS10cnVuaworMzE1MDggMGZlMzIxZTc4YWQzMWExYmFhYmQ5NjVkNTU3OTE2MTcyODdhNjM0MCBsZWdhY3ktdHJ1bmsKKzMxNTA5IDRiOTlhNzAxZGVmZTBlYjcwYjYzMTk4ODEwYTc2MDQyNTFiY2IwYzQgbGVnYWN5LXRydW5rCiszMTUxMCA5NjMyN2VjNzZkOWUwMmI4NDMxMTU4ZDI0NjFjMThjYzNlNGZkOGFmIGxlZ2FjeS10cnVuaworMzE1MTEgZTAxZDVkYmI2NmE0NTkwMTFlMTRjZmM4MmI0NzAzMGMzOTI3NjA5ZSBsZWdhY3ktdHJ1bmsKKzMxNTEyIGViMmE5ODRkMzc0NzNlY2RlNzM1ZDI1YmJlOTY2OGFiNjMyNGExYmEgbGVnYWN5LXRydW5rCiszMTUxMyAzODdhNDEyMmNiZDFlNjZjMmRiY2M1Y2U1MzE5ZWI2ZTNiNmJjMjRjIGxlZ2FjeS10cnVuaworMzE1MTQgOWUwZjIyNDIyNzdiZmMxZmM0MDJmMTQ2MDJiNGE2NzdhZGYxMTBhZSByMjNhMi1icmFuY2gKKzMxNTE2IGNlZjdjOTVlNzQ4YzFjYzY4ZTk0YjlhY2IzMjU0OWRmYTkzOTJmY2EgcjIzYTItYnJhbmNoCiszMTUxNyA3NjUwMTk3NThlOTUxMDJhMmJhYTFjYjIyYTAyYmM0ZDg5Yjk5MTY0IHIyM2EyLWJyYW5jaAorMzE1MTcgNzIxYjZmMTgxZmNiOWE5NDIwYmNhODhkN2MwZjVmODU0NzQ4MjNjMSByMjNhMi1icmFuY2gKKzMxNTE5IGM0YjkxOWZhMGJlM2ViOTRmNzNjNzQ4YjY4ZGFhNWJkZGY5NmY1OWYgbGVnYWN5LXRydW5rCiszMTUyMCA0ODA5ZmIwZTg2NjAxODg0ZjhmM2UwY2M3NTg2Yzg0YmQ1N2UwYmQyIGxlZ2FjeS10cnVuaworMzE1MjEgZjU5ODcwOTc2MTQ2ODYwYmFiYzVkMzY0ODY1ZTZkN2RjZmJmMTQ0OCBsZWdhY3ktdHJ1bmsKKzMxNTIyIDY1ODYwMjEyNGRmNTI4MjNhNjU5MmE2ZDY1OGRhZWY1MDZhMWFiN2UgbGVnYWN5LXRydW5rCiszMTUyMyAyYzc1MTkzNmY2OTc2N2E3YWY0MzQ5ZDFkY2ZmNzI1M2RhZTllZTdmIGxlZ2FjeS10cnVuaworMzE1MjQgYjI2ZjU3NTg0MTRhMGYxMzUwOGYwYmE0OWFlYjNlNzI5YjU3MzI5MCBsZWdhY3ktdHJ1bmsKKzMxNTI1IGU3YjI2YzNmMzU2ZjU3ZDM1OWM1NTA5M2Y2OTJmOGE0Njc3NDI2MWUgbGVnYWN5LXRydW5rCiszMTUyNiAwYjNkYjBlZGIxNTFlYzAwN2ZjZDNmYjUyNGJmZDc2NGNmNDgyMjZhIGxlZ2FjeS10cnVuaworMzE1MjcgNTM2N2NkMGVlYzQ3N2M3NTkwYTMwZDIwZWUxNjlhZTQwM2Y5NzdhZCBsZWdhY3ktdHJ1bmsKKzMxNTI4IDQ0ODk5MThhNGNjZGI5MDM2MDI0Y2M4M2IyNzZiOGE5OTliMDVjOGUgbGVnYWN5LXRydW5rCiszMTUyOSBiZWVhNGYyMWM5ZjA1N2MzYjEzOWZmOTY4MGY1ODE2MjYxYjBlODM4IGxlZ2FjeS10cnVuaworMzE1MzAgZTI2N2VkMTAwZDg1ZmNhYWM5NTZjMDkwMjk4ZjExYjgxMzE5YzczYiBsZWdhY3ktdHJ1bmsKKzMxNTMxIGUxMWExNzhiYjQ1M2ZhNDQ3NmQxNGE1ZGRiMTY2NjY0MWRjN2NkNzQgbGVnYWN5LXRydW5rCiszMTUzMiAxMDdkOTg4OTAxYTBmOTNjNDY4YWM5MTA1MDc2NjAxMDEyMjg3MDNjIGxlZ2FjeS10cnVuaworMzE1MzMgOWUzOGY4MTcwOTJmZWYwOTJhZGY3YWM0NzM0ZGE2YzA3MTE4ZmQ2OSBsZWdhY3ktdHJ1bmsKKzMxNTM0IGUyN2Y1OGE1MDczNzA0ODI5YzdkOWIxMjdhNzlhNTNhN2EyMjliNmQgbGVnYWN5LXRydW5rCiszMTUzNSA4ZjcwNjAyZmJlYmIzYzNjZTE3NzFhMDRmOTBkMDIwNDYzODY5YzBjIGxlZ2FjeS10cnVuaworMzE1MzYgMWQ5MmMxNWJkMGU3MjU4OTEzN2RjZDY0ZGUwNGI0OTM4OWY2MWU2OSByZWxlYXNlMjItbWFpbnQKKzMxNTM3IDczOWVjZmI1ZjE1ZTg4OWMwZmYxMThjOGUyZWEwNGIxODRmMzI5NTIgcmVsZWFzZTIyLW1haW50CiszMTUzOCA3N2JlZjZhYTQ4ZTU1ZmIwZDg2YThiMThkNDMzNjIyMjAzMWFjYTNmIHJlbGVhc2UyMi1tYWludAorMzE1MzkgMTZiMjUwMzIyMTdmZjUxMDEzNmE5Y2ZmYmM3MjkxYzMyZGI1Y2Q0MiBsZWdhY3ktdHJ1bmsKKzMxNTQwIGQ5MmQ5YjZhOGE3ZDNjMjY4N2JiNTFlZjAyN2I0YjVjOTk1YTQwN2QgcmVsZWFzZTIyLW1haW50CiszMTU0MSBlYjVlMjk2MTczMTA5ZDBjY2YwOThmZmFiOWYxNWI1MDY5ZGFlNTU2IHJlbGVhc2UyMi1tYWludAorMzE1NDIgNWNmMDkyMWY0Yjk2MjYyNWU5ZGFlMmYxYTFjYWZjOTVjYzRiNTU1YSByZWxlYXNlMjItbWFpbnQKKzMxNTQzIDJkZjkyMDQ5ZDkyNTAxN2JiYjg2MDE1MmFjZjdhYjc2ODQ0YzZiMTYgcmVsZWFzZTIyLW1haW50CiszMTU0NCBhNGY5ZDkxYTMyMWE3OWRmNDhiNzU3OTU1ZDI2ZDIxNDMwZjZhYTJkIHJlbGVhc2UyMi1tYWludAorMzE1NDUgZmUxMGVjZThiYTY4YzRhZWZhNDhkMTMzNzM1NzYwN2UzYWY5ZTE3ZCBsZWdhY3ktdHJ1bmsKKzMxNTQ2IDdhYTIxNjM4ODlhY2Y4N2YwNjU0OTFhZGE4MTUwMzk0M2U1ZTJhNDkgbGVnYWN5LXRydW5rCiszMTU0NyAwZWI5NDgzNjQ5OTBmYjk5MTUyNGRiNDY3Zjk1MWQwNjRiMzRlMGY0IGxlZ2FjeS10cnVuaworMzE1NDggZmFjZmY1MjJlNzQ0MmNlMDFmYThjYjM4MGI2NTJjNWZkMTM4Y2QzNyBsZWdhY3ktdHJ1bmsKKzMxNTQ5IDcyOWExYzJlYzRlOGUwZmRhMmRlNTNhM2ZkN2JhMTQyYWRlZGY1Y2UgbGVnYWN5LXRydW5rCiszMTU1MCA2MTI4ODNlYWY1MGM2ZTcxY2ExODcwMDhlNmY1MWU5OWY4ZWI3MTVlIGxlZ2FjeS10cnVuaworMzE1NTEgNzlhZDYxNTZkNmM0MjQ0NjU4MTdjNWJiZTZmNDk2OGY0YjFhNDYzNSBsZWdhY3ktdHJ1bmsKKzMxNTUyIDA1NmZmYTU1NDUxN2E3ODg3NzdkZWViZDE3YjIyNDMzN2U1ZWI5MWUgcjIzYTItYnJhbmNoCiszMTU1MyBhOGMwYWY4MjI4ODg0NmU4YTk1ZWFmZTY4YjAwMmY0NmUzMmYxYTc5IHIyM2EyLWJyYW5jaAorMzE1NTQgYTJlOTcwNTg4ZTViYjY4ODAyZWFjZjk5MjgwMDI5MDhiM2FlNTFkYyByMjNhMi1icmFuY2gKKzMxNTU1IGJjZTNkZjA3NWYzNzgwOTNiMjgwZjRmMGYzMmI1ODQxZTAzMjhlMWUgcjIzYTItYnJhbmNoCiszMTU1NiAzYmJjYzNiYmE1NjBjOGI0NjczZjMxZjhhZmQxZjg2YmYyY2RhNTY0IHIyM2EyLWJyYW5jaAorMzE1NTcgYjg0OTQ4MmM3MGM2ZDlmMGI1NTAyY2MyYWVhMDI5OTViYTkzY2YyNCBsZWdhY3ktdHJ1bmsKKzMxNTU4IGZhYzc2MjI4M2FiY2NhZjEwMjZmZmNjMDBjZDBiYjc1N2YwOTg2ODIgcjIzYTItYnJhbmNoCiszMTU1OSAxZTkwNzQ2MmU4M2FkYmNmNTRkYmE3NTRlZjQ0MDEwZTYwZThmOWZjIGxlZ2FjeS10cnVuaworMzE1NjAgNzhjOWM0YTAxOGNkMWEwMzhiN2ZhZTU5NDM0ZGMxMmFmMmExYWIzMiBsZWdhY3ktdHJ1bmsKKzMxNTYxIDMyYTBjMmY0MjJmMThkZTkxNjRlMDMwMTFlNjEzNzk4YTA4YTNmM2MgbGVnYWN5LXRydW5rCiszMTU2MiAyMWE1MGMzMDhkYjQ1OTJlZDBmOGZkNWZhMDk0NGNhZTQ0YmYzNzM4IGxlZ2FjeS10cnVuaworMzE1NjMgNWRmYWZmOTgwOTEwMDFkZDZmMjVhYjIwY2M3MzQxZjUwZGViMTk0NiBsZWdhY3ktdHJ1bmsKKzMxNTY0IDg3MmM2ZjIwMjhmYzRiN2YzNmZmZmY1YzM1Y2Q1ZWQ2ZjU4ZDRiMzIgbGVnYWN5LXRydW5rCiszMTU2NSA4MDg0MzdiODNiMTUxODY2YWQyM2IwOThlNWI1ZDU5MzBjNTA0MzZjIGxlZ2FjeS10cnVuaworMzE1NjYgNjFmYTZiNTVjMWRlMmQ2NWE0ZTYzMzJkMWE4OThlZTA1Y2NhMWNhNSBsZWdhY3ktdHJ1bmsKKzMxNTY3IGU2M2YxZWNjZDI1MGRhZDM5YTVlYjkxODhhOTBiODNhNWVkM2RkYTEgbGVnYWN5LXRydW5rCiszMTU2OCA5MDY0NTk2MTRiNWU3MTJiNTE4YzkxNjI5ZTg1M2ZlMWQwZmJjOWYwIGxlZ2FjeS10cnVuaworMzE1NjkgNDNhOWVjYmQ5NjA3Y2EzM2QxODcyNzkxNmE4M2E5MzVkMDVmNGQ0YiBsZWdhY3ktdHJ1bmsKKzMxNTcwIGFiZDU3YzUzNThiZDdhMGVhMDMxMDJlOTgwMjkwMzAwNGE3MzllMjEgbGVnYWN5LXRydW5rCiszMTU3MSA2ZTIwYjA0OWVkNmY2YzQ1YzgxOTU4M2IxMThlZTA3MDNmZDEyZTU3IGxlZ2FjeS10cnVuaworMzE1NzIgMjVmZDI4YzhiYjZiYWU5YTgxZTMzNmYyZWI1MmQ1MjU3YzBhNGJkZCBsZWdhY3ktdHJ1bmsKKzMxNTczIDkwNGE4YjgyMmRhZmJmYmM2ZWZhMjQ1ODU2OWYzNmZlMTRiZjc3MTMgbGVnYWN5LXRydW5rCiszMTU3NCA1M2JlZjIwZjg0Y2NkMmU5MjM5OTNiY2Y1Y2ExZjJhMmZkYTVmZGQyIGxlZ2FjeS10cnVuaworMzE1NzUgMWMyYzk3ZDM0NTYzODRlNzJiOWYxYjE0MGQ5ZTUwZmUzZWE5ZGFjYiBsZWdhY3ktdHJ1bmsKKzMxNTc2IDkxNjI0YTQ3NTM3YzcwMWQ1OGU4NGZjYzg3OTMwMmEwMGIxNGVmMDAgbGVnYWN5LXRydW5rCiszMTU3NyBmMzRmY2Q2M2FlMjhlMDgzNTc3MjZjZjhmZTdmZjI5MWNiNTA4YzAzIGxlZ2FjeS10cnVuaworMzE1NzggNTNmZmFiNWRiMDE1ZGQ3YWM2YWI4YThhZDY1N2Y3ZGM1N2QwYmNiMCByZWxlYXNlMjItbWFpbnQKKzMxNTc5IGJlMDlkMzI2ODdkOGM1ZWY1NzlkNTlkMGMxMmM0NGNiZDgwYTRiMGEgcmVsZWFzZTIyLW1haW50CiszMTU4MCAzZGRiMDkyYWNlYThiOGFlNTMzZTI4YmEyZDU2ZTM3NDcxY2QyM2NhIGxlZ2FjeS10cnVuaworMzE1ODEgNGY2YzYzMzA4MDYzMzdkNTBiMjg0Y2YzOGJjZDhlNjFiN2QxNDJhYyBsZWdhY3ktdHJ1bmsKKzMxNTgyIGQ4YjlkN2MwNDE0NjU0M2U3MWFiZDVmY2IwZmRhYzc4YjMxNTRjM2QgbGVnYWN5LXRydW5rCiszMTU4MyAxYjY1MzhhYTA5NTkxZTFlOWI0MjYwOGI3ZWE2YTZkZTBkOTQwODQxIGxlZ2FjeS10cnVuaworMzE1ODQgNGVhMzc4YTcxZjk2NmE4YmQ4ZjAyZDY2YzM1ODI4Y2M4YmQ1YjBhZCByZWxlYXNlMjItbWFpbnQKKzMxNTg1IGRiOTJjNzdiMDVlMjZiNWNlMzkwNWM3YjIyM2I1NmE0OTJhMDYwNGQgbGVnYWN5LXRydW5rCiszMTU4NiA0ODZhMGY1MTZkYjAzZDE3YzcwODdmYTQ1YjllYTQzODRjMmU2ODkzIGxlZ2FjeS10cnVuaworMzE1ODcgNzg0ZWQ2MDViNTEzMGJhYTZmNDNmYjBiYTJhZjQ0YWEyY2Q0MzdmYiBsZWdhY3ktdHJ1bmsKKzMxNTg4IDc4MDJkOGMxYWRhYzg0MGIyMDQyODI4NzFlNTdlMzI4Y2U4ZGUyOGIgbGVnYWN5LXRydW5rCiszMTU4OSAyZThmMDUzMTkxOWJiMmYxNDQxYzJlYTc3ZDVjNDgzMWVmNTE3ODIwIGxlZ2FjeS10cnVuaworMzE1OTAgMTkyYmQ2ZTEzNWFhZGE1OGY1NzVjMzczNzg1ZDdlNGUyOGU0YmM4OSBsZWdhY3ktdHJ1bmsKKzMxNTkxIGIzOGNlYmM3NmQ4MjUxZjVhMjlkYmMzMDE5YTJlYmVjMGRlYzM1ZWQgbGVnYWN5LXRydW5rCiszMTU5MiA1YWJjNWQwODgxNGY5NjhhM2FjZGI0YzNlMzc1NWE1MGU4OGNiYzRmIGxlZ2FjeS10cnVuaworMzE1OTMgODIzZDViMWYzMmUxMmViNTk5NTUzM2FhNTZlMDQ3ZjJlOGI5Y2M0MSBsZWdhY3ktdHJ1bmsKKzMxNTk0IDBhODliNDA2YzczMmYxZjZhMjM4YzJhMTk4NTliYThiZTQ1ZGNhNzQgbGVnYWN5LXRydW5rCiszMTU5NSA0OThkYjFiY2Q2NjQ4OTRjYWQzYWJjYzM3Y2M4MzQ1NTUzNWJmYmQ3IGxlZ2FjeS10cnVuaworMzE1OTYgY2E1YjBjZDdhNTI1MDQ5NWNkYjBhZGNkNDM2ZTE4NmY2YWZjOTMzNCBsZWdhY3ktdHJ1bmsKKzMxNTk3IDQwMTM0MDcwZTZhNmEwZGRiYjFmN2VhNzg4NDlmOGZlN2FlM2Y3YWEgbGVnYWN5LXRydW5rCiszMTU5OCBhOGM4N2EwYmViOTgwMzYxMDkxNWNkMDY2MTNiMDMwNzZiMGY4MzFmIGxlZ2FjeS10cnVuaworMzE1OTkgMWEwYzIzMWM2YjBjYWU4MDQyOTQyNmYxODk5YTBjMTg2ZjZmNzk5MyBsZWdhY3ktdHJ1bmsKKzMxNjAwIDcyM2M1NDU3MzA3ZDkzODVhYjJhYWJlZTE5MGU5NDAxNjdmZjkyMjIgbGVnYWN5LXRydW5rCiszMTYwMSA3ZjkwYjViNzAwMWVkMWZkODhmOTgzZGI1ZjAzNWI4MTVmMmNjMGJhIHJlbGVhc2UyMi1tYWludAorMzE2MDIgZmI3OWNjMjYzMGMxZWU0MjQyYmI3MjE5YzA1OGQ3YjhiZjI0ZDE4NiByZWxlYXNlMjItbWFpbnQKKzMxNjAzIGY4ZmM1ZTE0YmZlODdhNWNmNWRkNzVjMmQxNjMxZTRjNzA0ODg1MmIgbGVnYWN5LXRydW5rCiszMTYwNCBjNzU2NjE0NDQ2NTUzODgzMjVkMjAxMzVjZGJkNzYyNWU2MmZiMTEwIGxlZ2FjeS10cnVuaworMzE2MDUgYzM2NjVkZjY2ZDZkNWIyYzhkYTliOTY1YmIxY2MwMjkxMmUxYzkxOSBsZWdhY3ktdHJ1bmsKKzMxNjA2IDMyNDg5NmI3ZjRlMWUyNTkxOGFmMWE4ZTk5MzUzNDQ2MWVjY2E5NzggbGVnYWN5LXRydW5rCiszMTYwNyBjNjFlZjE4M2NlMmYxNTY0NWM0YTQwMGFjMDFmYTY1YTlhOWM4NjIyIGxlZ2FjeS10cnVuaworMzE2MDggZDY3MzA1OTA1MjZjMzE0YzVhZTBmNmY4YmE2YTcxZTM2NDdhMTEzZiBsZWdhY3ktdHJ1bmsKKzMxNjA5IDlkMjk3ZDNkZTM2ZjU4NjFhNWRiNzY3ZTljYTc0MGViYmUxNTdkNzUgbGVnYWN5LXRydW5rCiszMTYxMCBmNzJjMzgzYmNjNDVkNGY4ODQ0ZjMwM2M0NDYxOTQ2NWFhMTVlY2ZjIGxlZ2FjeS10cnVuaworMzE2MTEgODZkODM4NGQ4ODEwMmZlMjg4NzIzMDE3NTY0YjEzNzZhMmI2YzVlNiBsZWdhY3ktdHJ1bmsKKzMxNjEyIDg2Njk2NGM4NWI4ZTI2ZDgzOTVjNDE3NzY5ZWE0ZTUyNWNjZjM4MzIgbGVnYWN5LXRydW5rCiszMTYxMyA1YjNkNTliOTc4YTJkNjlmMTY2ZTNkOTcyYWFiMzIxZDJkZGM5YmM1IGxlZ2FjeS10cnVuaworMzE2MTQgYThhNjQzNjRhNzExZDQxOWQ2YThiYTVmNmJlODVkZWRlYTFiZmY5NSBsZWdhY3ktdHJ1bmsKKzMxNjE1IDA0NTVjZjg5YjEyMzk4YTBlNjhjM2U2NTNkYzQwODkxMDliZmY1OTUgbGVnYWN5LXRydW5rCiszMTYxNiBiMDQ2MjVjZWEwNjEzYWFkNmRhNjgwYTNmZjdiOGRmMDkyYTYxZThiIGxlZ2FjeS10cnVuaworMzE2MTcgN2ZkY2M0Y2ZjNzU5MTc1NTRlOWFkNzczMTE2N2RmYzJlYzc4YjlmMyBsZWdhY3ktdHJ1bmsKKzMxNjE4IDAwZGVkNjJkMjY3OGE0MzVmZDQwZDZiY2QwMDQxYjhiZDA5NmE2OGIgbGVnYWN5LXRydW5rCiszMTYxOSBmY2IzOWIwYTZlMzA2YzgwNThjZmU3NDVmYTAxZmRlZGRkYjlkZjcyIGxlZ2FjeS10cnVuaworMzE2MjAgYmI2YmQ1NDlmOTJhNzk2NGViOTY5YWZlMDRjYWE1MDlmZTAyNDU3YiBsZWdhY3ktdHJ1bmsKKzMxNjIxIGI4Y2I5MGZjMzUyM2QzNjg0OWE0YTA5ODgwYmQ5NjkxNTU3ZjhlNmQgbGVnYWN5LXRydW5rCiszMTYyMiAwYzg5ZGM2MjU0YmU4ZDg3NGVmMTBiM2M5ZmYxOGU0OGNjNjQxNjdlIGxlZ2FjeS10cnVuaworMzE2MjMgY2Y5ZDkxMjgzNDVjM2YxYjQ5YWRmY2RmNmVlOWNiMjdlODI5NzVmZSBsZWdhY3ktdHJ1bmsKKzMxNjI0IGE1ODc0NDUzYmYxN2M2NjA4ZTU5MmQ3ZmJhODJmN2IzZDk0NDg3MWMgcmVsZWFzZTIyLW1haW50CiszMTYyNSAyOTk2NWQwZDQ2NTA1OWQzMDg3NGU2Zjc4MGM1NDg0YWUxMjZjYzQzIGxlZ2FjeS10cnVuaworMzE2MjYgNDRiYTE1NzI1MThmNzAyOWRhNTRiMGNhMzYzYjkxNjdjN2VlYzExNyBsZWdhY3ktdHJ1bmsKKzMxNjI3IGY0MmZiYzdjN2Q4ZTlhYzJlMDVmZDQyZTc0MjAwMjFiZDA2YWZjMDUgbGVnYWN5LXRydW5rCiszMTYyOCAyNDc0MzgxNTI3YmJjOWM0MmEyMGQ1ZTk0OWQ3NTIyM2Q0YTA3NzA3IGxlZ2FjeS10cnVuaworMzE2MjkgNDY1NDA1YTE1OWMxZjQyNzdmNmE0ZTZkNDY3NGM4MTEzNzk1ODMxOSBsZWdhY3ktdHJ1bmsKKzMxNjMwIGQ5ZTljOTY0YjZhNDZlNTBkYWZmMzQ5MzZhNWI5ZTA3M2ViMjM3NmYgbGVnYWN5LXRydW5rCiszMTYzMSAxNGY2NWQ2NjEwODQ4ZTViYzk1NmI0NzY4ZDQ5YzhjODhkY2Q1NjYzIGxlZ2FjeS10cnVuaworMzE2MzIgM2M1YTg4MTQ0NzBjOWM0YmZhYjc1ZWM3MGQzNTYwMjNmNGQ4NGRlMyBsZWdhY3ktdHJ1bmsKKzMxNjMzIDA0YTkzYjdiZGNlNDk2MTE1YjEwNzhiOTdmMjkyY2MzZDk0ZTc0MWMgbGVnYWN5LXRydW5rCiszMTYzNCAxMmJhYjg3YTNkZDIzNDVjZTlhNDNhMDIzNDBmYjliOTMzYTUwODUyIGxlZ2FjeS10cnVuaworMzE2MzUgODk5ZjJkMjEwYTM0ZDg1NDBlNmEzZmY0ZGM2ZTQ2ZDRlOTY1MTM5NSBsZWdhY3ktdHJ1bmsKKzMxNjM2IGQ1YWFhNjdjMDk2YWYzNTY5MmUzYmRjOTQyYWVmZWJhODBhZThiYzMgbGVnYWN5LXRydW5rCiszMTYzNyA3NDhmMmU1YjgyOTM4ODJmN2ZjYmIyMTg5YTI4OWZjMmJjOTQyYjIzIGxlZ2FjeS10cnVuaworMzE2MzggMzEwMDg0MzNjNzRmYWRmOGJmYTliOWQxNmVjYjYwNGU1N2IyYzU1OSBsZWdhY3ktdHJ1bmsKKzMxNjM5IGQ1MGQxZmY0MmI1YWNlOGQ1NTYxNmYxMjA5YWE2NTFlNzNlZGI5ZWEgbGVnYWN5LXRydW5rCiszMTY0MCAyZDU5Y2EyOWYzODRkNzkyYjNhODE2YjllNWE1ZTIyMmNmYjZlZDc1IGxlZ2FjeS10cnVuaworMzE2NDEgN2U2NDkxMzgzMTJiM2ZmNGRkODJkYjFjZDRmNWRmNjVjNzQzNGRhYiBsZWdhY3ktdHJ1bmsKKzMxNjQyIDU0YjM1ZGE5ODc5ZTk4ODA1Y2ZlMTNiNTRkYzM2M2JhYjZjYTIwYmYgbGVnYWN5LXRydW5rCiszMTY0MyBhYjI3MTgzYzg5MjdmNjUwOTY1MTQ5OWI1NGYzOWJiNDcyN2IzNGMxIGxlZ2FjeS10cnVuaworMzE2NDQgZjRlNzJhMWE5ZjEzZTg2YzI2MmVmNDUzYzU1MjAyNzU1MTU3YTFlMiBsZWdhY3ktdHJ1bmsKKzMxNjQ1IDVlNWVlZmEyNWYzYWQxYmY1OTY4ZDBjNDI3MjFiODcwZjgyYWY1ZjkgbGVnYWN5LXRydW5rCiszMTY0NiBiZjg2NmFiMzlkZmYyYTU3ODc0NmI3MTM4ODQ1YmY0MTI3ZjQ1OTIyIGxlZ2FjeS10cnVuaworMzE2NDcgMmYzY2QzZjU0MGFkMWFhNTBkOGNlZTMxYjBiMTg5ZjIwZTZmZTg0MiBsZWdhY3ktdHJ1bmsKKzMxNjQ4IGQ5YjQ4N2I5MDM0YTQ5M2Y2NzQ5YzdjYTI4NjQyNjk2MjhkMmNhODggbGVnYWN5LXRydW5rCiszMTY0OSAxNTc3M2U3NThmYzczYWJjNDk1NzRjOWQ4ZGQ5ZTQwY2Y1NzQzODQxIGxlZ2FjeS10cnVuaworMzE2NTAgOThkMTA3MTM2MmYwNDBkNDM4ZTU3YWI1YThlNzNmYmUzOTAxZWZkNSBsZWdhY3ktdHJ1bmsKKzMxNjUxIGRkNmE2MjU3OGJjODY0MDY0NGY5YmExNDcxYmM0MWE2YjFmYTNkNzIgbGVnYWN5LXRydW5rCiszMTY1MiBkMzZkZDQxZTg5MGYyYmExOTZjMzgwZTE3NmVlNDZmODFkZjI0YmY4IGxlZ2FjeS10cnVuaworMzE2NTMgN2EyZjY4MzM5NWU3MjgyYzhiMzNkZmUyNzZhODYwZGRkOTQwZDk2OCBsZWdhY3ktdHJ1bmsKKzMxNjU0IDJjOGMyYzZiMmFiNzliMWU0ZjI2MjA4OTc5YTBmNTNjYjhhZDI3MWEgbGVnYWN5LXRydW5rCiszMTY1NSA2Mjg4OGE3ZWRmMGI1NTRmM2NkZDIwNTE4NmQ5NzZlYmE4ZDdhNWFkIGxlZ2FjeS10cnVuaworMzE2NTYgMTQ0NjNmNDc4MjQwMjI2OGFhZDM2NmIzZTkxNzQ1OTAwMjM4ZGFjMSBsZWdhY3ktdHJ1bmsKKzMxNjU3IDJmYzUyYmU3Nzk5OTEzNGQ3MGYyNTZmNTI3ZjgyZmY1ZDRkN2QyYzMgbGVnYWN5LXRydW5rCiszMTY1OCA5Mzc4ZjZlNTUxYWU3MjE2YTFkMGJmNTBlMmE4MGU1MmMyMzJiNjFmIGxlZ2FjeS10cnVuaworMzE2NTkgOWI0ZWVkNGJiM2UyZTRhMTgzMzljNTI5ODg3ZTYxNzYxYzRhNDQyMiBsZWdhY3ktdHJ1bmsKKzMxNjYwIDRmNGYyYTE1NDQ3ODQ5NTVhZTMxOGEyZmNiY2I1NmU3M2ViZDhmMTEgcmVsZWFzZTIyLW1haW50CiszMTY2MSA4Njk2OTVjYmEyY2QzN2U2M2FkNWQ0Y2I5MmNhNTVhYWU1OGI0NWRmIGxlZ2FjeS10cnVuaworMzE2NjIgZDI0NTY0ZTdlOTk5Y2RkY2M5YWEzZDI1NzQ4NGVjMDU1ODY1N2NmYiBsZWdhY3ktdHJ1bmsKKzMxNjYzIGMyNGEyM2IxZjE5OGFmMGI1MzU3MTljYmE3YTY4NjgyZmY2Y2U1N2QgbGVnYWN5LXRydW5rCiszMTY2NCAzOWNiOTE3YjVmN2FiNGJhZTkyNDJiNjBhZTE4ODEyZmNiMTZjOTBiIGxlZ2FjeS10cnVuaworMzE2NjUgZjE5ODFlZTk4MjIzY2U1YWIyNTBlNzAwNjNhODA0OGQwZDMwZjAzNSByZWxlYXNlMjItbWFpbnQKKzMxNjY2IDg4ZTU4ZTNkNTgwNzczZTcwNGUxNjE5NWRiNjFmZGI5NjJhM2U0OTEgbGVnYWN5LXRydW5rCiszMTY2NyBmNDY5YTZkMDc3ZjFlOTUwOGU3YjQ0ZWRkZDVhNGJkYTc1ZDg4ZjUxIGxlZ2FjeS10cnVuaworMzE2NjggNGNjY2VmOWI0ZDU0NTc1N2JlMmEzMTQzNTZmOGM1OTdlZWE5MGQyNyBsZWdhY3ktdHJ1bmsKKzMxNjY5IDVmOTIzMTY1MzE5ZDVjYjY4Yzk1OWI4NjM2OGZlYmZkZmQ3Mzc2MWQgbGVnYWN5LXRydW5rCiszMTY3MCA4NzkxMzUyOWYyNDgwOThmOWU1NDdkMmI2YjU5Mzc3MjhlYTBiOWVkIGxlZ2FjeS10cnVuaworMzE2NzEgYTI0YWFiY2Y1ZWEyODE4NmI4NWQ2YTNjMTYwODkzZTNhNmIyNjU3NCBsZWdhY3ktdHJ1bmsKKzMxNjcyIGIwMDljM2VmMjdiNTFjNTM3OWIwM2I3MzkzODFhYTM3ZjAwOTM3NDkgbGVnYWN5LXRydW5rCiszMTY3MyA1MGVhOGRlZDI5ZDAxN2YzNzI1MzlkOGM1MzkwNzUzNDczYTU1M2FhIGxlZ2FjeS10cnVuaworMzE2NzQgMDQ3YjVkMDAwYWFhNTE2NGRkNzhiZTVkMTE2MDY3Nzc4NjVhZmU4NCBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjc1IDFkNjYyMzQyZTE5YTY0YjM2OTljNGJkNzdlMDlhOGE3NzExMmM3OWEgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY3NiA5N2I5N2U1NzE5MGNmZjczOTk4ZmQxOWUyM2E5ZjQ4NDY2ZWE5NThhIGxlZ2FjeS10cnVuaworMzE2NzcgZjlmMzAxMGZjODZmNzZhOTFiYzJmNTQwMTk5ODRiYTNjNWQxZTVkNCBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjc4IDljYTRhNjdiOTk3MzZmYmVhMDdkOGEwOTYyNDQwZjA5M2IzNTg4YmEgbGVnYWN5LXRydW5rCiszMTY3OSBjZGU0NDQxODQzMzZmYmRjN2I2NTZhNTBjYzMyOTdmNzQ3ZTNmYzc2IGxlZ2FjeS10cnVuaworMzE2ODAgYjUzNDU1YTUxYjc4MDk1ZjUzZDA3NjZlNmNmMDA2NjgwZDlkMDM4OCBsZWdhY3ktdHJ1bmsKKzMxNjgxIDY1NWEwODU1N2E0M2VjMTYyNGFiNjViMjIyNjZjMTcwOGI2NDYzOGUgbGVnYWN5LXRydW5rCiszMTY4MiA3ODliMjRkNjVkNDIwNDU3Nzg2NzhiYmY4N2Y0NDYzZjRlMjY4ZWU3IGxlZ2FjeS10cnVuaworMzE2ODMgZWIxNWRlNmE0YTRjZDA2ZDIwZWJhMDhmYTczMDIwYTQxODkxNzcxNyBsZWdhY3ktdHJ1bmsKKzMxNjg0IGIyMGEzNjg1ZDIzZTFkMWE2ZTM1Y2Y0MWVmNWJiY2ZjNThhMjQyNWQgbGVnYWN5LXRydW5rCiszMTY4NSBmOWRiOWRjNDU2YWI1NzAzODE3Y2U3NGQ0YTMyMjk3YjA2N2Y3Y2JiIGxlZ2FjeS10cnVuaworMzE2ODYgN2QwNGJkODk3NjYxODc0NWEwMWM4ZmY0ZjQzMjczZDNhMDVkMDRjNSBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjg3IDQxYTlhMDcyYzY4MTc2YWY2Y2M4ZDUyMGVkZDk3Nzk3OWE5YTU5MjEgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY4OCAyY2MxOWEzMjVkNjY3NjQwZTkzMjljZmQ0YTczOGM3MmJiZGJiNDYwIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2ODkgZGJmM2ViZWNhN2IxZGE2MmU2MjI5NTZlNTUyOTIwNmU2MjM4NjYyMyBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjkwIDM3Nzk2MWQ3NjYxMDVmZWUzN2Y0MDgyMTI3ODBlMmRkZDg3ZDFmYjcgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY5MSAzOTkyY2E3MDBlNjU4MDMxMzRmNjYxYzY4NzI3YmE5NjcyMWQ1OTY2IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2OTIgYTNjZjA3YmFjMzczNjlmMmE2NWQ1MjY1NTg2ODIwM2NjMzVmOTQyMSBsZWdhY3ktdHJ1bmsKKzMxNjkzIDUyNGU1ZjlmODVlNmFmMDMzN2NhM2I4OTU2YzU4ZjBkMzZjYjRmN2YgbGVnYWN5LXRydW5rCiszMTY5NCA4ODg5NjU0YzBkZDVkMDk5ZjA1ODU4ZjA1ZDg5YjFjNTg4NjA5NGEwIGxlZ2FjeS10cnVuaworMzE2OTUgODQzZDVjNzg5NTJhODIyZWEwMTkyN2YwMmI1YWIwMDQzZmM1ZTVlNiBsZWdhY3ktdHJ1bmsKKzMxNjk2IDg5OGNlNGU5NmY1OTJiMGM1YjA2NWMxNTY0YzA5ZDQ1MWI3MTUzMGYgbGVnYWN5LXRydW5rCiszMTY5NyBmOWI3MDJjNTJkYWVhMjk5NjJjZTAzOTJhMzc1YTA2ZTA1ZDE0M2IzIGxlZ2FjeS10cnVuaworMzE2OTggMjgxNWMxYTlmNzM1ODM0YmU3NjEyYjA2YmMyNjlhMWNjNDBlNzlkNSBsZWdhY3ktdHJ1bmsKKzMxNjk5IDllNzM3ZDYzZjM4MDFlNzRkYmVkZjMwYzI1MmRmYWNjMzUwNmNjMzAgbGVnYWN5LXRydW5rCiszMTcwMCA0NGMzMTIzNjc0M2EwNzgxNTIxMGQwNGFlMTA1OTdhNTdiZjRiM2FkIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDEgMjk0NzQ1OWIwNzg5MjMyOTNkNzY4YmFkMDcwOWJhZWIyZjM4YmY0NiBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzAyIDkwMmZjZmQ1ZDY1ZDA5OGFlOGFiMDExMDk3YTM5OTBlZWE3NTA4M2IgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwMyA3NmQwNjE4ZjNmZTBkODc5MmI4NDJlNzU1NDMyMzYxMTJlNmUxNDNmIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDQgYTgzNjFiY2ExYzVjYzc3ZTQ2YTExMWRiNGNkMGQ4Yzc4MmM5OGVjNyBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzA1IDVjMGRiNDFkMzhmOTM2MDliODMyNmZhZGVhMTJiYzRiYjkwZTYyZmMgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwNiA5NWFiZjNmYzJiMmQzMzQ0YzQ3MTVmNjdkNjhiMGM4MzY0MDA5OGM3IGxlZ2FjeS10cnVuaworMzE3MDcgMTJkNGRmNzFiZGFhMzVkZjQyZWU2NDQ3MWVkYjU2ZjZiMWJhODFhMSBsZWdhY3ktdHJ1bmsKKzMxNzA4IGJkYTQ5MGZjMjY5MWViOTg3NzRkYmY5NGQ4ZGJkNTU2MTM2ZjAxNGQgbGVnYWN5LXRydW5rCiszMTcwOSAwZDg1NTI0MDhmY2RlMThhNzVkYmIwNjJjZDI3M2U2ODQ4Y2FlOTU1IGxlZ2FjeS10cnVuaworMzE3MTAgZTlmYzJjMTQxNjA4OWViODcwMTlmNzkzMDdiNjFmMTc3ZTNiYzYxMiBsZWdhY3ktdHJ1bmsKKzMxNzExIDZkNzhjNmJmMzFmN2QyYzhmY2ZhYzE3NzI2NGY1OWQyMzBjYzI2NmYgbGVnYWN5LXRydW5rCiszMTcxMiAxNzhkMTljZmYxNjM4MTMyZmM3MzAzZmRiM2FmN2IzN2Q0MTIyODQzIGxlZ2FjeS10cnVuaworMzE3MTMgM2ZlNzJhOTk0MTAzYjM1Y2QzZDNlMTllOTM2ZTU5M2I2MTQxYjMzMyBsZWdhY3ktdHJ1bmsKKzMxNzE0IDhhNzEzMDFhZmMyZGE2MDJiNjc5NGNjYzE4YWRmZjg0ODlkYjBlYWQgbGVnYWN5LXRydW5rCiszMTcxNSA0M2M3ZDhhMDg0ZmJjMzlkOWUyZTVlYzc1YWEwMzk5YTI4NmVmZjExIHJlbGVhc2UyMi1tYWludAorMzE3MTYgZTQwNTkyOWMyMjNlNTdjYjJkOGE0YjNmZDJjNjdlMDJiY2I4ZDYwZSBsZWdhY3ktdHJ1bmsKKzMxNzE3IDI5ZDgwMzQwZmQ0MTRmODQzMzYzMGM3MGVkNWI4MGI5NjkyM2ExZTIgbGVnYWN5LXRydW5rCiszMTcxOCAwMWFlZDcyZTMwOWU1MmMxZGJlNjBiYzBkZDdjYzQ3MjRjOThhODIwIGxlZ2FjeS10cnVuaworMzE3MTkgYmExYmQ2ZjZlNmVkYzU2MDhkYzY2MTI1NWU4NzRlYWRkNjI3ODk5YiBsZWdhY3ktdHJ1bmsKKzMxNzIwIGFjOTY1YTUwMmQxYjc3YzVkYTZiOTgxZGRkMGFlMmY0MTYzZDA1YjkgbGVnYWN5LXRydW5rCiszMTcyMSBhYjg1Yzc1NmM1ZGYzYzYxYmM2MzM0NDgwNGUyYWYyM2IwN2RkYWVjIGxlZ2FjeS10cnVuaworMzE3MjIgODkxMzdiZTI1ZTdhZDdlZTRmYTBkMGM4OGMwYTRkYjkwNjc3Nzk0MCByZWxlYXNlMjItbWFpbnQKKzMxNzIzIDg3NzA0Zjg5ZWEzZjVjZjM5YTE1YTgzOTQ5Y2QxZDVjM2NiOGIyZTMgbGVnYWN5LXRydW5rCiszMTcyNCAzN2NkZTA3OGI5MzMyYmQyOTI4ZmRlOTRmOTYxOGIwNTIzNzNkYzU4IGxlZ2FjeS10cnVuaworMzE3MjUgMzAzMGQ2N2ZiNGE1NjY5N2Q1NDQzZjg0MTdhZGY0NGU1ZTNlYTY4ZSBsZWdhY3ktdHJ1bmsKKzMxNzI2IGJjMmQwNzIzMDkzNGQ0Y2VlZWZmMWJhMWRmM2ZmOGFmMzg1YTQzMzMgbGVnYWN5LXRydW5rCiszMTcyNyBjZTM3NjBlOGU2NDA2YTc3NWIyNDA0ZmEyMmYwZjM1MzA4OTU1YTY5IGxlZ2FjeS10cnVuaworMzE3MjggMjRmZTAyMzkwMWIwN2I1YmJjMmE0MmUwOTlmYzc2NWUzOTk1MWM3MyBsZWdhY3ktdHJ1bmsKKzMxNzI5IGE2Y2Q5ZDZkNWNhM2E0OTBjM2QwMTc2MzRjNWVhNjNlOWMyZmU5NGUgbGVnYWN5LXRydW5rCiszMTczMCA1Nzc2ZmQxODhmMjA1NDU4NjgyYzNlMTY2YTcyYWI3ZDYwNmUzMTI3IGxlZ2FjeS10cnVuaworMzE3MzEgM2Y5MGQyMWRlYmU5NmUxODIyNTk0MjQwYTJjM2Y5ZTFmMzI1MmQzMiBsZWdhY3ktdHJ1bmsKKzMxNzMyIDM5NWViNTYxZWNlMTM2NzZjMGYyZWQwOGZmYWQ2OTQ5ODQ1YTkzN2IgbGVnYWN5LXRydW5rCiszMTczMyA0OGE1MTEzZGZlZjk4MTJiNjJlZDVmNzcwZmZmNTcyMDM4MzcwNDBjIGxlZ2FjeS10cnVuaworMzE3MzQgNTljYTMyMDBiNmU1MDM0ZTIzZTBhZjI0MTIyOTExYTc0MmQ2OGZiMCBsZWdhY3ktdHJ1bmsKKzMxNzM1IDBhOGU4NjMyYzYzMThiOGM1ZjBmNDM4NTk5MzI4MGZkNzg1NzQ3YjQgbGVnYWN5LXRydW5rCiszMTczNiAwNGRmOTY1ZDY3NWI3ZDdkM2NiMDczN2I1ZWViZjI3OGY4NmM0OGUyIGxlZ2FjeS10cnVuaworMzE3MzcgNTg1MjM1MmQ5NTIyMmJhZTY5MGE3YzBmNTA4YmUyMjgxYzYwNzgwNiBsZWdhY3ktdHJ1bmsKKzMxNzM4IGNkMjFiZTgyZjUwYmJjYmJlNzhmZTYzNTYzNmQ0MGRkZGQ5MDFhMWEgbGVnYWN5LXRydW5rCiszMTczOSBhMWI4ZTY1NGQ1ZmUxNWY5OWYzYzk5MmY0NzI1OTg2MGIxZDAzNDE3IGxlZ2FjeS10cnVuaworMzE3NDAgOTJmMWQwMmUyOGYwYTlhNGY1OWM3NTIzYzA3NTQ1OWYwNjc3MWE1OSBsZWdhY3ktdHJ1bmsKKzMxNzQxIDczNmFkNzNkZjViNDhlZmZjNjdlMDYwODYxNmI4MjY4MTI1ZWFmYjAgbGVnYWN5LXRydW5rCiszMTc0MiA0NmE4MWJkOGNhMGNkMDMxMTRkNmM3ODdmYWJmNmRhMmY0NmI2ODUyIGxlZ2FjeS10cnVuaworMzE3NDMgMjlkZGRjMDFiNWVjMzc2OWRmMzRjOTUzZmMxODdiYjdlODA3MWQwYyBsZWdhY3ktdHJ1bmsKKzMxNzQ0IDhlNjA3MTg1Njg5YTRkNmFhYTJlMDBkMjc2NjBmYWRjMGI0MzYzYzUgbGVnYWN5LXRydW5rCiszMTc0NSAxN2U2ZTgxNGQwOTRlOWRiM2ZiN2E3ZWJhNDM0YmNlMTk2ZmFiZjdmIGxlZ2FjeS10cnVuaworMzE3NDYgZTQ4ZmI1ZmJmZGY0ZGE3YmFlMmVmYmE4NmE4YmI5MThhZTA4MmZiZSBsZWdhY3ktdHJ1bmsKKzMxNzQ3IDE0OWE1NzcyZGQwYzQ2MmI2NDRkNDg0NjY1ODYwZmMxZDc0ZjJhNDMgbGVnYWN5LXRydW5rCiszMTc0OCBmY2JjODI0YjZlMzgwOTRjN2ZkNTRiNGI3NWUzZWMyOTUyYmYyNTQ2IGxlZ2FjeS10cnVuaworMzE3NDkgMDI3ZGMyMTNjNTdlNzJkYWUzYzZhNDJiOThjMDBlNmIxNWJlZWI3MyBsZWdhY3ktdHJ1bmsKKzMxNzUwIDVjYTY1MGE5MDA1ZmE0YjJjODcwNGM3M2ZiZDUyODFlN2M3NTI4ZDYgbGVnYWN5LXRydW5rCiszMTc1MSA4ZjAwOGI3Y2I5N2IzYzQyNDkzNDhlY2Y2ZmY0N2U3YWQ4NTg4YTRlIGxlZ2FjeS10cnVuaworMzE3NTIgMmFiZDhhNWFmNmRkYjExOGJhODZmNDhhZTI2NzgzY2NlMDA2MThhNyBsZWdhY3ktdHJ1bmsKKzMxNzUzIGI3YzI5ZGM4YWZhMGYzMDViOTE2MDIxYjRmNTJmZGE0ZWU2ZTI5NmQgbGVnYWN5LXRydW5rCiszMTc1NCBlZmUyNDlkMDY5YmE0MWI4MDU3OWM2YWEwOTIwOWJmODQ1OWY0NWE2IGxlZ2FjeS10cnVuaworMzE3NTUgODE0MTUwNDhiMmFlZjAwMTA0NTFmNGUzYWIyMDc1NjRiODY3MGMzNyBsZWdhY3ktdHJ1bmsKKzMxNzU2IDhiN2Q5ZWI0OTc1OGM1NjEyYjgzYTQ1MTJhNjc5YjE5ZjMyZjc3MmMgbGVnYWN5LXRydW5rCiszMTc1NyAwNzQ5Nzg3OTk0ZGJmMzgzZmY3NGM1NjZmNjAxNTY1NWJlNDBkNGE4IGxlZ2FjeS10cnVuaworMzE3NTggZjU3ZDMwZDUwNjQ4ZWQ4MDBmYjc5MzFiYzdhODA2NDVhNzk4ZjIzOCByZWxlYXNlMjItbWFpbnQKKzMxNzU5IGE3ZjAxMzAyYjE2ZDJiMTQ3ZTU1NDQ4YTdkNTQ4Zjk1ZTNjMzhkZGMgbGVnYWN5LXRydW5rCiszMTc2MCAwYWI0NTQ1OTNiNTNhMTVmNWFjYzczMzcxZWEyM2ZlZjExZmIyZWFjIGxlZ2FjeS10cnVuaworMzE3NjEgMDU1NzViN2U2NzE0MDg0M2ViMGUxNTIwNTA3OGY0MTI0ZjliOWMyNyBsZWdhY3ktdHJ1bmsKKzMxNzYyIGEzODIyNjNkZjAxZDVhMjdmMzBkNjdjNDQxNDcyMzQ0NWZkOGM3ZDggbGVnYWN5LXRydW5rCiszMTc2MyBiYWQ5MTU2NDVmYTIyZGZlOTY1ZmQxYzM3Mzg0MWE2MmE0YzYxNDUzIGxlZ2FjeS10cnVuaworMzE3NjQgNzcxOTYxZTQ1MzE0ZjAyYzFjMTBkNDRmYjg0OTk2ODRiMTY5ZWI2YiBsZWdhY3ktdHJ1bmsKKzMxNzY1IDQzOTEwMWQ0NzA1YmIwNWViYzFmN2MxNDdlYjEwYzRmYmVkZjc4ODMgbGVnYWN5LXRydW5rCiszMTc2NiAyYzNlZjQ2MzU5ZWY0NjA1Y2I1NzhiOTNhYTg1MmI4ZDZkZWY3YzYxIGxlZ2FjeS10cnVuaworMzE3NjcgZmI4Zjc2ZGY2NGZmNDA1NTVkM2RhNTUyYjVmMzFlNTUzNjYxZjUxNiBsZWdhY3ktdHJ1bmsKKzMxNzY4IDkyZTNiNjExZGM5ZjkyMDcyMGI3MmI2MGFkY2Q4NzQwMTc0MGNiMzEgbGVnYWN5LXRydW5rCiszMTc2OSAwMDhhMjZjMzUzYWY5NzA5NGNjYzgxZjZiN2FmODE5OGRmZjY5MmE4IGxlZ2FjeS10cnVuaworMzE3NzAgYzAzYmUyMmZkZDI0YzFlNTdkMjMxNDQ1MTY1NTM1ZTRhYjg3ZDMxNyBsZWdhY3ktdHJ1bmsKKzMxNzcxIGQ0YjI2MmZiZDA0YTIwN2U2NWZjZTZkYWJjZjBiODBhZDBhMTc0ODMgbGVnYWN5LXRydW5rCiszMTc3MiBmMmJkMGY0ZDg1NzUwYjhjZWU0M2M2OTU4NDRiYmJmYTY1ZmMwZDc1IGxlZ2FjeS10cnVuaworMzE3NzMgYjNjMTU4N2IyYjhlMzIyY2Q3MjcxNGMyZGU4MDFkNjUyMGZmNGRiMyBsZWdhY3ktdHJ1bmsKKzMxNzc0IDczYjBkYzI4YzkxYTdhZThjMDU0YTczNWJmNGJiMzk0MTAzMDVkNTIgbGVnYWN5LXRydW5rCiszMTc3NSA5MDcwNDA0ZjI0ZmFkNTg3NGZlZTBjZjZkMTY2ZWNmYzgyNjA5MjE2IGxlZ2FjeS10cnVuaworMzE3NzYgN2M4ZTg4MDdhZWQyOWM2ZjJkZmVkOTNjMmE0Y2QyZmNmYjgxYjVlZCBsZWdhY3ktdHJ1bmsKKzMxNzc3IDk5N2Q0ODFlYTQwOTEwYTE0YzRjZDJmYTM5NWQ1ZDIwOWUwMWY5YTkgbGVnYWN5LXRydW5rCiszMTc3OCBkYzk0NzVlYzc5ODU1Y2M5MDg4OTZjYzZjZjlkNjM5Mjg3YzhiNWU3IGxlZ2FjeS10cnVuaworMzE3NzkgZWNhNjk3ZTA2YTA3Y2MyOTRiMTZlNWE3NWI3YmIzOWFiYWQ1ZGY3YSBsZWdhY3ktdHJ1bmsKKzMxNzgwIDczM2FlYmI1N2ZiMDA5YzBjYTMwNDM3M2U1MmVlMmNmYThkOTNlN2QgbGVnYWN5LXRydW5rCiszMTc4MSBhMmQ3OWI5M2I1MGEwYTkzZWJiN2RlYTA0MzNiYmI1OWRkMTUyODk1IGxlZ2FjeS10cnVuaworMzE3ODIgMjdhZGRlYTMzZTBjYWQ0OGFhNzFhNDk0MzIyOTFmZmY2OTBhMGEyOSBsZWdhY3ktdHJ1bmsKKzMxNzgzIGNkZWE1YjFiODI4MGNmOWVmOTE2MTZkNzcyM2FiOWU3ODA3MDI2ODIgbGVnYWN5LXRydW5rCiszMTc4NCA0MzA2NmY2N2M1ZGJhNzQxNzAwOGY1OTM4ZjIzNmJjNDQ4OTY4NDRlIGxlZ2FjeS10cnVuaworMzE3ODUgYjg0ZTZiNGUxOGM4NTk5Y2ZkMzk3NTE4NGZmZTgxYjI5YWNjMDQ0ZCBsZWdhY3ktdHJ1bmsKKzMxNzg2IDZlNDliYTNmNjBiZTU1NjAwOWU1NmUzYzg1YTExNjdkNjdjM2YwZjEgbGVnYWN5LXRydW5rCiszMTc4NyBhMmU2OGFkZGU4YjBmNGNhMDk0OGIwNDljZjNlM2U4NjgwZmY3M2MzIGxlZ2FjeS10cnVuaworMzE3ODggNGNhZmE1MTQxMDEyNTJkNTkxN2Q5MTYwNjQwYzgzZmU0NWIyMTY2NSBsZWdhY3ktdHJ1bmsKKzMxNzg5IDQ3Y2I4NWNkZDVmMzFkZThiNWZmN2UxZTNhOTdiNTI4NzhhMGNjNDggbGVnYWN5LXRydW5rCiszMTc5MCBkNDRmOWNjMjcyOTA1NTU1MzJlMWZlZWU4MjNjYmExMmUzZjljNWQ4IGxlZ2FjeS10cnVuaworMzE3OTEgMjcxYmFhODg0MjRiZTI5YTg4M2E1MjE5ZGRiNzkzMzFhYWFjYWE3MSBsZWdhY3ktdHJ1bmsKKzMxNzkyIDYyNzNhMTU4ZmIwYWNkNzFjNzViNzgxOGUyZTgxMjZmNjIzMTEwOWIgbGVnYWN5LXRydW5rCiszMTc5MyBiNWQ2YzM4ZWIxNjM2ZmU2MzkwODAzMmM3MWFkY2M3ZmMzY2JiNjBmIGxlZ2FjeS10cnVuaworMzE3OTQgNDhhNjFhNGI3M2ExMGJlMTU4MDAwYmE5YzRmYTA2NzMxZmQ5OGFkMiBsZWdhY3ktdHJ1bmsKKzMxNzk1IDMwZmExZjYxYjIzMWE3ZWQ2YjgzYjRhODBhZWI2Y2UyZWIzNjEzNjIgbGVnYWN5LXRydW5rCiszMTc5NiA4ZjIzZDM5YTlhMzM4N2E2Mjg3ZGJjODg2YjM0NjExYmY0ODY4YWEwIGxlZ2FjeS10cnVuaworMzE3OTcgZWE3MDAzMmEyNGIxMDI0MjFmZGMzMzI0YWIzMzFhZmNmMjA2NDQ1OCBsZWdhY3ktdHJ1bmsKKzMxNzk4IDAwODkyYWZmYjYwYWU4NGY2MGQ4Y2Q5Zjc0NTMzNmQ3MWEzNjg0ZjcgbGVnYWN5LXRydW5rCiszMTc5OSBmZTFkNTcxYzNmODAzZTM3M2YwOTlkNmVkY2UwMzBlZTZkNDAzNWMwIGxlZ2FjeS10cnVuaworMzE4MDAgZjEzYWRjMDBjMTY1MjAzNDdhOTBkMGE4YjYyYzk2NTJmNTI4OGY1NyBsZWdhY3ktdHJ1bmsKKzMxODAxIDA1NzQzMjZjNzhiYmFlNDZiN2VmZDg3NmVjNzc1NDI2M2EzMGEwZmIgbGVnYWN5LXRydW5rCiszMTgwMiA1ODU1OTE1YjAwZjVlNTE0NzEzMGRiMTkwN2Q4ZjRmOTJiYTQzZTMxIGxlZ2FjeS10cnVuaworMzE4MDMgNWMzYWNiZjIyYTI2ZjY3MmZiMGQ4MTQ3NjliMWYzYTliNjBiOWY5NyBsZWdhY3ktdHJ1bmsKKzMxODA0IDYyNjllYWFkZDQxZWY0YmIzYjhiMzAzOTM2ZmMzM2QxNDM0OTk5YTEgbGVnYWN5LXRydW5rCiszMTgwNSBmOTVkZmIzM2Q3NjI5M2M4MDg5MTE0ZTlhNjcxOGY3M2IzZmE2MmNlIGxlZ2FjeS10cnVuaworMzE4MDYgYTU5ZDhlNGNiOTAzODY3YmYxZTcwMjAwMjAxZWNlMzlmNWI4YWQ2OSBsZWdhY3ktdHJ1bmsKKzMxODA3IDRmNjc5YWE2MjNjMmY2YzI1NjNkNGZkZGYwNzg5NzQxNTA1NjFlYmUgbGVnYWN5LXRydW5rCiszMTgwOCA0YjZkN2M3NTY5OGFjN2JmMzFmNjc0YzA0NjgwNTg0Y2MyYTEzYTljIGxlZ2FjeS10cnVuaworMzE4MDkgNmVlOGQ1YTMwY2JjMjIyNGExZDQxMmJjNThkYmQ3MjYzN2JiZTVhNSBsZWdhY3ktdHJ1bmsKKzMxODEwIDM2NTVlOTFiM2RlYWNmZjJjZmMxYTVlNDU3NjMzMTQxNDdkZmQ4ZjkgbGVnYWN5LXRydW5rCiszMTgxMSA0YjFmZWYzN2FjN2JkN2FhOGMxYjc1ZmY2ODlkZmIxNzFmOWVlZjhhIGxlZ2FjeS10cnVuaworMzE4MTIgZDc2MzAxODU4OTQxYzkwYjhlNzZkOThlODJhYjIyMmQ3YzcxZWRjNSBsZWdhY3ktdHJ1bmsKKzMxODEzIGIyNDZjYTAzM2UzZWU3ZDg0MjVkYWYzYzYxNjRmZDVkYWRkOTg1Y2IgbGVnYWN5LXRydW5rCiszMTgxNCAwM2QzZmEzZTFkNGU1Y2E0ZmM1NzU1ZWJhMmEyNWIwMmU0MTM3NTIzIGxlZ2FjeS10cnVuaworMzE4MTUgZmExOGRmNzQ2ZWM1MjVkNzcyNmE1YmNiNWFlNWUwMTVjNWNiYWY3OSBsZWdhY3ktdHJ1bmsKKzMxODE2IDVjNDZjOTU4N2EyZmEzMTc4ZWYxYzBiZWY3MzYwY2Q4OTNmM2U0OTcgbGVnYWN5LXRydW5rCiszMTgxNyA5MjdhOTgzM2Y4M2I3OWFlMWJhOTg3MmJmY2E4ZmEzYWUxMmExOTI2IGxlZ2FjeS10cnVuaworMzE4MTggNmMwNjY3YWM5MzllZGQzZjVjMDZmYzdhMmM5YzIzZmEwN2Q5YjFmOCBsZWdhY3ktdHJ1bmsKKzMxODE5IDkyYjkzMDEzMDBjMzk2ODA1ZWExZmQ0Mjk2MWJhN2RmMmMxMTkyOTQgbGVnYWN5LXRydW5rCiszMTgyMCAyNzUxYzVlZjk4YmU2Y2M5NzkzM2QwODRhZDhmZWVlN2Q0ZWI2ZDE5IGxlZ2FjeS10cnVuaworMzE4MjEgYTRlN2VkYzY5MDU0ZDUwM2JmMjMwYWJlNjg1NDcwYmUwOTkxYmI4NCBsZWdhY3ktdHJ1bmsKKzMxODIyIDE1NjkxMWRiYTMwNmMxMjc4MzJjN2Q3OWM0ZmU3MmY4YmU4ZjU4ZWUgbGVnYWN5LXRydW5rCiszMTgyMyBiZWEzZDFmZGEzZGNiMDIxMTIxZjdiZjZiZGRjZWVlZDc1YmFhNDQ5IGxlZ2FjeS10cnVuaworMzE4MjQgYjc4ZDhiYjVlYmQ3MTQ3NGRhNzk5ZDA4NTdiNmVmZGUwMDcyMjgxNCBsZWdhY3ktdHJ1bmsKKzMxODI1IGUyOGI0OGZjOTAwYmZkYWFkMzMxMjFmMWJlOGJlODRmOGQ3M2U5YjMgbGVnYWN5LXRydW5rCiszMTgyNiBmYzkyOWQ3MWE0NTBmNDM4ZDg4MjNjM2MxNGU4NGFkMzlkOGMwZDI0IGxlZ2FjeS10cnVuaworMzE4MjcgNjViNzIyNjczODI5MDk3MzdkYjNmNTYzMDk4ZmQ3ZjhmZGQ2ZWViZCBsZWdhY3ktdHJ1bmsKKzMxODI4IGZkOWI4ODJiZTA3OTc1YmZmZDViYjI3NDk4ZTQ0N2YwMTIzY2RkZDMgbGVnYWN5LXRydW5rCiszMTgyOSA3ZjBiZmJlYzk4N2ZhMGRmMjdlZWQwNmEwYTBjZmRkOWExY2YxNWU5IGxlZ2FjeS10cnVuaworMzE4MzAgMzM2NTY2NGI4Mjk0MmJhYzY2NWM5NzMxMjAzZTFiZGM5ZDZlMDFhOCBsZWdhY3ktdHJ1bmsKKzMxODMxIDRjNjQ0YTYwYzMwZDkzODU1ZGYxYThiZDQwM2RjMWZlYzdmYTc5YmEgbGVnYWN5LXRydW5rCiszMTgzMiBiMTM1NmRiYWFiOWEyYjk2ZWZiNmE4MTE4MjgxNmM4ZDAxYzM2ZTU1IGxlZ2FjeS10cnVuaworMzE4MzMgZmJhZTIwYTJlMTE2ZGVlZjdhZjA5NDRkNGU0ZTVkNjExZjgwMzZiNyBsZWdhY3ktdHJ1bmsKKzMxODM0IDEwMjhkYzY4MDdhNWY5ODA1Y2JhOWI2MjcwYzEzYWIwMWQ5YzJiZGMgbGVnYWN5LXRydW5rCiszMTgzNSA0NTljNDI5MWY3NTk2MzBkN2ExNWU5MzM3NDZlY2Y4NTAxYjU3NWNlIGxlZ2FjeS10cnVuaworMzE4MzYgNmEyZDlhZTQzMGJlYTZjMWYzNTIwODE4NjVhNjI0YjIwNmE2ZjY5NCBsZWdhY3ktdHJ1bmsKKzMxODM3IGEyOTU3ZmZjYjU5ODY1ZDJmNjA3NzRlMGQ0ZjhiZTZlNWUxYjA4NjMgbGVnYWN5LXRydW5rCiszMTgzOCBlZjUyNWM5OWI0ZWVkNjY4NTBjZDNjNmQ0ODQyYTM0ZmJlNzQ2OGFhIGxlZ2FjeS10cnVuaworMzE4MzkgNTFjNzRiNzk1ZTllOTQ5NGMwOWZkNzcxNmZkMDA2ZDNjYWRjNjU5ZiBsZWdhY3ktdHJ1bmsKKzMxODQwIDE2MmVkMmE5Y2MwYzhhMjdlNjgzNjMxM2U5ZmE1ZmMxMDBlMDE1ZmMgbGVnYWN5LXRydW5rCiszMTg0MSA3ZmMzZTY0ZDE0MjQxNTMyY2U2M2QyODNkZmQ2MzM4YTExY2FjM2Q0IGxlZ2FjeS10cnVuaworMzE4NDIgNzM4MTRjYjU4MjdmOGM1ZDIzNGIzNzk0MjhmZTc4OTI4ZTI4YWFiZCBsZWdhY3ktdHJ1bmsKKzMxODQzIDhkMTBmNjhkN2MzYjBhZjI5MWMxNWI4MWU1MjY2NjhkMDZjNjhmMmEgbGVnYWN5LXRydW5rCiszMTg0NSBhOGQyNGI5N2M4MTNiMjBkZGM0YTYzNjRmY2JkNmRmYzIyOGVjYzI2IGxlZ2FjeS10cnVuaworMzE4NDYgYjk3MmJlODA2NDc3ZjEzMWFlY2FkMWE5NjZlZWQ1YjcxMTVkMjdmNSBsZWdhY3ktdHJ1bmsKKzMxODQ3IGM5ZmMzNWQwYTNlYmFiZjBkNGMwMTQ4NWFiNGEyNzUyM2IyMjE2OWQgbGVnYWN5LXRydW5rCiszMTg0OCAyMjg5N2NhMTAyODhkZDFjMmQ1NjZhMTU5N2VhOTk1NjViNTU3NGEwIGxlZ2FjeS10cnVuaworMzE4NDkgNWE0YzdlNmYwMDhlMjEyZjNmMDYwY2M1NDhiN2UxZWUwNGM4ZTY0NiByZWxlYXNlMjItbWFpbnQKKzMxODUwIGU0MDUyNzc2OTg2NGNiMjlkNjkxYmIxY2UzOWIyNzgwM2NkZDkxYmIgcmVsZWFzZTIyLW1haW50CiszMTg1MSAxNzFmMTg2MmRlYTk1NzM1NGU0MWMxZjY4OTNjOTQ4MGI4MmY0ZWQ3IHJlbGVhc2UyMi1tYWludAorMzE4NTIgNjVkZDk2MTJhNzQ4MDgwMTYxMTA3YjY0NDdiZmQ1NWNkOTM4MjMzZCBsZWdhY3ktdHJ1bmsKKzMxODU0IDBiYTE3ZTkzZjEzOWY1NzRmZTNhNWIzMDIzMmQ3NTM4NWNlYTg2ZDYgbGVnYWN5LXRydW5rCiszMTg1NSA3NjU0YzI0ZGVjYzRlZGI5YzQ0MmJlNzlkYzE4OTkwMTVhNDY4ZGVhIGxlZ2FjeS10cnVuaworMzE4NTYgMmMyMmI1YzA5YTU4ZGM2MTkzZTJhNzRlN2EwM2Q3MTNjNWJlYzg5MiBsZWdhY3ktdHJ1bmsKKzMxODU3IGFiZmU0YjM4MDMwNWVkOGMyYTkxN2JlMDkzY2EyMzNiOWIyMjRlZDUgbGVnYWN5LXRydW5rCiszMTg1OCAxNDMxNmRmMWMyOThiNzE2NTNkYzc1NGI1MWQwODQwMjZiMjcyY2UwIGxlZ2FjeS10cnVuaworMzE4NTkgOTYwMmM2NjRlZDdhMmNiZTY4MWYyMDE5ZWRhZGI2NzU5Nzc2MTJhMSBsZWdhY3ktdHJ1bmsKKzMxODYwIDczNDM0ZmE5ZDI4NTJiNzljOTk5ZDI3ODdjNGNlMWEzOWJiZjZmYzAgbGVnYWN5LXRydW5rCiszMTg2MSA4YzA4MjkzNmRhYWZkYWVlMzIzOTU3YWNkOWRlYzVmNmNhZGE4YjM4IGxlZ2FjeS10cnVuaworMzE4NjIgNDcwNTA0ZWY1NzhiMjA1MzY2ODU4YWE0N2EwMjA5ZDlhYTY0YTFmZiBsZWdhY3ktdHJ1bmsKKzMxODYzIGIxNGQ2NzQxZjQ5NjUxYjg2ZjYyMDAwMWVkM2I2NjAwZmI5MzU5YzMgbGVnYWN5LXRydW5rCiszMTg2NCA3MDJlNTQ3ZjMxZTBkNTI1ZGY1NTRjYjNlYTA0NTg3ZjA4MDE5NzBiIGxlZ2FjeS10cnVuaworMzE4NjUgMjI2YzViZGQxNjBiOTVhZTdjNzBmZGI4MWFmYTk4NjM0NTIwNjhjYSBsZWdhY3ktdHJ1bmsKKzMxODY2IDAwYmRhNTZmNTQzMzA2M2NmYmVjMWE1NTcxMjAzZjNiYTcyYjhkMzMgbGVnYWN5LXRydW5rCiszMTg2NyA5YzM1NzJhNTU3NWY5OTczMjI0ZDkwNTFiYTg3NDRmZmNiMmQyZWVkIGxlZ2FjeS10cnVuaworMzE4NjggNWM5ZGNkYzdmZThkNjliM2IyZjRjM2U3YTFkYTE4YWY3YmQzODQ0YyBsZWdhY3ktdHJ1bmsKKzMxODY5IDRmNDdkZjIwNDE1YzcxZWI5OTA5NjFkY2U2MTRmZjMzNmYzNjgzMjEgbGVnYWN5LXRydW5rCiszMTg3MCAyNDg5ZDIyMjI4ZGJiYzk3ZGQxMDFhMThkYjZjN2IxZjA2YTliODFmIGxlZ2FjeS10cnVuaworMzE4NzEgZWY1NWYyMjMyYTEwZDczMWJkZWFlMDdlZmRjNDhjODYwZmZhYmFjMCBsZWdhY3ktdHJ1bmsKKzMxODcyIDkwZjdmYmNiMzcwNjk1N2VmNzY5OGQ4NjQ4MGI0YzAyM2RhYjJmMDMgcmVsZWFzZTIyLW1haW50CiszMTg3MyA5MTg4Y2I4ZTE5MWI0ODhjYTUzMGJkZmM1MGUzMGU1N2Y3OTU0MDllIGxlZ2FjeS10cnVuaworMzE4NzQgOTI3OGIxYzgwYTY3ZjBjZmNlYWQyOTVkNGNiNDk1NzIyNjUzOGVmYyBsZWdhY3ktdHJ1bmsKKzMxODc1IDNlMTllM2I3MmQ5YjFiOTc2ZGNjNDcxNjU1MzAwMjk1MGNlYTE4YmYgbGVnYWN5LXRydW5rCiszMTg3NiAwMjNkM2I1MGU1OTc5NzRlYjNkNDFjMmE3YmFkM2Q0Y2U2MzMyYjdmIGxlZ2FjeS10cnVuaworMzE4NzcgYmMzNzBiODc1M2YxMjYwYTBmNGQ2NjliMTZiYjRkZjVjMTNiZjE2NCByZWxlYXNlMjItbWFpbnQKKzMxODc4IDM2MGE1NzgwNTY3NmRkMjNhYjlhNjQwZWFmODQ4ODRkZjI4ZDEwZjkgbGVnYWN5LXRydW5rCiszMTg3OSBmZDVlZjcwMDM0NjlhNjMxODY0NThjYTE3ZTFhYmEyY2FjNGJlZWY2IGxlZ2FjeS10cnVuaworMzE4ODAgOTJkYWY4YjA2YWJjMTg2MmY1ZWZlNjhjNTEwNzhlMDQ2ZjJlOWE5YiBsZWdhY3ktdHJ1bmsKKzMxODgxIDllYmM2MWI5ZThiZGJhNjVhMzkxNTJlYzUyNTU1MjE1MDMxZTc3ZDIgbGVnYWN5LXRydW5rCiszMTg4MiA2N2IyMmZhNGE4ZmU1ZjQ2NGVmYmZjYmJjZDkzNGJlZmNkYTZmZTA0IGxlZ2FjeS10cnVuaworMzE4ODMgNGUyMjEzNjhhZjcwN2I0YjE1M2FiZjdhODZmZTc5ZmQwNDBmMDViMCBsZWdhY3ktdHJ1bmsKKzMxODg0IDg1MDYyNmQ0NzU3NDlkNDZkZWViNzQ2NThiYTJmYzg5NGM0ZDdmNjkgbGVnYWN5LXRydW5rCiszMTg4NSAzMzU4ZGZiMWIxOGI0MjJlMGE5YmVjODQwMTZkNzBiZGNjMjY2MjJlIGxlZ2FjeS10cnVuaworMzE4ODYgMTg1OGJjYjYxNzA2ODJjM2I3N2UzYjRlOGI4NzEyYmI5OTdhNTI4NiBsZWdhY3ktdHJ1bmsKKzMxODg3IGNkZDVkMGNmYTZkY2UzNThkOTI2YjllZTgzNjFjMGViMWJlNzRjYTcgbGVnYWN5LXRydW5rCiszMTg4OCA2MmRmMTdlNTAxZGM2ODNhMzYyNDg4OWYwZTVkNTI4MDY3OWUwMDcwIHJlbGVhc2UyMi1tYWludAorMzE4ODkgMDJjZTIyODMwYWI5NjA5NzlhMDI2ODVkMDIwYzZlODlmZWJjYjY3MSBsZWdhY3ktdHJ1bmsKKzMxODkwIGI5MWE4MWQ2ODA2ODBlMDFmZDYxNDE3M2FiMTU1ZmY2YzY3OTIxNzIgbGVnYWN5LXRydW5rCiszMTg5MSAyOTFiOWQ4NjZlY2YyYTljOGQ3ZjNlZmRkYjc5ODU5Y2I4MWQwYmMyIHJlbGVhc2UyMi1tYWludAorMzE4OTIgZWVjM2ZkMTY0YTdkYjhkZDRjN2ZlODhjMTllMjI0MGRmZTc0MzFkMCByZWxlYXNlMjItbWFpbnQKKzMxODkzIDlmMjg3ZTVlYjAzNzc1MjQ5ZWUxZDQ4YTIzOTk3YjQxMjNkZWRkODkgbGVnYWN5LXRydW5rCiszMTg5NCA3MDAwM2IwY2I4Mzc5NTIwZDY4MDI0MWNmZTgwNjk1MTQ5ZjNlNjJlIGxlZ2FjeS10cnVuaworMzE4OTUgYjU2ZDEwZWQzM2M1ZTg1YWYyZWVkZjNjYTVhMDBiYTE5NTJiNDE2OSBsZWdhY3ktdHJ1bmsKKzMxODk2IDkwZjE3YzM3NGY1OTI3MjhlODllNDk5YTA2NjQ3YzMyNGQ0MjBlOWIgbGVnYWN5LXRydW5rCiszMTg5NyAzNDM0ZDFiOTIwNmE1YmQ4ZGU5NzRjMWE1MDBiYTdmOTU4NDQ3ZDgzIHJlbGVhc2UyMi1tYWludAorMzE4OTggY2MzNWVkMmIyNmE4YjJiNTA0MzM1NDRjMzBkMzI2YzUyZmU1NTIzMSBsZWdhY3ktdHJ1bmsKKzMxODk5IDVjZjFmMmYzMGRiZDZjYzQwNjViMzRkNWU1OWM2ZmRjNWJiNmY3YWYgbGVnYWN5LXRydW5rCiszMTkwMCA3OTc5MDk0OTJjMzg2NzIwNDQzN2QxYmU1YWIxYzlmY2M0ZGY2MzhkIGxlZ2FjeS10cnVuaworMzE5MDEgMjY4MDhhYzdlZTUxYWU5OTJhOWEwYTdlZjdiZGU3NDAzMzZmMzVkMCBsZWdhY3ktdHJ1bmsKKzMxOTAyIDk4MGQ2ZTAxMTJjZTFlNDY0M2Q0ZGQxYWMyYzk3ZmNmYzViN2Y4NGUgbGVnYWN5LXRydW5rCiszMTkwMyA2MWIwZmY5OGQ5NWRkMzgxZTFjZDczZGE5ZjMwNDkyYmM0ZDZlNjg3IGxlZ2FjeS10cnVuaworMzE5MDQgMTQzOTE1Nzc2Y2JjMmZmMzE3NjJlM2E1NzkyNGEwMTMyNWY1NDc5ZSBsZWdhY3ktdHJ1bmsKKzMxOTA1IGY1Yzk3YjY1ZjllODU2ODU3OWNiOTMyNTliNzQ0MTdhZTE3OGM0NWQgbGVnYWN5LXRydW5rCiszMTkwNiAxZmMxYTMwNWUzOTk5YTQ0MTA4MzBjZDQ3ZTIwNWE2Y2I0OTFiMzRiIGxlZ2FjeS10cnVuaworMzE5MDcgYjczNDBiMDk1NTVkMzBiZThiZDM0ZGY1ZWVlZTgyMGI1MDZiOTQyOSBsZWdhY3ktdHJ1bmsKKzMxOTA4IDMwOTY4OTlmNzc0ZmVhYzkyODNhYTliNjU4YzNlMzk3ZjFiMTExZDQgbGVnYWN5LXRydW5rCiszMTkwOSBlMzZmZjQ5MmNiYjE2MjNjMGRkN2MxNjMwOGJkMjc1NGRmM2E4ZWNiIGxlZ2FjeS10cnVuaworMzE5MTAgZDU3NDIxNjIzNDQ5YjdhYjA5MmE5ZWYxMGJjMjRhOWIzMjcxNzVmMSBsZWdhY3ktdHJ1bmsKKzMxOTExIDQ1MDU0YmY1OTJlNWUwM2VkNjE3MTNmNWJjZDIzMzY0Y2E1MWVlNWUgbGVnYWN5LXRydW5rCiszMTkxMiBkZDgzYTlhNTNkYmZiOTFmODk1MzkxNTFlODZlOWJiMjQ0MjQxOGYxIGxlZ2FjeS10cnVuaworMzE5MTMgZDM0YmNiM2NiMjE2ZWE5Njk2OTNhZmI3YzZlMWM4OGIzNWRkOWYzZSBsZWdhY3ktdHJ1bmsKKzMxOTE0IGVkZGY1OWY1Y2M1ODQxNDc3ZGU2MjIyZThlNzFiNDVkMmRhMGU3MDMgbGVnYWN5LXRydW5rCiszMTkxNSAzZmZiYmI0ZjQ4ZGE2MzNmMmVhNDM3MjNhYjI1ZTEzM2Y1NDkwODIxIGxlZ2FjeS10cnVuaworMzE5MTYgOGQ3ZmZlNGNhYWQ5YWNhYzg0MWM1OGU4ZDJkMzFhYWRkNTQ5YTJhMCBsZWdhY3ktdHJ1bmsKKzMxOTE3IDM0ZTIyY2RmYWFkMjQ2Mzg1MzgwNDgxNzY4MTIzYTkyODM4MWE5ZjEgbGVnYWN5LXRydW5rCiszMTkxOCBjN2NlYjk1NjBlYjBlMWJhYTE5N2ZlYzAwY2IyMmY4OTU5YTAzODI2IGxlZ2FjeS10cnVuaworMzE5MTkgNzIyNDdlZTIyNjUzNzRjYzU1YjkwYzg4MjVmOTE5MGNjNmNiZGU2NiBsZWdhY3ktdHJ1bmsKKzMxOTIwIDZmZGRjZGQxMWY0OWZhZGMwYzc4YWU0OTAyZjU4ZjFhODBiY2JiNTcgbGVnYWN5LXRydW5rCiszMTkyMSAzMWE1MTFmNzRiMjgxNmIxMGJjYjgxZjkzZDNiMjgxNjhiNGU0ZWUzIGxlZ2FjeS10cnVuaworMzE5MjIgYmFiMmIyODYzYTZlMDRjMDM4ZjQzM2RmYjUzMDUxZmI1Y2M3MTY1ZiBsZWdhY3ktdHJ1bmsKKzMxOTIzIDhlMjQ3M2FkN2MwY2JhYjNmNmNiMDBkOWJmNjEzYWQ3YjE0ZmQ0NjMgbGVnYWN5LXRydW5rCiszMTkyNCBjOTdjMTA0YzJkMjQ5NmM4YjFkMTVkNWM3MzNmOTZiYzg5MzBjOTFiIGxlZ2FjeS10cnVuaworMzE5MjUgOWFhYzg3MGYwM2EyOTkwMmMxZjgzYmIxNWQ4NzA2MmRmYTAwYTdhZCBsZWdhY3ktdHJ1bmsKKzMxOTI2IGRlMDEzMjc2NTg0YWViZWU0OWM2NzBjNzdiZDQwMDVlNWY0YWM2NTMgbGVnYWN5LXRydW5rCiszMTkyNyBmZjc4YzNjM2ViYzQ2NmQwMjkwZjkxYWE5YTk1ZDA1NjEyYjhiOGI1IGxlZ2FjeS10cnVuaworMzE5MjggZWI0ODI3OGMyZTEwMjVjYjA4NjczNWI3YjY2Y2Q0MDI4MTg5NzBhZCBsZWdhY3ktdHJ1bmsKKzMxOTI5IDdmOTgxZGQ3ZmE4ZDJkY2E0NWM5OTU3MzgzZmRiZDljMDMzMzM4NjEgbGVnYWN5LXRydW5rCiszMTkzMCBmYmFlNjQ1NTEzZDc0NzM0ZjFiYmI1N2I4MjgwNTlkNTNiNGE0ZThiIGxlZ2FjeS10cnVuaworMzE5MzEgNzcwODkyZDc4ZjJiYjc5ODZhMWUyNzU3MTQzNDM3MWFhM2YwNTZjNyBsZWdhY3ktdHJ1bmsKKzMxOTMzIDQ1ODU0ZmM3MDdkNjQ5OTQyYjY4MTAyMGIxYWQ0ZmJkNDhiM2NkMTQgcmVsZWFzZTIyLW1haW50CiszMTkzNCAzMDc0OGMxNWE0ODFhZjc3MTYzMWZmYzNiNDVhMDc4MzE1OWYwYmYwIGxlZ2FjeS10cnVuaworMzE5MzUgZTMzM2Q3NjVmNDFlZTFmMzk1YWEzOTk3MWJhYzQ0MzBkMGFkODg0MyByZWxlYXNlMjItbWFpbnQKKzMxOTM2IGQ4NzdmZmE0ZjdmMjJhYzVmZTZlZTQ5YTE0NTVhMzQyYzY1MDA3MjkgbGVnYWN5LXRydW5rCiszMTkzNyBjZTRiOTI4YzgzNDBhMTIyOGFhOTA0Nzk2ZTdkNWQ1NWM1OGQ3YWVlIGxlZ2FjeS10cnVuaworMzE5MzggNzk1ZDYxNDRkMmVlNGNkODQzMDM5ZjU1MGU3YjExYmE3ZTMwYjY5NSBsZWdhY3ktdHJ1bmsKKzMxOTM5IDdkYTJlZTNhOWM0M2IzYjlmMjQzODJhZGNjMjJkMzRiOWI0YTU5NWEgbGVnYWN5LXRydW5rCiszMTk0MCBjYTQzYWJiMDc2Mzg2ODc5MzBkN2YwZjgxNDUwZWVjNzJkYzZlODg5IGxlZ2FjeS10cnVuaworMzE5NDEgZTBlYmZhMmZiOTM2OWRiYzhjNzQ2NDIxZjFmYWIzMzQzNmYyZjlmMiByZWxlYXNlMjItbWFpbnQKKzMxOTQyIGY2YmY3ODE3MzFkNDI1NjRkYjhlNmNkNzM3ZWY4M2Q5ZWEwNTFjNTggbGVnYWN5LXRydW5rCiszMTk0MyBmOTljZjliZmJiYWY1YmVlZmYzYzYyOWE3MWMzODlkNDE5MmU2OGE1IGxlZ2FjeS10cnVuaworMzE5NDQgYjg3MjI5NzQwNmFhOWM5ZmI4NmVjMTY0YzZjZmQ4ZTdiNTczNzEyOSBsZWdhY3ktdHJ1bmsKKzMxOTQ1IGIyMzQzNDIxMWQwMWRkODAwZjIxZmQ5MTYzZWI5ZjYxOTdlZGU5ZDcgbGVnYWN5LXRydW5rCiszMTk0NiA5NDYwMWQ4ZmE1MWRiNjhkOGI0MmY5YWIyNDg0NWQ1N2RlMGU3N2EwIGxlZ2FjeS10cnVuaworMzE5NDcgOTgzZTkyOTFhN2I0NjFlMmFkNjZhNDA3NTc2MTBkOGNjZmNjYzRkNyBsZWdhY3ktdHJ1bmsKKzMxOTQ4IGY4MTIzOWMxMmM2MGY4MDYyMjMxOWU2YWU1ODU4ZTZiMTZlYzVlZTQgbGVnYWN5LXRydW5rCiszMTk0OSA0ZWRlNTdhNDJjNjIwYjJkMWUwMGU1NGJmNjMyOWQzNTE5YzczMjU1IGxlZ2FjeS10cnVuaworMzE5NTAgMzMzMTk0NThmZTk5NWJlZGJlNWYyODZlNzkzOTJjOTA2Njg3MmQ2OSBsZWdhY3ktdHJ1bmsKKzMxOTUxIDA3NjE3ZDA5MDRhNjNmMzYxN2ViMTlhYjRlZDRhNWJlYmZmODdiNjkgbGVnYWN5LXRydW5rCiszMTk1MiA1ZWUyOWYxMzY0ZjMzNTc4MTVmMjhjMjRiYTFkNjg5ZTU3YWMwNzkyIGxlZ2FjeS10cnVuaworMzE5NTMgMTZhYTcyYThjMjgxZWYyMGE1MWRiN2E4Y2IzZjA0ZDI4YzMxN2Q2MSBsZWdhY3ktdHJ1bmsKKzMxOTU0IGJjOTA3NmIwMTY5NDk4YWE1M2IzNzQ0NzZmMDg1NTRjNzQwZmNlZmYgcmVsZWFzZTIyLW1haW50CiszMTk1NSAxZTBlNjc5NDcxNzU4YjU5ZjA2NTdlNGY2NWY0YWNjNWZjMjdmOThjIHJlbGVhc2UyMi1tYWludAorMzE5NTYgZDU2MjgyYzI4YTFlZmNkZjVlY2NkMDExOTM0NTQwYTEwMmQ0NGRkYyBsZWdhY3ktdHJ1bmsKKzMxOTU3IDRmMDM4ZDNhODg3OGNiZjc0OTViNzI0YTUxZGVhYmIyNTc0MDUyMjYgbGVnYWN5LXRydW5rCiszMTk1OCBhMjExMGNiMTY1ZjExMWJmZmU5NDViNDRjMzE3MmY1MTcwMDdjOGYwIGxlZ2FjeS10cnVuaworMzE5NTkgNjY0MjEyYTZlMjgzZTJhMmJiODEzNGExMjVkNWJjN2I5Y2YzOGQ1MyBsZWdhY3ktdHJ1bmsKKzMxOTYwIGVlOTRhOThjZjM5NmMwNDQ1YTM4YmE5NzZmNmFhZTcyMDlhNGM1ZmQgbGVnYWN5LXRydW5rCiszMTk2MSBjNmMyZjI2ZGY2NWIwNGVjZGRmNzE3MjJmZTdmNThlNTZjZmU2MjE1IGxlZ2FjeS10cnVuaworMzE5NjIgNWY1MzY0YWM0YWRiYzQ3YzBkYzgxNDk0ZmQyZmE2YmRmYzU1NTQ3ZCBsZWdhY3ktdHJ1bmsKKzMxOTYzIGYwMGNkNjkzZDRlMDJkMzI3YTE2YTQ3NTA2ZTUzY2NiYjVmNDJiNjcgYXN0LWJyYW5jaAorMzE5NjQgZTUzMDQzYmRiOGYyM2FkNGQ5MThkOGFkMzM4ZWFhZTBhMTI2Yjk5OCBhc3QtYnJhbmNoCiszMTk2NSBjYjhkNDI3YWZkMjExNTcyY2Q2YzgxN2NmYzRhZDA1ZmRjMjM2OTcyIGFzdC1icmFuY2gKKzMxOTY2IGZhMzVjOGI0NWIyNDU2ZDUzMmE0ZjAwYjE5NmJjYzRmMDY0OGQ4MGMgYXN0LWJyYW5jaAorMzE5NjcgZDFkNjBjMmUwYWU5OTNhNmMxOGEwOWU2MTRkMzc5MzJjN2EyOTcxYSBhc3QtYnJhbmNoCiszMTk2OCAzMDVjMTc1MTFhODY5Yzk2ZTcyM2IwOTQ4MTZjOGQ2MzllNWQ1N2QwIGFzdC1icmFuY2gKKzMxOTY5IDU1ZDBlOTk4YmM0NmM0NzUwZWJlNjhiODg3ZTg0YmY0ZDI4YjNjMmIgYXN0LWJyYW5jaAorMzE5NzAgNzM2NWYxMzBmMTU4M2RhNmZjNGI3OTgwMTcyY2Q4MmQ4NjUxMzc3YSBhc3QtYnJhbmNoCiszMTk3MSA5MDczZjhmZjcyNTYyYWM3OTcxYTgzMWU5ODhmZDRjZTAyNGM2M2M3IGFzdC1icmFuY2gKKzMxOTcyIDYzZWQ4NTI5MDQxMzM2MDk4ODk4MGVmMzM2ZjdiYjA0ZWUzODIzNDEgbGVnYWN5LXRydW5rCiszMTk3MyA1ZWY2MTMyZjNjYWJjOWRkZTFhODBjMjA1ZjQ0NzFmNGI0MGJhNTFjIGNhY2hlLWF0dHItYnJhbmNoCiszMTk3NSBlYzgwM2NjNTcxODUxN2UyNjU5OGU1M2FlMGYxYTdhOGU3ZGU5NDM3IGFzdC1icmFuY2gKKzMxOTc2IDViMTUyYWFjODEzZDdkYjBiZTBlZmE1ZjkyY2Q1NDBhNTBmNmFlZDEgYXN0LWJyYW5jaAorMzE5NzcgOGZmZmE2ZDE1NDRhODQzNWU0MDBhMThjYjM1MTllOTIxMTJjODdkYyBhc3QtYnJhbmNoCiszMTk3OCBkY2RjNDUxNzQwZmFiNGI5NTQyMjk5ZDFiMjlmYTc5MTllZmUyODAzIGxlZ2FjeS10cnVuaworMzE5NzkgZjM2MmM5YWVkZjEzNGE1YWE0NTY5OTYyODI1OGQ5ZDM1NTE1YTA1MCBhc3QtYnJhbmNoCiszMTk4MCA3MzY3YTM4NGE3NDU1NThhNzA3MDAyNjE2OTA5N2EwZThmYTYyZWFkIGFzdC1icmFuY2gKKzMxOTgxIDExZDgyN2Q5MzkwNDI5YjhiMTY2ZjRiNzllNDJkY2EwNjU0ZGQ0ZTkgYXN0LWJyYW5jaAorMzE5ODIgNjMzYTRiYmQ3OTdlMTdlZTg5ZTY0MWNmYmE4ZDUwMjZjZjk1YjdhMyBhc3QtYnJhbmNoCiszMTk4MyA3NTZmOTg3YzM1OTAxM2I5NjYxYzM3YjMwOTY5MTM1ZDdkNWJkZjU0IGFzdC1icmFuY2gKKzMxOTg0IDM1MGVhMjZlN2ZkOTVlOWU4MTNhMmI0OWU2ZDZhNzk2NDI2NzM0MjEgYXN0LWJyYW5jaAorMzE5ODUgMjMwY2NiOWU1MDAwZWEzMmE4OGY0YzE4MjM2YjJiYTI4YTFiNGRlYiBhc3QtYnJhbmNoCiszMTk4NiAwN2YzZmE2MzlkOGVjNmQ1ZTY0ZTNkOTFlODRmYzY1MjdkOTgxYjdlIGFzdC1icmFuY2gKKzMxOTg3IGIwOWRiMGI5NmE3NmJjMjhiZTY1ZDBlY2Q4YzQ1ZjcyYjc0Zjg3N2QgbGVnYWN5LXRydW5rCiszMTk4OCAyZGExNGZjOWU3MmJjYWM4Yjg3ZDZjZWQ2ZWE5NjA0NjhlNDMxNjc5IGFzdC1icmFuY2gKKzMxOTg5IGMyNWJiOTEzYTIzNjNiZjY5NzJlMjdlZWFkM2NjNTkyMjExYWQxZDIgYXN0LWJyYW5jaAorMzE5OTAgOGU2N2JlZjQyOWE0MDhkZDA4OWFiOTQzYmUwMGJlY2YyMDgxOTViMSBhc3QtYnJhbmNoCiszMTk5MSAyNWEzY2MzNzY1NzJhNjc5MGJmZTNlMGVkMzFmMjI5NWYwODc3M2VkIGFzdC1icmFuY2gKKzMxOTkyIDkwOWZiZTI0M2Y5MDI2NjdjOTQzMGJhZjUxMzhkODY2ZDQyNWZmMDYgYXN0LWJyYW5jaAorMzE5OTMgNmVhMjBiODZhYzhkY2Y2NDhiN2Q5YzQyY2RiM2ZmOGEzOTYxMjkxMCBhc3QtYnJhbmNoCiszMTk5NCBmNmExMTkyMDE0NmViNTgzY2FmZjE5NmIxMGNjZTUzMjk0NDgyNTYwIGFzdC1icmFuY2gKKzMxOTk1IDRiY2RhNjNlMTA1NDFjNTc2MWNjZmI0OTE1MWUxN2YxYWFmOWE5NGQgY2FjaGUtYXR0ci1icmFuY2gKKzMxOTk2IGY4NGUxZjRkNDM4ZWIwOGU3NTdlMGEzZGVlYjE3Y2ExNjVkYjFkZjUgYXN0LWJyYW5jaAorMzE5OTcgNDQ5NjIwMjE5NTlmMjhkMTIzNDY2M2ZmNzNhM2U2YjEzZjhiMDA1NCBhc3QtYnJhbmNoCiszMTk5OCA2M2FjM2Q2M2I5ZmU3YWRhOTQwY2M0ZjYxODBkODdjNDg5YWExZjU2IGFzdC1icmFuY2gKKzMxOTk5IDEzZTU2N2FmOTRkOGE5YzIzMzcyNGNkMTI3MTZiY2QwY2JkMmQyNjEgY2FjaGUtYXR0ci1icmFuY2gKKzMyMDAwIGJjNzY1N2FjNDZiYmU3ZWFmOGE4YTQyZmU2MjdmM2QxYjU2N2Q3ZGMgYXN0LWJyYW5jaAorMzIwMDEgNDFiMWYyMmZjYjAxNzU2ZTMwMWM2MDg1NzFiY2ZmMDNiNzM0MmJiMyBhc3QtYnJhbmNoCiszMjAwMiAxNDU2NjIxODAwZDQ1OTY1NTRhMGM1MjcwYWRkYjg1MDAwZDA4MmY5IGFzdC1icmFuY2gKKzMyMDAzIDhlOGE5MTEzZmEyZDg1ZDI3NDBhNjBlY2QxZjk2ZDUzOGU2ZjdkYmEgYXN0LWJyYW5jaAorMzIwMDQgMzY0YmZlNzk0NzhmNGNiNTZkNzZlYzVlMjRiZGQzNmE1YTQ3NGEwNCBjYWNoZS1hdHRyLWJyYW5jaAorMzIwMDUgYWYxNzY0ODg3YWEyM2M1OWNlMGY5MGRlNjBkYzEwOGRjOGI0OTNjNSBhc3QtYnJhbmNoCiszMjAwNiAzZWZkODM0ZDBmYzUyYmYxYWUxODBjNmE3MTA1NGIyNWM3N2NjYjBjIGNhY2hlLWF0dHItYnJhbmNoCiszMjAwNyA3MzM3MjkyNjFjNDFhMjI2NjA1NDEwYWUyM2ExNWM3ZDliNzkwMDcxIGxlZ2FjeS10cnVuaworMzIwMDggYjBjY2M1YjVmN2UyZjJlODRmN2E0NDQ1YWZlNDlmYmQ2MGVkN2NjOCBjYWNoZS1hdHRyLWJyYW5jaAorMzIwMDkgNjMyYTZjYWUwYmU2ZjE2NGNlMDhkYjlmZGIxZjJjOWU4MjMxZGFmYiBsZWdhY3ktdHJ1bmsKKzMyMDEwIGFjNzIxZWQ2MTkxNDRmYmNiZGNiOWYxZmRiNTFmYWZjODYwYjYzMDYgbGVnYWN5LXRydW5rCiszMjAxMSBlMDZjNTQwZGMyZTJmMTNhYTc1YmI5ZTc3MjAyZjE3YTcyZDcwNzg5IGxlZ2FjeS10cnVuaworMzIwMTIgZmVhMjkyOTJiOTMxYjY3Njk3NzdhNzM4M2ZjYzBlZjBhMTMwYzQyMCBsZWdhY3ktdHJ1bmsKKzMyMDEzIGYzZDRjYzI5OTZkMmM4NjE4M2JmMzA1NTg5MjczN2M3YmZkZjYzNWQgbGVnYWN5LXRydW5rCiszMjAxNCBmNTI5ZGVjZDgyMWZlZmY0OGI0YmQzNzI3YjE4MzYwNTQ3MDczY2VmIGxlZ2FjeS10cnVuaworMzIwMTUgZWQzYzcwMDhmOTBlOGM1ZTQ0ZjI3MWI5YmE2MjA5OTdmM2Q2ZjUyZSBsZWdhY3ktdHJ1bmsKKzMyMDE2IDBjZjRlMzI0MDM4MDdlMGM5ZjA2NTc4NjA1ZjUxMWM0MGFkNjhkZDAgbGVnYWN5LXRydW5rCiszMjAxNyA1NDk2Yjg2MWM4OWFiOTI3NjczMTUwNWViNjhjMWYzMDkzYTMyODJkIGxlZ2FjeS10cnVuaworMzIwMTggNzBiZDhkOGM4NzdiYzNkMzA1MjI0MjBkYTg5NzYyN2Y0Mzc0YzM3YyBsZWdhY3ktdHJ1bmsKKzMyMDE5IDBjODAyZWVhNTYxNTc4YTkyOGM2NTUxNTEyMWQ0MjUwMDk4YWE5ZDMgYXN0LWJyYW5jaAorMzIwMjAgYjZlNjJjYmJkZjNkZWQyOGE1M2YwNDFhMzdkYjYyMDA3NmY1OTA3OCBhc3QtYnJhbmNoCiszMjAyMSBiNDUxYTllNmQ5NDA5MGZhZjQwMTY1NjlkNTRkOWQ1OTY1ZTczMDNlIGFzdC1icmFuY2gKKzMyMDIyIDMzOTI4YTUxZjJmMTEyYmYzOGIzY2ZkMmMyNDU3NjM1NmUxMWJiZTggYXN0LWJyYW5jaAorMzIwMjMgMWEyZmQxMDlmNmI2OTYxOTQ3MTFjMWU4NDI5YzUyYTE0MTFmZDI1MSBsZWdhY3ktdHJ1bmsKKzMyMDI0IGI1NzU0NmIzM2NiMTM2N2YwNTQ2MzFhMTRkMTNhNDJmMDk4NzkwMjEgYXN0LWJyYW5jaAorMzIwMjUgZWM2MjIxZTliNzlhY2M0NmYyYTJmYzNiMzdjOWNhZGJmY2ZkMjkxMSBsZWdhY3ktdHJ1bmsKKzMyMDI2IGE5MzUxMjcwMzg1YWEwNGExYzAyNjdhMmVhMzA4ZGVjYjkzZTcyYjEgbGVnYWN5LXRydW5rCiszMjAyNyAzMGQxYzg0OGQyYjAxNjg1OGZmMDhkMjZlM2ExNGMyZDBjMTFmZjA0IGxlZ2FjeS10cnVuaworMzIwMjggZDY1NTNkMDgyN2FiOTY4Yzc5MDhkMzViMWRkMzFlYmZlZTI1N2E0MyBhc3QtYnJhbmNoCiszMjAyOSA4NGIxNjM1MjNjZDRkYTFjZDg3MjlhMGEyMDI0NTNlOTBkZjBkOTgwIGFzdC1icmFuY2gKKzMyMDMwIDE1MmJhZjRlMzU1NTUxZTcxYWJjNTQ5MmE1ODBkNDc5MjgwMDk5MmQgbGVnYWN5LXRydW5rCiszMjAzMSA3MjFlOWU0ZWVjMWVmMDhlMTEyNzBkZGUwMWFlMTI5MzhhNjFmNzhmIGxlZ2FjeS10cnVuaworMzIwMzIgZmE3OTVmNGU2ZGM3NzRiZDYzNDljZWUxYmRmZmM1MjdhODIzYTZkYSBhc3QtYnJhbmNoCiszMjAzMyBlNWMwMDg5NTUzODExMTI2Y2Q1MjQzMTRmMDQ3Y2VlZmNlMzAxYWU5IGxlZ2FjeS10cnVuaworMzIwMzQgYThlYzczZDEzZDAzM2M1YWZkYWYxZmRhZWU1MDkyN2Y1OGViYTg0ZiBhc3QtYnJhbmNoCiszMjAzNSBiYjg1YmU4Mzc2YjhlYmI5MDdjOTYzYjkzNGRkMTI4OTY5OWY1MzJlIGFzdC1icmFuY2gKKzMyMDM2IDhhZGU5MGFmNjE0YzM4YzJkZWVkMzgwOWRmMzI0MWVmZmU3ZDA1ZjMgbGVnYWN5LXRydW5rCiszMjAzNyAyZWQ3YzFjNDU3YjkzZmZmN2JiNDc4YWI2MTAxYmYwZmE4NTQ5NmM0IGxlZ2FjeS10cnVuaworMzIwMzggNmM2NDYxNmQxN2VkYmM5YmY2NzYzY2EyMWNhMjdlZjQ5MGJjY2NmYiBsZWdhY3ktdHJ1bmsKKzMyMDM5IDlkM2EyNWU5OTA3NWIwMzMxNGE1MmM5OTdmZmNjNTlkNWNiZGU1MWYgbGVnYWN5LXRydW5rCiszMjA0MCAxYjFkOTlkZGEyYTFkNjQxYWQxZmVhZDUyYjgzZDBjNjExNTE3ZDE4IHJlbGVhc2UyMi1tYWludAorMzIwNDEgNDQ1OWNkY2JmNTM4NDI3ZWJiYTU5MGUyYTZiYjcyYTU5ZTk5N2FlZiBsZWdhY3ktdHJ1bmsKKzMyMDQyIGNiMzMyZDQ0OTE3MTZlMjM4NzA2ZmIwYjNjMmZlNzE1ZGQxZDcwNWUgbGVnYWN5LXRydW5rCiszMjA0MyBjZDU1ODg3NjI0YjMyNWY5MWU0ZDNhZTU2MmM0Zjk0M2M2MThiYzQzIGxlZ2FjeS10cnVuaworMzIwNDQgMjExNDM0ODZjZTQwYjM3Nzc3Njg0YjkxMDAxMGY3NDMwMTJhYTljOCBsZWdhY3ktdHJ1bmsKKzMyMDQ1IDA0MTgyZTVhNjBiMTEyMmMyMDc2M2Y0M2I2NTI3MWU1ZDc0ODk3MWMgbGVnYWN5LXRydW5rCiszMjA0NiAyZTIwNjkyZGQyODY4MTM2ZmU5NTMxNDQxMTY1MWNhNjMwYWNjYTM4IGxlZ2FjeS10cnVuaworMzIwNDcgZWUxYzcwOTA1MGIyNDk0NjA1N2IwYmVmZGQzOTVhN2QxZWJjOTEwZSBsZWdhY3ktdHJ1bmsKKzMyMDQ4IDYzMDQwOWY0MWNjM2Y1OWFmYmVhODMzYmU2MThiNjIwNTgxZTIwNjUgcmVsZWFzZTIyLW1haW50CiszMjA0OSA4NzFkYTcwM2U0YzBhNWMyN2MxYTJkY2YxMWI4NGY4YjM3OWIyNjA2IGxlZ2FjeS10cnVuaworMzIwNTAgNWRkYmM5NzljNjU1OTUxODMwOGE2MzVjMzY3MDU1MWE4ZGE2OTRkOSBhc3QtYnJhbmNoCiszMjA1MSBkNzAwMWZhZGZlZmMzNzc1ZWI0MjVkODRhMDBiZGYwOWUxOTU2MTZiIGxlZ2FjeS10cnVuaworMzIwNTIgZDkzYTg0NWNlNWMwOTAzZmRkMWMxZjJlMTliZTEwMmEzMWM0YTliMyBsZWdhY3ktdHJ1bmsKKzMyMDUzIDkzNGRiZWI0MGIzMTcxNTc1ZjdkYTFkMzFhZGFiZTJjYmM4YjZmN2EgcmVsZWFzZTIyLW1haW50CiszMjA1NCBmMjU4MGMyZTc0ZGQ3OTY2OGUzYTdiMzlhZDYxYzFkZDc0ZDUzOTA3IGxlZ2FjeS10cnVuaworMzIwNTUgMDA5MmI2OWY3Zjk5YWE0YWRhNGVmMDEwYzhiZjM4ZTEzNjNhMTEzZCBsZWdhY3ktdHJ1bmsKKzMyMDU2IDE2MWI4YmQ4YTIyNmZjZjlkYTU4ZTkwYThmM2VjNTUyNDg3OTcyODYgbGVnYWN5LXRydW5rCiszMjA1NyAyNDA1MzcxYmUzNGM5NjY4ZTUyMGVmMzBkYTVmYzBiODI4YzFhN2I3IGxlZ2FjeS10cnVuaworMzIwNTggM2ZjNTc2NDI3M2Q5NmYwYWEzOGY0NDFlYTM3NzU3NWMyNmY1NzNiZSBsZWdhY3ktdHJ1bmsKKzMyMDU5IDUwMGY1NDVhMjRmMDdmN2YxNzJiNjRiYjNkM2YwMDRkNzdhZWRlODIgbGVnYWN5LXRydW5rCiszMjA2MCBmMGFkOGZhODhkN2NjZWYyZDQ0YzMwNmI0ZjkxYTYzNDBjYzZlNjY5IGxlZ2FjeS10cnVuaworMzIwNjEgMGEzY2UzMDZiMTFhNWQ0YTlmODFjN2ZjYmQ0MDJhOWQ2YmFhNDFkYyBsZWdhY3ktdHJ1bmsKKzMyMDYyIDE1N2M4NzJlNjg5MmI5YjNkNmU1NjVmMGY5ZDYyY2UxOTYwNGNhMTkgbGVnYWN5LXRydW5rCiszMjA2MyAzN2ViODkyOWYwY2I0MDMwZjJhMjJjODVlNmJhNTU4MDY5NWU1ZDEzIGxlZ2FjeS10cnVuaworMzIwNjQgNTZkOWJiYmFlNmY4MTBjZTAxMTk5ODA5MjY2OWI4MGMwZDFjMDBhNyBsZWdhY3ktdHJ1bmsKKzMyMDY1IDA1NDQzNDMwZDdlZDNkZDRkNmZhNmMyMzEwNTIwNjBjYzZjMzg3MTQgcmVsZWFzZTIyLW1haW50CiszMjA2NiBkZjliN2NlZTEzMzk1MTZiYjg1N2ZlY2JiMDY5YzlhOTRlYjE3NWQ0IGxlZ2FjeS10cnVuaworMzIwNjcgZjMwNzg2NTRhNWMwMmZkZjg5YjVkYTYxYTk4ZjllOGY0MDNmM2NhOCBsZWdhY3ktdHJ1bmsKKzMyMDY4IDIzNWQ1NDNlMGI4NDk3MTEzNWY0ZTEzOTRmYzA3MWVjMjY0MDQyMzUgcmVsZWFzZTIyLW1haW50CiszMjA2OSA3YTNmNzI5ODNhN2VkNTc3ZWZjMmMxMDQ4NzRlOTIzMmVmZjc2ZDY5IGxlZ2FjeS10cnVuaworMzIwNzAgODA0NDczY2Y3MTIxNTQ0MDUwNGYwMWQwOGNiMDE4MjM0NWExNDkxMSByZWxlYXNlMjItbWFpbnQKKzMyMDcxIGQ4Zjk4ZGM2ZTdlMDRhMTdlZWRjMGJjZDdlNWUxNTdmY2ViOTJmMDkgbGVnYWN5LXRydW5rCiszMjA3MiAwNzZjODY3YjkxNmUyMzA2YTQzYTJmMzQxNDE4ODRlMjVmYWVmOTg2IGxlZ2FjeS10cnVuaworMzIwNzMgZGY2NWIwMjE3ZGQ3ZjA4ZTY4MWVkOWYyOTM2N2I3ZjAwNGQ5MDg3MCBsZWdhY3ktdHJ1bmsKKzMyMDc1IGFmMDVmODhiOTY0MTM1OTY1YWVmNGM0NDRlZDljMGJiZDMwMzNhN2QgbGVnYWN5LXRydW5rCiszMjA3NiBhOGQ2NTc2Yjk1YWZhY2IxZDE1MzJhNmU0MTUxOWU5MDBjYmIzMGRiIHJlbGVhc2UyMi1tYWludAorMzIwNzcgOWM2MjA5MjUzNjE1ZmY0MGJhY2U0MzlhNDc4ZDQ2Y2RhYjhmNzFlOSBhc3QtYnJhbmNoCiszMjA3OCA1ZmJkODgwMWZhMjYyNWViMmE4OTQyOTI5NzM5OGEzM2QyYjNjZmIyIGxlZ2FjeS10cnVuaworMzIwNzkgMTU5MmVhMzZhNzAyMzI3ZTViNmI2MzU2ZDI1MjZiYTk3YTM2NjE3MSBsZWdhY3ktdHJ1bmsKKzMyMDgwIGFkNDJjYmVhMjI1OGE3NzIyOTRhNWZiODFjZjliZWU2YThiNmI3YzAgbGVnYWN5LXRydW5rCiszMjA4MSBjN2YxMGE5MDBkNjMyODg4M2E5MmFlNWFlODk0NzVmMGM2OWU1NjFjIGFzdC1icmFuY2gKKzMyMDgyIGI4NzA5NWZiYjA1MTY4ZDFjZTJlMTcwNjI5OGFkNTZkZTBhNWNmZDIgbGVnYWN5LXRydW5rCiszMjA4MyBmYzg0MTUzNTE4MGM5ODRiY2Q4NmU1MWJkMTgwYzUyZGUyOTdmMmExIGxlZ2FjeS10cnVuaworMzIwODQgNzE0MGE2MjM2YzNhODhjOTgyYTQyYjFmZjVlMWZlNDQwZDYxZGVlMCBsZWdhY3ktdHJ1bmsKKzMyMDg1IDc1MWQ3Y2U5YjRiMjNhODRjOGQ3YzE0YmY0YjhhZjk2MTY5N2M0YWEgbGVnYWN5LXRydW5rCiszMjA4NiBiNjZhMmU0MWRhM2VlOTkxNWZmNWRmNjQ1YjRjNzM4MTU1Y2ViMTllIHJlbGVhc2UyMi1tYWludAorMzIwODcgMDRjMWJhNTFlZmRiY2JiYzk5ZjUzMmIyODhkNDljZjhlN2JhY2YwOSBsZWdhY3ktdHJ1bmsKKzMyMDg4IDg1MmFhZTg0Yzk4MTM3M2UwMmFjNGVmNWQ4NzBiYWJiOGJjYjc3ZTYgbGVnYWN5LXRydW5rCiszMjA4OSAwZjU1OGVlZGU2YzU3N2E1OGNjMTM5YjViY2ZkM2UyZmRlMTRmZmJjIGxlZ2FjeS10cnVuaworMzIwOTAgNTA1ZThjMGZhOTJmZTJjYTJjMmI3NjQ4NzhiMjU4MmUzMDRmNDY3NyBsZWdhY3ktdHJ1bmsKKzMyMDkxIGJiYjc0OGY2ODE0ZDY0MGE2NDlkZjM1NDQxYWUzYWJlYjIzMTVlYmQgbGVnYWN5LXRydW5rCiszMjA5MiBmM2FkZDQxNjYyOGRjNzQxNDM2ZmE1Y2Y0NzQxOWVkODBhODVlMDdhIHJlbGVhc2UyMi1tYWludAorMzIwOTMgYjFmYmI4M2U1MTM5MTQ5ZTliNzY1OTUyYWM0NTk1NWZlNWQ4Njc0NCByZWxlYXNlMjItbWFpbnQKKzMyMDk0IDg4MDJkZTBkYTUzMzkxMTYwZmQzZTM1ZDdiOTUyMzc0MjI1MTkxMmQgbGVnYWN5LXRydW5rCiszMjA5NSBlMTNhN2UxZmRiOWU1YjdjMjhjMTJjZjI3ZDJiYmU5Mzk1MTE5NjJhIGxlZ2FjeS10cnVuaworMzIwOTYgODZhNGNlYTcwOTczYWJlYjQ3MzI4NjM1NTVjNDQ4ZTRmNDQ2MGVkNyBsZWdhY3ktdHJ1bmsKKzMyMDk3IDEyZGFkMjA4MWUyZTgyM2ZlOTIxOTU2NDQ1ZjgxZTA5OTMzZTdiZTcgYXN0LWJyYW5jaAorMzIwOTggNGFlYmFjYzc4NjdiYjFlMGZhYWNmMjIwMzFjOGU4MzA4YmJhZWQwNyBhc3QtYnJhbmNoCiszMjA5OSBmMTE1NDQ3M2RhYzhhNzBkZjQzNWZhZmVhZjg3MDdmOTdkNDNlZDQzIHJlbGVhc2UyMi1tYWludAorMzIxMDAgYWZkNWMyZTRiNGFmNmRjMWVjZTA4MjA1YzRiNjMxYjI3ZGY4MDYxOCByZWxlYXNlMjItbWFpbnQKKzMyMTAxIDI4N2RhYTZhN2Y0ZjIyMGRlODEwOGY4ZjU2MDc0ZTJlMzgxMmQ0YTAgcmVsZWFzZTIyLW1haW50CiszMjEwMiA4ZWZlOTQ0NTQ5NWIwYjc2ZDQwNmE1YWE1Y2VjOTQ1ZGNkZjdiNjY0IHJlbGVhc2UyMi1tYWludAorMzIxMDMgNTU1MGY1YTlkNzBjYTc2MjAyZWQzMDc3MmFmMGUzZjViMDU5YzE4NyBsZWdhY3ktdHJ1bmsKKzMyMTA0IGE4ZTVlYzA3MDQzM2Y1YWNhMmJiZGU3ODkxZjMzNDVmMzU1ZTE3NWEgbGVnYWN5LXRydW5rCiszMjEwNSAzNjIyMmQzODIzZjEyOTg2MDM0MTA2NjU2NGNmZjExZDdkNjNmOTUyIHJlbGVhc2UyMi1tYWludAorMzIxMDYgOTczZjlkMzVjZjFkMGYxNTI0ZDczNGViNWQ3OWEyNzNhNWMyMDJlZCBsZWdhY3ktdHJ1bmsKKzMyMTA3IGFiMmE1NDNlODU1YmM5ODhlYmJiMmM5M2I1MjNiMzYzNjlmOTA3NDcgbGVnYWN5LXRydW5rCiszMjEwOCBmMzhjYTllMWI2ODNiZjdhOGI2Yjg0Y2I1ZGM1OTkyNDg3NjE3YzI5IGFzdC1icmFuY2gKKzMyMTA5IDBjNDMzNWYxMGM2N2EyZDNhNzgzOWY3YjRiMDJiMjI3YTJlYmU2ZmYgYXN0LWJyYW5jaAorMzIxMTAgNDMwOGU4YTZjNDgwZGUwMGJlMmY2MDg5NWQ4MzMwMjhkYjg4ZjYwYSBhc3QtYnJhbmNoCiszMjExMSBkYzg5MGE0YzA1MjgwNTVlZDMxZmIwMjNiM2MzZDUwNTBkY2NhOGUwIGxlZ2FjeS10cnVuaworMzIxMTIgYjg1YTIwNTYzMWE0NWMwMzhhNWZkYTMzMmY4ZWJkOWU3YTVjYzkwMiBsZWdhY3ktdHJ1bmsKKzMyMTEzIGYzMTFiNWQyMWVmNTY0YjEwZGI4NWEzZGI2OGQ4N2UwY2Q1NzBhYjEgbGVnYWN5LXRydW5rCiszMjExNCA0ZjhmMTdhZjM0ODdiYWIxNGIwMGI0NmI5Nzg3YmJhYzNjNGYzZDUyIGFzdC1icmFuY2gKKzMyMTE1IDczOGUzNzhmYTBjYzE3MThjMTBmYWYxYzY4ZGM0OGE4MjZjMjcxZjMgbGVnYWN5LXRydW5rCiszMjExNiAzMmJlYTQxZmVmNjhkMDQ4YTI2Y2NiYWNhNTk0OTZjM2FiNWFiODRjIGxlZ2FjeS10cnVuaworMzIxMTcgZDdkN2FmNWYzMjMxZjAxMmQ1OGY1M2Q0NzBjNGE2YmFkNmJlOGJjYyBsZWdhY3ktdHJ1bmsKKzMyMTE4IDQ5MjAyOGU0NzI2ZjE1NzU1MDNhZTVhM2M1OGU3OWMxOGE0NWNiYWEgYXN0LWJyYW5jaAorMzIxMTkgODFiY2MwZjU3ZDU3MGZiZGY1ZjBjZGIyMzYwMjcxOTk1OTMzODkyYiBhc3QtYnJhbmNoCiszMjEyMCBjZWI3YmI3OTEzNTMzNjYzMDA1ZmUzZDZlZGI3OThjNGJkZGI3ZmQzIGFzdC1icmFuY2gKKzMyMTIxIGVkMjFkOGIzN2UzM2Q1NWY1ZjhlYTM5MDUyMzQzYWUxNmY2NTM0MzUgbGVnYWN5LXRydW5rCiszMjEyMiAzZDhjMTIxNGExYzc5YmE3ODE0MGIzZjc0YWQ0MjhhMjVlNjZkZDUyIGFzdC1icmFuY2gKKzMyMTIzIGVkNzNkNjU4NzI1YWE3OGRhNmZjZWRmM2QwMGE3Zjk2MTBiZGM5NmIgYXN0LWJyYW5jaAorMzIxMjQgNDBkOTY1OWI1NmM5NDZjNTcxNTFlZDViMjBmYTJjZWIwYjQ0MzI1YSBsZWdhY3ktdHJ1bmsKKzMyMTI1IDNlMzk5YTg2MThkYjM1YjQ3YmQ1MWI4MmFiYzI3ZDEyNDQ4Y2QyMGQgbGVnYWN5LXRydW5rCiszMjEyNiA0MmRmYTA4OTFiMzMyNjYxMTcwOGQyNzM1OTU2Y2FlOTBlMzg1NjY4IHJlbGVhc2UyMi1tYWludAorMzIxMjcgY2JhMGFlZWUwZDY1MTUzMWI5YWE1NTVmNGM4YjAzYTA5Mzg0NTM1NiBsZWdhY3ktdHJ1bmsKKzMyMTI4IDAwYTU2ZmJlYTY5ZmIwYTcwYWI3MGU2MTRkNDQwNDgzODYyMjIxYzQgcmVsZWFzZTIyLW1haW50CiszMjEyOSAwZmNmOWFlMjVjZmViZTczYzEwYjgxMjEwZTg5MjhlOWMzMTRjNWRlIHJlbGVhc2UyMi1tYWludAorMzIxMzAgNGI2ZTIwZjBiYTRjZGE1MzljNjNjOTAwMThlZmZmNzcyYmE2ZDg4YyByZWxlYXNlMjItbWFpbnQKKzMyMTMxIGNiNWRiNTU2MWNkY2E5ZDM0ZDJiMDY2NDYyNzViMDZhM2NkOGU4ZTQgbGVnYWN5LXRydW5rCiszMjEzMiA4NDlkZmVhMTgyY2EzNzczMzlkZGJlYzRkOWIxNDQ2YjQ2MDM1ZTUwIGxlZ2FjeS10cnVuaworMzIxMzMgMTE3YWNlODUyMWExZDI5NjdhZDFlMzZjMjFhYzk4OWFhNmQ3MTE1OCBsZWdhY3ktdHJ1bmsKKzMyMTM0IGEwNTAzYmRiMGMyNDJjZDg4ZGYzZjI2ZTY3YjAzNjAwZWVkMWY3NjMgbGVnYWN5LXRydW5rCiszMjEzNSA4MjMzYTAyOTRjNDFlM2RlMDA1NzQ0YzBkZGExNjEwOGY5YzEwNjgyIGxlZ2FjeS10cnVuaworMzIxMzYgMzc1ZmRiODJhM2NhZTMyOGE1ODI3MjdmNDgzZGVmYmQzMmE3YmU1MSBsZWdhY3ktdHJ1bmsKKzMyMTM3IDBkZTBkZWQxOTk2OGVjNDcyMjE4N2Y2ZDk3MmNjYWMwNjY1YTI0MzEgbGVnYWN5LXRydW5rCiszMjEzOCBhY2YzNTk2ZmNjMjhkNTA0ZmZiODE1N2ExN2VjMDQ4MzY2MDQxMTkyIGxlZ2FjeS10cnVuaworMzIxMzkgMTc0Y2U0Y2RlYzQ3MjZkOTExODRjN2M3ZmQ4OWM0MzAwZTQzNjg0MyBsZWdhY3ktdHJ1bmsKKzMyMTQwIDkwYzc3YjhhZjFhNDk3NDQ2MGYyNmZiMmIzN2Q3NWRjY2Q1NGFiYjIgbGVnYWN5LXRydW5rCiszMjE0MSA5NDAwNTA0Y2IwYjI2MWUwMzNlZGRmMjg4YzI2MTkyY2ZkZDUxYzMxIGxlZ2FjeS10cnVuaworMzIxNDIgNGM1OTZkZDYwYzIyZDMwZDRkZWJmODY3NGUxNDRhOTM0YjRkYTM4OCBsZWdhY3ktdHJ1bmsKKzMyMTQzIDc4Zjg0NmZiNTcwYTA2MzJhNzZlN2JlMjhkNTAyOWJjZmIzOTg0M2UgbGVnYWN5LXRydW5rCiszMjE0NCAzNjhiZWJlMzI3NDMzOTAxYzY2N2VmZWYxYjU4NTU5MzcxYzY3NzIwIGxlZ2FjeS10cnVuaworMzIxNDUgMjVlNzQ2Nzg3MWM1ODcyYjliNzFjZjg0N2M5YzM1MmI1NjU1YTNkOCBsZWdhY3ktdHJ1bmsKKzMyMTQ2IDJhMzA5NWE0MTViMTBiYTEwMzU3MzQ4MWE3MWE0YjA0MzcyNjMyZmYgbGVnYWN5LXRydW5rCiszMjE0NyA2NjUzYTU2MDAyZWY5ZDgzMTZkYjhhM2ZhNGQ2MDQ5MDE0OWJkMGEzIGxlZ2FjeS10cnVuaworMzIxNDggOTY0YmQ5N2FjMWY1YmQzZDk1MzdlYjA0Mzk2MDQxODkyNDIzZDdkNiBsZWdhY3ktdHJ1bmsKKzMyMTQ5IDQ4N2RmMjk0ZDMyODEwYzhlYWYxNTBmMmY1Zjc3YmZlZGQyMjA2NmMgbGVnYWN5LXRydW5rCiszMjE1MCBjMDFmZGMzYTkxODA0MmQ5NDFlZDVlYzcwZDZlYjQ3ZmI4N2RhNDYxIGxlZ2FjeS10cnVuaworMzIxNTEgNGZmNjExYjE2NDg0OTMzZjAyMzRmZDA4YzYxZjlhMjdjMTQ5ZDcwZCBsZWdhY3ktdHJ1bmsKKzMyMTUyIDkyZDAxZjEwMmNhMDk5M2ViMTQ0YjViN2MzNjc3MDE0YzhkM2MxM2MgcmVsZWFzZTIyLW1haW50CiszMjE1MyBiNWIzZTZmM2YzMTdlZDhkNDM5NmE3N2E0NTE4YWQxYzFmMmNlM2VmIGxlZ2FjeS10cnVuaworMzIxNTQgNWI1NDYyYWUzMTRkZGQzNTczZTI3NGIyY2RlZWEwMDk4MzA2ZTZlNCBsZWdhY3ktdHJ1bmsKKzMyMTU1IDVmYTgzNDRkNmU2ZjAxZDUyYWMwOTQ2MmZmOWE5NmU4MzIyNzRmMzYgcmVsZWFzZTIyLW1haW50CiszMjE1NiA4YmYwODRjNGFkOWY3NGI4YTM1MTA0MjJlZjUzZjdiZGM2ZjJjZmE1IHJlbGVhc2UyMi1tYWludAorMzIxNTcgYmE3MTYyMjQ5NzRlOTc2OWY4N2MyOTZiMjIzMDNiMjA0NDcwOWVmZiByZWxlYXNlMjItbWFpbnQKKzMyMTU4IDE2MzlmNjM1ZDk4M2I5ZmM0NzBhNzczNDllZjg5NDllMGY3NjIzMDkgbGVnYWN5LXRydW5rCiszMjE1OSA4NzgzNjZiMGU5N2FjNzE1YTJhYzM1MDhiNWU4Mjc1ZDY3OGMyYjJlIGxlZ2FjeS10cnVuaworMzIxNjAgZjIxM2VlNmNlNTVlZThmYTNjMTRiNjU5MGVmZTg2ZTU4MjI4ZjkyZSBsZWdhY3ktdHJ1bmsKKzMyMTYxIGI5MDY0ZWEwNTkzZWExZDczNDcyYmY2NmZkYWMxMDlkZDg0OWEwZjIgbGVnYWN5LXRydW5rCiszMjE2MiBhZTBhZWIwZDYzMWJjNWM1Y2EzZjBmZTM1MjEzYzUyOWIzNjdjNTA4IGxlZ2FjeS10cnVuaworMzIxNjMgNDY5ZmI2Y2U5NjkzNTFmYjMwNzZmZjgzYTg1OTBiZjFiODk3MzkyMyByZWxlYXNlMjItbWFpbnQKKzMyMTY0IGM3YmIyNTRhYjg5MGUxYjk1MjRjZTRiNzVjOThiZmM4YTU1YzRkNTcgbGVnYWN5LXRydW5rCiszMjE2NSA3MTEwM2RmOWQ2NGIwN2RjM2MxMDc1YzE5OWI1OTY2YTQxN2ZiYmIzIGxlZ2FjeS10cnVuaworMzIxNjYgYmJlZDdlMTJiODQyMmMwOTFlZWUyMTc0OTU3YTM2ZjMzZTdkMGExZCBsZWdhY3ktdHJ1bmsKKzMyMTY3IDg5ODRkZjJkYzI3YjI3MGQ4YzI5MDMzMTU3MzA4NWUyOWFkZmNhODIgbGVnYWN5LXRydW5rCiszMjE2OCBiNjFhOWUyMWE2NmRjYTU5ZmUxOGFjZGZlODg5MmYwNmVjYzBkMGQ1IGxlZ2FjeS10cnVuaworMzIxNjkgMzQ0ODM3NjkwNzhiMzMzNzBhZGZkZjc4MjBkYjczZmUxNzY0MmJlNiBsZWdhY3ktdHJ1bmsKKzMyMTcwIGU5MzBiZWJlYzhjMGY1ZGQzYzQwZjkwY2YzYjM1Yzk2MWI0MDc5MTMgbGVnYWN5LXRydW5rCiszMjE3MSBlZTg4NTNjYzhjYTFmNjlhODk3Mzg2YTljZmI2MWMxOGVmNDZhNzdjIGxlZ2FjeS10cnVuaworMzIxNzIgMDE3ZDJlM2VhMmFlNGJhNmRkNDI3NWY1MjU1MjZlYmU5MTI1YTYyNyBsZWdhY3ktdHJ1bmsKKzMyMTczIGZkNDM0YmViNWY1NjA3OWIzNDlkMzIyZjdjOTA3NjNmM2YwMmM2ZTQgbGVnYWN5LXRydW5rCiszMjE3NCA2YWExYzA4MjZhMzliZTY4MzQ0Mjk5ZjFkZDA3ZmNmZTYyNTI1NDBmIGxlZ2FjeS10cnVuaworMzIxNzUgZDEwZGJiOTRjOWVlMWJmZjljMTRlNmM1ZjA4NzgxNTczMTJmNjU5NCBsZWdhY3ktdHJ1bmsKKzMyMTc2IDJkNGMxZTRlNWIzNmI1NDQ5OTIxNjY1NmI2NWY3MzMwMmJhOTI0MjUgcmVsZWFzZTIyLW1haW50CiszMjE3NyBkYjQ3OTljYTIwMjFiY2Y1NWQ5MjdhZmUzNDgyMzQyM2Q0N2I4ZGQ2IGxlZ2FjeS10cnVuaworMzIxNzggOWFjZGM2YzQ0MTZhYzUyMjg4MjU3OGVmODRmMjNiMTBlZGU1NjVhMCBsZWdhY3ktdHJ1bmsKKzMyMTc5IGIzN2IyOTgyMDg2YmMzMzMxMTg5NjIyMTNhYTE2NjEzOGRkMGIwNDMgbGVnYWN5LXRydW5rCiszMjE4MCA2MmU4ODNlMmQ1MTcxMWYwMDhmMTM5ODNlMGUxNDliYzkyOGY5Y2ZmIGxlZ2FjeS10cnVuaworMzIxODEgZTZiZjA4ZGFkZDVjMjE3NjA1ZWU5ZGZjYjE0MTNmZTExYjA5ZmUzZiByZWxlYXNlMjItbWFpbnQKKzMyMTgyIGI0NDg3YTNiNWYxYTFkMWJmMzQ0MjBmOWFkZDM0YWNmNWVmOTc3NTggcmVsZWFzZTIyLW1haW50CiszMjE4MyA3ODM5NWU1YjQ3ODJjYzM0OTI4ODRmYzNlOWM1NWQwOTc3NWRmMWIzIGxlZ2FjeS10cnVuaworMzIxODQgYmEyZDg5MjFhOGRhMDE5YjhmMjAzMjI3MjJmYjZlZjQ2ZjVjYTgzMSBsZWdhY3ktdHJ1bmsKKzMyMTg1IDg0YWNiYTIyNzk1NDI0Y2ZkZTVjMTQzODNkMzIwOTM1ODRiZWU4M2UgbGVnYWN5LXRydW5rCiszMjE4NiBhZmYwODBmMmVmYjQ4NjhiZjhhYTY3NjNmNjQ5N2JkZjNkMzJmNmZhIGxlZ2FjeS10cnVuaworMzIxODcgZTkyYzI1ZDQyOGI4N2YwMjJiZGRjMWJhMGQzMTc4OGVkNjRkNTRlMiBsZWdhY3ktdHJ1bmsKKzMyMTg4IDIxZjdjZmYxNzkwZmRjOGQ1OWU1MWM3YzNiOGE3OWU3ZTFhYjBhNjAgbGVnYWN5LXRydW5rCiszMjE4OSBjZDUwMTEyMTcxNWIwNjhhMzU4YzJjMDUyZjExN2M5YWE5MDY0ZjUzIGxlZ2FjeS10cnVuaworMzIxOTAgN2E2MjgxNDkzZDJjNjcxMDQ3YzFkZmQ1NTg1MGI0YmM3MDk0MGMxMCBsZWdhY3ktdHJ1bmsKKzMyMTkxIGYyMWNkMDc5ZDEwODM1ZjQxNDE0M2NkZTQxZjg5NWExMDUwYWRiOGIgbGVnYWN5LXRydW5rCiszMjE5MiA2ZTdlZmQ2YzI1MTBhMmIyZDFjZDFiNWZiN2IwZWEzMDY1YzFjODhlIGxlZ2FjeS10cnVuaworMzIxOTMgOWRkYzQ5OGI3MDEzYjg2ZTcxYjg4YWI2MDAzOTJmYjk1MTg4MDNkNSBsZWdhY3ktdHJ1bmsKKzMyMTk0IGJjODkyM2ZkZDgzYjU4OGZiYWNkZjU0ZDJhODNjOTJiOWNlN2I1YjEgbGVnYWN5LXRydW5rCiszMjE5NSBkMDhkN2I0YmU1MzIwMTMyMTJmZmJiMDBhNWU3OTlkYzBiZGRmNTVhIGxlZ2FjeS10cnVuaworMzIxOTYgNzUxMTM3NTkyNTJjNzg4YzE2Mjc3MjlmNzM1NmM1OGEzZTI0NzhmNSBsZWdhY3ktdHJ1bmsKKzMyMTk3IGJmYzdhOWZhMzRkNmRiMjM0ZTg5MTgyMzEwOWNiNDE3MDVkZDExOTkgbGVnYWN5LXRydW5rCiszMjE5OCA1ZmJkY2FlZjlkZGFhMjMyNWE3NDU0ZTU5MzQ2ZWZiMmMyMTIyMjQ5IGxlZ2FjeS10cnVuaworMzIxOTkgZmFlYjcwOGJhY2M0MjE2NjdmNjBhM2E0ZjY3MDVjYjkxMTIwNzI3MiByZWxlYXNlMjItbWFpbnQKKzMyMjAwIGRhNzRiZGQ5MzQ0MWJkNDAyNDZiOWNkOTYxNjRiZDk0MTRiNmVhNDYgbGVnYWN5LXRydW5rCiszMjIwMSBiZTJlY2FmYjE1YWQwZWEwMjZmYTk2YmMyMWFjZjVjMWQ1MzNkNjE5IGxlZ2FjeS10cnVuaworMzIyMDIgMjE1ZjFmNDg1MWE0NjM5YWVjZjY0MjE5N2U3M2RmY2VhZjc3ZTI0MiBsZWdhY3ktdHJ1bmsKKzMyMjAzIDFiZDUwYzI4MjAzZmNmMjdlMzBkYmM1ZDNlMDNhODUzOWI1MmI0NzcgbGVnYWN5LXRydW5rCiszMjIwNCBmMzAxZWFlZGRlODU4YmRhN2QwMDJjODhmZTU2OWNmZGViMmQ4MTMwIGxlZ2FjeS10cnVuaworMzIyMDUgOGI0OTQ0NWMwYTBlMDM5MGJmMDViYjEzNjk5NDE0ZDljMWFkNjA2OSBsZWdhY3ktdHJ1bmsKKzMyMjA2IDk4MTAzMmU2NDczNjJmMDgxYTg5MWQ5MTFjYTQ3NDg2YmMxOTNjYmEgbGVnYWN5LXRydW5rCiszMjIwNyBhNWM1ZGE1NDZjMjkyOGM3ZGYxNTg2ODIzOWNhMGQxZWQxMmM2NzExIGxlZ2FjeS10cnVuaworMzIyMDggYzJhZDYyZjRlYTliMzBiNWFlMDNlN2EzMWM1YTA4YzhiMGMwYmNhMiByZWxlYXNlMjItbWFpbnQKKzMyMjA5IDAzYmIwYzQwOGQ1NzMxOGNhNWJlOGU5Zjk1MmZjOTE1ZTMxYTQyNzIgbGVnYWN5LXRydW5rCiszMjIxMCBhMGMwMDIwNTA1MjY1YThlMzg5N2RkNjI0NGM2MmQ5ZGI1ZjFhMWE5IGxlZ2FjeS10cnVuaworMzIyMTEgYzM2YmQxYzgzNmI4YzgwY2RmNmQ4Nzk5OWFiMjAwNGJiZjY2NGNlNiBsZWdhY3ktdHJ1bmsKKzMyMjEyIDBkMjY4YzZlZjAwYWNkZTZhMDE4MGYwZDhmZTZiMzI0MTMzM2I1ZWMgbGVnYWN5LXRydW5rCiszMjIxMyA5NGE5ODY1YWExYzY0NDE5YzNiYjQ5YzgzYmQwYTE1M2JlYzg1ZTA1IGxlZ2FjeS10cnVuaworMzIyMTQgOGM5MzA3NWI5Y2I1NTEwYmE5M2E5MTgzMjNlMDVjZjQxZDgzODNhYSBsZWdhY3ktdHJ1bmsKKzMyMjE1IDAyYzg3ZjM0OGVkYjIyZjhlNWMxMjNmNDhlMmY5Y2I4MWIzM2U4MWEgbGVnYWN5LXRydW5rCiszMjIxNiBhNTdlZTdiMmE4NzlkZTAyYmI1NTdlZDhkZDVjYTJhMzQzMWJjODVjIGxlZ2FjeS10cnVuaworMzIyMTcgOTViNmRkMDRkYThmZGMxZDhkYWQ4NjU3NjM2YzZhN2JkMmMyMTBiYiBsZWdhY3ktdHJ1bmsKKzMyMjE4IDg4M2E2OTQ3OTVmNTcwM2NiNDFlY2ZiNWNhOTJmNjAwYmJlZGMyNzggbGVnYWN5LXRydW5rCiszMjIxOSBlZjA1Zjk4MWJjNGI4ZGFiMWJiZDg5YmFhNTFjZjQ1MjZlYTg4YzVkIGxlZ2FjeS10cnVuaworMzIyMjAgNmYxM2FkZGUxYjUxYmI0OTI5NDZhYWUwZGEyNmNjMjM0ZjMzNzBhNyBsZWdhY3ktdHJ1bmsKKzMyMjIxIGRlNTA5MzRlMTE0NWJmNmQ5MGI2NTk1OWY2Y2UxODZmMmUwNTI5MGQgbGVnYWN5LXRydW5rCiszMjIyMiAyMmFmZGUyNmIzZDE2NmFjMGYyNmE2YTQ1OWZmZmM2ZjJmM2UyZmMxIGxlZ2FjeS10cnVuaworMzIyMjMgOWZlZGU3MDAzYzY1ZjZmNmUxYjE5NTc4NTg2OTQ3MmVlYjk4NzQwOSBsZWdhY3ktdHJ1bmsKKzMyMjI0IGQyZDIzMmUyNDI3YmY3NGVlZmZkYzU0YjJjN2YxY2VjOTNiYWU5M2EgbGVnYWN5LXRydW5rCiszMjIyNSAzY2YyNmI5Zjk2ZjdlNjQ2NDA4NzIwYjNhZGQ1YzBkZDMzYWFkNmNjIGxlZ2FjeS10cnVuaworMzIyMjYgMTE2NjBmNDM2MWY4YTM2ODk3NTlhY2FhNTYwMWNmZjhjYzA0MzZmOSBsZWdhY3ktdHJ1bmsKKzMyMjI3IDFhZWFkMGM4NDUwNzdlMDgwNzU0NzIyYWYyOTAyODdjZDcyMjNmZDMgbGVnYWN5LXRydW5rCiszMjIyOCA1OGRiNWZiZDljMjgyYTQ5NzVkNzQ1YWVhMGY3MDZlNzhiNjY5MGM3IGxlZ2FjeS10cnVuaworMzIyMjkgMjBlZTY4Y2IwYmM0N2M2NzNkMGU5OTJmMjQ3YjQ1Nzg4MjA3NDZhMCBsZWdhY3ktdHJ1bmsKKzMyMjMwIDdmZTMzYzE1NDFkZmZhZjgxYTkzZjlmMjZkMTBiNzFlYTJmYTAyMmYgbGVnYWN5LXRydW5rCiszMjIzMSBlZWU0OTY5YWRiYWUwZDE2NDJmYTFhMmM0NDZjNTA3M2VkNmI3NmZkIGxlZ2FjeS10cnVuaworMzIyMzIgOTQ0MTY5NGE3MGM3ZWQzOTgzNjYwNzY0MmRmNDMzY2EyZGFlNDc0ZiBsZWdhY3ktdHJ1bmsKKzMyMjMzIDQzNmQ4MTJmMmI5NGI3ZGFiN2FhZDJjOTcwNTMxN2QxZWFiZWZjZTMgbGVnYWN5LXRydW5rCiszMjIzNCBmM2IyNGEyZjZmNGRhODZhOTI3MGU5YWE0YjUxNGEzNTYxMDIyZjUzIGxlZ2FjeS10cnVuaworMzIyMzUgODMyMjA3N2QyMzRjZmFiODBhZTk4NmMzNjYxMDM1MTYzOTdjMzQ4ZSBsZWdhY3ktdHJ1bmsKKzMyMjM2IDY5NTIzNzNlOGZlNWM4NzJlNjM3OTE0ODAyNjIyOThlYzIzOGI1ZmEgbGVnYWN5LXRydW5rCiszMjIzNyA2N2QzNmY0ZGZlYTEyNGFlODVjMGMxMGQyOGI4MzM4MzNhYjcyYjJkIGxlZ2FjeS10cnVuaworMzIyMzggYzcxYjliYTFmMDRjMTQ4MjlmYTk2NTRkOWRkNTNkMGJiMzc5ZDFlYiBsZWdhY3ktdHJ1bmsKKzMyMjM5IDA3OTJjYWE2MzcxYzlkMWQyNWQwNGJiMGM3NTc1ODE2MjQzY2NmZWUgbGVnYWN5LXRydW5rCiszMjI0MCBiMTY3MTU1MGM3ZTFkYzc4MjgxNzJiYjBiNDYyYTY5MWM3Njc4ZWIxIGxlZ2FjeS10cnVuaworMzIyNDEgNGM2NTg1MjUzZTZmMTMyNGQyMTNhZjRiOWZhNDZkMWY4NDllMTRjMCBsZWdhY3ktdHJ1bmsKKzMyMjQyIGI0YjhmZTJhNjMyYzNiY2I0NTJiYzA0MGRhOGQyMzhjYTg3MzhhOWUgbGVnYWN5LXRydW5rCiszMjI0MyA0ZjBiN2FjZmZjN2Q0YzRjN2ViNDJkM2MwYjA4Y2NhMjlmNTdiNTlhIGxlZ2FjeS10cnVuaworMzIyNDQgZDUzNTdhYWRlNGI3MzA2NDcwY2FmODRmYTBmMWViMjkyZjBkZDJhYyBsZWdhY3ktdHJ1bmsKKzMyMjQ1IDlmZGZhNzM2NTc4ZDczNmQ3MDhhNDc0ZTUzYzY1ZGM4ZjA3YWU1OTQgbGVnYWN5LXRydW5rCiszMjI0NiBlYjU1MTg4ZjE2M2FjZWU3YTNjOWFlNzkxMmU5MzMwZTI2NDJkZDM3IGxlZ2FjeS10cnVuaworMzIyNDcgZGRkOTA2ZWZmZDljM2I2NWQwZTEzYzlkODU1ZmM1MzYzYzEzY2UyYiBsZWdhY3ktdHJ1bmsKKzMyMjQ4IDgyNGRjMjhmOTIyZDI5OWMxNzZiYjczNjkyNzI2NDMyM2ZkNzVlZTggbGVnYWN5LXRydW5rCiszMjI0OSA2YzAwMDQ2OTA5NDE4YjcyMWJjYWQ0MTFmOThiOTFlN2E0ZTJjNjEwIGxlZ2FjeS10cnVuaworMzIyNTAgODFlNWJmNjIzZWNmNzU4YmMyNWM2MmNiYjFlYmQ0ZWMxMjBkZWQ5MiBsZWdhY3ktdHJ1bmsKKzMyMjUxIGU4MGYxOGE0OWNjOWFjOGUzMTFmNDFkOGQ2MDcxMzE0ZmIwNDc5OWUgbGVnYWN5LXRydW5rCiszMjI1MiAwN2Q4ZTBlYWIzYWY0OWQ1OGUzMjAyYjllODI2OTRlMTk5ODViZTBjIGxlZ2FjeS10cnVuaworMzIyNTMgMmNmZDkxNmRkMzEyNDlkZjJkNDU1OGFlM2I5YmQzZTkzYmFmY2QxMyBsZWdhY3ktdHJ1bmsKKzMyMjU0IDNjMzkxOTVkYWI5YTQwZWYzMTkwOGY2NGQwZmU4NGRkZTM4YWEzYjAgbGVnYWN5LXRydW5rCiszMjI1NSAzZDkzYzMwMzljODcxY2NlOTE5NzhmZmM3YjQ4ZTY3MzFkYWRkNzdiIGxlZ2FjeS10cnVuaworMzIyNTYgOGFiNzUyZGI0Nzc1ZDU1M2Y3MzFhZmQzZDAzMTIwOWRkYjdmODA1MSBsZWdhY3ktdHJ1bmsKKzMyMjU3IGZhODJmODZlYWEwOTk0MGE2NmNlMzkzNGI4NTY3NTU2NGIzZjU3OTcgbGVnYWN5LXRydW5rCiszMjI1OCAzMzkyZjM4YmQxMTRiOGUxNTlhMjFlMjAyZGYwMGM0ZjRjZWMwZWI0IGxlZ2FjeS10cnVuaworMzIyNTkgOTQ3YzI5MzdjMDllMjIxM2UxNTViMDM1ZmRiOTQzYmFmMDlhMWQyYyBsZWdhY3ktdHJ1bmsKKzMyMjYwIGEyNmI2YjI3NWZiNzJkOTg5N2NlMWM5OTc5YjIxMGU2ZjViZjE4NWUgbGVnYWN5LXRydW5rCiszMjI2MSAzNmU5YmE0MDU0OTI1OWYzZWUxZTc0ZTJmNDU4M2Q4NjhiY2ZkZTUzIGxlZ2FjeS10cnVuaworMzIyNjIgYzYyOWVkOGE5ZGJiM2E4NGNjMzVmZTljM2RhYjI3YTRmZjVjOWVlMiByZWxlYXNlMjItbWFpbnQKKzMyMjYzIDExZjdmMTE4MDcyYjY0ZmYwMWZmMjM2MjQyOTE2OWVkYzQ1YWVlYTEgbGVnYWN5LXRydW5rCiszMjI2NCBhY2ZhMGZmOGM1YTQwMTZiNTllZjA1NjFkMmI5YTRjMTYxZTcyZjQxIGxlZ2FjeS10cnVuaworMzIyNjUgOWJlNDEwMzgwN2Y1Yzc0NWZmOWIyNTA2NGZjNmYyZjc2OGM0ZDFiOSBsZWdhY3ktdHJ1bmsKKzMyMjY2IGJlMGQ0ZWM2YmY1YTliODBlOTFjYTUzZmIzZDI3M2FmYzY2YmMwOGYgbGVnYWN5LXRydW5rCiszMjI2NyA0ODI0YWFiMTI1NDliYjBjMzdjYTgwMmEzM2UxYzcwMDE3ODAxZmU2IGxlZ2FjeS10cnVuaworMzIyNjggYThlNjQwYjQ3N2Y2NmQ1YjYxNTIyYmQ3OWM5YzU4MDcyMGY0YTQwNCBsZWdhY3ktdHJ1bmsKKzMyMjY5IGNmZWNlMTgyMmU5NDIzNzFmN2Y5OWI0YjIzZDJmNjY2NWVkMTIzOGEgbGVnYWN5LXRydW5rCiszMjI3MCBjYTI0ODIwMTJiM2M2MDBmODY1ZDNhZjlmODk0MThlZGViOGYyZmZmIGxlZ2FjeS10cnVuaworMzIyNzEgOGU1NDFiMDc4ZWRiNTA5YjZjZGVmMGMyMDc2MTBkYzQ5ODNjMjliZCBsZWdhY3ktdHJ1bmsKKzMyMjcyIGI5NzQ1Y2Q3OTFiZmRkYTc4MDA2ZjBiZDdiMjNlM2M4NjQ4MzM3OTAgbGVnYWN5LXRydW5rCiszMjI3MyAxOTNiOGFlYzAwY2UxYmUyZjAzYWE5Njk5YTVkNmY2NTE2Y2Y3OTMwIGxlZ2FjeS10cnVuaworMzIyNzQgOWQ0ZTEzODQ5NGZiMzEyY2UyOGE4NTI0ZTkxYjA1ZDI2NGY4ZDM4NyBsZWdhY3ktdHJ1bmsKKzMyMjc1IDBlODQxNmJlMjA4ZTBlYjYwNGNmZmZlN2NiNTcwZjYzNmIzYzAzZDEgbGVnYWN5LXRydW5rCiszMjI3NiAwNGIxNzI4NDMyOTI5ODEyMTQ4Y2IxYzY4ZDg1ZGU4NzZlNTkwODFmIGxlZ2FjeS10cnVuaworMzIyNzcgZDhhOGY3NDRhM2U1MDhiNWUxMzA3Mzc2MjZmYzQ1NjRkOTU2NWFiMiBsZWdhY3ktdHJ1bmsKKzMyMjc4IDdmZGEwOWY3NTFhZDViMWM5YjQ3OGY5M2Q3MGIzNjc2NzcxZDY4M2QgbGVnYWN5LXRydW5rCiszMjI3OSAyOGEyOTc1NTE0Y2Q2MWQ0MzYwMGM4NTNlZmM4ZDc5MmY2ZGEzYmM1IGxlZ2FjeS10cnVuaworMzIyODAgNTYwMDZkOTdiY2VmMGJlNTBjN2JiZjhhMmJiNjVkMzY5MDhkMGVhNCBsZWdhY3ktdHJ1bmsKKzMyMjgxIDFlOTAwNDU1M2UxZDkwNWI0MTA5Y2Q3MzY2OTlmZGJiOGQ1YmQ1MTggbGVnYWN5LXRydW5rCiszMjI4MiAxNmY0N2JkNDMxYzQ4NzkyY2VjZTc1NGIwYzBkNGRhMDkzNGNmMWRhIGxlZ2FjeS10cnVuaworMzIyODMgMmZhZTVmNzYzMWVmNGFhZTdhMGMxYmRhYjZjNDUzNzI1MmJkNmQ5MSBnZXRhcmdzX21hc2tfbW9kcworMzIyODQgNGQyMjU5Y2I3N2EwZTFjZDdkODU0ZGQwZDUwZDU4MmVlNzNmMmI3OCBsZWdhY3ktdHJ1bmsKKzMyMjg1IDdmYTE0ZjIwYWVhNDIyMzJiNjRhNmFlMDY0MjQxNzA1MTJjN2E2NTAgbGVnYWN5LXRydW5rCiszMjI4NiA4ODM2NTI5ZTllNjY3MGE1NWY3NDU3MTdlYzI5YTU2NTVhNDNlNjEyIGxlZ2FjeS10cnVuaworMzIyODcgZWUxNjVmZTFiNDJmNjM0YzZjOTYwYjFmMjZlNTYyMWE5ZjUyNmM1MCBsZWdhY3ktdHJ1bmsKKzMyMjg4IDVmMWVmMTg4MmIyNTE4OGVlMDZlMmE4NGJlY2M4N2FkODg5ZGNiNDIgbGVnYWN5LXRydW5rCiszMjI4OSA3ZTY2NWMxNjA1ODNmYjY2Mzc4ZDNlYzVmOWY4NDQwNjM3NzJlZDlmIGxlZ2FjeS10cnVuaworMzIyOTAgZWU2ZGYyYzY2OGVhY2NkZDljMDNhMmQyNDY3N2FlNzAxNDJlMDY3ZiBsZWdhY3ktdHJ1bmsKKzMyMjkxIDEyZDQ0MDllNTllMzAzYTM5NzhmNWQwYjQzM2E3ZThkNjc1Njc5NDYgcmVsZWFzZTIyLW1haW50CiszMjI5MiBlMzNmZWRiNTgxZjRiMDdhOWY4NDU3ZTgwMTg4OTg5YmMyNjg4ZTFjIGxlZ2FjeS10cnVuaworMzIyOTMgMjM5NDI5ZGMwMjlmYzhkNTU3YWM2ODBjYzgyNDIzYjVjMmNjZDFlYyBsZWdhY3ktdHJ1bmsKKzMyMjk0IGE5MzhiMTNlMDI5MTEyMzgyYWY0MDVmOGRhMmIyMWZjMjA3ZTRiZDUgbGVnYWN5LXRydW5rCiszMjI5NSA1YmZkYmMwZmQxNzIyYTg0MzNjMzkzOGRmZmQ0Mzc1MDRiMjllN2M1IGxlZ2FjeS10cnVuaworMzIyOTYgMDQ2YmM5ZDdmYjBlNDMzYzQ1ZjE3NzcyNjc0NzE2ZmZlMjJhMTQxZiBsZWdhY3ktdHJ1bmsKKzMyMjk3IDBkOGQ0YzhkYzY4YmI4ODliZTRkM2E1Y2VmNmYxNzZlZjI1MzliYTUgbGVnYWN5LXRydW5rCiszMjI5OCBjNTU1Y2QwMmIwZjk2M2NlMDQxZTZkY2MyZmVlNjQ1NDU2NWI3ZjEzIGxlZ2FjeS10cnVuaworMzIyOTkgMTkyNTQxMzQzMWE2ZWMyOGZjODZhOWY2Nzk5Y2Q2ODJhYzMyZTFmYSBnZXRhcmdzX21hc2tfbW9kcworMzIzMDAgZmRhMmY3ZDc4M2MyNGFmM2FhYzM1MzkxNTA4NTJjYjdjZGIxYzcwMiBnZXRhcmdzX21hc2tfbW9kcworMzIzMDEgZDQxZDhkZTk3NjhmMzdmMTcxZTczYTA3YWU1N2I0NjViMTdkYjllZCBsZWdhY3ktdHJ1bmsKKzMyMzAyIDJhMjNmYzgzNzIwZmExMjY0YzNjNWRhNTZhMzI2MzMwMzI1N2U4NTMgbGVnYWN5LXRydW5rCiszMjMwMyBjMWJhNTA3OTBjODM4NDg1YmJkYmQzZTg1ZmIxZjM5NWRjNWEwZTEzIGxlZ2FjeS10cnVuaworMzIzMDQgOWViNjk2NGI0YjZjOTg4ZDg2ZWNlNGFkMTM3N2U2NWMyODMwNGJiYiByZWxlYXNlMjItbWFpbnQKKzMyMzA1IDE1NTZhMzhkNTI3ODE1NDFkOTlhNDA3MGI0MmZiOTQzYzNjODkxZWYgbGVnYWN5LXRydW5rCiszMjMwNiA1ZmYxZjJmOWZjMzQ5M2YzYmFjYTIzNTdkNTQ2N2E5ZmI1MmU5ZGVkIGxlZ2FjeS10cnVuaworMzIzMDcgMTgxNTE2NmU4MDk3ODc1ZTI2YzI2NDNjYTdlOTNhNDYyZDQwZWIxMyBsZWdhY3ktdHJ1bmsKKzMyMzA4IDMxY2I4ZTAyNjBkYjUxMDJiMGFiNTA2YzRhZWUzOWM5ZDEyNDI4YWUgbGVnYWN5LXRydW5rCiszMjMwOSBhYjBjMDY3ZmUyODZmYmQzMDNhY2VjMTY4ODM3NDI3NGI1ODk2NjI3IGxlZ2FjeS10cnVuaworMzIzMTAgMjc2MzUyYmZjYjQyYjQxYWFlOTY2MTRmYWIzZGUzMjE2MWNlM2Y4MiBsZWdhY3ktdHJ1bmsKKzMyMzExIGNhNjRjMWJlMjMwYmFjZTRhM2JlMmIxMDNjOTMwNDA4YjIxMjE4N2MgbGVnYWN5LXRydW5rCiszMjMxMiBjZjQ1YWQzY2E0Yjc1ZGRjZGJjNTEyZDcyYjkzYjNmYzBkNTQxNGIwIGxlZ2FjeS10cnVuaworMzIzMTMgNDYyYTRjMzExOGJiYzA2ODI5Y2FmMWQwYzI4YWZjZjRhMzY3MTRkZCBsZWdhY3ktdHJ1bmsKKzMyMzE0IDhiZDM0ZGQ1OGE5MmFhMzM0NzNmOWY5N2ViMjc0Y2I3Y2IxNjZiMzcgbGVnYWN5LXRydW5rCiszMjMxNSBjNWJkOGE4NDUyMjM5ZjM2YmUyMzE4YTYzNDRjNTZkNzg1OTk3N2EyIGxlZ2FjeS10cnVuaworMzIzMTYgNzBkNmY4YjBmYzY5NDVlNzFmNDQzOGNlMDdiNGE5MWNhMTMwYzMxOCBsZWdhY3ktdHJ1bmsKKzMyMzE3IDQwZDI4N2MzZDkwNjIwYTc3NjUzMDE1ODg5ZGVkNWJiYjg0NjRkNmEgbGVnYWN5LXRydW5rCiszMjMxOCBkMGFlNjIwYWZiZDRkNDFiOGE2NWYxMjUwNTJhYzkwZTI0ZTdkNmY1IHJlbGVhc2UyMi1tYWludAorMzIzMTkgZWQ1ZWNkNjNjMWNmOWI3ZjRmMjk5YzgxMmI4NjhkZTg1YTBlNzMwZCBsZWdhY3ktdHJ1bmsKKzMyMzIwIDk2NDJmYjRjZGEyZmU0YWY1NmUwYjhjOThjOGRmNWM1NTMyMjYyMjMgcmVsZWFzZTIyLW1haW50CiszMjMyMSBjOTkyNWZhMjllYTM3ZTU1ODg0ODZkOTc1MjY1OWRiZGNjZmEzZDQ2IGxlZ2FjeS10cnVuaworMzIzMjIgMDZkMTM3YTQyN2U5NjExZDNmYjI2MGEyMTNkZjQxOGZjYWU5Yzc3ZSBsZWdhY3ktdHJ1bmsKKzMyMzIzIDc5MjJkNWY0Mzg1NDNhNTc2NWRlNjRmODAyMjljZTMxNzFkMjAzNDcgbGVnYWN5LXRydW5rCiszMjMyNCBhNDE1NGRkNTkzOWFhNmJiM2ExMTI4OTM5ZTkwNzRkNmIxMzgzZDE1IGxlZ2FjeS10cnVuaworMzIzMjUgZDZhZmUxOTZlZjgyMDgzZmYyMjI2MjBjOWFhNTk1ZWZjYzUzOWZiMyBsZWdhY3ktdHJ1bmsKKzMyMzI2IDY1OGIxMGM1YmEyYTNkNmJlMTY3ZjJmNGQ3YTExZTNhN2I2MTY2MGQgbGVnYWN5LXRydW5rCiszMjMyNyAwMTgxNzBhNGEyZDdhYzI1MGFlZGYwNzdmYjk2OGU2YWM5NjhjODdlIGxlZ2FjeS10cnVuaworMzIzMjggYWVmMDFhMDc2ZWY5NjdhZTc5M2M0ZDYzYzcyNDQwYjUxMzJkYzEzZCBsZWdhY3ktdHJ1bmsKKzMyMzI5IDk3ODkwMTM0YzljNDQzOTNiYjM2YTM4MjdjMDdiNTU2YWIyMDUzOTYgbGVnYWN5LXRydW5rCiszMjMzMCA0MWY0NThiOGRhMjBhMzM0ZWVjNjc4MThlZGQ5ODY4Mjc5YTVlNDQ2IGxlZ2FjeS10cnVuaworMzIzMzEgNDJkZTUwZTE5MmRmNWI5ZTQ4MDYzM2EyM2M4Njk4ZmZmY2MwMDlmNSBsZWdhY3ktdHJ1bmsKKzMyMzMyIGQ2ZTEzZDEyMTBjNmI1ODUwZmExNTE4MWQ0MGRiOWI4MDg5NWYwNjkgbGVnYWN5LXRydW5rCiszMjMzMyAyY2UzOWE3YmU3OWQ5YTViMTdlOGRjZDdkMDg3MTJiZjc0YWE4MmI1IGxlZ2FjeS10cnVuaworMzIzMzQgZmE3ODc0ZWM2YTcxZWU4Yzk5YzMyMmMyYjg0ZGExMTBjMmE1MDZjMCBsZWdhY3ktdHJ1bmsKKzMyMzM1IGJlMTQ5NzBhOTk1NTIyZmVkYWE4OWZiYzQ3NWZiMTQ3ODI1ZDBiNWQgbGVnYWN5LXRydW5rCiszMjMzNiA1MjkzMGJlOWRmZWE1YTU1YjRjZDgyMWIwNGFlOGE2M2Y3ODZkZGRkIGxlZ2FjeS10cnVuaworMzIzMzcgZGU3NjkwNTI3NTg0M2U3OWE2NGJhNTE1NzJlOTViYTcwYThjYTM3NyBsZWdhY3ktdHJ1bmsKKzMyMzM4IGVkY2ZkYjJhODUyZTlhZjNlZDlmN2FlOTU1MjI0NzU4YTRlOTAwYjQgbGVnYWN5LXRydW5rCiszMjMzOSAyOWYzYjIzNzUwNDllZjA2ODI3ZTUzYjFjMzBkNTc3ZmU2MTMxNTM5IGxlZ2FjeS10cnVuaworMzIzNDAgMTQ5YmQwZWY5NGZiODRkZTliY2EyYTAwMDVkYjZjNzRhN2UyZDZhYiBsZWdhY3ktdHJ1bmsKKzMyMzQxIDgyMGQ5NTcwZWRlYmMzYzJiZDhmZmQwNWQ5NDE0ZDgwZTRhOTFmZTEgbGVnYWN5LXRydW5rCiszMjM0MiBkMzEyN2I2NzFkMzZjMzhkOGQ3YmNkNGJkNThjZWQ1NGY0ZWVjNzcxIGxlZ2FjeS10cnVuaworMzIzNDMgZDA4ZDE1YTcwMjk1MGI1N2FkMmI1ZGNjN2ZkMmFjOTIyNWY2MzBhMSBsZWdhY3ktdHJ1bmsKKzMyMzQ0IGVjMmEwZjE1YzE0Y2QxOWQ0NDk0M2NjZmZhOWI4MmE3OWZkYzY3MWEgbGVnYWN5LXRydW5rCiszMjM0NSAxZDhlODRkOTZkZGVjNmRmMTcwNmQ4OGEzYjU4N2M4YmQ4NzBlYThkIGxlZ2FjeS10cnVuaworMzIzNDYgYWI0ZmJmOGViYWIzYjBiNTgwNmE2YjQxZGRjYzI4OTJhOTRiZmNkZiBsZWdhY3ktdHJ1bmsKKzMyMzQ3IDEzZDBhM2M0ZTQ2NTc1YmM3MmRlZjM4YzQ0OTc0NWM4NTQxNjdmN2QgbGVnYWN5LXRydW5rCiszMjM0OCAxNmVmNWI5YmM3ODljYjlhMzg1NDBkNTEyMWVjMjgyNGQ0MGQ0NzM2IGxlZ2FjeS10cnVuaworMzIzNDkgNWU2ZmZhNjU1NDYyMzRjYjI4YTE1YTY0ZGNkODMxMGIzMzM2ZTQ0MyBsZWdhY3ktdHJ1bmsKKzMyMzUwIDAzYWY0NmQxYWMyODQwNTY3NTUxZGNkOGExMjJkYzMwYjMzNDU5MDEgbGVnYWN5LXRydW5rCiszMjM1MSA0NjQ5ZjMxOGZjYjAyZGFmYmVlMmY2MTk5NDczZjA4MWE2OTU0ZmNhIGxlZ2FjeS10cnVuaworMzIzNTIgODE2MGJjNzhjOTNhYjFhNjIyZWI4NzVmOWEyMDQ3MzRkMjEwYTVkZiBsZWdhY3ktdHJ1bmsKKzMyMzUzIDg5MjA1ZjViYjQ0MGJmY2FiNWRmMGY5YmMyYTQxODA1YzkwMDZjMDAgbGVnYWN5LXRydW5rCiszMjM1NCA5ZWEwY2NkZGJlYWQzNjk0ZmYzMjA4ZDhiNzIxNTI1ZmRkYTFjMmVkIGxlZ2FjeS10cnVuaworMzIzNTUgZGU2ZDFlN2U5ODI1NzI0MmRjZTQ0MjEyZGE1N2VjYWQ2NDFiNDRmZSBsZWdhY3ktdHJ1bmsKKzMyMzU2IGFjOGRiYmU2MjQzMmI5NGYzZDYwMDZlOThiOThjMWEyZWNhMDk1MGIgbGVnYWN5LXRydW5rCiszMjM1NyAwNTFhNGYxMmNjNDYyNTcxNzg1M2Q4MzVjMzEwZmM1MTQ5YjM2YmEzIGxlZ2FjeS10cnVuaworMzIzNTggZjk2OGU5M2UzY2UwMTg3MTc2OThhZDE0YzQyNmNkMTM1ZDA2ODNhYyBsZWdhY3ktdHJ1bmsKKzMyMzU5IDMxY2JkNDZmMGM3ZDY4ZGIwZWMzOTcwNGM4MzNkZmI4Y2RiZDFmNTQgbGVnYWN5LXRydW5rCiszMjM2MCBhYzU4NjA4Y2QyM2NlODZlNWJiYzUzMjVkNjM1MTk5NjMyZTNhYzE5IGxlZ2FjeS10cnVuaworMzIzNjEgODZmNDkzM2ZhNDI5NWUxZWRkM2IwMGY2MDViMzFjYmFjMzM0NTE5NiBsZWdhY3ktdHJ1bmsKKzMyMzYyIGJhOTA5MjM2ZWIxM2IxMDhlMDUyMmY2NmU4MDhhYzJlNDRiZjg4ZmIgbGVnYWN5LXRydW5rCiszMjM2MyA0M2QzMmY0Zjg5MTM4NDc0ODlmMzYwMGVmY2ZjZGUyNWUxYWFiZDRiIGxlZ2FjeS10cnVuaworMzIzNjQgNWM4ODZlMDNiNDNlNDFjYjcxZjY0ZjJkNmNiMDYwYmNlZjQxZmZjYSBsZWdhY3ktdHJ1bmsKKzMyMzY1IDdiYmEzZTJiZTU0ZTdlYWE1MDAyZjY5MDNiZjA3MDQ2MDI2YmJjN2EgbGVnYWN5LXRydW5rCiszMjM2NiBhYTYzNGFkYjQxYTkwMGFkOGM5NzYwMWU0MjBjZjQ5NWFkYjQ5MGVmIGxlZ2FjeS10cnVuaworMzIzNjcgZDc5MjU0NGFiMTExZjQ0MmM5NmVkNGIwYTE3N2JjYzQ5NTUyYjM3MCBsZWdhY3ktdHJ1bmsKKzMyMzY4IDUyZjNkOTBjMTdlODNkZTUzNDU0ZDg4MTUyNjY5YmFhNzdiYzZiNjQgbGVnYWN5LXRydW5rCiszMjM2OSBjZWM5ZDEzYzQzZmY3ZGI4MmFiODBkNjMwYWNiMzZjNTg0ZDI5ZmRkIGxlZ2FjeS10cnVuaworMzIzNzAgZDMyOTdlMjk4MjExYjhjN2JhNTE2ZjY5MzMzYzAwZDI5YzU5ZDNiNiBsZWdhY3ktdHJ1bmsKKzMyMzcxIDY2Y2NlYjc1NjJiNTZhOTM0ZmY2MGVhMWVmMzEyZjNkNGM0MWI1NzcgbGVnYWN5LXRydW5rCiszMjM3MiBiZDY3OGU2NWY3ODQzMjBmNDNiYzNkYzJiZTg4OThjNmY0YWQyOTdlIGxlZ2FjeS10cnVuaworMzIzNzMgNmUyZTU5ODUzNzVjNjI0N2VjNmJlMDVkYTQwMDQ0ZjkzN2QzY2NjOSBsZWdhY3ktdHJ1bmsKKzMyMzc0IDAxNGNmYWE3YTc4NGZiYTBhMjYyZmQzNDNiNDIxM2E5YWUwZTBjOGMgbGVnYWN5LXRydW5rCiszMjM3NSAxZjk2MDQ5YTc5ZDRjZjlmMjkyOTkwMzAzN2Q4YjE3MWU4NDQ5ZTE2IGxlZ2FjeS10cnVuaworMzIzNzYgYzBhMjZjNWE3OTM2NDcwZTE5YzJiNzU0MzczMjM1ODQ5MzhlZDUwMCBsZWdhY3ktdHJ1bmsKKzMyMzc3IDU2M2JhYTNlNDI4ZjY5NDY1YmM0ZDE4OTkxNDMzMDhhM2QyM2I3ZTkgcmVsZWFzZTIyLW1haW50CiszMjM3OCBiNDlmZjA0YzE4ZGU3ZWQwZTRkN2VmNTlkZDNiMjk3ZGI0NDFlN2YzIGxlZ2FjeS10cnVuaworMzIzNzkgODlkYzMyNjc0NTU0ZWVkMDA1NjM2MTMzNDRhMjdlZGVjMmQ2NGFiYiBsZWdhY3ktdHJ1bmsKKzMyMzgwIDc1NjUxMmZiYjUyNzhkMjUxZDQ1YjI5OTcyNDJmOGRkMmMwYjdiMzMgbGVnYWN5LXRydW5rCiszMjM4MSBhMWQ3Y2NkOTVhNWU4M2Q2MTQ4OTgwY2FhOGNiOGEzNGQwM2Q4NmI4IHJlbGVhc2UyMi1tYWludAorMzIzODIgMGFkNzQ1M2E5ZjgyNzc1MDMwNmVmZTczYmQyMGE2ODE4ZWFmNDIzOSBsZWdhY3ktdHJ1bmsKKzMyMzgzIDA4NWY2ODAwOWNhZDgxOGNlYjRkMzMxMzcwZTI1OTc4ZDEyZWQxYWIgbGVnYWN5LXRydW5rCiszMjM4NCA5YzdhZDFlNDU1OTYwY2NlNzQ2MjM3YWJjM2FmZmFiZmU3NzAwOTgxIHJlbGVhc2UyMi1tYWludAorMzIzODUgZGQwMjJkNDIzYjhhMDg4NmRlZjYxMzQ2NzE4YTcwMzllZmRkMjZjZCBsZWdhY3ktdHJ1bmsKKzMyMzg2IDA3MTcyNDIyOTViMTFjYjM3ZmFhMDhhYjFkMmJjYTc2N2NmNjA2YjkgbGVnYWN5LXRydW5rCiszMjM4NyA5OWU4MmRiYWYwY2NkODI5ODc3NjRhZDdhZGNiYzkwNTQxMzExNmM4IGxlZ2FjeS10cnVuaworMzIzODggN2YyMzY2N2QzY2ZjNGFkZGI0MjE3MzcyMjBjODVkNzE4MGJkZWM4MiByZWxlYXNlMjItbWFpbnQKKzMyMzg5IDNkZjBjZjE2ZGVmYzIyOGY3YzM4MmRlY2JiMjcyM2JjODBkMmEwZjEgbGVnYWN5LXRydW5rCiszMjM5MCAyMmQxNzc2ODJhZTE0ZmYxN2ZhMTZmNmY2ZjEyNjU3ZmJmMmUyMzQwIGxlZ2FjeS10cnVuaworMzIzOTEgMTcxZGJkZGYwYTAyMTY3MGI1MzhjZjUzNDU1OTI0NjUyZDI2NTNiYSBsZWdhY3ktdHJ1bmsKKzMyMzkyIDY1MDNhZDhkY2E4ODE3ZGMxMDRhY2U4YmM1ODkxNzA3YjE4NmE5MGMgbGVnYWN5LXRydW5rCiszMjM5MyA2MzQ4Yjg1YmNiOWRlODBiNTg4NmUxYjQ3ZTA2M2VhNDVmNjRkMjEyIGxlZ2FjeS10cnVuaworMzIzOTQgOWMwYWQ2OTRlM2UyMGEzZjI2ZmVmMGEzYzhiNDIyMTM4MDcwODk1ZCBsZWdhY3ktdHJ1bmsKKzMyMzk1IDJjNzQ0N2VmYzJhOGQwZTE2ZTBmZDQ2ZTM4YmRkNTRlZGQ0ZmY5ZDkgbGVnYWN5LXRydW5rCiszMjM5NiA3NTM4MmQxMDI3NDljY2U5NDBkZDMwYjM0MTcwMzM1ZTQzNTg5YzFhIGxlZ2FjeS10cnVuaworMzIzOTcgNjBlYWNiZWE3MTk5MmMxNjcxZTYxMzkxYTg2Y2U4ZDA0ODQ4ZWFmMiBsZWdhY3ktdHJ1bmsKKzMyMzk4IDliNzk2MDUxNzFlYmQ0ZjU1Njg4MjkxNzRhOTNhOGFmNjliZjJmM2YgcmVsZWFzZTIyLW1haW50CiszMjM5OSA5NDY2YjZlMjQ4MzMyZTVhMjZiYTk5OGFkMGRhMDVhYzhmODZiNTRjIGxlZ2FjeS10cnVuaworMzI0MDAgMDBiODk0NzI2MjBkN2U0YmE4ODRlYTk1YzIzZDQxMmM2YjMwN2U0ZCBsZWdhY3ktdHJ1bmsKKzMyNDAxIDI5YjZhNDhmNGM0NTBjZmZhNzc0ODA3YmJhMGVmZjBmZDA1MTI1OGUgbGVnYWN5LXRydW5rCiszMjQwMiAwZWE1OTkxZjZlZGJjNGMyNzNjZTU4ZDY1MTM3YWY0MTc3ZGU2MjgwIGxlZ2FjeS10cnVuaworMzI0MDMgZTA2ZjJiZjU2YjQwNjgzNzRjOTJmYjMyNzg2ZDI2NWMzZjU2OGY4ZiBsZWdhY3ktdHJ1bmsKKzMyNDA0IGM5YmVlMTFlYWE4YjllNWM5YzJiY2IzZDBkMjE1YWQzOWRhZmE4ODAgbGVnYWN5LXRydW5rCiszMjQwNSBiYzQyMzFlYjI3NTg0MTZmNjUzMTQwZWQ5ZGQ2ZjBhZjA2NTk2OGQ2IGxlZ2FjeS10cnVuaworMzI0MDYgMjExYzAyZmI2NTcwYWZlMWMyZWQwNDA5YTk5YWIxMTgyOGQxNzk5NSBsZWdhY3ktdHJ1bmsKKzMyNDA3IDNlYmI0YmNlYmRkN2VkNjQ3MDYxOTYyZDI5MDZmNThjMDkzMDg3ODMgbGVnYWN5LXRydW5rCiszMjQwOCAwZDUzMDI5Yjc5NDk3YTYxZDg3MWRiYWEwNjIxMTMyMjMwMWY4OGI2IHJlbGVhc2UyMi1tYWludAorMzI0MDkgNzA4YWVhODJhZGU4NzBhYjJiM2YyMmZlYTdmMDM0ZjBhYWM0YjU2MCBsZWdhY3ktdHJ1bmsKKzMyNDEwIDUxZWQ5ZjVlMzZhMThjNzcyNDYzZDUwZWEzNmJjMzdkMGNiNWJmMzMgbGVnYWN5LXRydW5rCiszMjQxMSA3ODdkNjY1ZTFjZGM3MzAzY2JhOWUzZTI5MmQ3ODY1ZTY0OWQxMTgyIGxlZ2FjeS10cnVuaworMzI0MTIgMzk1ZjJiOTljNzUyZjkwNmE3YzM1MmYyODRiMTYzZTA5ZTdlYTUxZiBsZWdhY3ktdHJ1bmsKKzMyNDEzIDJjNWJmMDk3ZGFmODU1YTBkYWVlOWUxY2E3ZGEwOGM2MTIxMjgzYWUgbGVnYWN5LXRydW5rCiszMjQxNCA3NDk4MTlmOGIyYWRjYTczZjVkZWNlYmVkZjJhMWM1MmRlZGIxMzBmIGxlZ2FjeS10cnVuaworMzI0MTUgNjNlYjBjOTg3ZGU3ZGI0MDI5MTIxYmM5N2IwYjFhZTM1ZmJkNTFmOSBsZWdhY3ktdHJ1bmsKKzMyNDE2IDhhNmU0YzkyYmQ3ZjJiZDEyN2UyMzE0MTkyODg0NWZlNzYxZWRiMmIgbGVnYWN5LXRydW5rCiszMjQxNyA2ODE2NzE5ZjQzOWM1OWZkNzI2ZTU5MjExZTk0MDVlMTEyZGY5NzMwIGxlZ2FjeS10cnVuaworMzI0MTggNTU4Njg5YjZkN2YwZWI1MmVmMWY2MWFiYjUzNmFkMDg4NjAwZjU4NSBsZWdhY3ktdHJ1bmsKKzMyNDE5IDAxNWQ4OTFmMzg3M2RjMDM0ODQ3MmQ5YjAxMDBjZWJhMDkzNWRjOTggbGVnYWN5LXRydW5rCiszMjQyMCAyNGQyYTA1ZjQxY2NhMTgwMmE3YWY4YWNhYmY4MDI5MTVjYjZlNjU2IGxlZ2FjeS10cnVuaworMzI0MjEgNjRkN2I4NzY3MjJmZDg3OTQ2MTZmMTA3YWZjOWRhNTc1MDQwZDIyYSBsZWdhY3ktdHJ1bmsKKzMyNDIyIDgwOTRjMGRiOTVmOGI2YTk0ODY4MzYwYTJjZjI1OTlmZWRmNGIyMTEgbGVnYWN5LXRydW5rCiszMjQyMyA4MDNiY2EyMjRjOGZhN2QyMTcyMDgwMjI3Mzg0MGMxNTFkY2JkN2Y2IGxlZ2FjeS10cnVuaworMzI0MjUgYTc2YTM2ODMwMTJiYzM3YzQwMDAyZDE1MGIyODBjMTJhZTIwODAzNyBhc3QtYnJhbmNoCiszMjQyNiAwNWU1NzM4OGNiOGZkY2VlOGM4YTk5NzQzMzg0ZGViMzMyMWM2NTZkIGxlZ2FjeS10cnVuaworMzI0MjcgNzI1YjI4MWNjZWFkMzhiZjcxMjE2M2I2MmQxZDRmMjU3OTllNjJiMiBsZWdhY3ktdHJ1bmsKKzMyNDI4IGY4NzRhNGQyOWNhNDE3OGViNTEyOTMwYWU4ZmU4YWMxMDQ5ZDUyYWYgbGVnYWN5LXRydW5rCiszMjQyOSAyMTYzM2U5ZGY4Y2M0NmM4NjQ1MTIxODQyMmQ4NDg4MWYzNGI5MmI4IGxlZ2FjeS10cnVuaworMzI0MzAgMTEyNTQwMTYwYjY1MmU2YWMyMmI3ZTlkYzEwYTEyYjczNjg4N2I4YSBsZWdhY3ktdHJ1bmsKKzMyNDMxIDQ2ZDI2YWZhOGI5NTYzZmQxMjVhZGIzNzIyMDc5ZDgyOGRlMmYxNTkgbGVnYWN5LXRydW5rCiszMjQzMiA3MmRiNzU3NWY5NzAwMGM5N2IyNjlhMWFjNmRmNzA5ZmVkZWUwYjljIGxlZ2FjeS10cnVuaworMzI0MzMgYTliNTZjNzhlMGQ2NGVjZGU0MzRjOWFjMzM4Mzg1ODJjY2FjOWI2MSBsZWdhY3ktdHJ1bmsKKzMyNDM0IDI1YzhjZWU0NDU3ZTZhZDBhZmYyMTI4N2UwMDA3MTMyZWEwZTEyZTUgbGVnYWN5LXRydW5rCiszMjQzNSBjMzRjZjljZTk1MmY5ZmEyODJiYTY2MThhNmZmZmI2MjI4NmY2YWVmIGxlZ2FjeS10cnVuaworMzI0MzYgMGM5NTBlMzMyM2VlNGVlNjM3MDYyYjllYWFmYTUwZWMzY2ZhMDZjMSBsZWdhY3ktdHJ1bmsKKzMyNDM3IGNhNGJkYWY1Yzc1NzU4NTllYWUzZWI0OTljNWI5ZWU2ODM0ZDYwODggbGVnYWN5LXRydW5rCiszMjQzOCAxMDJmOWUzNThmNTIxMzhlY2Y0YzQxNDA2NzQ3NThjZGYxNzAzN2U2IGxlZ2FjeS10cnVuaworMzI0MzkgYzBhMWVmZTEwMjg0NzNjY2JmMWZkMjVkOGM4MjMzZjM5NTEwYjNlYiBsZWdhY3ktdHJ1bmsKKzMyNDQwIDJiYTIwZmM5ZjQ5NTNjMDhiYTk1YWI0Nzc2YjhmZmQ4MDk3MGVkNjggbGVnYWN5LXRydW5rCiszMjQ0MSAyOGEwOTc2N2EyNGZmYTc5MWM2NzEzZTQyMzVlZTI1YmZmYWVhOTNhIGxlZ2FjeS10cnVuaworMzI0NDIgYTVlMWIxNjYyZWMwMTE5MWVkMzk3YjBmOWJjOWU1MjRjNmQ3MDczMyBsZWdhY3ktdHJ1bmsKKzMyNDQzIDJhZjkzZmRmZjYwODg4ZTU0NzZkNThlZjQ5NjVhNTY4ZWE3MmIxY2QgbGVnYWN5LXRydW5rCiszMjQ0NCAxMTNjMzE4ODg3NTU2MTQ2NmQxMWVjMzVlMTE0NzM5YWE3YzdmMGMzIGxlZ2FjeS10cnVuaworMzI0NDUgZWQ3NGFjMjFjMTMzMjIwZmMyYzY0ZTQ2NzUwYTNjMzIwYTJlOTVkYyByZWxlYXNlMjItbWFpbnQKKzMyNDQ2IGIzMTYyOTMzNTYzNTVlZmY3NjU0ZmQ0ZGExZmNhM2JmMmYxN2YwZTEgcmVsZWFzZTIyLW1haW50CiszMjQ0NyA3M2RjZTg5M2ViNGIzODAyOGQzYmViNmIzMjg0MDQ5NDAzNjY5OGYyIHJlbGVhc2UyMi1tYWludAorMzI0NDggNmJkMjhhYmQzMWE3ZjBkM2U2YTkyZDBmNzZhNmE5ZThmODNjNTkzNiByZWxlYXNlMjItbWFpbnQKKzMyNDQ5IDkxMTMwYTRjYzFjZTBlZjQ2ZDI5Y2Y4NDJjM2I2ZjQwOWQzMDY3NDYgcmVsZWFzZTIyLW1haW50CiszMjQ1MCA1N2U2MTU4ODU3MWIyMGIxMmIwMDUyYzZlY2U5Njg0MzBmOWM5YjMxIGxlZ2FjeS10cnVuaworMzI0NTEgMDQ1YmQxNGY3NDY4MjViMjA0OGVkNmVmNDVhNDc3ZmZlMzVhYWQyYSBsZWdhY3ktdHJ1bmsKKzMyNDUyIDYwZTcyMjM4NGQ2MmM2ZjgwNjdkMmRmMjFhNmQwM2FlODE1YzA5M2YgbGVnYWN5LXRydW5rCiszMjQ1MyA2NGNiNjU3YjAzMzg0NDRkMmUzOGVmN2RiOTcxNDI1OWFkZWE4Y2NmIGxlZ2FjeS10cnVuaworMzI0NTQgZGVmMDllYzBiYzMxNzJjNTRmNzViMTI5YTIxNTEzODFmOGQ2OWJlYyBsZWdhY3ktdHJ1bmsKKzMyNDU1IDcyOTZjZDNmNDVjN2Y0NzNkZTdiMmE1ZDk2Y2UyOGE0M2FjNDZmZDkgbGVnYWN5LXRydW5rCiszMjQ1NiAwY2Q4ZDU3MGM1OTExMzliYzRhYzYxZTEzYzBjYjc2ZDI2MDFlOGFjIGxlZ2FjeS10cnVuaworMzI0NTcgMmZhZDU0ODM5MWRlZDZlZDRiZDAxYTYwODc4NzdjOWJkOGI5NTY2YyBsZWdhY3ktdHJ1bmsKKzMyNDU4IDljNzg1YWIxZWZmMDNhMjcxMTg4ZGYzYzljMGM1YjQ3OTI4MDI2MGIgbGVnYWN5LXRydW5rCiszMjQ1OSBkYzRlNDdlNmYwMDIzNWRiYmI2NDAyNDJhNzliMjQ1YjAxZjUyZjE1IGxlZ2FjeS10cnVuaworMzI0NjAgYjM3YWYyMWI3N2JlMzE1YzgyMGQ3ZTFkZTljYTZjYWI5YzA2NGUzMiBsZWdhY3ktdHJ1bmsKKzMyNDYxIGUwNmFhZDkwYzBhZTI0ZDk4ZmRiYjE4YjJmOTI5MjE5YTcxODExZTEgbGVnYWN5LXRydW5rCiszMjQ2MiAxYzVhZDkzNjAzOGVmMjZjMjlkNjBmNTY1M2M5NDQxYmU3YzUxZWY1IGxlZ2FjeS10cnVuaworMzI0NjMgNzAxMmNhNjRiYzc0OTVjNzNiZDA3YTM5YzZkNTIxZTdkOTZhZWIyNSBsZWdhY3ktdHJ1bmsKKzMyNDY0IGU0YTVmMzhmZjAwODliZjBjMmI2ZWZiMDhmZjg3ZTdjNDE2NjFlODYgbGVnYWN5LXRydW5rCiszMjQ2NSBmYTE1OWZlZjI3MzAwNGRmNWFmNmQxMTQ4MWY0MjdiOWFiNGU0ZTg0IGxlZ2FjeS10cnVuaworMzI0NjYgNDVjNGEyZjE1N2IzOGViYmNmNjIyNWE0OTNkYWU2NzRhMTU5ZWJlZiBsZWdhY3ktdHJ1bmsKKzMyNDY3IDk4ZTMxY2ZkMjZkYzI2MWJiNGZmMjAwZTQ1ZjkwYmY2NThlZGRkNzIgbGVnYWN5LXRydW5rCiszMjQ2OCBkODIyMzg4MDgyYmFkNDcxNDk2MmM2NTAwOWFiNjRjOWNlZDVjNzliIGxlZ2FjeS10cnVuaworMzI0NjkgYzJhMDVlMDc4NWYxNDhmYWU5Nzc3OTgyZmM1YTk1Njg5NDdlMGVmNyBsZWdhY3ktdHJ1bmsKKzMyNDcwIDI3YWYzN2RkNWEwYmY1MjE4NDVhODMyYjRjN2IwNTYyMjM1ZTZhOGQgbGVnYWN5LXRydW5rCiszMjQ3MSAzOWQ4MmQwMzg4Nzg5NDFhYzEyODBmMjBmNmY4NWUyNzU3ODU2NzE1IHJlbGVhc2UyMi1tYWludAorMzI0NzIgNDkwYWYwMGZiMTgzMGMzNTRiMzY4ODk3M2Y2OGEzMDRjNGJmYmU0YyBsZWdhY3ktdHJ1bmsKKzMyNDczIGVmMDc5ZGVmZDJjYzExZjVhMjg4OWJmODM3OTQyOGY0ODEzMGM5MGUgbGVnYWN5LXRydW5rCiszMjQ3NCBlZTgxNWE2YjExZTIwMmJlYjI2NTUyODhkZjU4NjNhY2U2OTA2YjdhIGxlZ2FjeS10cnVuaworMzI0NzUgODY1MTFiOTZkOTgwYzdjY2NlNjgwNjFjZTk1ZjVhMTIxMmVhZWQyZiBsZWdhY3ktdHJ1bmsKKzMyNDc2IGNkODIyNTNmMjBiNzBjMzY3OWE3ZmMyYjYyYzBhZWRhNjk1ZThmMTUgbGVnYWN5LXRydW5rCiszMjQ3NyBmZWIzNTk1NGIwMzg2OGQxMmRjMWUxYjVkNTZhZDljODk5M2IzYmJlIGxlZ2FjeS10cnVuaworMzI0NzggNGM1M2I2OTRhZmE2OTgyNDgyZmY2MjY1YzI3YmY4ZDA1NzAzN2VlOCBsZWdhY3ktdHJ1bmsKKzMyNDc5IGYzNTFmYWI3Mzg5N2RkZGI4YjNiODJjNTk1Njg2OGFkNjNjYmRmOWEgbGVnYWN5LXRydW5rCiszMjQ4MCAxYmVmM2VjYTIwY2UwOTkxZjMwMzRmMTdmMmRlNjA1MjZiMmQ1MWMwIGxlZ2FjeS10cnVuaworMzI0ODEgYWUxN2ZjODE5MzA4YjNhYjY2ZjcxYjRmNmU5MzIyMDE2MzY2N2RjOCBsZWdhY3ktdHJ1bmsKKzMyNDgzIDczNmJiZGVjYWExZGY5ZDRiZjhiNjFkZTQ1ZDAzYzkwYTkyNTk4ODcgbGVnYWN5LXRydW5rCiszMjQ4NCA1NDVmYWVjNzkwYzQ3MzI2MGM2NTJiYWEzYmNiYTExMWI5Y2VmMTM0IHIyM2IxLWJyYW5jaAorMzI0ODYgNWNjYjU1MzZmZWZlYmJiNjRhMzI5MTc1NmE1NjM4YmMyNzliMmI2ZSByMjNiMS1icmFuY2gKKzMyNDg3IDVjZGI3MjgwYzMyNjZkOTU0OGNjZDhhNmIzZDQwNmEyMWYzOGM5Y2EgcjIzYjEtYnJhbmNoCiszMjQ4NyA1ZmM2MGUwYjg4MzY4MDIwN2NmYjEwMDg2NWM0MmNhM2EyYjE2NjM3IHIyM2IxLWJyYW5jaAorMzI0ODkgNTc2ZmExN2ZmMDdjYzE3M2QyYjI3N2U0NWU0YTRkZWFiNDZhYmQyYiByZWxlYXNlMjItbWFpbnQKKzMyNDkwIDE3MWVjZmZmMjY1NzliNzU5Zjg4YjllYWM1YTE1ZTM1MzdkYWQ2OWIgbGVnYWN5LXRydW5rCiszMjQ5MSBiZGNmMzdiZTkwNGRiZDJlMzUzZjFjN2ZhZWYzMTYyYmE2MWEwMjgxIGxlZ2FjeS10cnVuaworMzI0OTIgMzAzMGQ5NGE5YzA1OTBiZTQxNzIwYjljN2NhZWQxNTIxNGU3YzgzZSBsZWdhY3ktdHJ1bmsKKzMyNDkzIGI2MmQ4NzgxNjk3Njk1NDEyZDY4NmVkMDA0M2ZmZDcxZWQxYTQxNGYgbGVnYWN5LXRydW5rCiszMjQ5NCA5OGY1YmZiMTljODY4YjM2M2ZkNDAwNGYzMzJmZWI4NDZjNWM5NGVlIHJlbGVhc2UyMi1tYWludAorMzI0OTUgNjhjNjE4NmRjMWExMWJiNDEyZWUwM2FlYjlkMWViYWRkN2MzYmYxNyBsZWdhY3ktdHJ1bmsKKzMyNDk2IGI2N2Y1YzM5NWE2ODhlNTkwNTgzNjgwNDg5MmZkYjM2ZTZjZTYyNDggbGVnYWN5LXRydW5rCiszMjQ5NyAxMDNmYWEwYzJlMWU2ZjZmYjRiNDdiN2VkMjQ1NDI1MGEwMGE3MTIyIGxlZ2FjeS10cnVuaworMzI0OTggZGI5ODQ1OTA3ZThiZWQwMzk2NDY1YTNiZDczYmNlNmUyZWY3ODYxNSByZWxlYXNlMjItbWFpbnQKKzMyNDk5IDY0MjMwZWU4ZWVhNTk1YmUyZTQwNGUzZTMxZGI5YzNjZGI0ZTBmMmEgbGVnYWN5LXRydW5rCiszMjUwMCBmNTBkMGQwZjI5YTJkMGI1MjdhNWEyOGYxMzdhYjRkM2JiN2UxZjQxIGxlZ2FjeS10cnVuaworMzI1MDEgNmQ4NTJlYmZmMzZmZjYzYjc5ODZlNjhlMjNhNmIwNjk5YzVhOTYxMCBsZWdhY3ktdHJ1bmsKKzMyNTAyIDE2Mzc0MDUyY2I1ZGIzYzhjNmMyNDI0YjY1M2I3NWIzMzJhYjJlYTQgbGVnYWN5LXRydW5rCiszMjUwMyA1M2ZmMjNiYjMyNDhmYjg0NzI4MDcwMGJkYTY3Y2NlNTQ4MDc3MjE5IGxlZ2FjeS10cnVuaworMzI1MDQgNzQzYWU5Y2IzYTgzZGJmZjIzMTAxYzQ2OGE1ZTExZDkxYjhiYjUyYiBsZWdhY3ktdHJ1bmsKKzMyNTA1IDFhMGI3ZmM0NjI1Yjg4MDNlMzM4M2JkMzA5YTZmMzY3MDlmNDI0ZjEgbGVnYWN5LXRydW5rCiszMjUwNiAzYThiOGFlZGUxMDBkOGM4ZWRhOWQ2NThhOGVjMTI4OWNmNmJjNDY3IGxlZ2FjeS10cnVuaworMzI1MDcgYTUzNTI5MDk1ZTk1NDA5NDM4NGY3M2E3Y2U2ZjU5NzQzODk2YTE4YiBsZWdhY3ktdHJ1bmsKKzMyNTA4IDVmM2U4YmNjOGM3ZWJjYTY0YmNmMDE2ZTZkM2I3YjczOWMwZWUyMDkgYXN0LWJyYW5jaAorMzI1MDkgYjFiYzllMTcxYzYyZTgyOWFlY2NhZjgwMDk4YWM4OTcxOTkzN2Y4MCByMjNiMS1icmFuY2gKKzMyNTEwIDFkOTdmNTJiYzg0ZmIwZGJiOTUzM2QzYTE0NDdlZTAwNTRjMzY1ZGUgYXN0LWJyYW5jaAorMzI1MTEgNzFlMTkxYjgzZDA0NjViY2QxNzE0Njc3Yzc4Y2RlOTAxN2U5ODRkNyBhc3QtYnJhbmNoCiszMjUxMiBiODQ2MTIxODI5YmRiMDA3Y2Y1NDc3OTI5ZjdmZTM5ZGZkYzdjZTQ3IGFzdC1icmFuY2gKKzMyNTEzIGE2MTMzMGEzZDU5YzIxY2Q2MjQ5NTc3ZjE2NGYxZDBlNDA5ODEzMWEgbGVnYWN5LXRydW5rCiszMjUxNCBmNTViNTUzYTBiMzQ5OTlmNjA1MDZhODg4MDE0YjUxYmMxNmU4YjA4IGxlZ2FjeS10cnVuaworMzI1MTUgNjM5MmU4NDM3NTg4ODEzMTIwNzM1NThiNmEzZTJlOTY2YjlkMGRiMiBsZWdhY3ktdHJ1bmsKKzMyNTE2IGM2ZDZhZDg2MmE4YzMzMTEzZWU3NGIyYzNhNDBiMDU4OTkyMTEyNzIgYXN0LWJyYW5jaAorMzI1MTcgNjVmNzIwZmE2MjAwZmRhZmY0MGFkMjk4MDMxODQzMDNkMjY2MDdiZiBsZWdhY3ktdHJ1bmsKKzMyNTE4IDI0MDA3MWEyYjQ2NmU0ZjJhMzNkODJlOTM0NDliN2MzODA3ODU4NzkgbGVnYWN5LXRydW5rCiszMjUxOSA4NWYwZTYwOTU0Y2E3YjAwMDc2NjY4YzFmYzM0NjY4NWRjNjdkNWUzIHJlbGVhc2UyMi1tYWludAorMzI1MjAgOWViNWJlOTM3OTkwYTg5MmU1YTczYWFiNjE4YTYyMWY1MDc5OGQzOCBsZWdhY3ktdHJ1bmsKKzMyNTIxIDBmMGY2MjM0ZjJmZjRlZmRjYzczZjNjYTYzMTc4MGE5YjM3YzhmN2MgbGVnYWN5LXRydW5rCiszMjUyMSA2N2NlNGVlNGEyOWQxZTdjZTM1N2VmOGQxYzAwYzY5ZDU1N2MxMGIyIGlkbGVmb3JrLW1lcmdlLWJyYW5jaAorMzI1MjIgZTJkMjk1Njk5OTZkODBkNjA1ZGE2NmUxN2JkNDI5NDFlMDNlMWM5NyBsZWdhY3ktdHJ1bmsKKzMyNTIzIDIzMThhOWUxNmFiMGE5ZGM5ODhkZmZmZTcxNTgzYWEzZmNjZDc0NzMgaWRsZWZvcmstbWVyZ2UtYnJhbmNoCiszMjUyNCA3NWMxY2VkOTNiYjUyYzJhYmNhMDZiZmQxMjExZTQ3NDI4MWUzNDM1IGxlZ2FjeS10cnVuaworMzI1MjUgNmM0MTc1NTJmNDczNWMwOGM4ZGI1NjYxMzQyZWVhYjNiYmNiZGEwMSBpZGxlZm9yay1tZXJnZS1icmFuY2gKKzMyNTI2IDZlOTg2MjA2NmUyOTZlYzg0ODY4Y2E3YTAyMDNkMDQ2OTM3ZjVjM2IgcjIzYjEtYnJhbmNoCiszMjUyNyA5OTg4MWI2ZWE5ZjdkOTgwYjE0MTc1OGYyYjBiODY5ZGE2NjM0ODY0IHIyM2IxLWJyYW5jaAorMzI1MjggYTM0MTk3NmZmNDc2ZDhkNGNkMTFkYTNiYjQyMTA3NTM4NWRlZjAwZSByMjNiMS1icmFuY2gKKzMyNTI5IGIxOGQyZjJkYjE4ZDA5MGM2MTkwYjMzMzJlMDE1MGExYTdkNDNkZDMgcmVsZWFzZTIyLW1haW50CiszMjUzMCA4OWUzNWNkYmVjY2MwY2YxOTJjY2Y5YjJjOGQwYWVkYzY0MDcxMWZlIGxlZ2FjeS10cnVuaworMzI1MzEgNjg3MzM3OWI4ZDhjNWEwNzE1MjVhYzVlMzVjODgzMjI3MjNmMGQyZiByZWxlYXNlMjItbWFpbnQKKzMyNTMyIGVhNzc3MjczMmRhMTljMzE0N2ZiZTBlODkxZGFhY2YxZGVjM2VkODMgbGVnYWN5LXRydW5rCiszMjUzMyA0OTQ4NmM1NDRhY2RkNTYxNzJhZGQ0NmU4Y2QyN2IyMDk0ZTZiMGQyIGxlZ2FjeS10cnVuaworMzI1MzQgNjcxZTRlMmVlYzRiYTczZTg0YTg1ODdjODgyY2QwZTE2OGJhY2EzMCBsZWdhY3ktdHJ1bmsKKzMyNTM1IGFmNTM3MjlkM2NkZDY0MTE5NTIyNTQ3MDYzOTcwMDMyZmM1YWU5MGMgbGVnYWN5LXRydW5rCiszMjUzNiBlNGVhYmU1YjNkYTEzZDRmYWEzZDI3MWMzYTAzOGU1YWI5ZGU3ZjI2IGxlZ2FjeS10cnVuaworMzI1MzcgZDMxNjRhMzA0NTk4YjE0ZjE0ZGE5M2JhMWRhNGFmZTgwZjdlNTY1NSBsZWdhY3ktdHJ1bmsKKzMyNTM4IDk2YjZjYzVkNDA4Yjg0ZDI1ZjFlZjI2MDFhZDRmZmUyMDFhZjc0NDcgbGVnYWN5LXRydW5rCiszMjUzOSAzOWY0Yjk3Y2U4MjgxOWRjMmYxMTAzYTA1YTQ3ZGQyZDQzZGY4ODE2IGxlZ2FjeS10cnVuaworMzI1NDAgZDVlMjkxZjBhZTM5NTVjYWE3ZDcwMDFiNzMwMThlZTY5ODJmNTVjMyBsZWdhY3ktdHJ1bmsKKzMyNTQxIDM1YzkwZDljYzMxMzU3NTA2YThkODY3NjI3NmE3ZGM3ODRiYjQwOWUgbGVnYWN5LXRydW5rCiszMjU0MiBkMzBhNmE1NzQ5NzljOGI2ZjE2NWFjZDJjNThhYWRlOWEyMzVlNGRmIHIyM2IxLWJyYW5jaAorMzI1NDMgYmMxMzVkN2I3ZGYxNmZiN2FjMWRhMDYwNWIwZmU4ZjNiMTc0MjM5NyByMjNiMS1icmFuY2gKKzMyNTQ0IGVkZGNiNzkwZWQ4ZDhiZDUxZjE5MDc2NjY5YzBjNjM0MjM2NjU2ZDggbGVnYWN5LXRydW5rCiszMjU0NSAyZDA2OWMxNmM4YjJkMTkxMjg1Nzc3Njk0MTA0YzQ1YjUzZDk3YTM1IHIyM2IxLWJyYW5jaAorMzI1NDcgZDFjZGUzZGFmOWE5ZTYxNjY3ZWY3NmZjOTg0ZDg4ZjQyMzM5NTc0NiBsZWdhY3ktdHJ1bmsKKzMyNTQ4IGY0MjM4MDM2MDAwYzQ1NTZjNDM5YmRjMTg5NDcyNjI4MTA3NjI1OGQgbGVnYWN5LXRydW5rCiszMjU0OSBiOWEzMDczZjkzOTI4YzFiODAxMTI0YmY0N2I2ZTgzNTU4NDBlM2U1IGxlZ2FjeS10cnVuaworMzI1NTAgODFkMzczZTU4OTgzOGMzMzllMDMyZTZlYzE3MTFkOGVjMTY3NzY4NSBsZWdhY3ktdHJ1bmsKKzMyNTUxIDIzN2Y5N2M3MTY5MWJmM2Y4NDBmNmZjZDI0Y2VlNWU0ZWI4Njg2NWEgbGVnYWN5LXRydW5rCiszMjU1MiAwODFlZjdiNmJlMDQzNzY4MzdmYjI0NWEyNzIyZTdkYjg3NDFhYjk2IGxlZ2FjeS10cnVuaworMzI1NTMgMGUzNWMxNTk3NDFiNTcxZGU1MzEwNmI1ZGY1YWU3MDg3NjM2Y2U4YyBsZWdhY3ktdHJ1bmsKKzMyNTU0IGFhYjBkYmUzYzAwODFmYmQ4NGE5ZGZlZGQ2Y2IyODFiYTY4MDYyN2IgbGVnYWN5LXRydW5rCiszMjU1NSAwMzlhYjMxZTEwMzQ3Nzk2YjRiODA2OGNhYWM0ZjIyMDJjNGFjYTgxIGxlZ2FjeS10cnVuaworMzI1NTYgNDUyOGNjMGVkYjZkYTU0Zjk2MzAzMzFmODdmOWU4NGZlNWUzMTJkOCBsZWdhY3ktdHJ1bmsKKzMyNTU3IDFkMWE4NWYwZTVlOTk5ODU3YzEwM2Y3Mjg5ZjNkYzQ5OWQxMjM3MjMgbGVnYWN5LXRydW5rCiszMjU1OCBmYTU5NTBmYmU3MzY3NGQ2ZTAwYzVmYTE5N2VlM2I3NjA2NjE1M2U4IGxlZ2FjeS10cnVuaworMzI1NTkgMWVhYzFhMzViMzcwNDI5ZTZiZjZhNmExZDM3ZWQyZmViNDI3ZTQwMyBsZWdhY3ktdHJ1bmsKKzMyNTYwIGU0ZTcyZmE0YzkxNDEyZjM2MjY4MjZlMzBlMWRkODc1ZTNhNzQ3NjggbGVnYWN5LXRydW5rCiszMjU2MSBjZTllMmFlOGQ1OWQ2NjQxNmFlZTlhM2U1MjZiZjNkNzRiZTk5ZTlmIHJlbGVhc2UyMi1tYWludAorMzI1NjIgMDZhYmZjOWM2OGU3NzI3ZWZjMGM3OGU2NzdiZjUxZmVhOWE3ZmQyOCBsZWdhY3ktdHJ1bmsKKzMyNTYzIDZhNTFkMTFmYjFlOTE1Zjc2YWQ0OGE0MjRjOWMzZjdlM2EzMTI3MTUgcmVsZWFzZTIyLW1haW50CiszMjU2NCA5NmVlZTdkMDRkODg0MDdkNzM5NjY2ZTg0ZDljYTNjYjFlZDNhZDA2IGxlZ2FjeS10cnVuaworMzI1NjUgNGVmMTA4ZjgxODFmMzBjNTRlNTkyODY5ZjMzYzc4ZTg2NWRhMjE4MiBsZWdhY3ktdHJ1bmsKKzMyNTY2IGIwNGMwNzQ1ODZhYTQyNjYzNGFlNGMzMWRhNGI5MzQyNGY5YTIzZTQgbGVnYWN5LXRydW5rCiszMjU2NyAzMzQ3NTY2MTgyM2QzNzNkNjVjYTkzNTE3YzI3YTU3ZDYyZmRiYWNjIGxlZ2FjeS10cnVuaworMzI1NjggZmEwMDYzOTI4NTE4MTdjMzA4ZmEyNjJmN2Y2MTY0MTE5MjM1OTRmZSBsZWdhY3ktdHJ1bmsKKzMyNTY5IDM5YWQ3NjE0MzI4OGJhMmFhZGMyOWMzNTRjY2VjYjJiZDQxNjU4NjcgbGVnYWN5LXRydW5rCiszMjU3MCAxNzQxYWY0OGZkOWYzZTY5ZmEzNTU5MjgzY2RlNjdlNmNhOTIxYTdhIGxlZ2FjeS10cnVuaworMzI1NzEgOTI4NzI3ODkxNmUzYzVmMWYxZTdkOGQzZWEyZjRlNWM1NTcxOThmOCBsZWdhY3ktdHJ1bmsKKzMyNTcyIGYyYzc0Y2ZlYTA1MTI0NzRhZGIyMzYzOGY4OGU1MmU0NTM3Y2U0NzkgbGVnYWN5LXRydW5rCiszMjU3MyAwMGZjMTM4ZDg1NTY1ODc3NDliYjdhNTI2NTgxZjk0YmI3ZjQ3OTA1IGxlZ2FjeS10cnVuaworMzI1NzQgODg4YTMxMThlMGQ0MjI4OGFlYjE3MzJkNWYzZjE3YjJmZDRmOWU5ZCBsZWdhY3ktdHJ1bmsKKzMyNTc1IDExNDk1MGVlOWFhNzMzZWUyYzAxZmZjM2VjODgwYjQ1OTg2M2Q5MTYgbGVnYWN5LXRydW5rCiszMjU3NiA4MzUzMzAxNmMyODk3MTY1Y2I0ZjdhNjZhY2MwZDY2MjZiMWI0YTQ5IGxlZ2FjeS10cnVuaworMzI1NzcgYjNiMjg0NDM2YzI0YTIwYTM4MjlmOTcwYjY2N2QzNDQwZjU1MzdiYyBsZWdhY3ktdHJ1bmsKKzMyNTc4IGE3NjllMDc5YmIxMmZmODNlYzk3ZWYzODA3MTMxMTczNjc3ZWRkY2IgbGVnYWN5LXRydW5rCiszMjU3OSA3ODNkZGRlMzc5MmI2Njk0ODY0ZTk0NGFlNmRiMTg0ZWU5M2Y1NjQyIGxlZ2FjeS10cnVuaworMzI1ODAgMGExODBlZTI0NzNiZDk5ZWM0Y2Q2ZmJlNGFiZjNhNWQ4ZGI2M2M3OSBsZWdhY3ktdHJ1bmsKKzMyNTgxIGM3OThkMjhkZWU0NmIxOWQxNjEyNjBlN2I0MTQzMGE0NjNlNzBmODggbGVnYWN5LXRydW5rCiszMjU4MiA5MmExZTU4NWFiZjc2M2FjMzUxNjQyYWEyZGJjYmM2ZjUyYzVhNzU3IGxlZ2FjeS10cnVuaworMzI1ODMgMTgwODJiMmQyZWJkZjE1YjNmZDNiOWZiNTQ3ZDgwM2JkODczMzYzNiBsZWdhY3ktdHJ1bmsKKzMyNTg0IGE0MGI1NjcxYTU2MzkyMWQyOWQwNTdkZmI3YTIwZDQ1Y2FmN2ZlMmQgbGVnYWN5LXRydW5rCiszMjU4NSA2YTMxMTdkZjVlMTMxMjU5YWU0MmY5ZTI4MDBhMTExMmI5NjAzM2M2IGxlZ2FjeS10cnVuaworMzI1ODYgZDkxODIxZDlkNDcwOTY3MmMwYmM2OTU1MWNmNDQzNGFlMGIwOTYwZCBsZWdhY3ktdHJ1bmsKKzMyNTg3IDk5Y2YzMzY4ZDY4N2VhODllN2ZhNjczYzg0NTE3NjY0NTAwOWVhNTUgbGVnYWN5LXRydW5rCiszMjU4OCBhMTE0ZWU3NDI2N2M3MzEzMGI1ODcwZDk2MmI1MjY2OWFlY2E2Y2U1IGxlZ2FjeS10cnVuaworMzI1ODkgMmVlZTk2NTVkNzFiMGY4OTZkNmJhYzliZWU3OGIyMDczNjA5NzM4OSBsZWdhY3ktdHJ1bmsKKzMyNTkwIGM1ZjE4ZGIxYzk2NjFkNTgwNzI1MzM2OTk1NzhiMmZiYzRkZmY4NWQgbGVnYWN5LXRydW5rCiszMjU5MSA1ZDRkNGViZmQzMTcxZTc1MzVjOTQxODdjODVjN2E4ODdjN2NhZDBiIGxlZ2FjeS10cnVuaworMzI1OTIgNDc1NmZhNTM4NTYwNmZiMTIyZjVlOWE3ZDE2N2Q5ZGYzZjU1N2YxOSBsZWdhY3ktdHJ1bmsKKzMyNTkzIGZhMDU3ODI0YzliNGI0MjdkMDk0YTM5ZTU0ODE2MGNhNzQ0ZWI0MmEgbGVnYWN5LXRydW5rCiszMjU5NCAwNWRhNzcyNmMwMjdlNDdmMTEwOWIxN2M5YjdlZDU0YzgzOGVlMGI4IGxlZ2FjeS10cnVuaworMzI1OTUgMzkzNDI5YTZmYTE2ZDFkOTA0ODU3ZWI1ZGE2MDk2NGU2MWE0ZWIyMCBsZWdhY3ktdHJ1bmsKKzMyNTk2IGUwNTlhOGIxMWI5ZWNjYjEwMDcyZjc2OTllNGVhNDlkZWEzNWMyNmIgbGVnYWN5LXRydW5rCiszMjU5NyBmYWYyY2I1MDcwYjRjOGQxM2I3YWM1OWE1Zjk4Y2Y3NDE2YmYyZjRjIGxlZ2FjeS10cnVuaworMzI1OTggMDAxYTkwNTU1NzgwOGExNWU4NDM5YjU4M2MxZmVjNjk4OWFlNzJmOSBsZWdhY3ktdHJ1bmsKKzMyNTk5IGRiZGViNzM0ZmY5Nzk5ZGE4MTZjNTkzNmM1YzQzNmM0MzFmZGFjMTEgbGVnYWN5LXRydW5rCiszMjYwMCA4ZGY4OTdmMTRmYjg2MDI2ZjM0NDc5YjJlMDk2OWM4MGY0YmM0ZGJkIGxlZ2FjeS10cnVuaworMzI2MDEgMzM1OThlOGU0OWIyMGJhNGI1YTc5OWQyYTFiYzI4MjAyYjk4Mzg4MiBsZWdhY3ktdHJ1bmsKKzMyNjAyIGFjNDg3YTdmN2YyYzc3MDk3NTc4YmVkMWM4Yjg5ZmNjN2MzYTU0NjAgbGVnYWN5LXRydW5rCiszMjYwMyAzYTlmNWYwYzUxMmViNDk4MGVjMWFjODA5ZmFmNjY3NGFmZWQ1NmIwIGxlZ2FjeS10cnVuaworMzI2MDQgMTk2NDAxMmY2ZmIwZDIzYmY4ZDdiYTM5OWJiNWU4NTc0YTI2MWMyMCBsZWdhY3ktdHJ1bmsKKzMyNjA1IDZjNGEwNGNlOTY1YzI1OGYzYTliYjBmOTRkOTFlYzBjYWQ3Yjk1ZWMgbGVnYWN5LXRydW5rCiszMjYwNiAwOTQyMmMzMDE4MjY1Yjg1YTgwZjAwODkzZTE2YTI3ZDVlMzZjOWE0IGxlZ2FjeS10cnVuaworMzI2MDcgOWQ1YTc1OTE2OTcxMDk1ODBjNThkZWY2MmM5MTdlMDdlNjUxZTE1YyBsZWdhY3ktdHJ1bmsKKzMyNjA4IDE3NjNkOWQzZmQ5ZGZlZWNkNmQ2ZTI3YmRiNTY3ZmExNGM4NmJlOWMgbGVnYWN5LXRydW5rCiszMjYwOSA5YjRmZjRiZjAzM2I4MTY0NzgyNmFlZTlmY2IxN2M3ZTEyNTZjZjVhIHJlbGVhc2UyMi1tYWludAorMzI2MTAgYmFlYTMxOGJlNDk5Y2RmYzQ5YjU1N2FkZDExY2U4Mzk4Yjk0MzJkMSBsZWdhY3ktdHJ1bmsKKzMyNjExIDI1YjIyMThkYTA5YjU5Zjk2Yjg5NmVlNmI0MTBhNjhhMjgwMDExOTcgbGVnYWN5LXRydW5rCiszMjYxMiAzNWE0ZDc0YjViOGVkOTliZDE3MDUxZjA5N2RiMTkyM2M2NjE2YjlkIGxlZ2FjeS10cnVuaworMzI2MTMgNmNhOTRhZWIyOTJhYzQ3NzlhMzBmNzZiYmFkYzM1ZTYwNzkyYTg2OSBsZWdhY3ktdHJ1bmsKKzMyNjE0IGFjMjkwMTVmZjZhODFlZjA0MThkYTE5NmQ4NTlkYjRmOTM4MGM5ZjkgbGVnYWN5LXRydW5rCiszMjYxNSAxODlmZGFlOGY0OTJiZjZjZWQzZDVhZTBiMTRhMzJjMjlmNGE2NTEzIGxlZ2FjeS10cnVuaworMzI2MTYgMjVlNjYwZTcwZGNkMDYxZTk5ODJiMDM3OGFiZjM2ZjAzNjdjMGFhMiBsZWdhY3ktdHJ1bmsKKzMyNjE3IDJlOTk1NmQwMWRlMzMyZjdkMTJmMjE4NGViMGU5MWE2NTQ3MDIzNmMgbGVnYWN5LXRydW5rCiszMjYxOCA0YmE3NjNiYzVhNTYwZGM1N2RkMTgwYjJkNzVkNTZlOTZiNTdiNzgyIGxlZ2FjeS10cnVuaworMzI2MTkgMzUwZWUzMWFhYjBjMDI0MjQ3M2Q1MGFjOTBmZTMzZmFmZTA0YWZlYyBsZWdhY3ktdHJ1bmsKKzMyNjIwIDk5NTlkOGZhNGRkZjBmOGMwNDA5NjBlZjEwYWNjZTZjYzlhYWUwZWQgbGVnYWN5LXRydW5rCiszMjYyMSBiMTc0ZDA5MjdmMGUyNTc5NDljOWMxM2JmZjdmNDM1YzJjMDQ1MzdiIGxlZ2FjeS10cnVuaworMzI2MjIgYzljNmJhNzk1MmE4MjI3YWE4ZDNiMmI5MjU5YmRhYmRlYWVjOTYyZSBsZWdhY3ktdHJ1bmsKKzMyNjIzIDlmOTAyMmMyMTA1NjIzNDlmNDcwMTg3NTE4OTM2NWU2N2I2NDQxZTAgbGVnYWN5LXRydW5rCiszMjYyNCA2NWJmNjlmN2MxNDg5ZDg4NDhhYjI0NmJlM2JjNWFkMjY0ZGFhZWJiIGxlZ2FjeS10cnVuaworMzI2MjUgYzkyNDEyZDYzNGIxMGIzMDAyODg3ZjQyMzUwYzg4NGEzZjJlMDI4NiByZWxlYXNlMjItbWFpbnQKKzMyNjI2IDY4ZjA0MmZhZmI3ZGQwOWJkZmMyNmZiMzQ2ZmU0NjRjYzVlMGUwZDYgbGVnYWN5LXRydW5rCiszMjYyNyBiYjE3NzA5YTM3YTNhYzA3NDllYzEyYTQxMDE3NDAxY2IyMWIxYjJmIHJlbGVhc2UyMi1tYWludAorMzI2MjggM2U4OGNmZjA1ODIyZjJjMWI1OGE1Y2MwNzQ4ZmJjZjk4YjkxZTNmMSBsZWdhY3ktdHJ1bmsKKzMyNjI5IDRiZjg2NTE4ZDlhZTUwMTgyMDcwZjVlY2YwMDg4MDNlNTdjYzU0NDIgbGVnYWN5LXRydW5rCiszMjYzMCA0YzEzOTE2ODY0OGM2YWRlM2MzMDFhYTg4OWMyOTY5NzMzNDMwZTRlIGxlZ2FjeS10cnVuaworMzI2MzEgODNmZTBmNWM5MzU5N2NjNmMxNmE1NmEwMzIxZTgyNmZjNTYxYmQ1MSBsZWdhY3ktdHJ1bmsKKzMyNjMyIGNmY2M0NWYxODUxNWEwZGE3ZWVkYWE5M2JiNjZlN2YwZDUyMmVkNDAgbGVnYWN5LXRydW5rCiszMjYzMyA1ODkyYzFlNTE1YjRkYTllMTA3NDk1Nzk1NDM2NmY0NjQ2NDhhMTA1IGxlZ2FjeS10cnVuaworMzI2MzQgODE1ZmYwYWIyNGU3MjhjMWNiNmRjMDA5M2RiYzEzMzczYzJjOTEwOCBsZWdhY3ktdHJ1bmsKKzMyNjM1IDMxMmYxMTg2YWEzOTQ1ODFiNWIxNDUwMTc0NWEyZDA0MWY4MzUzNTggbGVnYWN5LXRydW5rCiszMjYzNiBhNWRkNTc0N2NkZmUyNjhkNGE1NmM1ZjFiZjYxOTNlOTFlOThlNDk3IGxlZ2FjeS10cnVuaworMzI2MzcgMTdiZmE3ODYwNzVhZGNiMzAxMDg4NmU0YzA0MjgxZTViNDdhODNjYiBsZWdhY3ktdHJ1bmsKKzMyNjM4IGI1NGE4NGQyOWMwMDAxNmRlYThiZmYyMDM1OGM5NTgxYmNkMzA4ZDQgbGVnYWN5LXRydW5rCiszMjYzOSA0MTM4OGU4NDI2MWIyNDJhNjJiZmQwNTA0YTgxMjFkMzMwOWNlYzVjIGxlZ2FjeS10cnVuaworMzI2NDAgMjIyYzNkMmZlNDMxYjEzNzJiYzk3MDA5ZjI3OGQ2M2RhMTA3ODA2NSBsZWdhY3ktdHJ1bmsKKzMyNjQxIDgyZmUzYTlhYzM3MWQ0MzQ2YWNmNmVmZWFmNjQ3ZGJjNzM2NDUyYTIgbGVnYWN5LXRydW5rCiszMjY0MiA2MWQzZjhlNjZkOGZjMDYwMDhkZDc5NTQwZWIyNWEzODRhZWUxMThkIGxlZ2FjeS10cnVuaworMzI2NDMgNDkzZmQ3ZTUyMjA2YTFhZTVhMDQ0MTA3YzE2NDU1MDU0OTg4YWM1ZCBsZWdhY3ktdHJ1bmsKKzMyNjQ0IGNlNmMzY2M0MjJhYjUxNjI4NDZhYmRiNGZmZWIyNjRmMjE3ZTRhOWEgbGVnYWN5LXRydW5rCiszMjY0NSBiMzcwMmI2ODNmMmFkMmJlNmIyMGFjN2NlYTJlMTc2OTdjYzU0ZTE2IGxlZ2FjeS10cnVuaworMzI2NDYgZjFmY2FjNGNhYmFkODZmY2E5MTAwYzA3MzFhMWM5ZTc5MDI3M2Y4NCBsZWdhY3ktdHJ1bmsKKzMyNjQ3IGQ1NDYxMGY0ZjI2MWRjYjllMTY5NDZhZmM5MWI1YTgyODVkMzljMjIgbGVnYWN5LXRydW5rCiszMjY0OCA2YjA3ZjM2OWNmMDNkYWQ4NDI2Y2Y1ZDdiMDIzMzcyMDEwZmYxOTY1IGxlZ2FjeS10cnVuaworMzI2NDkgMzgwYTlhNWFmYWEwYmRiMmY1ZjY4Y2FkOTk3MDJhNGQ2YTE0OGMwMiBsZWdhY3ktdHJ1bmsKKzMyNjUwIGVkNGIwOThjN2JjYTFkOThhZjViZjY2YTRhOTVkYmYwNjRjZGZkNGYgbGVnYWN5LXRydW5rCiszMjY1MSA2ZmNhNmUwN2MyZmE5YTZmNWE2YTMzOTFiODhhOWI1NjM5NGIwN2NjIGxlZ2FjeS10cnVuaworMzI2NTIgZTEwN2M5MjFiOGYzMzExNjIxYWY2NWQ3MzFkYTJhNWM4YWIzMDBmMyBsZWdhY3ktdHJ1bmsKKzMyNjUzIDUwOTUzNzgzOTQyNDZhZmZiMDI3NGE3ZjI3YmRjMGY3OWM2MzRlNDYgbGVnYWN5LXRydW5rCiszMjY1NCA2YzQwYjczYzcwNDU3ZWZiY2UxNjhmOWNkNTczMDgxOGY3NTAxOGM4IGxlZ2FjeS10cnVuaworMzI2NTUgNTA4NDE4OThjYzE5YzBhYzM1N2Q1MDFmMjA2MTQ3NDdlZGRhMWI5YiBsZWdhY3ktdHJ1bmsKKzMyNjU2IDAxM2Q5NWMzNDZkMjM1NTQzMmU4ZDE3YzZmNTYzYzA2MzZhMzU1M2EgbGVnYWN5LXRydW5rCiszMjY1NyBhMDdkZWYwZGM3ODUxZWE0OGM1YjE2ZDRhOTJmY2U4Nzc3ZTQ5Y2I4IGxlZ2FjeS10cnVuaworMzI2NTggMzA1NWM5YmRmZjVmNTExOWE2MDI4ZGRjNmNkYjc2MzA2Y2UyMmRmOCBsZWdhY3ktdHJ1bmsKKzMyNjU5IGY5ZTZmOWZiOGRmMGM1ZjIwNTI0MGRkYWJjMTdkN2E3ZDhkMmYxM2QgbGVnYWN5LXRydW5rCiszMjY2MCBhM2IyNjEwYjUwNDFhOTJhYWU3ZDI1MWNkNWZhZmVjZGE4YjBjYzQ3IGxlZ2FjeS10cnVuaworMzI2NjEgYzI3YTY0YjM4NzYyN2YxYmJkZGE0MzJmZDVlNjE0Y2YxMzFmNDNjNSBsZWdhY3ktdHJ1bmsKKzMyNjYyIGQyYWZhMDBjMjBlM2M0ZmU3MjUyMGZhNGY3YTk4NzE2NzQ3YTBmNGQgbGVnYWN5LXRydW5rCiszMjY2MyA5YjcxNjRjYzBjOTI2NmVkNmUyMWM1ZDM3ZjExMjJlNWUyODljNjIxIGxlZ2FjeS10cnVuaworMzI2NjQgMDQ2MTMxNjFhMzJiNmJhZmZhYzA2ZjE3M2VkMDY2Yzc4YzFhZTlmMSBsZWdhY3ktdHJ1bmsKKzMyNjY1IGU2OTY4ODg2YTk3ZGExOTBmODVkMTI5YjFmY2JhOTBlOTQ2ODk5NjIgcmVsZWFzZTIyLW1haW50CiszMjY2NiAxNTdhMjllMTllYjllYzc4YzI1YTMwOWQzNWU1YzZiMzA2YzAzN2M0IGxlZ2FjeS10cnVuaworMzI2NjcgMDY3YTk4MjMyOWFjYzMzODZhODA3YjM2MDcyZGExMjM2NzcyZjEzMCBsZWdhY3ktdHJ1bmsKKzMyNjY4IGVlZWRhYzQ5ZTg2YjM4OGZiMjNjMTUxMzU3MTcxNmQ3NGE1NzU3ZTIgcmVsZWFzZTIyLW1haW50CiszMjY2OSAxMDk4MTBhMWFkYTg2MDZmMjgwMzBiM2NkNzQzOWQzY2Q3ODdlYWUwIGxlZ2FjeS10cnVuaworMzI2NzAgZDRmNjU0NGY3OWFjZTQ0MWRhN2ViNzQ3ZGM2N2EzMzFjOWIzODY1MiBsZWdhY3ktdHJ1bmsKKzMyNjcxIDEzZDhmMjk3MzdlNWRlMjY4Mjc2NmJkYmVmYTVmZjIxN2M1NDJjODYgbGVnYWN5LXRydW5rCiszMjY3MiBkYzNmM2YzMDM4YThjZmE5NGYxOGFlMmFmYTUyNzcxMzlkYmUxZWU0IGxlZ2FjeS10cnVuaworMzI2NzMgMDg5ZjI0MjFlYjE4YTBiYWE4MjRlODk3MjhiMGZhY2E0ZjAxMzU1ZiBsZWdhY3ktdHJ1bmsKKzMyNjc0IDJmNjUyYTU5ZWJiMDFmODJkZjMxZWU3NzUyMWMxY2E5NTE0NzIyZWIgbGVnYWN5LXRydW5rCiszMjY3NSAyZjc0M2RlOGM1ZTJhMmJmNzNjN2QxNDBhMjY4MWQ4Y2E3ODZjMzNhIGxlZ2FjeS10cnVuaworMzI2NzYgY2I4MzJjMmNkNTRkNGFhNzk3NzM2YTVhYjU4NjIzMWNiNjdmOTkyYiBsZWdhY3ktdHJ1bmsKKzMyNjc3IDNmNzBkNzVjZDI4ZGFjYmM0YzYzNDg0Njg5MTlmZTcyZWEzZTNkZmUgbGVnYWN5LXRydW5rCiszMjY3OCA0ZGUwMmYxOGE0MWI0MmViYWVjYjc2NGZlNDIwMjA1YmExNzY0NzgwIGxlZ2FjeS10cnVuaworMzI2NzkgNTc0Yjk1NTFjZmM5ZTYxOWZiZTE1MzM0NDAyZmVhZTAwMzczYmVlZiBsZWdhY3ktdHJ1bmsKKzMyNjgwIDZiYmE0OGQxY2UzYmIwNjk3YjhlZDdkMGU4YzM2OGYxY2NhZDYzYzYgbGVnYWN5LXRydW5rCiszMjY4MSAxYzJlNjAzZmVlMDIzMGVkNzVmNjhiNzg3NmFjYmUyZDUzYjdkNjI5IGxlZ2FjeS10cnVuaworMzI2ODIgNGFlYWNhZGU2NjAwOWIxODZmYjcxOWIzYjBmYmU0MzBiNWE1NWU1NiBsZWdhY3ktdHJ1bmsKKzMyNjg0IGQ1ZTQ4NzM2MmQzYWRkNDk2NTA1NmRkZjIyYzA2ZmRkNjk1NWNiMjggcmVsZWFzZTIyLW1haW50CiszMjY4NSBmYjExN2Q3ZjU5NTBjNjRiNGVjYzAyNTc4ZWY1NzAwOThkZmYxZTdhIGxlZ2FjeS10cnVuaworMzI2ODYgM2YyMTRjMjY0ZjYzZDViYzQwMDY0NzIzZjU0MTZhNWZmYWUwYjcyMSBsZWdhY3ktdHJ1bmsKKzMyNjg3IDEzZGI1YjdkZTBkZGU3NTIzZWExNWE0MDY3NzNmNTY4Y2UwMWFmNjggbGVnYWN5LXRydW5rCiszMjY4OCA2NTY0OTM1MzRjYzc3NjZhYTYxZjY5NzIzNjQyNmM3M2ZhYmJiYTczIGxlZ2FjeS10cnVuaworMzI2ODkgZTFkNWNhOGFiN2RjODJjNzI2Mzk4MjExOTM4YTI3YjcyYjVlYjZmNCBsZWdhY3ktdHJ1bmsKKzMyNjkwIGNjZjdlMTM4YTEyNmRkMzBmY2YyYzYwZjYyYTM3ZmE2MDA3NTFiYmEgbGVnYWN5LXRydW5rCiszMjY5MSBkYjkwODQzYjAwZmNkYjgzNDI4ZDk0OWUzN2IwYjNhNDBkZDQ5MzExIGxlZ2FjeS10cnVuaworMzI2OTIgZDNjMWEwM2E1MTMwODkwNGYzNTM4OWIyYjdjNGY3MGYxM2JjMzY2OSBsZWdhY3ktdHJ1bmsKKzMyNjkzIDU5YjFiM2UyYTIzYjVlOTRjMDI3YWQ5OGY3MjE0ZWQ1MzI3NzAyMWIgbGVnYWN5LXRydW5rCiszMjY5NCBlZmY4NmNmOGYzYmIzZTdlZGJlMGI0OGNiOTIzMjkwYzgzMjE2NGVhIGxlZ2FjeS10cnVuaworMzI2OTUgODEwODhkZjBiMWRmMzY0MGU4OWI0ZDVjZDk2NDVmM2JkODJmOWZkMSBsZWdhY3ktdHJ1bmsKKzMyNjk2IDA1NTk4NzdhZGE1Y2YzMDlhNjAzZGNkOTQ2NTg1ZjI4YzM5ZjEwMjQgbGVnYWN5LXRydW5rCiszMjY5NyA4ZTc5ZGMzNzMxYmZmYzI2YjljYThkYTM2YTAzMzUzNTNmOWZhOWEyIGxlZ2FjeS10cnVuaworMzI2OTggNDMwMDIyMzNjYzJjZGEwMTQzZDk0YTYzMTg3ZmJjMTk0YTYyNjNhNCBsZWdhY3ktdHJ1bmsKKzMyNjk5IGRlNTY0YTg3MzNkMjI3NTNmZTgzMDkyZDJiZWRkN2Q0NGUyZmQ0NDIgbGVnYWN5LXRydW5rCiszMjcwMCA1OGM4ZTI4NDUxYTk3N2UwZmE0YTY3MTBjM2EzNTJiNGMyOWY0YTgwIGxlZ2FjeS10cnVuaworMzI3MDEgZDA2YWRiNWEzY2M5NmRmZmUzYmI5MGE5OTY3OWJiYTRkN2ZkNzU2YiBsZWdhY3ktdHJ1bmsKKzMyNzAyIDU0ZjFmZmEzNzQyOWVhYzdhNTAxOThjMTU5ZmNhZTlkOTc3ZDdiY2UgbGVnYWN5LXRydW5rCiszMjcwMyAwNjQ0MTk3NzM5NTZiNzA5OGJkNGMzOTczMThjMjdkYWE3YWVhYjYxIGxlZ2FjeS10cnVuaworMzI3MDQgZjI3OGIyN2VmMTA1ZDM0ZWY0NDZhNDBkZmEwYmFjZDYzNTE4MjRlOSBsZWdhY3ktdHJ1bmsKKzMyNzA1IDc3NTBiODQ2MmE4ZmM0MDg2ZjdmOTdlM2Y4ZDU0ZTU3MDc3YTEyZGYgbGVnYWN5LXRydW5rCiszMjcwNiAxNDNmZmY4ZDIxODk5ZDA5M2ZmYzg2MmUyOGJhYTcyMTJiZGRmNzFhIGxlZ2FjeS10cnVuaworMzI3MDcgY2ZmYjUxN2Y0ZTE1ZjlkNmM4NTBjN2NlNGRmNjY4NWZiMjQ4Mzk4YyBsZWdhY3ktdHJ1bmsKKzMyNzA4IDJiMGMwYmRhNWNjYTdiNmVhNzM1MzE1ZWRmMGVkZmUzZWVjYjZjNzAgbGVnYWN5LXRydW5rCiszMjcwOSA2ZGM4MmRjZjU1ODkyNjAyZDI0ZmI4M2Q3N2FiZGQzZTUzYjU3MmJmIGxlZ2FjeS10cnVuaworMzI3MTAgNDViZmE2ZDU5MWY3Y2E0YTUyYWQ0OTcwMGIwMjY5YzE2N2MxOGM5MiBsZWdhY3ktdHJ1bmsKKzMyNzExIGJhZTY3ZTQxNGExM2E0MmYwOWRlZmM2NzUzY2ZhMGUwM2MzMzA0YjAgcmVsZWFzZTIyLW1haW50CiszMjcxMiBlMDkzOTllM2IyYzA5MGRmNDllYzNiZGE2NGM0NTAxNGRhYmM3ZDk2IGxlZ2FjeS10cnVuaworMzI3MTMgOTJlYmQzZGFmNTA3MmVmMzFhYjVkYjVmZDY3OTZkOTg4ZTM4YzMyOCBsZWdhY3ktdHJ1bmsKKzMyNzE0IDk4MzViNDExMzNhYzA2ZTY5NjhhZTI1ZDhhZTRmZGJlOTQxZjZiMmMgbGVnYWN5LXRydW5rCiszMjcxNSAxYmFiYmI0OTE5YTdmMTdkMmZkYmU5YWY3MDNhYTY0NTAyNjk4ZmMzIGxlZ2FjeS10cnVuaworMzI3MTYgYzAxOWFhODI3Zjg2MDU2OTc2ZDI5MTAwZWUwMDI4MWY3ZjJkOTM4MyBsZWdhY3ktdHJ1bmsKKzMyNzE3IGFiN2RjNTM4ZjZmNzJkMjhhMjFiOTJlZWMwNDZjNTU4NzNiMGIxYTQgbGVnYWN5LXRydW5rCiszMjcxOCA4ZTkyZjJlMmJkYTlmNWIwYzBmYjBiOGUwNTBlYTMyOTU2OThlZDhjIGxlZ2FjeS10cnVuaworMzI3MTkgYmYxNjM0YjAyM2Q1YWVjZWI4NDhkOWE3MTdhMjM4ZThiYTlhYjg0NyBsZWdhY3ktdHJ1bmsKKzMyNzIwIDkwMzQyZjM5NTcyMWRmNjRlMTkwYzZlZDgxZjk1NmY1Y2Q0ZjUxOTkgbGVnYWN5LXRydW5rCiszMjcyMSAwNDA2NWM0YTFjNmI1YWZlNTM5OGEwOWE5MTNlMDM2N2JlZTk3MDQ5IGxlZ2FjeS10cnVuaworMzI3MjIgMWM4NDhlOWY2MTY2MjMxYzA3ZWNkYWY4NTE0MGNjMzI4MDNmOTY3YSBsZWdhY3ktdHJ1bmsKKzMyNzIzIDU2NDg5NzBjNjY1ZjE3ZjM4ZDg4ZWUyOGI1MzJlYjNmZDdjOTljZDQgbGVnYWN5LXRydW5rCiszMjcyNCBiMTBhN2ZhY2MxZTg4NmRlODQyMzI5YzFiYzNhNjNmZTE0ZmJjYWQ3IGxlZ2FjeS10cnVuaworMzI3MjUgODVmMWE5NGFmMzc0MjI2ZjQ5NDQwOTQwZTYwZjVjY2JiNGI3ZTZhNyBsZWdhY3ktdHJ1bmsKKzMyNzI2IGNkNDg5MDNlNDFiZWZjZGUxNjE2NjdmNmFiM2YxNzA4M2NkNmRiNTYgbGVnYWN5LXRydW5rCiszMjcyNyBjNGU4YzY3MjFlNDU2NjUzYWQxN2NiOGFkNmJiZWQwMGRiMGVmMTJlIGxlZ2FjeS10cnVuaworMzI3MjggOTg4YjNlODA3MDQzNmRlMjNiNTY3NjY5Y2Y4NDg3MDY1MmNkY2U4NiBsZWdhY3ktdHJ1bmsKKzMyNzI5IDM1YTA5ZGM4MDg0YzlkMGFlZjkyMjkxNGE1MzExMjBiZjAzOTkzMzEgbGVnYWN5LXRydW5rCiszMjczMCBhZDg0ZmU1OGVjMmY4YWQ3N2I2NDRhOTE4YzkzYTRhOTY1MmRkOWMzIGxlZ2FjeS10cnVuaworMzI3MzEgNzU0YzQxYmNjODFhMmM4MTNhY2U1ODBhMmVjYWUyY2VlZDQ4ODU4YiBsZWdhY3ktdHJ1bmsKKzMyNzMyIDc4ZWZiYWQ1M2RkODZiNzdiYTM5Zjc4YTk3OGFkNWI1M2U5MjMwMzIgbGVnYWN5LXRydW5rCiszMjczMyBmNTc3NTFmZmQ2ZTc4YWJlY2NmZGEzZTY1YTA1NThjMjA0NjQyMTViIGxlZ2FjeS10cnVuaworMzI3MzQgNDM3YmNkNTJjYzA0NWNmNjM2NjBjYmRhOGYwOTU3MDY1M2JjZjM4NiBsZWdhY3ktdHJ1bmsKKzMyNzM1IGZmMTM2ZmVmNzIzMWM0N2Y0NGYwMjFlNWQwYjZjNWUyMTM5ZDRiYmQgbGVnYWN5LXRydW5rCiszMjczNiA1NDBhNzcyMDI4ZDI2YTUzOWM0Y2JjM2QwZTM3YWRkYTVmOTIyYzRhIHJlbGVhc2UyMi1tYWludAorMzI3MzcgNzA3ZTVmODljMjExYjBkNWVmMWVmYWI2YWE1ZmJiZmQ2MjUyMmE0NyBsZWdhY3ktdHJ1bmsKKzMyNzM4IGNlMWQ3ZTEwZjQ5ZTlkMGNhNjYzMmFlMmZjYjJhMzBjNDhmOTBiOWYgbGVnYWN5LXRydW5rCiszMjczOSA1YTBiYjZlYWE3NzYxODgwYTlkMTFhNDk4NjUxNDZiMTZhNTA5ODhjIGxlZ2FjeS10cnVuaworMzI3NDAgNDMyYWRkODRlMDYyZGNhOTdiY2JlNzAxYjlhZTllNWZhZWM4MWFiYyBsZWdhY3ktdHJ1bmsKKzMyNzQxIDUyNmYzN2ZiMzgwZDg2NDcwNGY0NWEyOGZiMGU4MTY0YWMyOGVjNTEgbGVnYWN5LXRydW5rCiszMjc0MiA0YjJlMDVjMTc1NGU2ZDMzNGI3MGIyMWIxNjkzNzg1OGExMWQ0ZDY1IHJlbGVhc2UyMi1tYWludAorMzI3NDMgYTU3MWE5ZDYyNTdhMmFkMWFkMDU3ZTEzNTRiZjMxZTM2MmI2ZjJjZiBsZWdhY3ktdHJ1bmsKKzMyNzQ0IDViZjk2MTg2ZGIzMWM1Mzk4MmU0MjgyOTQyYTllOTIxZTFkNTU2NjMgbGVnYWN5LXRydW5rCiszMjc0NSAyMjA2MDAwNGI5NGFlZWZhMDhhNTk1OTZlMTFmMjBhY2RhZDFjYTEzIGxlZ2FjeS10cnVuaworMzI3NDYgNGFlM2MyZDk4ODkwYmQ4OTc0NjFkY2I4N2I1OGZhMDBjODY3Njk0NCBsZWdhY3ktdHJ1bmsKKzMyNzQ3IGExZDU2MzE5ZWYwZWIzODQwNzMxM2UzNDA4YjIyOGExNjdlNmM0ODggbGVnYWN5LXRydW5rCiszMjc0OCAyMmI4OTBkMTU3ZjdkYjFiNjZmYzNiNWI3OWY4Zjc3NzViM2E2MDNiIGxlZ2FjeS10cnVuaworMzI3NDkgYzVlOTY1NWViZWQ3MmI5MGVkNTJmYjdkNGJiNjg4Mjg5YzNkYzk5ZSBsZWdhY3ktdHJ1bmsKKzMyNzUwIDNjZDVhZWM1OWVkMjNkYTVlYzY0ZDQwMTc2MThmZWE3OGFiMmJlNmQgbGVnYWN5LXRydW5rCiszMjc1MSBlOGI1NzA5MDUyZTI1YTJkMDEwZmJlZDUwNWIzOWRhZjJlYzUxMDdkIGxlZ2FjeS10cnVuaworMzI3NTIgMjQ4MDk2YTQ1NzMyYzFhMDUxNTM1NzMwZjQ0ZTEwOTE1NGE4NDNiYSBsZWdhY3ktdHJ1bmsKKzMyNzUzIDVjZTYyOTY0MjE1NTllMWQ2MmIwZWFjOGRiYjJiZGE5YTA2YTg2ZWYgbGVnYWN5LXRydW5rCiszMjc1NCAzNGQ2M2I4YzI3NWJiOWMzMDQwN2Q1NWZkYjljN2I5YTAzZmViYTZjIGxlZ2FjeS10cnVuaworMzI3NTUgMzJlNzBhZDc5ZjY2ZDBjZjg3YjQ4ZmIyMzU1MDViYjIxZjY1ZDdkNSBsZWdhY3ktdHJ1bmsKKzMyNzU2IDdhMWFlNDc1ZTBkYWQ1ZmZhOWI4ZTZkNGY5OTRmYWJkNjRjYjdiNDggbGVnYWN5LXRydW5rCiszMjc1NyA2NGE5ZTFiZTMyNTEzZDU4OWZhNDAxOGQ1NDYzZjExMzQxNjg4NTViIGxlZ2FjeS10cnVuaworMzI3NTggYTVlOTllN2U3ZmYwMzNkYjg1YzVlY2NiNWNjODEyNGEyZDEzNmY0NCBsZWdhY3ktdHJ1bmsKKzMyNzU5IDE5YzQxNDE4NmI5ZTUwNWIxNzI1ZjgwN2ExMWUwZmFhNzE0ZjkxZTggbGVnYWN5LXRydW5rCiszMjc2MCA5MWRlM2EwOTI0YTI5OGFkOTUyOGI0ZjM1NGFkMjg5Njg1ZTAxY2Y1IGxlZ2FjeS10cnVuaworMzI3NjEgOTNjOTJmMjBiNmJmYjZkZDAyNTYzMDVmYzMyY2U4MDg3OTUwZTY1YSBsZWdhY3ktdHJ1bmsKKzMyNzYyIGNiMDAyNTQ1MTQ4MmJjMzY3YmFlM2E5ZTAwZTgwOGU0MTUxZjlmMTggbGVnYWN5LXRydW5rCiszMjc2MyBjMDZiZjZiMmIxOWQ5MDJjZjhhYjllZmFlZTFjMmJhZTkxYWI3ODc3IGxlZ2FjeS10cnVuaworMzI3NjQgZDZiYTgxOWEyZjkwMTNiNThhZWI4NTFmZTdjMWE5OTI0YjQ0ZmUwZiBsZWdhY3ktdHJ1bmsKKzMyNzY1IGY0ZDQwNmFjZjFjYTBiZDU0ZGI4ZDc4ZjNiZWNjYTc0M2E4ZWQ2MTkgbGVnYWN5LXRydW5rCiszMjc2NiA4NTQwNjA0NWYwMTRkZDlkZGUyODVlNTg3MjJjMjM2ODdmYTQwN2Q5IGxlZ2FjeS10cnVuaworMzI3NjcgNTIzNzJkYzE5MGZjZmJmYTA3NWU3NTQ1MmNhYzNjMGU2NTg4OGM2YyBsZWdhY3ktdHJ1bmsKKzMyNzY4IDRiMDIyMDI2MGY2MmUxZjRiNjQ5NDBhOWNlZTVjMjg2NDUxOTQ0ZmYgbGVnYWN5LXRydW5rCiszMjc2OSA0Zjg3YTg0ZTliZWJiMjlmYjBkZDg3NmZkNzljNTRiYzAwM2UwN2NjIGxlZ2FjeS10cnVuaworMzI3NzAgMjQ3ODZjMzEzMGNhODc2ZGM0YTU5Y2VkY2E4OTY5ODNmNTk4NWFiNyBsZWdhY3ktdHJ1bmsKKzMyNzcxIDZhYzBhNjcyYjA4MjEzZmVlNzA4NTg5NzQwYjYxOGZmZmU5NDFkODYgbGVnYWN5LXRydW5rCiszMjc3MiBkN2FjMWE2NDBkOGY5YzAwY2E2MjIyNGRmYmVhODYzNWNjMDE3ZWU4IGxlZ2FjeS10cnVuaworMzI3NzMgNzg3NWZjYWFlN2EzNzEyZjFlNGJmZjhlMzc4ZWJkZjcxZjE4YjljZSBsZWdhY3ktdHJ1bmsKKzMyNzc0IGFkZGQ0MzdiZTc0OTIxNjI3ZGNhOTg5MzY1YTY3MjM2MzE2MDE5OGMgbGVnYWN5LXRydW5rCiszMjc3NSAyOWYxOTQ2MGYwNjc4NTVjNmRhZDc0YTUyZTgwZDkyODQ5ZWYwOGQ2IGxlZ2FjeS10cnVuaworMzI3NzYgYzdkZmRhOTkzYjJmYWVkYTMyYzA3OWViMTY5MmVhYzQ0Yjc0OWU1ZSBsZWdhY3ktdHJ1bmsKKzMyNzc3IGNmZjZiOGY0MjJkMTdhNjYwY2EyMTc1ZDE3MWRiOGE5MmZjOTE5YjkgbGVnYWN5LXRydW5rCiszMjc3OCA3ZjU5ZGNlOGY4YzBkNDI0OTEzMWEwMjhkYjk3ZGJmMjQzNGJjZmU0IGxlZ2FjeS10cnVuaworMzI3NzkgOTJlNTNjOGU3YTcyNDNiMjE0M2ZhODdhY2RlZTMxNzBiYTNhYWM3OSBsZWdhY3ktdHJ1bmsKKzMyNzgwIDZkOTMzMzA3NzYxYzAxNTU5ZjljMGE0MjBiNmI4YTA2ZTFkMjE4N2YgbGVnYWN5LXRydW5rCiszMjc4MSBlNjY5MWNlOTFiOWZkOWU1OTg5N2Y0ZGVkMjVhZjFjMDRkZDAwNjA1IHJlbGVhc2UyMi1tYWludAorMzI3ODIgNTJhZWJjMTQwMDY4N2QzNDY2OGFmZmU5YzQ3NjU4OTVkODgyNjE0YyBsZWdhY3ktdHJ1bmsKKzMyNzgzIGNmMzM4NjMzYjA3NDZjMGFlYmNmYTAxNTZiMGE3ODdkMDk5NjFhODMgbGVnYWN5LXRydW5rCiszMjc4NCA0Y2JmNzdlZGVlZDUyNzkyYjExNzMzMWIzM2QwNWY0ZGMwNTVmOGQ0IGxlZ2FjeS10cnVuaworMzI3ODUgOTg3NmIxOGVkY2FiNDA2MDhhYWFlNjdiM2MyNDM5NWRkYTljNWY3OCBsZWdhY3ktdHJ1bmsKKzMyNzg2IDY2YWExMDVjOGQxNzk4YjE5N2IzYzc2MjJkNmE5YWM5ZTdkMmJlMjQgbGVnYWN5LXRydW5rCiszMjc4NyA2MGU3M2M1MDVjZjJjMWMyOWI2MTdlNTZjMmUxODRmNzk2N2QwMTE3IGxlZ2FjeS10cnVuaworMzI3ODggNTNkZDhjNDI2M2ZkMzFkZmE5OWUyZTZhNTUxZDc1OTgxMjU0MGRiYiBsZWdhY3ktdHJ1bmsKKzMyNzg5IDJjMzU5MmQxMmQ2OTRlM2FiODM1MTk2YTIxNWQyMTIxZWQzMzI2YmQgbGVnYWN5LXRydW5rCiszMjc5MCBjMWU4M2I4ZDViNzBmZWRlNTJiNTczMjFiOTk4MzJkZjk2NTVhZmQ5IGxlZ2FjeS10cnVuaworMzI3OTEgZTlmOWExOTZmZGVmZTRmNzJlODc2MGJhYjA0MTk2MGY0NjI0N2RlNiByZWxlYXNlMjItbWFpbnQKKzMyNzkyIGMzMTBmOWRkZmRjYmRiMWE3YjU1M2IxZjI4MDkzZTVjMjlhMzk0MzggbGVnYWN5LXRydW5rCiszMjc5MyBhZTA0YTczYmY4ZmMxYmU3MTMwNTk3MDBjMDE0ZjFkODYwNjhiZTExIGxlZ2FjeS10cnVuaworMzI3OTQgZTU3ZTIyYWE1NmE0ODY3NzAzNWQ0YzA1ODIyNDViNGEzNGFkODZhMSBsZWdhY3ktdHJ1bmsKKzMyNzk1IGY5MzUxMmYxZTIwZmYxNmU1NWM0MzhiYTU5MGM2YTM4ZjhiMjQ5OWQgbGVnYWN5LXRydW5rCiszMjc5NiA1ZGExOTg0ODBiNmE3NmZlMzhhMWE2NmE2MWEzZDAyNzk1ZGViYmU1IGxlZ2FjeS10cnVuaworMzI3OTcgNDMzMmYyMDUzM2ZjZGYzZWE5NGYyNjBjN2IzYzgwMDQzNzlhY2RhMiBsZWdhY3ktdHJ1bmsKKzMyNzk4IDY5MzE1NWNkYWUwM2Y4MjEwYjQ5ODVkODkzYTQ3MTIwNWQ4MDlhNTQgcmVsZWFzZTIyLW1haW50CiszMjc5OSBlNmUxMDBlZmJjN2QzMWVhNDFhNDFiNDA3YmJmZGExM2YxY2Y2YjZjIGxlZ2FjeS10cnVuaworMzI4MDAgMmJmMjg5MDRhOGVjYWE1MzBhMTU3MzJjMmYxMzJkMzk2ZjQzNmFiYyBsZWdhY3ktdHJ1bmsKKzMyODAxIGI2MTkxY2E4ZWQ4MDcxNTkyYmJjOGUzMmUwNDFkNzcxYmYyYmVlMjMgbGVnYWN5LXRydW5rCiszMjgwMiBiYzUyMTY4OTYzYjMyMWQwY2U4YWJlMTM1NWI3OWUwNTVlNjRlOGZmIGxlZ2FjeS10cnVuaworMzI4MDMgZWYzZWY4OGUzNjE0ZjZhMTI3MGJjM2MwODQ5Mjc2ZDdkZDFkYmUwYyBsZWdhY3ktdHJ1bmsKKzMyODA0IDZjMzBiYjNlMzMyNTc3YzQzZTg1ZGFjNWRiZTE2NjY0NmYwMzgyMTcgcmVsZWFzZTIyLW1haW50CiszMjgwNSA4YmU5YTMxNmViOWRlMTY1YzU0MjhmN2MxYWFkNjU2OTI3OTk4Yzk2IGxlZ2FjeS10cnVuaworMzI4MDYgMjk4MmU2MTgyNTY2MWVmMWI5Yjk2YzEwYjkyY2ExZGE2ZjUwZDBlZiBsZWdhY3ktdHJ1bmsKKzMyODA3IDE2NzIxZDczYWQyOTNiZDkyNzFmZTZiYTY4NjE1NzAyMTE2YTU1YTkgbGVnYWN5LXRydW5rCiszMjgwOCA1ZTZkMGRjZjE1NWY4NzM0ZThlMGYyNGEyN2VhNjEyMTMyYmU0ZTRmIGxlZ2FjeS10cnVuaworMzI4MDkgNDZmYzNmOGU5ZWVlMzM5YzVmYzgyMzczZjAyZmY1OTE3YzIwMGNkMyBsZWdhY3ktdHJ1bmsKKzMyODEwIDlkOGRlNTY1ZTVkZWFjZGM3YzUzNTlhZWU5MTJjOTBiNDJiN2MxYTEgbGVnYWN5LXRydW5rCiszMjgxMSA3ZjAwNzRlZThhYjk5NTMyOTc4MTc5MmY5Y2Y0OTMyOGNmNDJhZjAxIGxlZ2FjeS10cnVuaworMzI4MTIgMDAxZDNjN2U5NjM3MGM2NWNhODNkZGFhN2NmMDFhYWZhY2IzZDVhNCBsZWdhY3ktdHJ1bmsKKzMyODEzIDUzMmRlMTkzMzJhNDc5MzEwNzc5YjM5ODhmYjlmNWU0OWRmMGMwOTkgbGVnYWN5LXRydW5rCiszMjgxNCA0YzFkMWIzNTlmMDY2OWM4YTVmYzUxODBiZDkyMTBkNDQxMDdlYjNhIGxlZ2FjeS10cnVuaworMzI4MTUgMWQ0ZWM1MmIzMTZjMGI4MGQyYTcyNWZhM2Y4ZTBlYWY2OGEyYjY1MyBsZWdhY3ktdHJ1bmsKKzMyODE2IDM4NGJkYTM0MzcyNWEwZGVkMGRjZGYyODAxN2Q0NmRhY2Y4Y2ZlYjQgbGVnYWN5LXRydW5rCiszMjgxNyAyYmI1Y2VlZjlhYzNjMmQyMjE0N2ZiYmIwN2JiMWM2ODQyYTZjMDlmIGxlZ2FjeS10cnVuaworMzI4MTggNGQ5MDE3ZWY3YjVmMzExMDg5OWM5ZDQ0YTNiNGYxNjNmMTA2ZGU3MiBsZWdhY3ktdHJ1bmsKKzMyODE5IDNmOWFhNmYxYWVmMDhjNGQyMmU2MjE4MmY2NTk5ODg4OWM3ZTZmNGYgbGVnYWN5LXRydW5rCiszMjgyMCA4OWI0ZThlMmMyMzBjYmU4NWYwNjQ0MWQ0YmQwYTZiMDdkNDUxY2YzIHJlbGVhc2UyMi1tYWludAorMzI4MjEgNjQzZjNhYzQzMGJlODdkYzRlMTBiOTQ0NzM5OGZhYzM2YTE1NjU4MyByZWxlYXNlMjItbWFpbnQKKzMyODIyIDY1NDVlNzQ5ODYzNWVjMjE5ZGIwYjBmNjhlMDdhZmM2ZGEyZTU4MWQgbGVnYWN5LXRydW5rCiszMjgyMyA0MzRlZjE3NGY0Nzg2MjM4MjliNjk5M2EwNTdhODc3NTAxMDQ0MjcwIGxlZ2FjeS10cnVuaworMzI4MjQgZjBiNjc3MzFlNTQ1YjViOTQ0NzNjNGFkMzdjM2IyZDI0YmExODBjNyBsZWdhY3ktdHJ1bmsKKzMyODI1IDljZjA5ZjkyYjE5OGJlZGNlZjg0MjdhYTA4ZmM3YzcxMTAwM2RmMzMgbGVnYWN5LXRydW5rCiszMjgyNiA5YWUxN2IzNzc5YmJiMDJkMGYyNGE5YjRiOTNmMmZiZTBjNDIxMzRhIGxlZ2FjeS10cnVuaworMzI4MjcgNDIxZmZkN2M1N2FmZWVhNzM4MDIzYWRjMTUyYWUxMjhmYzI3MjcwMCBsZWdhY3ktdHJ1bmsKKzMyODI4IGVmZTVkZDYwY2VlODhhYmY3Y2Y1ODZkY2EyYjQxZWEwOGQ5YTIwZTkgcmVsZWFzZTIyLW1haW50CiszMjgyOSA0NWY3ZGU3ZjEwNTJjOGIwMWNmNmFkY2UzNDAyMDJkODYxZjczNjBjIHJlbGVhc2UyMi1tYWludAorMzI4MzAgNTcwYTdiOGFhMTU0MjE2NTY1YzcyZWYzNTc5YjUxODI2YzY0YTFhYyByZWxlYXNlMjItbWFpbnQKKzMyODMxIDRmNTMxY2RmMjQyZThhYzJmOTFlY2I5ZTczZGFmMDgzNDM2YWRjNTIgbGVnYWN5LXRydW5rCiszMjgzMiAxZGM3YzBhMDIwZDNkN2UzNWI3MmExMWIwNDhlZGZhNDc0ODc0YmZkIGxlZ2FjeS10cnVuaworMzI4MzMgNmU5NWFkZDkyYzk5YmFiOGYzYzBmZDcyMTE4NzQwZDAyYmU3M2MxYSBsZWdhY3ktdHJ1bmsKKzMyODM0IDQ2MzAwYjlhZjAyYjk0ZGFkY2U1MjE0YmQ5ZTZkMjdhZDRkMmY2ZjggbGVnYWN5LXRydW5rCiszMjgzNSBmNDc1YmVjMzE2OTU1MTQ0NWM3ZWI1ZDhlNDA5NjQzYmJlYjAzOWQ1IHJlbGVhc2UyMi1tYWludAorMzI4MzYgMDU0ZDliYzBkODYwOGFiNzM0NGQwNmFkNjAxYWQ3MTZjMGRhOTVlOCByZWxlYXNlMjItbWFpbnQKKzMyODM3IGYzOWMyNzFhOWE4ZTZjMjI4YTQxMDk0MDQyZDQ0YzRkYmIxYWRlYjggbGVnYWN5LXRydW5rCiszMjgzOCA5YWEwNmNiZDljYzFhMzA3YzRjOWM5MmRjOWYzMDE2OGM2NTY1N2RjIGxlZ2FjeS10cnVuaworMzI4MzkgYzdmNmY3Mzc0M2IwOGI0OGIzM2ZhNDdjNGE4NzlkYWIwMjc1OWFjZCByZWxlYXNlMjItbWFpbnQKKzMyODQwIDJhYWEzOWVkYzUxMWU3ZDMwMGJhMjEzNDYzNzdkYzE4OGQzZTE3YmYgbGVnYWN5LXRydW5rCiszMjg0MSA4OTZiYmQwODA2ZThmM2YyMGJiZDU3ODFiNzJmZjJhZmYzOWRhMjNjIGxlZ2FjeS10cnVuaworMzI4NDIgYmVlM2QxYTFiOWE5YTNjYjE1NWI3NjYxNTgyOGNiNTFlNjhiZjgyMyBsZWdhY3ktdHJ1bmsKKzMyODQzIDRiMWMxNTBkMDdkOGM1YjA0MWJiMzVkNWFkYjcxMDNhZjhhNDZjMTEgbGVnYWN5LXRydW5rCiszMjg0NCAyMjdjNjY0NmNjNmJiNWIxYTJiNGJlYjE1YjFlYjhkNmIxZTdiZTMzIGxlZ2FjeS10cnVuaworMzI4NDUgMTI5N2Q0MDUxNTViZDM2ZDE1N2U2YTFkY2NhN2I5NzExOTNkZTVmMiBsZWdhY3ktdHJ1bmsKKzMyODQ2IDliMjQyNTA2ZDZkYzdkNDdmM2RiOGQ2NzViZTczMjc2MzQzMmRkOWEgbGVnYWN5LXRydW5rCiszMjg0NyBkNjY1YzZiOThjZDI0MWJhNjdkYWFhNjJhZmE1YjUzN2Q3NTkxNzM5IHJlbGVhc2UyMi1tYWludAorMzI4NDggODEyOTZhODBhMTVmMmUyMDViN2M5ZDM3YjdiNGUwZTM0MzcxNTA5NyByZWxlYXNlMjItbWFpbnQKKzMyODQ5IDZkNmJkYTI1NDliNmJkNDYwZDViMzRmMGU0ZWZiMjViODk0NjkwMDIgcmVsZWFzZTIyLW1haW50CiszMjg1MCBhOTIxMGJlYzNiNWFmOTI3NDkxNjY3MjRmY2MxMzA4OTNhY2JmNDU4IHJlbGVhc2UyMi1tYWludAorMzI4NTEgMGE5N2FkYzZhNDdlYjI0NWNjOWE3ZWMyMmI0ZTI5NDc3M2ZhZmEzMiByZWxlYXNlMjItbWFpbnQKKzMyODUyIGI5NzYyZjAwM2YzMDhkMTc1MjczMWFlM2ZiYmVmMzBmMWNmMWY5N2YgbGVnYWN5LXRydW5rCiszMjg1MyBjZDFjODI2Yzk4YTJiZmJjZTRhYWVkYjViMWYwMDljYjNiZGIwNzVkIGxlZ2FjeS10cnVuaworMzI4NTQgMzYxZmFkNjMzMzJkZDI0OTA1ZDIyODM5ZjBmYjY2MmNkZGRkOWY2OSByZWxlYXNlMjItbWFpbnQKKzMyODU1IDc1NGZkMzRhZDk3ODRlMmM3N2U3MTY3OWI1YzQ2NmZlM2Y5MjBhNmMgbGVnYWN5LXRydW5rCiszMjg1NiBmNmU5MWNhNTZhNDk4YzdmNjBiNTlmZDc4MjBjMjFjZGNiODgxNzFiIGxlZ2FjeS10cnVuaworMzI4NTcgMzE1YTc0NzI3N2JmZTc2ZDU4Mzk1Mzc4ZTllMTA0YjU5YWEwYjQ3NiBsZWdhY3ktdHJ1bmsKKzMyODU4IGIxZjY0MzY5MGE4ODdjZTIxZWRlNjhiMmYyZTljMTc0YmJhZmYxNTYgbGVnYWN5LXRydW5rCiszMjg1OSA1NmZmY2EwMmM4MjQzYjM1MWZlNzQyNDMyZjE5NWQ2OGZlZTY3Mzk2IGxlZ2FjeS10cnVuaworMzI4NjAgZTcwOTQzOTMzNzM5ZWZjYTY5MDY0ZTFlZDJiMDA4MjUwZDlmYjQ2YiByZWxlYXNlMjItbWFpbnQKKzMyODYxIDVlY2M0OGFkNjYzNDAwMGU3ZWQ2M2M0MDViMWY1YjZmYzAzNjNlNjEgcmVsZWFzZTIyLW1haW50CiszMjg2MiBmZjliYTNkMWUyODBjYzYyMTczYzQ4YWUyZTZiYmVkYzQxYWRkNjc2IGxlZ2FjeS10cnVuaworMzI4NjMgZGEyYzVkOWRkNjBlMDdlMzMzNDM4MjgzMmVhNzcxYzYyMTgwYzBkMSByZWxlYXNlMjItbWFpbnQKKzMyODY0IDM1YjI3NjliMDJiNjM0MDk5ODY1MjE3MjIxNDliYjAyNDkzYzk4NGYgcmVsZWFzZTIyLW1haW50CiszMjg2NSBlNWFmZjA2MDM3Yjc5NGU2ZWVhODY3YjFhZDNlZDE3OGQ5NTljMDY1IHJlbGVhc2UyMi1tYWludAorMzI4NjYgZDljZjUzNmM1MzQwY2VkZGU3ZjU3ZTdmZWY0MmFkYWVjZWFmMjU4OSBsZWdhY3ktdHJ1bmsKKzMyODY3IDU4NGRjNDZjYTA2NmRhMDM4M2MyZGRlNjQ4ODBlMjAxODA1OGE4YmYgbGVnYWN5LXRydW5rCiszMjg2OCA2NDYyMjE2ZmUzYTg3YWJjMGFkNTk1MTk2YWUyYmM5M2RlMTY4MzZlIHJlbGVhc2UyMi1tYWludAorMzI4NjkgNGJhYzRkMGQzZTNlZDFiMjg4NzdiNzk1MzZjYzBmNTNjN2RiZjhjZCByZWxlYXNlMjItbWFpbnQKKzMyODcwIDY5OTc0NjYzMzI0NmM3Mjk2ZTUyMmQ2ZWRjMDQ0MzJmYjdlM2MyNjUgbGVnYWN5LXRydW5rCiszMjg3MSBmMDViYWU0MTJiNzFiMjQ1NzA3ZjAzNzEyMWUxYTcxYzlhMWM2MmE3IHJlbGVhc2UyMi1tYWludAorMzI4NzIgOTg1NjcwNjUwNjRiN2JiNTk3YjIzMTA4ZDA4YzIwYzY2ZmU2ZTI0OSByZWxlYXNlMjItbWFpbnQKKzMyODczIDA1MjNmMDliYjM0ODY3NTZiN2VlOWUzMjBiNDgyMTU2NTY2OWJlZWMgbGVnYWN5LXRydW5rCiszMjg3NCA4NTYwYjE0NmY0MWYxZDA3YzI2NzI0MjM0OTkxYjY1NTIwZjE4NzlhIHJlbGVhc2UyMi1tYWludAorMzI4NzUgZjE1NjI2Yzc2NDE4NjczOWU3MTRkYjlkMTFhZjYyZWQzMWQ5Njg5OSBsZWdhY3ktdHJ1bmsKKzMyODc2IDI3ZWMxNDcxZGNiNmE5MmYyYTExOTExNWE1ODYwNjVmYWM2MzZmMmMgcmVsZWFzZTIyLW1haW50CiszMjg3NyBlYTI5NThiZDQyNzFmZjE2NjM2MmZlYTlkNWY4ZDYwYzczNWFhODAxIGxlZ2FjeS10cnVuaworMzI4NzggODU4ZDU2OGViZjc2MzExMDdhMWVkMThiNDBiM2IxMGJmYTViZTFkYSBsZWdhY3ktdHJ1bmsKKzMyODc5IGYzZjMwNjQ1N2I0MzBlYTE5ZDdkZTc5NDZiN2I3YmI4NTE0NTBmMDkgbGVnYWN5LXRydW5rCiszMjg4MCAzYWFmMjRiOTQ5ZGZiNjIwOTE1YzY5MDUzYzhkNjdjYzdkYzUxMzU4IHJlbGVhc2UyMi1tYWludAorMzI4ODEgMDUyYzYyNjNkZjI2OWEyNjRjMjE4NGZkODM4Y2I2ZGE0M2UyNjM5MSBsZWdhY3ktdHJ1bmsKKzMyODgyIDEwOGExMDA2YTkwNTNhNGZjMzZjMTEyMDViZTY4MTUzNjE3MDVkYWMgcmVsZWFzZTIyLW1haW50CiszMjg4MyBmN2RmYWVhYTRhYjk4OGE1NDZhZWUyYThkYjFhZmVlYjM3Zjk2N2QwIHJlbGVhc2UyMi1tYWludAorMzI4ODQgYmQ4MjE2MWI2MWU1NTY5NDZiMjQ4YTIwOTM2Y2E3NTljNmNlNmU3MSBsZWdhY3ktdHJ1bmsKKzMyODg1IDY3ZDU2MGQ2MDhjZWQ3NmFmZTFlMWI0NTcyZGJlMjM2ZDk2YTZhMmQgcmVsZWFzZTIyLW1haW50CiszMjg4NiA4NTZjODFmNzEyMTNkYTIzZTk2MDRmYmM4ZWY5ZmFlOTFkOWI3MDIwIHJlbGVhc2UyMi1tYWludAorMzI4ODcgZWFmOTBlODUwZDEyZTlmZjEwN2I1ZmIyZDQ1NDM0Zjc5ZjdmYmUyMCByZWxlYXNlMjItbWFpbnQKKzMyODg4IDM3N2EyOWY2ZDY4NzkzZDY4N2IxOTdlZjdlMzJiZDE4MzY0NzAyM2YgcmVsZWFzZTIyLW1haW50CiszMjg4OSBmM2QxZWQxNDExODgyZDU4ZTFjOTkyOTE1NzIwMDk1ODc2ODE2YWQxIHJlbGVhc2UyMi1tYWludAorMzI4ODkgYWM3N2I5MTM0MjUzNGQwOWIxZTQzMmUxZGMzYjcwZGJiZWMzYTkxOSByZWxlYXNlMjItbWFpbnQKKzMyODkxIDA2ODUyOWE5MDk5MjZkNGY2MDNjZjBiNmQ2YTBkNGEzMzQ0YWRkZmYgbGVnYWN5LXRydW5rCiszMjg5MiA3NTJmYzVlYTE2YjliZDEzZmIxNjQwMWQyNjIwYWY1NTk5MDkzNWJjIGxlZ2FjeS10cnVuaworMzI4OTMgMzVkNzAwZDkwMTVlMDU4ODhjYjBjZDliNjc2Yjg0YWJiNmU1ZjZmOSBsZWdhY3ktdHJ1bmsKKzMyODk0IGU3MjEwMjVjY2EwOTM5ZmE2NWUyYzM2ZGMyNjQwNGZmNDBkZmU2OWYgbGVnYWN5LXRydW5rCiszMjg5NSAzODdkN2MyMjE2YTE2OWI2YzY2ZDg0ZjhlNDFiMjM0OGNmYTYzMGNhIHJlbGVhc2UyMi1tYWludAorMzI4OTYgZDcyYWQwN2M3MzllYTJjOGUzNTYwMWY5NzYyZjkzMmM1ZTk3NjUyYiBsZWdhY3ktdHJ1bmsKKzMyODk3IDY0MjI3ZjhkZTdkYWMxMDU4NDA0NDU2Y2RmZTRjZTExM2Y0NTE2ZjIgbGVnYWN5LXRydW5rCiszMjg5OCAyM2FkOGI1ZDdiNGEwZWYzNjg5NzRkMzA2ZTE2ZTllNGYwNWI0OGQ2IGxlZ2FjeS10cnVuaworMzI4OTkgY2EwYzgxMzdkZTg0NDU1ZWFmZTE5MjQ4NTMyMTY2N2Q3MWIwY2RkYSBsZWdhY3ktdHJ1bmsKKzMyOTAwIDM5Yjg3MTY3ODQ2NzUzZDIyNTUwMzEwZThlNWI5ODdkZGUyNmMwMDYgbGVnYWN5LXRydW5rCiszMjkwMSAxYzMyZDQyMDc0MDRhODY0NDVmMTkwZTA0NGYxNzFiNzU5ZjU2Yjg1IHJlbGVhc2UyMi1tYWludAorMzI5MDIgMmY0Mjg3NWQ5MzdmMjRkNTRkNzk5YWY3NzMyOWQzMTdlMWFjZGNjZCBsZWdhY3ktdHJ1bmsKKzMyOTAzIDg5M2FlNTI2Njc3NjUzZjMwYTM1ZWRhZWI1NzM0NDU4YmUwMTUzOGMgbGVnYWN5LXRydW5rCiszMjkwNCAzNDYwOWZhMzViMTFjMTdmYjUzYTUzNDlmMjIwZTA0MDlmYmY3ODk4IGxlZ2FjeS10cnVuaworMzI5MDUgM2E4YjFkMTZiN2M2Y2RjZGI1NTJhZDE0ZGNmZWFjNzA4NjVlYjNmMSBsZWdhY3ktdHJ1bmsKKzMyOTA2IDBiNzY2NzliZjNmOThiNzc0MWNmYThlODY1MmQ2OTU3NTY2MzQyZjggbGVnYWN5LXRydW5rCiszMjkwNyBiNGM5MmU5ODAzYTYyMTIzNGRiNmViNDljNmYyNGRjNzNmNmIyMDZhIGxlZ2FjeS10cnVuaworMzI5MDggYmU3MGI4NDc3ZjQzZDA4YTY4Mjc5ODE4YWY4YTBiNjhmNGZlNmVlNiBsZWdhY3ktdHJ1bmsKKzMyOTA5IDM2ODliMDA1NWMyZGIyMjk2YTllOWE5OTdhYzJhNTA1MTkyZGNmZjMgbGVnYWN5LXRydW5rCiszMjkxMCBiOTA5ZmRmMGVkZjhkZGUwYzY3ODI4NTc3MDlhMmMwMzI3ZjFkNWVhIGxlZ2FjeS10cnVuaworMzI5MTEgZGVhMzgxMTZjMzczNTI2ZGM0NjZlMWM3Mjk4NjE1MDcxZGI3Y2E2NiBsZWdhY3ktdHJ1bmsKKzMyOTEyIDE4YzAyMDQ2Mzk2NWQwMjlkZjdjMTAzZmUzMGQ0YzhkZjQ5ZDY5NzYgbGVnYWN5LXRydW5rCiszMjkxMyBmMWU1Njc0ODUxOTQ0OGJjOWMwNGMyMDJhNGYzYmNmNjYyOWNmYWNmIGxlZ2FjeS10cnVuaworMzI5MTQgMTYxZjA1ZjQ2ODBkOWQzZDgyNzc1ZmM5YzkxYTEyZjA0NjdlOGY2NyBsZWdhY3ktdHJ1bmsKKzMyOTE1IDM0ZjQyZTM0NTBiNGQ2MmMzOTUyZTk2OGVlZmI4OGZhZTkyYjJiNmIgbGVnYWN5LXRydW5rCiszMjkxNiA3ZWE1NTBlY2Y0M2Q3NGVkNDMzYjUyOThkYWQ1MmJjYzAyZmQ1YjViIGxlZ2FjeS10cnVuaworMzI5MTcgNDVjNmJlMzU3MzNmZGQ2YWY4YmNhZDVjNzY5OWU3MGExMzhhYTdiYyBsZWdhY3ktdHJ1bmsKKzMyOTE4IGE5ZDc3OGJkOTY1MzY4ODMzZjI5N2NkY2ZkOGFhYzY5ZjEwN2M2NDkgbGVnYWN5LXRydW5rCiszMjkxOSA3NGRhNGQyZWFhZDM2NzliZWU3NWE0NzY1YjE0MDAwYjExMjlkZWZkIGxlZ2FjeS10cnVuaworMzI5MjAgZDIzZTkzMjBkMzUwMDJkNjhhOTg1YWYxMTMyMTgwMGU0NTE1YjQ4NiBsZWdhY3ktdHJ1bmsKKzMyOTIxIDNjNGQ5NWE0Y2UxNzdlN2JiZDlkODAwNmQ4NTc1N2E2M2Q3ZWUwNGYgbGVnYWN5LXRydW5rCiszMjkyMiA3ODg3ZmUzYTlhOGZmNmE5YTdhZDgyMTk0MGY1NmY1NjVlM2JkNjQ4IGxlZ2FjeS10cnVuaworMzI5MjMgYzU2MzM4ZTA4N2NhY2FmOGMwNDFmNmJkMGIwMWUyYTIwZTM1NDQxMSBsZWdhY3ktdHJ1bmsKKzMyOTI0IDA4NjMwOTE5YmY1MmIyZWM5MzRjMTA5NmVlMTE4NGI2YjFiNDA5N2IgbGVnYWN5LXRydW5rCiszMjkyNSA4ZjczZGYwOTk5NjczNDAyYTNiYzAwYzFlOGViODYzN2Q2YzBmZDVkIGxlZ2FjeS10cnVuaworMzI5MjYgYjdjZDFmZjAwMTliOWFkZWRjMzI5NmEyNjU4OGYzZTYzMmU5ZjQ2NiBsZWdhY3ktdHJ1bmsKKzMyOTI3IDg5NzgxMjMxOGZmNDFkNDk3MDJkODU3OGMwMDg4N2QyZDczN2QzMDMgbGVnYWN5LXRydW5rCiszMjkyOCBkZjgwYTViNjk1N2I1ZWU1YTcyNjNjYmNmNjhiMzQxMjI3MjJhMTIzIGxlZ2FjeS10cnVuaworMzI5MjkgYTA0M2FmNjA4ZTk0Y2M3MzExMjc5ODU5NWEzYTM5Y2ZjZjgwMTkyZCBsZWdhY3ktdHJ1bmsKKzMyOTMwIGZlYzdmMzNiNjk3YzE4NWE2OGU4NDIxY2ZiMmY3YjViNWVhODMxZmYgbGVnYWN5LXRydW5rCiszMjkzMSA2NjczMDUzZWRhZDNmM2Q5OGViMzEyOTBhMDg0M2JhNDBjZjY5ODBhIHJlbGVhc2UyMi1tYWludAorMzI5MzIgY2ZiYTc2Zjc3NjQzNThmZjI0OTFkNTEzNTU3MmJkNTBkM2I0YjM1YyBsZWdhY3ktdHJ1bmsKKzMyOTMzIGIzNzJiOTAzZDEwZTdhZGQzMjkzYTk3N2MwZTkxODczNTQ4NGRmM2EgbGVnYWN5LXRydW5rCiszMjkzNCA4ZjJjNWNmNjE3NjM5MDZjMzJmYzhkNjhkZWVhNmJkNzBkNTE5YmRhIGxlZ2FjeS10cnVuaworMzI5MzUgNDk5MmM2MGQ0MjJiMjhkMWZlYjZiMzNhYmI4ZjVhY2QxNjY1NTRhNSBsZWdhY3ktdHJ1bmsKKzMyOTM2IGMzMjVlOGYyMGQ2ZTk0MDk1ZjMwZTA3YTUwODBlYTUyMzE0YmM3YzkgbGVnYWN5LXRydW5rCiszMjkzNyA3ZjEzMGE0MzcwYzllMzRjNjVmZTllMTZhZWQzZWZmZDFhOGM5ZDFhIGxlZ2FjeS10cnVuaworMzI5MzggOGVlYjFkZjY5ZjM1NzUxNzQzYWUwN2ExNGU4NzA2ODI5NjQ4MGQ2NyBsZWdhY3ktdHJ1bmsKKzMyOTM5IDk0OWY0MTgyOWYzNmY0ZjdkM2ZhZjdkOTRjNTMyNmZhNDg4ODI0MjIgbGVnYWN5LXRydW5rCiszMjk0MCBhNWM4ZWNhNTRhZWIwMWYzMzA2ZTliZGVkODIxNzVmYTU4MjdkOGJkIGxlZ2FjeS10cnVuaworMzI5NDEgZGU0MWYzY2Q2NDc0NDUyMTRmY2YzZmJiNzk5MmMzMWI5NmZhMzhkMyBsZWdhY3ktdHJ1bmsKKzMyOTQyIDA0MzdjZjRiOWVlYzFlMmYwMjMzNDJjOWFlNmU3YjNjYjRlZDFhN2UgbGVnYWN5LXRydW5rCiszMjk0MyA4MTFhZDVmMmY3MDE0YzExZmVjYTU3YjJjOTczOTA1YzI3ZGJjNzQwIGxlZ2FjeS10cnVuaworMzI5NDQgYjViYWRkM2E4ZDRmMzkxOGZjOGFjNWUwMzA2ODk1MmY4YmE3OTg3YiBsZWdhY3ktdHJ1bmsKKzMyOTQ1IDcwNjI2YzU3M2VkNzFkZDliNmMxY2UyNWRmN2Y0NDVmZTMwZDE1MTggbGVnYWN5LXRydW5rCiszMjk0NiAyMTQ1MWY3NjA1OTYzMWNjYTk1ZjJlNWY3YWQ5ZDlhN2I4NTg3MjNkIGxlZ2FjeS10cnVuaworMzI5NDcgZThjNGMxNWY0NTllMzVlYzBjODhjNTViNjUyZjRjZTcxNDMyZGEyOSBsZWdhY3ktdHJ1bmsKKzMyOTQ4IGJkMzQ5OTk5Y2IwODI4ODk4ZDgwZWIxZGNiNWRkZWViOGEwZDYyNWQgcmVsZWFzZTIyLW1haW50CiszMjk0OSBkNDY0NTlkODJhNzkyNzhlNTkzODQ2YWY5MjIwNjdkMmNmMWU3MjY2IGxlZ2FjeS10cnVuaworMzI5NTAgN2Y3YTA3ODA0NmZiNWMxMGJmMzE3NzI3NTM0NzQ5MDQ3MmQxNjNiNSBsZWdhY3ktdHJ1bmsKKzMyOTUxIGMxZTgwZjJmMWM0NzFhMjNjZDc2NmI2MTYzZTc3OTNmYzU4NjJlM2MgbGVnYWN5LXRydW5rCiszMjk1MiBiNTQ3OGQxZGQ2N2VkZDlkNjZlOGFkMGU5ZDlmNjRjYmRjMmI3MDJlIGxlZ2FjeS10cnVuaworMzI5NTMgMGJlYjFhNjUxNDQzNTgwMmQwMzEzNGNhMDdiNTBhYjA5MzI3MDU3ZSBsZWdhY3ktdHJ1bmsKKzMyOTU0IDczMjgzNjY2NjAwMDMyM2ZlZjUyMzc3NTIxYTY2ZGUxNjkyNWJiMTQgbGVnYWN5LXRydW5rCiszMjk1NSA5OGFmZmRiYzQxNmM0MTA5OTRkNTU4ZDUwNjY3NzFiN2U1YzBkNWMzIGxlZ2FjeS10cnVuaworMzI5NTYgMDhhMWNiZGQwMzY3ZmQwMWIyNzM4Y2UzZWM1YmU1YTA3Njg4NzJmMSBsZWdhY3ktdHJ1bmsKKzMyOTU3IGUzYWVmZWJhNDExNjA5YTIyYzc1ZjkzNzAxNWE0YjFlYWNjOGVlY2MgbGVnYWN5LXRydW5rCiszMjk1OCA5OGQ4MTU5OWVjYTc0ZWMzM2ViZmRhYmZlZDk3ZTMwZWZiMjg3NDE1IGxlZ2FjeS10cnVuaworMzI5NTkgYzNhMDIwNzRjYmVlOWI2YWU4Mzg3OTgwNjI5NWIwODYwNzdmN2JjYSByZWxlYXNlMjItbWFpbnQKKzMyOTYwIGU2ZjhlMjY4N2M2ZmQ1NzUyNGVhNmQ1ZDhiYTY5YzExNTMyOTNhMjAgbGVnYWN5LXRydW5rCiszMjk2MSA2NDY4ZjBlMWY0YTg1YmJlZGJmNGM1Mzk1MmNiZmU3YjJhZWIxZmZiIHJlbGVhc2UyMi1tYWludAorMzI5NjIgYWQxZTY3YWM1NjdiODcyOTk0Y2JhOWU2YzhjNGEwZGE5MzUxMmMzNiBsZWdhY3ktdHJ1bmsKKzMyOTYzIDQ2Mjk0ZWRkYmE1NTEzYmJiNTQxNWIzMmFlODc4MTU1M2I4YjQxNDAgbGVnYWN5LXRydW5rCiszMjk2NCA2NzFlOWMzYWY0ZjM4NWZiODhlZGU3ZTY2N2NlMWJkNjRlNzU1ZTcyIHJlbGVhc2UyMi1tYWludAorMzI5NjUgZWQ3MDc3OWY2NDAyMWM5MGVmYmZjMDM4NzUyMmE1Y2UyMjI1MWNkYiBsZWdhY3ktdHJ1bmsKKzMyOTY2IGIxNzkyYTYxOGU2ZGJjYmUxMWU0MDc2M2RhZWQyZWJkOGVmMDExMzkgcmVsZWFzZTIyLW1haW50CiszMjk2NyBkYmNlNTU2Y2ZjOTZlOTA3MDlmNDQ2MzQwNzQ0NjI4MDEzOGRiMmU1IHJlbGVhc2UyMi1tYWludAorMzI5NjggNTFjZTY5YmRmNDE4NmU4MjAxNDc5NDFkZTQ3MTI5MjVhNTA0Y2M0MyByZWxlYXNlMjItbWFpbnQKKzMyOTY5IGMyOTFjYTI5NDllOTI2NDFlNmNmYWUyYzVkNjhmMDdjZmNiZTgwZmQgcmVsZWFzZTIyLW1haW50CiszMjk3MCAyNzJjNzViMWQyMmViYjA1ZmM3YmUyYjA1NzdlYTA4OTQ2ZWRiZDcwIHJlbGVhc2UyMi1tYWludAorMzI5NzEgZjQ0ZmJmNzRlYjYxZGMyOGMxN2ZmODQ1MDMzNTI2OWFmYjg4NmQwNyByZWxlYXNlMjItbWFpbnQKKzMyOTcyIGY3ZjQ2ZDY3M2M2MWM3MmNjOGNkMDkzYzAxN2ZlMGZmZDc0ZjJlMjAgcmVsZWFzZTIyLW1haW50CiszMjk3MyA2NWY3ZWZkMzVmMTE5MDFjNzBmNWM5N2IyYTlmZGQ3M2YzYTAwM2E1IHJlbGVhc2UyMi1tYWludAorMzI5NzQgYjMxYzg0YmExZjMxNDRmNTA0NzU2NWFmNDM3MTFiZDNhMGE2YzQyYyByZWxlYXNlMjItbWFpbnQKKzMyOTc1IDc3NDYyNjliOTUxY2RkNjJjZjY5MDhiY2E0YjEyNzU4MDVmN2UxMDMgbGVnYWN5LXRydW5rCiszMjk3NyBiZjJkYzBkMTcxNDg4MjdkNjBhNmZkMmM2OWZmNWJiZGY0ODM2YmNmIGxlZ2FjeS10cnVuaworMzI5NzggMTJmOWVhMzJmMjNhNTI5NzBiYjQ1OWVmMjY2OTlhNzNiZGUzMGZlOCByZWxlYXNlMjItbWFpbnQKKzMyOTc5IDAwOGNkMTAxMjY5ZGY2ODI5NjgwNGYzMTc0YmM5NTJjNzBiNGMwMjAgbGVnYWN5LXRydW5rCiszMjk4MCA3YmVjNjI4OTk4ZmU5ZTc1NzI2N2U1NmFiZGUzZGJhNjgwNjVmZThjIGxlZ2FjeS10cnVuaworMzI5ODEgZTk1MGFiYzMyOTIyN2FiNjgwMDU3NDcxMDBkY2VhNjc1MDkwNDI2NCBsZWdhY3ktdHJ1bmsKKzMyOTgyIDM2ODJhYTI3MTQxYjQ0MjJjZTZhZWY5ZWZlOWM5YmY3NDY5ZTQ0YzUgbGVnYWN5LXRydW5rCiszMjk4MyA4NzAwYTFjNzAxNmIxMGYwOTg4ZDliYWYzNjQxYWZiZGRjZDg3NTJlIGxlZ2FjeS10cnVuaworMzI5ODQgNjNhYjUwZWM0YTQ2NjE1YWYwZDQ2OTU3MTZmYzg4YTJhYzQ2NTNkYSByZWxlYXNlMjItbWFpbnQKKzMyOTg1IGU0NTgzZDE2NmNiY2Q3OTg2YmExYjRlMmEyMTA4MTI4ZTE5ZWMwODIgcmVsZWFzZTIyLW1haW50CiszMjk4NiAyOWFiMWM5MjNmNzU3MTBhMmI5NGRmMzgxYTdhMjMwNzRlMGZjMmE3IGxlZ2FjeS10cnVuaworMzI5ODcgNDdjNzI1YTMyYjBlYzEwZjhhYWU3ZTcwN2MxYTY3ZjlhNDNiZDViYSByZWxlYXNlMjItbWFpbnQKKzMyOTg4IGMwMDFiYjAwMDU1ODBkMmE1NjlhYjJlNzJlZGEyMjdhNmQ1ZmMwN2QgcmVsZWFzZTIyLW1haW50CiszMjk4OSA4M2EyZTcxMzNiMDEwNTUzYjU0NzU2MDU3Y2M3ODMxMTgzZGNhNWEyIHJlbGVhc2UyMi1tYWludAorMzI5OTAgODkwY2Q3YTIyMjNlZmI5Njg4NDYyYmVlNGI0Y2Q2OGJmYmY1OWY3NSByZWxlYXNlMjItbWFpbnQKKzMyOTkwIGY0ZjEzNGFkNDZhYmQwYmM5NzNkM2Y2MDk0ZWE1NmU2MmFjNWM0OTIgcmVsZWFzZTIyLW1haW50CiszMjk5MiBmOTQ5NTgxNWMxOGYzMTlkOTYyOWRmNGI3NDU2MjU5ZDY0NmI3ZTAzIGxlZ2FjeS10cnVuaworMzI5OTMgZjQwOWIzM2MyOWNlNDkyMDBlMzE5ODE3M2MzNzUyNTAzNTM0MTcwNCByZWxlYXNlMjItbWFpbnQKKzMyOTk0IGZjMjg2ZTI4NTU2ZjdkODZkZmY4ZmZiYzIwNWZiMzdlZTg1ZTM3MjEgbGVnYWN5LXRydW5rCiszMjk5NSBjNjlhZDkyMjdhZmQ0ZjkzMWI3NGNhNTY2MDJmZWVlZDIxN2RmYzlhIGxlZ2FjeS10cnVuaworMzI5OTYgNmFiY2I2OTBiNDdiNTRhN2E4YjU4NWJiMjE0Yzk0YTA3YzgzNTVmMSBsZWdhY3ktdHJ1bmsKKzMyOTk3IGQ4OWMwODM3ZjhmNDE4MzE1NWQyNTQ1ZmQ1NWQ4MDI2NGVlOGI0YzEgbGVnYWN5LXRydW5rCiszMjk5OCBlNGY3MGU2MDI1OThkNDhiYTJiNDI5ZDU3NWJlZGYyMzAyYjdiN2JiIGxlZ2FjeS10cnVuaworMzI5OTkgOTdmZDFmNDlmMDI2YWE1MDRjNWNhZjdhMDg2NzljZTY2OWUzMTA4ZiBsZWdhY3ktdHJ1bmsKKzMzMDAwIGIzNDU1YzRjMTc5ODg3NzhkNzhjYTViOThjYjhkNmM5NTk0OGVhMTMgbGVnYWN5LXRydW5rCiszMzAwMSA3NTQ5NGFlYTQ3Y2E3MjY1NDkxZWEyNDE3YTNjMDgyOWRhZWI1NDgzIGxlZ2FjeS10cnVuaworMzMwMDIgNDU4NWFiMGRhMDAzNzdiYWYwZTljYTBmZWNlYjBmZTM2ZDU1MDNhZSBsZWdhY3ktdHJ1bmsKKzMzMDAzIGY1ODkxNDU5YjgxM2VlMjQ0ZTVkNTNmYTZiMDg5M2RhNDlhMDRkOGIgbGVnYWN5LXRydW5rCiszMzAwNCAyZjczMWM1N2NkYzY4ZjU5NDBkMDNmOTkwOGM4YmM5NDg2Y2U0YTdhIGxlZ2FjeS10cnVuaworMzMwMDUgMjdiZDRjZDAyYmI4N2UzNzcxNTNiM2VlMjQ3MGNmMDMyMDE5MDRjOCBsZWdhY3ktdHJ1bmsKKzMzMDA2IGZiODRlMGVhYmFkNGU0YjNkMTY4MDM0M2I1YzZkYTI5ODAxN2VjNzAgbGVnYWN5LXRydW5rCiszMzAwNyAxYWU4YjY3NDA5MDY1MjA2NWNkZDhhZWU5MTQwYmNjYTQwNTNjOTY0IGxlZ2FjeS10cnVuaworMzMwMDggYjEzOTUwMTQ3MTRhZDdmMDZjZTJmYWRlNjFkOGVmNGExNTlmZWJhNyBsZWdhY3ktdHJ1bmsKKzMzMDA5IGI1MmUwYWQzMDU4NTg4MGU5MjY2NmEyNDc3MGYzN2RhZDQ2YWJiYjkgbGVnYWN5LXRydW5rCiszMzAxMSA1M2Q5YjRlZWM0Y2UwYTI4NGZiYzUwZmQyNTJlM2FiNTU2MmVjN2EwIGxlZ2FjeS10cnVuaworMzMwMTIgYTM2OTMzNjIyNGRkYTQ5NTM5YTFkY2Q2NDU5N2Q4MTI0YzVkNTZhNyBsZWdhY3ktdHJ1bmsKKzMzMDEzIDIwODk0ZGJjN2Y2YThhNTcxMjQ0MjUzYWVhMTcxNTgxODNmNDZmMjcgbGVnYWN5LXRydW5rCiszMzAxNCBiMWViMmE0NzU2YmNjMzI5M2U5MWJmMjcxY2E5NTk3NTBmYWJiNDRkIGxlZ2FjeS10cnVuaworMzMwMTUgZWQ5NDliODJmOTVkOWM4YTRiMTk3NGE0NDAwY2MxODFlMTAzNjY2NiBsZWdhY3ktdHJ1bmsKKzMzMDE2IDNmMTBhMjllMGU2YTFhZTAwNWM1ZjIwNWYwOTVjMzgzOTJlNTY5ZDcgbGVnYWN5LXRydW5rCiszMzAxNyBmZGFjOWI0ZDM3MTcyNTEzMjk5NzQ4YWZhM2I3OTQzMmY3ZTQzZjNjIGxlZ2FjeS10cnVuaworMzMwMTggZjgyYjZkMmI3M2YxMTEzNzBhOGM4NGQyOTNhODgzZDk5MmMzNjBmYyBsZWdhY3ktdHJ1bmsKKzMzMDE5IGM2NjEwMGMwOWVhMTE2MjdkNDkwMDlmMjUyMTAyOTU3NjUxYTRkYTYgbGVnYWN5LXRydW5rCiszMzAyMCBlMGYwNzFiNDc2ZmQxNmZkZGQ3YWI4NWFiOTNkYTYzODZmZDdhMWE2IGxlZ2FjeS10cnVuaworMzMwMjEgNzJjZTdjYzAzZjI3ZmQyNjIyZWU3MjRmZjE3MGFjMjE1NWZmMjE2NSBsZWdhY3ktdHJ1bmsKKzMzMDIyIDI2MTZmZTVlZWVlMTc4ZDM2M2M0MjUwMjNlZGNkNjFkMWY4MmFkMzYgbGVnYWN5LXRydW5rCiszMzAyMyBjYTIwYzNjYmM5NTZlYTMyM2JiOThkYzkwNzk5Y2NlOTI1NjgzZmNhIGxlZ2FjeS10cnVuaworMzMwMjQgMTIxOTAyMWM0ODY1YWU4MDdmMzMxNDBhMDViNTRhMjY4ZjM1ZmY4NCBsZWdhY3ktdHJ1bmsKKzMzMDI1IDU4YzFhZDQxN2VlN2NhZWQ0MjhhYTIyMjY4NjU0OThmMDhiODE1YjUgbGVnYWN5LXRydW5rCiszMzAyNiBjMDFlZGMzNWZmZDY3NmJhNGE2NmIwZDFkYzBiNWQ5NTJlODFkMDRhIGxlZ2FjeS10cnVuaworMzMwMjcgOGM2ZDRkYTVjY2QzZjg5ZDVlNTdlYjE5MjY5MGJkOGZhZmZiOTlmMCBsZWdhY3ktdHJ1bmsKKzMzMDI4IDIwZTFhZDNhZThiYjBjYTFhMjNmZjA2NTM4ZWZjYTQ2MTkzM2UxYjMgbGVnYWN5LXRydW5rCiszMzAyOSA5ZTdkMjI5MzBkYWExMmYyN2E1N2MyYzBiMDY0ZDJmNTk1MjUyNjc4IHJlbGVhc2UyMi1tYWludAorMzMwMzAgMjNmNjEwMWNjODdlZjE1MTNhOTQyOTc1Y2RiYTFlMzRmYjc4ZWE0ZiBsZWdhY3ktdHJ1bmsKKzMzMDMxIDJlMmRkNjE0Mzk0Mzk3N2VkN2U3MzQwNTA2MDlmOTM4ZmEyZWNhZTQgcmVsZWFzZTIyLW1haW50CiszMzAzMiA0MDgxYjQ5MGQ1NGNhY2YyMTAxZjI3MWVhNzYyZTc5NjE1ODhlYjJjIHJlbGVhc2UyMi1tYWludAorMzMwMzMgYzA1NTk3OTMwMGYxNzgwNTIyNzEwNjZhYzRiZmZlMjNjY2I4YjBkNCBsZWdhY3ktdHJ1bmsKKzMzMDM0IDI0ZTc0ZDY4Nzk4MDBiYmJiMzMzZTA3OWFmNDc1YTc4M2FkYzA2NjAgbGVnYWN5LXRydW5rCiszMzAzNSAzNDdlN2I2ZGZkNTNhZDlkNzE3NzhmZjE0ZjI5OWNkYTI4YzAxMTY1IGxlZ2FjeS10cnVuaworMzMwMzYgMjRmZmYzMmVkMDY1YzMzZGFlMDM5YzU5Zjc5ODE0YmNiMGU2NmM4MiBsZWdhY3ktdHJ1bmsKKzMzMDM3IDE1ZjFkYzViN2RkYzFjZjYxNGI2YjJkNWIwMDRkYjI3Y2YxYmEyY2QgbGVnYWN5LXRydW5rCiszMzAzOCA1ODVlMzAzYTk0OTEzNTBjODA2OTA4Y2E0MmU3NjdlYzI2YTQwYmEyIGxlZ2FjeS10cnVuaworMzMwMzkgMGQ1ODhmYWRjMWY4MmZmYWY1NWU1NTUyNTE1MjM3NDNhNTViMmE3MCBsZWdhY3ktdHJ1bmsKKzMzMDQwIDJkMzllYzBlNTVhYTVmYTRkYmMzYzIzODc2YTg5N2M5ZTYwODEzYWIgbGVnYWN5LXRydW5rCiszMzA0MSBiYWU2Y2U2ZDFlNWEzN2QyNmRjMTBhNjczZWNhNTg5NjAxZmRmZDE2IGxlZ2FjeS10cnVuaworMzMwNDIgY2Q1ZWNjNWIzOGViODU5N2Y2NjM2MTU0MDY3NzczYjZmYTk1ZDAxMyBsZWdhY3ktdHJ1bmsKKzMzMDQzIGVmZjMzMzM0Y2E2NzM3ZDIwNjE3NDE5ZmE1MDAxZDE0ZWYwZDQ4YjAgbGVnYWN5LXRydW5rCiszMzA0NCBkYjQ2Y2VkYWY3Y2UyMGIyMTQ0MDkxM2E0NzU2Yzc4YWMxNDZjNTVmIGxlZ2FjeS10cnVuaworMzMwNDYgODU3NDI4Y2I0MThjN2M4ZTNmYTY5MTk0YTM2Yzc3ZjAyZTE1ODU2ZCBsZWdhY3ktdHJ1bmsKKzMzMDQ3IDY1NDkwODg0N2VlZjhiZjYwZGE2NTZmZGMwZjA0M2RjNzJlN2IwOTAgbGVnYWN5LXRydW5rCiszMzA0OCAzYjJlMmIxNDY4MWMwMmUwYmIyMzM5YzEzN2IzYzYwYTdkMjBiYjliIGxlZ2FjeS10cnVuaworMzMwNDkgOWUxZjhmYzVlNzFkMzM0NzIyYjYxMzc3ZjczMDBkZWI1NDU2Yjc3ZiBsZWdhY3ktdHJ1bmsKKzMzMDUwIDI2ZTA3YTY4NDg5MGNiY2M5NzRiZjY2OGEyZDgxYTI5YmVmZGQxZDggbGVnYWN5LXRydW5rCiszMzA1MSBjZTI1YjRkNzQ2ZWExMDA2N2UwY2EzNWZjNWMxYTdlYTM0NmI3YmMzIGxlZ2FjeS10cnVuaworMzMwNTIgOTJmZmU1MDIxMTI4MTlmMzNjNjcxMWIxY2UzOTFmYmM3ZTMyNjY4ZSBsZWdhY3ktdHJ1bmsKKzMzMDUzIGZhNjA0YWYwY2RiZmI2MzFiZjRiMTRmZmY4NWU2ZTM3MjVjMjVmNWQgbGVnYWN5LXRydW5rCiszMzA1NCA2MWU5NjZjOWVjZThkOTA4ZGFmYzVjMDMyNGVhNTFkMDU2MWRkZThkIGxlZ2FjeS10cnVuaworMzMwNTUgZTZiMGE0MDZkYzMxZWY0MmVmZmQ4NjFlNzVjYmY4ZGZlNWY3Njc4OCBsZWdhY3ktdHJ1bmsKKzMzMDU2IDUyNTc2NjgxN2ViNjhiNjJkYWUxMDBjNGFmNzZiYzUxYzA4YzY1ZmYgbGVnYWN5LXRydW5rCiszMzA1NyBiMGE3ZWFjNmM2NTExMDFiN2ZiNzAzNTk3ZDk3ZGFhZTFhNTU3NjcyIGxlZ2FjeS10cnVuaworMzMwNTggODMyMzZmNThlNjgxMjFlMzY1MmVlOWIxZjVhMmQ4MjUyNGRmYTFlYyBhbnRob255LXBhcnNlci1icmFuY2gKKzMzMDYwIGNmMGJhYWYxNmUwZDdmNTIxZGViMDBlMWY5NWNkZGRmYjQ0MDQyMDUgbGVnYWN5LXRydW5rCiszMzA2MSBhMmQ0YzY0ZjViOGIzMTRiNTNlNGFkYTA2N2I5NmE3NWRlZmI3YzZkIGxlZ2FjeS10cnVuaworMzMwNjIgZDFhOGM3MzIzNTllN2Q5NDEyYjIwYWRjYzk0ZjcyMzE0OWZlNzI4MyByZWxlYXNlMjItbWFpbnQKKzMzMDYzIDhjNWE2ODUzYTAyYWRiODFiZDY3ZWE4YTA4ZjRjMjZmNTE3MmI4ZDcgbGVnYWN5LXRydW5rCiszMzA2NCBiZWZmYzczNjY2ZmQyMGNhMzhiNjNkNGEzYjQ2MTI0Y2YzZWNjYjYxIGxlZ2FjeS10cnVuaworMzMwNjUgM2I1NGRmZjEzMzEwMWVlMjliOTQ4YmEwODE3Yzk0NmVkZDRlZWI0MCBsZWdhY3ktdHJ1bmsKKzMzMDY2IDliYjZmM2M1YjA0YTNlZjhjZWMxNGYwZTMwZjc3NGFhMmFlZjhhOGIgbGVnYWN5LXRydW5rCiszMzA2NyAzMWIyY2JhNjRiMzk5YmY1OTMxNzIzZTE2NjM5MWJjYzI3ODMxNTVjIGxlZ2FjeS10cnVuaworMzMwNjggMjk3NjAwNTY4ODRhOWU3MTUyMWVhZTUwZmRjNmEzNmIxYjMyOWUzNSBsZWdhY3ktdHJ1bmsKKzMzMDY5IGYyZGY5YzlmMGZjYjYwOWI2ZTk2ODQ2OTk4MjAyNjBjMGFiNmMzYWIgbGVnYWN5LXRydW5rCiszMzA3MCBiYWMyYzBlN2MyMGExMjIyNTAwMGFlNjk5ZGQ3ZmE4YzJmN2ExY2E3IGxlZ2FjeS10cnVuaworMzMwNzEgMzU2YmI1OWM1NDg2YjJlNWViMmIxZjVhMmEyOWVkZWI2NmI5NTgwYyBsZWdhY3ktdHJ1bmsKKzMzMDcyIDY0Mzg2NDY0ZjcxNjkxMTc3ZTlhNDJkNzFiYTQ0ODlhMWVhY2UxYWEgbGVnYWN5LXRydW5rCiszMzA3MyAwYTQwYzY4N2FmNWVjOTY4MDA4MDMyZTc0ZGUyYjE1NDAzMjZhODAzIGxlZ2FjeS10cnVuaworMzMwNzQgODg5NTFhNWZkMmE5ZWVjMDNmNDcxNTlhYzE3OGI1MGI0NGY2MDg0ZiBsZWdhY3ktdHJ1bmsKKzMzMDc1IGFiMWQ4NWY5ODQ4NTY4NzU1MGIxMjZjNDNmMjViMThiNzcwMTdjMjggbGVnYWN5LXRydW5rCiszMzA3NiA5ZTFkNzgwOWE5OTgxNmFkOWEwNzk1Mjg2NjAwOWE2YmQyMmI4ZTE3IGxlZ2FjeS10cnVuaworMzMwNzcgMTlmNGY0OGJiMDJhN2U2ZTAxNGMzZDNmMjlmYWQ1MTRiMjM2MmYzNiBsZWdhY3ktdHJ1bmsKKzMzMDc4IDVhOGZkNWIzZTRjNDA1MTBiMDU3ODBhY2QzOWY1ZTYxYmE4Nzg1MDcgbGVnYWN5LXRydW5rCiszMzA3OSBmODdmY2QwODcwYmYyYzk4NmRkMWQ4MDUzMDIxZTM0M2QyNDRiNzAwIGxlZ2FjeS10cnVuaworMzMwODAgMmJhNWVjNmIzY2RhMmZiMGU3ZWRhNTQ3OTY0MGJhM2U3MDc2NjU0NSBsZWdhY3ktdHJ1bmsKKzMzMDgxIGNmOGFlM2IwZGNkYzk3MGFhODk0ZTJmZDBkZDAxNjAwNmMxMjY3YWYgbGVnYWN5LXRydW5rCiszMzA4MiA3YzQ5ODMxZDIzYzU5YjA3YjY2MzYwZDc0NzgzMjkwODJkOWQ3ZmNjIGxlZ2FjeS10cnVuaworMzMwODMgZmMzOTJkYWJlMmUzMGYwZWE4ZTkwZWIzYzJkMmE4MDg2NTM4YmQwNiBsZWdhY3ktdHJ1bmsKKzMzMDg0IGI2YzI3MWJhMDNlMTgxNDQzNjVhMzg3MjFmNmYzNmVhMDBjMzk0Y2UgYW50aG9ueS1wYXJzZXItYnJhbmNoCiszMzA4NSAwODlmYmUzYTExNGVmOWJlYzY0YWI1OWQ2ZDc3MDUzZDJkYmI2MDBjIGFudGhvbnktcGFyc2VyLWJyYW5jaAorMzMwODYgMGQ2MWEyN2MzODk2OWUwNjg0NmFlOWNmYTkxYjJjMTJlN2Y1YjRlYSBhbnRob255LXBhcnNlci1icmFuY2gKKzMzMDg3IGZmZDAyYmFhYjI1OTMyMGU3MzI2YzA5NzYzNzkxYjdmNjc3Yzk0M2IgbGVnYWN5LXRydW5rCiszMzA4OCA3MGQ2MjVmZjU2MmI1ZDY5YzM1OWI3NGM0YzJkNDZkM2JiMmRlZDNlIGFudGhvbnktcGFyc2VyLWJyYW5jaAorMzMwODkgOTIzZTZmYjg1NWZmNGY3YTM3MzJiM2FlNDQwYzFiMzU1YmJjYjE1NSBsZWdhY3ktdHJ1bmsKKzMzMDkwIGVkY2ZlZjk0NGUyZjQwNmM4MjdhYjExNmY4MGZiNGE2NDNiZTk1ZDAgbGVnYWN5LXRydW5rCiszMzA5MSA1YzU2YmYzY2IyMDU1MDg1MjkyOTg0YjJlMjg4NTlhMTE3ZWRmYjczIHJlbGVhc2UyMi1tYWludAorMzMwOTIgYzQ4MWM2ODYyNzVhNzg1YTU5MzA0NWYwZGEwOTk1YzVhODZjNmE2MCBsZWdhY3ktdHJ1bmsKKzMzMDkzIGI4MGEyMjI1MGU0ZjExYTRiNDdiNWEwMWNkMjgwYzg1NWRiNWNjNTQgbGVnYWN5LXRydW5rCiszMzA5NCBlZmVkNjg5NzNhM2JlZjM0MDgyMjczNjA1YjJjZGM3ZGNkYjdjYmEzIGxlZ2FjeS10cnVuaworMzMwOTUgZTJmMjQxMGMwOTZlMDNmM2Q0MjBmN2EwMzA3ZGRhZTVlOGFlYzI2ZCBsZWdhY3ktdHJ1bmsKKzMzMDk2IDE5MzM5N2M0NGFlNTE2NGYyZWMwNzgzZjNlMDQwOTVlZGRkYTM4NDQgbGVnYWN5LXRydW5rCiszMzA5NyBlNjllNTQ1NTJkMTA4ZGI2NzQ0NDdiZGZmODgzOWQ5N2UyYzVhNmMyIGxlZ2FjeS10cnVuaworMzMwOTggMGJhN2MxMDE2NDhhYzgyODM0MGM4ZTRlNzM1NGZiYjg1ODFmZTVkZiBsZWdhY3ktdHJ1bmsKKzMzMDk5IGZhNDhhOTBlZGExMjVhZWIyZTg0OGIxZTA5NmEzZmU2ZjEwZjdjOTQgcmVsZWFzZTIyLW1haW50CiszMzEwMCAxNzlkNTQ1MmJiOWQ5ZjYxMTRhNDMwOGRmYWQ3M2E4MWY4NzJkNjg2IGxlZ2FjeS10cnVuaworMzMxMDEgYjQwOTAyYjQyMjkwZGI2OTRlZmUzM2JjMjM2NjMwNmU2MTA5Y2Y3ZSBsZWdhY3ktdHJ1bmsKKzMzMTAyIDdiNzAwNDM5M2I1YjI2ZjI1M2U2ZjFjMWUxNTdlZWE0NWNiMTdjMDQgbGVnYWN5LXRydW5rCiszMzEwMyA1MmJhYWVjN2U1Y2YwODlmMzUxNjU2OGQ2MTU4YjJhZjhkNjVhZDJkIGxlZ2FjeS10cnVuaworMzMxMDQgMTc0MzFiYThjYzRiZmFkYTMyNjg0YWFlZjQ3MTYyNWNhNTcxNWYxOSBsZWdhY3ktdHJ1bmsKKzMzMTA1IDZmZWNjOTlhZmE2OWZmZDQ4MGEyOTJlNjIwZDUwMWVlNmU3NTQ3M2YgbGVnYWN5LXRydW5rCiszMzEwNiBiYjE5MTM0ZTBhNGQwYjllNDQzMzJiZDg1ZWE5N2MzMGQ0M2RhZWYzIGxlZ2FjeS10cnVuaworMzMxMDcgOGQxNjAwOTVlYjY2ODNlM2MyMmE1ODk3NjM5ZmRkNjc3MzA3ZDg0MiBsZWdhY3ktdHJ1bmsKKzMzMTA4IGU1ZDAzMzYwNTcxZDk3Y2FmZGVkNDIzY2M4NjhhOWU2MmUwNjMzNGEgbGVnYWN5LXRydW5rCiszMzEwOSBlOTk1M2IzOTlkNTUzZDVjYzhkZjBhZTlhNzkwNzQyZjQyYzMyMTM2IGxlZ2FjeS10cnVuaworMzMxMTAgMmNiOTY5ZmZlMWJmMjhlNTRiMDlmY2M2NDc3YTViZWY2NWFiZjkyNiBsZWdhY3ktdHJ1bmsKKzMzMTExIDVjNzYyNzUyNzgyYzI5MzgyOGQwOTEyY2Q1NGZjYzQ3MDUzOWU0YzIgbGVnYWN5LXRydW5rCiszMzExMiAyZDY5YTcwN2M0OTI5ODU0OTJhMzFmM2I1Nzc1M2I5YjJkMjU1YTc1IGxlZ2FjeS10cnVuaworMzMxMTMgNTYzNDM4MTZiNTg5N2Y4YWY3MDJmMjVhMGQxNTgwZTg2OTZkMzI1NSBsZWdhY3ktdHJ1bmsKKzMzMTE0IDA1MDU4ZDgxMzQ0MThkNDg4NTg0NTNlMTE0YmYwOWI0ZGZjYzI4OTYgbGVnYWN5LXRydW5rCiszMzExNSAzMDE2YTE5ZTMyMGU2NDUxNzA2ZjllMGY1N2MyYzQxYjc5NDJkM2QyIGxlZ2FjeS10cnVuaworMzMxMTYgZWZhZDU5ZjM5NTY0YmNkOTQ4MTc5NzE3Y2JkZjg2YjBiNmZkOGQxYyBsZWdhY3ktdHJ1bmsKKzMzMTE3IDliNzI1NThhMWViOWY0MGJiMmMwYTRiZTE3MTk4MWFhNzY1YTMxODggbGVnYWN5LXRydW5rCiszMzExOCA2ZDE2MGVlMzcxOTY1NTllM2RjNjIzN2E3Nzc3NTQ2MTUzMGNlMzhiIHJlbGVhc2UyMi1tYWludAorMzMxMTkgMWYzMzQxOThlNmQ3NjNjNmMwYWI3OGQ4MDgyYWE0NzlkYTY3MWQzMyBsZWdhY3ktdHJ1bmsKKzMzMTIwIGI4MjJjMmE4ZTA4ZjQzMDVmZWE0YTY3ZjJhNWFkZGQ1YmQ1ZWMyOTIgcmVsZWFzZTIyLW1haW50CiszMzEyMSA4YmVkNTUyMDM1NTlmOGRkNWM1YWMzOTFiNzZhYzdmMjQxYjc5ZWQ4IGxlZ2FjeS10cnVuaworMzMxMjIgMjFiZmNiN2M5NzZkYjVlNDNjODc3MGNiNTYxZjUyYWY1ZGEzOWE1ZCByZWxlYXNlMjItbWFpbnQKKzMzMTIzIDk4ODNjZjhmZjIxN2M5ZWQ4ODI1M2RjNGU0MWExMmRiN2JhMjlkYWYgbGVnYWN5LXRydW5rCiszMzEyNCA4YjE3NjZjOGFkM2JhYjRlOWNiMTUwZjI0MGI4MjhkNzZiZjkxOGVmIGxlZ2FjeS10cnVuaworMzMxMjUgMDYyZTM0MmNjZmY1OGI2Mjk1MzU0Y2RiZjEwZjFkNDVhMjQzYjAwMSByZWxlYXNlMjItbWFpbnQKKzMzMTI2IDc0YTI4ZjJlOTRjZjllMjkyZWVlZDgxMDg1Zjk1NjU1NWZiNWY2ZWMgbGVnYWN5LXRydW5rCiszMzEyNyAyY2I4OTMwY2UyMjU5OTI2YWU0YTc5YTdiOWNkM2I5Y2ZkYTk2MjJlIGxlZ2FjeS10cnVuaworMzMxMjggMWUyZTU0ODIxNzg1ZjlhNGViZWQ2ZWY4N2ZiNDRkODVkN2MyYzk3MyBsZWdhY3ktdHJ1bmsKKzMzMTI5IDM1MjNiYTkyNDUwY2U2NDE2MDZjODk3ZDJkOGNlNGQwOWU4MTIzZTYgbGVnYWN5LXRydW5rCiszMzEzMCAwNDE1YWY2MzQxMjI1OGJlMWFhNDVkNjkxZGM2NTYzNmNkOGEyMzVhIHJlbGVhc2UyMi1tYWludAorMzMxMzEgNWM1YjU4NzQ2NDg2NmRkM2Q3MzM3Y2I5NWExM2ZiNGU5YmNhNTI2YyByZWxlYXNlMjEtbWFpbnQKKzMzMTMyIDBjZjFlYzU4ZTIyMGJhNjg2MmExNDk5YjU2NzhhNzRiNTRiZWYwNWUgbGVnYWN5LXRydW5rCiszMzEzMyBhNzIxYjA5NGY3YmMyZGJmZDcxMTI1NTZiZTYwZmU1NDQxYTA1NGQ1IGxlZ2FjeS10cnVuaworMzMxMzQgNGYwNzZmYzAxOTVhYzI2MjRhZWE0NzhmOGJhNTYyZGY0NDNkMzFiZCBsZWdhY3ktdHJ1bmsKKzMzMTM1IDFhYjk5NzgxMjNiZWNlYTE0NWYwOTBmYTFmYTBhMTFiNDE2MmNkM2EgbGVnYWN5LXRydW5rCiszMzEzNiAxNGExNTQ3MTI5ZmJmNWViYjIyOGJjODI5YmYwMGEwZjE5MmYzMmIzIGxlZ2FjeS10cnVuaworMzMxMzcgMzMxYWY0NWRmYTBkYzAxNzhkOGFmM2NhMjUxYTc3ZjkxODkwMTM5MCBsZWdhY3ktdHJ1bmsKKzMzMTM4IDQ4NzQ2MTRjYzdhMzU3MDM5MmQzZWM5ZmFmZDdlNjZjZDJmNjk5NTUgbGVnYWN5LXRydW5rCiszMzEzOSA1MTA2MGIxNjliMzIzN2E0MTc4MDYxZjljYWMxZmUzNzAzMTA4ZDg1IGxlZ2FjeS10cnVuaworMzMxNDAgODkyZGZjOWU3MjU2N2ZkYjc3OWY5NzIyZTBhNDEwNDQwZDg0OGFjZSBsZWdhY3ktdHJ1bmsKKzMzMTQxIGRlYjk3MTViYzhhZTdjMDBlNmM0NjJlOTM5NTI2MGUxMWEzY2U1ZWEgbGVnYWN5LXRydW5rCiszMzE0MiA4MzRjZDEyMThmMWI0ZDI0NTg1ZTgwMDAzOTlkM2JiZWY1NmM5ZmNkIGxlZ2FjeS10cnVuaworMzMxNDMgMDg2YmQ5ZTdkMjQ0MmEwYmE2YzM1ZWFkNDczZDY4NmJkYmUzMThlYiBsZWdhY3ktdHJ1bmsKKzMzMTQ0IDA2ZjI4YWRlYTZkMmMwOTFhYzg4N2YzYjdlZjE5NDZkMmRiNjU2MzAgbGVnYWN5LXRydW5rCiszMzE0NSBiZGZmOTY1ZDI2MDMyOTlhYzY2MWVjMzM0MzI4ZTgwOWFkNzMxN2RiIGxlZ2FjeS10cnVuaworMzMxNDYgMjNlN2IyNTc3YTQ2ODgwNWJmNjI2MGNiMWZhNjU0NjRiMDg5OWUwZCBsZWdhY3ktdHJ1bmsKKzMzMTQ3IDMxMzNiNTBlOTlmMzI2NWY5OTM1OTQxZTQ0ZDI4YjNhNWNiOWNhZWQgbGVnYWN5LXRydW5rCiszMzE0OCA4N2EyNTNhYWEwZDUyMTM3Y2Q3NTEzNmE2NWM0NzYzMzM3NzBjNDRlIGxlZ2FjeS10cnVuaworMzMxNDkgODFlNzBmMTJkNjJmYzg0Nzc5YjUyZDI1NmMzZDg3YmZiNTg5YTExOSBsZWdhY3ktdHJ1bmsKKzMzMTUwIDEzODZmODZjNTA5NWY0NzU5NDYzNGVhZmExNDgxY2I1MDAxZDdmNTYgbGVnYWN5LXRydW5rCiszMzE1MSA1MTQzY2ZlN2NjNzVjYzA0NGYwOWY1MGRmMGMxOGIyZmQ4Mzk5Mjg0IGxlZ2FjeS10cnVuaworMzMxNTIgNjBkYWJhOTM3NzVjNTIzNjAzNjU5ZDU2NWIzM2JjYjQzNWIxYjZmNSBsZWdhY3ktdHJ1bmsKKzMzMTUzIDk3MThkZjg0OWRhOTIxMDJkYjVkMDY4NGU2OTNmMjZlMjI2MWM3NWEgbGVnYWN5LXRydW5rCiszMzE1NCAwODkwNDY2MDEyNzA2NTkyOWU5YjQyYWIzZDI1Yzg2ZDYwYTMzMDA2IGxlZ2FjeS10cnVuaworMzMxNTUgNTIyMDQ3NDY2MGNlODFkMjY4ODQ4Y2I3OGJlNmQxMmYxODQ4ZmI4NyBsZWdhY3ktdHJ1bmsKKzMzMTU2IGFiYzJhMjBkYzNhMzM0YzJjZjRhODVjMmNhZGRiYTJlZDI3MmY1OWUgbGVnYWN5LXRydW5rCiszMzE1NyA0MGM1ZjFjMDhlYzhhYWIwZDFmOGNhZTA1MjBhZjY4MzE5N2QyNDYxIGxlZ2FjeS10cnVuaworMzMxNTggMTAwNzA4ZWI4YzgyZDJjNzg3YjlkNzVlN2QzYjg5OTQ4YTk0ZGY2MCBsZWdhY3ktdHJ1bmsKKzMzMTU5IDk0ZjkxMDdkOWE2M2E5ZDlhMmU5MjI1NzMzMDA1YWI0NzI4NWE3MjcgbGVnYWN5LXRydW5rCiszMzE2MCA2NTMxYzc2YjYwNGRjYWZlMmMyNTRjYjRjNTVmMThiOTNkYmVkZGI3IGxlZ2FjeS10cnVuaworMzMxNjEgMTQwMmYyNjVlNDhmNjEzYmFmOWViMzc0YzUwNDQwZDAxMGJiMTljZSBsZWdhY3ktdHJ1bmsKKzMzMTYyIGQwZDRkNjk2YWIyNGU4ZDYyODNlOTVjMzJhMTQ3Njc2OWUzNWI5ZDcgbGVnYWN5LXRydW5rCiszMzE2MyBhYTg0ZWRlMWMzNjRlYmRjZjUyZWYzNjU2YmVlMTk0MzkyNGQzMDUyIGxlZ2FjeS10cnVuaworMzMxNjQgNmM2YjMyMWQxZDEwZWZkMWYwNDBkNTE1MWFjZjcwMDM4N2U2ZmViYyBsZWdhY3ktdHJ1bmsKKzMzMTY1IDcxYzA2YmM1YTczZWExYjZlNjUzOTI2ZGIxMjY5NTU3NDQxNDM5NDAgbGVnYWN5LXRydW5rCiszMzE2NiA3ZTMzNjNhNzY2MWQyNTUxY2M2NWU2OGQzZDI0MWJjOTQ5NDM4ODA4IGxlZ2FjeS10cnVuaworMzMxNjcgZDcyYjNmMGE1N2E5ZGQyYzc0MDQ4NGJjZWRlMmE4ZmQ4M2RkYzYwOCByZWxlYXNlMjItbWFpbnQKKzMzMTY4IDVmMDFkNTE1OGQxZjg2ZTIzM2NkYjMwNDljZmFmMzNiM2JiZjRjOWMgcmVsZWFzZTIyLW1haW50CiszMzE2OSBkYjQzMTI5NDc0OTQwZDgwNDc5YmYwMWU5MTFiNzk0OWFkYWJhZTIwIGxlZ2FjeS10cnVuaworMzMxNzAgMTE1MThiNmNlNWVjMDNkMzlmNTFiYzg2NmJjYmZlMTY2YWE0MTQ2ZCBsZWdhY3ktdHJ1bmsKKzMzMTcxIDUzNTU0Njg4ZTVhMjJlOGZhMjUwZWFkNTNjYmJkZjIyZmU5NjQzYjQgbGVnYWN5LXRydW5rCiszMzE3MiAyOWVlZTVjMWRkNDJmYzhhNDEwMzgwMWMyODI1MzBmYWJhMzdlYjc5IGxlZ2FjeS10cnVuaworMzMxNzMgMDFlOTI1MzcxZDdjOTQwODhjYTgxODkyM2UxZDFmZGUwMTA2NGZkYyBsZWdhY3ktdHJ1bmsKKzMzMTc0IGQxYWNmODlkMWM0OWE2ZDYwMTE1ZmVmMzRmYTQ4OGI2MDMwZGJmYWMgbGVnYWN5LXRydW5rCiszMzE3NSA2NDQ0ZWEzZGM4M2M0NGUxNTgyMTg0NzI2OWIxMGY0YmY2NDY1ZGJmIGxlZ2FjeS10cnVuaworMzMxNzYgZTU0ZTJkZTQ2YmMzZDU4NzM3ZjRmNzNiYzkyMTg5ZDUwZjI0MmJlYSBsZWdhY3ktdHJ1bmsKKzMzMTc3IGNhOWUzNTk4Y2NmYjVlYzgxYjNmZGJjOWY5ZjI2NGRhNjMyZTUwMTAgbGVnYWN5LXRydW5rCiszMzE3OCAyMzFhMzUxMGUyNDZmZTBjOTQzZTU2YWIwNGNhZTg4NzY1Zjg2N2YxIGxlZ2FjeS10cnVuaworMzMxNzkgZDc2MWZmNTViM2JlZjQxZmU1MmZhM2U5NWE2N2M4YjE5YzE2ZDgwOCBsZWdhY3ktdHJ1bmsKKzMzMTgwIDk0YWMxZDQyYTQyMDRmMmQwYjg2Y2I0OGE0OGNjMDQ4ODFiMzVhMmEgbGVnYWN5LXRydW5rCiszMzE4MSAwNWZiNTFkMDdhZGFmNWJmMzE0YTg3ODVlYzg1MGEyZTA0MjlmOTg4IGxlZ2FjeS10cnVuaworMzMxODIgYzZlYjU2OWU0Yjc5MzA5Yjg1MGE4YzhiMjUyMGJjOTRlMjA4Y2I2YSBsZWdhY3ktdHJ1bmsKKzMzMTgzIDVkMTFmZGZhN2MwMDg0NzUwMDU0MjFiM2MxZDQ1MGMwMDA0YmI3MmMgbGVnYWN5LXRydW5rCiszMzE4NCBiNzRlMGNjMjFjYjA0NGZhYmNhNTVlMmE4ODVlZDliNGZiZjliZDY4IGxlZ2FjeS10cnVuaworMzMxODUgNzBlNjQ5ZmEzZmNkMTM5MTZhOGFiMjU0Y2VhNjA1Y2FlNzcwZWVmZCBsZWdhY3ktdHJ1bmsKKzMzMTg2IDg3ZjMwZmNmYWQ0ODg4MWEyM2EzN2JjNjFiZjc3MTAzOTc5NTJlNDIgbGVnYWN5LXRydW5rCiszMzE4NyBiMWFhMWQ0MzljYmEzNTVlZWQ5MDJlMWUyZjE2N2QwNDU5MWQ1NTViIGxlZ2FjeS10cnVuaworMzMxODggZmIzMzJhMDk0OWI3NGY1NjMxNWY3NDM2NzM2OTNhNjI3YmJiZjA4ZSByZWxlYXNlMjItbWFpbnQKKzMzMTg5IGY2ZDUwM2RlNDViZGUwZjlmMWE0Mzg4Y2IzODUwMmI2NDc1ZTMwMGQgbGVnYWN5LXRydW5rCiszMzE5MCBmNjdlNGM1YWVhOTM3ZGMzODE0NDA4NDQ4YjU3NmU4M2QyZDM2MDU2IGxlZ2FjeS10cnVuaworMzMxOTEgN2FlZTZlZjU5NmRkYmRlNjM4M2E5NjVkNTE4NjNhNTBlNDllZDQ1YyBsZWdhY3ktdHJ1bmsKKzMzMTkyIGY0OGJiOTRmMzI4OTU4MzI4NzI2ZTgzOGRjYzI0Yjg1NGZmZGM5MWUgbGVnYWN5LXRydW5rCiszMzE5MyBmMTc1Zjc3OWJlODkwYjdmOWYxZDBiMDhhNTEwYjc5YzE1YjYwMTc0IGxlZ2FjeS10cnVuaworMzMxOTQgZWE3N2Q0M2UyMDNkMWY1NmY1MGMxNWI5NGVmZTExMjIzN2ZjOTI5YyBsZWdhY3ktdHJ1bmsKKzMzMTk1IDJmYmQyNTZhMWRiMjU2MjZiYmZmNDFkYTZjOTBmODY5ODBjZTBiMTAgbGVnYWN5LXRydW5rCiszMzE5NiAwYjUzMjJiODUzZDJmNzUxYjYwMzEwYmQ2YjIxMDUwZmE0ZGQzOGViIGxlZ2FjeS10cnVuaworMzMxOTcgOGIwMzAwZTdmMWRjYjE5OTAxOWM2OWYzOGIwZjA2ZGJkMTFkZDJlZCByZWxlYXNlMjItbWFpbnQKKzMzMTk4IGM2NDY4N2NkNWIzNzFkMjMyMzgzOTIzZjdiMDhmNTU0NjhhM2Y2ZDcgbGVnYWN5LXRydW5rCiszMzE5OSAzNGMwNDBkZGY5ZThlYWQyNDQ1YTIxZDdiMmJkMGE5MTVmNTdlODRkIGxlZ2FjeS10cnVuaworMzMyMDAgY2Q2MmIzMzU5ZTk1NjBlNWY4NzQ1MTU4NDI2Y2MwZTNkZDQ4M2IzOCBsZWdhY3ktdHJ1bmsKKzMzMjAxIGRjNmMyMWRjODY4NGUwNjM5N2NjMDE2ZDIyYzcwNTdlODQ5YWY4ZjcgbGVnYWN5LXRydW5rCiszMzIwMiBmYWZiNmViMGY5N2U4ZTRjNjk0MjM1MzMwZTNiZGViZjA5N2VhNjM1IGxlZ2FjeS10cnVuaworMzMyMDMgYzNiYzdlZDlkMzE1OTllMGUwZjliZDM4ODRlNmU2NGJkZGVjYTFiNiBsZWdhY3ktdHJ1bmsKKzMzMjA0IDJkNDAyN2VmYmMxMmUyMmZkYTI3ODVlYWMzY2IzZTgwNjBhZjExYWEgbGVnYWN5LXRydW5rCiszMzIwNSA2OWJjN2NhNWNjMWE4ZjUwMWY5MzY4MmEwMGY5MDhjMjFiZTU2OWMxIGxlZ2FjeS10cnVuaworMzMyMDYgZTIyODMzNmFhZjA4ZDdjMzU3YTNkMDY2ZjhhYTJjOTcwYWJmNTZhOCByZWxlYXNlMjItbWFpbnQKKzMzMjA3IDkxOTcyODVhMzkzMzVlMDRiMmU0NDRjZTQ5YjMyOGEzZjNiNDA0ZjAgbGVnYWN5LXRydW5rCiszMzIwOCAzMjU5MmYxYTZmMjJiNDk5YTIxMmM2ODY4ZmMzOTlmODgwNjU0Njg5IGxlZ2FjeS10cnVuaworMzMyMDkgNmZlMDIzNjkwZDdmMTBkM2NjNTA2YmJhNWYxNmJiMzc3MDA4NTllMCBsZWdhY3ktdHJ1bmsKKzMzMjEwIDk0NGY2MDJiNzhmZTQ4ODlhMTI0YzJhZjNiZWMwODlkOWUwMjcyMGMgbGVnYWN5LXRydW5rCiszMzIxMSA4NzgwYTQ5ZDhlZjJjMTQzZmI2NTgxMmM1MTQzMTM1ZmM1MjY1ZDIxIGxlZ2FjeS10cnVuaworMzMyMTIgN2M3ZjQwNDViYTM2NzFhMDIwOTA2NGRmNjllNWZmMjU1ZjRmMjdlZCBsZWdhY3ktdHJ1bmsKKzMzMjEzIDRkMWZhOWM1Y2IyY2YyNWQ5MGNjYTcxNjIzYmZiNzdlOTdjNmEwNjUgbGVnYWN5LXRydW5rCiszMzIxNCBlOTczZGVkOGE5MmE4ODI4NWUwMjkxMDAyYmJmMThiMmM2OGVjNTViIHJlbGVhc2UyMi1tYWludAorMzMyMTUgNTIwMDI4Nzg4OWJkMmE0MTA0ZWUzOGIyN2QxZDUzY2QxMzEyOGViNCBsZWdhY3ktdHJ1bmsKKzMzMjE2IDZhNWU5NWM2N2QzMjFjMTA1ODlkOTNkOWUyZDAyNjQ4NjZlNDI4NTggbGVnYWN5LXRydW5rCiszMzIxNyAxYTQ5ODY5MjIzNTc3MjAzZTI0MzViZGI0ZjBkMDcwMjZhZGMxNjgwIHJlbGVhc2UyMi1tYWludAorMzMyMTggNGI4NmRjYWMyMjAxMDc2ZDYzOTZlZTBmMjBmMWE4MDE0NWI0MzkwMSByZWxlYXNlMjItbWFpbnQKKzMzMjE5IGRlM2Q0OWUwZjY0OTEzYzAzODkxYTBlMWI2N2FiNDFkNTE0ZTIxYTggbGVnYWN5LXRydW5rCiszMzIyMCA0MjcyMzIyYjkyZTVlOWU4MjU2NmQyMjJkYzY2ODU5YTYwMmJjODY3IGxlZ2FjeS10cnVuaworMzMyMjEgZTVkM2IxZDg5YzQwMTgwMGQwNGQ3YWQ0MDVmY2ZhMjlmZjNhYWEyNyBsZWdhY3ktdHJ1bmsKKzMzMjIyIDk1OGI0MGQ4MGIzMzE4MzBkMDMzYmFjYzJhYTAwYTBjZGU4NDM3YzAgbGVnYWN5LXRydW5rCiszMzIyMyBhMjk2MjE0ZDJlYmJhMzE3MGQxOTE4MDhjYTgzZWZjZTExMzM1ZDk3IGxlZ2FjeS10cnVuaworMzMyMjQgNzFkM2RhMTE1ODM4ZjMzMWFlMGY0YjU4ZGM4Yjk3OWY5NzBkY2NiMSBsZWdhY3ktdHJ1bmsKKzMzMjI1IDQ0OGMxNDQxOTY0ZmQ2MGU5YmRjNTdkODg5NGRjMTNkNzE1YjY1YTYgbGVnYWN5LXRydW5rCiszMzIyNiA3NTY0NjgzMDdlNjE3OWZlODRmMWQ4ZDM0NTcwOWQyNWRiNTYxMmZkIGxlZ2FjeS10cnVuaworMzMyMjcgOTEyNTlhZTM1ZTI5OTQ2NzIzOTkxY2E2OTg2YjMzZDgxOTk0NzQyZSBsZWdhY3ktdHJ1bmsKKzMzMjI4IDhlOTJjYzA0YjY0YjAwMDRjMjJhZjc0MDI1YWJiMWQ0ODk4MjJiNzcgbGVnYWN5LXRydW5rCiszMzIyOSBkMTVlMmI3ZDk5MWNjOTBiMTU1NGJjODY0ZGIyN2I3ZjEzZDljZjc4IGxlZ2FjeS10cnVuaworMzMyMzAgZWQ0NWE5OTUxMzEyNjhiMjRjZTBjNzE3Y2QzOTQ3ZGZjYmQ0OGQ0OCBsZWdhY3ktdHJ1bmsKKzMzMjMxIGFkMDJhMzhhOTZlYTllZGVhMWUyNzJmZGQzN2E0NmNlYzczMzcxODYgbGVnYWN5LXRydW5rCiszMzIzMiBmMjZkMTMyMzZjZTg0YTgwOWVjMjdiNjUxY2Y3MTAzYzJjZTE2YzU4IGxlZ2FjeS10cnVuaworMzMyMzMgMWFhOTA1N2MzOGI0ZWQ3YThiNTI1YTFjYWEwMTEzYWNjNzIxNmIxYiBsZWdhY3ktdHJ1bmsKKzMzMjM0IGVlZDc0MzBiN2FmMTRhN2Y1OWUzYzVlNTQ5ODRkN2FiMzgwMTY4YjkgbGVnYWN5LXRydW5rCiszMzIzNSA1Yzg3MzdiZDRjZTZkNGZiYTUyNTEzZGU2ZjVmYjNjZDFhMTI0ZGFiIGxlZ2FjeS10cnVuaworMzMyMzYgZTJmNzgzNDg4MDI0OGQ0YzMyNWZiYzM4OWRlODlkYjhlMjgxOWViMCBsZWdhY3ktdHJ1bmsKKzMzMjM3IGNkYzc1ZGUyZjVjMWE2NGYzYWRmZjBiNDdhM2YwODJkODBiY2Y0NmIgbGVnYWN5LXRydW5rCiszMzIzOCBiOGI1N2JkYmZjZWRmNGM4ZjE0NjA0MDI0MzE1ZjA5OTBjOTQ2NDJjIGxlZ2FjeS10cnVuaworMzMyMzkgZjkzYjkxOWU1NzI5MGVkMjZkNTI3MjFhMmMyZjZlMWRjNDg5YzQyMSBsZWdhY3ktdHJ1bmsKKzMzMjQwIDE2OWUwMWVjMzU5NjU5ZmNlM2E2M2E0MTBlNDQwYTY1ZTM3ZDQ0YmUgcmVsZWFzZTIyLW1haW50CiszMzI0MSA1NjIzZjllMmI1NTVmMGU5NzAwNmNhOGEwYzIxZWNkNDQ2NmUyNjA5IHJlbGVhc2UyMi1tYWludAorMzMyNDIgNjBjZTczZWE5YzkyZjM0MmY1NTJmNjc1NWVjZTE0YWQwZWM2YTFkYiBsZWdhY3ktdHJ1bmsKKzMzMjQzIGE5YTkzZmM1MGI4ZDhhZTc4NzhiNjFjNWRkZjEwNWEyZmZjNDA2MzYgbGVnYWN5LXRydW5rCiszMzI0NCAzMTJmYjc2YjczY2M3Yzc0ZDE5MTZkZmE3MjNlNWUzNjI1NGYyY2YxIGxlZ2FjeS10cnVuaworMzMyNDUgZWUxNGU1YjA2ZWQxMzZiMTIzODNkYWI2MWQxNjI5ZWJiYWM3Nzc5YyBsZWdhY3ktdHJ1bmsKKzMzMjQ2IDdmZTRlOWYxNjYzNDdiNjQxZmE0ZGVkNmQzY2RkNGQ2Y2QyMTQ1ZjggbGVnYWN5LXRydW5rCiszMzI0NyBkYTAyNDhmY2ZjNTI1MWJjZDcxMGNhYjE1MTdkMjA3OGMyMDQ4NTViIGxlZ2FjeS10cnVuaworMzMyNDggOWRmMWYzZDg5ZTYwMGM0MTg3ZTMzZDk1MTRiNjM4YzExNDEyMjMzZiBsZWdhY3ktdHJ1bmsKKzMzMjQ5IDhiMTYzMzcwMzcyZGRhZDBlMDM0MDY0ODhkMDViMGM1OTkxYmE2YzggbGVnYWN5LXRydW5rCiszMzI1MCA3Zjc5ZWFkNzEyZjU4ZDQ3MWRmN2E0NDMwNjczNTA5NzEyMzQzNGY4IGxlZ2FjeS10cnVuaworMzMyNTEgOTk2NWViY2RkMTcyZjkyZjQxMDhmMzUzMGE1YTU5MGY0ZDhhY2E2MCBsZWdhY3ktdHJ1bmsKKzMzMjUyIGI3OGQ2M2RhZTAzMDc2ZTljZGE3ZDVmN2Y2MzRhZDk1M2VkMGNmODIgbGVnYWN5LXRydW5rCiszMzI1MyA4ODA3ZTkwMWM1MjZjYjQ0YmI5YTY2MGUzNjk3OGFjZDJjNzYzMTdhIGxlZ2FjeS10cnVuaworMzMyNTQgNGEzZWYzODA3OGU1NTE1N2QzN2VkNGI5MjgwODU0ODQ5MDdmMTZhNSBsZWdhY3ktdHJ1bmsKKzMzMjU1IDlhMzA0NGU1NzgxZWFhYzU4ODRjNmJjY2JlMThlNjIyYTAzZmE5MzYgbGVnYWN5LXRydW5rCiszMzI1NiBhNDBjZjFkMGE4ODdmZGZiN2M2ZTMyOWIzZDcxMmI3ZmZmYzRiNGZlIGxlZ2FjeS10cnVuaworMzMyNTcgZWFhMDYyZmRkNDZhYjAyNjU2MTZjODQwNTRkODM5YjJhMWVlOGJiNiBsZWdhY3ktdHJ1bmsKKzMzMjU4IDg5MTFjYTg4OTgxYWY4NjJlNjNlNGFhYWU5Y2IyNGNhN2M1YjdhOGUgbGVnYWN5LXRydW5rCiszMzI1OSBiMzVmZjliNTkxNDkzMWMzODg4MGQ5MjcwOWY0ZTY5NTIyZmVjNDNhIGxlZ2FjeS10cnVuaworMzMyNjAgNDY2YjU3OWUwMDg4MjI2MmJmYjEyYTJhZTMxMTU4YTMxOWJhNGU3OCBsZWdhY3ktdHJ1bmsKKzMzMjYxIDIwMWNlYWY5NTk3NTFmNDQyYTNhNjA5Yjc2NWJmZDJmZmMyMDVlODcgbGVnYWN5LXRydW5rCiszMzI2MiAyYjEzYjU4YWUzYThlNzYzN2FmODQzY2NmNzI0ODU1MDkyNjY5ZTU3IGxlZ2FjeS10cnVuaworMzMyNjMgZWEzODRiMWQwZDEzZGJiNjc3Y2MxOTZmNDYyMTRjMDFlMjU4MjM5ZSBsZWdhY3ktdHJ1bmsKKzMzMjY0IDdiNTE5ZWE3NTAxYWFiZjI4YWIzYTkxZTgxNTgxZmU0MjljNTE5NWMgbGVnYWN5LXRydW5rCiszMzI2NSBjYWE4YzEyMGUyY2IyYjI5NmQ2MDdjZmUzZGJkMDljOTkzZGM4OGJjIGxlZ2FjeS10cnVuaworMzMyNjYgZmVhOGRlZTI3MzMyZmZjZjUyZjU5NWUxZmU5ZDg0MTI2MjNiM2I3NiBsZWdhY3ktdHJ1bmsKKzMzMjY3IDhhMjkxNmM0MzNkOTRmZGIyYzk0NzczNjk1ZDVhYTQ5ODYxYTQxMTggbGVnYWN5LXRydW5rCiszMzI2OCBlNDMxMjZjNDcwYTc2ZWE5ZmJkM2I5MmU3ZThiNzhhZjYzMWZmNzk1IGxlZ2FjeS10cnVuaworMzMyNjkgMmQxNmMzZWZlMTQ3ZTdiZDQ0YjdkNzhmNGZmY2QzZjRmNWE5ODZhNyBsZWdhY3ktdHJ1bmsKKzMzMjcwIDYwYjUzZGIxNGFhM2NjNDFhMmNlZWM4NDdjODUwZmJmNWY4YzJkNDcgbGVnYWN5LXRydW5rCiszMzI3MSBiZTYyMDAwN2VjMWY1MjY1MjAxODYwMWJmYmUyZjU4MDU0MTU2YTY1IGxlZ2FjeS10cnVuaworMzMyNzIgMDE2OWFjZGYyYjViYzI2OTdlMTdhZTAyZDI2NTZmY2RjODU2M2FlZCBsZWdhY3ktdHJ1bmsKKzMzMjczIGNkM2Y5YjE3MGMzN2ZjYmMxOTJhN2MwZTUwOThlZWI2MjJkZWEwM2MgcmVsZWFzZTIyLW1haW50CiszMzI3NCBjYWM4NTUzODdiNTY3YjY5NjcwYWM4ZGJlNjg5NzYzYjhmNjMwZWJiIGxlZ2FjeS10cnVuaworMzMyNzUgODYzNDJmYTg5MjBkYWZlMzBiZjFkM2Y5OTViZDYxNDA3OTFkZWU2MSBsZWdhY3ktdHJ1bmsKKzMzMjc2IDBiZGI0YWNlZDZlMjBkODY2Y2MzNWY4N2Y3Y2NjODQ1MTUyMWQ1OWMgbGVnYWN5LXRydW5rCiszMzI3NyBjZDA5M2E5OTIzOGQ3MjM2NDdkOTJlMjRjN2Q1NTlmMjM2YTNiNDhhIHJlbGVhc2UyMi1tYWludAorMzMyNzggNDQ4MWM1YmRhMTk2NmFkODYwYTE2OWUzMDAxY2U2OTcwMDk5YzQ2OSBsZWdhY3ktdHJ1bmsKKzMzMjc5IDFiYTkwZDUxNDk3YmE2ODU3MDBkOGYwMDRkZmVmMDlmNDQxZGIwMWUgcmVsZWFzZTIyLW1haW50CiszMzI4MCBiYWRjZDE1OGQ4MWNhMjNmNjE3OWE0OTZjZDExNzNlMjEyZWRkMWNlIGxlZ2FjeS10cnVuaworMzMyODEgNTgyNTFlMGE4Yjc4N2JjZTNiMzRmNWY1ZmJjMDliYjM4NGRmMDBlYiBsZWdhY3ktdHJ1bmsKKzMzMjgyIGY4MDY5ZjdlZGQ0YTI5YmY2YzUwNGNkZmRjNGE5NTQ5MDE0ZmJiNTUgbGVnYWN5LXRydW5rCiszMzI4MyA3N2VkYTBmYjBlMTQ5ZDQ3MjAwZTJiODQ4MWU5OGJiMmQxYTNmNjg2IGxlZ2FjeS10cnVuaworMzMyODQgZGVkOWFiY2I5MTc0YWE3NzRkMmE3NTUyZDQxZWNkMWU1OTlhMzIwMiBsZWdhY3ktdHJ1bmsKKzMzMjg1IDdkMzA1ODVhNTkzNDA1NTE1ZjUxNGM0ODM1ZTRlZTg2OGRhZDE5MDAgcmVsZWFzZTIyLW1haW50CiszMzI4NiA4NTNlNmEyYjkwNjhlZTY0MzIxNDMxNzExMzA0ZDVmZmFlOWQzYjFhIGxlZ2FjeS10cnVuaworMzMyODcgYTQ2NDAyMGYxNWQ2NzUzODg3ZjYyYTc0YjFjMDk5ZDY3ODk4NDBkZiBsZWdhY3ktdHJ1bmsKKzMzMjg4IDdkNDE3ODVmYjYwYzZlNDgyN2VkNmJhNWNmZTRiNWQ3N2NlNDJiNWMgbGVnYWN5LXRydW5rCiszMzI4OSBiYTEyZDJiNGIzMWRkYmI2YWQ0OTIzMjRmYmExODVlODZiMWZmZThlIGxlZ2FjeS10cnVuaworMzMyOTAgZTFmYTA3YmY4NTQ4ODg1YjA5Mjk5NDRlZTBjZGRkNjk0M2ZkODEzYiBsZWdhY3ktdHJ1bmsKKzMzMjkxIGJjMTIxNWY3ZGJhMzg2YjVkYmY0ZGYxYTIwOTliM2E3NDQxODBiM2UgbGVnYWN5LXRydW5rCiszMzI5MiBhNGQ2YmM3MWYwOTFjMjdjOWU0YWU5MmI3MWJmZjljZWY3MGRlMzhjIGxlZ2FjeS10cnVuaworMzMyOTMgNDEwYjNjMjIyMjExNGM5ODViNzNhYWUxMjYzYmZjMDg3ZGM0NDI4YSBsZWdhY3ktdHJ1bmsKKzMzMjk0IGY4ODNkYjI1ZDM0NDRiZGVhYTMzZWMwMzlkZmIwZTljMDJiMzA3YmIgbGVnYWN5LXRydW5rCiszMzI5NSA2NzZhYTYyODMwZDBlOTk1MmJhZDBlYTcxNTE5OTMwYTMxZTc4NDIyIGxlZ2FjeS10cnVuaworMzMyOTYgNTMwNGJmZjI1ZTE4MzRhNjI3NjlmY2FmNzdjMWJhYzUzYmZjMTEwYSBsZWdhY3ktdHJ1bmsKKzMzMjk3IDZhYTk3MmEyMWFjNGMxNzJkNjUyZDU2ZjhjZWQ5NjQ3Y2IyZjlmYTggbGVnYWN5LXRydW5rCiszMzI5OCAxZWNkYjk0YTE4NTIyZjg5ZWY3Y2ExMDFlNjc4MTE5ZTIyYzI2ZDdhIGxlZ2FjeS10cnVuaworMzMyOTkgOWRlODJkYmMzYmQwMmI3YmJlODdiOTFmMzM4YjEwNmY2NGY1ZGE0NiBsZWdhY3ktdHJ1bmsKKzMzMzAwIDk3M2IxZTJlMjcyNjM4MTVkMjhiZGU4MGVjMDBmOGE4YmEzZDg1NjggbGVnYWN5LXRydW5rCiszMzMwMSA1ZDdlNmU4MjgyMTg3ZjVkMzQxN2EzYzI0YzFkZTg3ZmM0NGUyMzU4IGxlZ2FjeS10cnVuaworMzMzMDIgN2Q1YTljMWEwMTk3MDg0NjBjMWE2ZWZkM2VlNmY0NWFlNTA2MWIzYyBsZWdhY3ktdHJ1bmsKKzMzMzAzIGFkMmRjYTVjZmU4MWE3NzA3ZTg2MDgxMDllOGEzNmMzNzc0ZjQyZDkgbGVnYWN5LXRydW5rCiszMzMwNCA0OTA5YWE2NDQwNWZiMWMyMDZmMGQ3NGU1ZDIyMjcyODYwZmQ1NzAyIGxlZ2FjeS10cnVuaworMzMzMDUgNThmMTQxZDFjY2NhMjk5NWMxMzkyMjE4YmZkZDQ3YjU3NzY5ODgyZiBsZWdhY3ktdHJ1bmsKKzMzMzA2IGZhOTcyOTM1MzNhOTFmNGRjNjkyODZiZGE2OTM1OGRmZWUxN2QzMTkgbGVnYWN5LXRydW5rCiszMzMwNyBhNjNlYTdjNDc1Y2M1ZTI4MDFkMDFmOGRiZTdlZGY4OWRmMWViZTVlIGxlZ2FjeS10cnVuaworMzMzMDggNjFmOThlZDRiNmI1OGQzYmZjYzI2Zjg0ZDg4N2JmMDY1ZjEzNTA5OCBsZWdhY3ktdHJ1bmsKKzMzMzA5IDA1MDlhNzY1MjE2N2Y0OGFmM2ZlYTE1ZGQzZDU4ZmM2NDVjNDFkNjQgbGVnYWN5LXRydW5rCiszMzMxMCBkNjY4YTgzMzY3NzQ3ODFjZDdmYTA2ZmU5ZDkyZDM5Y2NjZDE1NGNjIGxlZ2FjeS10cnVuaworMzMzMTEgNDYyZGU5MzMzMjUxY2E4MDE0MDQ3MTZiZDY0NDEwMjkyZmQ1YzcwYyBsZWdhY3ktdHJ1bmsKKzMzMzEyIDhiZDI1ODBlMDE1NTUyMWRkZTM0NzYzMTNjMTYyOTk4YTJjNWJjOWIgbGVnYWN5LXRydW5rCiszMzMxMyAzODgxODgzYjk0MGVjMGU0MzBiNDg2MzQyMTE1YWRhZjU2NjE0YmIxIGxlZ2FjeS10cnVuaworMzMzMTQgMGEzNzUxZGY0MTk1MmI1NGY5MDY0OWM5MDE2ODZmZDk4YWUyZDljMiBsZWdhY3ktdHJ1bmsKKzMzMzE1IDYwNDU0MmU1OTFmYTY4MWM2NDg4NzliYjZjNzQ2ZjZmZTc3Y2QwZmIgbGVnYWN5LXRydW5rCiszMzMxNiAxNmVlZDJlOThmZDkzNTQ2OGRhZDJjYTYxOGM5ZDAyMjY2MGE1MzM5IGxlZ2FjeS10cnVuaworMzMzMTcgNjZiNmQxY2U0MmZlNjFlMjAzOTQ5MzZiYWVjOWM3YmY5ZGEwZDc2NSBsZWdhY3ktdHJ1bmsKKzMzMzE4IGY5YjhkNGJmMDhmYjlhZDhhOTg2MTgwZTExMDg4MmRiNGYzN2M3ZmQgbGVnYWN5LXRydW5rCiszMzMxOSA1ODI4ODdiYTdhNjhkZDdjZDQyNmZjYzk4ZDg3ZDdiYTlmZWU4NDk4IGxlZ2FjeS10cnVuaworMzMzMjAgNWIxMDVhOTUwMzM0OGZiMmVkYWViNWI0MDIyZDBjNzMyYzk2YWM1MCBsZWdhY3ktdHJ1bmsKKzMzMzIxIDk1NTFjZGFmNmU3ZTFhODg0MjIzYWJkNmZmMzU3ZTE3NmUwMTE5NTEgbGVnYWN5LXRydW5rCiszMzMyMiA2OTYxOTU0MmE5MTZlMzQzZDJiMzcwMTQxZjAyNzAyYzE0Nzk4MWE0IGxlZ2FjeS10cnVuaworMzMzMjMgOWE0YmNmZGRiZmExMmYxNTQ1M2JjMmI3NWY5NmE1Y2M1ZGZmMDZjMSBsZWdhY3ktdHJ1bmsKKzMzMzI0IDc5MzAzZGU5YTA1YTZlZjNjODkzMmU2ZTY1MjExOGRjZDdmYjNjYzAgbGVnYWN5LXRydW5rCiszMzMyNSAxMzA4ZDdlYzk5NTM1MDk5ZTNlYmZmZjVlMDFkNDA2Njg4MGEwOWU2IGxlZ2FjeS10cnVuaworMzMzMjYgY2I5M2I4NjI1MzJmNDkwMzFjMmQyNjI3YTU1MDhhZDMwM2U2NWM3MCBsZWdhY3ktdHJ1bmsKKzMzMzI3IDNjYjE4MjEyNTIxZDM0ODliMDVmYzVkYTg0MTBmYTUyNzA2ZGUwYjAgbGVnYWN5LXRydW5rCiszMzMyOCBkNzYyNmI4MGRlOTUxNjk0YWY2NDRlZWFmZjIxMzhlYjkwYWMyMmFhIGxlZ2FjeS10cnVuaworMzMzMjkgNzEwYzA5ZjRjMDVhMjNmNGUzMjRhNmE3Nzc4YmIyNGY1OTVkM2Q2OCBsZWdhY3ktdHJ1bmsKKzMzMzMwIGJhNzVhZjdhYjEzNmYzMWE5ZDhiYzhkYmRmNmUyYTRmNTMyZjA3ZjEgbGVnYWN5LXRydW5rCiszMzMzMSAzNmExNzkwNGEzZWQwMDYwZTRhMWNjOTdmZDc4YWU4OGY4ZDk1MDc2IGxlZ2FjeS10cnVuaworMzMzMzIgOTZlY2FhYjRjYmE2ODEzOGM1YzU3ODkwNWU5NzU2MWE5ZDFlOGNjMCBsZWdhY3ktdHJ1bmsKKzMzMzMzIGJlOTlmNTk3MDY4ODkwY2JmY2UyN2MwM2U5MmQ3NGNlMGQ0NTYwNDAgcmVsZWFzZTIyLW1haW50CiszMzMzNCA2NmRjMDUwMTA0N2Q0YzI2MDk3YWM2NmJiYzg5NWE1OGUwNGNlZDE5IGxlZ2FjeS10cnVuaworMzMzMzUgNGZmODNjMGI0NWU5MjUyMmIxOGNkNTlmZDUwMjIyMTU3Nzc1ZmQ4OCBsZWdhY3ktdHJ1bmsKKzMzMzM2IDUxMzk3ZWRkMmJkNGQ1ZDM2YTg1NzMyNTk4MjNhYzU1NzhlY2ViMTMgbGVnYWN5LXRydW5rCiszMzMzNyBmMDgxMTQ3YzBjOGFmYWI1NDg0ZGQzOGNlNzdmNTU4YTY4YjI1Y2U1IGxlZ2FjeS10cnVuaworMzMzMzggMjY5MmIxYzkyZThkOTFhMzYyYzUyMDljMmU0MTdmOTMyMzI1MDc0MyBsZWdhY3ktdHJ1bmsKKzMzMzM5IDA1MmJmY2JhYmI3YjlkOTJmMWFjOTZjZTM1ZjJkN2FiN2Y2NGQ3OTUgbGVnYWN5LXRydW5rCiszMzM0MCAzNjQwMjdhODE1YjhjZjI1MzFlMjVjMjkxODc1MTE0ZDlhYWIzMWJiIGxlZ2FjeS10cnVuaworMzMzNDEgMjgwZmJlNWY0ZTE2ZWNjNmNlYjY1M2JlZGE1NWNmZmJiZDI2N2RmNiBsZWdhY3ktdHJ1bmsKKzMzMzQyIGQwZjE1OTc3ZjM3ZjQ3NTJjNWE4NzYxYzQ2OTk2NmIzZDJhOTM4MGIgbGVnYWN5LXRydW5rCiszMzM0MyA0ZTFhNDdmNTIwNGNiZTQxOTg2NTRlMzM1MTU1MmM2OGE5MGFiMzBhIGxlZ2FjeS10cnVuaworMzMzNDQgYzE0OWRkNGNmZDY2ZGYxYWYxYTc5MzMwMTE4ZGJhYWQ5OGI5NTYxOCBsZWdhY3ktdHJ1bmsKKzMzMzQ1IDkyMDc3NzY0MGQyODk4ZDc3MGQ5N2NjN2ZmYWJmMzM4MTNjOGIxMzkgbGVnYWN5LXRydW5rCiszMzM0NiBkMzg4MGMyMzc2MjdmYWM1YzU3ZTRkNTc3NGJhZDgwMWYwYjhlYjllIGxlZ2FjeS10cnVuaworMzMzNDcgNmQ5ZWQ1NGE0ODIxOTBjNzM1MmJjMGQxY2UxOTYwMzNiYmY1M2NhOCBsZWdhY3ktdHJ1bmsKKzMzMzQ4IGViMGI2N2UzYzA0ZWM1NjdhMjlhN2U3NDE1NzE0Nzc4YTNkOWU5YWIgbGVnYWN5LXRydW5rCiszMzM0OSAzNzEwOTJjZTVjMmJjMzNjZDVmODMwOTdiOGM5NGRmM2QyN2ZkNDM0IGxlZ2FjeS10cnVuaworMzMzNTAgYzViYjMxZTQ1YzY2ODc2YjAwODQ1NjMzOGE1YjE3NTIxOTVlNDAxZSBsZWdhY3ktdHJ1bmsKKzMzMzUxIDlmZTY3ZjdmMzQ1OWFiNTY3OThhNWJlYTdlNGI3YTBhMWM3OWQ1ODEgbGVnYWN5LXRydW5rCiszMzM1MiA3YTI3NjZjOWE3YjU4Yzg3NjhmM2I0OTI5Nzc0MTgwMWE3NDE1OTg2IHIyM2IyLWJyYW5jaAorMzMzNTQgZjRlMmU1YTVlYzYyMmIxMTdiOGI2YzhiMTY5NDcwODc3NjZhNzUzYSBsZWdhY3ktdHJ1bmsKKzMzMzU1IDI1YjlmZDZkOGUzMDBiNDA0NTUyOTVhYjFmNmNkODQ5MGMzMWE1YjMgcjIzYjItYnJhbmNoCiszMzM1NiA3MmRjYzYzZjRkZWE2YjZmMGUxZjU1NWQ2ZmIzMmRmMWJhNThjNDk3IGxlZ2FjeS10cnVuaworMzMzNTcgODQyZDllMzBkYjljMzcyNmYwOGM0MzlhMGI3YzQ2NmQ3ZTE1NjZmNiByMjNiMi1icmFuY2gKKzMzMzU4IGVmN2ExZDI4NTc3MTQ5NDdiNjU0M2I2YjI1NWRmZDdiYmJjOGRlNTIgcjIzYjItYnJhbmNoCiszMzM1OSBmNGYxMWVkM2FlNDQwOWU3NmJmZDYyMDRlYWZmMTJiOWUzOTU0ODQ1IHIyM2IyLWJyYW5jaAorMzMzNTkgZGMxYjFjN2E2YjllNjRmN2EyMTFlYTllOGE3ZGE0ODNjMmJiYTE2NyByMjNiMi1icmFuY2gKKzMzMzYxIDUzN2M4YjFhZWY3ZmFjODg2NmU2ZGJiYmU0M2RjYjI3MzM2ZjQyZDIgbGVnYWN5LXRydW5rCiszMzM2MiBjNGY5ZmYyOTEyMjliYzg4NDZiMTVjNjY0MjYzOTRkYjQ1ZDJkMTljIGxlZ2FjeS10cnVuaworMzMzNjMgZDcxNjRmYmVjN2NlMTQwMzkxYmJhNjhlZmMwMjg5NjMyZTA1OTdiZiBsZWdhY3ktdHJ1bmsKKzMzMzY0IDI2YmE3MWFhNWIyMTU1NTZhNzNmNTZiNWFmYzZiZTdhYjhiMWQ4NTkgbGVnYWN5LXRydW5rCiszMzM2NSBkMGRjOTU2NDY3YmYxYjZjYzZmOTRiMGUwOTBhNmE4YjE0NDdlOTMyIGxlZ2FjeS10cnVuaworMzMzNjYgM2VkMmM5YTc2OTY1NjgzMzUyZWVlZDE2NmZlNjBmMTJmOTUzODI5ZCBsZWdhY3ktdHJ1bmsKKzMzMzY3IDFkNzYzODYyZDFhMWQ3MDJkOTAxMzYyZDc5ZDdmMTBjNzcxZWJkYzkgbGVnYWN5LXRydW5rCiszMzM2OCBmMWMyNzlkNzAwYTZkNmYwY2ZlNzYxMzhmMzQ2MDY5OTBjMmVmOGM0IGxlZ2FjeS10cnVuaworMzMzNjkgOGRiYzRlYzU3MjBkYmQ1ZjNkOTljNWE1NjQ2YmFjZmM0Yjc3ZTYwZiBsZWdhY3ktdHJ1bmsKKzMzMzcwIDY0ODNlZWFlYWQ4MmMwZWJjZmUyNmRiNTYyNDhkNzQwMzcwNTQzNTAgbGVnYWN5LXRydW5rCiszMzM3MSA3YjZmYTdiYjI0ZjA2NDY4NGYzODA1MzBkNTQ0NmVjN2JkNDQ1MThhIGxlZ2FjeS10cnVuaworMzMzNzIgOGZmMDQwZTlkNTY2OTUxMmEyYzdlMjk3NzVmMWQ5N2FjNGI1MTAyZiByZWxlYXNlMjItbWFpbnQKKzMzMzczIGQ2Nzc0MjRjOWNhNzEwNTkzMTcyNGEyN2U3NzczZTYwMzcxMDlhNzMgbGVnYWN5LXRydW5rCiszMzM3NCA4OTFlNTUwMmVjOWUzYjExOGRiODIyZWU2ODFiZDM4MGVhMmIzMTE3IGxlZ2FjeS10cnVuaworMzMzNzUgMTUzNjk0MWI1NDdmMDZkM2M4YjI3ZTdkZTg3MWJjNWY5NjhiZjVhNCBsZWdhY3ktdHJ1bmsKKzMzMzc2IGE0ZmVhZDBlMjRmOGFlZmNiYjk0NDdjMWQzZmUxOWNkNzlmZjE4ZGQgbGVnYWN5LXRydW5rCiszMzM3NyA3NjJlMmEyOTdhYjk3YTIxYmQ3ZTViNjBkZWQ3M2MwODUwYzE5NDA0IGxlZ2FjeS10cnVuaworMzMzNzggZTM4MTY0YWE1YmU1MTNiN2RiOGIxOGNiNzMyZWZjMWJiNzM2OTNhMyBsZWdhY3ktdHJ1bmsKKzMzMzc5IDFmMzU0N2Q0OTM5ZmRjODZlNzJhODI4ZTI1M2I2NTFhOWRmYTYzOTYgcmVsZWFzZTIyLW1haW50CiszMzM4MCA0ZDI2NTQ3ZWJmYzM4ODRjNjM0YjJjOTdhNGM1N2RhODlmNTg3YWNhIGxlZ2FjeS10cnVuaworMzMzODEgZDhkMTk3NTUxYTFlZGJlZWZlYWUyZDhlNWE0MzNmMjEzODQ4YjAyMSBhc3QtYnJhbmNoCiszMzM4MiBiNzUyOGRhZTc2NTY3YjFmNWYxMTZmYTY5ZGY2MjEwNjZhMzg0MjAzIGFzdC1icmFuY2gKKzMzMzgzIDU4MTMyYzgxM2Q3YmU5NDVlYTc2ZDhhZjhhN2U4OTIxOGNiNTE4ZjMgbGVnYWN5LXRydW5rCiszMzM4NCA4ZWQyZWQ3Nzg2OTQxNjUyZTI4YzQ3MTU4NWYzOGQ4YjU4OGUzZmUwIGxlZ2FjeS10cnVuaworMzMzODUgMjkyZTg0NDY2ZTc4MTk1ZDRmNTYzN2M3M2ZiMmY1ZTM3NDM1N2ZhNyBsZWdhY3ktdHJ1bmsKKzMzMzg2IGJmMDYzNGNjMGYxNzUwOGZlOGNjN2JlYzc5ZGZhOTg5M2YwYmUzYzUgbGVnYWN5LXRydW5rCiszMzM4NyBlOTUzMWVlNWYxODg5Zjk4ZDE1NDIyOGFiMWJlMmVmY2E4Y2UwNWFhIGxlZ2FjeS10cnVuaworMzMzODggOWQzM2RkMmNjZmU2YTZlOTc2ZmYxMWU0MzY1ZWU1MTQ1N2M1OTRhYiBsZWdhY3ktdHJ1bmsKKzMzMzg5IDJhNWU2Y2UzZjNhMTU3NTIwYTVjNDBiMDUwNjI4NWUzMTJiNDU4OGUgbGVnYWN5LXRydW5rCiszMzM5MCA3MjRmMmVkNzlkYTliM2QzNmRiZTQ2ZTg5MzUxNDNkODg0NmEyMTM3IGxlZ2FjeS10cnVuaworMzMzOTEgZmE0Y2Y4NzhjNTM4NDQ4Yzg4MDY2OWJkMjk1ZmMxOGI5OThkN2M4ZiBsZWdhY3ktdHJ1bmsKKzMzMzkyIDA1MmZlOTY2ODRlYWI2ZDg2ZDk2MmY1NDdkODllOTliMzFkY2IyNGUgbGVnYWN5LXRydW5rCiszMzM5MyAwOWU0MmY3OWY4MzBiZGYyNDlkMjgzODNjNGRjNWFiZDRjYzEyYzk1IHJlbGVhc2UyMi1tYWludAorMzMzOTQgYTQ0ZDI2N2YwMTYyOWZhNGMzMzA5NDM4NjFmMDZkYjQyMDNiNjAxYyBsZWdhY3ktdHJ1bmsKKzMzMzk1IGNkYjIxN2E4ZWIwNDQ1ZGM5ODM3YmRkYzI5ZDJhYzY4YmNmNTNiM2UgbGVnYWN5LXRydW5rCiszMzM5NiAzYjdiNGZkNWY3Y2FkNTZiZTdmMGFhMWFkMWU1MjljMTY0YWZhMzAxIGxlZ2FjeS10cnVuaworMzMzOTcgN2QwYWY0NTYxZWVkMWRlMDZkNTM3NDI3ZTBmOGQ3MTA4MjVmY2M2YiBsZWdhY3ktdHJ1bmsKKzMzMzk4IDg1ZTUyZWM4NTYyOTk3NjcwYzE5YzVhOGQ4ZTY1MTNlMTE1ZjlhYzYgbGVnYWN5LXRydW5rCiszMzM5OSA5NjJmNDQzYWUxZDkxYjM4NDRmN2FjNWM0ZjJkNWZlMjk3YWQwOTg3IGxlZ2FjeS10cnVuaworMzM0MDAgNGM5MGE2MzFkNjMyZWRmZTRlNjEwMDFkODlkMmIzNzU2ODQ4NzgxMCBsZWdhY3ktdHJ1bmsKKzMzNDAxIDM3MjE2ZTFjNjc0NzI0ZTBkMDVmNGFkMDMxYjMwZTg0MjE1MjFjZjYgbGVnYWN5LXRydW5rCiszMzQwMiAwZTEzMWUyOTQ2NjI1ZTc1Y2Y3ODJkMGZjZDYzMTI5YTU0NWFlZDYxIHJlbGVhc2UyMi1tYWludAorMzM0MDMgNDUyZTMzYTA4ZDU1NzBhMDZmOGYzZjhlOGRmOTRkNGU2NjE1OGQ2YiByZWxlYXNlMjItbWFpbnQKKzMzNDA0IDEyNDdmODRhYTZhNmMwM2M5MTU4NWI0MGU1OGExNWYxMzY3MmUxMzggbGVnYWN5LXRydW5rCiszMzQwNSAzOWJlNWIyNjI3OTJjOTgwMGRkZGZjMWY1ODJkYzQ2OWUyN2NiZWFlIHJlbGVhc2UyMi1tYWludAorMzM0MDYgZjQzMjk2Y2JjOTg1MDEzNGU0YWJmYzEwZTQwMDVlNzY2YWYxZTdkOSBsZWdhY3ktdHJ1bmsKKzMzNDA3IGU4NTBjYzUxYzI4ZmQ4OGY3ZjVmOTQ0NmEyZTA4MGEzOTA3ODgwMjYgbGVnYWN5LXRydW5rCiszMzQwOCA2NWU1MmMyNDc1Y2U1MTM1OTRlZDliYjZjYzQ1ZjcyZDc4ZjRhZDVhIGxlZ2FjeS10cnVuaworMzM0MDkgYTVlNzMzNmMwMDhkMzhhZGI4OWUyMTdkZDdiYTE0MjMwZmE5NDQ0ZiBsZWdhY3ktdHJ1bmsKKzMzNDEwIGQ1ZjI3ZTY3ZTFhYWU4Y2NjY2U2MTkxOTE4YmM2ZmFhZWFlMjNiNWQgbGVnYWN5LXRydW5rCiszMzQxMSAzYWQ4OThiOGY4MTNhYzU1ZjE1MzFiODRmMGU4NDcxYzhmYTU0OWZmIGxlZ2FjeS10cnVuaworMzM0MTIgNGM5ZWYyYTYyODY0ZDVhYjg5MWZhNzY0ZjhiN2U2MDMyNzNlZTQ1ZSBsZWdhY3ktdHJ1bmsKKzMzNDEzIDhjYTljZTM2YTIwNmZmZDFhODQzYjc0ZjhkMDgwZGI0ODRmMWUzMDUgbGVnYWN5LXRydW5rCiszMzQxNCA2ODgzNWJmMTAxZWNiMTNjYzk1NzRlZmNkODhkOTk2ZTZkZmMxYjAyIGxlZ2FjeS10cnVuaworMzM0MTUgYjljNDBmZGE2MDlkYmY3NjZiY2JjZWQwOGNjNmQzOTRjZDY5OTEwYSBsZWdhY3ktdHJ1bmsKKzMzNDE2IDRmOTI5M2NhMmRlNjEyYjAzNTFhNTlmYTcyYmE4N2M3YmI3ZjJkNGYgbGVnYWN5LXRydW5rCiszMzQxNyAzMmY5NmJhYzIxMTNjZjFkNjhiZmE0MGM4NTEwM2IzY2RjOGJhMjYwIGxlZ2FjeS10cnVuaworMzM0MTggNjFmYjk5NmViYTZlMGViMDBiNTkzYmEyYjMwZjJlZTM4NWIxMmY4ZCBsZWdhY3ktdHJ1bmsKKzMzNDE5IGViODI4YzY0ZmNjN2JhZWNhMDA3ZWZmZThkZmY5MjQ0YzE2NjgzNjMgbGVnYWN5LXRydW5rCiszMzQyMCA1YWY4OTAzN2NlYmEwODE1ZjcwOWVkM2EzMGE1NzcxMjM1ZmIxZTY0IGxlZ2FjeS10cnVuaworMzM0MjEgYWM5YTFmMGEzM2RjOGVlN2E4MGM5NWY3MzQxNjNhZjg1YzcyNTM5MiBsZWdhY3ktdHJ1bmsKKzMzNDIyIGI4NjQ0NmYwMzUwZmYwMThkODc4MjBiMTEwMjI3MmQ4NDEyODZjMjIgbGVnYWN5LXRydW5rCiszMzQyMyBiNTgyMWUxNzY0NTM4MDEyYjUxMTg5NTZiYzljZDc0Y2U5ZmMxNmRiIGxlZ2FjeS10cnVuaworMzM0MjQgOWE0NDJmNGE2NDQzZGQxZDYxNDUyYjhiOTJlYzMyMmZjNjU2NjUzYSBsZWdhY3ktdHJ1bmsKKzMzNDI1IGI0NGRlZWVjNWM1ZWM4ZmMyYjA3MjNjZWU5N2MzYjA2OGEzNTZjOTQgbGVnYWN5LXRydW5rCiszMzQyNiAwNzViMjlhZDk3YzMyMWQ1N2Q2MzU3YjAyZDcxZjY0MTU2OTI0MjUxIGxlZ2FjeS10cnVuaworMzM0MjcgNTlkYTViNTdjNjFiYWNkMjI5ZWQ3YzUxYzU0OWIyNDZjZWU3NDA2YyBsZWdhY3ktdHJ1bmsKKzMzNDI4IDNjMWY3ODM0MGI2NWU4NjJmMDA2M2ViODJjYjcxNTFiMDNkNjE2ZTUgbGVnYWN5LXRydW5rCiszMzQyOSBiNDkzYTdlNzVkOTc3ZmEyYTJhNDNjYjAxZWRlMzU2ZTkwZTc1MTIyIGxlZ2FjeS10cnVuaworMzM0MzAgMDU5MWZkOTU2YjlkMjg1N2JiMjIxZGY0MGVjNGFmMmNjMzBhZTE4MiBsZWdhY3ktdHJ1bmsKKzMzNDMxIDRlYzg4MGM1M2UyYTMwN2RlMGMxNmRjYjRjZjU1OThkMzY4OWNkYzkgbGVnYWN5LXRydW5rCiszMzQzMiA5ZWI2ZGNlZDE2ZTZiZTA3NzY1ODg1N2MwNDBiMWVkY2NkZDVjYWNhIGxlZ2FjeS10cnVuaworMzM0MzMgNzhjNTEwOWZmYWRhMDYzMTliNzkwOTMzNzIyZmFlNjBlNGZhNTQwZSBsZWdhY3ktdHJ1bmsKKzMzNDM0IDAwNTc2NWE1NmVjMzliMjI2MDJhNjNmMTg4NzI2NDgwZDczYTlmMDEgbGVnYWN5LXRydW5rCiszMzQzNSBiODRjYzNjNzgwOGY4MjM5N2Y5YTdhOTljNGU5OTM1ZTQ0MDk5YmEyIHJlbGVhc2UyMi1tYWludAorMzM0MzYgZmU1ZWIxNzgwMGY5YzMxYjQ3ZDQ1NWJlM2RjZTYyMmMxMDk3NDQ2ZSBsZWdhY3ktdHJ1bmsKKzMzNDM3IGU5ZTU4MzJkNzA2ZmYxYTA5MzA4NTAxZDJjZDExMDMzZmE0ZWRmMmQgbGVnYWN5LXRydW5rCiszMzQzOCA3YTQ3OGQxM2YyN2RhMzM2OWM2ZTliNmY2NmU2NDk3MWM0YjJhN2EzIGxlZ2FjeS10cnVuaworMzM0MzkgNzc3MGI3ODgxMzQ2ZDJlNWZmMjc3NTljZDAxNmIxNjVmOTk4M2ZiMyBsZWdhY3ktdHJ1bmsKKzMzNDQwIGVkYTVkMDE1ZTExYzE4NjM3NzhmMzhjOWQ4MjIzNTJjM2M1MTY2M2MgbGVnYWN5LXRydW5rCiszMzQ0MSAyOGNmYTU0NmYxZWM3NjRkZTIzMTA2NjY3ZWJjOGU1MmFlM2FkZTBiIGxlZ2FjeS10cnVuaworMzM0NDIgMDcwMzQ1YWQ4ZDcxY2NiYWFkMjdlYWI0ZTg4OGI3YzUzNDUyZWYxNSBsZWdhY3ktdHJ1bmsKKzMzNDQzIDMyZWZlNTRkMGU4ZmZkMThmMDM3MWQ0ZjBiMWJhNGQzOGEyMWY5MmUgbGVnYWN5LXRydW5rCiszMzQ0NCBkZGMyNDc0MDRkYWIzZWYwZjk1NjZmMWFjZWEzYzFlNjIxN2JmZGNhIGxlZ2FjeS10cnVuaworMzM0NDUgOGUyN2U1Y2RlNTlhZWQxOTNkNzgxM2IzNzQ2YWQ3N2FjNWY1NTYwNCByZWxlYXNlMjItbWFpbnQKKzMzNDQ2IDkzOTYxMzQ2ODRjZjU5YzkzNDBmYWVlMWZhYjJiMjJjZjM3MmFiMzYgbGVnYWN5LXRydW5rCiszMzQ0NyBlNmY5ZjZiNWQ4ZDdlNzEwMTNiYmU2N2U5MWEzNDUyNWNhYjg2ZmFiIGxlZ2FjeS10cnVuaworMzM0NDggZjczM2JhYzc4Zjg3ZTRlZmU4NTQzMDAxMjM0YjE0ZmJjNjNmZDc5MSByZWxlYXNlMjItbWFpbnQKKzMzNDQ5IDcwNTZjYzVjODE2N2ZjMmU0YTMzM2ZkOGRjNDM2ZmU0MjNjMGRlNmEgbGVnYWN5LXRydW5rCiszMzQ1MCBjZTk4ODM5NGM3NTQ3OGZkZTFhN2I3ZTkzOTViNjNlMTgxNjYzNzc4IGxlZ2FjeS10cnVuaworMzM0NTEgMmZjZGUzMmE4YTU3OTllNTg0Mzg3NmIwZTk3OGQ5ZGNhZjQ3NDdhZCBsZWdhY3ktdHJ1bmsKKzMzNDUyIGRjNmE0NjczMTg2MDZmOTg1ODZkYTk3NzU5ZmMxOTllNmY2OGMwZDYgcmVsZWFzZTIyLW1haW50CiszMzQ1MyBkN2FmY2RjNjllZDQ5MWNjYjU3NWU2YjYxYTc4YWEyOWI4MTM0YWI2IGxlZ2FjeS10cnVuaworMzM0NTQgYzczZmFmNWRlMWJkM2QxNDNiZmFkYWM1MjZjZWJjZTkwYjQ4NWQ3YiBsZWdhY3ktdHJ1bmsKKzMzNDU1IDQ2NmE1NDBjYzIyOWZhYjI5ODRjYTQ3OTlmN2M1N2M4ZTk3NjUwNGQgbGVnYWN5LXRydW5rCiszMzQ1NiA0ZmM1NmNhZTRlYjhjMTY1ZGMyMDI3NDczMWRjYmIxZDhlNzU4MzU3IGxlZ2FjeS10cnVuaworMzM0NTcgMzFkOTIzNTRmNzJmMDlkZWI5YzY3ZjA5ZDE4MTY2NjYzNjg2YjlhZSBsZWdhY3ktdHJ1bmsKKzMzNDU4IGM4ZmI0YWY5NmRlMGU1YmVlMjBkMDljNTAxODgwMjYzYWZhZmFkY2UgbGVnYWN5LXRydW5rCiszMzQ1OSA0YmFmZmUxNGM4ODc0YTEyZDkzYWYyODllMDI5YWNlYWQ3NzM4ODhhIGxlZ2FjeS10cnVuaworMzM0NjAgMmU4NGZkYjRmZTMwZDdiOWZkODRjMzJjOGI1NTQzMGVjNmI3MjlhMiBhc3QtYnJhbmNoCiszMzQ2MSA5MDM1ZmU3Njg2ODlkODllMmEwNWFkMDc3ZjczOGI0N2IxYzFkZWQ3IGxlZ2FjeS10cnVuaworMzM0NjIgZGVmYTFkODI1YjA4Y2Q2MjRiZjBiMWZkOTZhZmRkY2U2MDlmNTQyMyBsZWdhY3ktdHJ1bmsKKzMzNDYzIDEwMzdmZWFjYjU0ZmM5OThhYzg3MjZjYzE4NjExMDg0YWNjMzlmZGYgbGVnYWN5LXRydW5rCiszMzQ2NCBjNzAwNjNjM2FlZWI4ZGY3NDVmYTJlZGY3ODNhZTRiNTRiZWZkNDliIGxlZ2FjeS10cnVuaworMzM0NjUgY2ZhZWRkZTUwYmQ2NDMyNjhlYzdjZjBiYTBmZTU4YzcxZWRiZjJhYSBsZWdhY3ktdHJ1bmsKKzMzNDY3IGU2YTc4ZGQ0MjVjOGUwYWFmOTAzNzMwOTE2NTUyOTNiZDI5ZTBlZDYgbGVnYWN5LXRydW5rCiszMzQ2OCA5NGU1ZDFiOGY2OTY5ODk3NzdkYTVlZTJjZjdlMDgxZmJhNTdhODAzIGxlZ2FjeS10cnVuaworMzM0NjkgZDdlMWExYmQ0ODgwYjc2MWE3MDFiZjU2Zjg3MjVhMjk0YWE0MjkxMyBsZWdhY3ktdHJ1bmsKKzMzNDcwIGM0NDk2NjNmYTI3ZGUzOWJhNzZmYTg5Nzg1YzgxNGVjOTgzYzYyYzggbGVnYWN5LXRydW5rCiszMzQ3MSBiYmMzNmUwZTEwYTE1NzkyOTA4MWQxMzk0NzIxY2Q3YzkzMjdlNzBiIGxlZ2FjeS10cnVuaworMzM0NzIgNTdiOTNjOTQ4MzBhMzRlMjBhYmYxNzBhYWQxYmRmNmNmNjgwYjVjMSBsZWdhY3ktdHJ1bmsKKzMzNDczIGU1Yjk5ZTYwNTkyNjE1ZDJjZDAxMjAwMDdjOTdkNTZmYjRlMjk5ODQgbGVnYWN5LXRydW5rCiszMzQ3NCAxMjcyZjc5NTQ3YmE5MTYxMTlkODZjNjkxNjUyNTYyYWE3MzRlMGFmIGxlZ2FjeS10cnVuaworMzM0NzUgYmFiODllNDA2ZjMwZTI0NWI5ZDdhMjkxNDJkNGY3NzU1NjQ0NWRiOCBsZWdhY3ktdHJ1bmsKKzMzNDc2IGQyODNiMTczM2MwZDdhNTc3Y2Q2ZjJiOWI3YjRjZmIwZjQ3ZDAzYWUgbGVnYWN5LXRydW5rCiszMzQ3NyBhYzBmYzA4OTNhYWNmMzM3NTM5ZGM3OTc2NGY5N2ZmMTZmZTZlYTU1IGxlZ2FjeS10cnVuaworMzM0NzggMGRmMTFiMmJmY2E1MThhYTZhNWZmOWZjYmVkYzEzOTM4OTU3YjcwZCBsZWdhY3ktdHJ1bmsKKzMzNDc5IDMyODAzNTUzMjlkZDM5YmI0OTIwMDQ1Njk3NTUyODAxZWUxYjI1ZTcgbGVnYWN5LXRydW5rCiszMzQ4MCA1YjIxYzcwMDM5NzQ1ZTY0OTIyMzZjYjZkMDBiOTk1OTAyNWNiNWI3IGxlZ2FjeS10cnVuaworMzM0ODEgYzljNmUyYzllYzk3NWM4NWI0OGU0MWYwNjEwZmNmNWQ4MzUzZmQzZSBsZWdhY3ktdHJ1bmsKKzMzNDgyIDJiMTdhZDY2ODY2NmU1ZThjYTYwYTgzMjFjMDA2YzRiOGE1MmMzYzggbGVnYWN5LXRydW5rCiszMzQ4MyA5OTE2YjU5MjYxZDc2MzM1YWRkOGFlODMzNmZjM2UyMTE1MGQ4MTU3IGxlZ2FjeS10cnVuaworMzM0ODQgZTAyYTVkMTg0OWY4ZDg3Y2JiNzgxOTVmZmRmNzhkMDcyODcyOWM0MiBsZWdhY3ktdHJ1bmsKKzMzNDg1IDY0NDNhMGZlZTdlMTAxNDMwM2MyYjAwYWRiMmIyNDBlMzI0MzJlNzAgbGVnYWN5LXRydW5rCiszMzQ4NiAzYjQxYzYzM2Q3Njk2Yjk2ZjU0NmEyODk0ZDE1ZmZmM2ViOWQwYjQ1IGxlZ2FjeS10cnVuaworMzM0ODcgN2JlMjRjYzZjMjhkN2JhNTVjOGIzY2YwY2M0MDEwNTVhMjYyMzY4NCBsZWdhY3ktdHJ1bmsKKzMzNDg4IGNiM2NlN2NlYzI2MTJmMTkzZjZlYmY4YjhjMDQzNzg0ZGQ2ZDM0YzQgbGVnYWN5LXRydW5rCiszMzQ4OSA0ODM3YmYyMTZhZTVmNTBkNzAwZTM5MjkxN2EzYzRkNGE2NzVmODVkIGxlZ2FjeS10cnVuaworMzM0OTAgZWQ0MzE1NWIxZDNjOTA3OTY1NWU4YWRmZTM2NjU4OTQxM2ExMTM1NyBsZWdhY3ktdHJ1bmsKKzMzNDkxIGQ0ZmZiMDQ5MGFjMjdkZDRiMTllMmY0M2UwNGI5N2ZmOTFiM2E5MWUgbGVnYWN5LXRydW5rCiszMzQ5MiAwNzE1MDE4MjRiYmQ4ZDkzMDc0NTVlNzgxY2Y4MTMzNDczZTA0MGU0IHJlbGVhc2UyMi1tYWludAorMzM0OTMgODU5Y2JkN2M5YjQ4MTQwZjI1OTdkODJmNzAwNzZkYTA3YjQyYjZiYSBsZWdhY3ktdHJ1bmsKKzMzNDk0IDFkYzE1ODY1MmU1YjM3M2E0MmZmZTVhNjY2MThlYzgwNzA5OWVmNGIgbGVnYWN5LXRydW5rCiszMzQ5NSBlMWE2YmY0NTY1Y2RlNGU0N2ZjNmIyMTYxZmQ3MDY3NTJmYTIzNmYwIGxlZ2FjeS10cnVuaworMzM0OTYgNDU2OTEyYWRhNjlmZjkxZGZjZDFiZjljNmFmYjUyNWI5ODUwNWM0MCBsZWdhY3ktdHJ1bmsKKzMzNDk3IGJhNWYwYjgwODE5MjdiNDYyMjg5MGY0NDk2YjZkNzFjODljNTQxNTggbGVnYWN5LXRydW5rCiszMzQ5OCAzN2JjMjNjNmNmNmM5MjIxMmU0YmZhNWY0ZDViYmI1ZTYxM2FmNWNlIHJlbGVhc2UyMi1tYWludAorMzM0OTkgYTM3MTA2YWM3YzhjYzAxN2U5MGYwOTFiMjg4OTUzNmM1MzUzMjJlZCBsZWdhY3ktdHJ1bmsKKzMzNTAwIGU2ZWRiMDQwYTc3ZDRhY2U5ODExNjJmMjQ4ODViYTQ2ZWU0MGQyNjQgcmVsZWFzZTIyLW1haW50CiszMzUwMSAyZWMyZjYyMDg3Y2I4ZWJiYzIyNGRiZDdmYjljNzMzNWY4NmUyMDRiIGxlZ2FjeS10cnVuaworMzM1MDIgNWU4MWQ5MmJmNjdkYjAwNmY0YTY2NjdmZDM2NjgwZGNlN2UxNThiZCBsZWdhY3ktdHJ1bmsKKzMzNTAzIDA5ZGE5ZTU2NTU1ZDgwY2MyZTU4YTEzMjc2MDU2YTg3NWQyZDNkMTkgbGVnYWN5LXRydW5rCiszMzUwNCA0MDI5YTcyNmZhYTY1NTAzNjgyZmU4ZmJmMmMyNWRmZTkxZTFlOTE2IGxlZ2FjeS10cnVuaworMzM1MDUgOTJmMWVlYWViNDFkNzUxOTMyNzMxZDFlNTlmZmM0MmVlODc4MDVkZCBsZWdhY3ktdHJ1bmsKKzMzNTA2IGI5ODI3YzA1NDYwZjM4ZjhjMTlhMjI4ZDY0MDJiY2NmMmViNDk4Y2UgbGVnYWN5LXRydW5rCiszMzUwNyBkNDVkMzE3ZmRhMzUxYWRiNTQ2ZTRhZTcxYmJhYWVlMGJiNWRjN2EyIGxlZ2FjeS10cnVuaworMzM1MDggNzc4YjIxNTIwZGI4Yjk0ZWFmMTljMjcxOTFmZjFmYWRhOWZiNWRlZCBsZWdhY3ktdHJ1bmsKKzMzNTA5IDhkNDVhNGNlYTkzNDM3ZTdjNTQxNDRkYjFiYTA4ZDRkMmUxZDdiZjMgbGVnYWN5LXRydW5rCiszMzUxMCBlNTdhOWJiZWVjNWIyNzdjZGYxZDAyNmMxNGNjZTg0MTk4ZWIzM2MyIGxlZ2FjeS10cnVuaworMzM1MTEgNjQxOTRlNzc1YjBiYzI4YzI3NTBlMDY3YWE3ZWY0NGU2MGU2NjI1YSBsZWdhY3ktdHJ1bmsKKzMzNTEyIGZlNzlhNWFiMzkyYjg1OTA1YTgzODRiM2FkOGQwMmJiOWQxNmRkMWYgbGVnYWN5LXRydW5rCiszMzUxMyAyZDViZWNkOTAwZWViNTY2NmEyODcwZjM5ZDFmOTcxNDg0NmRlNGEzIHJlbGVhc2UyMi1tYWludAorMzM1MTQgMDZjY2EzMjdiYWNkZmFiNzU1MmIxMGIzYmQ3MGY5ZTAyY2FjYzc3NyBsZWdhY3ktdHJ1bmsKKzMzNTE1IGRkOGNhMDgzZWE2Njc4ODAyNDE3NTU5ZDE3YTM5YzJmYTNhMTcwNWYgbGVnYWN5LXRydW5rCiszMzUxNiAwMTRjYzM2MmFhOTEyMzYwYWJhNmM5Njk2N2M2MzdkN2RiYTExNGI1IGxlZ2FjeS10cnVuaworMzM1MTcgZTY4Njc2NTIzNjc3NGM1M2M1NmY4ODkwZTI0ZDg1ZjkxODUyM2NkZiBsZWdhY3ktdHJ1bmsKKzMzNTE4IDdmYmEzM2ZmMjEzNThhMzA1YmM4ZmQyMDEwYTZhYTJlOWJjY2VmMTUgcmVsZWFzZTIyLW1haW50CiszMzUxOSBiODVmOGJiNWMzNzU0YzY4YTcxMTZlMWQzYzFkMTYxYWFlNzg0N2RiIHJlbGVhc2UyMi1tYWludAorMzM1MjAgNTdhZGY4MjdkNGM3YWQ2NDc0MWNiNDFmOGJjN2E1ZTQyODg2NzlhMyBsZWdhY3ktdHJ1bmsKKzMzNTIxIDJiYjUyM2FkOWI3NjViODk2YmVlMzZmYzdkZjk4MDIxMzcyOThlMmQgbGVnYWN5LXRydW5rCiszMzUyMiA3MDUyYzNlNWFmMDI2ZmJmYWViZmM3MjUzZGE4OWRkZTUzNjE3NmJiIGxlZ2FjeS10cnVuaworMzM1MjMgNDJlODI2M2QzOWFjNjYxZjc1NWJmOTM4MzNlODhiOGNjY2ZkYzdlYiBsZWdhY3ktdHJ1bmsKKzMzNTI0IDQ1ZGMzMzQzMzMyMzU2ZGQzOThlMTdlOTQ2ZGJhZTFkMTI0MDI4MzcgbGVnYWN5LXRydW5rCiszMzUyNSBjZGFiMjVkMmY4NDI5MmU4YjlmZGZjNTBhMTU3OGMxYzg0Yjk0YzQ5IGxlZ2FjeS10cnVuaworMzM1MjYgODQ4MzU4NDZlZWFiMTE0ZDE5ZDMwODMzY2Y0NDIxZTEyOGIxOTlkZSBsZWdhY3ktdHJ1bmsKKzMzNTI3IDljNTdlYjUzMzdiNzIxODA0ZjQ4NzAxOTk4NWMwMGVjN2U0NTYyMmEgbGVnYWN5LXRydW5rCiszMzUyOCA4ZWIxY2FlMWE3N2JkOTU3YmE2MWZmMDliNDMwMWQ3NDMxYjhjY2E5IGxlZ2FjeS10cnVuaworMzM1MjkgNDIxZDgwNWMxMWYzM2UzMzI0OWI0OTU1ODk4YTkwMTE1ODRhNmMzNyBsZWdhY3ktdHJ1bmsKKzMzNTMwIGJmMDBiNTZjMTRhOTgyZWIxMWQ0MzViNzk4M2FiMWRkZDc3MzE3OWYgbGVnYWN5LXRydW5rCiszMzUzMSA1Nzc3YzgzNGY1NWNlOTJjNGI1N2VmY2IxZjhiODJhZTczMjM0YWNjIHJlbGVhc2UyMi1tYWludAorMzM1MzIgNTZjMDFjNDUwOTJjMDkyODJkNDJlNWVhYTNlYmM1MDI3MmU2OGU2NiBsZWdhY3ktdHJ1bmsKKzMzNTMzIGNkMGJjYWEwYmQ4MWZlNDAxNWI0MTViOWYxODM4ZmYwYzk2ZGM1NzYgbGVnYWN5LXRydW5rCiszMzUzNCAxYmFlNzhjODNiZTk0YmVjMjYxYjg4MzFhZTkxMjBiZjIxNTliMDhlIGxlZ2FjeS10cnVuaworMzM1MzUgMWMzYjgxNTg3NjBjM2QwMjNlMTAxZDJjNzFmMWZjMTA5Yzk3NTE2NyBsZWdhY3ktdHJ1bmsKKzMzNTM2IGYzMzlmMjliMDZjYmI3OTI1MjVkZWZkZjkzNTIxMzdmYWIzZGZkMmQgbGVnYWN5LXRydW5rCiszMzUzNyA5OGM1OWJiZGQ4ZWM0Nzk0MmYyOWZmZTdjYWFkNmQ3ZDNmOTY4MjQ0IGxlZ2FjeS10cnVuaworMzM1MzggODRiY2NiZWFiNWZhYzU4MTJmMTg1ZjNjZTlmN2ZmN2VlZmM3NGFhMyBsZWdhY3ktdHJ1bmsKKzMzNTM5IGI3NjYxNTJjNzkwNDVjNWM5Yjg1MzllMzQ4Y2FkNDY5MjgxOWMxMGMgbGVnYWN5LXRydW5rCiszMzU0MCBiNDRlYjUxOTMxZDBmMTM0NDU5NzRiMDljMWEyYjQzODhhYTk5OWJiIHJlbGVhc2UyMi1tYWludAorMzM1NDEgMTk5Y2Q3OGQ2ZDc4ZDM2YTZlZjBmYmEyMzJjN2JlYTgzZjQxNGFkZiBsZWdhY3ktdHJ1bmsKKzMzNTQyIDYwNGQ5MzgyM2VjMWQwMTI4OTcwMTI1ZWRkODk0ZDg4MTNiZmFmNWUgbGVnYWN5LXRydW5rCiszMzU0MyAzNDQyZTdjZGFjZTg2ZTM5YzY1OWQ3ZGVkOWU0NDc5ZTMyODkyZDA0IGxlZ2FjeS10cnVuaworMzM1NDQgMDMwMjI3ZGU4MDUxOGFhYzdhZWE5ZDU4NTQyYzAzZDVhNzdmMTI4NCBsZWdhY3ktdHJ1bmsKKzMzNTQ1IDk1NDcxN2U2ZmRiNTBiNDVkYjg3ZDFjZWIxZTQzMWY3YzUwNDI4ZjggbGVnYWN5LXRydW5rCiszMzU0NiAxYTQyYjEyOGM1ODE0YThhZjM4OWJlY2Q3MDVkZjVlMjE3ZDg2ZjcwIGxlZ2FjeS10cnVuaworMzM1NDcgZmVlMTc3NmU2MWM3MDU2MTE0YTk3MDMzMzJkYmRlN2Q2YTZhYjU1ZiBsZWdhY3ktdHJ1bmsKKzMzNTQ4IDQ3NTAxMTg0YjU0MzVmN2UwNjAxMmIwYjAxOTc2N2I5NjgwMDJmNDAgbGVnYWN5LXRydW5rCiszMzU0OSA2MmYzMDYzYTFhMGY4NzZiYjc2MmY3OTE5ZDUxNDFiNzYwMDNlZjMzIGxlZ2FjeS10cnVuaworMzM1NTAgYTBhNzIzMWM2ZmUwZTM0ZjRjMzAzMGI0YWNmMWJlNjlmZjg3NTAzNSBsZWdhY3ktdHJ1bmsKKzMzNTUxIDcyY2JjNDFjY2MyZjM4MGUzNjUyYWM3NTBmNzdlZGQxNjFmYjExMjQgbGVnYWN5LXRydW5rCiszMzU1MiAyYzUxOTRiYWE5OTQ0ZjlhYzVlNGIwNGM1ZDdlN2Y5YjY3MmRjZWEwIGxlZ2FjeS10cnVuaworMzM1NTMgZWQ4NzA5YjFhM2VmYjEzYTdjYzRmNjY0NzVmODYyOGU2NzZjNmZjZSBsZWdhY3ktdHJ1bmsKKzMzNTU0IDNmMjE0YjM5YjRkZjk1NDk3ZjQxMTM2MTYwMTAxY2NlYmExM2RkNGEgbGVnYWN5LXRydW5rCiszMzU1NSAxOTUxMWE0OTBlN2MwNTExMzUxNTA5N2QzYmMxZGQyNTI0MGJjN2FhIGxlZ2FjeS10cnVuaworMzM1NTYgOTJhNWZlNTc4MzgwMzhmZGEwZTZmNzlmZjlkYzVkZTMwZmVmN2JjYiBsZWdhY3ktdHJ1bmsKKzMzNTU3IGQzN2QxNTkwZTFhN2QxYTFmOTFkNmYzOGNmYjlkYTI4NWZlMDVjYjggbGVnYWN5LXRydW5rCiszMzU1OCA4OGI5M2UwN2ExZjgwYWY3YzI1OGI5ZmE4OTUwMmEwNzI3Mjc4NWI2IGxlZ2FjeS10cnVuaworMzM1NTkgZjg5ZDU0NTUwNWM3MTU0NTRiYzg1OTViMWZkZmM2OTBmMjkyOTc1NiBsZWdhY3ktdHJ1bmsKKzMzNTYwIGI2OGZiNGE0M2QwZmVjZGI5NGRmZWE0ZjM0ZmQ0YTg0MGE3NDY4NzkgbGVnYWN5LXRydW5rCiszMzU2MSAyMmJjYTI4MjM2ODU2ODYxYjBlOWUyZWFlNzA2Y2ZmZGY4Mjc5NmFiIGxlZ2FjeS10cnVuaworMzM1NjIgNGUwNWM1NTUxNGUxZDYzMTYxZjM1N2UwNDc5MjFlZGVlOTM3NTk3YyBsZWdhY3ktdHJ1bmsKKzMzNTYzIGUyYjQwMzEyNzU3ZWUxMWZmMDJiMjlkYTkxMWIwMmJkYzA2ODhjZjYgbGVnYWN5LXRydW5rCiszMzU2NCBkYTdlYWU0NGY0ODdiNGJjYTI5NWJjNGQ0ZDBiMzdiNTZiNTk4YTFjIGxlZ2FjeS10cnVuaworMzM1NjUgOWNhMjkxODY1ZjljMWYyYTAyN2UyZmQ1NTk1MWVjMzQ2YjU0OGM3OCBsZWdhY3ktdHJ1bmsKKzMzNTY2IDc5ZWM3ZTMwMmQ1MzU3NzZiNjlkMGY1MDZlYjg2OTJkYzE3YjEwNzIgbGVnYWN5LXRydW5rCiszMzU2NyBlOWRkZGZkMmE2MmYwY2VhMjVjYzc5MmU1ZWNkYzMyNWI2YTZkZGI1IGxlZ2FjeS10cnVuaworMzM1NjggYWM4NGYxNzliYjg0MTMzOWM5YTJmODZiNWM1MmJhZjY2Y2RhZTA4ZCBsZWdhY3ktdHJ1bmsKKzMzNTY5IDk5NGI2YmU0OGUyODc5YWY2ODY3ZmQxZjJjYjcyMGQwMzY3ZmY4MWYgbGVnYWN5LXRydW5rCiszMzU3MCBiNDdhNzI3NGNlNWMxNTgzOGE1YzZiMDQ5YmI2NWE3NzY1Y2M2YjE2IGxlZ2FjeS10cnVuaworMzM1NzEgZGJhZTA1YzI5ZTkzODU0NGI5ODYyZGM3MzI2NzMxZTI4ODMxYmVmYyBsZWdhY3ktdHJ1bmsKKzMzNTcyIGQxYWE1NzUxZmJjZmRiYTNjMWZlYWQ5MGNiYjFjZTM5YzBiZjI4MTMgbGVnYWN5LXRydW5rCiszMzU3MyA0MzRiNmNkYTRmYTVhZjcwMTdjYjZjNTA5YTU5ZWY3NmNlYWJiYjk1IGxlZ2FjeS10cnVuaworMzM1NzQgOWRlYWMxYWE0MjFkYjY5ZmE1NWU0Mzg3ZWU2NGVjYWMzZjJlZGZmNiBsZWdhY3ktdHJ1bmsKKzMzNTc1IGEyMzEwNmRmYzk0ZDNlYmY2ZmRjMzdmNmNjNjNlMjg1NDQ1YjcwMGQgbGVnYWN5LXRydW5rCiszMzU3NiA5ZjYwYzNlZTk4NWEyYWUxMGZlZDljYjk3ZGY1YzE0OGEwN2VkZjRmIGxlZ2FjeS10cnVuaworMzM1NzcgODBlZDRkOTdmMWJhZWEwZGU5OTU4ZGY3YTFiOTZmMWRkODhjOTRiOCBsZWdhY3ktdHJ1bmsKKzMzNTc4IDcxNjM5NWMxOTU4NmUyYTEwNjY5MmMyNTkyNzhkYTdkMTFlYjE0NmMgbGVnYWN5LXRydW5rCiszMzU3OSA4YjE1NWU0YTEwYTI1ZDJiODcxNjEwNzBhNzRiMTVlODMyNWNiY2FiIGxlZ2FjeS10cnVuaworMzM1ODAgMWUyZTFjNzkzMTZlMTJmYmQ1ZmFjNDBiZjFhMzdjZjE2NjM2YjU3YiBsZWdhY3ktdHJ1bmsKKzMzNTgxIDVhOTQ0YWM4NTI1YzFmNjFkNWRhYTNmZWVjYzkwNTA5MWJkYjdlOGYgbGVnYWN5LXRydW5rCiszMzU4MiA0NTFiN2U4MzkzZmM0MWViMTQzZmVhMjM0OWYxZDM4NDIyNWM2NTkzIGxlZ2FjeS10cnVuaworMzM1ODMgZDU5ZTU4YmFjMzkyMzc1MGIxNDNkOTI0NTdhOTkwYzkxYjAxOWI0YSBsZWdhY3ktdHJ1bmsKKzMzNTg0IDBlMjIxNWI4MjI2ZDJhZTNhYmE2M2YwN2E4NjJkMTFkYmI5OGQ5ZDUgbGVnYWN5LXRydW5rCiszMzU4NSA0ZTYxM2RkZjJhMWJkMTY1NmM0ZWY3NGRkYmIyYTEwY2QyMzUzMDYxIGxlZ2FjeS10cnVuaworMzM1ODYgNDE2ZDk0NThlZTk3Y2IzZjJlM2ExYzMwNDM2Mzg1NGMzOTU4OWI4YSBsZWdhY3ktdHJ1bmsKKzMzNTg3IDUyNzYwNzUxYzYxZWU3MmNlOTBhMWZlMzhjODliMTFiNjAwYmYzMWIgbGVnYWN5LXRydW5rCiszMzU4OCBmNzczYjU2OGIyZTczZDgyOWVhMTkyYzIxMDM1NTkyN2IyNjJmNmI2IGxlZ2FjeS10cnVuaworMzM1ODkgZmNmNjY4MGI2YTZmYjc3MWM4YjU5OGFjYWM2ODU2NzE5OWYzY2M5OSBsZWdhY3ktdHJ1bmsKKzMzNTkwIGRmOWVhNzQ5NDA5YTNlZTQ1M2M0ZjcxMzQ1MGQzNzM0NTMzZDI1MTEgbGVnYWN5LXRydW5rCiszMzU5MSA1NjRhNDllZWE0MTRlMTAwOTMxNjk0NmFlZmMyOTI0MTRkZGEwZjY4IGxlZ2FjeS10cnVuaworMzM1OTIgZWM5ZjE4NjE1NDg1NmE5MGFmNTkwNDRmYmVjYTI5MDcwOGRjMTM5NyBsZWdhY3ktdHJ1bmsKKzMzNTkzIDdiMTZjZjcwZWJkODllNDI0ZDVhMjQyY2JlOWU4YzM1MmYyODJhYWYgbGVnYWN5LXRydW5rCiszMzU5NCAwYjM0MjJiNjIxMTkxMTk2YzMzZTc2YTc2YmRjMjliOThmNDlhMGMyIGxlZ2FjeS10cnVuaworMzM1OTUgMmE0MGNhMDZhMjJjODhkOTJmNzcxNWJkYzA4MmY5YWY3ODQyMzA4MCBsZWdhY3ktdHJ1bmsKKzMzNTk2IDk2YmFiN2M4MmUyY2ZjOTZjMTAwNjkwMzkwNDQyYjhhMDllNjYyOGEgbGVnYWN5LXRydW5rCiszMzU5NyBjODZiMTM1NGFjNmY2Zjc0ZGEzMDBhYzhkOGM1M2NmMDRlNjhkY2U0IGxlZ2FjeS10cnVuaworMzM1OTggMWJjMjU1OTIyOWRiMWRmZjM3OWU2ODY2MDIwYzFlNjg1M2ZmYmRlMCBsZWdhY3ktdHJ1bmsKKzMzNTk5IDdmZDIwYWU0NDE0MmYwYzlkZjA1YWYwMzJkN2RmMDQ5Y2U3NWJiMGMgbGVnYWN5LXRydW5rCiszMzYwMCA4ZGVjMGZiMTQyODU0ZjM2YjVkMjJjZWMyNjBjZjE3MzQzM2JhODM2IGxlZ2FjeS10cnVuaworMzM2MDEgYTczYzI4ZGVlZjZkZmZlNzM0OTM2MDVmYWYwYjU3NWIyZTM3MWUyZiBsZWdhY3ktdHJ1bmsKKzMzNjAyIDg2YzQ3NmE0MjVhN2RjNTI3MzZiMjg4YjYzZTk4NmZhYzg0MTE3MjIgbGVnYWN5LXRydW5rCiszMzYwMyAwOGQyNjM2YjhlNTg0NDNkMTc1MGY2NzhhOGQxZWI2ODhkNDhhNTQ2IGxlZ2FjeS10cnVuaworMzM2MDQgMjU4MDBhNzI0MDExZmIyNTQ0NTYzYTM1NmE2ZTgxYWNjOGU2YjI0MCBsZWdhY3ktdHJ1bmsKKzMzNjA1IGNmYWQ1NDI4M2UwMDA0NzY0MTI0NDUyZDAxODQxMjA3NmQ2OTUxODMgbGVnYWN5LXRydW5rCiszMzYwNiA3MjJkN2M3YTc3ZTJiNDdmM2FhODk1OWQ2Y2E4Mjc4NmIyOWY1NmYxIGxlZ2FjeS10cnVuaworMzM2MDcgNjBlM2QyOTlmYzg2NzhmNDQyNjE2ODAwNjVlZjJiOWViOTE1ZDVjYSBsZWdhY3ktdHJ1bmsKKzMzNjA4IGJiOGNjNzI5MTVmNTY4OTJjM2I1MzEzM2RhZjA3YWYxOTE1YzZiMjkgbGVnYWN5LXRydW5rCiszMzYwOSBlZTdlMjIzZGJjYWNmMDY5Y2I3N2U1MGE1NmQ4MzkxYWRiZjc2NzE5IGxlZ2FjeS10cnVuaworMzM2MTAgYjg0NjQ1YzMxOTVlNDg0ZDY3MjZjYTViOTc1OTE0NWE2NDdkMTc1NiBsZWdhY3ktdHJ1bmsKKzMzNjExIDRkNDQxN2RmNjNmNGU4MDhiZjMyMDk1M2E4ZDRmMzVmNzY4NjAxYWQgbGVnYWN5LXRydW5rCiszMzYxMiAwMzE1M2ZkMmQzZjIxNGMxYTdhMDJjMjA3OTE0MTIwYmNlNTY0ZmVhIHJlbGVhc2UyMi1tYWludAorMzM2MTMgNjI4ZGNmOTBiZjllMmUyMDFkMjJjMzZkYWJmODU2YTQ5M2FiNDk3MyBsZWdhY3ktdHJ1bmsKKzMzNjE0IDQwN2MwZGVjMmY0YWRjOTJjNjFlYTgyNDQwNzVhOGNiMWU2MDcxNjAgbGVnYWN5LXRydW5rCiszMzYxNSAyOWE2M2M1Y2ZiYWZiOTQ0MTViMmU4YWY4NGQwMTQ5OWFlNDk3ZDY4IGxlZ2FjeS10cnVuaworMzM2MTYgZGEwYzkwYzZhZmQwMWZjYjZmZjhiNzNhZmRhNThkYjg5NGVmMTJlMSBsZWdhY3ktdHJ1bmsKKzMzNjE3IDkwMTNkM2MxZDY1NTA2NGM4MDBhNzk2MzU3ZmRlYzcwYjJkMzY1MDAgbGVnYWN5LXRydW5rCiszMzYxNyBkMDU0YzI5NjQ3ZjkwYmNjYjgzNDViZDc3OWJjYTFlZWNmMmRkN2YyIGxlZ2FjeS10cnVuaworMzM2MjAgOGEyOTM0NDk4MjlkN2JhZDA4MmJlOGIwNWJjNmQ2N2ZkNDFkYWE0NyBsZWdhY3ktdHJ1bmsKKzMzNjIxIGRhMzU5Mjk2MmE3YWYwNzk5NzliYjQwYjI5YWI2YjVkNzhkOWUzNzQgbGVnYWN5LXRydW5rCiszMzYyMiAxMDhhYTk2NDg1NzMyMTA1OGE0MmZmNjYyMjgxMzliOWRiODJmNjVmIGxlZ2FjeS10cnVuaworMzM2MjMgOWE2ZjViMzdlODFkMmQ5YTgyNTFkM2I4M2IyZDIwNzQxM2VhMDQ1YSBsZWdhY3ktdHJ1bmsKKzMzNjI0IGNlOGIxMzhmNDQ3M2FkYWRkMGI2YTE2NGQ1MmE0MDMwNmEyZTUxMzcgcjIzYzEtYnJhbmNoCiszMzYyNSAzMzdkNDQwMTA5MDczNzhlNGZkYjc4YTRiNjU2MTk5ZmQ2NjE5NGY2IHIyM2MxLWJyYW5jaAorMzM2MjYgYWQwOTY4N2FhYWEwYTc1NTI2ODVmMjc0ZmM2MDNkYTBkYmZlN2EyNCBsZWdhY3ktdHJ1bmsKKzMzNjI3IDJiOGE1NjRlMWZkM2QwMjZhMTI0Njg2MDk4NjMyMmJiYmUxMGUxYjggbGVnYWN5LXRydW5rCiszMzYyOCBhOWM4OTk3MzlmNDgyMmJiNmQ4YjlhOWIyNjhkYzM2NGFlNTM5YTY0IGxlZ2FjeS10cnVuaworMzM2MjkgMWNiYzZiNzgzNmRjYjhhNmYxOWUyMmJjYzU5MTFhNDU4Nzc0MTRkNSBsZWdhY3ktdHJ1bmsKKzMzNjMwIDMyMjVmMWQ0Mjg4MzVhMjc1NWE2NTRlODcwNmY1MWJmZGEwMTZkNGQgcjIzYzEtYnJhbmNoCiszMzYzMSAyYzQ4M2Y3YmVhNGJjZjg2NzE1NDcyMzQyODFmNjM4ZmJhZGQ1MTAwIGxlZ2FjeS10cnVuaworMzM2MzIgYmFmMjI0MTA3MGJmZDcxN2EyMzZjMzMxZjdlNDJjZDA4M2Y1YzQ4NyBsZWdhY3ktdHJ1bmsKKzMzNjMzIDA5YzQ1OTg1MTI2NDE0NmViMzI3Yzg2YmE3NGRjNWRjZDQ5OTkyZDIgbGVnYWN5LXRydW5rCiszMzYzNCA1ZmFlZTdjZGM1YWFiMjQ3NjZiOTdjYmViM2ExNzJkYWQwYTFkOTA3IGxlZ2FjeS10cnVuaworMzM2MzUgY2VhN2Y4YWY4ZTBiYjgyZTRkOWE5NGJlMzQyY2EzYTA0OTM2ZTU0NiBsZWdhY3ktdHJ1bmsKKzMzNjM2IDRiZmNmZWQ2NGVjYjk2OGM5ODI4NWRiYWNhODYzMGIzOWIyODc3MGUgbGVnYWN5LXRydW5rCiszMzYzNyA0YzE0M2NlZWY0MTljNjcyZDBjMDI2OGMwM2QzN2IyNjNmNzFkZDI2IGxlZ2FjeS10cnVuaworMzM2MzggYTU1MGFmNzExYWJhNGEyMmI0NmFmMzE3OGZiYjQzYmFmY2ZlOTEwNiBsZWdhY3ktdHJ1bmsKKzMzNjM5IDk1MGIyNTAwYTE0MjIyMTRhY2QzYzA1NTAwNTA2YWY5MTZiNzk2NDcgbGVnYWN5LXRydW5rCiszMzY0MCA2NjhkZDMzNmUzMDZmMTViYjhlMGE4YWJjY2UyZjIwMGI1OGYwYWE2IGxlZ2FjeS10cnVuaworMzM2NDEgYzQyYTczMTdjODg3YWJiN2I5ZjM4NjAxMjMyMTE3MGUzM2Q4ZTlkNCBsZWdhY3ktdHJ1bmsKKzMzNjQyIDMxN2YxZWUyNGYxODQ5Yjc4ZTcwYzc0NDVkYjliOWFkN2ViNDlhYjAgbGVnYWN5LXRydW5rCiszMzY0MyA0Y2YyYmZmZmE1NjQxMGY4ZTgyMTAxMjAyY2JlOWMyZjYzNTRkZWE0IGxlZ2FjeS10cnVuaworMzM2NDQgZmU0OTliYzczODFmYjkwM2JmZGZlZWUzMmFkNjRkZDU5NzAxOTk1NyBsZWdhY3ktdHJ1bmsKKzMzNjQ1IGE0YWJlMTdhNWZlYjkxZjQ2MjI0ZThhOTY4YWQ1MGEzNzQ3YmRkYTggbGVnYWN5LXRydW5rCiszMzY0NiAxM2M3NWZhNzgwYzhjMjIyMjIyNWE1MGQyMjI3NGJmZmFlYjAzNDliIGxlZ2FjeS10cnVuaworMzM2NDcgMzAzZjVmZGExYTI4NDBiYTAyZjg5OTcyZGFiZTJjZTJkMjdkYWRlOCBpbmRleGluZy1jbGVhbnVwLWJyYW5jaAorMzM2NDggYTc3YWFhYjAxNDZkZTY5NmU2ZDY2ZTk5M2I1YzY0ZWM1OWE1ZGRmNCBpbmRleGluZy1jbGVhbnVwLWJyYW5jaAorMzM2NDkgNWFkZGNjYTNmNDMzMzQ4MmZhZTM0NGZmNDhhZGQ1ZmFiZGQyN2JmOSBsZWdhY3ktdHJ1bmsKKzMzNjUwIGUzMzlhZDI1MGFmMGY0MWZjMzRiOGE2NGNkOWI4MzU2ZTEwMThhMDAgbGVnYWN5LXRydW5rCiszMzY1MSA4MmVlMWZhZTM4MTk0YjgxMDk5MDcyMzcwN2JiZWY1MWFjOTlmMzZlIGxlZ2FjeS10cnVuaworMzM2NTIgYTQwOGFjNTUyN2MzNDU3ODcyOGY1ZjMxMzA4MGM5N2UzMzIxZDJjOCBsZWdhY3ktdHJ1bmsKKzMzNjUzIGI5ZDBhMGVlMjIwNmE3MmE5YTk1NzcwM2Q2ZGZkNjk3MDI5YzdmODggbGVnYWN5LXRydW5rCiszMzY1NCBkMzdmMTMxOTlkOTUyOTdiNDExMTQ2ZDM2NzcyYTI5YWI5MTQ1YWFiIGxlZ2FjeS10cnVuaworMzM2NTUgNjE0OWYwYTBiOGY1ODQyMjI4OTdiNjFkMzViOWQyOThiYzA3ZDE5ZiBhc3QtYnJhbmNoCiszMzY1NiAyMWVkY2UwOTEwNjlmOWFjZDJkY2EyYTg5MTkzYjY0YjA3YWZjNDhjIGxlZ2FjeS10cnVuaworMzM2NTcgMmMxZTczYjJmY2ExMTA3YjcxNzQxMTYwZjllZDE1MmE5YTRlMzEzNiBsZWdhY3ktdHJ1bmsKKzMzNjU4IDExODgwOWIxZWYyMDYxMjliNjIwZGVhMmEzNmM3N2MxYjI2ZTYzNDQgbGVnYWN5LXRydW5rCiszMzY1OSAyNzM5NWM4NDRlMjNiN2FkNDBhYWM1ZmQ4NWI0YTY1NmViZmZiZGZiIGxlZ2FjeS10cnVuaworMzM2NjAgNjU0OWQyZTQwOGYwYzYzYmZjNjZlODQwOTZiMDIwYTU4MjE0OTMwZCBsZWdhY3ktdHJ1bmsKKzMzNjYxIDVhZDQzOTYzMmRlNTRhYzE5ZTNiYmYwYmJmNzM3ZDMxYTA2Y2YzYzIgbGVnYWN5LXRydW5rCiszMzY2MiAxN2NlMTIzNjk0NzdhN2M4NmRjODY3ZmJjMGYyMGI3OTY0NDkyYjAxIGxlZ2FjeS10cnVuaworMzM2NjMgMjExODcwOTc4NTRjOTBlNTIyYjAxNGU4NDk2NTIwYjllZjgxMzQ4MCBsZWdhY3ktdHJ1bmsKKzMzNjY0IDFiZDZlNjJmYjA2Zjc3OTM3Y2RhZjc0ZDZiMjExYzE5ZDhiZWJmYzAgbGVnYWN5LXRydW5rCiszMzY2NSA3YmE0MmM5NjI5NGNjNjkzYzA4NGU5OTYzM2I0YmFhMWM3ZmViYWI0IHJlbGVhc2UyMi1tYWludAorMzM2NjYgZjI3MDhlZjYwMTY5YjE5MmQ5ZTA2NmQzY2Y2YTI2NGZlNGQwMDJlZiBsZWdhY3ktdHJ1bmsKKzMzNjY3IDJkYTA1YjViNWM2NTA1NWEzNjcxNmMzYzcxYTYyNThmOGM3ZDQ1ZTAgbGVnYWN5LXRydW5rCiszMzY2OCAyOWYwN2FkYzMwMTlkMDc1YzliMzJhODUzZGIxNDZkMTRjNmViNGIxIGxlZ2FjeS10cnVuaworMzM2NjkgOGYzMDZkM2Q2ZDU2ZWQ4ZGUzNzQyNmQ0ZDFhYjFkNDM4ODMyYzU2NiByZWxlYXNlMjItbWFpbnQKKzMzNjcwIDAwMDlhMDM4MzIyMjVhNjc1YzkwNTM5MDdhMDEzMzgyOTQyNGZlZTUgcmVsZWFzZTIyLW1haW50CiszMzY3MSBiNTk0OTU5MWQ5ZDU3NGUwNDVlMjFkMDU4MWMyMmNkYWEwMDg0NzA3IHJlbGVhc2UyMi1tYWludAorMzM2NzIgODZlNDcyNWE5ZGJkNGI5NTRkZjhkNDI5ZWY3MjBhOWMyNzFjNWYwOSBpbmRleGluZy1jbGVhbnVwLWJyYW5jaAorMzM2NzMgYjMzYzYwZmNjZTc0ZjlkZjBkMWY2MDE1YjRjZGQ1OTM1ZTEyODMzYyBsZWdhY3ktdHJ1bmsKKzMzNjc0IDM1Y2NmYzE0MGNhYzBjMmYzY2FkOWViNjgxM2FhNDc2OWFiYzhjMWMgbGVnYWN5LXRydW5rCiszMzY3NSA3MzBhYmZjZjI2MTBlOWM3MWNiMDA1NWIyOWJlNjM0MWMyZjU1MWIyIGxlZ2FjeS10cnVuaworMzM2NzYgNjczYmNlZDk5MTgwZmQ1YWM3NTI1NGU5YTI2OWUwYjI2Y2RmODc1NSBsZWdhY3ktdHJ1bmsKKzMzNjc3IGFhNDRlMDY4ODg5NmEwNDUzODUyOThhM2ZhNTgwYzdmOWQxZThkZDEgbGVnYWN5LXRydW5rCiszMzY3OCAwMmU1YjRiNjdhNjYzMDNjNDlhOTdkOTZhZjBhOGM2OTZiZDNiZmE1IGxlZ2FjeS10cnVuaworMzM2NzkgMDk1NDY5YzdhYmU3MjcwMjAwMmNiYzNlYmJmYTQ3OTJlNzVjOTI3YyBsZWdhY3ktdHJ1bmsKKzMzNjc5IGZjZTVjOWU5YWJjNzIyMzk0Y2IyZTkwOWI3ZTJhMzkwODBkNDQ0OGUgbGVnYWN5LXRydW5rCiszMzY4MSBlMWJiMTI2MmYwYmMxNDYyM2Q2NDZiMDBjYjU0NzViZDAxOTg4MTAwIGluZGV4aW5nLWNsZWFudXAtYnJhbmNoCiszMzY4MiA4M2UwNmZlMTI0YTE5M2E1MzRlNDQ4ODk5YjViNTk3NTU1MDRlNGRkIGxlZ2FjeS10cnVuaworMzM2ODMgNTNiNzYwYjAyN2I3NzEyYjA2N2QyNGViYzAzZDUxN2VkZjgxMGNhZSBhc3QtYnJhbmNoCiszMzY4NCA5NmZhOGYwYjllZWJhN2ZjZDJhZjA1MWM5NGJmN2EyNGU4ODVkY2IwIGFzdC1icmFuY2gKKzMzNjg1IGNmYmI3YjgyNjkyZDcwZjA5NzFlMzdkZjU3NTA3ZTMwMDUyNzNhODkgYXN0LWJyYW5jaAorMzM2ODYgZjgyZWIxNjA0NDBiZGE0OWVjMjI4OTRmZjdjNTkyOTZlODFlYzhlMCBsZWdhY3ktdHJ1bmsKKzMzNjg3IDUyZGQ1NDhkM2JlOWE5N2FkNzc5YmIxNjUxY2JhNGM0MTY2NjQyZDYgbGVnYWN5LXRydW5rCiszMzY4OCAzYWRkYTgxYTBlMGJkMDUyNGE3Y2JiMWE0OTM5OTQ5Yjc4ZGY5NDNmIGxlZ2FjeS10cnVuaworMzM2ODkgMzVkZWExMGRjZGM0NWU4NWMxYWU0OTcyMmY3YjI1NTQ1YTAxN2MwMCBsZWdhY3ktdHJ1bmsKKzMzNjkwIDFmYmFhMDViMzVjMWJmMGVjMTViNTllMTE2NGExZjRjYmZjZDRmNjAgcmVsZWFzZTIyLW1haW50CiszMzY5MSA4Y2Q5NGQxMTdmODc3ODkyN2M0NGIyOWFlZmEwZmUxZGI0NDgyYzlhIGxlZ2FjeS10cnVuaworMzM2OTIgMzdjY2YxYmM1NGUwNDRmYmRjNmIyNDQ1YmU1OTkwMWJiOGQ0YTg2MCBsZWdhY3ktdHJ1bmsKKzMzNjkzIDE1ZmM4M2M1MDVlMzE0OTcwMjZiMGE5ZjU3NmYwNzhhZjQ5Y2RlODcgbGVnYWN5LXRydW5rCiszMzY5NCBjZmE5ZjA0OWMyMDRjNjhhYTJmMjIyNGRjNDg5OTA5OWU3MzE5MDRiIGxlZ2FjeS10cnVuaworMzM2OTUgNGI1NzAyMzA2YzU4MWIzZWY2YmNkYmRjZWVhNWU4OWZmN2JkYWY0MiBsZWdhY3ktdHJ1bmsKKzMzNjk2IGVmYTFiYjY1NmIyYjZlNTE5YTcyM2JjNTYyODQ1ZDEwMTlhNGM5MzggbGVnYWN5LXRydW5rCiszMzY5NyBhMTMxNTJiMjVmZThkZjkzZDBhMTYxZmM1M2RlNjM0M2Q5Y2Q2ZWRjIGxlZ2FjeS10cnVuaworMzM2OTggZGU3ZDlhMmI1ZmFjMzA4MzI0MDZmZWNkODBjZjI2OWEzN2UzODU4YyBsZWdhY3ktdHJ1bmsKKzMzNjk5IGVlOGJhY2M2ZjA2OGQ2MTc0YjNiYzMwNjgzMjRkYTA5ZWIzMjUzZTkgbGVnYWN5LXRydW5rCiszMzcwMCAyOTA5NDAxNjM5N2Q2MjYwZDRlZjk0ZDYxMWQ4Zjc4YWRhZmUwYzI4IGxlZ2FjeS10cnVuaworMzM3MDEgNjc0Y2Y1YTI0MTQ3ZWJiNjgzM2NhMjc1ZDMzMzlmNjNkMGVmMWIzNyBsZWdhY3ktdHJ1bmsKKzMzNzAyIDEyYTdmMjE1NjQ4MTU0MTdjZDhjNjRiMGU4MGE0MWFjNmRjNDBkM2YgcmVsZWFzZTIyLW1haW50CiszMzcwMyA3NGE1Y2U0OWE5MmZjODMyYWQ0NDA1ODA4MzQyYzQwZjk3ZDZkZjBmIHJlbGVhc2UyMi1tYWludAorMzM3MDQgMGQ3OWRjODU0YWM0NjkwZWQ0MTVjODBjNTgyYTE3YWE0ZTM1OTgwMiBsZWdhY3ktdHJ1bmsKKzMzNzA1IGE2MjE1M2Q5YzhkNjUxNzI1MWRkYTdhYTJmYjlhMDU3Njk3NmI0MzIgcmVsZWFzZTIzLWJyYW5jaAorMzM3MDcgMjFiODEzOTliNjI4NDIwYTY4Yzg2Yjk4MDI1YmNiZTY3YzU3NTEwZiByZWxlYXNlMjMtYnJhbmNoCiszMzcwOCBhNTIwMzYxNGNhYTk2ZDZiOWNjMmU0ZTMxZjFlOTUwMjBkZDc1NGQyIHJlbGVhc2UyMy1icmFuY2gKKzMzNzA4IDE4ZWRjN2Q1N2RmZmI1NmJlODM3NGYzNWU0N2YzOTMyOWY1ZTlkMzEgcmVsZWFzZTIzLWJyYW5jaAorMzM3MTAgZWNkODU3MzIwNGNkMjRiMWZmMWY4NGI3N2RhODIxMGI4NWY0NTgxNiByZWxlYXNlMjMtYnJhbmNoCiszMzcxMSA0M2IwYTQwNGQ0YTAxY2MxNzk4ZTQxMzU1ODU1OWZlZTgwYWEyZmUxIHJlbGVhc2UyMy1icmFuY2gKKzMzNzEyIGMzZTY5ZjM3NmYyOWIxOTExNDM0MTRlMmVkMDI5OTA0YjM3OWRlYzYgbGVnYWN5LXRydW5rCiszMzcxMyAzZmU4MmQ1N2QwZDE3ZjFkOGQzOTVlYjUyYjAwNDM4MWEzMzk1NmZmIGxlZ2FjeS10cnVuaworMzM3MTQgMWQ2M2UxNTM5ODlmMDM1NDZhZThiMmFkMGQ3MGIyZDNiN2JiMzI0NyBsZWdhY3ktdHJ1bmsKKzMzNzE1IGI3ZTJkNzM4MGNiMjA5N2M3MWE0YWUyYzA4ZmU2Yzc2MWVhNjMyY2QgbGVnYWN5LXRydW5rCiszMzcxNiA3MDJhYTZlYjExZjliM2QwZDM3ZTRlZjRiOGUxMmEzMzc4MzdlODcyIGxlZ2FjeS10cnVuaworMzM3MTkgYjgyZWEwYjA3YjBhYjhiNWI0MzcyZDQ3ZDkyMzhlZTFmZjhlNTZjMiByZWxlYXNlMjMtYnJhbmNoCiszMzcyMCBjMzQwYjI3ZDczOWIxMTJmYTU2MDc4OWVjNTUxZDRhZDc4MjEzZWJjIHJlbGVhc2UyMy1icmFuY2gKKzMzNzIxIDAyNTI5ZmIxODgxNWEwODhjYjkxNTk2YjljYWIxMTYyYmVjZDhiZWQgcmVsZWFzZTIzLWJyYW5jaAorMzM3MjIgZTU5YTM2YTE4MDVlZDZjYmVhNDA4YzlhNjlmZGM1ZmRhNjZkNDNmNiBsZWdhY3ktdHJ1bmsKKzMzNzIzIGU0ZWU5ODZhZjFhMDdmN2Q0OGUyNWYwYjUzYmUyMzI5NTcyYzRlNjcgbGVnYWN5LXRydW5rCiszMzcyNCBlMTQ4Mjk2ZDhhOTM4OGVmZWQ5MDc5MzI5NWYxNzUyNjFiZTEwODQxIHJlbGVhc2UyMy1icmFuY2gKKzMzNzI1IDE4NzMxZDI0ZTNkMTAzNzcxYjJiNWRjZTBmMjA4MjBlMWNkNWY4OGEgbGVnYWN5LXRydW5rCiszMzcyNiAyZjAzZjgzOTg0YjA3MWM5MDAxM2M4NTQ4ZWJmNzIwN2Y5ZDg4ZTI2IGxlZ2FjeS10cnVuaworMzM3MjcgNjc4NGEyNDE2MzMxNTBhOTg1OTBkOTE3ODVhN2MxMmMxZDg3MWQ4NSBsZWdhY3ktdHJ1bmsKKzMzNzI4IGU2MjFhOTdiZmExNmIxZGRmNWYwZjMwYTIzZmM0OWZkZjVmZTc1ZjkgbGVnYWN5LXRydW5rCiszMzcyOSBlMjEzY2ZlMTdhNjI0ZDNhNjA4MWI4YzI3ZjMyM2UyZDhiN2NjMTJkIGxlZ2FjeS10cnVuaworMzM3MzAgZDcyNTQ3YzkxNWQ1YTY0ZWY1Y2I0ZDA4Y2M2NjBiYWJlZTBjM2NjMCBsZWdhY3ktdHJ1bmsKKzMzNzMxIDY3NzAzODg3M2EyMmI5NGRlZDQ4ZDM2MTY3ZGVlNWVhN2FlNmQ4ZTMgbGVnYWN5LXRydW5rCiszMzczMiAwOGYzOGRhZmM5OGE3MDY0YzRiNmU3MGM1M2I3ZmYyYmE3MDkyY2M3IHJlbGVhc2UyMy1icmFuY2gKKzMzNzMzIDhkOGNkZWUzNDRhZDU2Njc4NmQzMTRkNzQwMGYyMzljNmMyZjlmNWUgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzQgOWUwZDM5YTJkMzdlNDlkZWMzYTFiNjI2MjFlNDI3MjdkZDQwODE3ZSByZWxlYXNlMjMtYnJhbmNoCiszMzczNSAwNDA2ODc1Y2E3ZmQzYjYxM2NlNjE2MTNmNTFhZTNmMzJjZjY3N2JhIHJlbGVhc2UyMy1icmFuY2gKKzMzNzM2IDZmNmRlNzYxZWY5YjdhZGI4Y2I1MWMzNjUwM2YyMzYzMzYyZDgyZWUgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzcgMjRlNzM3OThlZDA0ZTRlZDdhZjFlMDU2ZTMyNjliZDk5ZDJhZjIzYiByZWxlYXNlMjMtYnJhbmNoCiszMzczOCA3MDU4ZGNmNzMzZDQ2NmMwMDJhYmFkMjRhMTRmMGQxYWE4OTAxNWRhIGxlZ2FjeS10cnVuaworMzM3MzkgNDNjOTc3MWUwYmUxMGFhNTBkODY2MmU3MjFjYWE3OGQyMWRlYzgzMiBsZWdhY3ktdHJ1bmsKKzMzNzQwIGNlMTg1MDM0YjM4MDdkZDgzNWZmZDlkMGFkYTA4MDk0ZTY4NjQ2ODEgbGVnYWN5LXRydW5rCiszMzc0MSA2OWM4ZTM5ZjZlZTZjNTZhMjZlY2MyYTUzZGViNmU2MDk5ZDhmYjUyIGxlZ2FjeS10cnVuaworMzM3NDIgMDUwNGJhOGVmYmI2Y2RkMTFmMWE0N2NhZjBiNDI0ZmNhNDMzMjk1YyBsZWdhY3ktdHJ1bmsKKzMzNzQzIDBjNjIxODAxNDA5YWYyODYyYmJhZDFiMTlhYTdiYzgzOWQ5ZTAyMzEgbGVnYWN5LXRydW5rCiszMzc0NCBkOGM4ZmUwYzczZWRlZWQ4M2QzNmRjNmM4YmEyNTRiM2MxMDJiYmQ5IGxlZ2FjeS10cnVuaworMzM3NDUgNjQzZmZiN2RiMThmZDA1ZjlmZTI3OGI3MTIxOTgyMjE1MDVjOGFiZiBsZWdhY3ktdHJ1bmsKKzMzNzQ2IGQwOTk0NGNlZTNhNGZlNGVkMTQxZGVjNDMxY2Y2MTUzMGQ0YzE0MjAgbGVnYWN5LXRydW5rCiszMzc0NyA1MjZjMTJhYjM2YWYzOTgyZjcwNGJmMjUyZTdkOGE2NDYyYjRlNWFiIHJlbGVhc2UyMy1icmFuY2gKKzMzNzQ5IGQ3MzhhMDdhMjkzYTM1ZjQwMzNiYzc5ZGM0OWI5ZTM4MGNiYTc2NWQgcmVsZWFzZTIzLW1haW50CiszMzc1MCBjOWEwMDU5MGI5MDFkZGRiZTY2YWM5MTc2Yjg1MjJiMzRmN2ZjZDczIHJlbGVhc2UyMy1tYWludAorMzM3NTEgODAxNGZiODBkMTQ0NTM5Yjc0ZGYzMjhkY2VhMWQxNmQxODM1YmYyMyByZWxlYXNlMjMtbWFpbnQKKzMzNzUyIGRiOWQ2MzAyMzdhNjU3NjU4MjNjNzVlZTlmNjNhOGViNThlOWVmMWYgcmVsZWFzZTIzLW1haW50CiszMzc1MyBkOGU1MmJjZTJjZjkwM2I0N2FjYWM0NDA0MDFiNzEwZTk1YzQ0NmFiIGxlZ2FjeS10cnVuaworMzM3NTQgNWEyYTkxYjk3ODEwYTFjYjM0M2M5ZTRjZWQyODdhOWM0MGIxZDgyOCBsZWdhY3ktdHJ1bmsKKzMzNzU1IDJjZmFjYTYyYTk5MDczZGFjMDRkMGFmMWRjZThkNTY0ODMyM2I5NDcgbGVnYWN5LXRydW5rCiszMzc1NiBhZTg0ODU4NjdkMzA3MTFhYjk4YTdkNDcwMGQ1ZjVhYjMzN2ZkZDgyIGxlZ2FjeS10cnVuaworMzM3NTcgNDk0YjA3YTVlMmU1N2NiYzIzODgzZDU1YWY4ZDlkMTNjOGFkYzY5MCBsZWdhY3ktdHJ1bmsKKzMzNzU4IDc4MDFiMTNjNTJjOTQ2MTJjNzQyNjI5MGRhNmNiYmVhMTdiNGJkOTYgbGVnYWN5LXRydW5rCiszMzc1OSAwY2ZjNmNhYmNlODg0YTUzMGNjZWI1OGRiODdhMWMzMzJkMWJlYmU4IGxlZ2FjeS10cnVuaworMzM3NjAgYTAzMDBlYTYzOGRkYjQxMzAxOTA5NjdmMjE4MGZhMTZlNzVhMmFmNiByZWxlYXNlMjMtbWFpbnQKKzMzNzYxIGIyNGU5ZDcxZmEzY2RiYzdjOTEwZWU3ODA2N2ExNDA2ZDZhZDJmMGMgbGVnYWN5LXRydW5rCiszMzc2MiAxZDViZTY5ODFkNTdlZGQ4NzJjNGM1MzNlNDk2YTE5ZjgwZDVlNGI0IHJlbGVhc2UyMy1tYWludAorMzM3NjMgZTQ3N2I1OTk5MjRkYTgzZjU1NzM4MGE2NDUwMDE5ODUwOTk3OTgzYSBsZWdhY3ktdHJ1bmsKKzMzNzY0IGFhYjEwODlmMGY4NWRlZWJiZDU0NWY5Y2MyM2Y0ZjRhMjAyOThjNjYgcmVsZWFzZTIzLW1haW50CiszMzc2NSA0YWRmZDc2NDY2YmM2YzA2ZTQ4NGI1MmZlNGEyMzg2YmRiODI3NmVkIHJlbGVhc2UyMy1tYWludAorMzM3NjYgMjAwMTY1ZDExYTk0NjIyYWNlYmIwMjFmOTYzNTg0YTgxNjk0MzQ0NiBsZWdhY3ktdHJ1bmsKKzMzNzY3IGYyNjE5YmQ2ODNkYjNkYjFiYjc4YjBmMDU1NjE2YjdmZjdlZTE0ZWUgcmVsZWFzZTIzLW1haW50CiszMzc2OCAzNTRjN2VlNDM4YmY0ZWEwMTc0ZjkzYTcyOTZjN2VkYTBlMDE3NjcyIGxlZ2FjeS10cnVuaworMzM3NjkgN2FlYTFiNWNkZWJiYTJmNzZmZmM4YjM4Zjg3ZDExNjBkNzc1YjBhZCByZWxlYXNlMjMtbWFpbnQKKzMzNzcwIDU4OWQ1NTQ1YWY0MTE2MzAyNjQ0MDcxYTg3ZDE0MDNjMThiYjdkNzggbGVnYWN5LXRydW5rCiszMzc3MSAwZTY0MjQwODAwZGQxM2M3MWQ5ZDQ3YWM1YTUwMzRkMTMzMWI4ZDU2IHJlbGVhc2UyMi1tYWludAorMzM3NzIgOThlNmFjMWQ4Mzc5NzE5NjNmNDUxOGUyYTM4OWJmNzE5YThiM2Y4YiBsZWdhY3ktdHJ1bmsKKzMzNzczIGFlMDI0MmUzNDU5ZWVhYTk1MjNmM2U3NDY3MzkxYmQwOGQ0MThjNzUgbGVnYWN5LXRydW5rCiszMzc3NCA5YmQ1YzA1MmIzMDhiNzhhNzJlYTI5NzZhZWQwN2NmYmU3M2E0MzdjIGxlZ2FjeS10cnVuaworMzM3NzUgMTcxODE0ZjVkY2M2MzIxMGI2MjFhNDNiNGE3Zjk1ZDNkOTExNDM1ZCBsZWdhY3ktdHJ1bmsKKzMzNzc2IGFiMTBjMGMyNWMwMzA0YWQ0YTM5ODEwMzMwZGE5NzYzNmQ0M2IzMTkgbGVnYWN5LXRydW5rCiszMzc3NyAwNjFkODZmYzExYmIzODM0ZGI1OTdlNzI3NzUzNDRiYWRjYTdhMjc5IGxlZ2FjeS10cnVuaworMzM3NzggNzM1ZWMwODY5NDkyM2ZlYjYwNjFjYWZhMGUxMGU3NzgzZTVhNWRhZSBsZWdhY3ktdHJ1bmsKKzMzNzc5IDdiZDQwMjA1MDk0Y2M0ODIzYmFmM2I5NTQ0YWI4NDAzMDY5ODQ4MzAgcmVsZWFzZTIzLW1haW50CiszMzc4MCAzNmMyNzczODFkNzhiM2JiNjM3NzA1ZGY1MTAzMWFiMzdmZWJkZGQzIHJlbGVhc2UyMy1tYWludAorMzM3ODEgOGNjODAwMDJmYjkwMzcwOGNlNDE1NDBjOGE4ZjgyODkxNDljOTFiZSBsZWdhY3ktdHJ1bmsKKzMzNzgyIDJiMTRjOTgyN2Q5Y2Q3M2JhNjc3ZTM1N2RhMTdlZmQwZDMzMDk1NzMgcmVsZWFzZTIzLW1haW50CiszMzc4MyA1YjFkZGM0YjQ5YjliYjFmOTYyYWMzM2VmZTczYWMxNTAyNmFkZDU1IHJlbGVhc2UyMy1tYWludAorMzM3ODQgOGI3ZTM3YjVmMWVlNDUxZDI0OTE4YTkzYTVlZjBmNmZkY2M0MDA0YiByZWxlYXNlMjMtbWFpbnQKKzMzNzg1IDc2MmUxYjIwODhlNTE4OGRmZWU2MzA2OTk0OWJiNzk4M2FlYjIxYzUgcmVsZWFzZTIzLW1haW50CiszMzc4NiA1OWZmNzdiMGFjNzI0YWIxMmE1NmU2NTZjODg2NzAzN2JkMzRkZTljIHJlbGVhc2UyMy1tYWludAorMzM3ODcgOGY5M2IwOWIyYmI1ZjM0YzI0NTEwY2NmY2VkNzljZjY3ZDg1ODI2NCByZWxlYXNlMjMtbWFpbnQKKzMzNzg4IDdmNTQ4OTE4NGQ5NDMzMGFiZWI0ZjM2MDYzNzdjZWY2NTNiNThiZTMgbGVnYWN5LXRydW5rCiszMzc4OSA2MjE2ZTc0Yjg4ZWZiZTM2ODU5ZDk5YTNhNjQyZjk0Y2Q0NjZjYTg1IHJlbGVhc2UyMy1tYWludAorMzM3OTAgMWM0NTE5NGQxMjRkODk1MjRmNGI2Y2Q4OTAwYTljYzQwZGMwODE2MyBsZWdhY3ktdHJ1bmsKKzMzNzkxIGIwNzZmNjljNWRhYzMxMmM4NmM4YmE1YmJlZWMwMjExN2I4NTk3NTcgcmVsZWFzZTIzLWJyYW5jaAorMzM3OTIgZDA1ZDBlZDQ2NWQ4MDE2NWRlYWQxOGZmOWY5MThlYzJjNTkwOGNlOCBsZWdhY3ktdHJ1bmsKKzMzNzkzIGRiZGUzZGQzMTA2ODUyZWZkMjFmMzhiNzI4OWI0MzM4ZTMxNGZjNzQgcmVsZWFzZTIzLW1haW50CiszMzc5NCA4ZWJiOWIzNTc2ZDEzYzlkMDM0NzRkMjUxYTgyZTExZWFhODliNDk2IHJlbGVhc2UyMy1icmFuY2gKKzMzNzk1IDUzYzJmZjFkODFkMTY5OGFkMDliM2I1ZjM0YTRjNDdhYzg0NmU4OTIgcmVsZWFzZTIzLW1haW50CiszMzc5NiBiZmNjOThkZTdmY2MyNTA0OGI4OTlkNThjMzQ4YTA1MGI1MWJmODYwIHJlbGVhc2UyMy1tYWludAorMzM3OTcgNDBmNWYwYjQ0Y2M0NDdmNzhlNjAyMzAxZWE3Y2EyMzQwMzc0ZTQ3OCByZWxlYXNlMjMtbWFpbnQKKzMzNzk4IGJhNDhlNTcxYTRkNWNlOWY2MzQxZjVjNzlmYmQ4NDExZDcwNmEzNDcgbGVnYWN5LXRydW5rCiszMzc5OSA1YzhiMmE2NjY2YzM2ZmM2MzJkMmZmZTBlNDVkMGFjZWQ4Y2Q2ZmZiIGxlZ2FjeS10cnVuaworMzM4MDAgYWZkZTQwMmUzYTU1YTk5YjI1N2M5ZDJiZmM2OGJmOWNhMDljN2NiNSByZWxlYXNlMjMtbWFpbnQKKzMzODAxIGQ0Y2NlNTUzNDc4YTgxMGQwNGE5MjM1MmNlZDhkYWZlM2M2MDJjMDYgbGVnYWN5LXRydW5rCiszMzgwMiAwYWM0Mzk2YjE4OTRhMGUyOWQ4YzBiMWNkNTkwYTRkMWU2Y2VmYmM0IGxlZ2FjeS10cnVuaworMzM4MDMgNzRlZjhiOGUwMDYxNzRhNTNjMGI1YTY0NWM4OTEzMGQ5NmMxZTJiMiByZWxlYXNlMjMtbWFpbnQKKzMzODA0IGUzYzliNDhkZTYwYWUyNzQwNjhiNjg0OGQwMjNiNmRmZDE0MDQzOGUgbGVnYWN5LXRydW5rCiszMzgwNSAwNjAxNmQ1ZDgxZDdkNGUxZDQ4MGEzODAwYTU3ODc4ZDQ5M2MwMDkyIGxlZ2FjeS10cnVuaworMzM4MDYgMWM0ZDE5YjliYWFjNjUzZmYwYzNhYjlkNzViODU5ODAyMTE1ZDZjYyByZWxlYXNlMjMtbWFpbnQKKzMzODA3IGQ2Mzc5NjIwZmIwOGQxNGE3MDZkMzc1NmU3MjM2YWNhY2NiZmZiMjEgbGVnYWN5LXRydW5rCiszMzgwOCAzZGM4ZjJiNDI0OGMyYjgzZWQzYTQ0Y2ZiOWRiZjU2YWY5YjI5NzdhIHJlbGVhc2UyMy1tYWludAorMzM4MDkgMDlhMmNkZWFiOGMwYWU4M2UyOWEwNjc2ZjdjYjMxNTk1NjAwNjNlZCBsZWdhY3ktdHJ1bmsKKzMzODEwIDUzMGUyM2JmOWUxOTNlZWFjZjg4ZmRjY2M4ZWVjNjU0MDE3NDA3NjMgbGVnYWN5LXRydW5rCiszMzgxMSA5MDAzMjcwOTViMDUxNDAzZmE2YTg4NDAyNGFiNzFlNzk4MTVhN2I1IHJlbGVhc2UyMy1tYWludAorMzM4MTIgNTI4NDM3YTNmNWY3YTc1YzE5MTA4OGE3OTdiY2EyYmVmNDBmMzAzMyBsZWdhY3ktdHJ1bmsKKzMzODEzIDY2NWY4YTZmNDM3ZGI0NmJjZTgzN2Y3NDFkYzY5MjgwMDBkYjg5MWIgcmVsZWFzZTIzLW1haW50CiszMzgxNCA0MzUzZjA0NDIyZTMyMWZkMTI0YjFlYzAyYzJjNmNkODc3Y2E0NDViIGxlZ2FjeS10cnVuaworMzM4MTUgMjY1MDc5ODgzNjY4NzM4ZjZkZjRjNjc1ZjZlZGI1Yjk1ZjQ5NDdiNiBsZWdhY3ktdHJ1bmsKKzMzODE2IDYxNmE4YzBjYzkxNzA2YWJlMDQxNTc3Y2E5NTY3YjI3NGRiNWY1MmIgcmVsZWFzZTIzLW1haW50CiszMzgxNyBhODhlNmRmYmZkNmQzNGYxMDdiZDM2MGZiNWZjZWU3ZWJlNjQ1ZjU0IGxlZ2FjeS10cnVuaworMzM4MTggZmIyYWJjYTJkMmQ1NTljNjFkNmQ4ODJiY2UxN2FlYjVkNDMzODQwMyByZWxlYXNlMjMtbWFpbnQKKzMzODE5IDkyZDY4MDgzYTBmZDY3YmZhYmVmY2U3NDRhOTk0NzU1ZjZiOTY0MWIgbGVnYWN5LXRydW5rCiszMzgxOSA4ZTYzYzVhMzNmNDcwZjdjMzYzZTM4YTdjMTYyZDI0OWVkY2IyYmI2IHJlbGVhc2UyMy1tYWludAorMzM4MjAgNDYxMDMwZTZiZDY3NmM1YjdkOTk3YmM3MTZiNDRhODI5ZmQ5YjM5MSByZWxlYXNlMjMtbWFpbnQKKzMzODIxIDY3YTkxZjc1MGM2MzEyY2M0Zjc4OTMzYWEyMzViMDMwNGVmYmI3YzUgcmVsZWFzZTIzLW1haW50CiszMzgyMiA5ZjZlMmRlZTE4OTJmNzNiOTIwNmVhYTJjNmM1NjUxYTZjYzI5ZDIzIGxlZ2FjeS10cnVuaworMzM4MjMgN2I5MDY1NzFkYzY4YjRmMDNhMDY0MTFhNDI0OTkzMjk0OTM4N2M2ZCByZWxlYXNlMjMtbWFpbnQKKzMzODI0IGZlMDU3YmVhODg1NjY5Y2Q1ZDBlYzlhMDUxY2JmMGI3YTU0MTdhZDMgcmVsZWFzZTIzLW1haW50CiszMzgyNSA0MGFhNGExMGY0OWI2YTViZmYyMDNjYjQxZWMxNDk4OTVlNjFlNzIyIGxlZ2FjeS10cnVuaworMzM4MjYgMzc3OWViNDgzZTZiZDVkYTQzZjIxM2M5YTUyZTM0MzIxYjVlNzc0NyBsZWdhY3ktdHJ1bmsKKzMzODI3IDcyMGY0NGM2ZDExYzJkMTRmMDVkY2VhNTRlZWM2N2Q0NTIyMTllYTEgcmVsZWFzZTIzLW1haW50CiszMzgyOCAxOWMwZjgxN2NiNDc1NzVjMDY1ZTQ3NDU1MzZlMjgxYmY4YzkyNjFjIGxlZ2FjeS10cnVuaworMzM4MjkgOTk4YjA2NzMwYzlmYjBlNTljZDE4NTJhNGI5MmFmMzdkNjE3ZTllNCByZWxlYXNlMjMtbWFpbnQKKzMzODMwIDIxMDY3NmVjOWQ1ZjE3ZWU2NGZmM2FkNzM4ODhlNjVmZmE2NmMwNTUgbGVnYWN5LXRydW5rCiszMzgzMSAxNTk4ZmJlNjkzZjk5Yzg1MjY1MzIwZTEyMjgzYThkYjNjZWRmZTI0IHJlbGVhc2UyMy1tYWludAorMzM4MzIgMjkwMzJmMzdkYzhmODI3ZjM1OTVlMTgyZWM2NjY4YTg5YTczZjQ0MyBsZWdhY3ktdHJ1bmsKKzMzODMzIDRiNDZkNTQ0OWQ0OTk1NzIyYmM0Nzc0M2E0OWVlNDg2ZWVlNTZkYzMgbGVnYWN5LXRydW5rCiszMzgzNCA2ODQyY2ViMzlhMTQ0MTZkNGVjNzcwZDU5MDQ5MjUzYWNhYzgyOGRlIGxlZ2FjeS10cnVuaworMzM4MzUgMmM2ZjkyY2RkYmFkOWE5YTJmYTQ1OGZiNTZmZmI1MjFjODk4Mzc3ZiBsZWdhY3ktdHJ1bmsKKzMzODM2IDUzZjkwNjlmYzY1MGVlYWNmYmQ4ZmY1ZWU2NWZmZjlhM2FiZGIyZTIgbGVnYWN5LXRydW5rCiszMzgzNyBiODYyM2IyYzliY2U2YWI5NmYzMmQ5MGY2YzQ3ZWUxOTA1OWI3ODI4IGxlZ2FjeS10cnVuaworMzM4MzggODJhMWQzZjIxMGFkZjA4YTBiNjYxMGZiNzZkZTczZWM5Yjg4OGIxNCBsZWdhY3ktdHJ1bmsKKzMzODM5IGMzM2QzNjg5ZWQ1YjZjYTBiMDM5MjA1OTA2ZmRmN2MzZGY5MjZhMDIgbGVnYWN5LXRydW5rCiszMzg0MCBkZTI4ZDk5Mjg4NTU1NmRhZTgxNGVmOTNkNmZhNjEyMzU1NGM3ZGIzIGxlZ2FjeS10cnVuaworMzM4NDEgNWQwYzg3Yjk1NzBkM2FjYjdiMTliM2UwNWJhMWI2OTg2Y2E0NWUyOSByZWxlYXNlMjMtbWFpbnQKKzMzODQyIDUyM2MzZDYxZGJkZGU3MzRhMGY1NmRiZGI5NGEwODAzMmIyMzAwMTcgbGVnYWN5LXRydW5rCiszMzg0MiAzMDRiNWEzNjU1NzYxMTQyMThiOGJjM2RhZmY4NmQxM2EyNDkwNmUzIHJlbGVhc2UyMy1tYWludAorMzM4NDMgMThiNjdhZTljZjQ1ODI0MzY3NjNhNThkOGRhNTkwNGU2ZWMzNWZkMiBsZWdhY3ktdHJ1bmsKKzMzODQ0IGRmNjU0ODYxY2NmNmExMDlmNDEzNTJjMzYwNGU2ZjRmODk1YzdlMDIgbGVnYWN5LXRydW5rCiszMzg0NSBmNzQ2ZDU2OTBhZDZkODM5ZGY1YjRhNzczNjFlZDJhMWZiYTgwMWE4IGxlZ2FjeS10cnVuaworMzM4NDYgYWE1Y2I4ZTNiOWVhNWI3ZDRkMDFlNWYxOGQxM2E5ZmZjMGRiMGVhMSByZWxlYXNlMjMtbWFpbnQKKzMzODQ3IGYzNjU0YzVhZGE5NDQ4Y2ExNTE0NTkxM2I1YWNiZGExMWYyNTliMmMgbGVnYWN5LXRydW5rCiszMzg0OCA0NmJjYWIyYjc0ZTkyNDg0OWJlNmMxZTZkMjllMzA4OGNjNjQ2NDQzIGxlZ2FjeS10cnVuaworMzM4NDkgNDUwNWEwYjk3MjRjZjE3ZDA1NDg3ZmJlYzcxNjFhYjE1Y2NkZjdjNCByZWxlYXNlMjMtYnJhbmNoCiszMzg1MCAwNTY3M2IxNmJkYjhjMWU5YTkyOTIzOWMzYmYwNWY3YmU1MDJkNzlmIGxlZ2FjeS10cnVuaworMzM4NTEgZjRiNGJmN2U4N2Q3ZTBiZTVlNGZlNGFlYmZkYTBmYjM4NmY2ZjI2OCByZWxlYXNlMjMtbWFpbnQKKzMzODUyIGQ5ZjAyN2RjNjc2ZGQ5Y2Q1NTFjNmEwYWE0MThmZTYzNDgxZjczNDIgbGVnYWN5LXRydW5rCiszMzg1MyA3Y2MwYTMzOTQ2YTMwNDE2ZjQ4ZTU4MjkyY2VlNjQ2OTUwNGQyZjJmIGxlZ2FjeS10cnVuaworMzM4NTQgZjBkZmJjMTQxNDgzMzZiOGZjNmMwODdkNzRhZmRlZGViMjhmMDI1NiByZWxlYXNlMjMtbWFpbnQKKzMzODU1IDU5MGQ4Y2NhYmFjN2JkMGMwNTI1ZDU4NThhN2NhYTY3M2QxMTQzZDIgbGVnYWN5LXRydW5rCiszMzg1NiA2ZDc0ZjAwNmY4NGFjZTg0YzY5YTkwMTgzNmRmYzVmODU2YjZlNzIyIHJlbGVhc2UyMy1tYWludAorMzM4NTcgNTliYWQ3ZWZmZjAyMTY5NDcwMmM4NGIzMjRiODMxOTljOGM3ZGM3NSBsZWdhY3ktdHJ1bmsKKzMzODU4IDU2ODZjYTI5N2Y1NWY0ZjkyNzljYzdkNDYwM2JlM2Y4YWQ2ZjRhNGIgcmVsZWFzZTIzLW1haW50CiszMzg1OSA5ZjUzZTUzZjM4ODAyM2ExMDQzOGQxMjllZDJhMjYxZDM5YzFmNTM0IGxlZ2FjeS10cnVuaworMzM4NjAgMDgxM2IzMzYxMGNjMzVjMzljODUxM2ZmN2FjODE5MTIyYjRhYjM5YSBsZWdhY3ktdHJ1bmsKKzMzODYxIGUzNzM2MzBiZmVhYjc2NDBlYmYxNTgzNTE5OWI1NmVlMTQ5M2MxNjEgcmVsZWFzZTIzLW1haW50CiszMzg2MiBhNDljMWI3NjEwNmNlNGFjOGFmNTRjZDYyZTBlYTNlYmRhZDMyMjFiIGxlZ2FjeS10cnVuaworMzM4NjMgZTMyODFiMGRmNmE0MWM1OTY1YThiNDE3NWYwNDU3ZjE4ZWQ0YWVhNCBsZWdhY3ktdHJ1bmsKKzMzODY0IGI2OTgyMDliOTgyNzg4MzU0ZDMwZDRhMDBmMjdjNzJjOWUyZDkwZTYgbGVnYWN5LXRydW5rCiszMzg2NSA5Yjg5MTY2MzFlYjY5ZWMzMmU1YzljNDIwNTUyYjZlZjlhOWQ2ZGVhIHJlbGVhc2UyMy1tYWludAorMzM4NjYgNDQ2MDk3OWRlZWJmNWVjNjU1MzI2MmQ3MmJlYWY3ODY4MTU3NDYyYiBsZWdhY3ktdHJ1bmsKKzMzODY3IDk0MWQ0OWE2NWYwNmYxMjFmYzZhMzI2MmY2YjZlYjZmNzhiMjhjMzYgbGVnYWN5LXRydW5rCiszMzg2OCAzMzI5YjA1OGRiMjAxMmVjNmRjOTdiMGQ1ZDVhMjIyYTg4ZDc5YmU2IGxlZ2FjeS10cnVuaworMzM4NjkgNTQ2MTdlZDJkODMwODcwMjI5NjZmZjQxM2MxN2M0ZjJkODZhY2E2YiByZWxlYXNlMjMtbWFpbnQKKzMzODcwIDQ0MzUzM2QwODc4M2RjNzhkNmY3NDg3NjQ1ZTEyMDE5OTJkYjlmMTcgbGVnYWN5LXRydW5rCiszMzg3MSAyOWIxZDA3NjM3OTBhZjcwYzZhNDU3OGQyMWYyYTBkNDlkMjVlN2FlIHJlbGVhc2UyMy1tYWludAorMzM4NzIgN2NiNGFkNTkzMmU2MjZkZmU1ZDc4Y2E0NGI4ZDM2NDU4OWY1NTk2YSBsZWdhY3ktdHJ1bmsKKzMzODczIDQ3MDhmYTA4NjEyMWYyM2QyNzQ3ODhiZThlOTliZGU2ZThlZTJmMGUgcmVsZWFzZTIzLW1haW50CiszMzg3NCBlZjIxNjgxYTljN2ZiNjA5OTI4NzgzZWU4OTk1ODY3NzgxYjQwMDMxIHJlbGVhc2UyMy1tYWludAorMzM4NzUgZGM0MjQ5ZGQ5ZTM1M2E4MjI1ZGVmMTJhZGM3MTEyNDBkZGYzZTQwMiBsZWdhY3ktdHJ1bmsKKzMzODc2IDhlMmVmMjdmNjg4YjUzOTYwNjJmNjkwMjAwMTEzNzY4OTZlYmU0ZGUgcmVsZWFzZTIxLW1haW50CiszMzg3NyAyZDI3NGRhMDkyNzQ3NjlmMGIxMmQzZDE0MjFhYjcyNjE3ZGFkMGY2IGxlZ2FjeS10cnVuaworMzM4NzggOTQyY2VlYmU5NjcxYWY4NjU0M2M4YjU3Y2E5NDYwMWNlMmFlM2QzYiByZWxlYXNlMjMtbWFpbnQKKzMzODc5IDNkZGE1M2MzMTJhNWFhYjIzY2QwOTRlNjM1YzMyYjU5MTU0ZTlkOTMgbGVnYWN5LXRydW5rCiszMzg4MCBhMzMyZGNjNzkwMmI5NjBhYTAyNmE5YmMzODI3YzNjMDRhMjU2YjY4IGxlZ2FjeS10cnVuaworMzM4ODEgOTQxNDg4NmY1YzdhZGM2MTk5NDk5ZTdjOGI1N2Q3YTgwY2U4ZGExMSBsZWdhY3ktdHJ1bmsKKzMzODgyIDJhOTQxZmYwYTEzNjY1ZTAyZmVhMTY4NzQxNDAwYWIxNWJmZmM1NGMgbGVnYWN5LXRydW5rCiszMzg4MyBiNTVkNGEzZjQxZTg2ZTM5ODc1MDQ0YjRhOTRiNWIxZDY1YmU1ZDRiIHJlbGVhc2UyMy1tYWludAorMzM4ODQgM2RiNTBkMzEzNDBkOTNjMThiMzU1NjI0NGQzMzcyOTIwMWQ1OTE3MyBsZWdhY3ktdHJ1bmsKKzMzODg1IDRmZjM4NTcyZDAzNmU0ZmEzZmEyZjRjN2FhNTliNTY4MDhhZWQ2YzAgbGVnYWN5LXRydW5rCiszMzg4NiA3MWRmZDFlMWYyZWNjZDIxOGNiODU2MjE4MWQ4OTY2YTQyMDQ3OWZmIHJlbGVhc2UyMy1tYWludAorMzM4ODcgNjBhYWU4YTFlMjM3MjZhNDUzYTRlZjgxYWY4NTIyNTM5NDMzNzQ0ZCByZWxlYXNlMjMtbWFpbnQKKzMzODg4IDk0NjY1MjkxYWIxYmQzMzFkZDI3M2RkMGY0NWExYjNkOGU0YjA4NWIgbGVnYWN5LXRydW5rCiszMzg4OSBjY2I0MGRhOGM0MTJjNjAxODczNTg4NjAyODA3Zjc1NTk3ZWQ0OTgxIHJlbGVhc2UyMy1tYWludAorMzM4OTAgN2JjNzcyNTI3ZTQ0ZGI4YzkwM2RhYmNmODE4Mzk4ZTczN2I1MjllNCBsZWdhY3ktdHJ1bmsKKzMzODkxIGFmNTUzNWIwZTAwOWU2NjgzMGIwMGE5ZjhkMzQ4YjYyODM1NzY1YWUgcmVsZWFzZTIzLW1haW50CiszMzg5MiAzZWE1MmJjNzRkMTcxZjNiZThjZThkOWMwYTMyOTQxZDVlZDFiMWVlIGxlZ2FjeS10cnVuaworMzM4OTMgZDI3OWM0MGJkN2IzNmJjZTMxMDhlMmE3N2E2N2IzMGY4MTZhMTU3ZCBsZWdhY3ktdHJ1bmsKKzMzODk0IGE1NWZlZWEzZjkyMWRiNWExMGMwNGM4YWUxM2Q3ZWI4NWYyMDAzNGUgbGVnYWN5LXRydW5rCiszMzg5NSBmZDgyNGQ1NzRhOGZkZDEwMDU0NzhhODEyNGNjNjBkM2YyZTM4Mzk1IGxlZ2FjeS10cnVuaworMzM4OTYgMTMxYzU0ZjIwMmZkODQ0NjI0M2I1N2QyZjM1ZmFkMzc4ZjdhN2I1NyBsZWdhY3ktdHJ1bmsKKzMzODk3IDBmYTk5ZDMxZmI0ODEyMGU0NjFjYWE0Y2U0ZTFjNTU1OGYwMTc0NWYgbGVnYWN5LXRydW5rCiszMzg5OCBjMTBhMWNkY2U2MmI1MWI3OWE0ZjRmOTM4NGI2ZWYxMDE3OTNkYmQyIGxlZ2FjeS10cnVuaworMzM4OTkgOWE1ZDZlYjgxY2ZhYWYzNzZiZDA0NTM5ZGM1ZDlmMjRjYjU1YWZkYyByZWxlYXNlMjMtbWFpbnQKKzMzOTAwIDNiOTA3NGFkNzIzZTRiZjJhNTY5N2NmN2YyNTMyYTExYzJmMDk0OWEgcmVsZWFzZTIzLW1haW50CiszMzkwMSAzOWU5MjhkMDBiNjQzOThjNzdiNDg4Nzk4OTZkMGQ4NTIwYTU1NTZkIHJlbGVhc2UyMi1tYWludAorMzM5MDIgZDc4Nzc5MTg3YzdkZjA0OTM3MzhkYWJkM2UwMjYwMGMxYjM1NDI1MyByZWxlYXNlMjMtbWFpbnQKKzMzOTAyIGVmMWYyOTczZmFkODA5MDgyNDMzMTNiZDU2ZmZlOWY1ZjA3YWU4YTAgcmVsZWFzZTIyLW1haW50CiszMzkwMyA1YzU0YTc4ZjFkNTE1MmIxNWRjMTBhNzQzZjdkZTc5ZmNlNGE0YjI3IHJlbGVhc2UyMi1tYWludAorMzM5MDQgYmM2OWUwZGZkMmEwMzQ0OTdiNTZlY2QwMzkwN2ZjYjBmZjhkNWI3MyBsZWdhY3ktdHJ1bmsKKzMzOTA1IDY2OTU2ODg5OTMwOWZkYjg4Yzg4NDVlNmQzMWNiMmVjMGQ5OTdmMTUgbGVnYWN5LXRydW5rCiszMzkwNiAyNTFmYTA3ZmM1ZDFmNWYyYzAwMGY3MmEzMWVmNDYzZjdhZTkzMTcxIHJlbGVhc2UyMy1tYWludAorMzM5MDcgNGMwYWYyMmE4ZjNkMTI2ZGI3YThlZDQ3ZTI2NTlmOTg4NTJlYTk3ZiBsZWdhY3ktdHJ1bmsKKzMzOTA4IDQxYjZhNTM2N2VlNTY0NmI4ZWQ2YWI1NjUwNTY1NmM2NDY3ZjE5NjYgbGVnYWN5LXRydW5rCiszMzkwOSBkYzAxY2UyZjg1NTgyZGMyNDU0OWUxYzU5MDhmZTMxNjIyZmQ2ZTljIHJlbGVhc2UyMy1tYWludAorMzM5MTAgNzU2YjY1Yzc5ZjQwMDI0NWMxZGIzZDlhMmExOTg3OWQ1ODQ2YzQyZSByZWxlYXNlMjMtbWFpbnQKKzMzOTExIDBhYWMwNzY2MzQ0OGUzMDBkNWIwODM4MmFmOTZlMzI4NTZiY2FhYjMgbGVnYWN5LXRydW5rCiszMzkxMiBmOGViYWRlMmU3MjRkYzYxZmMyYjZmNzNiNzg3ODcwODFmNzNjNmY5IHJlbGVhc2UyMy1tYWludAorMzM5MTMgZDJlNGM5NGVmYmFhYjMxMGQwYzQ4NzdlZGE5NTk1NzU2OGY3NWNhNyBsZWdhY3ktdHJ1bmsKKzMzOTE0IGFjODZiMDcxN2FkMTk0NjNkZTM3OTQ3OGRmMjA1MzMxNzgxM2Y0ZmUgbGVnYWN5LXRydW5rCiszMzkxNSAwZmU2MGZhNjE3ZDhkYzcwNDFkNzVmYTk5ODJlZTFhN2VmZDQ4YmM4IHJlbGVhc2UyMy1tYWludAorMzM5MTYgMmRiOGM2M2U2OWNkNjRmMmI5YTJkMGQ3OTUzOWM5NWExNmNhZDQ5NyBsZWdhY3ktdHJ1bmsKKzMzOTE3IDZjMWU0N2Q1NGE3YTMwMWQ4M2UzYjdjZTg5ZTUyOTEzYjNhZTUxNDMgbGVnYWN5LXRydW5rCiszMzkxOCBhMzgwNjEwZWViNWFjNzk1ZGEzOTllMjlhOTYwNGE2N2FiNDBmNjQyIHJlbGVhc2UyMy1tYWludAorMzM5MTkgZDE1ZDQ0ZDlkNmY1Y2RkNWQ4YTFiZjg3YTE4MTYzOWMwMWJiMGM4YiByZWxlYXNlMjMtbWFpbnQKKzMzOTIwIDVlOTNhNGY2ZDlhOTlmYTIzYTI1OTM0NjZiNDkwY2EwMmIzMzI1ZTQgbGVnYWN5LXRydW5rCiszMzkyMSBiNTE5MDM1MDA2YzcxOTgwYzA1MzY1MzEzZmY5NzM5YmZjNTU3ODE3IGFzdC1icmFuY2gKKzMzOTIyIGU0ZmYwZGIzYjA4ODZkMDNkZjQ3ZGI4MWI2NWJlNmYzMTA0M2M1M2EgYXN0LWJyYW5jaAorMzM5MjMgYWMwZGIwMzRkZDE0YmQ3ZjBkNDUwNDczNTYxNDYzY2I5YzEyZWRjMiBsZWdhY3ktdHJ1bmsKKzMzOTI0IDg0ODFjOWJhZjc4NWQ1ZDJkNzAyMjk1ZWYxZjNjZTA3YzkyMmI4YzEgcmVsZWFzZTIzLW1haW50CiszMzkyNSA3YWIxYTQxZjE2ZGFiMTUzMDAzNmMxMjY3YTY0ZTdmMTBmY2MwMmUwIGxlZ2FjeS10cnVuaworMzM5MjYgMjFkM2IwNmRmNzkzY2IxYWM2ODU5MWM2YjY1ZmI2ZGIwNTZhOGRjMiByZWxlYXNlMjMtbWFpbnQKKzMzOTI3IDgyODdmNTIyYmVhMTc4NGNkZDUzMWE2ZjNmMjViMWY1YjdiNjE4NjUgbGVnYWN5LXRydW5rCiszMzkyOCBkZjhjYmRlNWM1ODgyOThiNWZjZTliMDU3M2YwODA5ZWQ5MzJlNDlkIHJlbGVhc2UyMy1tYWludAorMzM5MjkgMDU2ZjE2YTdhYmIwMzQ5Njk5NTY3MjIyM2I2YWUzNGJhNjdjYjBjNSByZWxlYXNlMjItbWFpbnQKKzMzOTMwIDQwMDBjYzZkYTkyNTIyMDdhYjg5ZmRiOWY4NTg0ZjJmYzVkMzUzMDcgcmVsZWFzZTIzLW1haW50CiszMzkzMSBhNWY2MDZmOWNhMDU3MWEyNGVlM2YwODFkZGVjOTAzNjRiMjVjOWYxIGxlZ2FjeS10cnVuaworMzM5MzIgYzA2ZGZmYjZhOTgyMjkxNDFmMzQyMGRlNDFkMzIwYmY0MWQ0NThhYiBsZWdhY3ktdHJ1bmsKKzMzOTMzIGU4MTczNTQyMzkzZmM0NzM1ZTE2MWVmZjI3YTA5NTk0YmI3YTQxYWYgcmVsZWFzZTIzLW1haW50CiszMzkzNCAyNDM0MWNiMjFmZDVjYjE4ZjNmM2U3Y2RlNWEzYWYwM2YwMjJlNmU2IGxlZ2FjeS10cnVuaworMzM5MzUgODA2MTc5NDAwZjM1NGVkYmMxZWMzMzNmOWNlYjY4YzhjNDE0MDlkZSBsZWdhY3ktdHJ1bmsKKzMzOTM2IGMzMGVkMTNkMzU4MjA5YTNiODRiMjEwODIyZjdhNzFmYmI0ZmFhMzYgbGVnYWN5LXRydW5rCiszMzkzNyBhMGY1M2EwNjk0NzAzNTNhYTU4MjQxY2NlNDlkMTEwZmI0ZDI2OWZjIGxlZ2FjeS10cnVuaworMzM5MzggMTA5ZDYzZjcwMzdjOTNhM2ZkZDExYWJhYmIwZDc5OTJkNDFjOWFlYiByZWxlYXNlMjMtbWFpbnQKKzMzOTM5IDQ5Njk2OGYzNjQ5ZThjMTM4NDQ4YmYxMzExN2RhYTk3NTM5N2RjNzEgbGVnYWN5LXRydW5rCiszMzk0MCBkZDQ1MWE2M2Y4OWU1OWExNjE4NzM5MGJiNzNjYTRlZDdlNWEyMjljIGxlZ2FjeS10cnVuaworMzM5NDEgYjk0MGFiOWEyYWJmNDRmM2U5OTg0NTRjZTM3NGZhMDI3MmM1NWIyMyByZWxlYXNlMjMtYnJhbmNoCiszMzk0MiBkZmJkMjgxMTJlMDk3Y2RhNjViYjIyMDA3MGNlMjQ2YjMwYzE4ODJmIGxlZ2FjeS10cnVuaworMzM5NDMgZDhiNzY4NzgwNGIyMzdkODY2MzBhMTQ3YThiY2MzYWQzZDE3Y2U4ZiByZWxlYXNlMjMtYnJhbmNoCiszMzk0NCBjNDdmNWFjOGIwNmRkM2RkZWE2ZGU1NzMxMTA4MDc1YmQ5N2VmZTYyIGxlZ2FjeS10cnVuaworMzM5NDUgM2Q0YTU1MDNlNDZkOTEyYzM4NzNhMDI5OTEzNjcxMmJjMDVhMzYxZCBsZWdhY3ktdHJ1bmsKKzMzOTQ2IDdmMzQ2NTJkNzE2MTJhZWNlYWQ4MzY1YzI4NzI2OGYyZmVjMjlmOTUgbGVnYWN5LXRydW5rCiszMzk0NyBjNDUzNTg5MzVlZDNmZmY4ZmEwOWUxN2FlYTczNDM0YjE4MmUxY2ViIGxlZ2FjeS10cnVuaworMzM5NDggNDIxNDcxNGFiYWNiZjIzOTRmNmJkZjdjMWFmMjhmN2NjNTkwMDVlMiByZWxlYXNlMjMtbWFpbnQKKzMzOTQ5IGE1NzBiYjlmMTMzZjcwOTI4NGZjZjVhYzllM2NkNmU0ODEwMDRmOTggbGVnYWN5LXRydW5rCiszMzk1MCBlODM1NzViYjI5ZGE5MDY4NWYwODhjMWM2NzJjYjdmYzJjNjYwZmUxIHJlbGVhc2UyMy1tYWludAorMzM5NTEgZjFlYTMxMTEyN2NmMTU5NzkwYjk4OWJlMDU4ZTcwNmE1MTdhODllMCBsZWdhY3ktdHJ1bmsKKzMzOTUyIDNmYjM3NDdjZTMwNGMxOTE3M2UwMDE1MDIzNjlmNDk5NTJmZDZjYjUgcmVsZWFzZTIzLW1haW50CiszMzk1MyA3ZjY2MGZhMjg4YWFiZmU5OTMxNGE4MDcyMmFkNmE2N2I3OWQ2ZGY4IHJlbGVhc2UyMy1tYWludAorMzM5NTQgNTNhMzIyYzZkZTUyMmE5MDkwNDljNDRiMDBiMDEyYWMwNTIzYzA3MSBsZWdhY3ktdHJ1bmsKKzMzOTU1IDllM2Q1MWJlYzUzYTI3ZTk2YWQ5ZmFiZWRkYWM4MTg0NzlkY2ZhNWYgbGVnYWN5LXRydW5rCiszMzk1NiA0OTc2NTk0NTA1MzQ4ZWE0OTY0YmNjY2M0NTM2NTk5MDkzYWI5MTNjIHJlbGVhc2UyMy1tYWludAorMzM5NTcgOTdmM2Q2NjU1OGZiOGVhNzE0YTdiYzE3YTIxZDg3N2ZjM2IwMzJkZiByZWxlYXNlMjMtbWFpbnQKKzMzOTU4IDk1Njk1Y2M0NWNkZDJlYWQ1ZGNjNjIyNTgyYjAyZTlkZTIwZGExYjMgbGVnYWN5LXRydW5rCiszMzk1OSA5OTUxYjZlOWEzZWE1N2JlNGI4M2Y1MzNjYjk4MmUxNmE3Y2ZiMWZiIGxlZ2FjeS10cnVuaworMzM5NjAgYmYyYWE3ZGU0MzdkMzQ2YWU5ODYwOWI3MDE2MDQ5MzdhYzNkMjJmMCByZWxlYXNlMjMtbWFpbnQKKzMzOTYxIDgzMGMwY2Q4ZmRiMjIwMjIxZmRlYTBkOTJmNDIwYzdmNzBjNzE5OTEgbGVnYWN5LXRydW5rCiszMzk2MiAwZGZhZmFhMTA0MDFjMTVjOTRiMjY1NjNhMWI3MmQ3MjRiMzBhM2IxIHJlbGVhc2UyMy1tYWludAorMzM5NjMgNjY2NTRhYzY5NjIyZjFiMTk4ZGFhZjQyZmM3ZjY4MTRiNTIzZDA0MCBsZWdhY3ktdHJ1bmsKKzMzOTY0IDNhNTBmODM2OWFkNTY0ZTM2OGMyZTcxODJjODNiMTIyNWY0MTJjNzUgcmVsZWFzZTIzLW1haW50CiszMzk2NSA3MThlMTQ4ODg3MWQ0MDMxNTFjMDU0MGQyYmM3OWNlNmQzMTFmY2E1IGxlZ2FjeS10cnVuaworMzM5NjYgZjk2MjRmOTQwNjFhN2U1MGU2ZTJjYTdhZDUzNDg4ZjBiYmEwNTg4MyByZWxlYXNlMjMtbWFpbnQKKzMzOTY3IGRhMWIxOTFiMGE2YTJkOTUwOTNhNGUyMmUyNjJhMzcwMjkwMDkwZjEgbGVnYWN5LXRydW5rCiszMzk2OCBhNTVlYjU0YTU2ZDBiYzU3Y2RmZTNmNjc4Yjc1NTdhOTc4OWI3MDI0IHJlbGVhc2UyMy1tYWludAorMzM5NjkgMzdhNDUwMmYxNjEwNzRmNmQ2ZjVlYmUxZjhiOWJmNDVkNmM0ZTdkMSBsZWdhY3ktdHJ1bmsKKzMzOTcwIDlkYzVlNzE1OTZmN2ZjMTMyMDI2ZTBiOTFjOWFhOGRmMTZlZjIzMDcgcmVsZWFzZTIzLW1haW50CiszMzk3MSBlYmI4M2YyNjZmYTRmMmQ0OGM3NjIyZGIzYjI3ZjY5YTgxMDM2NTAyIGxlZ2FjeS10cnVuaworMzM5NzIgMjcwMDUyZjZmMGUxZWUwZjBlNzFmZDlmNjRkNGMxMzFkMTI5NDQ3MiByZWxlYXNlMjMtbWFpbnQKKzMzOTczIDdiNTc3Mzc3ZDU0NmZlNjc3M2UyNGY5NjI0YmI3ODEwYjYyNTE1M2IgbGVnYWN5LXRydW5rCiszMzk3NCA5NDhmZDM0ZWIwNTA5NmMwMzgyMDFmM2U0MTdiMjY4ZGJhOTQwYmU0IHJlbGVhc2UyMy1tYWludAorMzM5NzUgMTE0ZDY5M2E1Yjg5M2VmMzU4OWRiM2E0MDZmYzU5MTMyNDkwNTMwMiByZWxlYXNlMjMtbWFpbnQKKzMzOTc2IDUxNzQ0Mjc5NDU4ZmIwMDQ5YTQ1MmU5ZjZiMDUxZTU3YzE0ZjRlMmQgbGVnYWN5LXRydW5rCiszMzk3NyA1Nzk1MWJhNWU5YjEwNzk5ZGQwNDkxMzhjYWQ5YmMyYjJlMjIyNjFkIGxlZ2FjeS10cnVuaworMzM5NzcgMGMxM2JhNTM1OTE4MmYyYTQ2OWFiMWUwMTBmYjhmODY2ZWRiYmI4YiByZWxlYXNlMjMtbWFpbnQKKzMzOTc4IDQzNmQ1NzcyYjg3ZmZmOWU4MjNkODgwMTMxOGVmNDg0OTBlZjg5OGIgbGVnYWN5LXRydW5rCiszMzk3OSAwZjI2YWY3YzNiNTJiMWVjOTYxZjhiY2NmZmI1ZWZkYjM0ZGQyZmViIGxlZ2FjeS10cnVuaworMzM5NzkgNWMwYTcwNGUxYmU0ZDdlZGQyM2UzYzA0N2M0YWFkMTNjMGM1NzAxZiByZWxlYXNlMjMtbWFpbnQKKzMzOTgwIGE0MDUxYWQ3NjY2ZTVkNWYzZWZjNzk2M2U3NDJlOWYxYThkZjA5ZjUgbGVnYWN5LXRydW5rCiszMzk4MSA4OTM3NWExM2ExOGM4YWU5N2NkMTg0ZDRhODRhNzM4ZWFiM2UzNDg4IHJlbGVhc2UyMy1tYWludAorMzM5ODIgMjQ0YjU1YzkwZTBmMzA2NmUyZDMzODkzMmIyMDJhY2ViOWZlYWQwNCBsZWdhY3ktdHJ1bmsKKzMzOTgzIDdkMjMyOTgxZDNlMzhjNDZmMDkzYjc2ODViZjkyMzVlZDFlYmM0NDkgcmVsZWFzZTIzLW1haW50CiszMzk4NCBmZjgwNWExNDdiNmE5MTg5ODhmMzU0MDRlNjM5MzA4NTA5MTY1NzA4IGxlZ2FjeS10cnVuaworMzM5ODUgYjE3N2M5NmVlMzUwM2JhODlhMmNiYThjM2EyZmZjYTcwMjZkZTIzZSByZWxlYXNlMjMtbWFpbnQKKzMzOTg2IDY2YmEwZTBlYzIwMjY5OGUwMzNmY2NkYzE3MThlY2MxNGNjYTYzMGEgbGVnYWN5LXRydW5rCiszMzk4NyBhNzRiNDYzYmY3NmRhN2YzMWM4ZmJmZjk1NDdjMDBlMjExOTVjOTQ5IGxlZ2FjeS10cnVuaworMzM5ODggODQ5ODhlN2JjN2I3YmJhOTU0YzJlZDdmZmY1ODA4NTg3MzI4ZTI4YyByZWxlYXNlMjMtbWFpbnQKKzMzOTg5IDcxN2NjMmM5ZmQ2MGVjNzkwMDlmOWU1N2YyZDIzNjc0ZDU5ZTc1MTEgbGVnYWN5LXRydW5rCiszMzk4OSA1ZWQ0MGYyZjY1ZmI1YWRlZDgyNjc0NTA1MDFiNGZjY2RkYjA5OTkxIHJlbGVhc2UyMy1tYWludAorMzM5OTAgOWEwYWExZGJmMzUxNDcwYzE5MmQ0NWNhNWQwZTMwOTk5ZGRkMDI2OSBsZWdhY3ktdHJ1bmsKKzMzOTkxIDYzMTAwY2MzZjE1YWY0MGFmYTcxMmExZDQ2NDc0NTNiM2NmNWU1Y2QgcmVsZWFzZTIzLW1haW50CiszMzk5MiBjYzJkOWVhNGViZDUwZmM2NDhmZDVhYzRlNWNhNmNkOWEyN2E1ZDQyIHJlbGVhc2UyMy1tYWludAorMzM5OTMgZGYwMDkzYTU5ODVjM2NiMThlMWJmYjhmMjU0NGViN2Q1ZTM0ZmYwOCByZWxlYXNlMjMtbWFpbnQKKzMzOTk0IDIyNTAyZjc5NWI0OWM4Mzc2ZTYxNzE4ODg1Mjg0MGJhZmNlMTg3ZTMgbGVnYWN5LXRydW5rCiszMzk5NSA0YTU5MTIyYTY2NDZhMWNiMDYwYzI3ZDJkYjI2MGM4MjBlNWMxYTVkIHJlbGVhc2UyMy1tYWludAorMzM5OTYgMWQ2ZDZmYjdmMTBiNzdiY2ViMWMyNWEyYzY4Mjc5OTQ3NjE4OGU5MyBsZWdhY3ktdHJ1bmsKKzMzOTk3IDgwOTFiZDkyZWUwMTViYzYwZGM5ZmViMDcwZTQ3NGQ1MDdkNjE3ZDQgcmVsZWFzZTIzLW1haW50CiszMzk5OCA0YjRiNTgxYjNiMmM4MzE0NGRmNzJjODkwYzczODdkMTkzMjkzOTA4IGxlZ2FjeS10cnVuaworMzM5OTkgMjZkM2Y1Yjg3YWQzZGZhZTc4N2RjODg4MjBlNTBlNmYzZTY1ZWIzZSByZWxlYXNlMjMtYnJhbmNoCiszNDAwMCAyOTA1NjQ2YTJhZjM3NTdiMDkxNjNmNmM4MDAxNWUwYzhhNzE2MTJjIGxlZ2FjeS10cnVuaworMzQwMDEgNzliMWE5ZWM1MjIzMTAxMmUyYTRmNjczYWY3NzNmODY2OTUwMDJkNyBsZWdhY3ktdHJ1bmsKKzM0MDAyIDY0NmYwZjExYzUxOWI1NmEzMTM3OGU2MzZhNWRhZWUxMmQzNTI2ZjEgbGVnYWN5LXRydW5rCiszNDAwMyAxMTVmYWM5ZDkwNDU2YjliNTg1OTVmOWRkZWE0ZDJjZDc4Zjk2YWY3IGxlZ2FjeS10cnVuaworMzQwMDQgNTJmNGYyYThjY2U3OWRhMzdjZDhhOGMwOGRmODE0MzNkMzEyYTk1NCByZWxlYXNlMjMtbWFpbnQKKzM0MDA1IDU1YTRhNDE3MjczZWQxMjA3N2MyNDY3MGFmMjc3YjQxMzQyMzI2YjcgcmVsZWFzZTIzLW1haW50CiszNDAwNiBkZGU1OTRmNzBkNmNlNGMxZGE4ZDc3MmE0NDZiZDg2NTIzMDk4ZmIwIGxlZ2FjeS10cnVuaworMzQwMDcgYmZjOTc0ZGVmNDc0MDFjMTMxOTYxNjY4OGMzZWQxZjJjN2Q4MzNhMyBsZWdhY3ktdHJ1bmsKKzM0MDA4IDcwMGMwY2E0MjllZmNkNDk0ZWEzNWJjNjU0ZjFmYjkzOGY4YWY0MDggbGVnYWN5LXRydW5rCiszNDAwOSA2ZGQ5YzdjNWFhMTNkNDNmYjRlMDNkNzBkZjJjMDU4NWRiZDJjN2YwIHJlbGVhc2UyMi1tYWludAorMzQwMTAgZGE0MzRiNTM3NjY0OTI4NGJmYjEzMTE5N2Y4MzhiMTUyOTgyODMwYiByZWxlYXNlMjItbWFpbnQKKzM0MDExIDc3ZGE5Zjg3M2E0ZmU0MTcxN2RjNjg0NzY3ZTgxMDM1ZDRkMDBhODAgcmVsZWFzZTIyLW1haW50CiszNDAxMiBmNDI5NTU1OWVhODM2YWI1NzFiM2Y0ZWQ4ZWM0Mzc4MDg0NmZlMGRkIHJlbGVhc2UyMy1tYWludAorMzQwMTMgY2IyODE1MzgzNzNjYWQxNjIxNmEwNTM0MDYyMmUwMTZiNWMzNDk0OCByZWxlYXNlMjMtbWFpbnQKKzM0MDE0IDI0YzYyZjUzYTFjOTI5MTRhYjA0ODBlYjcwZjhkZjdhOGZhZTRjNTEgcmVsZWFzZTIzLW1haW50CiszNDAxNSA0MWZmMmMxM2VhNGE5OGE3OWU3ODkxNWZiNDYyMTA1ZTgyOWM4YTkyIGxlZ2FjeS10cnVuaworMzQwMTYgMTc5M2I2NWE2MjMwZmU0NmFiYjMzY2IwMTdiOTM2NDE1OTJjNjVjOCByZWxlYXNlMjMtbWFpbnQKKzM0MDE3IGMxNmM1NTM4NjBjMmRlZmI0ODczOTFlYWU1ZDU4NjZmYTMzYWJlZDIgbGVnYWN5LXRydW5rCiszNDAxOCBmZWQ2NTAxMTg4ZGE0MjdkYTZlZmZmMjZjNDllY2FkOTg1ZmEyM2E0IHJlbGVhc2UyMy1tYWludAorMzQwMTkgNzRiYzM0OTNjZTAzNTJiZmI3OGQ2YjAzMWEzMTgwY2NkMzhkODk2MyBsZWdhY3ktdHJ1bmsKKzM0MDIwIGYwMDNlNDhmNTYyZGQ0NWFjY2I0ZDY5NGUxOGJiYWI3YWUzMmY0YTUgbGVnYWN5LXRydW5rCiszNDAyMSA3ZTNhMWQzYzkwZjUzMGFlMDM0M2UxZjllNWE3NDg0M2JmYzY0OWQ4IGxlZ2FjeS10cnVuaworMzQwMjIgNjc5MGNmNzg1ZjhjNWMzZWFiMTM0YzBmNTgxNDExOWYxZTI5NzhlOCByZWxlYXNlMjMtbWFpbnQKKzM0MDIzIDMzZGQxMmIyZWJlNmQ2NjcwNjIwMDA5Y2FhZjZkZjE4YWRlZmI5YzggbGVnYWN5LXRydW5rCiszNDAyNCAxM2E5MTRlMGM1YzE0NGM2Nzk1M2U2YjdhOWJmYmNlNjhhYTFkNmUxIHJlbGVhc2UyMy1tYWludAorMzQwMjUgMTk2MTFkMTAxZDIzMTI5YTFmYjE5NjhiZmUzY2FkNTYxYTM0OGVhYyBsZWdhY3ktdHJ1bmsKKzM0MDI2IGMyNTA3ZmUyZTY5ZTExODgwMjZkNzkwNDc2MDg0YmYxN2ExYTI0ZjcgcmVsZWFzZTIzLW1haW50CiszNDAyNyA3NzBmZTgzYmY4OWY2NTZkOWY2Yjk5Yjk3Y2UxZjZiMGZlZjU3NzY4IGxlZ2FjeS10cnVuaworMzQwMjggMTZjNTkyZDMxNmMyYTk0ZDBjZjEwMjJiYzhiNTVlMDkxN2FhMjU5NCByZWxlYXNlMjMtbWFpbnQKKzM0MDI5IDUyMWQwMjZhODA0OGM5M2VmZDNmNDRkNzg3OWJiZTViOWMwMzhlNjAgbGVnYWN5LXRydW5rCiszNDAzMCAyMTRkZjYyYmNmMTNhOGY5ZjAzNDM5NzMyMGFjZTE4M2IyMWMwOTQ0IHJlbGVhc2UyMy1tYWludAorMzQwMzEgOTYzYzY4MGVkOWIyMGI2MmZkY2NjNThjZmM4NjYyNDQ4ZTVkZTU4NCBsZWdhY3ktdHJ1bmsKKzM0MDMyIDBiZWE5ZDM4OTI5ZGMzOTQ0ODJmM2YwMzgxOWNmOGFmZmM3ZmU4YWIgbGVnYWN5LXRydW5rCiszNDAzMyAwNjA3NWYxYmQ5NDViNjUzNjA1MjBjNWFkNjk2ZDFhZWYzZjkzOTdjIGxlZ2FjeS10cnVuaworMzQwMzQgZDVhNmI2MzY3YmIxYzFmNjQ5NGY1ZGNkZWRlMjU1NWU3ODM4NWMxMCBsZWdhY3ktdHJ1bmsKKzM0MDM1IGE2NDBiZmVlYjliNTYzNTI5N2JmNDY4OTYzYjYxYjRlZTA1MjIwN2YgbGVnYWN5LXRydW5rCiszNDAzNiA3OGJhYjhmYzhlZDVjZmYyMDZjZWJiM2U3MTM3YmIyNDhiNjM3YzJjIGxlZ2FjeS10cnVuaworMzQwMzcgMmE4MjkxNGIwOGM1ZTBlMjZkMDc0ZTEyZTI0NTA0MTY2YmQ4NjliNCBsZWdhY3ktdHJ1bmsKKzM0MDM4IDdkY2M0NTRhNzBjM2IwNzdlNTNiMzI1YjFkN2VjYjQ1MGIxNDcwYTQgbGVnYWN5LXRydW5rCiszNDAzOSAyZWM5MmZlYmNkMWE4ZjZkODQzODE0OGQyNGVhMTIyNGVhMWUyYWFhIGxlZ2FjeS10cnVuaworMzQwNDAgMTZjZTdlOTQ3YTM0NDJiMTUyZDJkYjBjZDZhMGJmMjE2MjQwMzBkYSBsZWdhY3ktdHJ1bmsKKzM0MDQxIDZiODQ4MDJjOTUyNDI0Y2ViMDRmYTNlNzllMGYzZDE3NWM4MmZjMWYgbGVnYWN5LXRydW5rCiszNDA0MiBiNTMzMjI0ZjEzNzNmNzM1NzcwOGNiOTVhNzhmZTNhYmZhNmU3ZGYyIHJlbGVhc2UyMy1tYWludAorMzQwNDMgM2FmYmMzMzk3NTZhNmI3YmU2N2Y5ZGQ3ZjU2NzFiYTlkODlhZTQzYSBsZWdhY3ktdHJ1bmsKKzM0MDQ0IDM4N2E5ZTE4NDA3NGFhZjhiNWYxMWRlZTBjNTM1YTNmMjgxMjAwMTggbGVnYWN5LXRydW5rCiszNDA0NSBjNDI5NDRlYTk3NDNlNjdiZmY0YTIzMGJiZDg2OTZjMGEyYTVmMzcxIGxlZ2FjeS10cnVuaworMzQwNDYgNTYyMDg5YTg2NzhmMjgwMjYzMDlhZjM0M2RhZjMzMDEwYjZhNDk3ZSBsZWdhY3ktdHJ1bmsKKzM0MDQ3IDA1YTg1MDljZmIzY2IxOTVhODAzMmY4NzBkZDFkNTViNzlhYWYwNzggcmVsZWFzZTIzLW1haW50CiszNDA0OCA2M2RmNzQzMDVkN2JmNGI5MzA2YjNmMWE2N2I0MjA1ZmU1M2NjNzY5IHJlbGVhc2UyMy1tYWludAorMzQwNDkgYTExZTFjYjMwNjQ0NTY4M2NkNTI2YTNmMGFmZTZmZTgzODJjYTJhMCBsZWdhY3ktdHJ1bmsKKzM0MDUwIDhlZDBjZTYyYjgyZjE5NWQxMzk5MThjZmFjZTQ1NjA1YmUxZTYwMGQgbGVnYWN5LXRydW5rCiszNDA1MSBkNWRhYmQxNTE3NTNhNTQwMDBiMTZlYWQ0MzZkMmI3YTI2OWRkMjdkIHJlbGVhc2UyMy1tYWludAorMzQwNTIgMjA1Y2M5MThmMWFjYThlZmI1N2U3YmE5YzJiYWU0Yjg2MGIxNTdmNiByZWxlYXNlMjItbWFpbnQKKzM0MDUzIGQ1OWVjYTJlZmE2YTBkNDRlZDdhN2M0NjU5ZmRjNDQ0MjFiY2JkOGQgbGVnYWN5LXRydW5rCiszNDA1NCAwMDQ1M2EwNTA4ZGZlNzY3YjVmNTU2OWI1NmFjMDQ5ZDBjNDg2YzFmIGxlZ2FjeS10cnVuaworMzQwNTUgYWFmNmI2YTg1MTBiZWEwYmU3ODc4NGRkZmUyNzliYjZlMmMxN2VhYSBsZWdhY3ktdHJ1bmsKKzM0MDU2IGY2ZmM2ZDBjZjFlNWFlNzNiODY0NTkxYjM5YTRiNDI0MDY4MmI0NDIgbGVnYWN5LXRydW5rCiszNDA1NyA4MDRkMWNkMWIwNmRlYjQ0YzRhNDliMWE5NDU4YzU4ZGU1MzJhZWQ4IHJlbGVhc2UyMy1tYWludAorMzQwNTggZDYxNTM2MDM0NzJlM2MyZDUyYzE4Y2QwMmEwOThjYjg1OGQ0ODdlZCBsZWdhY3ktdHJ1bmsKKzM0MDU5IGY4NmQ4NjM2ODdjNjA2MzUxNDI2NjQwMjdhOGEzY2UxN2M4YjU2YjQgcmVsZWFzZTIzLW1haW50CiszNDA2MCAwODkxZDIyYWRmNGY0YjhjNTA5N2NjZGUwNWY0MDhmY2JjYzQ5NTdkIGxlZ2FjeS10cnVuaworMzQwNjEgMWRlMWRhM2VlM2U4N2RkMmJiZTA1NjIxY2YyNGMwNjI5YmVlYTQ1MiByZWxlYXNlMjMtbWFpbnQKKzM0MDYyIDhiOWE4YzRkZTI4ZTZiNWI3NDk4MTNiYmUyNjYxYjUzZjM1MzE4ZGMgbGVnYWN5LXRydW5rCiszNDA2MyAwNmVhZWY3ZDAyZjIxZTM0NDFlOGYyNDAxMjNkODY5ZGRhOTFlYWU0IHJlbGVhc2UyMy1tYWludAorMzQwNjQgZTViZDUwYzdlMTkzMzZiNDRhMzAzMzZkNDVjYzYzMjQ5ZTEwM2QwMSBsZWdhY3ktdHJ1bmsKKzM0MDY1IDc1MDQ4MTJmZGI3ZWIxYzllMjI5NGJmZTFkZThiNzE1ODZkYjAxMzYgbGVnYWN5LXRydW5rCiszNDA2NiBmMTRlMjUxMzY5YjJkNWM4OGNlN2QxZTYzZDgyMmMxM2ZhNjgzNWU5IHJlbGVhc2UyMy1tYWludAorMzQwNjcgODVlNjQyNTQzZGRhYTZjMjk5N2I0MTQ2MWIzYmEwYTVmMDM4NzBmZCBsZWdhY3ktdHJ1bmsKKzM0MDY4IDQ0NTQ3MzZjNmE4MmVhNjNiNGMxOWJiNGEyMjUxOGQ5NTAxZWI2OGMgcmVsZWFzZTIzLW1haW50CiszNDA2OSBiZTk1ODI3MzRiNTZhZTFmMWE2MTM0M2U2YmJlMWI3ODMzMGNiMmI4IGxlZ2FjeS10cnVuaworMzQwNzAgMzhlODc1MzUzNGI3OTc0MDAwMzY4YTkwZmM0YTExYzVlMmQ3MzZmOCBsZWdhY3ktdHJ1bmsKKzM0MDcxIDIxYjJhMjE1OTA0NmRiY2ZmZTVlMjJjZjA0NmQyNWExMzE0MDMyYzUgcmVsZWFzZTIzLW1haW50CiszNDA3MiA4ZGM5NGJkOWI4M2FlMDY0NWRjYWY0ZDcyYTNiN2E1N2E0ZGNhM2NlIHJlbGVhc2UyMy1tYWludAorMzQwNzMgODBhNGI4ZjZhZTBlNTJjNDYxMjA5OWQ1Y2YxOGFiM2VhZWY1NWI2MCBsZWdhY3ktdHJ1bmsKKzM0MDc0IDQ2YmRiNjZhZGNkYjc2MjAyOWRiYzY3NTEyOWI1MTZlY2FhZTI3NDYgbGVnYWN5LXRydW5rCiszNDA3NSAwNWU4YjUwM2NkNDE0ZTJiMzZhN2YxNDAxOWYzZDkxYzY4NzY0ZmJjIGxlZ2FjeS10cnVuaworMzQwNzYgNGFlOGI2NWNhYmE4ODg5ZWQ2OWExYTFlY2RhZDIyMjUwNzZhYTM5NiByZWxlYXNlMjMtbWFpbnQKKzM0MDc3IGMzYjJjZDZlZjI3Zjg4ZDk5ZDFiZmUwYTFjYTcxZTg0NjA0OTgxYTcgcmVsZWFzZTIzLW1haW50CiszNDA3OCBlNGNjMjMyZWQ1ODMwZGIyNWUyYmM5ZmQwMWU4MzU5Y2VjZWUyMzBhIGxlZ2FjeS10cnVuaworMzQwNzkgM2I3OTNjZjc0OGM1NjkwNTc4YmUyOThkYzkwNTI3YzJlZWQxMzY1NyByZWxlYXNlMjMtbWFpbnQKKzM0MDgwIGRjNTFhYmMzZjE3NDZkNTE4YjkwMWU1NDc0ZWJlZmJmYjg3MTBmNzcgcmVsZWFzZTIzLW1haW50CiszNDA4MSBkYjMxZDI1YjEzN2E0MzM2ODVkNjJkZGJkNWRmOWNkNjcxYWE4YWU0IHJlbGVhc2UyMy1tYWludAorMzQwODIgY2Y3ZmFkOWQ2ZmNjMzRhODg3NWRiYjM3YWExOWVjMzk1ZmRlODVkNSBsZWdhY3ktdHJ1bmsKKzM0MDgyIGQwNWFmMTU2MmM2NGYxOTgxNmIyNmQ5NThkYjlmNGM4ZjBkNDIyMDcgcmVsZWFzZTIzLW1haW50CiszNDA4MyA0YWE4NGE4YjFmZTQ5N2Q3MjQ1NmNjNjQ5ZmQ2ODEzNDZlNjQ2YWE2IGxlZ2FjeS10cnVuaworMzQwODQgM2VkY2NlMGVmYzU0YjhjMjU0NmE3YjRjMWMyMGY1NTcwYWVjNWNlOSByZWxlYXNlMjMtbWFpbnQKKzM0MDg1IDUxNTViMzg1MDJkNDgzMWEzZWQ1MTZmMTMxZmRjODE1YzU0MDUzZGQgbGVnYWN5LXRydW5rCiszNDA4NiAzNWY5MjQ5NjUwZTZiNWM5ZDc5YjhmMzlkODJiYWYxZTZjMWE2NWNmIHJlbGVhc2UyMy1tYWludAorMzQwODcgMGMzNjhlYzBjY2NiNDRkZTY1Y2Q3Y2M4Y2MyMjcyOWQxNmFhOTI2ZCByZWxlYXNlMjMtbWFpbnQKKzM0MDg4IGFjY2MyNTFjZGM0YTllYzBhYzZmMjgwNTI2MWExNjUzZmQwM2Q0MTkgbGVnYWN5LXRydW5rCiszNDA4OSBhNTJhMDc0ZThhZTVkYjE1NGY5ZWMwMGRhNTM5MWNkYjBiYmU3ZDc0IGxlZ2FjeS10cnVuaworMzQwOTAgMTk4N2I4NTVjZDNhMGMzZTIxNTgyZmU3NGQxNmYxMzhmYmQ0NWQzYiByZWxlYXNlMjMtbWFpbnQKKzM0MDkxIGZlMWNkMzc5NWE3YTkzYWU2ZWFkN2QwMjYyYzRkMTVlNGEwMWU0NjYgbGVnYWN5LXRydW5rCiszNDA5MiA5OTNlM2NhMzQ2NTYwYzFlMWJlMjgzMmMyOTliNWVhOTMwMWQ4OGI0IHJlbGVhc2UyMy1tYWludAorMzQwOTMgZjE1YTExY2Y4NTMxNjNjZWVhMWNiNTRmMjBhYTc0MDJhZmM4OTRkOSBsZWdhY3ktdHJ1bmsKKzM0MDk0IDI4MGIwYTFlMzFlMzY0MWM0OWY0Zjk3NDJhM2Y0MTEyODFhZWQ3ODUgcmVsZWFzZTIzLW1haW50CiszNDA5NSAxZTg2ZjJmNzEyZjIxOTNmODYxMjBkNmYwMjA4ZTYzY2EwMzNmYjkzIGxlZ2FjeS10cnVuaworMzQwOTYgNThmZmI2YjlmNmM1NzJlNTE3Yjk3NDQ0YWQ4ZWM1ZjkyNjcyODhmNiBsZWdhY3ktdHJ1bmsKKzM0MDk3IGM5NzJkOWU0MzE2ODhlNDQ2MzE1NmNmY2M0NDg4Yzg4YjAyODY5MjEgcmVsZWFzZTIzLW1haW50CiszNDA5OCA2YTkxMDE0NzFhZDM3MWI4MTFlN2M3M2EzY2RhMDY1OGZhZDViNjg1IGxlZ2FjeS10cnVuaworMzQwOTkgYWE3ODdlMzYxMmJiYzZmYTVmNzI5NGJmMGEyODg1YjZmZDQ2NzUyNSByZWxlYXNlMjMtbWFpbnQKKzM0MTAwIDAwMzk5MjhhMGY4NDM5YmIzZWIwZDE0MDM3YjY0OWI2MTg1NzgyYTIgbGVnYWN5LXRydW5rCiszNDEwMSBlMzhlYzRjYjg3ZTljMTY0MjdiZjUzZTMzODgyYTgzN2U3ZWU1YzhlIHJlbGVhc2UyMy1tYWludAorMzQxMDIgZDAzOWIxYmIxZWE5N2Y1MjExZDk2MGZkMjY3YTRiZDcwM2Y0MmFkNSBsZWdhY3ktdHJ1bmsKKzM0MTAzIDYyMTUzZTgyNTY0YmEzMTNkN2M2OTM0M2JlNTc1YWQ0M2E0MDFiNDQgcmVsZWFzZTIzLW1haW50CiszNDEwNCBlNDRhMzU5Yzg5OGUwYzE1MDMwNzkxNmE0YjhiN2I5OTRjZTkwNzgxIGxlZ2FjeS10cnVuaworMzQxMDUgMTBiYTY1Njc4NTJmZDA2OGZmNzAwZmM1ZTQzMDBhYWU3OTEyZDIxZiBsZWdhY3ktdHJ1bmsKKzM0MTA2IDk0ZjI1MjgzM2UxMzE0ZjBlOTY1MjU0YzEyMWQ2NWUxMDFmZjUzNjMgcmVsZWFzZTIzLW1haW50CiszNDEwNyBmZDE2MDE4NDA3ZTdlNTM0NDQ3OWQ4NzE5ZGQ2NjNiZTRmZGZiNmQ5IGxlZ2FjeS10cnVuaworMzQxMDggOTY3NTY5NDhkMWM5MjQ5NGI5MDI2ODQ2NWM0MTI0NjA3YWI4MWE2NiByZWxlYXNlMjMtbWFpbnQKKzM0MTA5IDExYzMyMDk1YzMwNTYxYzEwNDFkMzI1MTFhYTUzZjQ5ZmE5N2E1NTEgbGVnYWN5LXRydW5rCiszNDExMCBhNDMwYmU2ODNhN2FkMzNiNWI1ZDIwOTk3YzJhOGJjY2Q3YzJhNGQxIGxlZ2FjeS10cnVuaworMzQxMTEgYTY4NzdmZmQ5NTgyZDhhZTAzMzQ0Nzc1ZjE2YmU0MzAzMzBmMjdjZSBsZWdhY3ktdHJ1bmsKKzM0MTEyIDU0YWIxOTU1ZDI0MmUzNDlkNzgyMTM3NjNkYjdiY2M2NjZiNzJiN2YgbGVnYWN5LXRydW5rCiszNDExMyBkZDk4ZjI5Y2ZjOTg2MzMwZDI5YmEyNzdjZjBmZmU3ODYzNzkzZmNhIGxlZ2FjeS10cnVuaworMzQxMTQgNzc3M2VhN2IxYzY3NDkxZDg1M2VkYTQzYmQzOWMxMjdkZjk0ZWEwNCByZWxlYXNlMjMtbWFpbnQKKzM0MTE1IGI4NzM3YTMxMDUwY2EzY2M1ZDBiYzM3MzRiNjQ1YzBhYTU0NjYwOTYgbGVnYWN5LXRydW5rCiszNDExNiA2MmFlMjE5MTQ0YzRmNjJjZTVhZmJlYzAxMWQ2ZjllNTNlYzE0NjViIGxlZ2FjeS10cnVuaworMzQxMTcgMDQ1MTc0ZjZhNzlkYjMzYmIxMDc0MzRhNjE1ZjNhNzJkNzZhNTcxZSBsZWdhY3ktdHJ1bmsKKzM0MTE4IDQxYmJiYjQ4OTc2NGM4YzZmN2RiMzllMjI4MTdjZTFjZjJmYjY2ZTAgbGVnYWN5LXRydW5rCiszNDExOSAzNGJkNWMxOThjYWY4NzI0OTA2OGRmMjkyOTJkNDg0ODBlOTcxNTQwIGxlZ2FjeS10cnVuaworMzQxMjAgNjhlMWY4NjA1NmJjMzQ5YjdlY2MzYjgyNTQyZWQ4N2NiYWQyZmQ1MSBsZWdhY3ktdHJ1bmsKKzM0MTIxIDUzZjFjMzJlZTY5ZDc1YzI2ZjU0YjMxZWExZTU4YzM2Y2Y4Mzc3MWIgbGVnYWN5LXRydW5rCiszNDEyMiBlMTdjNDRjNzliMDNlNzE5ODc1MTBjMWE1MjE0N2RhZTdkMjNiZjg4IHJlbGVhc2UyMy1tYWludAorMzQxMjMgMzdmMGUwYjE0MDAzODU1YjkwYTBhYmJlN2ZmYTIyNzdjMWNmNzY4NCBsZWdhY3ktdHJ1bmsKKzM0MTI0IDIwZDk3ODg1ZTVjODkzNGQ0OWQwNGNlM2QzZjM4YTIzYWRjMjBjMDIgbGVnYWN5LXRydW5rCiszNDEyNSAyMzkyMWJjODEyNGJiYzVjMDY3OTI0ZTA2YzIwMmFkYzFlNjFjOGYzIHJlbGVhc2UyMy1tYWludAorMzQxMjYgYzY4ZWI0ZDRiNzg3OWUyMDQ4MmQzMzFhY2NkMmJkNDc0MDgyODMzZSBsZWdhY3ktdHJ1bmsKKzM0MTI3IGY0NGQ4YWRkZDNlODZhMWVlMDcyZGNkOWRhZTE4MWRiMzY5NWM4MzIgbGVnYWN5LXRydW5rCiszNDEyOCAxM2VjOGM0NzlmZjEwM2I0OWIzNzAyMTEzNDMxMzFhODliOGQzMTAzIGxlZ2FjeS10cnVuaworMzQxMjkgMzliZTk5YzY3N2Q1ZTI3ODUyNjE1MTM5ZmEyMTQxOWQ3MTcyOTU2OSByZWxlYXNlMjMtbWFpbnQKKzM0MTMwIDRkMjA0ZmMzYWQzMmYwYTM4NGRkNmMyYmM5ZmQxMGU2MzE0NDgyM2IgbGVnYWN5LXRydW5rCiszNDEzMSA3NDMzZTdjOWUyY2E0NTMzNWMxZmI2NTY0MjFiMWY5ZDQ5NmY5YTQ3IGxlZ2FjeS10cnVuaworMzQxMzIgNDYyN2MxNjg0OWFlZGM5YjU1YmUwNWZlZGJmNzAxY2UzNGYwM2QyYiBhc3QtYnJhbmNoCiszNDEzMyBhMjc0YjkwMzVkMWVhZTIzOTBhOGQ3MmY5YjU5ZDQwODkxMzQ3ZTlmIGFzdC1icmFuY2gKKzM0MTM0IDFlZGI1NDczODA5ZTZiOGY0ZTYyMTA1ZGNmYzVlNjZlYzU5MWY0OTcgYXN0LWJyYW5jaAorMzQxMzUgOTVhYjU1ZDE0MjU2ZjY4MDI5MjA2MGE3NThkOTJiMDkzMDUzYmU3ZSBsZWdhY3ktdHJ1bmsKKzM0MTM2IGQ4NjRmMzE2OGNhY2ZjYjVkMGJhNjZhYmY2YzU3NzVmYTQ4OWU3MTUgbGVnYWN5LXRydW5rCiszNDEzNyAyZjU4MjJkMGY4ZTE1YzBiYmE1ZDVjOTAzZjBlNzBjNzYxMzdkNGY5IHJlbGVhc2UyMy1icmFuY2gKKzM0MTM4IDc5OTE5YzU1MGRmZWRkYWU3ODUwOTE3YmRiNTE5Mzg4YWIzNGNjOTggcmVsZWFzZTIzLW1haW50CiszNDEzOSAwYTE1MGVhOGNiZWEyOGY0Y2I4MGMzNWU3ZjRiMjUzYzhhMDJhZmQzIGxlZ2FjeS10cnVuaworMzQxNDAgYzJjMTBmMWViOGUyYjc0YmJjODRjYTQ3NmQxMDBlMTkzNGI3ZmYyNyBsZWdhY3ktdHJ1bmsKKzM0MTQxIGM5Y2MzNTI0OTMyMmQ3OGYxMTMzNTZiMjdkNDQxZjU4ZThlOGRjOTUgbGVnYWN5LXRydW5rCiszNDE0MiBhOGYwNGNiZjY1OWNiMDI2Y2MyYjgxYzNlNGNkMGI0YTJhYzRhZjExIGxlZ2FjeS10cnVuaworMzQxNDMgY2QwYzNmOTE2YjM0Y2NmMjY5ZTU2ZDJlOGM0NmVkMjQxMzc0OGM2MSBsZWdhY3ktdHJ1bmsKKzM0MTQ0IGU4MTQ3Zjg0MWE0YWIyZGEzZTdkYjFjNmUwOThiMTY3MWY2ZWUwNjIgbGVnYWN5LXRydW5rCiszNDE0NSBjOWY5ZWIxM2VhYzkzMDVlYmExMzRkODExZDg0NTYwZWRiNjhmMmYxIHJlbGVhc2UyMy1tYWludAorMzQxNDYgMTcyNTQ3MGQwZDQzY2FiMmM4ZDE3MDBmYTBjZjk4OWZhMTdhMDlhNSBsZWdhY3ktdHJ1bmsKKzM0MTQ3IGVkOGIzYzAyODE3NGIwNTI2YmFhM2JmZGJhM2Y1MmNiNzEzZThkYTIgcmVsZWFzZTIzLW1haW50CiszNDE0OCA2YmZiODJiZmJiNTZjZGRmYzMxYTIyMWQzMThmMTE0ZTEwYmM5MzY0IHJlbGVhc2UyMy1tYWludAorMzQxNDkgNDFjMmUxNzIzY2RkZDdhYzE3YzdkZGFkMDZmMGY0MzY4ODg2MmY1NCBsZWdhY3ktdHJ1bmsKKzM0MTUwIGVmNGE3MWY1YWYyMjM4ZWJiNmFiNDhjYzA5ZDlhNWQyZmIxYzgzMDcgcmVsZWFzZTIzLW1haW50CiszNDE1MSAzMGU0OTVlZmU5MGEzNjVkMjA1MzI0YWZiNjliNDVhNTE1ZDJmYjk1IGxlZ2FjeS10cnVuaworMzQxNTIgNzg0ZTM4YWJlZDgyMDMxNmViMDg2MzE2ZjYzZjBkMmY3MDI1MThmNiByZWxlYXNlMjMtbWFpbnQKKzM0MTUzIDc2ZTk5OGFlZTY0NDY1ODVmMThhMzRmNGI3MGQ4MTc4OTVkYWEwZmMgbGVnYWN5LXRydW5rCiszNDE1NCA1OWIwYTQ4YTU2NDQ1MDdiM2M2OTNhOGJmNzRkOTYwMjk5NmI2OTU4IHJlbGVhc2UyMy1tYWludAorMzQxNTUgZjg5YWI3OTg1M2E3MGMzOWUxOWY1M2YzZTlmNTg4Mzk0ZTI3OTNjNCBsZWdhY3ktdHJ1bmsKKzM0MTU2IDBiMGFkN2QxZGRkNmE5ODUzMGY0YzhhNGM4YzFkZTQ3ZjNjNTg3NWIgbGVnYWN5LXRydW5rCiszNDE1NyA3MmJmYzc4NmE0Zjg5MmQ1MTNmMzA1ZjA3ZjAxNjE4YTQxYzRjYmM5IHJlbGVhc2UyMy1tYWludAorMzQxNTggYThhMWJlZjQwN2ViMjZjYzhiZTRiMzE0YzlmNWM1YTZiNzViNDM5ZSByZWxlYXNlMjMtbWFpbnQKKzM0MTU5IDY2MjIzM2U2NmQyODJlY2EwN2Y3NmJmMTYyZWJhOTcxYjY0MzEwNDggcmVsZWFzZTIyLW1haW50CiszNDE2MCA3Y2I2NzQ1YmU1MjVjMGE4NGVjMGIxOWIxNDQ0NmEwMDM0MjQzYmMzIGxlZ2FjeS10cnVuaworMzQxNjEgMmE0OTcwOWMwZDU2M2U0YmRjMjQ2NTUwODFhMTQxN2U3NjIyODY1MiBsZWdhY3ktdHJ1bmsKKzM0MTYyIDgzNGJiOWExNTQxOWIwZjYxZDkxYjdmNzNlOWRmMWIzM2ZlM2U0YzAgcmVsZWFzZTIzLW1haW50CiszNDE2MyBiMzljYjkyMTJmNWM4OGNjMjNlODQ5YTJlNzViOTEwMDM0YjE2OTNhIGxlZ2FjeS10cnVuaworMzQxNjQgYmExZTAzY2QyZjQwZmExMmMzMTllZmFjNzQ1ZDQ4ZjgyOWMzZGNlYiByZWxlYXNlMjMtbWFpbnQKKzM0MTY1IGE4NWE3MDEyZGRkYTczY2VmNWQwZmQ2ZmYyNTVmY2EzNzcxNTM1MGEgcmVsZWFzZTIzLW1haW50CiszNDE2NiAwY2FkOTA5NGUyM2U5Y2I3MTI3OTBlYWU5MjYyZmU1ODdjNTNlMzIyIHJlbGVhc2UyMy1tYWludAorMzQxNjcgYmJhN2UxZTBmMWM3NTNhODIyMDBkZDAzZTBkNGZiMTJkZjIxZjdlMSBsZWdhY3ktdHJ1bmsKKzM0MTY4IDkxZmY3MjcwM2VkMzVhYWRmNjVkNGRhYTlmNDE3NzBjN2NiMDBhYWEgcmVsZWFzZTIzLW1haW50CiszNDE2OSA5MjMzYWQwZWFhOTg0NmFhYjdlNTg4NjU1ZWMyYjBmZTcwN2FiZTRjIGxlZ2FjeS10cnVuaworMzQxNzAgNjFkYmEwYWE5ZTM3NGRmMjI5NTBmYWQ0OTMxMjdiZWExMzg4ZThiZSBsZWdhY3ktdHJ1bmsKKzM0MTcxIDFkNjMxMDZlN2RmYTQ4ODNjMWMwYTRmODAxYTM1M2I2ZjMxOTYyNzcgcmVsZWFzZTIzLW1haW50CiszNDE3MiBkNWM0NWI4ZGFhNTJiYzE4ZmQwOTVkNzJkYjdlYjk1NzNhZGE1YjQ3IGxlZ2FjeS10cnVuaworMzQxNzMgOGQyMWZiMmUyNmIwNjkzOTczNDliODMwOTE0MjgxNWZhOTYyYjYyOCByZWxlYXNlMjMtbWFpbnQKKzM0MTc0IDY1YmFjNTlhMzkyODA2OGU3ZjkzODViN2RkMjljOWMzZDM2YzM5NzAgbGVnYWN5LXRydW5rCiszNDE3NSBjYjcyMzY5OTIwYWNhYzE2YjE0MzFhZDQyNTljMzA5ODEwMGZjY2U0IHJlbGVhc2UyMy1tYWludAorMzQxNzYgZDdmMTNhNDllNWVmNjhhMmI1NDhhZDM2MDlkZTg1ZDBiYzkyYTdjYyBsZWdhY3ktdHJ1bmsKKzM0MTc3IDVmOTJkNjYwN2I5ZjBiYTI0NTY5OGQ1NmQ2MjVlYWI2MTY2NDhmZTIgcmVsZWFzZTIzLW1haW50CiszNDE3OCAxYTgxNzY5NGVjYmQ3ZTQ5ZmM5MTVhNWViYTlkZDU2YzE5ZjliYjRkIGxlZ2FjeS10cnVuaworMzQxNzkgNTE4Y2NjMDY0Y2I5ZjMyYjZhNjFmNDljNjJkMDBlYjIzYzYyYTcwNCBsZWdhY3ktdHJ1bmsKKzM0MTgwIGEzN2IyMzcxNGQzZGRkYjU5NmUxZWZjMTVlMTkzNTQ0ZGZhZTMyZTcgcmVsZWFzZTIzLW1haW50CiszNDE4MSA1NTg1N2FlYmMyNGYyM2YyZjJlMGU4ODUyZDQ0ZWQyMDQ5ZjZkNzMwIGxlZ2FjeS10cnVuaworMzQxODIgMWUxZTY4NWQ2OWVmNzhiZGI5OTE3NjcwOTgxZWE3ZmZhMmZkZDRiYyBsZWdhY3ktdHJ1bmsKKzM0MTgzIDk0ZDgyOTM2NzQ3MzcwM2IxOGQ5ZGFhNTRiMDNkMDNlYTA1MzFmZjUgbGVnYWN5LXRydW5rCiszNDE4NCAwODQ0MDhmZWU5NjE0ZTU0ODNlZmVmMGU2ZjU5MmU1YzBhMDM3NjgyIGxlZ2FjeS10cnVuaworMzQxODUgNDI1YmYwN2VhNzBiOGMyZDFlNmExYmE5MWZjOWJiM2IyNTEyZTBmOSBsZWdhY3ktdHJ1bmsKKzM0MTg2IDhkZDA3ZjdkMDkzYjdhMDA1MmZhNzNkZDYyNTEzYjcwYzE5Mzg1MGMgbGVnYWN5LXRydW5rCiszNDE4OCAxODVjNWY2YjYxNTc4NDBiMDU0MWFjMDFiMjc4NWU3NmI1YzM5NWU1IGxlZ2FjeS10cnVuaworMzQxOTAgZGJhNmVmMzA0YWE0NDA4ODA2ZjJhZGEzMDhiN2ZkOWIyMjRkOTgyNSBhc3QtYnJhbmNoCiszNDE5MSA3NmQ5ZDE4ZWYzZTQ5NWFiMGIwZjZlMzgyYzIxZDk5NzRkNDQ5YzQwIHJlbGVhc2UyMy1tYWludAorMzQxOTIgMDdlNjQwYzQwMTZkZmUzOGQyMjVhYTQyYmQ4NjhlYzA5MWQ4NjE1ZCByZWxlYXNlMjMtbWFpbnQKKzM0MTkzIGIyOTE5YTRjNTU4YzZmNDA4YTIzY2I2YTNhOWY2ZTU0YjEwNmJiYTEgbGVnYWN5LXRydW5rCiszNDE5NCAyZjNmNTZmMTI4MGZjZWNkYWMwOWZjMTMxNWY4ZDkxZDEwNjdjYjc4IHJlbGVhc2UyMy1tYWludAorMzQxOTUgOWRmOWJkNDMwYzM2ZDJjODM4YzE2Y2E1YTA4MTZmN2JmNmJjZGQ2NyByZWxlYXNlMjMtbWFpbnQKKzM0MTk2IDc3YWM0NTU4MGM0MDhkNTg2MmY0NmZmYjBlMmFlNmM3NjVlNDViNGQgcmVsZWFzZTIzLW1haW50CiszNDE5NyA1MWU4NWU4YmZhNDczMmFjOTgwNjY5YjMxNGRiMjYyN2Q2M2E4OWM3IGxlZ2FjeS10cnVuaworMzQxOTggYzQ4YTJjYzkzNzgwZjQxYTc3YWFmY2ViN2EwYTgxMTYzNDcwMzA3OSBsZWdhY3ktdHJ1bmsKKzM0MTk5IDFhNzkyZjM2YjY5ZTM2YTRjNWJlZmE2MWEyMzdmYmY1YmU4MGI3YTUgcmVsZWFzZTIzLW1haW50CiszNDIwMCAwMjI1N2Y2YTY4MmE3ODMxN2VmNDZmOTVmZjEzYmQ2Y2UxNDVjODg5IGxlZ2FjeS10cnVuaworMzQyMDEgMWJjNmVmMWY2YmRiNDc5MWE5ODQ1MWYzZThiYTI3YTVlMjkzYmI3NSByZWxlYXNlMjMtbWFpbnQKKzM0MjAyIGQ3YmYxMjMyYTg2ZDE0NGQ0YmExNzBiNTA3YjZkMmIwZjgxOTRmZWUgcmVsZWFzZTIzLW1haW50CiszNDIwMyBiMGMzZDk4NmY2M2Y3NTgzNTMxMGQ2N2RiOTMxOTRjM2E4MTM4NGQ3IGxlZ2FjeS10cnVuaworMzQyMDQgYTdjNGFhODFlYjg1YzAxMGE3Yjg1OWQzNzMzMzExMGExNmI1MDdjOCByZWxlYXNlMjMtbWFpbnQKKzM0MjA1IDc2OTc5YWZjNzg1YmQ2M2QwMDY2MWJmZDVkYzEyZWIwM2RiNmU5N2QgcmVsZWFzZTIyLW1haW50CiszNDIwNiBhZDI1M2MwNmJhZjFkNGFmMmEzMjEzOTdjZDY0NzZjZjI0MTNiZmQyIHJlbGVhc2UyMy1tYWludAorMzQyMDcgMDk2N2NiOTA1MzRjYzZhN2VlMTg2M2I4ODBlMGEzMGM0M2UwNDdhMSBsZWdhY3ktdHJ1bmsKKzM0MjA4IGUyYjlkNDM2ZjhmN2FmOWNhYmYxMGRhNjllZTA2NDNkZThiZjRmMDUgcmVsZWFzZTIzLW1haW50CiszNDIwOSAzZjI4OTY0ZjhlY2NjOTQwMTNlODY4ZDIzMGM3MWVlNWNkMjhlMmRiIGxlZ2FjeS10cnVuaworMzQyMTAgODcxNzc2ZDM4MjEzYTkwNjdjNmQ5YmFmODkxOGVhZGJjMTdkMzg5ZiBsZWdhY3ktdHJ1bmsKKzM0MjExIDE3NzY1ODc4NWZlYjhkMjYzMTVhOTFkY2U4OTdjNmI5NThlMjUyMDcgbGVnYWN5LXRydW5rCiszNDIxMiA4MzYwYzc0ZDA1M2JhZDViYmUwMzM5ZmMzY2I5ZTQxYzg4Y2E2NTM2IHJlbGVhc2UyMy1tYWludAorMzQyMTMgNWM1YWRiNTQ0M2NjZTg5ODE0YmRlMGVkNzMwMzgwY2VkMzU2NTEzOCByZWxlYXNlMjMtbWFpbnQKKzM0MjE0IGQ2ZjRkZDVhNTAwNmI5ZjEzNjY3NjU0ZDM5Mzg1NWY3YWQxMjlmYmEgcmVsZWFzZTIzLW1haW50CiszNDIxNSAzMzljODgwNGY4MDRhOGVlNDUxZWI4NWJiMmMzMzM3N2U4MzViM2Q1IGxlZ2FjeS10cnVuaworMzQyMTYgNThmMDFjYzBmMzAwYWIxOGYxNDgxZWM0MDY2Y2YzNzljMjNkNjRlOSBsZWdhY3ktdHJ1bmsKKzM0MjE3IDU4Zjk2YTAwZDM4ZGMwMDJhZGU4MTg4ZTRmNGVlNjQwYWZiZTBmMGMgcmVsZWFzZTIzLW1haW50CiszNDIxOCAyNTRiZDNlODkxZjZkOTU5MWM5MWUwZjhiYjE5ODMxMDRmNjUwMmMyIGxlZ2FjeS10cnVuaworMzQyMTkgMGVkMWVhY2UyYTYwYmFlYTc0ZGNkNWUxNmJkMzlkY2NjZTZjOTkxMiByZWxlYXNlMjMtbWFpbnQKKzM0MjIwIGY0YTAxYzQwNWE0NGI2MTcwNWExM2NmNzU5NmU1ZTliZGYyMjk1NzEgcmVsZWFzZTIzLW1haW50CiszNDIyMSBjZThkMWY5NTFlMTkyZmVjOGY0NjdlMzUwNGFiZDQ2NTU3NDljZDM1IGxlZ2FjeS10cnVuaworMzQyMjIgZDc1NTkyZjZlMmY3Y2ZlMGViZDg3OTMwMTQzMjQyMTUxOTY1NzE4MiBsZWdhY3ktdHJ1bmsKKzM0MjIzIDk1NGI2MDliODRjZDA5OTZmYjRmZDNmYjRlODA3ZGE3NWJmMzcyOTAgcmVsZWFzZTIzLW1haW50CiszNDIyNCA3NzRhOWYyMWVkYjk3ZDQ0OGU2YTU1OWE2MzUyNjcxMWE5ZGE5MDQxIHJlbGVhc2UyMy1tYWludAorMzQyMjUgZTk3MjMwZTVjMWNhOTBmNzdjYTI3NTI2OGNlZmY0OGFmOTI3NDkxYSByZWxlYXNlMjMtbWFpbnQKKzM0MjI2IDkzMWU4ODg5OTFiYWI3NDExMDhiMGY4NmY5OGEwMTZhODE5ZDc4YmUgbGVnYWN5LXRydW5rCiszNDIyNyBmM2NlMTlkOTYxZGRhNmU1M2ZlNDc3YjYwODg1MDUwNjUzYjhhYTI3IHJlbGVhc2UyMy1tYWludAorMzQyMjggNTM4M2Q1NjJhMzhkODFiZTJlOGZiYTQwZTdlNTNkOTkxNDE0MTlkNCBsZWdhY3ktdHJ1bmsKKzM0MjI5IDZlMWY3ZGJlY2Q4NGQ1M2I0OWZkODA0MzdiMDM1MGRjZWQ5NmFkMzEgcmVsZWFzZTIzLW1haW50CiszNDIzMCBjOTcwMDhlZTcxNjYwNzRiMDQ5OTgyZDg5M2Q2MmRkN2RhMDkwYThlIHJlbGVhc2UyMy1tYWludAorMzQyMzEgYjI3MjhjODdkZjlmYmYyMzM0NzhhM2Y3NTY4OTY5MGU2OWNhZGMxZiByZWxlYXNlMjMtbWFpbnQKKzM0MjMyIDI2Y2M1ODY1YTgzNjYzM2JmM2YwZmZjM2Y3YzM1OTQxODlkNjQ1ZWQgcmVsZWFzZTIzLW1haW50CiszNDIzMyBhMWI5NjVlMWJiZTlkOGY0ZDg2YjRlOWQ4YzE3YjM1ODUzNGVjYjEzIHJlbGVhc2UyMy1tYWludAorMzQyMzQgODE2ZDQ4NjdmMjEwNjVlMWIzOTJhOGE5ODY4ZDE3ZjRmZDAwNDQ4NiByZWxlYXNlMjMtbWFpbnQKKzM0MjM1IDdlNjBkODI3MzBmZDhhZDQxNjM3MTljNjI1ZGM5YWRmYmY5NjA4ZjkgbGVnYWN5LXRydW5rCiszNDIzNiAwMTgyY2VjNTA4YWFiNGZmOWU4MTlhMmQ3N2UxNDA1MDZmMTQ4MjU4IGxlZ2FjeS10cnVuaworMzQyMzcgZGI2M2NiMGZjN2RhMTc5YTRhMzJhMjRiYzJhNGU3ZmExMDEwZmI2ZCBsZWdhY3ktdHJ1bmsKKzM0MjM4IDljMmViNDE1MTMwZjM0ZDNmZTVlZDc0N2Y3NTMyZjFkMjI4NTI0NzAgcmVsZWFzZTIzLW1haW50CiszNDIzOSA3Mzg5ZmY1Nzc4NzM5MGIzNDczMjExZDdmZDU2OTBhMThiZTQyMDNkIHJlbGVhc2UyMy1tYWludAorMzQyNDAgYjkyYjM3YjAxZmZiMTYwODMzNGVkOWFlMjZjMzIwMDVjYzU3MDhkMiByZWxlYXNlMjMtbWFpbnQKKzM0MjQxIGU1YmFjYjk1OTdmN2I0NGFhN2RjMGQyZDQyMGE5NThkYjY3NGNjMjUgbGVnYWN5LXRydW5rCiszNDI0MiBmYmFkM2VmYTQwYmJkY2Y2ZDRiOTZhMzllMDUyZDYxNmNhNGFiMDcyIGxlZ2FjeS10cnVuaworMzQyNDMgNjJjNmFmZTM3ZDEyM2FhM2E4NGEwMTdjOTBiZjc3NzlkMjE1M2ZjZSBsZWdhY3ktdHJ1bmsKKzM0MjQ0IDkyOWU1NDgxNzRjNWZhZTkzYmM5MGY1MGI2MjFhMGZhYmFkZTE5N2IgcmVsZWFzZTIzLW1haW50CiszNDI0NSBkYmU4MzkxZWQwNmYyMzliNDM5ZDVjZTEyYjJiYmI5NzA0N2E4MDc4IHJlbGVhc2UyMy1tYWludAorMzQyNDUgZmE2NWY2NTI3ZmUxMzRhYTk3ZTAzZTFiMmFmMzY1ZDQ0M2I2N2RjNyByZWxlYXNlMjMtbWFpbnQKKzM0MjQ3IGRhOWI3NDA3ZTU2YzJhYWU5ZDI0NjZjMGM0YTY1ZDAwYmE5ZTRhZTggbGVnYWN5LXRydW5rCiszNDI0OCBhMTViMWMzYzIzNmE0YjI0Yzk2OTI4NTBlMGE0NTNkNTUzNThlNjExIGxlZ2FjeS10cnVuaworMzQyNDkgNzE3MDI0ZGJiYmFjN2Q4N2NkYzQ4MjNjNjBkOTljYThhNjE3NzQxNCBsZWdhY3ktdHJ1bmsKKzM0MjUwIDJhMTY1ZGRmMjIyZGM0MjliNzU4ZTI3NzEyNTYwNzQ4MjY4ZGU5NjcgbGVnYWN5LXRydW5rCiszNDI1MSA1MjkwYTQ5MzYxNzBkYzg4ZmMzOGY4ZjczNjJhMmE0YzU4M2UwMjAxIGxlZ2FjeS10cnVuaworMzQyNTIgYmI4MjUxMWQxOTA2YTI3OThiMjA1OGQ1OTJmNmI2ZTg4YTAxNTFlZCBsZWdhY3ktdHJ1bmsKKzM0MjUzIDY5M2QxN2RmYjhmZDQ4ZDUyMjY0YWJkOTgwNTY3NDg3ZGI4OTY1YTkgbGVnYWN5LXRydW5rCiszNDI1NCA1NjM5MDg5MWQ5ODhjODc1OWVhMTBjOTA0ZDMxNDU3MWUxODIwYmQ4IGxlZ2FjeS10cnVuaworMzQyNTUgOWNkNGY0YWU3YTRjMmI4Y2RjZTNhYTY0YTdjMTQ3NzBmOWY2NmM2ZSBsZWdhY3ktdHJ1bmsKKzM0MjU2IDVlYzQyMzNlZGNlZGM0NzI1NWE0ZDExYzdmMGQ4NjYyMmVmYmIyMDUgbGVnYWN5LXRydW5rCiszNDI1NyA3MDM3ODJkOTAxNjEzYzYwOGFhNjk1MjNjMmJmNWU1NzA5YjJjODNiIGxlZ2FjeS10cnVuaworMzQyNTggNWQyYmE0MzdlMWJkM2IzNGFkNTc1Y2E3M2U4OWZkYmUzYzFmOTA2YSByZWxlYXNlMjMtbWFpbnQKKzM0MjU5IGUyZjUwYTdjYzQ5NGY5MDc0OTI4MWYzM2IzOGNlYmJkZDZlZjM1ODMgbGVnYWN5LXRydW5rCiszNDI2MCAyY2U5Zjg5YzRiYmM5YjU3YjRmOTdkNzY3MmFhZjkxNGM5OTE4YzAxIHJlbGVhc2UyMi1tYWludAorMzQyNjEgZGRlMjc2YTg4Yzg4YTBkNGJhMjU2OTMxNDc5N2RjZWFiNGM4NmMwYiBsZWdhY3ktdHJ1bmsKKzM0MjYyIDM2MWI1MGEwZDI3ZmFkN2I0Y2ZlY2ZmYjg2ZjIxZWU1NjljNjY5ZjkgcmVsZWFzZTIzLW1haW50CiszNDI2MyAzMzJiZmYyNzViMjE4YzRlOGQxZDc4M2FkMjJmMzczYTQxM2U4ZDhhIHJlbGVhc2UyMy1tYWludAorMzQyNjQgYWQxOGY1YjhkNmY0YzYxYjJhYTc3ODZjNTQ3NWYyMTQ4NWE0M2VmYSByZWxlYXNlMjMtbWFpbnQKKzM0MjY1IDhjOWY0OGJhNTBmYTE2NTEyODZkODZkNzE3MDVhMzY5MzkyYTNkYjQgcmVsZWFzZTIzLW1haW50CiszNDI2NiAwNDU3MDQ5ZjI1ZTBhMGExNzdjM2U1MTYwMDQzZjhjNTc3YmI0MTQ4IGxlZ2FjeS10cnVuaworMzQyNjcgYjdhMjEzNWZjMTU2YWE2MWE3MTAyZTYwNjE5Y2E5NDVjYTdjZGUyYiBsZWdhY3ktdHJ1bmsKKzM0MjY4IDAzMmI5MjU4ODg1YjcxODI5M2U0YzdlYjM5YzQwN2IzNGRlZGIwYzIgcmVsZWFzZTIzLW1haW50CiszNDI2OSBhNTY3MWFlY2YzOTAxM2M2YzY5MDUwNGM3NDg1NmE5NmE2MmEwN2U4IGxlZ2FjeS10cnVuaworMzQyNzAgYTU2NmM0OWI3MGZhZjlmNjc0YjQ3ZjI0ZjEzZDRlNDk4ZjAxODc2YSByZWxlYXNlMjMtbWFpbnQKKzM0MjcxIDg1MjllYWM1MDY1ZDIxNjk3ZmU3Zjc1YTJiMTkxMGIzNGFmYTcxNzggbGVnYWN5LXRydW5rCiszNDI3MiBkOTZlN2Y4MmQzOTk5OTk0YmE4ZTU2YTQ0MDg1NDU2MTAwNDQ2MTkwIHJlbGVhc2UyMy1tYWludAorMzQyNzMgZTFiYWEyNDliM2YyM2Q5MjI0OWU1YmNiNDBkZmVkZjA0MzM4Y2RlNSByZWxlYXNlMjMtbWFpbnQKKzM0Mjc0IDZmMzM0M2RlNjViMjJjNzMxNmE3NmM2NjY4NzZjMGZjOGZmMDM5YjEgcmVsZWFzZTIzLW1haW50CiszNDI3NSAxMmRhMzRlZjg4NTRmYjEzNGRmMWY4ODc2N2FmMzdiYmY4OTYxNTI4IGxlZ2FjeS10cnVuaworMzQyNzYgN2Y0OGU4OTQzOWUwYmVkYzMzY2E2YTkxNzUyZDUzNjQyODZjY2I0ZSBsZWdhY3ktdHJ1bmsKKzM0Mjc3IGRkNDQ4NTk0M2YyM2Y0ODVhYTgwNzBmODljYTdmZDk3MDlhMzhmYjYgcmVsZWFzZTIzLW1haW50CiszNDI3OCA5NGI0ZmNlN2E5OThiMjM4MmJkOTI2YTFjM2JlYTdlZTUyZmNmMWNkIHJlbGVhc2UyMy1tYWludAorMzQyNzkgNmMwNDAyZGFmYjE4Y2M1OGFiN2U5OWJmYjE4NTI0ODc3NjMxZGNhZCByZWxlYXNlMjMtbWFpbnQKKzM0MjgwIDYzYWUxYjkxYTg2ODU1YWRkYzRhZWY0NTkyMjg0MGMyNDkwN2NhOTEgbGVnYWN5LXRydW5rCiszNDI4MSAwMzVjOTc4M2E0ZGRiYWZhMTc0ZTYwN2QyNTRiNzY4Zjc2MGFjOTRhIHJlbGVhc2UyMy1tYWludAorMzQyODIgODU0MDcxMmQ2ZTJkMzE3NWM4MWE5MTFkMDdlNjYyYjlhYWY5ZjIyMSBsZWdhY3ktdHJ1bmsKKzM0MjgzIGUxOGMxMGNhNzQwODI4NjhkYWVmNjJlYWIzMmFjOGI1Y2MzMTMxZGQgcmVsZWFzZTIzLW1haW50CiszNDI4NCA1OWI4NTFiNmFkMzNhNTdmNTEwNTZjNzMxNmI3MGY3MzJlMGQyOTZlIGxlZ2FjeS10cnVuaworMzQyODUgYTUzZWFiZTAyNzI5ODQ3Y2FlNDhiODQ1Y2ZmOGU4MDNlMmU3OGFhNSByZWxlYXNlMjMtbWFpbnQKKzM0Mjg2IDdiYzUxYmU3NWZlYmZkNzIyN2U4MmE5MDc2MzQ0NmIyZjE4OGFhNmEgbGVnYWN5LXRydW5rCiszNDI4NyAzZDFhZTFjODZmZDM5MzY3MTc1NGUzMjhlMGNhNzMwOTNjM2I0NzQ5IHJlbGVhc2UyMy1tYWludAorMzQyODggZTZjZWE3N2FiZWUzNmZmMWVmMTk3MTQ0OGM0ZTE2MTllZTJmOGExNCBsZWdhY3ktdHJ1bmsKKzM0Mjg5IDA2MTY0YzZkYzUwOWYxNGMzZGE5YzQwMTVlYWVmNDA2NzZmODYzMTcgbGVnYWN5LXRydW5rCiszNDI5MCBiZDRjNGI2ZTA5YTE3MjQ0NzZiMWIxOWJlZDFlY2NlNTRhMjQyYTUwIGxlZ2FjeS10cnVuaworMzQyOTEgMGM5YWE3ZTU1NDE1N2M1OGNkODFmNmNkZDI0ZDFlMDU5ZDIyZTkwNCByZWxlYXNlMjMtbWFpbnQKKzM0MjkyIGZjN2VmNGZkZTI3YTFlZGZkZmMwN2Q1NDU2NmRmNTE3NWQ0ZTU5ODcgcmVsZWFzZTIzLW1haW50CiszNDI5MyBiOTU3OTc2Y2Q4ZTdkYjQ2MDVmNWRjMDJmNGY1ZDMwMjgyN2JkYzU4IHJlbGVhc2UyMy1tYWludAorMzQyOTQgNThiOThmOTg4YTA4MTlhMGQzMTU1YmJhN2Q4OGRmODRjYjQyOTZhNSByZWxlYXNlMjMtbWFpbnQKKzM0Mjk1IDNlZjg3YTBiYmJhZDA1MjYyMjQwMjJhYzVkZmE1Mjg3NDA5Y2QyNTYgbGVnYWN5LXRydW5rCiszNDI5NiBhYjNlNzcwYzNhOTliZmI3NzE3MjEwMjc3MjJjM2U4NGM4ZWZmYTExIGxlZ2FjeS10cnVuaworMzQyOTcgOThhNmI2MDE1MjI5OTYzMmU4NDgxZTNiOTNjZjdhYjZkMmU4YjUxOCBsZWdhY3ktdHJ1bmsKKzM0Mjk4IGQzNGI2ZjkyZGQzMjVkNmJkYzZlYjhlZTc2MTBmYmRjMjM5NmRhMjggbGVnYWN5LXRydW5rCiszNDI5OSBkYWY4YzkzMjc4NmQyOTg0ZjVlOTI5NzUyNDQ5YmQ0MWViYTA4NmZkIGxlZ2FjeS10cnVuaworMzQzMDAgMzQxNzVlOTQwODFjYTk2YWVmOGMyMmQ1Y2VhOGY0NDZiNmU5YzU3ZCBsZWdhY3ktdHJ1bmsKKzM0MzAxIGM5NTFmOWMzMDZmMzI0Zjc3Yzg0NDExZjFjNjM1MWIzYWU3NzYyM2QgcmVsZWFzZTIzLW1haW50CiszNDMwMiBjZGRiN2M4ZGIzNjc5MTUxM2U5OTdiYjI3ZTNlYTg5NmI1YzBjZTk0IGxlZ2FjeS10cnVuaworMzQzMDMgNjdjZDNlN2QwZWFjZDg5Yzg1MWQyOWE2NGJiMmJhYmUyZDc1OGVjYiBsZWdhY3ktdHJ1bmsKKzM0MzA0IGI2YzBmOTA4YmViODA5ZjFjN2Q1ZGEwZTIyMDQ3YmE4NzVmZmY2YWMgbGVnYWN5LXRydW5rCiszNDMwNSA3NDFmNzlmMTAxMmEwZWI0MzM0OTVkMmI2YTQyOTRkYzFkOTBmMWUxIHJlbGVhc2UyMy1tYWludAorMzQzMDYgMjA3MTI0ZjZhOGQ3YjJkNGMxNTM1MjZlNWE1NTc5Mjg5NjhhN2EzNyByZWxlYXNlMjMtbWFpbnQKKzM0MzA3IGZkNTQwMjIwZmZjNGYwODAxZWY2OWJkNDQyOGY4NmVmMWRkMjJiZjcgcmVsZWFzZTIzLW1haW50CiszNDMwOCAzZTFiZjc1MTA2NDExMGRlMzE4YWFhZTU1YmYxNTI4YWM4NjE5NjhlIHJlbGVhc2UyMy1tYWludAorMzQzMDkgYzg3NmFjNGQwMzM3MTk1ZjhjYWM3ZDM3ZTRmNGI4N2FlZDI2MDVkNiBsZWdhY3ktdHJ1bmsKKzM0MzEwIDYzYzY0MDg4ZmY0OTgwMDU2NTcyMTRlMWM0NjI2YTViMzRhMjNlNzYgbGVnYWN5LXRydW5rCiszNDMxMSAwMDI4ZWY0NWE1MGVhNTVhY2E3Y2JkM2VhNzdiODkwOGRiOGNlN2MzIHJlbGVhc2UyMy1tYWludAorMzQzMTIgNmQ3NTM4MzI3NDM0MmYwMDM1ZjBlM2Y4ODM0NDk0NTAyYTQ1YmE4OCByZWxlYXNlMjMtbWFpbnQKKzM0MzEyIDdkNzM2MmE3MTI1M2JmZjRmYzFiMGM4MjVjMTQ1Njk3NzhkYjhjMzYgcmVsZWFzZTIzLW1haW50CiszNDMxNCAxYjljM2E4YzQ5ZGI2OGJmZWM4YWE2NTY2MWMwNTQ3MWIwMzZjMzdjIHJlbGVhc2UyMy1tYWludAorMzQzMTUgMGM2ZmU1OGFmN2QxMjQ3OTcyMzg2MzExMWNlYWIxYmJlY2U1MTZkMCBsZWdhY3ktdHJ1bmsKKzM0MzE2IDZmOTc4MmNjMjc1MGQyODZlZTljNjZmMGEwNDhiYThjMDk1YzViYmIgcmVsZWFzZTIzLW1haW50CiszNDMxNyA2Y2ZkOTdkN2ZlOThkNzgyNjIzMzVhYzYyMTYyOGMxNDExYmZiYjBjIHJlbGVhc2UyMy1tYWludAorMzQzMTggZmJmNmVlNTc2OWQ0MmEwZGY4M2U4YTk0NDYzOGRiZjI5OGIyZDYxMyBsZWdhY3ktdHJ1bmsKKzM0MzE5IGQzZmI3NWJjNjM1NmU5Y2Q1NTEwYTNmYzNmYmRmZGYwNzJkYmRmYzUgbGVnYWN5LXRydW5rCiszNDMyMCBkZTg1NTJmMGFjYzU3NjQzZGQ2MWMyODkxZGM0MzJjZDE1MDc2MDIwIGxlZ2FjeS10cnVuaworMzQzMjEgYmJlNjNhODc5NjlmZGJmNjYxN2Y1NzFmNWEzYjNhNjY4NmRkZTI2NyByZWxlYXNlMjMtbWFpbnQKKzM0MzIyIGM5ODMwMjIyNTI5MjBkMzQ5MzBjMGY5ZDllNGQ4N2ZkNDliNDk0ZDQgcmVsZWFzZTIzLW1haW50CiszNDMyMyA4MjcwMGE3ZTlmYTRiNDBkZTIwODVjYTI3NTY0ZDIxMWZkZmY5NTVlIHJlbGVhc2UyMy1tYWludAorMzQzMjQgYTY3M2Q4NWY1YWQwYTU1YTVkOTA4NTNjOWJkNDVmZWVlNjQ1ZGI5YSBsZWdhY3ktdHJ1bmsKKzM0MzI1IDY2ZmQ4MjdmZTFkODRiYTY4MzliZDQ0MTc0OTVmYTA5ZjBhZGJhZTcgcmVsZWFzZTIzLW1haW50CiszNDMyNiA5ZTYxNjQxOThjNDU3MjNiMzU3N2E2YjAzMWRiOWE2YmY4MWUxYzYyIGxlZ2FjeS10cnVuaworMzQzMjcgYzczZjE2MjI1YTcxYWRmMDEwYzIyNjE2MzE3ZGI4Yjk4MmQzMGQ0NyBsZWdhY3ktdHJ1bmsKKzM0MzI4IDdiZDZjNmI1M2Y4NzE3MGFlYWMwM2JkN2IzZGY2ZGUwNDBmODZlYTYgbGVnYWN5LXRydW5rCiszNDMyOSBiMWM1Njk2YWQ0NzU4NTg0NGEyYTg1ZjljMzQ2ZDBiMDk2NWRhNWRiIHJlbGVhc2UyMy1tYWludAorMzQzMzAgMjc5NTlhMDJkMzlkZTljMWEyZThjZThmZTdlZTVhNmVkNDhlZmFmZSByZWxlYXNlMjMtbWFpbnQKKzM0MzMxIDEwNzliZTU4N2JhYTA3OTYyYzM0MTNlMzlkODg5MDA0OGQ2MTY2YzggcmVsZWFzZTIzLW1haW50CiszNDMzMiBkNDdjYzZmNzFmMzJhMzJjMTY3YWM5NjI2YTRlYjc5NTYwZTg1M2I4IGxlZ2FjeS10cnVuaworMzQzMzMgYjdkMDFlZmZlODk5NTBhODM0MmY2ZmZhN2IzOTZjOTJmNzFlNmJkYyBsZWdhY3ktdHJ1bmsKKzM0MzM0IDg0NzMxZWVhNmRiOTBmZTI5Y2Y4ZmRiM2ZjOTljOWNhYjkxNDM5M2UgcmVsZWFzZTIzLW1haW50CiszNDMzNSBmMjlmMTA4YWI0OWVlYjVkYTJmMzUyZGE0NmQzOTZiYmQyNzQ4MjgwIHJlbGVhc2UyMy1tYWludAorMzQzMzYgNWZmMjRkNWQ5ZTkyMmIwMmViODgxMTE1YjkyMTk3YTEyZjk2MGNjZCBsZWdhY3ktdHJ1bmsKKzM0MzM3IGU3M2YzYTAzMjc2MzZhZDhkNjZjODIzNWU5ZTQzYmU2N2VmMGJjNzEgcmVsZWFzZTIzLW1haW50CiszNDMzOCA1NzNhNDBiZWMwNzA0MmE2NjE1NjNmYzJmYWEzZTE5YzRhMDQ4YTI0IGxlZ2FjeS10cnVuaworMzQzMzkgZjRkZWUwMTViZjg0YzJjNmMzMjA3NThiZTQzZjNkNGExZjFmZTRhZSByZWxlYXNlMjMtbWFpbnQKKzM0MzM5IGJlMjUzM2ZiMTBhNTg3YzhkYTg5YjE4YzVmMzgxZjQ3OGQ3MjA1OTMgcmVsZWFzZTIzLW1haW50CiszNDM0MSBlNWU2MDg5MmMzZTM1N2U1ZTc0M2NiNjRlYzcwYzM0NTk2MjVkN2M0IGxlZ2FjeS10cnVuaworMzQzNDIgMThlMjM5ZjIzMDI5ZDgwZTg3MzE0OWExOTEzZWI0OTdlYjMzN2VmNiBsZWdhY3ktdHJ1bmsKKzM0MzQzIGM0ZTNhNmNhY2ZjYWJmYWViYWNkOGVmYTczZWViOGY5ZTk3ZmZhZmQgcmVsZWFzZTIzLW1haW50CiszNDM0NCAyZWY4ZDYyZGNjMDkxMDYxMGRjZmZhOTQyNzM4MzAxNzlmOWQxMzU4IHJlbGVhc2UyMy1tYWludAorMzQzNDUgOTIwMDcxMmQzMWU3OTBlYzE5Yzk2NGM5NjFhODYxZmUzMDVlNjcwYSBsZWdhY3ktdHJ1bmsKKzM0MzQ2IDgxN2I2ZTBmNDhkMWJhODc0MzMzOTNjMzg1ZTY0MzNiOTkxNGM1OGUgbGVnYWN5LXRydW5rCiszNDM0NyBmOWRmZGNiODk3YmI2NjRhNDFhOGYzNzQ3YTVmYmRhNGQzOTRlN2U0IGxlZ2FjeS10cnVuaworMzQzNDggYzFhNjcyZWUxNTMwMzUyZWExNjAwNTlhMzM1ODEyOWVhZmMxOGM2MCBsZWdhY3ktdHJ1bmsKKzM0MzQ5IDdmZDU1M2ZiNDMxNTAzN2M2YTExYWY5MDliYzRlNzdmM2IyMTg1YTcgbGVnYWN5LXRydW5rCiszNDM1MCAwNDcxYzY3ZjYxYmQ3OTc2NTExNThiYWZlMjUyNGZhOGNjODAzZWMwIHJlbGVhc2UyMy1tYWludAorMzQzNTEgMGQ0MDE3ODQ2MjFiNGY0OTg1MjM1MDhiYjU3ODc0ZDdlOTNkN2Y0YiBsZWdhY3ktdHJ1bmsKKzM0MzUyIGEzMDE1YmJhMzk5OWJkYzAzZjMxN2YzZjEyM2Y1NTBjZWE2ZTY5MGEgcmVsZWFzZTIzLW1haW50CiszNDM1MyAzOWU2MzVkYTIzMjZhNTdlZTgwZDRiZmE5MWZhMzgyOGNjOWE4NjU2IGxlZ2FjeS10cnVuaworMzQzNTQgNWVhMGZkMjZiZDM2NDYyZGQ2NWJhNTQ3Zjg3OTE4ZWY4NGQyNWJmMyBsZWdhY3ktdHJ1bmsKKzM0MzU1IDE1NDNhODQwZmM3ZjNhMGFjYzhhOWJlZmI2YTg2MWY3NTc0Y2I2NDAgbGVnYWN5LXRydW5rCiszNDM1NiA3MTc1N2NlYTI1N2YzNjlmMGQxMmEwM2YzNDRiNzhlZDU5ZjgxZjkxIHJlbGVhc2UyMy1tYWludAorMzQzNTcgMDQ0Nzk4ZDhiYmZjN2I0ODQ1Y2EwMzBjYTA1OGU3M2IwMzdlNzAxMSByZWxlYXNlMjMtbWFpbnQKKzM0MzU4IDg2MzBkZDhiNWNiNDY3MzFlZGE3YzdkM2VhYTVmZGUzNDhiNWZjODEgcmVsZWFzZTIzLW1haW50CiszNDM1OSAyMDVhMjkzZjNkZTA4MDJlNzBkY2QyZmQ0ZmZhYzI2NGRkNGM3ZDdiIGxlZ2FjeS10cnVuaworMzQzNjAgZDBiOGM4M2MyYTZiNjlkMjA0ZjMzZDI1NjI5NTU5N2NmYmRhNGE5ZiByZWxlYXNlMjMtbWFpbnQKKzM0MzYxIGE2ZmI2ODIyODE0YWFhZjYxYzY4MDZhODIyZTVmNjQ2ZWE2NmFmMWQgbGVnYWN5LXRydW5rCiszNDM2MiAxZWFkZTc3ZWE5ZWE3OWZhYzFjZjQ1ZTBkYzEyNGJjYjZjNzYzOTRlIHJlbGVhc2UyMy1tYWludAorMzQzNjMgZDc5YmIyOWZmOTZjYzA5NDc2MzlhYTFiZDYwMDZkOTRjZGU5MmRiOSBsZWdhY3ktdHJ1bmsKKzM0MzY0IDg4NDFkMzRhMmMzN2ViOTg5MjlkMzNkNTg2ZWQ0YWRhY2I4NTllYzcgbGVnYWN5LXRydW5rCiszNDM2NSBjYTAzMDMyMDk2M2Y1ZmQ1MDEyNzc0YWI4ZmZmMTE3YWViMGRjNDFjIGxlZ2FjeS10cnVuaworMzQzNjYgNmZkZWUzZjllY2UzYWI3Y2Y5NmJhYjY2NGY1ZGQzNmZjYzI3Y2ZiNCByZWxlYXNlMjMtbWFpbnQKKzM0MzY3IGFkNjMwNmQzNWNlM2ExOTVkNjlmNjE4MTg1MGE3Mjc3YjNjNzE1MjYgcmVsZWFzZTIzLW1haW50CiszNDM2OCAzYjQ3ZDYwNTcxNTE3ZWMyMDdhYzY1YjE3NjczM2QyNzlhNDYyMjdmIGxlZ2FjeS10cnVuaworMzQzNjkgMDU1YTgwODgxZTk2ZDkzNmYxNDQ1MzA0YjIzOWNlZWM4Y2QxMGJmOCBsZWdhY3ktdHJ1bmsKKzM0MzcwIDBlMGJhOTI5NTUwYzAzYzdhMWNmMTQ4OWQwMzAxZWIyNTA1MzNhMDkgcmVsZWFzZTIzLW1haW50CiszNDM3MSA4MTQxZWVhZDE5MDczZjRhYTkxNDE5NzBhYjdiY2JiYTAzNWJlZjZiIGxlZ2FjeS10cnVuaworMzQzNzIgMTQ0YmM4ZmQ5MTFlZTk0Y2QwMDllZmY4ZjJiNzEwNGQ5YTUxMmQxMSBsZWdhY3ktdHJ1bmsKKzM0MzczIGYwMGEzMmVjNDEzOTMwMDRjNTNkZTk1YzRkYjQ4ZjllYmE5ZjlkMTMgcmVsZWFzZTIzLW1haW50CiszNDM3NCBhY2VmNGUxNmNlYWU0ODMwYTZiN2FkMDRhMjhiNmE0ODFmNWU5OTllIGxlZ2FjeS10cnVuaworMzQzNzUgMzY5OTJjYTkxOGEzNDkzM2M3MTM4YjBlYWFhYzhiMGZlOTdiMjkxMSBsZWdhY3ktdHJ1bmsKKzM0Mzc2IGJiM2NlNmFlZTY5M2VjYzRlYmI0MTUyYWJjMWI4ODMwNjcyYjQ2N2EgbGVnYWN5LXRydW5rCiszNDM3NyA2ZWYyNDUxMzYwMzg5YWY5Nzc3MGY4ZTdlMGQzNjdlMmRlZTM4ZmFlIHJlbGVhc2UyMy1tYWludAorMzQzNzggNWMwMTc0ZTJlMTRmNDUxZjVmODYwNzg5ZjEzNWQ5OTkzZGIxYzdkZSBsZWdhY3ktdHJ1bmsKKzM0Mzc5IDI5ODg4OGUzOTVjZTBjMDVmMzc0ZmJjYzRjMTAyYThlMjA1NWViNDIgbGVnYWN5LXRydW5rCiszNDM4MCA0Nzc2YTA1ZTYzMGI1ZmMzOGYwMWU4ZDk4M2MzYjdmM2Q0ODc0NDRkIHJlbGVhc2UyMy1tYWludAorMzQzODEgNThmZTY0ZjdmYjE5M2FlYjhmMjAwYTMxOTY0MWMzZjkxOTE1N2QzNyBsZWdhY3ktdHJ1bmsKKzM0MzgyIDQwMDY3NDk1ODAyNWU5ZTQ4MTY0ODBiZmJjNDYyZDcwOWVhY2QwOGIgbGVnYWN5LXRydW5rCiszNDM4MyAwNjJjMjU1YjU3YThlMjJlOTczNjI1ZjkxZGQ4NzMwNDNlMjk1ZjlhIGxlZ2FjeS10cnVuaworMzQzODQgZDVjMzIzMWJhNWJhYTQxNjMyMDM5YzhjZmE3NDlkOTJiMTQyMjgxNyBsZWdhY3ktdHJ1bmsKKzM0Mzg1IDdmNjEzNGY4YmQwNmZkM2ZjNjgyOGNkZWRlMmVkOTdhYzk0MjdlMzUgbGVnYWN5LXRydW5rCiszNDM4NiBhZGM2MDAxNTY3MGFlOGMyM2RiM2UzZTE4ZTk0MGUzOTU3NTM1MTUxIGxlZ2FjeS10cnVuaworMzQzODcgNDFiN2QxZjA1MDBmMGU0YzE1MDRlMmQ2Zjk5ZTEzMjk3YjAyYzZmNCBsZWdhY3ktdHJ1bmsKKzM0Mzg4IDYwNDgzMGYxY2FhNjU1MjZjYTg5ZDE4YWI4MGNlMmJkOWRiNjQyNTcgcmVsZWFzZTIzLW1haW50CiszNDM4OSBhNzQyODIxZDllNzVkYzdhZWFhZDhmMDY3ZGUzODNmNjc5Y2FmYWRkIGxlZ2FjeS10cnVuaworMzQzOTAgZmNlODBhZDgzNDc3MDlmMWMxYTY3ZGQxYjRhNmNjNjVlM2E5MzBiNyBsZWdhY3ktdHJ1bmsKKzM0MzkxIGZkZjBhOTdiYWI2MDBkNTk1ZGIwYzA5MjYxMDY1YTYwOTk2NDdhZDcgbGVnYWN5LXRydW5rCiszNDM5MiBjZjAyYzE3ZDdmNDQ5YmM1ZjJhOGE0YmY4NTQ5MGQ1OTc2MzllYTY1IGxlZ2FjeS10cnVuaworMzQzOTMgODM3ZWExODYzN2JjMTkwZmU1OTc4NmY3MjY5M2ViZTBlODE3ZDZlZiBsZWdhY3ktdHJ1bmsKKzM0Mzk0IDRhMGM4OWU1ZTA1Njc3YmU3OGQ0M2Y3M2ExZmQ4ODlhOWI4ZWNjZTUgbGVnYWN5LXRydW5rCiszNDM5NSBjMjI2Zjg0ZDdhNjZlMmFhODE2NjVlMzBlYzZkYzAyZjk5MWJjMzJmIGxlZ2FjeS10cnVuaworMzQzOTYgOTY5MWNjNjQ0MTYwMDdiZGRkYzE3N2JkMWJlYTY4MjRkN2Q3MGE2NSBsZWdhY3ktdHJ1bmsKKzM0Mzk3IDQ3M2Y0ZTI5NTlhODA0M2Q5YmNiZDc0NDNlY2JjMzE0YzE5NjViZWEgbGVnYWN5LXRydW5rCiszNDM5OCAzYjU5ZmE1ZDI1YjEzYjVjNjVlMDk2MDc5NDlhYzA2YWY5MDg2ZGQ2IGxlZ2FjeS10cnVuaworMzQzOTkgMGRkZWNhZjhiNzVjYmVjYTAwNjYwMDRkZjFjM2RjMzFlNTFhYmRmMiBsZWdhY3ktdHJ1bmsKKzM0NDAwIDZjMzg0MDZjM2ZhZDg0MTI4ZTVmYmI3NTc1MmE4ZWM4N2E0NWNiMWEgcmVsZWFzZTIzLW1haW50CiszNDQwMSAwMDYwMTU3ODQ0ZDg3YmUyYWNlN2U5NTMyNmQ3NTIwMDdhMGEyOWJlIGxlZ2FjeS10cnVuaworMzQ0MDIgOGVhODMyNjAzZTRmZWIxN2UxOWU4MzgwNWQ3N2FjYWE0NDQ4OTQ3YyByZWxlYXNlMjMtbWFpbnQKKzM0NDAzIGI0OTFiYmYxN2RkZThhMTg0NTZlMzRjYzJiN2ZjNGZmMDI5MjRmMTYgbGVnYWN5LXRydW5rCiszNDQwNCA1MDFhNzkzNDY3ODRhZTYyNmE4YjRmMGNkMDQ5OGRlYTA3Y2ExNThhIHJlbGVhc2UyMy1tYWludAorMzQ0MDUgZmQwNTJjNGY4ODRmNDQzMGMyODM4MDIyZWE1YmNkODk5NWFiMWU1MiBsZWdhY3ktdHJ1bmsKKzM0NDA2IDA0ZjQxOGFmNjgwZDA3ZjRiNDBlNDk2MWFmNDFiMGQ4ZmEzMDZjY2MgcmVsZWFzZTIzLW1haW50CiszNDQwNyBhM2U4NjY2NWYyNDVhYzVkN2U1ZWJmYjcyMmJkZWJmYmRjMTVjOGY2IGxlZ2FjeS10cnVuaworMzQ0MDggNDM4OGJiYWQwYmMzN2FlOTQ4YzIzYTBiYTRlMzFlMjQ3YTY2MjdkMyBsZWdhY3ktdHJ1bmsKKzM0NDA5IDVhMWQzYmM2Y2MxODAyZTAwODM1NTc2YWYwN2Q1NzEyNTBkNWFiZDUgbGVnYWN5LXRydW5rCiszNDQxMCAyY2I0ZjMyMTc5OGNkNmYwNDE4YzQxMTllMTI1OWY3YTY0NjBkZDc5IHJlbGVhc2UyMy1tYWludAorMzQ0MTEgMzQyOWIxZDM4YjQwMGM2MGUwYjg1MGYwMThkNmQxOTM0ZDI0NGEzNiByZWxlYXNlMjMtbWFpbnQKKzM0NDEyIGYxYzMwYmZiMGNjMTI2MTdlMmVlMGEzNDFiOWZiNzQ1ZTllYWY5NjYgYXN0LWJyYW5jaAorMzQ0MTMgNzk4OTdlZDUzZjAzNmYxNzk1MTViNTUzNDBkNGE1NzM2OGE5MzM3ZCBhc3QtYnJhbmNoCiszNDQxNCAxMzQ1YzIzYTA1OTE2MDUwM2JiNTNiYjhmYTk0NjVjNzRkY2VjNmEyIGxlZ2FjeS10cnVuaworMzQ0MTUgM2UzZmQ1NmNlNTk1OGNkNDdlZTYwZTY3YTgyZTIwNjc5ZWZkMzMxNiBsZWdhY3ktdHJ1bmsKKzM0NDE2IGVmZWQ0ODlkZjU0NTlhODAxYjBjYjk5MzUzNGU0ODg3YmRhODBkYTYgbGVnYWN5LXRydW5rCiszNDQxNyA1MjAxZjY2YzkyZWYzY2RlZWIyYTM3OGMzYzUyZGJjZjQyOGUzYTdhIHJlbGVhc2UyMy1tYWludAorMzQ0MTggYzNkZmRiNjBiOTg4ZjgzODljOTZiYTNlMmYwYmIwOTEzMzU2NTgxZiBsZWdhY3ktdHJ1bmsKKzM0NDE5IGM4Yjg4MjFlODcyZDFjOGU5MTc2OThkN2U4ZTMyZGM4OGI4ZTZkOTggcmVsZWFzZTIzLW1haW50CiszNDQyMCA4MjgyYWExZjkzNDM3YzY2NmMzMGQxYzQ2ZmJlOGRmMzQ0NmZmMjYxIGxlZ2FjeS10cnVuaworMzQ0MjEgMDRiY2ZkY2YyOTBhMTUwOWNjNzVjODM2Yjg5YmJiMDZhMThlNjliYiByZWxlYXNlMjMtbWFpbnQKKzM0NDIyIDNmZjAzNDQ2ZjM2MmFlZWZjOWZhOTA3MGU2Yzg4ODAxZDI1YWJkNGIgbGVnYWN5LXRydW5rCiszNDQyMyBiZTBjYTI2YWQ1NzQwZWM2NDM3YTcwNjNiNzUwZDZhZWRjOTdkNzIwIHJlbGVhc2UyMy1tYWludAorMzQ0MjQgOWUyMWU1NmJmNWYzY2UxOGZjMWZkNmM3MTgxYmIzNTYzMGQ3M2MxMyBsZWdhY3ktdHJ1bmsKKzM0NDI1IDNhOTkyOTRjOGU1YjVlMzhkMWExNzQwMTlmZTYwYzFmNTY0MGUxYTYgbGVnYWN5LXRydW5rCiszNDQyNiAxZDVkNzI0MzZmMmE3YzQyYmEzODhjYTY4MjYwNzg3NWZlOWUwOTFlIGxlZ2FjeS10cnVuaworMzQ0MjcgYTIzNGRhZjE5ODEwYWIzYTg3OWM4NmYzNmJkY2U4MGI4YjQ0MjQyZCByZWxlYXNlMjMtbWFpbnQKKzM0NDI4IDY4NzdmNzk3Y2YzNjE1MWExYjQzMmViYzAxMGMzNDY2NGNiNmE0NGMgcmVsZWFzZTIzLW1haW50CiszNDQyOSBhNjYzNDMwOWQ3MGVlNmViYWM5OTM2NDBlOTY5YjRmMzUwNWI4NjMwIGxlZ2FjeS10cnVuaworMzQ0MzAgOWM3ZTAyMjdjODM1NjhmM2Q4MGM1NDMyY2Q2NjMwY2Q2YmQ0YzQxNiBsZWdhY3ktdHJ1bmsKKzM0NDMxIGIxMWQ5NzNhYmVjYWNiYmRjMGNkODUzNzQ5NjJiN2U3YzhkOGIzNDYgcmVsZWFzZTIzLW1haW50CiszNDQzMiBjMTJkNGYxODUzYmMwMDJiM2Q2MzA3OTIyYjM3YmYwOWQxNTFjYTk1IGxlZ2FjeS10cnVuaworMzQ0MzMgMDdhMGEwNzI2NjQ5OTQ2NzEwZTlhYzVkY2QxZmZiYTMxYWYxYWFmZCBsZWdhY3ktdHJ1bmsKKzM0NDM0IDEyZTU0OTI5NWY3ZjVkZmZjMjQxOWM1ODJiODVlMTdlN2Q5ZWY2NWIgcmVsZWFzZTIzLW1haW50CiszNDQzNSBhMjhhODMwMDMxYTlhYjMyMmVmOTVhMWNiYzQ5NDBmMTEzNjQ4NGI0IGxlZ2FjeS10cnVuaworMzQ0MzYgN2RmZGY5ZThkOTVkMzcwMTEwODc3YTZmN2NmYThiM2Q3OTc0M2Q1YiBsZWdhY3ktdHJ1bmsKKzM0NDM3IDJiYzc5YjNhOTUzZGZkODdlYTQ4YTQwODhhZDE3ZjM1MmRkYTQxNzYgbGVnYWN5LXRydW5rCiszNDQzOCBmODBkODM3Nzg0MGYyZWQ1MTMwZTIyOTlkNjZjYjBmNjJmNTZmZWMyIGxlZ2FjeS10cnVuaworMzQ0MzkgNjUxZmM4ZDk4ZDk5YjUwZjdkOWFhZWQ3YjVjYTdiNmNjZWEzYjVjYSBsZWdhY3ktdHJ1bmsKKzM0NDQwIDZmMTVlNzNiNTlmMmUzYTAzZjMxNzg3NDUzNTVjZjdlZDI2OGY1OTQgcmVsZWFzZTIzLW1haW50CiszNDQ0MSA5NWRmNjAwYWI5YmRlYjUxYzEwMTg5YjNhMWZhYTdhMTgwYTU5OGQwIGxlZ2FjeS10cnVuaworMzQ0NDIgZTg3ZDZkNzZlMzY1NzVjMTI5NTBkN2JkN2E2MmRjYjcwOGQ2Yjg3NSByZWxlYXNlMjMtbWFpbnQKKzM0NDQzIDEwMjRjNWJmN2ZlZTkxMjk0MTU5MTkyY2NlM2MxYTdlZjJhOTJjYjIgcmVsZWFzZTIzLW1haW50CiszNDQ0NCBhZDU4MjI5NzcxNTJmZTczNjIwNDVkYjc2OTQzOWQwODNkODQzZGJhIGxlZ2FjeS10cnVuaworMzQ0NDUgOTc3ZWZhYTg2MzRlNjFmNGI5ZTg2MjUxYjk3M2MxODQ4NmQyYmM4YyBsZWdhY3ktdHJ1bmsKKzM0NDQ2IGIxMDhjNDQyYTM3NDQxNTRiMTdkZThjNzYyN2NhZTc5YzI2ZjYyYmQgbGVnYWN5LXRydW5rCiszNDQ0NyAwZWE0MTA0OGIyZDQ3NTI1ODg4MDJlNzk4YTQ2NzBhMWRjODBlMmY4IGxlZ2FjeS10cnVuaworMzQ0NDggZjBkYTBjYWQ1Y2Q1MWY0N2ZmYTNjZmE1MjY2ZjM3M2E4Mzk0OTZmZSBsZWdhY3ktdHJ1bmsKKzM0NDQ5IDQ0Zjk4MDAyMTgxZmIyOTA2OTMyZjg3YmFjZWYxMzVmNGYxODczNDIgbGVnYWN5LXRydW5rCiszNDQ1MCA5NDU1ZGVmZjFjN2MwZWY5ZTAyZWUzNGM3OGU1ZDNiNWUxYzdjYWQ2IGxlZ2FjeS10cnVuaworMzQ0NTEgOTE2Zjc4MmVkNmQ1MGM2YmY5MDI4ZWY4NWUyMzk3Nzk2OWRjNTEwOSByZWxlYXNlMjMtbWFpbnQKKzM0NDUyIDQyNDQ1MTcyOTI4ZjFmYWY1MWFjYTE1YzhhNDQ1ZmU2YzNmZWMyMTUgbGVnYWN5LXRydW5rCiszNDQ1MyAwZTgwNzdjYjNkZDVhMTY3YmY3Mjg1YWYzMjUyZjNhMjkxYzMxZjFlIHJlbGVhc2UyMy1tYWludAorMzQ0NTQgMzhiMGI3ZDQxOTM2YjE3ZmZmMmYwOTRhMDQ1ZTU3ZGQzZTA5YWE4ZSBsZWdhY3ktdHJ1bmsKKzM0NDU1IDkwM2IzMWQ3NzIxYTFkNTZjMDBjNzM5MGMzMTQ3YTE3MjUxNjQxNTQgbGVnYWN5LXRydW5rCiszNDQ1NiAzOGI5NGMwNWI4NWI5MmU3NmMxOWNkNmYxMTYxM2VlNDBlNTkyZTYwIGxlZ2FjeS10cnVuaworMzQ0NTcgNDk0ZDVjZjBiYmUzZTIxMTM2NDIzNTJlM2JkNjViYTlkMjQ1ZTE1ZSBsZWdhY3ktdHJ1bmsKKzM0NDU4IGJjOGYyMmM1MzQyY2EzN2NlNGYyZmRiZjE4OTEzYzA2Mzg1OTEzMzAgbGVnYWN5LXRydW5rCiszNDQ1OSBhODEwYmFiODVmYmM0ZDBhNGFlZGJlMjRjYjYzODYyMDUyMTRlNTU1IGxlZ2FjeS10cnVuaworMzQ0NjAgZjg3NDI0M2VlMzliYTI2ZTcxYzgzMWUyZjVlZDhhZDI5YzE0MDg1MiByZWxlYXNlMjMtbWFpbnQKKzM0NDYxIDAwMTIwOWI4MThhNjdjOTE5MWQwYzg1NjUyMDUwMTI2N2Y3MmMwZDcgbGVnYWN5LXRydW5rCiszNDQ2MiBkYmU3ODgyMjNjZTk2OGVmNWVjOTZmZTNhNjgwMjJkZTlkZDZiNTg5IHJlbGVhc2UyMy1tYWludAorMzQ0NjMgMGM2MmMxYWM5Njg0ZGIzMTc4NTc4YTUzZWU5NDdhZTQ1NmM2MjQ4MyByZWxlYXNlMjMtbWFpbnQKKzM0NDY0IDc3ZDUzMDhiZWRhZTExNDRiNDljN2I5ZWJlZmUwYzdjYTNkZThhNDQgcmVsZWFzZTIzLW1haW50CiszNDQ2NSA2MjQ4ZGQ1ZDE5MmE4MDVkY2I5NjRiNTkyZjM4MDc0MDlkNzdkMWY1IHJlbGVhc2UyMy1tYWludAorMzQ0NjYgZmFlMzQzNTc2MWFmOWY1ODlkZWI5NDgwZTYxNjg5Y2JlOTg3NzJjOSByZWxlYXNlMjMtbWFpbnQKKzM0NDY3IDFkOTJlY2RmMmJiMTRjZDkxNGNjNjBjZjY4Y2FmYjNkZDNjOWI0NjIgbGVnYWN5LXRydW5rCiszNDQ2OCA2ZmRkZTk2YTcyMjI3YTJjNmU1ODA4ZGE3NmQxNDFhNjZkYjk1MTFlIHJlbGVhc2UyMy1tYWludAorMzQ0NjkgZDc3MGRjMjY0MjEyZGU3Y2U1NmI5YTFiYjBiMjJlMGExMWJiZTM4MiBsZWdhY3ktdHJ1bmsKKzM0NDcwIDY5MTRiNWUyMDc2ZjIyNGI3N2RhNWMyYzU5ZjUyNzU2ZGViZGRhZjcgbGVnYWN5LXRydW5rCiszNDQ3MSA4YjJlYWRmYjhmMGNkZGMzMmJkZGE5OTY4N2JlNDY2ZmZmMDBmMmM3IGxlZ2FjeS10cnVuaworMzQ0NzIgNGQ3OWU4NDkwYzc2ZTZlNjk0OGNiOWY3OTQ4YjA2ZTAwMjQ5ZmMyZSBsZWdhY3ktdHJ1bmsKKzM0NDczIGI2OTAyYzBhNzU3ODJlZGJjZTk3NWVkYTIyZjFhMGU5ODhlYjgwM2YgbGVnYWN5LXRydW5rCiszNDQ3NCBlMGVjNjQ0ZjViMzZjNDVlM2E1Y2ZlOWVkMGM5M2E0MWM3ZjQ0YzQ5IGxlZ2FjeS10cnVuaworMzQ0NzUgMjZiYzAxOTQ0YWU4ZWM5ZTQ0MWRlMzNiMjk1YTBmZjg3Yjc1ZjEyZCByZWxlYXNlMjMtbWFpbnQKKzM0NDc2IGY3NzJkMzQwM2NhN2QyNDg0MmYzMjllMGQ0M2JmNGJhNzA2ZmFkNDkgbGVnYWN5LXRydW5rCiszNDQ3NyBhMDU0NWUzMmRhZTc4ODQxM2FhN2RhZmExYWZlODcwNzFiODc3OGE5IHJlbGVhc2UyMy1tYWludAorMzQ0NzggMGZlMzA3MTBkYTgwNjBiMDhmZjYzOWEwNWU0ZjQ5NTE3ODNmNTllNyBsZWdhY3ktdHJ1bmsKKzM0NDc5IDhmYmIwNjIzYjg1NzhkOTY5YmIzODlmN2E2NWY4YzBhYzg0NjZmNjIgbGVnYWN5LXRydW5rCiszNDQ4MCA0OGI5Y2M1MTc0MmI5YmYzZTk3YzQyYjM5ZjY5OTA5MzBjZmQ4MzZmIGxlZ2FjeS10cnVuaworMzQ0ODEgYjk0OGU3NzVhNzllZTBiYzQyNWI2ZmU2NzUxODQ2YjE3MjVmNjIxOCBsZWdhY3ktdHJ1bmsKKzM0NDgyIGZlM2Y1NTkyMzA1ZGNmNGY2MWY0MzBjYTJkYTkyZjBhNzllYmJmMTEgbGVnYWN5LXRydW5rCiszNDQ4MyA5ODJlM2U0MGJmMWU1ODY0OTQ2OTQ3ZmVkNjJkODQ2OWMyMWE0N2YwIHJlbGVhc2UyMy1tYWludAorMzQ0ODQgNzkwZWQ1YzU5OWMzZjQyZmFkYmY0YTIwMTFmMzgxY2U1MDBkY2QyMiBsZWdhY3ktdHJ1bmsKKzM0NDg1IDI3OTczNjk5MGExNGJlMzRlN2VmNzFhNzM0OTBmM2Y2YjM4M2QwZDggbGVnYWN5LXRydW5rCiszNDQ4NiAyYmM5NWQ0OWZjN2E2MGY5OWZmYjJjOWRhYmFjYmMwMmNiOWNhZDBjIHJlbGVhc2UyMy1tYWludAorMzQ0ODcgZTA4NDFiNWNmMmZkMWMxYmU4ZDAyMGI2YjVhNDYxYzRjMmIxZGIwZCBsZWdhY3ktdHJ1bmsKKzM0NDg4IGE2ODc5ZDE3MzNkN2JjMmQzNDcyYjg5MGE4NGMyMjU2NGRhYWJmMzQgbGVnYWN5LXRydW5rCiszNDQ4OSA4OTdhZmNhY2JhMDA3MmQ3YWExNzc5YzQzNTExZTQ1ZTJiYjFjMmUxIGxlZ2FjeS10cnVuaworMzQ0OTAgOTVmZDU1NTQ1Y2FjMjY5ODQxNmU2ZjFmYzFjNGRmMzBmZWJiYjc3YiBsZWdhY3ktdHJ1bmsKKzM0NDkxIDJkOTg3MTBmMjcyZWNlNmJkMDZjNmZiMWMxMThkOTQ1ZGY4YmM1NTkgbGVnYWN5LXRydW5rCiszNDQ5MiAwNjI4NTdmNjkyN2Y3OTNiMWYyNGM4NjQ3YTlmNTgzNWM3NmNkODU2IHJlbGVhc2UyMy1tYWludAorMzQ0OTMgZGY5ZDhmN2U0YzljMzUzMDA4MDcyMDQ3ZDFhNTcyMDhkMWZkYjk1OSBsZWdhY3ktdHJ1bmsKKzM0NDk0IDY1YmJmZGEyNDZjOTMwOGM1ZmE0MTI3NWMyMzY4MTYyOGRhZGMzYzcgcmVsZWFzZTIzLW1haW50CiszNDQ5NSAzZTNkNTM5NjNjODg4MWIwN2M5Mjk3NmY5YmE1ZTQ2ZTdhYmIyMzE4IGxlZ2FjeS10cnVuaworMzQ0OTYgZWVlMDdmMzBlZjA2OGMxMGM5M2JhMzBhYzMxY2YxMWI3OGU2YWI3OSBsZWdhY3ktdHJ1bmsKKzM0NDk3IGYyZTYxZDk5MDk1ZTczMTZmNGYzYjIxMTljZTBmOGIxMWM0YmUyM2YgcmVsZWFzZTIzLW1haW50CiszNDQ5OCA3NDc0N2Y2MmYyODZhODYxYmExZWM1ZDViN2Y3NDk3ZTRmOTg4YTdjIGxlZ2FjeS10cnVuaworMzQ0OTkgZjUxZGM5MDI2ZTRkZjliZWVjZWIwNThlZTViOTg4NzFjNWJkNTgyNSBsZWdhY3ktdHJ1bmsKKzM0NTAwIDQ4MzNhOWNkMzc3ZWYxZmFkMWJhNjA3NjY4NmVlOGQ0NmQ3MDUwYzIgcmVsZWFzZTIzLW1haW50CiszNDUwMSAzNzI4NWEwMzQ2YzE0Y2VhYzI5YTY1MWNjMDU3NTllMzZhNzk1ZTVjIGxlZ2FjeS10cnVuaworMzQ1MDIgZDk5NmUyZGNiZDNhN2U1N2ZlYTdhYjUyZDU1MmE5MDNiYTI0MDNmYyBsZWdhY3ktdHJ1bmsKKzM0NTAzIDIyNWQ4NDhhNWY5NjhjODhkOTZjZjc3NWE4MTBkY2NkOWYwM2VkNGMgbGVnYWN5LXRydW5rCiszNDUwNCBlYTA1ODUwNDEwNGNkNzI2ZDA4YzBlN2E4YWJmZWMxZTgzMTFmOWVlIGxlZ2FjeS10cnVuaworMzQ1MDUgYzJhZTkxYTg3YTQ4YWM2NTk5M2FhNDVkYzk2MmVhYWIxOGMwMTA1ZiBsZWdhY3ktdHJ1bmsKKzM0NTA2IDg0ZmYxM2JjYzc1MDJmMGIwNzFmODZhNWFkYWUyMGFlOGU2ZWY2MzMgbGVnYWN5LXRydW5rCiszNDUwNyBhNjAwOGI3MGM5MzkzNGI3OGU1NzU0ZmNjMmI2YmFkNGM0OTJjNzJmIHJlbGVhc2UyMy1tYWludAorMzQ1MDggNGM5YTY3Y2YyODMzYTlmZWYxNzFkMjc0ZGU3YTE1NmE2ZmU0NzgzMiBsZWdhY3ktdHJ1bmsKKzM0NTA5IDdiYmVlOTk0MjJhMDJlYzc3Zjc1OWIxYzUxNjVlMWUxMGI5MTA1NDggcmVsZWFzZTIzLW1haW50CiszNDUxMCBhYzk4NWQ3NzY2NTAxNzEwOTBlZmM2NjZhOGRlNzJlYzdmMjBjMjU5IGxlZ2FjeS10cnVuaworMzQ1MTEgNDEzOWI0NWFjZmVkMDE3Y2U3NTYxZTdkNjYzNWFiOTljYTM3YzU3ZCBsZWdhY3ktdHJ1bmsKKzM0NTEyIDlkYTUzNzE2N2I3NDk3YmZmM2Y1ZTJkZTA2Mzk3NzI0MjgxZjE3NzMgcmVsZWFzZTIzLW1haW50CiszNDUxMyA4ZWI4OTg4MTRmYjkxNzQ0OWNlZGNiNDc4MTUyM2QxYzE4NDYyMjUwIGxlZ2FjeS10cnVuaworMzQ1MTQgN2U5MzE0OTI2ZGJlMmNjNWI1ODZmNTUyY2ZiMTljMmRjNGY0MDIwNCBsZWdhY3ktdHJ1bmsKKzM0NTE1IDdlZGU3NzJmMDNkM2JjMWI3NDY5NGNhM2U5NzQ2ZGQxYjBiMDI1NzYgbGVnYWN5LXRydW5rCiszNDUxNiAwMzRhZTQ5ZjliN2FlYWY5MTMwZTU3M2U3NmM2Mzc1NzkyMWMwYzRlIHJlbGVhc2UyMy1tYWludAorMzQ1MTcgYWY0NDNkODIwYTUwNjc3MmM3YTkwYzJjYTk0N2M5YzVmNTU1ZjVhNiBsZWdhY3ktdHJ1bmsKKzM0NTE4IGM0MmM0MDAzNDUzNmNjOWMyNmYxMjA1Y2ZlZDQ4ZDY3OTk4NjUzM2EgbGVnYWN5LXRydW5rCiszNDUxOSBiNGI5NDVjNWRhNGQ3NDVhM2U1MTBiYTBiZGZiMGI4YjQ3ODU5YzE4IGxlZ2FjeS10cnVuaworMzQ1MjAgYWVjYmJhMDI5NGJiNTA2Mzc4ZWI0YmU4MGI4ODA0YTFkYWIxZmZmOCBsZWdhY3ktdHJ1bmsKKzM0NTIxIGFjOGM3NzE2YTg1ZGFmYmYyYjY3OGNlZjM2MzgwYmU2MGY4ZGJkNDQgbGVnYWN5LXRydW5rCiszNDUyMiA2YTg3ZWQ2Mzk2N2MyNTlmODQwN2RlYzIwY2JmODExZjlmZThmMWVmIGxlZ2FjeS10cnVuaworMzQ1MjMgNjMxMTE4YjlhZWM2MmFkYzQ2OTZmYzQ3ZWE4ODg2Nzk1ZGY2MmYwMSBsZWdhY3ktdHJ1bmsKKzM0NTI0IDdiYTQzZWZkMGNlYjMyYTQ5ODY3ZWQ2NjhlOGY1ODhkYmE5OWQxNGQgcmVsZWFzZTIzLW1haW50CiszNDUyNSA4MzJmM2E5ODkwNThhNmZjNGY4ODg0N2ViNDQ5NDkwMTYwODFiMmE5IGxlZ2FjeS10cnVuaworMzQ1MjYgOGRiNjRhYmY4NTZmOGM0NGE3NWViNTk5MWE3ZWJlZGQwY2U2ZDZmOSByZWxlYXNlMjMtbWFpbnQKKzM0NTI3IDJjYmEwZGU3MGRmNjJiZWI4NWM2ODcwNmEzMmUzOThlYTk4ZjZmNTIgbGVnYWN5LXRydW5rCiszNDUyOCAxZmJmZTlkYzBiYThiOTJhYzFjZWM4ZjkwYTkyZWZhMWViMmNiOGM2IGxlZ2FjeS10cnVuaworMzQ1MjkgNzg2M2ViY2ZmMTIxZjE1NzYzODljYmFhODg0MDYyNDVhY2UxNzc3NSBsZWdhY3ktdHJ1bmsKKzM0NTMwIGEwZDI5Nzg1NjJkNWUxMmY5NTIzZTFhM2U3M2Y4MzQ2NzU4ZjIyMzggbGVnYWN5LXRydW5rCiszNDUzMSA1NjUyODQ5ZmJlMjk2MDIxMWU0NTMwNjk3YTI1MDBkZDY2YTJhMmExIHJlbGVhc2UyMi1tYWludAorMzQ1MzIgYzgwNDFiMGVlYjNjYjMyYjY1ODc4OWM3ZjgxYjg0MGQ1YjQ0OWJkOSByZWxlYXNlMjMtbWFpbnQKKzM0NTMzIDA3ZTdhMDIwNjFkODdjNTc0ZTQwMTY5NDhlYzBmMGUxNDYwZGI3ZWIgbGVnYWN5LXRydW5rCiszNDUzNCAxNTEwMjQ0YmViNWUwZTY4M2VkZDFkMzk0Zjk5ZjQ2ZWZmOTA3ZTM2IGxlZ2FjeS10cnVuaworMzQ1MzUgNDRlOWFiZDA3ZWIzMWUyNzM2Y2YwOTgwNWYzMTczNWQ1NmRjNTU3NyByZWxlYXNlMjMtbWFpbnQKKzM0NTM2IDlkOGFjZGI1OGY5YzM4ODkyZjAxNzZmZDUyYzllZGMyMGY4ZjRjNTggbGVnYWN5LXRydW5rCiszNDUzNyA1MjhjYzBmZGRhNDFjZDFmM2NiOTA0NTI0NWVmYWIwYmIxMGZhNzU1IHJlbGVhc2UyMy1tYWludAorMzQ1MzggZWMxYTRhMjlkMjVkYTQ1ODhjMTMxMGJmNDIxYTU3ZjYyMzQ2MWI3OCBsZWdhY3ktdHJ1bmsKKzM0NTM5IDhjZDY5MWI3Mzg0NTI3MmNkYTIxMGJmOGFlNmQyMmNkZjZlNWU5YTcgbGVnYWN5LXRydW5rCiszNDU0MCA5OGM4NTc2YjhkYTdkMjQwMDJkODA3NjAwMDVlZmMzMTZlYjAzZGY5IGxlZ2FjeS10cnVuaworMzQ1NDEgNjQyMmEzOTUwMDQwMWJmNzdkOTk4MGUxZDkyYTBjNzAyYTJiMDgzZCByZWxlYXNlMjItbWFpbnQKKzM0NTQyIGQxNTMzY2E3OGQ4Y2NhODVjMWNlZjhmYzhhNzg1MGNlNmE4ZWM3N2YgcmVsZWFzZTIzLW1haW50CiszNDU0MyBmYWM4YzYzYzc4MzgxYWI2ZjA0ZGFmNzNmNmIwZjM3ZmE1YmRiNmFjIGxlZ2FjeS10cnVuaworMzQ1NDQgYjVmNjRiZTViMjFmZGNlZTdkNmU4ODg4YTZiOGE0NjM2NDBmYzRiNiByZWxlYXNlMjMtbWFpbnQKKzM0NTQ1IGU1OWFiNzA4YmJiMGNhOGJjZmI3ZGFkOTQ2Y2U2NzEyN2ZhYThiMzAgbGVnYWN5LXRydW5rCiszNDU0NiA5ODMzYWE1YmRmMzg3YzgzY2JhZTE3NDIyOWIwOGRhYTA3MjIyMmZmIGxlZ2FjeS10cnVuaworMzQ1NDcgY2JiZTNmOGJkZWY2ZjI4M2FlOGIwMzg0MDBmNDgwMWJlYzY1NzY0YSByZWxlYXNlMjMtbWFpbnQKKzM0NTQ4IDgyN2QwMWRmNjFhNzE2YThjMzNkMTBlMzExMTdkMjk3YjY1MzAxMDMgcmVsZWFzZTIzLW1haW50CiszNDU0OSA4OWRjMDY5YWFkMmM3OTM3N2E3YzEwMGVlMTQ0YzRjMTQ3Zjc2ZjI2IHJlbGVhc2UyMy1tYWludAorMzQ1NTAgM2NkOTIwNmRmYjc5MjkwNjQ0NWY5ZDg0NDVhNzNkOGZmMDdlNTY4ZCByZWxlYXNlMjMtbWFpbnQKKzM0NTUxIGQ2YzA5YTlkNzI0MWQ2ZTYwNWRkZDAyM2EzNDhkNGU2ZWYzNDRkMDcgcmVsZWFzZTIzLW1haW50CiszNDU1MiA1NjIxNDNjMWM3YWVkYWRmNTg0MGIwMWFkZDIzMzQ4YTI1NDBiYzNiIGxlZ2FjeS10cnVuaworMzQ1NTMgNTIyYTNkN2UwYTk2MjI5ZGNhYWViMjRhMDdjMjIwMWJhYzJiYTU1YiBsZWdhY3ktdHJ1bmsKKzM0NTU0IGU2NzZjOTVlNDg0NDg3MGU1ZTVhNWU2OGY3OTg1ZDljYmY1Y2QwOTcgbGVnYWN5LXRydW5rCiszNDU1NSAxOWJiMWIyZmIyMzM4ZGYxZDA3NjliOWRhODY1OGE4MDk2ODE4NTEzIGxlZ2FjeS10cnVuaworMzQ1NTYgZmVlYzQ0ZjE5ZWNjNzhkY2I4OTIwYTFjNmY1MGJhODAwODM1OGI2YyBsZWdhY3ktdHJ1bmsKKzM0NTU3IGZlZjZmZGVjNTI5MjUyM2YwYzg4ZDkwMjdiYjk4ODc4ZDlhMGY1MGEgcmVsZWFzZTIzLW1haW50CiszNDU1OCBhOTk3NjE0YjM1ZGM5NzVjMzg1NmNlYjJiNGQ0NjMzNzI2NTc2ZTRkIHJlbGVhc2UyMy1tYWludAorMzQ1NTkgZmU5YTVhMmRkMmMxNTE0ZGU2MjNjZWZlMjI3MDg3M2M1ZGRjNDRkYSByZWxlYXNlMjMtbWFpbnQKKzM0NTYwIDA4YzAyYTI2NWRiZDBkZDlhMTUxMGUwMDYxOGUwNDNlMzY3YjMzZDYgcmVsZWFzZTIzLW1haW50CiszNDU2MSA0ZTU2ZmJhOThmMWU0NTA4YjZmZTI2YjYwMjQzOWRiZjE4YjdjZTIwIHJlbGVhc2UyMy1tYWludAorMzQ1NjIgNTdmNzQzZmEzMjA3ZTA5YTU2MzA4ZmU3YzY3NjJhMGJhYjg5Mzg0ZiByZWxlYXNlMjMtbWFpbnQKKzM0NTYzIDNiZTQzYWY5OTJhNmQ3MmI5YzZkY2ZjYWUxMWI4ZjU2ZGRlYmNkZDAgcmVsZWFzZTIzLW1haW50CiszNDU2NCBlNWQyMjFmOGQ0MTBiMzcxZGRjNjE4MzlkZDk1ZWI0YjQyYzBiZWUwIHJlbGVhc2UyMy1tYWludAorMzQ1NjUgOTMxYTU4ZjI3ZWJiMDg1ZmUzOWU5Mzc3Y2U4NDZiNWRkMWNiNjNiYyBsZWdhY3ktdHJ1bmsKKzM0NTY2IDI2MjgyM2ExMmNhNzUzMzI4MDVlM2Q5NDIwYzU5OTQ1YWQwY2NjYTQgbGVnYWN5LXRydW5rCiszNDU2NyBlZDA1OGJkYWQyYWRmNmUyZDczNjYyYjk4ZjU4MTg4NThhMjNhOGFlIGxlZ2FjeS10cnVuaworMzQ1NjggZGNhZTYyZDM1ODg0OTM0NzJmNTUxYzZlMmE5YTQ5OTFjYmE1ZDQ3MSByZWxlYXNlMjMtYnJhbmNoCiszNDU2OSAwODBkZjBlZGIwYTRiY2FjNDE3ODc4ODY1ODVjOWQ5NDk2ZTQxYmMzIHJlbGVhc2UyMy1tYWludAorMzQ1NzAgYWY3MzE4NDZmZjcyODI3YzMwNWE2OGUxMTVlMTA0NTAwNDllZTVlNCByZWxlYXNlMjMtbWFpbnQKKzM0NTcxIDhhNzVmOWJhOWJhYmIxMDBhOWMwMjZjNmNkZWQyNzE3OGIzYzcwMWIgbGVnYWN5LXRydW5rCiszNDU3MiA0ZTE5YTJmZjM3NmEwNWY5ZDQ0NWJmYjZiNGE2YjA2Y2I5YzVhYTA0IHJlbGVhc2UyMy1tYWludAorMzQ1NzMgYWRlOTdiNjA1MzUyNDVmNzc2ZWYyZWExNTljNDViZThiNjM1MDcyNiByZWxlYXNlMjMtbWFpbnQKKzM0NTc0IDcxMzVjN2NhOTg0MmIwZGNmMGFlMTIwMWQ4ZTFkYTJmNTRkNTI3NDAgcmVsZWFzZTIzLW1haW50CiszNDU3NSA3NzZhNzcxNTA2MjBjMjkzZWU4YmUzY2FkMGNlM2I3NTUzMzU1MGQ0IHJlbGVhc2UyMy1tYWludAorMzQ1NzYgYzMxZWFkYjY5Nzc5MTRlZTQ4OWZhNDA4ZjA3N2E2NDMzM2ExZWNlZiByZWxlYXNlMjMtbWFpbnQKKzM0NTc3IDlmNWRkMzAyYmQ5MTUzMzhmZTg2Njg5NTc3Yjk1OWUxYzJlNzJmMDggcmVsZWFzZTIzLW1haW50CiszNDU3OCA4MjBkMWQwNDNkM2FjY2Y0ZjYyYTEzOGU5MDM3ZmVkN2M1ODFmZmJiIHJlbGVhc2UyMy1tYWludAorMzQ1NzkgYzg5ZmQ3ZWFmODc1NDc2ODgyNTEwODhkY2JlYWMyNzFkMWJjZDg2NyBsZWdhY3ktdHJ1bmsKKzM0NTgwIGQ0NWY4OTgxZmRlYTkxZmM4ZTIyOWU3YTI4MDc0OTIxMjZmNDZkYmEgbGVnYWN5LXRydW5rCiszNDU4MSAwNzBjODllZGE4MGJkYjU0MzVjYzdlMjBkMDVmNWZjNWFlMWIwYTM0IHJlbGVhc2UyMy1tYWludAorMzQ1ODIgNjc2MDZmOWMyZDExM2RkZTE3NzNiODRlNjBhNWM1NDM4ZTNmODA0MiByZWxlYXNlMjMtbWFpbnQKKzM0NTgzIDQxYzRlMTQzZTZlNmUxOGU0MTMxYTFlZDg5NThhYzQ0ODFhNTNlNzEgbGVnYWN5LXRydW5rCiszNDU4NCBmZTVjZWE1MWEzZmZmZmYwMjljMjY1NmM4MmE2ZmQ0ZDdkYTkwNzRhIHJlbGVhc2UyMy1tYWludAorMzQ1ODUgMDRjYTRkMWY3NTFmMmE4YTAyNTJlYjE2YzkyNWUzZDZhNWZiMDc1NCBsZWdhY3ktdHJ1bmsKKzM0NTg2IGRhNTA1NmEzYjE1Mjg0MWNkMTY1OTYwODBkNGQ0NzBjNDNlODdlYjQgcmVsZWFzZTIzLW1haW50CiszNDU4NyAwYWNiOTVhZDE5ZGM4NjdmYmM1OWY1YmVjOTIyMGJlYzVjMDhlM2ZlIGxlZ2FjeS10cnVuaworMzQ1ODggZTQ2OGIyNDUxZDU0YjA1MTMzMjdlM2I0OWY2MTRjNmVjN2ZlZWIyOSBsZWdhY3ktdHJ1bmsKKzM0NTg5IDlkN2I3ZWUwNDQ3MGUxOWUwYWE2MGIyZjcwMzQ1N2Q3OWQwYTIwNGUgbGVnYWN5LXRydW5rCiszNDU5MCBlNzA5MWQ1NzU0YWVjMDE1NGViOGU5NDVhNDI1NDZiMGRiMDI2ODc3IHJlbGVhc2UyMy1tYWludAorMzQ1OTEgMWRiMGRlNGM4NDU0MzIzYmZiMDg3NTU2ZTBjYzM4MjFmZThmN2QyYSByZWxlYXNlMjItbWFpbnQKKzM0NTkyIDY4MmQxYjY3YzdiNTUyNDc4NzI1MTNhZjE5YzY3YjFlMmRjZDdlZDcgbGVnYWN5LXRydW5rCiszNDU5MyAyYWNkMjhiZDRkMGYxZmU2MTRlMzEwZjI2ZjdhYzQzOTEyOGY3Zjg5IGxlZ2FjeS10cnVuaworMzQ1OTQgZTJhOWE3ZmVmMThhMzNmODBkNGFlNzFjOTcxMGUxYTJlYzA4OTZiNiBsZWdhY3ktdHJ1bmsKKzM0NTk1IDNmYTk1MzhhYzQ5NjcyN2QwMjBmMGU5MzMwYjg5MDllMTdjOWQ5MTAgbGVnYWN5LXRydW5rCiszNDU5NiBmMDE2MTMyN2E5MDI2Nzg0MTBkOWY5MTBiMGUyNGFiMTYzZDVmZDkyIHJlbGVhc2UyMy1tYWludAorMzQ1OTcgNGVkNDBiM2Y4ODAyMzVlNzVjYWY5N2EwZTBhZjlkNjU4ZjljZTk3ZCBsZWdhY3ktdHJ1bmsKKzM0NTk4IGQzMzg5ODNkMDcxOTQ3ZDY5MTdjZTliZTQ3YWFmOWNhM2I0NzUzY2IgbGVnYWN5LXRydW5rCiszNDU5OSAyZTQ5Nzg0MGM0NTg4MGQ1ZDAyMjNmMWY0NjczNGNhN2FiNDJkZmYxIGxlZ2FjeS10cnVuaworMzQ2MDAgNzJkNzBkY2M0YWYyYzdmNzMyMDU1N2JhMDYxYjJlMWYwYTg5YTlkOSBsZWdhY3ktdHJ1bmsKKzM0NjAxIDJmMGU2MGQ0MjMzYTY2NWJlMmYwMWZhNTEwNGNiMGQxNGJlN2VmODUgbGVnYWN5LXRydW5rCiszNDYwMiBjYmQ5M2NmMzJlZmZlYWU5ZDc2M2Q0YTY5MmVlNWVlYWE1OWY4OGYwIGxlZ2FjeS10cnVuaworMzQ2MDMgZTYxNDA4M2FiMjBjOGYxZDJjYzM5OWExMTIyOTllNTJjNmQxNTM4NCBsZWdhY3ktdHJ1bmsKKzM0NjA0IGU0OGM2MWZhMmY5ODNlMWUwZDI2NmQyYThhMmUyY2E3YmI1MGI1ZjMgbGVnYWN5LXRydW5rCiszNDYwNSAzYWU4MjkyOGIxMTMxY2JiMTA1YWYzYWU4OTk5MDIzN2FjOTAzMmFiIGxlZ2FjeS10cnVuaworMzQ2MDYgN2RiNzc4Y2I3ZTA4YTQ0OGQzZWFmN2Y4MzQ0NmVjNjgwYjhkMTExZSBsZWdhY3ktdHJ1bmsKKzM0NjA3IGNlZWM2OWQyNDBmMDE5ZWJiNzdiMGFlZTIwZjgxNjA4N2VmOGZkMGIgbGVnYWN5LXRydW5rCiszNDYwOCAxOTk3YTE0ZjZiMDg4ZTFhNjUxZTFmZGI4YzNjYWM3ZjVmMWJmYzM2IGxlZ2FjeS10cnVuaworMzQ2MDkgODllY2ZhMjU0NTI4M2IxN2ZmMTk3MGFiYWFmZDU1ZjJlY2IyNDI5YSBsZWdhY3ktdHJ1bmsKKzM0NjEwIGYwOGE1ZTk1YzM3Y2YzZGI3MjZkOWJkZGE5YjBiYjY3MWU5NjFjMjQgbGVnYWN5LXRydW5rCiszNDYxMSAxZTY4NjNkZGQ4NGI5ZTgzZTdiM2ExNzU3MWNlYjRlNmVlOTljOTNlIGxlZ2FjeS10cnVuaworMzQ2MTIgNTQzNzEzOTE5NDk5ZTY2MTMxZDM0ZDk3NjhlMmZiZGRlNDE2MDFlMiBsZWdhY3ktdHJ1bmsKKzM0NjEzIDJlZDM2ODMzODUzYWFjYmI0ZWY5ZGFjYzQyMmU4YTM5N2U0ZDMxYTkgcmVsZWFzZTIzLW1haW50CiszNDYxNCBhMGE4ZjE1NDAxZGIwZmIxMzc0YzliMmJhMjJlYjc1YmRkODY2Y2Q1IGxlZ2FjeS10cnVuaworMzQ2MTUgYzVlNTIwOGNkYmI3MjBlMDM4MjUxM2ZmNmM3YjZmNWU3NDNhZWJkOCBsZWdhY3ktdHJ1bmsKKzM0NjE2IDM3Yzc3NjNmYTgzZGZhNjQzZjNlN2NjM2EzNzA0MzhiMjIxNGI2MjYgbGVnYWN5LXRydW5rCiszNDYxNyA5NjE3MGY3NWUzZTlmZWZkODJhMzVlZDUwZjU2NmI2MzZiYmI1ZDczIGxlZ2FjeS10cnVuaworMzQ2MTggMzA5NmZhYjJhMTljMDU0YjU5NGJjMmI1Njg5MzMwZDEyZTE5YTU1OCBsZWdhY3ktdHJ1bmsKKzM0NjE5IDg1ZjM4MzY1MThmZTVkMTY2OTdmZDFmM2Y4N2I5NDVmZTZiZTc3ODQgbGVnYWN5LXRydW5rCiszNDYyMCA2MDM3MDQwYTJjY2U0NzEyNGM1NTNkMTNhZmM5Y2RmNzFjMzViZjUwIHJlbGVhc2UyMy1tYWludAorMzQ2MjEgYjEzNjM1M2FkZGU2YTZjZmE1ZjgyNjZhYjBjNjRhNzk1YTc0NDdjOSBsZWdhY3ktdHJ1bmsKKzM0NjIyIDUxMGJkN2VlYTkyNWZlMTBmYzc5MmQ2ZmVkOWJiNWIxZTVlYmQ1MjEgbGVnYWN5LXRydW5rCiszNDYyMyBkMjYxODM5ZWNmODdjZjgzZTIwZTRmOTc2MzE3OWIwYjYxNjM0YTVhIGxlZ2FjeS10cnVuaworMzQ2MjQgMzlmYTdiOGZjYzA3N2FjYTcxNGYyODAzOGIyYmM3ZjU2YWEwNjRiNCBsZWdhY3ktdHJ1bmsKKzM0NjI1IDNkOWIzNmQ2YWI4OThiMmFhMDkxNWRhNTExZTJhZjNmMTAwM2YxYmMgbGVnYWN5LXRydW5rCiszNDYyNiBjZDc2MjRiMDI1YTBmZTgyZTJlMzZiZjJjN2M1NTVjN2ZmZTc3YWViIHJlbGVhc2UyMy1tYWludAorMzQ2MjcgZTNlYmQ3NDBkMWVmYjQ4NjhiZmZkMTgzYzc1M2E0MGM5NzIwZDIxZiByZWxlYXNlMjMtbWFpbnQKKzM0NjI4IGEyOWE1ODViMDNkOTYwZjMxMTRhOWI3ZTQ4MDJhMGYzZDllMmEzNDggbGVnYWN5LXRydW5rCiszNDYyOSA0MzIwY2NhNGVkODQzODM3NzIwOTg0YTljYjZhMWM5NWM0YjliOTdkIGxlZ2FjeS10cnVuaworMzQ2MzAgZDQzMmY4MmI5ODZmYmYxYjQ3ZDE4YjFiYjhmNTM1OTEwOGY2NDA3NiBsZWdhY3ktdHJ1bmsKKzM0NjMxIDU2N2ZhMDY0OWU4MzVlODFjYzRlYjY5Zjk4MzQ2Njk1ZWExOGJlYTMgcmVsZWFzZTIzLW1haW50CiszNDYzMiBmNjQ4YzdmMWU4Yjg1OThiMzAyMmE4MjgwNmU1MTA2YjUwYTAyYWQ1IGxlZ2FjeS10cnVuaworMzQ2MzMgODA4MTY0M2MzNzNmZmJhZTIxNTY4ZTA4YmY2N2M3ODVlZTJiMzM3MSBsZWdhY3ktdHJ1bmsKKzM0NjM0IDgxNzMzYzdhOTVjOGRkZTYxMWYwNzBkMTNiYzZjMjZmZDJkOWJmNDUgcmVsZWFzZTIzLW1haW50CiszNDYzNSAxMmMyMmQ2YjFlYzA2OGIwM2JjYTY3YjczZGJlZjJjMGQ1YWQyNDIzIGxlZ2FjeS10cnVuaworMzQ2MzYgOGFhOTIzN2Y2ZGQ2YWExMDhlNDliYzc4ZWI3ZDZmNTE5MjI5MjdjYiBsZWdhY3ktdHJ1bmsKKzM0NjM3IGExODE5OGY0OTRmNDQ3OGRkZTIxYjgzMzhlN2E5MWI2MTBmNTBjNTQgcmVsZWFzZTIzLW1haW50CiszNDYzOCAzMjEzYWFhODJjN2I3OTZiM2M5ZmIxYzMzNmFjMmViMjE0MTgxYWI5IHJlbGVhc2UyMy1tYWludAorMzQ2MzkgMDQ2OGY5ZGRjMDY5ZDZmZjBmM2ZhNzY5NjM1ZDMxNWU2ZTA0OGQ4OCBsZWdhY3ktdHJ1bmsKKzM0NjQwIGEwZWNhZTMzMzJhOGI2YjFiZDMxMDgxZWEyNTlhMDAzOGEwMmQzNjYgbGVnYWN5LXRydW5rCiszNDY0MSA3YTZiMWM5ZmI4OWU1NDBlZGNlNmM4NDJkYTBkOTNmMzY1MzdjOTgwIHJlbGVhc2UyMy1tYWludAorMzQ2NDIgODdjMDQyMmNkZTcwOGMzNjhlYTI2NjQ5MDY2MzE4N2NlYTQ0ZDMwNSByZWxlYXNlMjMtbWFpbnQKKzM0NjQzIDUyNjY4MjQ1NmE4ZDVhNjkxN2YxMTY0ZDAyMTdhZjk4OWI4NDhjMGQgbGVnYWN5LXRydW5rCiszNDY0NCA5NjU0ZTVmMjQ3M2U0Zjk0OTcwMjEyMGU5Y2I3ZDMwMDc2MzFiODQwIGxlZ2FjeS10cnVuaworMzQ2NDUgNWM0Y2ZmOGZhNmVjZjkxYzRkNDk5MGU3YzYyNmFkZWM3MjAzODU1OSBsZWdhY3ktdHJ1bmsKKzM0NjQ2IGMwMGI1ZjE3OTYzM2NlYmVkZTA4OGEwOTQzYjJlYzQzMjlmOGVjYjMgcmVsZWFzZTIzLW1haW50CiszNDY0NyA1NGZmNjhlOTczZWViYWUwZDk5MGUxYmU1MzA2YjM3NGIwZjQ4NDJmIGxlZ2FjeS10cnVuaworMzQ2NDggMjg3MjAwYWY5NDZmYjdiZDUxNzMzODg5YTg5NThjNmFiMGMxNWJlOCBsZWdhY3ktdHJ1bmsKKzM0NjQ5IGZhNmU4ZDRmODhjNjc4MjgyZTcxNmRlMGQ1OTQzOWY2MjUyMGYyNDUgbGVnYWN5LXRydW5rCiszNDY1MCA3ZjY5NWM1OTgyODczYjkxZWM3ZTVkNGI1YTdiOGQyZDM4NDNjYzNlIGxlZ2FjeS10cnVuaworMzQ2NTEgMTlmZjk3MjQzNGIzZDI2MWJmYzNjMzNjOGQzZmIxYjc5MzJkMDA5YiBsZWdhY3ktdHJ1bmsKKzM0NjUyIDRlZmZjYmY4MGI0NWM2ZTQwZjQ1MTc4MGRlNDFjYTk0NGEyYzAwNjMgbGVnYWN5LXRydW5rCiszNDY1MyA1ZDJiMGU5MDYyZDUzMzdkMDY5NzliMjIxMzIzYjYzMTJkOGM1Mzc2IGxlZ2FjeS10cnVuaworMzQ2NTQgODk0MWYyZWU5MDk0OWYwM2UxMTQ1OTJiNGMxMjljNjNlMTk5NTI0MCByZWxlYXNlMjMtbWFpbnQKKzM0NjU1IDUxZWJmNTQ3NGYzZGM5ODRmMWNjOGNhOWIwOTU5ZmQ5ZDE3YmI2MWQgbGVnYWN5LXRydW5rCiszNDY1NiA4MTNhNmQ5YzU4ODgyOTA3YTg5OTFmNzIwNWNhMzNkZDFiMzljNDE1IHJlbGVhc2UyMy1tYWludAorMzQ2NTcgYjI0OTk1YTk2NjRiZDU0ODQwYWZmMzg5NGNjMWY1Zjg4MzkzMjQ5ZSBsZWdhY3ktdHJ1bmsKKzM0NjU4IGJmMTMxOTU4MWRjNDc5ZjljYmEwYTIwMTdkNmJmZDhmNjJiNzIyZGEgcmVsZWFzZTIzLW1haW50CiszNDY1OSBjYjdkNWUyM2RiYzc3ZjEwNDE0MWY2MGYwNTg2ZDljNTA0YjRkMWQzIGxlZ2FjeS10cnVuaworMzQ2NjAgNzAxODgwZDI2NmVjY2I0ODEzMDRjYmJlNDY3ZDZkNzg0NTVkMmI1YSBsZWdhY3ktdHJ1bmsKKzM0NjYxIDZjYTBkYmQ2Y2NjOThhMTk2ZWViZjdhOWQyNmNiNTMzN2U3MWVhODIgbGVnYWN5LXRydW5rCiszNDY2MiA2MjUxN2NjNGM0ZTc5MjAzMDFmMjg1ZjE5NzFiMDlkMjVjNjk5YzNmIHJlbGVhc2UyMy1tYWludAorMzQ2NjMgN2JlNDVmN2E3MThmMzU2OTQ0MTM0YjMwZWVjN2JjNzAwYTNkZjc4ZSBsZWdhY3ktdHJ1bmsKKzM0NjY0IGY3MjljNGQ1MzA0OGFjMjI0MzI3MjVlZTlkNDNmMTgzOTYxNjk5NzIgcmVsZWFzZTIzLW1haW50CiszNDY2NSA1ZjQ5ZmMyMzFiNGM4ODVmMTA1MDUxMWU2MzYwZWE4OWQ4NWE2NjdlIGxlZ2FjeS10cnVuaworMzQ2NjYgMjMzODJhMTM0ZDVhYjYxYTgwZDU4ZDhiZTk0Y2RhODBkZDExZTEyYSByZWxlYXNlMjMtbWFpbnQKKzM0NjY3IDFkYTM5YTc1ZWQzODRhOGExM2RhNDkzOTk3Mzc1ZGEzNTE0M2UyYmEgcmVsZWFzZTIzLW1haW50CiszNDY2OCAzOGU3MmY0ZjNkZjVlOTgxMGVlZmZlODVmZjNmMmEyNjY4NTlmZTNhIGxlZ2FjeS10cnVuaworMzQ2NjkgMTE2MzZlNzk4N2I2MzdmZWMxYmI2YTE0ZGI5NmUwOTg0OGU0OGI1NiBsZWdhY3ktdHJ1bmsKKzM0NjcwIDQ1ZjcwNzI4ZGJhYzQ4MDgwZTRhZTA1OTgxNGU0OGIyMDhhMWE2ZmUgbGVnYWN5LXRydW5rCiszNDY3MSAzMzEzNTcxYzY1NzQzYTllYzQzY2I5NmIyYzg0ZTExMzUwYzZlNGY4IGxlZ2FjeS10cnVuaworMzQ2NzIgOGZhM2M1ODY5ZjUxYTdiNWVkYjhlZmMxNTNlNjllOGVmY2U4MjUwZCBsZWdhY3ktdHJ1bmsKKzM0NjczIDA3ZDNjODY2OGY4YjQ3MWM4YWFlMWEyZTYwOWI0ZTM0ODY2ZjgzN2MgbGVnYWN5LXRydW5rCiszNDY3NCA1M2QyODEzMzk1ZjRlZjgwNjllNDRkODE4NzQzOGNlMjA3MWYzZDY3IHJlbGVhc2UyMy1tYWludAorMzQ2NzUgN2FhYTQwYmMyYjE3Yzk0ZGYyYzA1N2VkZjM4MTNhMTI3ZGEyMzA0ZiBsZWdhY3ktdHJ1bmsKKzM0Njc2IDQ2YjlmZGQyN2VjMjFmYmZhN2RhYmFkMzBhNzI2YmZiZmM3MDA0NDEgbGVnYWN5LXRydW5rCiszNDY3NyAxOTA0ZDhiMDM4YjY2OGQ5ZTk4ZGI2YmRiZDc0MGRlMTQ2YTBkODI4IGxlZ2FjeS10cnVuaworMzQ2NzggOGFmZWNkMzZmYjhlMzUxNTc3MDNkNDQ5MGMxM2I5ZDQxMzhiMGMyNCBsZWdhY3ktdHJ1bmsKKzM0Njc5IDMxN2ZjYzVhMTg0ZDQ4Yjg5NDk1NWFlZDVlOGRhZWMwMTAyNDFiZDUgbGVnYWN5LXRydW5rCiszNDY4MCAyMjEwN2M1YTE3NmUzMTMzOGRiODcyNjM2NmI1ZDc1OTQzNmY3YjYyIGxlZ2FjeS10cnVuaworMzQ2ODEgZjE5NjI1ZjNjMTk4ZWVmNGEwMjQzMWVkZmVmYzE2MjQ2YzNjYzVhYSBsZWdhY3ktdHJ1bmsKKzM0NjgyIDViY2U5NTg5ZWYwYjAzNmE5NzIxOGI3OGMyNWNjODE0NzBkNmYwYmIgbGVnYWN5LXRydW5rCiszNDY4MyA0ZWRhYmMyOTc2ZjczZmM1MTMyOGIyNTQ3Y2VmMTMyNzAxNzUwMDZjIGxlZ2FjeS10cnVuaworMzQ2ODQgZGQ2YTUxMGFlMGQ5YzA5OTQ0MzQ3MGIxN2MxNGJkNjk0ZDdmYWQ2OCBsZWdhY3ktdHJ1bmsKKzM0Njg1IDNjMWM4MWQ2NDJlMDg3N2VjOTAwNTQ5YTE5ZDBkNzJkNWNlNDgwMTYgbGVnYWN5LXRydW5rCiszNDY4NiBiNmMxMzk1NDRjMTZkNmFiN2EyNDEyNThkYzE1NGFkYjA0NjdmMDhhIGxlZ2FjeS10cnVuaworMzQ2ODcgZTRmOWU3NGJhNTZkYzg1N2NjYWY2ODk0M2Q5MjM1OGI0YWVjYWQwMSBsZWdhY3ktdHJ1bmsKKzM0Njg4IDE2YzY4MmUzZTU3ZjllZjI4MDIzM2MyMTI2ZDIwNGZkNTc4ZmRhMDIgbGVnYWN5LXRydW5rCiszNDY4OSA0YjJjOWUxNGI0NDZiNjQ2ZGU5MGJlOGE2MzNlMGUyOGI5YjRlMzQwIGxlZ2FjeS10cnVuaworMzQ2OTAgY2U5NmJkYzZmYmI4ZDQwOTZjYzJiZGQyMGVlOTc0MWI2NGZiNDA5OSBsZWdhY3ktdHJ1bmsKKzM0NjkxIDUzZTRiN2ZlMDk2OWMxNDY5MzJmZGM5MDNlMjI2N2I3ZWZjZWI3YzYgbGVnYWN5LXRydW5rCiszNDY5MiBkMTJmMDdjMWMzYTA3MDczMDgxMTkwMzk4MjVkODI3MTkyZDU2OTE5IGxlZ2FjeS10cnVuaworMzQ2OTMgNGNlMzBkOWExZTA0MTliZGY5M2Q5YTk2ZWQ3YzcyYzI0MDUzN2JlNyBsZWdhY3ktdHJ1bmsKKzM0Njk0IGVhZDRjNjEyMTlkMGYwYzE3NjFhMjdjNzYyMDc2NTY4Mzk4MjRhODAgbGVnYWN5LXRydW5rCiszNDY5NSA3ZmUyMDE4MDFjMTQ5OWY4ODUxNThkODY5NzU0NGNhMjY5NzNlZTcwIGxlZ2FjeS10cnVuaworMzQ2OTYgNGM4MTYwMDg4YjM0NzU0YWU3MmFhYmEzOTJlM2UzZjQxYzUzZDJjNiBsZWdhY3ktdHJ1bmsKKzM0Njk3IDg2ZmRmOGZlN2YxNzIwZDEwNjE1YjVlYmM1YzUxZGJkMjBhZTcxYzAgbGVnYWN5LXRydW5rCiszNDY5OCA4OTBmM2MyYzExODMwMDU5N2I2YjcyNTY4NGJkNjNiMjdjYTAxNmM5IGxlZ2FjeS10cnVuaworMzQ2OTkgZWIwNDI2NWZiNjViODZiNjY2YTRmZGEyNTQyMmM3NmIyNzUxNmQyZCBsZWdhY3ktdHJ1bmsKKzM0NzAwIGU1NDNiM2YwZDkwNjAyZTI2NWUyYWNjNGJmOGIxYTY1MjMyYWFmNTAgbGVnYWN5LXRydW5rCiszNDcwMSAzMzRlZGNkMWU1YWM2MTI1MmYzMDBlOGQ4MWFlNWQ2MGYwMmNmMjczIGxlZ2FjeS10cnVuaworMzQ3MDIgODMwZTVmZmM2ZDI1YzcwNGY4ZWRhMGI5ODRlY2E1OWQxODYzYmJmNCBsZWdhY3ktdHJ1bmsKKzM0NzAzIGZkYzhhODhhOWE1YTQzNDRlNGFiZjVkMDhlZDkxNjgwNTdkM2Q5YzggcmVsZWFzZTIzLW1haW50CiszNDcwNCA5NjAwMWE3MGM1MDU3ZjBiNmY5MTUxNTg4NTVlYTQyNzUyM2ZhNzBiIGxlZ2FjeS10cnVuaworMzQ3MDUgZDk5ZTAyMjk2NmM5NDM4YzU4OGZjNjgyODYwZDhjY2E0YjZmYTVjOCBsZWdhY3ktdHJ1bmsKKzM0NzA2IGNhYTFhNDhkYTRjY2RmY2YwYjZkMTBmM2U2MzNmYWY5YjZlMWY0NGIgbGVnYWN5LXRydW5rCiszNDcwNyA0ZjYzODJkMjgwOWRmNGFlOGMyMzYzZjcyMzRjMDZhNzJiYjYxOGY3IGxlZ2FjeS10cnVuaworMzQ3MDggODMyNmY2NDI0NGMyNWFiZmM3ZWE1YzEwZmJjMDQ4MzBjOGE4MjE3NSByZWxlYXNlMjMtbWFpbnQKKzM0NzA5IDE0ZDMyMTQ2NmEwNjkyZjE0OWMzYzVhZjM2ZjNlYzAwMWMwM2U2YmQgcmVsZWFzZTIzLW1haW50CiszNDcxMCBkNDAxNzkwMTc2Mzk1ZDU5ZWE1NDA2YjM4ZGQ4YTBhNjI3NDA5ZTg5IGxlZ2FjeS10cnVuaworMzQ3MTEgNTJkZTU4MDg3YjJmM2E0NWVjYmNmZDUzMTUxMTU0OTJiN2ZhZDI4OSBsZWdhY3ktdHJ1bmsKKzM0NzEyIDYzMmIyMjNjYjhlODM4Nzg4YzkzNDEzN2RkNTc5MzkyN2FmYjI0NzAgbGVnYWN5LXRydW5rCiszNDcxMyBkNDgyNmUwOTdhM2ZlYmYyODRiOGYyOWE1YmViZDA5MWJhZDczMjU2IGxlZ2FjeS10cnVuaworMzQ3MTQgOWZjNTM0MWZhNjk1NmE4MzNiY2JhMjc0ODJjODg2NTU2NmQxOTk0ZSByZWxlYXNlMjMtbWFpbnQKKzM0NzE1IGUwYTc1YTc1NzBiNDAyODlmOGM1NGYzODJmMDFiMGE3MzgwNGY4ZDAgbGVnYWN5LXRydW5rCiszNDcxNiAxOGRmMjAzYjhlOTg1NDgyYTRlYjdmMzBlOWM2ZWExOWUzYWFmZjcyIGxlZ2FjeS10cnVuaworMzQ3MTcgNGRhOTlmNzNhMWRmODRkMTIzNjJhOGQyN2ZmZmMwOGEwNjJhMzhlNSByZWxlYXNlMjMtbWFpbnQKKzM0NzE4IDIyYmVkMmZkZmZlYTZiOTY1ODRhMzJkOTY3NDZkZmJjMGU2NzFiMDUgcmVsZWFzZTIzLW1haW50CiszNDcxOSBkOTAxNThkZjM5YzQ1MzEyZmRmZTBhYjUwOGQ3NmU2ZDg3MmU0MTdjIHJlbGVhc2UyMy1tYWludAorMzQ3MjAgNjIyYTc2YmMwMjM3NjkzOWIwYWE3ODc5MWU4NzJiYjk1ZDAyYmNkNCBsZWdhY3ktdHJ1bmsKKzM0NzIxIDI3ODk3NmIxOWRjY2E2Zjg0NzNjODRjZmIzYzUyNDYwZDY4M2E1ODEgbGVnYWN5LXRydW5rCiszNDcyMiA1Yjc3YmM0ZDI1YjFiOWRmNTlmN2Y5MGMwYzc3Yjk1Mzc4OGNhYmJiIGxlZ2FjeS10cnVuaworMzQ3MjMgNDY5NmM0YjdmNzkyYjJhN2FmZjNhMjg2NGQ1MTRhMzdiNjllODljZiByZWxlYXNlMjMtbWFpbnQKKzM0NzI0IDFmZDgxODk0Y2I5NzNmMmZlNDI1YmZiYTRkMDZlZWM4NGIzNzI4M2MgbGVnYWN5LXRydW5rCiszNDcyNSA3NTNkNzJiZDIxNGIyYzVkMmY4ODZiMTY1MjczMTQ0NDc4NTNmYjdjIHJlbGVhc2UyMy1tYWludAorMzQ3MjYgNDIyNGQ4MDc5MTFjNGEwOWYwMmVjYTFhMjRkZGQ5ODc2ZjEzNDliMSBsZWdhY3ktdHJ1bmsKKzM0NzI3IDcwZjMyZjBkOGVjZjA2NTliNWYxZGNhZDk0YTc4NWZlOGM3MWY4NzggbGVnYWN5LXRydW5rCiszNDcyOCAyZGRiMWNiYTE4ZDY0Mzk2ZDI3YTQ4OTU2OTlhODhmM2VkZjFhZTBjIGxlZ2FjeS10cnVuaworMzQ3MjkgOTYyOGJiNTRhOWUwNzRjYTIyYTI4NTY4MjEyZTA3Y2ZlN2E5MzE1MyByZWxlYXNlMjMtbWFpbnQKKzM0NzMwIDQ2ZGUzZGI5YTVkYjUzNDRiMGQxYWIwNTA4MzM4MTNkN2M2NGJkNDkgbGVnYWN5LXRydW5rCiszNDczMSAzMmMyYzc5OWM5MjQ4ZTNhM2Q2MGE1YTFiZDg3OTMwNDBlNjc4ZWQ1IGFzdC1icmFuY2gKKzM0NzMyIDI3MGQ1OWUzNDZlNmFmODk0OTdhYWE4MWExMGVlMjIzN2QxYjQyZTYgbGVnYWN5LXRydW5rCiszNDczMyBjNDExYTc2MmQ1ZGQ2YTJlYTZmNmFlY2RmZThmY2Y0N2MwOWU0Zjk3IGxlZ2FjeS10cnVuaworMzQ3MzQgOGQ0MTM1NzhlYjFhYzBhOGU2Mzk3MWRlOTAyZDYxZjA3YWIyMmFjYyBsZWdhY3ktdHJ1bmsKKzM0NzM1IGE0YjkxM2Y5MzdjZGM5MTdhYzEzZDYyNjlkZjEwOWM5NjBhMTI2NjkgbGVnYWN5LXRydW5rCiszNDczNiAxN2FhNTMwMmUwOGIyMTdkMDc1MWU1NDQ2N2FkY2I1YzY1MTk1NzgxIHJlbGVhc2UyMy1tYWludAorMzQ3MzcgYmNjNzg3M2M3MDdlNTJlYWZlMTVmODZlNWQ2MTAxNzI5MWUyODdkZSBsZWdhY3ktdHJ1bmsKKzM0NzM4IGIyZmQ3YWYxNzE4NjkwNmYzM2U0ZGI4MWY0ZGRiNDYyZmVjMDU2YmEgbGVnYWN5LXRydW5rCiszNDczOSBkMmVhYTUzY2VhYmVlMmEzY2NjYzdkZWQwMWM2OTM3YWRlMDU5M2U2IGxlZ2FjeS10cnVuaworMzQ3NDAgMjFhMTBjMzYwMGI1YzRkNDc5MjRiOThjYTgwZTU2YmRmMzc3ZTllYSBsZWdhY3ktdHJ1bmsKKzM0NzQxIDg0NWYxOWIxNDVhOGZhMGYyY2Q0ZjBmMzU5NGFmNmUxZTdjYzhiYTcgbGVnYWN5LXRydW5rCiszNDc0MiA4NWNhYmU3YjIxNmI3YmQwNTUzMWE3NDcyNDIyOGUyN2RhNmQ4MjFjIGxlZ2FjeS10cnVuaworMzQ3NDMgMGFjNDA5ZGZmMzkwOTE1OWE5NzI2NjIzOTUyMzZmZmY5NmZmNDliMyBsZWdhY3ktdHJ1bmsKKzM0NzQ0IDJiNmExMGUwNjcyNzM4YmVhMmQ2MzRmY2FmZDlmMGFiMmQyNWExYTcgbGVnYWN5LXRydW5rCiszNDc0NSAwMjRiNDc5OWE0MWQ1MjUxNzQ1NWNlODVmZWM4OTI0ZGQ0NjljYjAwIGxlZ2FjeS10cnVuaworMzQ3NDYgYmYwMzg5ODZjYjhmZGYxMjZmYWRmNTM1NmUwODFjN2ZiYzJmMTRhNyBsZWdhY3ktdHJ1bmsKKzM0NzQ3IGY5Njc1ODlkZjc1MTI1YTc4OTg2ZWY5Y2RkNTE0YWJkN2M3NDcwNTUgcmVsZWFzZTIzLW1haW50CiszNDc0OCBjZTA3MTE4ZWU1ZDI3N2RjZDM1ZmRlNjNiMzA5MjBjNDc5Y2E2MTk0IGxlZ2FjeS10cnVuaworMzQ3NDkgN2M1NWViZWM0OGY1NzdhNWRiYmE4MGM1ZDU2YmQ2MGViM2I1NDY3YSByZWxlYXNlMjMtbWFpbnQKKzM0NzUwIGRhMTU3OGNmYWUxODJlNTRiYjI2NmI5MGYyMDVmNTE0NmMzNzJjYmIgcmVsZWFzZTIzLW1haW50CiszNDc1MSA2ZDNlMGU2ZDdiZTYxNTk5ODQxMjVkODViNTZiMTZjZTMzNTJlYzAxIGxlZ2FjeS10cnVuaworMzQ3NTIgNGI2YzdlNWNiODg5YjMzZDgxMWVjNDAzZWU4NDM4ZDAxM2VlOWNkMyBsZWdhY3ktdHJ1bmsKKzM0NzUzIDJjM2E3NWM1NDgzMzQ5Yjg0Y2YzNDA4MzhhYjhjM2ViNjQzYTk4OTIgbGVnYWN5LXRydW5rCiszNDc1NCBmYWRjYTE3MTY0YzA2YzYyMjQzYjMyZThlMDM3YWU2YTg2ZWRiNzliIHJlbGVhc2UyMy1tYWludAorMzQ3NTUgNDRhYjI0MmM5YjhjZjVhZWY1YzgzZDgzNDhkNjk2MDM5NzU0M2VmMSBsZWdhY3ktdHJ1bmsKKzM0NzU2IDJkNjkwYTk1ZTRmZDFlMDFlYTQ4MWE5NmZkOGY2YTlmYjU3MWI1ODcgcmVsZWFzZTIzLW1haW50CiszNDc1NyBmNzFhMjE2Nzk0MzZhNTEwY2NjNDY1Mjk4ODU1YmJmZWQ4Yzk5NzE2IHJlbGVhc2UyMy1tYWludAorMzQ3NTggNmNmMDliZTA0OTFkZTg2YmU4MzM2N2YwM2VmNzU4N2ZmMDljNzgzYyBsZWdhY3ktdHJ1bmsKKzM0NzU5IDQwMDliMzk5MjYxNmEwZDYwYzM1OGEwMjVkNDg1YzgxMDMxMWM0MGUgcmVsZWFzZTIzLW1haW50CiszNDc2MCA2ZjAxNzAwYzE4MDg5OGRlYzNlZDEzN2Q2MDRmMWE3MGNmZGUyYjk1IGxlZ2FjeS10cnVuaworMzQ3NjEgOWM4NDZjM2RmNmYzZTAyNGUwZWFhYjRkZGE1YjlhMzg4YmJlZGY0YSBsZWdhY3ktdHJ1bmsKKzM0NzYyIDczZDUyMTMzMDVkMzc2ZDUwNDljODQ4ZDU4YjM3YzMxMGVmZTFmYjUgbGVnYWN5LXRydW5rCiszNDc2MyA2ZGMxOWU0ODM0N2EwYjc4ZjI2YjQ0NzZiMjZmOTI4YzZkN2JjZjA4IHJlbGVhc2UyMy1tYWludAorMzQ3NjQgZGQ1NzA3ZjcxNTI2YWNlOTRiYTg1NThiYTFhMGJhZjA5YmU4YjVlMiBsZWdhY3ktdHJ1bmsKKzM0NzY1IDBmZjY5MjU5YjAwNWY0NzNmNGY3OTU2YjIwZWQ0MDdjNTE1ZWUyYzEgcmVsZWFzZTIzLW1haW50CiszNDc2NiBmZDg3Y2UxODE5ZmEzNzhiMjI1ZGIxYTE3NmI0MGE5OGZkNGJlMGMyIGxlZ2FjeS10cnVuaworMzQ3NjcgZDUwZTI2ZjIwZjEwODRmOWZkZjFmNTI2YzE5YzFiMDk3MDkxNDE1NSByZWxlYXNlMjMtbWFpbnQKKzM0NzY4IGY1ZWFiNjI4MzI4NjY0ZmE4MzAzNGI3YTYwNTc3YTlkZmYyZmEwZjAgcmVsZWFzZTIzLW1haW50CiszNDc2OSAzNTQ4ZjIzNDgzMWUwOTlmMTkwNTExYjc4Mjg2OWY2MWRkMzkwNjM2IGxlZ2FjeS10cnVuaworMzQ3NzAgZDNhZTMyNGY2Yzg5NWZhMGJmYTkwYmJjMjA0NDgwZTcwOTI0ODNlMyBsZWdhY3ktdHJ1bmsKKzM0NzcxIDQ1NmUyNzRmODYwMjYyNjZjMDYxZmQ2OTQyZmZmNGJjMTg3MmUxODkgbGVnYWN5LXRydW5rCiszNDc3MiA1ZGVhNzNkYzk2OGI4NDI3ZGY5ZTBlN2IxOTJiNmMwNTgzYjRiNjE2IGxlZ2FjeS10cnVuaworMzQ3NzMgM2QxZjBkZjc1YTgwYzZjYjVmZDJiMGYzOGFlMzE0NTk3YTgzYzE5NSBsZWdhY3ktdHJ1bmsKKzM0Nzc0IDM4MzM4Yzk3MGY3ZDA3OTlkMzc5ZWU2MTExYTQ5MjgwMTNmNWIxYjIgcmVsZWFzZTIzLW1haW50CiszNDc3NSAyNTE3MTc1NjZlOTEyZjhiZmFmZTI1YjJhNjMwOTliZjk0M2RhYTJmIGxlZ2FjeS10cnVuaworMzQ3NzYgZjY5NTg5MTc5YzU1OWMwNThmMWVlNTk2ZTUwY2YxNzNiMWY5NDU3MSBsZWdhY3ktdHJ1bmsKKzM0Nzc3IGJmN2RmNDgwMTJjYjJhNjgxM2RlZDQxMzIxMmRhYjEwODFlODJlY2EgcmVsZWFzZTIzLW1haW50CiszNDc3OCA0ZTExMjUwNTY0Y2JkM2YwNjM1YTRjOTQwOTRmZTAxNGI0NzQzMWE2IGFzdC1icmFuY2gKKzM0Nzc5IGQ2YzdlNTU5NjI0N2ViMDg5YjQzMzFmOGZlZjA2Nzg1ZTJhMzE4ZTAgcmVsZWFzZTIzLW1haW50CiszNDc4MCA0YTM2MWJiYjUyNzhjYTU3ZTJiM2M4Yjc3YTFjODQzNmUwYTI3Nzk0IGFzdC1icmFuY2gKKzM0NzgxIGYwYTE5N2RkMjEyZDUzOTQ0MmJjN2E2MDA2YzA2Y2RjZTY4NzA4Y2UgYXN0LWJyYW5jaAorMzQ3ODIgZjE0MzNkM2M2NDQ3ZDc3YzY2OTYzYWU5ZjJlZmFiYjgxNWEzNzU1MiBhc3QtYnJhbmNoCiszNDc4MyBiMGJjY2I5ZmI3MGE4YjNhNWM2M2Y4ZGRmZDExYzUzN2UxMTdjMjMzIGFzdC1icmFuY2gKKzM0Nzg0IDY0ZGRkYTI1NTk1MjRhZDgxM2FjMTM2YjNhMjljNWViZGUwN2I0MDcgbGVnYWN5LXRydW5rCiszNDc4NSA0ZTMxYzI2MWE2Njg5NWM0ZDQwNjZiOTExMDZkMzZhMjhiZDc1ZmY2IGxlZ2FjeS10cnVuaworMzQ3ODYgMGFjOTg4NzhjYzMyYjVjODdjN2EyMjk5NWEwNzI3YjMzMTQ1ZGJiZSBsZWdhY3ktdHJ1bmsKKzM0Nzg3IGUwNWZlMTc3NTUyMDY0ZTMxOTg2MWQwNzg2MDZhNWM2YWM5ODEzN2QgbGVnYWN5LXRydW5rCiszNDc4OCBlYjUwOWZjNDdmMDc1MDg2OGFmOWNkNjExMDU0MmRkMThjYzUxMmQzIGxlZ2FjeS10cnVuaworMzQ3ODkgNDFmNGNlNmM0ZTUwNGUzMjQxZDJjMmRhNjI3MWVlZjllOWFmZTQ4OSBsZWdhY3ktdHJ1bmsKKzM0NzkwIGExMDJkYTkxNjQwZTM0NmE5ZjlkZmM4MmY1OWI3OTAwNDMyZDNjYTQgbGVnYWN5LXRydW5rCiszNDc5MSAwZWM0ZDNlYmQ0MzM3ZjFkOGU3OThmMGU5ZjczNDNhZjkyOTMzYTg1IGxlZ2FjeS10cnVuaworMzQ3OTIgOTMxNGJlMGJiYjY0MDE5YjhkOTdiYzU5NGU2ODEwNmJjZmMwNmNkOCByZWxlYXNlMjMtbWFpbnQKKzM0NzkzIDVhMDY1OGMwMDg3OWFhMzVmMzNjOGE0MTg4YjNkNGM1YTI5MzViM2EgcmVsZWFzZTIzLW1haW50CiszNDc5NCA3ODM2OTRkNGQ0Y2YwY2ZkZGJkMjQ1YmUzMGI4ZDU3YWE4N2I1YWM5IHJlbGVhc2UyMy1tYWludAorMzQ3OTUgZDQ1MTRjZTE0Yjk2N2Y3ZDk2Nzk4YTMxZjU4ZTI1Y2I2NjNhNmUxOSByZWxlYXNlMjMtbWFpbnQKKzM0Nzk2IGRhMTRkODA2ZTg5Yzc1MmY2YTcyOTRhM2U0YTY5YmIwNzRlYzQ2NzAgcmVsZWFzZTIzLW1haW50CiszNDc5NyBkZTI4NTViM2Y0MTM2YmYxY2EwYjc3YjAyODg1YjdkNTRjOGJhMWU5IGxlZ2FjeS10cnVuaworMzQ3OTggNDg2OTVjODM5ZDk4YjNhMjcyYzYwOTMxMDQ5NWVhMTFlNjJhODQ2YSByZWxlYXNlMjMtbWFpbnQKKzM0Nzk5IDViNTE1Y2M5MGI1YTQzZWZlNDJmNDYzMTJiNmJhZTEwZWYwMDkzYzQgbGVnYWN5LXRydW5rCiszNDgwMCBhNTJkNzQ5NDhkZDRmNGUzZmI4ZWYxMTJiYmY1NDJlY2QxZGYyNDliIHJlbGVhc2UyMy1tYWludAorMzQ4MDEgMmE2ZmM0ZDI2MWY4ZTY4ZGFiOTQ4YTdkNjY1ZmRhNTJkNGZhYzg4MSBsZWdhY3ktdHJ1bmsKKzM0ODAyIDJiYTlhODY5NjU2MDJkOGUwNTRlMGYyZDFjODQ0MmZhMmRjMzBiYjIgbGVnYWN5LXRydW5rCiszNDgwMyA2MjI5OTFjYzFlM2M1OGI1MWM1NTIxYTMyYTgxOWNkOWUxYmVhZDg5IGxlZ2FjeS10cnVuaworMzQ4MDQgMzYwNjJkNjQ1ZmJiOTU2MzVlYmViNTAxNTgyN2YyYWU2ZDdjZmQ3YiBsZWdhY3ktdHJ1bmsKKzM0ODA1IDZlYjQ3M2Q2ODA0MjRjNTQ0ODZmOWMxM2ZlMzc4MzRmNmYzNDlkMzkgcmVsZWFzZTIzLW1haW50CiszNDgwNiAxZjA5ODE5ZjUwOGIyNWQ0NTRjYjdmZWZhYTE4MzBiM2RhM2M3MzU3IGxlZ2FjeS10cnVuaworMzQ4MDcgZDAwZjAxMjA3ODM3YjY3MjI1ZjRlOWFiYjgyOTg4ZWE4NDI0Yzg4MiByZWxlYXNlMjMtbWFpbnQKKzM0ODA4IGUzMDI1ZmU3MGQ4YmQwNGY3MjJlNzM3OTJmODhjNGRkNmRlZjc4ZjcgbGVnYWN5LXRydW5rCiszNDgwOSBhMmY2YzZhNjdmMjQxNDA5OWNjNzAxOTNiYjYwMzhmNzViNjA3NmYyIGxlZ2FjeS10cnVuaworMzQ4MTAgYjI0ZDZhNzFiMDFmMTI2NTk4ZjA2ZWYwNDc4MjIxMGI5ZTY2MzNiNSBsZWdhY3ktdHJ1bmsKKzM0ODExIDhkZDE1OTI3OTU3NmE1NzQ3ZTNmMmNlN2Q1N2Q4MWI4ZWQ5OWVhYWEgbGVnYWN5LXRydW5rCiszNDgxMiA4NzA2MTViZmFlZGZiOWU0YjJlOWMzZmQ1OTQ2YmM5YmY4YzhjZTRmIGxlZ2FjeS10cnVuaworMzQ4MTMgMmY3OTZjNzU5NmVjYTIzZjE4YzE5NGQ4YTZjMTA3ZDkzZjZjYWRiYyBsZWdhY3ktdHJ1bmsKKzM0ODE0IDBhN2YxYTUzYzc3M2I0YWMxZjVjOGQ1MmIyMzc1YTFlNTQ0ODg4ZDMgbGVnYWN5LXRydW5rCiszNDgxNSAzODYxZWI0NjdjMjllMDdiYTZiMzY2OTc2MGRkZjcyY2IzM2I0NDhjIGxlZ2FjeS10cnVuaworMzQ4MTYgZGUzOTFlOWQ3MGVhMTY3ZjFlODFiYTU3YTBhYjNjNjg2NzczMWFkMCBsZWdhY3ktdHJ1bmsKKzM0ODE3IGYyZTc2NDZmNzc2MzE2MWJiZGRkZjI3NmQ3NDdmNTZmZjZmNGYzMTAgbGVnYWN5LXRydW5rCiszNDgxOCA5Y2E5ZDMxOGFmNzhiN2Q1ZjgzZjk1NjM3ZWExOWQ5YmIyZGQ2MjI3IGxlZ2FjeS10cnVuaworMzQ4MTkgMzAzODJhYjA2Y2QxYzJjMGI5MDQyNjNkMGY0MDQ0MGM3YTFmODY2OCByZWxlYXNlMjMtbWFpbnQKKzM0ODIwIGQzNWY4Nzk5Y2YxMjIyMDVkZjVmODQ2NmEzZWIzMjA2MmI3ODZjYjYgbGVnYWN5LXRydW5rCiszNDgyMSAwM2Y0M2Q2MTlmZjRiOGE1NTBhNmQxZWMzMzg2YWE1ZjdiOGI4Mjk3IGxlZ2FjeS10cnVuaworMzQ4MjIgYmRmNjBiZWE0MTc3YTc4MDQyYzBmMDkyMzE4MzhjNDRjMmRjN2E5MyByZWxlYXNlMjMtbWFpbnQKKzM0ODIzIDc1OTIxNGYxZWM2OTEwNzE0MWY5YTAwNDI0OTZmYzYyZGViNWM3NTggcmVsZWFzZTIzLW1haW50CiszNDgyNCAxMTNlYWZlODg0OGZmNTg3MTQxYzM3YTJiNWFkZjEwN2M0MmUxZWZmIHJlbGVhc2UyMy1tYWludAorMzQ4MjUgNjFiNzBlYjhkMTYwYjMxOTUxODA0ZjNiNWM2NDY1YzY5NGU5ODA1OCByZWxlYXNlMjMtbWFpbnQKKzM0ODI2IDg2Y2YyYjgxMGYzYTJiZTc3YjQwODhlMWE5NjczYTFmMDZkMWY2YzYgbGVnYWN5LXRydW5rCiszNDgyNyBjMjNhODYyMTVkOWY3ZTE3NTBmOWI1YWU0ZGVkNGU4NjAwN2JlZTIyIHJlbGVhc2UyMy1tYWludAorMzQ4MjggMjAxNGY5YzYzNmZiZTc1NmE5NDRhZTM3ZDgwNGI0MWEwNmE2NDc4YSByZWxlYXNlMjMtbWFpbnQKKzM0ODI5IDBhNjNkNGQwMTVjZjk1MGYxODhmYmNkZjkxYmE1NTQ1N2Q0NjhhY2MgcmVsZWFzZTIzLW1haW50CiszNDgzMCA5MTVhYTBlNjk0ODU5ODllNzdlOTQ2MDg5NGIwYzczN2NkYWQ2ZmU3IHJlbGVhc2UyMy1tYWludAorMzQ4MzEgYTA5NmQ3YjhlYzhhMjllMTIwMzZhNThlNTcyYjY2Yzc3OTRkNGExZCByZWxlYXNlMjMtbWFpbnQKKzM0ODMyIDk3MmU3ZmExZDU5ODZhNWIxNzcxNjZkM2ExNWE4OTFkZTZlOWRhYTkgcmVsZWFzZTIzLW1haW50CiszNDgzMyA0NWNiMjg0Yjg0ZDNhYjI2NWFhNmYyNDQ3YTllN2ZhYzZkNTRiYTIwIHJlbGVhc2UyMy1tYWludAorMzQ4MzQgZDc2MzBjZTdhYTlmZDViMTIzNWE2NTJmMzk5Y2E3ZjkzZjBhNWFkMCBsZWdhY3ktdHJ1bmsKKzM0ODM1IDlkNjI2Njg4Y2E3YmNlYjA2MmJhZjFjNGNhZTFiOWExNGY2NTE2NWUgcmVsZWFzZTIzLW1haW50CiszNDgzNiA3NDAzZTM4YTJmMTA3YzlhOWE4MjRlZTY3N2MwYWE3OTM0NTNjNWNhIHJlbGVhc2UyMy1tYWludAorMzQ4MzYgZDIxZDRiYTJmOTczNDY3ZDMwNzk0YTNkMmFjNDkzNjU4MTgwZTUwMyByZWxlYXNlMjMtbWFpbnQKKzM0ODM4IDU2NjM1MTljZjA2ZmY0M2ZkMjQyZTRjNWY1YjM5NzU0YjY0ZmE3OTIgcmVsZWFzZTIzLW1haW50CiszNDgzOSBlOTZlMzljZDJkMTQyYjFmYzNiNTg5ODE4ODU1YzA5NGRkOGYyNTliIGxlZ2FjeS10cnVuaworMzQ4NDAgYmE4ODZhZTMyMmVjMTY5ZmRmZDNmMWRiZDQ0YzA5YmJlOWQyM2FmMyByZWxlYXNlMjMtbWFpbnQKKzM0ODQxIDYwZTVkOGI3ZTk2NGU2Y2E5MTRiY2ZlNGI4ZWJlMDYwMjdkNzY0ODEgbGVnYWN5LXRydW5rCiszNDg0MiA4MzViNzllYWM4MTJjZTkwOGYzYjYwZmRmYTM0OGI2MTgzODliYmRkIHJlbGVhc2UyMy1tYWludAorMzQ4NDMgOGU4MGY1NTFiMGU5NjgxYzQ1YmNmODVjOGJiOGQ4ODMxYThlMGJhOSByZWxlYXNlMjMtbWFpbnQKKzM0ODQ0IDM4YmVjY2Y0YTBiYmY3NzcwZjBlZDViOGI5ZTQ1OWJjODE3YTNlZWEgcmVsZWFzZTIzLW1haW50CiszNDg0NSBiNzdmZDQ2OWVlMzU0MWZhOGY3YmY5ZDgwYTBjYWI1YjFhMTVjZGM1IHJlbGVhc2UyMy1tYWludAorMzQ4NDYgNjlkZTVhZWUxZmJiNTEwZDFkNTZlNGVhMWZhMGFkMTk1ZjlkM2NiMyBsZWdhY3ktdHJ1bmsKKzM0ODQ3IDdjOGRjNjQwNDIzYTUxNDhlMTdiMzQxMzdhNzY1YzQxMzZkNjhkMzUgcmVsZWFzZTIzLW1haW50CiszNDg0OCA1MzUyYTZlYmFkOWFjNDAwOWMzMGJjOWZlODQ3MWNjMjIxYWFhYjI2IGxlZ2FjeS10cnVuaworMzQ4NDkgMTdlNmU5ODI5YzdlNTBiZjE2MjcyOTllNzgwMzg3MjE0ZDVhMDA0NCByZWxlYXNlMjMtbWFpbnQKKzM0ODUwIGYxMDhkYjU5ZWI3NmEyNmI3YTE1YTk0Mjc2YzEwN2U0MDhlMjliODcgcmVsZWFzZTIzLW1haW50CiszNDg1MSBiMDI4ZmQ1NDE5NDE5OGE5ZTMxMjM0NTNkZmI1ZDIxN2NkYThkYjA2IHJlbGVhc2UyMy1tYWludAorMzQ4NTIgOTM5NWNkOTJkMmNkN2U1YjY5OTZmYzNiYWI2OTQ2ZDQ1Zjc2YjQ1ZCBsZWdhY3ktdHJ1bmsKKzM0ODUzIGJlOWVmOWI5MmQ2MTM4YzBiNzBmYzdkMDE5NDMyZTZjMzljOWQ5ZTkgbGVnYWN5LXRydW5rCiszNDg1NCAyMWFlYjk4MzJjMWQzMjgwNDJjNGZmNmNkMmRhMTE3YzkzZTllNjg4IGxlZ2FjeS10cnVuaworMzQ4NTUgNDE1ZWY1NTIxYThhZmQ4NTI5OGYwMzViYmY2YjE2YzJlMDE1Nzg0MiBsZWdhY3ktdHJ1bmsKKzM0ODU2IGM5NTNmZGI1MWNkZDdlZjg4MTNhYjIwYjk1OGQ1ZWQwYzcwZjA2OTAgbGVnYWN5LXRydW5rCiszNDg1NyBjNmYxNjUwNGM4YzJmNWFkZTk2Mzc5MDk3ZTFhOWM2NTdlODg5NDMwIGxlZ2FjeS10cnVuaworMzQ4NTggNzViNjNlNWYwM2YyMTIxNjI1MWI0MWRkOGM0NzNlNDljMWQ1OGY4ZCBsZWdhY3ktdHJ1bmsKKzM0ODU5IDg5ZDI2ZTAzYzY1MzAyYjAxNWVhMzUxODRiZmIyMzlkOTQ2MWFlNTAgbGVnYWN5LXRydW5rCiszNDg2MCBmZGU3NGZhZGY3ODBjOWE4MTM5YmNjMWZlZWYzYzY4M2MyYjFiZGQ4IGxlZ2FjeS10cnVuaworMzQ4NjEgN2FhZDI0Y2FkZGI1ZDBhOGY5NTk2ZGQyZDkyMzc1Y2FmMjIxNzc0MCBsZWdhY3ktdHJ1bmsKKzM0ODYyIDUwODhhODIzNDExN2VjZGUyYzY0NDMxMmYzYmM3NzI4ZWQxNzYwMmEgbGVnYWN5LXRydW5rCiszNDg2MyBlYjEyN2U0MDFjNjQ0OWQzNzAxMzAxZGRmZTExYTIxNjVhZjc5YjRkIGxlZ2FjeS10cnVuaworMzQ4NjQgOTdlYmQxYjJmNDY4NTU3ZDAzYjNhZGEyNjg0MWU5NDk3ZWQ2NTc3MiBsZWdhY3ktdHJ1bmsKKzM0ODY1IGU5ZjNiODIyY2UwMmVjOTg2Y2RmNTI5NDIyMDQ0Y2ZhNWE1NDI5YzEgcmVsZWFzZTIzLW1haW50CiszNDg2NiA5ZTc1MDc1MzAxMGFkODJjYmJiNmQzMmQwMWViZDdmYTkyMDAxOTM3IHJlbGVhc2UyMy1tYWludAorMzQ4NjcgMDUyZTRjNTcyMjYxNWUxZjQ5OTNmNGI1NDNlN2RkMjUwNmZkNGNhNCByZWxlYXNlMjMtbWFpbnQKKzM0ODY4IDAxNzA0ODU2NTkzNmI4MzJhYjVjNDkxNmJmN2YyY2MxYzQyYzY5OGEgcmVsZWFzZTIzLW1haW50CiszNDg2OSBkMzYyMjczZDQ2OGJkMTNlODEzNWI3Zjk3ZDFmNzkwNmJhOTZkYWYwIGxlZ2FjeS10cnVuaworMzQ4NzAgOWVkNzUyNTU5NDc3N2VlNGZkNTQwM2RmYzQ3YjkyOTY3NzdmOGIyMCBsZWdhY3ktdHJ1bmsKKzM0ODcxIDM4MWFlMzI2ZWU2NTU1ZTc0ZGY3NDQ3ZmIwYjk3Mjk4OTI1ZGIyMmMgcmVsZWFzZTIzLW1haW50CiszNDg3MiBkY2Y1YmUwZjBhMWY5YWEwNTgzNDk1NWZkMTg1YTAyOTY2OWJjNmY2IHJlbGVhc2UyMy1tYWludAorMzQ4NzMgODUxOGM0NjgxNzcxZjcwNDA0MmZiODgzOWQ2NTBhNjI2NjYyNjIxNiBsZWdhY3ktdHJ1bmsKKzM0ODc0IDk0YzFiZDdhNTVhZWY1NDQ4ZmM2OTVmMjhjNTNmMWU1NjgwZDczODQgcmVsZWFzZTIzLW1haW50CiszNDg3NSA2MGJjMTFlMzAwNjgyYmE0YWQwOTFlNGQ0YTQ5MDRjMmIzZTg5MTI0IGxlZ2FjeS10cnVuaworMzQ4NzYgNjE0YWQ1Mzg4YzlkZTAwMDM4YTU0MTczOWExZGRhNTk2MDRmYWYyMCBsZWdhY3ktdHJ1bmsKKzM0ODc3IGQxZDI4Y2NhNDJjMTk3ZjFlYjc3YzkwNTVhZDJhN2MyMzdjMWI3MTIgcmVsZWFzZTIzLW1haW50CiszNDg3OCAxZGRjODZiNTgwNDAwNjJiYzVjZDlmN2NhZGUwYmFhZTFiNGNhOGIyIGxlZ2FjeS10cnVuaworMzQ4NzkgMjZlZmE4YTUzOTI1OTQzYjNmYmJmYmI0MzQwYjljNzkwYmI4YTcwOCBsZWdhY3ktdHJ1bmsKKzM0ODgwIDk0ZGZmNGEwMmNhMzA2NzdiNmNkMDM4ZGY1MzNlYjVkOGYyMWY4ZGYgbGVnYWN5LXRydW5rCiszNDg4MSA5ZjhjMDU1ODcyMTNlMWQ4ODUxNWMwZjVhM2Y1MzAxNWFjMDU1ODIyIHJlbGVhc2UyMy1tYWludAorMzQ4ODIgNGViNWYwY2FiMDllNGFkMWU2NWM5ZDE3MWQ0M2I3NTAzMGFkZjg3OSBsZWdhY3ktdHJ1bmsKKzM0ODgzIGUxZjFmYjc0NDUxYjljMGQwMTY2NjExZWU2ODY1ZDkxNGZmMzQzNDMgbGVnYWN5LXRydW5rCiszNDg4NCAyYTA3ODJjYzE1MWY4NDA0MTdjZjE1OTJiODc2OWI3ZjZlZmU0ODVhIGxlZ2FjeS10cnVuaworMzQ4ODUgNGExMmQ5MWFmOGMzZjk1ZjE0ODc4OTZhYTMwN2IxMTQ0ZjNiMTIxMyBsZWdhY3ktdHJ1bmsKKzM0ODg2IGM3MjdhZDAwM2ZkYmFjZDJiZThmNGRjNDBhMzk2OTYxZGRiNzg3MTggbGVnYWN5LXRydW5rCiszNDg4NyAwMzY3Mzc3MzMwODQ0N2RjOTM2ZGU2OTllNWU4YmJhMjM1OGQ5ZWVlIGxlZ2FjeS10cnVuaworMzQ4ODggYWFiMzYxMmYyYzM1MmIwYTFhNDkwODFlMGIyNmJhMGM5MDNlNjBlOCBsZWdhY3ktdHJ1bmsKKzM0ODg5IDg4NWRiZjE1NzhiY2IwNmJjNWFlMTIzYWQyNmZlMDI2ZTYzMWQ5ZDggbGVnYWN5LXRydW5rCiszNDg5MCAwNjNiN2QyMjVlOGFiODQ3NmI2ZDI3ZjM3ODNhNGJiNTBkNWQzZTk4IGxlZ2FjeS10cnVuaworMzQ4OTEgNDVjYWJlOWNkOWM5MjYxZjI3N2ZiNzg4ZjE4NjBmYzc3NWVlZmIxNyBsZWdhY3ktdHJ1bmsKKzM0ODkyIDQ4NzAyZjE5Y2NmYjNlYjBiZjU0YjdkNmQ5YWUzZGIzMzI5MTNkYTUgbGVnYWN5LXRydW5rCiszNDg5MyA0Y2MxNjYxNWIwNzI0NWZhNDcxNWU4MDY3M2M0N2U3ODk5YjIxNTM5IHJlbGVhc2UyMy1tYWludAorMzQ4OTQgYzIyZWVjODA3MjI0NzQyZDNiMTM4Mzc4Y2NjYzM4YWViYzg0NTBiNCBsZWdhY3ktdHJ1bmsKKzM0ODk1IGNhOGE2OTk2OWYwMzhmNTA2MTYyMDViOWFlNTM4MzIzNTU1OWNkNTQgbGVnYWN5LXRydW5rCiszNDg5NiBlNGZiNjE2NDE1OGM3ODRkOTNkYzc4ZTMyNDUyNjJhNzYyZWJkNTJmIGxlZ2FjeS10cnVuaworMzQ4OTcgYzliYmM5NjdhYzlmNjA5ZjkxZDY4NzU3NmY3YjZhZTMxZWI0NWRlYyBsZWdhY3ktdHJ1bmsKKzM0ODk4IDg4ZTgwYTA0MzI4YTM4NDdjZTBmYTk1ZDViOThjNmU2MjMzMTIyNzYgbGVnYWN5LXRydW5rCiszNDg5OSA1Y2MxYTQwMGEwMmMzMTFhNGYxYzU5ODk3OGNkZjVmM2VhZjM3YzM0IGxlZ2FjeS10cnVuaworMzQ5MDAgMzgxMTQwZTdlOWQ3NzE1Y2ZlNzFmZjdiNDlmNTE3Y2ZiZDdlNDIzNSBsZWdhY3ktdHJ1bmsKKzM0OTAxIGVlYWEzNjYwNjcxY2I2YWQ2OTZjMDNiYmMzOGIyOGMzOTUxZThhNWUgbGVnYWN5LXRydW5rCiszNDkwMiAxYmJjMjA4NWYyMTNiMGJhNjQxMjg1YjlmMWE2YTU1ZDE2ZmEzMGRmIGxlZ2FjeS10cnVuaworMzQ5MDMgMjFhMjdjMjFhMmM1N2FlM2I2NzBmMWY3OTE1NGQ5Njg2YzlkNTA0OSBsZWdhY3ktdHJ1bmsKKzM0OTA0IDQ5NDJhMGI2M2M4Y2NmMWZjNWQxMWU3Y2JjOTdiNmMxN2MwY2U2MjAgbGVnYWN5LXRydW5rCiszNDkwNSBlNWQ5N2FiNzEwYTIyNWQzZTRjZjE2YjhjZmY5ZTNjZGU3MGM5NjVmIGxlZ2FjeS10cnVuaworMzQ5MDYgYzk5NjIwY2Q5YzY1NTI5NTlkZmNkODY0OTU5ZjBjNDg0NTM5NTc1ZiBsZWdhY3ktdHJ1bmsKKzM0OTA3IDEwYzRjYzM1MmQxM2E1YmU0ODI2MDhmM2UxNTlmYmU3Y2QyMmQxMjcgbGVnYWN5LXRydW5rCiszNDkwOCA0N2VhYTM4YjI5Y2JmNjU1NzllMGJjOWU3OTY1MTM5YjUwZWY4YTY4IGxlZ2FjeS10cnVuaworMzQ5MDkgNzRjMTU0NzA4YjBjYTE5Y2FkZjc2NWMwNTExODgzYjY1YmM5YzYwMyBsZWdhY3ktdHJ1bmsKKzM0OTEwIGYyODk4MjA2MGIyMGMwODYzYTA1NDlmZTRmMTVhMmU4Nzk5ODUzYjggbGVnYWN5LXRydW5rCiszNDkxMSBmMmUwZDYzMGNmMzlmZTc0YmI3NWUyZmUyZTRlY2Q2YTEzNmY1MzUwIGxlZ2FjeS10cnVuaworMzQ5MTIgYjJhMGNkMmU5ZDU1MTEyOGQzZGI4YWZiM2Q1NWNhMWMwNmViMmQ4OCBsZWdhY3ktdHJ1bmsKKzM0OTEzIGM4NWE5ZWM1Nzk2Y2QwOWM5NmFiNjFmNTNjYWE1MjE4NjBkYjRkYTMgbGVnYWN5LXRydW5rCiszNDkxNCAyOTJhZDEzNWNlZjE0NjIwYWI0YjhmNTA4Y2MwY2EyNjI2Zjc5Yjc3IGxlZ2FjeS10cnVuaworMzQ5MTUgZTQ2ODJhZjdhZWE5ZWM1MmQzMjI5ODZlMmZmOWY4MzRiZjBhMzY5ZCBsZWdhY3ktdHJ1bmsKKzM0OTE2IDIyZjA5YWIwYmFlOTQ2YmJhZWJiZTkzODkyYzM0ZjYxNmYzYTczYTUgbGVnYWN5LXRydW5rCiszNDkxNyAxYWQwZGY4N2VkNmMyZTUwMDg4MjU0MDUwMzU5Y2FmMjA3Y2QzNDcwIHJlbGVhc2UyMy1tYWludAorMzQ5MTggN2E2ZDA4MTRiNTYxZWQxYWRmZWZlMTk4N2M5Y2QwNGM2N2JmODI4NiByZWxlYXNlMjMtbWFpbnQKKzM0OTE5IDIyOWJiOWYyZTk2ZjNmZTE1YTExYTUxZTNiZTQ1NWFhNTQ3Y2E3MWEgcmVsZWFzZTIzLW1haW50CiszNDkyMCBkNmNlYTIyOGZiMjU5YmE5MjM1MjBiYmYzNDI5M2I2OWRiYmVmZGUxIHJlbGVhc2UyMy1tYWludAorMzQ5MjEgNjg0NTY5NzM1M2EzMTUyNWE4YTAyNTE4MGVlODE2NGYyNTNhYTYxMCByZWxlYXNlMjMtbWFpbnQKKzM0OTIyIGQ5ODExNzU5ZTdkZWJkZTAxYTJhMTg0ZmMxOGI5NmZmNWQ2MWUwNzEgbGVnYWN5LXRydW5rCiszNDkyMyA1MDQ5NDNjODkxOTNkYTBkYzEzZmMwN2Y2NjBkYmRmOTgxZjQ1MjlmIGxlZ2FjeS10cnVuaworMzQ5MjQgNjNjYzlmY2QyODVlNGIzZmE1NDEwOWNmM2I0YTk2YzBjNzI5NTViYSBsZWdhY3ktdHJ1bmsKKzM0OTI1IGU1MDY1OGIzZGYwZTcxMmI0Zjk2Nzk3MTMzOGI4N2Q3ZGM3N2U4MjcgbGVnYWN5LXRydW5rCiszNDkyNiAwMmViZTM0NTY1OTUzMTgxM2NiZDY5NjhkZDJmOGVlMDZlNTkwZTJlIGxlZ2FjeS10cnVuaworMzQ5MjcgYmZhMDM2OWQ2NzYwYjIyOGI0MzlhYTI4MTVjYTVhMzBiYzA1MjlkOCBsZWdhY3ktdHJ1bmsKKzM0OTI4IGRkNzg5MDcyZDk0OTAzMGU1NmQ1MzI3YzU1NmVlZDBjOGJlYmIwZjUgcmVsZWFzZTIzLW1haW50CiszNDkyOSBjYmJmZDQxMjdlMjQ3NTRlNmM1N2ZjMmNmNzY2NWVkYTEwZjZhZDEyIGxlZ2FjeS10cnVuaworMzQ5MzAgMzc3MWZmOTlkNWYyOGFkMDEyYTIyMDJlNzM4N2U5MmQzNGZhZDZkYSBsZWdhY3ktdHJ1bmsKKzM0OTMxIGYzODhlODNmOGU0MzM4ZTE3NWYyNzUzZWM4ZWU1YzkxMDNmZDdkOTIgbGVnYWN5LXRydW5rCiszNDkzMiA5NDkzZGQyMjJmYmI5YjA4NmIwM2U5ODliYmI1YWE2MDU0NzNiMTNmIGxlZ2FjeS10cnVuaworMzQ5MzMgNWU5Nzc1N2Q4N2U3MzAzN2YwNzYyYzNkMWE4Mzg2YjBhOWY2ZWJjMCBsZWdhY3ktdHJ1bmsKKzM0OTM0IGMwNmI1NzBhZGYxMjJiYmU4YzIxMDg1ZTE2MTk5N2NjMzYyNGQxNzMgbGVnYWN5LXRydW5rCiszNDkzNSA0ZDA3NTZhMTNmNmI5ZTRjOGVkYjcxYjYyN2RlYTRhMzk3YTQxZGU1IGxlZ2FjeS10cnVuaworMzQ5MzYgNWIwMzVlNmU0NGRjNjhhZWFjZGQ2ZTFkMDY5ODUyMjg3MWE3MGI3ZSBsZWdhY3ktdHJ1bmsKKzM0OTM3IDM2MDdmMjMzNTJiOTg1OThiNjU4MGJlMGQ2ZDI5NDdiZWU0MTg5YjggbGVnYWN5LXRydW5rCiszNDkzOCBkZWYyNzUyNzcyODA2MWE0MTlkMGU4OThhN2M3OWE4OGM3NDM0ODU0IHJlbGVhc2UyMy1tYWludAorMzQ5MzkgODk3NjdjMThjNjE2MDhiNmViOWRmNGZiYzAyM2Y5MWI5YjA3ZTVlNCByZWxlYXNlMjMtbWFpbnQKKzM0OTQwIDg4ZTAwMDIxYWNmZjZlYjhiY2ZlYmEwODFhYjM2MDYzYmM5MzVhMjAgbGVnYWN5LXRydW5rCiszNDk0MSA5NzA2MmQzNjU4ZmU3YzcwNzkyYmMyNGFmZmJmODdjNjY0NTYxMjg5IGxlZ2FjeS10cnVuaworMzQ5NDIgMGY3MDljZWE0M2M3MTZmMTg5OGU2NWI5MzI5NzYxYmIxYjQ4OTNmMyByZWxlYXNlMjMtbWFpbnQKKzM0OTQzIGVhM2M2ZjZlNDY3OTFjNmZiMmU3OTZkNzJjMGZiMGIxNmUwNmY4NjcgcmVsZWFzZTIzLW1haW50CiszNDk0NCBlZGU1MThiMGI5ZGE3OWY4NTQyZThlZWFhYWZjM2U4MmQxNGZkNGU1IHJlbGVhc2UyMy1tYWludAorMzQ5NDUgYzI5NjdjZTdjMDFlNDUyNjg0NjJhMDVlNzllZjMwNDBmMmU4ZTRjZCByZWxlYXNlMjMtbWFpbnQKKzM0OTQ2IDk1NWNiOTY5Nzc2N2ZlMjk5NTE3ZTVmMTc4NGY1NWY0ZTMzNTQ1NTggbGVnYWN5LXRydW5rCiszNDk0NyAxYTk4OGEwNmJkMzM2Yjc2NTY2ZTA2ZDk0MWY0ODMwZDRjZDVmZmNlIHJlbGVhc2UyMy1tYWludAorMzQ5NDggYjgwYTNiODJkY2Y5ZTJlNDI3ZDVmZDg0MzAzOWRkZDFmZTg2OTY1NiByZWxlYXNlMjMtbWFpbnQKKzM0OTQ5IDM5NTA4MmRjMjE5NDI5ODkxZGQ3MTY0NThmYWQxOGNjODUxZjJjYzEgbGVnYWN5LXRydW5rCiszNDk1MCA2NDE2NmVhZjYyMTI0YjAxMGNjZmU5MjRmYmZjOWU1MDZiY2NhMjMyIHJlbGVhc2UyMy1tYWludAorMzQ5NTEgYTU5MjJiOWQwMzc5YTA3Njg1MDQzYzIxMzkzZjA4ZWUwNGY0YmJiMyBsZWdhY3ktdHJ1bmsKKzM0OTUyIDM4ODU1ZmRhNDI4YTY4ZDYxMjk3NDIyMmJhNDU3YTZkNzFhMjhkOTQgbGVnYWN5LXRydW5rCiszNDk1MyAyYjBjNzg1YWIzMGE2ZTIyN2Q5ZDA1NjBhZjQ5YWQ2YjIzNTlkOTIxIHJlbGVhc2UyMy1tYWludAorMzQ5NTQgNjdiOWRlNjJlY2I4NjkyNzcwMWMxZmMzMzMwNzA5OTc5ZGQ5YTUxZiByZWxlYXNlMjMtbWFpbnQKKzM0OTU1IDlhM2ExNmI4MmRjYmJlNGEwYmE4MjYyYTVlNmVhMGFkM2ZiNWMxMzEgcmVsZWFzZTIzLW1haW50CiszNDk1NiBmYjc1OWUyODFhMmYyMzAwODUyNDFkNGFlYjM2NDdiMzM4Zjg4ZGRhIHJlbGVhc2UyMy1tYWludAorMzQ5NTcgZDA5OWVkOTMyOTkzZjkzZDkxODVhMTY1MmE2MDRhZThlOWQ2OTE1YiByZWxlYXNlMjMtbWFpbnQKKzM0OTU4IDVkYzU3NTdiMTE4YWJmM2NjZjY3YTU3OWJiZWY3YmYwZWVhNWIxYjIgcmVsZWFzZTIzLW1haW50CiszNDk1OSBiMjIwYjU5MGUyZWE4ZWE3NDBjYzdiZjlmMzFjYmE3ZDUyYWIwNWUxIGxlZ2FjeS10cnVuaworMzQ5NjAgYWNiYzc1NjNhOGU3ZWRmNzM1YzZmNDY4MzA4ZjQ3MWM0ZDYwMjY3OCBsZWdhY3ktdHJ1bmsKKzM0OTYxIGE2ZjM0ZmJhOTM3MDY5ODdjN2FhOTBiZTc3YWMwNGEwNDRkNTkxZTMgbGVnYWN5LXRydW5rCiszNDk2MiA0ZWRmMjAwYTgxMTg1YTQ3ZmI3NDYxZjQzZWM5YmM0MzY3YWU3NmJiIGxlZ2FjeS10cnVuaworMzQ5NjMgZjBhZTMxM2EyYWM4NjQ3MmQ0NGIwODY0YjhkMWE1OGE3YTUzYjBmZSByZWxlYXNlMjMtbWFpbnQKKzM0OTY0IDNjNGMwODc0OTRlMGNiODg0MTkwNDI4MjA2OWE4YjJmZTY0ZTE2MzQgcmVsZWFzZTIzLW1haW50CiszNDk2NCBhOGYxMjg2ZjIxNzEyOWNkYjUzZTMyMGVlMTI1ZDJjMmM4MGUxMzc3IHJlbGVhc2UyMy1tYWludAorMzQ5NjYgMjhlYjAwNDZjZThhNzYzYThkM2FkZGVmYjNkYWYzYjRhZmMxNzRmYyBsZWdhY3ktdHJ1bmsKKzM0OTY3IGRmOGU4NzljOGQ3NmQ1MGNlZGRmMTJjYmMxZGU3NzY4YjI5Y2Y0YmQgcmVsZWFzZTIzLW1haW50CiszNDk2OCA5YzZhNTFkODc5MzAyOTQ0NjZmZWE4NjZlYzIzOWNjYjNmMGJkNjg5IHJlbGVhc2UyMy1tYWludAorMzQ5NjkgMWNiODdkYWQyNjNkNzdkZDQwYzJjZTRlOTg2NGNkZDkxOTVkOWNkYyBsZWdhY3ktdHJ1bmsKKzM0OTcwIDhlYTNhODJmOTEzZjZjYTNjMDkyNzViNGI1Zjk0MzU4YTUxMDUzZmEgbGVnYWN5LXRydW5rCiszNDk3MSBjZTE2NWJlOGM2Yjg5ODZiZDFmMTI1ZTFmNGQyOGRiN2VjMWUyZTY5IGxlZ2FjeS10cnVuaworMzQ5NzIgMzUzYTE2MDMzZjZhNGVkNjk1ODkwZTUxOTZlOTVjMjcxYjkxZDI3NyBsZWdhY3ktdHJ1bmsKKzM0OTczIDM1MzkzYTkyYWNkMWQzNzExMzQyMzIxNTUxYWQ3ODQyZWVmYjM2ZDUgbGVnYWN5LXRydW5rCiszNDk3NCBkZmQwMTE0Y2Y5ZWNlN2M2MjBkNDEyZjc2NjM1ZGFkMjczYmZjYjUzIGxlZ2FjeS10cnVuaworMzQ5NzUgZTExOGU0ZThlMjI0OGU0ZDY1YjNkNzNiZTU4YTkxZTU3NDJhNjZlOCBsZWdhY3ktdHJ1bmsKKzM0OTc2IDg5MjExNmE4ODZlMDA1MWE4ZDMyYWZjM2EyMzMyZDZhMDNhNGI5MmMgbGVnYWN5LXRydW5rCiszNDk3NyBjMTQwMjE3NmUxYTY1NWIyMzVmMDVjOWQwMzMxNWZhMDk0MTkzOTU2IGxlZ2FjeS10cnVuaworMzQ5NzggZjYwNjRmOGMxNDYwNGUzY2JmNzgzM2U5MTE1NmM5MzBhMzg1MDFhYyBsZWdhY3ktdHJ1bmsKKzM0OTc5IGE4MDc3MjZkZjRiN2Y5NTRkZGVkYjFmM2FmNjY2ZmI1YTVmNDFjZTQgbGVnYWN5LXRydW5rCiszNDk4MCA1NTJhNTM1NWQ4YThmNjM1ZDE3YTI4NjU3ZWI3MzczZWYxZTZmNTQ3IHJlbGVhc2UyMy1tYWludAorMzQ5ODEgNzA2Yzk2ZTE1MWEwODlmMjQ4ZjBmMjdjZmU2ZGVlYWM5MDMyNDc1OSBsZWdhY3ktdHJ1bmsKKzM0OTgyIDJhOGY1ZWI4ZDgzZTEzMDJkNTRjNWFiZjM2NmEzZmUwMmIxZDBmZjUgbGVnYWN5LXRydW5rCiszNDk4MyBiZTg4MmE5YTNkNWI1MjIwZGRjZTAyM2FiMDExMzA0NzBmZWE1NzVjIGxlZ2FjeS10cnVuaworMzQ5ODQgOTFiNTlmMmZlZTdjMWYxMTZlYTM2NGVjNmQxMmRlNzIyNjM1ZDJlNiBsZWdhY3ktdHJ1bmsKKzM0OTg1IDQ3MTI5MTUyY2I3MDEwYTdjYjY2NzU0NzBlNDkxMTA1MWUxMjc3ZDMgbGVnYWN5LXRydW5rCiszNDk4NiBlZTUzMjgwNTQ2Y2U3ZDMzNDlmOTMxNjg0YmUzMWRjYTQ1OTRkNzM3IGxlZ2FjeS10cnVuaworMzQ5ODcgMWUxNmNiOGIwMjIxOWU2MzY5YWQ4YWNjZmI1MzRjNDc0MjFmYzM1NSByZWxlYXNlMjItbWFpbnQKKzM0OTg4IGNjN2YyOWFjMmU5ODE2NDFmYTY4NzlhMDgxNzRlZjdmOWMwOTQ1MjcgbGVnYWN5LXRydW5rCiszNDk4OSA5MDU2MGE5Y2YzZThiOWExZjcwZjUyM2VjNTM2YWQyODk0NTk5ZDZhIGxlZ2FjeS10cnVuaworMzQ5OTAgMGJlOTI1ZDE2ZTI5M2ZkZmYxZDNiZGIyNjc5ZjY0N2QxNTZhNjliNCBsZWdhY3ktdHJ1bmsKKzM0OTkxIDUzYWUxYzNkNGE3YzE4NTY1YTk4NDQ0NDJkZDI3ZmNlYTQ5OTAwMDMgbGVnYWN5LXRydW5rCiszNDk5MiAwZmZiNjI2ZDc4ODgxZmU0MjQxOTc2OTI1MGZlZWNhOWE5OTQ3YmE0IGxlZ2FjeS10cnVuaworMzQ5OTMgYThlM2JiMjNmNWE4YjdjNjIwYzViN2VhMmIxZmMyYzMyNjE5MTdkZiBsZWdhY3ktdHJ1bmsKKzM0OTk0IGUyNmZkYTlkZTY3ZjI4OTQ0ODQxZjIwNjBmYmQ2MmNiY2RiYjI2YjUgbGVnYWN5LXRydW5rCiszNDk5NSA3YWIwODBiYmQ2MGE2ODVjMzE3ZmY3Zjc5NDFhNTRhNmExYWRkMWRlIGFzdC1icmFuY2gKKzM0OTk2IDU1ZDQyYWFlYjBlZWY4NjYzNTk2OTUwMzU3NWM5ZGNjYmU5YTlhNzAgYXN0LWJyYW5jaAorMzQ5OTcgN2NjMTExMjcyNzNlN2U5NGM3NGJhNzk4YzYxNDg5NWUyNmRkNDVjYSBhc3QtYnJhbmNoCiszNDk5OCBlYTZiMTlhMTBhMDE2NDAyNzg3ZGIwMWEwNGM4MzVmNTUxN2M2ZTgwIGxlZ2FjeS10cnVuaworMzQ5OTkgMjljMWI3YjZmZDdlNTc5MjU3OGViZjkyMjVhYjM4NTgxNzM5ZTQ3YSByZWxlYXNlMjMtbWFpbnQKKzM1MDAwIDI1NTE5ZDZjOTdiODZlNzM2OGY1ODAyZjg1OTU3NDUwMTJhZTYzMWYgbGVnYWN5LXRydW5rCiszNTAwMSA4MDJkOTM3ZjU5NmFiZWIwNGIzMmU5MWZjN2VmYTFlMTU2NmJkYmM4IGFzdC1icmFuY2gKKzM1MDAyIDFhZTI2Nzk5NGZhMDM1MGFhNTg2NWM1MmFmMDE0ZjcxMzc3MmY2ZjMgYXN0LWJyYW5jaAorMzUwMDMgNmExMTY5NWZlNjk4ZWIyYzg0NGEyNjcxYTZiNzdlODIwZTU5YzU2OCBhc3QtYnJhbmNoCiszNTAwNCAwOTA4MTZiZDhiYWMwMDFkNjUyYmM5ZDdhOWM0MzY0YzQzM2ZiOGJkIGFzdC1icmFuY2gKKzM1MDA1IDI0ZDM0YWI0ZWY3NTQ5YzJhN2MxNTI2YTJmMmU1MzFkNThiZWU3NDQgbGVnYWN5LXRydW5rCiszNTAwNiA4YzEzYWI2OWJhNGYxNDdhNWNkZWYwNGQ1ZmRmN2M2MWFlM2JmZmYwIGxlZ2FjeS10cnVuaworMzUwMDcgMWRjMjY1OWVkOWZjMzljY2VlNDllOGI0NThkNjcwMmYzNTk5NjJkOSBsZWdhY3ktdHJ1bmsKKzM1MDA4IDZjM2MzYjc3MWFiY2ZjOWU3YmRmY2Q4ZTI1MTFhY2NkNDFhZjI0NjYgbGVnYWN5LXRydW5rCiszNTAwOSAzMWEyODA5MDI0ZjUyMWI0YTY0MDdkNTFjMDJhMzcxZTViY2I2NjU0IGxlZ2FjeS10cnVuaworMzUwMTAgNTc1NTMxNTdjMTk2NmMyNzliZDIzYTExZDI5ODYxYjc5MTBjMjJjOSBsZWdhY3ktdHJ1bmsKKzM1MDExIDMxNThkYzE1MzJmYTE3M2NlMWEyYzA5ZTQ0NzZjMzU2ZGYyOTgwNmUgbGVnYWN5LXRydW5rCiszNTAxMiBiODdkMTk5OGVmMDAwNGQzZTU0ZDZiNjk1OTIzNGUyZWIwNDQ2NWQyIGxlZ2FjeS10cnVuaworMzUwMTMgOGI2MmY0MTk0YTdlNzkzNjk4OTBiYzU2NWU0Y2Y0ZWVmZDk2OTYyNCBsZWdhY3ktdHJ1bmsKKzM1MDE0IGQ2ZDFlZmRjYzVmZGQ0NGIyNzBhMmQ4NTYzYjBjNjYzOThmNmU2NTkgbGVnYWN5LXRydW5rCiszNTAxNSAxMzlhNmI2YzE1MGE1OWZiODdmNGQzYTEyZmYyYmY3NzdlMzllNDg3IGxlZ2FjeS10cnVuaworMzUwMTYgNzM2Njg3NWEzY2Q3MDdjZmFkZjRmMjFkM2QyMDVlNDhkNDQ3OTliYiBsZWdhY3ktdHJ1bmsKKzM1MDE3IDM4OTQ2NTRiNDg0OGUxNzU2ZTIyMWE4MGE3ZThkNjQ5YTcwZGJhNzQgbGVnYWN5LXRydW5rCiszNTAxOCAxYzBlNGE1MjY3M2FhNTgzOGQyYTcyMTc3YjRkZTk3YTAzMWRmMDQ4IGxlZ2FjeS10cnVuaworMzUwMTkgZmQ0Y2JiZWFjZTc5ZWNjNDFlZGQzMWIzMzE2YjJhNTc5MzU3Nzc4OSBsZWdhY3ktdHJ1bmsKKzM1MDIwIDJjZDk2NjI5ZmU4ZDE0ODBkMjEzODcwMjVmYzdmZjYyOGE4OWI5NGMgbGVnYWN5LXRydW5rCiszNTAyMSBlYzRhOTlkMTRjYTQ2MDRkMjQyZjc1OTY1MzQzNGU3Y2U2YjM4NzQ1IGxlZ2FjeS10cnVuaworMzUwMjIgODY4Y2FjZTIyMTlmZjcyZjhlZTVjYTY2YjlmZWQwMGJhNWQ1NDVkYyBsZWdhY3ktdHJ1bmsKKzM1MDIzIDhlNzA4OTJhOWYyNWNiNzQwYjJjODUyNGNlMjM1MDM2MDNkZjlhNWEgbGVnYWN5LXRydW5rCiszNTAyNCBjODU0YTFmMmQxOWI4MTQyMjc0ZTBkYTc4YTA4MGI2OGI4Y2NlZTVjIGxlZ2FjeS10cnVuaworMzUwMjUgMmMxYmEyNDFiM2MwN2EyOGMwNDU2NTMzNzA3ZjlhZmI4NTc2MzVlMyBsZWdhY3ktdHJ1bmsKKzM1MDI2IDI4ZDAwYjFhODQ0NzYwNjQwZTU4YmRkYjcyMDdiYTI1OTg0ZGExYWMgbGVnYWN5LXRydW5rCiszNTAyNyAyODRkYjJhNWY2MjBiMDg1ZmYxYTQzMThjOGUzMjEyMjFkOTgyZjNhIGxlZ2FjeS10cnVuaworMzUwMjggMjZlY2E3MDhiNmRkNjc1MjQwZjIxODE1OTIxODVhMDE4ZTlmMzcxZiBsZWdhY3ktdHJ1bmsKKzM1MDI5IGFkM2ZhZjUyZTE5ZTQwM2FkZWIxMDAwMmExMGUyM2UwYjI4YTdkNGQgbGVnYWN5LXRydW5rCiszNTAzMCA3ZWEwNjdkNzQ5YTAwNjYwNGI0MzBjZTE5NTgzYjQyYjYyOGU4YzNmIGxlZ2FjeS10cnVuaworMzUwMzEgYmY4NDAyYTU2ZmE0MjdiMjU1MWYzMTNkZTAyMzNjMzYxYmRhMzc2MSBsZWdhY3ktdHJ1bmsKKzM1MDMyIDc0YzA3M2JhNmMzYjJhNDIwMTBhZjlmMjEwNjkzMmEwYTgwNTRhMTEgYXN0LWJyYW5jaAorMzUwMzMgZTQwMWMwZjI5ZjUwZDg4YmU0MGQ0Mjg3ODk3NWZhNGJhMjEwOGFlMiBsZWdhY3ktdHJ1bmsKKzM1MDM0IDM4YjIzZTZkNGM0Yjk2NGZlY2Y2NmY2Mjg5NTJkNTQ5YjgzOTYyNzggYXN0LWJyYW5jaAorMzUwMzUgZTM0NzRlZDgwYTVlZjdhMDA1M2VlYzAwNzFkZDMzNTMwYTM2MzE0MCBsZWdhY3ktdHJ1bmsKKzM1MDM2IDZkNDE4ODAxZjE0MmRmZjE5MzFlZTRhNDUyYWQyNjg2NjNkMjMxYzQgcmVsZWFzZTIzLW1haW50CiszNTAzNyA3NDQzMjNiNzY4ZjBkNGFlOTkxMzVmMDhiOGI1NDY1YjY1YjZkYWY3IGxlZ2FjeS10cnVuaworMzUwMzggYzUzZGFmMzViYmNjYzBhOTVhYzM3YTNkNDcwYmY0OThhNDMwNWNiMCBsZWdhY3ktdHJ1bmsKKzM1MDM5IDg3MzdiYjQ0ZTIyZmE4ZGJmNjNkYzdiNmNjMWE3OGRhNzlmNzU3ZTEgcmVsZWFzZTIzLW1haW50CiszNTA0MCAwNjFlZmZhYmFmY2JkN2Y0NTE0MjVjMzlmMjlhNDMyNmM1ZmIxOTIzIGxlZ2FjeS10cnVuaworMzUwNDEgZGNkNzQzZTc5Y2UzNTZlZDcwOTRiNDE5NTI4MDJlY2FhOWZiZjk5YyBsZWdhY3ktdHJ1bmsKKzM1MDQyIDMzNjhhNGQyNWYxNzdkZWU2MThlNzRjNTgxNTM2ODAyOThjNWY3ZDIgcmVsZWFzZTIzLW1haW50CiszNTA0MyA1ODNkNWFhODEwMWNlM2E4NzUwYjY5NDBjNjY4YzFlYTQ4NTljOWJmIGxlZ2FjeS10cnVuaworMzUwNDQgNWViOWUyNWU2M2ZkNWVkODY0MGFlYzE1OTRhNWJhOWMwYzE3ZjAwMCBsZWdhY3ktdHJ1bmsKKzM1MDQ1IDBlYThlYmViNmFhMmI4YTU4ZTY4ZWQ0MDEzMDg4MmNjMDNjNTI1YWIgbGVnYWN5LXRydW5rCiszNTA0NiA4MDk5NzhjMzA0YmU0Yjk2YzY4NzMxYmI2YmMyYmQ2NjUyODBjNmJjIGxlZ2FjeS10cnVuaworMzUwNDcgZmZmMWU4NWQxOTVjMTc1NTBiM2U1NDE0NGEwZTBjNGM2MDI3ZDY1NyBsZWdhY3ktdHJ1bmsKKzM1MDQ4IGNkN2I3MGE0YzQ0MDIxMGEwNTA2ZWYwNWU2NzcwMTE0NTQ3YmJiZTQgbGVnYWN5LXRydW5rCiszNTA0OSBhNTMxOTBiMzg3MjdiNzcwNjQwMDM4MjYxYWMxMTVmNWVlN2JhNWY3IGxlZ2FjeS10cnVuaworMzUwNTAgYjY3NGFiNTgwOGJhZmZiMjYwN2FiOWNhZWU4OTRlNjFjYzM5ZDcwMiBsZWdhY3ktdHJ1bmsKKzM1MDUxIDA5OWE0YTJmMWY3N2NhZjliZTllYmZiZTU0MWY5MWQzY2NhNjVhNzAgbGVnYWN5LXRydW5rCiszNTA1MiAzMzI5NDIwNmQ1MzlmNTlmMmIxNTY0NjRiMWQ3YjdlOGQxY2EzOGQ0IGxlZ2FjeS10cnVuaworMzUwNTMgY2E0Mzc0NjYyNjMyNDc1YmU3Y2MyYzM5NGVkMDJiZDE0MTQ4Mjg5YyBsZWdhY3ktdHJ1bmsKKzM1MDU0IGVkNjg5ZDBjNjNjMTNiMWI0YWI0MDgxZjgxZjJhM2JhNmU2YzIxZTIgbGVnYWN5LXRydW5rCiszNTA1NSA5NjcyMjM3N2Q0MTJjMjE0NTU2YWI0Zjc3ZDA2OTk0ZGZhN2E4ZWIzIGxlZ2FjeS10cnVuaworMzUwNTYgYzY3MDFkODRhM2ZhMWIzZjdlMGZmNGE0MzRmNjAzNzAzYTdmYzFkYSBsZWdhY3ktdHJ1bmsKKzM1MDU3IGFmOTQ2ZGI2N2FmYzQ0ZDRiYTZhZTI1ZDYwY2ZiMTQzNzJjNjE2N2MgbGVnYWN5LXRydW5rCiszNTA1OCBiNDUzMmMyNDZhM2EwZWM0MTNjY2ZmZjg4ODhmNjNkMzlmODFjNjMyIGxlZ2FjeS10cnVuaworMzUwNTkgM2NjMGQ4ZmQ0ZTJiNjgxYWNjODE4M2Y2MzVjYTI2MDI3ZTQ0NWZjMCBsZWdhY3ktdHJ1bmsKKzM1MDYwIDhjNzA5MDkwOGNlY2ZmNjkwMjRmNWVlNTI4ZjI4ODM1MDZhYjViOTEgbGVnYWN5LXRydW5rCiszNTA2MSA0NzdmMGEyNTIxNTBkNzViM2U1MTdiMWE4YmVkZmRjM2Q4NGY1NmIzIGxlZ2FjeS10cnVuaworMzUwNjIgYTZiYzEzMWFiNjE4OGM4N2M1NjJlOTYyNDYyODVlOTI3ZTVmMTllYSBsZWdhY3ktdHJ1bmsKKzM1MDYzIGI2N2NhM2Y2ODhmNzhiYTIwMjIwMWMyZTYzODE5MDg2ZmU3MTQ0N2EgbGVnYWN5LXRydW5rCiszNTA2NCAzODUxNDg4MmE1YzRjNDVkMGQwNGZlZTE4ZThmZjdkNGEyNjY4OWNhIGxlZ2FjeS10cnVuaworMzUwNjUgZjY2OTM5ZjM4NTIzNWQ2NjRiNjg1OTk4NzZiYzRkNmRmMzkxM2I3YyBsZWdhY3ktdHJ1bmsKKzM1MDY2IDBiYWEyNjYwYTU2OGJmMWY3MGJiOTNiOGExYmViZDY5ZWU3NDQyOWYgbGVnYWN5LXRydW5rCiszNTA2NyA0MTZhNWQyNWNiYTY4ZDJhMTc2N2M2NjY0ODkwZmUwZWMwNjY3NjQyIGxlZ2FjeS10cnVuaworMzUwNjggNzZlZDhhNzg4MzkxODU3MzdhMTQzNDAwZThiNTg1OTcwOTY5MDZmNyBsZWdhY3ktdHJ1bmsKKzM1MDY5IDQ3MjdjODFkYjk0OTkwODdlZmI5NjdmMzBlNmE1ODU2ZmJiZjI3NGUgbGVnYWN5LXRydW5rCiszNTA3MCA2ZWE1Y2NmMDY1YmUwNDJhYzYzZWRmMDY1NjVlOGQwZGE0ZjY3YTRkIGxlZ2FjeS10cnVuaworMzUwNzEgNGFjNmEwMjIxZjdkNGI4N2RjOTc4OTk0NWY3OWJmM2VmNjJkMTIyMyBsZWdhY3ktdHJ1bmsKKzM1MDcyIDA1NDIzYzMyNjFkNDE1ZjU4NjcxNDBjYTE0NjVlOTEzY2FlYmFmNjEgcmVsZWFzZTIzLW1haW50CiszNTA3MyBlOGRmZjExZTkzNTg3OTY1ZGY0OTk0NGM4OGRlNWFiM2I2YTA0MGU3IGxlZ2FjeS10cnVuaworMzUwNzQgNDkxNWZiZWM2MDhmNGYwMzU1ZGMxODY0YWViZThjMDYyOGQwMjdhZiBsZWdhY3ktdHJ1bmsKKzM1MDc1IGZkNjQ5N2NmNzIyOGU4MjY5OGRiNDhkNDdlYTcxODNmMDUwYTI0MjQgbGVnYWN5LXRydW5rCiszNTA3NiAwYzFkMjA2MmRlZTM1MzkxNDRhY2I4N2IyYzJjYTE5YThlYjY5N2YxIGxlZ2FjeS10cnVuaworMzUwNzcgYTBhZTJkOWRlNjkxMTFkMDYwN2ZkY2NhYWNkY2E0ZDExMGM3YmM3NyBsZWdhY3ktdHJ1bmsKKzM1MDc4IGJiM2MzYzk4Y2MxYmFiYTEyOTA2MzM3MzVhYTY2OTZlNTJhM2JkMWIgbGVnYWN5LXRydW5rCiszNTA3OSBmMGUyYTg1MzY3NTlmZGMxMjBlNDM0ZTc2MWU2OWNiZTIyN2Q4MTVjIGxlZ2FjeS10cnVuaworMzUwODAgYTBiMTc3MzI4MzVhMjBiMjQ4YWM4NWVmY2E5NDkxYWE1Nzc5ZjcwNSBsZWdhY3ktdHJ1bmsKKzM1MDgxIGEzNDBjNTBlOTI0YTM3NGNhMTgzMWJiZDkwYWNlNjExNjVkMjIwNDQgbGVnYWN5LXRydW5rCiszNTA4MiA1NTQxMmE0M2QyZDNlMWM0MjEwNmEwZTk3NGMzODI1NzY4MzIyY2I2IGxlZ2FjeS10cnVuaworMzUwODMgZWFhMWE0Yjc0MzI4N2JiY2ZiNmM0OGE3NTJlMjM1ODZkZWU4MWIyMiBsZWdhY3ktdHJ1bmsKKzM1MDg0IGEzMmFhNzkwNjI1MTQ5NWM0MWIyODQyZWU5YTYyY2UwYWVkOTU0NTIgbGVnYWN5LXRydW5rCiszNTA4NSBlZmUwNzUyODk3OTM1MGVmNWEwN2UwNTMwZjIxMGEwNTU4NDdlYTYyIGxlZ2FjeS10cnVuaworMzUwODYgZWQyMDI1OWExZWE1NTdkZGE1MThkNmNkMjkwZTFmZDI1MDNjMWMxMCBsZWdhY3ktdHJ1bmsKKzM1MDg3IDc5NmM5OWYwZmEyYzYyY2M3OTFlYzM0YjBjYThlMWFmMWNmYmY4OTEgbGVnYWN5LXRydW5rCiszNTA4OCBkOGMyZGI3ODJiZGY1ZmYzNTIxMWEwMTU1NzhjODM1MWYzNzhlYjI3IGxlZ2FjeS10cnVuaworMzUwODkgOTE0MGVjZTNkYjAzNjMzOTIzODYyODhlZWM5OTYwYmFhNzU0ZGE4YyBsZWdhY3ktdHJ1bmsKKzM1MDkwIGMwODg1ODRmNTUzMzllOWFhNGE1NGZhYzZiMGZhYzRkMzY2ODVkODYgbGVnYWN5LXRydW5rCiszNTA5MSA1ODZhNDljMmM2NDFlNTM4ZTU0N2YwMjI5YTNhNDgwYjQwNDQwYTMyIHJlbGVhc2UyMy1tYWludAorMzUwOTIgMTdjYTM0NzMwM2QzZjEzZTJjMWNhM2Q1NWZhODIzYzg0NDAyNDc2NiBsZWdhY3ktdHJ1bmsKKzM1MDkzIDBmMzk0ZjQzOWFkNmEwNGY2MzExN2M1NzVkNTYzYTM2OWY2ZGJjOTYgbGVnYWN5LXRydW5rCiszNTA5NCBlYzc1ZmY4Yzc3MjEyMTlkM2M0MmFhZWFkOGZmYThhYmZlNzk5OTBmIHJlbGVhc2UyMy1tYWludAorMzUwOTUgZjE2NjkxMWY3NzhiODU3MWNkMTMxZTBhYWU1ZGFmYjJhODFjNDI0MiByZWxlYXNlMjMtbWFpbnQKKzM1MDk2IGY3YTA1YWI1MGQzYjRlMjI2NzIwYWU2ZGI1MmEwMjhmOWNkMGE2ZmIgbGVnYWN5LXRydW5rCiszNTA5NyBiMmE4MjBlMzI5YTkwYTMzZTU2Yzg3ZTZiNDZlN2VkZmY1N2U0ZGRjIGxlZ2FjeS10cnVuaworMzUwOTggNTdiYWNiMTE5YTk3NjgyNWEyZGFhZDE4YTNkMDgyMjNhOGQxYzVkYyBsZWdhY3ktdHJ1bmsKKzM1MDk5IDk5ODkxYjg4OGNmZDI5ZTlmMGViNTAxODZjMzg4NzdiNzhlOWNlMDEgbGVnYWN5LXRydW5rCiszNTEwMCAxZGY1YjZhMWRiZjZhNTQwMTQyYzFlMzYxMzRlYjBiYjg0Nzg1YmZjIGxlZ2FjeS10cnVuaworMzUxMDEgYjNkNjUzMjZjYTY2YjQ1NmRhOWMwOWY3YjBjMzVhMzIyZDg3ZGY0YyBsZWdhY3ktdHJ1bmsKKzM1MTAyIGJmMzZjMTE2MzMzMDdmZDE5NmNiMjlmOGQ2NmU4MDMwZTM1NzJjZDUgbGVnYWN5LXRydW5rCiszNTEwMyA2YThiMTIyYWViMmZmN2E0NmIyMDE5MjQzOTVkZmFlNTdjNzNkYWEyIHJlbGVhc2UyMy1icmFuY2gKKzM1MTA0IGE2Mjg0ZTlmMzBhMmU2ZWIyOTllMWIxMjE3ZDUwMzA5ZGJhMjE2MjAgbGVnYWN5LXRydW5rCiszNTEwNSBmODRkMmJjNjgzMWQ0ODY2ZjlhZjQ1ZmFjZThkZjc4MDBjYzAwYTAyIGxlZ2FjeS10cnVuaworMzUxMDcgNGU0MGVmZjFhZDE4NmVhMjg5YzhiZDg2ZDkzMTM5NWI0NzVmYzY1NiBsZWdhY3ktdHJ1bmsKKzM1MTA4IGQzMjU4ZjQzZDQ4NGJmMWUyNjRkMmU1NGQ4NTljOGM3YTkzZjU3ODQgbGVnYWN5LXRydW5rCiszNTEwOSA2MzFjZTIzZjg4ZDZhZTU5N2VlZWRiYzdlZjc1YWQyYTFhM2EzMTViIGxlZ2FjeS10cnVuaworMzUxMTAgZjM4YmQzOTNlOTU0NzViMzI5ZTJiNTk3MGU3MWMwNGQwMmFmZjRiMiBsZWdhY3ktdHJ1bmsKKzM1MTExIDlkYTk0ZTU2OWQ0OGJiZjgwOTk5OTVlNWQ2N2UxZDM2YzE1NzUwMDMgbGVnYWN5LXRydW5rCiszNTExMiBmYzU3MjAwZjcwZjI0ZGVlNGExZTlhOTY2Y2EyZDA2YjI2N2U3MTA3IGxlZ2FjeS10cnVuaworMzUxMTMgNjRhZTgzMjEzMWUxNDA3NGNjMWY3NTdiN2QxNDE1NWU3YTZlOGU3NCBsZWdhY3ktdHJ1bmsKKzM1MTE0IDQwNTUzNzVkYzA1ZWEyMTk4ZDJlYWJjNDAyN2Q4MzcyMjM5YTY3ZWUgbGVnYWN5LXRydW5rCiszNTExNSA2N2ExZWVhZDcyYmFiNGJiODdjZDVjZDNiY2E5ZTkwZGNkNjRiY2I0IGxlZ2FjeS10cnVuaworMzUxMTYgZTIwZmMxYjgwMjA1MWEwMjAxMmRjZDRjMGEwZjgxMTFkYzczNDY5ZiBsZWdhY3ktdHJ1bmsKKzM1MTE3IDQ2YWQyMWI1YmQzMzRjNDk2Mzc0ZTM1Yzg3OWY3ZGI5ZGEwYmMxMzYgbGVnYWN5LXRydW5rCiszNTExOCAwYWE2NDQxYzdmZTZkOGJmZTlmZWM0YjZlNjhkOTgwOGZmNTgxODcxIGxlZ2FjeS10cnVuaworMzUxMTkgNWJiZWM4ZjFiZjZkNjUwY2VmZmNkZmM2ZTU0MTAwZTgzNWVjN2VhMSBsZWdhY3ktdHJ1bmsKKzM1MTIwIGNiOTIzMWVmM2JiOTNlYWUzMWRmM2ViNDAwNTAyMDVmODY5MTBlNTMgbGVnYWN5LXRydW5rCiszNTEyMSA4ODdjZTM5Zjk1ZjJhZTk4MThmZGM1OWY5ZGFmN2I5NjNiOTBlM2JiIGxlZ2FjeS10cnVuaworMzUxMjIgNDA2N2JmNDgxNTRkMzc0YjE5MDQ3M2UwZjAwYmM5ZDllODJlZjdkYiBsZWdhY3ktdHJ1bmsKKzM1MTIzIGVjMGM5MDYyMTBiZmEzMjA1Mzk2Y2EzM2UxYWE1ZTg4MDI1ZGM2MjEgbGVnYWN5LXRydW5rCiszNTEyNCBhY2ExY2UxYjRiNjE0NDIwMmQ2Y2NmNTlkNjkxNDhiNmUyZTRjMTgwIGxlZ2FjeS10cnVuaworMzUxMjUgOTE2OWQ3OWVkMzA0OGUwODExNzI4ZWQwMmRhMzE4ZTk0OTU0OWU3MCBsZWdhY3ktdHJ1bmsKKzM1MTI2IGNlZjYxM2Q5MDQ5NTdjZmJlZDhmNDk4YjBkNGJmZTZhNWYwZDk3MmMgbGVnYWN5LXRydW5rCiszNTEyNyBjOWJlZDIwMDUwMGU0Zjc3MDRlYTA0ZDk2ODBlZDMzZGE4NzJjZDBkIGxlZ2FjeS10cnVuaworMzUxMjggYzg3YTdlODEzYTk5ZjYzZGVmZWU3YzdiODc1NGY0YWUxOWMzOGE4MCBsZWdhY3ktdHJ1bmsKKzM1MTI5IDM4ZGNlYzJmN2IwMzQ0NGE1MDMzOGRmOTViMTYzZDkyYWZiNjhlNjYgbGVnYWN5LXRydW5rCiszNTEzMCAzYWEyMGE4MmRlODY3ZjYwNTUxMzRlYjAwNTJjNzkyMzVjMzAzMzViIGxlZ2FjeS10cnVuaworMzUxMzEgNDBkNzI1MDc3ZGNiMGQ0OGY5ZGQxNGI0OTAwNDJjODUxYTc1NDVmMSBsZWdhY3ktdHJ1bmsKKzM1MTMyIGI5MDU3YTY3NjNkN2QwMTNjOGI0NjhlN2VhZDlmNGNjODMyOTk2NTQgbGVnYWN5LXRydW5rCiszNTEzMyBiM2Q3ZWJjMTNkN2Q1ZWVlMGU1OGY3OGUyMjM5NmE0Yjk1YmU0ZjY2IGxlZ2FjeS10cnVuaworMzUxMzQgMGZjZTViMTczYTc0MDJlZWIwZTY2MDNiYmQzNzljOTQxNzQ5NjA4ZSBsZWdhY3ktdHJ1bmsKKzM1MTM1IDI1YTgwMTY0Y2M3YWZlZjRhYWVlNGE0ZDJiY2YyMjc4OWRiYWYyMTMgbGVnYWN5LXRydW5rCiszNTEzNiA4OTdkZTkyMDgxOTliOTZkZDZiMTFjZDMwMTU1ZGI0ODExYTZjZmZiIGxlZ2FjeS10cnVuaworMzUxMzcgMTJjYzMzNjgyOGU5YjI3MTk1NmY1OGJhZWQ5ZTFlMTU2ZTZlNjhjNCBsZWdhY3ktdHJ1bmsKKzM1MTM4IDkwMDVmMjY2MmE3MGVhYjIyY2E1MDkzZDZlZDUwMjk3ZTRmYzJmNmUgbGVnYWN5LXRydW5rCiszNTEzOSA3NDA3YTI0NmRiZTAyZjgwYzkxODZlZjA4MDk0NGJlMWFhODk5OTdlIHJlbGVhc2UyMy1tYWludAorMzUxNDAgZmY5YTU0OTUzYzBiZmVhNzdlNTJkMDQzOTA1MWU0OTUwNTIzYzk5YyByZWxlYXNlMjMtbWFpbnQKKzM1MTQxIDY5YTM2NWU0N2FjMGEyMDk2NWM4MDU3NDdkMmUxZjc4MjI3NWM4ZmIgbGVnYWN5LXRydW5rCiszNTE0MiAxZGM1NDIyNWE0YzIyODk5YTY5NjU5NDI2NDE2NGI1ZTMzZjY3NTQ4IGxlZ2FjeS10cnVuaworMzUxNDMgZTcxMjRlMjY5MjVmNjRiNWRiMzFhYzQ5MmZmOTFlM2RiYzFhNjU3YyBsZWdhY3ktdHJ1bmsKKzM1MTQ0IDY5MDEwNWZlYTU5ZDM4ZmViMzQwMzFhOWJhNjk0ZDRiOThhMWU5MjIgcmVsZWFzZTIzLW1haW50CiszNTE0NSA2ZTM3NThlZDFlZjQxMmE5MmUxNmQxNWZiZmU2MDYwYjI5ZmJhOTlmIGxlZ2FjeS10cnVuaworMzUxNDYgYmJjOTQ0ZTFmZWNjYjYxMWE5NDdiYzg5Y2Q4YmUxZjFlYTA2ODQyNiByZWxlYXNlMjMtbWFpbnQKKzM1MTQ3IDI2NmYyMjZmNDcxZDA0NjUyNTk4NzBiOTM4ZGVjMDgzYmUwMjI2MmUgbGVnYWN5LXRydW5rCiszNTE0OCBlYzhhNDY4NWIzNjA2NjY4NzFlZWVkNzhmNzU4NWViNTYxZDgxZDkyIGxlZ2FjeS10cnVuaworMzUxNDkgMTRkZWE2ZjhiMGMzNDRmZWE1YzkxZTc2N2Y4Njc3YzMyMDAwYTg3MyBsZWdhY3ktdHJ1bmsKKzM1MTUwIGMzODBkYzI5MzA0YWUxYjMxYjg4Mzk1MzljYmNhZjdkYmZiMTdiOTkgbGVnYWN5LXRydW5rCiszNTE1MSBmN2Y0MmYzYzNmYjQ3NTdlYjQ2MTkwZWI1ZTRiN2I1MjkxNzRmOGI5IGFzdC1icmFuY2gKKzM1MTUyIGExNTExNTI5MGUxM2IyOGZjOGE2MzQxODBhYzViZmJhN2QyNGUwMzYgcmVsZWFzZTIzLW1haW50CiszNTE1MyA3ZmNiMzU1NTJkNTNhMzRhMDg3YWMyYzNiMjE1YmU4MzRiNjBiZTNkIGFzdC1icmFuY2gKKzM1MTU0IDAzODA4NzhmM2RiNTQ5MzE0OWFlNGM3MjkxYTVhMTVjNzMzODEwODEgYXN0LWJyYW5jaAorMzUxNTUgNjAzYTllYWE3NGUxNTVkOGRmYTY5YjM1N2UxMGU1MGNlOWRjYzgzMiBsZWdhY3ktdHJ1bmsKKzM1MTU2IGFjNGE3YmE1NDc5MjkwNGFkODI3ZjJlOTg2NzNmOWNmODA5ZmY0MTAgbGVnYWN5LXRydW5rCiszNTE1NyBiMWRjNWUxMTQ4ZWEzNGVmYTVjZjdiN2E4ZmIyZTZlNGVmZDVlY2ZmIGxlZ2FjeS10cnVuaworMzUxNTggYmU1NmZjNDg1ZTI3MGQ2ZTI0NmZlZWQ4MTc5ZmYyMzE4YzVmYzNlMSBsZWdhY3ktdHJ1bmsKKzM1MTU5IDdiZTU1MzgwNTk0OTNlNjNmYThkMTZkNTU5YjdkYmY4ZWE3NjYxZjIgYXN0LWJyYW5jaAorMzUxNjAgNTYxZmU3ZjY2NTE1ZTA5ZjkwMTIxMDI0Y2E2MGU4Yjg3OTBmOTdjNyBhc3QtYnJhbmNoCiszNTE2MSBjNGQzZTdhMWZmODY5ZjBmYTY1ZWJkMGIwY2NhOWNlYWFhMzM2NmVmIGFzdC1icmFuY2gKKzM1MTYyIDYxYTIwZGY0YjBlZjVmZDc5M2ZhOThhMGM5NTAyMTgzMDgzNDYzZDQgYXN0LWJyYW5jaAorMzUxNjMgYjgxNDgwZjdjZmZlNjE5YTk0MTdlN2RmMDhmYjMzZDljZDI4NGYxMyBsZWdhY3ktdHJ1bmsKKzM1MTY0IDE4NjMxOWNmZjRiMjI0ZTQwMzczODVkNWY1ZjZlMDhkZmYwODFjMGQgYXN0LWJyYW5jaAorMzUxNjUgN2M4OGEwNjlhMTQzOWEwOWUzZjVkZWYyNzc4NjQ4OTRlNmI4NjU0YyBhc3QtYnJhbmNoCiszNTE2NiA4YjYwODQ4NDhkYTE4OWEwYzY3OWJmZjQ0MDljNDI0ZjBlNDQ5MGMzIGxlZ2FjeS10cnVuaworMzUxNjcgNjZhNDIzMGY5NDViMTQ4ZWIzYzczNWUwZDRkNzYxYWM5OWI5NTQ2NiBsZWdhY3ktdHJ1bmsKKzM1MTY4IDhmNDcyODFmZWE3YmVhNGM5NTVmODExNDg1YmJmMDNiZDA2YzI5NDAgcmVsZWFzZTIzLW1haW50CiszNTE2OSA0NjIyNDY5MGEzNjU1YTQzZGRiOWFmMzRhZDZhNGY2MjEzMDNjZjE3IGxlZ2FjeS10cnVuaworMzUxNzAgZjJmZDRlNWRkZjE5NWFjMjMzNWQwMjUzODMzZDNhNmVhN2I0NTlkYiBsZWdhY3ktdHJ1bmsKKzM1MTcxIGU0ZDczZWU4ZDRlMTZiYTRjNGE4MTk2NmI2MDNhN2FmNzE5MzI4YTMgbGVnYWN5LXRydW5rCiszNTE3MiA4ZDA2YzE5MmYwZTZkM2VjOWQ3MGJhYTA5ZDBiNDY1ZjEyMzRjOTRlIGxlZ2FjeS10cnVuaworMzUxNzMgYWRiNmRmZmQ4ZGQ1MzE0YjQ1MzE0NjE1ODA3NDU1OWJiNjJjNTI3ZSBsZWdhY3ktdHJ1bmsKKzM1MTc0IDFlYmQwNjI2ZDE3NjEwODMyOWI3MDE1NzI0ZmI4N2ZkMjJlZjg0ZGIgbGVnYWN5LXRydW5rCiszNTE3NSAyODgwY2ViODExOWRjMWI1MjVlMzUwNTNkOTczMThlMzBkZWY1YjdlIGxlZ2FjeS10cnVuaworMzUxNzYgZThiOTZiMmJmYTdiMjBmY2Q4MTc3NDdhMTMyODM3Y2NkYmM4ZGExZCBhc3QtYnJhbmNoCiszNTE3NyA4ZjhiYmEwYTc1YjRjZDA4MjZhNWE1NzgzZTM5MzI2MWU0ZGQ0Y2FhIGxlZ2FjeS10cnVuaworMzUxNzggNGU3Y2M1MGIzMGExNjQzOGY3MTRiNGIzNmRhY2I2ZWZhYjRhNGFiOSBhc3QtYnJhbmNoCiszNTE3OSA1MDFkYWFjY2JmZTBjYjY0Y2JhMGE5NGMzZmNkYTBmMDBjMGM0NGY3IGFzdC1icmFuY2gKKzM1MTgwIGQ2NjdlMzNlMDI1MjNmYjdiMGQ5ZGIzMTIwOGQwNmYxZmI4NWEzZmUgYXN0LWJyYW5jaAorMzUxODEgNjU3NzgzNTIwNjZiZjk0ZjA4ODgwZWFmY2E3NGM4ZjMxODE5ZThiYiBsZWdhY3ktdHJ1bmsKKzM1MTgyIDM3NDY5NzQ3OGI1YWMwMmU2MGFiYjU4M2E4ZWQ2ZjA1MjRmZDg4NzUgbGVnYWN5LXRydW5rCiszNTE4MyBmNzZmZWI3M2EwZTQ3MTY5YTM2MTViOTI4ZDYwZDA2ZDkwOGRkYzY0IGFzdC1icmFuY2gKKzM1MTg0IDYzMDhhZGYxNzJmNDgwMzUwNzI0ZWZhMDc1NmZiMWMzOWRjNGJiMDAgYXN0LWJyYW5jaAorMzUxODUgOTUyNTE3Nzk4Y2I1ZDMwMzY2ZjQ5NTNiMTEyNmYwZWI3NzkwMzZkZiBsZWdhY3ktdHJ1bmsKKzM1MTg2IDYzZmE2MGYyZDYxY2E4MzZiNWUyZDA5NTlkZWQxYzAwMjgxOTRhZWQgbGVnYWN5LXRydW5rCiszNTE4NyA0YTllNTYzNjhjNjkwNGMzOTI1MWM4MmJhNzAxZWI4MDAwM2Y2ZmNlIGxlZ2FjeS10cnVuaworMzUxODggM2M1N2ExYzNhODdhZWYxMzg4NTY0ZjkwNTljYjRhODdmMTYyM2M3OCBsZWdhY3ktdHJ1bmsKKzM1MTg5IDNjMjY3N2M0YTJiZjM2OWU4MWZiNmZhZjhiMTNkYzY0ZDI0NDRmYjIgbGVnYWN5LXRydW5rCiszNTE5MCAxNmIzMTVkZjEzY2U0OGY3YjNhY2JkNWNjZDZlZWJlMGVmODRjNTMyIGxlZ2FjeS10cnVuaworMzUxOTEgNDkzNzA3NjkyNjcxOTRiNzY5MTk5ODU0YTdmNWQ4MTZmMWRhZjhlMiBsZWdhY3ktdHJ1bmsKKzM1MTkyIGEyZmUxYTM1ODAwYTA2ZDQ3N2QyNTBjMjQzNjNkOTgwMGZhYzcxYWQgbGVnYWN5LXRydW5rCiszNTE5MyBhZmI0Yzk3MjZkMWE0NWEyMzFkNGZjZWQ5ZDU3NzNkYjE1ZGZlMjkzIGxlZ2FjeS10cnVuaworMzUxOTQgYTI4MjgwMWIwNmI2NDhkZjBjOGNjNDYwMTIyODVhN2FiZmZiYzY5ZSBsZWdhY3ktdHJ1bmsKKzM1MTk1IDEyMTlmMTE2MmQxZDFhOTU4OTcxMzRmNWU2NDk2NTFkYmZlMmU4ZjAgbGVnYWN5LXRydW5rCiszNTE5NiA5N2JjZjJlODhjZWI4OTE2YWM4YzUwMzg5ODg3MjllY2IzOTA1Y2RlIGxlZ2FjeS10cnVuaworMzUxOTcgMTZkMjY5ODY2YTRkYWY3YmIyYmVhMzFmMjE1ZTFmNmY4OTcxYjYwNCBsZWdhY3ktdHJ1bmsKKzM1MTk4IGRmYzE4MTliNGViNDczMmY5YTE0ODc2NTVhMjgzNDU4ZDFjMzBhMDIgbGVnYWN5LXRydW5rCiszNTE5OSBiNGJjODNmMmZkMDRkOWQyMTFiZjcyYjgxYjAwODJmN2Q3ODU4YjNhIHJlbGVhc2UyMy1tYWludAorMzUyMDAgOTI1NjVjY2NlOTJiODBjYWQ3YTM1ZmM0NzZlMzBmYjk3ODkwZDdhMSByZWxlYXNlMjMtbWFpbnQKKzM1MjAxIDY2YTU1MGU5YjJmYjc1YzJlMjEyMzYxZWUwOTg0ZTk4ZmRjNTBiOGUgcmVsZWFzZTIzLW1haW50CiszNTIwMiBiYjcxNDZkMTE3ZmJkMzkwYmE0OGEyMWFmYzcwNzVmYWUxNzY0ZWU4IGxlZ2FjeS10cnVuaworMzUyMDMgM2NjM2NiNzkwNDNmNzIxODAwYmZiYjEzNzIyZDdhYmMxMTk3YzAxOCByZWxlYXNlMjMtbWFpbnQKKzM1MjA0IGQ0MTY1ZDEyZjczYzE5Zjk2NTFlYjlhZWE4ZmM3OGY1NGI5ZDJkOTUgbGVnYWN5LXRydW5rCiszNTIwNSAzN2Q1MDFiOWUyZDViYjBmODI0YjZhNzVjOGU5ZjNiNjg0YmYxMGJhIGxlZ2FjeS10cnVuaworMzUyMDYgNTY2NzM3YmZhZWM5NTA1NGJkZjQ1ZjIyMDY5Mjc2NDdlNjllODE4MCByZWxlYXNlMjMtbWFpbnQKKzM1MjA3IDhhZTg4ZGI3ODQzYzFmMGMwYTZlMThhMDJiODA4M2VjYjkyZjViMDkgbGVnYWN5LXRydW5rCiszNTIwOCBjNTgyNGM4YzZiYTcyMjc1NzdjYTJlOTU5MTM0MGViYjIzZDQ5NmY1IHJlbGVhc2UyMy1tYWludAorMzUyMDkgMDMyY2IxN2FjMmQ2Y2JmYjdmZmU0ZDM2NTIxOWI3OTVjNGI0MGVhNCBsZWdhY3ktdHJ1bmsKKzM1MjEwIGNjMTBiMDEwZjQwYmExZTRlMjU5NGVmYzQ1ZjVjNWI3N2VhMzcwZGIgbGVnYWN5LXRydW5rCiszNTIxMSA0MjAwM2M4NjAwZjRkM2UzN2QxN2ZmNDg3MDViZjhjMGZhNmNhNWJlIGxlZ2FjeS10cnVuaworMzUyMTIgZDVjMDQ3ODA3YzY5N2IzNDFjY2MzNTE1NzAzZDQ4MTNmN2MwOTYwMiBsZWdhY3ktdHJ1bmsKKzM1MjEzIGE1Nzc0MTBlNWE2MGZkZTcwNDJiZmU3Mjk1MGFkZjYzNDkwYjM0OTcgcmVsZWFzZTIzLW1haW50CiszNTIxNCBhYWJkOWI1NGU0NjllZjg4MTAxYzU1ZTg3MmZhMjRmZGJkOTg5Nzg4IGxlZ2FjeS10cnVuaworMzUyMTUgODVmNDkzMmQ4ZmZkOTk3MDA1NTc0M2JkMTYxZTRhODRlMWVlYzY4NSBsZWdhY3ktdHJ1bmsKKzM1MjE2IGYwNGNjYzI4ODU0MmI2ZGI2MjM4NWY1NjYxYmE2MTY0ODU4MjY4M2EgbGVnYWN5LXRydW5rCiszNTIxNyA0NGQ0NDM4ZWQ1N2E1YTZlOGNlMDM5NGI0NTgxZmRkZGZkNmNlOTU0IGxlZ2FjeS10cnVuaworMzUyMTggZGUyZWQ4MDBmYTUwZmE1NTY3MzNjOWUwMjVkMzMxZmExYjUzZWFiNSBsZWdhY3ktdHJ1bmsKKzM1MjE5IDg0OTViMDI3YmNlMzY2MDk5MjU0YTI3YjFiZDhkMjQ1NTViYjgwYmMgbGVnYWN5LXRydW5rCiszNTIyMCA2NmU0M2YyNTA0NmRhNWU3MDUzYmMwYzY5YjAwYjRmOGQxOTg2NDliIGxlZ2FjeS10cnVuaworMzUyMjEgMWRjOTZkODc5NzRlYjY4OGIyMGUxMmRiYjQxNzk1NzAyNTgyYmIyNiBsZWdhY3ktdHJ1bmsKKzM1MjIyIDE3NGRjZjE3MWRmNTJjM2Y1MzI0MWEwNTNiZjViMGIyYjQ4MWRhNzQgbGVnYWN5LXRydW5rCiszNTIyMyA3YjM0ZDg0OWMyMjkwMDY1ZDA5M2NhZTk4M2Q3YmM3MDI0ZWU5NjgwIGxlZ2FjeS10cnVuaworMzUyMjQgM2NlNGZmYWMyN2FiNDRjMmExOWUwYTVlMzFiYzJkODdlNjA0ZWU5OCBsZWdhY3ktdHJ1bmsKKzM1MjI1IDMwOGMxOTNmNTFlMzE3ODU2Y2IxYmFkNDJiNmVkMGE0ZjQ0ZTE4ZjIgbGVnYWN5LXRydW5rCiszNTIyNiAyNWIzMDQzOWZlMjI5ZjAwMjZlNGQ3ZDYzMjNlNmVmYzEwMTg4MTU2IGxlZ2FjeS10cnVuaworMzUyMjcgYmE5YWFkZGViOTU2ODQ3YWQwNjRlYzM2YzI0NjhkYmQwYWVhM2Q3MSBsZWdhY3ktdHJ1bmsKKzM1MjI4IGYzMGFhYWMwMDE5NWU4NzY1MzJmMzUzYTJlZTFkOTNkOGY1MTQ1MmEgbGVnYWN5LXRydW5rCiszNTIyOSA1NzNiMDg5ZmFiNzFkM2U2MjViZTkxYzgyNjMyMzNkZmUzOGE0Yzg1IGxlZ2FjeS10cnVuaworMzUyMzAgOTFhZjY1YjkzMmQ2MjI4ODdiZGIwZDZhMWQwNDgyODljZWExMzU0YiBsZWdhY3ktdHJ1bmsKKzM1MjMxIGQ1YjRjNDRjNzZjZTA2YTg0Y2Q1MmRjZGMyZTJlMmU3YTQzYTdjYjQgbGVnYWN5LXRydW5rCiszNTIzMiBkOTg0YjNiZDFjZWIxYTBkMmFjYWNiZDBjNzM0MTg4MTU2YzQzNmEyIHJlbGVhc2UyMy1tYWludAorMzUyMzMgNjVkMjhmZmYxMTcyZTE1Zjc3Zjg0NTdmYWE3NGZlY2Q3MWY1NmRhNCBsZWdhY3ktdHJ1bmsKKzM1MjM0IDUzZGZmNjBmNTUwODliYWMzZmRiZGQ3MjdkZDZlYjQ1ODg1NDZhOTIgcmVsZWFzZTIzLW1haW50CiszNTIzNSBlMTc4ZWI0M2VmZGRlZTliOWIzMWQzMmFlMjAyZGUxZjhlN2EyMTE1IGxlZ2FjeS10cnVuaworMzUyMzYgNzI3MTIwZmIwMzY1MmRjMjgxMWE2NWJkYTViZTZkZWJlOWNhMWEwNiByZWxlYXNlMjMtbWFpbnQKKzM1MjM3IGY1N2Y1Y2UyMmM4ZGM4ZDIxMzViOTc5OGQ3OWI3YWZjNGE5ODIyMDQgbGVnYWN5LXRydW5rCiszNTIzOCAwOGVjNGRiNTA2NGViNmEyNWQ0ZTgyYjI1YmQ3NjliYzc4MzM1ODg3IGxlZ2FjeS10cnVuaworMzUyMzkgODlmOTA3MGRjMWJjMGJjMTA5MjkxYjMzNWU2M2MzNjM3NTVhNWFlNyByZWxlYXNlMjMtbWFpbnQKKzM1MjQwIGZkMmQ2NGFmMjY0MGFiNjEzYzgxMGFiMzMxMGQ3M2JkNmJkMjcxMzIgbGVnYWN5LXRydW5rCiszNTI0MSBkYjRkYTkzZjBiYTBlZTRiZTBlMTdhMWIyZWQ1NDg0NDBlNGFlZmQ0IHJlbGVhc2UyMy1tYWludAorMzUyNDIgOGUyMThjYzhlZGFiMmJkZGZlMTkzZDAzYjllYjgxNTI4OTM0M2EwOSBsZWdhY3ktdHJ1bmsKKzM1MjQzIGZlYWJlMmZmMGUxZTA5ZDJhM2QyZWJjNzMwZjM4YjI3MGE3ZTdlNTUgcmVsZWFzZTIzLW1haW50CiszNTI0NCA2YThlOGExM2M3NDU1ZmNmN2E5MDUwMzVjYjU2YzBkYzNiOTNhMTljIHJlbGVhc2UyMy1tYWludAorMzUyNDUgNGMxMmQzYjAxNjZmY2IwMjEzOWNhNzcyNDEzMTJhNWM5MGVlZjAxNSByZWxlYXNlMjMtbWFpbnQKKzM1MjQ2IGZlZjlmMmE0MWMzNGMwMzc2MGY2ZjNkZDM3OWEzZmMwZWNhNzBjZWIgbGVnYWN5LXRydW5rCiszNTI0NyAyYjdlMDhkY2FjYjE0Yzk2NzgzMzFlYjgxZmExNDdhYjZjZDNkMjdjIGxlZ2FjeS10cnVuaworMzUyNDggNTFjM2Q0NTJhZjJmMmNmYjhhNDA0ZDg3MzE4MjQxYTQ3MDhkMjk1YiBsZWdhY3ktdHJ1bmsKKzM1MjQ5IDc1ZGNmMjY2NmQ1NDQ2MDkzOGI1N2QxYTc0ODVhNzIzZDYyNDY5MzUgbGVnYWN5LXRydW5rCiszNTI1MCA1ZDlhM2Q3NmM5NGU2MDM2MmZlNGE1MjAxNGI5MTRjMzY0YjhmMDAyIGFzdC1icmFuY2gKKzM1MjUxIDhmMDYzMjAwOThkZDYwNDEzYTMwYzYxM2E4YTkyYWY3ZDJlY2M0YjkgcmVsZWFzZTIzLW1haW50CiszNTI1MiAxNGY4NjBiMDNiZTI3M2FhOWNhYzI1ZjFhMTI2M2RiY2U2NGYxMDAwIGxlZ2FjeS10cnVuaworMzUyNTMgNTk1MzhkM2I3Y2QyZDVkM2QyZTEzYjUyNjQ2ZjdjYzhlZjliMWYyNCBsZWdhY3ktdHJ1bmsKKzM1MjU0IGViNDhiMjUwM2YyMDFkNDRiNGFkZTY0ZmM2ZDNhMjA4NGViNWE5NjkgbGVnYWN5LXRydW5rCiszNTI1NSAyYWJjNTJjM2Q0YzJmY2VhYzM2NWExZDg5NTZlOGZkZmU4OWJkYTIwIGxlZ2FjeS10cnVuaworMzUyNTYgMWY1ZjZjY2EyZjIxMGQxMDhjN2ZkMTg4MTlhZDhlNGI2ZWE3MzAzZSBsZWdhY3ktdHJ1bmsKKzM1MjU3IGViNjllZWNhYjRjN2I2YzBhMTQ0MTUxYjkwNjIzMDdhZDEzOTViYTcgcmVsZWFzZTIzLW1haW50CiszNTI1OCAzNTQxMjkxNDM4MDk0Y2ZjZWIwY2Q2NzQ4ZDk3NDU4YmUzOWJhNTdhIGxlZ2FjeS10cnVuaworMzUyNTkgNzE4NjQ4MjA0MDJkNjU2OWRlNGVjN2RjNzdkNjIxYTI4M2U4ZTVlZSBsZWdhY3ktdHJ1bmsKKzM1MjYwIGNlNThkMWNjNmY0MDVmMzMxOTE0OGZiNzA2Mzk3NDFkMmRiYmMxYWYgYXN0LWJyYW5jaAorMzUyNjAgY2RjNjYyOTJlNTVkMzY5ZTc0YjRiMzIyNmJjZGQ4MjcxY2U3MDhhMyByZWxlYXNlMjMtbWFpbnQKKzM1MjYxIDIyMTk5ZWY2NGZmYTA0NTJhZmYyYjY5YWY3OTllYWM3OTQ2ZWZiMzQgYXN0LWJyYW5jaAorMzUyNjIgMTA2ZmE5NGI0MmRlMGM5MDVhMGZmYzRiMDA1YmM1YjI4MmIxYTI4MiBsZWdhY3ktdHJ1bmsKKzM1MjYzIDVhNDViNWMyMzcxZTg4NTE1NGNiNzgxOTFjNDQxMzkxOGFiNDQ4ZjEgcmVsZWFzZTIzLW1haW50CiszNTI2NCBlYWVlYTU4N2Y5MGEyOTU1NmZkMzI0MWUwMmI2NDFiZmIwMmNlYmQ2IHJlbGVhc2UyMy1tYWludAorMzUyNjUgNWJlZGJhNTViYTAzN2ZlMmMyZjM4YjVhYmQwNGNkNmE3MmJkNjA4YyBsZWdhY3ktdHJ1bmsKKzM1MjY2IDU0NTIyOWRmZDkwOTg1ODdkNDNiMzQxYTdlY2FhODBhMWIwMjZmZjUgbGVnYWN5LXRydW5rCiszNTI2NyA3MWEyOTRiZDc5NTA5Y2Q0MjA5Nzc5N2UzOWQ2MDI2ZWY5MDMwNTgxIGxlZ2FjeS10cnVuaworMzUyNjggOWIzZGFlY2FhZjI1NDRkOWMxZTBmMGM1ODVjMzU4OTBjNjMxYTY5OSBqaW0tbW9kdWxhdG9yCiszNTI2OSAxNTYwMGEyMzc0OTJhM2ZkZDUxNmEwOTk3MjE1ZjNkNjBjNjU4MGNlIGxlZ2FjeS10cnVuaworMzUyNzAgZWU0NGJlOGUxOWZjYzk0YTI2MmYxNDMxN2E3NmQyMDZjOTYxYjI1MCBsZWdhY3ktdHJ1bmsKKzM1MjcxIDJlNjJmYzk3OGQ4YWU5N2MzZWM1NjI1MGRmZTFmZmRlYWEwMDIzNWEgbGVnYWN5LXRydW5rCiszNTI3MiBiZDBhY2M0MjgyOWVmZTQzOTdhYzgyZGE0N2ZjMjg1MmQ4Y2VhOGU5IGxlZ2FjeS10cnVuaworMzUyNzMgNThkNWVkZTVmNGNlMmQ5Nzg3YzQ1MDUzYzI4NGI1NzFjN2YxZjBhNiBsZWdhY3ktdHJ1bmsKKzM1Mjc0IDZiN2IyYzYyYWIxMjYwODg0MWYyNTkwZWU5ZWIzMTMyMzIwNzJlZDYgbGVnYWN5LXRydW5rCiszNTI3NSAyMzk0NDM5MzMzMjRiMDIzZjdjZTE5ZDZmYzlkYmU0ZTk2OGUwYzViIGxlZ2FjeS10cnVuaworMzUyNzYgNzZjODEzODk0ZWU2ZjMwNTU1ZWVlOWY1YzU2OWI5MDc5MWRjMDU0MSBsZWdhY3ktdHJ1bmsKKzM1Mjc3IDNkOTI3ZTFjNzhjODg0ZDE2N2M2ZjJjMjRhNTUyNGJmNWViYmQ3ZjggbGVnYWN5LXRydW5rCiszNTI3OCA0ZWY1NjhjNjUzZDljNmJjZDhkYWY2MDc0ZWM5Yjk4NmJlMTQwNjQzIGxlZ2FjeS10cnVuaworMzUyNzkgY2UwMTA2ZGY2YTZhNjMyNWUzNGE5ZmQxZThiM2VmMmEyOTU2OTc4NiBsZWdhY3ktdHJ1bmsKKzM1MjgwIDI3YmYwNWIyYTRmOWUzYjY0ZGEyYTIzY2NhNzFjNDBhZjY0M2IxNjcgbGVnYWN5LXRydW5rCiszNTI4MSAxMjMzYmQ5NWRhMWE5M2Y5ZTJmY2VlZGMxZmFmNGE0NWJhZGFkOWY0IGxlZ2FjeS10cnVuaworMzUyODIgYmZiNDBhMDNjYzBjMDFmZGM4MGFlMWE5ZDg3OThmNDU1ZTFlNmIxZSBsZWdhY3ktdHJ1bmsKKzM1MjgzIDk1YTMyYzc4NjcyZGIzZTJjYmY4MDk3MjE2MThmYWEwZTg0ZGY3Y2UgYXN0LWJyYW5jaAorMzUyODQgMzU0OTVkMzZlYzk1N2FjNjQwM2ZhMzAzMGI3MDhhODU1OGZhNzE5NSBhc3QtYnJhbmNoCiszNTI4NSA4ZDQ5YzI5ZTlhYzFlODFhMTE3ZTQ1YjliZDljNjA4MWRmZjcxYjZjIGFzdC1icmFuY2gKKzM1Mjg2IDNiYTRlYThmY2UzZTUwMWYzMTFmYWVmYzAwNjFmMzUxNGZkYWY2MjYgYXN0LWJyYW5jaAorMzUyODcgZmE5ODEzNTA5NzZjYmVlZTVlNmM4ODlhYTA2NTdiMzg4ODdhMmYyMyBhc3QtYnJhbmNoCiszNTI4OCAyNWEzNWQ4ZjQwODM3YzAzYmZmNTExODZkZTEzMTM4NDUwNWVhZTIwIGxlZ2FjeS10cnVuaworMzUyODkgNzgzNjJhYWE0OTFkZmZlN2EyZWNhN2ExZTk3ODdlODJkOGMwN2FkYiBsZWdhY3ktdHJ1bmsKKzM1MjkwIDQyN2U4YmFhNzA1NzRiZTJlMTlhMDJhZmFhNDViMzRlYWJhYzE5YzkgcmVsZWFzZTIzLW1haW50CiszNTI5MSAzNWMwYWM4ZTA4NzEzNWY1YzU1OTZkNjYwOTIzZDI2YmMwYzNiZjhkIHJlbGVhc2UyMy1tYWludAorMzUyOTIgNWVlZWQ1MWU4MmM0ZGIxYzJmYTI1ZWYxYTAzZDY5OTMxMzVlNzMxZiBsZWdhY3ktdHJ1bmsKKzM1MjkzIGY2ZDhjZmU3YzAwMDk5NmQyMjk1ZDQ0ZWRlNmViOGQzMzM2OTcwMmQgcmVsZWFzZTIzLW1haW50CiszNTI5NCA3YzA1MmJlNDAxNjkzYjZlMzcyY2MxNWE4OWIyYzE4YWQ1MDMyY2YxIGxlZ2FjeS10cnVuaworMzUyOTUgNjRjMDhkYjhkY2U0NDYwZWEwYmQ3NDhhZTEzNGM5YTI0Mzc4Njc2NSByZWxlYXNlMjMtbWFpbnQKKzM1Mjk2IDc5YmM1NmJmOTIyMDc0N2Y3ZTk5YjYwY2NjNjRjZDA0OGQxYWYwMmYgbGVnYWN5LXRydW5rCiszNTI5NyBiMGM2ZjdjNWFkZTY1YTRmNDVlNTA3YTgzMjUwOGNjODBkYTJlOTk5IGxlZ2FjeS10cnVuaworMzUyOTggOWY0NWEyZDM2NjZkZTdkZGFkNDFiMGQ3OGNkM2E5Njk4OTZjNmEwNSByZWxlYXNlMjMtbWFpbnQKKzM1Mjk5IDBhMzM0YjIyNmYzYTMxMWQ3YjMxODcyNGMyYjVmOTlmOThiNzNhNGUgYXN0LWJyYW5jaAorMzUzMDAgZWM2MjMyZWQ5MTE1MjViZTQ0NGE3NGVkZGQ1ZDljMDIzYTY4YjFhZiBsZWdhY3ktdHJ1bmsKKzM1MzAxIGQ5OGQwMjU1YmIwZmZkOGU0ZTAzN2M3NTFiY2M3MmY5OTAyYjkzOWYgYXN0LWJyYW5jaAorMzUzMDIgYWIzMzlkODBjOWM5YWY3ZGI5MTZjNmM4Zjg4YzZlZTBiNTZjYzk4MyBsZWdhY3ktdHJ1bmsKKzM1MzAzIGE1NDU3YjYyMDIyNjU4YTllZjhkODkxNmJhYTJhM2FmMWNlM2NmZDcgbGVnYWN5LXRydW5rCiszNTMwNCA3MmU5NzBjMGFjY2MxMjI1ZDg0NTZmMzBjODFhZTFkYmMwZjE4ZDM5IGxlZ2FjeS10cnVuaworMzUzMDUgMzkxMDExODQwYTAzZjc2NzM4NmQwNzQzNWE1NmQ5NTJjNWJhNWJhNSBsZWdhY3ktdHJ1bmsKKzM1MzA2IDJjOGE0MzA2M2Q4MmM4ZGNkYmY1MzEzZWMxNGM2MDNhMjM4Yzc0OWEgbGVnYWN5LXRydW5rCiszNTMwNyA0NzBmOTVhZDY3NTA3ZGI0ZjVjYjRjMzk0MDcyNTJhM2U5ODJjNzQ4IGxlZ2FjeS10cnVuaworMzUzMDggOTdlYmU0MDE0ZWRjOWNlMDlhN2Y5YWUxYTcwOWM0NDQ2NTRmOTk5OCBsZWdhY3ktdHJ1bmsKKzM1MzA5IDNkYTZjMmFkYWQzNDNjYzYwOTBkNTI3ZWIxOTYwMjdlNTgxODUxYmYgbGVnYWN5LXRydW5rCiszNTMxMCBiZGYwMDZkZWU2OTg2YjgwNWVmY2I5YzgwMWI1N2RmZjg4NDg2YjI2IGxlZ2FjeS10cnVuaworMzUzMTEgYTE1N2NjMjBmMWI3ZGI1ZTdmYWFlNmZkZWQ3YjJmMTAwYWI0ODQ5NiBsZWdhY3ktdHJ1bmsKKzM1MzEyIDIyNjMyNTBkN2IyZmQzMDI1NjdhNGQ1MWNmOGJiNDQyZWQyNDI3MmMgcmVsZWFzZTIzLW1haW50CiszNTMxMyBhNmQ4ZDVhY2U2YTc4ZDU1Yzc3OTBjZjg0YmJjYjBkODU4YzM5ZWRlIGxlZ2FjeS10cnVuaworMzUzMTQgMzgyODMzOWFkZjg2N2NhZTZmMWJlMjY4M2M1ZmNiNGFmNDFiZGNiNCBsZWdhY3ktdHJ1bmsKKzM1MzE1IDExOWQwMTgyYmQ1ZTQzMzY0YzA5NDQyZmNkOGJkNDhjMzA2YjQ5MGYgbGVnYWN5LXRydW5rCiszNTMxNiBjMzAzZWMwMTljYjJjOGQxMDQzMDFhNjA3NzM4MjU3MTc0YTA2YTIyIGxlZ2FjeS10cnVuaworMzUzMTcgOWNhYzlkMGIxOWUzMTMxZTg1ODAwNThlZTNlYWU1ZWM2MDkxYzJhMSBsZWdhY3ktdHJ1bmsKKzM1MzE4IGNjNzk0MzE4OWE1YmNhYzEzYzAyN2Q2ZDBjZDBhOTJkMWU5ZTY3NDUgcmVsZWFzZTIzLW1haW50CiszNTMxOSBjNzVhNGVkZDFlNTI3ZjA2ZDRjYjBiOTYyYmZmNjA1YTYwZjA3MjZmIHJlbGVhc2UyMy1tYWludAorMzUzMjAgZjFlMGE3YzQ4ZjM2MDMzOWRiODM3NDNhZWU5ZjlmMWNlMzcyYWQxMCByZWxlYXNlMjMtbWFpbnQKKzM1MzIxIDZkZDM4ZTQ1ODZmZmZkOGE2NzVjMDQ0YzE4MTM1ODczYjNlNjE3ZDggbGVnYWN5LXRydW5rCiszNTMyMiBmNDU3ZjE4ZjU5MjIxMzlmYTcyNTcxYjAwN2ZlYTQzMzE4YTQ5ZmMzIGxlZ2FjeS10cnVuaworMzUzMjMgNDc1YmY0ZTc5MjBlZGZjYzY5ODQzZWI5MDBhNGIzMzQzYWEzNWZmYSBsZWdhY3ktdHJ1bmsKKzM1MzI0IDdhNzYxY2FkNzUxM2QzN2Q5YWEzMDYyYjlmZGJiZmZjOGRlZWM0MDMgbGVnYWN5LXRydW5rCiszNTMyNSA5MTFiMzIxNWQwZGM0NmQwYjA0MzgwNThlZDBkYjNmMWQ5N2I3ZmZiIGxlZ2FjeS10cnVuaworMzUzMjYgMWMwNjYzNzE2ZGIzNTdkYjQyNzlhOGYwMjYyM2JlZjkwYjNlMDdiMSBsZWdhY3ktdHJ1bmsKKzM1MzI3IDhhMzlhOThjODc4MDI0YzNkZjFhZWIzMGNkMDcwN2U2NDE0YmI5MTkgbGVnYWN5LXRydW5rCiszNTMyOCA0NjMyZmNjNTU0NGExNDZjY2Q0M2M4MWNmZjBjYmY2ZWJlZDZmOGViIGxlZ2FjeS10cnVuaworMzUzMjkgODM1MDJlMzFlMDZlMTlkMDVlOGFhYjY5YjAxOTcxZWE0ZDc3YjI5NyBsZWdhY3ktdHJ1bmsKKzM1MzMwIDdlNGUzMTM3YjI1MjdhMjlmZjFkYzcyOWEwNmE2OTRlZmUzYjU5NmQgbGVnYWN5LXRydW5rCiszNTMzMSA3OGY3NThhYmM3OWYyOWUzM2E2NWRiMTNhM2M0MDBhZmExNzBiMjA2IGxlZ2FjeS10cnVuaworMzUzMzIgOGVjM2FhODc5ZWVlYTBmZjkwMzQ3YTBhMzEzMDQ0NmY4N2IwODU5YiByZWxlYXNlMjItbWFpbnQKKzM1MzMzIDNjOWI0ZmMzZWYxNDdjMDk5Y2MyMGQ3MDY0Y2M4MDEzY2MyYmQ5MzUgcmVsZWFzZTIzLW1haW50CiszNTMzNCBjMzdjNDA3ZmFmNTJlZDkyYzEyZmQ3NGQ5Yjc2M2M4ZTFiYjJiNjE4IGxlZ2FjeS10cnVuaworMzUzMzUgMTliNmZlYzJlNTJkMjhiMjQwY2I1ZTQxMGRkNjE4MmY1ZTI4ZWRhNCBsZWdhY3ktdHJ1bmsKKzM1MzM2IDY1MGVmMDA5ZTA4YzE5NmZhNDZiZDcyNzRkMTNlZWM4NTI0ZTVmNDYgbGVnYWN5LXRydW5rCiszNTMzNyA2ODgyMjhhYjA1YWViNTc0MjUxMGMxYmRmNzlmMzJlYzZjN2E4NTI1IGxlZ2FjeS10cnVuaworMzUzMzggODE4M2RkMWE0ZmU2YmJjZjJmZTk2NGU5MDhkNGUyZjI0ZjMxODgzMSBsZWdhY3ktdHJ1bmsKKzM1MzM5IGE5ZmQ0NzY0NGMwZjc5OGNlNWMyM2M4NjQyMDczMTExNDk1NGQ2OTEgcmVsZWFzZTIzLW1haW50CiszNTM0MCBmMmQ5NGZmMTVhYzhmNDI3OWYxOWNmM2E4Y2M0ZjFiOWJkNGIyYmE3IGxlZ2FjeS10cnVuaworMzUzNDEgNWU3NDU1ZmI4ZGI2YjVmZTRhYjVmNWZkYTJmZGJmNGE1NTAwZWIzZiBsZWdhY3ktdHJ1bmsKKzM1MzQyIDIyMjFmOTYwMTgwZGY3MmVhNDhmZmZiNDEwYjIyOGM0MGE5ZWEyNzUgcmVsZWFzZTIzLW1haW50CiszNTM0MyAwYjEzNzYxODIwYjBjMWQ4ODk4ZWU1Y2NiZGIyZTYxOGRmYjk5NmNkIGxlZ2FjeS10cnVuaworMzUzNDQgN2FiZjQyNDc5ODgwZTVmNTk1YWY2ZWEzZDdiNzI1YmI4OTIxNmJhYSBsZWdhY3ktdHJ1bmsKKzM1MzQ1IDJjNjEyM2Q5MjVmZWU5NmZlZDUwMzdjMmZjYzVlMTQxMzUyZmM0OTYgbGVnYWN5LXRydW5rCiszNTM0NiA1NDY4NWQ5ZmZiODc2YmE0YmY5N2EyZjg4ZmE5MTNiMGNkN2FhNDhkIGxlZ2FjeS10cnVuaworMzUzNDcgNGIyZDZkMTMwMDYxOTk5YTk5ZGFkOGZmY2RmMjAzMjJkYjA0OTM5MyBsZWdhY3ktdHJ1bmsKKzM1MzQ4IDY5YWM2NzJiNDliM2VjN2FlZDMzZGI2ZGY1OGU5NjEyNTg4ZjVlNTkgcmVsZWFzZTIzLW1haW50CiszNTM0OSBjYTNjOTk4YWZhNTU1ZmQzM2RkYzU1MWIwZGQ2NGFmZGEwZDgzZDVjIGxlZ2FjeS10cnVuaworMzUzNTAgYzcyM2IwYzFhN2UxZGI0YWVjYTI4ZTUzYzIwMGY0NGJkNTE1NzZlMCBsZWdhY3ktdHJ1bmsKKzM1MzUxIDI2YTgwZjBhZjlmM2FlNzVhMjJkMDYwNzEwNjY1NmRlMWYzMzdjOWIgbGVnYWN5LXRydW5rCiszNTM1MiBjNjc1M2RiOWM2YWY4ZTJlZDA0ZmIwNjkwOTU3NDI0M2E3YmYzNGY0IGxlZ2FjeS10cnVuaworMzUzNTMgNzA2ZDZkMTFlZTM2MzgxOTNlYTZjYjNlMjkzOWFmOTU2NDU3YjAyZCBsZWdhY3ktdHJ1bmsKKzM1MzU0IDEyMzcxOGQwZGMwOWU0ODg1MzdkYzdiMjJiNTUyZWUxMDRlZmVkYzkgbGVnYWN5LXRydW5rCiszNTM1NSA2NWM1MDJiNjBiNGQxOWMxMjI3MThkMDFhNGM0Y2FkZDAzYjc0YjJlIGxlZ2FjeS10cnVuaworMzUzNTYgYWYyNWNjYzc1ZmVhY2I5ZTY0Yjc2ODI2YTE5Yzc4ZGI4NTk2MmZhYiBsZWdhY3ktdHJ1bmsKKzM1MzU3IDA1ZTFjMjdjMGE3NGQ4MWI1MGM0MjZlNTA5MjZjZDMyOWE3OTMwNmYgbGVnYWN5LXRydW5rCiszNTM1OCBjZDg3ZmY2ZWE4MTQwZWYzZTIxZDdmOTg0NzdiY2E2N2FhNGEyMzIyIGxlZ2FjeS10cnVuaworMzUzNTkgZjFkMGZhNjk4YjczN2I4YzM2MjJhZjUwOWI5ZGE0NjI1YjUxYWEwNiBsZWdhY3ktdHJ1bmsKKzM1MzYwIGQ3ZmYwNTEzN2NlYTNkZjU2NTIzM2IyM2ExMTJhYTk1YjRjYzU0YjQgbGVnYWN5LXRydW5rCiszNTM2MSBmM2NiNGNhZDU4NWU2Njk0OThmNzBjZDIwMWZhZDY3MDEzYWEwNTNkIHJlbGVhc2UyMy1tYWludAorMzUzNjIgMDZkODI0ZjVmMmM5OGZmNTVmYmY4ZDIyMDNkYWRlNTZhM2MzNjkyOSByZWxlYXNlMjMtbWFpbnQKKzM1MzYzIDE1NTUzYTFiN2ExN2ExMDI3NDEwMTRjZjc3MjMwYjQ5MjIxZTY3ZDQgbGVnYWN5LXRydW5rCiszNTM2NCAwNzFlZTBmZjc0Njc4OTY4YzJjYzg4NjUzMDNlOTk0ZjMwZDhiY2Q4IGxlZ2FjeS10cnVuaworMzUzNjUgMmZlZDMzMWRlMDE0YTRjMmNmOWU2NzAzZDkwMWQwYjg3NTY0NTM0NSBsZWdhY3ktdHJ1bmsKKzM1MzY2IGZkMjEwM2FlNmYyOWExZTA2YjNmZjhjZjU0OGFkYjY0ZmNhMmQ0YTIgbGVnYWN5LXRydW5rCiszNTM2NyA4ZWNlZThmNDcxMDhjOGI1YTc1Y2RlZGNkYzJkNzY1ZjA2MWNkZWJkIGxlZ2FjeS10cnVuaworMzUzNjggYWU4ZGJmNTAwMTcyYTFhYzFiOTM1NGIxOGUxOTUwY2NlMTcwYzQyYyBsZWdhY3ktdHJ1bmsKKzM1MzY5IDgwYmQyYjg1ZWQ4YTFlOTk3OWE4ZTY5YTQzZTdlZTY4YmJmNWNkNzkgcmVsZWFzZTIzLW1haW50CiszNTM3MCBkZmRiYzAwNThkODU5MGUyMTg1OWNhMDM2NzY1YWE0ZWJmZDdlZjk2IGxlZ2FjeS10cnVuaworMzUzNzEgMDk3OWZhMDYyZGViZmU3ZDZjNWYwNTRjMjg3Y2JiMmZiYWI0M2VmOCBsZWdhY3ktdHJ1bmsKKzM1MzcyIDI0OGJlYjk5YTMwNGM5M2ViYTQ2NDBkZGE4MjhlMDNiMzBlNDYzMGMgbGVnYWN5LXRydW5rCiszNTM3MyA0NmRmMDhlYjA4MzllOWNmNTZhODBmMDg3MGM5YTYxOTEyN2I1MjBjIGxlZ2FjeS10cnVuaworMzUzNzQgYzJkZjhhNWMzNTdlMDBlNjAxZDNiZTBhYzE0NTA2NTM2ZmRmMzEwYyBsZWdhY3ktdHJ1bmsKKzM1Mzc1IDczOWFiOWRlMmExYmFhZDVmZTExYjg3ODBiM2E2ZWFjYTIxMTJjMjAgbGVnYWN5LXRydW5rCiszNTM3NiA1YjM4OThkOWJhNTk3N2FjNjgwNGJjYmI4Y2YxY2FhYWMwMWJhNTllIGxlZ2FjeS10cnVuaworMzUzNzcgZWJiYTU1ODJkYzBkYjUzNjFmNGI0MmMwMzBlZjRlMjUyNjM4YTFkYiBsZWdhY3ktdHJ1bmsKKzM1Mzc4IGJjMDA2NjgyYWNiMjFhMWUxZWRjZTFjMDEyOGY1YzUwNWE4ZDEzZDcgbGVnYWN5LXRydW5rCiszNTM3OSA4ZjYwMjE3YTc1NDc1OTlkYTIwYTVmMjQwZWE3YzNmNWI1MTVjZDhlIGxlZ2FjeS10cnVuaworMzUzODAgNDc4OTBjMzk1ZWJhYTIwZTRiZTFjYjdmNzU0YzRmYjRjYmNiZjQ1YyBsZWdhY3ktdHJ1bmsKKzM1MzgxIDYzNWVlYmM0NzNiMDY1Yzc1NGM4ZmNlNDNkN2EzMjM2YTQzMDExZTUgbGVnYWN5LXRydW5rCiszNTM4MiA3MDgwYTAyMTBjZjE4N2YyMDljMjMzM2IzNmM1ODkzYjNhMDU0MTYxIGxlZ2FjeS10cnVuaworMzUzODMgZDM0ZTdlYWY0Y2Q2YTc0N2U4MzZmZWQ2MWNhOTBhYWU2OGMwM2M1ZiBsZWdhY3ktdHJ1bmsKKzM1Mzg0IGI3OTU0MzNlMGJkOTE5NDFkOGQ3YzBhOTE2YWQxMWI5M2EzZWQ5YzkgbGVnYWN5LXRydW5rCiszNTM4NSAxYjAyYzc3Y2RjZmUxMzVjMGMzMjc4MjRmZjg5ZmNlMjI5YzYxMjhiIGxlZ2FjeS10cnVuaworMzUzODYgMTU0M2FmYWIxYjY3MmIxMjQ3YjFiZTg2MDViMTg3NDdhMTlkOTJjNyBsZWdhY3ktdHJ1bmsKKzM1Mzg3IDdlNGRkOTNmNGIyNzEzMTI2NjA2MTk0MGE0YTg4OGQ0ZDFlYTRkMzYgbGVnYWN5LXRydW5rCiszNTM4OCA3MmUzOGJkOTRlNTY5OGY2ZTMwOWFmMzIwMjA5ZjIzOWQzNzkxMzBjIGxlZ2FjeS10cnVuaworMzUzODkgMzE1NzdjMjgxNWRlNTFkOTdhMjg0NmVmNzQ5MzFkZjU3OGFlNWIzNSBsZWdhY3ktdHJ1bmsKKzM1MzkwIGI0ZTRkYmQyNGZlNzdmYzRlMmViNmE4YTZjZjJjMDk4YzkwZjU3MzQgbGVnYWN5LXRydW5rCiszNTM5MSAyMjhkMjY0YzVmYmJkOWQ4YWIxNTM2NDU3ZmEyODlkYmQyY2Q3NzlhIGxlZ2FjeS10cnVuaworMzUzOTIgZGQ2OWUzZjUyMjViYWZlNTA4OTgxYWMyZGQ2ZGYxYjllZjVmMmFhMSBsZWdhY3ktdHJ1bmsKKzM1MzkzIDViZDQ1NTYzOGM3YThhNDlkNGRmMzI5YThhMmM0YTE3MzkwZjMwYmQgbGVnYWN5LXRydW5rCiszNTM5NCBlYzZiYTAzYmE5NjI3ZGViOGYzNDZhMDY0YzAxY2M0ZmM3ZWY4ZjgyIGxlZ2FjeS10cnVuaworMzUzOTUgMDRlYjJlYmI0NmUyN2ExZjI2ZmI4NzcwNWVmOWE4NDdkOWY5MDI2MiBsZWdhY3ktdHJ1bmsKKzM1Mzk2IDk1YmZiNjUzZmZmYmEwMTIwODlhMjNlZDRhOGYzNTllOTY4OTJjNjcgbGVnYWN5LXRydW5rCiszNTM5NyAxMjUzZjZlMjBjZGVlMDViNGQ2ZDc3ZjUyYzc3ODk0OGI4MWNkYzZhIGxlZ2FjeS10cnVuaworMzUzOTggMGQ1M2VjZjIyZDkxNTIzZGE1MDM2NGZjM2JlMzFlM2E2ZTg2NGZhNiBsZWdhY3ktdHJ1bmsKKzM1Mzk5IDA0NzE0ODA4OWMzNWQ1OWU3YWNiYWZiYzUxYWY3MzI4Yzc3MTljYjggbGVnYWN5LXRydW5rCiszNTQwMCA0MmY4ODIwNjg2YzllYmE3ZDk5YTkwZGI4NDNiMGQxYmEwYTg0MDAwIGxlZ2FjeS10cnVuaworMzU0MDEgZWVhNjc0YmY3YjU5YTg2YWUyMTU5NmY4OTkzMzU5MjNkNGY0ZDRmOCBsZWdhY3ktdHJ1bmsKKzM1NDAyIDMwZTMwNWJmZGRkYmRjNDg4ZDc3NTFiY2U1NjFmOGFkMDY1MmZhNDQgbGVnYWN5LXRydW5rCiszNTQwMyBhMGZiMjdiNDRkNzgzODNhMzhiZmY3YjIyZjIwMzhjNWJjYjU3MzlmIGxlZ2FjeS10cnVuaworMzU0MDQgZGYwNjQ3OWM2ZTdjZDExZDJkNDcxN2Q2ZmM2MGIzYmRhMWQwMzFlNSBsZWdhY3ktdHJ1bmsKKzM1NDA1IDU3NjBiNGRkM2EyMjRlNDc3ZTFmMWFlNTZhNWZmYzU0NjkzYmYwM2EgbGVnYWN5LXRydW5rCiszNTQwNiA4M2IwMzgyZTBkMzYyNWFhOWQ3NGIwNzQ2Mzk3NGJlZWExNWM4MTEyIGxlZ2FjeS10cnVuaworMzU0MDcgZDEwYzc3OGFmMTY3YTBmM2NlZjVmZTA1NGQzNzhhMDIwNzMwNjRhYyBsZWdhY3ktdHJ1bmsKKzM1NDA4IDc2OTQ0MDg0ZTc1NmExNmI4ZDU4MWM5MDRlMTY0ZmY4Zjg2ZTQ1ZjkgbGVnYWN5LXRydW5rCiszNTQwOSAyNDM2NDJiYmQwM2YzNWU0NWUxYzZhOGUzOTc0ZWQzMTM0MDcxMWNiIGxlZ2FjeS10cnVuaworMzU0MTAgYmU3ODJkMDdjNTE4ZDI4YjI1ODE2ZmE4NDA2YWJkZGViNTE5NGUyYSBsZWdhY3ktdHJ1bmsKKzM1NDExIDM1Y2I4MTE0YjQ1YzI1YjBlOTNhMjI0MGM3OTQyZjY0M2FiZjBmNDIgbGVnYWN5LXRydW5rCiszNTQxMiBlZjA2YzIxMjRjYjA2ZTFmNTA5M2Q1M2NkY2QzNzYwZmE3MjVlOWM1IGxlZ2FjeS10cnVuaworMzU0MTMgZjI2MDA0NDhlODVjOTUwNjU3N2M2MDc1YjAwOTIxYThmOTJkYWZkMSByZWxlYXNlMjMtbWFpbnQKKzM1NDE0IDdmZmZkYjk0YTE3MmRhNDVkMjFjMWU2ZDZmOGY1ODI1OTA1YjA2ZGMgbGVnYWN5LXRydW5rCiszNTQxNSBmMjZkODI4NmE0M2U5ZTQ1YzRmZjBhOTIwZmY5NzAzNGFlYmEyZjE1IGxlZ2FjeS10cnVuaworMzU0MTYgMDM2OTNhZjQ2YWZiY2ViZTY2ZTg5OTA5ZjY5MGE2MDQ3ZTNmNTdkMiBsZWdhY3ktdHJ1bmsKKzM1NDE3IDI2Y2YyNTg2ZjJmZDI5OWUyMDc2OWQwODRlMzQ4YWM1NDdhMGExNjYgbGVnYWN5LXRydW5rCiszNTQxOCBiODk5MmU3ODE4NDBhMDg1YTM0MmM1MDUxMzI4ZmE2ODVkZjUwNDdhIGxlZ2FjeS10cnVuaworMzU0MTkgMjA2ZDg1NzVmNjQ0MTlmYTY2ZDM5NmExOGIzOTYxNzU5YmYxYzI0NyBsZWdhY3ktdHJ1bmsKKzM1NDIwIDM1ZjU2ZTA4NzI3Zjk1OTUzM2M5NmI1M2NjYzA1NGY5MDAzMmQyOWMgbGVnYWN5LXRydW5rCiszNTQyMSAxNTJhZGFmNzY1ZWIyZjA1ZjA1MjE4OTAzYWU2ODIxZDRmMzJiOGY1IGxlZ2FjeS10cnVuaworMzU0MjIgODhlOWMwNDQ0ZDRkZGE3ZWM3ODYzYjI3MmM1ODcwOGRiNzZhYjdhYyBsZWdhY3ktdHJ1bmsKKzM1NDIzIDNmNjkzYTc3MjY5NGUyMzExOTcwOGY4NGRlODQyNjg4NzhjYWJmOWEgbGVnYWN5LXRydW5rCiszNTQyNCBiYTk4OTk2YjRkNTBhODFjYmI2MGU1OWVjZWIxNTg0OGQ5ZTViYzdiIGxlZ2FjeS10cnVuaworMzU0MjUgOWE0YzQ5YzVhYzAzY2E4YjBlZDE3MTFlNDE1YjJlM2RiNTE4OTkyZCBsZWdhY3ktdHJ1bmsKKzM1NDI2IGFlNjAzN2EzYWRjZTk5NTU2YzUyMDM1ZWRkZWM4ZWZkOGM3ZWNkYWIgbGVnYWN5LXRydW5rCiszNTQyNyBhMzgzMGFlMjk0YWU2ODNkYjIxYzQxYTQ3ZmU3NDg0ZGM1NGQyNmMwIHJlbGVhc2UyMy1tYWludAorMzU0MjggYWU2ZmRhOTYwZDM5YmMzMDQ5ZGEwNTQwMjliMjlkMWVjZDQ3MDAyZSBsZWdhY3ktdHJ1bmsKKzM1NDI5IDYwNmYwNDczYTk2Njg3ZjQ4OWY1ZmMzYzM4MDIxNDk1MzQ0ZTQxNjMgbGVnYWN5LXRydW5rCiszNTQzMCA2YmNjYTQ3OTE4NDk5YjVkZWYxMDg4NGJjOGMxYWFjZTQxNWJhNDJhIGxlZ2FjeS10cnVuaworMzU0MzEgMDhjM2I0OTA1OTYxZGY2MDMyZGI2NDRkN2E5MTM1ODIzMDc3N2I0OSBsZWdhY3ktdHJ1bmsKKzM1NDMyIGE2YmNmNGRmMWE4NTc2ZGJhOWRkZWQ1N2U1ZTkwMWExNTQ3ZTY5ODUgcmVsZWFzZTIzLW1haW50CiszNTQzMyA1MzBhMGRlMzUxN2FhZjBlOTgzNzgzZTlhNzVhYjU5MTkxNWY0NTI4IGxlZ2FjeS10cnVuaworMzU0MzQgMjgzMGQ4ZTFhZjE4NWE1OWRjOTIzNTg4MWJmNjlhZmEyNDUwMGJkZCBsZWdhY3ktdHJ1bmsKKzM1NDM1IGY3Mzc0ZTNiMjc5YTg4YzczMjIxZjAwZGM5OTQ1ZGIxMGJkYzc3N2UgbGVnYWN5LXRydW5rCiszNTQzNiAyYmZjODg2NmVhOTkzODY4ZWMyMjlmNzE0YjUxNDNiNDQwZWZkMTkzIGxlZ2FjeS10cnVuaworMzU0MzcgN2JiMDMwMDY2ZWE0YjY1MDk3MzExNGVlZGU4YTQ4ZGM2NjY1MzBkMCBsZWdhY3ktdHJ1bmsKKzM1NDM4IGMwYTU0MmExZmMxYzhiOWI3YmNhMGFlNjVkNTA3NzE3NGEyYTljZTggbGVnYWN5LXRydW5rCiszNTQzOSBkYTc4Yjk2YjZhYWJlYjAzZTU4ZjlhYzIzNWY5YWI2MGEzODg3ZTg3IGxlZ2FjeS10cnVuaworMzU0NDAgYmIzYmNjYjNiNzdkNWFhMDAwZjUxMTYyOGMzNmE1MjdhYTcwODIzYiBsZWdhY3ktdHJ1bmsKKzM1NDQxIGNlODNhYjA3ZWEwNzMwODg2NGY2MWQ5ZGMwZjhmM2QzZTNmM2Q5MmIgbGVnYWN5LXRydW5rCiszNTQ0MiA2Yjc1MDYwNDY0ZjQ0NjI3Zjc3ZDk4NTllZTk1NzkzYWNhNjY2YjhkIGxlZ2FjeS10cnVuaworMzU0NDMgYzMyMzgxZjRkYzZmMmU1NDQ3ZDU2ZGIyZDBiMzUzNDdjM2M5ZDk0ZSBsZWdhY3ktdHJ1bmsKKzM1NDQ0IDAxNmYwMDZkNzFjYzNmYmMwZmU0ZWZlMzkzZDY1OTg5YTYxOWUwYzEgbGVnYWN5LXRydW5rCiszNTQ0NSBhYWZlNWZlZjU4YmFiN2MxMjNiM2RkOTc2OTQ3MWJmNzk3NzlkNTMyIGxlZ2FjeS10cnVuaworMzU0NDYgODIzMjc5YWU0M2ViMTBhZjk2ZjA0NDVkOWZkZmRlZTU2MDc3MTBjNiBsZWdhY3ktdHJ1bmsKKzM1NDQ3IGE4ODVlNGQ2NGFkMGI4OTk0NzIwOTIxOWY3YTA0OTlhOTI2Nzk3MjMgbGVnYWN5LXRydW5rCiszNTQ0OCBjZTcwZjE0NDZmMzk5ZTEyZTcyMmI5OGEwMjI3ZTk3M2U3NWEwN2FkIGxlZ2FjeS10cnVuaworMzU0NDkgMGZiNTA2NmZjMmE3ZmQ0NjhmMGU1YjVhOTcwOGVmMTcxMjgwZjQ3ZCBsZWdhY3ktdHJ1bmsKKzM1NDUwIDEyYmYzN2E1ODAxNWFmOTM2OWI4OWE3N2JkY2IzNGUyMjc1NjkyYTYgbGVnYWN5LXRydW5rCiszNTQ1MSA1ZThjNmYzOGUxNWI1YWNlMTVjYTU3OTcwMGQxZjhhYTRhN2ZjZDFhIGxlZ2FjeS10cnVuaworMzU0NTIgZjdiZmQ4ZjkxYzJiOTBjNzQyMzFjZmMyZDM1M2YwYjEyZTRlZTcwMCByZWxlYXNlMjMtbWFpbnQKKzM1NDUzIDZkOGExNDE0ODE1OWIxYmQ2MmEyMjE2M2I3NjIxYjMwMTY1NDM0OTIgbGVnYWN5LXRydW5rCiszNTQ1NCBhZDVjNjA4NTAyM2UyNDkzMTM5ZTE2YzEwMWQ5YTM3YTQ3M2Q4MmJhIGxlZ2FjeS10cnVuaworMzU0NTUgMzMyZDNmZmFkZjI4N2ViMjRhNGVjZmNjZDEwOTIxOGM0N2YwNWQ2MCBsZWdhY3ktdHJ1bmsKKzM1NDU2IDUwNzQyMmVhYTc2MzU5M2U3Yjk1OTkwY2M4ZTM4MGUxZDdjOWMzYjIgbGVnYWN5LXRydW5rCiszNTQ1NyA5MmQ0MDIyMDllOTBmOTc3ZWYzNWI4ZjI3Y2UyOTQ3ZjAzNTJkZTAyIHJlbGVhc2UyMy1tYWludAorMzU0NTggZDA4NzcyNjQxN2VhOGExM2VkNTM5ZTVjNDFhN2YxZTIyMmYxYTYzNCBhc3QtYnJhbmNoCiszNTQ1OSAwM2IwZmQxY2Q3MjI1ODRhYWI3YjZkOTY5ZGY3MjZlNGQzNjBiY2U4IGxlZ2FjeS10cnVuaworMzU0NjAgNmJmODc5ODVhYTFlOThlMGE4NGUxYjc2NWVlZGNlNGNhNjhiMjc0OSBsZWdhY3ktdHJ1bmsKKzM1NDYxIDVlNjNjMmU5Yjc5MjUzMTM3MDIyYWRhZGEyNjgzZTU0YTk3MGY2MTkgYXN0LWJyYW5jaAorMzU0NjIgY2ViNmFhZGRhYmNjNWQ5YTZmNDFkYmM1YjJmMWFjNzY5YjJiOGVkYyBsZWdhY3ktdHJ1bmsKKzM1NDYzIDViMjI0N2I5NTMyM2MzMjdkNTBiM2FhODRmYjc2MmZkOGFlNWNmMTggcmVsZWFzZTIzLW1haW50CiszNTQ2NCAzNmEyZDBlOGE5OTMzNTA0OWQyNjI5NzNhYzMxY2IyYTMyMDQ3ZDUxIGxlZ2FjeS10cnVuaworMzU0NjUgOTNmYjQwODFkMTA3ZmI0ZTk5YjUyNTgyMTgzY2ZiMjYxOWQ3ZDUyZSBhc3QtYnJhbmNoCiszNTQ2NiBmZmFlMmYxZmRkNDZjOGM2ZDE4OTllMTNjNWU5M2I1NzYzNTIyNmVhIGxlZ2FjeS10cnVuaworMzU0NjcgNDkwZWI2NGJjNWM5N2JiNWIwOGE2MmFmZDNiNTU3YjMyZGE4ZmQ1NyBsZWdhY3ktdHJ1bmsKKzM1NDY4IDE3OWUwNDMwN2VjZDNkYThhZjIxZTQxMjIzZjhiMGRiMzFiMmU3MTUgbGVnYWN5LXRydW5rCiszNTQ2OSBjZWFhZGJkN2YxOWE3ZTI2ZjQ1ZWE4NTFiMTdiMmU1NjkxY2VlMzZiIGxlZ2FjeS10cnVuaworMzU0NzAgZDk0OGRlZTZmNGExYmVkOWJlMTk1ODU4OThlMzE5YjFkM2Q2N2UwOCBsZWdhY3ktdHJ1bmsKKzM1NDcxIDBiMDA4NmQ1M2I4ZTg3OTU3NjE2YzQ5YWIwNDY4MTVlZjNmY2NiMjcgbGVnYWN5LXRydW5rCiszNTQ3MiBjNGViZjdjYTFiZGQwMWZkZDZmNTBhNTBmMzQzNWNhMmFiOWUzZTQ3IHJlbGVhc2UyMy1tYWludAorMzU0NzMgNjViMGM3YjU2MWRhZjQyZjY3Y2YxNTQ1OTc2Njg0OTViOTIwZDdmNCByZWxlYXNlMjMtbWFpbnQKKzM1NDc0IDUyYmExYTIyY2MyZTFiMGY4MjIyOWVlNTRkZjhjOGJkY2Y0NTQ4MzkgYXN0LWJyYW5jaAorMzU0NzUgY2Q0NzY2YjA2MzdlYTFkMjJiMmY2YjA1MWY4NjIxNmI5YWJhYzU0MCBsZWdhY3ktdHJ1bmsKKzM1NDc2IGQ2M2M1NjJlYmJlNTc0MmQzOTE2Y2M3ZmExMGRjMTRkZmUyMTc3ZDggbGVnYWN5LXRydW5rCiszNTQ3NyA5MTI2MGZiM2M4MTQ3NjM3NzFlYWZmNDRiYzdmODA5NzIzNzdhMTZkIGxlZ2FjeS10cnVuaworMzU0NzggY2M3YTlmZTgwYjFiNzU2MGY3NzY4ZjVjMzZlMWRlNjY4NDI1ZDRkMyBsZWdhY3ktdHJ1bmsKKzM1NDc5IDgyMGJiODE4ZDY5ODRjNTliNmIyN2MyYjM4NTA3NmFjYmRiNzg2MmIgbGVnYWN5LXRydW5rCiszNTQ4MCA2NjBmYzI0MmE3NjY5YjA2YmNlZWM4Mzg3MWE2YzljYjIwNDRmZTE2IHJlbGVhc2UyMy1tYWludAorMzU0ODEgZmQyNmYyOWU3ZWFiOGYyZmUxYTQxZDU3Yjk2ZWVhMGU5ZjY3ZjBmMSBsZWdhY3ktdHJ1bmsKKzM1NDgyIDA0MjBkM2NmZTRhNGFhZmRjMTNkOGZiYWQzZjUzODlhZTE0YTQ3MmEgbGVnYWN5LXRydW5rCiszNTQ4MyA4ZWE0NWNmZTE3ZmM2MDM4ZmJkMGFmYjI0M2VmZWUxMTcyOGU1ZGJiIHJlbGVhc2UyMy1tYWludAorMzU0ODQgYzgzNzk1MzI0MDQyNzQyYzYzY2ZjZDM4OGM0NjJiZTIwMzI2ZjYxMiBsZWdhY3ktdHJ1bmsKKzM1NDg1IGZhZmZkOTU3MmQ4ZDMyMzlhMDI1MThmNjUzMzU1MjYwZmVlNWMzYjQgcmVsZWFzZTIzLW1haW50CiszNTQ4NiBjNzU4NzY0MzJmYzZiNWFiNmRmMTEzNjA3YWViNjM1ZTI1OWE2ZmVlIGFzdC1icmFuY2gKKzM1NDg3IDI4NDY2OTQwOWJlYjQ2YWJkMWM1YWRiZDM2OTU3MzI4YzgzMzk1OTUgcmVsZWFzZTIzLW1haW50CiszNTQ4OCBkNjlmYjM1ZjFlYWVhNDM4YTc1Y2Q4MmNhOTc4ZWI2ZDk0MGQyMGQ0IGxlZ2FjeS10cnVuaworMzU0ODkgN2E0MzRmNDkzYzNlYThiODllZGM5NGUzY2U2MWJhZmJlZjgwOGYxNCBsZWdhY3ktdHJ1bmsKKzM1NDkwIDYzODY1NjExZWQyZmUzNTI0NTAyY2YwNTdiOGRhZDM2ZjI4MzZiNTcgcmVsZWFzZTIzLW1haW50CiszNTQ5MSAyNmQwZmQwM2Q1YjMwZWRhZjY5MTNhY2ExOTJiOTYxZDZkNDQyMDYxIGxlZ2FjeS10cnVuaworMzU0OTIgYzRkOWE5NmJlMmRkY2E0NTM1YjQzN2U5NzEzZmVlZGQ0MzFhZTUwMiBsZWdhY3ktdHJ1bmsKKzM1NDkzIDY1MDkzNTRlNzg3NjlkYjlhMmE3NmUzMzdlOTY2NGM4N2U3ODFlYTAgbGVnYWN5LXRydW5rCiszNTQ5NCAxZWMzZDY5ODRiMGYxMDg3NzYyOGUyZGE3NjJhNjM4YTgxODkzYTJlIGxlZ2FjeS10cnVuaworMzU0OTUgYjk2NzYyN2EyZjRmZTljOWFkNTRmYmQwNDA2YjAzMzI3OGVhMzAzNyBsZWdhY3ktdHJ1bmsKKzM1NDk2IGNlNjhkN2MwNjI5Y2MzODE2NzBlYWJhMTc2YWZkZWU5ZTVjODhmYmUgbGVnYWN5LXRydW5rCiszNTQ5NyBlODMxMjQwMmM4MTNkOGU4ZDMwODIxNmJlZmE5OTlkODZlNDczYTNjIGxlZ2FjeS10cnVuaworMzU0OTggYzAyMzUwMWMzOGQ3ODNlOWEzNDBlZmIzYTdjOTIwNjE3MTBhNGNmZSBsZWdhY3ktdHJ1bmsKKzM1NDk5IDkyMGFkNDQ2NWFhZWE1YTM1NDE1ZmJhZjlmYjc5ZjkzMmM3ZGYyMGYgYXN0LWJyYW5jaAorMzU1MDAgZDg5ODIzMmRjZGRiYmE4MDU4MjJmYmQzY2QwMTQwODM3N2M4MTZmNCBsZWdhY3ktdHJ1bmsKKzM1NTAxIGVlMGJhMDBiMjc3Y2RkMjM4NTkzNWM2NmFhZjIwZjRkOGM0M2VkNzQgbGVnYWN5LXRydW5rCiszNTUwMiA2ZmNiZjZhYzY5OWE4OTAyOTY4OWExNzhlMGFjZTMzYzUyMjViMGI5IGxlZ2FjeS10cnVuaworMzU1MDMgNTc5NjViMmRiMjBjNmRhZDljOTc5MDYyOGYzZTY5ZTc3NDk4MDM5ZSBsZWdhY3ktdHJ1bmsKKzM1NTA0IDA3YTJiNGM1ZDUwMzQxNzcyZmJjMmFlZTVlM2MyODg2ZjgyOTQxMzIgYXN0LWJyYW5jaAorMzU1MDUgZGJhOGRiNDEyZTM1NDk5NmIxODM4NTBkYzM1ZTY4NDJhYjIxNWU4MCBsZWdhY3ktdHJ1bmsKKzM1NTA2IDQ5ZWMwZDhmMDhlY2QzZjcwNTc0MWUyMTBiZmZmYjEwZWVlN2EzOGMgbGVnYWN5LXRydW5rCiszNTUwNyBhZTAwZDJkMTI3ZDFkMGE3ZDc5NWU2YjQ5Y2UyZDkyOTZlN2YxYzVkIGxlZ2FjeS10cnVuaworMzU1MDggMWY4MDZjYmUyY2UwNDgxYzc3ZWFhMzU4M2I4OGIyN2QzZDQzMWZkOCByZWxlYXNlMjMtYnJhbmNoCiszNTUwOSA0ZWI0NThjMzk0MWQ1ZTg1ZTczMzUwNmZlMTJkMTdlM2I3MTQxMTliIGxlZ2FjeS10cnVuaworMzU1MTAgMzEwMWMwMGY3NTQ3ZjAxZWNlNDlhZDRlMjg4MWFhY2IwOWU3YTQwOSBhc3QtYnJhbmNoCiszNTUxMSBjMDYxZjI1Zjc0ZTBjZGViYTdmMjZlYmY3MDUzNTk5ZWI5YWI3YWIwIGxlZ2FjeS10cnVuaworMzU1MTIgOTA3NDUwZTRiYzY3NTdkYTFhNGE3YmQ4ODQ0NmNmYTYyYWZlYTZjMCBsZWdhY3ktdHJ1bmsKKzM1NTEzIDM0NzVlNDU2ODQ3MTA5NTg4ODdhYjgzNGE2ZTdjZjAxNGRhYTdiMjMgbGVnYWN5LXRydW5rCiszNTUxNCA4YmYxNjNkMDZkMjlhZjhhZWU5Y2ZhZTc1N2ZjZWJmZDJiYjQ0ZWRkIGxlZ2FjeS10cnVuaworMzU1MTUgN2I2YzgyMjk3OTliYWU5YmYxYmJiYTZiYzU1ODViY2NiNjlhZDRhMSBhc3QtYnJhbmNoCiszNTUxNiA2NzFhZGVlNmEzZTNiMTFkZDdlY2EyYjRmODZkM2M5NzkwY2JlMTNkIGxlZ2FjeS10cnVuaworMzU1MTcgZjU0Y2RiMDFhMWFkNWRmNDRmMDlhZDE4OTMzMTNlZmQ2ZmI5ZDFmMyBhc3QtYnJhbmNoCiszNTUxOCAxNGY4YzkzM2Y4OGMwOTljMDA2OTY2MTE4ZjdiOTIyNGExZTJhNGY3IGxlZ2FjeS10cnVuaworMzU1MTkgZmU1NTQxYWFlMmQ4Zjg3NGY3MTNjYjc2MjMzNzgxYTlmNGU2NDM1YyBsZWdhY3ktdHJ1bmsKKzM1NTIwIDFkM2U0OGNjYWQ1NzNhNTQxYzMxZTNkNzliYjQyMzY1YTcwNTc3MmQgbGVnYWN5LXRydW5rCiszNTUyMSA0NTE0NGNkYjc3OTRhNGE2NWM5N2EzNjM4MzFiN2Q4NDQwM2ZlN2RjIHJlbGVhc2UyMy1tYWludAorMzU1MjIgZWYxODA4NTZkZjc2MTkxOGZkOGJkZGYwY2M3Y2Y2MDU3ZTgxNGE0YiBsZWdhY3ktdHJ1bmsKKzM1NTIzIGMyYjAxYWE0OTBlMTQ3YjViNzNjYmNiOGNkMzgyMTY2M2I4ZTQyOGUgbGVnYWN5LXRydW5rCiszNTUyNCAyZWIzMTc1ZmM1OWI3MmYyY2U5YWNjY2U2ZmM4OGU4ZThkYjdjMjk3IGxlZ2FjeS10cnVuaworMzU1MjUgOGE3MTRmZWNkMDU5YmRkODM3ZDg3YTYzODVmOTBkMjMwZjQxZTc1NiBsZWdhY3ktdHJ1bmsKKzM1NTI2IGE1YmQ4YjRmM2U1NWYxMzI5NTM2NjE4YTUwZjY3MTBlNzY5YWJmMDggYXN0LWJyYW5jaAorMzU1MjcgNTU1ZGM4NDYyMjZkZDI4NjEzMjI1NjlkYjY5NGI5YmI0ZWUwY2M5ZiBhc3QtYnJhbmNoCiszNTUyOCBiMzlmZGM5YzgwN2U2NWIzMjg5Mzc0MzcwN2E2ZDkzNDc1ZmFmNzFmIGxlZ2FjeS10cnVuaworMzU1MjkgMTQwNzQ4NDgzNjEyMGI1MzM0ZmY4MWQwMDEyZGNlYzczZDliYWFlNyBhc3QtYnJhbmNoCiszNTUzMCBhNzM3ZjdhMGYyYjhiYWRhNGQzOGYwYjc4MjFkMTY4ZjcwYjI3MGRlIGxlZ2FjeS10cnVuaworMzU1MzEgMTZiZjQ4NGIzODY0OTQ3NDgzMWU2MGRiNmNjZDVhMzMzMTc4NWYyNCBsZWdhY3ktdHJ1bmsKKzM1NTMyIDNlNDllYjMyNDcwYmI3ODdhYWNkNGNiNmFkNWUxNDQxNGM1YzA3NzIgbGVnYWN5LXRydW5rCiszNTUzMyBiZTVkMmEwN2JjMjY5YmFkYjE0YTdjN2Y0NmNiNzUwNTZlZTFiNWE3IGxlZ2FjeS10cnVuaworMzU1MzQgOTUzNmIyOTdkODNjMmQ3OGU4ZDYzMTQ2Mzg3OWIwNGFkNDI3MTAwNCBsZWdhY3ktdHJ1bmsKKzM1NTM1IGY0YTRhYzczMzFlYzkxZTg0ZDhmZDRlOWI2NjNmODU0NzFlMDI1ZmQgbGVnYWN5LXRydW5rCiszNTUzNiA2NDI2YjM3YmIyYTBmZGE4MjMyZTdjNmMxYTRlMDZjYWVlMDFiMWJlIGxlZ2FjeS10cnVuaworMzU1MzcgMzQ3M2RlYTNhYTRjMDUwODc3N2E2NzliMzhhY2M0MzQzZWY5YzI4ZSBsZWdhY3ktdHJ1bmsKKzM1NTM4IDVlOTE2ZDQ2YTNmYjY5MjYyMDNkMmQxZTE5NTA3N2ZkZmE4ZWQ4YjQgbGVnYWN5LXRydW5rCiszNTUzOSAyNGUwNzBlOTViZjhhMWQxNTM3M2U0MmQ0NWUzNmU4ZWZlODU3ZDQ0IGxlZ2FjeS10cnVuaworMzU1NDAgNzVhOTFmZDhiNTBjZmIwNjgxY2Q0ZTNmMDI0OGZmYmU1MTFkMzE5MiBsZWdhY3ktdHJ1bmsKKzM1NTQxIDEyMDE5MjUxNjAzMzkyYzMwM2E4NGFkM2Q0NDM5M2YyZDQ5MWI5YTUgbGVnYWN5LXRydW5rCiszNTU0MiA5ODE3ZGVlNWQ5ZGYwODVjNDJjMWM2YWM2ODAwYzQwOTliZmNmOGM3IGxlZ2FjeS10cnVuaworMzU1NDMgN2Y0NjRkZDY4MGFhYzA4ZTRhZGJiN2VhMmNiZjc1YTczOGQ4ZjI5ZiBsZWdhY3ktdHJ1bmsKKzM1NTQ0IGVmNTkxZTdjMzRmZDhlMDlmNTVmZGRkYWVmZWY2MWU4YjhiMWVhY2MgbGVnYWN5LXRydW5rCiszNTU0NSA3NjA1M2ExZGQ0NTI0NGRjMWFhOGQzNmRlMmM3OGI5M2ZhZjcxYTA5IGxlZ2FjeS10cnVuaworMzU1NDYgZmI1NTdhYzViYjlhMjViMTQ1NWE5OWEwM2Y1MDA2MDkwMDZkMjk5ZSByZWxlYXNlMjMtbWFpbnQKKzM1NTQ3IDlkODRjZWQ2NGQxMGM5YWU2OGVlNTZlZDQ0MzlmM2I4MGIwZjI0YWIgcmVsZWFzZTIzLW1haW50CiszNTU0OCAxNjRjZTFiY2FiNmUxZTMyMGZiYWYwMWNhZDhhNTBkNzI5ZmU5ZjMwIHJlbGVhc2UyMy1tYWludAorMzU1NDkgMzNkNDhkZjlhOTM3ODM0NTQ3NzhhY2Q5ZGU0ZTA2ZTVhMjVmYzM1YiBsZWdhY3ktdHJ1bmsKKzM1NTUwIDI5YmU3MjliMzJjM2ZlOTQxNjc5YWRkZDcyNTNmMjJkMTNkZTZjZDAgbGVnYWN5LXRydW5rCiszNTU1MSBjYzQ3YzFlYWY4MGFiNzIzOTA5ZWY0NmFlMzE3N2EzNTIxZWE3OThhIGxlZ2FjeS10cnVuaworMzU1NTIgYzRiYWUwODliZmM4ZjExNWJhOTNiNTRlNThhNDRiY2IyZjM2NjNmMyBsZWdhY3ktdHJ1bmsKKzM1NTUzIGVjMzdjYjFjMGVkODg4N2NlNGM3YmVhMWY5ODcxOTI2YzdjMjhlZjkgcmVsZWFzZTIzLW1haW50CiszNTU1NCBkNDQ4Y2MyNjFmNjlmNGIwODI3NWVjMGRlNzA5ZWQwZDJlZGYwN2JlIGxlZ2FjeS10cnVuaworMzU1NTUgY2UxZTBiNDk0Y2E3MDI0YzI3Mzg4OWFmMzI2NzUwZDA1YTk5MjZhNyBsZWdhY3ktdHJ1bmsKKzM1NTU2IDZhMTUwNTYxMzM1ODRiZWUzNThkNmEzNTE0NzAxYTRiNzJjZjdlNWEgbGVnYWN5LXRydW5rCiszNTU1NyAyM2U1Y2MzNGE5ODEyZTQzNGNkMDMwM2NjN2I4ZDg4OTQxZWU5YmYxIGxlZ2FjeS10cnVuaworMzU1NTggODM1YjY5MGQ3ZWQzYTUwNzJkOWU0ZjViNTRmMDE0NGUxMTVkYTk4NSBsZWdhY3ktdHJ1bmsKKzM1NTU5IGRjNWJkODQyMmQ1MjZhY2JiZDI3ZWEzODE0MjYyMjE1ZDBmNTNkMjcgbGVnYWN5LXRydW5rCiszNTU2MCBhNGVhZWVkNDA5OGI0ZDgzMDY2MjBhYjg2ZmRhNDZkOTc0ZjhhMWY2IGxlZ2FjeS10cnVuaworMzU1NjEgZmU5NDMzNWYzOGUyNDk3NGQxNzc5YjUyMDM2MGRkMmIwZWYwMzdiZiBsZWdhY3ktdHJ1bmsKKzM1NTYyIDIwMjRiNGU2ZTM4ZGE4MzUyNTkxYjliZTE2ZmE4M2RmNzA2YzMxYjUgbGVnYWN5LXRydW5rCiszNTU2MyBiZWZiMWVhNmM4OGViMmJkODEwMmJiMTk5NTY1MDNkYzE2ODg3YmM1IGxlZ2FjeS10cnVuaworMzU1NjQgMjlkYThiZGZlYjRlMzE5MmIzYjlhNTk1YTQ3NDYxZTE0MzlmNGExMSBsZWdhY3ktdHJ1bmsKKzM1NTY1IDg1ODY5N2RiMWU0YmVkYzdmZjA4ZDYyNDJhNTE0MmIwZTEzMmVhZmUgbGVnYWN5LXRydW5rCiszNTU2NiA1MmMxNzIyODlhZGQxYTNhMzg3MTBkMjQwMTBiZjgyMTI0MjYyNmY2IGxlZ2FjeS10cnVuaworMzU1NjcgNGNlMDk4ZjAwNWYwMDJmN2M0M2JhYjBmZmNhNjJkOWY2YTczNDkwMyByZWxlYXNlMjMtbWFpbnQKKzM1NTY4IGYxZDQ0Mjk1ZWJmN2Q5ZTkxNTU4ZTdiYzlkNTUwOGQxYTY1ZTUzNGQgbGVnYWN5LXRydW5rCiszNTU2OSBiZjM3NDI5ZjZkOWYwNTEzY2IyNWYzZjEwYWM5MzAxOTEwOTllOGNlIGxlZ2FjeS10cnVuaworMzU1NzAgMWMxMTdkYmIyZGVmNGY5M2E2MGI5MzJiNzE1Nzk4NTNlNGU3MTg5YyBsZWdhY3ktdHJ1bmsKKzM1NTcxIDg0NmIzZWU3ZTEwNmYxMjJmOGQ3ZTNjMTc4NjdhYjkzYzg1NDAwZDQgbGVnYWN5LXRydW5rCiszNTU3MiBjNzY2MDZmMzcyZDEzNGI5N2NiZjc1Y2QyOGM4NDA2NTgzMmJmZDdmIGxlZ2FjeS10cnVuaworMzU1NzMgZTYzNzliZGE5MWQ3OTY4YWUyYTk2MGZiMDFhYmEyOTlhMTMzY2U1ZSBsZWdhY3ktdHJ1bmsKKzM1NTc0IDM3ZGM4YzgwY2E3ZWQ5MjFmZTkyODMxNDQyYmFiODRiMjg0ZTYwMTggbGVnYWN5LXRydW5rCiszNTU3NSAyNzdiNWEyZjA4ZjVjOWY0MDkxZGEyMGUyMDY3YThmYzE1MWEyN2NlIHJlbGVhc2UyMy1tYWludAorMzU1NzYgNTlmZTA5ODI0MzYzYjBlNGZhYmZjYTYwY2E0ZDA1ZTVhY2VmZGI5ZCBsZWdhY3ktdHJ1bmsKKzM1NTc3IGMwNTFkYzZhYjM3NDM4N2JhMjYxYmU2ZGYxNWJhZmJjOWIzNDgyYWEgcmVsZWFzZTIzLW1haW50CiszNTU3OCAwMjYxZTM4MDExZjZkZTQyYTQ3Njk1ZGM3ZDk1ZDAzNDNkYzVjZjgzIGxlZ2FjeS10cnVuaworMzU1NzkgY2ViZGEyM2FhYWRiYzY5MTMzNzAyYjBhNTEzMWMwMTBjM2E1M2MyZCBsZWdhY3ktdHJ1bmsKKzM1NTgwIDA3ODAzMjQ0NGVjYzg5YzMwY2FlYjQ2ZWFhZjI2YjIwMzY0YjQ1M2YgbGVnYWN5LXRydW5rCiszNTU4MSBiYzZlYzk1ZjU3OTIzZDdmOTRmNDVkMDVhMTZmYTk1ZjJkZTkwZDYxIGxlZ2FjeS10cnVuaworMzU1ODIgNmM2OTEwZmQwMTNhNjI2NTUxZTg0NTc4ZmU4OGJjZmFmNjExZWY4ZCBsZWdhY3ktdHJ1bmsKKzM1NTgzIGY5ODIxNWRhYTM1ZmMyNTcwNTRkMDVlMTc5NDg5ODE4Nzg3OTYwN2IgbGVnYWN5LXRydW5rCiszNTU4NCA3YTEyMDQwMDg4OGFlZjZhODI3ZTJiYWM1YmUyNjg1ZWU3NDM0OWIwIGxlZ2FjeS10cnVuaworMzU1ODUgMWJlNTQ5OWYzNzhlOTk3MDBiYjE5OGJmNjk1ZDMxYjk2ZTI4NjI5ZCBsZWdhY3ktdHJ1bmsKKzM1NTg2IDRkYjk1ODcyOTE4ZWI5Mjg5ZjEzYzc4YjIxOGMwMzkxOTIwN2Q3OTkgbGVnYWN5LXRydW5rCiszNTU4NyA4MTg0YzY3NzcxM2ZkNjFlMDEwNTUwOTI5MTcyOWZjMTBlZTA1M2RjIGxlZ2FjeS10cnVuaworMzU1ODggOWExMWEyMzYxNTQ3NDVkZjMxYTlhNTgyMTEwODQ0ZTU4NjM2ZWI5YSBsZWdhY3ktdHJ1bmsKKzM1NTg5IDRiMDkzMGI1NjU2NWZkMjBmZTI5ZDc3NjUxNGU1Mjc2OGVjNTU0ZjkgbGVnYWN5LXRydW5rCiszNTU5MCA3NWUyZjc1OGVjNWEwNmI2ZGEzYTBkZjUxMzM3MWFkMjZmMWY5M2MwIGxlZ2FjeS10cnVuaworMzU1OTEgOTQ4OTk2ZjY5OWQyZTI5MmFkM2QyMGFjMzE1OTA0YWI0Y2ZiYzE3NiByZWxlYXNlMjMtbWFpbnQKKzM1NTkyIDZiMTg1OGQxMmY4Y2E5ZWJiMmU1ZjcxODE0YTc1ZDgwYzI4MDhlNTQgbGVnYWN5LXRydW5rCiszNTU5MyAxNjhkYWNmYmVlNjVhYTdjOWZjYmExNTFjN2NmZGZjMDFiMjZhNTY0IGxlZ2FjeS10cnVuaworMzU1OTQgODE3MGFhZGM5ZWNhNzRlZGY4M2U1MjVkYjUzYTA3YWVlOWQyYzg0ZCByZWxlYXNlMjMtbWFpbnQKKzM1NTk1IGIwODJiNGQ0ODFjMjU2MmRkZDMxYzNjODI0MDRiNzg5Mzg5MzUyYzMgbGVnYWN5LXRydW5rCiszNTU5NiBhNGFhN2Q2MWU0YWYxOTZlZjYwYjQwOWY4NmFlY2ExZGQxOWE0Y2UwIGxlZ2FjeS10cnVuaworMzU1OTcgYTJlODBmYTczNTliNTUwMDA4MGQ3NzFjMmJiOTcyZjgyYjk5ZjdjYSBsZWdhY3ktdHJ1bmsKKzM1NTk4IDMzMWRlOGI5ZDFlZDU1YzQ1ZmJhMzllZjU3OTU4YTA3NDgyMDJjODkgbGVnYWN5LXRydW5rCiszNTU5OSAzNGQ1ZWIxZTUwN2RjMjdhZjFiNmM2OTdlNjNkOWQ0MWU2MGY1NzBjIGxlZ2FjeS10cnVuaworMzU2MDAgZDA3ODgzOTFjMTNiY2YyMzA1NzJiNzg4ZjVmZmZiMGVhMTRiOTljNiBhc3QtYnJhbmNoCiszNTYwMSBhYWRhOTFjNWQ2ZDljNzI1NmNhY2I2MzZhYjdkY2YzNDJhNDNmYWM3IGFzdC1icmFuY2gKKzM1NjAyIDIyOTA4NTNhYjQwYTYyZDc5NTA0NTgyZmUzMzI0ZmM0YTIwYmRhMjMgcmVsZWFzZTIzLW1haW50CiszNTYwMyA1OTMyNDY5ZGNiMzU5MzMyNzdjZWFjNzU5YjEwNTlkMzM0ZmU4NzhlIGxlZ2FjeS10cnVuaworMzU2MDQgM2VmNTg4ODRiZGQ1MjFhMTZlZGI1NGM5MmFjYmUyMmVhZTIxNTgxNyBhc3QtYnJhbmNoCiszNTYwNSBmNGU1ZjljMmUyYjNiOTBjN2M5MzAwMzVjZTRhM2NkMzg5MWIyNWVlIGxlZ2FjeS10cnVuaworMzU2MDYgYTc2YWQ4M2E0MTNmMGUxMjE1MGJkNDEzNzRmODJlZjcxZjhiODAxZiBsZWdhY3ktdHJ1bmsKKzM1NjA3IDliMTdmM2NjMjNlZGNlZjZjMjRiYTk0NDQ4OTRhOTg4ZDhhNzYxZmYgbGVnYWN5LXRydW5rCiszNTYwOCBlMjYxZTBjMmM3MmQ3NWZkMzcxM2ZhODRhMWIzOGRlM2RjOWU0NmE1IGxlZ2FjeS10cnVuaworMzU2MDkgNjRlMmY3ZWM1NTc2YjNhNTg0MmZhZjQ1NzlhZTQ2YWVlMTY5Y2E0YiBsZWdhY3ktdHJ1bmsKKzM1NjEwIGE5MTBiODIyYjEyY2IzZmM0ZmNlMTk2Mzc5Mjk1NzhmZTg0NGNiODcgbGVnYWN5LXRydW5rCiszNTYxMSA3MzkxMjhjNjdjMzBlZjhkOTg3ZTc5ZjYxY2U0MWVmYmNkZDgzN2VhIGxlZ2FjeS10cnVuaworMzU2MTIgNDMzNjQyZjkzZDU5ZGJhZDRjOGEyZmJhNGMxNzA0ZGZlNzY0M2I0YiBsZWdhY3ktdHJ1bmsKKzM1NjEzIGU0MmNiYWZmODAyN2Q5MWZhYWI5Y2RmYjUxYjQ0Zjg2NjdiNmFjOTMgbGVnYWN5LXRydW5rCiszNTYxNCA4MTExNzkyM2FlOGYwYzQ1YzFlYTdlMjM2Yjk4MzgwOWU2ZjNjNTU5IGxlZ2FjeS10cnVuaworMzU2MTUgNjc3YzBiZjA1NzM1ZThjMTg2M2ZlZDI0ZDllMTA1ZjNiZjBkMjZjOCByZWxlYXNlMjMtbWFpbnQKKzM1NjE2IDRjMDZmNGZhZWQ4NzdiYWIxOWIzY2RiNTc5NGM2YmRkYzkyNGNkMzAgcmVsZWFzZTIzLW1haW50CiszNTYxNyBkMjBjYjYzNTdmNWVhMTYxYjM1YTEwNDI0YzQyNTExN2EyZTBiZjNkIGxlZ2FjeS10cnVuaworMzU2MTggYjFlYTJmM2Y0NjdlZjc4NTYyZGZkNzZkMTgxZjhlNmIwYjk4MWY0ZiBsZWdhY3ktdHJ1bmsKKzM1NjE5IGZhYTcxNGRkODZkM2YxMDVkM2E4YzBiYWUyYWExNmJmMDI2MWY1YjUgcmVsZWFzZTIzLW1haW50CiszNTYyMCBmNGMxYzNlNjI3ZGY4ZmU4NjYzMWUyNDI5Y2VjMTEzNDk4MDE0MzFmIHJlbGVhc2UyMy1tYWludAorMzU2MjEgODE0Y2M5ZjgzZmFhYjhkZTI1OWU2NTRjZjhhM2Y5ZGQyNDQ0NjFjYiBsZWdhY3ktdHJ1bmsKKzM1NjIyIDY0Y2MxNjNlZWFmMTIxMzUxMzZkNzIyYTBjYTVhNzczN2U4NmU3MjcgbGVnYWN5LXRydW5rCiszNTYyMyA5MjU1MjQ2NzE0NWVhN2Q4ZjI2YjQ4OTdhMDJkYjJmZTZjMjA1NjVhIGxlZ2FjeS10cnVuaworMzU2MjQgYzU3Y2ZhODMyOGQ0M2FhOTljZTY4MDM0MzRjNTMxNDU2ODdiODUzOSByZWxlYXNlMjMtbWFpbnQKKzM1NjI1IGM0YzdmMGYzOWZlOWI4MzcxZTg2NTJjZjEyODY2NTQyNzAxZjA3OTUgcmVsZWFzZTIzLW1haW50CiszNTYyNiA4ZDM4MmFiOTliZGJhOWU5ZDJlYjVjNjc2ZDQxNjg5YzRjZDM1YWQ0IGxlZ2FjeS10cnVuaworMzU2MjcgNjk2ZjRiYTlkZGY3YjE2ZDRkOWVhOGE3OWU0YTcwOTVkYzhjMzhjZiBsZWdhY3ktdHJ1bmsKKzM1NjI4IGFkYjQyYTcxMTY5NjA0ZDM2MDlhYzJmYmRiNjRjZjhjZDFjNzI1MGIgbGVnYWN5LXRydW5rCiszNTYyOSAyY2ZlMTQyNzVhMDQ0MDhiNjNmMGQ2Mjk4ZTBkYzdjODNkODk4N2VmIHJlbGVhc2UyMy1tYWludAorMzU2MzAgM2FkNDJiN2Q0NjYwYWMzYzE5NTIxNTMyNzZkNTczZjRkY2E5ODNmMCByZWxlYXNlMjMtbWFpbnQKKzM1NjMxIGY4YjI4ZTRhYzQzNWE5Nzc4OTRlMDIzN2E0ZmZkZWQ2NGE4YTUyNmQgcmVsZWFzZTIzLW1haW50CiszNTYzMiA1ZjYwYjIyNjAxOWU5ZjNiNDEzYWYwZWY4MGZkYmMyYWE5OGFhMTRjIGxlZ2FjeS10cnVuaworMzU2MzMgOGJjYjEyMWM1NDExMWJmYmExNzM2MzI1ZDUyNTU1MTFiM2VhZjkwMCByZWxlYXNlMjMtbWFpbnQKKzM1NjM0IDA1OTg5YjRkNmNlODE1N2Q2ZjI1MmViYzI0YWJiNjU5ZTc4OTM5ODQgcmVsZWFzZTIzLW1haW50CiszNTYzNSAwZDhlZTI4YmY2ZjAzZmZjY2FhNDBmZWMyOGY1OTMzY2NiYjljNmFiIGxlZ2FjeS10cnVuaworMzU2MzYgNTc2NWQ2NTZlMGVmZDg3ZDFjYzI3ODc2NDY3ODkzM2VkOWYzMjY5MyByZWxlYXNlMjMtbWFpbnQKKzM1NjM3IDUwMTI4ZmYxOTk2NThiMTQ3NjllY2FjMGM0OGVmYmJmOGY4YzFmYmUgbGVnYWN5LXRydW5rCiszNTYzOCBkMDRkNzg2YWI0NTgxMzc5NTEwZGZhNWY2Y2M5NjJhYzU5ZTM0ZmUxIGxlZ2FjeS10cnVuaworMzU2MzkgZGJkM2ZjMjE0YjY2NmEzNjgzYTBjZDlmZTQ4NGM1M2M3N2VhOGY2NiBsZWdhY3ktdHJ1bmsKKzM1NjQwIDAwNzFkNmViODBhMWZhMjA5MzllODY4OTU5NzE1YjA0ODdhZWI1OWMgcmVsZWFzZTIzLW1haW50CiszNTY0MSBhNDBkNzlmZTJhNjllMmFmZWM1MzczMzY5NjFiOGZjNzc2ZThkM2I3IGxlZ2FjeS10cnVuaworMzU2NDIgYjRlYzkyOTk1NjBkODA4OWIyNDA1NTdkNjdmNDA2MTdiNTZlMmZiMCByZWxlYXNlMjMtbWFpbnQKKzM1NjQzIDU1MjA0NGI1MDU4ZDAxOGQyMmQyMDc0M2U2Y2JmMWIxZDczOWRlYjEgbGVnYWN5LXRydW5rCiszNTY0NCA1MWFhY2VlYWFiZTExZWFmZTc0ZDYyY2IzNDI3YzdiODQ2ZjcwYjgwIGxlZ2FjeS10cnVuaworMzU2NDUgMTU2MDM3YmUzNTVkOTg0NjA3NjZkMGYwM2RhZDhiYWFmY2JiYzNhNSByZWxlYXNlMjMtbWFpbnQKKzM1NjQ2IDVhMzZlNGQ1YWE4ZjBkNDA1ODVmNDVkZWI0MDNjZTkwOGFiZTRmZDYgcmVsZWFzZTIzLW1haW50CiszNTY0NyBjN2Y5ZmNhOTQ2ZDE2YjcwNGMyM2I2MDI4NTM2ZWI5MzZmYmRmZDAzIGxlZ2FjeS10cnVuaworMzU2NDggMDIwZGM1ZGZkNWM1ZDg4ZGQwZjQ1NzI2OTVkYzRjZmM4YzQwNTJjZSBsZWdhY3ktdHJ1bmsKKzM1NjQ5IDlmNWZlNmIyM2U1OTIwZTU3OWQzYTZiYWNjM2RkZDAxZWJhN2Q0OGYgbGVnYWN5LXRydW5rCiszNTY1MCAyMjdjYjc0MDJjNmU5YmY2N2EwMGEwMjM1NzU0Njg3MjAxZmU1YWM0IGxlZ2FjeS10cnVuaworMzU2NTEgYzg4ZDQ2MTBmMjgzY2I2ZDE2MmI5NTgzY2Y0N2ZmZDBkMmUxNGNmYyBsZWdhY3ktdHJ1bmsKKzM1NjUyIDFmYjIzMTNhYzNjZWU1OGZlN2QzOTUyZTIxYTdiNjc5ZTczNTI0MmQgbGVnYWN5LXRydW5rCiszNTY1MyBjOTA2YmIyYTE4MjQ1NTFmYzg5ZmMxNGZjODY3ZTExZjQ2ZGYyYjUzIGxlZ2FjeS10cnVuaworMzU2NTQgYTJmYjE2Nzg0MWU4MzhjMjZiZDQ3NzljZmVkOTE2MWM5ZTRlY2M0OCBsZWdhY3ktdHJ1bmsKKzM1NjU1IDI2ZWUxYjNlYjM0NTFhNzBiNDc2NDJjZGYxMmVkZjRmZmU4NDk1MzQgbGVnYWN5LXRydW5rCiszNTY1NiAxYTNhNDhjYmIxNjI4ZDQzNDBhYmQ1YjJlODNhZjYxZTFkN2JmY2QwIGxlZ2FjeS10cnVuaworMzU2NTcgNGM2ZmRlYjhlMmUwMjE3ZjM1NmJmMWFlMGFkOTRjNWNmNzQzNjEwNyBsZWdhY3ktdHJ1bmsKKzM1NjU4IGYzNWI0YWNjNTk0ZjkwYTlmNjI5OGJhNDVkMTgxNWUyZjU3NWYzNzkgbGVnYWN5LXRydW5rCiszNTY1OSA2OTk3MDY1M2VjYmZhYzk0Y2U3NTgxNWVjYWIyMzU3YjhjNTVlNTRlIGxlZ2FjeS10cnVuaworMzU2NjAgZjljZDc5OTI2ZmY3Nzg4MWEyMTNjOTA5NWMwOTBiNGQxYjU5YzIzZiBsZWdhY3ktdHJ1bmsKKzM1NjYxIDk4NjU5NGMzZTRkOWRjMTAzNDYyY2VjNTIzY2ZkNjEzNGIyNjc4MjAgcmVsZWFzZTIzLW1haW50CiszNTY2MiA4YzI2NDIwZDFmMjM1M2EwM2NjY2JlMzM2ZTcyYzhiYWFiNTkwNWRlIHJlbGVhc2UyMy1tYWludAorMzU2NjMgN2I4MTcxMTliYjY2MGI1MzFhMzMzM2I3YmRjNTYyNmU5ZjhmMDMyOSBhc3QtYnJhbmNoCiszNTY2NCBjNjgxZDk1Y2Y3OWVjNTBjNWI4NTkzNDVmZTBjMTFmZjdiYzVhNmJhIGFzdC1icmFuY2gKKzM1NjY1IGMzNzBhYWU5ODIzMjE2MzZkYjljY2VhZGFiNTIyNDZkMDFiNGNjY2UgYXN0LWJyYW5jaAorMzU2NjYgYjQ2ODQyMzRiZjA3MDFmMDhhNzQ5YjFhZDJjMzdjMDE2MzVjYTdjMSBsZWdhY3ktdHJ1bmsKKzM1NjY3IDJlNTJjMjBkZWE0ZjYxZGE4ZGFmMGEyN2ViZGEyODc2ODBlYTVhZDQgbGVnYWN5LXRydW5rCiszNTY2OCBkZDkzYTMyYWMzM2VmZjNjYjg2ZDI3Njc5OTY4NTA0ZGIwNGMyNjEyIGxlZ2FjeS10cnVuaworMzU2NjkgZGZjOGM1ZjY2OTU5NTgyMTQ0ZGFiNmVkOWNjMTZhNTJlOWMzY2E5MiByZWxlYXNlMjMtbWFpbnQKKzM1NjcwIDg0OGJjZTIyMTVkMzViNmRmZmE5ZDg1ZmExMmNhNjY0NzYyODA3YTkgbGVnYWN5LXRydW5rCiszNTY3MSBjNzBiYjMyMjI3Y2IzYmZlNmEwZTgzM2ZkYmU5N2ZmNDEzZTYzZjM2IGxlZ2FjeS10cnVuaworMzU2NzIgMDgxOTcyYWUyZjg0NDIxZmQ2NGEzMjA2YTQ0MjY2NDRlNjkwZDQ3OSBsZWdhY3ktdHJ1bmsKKzM1NjczIDI0MTA4OWU0MzdlMDI5ZTljYTBmMjBlMzk5MDdjZGEwODAyOWVlY2UgbGVnYWN5LXRydW5rCiszNTY3NCAzMTBkZDk4ZWEwNjQ2MTljYjk4ODNkODBlOWMxY2YwYjZkY2M0MTFkIGxlZ2FjeS10cnVuaworMzU2NzUgYzU2ZWE2MGNiM2JmNzc2M2Q5NWIzZGYwYzBhMDI5Yzc5MTFiMzA0MiBsZWdhY3ktdHJ1bmsKKzM1Njc2IGNhMmZiNWNmMmZkNTc1YzcyOWJlMTI1MmE2NDY4MzViYmIzYTYzMGUgbGVnYWN5LXRydW5rCiszNTY3NyAyNzk0ZjYyN2ViYWEwMDE1Zjg4NzQzODk4NWQyNGFlYTBkZjk3NDEzIGxlZ2FjeS10cnVuaworMzU2NzggNjRmY2ZmMTIxZjdiNWRlZGM2NzdlMDc4ZjJjNDVjZGE0NWE3NjYyMSByZWxlYXNlMjMtbWFpbnQKKzM1Njc5IDZlNTRjNTkyODUzYzY0Yzc3ZWE4NWU0NjA2Y2Q1ZDA2Y2YwZDM1Y2UgcmVsZWFzZTIzLW1haW50CiszNTY4MCAwMjY1YmY5OTEyZWEyOTEwZDU4MzFlNzFmYmIxZGUwYjY1MzEzMzI0IGxlZ2FjeS10cnVuaworMzU2ODEgMzU1NDczNTM0YzcwNjgxMGY2NzQ2NjgwOWQyM2IwOGRjNDY5M2NmYSBsZWdhY3ktdHJ1bmsKKzM1NjgyIGM0ODg4YThmY2Y3MDYxYjY0NmExZjY0ZTYyMTAyZGYxNGVmODYzMDYgbGVnYWN5LXRydW5rCiszNTY4MyBlOTc1MThjNjZhY2MwODE1NmQ3MmYzN2U3NTlkM2M2ODgxZmJmNWRkIGxlZ2FjeS10cnVuaworMzU2ODQgODk3NWRlZmJmM2E4YjBhYjRhZWYxMTNkOGYxMmI1ZDg4MDVmNWQ3MSBsZWdhY3ktdHJ1bmsKKzM1Njg1IGU3NjA5MmQ0OTAyY2Q0NGRjZDZmYzc1MTM1YmEyMjBmMjE2YjYxMTkgbGVnYWN5LXRydW5rCiszNTY4NiBmMzljNTZmOGNjYzJiZTQ4NjQ1YWY5ZGU0MDM2MGI2ZmE1NmNkM2IwIGxlZ2FjeS10cnVuaworMzU2ODcgODhkNjI1ZDkyOGFjZGJhMDdlMDVlYmNmZjM3MzU5NzVmMjE2MmQ4ZCBsZWdhY3ktdHJ1bmsKKzM1Njg4IDA1ODgyMWQ4YWVmZGM1MGNkNDdmOWJkYzdkMzM3MTUyZjQ1ZTM5MGMgbGVnYWN5LXRydW5rCiszNTY4OSA2YjIzNjk5NDY4NGFmOTI5YzQ2MDAxM2U2MjFlOGY0MjNmMmM3NTUyIGxlZ2FjeS10cnVuaworMzU2OTAgY2VjNzQwZjkyZmE0MjI1MDAzNTUwNzk2N2Y2ZTE2NjFlNWRlMDVlZCBhc3QtYnJhbmNoCiszNTY5MSBiMzNkZGI0OGI3ZTA0ZTE1NmQ4MjFlNGNhNTExYmI2MTk3OTY5ZjM0IGFzdC1icmFuY2gKKzM1NjkyIGViNmY1OGMzZDk3MjVmMDUwZDNkYWZjMDRhYmViMWM2YzYyMGE0YTUgYXN0LWJyYW5jaAorMzU2OTMgMTZlNzUzZmYzMWIyMjY4Yzg1NTY2M2JiYjYwZjgwM2E4ZmE3NmIwZiBhc3QtYnJhbmNoCiszNTY5NCA0YTU0MzMwNmRmZmExNjhmMGM1YTg0MWZlZTY0NmQ1ZmQwN2RiNTBiIGFzdC1icmFuY2gKKzM1Njk1IGY3ZjQxM2M2NTRmNGZjM2I0ZTc0NzY3N2M0ODUyODBiOTAyZjg3YzMgYXN0LWJyYW5jaAorMzU2OTYgNTVjYTk3ZTdiZDBmYTM2ZDA3YjEyYTdjODI1ZGUzODZmNDE4NWU3YSBhc3QtYnJhbmNoCiszNTY5NyBiMjQyYjRkN2UxNzc0MjhiMDM1MGY0MmMyMmM2ZjBjMDMzODMyNzFkIGFzdC1icmFuY2gKKzM1Njk4IGUxMTQwZTYwMWU3MjI4NGU3ZDcxYWZmYWMwOGNjMzc4YWI4YjgzNzIgYXN0LWJyYW5jaAorMzU2OTkgNzM0ODZmZjZiNTUyZjM4ODdkODg4ODY2N2VhNzc5NGFjMTIwZjM3MiBsZWdhY3ktdHJ1bmsKKzM1NzAwIDlkZjUxODVmYzVjYWJlMWE3NzRjOWYwMmU5MDhiZTU0ZDE3Y2U4NmYgcmVsZWFzZTIzLW1haW50CiszNTcwMSBhNTg2Zjc1MmIyYmRjY2VmNWYyZDEwNTRlMDc5MWYzMTJjZjFmMDI0IHJlbGVhc2UyMy1tYWludAorMzU3MDIgNzAzODk3N2NlYThkZTYxMzIxYWI2OWJmYmM0NWJjNGFkZWRjNmNiYiBsZWdhY3ktdHJ1bmsKKzM1NzAzIDA4YTM5MWZkZTY4ZGFmMzc1Yzg2ZThmM2Q4NzcxNTU2ZWIyMjIwZDAgcmVsZWFzZTIzLW1haW50CiszNTcwNCA1NmZlZDA5ZDAxZjM3ZWQ0MzcyZWVkODJhODFlYzgyZDJmYzRmMDdmIHJlbGVhc2UyMy1tYWludAorMzU3MDUgNGJjNjIwZjQ3ZmI0MmVlZTBmNTlkYjA1ZWM4OWM4MmYwNTliZTY1NiBsZWdhY3ktdHJ1bmsKKzM1NzA2IDgxNjE5ZGNiZmFlN2I1NTY0NjZiYzUyZWFiOGQ2Njc0ODI0ZDE0MWMgbGVnYWN5LXRydW5rCiszNTcwNyAzYzc5NjQxM2YwNWU3MjlkZTM0MDM2NGEwMmVmY2M5ZjMzMTA4OGFiIGxlZ2FjeS10cnVuaworMzU3MDggMzljMzY1MjZkMWIwODIyM2U1OGNlYWNiZTRiNjlhYTIxZGU3MDkyOSBsZWdhY3ktdHJ1bmsKKzM1NzA5IGQwM2I1NGU2MGE2NzZiMWY3ZDJlY2RkY2U0MWQyZjI2YTZhZWU2ZTggcmVsZWFzZTIzLW1haW50CiszNTcxMCA0ZGIwYzg0ZjVjNmEzNTlhY2Y5MDI0YjY3NTA4MmJlOTczODkzZGQyIGxlZ2FjeS10cnVuaworMzU3MTEgM2M2MThjNjkzOWUzMzQyNzcyZTBhNTNlYTcxZDQ4ZDQyZjg2MzNkOCBsZWdhY3ktdHJ1bmsKKzM1NzEyIGZiY2JjZGExNGI5MmVjMzIzNTE5ZWQzNjkzYjUwZmRiMjM3OTM0MzUgbGVnYWN5LXRydW5rCiszNTcxMyAyMmE1NTAyOGE3OGQzZWE4MDY1Mzk0MzlkYjI3ZTIzNmIwNTE3MGQ1IHJlbGVhc2UyMy1tYWludAorMzU3MTQgNTE4NGQ2OWMyNGRjYjljNjIxMDdkNDRhZDJjZTRkZDM0YTIxOGI5NiByZWxlYXNlMjMtbWFpbnQKKzM1NzE1IDA5ODAwYmEyYTY1MzQ4YTMzYmNmMTA3NjEwMDcyYTY0NmVhYzM1ZjcgcmVsZWFzZTIzLW1haW50CiszNTcxNiA5MzkxN2RkOGE4N2MyMTBjZmM0OWQ5ZWQ4MTgxMTkwOWI3ZjY0YjU1IGxlZ2FjeS10cnVuaworMzU3MTcgNjA4MDI4ZjM4OGM1YzQ5Yzc3Nzc4ZWMyYWIzZWZkNzc0YTU0MTA4OCByZWxlYXNlMjMtbWFpbnQKKzM1NzE4IDg4NmQ2NmY1MTEwNWM0NzM2OWQ3Y2I4MDczM2MzOTA4MDRiNmJkNTggcmVsZWFzZTIzLW1haW50CiszNTcxOSBmOGMwYWM1YmVmMDI4Y2MxNWNlY2FhNTM1ZWMzY2Q5ZjkxMzU1ZGU4IGxlZ2FjeS10cnVuaworMzU3MjAgNjNiNjhjYjJiNDQyZjRlNjY0ZmZhNThkNTk4Njk3OTQxYWUyNDg5MyBsZWdhY3ktdHJ1bmsKKzM1NzIxIDFmMjkzNGEzMThiNzgxYmE1OWY0NDE5MmNkZGQyNzAyMzVjOTkzMjUgbGVnYWN5LXRydW5rCiszNTcyMiAxMGJhMjQxNjIzOTExMGU4YWY3YjA0NTRkODA5MGQzOWFmMjk4OWIxIGxlZ2FjeS10cnVuaworMzU3MjMgZmRhYmI2ODA4ZDUyZmJmYTI1NGIwZTE4MjFkYTYyYWY3Mzc5OTkyYiByZWxlYXNlMjMtbWFpbnQKKzM1NzI0IDAxZWEwM2U3YjI2NWY4Yjc4ZjU5NzhlYmM5MGE4YjQzOTQwM2EzMjIgbGVnYWN5LXRydW5rCiszNTcyNSAwMWUzMTY0ODlkNjc5OTIyNDM2NjBkMWQ4MGU3YmNhM2JmNjhiMWViIHJlbGVhc2UyMy1tYWludAorMzU3MjYgNjYzNjgxMThhMTliYzAzNThiM2E5MWZkZDhkMjk4MzdjODM3N2MwNyBhc3QtYnJhbmNoCiszNTcyNyBmMWZkMWFlNDIxMzZhMDIzZTRmMzQ3ZWFiZDU5MzcwZWRiZTg5MjUwIGFzdC1icmFuY2gKKzM1NzI4IGM5MjE0MzgyNjY1ZjRjZjliM2JiN2U2YWNlZjUzM2Q4ZGUwN2JjNjkgYXN0LWJyYW5jaAorMzU3MjkgMDYwMTRmNzFmMTYzNmE5Y2YwNDU0ZTczZWZhNjQ5MDY5NzgwYzc1NiBhc3QtYnJhbmNoCiszNTczMCA3NjczYmZmNzQxMjI4YjgzNDk1ZGQ3NTEyNTNmZjE2MTA5N2RhY2FjIGFzdC1icmFuY2gKKzM1NzMxIDRjMzRhYzlkYTkzZDQyNDY1OTdiZGQxY2UxYmFmODY5OGY0Zjk3ZGEgYXN0LWJyYW5jaAorMzU3MzIgN2M3YTI5ODE0NTVjYThiM2JjYjc1ODg3MjMwYjE0YzdiYjA5MTFhMSBhc3QtYnJhbmNoCiszNTczMyBmZjVhMzFhNzFkOWE2YjBlY2M1NTgzMjBmNzM3NGZiYmM3NGRhMzQzIGxlZ2FjeS10cnVuaworMzU3MzQgZmYyNThjNjcxZDNjY2Q1MTJkMWE5MjI5ZDI5OTAyOTA0Njc1MWEzZCBhc3QtYnJhbmNoCiszNTczNSBkYjhjNDViOWU4MTg2ZWMyZTUyZTM3ZGZlZmY2N2I2ZmE0NzQxOTgyIGxlZ2FjeS10cnVuaworMzU3MzYgOWQxNjMzZTZjNDJlYjlkMzhhYWY1YjkwMTFkZmVlYzFlY2JjYzg5YiBsZWdhY3ktdHJ1bmsKKzM1NzM3IDA1OTc0MGQ1MmFlNWM0ZThmM2Q5YzRkMmVlNjQ1ZmFlMDZkNzIwYzkgbGVnYWN5LXRydW5rCiszNTczOCAzMjAzNTRiNzY2ZTcyZDMwNGRjMzA2MjlkYTNiYjMzNGI3MDg4M2NlIGxlZ2FjeS10cnVuaworMzU3MzkgMTI2ZDgxNTU0NmQzMzc5ZmIzNjJhY2JlNzM4MjU5Yzc0OTk4N2MxOCByZWxlYXNlMjMtbWFpbnQKKzM1NzQwIDIyOGVhNzU3NzBlM2RlODMyYTQxN2Q4ZjYxNDdjNGNkNGQ3MGZiNmIgbGVnYWN5LXRydW5rCiszNTc0MSAzMGVhMGIzNTJmYzAyZmRiMmQzMTA4OGFhZTA3ZWEzYWUyM2I2NzY1IGFzdC1icmFuY2gKKzM1NzQyIDNiNDQwMzM2MDc3NWYwNDIyMzMzMmUxY2VmMzMzOWYyZTRmNmZkNTQgYXN0LWJyYW5jaAorMzU3NDMgYWI0OWU2ZmQ3NzQ2NTAwZTBhMmFkOTdkYTQ4Yjg4ZmEyMDM3NDNhZSBhc3QtYnJhbmNoCiszNTc0NCAyMGI1ZTlhNmVmNmIwYTVhN2FiZTJlMTc0MmUxNDRjYzY0MThjMTRhIGFzdC1icmFuY2gKKzM1NzQ1IDI4MjJlZDk1NjMwOWZlOGQ5NWRmMDhlMzMzYjcxNzU3YWI3MzVkZjggYXN0LWJyYW5jaAorMzU3NDYgYWFiNzc2ZDQxYjRmNTE4NGFjNDVkYzViZGNkZWI2YTc2NzhjZWRmMyBhc3QtYnJhbmNoCiszNTc0NyBiNjFlNWY5M2ViZTBhMTMzNDAwODhmMWVkNjgxNjRiOWJmN2I4NjA4IGFzdC1icmFuY2gKKzM1NzQ4IGNlNzZhOWQ2ZTY1MzA4ZjAwNGEyZTdkYzFjMThmNTNkZDA1MzRkODcgYXN0LWJyYW5jaAorMzU3NDkgMDYxMTA4YTg5NTE2ZjExZjQ1YTVkMmZiZDkyNWExZDhiZjFkYjMxNCBhc3QtYnJhbmNoCiszNTc1MCAyNDQ4ZjY4NGNlOWU5YzRlOWJmNmJhN2UyZDMwNDFmYzA3N2U4YjFhIGFzdC1icmFuY2gKKzM1NzUxIDRmMGExZTdhZDY5Y2ExNTljN2NmZTJmZDhjMzRhNDU2M2UwZjk1YWEgbGVnYWN5LXRydW5rCiszNTc1MiA4ZjFjZTdiMGU0MjNlMzI5NjA5YzBhM2NjYjg0YzgwZTQ4ZjY2YjYxIHJlbGVhc2UyMy1tYWludAorMzU3NTMgNjljMWFiNmIyNjAyMTQxYjBhN2NhNDVhNDEzNmViMWY0NDhhZjc3NCBhc3QtYnJhbmNoCiszNTc1NCA1NGFlOWRlMzhmMGMyZGRjMDAyN2Q0YTRhNjA2ZDYzMTYwYjM0ZjViIGFzdC1icmFuY2gKKzM1NzU1IDAyMDQ0M2ExMGMyMDI1OGQzODA2MWI3ZjI1Mjc5OGQ1NzNkNDg1YzcgYXN0LWJyYW5jaAorMzU3NTYgYmIyNTVmODU1OTk5ZTlmNjBlNTNmZGE3ZWM0MDQ1NjhlYjJjOTVlYiBhc3QtYnJhbmNoCiszNTc1NyAxODIyOTUzODFmMTQ3ZWZkODM1OTUyZTYxNTViNmM1ODQwZjc2ZDVjIGFzdC1icmFuY2gKKzM1NzU4IDU0NjVhMmNiMGFlYTdlNzczYTZkZDU4NmE2MDhhNzY3N2U3MjZlMzAgbGVnYWN5LXRydW5rCiszNTc1OSAwYzY2NzYxMjQzMDg5YTQzYjk4NDUxMjQ2ODM2NWRjOGYxNTVjOTZmIGFzdC1icmFuY2gKKzM1NzYwIDc2NWZlMTZmNjY1Yjg4ZDMxZGQzNDlkMzk0YTJmMGE5ZTI3OGE4MDAgbGVnYWN5LXRydW5rCiszNTc2MSA0YmU4ZTAxMGJkYjllOWMwMmNlMmI3NjU3NzAyMzJhZjdiNTg5OWQ4IGFzdC1icmFuY2gKKzM1NzYyIDIwMGJmNzljMDE1OTYwOWQzYzc1YmFkNTZhNDkxNWQ3OTdkYmJmY2IgYXN0LWJyYW5jaAorMzU3NjMgNTZmOWIzMWFjNjlmYTQwZjkyZTU2M2RjNjQ0MTlhZDE2YmYzMWE2OCBhc3QtYnJhbmNoCiszNTc2NCAzNDBlNDllMDE1NzY2NDdiNzkzOWZiNTA4ZjMwNTU4NzFmY2E2NjAyIGFzdC1icmFuY2gKKzM1NzY1IDBhZWNjMDdlMzVkOWZjNjI1ZWE1ODgwMDcyODBlZjQ3YmZjNzViN2EgYXN0LWJyYW5jaAorMzU3NjcgZjk1MGVmMzA5ZDc1MTJmNWVjYWI0ZTgwOTcxZjM5Yjg0MzhjNWY5NSBsZWdhY3ktdHJ1bmsKKzM1NzY4IDM4MzhjZGVlMWEyMDFiM2MyZTU5YmYyYWI2YzA4N2ExNDE0Nzg3YjMgbGVnYWN5LXRydW5rCiszNTc2OSA2MTY3ZTc4YTE3YTgyNmE4MzhmNTQ0YjlmY2Q4OTYxZTMwMmFjYjdlIGxlZ2FjeS10cnVuaworMzU3NzAgMGU5ZTBjNTM0OWEwZGVlYjBlMTRiOWNlOWVhOGJhMmEzOTRlNzJmMyBsZWdhY3ktdHJ1bmsKKzM1NzcxIDkwZTA4OTRhZWM1YmVkMzhkMzMyYzE4ZTc0OTMwMjNmMjlkNDA4NWQgcmVsZWFzZTIzLW1haW50CiszNTc3MiA1ODMxNzg1MThiZDBjZDMwN2U4MWE2ZGI2MWFkNDM4ODZkNzMxNTI1IGxlZ2FjeS10cnVuaworMzU3NzMgY2ZhZmFlYTkzZDkwOTVkYzRhOWY3YTc1ZTk2YzQ0NWE3NTRiZTE4NCByZWxlYXNlMjMtbWFpbnQKKzM1Nzc0IGVhOWVlOWI3NDY3MjljYjU0NGVjNDY0MTEzNmRjMTRhYzQzMmYwYzQgbGVnYWN5LXRydW5rCiszNTc3NSBmMmNlYTE2YTFmMzgyZDRiOTczM2Q5MGY5ODIwM2QwMWY0NWY4ZDE4IGxlZ2FjeS10cnVuaworMzU3NzYgNDdlZDdiY2RmMDg2NDZiNGNmYmQ5M2QzMjA4N2EyZWJmOGViMmNmNiByZWxlYXNlMjMtbWFpbnQKKzM1Nzc3IDMzODU3N2FmZGFiNmQ4YmQxMjIzODYwOGY1NTdkNWI5ODk5MjA3M2UgbGVnYWN5LXRydW5rCiszNTc3OCAxY2EzYTYyYTAwOWFkNGM1ZGQzZDRjYmUyNjhiY2ExMjViOTNiOGFmIGxlZ2FjeS10cnVuaworMzU3NzkgZjlmYWY1NTcxNzIwMmQzM2M0ZWE4MjQ1M2U5ZmE4MGI1NmJhMDAzZiBsZWdhY3ktdHJ1bmsKKzM1NzgwIGZhYTdlZWIxMThjZjQ3YWRhNWU4YmQ5NDI2MDU2YTMwMGE2ODA2MTggbGVnYWN5LXRydW5rCiszNTc4MSBhNDhlNjA4YmE2MDVmYTFiZTc0NDkzODlkOGJjZWY5ZWRkNmMwYjBlIHJlbGVhc2UyMy1tYWludAorMzU3ODIgNWNhMTAzYzM3ZDVlMGJkZDgwYjZkNjRjNWM3NDUyN2E4OGQzYzI3ZSByZWxlYXNlMjMtbWFpbnQKKzM1NzgzIDVhYjgxMmNkMGRiNzU2MjI2NTQ4MDVkNzI2MzI2NTczZmY4YWRiOTUgbGVnYWN5LXRydW5rCiszNTc4NCBlZjM0ZGVjMDA0Y2RkZjc5Yzc4MjVhYjUxNjdiNDEwM2EzNzA0MWQ2IGxlZ2FjeS10cnVuaworMzU3ODUgMjA0YjdiY2VhZDRjOThlZmJjZWU4ZTE3NjY2MjZlM2QxNzgxOWM4NSBsZWdhY3ktdHJ1bmsKKzM1Nzg2IDNkMDQ2ZDA2M2E4NGE5YmEwMTM0MTY2ODg5MjM3MzM4OWM4Nzc4YzUgbGVnYWN5LXRydW5rCiszNTc4NyAyMjc2ZGU4OTFmZTJlZjRkY2ZkYWRjYjE2YjY0MzRmZGM3OTU3N2NhIHJlbGVhc2UyMy1tYWludAorMzU3ODggMGM3NmE5ZTVjODM4MmMzYmQ2M2EyYTAzZmI5YzE2MzMwZDI5YzUwZCBsZWdhY3ktdHJ1bmsKKzM1Nzg5IDVjMzViM2NhNWJhOTNkOTZhN2I2YTRlMzg1MmRlYmIyMjRiOWM5NWYgbGVnYWN5LXRydW5rCiszNTc5MCAwZTlmZGI3NmFjODU1ZjliM2NiZGE5MDdmYzVkNWNmNGFkMTI5MzdlIGxlZ2FjeS10cnVuaworMzU3OTEgNTFlMWI2ZGNmZjYxZTkyMmM3M2E3YjU5ZjA5NjVkNmM4OGNhOWNlOSByZWxlYXNlMjMtbWFpbnQKKzM1NzkyIDdhNzQ5OWZiYzQ1Mjk5NjYxNDRhNTJlYmM0ZWE2YzFiODIxYzM2ZGIgcmVsZWFzZTIzLW1haW50CiszNTc5MyA2YzEyYTNiYWQ3ZDUzOWFmOTVkZWNkYWIyNzE3Yzk0OGIzZTIzNmQxIGxlZ2FjeS10cnVuaworMzU3OTQgNjMwZTRmYmNkZWEyNjVlN2U4MDJkM2Q0YzMzNjA1NzA2YzU2NzliMSByZWxlYXNlMjMtbWFpbnQKKzM1Nzk1IGM1YTU1MjU3ODM0NGY1Y2E3ZjQ0OWRlZGE3M2M2NTIzOWVlYWUyNTkgbGVnYWN5LXRydW5rCiszNTc5NiA5YjJiN2QzYjQyZjNhNjFkYzkwYjY2ZGIxYTJmN2I2ZDliZGVlNThjIGxlZ2FjeS10cnVuaworMzU3OTcgNjg3YjBjODI1NGZhYTQ1ZDI5ZDY4ZjIxYWMzMzg5NWYxMDQwMjhiNyByZWxlYXNlMjMtbWFpbnQKKzM1Nzk4IDY2NjdhMWQ4YWZiMTA0OGQwYWVhNDRjZDNkOTBkYTBjNjliNzgyNzUgbGVnYWN5LXRydW5rCiszNTc5OSBhNDYyNjRiOTFhNTE4Zjk1NGVlZGNjMWRjZGEyNTFhMTRjYWFhZDM3IGxlZ2FjeS10cnVuaworMzU4MDAgYjYxZmU4MjhiNzM4ODZmMjZmYmZjN2VjNWZhN2VlZDY4ZDNkYmFlNCByZWxlYXNlMjMtbWFpbnQKKzM1ODAxIDUxYTVmYjYwOTM0ZDc1MjM3NWMyN2ZiYWUyZjk3MDQ3MTk3MTU4NjggbGVnYWN5LXRydW5rCiszNTgwMiAyMjI5MDhkZmJmNThiZTk4MDM3NDUzMGFhY2ZkMDUxZmE2NTVmYWZiIGxlZ2FjeS10cnVuaworMzU4MDMgODYxNWYyNzhkYTVmMzU2ODFiZjZiMmU2YjVhNTlmMzcxZWQwOTE5MyBsZWdhY3ktdHJ1bmsKKzM1ODA0IDlmOGJmZDU0MjUxZjc0NDI4OTlhMTEyOWE5MDhhYjA2MTAzODk3OGYgbGVnYWN5LXRydW5rCiszNTgwNSA4YjJhNDI5YWY0MmZmMTY0MTVjZjZhNThhZjMxNzRjMWU1MGU3NzA3IHJlbGVhc2UyMy1tYWludAorMzU4MDYgYWI2ODBjNGFjZDM1YWY4MTNkMDJjZWM2NTc0OTI2M2JhNmQyMWFiOCByZWxlYXNlMjMtbWFpbnQKKzM1ODA3IDVlYjdhOGUyZjM0NTM5ODE2YWJhNDY2MDcxMjhlMzZkNjYyZTQwYzMgbGVnYWN5LXRydW5rCiszNTgwOCBiOWYwOTE5NjUyNmVhYjQwMDQ4MDkwZmM4OGUzZjYwNzk4NjAzYjYxIHJlbGVhc2UyMy1tYWludAorMzU4MDkgY2JiYWNkYTg0NDgwYWUyYmQ4NWQxYzYxMjZiZTc2M2M5ZjcxMTg5OSBsZWdhY3ktdHJ1bmsKKzM1ODEwIGExNDJlNGU5N2YxMzFhMGQ5OGY2NmY3YjgxMjAwYjQ5NjVlYzA4NTIgbGVnYWN5LXRydW5rCiszNTgxMSBlOGEzMWFiN2E4NzQ4ZTYxNDYwZmJhZTc0NjJlZGZhN2Q1MmY3M2EyIHJlbGVhc2UyMy1tYWludAorMzU4MTIgNGRlZTU4MzE1Y2M0MWZiMDRkN2I1NzExZTllZGY3YmU4OThmOGNiOSBsZWdhY3ktdHJ1bmsKKzM1ODEzIDY0NmNiMDE0Njk0MmUxZjU3ZDAzYWJhNzM2ZDU1YzNiZmE1N2ExZjcgcmVsZWFzZTIzLW1haW50CiszNTgxNCA4MmJjNjk5NjEwMjJkYzljYzljMmNiY2VkMzNmOGRmMmNhZmY5NWNiIGxlZ2FjeS10cnVuaworMzU4MTUgZjc5M2EwNDZlZDk4MTQyNmVhMjYzMmQ2MTAwNzc4NjEwNmI2ZmZlZSBsZWdhY3ktdHJ1bmsKKzM1ODE2IGViZmE1Y2Q4Y2JhNGQyM2U1Y2M4NDFiMThmOTc3OWM4NGE2NWY1NTMgbGVnYWN5LXRydW5rCiszNTgxNyAyNjgzOWYzMmU3MGQwNzFiYmZkMGJmNWI5YzJiMDZiMWVhMzBjNjlmIHJlbGVhc2UyMy1tYWludAorMzU4MTggNjQwODRmOWJhYmExZWMwNDZjZjhiOTg2OWI0N2I5NGRmYWU3MWZmYSBsZWdhY3ktdHJ1bmsKKzM1ODE5IDRlYjU3NGIxMjI1ZmFhYjdmNDQ4OWEzN2UxNDQxYjJiNjI4NjBjNTkgcmVsZWFzZTIzLW1haW50CiszNTgyMCAyY2M3MTQ5Nzc0NzkzNDE2ZTA3ZmI5ZDg1YmVlZDRjNjE4MGEyMDc4IGxlZ2FjeS10cnVuaworMzU4MjEgOTg0YjI4OTk5MmMwNjkzYzM1ZDdjMWI0ZjI5MGY1NDgxZTIzYzBkZiByZWxlYXNlMjMtbWFpbnQKKzM1ODIyIGMyNDkzMDViZmNhYzhhNTRlYzM2N2U3MzRjMDhjOTViNjljY2YwNTEgbGVnYWN5LXRydW5rCiszNTgyMyBlNGY1MmUyZTM4MDAwYjQ2NDVjNTE3MDI3ZTY0MGQ3YjkyMDA4NThiIGxlZ2FjeS10cnVuaworMzU4MjQgZWMwOWE3MTg0OWNjNjNhZGIyNmE2ZmI2MTU2ZTA3ZGQzNzQwYWQzNSByZWxlYXNlMjMtbWFpbnQKKzM1ODI1IGUyYTBlZjg3ZDRkNDBkYzQ0ZGRkNDhmYzQ2YzU2ZWQwYjIxMmUxNGIgbGVnYWN5LXRydW5rCiszNTgyNiAxNGY3ZjliODlkYTljNWRkM2ZlZmMwNDA2NDU3OGY3YjRiNjIxNmI3IHJlbGVhc2UyMy1tYWludAorMzU4MjcgNmUwNzhmNzYxM2FkN2FjMTFjMjRmNjg2NTg4OThlZDdlMGMwOTFmNiBsZWdhY3ktdHJ1bmsKKzM1ODI4IDQyZTJiNWFmYTcxNTczNTNjZDcyNmVlOGI0Y2Y1ZmYzMDY1NDY4MWUgbGVnYWN5LXRydW5rCiszNTgyOSA1NDRmMjE3MjM2M2QyMWY3ZTQ4NjI5YjZmNDhkYmU5OTFhNjc0NDY3IGxlZ2FjeS10cnVuaworMzU4MzAgNTA3MDhiOGYwZDI4NzgyZjcxNjlkMTAxMjkyNGI4NDE1ODYxOGUxNiByZWxlYXNlMjMtbWFpbnQKKzM1ODMxIGEyOWJhYzBhZTkwNWI5NGFiZmFiYTAxZDAxNDA0N2E4MWM1NDQyOTYgcmVsZWFzZTIzLW1haW50CiszNTgzMiAyNmUwOTBjY2JiNjRjMzdkMGI3MTliYzIyNDU0OWY4YzNlNzRjOGEzIHJlbGVhc2UyMy1tYWludAorMzU4MzMgNTgyZGNhMDJlNjBmNjU3YTkwNTE4NjM4YjllZGVmNzBmMTJlYjU2ZiBsZWdhY3ktdHJ1bmsKKzM1ODM0IDJkN2IwY2EwYzI2Yzk2MDM2NjM3OTFmMTI4ZTM5MTZiNDEyMWY3Y2UgbGVnYWN5LXRydW5rCiszNTgzNSBlOTAyNjlmYzE5MzY1YjEyYWM3NWRmY2E3Y2QwNGFkMDM2Mzg0ZjNlIGxlZ2FjeS10cnVuaworMzU4MzYgMzcxMjFjOGI2OTFkYTA4YTBiZmVhNWUzNTYzYjk0ZDYxNTRhMWU2YSBsZWdhY3ktdHJ1bmsKKzM1ODM3IDk4YTgwNzg4ODM1YzA2NjBlNmJjNGU4NTUwNzdlNmI5YjE0ODFiNGMgbGVnYWN5LXRydW5rCiszNTgzOCA0YzgyNTU4YjE1ZmIzYjY0MDlmMzE2MjY3ZjhmMjM3MjQyMjIxNDVlIGxlZ2FjeS10cnVuaworMzU4MzkgYTFiMzc0ZmYwMTg0MTY0YTQ5ODU1NTEwOTRjNTA3OTg2YjViNWEyNSBsZWdhY3ktdHJ1bmsKKzM1ODQwIGMxM2JiN2Y0YmNkMTg4YTcwZTNiZmZmNmFkOTlmYzhhZDkxZTVjNjYgbGVnYWN5LXRydW5rCiszNTg0MSA2MzVlZjExMDY1OGVmOGQzYzg5NzUwZDU4NzY0YjZmMDU0YWY0MGIzIGxlZ2FjeS10cnVuaworMzU4NDIgZGI2YTZkMzkxYTk5OGY1MmUzMjVhYThlNWE3NjRkOTY2NTBmNDFlYSBsZWdhY3ktdHJ1bmsKKzM1ODQzIGI1NTk0ZDcyNzlkZjY5ZTM1YmQxYTdlNDQ1NmZiNWJjZTljYzM3ZTYgbGVnYWN5LXRydW5rCiszNTg0NCBmNDM3NmY3Njc0YTIyMmU4NmZlNTk3NTIzYzk1YWJjY2JiYzRlZWQzIGxlZ2FjeS10cnVuaworMzU4NDUgYjljNjU4YWMwZTIwY2Q2YjZiZjU0ZDA3ZmJjZmQwZDE5NzFkODNjZiBsZWdhY3ktdHJ1bmsKKzM1ODQ2IDY5NmQ5MmVmZjAyMmZlNGY4NTk4ZGZmNWEwYTFiMmY5N2E4NjY3YWIgbGVnYWN5LXRydW5rCiszNTg0NyAzM2Y2YTE1ZGJmNmNmMDFkOGEzNzg4NjUzM2VlYTIyZGUzMzFjNTdmIHJlbGVhc2UyMy1tYWludAorMzU4NDggMDBlZWEyODEzNWY4ZmI3MWIxYTgwMGY2OWEzZTBiYzg1MzZkMTExYyByZWxlYXNlMjMtbWFpbnQKKzM1ODQ5IDM4MzEwOTQzM2E5NzI4NGY3MDQxMDY0YzM3YzMzNmJhYjhmMmEyYjAgcmVsZWFzZTIzLW1haW50CiszNTg1MCBiYTMxMjE2ZTM3YzhmMjFhNTcyYzZiYmMwZTI5ZWJjOGJhM2Q0YWU2IGxlZ2FjeS10cnVuaworMzU4NTEgMGIzM2UzNzM3YjRjYmQ3YzM3NjdlOWQ3YzRkM2U3YjU4MGQ4NDA3ZiBsZWdhY3ktdHJ1bmsKKzM1ODUyIGRjYmUwNDJiODkyZGY1YmJhOWY1NTNiMmE3NzY2YzU0ODVhNjY2MzAgcmVsZWFzZTIzLW1haW50CiszNTg1MyAyMmIwODAyYWJhNzQzN2YyNmVhZDYxMDdkYzA1NWRkZmU4MDg2M2YyIGxlZ2FjeS10cnVuaworMzU4NTQgOTFmNzZjZjQwNzNhMmFlOTRlOTU4YTViY2M4ZTk5YzJhYWEwMGIzNyBsZWdhY3ktdHJ1bmsKKzM1ODU1IDM1ODZhNzgwMWJkYWYzNmM0ODViNjQ1Y2RiNjY4ZWYwNzI4ZGZiNjggbGVnYWN5LXRydW5rCiszNTg1NiBjMzZlYTA3OTQ5MjAxZTc1MTcwOGJhYzQwYTg3ZjA5ZTMyMTkwNzQwIGxlZ2FjeS10cnVuaworMzU4NTcgZDgwM2FmY2U4YWM0ZTdmOGYzYTJhY2UxZWI5M2Y2OWMyNTMyOGM0NSByZWxlYXNlMjMtbWFpbnQKKzM1ODU4IDEzNmVmYmIxMTE3ZGViYjNhMDQzODNiOTk4MWU4Nzg2NjU5YjI5M2MgbGVnYWN5LXRydW5rCiszNTg1OSA5NTVlMjA2ZTUzZGMzNWUwNDljNWFkNTA0NTEzYTc1NDdkOTY3YjY5IGxlZ2FjeS10cnVuaworMzU4NjAgNmRiNDhjNWJkYjI3YWJlZWI2YzFmMjRkOTMxZTY2ODMyMzI3Y2E3MCByZWxlYXNlMjMtbWFpbnQKKzM1ODYxIDUwZDhhMjcyMTRlNmY4NTM4YTFkYjJmMzE0OWYxNWQ2ZTE2YTY2ODggbGVnYWN5LXRydW5rCiszNTg2MiA2NmVkZTAzODdmMzY3NDI4NGEzNmM0YTBjNGJmYWJiZDYwNzkxNDNmIHJlbGVhc2UyMy1tYWludAorMzU4NjMgOWY2ZDQ1ZjNjMDIzZDU3MTlmYzY0NDNmMTEwNzBhZDlkZGFhYzVmMiBsZWdhY3ktdHJ1bmsKKzM1ODY0IGMzOGEzOWQzODQ4OWIxMjY0YjIyYTg1YWI3ZjA2N2JhYTgyZmQ1OTEgbGVnYWN5LXRydW5rCiszNTg2NSA1YTIyNDY1ZmRhMjRmOWQ2ZjlhYmRiMDE4NDIwMWNjNWViNjk0NTExIHJlbGVhc2UyMy1tYWludAorMzU4NjYgZTg1MzU1Y2YxNzVhYWUwODUxZDFiMGFmMzgzZmI3Y2U2MDA1NmYzYSBsZWdhY3ktdHJ1bmsKKzM1ODY3IGQwOWJhZmI5NzY5ZjdlNWM3ODMwZjEzYjhjMTRkMDFhOGIyMDY2NTEgcmVsZWFzZTIzLW1haW50CiszNTg2OCA4ZmUxYTI2NjJhYWE1Mzg4MDBmY2M4OTcwNDU2NGFmMWIzNTgxZmViIHJlbGVhc2UyMy1tYWludAorMzU4NjkgYzc5Y2MwNDAzYWNmZWYzOWQ0YjA2ZGY4MTk2OGNhZmRmNGJkNDdiNyBsZWdhY3ktdHJ1bmsKKzM1ODcwIGM2ODAwODBmOTAwYzE2YzYwMjA4MzZiM2FlZTlkMGY1YmMyOWUyMzYgbGVnYWN5LXRydW5rCiszNTg3MSBlOWJjZTgzN2MxYzM4YzlkZGI1ZTY5MGJiMGQ1NWRkZTZlZjExMDc4IHJlbGVhc2UyMy1tYWludAorMzU4NzIgODYwMWM3ODVjNjgzZGVhMjJjNThjYzc4NDhkMzg3YzQyYzUzYjgwMiByZWxlYXNlMjMtbWFpbnQKKzM1ODczIGNmMzkyYjkzNmEyZTQ5NDIyMjBhZTdkYmNlZDIxY2NkMDAxODI5ZGQgbGVnYWN5LXRydW5rCiszNTg3NCAxN2JmOTVlZDc1NjJjOTgxMDZhNjAxY2UwOTNiM2FhMjI4NWVkOGI5IHJlbGVhc2UyMy1tYWludAorMzU4NzUgMTUzOGE4Y2ZiMGRkYTU0YTQyNGYyMzFlNGMxZDUxNDRjOTQxMzY1YiBsZWdhY3ktdHJ1bmsKKzM1ODc2IDUzYWJkOWFkMTkwOThmOTNlNTc3NTMwYzU4ZDE4MTY3OGNjNDFlNmIgcmVsZWFzZTIzLW1haW50CiszNTg3NyBmNjNkZDI5OWE2MGIyNzM1OWFhOWM3MzM2MWUyMGZhZmM4YWU5ZDE5IHJlbGVhc2UyMy1tYWludAorMzU4NzggN2FmZWI4MzZmNjZjNTZmZTc2ZjA5MWFlOTIzY2JjMWY5NDhkZjlmZiBsZWdhY3ktdHJ1bmsKKzM1ODc5IGEzOGNkNjNkMTdhNzRlNGViMzVhMzM3N2Q3YzE4MDlkM2YyODEzNWUgcmVsZWFzZTIzLW1haW50CiszNTg4MCA2NzU4YjYzMGFjYjdlZjg2MTQ0OGUwYjE1MWNlNDZmYjMwMTMzNWI2IGxlZ2FjeS10cnVuaworMzU4ODEgNjk0MzNmYzFjODE2Y2IyMmExNmZlOTYzMWM3YjUxYzkxY2Y0OGRlYSBsZWdhY3ktdHJ1bmsKKzM1ODgyIDQ2OWRjYjBhZDczOGJkNGQwMjA4OWJiNzhjNTQ2MDZmNGRlN2YxOGYgbGVnYWN5LXRydW5rCiszNTg4MyA2MWIyNmI5NWViMzNlY2M0NzQ5MjkwNjNjY2YxZTI4N2Q2MWNmNjZmIGxlZ2FjeS10cnVuaworMzU4ODQgMTIxYWFhNGJhOTIzNThmZWMxOTA1ZTFlNGRmYjFmZGQyZGQzN2VlZSBsZWdhY3ktdHJ1bmsKKzM1ODg1IDFjMjM4MWQ3OTdjMGY3NThkYWM4NWYxYmM5OGU3YTI0Zjg1NGZkNjEgbGVnYWN5LXRydW5rCiszNTg4NiAyN2RhODdjOTMxOGY1MzM0ZDJmNTgzOTMzZDdjYjQ5NmViYWY0ZmQxIGxlZ2FjeS10cnVuaworMzU4ODcgMDJmNzY5ZDdlNGE4ZTE3NGQ1Nzg0ZWY3ZTA5YWI2ZjE4ZTFiMmRmMyBsZWdhY3ktdHJ1bmsKKzM1ODg4IDI0YzQ2MDAxNDE2ZTFhMDUyNDc4YTllZDJiMDQ5YTEwNWRlNDA4ZDkgcmVsZWFzZTIzLW1haW50CiszNTg4OSBiMzE5ZGIzODY5ZDgyMmE2MjJjMmQ5ZDRiODFhZjdmNjk1ZTlmMzlmIGxlZ2FjeS10cnVuaworMzU4OTAgNjMwYTA5MTVhMzEwMWJlYzdhMDg1NDQxYzFhMmQ2YmUzZTJjYTFjYSByZWxlYXNlMjMtbWFpbnQKKzM1ODkxIGM3MDEwNzYwZThhZDE5YWJmZWQwY2VjMDZkNTcyMDk1YjFjNDVjZmIgbGVnYWN5LXRydW5rCiszNTg5MiBhYjBjOGRkYjJjOTI1MjhmNDQxYTA5ZTIzYmE2MDdmMGM3ZmRlOGJiIGxlZ2FjeS10cnVuaworMzU4OTMgZDY1ODljODhkMjNiN2E1Y2M2ODQzZWU0NzUwZTI1MzEzZmY3NjJiNyBsZWdhY3ktdHJ1bmsKKzM1ODk0IDMxOGJmNjk4ZTQyNWI1ZGRkNzkwMzVlNDk4MTdmMjBhNzRlYzZmNjcgcmVsZWFzZTIzLW1haW50CiszNTg5NSA2MDZhYWU5NWYxMjg5MjJmOGVmMTg1ZjVhMmFlNDBjMmE5ZDkwYmRlIHJlbGVhc2UyMy1tYWludAorMzU4OTYgNjU3ZmIyYTUwZThlZDMzNzA0ZWYyZDZlMjc0ZmFiNjI5MWQwYTIzZCBsZWdhY3ktdHJ1bmsKKzM1ODk3IDUyZTE0MGNhMTQ2YzVlY2U1MjdiNTIxOTczOWJmOWIzODRiY2M4MDQgcmVsZWFzZTIzLW1haW50CiszNTg5OCA0NWJhMmM2OWMzMWZkZGI3MmNhY2IwMTliMDY2Y2ZiZTkyOTA3ZWE3IHJlbGVhc2UyMy1tYWludAorMzU4OTkgNWUxN2QwNTMzYWQzNjQxOTdlNzM0YjI0YmQzOGI4YTVkOGJkZGE2NiByZWxlYXNlMjMtbWFpbnQKKzM1OTAwIDAyZjg5ZDEyZjAzNmY2YTgzMjFkZDJhZmY3YmUxZjc4YTkzZGNlNjEgcmVsZWFzZTIzLW1haW50CiszNTkwMSAyMDY1M2M5MDNkMWNhZmRhMmQwMTJhNzUyZTJmMzI4NWUyNjc2MDRiIHJlbGVhc2UyMy1tYWludAorMzU5MDIgZjc4ZDkzOGQ3YmIwODA0YTc2YjhhMDRiNmE5NmY2ZDlmOTE2N2M2ZCBsZWdhY3ktdHJ1bmsKKzM1OTAzIDI0NTgzNWVkOGRlOGRmMzc3MzgzZDFiODY1ZDliM2E5M2E1YjU3ZjYgbGVnYWN5LXRydW5rCiszNTkwNCA3YWZiMTNjMmQ1MjZmNDgzNzNlZGJiOTM2NzE4YjFiMzQxMzM4Y2U1IGxlZ2FjeS10cnVuaworMzU5MDUgMDU5MzE1OGQxNGYyZDVkMTI1M2JjOGJkZjA2MWYyZWY2NThjZWRhMSByZWxlYXNlMjMtbWFpbnQKKzM1OTA2IGFjZTNmMTNjMTgzNmY3OTBiYTZmNTJhNjc3MjFjZjkzMmUwOTk1YjkgcmVsZWFzZTIzLW1haW50CiszNTkwOCA1MmZlOTNiNjU2Y2Y1OTNkNDk5NjYzMDZlMmY2NjU3NTBjODQ3YjYyIGxlZ2FjeS10cnVuaworMzU5MDkgYTRiNTI2YjUwYzEyMjBlOTFmODg0NDE4ZjQ1MjAxYzlkNTQ5ZWRiNCByZWxlYXNlMjMtbWFpbnQKKzM1OTA5IDM2Mzk4NjFkMDI2NDZhZjFkYTMxMjNjMjU1NjBjNGRiM2Q3ZWRiY2UgcmVsZWFzZTIzLW1haW50CiszNTkxMSBlZTdmY2RlNTYzNmVhMTcwZjgwODM0MjQ0OWFhYjdiNTA2M2NlYWExIHJlbGVhc2UyMy1tYWludAorMzU5MTIgOWZlNDU3OTdjMDk3ZjQzODgwNjBmYWMxYzNiNzlmMDRmYzlmOWQwNiBsZWdhY3ktdHJ1bmsKKzM1OTEzIDI4MmRiZDliMWVkNmI3YTY5MjUxNjM5NWVhZjdkYmUyZjBmNzBmMTggcmVsZWFzZTIzLW1haW50CiszNTkxNCA2NzcyMzkxMDgzYzliNzUxZTQzY2Q0NTQ0YmQ3ZDhjZWJkNmU0OGJmIGxlZ2FjeS10cnVuaworMzU5MTUgZDZkZWFlOGJmNzliYjA1MmFiZGIzYWExMzA4MzMyMjEzYmYyMzk1NiBsZWdhY3ktdHJ1bmsKKzM1OTE2IDAwOTQ5YmM2N2U0OWJkZThmYmMxZWE5ZjY2N2U0MzUyODBmZDI2ZDUgbGVnYWN5LXRydW5rCiszNTkxNyA4YmQzMmM1MTU0NWUzZGY4MTRiMTQzNWNlYmZmOWZkYTUzZGRiNTcwIGxlZ2FjeS10cnVuaworMzU5MTggM2VkZjhkYjZmOGJmZDk1OTdmZWQxMDI5MDA5NTA5ZTgzYjFkYWI2NSBsZWdhY3ktdHJ1bmsKKzM1OTE5IDlkNTg0N2I4ZjMwMTFiNmZiMTJlMjUxMmNkNjcyNjMzOWIxOGUwNmMgbGVnYWN5LXRydW5rCiszNTkyMCBkM2NhNmJkY2JmM2M0NjM3NjczZTk4NzQ4ZmFjNDQwYjlkYWZmYmU4IHJlbGVhc2UyMy1tYWludAorMzU5MjEgMTYzODZjYmNhYjk5YzFhYzE3YmZiNTY4YmI5N2E4MGE2ZDc4YWI1MyByZWxlYXNlMjMtbWFpbnQKKzM1OTIyIDJkMzQ1ODVjM2I5OTQ3ZTY0OGRlYTM4MTE4YTMxNzg4MTI5MjA2NzkgcmVsZWFzZTIzLW1haW50CiszNTkyMyAzNzUzOGEzNmI2ZTJiMmFjODBjZTBlNDAzM2Q5ZTc3NmI2YzNmY2YzIHJlbGVhc2UyMy1tYWludAorMzU5MjUgYjUyNTU1NTJhYTZkYTQ5ZmI2M2Y4M2NhZmU0NDc2YWQzZTE0YTM3MyBsZWdhY3ktdHJ1bmsKKzM1OTI2IDk2YjYyNjk5YjIxOGY5ZGY5ZGRlMDA2M2U4ODEyODA4YTE4ODc4NjEgbGVnYWN5LXRydW5rCiszNTkyNyA2NjcyZjczMDkzZGEzMzNjODZjMWY0YTBmYTllZTI2YjliYWU4NTUwIHJlbGVhc2UyMy1tYWludAorMzU5MjggN2UzYTJjMjc0YjM2ODNmZjI2OTk2MGQ2YjM4NzNhNTBjODQwMTMyNSBsZWdhY3ktdHJ1bmsKKzM1OTI5IDRhN2Y3ZTgwMTZmYzI2YjVkNTg0MzVkMzZiZjdiMjAzOTBiNTg1M2YgcmVsZWFzZTIzLW1haW50CiszNTkzMCA5NGI0ODQ1ZTRkYThjNDk2NGU2YTI0NmNhNWQ4Nzk0NTBjZTgxMmJlIGxlZ2FjeS10cnVuaworMzU5MzEgMzAwZDVkNDYyMzg3MjE1ZTIwMjllN2ZhMjdkNjljODRiNWQxMjgzNSBsZWdhY3ktdHJ1bmsKKzM1OTMyIDNhZTAxYTExMDgwMTIyZmE0N2M1NWNlMTYzMmI5MGY0YTAyMzlhMDMgcmVsZWFzZTIzLW1haW50CiszNTkzMyBmYTc1M2MxNmM2MzMzYmYzZjk5MmU0M2ZjMmVlNWE3NTMwMzVhMWE2IGxlZ2FjeS10cnVuaworMzU5MzQgMWQxMzU3NDkwNmVmY2M3MTljMDAxYWFiYTM0YjU5ZGFjYTE4NjM3MCBsZWdhY3ktdHJ1bmsKKzM1OTM1IDcwMDIzYWYyMDg1YWI1MGVjMzIzOWM4NGZmOTY1MjljZjU4ZmRkYWYgbGVnYWN5LXRydW5rCiszNTkzNiA4NGRmYTlhNjdkYTE0NjE4MzIzMWEwOTcwNzA3MjBkYjRlYWM4YmJiIGxlZ2FjeS10cnVuaworMzU5MzcgYjZlNGJmMzM2ZGI4YTI0NzcxNTRhNzBkOTQ3ODkxZWU4ZDI4NzBjOSBsZWdhY3ktdHJ1bmsKKzM1OTM4IDI5YTU5ZjY2MmRkMTA0OTEyZWVlM2UyYTQzZWMwNWMzMmYwMzU5NTcgbGVnYWN5LXRydW5rCiszNTkzOSAwZGE0NGVhMDk5ZjU2OGUxZWU0MThjZDUyYmY5MjIyN2VjYjM0MGFjIGxlZ2FjeS10cnVuaworMzU5NDAgZGQxZTU1ZGVhZjUyZjhkYjNiOWIzMzQzZjkyZGQwMGQzZjNkNDExMSBsZWdhY3ktdHJ1bmsKKzM1OTQxIGMyNWE4YzA0ZGUzZTYxNTA5NDYwZjBjMThlZDVmOTNkNDMxNmY1NGIgcmVsZWFzZTIzLW1haW50CiszNTk0MiAzMDJkMzk5Y2ZkMzdlZWIxYjk3ZGJiYzgxOWU2NjFkMzMxNzgzMmMxIGxlZ2FjeS10cnVuaworMzU5NDMgOTU1NzdiNjM1YmI0MTkyODIyZTM0ODk1Njk3Yjk5NzUyYjFhNDlhNiByZWxlYXNlMjMtbWFpbnQKKzM1OTQ0IDVmNGYyZjUzNmY5NjFhYjIwMGRmZTczMmU0ZDI4ZThjNDIwZDFjODAgbGVnYWN5LXRydW5rCiszNTk0NSBkMWE5ODc0YzA5YjY5NGRhYzBiYzg3ZmIwYWIwNjVlMWY2OTI2NmFmIHJlbGVhc2UyMy1tYWludAorMzU5NDYgYjllZGQzNDE4YTMxZDkxNjQ4ZDNlYWZhNGU3Y2FmNDZmMmMyZTE0ZiBsZWdhY3ktdHJ1bmsKKzM1OTQ3IGIxNjY0YTgwMzQ4YWRhZjhhZDFiMGVmMDBhY2U3ZWExOGEwOTZlYjYgbGVnYWN5LXRydW5rCiszNTk0OCBiZGEwNjZjOTZlNGYxYTIzOGQzYjFmYmRmZWJjYTA2MTczZDM1MjhhIGxlZ2FjeS10cnVuaworMzU5NDkgYjVlNDBmNWQwMDBiNmE3MzBiMGQxMDVmMGVkNDc0MDUyMTQ5OTVmYSBsZWdhY3ktdHJ1bmsKKzM1OTUwIGFmZjY5ZjgwZjk5ODI1NDkzNGZlOTUwYmRkOWI2NWNkNzFhODMyMmMgbGVnYWN5LXRydW5rCiszNTk1MSBiNWExZTM2NzNlNWJlMTU5MTQ2YzUxNTBlOTNkNGZjYTM0ZGE3NWQwIGxlZ2FjeS10cnVuaworMzU5NTIgOWU0ZDE0NWJiNWNjNDY0MTQ0ZjY5NDVkNTEzNWUwMTExMWVkNTJiYSBsZWdhY3ktdHJ1bmsKKzM1OTUzIDI3N2Q0ODNmNTk2ODk2MmRiMWRjYmE2YWRhODRkZWFhOTJiOTdiNDkgbGVnYWN5LXRydW5rCiszNTk1NCBiNThkMzBmMTE2ZTJhODI0Y2UzNzY3MDRhYTczMzY0MzMyMzcxNzIyIGxlZ2FjeS10cnVuaworMzU5NTUgMzFiZGJlYzhmMjgyYzA2YjFmMmIzZDliYmU4ZDE0ODU3ZmQ2YjNlMSBsZWdhY3ktdHJ1bmsKKzM1OTU2IDRlNWI5NzhlNmI3ODAzNmQxMWQ2MTcxZmQ2NWNhNjIzYWEzZTVkOWEgbGVnYWN5LXRydW5rCiszNTk1NyBjMWNmYzVlNDgzNGQxOTNlNzVhMjUwY2IyZGFlOWZmZTY0NDljZmNmIGxlZ2FjeS10cnVuaworMzU5NTggZTA4MDM0MDdlMzc3NGU3M2MxNTZiZTk5NTk0Y2I3MzY1NzM1ZDQxYiBsZWdhY3ktdHJ1bmsKKzM1OTU5IGMzOTUyN2UyODAxMGZjMWVmNzFiODcxMmZmZmYxNWU3MzU3YzA0ZjIgbGVnYWN5LXRydW5rCiszNTk2MCBiMDU2YmJiNGVkZjk5NGRiMDdiMzY2NDZhOGY2YmUzNDllY2UyNWQ4IGxlZ2FjeS10cnVuaworMzU5NjEgODk5YTFmODhjYzVmMjQyZThjYzRjODA5ZTQ0ZjFhMzk3MzkxZjUxYyBsZWdhY3ktdHJ1bmsKKzM1OTYyIDMwNGEzN2MyY2I0MjU3YjZlZDNlMTdiYmQ5MDlmZDMyNzEwZTgxYmEgbGVnYWN5LXRydW5rCiszNTk2MyBhYTIzMzA2YTNmMjY5OTZhMWVhN2MxOTM5ZTlhZTVmMDNhMGUyNDk5IHJlbGVhc2UyMy1tYWludAorMzU5NjQgY2UzYzI3NzdiMjIyZmY1OWFiN2MxMDBkODA2NjExMTZhMjU5OThkMCByZWxlYXNlMjMtbWFpbnQKKzM1OTY1IDM3Y2FjMDY4ZjAzZmQ0NmUwMWRlOWY4NmE3OGYwNWZkNDMwMTllODYgcmVsZWFzZTIzLW1haW50CiszNTk2NiA1OWFhNTM0NThhOTNiNjI0YjBkZDZjNTRjNjFmOTgyYjBjZjliMGNiIHJlbGVhc2UyMy1tYWludAorMzU5NjcgYTEwNGFhNTQ5YTAyMmEwNmUyMzliMjE4N2ZlZGQ3MGQ4NzhhNzFjMyByZWxlYXNlMjMtbWFpbnQKKzM1OTY4IDVjYjI0ZGI4ZmM5NWIzNTljNjIyNWFjZTkxYjBjMjYyY2QzNzQzNGYgbGVnYWN5LXRydW5rCiszNTk2OSBiYWVkZjVmZmIyNmI0ZDJiNTA2MzUxZjI3MGVmMjIwODE1YTk3YjI5IGxlZ2FjeS10cnVuaworMzU5NzAgMDkyYWMxM2E0YzQwYTJmYTJkMTEyNTA3MTU4ODVjMjYwOTEzYWJiOCBsZWdhY3ktdHJ1bmsKKzM1OTcxIDY1ZjlhZDliYzgyOWRjOGI1OGVmZWI4NTVlYTU0Nzk2OTVlOWYyOGIgbGVnYWN5LXRydW5rCiszNTk3MiAwYWZhODFkYjRjYjdkMjRmZjJkOTlhZjkzZWQ1NzkyNzVhOGY5MGIxIHJlbGVhc2UyMy1tYWludAorMzU5NzMgMjY2ODg0YjA0OGJkMTI3Y2QzOTQwYTBhOWZmOGRlZjgzYzUxMzEyYSByZWxlYXNlMjMtbWFpbnQKKzM1OTczIGE3NGY5MDgxYzY5NzA4NzhjYWJlMTUxZjk2OTYxNzU4NzkxNTQwMGMgcmVsZWFzZTIzLW1haW50CiszNTk3NSA4NTM2NTk4Y2YwNGQ2MzY5ZDM1ZDFlNmNkNGQyYzFlMDI4MDFlY2ViIGxlZ2FjeS10cnVuaworMzU5NzYgZWZiODRlZDczNzdkZGQ2YzM5NWQ0ZjBjMDE3NWY3MzUzNWM3NGFiMyBsZWdhY3ktdHJ1bmsKKzM1OTc3IDU2YTRlYzA2NjYyMWRhMzkwNDBjMjc3NzBlYzAxNzk1ZjE4Y2ZhMTcgbGVnYWN5LXRydW5rCiszNTk3OCAyODYyYmY5ZWY5MTNlZjA1YjM5MjM5OGIyNzdkYjU2MWVhNDY0NTU4IGxlZ2FjeS10cnVuaworMzU5NzkgNjc5ZTVjOGVmZmFlMjExMmNhOGE0ODM3NjA4N2JlM2ViMWM2ZWE5YyBsZWdhY3ktdHJ1bmsKKzM1OTgwIDJjMTY5Y2E1ZmE2OWI4NDlhZDNkZmU0NTExYjE2ZmQxNTc0YTg1ZmEgbGVnYWN5LXRydW5rCiszNTk4MSBhZWM5Yzk4YTQ3ZDJlOTUzNjYyNGY4N2UyZDhiZTE3NTRiZjQwNjBlIGxlZ2FjeS10cnVuaworMzU5ODIgYzY1ODU1YzVkNTZiMWQxNDcxYjZmZGNkZjI5Zjk1NDU4ZjFmZDIyMiBsZWdhY3ktdHJ1bmsKKzM1OTgzIGU1MzE2MjI1MmZiZTUzNzhhNTBlNmVlYTVhNzI4NzY0NDc0OGNhMmUgbGVnYWN5LXRydW5rCiszNTk4NCBmYWQ1MmZmZDg4OTI0M2JhMWQwYzVhMWRhMzc0NjljZTFjZmUwZDMyIGxlZ2FjeS10cnVuaworMzU5ODUgMThkNmE4Zjk5ODIzODYxNGFlOGY1ODZmZjBhMjYxMmNjNTBmYzQ3ZSBsZWdhY3ktdHJ1bmsKKzM1OTg2IDQ0ODI4Y2MxMzZlMGMwYmQ1ZGYyZTU0Y2ZlMjUxMDdmMDIxZTkxOTEgbGVnYWN5LXRydW5rCiszNTk4NyBmOWQ1NGU5YjMwYmM4MTlmNjUzMWVlMWQxMTdiODM4MWQ1YzUzMjhkIGxlZ2FjeS10cnVuaworMzU5ODggZDA4N2E5NWU4MDMyMzE5MDJiMjhjMTBlMGUyMGI0YTJlNzNkZGJmNSByZWxlYXNlMjMtbWFpbnQKKzM1OTg5IDYwZWYxZGIxMGNlZmJiMDgyMTE2NjRiODBjMjk0ZDI3NTA2OTU2NjYgbGVnYWN5LXRydW5rCiszNTk5MCBmOGZmYTNlNmM0ZjJkZDhkMDA3NDM3NGVhMzFhNTU4ZjVkMWM5ZDVlIGxlZ2FjeS10cnVuaworMzU5OTEgYWNhNDQ1YTZiZWI3OTFhN2E1MzJmYTZhNmYzMzA3NGM5MWQ0NmY5MyBsZWdhY3ktdHJ1bmsKKzM1OTkyIDk3YjkwOGE5OTcxYTY0ZjBkMWNiMTNkMWVlZWY3MGQxODg5NWMyMzkgbGVnYWN5LXRydW5rCiszNTk5MyA3NDdiMmRjODI0NGZlYTMxZGIzOTE3OTdkNjlhNjZhMTg4NmRjOTY5IGxlZ2FjeS10cnVuaworMzU5OTQgYzc5YmVmYjNjMzE0ZDVmNWFlMWMyN2RhNjMyODEzOGE2MjUyZDZlMiByZWxlYXNlMjMtbWFpbnQKKzM1OTk1IGUyYjgxZjJjOGE3MGRhMjVlNzlhMjMwMTM0OTM4ZjA0ODA3YjQ4NTYgcmVsZWFzZTIzLW1haW50CiszNTk5NiA4ZWU1YTU2YjgwMzEyYmNjYTJkNWJmMWIzNDRhNzI1NDJmZDZiZTU5IGxlZ2FjeS10cnVuaworMzU5OTcgZWJhNmJhZWVhNGVhYWY4OWI5OGE4MmUxNzA0Yjc5MTk0NTIxZmQzNCBsZWdhY3ktdHJ1bmsKKzM1OTk4IGQzNjFjMTM1ZmE3NGU4ZDhmZjUzMGQ1YmFmNDgwYjY0OTk4MGJkMjUgbGVnYWN5LXRydW5rCiszNTk5OSAwNDFmODljOThjMzViZWU5MDFlMzhmYzRlMDZjYjA2YjZmNzc1MWQyIGxlZ2FjeS10cnVuaworMzYwMDAgMjc1YTc3ZjlhNTAwNjY0MzQxNDVjZGQ4ZWI3ZjljZGFmNTYyNmJiZiBsZWdhY3ktdHJ1bmsKKzM2MDAxIDU5YmIzYjFkNjA1OWQzMjYwMzg0ZDU0Y2E1NjY0YmRjZWVhM2ViMTcgbGVnYWN5LXRydW5rCiszNjAwMiBmM2QwNTY4Yzk0MzJmMGJhYWU4ZjRjMWU1NmE4YzkyMGFkN2I1ZjYwIHJlbGVhc2UyMy1tYWludAorMzYwMDMgMjI2NjI1ODljNGUyMDk4OWMyZjAwZDU4M2ZiYmFmZDJkM2FiNDIxNyBsZWdhY3ktdHJ1bmsKKzM2MDA0IGE3OTliMGQxYzU2ODdlODY5OWQ2N2ZmZGUzODRmNDNiM2RiYTVlYmYgbGVnYWN5LXRydW5rCiszNjAwNSBmMTU5YjE1ZjFmNWNiYWZlZjg5OWZjNWI0M2QxYzhkZjEzOTllYzVmIHJlbGVhc2UyMy1tYWludAorMzYwMDYgN2M0NjFhZWU3NDFiZWExYjY1NmM5ZjE1OTIzNWM1ODQxZDhiNDA5MyBsZWdhY3ktdHJ1bmsKKzM2MDA3IGFhMzlmYWMyYTlmZGY5ZmE3YTBlNGY4YzEzZjBhYjM2YjA0MjhmMzYgcmVsZWFzZTIzLW1haW50CiszNjAwOCBkZjliZDEyNzczMGFkYzllODJiNjc4Y2JhOTI2ODAzZTAyY2VlNWIzIGxlZ2FjeS10cnVuaworMzYwMDkgNzMwYTAzZjVkOGI0ZGUyZDIwNGRmNzE0MWJjYTY1NGRjZjMxZTg4ZiByZWxlYXNlMjMtbWFpbnQKKzM2MDEwIGM3ZDliZTczYzdkZGIzMzVhODVmNDkzOTk4YWIwYmJkYTNlY2YzMTIgbGVnYWN5LXRydW5rCiszNjAxMSAxODVmNWQ2YTNhODhhOWExM2E1N2ZiMjIzYzJhYzU1YThlNDQ4YjA3IGxlZ2FjeS10cnVuaworMzYwMTIgMDNjODk1ODM5OTc5YzNkY2ZhMzEyZmQyOTVmZjAyNGQ5Nzc1Y2UxNCByZWxlYXNlMjMtbWFpbnQKKzM2MDEzIGFiNWMwODI1N2FkN2I0ZTc3OWM1ZDIyYTU0OGM2Yzk0MDFjZmJiZDUgbGVnYWN5LXRydW5rCiszNjAxNCBiM2M5ODFlZTlhZTk1NTgxZmE2NjAyZTRmNjNmZDAzZGYzNjNkNzUxIHJlbGVhc2UyMy1tYWludAorMzYwMTUgZDNhYWQzNzdhNWE5MGQ5ZmYwYmE4YzEzNWE5MDQzMWE0ZTJhNGJiYiBsZWdhY3ktdHJ1bmsKKzM2MDE2IDg4MDcxZDIwOGIzNGFhNGVjNDMyYmRhNDNlMjBkZjBjNTNmNDM3NmQgbGVnYWN5LXRydW5rCiszNjAxNyBhYjUxOWRlMTc2YmI5NDhmNDU1YzkxMDJlZDAwZjE3ZGQ3ZDcwNjdmIGxlZ2FjeS10cnVuaworMzYwMTggM2E4NGUyM2IwNDJmNDVlMDVjNzhjODMyYjZhZTJiZGQ1NGQwZGQ1YSBsZWdhY3ktdHJ1bmsKKzM2MDE5IDZmMjY1ZjJjY2IzM2NhYjdlM2YzM2UyNzE2NDRiYWRlNjEzNjRjOTIgbGVnYWN5LXRydW5rCiszNjAyMCA2ODIyMDI2ZDNjM2I0MTlhOGJkZDEzNzY3NjE5NzBhNmQwOGExMDkxIGxlZ2FjeS10cnVuaworMzYwMjEgMjJmZGFlN2JiYTFhZjcwNTExMjJmOTNjYmFjYzQ3MmVlY2FhOTkzNiBsZWdhY3ktdHJ1bmsKKzM2MDIyIGU2MjFlMmExYWIzMTAyZDNkNzMyMDIxMGNjNDQ5MGI1N2JjMWMxYWQgbGVnYWN5LXRydW5rCiszNjAyMyBlNWIwNDc3NjUyODViMzcyODViNzM1Njg4MTE0MzgwZWM4MzQ2N2U2IGxlZ2FjeS10cnVuaworMzYwMjQgYWJkNGI3OTU1MWQyZWE5MWZhOWJhOTE4ZjE0YjZiN2FhZjJkMWQyMCBsZWdhY3ktdHJ1bmsKKzM2MDI1IDlhMzkwMWJmNjIyMmY5OTE5YzIwNmE2Yzk5N2U3ODJlNWMyMDE2YzQgbGVnYWN5LXRydW5rCiszNjAyNiA2ZmZkZGE0Y2MyMjIxNWJjMzZiYTFmOGI4YWZhMTRiMDYwMTVkZTdhIGxlZ2FjeS10cnVuaworMzYwMjcgNWQ5NDJiZWRkMjhmOTNiNmIzYjIyOWYwY2YxZDFkNjc1YjU0NjVmZiBsZWdhY3ktdHJ1bmsKKzM2MDI4IGI5ZDNhYTNjZGU4YTVjMWE0MDM3YmMyNjNiMmVlNjdjZWU4NzM2MGMgcmVsZWFzZTIzLW1haW50CiszNjAyOSAzNzcxZWE5YTkzYWFkYTcyZWQwMDllNGY2ZGE5MmY2MWJlMzNiMDk5IHJlbGVhc2UyMy1tYWludAorMzYwMzAgODRlOGZlOTEyNDQwZDRiMWI5NzRiZjQ0YmJmNzU2NjUzOTc0NGYwYSByZWxlYXNlMjMtbWFpbnQKKzM2MDMxIGViNDFhNDg5Y2MyZjc4ZDFkNDEyMjdjZmRmYTE5ZTJjZWUxYTljZDYgbGVnYWN5LXRydW5rCiszNjAzMiAwMTA1N2U0ZjBhNjJkMGQxZmVkZTZjMmVjMjljZjAxNDlmOGU3YzkxIGxlZ2FjeS10cnVuaworMzYwMzMgZWIwZjg3MjY4ZDcwYWUxYjI4NzY2MDM2NzJhZjI5MTE5YzU2Y2E0OCBsZWdhY3ktdHJ1bmsKKzM2MDM0IDcwZGVlMmIxOTNmN2Q1MzExNjU2NDVhZDZkY2Y0OWNlMjYwYWFiM2UgbGVnYWN5LXRydW5rCiszNjAzNSA2NDc4ZWI2YWUzYzAxZTg0NjkxZDk1NGE5NDExOWNkMjFiNmZlNDc0IGxlZ2FjeS10cnVuaworMzYwMzYgYjAwYjI2Y2JjMzAzYWZlMWExZjcyYWI2OTNmMmM0OWIxMGVhY2FlZiByZWxlYXNlMjMtbWFpbnQKKzM2MDM3IGMwODYzNjY0NzliMWUwMGI2ZDEwZWVjMWZlNTg4OTFjMTg1NjIyZjggbGVnYWN5LXRydW5rCiszNjAzOCA5MWVhZTFlOTI1NzgxYjU0YzIzNWQyZDM0MWQ0NTM5NzhjMjA5MGYyIGxlZ2FjeS10cnVuaworMzYwMzkgZmRmNzVlZWY2YTVjMzNhOGZmMmFjN2JhYWY0ZWIwNGUzNjUyYjA5MCBsZWdhY3ktdHJ1bmsKKzM2MDQwIDJjYzdmZjQyYjlhM2QxMTYyODM5NjlmZDZjNTBlMmZhNThmMTI1YjYgbGVnYWN5LXRydW5rCiszNjA0MSAzYzIxNTg4NzYxOTRhMWFjY2EyYzJkNjI2ZDk1ZGRhN2QxNTlhNGQ0IHJlbGVhc2UyMy1tYWludAorMzYwNDIgZWQyMjhlOGExMzlmYjkwODk3Y2IxZjlkNzhkMzdiNzk5NmRiMzlmNSBsZWdhY3ktdHJ1bmsKKzM2MDQzIGVmY2E1MWVmNzg5ZGFmNWE0Y2EwZGZlZjQxNWMzNDk1YjI5NzBlMzUgbGVnYWN5LXRydW5rCiszNjA0NCBiMTA4N2UxZDQ0Nzk2M2FjZWI5OTczMTQ2ZTg3YWNhYzIwZGU3ZDk3IHJlbGVhc2UyMy1tYWludAorMzYwNDUgZmY2OGQ2YTVhNDQxZjZiZDJmNTk1MzM1N2M0MzM3OTVmMDIzNTM1MiBsZWdhY3ktdHJ1bmsKKzM2MDQ2IDE5NTRiN2VkYmZlNzAwMDM2ZWI2ZjU0M2YxZDEzN2ExYmNjODE4YjkgbGVnYWN5LXRydW5rCiszNjA0NyA5OTQyNDYwNGQzNmEzNzdkMjkxZGQxMTc5ODdiODY2ZTRhOTUyMzBhIGxlZ2FjeS10cnVuaworMzYwNDggYjc5MWY2NTU0ZDI4ZjJlZWFjZDJkMWYwM2Q1MDZlYzllZTljM2M4YiBsZWdhY3ktdHJ1bmsKKzM2MDQ5IDNiZmUyZjQyYjhmOTM4M2Q2MDVhZmE1NGVhODViZWU5OGY3ZjM3MjQgcmVsZWFzZTIzLW1haW50CiszNjA1MCAyNzk2N2ZiYmE0OGYzMWQ0YTgyNTRiODYwMDAyMWRmYWY2NzRlN2RhIGxlZ2FjeS10cnVuaworMzYwNTEgNmZjODgyN2M0MDNjMTYzNDE4YjBlYjQ4ODNjMzIyMWU5OGM5YzE3ZiByZWxlYXNlMjMtbWFpbnQKKzM2MDUyIDUyNWFiYzY2YmNjMjhjMGZiOTQzMmM5YmU4YjM0Nzk3ZjRhNjQ4YjIgbGVnYWN5LXRydW5rCiszNjA1MyAwOTAxMmM2YjIwNjgwNWMzZjM1YzQ3OThkOWFjZmY0MDZjNWFiZjFmIGxlZ2FjeS10cnVuaworMzYwNTQgZWQzNzQ2ZGFkNzA1YTJiOTY2ZTUzYmFlYjFhNzU2Y2ZmMWQ4N2I0MSBsZWdhY3ktdHJ1bmsKKzM2MDU1IDZjMjhhZDgwNDdmMmRmYmE5MThlZTNlNGM1ZWU0NzJlYWRiYmJiM2IgcmVsZWFzZTIzLW1haW50CiszNjA1NiA4YzQwNzkwNjE3MDg1OGM1ZTc1YWRiOTU1ZDFiY2I2MTQwNWU5NGY2IGxlZ2FjeS10cnVuaworMzYwNTcgZDI0NGI1M2VjZmJlYmUwYzVlNmU3MGVjYjlkM2I5Nzc4MGFjMDUzNyByZWxlYXNlMjMtbWFpbnQKKzM2MDU4IDk2ODlkYTAwMTE5N2ZhOWVlZThiNGJjNWQ5N2QxMWExOTZjMWJlNDIgbGVnYWN5LXRydW5rCiszNjA1OSBlOGI0ZjU0ZjdkMTllYzY3Njg4YjgwMjA0N2ZmNzA0Nzc0ZDY3MjA0IGxlZ2FjeS10cnVuaworMzYwNjAgMzAwZGI4MWUyZTRhY2JlYzIyMWNhM2MzODAxMDhkOTdlMWFjMzFmOCBsZWdhY3ktdHJ1bmsKKzM2MDYxIGE2ZTA0ODQ3MjgwYTI2ZGVhNWU2OTg5NDNlODRmOThiYjg5Zjg2OTMgbGVnYWN5LXRydW5rCiszNjA2MiBiOTM0NWMzNTVmMDRiNzE5NzczNGUzMGU5MjZmMTE2ZTQ5ZTcyMDYzIGxlZ2FjeS10cnVuaworMzYwNjMgMGJkYjQ5YTVhOGZhNjMzNjUyYzQwOTRkYjhiNDM3MzAxMjBjZGE1ZSBsZWdhY3ktdHJ1bmsKKzM2MDY0IDY5NDUyOGU4NWEwNGQxZmJhNjNlNWVmZjZhYTFlM2Y1YjM1NzYzNDMgbGVnYWN5LXRydW5rCiszNjA2NSBjOGEyMmI1Y2Y1OGE1OGJhYTJhNjg1NDk3MjU0MmU0ZGZjNjQ3MjA4IGxlZ2FjeS10cnVuaworMzYwNjYgM2Q2NDI0YzAzODg4MmVkNTk2MmUyMTZhODEyYmNkZjA0MWE1YjI3YyByZWxlYXNlMjMtbWFpbnQKKzM2MDY3IDcwY2ZlMDY1ZWFjNTkyNjQ2YTJhZWJiYTMyNWIzZGMyMjg2MDkzYzQgbGVnYWN5LXRydW5rCiszNjA2OCBhOThmNTBlNTBiZWZhMWU1MmIwNTMwMWVmZDM0YTgzYzdkMmZmNzk3IGxlZ2FjeS10cnVuaworMzYwNjkgZGY0OTQzZDI0Y2I2ZGRkZTQ3NzIwNjZjY2YzOGJiZmM5MDhhYTFkNSBsZWdhY3ktdHJ1bmsKKzM2MDcwIDc0MDljMGMzNzBlMjEzMjU4ZGY4M2M2NWQwYWQ4OWVmYzI2OTg2MzIgbGVnYWN5LXRydW5rCiszNjA3MSBlZmNhMzUzZTdmZDY3NWY3MTE3OGFkOGMxMTZhZDJmOTgxOGM3OWE2IHJlbGVhc2UyMy1tYWludAorMzYwNzIgMjlmODc5MzJjN2M3OGJjYTM2N2JiNzU3YTk1NDVhNTk0M2JiNzZjZSByZWxlYXNlMjMtbWFpbnQKKzM2MDczIGE3MmJjNDI1NzMzNjUxZWI2MTQ5NWVlMzVlY2YyNGIyZmY3YmM4ZTAgbGVnYWN5LXRydW5rCiszNjA3NCBlYzZmOWExOTA4MzE5MzFjZmFkZDU1NzM5NjRkODM4MTAwOWQ0NWRhIGxlZ2FjeS10cnVuaworMzYwNzUgMTBhMDFjZTNlYTBhZTAxZGMzNTVmMjdlZmUxMWNmYjI5Mjc2NzFhNyByZWxlYXNlMjMtbWFpbnQKKzM2MDc2IDM2MzQ0MThhODU4ZTgyNzNiNGEwMGFmNzU5ZmQzOGEzOTI0NTdjN2QgbGVnYWN5LXRydW5rCiszNjA3NyAyZjVmMzhmNGJjMmI5MDA4OWI5NTY3MzlhZjE4NmQxMDljNTE2OGQxIGxlZ2FjeS10cnVuaworMzYwNzggOGMwMzk0YWVjNmRjZDQwZmRjM2U4MTNhYThhZWYwNTVkNjY1YzRiNyBsZWdhY3ktdHJ1bmsKKzM2MDc5IDNkZmU4MWFjMGU3Y2QwZGY0ZTIzM2ZiZDE0YjFhNmJiN2MzOWNiYjYgbGVnYWN5LXRydW5rCiszNjA4MCBhODBlZTIwMDRlNmNhNDkyYjBiOWEyZWU4ZTRjOTM5NDk3ZDA5NjUyIGxlZ2FjeS10cnVuaworMzYwODEgY2RhZDAwNWJjMDMwNzc1ZmVmN2JhYzY3M2MzOTJkNjU2OTQzNmNlOCBsZWdhY3ktdHJ1bmsKKzM2MDgyIGNiOTU3ZTY1ZjQ0NDliODY5OGI0OTQwZGVkYjZhNjIwN2IwZTRjMjIgcmVsZWFzZTIzLW1haW50CiszNjA4MyAzNjc5OGYxYzhlOWExYTY2ZmRkNzc4MDVlZjk3NmMxYTE0ODgzMGY4IGxlZ2FjeS10cnVuaworMzYwODQgYjljOWU3ZThiZTdkNTRmYjgxYTIxOTViYTg4MDc1ZjUyY2UyNTczMiBsZWdhY3ktdHJ1bmsKKzM2MDg1IGFjNGQ0MjBjYzc5OWU1ZDI2NmE3ZjQ2YTdkZjVhNzVkNzM3MmZhODIgcmVsZWFzZTIzLW1haW50CiszNjA4NiBiZGYyMzg3OTg5NDk5ZWRmMDY3NDk2ZDkwY2UwZmRjYzgwMDA2YTAxIGxlZ2FjeS10cnVuaworMzYwODcgYTg5Y2M1MzViNGM1NzU1YWFjODZiYjFlYTQ3NTBhNGQ0NGNmMGRkZSBsZWdhY3ktdHJ1bmsKKzM2MDg4IGVlYWE3ZmIyZjE2ZjdhMGVkM2ZhMzJiZWRmNDFhMzNkYmEwYjJkN2YgcmVsZWFzZTIzLW1haW50CiszNjA4OSA4ZTU5NThjOTNjODgyMTVkNDU4NzkyYTZhZjU4ZTJhODNlZmQ0MzAxIGxlZ2FjeS10cnVuaworMzYwOTAgOGVhYjc2NTU2MDFmZWQxMjEwMDBkYzBlYzQ0YWZjNjBiYWJiMTIyNCBsZWdhY3ktdHJ1bmsKKzM2MDkxIDQyYmIxZGNkZjE2ZTQxYmQzMzJlMDFkMDcyNmRmMzYzNTdkNTljMTUgcmVsZWFzZTIzLW1haW50CiszNjA5MiA0N2Q2NGNiMDE4MjA1ZWJlZDQxYmM5YTJjNWYyM2VhOTYwODJhZTdjIGxlZ2FjeS10cnVuaworMzYwOTMgMDE0YjBkODQ0MjJmN2I2MzFlMDAzZjI3OWQwNDAzODllM2NmNmJlZSBsZWdhY3ktdHJ1bmsKKzM2MDk0IDk1Mjg3Y2RkYmMxZWNhNTZjOTZjZTc4MDAxYjJkOTk4ZTc3MzJhMTQgbGVnYWN5LXRydW5rCiszNjA5NSA2MWFmNDcyMTNmZTY2NzRjODM2MjY3MTk4ZGE2ZmU0MzRjMmMwMzUzIGxlZ2FjeS10cnVuaworMzYwOTYgMWVlYWE1MDkzZmMwNDExMTYwNDAyYTdkMDBiNDE1NDBiNTFlNGQ4OCBsZWdhY3ktdHJ1bmsKKzM2MDk3IGFkYjU5ZDg5YjA5OTE2MDU2M2E0ODczZGQ5NWNhOTU5YjA1ZjE2MjYgcmVsZWFzZTIzLW1haW50CiszNjA5OCA3ZTcyNzNjOGQyMWViN2I2NzczNzM2ZGEwM2JkYmQ0OTcwNWJhZmUzIHJlbGVhc2UyMy1tYWludAorMzYwOTkgYzJiYzI0OGQzZTljNzBiNTY1YmY2MzBkMjg2ODk0ODk1MWNlYjM2MyBsZWdhY3ktdHJ1bmsKKzM2MTAwIGMwZDEyNjFkYTg0OGQ2MWVkYzcxZGQ4ODZhZDZmODZiMmM1MjY1MTQgbGVnYWN5LXRydW5rCiszNjEwMSBjYmZhMDQyODU1MjkwYTIzODFjMTAxY2ZiMmZiYjJkMTIzNjBkZjFkIGxlZ2FjeS10cnVuaworMzYxMDIgYjYwZmM1ZWZmMTU1OTRkNzc1MDRkMGZlMzBkNzM5ZWNjNWFiNmYxOSBsZWdhY3ktdHJ1bmsKKzM2MTAzIGZkNTJiNjgwNzkyNDhjYjE5OTA3ODM5ZTYxMjg3N2RiM2IwNTA5ZWMgbGVnYWN5LXRydW5rCiszNjEwNCA2ZGJmZWUyZGVkODk1NmU2Zjc5NTYzZmVkOWJhNjU1Mzk0ZjBlZjg2IGxlZ2FjeS10cnVuaworMzYxMDUgOTRiODQxYWRmNDg1YmM5OGFhZThkYTRmNDRkNmVlM2Y5ODZjN2ViYSBsZWdhY3ktdHJ1bmsKKzM2MTA2IDkxMzg4Yzg0NWIxNjk1ZmU0NjMwYjY1MzgyNTY0YTUzMDdhODE3YmMgbGVnYWN5LXRydW5rCiszNjEwNyA4ODJjZjExMzcyYTNlNGJkZTQ2NjQ1M2U2NTk1ZDE0YTE2ZjM4NTYxIHJlbGVhc2UyMy1tYWludAorMzYxMDggODU0YTI0MTdkMzVlYjUxOGFkYWVjNjZlNTEwNGU0NGZkZDRjYjdkOCBsZWdhY3ktdHJ1bmsKKzM2MTA5IGEwMThhZTM4NmY5OWUxYTQ5ZDE3NGMxNWY2M2JkMWNjMzg2OGM4ZGEgbGVnYWN5LXRydW5rCiszNjExMCA1Yzc5YjRmMTNiMjZmODI5MDBkYTllZjE4MzY3NGY2OWZmZWNlNTc3IGxlZ2FjeS10cnVuaworMzYxMTEgNzFiM2QyYmJlNjNiZmE3ODU0NzY5MmJmZTc4ZDg5ZGVhODM5ZTI1YiBsZWdhY3ktdHJ1bmsKKzM2MTEyIDQwYzUyNGMxYzBmZWZlYTY3ZWRkZmU4ZTRkNTdkNDNkYTBhYTY2MDggbGVnYWN5LXRydW5rCiszNjExMyBlMTM0NWNlMjc1Zjc5ZDgzNDcyODg1ZWJmYTIzOWFkMzU1YjQyNjRiIGxlZ2FjeS10cnVuaworMzYxMTQgNmQ3ZDAwYmYxYWFlNTk2ZWY2Njk1YWIyMDUxZmQyYzc0OGQ3Y2NiZSByZWxlYXNlMjMtbWFpbnQKKzM2MTE1IDgyZmU2ODMyZTUwNWRlYjI0YTc3YjRlYTQ1YmFiN2RlZDI0ZGVkMmIgbGVnYWN5LXRydW5rCiszNjExNiA4YWNmNDI0MWVlOTRmNWNjMTFmMmJmNjYwZGVmN2Q2YzZkNTcyYzUxIGxlZ2FjeS10cnVuaworMzYxMTcgYWEwYzg0ZDFmMDY3Nzg2OGZjN2JkNWRkMTk1ZjI2YzI5NTkzNjA0NyByZWxlYXNlMjMtbWFpbnQKKzM2MTE4IGNmODRkYmM2YTg4MWM3YjMxYzI3YjYyMTc5OTBiMzA3NDAwN2FmMDQgbGVnYWN5LXRydW5rCiszNjExOSAyOWQ3NjFjNTEwM2U3N2I1MTEyYmI4MGY4ZGUxYjM3OTgxZDI5YWUxIGxlZ2FjeS10cnVuaworMzYxMjAgOTJmNTk3YTA1NTgxNWVlM2VhZWMzYTM5ZTI0NDI5ZjI2NjlkODA3NiByZWxlYXNlMjMtbWFpbnQKKzM2MTIxIGM4NGZkNmJlNWExNGY0NDM2MWFkZmE0ZDBjMDNiMzIyNThkMWIwNGYgbGVnYWN5LXRydW5rCiszNjEyMiA0MWM1OWQ4MGJiYzVmNmZiY2JiMmMyYjM4YmM2Y2E1YmE3YzI3MjdhIGxlZ2FjeS10cnVuaworMzYxMjMgZTE5NmI4MjNlNmM1YmFkMWZhYWFlYTA4N2M5OWJmOGVmM2ZjMTM4YSBsZWdhY3ktdHJ1bmsKKzM2MTI0IGEwZDhiMTQ1NjgxOTMxNjZjODZhNGIzNmQ3ODYzOTYzYjYwNDk2OGEgbGVnYWN5LXRydW5rCiszNjEyNSAxNmFjYzYxZDMzYzAyZDZjYzg2MWU2MzcyMTBiMzA5MmU2YmI1ZmM0IGxlZ2FjeS10cnVuaworMzYxMjYgMTM2NTZkNThkNDUwMTQwNTk0Y2Y3ZGE3ODk1OGRiMDg2OWIxMmZlMCBsZWdhY3ktdHJ1bmsKKzM2MTI3IGNlZGM5NTQ1OTYzNmQ1MzJkNzVlMDUxYWVlMDQxZTU5MTBlYTRmMWQgbGVnYWN5LXRydW5rCiszNjEyOCBlYzg4ZjI3OGExYWQ0OTkwOWU4ODZiMTYxZmYwYmM4ZDc2NTg4YTM2IGxlZ2FjeS10cnVuaworMzYxMjkgMzIxOTczNzUxMjhlMjI2NTg4YzIzMmQyN2ZmNWY0MmNlOWQ2NTYxOCBsZWdhY3ktdHJ1bmsKKzM2MTMwIGZjNmE3MzkwNWU2ZjM4YzlkNDdhMjllYTE1ODU4MzE4YzdlNmZlY2UgbGVnYWN5LXRydW5rCiszNjEzMSAxOTE4ODg3ZDM4N2IwMTA0ZTNmM2MzYjNhNzkzNTZlOTQ5NzVhOTVjIHJlbGVhc2UyMy1tYWludAorMzYxMzIgYmNkMjFhYmFhNWI0ZjE1Yjg3OGIxMjk3YzIxNzIwMmE3ZTk0YWQyNCByZWxlYXNlMjMtbWFpbnQKKzM2MTMzIDQzMDFlY2JlYjNhZGZhNDEzNmMwOTgzNGM4ZjQxNzM0YmNmZDcxNjMgcmVsZWFzZTIzLW1haW50CiszNjEzNCBmYzQ3NjJlYmJlMmNmNjczNDcyZDZiYTlhZmQ0MDViNDJiNTM3N2YzIHJlbGVhc2UyMy1tYWludAorMzYxMzUgNDM5ZTcxYTRlNTU0Njg1NGM1NGNmODljYjVkM2FhMmM3NWVhYjg1MCBsZWdhY3ktdHJ1bmsKKzM2MTM2IDQ5ZTc0MTNjZDkxYzBlNTg4NjM5ZjI2Y2U0ODU1ODcwMjVlYzNlMGEgbGVnYWN5LXRydW5rCiszNjEzNyA5ZTVhZjQ1Y2VmY2I1ZjQxMmFjMTY5N2ZjMDE0OGM0MjA3ZDg4MGMzIGxlZ2FjeS10cnVuaworMzYxMzggZDY5YzgwNjhlYWU2MWNlZDhlNzE0YzUwM2E3NzQxNGQwMDk0NGIxMSBsZWdhY3ktdHJ1bmsKKzM2MTM5IDQxOGEwYzZiZGM3ZDRhMGVkZmE0MmQzYjNjZmRhOTViOTg5ZDI1NjcgbGVnYWN5LXRydW5rCiszNjE0MCBiOWRlNmI2NjUyNzM2ZDYwMTVjYjc4YWM3NDAwMThhZGRlNzc1OGZmIGxlZ2FjeS10cnVuaworMzYxNDEgODczMDJhYzA3MjU1MjQzNTE5MmE0OGIwYmY1ZWUzNzQ1ZmI5NDU2MiBsZWdhY3ktdHJ1bmsKKzM2MTQyIGIwZjQ1NGY1NThlNWViMmZhNmRjNmYwODQxZjQ1MDliNWM1MTI2ZGIgbGVnYWN5LXRydW5rCiszNjE0MyA1MGYzYTU1MGI0ZmU2YWVmMzNmZDJhNzdjYzAwZTU3M2VmOTk5NGFiIGxlZ2FjeS10cnVuaworMzYxNDQgYzFmYmJjM2VlZDM5ZTVmZWM2Njk3MzVmYjlmM2UyMGYyZjNjNDhkZCBsZWdhY3ktdHJ1bmsKKzM2MTQ1IGIwNTRjZmY3YmI4NmQ2ZjEyN2MwNmUzNDA4ZDUyMGNjYzI4ODZjOGUgcmVsZWFzZTIzLW1haW50CiszNjE0NiBjZjI4ZjRhNmU2NzYxOGE1YTc3ZmNmM2Y4YzVjNTIzZGZhNjUxNjliIGxlZ2FjeS10cnVuaworMzYxNDcgN2ExOThkOWM5MjYxMmQyNDQzNTYzZDVkMzFiZjU1MjNhYmRlYjk1ZiBsZWdhY3ktdHJ1bmsKKzM2MTQ4IDMxNTJiNzQ3YTJlNDYxMWIzM2ZmZjI1YmQ1MTY1YmJhZWQxN2U3NDEgbGVnYWN5LXRydW5rCiszNjE0OSBmNDk0NzE5NTM2ODlhM2JmOGI0ZjY0NmU4NTE0MzQ0ZDVmYTYzNDA5IGxlZ2FjeS10cnVuaworMzYxNTAgNmZlYWQ1ZWE0YmJhMjM3MjYyZjBiMDg0ZTFmNmZhYTFlMGM4NjcyYyBsZWdhY3ktdHJ1bmsKKzM2MTUxIDU0MTMyN2NiOGY4YmY2YjU1NzE1NGMyOGEyMzc0MjVkMmNkMmNhOGIgbGVnYWN5LXRydW5rCiszNjE1MiAyMjUzYThjMmVhNjJkYzVkM2ZmZTU3NmU4MTc2ZWRlNjBlYmNiODVhIGxlZ2FjeS10cnVuaworMzYxNTMgZjBlYjc3NzhhMTgzMDgzZjBmZWRhOGZmMzI2Y2M2MTU5NzhjNjUwMyBsZWdhY3ktdHJ1bmsKKzM2MTU0IDYzZTllNWEyMTYwYjVkYzliYmFmYjk4Mzc0YTAxNmQ0ODQ0NzBjNTQgbGVnYWN5LXRydW5rCiszNjE1NSA0NDRmYTVkNTBjMTRkMjBlMGE4ZTJiZDdhNmU1NDEyMGM2MTFjNzAzIHJlbGVhc2UyMy1tYWludAorMzYxNTYgYzdkY2IwOTc0NWQzNWI0OWJiZWFiOTE1N2FiYjZkZDU0MGNiYzY0NCBsZWdhY3ktdHJ1bmsKKzM2MTU3IDZlNGZlNTU2MGQ4MWQ0OGFjNDFjM2IwYzhiZDI5MWE4Y2EwMWU0NDAgbGVnYWN5LXRydW5rCiszNjE1OCBiYzlhZTQ0YjJjZTQxZmMzZGI1ZjkyMmVmMjkzYmEzNjNmM2MxN2U2IGxlZ2FjeS10cnVuaworMzYxNTkgYTYyN2Q5NDkzMTQ5NTMzOTk5ZDFmNDVlM2FiYWJjYTE0Yjk0MWUwNSBsZWdhY3ktdHJ1bmsKKzM2MTYwIDQwOGE0MGU2NTI0N2NkMGE3NzJlNGY5OTNiNTU2N2UyZmQ5ODQxZWYgbGVnYWN5LXRydW5rCiszNjE2MSBjN2RhNjk5MGM0ZWQ5Yjg4N2UzNDc5YzMzY2I2ZGYyNjM3YzJhNzhhIGxlZ2FjeS10cnVuaworMzYxNjIgNWQyNzI2OWM5ZTMzYzZhMjhkODMzZmQ2YmIxZjA2NDdmMzc1YjZiNiBsZWdhY3ktdHJ1bmsKKzM2MTYzIGM5ZGI3OTNjYWE4MGEyNTQ5NDhkYTc5YWQ2MTViMDVjOGU4MTMxZWMgbGVnYWN5LXRydW5rCiszNjE2NCA1NGIyNTdlNTVmOTkxNTAxNTU5NDhkZDNkZmZiZDQxZjU4MTBjYzQ2IGxlZ2FjeS10cnVuaworMzYxNjUgNzQ4MTI5ZTZlMTA4MmYzM2RmMWU3OGE1Y2I2MWYxOGMxMzgzY2Y3ZiBsZWdhY3ktdHJ1bmsKKzM2MTY2IDhiMmRmOWEwN2NkNzA0ZGQ2ZmY2Yzc5NTlkZTc5ZDE5NmU5ODg2OWMgbGVnYWN5LXRydW5rCiszNjE2NyAwNDEzMDA1ZmMwYjJjY2JiMWJjZTg5ODY3MTk4ODE0Zjg2MmMyZDVjIGxlZ2FjeS10cnVuaworMzYxNjggZTk1MGJmZTE4NTZlMjBmNDI3MTAzMDI5MWRiNTkwYWE5Njc0ZDI3YiBsZWdhY3ktdHJ1bmsKKzM2MTY5IDlkODY1NWI0NzVkYjQ4ZDA0OGMzZjFhOWU2YWIyYjIwOGQ4YWJkMGYgbGVnYWN5LXRydW5rCiszNjE3MCA0NGU4ZTg0ZjEyODA4MjUyZDRlOWE1MTQ2NmYyOWMzYTc0MGM2ZWFiIGxlZ2FjeS10cnVuaworMzYxNzEgMTFjMzFhOThkZmQ2OTBhODU5NDViOTdmZGU2ODAyM2IwYzk0ZjUyOSBsZWdhY3ktdHJ1bmsKKzM2MTcyIDEzY2U0NDc4NDViY2JkNDdiZmViZWQ4YmQ2ZTAwYWJlMjc5NTc3YTQgbGVnYWN5LXRydW5rCiszNjE3MyAzNDhkYjc3YTA3ZTkxOGM4YzU2YjhmNWIxNzA3ZWE5YTg1OTA4NGQ1IGxlZ2FjeS10cnVuaworMzYxNzQgNDBhY2I2OGFkMjI0NzczYjlmODU3YmEyMGE2YzdhZDIzZWZkZDg3ZCBsZWdhY3ktdHJ1bmsKKzM2MTc1IDU4MWE4YTEyOGUxMWNhMTUzNjlhMWQxNzYyMWI1MDA1ZTkyOWIyMzggbGVnYWN5LXRydW5rCiszNjE3NiAxMmYyNGNiMjczODNjOTcxYjdjMDI2N2YxNWI0MTEyZTcwMDVkNWMyIGxlZ2FjeS10cnVuaworMzYxNzcgNjExODBjMzFkNGJkYjNlYWE1MDU1ZGQ0MTVlMzhlNmFjMzExYjIzZSBsZWdhY3ktdHJ1bmsKKzM2MTc4IGE0NmJkZTllMGM3NGJiNzYxZGNlNjg0NTQ3OThlMjI2ODM5YjVhM2UgbGVnYWN5LXRydW5rCiszNjE3OSA2YWI1ZTA1MjZhMzJhYmQ0MDE3M2U0NTM3OTRhMzhlMzRhYWQwYTQ0IGxlZ2FjeS10cnVuaworMzYxODAgZTViYzk0N2M0NGNhZWJjMDI5MTc0YmM4ZTJjOGNmMDcxYjFlMzk4OSBsZWdhY3ktdHJ1bmsKKzM2MTgxIDg2ZjU5NjJmZDliN2VjNmNiNzg0MDJmYTc2MDc0MzkwYjY5YzBkMzAgbGVnYWN5LXRydW5rCiszNjE4MiA1NWJhNTFiZWYwYTgxYTA0Mjk0ZWUyZTI2MGEwMGYxNzAzZDc0M2I2IGxlZ2FjeS10cnVuaworMzYxODMgYTdkNmZjMTdmMjU3NTUyNzYyOTQ1YmMyNTBlZGZiODcyOGJjMDkzYyBsZWdhY3ktdHJ1bmsKKzM2MTg0IGI4ZmNlMjI1OGMyMDA2YTMzOWJkMmE5MzcyYzJmMWJhZDNiNjZjOGIgbGVnYWN5LXRydW5rCiszNjE4NSBmNGE0ODEwZjk4MmVkNWU4NTRhYzYzZWQ1NjI1MjAzZTU0ZjU0ZTRkIGxlZ2FjeS10cnVuaworMzYxODYgMzMxZTVkOGIyOTZmNzZhM2RkYTg5MWYyZTVhYTFkYjc0MjY2YzBmZSBsZWdhY3ktdHJ1bmsKKzM2MTg3IDUwOTA3MmMzZmEyNmI5MmEyNTFlNWY1NDdiM2IwMjkzMGQyYmYwZmEgbGVnYWN5LXRydW5rCiszNjE4OCAxZmQzYWE0YmMxMjNhZDEzMTllOTc4MzRiNzQ2NDhmM2EwNjFjYTgxIGxlZ2FjeS10cnVuaworMzYxODkgYjk5YTU1MjczOGJmYWUzNzkzMjNhMjg4ZDc5Yzk1NjE1MjdiNWZhYyByZWxlYXNlMjMtbWFpbnQKKzM2MTkwIDM5MTE3M2M2OGJiM2M5MDc3ZGZjYWIyYWE2NDZiZjZkOWM4ZTg1NmIgbGVnYWN5LXRydW5rCiszNjE5MSA5NjNkMjM1NTcwMjBmMjIyOTk1MTQzMWNhNThiNjBlODIwNzE0MjM4IGxlZ2FjeS10cnVuaworMzYxOTIgMTE5ODJkYTk4NzkyYzQ3NjdmMTRlY2NmNjYxMDNmNTE3NjAxZmI1MCBsZWdhY3ktdHJ1bmsKKzM2MTkzIGU0M2RhNGY5OTk0MTU2N2MzYWI5MDUwY2Q4NzlkY2YzMGYwMzllMjQgbGVnYWN5LXRydW5rCiszNjE5NCAwYWY0MTU0M2M5YjY1ZjcxZjBkYWM4Nzg1NmVhOTUzYmU4YWNmYWE0IGxlZ2FjeS10cnVuaworMzYxOTUgZjUzOWE5Yjk0Zjc5NDU3NDQ0Y2I5YmQxZGNiZGQyZGJiMmI1OTk3MCBsZWdhY3ktdHJ1bmsKKzM2MTk2IDYzODQwNzhlN2VkZjk3NmJlZjNiMTRhOWZhNzM1NWFiYmMxZmM0OTYgbGVnYWN5LXRydW5rCiszNjE5NyA0MzRkM2YyY2I4MzI4MjhlMWVhYmZjMThmMTJhNjgzMDAxMTg5NmU2IGxlZ2FjeS10cnVuaworMzYxOTggZjczYTYzZGQzMjg4NTY3NjZlYTEyNmMxNTMzZDY1ODJlZmUwOTI1ZCBsZWdhY3ktdHJ1bmsKKzM2MTk5IGE5YTRiMGRmNTEyYWQ0Zjk0ZGE3ZmRiNjZkYjYwNGFlNjk4NzlkZmMgbGVnYWN5LXRydW5rCiszNjIwMCA1YmZjNzU0M2Q3ZWZhMGZkMDBlMzU2ZTA5Yjg3NGM4YTU3ZWM5ZGZjIGxlZ2FjeS10cnVuaworMzYyMDEgYzZhYjBmODg4OTVhNWM1OGVhNTA2MzZiMGUxMmViODM4ZTJkOTZhOCBsZWdhY3ktdHJ1bmsKKzM2MjAyIDc2MzI3NzM3ODExNGMzZDA1YWZlYTQ1MmY5YmE3OWY4MGU0ZmYzZjYgcmVsZWFzZTIzLW1haW50CiszNjIwMyBjZGUyZmVhYjdmZTBhYjcwZDIxYzhiNTE1NTMwYWU2YzVkNzU4ZjA1IGxlZ2FjeS10cnVuaworMzYyMDQgMjdlNzEyYzhlMWEzNjQ5ZTU1YTdjNzY2OWRlNGI4MDA3NzdmN2Y5MCBsZWdhY3ktdHJ1bmsKKzM2MjA1IGVjNjRhNmJlMzJmNzE3ZGJkZTdmMzIyZTg3M2UxODljY2QzZTMyOTcgbGVnYWN5LXRydW5rCiszNjIwNiBkMGE2Y2ViODQ2NDY0NzA2ZDYzYWUwMWU1MjYyOTU0ZjAzMjBhNTBjIGxlZ2FjeS10cnVuaworMzYyMDcgNjg2ZTVkMzhiZTQyMWFiY2Q4Mjg1NzhhNTQyNzM1ZWJmMjQ1NzRmZiBsZWdhY3ktdHJ1bmsKKzM2MjA4IDA4MTk1MDhhYWUzYWMzZTE1Yzc2NTk2N2EyZDg4M2YyYzg0Mjk3YzcgcmVsZWFzZTIzLW1haW50CiszNjIwOSA1Y2Y1MDdiNjRmMzFhMGQwMjNkY2MxM2NkYTIzZjhjMjJlYzY3Mzg0IGxlZ2FjeS10cnVuaworMzYyMTAgZjk1Njk1MjZlOGQ0MGQxYjE2ODBjNjA2Njg3NGNkZmUxYjE3ZmEyZSBsZWdhY3ktdHJ1bmsKKzM2MjExIDRjNzFiY2ZhY2RlMmYyYTNlMzgxMmMxNmRmMDRlY2JjODUzODYwYjQgbGVnYWN5LXRydW5rCiszNjIxMiA2ZmMwMjkxNWY2MzdiMDI0NGQyMGE2NDVjMWNmNmJkOWY4NjFmNzU1IGxlZ2FjeS10cnVuaworMzYyMTMgOThlNDYzMjcyMTIwMGIwODA3NzdkZGI2ODg2NjM4MmNlZDYwZjJkYyByZWxlYXNlMjMtbWFpbnQKKzM2MjE0IGU1ZGY4YzhmYWEwOTliZDMyNGFiOWYxMzQzZTBiMTc1OGNmZTQ2NDggbGVnYWN5LXRydW5rCiszNjIxNSAxZDU4NGNhNTZiMzA0OTVmMTM5MTY2NjhmOTZlYTAxYzM2NzVmMzdkIGxlZ2FjeS10cnVuaworMzYyMTYgNmJjNmFiYmE4NjU5ZWFhNDlhMjhjODJiZDI1YmE4NTM4YjcwMTdiOSBsZWdhY3ktdHJ1bmsKKzM2MjE3IDJmNzZlNzJhZDE5MGNiNTkzOTRhYjFhZTViNzYwYTIwMTMyODUwYWMgbGVnYWN5LXRydW5rCiszNjIxOCA3NTg2MWQ4YzU4NzE1YTJkYmYwNGU0YjE4YWZiMTVjMjQwMWE2MWUzIGxlZ2FjeS10cnVuaworMzYyMTkgMDE0ZDg3YzczMjEwMmE3ZjExNjY4MTg4ZDFkYzM3ZDY2Y2YwZGQ4ZiBsZWdhY3ktdHJ1bmsKKzM2MjIwIDQ3MjAyM2QwYTEwZDY0Mjg3ZTI2YjljZDYxMjVhMjYyNGQ3M2U1NDAgbGVnYWN5LXRydW5rCiszNjIyMSA2Y2U2N2Y3YjA0MzBhOGZlZGM5MDkwNmZiMTQ2MThjNmIxZDVkYjFjIGxlZ2FjeS10cnVuaworMzYyMjIgY2Q0N2Y2MjIxZDhkMWY1NjE4MjYwZThjOGI2NTkxMDFhZWEwMWJlYSBsZWdhY3ktdHJ1bmsKKzM2MjIzIDFjMmJhYWUxNDgyODIzOTc3OWM2OTI3M2NiMGI2MGU2MTc2ODMyYWQgbGVnYWN5LXRydW5rCiszNjIyNCA4Y2NkOGVjNjNjYzIwYzJiNGEyMGY5ODkwY2IyM2Y5Njg2YTY5MzA0IGxlZ2FjeS10cnVuaworMzYyMjUgNzVlNWQxZThiNjE3MWEyYTlmN2QyYTZkZThjYzdkN2EwOGNkY2ZiNyBsZWdhY3ktdHJ1bmsKKzM2MjI2IDdiNmVkMzVjNTg1MGU2ZjU3MDA1ZTk5NzM0NDdhYzFmZmFjZmNlZDggbGVnYWN5LXRydW5rCiszNjIyNiBkOTliNWJlZDAwNzg4NGIyNWYxMjc2ZTJiYWZiOWFkMDYxZjJhOTU5IHJlbGVhc2UyMy1tYWludAorMzYyMjcgYWFmOTI5NWVkNDViMDA2ZWM3MGNhMWRjMjNmOTU2OTRlYWY3ZjY5NiBsZWdhY3ktdHJ1bmsKKzM2MjI4IGUwYTdjNDYxMzExYjNkY2FmNmZhMzU2Y2E4ZGVhMTM0MTE0ODU0ZjEgbGVnYWN5LXRydW5rCiszNjIyOSA3NzkxM2JlMjk0YjkyMTE0NjdiNDU4MzdlZGFmYzJiZWVhMjYxYTZlIGxlZ2FjeS10cnVuaworMzYyMzAgODQ0NDg0OWM5NDQ4ZWRlYWI2NDRkZjU0NGQ2YWMzYWIzMzUyNzkxMCBsZWdhY3ktdHJ1bmsKKzM2MjMxIDgxMDFlOGQyNGYwNTI4YzQxMTMwMGE2NDU3MzZkNTdiNzBlM2JlZjQgcmVsZWFzZTIzLW1haW50CiszNjIzMiAzOTNjMTVjMGM1YTQ4ZjY1ZWI0YTFjZTQ1NjM3NDllZmUwOTE3ZDE4IGxlZ2FjeS10cnVuaworMzYyMzMgZDcxMTBiYjZjMTNkYzQzOWY0YWYzZWUyZTZhYmY5YjE5ZTI0OTJkMiBsZWdhY3ktdHJ1bmsKKzM2MjM0IGZjZmIyZDQyMjBiMGU1NzNlMzI3ZWQ4NTczMGQwYjY4OTM3MWJmMDkgbGVnYWN5LXRydW5rCiszNjIzNSBiMWU3MWIzOTI3OTlhYTU3MTRkNDdlMDY4MDZmNTY2YmI4YzI2ZTI1IGxlZ2FjeS10cnVuaworMzYyMzYgOTUwY2Y2OWM2OWI2MWRjM2U3ZmIzZDZjYjVlZWFmMDA2MTdkNmNjNyBsZWdhY3ktdHJ1bmsKKzM2MjM3IDI3ZTIyZjZiZDNhZTc3MmZlYTRmZTc5MjQxYjdjZGFhMjkxYzJhYTQgbGVnYWN5LXRydW5rCiszNjIzOCAyNTVhNzFmMmQyMTVhOGY3MGMxZDVkYjdhNzlmYTJiN2MwZmRkOTkwIGxlZ2FjeS10cnVuaworMzYyMzkgODRlNWI1ODVkMjAxYjg4NGE5NWZjMGE0YjJhOWQyMGViZTVkYjAzYyBsZWdhY3ktdHJ1bmsKKzM2MjQwIGE0YmMyZmZkOGU3MTZhOTE0Nzg0ZTdkMWQ4YzUzYWE3YTZjYTI0YjIgbGVnYWN5LXRydW5rCiszNjI0MSA0ODVkMmVmNDM0MTlkMTkwMDE3MGFlYmJlYTlkNmI2ODJjNWNiOTE3IGxlZ2FjeS10cnVuaworMzYyNDIgM2RmMzZlMmU1ZGRjMTE0OWFmOGViNTJlMjBiYzIyNWQ4MDYyMzZkNCBsZWdhY3ktdHJ1bmsKKzM2MjQzIDY0NTM0ZmIzYWZjZDk0MDBiYzMwY2Y3NDIxZmVmODNlMzkyOGRjMzEgbGVnYWN5LXRydW5rCiszNjI0NCAzZGRjN2EyMzE3NmI2MjgzMWQ0MGE4MzY0ZjVmYjc3MmZiNGZhY2U4IGxlZ2FjeS10cnVuaworMzYyNDUgZTM3MTE4M2QwZTE5MGNlN2UwZTcyNGJmMWFkNTg4NzRlZjA1OTE3OCBsZWdhY3ktdHJ1bmsKKzM2MjQ2IGY4ZDYxZWQyZjBkM2EwZTE4MzZlNzY0YTYxNTljNWMyNTM4NThhZGMgbGVnYWN5LXRydW5rCiszNjI0NyA5MTViMGU4MzNiNWJmZDJiYTI1ZjUzOTJlYTVhNDJhNjY2ZDRkYjNkIGxlZ2FjeS10cnVuaworMzYyNDggMWM2OWY5MDljNWE2MTM3OGRhMjdmMDI2MWU0MmJiMDEzNzQ2OWJmOSBsZWdhY3ktdHJ1bmsKKzM2MjQ5IGQ4YWJmNTgyZjg5MzA2ZWFlNzNlNDNmMWFjNDMzOWJmOWRkZjU3NzIgbGVnYWN5LXRydW5rCiszNjI1MCA0OGNhMjdhZGE4MWU2NWZkNzU1ZDA5YWUyNzZjNGE1MDJmM2Q1OWYxIGxlZ2FjeS10cnVuaworMzYyNTEgYzdkMmIyNGVlZmY5OWQ2MDY1MThkYWIyOWE2NzYzOTAxOTQxNWFhMCBsZWdhY3ktdHJ1bmsKKzM2MjUyIDIwYWRiN2NlMWIwODVmNDIxYjJlM2VjYjY5Mzk0YTNiMjQ4YWMyNjggbGVnYWN5LXRydW5rCiszNjI1MyBkYTdjM2M2MWQ0MGUwMDUwZmIwYWRhYjBlZWU0MjNlY2FkOGIyMzM4IGxlZ2FjeS10cnVuaworMzYyNTQgNWVjNzhlMmRjNGJlYzk2ZWRlNzgyMzhiNTY5NTdkZTFlYzAzZDQ0OCBsZWdhY3ktdHJ1bmsKKzM2MjU1IGZmNmI5N2NkZDg2NGY0ZjUwYmZjZDMxZGVjYjBmZTAzY2Q1MjNiMTIgbGVnYWN5LXRydW5rCiszNjI1NiAzYTdlMzRkYzZhZTI2ZGU4YjFmZDhhMWZjYWE2ZmYzNDUzZWZhOTljIHJlbGVhc2UyMy1tYWludAorMzYyNTcgZjQ3Y2UyMzA0Y2JiMjM1OTAzMTUyNGE4Yjc1ZjdhOGE3NzFhNDJjNyBsZWdhY3ktdHJ1bmsKKzM2MjU4IDM4Zjg4MzQwM2U5ZjhjYjc3YWYyNGU5MGQ0NGE1MWViM2Y2MzRjN2QgbGVnYWN5LXRydW5rCiszNjI1OSA3MzMzYmUwOTJlZWMwY2U5MzVkODQwNzIwNWIxNzY1NTk1NWMyMjc2IGxlZ2FjeS10cnVuaworMzYyNjAgZWUzODg5NmUwZDI0MTczZTA1ZGJhYmIwYzU3NWNjOGI2NzFiYzRjNCBsZWdhY3ktdHJ1bmsKKzM2MjYxIDUzZjI3NGYwMmY2OTgwNTlkY2YzYWE4MGZlMjYwZDFkOTgzNzNhMDYgbGVnYWN5LXRydW5rCiszNjI2MiAxZWRjMDY4NzIxM2ZlM2ZkYzQxODM1YjY5ZGY0ZmY1YjBhYzgxNmZhIGxlZ2FjeS10cnVuaworMzYyNjMgYjE4ZjQ4MGMzN2EwNzY4MTNjZGUyNmYxOTZmY2ZjOWQ0MWVhMjBlMyBsZWdhY3ktdHJ1bmsKKzM2MjY0IGM1NjE2OGZhYmY4ZTMzZWQ5YjI5ZWJjNzQxZTA2MzYyY2JjMmQzM2YgbGVnYWN5LXRydW5rCiszNjI2NSA1YWRjYTU4MTQ5ZmY0OWRmMDVlNzNjZDFhZGJmNDVmM2ZhMzVmNGRhIGxlZ2FjeS10cnVuaworMzYyNjYgNDY0YzgwOGQwZGNkYTM4YmI4MmEwNmUyZjZiOTNkYjJiNTY2NmFkOCBsZWdhY3ktdHJ1bmsKKzM2MjY3IDdkYjRjNTg2ZTFkNmNlMjdmNjc3ODRlN2IxNTY5MWM4OWY0ZTBjYTYgbGVnYWN5LXRydW5rCiszNjI2OCAyNTZiNDk2YWY0YzRhMDc1ZDY2ZjhjMTRjMmY0MmRiNDEwNjc4ZDcwIGxlZ2FjeS10cnVuaworMzYyNjkgYmIwMGUxMmU3NzQxNjA1NzdhOWYyZWU4ZDA1MjljYmEyYmVmYjE2MyBsZWdhY3ktdHJ1bmsKKzM2MjcwIDBlMjhmZDZmZWEwMGMyYmZjMzJjMTliMDM0YjA1MTEzODM3NzYyOTEgbGVnYWN5LXRydW5rCiszNjI3MSBkMmMxYzdhZTdjZjQzMjM2NWJjZWNhNzEyOGI0MTg1OWJjYTcxZTE4IGxlZ2FjeS10cnVuaworMzYyNzIgNjdmYmMyM2RjZmRkNGI5MjZmZjIyNDlmZmZiNDE4MjYwZmUzYzY3MSBsZWdhY3ktdHJ1bmsKKzM2MjczIDBmNTZlYWQ5NjgxNzY1NTJiOTgwNzliYzFkNWE1ZDRkYTUyYzE4MjYgbGVnYWN5LXRydW5rCiszNjI3NCA3MzE1NGFiODU2M2E1YzExNjA1NmY4MWJiMWU3ZmZhMWExMjU0MTFiIGxlZ2FjeS10cnVuaworMzYyNzUgZDUwMGY3MmZiMWFjZjFiOTM4YzcyZTQ5MjZjYWZjZmJlZGRiZjVkMyBsZWdhY3ktdHJ1bmsKKzM2Mjc2IDUwMDY4YjE3ZjQxZWFhMWFiNGZjOTk4OGQ5YWJkNGZjOWQ0MTYzNWYgbGVnYWN5LXRydW5rCiszNjI3NyA2YzE2NjEyZmIxMTgzODE1ODBkYWZhMTBmMWUwZjA2MzU4MGVmMWQxIGxlZ2FjeS10cnVuaworMzYyNzggYjczYWIzMDlhZGE3ZmIyYjdhNGYxZTM3YjljNjhmZmY5ZWY5YTg2YiBsZWdhY3ktdHJ1bmsKKzM2Mjc5IDZiMWVhNWMwN2ZmNzNlZWM1ZGJkMzYwYzQ0YmY4MjBhZjQwYzQwYWUgbGVnYWN5LXRydW5rCiszNjI4MCBjNDIzZTAxOGEyOWUwM2VmMjc2NmE3OTM0ZTk4MDVlNmIzMzcyY2I0IGxlZ2FjeS10cnVuaworMzYyODEgZTNmODJkZjU0Yzg4ZTA4MzViY2I3Y2NkZDQ4ZTQ2ZTdmOTFkMTE3NiBsZWdhY3ktdHJ1bmsKKzM2MjgyIDFiOWRhNWZlOTA1Mzk0YmVhMmY1MTdjNWRkNWM2ZDUxMDYyYTgwZGEgbGVnYWN5LXRydW5rCiszNjI4MyBkNGE1OTIzMGU5M2E5NmE3MWFiNTdkMjllNzMxNDIyYmYwODg0MjkzIGxlZ2FjeS10cnVuaworMzYyODQgNzU3YWIyMDBkNDdhNmJhN2RmMGRmMDY0NGMwOWE5ODJjNGEzMzY4ZCByZWxlYXNlMjMtbWFpbnQKKzM2Mjg1IGI1NzQzZTQ0NzMwOTEyMGNjYzFmMGFlZjI0NDQwOGJmOTllNjVkZmIgbGVnYWN5LXRydW5rCiszNjI4NiAzYzUwMzZiM2U4ZTY3NWIzODg3OWIyMjBiMmJjMTM3NTdmOTZkZDk3IHJlbGVhc2UyMy1tYWludAorMzYyODcgZGYxM2ZmYjhmNDk4NjM3ZWQwNmFhMzRhZDI0YTQ3N2M0N2YyZGJmZSByZWxlYXNlMjMtbWFpbnQKKzM2Mjg4IDE4OTE2Y2U0MWMyNjBmMmJlMWE4YzIzZmZiMDQ5MDkzNGFhNDhhMTMgcmVsZWFzZTIzLW1haW50CiszNjI4OSBiODcxMGU2ZDhkNzgwZGY5N2NiM2RiMWYzMGEzZDU0YjNmMjNiZmU5IGxlZ2FjeS10cnVuaworMzYyOTAgMDVmMTJiYzFlNWIzMDIyMzVkZWI4YmUwMDY2ZjNjY2RiMDdhMzE5NSBsZWdhY3ktdHJ1bmsKKzM2MjkxIDJmZmNkODM2ODE3ZWFiYzUwNzk0MTZiNzJkY2ZkNzM3MmY0NDcxZDUgbGVnYWN5LXRydW5rCiszNjI5MiA0MzgzZGI3N2IxOWE5YjgwMjU4ODc0N2FjNjFhY2E3N2YwNjNiYTBkIGxlZ2FjeS10cnVuaworMzYyOTMgMTRiNDE1NWQ4YjBhNDUyMTI0ZmY3Y2ZlNzVlYTE3MmIwMzdiM2JkYyBsZWdhY3ktdHJ1bmsKKzM2Mjk0IDllOGY3ZGY0YTZmZTc2MDExNmRiMThhMjQzZjRiNjQ5OTA3YmViMDYgbGVnYWN5LXRydW5rCiszNjI5NSA3OTZjY2I5MDgyZWYzNTZjMzQ5NzgzNDRhZjY1NjY1YzlhYmI5N2NkIGxlZ2FjeS10cnVuaworMzYyOTYgZmE3OGFjNTY4MzA5OTg0NDhiYWVjZDJlM2Q3NzNjM2NiNjM2MjkyYiBsZWdhY3ktdHJ1bmsKKzM2Mjk3IGJjNTg2ZGI5OTQ1YTBlYzA0ZjQ5YTdjZmVlMmMzZTVhNzQ3NDUwYjkgbGVnYWN5LXRydW5rCiszNjI5OCA1MGU4NDRhNGVlZDkwZjY4ZmZlMGUxZmE0NGM2MjIzNjA2YjQyNTU1IGxlZ2FjeS10cnVuaworMzYyOTkgZmU4MGY3NzJiZmExMjkyMGJhMWY0NmNmOTEyYTIyMTkyN2VmODgyNCBsZWdhY3ktdHJ1bmsKKzM2MzAwIDc3ZGYxY2I0MTUzMzJlMjc2YTk0NzNkMTc3MzcyMmMyYTY3ODg1MDMgbGVnYWN5LXRydW5rCiszNjMwMSBiODM1ZDVjNjFkODY0OWY0NGJmZWFiMTRkYWI0ODI0YTliNWQ2MTQ3IGxlZ2FjeS10cnVuaworMzYzMDIgZWNjZDBmYmUwY2Q1YzI4YzEzOTI0MmNlNWUyY2Q4OGYzNDMyYzM2YiBsZWdhY3ktdHJ1bmsKKzM2MzAzIGM2YWNmMjYxZDYxNDc5ZDE4NjgzYzAxZGE0MzBmYjZjNDM5MjFjNGYgcmVsZWFzZTIzLW1haW50CiszNjMwNCBmM2NiOTVjZDQxM2Y0OWY0NDQ4NTc5MDAyOWM0YjlhZGE5NDc3YWI5IGxlZ2FjeS10cnVuaworMzYzMDUgMDAyYWM2MjU5YzJjYjlkMjJmZWEzZmEwOTgxMjkyNjc4MWMzNDQ0ZiBsZWdhY3ktdHJ1bmsKKzM2MzA2IDkxY2NlN2JiYTM3MjY5NjQ4NTk1Y2QwMjBlODVkMDkxZjBmODM3NWEgbGVnYWN5LXRydW5rCiszNjMwNyBmYTIzYTliMTg5Njc2MTc2YjcwODNhZjM1MWJjYTYwZmRmNTRiOTFkIGxlZ2FjeS10cnVuaworMzYzMDggMzkyM2RjOTBlYjhlYmY3MGEwNTM4M2ExZTQ4ZDk5OGQ4NjRkOTA2MyBsZWdhY3ktdHJ1bmsKKzM2MzA5IGFiMGEyYjc0ZGRmZDk2OWVhMWY4NjQ3ODAwYTJkNGEzMTNkNDdiZmMgbGVnYWN5LXRydW5rCiszNjMxMCA3OWRmNGY4N2Q2N2U3YWFmYTBlMzdmODgzYWE1NGJkMWEyMWYxZGRhIGxlZ2FjeS10cnVuaworMzYzMTEgZGI1MDNhMjYzYjQzM2NiYWI4ZmM0YzdmZTIxMGMwMjRhM2UzMDRlNiBsZWdhY3ktdHJ1bmsKKzM2MzEyIDk5ZmRmODA3MDZhZGFlNmUzYTFiY2EwNzUwNzg2YjI3ZmU3YTE5Y2UgbGVnYWN5LXRydW5rCiszNjMxMyAyMDJhZTA1NzhlYmViMTVjZTk4ZmQyNDhiNDk4NGVmMTU1OGUwM2FjIHJlbGVhc2UyMy1tYWludAorMzYzMTQgZjU2NTAzYThkYmEzYzQxZDA0NmY5YTFjZjIxOGRiZmRmNWMyMDc3NyBsZWdhY3ktdHJ1bmsKKzM2MzE1IDZjYTEyMmYyNzM2YWI4OWUxNTFmYjM3YmJmYmRhZWMwNjllNGYxOWUgbGVnYWN5LXRydW5rCiszNjMxNiA5Yzg3NTE4ZmFmNmI2YzRlNzRhYzU4MDQ1NTViNGM2ZDE5ZTVkNDJiIGxlZ2FjeS10cnVuaworMzYzMTcgMDU0ZWRlMDFlM2QzMDU3ZTA3OTRhYTAxOWE2OWFkMWM3YWNmODQ3YyBsZWdhY3ktdHJ1bmsKKzM2MzE4IDUxZWI2N2E4NTY4ZWExYjVlN2YyMGNkZjQxYjZkYWY0NTEyNWU2MjAgbGVnYWN5LXRydW5rCiszNjMxOSA2ZmUyZDI0MTAwOGE4MjljODY5YWMzNTZhNmFjM2YxNDMwN2E1ZTZlIGxlZ2FjeS10cnVuaworMzYzMjAgZmJiZDY3Mjc0MDFiNjE2MmMzOGIxYWM1YjVlN2YxNTZmOTFkZjJkZCBsZWdhY3ktdHJ1bmsKKzM2MzIxIDBkYjYzYTc2NWE3NzAxZTllYzc4ZjVmZThmMTIxYmMwNTAxMWMwOGIgbGVnYWN5LXRydW5rCiszNjMyMiBmMDRmMDgxZmYyMzExMDllMTE1NGVmNzgyNmU1ZTJiOGE4NWIxMDA2IGxlZ2FjeS10cnVuaworMzYzMjMgODc0MDE2NThlYjQ1NzI5Njk4Y2QwOGM0MTk5ZDk3MzlmNzRiOTcxNCBsZWdhY3ktdHJ1bmsKKzM2MzI0IGM0ZWVmZmVhMTk2MDM4YjE3ZWU2ZTc3NGQxOTMzMzZlODA0OGJmOWUgbGVnYWN5LXRydW5rCiszNjMyNSAxOTE3OTZiN2EwNTQ1NmQ1NDRmYjJmMDVhMjk0MjRmN2Q0Y2IyYWI3IGxlZ2FjeS10cnVuaworMzYzMjYgZjVmMDRjZTI1MTYzNTc2MTY4NDZhZDIwNzJkMjMwZjE3YTkwYjJlYSBsZWdhY3ktdHJ1bmsKKzM2MzI3IDY4MmY3NDA4ODYwMjhmZGVkMWY5M2ZjYzM5ZjA0NTU5MzIwODUzYjIgbGVnYWN5LXRydW5rCiszNjMyOCA4ZTc2OGMzYWYwMTVkNzEyOTU3NDU3YjM0OTAxNGFjMjRkYjM0ZjA2IGxlZ2FjeS10cnVuaworMzYzMjkgM2Q2ODllNzE1ZGIyNDRhOTI1NDYzZjUzNmI0ZTY2NzhkNWE4OWMyZiBsZWdhY3ktdHJ1bmsKKzM2MzMwIDYxZjkwMzRhMTBmNzFmMWRlOWE2MGFiMjg0MzkyMWE5MzcyMzk3ZTUgcmVsZWFzZTIzLW1haW50CiszNjMzMSA4ZTdjOTFkZTk0OTE5NjE3MjEwMzc5ODc1OWYyZTZjZWY3Njc0YTIxIGxlZ2FjeS10cnVuaworMzYzMzIgYzRlZDE0ZmFiMTJhMzZiNzVkNmQyMTI4MzVlNjI2Y2ExMmUxNjVkMiBsZWdhY3ktdHJ1bmsKKzM2MzMzIGVjOTI4ZWQwMWFjYzU1ZTI2OTEwYjE0NmMyN2FmNWNjODdlYjE4YTQgbGVnYWN5LXRydW5rCiszNjMzNCBiNjFjNDFkMTk3Nzg3MDg4ZDU0NjVkOGRiMDE3NzQ3MDVjNDI3NTFhIGxlZ2FjeS10cnVuaworMzYzMzUgMzI5ZWU0ODMwYjA0MTIxNGNhYjk1ZmIwYzRmOGEwZWNkZmFjMzRjOCBsZWdhY3ktdHJ1bmsKKzM2MzM2IDQ1NDllNzVhNjI0MzRlNDgyYjI1MDMxZTY4YWYyNDJlM2JhNDNkYjEgbGVnYWN5LXRydW5rCiszNjMzNyA1ZTQxY2JlYzA0NjUzZmY1MWMxNTM2ZDNmMWM3NmE3Nzc5ZTYzZWU5IGxlZ2FjeS10cnVuaworMzYzMzggZjU4Y2MzMzRkMTVjNDYyYzU2NWQ2YTgzMzU3NTkwOGZlY2ZjNGYzYyBsZWdhY3ktdHJ1bmsKKzM2MzM5IDEwZTc1ZWE1OTYwNTQ4MzNhYTdkOTY2Mzg2ZGIyODkxNDA1ZGQ3MzYgcmVsZWFzZTIzLW1haW50CiszNjM0MCA0YmY4ZmIxMTg5NGY0YjgxZmFmNzRkYjAzNjM1NWRjMzFjODM0ZjZkIGxlZ2FjeS10cnVuaworMzYzNDEgNzM3ZTg5MmEyYzJjZjY4NjA1OGJhMTFhODhlYmQzMWExZjRhZDkyMiBsZWdhY3ktdHJ1bmsKKzM2MzQyIGNhZmQxMzRmYzFjZDQ0YjY5OWNlNDJjODgwNmM0MGQ4M2FhYzdjNTcgbGVnYWN5LXRydW5rCiszNjM0MyBkYTYzZTJkNmViOGEzZDFmMGViMzUyZWI0YTU5YWU5NmYzZmFjYjA0IGxlZ2FjeS10cnVuaworMzYzNDQgOTg3ZTM2YWZiODc5ZDI2Njc3NTFlYmFjMjQ0OGRmN2JjNGRkMjNlYiByZWxlYXNlMjMtbWFpbnQKKzM2MzQ1IGVjNWQwZTg3Mzk2NDE4NTJjODFjMDA3Y2IyZGZjOGU5NzEwZTVlNzggbGVnYWN5LXRydW5rCiszNjM0NiA3OGJkMjViNDJkNDYzMTQyYzg0MGQwMWYwY2NhYzNlYTNhMTZhOWU1IGxlZ2FjeS10cnVuaworMzYzNDcgMGRhNjYwZTA1ZTY5MGRjYTEwOGJmNjgxZGIyY2M5MjY3ZThiNThhYyBsZWdhY3ktdHJ1bmsKKzM2MzQ4IDY3NTM5Y2ZjZjA5ZmU4YjUzNGFlNDBlYmQ5ZmE2ZmQzMDFlNmE0ZjAgbGVnYWN5LXRydW5rCiszNjM0OSAyNDc2YTgzMzQyODZiN2EwYmZlMTBhY2NjYzM5ZTdlMzIxZjMxMTE1IGxlZ2FjeS10cnVuaworMzYzNTAgMjQ1MWM5NTcyZWRmNWMwMDk1MjJjZTcwNzQ2MmZmZmI5M2E4OWRjYiBsZWdhY3ktdHJ1bmsKKzM2MzUxIDg3ZDE5NmUxYzJkMDFkNThmMDg3YmViZGI0NDU0YWQwN2NmNjUxNWQgbGVnYWN5LXRydW5rCiszNjM1MiA5MjgyMGVhNWFlOGNiZTEzZGEwYjAyM2U3YWI2YmQwYWI0N2U3MmZkIGxlZ2FjeS10cnVuaworMzYzNTMgMjAxOTg2ZDZkOWQ2MzUwY2ZiMmE2NThjZGM2YzM5NzJiZGVjN2M2YiBsZWdhY3ktdHJ1bmsKKzM2MzU0IDE2MzRmNjAxMTg4ODU5OTU5YTE3OGFkNzc3ZTU5ZTM2Y2I0Y2U5NTggbGVnYWN5LXRydW5rCiszNjM1NSAzMjQ1NWRiOTcxMzU3NmMyOTdlYjhjZWNlNWJkMzBlNzU1NzhmNTczIGxlZ2FjeS10cnVuaworMzYzNTYgNDNiODA5ODE1YzdkNzU5YzFjZWQ5Yzc2N2NiNGNlNzM3MTNlMmRiNyBsZWdhY3ktdHJ1bmsKKzM2MzU3IDdmZDZmODdlNWQxZmNlYmExNThmZTFkY2Y1NDdiMDk2NWIwMzE0OTUgbGVnYWN5LXRydW5rCiszNjM1OCA0ZmFiNGE1Y2NlMmY1ZDQ0MGU0ZWU1MDVhOTYzZWJiOTI2YzMxNmJmIGxlZ2FjeS10cnVuaworMzYzNjAgN2U0NGYzYThiNTY4N2NmYTYxMmUyYzQ1YzgxODUwYmNkNzQxNTUwOSBsZWdhY3ktdHJ1bmsKKzM2MzYxIDdhZDY4NTg3YzlhY2I2MjUzNDVhZmU3NzgyMGIzOWIxNzMzMDAwMDggbGVnYWN5LXRydW5rCiszNjM2MiA3NzU5NzA0ZTc4NzI5MjUxYTk1NGRmNzBkOWE1MTUwYzUxMTA0YTQ1IGxlZ2FjeS10cnVuaworMzYzNjMgZWM4ZTRlZDJiMTU3Y2M5Y2I3MzI1NzAwMWQ4MTcyMmQyMWM1NGVmZiBsZWdhY3ktdHJ1bmsKKzM2MzY0IGM0ZDU0YzRiYTU1NDNlYTgyY2Y1NzQ0YjE0NTk5ZWE1ZTU4OTY5ZjUgbGVnYWN5LXRydW5rCiszNjM2NSA0NjkzZmExOWUyMmJkY2EyYmE5NjM1NjQwOGNmNWQ4NDcyZGU1ZjQ5IGxlZ2FjeS10cnVuaworMzYzNjYgZDFmYjRiZDQ4OTM2MDczYzI4NDJiMDdlN2U4NmM0NDIyOTkwZjVlMCBsZWdhY3ktdHJ1bmsKKzM2MzY3IGQ0Mjc0OWRiOTMzOTI1MmNhMzcwNzg2MDhkZjY4OGVhYTkyNzM4MDcgbGVnYWN5LXRydW5rCiszNjM2OCA5Mjg4ZDUyNGQ3NTc5OTcyMjVhYmE5NjkzZWE0OTNlNWM4MGFiODBjIGxlZ2FjeS10cnVuaworMzYzNjggOTJjYTY1OGZkNDIwMDk1YjYyODRjOWNlNmU5MDgyYTgwMjg1ZWM5YyBsZWdhY3ktdHJ1bmsKKzM2MzcwIGJlMWExMmQwYjg5NWQyNTE2OTIwMjVhYjM5NDhkN2FhNzliNjQ1NWUgbGVnYWN5LXRydW5rCiszNjM3MSBmM2YxMWQ4NjNhMDJmNjEzYWY3ZDU3M2Y1NmQ0YjEyN2UyYzhjNzY3IGxlZ2FjeS10cnVuaworMzYzNzIgZjQ2ZDQ5ZTJlMGYwYjE4ZmQ5MzI1OWY2NzZiNTVjODU1NGQ5NzIxMSBsZWdhY3ktdHJ1bmsKKzM2MzczIDM3MDZhMzcwNGFlYWMwMmE1MmQ4NjRhMTM1ZTQxM2FkNGMxYmM5ZjggbGVnYWN5LXRydW5rCiszNjM3NCBjMDk5YWE3Njc5NTJkOThhNmQ3YTI2ODFkNTMwMTg3YjM0MzBmMTEzIGxlZ2FjeS10cnVuaworMzYzNzUgNzRjM2I3MTNlMzVhNmFmZDU1ODQ3YTdiZWNjNTU0NzUyZTZlMWQ0NyBsZWdhY3ktdHJ1bmsKKzM2Mzc2IGQ5MDlhMGRkZDE5MzJkZTBmYmJlMjE5NDRiNzlmZjI3YTNjNzkyMjEgbGVnYWN5LXRydW5rCiszNjM3NyBlYzI4NTYzYjA1MmU4ZmQ2YjlmNGE3NDE2NzMyMjQ2M2Q4NDMxZjRlIGxlZ2FjeS10cnVuaworMzYzNzggMDI5ZGZmYjYzZjRiZjFjYWNiNzk3MTEzZWIzMDM0OGVlODhhMzIwNyBsZWdhY3ktdHJ1bmsKKzM2Mzc5IDdmNGI2NmRjNDM3NjJkYThjZWZmNzhmYjY5MTlhNDU5NzczMWI1ZGYgbGVnYWN5LXRydW5rCiszNjM4MCBlYzFiNTZiNDNhZjA0NjVkNGJlMzdhNThmMjZlY2U3MTRmNGExYjRlIGxlZ2FjeS10cnVuaworMzYzODEgZTRiOTZjM2EzZTEyMjlkYWE3ODNjZmNmOWQ5MzBlYTI2MjYwNTFiMCBsZWdhY3ktdHJ1bmsKKzM2MzgyIDZmMzUxYjFiY2Y1MzRjOGNhYWIwMjRhMWE4NDE5ZmUyZmQ1MjhlMTQgbGVnYWN5LXRydW5rCiszNjM4MyBhMTYwYjk2NjlkYjFlMzIwY2UyY2EzZmZkZGE3ZWE3Y2NlNGNlYjk5IGxlZ2FjeS10cnVuaworMzYzODQgNjliYjI0MWIwNTZjOTZmMTUyNDIzYWFjZWJlNDRlNTE5NjNjOTU0NSBsZWdhY3ktdHJ1bmsKKzM2Mzg1IGNmMTM4YzU1ZDQxYmU2YmM2ZWRjZjJjOTc0M2YzNTdmYTczMDFmMzUgbGVnYWN5LXRydW5rCiszNjM4NiAxMTE4NjgzY2Q0ZDFjZjVjMDVmNmM3ZTBkMGExMTQ2M2Y5NmVmOWE3IGxlZ2FjeS10cnVuaworMzYzODcgM2FhZGZjM2ZjNGU2ZmRiODA3ZmM2YWE1YjcwY2Q1M2MzNDlmYWRkNCBsZWdhY3ktdHJ1bmsKKzM2Mzg4IDAwNjRmNTViYWZhN2M5Njg3MzM4OThiMjRkOTNkY2Q0MDBmZGMwMDggbGVnYWN5LXRydW5rCiszNjM4OSA4NDRkOTljODg4YmJhMTRmNjUzMDhiMzE2Y2RlNjViYWM0MTEzZWE3IGxlZ2FjeS10cnVuaworMzYzOTAgNWMyNWNhNmZmYWY5ZTU5NTU2ZWE2NzRhZTZjMzA4NTVlMzM1NTM0MyBsZWdhY3ktdHJ1bmsKKzM2MzkxIDcwYjE1MDRlMTdmZmNmNmEwZDk5NzA5Y2ZkYjNjMzNkOTA2MWYwZDMgbGVnYWN5LXRydW5rCiszNjM5MiBiZWMwYzc2MTg2MjU0MWU1ODk2NWMwNjg2ZjUzYzUzYTMzNDU3YzZiIGxlZ2FjeS10cnVuaworMzYzOTMgOGVhMmNiMWVjNTk4OGQ5YTMxMmMxNjRiYTZiMjIzODJiNGFiNWE0NiBsZWdhY3ktdHJ1bmsKKzM2Mzk0IDE1M2M1MTdiYzZlOTZlNzRmYzIxMzEzMGRkODk5Nzk4NzQ3NDljZjQgbGVnYWN5LXRydW5rCiszNjM5NSAyMjgzMjM4OTUyNzFlMDQ2ZTY3NWMwNDRjMmMzOWVlMmZlOGMwNjA4IGxlZ2FjeS10cnVuaworMzYzOTYgNTExZmZjNjJiMjk4YTdmMTFiMzYxZjE1MzRhYjA5NTYxNTI2YzQ3ZiBsZWdhY3ktdHJ1bmsKKzM2Mzk3IDgzY2JjMDI1YmZjNzRlNGUxOGE4ODcxMTE4MWI4NzZjNDkzNDY2MDEgbGVnYWN5LXRydW5rCiszNjM5OCBmZWY3OTExYTU3MDVjYWVmNzA1OTM4YTM3OWZlMThlMWYzMWRmMjJkIGxlZ2FjeS10cnVuaworMzYzOTkgMjFmZDZlNjJjZDI3NmIyNzI3OTI2MDc0Nzg5MWE5OWM0OGZlYjFlNiBsZWdhY3ktdHJ1bmsKKzM2NDAwIDQ5MmRjOGI4ZTU4ZWMxNWU3MTY3YWEyNjdkZjZjOTQzNDkwZjRlMjAgbGVnYWN5LXRydW5rCiszNjQwMSAyMzAzOTdiYzdlMzIwNDZjYWI1YjA3ZDg1ZjQ1NDFkMDRmYzBjNTZkIGxlZ2FjeS10cnVuaworMzY0MDIgMGRkNDczYThlNTNjMDkyMjdhMWU5ZDkxMTZiYzE5OWVlM2M4NWRkYiBsZWdhY3ktdHJ1bmsKKzM2NDAzIDRkMmY0YTM5ZWM1ZWQyNzQ5MDRjMTcyNzlkMzBmYTlkM2MyNTYxMWIgcmVsZWFzZTIzLWJyYW5jaAorMzY0MDQgNzM2MmUzNzJjODk3MGQxNjMwZjgyY2RhMzU0NmZkMzViYTYzODVjYyBsZWdhY3ktdHJ1bmsKKzM2NDA1IGYyZjBjNWZkOWI2YzlkM2YzMWZjMTdkM2U3YmJlNGIxNzNiODExZmUgbGVnYWN5LXRydW5rCiszNjQwNiBhNjRiYWU1YzMzYjdlNzZhMDg0NjFhZmU4ZDIyODNiNWM4MzgxZTQyIHJlbGVhc2UyMy1icmFuY2gKKzM2NDA3IGRlMzI2ZDdlNzRlOGI4Mzc5OTg1MTEzOGQ3NGExZTY1YWI3MDU4MTYgbGVnYWN5LXRydW5rCiszNjQwOCBhMDNiY2ExNjU0ZDBhMmZmODAzN2NlMjk5MzQyZWRmYzFlMjBmZTVmIGxlZ2FjeS10cnVuaworMzY0MDkgNjdhODRhMzNkMGY4YzM0M2MwZjJlMDA1OTJkNDY5YWZhZGJkNjI2NCBsZWdhY3ktdHJ1bmsKKzM2NDEwIDRiZTRjNjM2NzNlYjE1YzkzMWJkYWMzYWI1MDRhNzE5MWVkNDBiZjkgbGVnYWN5LXRydW5rCiszNjQxMSAzZTkyNTk1OWZhMDFhY2VkYzY4NzczODE2N2RmZWYzN2YwMTBjNDI1IGxlZ2FjeS10cnVuaworMzY0MTIgYzc4ZmNkZDAyNDY0NDZkZjEzMzQ1YzQ4MWQyZjJlZjZjODQ4MzY4NiBsZWdhY3ktdHJ1bmsKKzM2NDEzIGYzZjQ3NjVlZmU2NjgzMzhlMjNkM2MzNTJhNTFjZWNlOTVlOWMyYzAgbGVnYWN5LXRydW5rCiszNjQxNCA1YjI1YzY0NDZhZWIzM2Y3MzY0NGRjOWQ0YzFlMmI0ODQ1ODIyZDBlIGxlZ2FjeS10cnVuaworMzY0MTUgNmQ3YWIwY2FkNzJkZTE2Y2ZjMWQ3OTJmMzI0NDUwZjA1ODg3MmU4OSByZWxlYXNlMjMtbWFpbnQKKzM2NDE2IGZkYjkzNzc1MTNlNDJiMjk5NTU0Y2ZkNDI4ODU0YTg1M2RiNjFjZjUgbGVnYWN5LXRydW5rCiszNjQxNyBmNmI0NWQxY2IwYTJiZjY3YjExYWI2ZjY2MTU2YTYwN2ZmM2RjZDE4IGxlZ2FjeS10cnVuaworMzY0MTggYjUyN2NiMWIyYjllYjRhZDk0NjZjOTg2NjU5MjdlNTBmOTZiZjBhMiBsZWdhY3ktdHJ1bmsKKzM2NDE5IDFjNWVkODFmZmEyMzVkYjg5MGYyNzE4OGMxOTk4Mjk2M2U0YzhjYjMgcmVsZWFzZTIzLW1haW50CiszNjQyMCBjMTZiMDNiYTFjMjJiZTQwNDNmNDA1OWFiZDcxM2RmZDE3NjBjZGJiIHJlbGVhc2UyMy1tYWludAorMzY0MjEgOTBkNWNlZTdlNjZlNDdhOTQ5ODA2ZDJlYWE0OTc4Yjk0YWZiZjUwOCBsZWdhY3ktdHJ1bmsKKzM2NDIyIDU5OGE1Y2U2MzMyMmZhZTNhY2U2YjQ4ZTAxOTc4MjYxYTVhYjUyZTUgbGVnYWN5LXRydW5rCiszNjQyMyA1MDc0NWQ5OWZiZjE2MDg4ZDNkMTJkZmE2ZjI3ODc1MjY5YjQxMTIwIGxlZ2FjeS10cnVuaworMzY0MjQgNWUxZjU1ZWMxN2Q2YzcxMGEyMDM3NmYzNjg1OWEyZjNmNGI5MjAxYyBsZWdhY3ktdHJ1bmsKKzM2NDI1IGFiOTc5ZmY4YjAyYWVjYTU0Nzk4YWNjMTY2YTU5YzQxNDU4YTUxMWIgbGVnYWN5LXRydW5rCiszNjQyNiA3OTliY2RmZjJjZGMwNTYxYjYyODY1NTEyZjM4MjI5M2M1ODcxZDlkIGxlZ2FjeS10cnVuaworMzY0MjcgMDhkOTA0NjBhYjRkNjI0ODcwYmE3YWZhYjBjZjI5NDM4N2ZiZThjMCBsZWdhY3ktdHJ1bmsKKzM2NDI4IDU3ZDIxYzVlMGViOGFmMGIyYmEzNTYyMzI0NGMzZjU2NGUzNzljMDEgbGVnYWN5LXRydW5rCiszNjQyOSBjYzFmNzRkMTlmY2JiN2NiMTkxNmE4ZTQ0ZTYxNWQ0YTdlYzBiN2I4IGxlZ2FjeS10cnVuaworMzY0MzAgYzQzMTZkZjJmZWQ0Njg4NWMyMzNjNWRkMmM4ZWE0MTg5M2NmYmRiMiBsZWdhY3ktdHJ1bmsKKzM2NDMxIDZlOWMxODI5NThmOTE3MGZiMjllYjNlOTcyNzZiZTIyODlhNDk2MzIgcmVsZWFzZTIzLW1haW50CiszNjQzMiAyYjEwZTJiNWU4MWVmMjNlNmE1N2Y3MmY5ZGVmZjUxZWZkZTUwNzViIGxlZ2FjeS10cnVuaworMzY0MzMgNGYyNDgzYWJiNjIzYWY2NDA4ZDg1ZGRlYmE1NjFiOTk2M2M3NmE3MiBsZWdhY3ktdHJ1bmsKKzM2NDM0IDhiMzI4OGY2MDdlMWY4MjQwNzBjZDU3MDg4YjFhM2VkZTYzZWFiYzkgbGVnYWN5LXRydW5rCiszNjQzNSA1NTQ2YzdhZTI0ZjcwZDdmNWNkZDg3NzRjYWIwOTU5Yzk0MGYzMTk5IGxlZ2FjeS10cnVuaworMzY0MzYgMzFiNjVkODM3MWFmOGQyNmFlZjBlMTg0Mjk3ODczNzFmOGNhNzMxOSBsZWdhY3ktdHJ1bmsKKzM2NDM3IGYwODFmM2E1NjhmYTg4N2UxNWJmYWRmYWYzYWQ1OTJlNDMxNWE0YWUgbGVnYWN5LXRydW5rCiszNjQzOCAwOWVhZWU3Mjk3M2M1MGViZWVjOGZmYTA4M2JmYmRmYjM2OTRiYjBkIGxlZ2FjeS10cnVuaworMzY0MzkgYzUzOGE3NjQ0ZmZhNmNiNzhjZWQzY2I2ZTM4NDUwOWIwMjVhOGJlMCBsZWdhY3ktdHJ1bmsKKzM2NDQwIGU2ZjdlZjcwNzNjNjc5NjIwZDk5OGRiZTA0YTY2MWZhZDMzZWMzNjggbGVnYWN5LXRydW5rCiszNjQ0MSBhZmI0MDMzODNmNWQwN2EyZmQ3ZWE2ZjhlNzU1MzgzMDk0Y2U0NTUxIGxlZ2FjeS10cnVuaworMzY0NDIgZjYwM2U1ZTk2YTRmN2M4MDk0Y2RlZmFlNjc5M2EzZmMyZGIxNmU5NiBsZWdhY3ktdHJ1bmsKKzM2NDQzIDJmZDY5MjQwNzI5YWFlNTNmOWQzNGM0OGE3N2ZkMDcxYTg2Y2JjZTIgbGVnYWN5LXRydW5rCiszNjQ0NCA2YWJhNmQwNzU4OTlhNjE4N2Q4M2Y2Nzc0MTMyM2Y1NDUzOGQyMWJkIGxlZ2FjeS10cnVuaworMzY0NDUgMTQ0NjA5NWE5NzFhYjhhMzU2ZjVlNmNjOGViYTYyZmIwYjQxOWJjZCByZWxlYXNlMjMtbWFpbnQKKzM2NDQ2IGY4NmJmYzAzZTc2MzY1NDY2NDJhZWM5ZTI5ZDA2NzM2M2JmMDQyNzggbGVnYWN5LXRydW5rCiszNjQ0NyA3MzAxNmJkMDFhNzE0YWZhYzRjYTkwNDNmZTNkYWI2OGMwYjEzZWQxIGxlZ2FjeS10cnVuaworMzY0NDggZDQyZWZjMmI0NWU5NWM2OGZiNDYxMzFjMzMxZTFmMWQ5NzVlM2EyOCBsZWdhY3ktdHJ1bmsKKzM2NDQ5IGY5YWQ1ZDIwMmU4ZWY0NDIzMTE3NWFlYTA1NzhmZjcxMGI2NWVmZDYgbGVnYWN5LXRydW5rCiszNjQ1MCA0NTdmZDQxYzk2MWQyZmY4YTMxNjdlNzdhZTQ0OTk3YjlkOGYyMWJhIGxlZ2FjeS10cnVuaworMzY0NTEgNTEzOTg5MmFkZTYyMWNkOGM2Nzc2MGFjNGZjZWUwNTBjNTljY2JkYSBsZWdhY3ktdHJ1bmsKKzM2NDUyIDYxNzNkOTdiODI5ZTZlNGMxMmQyOTVlMDQxN2E1NGI2OGRkM2ZkN2EgbGVnYWN5LXRydW5rCiszNjQ1MyAwNTlkYWUwNjU4NWJlZmJlYWVlMjk5M2EzYzk5ZDMyNjAzNTE0NjI0IGxlZ2FjeS10cnVuaworMzY0NTQgY2UzMzk2N2E0YWIwZjMzNjM4ZTUxMWFhNmJlYWM2ZGNmMTIwNjk0OSBsZWdhY3ktdHJ1bmsKKzM2NDU1IGNmMGM5ZTE1ZjZmNGQ2NDg0ZmVkNGE5MTA5ZDczNTE5MmRkZjc4NmUgcmVsZWFzZTIzLW1haW50CiszNjQ1NiBjOTg2OWExOGU2MjEzMmQzZjhhNTNmMzdmYmIxOGY1OTQzM2YxZTM1IGxlZ2FjeS10cnVuaworMzY0NTcgYWIxOGVmODNmNWE2MmFjNGE2MWZkMTg1Yzc5MTliYmRhY2Q3NmU4YiBsZWdhY3ktdHJ1bmsKKzM2NDU4IDliNWM2MzgwMmJmOWUyYWI2ODY0NWMyNWZhMzViMzQ0MjNlZTI3YjggbGVnYWN5LXRydW5rCiszNjQ1OSA2ZjM2ZTAyYjFmNjk3ZDBjYzM0NjZjZDM0ZWJmZTE5NmQ3MjkxZWI3IGxlZ2FjeS10cnVuaworMzY0NjAgOTlhYzUzMGU4YjNmNTdiNDJmODE1YzQ4YzdmZjhlZTExYTAwNjdmOSBsZWdhY3ktdHJ1bmsKKzM2NDYxIGVmMjM5NDAxNGQyNDVlNTFhNDMyMzgzZWZmMDI0N2I5MWM2ZWM1YTcgbGVnYWN5LXRydW5rCiszNjQ2MiAyZGJmNTk2ZTA1MjRlOTU5MTAwZjMzYTgyYWFmOWFjOGYzMzJlZjExIGxlZ2FjeS10cnVuaworMzY0NjMgZmRlNDMyN2NkNDcyNGQ0YTA4Njk5ZGQ2MDZlZDg4N2U3ZDUxOWU5NyBqaW0tbW9kdWxhdG9yCiszNjQ2NCBkYTE4MjEwZTMxMWMyYzIwZTJjMjQ1ODBlZWY4Y2UzMWQ5NmMwMjg4IGxlZ2FjeS10cnVuaworMzY0NjUgZDhmMzE3Y2E4MGJkMzBjYmY2YzdmZDJjNjYwM2M2ZmMwZDc2Y2Q3MSByZWxlYXNlMjMtbWFpbnQKKzM2NDY2IGRiOTk0ODQ5Y2RmM2ZjNDEzNmYxNTZmYTQ2MTYwOTQ5NTI2Yzc4MWYgbGVnYWN5LXRydW5rCiszNjQ2NyBjZjBiYWVmZThkNDAxMzBhMzI4NzhlNmNlYjlhY2Y2MmQ1OTMxMzQ3IGxlZ2FjeS10cnVuaworMzY0NjggZmJiOTAxZDYyOTdiNTVkYzNlM2U3OTM3NjMyZDQzZWZkMjlkZWU3MCBsZWdhY3ktdHJ1bmsKKzM2NDY5IGZmNTlhZDU4NTY4ZTFmNWNhMzU1YzdhOWQzZGNmNDFkZGZjZGNkMzUgbGVnYWN5LXRydW5rCiszNjQ3MCBlODk5MDYwYjFmMDUxZWYxNGJhZDYwOTk5NjIxY2UxYjFhZWI3ZmM4IGxlZ2FjeS10cnVuaworMzY0NzEgZGMzMmUwYThhMGVkYjE1ZjJjZmMyODM1YjY1MDI5ODgwMjViNzNiZCByZWxlYXNlMjMtbWFpbnQKKzM2NDcyIDliYzJlZWMxNDc4YjZiYTU1ZjBiMDdlNjg5MTJlODVmZWU1MzI4MTAgbGVnYWN5LXRydW5rCiszNjQ3MyA5YzM0ODUyNmE2OTk0MDdiY2YzMTEzNDU1OGE4MjkxYWFlOGEzYTM0IGxlZ2FjeS10cnVuaworMzY0NzQgNmMxYzU5NTdmZWQ1ZjllMGZkYzk4MmI2NzM1ZmQwMmM5MWYxZTVmZiByZWxlYXNlMjMtbWFpbnQKKzM2NDc1IDNjMmQ5ZTdhYzVhMWY5OWY4OGNjYTBjNWI4Mjg1NWExYThmYTZhY2QgbGVnYWN5LXRydW5rCiszNjQ3NiA3YmQwNGE0ZDI4YjkzMWYxODlhNjM5NGVkZDkwYzU4NWI0YmI0MzQ1IGxlZ2FjeS10cnVuaworMzY0NzcgOTI5NDQ0Y2EyMmQ4ZjZkZmVjOWVkZWEzOTljOGU3Y2VmZWUyY2JjYSByZWxlYXNlMjMtbWFpbnQKKzM2NDc4IGY3MjVhMTkxMGQwZDA3NzMzYjdkNTE2YjM1NWM3OWZkZGE3NTg5ZjMgbGVnYWN5LXRydW5rCiszNjQ3OSA0NjNiZjVlYmY4YTMzYWI0MzMzZjQ0ZDk3NjY3N2Y2OTNjNGE3MTJmIHJlbGVhc2UyMy1tYWludAorMzY0ODAgMzkxOTM3NTcxMDY1YWUxMjY0YWE1YTQ4Y2JmODc5NjM4NWM3MmQ5OCBsZWdhY3ktdHJ1bmsKKzM2NDgxIGJlMTQyN2NiMDQwNmY2MjlmNzNhMTQ0ZTEyNDMxYjhlMWNhMTg3NTMgbGVnYWN5LXRydW5rCiszNjQ4MiAzY2NhMjhhYjM4NTQ0MjE1OGIwYzkyZGZmNWEyZmFhZjNlMmM1NWI4IHJlbGVhc2UyMy1tYWludAorMzY0ODMgY2EyYWE0M2JhMzhiN2FlZjIzNzMxNGVhNmVlMmNmMTE1YTU5OTExOCByZWxlYXNlMjMtbWFpbnQKKzM2NDg0IDU4ODQzZjE4NmU4MGZkZWZlNDkxYTM0OWFjOTVmNDdjNGI3ZWRiN2MgcmVsZWFzZTIzLW1haW50CiszNjQ4NSBjMTMxYzc4OGEwNmZhYzgxODUzM2RkN2JhYzM2ODFlYmVmY2QyNzhjIHJlbGVhc2UyMy1tYWludAorMzY0ODYgZTRkOWQ4NDBjZTZlNTU5Y2MzZWU1YzNmNWNlMWNmNWRlOGZlZDYwOCBsZWdhY3ktdHJ1bmsKKzM2NDg3IDZjNWYwMWVjMmY3NWI2ZTE0NzlmNDUxNTFhNGIxMTRkOGJiM2RkYjggbGVnYWN5LXRydW5rCiszNjQ4OCA4YmQ2N2JhZDE0M2NkYzU2MmRlNjBkOTY4NWU5N2MxMzFmNTc3OWNjIHJlbGVhc2UyMy1tYWludAorMzY0ODkgM2ViNmQyNTM2MGEzN2EwMjI5YjlmZDUwMTAxYzE0NGVmNjQwMDcxNSBsZWdhY3ktdHJ1bmsKKzM2NDkwIGMxM2Q5MTFhZTA1YmMwZjM2NWE5NzAwMzE4OTYyODBmZThjYzQ2YzAgbGVnYWN5LXRydW5rCiszNjQ5MSA5NDFjMjM5Y2I2ZDI5NjhjMDMyMDhiN2YwNDgwNzU5ZDFjODUyNGE0IGxlZ2FjeS10cnVuaworMzY0OTIgNTk0OTk2Y2FmZjEwZDEzYjY2ZDEyNzJkYmU4NDE2YmE4ZDUzY2M3YSBsZWdhY3ktdHJ1bmsKKzM2NDkzIDI3MmFiNWE1NGI5ZWJjOWM2MWVkMWE3MmZjODUxNTk2MDU0MWM4MmQgbGVnYWN5LXRydW5rCiszNjQ5NCBhMWE5Nzc2ZmFiNTNlYTJmNjQwMjRlYzk2MTBjMDViNGY5MGJkZmFkIGxlZ2FjeS10cnVuaworMzY0OTUgNTJiZWFmZDkzNmM4MGU1OGU1MzNmZTc2YjM0NDYzZjU4YWJhMDUzYiBsZWdhY3ktdHJ1bmsKKzM2NDk2IGQyZTY2ZWFhNWY3NGU4MWU3ODg5YzkxMWJiZGNlOGI5ZjQ0MTJlYzQgbGVnYWN5LXRydW5rCiszNjQ5NyA5Nzc2OGQ4NzM5NGE0NDEwNzI1NzNkYzJjMzU3NmNmYjhkNjcwNzA0IGxlZ2FjeS10cnVuaworMzY0OTggMzQ3OTYxMGZiMjg4ZDk5OTJiYzg0Yjg0OGJjZGQ4YjdmMDI1NjQ4ZiBsZWdhY3ktdHJ1bmsKKzM2NDk5IDk0OTQ3M2ZhNDgyODVlNWM4NmJmMmJjNDJhNzliNzNkNzhiMjFhNjUgbGVnYWN5LXRydW5rCiszNjUwMCA4OGY1NDA1NzYxYWY3NjM0YzcxNDExNGMxNWNhYmVkZGM1MzVmZWQ2IGxlZ2FjeS10cnVuaworMzY1MDEgNjg3ZDJlY2ZhNjQ4NWU4Yjc1OGIyZmExOWVkNTE0OTMwM2JhYjY5OSBsZWdhY3ktdHJ1bmsKKzM2NTAyIGNhZGEyZTliNjg1Yzg5ZTliODcwZjY4N2ViMTlhNjVmNzAxM2YxODggbGVnYWN5LXRydW5rCiszNjUwMyA1NTgxZDY4YjNhZTllNzIzODRkZjUxYWZmNjkyNTAyMmYxZDQwMjdkIGxlZ2FjeS10cnVuaworMzY1MDQgZDNkNDI2NDgzZDcxMDQzYjNiNTk3ZmNhNWYwNzg1MGZmZTYxYTlmNSBsZWdhY3ktdHJ1bmsKKzM2NTA1IDEwNGE3ZmMwNmJkZmEyYTRkZWQ0ZDVlNzk5MGUyOGQ4MDBmODhkMTIgbGVnYWN5LXRydW5rCiszNjUwNiBiYzRkZDMxYzczZmRmNGY4NTY4NWUxNDlkZGM2ODZlZmU4MGVlOTU0IGxlZ2FjeS10cnVuaworMzY1MDcgOGZjZjIwNTJkMTZlMjA2MjI5MmE4N2QwYzhhOTZjNTY3NjNhNzllYyBsZWdhY3ktdHJ1bmsKKzM2NTA4IGQ2NGRjZmI0OTViMmI3MTVmZGQxNmNjM2ZkZWEyMDY1OGM3NmQwYjcgbGVnYWN5LXRydW5rCiszNjUwOSAzNWQ0MGZmNjllYjYyNjRlOWI5MWU4NjIwNjM0N2MzZmJiNjI5NGNmIGxlZ2FjeS10cnVuaworMzY1MTAgOWEzYjQyMTliY2JlZGViYTQ5YzUxYmZmNzk5Y2Y5YmJhMDUzNjZiMCBsZWdhY3ktdHJ1bmsKKzM2NTExIGZhZTQ2MDc5NGQzZDM5ZjYwYTk0MGNkOTc4ZTc1Y2VlNWRkN2IyOGEgbGVnYWN5LXRydW5rCiszNjUxMiAxMzk5ZGM2MTY3MjBmNGIwM2IzY2RjMjJhY2Q2MTkzZmJjZWEzYTA1IHJlbGVhc2UyMy1tYWludAorMzY1MTMgNTc3YTllNGM4MmZiNzFlMjZiZWM5ZTkyMmE0ODhmM2NiZjc5NTljYSBsZWdhY3ktdHJ1bmsKKzM2NTE0IDJiZjg2OWQzMWYwY2U2MTVlN2MzMzg1Y2MwODNkNjE1ZjRhZTAyMzYgbGVnYWN5LXRydW5rCiszNjUxNSA1ZmI3OGEyZDk0ZjBhZGUwZDlhNTJhYTU3M2EyZGNmM2NhZmY2NGIyIGxlZ2FjeS10cnVuaworMzY1MTYgMjExZGI2N2NjZDA5ZWQ5NDM0ZTdmMDkyZWZmMmE2ZDc3N2U5NGM1ZCByZWxlYXNlMjMtbWFpbnQKKzM2NTE3IDc4MGEzMzc4NzQ1OGVjZTIxM2IzNjY3Y2I4N2Q4MTA5ZWVhMTk2YTkgbGVnYWN5LXRydW5rCiszNjUxOCAzYzM4MmQ5MGYzMDJkM2U1NjI4ZmY3NjMxZGY3ZmI5YzRlYjUwM2JiIGxlZ2FjeS10cnVuaworMzY1MTkgZmYyNjcxNGJmODZkYzRjMjJiNGUxNThjMTY3MzViNjYxNGM5ODgwZiBsZWdhY3ktdHJ1bmsKKzM2NTIwIGJlNmYyZTFhNzhiNzYzYzI2YmIxMmQzNWI5NzNjNjk2MmE1NDkzNjcgbGVnYWN5LXRydW5rCiszNjUyMSA0OWJhYWQ3YjAzMmUwYjBjNGRhYmZkZmFlNDQwNjRhYjQ0YTYzMWU4IGxlZ2FjeS10cnVuaworMzY1MjIgNzc0MmY4NWEzNzIzOGUyYzVlYjBiYzA4ZDJjYzQzMGVjMWI2NTE2OSBsZWdhY3ktdHJ1bmsKKzM2NTIzIGRjMmZlNzdkZDE2N2VkYzg2NTFmNTMwMjRhMDUyNjdhZjc4YzQxOGYgbGVnYWN5LXRydW5rCiszNjUyNCAwNzI5ZDFkYjUxMTgzODBkZDA3MDMyMDhjMjZlNjk4ZGY0ZmZjNGRhIGxlZ2FjeS10cnVuaworMzY1MjUgZWQzNjYyMWIxMjZhMWU3OTg1NDRkM2QyYWExNTExMGI0ZGZkMGVlNCBsZWdhY3ktdHJ1bmsKKzM2NTI2IGRmNGU2Y2M2NjYxZDA0NTg4OTk0OWM3MGVlNTdjNzBjNDNkM2VhNTcgcmVsZWFzZTIzLW1haW50CiszNjUyNyA0YmUyODA5M2U0ODBlYWMxNWFjMzQ5NzQyN2I5NzcyZTNhOWE1OTBiIHJlbGVhc2UyMy1tYWludAorMzY1MjggYWIwYjJhNTg4OGY5ZTcwZDExZjZiN2M5ZjBjNzU3YjU5NTg3YzcxNyBsZWdhY3ktdHJ1bmsKKzM2NTI5IDUwNjlmNWJkNjZmM2Y2ZDZiNzBmZDExMzQ2MTlkNmYwYjYxNGQxZGEgcmVsZWFzZTIzLW1haW50CiszNjUzMCBkMWVmODZmODc4NWY5M2RmNDhjZGEwNmZkNDYxMWJiYThmM2ZhZWMwIHJlbGVhc2UyMy1tYWludAorMzY1MzEgZjA4NTI5ODc5ZGIxYWQzZDVjYTQ1N2VmZGM2YmM5NDE4MDdhZDk0YyBsZWdhY3ktdHJ1bmsKKzM2NTMyIGFiZTA0ZTc3YTRiMGZkN2E3ZTg3ODZmZDI0MmY3ZDNmMzNkYzY4ZWUgbGVnYWN5LXRydW5rCiszNjUzMyA4NDZhY2U1NzM4OWM5MmE5ZGQ3ZTRmODgwNmQxMzFlYmEwMzFhMjMxIGxlZ2FjeS10cnVuaworMzY1MzQgZGY4OGZhZGJhMmY1NmNiZmU0NDE5MjJlNzg5NDkzM2MxOWNlMGRmZSBsZWdhY3ktdHJ1bmsKKzM2NTM1IGM3YzliNjhkZGRhMjljNTYxZGM4MjgzNzA3ZmI5YWNjMjI3MjA2YmEgbGVnYWN5LXRydW5rCiszNjUzNiAyNTVhZTIzYzc4ZmI2MTkzYmZjNWY1MzhjNmY2YzIzNzk3OWJlM2U4IGxlZ2FjeS10cnVuaworMzY1MzcgMzhhZDljNmU3MTdjOGIwYjhiYzk3MmY2MWYzMzgyZjJhMDg3NTM3YSBsZWdhY3ktdHJ1bmsKKzM2NTM4IDE3NDA2NTQzZjE1YjI3ZThhYmNiOThlM2YzNzA5YWZiZTBlNmM4M2EgbGVnYWN5LXRydW5rCiszNjUzOSA1YjBjODdkZTZkMDUwOTZlZDQxODEwNGM2YjdjNmRjNzc1NDYwZTEzIGxlZ2FjeS10cnVuaworMzY1NDAgZjc5Y2YxM2E5YTdkMTBhODMyYWJlMDIyNjVkN2UxMTU1NWRjYzRjMiBsZWdhY3ktdHJ1bmsKKzM2NTQxIDBlODkwYWMxYzBmMjY1ZjQ0N2YyN2ZmMzdmY2YwMzJmODM4YmJlOTYgbGVnYWN5LXRydW5rCiszNjU0MiAxYmQzMzgzYmFkOTg1MDM2NDgwMzY1YmVkMzM5MWZmOTY2NzI0NzQwIGxlZ2FjeS10cnVuaworMzY1NDMgMTA5NTUwZjVhODI5NjMwYThlZmYyMTA4MmMwZTBlYmYwZjA4MmUzYSBsZWdhY3ktdHJ1bmsKKzM2NTQ0IGNiYjI1ZmRhOTVhNTgwZjJjNjdmNGFhOWJkNDQwNzg4ODJlNmI0NmMgbGVnYWN5LXRydW5rCiszNjU0NSBkMDlkYTcxNDEzY2EwNGZjYjZjZjMzZmFjZmEyM2M1YTQwYWZlYmRlIGxlZ2FjeS10cnVuaworMzY1NDYgNGQ0M2IwYWJjMjJhOGI2MWZlMmFjNTBjZWFlOTk2ZmNlN2E2MzQ5MiBsZWdhY3ktdHJ1bmsKKzM2NTQ3IGVmY2E1NWJiYmEwYWIxMmEwNGY5NzZkNDY5NjM5YjUwNTAyYzM3MmYgbGVnYWN5LXRydW5rCiszNjU0OCA2YWNkNzA3MGVkNjZmN2FkNjUzMTBkYjAxYTJmOGNiYWE4ZjdjM2E2IGxlZ2FjeS10cnVuaworMzY1NDkgNzU1OWM3ZWI0NzgwMjc0MzQ5ODYyNjk2OGM2M2I4NDQxYTU2MGMxNSBsZWdhY3ktdHJ1bmsKKzM2NTUwIGU0Y2M3ODg4NGZjNDI2YzI2ZDIxOTJiMjE2NTU5ZjQ1YTI2OWUwNTkgbGVnYWN5LXRydW5rCiszNjU1MSA2OWRhZGMyY2ExNGRmY2JmNjJhZTFhMTZiZTI5MDNmYjAzODA1YzJjIGxlZ2FjeS10cnVuaworMzY1NTIgODE3ODRmNjY2Nzg5YjkwMjRmODc2ZTUxY2I5OWZkZDg2YzVjNTU3ZCBsZWdhY3ktdHJ1bmsKKzM2NTUzIGUxMzVlODJjZjZlNDg5MTZmNmI5ZDQ2NWNhOWNhNTdiZmZmYWZlMDggbGVnYWN5LXRydW5rCiszNjU1NCAwN2I0OGVhZjJiMDFlYmM0OGM0ZmE0MDdiNmI2MzcxZTg1MzNjNmM4IGxlZ2FjeS10cnVuaworMzY1NTUgYmViY2I3OWYzN2NiYzk0OTgzOTc2NDEzZDA0NDkyZmFjYTg3MzczMSBsZWdhY3ktdHJ1bmsKKzM2NTU2IGRjM2YwNGFmZWY3NTcwYjY4MzFlMGFjNDUyNDQ0NDNlNTJjOTYyNDggbGVnYWN5LXRydW5rCiszNjU1NyA5NzdmMjY3YjAwZjkzZWM2MjkxOWQ3NmE1MTNiM2YxMzNjNDE5MDU1IGxlZ2FjeS10cnVuaworMzY1NTggYjFkMTQyZDcxNDgyODk5ODcwNDYwNmRhZmZkZjE2NWM3ZDQ3ZTkwZCBsZWdhY3ktdHJ1bmsKKzM2NTU5IDJiYzY2ZjFkZjdjYzdjODIzZmRhM2VlNjRiMmNjZTIwZWE3N2U4OWEgbGVnYWN5LXRydW5rCiszNjU2MCBjM2EwOTZiZmJkNmJlOTM5NTk5MGU3OTA4YzVmODg3YzM1MzdhODY3IGxlZ2FjeS10cnVuaworMzY1NjEgMjgyOTI3ZjdiZGUyNDJkYTdjYzM5NTlhMzNmZThmYjU2NGE4MDMzZSBsZWdhY3ktdHJ1bmsKKzM2NTYyIDhiZGQ3OTRhNDE5N2U4OTcxMTM2MTExYmExZWMxYjkzZmNhNTE0ZjkgbGVnYWN5LXRydW5rCiszNjU2MyBjMWJkMWM4ZTY0YjQ1NzQ4NTljOTFlM2IzN2Y5NzM4YmQ3NjdmN2Q4IGxlZ2FjeS10cnVuaworMzY1NjQgYjZmMTI1MmI2ODFjNTFjYzA4M2M0ZmY3MzY5ZDA0NzVhNzU2MDgyMCBsZWdhY3ktdHJ1bmsKKzM2NTY1IGY5NzA5OWY5ZmYxYzMxZjg0OWZhN2E1ZGY1OTEyNzM2MDgyOTQyMmMgbGVnYWN5LXRydW5rCiszNjU2NiAzMzc3YTcyMzczZmJmODVkNTY1OGM5NjZmYzA2MjA3NTE2MGYxNDA2IGxlZ2FjeS10cnVuaworMzY1NjcgNGUwN2VhY2IxYmRmZDhkNzU0YTM4NTEwODk4YmNkN2ZjODAzM2RhMSBsZWdhY3ktdHJ1bmsKKzM2NTY4IGQxNDM2YzI4ZGNhMzJlZTJlNjc3NzM1MjE5ZWVhNDE0NjZmYWFiYWIgbGVnYWN5LXRydW5rCiszNjU2OSBkYjFhMjdiNmQ3NzUwZWMyNzZiOTczYmQxZDljZDliNjgwNjQzNWM3IGxlZ2FjeS10cnVuaworMzY1NzAgYzE4MjRkNjhkMTBlYWM0M2M5ODNjMTlmODE3ZmJjMTE5MTZmNTQzMCBsZWdhY3ktdHJ1bmsKKzM2NTcxIGU0NTc1NTE5ZWMyNjIzYTBmZDU1OTM5NzdiOWZlMWMxMmRjMzYxNmIgbGVnYWN5LXRydW5rCiszNjU3MiAwNWNhMjIzMmVmY2JkYmQzOTY4OTljNmY4OTczNTkxOGRlYjZhZDVhIHJlbGVhc2UyMy1tYWludAorMzY1NzMgYjc5NTFlMWY1ZGRmMjliMGI0NDAzMDQzYTQzNTk4ZmY2MTYxMDEzMiBsZWdhY3ktdHJ1bmsKKzM2NTc0IDVkOWY3MmQwODQzZWVhOWQ4ZWNlM2NiZGJjZTdiNmUxMDBlNDNmYzMgbGVnYWN5LXRydW5rCiszNjU3NSA5NWViNmUxOGE1NDI3M2QzNWNmODk2OWNiM2FmYWQ1NDY0M2ViMjM3IGxlZ2FjeS10cnVuaworMzY1NzYgZGJkM2EwNGViMGM2NDg5NTg3MzZmNDA4OTZhMzcyNjEwMjVhMzM4MCBsZWdhY3ktdHJ1bmsKKzM2NTc3IGI1NDU5YmY0ODI2MjRiYTFlZjJkNTRiOGJjZmMyZjIzZjIzNmNiNWMgbGVnYWN5LXRydW5rCiszNjU3OCA5MzhkYzMyZGRiYzQxZjE0NThkMmQ2Yjc0NWMzNjYwZjYxY2YxNjQ1IGxlZ2FjeS10cnVuaworMzY1NzkgMjU3NTYzZGNiNDQyMzQ0ZmFhZjk4N2NjODIzYzRhYjllNGU4MDcyMiBsZWdhY3ktdHJ1bmsKKzM2NTgwIGRiMjZiM2RiZTgwMjdjYzliMDUwZWMzNGM2Y2M4YTVlMTc4YjUzZTEgbGVnYWN5LXRydW5rCiszNjU4MSAyNmNiMDU4OTA3ZjIxYjc4MTY0YTliMjI5NDBiZWQyYjc2YTU4ZDk4IGxlZ2FjeS10cnVuaworMzY1ODIgODU5ZWE4NjEyZWIwZGM1MjhiNGExNGQxN2YwYjIzZjBiM2RjMjkzNyBsZWdhY3ktdHJ1bmsKKzM2NTgzIGQxNzc3ZjUxOTIzYmI2MTgxNTQwYWMxZjFlNmI3MjI5YzVkNzlmMzUgbGVnYWN5LXRydW5rCiszNjU4NCBkY2M1YzJkNThmMzI1ZmZiYzgxMWJmMjA3YTIxN2EzNWM1ZjdhYThmIHJlbGVhc2UyMy1tYWludAorMzY1ODUgNjFiZTkwNGExZDRlMzU1M2Q3YTJkNzFkMjkwNWIyOTNiYzVmNzNiMiBsZWdhY3ktdHJ1bmsKKzM2NTg2IDc2YWQ4MTRiYzY3Yzk0ZWVmZmI5NzgwNmU5NTNmOGFhMTYwZDAxYTggbGVnYWN5LXRydW5rCiszNjU4NyA4YWQ1YTE2MjAwOTJlNGQwZWU2MTU0M2VmMzA1OGY3ZTQ3YzExNWEyIGxlZ2FjeS10cnVuaworMzY1ODggZWNiMGM5N2YxZTQyNjBkYWE3MjdhNzExZjNmZjRjZDI4ZTkxNjJlMCBsZWdhY3ktdHJ1bmsKKzM2NTg5IDUwZWNlM2Q0ZmYzNzIyODc4YjIwNmU1MjNhMTJkYTUzNzg5YTIxNzUgbGVnYWN5LXRydW5rCiszNjU5MCBkMTU1MTdmMmFiZThiY2YyOGE1OTA3NGJhNTM5Y2NiZjA1NWMyN2NiIGxlZ2FjeS10cnVuaworMzY1OTEgYTkxZTdhNDVmMTQyNDFmNjk2ZWY5MTUwNGEwZmZhZTVlOGU5ZWJiZSBsZWdhY3ktdHJ1bmsKKzM2NTkyIGZmYThhYjAwODFmMjEzYzQ5NTc0NzhmMWIwMDQwYjgyMTEzOTYwMjQgbGVnYWN5LXRydW5rCiszNjU5MyA5ODNhOTFiNTBmNmU3ODc1MDI1MjA1YjYwYWQ1NDI5NDM5MjMwMTMyIGxlZ2FjeS10cnVuaworMzY1OTQgYTNiMWQ2Yzk5ZTQ2MjFiZTRmN2Q0OTQ3NDEzYjJkZmNjYjU1ZTY4MiBsZWdhY3ktdHJ1bmsKKzM2NTk1IDYyZjg0M2ZjYjgyMzc5N2JjYzlhNTlhYTFjZjYzZjRmOGVkNzk3M2UgbGVnYWN5LXRydW5rCiszNjU5NiAyZWM0NTEyMzBiOGViY2IzMjY1NjVhYTkyNGU4ZmUyZTdlYzcwZWE5IGxlZ2FjeS10cnVuaworMzY1OTcgYjMwMWU1ZGVlOTM4YzIzOGEwMTBkODI0MmIxYmVmNmNkZGI1Mjc5MyBsZWdhY3ktdHJ1bmsKKzM2NTk4IDhhOTFjZDdkN2U4MjU0ZGQ1YzFkMjc1NTJhNzA0NDUwMjk0MDI3MWMgbGVnYWN5LXRydW5rCiszNjU5OSA4MjYwNjliNzI1ZGIyNjllYTFjZGM0NGY0YTY5YWE3MzNiMjU0YWY1IGxlZ2FjeS10cnVuaworMzY2MDAgNjg3NWNmMDg4MmUwMTIzY2I2NDYyYWI3YmUwZGNkMzE0NzA0ZGRmMiByZWxlYXNlMjMtbWFpbnQKKzM2NjAxIDEzZDIwMzIyNzg3ZDVhMzJhYjAxNzcxOGMzZWYzZjFiYjM4YTRiNTkgbGVnYWN5LXRydW5rCiszNjYwMiA3YWY2OTViYzU0ODA5MjY1YWEyOGM4MTRjNTMzNTUwY2IyYjhjNTI5IGxlZ2FjeS10cnVuaworMzY2MDMgMzE5MzhhNDYzZjI4N2U4ZjY3NDY0NDZkZWJiM2YyZDdjYWI4NmE4NSByZWxlYXNlMjMtbWFpbnQKKzM2NjA0IDUxN2UwMGFmMTNhMWE3ODMxMTUyZDE5MTUyMDZkNWY2ODA0MjBjYzIgcmVsZWFzZTIzLW1haW50CiszNjYwNSBjYWFlZjMwMmYxZTMzYzU5NDMzZjk4Zjg0MmQ2MjgwZmFiOTBkMWQ2IGxlZ2FjeS10cnVuaworMzY2MDYgNzkxN2ZkMmM0Mjk4MzgxZjJlMjQxMTM1MTU5NTQ3ZjU5MmQwMmZjOCBsZWdhY3ktdHJ1bmsKKzM2NjA3IGQ2ZTczZTUyODgwZTQ3Nzk3ZWNjYTdmZWQzM2M4YmQyMjViNDMyYTMgbGVnYWN5LXRydW5rCiszNjYwOCBlNmI4NDdiMDc1NTNmM2NlZTY2OGFjYTMzNmNmNmE0M2VhMzY5NjAxIGxlZ2FjeS10cnVuaworMzY2MDkgMDM0YjNiOTJjNWUwMzEzOTA0YzA2YTFlM2ZiNzcyNTJiZGJmNWRkYSByZWxlYXNlMjMtbWFpbnQKKzM2NjEwIDRmNGI3OTU2Mjg3Y2FiNjg5M2E2N2M0OWM0MTUwNTIyMDc2OWFiNmMgbGVnYWN5LXRydW5rCiszNjYxMSA4MDdmYmU4ZDM1ODQwMTNlNjUwNzMwMmJlZDlkODc4N2MzNDg4YzcxIHJlbGVhc2UyMy1tYWludAorMzY2MTIgMDA4OTI0MjBlMGRmNWUwODY1Y2VkYTc2MGYzYTliMzdjZTNiMzdmZiBsZWdhY3ktdHJ1bmsKKzM2NjEzIDZkZjkzMjJkNmFiODIzNzg5ZjhiMzFlYzdlNjI1NGRjZDM0N2NlMzUgbGVnYWN5LXRydW5rCiszNjYxNCBhOTQwYjZjMDdlNTc3NWViYTNiZWQ3NDE5ZjlhMDZhMTA2ZDE1Y2I3IGxlZ2FjeS10cnVuaworMzY2MTUgNTVmNzNjODJlMzA0YmI4OWRjOGU2NDkxZmUwZjU4NDdkMGQ3Njc0NiByZWxlYXNlMjMtbWFpbnQKKzM2NjE2IDczMDQ1MTQzYmU2M2U4Y2ZmYmM2ZmUwZGQ3YzlkMTUxNTU5ZDlmMTcgbGVnYWN5LXRydW5rCiszNjYxNyAxZTIxODdmNTA2MzE3MTU3YzM2MDkzZjM3MWRlZGZmNTI4MmM4ZTk3IGxlZ2FjeS10cnVuaworMzY2MTggMGY5YzM5YjNlNWYwMmY0ODU1NGY5MjdhZDRjNWFmMTA5ZGRlNzA0NyBsZWdhY3ktdHJ1bmsKKzM2NjE5IDQ2ZTA0MzFjOTcwMWNhYzBiYTMwZmY4ZGExOWRhZDQxNjg1ODIxODUgbGVnYWN5LXRydW5rCiszNjYyMCBmYTQ5YzFlMmQyYzEwNzBjZTk2NGMzNGI5OGY1ZjQyOTUyODIwZDgwIGxlZ2FjeS10cnVuaworMzY2MjEgZWE1NGZkYjg2NTMwZWNlNTRkNGFkOTQzMTEzYTZiM2I0YTk1MDU0NCBsZWdhY3ktdHJ1bmsKKzM2NjIyIDkyNjdhZWI3Mjk4NWQwNTI0YmViYWVkOWRjZDEyNTI2MmZjMjUzZGEgbGVnYWN5LXRydW5rCiszNjYyMyBlYWE4YTM3ZTFlODUwY2U2NjZmYjRiNDc1NWJjMzJmNmJlMmFiNTkxIGxlZ2FjeS10cnVuaworMzY2MjQgZmU0MTQ1YmEzOWJmZmJhNjE3ODIzN2FmNWI1ODQ2ZjI2ODkwNjQ4OSByZWxlYXNlMjMtbWFpbnQKKzM2NjI1IDE2ZGU0ZjkwZWY0NDY4Y2I2ZjllNzM5ZjNiNzc2MWQ1MmE0Yzk2MzEgbGVnYWN5LXRydW5rCiszNjYyNiBkMzBkNTFiMmVmZTAxMmE4ZmQ1YzExODZkODcxOTJjYTljZmY0NTEyIGxlZ2FjeS10cnVuaworMzY2MjcgZGFjMjgxMzZkNTliMGFjNTdiOTYxYTQ3NWYxMzhiMzgyMDI3MzdhYSBsZWdhY3ktdHJ1bmsKKzM2NjI4IGNkYWQ2MjUzMzA5NGYwY2ExYjc0NTdiNDc3ODRkZTQ3YzU1YTgyNTYgbGVnYWN5LXRydW5rCiszNjYyOSBiOGJjNTk1NzhhNDc1NjMwODc5YzVkOTA4MTAyMTVkMTVjMGVkN2VjIGxlZ2FjeS10cnVuaworMzY2MzAgM2UwNDIzMzg1MmQ0ZmFkZmRjMDA4MjQwMWIyODk1ZjliMTZkZmIxZiBsZWdhY3ktdHJ1bmsKKzM2NjMxIDRhNTFjZGNmODYxNTMzNjY4YjBlZmNiYjg5ZjYyMzdmODkzODAwOTMgbGVnYWN5LXRydW5rCiszNjYzMiBlZGJhZjYxMDIyN2I5ZjMxNjI0NWU5ZmQyZGM0ZjVjNTliNWM0NjdiIGxlZ2FjeS10cnVuaworMzY2MzMgYjI4NzlhNzJiMzQ2NjFlOTBiMjI3M2Y5MDMxNjk2OTZiZWFhZjk1NiBsZWdhY3ktdHJ1bmsKKzM2NjM0IDYyM2FlMTI5MzBlYTE2YWQ2OTQ4YzFkMzg1N2NkZGIwNDJlYzAyYjcgbGVnYWN5LXRydW5rCiszNjYzNSA2ZTc5ZGVhODUxODlhZmE5NDRmNzIyNTU5ZWY3MTBiZGE1YTI4MzgxIGxlZ2FjeS10cnVuaworMzY2MzYgZDVjOTdkNjlkZmM3YzE3MWM1ZjAyOThjNzA4MWM5ODMyMjgyZjg4OCBsZWdhY3ktdHJ1bmsKKzM2NjM3IDk1ODJmYTJlNWUwZGEyYTA2ZmUxODBlODAzNWE0Zjg5YWMzNjZhMzEgbGVnYWN5LXRydW5rCiszNjYzOCBmNjE2ZDY1MzU5OTMzMDYzYzk0Y2Q4NDk3ZDM1ZWExZGY1MzA4NDdiIHJlbGVhc2UyMy1tYWludAorMzY2MzkgZWU3Yjg0MTAxMTYwNGY0OTlmMTQ4MDYzMmExNDgwNDllNWYzNDI5MyBsZWdhY3ktdHJ1bmsKKzM2NjQwIGQyYWRiYTQ3ODFkNWIwNzk4YWU2ODQxZWJkMjI0ZmQyMmRmN2M4ZWQgcmVsZWFzZTIzLW1haW50CiszNjY0MSBiZjY4NmVmOTJjYjBiZDI0MmU2MjdiOGMzNGNkNDdjYTdmOTM2ZTdjIGxlZ2FjeS10cnVuaworMzY2NDIgYmY2YTIwNjkwODBjNmIxZjZjYjdlMjYzY2I3OTYzMTExODgzZmRiMiBsZWdhY3ktdHJ1bmsKKzM2NjQzIGQxY2NkMmY0NWRhMzQxNzVjODlmZWZkMWI2Yjg0NmM4NjA3ODFhY2EgcmVsZWFzZTIzLW1haW50CiszNjY0NCA4MGFjYWI5YzNjMTc2MTc3ZThjZDU1ZTgxMzcxOTc5NDgwYzEwMGUyIHJlbGVhc2UyMy1tYWludAorMzY2NDUgYjM1OGQyZjQ0YTc0MDJkYzQ3MDliNDQ5ZTMyOWUyZTBiMGU2MGVkOCByZWxlYXNlMjMtbWFpbnQKKzM2NjQ2IDM4MzVkZmYyZWZkYjVhZDAyYjg5ZWE0ZGI4YzNiZGM0MDgzODJjZDkgbGVnYWN5LXRydW5rCiszNjY0NyBmYmIyZDM0Zjc1YTNiZjcwMTI1ZjIxZDc1M2UxNzliMDI2ZjAxYjA0IHJlbGVhc2UyMy1tYWludAorMzY2NDggNzE2MzNkMzdlOThlOTJjZjk2NTliYWE5MDE4YmZlYmE0Njg1YjhkMCByZWxlYXNlMjMtbWFpbnQKKzM2NjQ5IGM2YzU4YjYxZjZiNWE4ZjAzNGE2MDExZGM2ZTkwYTk2NTIyZDkyN2YgbGVnYWN5LXRydW5rCiszNjY1MCBkOTU2ODIwODk1MDUwYjQ5NTljYTI4ZGUyMjAwZjkwMjhmNWU1MjA0IGxlZ2FjeS10cnVuaworMzY2NTEgMzdhNzViMmI0YzI5NDA3MTc1OTY2ODliMTA5ZGU0MzM0YjIyNTU3NSBsZWdhY3ktdHJ1bmsKKzM2NjUyIDA3YTU3ZDg5YjFlMGRmZThjOWU3M2JmYzExYzc1YWYxOWY2NjlkMTYgbGVnYWN5LXRydW5rCiszNjY1MyBjYmQ0YWU3NDg5MGQzYzEwNGVkNmIyMzVjZmMxNzFhMDY2ODYwZWVkIGxlZ2FjeS10cnVuaworMzY2NTQgMDYwZGU1MDRlYmJlYWZjMDc2ODNiYmE4MDRhMTY5MWM5ZjhjMGQ3MSBsZWdhY3ktdHJ1bmsKKzM2NjU1IDQzNTNmZmM0MzdmMTlmZDg4MTQ1ZGRlZDgzNTgwOGNmNzkyMGMzNDEgbGVnYWN5LXRydW5rCiszNjY1NiBmYTRjNzA2M2E3MzZhNWM5ZTM0MjhlOTg4NzUwZjY4MWE0OWZmNTY4IGxlZ2FjeS10cnVuaworMzY2NTcgZGFjOWQwNjY0ZmMzOTMzNDUwODU3NTAyOThjOTQ4OWFhZWQ5YzY0ZCBsZWdhY3ktdHJ1bmsKKzM2NjU4IDcxODMwNTExMmY5ZmQ2MTFjMDkwNDA5MTY1ZGJkYTE2MWMzYjY4ZDggbGVnYWN5LXRydW5rCiszNjY1OSBiNThjZjZiNWZjOTE0MzgwZDUwZDJlYmM2MWUzNGE2M2NiMDJmZGM5IGxlZ2FjeS10cnVuaworMzY2NjAgMWRkM2NjOTI3ZDM3N2Y1ZTkzOWYzZDU1ZThmNzQyMTRhM2MzZmMzMSBsZWdhY3ktdHJ1bmsKKzM2NjYxIDcwZThmNjM0YTU4OTAyOWJmOGRlNjUxYjg5YTBhZmYyN2RkZDcyZmEgbGVnYWN5LXRydW5rCiszNjY2MiAyNGRkMWQwN2FmZGJjMDY4OWYyNDRiMjljMTU4YmE5OWZjZmZiNTJmIGxlZ2FjeS10cnVuaworMzY2NjMgN2I0NGMyNzgyNzkzZTljNjM0OTYzZTQ0YmYyMTA3ZWE3YzM1ZDE2OCBsZWdhY3ktdHJ1bmsKKzM2NjY0IDIxMzE4ZDc2OTVmOWNkM2Y1NjJjNzdmOTgzNGVjNjA2ZTE4M2RjOGYgbGVnYWN5LXRydW5rCiszNjY2NSAwODU2ZDk4ZTJhNjgzZGE2YjNmNzVmMzM2ODg3MWJmMjE4NDI4Y2FiIGxlZ2FjeS10cnVuaworMzY2NjYgZDViNzZhMTY3MzIzYWExNTMwYjlmOTY0YzdkMjg5Mjk5OTVmNjNkZiBsZWdhY3ktdHJ1bmsKKzM2NjY3IGRhYjNmMDg2NjhkZjIzYWUzNTZlZWMwOTMwMTg5NDIxZDIxZGQyMjUgbGVnYWN5LXRydW5rCiszNjY2OCBhNGYxOGM4OTg2NWZiOGQwZDJhYjJiODJlZTlmMTg3YTY2ZmExODEyIGxlZ2FjeS10cnVuaworMzY2NjkgZGIyMTA4MWY1YmMxYjE2MTg4MTIxYmRhOWEwZTBmMzg0ODc0ZDljNiBsZWdhY3ktdHJ1bmsKKzM2NjcwIDg2NTUxMzExMmY3YTBlNzkxOGZjMzMwMTVkMTNmMTc1OTI1OWUyMmUgcmVsZWFzZTIzLW1haW50CiszNjY3MSA1ZTQ4MGE1YzY0N2RhNzM0NDliZjNlOTgyZmEyZjVlMjBmMmFiYTc2IGxlZ2FjeS10cnVuaworMzY2NzIgZTNhMzVmYmNlOGVjMjIxNzZkMzg5MzI4NTYzZTMwNDJkMTFlZmRkYSBsZWdhY3ktdHJ1bmsKKzM2NjczIGU3Y2M3NDE1MmM1NTI5N2MzY2E5ZjhkNmRjZmYxOThlMjA0ZTg0OWYgcmVsZWFzZTIzLW1haW50CiszNjY3NCAwOWU2MzNjNTI3MzA3OWFkOWM0NWFjNTVjMWQyOGNlOGQ1NmExNGUyIGxlZ2FjeS10cnVuaworMzY2NzUgMDUyYTQzYWEzNWVjZjcyZWQyMjg4NTFjYWQyMGJjNWQ3YWYxMzE0MyBsZWdhY3ktdHJ1bmsKKzM2Njc2IDBmOTRmNDg4NmJmNTVhOGE1NTBmMWIwNjk1OGYwMWEwNWI1OGI2NjIgbGVnYWN5LXRydW5rCiszNjY3NyAxNjgyMjAxZjA1YjJhODQ1MGU2NWJiNjkzYjMzZTYzNWRkYzBmZjVkIGxlZ2FjeS10cnVuaworMzY2NzggZGNiMjQxYzg5ZjQyOTcyYzcxMjBhZGIwNTU3NzJhMTU4NjZiMzFmNCBsZWdhY3ktdHJ1bmsKKzM2Njc5IDk2ZDk5MTQ3N2E4MjljYTc3ZDEyZDljODM1Y2UwMjkwMmZhZDdkNWYgbGVnYWN5LXRydW5rCiszNjY4MCAwNmE2M2MzNWRmOWUzYzY1Y2RiMmFlODg2NjA1YWIzNThmMGRmNDVkIGxlZ2FjeS10cnVuaworMzY2ODEgNzI0ZmIyNmVhMDVmMjRjOWEyM2M4N2FjZDNhYzRlYTg2MjYyN2I1OCBsZWdhY3ktdHJ1bmsKKzM2NjgyIGZhMDUyNmMzMGRhODA1ZjgxMGY3ZTg3MDgzNTVlN2VkYmE4YjJkNDcgbGVnYWN5LXRydW5rCiszNjY4MyA0NWYzMjIyYjg0ZWUwZWUzMWYyN2IyYmNkMjYxNjg1YTMxYmM5NTg4IGxlZ2FjeS10cnVuaworMzY2ODQgNDhlYWUyMGQ3MGM1OGI4NmM0ZTNmMDczYzBlZWY5ZDAxZGNiMTgxMSBsZWdhY3ktdHJ1bmsKKzM2Njg1IGZjMzY4N2E2MjdiNDM0M2MwOWU5NTBkNjE5NTM5MmFiYTUzNTdkZGYgbGVnYWN5LXRydW5rCiszNjY4NiA5YTAwYjY1YWVjZGNjODQzN2UyMzA3MDViYmVlNDUwMTkwODAwYmJmIGxlZ2FjeS10cnVuaworMzY2ODcgNmVhMzJiMGU5NTA3ZmEyNmYxZmQ1YzJiOGIyMTU4MDQzYTkzYTliZSBsZWdhY3ktdHJ1bmsKKzM2Njg4IDYwYTcwOGJmMzUxYWUxMWU5NzkyY2IxMTI5NTYwM2Q0NDU5Mzc2N2UgcmVsZWFzZTIzLW1haW50CiszNjY4OSBjNTcwMTBkYjEyM2VlYWMxODdjYjRiZTdjMGUzMGFhNDk5ZTM3MzVhIGxlZ2FjeS10cnVuaworMzY2OTAgYTUzYjVjZWZhNjBkN2QwNTI0Zjg0MDNhMmYxZTYyOWEzYjBiMzNkZCBsZWdhY3ktdHJ1bmsKKzM2NjkxIDhkMjU4MzVmODhhZTQ0NTBlOWQzMjliZDhkMThiMWYwOWYzNjVhYjIgbGVnYWN5LXRydW5rCiszNjY5MiBiZDQ2ZTZmODA2MjNiZjlkMjI5Njg0NTVkYzJkMDk1NDQzOTM1ZTBiIGxlZ2FjeS10cnVuaworMzY2OTMgY2E2ZWZjNTRiMTlmZjcxOWNmMzY4MjAxNGM4ZjdiZGVhMTkyZTM5NiBsZWdhY3ktdHJ1bmsKKzM2Njk0IDE5NTY1NTI5OWVkMzY0ODc0YWQ2MTU2M2QyZjQxY2FkODgzMGMxNmEgbGVnYWN5LXRydW5rCiszNjY5NSA2YmU4OTQwMTRhOGMzYmZkNmY2MTdkOTE2ZTM1NGM2OGRiNGU3NzNmIGxlZ2FjeS10cnVuaworMzY2OTYgZDAxMzM5M2M3ZDk4MmY0YTZjMjRiNjMxMzE0YmMwNDc3OTkwOWNmNSBsZWdhY3ktdHJ1bmsKKzM2Njk3IGVmMDhmNDhiNjNhMWNlNTRlMWIzZjQ3M2QxZTJlNjY2MjA4ZWRiMzYgbGVnYWN5LXRydW5rCiszNjY5OCA2MmM1M2I4ZTRhZWIzMWI2ZjA0MTcxOTY1ZjMxMmUxZWY2ZGVmZGRmIGxlZ2FjeS10cnVuaworMzY2OTkgYjM5MGNkOTFjNzZiMTFmNTg2MmY1NGUzZWMwYTExZGJjNDRmODU4YiBsZWdhY3ktdHJ1bmsKKzM2NzAwIDAxOGM0MzA0NWI1M2U2MzhlYzg5Yzc5OTk1NTVjMDIyMDJiZjc0ODkgbGVnYWN5LXRydW5rCiszNjcwMSAyOTI5ZmM1NGI0OWE1ZDQ3Yjg1YmI0ZmFiNWQ4NDhjZDcyNzJhMmFkIGxlZ2FjeS10cnVuaworMzY3MDIgY2ExYWViOGFiMzgwMmNiMjdjYThjYTJkOThkMmQ0N2YzMzJhNDI5NCBsZWdhY3ktdHJ1bmsKKzM2NzAzIGQzZDYwOWQ2NTdmZDI2OWZkYzc3OTUyZjE2N2E4MmRjZDQwZmFhNWYgbGVnYWN5LXRydW5rCiszNjcwNCA1MTBlOWUyYjA4MTc0NjExMGU5NjJkMGE5NGM2NDdjNDc4NzM2YzQwIGxlZ2FjeS10cnVuaworMzY3MDUgMjZiMzA2ODk0YjllYjQ2MTBjOWY0ODk0MWE4Mzk5Yjc4MGZhNDY1NSBsZWdhY3ktdHJ1bmsKKzM2NzA2IDMzMWU2MGQ4Y2U2ZGExOWIxNjg4NDk0MTg3NzZmZWEwOTQwNzg3ZWMgbGVnYWN5LXRydW5rCiszNjcwNyBlMjhiODczM2E2NmQ3ZGVhZWE1OGM1MGE3NjcwMzE4NDVjYmFlYTg2IGxlZ2FjeS10cnVuaworMzY3MDggODhhMWQ4NmQ0NDJlODExNGI5Nzc0NzEzZWJmNGRiOGRiY2E5MDNhOCBsZWdhY3ktdHJ1bmsKKzM2NzA5IDJhYTdhZWY0ZTQwMzNjMzQwYzlmOTg3ZTAxMjJlYjNjNTM2OTgzODEgbGVnYWN5LXRydW5rCiszNjcxMCBiMzIzYmRiYWM3ZTQ3NzJiOGFjNzZmNjI3MzVmYTU3YjViZDg0ZTMyIGxlZ2FjeS10cnVuaworMzY3MTEgMWJlNDAzM2Y4NDk4MDg5MWQ0ZWIxZTdmYzFjNjQyMzE3MmE4MjY4MSBsZWdhY3ktdHJ1bmsKKzM2NzEyIGM3ZTAzY2Y4MzMzZTVhM2E4Y2NmZTlhMGVlODU5NDY3NjMzMDdlMDEgbGVnYWN5LXRydW5rCiszNjcxMyAyMDk1Y2I1OTgxODgzNGViOWViNDYwMzM3M2JiY2MwYzcxMGFmY2FiIGxlZ2FjeS10cnVuaworMzY3MTQgYjhjMmFhMmJlMTlhMzE0NDFiMjU1NTJmOGVkMmU1MTlmMDkxNjlhNCBsZWdhY3ktdHJ1bmsKKzM2NzE1IGE5YjI1YzIzMDczMjcyOWYyY2ZiYjkzMmJkOTkxNWMzZmE1NGQ4ODQgbGVnYWN5LXRydW5rCiszNjcxNiA2ODVhOTQ4YjNiYzljYjVkNTk0ZDZjZWIyODgyODhjM2VkNTRkOGE0IGxlZ2FjeS10cnVuaworMzY3MTcgNTFkN2ExMjI0NGFmMzEzODFmZWQ3NWQ5NDE0MjgxZjA5MDU5Y2NlMyBsZWdhY3ktdHJ1bmsKKzM2NzE4IGQwNDlhMWZlMjY3NjNmYWQ3MDZhNDQzMTIzZWY3MTQxNjFmZmJlMDAgbGVnYWN5LXRydW5rCiszNjcxOSA2M2FkNmY2OTI1YzU2OGQ0ZmFhZjkzYTllOWQ5YjZiY2YyOTQyNWQzIGxlZ2FjeS10cnVuaworMzY3MjAgYTc1ODE1ZTMxNTQ1MTI2NGFiY2RkOWIyYzM1YzFlNWZhYjg0MWNkZiBsZWdhY3ktdHJ1bmsKKzM2NzIxIDBkYzhmZmFhYzAzNjQ1M2U2OWZlM2IwNWNlZDhhODc1YTFhNzNkZjcgbGVnYWN5LXRydW5rCiszNjcyMiBkYWVjMmQzMTFkZWYzYTAzMzMwMDc4ZGEyYmU5ZTE4YWFiMDBlODE4IGxlZ2FjeS10cnVuaworMzY3MjMgODRlZmEwMDU0MTlhYWUyN2NlODEyNmNiMDU5NDBkZWQzNzRiMjIwMCBsZWdhY3ktdHJ1bmsKKzM2NzI0IGI4ZTEwYWNiNGVmYjYyMjI2MGVkZTc4OWQ4OGQ1MWVjMDkyMzIyNTYgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjcyNSBhYzczZjY2NjJlMTE3YzJhNDRmZGZmN2Y3Njg5ZjJlNmVmNzk3YmY0IGxlZ2FjeS10cnVuaworMzY3MjYgMzBkODZlMzU2YmYyNGY3MTRiMTBmZGNlM2U2OTUzOTE3YjMxODQyOSBsZWdhY3ktdHJ1bmsKKzM2NzI3IDc5YzRlODJlZTk5N2M4ZjQxMDBkOTNmYjg1ZTQwOTdiMDQ1YTA4MmEgcmVsZWFzZTIzLW1haW50CiszNjcyOCAzM2I4Y2U2NjIwMmVjOTE5N2JjYmZmMGFjZjJkYWUxNzc2NDQ3MTBkIGxlZ2FjeS10cnVuaworMzY3MjkgOTE0NmUyZWEzYmQ1MGNkNTYxZDIyY2UzNTFmOGJjNDhmMGM2NmZhMyBsZWdhY3ktdHJ1bmsKKzM2NzMwIGY0MTJmYTJiM2ZkZWY3YzkzZGRkM2FmNTc4MzJlYTQ1M2ZkZDlmNjUgbGVnYWN5LXRydW5rCiszNjczMSBkNGRkN2I4MmNjNzViYjZiNWI5YTU1OGQzY2E4MzQ2NGM2OTg4ZTBlIGxlZ2FjeS10cnVuaworMzY3MzIgNjVmMTFhOGQ3YzhiMzllNzQxMmUyMmU4MDIwOGRjMGIxMDA4YWNjZiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzMzIGUyMjU3NGJlODc2NDlhNDdmNWFlYTY0YWRiZGE2ZTYxN2NmZTUwODcgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjczNCA0Y2NlMDAwNDdmOTc0OTgwNmYzMzVlZGQyMDUzZWZlNGRjY2YyNGZiIGxlZ2FjeS10cnVuaworMzY3MzUgZDY3NGQ3OGQ4ZGE2NjQyZmUxODNkY2I3Nzg3MjIyZjZjZWQ1NGEyMiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzM2IDZkMTZiMDdhZGRjM2E2ZDNmNDIwMWY4ZTIxNDVlOWM2OWY1ZTA2NTUgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjczNyA1NDY3MTczNmEyOWU0ZTc0ZDBjZDQwOGFkNDY5MWRhYWY5NzBjOGJjIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3MzggZjUzYjkwMWM4YWZlOGJmMjE1ZGU0Nzc3NjFmMmJlOTY0ZWNjMmNhNiBsZWdhY3ktdHJ1bmsKKzM2NzM5IDY1MzE5NjA3YmVkOGExODZhYWQyNjk3YTE2ZjJhYWIxYTQ0ZGRmNDUgbGVnYWN5LXRydW5rCiszNjc0MCA2NmM1NTZmMDkxNjM3ZDE5ZWFjYzFmNzIyZTU5MzVhM2JmYTk2NzRlIGxlZ2FjeS10cnVuaworMzY3NDEgMTUzMzcxOWM2MTM4MzllNDJhN2U5NWQ0ODk1Mzc2OTQ5ZGQyNGE5MCBsZWdhY3ktdHJ1bmsKKzM2NzQyIDMyOWQ0OTA2YzMzZmM3ZDM4ODIzOTJmNzE5MGM1NjY2NzUyNmFlOGMgbGVnYWN5LXRydW5rCiszNjc0MyA4OTE1OWExMjY4Y2NkZTVjMWViNmE0ZTI5OWVmZjZiNmJjZGZjNDJmIGxlZ2FjeS10cnVuaworMzY3NDQgY2FjNWM4ZjNlOTkwZjJlNzk2ZmZjNjdlYmVkYTg5ZDUyMGZmZTFiOCByZWxlYXNlMjMtbWFpbnQKKzM2NzQ1IGE5ODU2ZTczZTMyZDQyZDE3ZDQ1ZjY5OTlmZWNmNjBjODlhOWE4NzQgbGVnYWN5LXRydW5rCiszNjc0NiBmZjc3NzI3NTU1YWU1MTA0MjllMDViNmNhNGI5YWQwODljMjRiNjdjIGxlZ2FjeS10cnVuaworMzY3NDcgNDFmYWNjM2NjZGQzMzljOTRjZTJiZTZiOGYxODc1NGJiYTNiNzdlYSBsZWdhY3ktdHJ1bmsKKzM2NzQ4IDdlNzQ1N2E2OWI0ZDgxZGRlZWI4ZDA0MDMyODk4MzRlYWZiNWNiNDUgbGVnYWN5LXRydW5rCiszNjc0OSAyNWI2NjlmNGI1NmNmNjJjM2IwYzNmNjQwYmM2NzNmZGZlMGI0NmQ2IGxlZ2FjeS10cnVuaworMzY3NTAgYmRhOTgzMDRkZWI1ZDk0Zjg1MjUwOWI5ZGQ2OTQ1YzZjOGViYmRiZSBsZWdhY3ktdHJ1bmsKKzM2NzUxIDM4MjRmYTI5YmU0OWNjMWMxYjc4ZGMzMzY1MzczMjkyMWM1NjQ5MDcgbGVnYWN5LXRydW5rCiszNjc1MiA2OTM3MDI1MzExNWJhNzdiZDdlNjQ5MDQ2N2I4YTJlYzQ5ZGY4MmE2IGxlZ2FjeS10cnVuaworMzY3NTMgZjFiYmYxNDc4MTBiMjk0NjM1YTZmMGEzY2U5Y2IwM2ZhNDI0NTMyZCBsZWdhY3ktdHJ1bmsKKzM2NzU0IDkzNjcxMmIzMWJlZGM4YTMyNTUyNTM3OWI0ZDhlYjNhOTM4ZTQ3MWMgbGVnYWN5LXRydW5rCiszNjc1NSA2NjNhZDM0OTUzNGIwMDg0ZDdiZGRjMDhlOWFiYmVmMzM5OTM4NjEyIGxlZ2FjeS10cnVuaworMzY3NTYgNWY1OGZjZDdhY2NmNjIyMTRmMzE0ZGJjZDg1ZTkyMTkxNDEyYmI5NiBsZWdhY3ktdHJ1bmsKKzM2NzU3IGMzMWQ4ZjM4ZmQ3ZjZmMWZkNGFkNGJmMDBkNDRjNjdiODQxMjI4ZTYgcmVsZWFzZTIzLW1haW50CiszNjc1OCBjZTQ4OGFhMDRmMjRlYTM2OGRkZjljMTFhNDAwNmY5ZTMzOGY0MDhmIGxlZ2FjeS10cnVuaworMzY3NTkgOGFjNGZhYTI4MmUwYjljZjI5MTQ0ZjY3N2IyNWFjN2FkMTc1NDIxOCBsZWdhY3ktdHJ1bmsKKzM2NzYwIDVjMjE0OWYzNmMzZWFiNmNhMDU1MWMzZTUxMDkxMGMwMGI2ZDEyYWYgbGVnYWN5LXRydW5rCiszNjc2MSBlYzcxYWUzYmMyZGRhZjVlZTg4M2NjMTk3ZTAyODAzMTJkMDEwY2U1IHJlbGVhc2UyMy1tYWludAorMzY3NjIgYmQzZGQ2YjNmZjk3MjY4ODI4NmZmNTE1ZGQwMzdiMGI4NmQ1OGMxNSBsZWdhY3ktdHJ1bmsKKzM2NzYzIDQ1YTE3MGM0Y2E1NmNlZDI2ZmZjZmE0Nzk3ZDVjNGE1MWQyZDQ0YzUgbGVnYWN5LXRydW5rCiszNjc2NCA5MWZhODBhNjc4MTFiY2RlNTBlYjkwMDZjMWQwNTk5OGIwNGI5MDNlIGxlZ2FjeS10cnVuaworMzY3NjUgMmMyZjVjZmVmYTYwNTY4M2VmN2QxNDZhYWJhODIyZDQ4MmFiYTZlMiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzY2IGRmZGUwODUyMjhlZWE1MGI0NmZhZDY1N2Q1ZWI2OGNkZTdmZTQ4MTkgbGVnYWN5LXRydW5rCiszNjc2NyBmMDcxYTU1M2FhZTU4YTQ1M2Y2NjM5NDY5NmQ2MzdmNTBmOGM5M2JjIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3NjggNDczY2IwZWY4MmQyNDM0NmZjNTExYzg0OTAxZTIyNmFhZGNkMWZkMCBsZWdhY3ktdHJ1bmsKKzM2NzY5IDI2NjNiNGY1MzViN2NjNThhNWEzY2RiNDE4YWE3MWM1NWJlNTA2MWIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc3MCA2NTExODhhNjYzOGRjM2ZjNDdlMWIxMjZmNzBkYjQ5ZTEwNmJlNWRlIGxlZ2FjeS10cnVuaworMzY3NzEgOGNlMzQ0ZjZjOTU0ZWVjOGNmMTEwOGU5ZDVjZGNhMjE1OTY5MTFiMyBsZWdhY3ktdHJ1bmsKKzM2NzcyIDVhYTg1MDk3Y2IyY2RjYzk2YTg0ZjRkNGFlNDFkNDg3ZTEwNjFkNDUgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc3MyA1ODJlYjUxYjg0OTIxNDUwNmIwMWZjZDMwYzgxOTU0YWRjZDYyYzE3IGxlZ2FjeS10cnVuaworMzY3NzQgMjJkZWQzMDk2NDhiY2JhMzM5MzI1NDdjOTkyMGIyNzdlOWZjZDNiZCBsZWdhY3ktdHJ1bmsKKzM2Nzc1IDY2ZGMyMTFiZjUwNzIxYWQwMWY3MTNlZmVkYzA1ODliOGFlOGE3NjIgbGVnYWN5LXRydW5rCiszNjc3NiA4NGI0NzU3OTk5MTgyZTBmY2M5YTUxMWUyNDZiZmZjMzM3YTJiY2Q3IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3NzcgNjNkZjRjYjQ5MmExNmM2YWZhOWZkNTczZDkzM2ZiYjBkMjA4MTk2YiBsZWdhY3ktdHJ1bmsKKzM2Nzc4IDlmYjUxMzhmNThkZDgxYjkxOGQyNmUzMzRjZjNmMmFhNDUzM2FmNzIgbGVnYWN5LXRydW5rCiszNjc3OSBmNjNkNDVmZDNmY2U3NDQ4OTQ5MmZmMjE4MGY2ODUyMGMwNmZmNTVmIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODAgZTAyNzkyMTEyMjg4OWFlOGRiZmI4ZjhjODY2YTMwZGQ2ZWVmYTk4YiByZWxlYXNlMjMtbWFpbnQKKzM2NzgxIDlmOGE3YmEyMTA1NWViZTBkYTBkNjAzMzY5OGIzNTA3NTBmNTAzZTQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4MiA4YjM5MGRmN2FmODczNzMyZDljZDY1ZjhmYmEwNmY1YmQwOTkzZGNlIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODMgZTRmZWVkYjIwNWYyZDZiOGZkMDA2NGY2MzA4MTA3ZTI5YmZmZjI1NiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzg0IDMxNDQyMmEyOGUzZmI4NThiNWY1ZTk2MzhjY2UzMDFkNTE3MmJlNzkgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4NSBkNzQxY2IzNzdmODI5NWZmMTA2MzBlZGY4MTI0ZDA5ZjA0NWQ4YTgwIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODYgZmNkNjkwYzhiMmNhNmQ4NDU1ZTMyOTEzNzhjNmM3N2M1NGNlNmJmZiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzg3IGNhZmQ3ZTRlNzdhZDA3ODJiM2UwMGE4NjQ2ODA4ZWY1YjAzMTlkOTcgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4OCBmYmI1NDI4ZWJmNDEwOWU2YWE3OGMyNTA1N2ViMmRjMWYwYTRhYWY0IGxlZ2FjeS10cnVuaworMzY3ODkgZGIzOGMxZTgzOTY1MmQxZWY1OWE1NjFkZjA5NDVlZTEwMzc3ZTg0NCBsZWdhY3ktdHJ1bmsKKzM2NzkwIGI2MzljYjQ1YjE3MzEzZGVmMjBjNzE3MTg1Yzg5Mjg5OTlhYTYxNTMgbGVnYWN5LXRydW5rCiszNjc5MSA5NTNjZTVhZjEwYTMxYjI5MzVkMzM5YTk5NDQ0N2Y4MjAwMzFlOTA0IGxlZ2FjeS10cnVuaworMzY3OTIgOWViZDQwNTY4M2NkODU3MjQxNWY5MmI5OWFiNzVlZWNmMTFjYzIzOSBsZWdhY3ktdHJ1bmsKKzM2NzkzIGFkZmU3ZDM5YTA0OWQ2YTNjOTNiNDJmZjlmYjkyNjk1NzgyZGFlZTcgbGVnYWN5LXRydW5rCiszNjc5NCAwMjRmZjBhYjQ1ODgwMzM1NWEzZDM2NzZjMDc1NDE5YWYzZWExMDQzIGxlZ2FjeS10cnVuaworMzY3OTUgYjU2NDgxYTkwNTE5ZTVhMjBhMThkNTMzYWEzZmEyNTMxNGVkNjI0YiBsZWdhY3ktdHJ1bmsKKzM2Nzk2IDk3MWU1MTQxMzQ0N2MyZThiZDNjNmFjNWIxNjcwZTJmNjRhZGRkZTEgbGVnYWN5LXRydW5rCiszNjc5NyAyYmNiZjNmYjcwMjFlZmI2NDMwNWRhNzRjYWFiY2ZmNzBiNjk0NjM2IGxlZ2FjeS10cnVuaworMzY3OTggZTJmZWEyMmUwYzUxM2Q2MWJjOThhNTY5MTMxOWM0MDIzZGEzZDNhMyBsZWdhY3ktdHJ1bmsKKzM2Nzk5IDA3MWQzMzgxNzUzYjYwZDIyNzY2ZDE3ZmI4NzI4YTU0OTk2MDJmZDYgbGVnYWN5LXRydW5rCiszNjgwMCBhOWQ1OTE5N2IxNjMxZGQ0YTNiZWEwZWUwNjhhYWUwYWI5NzhjYmM4IGxlZ2FjeS10cnVuaworMzY4MDEgMTU2YWM2ZGU5NjI1YzQ3ZGYxNWJiMTEyNGQyMGQ0NGU1ZWUzNjY2NyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODAyIDBiZjBmNGJlYTE0NDE2ODliODFhMzQxM2M0YzY4YTA5MDEyM2UwZTIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgwNCBlOWM2NDE0ZGJkYjYxNTM3MzUzOTk4ZTg2NzY3MDU3ZmUxNTRkN2ZkIGxlZ2FjeS10cnVuaworMzY4MDUgMmJjMzMyNjE2Y2Q2ZjlmZTFhYzc0MmYyNTIxYTk4MTA1YTY4N2RjNyBsZWdhY3ktdHJ1bmsKKzM2ODA2IDdhYWE4NTJmYTg1NmZhMzM4NDUyNmM1MzQzZDVlMGZmZDY2YjkwOTAgbGVnYWN5LXRydW5rCiszNjgwNyA1ZThlMzA5YzBiYjA2OTczZDk3YmJhNjE4ZTYwNzA4MWNjNjU0YjBlIGxlZ2FjeS10cnVuaworMzY4MDggMzQxYjdhZGJhOTQ0N2ExOGJjZTM4NTFkZjQzZTJmZDA2ZjBjYTVkYSBsZWdhY3ktdHJ1bmsKKzM2ODA5IDlmNjYyNTlhZWNlMzE2NWNjMmM3MGUwYTMzNTQ0MjNiYzQwZGJlMGUgbGVnYWN5LXRydW5rCiszNjgxMCA5YWM2NDM1NDQ2MjliMDQ5NzdiN2E5YzA4YTg3YmFlOTM3ZWJlN2RmIGxlZ2FjeS10cnVuaworMzY4MTEgZWEzMzhiYWFiODU5OWQ3MTU3ZjAyZjQwZGJmYjBjZDhhZmZiYzU0MSBsZWdhY3ktdHJ1bmsKKzM2ODEyIDk4MjFlMzg4YjU5ZDkzZjM5NmI3Mzc3ZmQ3ZWVmNThlOWY5NDQ4ZWUgbGVnYWN5LXRydW5rCiszNjgxMyBmZmFhMTc1ZDBhYTMzN2Y4ODQyODQ3NDcxYWNiZGE1OWVjZWIyNGE4IGxlZ2FjeS10cnVuaworMzY4MTMgMDU1ZmM2OTU1ZjNjNjUyMmJmZWI3ZWQ0YzY3MWM5N2Q1YmFhYWFjMiBsZWdhY3ktdHJ1bmsKKzM2ODE1IGU2ZDAwOTI3NmM1NDc5NjFhNDMwYjk4YmJhMTM0YmJkNDg4YTE5NjggbGVnYWN5LXRydW5rCiszNjgxNiAzZTkwOWM1NGUzMGM5MWRkMjc3YmU3NWRlMTllOTdjNGYzZTc5Njc2IGxlZ2FjeS10cnVuaworMzY4MTcgY2ViMWMzZjFhYzhhYmI0NjFjNTBlZGQ5OTgxNzE1NGNmZWU1ZjAwOCBsZWdhY3ktdHJ1bmsKKzM2ODE4IDVmNGJmYmUyNmE0ZGM0NjRlZmQ2ZjEzMDFmYmFmYTBmZDY1NDZkMzEgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgxOSA4NDQxMGEwZDZlYTk0MTM0MDFlYTU5NmI0YzNlZmZmZWVlZTVjMTNiIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjAgZWE4NzU1M2UyNTYwOWY4YWZiMDY4MzFhZjYwMzQ2MDA2NGFmZjEyMyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODIxIGJkNDEzNjY3YWMxNmI2N2RkMmQzMzk1NTQ3N2U5OGZmY2MzMjYwOTQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyMiAyZTY3YzI3MDg2NzA4YjExYmE4OGY2MjEzNzVkY2M4NDA0NzQ4YzgyIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjMgYjY4OTBlYTVmZGUwZjZlMDUyOWNmYTcyZDc2MjhiMGE5YjU4Y2M1MSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODI0IDc5NjAwNjU4YmU2ODkyYTkwNTczY2ViNzE3Yjk2ZDdmMWZhOTZjYTYgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyNSBiZTU4NGNkYTU0N2Q2NDJjODliZDljZjVhNTc1MWM0ZThjMjM2YzJmIGxlZ2FjeS10cnVuaworMzY4MjYgZjdkNTBlOTFiZWYzOWVkZDRhMmU2ZTJjNWU0Nzk2NThhOTMzZTlmMSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODI3IDE5NzUxN2Q4MDk5ZTQ3ZTAwMDU0M2I1NDlhZWRkZGViNTcwNTVjZmMgbGVnYWN5LXRydW5rCiszNjgyOCA0YzllZmIzYTZiYjNmNjBjNDIwYTg1NTM3YzkzYTk2NTNjOTJkOGQ0IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjkgYzI2YTRmZDY5NzQ0YWRjNGNjZWZlYzcxZGQxOTdhZWUzMGI1ZDgxMCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODMwIGZiNmZmZDI5MGNmYjM5ZDIxYWZmMWQ3MjA4MmRmNmNjM2ZmY2UxZTkgbGVnYWN5LXRydW5rCiszNjgzMSBhYWNkZDBlY2ExZWI1NjJlMzY1ZGE1MjVmYWJmMDRjZTJhZjhiMTAyIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MzIgOWIxODgxNTgxODFmN2YxMzY3NTQ1ZGQyODU2YWY5NWM1MmExMzNiNyBsZWdhY3ktdHJ1bmsKKzM2ODMzIDRmMDE4OTRhYjQ1OGRjNzdhYmUxNjkzNTQ5NzhmNDFiYjI0MjBlNjIgbGVnYWN5LXRydW5rCiszNjgzNCA0MGMzYTUxY2I3MWNkMzU0NzYxMjE4ZmE1MWQxYzIwZWJjZDFhY2QyIGxlZ2FjeS10cnVuaworMzY4MzUgMzYwMDQwZDNkNGZhZDgyMTdjMTE2NzhmN2ZmODU2ZWExZDljZWE2ZCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODM2IDVjYWIzMzYxODI5MzAwNGI1YzU1MmQ5ZWQwNjg3OWNlOGIxNzkyZjQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgzOCA2NzhkNDBmY2UwYjE0YTk5ZTc2MzBmNTExYjhjZTA3Y2EzMDkxN2FlIHJlbGVhc2UyMy1tYWludAorMzY4MzkgNWNjNTVkMzZiYjFkY2Y5YjA4NWQzYzVhOWViMWIwNWI3MDZiMmI3ZiBsZWdhY3ktdHJ1bmsKKzM2ODQwIGU4OWVmMGJmYTFmZjhjZDRiMTBhNDJlODE0MmExYTI3NzBlYmM5ZTcgbGVnYWN5LXRydW5rCiszNjg0MSA1MGMxMjJiYzdhYWNhMzg4MmM3NDdmOGU1NWQ3Mjk4ZWE2MDY4NjY0IGxlZ2FjeS10cnVuaworMzY4NDIgYWU4NzcyZDE1YTVmYTcxNjBhMzY2MDI5ZTdjMGExOTRlNWY1ZDI3ZiBsZWdhY3ktdHJ1bmsKKzM2ODQzIDcyNmRiNTg1NDc0NjE0ZjExNDAwMTRlNDhiNjJmNmNkMzhmODdjZGYgbGVnYWN5LXRydW5rCiszNjg0NCA0YjNmOGRkOTI2OWFlMDcxOTJhOWI3NDZiNTRhMmZiNDIyMjQxNjU3IGxlZ2FjeS10cnVuaworMzY4NDUgZjUxOTg5NmNmNWRjYmRlMzlkNTQzNzYxNzg4OTM4YTdhMTNkMmZiYiBsZWdhY3ktdHJ1bmsKKzM2ODQ2IDYxYzAxNzE1Nzc1NjgzNDQ1ZmFkZGJmYTFlM2RiZWFmYWQyMzY4ZTYgbGVnYWN5LXRydW5rCiszNjg0NyA4Zjg3NDQwYzZlODBjZDEyZWY5YTc4YjM2MTY1YjJmYzEzYzczZjFhIGxlZ2FjeS10cnVuaworMzY4NDggYThhNDg2MzM5ZDgwNjQ2ZjVjNGQzZDJmN2Y1ZDA1OWMxMzcyMDViOSBsZWdhY3ktdHJ1bmsKKzM2ODQ5IDJlYTA5NjYyYTJkNDBiNWNjMTMxMjdiOTdkYTgyOTY2ODlhNjFhYjQgbGVnYWN5LXRydW5rCiszNjg1MCA0NDQ1MDEyOWNlMzU2ZTVmMGU5ZGU5OTYzNWEwNmJmZDQ5ZDcyYWU3IGxlZ2FjeS10cnVuaworMzY4NTEgYzlhZTk1ZDc3YTQyN2Y5OGY0ODFmY2E1YTllOGNmZTg1ZjRjMTQ5NCBsZWdhY3ktdHJ1bmsKKzM2ODUyIGIzNGE4ZGMzY2NhZWNmMmM1ODcxZjQ0YTg5ZjY3MzQ5YTFlMzY5MmUgbGVnYWN5LXRydW5rCiszNjg1MyA0ZTJjNjYwMjFiZjM4MGQyNDMyNjI2MzdhYmQwMjUwMzRiMjcxNGQwIGxlZ2FjeS10cnVuaworMzY4NTQgNDNmYmYyOWRkODNhOTc4YzgxNGJjNGRlMGFhNmZmYjEyNjJlODBiYyByZWxlYXNlMjMtYnJhbmNoCiszNjg1NSAyNTJjNjU0NjkxMTQ2OTVjNmFmZjdmNDlhZmNhMDVjZDViZGQ1ZTUwIGxlZ2FjeS10cnVuaworMzY4NTYgMWFhNDBhMDg5ODJmYTU1ZWZmMjA4YWQ2MmE3OTAwNTkyYzNhODIyMyBsZWdhY3ktdHJ1bmsKKzM2ODU3IDMwMDI1OTY1MzI0YTU4MWUwNzFjMTdlNGVjNWQwY2FkNzE4OTNkMGIgbGVnYWN5LXRydW5rCiszNjg1OCAzMDliZWJlZGZjOTdhMWNjMjMxY2IyN2M4NmZkNmUzZDljNGZjNTY5IGxlZ2FjeS10cnVuaworMzY4NTkgMmMxMTZlN2ZmMTYzNmJlMGNhZjNjMGQ3Zjg3ZWJhYTQyYzljMWJjNiBsZWdhY3ktdHJ1bmsKKzM2ODYwIDQ0MWFiM2FkNmQwMWEwY2I2MmM2Mzg4ODA1ODdkY2M5MzI5ZDA4M2UgbGVnYWN5LXRydW5rCiszNjg2MSA0YmY2ODU0ZGI2NTZlZDk4MGMzMzVmZGZlOGQzNzhmYWE1NjdkMzgxIGxlZ2FjeS10cnVuaworMzY4NjIgNGZkNTk2NTFmZTNmOWE2MjZjOWVhYmUyMTg1NmUyZWM4Nzk1ZTY2NyBsZWdhY3ktdHJ1bmsKKzM2ODYzIDM5NmQwMTFmODM0OGJhNjdhMTJiNTllNTQyZmUxMGFhMGNkYjc5OGQgbGVnYWN5LXRydW5rCiszNjg2NCBiNWRjZmU3YTQxNTk2MGFiMGZiM2MzMmUwNWVmNzk4OTI3YmRlZjk4IGxlZ2FjeS10cnVuaworMzY4NjUgODY3ZmVmMmI1MDYwYWM4MjAxYzkxNmQ4YmI5ZjBlNjMzZGFiYTc2NCBsZWdhY3ktdHJ1bmsKKzM2ODY2IGZhM2QwMWYwZmM0NDIxNTJkNTJiNDA2Zjc5ZWM3ZjE0MGI0NDUyY2UgbGVnYWN5LXRydW5rCiszNjg2NyA4ZDcwN2Q0OWNiOWJjN2Y4YmQ2ZDk3NjBhNDNkY2E3ZWNlOTU0MGIwIGxlZ2FjeS10cnVuaworMzY4NjggOWZiMmUzMGYyNmJlZTVlZTFlODU2MTY2ZmFkYjI4NjM0Y2I4ZTQ4MyBsZWdhY3ktdHJ1bmsKKzM2ODY5IDM2N2NlNTE2YWQwNTRiZDhlZTcyODA0YWIwZjRhODBhNDA2NjRkOTEgbGVnYWN5LXRydW5rCiszNjg3MCA0OGNiNGVkNDk0YTY1ODEwMjEyYTM5NTU3MTlkYzI2ZDM5MzdiMDIyIGxlZ2FjeS10cnVuaworMzY4NzEgOGY2ZDIwNWQ1MzFiYzk3ZWNjYzBkZjJlMWM4MzE5ZTFmYTA5ZDVjYSBsZWdhY3ktdHJ1bmsKKzM2ODcyIGZmMTc2MjRiMjY0MjkyNjE5ZjI0MGQyZjgyMTNiODlhNWNkNzcxMWUgbGVnYWN5LXRydW5rCiszNjg3MyBiMGUwYTUzODcwYjZmOWY4MDk3MDI3ZjQxNGY3MjI2NTVhZmRkMmViIGxlZ2FjeS10cnVuaworMzY4NzQgOGNhOGZlYmMwYTBkNzUwMDkwYzQzYjllMzM2ZWQzYzExN2M0ZWU1NiBsZWdhY3ktdHJ1bmsKKzM2ODc1IDBiZWI3NTY5NjVkZjljZDQ2NTdjZDJlOTNlMGNlMzBhMDkxZDMxNTEgbGVnYWN5LXRydW5rCiszNjg3NiBlNWI5ZTg3MmE3ZDNiYTI4NTQyNjk4MWVkMTFhZDMwYzU2NmE1ZDY0IHJlbGVhc2UyMy1icmFuY2gKKzM2ODc3IDZhYTMxZDc1YzRmOTkwZDk1YjhlNmQ1Y2NlNmNhMmY3ZDQ4YzU3YTcgbGVnYWN5LXRydW5rCiszNjg3OCA1Yzk0MGY5OGU0NjU1OWM5MjJlYjhhMTVlYmJjZGYyMGQxMWRkY2NkIGxlZ2FjeS10cnVuaworMzY4NzkgYWI5M2FmZjRjOTBhODRiZjBjMDE1MzA5OTQ0NWUyZmI0MzAwNDVmOCBsZWdhY3ktdHJ1bmsKKzM2ODgwIDFmMzU4YTZiNGJjMzM2ZTU3MDQ1MTRiMjgyN2VhMTg1OWJiNWQyZjMgcmVsZWFzZTIzLWJyYW5jaAorMzY4ODEgMjA0ZDI5YWNiYTI4MDEwMTBhZmZhN2YzOGJkNjFhM2FkYThmMjE2MyBsZWdhY3ktdHJ1bmsKKzM2ODgyIDUyMThiZmY1NjQ0OTRmNmYxMGE1YjJhZDIzMTYyOTRjNWFkMjQ1MDkgbGVnYWN5LXRydW5rCiszNjg4MyBhZDgxODMzOGY4YzMzMDY1NjljYmM2MzY2OTI0ZmQ2NzE3M2YxYzE3IGxlZ2FjeS10cnVuaworMzY4ODQgNTMwYzAyYjgzZWVhNWFkMTY1YjZjOGM4NDA2NjAyZjFhYzYxM2NiMyBsZWdhY3ktdHJ1bmsKKzM2ODg1IDJjOTNmY2VlZTQyZDEzZGFmMDU0ZTY2Zjc0MGZiMDY2MDg1YzhmYTMgbGVnYWN5LXRydW5rCiszNjg4NiA0ZjU4OGY1N2E5M2IwMzVhZDAzYjhkMDQ2MDgzOWZlZGNiN2ZhNTg3IGxlZ2FjeS10cnVuaworMzY4ODcgODg5N2U3N2NkNzlhODQxYmZlNzc1YzU3MWMxNmQyMGM1NTA4YWZmZiBsZWdhY3ktdHJ1bmsKKzM2ODg4IDk0NjQ0MTVhMWY4OTQ5OTE5OTI1N2Q5MDc5NDA1MzMyNjliYjM3OGUgbGVnYWN5LXRydW5rCiszNjg4OSA0OWI4MDgzMjAzZTZiYmMxZjk3OTYxMWM4MTczNGMzZGZlMTViOGJhIGxlZ2FjeS10cnVuaworMzY4OTAgOWRkZmE3NGNiMjUwZjQ5NmY4MTQzMmFhNzVkOWY0OTU0MDM3MGU0OSBsZWdhY3ktdHJ1bmsKKzM2ODkxIDg1MDAyY2Y0ZTIzYmY1MGQ4YTgxZWQ1N2E5NTZhM2ZlMTU2MzZjYWMgbGVnYWN5LXRydW5rCiszNjg5MiAyZTdiNzgwMzI3MDJjN2I2YmE2ZDU2N2VkMTg3ZWVmNzgxMTkyOGM4IGxlZ2FjeS10cnVuaworMzY4OTMgODYwN2FjMmY4MWM4MzkyMGRkNDJhNDlkMDdjYzIyNGU0ZjNiMzc5NyBsZWdhY3ktdHJ1bmsKKzM2ODk0IDI2NzUyZGY5MzkxMzkwMzNmYWI2YzM4NzNiMGM0OWU1ZjZkYjc1MmMgbGVnYWN5LXRydW5rCiszNjg5NSAxNjYwYTY4ZmE2YTQwN2E3M2RjN2NhYzc5MTZjOWJjMWVlYjNkMmQwIGxlZ2FjeS10cnVuaworMzY4OTYgN2MzZDU2OTUyMmM0OTJhZWY3ZTM5OTNiNTU0OTg1OTE4ZTEyYjY3YiBsZWdhY3ktdHJ1bmsKKzM2ODk3IGI2NjlhNjA5N2JhODljODI2ZDQwYjAzYWM2MWU4MTFiY2E0MzQ4NDcgbGVnYWN5LXRydW5rCiszNjg5OCBlZTNhYWE3OTE4NDI5MmQ4MDJmNWJkZTk3NTExNzZmYzU2MDg2MTNmIGxlZ2FjeS10cnVuaworMzY4OTkgZjZiMmYxOTJlMDNiNTNmYjMzOGIxNTQ2Mjk0Y2EyOTNhMTVjYWYyMCByZWxlYXNlMjMtYnJhbmNoCiszNjkwMCBjZTJhMTk2MjAzYzVlY2U5MjdiZWNmMDRlMjkxOGU4ZTU3NTQ3OWYyIGxlZ2FjeS10cnVuaworMzY5MDEgMjMzYzIyMzg1OGY3N2JiYWM1MmRkYjU4NTkxY2I1NzQ0ZDVmMjU1YSBsZWdhY3ktdHJ1bmsKKzM2OTAyIGZlZTIwMzhiOGZhOWRjODJiMDY2ZDIzZTNiMDMzNDQ3ZjMzM2IyNmYgbGVnYWN5LXRydW5rCiszNjkwMyA0MjA0ODg0MDhlMGUzZDY0MzNjN2QwOTUzNDM0MjgxZTQ1MjI4NDM1IGxlZ2FjeS10cnVuaworMzY5MDQgNWE0ZDc3YjZlZmE2NWVhOGFlMTg2NzdhYjI2MzUyNzcyOTdlZjAzYiBsZWdhY3ktdHJ1bmsKKzM2OTA1IDMwNDVmNGYzNGVmMjQ3YmQ1NDM4ZjIwYTBhMWE1YjE0MDdhOTE1NWUgbGVnYWN5LXRydW5rCiszNjkwNiAxN2ZjODhhMWI4NzM1Nzg0YzQyY2MzZGRkMzBiNDQ1YmY5ZTQ5ZjkxIGxlZ2FjeS10cnVuaworMzY5MDcgMWRiZDBmMzQ1YTc4ODYwYzQ5YTYyNzgzNjY3ZjM0ODY2MmUxYzY2NCBsZWdhY3ktdHJ1bmsKKzM2OTA4IDI3NDkzMzRkNzFhNDcxNDNlMDE1NTc3NTc5MjBlN2Y5YWVkOGI2ODMgbGVnYWN5LXRydW5rCiszNjkwOSAxNjM2MjE1MTdiOTgyNTRjYTg1NThlYzk5ZWM2MzQ2ZWQ3M2UwZGE4IGxlZ2FjeS10cnVuaworMzY5MTAgNjdkMjUyMTdiYzdmMGM0NzQyMWMzY2FmYTU4MjliMzAyOTFiYmFiOSBsZWdhY3ktdHJ1bmsKKzM2OTExIGM4MWVkMDc5NTc2ZjJhNWU3ZTcxYzQ1N2IxYWU4MjllY2VlZDk3YjMgbGVnYWN5LXRydW5rCiszNjkxMiBjMzQ4N2VmM2E2OWM0ZDI4YTAxZGE1ZTFkNzA2ZjNjMWNlMmFlNzYwIGxlZ2FjeS10cnVuaworMzY5MTMgZDBlYjA5OGJlMjY0OGYyNTc3NmJhYzljZTcxYzhjNTAxMjI3MDg1OCBsZWdhY3ktdHJ1bmsKKzM2OTE0IGM0NzhhNzFjMjM4NDA0MmI4MmM3Yjc3YmZjYzQ0NGFiNzk1ODJmYzAgbGVnYWN5LXRydW5rCiszNjkxNSA0NTU2NjcxNDZkNGI5OWVjYjVjNDVjNDhlM2VhMWEyMmIxYjNiM2NjIGxlZ2FjeS10cnVuaworMzY5MTYgOTg1Mzc1YWNhOTcwNzMxMGYwNzU0NjI1ZmVlMWNkNGU4YjkzYTczZiBsZWdhY3ktdHJ1bmsKKzM2OTE3IDFhZjNhZDQ5ZDA2ZmUwZTIyMTFiMzZmM2MxMDBmZTc1YTQ3YmI3MWMgbGVnYWN5LXRydW5rCiszNjkxOCAyN2FkYTI1NTA5ZmYyNjI2OGNmMTg1YjkxNWJjNzcyNmQzZDk4MGZmIGxlZ2FjeS10cnVuaworMzY5MTkgZmJlYTJiZTM1NTYyOGJlMjNmNDRhNmM3MmQ3YzA1ZDAxZDYzMjNiZCBsZWdhY3ktdHJ1bmsKKzM2OTIwIDI5ZmE5ZDZhZmVhMDFmZDhmYWE3MGI1YWU1MGU0MmU5Y2ZiM2M0YzUgbGVnYWN5LXRydW5rCiszNjkyMSBmMGE2ZWYzYTg3NGVmOGRjNWE4ZGM5M2YzMzA1OGZiNTNmOTY1OTU1IGxlZ2FjeS10cnVuaworMzY5MjIgNWU2OWY3YzgwZWY0MjczMzQzODVmNjUxMmVkNGM3NjljOWFhOWUxYSBsZWdhY3ktdHJ1bmsKKzM2OTIzIDZmMzhlM2I2NGVmNDcyNmVmZTlkNGVjNWM2MGZjMTU5MDljMGZkZWIgbGVnYWN5LXRydW5rCiszNjkyNCAzMWNjZWE5ZTk4YTc0NmZhMGJhOTFhOTc5MWYyNDdkZjE4NDJmOTgwIGxlZ2FjeS10cnVuaworMzY5MjUgZWU0M2NhNGEyYzIzOGU0MWU3MzIzMzBjZGQ5NDZiOTRjMWQxZmM0MSBsZWdhY3ktdHJ1bmsKKzM2OTI2IDc2NGQyOGZjM2QzNjk4ZWE4ZmJmYzAxMzlhNTdmYWE2ZjRiMmY3ZjIgbGVnYWN5LXRydW5rCiszNjkyNyA5MGRhNzA5ODY0MDcyMzk3NGM4YWI4OGMwZWM5ZWI5MTExYTFlNzY0IGxlZ2FjeS10cnVuaworMzY5MjggMDMwNDNiMjg4YjI4NzU4NjAwMmUwN2Q4MWI1OWQwNjdmYzNiY2M4NSBsZWdhY3ktdHJ1bmsKKzM2OTI5IDQ1MzI5ZDlmZGI4ZDU0NTQ3MWU0MGE3MTE4MzdmODZjOTkyN2E0NzQgbGVnYWN5LXRydW5rCiszNjkzMCBjZGEwNDU1YmQwYTAzMTg5MDA2OTk0MmZkYjg3NDBiZDEyOTM0ODE5IGxlZ2FjeS10cnVuaworMzY5MzEgMmE4YzM3NThjNGExOTA2YmUzMWRhM2FlZDkyNTNmN2ZjMTkxOTJiZCBsZWdhY3ktdHJ1bmsKKzM2OTMyIDQ1MWRkNDlkZjUzMTA5Y2Q2MmFiYmQ5MWFiYjBjZDE2NmIzNGYwYjQgbGVnYWN5LXRydW5rCiszNjkzMyA4MjFjNTU3Y2E2MTI0YjVmYjIwNTdkYzM2ZjNiODlmOGY5ZmZhY2VmIGxlZ2FjeS10cnVuaworMzY5MzQgNGU2ZjRlOWVjOWIzZDNhNTY2ZGFlODk0Y2Y0MDcwM2U0MTNiMGJmMyBsZWdhY3ktdHJ1bmsKKzM2OTM1IDA0ZDlmZGUxMTMzMDk0OGUyYTNkMGNiN2JlMGU1NjcxNjJlMTRlN2MgbGVnYWN5LXRydW5rCiszNjkzNiA0ZGQxODE1YjQ0ZWZhYWY5ODU2N2U1M2RjNTdmNzZkNGJlMjE0NWMwIGxlZ2FjeS10cnVuaworMzY5MzcgYmZjYzRlMzlmYzQ1MmIzNTMyNjY3NjM0NmFjODExZDFlN2QzNzQ1ZCBsZWdhY3ktdHJ1bmsKKzM2OTM4IDk4MWZmZjczNjNiOTJlOGU3NGRmMTc5NTRhZjIyMTY5ZGNiMDFkODAgbGVnYWN5LXRydW5rCiszNjkzOSAwMWNjNWUzZjYzNzUyMjFhMWI3Yzk3NDIyMGFiM2RiZThkMzYxZjhhIGxlZ2FjeS10cnVuaworMzY5NDAgODM2ZTc3MjY2Zjk3NzkxMzE0MTEwZjNiNDcwYTc3ZmVlNGEzZTAyMiBsZWdhY3ktdHJ1bmsKKzM2OTQxIDc0M2FiYWM5ZjlmZTMzZWNiY2VkOTczOWMxNWMwZmY5ZDdkN2ZmMzEgbGVnYWN5LXRydW5rCiszNjk0MiBkMDc1Y2JhODUxZmQ4NmZkOTYwOTYzNzlhMjc4NjhjNjMzN2QxNmUxIGxlZ2FjeS10cnVuaworMzY5NDMgMDU4ZTg1MWU3OTNlYWZiYjExNDgyYjk1OGFjMzE4ZDYxZGQ3MDIwZiBsZWdhY3ktdHJ1bmsKKzM2OTQ0IGE3OTI4NzI2ZGQ4ZjViZDQ0ZTg0ZTliNDVlYzNkMDZmNzZmMmQ5MmMgbGVnYWN5LXRydW5rCiszNjk0NSA1ZWFlNGNlMTA1ZmNmNGM1NjQ5Zjk3ZGI5ZGYwYWI4ZWYzNDQyZjhlIGxlZ2FjeS10cnVuaworMzY5NDYgMjQwZWFmYWUzZWE3NGRhNzM1NGE5ZjVlMmRmZGMxOGQ4Y2NiMzkxZSBsZWdhY3ktdHJ1bmsKKzM2OTQ3IDVmMzM1MDdjYjU1OTgyMzcxZWZhMzkyMmUyOGFmODYzM2E2N2RlOGMgcmVsZWFzZTIzLW1haW50CiszNjk0OCBhYmVjYmQ2NmE2MjgwYzdkOTljZGUzY2E1MTkzN2I4YzUxNjhkZjIxIGxlZ2FjeS10cnVuaworMzY5NDkgNDQ0NTdjYjhmOTcwMTQ5NzJkOTMzYzQ5NDA4Mjg1NGU3NTU4OTA4YSBsZWdhY3ktdHJ1bmsKKzM2OTUwIGFmZDU0MTI2ZTlhMTkwZmEwNDBhZjRmNGNlZDY2YWI1NDE0MzU2NjYgbGVnYWN5LXRydW5rCiszNjk1MSA1MzQ3ZGEzMWYwNzZjNmNmMjdkNDQwMWMwYWFjZTllZTkyMDA2NjIxIGxlZ2FjeS10cnVuaworMzY5NTIgOTkzN2QwZTYzY2EzMjVmNDdkMGIzY2UwYTYzZTFiOWNlMzFjZDdjNiBsZWdhY3ktdHJ1bmsKKzM2OTUzIDRmZDE4NTA1ZmMzNWZkZDdiMzJmYzYzZTdkMTdmOWRkNzJjMWI3MDIgbGVnYWN5LXRydW5rCiszNjk1NCA0YjBhMGZjMWJhZWEzMWRmOTNlZTI1NmQ1MGQxNzViM2UwZjlmZTA5IGxlZ2FjeS10cnVuaworMzY5NTUgNDgxMDBhMDFhYzdjMDUzYTQxNzVhODYxZWQ2N2JhNjkzZTI0MjRhMSByZWxlYXNlMjMtbWFpbnQKKzM2OTU2IGRmYzI1ZTFiOTYwNTgzNDhjOWQyNDQzNWJlNDcxNmIxNWM2ZDdlOGUgbGVnYWN5LXRydW5rCiszNjk1NyAyMGU5MGU1MDc5N2RlOGY1ZDA2NGFjN2EyZTkyM2Q3ZDhhMDE4M2VlIHJlbGVhc2UyMy1tYWludAorMzY5NTggYjE2NmFlMmY3NzMyMTQzN2U4ZmQ1MzZmOTViNzMyM2IyZGY2NzkyYSByZWxlYXNlMjMtbWFpbnQKKzM2OTU5IGRkZDI0ZDcyYWQ2YWFjNTY5ZjgxMDY3NzhlNzQ1YWIxZGI5ODIwOGUgbGVnYWN5LXRydW5rCiszNjk2MCAwMWEzODU1YTRiMDNlODI5N2NkZTkzNDA5YjEwZTkxNDgyYWM4NDY3IHJlbGVhc2UyMy1tYWludAorMzY5NjEgYzcwYzMzZjY5YTQ0Yzk0NjMwNzVhZDZjNDU4ZWJjZDVkNDIyM2EzMiBsZWdhY3ktdHJ1bmsKKzM2OTYyIDNiNWQzN2Y3Y2I1YWQxZTc3ZmYyMDA4YzZkYmQyOGUzMTQ4MGQ0MDEgbGVnYWN5LXRydW5rCiszNjk2MyBjZTAxNmQwZWM3MDE1NTM0YTI1MGRjNDg1MjEwZGYxN2UyNzljMzJjIGxlZ2FjeS10cnVuaworMzY5NjQgMzU2ODg3NDEwYmRlNzRiOTk4NzUxZjEzMzM3NjIwMTkxNDMwN2I5MSBsZWdhY3ktdHJ1bmsKKzM2OTY1IDgxZWZlYzBlOWQyOTM2YmU4NmNjMmNmMGMzMjk1NWFjYmNmOGYwOTcgbGVnYWN5LXRydW5rCiszNjk2NiBmMjc5MzViNDY5ODVhYzYxZTBiZDU2OTMwMDMzNzE0ZTcyNjJmZWJjIGxlZ2FjeS10cnVuaworMzY5NjcgNmI4ZTQ5OTY4N2Q2MjU4NmVhNzViN2FjMjY4ZGU0ODk0YzQ0NWM2OCBsZWdhY3ktdHJ1bmsKKzM2OTY4IGY0NTViYmU3ZWE3ZTJiMTZkNDc5NjE1MTFlNmI2NDA1NTA3MGM2MDYgbGVnYWN5LXRydW5rCiszNjk2OSBlNWY2YzNmNTA4NDY2NTNjYTI5M2I0YmNhNzIxZmQ5MTI2ZjMxZTNkIGxlZ2FjeS10cnVuaworMzY5NzAgYmFiZDExZWVjZDg4M2FjZWJjYWUyNzQxNzRjNTM0YWNjOWU1NTg1NCBsZWdhY3ktdHJ1bmsKKzM2OTcxIGM5YWM5YmU5NWFmOWUyZThhOWI4YjBmNTY3OTU1ZjI2YjU4MDkxMmUgbGVnYWN5LXRydW5rCiszNjk3MiBkZGMwMzA0YzE1MWZlNGY2ZWUxMWRlMjFmM2FmZDY1MGI1MmExMTViIGxlZ2FjeS10cnVuaworMzY5NzMgNDUwZjVlMjFlYWM4ZGMyNGEwZGNhMjY5YjlmNTY3NzcwNGZjNTlkMSBsZWdhY3ktdHJ1bmsKKzM2OTc0IDBhMGMyNDdmMDU4NDQ1NmUxNTE3NDM5MmNmZTNjODgyZGVlMWI2OGUgbGVnYWN5LXRydW5rCiszNjk3NSA3ZGU3YzE5MTBhYzljYTQwZTllZDRhMzAwYjE0ZTQxYjE1Y2E0OGFhIGxlZ2FjeS10cnVuaworMzY5NzYgYTc3YzAzNzJhMWQ3YjUyY2QxYzNiNTU0ODIzMjNlYjBlN2M4NzExYyBsZWdhY3ktdHJ1bmsKKzM2OTc3IDI4ZTg3N2ZmNzRjZjcwNjczMzYzODllOWE3OGJmMjNmYzY3ZTI2YzEgbGVnYWN5LXRydW5rCiszNjk3OCBlNGE3M2VmYTRkMjM0YmVmZTNjMjIyYmE1NTUyOGFiNmZjODgxYWNjIGxlZ2FjeS10cnVuaworMzY5NzkgZGZkMzgwM2VlMGMxODEzZDhhNzBmYmJiNjQwOTRhYmE1MTU3ZjVmYyBsZWdhY3ktdHJ1bmsKKzM2OTgwIDNhNGU3M2E1ZTQzNDdmMWQxNWFhMTc1NGZjOGRjOThjYzI2ZTMwZTUgbGVnYWN5LXRydW5rCiszNjk4MSBiZjY5ZmMzYmQwNjdlNGU1ZWNjMWMyOGYwN2FlN2FjN2E2MTQ0ZTIxIGxlZ2FjeS10cnVuaworMzY5ODIgZjZhYzQxN2I1ZWIwOGI3M2YxYzAzODIwNTQyYzllMDFhM2UzZGUzNyBsZWdhY3ktdHJ1bmsKKzM2OTgzIDFjZjlkZTNhODUwM2E0Mzk3ODU3OGIwYWQ4ZTk2MTAyN2ZmNWIzMTQgbGVnYWN5LXRydW5rCiszNjk4NCBkN2ZjZGY5Nzc2YzRkZmE0YjdkMjNiZmI2MjZlYjllZTcyZmZkYzVlIGxlZ2FjeS10cnVuaworMzY5ODUgOTIwZjVmNjRmMmYwZmM4MDM4YTI3ZDRlMmRhOGMxOTZiYmEzOTQ0MSBsZWdhY3ktdHJ1bmsKKzM2OTg2IDAxNDA3ODViZWZkYjM2ZDBjMWIwNDJlNjM0ZWVlNGE1NTgyOTE1NGUgbGVnYWN5LXRydW5rCiszNjk4NyA2YzE2YWI0MjE0YWY4ZThlNTBhODAzMzcwZDliZDRmYzhmMmIxN2Q3IGxlZ2FjeS10cnVuaworMzY5ODggZGM2NDdkZjUzOTIxN2E1OTVjZWNiMTkwNTM5Y2ZkNjJjYjg5NzJhMyBsZWdhY3ktdHJ1bmsKKzM2OTg5IDNhN2Y4MmU2MGNiMjI5MjQyODUwMjcxNGFiMDc3ZjgyMWY5Y2RjNzIgbGVnYWN5LXRydW5rCiszNjk5MCBjY2QwMmJkMzQ0YjM4YjBlOWUyNjI0MjM3NzY4ZWExMmIyOGIxN2VlIGxlZ2FjeS10cnVuaworMzY5OTEgZWRkYjM3ZDcwMmI1ZTA1MjIzNjA2ZWUxZmM0Mjg1NTgzZWNmZjdkOSBsZWdhY3ktdHJ1bmsKKzM2OTkyIGMyMzg0NjAxYTI0MTExN2QxZTc3ZmQ1NDgyZjNmNDA0MGJhODQxNDkgbGVnYWN5LXRydW5rCiszNjk5MyBhZTliNDdhOGQ2NDg0ODU2ZjBjOGRlMTMwYzQ0N2IxZjQyMzVlYTZmIGxlZ2FjeS10cnVuaworMzY5OTQgOGEyODI3OTc4OTVmM2YxMjVkMzU5NWVkNTQ4MzRmMTliYTYwMGM4NyBsZWdhY3ktdHJ1bmsKKzM2OTk1IDg0NmJhMjk3MmQ3YzFiZGQ0YzRkYTYzODUyMTI0NTAzNGZhNmM4MDggbGVnYWN5LXRydW5rCiszNjk5NiBlNDk5MmU5MzBjYjJlNTk2MTgwMWE0NDE5MDQ2MWJkZWNkZDgyMjdiIGxlZ2FjeS10cnVuaworMzY5OTcgM2RiOWE5MzI3NzVlNjBhNmFmN2RjMjczZDQ2YzVjZWZmMjIwYjg4ZSBsZWdhY3ktdHJ1bmsKKzM2OTk4IGZjMTYzN2ZjNDU4ODlmYmM5MmQ3NTIzNjMwNjNiMWIzNTY2YmZiNjkgbGVnYWN5LXRydW5rCiszNjk5OSA3Mzc1YWU1ZjlkYzRkNWY1OWVkZjA5NzQ3ZTVjNTFiNGEyNmVhZWYzIGxlZ2FjeS10cnVuaworMzcwMDAgMWQ5ODM1MDgyYmU1YWVjYTZhNWY3ZWMyNjYwMDc1OWMyNGE0YzVmMiBsZWdhY3ktdHJ1bmsKKzM3MDAxIGFkMjY4YTg0MDhmNGY2YmViNTcyYmVkMzBmNTkyYWJmNWRlYmY1YzAgbGVnYWN5LXRydW5rCiszNzAwMiBhMzVlNGQzNWQxNDI1MTJjZDI4ZDYyODUxNDRmNDYxNGYwYTliYTlhIHJlbGVhc2UyMy1tYWludAorMzcwMDMgM2JlYjU0ZjlkMmJiZTg4MjdmZWE3NmNkNGRhYjY2NjllNGRhNGJjNyBsZWdhY3ktdHJ1bmsKKzM3MDA0IDI4OTNkYzliNGVmNGRhZDA0NTI5NWYxNTY4ODVhNmViMzczMmQyMGMgbGVnYWN5LXRydW5rCiszNzAwNSAyMmZhOTZjNDEzYWVjM2ExNTg3OGE2NmUwYzRkNDAwNTE5MzRjOWQ2IGxlZ2FjeS10cnVuaworMzcwMDYgOTUxY2NkOGYzNDI4ODZlYmI2MGFjODJiMTgwODlhMjQyYmQ1NGI0MyBsZWdhY3ktdHJ1bmsKKzM3MDA3IDg3NzljOGM0ZDE4MWFmNDc1MmNiOTFkODE1YjcyMDA0OTQxOTA0ZjAgbGVnYWN5LXRydW5rCiszNzAwOCA5Yzg0MWNhYTBlODE0YWU2ZjQ5NjVkYjVjOTRkOTgyZDVmYmNkNGM0IGxlZ2FjeS10cnVuaworMzcwMDkgMjhhMjA1ZWNiNGRkODA1NjQ3NjIzMzQ2MTdmMWZmYmZiZDBkYmQxYiBsZWdhY3ktdHJ1bmsKKzM3MDEwIDhlODdhNjgzNDk0MmU0ZWZhNzYxMmIxOWM1OWEyZDkxZWE5ZDMxOTQgbGVnYWN5LXRydW5rCiszNzAxMSA4YzBiMDhiMjQ3N2JmZDNhODUxYzY1YmIzNzk0OGVkZDk5OTg4NTJjIHJlbGVhc2UyMy1tYWludAorMzcwMTIgNjEyZGUyNjhlZDRiZTBiZTMzYjU0OTNlMzk2OWVhOWEwMmY1NTYyZSByZWxlYXNlMjMtbWFpbnQKKzM3MDEzIGZkOTJlYThiNWI1MWJkMWE2NDZlZTQ5NzM4OTFlNGI4YzYxZjdjYWYgcmVsZWFzZTIzLW1haW50CiszNzAxNCA3YWFlMDZiMWYxZGRjYjM2NzliNDE3NWIxZDgzYTMyMjEzYmE1OGVhIGxlZ2FjeS10cnVuaworMzcwMTUgZmY5ZDVhNzJkNTRiNzIwODAwZjg4YzU0ODhlNzAwZDJhZGVlNDQ1MSBsZWdhY3ktdHJ1bmsKKzM3MDE2IGI1NWRiY2NlY2M3MTUwNjY2MDFkZWMzYWVkMTMxMTEzOTM0YTVlMWMgbGVnYWN5LXRydW5rCiszNzAxNyA0YjViNmU4NjFmY2Y2ZWIzYjk4MTI2YWZiN2M4Zjk2Y2IzYmFjYjFlIGxlZ2FjeS10cnVuaworMzcwMTggOTMzNTQ4ZmU3Yjk3YjBhMmI2MzcxYWVlN2NmMjczZDkyM2EyMDVlNyBsZWdhY3ktdHJ1bmsKKzM3MDE5IGEzNjIwMTZlOTUwZDUwYzUyYzhmOWU0NDc4MmYxZGY5MjllMTFmNjAgbGVnYWN5LXRydW5rCiszNzAyMCAyYjhiZGIwNjllMGFlYmRkNmZjMDkzNTJlODcxZmUwYTc4YTUxNTQ5IGxlZ2FjeS10cnVuaworMzcwMjEgYjJmNDI3ZGIyMjhiMTQ2ZjUyMWU4ZWRhZjU4NDlhMjkzZTI4ODc1MiBsZWdhY3ktdHJ1bmsKKzM3MDIyIDNmOWQyMWVjNTA0YjRmYmZkYTcwZmQxNDkwMDZjNjczYjVhZDg2ZmMgbGVnYWN5LXRydW5rCiszNzAyMyBhMDU5MzAxYTRjZGUzZDQxMWViZjJkNjc4M2EyMjI0ZjA5YWJkYjc2IGxlZ2FjeS10cnVuaworMzcwMjQgYWU0Y2IyOTQ3NDAwZWIyYWYzOWMzYmU5NGNkNGRiMmZjNWFlNzkyMCBsZWdhY3ktdHJ1bmsKKzM3MDI1IGJmYjI5MWY4NTg3MTVhNzdlZTBhMjdlNWEyZDgxYjQ5ODBjNDczMTAgbGVnYWN5LXRydW5rCiszNzAyNiAyMDhmZTcxOWM3NDliNTFlYjI3Zjg4YjNiOWMwZmY1ZmJhMDAzMDg3IGxlZ2FjeS10cnVuaworMzcwMjcgNmYwOWI1MjBjMDFjNTkwZmM4YTEwMzBkNzc4NzI3NGZiMmI3YjFiNSBsZWdhY3ktdHJ1bmsKKzM3MDI4IDFkNmVlZmJjYmIzNzQ3ZTBkMmI5MDliZDcwZWMwNzkzY2E2ZTIxOWUgbGVnYWN5LXRydW5rCiszNzAyOSAzNTdiMjRjMzQ2YmIwZDY2OGVhZjZlNTZkZTEwNGY5NGVmNzQ5ZTIwIGxlZ2FjeS10cnVuaworMzcwMzAgMmU4ZDJiZGQzM2RlY2RiNjhlODRiOTU4ZTNmNTcwN2IwOTk2OGYzYiBsZWdhY3ktdHJ1bmsKKzM3MDMxIDk2YmY0MDI0ODhjNzBhNjE1MzBkNGYzYTgzYzViZjg1MWMyM2JiMmEgbGVnYWN5LXRydW5rCiszNzAzMiBiZWQ0NWE2Yjk5M2JhOTRhYjNmMTc5OWRjZDg4NjA3NjNlZmY5ZWVjIGxlZ2FjeS10cnVuaworMzcwMzMgNTc3OGY2MzMxMzM0Y2UzNmMzZDhmZWUyZGMzMmVlYjM1ZDdiOTM2MiBsZWdhY3ktdHJ1bmsKKzM3MDM0IGE1NzY5ZThmMWM2ZmRlNzUyYmUwODQ1YjBlODA2Yjc0N2RjOTMwNjUgbGVnYWN5LXRydW5rCiszNzAzNSA0Y2Q3N2RlNTUxZTc0NWIxYWUxMGNlMDA2NmZiYzI4NWE2M2VkNjU3IGxlZ2FjeS10cnVuaworMzcwMzYgMWY5NTIyMjM4Yzg2MzIxN2IxNWE0OWNmNmYwOTJhY2RjNWFlYjU4ZCBsZWdhY3ktdHJ1bmsKKzM3MDM3IGUwNWU5ZDA1ODMwZDA5MWMzZjhmOTQzMWYzY2E0N2Y2YzkzZTJmOTIgbGVnYWN5LXRydW5rCiszNzAzOCBmNmZhNjQ5ZmM0YWY3NGQzZmQzYTM2NzVkMmYyMGYxY2E4MmVjZDQ5IGxlZ2FjeS10cnVuaworMzcwMzkgYTZjODAxNzBmYzUzODJmOTM5MjgxMjI4YjY4YzQwOTliNjlkNWZjZiByZWxlYXNlMjMtbWFpbnQKKzM3MDQwIDQ1MzZiMDMxNTE1NzdiOTU0ZWZjYTExMGMyN2FjYTgxYzMyMDExMzQgbGVnYWN5LXRydW5rCiszNzA0MSAxNzk3M2YyZTNlMGU4OTdjNzQ5ZGJiMjkxYzllNTY0M2YxOWM4N2Q3IGxlZ2FjeS10cnVuaworMzcwNDIgNjY2NTU3YzI5MjRkZmNmYjE2ZDJiNWFjNGEzZjRhMTMxMmFjM2FhMSByZWxlYXNlMjMtbWFpbnQKKzM3MDQzIGEyNTE0ZTJkMWM3NGUwNmQ5N2I2Zjc1NzE1YTAyNzIzMjMwMWZkOTQgbGVnYWN5LXRydW5rCiszNzA0NCBhYWQxMTg2NDM1OTg4YjJhYjljYjZkZThlOTkwZjhjNjAzMWI3NGYyIGxlZ2FjeS10cnVuaworMzcwNDUgMGQxNjI3YzQ0NzY5MGNhZmQzYmJlMDZlMzFkODcxYTNlZTI1MWU4NyBsZWdhY3ktdHJ1bmsKKzM3MDQ2IDI5NjVhZTk0YTIzZmUzNDFjYjdjMGQ5NWU4MmU3Y2Y1YTc1NWU0MTYgbGVnYWN5LXRydW5rCiszNzA0NyA0NDAxZGVhNzI0ZjBhZmMxNjUyNmFmZTAxMWM2NDU3NmFlYjUwNzdkIGxlZ2FjeS10cnVuaworMzcwNDggOGU5MTdiOWU3MGU3ZDdjODFlM2Q5MjVjZjhkNTMxMDFhOWRhM2U0MCBsZWdhY3ktdHJ1bmsKKzM3MDQ5IGZlYjUyNDdiYTBjODBiMjI2ODJlNThhNzJhODdlMjdhMzdhNjJmMjkgbGVnYWN5LXRydW5rCiszNzA1MCA0Yzc4ZmNiNjBkZjMwOTFjMTg4MDQ2NWNkNzQ2MTYwYzYyMTk3NzdmIGxlZ2FjeS10cnVuaworMzcwNTEgMzViYjYyYWM1NWZlZGE0YzJjNTdlM2ZlZTI2MjQzMzUwNWM1NjJhZCBsZWdhY3ktdHJ1bmsKKzM3MDUyIDBmZWNjZjE5YjE2ZDVjNGMwZGE0MTgzNmM3M2YzNDJhZDllNGRmZDkgbGVnYWN5LXRydW5rCiszNzA1MyBkZTgwNGVkZjhiY2Q1N2VlOWQwM2UyNGMxNTIyYTkzMjg0MTAzYTAxIGxlZ2FjeS10cnVuaworMzcwNTQgYjBmMjY4MWJjZjdmYTc0MGRkMTVjZGNiNzVhZWI5MjFiNGZkZDBiOSBsZWdhY3ktdHJ1bmsKKzM3MDU1IGVkYjg1M2VkNmM3OGIzNTA1MjY2OTM4YzFiZGRhMmY0NzIxYjExMmUgbGVnYWN5LXRydW5rCiszNzA1NiBiYmU2ODQ3NGU1MjIwZDc2ZjlkM2NkNTM3OTcyMDU2ZmU1Y2E4NTMyIGxlZ2FjeS10cnVuaworMzcwNTcgZDI4ODNjNDJjMjA0YzA0ZjI0NjdmZWY4N2Q4OTAxMmVjZTdkMGQxOCBsZWdhY3ktdHJ1bmsKKzM3MDU4IDA5NmRlNDU4MjdjN2I2NzRiZmVmZTZlMzUyN2NiMDI3ZDAzOTc1NmUgbGVnYWN5LXRydW5rCiszNzA1OSA3ZjU3YjNjN2ViYmZmY2I1ZThlOGRlNDEzYmEzZWVmYWVhMDA4ZThmIGxlZ2FjeS10cnVuaworMzcwNjAgOTM0YTVkYjliOTViNjEyMjlmZDhmYTdhYjhiMmI0ZGEwYjZiOWJhMSBsZWdhY3ktdHJ1bmsKKzM3MDYxIDdkYTkyMDFiYzhiNTMyYzZkYzM2OTk3YTI2NjcyMTVkYTVlMzg4Y2MgbGVnYWN5LXRydW5rCiszNzA2MiAwMTcyMjdlNDdjM2RlZjMxYjhjMDE4MTY2ZDhmMmFjZjdmMzJjYWU5IGxlZ2FjeS10cnVuaworMzcwNjMgZWE0ODc0ZTAyMWU4MGVhY2U2NGY4MTJmZGVhODc1MzlmYjFjNDQ1MiBsZWdhY3ktdHJ1bmsKKzM3MDY0IDI2NTYzMjA0NjYwY2JjYjhlMjQ0NDkzZDc5YmYwMmNkZWYwZDMwYzcgbGVnYWN5LXRydW5rCiszNzA2NSAzNDdkNzFjMGUwMThkZDE3OTE1MDUzNGEzN2IwODNmN2MwMzkzM2MzIGxlZ2FjeS10cnVuaworMzcwNjYgMWQwZjRjMDM1N2QwMDRmMjllZmIxNWI2NWE4NmZlZThiNDExOGE2ZSBsZWdhY3ktdHJ1bmsKKzM3MDY3IGVhYjIxZmJmOWE3MGY5NzBkZDlkMGIxZDA2NDgzOGZkODAxNDlhMTAgbGVnYWN5LXRydW5rCiszNzA2OCBjMThhY2E3ZTgxY2I1Zjc3NzY4ZWE5YzRiNGU4ZjFmNjU1MjExYzA1IGxlZ2FjeS10cnVuaworMzcwNjkgOTA1NjlhZTNlM2YzZjFjZGUxMGQ3YWZkNTdkODdhZmMzOWY0MjVhMSBsZWdhY3ktdHJ1bmsKKzM3MDcwIDY5NzAwNjg3ZTMwZjUxNWE2NDRhNDJjMDlhMTcwYjZiMTQxMWRkNjcgbGVnYWN5LXRydW5rCiszNzA3MSBiZWQ2MmYzOTlkYWMwYmY1NDcxZTI2ODllY2MzMjhlYTNmZTk5ODc3IHJlbGVhc2UyMy1tYWludAorMzcwNzIgMDQ4NjRjMzliMDA2MzMzZjMyYWMyNDllYTE4ZTI3NjM4NWI5OTM1NCBsZWdhY3ktdHJ1bmsKKzM3MDczIDM0YThkNzVlZGQyYjAzYTUxYTdiMTQxODExODc0MTRmNmNiMWI0NGEgbGVnYWN5LXRydW5rCiszNzA3NCAxNmRmZjMwZTY2ZWMwZTVkOGM4Yjc3OGRhY2RkMGVlN2FlMzBiMDc3IGxlZ2FjeS10cnVuaworMzcwNzUgYzliOTkzMDhiMGU4Y2JmOTBmNTg2ZjAyYzhjYTE5MTQ1NDYyMjQ0MSBsZWdhY3ktdHJ1bmsKKzM3MDc2IDk0MjMwZjZiNWViZTUyZjYzMmQxMjczMmRmNTRlYWQ3MDhiMDhhOGUgbGVnYWN5LXRydW5rCiszNzA3NyBkYjFiYWZhOWI2NTYxMzZiODdjZTdiYzEzMDQwNTE5Mzc0MjY4OTMyIGxlZ2FjeS10cnVuaworMzcwNzggZDk3NjVlYjU5ZWRkNzg1NWNiNjY0Y2QzYzI0MzcyNWEwZjJhMDdhNCBsZWdhY3ktdHJ1bmsKKzM3MDc5IDhkNzcxMzRhYWI4MmY0MDhlMjZiOGVhNzgwOTY0ZWUzMjZmOTc0ODcgbGVnYWN5LXRydW5rCiszNzA4MCA2Yjc0M2NiYzQxNzEwZTYyNjRlOGNmY2I0MjRjYmY5MTViZjMzMGZlIGxlZ2FjeS10cnVuaworMzcwODEgODI1MmU5ODljYmIxNWJmNDc2YjdhYTUyZjJmMDU0NGNmYWNiMThlNyBsZWdhY3ktdHJ1bmsKKzM3MDgyIDA2NmM3ODkwY2Q2MTU1MzBhYWFkM2FhMTk4NTk1YzIzYjEwNjFkZjggbGVnYWN5LXRydW5rCiszNzA4MyBkODYxYWE4NzQ1MjU1ODg3ZTFhNjNhODFjOTVmY2NjYmI3MGZmZTgyIGxlZ2FjeS10cnVuaworMzcwODQgMzIzNWU3MzliZGExMmVmMTg5NzdjMDhjYmIxODUxMDM4MmY4NDJmMyBsZWdhY3ktdHJ1bmsKKzM3MDg1IGFjZDliZjJlM2JjZjUxNTliZmZlZDc5OTI3OTQ1ZmJiZTFmOTU4ZjEgbGVnYWN5LXRydW5rCiszNzA4NiBlNjMwNGQ2NmQ5NDViNTY5NzlkMzg3Yjg5YTYxNDM2Y2I5OThkYWIzIHJlbGVhc2UyMy1tYWludAorMzcwODcgOGFiZDMyMmEwMTNhYjY4Y2RjYWE2ZGUzMTA0YjkzZWFkYjNmNzUwMyBsZWdhY3ktdHJ1bmsKKzM3MDg4IDg0OTMxMDgwZTA1Y2MzZjk5OThiNzU0YmM4OTIxZWU5OTE3Nzg2MTMgbGVnYWN5LXRydW5rCiszNzA4OSA1N2E2NmQ3MDBjN2NmYmFhNjZhM2I0N2NkYzZlZGEyYTNiNjA5ODg5IGxlZ2FjeS10cnVuaworMzcwOTAgMGE4ZDM5YWNhOThjNWZlY2NkZjdjOTE3NjFlNzQwNDdmMDgwZTRhMSByZWxlYXNlMjMtbWFpbnQKKzM3MDkxIGExY2Y0YTI5YWMzMDA3MDg3ZWE4OThmZTk5NjI1NmYxMTM4MjMwM2QgbGVnYWN5LXRydW5rCiszNzA5MiA0MGI1YWVlMjBiODMxNzJlZDM0YjQxYTgxNmZiYTdjYTYyOWIyMjkxIGxlZ2FjeS10cnVuaworMzcwOTMgN2ZlYzA2NjJjZjRhYTJkZGZlNGRiN2ZhMGE1NDk4ZGFlN2MwMTc0NyBsZWdhY3ktdHJ1bmsKKzM3MDk0IDljNTcwYWY1MzU2ZTdlMWI3NmQ5MWFhZTQwM2JjMDNjZTYzOGE3Y2YgbGVnYWN5LXRydW5rCiszNzA5NSBkZWE5OGVlZDhjZjBjOGFmZjM2Mjg0MTE3YzU4MzI0N2Y4OTNkYmE4IGxlZ2FjeS10cnVuaworMzcwOTYgNjk5NzZjZjU5MTQ5NWZlODRhZWNhOWU1YmY1NjUyMTRlZmQ4NDA0NSBsZWdhY3ktdHJ1bmsKKzM3MDk3IDc3ZDM2NDJlYjg3YmU3YTg3Mzk2ZjE0MTMxYmIyNzU4YjczMDYzN2IgbGVnYWN5LXRydW5rCiszNzA5OCBhYjM0OTgwZmZhMTY5MGE5NTNiZjMyMTBlM2JhNzNhZjU1YWRkYWM4IGxlZ2FjeS10cnVuaworMzcwOTkgZjlmNGIxOWRkNzU1ZDkwMWFiMTk1NzY3OTU1OTcxY2YzYjE1YzQxYiByZWxlYXNlMjMtbWFpbnQKKzM3MTAwIDIyYjYzZWQyZDViMjI3M2ZiZTllYTBjYjA5ODA0ZTc1ODcxZmQxZTggbGVnYWN5LXRydW5rCiszNzEwMSAyZTA5NjZkYmQ2NzhiMjhlYTg1ZDlmMzg4MTg5ZDkxMTlhMzhhMGViIGxlZ2FjeS10cnVuaworMzcxMDIgZjk4ZTU5ZjJmODlkMDkxZTQwYWVmNTZkYzRiNjM1MDk4MzYwNzNmZCBsZWdhY3ktdHJ1bmsKKzM3MTAzIGZiOTg2OTA0NGJiYTlmNzIxNzg5YWNlY2ZlZGZlOGM3Y2YwNjQ2NDAgbGVnYWN5LXRydW5rCiszNzEwNCA3MTQyNzkxNTc5NmVkYzFjMzM1Mjg4OWUwY2JlNWU4YWE1ODkwOWRiIGxlZ2FjeS10cnVuaworMzcxMDUgMmNhYTZmMTlhMmU2NmNlY2U4ZGIxYmIwYThhYTI5MWI0NDc0NTNmOCBsZWdhY3ktdHJ1bmsKKzM3MTA2IDU2MTcwMjM1MGUwOTgwN2IzYzUyOGNmOWJhMDI5OTBhYmJmNTU4MDkgbGVnYWN5LXRydW5rCiszNzEwNyBjZDJhOTVjZmM3ZWI0OGFhZjVmZmE0M2ZiMzQwN2VkMTcwNTYwODdlIGxlZ2FjeS10cnVuaworMzcxMDggMzk1YmIzNzQ2ZDFkNGUwNjY0NzgyNThmNzUwYjQwYzI1MDI4MmI3YSBsZWdhY3ktdHJ1bmsKKzM3MTA5IDg0YWNjNzdjMDZiODg4YTg2ZmE0OTFhMDAyZWUxNWNhNTQxMDkwN2EgbGVnYWN5LXRydW5rCiszNzExMCAwMzQ0MDI3MjAyOGM3OTczNGI5ODFmMmU1MWIyYWY1NzAxZjgxNjQzIGxlZ2FjeS10cnVuaworMzcxMTEgOThkYjA5ZmQ0NDNjZjY3YjVhZWIzZTZhMDhjMmMzYTJhN2RmYjUyZSBsZWdhY3ktdHJ1bmsKKzM3MTEyIDFmOWI5YzIyNmI0M2VkMjBjYjYxZTZkMjFhZWE2Y2I5NjZlOGJjZDMgbGVnYWN5LXRydW5rCiszNzExMyBjNjU0MzM0ZGM5NjE4ZWUwNWNmZjI1ODM3MzFiMWQwNWU2NWY2YTA5IGxlZ2FjeS10cnVuaworMzcxMTQgMTJlZjU2Zjg4YTkwYmU1MzY4YzI1YzUzNzMzNzM4YWU3NGYwN2JjZiBsZWdhY3ktdHJ1bmsKKzM3MTE1IDk1NzQ0YTQyMDhhMjcwYzA1YjljOTU0OGMxMTE2NTliYjBkODMyM2EgbGVnYWN5LXRydW5rCiszNzExNiAzNzdjNTE4ZDg0ODM0Mzk3NmI5Mjk0NzkwMTMyZjYzYTM4ZjFjNmYyIHJlbGVhc2UyMy1tYWludAorMzcxMTcgOGRkMzVmNWM3OTI4MmE3MjJiNjk1ODRlMThmMDZmMzk3MjAyNDE3MCByZWxlYXNlMjMtbWFpbnQKKzM3MTE4IGI0Y2I0OTgyOWQzZWVlZGIwZjRiMWMyNzcwNjg0ZWQ1ZDhmNWQ4MGMgbGVnYWN5LXRydW5rCiszNzExOSAzZmJkMmQxY2E1YmI2MGQzYTY3MDliMTdlYjljMWFmMDY2YTgxZDMzIGxlZ2FjeS10cnVuaworMzcxMjAgNjY0MWQwNTQyNTkyN2YyYWZhNmMxMDBlMGY0MjhlMzU1MjFjOWIxZCBsZWdhY3ktdHJ1bmsKKzM3MTIxIDExYTRmYmM4OGE4MDBjNWUxYTM0OGI3ZjVmZDQ5NjFiNjIzYjM1NGEgbGVnYWN5LXRydW5rCiszNzEyMiA5OTNmZDhhY2M5MGYyODQ3MzNhMDg4YTVkYTBkOGRhMzRhYzVlNmViIGxlZ2FjeS10cnVuaworMzcxMjMgYjYzYjMwODIxZWY0NzhkOTBlYjhhYWU3MDc0MjNlM2IzMjg3YzA3ZSBsZWdhY3ktdHJ1bmsKKzM3MTI0IDk2NWU5NmUxNTI5OTA1NjM3ZTdiZDVmMmYxN2I5YjgzNGMyNzM5YzIgbGVnYWN5LXRydW5rCiszNzEyNSAxY2Y3ZDcyMjVhOTk2Mzg3YzcwNjU2ODE4MTQ1ZmMxNTIyY2M5ZTk3IGxlZ2FjeS10cnVuaworMzcxMjYgN2ExZmIzMTZlNjU1MjJkMTZjNzY3NGE3ZmJmMmY4MDVjZTJiYmEzYSByZWxlYXNlMjMtbWFpbnQKKzM3MTI3IDhjZDU3Nzk2YTljZjgxMGJiZWQ4ZTE3NTQxZmUxNDNiMDY4ZDA1MDYgbGVnYWN5LXRydW5rCiszNzEyOCBmMTA3MmEzMGJiNTgxMDhlOGQ3NzZlN2ZhMTBjZDNkM2RiNzdmZmE2IHJlbGVhc2UyMy1tYWludAorMzcxMjkgYjA0NTA3MDE3MmNiMmY3NTllMzVjYTQzZDNjYTNmNWYxZjU5MWE5OSBsZWdhY3ktdHJ1bmsKKzM3MTMwIDRlOWVjYmY0N2I2YmE5N2M4Yjc1YzJhZTFlMzU0ZDA3Y2Q4MTgzYzkgbGVnYWN5LXRydW5rCiszNzEzMSBkNjc1ZTNlMGZlNzk2OGVjMTcwNjQ0ODgzMzJmY2JlYWQ3MzEzMTNlIGxlZ2FjeS10cnVuaworMzcxMzIgYTQ3ZjNkMmZmZDIyMTU0ZmY3OGRmOTVmYjYyOGY4YmQwNjNkMmM4MCBsZWdhY3ktdHJ1bmsKKzM3MTMzIDBlZDRmZDdhMGUyZTBmNTAzZjJkZWNiNzNkY2NjNDI0Yjc3NWRlNmYgbGVnYWN5LXRydW5rCiszNzEzNCAzMDE2NDcxYWU1NDg5YmJmOTg3OWMxZDczY2VjMmZiMGMwM2MyNmU0IGxlZ2FjeS10cnVuaworMzcxMzUgM2RiZGJkNTcyZDk0MTI5MjdlODgzNjUyMDMxMGUwNjYxMzVlZDkxMyBsZWdhY3ktdHJ1bmsKKzM3MTM2IGJhYzk5N2I3OWIxOTI1ZDZiODkyZDNmOGI0Y2Y5ODBiODMyN2U1ZjEgbGVnYWN5LXRydW5rCiszNzEzNyA0Y2E5ZmEyMzUzYmZhNDNiMzg2ZWRiZWQyYmQ5NDgwNGY1YmUzMDI1IGxlZ2FjeS10cnVuaworMzcxMzggMjcyNzcxOGU5ZThmNDI2NGZiNmQxN2ExN2RmMTk4ZTJiYTFjZjNkMCBsZWdhY3ktdHJ1bmsKKzM3MTM5IGExMmQ5ODRiZDk2MmQ5NTJkY2EwN2ZhNjRiNDliM2RiOWQ0OTRiMGUgbGVnYWN5LXRydW5rCiszNzE0MCA4ZDFiNGNkOGExMjQ1NGVmNmNhYTBhOWM1MDFjZDVlNWUyZWNkYjVkIGxlZ2FjeS10cnVuaworMzcxNDEgMGM3MzQ5MzJjNmY0MWVkMmQ1MGZlM2MwNjdjMjBiN2RiN2QyN2E0NSBsZWdhY3ktdHJ1bmsKKzM3MTQyIDJiMTM2NDQxMDM1YzgzM2VlNGJiMjVjYWE3OGMyYzAxZWM3OGRiOWMgbGVnYWN5LXRydW5rCiszNzE0MyBiMjVjYjIwNDVkYWNiMDk3ZGQxMTNlZThhZGQ3YzExMGFlNjc5NmE3IGxlZ2FjeS10cnVuaworMzcxNDQgODI2YWQ4OTZhN2E1YzM1YmEwNGI1MzcyN2M1MmJhN2QxMWYyNmQ1MyBsZWdhY3ktdHJ1bmsKKzM3MTQ1IDRhZmYxZmJjZTc1MjRmMWM0OGY4ZDEyYjE3MWIwZjk3NGZmNzEzMmYgbGVnYWN5LXRydW5rCiszNzE0NiBlZmY3NjZlMjljNTUyNWEwNzA1ZjJiZGU2YzVkYmU3ZTk5MmU2MjQwIGxlZ2FjeS10cnVuaworMzcxNDcgMjc0N2RiZDU5MzhiNTZmOGQ5NzUwMGVlZGY0NmEwMWJhNzY5NWZmNSBsZWdhY3ktdHJ1bmsKKzM3MTQ4IDM0NWZhYzY2ZGFhOWIxNzNkZmVkMmQ4YTM5MWFiYzE1YzU1NzQ4OTQgbGVnYWN5LXRydW5rCiszNzE0OSBlZTcwM2EwOTRkZmJkZjEwMGE5ZGJkOWMzNTAzN2RjZTY5MzJmM2U0IGxlZ2FjeS10cnVuaworMzcxNTAgZTU4NmNiZWNkZWJhNjI5MDMzZDc4NWQwMTUzMzUxNTQ2Nzk0NmIxZCBsZWdhY3ktdHJ1bmsKKzM3MTUxIDQ0OTE0MWFhMDExYzlhNDM2MTM3ZGM5OTk4MzE3YmI5NTEyOTU5MDcgbGVnYWN5LXRydW5rCiszNzE1MiA4YWFkNTI5NmZlYzk2MDM0NzA5NWUxYzQ3NWY4MDRjZjIwZjQ2Nzg5IGxlZ2FjeS10cnVuaworMzcxNTMgZmY4OGRhNDAwNzc4NTg5YzMyOTM4MmI5ZWZmZGVmMmUxNzZjOWYyZSBsZWdhY3ktdHJ1bmsKKzM3MTU0IDhkMjc2NTUxY2VhOTcyYTBiN2UxYzE3NDI2YTY0MjMzOGU2NTFmODQgbGVnYWN5LXRydW5rCiszNzE1NSA0YjAwYWUxZWZkZDg2ZGMzOTM0NTM0OTA0ZjVjZjI2NDk4ZTgwMDg5IGxlZ2FjeS10cnVuaworMzcxNTYgOGE0YzMwNTRhMzZjOTQ2ZjQ4MTM4ZGM2YWU4YjVmM2RlYjdiYWMzNSBsZWdhY3ktdHJ1bmsKKzM3MTU3IDVmYWI0ZjQzYjk0ZjczNzFiNWMwMGRhOTZiYzdlODg2NDRhYmEyMDggbGVnYWN5LXRydW5rCiszNzE1OCA2N2ZiYmViMWUyMTgxZTAwMmU0MTBhODRiYjk4Zjg5MWYyNTVlOTkxIGxlZ2FjeS10cnVuaworMzcxNTkgZTA3YTYyMzRiNzNiMWY0Nzc1ODBmYmNiMjdkYTI1MTU4YzYwMmYwMyBsZWdhY3ktdHJ1bmsKKzM3MTYwIDNlMjVkNmUzZGExOTQ4NWI5ZmY4YjA0OTFlODI3MTllM2E2Nzc3YWQgbGVnYWN5LXRydW5rCiszNzE2MSA5NmQ1Mzg0ODhhZWVhYzNiZmU2NjM5YTc5NDE0YjY3MDc0MWY5ZGU4IGxlZ2FjeS10cnVuaworMzcxNjIgYTM3YWU3ZGJhODE0YjczZmE1MzAxODY3YTVjNDZlYmJmNzI0MzI5NyBsZWdhY3ktdHJ1bmsKKzM3MTYzIGIyOTEwZTQ3OWYwN2IxMTAzMTQzNGIxMTU0NDY3MmNiYmZlMDNkMmYgbGVnYWN5LXRydW5rCiszNzE2NCA3N2RlMzg1MzRkMjYzMjg3NjQ2M2Q1YmVhYTk3OTYzODkwMzMwOTdhIGxlZ2FjeS10cnVuaworMzcxNjUgYjFjMjZlODljNDY0ZDZhODljNjdiYWNlZWUxNTk4ZTU5NGNhMDBlMyBsZWdhY3ktdHJ1bmsKKzM3MTY2IGUxOWIwMDk3NWQ1ZTg2MmYwYWVjOTgxNWYyNTM2YzM1OTk3ZWMzOTcgbGVnYWN5LXRydW5rCiszNzE2NyA1MjFiODc5NWRmOWJlNDg4MTAwMmExNzc5YmEzZTU1MDYxYmNiODczIGxlZ2FjeS10cnVuaworMzcxNjggNGIzMjQ4OWMzNGE3YTExZDViY2E4OTVhNjZmMTc0NDc1MDgyZmVkMyBsZWdhY3ktdHJ1bmsKKzM3MTY5IDc4YjU3OGM0Njc3MGU1MGU2MDI4ZmNiYmU3ZjU0MjY3MmM5ODA2NWQgbGVnYWN5LXRydW5rCiszNzE3MCA3ZjYxNzAyNTU2NWU4MGYwNzU1NWVlOTM3NzcyY2M2YWQ3NGIzNmEyIGxlZ2FjeS10cnVuaworMzcxNzEgY2QxNTY0MjMwOTQ3OGVkNWUwZGE2ZDM1MjQ2OTVkMzgxM2Y1MjhhNSBsZWdhY3ktdHJ1bmsKKzM3MTcyIGYyODA3MmU2NGY4MTc2NzQzZGMwMzhiYzNhZDRiZTUxMmI5MWQwZmUgbGVnYWN5LXRydW5rCiszNzE3MyA1OTgwNTAwMTdiNWU0MDFkMDIwMjEwYTFhYTQwZTNiNTM4Nzk4ZDUxIGxlZ2FjeS10cnVuaworMzcxNzQgODU3OTg1OWYxOThjNzhhYzE0M2VlNjdjY2NmOTJhNzY5ZDllYjUyNSBsZWdhY3ktdHJ1bmsKKzM3MTc1IDU5YmQxMjFlZWViNzFjNzVjZWY4YTNjODg1M2Y3ODhmMjUwODcyYTkgbGVnYWN5LXRydW5rCiszNzE3NiBiZjBlZjVmYzQ5ZjFlODc3MmE3ZmNkM2Q1Zjk5MTk1YTBmZDIzMzhmIGxlZ2FjeS10cnVuaworMzcxNzcgNTQyYTVlZmE0ODgzYmEyNjY4ZDVhMDQ0NDdmNDA3YjM0NjIzNDIxNiBsZWdhY3ktdHJ1bmsKKzM3MTc4IDJmNTJkZjE3Mzk1Mjk1YjY0MjYzMDM4YTBiYzc4ZTkxZjBmN2FmZTEgbGVnYWN5LXRydW5rCiszNzE3OSA5NmJiNDY2OTFlODYwNjMyZDIzMzk0YjNiYmNiMzgwMDVhMDY0M2Q1IGxlZ2FjeS10cnVuaworMzcxODAgMGIxODFiZjIzMGM5M2Y2NjE3YmI1MDNmYjRiMDViMTc4NzU1ZWQ3NCBsZWdhY3ktdHJ1bmsKKzM3MTgxIGNmMGVhMTk4NjlhZjVlYTY0OTdkMzU4OGE4ZDNhYWI0YmMxNDZiNTcgbGVnYWN5LXRydW5rCiszNzE4MiBiNTc2MTJmNjFiYTNmM2VkZTFhOTJlMjc1YmYwNzI1ZDE1ZWYzMDRhIGxlZ2FjeS10cnVuaworMzcxODMgNmQzYmRkMTliZWViMzk5NDZiYzY5MDgyODI3OGFjMzc1NmMyYjljYiBsZWdhY3ktdHJ1bmsKKzM3MTg0IGQ1YjA5NzYwOGM5ZGVjYWM1ZDIwODNjOGQ2N2Y4MTJiZDAwMzlmNmIgbGVnYWN5LXRydW5rCiszNzE4NSAzZWU1ZGVjMGNhMDdjY2MzNWZlMTJkMTk1NDBhYzZhM2E4YmI4NTg0IHJlbGVhc2UyMy1tYWludAorMzcxODYgMWJhNzQ2OWEzYjQ5YjRkMGQ0ZjJmZjFkNzIxZTdhMmE5Yjc4YjEzZSBsZWdhY3ktdHJ1bmsKKzM3MTg3IDAwYjg5YWI0NGNmZDdjZjQwZWYwZTQxYTRkMTA0ZDllZDMxNDE2ZDYgbGVnYWN5LXRydW5rCiszNzE4OCBhMjVhZjY4ZDcxZmM2ZDRkNzQ3YjEwMmFmMTE0YzRmMjk0ZWI3NWY4IGxlZ2FjeS10cnVuaworMzcxODkgMTc2OGFmZjkyODY0ZDY4YzhiZGU5Nzg1ZGVjNmMzMjIxMzA5ZTljMyBsZWdhY3ktdHJ1bmsKKzM3MTkwIDc4N2ZmZjUxYmYyYWFkMjgzM2E2M2VlOWY3NzgzNjA2MmEyNzA0MzYgbGVnYWN5LXRydW5rCiszNzE5MSA1NDUyZDRlY2RkZDBjNDdmZmRiMzI1MDRlZGMzODc0MTAxYWExZmMwIGxlZ2FjeS10cnVuaworMzcxOTIgZmVlNTkyZmI1NjQzNmQ5MjkxOTk4ODFjZDgwOTM3NWE4NjYxODA4NCBsZWdhY3ktdHJ1bmsKKzM3MTkzIDk3ZmNhNzM1YzhkYTZmOWRiMWE4ZTc4ZmYyYTk1NmU5MzFjZmEzZDIgbGVnYWN5LXRydW5rCiszNzE5NCAyMDg4MTUwNWMxNDI3MzkwZDdkZmFhNzU5Nzc3N2EwMjViMmE4M2RmIGxlZ2FjeS10cnVuaworMzcxOTUgZDUzOGVjZjBiYzY5ODRhZGNlZmI4MTcxNDY2NDYwNzAxYjJlNzIyMSBsZWdhY3ktdHJ1bmsKKzM3MTk2IDA2MjE3N2RlODY4NThhN2UwZmFlOTVjMjEwOWRmNWFmYTU4MGE1OWQgbGVnYWN5LXRydW5rCiszNzE5NyBmYzBiNDU3NTU3NDMyNzY1MTE4NTdhZWQzZTUwOWE3ZTMyNDVlNTBkIGxlZ2FjeS10cnVuaworMzcxOTggMDQyNDVlZjUzOTQ5YzFiZDMxMTE2NmQ0OWQ5ZTJlYzFiYzM5ZDcyMSBsZWdhY3ktdHJ1bmsKKzM3MTk5IDUwNWM5MDYzODUwZTRjNDNiMGFmNDE2Nzc3MTllM2I2NDczZmRiZWQgbGVnYWN5LXRydW5rCiszNzIwMCA4NGZiYWFhMjAzNThhNzBlZjEyZTMyNjcwMjRjNGE0ZGNhNjc1YmUxIGxlZ2FjeS10cnVuaworMzcyMDEgMDVjMTI1Yzk4NzY3MjA3NWI1NjlhM2ZkMjY0MmRlMTU2OGI1OWM1NCBsZWdhY3ktdHJ1bmsKKzM3MjAyIDAwZTYxOTg1MWE1Njk3NDhhZDQ3YmEyNjAzNmM0NTI3NzI0M2QzZDYgbGVnYWN5LXRydW5rCiszNzIwMyBiN2FjYjk3MGY1MzY1MTNkM2U0ZjEyMzE4ZGJkMGE2ZWNlMGUyMmMxIGxlZ2FjeS10cnVuaworMzcyMDQgZjMwOTkzZDA1ODkwOGViMGI3YWUzZTE5YTc5ZjViOTU4YmQwZGNjZSBsZWdhY3ktdHJ1bmsKKzM3MjA1IDY4ZTY4ZWQ0NmYwZTlhZjc0MmJhMDMxZGY0ZWRhY2U0MjI4ZTA1MDIgbGVnYWN5LXRydW5rCiszNzIwNiBkOWUwMzkzOGEzMzNiZGI5NTQyZGY1MzI1ZDc4MTljOTM3ZDYzZTAxIGxlZ2FjeS10cnVuaworMzcyMDcgZDVjMzRkYmMzNjE4MmY5ZmU1NGZhOWQwYmIyM2NiZGU4NmRkYmMwYiBsZWdhY3ktdHJ1bmsKKzM3MjA4IDBhNzlkN2E5MDQwYzc2OWFmYzVlYjkzNDRkMGMwZWViOTkxODY5YWYgbGVnYWN5LXRydW5rCiszNzIwOSBlNWI0ZmU5N2Y3NGQxNTg2YjE5MDVmNjVlYWM4ZTc1NzA2MGJlYTBlIGxlZ2FjeS10cnVuaworMzcyMTAgMWE1NGZjZjQ4ZmU0ZTY0NGZlMThhYjFhNTY3YjQyZDQ4NzgwNDUyZSBsZWdhY3ktdHJ1bmsKKzM3MjExIGRhZDgyNzc5NDc0NWNiY2NkNDExY2U4NDgwZjU1MjM0ODk0ZmNmNzEgbGVnYWN5LXRydW5rCiszNzIxMiBhZGM2NmQzMTRjNzhlZDE2ZGVhMTFlNDQ1ZThhYmEzMzY2YjUyNTA2IGxlZ2FjeS10cnVuaworMzcyMTMgZGRiYTE1NGMwZTAwMGFjNDU2YjBlNzNlNTU5ODhjNDc1ZmJhOTg5YiBsZWdhY3ktdHJ1bmsKKzM3MjE0IGM0NGYwODM0NjVmOWM1YWVlMWFhM2M2MjA2OGVmZmFjNzUwZDZlNWEgbGVnYWN5LXRydW5rCiszNzIxNSBjZmE3MmE4ZGUxNDM5OTBjYWFlYmFlYWNkNDI2ZDlhZTNlOGUzNTMwIGxlZ2FjeS10cnVuaworMzcyMTYgMTI4ZDUyODQ1N2RhNTY1Zjk2ZDlkY2YxZjY0NGE0YjMzNjVlYjFjYyBsZWdhY3ktdHJ1bmsKKzM3MjE3IGY3NDc0ZDMxYmEzZmE5YmYwYzUwNzk5NDQ2ZjliZjI3MTliZjRkNmMgbGVnYWN5LXRydW5rCiszNzIxOCAyM2RmNmNmMjk2NTBkNDVhYWUxYzZiNjJhN2Y5ZWU1NWJiMmI4MmQ0IGxlZ2FjeS10cnVuaworMzcyMTkgOTk5ZDMxY2E4YTE5ZjdkZTA3MTZiM2Y3YjgzYmIzMGUwNTE3NzYwYiBsZWdhY3ktdHJ1bmsKKzM3MjIwIGU1NjE5MmU5ZmQ3ZTdlNDkzZmIwMDI1YTZiZTFlMmU3ZTE2ZjlmOGMgbGVnYWN5LXRydW5rCiszNzIyMSAxZGZjOTdlMmFjZGZlNGVkMDcwZjlhMjhjZGZkMzc3NTFjMWEyNGUyIGxlZ2FjeS10cnVuaworMzcyMjIgOTYwNDAyNTA2OTQwNzJiYjk3ZDgwZWM0ODliMmFhOTI5NWIwZDAyNyBsZWdhY3ktdHJ1bmsKKzM3MjIzIGM5YTgyZTliN2I0ZDE4NTE2ZWEyY2MwZDI0ZThjNWM5Y2NiNGJmMzQgbGVnYWN5LXRydW5rCiszNzIyNCBhNmVhYzNmZTU0MmY5MzBjOGU2MTMxNTkzYjRmM2VjYWIwY2U3YmZjIGxlZ2FjeS10cnVuaworMzcyMjUgMDNiZTA2YmNhMTYwZmJjOWM5YjU4YTgzMTNiZTE1MzQ2Mjk0Y2Q5MyBsZWdhY3ktdHJ1bmsKKzM3MjI2IDI2OGM1ZjgzZmI4NzdhYTQxNzAzZWIzYmVkNTg4OGI4ZTQ4NGEyMzkgbGVnYWN5LXRydW5rCiszNzIyNyAyNmU0MjExODY1ZWQ3YjM5MGY0ZTk0MTEyODlhNmZmZDU2NmU3M2NiIHJlbGVhc2UyMy1tYWludAorMzcyMjggMGY1M2JhMTU5ZTU0ZTIxZWY1NTdjMDQ2ODRjOGU2NmZlZjc0NmYwNCBsZWdhY3ktdHJ1bmsKKzM3MjI5IGIxMGI3YjdhZmMwMGQ5YjA4Y2U4MzM5M2JkNDIwNGEwNTY5NDUzNGEgbGVnYWN5LXRydW5rCiszNzIzMCAzNTQwZTEwNTI1YTFhZWM2N2JiMTYwM2JmODhhMWM1ODg3YmIxNzIyIGxlZ2FjeS10cnVuaworMzcyMzEgZDBjMDFlMGZlMjQ5Njc1N2RjYjZmZjBiODVhZWUxYzNjOTg3YmQzZSBsZWdhY3ktdHJ1bmsKKzM3MjMyIGQ0MTI1NmE2ZjJjZWNjZWNkMjAzMTRiYjM0NGRkNTMxMmY2Nzc0OTMgbGVnYWN5LXRydW5rCiszNzIzMyA1ZjBjN2Y1Y2E2ZjlmMTE5NDExMWI4Nzk3NTgzNzMzMmIyYWNiMjgwIGxlZ2FjeS10cnVuaworMzcyMzQgYWY2NTAwNGY2MjJmYTBkODhlY2EwMzM3ZmFkNzA2MjVhMDYxM2MxOSBsZWdhY3ktdHJ1bmsKKzM3MjM1IGFkNDNkZjE5Nzg0YzVlNDRkMTc0ZTEzNzlhZjZjNzZkYTAzZTllMTcgbGVnYWN5LXRydW5rCiszNzIzNiBiMjBkNDU1NTg2NTM2ZDM0MmNmN2EyZTcxNTY4NDBmNzlmNWI0Zjc1IGxlZ2FjeS10cnVuaworMzcyMzcgNzZhOWJkYTMwMjhlODZkYTQ4YWFmYzU1ODAzODU5YzJhOTBmMjVkNiBsZWdhY3ktdHJ1bmsKKzM3MjM4IGFkYTJhNjZiODZhNGExN2I4NTFjMWVkMDRhNTk2MTNiMzRhOWUxMDMgbGVnYWN5LXRydW5rCiszNzIzOSAxMjQ2NDIyMjAzZTg3ODY1MmM1MDBkYTkwYjQxZTY0OWRhNDM3NmVjIGxlZ2FjeS10cnVuaworMzcyNDAgOTQ2NWZlNjc4MjIyNjY0M2Q2YzU3ZWQ1MTViMmM1ZDk3ZWZlNzY3MSBsZWdhY3ktdHJ1bmsKKzM3MjQxIGFlZTJlZTc0NWYyYzVkOThkODZjMDYyNzNlNjliYmY5NzMxMzFhZGUgbGVnYWN5LXRydW5rCiszNzI0MiA3NTUxYzcyNWZlOTZhMDFhMjQwNjkyODZkMmM5Y2U4NmY5ZGZmYTQzIGxlZ2FjeS10cnVuaworMzcyNDMgZmI2MTQwMzE4MGE4NWM0NzY5MGE1ZGI1NDk3NDc5ZjA2MDMzMDRlMiBsZWdhY3ktdHJ1bmsKKzM3MjQ0IGJmZmQ0OTQzNTRlZTcwMmExYjY5OTQzMzM2Zjk0MjJlNDQ2NDYxY2EgbGVnYWN5LXRydW5rCiszNzI0NSBmMDA1M2E2YTJiZWRkZGI5OTYzZDk3ZDljNjQ0YTBlYmJkOTVmNDQxIGxlZ2FjeS10cnVuaworMzcyNDYgM2UwNjI4OTdkMmU3YTkxMDczNDYyZDNjYzA5NzZhZWNiNjhmMTZlMiBsZWdhY3ktdHJ1bmsKKzM3MjQ3IGRmNDc3MGI3Y2FlZmI0N2I5OTk4MTRjMWJiZjdjOWFhZmJhZmFkYzUgbGVnYWN5LXRydW5rCiszNzI0OCA0Mzg1MmM5NjMxNjA0MTQ5MjcxZDQ0NzQ0OTY0MTlmYmIzOWNiM2MwIGxlZ2FjeS10cnVuaworMzcyNDkgOWYyZGRkZTkzYTYzOTVkNjJkYzcyM2Q1Y2ZjNjIwODVhYzYzYTZjNiBsZWdhY3ktdHJ1bmsKKzM3MjUwIGMyYzQ5ZWU3MjdkMGRkMzQ3N2I4OGQ5YWQwNWI0ZDk5ODcxNDBlNGUgbGVnYWN5LXRydW5rCiszNzI1MSA5NDNjMjJhN2M3MDFiMjczMGJiNWVhOWUyNmNhOGFjNjVkZTNjMThhIGxlZ2FjeS10cnVuaworMzcyNTIgMTEwMDYwNTg3MGZlYjhjN2E4YzEyNGMwMTg3ODE0YTAzODU5ZWYwOCBsZWdhY3ktdHJ1bmsKKzM3MjUzIGM5MTY4ZTc5ZWY0Y2MyZGIyZWQxZjgwZmQ3YWYwMTk4YWIzNjI3NzAgbGVnYWN5LXRydW5rCiszNzI1NCBkMTEzYzYxMzU2N2E5ZTUyYzA3YzQ4OWRiNjhmM2M2MDUwNTAzNjIzIGxlZ2FjeS10cnVuaworMzcyNTUgMjI4MTE0MGQyMGM3NWMzZTJkMDg3N2ZhYzNlN2VhNDY4NjkxNGU5ZCByZWxlYXNlMjMtbWFpbnQKKzM3MjU2IGY4M2M1YTg1NzlmODQ4YjdhMDU5YzM1YjE2NmIxNmU0NDFjMWJjNTIgbGVnYWN5LXRydW5rCiszNzI1NyBlYjliMzgwMjUzYzk5ZDIwMzViZmFmMDI1OWYxNTkxMDdkN2ZlYzVlIGxlZ2FjeS10cnVuaworMzcyNTcgMTg2YjcyNTUwZTUzNTMzZWY2MTc1ZjY0MTFmOTMyYzEyOTgxOTNkNyBsZWdhY3ktdHJ1bmsKKzM3MjU5IGIxNGY3ZWUyNWQ1MGE5MzRmZDUyY2YxNWI5OGFkZTY3ODZkOWI4MGQgbGVnYWN5LXRydW5rCiszNzI2MCA1MzQ2OTNiYjAxMGJjMmY5YmU2N2MwZDEwMmIzMWU3NWNmZjYxODJhIGxlZ2FjeS10cnVuaworMzcyNjEgOThjODAxN2U4NTM1YjkyN2VlMWM2YWIzOTZhZDgyYWRkMDIwZmQ0MiBsZWdhY3ktdHJ1bmsKKzM3MjYyIGQxZjhjNjMyYjYwNWE1ZmI2MGEwYzRjN2U3ODMxOTU0OTAzMDk4NjUgbGVnYWN5LXRydW5rCiszNzI2MyAzZmE3OWNjOWRhNWRhMjkwZTEwNDI3NDRhYTk3ZTU0NjQ5NjVhZTRmIGxlZ2FjeS10cnVuaworMzcyNjQgYjk5NDUzMzVkYTI3MmMyODYzMWRlNWI5ZjBiM2I1NTkyM2MwZGM5ZCBsZWdhY3ktdHJ1bmsKKzM3MjY1IDQ3NDVmODQ3Y2ZhMTQ1MTQ1NTFkODI4ZTM0YjYzM2E3YTZjZmMxM2IgbGVnYWN5LXRydW5rCiszNzI2NiBkZjFjZDQwNzIxNzdkZDJlNTZmZWExMTRmMTM5MDc4Mjg2ZGEyOTRjIHJlbGVhc2UyMy1tYWludAorMzcyNjcgNWVkNTY0OTNmMGIwMTYwMzUzYjJjNTdhNDdlZmU5NzZiZDQ3MDVmMyBsZWdhY3ktdHJ1bmsKKzM3MjY4IDk3YzIwN2RiOTBhMWQwN2RiNjllYmI4NGY1OTJiNDA0ZTAwMWZhMGIgbGVnYWN5LXRydW5rCiszNzI2OSAyMWM3OTM0MGRlZDVkZTAwMzhlYmI3OGRiMzBjYjBmMTlkOTg3N2JmIGxlZ2FjeS10cnVuaworMzcyNzAgNDgzYzBiNGI2MzMyOGYyOWU3OWU3OTViYzhlOTgxODMxYmRiNzE0NSBsZWdhY3ktdHJ1bmsKKzM3MjcxIDZmZjFhNWJjZGYyMmQ0MzA0ZTU5ZWUxM2Y1MGMxOTFiYmNhNjUzOGIgbGVnYWN5LXRydW5rCiszNzI3MiAwNzg0NTU2ODI4NzU3MmUwOGZmYTY3MDhhN2E1YTRjYzA0MmQ3ZjY2IGxlZ2FjeS10cnVuaworMzcyNzMgOGUyM2JkM2Q1YjFhNzBmYWFlYzA4M2E3ZWRmZWRmZjA5MjFmOTQ4OCBsZWdhY3ktdHJ1bmsKKzM3Mjc0IGZjMmNlNTgwMjE2YzhkY2VlZGFlODBhZDdhMmNlMjdkMmY0NWYwMzUgbGVnYWN5LXRydW5rCiszNzI3NSAxMzZiMzg4NTY5YTBjNDYwYzYzODg5MmFhZWM5MjA3OTJkNmY5YWJkIGxlZ2FjeS10cnVuaworMzcyNzYgYzA5MzE4YjAwOTBkNmI5N2I1NWIyMDRjMjY5OGQ0YTE0NDBmM2M5OCBsZWdhY3ktdHJ1bmsKKzM3Mjc3IGUxYWIyYzEyY2Q1ZWYyNWYwZDE4OWQwYzBiNjAxOGI3NjUwZDQ1ZjMgbGVnYWN5LXRydW5rCiszNzI3OCA4MzgxZDA3M2FkMzg2YjMxM2M0ODE0NGUyYWU4YWU4MzIwZjBmYWM2IGxlZ2FjeS10cnVuaworMzcyNzkgZGM5N2Y1ODFmMjMzNDExNjQzNDhlNGFiM2RmMDY1MjliNzMwMDgxMyBsZWdhY3ktdHJ1bmsKKzM3MjgwIDViNmZiYTY0NTRhMDlhYTg3MGNlYjg4ZTM2ZWFmMzA1MzgxMGRlNmUgcmVsZWFzZTIzLW1haW50CiszNzI4MSBhZDAwZjdjMGFkMDc0MjZlZDMyMmIwN2JhZTIzMWQ1NjgwNDM5YWZhIHJlbGVhc2UyMy1tYWludAorMzcyODIgNzY3YTM4ZGNiMzAwOTQ0NmZlZWYzYmZjYzU0ZThkNjg5YTJmNjIzMCBsZWdhY3ktdHJ1bmsKKzM3MjgzIGQ5YTMzZWNiYzdmMjhhYWFiMDcxNjdhOWIyMWE1OTFhOGRlNTJhMGEgbGVnYWN5LXRydW5rCiszNzI4NCAzMGUyNzM4NDFiYWUwYjM4ZDA2OGUyYmIwZmU1Y2RlOGM1NTY2NDI2IGxlZ2FjeS10cnVuaworMzcyODUgYjZlODc1YWE1MDhiZjgyMDFkNzUzZjM1ODViOTMzMTc0ZWU3MmNiNCBsZWdhY3ktdHJ1bmsKKzM3Mjg2IDcxMDgzYTE3MjVjYmU3ODdjYmU1YjIwYzg0NDU1ODgzNzkwYzNmNjkgbGVnYWN5LXRydW5rCiszNzI4NyBiNWY2MTE4MzE3ZDBkMDE1ZGE1OTFkYTc0NDc4ZTk3MTMyNzU5YzlkIGxlZ2FjeS10cnVuaworMzcyODggNjkzMjk0M2RlNmIxZjU5YmY3NjVmOTY1ZDdmNzhhY2NkOTU1MDAyMSBsZWdhY3ktdHJ1bmsKKzM3Mjg5IDNhZmI2N2Q5NzQyYjdkY2Y2MjQ1ZjE3MWExOTRiZjdlNGUzYzk3OGIgbGVnYWN5LXRydW5rCiszNzI5MCBhYjYyZjc2Y2E4ZTJjYzM4NjVmY2VmYmVmZWJmOTY5NWI2ZDVlOTk2IGxlZ2FjeS10cnVuaworMzcyOTEgODQ4MGI3MmFhNjI0ZGEzMzg4MjM1NzRhMzMxM2I4ZWJhNjM4MGU5OSBsZWdhY3ktdHJ1bmsKKzM3MjkyIDU3NDc4YTEzZmJmNjQ0ZDUwM2RhNjZiMjkxMTFkYjJmOTYwYzI5YjMgbGVnYWN5LXRydW5rCiszNzI5MyAyMTM4M2ZiMWE4ZjI5MWNjYjk3ZDEzMjk3MWY3NDdhYzdiYWUyZDA3IGxlZ2FjeS10cnVuaworMzcyOTQgOTZkM2VmYjk0MGNmMzQzYzIxYjM5NTgyMDRjZjI4NmI4NzcwODFkNyBsZWdhY3ktdHJ1bmsKKzM3Mjk1IGNkMDcwZmZjODkyZDE0MDAyOWRkNjJiNTFjMDM1OGQyNTFhODgwMGYgbGVnYWN5LXRydW5rCiszNzI5NiA0YjcwOGZhMGE2MGFiNWQxNzJiODdiNTEzZjYzYTI1MGVlNTExOTIyIGxlZ2FjeS10cnVuaworMzcyOTcgMDZhYmRjZDU3ZmE4ZDM5YzA4Y2QzNzk5Y2NiN2YzYzQxZDIzNjQ0NyBsZWdhY3ktdHJ1bmsKKzM3Mjk4IDY4NTM4ZTEyNGVlMGE5YjNmZTYzMThmNmIwZDZjNTE0MTg3MjRmOTQgbGVnYWN5LXRydW5rCiszNzI5OSAzMDY5N2Y0NDYyODZkMDkxZTk5ZWZmODhjZWIyNDA1ZTlhODZjM2M0IGxlZ2FjeS10cnVuaworMzczMDAgODk3YTM2M2YwZTg2ZmFhN2MwNWZiZWM5MDAxNTA4MGU5OWRlZWNlYSBsZWdhY3ktdHJ1bmsKKzM3MzAxIGZhYzJhNTM5MDZmMTcwNTA2NWE5ZmQwODYzMTdhZGMxYjhjOWE1ODcgbGVnYWN5LXRydW5rCiszNzMwMiBhMjQzMjk2Nzg2Y2U3ODQwMTIwZTUzNzczZDE0NGViNWE2NDE4YzZjIGxlZ2FjeS10cnVuaworMzczMDMgNjI5MjAwZDg4MGVhMjhiYWNkYzE3NWRmMjE2YWFmYjU5MWViNDdlZCBsZWdhY3ktdHJ1bmsKKzM3MzA0IDViMzFiNGMzYjdiYWM1ZDQxYzBhMTMwYTk1NTM3MDE2NWMzOWU1OWYgbGVnYWN5LXRydW5rCiszNzMwNSBlNDQ4OWQ1NmYxMDkwMjA3NDcyOGM1YmY0ZjA4ZjE5YTI5NDU5OGM1IGxlZ2FjeS10cnVuaworMzczMDYgNGRhYTdjNzI1YTc5OGVlY2E4Nzg4MzJjNmZhMjZjNDU1MmZlOWQwMCBsZWdhY3ktdHJ1bmsKKzM3MzA3IGYyNGE3ZmEzOGY0ZjkxYmVmYjc4ZWU0ZjQ4OTRkZWZiMGMyMzBlYmIgbGVnYWN5LXRydW5rCiszNzMwOCA3YmY0M2JlODI5ZjdlN2E0ZGU0NDliZWFlZDgxN2ZkOWU2YmZhNzJjIGxlZ2FjeS10cnVuaworMzczMDkgY2FkY2JmOTYyYTFmZDY3YTQyYzE2YWQ3M2M0NzU5YzdmMmM3NGZhNiBsZWdhY3ktdHJ1bmsKKzM3MzEwIDY4OGQ5ODFjNjIzNGIxMzQ1NWE2NjlhOGZmZTU0NWQzNDY2NzhmMGYgbGVnYWN5LXRydW5rCiszNzMxMSA2NGQ0ZTc5NmIzZGYxMjZlNjQzM2YyOGEwNTY1ZmY1ZTY4YjExN2JkIGxlZ2FjeS10cnVuaworMzczMTIgNTU3MGZhZTFmMDFjZDA1M2EyZDcxY2JlZGNkNzdjN2UxOWU2ZTk3MSBsZWdhY3ktdHJ1bmsKKzM3MzEzIDMyNDY5M2VmMzIwYTU4NzY0NWIxMjU4OGFiM2NhMmExYTExNThiN2UgbGVnYWN5LXRydW5rCiszNzMxNCA4MTYxOGE3ZDQ5MGU3MWQ4MTlkNGZiOGUwZmU5Njc3ZTliNDU5NDZlIGxlZ2FjeS10cnVuaworMzczMTUgMjVmYjllNWY1ZjQ1MzMzMzA3YWI5ZWE0NTQ1YzM4NzNhZjRjMTBlYyBsZWdhY3ktdHJ1bmsKKzM3MzE2IGU4MzA5M2FiYzk1OGQwNGZjNWUzOTM5NTUzNDFmMmQ1ZTRmMmRlYmUgcmVsZWFzZTIzLW1haW50CiszNzMxNyA3YTc1MTZlNmZlYjJmNWYxM2FiNmVmODk3MDUxNWY4YjIyMjQ3Mjg3IHJlbGVhc2UyMi1tYWludAorMzczMTggM2RhYTY2MzNmMDE3ZWY0N2Y2OGZiMDA4Y2QwNWQxNWYzZDA2ZTczMyBsZWdhY3ktdHJ1bmsKKzM3MzE5IDllM2M1MmNhM2EwNGQzZjEyMWYyYjNmZGNiNzQzZWE1MzU0YjY0ZjMgbGVnYWN5LXRydW5rCiszNzMyMCA0ODcyODBjZjcxYjk1ZDAyMTlhODM1NTU5YTQwM2RjOGM4M2NiMThiIGxlZ2FjeS10cnVuaworMzczMjEgMDE2ZDcwMTZjNmM2M2Q1MDVmOTE5MDg0NTUxMmU4ODMyMzRhYTNkOSBsZWdhY3ktdHJ1bmsKKzM3MzIyIDkxYzg3Y2VhNzc2NzExNjBkYTkwMzNkNzYzYzlhMWRhNmY2ZTE3MDYgbGVnYWN5LXRydW5rCiszNzMyMyA5NDk3YzU4MTI2YmU0MDBhZmFhN2QyN2ZkYTlhNmRkNjFiYTc1YmYxIGxlZ2FjeS10cnVuaworMzczMjQgZGNlNjI0OTMzYzM4N2VjMzNiOWNmZjM3ZWY0NjU5ZmUyNjg2YTRjNiBsZWdhY3ktdHJ1bmsKKzM3MzI1IGM4ODI1YTc0ZTQyMWYxZmIzZWM5YWNhZDBkMzgzZDU1ZTY5YmMwODAgbGVnYWN5LXRydW5rCiszNzMyNiA1ODc2NjM2Y2E4YzZjY2ZiMTQwMjQ1MzVhODIyNWZiODBiN2VkNmE5IGxlZ2FjeS10cnVuaworMzczMjcgMjhlZjVmZTBiOGI1ZGUzMTg5ODQ0NGE4NzJkZGUxMWI1NjBlYmQ5NiBsZWdhY3ktdHJ1bmsKKzM3MzI4IGQ4YTI2MWE3NzAyODNiMDMxNGFkNzhlY2Q4MGQ0YjkzYjM4NjEyN2IgbGVnYWN5LXRydW5rCiszNzMyOSBlYjUxNzI4ZWQxMWYwZTMwOGZmMDU1Y2M3YjkyMWU1Yjk1ZWNmYzk1IGxlZ2FjeS10cnVuaworMzczMzAgNDc3Y2QwZjYyMmI5ZWRhZWIxZDE0ZTcyODllMjE4YzM4MmY0ZTQ4MSBsZWdhY3ktdHJ1bmsKKzM3MzMxIGUyM2NhOTRlZDhlZGIxZjFkNzMxMzhiYjAwZGNiMTE4NGEwYmEzZDkgbGVnYWN5LXRydW5rCiszNzMzMiBhMDQ1MTVhOTg4MzE1OTJlMjA4ZTU2N2VkNmJmMTEyYzExNGJiYjIwIGxlZ2FjeS10cnVuaworMzczMzMgOTI1Y2Y5YjMyODViZmI4YTM5MTdjOTc2ZmZlYjcwZTI4ZWM3NjIxMCBsZWdhY3ktdHJ1bmsKKzM3MzM0IDc0NzNhMTk1ZDIyMzEyMjM4MjBkNDkzMGIyYjdkNDQ0YzJjOTgwNjMgbGVnYWN5LXRydW5rCiszNzMzNSA0MWRiZWU1ZWQyOTU4NmNiOTg0M2YwYzEwZDhlYzQ3MDk2ZDkzNDVkIGxlZ2FjeS10cnVuaworMzczMzYgMzY3NjdmZTI0MjUyYjE0ZGExNGMwNTMxOWE1MzMwNDE3MmM1YmY3OSBsZWdhY3ktdHJ1bmsKKzM3MzM3IDNmODZmMmJiOWI1NmU4NDczYzQ4MjA0MjNkMjI1ZmU1YmU2Njk5NWMgbGVnYWN5LXRydW5rCiszNzMzOCA3ZmQyMmVjZGM5ZGIwOTAzNTBkMjRkODc2OWEwZjI2MDY1ODdlNjA5IGxlZ2FjeS10cnVuaworMzczMzkgNGQxNjc4NWJhNWRjMWM0YmZkN2IxYTUyMTM1NWNkMjM2ZTcwY2E3OCBsZWdhY3ktdHJ1bmsKKzM3MzQwIGU4MDhjZDMxZmJkYzZhMDllYTFmMzFmZjExYjdlNjUzNGIxYzRmOTYgbGVnYWN5LXRydW5rCiszNzM0MSBhMjIwMDczNTM2ZDY5YTc1MmU3YWRhODI1YzMzZWQ0OTYwMWExZWJiIGxlZ2FjeS10cnVuaworMzczNDIgMWIzYWM2NzRhNTdjYmZmYjMzZGM2Njg5NzgyMWE5ZjEyMDlhN2FhYyBsZWdhY3ktdHJ1bmsKKzM3MzQzIGI4N2VhYTQ2YzljYmYxZGU1NTc2YTAxZDc3ZWU2NGQxNzBlMmZmYmYgbGVnYWN5LXRydW5rCiszNzM0NCA1MzczYTVhZWI4MDAyMmIzZWQzMGViMzA4MjgzNjQ4MTViY2E3YmI1IGxlZ2FjeS10cnVuaworMzczNDUgZWFjZGMyOTYwNmQ4MTQ0OTJlNzgzYmJkNjllMTdiOGY4ZTU0ZGVjZCBsZWdhY3ktdHJ1bmsKKzM3MzQ2IDI2MjM2NjhjNWZmNWI0ZDYwODZmYWY4YmY3MjM5OGM5MGYyZTg2OTIgbGVnYWN5LXRydW5rCiszNzM0NyBjOTNkMmJlYzY4YmVjNDhjNWRhNjIyN2RlYjA5YWJmNDc3MDYwNmZjIGxlZ2FjeS10cnVuaworMzczNDggMThjN2MxN2NjZjg2MzE1NzU0ZmZmNjlkZDg3NmQwNjhlZTEwYjcyMCBsZWdhY3ktdHJ1bmsKKzM3MzQ5IDgyM2Q2NDViMzJiZmUzZjM2ZjRjOTY3MGU3ODFlNGNhMWJjMjIwYWEgbGVnYWN5LXRydW5rCiszNzM1MCA1M2MxMzU3YzljNjNkNTRlODJiYmI1MGZjNDlmOTAzNGYyMmZiMTE5IGxlZ2FjeS10cnVuaworMzczNTEgY2ZiMmY1ZTA5NzQwOTM2Njc3MjRmZjY1MzgxZGIwOGM0NjAxODRlYiBsZWdhY3ktdHJ1bmsKKzM3MzUyIDcxZWQ0YjM1ZmRjNDg4NzZkMWFiZTkxMzljOGU4NmU3MWU5OWY0MDAgbGVnYWN5LXRydW5rCiszNzM1MyA0Y2IxMDE2NTI1YjdkZWY1YmQ2NjlmNzIwYmFjYWI1ZWRiODBmZTcwIGxlZ2FjeS10cnVuaworMzczNTQgNzM4NWJhMjY4MGViNzFiZjc5ZmM1ODVjMjkxMWM1NTZlYzkzZTIzMiBsZWdhY3ktdHJ1bmsKKzM3MzU1IDBjMjk5Y2FiZjRmMDZjODQ3ZGE1MjQzYjY0ZWIyYjUwMjcwYzE3ZGIgbGVnYWN5LXRydW5rCiszNzM1NiAyOTRkMzcwZTQzZDE0ZGQ5MTU0YmM3ZWUyOTFiOWRiNDRkNTg3ODRhIGxlZ2FjeS10cnVuaworMzczNTcgNDMzNjA2ZTk1NDZjMzViOGU2YjgzZTg2YzY4OThmMWMyNGQ4NWU3OCBsZWdhY3ktdHJ1bmsKKzM3MzU4IGQ5ODRjYjdlMjM1MjM2ZmE3ZmY2ZTYwNjI4NTMwYTAxZDU0YTRmMjQgbGVnYWN5LXRydW5rCiszNzM1OSAyZDZlMTg1NDA4MmU5NDg1NDAwOTQwM2NkNTYxOWJlMDdmOThjYmYyIGxlZ2FjeS10cnVuaworMzczNjAgOWUyYjk0YTNiNWRjYzBmMThmYjkzZDVkZDBmYjQ0NWQ5ODE2YmQzNSBsZWdhY3ktdHJ1bmsKKzM3MzYxIGMzYWI2ZjQwYjZlOGJiMmFhMzMxODY0NDgxOTVlYTE5ZGZiMjI3ZTcgbGVnYWN5LXRydW5rCiszNzM2MiBhYmJkYmJhNTZhOGI3M2QwMzVmODQwYjVjNzczNjkzZjU2MTAzZDdiIGxlZ2FjeS10cnVuaworMzczNjMgYTRkMzY3M2JjZDY2NDczMDY4YjJlZWE0NjM0NzE5MmZiMGYwZGYxNiBsZWdhY3ktdHJ1bmsKKzM3MzY0IGRhMWRhMzMxZjY0ZWY4ZWRiZjk1YmU3MWEzNTk0ZDY2ZjZjMzlkNmEgcmVsZWFzZTIzLW1haW50CiszNzM2NSBhZjliZWRkNWE4ZTcyMTA2N2UyNjRmY2JhMjc0ZTBkOWE4OGZiYzRkIGxlZ2FjeS10cnVuaworMzczNjYgYTcwYjNlZTJlMzBiODlmNTliMDg4MzA4YjViNGFhYTRjMDEyYTUwMCBsZWdhY3ktdHJ1bmsKKzM3MzY3IDQ1YzU3NDJjMWUxM2NhNGIzZWI0ZmNhOTgxYzNkNjBkOWY0MGMxZmUgbGVnYWN5LXRydW5rCiszNzM2OCA3OGMxYzAzNzc5NjM3ZmM2NDA2MmRiZmQyMDNmYjk2N2Q3ZmUwYjQ2IGxlZ2FjeS10cnVuaworMzczNjkgY2MwYWUwMzc0M2I4ZTJkYTM5MjQ1MDhmMDUyZjk5YTM4ZGIxYzgxOCBsZWdhY3ktdHJ1bmsKKzM3MzcwIDRiODE5OGE3NDg3MzEyYjg5NTM0YmZlYmY5ZDg1NDBhNWExZTE1ODEgbGVnYWN5LXRydW5rCiszNzM3MSA3MjVjNDQ0MjFhNDJmNTliNzllMzgyNmIyYTAzZjRkZmM4OGRkNTFmIGxlZ2FjeS10cnVuaworMzczNzIgOTRmNTAwZWJmNjBhNDVmNmU1OGNkMTE1ZTRkOWQ4MDE3ZmNiNmRmZSBsZWdhY3ktdHJ1bmsKKzM3MzczIDFmNTQwYmY5YTliNDAyN2JkODJjY2Q2MjAwNWU1ZDRkZTBkNGEzNTAgcmVsZWFzZTIzLW1haW50CiszNzM3NCAzMjIxODRlZjc2MjJkNjdmM2EyMTA4ZDI3ZDAyYzQ5Zjc0YjczMTJhIHJlbGVhc2UyMy1tYWludAorMzczNzUgMDNlZGI2M2FlMDcxOGY0ZjVhYWIwOWQzZjU4ZjljMTUzNGU3OWIyZCBsZWdhY3ktdHJ1bmsKKzM3Mzc2IDExZDQ1MDBiZTZmYTQxOGU1OWYwMmI1YTVjY2M0YzBhMzIwYzAyNmYgbGVnYWN5LXRydW5rCiszNzM3NyBmNDY0MDgxNWU1YmI1MDBhZDMzNzgxNTdjNTE3NDQ4Nzk3ZmYwOGUyIHJlbGVhc2UyMy1tYWludAorMzczNzggNmIzZGE0N2JkZGQ2OGE0NDVhMTcyN2RkNDc1M2IyOTgyZDBjNjcwNCBsZWdhY3ktdHJ1bmsKKzM3Mzc5IGE3NzI1N2U1NDk5NmFhZjVlYzJlMDEyYThhZGViZTljNjg3MGMzOTkgbGVnYWN5LXRydW5rCiszNzM4MCBlOWU2NWVmOTQ2ZWNhZDI2ZDc4NzcwYmVjYTI2ZWRlODA2Y2U1Yjg1IGxlZ2FjeS10cnVuaworMzczODEgMzAxMjY1YjgwYzQxNDQyY2JlMjhiMGYwNmMxM2U1NDY0MWEwNDAxYSBsZWdhY3ktdHJ1bmsKKzM3MzgyIGQ1Mjk2MTU5ZjExY2Y0ZGE1MGY0NWYzZTYxYTM2YjE3OTNjODg4YzYgbGVnYWN5LXRydW5rCiszNzM4MyAxMzlhNDAxMmJlYWRhZmM5MzgzZTA1OTIyNjUxOWE2Yjc0NjhiNGJkIGxlZ2FjeS10cnVuaworMzczODQgM2UxN2FlZDIzMjRjMzE3YzAxZGZlODAyYWY0ZTE1YmM0N2ZhZmFlOSBsZWdhY3ktdHJ1bmsKKzM3Mzg1IDU1ZWNhN2NkMzUzMWRjNmEyOGQ2NDc4ZjQ5NzNiYmU4NzNlYzAxNzIgbGVnYWN5LXRydW5rCiszNzM4NiAwNmYyODIzOGRmMzExNTljMjZhOGNhNGU1NTgwYWEwMDE3ZTgzYjEyIGxlZ2FjeS10cnVuaworMzczODcgZDgzNjcwZjI0ZDVjYzJjM2I0YTQyODE5ZmI5NDY1MmY4OWU3M2VhMCBsZWdhY3ktdHJ1bmsKKzM3Mzg4IDMwZDQyOGY5OTJmOWE5NzBhMWE1YmExYzI2MGM2Y2U4OTQ2MTljNDkgbGVnYWN5LXRydW5rCiszNzM4OSBkM2Q2ZDQyMDA5YThjNDdhNTg5OTJiNThjMWM2MTc4Y2EwZmI1ZmQ1IGxlZ2FjeS10cnVuaworMzczOTAgMTc1ZWVlMDljYjk4MTgwYWI4OTlhYTgwY2RhNGY2MTE0OGUxM2MwYiBsZWdhY3ktdHJ1bmsKKzM3MzkxIDE4MDlhYmQzOTM0MjYzNzgwMDRkOTEzNDcyMDVjMmZjOTVkMWM2YjggbGVnYWN5LXRydW5rCiszNzM5MiBhM2ZiNWViY2EzMGQ3MWQ2M2ZhNmM3OTQ1YTBlNTU0ZjM1MjdjY2ZmIGxlZ2FjeS10cnVuaworMzczOTMgMjVlMDdjNDRlNWQwNWIxOGVkODBkZGUwOGNhNDU4MzMxYjk0NDlmNCBsZWdhY3ktdHJ1bmsKKzM3Mzk0IDhmNjRhODRmYThlNmJlZjcyY2E4ZmViZmViZWQ0ZjU1YWNlM2ZlMjAgbGVnYWN5LXRydW5rCiszNzM5NSA1YWM4YWZkOGQ5MDQwNjU2OThmMWQ4NWYwOGIxYjQxZGVlZWJkOWJlIGxlZ2FjeS10cnVuaworMzczOTYgNjk1ZTViYjA4MzgyMzkzZDkzNTUwNzE3MjIzYmEwZmMzYWU3ZDIxYiBsZWdhY3ktdHJ1bmsKKzM3Mzk3IGU3ZmE3YjVjOTQ0MWMzOWQyOGNjZTVkY2ZlNTRhM2Y4ZWYxMjFiOGEgbGVnYWN5LXRydW5rCiszNzM5OCBmZTI0MmY2OWE5ZDMyODIyYWYzZTAzNWUyZWY0MjJlOWJjZjA1ZDM2IHJlbGVhc2UyMy1tYWludAorMzczOTkgZWNkNjU0ZGFhZWM5ZjAwYjJhNDkwYzI3Yjg4MTJkNGYyNTVkMWQ1MCBsZWdhY3ktdHJ1bmsKKzM3NDAwIDkyZGNhOThjZDQzNDMxNGY1ZjQ5MmMyYTllYzIwZTMyNTU0NWEwMmUgbGVnYWN5LXRydW5rCiszNzQwMSA1MjY0MjdlODgzZTgyNDFjY2UxOWY3YzQ3YTI3OGJmYThlMmMwY2FhIGxlZ2FjeS10cnVuaworMzc0MDIgYmQxM2E0NzhlOGQ2MWRmZGQzOTdiZjBiOWExNzFjNTI3ZmM5YmYzOCBsZWdhY3ktdHJ1bmsKKzM3NDAzIDJiNDliNGE4NWQ5ZWI0YTRjZmE5ZjI5YzIxZDY0OWMzODM5NDU2NzEgbGVnYWN5LXRydW5rCiszNzQwNCBmNjc4OWI3ZWFiNGUzMGJjY2I4NTFjNDJlYjNjODliNTU4MDQ5OWU3IGxlZ2FjeS10cnVuaworMzc0MDUgNzgxYWVmOTc0NDYzODhiMzhmZjQzZDQ3NDEwMjc4ZTk2YmQ4ZGNmOCBsZWdhY3ktdHJ1bmsKKzM3NDA2IGQ3NGRkY2ZmMDcyNDQ3NzY2NTRlMjNhMGM5MWZjYzRkYmY5Y2M4YjYgbGVnYWN5LXRydW5rCiszNzQwNyBhM2Q3OGQ2YmNhNTE5MjQyMzdjMmQ0OWNjNzc0MTZjNTlmM2VhNzhkIHJlbGVhc2UyMy1tYWludAorMzc0MDggZDYwNzFhMDViYTg0YWY5YmY3ODAzY2I2M2FhZGJiNDAyMmUyZmNlMiBsZWdhY3ktdHJ1bmsKKzM3NDA5IDZkMDU1YTI3NWI0YmQzOTVhMzA2ZjY0MjM3MDJlZjdkOTYxOGE3YWUgbGVnYWN5LXRydW5rCiszNzQxMCBiZjY4NzMxNjUwNzk4NmJkMjNiMzQ3NjYzN2EwYTYxN2QwNGM3YWE2IGxlZ2FjeS10cnVuaworMzc0MTEgNzAyMzY3ZGEyYzcyYmY0MmU1ZmEzOTM4MDgzNTY3OThmNWM3Y2YwNCBsZWdhY3ktdHJ1bmsKKzM3NDEyIGQzNzZmZTg2MmIxODg1NGQ3MmRiODQwNWUxNDI1MGFkMGIxYjNkMWMgbGVnYWN5LXRydW5rCiszNzQxMyBlY2FmMGU4ZmE3Mzc5ZTkxZGMzODcwZjM3NTNiNzhiOWNmOTJjZGY4IGxlZ2FjeS10cnVuaworMzc0MTQgNjZiNTZkNTZlNjgwZDRiMDU1ZDg1ZjZiNjNlM2Y5OGMwNzczNzQ0YyBsZWdhY3ktdHJ1bmsKKzM3NDE1IDdkN2FjNDA0YzgwNDlmOTMyMDJjOThmZDc5YzBhN2RjMWIwMDAyM2IgbGVnYWN5LXRydW5rCiszNzQxNiBiZjlmOTE3ZWU0ZjlmMTQwMGQxZjU1ZDJkMDRiMDM5MWI3NWRlNWZjIGxlZ2FjeS10cnVuaworMzc0MTcgYTZkYzE3NmM1ZDEyOTIwMjJiMTcxOGM4OTAxMzAzODNhZDYzNjVlZCBsZWdhY3ktdHJ1bmsKKzM3NDE4IGE1NzcxM2ZkZWQyM2IzNWJiZDRkZjRmNjYxMzMyZDUzMDE2NDRkMjkgbGVnYWN5LXRydW5rCiszNzQxOSAxNWE3Y2MwMGM1YTE0MWQ3Yjk4MDc3ZDYyMjBkMTBkZjY4NzU1NTczIGxlZ2FjeS10cnVuaworMzc0MjAgZmQ5MzQ3NzhmNGI0NTFlZDBlZjI5YjIwNjA1NDA2MzlkM2ZmN2VhZiBsZWdhY3ktdHJ1bmsKKzM3NDIxIGUxMmNhNWNkZjc0MTA1ZGQ1MTRmMGEzOTliYWFiZTRiMTJjYjBjODcgbGVnYWN5LXRydW5rCiszNzQyMiBmMmEyY2VkMWZkNWRjYjAzZDE2YjI0NmJkZDYyM2I0Nzk1MDQ3MGM5IGxlZ2FjeS10cnVuaworMzc0MjMgYmU4Y2ZmNGExZWNhZGM3MjU0NDMzYzg0NjNlOGI0YzQzNzhmMjZlMyBsZWdhY3ktdHJ1bmsKKzM3NDI0IDk3Y2I5ZWVhMjEyZTIzN2JhZGQ2OWU1NjM2MjY2YTQwMWU4M2FmMWMgbGVnYWN5LXRydW5rCiszNzQyNSBhNzYxMjYwMDM5OTI1MTllMzYwN2IzYWI0M2Y2MGNlNGQ3MmE3YzExIGxlZ2FjeS10cnVuaworMzc0MjYgYzM5ZjgzZmRkNGQwMzIzZDA3NGVjOGM4ZTk1MmM4ODdkY2VmOGE5NSBsZWdhY3ktdHJ1bmsKKzM3NDI3IDhjNmZjODc3MTI2MDQyMTExZjQyZDQ4MGJiYTBiODhkOGQ3YmNhZjUgbGVnYWN5LXRydW5rCiszNzQyOCA1OTg0MWM4MTlmNGM5NzVkMDMxZmNlNGVjMDkxMDAzOTE2ZjYxZTliIGxlZ2FjeS10cnVuaworMzc0MjkgZjI0NmQ3NDY0YjVjOGE0MzE2YTk1MTRjZTk4NDYxNWU3ZWEzYTVmMCBsZWdhY3ktdHJ1bmsKKzM3NDMwIDk2OTJhZjAxYzFhODM1YWMwNDVhNGQyNDQxYjNkNTUxNDVlMDlhMjUgbGVnYWN5LXRydW5rCiszNzQzMSBjNGVhYzZlOTAxNjE0YjY3MjdhZWFjNmY0MDg4MDU1ZTRkZjNjNzU1IGxlZ2FjeS10cnVuaworMzc0MzIgODVkYTA4OGU3YThiZmQ4ZjdlMWNmNjBmZmQ5ZTIyYTc3NDRjMmU0MiBsZWdhY3ktdHJ1bmsKKzM3NDMzIDNiZDkzYjgxNDAzMTk3N2JhMzM4NTY3OGJmNDdjNDU3NThmMGUwNTYgbGVnYWN5LXRydW5rCiszNzQzNCBjMzdlMjA3NGE4YzU0ODU5ZTY3NTI3N2YwN2NhYWFkNDFlNzdmNWFkIGxlZ2FjeS10cnVuaworMzc0MzUgYTU2ODJiYzczZTA0ZjYwNzZjNTc2OTg0ZGIyNjQ5N2M2NTgyMGE2MiBsZWdhY3ktdHJ1bmsKKzM3NDM2IDk4NmE1YjU2OWFkZWRmZGY4N2E0MTFlNDY3NDM2ZWI3MzM0OTYzZDggbGVnYWN5LXRydW5rCiszNzQzNyA1MGI2Zjk0YTM4YTc3NjczNmZmYjMxZGRmZDYyOTk4MGE0Y2YxNzEzIGxlZ2FjeS10cnVuaworMzc0MzggZTQ3OGViZTFjYjMxNmM4NGQ4MzRhNDBiMTQxZjA3YWQxZTUyMzk4ZiBsZWdhY3ktdHJ1bmsKKzM3NDM5IGYyNzU4NGQxMTNhZjNlMzgwNDIzZWViYWQ0MWY0ZjJlNmVhNDczNGYgbGVnYWN5LXRydW5rCiszNzQ0MCBjMjhmZmJmYjBhZTkwOTI5MjVjNTBmYjRhNTY0MGZjNWVjYzliMDFhIGxlZ2FjeS10cnVuaworMzc0NDEgMzFiYzVmMGY0Y2ZjYzlmYmNlNGYwNDliYWExYzQ1ZWQ4ZWQ4OTZiYiBsZWdhY3ktdHJ1bmsKKzM3NDQyIDMyNWE4OGM2ZWU3ZDVjZDc2N2ZjOTBmZTEwZGI5ZGU0OTQzODUyZjMgbGVnYWN5LXRydW5rCiszNzQ0MyA4YTVjODdmNjg1Y2RlOWNhMTQ3M2M5MGRkYjEyZjI2MzIyMmU1M2I1IGxlZ2FjeS10cnVuaworMzc0NDQgNzc2NjBlYWVmMjRkYzRhMWNhZjUzOTc2ZTVjNTY2MTUxMTc5ZTNlOCBsZWdhY3ktdHJ1bmsKKzM3NDQ1IDYxM2E1NTMzODU0YTBkNDFiMzZiNGFiZDU4ZTQzYjc1NTMyOTEwYmEgbGVnYWN5LXRydW5rCiszNzQ0NiA4MDg0MjhjNTYwOTY4NzY0MzIxMDc1ODRiZTA0YzNjNmZkYWE0NGZmIGxlZ2FjeS10cnVuaworMzc0NDcgMWI2YjEwNDJjZjQ1Njk1NjU1OGQwZTZjODI4NjhlMWQ3NjRkNTc1NyBsZWdhY3ktdHJ1bmsKKzM3NDQ4IDJiYzIzNTMyNjMxNjBhNDhhMDUyYThhNzZhNWQ0YmNiNzc5ZDFhNmYgbGVnYWN5LXRydW5rCiszNzQ0OSBkYmRjNDU1NjRkMjQwMzhhOTA1NzcwZmEyNTU5YzQ1ODM5OTRkYmMzIHJlbGVhc2UyMy1tYWludAorMzc0NTAgNzkxOWNhZGViOTFkZDdmNGFmYTkzYTEyNGZhNTdiOTc5YmJmMzBkOCByZWxlYXNlMjMtbWFpbnQKKzM3NDUxIDE0MDgxZWE2NTZiMmMwYTE3YzAwMWE2N2VlYTM2MzQ1MTEwYmExOGIgbGVnYWN5LXRydW5rCiszNzQ1MiA2OGQxMWU0MzlhMGI1YTQzMWJlZjhhODVhNzViMzkwMmMwYjBhZTA0IGxlZ2FjeS10cnVuaworMzc0NTMgMjMwMzZjN2FmNjg3NmVlMjE5ODNhODlmYTI1N2EwODY2NGVkM2E1YSBsZWdhY3ktdHJ1bmsKKzM3NDU0IDhmNGJlZDk3MGZmOTUxNDU2YmI0ZmNhZDMyMzgxMWM1ZGI3MjQ5NTEgbGVnYWN5LXRydW5rCiszNzQ1NSAwNzc5NTRkNDFjNTMyNWIzZGQzYzk5NjU3MmIwNTg3MWM0YmM4ODNlIGxlZ2FjeS10cnVuaworMzc0NTYgMmY2NDE5ZDAwN2E5Y2I4NjQwMzc4MjI1OTZlN2VlMThhNDAwYjUzZiBsZWdhY3ktdHJ1bmsKKzM3NDU3IGI0ODQ3NGJhZDc2ZmNlOWM5MTNhNmJlMTJhMGFiN2I1ODg0MzRlMzAgbGVnYWN5LXRydW5rCiszNzQ1OCBlOTM3MGJjZjAyYWRiZjNiMjYzNTZhNjM1MjFhYjQzMjRiMTI3NDU3IGxlZ2FjeS10cnVuaworMzc0NTkgYTc4OTVhZWYxZWU4MDFkODg3YWNhMjQ3MzdkY2I1ZmNmN2UzYTQ3NSBsZWdhY3ktdHJ1bmsKKzM3NDYwIDBjMzJmMDFjY2Q5OTdlOGY0NTVmYmZmZTRhMWU0ZTIzNTYwYWVhNTQgbGVnYWN5LXRydW5rCiszNzQ2MSAzNTViMTVlNGE0ZGEyMzI5YmI4ZmY2OGQ5NDVjZDlmNjhiNmJmYmFkIGxlZ2FjeS10cnVuaworMzc0NjIgY2YxYWFhN2U0MDA1NWQ5Yzg1ZDFkN2FkZjViYWUwZjI1YmQyNTQ2YyBsZWdhY3ktdHJ1bmsKKzM3NDYzIDMyZGYxZDA1Y2IyZDk2Mzg1NTg2MGEzZGRjZWUzOTZhMWUxM2Y3M2QgbGVnYWN5LXRydW5rCiszNzQ2NCA0YjU0MTZiMTg0NjY0ZmVhOGRlOTJmNjc5ZTMzMjA0NjIxYTNlMzViIGxlZ2FjeS10cnVuaworMzc0NjUgNzUxMTU4NWYyZTZhNDZhNmM4OWJlNWEyZTNkN2ZiOTExNDMwOGEyMCBsZWdhY3ktdHJ1bmsKKzM3NDY2IDdkNjY3OWVlMzlmOTBiYjY2YjgxNjY2YTc5MWQwNDQ5NTQzZjdiYjMgbGVnYWN5LXRydW5rCiszNzQ2NyBmYzNlODk2NDM4ODg5MDJlY2NhZDJiMmEyMjM1MzZiN2E2MWZlYWQ0IGxlZ2FjeS10cnVuaworMzc0NjggNjQxMTUyZmI3ZDg4Mjk2ZDJiYTNkZTNhODFjZTE2ZTI1MDI4Mzg1YiBsZWdhY3ktdHJ1bmsKKzM3NDY5IGIzNDA4YTg1Yzg5YzlkMzkyOWMwMGIxYTkzZmIwZDEwNTFjMzM5YmEgbGVnYWN5LXRydW5rCiszNzQ3MCA0ZDdiMGQyMDZiYzczYWRlYjY1ZWEwMzM5NTE5MDM3NjVlZDI3OGZiIGxlZ2FjeS10cnVuaworMzc0NzEgNTRjMzNkMDk1ZTdlNDliY2RmZTI0ODA0ZTQ3NzViMzRkZDEwYzQ0MyBsZWdhY3ktdHJ1bmsKKzM3NDcyIGRiNmYyMWVlNjEzNTk3MjU0MTZmOTYzZWIxZGEzMjg3YzE1OWI4MjkgbGVnYWN5LXRydW5rCiszNzQ3MyAwODQ5ODhjMjBiNzVjZTVkMTkyYTQ0Y2NmODIzNzVmNjg1NTlmMmE4IGxlZ2FjeS10cnVuaworMzc0NzQgYjg5MjJhMzZmMDgzODNmOThjMDM3ZDAyNDNkYWI1ZDIxNmZmNjE4ZSBsZWdhY3ktdHJ1bmsKKzM3NDc1IGM3YzM5Yjc5ZTViN2U4YTVhZjM3YjZmNWFkNDUwOWQ4MzhkZWI0ZjcgbGVnYWN5LXRydW5rCiszNzQ3NiA0ZWU0OGUyZWZiNjg3OTc0NWExMzg5ZjEzNWZjMjY1OGNmYTQ1ODk2IGxlZ2FjeS10cnVuaworMzc0NzcgNzY2NGU4YmFlMTllMjFiNTQ5N2EyNjNmMDI0ZGI5MzJiMWE0MDg0MCBsZWdhY3ktdHJ1bmsKKzM3NDc4IDgzMTMxOWYxMDBkMGE5ZjBkYzIzMjFhY2YzNjIyNzQyZGUxYzlhMzcgbGVnYWN5LXRydW5rCiszNzQ3OSBiMTFmOTE2MmVkMGRkNTQ3OTM0ZWZmYTMzMzkzZDM5ODk0NTY4ZmJiIGxlZ2FjeS10cnVuaworMzc0ODAgMzFiMDg2NzBlYmRkYjUwMWFmMDQ4Nzg1Y2NlN2ZjYWRmOTRkYjQ4ZiBsZWdhY3ktdHJ1bmsKKzM3NDgxIDJiOWMxOTg3MmIwMTc2MGZhNWRlYTM5NGE0NTk2YTE5OWM2YzI2MTAgcmVsZWFzZTIzLW1haW50CiszNzQ4MiA4ZTIwZWUyZWNjMGM5ZTZlMDA2YWNlM2EyYjUwZjkwMTk2ZWU1ZGE5IGxlZ2FjeS10cnVuaworMzc0ODMgZTYzMTgwNWM3MWIwNzJmNjBkNTk0OTkxYmUxMmYwNGI2MmU1ZDIwYiBsZWdhY3ktdHJ1bmsKKzM3NDg0IDI3YWEwZTExOTMzMGEzN2ViNWFkNzY0N2ZmN2QyMGQ0NzBlYTEyOTcgbGVnYWN5LXRydW5rCiszNzQ4NSAzNGIwNzAwOGFhNzhiZTc5OTQyMWMyZjkxMjFhN2I3YTQxNDYyOGM0IGxlZ2FjeS10cnVuaworMzc0ODYgNjNmYzA1MjJhOTViNTM1NWY5MWVjOTk5NDQxMjBmYTgzOGQxZmQ4NCBsZWdhY3ktdHJ1bmsKKzM3NDg3IDhlOWRjZmUxNGQ4MTYyZTRkYTUwOWNjODc4Njk4NjA0YTc1OTFiMGQgbGVnYWN5LXRydW5rCiszNzQ4OCA1NzMwZjc3ZTM3ZTQxYjYzNDFiOWY2ZTlhMzdlNTdhMmMxNzdmMTkwIGxlZ2FjeS10cnVuaworMzc0ODkgZjA3NGRiMGMxNGE4NTNmOTAzMmU2YWMwOTE3ZjQ3MmQyODQxYTdmYyBsZWdhY3ktdHJ1bmsKKzM3NDkwIGNkNThhOWI0YmE2NjM4NjQzNzY0ZDc0NDJhMDAyOTgxYWQ1NTI0NGUgbGVnYWN5LXRydW5rCiszNzQ5MSAwYWUwYmVmMTAwMTRlNWZiODUyNzFiN2IyNjI0YjkxZTk4ZGQxZDkzIGxlZ2FjeS10cnVuaworMzc0OTIgODNhM2UyZDE5MTRhOTBhNGQzMDM3ZWMxYjQ3MjYwNjNlZTc5ZjkyYyBsZWdhY3ktdHJ1bmsKKzM3NDkzIGM4NGRiZTcxN2Q0OWNkODY0ZWJmZjQ3YThhZGRjMWE1NWZiZjYxNDQgbGVnYWN5LXRydW5rCiszNzQ5NCAwZjBkZGI0Y2IwNDM3MzQ0ODAxZTNlMmE1OTViMjY2ZDZiN2VjZjA5IGxlZ2FjeS10cnVuaworMzc0OTUgNjU1Zjc0ZWEwZjMxZjU2MWEwZTg1YzJlZjRjYTI2Y2ZjYzdlYzkxYiBsZWdhY3ktdHJ1bmsKKzM3NDk2IDIzNDQ0Y2JkZWE1NTUwYTRhNTBlMTRmOTNmMzY0ZjI4OWVkZjMyMTIgbGVnYWN5LXRydW5rCiszNzQ5NyAyNzlmMDFlNzEwNzFiZjU2MzUzNTczODA4MzY2MzFmYWZiMjhhYTdiIGxlZ2FjeS10cnVuaworMzc0OTggNmJkNGExMDU2NzE2Yjc3MmE0NzM5NDgxYzI0NWQ5YWNiNmJiOGE0ZSBsZWdhY3ktdHJ1bmsKKzM3NDk5IDgzNmU5MmNjNWM0ZmJkYjZhOWFiMGJiNzYwN2U4ZjI0M2YzN2Q4MTEgbGVnYWN5LXRydW5rCiszNzUwMCBlNWRlNjk4ZWNkNGI0ZTA1OWQ1ZWJlYmU5N2ExMWQ0ZWIyZjAwZjIwIGxlZ2FjeS10cnVuaworMzc1MDEgNmY0YmNiM2JkMjAyZTQzMGZjNzQ4ODEzOTIyODJmMmYyMGYwYTc4ZCBsZWdhY3ktdHJ1bmsKKzM3NTAyIDVlMTlmZDM2NDJmMDczZTJkMzQ5OGZiMmUxMzZmOWFkMmRiMDFkNGYgbGVnYWN5LXRydW5rCiszNzUwMyA0MDM1MGZiZTY2NWRmZjFiMmRhOGM2YWYwZGQ1MzhkZDkzMWNjZGExIGxlZ2FjeS10cnVuaworMzc1MDQgMzBjYjIwMGQ0MThjZGZlZWE4NTY5YzUxMTc2NjkzNDQ3YTQ0ZWFhZSBsZWdhY3ktdHJ1bmsKKzM3NTA1IGNkNzBmMWFjM2MyNWQ2ODYwYTk2ZTNiN2ZiNDk5MTExMTExNjBkNDMgbGVnYWN5LXRydW5rCiszNzUwNiA0ZmI4Yzg5ZjY2YTBiOTc2MjVhNmIwMGU0ODRkZmFiZjFmODNjOWYwIGxlZ2FjeS10cnVuaworMzc1MDcgOTE2MzRmM2JhMjEzYTUyYjkwMzBhNGVkNTJmZDBlOGFkMjk4ZTM3MyBsZWdhY3ktdHJ1bmsKKzM3NTA4IDAwYzM2ZTFiYzUwYmM2YjJjODc2ZmE4MDJlZGM4ZTYwZGUwZGQxODUgbGVnYWN5LXRydW5rCiszNzUwOSAwYzRmMDk1ODYzYjllZDJhYjdjMjM5OWZiZWIyYWIwN2MyNzhiOWE1IGxlZ2FjeS10cnVuaworMzc1MTAgM2Q4ZDc4MjE3NTk5OWQ5ZDU4MjJiMjVhZDE2ZDc1M2U2M2ExMTE5OCBsZWdhY3ktdHJ1bmsKKzM3NTExIDVhMjkyYTAzZWE0MTY3NzM3MDMxMDg0NzQ3OGZkY2FlYmM0YzBiNDkgbGVnYWN5LXRydW5rCiszNzUxMiA3YzUwY2RlMWU0ZmQwNWU0ODg0ZDM3MzFhZDdiYTM5NWRjMjljMzRlIGxlZ2FjeS10cnVuaworMzc1MTMgNzQ1MGJiOTNjMzk1Y2IwNjRhMTljMzc5YjQ2ZDgzNzM2ZGMzZmQwOCBsZWdhY3ktdHJ1bmsKKzM3NTE0IDQ4NmU5YzQwY2ZiOTNmZTRmMDYwMjJlMDk4MDA5N2IxMDJkN2Q3ZTggbGVnYWN5LXRydW5rCiszNzUxNSA5NDY2MTJmNjRhODMyZTQ2N2E1MWUxOTRkMzg1YzBhN2RmNmU5ZDkzIGxlZ2FjeS10cnVuaworMzc1MTYgYzU5MWZhMWQ0MzVkZjA3NTg3NGIxYmZmN2I0NmU3ZGUyOTE4OWZhMCBsZWdhY3ktdHJ1bmsKKzM3NTE3IDdlNDJhOGViYjNlZmYxMTdjYmJhNzc5NmM4YjFlMmRkZDdjNDg2ODQgbGVnYWN5LXRydW5rCiszNzUxOCBjODE5MjViNjEzZGFiMDYzNjE2MjU2NDkxYjgxZDNjNTU5NWQyMWJmIGxlZ2FjeS10cnVuaworMzc1MTkgYzA5N2FiZGI1NTY2M2UzZTRjYmZhN2U4OTAxYjBkNWZjODIyMDAzMyBsZWdhY3ktdHJ1bmsKKzM3NTIwIDBiN2UzMThlZjA5MjY1NThhY2JjOGFiNThlMTUyNTgzYWRlNmY1MDggbGVnYWN5LXRydW5rCiszNzUyMSA0NWIxOTg4ZTI2OTI0ZmJhY2IzMThjNWE1ZmE1YmYyOTBmNzA2YmE5IGxlZ2FjeS10cnVuaworMzc1MjIgY2U4MTNhNTdkNDRkM2FhZTg4YzQ5MGRhNmNjYjk1ZWIwZWQyYmZlYiBsZWdhY3ktdHJ1bmsKKzM3NTIzIDkxODk5NDY4MzhlZWNjZDlkNWJjNmE0NGY1MDQ0YWM5ZjUyNTVlN2IgbGVnYWN5LXRydW5rCiszNzUyNCAwYmZkMzVhNzZhNDRmODEyY2NhNmRlNmRmY2VhOTZlZTI2NzRjYWQxIGxlZ2FjeS10cnVuaworMzc1MjUgNjNhMDM4OWJkNWZjYTk5NjA1NjhkM2Y1YzExNzQ3M2MzZjM1NDc0MCBsZWdhY3ktdHJ1bmsKKzM3NTI2IGNjNDY4NDA1MWM0NjMzNTMwNTAzYWYyNTYyMGYwYmVjMjE5ZDAxM2QgbGVnYWN5LXRydW5rCiszNzUyNyA1NDEyMDk2ZDBmOTVkZTA4YzkyNmNjM2M2YjI1YjRkYmY0YTk5ZDlkIGxlZ2FjeS10cnVuaworMzc1MjggZTEyOTc2ZTk4ZjYxM2Y0MzBmMGJiODBiMTBjNDAxMmJjOWZkMTNiMCBsZWdhY3ktdHJ1bmsKKzM3NTI5IDVkZWY2NmYyYzlhYmVlNWYwOGVhYTI4NDQ2NzRlZmYwNDk0ZjdiNGQgbGVnYWN5LXRydW5rCiszNzUzMCBhYjU4OGNlOWU3MWZiZmUwYzIzNzg1NjUwZGFiYWNlZDY1ZTA2YTU2IGxlZ2FjeS10cnVuaworMzc1MzEgMTE4YjZmNjllM2YxNTNiNzg3OWUzNGFjNmRjZGIwYjUwYTI3MDNkNiBsZWdhY3ktdHJ1bmsKKzM3NTMyIGVjZjFlODUzNDA2YjdjZDJlZGE2OTMzMjYyZDEyYzg4OWVkYjVmYjkgbGVnYWN5LXRydW5rCiszNzUzMyA2MGJmMmFmZDczMTIyNTQ2ZWZhZjFhN2E2OWVkMDA0ZmUwYjk1YjE4IGxlZ2FjeS10cnVuaworMzc1MzQgODlmYWFjZDllYzc2OTU1MjMxYTY4MzVlYzUxNDBjZDU1MDlmNWQyMSBsZWdhY3ktdHJ1bmsKKzM3NTM1IDIyZWU5MTY0M2IzZjM0Yjk0N2QwMTQ5MGYyYWRmZTZkNDU5YTkxMmUgcmVsZWFzZTIzLW1haW50CiszNzUzNiBiMGYzYTY5M2I4NTRiN2ZmODI2NjFlNjYxYzYxOThjODI4Nzk1ZTAzIGxlZ2FjeS10cnVuaworMzc1MzcgZDhlNzRhMGI0Njc3NWRiNjg0YTg5M2VhODdhNjVmYmUzZWQzY2MwYyBsZWdhY3ktdHJ1bmsKKzM3NTM4IGQ5OWRlNjVmNTQyNTgyN2JiNWNiNzY5MTkyZjYzZDg1MjdiNjA2ZDEgbGVnYWN5LXRydW5rCiszNzUzOSBiYThlMTg1NGE4NGJhYWNmOTRlYTE2ODYyZmJhMTNlZDRlMDlkYmNlIHJlbGVhc2UyMy1tYWludAorMzc1NDAgNWFlM2ExYzgwZTNmZTc1ODljY2ExMGZhOTI4YjM5ZWUxNjc4MjM4NCBsZWdhY3ktdHJ1bmsKKzM3NTQxIDI2MmUxY2Y0MWQzNGJjNzVmOWNlODdiZjRjNGM4NmM2MDQ4MjQ2MGUgbGVnYWN5LXRydW5rCiszNzU0MiBiMzFhNTEyMDY3NzQ4NTgyM2M2ZTQxNGQ3YTA5MWQ2NGNhYjgyMjJmIGxlZ2FjeS10cnVuaworMzc1NDMgNTVmYmE4ODkzMGJjN2I4MTY2OWQwMTUyOTQyYTEzMTBlNDA0Y2RiOCBsZWdhY3ktdHJ1bmsKKzM3NTQ0IGJjYWZiNjhhZDk4NTg4MDBhNTI2MjdmYzkxMGU2MzY1MmM3NmUxNDggbGVnYWN5LXRydW5rCiszNzU0NSA0Nzg0YmZjOTlhNDFiZTAzNTA3ZGZmZjk4YmZiMmI0YjVhY2Q4OTFkIGxlZ2FjeS10cnVuaworMzc1NDYgMzdjNjVhNmIyZWY3ZjQ4MTJkZTExMWY3YjRjZTc4OTFiOGE5Yzk2MCBsZWdhY3ktdHJ1bmsKKzM3NTQ3IGZkYTM2YWYyMjZmYjJiZDk0N2Y4MTYwMTdjZTU4MWE2NTI3M2NhNjEgbGVnYWN5LXRydW5rCiszNzU0OCAzZTZmNTZlODEwNGEyYmRjM2RhMmM2MTNmN2QyZGZlNTNkMTAzZDk5IGxlZ2FjeS10cnVuaworMzc1NDkgOWEzODYyNWZhMmIwOGQ0NmU1NGFjN2Y2Mzk2NDljZjEyYTAzNTg3OCBsZWdhY3ktdHJ1bmsKKzM3NTUwIDE3MDFkYWU2NDc0ZTE0ODJmMDY1MjEzOTFlNGIxY2JiY2E1YjU0MTcgbGVnYWN5LXRydW5rCiszNzU1MSA2ODNhMmY4Zjc3MWRjNzE4ZGM3NTdiYjI0NWE5MjlhNGQzMzI2MGZkIGxlZ2FjeS10cnVuaworMzc1NTIgYWYzMDA0MDNlZGI4MjBmNGQxMWFiZTJmNjNkNDAyNjg4MDRlYzViNSBsZWdhY3ktdHJ1bmsKKzM3NTUzIGE1Yzg4ZjJlODZhM2Y0NjdmNzNkY2Y5YzNlNmUyMzhiY2Q0OTk1NTQgbGVnYWN5LXRydW5rCiszNzU1NCAzNjE3ZDFlZTI3OTdmYmU2MmU0ZmI4NmMyMzNjM2ZlNTc4ZjFlYzNiIGxlZ2FjeS10cnVuaworMzc1NTUgZDhmZmY3MDZhOWMyNWNlZjgxNDQzZjIyY2VmZDczY2ZlNWQyNWIwNSBsZWdhY3ktdHJ1bmsKKzM3NTU2IGJhOWJjZjIxNDFhMjMyOWI1Nzc4MzMwMjdkMzQ5OTdjNGQxZTQwOGQgcmVsZWFzZTIzLW1haW50CiszNzU1NyA5NjJmYTNlMjMyMTViZThmMWIyODQ5ODExYTEwZGMyODk3NGUyYzQwIGxlZ2FjeS10cnVuaworMzc1NTggYmE5ZmRjNDRjNzc4MjU2NmMzNTc2MjRjNzY4Njk3Mjk3N2FkMzgxNyByZWxlYXNlMjMtbWFpbnQKKzM3NTU5IDkyNGJiMmFhZDRmNDgxYjhiMTRhMDI4OWU4NTU4NjdlZjU4NTI0N2IgbGVnYWN5LXRydW5rCiszNzU2MCBkYzNhNjc2N2U5NjA4NDI3ZmE3NzEzMTIwNmQ5OWRlMmVjYjc2NjhlIGxlZ2FjeS10cnVuaworMzc1NjEgYWFjNGNjNjYxOGI1NGJiOGViY2I2NzA2ZTY1MjRjZGY2YmMxMTllMSBsZWdhY3ktdHJ1bmsKKzM3NTYyIDA5MGZmY2I4M2YwYWFlNDZkZGIxYmRjYmUzZDBhZDc3ZmExZDZhZTggbGVnYWN5LXRydW5rCiszNzU2MyAwYzI2ZGIzODE2NzNlMjQwNTczMmZhZWIzMGEwNTQwYWIwODVjMmRiIGxlZ2FjeS10cnVuaworMzc1NjQgNjYzMjc0MTllYjAwNDRiZmRjNTM0ODZkM2I0MjU4ZDI2ZmFhMzc4MiByZWxlYXNlMjMtbWFpbnQKKzM3NTY1IDA4Yjc2NzQ3MDY2M2UzNTY5MDgyMzM0NTgxMWE2N2ZiNTMwODY2ZDUgbGVnYWN5LXRydW5rCiszNzU2NiAzMjcxZWE2MGI4MmRjMzIxY2RiMDdhZDZlNWQxMGFhNWRiNjE3NDIwIHJlbGVhc2UyMy1tYWludAorMzc1NjcgNTRlNjUyN2YzMTUwODk4MTBjNjY5YTQxMWExZWEzYjQ0NzNiNDllYSByZWxlYXNlMjMtbWFpbnQKKzM3NTY4IDI5NWJkOGM1NWE3ODhjMzAzZjE3ZmJiZWViYjlkZjU5YTA5Mjk3NDEgbGVnYWN5LXRydW5rCiszNzU2OSA4OTEwNDJjOTRhZWQwMWY0NGZlYjEyMjcyNTBjMTM3OTZiNjcyMWM1IGxlZ2FjeS10cnVuaworMzc1NzAgNDk4MWJhNTRmNDNkODE4MTIxNjI4MzM5NDBlODlmYzU3N2FiMTc2ZiBsZWdhY3ktdHJ1bmsKKzM3NTcxIDc0MmZkYWMzZDVhZTJmZjQzNWViMGQxZTI1ZGJlYzM3MDExN2U3ZjggbGVnYWN5LXRydW5rCiszNzU3MiA0MDEzZjBhNTM4MzUxMGY4MTI0N2MyYjRlYmZkMTlhYjc5ZjYyMGZjIGxlZ2FjeS10cnVuaworMzc1NzMgZTdjN2IzYWY2MTY0NjhhMzAyYzdmNmNiYzFiNTU5ZDc1OGM3ZDNjZSBsZWdhY3ktdHJ1bmsKKzM3NTc0IDQ2MTQ0NGRlN2IxZmQwYTEzMmMwNTQ3YzA1NzBmZmJlNDk2ZWU1ODggbGVnYWN5LXRydW5rCiszNzU3NSA2NjRiMThhYTZmYzEyNGIyNTVmMGIwOTU2MDljOWE4NjkxZGUxYzFkIGxlZ2FjeS10cnVuaworMzc1NzYgYmFhMjY1M2Y3YTc2ZDk0YjgzODkwMTQyYzg0YWEyNTE5MWY1NTMzOSBsZWdhY3ktdHJ1bmsKKzM3NTc3IDUxN2U0ZWMwZGY4OWNjNTI5OWNjNTY0ZWI4N2RlNmEwODI0NDQyNWYgbGVnYWN5LXRydW5rCiszNzU3OCA2MzVkZDhhOWViZDkzYzEyMTE4YmExMGEzZmE3OGMzNzI2YzRhYWRlIGxlZ2FjeS10cnVuaworMzc1NzkgYTQ2Yjc2ZWI5MDUzYzgzZDNmODdhMjgyZmNkOGMyZTczNTE4ZjBiMiBsZWdhY3ktdHJ1bmsKKzM3NTgwIGM1NTI0NDZiN2JiMmY0YjllZjM3Yjk4MmJkMTc2OGMwZWMzZGIyMDEgbGVnYWN5LXRydW5rCiszNzU4MSBmOGNiOGYwYWM4ZjEzYTM1Mzc5MzY0Y2U3MjEyY2JiZDBiNjdkNmFjIGxlZ2FjeS10cnVuaworMzc1ODIgZTZmMWFlMTNiZTg0ZGYyZjZkNzNiZTI2ZTJkYjAwNTA2MjAzYTBjYSBsZWdhY3ktdHJ1bmsKKzM3NTgzIGYyMzRiZTE3MjgwMDBlOWNlMjM2NGJiMTcxMGQzMWMwNGIyZjczYTcgbGVnYWN5LXRydW5rCiszNzU4NCBjMmFlNDgyZmY0MmQ2M2RlYmI0ZjI5MzA1ZTQ0ZTdlYzdmZjhkZGRjIGxlZ2FjeS10cnVuaworMzc1ODUgMmM3OWI1MGFmYmFiNWUzZDgzNTBmMWIxMmRlNzZkZjViYzE2MjFiZiBsZWdhY3ktdHJ1bmsKKzM3NTg2IDc0YTU3ZTY2ODRmMzkxY2QzMzY4ZjkwZTQ1ZGMzZTMzM2RkM2NmMjggbGVnYWN5LXRydW5rCiszNzU4NyA3NjY0MTgyNGNmMDUzNTdiZmI3NGNjMjEwNjdkMTRkZDc4ZTFjYTI1IGxlZ2FjeS10cnVuaworMzc1ODggYzdmZTIyNzdkMTcxZDRmYThhNWI3MGRhYzIzZTZkYjNlZDJjYmI2OSBsZWdhY3ktdHJ1bmsKKzM3NTg5IGM5YjFmMjY5NGU5OGFhZmRmOTNhNGMyOWEwNzQ5MWQzNDE2YWVkNDYgbGVnYWN5LXRydW5rCiszNzU5MCBhY2MxOTFiNzE0Yjk5NzM1N2U5YzM4NGQxOWQ1MmZjZWUzOTQyNGFmIGxlZ2FjeS10cnVuaworMzc1OTEgMDIzNmI2NTMwYzQ2MzFjM2UwZDMzNTMxYTQwOTA4YTZiNWFiMTVkNyBsZWdhY3ktdHJ1bmsKKzM3NTkyIGEwMWJlMzUwZWQ2MTU4MWI0MjczYjYzMjBhNjJmMmRkNGUwZmFmMTcgbGVnYWN5LXRydW5rCiszNzU5MyAwZDZkNTZiMjE2NGI3Y2U4YzkwMGIyODI3NTQ3NjRlZmEwZTc5OGUwIGxlZ2FjeS10cnVuaworMzc1OTQgNDRjZGFjOWJmNzg1OWViNzdjZTZhZDY4MzRkMjAzZDNkNWY0ZjUxYiBsZWdhY3ktdHJ1bmsKKzM3NTk1IDUzYzQ2OGQwOTU1YmFhMDhkMWU5ZGJlZWJmNmMzYTNlNGUzMzczMWUgbGVnYWN5LXRydW5rCiszNzU5NiBkOTQwNGRiMjliYzY1NzdiZDQwOWE5OTViM2U3NzBkOWU2N2RkMTEwIGxlZ2FjeS10cnVuaworMzc1OTcgMzlhMTNlMzlkMjRlYjlkZTBmMGJmMjA3OWMxNDFlOTM5ODMzYjJhNCBsZWdhY3ktdHJ1bmsKKzM3NTk4IGViM2Q2MDMwZDk1MDEwNzBkYzkyNzIwYjgyZTVjYjNlNGQ4MWY0YjIgbGVnYWN5LXRydW5rCiszNzU5OSAxMzgzYzQ2OTJhZjc0ZGNhNzg3ODU2ZWQxZjU5YTU5N2ZjMjNlMjQxIGxlZ2FjeS10cnVuaworMzc2MDAgYTgwNDI4MGUzNGY5MGZlMjE0ZTA3YWQ2YzQwMzI3NWY0NTBkNzk0OCBsZWdhY3ktdHJ1bmsKKzM3NjAxIGU0ZjdkM2IwYzVkNGZlNDdmZGIyN2JjZjM3YTg3ZTBhY2Y1MzQ2MjIgbGVnYWN5LXRydW5rCiszNzYwMiBhNGY3NDdlNzIxMzgxY2Y3ZGZlNzYzNGYxYTkxNGQxNTdlMTYwMGE4IGxlZ2FjeS10cnVuaworMzc2MDMgNzYzNTUzNjMxMDFiMGExMTU1MDE4NzVhMDQ3OTg0NDA0NTUwNWM5MyBsZWdhY3ktdHJ1bmsKKzM3NjA0IDQ0ZTE3NmNjYTMzNzIxYWQ4ZDgzZjUwNzNiZjE3NDRiZmE4NWE2NjAgbGVnYWN5LXRydW5rCiszNzYwNSBkMWYwYzcwNzliODI4NzlhNTU5Mzk3NjZlOGJhNWE5YzA3NjViYzg3IGxlZ2FjeS10cnVuaworMzc2MDYgMTc5ZTQyZWEyZTljOTcxOTg4MTcxMjg2MTY4MDkzMzNjYzQwMDI0ZiBsZWdhY3ktdHJ1bmsKKzM3NjA3IDQ2ODM5ODNlODRiMzU1ZDFhZTA0MzkyMzk1ZGQyZDEwNmNkNTM3NjYgbGVnYWN5LXRydW5rCiszNzYwOCA5OWNhYmE4MTQ1NjU0Y2EzOTVjMzRmNTdkNTNmYjIyYTBjYTIxODgyIGxlZ2FjeS10cnVuaworMzc2MDkgNzRjZWI2ZmNiNDMyN2RkOGM4NWUxMDBkODg4YjM2ZDVmOWRlZmIzNSBsZWdhY3ktdHJ1bmsKKzM3NjEwIGEyN2IwMjcxNzExYmQwNWJiMDM1ZWVmMmJiOTQxOGU1NzA3ZWJkZjggbGVnYWN5LXRydW5rCiszNzYxMSBiMGVjNGM5ZDU5NWIwMGIyNjZiZDFhOTM5ZTdjYmY3MjAwZDliODkzIGxlZ2FjeS10cnVuaworMzc2MTIgYjg2YzdjNDc3NGVkZmQ4MzJlYjY4ZmM5NDk4N2UxOGNkYjE4MWQ4YSBsZWdhY3ktdHJ1bmsKKzM3NjEzIDJjYzEwN2M5NjQ2ZTJiZGIwM2YyZDBhMjViZDk3OWY2ZTRlZTM0NWEgbGVnYWN5LXRydW5rCiszNzYxNCBlYzk5M2I3MjY2MDU3Mjg4ZGU5NTNiNzk0OTI2MzgwMTQ3MTY2MWM2IGxlZ2FjeS10cnVuaworMzc2MTUgYWEyZDYwNjA0OTVhMDdiYjRmMzdhZGE4ZWFjOTc0OGMxMzQxMGY1OSBsZWdhY3ktdHJ1bmsKKzM3NjE2IGRkYzJkNmU1NDdjMTUzOTRmODNkZWU2MDRiYmZhMTVkYTQ2Yzk2ODAgbGVnYWN5LXRydW5rCiszNzYxNyA5MmUwNWI2MzQ5OTc4NjkwNmI0MWQ1YTUzYTI3ZjVmN2JlM2E1OTJlIGxlZ2FjeS10cnVuaworMzc2MTggMTBiMjU0MTQ2MjhjZGI4MmM4MGQyNjBmMTkzZTYzYTE3MzE0Mzg5MCBsZWdhY3ktdHJ1bmsKKzM3NjE5IDRmOGRiNTVjZTEyNGEyZWE3ZjhiYzEwMzQyNTc4NzgzMWMxZjk0MTEgbGVnYWN5LXRydW5rCiszNzYyMCAxOTc3NzUyY2Y4MDdiYzc4OWQ5MDBiOTNmYzE2ODJlNWJiMTNlYTFiIGxlZ2FjeS10cnVuaworMzc2MjEgOGE1MDYxYmNkNDE3OWY4MjQ4MDA4NWMwMTZkNDZmNGVhNGI1ZjhkYiBsZWdhY3ktdHJ1bmsKKzM3NjIyIGZiMjczYTgzYzc1ZmQ5MjU3MTk3ODkwNWFmNThjODAyNGVkNDlhMTUgbGVnYWN5LXRydW5rCiszNzYyMyAxMWQwMWZjNjUwZGMwNTJhZmQ0OWM3NDRjOTUwZTkzNTVlOTdlYTk2IGxlZ2FjeS10cnVuaworMzc2MjQgNDYyMTdkMDVhNDc2NmE0NjFiZjQyYzg4MGFhOGFkMTA3MGFjMjMyMSBsZWdhY3ktdHJ1bmsKKzM3NjI1IGQxMjI4MTI3ZDI5NDI1ZjY0NGVjNzkxNDNiMjI2MDZiYmVmYWMyYTggbGVnYWN5LXRydW5rCiszNzYyNiAyNmZkMDBiMzY4ZjFkNDUyZTc0YjY0MWU2NmNhMTYyZDU4NDQ5MDhlIGxlZ2FjeS10cnVuaworMzc2MjcgMTY2YmQzMzlkM2JmZDYxOWM0ZDcwNTVhZDg2MTI0MDFlZjgzODBhNiBsZWdhY3ktdHJ1bmsKKzM3NjI4IDI2YmVkZjYzZTRhODljNTNmOGY4ZmIzNWVlMTk2ZDRiYzk0MDlmZGMgbGVnYWN5LXRydW5rCiszNzYyOSBiMzA4ZTE1YmQ3ZmJhOTI1ZjE3NzczMTE2Zjk4NWRiMmMwY2IxMjk3IGxlZ2FjeS10cnVuaworMzc2MzAgMTkwN2FkNTRkMzUxY2U3N2ZhODIyYTVlM2FhMzIwNzFiZjdjYjFkZiBsZWdhY3ktdHJ1bmsKKzM3NjMxIDU1NDgyZTlkZWI2NjM4MzY0YzIwMzJiMGIxZWVjODgxNjRkMWFhYWMgbGVnYWN5LXRydW5rCiszNzYzMSA1M2NmZjA0MjgzODU1YWRmODhlZDBjMGZkMzY5ODgyN2NhODQzNjM3IGxlZ2FjeS10cnVuaworMzc2MzMgNzJjNTEzMWQ0YzRhZjBkYjM3YWI0MTUyODc4YjU4ZGUwMDBlYjYxZCBsZWdhY3ktdHJ1bmsKKzM3NjM0IGM2YWFjMDM0NzRjNWUyMzgyODZhY2RiNDJmMTRkZWRjN2RlZDFmOTQgbGVnYWN5LXRydW5rCiszNzYzNSA4OGJmNDhjMDY5ZjljMzYyNDk1YmQ0ZjZhNjVkMjYzZmVjNmIyMDg1IGxlZ2FjeS10cnVuaworMzc2MzYgYmE3NWZkYTkyMjBjMmExNTRkNjY1MmUzMDBiZjVmZGVjYTcyZDdlYyBsZWdhY3ktdHJ1bmsKKzM3NjM3IGFiMDlkYWFjNTY5MWI3OGM0OWJiNDQ3MjUyZTIyMGRlNjY1NzMyZGIgbGVnYWN5LXRydW5rCiszNzYzOCBmYmFjYmIyNjI3ODk0OTgxOWUwYjY4YzUwNTBjMGIzZTBhOWEzM2Q4IGxlZ2FjeS10cnVuaworMzc2MzkgZTE1YzE1YTRmYmU4ODE1MTExOWFlMzNiZDE1YzQzMzRiM2Q0NjljYyBsZWdhY3ktdHJ1bmsKKzM3NjQwIGM1ZDk1MWEwZTBjM2U5MGE2MjVlNTcyZTY4YjRkMTNhOTY5OWIwODQgbGVnYWN5LXRydW5rCiszNzY0MSBlNGI3YzkyM2VkNWYyNzM3ZjY2MTU2YTg4ZjY2MDFlMTRjNjU1N2I1IGxlZ2FjeS10cnVuaworMzc2NDIgZjFjMDQ4ZTc0M2UyZDgwNjBhYTg5NDBmMzJhNjhhMTFhZGI4YzE4NCByZWxlYXNlMjMtbWFpbnQKKzM3NjQzIGM2NmU2YzlmZmMyZGJkM2QwMTlhNzRkM2IxYmY2OGEwODExNTRmYWIgbGVnYWN5LXRydW5rCiszNzY0NCA0Njg4ZDJhMjczZDkwYjg2ZmJjYzMwMjNlNzc4ZWE5ZjM2MWEwZWE1IGxlZ2FjeS10cnVuaworMzc2NDUgZDlkM2I0NzVjZWIyNTg2NjNiMTMxMjFkNzQ3OWU3ZWVhZDU2MjYzMCByZWxlYXNlMjMtbWFpbnQKKzM3NjQ2IGE1MmRlOTExYjI4NDgxNDcxODIxNjljYmZjMzIyYzZmNTJmOTAxMDAgbGVnYWN5LXRydW5rCiszNzY0NyAzZmRkOTZmMGNlODY2YzVhZjY5MjFmMzY4NDgxNThmYWZjMGJmM2E2IGxlZ2FjeS10cnVuaworMzc2NDggZjE3NWM5ODM4MzczNmQ1ODdmNDM2MTc3NjBiNjEyNTRhOWMzYTU0YyBsZWdhY3ktdHJ1bmsKKzM3NjQ5IDgxN2MyNDFiZmZmZjhkZjRmMTE4OGZiYTYzMmQ0Y2Y4YjI5ZDE1NjYgbGVnYWN5LXRydW5rCiszNzY1MCBiZDE4ODhlOTI5OWY3MzVjZTcxMTk2NDljOThjN2FkNGY5ZmNmMWI3IGxlZ2FjeS10cnVuaworMzc2NTEgYjg3NzhjZjdkMGUzNzM4NzFmZWYwMzk5NzI2NDkyNzNhNzc4Nzg0MCByZWxlYXNlMjMtbWFpbnQKKzM3NjUyIDMzNDJiYzIzMDBjM2FjMmU2Y2NhNWU3ZjcyYjdhNjUwNzkyYzBiNTYgbGVnYWN5LXRydW5rCiszNzY1MyA4ZDhiMzkyMzRkZTllNmYwYmU5NzgyNzJjZmY1MjNhYTQxN2Y2YzdiIGxlZ2FjeS10cnVuaworMzc2NTQgODNhMDE5MTI4OTlmNjA0NjAwYWRhZTdhZmYxMTM2MjhjYjg4YjYyOCBsZWdhY3ktdHJ1bmsKKzM3NjU1IDZkZmZkYzMzZmM2YzVjMDFmMDFjYzk2ZWY3YTVhYmE4MzQ2MGI3MjQgbGVnYWN5LXRydW5rCiszNzY1NiBkMDYzZTRkZTU2NzYwMGVhNmM3YjdlYWQ4OGIzN2JmMTNkNDg4ODYxIHJlbGVhc2UyMy1tYWludAorMzc2NTcgMjIzZDgyMjYwNDUyYWFjMjVjODU4ODA3MTIxYTQxZWUwZDQ1MDQzMCBsZWdhY3ktdHJ1bmsKKzM3NjU4IGEyMjQzZDY2ZDQwYmRhMWUzMTk4NWM2OTNjZDhjOWY0MDAwNjVmMjIgbGVnYWN5LXRydW5rCiszNzY1OSA2OWM5Njg4MWFhYWRiNDg0ODJkMDI5NDk1OWMzZmE0NTgyYzUwZDlkIHJlbGVhc2UyMy1tYWludAorMzc2NjAgNjgxOWJhMDIzNjY3NmZlMDNjNjJiMDEwNWU4ZTFlYWZlY2I2ZjRlYiBsZWdhY3ktdHJ1bmsKKzM3NjYxIGFlYjZmZjMwODg0OGM4NzVkNWU0YTNiNTIzMzBkNzAyNmIzM2UyZTUgbGVnYWN5LXRydW5rCiszNzY2MiA0ZmVkYzUyOWFkMzJkYjk1NzA0NGMxZmU4MWM2NWEyMzM1NDc0NDU2IHJlbGVhc2UyMy1tYWludAorMzc2NjMgYjFhOWVhNmU4YWUyMGEzM2FjMGU2Y2NlYzNjMDQ3ZjI4Zjc2NzhiOSBsZWdhY3ktdHJ1bmsKKzM3NjY0IDE5OWRhY2UwMjRiYTA0NGQ0NTBkZGYzOGJlZjZkNzlhZmY1MTcyYjMgbGVnYWN5LXRydW5rCiszNzY2NSBkNDg1ZTc4YTQzZDY1ODRiYmI5MjhlMzYxNjRkNDJkNGVlZmU5YmNlIHJlbGVhc2UyMy1tYWludAorMzc2NjYgNWM4NjI0OTZhOWY2YWE4MzFkYTlmODdlODJhOTYxMGFmZGI1OTE0OCBsZWdhY3ktdHJ1bmsKKzM3NjY3IGQyZTk1OTQwNDgyNjkyYjhlOGJhNjE3MjNjMjdhZjc4NThlMjQzNGUgbGVnYWN5LXRydW5rCiszNzY2OCBlOWNiZTBhZGIyOGFlN2ZhN2FjMjMxODlhZmViOGMyZWYzMjM0MTI3IGxlZ2FjeS10cnVuaworMzc2NjkgYTllNjA1MTQwMDc0NzdmMjBjZjQ4ODI3NmRkMTU4NmQxNDI5M2Y4YiBsZWdhY3ktdHJ1bmsKKzM3NjcwIGEzZGZkODAxNTMzYjYxODQxZWQ3MWM4YmE5YTkxNGZhYmM0N2E5M2EgbGVnYWN5LXRydW5rCiszNzY3MSA0N2IzODQ1MTk3NzU3NTYwNmRlMmRiZGRhNTc1NjVjMTM1YzY4YjdiIGxlZ2FjeS10cnVuaworMzc2NzIgNTllMGZmMGNkM2Q0YzkxZTJiZmNkMzllYTYwZjY4NjVlYzkwY2FiNCBsZWdhY3ktdHJ1bmsKKzM3NjczIGQ0NDM1MDVlN2VlYzE4Yjk0NjdiNDkyZGY2ZDUyYmEyNTBlZTU4NGMgbGVnYWN5LXRydW5rCiszNzY3NCAzZmYyNTI3MTVkOTNiMDRlZmVkNmY1MmVhMWEyODgzMTBhMTI3Y2YyIGxlZ2FjeS10cnVuaworMzc2NzUgMWM2NzZlODkxYjNmOWE4MzcyYTEzZjZmMzI2OWNhMWQzMDYxNWUyYSByZWxlYXNlMjMtbWFpbnQKKzM3Njc2IGFkOTA4ODhiMTdiYzAyMzQ1ODkxZTFlZjZkMmE2YTlmYTY3ZDhkZTUgcmVsZWFzZTIzLW1haW50CiszNzY3NyBmNTQ4Njg4NTViMWNjZGFhMmE3ODE1MGJmZmM2Yjk3ZDgwZGNjMjA0IGxlZ2FjeS10cnVuaworMzc2NzggODIxNDJhMjRlODQ1YzMzYmQ5Y2YwMTA0MTlhZWVmZGUzODY2YWIwYSBsZWdhY3ktdHJ1bmsKKzM3Njc5IDBhZmIyNTMwZTk4NmFhMDZkZDYwZmIzNzAyZjQ1NzQyMzE1NDI5MjkgbGVnYWN5LXRydW5rCiszNzY4MCBiMGYwYzU3YjFlMDU1NzAyMGIyMmExOTAwYzVkMmQyYzAyZTNiZWEwIGxlZ2FjeS10cnVuaworMzc2ODEgZWQwNDFlMGU0NTFlZjExY2JlOTE4ODJlOTA0NzhmYjc2ZjI1ZmEzMSBsZWdhY3ktdHJ1bmsKKzM3NjgyIGIzYTMwZTI4NDJiOTY3NWJkM2VjYTM5ZjFhNDcwNmQ0ODIzZGVhOGMgcmVsZWFzZTIzLW1haW50CiszNzY4MyA4ZDM4ZjJmMjE1MWNjYTVhYTIxOTgwMGVhNWMwZTI2YTk2OWU4MGE5IGxlZ2FjeS10cnVuaworMzc2ODQgMmExNTMxOGM0MDM4YzMwNDdkYzljMWM4YTJhYTQ5M2NlMjFkMzZhMiBsZWdhY3ktdHJ1bmsKKzM3Njg1IGYxNDMyOWE3ODk4MTkxMjE1MDU2ZTNmNTlkZThjMjNiODhkZTljNDIgbGVnYWN5LXRydW5rCiszNzY4NiBiZjE4Y2FjYTA3MzA0MzcxNzA0ZGRhMjZhNTUzZGY2ZjMxY2FiMzgzIGxlZ2FjeS10cnVuaworMzc2ODcgZGI4NzEwZjEzNjUwODhlYmQwMGY5YmMyY2UxYzZlZDI1M2FkZDVhOCBsZWdhY3ktdHJ1bmsKKzM3Njg4IDI5Yjk0NWJjMGExN2YxYzlhOWIxYTZkZDhjYjYyMWFmNmViYmQxOWEgbGVnYWN5LXRydW5rCiszNzY4OSBhZWQyNTI2ZGExZmM3ZWQ5MzQzZDY0YzljODNhNmUzNGI5ODY4NzIzIGxlZ2FjeS10cnVuaworMzc2OTAgMjhlZjBhM2Y1N2Y2Y2Q3ODQ4YTc2ZmIyZmE5NjMxYjZkMzQwNjJjYyBsZWdhY3ktdHJ1bmsKKzM3NjkxIGQ5MzhiOWVkMzJmZmVjYWU4YzQwNDk0NWMzY2U2MmI4OWJiNGFkOWIgbGVnYWN5LXRydW5rCiszNzY5MiAxN2Q4NjYxZTdkMTNhYWU0NmNjNDBjNWM5MTg0MjY0MTUzODI4YjY1IGxlZ2FjeS10cnVuaworMzc2OTMgNmM0MTY5NTI4NGY2ZmY3Yzk0OTc3NGY1NjE1NGQxNGRiZjBjMjQ3ZSBsZWdhY3ktdHJ1bmsKKzM3Njk0IDMxNzEwMWNmZmI3MjkzNDU1MjdiZGZiMzgxM2IwZGQzZTI2YmQwZTkgbGVnYWN5LXRydW5rCiszNzY5NSA5ZmZjMzQ0ODkxYTYyNmVkYWEyNjAxZmNhZTQwNTliNjQxYjMxZjE5IGxlZ2FjeS10cnVuaworMzc2OTYgNjI3Zjc3ZTNjZWI2NTFiYTFkMGFhZDYwYzRmNTZiOThjYjY5MDU1OCByZWxlYXNlMjMtbWFpbnQKKzM3Njk3IDEwNTEyY2ViYTMwYzU1Y2U2NGQ1YTI2YTdkOTBmOWUwZGI2NDgxMDIgbGVnYWN5LXRydW5rCiszNzY5OCBlZjE0OWVhNTk0YTRjMGY0YTgxMzhmZDRiOTlmOGE3ZmYxMTgzNmNhIGxlZ2FjeS10cnVuaworMzc2OTkgOTkxZDM0OTBmNjk4ZWIyYWY4ZDM4MDU2MjUzMmQ3MjdhNTFlMjk2ZSBsZWdhY3ktdHJ1bmsKKzM3NzAwIGRjOGVjZjcyNDQ4OGMyNmY3NWQ5MDIzYmY0YWUyNjU1MTM2ZjQ1Y2EgbGVnYWN5LXRydW5rCiszNzcwMSBiZDU1ODIxMWJhNTUyYzcxNDlhODM2YzhkNmYyYmI5ODhjY2FlYjAwIGxlZ2FjeS10cnVuaworMzc3MDIgZmRjZTNkMzliZWMxNGQ0ZDQ3MDQwMTU1MmU3YWM2Njc2NjBjYmYyYyBsZWdhY3ktdHJ1bmsKKzM3NzAzIDRkZDk3YzM3YzJjYzJjMzM3OGYyYzkxNmEzN2NkMWZlYTdhZDg5OWMgbGVnYWN5LXRydW5rCiszNzcwNCA2ZmMxMDMwNmJmMzEyYmFjOTkzYzc1MjFmNjUzNzFjOTJjNWMxMDcyIGxlZ2FjeS10cnVuaworMzc3MDUgMTA1YmZlMTc2OWI3OTZjNDI3ZjVlMmZkYzZhMzAwMzdjZGY3MGU0ZiBsZWdhY3ktdHJ1bmsKKzM3NzA2IDk5M2IxMjhkNGUyOTRhNTE3MDkzNTRmYmIwMGZiNGQyZDEzOGYxMmIgbGVnYWN5LXRydW5rCiszNzcwNyBhYzRmYTk0MmY5MmU3OGE2Y2JkZGQ2YThkN2RiZmQ4NGQ3M2UwMTI4IGxlZ2FjeS10cnVuaworMzc3MDggZWQxMzkzNzA3OWRmMTdjYWMyNmM5NzA2NzJiYTQyZWNhMjNhZjNkMCBsZWdhY3ktdHJ1bmsKKzM3NzA5IDAzMmYzNDJlZmNkMjRmMjRjNjZjZTZiZmIwZWMxMzgwNzdhNDVlZGEgbGVnYWN5LXRydW5rCiszNzcxMCA3OWJjYWQxNGU5NmFhYTc3NTg5NmQ0ZmU0NDg0NzUzM2JkOGU5Mjc2IGxlZ2FjeS10cnVuaworMzc3MTEgNTUxMDk5NWVhMjZmYjVkOTQ4YTA0ZGY5NjE5ZjcwNWM3ZGRlY2I0ZCBsZWdhY3ktdHJ1bmsKKzM3NzEyIDMzOThjNWNlOGI3YTA5NjA3NGU0ZjFiOTE4MDA0ZjhhMDhlNjUzMjggbGVnYWN5LXRydW5rCiszNzcxMyBkODM5OThhNzIxYTBhMmVmMWU0MzdmM2Q2ZDhhMDQ5MWIxYWE3MjMzIGxlZ2FjeS10cnVuaworMzc3MTQgMjYyNTUzN2E2ZGZhZGQ1MzYwOGNjNzgzMjk4ZmY5YzUzOGM0OWNlOSBsZWdhY3ktdHJ1bmsKKzM3NzE1IDJlZTAzMDFiNDgzY2UyYTg0ZjdlMzliOThkYmFkYzdmYjJiYTNlZjkgbGVnYWN5LXRydW5rCiszNzcxNiA5NDM4NjJiMmI0ZGZlNTZlNThkYzUyZTZlYjBkMDg1NDFkOWQ3YTBjIGxlZ2FjeS10cnVuaworMzc3MTcgZDQxYWMxMWU5YzYwNGE2NTk2YzNjZjE0ZTNkYjgzMzQzZThkMTE5MiBsZWdhY3ktdHJ1bmsKKzM3NzE4IGVlYzMxN2VlNWMzNWI4Zjg3MjEyNWEzMWY1MGI1NGMxNThmMmI5ZDkgcmVsZWFzZTIzLW1haW50CiszNzcxOSAxY2QxOWRhYWE5ZDQyZmFiNzIyMzIwYThkOWFmY2MzMmU5MjliMGI0IGxlZ2FjeS10cnVuaworMzc3MjAgNjBjNjBkYzc1Yzc3MjY0YjllMmMyZjVmNGJkNmM2MWZlM2NmYjFhOCBsZWdhY3ktdHJ1bmsKKzM3NzIxIDZkYTA3ODczYTBlZTM3NTQ5NWRiOWI4NWZkMjk3YmFkYjNhMTgwY2EgbGVnYWN5LXRydW5rCiszNzcyMiAwZGRhZThiMGZiMTlhMzgzMjNiNDJiYzViODQ2M2NkZjE5YWQ4ZGIzIGxlZ2FjeS10cnVuaworMzc3MjMgMzA3MzI0MzQxMDdiNmNmZTZkOTI4YjQ0MDBkMzIyZTcyMDdjYWI4MCBsZWdhY3ktdHJ1bmsKKzM3NzI0IDM0NjcyODgwODlhMWUyNTg2M2U1ZDNkNzQ0MWE1NmY0M2M0ZTUzYjIgbGVnYWN5LXRydW5rCiszNzcyNSA0YTNlYWExYWEzYWZkMmY1Yjk0Y2UyZWQwYjJlOWRiN2RhYzIwZWM3IGxlZ2FjeS10cnVuaworMzc3MjYgZmFjYjVhMmY0YjUzZTk3ZDMxMmRiMzE5MDk5ZWI3OWQ0OTE1MTNhYyBsZWdhY3ktdHJ1bmsKKzM3NzI3IGI1ODViY2NmYjI1MDU0M2E2NmJiOGVmNGU0NWQxMGEzMzQxMDdlZGQgcmVsZWFzZTIzLW1haW50CiszNzcyOCA2YjYxYWYwODM0OTMzMTNiNTM4ZTUxNTRkMjc2ZjFmNTg3Njc1NTdiIGxlZ2FjeS10cnVuaworMzc3MjkgZjE5NjcxNmVhMGRiNDVkNjM3NjdmMmQzYjc3ZWNhNDFmYzEzODI0ZSBsZWdhY3ktdHJ1bmsKKzM3NzMwIDI2MzJmNDM0MDlmNDk2NWFjZWI3MTI1MzA5OTVlNGQ0NDIwY2VlY2IgbGVnYWN5LXRydW5rCiszNzczMSAwN2Q5NGExNjJjZjg5NTFlZmFkZjY4MzUxNDhiMzY3MzhlNzcyMGZmIGxlZ2FjeS10cnVuaworMzc3MzIgMzA4ZThlZjJkM2VkZjVmNTUxYmZiMTIxOThhMjViNTA1YjllM2Y3ZSByZWxlYXNlMjMtbWFpbnQKKzM3NzMzIDIyM2QyMGFmYzhiNWUxZWI4YzkzZmE2YTFkYTE5OThjMzQxOGZjZTkgbGVnYWN5LXRydW5rCiszNzczNCA4MGNhMWE4YjIzMjE2MmUwOWQ3ZDUyNjYzYTUyMTZhZWRiNTIxN2FiIGxlZ2FjeS10cnVuaworMzc3MzUgNWFmYTUyNzdmY2Q5NzkzYWUwYmYxYzhjMTY5ZjdhZDMwNjBmY2Y1YiBsZWdhY3ktdHJ1bmsKKzM3NzM2IDE4MGRjODI5ZWZmZjgxNzUxZWZiODEyY2YwZGEwNGJhZmJmNWYwOGIgbGVnYWN5LXRydW5rCiszNzczNyBiZjJkMDNkZmMzOGUyOGYxYzRjNDkxZjk3OTMwYjIyYjkyOWQ1MzM3IHJlbGVhc2UyMy1tYWludAorMzc3MzggMGRjM2Y5NzA1NTc3MDczYWMwNTBkOWUwZTEwMTM5ZmMzNDc0NDc1NiBsZWdhY3ktdHJ1bmsKKzM3NzM5IDI0ZmMzZWFhMTllMGI1ZGQ5YWNmNzlkZDlkNDg3Y2QyYmYwZjE3YTggbGVnYWN5LXRydW5rCiszNzc0MCA2MzNjYWRlYmY2OGQ0ZGQ4Y2YwYzkxOWZmNTIxNDM3NmJlYmM4YzQ5IGxlZ2FjeS10cnVuaworMzc3NDEgYThjOTc5Y2M0ZmE2NThkODI2ZDIxMDQ4ZmQ3ODFhNTIwYjAzYjI2YiBsZWdhY3ktdHJ1bmsKKzM3NzQyIGVmNTAzMGJjNWY2NzFjNGIwNDgxYzg4Y2JhOTEzMTU4NDljYWRiNmUgbGVnYWN5LXRydW5rCiszNzc0MyA2ODczNjJmYTQ3MWMzYzA5MzE3MDU2NmY1OWU0OWIzZjZiM2ZkYzEyIGxlZ2FjeS10cnVuaworMzc3NDQgOGEwOWM4MmU0MjYxMGIwZDQ5NmZkMzE4NTc5NGZkN2ZiMzQ4NThlOCBsZWdhY3ktdHJ1bmsKKzM3NzQ1IGJjMDQyMWI5NjU3YTAwNThhYTk1MGNhY2U4YzNiMDVlNzU4NWJhZDUgbGVnYWN5LXRydW5rCiszNzc0NiBhNmY5N2UwZTYzMTg5NjRjMjZjOGZiYWUwZDQwNTZjMTNhNTM1ZWMwIGxlZ2FjeS10cnVuaworMzc3NDcgNWVjYTI0OGY2MzllNDJmNDA3MmM5YzdkZjlhYmY5Y2QzZjRkM2Y3MSByZWxlYXNlMjMtbWFpbnQKKzM3NzQ4IGMxOWU4MTExMjA1OTMxNmE2ODI0M2Q3MGQzOGYwMmIwMjc3NWUzOTQgbGVnYWN5LXRydW5rCiszNzc0OSBhNTc2Y2YxYWM2YTA0ZTc4MmY3YTcxMjczMzJiNWFjODg2ZjE4ZDY3IHJlbGVhc2UyMy1tYWludAorMzc3NTAgOTc2ODYyNGYwMzVmYTIzOGZlOTU1M2Y3YzYzNWM0MDNlNDUyNTM1OCBsZWdhY3ktdHJ1bmsKKzM3NzUwIDBjYjFiYTkyMjQxYmEyOTU3NTUwNTgyOGVlZTI0MWNkMTI2ZDQ2OTMgcmVsZWFzZTIzLW1haW50CiszNzc1MSAwZDZkYmViZDhiNGEyZDA0MzM5OGEyNGMxOWUwMTY4NWY3MmU5NjQ3IGxlZ2FjeS10cnVuaworMzc3NTIgNTNhYTAxOTM3MGRiNTBhM2UwMjljNTc0NTIxMmJiNTEwNjllMTRlOCBsZWdhY3ktdHJ1bmsKKzM3NzUzIGMzMDhjNmJhMDAyZjViNWIyNDg5NzE0ODA4YjQzNDNmZmE1ODhmYTAgbGVnYWN5LXRydW5rCiszNzc1NCBmZWI0MDE3Y2JhZDQyYTc0NWMyNWIxYzc3M2RjNGE2NjExZTg3NzZlIGxlZ2FjeS10cnVuaworMzc3NTUgNzg2ZDNiOGI5YmVlZGJhYzQ0Y2ZiOGI0NGYzNWVhMTRlMWVhMjIwZCBsZWdhY3ktdHJ1bmsKKzM3NzU1IDdlMzg3YTlkY2M3OTk1NGE3NzY5NWFkZWY4YjU5M2RhMzViZTEyMTQgbGVnYWN5LXRydW5rCiszNzc1NyA4NWRiMDE2ZThkYWM2M2VlOTU5YWVkNDU1ZTkxODZiM2YwODJlMTU1IGxlZ2FjeS10cnVuaworMzc3NTggZDc4M2Q1MTcxODExOWU0MTA2OGMzODk2YzViYzk1ZTg2ZTlhY2M5MCByZWxlYXNlMjMtbWFpbnQKKzM3NzU5IDcxMGI3ZThkMmZmMmE2MGI4NjU3M2U5M2ViMzBlYjA2OTdhNmU4ZTAgbGVnYWN5LXRydW5rCiszNzc2MCBkZmI3YjA3ZGNkZWRkMDA5MmE1YmNhY2Y2MjBlZDZiMzFkMmQyZmNkIGxlZ2FjeS10cnVuaworMzc3NjEgYTUxMjlkNmFiMWNjNmE1Mzg1ZTk2MjFmOGQ3YjdmNGMyNGI5MGNjNiBsZWdhY3ktdHJ1bmsKKzM3NzYyIGViOTc5YzNmMTRiYTk2M2Q5NTQyZTMzOTBmYWZlMjc4ZjliMDk2NDkgbGVnYWN5LXRydW5rCiszNzc2MyA1Y2MzODM0MDEyOTRmYjRjNTRhM2Q3Mjc0Y2Y1NTBjZmU4ZTJjMjM5IGxlZ2FjeS10cnVuaworMzc3NjQgYWI2YjEwOGE4Y2VjODlhMjBkYjA1NzdjNDQ2MzliMGI4YTcxODA2ZCBsZWdhY3ktdHJ1bmsKKzM3NzY1IDIwODczMjk1ZTkxNjA3NTc0ZWI0ZjEwNjdjNTk5Y2IwOGE1ZmU2MjkgbGVnYWN5LXRydW5rCiszNzc2NiAxOWMyZGNjZmFmNjUzZDk2NzdhZGU3OGUxY2I2YWI1ZDk2ZDg2OTI0IHJlbGVhc2UyMy1tYWludAorMzc3NjcgMTMyODlhNzQ0MmMzN2Y1YjQ5Y2Q1NjI4Yzk4NjUxZTk2NjUxOWUyZCByZWxlYXNlMjMtbWFpbnQKKzM3NzY4IDM2MDI0ZmEzYmY0ZjRlYTQxOTNlYzZkMjlhZmZiNzZjY2RhOWY2Y2IgbGVnYWN5LXRydW5rCiszNzc2OSA4ZjhjODliYmU0MzlkMGUxODRlNGVlMWRkOGRhZTA3YTU5MWU0OGIxIGxlZ2FjeS10cnVuaworMzc3NzAgNWVkMWQ5N2I0OWExMjQ1OWEwYjZiY2E3MGRiZTkwZmM4ZjliZDExNCBsZWdhY3ktdHJ1bmsKKzM3NzcxIDdlZDg5OWI2MTE4MjgwNmM5YjE2ZDE2ZDA2NzA5YTYyZTI5ZjhmYjkgbGVnYWN5LXRydW5rCiszNzc3MiAyZmE4NzI3ODRlYjYyMDFiMjFlYTczYmY2YzkxZGFmMGFiNWE2YjI1IGxlZ2FjeS10cnVuaworMzc3NzMgYjNmZmE2NGZmNGM2NDcwMjNhMjUzNzkyYTE1ZjUwMmRkNGMxNzdkYiBsZWdhY3ktdHJ1bmsKKzM3Nzc0IDk5YjkyMDE4NjM2NzFiOGQ2OTBlZTI2NTBmZDE3NTAwNjc5NDAxMDQgbGVnYWN5LXRydW5rCiszNzc3NSA5YTg2MjQyNWE5OGExNDZjYWQ2OWExMjkzNTUzZTI5MmYyODRiOWE4IHJlbGVhc2UyMy1tYWludAorMzc3NzYgOWNlNTc2NDAxOWFlZjA0NDYxNzBkMTM0YTEyMTA1OWVjZDNhNWNjMSByZWxlYXNlMjMtbWFpbnQKKzM3Nzc3IGVhNmVmNDBkYzkyMjBmNDc1N2M0YmYwY2UxNTBkMWVkOWU3ODAwMmIgbGVnYWN5LXRydW5rCiszNzc3OCA3ZTg4YzA0MzdlY2M2MjBlYTdhZTNiODgxMWY3YjY3ZDQ2N2U3NTUzIGxlZ2FjeS10cnVuaworMzc3NzkgMDIwMTZkNWE0ZGM2YTgzNTY5ZGJiYjE4MjZjMmU2YmVmOGJlYzU0YyBsZWdhY3ktdHJ1bmsKKzM3NzgwIDI1NzE0ZTBmYzg5ZGIxM2NkZDdiYzg4MGI3YzMxZDM3Njg2MzFhNDYgbGVnYWN5LXRydW5rCiszNzc4MSA4ZTkxYTdlYWE3Yjc5OTViNjU2ZTFhMzZjMDdjZjU4MGRjMGE2MGU1IGxlZ2FjeS10cnVuaworMzc3ODIgODY5ODY1M2UwNWZjMTA5MWI1OTEwMjI4YjcyNmQyMzY0YzVlNzIwZCBsZWdhY3ktdHJ1bmsKKzM3NzgzIGQ4MmZhOTMyYjQxYmMwMzkxNjU4MTE2YmMzZTk3YjhjNTNhOTNjZjMgbGVnYWN5LXRydW5rCiszNzc4NCA3ZmQ0ZDM1MGZmODI2MmI4ZDU4NTA5N2RkNzk1NmExYjBiYWJiZDE1IGxlZ2FjeS10cnVuaworMzc3ODUgOTE3M2I5ZTBhYjc3MzQ5NzA0MGViYmI3NDIzMDcyOTFjMWEzNWM1YSBsZWdhY3ktdHJ1bmsKKzM3Nzg2IDAxOGRjYzdlZjg4N2RlYmM3YTc4ZmQ5ZGNjNmZlOTI5ZmY4YWZlZWYgbGVnYWN5LXRydW5rCiszNzc4NyA2NjJjMTU1MTA2ZTQyNWMxMDVmOWVmMmY5ZjhiMGY2ODQ5MmM0ZmExIGxlZ2FjeS10cnVuaworMzc3ODggZTQ0MDQwNDZlNTUyZjg2ZDc1YTFkYmYxZGU2ZjZhY2VmOWEzOWZhZiBsZWdhY3ktdHJ1bmsKKzM3Nzg5IDgzOTBmOTM5ZGNjMWYzY2I4MzA4MjhhZjlmZTQxMzc1MzVlZGFlMWMgbGVnYWN5LXRydW5rCiszNzc5MCA4MjllZTMyNWExOGU1Mzg3ZmY3ODkzN2IyYzM0YzM4OWY4Yzc0ZmY0IGxlZ2FjeS10cnVuaworMzc3OTEgMGQ0ZWNjMzFjZmQ4M2RiNWQ0YWQ2YzQ3OGZjMTlhZjQ2YzI5ZTQ3OSBsZWdhY3ktdHJ1bmsKKzM3NzkyIDY2MjIzYTllYmU0ODYzNTljMWY1NzdiOGU4NmVkYWJmMmU0MzgxM2MgbGVnYWN5LXRydW5rCiszNzc5MyA0ZmExZGYzYjA2MmY0OTdhMjNjNDhiNDExNmI1OGY0NjlkNTdhODI4IGxlZ2FjeS10cnVuaworMzc3OTQgNTQ4ZjM4YTU2NjY5ZTIyZjdjZGIzODNiMTFlYWQ4YjFjYjFlMjMzZSBsZWdhY3ktdHJ1bmsKKzM3Nzk1IDU5YzQzZmQ4YmE3M2YwNzg4ZDFhZGY2NzEzNzUyN2VlOWZlMGZkZjIgbGVnYWN5LXRydW5rCiszNzc5NiBlYjIzMTU0NGMxYWQ1ZTYwNTBiOTdhMDJkZjk2ZDhiNDZmODcxMTc4IGxlZ2FjeS10cnVuaworMzc3OTcgMGFlMjhjM2E4ZDI0MDY4MzhmMjg2MzNmYzI0NmI5MWJkYjFjNDI2NiBsZWdhY3ktdHJ1bmsKKzM3Nzk4IGFiNzMyMTc3MzBkYjIzMmUzZTA5ZDI2YTc5Zjg4NWQ5ZTQyOWI5ZjcgbGVnYWN5LXRydW5rCiszNzc5OSBlNGUyM2UzYTc4NDRiY2VlZjBlY2EzZTEzZjU2OTg3OWQ0NTVhM2EzIGxlZ2FjeS10cnVuaworMzc4MDAgNGRlMzU0Yzc4YTdlZmJjMDQ4NWJkZDhhMjVkYzE4MjJmMzg2ZGI4ZCBsZWdhY3ktdHJ1bmsKKzM3ODAxIDgxY2JmMDMxNTQ5YTFmOWUwYjEwOWQyMzIyMzVkNjljNmUxOTNmOWYgbGVnYWN5LXRydW5rCiszNzgwMiA1ZmJiZTgyMzNiNzYzMzM2YmExZWExYzg4MGU4Y2E2NjcyMWJmNGJjIGxlZ2FjeS10cnVuaworMzc4MDMgZGZkMDdiN2JlNDA3MmY3OTMzZjExYWYxNTEzOWYyODZkNTJlZTg1YSBsZWdhY3ktdHJ1bmsKKzM3ODA0IDQ2M2EwM2E1Y2EyMjgzZTZhYjkwM2UwMzMwMjBiMzMxOTJlNDRlNWYgbGVnYWN5LXRydW5rCiszNzgwNSA4MmQwMjU2NDEyM2RmYzJjNTE2ODI2M2YyMTMwMzY5MGE3YjUyODQxIGxlZ2FjeS10cnVuaworMzc4MDYgMzU5ZWJjNTYwOTNlN2ViMmY0NDk1Y2Y0MmY3NDQ1YjFkOGFjNDg1MyBsZWdhY3ktdHJ1bmsKKzM3ODA3IDk2MTc5YzA5NmQ2NWFkY2EzYTk2NDAwN2MxOTE1NTczMjdmZGMyZmUgbGVnYWN5LXRydW5rCiszNzgwOCA5MDQ3NzFiZWYzZjQ3ZmRiZDFmOTI3MTNiMGQ4NWVkOGM1Y2UxNzhlIGxlZ2FjeS10cnVuaworMzc4MDkgYWZlZTNjMzNhZTZkOGM3NTU5MGE4MTRlMjA3MWU4NGY3NGJjZDdlYiBsZWdhY3ktdHJ1bmsKKzM3ODEwIDhiMmEyZjdjMTNiODBkYzc0NGFiODYxNWJlMzk3MTJkYzlmZWQyZmEgbGVnYWN5LXRydW5rCiszNzgxMSBmMmNlMTViMDJiYTNmZWJiZGZlYzIxODA5M2JhMDY4NjBkNGI2MGM5IGxlZ2FjeS10cnVuaworMzc4MTIgYjk4MTliOWEwZGFkNTQyMTE3ZWVlNGVkNjcwNjAzNTQyZGEzMDhmZiBsZWdhY3ktdHJ1bmsKKzM3ODEzIDYzM2JlNDNiZWQxN2QwMzdiZmM5YTM2YjVkZTMwNTYzYjVhY2FhMzUgcmVsZWFzZTIzLW1haW50CiszNzgxNCBlYjM0NGUwM2NjNzEyNTYyZWUxMjgyZWY2MGM0MzA0MzkzNGZhMTE3IGxlZ2FjeS10cnVuaworMzc4MTUgYjRmMGFkODE1OWM3MzRkZjkxYjkwNTkyODYyNDU3YjM2OGYwNjE4OSBsZWdhY3ktdHJ1bmsKKzM3ODE2IGUxZjE0MDI2MDk0NzhhZjc4NjQ0YjUzMDcwZTJlNTI0OGVmNjcxZWYgbGVnYWN5LXRydW5rCiszNzgxNyAwZmU4YTE2YTMzNmFlYThhNDY4MWIwZGMyYmFkZDk3YjY5MDk5MWE5IGxlZ2FjeS10cnVuaworMzc4MTggNzdiMWMxNTE3NGI0NGRiZjEyMTE3NjVkNzVlMjZmZGE0NzMwM2UzYiBsZWdhY3ktdHJ1bmsKKzM3ODE5IDk0MmY4NzQzYWRmMDI3OGI3ODgyZTBlN2U3MGE3M2RmYzVkN2JiMGMgbGVnYWN5LXRydW5rCiszNzgyMCA0Zjc0NTZkMDNjYjlkZTYyMzk4NTBhNjllNjlkNjRkNWY3ZjhlNmJlIGxlZ2FjeS10cnVuaworMzc4MjEgYzg3MWVmOTY2NTVjOGQzOGJkYzk0NDMyOWQwNDkyNTNiYWQyNGY4OCBsZWdhY3ktdHJ1bmsKKzM3ODIyIGRjODA0NzZiNzgyYjc5MGVjZGE0Mjc2MDgzYmFmYWJlMGZlZDM5MTUgbGVnYWN5LXRydW5rCiszNzgyMyBjYWRkM2U4ZDM0OWYwOWQzZWJiOTIxZTRiMmEwYTc1NGI2MDkyMmM0IGxlZ2FjeS10cnVuaworMzc4MjQgOTU4ZGM4YjdhODI2YTE4MDVmOTVhZjVmZjBlZjNjYzI4MDJiNTc0MSBsZWdhY3ktdHJ1bmsKKzM3ODI1IDQzNzUwMDZlNWYwNzlmNzJiNmM5Yzk1YjM4ZjQ0YzMyMjBkNDczNGMgbGVnYWN5LXRydW5rCiszNzgyNiBmYmYzMDY0NmNkMTM2NDFmYjc5OWI1OGYzM2U0N2RiYjU0NjZkYmNlIGxlZ2FjeS10cnVuaworMzc4MjcgYTkxZTkyYjk4MmFjYWZmMDM4YjdkNTgwMTA5Y2NlNjcyZGY3YTE0NiBsZWdhY3ktdHJ1bmsKKzM3ODI4IDg5M2Q0NjU3NjczN2FiYmE4Y2NjM2NkNTY0YjBjMzRkMDZhZTZlN2YgbGVnYWN5LXRydW5rCiszNzgyOSAwNmVlNTNhNzZmMDE3M2FjMDQwY2I5NDI1YTIzYTEwYzU1MGU3YjM5IGxlZ2FjeS10cnVuaworMzc4MzAgOWJkOTgzY2ZiZTgxYmM4NjViNGY5ZGE5OTQzNzQyYzZiMjUwMzEzZSBsZWdhY3ktdHJ1bmsKKzM3ODMxIDA3MzlmMzZhZDU0NDE5YTQxMzE0ZWQwZGJmNTRlN2M4OTc1ODllMmMgbGVnYWN5LXRydW5rCiszNzgzMiBmZWZmNGU0ZjM0NWNhNWUzMzZmN2IwMGVjODA5MTdkNDU5NDdlMjdkIGxlZ2FjeS10cnVuaworMzc4MzMgMDIzODAxMzMyMzk1NWViNGJhMmE0MTI1MDc5ZjdmNDM5ZTZkYTNiNyBsZWdhY3ktdHJ1bmsKKzM3ODM0IDIzYjEwM2FiYjhmN2ZhN2E3OTZmZTM4OTUwMTg2MTdjMWYwODhmYjkgcmVsZWFzZTIzLW1haW50CiszNzgzNSA1M2IzZjUzZDdhMGQzMmE5ZjU1MGI5OTNiMmI3MmZhMDQwNmU1ZGRjIGxlZ2FjeS10cnVuaworMzc4MzYgNGNiN2I5MjM2ODFlNDdhZWI2ZTNlNTFiZjQ0OWRmZTllZGI1NzA0NCBsZWdhY3ktdHJ1bmsKKzM3ODM3IGQyNTYxNWVmNWQ4ZjYwNTk1MTYwM2E2ZDVjZmZiMjA5ODkzYjFiNjAgbGVnYWN5LXRydW5rCiszNzgzOCAyMjEzY2RiM2NhZTc5M2NiMGRkNmVhZDI4ZjI0ZDk4YmFjODBmMTdjIGxlZ2FjeS10cnVuaworMzc4MzkgNDM5NDQ2MzUxMGZiMmRiOWUwOWQ4ZDRiN2Q2ODRkNDUwZTBlZjU2NCBsZWdhY3ktdHJ1bmsKKzM3ODQwIGRjZGEwNmNiMDc4YTNlZjk2OTg3YmUyNGE1ODg0YjgwNDUwY2RjZWYgbGVnYWN5LXRydW5rCiszNzg0MSAzM2E4NDZiNzc3YTg5MWE5M2JjM2ViM2NlYWY3ZjJkMDk2Mzc1YTYyIGxlZ2FjeS10cnVuaworMzc4NDIgZjkyNjE2ZjhjMzNjNzQ1MTExOTgyODhjMDVlMWEyOTIyZDZkOGJlNiBsZWdhY3ktdHJ1bmsKKzM3ODQzIDQwMDVmNzlkMjgxYWQwZGYyOWZkODMyOThiZDQxNDk3MmVlZDFkMjMgbGVnYWN5LXRydW5rCiszNzg0NCBlYzI5OTU1Yjg1NDM1YmY4MTYwMjgzMWQ5N2Q4YWIwYWI0OGFlZGY4IGxlZ2FjeS10cnVuaworMzc4NDUgNDY4YTEwZWJiY2Q1MDFhMDg0ZmZmZjRjM2QyOGIwYmYyY2EyNzk3MSBsZWdhY3ktdHJ1bmsKKzM3ODQ2IDY1MjVlMDI4YWZiM2M5YzcyNmU4NDk4NDllMGZhNjEyZjQ5MDA5YzMgbGVnYWN5LXRydW5rCiszNzg0NyA3MDEwYTk5YjVlNjEyNDE3NmVjZTQyMTY4OGFlZDkwODU5NWJiZjczIGxlZ2FjeS10cnVuaworMzc4NDggMzJlZDI4NjFjOTdmMThkZGM3N2M1OGZhNWNhNmJiMTdhODY2NjZiMSBsZWdhY3ktdHJ1bmsKKzM3ODQ5IDQ5YjZlOTY2ZTU3ZjA4ODQ2ZTI3ZjYyZjIyMjNhNmQ3ZTIyNWQwOTYgbGVnYWN5LXRydW5rCiszNzg1MCA0ODk2NTZkYmRmNWE3ZjMxMTNmOGNmZjAyZDUyZGI4MmUyNmU3ZTY2IGxlZ2FjeS10cnVuaworMzc4NTEgYTA1MDg1YTYzZGVjODM2NGIxNzRlOWIyODNjMWUyZjlkOGE5NDkzNCBsZWdhY3ktdHJ1bmsKKzM3ODUyIDRmMmJiZDQ3MWEyMWM1ODEzOGQwY2E2MWExMjRiZTI0YzdjMGI1NTggbGVnYWN5LXRydW5rCiszNzg1MyA3MTM3MjQ0OTU4MmQzMjY4NTY0NzNhZDYwNzZlYzU2ZjFiMmM2NGE4IGxlZ2FjeS10cnVuaworMzc4NTQgZjEzY2UwYmI2MDZjMDJkOTQ0ODUyNDMzMjkzMmEzYWUwYWYyYjE3NCBsZWdhY3ktdHJ1bmsKKzM3ODU1IGE4ZGUyMTk1ZWZkNjZiZGQ4NDBmZDZjMDI0YzU2ODgwZThlMDNiMWUgbGVnYWN5LXRydW5rCiszNzg1NiA2NzcxZTE4NDBiYmNiZjAzYzE4N2IwMjkzODAzMjhjMTE1OWY5ZmJhIGxlZ2FjeS10cnVuaworMzc4NTcgYjRhZGIxMDIxMTAzMGFiMjUwOGM1Y2EyOTBiZTE2MzZkMWZlNTgyMiBsZWdhY3ktdHJ1bmsKKzM3ODU4IGI4NzFiOTRmMDdiNmQ2ZjNmYWFjOTZjMTRlZjRiZjQ1ZjgyNTVkNmQgbGVnYWN5LXRydW5rCiszNzg1OSAzNjU2MzhkY2U1ZjM0MzYwMjlmMjkxMTBkMDQwYzdiZWRlMWNlZjVkIGxlZ2FjeS10cnVuaworMzc4NjAgZTAxYTE3YmNkZjI4ZWU4N2NjYmY5NmFkNmMzYjJjMWNjYjJjYTNhMSBsZWdhY3ktdHJ1bmsKKzM3ODYxIGY1MzExMzAzYTM1NzAwMmQ2MWY2MWZkMGMyZjBjOWE2OWIwYTRkNGQgbGVnYWN5LXRydW5rCiszNzg2MiBiNDhjYTk2ZWI0NDA4ZGNjZGZjNTA2OWFkOGI2OGY5YmJhNzljZWFmIGxlZ2FjeS10cnVuaworMzc4NjMgOWExMzA5YTkwYjVkZjZkMGU0ZmYwNTI0YjUzY2RhOTY4MzVhNzllYyBsZWdhY3ktdHJ1bmsKKzM3ODY0IGJhZTE5MTlmODU0ODFkYmY2MGYwOWJhZGY0NTQ0Y2RmNTgxODkwY2QgbGVnYWN5LXRydW5rCiszNzg2NSBhMDBjZDY3MDM0MWJhN2ZlY2Y4OTgzNWQ2OTE0NzVhYTI4MjA3N2RjIGxlZ2FjeS10cnVuaworMzc4NjYgZWE5NTdkOWIzNjljZDhkZGMzNzBmY2UzMjY4ZTFiODljYzVjZWQ2NSBsZWdhY3ktdHJ1bmsKKzM3ODY3IDMxZTRkYTE2NjRiN2VmNjA1NjdhMTU4MDQ1ODFiMDQwZTU2MjZjYzggbGVnYWN5LXRydW5rCiszNzg2OCBkNWJhNGYzMDUwYjU4NzBlMjllYTU3YzFiNmEyZTA5YTQzZWYzZjQ4IGxlZ2FjeS10cnVuaworMzc4NjkgNzg3MzhhODliMjIzMTFkYjcxMjVmMjI3YjBmYWNkZTEwZDJmMTk2MyBsZWdhY3ktdHJ1bmsKKzM3ODY5IGZmODBkOGJiZWY2ZTEzNDI2YzhhODVkN2Y5ZDgzN2I4ZjhmODk4MzQgbGVnYWN5LXRydW5rCiszNzg3MSAyMDk1NTAyNTZhNzQ0MTYwMWZhYmIxN2JjYTkzMjZkYTQyZDgxNTNjIGxlZ2FjeS10cnVuaworMzc4NzIgZWY3YTAyYjE4ZWNjYTM5OTg3MDZhYTQ2YTcxMjAyN2E4OWFjOTU1YyBsZWdhY3ktdHJ1bmsKKzM3ODczIDgyMDRhNGQyMDEyY2I3MmRmNDJjYWZiNGUwNGM4MDllNmY4OGE0ZDQgbGVnYWN5LXRydW5rCiszNzg3NCA3MTkzMGQ3YjNiOGEyNGYyNDc3ODhjZjFiMzc2ZjcyODFiMGFkYTBiIGxlZ2FjeS10cnVuaworMzc4NzUgOTZmNjJjNjc5OGU4MWIxMTEzZjNlMzNiZjBjOWI5MjU4MzA3YzNiZCBsZWdhY3ktdHJ1bmsKKzM3ODc2IDliMGM1YmY0NzAwYzA4NDMwZTU0NzVjMWVjOWRmZmNkOGIzZjZmZTUgbGVnYWN5LXRydW5rCiszNzg3NyA4ZGFhNWE0NDg0MDNhOWZkNThlNjBjODg2NThjNTgwNjE4ZTA1Y2RkIGxlZ2FjeS10cnVuaworMzc4NzggMmI5YzJlZDVhNzZiZmY3ZTNhYjAzMGI0MzU5ZmVmYjkxYWVkNWNjMSBsZWdhY3ktdHJ1bmsKKzM3ODc5IDI2NGU0NWJhYWNkNTMzMWMxODQ1YTVhMjI2MzM5OWEyMDhmMDkxNDMgbGVnYWN5LXRydW5rCiszNzg4MCBlOTU5OWQ5ZDkxYzZlNzA3YzIyYjFiY2I4MDQ1ZjJjYmI1NGMzNjFlIGxlZ2FjeS10cnVuaworMzc4ODEgNmJkODAyMWY3NDFjYjg5ODFlNmNjMDA0OTg0NTVkYjFjZjIzNzQxNyBsZWdhY3ktdHJ1bmsKKzM3ODgyIGJkZDE0YWI2YzVjZjE1YmZlN2MxOTBkYjFiNTc0ZTMyYjc4ZDBjNmQgbGVnYWN5LXRydW5rCiszNzg4MyBiZTM3MGFiYjAyMGY5Yzk3NWJkYTU2ZmFiOTQyOTgxNTdmM2JjNDg4IGxlZ2FjeS10cnVuaworMzc4ODQgYzEwYWRiYWQ0NGZhYjk4YzI3ZjIyM2JiMWFjYTNjYjMzZjA4YzE2ZCBsZWdhY3ktdHJ1bmsKKzM3ODg1IDE1NzZlODQ1YzU3YmRhZGVjNzdkNDUzOGYzYTM2NDU5ZDA3ODUyMDAgbGVnYWN5LXRydW5rCiszNzg4NiBhOGZmNmVkODU2ZTg5M2I0N2YzNDc0ZDQ3MjU4OTJlOTYzOGIxNTc3IGxlZ2FjeS10cnVuaworMzc4ODcgYzE0ODNmMGU4MDBkMDJlOGVjMDEwOTA2MDA0OWFiYjY5MDk5NmY2MSBsZWdhY3ktdHJ1bmsKKzM3ODg4IDdmOTVmZTk4ZDgyMTZkMjE2OGU4NGMzZGI4YzdiNmM5OGZkMTkxODMgbGVnYWN5LXRydW5rCiszNzg4OSA3MTM1OGY2NTc1YjZhZmUwZWZkMTUzNGM3NTdlNTMwZWEyODhlMGZlIGxlZ2FjeS10cnVuaworMzc4OTAgN2U5OWIwNjgwYWRmMTEzMjEyZGI4Y2M4N2UyOGVjYmU4MWUwNTg0ZCBsZWdhY3ktdHJ1bmsKKzM3ODkxIDhkYTU3YzI4YjkxMGY1MTM4MjkxYjg4NzQzOTdlY2IwNmFlZDc2NGMgbGVnYWN5LXRydW5rCiszNzg5MiA4MWExZjc1NGQzMmNkMjA4ZjczNTAxZWJhZTQzMGU4ZGRmYTA0NjM0IGxlZ2FjeS10cnVuaworMzc4OTMgYzg4ZDE4NDE4MDUzYjU0YjM0NTAzMGRjYWQyYWQ2YmQwZTNmNDI4OSBsZWdhY3ktdHJ1bmsKKzM3ODk0IDViZTMxYTIwN2Q4NmQ3ZjRlYzE1YjFkNDdjNzQ4ODA0ZTljODFiODUgbGVnYWN5LXRydW5rCiszNzg5NSA3YTVhNTZhMTczNzc1OTI2ZTlkM2JlMzVlODc1YjU2NjRiYjUyMWNkIGxlZ2FjeS10cnVuaworMzc4OTYgMTYzNDA5YTYwMWJlZjQxY2JkNzg5MjNiMDYzZGIzZTE0Yzk3YjY5YyBsZWdhY3ktdHJ1bmsKKzM3ODk3IDJjODNiNjIyYTNlZTY4YzVhOTlkMjZmOTRmOTdkMjZiZjkwYmMzNWIgbGVnYWN5LXRydW5rCiszNzg5OCBjOWM3Nzk0MDYwYjBlNmVkYjkzMTdkMDI4ZGJhNDAwNzRkMGExYTk4IGxlZ2FjeS10cnVuaworMzc4OTkgN2U5NTVlOTg3ZDY5Y2E3ZDcyMzBiNTI5NTBmMmJiMmI5ZmNlYWQwNSBsZWdhY3ktdHJ1bmsKKzM3OTAwIGQzM2IzYTJiMDk0Y2I4M2M4YzlkMDhkYTY2YzRkNzJhMTFiYTVjNWEgbGVnYWN5LXRydW5rCiszNzkwMSBkMDcxNmFiMDNkOWRkYzQ1MDdiODcxMTQ3MzM0MjI5ZjZjNmIwM2YzIGxlZ2FjeS10cnVuaworMzc5MDIgNmE4MDZmZGE2NjhkNmM1ZjRhZTIzOTA4ODg5M2M4ZjQ4MzJkYWJhNCBsZWdhY3ktdHJ1bmsKKzM3OTAzIDI4MzBlNmNiNDE1NzY1YjE1M2U2M2JlYTdmMTNkNmFhMzNlYzhlNWIgbGVnYWN5LXRydW5rCiszNzkwNCBmYmVhNzE0ODAyYjNkYTk2MjBhNTExMDZkMGVmYjM1Njk0MGFmM2Y3IGxlZ2FjeS10cnVuaworMzc5MDUgN2ExMjkwNDQzOGQ2Y2E3OTcxMDcxZTUyZWE1ZDM0YmZkNmQ4NWU4YSBsZWdhY3ktdHJ1bmsKKzM3OTA1IGYzMWUxOGQzMTNjN2E0ZmM2NjkxNGIyZDI3ZTEzMGEwZjcyYzBiNjkgbGVnYWN5LXRydW5rCiszNzkwNyA3MTYzMDdmN2U2MTdjNDE4NTEzYWYwYjljYTExYmRhZGE3ODA5NWIxIGxlZ2FjeS10cnVuaworMzc5MDkgNjNhZmMyZDFiMGRhMzcyMmUzMDU4ZmZmNjIyOTZlMGE4MDQ2MDE4MiBsZWdhY3ktdHJ1bmsKKzM3OTEwIGNmM2Y4YmVlN2Y3YWIxMmE5M2JlNDcyNDNhNjUyYTNlODA1YzExZDYgcmVsZWFzZTI0LW1haW50CiszNzkxMSAyZWNkYzgzZmE4NmNkMmI5M2IxMWU1MGUwM2QxODcyYmRmODk1NzhlIHJlbGVhc2UyNC1tYWludAorMzc5MTIgMzg0MzJhZDExYzJhNDIyNmFlNmYzMjhmNTM5NWYwYWIzYzZlNmZmYyBsZWdhY3ktdHJ1bmsKKzM3OTEzIGFlZDFmZWQzN2FkNTg2NTY3M2ZjYTA2OWM1YzNjOGZhZTJmNzc5ZTUgbGVnYWN5LXRydW5rCiszNzkxNCBmZDFiZTQ5NGMzMWI2M2U2MTEwMTVkNWFlNGI1MWQ3YzQzNDFhOTkyIGxlZ2FjeS10cnVuaworMzc5MTUgOGNlY2I4ZGM0M2EzODA3YmNmM2FlOTU2NTU5YjQ4MzQ4NGZmNmQ4NyByZWxlYXNlMjQtbWFpbnQKKzM3OTE2IDc5ZDJhZTBhNjJlZmViNzQwZDY0ZmRmMjA0ZWI2ZTI1MDRlYzdkNWUgbGVnYWN5LXRydW5rCiszNzkxNyBhNmUyNTFkZTVlNDFiZGQ4MmQ4NTY3Zjc1MTU2M2ViNjlkNmQ0ZDViIHJlbGVhc2UyNC1tYWludAorMzc5MTggNzAyNmQwMzg1MDgxMTcyMGJhY2Q1YjZhZjAyNWNkOTNmNjMyY2IwOCBsZWdhY3ktdHJ1bmsKKzM3OTE5IDFjNGRiZTRhMDZiZDA1NDljMGI0MzU5YzQ5MTUyMjU3ZGNiYWQwMWMgcmVsZWFzZTI0LW1haW50CiszNzkyMCAyMTdkNzQxMDQ5YzBkNjI2ZjQ3YWE1MzI3MWFkN2ZiN2Q1NjY2NzlmIGxlZ2FjeS10cnVuaworMzc5MjEgYzg3MjYxY2U3YWM5MzI3NTRjNmU5ZTdlN2YzYTRiZDUxNTY2YjRlNCBsZWdhY3ktdHJ1bmsKKzM3OTIyIDhlYWY4MDhmZDk4MGMxMDdlZDQ0NzhkZmJiOWNmOTU5MGE3ZWVkYzYgbGVnYWN5LXRydW5rCiszNzkyMyBlNDM1MzJiODQ4ZDc1ZDgwM2FlZWQ2ZWI0N2QzNDZmYTc4NzgxYzc3IGxlZ2FjeS10cnVuaworMzc5MjQgN2U2NDgyYWI5NDU1ZGExNzc3NTM0ZTIwYzQxOTdiNWJmNjAxNWU4YSBsZWdhY3ktdHJ1bmsKKzM3OTI1IDZiZmIwYWI4ODNmMjBmNzZiY2Y0M2UyMDNkN2Y2NjBkNTQ5Yjk5MWUgbGVnYWN5LXRydW5rCiszNzkyNiBkYTk2N2ZiN2E3ZmI0ZjQzYTE1OGE5ZDk0ODNhOWJhNzY5NzlhNjJiIGxlZ2FjeS10cnVuaworMzc5MjcgMTcyYjQ3ZmYyZTRiYjM4MGJlZjdhYWVlYmUyNGYyNmRiMTRiOGE5MCByZWxlYXNlMjQtbWFpbnQKKzM3OTI4IGNlYzMxZWRlYTQxNGZlZjRlOTIwN2ViYWZjZTU2YTY1NzFmNDhhZGIgbGVnYWN5LXRydW5rCiszNzkyOSA0ZTI1NGYwMjhiNzZmYzFiYWM0Y2Q4YzgwYWNiYWRkNzQ2ZDg5NzQ3IHJlbGVhc2UyMy1tYWludAorMzc5MzAgMzNmNzQ4ZTVkMTQyMWM4MDM1NzIxODE4OGNhZTVlZjJhOGRhYTMyZCBsZWdhY3ktdHJ1bmsKKzM3OTMxIDhjODAyMmI4MWYwMjBhNmVjYmNmMWUzOTAwZDA5MzA1NDU5MGY1N2UgbGVnYWN5LXRydW5rCiszNzkzMiBhYmUzZWU1ZmM2YzM3ZGEwYzg2ZTNjMzgyNmJkMmIyOWMzMThmZjk5IGxlZ2FjeS10cnVuaworMzc5MzMgZjE4YTRkOTM3MTQyYTA1MmU4MGNkNzY1ZTU1MjRlYTAxMTQ3MjViZCBsZWdhY3ktdHJ1bmsKKzM3OTM0IDhiZjc2NWI0ODBiODBmOWEwYmQwYWUwOTFiNzliNDQ0OTUzOWZjMjYgbGVnYWN5LXRydW5rCiszNzkzNSA1MGUwYzM0NWQ0OWIzYmI3YmYwOTcyNDMwOGZjYzQ4NjFiNGFlOGU5IGxlZ2FjeS10cnVuaworMzc5MzYgNGM4MTA2YzM1OGNlMGI4ZDhhNjNlMDIzMjQ4ZTRhYTUwNmI2M2YwNSBsZWdhY3ktdHJ1bmsKKzM3OTM3IDE1N2ZhZTc2OTUzNmU2MzNhNjRiZjY5MWM0MWViMTkyOGFhNWI4MDcgcmVsZWFzZTI0LW1haW50CiszNzkzOCA2MTE1NjFjY2U3NDBmZmM4Zjg3ZmNjOWQyZWIwYjkxOTNlOTViZGYxIGxlZ2FjeS10cnVuaworMzc5MzkgZmJmNmUwNGRlZjY5MDI0YzI0NDQ5MTk1YWU1MzEwOWIyNzlkNWI5MyBsZWdhY3ktdHJ1bmsKKzM3OTQwIDQzYzAwZjBlNjMwNTU1NzdlNzA4NTM0MDRkMDQ0MmY0Y2I5MGUxYTcgbGVnYWN5LXRydW5rCiszNzk0MSBmNzMyODA5NjgzMjI3OTA4MWI4OGE3MGVlMzY2MDIyNGMzNjQ1ZTZlIGxlZ2FjeS10cnVuaworMzc5NDIgNGI2MDFiZDM0NmE0ZjQzYjEzOGMzZThiZDlmZGI4NDBiNzU5NmUxMyByZWxlYXNlMjQtbWFpbnQKKzM3OTQzIGM0YjEzZmExOGExMDNkYTE3Zjg1OGIzNjU0NmZjODI1YzhhMDA4YmMgbGVnYWN5LXRydW5rCiszNzk0NCA2MDliY2RhZTEwOGE2NTc4MzFiMjUyOTdlZWY5MDkyZjRhNDI3ZWVhIGxlZ2FjeS10cnVuaworMzc5NDUgMjM5OTYzMmZkOWUwZTI3ZjcwYTg4Zjk0Yzk5OWVlMjczYjYwNTI0YSByZWxlYXNlMjQtbWFpbnQKKzM3OTQ2IGQyZjI2ZWFhY2UyYzFmMzIwMTE1YTIzYTE2MjZmMjVkZWNmMjAxZWIgbGVnYWN5LXRydW5rCiszNzk0NyBkNjIwM2ZiZGEyNTE3ZDM4OTQyNjhmYjdkYjliYzFmNzI2MmQzZTc4IGxlZ2FjeS10cnVuaworMzc5NDggNmUwZGIwN2ZiZjkxODVkOTFjMGU4NDcyMTMxY2MyMzA5MjUzNTJlNCByZWxlYXNlMjQtbWFpbnQKKzM3OTQ5IGNjOWNlNjgzN2VhOWI3M2VjNDgwMzZiYzFlZWQ3MWNjNTM0OTUzNWIgbGVnYWN5LXRydW5rCiszNzk1MCA5NWQyNzZkNGY5ZTQ2NTc5NmFlZGFiNGRjMWQxNTA1MjFhZDg3ZjQzIGxlZ2FjeS10cnVuaworMzc5NTEgNjI0ZTk2MzVjM2FkMTFkNzI5YzUyODYwYWRkMzFlMjMwYzY3OWIyYyBsZWdhY3ktdHJ1bmsKKzM3OTUyIGYwMmNkMGQ0YTJhMDVhN2M5NDY5Yzg2YzI2NDg3ODI5MGJkMWQ5ZjQgbGVnYWN5LXRydW5rCiszNzk1MyBlZGMyMGQ1MzlhMTgxNWQ1ODM5NGQ4M2ZlODVhY2ExOGM3NjUwZGE3IGxlZ2FjeS10cnVuaworMzc5NTQgMTc1ZjYxMjU1NDljYWQ3MWI4YWI1MmExNGQwNjVkYzEzZmM0YWVmYiBsZWdhY3ktdHJ1bmsKKzM3OTU1IDBlYzM0NDY2M2Y2YTllY2Y4OGIzMmI5N2NkZDEwNjZmNTRlNjg0NjggbGVnYWN5LXRydW5rCiszNzk1NiA4Y2QzMTc2ZmQ2ZjAzMGI2MDQyMWFkMDQ4ZWZhZDVjMTMyMjI0MWU3IGxlZ2FjeS10cnVuaworMzc5NTcgOGY5Mjk1MTM5OTNjOTFkZmM2NDZhZWUwNzcyZTBlNzNjOGVmY2E4ZCBsZWdhY3ktdHJ1bmsKKzM3OTU4IDI0ZjBkYTkyMDAxMDQ0ZTgyNDliMzQ5N2IwYzA3ZDg2NGRjMWRjMTIgbGVnYWN5LXRydW5rCiszNzk1OSA1MTcyYzI4YzBiM2M4Yzk4MjUwN2Q2MTIxMmUyYTUyMTk5MDI5OTcyIHJlbGVhc2UyNC1tYWludAorMzc5NjAgY2Y1NTVlYzY5OGViY2U0ZmQ2ZGNjYzYzYmJhYTUxNTgyMzcwZTdjNCBsZWdhY3ktdHJ1bmsKKzM3OTYxIDUzYzZhOTU5ZjljZmQ1ZWQ4ZjAzYWRiYzU2MjJkMjgyMzVmNWExZjIgbGVnYWN5LXRydW5rCiszNzk2MiAwZGZlNjA4ZWVjZmFjMjBjZjY5OWJiODRhZDY5N2I3OWQ0M2IyNmU5IHJlbGVhc2UyNC1tYWludAorMzc5NjMgYjk2NmFhZGU1NDhjZjhiMTNhNzBlNDYwNWUxOTAzNzhlODVhN2I3ZSBsZWdhY3ktdHJ1bmsKKzM3OTY0IDhmZDc2NmJiNzZjOWU0OGUxMDJkNTQ0ZDFkMjg5ZWEwZTI5YTlkYTAgbGVnYWN5LXRydW5rCiszNzk2NSBmNDA5ZDRjNmRjNjA0MWViNTRmNGFjYjMzYzlmMTYwNWYzZDY2YzhjIGxlZ2FjeS10cnVuaworMzc5NjYgY2RkZDAxNmFlMDZhY2ZlOWNjMzk0YzMwMzg4ODQ1NDc2ODI0YWNkNyBsZWdhY3ktdHJ1bmsKKzM3OTY3IDBmNTZhNjY1NWViZmEyODMwMWE2ZjIwMTNmNWMwNGZmNjI2NmUzMDIgbGVnYWN5LXRydW5rCiszNzk2OCBlZjZkMWU1ZWI0ZDMyOWUzZjkyY2Q2ZjFmZGI1MjhmMWUwNjA1MmIzIGxlZ2FjeS10cnVuaworMzc5NjkgMjU1NzFlYTVlY2E2MmYwODViOGEwMTc3MjVmMDRkMDFhYzA4NDg5ZiByZWxlYXNlMjQtbWFpbnQKKzM3OTcwIDY5ODkwOTJjZDk2ZDVjZDkzMzE0OTA2NWIzZDVhNGUxMTdmZGQ1NWUgcmVsZWFzZTI0LW1haW50CiszNzk3MSA0MjFhNWRmNTA4Yjg3NzAzZjI3ZWE4ZWM2Yjg4ZjNmNDllYzg0ZTE3IHJlbGVhc2UyMy1tYWludAorMzc5NzIgMWQxZDYzNzdhY2IxMjNkMThjODJjMTY5YTczMzc3MDg1YWNlMzMzOCBsZWdhY3ktdHJ1bmsKKzM3OTczIDk1NzQyOWM0NmJiZjhkNzUwZTc2YThjOTBmNzhhZTA1NmIxYTJiODMgbGVnYWN5LXRydW5rCiszNzk3NCAwNWY4YTRmZWMzNTYyOTQ2ZmFmZmU1NTNkYTU5NjM1YTY1ZTg3NTQ4IHJlbGVhc2UyNC1tYWludAorMzc5NzUgNzNiMDljMmI3ODhiOGEyMjEyZDRlMjY1ZmVlOGFiOTlmZjk1NWZiYiBsZWdhY3ktdHJ1bmsKKzM3OTc2IDFkMDQ5MzZhNjQ1NmEwNGE5ZmYxMGMyNTk1NWE5YzgwYWVlNGEzYTIgbGVnYWN5LXRydW5rCiszNzk3NyA5YzFlYjMzZmUxMTBiY2NkM2Q5ZTQ5NDExMTY4NmYyYjI2OTllYWU5IGxlZ2FjeS10cnVuaworMzc5NzggOTY3MjFhMDNhZTMwMDI0ZDZlZjFiYjgxNWUxMmRlMjc3MWZhY2FmYyByZWxlYXNlMjQtbWFpbnQKKzM3OTc5IGFiOGIwYjczMTcxN2E1ODAzMGNiODFhOTM5YTU4M2VjZGY3OGJmNmYgcmVsZWFzZTIzLW1haW50CiszNzk4MCBmMGZjNmJlZmIwNjA3YTMxYTc4YTI2YTk1NDM2ZGUzNTgzZTMyMzUyIGxlZ2FjeS10cnVuaworMzc5ODEgY2NjNTBlMGI0NjZkNGVjZDhkMjAwYzRhZTBjMTA2NDEyZDk4ZDgxYSByZWxlYXNlMjQtbWFpbnQKKzM3OTgyIDQ5NzlhNDQzNDU0MzQwOTZmMDkwZWY0ZTJhZWFjODAzOTk4Njg4MzUgbGVnYWN5LXRydW5rCiszNzk4MyA2MGQ0ODJlOGY4NDUwMTdjMGFkNTVhOTdjZDgxNzUzNjFkNDAwYTNlIGxlZ2FjeS10cnVuaworMzc5ODQgMTUzMWIyNWViZGNkM2JmMzYwNzZkNGY2NjUxNTdiN2EyZjc4NzhiZiByZWxlYXNlMjQtbWFpbnQKKzM3OTg1IGU0NmY5OGU3M2U1MjcyYWMwODE2ZmZiNzQ3NWI5M2NhODAwZTVlMWEgbGVnYWN5LXRydW5rCiszNzk4NiBmZWQ1YTczNDQ2NWQzNjRmNzc1MDVlN2E4ZTA2Zjk1Nzk4ZWY3ZjljIHJlbGVhc2UyMy1tYWludAorMzc5ODcgNGU4ZmIxMmY4Mzc4NzIyYWJhMDY4OWFhZDZjZjhmZDY2YzFmMTkzMSBsZWdhY3ktdHJ1bmsKKzM3OTg4IDRlMzhlY2QxOTEyZTRhNjU2MGEzMmE0M2JlYTE5M2ZiOTk4NDc4M2YgbGVnYWN5LXRydW5rCiszNzk4OSAxYTkzOGY0NTYwNTM4NTExMDJjNzgzYTljZDk1ZGI1ZmIyYmRjOGZhIGxlZ2FjeS10cnVuaworMzc5OTAgNzkwNjZlYTM4YzUwMzEzZDIxZGI0NjA2NThmMzUwNmVkOWE2Mjg5NCBsZWdhY3ktdHJ1bmsKKzM3OTkxIDRkY2Q3OGYzYjVkMWJhMTZiOWUzMWRkMDkwOTE3NDI4YTY5Zjk2NTEgbGVnYWN5LXRydW5rCiszNzk5MiA3MTBiMGIwZTA3ZWVkNzJhMjQwNzc0MzE0NjI1MzU4MDRkYzFkZWExIGxlZ2FjeS10cnVuaworMzc5OTMgMDE1Yjg5MmM5OGVlMjQ2NmE4YjQzZGMyYWQ3ODIyMDI4MDIyYTM1NCBsZWdhY3ktdHJ1bmsKKzM3OTk0IGNlNGJmYmQ5YTE2Y2Q1ODhhMGI3ZmU4ZGViMzQxNzA0YWFhNTMwNzUgbGVnYWN5LXRydW5rCiszNzk5NSA1OTEyYjQxODE1ODQ2MTllN2M1YzdhOWRhZjVhMDg2ZTc4MDRkMDYyIGxlZ2FjeS10cnVuaworMzc5OTYgYTg1N2MyNWEzN2I5NjhmNWZhMWI1NjY2NWY1ZTg3Y2Q2YmNjOTViOSBsZWdhY3ktdHJ1bmsKKzM3OTk3IDBhNmRkM2YyYWJjN2QzOGM5ZmE3MzAzNTc0ZTM4NmJhMDAwYzZiMjkgcmVsZWFzZTI0LW1haW50CiszNzk5OCBhZmU5MGU5ZTRiNDg0ZDg3OWFiZjIzNzQzN2IxYTg0OGE0ZmFlZDc4IHJlbGVhc2UyNC1tYWludAorMzc5OTkgNDkyNjUzODU3NzgyZmU2M2FjYWJmZjdiMWYzNmM3NzdhYTc3ZWMyMiBsZWdhY3ktdHJ1bmsKKzM4MDAwIDIxYWJlY2VhYWJhZDZkNjFiOWNhNWEwODkzODRiMGI5Nzg5MGRiMGQgbGVnYWN5LXRydW5rCiszODAwMSBmMDVkZDE4MTZjMWY3Y2RmNWE0NjhlZDE4MTMwOGQzOTEwNTA0YmJlIGxlZ2FjeS10cnVuaworMzgwMDIgZDBhMDljNzk3NDA5NjRlMjBmMTk3MjJlZjY4MzY2N2NjNjdhNzdjMyByZWxlYXNlMjQtbWFpbnQKKzM4MDAzIGRiOGY2OTlmZjc4MjVmN2YxN2Y1ZGQ2ZmRhNzFjYjAwNjIyYWQzN2UgbGVnYWN5LXRydW5rCiszODAwNCBiMTMyYmE5MjU5YWIxNGY1YTRlZTdlOTM1NTQ2OTc1YzAwN2Q3MTU1IHJlbGVhc2UyNC1tYWludAorMzgwMDUgNzFkNzEwZTMzNmRmY2FiOTk1NjUyNjJiNTIyZmM3MDQzYjMxMTZhOCByZWxlYXNlMjMtbWFpbnQKKzM4MDA2IGJlZGIzNDBmMTJmOTcwYTAyODAzNGQyMWY4Njk2NGQyZDgxZjUzMzAgbGVnYWN5LXRydW5rCiszODAwNyA3NTJmYTg2ZjA2ZDI1YzMwMzU4ZmQ0NDJmOTBmMjkyZTJmYWI1YzExIGxlZ2FjeS10cnVuaworMzgwMDggYzJlYmEwNGUzMDQxNTEwODNiZmFlOWQzODQ4NDlkZDRmNGU2YzU3YyByZWxlYXNlMjQtbWFpbnQKKzM4MDA5IDc1ZjNhNTFhNGUzM2RiNjVmZDkzY2Y1NDJlZWY2ZDdhODcyYTNkY2YgcmVsZWFzZTI0LW1haW50CiszODAxMCAxNjgwM2IwMzk2NGU0ZDUyYTU2NjBkY2I2ZWE5NTBmNzk5ODYyNzc3IHJlbGVhc2UyMy1tYWludAorMzgwMTEgNjU3NGM1MTVlMDM1NjZiYThiNjM3OTNhMzk1NjFlZWNiZDEyNmNkNCByZWxlYXNlMjMtbWFpbnQKKzM4MDEyIGJlNDUwYTMzNWU5Njk2ZTNkYjFkZmZhNjkwZDM3MzY5MmNlMzNlZjEgbGVnYWN5LXRydW5rCiszODAxMyBhNjU5YjBjZWNiOTJmN2RlMzY4MTg0YTc2MGEwNzhhOWRiODJhOTgyIGxlZ2FjeS10cnVuaworMzgwMTQgZTY5MmU3N2NhZDVkNWE0M2Q1Y2U3OWI5MWJmZDU4NTFmOGUyOGJhMSByZWxlYXNlMjQtbWFpbnQKKzM4MDE1IGRlNDcwMWZjMTc2ZjllNDAwOGY1MDM2ZjQyZjE0ZGIxMmRlNjJjNjUgbGVnYWN5LXRydW5rCiszODAxNiBiYmRhYWNjNDRmNmY0YTBiM2Y5Y2U4M2EzNWZkZmUxNmJhYmE4ODU5IGxlZ2FjeS10cnVuaworMzgwMTcgYTg2ODY2YmFjMzY2YjhkOGFjZDQ1OWNhODVlMGM0MDlmZGYzYzNhYSByZWxlYXNlMjQtbWFpbnQKKzM4MDE4IDUxYjBkMThkYTQ0N2I3MzUzMTMxNzdhZGZjYzMyMGRkMjFjNTUzZGYgbGVnYWN5LXRydW5rCiszODAxOSBjMjk0YjExMzIzZDE3YTQ3ZDIzMWY2OGY1MWM4Y2E4ZTIzOTU0ZDgwIGxlZ2FjeS10cnVuaworMzgwMjAgMjU4NTYwYWRjNDNiMzFiNWVmODBlNTI5ZTFlMWFhNDM3ZmYxMGU0OCBsZWdhY3ktdHJ1bmsKKzM4MDIxIGYxZWRiNDdjZTRmYWI0NmI5ZDhlYzA0MTg2YzczMWFkZGJmZjM0NjAgbGVnYWN5LXRydW5rCiszODAyMiAzNjI2ZGI0MzMxMDRlMDcxZDMzOTFlZjRmYTQ0MjFkMDAzZmRkZTUwIGxlZ2FjeS10cnVuaworMzgwMjMgMGYwMDcyN2EyN2IzMGJlOTkyMDcxZTViZGJhYTIxZGYwNjAzMDBmMyBsZWdhY3ktdHJ1bmsKKzM4MDI0IDY5NjExYzdjZDIzYmRmNDdjNDA2NjUwMGVhZjFjNGZiOGFkNzE1ZmMgcmVsZWFzZTI0LW1haW50CiszODAyNSBjYTJjYTFhZWIwODA1M2I2OTdmMmNkZGY3Zjg0ODk2OTJhYTQ5NWFmIHJlbGVhc2UyNC1tYWludAorMzgwMjYgOGIxMTQ0YmE3MzRlZmFlMWZmYmM1NDBmY2FjZGViN2U2NTBmODJlZiByZWxlYXNlMjQtbWFpbnQKKzM4MDI3IGNiNTRmMTE1M2I5MzU0ZTk4MmVlOWJmNDJhMGIwNjkzZTk2NDJhYTEgbGVnYWN5LXRydW5rCiszODAyOCA1ZWEwMjVjNDIxZDdiYjg3NzdkNTMyNjEwMWQ5NjdkMjEzMDAzYjZkIGxlZ2FjeS10cnVuaworMzgwMjkgYzIwZjViMzhmYTIwOTY0YWQ3MmRmNWNiZTE4Y2VhYzYwODM0ZjZiNyByZWxlYXNlMjQtbWFpbnQKKzM4MDMwIGU1MzY5M2EwMmNmMDU1ZDBkZjkyNjI2ZmE2ZWM4OTI3NjRhMjQ3NmMgbGVnYWN5LXRydW5rCiszODAzMSBmZGVjYmEyNmZjODdkYmZlZDllZjQ1MjI0MzI3MWY0NmJkNTMzMTI1IHJlbGVhc2UyNC1tYWludAorMzgwMzIgYjNhZmMwMWMwNWEwNWE1NmEzYjQ2MGRhYmVjYTA5NGI4MmRhNmZjNSBsZWdhY3ktdHJ1bmsKKzM4MDMzIGRiOWI2NDkzOWQ0NWM3MjhlZGM0NGQ5YWNiYzcwYmYzMDM0MDc1ZGUgcmVsZWFzZTI0LW1haW50CiszODAzNCA4MGYwMWZkYmVkZWJjNDk4YjI5N2IyMTlkZjMwZTc4YzQyYmUxOGM1IGxlZ2FjeS10cnVuaworMzgwMzYgNmMwMmZmOTAyZjgyMGQ2MmQ4NTM0YjUzMGIwYzFhZjA3MjdjYThhMyByZWxlYXNlMjQtbWFpbnQKKzM4MDM3IDEzMDIxZDM1MTM1ODYzZDVjZjE2N2RjYzc4ZGNkNWU5MjM2YjcxMGMgbGVnYWN5LXRydW5rCiszODAzOCAyMTQ0YTM1MmFhMzdmYzBiMWNhNzcxMzAxYjU2ZmYxYTJjMjk5YjU5IGxlZ2FjeS10cnVuaworMzgwMzkgMzBiOTdjMWJiMTJkZGYzMmY5ZWFiNDNkNmY3YTliOWYwNjA0ZjM5YyBsZWdhY3ktdHJ1bmsKKzM4MDQwIDljM2E2NGMyODFlMWIzNWEwMWZhM2YwYWM4MjVjMzM3OTQxOGQ5NTIgbGVnYWN5LXRydW5rCiszODA0MSAwNWJjOGFjYWYwYmI0YzZiYzIxZTk4MmMzMWQyYjA2MmFiNmVkOTc1IGxlZ2FjeS10cnVuaworMzgwNDIgZTg5YjFhMjQwZmY3ZWQxNTJiNTdhNTgyOTBmNGY3NzVkZDMyYjY4NSByZWxlYXNlMjQtbWFpbnQKKzM4MDQzIGMxMzlhNDk5N2Q5ZjE0YzQzODhmMWIzMGMzNmYxYTkwN2FkNTc0OGMgcmVsZWFzZTI0LW1haW50CiszODA0NCA4ZmRhYTk3YThhYzM0MzVlZWVhNmM0ZGVhYTA3YjI0MDg2NDBiZmE1IHJlbGVhc2UyMy1tYWludAorMzgwNDUgMTFkYjI4ZTkyMDlmZWQzZTMxNTAxZTE5NGE0ZmEzYTYwYWMwYmY1ZCByZWxlYXNlMjQtbWFpbnQKKzM4MDQ2IDBlZmNjMTZmNWEwZDE2NThhZThjNTg2ZmZhZjIzM2ZlMmU4YTY0ZmUgbGVnYWN5LXRydW5rCiszODA0NyA0NzE0YWZmNGJmNzUyODdmZjMxYWFmNDM5ODkwNjU0MGI2MTQ0ODRkIGxlZ2FjeS10cnVuaworMzgwNDggOWU4MTk1ZTIxZGE2OWViMmMyM2U4MGMwY2Y2NDk2YTU4YmEzYWQyMyBsZWdhY3ktdHJ1bmsKKzM4MDQ5IDM2Y2Y5NGY1NzQxNTFmNGJkYjM1YmIxMzZmOTY1MGRhNGZiMmI5MjMgcmVsZWFzZTI0LW1haW50CiszODA1MCA2ZjRhNmU5YWQ2ZjMzYWJiZmEyYTM1OThhMTZmYmE1YzEzMDc2OGNlIHJlbGVhc2UyNC1tYWludAorMzgwNTEgNTIxYmVjNjBlYjMwMmZjYmMzNTIwMDUwOTA2NGYwNWVmMDJmNTdhOCBsZWdhY3ktdHJ1bmsKKzM4MDUyIDA0NzBkNzU0MTdmZjE1NWE3NDMwNDhlN2YyMTkzYzQ3Y2EwN2IzNTQgbGVnYWN5LXRydW5rCiszODA1MyBkMDQ3MDFlNTk4NzI4NDc5NzdlZDFjNmE3OGUzOWE3NDU0Yjg5OWEwIHJlbGVhc2UyNC1tYWludAorMzgwNTQgNDRlYmY5OGE1ODY4MjAzZDM2YjRlZjU3NDI3ODM0MDVkODJmOGFlNiByZWxlYXNlMjMtbWFpbnQKKzM4MDU1IGE0YmQ1ZDIxYzhiMjZjYjJhZjFiMTMyNWYwNTljNGUyYzNlODMzYTQgbGVnYWN5LXRydW5rCiszODA1NiBjZDRkZDZkZDk3MjFiZGE3MGUyYjAxNzgwMTk0Mjg3ZWJkZjEzOTZlIHJlbGVhc2UyNC1tYWludAorMzgwNTcgOThkNzliNDY5ZTc0ZDMxZmQ3MmY4MDZlOTJlNTc4MTk4MzI5MzhhOCBsZWdhY3ktdHJ1bmsKKzM4MDU4IDEyODVjYTEzNDVkNWMzMTMxZGI3NDczMTEyZDc2ODU1MDY0MTQzNzAgcmVsZWFzZTI0LW1haW50CiszODA1OSBhMjM0Mjg0ZjllMDYwMmYxYzVkNGRiMGVjZTVmZjkzZTllZDg3ZGU2IGxlZ2FjeS10cnVuaworMzgwNjAgNDZmYTBlMjBjYmNmZTQwODZmODc2ZWY3M2IyNWFkZmQ0YTkyMDAxNCByZWxlYXNlMjQtbWFpbnQKKzM4MDYxIDE5OTBmN2VjMGQ5YWQwYjBhNzkyMTMwMjE1ZDJlNTk2YzNiYzQ1OTQgcmVsZWFzZTI0LW1haW50CiszODA2MiBkYWJkNDNiZjBkZGRmZWVkNWZlODlkZmMzZWY3MDUyZWVkOGEyNzdhIHJlbGVhc2UyMy1tYWludAorMzgwNjMgYmU5NzZkZGYwZmY3MDcyMWNlNDBhMzQxNzRlYjYwMDFhZGJkOWU1ZSByZWxlYXNlMjMtbWFpbnQKKzM4MDY0IGQ0NzAyZTY3ZTExOTdmYjI5M2M5MDE4OTA3ZDQ0YjU3M2U5ODkzMjMgcmVsZWFzZTIzLW1haW50CiszODA2NSA3ZmI2N2FlOTMxMjhlMTk1MTY1Nzk1ZjQyMGZkOTFiMjBiYzUyZjJlIGxlZ2FjeS10cnVuaworMzgwNjYgYTBjN2RmNTJiYTQxNTczMWE5MmQ2NjQ1NmQ4ODMzYTkyNmIzZDAwZSByZWxlYXNlMjQtbWFpbnQKKzM4MDY3IDljYjhjNjg3ZjNkNjdmZmE3YmI2YzU4ZThkMjIzOGIxZDNkMTI4ZjIgbGVnYWN5LXRydW5rCiszODA2OCAzMDhlZmQ3MjY4YzI2Y2VhYTFlZTdmYTk2ZWE5OTU4YmQ3N2FkZWI3IHJlbGVhc2UyNC1tYWludAorMzgwNjkgN2Q1ZDZiZGM0Zjk3OWQ1YTg1YTgwNjgzMTNkODEwYWY2MDIxN2FjZiBsZWdhY3ktdHJ1bmsKKzM4MDcwIGVhMzQwMDA2YzFmMzBiODZlMTE4MjdmNjBhOTgzZGMyNTljYjNiNWYgcmVsZWFzZTI0LW1haW50CiszODA3MSA4NmE2MGQ0ZmE4N2EzNTZhY2I2NzQwZGUwZmU3YjUwYzNhNmNhZjEyIGxlZ2FjeS10cnVuaworMzgwNzIgMTkyODY5OTRmNzRmMzJhMzE2MDgxYWZlZGU1NjY1YTczZDllMTA3YiByZWxlYXNlMjQtbWFpbnQKKzM4MDczIDdjNDEzZDNhNDBhNTJiYTBjZTJhY2EzYWI1N2Q5NzcwOGVmNjA1ZWYgbGVnYWN5LXRydW5rCiszODA3NCAwMmZjYjVlYjg0Y2I2YTFmYmM2ZmY2ODYxOGUxZTUwZDM1ZjY3YzU0IHJlbGVhc2UyNC1tYWludAorMzgwNzUgMDM0YzYxMWIyZTg0NGUwY2U1YWVjYzZlMGU0NjVhZTcxNzNiZTc0YiBsZWdhY3ktdHJ1bmsKKzM4MDc2IDk4NjU0YmZhODBlYTVkZGIyNDMzODkzNTA3NTEzYTQ5ODQyOTA3YTkgcmVsZWFzZTI0LW1haW50CiszODA3NyAxZThiMDMzZjkxZGMzYmFhOTlmOThiZjY0YjJjYmM1ZmVlYjczNzI5IGxlZ2FjeS10cnVuaworMzgwNzggYTZiYTI4ZDFkODA2YWE4MzE0ODUzMmIwZDFhYjVhYzllMmE2YzNmYyBsZWdhY3ktdHJ1bmsKKzM4MDc5IGFiZTMxNDVkZGU0ZTdjZjY4N2Y5YzIxN2YwMjdiZmRjYWQ0NGE3YTEgcmVsZWFzZTI0LW1haW50CiszODA4MCBiNjYxOTQyM2MxOTYxMDE5NTIwMThmODMyYjVmM2Q2Njc3YWY4OWZiIGxlZ2FjeS10cnVuaworMzgwODEgYzFiNDQwZWFjYmIxODBiZmQ5ZGQ5NDRhMWE4MzZlNjVjZDcyZDNiMSBsZWdhY3ktdHJ1bmsKKzM4MDgyIDk5ZTNkZGIzYTc0YWFkNzlmYzFmYzM4MjdjMGJlZWE2OTI5NTYxY2MgcmVsZWFzZTI0LW1haW50CiszODA4MyA4ZDYwMDc3ZTk5NTE0OTBhOGUyODRlNTgwOWJmMDZmZmQ0OTBmMzRmIHJlbGVhc2UyNC1tYWludAorMzgwODQgNjcxOTM2OTA4M2MxZWI5MjE5ZTQ2ODJmZGVmM2RkYjkwMTg5MTA1YSBsZWdhY3ktdHJ1bmsKKzM4MDg1IDlkYzk2YWM5NDM0MjM4MmRkY2ZiMjQ1NGIxMDYwMWZkMGQyMTI4OWIgcmVsZWFzZTI0LW1haW50CiszODA4NiAyYWE5NmVlM2ZjYjVjOTBiNzJkMjUwMDI0MTI5NDMzOGVmMmY2ZWJiIGxlZ2FjeS10cnVuaworMzgwODcgNGEwYzFlNTE3ZTZiYjBmNThmZDczMzliOGRjNTY2MGZlMGUwMzlkNCByZWxlYXNlMjQtbWFpbnQKKzM4MDg4IDM5MTE3MjZhZWNiOTAwMWU3MTk1ZDdjNjVmODU1MTE5ZGIwZjBjZWQgcmVsZWFzZTI0LW1haW50CiszODA4OSA2NDJkYjFmYjM0ODFiMzNkYWQwNjk3NjU3NTUwZTg0NzlkNTQ1OWM1IHJlbGVhc2UyNC1tYWludAorMzgwOTAgYmJkYzFkNzMxMGY0OTdhNzhiNTMxNmIyZTQ4OGJhNDZiNWI1Y2EzNCBsZWdhY3ktdHJ1bmsKKzM4MDkxIGVjMTkyNWYwN2VjOTdlMDJjM2QxNzZiODNiMzFmN2I3NDUxNjVmZWIgbGVnYWN5LXRydW5rCiszODA5MiBlMjA4OGFlMGQ2N2ZkNjY3ZmZiM2I0MmE2MzNhMGJhZmEwZTU1Njg5IGxlZ2FjeS10cnVuaworMzgwOTMgNTdiMjNlNTc1ZmZjNjMwYzI5YzQ0ZmYwMmEyYzQyOGRjZWQ1ZDg2YyByZWxlYXNlMjMtbWFpbnQKKzM4MDk0IDk1YmJlOTkxZmNjMzMxOWY4Zjk5NjY0ZDE2MDU5MDU0YjFjZjJkYTUgcmVsZWFzZTIzLW1haW50CiszODA5NSBjZmRiZmE1NGRjNmE3MDFjYjU5MDBlMzNmN2M4Yzk2OGUxNmI4YmVjIHJlbGVhc2UyMy1tYWludAorMzgwOTYgYTdmZmRjMDlmMDAyNjdkNzY0OGY0YmNjZGE2MGE3N2RlOWQzODU0NCByZWxlYXNlMjMtbWFpbnQKKzM4MDk3IDY5NDY3MGY2NTI1MWQ1Y2Y4MGZkMTMzZGQ3NTMxNWFhNGE5NzJlZTAgcmVsZWFzZTIzLW1haW50CiszODA5OCA5M2IxYjBiZWJhNTlmOTAzNjI0N2E2NTc2MGMxYzIxNWU4NmQwYjZhIHJlbGVhc2UyNC1tYWludAorMzgwOTkgYWIxYTE3YzYzM2FlYmU5NzA0YTQ5OWVjZDhmNTg3ZmEyYTA1YTVlMSByZWxlYXNlMjQtbWFpbnQKKzM4MTAwIGE0ZDg2OWVjZWYzMzhiZWIzMmVmMjIxY2RjNDdlMWFhZTdiYTE3YjkgcmVsZWFzZTI0LW1haW50CiszODEwMSBjMGNjNjYwMWRkYWRhMmVhNTIwZTUxYWU1ZDIyMWY2YzIyNDY0MGNiIHJlbGVhc2UyNC1tYWludAorMzgxMDIgOTBjZDI0YTFlZTEyNDk2MTAyNGNiZWYzZTYxZTEwY2E0ZWVmODU1NiByZWxlYXNlMjQtbWFpbnQKKzM4MTAzIGFlYTIyMzdiMzg4ZmY3MmZlOTY4ZmMxMTNlZDczODg0YjUzMWJhZjMgbGVnYWN5LXRydW5rCiszODEwNCAyOTIwNjkxZjYzZjA2ODdjYmM1MDBhYzMyMDI1Mzg1MmZmMmJhMGY4IGxlZ2FjeS10cnVuaworMzgxMDUgOTE0NTM0ZjZlZjYxMjZhNDYyZjNmNmNlNWE4MWE4NzFiNzVmYTUwMyBsZWdhY3ktdHJ1bmsKKzM4MTA2IGExNWZhMDU5ZjlmMDMwMDdkMTczNTZlNTVmNDAwZTgzMmE1YjZjMDkgcmVsZWFzZTIzLW1haW50CiszODEwNyBjOWU1ZDFkMWU4ODdjYzAzYWM1ZmU4ODA5YzE0ODk4MzAzMTVmMmY1IHJlbGVhc2UyNC1tYWludAorMzgxMDggZGYwYzJmM2FjYzdjOTYxYjA5NzA0OWViNGE4MDg5MzFlMGIyMzdkZCByZWxlYXNlMjMtbWFpbnQKKzM4MTA5IGIwNDQ3MzVjOTI3YjEwNDI2MTI3ODY3YTE1MTgwMjg0MDdlYjRlYTAgbGVnYWN5LXRydW5rCiszODExMCA0NjM1MzU2OGU0MGQ5OWQzY2ViNTMxZjcxMmI2ZjI4OGU1Yzc1ZDJlIGxlZ2FjeS10cnVuaworMzgxMTEgOTllYmVjMmJlMDMxMjkyMWY4MzZiYmM1YTg3MzI1OTE3MjkyODY5NCBsZWdhY3ktdHJ1bmsKKzM4MTEyIGFhYmExY2U0YjNjYTA1ZmQ5MjBkNmNkNzJmNjI0ZDk1ZGNkYWY5OTQgcmVsZWFzZTI0LW1haW50CiszODExMyA4NmMzYTdjNmIwMGExYWIyODAyYjI1NTU5YWQxMmQ5MmRiMTUyZjhhIGxlZ2FjeS10cnVuaworMzgxMTQgZjU0ZTE0MDAwZDZiZDBlMmFmMWEzY2M5YjVmMmMxOTM4NTllNDMzZCBsZWdhY3ktdHJ1bmsKKzM4MTE1IGU4MmQxODMyNThmOWMxMDY0YThmZTVkMzY3MzExZWY3MzQ3ZDVmZmEgcmVsZWFzZTI0LW1haW50CiszODExNiA1Nzk4YWE2NTRlYzY0MGQ4ZGE5OTUzMTMxNjNiYzA4NGZiNGE3NjE3IHJlbGVhc2UyMy1tYWludAorMzgxMTcgMjg4OTFkYzI1NTgwY2FhYzg3YjBjMGMyYWIwZmYyOTM5MjY5YjgxYiBsZWdhY3ktdHJ1bmsKKzM4MTE4IDU4NDAyM2RhYzQwNjkxNWI1Njg3MmQxYzg4YTM1YTdhZTI4YjEyNDkgcmVsZWFzZTI0LW1haW50CiszODExOSA0ZWMwMDZjYTJiOTFiZWE3ZTUyZDE4MjQ1YTNkMDE1YjE1M2FkN2U0IHJlbGVhc2UyNC1tYWludAorMzgxMjAgZTgxMTUyMTUyNDMzZmIxOGFkZDRlOWFkMDI5N2Q3MGFkODgwNzczNyBsZWdhY3ktdHJ1bmsKKzM4MTIxIGM3MDIzOTBhOGUxMjIyZTk3OTAwN2UxY2E1M2E5ZDY0ODRjNGU4OTkgbGVnYWN5LXRydW5rCiszODEyMiAwZDkxNjNkYTYxYTNiYjAwMzU0OTdiZDAwMGFjM2M2ZDkwNTVkOGI0IGxlZ2FjeS10cnVuaworMzgxMjMgNjQ2MTk1YjU5MjA1NzdkNGY1YjYyZWM1OGZlYWIyZGVkZThhMjU0NCBsZWdhY3ktdHJ1bmsKKzM4MTI0IDc0YTkxZTQ1NTljYTViMjUzMjAzNTM1NWI4ZDgwY2M2ODQzOTZmOWQgbGVnYWN5LXRydW5rCiszODEyNSAzMjFiYzJkNDlhNWEyZTEwZmVjNGU0M2RjMGRiZTg1MGMxODgyOTI1IGxlZ2FjeS10cnVuaworMzgxMjYgNTg2YTc2Zjk2YjA5ZGQ0ZjI0YmMzOWU3ODc0MDM4ZGZmNjRlZGNhZiBsZWdhY3ktdHJ1bmsKKzM4MTI3IDU4OTgxZmU5MGJlZmE0ZTcwMDg0NzhjOWYyZDhkNjIyNGIwMjA5YzggcmVsZWFzZTIzLW1haW50CiszODEyOCAxOTE0YzRkYjRiMjg2MGM5NjU2M2U1MGI4YThiOGRkNzM0MGUzMjE3IGxlZ2FjeS10cnVuaworMzgxMjkgYjJlY2RhNGRkNzBmZGY2OGMwNTBiZWQ4YWNmZDhiMjJkOWU4NmViMyByZWxlYXNlMjQtbWFpbnQKKzM4MTMwIGFmMDEzMzZmZjE5ZGIzMDY4Mjk2YThhNjgzMmI2MjliYWY2ZmMwNDYgcmVsZWFzZTIzLW1haW50CiszODEzMSAwNDQyNzE3NGNmNmFiMTNmN2VmOWJmOGExNzUxMjIxNGI3OTNhZjNjIHJlbGVhc2UyMy1tYWludAorMzgxMzIgMDU1ZGQ3ZjkwYjFlYThiNmVlNmNmODU1YmViOGM1ZmZkNWQwY2NlZCBsZWdhY3ktdHJ1bmsKKzM4MTMzIGE5YTAzMzY4MjliYTA0MDNlYzdjMTNmYmE4YzA1ZDMyYzVmNTVkNmYgbGVnYWN5LXRydW5rCiszODEzNCAwMDA2YjJkZDM3YzIzNjkxZDYyMWViNGIzMDUzMzRkOWYzNjc4OGJhIHJlbGVhc2UyMy1tYWludAorMzgxMzUgMDA1NjJkYWJmZDRmMzdiODMwODdjNjViNDUzNzkzM2M0ZTZiZTI4YSByZWxlYXNlMjQtbWFpbnQKKzM4MTM2IDRhY2Y3YWJlNTgyNTc3ZWU2ZWVhZDcxOGRjNzk2ODYyZmZkNGIyODQgbGVnYWN5LXRydW5rCiszODEzNyBhMTNkOTQ0Y2E3NmM5NzY0ZWMxZWIxZGI0ZWViMTA3Y2Q1MjMzNDlhIGxlZ2FjeS10cnVuaworMzgxMzggMjFkZDUyNGJlMDM2YWNhNGZmYmFkYmI2Yzg1ZTk1NTVlOGRiOTI0ZSByZWxlYXNlMjQtbWFpbnQKKzM4MTM5IDcyY2Q5M2Y0NjNiNWFkMTlhMGI0NzA5NjA4MWE5ZGE1Nzg1NTZmZDMgbGVnYWN5LXRydW5rCiszODE0MCA5Mzc3MmI3MTZlM2Y5MTc4Y2M2ZGM3YzA0MzZhNjEzYmU3MTA5OGVmIHJlbGVhc2UyNC1tYWludAorMzgxNDEgZDhlYzRhZmExZmZiMGFmMmZjMDkxNDhiNTk3OTRkN2I5N2RlMDIwYSByZWxlYXNlMjQtbWFpbnQKKzM4MTQyIGU5Y2VkZTkxZDNjMzJmNmNkMWJlZTQ3Mjk5YmZlZTg5NGQ2YTkyMDkgbGVnYWN5LXRydW5rCiszODE0MyBhZmQ5YjgyZTY4ZjFmOGRhNTQ2MTVjM2JiZmJlYzE3MTY4ZjBiODI3IHJlbGVhc2UyNC1tYWludAorMzgxNDQgYjNhZjdjNmRiMWM2MGRkZDcxNzM1YmIwMzg2NDUyMDIxZGE1ZGNlYSBsZWdhY3ktdHJ1bmsKKzM4MTQ1IGJhOGMzZWFhNDNhNTk3MjZiYjQxNzJkOWFiNTRjNWM5NWYyNDEwYzUgbGVnYWN5LXRydW5rCiszODE0NiBiMmM5OTgxOTgzMDQ5Yzc4MjFlYWRhY2Y0NTMxMTJiYjZmZmU3Y2RiIHJlbGVhc2UyNC1tYWludAorMzgxNDcgZWFiMTc0ZDBlZDAzMWFkNWNmNTQ0ZGY3NWVlZDYzYjVlZTk1MmE5YyByZWxlYXNlMjMtbWFpbnQKKzM4MTQ4IGE4YTRhZmUxOGI2MTM0YTMwMzQzNTdlZjczMzIyZjk4ZTMzYzQ1NDAgbGVnYWN5LXRydW5rCiszODE0OSBlMjIxZDk5NTQ2MjY4OTVhZTUwMDhiM2I5ZGYwY2VmYTA1Nzk0OThkIHJlbGVhc2UyNC1tYWludAorMzgxNTAgZjc1YWM4NmJjZWY0NGVmNGY4MGY0NTc2OTllYWVjNGM5ZTdhNDg1ZiByZWxlYXNlMjMtbWFpbnQKKzM4MTUxIDU3YmZlYjUzZjJmYTM0YjIyM2ZkN2U1NTAwMzgxNzE0MDZjZjU2ZjkgbGVnYWN5LXRydW5rCiszODE1MiAzZWM1NGM1ZjcwODE0OGNiMjYyZGQyMWM4YTM1MWRhNTNkNzQyNWIyIHJlbGVhc2UyNC1tYWludAorMzgxNTMgNWRjMjc0ZTE1ODIyNzY2YmJjYjEzNmVlOWJkNjkyMjQzNTRjYjBmNCBsZWdhY3ktdHJ1bmsKKzM4MTU0IDE4MTBkZmQ2MTVhZTdkZmQ4YWYxN2Y5OGQ5NTc5ZDhhZTE2OTdmZTQgcmVsZWFzZTI0LW1haW50CiszODE1NSA3NjIyOTA5NjUxYzUzZDc4YmM5ZjdhZWMyYWZjNjg3NjExZTc3ZDZmIHJlbGVhc2UyMy1tYWludAorMzgxNTYgNTM2OGQyYjdkNjZhMGE1N2U5ZmFhYWIxOWE3YjU2ODNmNDNiNGUwZiByZWxlYXNlMjQtbWFpbnQKKzM4MTU3IDRkMzgzYjk5OGJiNDhmNDc2OTQyMGExZTc3NTYxYzFkYjNhNzc0NzkgbGVnYWN5LXRydW5rCiszODE1OCBjZDUxNzcwMWZkOTNjOTQ0OGM1ODIzNzE0MjdhYTg0ZjA1NzE1OGE2IGxlZ2FjeS10cnVuaworMzgxNTkgM2U5YTRkNTMxZTU2M2RkOTRkODM2YWI5NDgxMzgzZDA0MDU2OWM0YiBsZWdhY3ktdHJ1bmsKKzM4MTYwIDQwNzI1ZjMwNGUxOGQ3M2Q5NDhhZTFhMGVlOTA1MDRkNmEzYTM0NGMgbGVnYWN5LXRydW5rCiszODE2MSA2N2YyMTkwZTFmNmQ5YjY1MDU1MTkwMTJhYTk5MDQzMjA1YWEzZGI2IHJlbGVhc2UyNC1tYWludAorMzgxNjMgNTZlNjEwMzI3YjgxNmM1YmU3YjlkZjk0ZGQ3MTZhMGFjNTliZWY1MCBsZWdhY3ktdHJ1bmsKKzM4MTY0IGRjOWQwYTllZGU4ODY0ZDNiYjY3OTM2ZGI0ZTcxNGFkOTdhYjBjMTAgcmVsZWFzZTI0LW1haW50CiszODE2NSBkZjM4MGUxOTZjNGI1YWEzNDQ1YTA2NzFkMjMyODNlZjk1MTk2ZjQ2IGxlZ2FjeS10cnVuaworMzgxNjYgMWQ2MjVkYWVkNTk0NDI4MjM2OWI4NWViODBlNTEyOWE2MzJkYWY5YSByZWxlYXNlMjQtbWFpbnQKKzM4MTY3IDFmN2NmODUyMWJiNTg4NmI1YTBmODI0MjNiNGRjNDBmMmMzYTQ5N2EgcmVsZWFzZTI0LW1haW50CiszODE2OCA5OThmYjFlMWM4ZTlhNmQyM2NhMmU2NjMyYjMzZWU1Y2Q3Y2I2OTQzIGxlZ2FjeS10cnVuaworMzgxNjkgY2IzMGNmY2IzOWU3NDQ1NzJhNDI4N2NmYmIzZTNmMGE4NDJjNmU5NSBsZWdhY3ktdHJ1bmsKKzM4MTcwIDk5MTA0MWY3NjQ0NzhjOTA1YWVmYjM5MzBlNzM5NmI4NDMzMjA2YjAgbGVnYWN5LXRydW5rCiszODE3MSAwYzMyNjMyN2U3MjIzOTFiNmM2NGNjMzVjNWJmNzFlNDdjZmIwZGRmIGxlZ2FjeS10cnVuaworMzgxNzIgZjFjMzVkYTY0ZDU1NGQzZDZhNWMwNTRhODE0NDQzMTJhZjgxOTg4OCBsZWdhY3ktdHJ1bmsKKzM4MTczIGYwMGJjMjczYWU3MGQxZTlkYmFlMWNjNGQ0OWQxYTQwZDM2MDY4NWYgcmVsZWFzZTIzLW1haW50CiszODE3NCBlOGJmNjIwODNhYzQ0NDZmMzI2ZjE5MzQ5Y2YxYzBmYzVjYjY0YTAyIHJlbGVhc2UyMy1tYWludAorMzgxNzUgNjBhNGIwNjRhMjQ4MGE3MDk3YzZkMmQyNmFhZjU3NTE1NDM2ZDE0ZCByZWxlYXNlMjMtbWFpbnQKKzM4MTc2IGJiY2Q4MTI3YjMyNjgyOTQ2NWJiNDRhYjBlM2RiY2U5ODIwNzUxZTkgcmVsZWFzZTIzLW1haW50CiszODE3NyA2MTI3YzA4OWEwNmM5ZTIyYjVlNGNkZTc5MDFhM2NkN2EzNDA2ZGQ3IGxlZ2FjeS10cnVuaworMzgxNzggNzlhZGUyZGRkMzA2ODgxZDE0NGEyNTE1ZDc1YzY0OTQ2N2M1NjU0ZSBsZWdhY3ktdHJ1bmsKKzM4MTc5IDcyNDE3ZmEyMWM3ZmNkNzVlOTViN2E5YjVmNTA1NDZlMzVlOWVmMDggbGVnYWN5LXRydW5rCiszODE4MCAzMjE2M2E4YzNiNjlkMzg3MGI1ZmRmNDQzY2ZjMmI2N2M5ODQ2MWZiIHJlbGVhc2UyMy1tYWludAorMzgxODEgZTU4Y2UwNDA2NmNkODIyYTBjZGVhNGIzMmVlNjE1Zjc0MmM3YzgwZCByZWxlYXNlMjQtbWFpbnQKKzM4MTgyIGE2YzgxYWQxZjQ0Y2I3NDMwYmNmYTA2NDlkOTMwMmFlODYyOTRmYzAgcmVsZWFzZTIzLW1haW50CiszODE4MyBhZDhmOWU3NWY2MWQyNDIwOGY1NGVlZjNlODI3OTg1YTQ2OGM0Mjc2IGxlZ2FjeS10cnVuaworMzgxODQgMmJiYzhiNGI1YjkzNzVjMjM0Yjg1YmEzNTEwYjgwZTVlNThiMTEwYSByZWxlYXNlMjQtbWFpbnQKKzM4MTg1IDA5NzQzNzYzNDk2ODliYjI2MTY1OGYyMmNiZWM1N2NkZDYzOGE0MmEgcmVsZWFzZTIzLW1haW50CiszODE4NiBmMWFlNDFlOGFiZjM4OTFlOTZhNjc2YmVjOTU4ODg0ZGMyN2JkYjI4IHJlbGVhc2UyMy1tYWludAorMzgxODcgYjY0N2VkZDNiOTZiODFmNWM1Y2Q3NzRhYTFmZDdiODI2NzJiZjhhYiByZWxlYXNlMjMtbWFpbnQKKzM4MTg4IDQxY2E3Yjc2OGI0ZmY0ZWZlNTg0ZjdlNDQ4NzY5Yjc1YTFkODk4Y2IgbGVnYWN5LXRydW5rCiszODE4OSAzYTk1MGYxYWZjNTVmZjM3NmI3OGJjYzVkZTZmNzFmMWVlMzEwYTQxIHJlbGVhc2UyNC1tYWludAorMzgxOTAgOWRkODdiYTYxNzk1NTAxYTA3OTQ2NzU1NWIzOTRjMTMyNGM2MjE0ZiByZWxlYXNlMjMtbWFpbnQKKzM4MTkxIGVlODA4ZTA4ZGQ2ZmI4OTk1NWMwNTRkYTY2NTYxNWU2YWVmYzI4NDQgbGVnYWN5LXRydW5rCiszODE5MiAwNjY0M2YwNzEzMzUwOTMwNDliZmFhMjllZjI0Mjc0ODE0ZDJmYTk2IGxlZ2FjeS10cnVuaworMzgxOTMgNGU1ZjA2YzRmOTU3OWNiYzdiYmQ1NmY0YzQxNWZjODkyNzJjODhiNyBsZWdhY3ktdHJ1bmsKKzM4MTk0IGZmZTc1NDJmOGYxZjdhNzg0NTQ3YmMxNjM3MjQwZjZiOWVkZjVlYTYgbGVnYWN5LXRydW5rCiszODE5NSA5Y2FmOWNkNTQ1M2Q5ZTk2MjU2MWU1ZDI3YmQyNTUxYTNlMWFhZDY1IGxlZ2FjeS10cnVuaworMzgxOTcgNDQ2MTFlNTQ5OWU3YzI3ZTc2ZWQ2MjIxOGMzNDEwNjU0Y2Q3YmQxOCByZWxlYXNlMjQtbWFpbnQKKzM4MTk4IDNmYzhlY2U5ZDJiODBhNDAwYWFmMDg4YjAxMzJmMmU5YmJkYTIzNmEgbGVnYWN5LXRydW5rCiszODE5OSBhNjJiM2I0ZmY1MmNiOTE4OTc5MDU0MjRhYzEwZDk3YzZiNTdiZWUyIHJlbGVhc2UyNC1tYWludAorMzgyMDAgYWVjNTk2NjUwMjkyMzQ0MjZjZjAyMzRmNjhmYjcxMDRmZjYwOTFiNyByZWxlYXNlMjQtbWFpbnQKKzM4MjAxIGQ5MjZiOGE1ZWY2ZTM0YTI0M2ZjMGVmNDI1NmJhNDBjM2VjNzBkNjAgcmVsZWFzZTI0LW1haW50CiszODIwMiA4NGY0M2QzYTE1MzU0YTI0NDg1NGNjNGZiZGJhOWQ1ZTMwNWNjMTlhIGxlZ2FjeS10cnVuaworMzgyMDMgZTZiZjJlNzI5NDFlZTBlZWYzNTFiMDc1MGYxZGFjY2MzYjg5NGViOSByZWxlYXNlMjQtbWFpbnQKKzM4MjA0IGUxNWNiNjJiM2ZmYmRlMGIyN2EwZDEyNGYzOWEzZmYxNzRmMzg4N2UgbGVnYWN5LXRydW5rCiszODIwNSBiYTI0YTAzMjRhMDMzYWVjZDM3ZDYwNjc3NWVlYjYyNmRiYTFkOTEyIGxlZ2FjeS10cnVuaworMzgyMDYgZGY5NWE0MTUxNWM0MTQ0Y2FhYzVhYzk4MDI5NTEwYTA4NTU3YjNkZSByZWxlYXNlMjQtbWFpbnQKKzM4MjA3IGJlNDkyOWU1MTc5YmMwYjMyOWIxMTQ5ZDQwMmNlMWJjMmUxOTQ5Y2EgbGVnYWN5LXRydW5rCiszODIwOCBmODBiYjhhZmY0MTkyZmNkMjI0NDNkNmM1YTQxNTg5MTRjZDRjOTgxIGxlZ2FjeS10cnVuaworMzgyMDkgOGY4ZjU2MGNlYzk3ZWM1YmJiOGQxODQxMDlmMjUwNWMyYzcwMWRlNSBhc3QtYnJhbmNoCiszODIxMCAyMDgwYzhjNDc3Mjk3N2Q4OTg1YmYzNmI1OTYwYTAwOTE1ZDY0NTUyIGFzdC1icmFuY2gKKzM4MjEyIGY0MmE3YzMzNWE1YjlhYjAwYzAzNDIxM2FlYzIxNjA4NDNhMzlhOTAgbGVnYWN5LXRydW5rCiszODIxMyA4MjQzZTUxYTIyZGVlZmU2NTI0YzNiMDNmNWQ5YWU4YWE0MDBiOTc3IGxlZ2FjeS10cnVuaworMzgyMTQgYTBjMGNkM2U4MWZkNDc3YjhjZjVlMGUwNzZhNTE2NTgyN2E2MzA0YiBsZWdhY3ktdHJ1bmsKKzM4MjE1IGJhZWIwOWY2MGM4MjgyNjVhZWQwZDVjM2E4MzhmZWUxYTZlZTlkMTcgbGVnYWN5LXRydW5rCiszODIxNiAzZmVlN2M5MTE2YzkxZmQ5NTBiYzZmNjYzMDVhNTA3N2Y2NWVjOTdiIHJlbGVhc2UyMy1tYWludAorMzgyMTcgMjZjY2NmM2U4NDgyOTYyNmY1YjAyMWI3NWRhZWNkMzVhOTkxNTU5ZCByZWxlYXNlMjQtbWFpbnQKKzM4MjE4IGE4ZWNkNGE5NjgyNTY5NTFmOTkwYzQ3Y2MwNGJlYzYwMGU5MTM3YjkgbGVnYWN5LXRydW5rCiszODIxOSA2M2YzNDQ1ZjJmNTk3MzUwNzc4YzhkNzQ0ZDA3N2FlZjAxYjliYmM5IHJlbGVhc2UyNC1tYWludAorMzgyMjAgNTZlMGNjNDM3YjhiNTA1ZjIyYTRjZjQ2MjA4YWFhMTM5ZGMwZGZlMSByZWxlYXNlMjQtbWFpbnQKKzM4MjIxIDY4MDA2MDAyNzllZDYzZTFjNWZlYWE1ZGRhNmNlY2RjY2U3NWY2YTcgbGVnYWN5LXRydW5rCiszODIyMiBmMjYzZjk0M2VmN2IyMGFhMGY3NWU0Y2E0ZjFiNWMxOTZhYzAxODUwIHJlbGVhc2UyNC1tYWludAorMzgyMjMgYTEyM2ZiNGQ0NWJmNGE2N2Q0NTAyNTMyZTc2NGQ4NTEwMzkzZmFjZSByZWxlYXNlMjMtbWFpbnQKKzM4MjI0IGNhN2Y0MzE1YjIxMjZmN2M2NGYyMzUzMjMxNGRmZTQyYTJlMjMyNjggcmVsZWFzZTI0LW1haW50CiszODIyNSBlNTFhODIxNjI4NDY0ZjI1Y2JhYjY3YjRhMDk2NThiNzMwNTAxNWUwIGxlZ2FjeS10cnVuaworMzgyMjYgYjJkMzg3OTAwNGNkMDZkYzMxNWI1ZGVmMjA3YTY1ODE2YWZiYTY2YyByZWxlYXNlMjMtbWFpbnQKKzM4MjI3IGI3YmNiZTM5OGJhYTY4OWFkZjI4NDViN2QyNDA4YzA4MDE1ZDI4NDAgcmVsZWFzZTI0LW1haW50CiszODIyOCBiMWE4NDIzM2Q4NTU3ZDNlMjE5ZmRkMDZhNTJlN2VjM2JjZTM1MTExIGxlZ2FjeS10cnVuaworMzgyMjkgZjBkYjliMTg2ZjNkZGMwZTFjNzFkYjBjYTk3MTdiYjBkZjAyZDQ0NyBhc3QtYnJhbmNoCiszODIzMCBkODFiNjE3M2YwNTBiZjk4Y2QyODE2NDJhMTVlZDI2ZjVjY2YxMDRkIGxlZ2FjeS10cnVuaworMzgyMzEgMjMzNjY4ODljNmI5NGMyYWJiN2I1ZDc4YTA1MDdmMzRmOWUzZmUwYiBsZWdhY3ktdHJ1bmsKKzM4MjMyIDg2MTgxNjhkY2EyNzA1NDViYjVlYWZiMDBkYWRlM2M3ZTE4ZDQxM2IgbGVnYWN5LXRydW5rCiszODIzMyBjYzI3YjI0OTc1NWRlNmVlZGE1MDU2ZGFlMzA5YzU1MDc5ODJjNTRjIGxlZ2FjeS10cnVuaworMzgyMzQgMzVmMzE3OTBjNmY5NmJhZmE5MTY4NTUwMTcwNTE2ZWQ2MWJiNjQ5ZSBsZWdhY3ktdHJ1bmsKKzM4MjM1IDE5ZTYxYTJhNTYzMjBjNjUwNjFmNDQ2NTg5YjFjODcyMjk1ODEwNDggbGVnYWN5LXRydW5rCiszODIzNiBhYTI0NmI5ZjYxODRmYjlhOGZlZmRkMWI5YjAyMzE5MGNiNmMyNmIzIGxlZ2FjeS10cnVuaworMzgyMzcgYjIyZWJmYzQ4OGYzMDI0ZjBkMzgxZGNiYzM1MmRhOGMzMWIyNDU1NyBsZWdhY3ktdHJ1bmsKKzM4MjM4IDVjZDRmZmZhZjkxMDVhZjgzNDY2YThkOTEzMjkzOTQ3YjkyNTM2NzAgbGVnYWN5LXRydW5rCiszODIzOSBkYmJlODNjMzI5NGEzZTMxYjBhMDk3ZDc2N2RmMWI1YzZhZGMxYzQ4IGxlZ2FjeS10cnVuaworMzgyNDAgZmY3M2UxNWEzZmI5MjNhMTk5MmE2NzQ2MDljNWE4NDQwYTRlMmZhYyBsZWdhY3ktdHJ1bmsKKzM4MjQxIGNlMjMyMDcyZWFlNjQ5M2JkMTc0ZmM0NTZhY2QyNDA0MDc3NjU0N2QgbGVnYWN5LXRydW5rCiszODI0MiA4YThkODQ0NzY3YjY2NjJmMDU1NzIyYWU5OTkzZWRiMTY0ZWQyZjNhIGxlZ2FjeS10cnVuaworMzgyNDMgY2RhYTE2ODY5NjA4NTVkZGQ4ODc1YTYzZTU5MjJjMjA4NDBmMGVkZSBsZWdhY3ktdHJ1bmsKKzM4MjQ0IGI4OTg4MTM0ODM3NTM1ZDkxMmVjMWE3NWFjMzMyMzA1ZWI0M2M1YzggbGVnYWN5LXRydW5rCiszODI0NSA5ZTMwZDllMmI0MzM2MzkyNTU3NjZhN2I1OTFjNjY2Zjc4MDk5Yzk5IHJlbGVhc2UyNC1tYWludAorMzgyNDYgYzU5NzU0MzNhYTY4NzdmOWQ4MjRiZmNhNTM3ZWVkOWExYmEyZDBiNSBsZWdhY3ktdHJ1bmsKKzM4MjQ3IDJiNDg1OTc0YjQ3MTViYzYyNmFiZTgzYTNmMzc5ZWZmMmRmZjcyMmYgbGVnYWN5LXRydW5rCiszODI0OCBhOTRkYTJjNmE2MjZlNGQzNGQ5YjY5MTVmOGVjYWVkZjQyYmFhNmNiIHJlbGVhc2UyNC1tYWludAorMzgyNDkgYTBiYzQ0MTk2NjNjMzEwNWVhMTQzOGYyMWE2NTMzMTcxNzQ0NzczZSBsZWdhY3ktdHJ1bmsKKzM4MjUwIDI4N2U3MWY0NGQ3OTY5OGQyNjUzNTkwMWQwZGQ2ZjAxMzBmODE1NmIgcmVsZWFzZTI0LW1haW50CiszODI1MSAxYWVhODE1NTFhMjIyZjZiZmIyMjlmZDVkZGZkN2I2NGM1MGU5MDQ2IGFzdC1icmFuY2gKKzM4MjUyIGJhNmUxNzI3MWM2Mjg5MTY5MTEyMTVkZTA3NTc2M2UxYmNjMGY3NmMgbGVnYWN5LXRydW5rCiszODI1MyA0YmQxODBkMTcxY2MwMzQ0ODU3MTBlZjNlNDljZGRkNDE1OTNlM2ZiIGxlZ2FjeS10cnVuaworMzgyNTQgYTMxNjgxYTZjZjg4NzI4NzgzZmYwMDQ5YjYxOTkyMDJmM2VkZWJjNyBsZWdhY3ktdHJ1bmsKKzM4MjU1IDE4Y2ZmM2VkNzRkM2Q5NmRmOWNmMDk2YWFiYTZjOWEwZTNjN2U5ZjMgcmVsZWFzZTI0LW1haW50CiszODI1NiBhMjE2MDAzY2VmMDQ0MDJkODBlMTU1ZGFmNWEzMDA3MGRiN2Y0YTI2IGxlZ2FjeS10cnVuaworMzgyNTcgMzUzM2UzY2I3Yjk3YTU3ZTkzMjM5NWZkNGE0YzU3MTYxMDAxODU4NCBsZWdhY3ktdHJ1bmsKKzM4MjU4IDkxZDU1YTMwMzgyY2JiMDgxNDc5ZjIzODY0NWViZTQwNDg3NzhiZmEgbGVnYWN5LXRydW5rCiszODI1OSBmMjVkY2Q3ZjNlNDg4MGMwNDg3YjE4MDAyMTUyZGQyN2ZjYTVmOGY5IHJlbGVhc2UyNC1tYWludAorMzgyNjAgNTk4ZDE2ZmEwMmMxOTkxMjE0OGM0ZDMyZTdmOTk1NzEwZGE2YTU4YSBsZWdhY3ktdHJ1bmsKKzM4MjYxIDczOTFlMThiMGE3Y2RkZWY2NDQ3NDk2YWJjN2UzMzUxZTUwYjAxNGMgbGVnYWN5LXRydW5rCiszODI2MiAyOGY4NDkzODQ2OGRlYTFlNTNjMWEzZjQwYjMzYmM4NzkyM2ZmMzNjIGxlZ2FjeS10cnVuaworMzgyNjMgMGExNjA4YTVlYjA1YWVlNDlhNDgzOTU3MDQzYTYyZjhhMjE0MDUxYyBsZWdhY3ktdHJ1bmsKKzM4MjY0IGUyYzEwOTdkN2U4ZmIwYmU1MTc4MzNkMzllYmM3YmNhYTBiOWZkYWEgbGVnYWN5LXRydW5rCiszODI2NSBiNmVjMWIzYjlmY2U3OWM3N2RmMTcyNjc1ODU2ZmVlNjY3ZjA0YTI4IGxlZ2FjeS10cnVuaworMzgyNjYgYjQ4MGFiYWYxZjZmNmU2YWI3ZDJhNTNhMjE3NmNmZGE5NTZkNWM4NSBsZWdhY3ktdHJ1bmsKKzM4MjY3IDZjMDJiYjNmY2NhNjc5MDk4MDk4MmUwZjFkMDlkMTNlNjU1YTkwZDUgbGVnYWN5LXRydW5rCiszODI2OCA3MDU5ZmI4YjllYjM5MzRlNWVmNTE3MDZkN2NjYWMzNWQwMDVjMzg4IGxlZ2FjeS10cnVuaworMzgyNjkgYzRkYjk5MmY4NDBmMzA0ZWRjYTYwYTI3MzJjOTI0Mjk0ZjNhNmY0ZiByZWxlYXNlMjMtbWFpbnQKKzM4MjcwIDQ1YTMyMGYzOGM0ODkwMWYzNWJjNGNmZTIxMzU1ZmU1ZTdkYmM0ODIgbGVnYWN5LXRydW5rCiszODI3MSBkNzk2ODYyMWQyOGQyZTdjZDE5NWFlOGMxMzIyY2UxMDNhMDMzMjI0IHJlbGVhc2UyNC1tYWludAorMzgyNzIgOGJiNDZmZGNlOGZkMzg0NDFlYTdjMjQ1NTI4ZDY2MmE5NTY2MzQ4OSBsZWdhY3ktdHJ1bmsKKzM4MjczIGE5OWY1YWQyOWVhYzY0YTJiZjA0N2JhYmY5ZGE0NWQyODlmYjY0MzAgcmVsZWFzZTI0LW1haW50CiszODI3NCA4ZWNhOGQ5ODAyNjBkZWQyNWEyY2NlMTg4N2IxY2UzNWNiY2UxOGU3IGxlZ2FjeS10cnVuaworMzgyNzUgMTNhODU4MDZiYTQ4Yzk3OTMzMTBhNzI4NDdmZDM0YjgxNmMzOTQ3MyBsZWdhY3ktdHJ1bmsKKzM4Mjc2IGE4NTk5Yzc4ODIxOGQ4ODg1MjI3YWUzOWZmNWM4OWM5YzljOTNiOWQgbGVnYWN5LXRydW5rCiszODI3NyA0MjgyZjg4MmIyODU5NTZlM2JlYWQ3YjEwYjNjNGJkYmQ2ODg1MTZiIGxlZ2FjeS10cnVuaworMzgyNzggYjkzODQ1Y2U0NDU0OTVlM2I0ODVjYjZiMzlhZWQ1ZjE4M2I3MDExMCBsZWdhY3ktdHJ1bmsKKzM4Mjc5IGM4OGFiMjkyYmYwNTI4YWE5NWE2NzEyZDBmMTI1OWEwMjEyODVkNDEgbGVnYWN5LXRydW5rCiszODI4MCA3MmZkMzczY2QwZjk1YTFjMmY2ZWQ0NWM2YTE5NzBhNjlmMjIwZmNlIGxlZ2FjeS10cnVuaworMzgyODEgMWQ4NjZjMDJhOGNhYjIwNWJiMWE0MDJiYTk3NzBhZTQ1ZWE0YTk0MyBsZWdhY3ktdHJ1bmsKKzM4MjgyIGE3MGRkODc2N2IwNzFiMzQyNjZkZGJiMDYyZTVjNjMyMmY0Zjg4OGUgbGVnYWN5LXRydW5rCiszODI4MyAwMmYzOThmYmIwZjA2ZDE3YzQ1YjNhYjA2ZTQyOGJjOGMxNThlMDczIGxlZ2FjeS10cnVuaworMzgyODQgYjMyYWUwZWVjZGVlNzFhZDBmYzRiNzg0OWVjYmU3MmY0OWRmZTc0NiBsZWdhY3ktdHJ1bmsKKzM4Mjg1IDhmNTczMGEzYmM0YWJmNzI3ZTk0MzczNDY2OTQ1ZDY5ODIwNjYzZDggbGVnYWN5LXRydW5rCiszODI4NiAzNDczOTJjOGViOGIzNmM1M2NiNWVlYTIwYjIxMTM2NmRjMzM2MzMzIGxlZ2FjeS10cnVuaworMzgyODcgOGZjMDMwYzVjNzBhYmUyOTE5MTI0NTQ2NGZjODhlM2E5YjkzZWVkMCByZWxlYXNlMjQtbWFpbnQKKzM4Mjg4IDU2M2NiZjRkNmJlNDY1NjVmNDVmMDQwNWJlZDgzZTIxZDc1ZTA5NDkgbGVnYWN5LXRydW5rCiszODI4OSBmZTdhMTU0N2YyZmFlYTQ0OGZlYWJlNmU1MTZjM2JlNDY3M2FkMTFlIGxlZ2FjeS10cnVuaworMzgyOTAgZmE2NWUzNDI1YTRjNWFkNmQxYTBlZDYwNzFkNGUxYzA1ODkwNWEyNSBsZWdhY3ktdHJ1bmsKKzM4MjkxIDY1MmI4NWQzNWE3NWRkYTEwZTJkMzMxYTU3NmU5M2EwZjczNzA3ZWQgbGVnYWN5LXRydW5rCiszODI5MiAyNjlhMmMxNGJjNTcwODRkMzZkODNjYmQxY2VjOTgzMmFiZmZlZDEyIGxlZ2FjeS10cnVuaworMzgyOTMgMzMxNmFhNTQwZTY4YzgwNzI4NDE5MWVlOTYyZmYxYjYyZDQ0OTc3YyBsZWdhY3ktdHJ1bmsKKzM4Mjk0IDEzOTM0MzQzYTUzYjgzMjYzMjQyNzE1OGJlNWFjOGE0NjBkZWM1ZTggbGVnYWN5LXRydW5rCiszODI5NSA1NDQ5YjdmODA2ZmI3ZGYyYzIyZWYzODAxZWVjMTU3ZGE0MWZlM2ExIGxlZ2FjeS10cnVuaworMzgyOTYgNWJkMmIzZTRmZGNjNGY1NzEzMDkyMGNiZTUwNTUzMGNiZjYyMGVlMiBsZWdhY3ktdHJ1bmsKKzM4Mjk3IDg0MzZhMjk1NTkxYjY4Y2E4MGE5MDQxZjZmNjRkNDlmZWE1ZDlhNmEgbGVnYWN5LXRydW5rCiszODI5OCA0YjhmYThiMGFmOTE2ZWU1ZDA0MmYyYWUyYWI3ZmJjZjNmZjAxZDcyIGxlZ2FjeS10cnVuaworMzgyOTkgZGMwOWNjOWIyZWU2Yzc4ZDI4NGQ1M2VhNTMzZTBlMDFmNzkyM2EwYSBhc3QtYnJhbmNoCiszODMwMCA2ODljMjMzODVlNGY5ZGQxMjNkNzkyYzcxMTM3N2JhOWI3MGFkYTA5IGFzdC1icmFuY2gKKzM4MzAxIDRhZjNiZmZlNTYyMDNhZWQyMmNjZTE0NThjYjQ4ZDEyNTg3OGI5OGYgbGVnYWN5LXRydW5rCiszODMwMiA3MjhlZGVmYjFlMTczNTZlOGY3ZDYyYmMwN2E2NWJjMjZjZGU2YjhiIGxlZ2FjeS10cnVuaworMzgzMDMgZTEzMDU4OTRiZjA5NmE4YzljOTZlY2FiNzk4M2UwODQyNDM5MjU1NyBhc3QtYnJhbmNoCiszODMwNCA0OTAxN2Q5ZWY2Yzk4NmI2ODczOGY0ZjFlODFjNmFhODhhZjIwMjNmIGFzdC1icmFuY2gKKzM4MzA1IDRiNzRmZjA3OTY1MmJmNWRiMDI5MWE5N2Y3ZjMzMTYyMjM5ODVmNzAgbGVnYWN5LXRydW5rCiszODMwNiA2OWI2OGY5MWNjNzc2NjkwY2I2MzIzYjQ5ZTQzMDBiODEwY2ExNDU2IGxlZ2FjeS10cnVuaworMzgzMDcgZjU2NDYzNDk0YmZkOTRlZTVhN2QwOTcwM2VkOWMxOGU2NjllNTE1MyByZWxlYXNlMjQtbWFpbnQKKzM4MzA4IDAzOTgwN2UxZTRkMTI4MmI5NzFmOTE4ZmE3MTE0ZTJhYzFhMGJjYTUgcmVsZWFzZTI0LW1haW50CiszODMwOSBlMWE3ZWI4MzJjYjUxYWJmOGI3ZGY1MmI1ZmZmMDI3MGYwZDUyMjFiIHJlbGVhc2UyMy1tYWludAorMzgzMTAgNGFhNTU0YjAwY2IwYjU1NmQwMjgzYzEzOTgwNGI1ODc4MTg4ZWNkMyByZWxlYXNlMjMtbWFpbnQKKzM4MzExIDIyNDZhYjkyMmViNDhlNDAwMDM3YWYxODQ3YjI5YjAzZmQ5ZDIzNTEgcmVsZWFzZTIzLW1haW50CiszODMxMiA5NTVkYTA4MGIwY2YzNjgwY2I5ZDk3YjY3MjYxN2Q5MTUyNWIzZWEzIHJlbGVhc2UyMy1tYWludAorMzgzMTMgN2Q5OTk4MWIyZWNlMzJlZDdhODcyMGNjYzY5ZDkwY2RhODcxZjQ3MyByZWxlYXNlMjMtbWFpbnQKKzM4MzE0IDZmZGJjNGU4MzNlMjBmZjk0NjcyNjk2ZmNmODNmMGVhMzRiZjZhNWMgcmVsZWFzZTIzLW1haW50CiszODMxNSA3NzVhNzJiOWQ1MmNkYzc2OGEyOWU4NTExYWZlOWJiOTlhMmY2YzcwIGxlZ2FjeS10cnVuaworMzgzMTYgZWQ0ZGMwNWVhNGI4YzEyNmFhNzA3YWIwZTM2OTE5ODg4YjdjYjY1OSBsZWdhY3ktdHJ1bmsKKzM4MzE3IDE4ZjZjZWJlNDdhYWFlNzM1OTlkMmUzZWNhOWM0NjFlYjNhYWIwMWEgbGVnYWN5LXRydW5rCiszODMxOCA2ODM3MTllMDQyMTgxODJiMDJlZDZhM2NkODQwYTc3YzcwYjVjNTNmIGxlZ2FjeS10cnVuaworMzgzMTkgY2Q2YjU0YmEyNzJmYjQ3NzRiZjdkOWRjNGI5NGY3MGZiYjE5MzdkNiBsZWdhY3ktdHJ1bmsKKzM4MzIwIGQ5M2I2OGE5OWY5NmUzODE1NjQyZmUzNjQxM2JlZmVlNDJkOGY5NjcgcmVsZWFzZTIzLW1haW50CiszODMyMSA2Y2YzOTlhYWZjNjY4ZTQ0MjYzYzBjMTFjMjdiODQxNmYzOTg3ZGIxIGxlZ2FjeS10cnVuaworMzgzMjIgMjFkZDczM2ViMTE4YzNiYWZlNzlmODc4Y2Y2MGNjN2M3N2RmNGMzMSByZWxlYXNlMjQtbWFpbnQKKzM4MzIzIDhjMGUzYzBhMjMzY2FjM2FjNDdmMGE1NzNhYjRmMWNlOGQxNjg5YjAgcmVsZWFzZTIzLW1haW50CiszODMyNCBhMDYzZjBkNmRiMjgwZTRlNDVmZGI5YTQ4YzY2NjM0MjE0NTIwOTk2IGxlZ2FjeS10cnVuaworMzgzMjUgYWY2MzBlYjI2ZDU5YjdmMWNkOTQ4Y2ZiNjFkZTgxOGQyZDVjMmQxZSByZWxlYXNlMjQtbWFpbnQKKzM4MzI2IDI5MzFmNjUwNGFmNWMzZDYwYWUyYmVhNmJjYzBjNWM2ZTIxMmRlZGIgcmVsZWFzZTIzLW1haW50CiszODMyNyAyZWVlOTBlZjMyYWJjNzI3NWE3ZDY2ODU4YTY3ZmYyNDdlMmM4YzU5IHJlbGVhc2UyMy1tYWludAorMzgzMjggYWQxMjYwNTRhZGU1NzUwMGM5ZTQ3OTk4M2Y2NmYwMWRlMDM3ZDNiZSByZWxlYXNlMjQtbWFpbnQKKzM4MzI5IDY3MGRlMzAxYjg4N2YxMDFiYWY5NDVlMjM4NDJkMjI5ZmE2MGRkMWYgbGVnYWN5LXRydW5rCiszODMzMCA1OTUyM2ViMzVjMWQ3MTI2YzAxN2YxZDI0NDhmYzRkOTIzY2NjZTM3IGxlZ2FjeS10cnVuaworMzgzMzEgYTA5M2FlYmYxYjQwZTdkMTE2YzdkZjM0ODZlYjdjNzMxZTNmNmJjNCByZWxlYXNlMjQtbWFpbnQKKzM4MzMyIDY2MDVlMTJiYzE2ZDcxM2UzNzkyNjAyMzEwZGQ5NDE0MWUxNDI5MjQgcmVsZWFzZTIzLW1haW50CiszODMzMyA1MWEwZjBhZDQ2YWMwZDljMzE3YzVmODI5YWVhNWVlZTc4NDdlZGE0IGxlZ2FjeS10cnVuaworMzgzMzQgNzBhMDQ0OTc1NWUyNjFkYjgzYmZjYmI4OTViZDdkOGFmNGM0NjlhZiByZWxlYXNlMjMtbWFpbnQKKzM4MzM1IDFmNWMyMzUxNjA1YTE1N2RjZTFjOWI4NzIwMmI2NGY5NjIyNDJlNmQgYXN0LWJyYW5jaAorMzgzMzYgMzI5OGFlNmYzNjY1ODdjMDU3OGUzMTg1MTljNDE0Zjk1MTIxNGU3OCBhc3QtYnJhbmNoCiszODMzNyA4YjY1NDhmNWYyNzlkZDk0YTBkOGVhYTYzNTVhMTI1OTRlOTc4NmEyIHJlbGVhc2UyMy1tYWludAorMzgzMzggY2MzYmQ0ZTRkOWYwYTU2MzE1M2UxYjRjYmE0Nzc5ZTcwMTQ1MzBlNyByZWxlYXNlMjQtbWFpbnQKKzM4MzM5IDAxMzNiMDIyNjI2ZWIyY2I0NWZlNjdiNmJhZWU1N2IwMjExMmMwOWMgcmVsZWFzZTI0LW1haW50CiszODM0MCBkNWRkZDA2ZDU1ZmM5ZGEzZjFmNGEwNDg3ZmMwMmYzYWRlNWY5ZjQyIHJlbGVhc2UyMy1tYWludAorMzgzNDEgOWQ3NjM5MzdhMjViNGI0OGFmNDgwMGMyNmNhZGI0YTI5YjBkOGFhYyByZWxlYXNlMjQtbWFpbnQKKzM4MzQyIGZmNTNkMTQ3MTdjNTI4MTM1YTQ1NDQ0NjdlZDU0M2ZkZjlhOWRmMzkgcmVsZWFzZTIzLW1haW50CiszODM0MyA3ZGYwNzdmNDcwNTY5MGQyNWNkN2E1N2RkMThmOTA4NjhjODhkZDA1IGxlZ2FjeS10cnVuaworMzgzNDQgZDVjZTg4ZWJkYmJkMGQ3NTAxOThjNDQ3ZGQwMGNjNWNiYWZlYmVlOSByZWxlYXNlMjMtbWFpbnQKKzM4MzQ1IDgzYzk3NWI0YTJjMzcyMmEwNmQyYjU5MzM5ODIyZTZjODM1MzBlNTAgcmVsZWFzZTI0LW1haW50CiszODM0NiBjNDQxMzMwN2EyZjMxMGJjYjc2NzVlMjZhNTcyMTkyYjFhYjNhMWVjIGxlZ2FjeS10cnVuaworMzgzNDcgZjczOGQ2NGM4MjdkMzA4NzE4MDZmYjcwNDYyMzM0MGZhZDliMzY1NiByZWxlYXNlMjQtbWFpbnQKKzM4MzQ4IDYzZmNkNjdlMzMyOWFiM2MxMjA2ZTNkMWMwMmQzODUyZWEyNjQ1MjIgcmVsZWFzZTI0LW1haW50CiszODM0OSAyYjI1OGYwY2JjMzFjYjk1ZDFmMTJjYWIwOTE4NzQ0MWJkZThjNGNkIGxlZ2FjeS10cnVuaworMzgzNTAgMGY0MWZlM2ZhZGY0NWUxZjg5Y2I0YjAyYTBkNzc2MTQ4YzA4ZjE4OSByZWxlYXNlMjQtbWFpbnQKKzM4MzUxIGYyNDZlNDQ4NTYzN2E5NGU0NDEwODBlNjViNTk1ZGQ3OTcwYzI4NmIgcmVsZWFzZTIzLW1haW50CiszODM1MiA3ZjUyNDE3ZTUzMGIzNGRiMjkwNjliYzI4YTI1NGU5Y2IxZDMzMjI4IGxlZ2FjeS10cnVuaworMzgzNTMgMjM2OWRmZTJkYWQ0NjllYTVjOWQwZjI4OTcyOTE5YTNkYTNjMGQzMSByZWxlYXNlMjQtbWFpbnQKKzM4MzU0IDk3MjQxNzQyNjIyNDdhM2FhZTcwNzBkZDVkZDQxNjlmMjFiNmFjYmMgcmVsZWFzZTIzLW1haW50CiszODM1NSBiNzQ1NTk1ZDQxZDFmMTYzNDE4MDBkYmQwZWM0M2ZiZDY0NDk4YjE1IHJlbGVhc2UyNC1tYWludAorMzgzNTYgZTNkNzQ4MzBlZDJmYTdkNWYzYmM2MmM5NzkwODI4MTM3OGQwMjU0YSByZWxlYXNlMjMtbWFpbnQKKzM4MzU3IGI5YmM0OWI1M2Y0ZDYyNWQ1Yzk0M2U2NmMxZjk1NzJhZGVkMzZkNDQgbGVnYWN5LXRydW5rCiszODM1OCAzNmFiZGQ0NzhlMDc0MWYyNDBiNDk5ZDY3OTIyOThiMzJjNzY5OTY3IGxlZ2FjeS10cnVuaworMzgzNTkgOWM2MmU3ZDY5MGE1MmFhOTg1ZDBiYmI2Zjc4ODc2MWQ0Zjk1ZWE4MiBsZWdhY3ktdHJ1bmsKKzM4MzYwIGU4NTJjZjZhYjViNTUyMTdhOTg1Mjk1ZjA2YzhhYjM5MDMwZTY2MjIgbGVnYWN5LXRydW5rCiszODM2MSA0YTFmZWZkZmM3OTMwNDYzMzMxZjgzZWY3ODY1ODRkMzJmYWMxN2I4IHJlbGVhc2UyNC1tYWludAorMzgzNjIgOGM5ZTNlZDU5NGZlZDJjODY2MTljMjlhZWY1NDllMGFjMzk4MTVhNyByZWxlYXNlMjMtbWFpbnQKKzM4MzYzIGJiMDY1NGNmNWU1MjA1ZTM3MzhkZjNkY2VjZDY2MWM5MTNiZGNkNDcgbGVnYWN5LXRydW5rCiszODM2NCA0ZDI5ZWIzYTNkZGJmMmMzM2EwZTNjYzQxNjZhZDg3NWYyZWU2ZWM2IGxlZ2FjeS10cnVuaworMzgzNjUgNDFmMjllMjZmNjhmNDQ4MDhkMzdlNjJiMmMxNTU0M2FjYmNhNDg0YSBsZWdhY3ktdHJ1bmsKKzM4MzY2IDQyMDllYzE3MDZhYmExNzU3YzQxYWZjMjNiNzFhODY5NmNkMTY3ZGIgbGVnYWN5LXRydW5rCiszODM2NyBhNzJlZTYzYzZjODQ5MDIxNmM5NzJjY2VhY2VhMjg5NTM0Yzk5NWI1IGFzdC1icmFuY2gKKzM4MzY4IGZjNTgwZmYwMGY2ZjU3MGM5ZGMxZTcwZmI3YjdiYWNiZmI1OWY3MzkgYXN0LWJyYW5jaAorMzgzNjkgNmIxYzdiMThmNTlkODdiNTgxY2IyMzc0N2VmY2I0NWNhOGNmMWQzMCByZWxlYXNlMjMtbWFpbnQKKzM4MzcwIDZlNzAzM2M3NGM3MGI3YzA4ZTlkYzQ2ZTMxZTVmOGZkOTVjMDY0ODQgbGVnYWN5LXRydW5rCiszODM3MSA2ODAyMGJkMWI5ZTJlMmVjOTMxNGYzYjdkNzk1MmQ3NDllMzhlNGMxIHJlbGVhc2UyNC1tYWludAorMzgzNzIgNmI2ZTZiOTgyYWM4NTdiZjc1YmE3YWNjMDQ2ODQzNWMwZmVhZjk1YiByZWxlYXNlMjMtbWFpbnQKKzM4MzczIDA4ZTNjYThmYjA3MWY1OWE3YzAyYzcxMGU5N2YxOTY4ZWU1OGU5MWUgbGVnYWN5LXRydW5rCiszODM3NCA0ZGE0NjI1OGJmZjhjZWM5NjFmMTY2YzI2N2U2MmRiNzZjMjZkMGM3IHJlbGVhc2UyNC1tYWludAorMzgzNzUgYzkzMzdjOWQyZjJhOTQ2NjFkMWUwYWMwODJkN2E3ZWUyYzNiMGQ1OSByZWxlYXNlMjMtbWFpbnQKKzM4Mzc2IDhmNjA5ZWFhYzNmMDAyYTMwYzA1ZmRkMTQwYTQ0NGU0MmQ3YTk4YjEgcmVsZWFzZTIzLW1haW50CiszODM3NyA1MTZjYTBiOTI5NzFiNzAzOWVkYjVmNjA0MjMzM2UyYjgwNWZkYmNiIHJlbGVhc2UyMy1tYWludAorMzgzNzggYWJiM2MxYWQwMGE3YmI1MWMzY2VmNTU1NzQzZTA3ZjdmYjhiMDYxOCByZWxlYXNlMjMtbWFpbnQKKzM4Mzc5IGFlNzMyODY4OTdhMzRhMzllMDFhOWYxNjMzMjhlMjI3MmZhOGY5MjkgcmVsZWFzZTIzLW1haW50CiszODM4MCBjMTY0MWVlZGE3YzkyODU1MDcyNjlhY2JmZWIxY2E0NjhlZDdmMWY3IHJlbGVhc2UyMy1tYWludAorMzgzODEgNDQwYzI1YmQ5OWRmODVjNDk0YTk2MWNlNGJhZGYyYTYwODNmNDYxYiByZWxlYXNlMjMtbWFpbnQKKzM4MzgyIDg3MjI0ZjJjNWUxMDAwMmRhNGQwZGJkNDNiZDY0OTIxZmU3Y2E4MjggcmVsZWFzZTIzLW1haW50CiszODM4MyBjNGY3NmVkMmVhZmEzZjdhNWI3ZGZkOGIyOTJhM2JmOTcxNzhlOTYwIHJlbGVhc2UyMy1tYWludAorMzgzODQgZTk0OWQ0NjM1NzJjZTY2MTFjMzE3MzQ0NjM2M2U4ZjY2ZGNiNGU4YSByZWxlYXNlMjMtbWFpbnQKKzM4Mzg0IDI2MzliMTBkYWE5ODViMjBiM2NhYmVjNDUxNjlkNTIzY2FjMjlkNjggcmVsZWFzZTIzLW1haW50CiszODM4NiBiZGE5MzM4NzM3NThlNTRlM2NkNjg5Mzc0MjUxYWQzZjMxZDg1YmExIGxlZ2FjeS10cnVuaworMzgzODcgMThiYTA4NWNjOGJiYmY1ZmVhZDNiOGM1NmQ1YTZiYTEzMjhhNDEwNCBsZWdhY3ktdHJ1bmsKKzM4Mzg4IDEzMTc2ZWQ1MmU2NWM0ODRkYmNmNGY4MWZiOGU3ODQ1ZjNhMzFmZmUgcmVsZWFzZTI0LW1haW50CiszODM4OSA2ZjJkZDA4MWZlMDUxMjY2ODIwNjEwMmJmZGJkODIwMWIzYjRmMjFkIHJlbGVhc2UyMy1tYWludAorMzgzOTAgMWMzNDkwNjBhYzA4ZjM3MGJhNmMyMTRjMjM1MDcxOTRlZGJmMDRmYiBsZWdhY3ktdHJ1bmsKKzM4MzkxIDkxMDM4ODAxZWI0NWZjMzJiYWJjODQzNGIwYTRmMzc1M2E3YmNhYjMgcmVsZWFzZTI0LW1haW50CiszODM5MiBjYjc4OTZkNzdkZTUyMmYyNGI5MWM3MDViZWRmZTgyMGJjZTMwYzRhIGxlZ2FjeS10cnVuaworMzgzOTMgOTI1ZDU0ZGY5MmJlOTUwYmQ1ZWRiN2U2N2I1YjU2OTQ0NTFmMDJjYyByZWxlYXNlMjQtbWFpbnQKKzM4Mzk0IDU0ODEzNGJhMjc5ZmVjMjk0MDNlYzc4NGZmNmEyNzI3ZWUyZjk1NWIgcmVsZWFzZTIzLW1haW50CiszODM5NSBlMzA3NGU5NGZiNzU1ZTBkMTBhZmZlYzMyNTJhMzNhNWZhYjM2NjBlIGxlZ2FjeS10cnVuaworMzgzOTYgNjU4NTEyNzc0NDY4MTUxNTEyMWJiMjFmYjNhM2FiYmU1YzEzMTlkOCBsZWdhY3ktdHJ1bmsKKzM4Mzk3IDliNGUzMThkNmM3MjY3NGVkYmE5ZTE3NmQ5NTlmMjNmMWMxZjVjZDIgcmVsZWFzZTI0LW1haW50CiszODM5OCA2YzkwY2I3NjZlNmJhNDBlMjNlZDI0YTNjYTkzYTlmYmQ4NWM2MTkwIGxlZ2FjeS10cnVuaworMzgzOTkgODhjMjllNTFiMDI5YTE4YzI5MmQyODQ4OGVjYjZiYjdmYWE2ZDZiYiByZWxlYXNlMjQtbWFpbnQKKzM4NDAwIDVmZDUwNjUxNjM2MTRkZGZiMmIyMGQ1YjM2YzgxM2FhZTVmNWFlMDYgbGVnYWN5LXRydW5rCiszODQwMSA4MDRjNTY3MzY0M2U2ZWY1MDM4ZWVmMmMyOTc3ZjY4ZjA1NDI0ZDlmIGxlZ2FjeS10cnVuaworMzg0MDIgYTQyMjVjZGMyMDQ3ZmQwZDYyYTc4YmM3MjJmZWJkODJhMTllZTRmYyBsZWdhY3ktdHJ1bmsKKzM4NDAzIGY0MzA3MThmOGI0MzBlNTU1MTk1MDUyZTM2MWNlY2NmYjU1NmEwMDUgbGVnYWN5LXRydW5rCiszODQwNCBmMDEzNDIzMmJkODRkYjMzMjg3YjFjZGFkYjdkZTJjMmJlMGI2ZWQ0IGxlZ2FjeS10cnVuaworMzg0MDUgMGJlMTcyNTlhYWM4ODZjNWM1ZDRiODM3MjhkM2YwZTFkMTRkNDgyZSByZWxlYXNlMjItbWFpbnQKKzM4NDA2IDczNzY0OWE2YzkzNWM5ZjBiMDhmNTZjYzkxYjFiMDUzZGEyMDM5OWQgcmVsZWFzZTIzLW1haW50CiszODQwNyBiODQ2ZGQxYjk3NTEwYWU5MjNiYWZmOGMwODY3MWM0MDNjNWQ2YWNjIHJlbGVhc2UyNC1tYWludAorMzg0MDggMWMwNzI2MTVlNWI4NmUzNmRmYzk0NGJhNzQzMTBjYzA5OGVlMDg2MyBsZWdhY3ktdHJ1bmsKKzM4NDA5IGNkNzQzMjFlY2RjNDdhNzEzMTU4YjY1ZWZiZDBjMjgwZDM5YmNiNDggcmVsZWFzZTIzLW1haW50CiszODQxMCA2OWVkN2U5MTJiM2QyOTcwMTYxZTg3Mzg1N2IwZTliNDVkZTZiNGVjIHJlbGVhc2UyNC1tYWludAorMzg0MTEgY2NmNjI3MmVlZGY0ODRjNTc0OTY4YTE2MjIwNjhkMWRiNWRkZDkyOCBsZWdhY3ktdHJ1bmsKKzM4NDEyIDFiNzhmYzI5NmZjODk1ODg5YTlkZjJiMTdlMThkN2ZkNmY3OTk5NTUgcmVsZWFzZTI0LW1haW50CiszODQxMyBjNjhiZTg2NTkwNzViYmM5OWJhODg1ZTc1N2Y2MWY3MWU5NjdmNzk1IGxlZ2FjeS10cnVuaworMzg0MTQgM2QwMGI2NDI1NTA1N2VjYzk5NTcwOGEwMDM0NGY3MThjYmQzNmVmNCBsZWdhY3ktdHJ1bmsKKzM4NDE1IDNkOTlhZGVmYmYzYzA1MGQ1NjUxOGNhOTE0YmJlNmY3MGUyZTQ3YzQgcmVsZWFzZTI0LW1haW50CiszODQxNiAzMjBjNzY0M2Y4ZTllZjk5MzRjNDA2OGJlM2IxM2U0NWUxODUzMWZlIHJlbGVhc2UyNC1tYWludAorMzg0MTcgNDE3NGY5NzhlNTY0NzMyZDRlYTdlOWE2YjgwOTUwZGM5YmVjMGY0NCBsZWdhY3ktdHJ1bmsKKzM4NDE4IDM3YjJmMTFjMWEwMDVmNzFkY2U5MjU3Yzc1NmVhNjNmMmYxNjYzODkgbGVnYWN5LXRydW5rCiszODQxOSA4MjU5ZmYzZWU0OTM2MTI3YTEwN2M3YTQ1NDYxYTIyZDM0NDEzMTNlIGxlZ2FjeS10cnVuaworMzg0MjAgY2E5MTc5OWNlY2JhMDEzNGJjMzlmOGQyNTM0Mjg5M2EyY2JlOTU2ZSBsZWdhY3ktdHJ1bmsKKzM4NDIxIDllZTk5YTM1NTY4ZDAxZmE4YmFmNjJhM2YwZTJkNjhmMDUwMjQ2NmUgbGVnYWN5LXRydW5rCiszODQyMiA0NjU3MjQ0MjUzNzAwOWUzNzgzNGYxNTFhODQ3NTNlMGU2MWUzYTg5IHJlbGVhc2UyNC1tYWludAorMzg0MjMgN2U1MTAzYjRiMjg5ZDdhYmE4OWIyZWZlOTU1NTFiZjAyMzIzNDViZiBsZWdhY3ktdHJ1bmsKKzM4NDI0IGYyNDExN2EzNjI4YWFkZTYwM2IwMThjNmI2MTUzMGU0NzY2YTBmYjIgbGVnYWN5LXRydW5rCiszODQyNSA5ZDY2ZmJhNzg0NDRmMWIyMTdmNjY0MTI1ZGQxMDc0MDMzYjExNDA3IGxlZ2FjeS10cnVuaworMzg0MjYgN2M4ZjMzNzhmNmY2MWFlZTlhNzRhNzQ1MWUxNmE1ZTNhNzM1YWUxZCByZWxlYXNlMjMtbWFpbnQKKzM4NDI3IDgzNWI2NDVhMTY4Zjc0YzAxYTY1ODc4NzYxMmNiMjQwOGY2ZmQyZjUgbGVnYWN5LXRydW5rCiszODQyOCAxYzI5NDNmOTU0Njg2Mzk2MDNiYTBhZmYzMmMzZTJiNjcxZDRiMzgwIHJlbGVhc2UyMy1tYWludAorMzg0MjkgNjMxNGU5NGQwZDM1ZDk3YmEyZGI4M2E1NzMzMzJhMzY2NzZiNTJkMSByZWxlYXNlMjMtbWFpbnQKKzM4NDMwIDY4NThjMjQ4NDAxMDgyMTMxMDJiMGFlYjYwYjkwOTk5NDg3NDMxYzQgcmVsZWFzZTI0LW1haW50CiszODQzMSAwMjhmOTJlNDRiNDgxNDdmYmYzNDU3NjQ5NzE2MGZjN2ZjYTlmZmMxIGxlZ2FjeS10cnVuaworMzg0MzIgYTI0ZTcwZjQ2ODRiMWQwYmY2OWI5MDEyNWU4OWMyNTVmZjdhNWMyYiBsZWdhY3ktdHJ1bmsKKzM4NDMzIGNkMDRmMmQxOGE2ZmNjZjkxODI0MGY4ODBiYTMwNThjODhjZjY5MGEgbGVnYWN5LXRydW5rCiszODQzNCBjODc4YmQwMWI4MWExNjM0N2Y2NmE2MGM2NDlkNzA5ZDQzYjE1MGVkIGxlZ2FjeS10cnVuaworMzg0MzUgOTNmMjY2NWVhZDVlMmRjZGVjMWEwNjlkYjdiMTU4NWNlZTNlNWI2YiByZWxlYXNlMjMtbWFpbnQKKzM4NDM2IDZhMjQ0MGQwNWY1MGMzMjcyZTY3M2Y4MjA3NjRmNWNkMmIxZTY3YWMgcmVsZWFzZTIzLW1haW50CiszODQzNyAzYzE0NGEzYzkxMWE3YmUxYmI0OWEzNDI4ZGZhYzFmMDNjMDY2YjczIHJlbGVhc2UyMy1tYWludAorMzg0MzggZTYxYWE4NjIxNWJjYTc5NzgzZmMxMjFlOTgyMTFiOWVjZDEzOGI0YyByZWxlYXNlMjMtbWFpbnQKKzM4NDM5IGJiN2YzNmFjOWYzYTg3ODg5NzFlNmUyZTYwZjgzZWRiZTk3M2IyNGEgcmVsZWFzZTI0LW1haW50CiszODQ0MCAyOWU2YmQ3MDhmZTc1ZDM2NDBmMmEzNjRlM2QxN2Q0Mjg5OWI0YmRlIGxlZ2FjeS10cnVuaworMzg0NDEgNDA0MGFhMjE2YjhhYjE2ZmMwOWNjNDhkMGY2YzMzYWRjN2E3ZDc5NCBsZWdhY3ktdHJ1bmsKKzM4NDQyIDdhMTI3N2ZhZDA0ZTkyNjU3ZmM5NzgzODQ5ZTIwYjNiNTYwMDA4OGEgbGVnYWN5LXRydW5rCiszODQ0MyBmNzc5NjZkYTZkZTVkYmMyYzgwMTdmYzc4N2JiODUzNjA3ZTlmNWUzIHJlbGVhc2UyMy1tYWludAorMzg0NDQgODkxYzMxZGFkYTRlYjkyNTExYmJmZjFmZWM3NzgwZTNmMzFlMjdiNyByZWxlYXNlMjMtbWFpbnQKKzM4NDQ1IDcwNWI3ZmI5MDA1NmNhZWZjNmI0ZGU2YTAyMjYxMThkYmNmMzA1OWYgcmVsZWFzZTIzLW1haW50CiszODQ0NiAzN2I2ZGQzODg1NmRkZTM4ODQyMTg5ZWEzYzVmOTAyZTk3ZjQ2M2E1IHJlbGVhc2UyMy1tYWludAorMzg0NDYgZDIyODUwOTQyNDE3MmY5NzdlZGFkNGY3ODYwYTljNzQ3Y2Q2NTVjOCByZWxlYXNlMjMtbWFpbnQKKzM4NDQ4IGZmM2NhNjU2YzI4MWRlYmZkMzYwZjM3ZDAyMDJmNTNkMTMxYzRjODggcmVsZWFzZTI0LW1haW50CiszODQ0OSA4OWI4Y2NmMTRjMGMwMTVlZTljNjc5NzM0NDZkNTg2MWI5YWQ4MGMzIGxlZ2FjeS10cnVuaworMzg0NTAgOWM2NmFiNTRjMWVjZmY5ZWJkZWU2MDE1NzNiNTMxZTczZjNmOWY5ZiBsZWdhY3ktdHJ1bmsKKzM4NDUxIGU2N2I1ODdmZWQ3NzljMjExMzM4ZjE4NTlmMmUwMzk4MjFmMmM5YWYgbGVnYWN5LXRydW5rCiszODQ1MiAzYzE3MmM4MjZlZWQzNjRkM2M5ZjJjOTgyNDg3YWE0ZDBjOTE2ZjdlIGxlZ2FjeS10cnVuaworMzg0NTMgMTkzMjdkYjc1ZDFjOTJlMzZjMzYxYmQxMTkyYjFlZjU0NTc1OTlhZiByZWxlYXNlMjQtbWFpbnQKKzM4NDU0IDM2OWU4ZTcxZWEzMzkxNjc4YWFkYzA4NGUyNjg4YTE0NGZkYmNkZjYgbGVnYWN5LXRydW5rCiszODQ1NSA0NTQ1YTE1NGZhYzE1ODNiZTQxYmM3OTg4ODJiYzBlMmJiNjExMmY0IGxlZ2FjeS10cnVuaworMzg0NTYgM2ZkZmJjYjQwMTMwY2UzYTU0M2Q1ZTk3Y2MwOWU0NjA3MDFhNDlhMCBsZWdhY3ktdHJ1bmsKKzM4NDU3IDc3ZmEzMGU3ZjEyYjA2ZDM2YzY4ZTBlYzM1MDg4NTdjNjYzMzk5N2MgcmVsZWFzZTI0LW1haW50CiszODQ1OCA2MDdjNDhiNWVmZDcyNjE1NTBhYmQyMTlmOTFlYTliNmI3MjBmNGY0IGxlZ2FjeS10cnVuaworMzg0NTkgNWMyNjA4NTA0OTY3YTJhMTc4NGMzYzZkMTQzM2ViY2M4ZGQzNTQwMyBsZWdhY3ktdHJ1bmsKKzM4NDYwIGNhN2MxOGVmOGJkYzEwMmNiNjQ4NDUyNThjMTYzMGYwZmJmNzI2YjUgbGVnYWN5LXRydW5rCiszODQ2MSBjYjQ3ZDYyMmFhMWUyZmMxMTlmY2FkY2I0OWRiMzE5MmVhMjNhYzhkIHJlbGVhc2UyNC1tYWludAorMzg0NjIgMGE2ZTc3OWQzNDdkNmYxNzVlMjlkY2NjMDdjYzYxMDcxZmQwYzk4NSBsZWdhY3ktdHJ1bmsKKzM4NDYzIDg2YWIzYTc1ZmYwODZiOTZlNGQ3ZmFiMWNjYTI2YzYxNTBhNGJjNzQgcmVsZWFzZTI0LW1haW50CiszODQ2NCBiOTRmMjI0NzM4OGU5MmJkMGU5YTE3MzdlZTAwMGNhZmM0N2UxMzM1IGxlZ2FjeS10cnVuaworMzg0NjUgOWYxODNhMjU4YmVkMGVlOWY2MmIzYTQwNTNmMjYwODJiNzc0NDZkOCBsZWdhY3ktdHJ1bmsKKzM4NDY2IDdlN2U4NmY0NTI1NWE5NTk0ODIwZmFkZTZiZjc5ZGQ0ZmVkNGY3OTcgcmVsZWFzZTI0LW1haW50CiszODQ2NyBlOWVjMmNlMzQwZmRjNDQyMGQzNjFmNTM4MmViYmZjMTUxMDkzYmQ3IGxlZ2FjeS10cnVuaworMzg0NjggNzBjYjBjM2ZlNGE3NDc1ZTJmOWU5NzI0ZTRjYjM0OWFmZWNkZGEwZCBsZWdhY3ktdHJ1bmsKKzM4NDY5IGE4OTlkNjkwZjI2NDA3NGZlYjVhMGJlM2U0ZWYyMGU3ZDJiZGE1MDAgbGVnYWN5LXRydW5rCiszODQ3MCBmZjNkZWY3N2IxMjk1ZjMzMjY5OGM2YTIzODFhMGJiMTlhZmNjNjExIGxlZ2FjeS10cnVuaworMzg0NzEgMWFlMmMzYjY2ZTU3YTM0NjM3ZjllNDgzYWViNzQxMjZiNmY3MmEwMyBsZWdhY3ktdHJ1bmsKKzM4NDcyIGZhNTJmMWZmYzE2MTE1NTc1MDY5MzEwODk1YzBkMjVkZjljODZjNmYgbGVnYWN5LXRydW5rCiszODQ3MyAzNzZhNzFmODk3OWJhMWQ1NjNjOGQ5YWM4NTYxYmZhMDMyMTZiN2U0IGxlZ2FjeS10cnVuaworMzg0NzQgMzJiODk2MDZmMGNkYTE3YWU2NGVjY2E2NDVlMWUzYjE0N2Y3NjRmZSByZWxlYXNlMjQtbWFpbnQKKzM4NDc1IDdmN2MzZGZiYTk4NTYyMGM2YzQ5MDAxNzdlMTI5ZDQ3MmFlMzkwMDggcmVsZWFzZTI0LW1haW50CiszODQ3NiAxYTk4OTgzZTU5NjMwZGNjMGFlZTgwMzkwY2NjMzE2OTRlMWFjOWYyIGxlZ2FjeS10cnVuaworMzg0NzcgN2ZiYTVjY2M5NjFlMTRhZDhmMTNiMzBlYWU3NTY5MjUyYmNmNDZiMCBsZWdhY3ktdHJ1bmsKKzM4NDc4IDY3OTM3YTM4NTJmZTQ0ODJlZDM2YzljZWMwODljMmY4NzNkOWNkYzAgcmVsZWFzZTI0LW1haW50CiszODQ3OSA1ZTdhZGVkMzI1MWVkMmJlZDlhZjVkZjNlZmUzNTY0M2IzMTI2NjM5IGxlZ2FjeS10cnVuaworMzg0ODAgZDgwNGE1MGEyMGFiNTI3OWU3MDhlY2MyOGYyMmU2MjBiMDg2MDk1NyBsZWdhY3ktdHJ1bmsKKzM4NDgxIDgwOThjN2MyNzA5NzFlMmQyYTMyMGI1YmI2OTkwZTlmMDVmZjk4MGMgcmVsZWFzZTI0LW1haW50CiszODQ4MiAyNGEzMzM3NDFjZWM5OWEwOWM5ZThlNjc0NTcyYzY4MGU1MWI4YzU2IHJlbGVhc2UyNC1tYWludAorMzg0ODMgN2RhZTFhODFjZWQ4MzgwNWYyODY4ZGZiNjQ3ZmZmZDFkZTMxOGYwZiBsZWdhY3ktdHJ1bmsKKzM4NDg0IDc3NzAzZWQ1NDNhMTBmMmQxYWFhMmNiODgzODk1YmNiMDMxZWNhZGUgbGVnYWN5LXRydW5rCiszODQ4NSBkNDM5Yzc0OGI0NTQ1MWNkYjQ3NjI3MzhhZDkwYWRmNzlhMjdiZDNjIHJlbGVhc2UyNC1tYWludAorMzg0ODYgOGI0ZGQyYzFjMmEwNjNmMDNiNzAwYTc0ODhlNGY5N2ZkMDc5ZmU5MCBsZWdhY3ktdHJ1bmsKKzM4NDg3IDRiMTIwN2NiMDFlYTY2ZmNjNzI0ZmI2NTdjZTZjZjViMDMzNmI2ZDQgbGVnYWN5LXRydW5rCiszODQ4OCA4MTMwMzBlNGQ3YjBhMWRhY2RlNDIxYTQ2MzllNmIyZGQ4Y2RmNmI1IHJlbGVhc2UyNC1tYWludAorMzg0ODkgYzYwZmRlOGIwMTA2YjA5ODkyYzU0NDI0ZGI2ZWFmZmMzN2ExYjdkOSBsZWdhY3ktdHJ1bmsKKzM4NDkwIDdjNTczMjY1MmEyM2NiZDcxZTliZjZkY2E4YjVjZTU3MzAwOWQzZWEgbGVnYWN5LXRydW5rCiszODQ5MSA2MThjZjI0YzMyOWY5OWZkNWIwMTdiYjNiMDdjYTMxYWJiM2M5YTg3IGxlZ2FjeS10cnVuaworMzg0OTIgMDdjZjFhMTY0MGRhNDEyMzQ5ZGY0NzA3N2M4YjEyNTNiYzIzMTNlOSBsZWdhY3ktdHJ1bmsKKzM4NDkzIGE0ZDEzOTc0ZjZlYjdjNGRmOTAxMDQxMDIwMjViNGUzYjQwZGJlYTcgbGVnYWN5LXRydW5rCiszODQ5NCBhYzZkZmM2N2M3N2ZmNmQxZDhhY2E2MWMxMzlmNmFiYzZmMThkOTQwIGxlZ2FjeS10cnVuaworMzg0OTUgYTM2YzVmZDMwZTIxMjdhZTEyZGQ1MzlmNjY5NDc4N2U5M2ExZjBlMSByZWxlYXNlMjQtbWFpbnQKKzM4NDk2IDlmMDIyNzZkNTRjYjRlYzMyZWMzOWE1MjgyMTRiOTk5NWYyMzYwYzYgbGVnYWN5LXRydW5rCiszODQ5NyAwMzg2Y2MxZWU5NjRlNGQ0ODc4NDI3ZWUzYWFmYzc4N2NmMmUxZTA1IGFzdC1icmFuY2gKKzM4NDk4IGUwZjRlYjY0ZDAwMzkxZTNjNDZiNWYyODkwNThiMjlmZjJmY2FjZWMgYXN0LWJyYW5jaAorMzg0OTkgMjY3NmUwNWMwMWYyMWFhODVjZTFjYmU1YzdkNWViN2VkZDA4ODVkNiByZWxlYXNlMjQtbWFpbnQKKzM4NTAwIGM5OWFlODYzNWYzYjU0ZGI4ODM5MDRkM2FiY2Q3MzBmMTI4YjhiZjYgbGVnYWN5LXRydW5rCiszODUwMSAwZGQxNDZmZWQ5ZGRhM2NlM2ZiOWFjZjk1MWVkODMxMjE2NTEzNTk4IGxlZ2FjeS10cnVuaworMzg1MDIgNTU2ZjZmMTA1NmE4ZjZkNWQwM2EyOGViZmY0YmMzM2Y5NzQ1M2U3YiBsZWdhY3ktdHJ1bmsKKzM4NTAzIDFlZGVhNGMyYjAxMWI1M2FmYmJiNTNjOTNjNDAyMDI5YjMyOWNjNDcgbGVnYWN5LXRydW5rCiszODUwNCA1MTZiYjhmZDc1YjRiZDU3OTgxYWNmMWE3N2ZjY2UzMzE3OGJiMGZkIGxlZ2FjeS10cnVuaworMzg1MDUgNzZjOWFiODVmNWE4ODc0NTI0NjdmYjIxNTMyZTRjZDExZmYyZmEzMyBsZWdhY3ktdHJ1bmsKKzM4NTA2IDVmZGUxN2IzNTQ3MjU0YmFiYTY0OTk5ZDIxMDE5ZTY0Mjk5Y2U1ZTEgbGVnYWN5LXRydW5rCiszODUwNyBjNWE0OThjMTA3MjM1OThiOWI0ZjE5NzRjNmFlZmNlOWExNmU1OWQ5IGxlZ2FjeS10cnVuaworMzg1MDggZmNhY2Y5ZDRiOGYwZmFlYjc1NjJmOTZjZTg2OGIxODE1ODRmNTczYyBsZWdhY3ktdHJ1bmsKKzM4NTA5IGQyNTk5ODQ5NjIwNjVmZTU4Yjg3NmY0NTU4MjBlZGRkMGMwNDYzNWMgbGVnYWN5LXRydW5rCiszODUxMCAzZTdhMjBjMjk3YTYwZTZlN2RkZTUwMWJhZmM5ZjllNDJlM2RiNzJhIHJlbGVhc2UyNC1tYWludAorMzg1MTEgMDgwZDhjZmVkOWQ0YTdhNTRkNWNjYmVlYzdlMGFjNTYwMmIyYmUxYyBsZWdhY3ktdHJ1bmsKKzM4NTEyIDY2MDQxOWJkYjRhZWY5YmI1ZGUyODVjNzY1YWU2ZGVlMTQyZjBjOTcgbGVnYWN5LXRydW5rCiszODUxMyA0MTZiNTM0ZTljYzk2OGVmZmViY2FmMTc1NWJlOWUzY2ZlMzgyZjVkIGxlZ2FjeS10cnVuaworMzg1MTQgNzdiNTcwODdmZTQ1ZGIyNDcxNzhmMGUyMzVlNDI2ZjdlNGQyOGY5MSBsZWdhY3ktdHJ1bmsKKzM4NTE1IDQzMjlhMWEwMDQ2OWQxNjNjYTU4NGI3ZTA4MDMxMTdiM2UyMGRmNTkgYXN0LWJyYW5jaAorMzg1MTYgODljZjI1ZTM2NzlhZTk5YTQ5MDJiYWMwNTAxNWJlYjg2Mjc3N2I3MCBhc3QtYnJhbmNoCiszODUxNyBkMWIzNWFmMjkyNjMwYjYwOTdjZjZiM2JhMjAzMDVkYzFlZGRlYmMwIGxlZ2FjeS10cnVuaworMzg1MTggYTJiN2NiNzNkOWIxZDcwZWJiNDgzNTNkNjRjY2VjYzgyMzU3ZDk1NCByZWxlYXNlMjQtbWFpbnQKKzM4NTE5IDVmMjYyOTg4MTFiNzE0MmE2ZjczMDg2NzhkNmQ3MmJmZjg2YzE0NTUgbGVnYWN5LXRydW5rCiszODUyMCAzZDBiYjNiMDVkMzlmMGJkMTRkOWY4YzY5ZTE3NzUxODQxZDQ3NGJmIGxlZ2FjeS10cnVuaworMzg1MjEgMTE3NmYxYmI0ZTFhZWEyZmY1MTgyNzIwYzQ2YWJiZjYwYzFmMWFjMSBsZWdhY3ktdHJ1bmsKKzM4NTIyIDRhMGMyMDJlZTc4OWEzNzNmNjQ3ZGQwMDkzNDg2NGVlMjk3OWIyNzcgbGVnYWN5LXRydW5rCiszODUyMyBkM2NlN2E5NDYxNmU5MTdjZmVkYmUwMDM2YjRmMTBmYjFjYjgwNmY5IGxlZ2FjeS10cnVuaworMzg1MjQgNjM2ZDZkNDMzYjYyNjM3YWVkNGVmYjE4YjMwNzFiZDQzMTJkNzYyNCBsZWdhY3ktdHJ1bmsKKzM4NTI1IGZkNmQzNTljYTI2NjIyMWI3YWVmOWE2MzI2NmRmNWFlZWYyMjM3MmUgbGVnYWN5LXRydW5rCiszODUyNiBiNWEyNWM1NmE4NTIzZDdmOTQ4YWIwNjY5M2Y5NmM5MTBjODVhMTY5IHJlbGVhc2UyNC1tYWludAorMzg1MjcgNjA1MGFlODQyYzhmMWM4OGI5YWFhMjM1NjI1ZWM0ZDgzZDlkNWJjNSBsZWdhY3ktdHJ1bmsKKzM4NTI4IGM1MDVjYmIyNmNlZGNkMDUwZjQ2ZDBiN2U1MWI1YjQwZmJjNDU5NTEgcmVsZWFzZTI0LW1haW50CiszODUyOSBmYTNjZGQ0ZjljZDAxN2E3ZWVkOTdlMTU3ZjI0YzhkN2U2NzlhOThlIGxlZ2FjeS10cnVuaworMzg1MzAgYjQzMTVlNjdlZGY1MTBiOTJmNmJiMjNlOTk1NGEyMzZhNGMzYzY0OCBsZWdhY3ktdHJ1bmsKKzM4NTMxIGE5ZjE2MWUzNmJmOTA0MWVlMGRhODY5ZTE5ZjVhOGU1NDViMWU1NDkgbGVnYWN5LXRydW5rCiszODUzMiBkNDhmYTBhZmRjYmFmZDUwZTE0MzM5MjFiNTdkYzgyOWVjNmVkNDQzIGxlZ2FjeS10cnVuaworMzg1MzMgMTNhOTUwYTM2MjRiY2FhMmI0ZDIwYjBkNGQ0ZDlmNTk2NmYyZDNmZiBsZWdhY3ktdHJ1bmsKKzM4NTM0IDExZmNkYmIyNzlkZTkyYWVmYWQ4OTNmNmQ2MjE3MTJmOTg3YmI3YmMgbGVnYWN5LXRydW5rCiszODUzNSBkOTkyN2E2NWY1ZjkyZTI3NmQ5MjI4NmU2YzQzZDkzMWMxMTE2ZGQ4IHJlbGVhc2UyNC1tYWludAorMzg1MzYgY2FjMzFiNGI1ZTc4ZDRkMjU3ODlkYTM1MDUzODFlMGRhZGY4M2Y0OCBsZWdhY3ktdHJ1bmsKKzM4NTM3IDg2MWJlOWNkMDRkN2VjZDQ4ZmMzZWM0MGNmN2U0Y2VhZTg0NjUwOTAgcmVsZWFzZTI0LW1haW50CiszODUzOCA0YWFmYjFjOWE3MGQ5MDBlODcxZWVlMzEzNDA3NzU3MWIxNWNmODdhIGxlZ2FjeS10cnVuaworMzg1MzkgZTQ4YjVhNjFkODBiZDZlYmQ1NWZhOGQxZmZiZmI5N2I2MmJjMmUxZiByZWxlYXNlMjQtbWFpbnQKKzM4NTQwIGE2ZDIzMTUxMDlhNGYyYWM5YWJmNmRiODQ1MTdiY2E5MzIyNTc5MGUgbGVnYWN5LXRydW5rCiszODU0MSAyZmQ5Yjg1YmE2NWZkZWZjZDVmMmZmMGQ4ZDBjZmQ1MWNmNGVhYzE4IHJlbGVhc2UyNC1tYWludAorMzg1NDIgZTY0MjI1MjVjMjQwMzE4OTVjZDQ5MTFhNzk5MGVhOThlZDBiNDBiYiBsZWdhY3ktdHJ1bmsKKzM4NTQzIDc1NTY0NTMwZjUwYzFlZmI0MDVkZmI5Mjc2NjhjZmFlNjc5MmZlMDIgcmVsZWFzZTI0LW1haW50CiszODU0NCA5MThiYzZkNTZkMjZmNjYxMjVmZjU0ZjY5MjRhNTFjYzcxNzljM2Y2IGxlZ2FjeS10cnVuaworMzg1NDUgOWZhNzY4YTk4YzVjYTM2MWI4MDhjMjYyY2JhNmYwZTg3MjFmYzkxOCBsZWdhY3ktdHJ1bmsKKzM4NTQ2IGI0MDU4NjEyOWJiMDg3MmI1ZTBjMDRiYzExNzQ1ZTI3OTAwNmVlNjkgbGVnYWN5LXRydW5rCiszODU0NyA5ZDYwODQxOWNkZjhkNTM2Y2VlOTQ1NWQyMWFmM2EzZWU5NDllNTRhIGxlZ2FjeS10cnVuaworMzg1NDggMzc4NTYxMGZmNzYzMDFmNGRmOTliNjFkY2VlZjg2MTZhOGYwYmVlYiBsZWdhY3ktdHJ1bmsKKzM4NTQ5IDQ2MzAwYjFhYTJmNjgyNWZkZmM0MTJkMzcwOTg3YTY2M2VjOGExZjggcmVsZWFzZTI0LW1haW50CiszODU1MCA0ODEyZjZhN2Y3MzU1NjgzYjIyYjYyYWM3M2FiMGNhNWM4MTcxOGVjIGxlZ2FjeS10cnVuaworMzg1NTEgOGMzNTYzZDA4YzYyM2RlYThjYmZjNzljMjk1OGE3ODJmYjk4Njc5YyBsZWdhY3ktdHJ1bmsKKzM4NTUyIDliM2EyYzQzMDJhYWMwNmUwOWU5YWU4NTZmYTQyZTMyMWZlNzFhZTAgcmVsZWFzZTI0LW1haW50CiszODU1MyAwZDQxMDhkM2EzYThiNzdkZmY1OGUxMzUxYjBiMTZjMzRmZDU3MGUwIHJlbGVhc2UyNC1tYWludAorMzg1NTQgNGM2NmMxN2M0YjI4MDliMzQ0ZTVjN2Y0ZWQyOTQ3MDQxNmQ1ODQ1OCBsZWdhY3ktdHJ1bmsKKzM4NTU1IGRiN2E4MzEwYjE5YTk0ZDYxN2E5NWFmMGZlNDc1MTkxNDZmZmFkYjMgbGVnYWN5LXRydW5rCiszODU1NiAwODViYzI3ZjkyYjc1MTlhZjMzNmE4M2Q2MzQzMzFmNjgwODZmZDMzIGxlZ2FjeS10cnVuaworMzg1NTcgMDBlNDdlYjEzNmIyYzA5NTE1MWJjYjI1NzRkMzcxMTFmMzBlZmZmZSBsZWdhY3ktdHJ1bmsKKzM4NTU4IDdhMWE4ZWM2ZGM1MzQ0YzBkMDIzYjAzODdhNjdhMmQ5ZTZmYjhmMzQgcmVsZWFzZTI0LW1haW50CiszODU1OSA4ZjA0NTY0MjU3MTU4MTUxMDFkOTAxNDY1MDIwOGM2YjQyMjIxNTVhIGxlZ2FjeS10cnVuaworMzg1NjAgNGFiZjIxYmUxN2QzNTQxOTVjMDlhMzczMzA5MTNlYTdhMzcwNzFkZiByZWxlYXNlMjQtbWFpbnQKKzM4NTYxIGU5ZmZhZDZkODgyMjhlYzgzZGQ3OWVlNGQwZDllMTM5MzIxZGIyYzIgbGVnYWN5LXRydW5rCiszODU2MiA1MWFmYjZlNzc0NzQwOGU2ZmU5NzBlMDc3ZjFhYjFlZDc3YjhiMjIxIGxlZ2FjeS10cnVuaworMzg1NjMgODE5ODI1ODRjNjFiYzU2MjQ2ZjU5ZTZiNjI1Zjc2YWE5MTU1YThjOSByZWxlYXNlMjQtbWFpbnQKKzM4NTY0IDQ4MTM5NzY4M2VhY2VmMGU5YjNhODFhODUwZGZmNDk2MzA4ZjJkZGIgbGVnYWN5LXRydW5rCiszODU2NSBlZDZlYzAwMGExMzg4OTdlNWMxN2U2NWI3YzU4NTQzY2Q0Nzg4NWUyIHJlbGVhc2UyNC1tYWludAorMzg1NjYgOTAzMDQ1YTcwYzNlYjYwNDViZDhmMGFlYmNjNmZjMGM1ZTI4NmEzZiByZWxlYXNlMjQtbWFpbnQKKzM4NTY3IDBjNDA4MDNlNWU0ZDQwOGUyYzdmMTcyZmJhMWM2MmZjZTllOGZjMDggbGVnYWN5LXRydW5rCiszODU2OCBmODdhOGQwZGYxMjUyYmI5MTU0OGUxZDRiYjFlYzBiZDY5YmMzNjk2IHJlbGVhc2UyNC1tYWludAorMzg1NjkgNDlkN2JiMmU5NmQyZjVjYmNjZWExZTc0MzI3MzBlOTQzZTMwZWU3ZiBsZWdhY3ktdHJ1bmsKKzM4NTcwIGFlMDYxZmM2MzE4ZGNlMDcyOWYzZDk1ZjQyNzM1Mzc5ZWMxODQyZTEgbGVnYWN5LXRydW5rCiszODU3MSBlYWMwMWNiY2FhZGE5YmJkN2JmZDU1MDNjMmMwNTQxNjlkMzQwZWFlIHJlbGVhc2UyNC1tYWludAorMzg1NzIgMWFjMjRlOTE4M2U1MTc3ZDYwODJhNzZjZTVmM2ZhODI3ZjBiOWJhYSBsZWdhY3ktdHJ1bmsKKzM4NTczIDRlYTlkZTAxZDMxMTU2ZGE3Mjc3ZjJhYTc4ZjZmOTEwOTFjYzU2ZTEgcmVsZWFzZTI0LW1haW50CiszODU3NCBjMmI1OTFkN2YyOWVmZGY5ZjNiY2U1NjBmMWNmMTRlNmY4YjQyZDJmIHJlbGVhc2UyNC1tYWludAorMzg1NzUgMDcyNWYwZDVhNWM3NTg4YWYwOTU1MGQ0ZDcwNWUzNDg4Mjk4ODE2ZCBsZWdhY3ktdHJ1bmsKKzM4NTc2IDgxN2UyMjUwNmZhOGY5Yzk2Y2U1Y2U5YjhjOTNlZTUwM2JlZDA3ZWUgbGVnYWN5LXRydW5rCiszODU3NyA2MDRmZjk4OTE1ZWM4MTg1NDZiMmRhY2ViZjAxZjI2MzA2ZDIzNDIxIGxlZ2FjeS10cnVuaworMzg1NzggOWYwNzhkNzY2ODA0NDQ3NzQyNDcyNTY0NGE5YzFjY2FiZjJmYzJhNSBsZWdhY3ktdHJ1bmsKKzM4NTc5IGMwNTE3OGY0MWRiMzkwNzg1YjMyNzEzZDkzNjY2YWM3NWMwYjk0NzkgbGVnYWN5LXRydW5rCiszODU4MCBhMGQzZjc3MzU0M2RiMjgxYTc2NDY0ODdlOTFjZDMyN2Y4NWU0NzE5IGxlZ2FjeS10cnVuaworMzg1ODEgNzkzMDJlNTA5MTBlZWNlMjBmMjE0MDY1MGI0MjJmM2U2OWM4YWEwYiBsZWdhY3ktdHJ1bmsKKzM4NTgyIGE5MWE0OGM5ZGUwMGM5YWJhOWYyYTY2YWViYmQ4MzI1ODYwYzJhMTEgcmVsZWFzZTI0LW1haW50CiszODU4MyA0MWE5Y2E4NjYwMzgyMDM2NDRiYWZhYTY0MjA4YTExOTE1MTYzNmY5IHJlbGVhc2UyNC1tYWludAorMzg1ODQgODQ4NTliNGE2MmM2ZWNkZTU2NjUxODAxY2Y1NDI2NTk4OWRkMzYxNCBsZWdhY3ktdHJ1bmsKKzM4NTg1IDVkMGQ3NmQ3YjMxZmQ4ODJlMWIxZTI3ZTAyYmRhODRkYWEwZTgwNjAgcmVsZWFzZTI0LW1haW50CiszODU4NiAxMzA5ZjY5YjRkYmJkZThiN2M1NzA2NTEzMTlkNDdhNTQ2ODllYjllIGxlZ2FjeS10cnVuaworMzg1ODcgN2RlNzZmMzRiM2RhMmYwOTY4NWExZjRmOTFkZDhlNTdlMmI3M2FiNSBsZWdhY3ktdHJ1bmsKKzM4NTg4IGY0ZGE0NmI5NDU3MDg5MjIzNWIxMDYzZWY4OWUzYjg0YzkyMTMyZjQgYXN0LWJyYW5jaAorMzg1ODkgOTViNjZkOWRiMmVlNjU5YTBjMmEyOTlkM2M0MTRhNTYyZTk2MDBjYSBhc3QtYnJhbmNoCiszODU5MCAzMDk4ZWZlNDJhMGYyMDg2YzQ0MDU4NDc5NDM5ZTU0MDY4NmI1ZjA4IGxlZ2FjeS10cnVuaworMzg1OTEgN2QyYzhkYWE0MDNiNjE5Y2ZmNzBjOGY1NzBjNjhjMzkwNTAxZTBmNSBsZWdhY3ktdHJ1bmsKKzM4NTkyIGQ2ODdhOGEwOWE3MmQ3NGQ2NDhkNGI4OTBjZTY3YmFhN2ExNjE1ODcgbGVnYWN5LXRydW5rCiszODU5MyAwZDQ0ZDkwNzFlOTdmYmMxMDYzOWNhNjQ1ZjRmMzM3YjFlMWVjYTk5IHJlbGVhc2UyNC1tYWludAorMzg1OTQgZjFmYTdiYjJiZjk5OTBmNDBjYTA5YmFiZGU3MzQ4YTNiMDk0MTY4MSByZWxlYXNlMjQtbWFpbnQKKzM4NTk1IDY5N2I5ZWVjNTVkYTgyYzRkN2EwYjNkNmQ5NjU1NjZhYmUyZDlhNDMgbGVnYWN5LXRydW5rCiszODU5NiBkNTQ0OWYxZjg0MGVjZDRlMjY1MmRkMjYyNGU4OWIzNGY4ZDUwYmUxIHJlbGVhc2UyNC1tYWludAorMzg1OTcgZjI5MDEyMTgxY2YwMTdiOGZiYTVmYjhlNzlhYTJhMjVmMjQ3MzAyZiBsZWdhY3ktdHJ1bmsKKzM4NTk4IGU1ZDE5MDMxYTI5NWQ3N2JkODYwMGE0NTI5ZWZhODU2YzQzZjk1MzYgcmVsZWFzZTI0LW1haW50CiszODU5OSA2YjY4NzVlZGY2MDdlMzJiNTg4Y2ZlZGVkZTA4MWNmYmUyY2UwNDg4IHJlbGVhc2UyNC1tYWludAorMzg2MDAgODQ3MTNkNGIxOWFmMTM2ZTRhNGEzZjU2YzA1ZjgwNzUyZTY4YjVlMCBsZWdhY3ktdHJ1bmsKKzM4NjAxIDQ0ZjE0OGJmYzZiODgxNzVhYjY3MDQzZTY2ZWZjZTlmY2Y1ZjJiOTAgcmVsZWFzZTI0LW1haW50CiszODYwMiBkZGMyMjc2YzI0N2U2ODZmOGYxYTA4NDgxYmVjZmE2ZmFiZjNjYzBhIGxlZ2FjeS10cnVuaworMzg2MDMgNTE2ZjE1NTIxNTk4NGRiM2I2YTQ5NGM0ODdlYzEzYjUxZDE1ZDYyNSBsZWdhY3ktdHJ1bmsKKzM4NjA0IGI1NDMzZDNjNmRjODg0NzZmMjI4MDlmYmFjNDhkNDMxNTVjOTM1ZTEgcmVsZWFzZTI0LW1haW50CiszODYwNSAyMWU2NTc3ZmYwNzRlMTE2ZGY2YTczMjMyZThkYTliNjNiZGU2MTgxIGxlZ2FjeS10cnVuaworMzg2MDYgYjEyMmZkOTNhNWI1MTZlMDE5MGRmYjM2MmU3ZDAwNTkzMzBkMGU5NyByZWxlYXNlMjQtbWFpbnQKKzM4NjA3IDE2Y2VmMDlhODM0MmRhY2NhZmNiODU4MTlhMmRiZmUxNzE0MTQ5M2IgcmVsZWFzZTI0LW1haW50CiszODYwOCA5OTA2ZTRkYTA4NmZkY2NmNDRjN2VmZTUzOTU2NDUzYTNkMmMzYzY3IGxlZ2FjeS10cnVuaworMzg2MDkgNTJiNjUxYTk3NTBkNWRiMzRjYTAyMWVhNGMzYWU3YzY0NjE1NjkwOSByZWxlYXNlMjQtbWFpbnQKKzM4NjEwIDQzMDM1NjgzOWQyODU5MWU2MjJmYTgyNmZlMzZkODYwYWI4Mzc4ZWMgbGVnYWN5LXRydW5rCiszODYxMSAyYzczMzY3ZjU0ZWVlYzg5NjI2MzVhMGQxNjY0MDA0ZjMxODAxYmUxIGxlZ2FjeS10cnVuaworMzg2MTIgMDM0OTI1N2UxZWQ1MmUxZjc5MmY4NjA1NzJhOTE4YmY3NjM2ODcwNSByZWxlYXNlMjQtbWFpbnQKKzM4NjEzIGIxNDI3Y2ZmMmY4MzIxMWI3MGFjYTMyYzE0OThhNTNjODk0NWYzYzggcmVsZWFzZTI0LW1haW50CiszODYxNCBjZmFlNGIxMjA2ZjhhYzlkNTBiMGI0Zjc2MmU2NzU0MTIzMGRhNTQzIHJlbGVhc2UyNC1tYWludAorMzg2MTQgMTE5NWY5YmEzNDM5MDk3Y2M1YjVhMzY3ZTNhZTFiNDNmMTU3YjI2NCByZWxlYXNlMjQtbWFpbnQKKzM4NjE2IDBiZTA1ZWJhMTE2ZDgxODRkODZlYTFjMzI5ODgzMzFlNjRiZWJhMjQgbGVnYWN5LXRydW5rCiszODYxNyBlYTAyNGE0YjI5YjZkMTExMmY2YjkxN2ZkZmRmMjVkZmM1ODAzNjlkIHJlbGVhc2UyNC1tYWludAorMzg2MTggMWFmZWZjZjE0ZjA2MzhjM2E1NTkzNjkxM2RkMWU2OTZkZjQ2NGRiNSBsZWdhY3ktdHJ1bmsKKzM4NjE5IGU4MzMwOWQ0M2E4MmU5OWE3NTAxYjQ5ODdiMjYwMzIwN2M0OTAzMzEgbGVnYWN5LXRydW5rCiszODYyMCBkMzU1ZGExZDdjOGZkMTliYjIwN2RiMmNhYTNjNzgwNjJmNzQ4MjkwIGxlZ2FjeS10cnVuaworMzg2MjEgNjVlOGFhY2IwZTk0YjE2MjM5Y2VkODJiNDIxMTMwMzZjMzk4YmZlZiBsZWdhY3ktdHJ1bmsKKzM4NjIyIDgxYjVhMTNmYTM4YTI0OTAyNzNkYTY2MTFjMGMwZGVkYmVlOGI1YjEgbGVnYWN5LXRydW5rCiszODYyMyA4ZDhiYTY2NzgwZWQ3Nzg1MDJjZTM4YjY2NzRhZWUzZmIxMDQ3YWExIHJlbGVhc2UyNC1tYWludAorMzg2MjQgNDUzZDg5ZWFiNzM5MzZmYjkxNWY5ODk1NzljNGFiMmIyYzNmMmFmNyBsZWdhY3ktdHJ1bmsKKzM4NjI1IDBjODJhN2VmOTU1NGRhZDlmYWM4NzkyODhlMGE3N2U3MjU5ZTYzZjIgcmVsZWFzZTI0LW1haW50CiszODYyNiAzYmI3NTk0OTg3NjdkNjkwZmU2ZjJjMjljYmJkY2MyMzgyNWUxNTM4IGxlZ2FjeS10cnVuaworMzg2MjcgZmRmMmY4ZmFkOGQ0NTczNjM4NmNhMzg1NjljMDA3YzgyYmE5NjMwNiByZWxlYXNlMjQtbWFpbnQKKzM4NjI4IDZmOWIzNmZjMTExYzlhZmRhZDQyZjk4NWMzMTM4ZmMyZjgyZmE5ODIgcmVsZWFzZTI0LW1haW50CiszODYyOSBiOGQ5MDVjYTllOTk5OTY2ZDY3N2FlNjQ1NDc2NGFmYmEzYTYwNjI1IGxlZ2FjeS10cnVuaworMzg2MzAgM2Q5N2ViM2I3Y2VjYWZmNDZmZGVlMjY5MDA1ZjY3ZWRhNDhjOGU2MyBsZWdhY3ktdHJ1bmsKKzM4NjMxIDcyYjllYjc0MjI2MzA3YmYyYWJiNmMwMzlkMmI2OWEyZGE2ZDAwMjQgbGVnYWN5LXRydW5rCiszODYzMiAzZmEzNDc1OTU0ODcyMGI2Zjk2MjZmYzNhOTc5ZTBhNTQ3OTdlYTFiIGxlZ2FjeS10cnVuaworMzg2MzMgNTE4MGNmY2M4N2JmZTcyNjQwZTUyODZkMDNiMTNkY2Q2NzAxMjMwMSByZWxlYXNlMjQtbWFpbnQKKzM4NjM0IGRmYTA5N2NjYmM0OWRhNDUzNzA2MTE1ZWI3YTkzZDQzMjYyMmRiODEgcmVsZWFzZTI0LW1haW50CiszODYzNSAyMThhNzYyNzU5MzJlZDY4ZDJhNjc5NzhmMjg4NDJmOWJmOTY3NjE0IGxlZ2FjeS10cnVuaworMzg2MzYgNjc5YzE2MTE1NjEzMWM5ZDQ1NzJhMDc2NzEwMTg0ZDc0NTc0ZTgyZCBsZWdhY3ktdHJ1bmsKKzM4NjM3IDk2MjgwMGVlMzBlZjVmNDJhMzI1ZWE2MmJlNjAzY2M0ZjUwZDUzMWYgcmVsZWFzZTI0LW1haW50CiszODYzOCAwNGJhYTY0NGZmMDAzMzkxZGViZmRjMmE2N2EwMjdkYmE0Mjk1YWUxIGxlZ2FjeS10cnVuaworMzg2MzkgMTFiNDM1MGI1ODc5MmRhOWY3ODE3NjU2MGM1M2MzNmM5MDA2OTZiMCByZWxlYXNlMjQtbWFpbnQKKzM4NjQwIGU1Mjc4MzMxZDlhOTA1OGZhZGE3YTRiNGExMDZjMmMzZWNjNWQ4NzIgbGVnYWN5LXRydW5rCiszODY0MSA2ZjM3ZDExNjAyNjEwOTkyODM0N2E3MGI2ZGY3OTIwMDcxNTMwYmM4IHJlbGVhc2UyNC1tYWludAorMzg2NDIgN2Y3Y2JkYjJjNjExMzdkYWNjNGJiNmVmZjZjNDgxODExZTQyOWM3OSByZWxlYXNlMjQtbWFpbnQKKzM4NjQzIDVmODkzYTRjZGU2ZmQ4ZDZkZGU4YjMzODI4NzcxMzc3MzJhYjEzNTcgbGVnYWN5LXRydW5rCiszODY0NCA1MDUwOWVlOTYzNjRjN2U4NjJiNmMwMzdlYmZlNDI4ZTIzNWVhY2Y4IGxlZ2FjeS10cnVuaworMzg2NDUgMzEzZWQyODE3ZDY4MDllMzNkNDQ3YjljMDg4N2ExNThlNzNmNmYyYyBsZWdhY3ktdHJ1bmsKKzM4NjQ2IDRkYjVlYTk1NzdiYWJkYzdjYjg0YmQ5NGNjODc1ZjVlMDhkOWY1NmYgcmVsZWFzZTI0LW1haW50CiszODY0NyAwNzc0NTE2NmY1NzEzYmE1NmMxYjhhZTgxMmI5YWY0ZmJjNjM4ODhlIGxlZ2FjeS10cnVuaworMzg2NDggZmNiNTA3NDE0YzQxNDhmNDFiZWExZTliZDkwNjhhNmUwMmQ3N2YwMyByZWxlYXNlMjQtbWFpbnQKKzM4NjQ5IDIzY2EyNjMwNjU3YzQ4NTA5YzM1YjZiMzg0NWE2YjA0YjQwYjY3MjcgbGVnYWN5LXRydW5rCiszODY1MCA2YTY0OTgxNjEyNGE3Y2U0NWE1YTEzYzY5ODk3YWM0MTk1YzE0YTc1IHJlbGVhc2UyNC1tYWludAorMzg2NTEgYmMxNTkyOTZkMjUzNTY5NmQwNDA4NTFhZDM4YjhlNGMwMjlmNmVkZiBhc3QtYnJhbmNoCiszODY1MiA1MTFlN2E5M2ExZTlmMTA1ZTY0MjJjYWE5MzU1Mjg1YjY4NWYzYTg5IHJlbGVhc2UyNC1tYWludAorMzg2NTMgODRlYjVlMTg1NTQ3NjE2NmJmMjllYzdkMGZiOWZjOTgwMWZhZjdiMCByZWxlYXNlMjQtbWFpbnQKKzM4NjUzIDMzM2NmMzAzNTQzYjY4MGVjNWUzZmRmN2U4Yzk2NjFmOTQ4OGE1MGUgcmVsZWFzZTI0LW1haW50CiszODY1NSBiZWIxY2I3ODVlMWQ1NDA2Y2IwMzVmNTJkNTJiNGEzNGVjYzY3ZDgxIGxlZ2FjeS10cnVuaworMzg2NTYgN2Q3NDA0YTZhNWVhM2QyNDM3NzE2Y2VmMTljYjlhMTZiYzYyNDNmMiByZWxlYXNlMjQtbWFpbnQKKzM4NjU3IDcxOWViMTAyZWE0NDg4NGZmYjk5NjJjZWU0NWEwYjViNTAxOTk3ZjEgbGVnYWN5LXRydW5rCiszODY1OCBmYjM5ZjRlZWFlYTQ3NjI3NWMwMTg0YTcwNzA1ZDhjMGFkYzNkNzc4IGxlZ2FjeS10cnVuaworMzg2NTkgMmVlNTc1YjliNjBlNWQyYTk1MGFhZDNkNDRiNzhhYjZmZDViOTkxMiBsZWdhY3ktdHJ1bmsKKzM4NjYwIGZkZTVhMWM2YTQ5N2U1NDU2ZDZjZjc1NWYxMzkzNGE4MDFjOWFiNjMgbGVnYWN5LXRydW5rCiszODY2MSA5ZDgwZTYzMDA0Y2RjNmM1MTk3OGIyMmFiY2YwMjllYzM1ZDkxNmIyIHJlbGVhc2UyNC1tYWludAorMzg2NjIgYTMwNWZlZGNhMWJmZmY1MzRiNmI2NzY1OGRkODIyNDcyOTI2Y2UxMSByZWxlYXNlMjQtbWFpbnQKKzM4NjYzIDA0ZmExMzJjOTAyM2RlYzA0YWU4MWNjMzY5MDYwN2Q2NGRjZWRhNTEgcmVsZWFzZTI0LW1haW50CiszODY2NCAzMzZmZWE0MDZmY2YwNmI4OGYzZmZlYWI3MTUzZmM3NTFjMmUxNGJkIHJlbGVhc2UyNC1tYWludAorMzg2NjUgNGJjZTJlNTA5NjFlMWNiODBkZGZiOTJmOGE3MmQxYmU0MTRlZjYyYiBsZWdhY3ktdHJ1bmsKKzM4NjY2IDk5N2IyNTVlMWNjYzg4YmVmOTE4MGNhYjkwNDg3MzI3NzY5NzE1NDcgcmVsZWFzZTI0LW1haW50CiszODY2NyA3NjMwMGM1ZmJjZWM4ZjU4NzhmNWYyYjNiNzEyNmViYmFmY2EzNjA5IGxlZ2FjeS10cnVuaworMzg2NjggZmRlZTg3YjcwMzdhM2I2MDAzZWM4MmUyMGQwYmJhMmUxY2VlOGVkZSBsZWdhY3ktdHJ1bmsKKzM4NjY5IDBhNmE0Y2NmNWNjZjlmZGQwYTliNjM3ZTk4OTRkNDNmMDNhZWQ2YjYgbGVnYWN5LXRydW5rCiszODY3MCAyM2UzZGZjMGM2NDdhOGY1MGViNmFjMTk0NWUyZTU1ZTkyZjdjMzBkIGxlZ2FjeS10cnVuaworMzg2NzEgMmIzOGVkNjZjNjdmZjc2OWUwZjQ0ZDZkMmQ5NDRiM2RlOTY1ZjU0YiBsZWdhY3ktdHJ1bmsKKzM4NjcyIGRjNmYzMTVmMWY3ZjE1Zjk2Yjk1ZDM0ZTk5OWY1MGFjM2FiNTUwMDUgbGVnYWN5LXRydW5rCiszODY3MyAxM2MxYzMzMTZjNmZkZWU0MmE0ZGVhZGU2ZTQ0ZDkxNTU1OTdiYTM2IGFzdC1icmFuY2gKKzM4Njc0IGNmNDMwMmMyMWUwMDNkYjhhNzNjZjcxZTMyMjZlM2VmN2MyMzYzZTcgYXN0LWJyYW5jaAorMzg2NzUgNmQxZWU5ZGIxNTQzZWYyNDAwNmM3ZDJmNzJkYzZkNDg1ZTRiMDdlOCBhc3QtYnJhbmNoCiszODY3NiA5ZjQ1NGFmMTdmN2EzOGZiNzI2NTAwNjkxMzBkOWQxMzRhOWI5MDM4IGxlZ2FjeS10cnVuaworMzg2NzcgM2UyZWUyMTk3MjdkMTAwZDYyY2ZiMTM3NDEwYjUwNDdmOWFmMWQ3MSBsZWdhY3ktdHJ1bmsKKzM4Njc4IGIxNGM4ZTYzMTBlNzEyZTc1NmRjMjM2NDk3NTJhMjUyZmM3YzRiZTAgbGVnYWN5LXRydW5rCiszODY3OSA5YWVhOWY4YmRiMmM0NzgxZDliNDVkNTZjNjQ0N2ZjMmY3MzNiNDkyIGFzdC1icmFuY2gKKzM4NjgwIDEwN2UxZThjOGZjN2U1YTBkMTQzYmI0MjM0ZmYzMTVmZTBiYjg3ZjcgbGVnYWN5LXRydW5rCiszODY4MSAyM2IzZTc5MDZlMGY2MzhmYThmOTJjYmMyNDEyYzU2NmRlMWRhMjhmIHJlbGVhc2UyNC1tYWludAorMzg2ODIgYzA2YzkwYmVhN2RiMDcwMzlmZTJkNmM5Y2FiMmU0MDE5MDliZGRmNSByZWxlYXNlMjMtbWFpbnQKKzM4NjgzIGJiYjYwZTI2OWNlOGRjNTA4N2NiYjhlNDNkZmNlNjcxMGM0NzkwZTkgbGVnYWN5LXRydW5rCiszODY4NCAzZGEyMWZkYzJlZTcyMjM1NWYwNjI3ZGZlZThhZTIwZWZkYjIzMDg3IGxlZ2FjeS10cnVuaworMzg2ODUgZjNmOTlhY2FlNTlmZjg3MGZhMWQwNDNhNGNjMmIwMzcxM2RiNGYxNiBsZWdhY3ktdHJ1bmsKKzM4Njg2IDRjMTNiMDE0NmIzZjZiYjQyNDY5MzVhNzUzYjYyODUwOTM4MzU3MjcgbGVnYWN5LXRydW5rCiszODY4NyA2ZDIwMDBiYWYzZGU5YWFlYjQ2OGQxYWZlMWI2NzRlMDkwYzlhZmQ2IGxlZ2FjeS10cnVuaworMzg2ODggZjEzZjJjYmRmNGRlMjlhNWE2OTk5Y2EwMGIzN2M2YzZmMmJjZTRkMCBsZWdhY3ktdHJ1bmsKKzM4Njg5IDA4NTJkMTk2YjU5MDQzZWZkOTFhM2M0ZTQyOGYyMTQxNGFiYmIzNDkgbGVnYWN5LXRydW5rCiszODY5MCA3OTMzNTMxZDAyYjQ2MjE0MjMyMGI1M2FkZGViMzI5MmFhYWVlZDc0IGxlZ2FjeS10cnVuaworMzg2OTEgNjllMTBlNjM1N2JkNzZmNmNmNTlhYTZlNzUyOGQ5M2QxNWUyNmUwZCBsZWdhY3ktdHJ1bmsKKzM4NjkyIGNlYmZiYWIwMTdhNmU2MzM1MDI5MzYzZGVlNGMyNDUxYjkyYWU2NjkgbGVnYWN5LXRydW5rCiszODY5MyA3MThiMGI1YTY0MTlmOGU1YTgwMWQzOWI2NWFiMWNlNDIwMzE1Y2Q1IGxlZ2FjeS10cnVuaworMzg2OTQgOTljMTZlNDRlNWQ0NmY3NDZjNTg2Njc4ZGQwNTg4ZDA3NjRjMWNhNSBsZWdhY3ktdHJ1bmsKKzM4Njk1IGQ1NWRlYWU0MzEwZGMyM2QxYTc5ODEyZmQwNWMyMmIwMWEyZGI2YWIgbGVnYWN5LXRydW5rCiszODY5NiA4ZjIxZWMzMjc0ZjFjNDY5YmIxNmY4M2UwMWI2Zjk1ZTE3N2IzNDg3IGFzdC1icmFuY2gKKzM4Njk3IGI4ZmY5YmMwMjNlNjc1OWM3ZmFmNzRkZDViZTUzYWQxMjQxNDk2ZjIgbGVnYWN5LXRydW5rCiszODY5OCA0YjlkZjQ4NTZmMzdhNjMwNjU3N2JlNTY2MGU5MDQ1NjQ1MDM0NWI5IGxlZ2FjeS10cnVuaworMzg2OTkgMjM4MGY5ZDFlYmFiOTVlZDRiMGE0OWNlODI5ZGFmYjA4NjlkNGVmNCBsZWdhY3ktdHJ1bmsKKzM4NzAwIDU1NDdmOTAzMDEwOTgzNDVkMmY5OTU1ZTFiYWQxMjcxMTI5ZmZjOGMgYXN0LWJyYW5jaAorMzg3MDEgOTE1MjNjYWVlMTgzOTA1ZTY0NmQwNmY5ZmI0OWQwZDQxZTJmODNhMSBhc3QtYnJhbmNoCiszODcwMiBlMGY1MTk4NTNhOWYyODA4NjEwZjkzYzBlMDhhYTc2N2RiZGUyZjQ2IGFzdC1icmFuY2gKKzM4NzAzIDU3YzZhNmE4MDJhMDgzMTY3Y2ViYjIxZDJmNjJlZTViYzllOTJiYmMgbGVnYWN5LXRydW5rCiszODcwNCAzYzdiMTk2ODk0NzlkOGFjNWQ0MjFhZmYyMTE4MWY5NGRhMWZmMjA2IGxlZ2FjeS10cnVuaworMzg3MDUgOGZjOGU3YTYwNzFjNTA0MTY5MDNjODUyNjNhNTVhYWZlYTEzMDcxNyBsZWdhY3ktdHJ1bmsKKzM4NzA2IDQ5ZTMwYzZjOTFjOGNlNWFmYmZhZWIyZmM0MzdhMzRlYmI3MDAzNjMgbGVnYWN5LXRydW5rCiszODcwNyBiMDE2MjM2ZGZiZDlkZDAyY2JlNGNjM2U0NTQ0NTQxMjg0NmYxOGMwIGxlZ2FjeS10cnVuaworMzg3MDggMjZmMzI3MmQ5ZTExMmVhMWVhYWMzMGQ2M2I0MjhjNzY0NTA0OGMxNCByZWxlYXNlMjQtbWFpbnQKKzM4NzA5IGE0MTI2Mzg5NTBhMTNhZDM0MGRhOTdhNjRiYmE3MDEwMzk5OTg2YjcgbGVnYWN5LXRydW5rCiszODcxMCA3MjFlNjBmNDU0ZjNjODkwNjU0Yzk5YzdkMzAzNTI3Zjc4Yzk3NzJhIHJlbGVhc2UyNC1tYWludAorMzg3MTEgMjk1NmRmOGUwYTQwNDVjMGZmMTNjNmRlYTQyZDJhZmJkY2FjMTc3MCBsZWdhY3ktdHJ1bmsKKzM4NzEyIDA3YTRlOGQ4ZWI2OTIyMTJkOTBkZDQwMzI0ZTkxMWIwOTgwMTc5OWUgbGVnYWN5LXRydW5rCiszODcxMyA0ZWFhYjM4NTY2Yzk0ZmY4NDlmNDAwYjljZDY4YTE3NDlhYmQ3ZWJkIGxlZ2FjeS10cnVuaworMzg3MTQgMDFiYTNiNDA0MzFmMjlmZWQ2MjllN2EyMTAxODUwNjJmYTQwMThjNCBhc3QtYnJhbmNoCiszODcxNSBmMWM2MzAzMzIxZDcwYmMzNWVmNWRmN2RhZGM2NWMyN2VjMDViODU4IGFzdC1icmFuY2gKKzM4NzE2IGQ2OWZkZTQwYzcxOWM5NWM2ZDUwNTg0YjA2MDdhOTcyYzgxYmNlZjkgYXN0LWJyYW5jaAorMzg3MTcgNzYxMWRmMjFhNTkwMDlkNTM0MGMxNzE2YmE0MTI1Nzk5YWJhOWZjOSBhc3QtYnJhbmNoCiszODcxOCA5M2NhYTdkZWNlZTM2MDY1MDkzNDFjYmMzMWFjNWFlNDBjNmVkMjBmIGFzdC1icmFuY2gKKzM4NzE5IGFiODFjODNhOWFjNmNjYWFhYzRlMjdlZDE2ZDgzNmE4ZjNmYTI2NmIgcmVsZWFzZTI0LW1haW50CiszODcyMCA2NTNjYzA5ZmQ5MzEwMTYyMzE4ZGFhZDk2NTAxYmUwYjc4YWViOTk2IGxlZ2FjeS10cnVuaworMzg3MjEgNDdjNTgwM2FhYjQ1ODFiOTg3N2ExMGZiZGI4OWVhYjM4ZTM0ZDRlMyBsZWdhY3ktdHJ1bmsKKzM4NzIyIGVjODdhMTE2NDBkMDAyYmMyNmYwZTBhNGM0NGMxNzQ4ZjI3N2Q4NjEgcmVsZWFzZTI0LW1haW50CiszODcyMyBmOTJkODQ1Zjg3MDMzMzRkODhmYTE1OGJlMGQ3YmRiZjI5YjAxYjNiIGxlZ2FjeS10cnVuaworMzg3MjQgYTUwZmZlNjU5MTFiMGQ0OTg4MGE2YTEwNThlZjA1ODM1ZTlkZDI4YyByZWxlYXNlMjQtbWFpbnQKKzM4NzI1IDAwZmZkYmZjZDVhOTI3ODY5MmVlNmU3MTE1MmQ1NTZiZmEwZTJhOTYgbGVnYWN5LXRydW5rCiszODcyNiA1Y2FmODBmNTVjODYzOGQ4Zjk1NTA3NDdkYWE2NjQ1YWFhODE5N2ExIHJlbGVhc2UyNC1tYWludAorMzg3MjcgOTg1ZGQ3ZjA2NDIwODFlYTk0YTM0Zjk5NGU5YWRkOWYyZjFkMzAwMiByZWxlYXNlMjQtbWFpbnQKKzM4NzI4IDRmMDgzOGI2OGJiYmYxZGUyOWQ3NjZiM2RlMzYyNWMyOTY5MWFjNWUgbGVnYWN5LXRydW5rCiszODcyOSBiNzJkZjhhZWU1NmRhOGY5Y2QyNzZlODZjZGIwM2VlOWFkZDBmMDlhIGxlZ2FjeS10cnVuaworMzg3MzAgMjg4OTJlNjUxMmJhNmI5YjczMTk3NjA2ZjNmMmQ4ZjRkOTgyMzhmNyByZWxlYXNlMjQtbWFpbnQKKzM4NzMxIDMzYTllNDBhNThkNTJhMDIwYzJiNTI4NjgwNzk0ODk1MzI1ODNhODUgcmVsZWFzZTI0LW1haW50CiszODczMiBhZDJkZDg4NDEzN2ZmNTcwMzhkNGUwNTM2OWMxMjgwMTZhYjZjMTc2IHJlbGVhc2UyNC1tYWludAorMzg3MzMgYmJhMDM5ZjJlMDUyOWIxNmEzZWQ1NjI4YjEyYmNiMTVjY2NmODJhZCByZWxlYXNlMjQtbWFpbnQKKzM4NzM0IDdjZmRhOTg5ODg2Mzk2ODMxZjUyZTNhNTgyNTBiNGVhZmQ4Y2FiODYgbGVnYWN5LXRydW5rCiszODczNSAzYmNkZDQ0NmExM2I5Y2I3OWQyOGM2ZTdlOGQ0ZDNiMmM4YmE5ODY4IGxlZ2FjeS10cnVuaworMzg3MzYgMzA2ZjdkNGRiNWVmY2NhZjE3ODRlN2ZjMzJkNDNkOGNkYmM3NWZiNyByZWxlYXNlMjQtbWFpbnQKKzM4NzM3IGE2YzU4NjI2NmRlYTU4ZmJjMTVhMjEyNWQ4ZGViN2RlYmJkNDFiOTQgbGVnYWN5LXRydW5rCiszODczOCA3ZTJkOGUxN2NmMTRhNDExYjFlNTYwNTQ4ZDc4MGRjZWYyZGYzOGM2IGxlZ2FjeS10cnVuaworMzg3MzkgMzBiMDJjN2VmOGJhNjcwMmViZmE2ZTZiMjE2OWI1ZDNjZDUzODVlOSByZWxlYXNlMjQtbWFpbnQKKzM4NzM5IGY5MDU0ZDIzNTg3MDAyOWFmYTMzZWY5NDViY2E3ZWNlOTk2MTZjMTAgcmVsZWFzZTI0LW1haW50CiszODc0MSBmMzE0MjNjNDk1ZDY3ZjAyNDNlMTM0YTVjNzU5OTJlNThhZjNmM2Q5IGxlZ2FjeS10cnVuaworMzg3NDIgZGUxMjE4OTlkMDIxNjE2MzQwYmY4Njc0MDk3YjU3Y2QxYTNkZTczMCBsZWdhY3ktdHJ1bmsKKzM4NzQzIDVkZGExZjllNjJhNzM2Y2ZiNWQwYmIwMTBhNDA1YzEwYmRkM2JmYzMgbGVnYWN5LXRydW5rCiszODc0NCAwNjU4ZTZlZmZhYzcwNDhmMWU5NTFlNzZkYmI5MWMyMDc4MmZhZmQxIGxlZ2FjeS10cnVuaworMzg3NDUgY2QyYzA0NGY2OTlkN2M4Y2NlZjUxMTZjODE0YWFiMWJiYjE3ZTZhNCBsZWdhY3ktdHJ1bmsKKzM4NzQ2IDEzZDVjYWExZTlkMDJhYTk5OTcwM2UyOGQzMzc1YmU4YzYwMDk2NTggbGVnYWN5LXRydW5rCiszODc0NyA1MWJhOGNlOGQ5MmFmZGYwM2I2OGE4MTEwMmRjZmZjMmFiMjc1YjQyIHJlbGVhc2UyNC1tYWludAorMzg3NDggNThmM2YwZDA0NWY1NDVhZGI5YWMzZjYwOGVmYjc2NDFhYTQzNGU0NSBsZWdhY3ktdHJ1bmsKKzM4NzQ5IDg0NDUzMDUwODQ3NTY3ZjgwMTcyOTgzNWYxYmY1YjMwMDE4N2NmMzQgcmVsZWFzZTI0LW1haW50CiszODc1MCBhZWY3MTNkZTdhMjNjNjQ1MTE4OGNlZGE5MDQ2YmM5ZTc0OWFiYmYzIHJlbGVhc2UyNC1tYWludAorMzg3NTEgZWFkNWU3M2FiYjUzYzk4ZjNjNjhhOWQzYjYzZDU3Yzk2YjM3ZmQ0YSByZWxlYXNlMjQtbWFpbnQKKzM4NzUyIDYzYzVkNmNlMDc2MzRkNjYyZTE0ZTg3N2QyYmJkNWRmYjYyNzRkOTggbGVnYWN5LXRydW5rCiszODc1MyA3ZTFhMzEzM2ZmZjJlYTU5MmYzMjgxOTk3YTY4MjUxOGYzOTBlODhiIHJlbGVhc2UyNC1tYWludAorMzg3NTQgNmFmZjIyNjAwZTE1YWEzNjZhZjhlNmE5MTAwMTFjMGViNjNmYjFkNSByZWxlYXNlMjQtbWFpbnQKKzM4NzU1IDExZmQyNjM3ZTViYjc0NGUzZmRkZmQ0MGE0ZGFkYmEyZGEyMzdkY2MgcmVsZWFzZTI0LW1haW50CiszODc1NiBlYjZjMjkxNWJhZGQzNWMzNDhlYjcxYTdkZGMzY2VkNTkwY2Y1NzM5IHJlbGVhc2UyNC1tYWludAorMzg3NTcgYTk1MTFjMTUxMjRiZTVhNTgwMzJlYmVmYzE3ZGI1MGFhYWFiMGEwOSByZWxlYXNlMjQtbWFpbnQKKzM4NzU4IDJlYTNkNjkxNTIwNDEwM2Q5OWNhMGRkMDU3NWEwM2U4MTM0ZjJlOTQgbGVnYWN5LXRydW5rCiszODc1OSAzOTM2Y2Q3ZjE2ZjI1NWYxMWM5YzI0Mzg5YWZkNzQzOWRjM2FjMTNiIGxlZ2FjeS10cnVuaworMzg3NjAgYjg1ZTgxMDQ2MGVmYzViNDI3NzFhNzU4NWU3NWNiODc0NDMxMmJhMiByZWxlYXNlMjQtbWFpbnQKKzM4NzYxIGZlNTMxYjVkY2ZkNjA5MmIxNDQ0MDA0MzhmM2E0ZWRhN2I1OWZjMjEgYXN0LWJyYW5jaAorMzg3NjIgODBjYzQ0ZWFiZGVlMjU5YTAwNzUwMThjMjZhNjNkZDVmYmFlYjdjYSBhc3QtYnJhbmNoCiszODc2MyA2YjIxZGM5NDM4YWQ1YzFlZjk5OTYyN2Y4ZjhlNTQyZTljNmFmZmQ3IGFzdC1icmFuY2gKKzM4NzY0IGNhNGQ4YjRmYmIwNWRiMzEwNjlhNmU4MDc1YTEyNzExOTljOGMxNTkgYXN0LWJyYW5jaAorMzg3NjUgNWMxZWJiNWFlNTIxNDM5NjgxNDM4MzlhZjdkZjkxM2M5NDZiMDNhNCBhc3QtYnJhbmNoCiszODc2NiA1ZThjOGNiMTFlNWJkYzJmM2ZiNzFjYzc2YWJhMGYxNDY3MmE2OGRjIGxlZ2FjeS10cnVuaworMzg3NjcgYWI1ODIyZjc1MTVhNWZlYzU3MmYwMzJjZTk5MWIzMjM2Y2IyMmFkYiByZWxlYXNlMjQtbWFpbnQKKzM4NzY4IDcxZmQ3ZWU0YjdmNTBiYzkzM2Y3MTE0MDgxYWY5MzJkZTg4YWJkMmUgbGVnYWN5LXRydW5rCiszODc2OSAzNGNkZmM1ZGQ3ZWEzNGU1NzY2ZDg4OThlMjRlMDFiMWE4MTczYzI1IGxlZ2FjeS10cnVuaworMzg3NzAgYjQ5ZDM5MTExYzQ4NmNlZDgzOTFjNzljYTM1ZjI4NWFlYzhlMTZlNyBsZWdhY3ktdHJ1bmsKKzM4NzcxIDU1MzVjZTBmZjdmOWY2ZjVkZTk4MDE0MjY4ZTAwYjU3NWY4ODBmMDIgbGVnYWN5LXRydW5rCiszODc3MiBkYTQ2MDg0MWI2M2NiODNkNjE3YmFkZjg4ZmJkYjEyZDhkYWRhYzlmIHJlbGVhc2UyNC1tYWludAorMzg3NzMgYmM5ZmJjMjNjZDRhNTk5MThkYjEyNzFiMDg2NGQ0MGI0ZGQ5NTZhMyBsZWdhY3ktdHJ1bmsKKzM4Nzc0IGI2NDk5NzNkMDk2MmViMDdiNTg5YmVmMzQyNWZhZTYzZmRkOTk0MzUgbGVnYWN5LXRydW5rCiszODc3NSA2ZGQyZDEzNmU4NDY2MWMwNzgzOGQ0MjMzOTM0MTQwNWU5YjJjNDU1IGxlZ2FjeS10cnVuaworMzg3NzYgZTc2MmZlYTc4Y2IyMzYzYmUxNjM1ZWU3NDZmZWEyZjhjOTE0ZTU0YiBsZWdhY3ktdHJ1bmsKKzM4Nzc3IDAxNDNkOTkwZDYwY2M2MDEyMGU0NmI0YTExMzA3YTk3M2NiYzZjMGMgbGVnYWN5LXRydW5rCiszODc3OCAxOGRjOTE1ODE2MGQ1Yjc4Nzk0N2EzMGM3NjA1OGY2NjAzM2UxN2EzIGxlZ2FjeS10cnVuaworMzg3NzkgNWE1MjIyMjVjNGRiMzU5ZmI3ZDU4Mzg1ZTM0ZGMyYzMzNjA5ZGMxNyByZWxlYXNlMjQtbWFpbnQKKzM4NzgwIDIwYjNjNzIzNTAyYWQ0YjM5ZjM4MzgxYjhlNDRjMGJlY2IxZDhjZGQgbGVnYWN5LXRydW5rCiszODc4MSBjMmE5YzNhMTg0Nzc2ZmM2MTQyNjU2ZTUwMGIyM2NlNzIzY2ZhMmQ3IHJlbGVhc2UyNC1tYWludAorMzg3ODIgOWE3ZjQ2YzQyNzczMTRmNzRkNTlmNmJjMTI0ZGZhNDdiNjk1ZDkxYyBsZWdhY3ktdHJ1bmsKKzM4NzgzIGI5OTY3NDdjMDhiNjg5MTUwMjA2NTQxZGI1MmM4MzlhMWUxYmI0OWIgcmVsZWFzZTI0LW1haW50CiszODc4NCBhZjVkNDgwMTRiM2U2MzY1ODZhODY2YzVkNTE4MDdiMTdhMTJmNzJlIGxlZ2FjeS10cnVuaworMzg3ODUgNWJjOTFiYjI0NGIxOTAyZmY0MzFmNzE1Y2JmYjZiN2Y0MGI2NDM2NCBsZWdhY3ktdHJ1bmsKKzM4Nzg2IDY0YmM1YTkyMmY1NzkxYjRiODc1Y2VjMGRhZTdiMTg1N2E3NTc3NDYgbGVnYWN5LXRydW5rCiszODc4NyAxNDNjZGE1YTkzNDgxZmRmMDczMmVmNGNjNjAxODRmNjk0ZjAyNTVlIGxlZ2FjeS10cnVuaworMzg3ODggMDM2MTMwOTdiOWNiMzQ1NDEwZjU0N2Y0NjBiMDU1NmI2MzcwMDBiZSBsZWdhY3ktdHJ1bmsKKzM4Nzg5IDc5MjAxZjgyMGVkMDRhOTBkYWFjZGNhZDQ2MTZmNWFmMDlkOGUyYjIgbGVnYWN5LXRydW5rCiszODc5MCBhZDZhYTJlZWNiNTY5YjE0NTI2M2VlOWQxMGJiM2E5NGNmMjgzZmJjIGxlZ2FjeS10cnVuaworMzg3OTEgMDc2YTdjN2ZlMjhiODEwYjUwMDAwNTllZDgwYzNkM2I5MzNmOTVlOCBsZWdhY3ktdHJ1bmsKKzM4NzkyIDdjMjc4MGM5ZTUxYmRmMzNhNWViMWE5YmY4MzU0NmU1MDdiMjMxM2QgbGVnYWN5LXRydW5rCiszODc5MyA4NjJlYmI2MjEzNTUxMDkyNThhYjk0OTRlZTcxNzkxNDI3MmRkNmE2IGxlZ2FjeS10cnVuaworMzg3OTQgOWU2NTljYjcyN2VhNjhjOWE1NDM5ZThjNzk2Njc1MTVkOTJiMjAwOCBsZWdhY3ktdHJ1bmsKKzM4Nzk1IDQ0NDY4ZWZiNTI1ZWQ1Nzg2ZGI5ODgyN2QyMWQ5YWU2NzRjOTFhOTEgbGVnYWN5LXRydW5rCiszODc5NiA0OGM3MWZmMzg1NzgyY2MyMjcyNTNlMmQwY2U4NWMwYjQzZTZkYTNiIGxlZ2FjeS10cnVuaworMzg3OTcgMTkyNGEwN2Y3ZjIzYWY3ZTliYzljYjE1MTA0NTdmNzkwNmEzOGMxZiBsZWdhY3ktdHJ1bmsKKzM4Nzk4IDQzM2Q3Mzc4ZGZjMmZjMjMxMDBmMGE2ZTkxYjFhM2I3YTkwYzE0OTkgbGVnYWN5LXRydW5rCiszODc5OSA2MWVjOGI3OTU2NDFjNGQyZWE1NDMyZjNjYmNhMjdlZGMxODE3ZDc2IGxlZ2FjeS10cnVuaworMzg4MDAgM2JjMjhmNjM1MTdhNGQwM2MzNDYwNWMwMzAzNWRmZWIxZTYxZjVlZCByZWxlYXNlMjQtbWFpbnQKKzM4ODAxIGQ1MjA3NGQ4OTRkZjI5Mjk0ODc2OTBkYWMyNjI2MWUzNDQ2YTYwODIgbGVnYWN5LXRydW5rCiszODgwMiBmYWQxZThlMDk0NTZkMGQ1MWVlY2M0OTU2ZTQwNDE1NWU3ZDVhM2Y1IGxlZ2FjeS10cnVuaworMzg4MDMgZmJjYjFkYTQ4MGRkNGIxYWYyYjE3ZDc3MWVkN2E1MTk3NWM1ZTE3NSByZWxlYXNlMjQtbWFpbnQKKzM4ODA0IDFhYzkxNGQzYmRjMzk0OGQzNDVlNTZiYjc4Yzk5NGNkMjVkY2VhYmQgbGVnYWN5LXRydW5rCiszODgwNSBkYWQyYjYyMDQ5NzQ1NTU5ZWY4ZDY4MDFiYzVmOGEzMzE0YWU4Mjc0IHJlbGVhc2UyNC1tYWludAorMzg4MDYgMzRmOWIyYWRhZTJjNmJmYjk1OWFkYWUzODRhNjg3YTAyYzI4N2NlMyBsZWdhY3ktdHJ1bmsKKzM4ODA3IDM4YjY1NDgzNjlmYWU4NWMyZTk4ZjA3NWNmMjA5YjdkN2I0Y2NmN2IgbGVnYWN5LXRydW5rCiszODgwOCBjZDNiOTUyNzA4YWYwZjlhYmU4ODA5YjY5NDk0MDhjZDBjYWEwZjBjIGFzdC1icmFuY2gKKzM4ODA5IDRlNjI5ZWJkMGUzZTU3YjBmNzk3NDdkMDk2ZmQyM2JmZTQ0OTgwNzAgbGVnYWN5LXRydW5rCiszODgxMCAwMjBlZDY3MWFhNjIxNWVhOTExNjJmZTU2NzFmNGRhN2YyZDkxZTI2IHJlbGVhc2UyNC1tYWludAorMzg4MTEgZDdhMjExN2ZjYTQyNTM1MGUyODhlMTUxNjcxMzY1NDAyYmZiNGRhYiBhc3QtYnJhbmNoCiszODgxMiBjNjA3MjlhNTc5MzI1ZjQzMWZkNDM1ZGIyZmEwNDJmYjYyMjc1MmJjIGFzdC1icmFuY2gKKzM4ODEzIDhlNmNkNTAwYzhmYjVhNTQwODA3YmY3MzM0MzJlMDQ3Mzg1OGJjZjIgbGVnYWN5LXRydW5rCiszODgxNCBmYzQ0MmMyZWIwY2Y2ZGJkOGFkYTFkYjE1ZTE3YmZkZDg2N2UzNWE4IGxlZ2FjeS10cnVuaworMzg4MTUgOTg2ZDQ2YzRmYWViMjI5MDk4Yzc2MjhlOTBjMGU3OGE2MzNmNzA5YSBhc3QtYnJhbmNoCiszODgxNiBjOGFmZGQ5MjcxNWMzMjc3NTE0Mzc3ZTMyZjEwZDdkNDUxOTQyMDE1IGFzdC1icmFuY2gKKzM4ODE3IDYwODMwYWQ2Mjc1ZTJjODAwZTY2NzdhNDQ3ZWJiOTY5YTgxYmYyMmYgcmVsZWFzZTI0LW1haW50CiszODgxOCBhOTllZTI1MGUxMGMxYzU2MzNiOGM5ZDA3MzdiNzMyNDEzMjQyMjhlIGFzdC1icmFuY2gKKzM4ODE5IDMwZjM3YzBlMTU5MjU2YzljODM2NjFjZmM1MzlkMTE3MDJiYjY0ZmQgYXN0LWJyYW5jaAorMzg4MjAgYTk2YjUwMTQ5OGE4MDhmMDIyY2ViODNmMGE2YTYwMmU5M2Q1MjBjNyBhc3QtYnJhbmNoCiszODgyMSA1YzYwY2JiNjUzMzBjZmFhNTc4YjA1NDRlOWMxZDMxOGRkMWQ0YjRmIGxlZ2FjeS10cnVuaworMzg4MjIgNzI2N2ZjNDBhZGFjMTUzYjc4M2UzNzM3MjBiMWI4Mzg4ODdjNGY4YyBsZWdhY3ktdHJ1bmsKKzM4ODIzIGQ0MzVkMjE0YTU5MjQxNDUyMDdjZDViNDEyMjUyMWNlYTJlZDQ2YTggcmVsZWFzZTI0LW1haW50CiszODgyNCA4NzcxOWFlOTI4OGNlZGJiOTk4M2VkZTUxYmNjNjUxYmQxNGQzZDg0IGxlZ2FjeS10cnVuaworMzg4MjUgMGYzMDYxZjQ5YTllODlhYjY4ZjgwY2E4YTk4MTk0OWNmOTQ1OTAwNSBsZWdhY3ktdHJ1bmsKKzM4ODI2IGFmNTkwZjYyMmMwYmMzYmU2ZmUyOTIxMzJlYjI2NDk0OTQxYzc4NmYgYXN0LWJyYW5jaAorMzg4MjcgZDRmZmM3NzFlOWZmOTY4OGRjNDE2MjRkNTA2NTk2ZTQ0NGRiZGU5MiBhc3QtYnJhbmNoCiszODgyOCBiNDc3YzRkN2EyMGMxYTY4MjBjMTdjYjkyODM0YjBlNjAxYmI5ODVmIHJlbGVhc2UyNC1tYWludAorMzg4MjkgYzRlYTE3Y2Y1MjExMTU2NDNmMWUzZDkyNjRjZmFkYWIxNjk5YTVlNiByZWxlYXNlMjQtbWFpbnQKKzM4ODMwIDhiMDNiMDkxNDFkMjg3MTcxZjFlOTYzZjA2ZDY3Y2Q4NzE2MmMyODggbGVnYWN5LXRydW5rCiszODgzMSBhMTMwOTZiODU5OGI5YTY3ZGI1MzYwMjI2NzA1OGI3ZWU4YTY4N2RjIGxlZ2FjeS10cnVuaworMzg4MzIgNmJkYzM0MjZkNDExM2YxMjVlMGJjYTQ5ZTAxMTE4NzRlNTVhMmY4MSByZWxlYXNlMjQtbWFpbnQKKzM4ODMzIGY5ZTMxZGI2YzcwMzYwMzZlYTViYzM2ZjQ0MTc5NDBiOTQzZjUyYzggYXN0LWJyYW5jaAorMzg4MzQgZmJiMmYzYmI4Y2NjZDE1ZjQxZTg5NjBjNjlkMWJjYWU5ZDU2OWMxOSBhc3QtYnJhbmNoCiszODgzNSAyODA0YWEwNDM4Y2M4ZDM2ZmMzZGUxYzg5ZDIwZjllMWE1M2YzMDkwIGxlZ2FjeS10cnVuaworMzg4MzYgYWUyNWQ0NWY4OTg3NjM1NGJmODQzMjU2ZmUzN2ZiNmVkNzMxZTk1YyBsZWdhY3ktdHJ1bmsKKzM4ODM3IDY3YTg5YjQzZGNjNzIzYTU1YjhmMzM2YjYzY2M0YzExYmUwNzJjMzkgbGVnYWN5LXRydW5rCiszODgzOCA0YzhlNTI0M2NhNDI1MzFlNDM4ZjliMWUwOTAyNDVlZTk3MGE4MzMzIGxlZ2FjeS10cnVuaworMzg4MzkgZDM0YmRlZDMxOWFhZTVjZmZmNDBiOWFjYjNjZjllYWQ1YjdkMzE4ZSBsZWdhY3ktdHJ1bmsKKzM4ODQwIGJjMTIzYjljZWY3ZmE5NjljN2IwMjI5YTFmMWUyM2FiNjRiYTNlNjIgbGVnYWN5LXRydW5rCiszODg0MSBjNjZhN2ZiZTE2Y2Y5ZTUxYzliMTEwNDkwMzJjNTY0OTAwZGFhNWMyIGxlZ2FjeS10cnVuaworMzg4NDIgMTMzMWM3Nzk5NjQwOTM2MmRkYzdhNjk0NjE0ODAwZTliMDFlYjQ3YSBsZWdhY3ktdHJ1bmsKKzM4ODQzIDdmNzIxMDlkZmI0ZmFmYzc4ZTIxMTNhMmQyNjRhZDkyNWU4ODMxOGYgcmVsZWFzZTI0LW1haW50CiszODg0NCBkMDU1Zjk0ZDA5MzZhNjkwZjIxZjFkNmVhNzUxMzZkNzYyMTJhNTk4IHJlbGVhc2UyMy1tYWludAorMzg4NDUgOTg1N2RhYTIyODA3YjczOWJiMDVhOWVkYzU2Y2MyZTYyZDkzZjcyNSByZWxlYXNlMjQtbWFpbnQKKzM4ODQ2IDM1ODE4NDBjODJlNzAxYjRiNDFkYTM5MGM1OWVmZjQ0MjcwZWNjODMgYXN0LWJyYW5jaAorMzg4NDcgMDhlMjBlOWM3NmZiZjNlZTM3ZDhhYTE4MzFjMWI1YmI2ZWRiNjkxOSBsZWdhY3ktdHJ1bmsKKzM4ODQ4IDI5NGRhYmNiMzc5YjUxYmU3Y2M0MWFjMjMxZTBiMTI3MjVlYmUyMmYgbGVnYWN5LXRydW5rCiszODg0OSA5YTFiMWUxYWU2NTNmYzk1NjMxMzQ3MzIyYWI0ZjdiNTljMzQ1NTdkIGxlZ2FjeS10cnVuaworMzg4NTAgNDljNmRjZWQwOGMyMWY0NDNiNmE1NDE0MWVkZjFhZjE2NmIzNzA5NiBhc3QtYnJhbmNoCiszODg1MSBjMWE4YzJkN2U1MjhiZGI3OTcwZjUyZDU4MDQ4YWM5MjVlNWM3ZWM0IGxlZ2FjeS10cnVuaworMzg4NTIgYWFlYWIyNDljODZhZDMyN2VmMTI3MmMzMGZmN2IwNTQ4Njk4ZDE1NyByZWxlYXNlMjQtbWFpbnQKKzM4ODUzIGVjOTdlNGMzNzA1NjNhZjk3ZDI2NDg4NDQ2Njk1ZjM5NmU2MDg0NjggbGVnYWN5LXRydW5rCiszODg1NCA1Y2NjODc3N2NlYTI3MTU3OTZlMzNkMjZjNjExYWI4ZjY0MTQxMWJlIHJlbGVhc2UyNC1tYWludAorMzg4NTUgYTUxODVhYzFlNGVjNmNhZmM3ZDJlNTQ4MjhlNzUyNjMwM2MzYWYxOSBhc3QtYnJhbmNoCiszODg1NiAxMGFmMTY1ODNiNzU1NTg5Y2MwZjQ2MjRmNzRiMjliNDAzMGIwZDZmIGxlZ2FjeS10cnVuaworMzg4NTcgZGFiYTg1ZWY2NTRhNDlhYmNhYjBhMTQ3NmRiMjIzNGYzNDc0ZTZjOSByZWxlYXNlMjQtbWFpbnQKKzM4ODU4IGMwYjRkZTc0MWIzODNkZmMzODVkYTg1NjNkYzFiNmI3OWE2MTAxYjMgcmVsZWFzZTIzLW1haW50CiszODg2MCBhMTI5M2VlNmUxZGI5YTk0YzhmYWU5MmUyMWU2YWI1YmM2Mzg0YWFlIGxlZ2FjeS10cnVuaworMzg4NjEgM2M2NzlkMDA4NzllYmIxYjUxM2IxOGVmNmFlYjE0MTJjZDQyMGY3NyBsZWdhY3ktdHJ1bmsKKzM4ODYyIDQ3NWY4YWRjYjAzMjk0MGU2ZjY2ZTQwN2QxNWNlZWM0Mjc4MTQ3N2IgcmVsZWFzZTI0LW1haW50CiszODg2MyA3Mjg3YjQxMTQ1YWUzNzZhMGZjZWE3MDEyMjE3NjA1YWViNzA2NzY3IGxlZ2FjeS10cnVuaworMzg4NjQgMmM3NDk4YzJhZTcwN2ZkYTM3MmNkNzQ0ZGQ1ZjJmZGE5ZThkODYyZSBsZWdhY3ktdHJ1bmsKKzM4ODY1IDc0YzEyYzFmMzY5Mjk0NjE5MzU4NDM4NGViNzNiMjM4ZjdiYmY5ZjUgbGVnYWN5LXRydW5rCiszODg2NiA5ZmU3ODAxZmM5YTRhMjE4OTNhOWNhNDZlMzIyN2U0NGVlMTVhM2U5IGxlZ2FjeS10cnVuaworMzg4NjcgYTE3MDAxZjhlMWI0ZWI0MTFkNDFjYTJlYTVjNDE5MmJkYzEyOWZjOSBsZWdhY3ktdHJ1bmsKKzM4ODY4IDljOTE3MmJlMWY2OTc1ZWJiNWI0MjQyNDZhMTdiNGU5NDFmMDQxNjAgcmVsZWFzZTI0LW1haW50CiszODg2OSBlNGUwY2ZmMTZiYzdlOTdiOTc0MmU3Y2MzZmY1ODg4Y2RjMWY5OTQ2IGxlZ2FjeS10cnVuaworMzg4NzAgNzVmNTE5NjEwOTdiOWQ5NzU4ZDA0MTgzOTU2Nzg1MjYwOGI0NGZiOCBsZWdhY3ktdHJ1bmsKKzM4ODcxIDFlN2E2YTVjMzYxNDNlNGNmNjllOTY3YjYzYmRlM2MzY2MzZGM0OGIgcmVsZWFzZTI0LW1haW50CiszODg3MiBiMTE2MzM5ZGRmMjc4NWYzNDExNzBmOGJkOTVlMzc5ZmIwYmE4YWI3IGxlZ2FjeS10cnVuaworMzg4NzMgMzY1OGE3ZTExYzE0OGQ4M2MwOGFiODNmMDlhM2I1ZWMwZWQ3MDc5NSByZWxlYXNlMjQtbWFpbnQKKzM4ODc0IGFlNWYyNzQ0NmY4MTkyNDc1M2RkZGUxYmIyYTQxMDNiZmY2Zjg2MDQgbGVnYWN5LXRydW5rCiszODg3NSBmMzMwMDc4NjQyNDNmMDk2MDY2ODkxNjA3OGU4MDBjNGNhNTA1NmM2IHJlbGVhc2UyNC1tYWludAorMzg4NzYgOTMzOWM5OWEyOTgyODEwN2E3YWM5M2VmYTgyZjRjZGNhYzBiNTRlMCBsZWdhY3ktdHJ1bmsKKzM4ODc3IDQwNDA4ODUwM2E3ODAyOTZhMTFkMmQxMjEwNzMzNDkwMjkxY2ZmYTcgbGVnYWN5LXRydW5rCiszODg3OCAzNzY3Y2RhYTY3MjgyNDhjYWVlYTE2ZTk0ZDIzNjg1NGRhNzFmZTRjIGxlZ2FjeS10cnVuaworMzg4NzkgYzkxZTVlMzFjNWZmMWMyYWZiYjBjN2Y3NTgzNmQwNzA5NjVhZWEyNiBsZWdhY3ktdHJ1bmsKKzM4ODgwIDZiYTI5M2I3MTE1Yjc5ZWQyMWU5Yzc2MDM4MTU5YmQ2ZTA3MjE3MmEgbGVnYWN5LXRydW5rCiszODg4MSA4MGZiMjg5MWIzM2JmY2IxMTNiMGM0MzM4MjU5NzI5NWQ3NTU2N2Q2IGxlZ2FjeS10cnVuaworMzg4ODIgNGEzM2M1OGMzMTljMDhiODYxODNhNWVhOTIxOGM4MDRmNzkzYjM5OCBsZWdhY3ktdHJ1bmsKKzM4ODgzIDA0NzQzNGFjYjVhOTE5ZDM2NDA2MWE2Njg5Mzc3ZTI2NjczOWRlM2IgbGVnYWN5LXRydW5rCiszODg4NCA1MGJlZDY3OGVkZGEyZDdmMjA4MmI2YzgzNjU1N2FhMjBhNWExMmExIGxlZ2FjeS10cnVuaworMzg4ODUgMWVhODA3NzY5MzI5MmQwMTcwZTM2NWFjOWViYjcwM2Q3ODBmMWZlNyByZWxlYXNlMjQtbWFpbnQKKzM4ODg2IGY2YWY5NDMwMWViYzI3NTE5M2RiZTA0OWNjYmFiMmEzNGE5MGRkZTYgbGVnYWN5LXRydW5rCiszODg4NyAxNDVjMDNhODVlYTgzODcyNTFlMGMwOTUzMzg3YTM4ZGI2ZWY0MmQ5IHJlbGVhc2UyNC1tYWludAorMzg4ODggOTM2Mjk3NzBhOTNmNDY3OWQ0ZDZhN2I5NDgyMzJiNmQyNjc2M2M5NiBsZWdhY3ktdHJ1bmsKKzM4ODg5IDg2ZjRiMTgxN2NhYTY5YzZhYTBjNTQxNDM5Y2I2ZTQ2YjA2NjFhMzYgbGVnYWN5LXRydW5rCiszODg5MCA2NzJlNWY2NTE3MmMyZjE2OWExYmQ0ODY0MWUzYzQ3OWJjNmViODM5IHJlbGVhc2UyNC1tYWludAorMzg4OTEgZDQ1MTU1NDc5OTc2NjZjMGFmOGVjZjJiZTA4M2M0ZTBjNmNmNGZiNyByZWxlYXNlMjQtbWFpbnQKKzM4ODkyIDA5MDU4MTJkZjRhNWYxNDkyNWQ1MTE3ZDQyYjI5N2MyZWIxNmUyNDYgbGVnYWN5LXRydW5rCiszODg5MyAxZGQ4YTBkNjQ0MzIxY2JkMDNlNThhZjQ5Njc3ZjUyMDgxYmRjYWVjIGxlZ2FjeS10cnVuaworMzg4OTQgOTE2NTE2OTgxMjYxMDYxZmUwNjUyZWM0NmQ2NjFlNWZlM2JjMjE2NCBsZWdhY3ktdHJ1bmsKKzM4ODk1IDM4ZDA0ZWQwMjhkMWVmNWFmZjUzMTEzYTMyM2FjOGUwNzhlZGZjOTEgbGVnYWN5LXRydW5rCiszODg5NiA1ZTUxMWRkZWY0OGIyZGI1ZDZiOTBkM2JjMDk5ODU4N2UxY2Q1Yzg1IHJlbGVhc2UyNC1tYWludAorMzg4OTcgMTg3M2U4YWY1YThhYzIxNTRkNTJhZjA1ODM3NWY2ZmM3NjRhMTViOCBsZWdhY3ktdHJ1bmsKKzM4ODk4IDNjYWJhODA3MjA0YmJjODgwYmZiNWYxNjVlNGQ2OWViM2Q5ZjE4YzggbGVnYWN5LXRydW5rCiszODg5OSAwYjAxZWU4NmNjZmQ4OGZiZjlmZjU1MjEwZWFhMjBmYmZmZDYyMjNkIGxlZ2FjeS10cnVuaworMzg5MDAgYTI5MWFkOWFhNmExMGMwMTgxYThhODE1YjM5Njc3MDIwZDcxY2Y3YyByZWxlYXNlMjQtbWFpbnQKKzM4OTAxIDlhMDdmNmQ0ODE2YWIxY2RiMThmM2MxNTJjNDI4OTYzN2E5NWQ0M2IgcmVsZWFzZTIzLW1haW50CiszODkwMiAxODRmMTBlMTE2ZmZmOTQzNTUxZTVlZjVhZmIyNzkyNDliM2MwNDU2IGxlZ2FjeS10cnVuaworMzg5MDMgZWY5MzBjYWU2M2E4ZTIxYmU1MmQ5OWIyNzRhYWEyMDA1NmZkZGRkMiBsZWdhY3ktdHJ1bmsKKzM4OTA0IDY2ZTA0MTRjZGZhNmFiMDg4YzI5ZTU3MDY2ZmVjYWFmYjE0NGE4Y2IgcmVsZWFzZTI0LW1haW50CiszODkwNSAxNjk5ZGM1MWE1YjU3NjljNjU5ODVlZGQ3YThlMDA0MWViMmJhNzkzIGxlZ2FjeS10cnVuaworMzg5MDYgYjE0MWQ1N2M0ZmNhOTZjMDE4NTRhNGQ5N2I2YTdlZTc2N2NjMzQ3MiByZWxlYXNlMjQtbWFpbnQKKzM4OTA3IDk4NTQ0NzJiOTIxYmE0N2IxN2E5NjYzOTU4ODRjMWExNDAzN2M4NTggbGVnYWN5LXRydW5rCiszODkwOCBlZjE4NDU2MmU4ZTAzZGU5NjFiMTg3NmFiYThlOWJmNjIwMmEyZTQ2IGxlZ2FjeS10cnVuaworMzg5MDkgYzA5NTg4OGZjNTQzYzgwYzk1MGMwMzBkY2Y5MTBmYjNkMjQ5ZjlkNyByZWxlYXNlMjQtbWFpbnQKKzM4OTEwIGIzMTczNmY2MjViYTdmOWM3NTI4MGQ1MTUzMWI4NjcxMzBkNTQ1ZTYgYXN0LWJyYW5jaAorMzg5MTEgMDJmMTNlMDBlMmVkMTMwMzU4OGVhOGQ3OWU3ZmJmOWQzYzEzM2ZiYSBhc3QtYnJhbmNoCiszODkxMiA4YjA1YTQ3MzJjZjM2MWEzODc1M2UwOWEwNGRkZjliYTcyMDQxOTZmIGxlZ2FjeS10cnVuaworMzg5MTMgMDBjZDM1MGNmN2JmMGM2MmQzZmUyZWQxYzBlY2M2YmJkNmNiZTJmOSBsZWdhY3ktdHJ1bmsKKzM4OTE0IGMwZWFkMjkxOGNmNzQ1NDAyNDFjZmNjMWM5ZGUzNDY1YTk0Y2U4YzEgbGVnYWN5LXRydW5rCiszODkxNSBmNzEzZThhYmYxNGUzY2E2MjNmOTJjOTg4NmQ0ZmU4ZGM1N2NmZjQwIGxlZ2FjeS10cnVuaworMzg5MTYgYTJiMjIyNzc3M2U3ZmU5NGI3Mzg0MzI2YzIzZDk5YTNjMmQxYjUyMSByZWxlYXNlMjQtbWFpbnQKKzM4OTE3IGI0MjNiNDI3ZTE3ZThkNjFiMWVhZjYwZDEzOGY0MTU0NGI1YTIwZTkgbGVnYWN5LXRydW5rCiszODkxOCA3YmNhYmJiNmI0YjdlZjQzZGFkYjhhMzMxNjNkNzZkN2ZkMDkyZmY0IHJlbGVhc2UyNC1tYWludAorMzg5MTkgZTNhYzVmMGFkM2UzYWNiOWVkMmNjOGVkMTYxMzkwOTNmODJmNmE1ZiBsZWdhY3ktdHJ1bmsKKzM4OTIwIDIxMjUxZTIyMWU1NjJmMGRjZWMyYzE5ODU5ZTNiOWMwZDQxZGFiOTEgcmVsZWFzZTI0LW1haW50CiszODkyMSAyNWEwZTFmYWE4YTVlZDhmMDkxZmNmMWEwZTZhMTFiZTRjMjYzOTc0IGxlZ2FjeS10cnVuaworMzg5MjIgZmNkMmMzODQ3ODY5OWYyMzFjYzhlZmI2NDEzMjBmNWJiN2RhNjA4ZiBsZWdhY3ktdHJ1bmsKKzM4OTIzIDFjZGMwMzM0ZDg3N2M3MWFiZmYxMmZkNGQ2N2ZlOTk5ZjE0MGYyYWIgbGVnYWN5LXRydW5rCiszODkyNCAxN2FhMjg5NjJiODVkYWEzOTNiMWZjYmFiNzA3ZTM2MTkwNmM0OTkxIGxlZ2FjeS10cnVuaworMzg5MjUgMWNhN2FlNDhhOTMxNTFiNDVlZmM1ZWY2M2VjZGI0YTdhNzYzNjY4NSByZWxlYXNlMjQtbWFpbnQKKzM4OTI2IDUyZmVkMmQwNjQxYTViZDhlZmE0ZDc4YTUwNmQ3NjI4ZjEwMmI3OGYgcmVsZWFzZTI0LW1haW50CiszODkyNyA4ODgwZDkxY2RiMDkzODNhNGZmZjMyMDE3OTc3NDNhY2NhMjFiMDRlIGxlZ2FjeS10cnVuaworMzg5MjggNzhkMGE1NThiMDkzODM0ZTg2N2QzMDYyZjE1YzJlNGQwOTVlZWY3YyByZWxlYXNlMjQtbWFpbnQKKzM4OTI5IDY1Yzk1YWQ2NzJhZThmZDU3ZGUzNDQwMjdhNjZiZjVmNWY3NjNhMGQgbGVnYWN5LXRydW5rCiszODkzMCBkZTc2YjM0M2Q5YzgyYjJiNmE3MmU4ZTBiYmQ4Y2U2MmI1YzdlYjFlIHJlbGVhc2UyNC1tYWludAorMzg5MzEgNDRlM2YyMWYwNTI1OTBkZGZhYmMxMjkwOWFmNTE4OGE0Y2Q4OWQ4YyBsZWdhY3ktdHJ1bmsKKzM4OTMyIDFmYjc2OGViZDkwZTJiMmM2ZjVkNjViMTVhOTBkNGNhYmU0MGFmZGIgbGVnYWN5LXRydW5rCiszODkzMyA4ZTk2ODJmZDU3ZjhlYTY5MGNhNDcwMGU4YTM1ZGZjMTRlYWIyMjk2IGxlZ2FjeS10cnVuaworMzg5MzQgYjc0YTFhNTEyOTE3OGE2MWYzMjQ0ODU3YmYxYzM3NDA0YmUwMWEzMiByZWxlYXNlMjQtbWFpbnQKKzM4OTM1IGUzOTRmN2U4YTBjMTVmODcwNGIyN2NkNzEwODQ3Njc4NDU1NjQ3NTAgcmVsZWFzZTI0LW1haW50CiszODkzNiA0YTAyYTQzMTc2NTU1YmFjYTMwNDVkNTU1MmE2ZmM3MGFlYzIyOGQ0IGxlZ2FjeS10cnVuaworMzg5MzcgMjc1ODQzNjMwNTIyODZlMThjODc2MDMyYmZkMGYyZWViMTM5MzIyOSBsZWdhY3ktdHJ1bmsKKzM4OTM4IDkwZmNhMDgxNDVkMTE0OTdlNjVhMGY2NjE4NGJkNDI2MmY2MmJkZjMgYXN0LWJyYW5jaAorMzg5MzkgNjJlYWM4ZDk1M2NmMWEwZjA2MTk1NTkzODcwN2YxOGQ1NDhjNTVjNyBhc3QtYnJhbmNoCiszODk0MCBiYWM4OThkMzliNTM4ZjEyODJmNTViY2ExNzQ5ZDg4YjBiZjk0MzgxIGxlZ2FjeS10cnVuaworMzg5NDEgYjM4YzJhYTY2ZWU3YjNlNGE3NDlmZGUyMDQ1MWNmOTQ4ZTBiNDQwOSBsZWdhY3ktdHJ1bmsKKzM4OTQyIDc1ZmQ5YTUxNTRjNDYxZTFkODdkZWJlYjZkNzYxNjk0ZTUwM2Q5ZTkgbGVnYWN5LXRydW5rCiszODk0MyA0MGY3ZTFkYTFiZGZlNTUyZTU2Zjg3NDM1MDI1NjM2ZDlkMmQxMTMxIHJlbGVhc2UyNC1tYWludAorMzg5NDQgYmE0NzI3ZGEwN2U1NGViYTRmYThlMmYyNDhjZGE2MDA0NTA3ZWU3MiByZWxlYXNlMjQtbWFpbnQKKzM4OTQ1IGNiMmJlNDQyOWE0Y2ZkM2FjOGMxOTUyNGU2MTlkZDZkNGEzN2JjNmIgbGVnYWN5LXRydW5rCiszODk0NiBlYTVjMjI4MGY5MTU3NDIzN2YzZDQxYWExODhmZTAyYjViOTcwMjYzIGxlZ2FjeS10cnVuaworMzg5NDcgMGRmMDVlYWExZTA5NmVlY2JkMDIxMjdmMWU2NWI1OTM0NzM4NDEzZCBsZWdhY3ktdHJ1bmsKKzM4OTQ4IGFjNTZkMTdiYzNkMTcwY2IxYmY2ZWU5YTViMGYxZTg3MTk5ODRjNGUgcmVsZWFzZTI0LW1haW50CiszODk0OSBmY2YwMTBjMzcwY2JjZWI3N2MzNWZhYTQ4Yjc2MWY0MjUxMjhiMjA4IGxlZ2FjeS10cnVuaworMzg5NTAgNWExYTMxZDllMzdlM2MxMzlkZTk3YjliYWU0YWU4MThlNDcxNTZkMyBsZWdhY3ktdHJ1bmsKKzM4OTUxIDIxNWI3ODg1ZTEwODU0YzUxOTk3NzY2YzFlM2FjYWZiN2E3OTI0ZGQgbGVnYWN5LXRydW5rCiszODk1MiAzMjliMjhhODU5NDc0YTM1MDdmYTNmMjUxYmNhMjU2ZDk5ODBkODg5IGxlZ2FjeS10cnVuaworMzg5NTMgZTAzNzE0ODA0ODQ1YjkyOWU4Y2NlNWYwMDBhNjFkNGU1MjgyMTBiZSBsZWdhY3ktdHJ1bmsKKzM4OTU0IDhiZmViY2YwNjM2MzcwMTQ1MTFlMWU0YzBmNzljNzgwZjcwNzEwYTAgbGVnYWN5LXRydW5rCiszODk1NSBhNDliODhlNTAzMDU5OGY5NDMyMzQ5NWY0Y2VkZjFhNmE5ZmQ3MzA5IGxlZ2FjeS10cnVuaworMzg5NTYgYjczZjEzMGM3Yjg0MDU4ZTY3YTM1MjQ0ZTZiNDRmODBkYmFmNWQxYiBsZWdhY3ktdHJ1bmsKKzM4OTU3IGQ0ZGFhYmFiYWE0NWE1ZmRmNzQ1ZGYwZmRmZmM4MmI4NzE3MzU5OTkgbGVnYWN5LXRydW5rCiszODk1OCAyOWQzZGVmM2E1NmFiNWEyZGM0MGE4ODM1ZmU3MDNiNTUzMmVhNzhmIGxlZ2FjeS10cnVuaworMzg5NTkgZjNiMDIyMjJhODBhMjA0MzIyZWQ3NzgxZGE4ZjIxZjEyZjkyMDE1NSBsZWdhY3ktdHJ1bmsKKzM4OTYwIGM1NTg5OTg2M2I5Yzc5ZTljMDYyMjc5OTA0MWI5NzQxZjMyMTgyMzEgbGVnYWN5LXRydW5rCiszODk2MSAxOWE1MDkxZjI2NTgwNjQwNjUwNzhlMDU4Y2ZiMmRlNTRlZjFjZTM5IHJlbGVhc2UyNC1tYWludAorMzg5NjIgNTU1NDUxMWIzNzI1NDkxMWE2ODY0MTYyMWExNTNmMTQzODU4ZDFmZiBsZWdhY3ktdHJ1bmsKKzM4OTYzIDA4NzczNWY4NjcwMWMxOWQ0MzAxYWMwOTA3YzkyMDMwNjM3Njg1MzMgcmVsZWFzZTI0LW1haW50CiszODk2NCBkNjA0N2U1NWY3YWQzZDZjZTFmY2RjY2M5MmFhOTIxMTJmNzY1ZDg0IGxlZ2FjeS10cnVuaworMzg5NjUgM2I0MWJkODc4OTE4ZDAzMDk4ZjM0MWFhZTJkNzFmOTU4OTVlZmNhZiByZWxlYXNlMjQtbWFpbnQKKzM4OTY2IDE0OTBmODExZjkzYTk0YTU2MTEwOWU2NmIwZTA4MjZhZTNkNmZjYjUgbGVnYWN5LXRydW5rCiszODk2NyA3M2YyNGY1YzRlM2Y5MzI1OGYwYTNkZmYyZjAwMGFhOGQxZDA5NWNkIGxlZ2FjeS10cnVuaworMzg5NjggYzA1ZTQ1ZTg3MjRlMmZlNGEyYWQ0MDU2NzZlNTUzODMzY2M1NTU2MiByZWxlYXNlMjQtbWFpbnQKKzM4OTY5IDU1NTQ1ZTAyMzE5OWZjMDZhNTAxNmNmM2UyOTRiOTA3NjQ0NDUwZmIgbGVnYWN5LXRydW5rCiszODk3MCA1NjA4ODc0OTcyMWE4YWQ3YjdhODdlN2M5Y2UyOTczNWFhZmQ2M2M5IHJlbGVhc2UyNC1tYWludAorMzg5NzEgZDQzMGIyOTY0MWJhNDBiZTRmM2Y3ZDE3NmM3MTMxNWMyZjg4ZWEyMyBsZWdhY3ktdHJ1bmsKKzM4OTcyIDY2MjQ4OGQ0MTg3ZGI2ODhhMjUyNTBmZWE4YjczZTY4MDdmMWUyNzMgcmVsZWFzZTI0LW1haW50CiszODk3MyA4MjM3M2QyNTI1ZWUwYmRiYTQ5OTRkM2M1NTBmYjgwN2U4OWUzNDIzIGxlZ2FjeS10cnVuaworMzg5NzQgNWY3NjNmOWU1MGY5MzcwZGU4M2I4YjdiMmQ2ZDkyMTIwYjkyYzY4ZSBhc3QtYnJhbmNoCiszODk3NSBmMjMwMDdmOTIxN2IxMzVlMTBlYmM4ZTQwNzRkYjkxZDFkMTFiZjI2IGFzdC1icmFuY2gKKzM4OTc2IDhhZThlNjRjYTliZDRkODc1NGM5ZWZiOTkxNzQzZjc1OGI1MTgwOTMgbGVnYWN5LXRydW5rCiszODk3NyBlNzk3OTNhOGVlZWFiNWM5ODUyZjVjYzZjYzU4YWUwYjRkMmU0MTZiIGxlZ2FjeS10cnVuaworMzg5NzggNGZkYTQwNjNjYzhjYzJjN2NlNWZlOWQyNzNjYTAzMWU3MjFmNzI2ZiByZWxlYXNlMjQtbWFpbnQKKzM4OTc5IGVjNGMxNmZlNzM4NGNlZDU2NWE5YmNiY2VmOGJjZmFiNjYyZjcyN2IgbGVnYWN5LXRydW5rCiszODk4MCA1ZTQ1ZGNiZjdjZmZkMDRjM2UyZmY0MzFhYTQyNzUxY2I4Yjc0NzJiIGxlZ2FjeS10cnVuaworMzg5ODEgNzQ4YzhlMmQ0MGVlYzA1Y2Q1ZmUxOWFjMjg5ODc3MWY2NzI2ZWJjOCBsZWdhY3ktdHJ1bmsKKzM4OTgyIGNhNWVmN2VlM2Y0MTdhYzMxMWNjZjEwOTQ5YmY0NzFmYTg0ZmFhMzMgbGVnYWN5LXRydW5rCiszODk4MyBlZTk5ZGIwNmMwZWJjZmQ4NmFjNWRiOTNjNjYyYjRlM2IxMDE2M2QxIHJlbGVhc2UyNC1tYWludAorMzg5ODQgYzU1NTEwZGFlYmQyNTJkNDE3YjRhYTZiNjAwYTdmMDJmZDAyYzA5NCBsZWdhY3ktdHJ1bmsKKzM4OTg1IDgwNzY0MjRkNDU1ZDBlYjM3YjcxZTI0M2I0YTdhZmRjOWRjMWY4MGMgbGVnYWN5LXRydW5rCiszODk4NiAwNzhkYTQ3NGIzMDIxMzNhMzFjOWY4MmQ3Y2U5ZjNhOTA2ZmFkMmQ4IGxlZ2FjeS10cnVuaworMzg5ODcgMmViNTY5YjZjZTIzNGE4NmQ2OWJmZGRhNDBlMWQ5MTI0NmJiOGYzMSBsZWdhY3ktdHJ1bmsKKzM4OTg4IDkyNGUwMjgyYjU3ZTk4MzVlYzZhMTFmODdmZTQ4MGYxY2JiMWViMTcgbGVnYWN5LXRydW5rCiszODk4OSA5MmNkOTUxY2M0YjE4ZDhiMmEzYzg5Mzk0ZGE0YjhmM2ViMmUwN2UzIHJlbGVhc2UyNC1tYWludAorMzg5OTAgODUxNDU4ZmZmZDM0MjEwZjYyMGViMzgwZTExYzZhYTMzMzQ5NmEzYyBsZWdhY3ktdHJ1bmsKKzM4OTkxIDE3M2U5MGUwZDJlMzFkN2Q4YjQwNjY2MDA0NmM0NjYzNTc3ZWFmZDUgbGVnYWN5LXRydW5rCiszODk5MiBhYTFjNTM2NjYwN2Q2ZjVhOTRlOWQzMjdhZmRhYmQ0YTFjYmYyNWMwIGxlZ2FjeS10cnVuaworMzg5OTMgYTJiNTA0NWRmNGY4NTY4MGJmMGZkNmQwMDM4MzgwYmNlOGY4ZTU5NSByZWxlYXNlMjQtbWFpbnQKKzM4OTk0IDc0YTg0NThiMjI3NjAyZjliNGQ1NWY4ZDUwYWFjYTlhZmVkOWU5NTEgcmVsZWFzZTI0LW1haW50CiszODk5NSBhYmU1YTVlMzljY2M3ZGFkMjNmZGVhODljNzY3YmY5YmU0Nzk5NWU5IGxlZ2FjeS10cnVuaworMzg5OTYgOTFiOGNkYmZkN2I0NjU5NDAxZjlhZjE3NDhhZjQxNzZiZjZmNWJhOCByZWxlYXNlMjQtbWFpbnQKKzM4OTk3IDEzMzJmMmU3MDViMjE2ZWQxZjQ1ZWI5YjIzN2M2YTJiMDlhNzhjZTMgbGVnYWN5LXRydW5rCiszODk5OCA4MzVhYjA2OTg0YTljOGQ4ZjY1YTFjMTI3NDUzYWRlMWYzYzg0MTQ3IGxlZ2FjeS10cnVuaworMzg5OTkgNWZiMjE2MzIzMWQzMzVkNTljMTVhZjY0NWI3MWMwYWQ0ZTNiNmQwMSBsZWdhY3ktdHJ1bmsKKzM5MDAwIGRiMTY3NmZkYjViOTFjMDY0MDBjMzcyNGE4MmE2YzI0MzcwYmQ0NTMgbGVnYWN5LXRydW5rCiszOTAwMSBmODljYmU2OWRiNjNmYTI1YmFjOGFlYTY4NmRiMmFmNjczMzA3YzY5IHJlbGVhc2UyNC1tYWludAorMzkwMDIgNTFmZTI0MTM4NDg2ZTk1NGNjMjZiYjk0NTYzZTBiMzVlOWM4YzgzNyBsZWdhY3ktdHJ1bmsKKzM5MDAzIGM0MjVjZGM4YWU4YTdjYTg4NmMxYTg0ZDI0YTU1NTg4ZWE4YTI0Y2QgcmVsZWFzZTI0LW1haW50CiszOTAwNCA0ZjVkMjZmNWUzZTY0NTJmZDIxNTMzM2Y0NDlhZTk1NzNhOTAzZGFkIGxlZ2FjeS10cnVuaworMzkwMDUgNDY2NmI0NTc0YzljYjU4M2ZmYTY1MDNjMjM5M2E0OGE4MzVmZGRiNSBsZWdhY3ktdHJ1bmsKKzM5MDA2IDY5NjQ1ODI0MGE2NWVjNGMzN2Q4MDU2ZWM4MjgxOTNiODlhM2I5NjQgcmVsZWFzZTI0LW1haW50CiszOTAwNyAwYTlhNDEwYmY3NGNiYjAzOGI1NDZkNzllZGY4MmI4YzhjMzA5YTU3IGxlZ2FjeS10cnVuaworMzkwMDggMmI1MTg2YjU5NWIxYWRkZGRhN2YwNTIyZTkyYjA0NWFlODQxNTcwMiBsZWdhY3ktdHJ1bmsKKzM5MDA5IDI3YWE1ZWVjNTQwMDRkN2MzMjNlNjU3NjJkOTMzODU0YjlmOGY3MDUgbGVnYWN5LXRydW5rCiszOTAxMCBkMWJhYzIwYzBiOWY0ZTEyYmZjMTg4MGY0MjhlYjU1MDFlZjczMGFiIGxlZ2FjeS10cnVuaworMzkwMTEgYWJlOTY4NjMyNWMzOGJhMDgzNmIzMzc1ZTIyY2UwYzVhZTcxY2NiNSByZWxlYXNlMjQtbWFpbnQKKzM5MDEyIDIwMTVkMTZkMjY0NzA0NmI1MmZiZmYwNWU3NmM0ZjYyOGJhOTFmOTggbGVnYWN5LXRydW5rCiszOTAxMyBjNmI3ZmFkZjBhZGFlMjdmZWM1NTZhMGE0MzFmMjExYTZiYTQ1MmJhIGxlZ2FjeS10cnVuaworMzkwMTQgMTdjY2FjNjk1NDEzNDAwMGFjOTkzOWY0OGZkYjk0ZDdmMWVlNTNjMCBsZWdhY3ktdHJ1bmsKKzM5MDE1IDRhNWYxODFhYzMyNDA4YWQxZmVhZjZiYjk2YjM1ODY1NGM2ZTU4OTUgcmVsZWFzZTI0LW1haW50CiszOTAxNiBhNTM1ODcyOTVmMjA1OTY1OTYyMDNlZDFmOWJlZjgxMGViZWUwMTA2IGxlZ2FjeS10cnVuaworMzkwMTcgMzIzOGFlNmQyYjMwNDIzMzM5ZjM3MTM5NDgwYzZkMzFhM2ZiNmVkYyByZWxlYXNlMjQtbWFpbnQKKzM5MDE4IDQzODRlNTg3OTEyNjE0MTk5YzEzOTNkMmE3NDRkNzU5NzU1Y2M1OTIgbGVnYWN5LXRydW5rCiszOTAxOSA2OGJjZTY4YzhmOTMyNzhmZjViZGVkYzJjNWEwZmI5MDUxOGM2NDU2IHJlbGVhc2UyNC1tYWludAorMzkwMjAgYjJiZDA1YzAxYTM1MWNmODNiMmIxMWIxNzdmNDQwMTU1NTFhYzYzOCBsZWdhY3ktdHJ1bmsKKzM5MDIxIDk4MTc5YzgyODFjZGI2MTMyNjBhYzRkMmIzN2QxYjgyYzQ5ODY5ZDMgcmVsZWFzZTI0LW1haW50CiszOTAyMiA4MzQxY2VmZGVjYWNlOGMzMmFhZmU5OTJiMjE4ZDBmM2E0MTZlZDJmIGxlZ2FjeS10cnVuaworMzkwMjMgZjBhZTExOTRkYjY5ZWE1ZTVlMTdhM2Q4MWNkNjBhNWZjOGUyNzVmMSByZWxlYXNlMjQtbWFpbnQKKzM5MDI0IDg2MGQ3ZjkzZTZiNGM5YWVhNDViM2QyMGQwMWU5MDIxNGU2MDIwZWEgbGVnYWN5LXRydW5rCiszOTAyNSA1NmFjNDNkOWQ2MjU4YjFhNjA2YTU5MTBmOWY3YzY3ZTMzN2RlODQxIGxlZ2FjeS10cnVuaworMzkwMjYgMTcxNGMyNDk5MjhlZjhhMGQ1YTY2OTg1MGUzNzliOWZkMjA0YjBhNCBsZWdhY3ktdHJ1bmsKKzM5MDI3IDJkMDY5M2I5ZjBiZDhjNzk0ZDQ5ZmEzMDVkMGI0OTcyZWRjODc5OTIgbGVnYWN5LXRydW5rCiszOTAyOCBmNTU4OWZjM2Q5NzcxNDgzYjNkYWY4MjY5ZjdmMDI4ZDA1M2QwNDZlIGxlZ2FjeS10cnVuaworMzkwMjkgYWNmNjhmNjdiOTc1Yzc1MWFjYmJjNjBhYmQ1ZDljYWJiNTI0MzNhZCByZWxlYXNlMjQtbWFpbnQKKzM5MDMwIDIzNGIyMmEyYWNmM2I3OTYyZWFhMDQ3NGI3YzJlN2U1NzAwNTdjYjEgbGVnYWN5LXRydW5rCiszOTAzMSAyZTllNjQyYTU4Y2VkMWY4OWI0ZTRkODc4NGE4YTkyODAxN2I4OThiIGxlZ2FjeS10cnVuaworMzkwMzIgNGMyMzc2MjAxMTE1ZDVhYWI5MjQyMzBjOThkOGZkM2I3NDMzODk4YSBsZWdhY3ktdHJ1bmsKKzM5MDMzIDUyMmM5YTQ5MDQ0MTNjOTg5MzVlMWQyNzczMjNlMTViYjNmYjVmMDAgcmVsZWFzZTI0LW1haW50CiszOTAzNCAwOWE5MTBjYjZjOGZmMDNiODE1N2IyODk3OWRkMDdjNmRkOTIyMmQwIHJlbGVhc2UyNC1tYWludAorMzkwMzUgOTczYWE0ZWUxNjE1MmFkYTM3NjYyYWM2ZDBmNmJlNTI1ZWMzOTkwNyBsZWdhY3ktdHJ1bmsKKzM5MDM2IGI2ZDJhOWQxYTkzM2E3YzBmOGIzNTNmMzQyMTI3NDBjMzJjMzM5NDUgbGVnYWN5LXRydW5rCiszOTAzNyBmM2QzMTUxZjg0MTc5ZjFmZmI2ZWRmMWY1MjFlMDUxZjUwZjkwNDg1IHJlbGVhc2UyNC1tYWludAorMzkwMzggYWI4M2FiMjdjODM3YjY0MWMwYTM5YzRiMGUyMWI4ZTVjMzNlZGY4YSBsZWdhY3ktdHJ1bmsKKzM5MDM5IDU4NjMyMDkyZTAyMzI3MGM5YWYzNDFiZTQzYmI3NGMxMWJkYzY2ZTMgbGVnYWN5LXRydW5rCiszOTA0MCBhZGYxODllYjRmNThhOGU1OTczN2ZmZjA2ZTgyYzk0MTFmYzA2NTUwIGxlZ2FjeS10cnVuaworMzkwNDEgNTg1MDU5ZGUyYjQwNGFkZmM5YTliOWQyNjQ3ZjY2YmJhOGIyNzg0ZCBsZWdhY3ktdHJ1bmsKKzM5MDQyIGJmYzkxZDRhZjY0NTMyYTBlMWRhODU3MjY2ZjBmNTBlNjUxM2E1MGEgbGVnYWN5LXRydW5rCiszOTA0MyAyZmIwYzc2ZDAyNTFhMWE3MDI2NTg4MmZkODExMTU3NmY1ODNkOTk2IGxlZ2FjeS10cnVuaworMzkwNDQgN2VhMmJlMmMwZTFkZTBmN2FjOGJjZTg2MDBjYmQyYjE0NDcxZWNiNiBsZWdhY3ktdHJ1bmsKKzM5MDQ1IDJkODMzMTIzYjExOTA2MzhiODhjY2RmOTIwMmJkODk3Nzg1ZWQyOGYgbGVnYWN5LXRydW5rCiszOTA0NiAwNDg2ODk1OWYxZmU2ODMyY2M5OTQ5YTNjYmI1ZTNhMzM1N2E3YmZjIGxlZ2FjeS10cnVuaworMzkwNDcgZGE3NzIwMDdkMzRkODA1OWQ5NjIzYjI2MjRlOGJhNjAzYTdkOGY2MiByZWxlYXNlMjQtbWFpbnQKKzM5MDQ4IDBlYzcxMTUyYzdlMmJlMTAxZTE1OTJkYTdjNmY5MzFmOGE0MWIwMGUgbGVnYWN5LXRydW5rCiszOTA0OSAyZWU2M2ZmNDU5NzBmZGUzMzcwMjI4MDljYjkwNDhmZTUwMTlmYTU3IGxlZ2FjeS10cnVuaworMzkwNTAgNTM0ZjhlYTU3Mzc3ZWE4OTMxZDViMjk3YjZjN2NiNWU3NDlkMzA1OCBsZWdhY3ktdHJ1bmsKKzM5MDUxIGRiMmNmNzU5OTQ4YWYyNTEyYjVjMjAzYjBjNmZlNjRhNWQ5NGRiOWYgbGVnYWN5LXRydW5rCiszOTA1MiBjZGVjOTc4YjkxNmNlMjViNzE1MzBhZmYyMDVjOGQ4M2Y4YzY1OGIzIGxlZ2FjeS10cnVuaworMzkwNTMgNzA2ODEyNjdhNzRhOWE2Mzc2MTUzMTU1ZDc4N2I1OWNjZTVjMDg3OCBsZWdhY3ktdHJ1bmsKKzM5MDU0IDNlMGRkNjJlZTMxYmY3Y2Q4NjQ0NWZjZjM5OThmMzZjNjY4ZmUwYzYgbGVnYWN5LXRydW5rCiszOTA1NSAwMDg3YWYwOTUzZjRkYzVkYTllMjc1ZGViMjE1ZTM5YmRkMTJjNDI2IHJlbGVhc2UyNC1tYWludAorMzkwNTYgNWQzM2Q4M2U4ZGVjOGE5NGEwZDljYTM5ZTZmM2Q3MmU2OGExYjI0NSBsZWdhY3ktdHJ1bmsKKzM5MDU3IDZlOTM0NDJlMjZkZDAzZjQ5YjY1NWJjY2RjNjk2NTI3MWY0OGJhYjYgbGVnYWN5LXRydW5rCiszOTA1OCAwMTJhMGFkYTBkMDVmZTgyZjRhMzFhODI3MTU2ODVlYTY5OGNhOWRmIHJlbGVhc2UyNC1tYWludAorMzkwNTkgMmNiNjI4NjAwMDVmNjAwYTQwOWFkYmFmMDAwYzcxNTc0YzNmNjFjYyBsZWdhY3ktdHJ1bmsKKzM5MDYwIDg2ZTlmNjE2OTdkOGFmZGY0MTU3NTIxNGRlNGU3MmFjNWFhOTIyYTQgcmVsZWFzZTI0LW1haW50CiszOTA2MSA3N2RlMjFjY2QyMTBlNGEyZDI2OWIzZjJmNGE2OWUyNmRkYjg0ZDY2IGxlZ2FjeS10cnVuaworMzkwNjIgZGM2OGRlNzAzNzZiNDA3ZTlhZTcxMDQ3MTdiNmFlZGFiYjdjYWVmMiByZWxlYXNlMjQtbWFpbnQKKzM5MDYzIDM5YmI4YTQwYTJjODVlNWQ4YWUwYjI0ZGEwYzA4NzIyNTY5ODQwYjMgbGVnYWN5LXRydW5rCiszOTA2NCA4MjlmNjZkNTYxNDBjMjlmM2YwNGRkMmVjOWE4ODY0MzRkMzc0ZjA0IHJlbGVhc2UyNC1tYWludAorMzkwNjUgM2RkOGQ0MWVjMzUwMzAyMDgwNDAyYTZkY2E2OTg3ZjRlYWIzOTNkZCBsZWdhY3ktdHJ1bmsKKzM5MDY2IDMzYTRkN2U1YzgyZjJiY2JlNGQ1ZDQ1YmVjYzYyMGY1M2YzNjkyNzMgcmVsZWFzZTI0LW1haW50CiszOTA2NyBiYmI4NGI1ODU2ZmNlNGRlY2I1ZjJmZWNhZTY5MDU1MTM5ZWZjYjU4IGxlZ2FjeS10cnVuaworMzkwNjggZmIyZjVhYTRkNWFiMDFmNWY1NmRjZGI0OGY3ODM5NTQyNjg2MzRmNyByZWxlYXNlMjQtbWFpbnQKKzM5MDY5IDhkYmI3MzFiYWE2MGYwNjU0YWJjNGQ4OGE2MzFiNmUwYzRiODBhYWEgbGVnYWN5LXRydW5rCiszOTA3MCBkNjBhNTBhOTBmZDE1MGVlODIzNTNjNmZiYWJkN2YxZGFhN2UwMTBjIHJlbGVhc2UyNC1tYWludAorMzkwNzEgMzI1M2RiZDcyYjYwYWNkYWY4NjJjNTdhNzYwMjNiNmFjZDgxOTc4ZSBsZWdhY3ktdHJ1bmsKKzM5MDcyIGU1ZjYyZTA0OWM2ZmQ5MjEwYjQ4MGM0NDg4YjhhNTk0MDY3MDRiYTQgbGVnYWN5LXRydW5rCiszOTA3MyA5MTBiNWRiNDYyM2UzMWVhMDUwMWViZmUxYzM4MjEyNmQyMjc0MWY1IGxlZ2FjeS10cnVuaworMzkwNzQgOTkzMDk4MDJkNDkwNDhlZmNmZTY4OGRmNGQ4N2JmZGRiOGZlMmU0MSByZWxlYXNlMjQtbWFpbnQKKzM5MDc1IDI5ODVmYzYzMDlhODRhOWU2Y2IyZDlhMTNiNDkwM2YyYmYwOTkxNzcgbGVnYWN5LXRydW5rCiszOTA3NiBmODQwZjQ0NzAzMjUxOWQxMTU0NWNjYWZkNzhiZDRkYmY5NGM1MmMxIGxlZ2FjeS10cnVuaworMzkwNzcgYjg0MTM4ZDk4Y2ZhMDNmZDkwMTUwMzYxZThlM2FmMmM0Y2ZiNzg2OCBsZWdhY3ktdHJ1bmsKKzM5MDc4IDcyOGEwZGU4ODM5NWMyMzBmNjZhNDJhOTlmNTA0NGIzYjY5Mjk2MGUgcmVsZWFzZTI0LW1haW50CiszOTA3OSAwNmM3NjI3MjI4OTJiOGNjZDJiZjUwNTUyZDhiZTBkMDZiZWMyYmExIGxlZ2FjeS10cnVuaworMzkwODAgNGQxZGE2MzYxMmViNWM5ZGU4NzQ0ZjViN2Y4YzQyNmRiODA0Yzk0OSByZWxlYXNlMjQtbWFpbnQKKzM5MDgxIGEzMWE3NzBiYjc3ODU4NzRlNDQ3MTE4MzdhMGUzYTBiNWMwYzJhNTMgbGVnYWN5LXRydW5rCiszOTA4MiBmNTQ3M2E3NjJiNTAxNmI2MmFhNTNjODZmYjI0Y2I4MTE2OTczMDI0IHJlbGVhc2UyNC1tYWludAorMzkwODMgM2M2YWVkM2YzYTMxMDJiYmIxYzMyYmRmZTI3MzJjYWJjZDM5MzUyMSBsZWdhY3ktdHJ1bmsKKzM5MDg0IDgxY2EzNWFkOTE5OWU4ODE0ODJkMWFmOTk5ZWZiZjFmODM1ODQxZTMgbGVnYWN5LXRydW5rCiszOTA4NSBkYWViZmRlMGUxY2YxYzQzZThhY2I2MWQxYjI2ZmRiNDdkMmMzYWM3IHJlbGVhc2UyNC1tYWludAorMzkwODYgYzgyYjc0NmM0MjhmOGIzYmI0N2E4NWZjNGYwMjUyM2M3YjM1NTg3OCBsZWdhY3ktdHJ1bmsKKzM5MDg3IGY3YzA4OGE4YjVkM2M4MTlkMzkyOTc5MjczNzlmZDk4NDJiZjQ4MDEgcmVsZWFzZTI0LW1haW50CiszOTA4OCBiMzNhNzI2NDQ1NGYwNjAxOWViNzE5N2Q5YWJmZjMwM2Y3ZjUxMmMyIGxlZ2FjeS10cnVuaworMzkwODkgYzU3NDI4MmQ1MGJmZWU0MGMzYjRlZTE3MTc1NDQ0OWM5MDhkYmZmYyByZWxlYXNlMjQtbWFpbnQKKzM5MDkwIDk4Zjk2ZjA3ZDU0OTg4NTM4MTNhMDM5YTY0YWMwZDFhNmExOGFhZTggbGVnYWN5LXRydW5rCiszOTA5MSA5YTgxMmViOGEwYWIyODZlNmM2YjMzMGZkYTI0YzBiYjlmOTJkOWIwIHJlbGVhc2UyNC1tYWludAorMzkwOTIgNzM5MDMyYmU5NmQ1ZDkwNWZkMzhiMDE1ZjU0NzVmYmViYjJmODU0OCBsZWdhY3ktdHJ1bmsKKzM5MDkzIDZhZDNmODYwMzQ2ZTk5M2EyZTI3M2EzZGMyODk3NzEyY2E2OGUwYjkgcmVsZWFzZTI0LW1haW50CiszOTA5NCAwMjFhNGFiZjdmMjc0YjMyNDUzNjRjOWI3NDE4NDQ4MzAzZDM1Mzg3IGxlZ2FjeS10cnVuaworMzkwOTUgMWE3MGNiZjc1OWNhZTUyMDdhMmQyYTc5YzQxOTVlNGRiYWJmN2M1NCBsZWdhY3ktdHJ1bmsKKzM5MDk2IGQ1NzQyOGU4NThmYzBkMDRmY2YwM2ExNWM3OTE4YmIxMTlkMjIyN2EgcmVsZWFzZTI0LW1haW50CiszOTA5NyBlYWZhMTNiZWVmMjY0NmRjM2E1YTQ2MWEyZDkxZGNhOGE2MTAzYzBjIGxlZ2FjeS10cnVuaworMzkwOTggZDZhMThhMzNiZDYyNTZmNzIyM2ZhMzlkMzQ3MjhkMjdiNTQ3Mjg2MiBsZWdhY3ktdHJ1bmsKKzM5MDk5IDc5OTA0NTVlNmFlMGEwZDZkM2FhMTYwOTNiMzliOTVhYWIzYjcwZjMgcmVsZWFzZTI0LW1haW50CiszOTEwMCA5ZTQ5MjczYTEzMzQzOTZhMDdmMjNiOWY3ODcxZjUyZWIwZTA4ZjgwIGxlZ2FjeS10cnVuaworMzkxMDEgMTIyODdlZmE4Nzc3ZjcyMmE3YTUyMjFhZWFkNDc4YzJhYjhkMGVkMiByZWxlYXNlMjQtbWFpbnQKKzM5MTAyIDBmYzI5MDAyNjkzOWE2YzBkODMwN2Q5MTVkNGZjM2U1OTMxYjUzNDMgbGVnYWN5LXRydW5rCiszOTEwMyA4ZmM1ZDZiYzM1ZmZkZTIyM2RkOTg1YTE1Mzg5ODcwNjY5NDA4OWU4IGxlZ2FjeS10cnVuaworMzkxMDQgMjdhNzE4MjIxZTcyZTc4NGY0MWExNjE4NzZmZWNmMjk2MjE5ZWViMiBsZWdhY3ktdHJ1bmsKKzM5MTA1IGNmN2E4NDljZTYxZmE2MDVmOTQxZGFkYzQxMTAxNzFjNGE5YmQ0NmUgbGVnYWN5LXRydW5rCiszOTEwNiA2OTUyODNjYmU0M2ZjOTBjMzc4NTU0N2UyY2U5OWM5ZWM0MzkzNjZjIGxlZ2FjeS10cnVuaworMzkxMDcgMTZkZmUxNTJiOWU2ZGE1ZjQyM2RjMjBmYzU0MzcwN2U1ZGY3MDFkZiBsZWdhY3ktdHJ1bmsKKzM5MTA4IDMwYjEzNDAxYzkxMjU2NDA4ODM0NTg5NzFlOGQ0MzQyNDU1NjdmMzEgcmVsZWFzZTI0LW1haW50CiszOTEwOSA5ZTRiZjI5ZTZjMmZjZDNhOGFlNDdmNjJiNDlhZDQwYjc0ZTdkNTc3IGxlZ2FjeS10cnVuaworMzkxMTAgZDdjNWJkNTk2OThkMDY4OGYwOTAxODdhM2NjM2QzY2MzNDg2ODgxMyBsZWdhY3ktdHJ1bmsKKzM5MTExIGU2YjA3NWJkNzg1NWFmNTRhNTY1ZGMzMWE1OWM0MDdiODAzMTBmYmEgbGVnYWN5LXRydW5rCiszOTExMiBiMDVjYzEyYTIxNzlmMjk0MTczNjU0NDFiMGQ0ZGMxYTFmNmQ5M2YyIHJlbGVhc2UyNC1tYWludAorMzkxMTMgYTIwNDNhZmZkNTQzMzAyMTE0NWI5NzliY2NmNDg1Mzk5NTYzYjg0OSBsZWdhY3ktdHJ1bmsKKzM5MTE0IDVkOTc3ZDdjYzMzNTY5NzE0ZGYwNzM1MmFjMDVkNWJiMDAyNzAzZWYgcmVsZWFzZTI0LW1haW50CiszOTExNSAxODE4NGQ4MmRhZWFhMTlhYjQ4ODc1ODgxMDRjOGZmOTQ5MzBlZWU3IGxlZ2FjeS10cnVuaworMzkxMTYgOWQxZTQ2MTExZDlhNzA4MjVkYjRjMGI5NmNkYmI1N2U4N2ZhZjE5NiByZWxlYXNlMjQtbWFpbnQKKzM5MTE3IGY4ZjE1ZTZhZWYzYTRhYTkzODMwMWRkZjUzM2U1ZDgxN2YzYmY0MTkgbGVnYWN5LXRydW5rCiszOTExOCA4ZjdlNDdhMGFhY2FiNmM4MDUyOWEwZDg0N2M5YTRkMDg4MGVhMGM0IHJlbGVhc2UyNC1tYWludAorMzkxMTkgNjgyNjY4MDNjMDEzNGQ0Mzk4YjM5NTQwNGNmMDMyOGFhYTI2NDAzOSBsZWdhY3ktdHJ1bmsKKzM5MTIwIGQwN2U5YzM3YmVhMDllMWI4MGIwYzQ3NjNmNGFiNDQwMDMyMTE4NTcgcmVsZWFzZTI0LW1haW50CiszOTEyMSAyMTBjYTM4M2FiZTc2MjBkNzhmNDIyMzVkN2ZhNTkwN2NhYjVmZTFlIGxlZ2FjeS10cnVuaworMzkxMjIgNzgwNGJiYjI2NDkyOGVkYzA0ZjBkMjVjY2JhYjcxM2M2ODdiNjJhMSByZWxlYXNlMjQtbWFpbnQKKzM5MTIzIDQ3NDE4NTAyOTQyYTg1YWI2YTMxOTVlYmE4MGU2MTE0NjlhZWViMjIgbGVnYWN5LXRydW5rCiszOTEyNCAyZjljZmVjYTI3OTk2Y2RmZmEyYzcxZTI0NTEyMzlkNjNmYjE4MjgyIHJlbGVhc2UyNC1tYWludAorMzkxMjUgY2Q4NzljYTg0NjI0NDg2ZGMxZGE0ODU3MDNlZjQ2ZjM1YmM2ZmU3YiBsZWdhY3ktdHJ1bmsKKzM5MTI2IDcyNmM5YmM0OWMwNDhhYWYyMWZmOTAwOWI2YWI5OWJkM2VlMGQzYmIgbGVnYWN5LXRydW5rCiszOTEyNyA1ZGYxYzY5MmJiNDE2NjY0NGViYzBlZDkxNzc2ZmI3YmZlYmM5MjIxIGxlZ2FjeS10cnVuaworMzkxMjggZTAyMDg3YWM0NzkyNjgwMTk2ZjE5MjUxZjZhZDY4ZjcyZDc5YTBmMiBsZWdhY3ktdHJ1bmsKKzM5MTI5IDMzNDA1MzY0MzZmNWEwZTI4MjU1MDQxYThkNjNmZDdjZjlmMjQzMTMgcmVsZWFzZTI0LW1haW50CiszOTEzMCBjNTg4ODQxMzQxMmI5NGViY2ZjMDZlMWNlMjM4ZGI4OTc2NmRkNTU2IGxlZ2FjeS10cnVuaworMzkxMzEgZjk0ZDViZmFkMDc4ZjgxYmMyNTQ4NjUxNDM5NDM1NWEzYTVlYTI0MCByZWxlYXNlMjQtbWFpbnQKKzM5MTMyIGUyNjM2ZDEwOGQ3ZDA5YTY1ZDhlOTk2ZmFhZDAzMTMxZWNiZjliYTcgbGVnYWN5LXRydW5rCiszOTEzMyA4OTcxMDgwNWJjM2RlZmU4NjI0ZmVmMTJhYzVlZDI0ZTJjNDdhYjgyIGxlZ2FjeS10cnVuaworMzkxMzQgZDZjODc2MWQ3ZjMxNDc1ZTAxZDVkNzE1ZDYyOWVmZGM3YmRkYTllNiBsZWdhY3ktdHJ1bmsKKzM5MTM1IDY2NmMwZWQ0ZmI5ZDQ4MGVlY2NiMmNiZjFlODM1MzNhNGUzZGZhMTAgbGVnYWN5LXRydW5rCiszOTEzNiA4NTc4NzFjNzFjM2JiOTA3NmIwYjM5ZTM3ZGVlNjEwZWMzZGFkM2MwIGxlZ2FjeS10cnVuaworMzkxMzcgYzg1NzA3MGU5N2U4ZDFlM2E3NTQ0OTQ4YjhkZmI2N2Q4MWM5NDNlNCBsZWdhY3ktdHJ1bmsKKzM5MTM4IGIzY2I2NDI4OWQyYmUyNDc2ODBmYzJiMWFkM2ZlNjBhMThkZDg0ZTggYXN0LWJyYW5jaAorMzkxMzkgMjc2MGEyZDk5MjM4ZjEyMWMxOTQyZjA3NzFiMThmYjI3OTIzNTlhOSBhc3QtYnJhbmNoCiszOTE0MCA1YjIzYTVkY2M2YTNmZjJiNmY4OGU2ZWEwOWIyNGVkNjQyYmUzNzAyIGxlZ2FjeS10cnVuaworMzkxNDEgZmRjZGU1OWRmYTFiZDg5ZjI2ZmYxM2NiNWEzZDBkMTZhNmJiMzU2YyBsZWdhY3ktdHJ1bmsKKzM5MTQyIDczZTZjYjVmNDAzOWU2YzBkYTU5NWU4M2VkMjk5YTdmNTY3NWE2NDAgbGVnYWN5LXRydW5rCiszOTE0MyAzYjVmNTQ2NmYxMDVlYWFjMmM3YzM5NWJkNTEyNDZiMmI5YWVmMWI3IGxlZ2FjeS10cnVuaworMzkxNDQgNzM0OTI1YjQ2YmE3ZTQ3ZGY3YjhlYTg3YTVlNzZlYTJjNTkxODQ3YSByZWxlYXNlMjQtbWFpbnQKKzM5MTQ1IDkyNDEyMTg5OTJjMWUwNjcxNmIzZmY4MTFhYjQwZTNlMjE1YzFjN2QgcmVsZWFzZTI0LW1haW50CiszOTE0NiBiODYzOTJmNTViNTk3ZWY0MzM3NjAxN2M5ODBhMjFkNjQ0MGRhYTVlIGxlZ2FjeS10cnVuaworMzkxNDcgYjhjOTA3NmQxNzRlOTJjNTNkYTAxZTgyNjE0ODkxMTJiODRlMjYzMSBsZWdhY3ktdHJ1bmsKKzM5MTQ4IDU4ZDVhNmM3YjYyOTBmYzAwODhjZTE5Njg0Y2M3OTNjM2UxMDliMzcgcmVsZWFzZTI0LW1haW50CiszOTE0OSA0YmY5OWVmMDZkMzhkYjM2NjE3MGFhNGQwN2Y5YzE3OTVkMzk3NjZmIGxlZ2FjeS10cnVuaworMzkxNTAgMzFkOTU1YWIyMjMyZWM5ZWY2MWNhNjI3YjBmNzQ0OTFlZGVmYmZlOSBsZWdhY3ktdHJ1bmsKKzM5MTUxIDljMTg4ZmY2MzEzMTk3NmMyOGQ0ZmQ4Nzc1Y2I0MDM4OTIzNDQ1YzMgYXN0LWJyYW5jaAorMzkxNTIgODEyN2E1NWE1N2NiN2JkNzgwYTU0ZDE0MTE0ZDE4NzdiYzNiNjQ3ZSBhc3QtYnJhbmNoCiszOTE1MyA5ZWNmMDNkZmQ1ZDYxNzdiMjNkNjBmZTJjN2QwNWE3ZGFkNjVmYzBjIGFzdC1icmFuY2gKKzM5MTU0IGQyNTY1NmFiM2UxZDAzYWU4MGJjMzU5YTYzMTNiMGQ1NzAzNGFkZjggYXN0LWJyYW5jaAorMzkxNTUgYWEyZjJmYWVmN2QyOTFkYTdkYzA0NzZmNmJjZTdlOGRhYjJjYzMzZSBhc3QtYnJhbmNoCiszOTE1NiA4ZDBkMzk1YzIxMWVkNzk2YTkyYWExZTAzZDk0NTg3YzNjM2JkMGQ3IHJlbGVhc2UyNC1tYWludAorMzkxNTcgZTA1OTg5ODNmMGE1ZjYyMzk3ODcwOWE4NmJhMjE2MjUyNWUwNzg0OCBsZWdhY3ktdHJ1bmsKKzM5MTU4IGUxZjdmY2E3ODRmM2E2ZmEzNDUyMjdjYzIxOTY1NmMxYjY0ODI2NDMgcmVsZWFzZTI0LW1haW50CiszOTE1OSBkZGQ3OGVhMzUxOWM1MWFjYmFhYjg0NzNhYjU4ZTQxNzM5N2QyNDNhIGxlZ2FjeS10cnVuaworMzkxNjAgOTU1ZDRiYWRkYmZjODY1OWEyODdkNmUxODcxOGM4NjdmYmNiNDkyZCBsZWdhY3ktdHJ1bmsKKzM5MTYxIDIxNGM5NmU1NDkwNTBiYWMzYWE5YTBiZjY4YTZlZGYzMjQ4N2FjNDcgcmVsZWFzZTI0LW1haW50CiszOTE2MiBiNjcwMGIzZGU2OTU1ZDUxZDJiNjA5ZDRlZjM0MWZmYTYxM2UwMjAxIGxlZ2FjeS10cnVuaworMzkxNjMgZGI3NjgzMTI5OWQwMDA4NWY5ZGFkNzI0ZDMyMmMxMWJhNzQwYjMxNSByZWxlYXNlMjQtbWFpbnQKKzM5MTY0IDM1NTkyYmFkMzQ1YmRlZDdhNDljOTlhYTk1MzAwOGMwNTdiYWNiYjkgbGVnYWN5LXRydW5rCiszOTE2NSA3NjNlODViMTA3YjQwZGJiYTk1NjUxY2M1ZGE0MjBlNjRlODM4NTE4IGxlZ2FjeS10cnVuaworMzkxNjYgNTdhNGQyNzQ2NjMyMzg0NmQ5NzNhNWZhMGE4MDc2Y2NlZmQwODFmMiByZWxlYXNlMjQtbWFpbnQKKzM5MTY3IDg0N2U1OGRkYjdkOWVlNmY4ZDhjNzJiZWIyZWQ1MTFjMGE3ZmJlMWIgbGVnYWN5LXRydW5rCiszOTE2OCBhY2U3ZDgzNjA4M2ZlNzQxMDE3M2U2M2NlMDhiZjQ2MDFhYjVmMDA2IGxlZ2FjeS10cnVuaworMzkxNjkgZjljNWFlNjljMTZlZTJiNWExZDI4ZGQwM2I2NzIwMWJkZmVhMWViMiBsZWdhY3ktdHJ1bmsKKzM5MTcwIGQwYzY5NjViNTI1ZWNiYWVlODdiMGViM2UxNmI3Zjc1N2Q0OTdmOTIgbGVnYWN5LXRydW5rCiszOTE3MSBjMDg4ZWNhOTBhNjM1MDkyMTRhY2M0OTgyYzg2YTllMmZiMTIxMzI5IGxlZ2FjeS10cnVuaworMzkxNzIgNTI2ZmFhYWIwMGViOTUxOWRmZTdmMGQ5Zjk4ZWNlY2JjNGViYmNjMiBsZWdhY3ktdHJ1bmsKKzM5MTczIDFmZGJjYTM1MTQ5ODlkODE3ZDJmZDQ5MmQwZDRhMjNjZjJiYzVkNDggYXN0LWJyYW5jaAorMzkxNzQgYTBjMzFiNzBiZDE4MGY3OGY2ODM4NWEyZWU3MTYxNWNhZDJmZjYzZCBhc3QtYnJhbmNoCiszOTE3NSAwOWU4OGZkN2Q1NWE2OGExZjEwZGE0YWU3NTVjNDA3YjljZTkzNzhhIGxlZ2FjeS10cnVuaworMzkxNzYgYjczNWViNDI2N2U4Zjk0Y2FkOTAxMGQxMzNmNzI2YzQ0MTI4YmM0YSByZWxlYXNlMjQtbWFpbnQKKzM5MTc3IDdiNjQzNmQyMzQ0ZDFmNDVmYjZjZjNmY2U3MDg4YmYxOWIxNzM1Y2EgbGVnYWN5LXRydW5rCiszOTE3OCA3NGMzNzE3NjYxMjFjODE2M2UwNTk2NGFjZjE5NmJjMGFhZWU2NDFiIHJlbGVhc2UyNC1tYWludAorMzkxNzkgY2Q1OTVhNjlkY2E1Y2EyZDk0ODY2YTIxODA1Yjk2YzEwYmI1N2FmZiBsZWdhY3ktdHJ1bmsKKzM5MTgwIDkxOWYyZDEzMTk4MmI4YjE1ZGU5ZjA0NTIyODVhNDFlYzE0NzYzYTAgcmVsZWFzZTI0LW1haW50CiszOTE4MSA1NTgxNjNjYjcwYTk2ODJmMzczOTdlZmJkMGVjMjA4YTYxYWEyNGZjIHJlbGVhc2UyNC1tYWludAorMzkxODIgNjJmODE5NDgzMjkzOWJlMTRmMmJlZGE3YWI0ZDdmMjJiZTM0YmE2ZiBsZWdhY3ktdHJ1bmsKKzM5MTgzIDE5NDk3MjJmMzc4NzRkMjM2NzkxZTU0NDIwZTlhZTA2NzZmMmM1YmIgbGVnYWN5LXRydW5rCiszOTE4NCA4NzU2OTczYTZiOTkxMjRjOWNkMDk1ZWJiMTcyYzI2ZDEyZmY2MDMxIHJlbGVhc2UyNC1tYWludAorMzkxODUgYzZiNjljNmQwMWEzNzdkNGM5MzU1YzYxMmNlNjIyNGNmYmU4MzRlOCByZWxlYXNlMjQtbWFpbnQKKzM5MTg2IDk1YTlmZjQ3YjExZDAzOTkyOTc5OTM5MTU4NmYyZmU2M2VmMmUxYmIgbGVnYWN5LXRydW5rCiszOTE4NyBhNDk4ZGNhYWU5ZDc4MjY5YjQ0NTBhZTg4YTVlOWRlMmE5NjliY2VkIGxlZ2FjeS10cnVuaworMzkxODggMDI3ZTAwMGQxZjZkZjBlMDQxMTNmYWEyY2NjNDRjMWM5MTUyNzk4YSByZWxlYXNlMjQtbWFpbnQKKzM5MTg5IDMyZGU3YThkODg2Y2NkZjRjNTllYWZjNWUyZDE3ZTY1NzNlMzM1NGYgbGVnYWN5LXRydW5rCiszOTE5MCAwN2IwMWIzMzQwZjljMjU0MjZiOWMyMGI0MjcwYjgzZjliZjZlNzU3IGFzdC1icmFuY2gKKzM5MTkxIDNhNmVlZjMxZTk1YWUyNTUwN2ZjMzAzMTIzMTJmNDNhMTM1YTg1NDYgYXN0LWJyYW5jaAorMzkxOTIgZDYxZWZjZDg3YzhlMzgzNmNjNjUxZjI4YTMzZDE3NjVlNjRkNjdkZiBsZWdhY3ktdHJ1bmsKKzM5MTkzIGQ0NzZlNThjYzdlNzQ1YzljMGJhNDYzOTAzNjRmMzkzNTM1OTY3ZGUgcmVsZWFzZTI0LW1haW50CiszOTE5NCA5MmIzN2M3MWY5MzVlYWJjNDYxYzA3MGYyYjgwMmY5NDhjNDM5OWQxIGxlZ2FjeS10cnVuaworMzkxOTUgNzRmODIwMmQ4MzE1MDEzN2M4YzM5ZWUxMTBhZDkxYWU5NTQ0ZDNmMiByZWxlYXNlMjQtbWFpbnQKKzM5MTk2IGM1MmNkMWZkOTRmYzU0YmI4NGVkMjU2ZGQyZGJlMzJmYzJiOGFmNWIgbGVnYWN5LXRydW5rCiszOTE5NyAzZjg2ZjhjYmEwNWVkNTY4OTAyODcxYTE3NzZkM2RlMTZhZTc0YTk0IHJlbGVhc2UyNC1tYWludAorMzkxOTggN2UxYzFkNmRlYTFjMzE2OWEzYjBlMWE4NGFkMzU5NjQ4MGRjYTFjMSBsZWdhY3ktdHJ1bmsKKzM5MTk5IDk2OGQ5NDIyYWY3ODdmZTZmZjFhN2YzMzAxNDY4OTVmODNiNjZjMTQgcmVsZWFzZTI0LW1haW50CiszOTIwMCA3MjhmODJiZWJjM2ViZDY2M2YyMzcyMThkNWZkNzJkMzlhNTU0N2YzIGxlZ2FjeS10cnVuaworMzkyMDEgODc5Yzg3NmJjNTdhMzg5ODM2M2Y1YTcxYmY4ZDA3MTYzMTZjNWZlYiByZWxlYXNlMjQtbWFpbnQKKzM5MjAyIGI0MzFlZDdiY2RjMjI1MGFmMTZkOTAzNDUwNjhmZDg2NGIxYjEzYzQgbGVnYWN5LXRydW5rCiszOTIwMyA4NjBlMGZkMmZlZThlZjY5Yjk0YWNhMWYwNzI2ZGY3MDUyYWY5OGVjIHJlbGVhc2UyNC1tYWludAorMzkyMDQgYWVlYzM5ZmVkOGM1YzE2Zjc2NWFjMzk0MjVkMWYyMWY2ODcyMTFmYSBsZWdhY3ktdHJ1bmsKKzM5MjA1IGZhYWQwOTZkZWNmNmFiNGQxZTRmYWViMTBlMzg3ODQ2OWIxNzgzYTEgbGVnYWN5LXRydW5rCiszOTIwNiA5ZjQzNjU1MTIzMjYwMjQxZTAyNjVhMzU2NmU3ZDZlYmY0YWI0MDM3IHJlbGVhc2UyNC1tYWludAorMzkyMDcgMmIxMTdlYjE4OTQ0ZDIyNDQ5Y2NiYzA5YjYyN2Y5MzRkNzRkNjI5OCBsZWdhY3ktdHJ1bmsKKzM5MjA4IGU3ODk3MDNmZTRiZWU0YWEyMjU2ODcyZjhhZDdiYjdlZmY4NTkyY2IgcmVsZWFzZTI0LW1haW50CiszOTIwOSBhOTE3ZTJjNDc2ZjY2MTg4MTJkYzU5MzNkMTdhZDQyOTY3MjQ1NDU1IHJlbGVhc2UyNC1tYWludAorMzkyMTAgMWFjMmMzYTFjM2FjM2QzOWQ0ZDdkZGNmMGVjMDE1NjYwYjg4YTc3NSBsZWdhY3ktdHJ1bmsKKzM5MjExIDlkODM4ZGQ5NjdiMmIyMmFmZjFmMzMxNzlmNGQ1NWRkYmU3ZTg0ZDQgcmVsZWFzZTI0LW1haW50CiszOTIxMiBiZTZhYjNkODZjMjkyNWFkOGVkMDdlNmJkMTA4NjJhZDE2YjgzOWMwIHJlbGVhc2UyNC1tYWludAorMzkyMTMgNTNhYjUxNjNjMWFhYTE5NTNlYmIxYWQxZDFlN2QxMWJmN2FkMDY2OCByZWxlYXNlMjQtbWFpbnQKKzM5MjE0IDRhZGJkMzMxZDMzNTJlYjVmYWZkNzJmY2I1ODllNTEyZjRiMzVkYjIgbGVnYWN5LXRydW5rCiszOTIxNSA2ZWJjNDIzZjJkODFjZTkwYTQ0ODkwZTZmYmY1YTI4ZGRjYTUxNWY2IGxlZ2FjeS10cnVuaworMzkyMTYgOTcwN2JhMjc4ODk0MWEwM2UzZDY5MmJmNGIzYjU4NjAyNmE4NDYyYSByZWxlYXNlMjQtbWFpbnQKKzM5MjE3IDUyYWNiYjg1ODRlYWViNDYxYTc5NjlhMGU4MGM3ZjhhODIzODk5NGMgbGVnYWN5LXRydW5rCiszOTIxOCBjYTY2YTE2YzM3OWRjMjEwNzM5YzEwMmQ1YzA1NzcxYjEwZWRkNmYxIHJlbGVhc2UyNC1tYWludAorMzkyMTkgNDJjZmU0NjAzYzMwYzAwMTcyOTM1YzZmOTljOGM5YzU5YTEzN2NhMCBsZWdhY3ktdHJ1bmsKKzM5MjIwIGVkZjI1YzFhNGY2MDhjNGRiMzg5NTVlOTdlNjJlZTI0MmRmODk5NzYgcmVsZWFzZTI0LW1haW50CiszOTIyMSBmOGU2MGEzZjM0NDA5ZTlmODFmYmFjYzUyNzZmNTY3OTBmNTVmY2E3IGxlZ2FjeS10cnVuaworMzkyMjIgYzhiZDNiNTIzMGM0MjVjYTQ4NWJkODQ2NWZjOTdiOWU0ZWEzMGE0ZSBsZWdhY3ktdHJ1bmsKKzM5MjIzIGI0ZTU3MDMzN2JmNDc3ZTIzNmQ3ZDNmNmNhMjVjOTAzOTUyNTljNTIgYXN0LWJyYW5jaAorMzkyMjQgMzE0NDdhZGIxYjM1ZWMwYmEwOTM0ODI5YWNkYTliY2MwNDM1MzNmNiBhc3QtYnJhbmNoCiszOTIyNSAxNzc0ZmU3ZWMwYzdjNzBkODUwOWFjMzY1YjhiNTQ5MDc4OWFmMTJhIGxlZ2FjeS10cnVuaworMzkyMjYgODVhMzVmODcwMWIzYmI2OWExNTdjZDBlMjUxZjQ2ZjMxZGQxZWZhMCBhc3QtYnJhbmNoCiszOTIyNyAyOThkM2ZhNGVjMzlkZDE4MDJlZjc5YzNhMzdiOTQyYzMwOTFkZTM0IGxlZ2FjeS10cnVuaworMzkyMjggMmZlZWRmODUwNzg5ZDA3NTNlMmYxZGQ0MGFiOTJiNWI2NDFlYmJhYSBsZWdhY3ktdHJ1bmsKKzM5MjI5IDYzNmU1ZjFkYTczM2Q3Yjc0N2JkYTljNzczZDQ2NzU0ZTE3Mzc1ZTIgbGVnYWN5LXRydW5rCiszOTIzMCA3YTUwYmQ4MmRmMjVmMmJlOWUzZmFhYTgyMjJlN2Q3NzViNWZmY2Y1IGxlZ2FjeS10cnVuaworMzkyMzEgMzQ5YTBmZDU5OGUwNzlkMjE3Y2VkZTlkMmI4MjYzOGJkYTY2NWQwYiByZWxlYXNlMjQtbWFpbnQKKzM5MjMyIGM2YzI0ZmYxZTNkYTU5MjhhYzFmODBjMjI4ODUxMjcyYTQ4NDAxNDggbGVnYWN5LXRydW5rCiszOTIzMyAzNWE2OTgzMDJjNjNjNWIxZjA2ODU5YTc4YWQ4NzFjOTgzOGM0YjE2IGxlZ2FjeS10cnVuaworMzkyMzQgOGZmZmI0Yzk1NDg3ZWUyMzczMDg3YjcyMzY4Zjk5MGQxYjljMzQzZSBsZWdhY3ktdHJ1bmsKKzM5MjM1IDNmMWI0OGY5ZmYwZGE5ZjM0N2NkMDExNTQ2MThhYzRlOGM5NTIyNDIgbGVnYWN5LXRydW5rCiszOTIzNiBmMzBlYmRjM2JkZGY3OWIxZmNiYjYzN2Y3ZjIxYzg4Y2VjYTAxYjFkIGxlZ2FjeS10cnVuaworMzkyMzcgZDkxOTY0ZjVmZTBkNmJjYjBkMmFlNDAwMjRlMjc0ZDBlM2EyYTcxYyBsZWdhY3ktdHJ1bmsKKzM5MjM4IDI2YmY2YzI3ZTljZWE1ZWY1MzdlODZlZWRhZmIxYzU5NjFkZTA1MDEgbGVnYWN5LXRydW5rCiszOTIzOSBiMmZlNWY4ZmNmZGRjODRiMWEwMzRjNDI0NWI3ODQyYzMyM2E3ZjczIGxlZ2FjeS10cnVuaworMzkyNDAgNWE5MTM0ZmU1NzA5MDYwYTIzYWEyN2JlNmEyOTU4ZTVlZTc5YmE5MyBsZWdhY3ktdHJ1bmsKKzM5MjQxIDA5OTEyOGZmYWJlNjMxOWEwMDdmZmQ0MjIyMzdiMjE0MDZjNmRiODMgbGVnYWN5LXRydW5rCiszOTI0MiAzMDg2NjIwZGI0NmI5N2ZjMmQwODIwMTdlN2JmY2NmNzg3MjQ0OWM2IGxlZ2FjeS10cnVuaworMzkyNDMgYjQ4ZjBiMmUwZGY2MDk1ZGY1OWNmOGQ4OTAzYmE1YmZiNmU5ZGVhOSBsZWdhY3ktdHJ1bmsKKzM5MjQ0IGIzNjNhMjhlZDI0ZjliMTAzYzU0Zjk0YTA5MDc0MDhlZWE2ZDU1N2UgcmVsZWFzZTI0LW1haW50CiszOTI0NSBhYmRlMjE3YzVkOTBkMWE2NTFlNjU0YmFjYzg5ZGVjZTk2YmI2YjRiIGxlZ2FjeS10cnVuaworMzkyNDYgMzc2MDAyMzNkYjc2ODgxYzhmODk5NzRlZGZiYThjZjg0Y2Y1MDM4NSBsZWdhY3ktdHJ1bmsKKzM5MjQ3IDQ1NWMzYjc2NWRjM2E4ZjFiOTFjOGIxOThlMWNiNTdlZjMxN2MyNzAgbGVnYWN5LXRydW5rCiszOTI0OCAyNTkwZmEwZWM3ZTg4MWIyMzA4Y2EwZTE5MzRjNWFjNDRjMmRlOTRjIHJlbGVhc2UyNC1tYWludAorMzkyNDkgZDUzM2YwOGE5ZGZhYWM3M2Y3ZjNkYWZlNjEzMDAzZGZjMmVhMzVmNiBsZWdhY3ktdHJ1bmsKKzM5MjUwIDVmZTljZWVjYTExMTg4MTRjNDRmNGE2NmRlMWViYjExODZmOTVkNjAgbGVnYWN5LXRydW5rCiszOTI1MSBmMzk5NmFhNzhjZGVhNWI1OTZmMjlkYTE2MTY5MzYwYjY1NTA3MWQ3IGxlZ2FjeS10cnVuaworMzkyNTIgNTQxYmZiYjEwMDMwYmZmYWFjY2NmMjYwNGM5NTE3NjYyOWE5ZTFmMyBsZWdhY3ktdHJ1bmsKKzM5MjUzIDhhYTliZDgwMjg2YjIyMDFlNzVmMWEzNzMyNDEzZGMxN2Y0YjM0NzMgbGVnYWN5LXRydW5rCiszOTI1NCBhNjg5YTIwZjU4Zjc2M2FkYTAzMmRjN2M5ZGFjZmQzMjVlZjlmNmNlIGxlZ2FjeS10cnVuaworMzkyNTUgMWQ4NjExZDg1NTVjNWNhZmUwMGM4ZGVmYTA2ZmMzMThhOTFjNjFlZiByZWxlYXNlMjQtbWFpbnQKKzM5MjU2IGE2Y2JmY2QwZTY5MWJhMGIxYzVhNTdjOWU0ZTBjYjk5Zjk4ZDZlNjkgbGVnYWN5LXRydW5rCiszOTI1NyBjZTA5OTVlMDFkM2M3NDU3NDNjZWE3NmViYTQ5YmFhNDZlOWM0NTBlIGxlZ2FjeS10cnVuaworMzkyNTggZmQwMDQ2MTg2MWM5MDcwNjQ1ZTI2YjY5ZmY5ZjkwMmExODc2Y2YwMiBsZWdhY3ktdHJ1bmsKKzM5MjU5IDI2MTJlOTZiMTdiYmM1YmNhYWM3MmFlYTEwZjFkZjIxZTYwNTMyYjQgbGVnYWN5LXRydW5rCiszOTI2MCBiZDlhZjI2MGU5Mjc5NDJhZjVlMGQ5ODAyMzI3M2EzMWU4YjM2NzFmIGxlZ2FjeS10cnVuaworMzkyNjEgZmE5NWZlOTFjZGY3NjBiZTNkYjEyMDQyYzdhNzlkYzVmMTI3MTgyNSBsZWdhY3ktdHJ1bmsKKzM5MjYyIGJkY2IwMWE5YjYwYzU3OWY3MTZhYjA0Yjg4NDQ2M2I3NDhhZDA3ZjMgbGVnYWN5LXRydW5rCiszOTI2MyBiOTJhODVjM2JkYzgxNmFhZjkyNzdjZTRkZDlmMmRlM2IyODViNThhIHJlbGVhc2UyNC1tYWludAorMzkyNjQgM2ZhNThlNWJkZGZiMjlhNWMwNDBmMjJkMDU4NjQyM2QxZTEyMDU1ZSBsZWdhY3ktdHJ1bmsKKzM5MjY1IDE3ZTA0NDRkZDEyZGFlZmUxY2RlY2Q4MThlZGE2OWY0MjBiM2E5OTIgcmVsZWFzZTI0LW1haW50CiszOTI2NiBhYzljMGVlMTk5ZmM5NmVlYTFlNGJjM2IzMjIwOGUwODM0ZjFlMDBiIGxlZ2FjeS10cnVuaworMzkyNjcgMzA5NDg0M2U3YjkyY2IxMDNhZTBmYmUxYjNiNDY0OGRiZWYyZmM0NiBsZWdhY3ktdHJ1bmsKKzM5MjY4IDZhYTczYTFmMGNiYTg0NTQwM2M3ZjgxNjY5ZjQ0NGQzMjk2ZDVjNDMgbGVnYWN5LXRydW5rCiszOTI2OSAwZWY2NGE5M2YzZjI1ZTBkNjM4MWU4MzM4MzAwOGI3Y2I2OWZjYzRhIGxlZ2FjeS10cnVuaworMzkyNzAgMzAwZjNhYWY4NTNmYjg4OGE0ZGZjNDNlZmRjNjI5ZDFiNjgxMmYwNyBsZWdhY3ktdHJ1bmsKKzM5MjcxIDA0NGE1Y2EyY2RiODJjZGY2N2ZlN2E1NmMzNDZmZGQ4YjE4MzViODAgcmVsZWFzZTI0LW1haW50CiszOTI3MiBlZjExY2JjMDhkYWJhMGZkYTQ5MGMxOTY3Mzg5ZThkZDU1Y2QzYjkzIGxlZ2FjeS10cnVuaworMzkyNzMgZmQwMmI4NGZiMmRiMjI5YmU4ZDc4YmNlMmQ5Y2RkODZjNjQxYTBmMiBsZWdhY3ktdHJ1bmsKKzM5Mjc0IGRjOGFlNDk5ZWZjZjM5Mzg2OTcxNDhhNmY0ODMzMjVmMTExN2RlMWQgcmVsZWFzZTI0LW1haW50CiszOTI3NSA3MjU2NzFkYjc3OWE2ODE4MmJkMjZjMDdjMGY4ODZlZDc1Yjc2OGIyIGxlZ2FjeS10cnVuaworMzkyNzYgOWIyMjI3YTYwZGFlY2RmNTkyZDhkMWVmYjRkMDcyMWM2ODM1MTZiMyBsZWdhY3ktdHJ1bmsKKzM5Mjc3IDUwM2MzNjk3NTc4ZjhjOWU0MGQyZGUyODRhODljMDNiYmZlYzYyMDkgcmVsZWFzZTI0LW1haW50CiszOTI3OCBkZWY0MzRlMmE4MWFmYmRjNGIwMDQyZDRjZDc5OWQ4NDM5NTA3OWJlIGxlZ2FjeS10cnVuaworMzkyNzkgZDY1NzVjZDFhYjY3ZmM2NjMyYjBlMjU1ZDY0NDlmOTI1MGUwOTRlNCBsZWdhY3ktdHJ1bmsKKzM5MjgwIDAyOGU5NGE2ZWZjNTZhOTg3N2JiN2Y4MDAxNzk1Mzg2NzBjMzM0Y2QgbGVnYWN5LXRydW5rCiszOTI4MSBiOGM1ZDIyMjJlZDc1ODNiZGUxMDc1MzI4YTEyM2IxZWQ0N2YxZmE1IHJlbGVhc2UyNC1tYWludAorMzkyODIgZjZiNDYyZDJhM2EzNmM1MzYzNjc0M2ViY2IxY2JkMDU4ODA0ZTdmMiBsZWdhY3ktdHJ1bmsKKzM5MjgzIDNjM2E0NWE5NjU3NzIxZjBjYTEwNjYzNTRjZjE5NjU5ODZlYzUyMzUgbGVnYWN5LXRydW5rCiszOTI4NCBkZDQzNTdhNWRhN2NiN2Q3MDQ3OTdiYjlmYjMzYTVmNjdhMjNmNWNkIHJlbGVhc2UyNC1tYWludAorMzkyODUgYzU0OTlmMjU2Nzg2YjI4MjFmODJmMTczMWUzYWJkNDVjYjQ5N2Y5YSByZWxlYXNlMjQtbWFpbnQKKzM5Mjg2IDcwMGYwODM2OTA5Mjc4NTgyMGM4ZTM2ZDhkMjNlNWE0YzM3MjViMTAgbGVnYWN5LXRydW5rCiszOTI4NyBkZDIzNTc5NTNmZTM4NzE0ODRkODhiMGNmNDc0Yzg2ZTg0MDBlOThkIGxlZ2FjeS10cnVuaworMzkyODggMzk4MjVjYTM0NjQ3M2VkNTY4MDU0Njk0NWQxOGI3MWNiZjE5YmRhOSBsZWdhY3ktdHJ1bmsKKzM5Mjg5IDJmMWJmNjRiODM3ZWY1ZjQ5ZTFjZjQ2ZTM1ZTdkMmYyNDMxZGM1YjEgbGVnYWN5LXRydW5rCiszOTI5MCA2ZjFjZDI4ZDZiODc1MDEyZDAzNDBlNTA2MzJhZGZhMzNiYWRhZDAwIGxlZ2FjeS10cnVuaworMzkyOTEgNzI5YmU4Y2MwMDk4YmY1ZTE3ZWE2M2YxYzNiNWYzMmMwMmM5ZTczNCBsZWdhY3ktdHJ1bmsKKzM5MjkyIGMxZDIyZDRjMDg2NTUyODBjZTM3ZTNiNTFhNzA0MjY3ZGNhZDNkYWUgbGVnYWN5LXRydW5rCiszOTI5MyBjZDhkOGU2MzRhYjgwNmUwMTBlNmI3Njk2YWQwYTgxNDQ2YjAxMmFmIGxlZ2FjeS10cnVuaworMzkyOTQgZTg4MDYwOTRkNjQ0OGRmZjBkZTFmOGJkNmRmMTllMDA2ZTZmY2EwMCBsZWdhY3ktdHJ1bmsKKzM5Mjk1IGRlMmQ4NGUwNDQ3ZWVlZDg2MWI1NGE5ZjVlMzU2OTE0ZWRhNDg3MjEgbGVnYWN5LXRydW5rCiszOTI5NiA0ZmQwMzg3MzdlMjFkMmFjYjhlZjEwMDhmNzE3NWY3YzVlODVhZmVkIHJlbGVhc2UyNC1tYWludAorMzkyOTcgM2EyZmZmNjkwNTU4ZGMwNDNiZTJiZTM0MzEyM2UyZWE3ZGJjYjc4MSBsZWdhY3ktdHJ1bmsKKzM5Mjk4IDg3NzkxNmQ2MzJlMDcwNjliODU3NzU3YmU4ZTUwNWUxZGJjZWYxMjYgbGVnYWN5LXRydW5rCiszOTI5OSAyMGIxOGI3ZjgzMDk1NzhlMGM1MDI5YzA2YTgyOWE5NDIxMjQyZDlhIHJlbGVhc2UyNC1tYWludAorMzkzMDAgYzViZjU2ODUyNjdiOGU4ZGE2OTI5NjEwYjliNDE5Y2YxNzgzNzg4NiBsZWdhY3ktdHJ1bmsKKzM5MzAxIGQ3ZjM5ZTYyMDhiYTlhYzg4NWE0OGE2Y2MwZmJjNWU1MjBkMGUyN2MgbGVnYWN5LXRydW5rCiszOTMwMiA2NjA1N2Q1NTA2MjhhZTc2NWJjNzIyOWFlYTg5ZjU2M2RhM2UwZDkyIGxlZ2FjeS10cnVuaworMzkzMDMgNTAyODNhNDQxN2Q5ODg3MGY4YzliY2Y5Yjk2ODUxYTlhNjkxMmViYiBsZWdhY3ktdHJ1bmsKKzM5MzA0IGYyMDY5MTk1NzU3ODExMzM4ZDFlMjAzNTc4ZGQ0MTVmNTE1ZmEyNTggcmVsZWFzZTI0LW1haW50CiszOTMwNSBhZWI4NTgwYTFhZjc0ODk4ODcyY2YxZWFmZTJjYWFhMWQwZWQ0OTdlIGxlZ2FjeS10cnVuaworMzkzMDYgOGIwN2Q3MzFiZTYwM2RlZDQ4MjM0ODFiNjVlMTg4YjIyZDFlYzJmMyByZWxlYXNlMjQtbWFpbnQKKzM5MzA3IDNlYThmNThhOGM4ZWM2NDM0ZjA0ZmFlZTg2Njc1YThmZWQ5MTlhZmQgbGVnYWN5LXRydW5rCiszOTMwOCA0ZTU4ODcyNWMzZDc1OGU3ZDExZjMyMTFlOTNkZTEyYjczMzgxYWJiIHJlbGVhc2UyNC1tYWludAorMzkzMDkgY2RlMjc3ODJhMTY5MmFkNDFjYmQxNzFmMmFhOTJmNDZhYjAzOGQ3NyBsZWdhY3ktdHJ1bmsKKzM5MzEwIGY1NzEzZTMwMzgwYzQzNmJhOGRlMTJhOGE2ZjQ4NTFkNjk2MzUwODUgcmVsZWFzZTI0LW1haW50CiszOTMxMSA3ZjlhNDMwYjhjZTcxZWM5N2E3OGRjYzczNzY2NDBmY2IzNTY5Yzc5IGxlZ2FjeS10cnVuaworMzkzMTIgY2UxMjQ1MTIyMGI0MGE5MjdiNjJmZTM3YjRlMjRiMzNiY2VhMTBlNCByZWxlYXNlMjQtbWFpbnQKKzM5MzEzIDc2YjI3MjI4MDZhYmM1ZDc5NTNjYWQ4OWU1MjdjYjhiODRhYTk2NzYgbGVnYWN5LXRydW5rCiszOTMxNCAwODRkNDJkZjdiYWQ0ZTk0MDM5N2M2Y2JiM2E2OTgwOWJiZGQ5YzlkIHJlbGVhc2UyNC1tYWludAorMzkzMTUgNzk3ZDgyZWVjNjI1MjFiNmE2OGRmOWQzNmQ4YjI5MjRjNmMyYTRiZSBsZWdhY3ktdHJ1bmsKKzM5MzE2IDYyNDkxOGUxYzFiMmVmZWU5ZTRiN2JlZTMxZGRiODIyMTJkMTFiMzMgbGVnYWN5LXRydW5rCiszOTMxNyBhNDY3MzI1NzFmMmU4ZjA1ZWRjZDViYmE3OTZkZjkyNWM4ZWE2NDUxIGFzdC1icmFuY2gKKzM5MzE4IGY4NGNmODUzNDY0YWFhYTY3YjMxYjNkMTRiM2Y1OWZjNGYwZmU3ZDAgYXN0LWJyYW5jaAorMzkzMTkgN2MxNGM3ZDhiMzk2ZmY2MTFkZTk3OTQyM2VlZjA3NTYwMmE2NzU1ZCBhc3QtYnJhbmNoCiszOTMyMCA0NjgwMGYyYWQzMDhhNDg4ODdhZWE0ZTJiZWZhNjdkOGRjZmNmZmVmIGFzdC1icmFuY2gKKzM5MzIxIDAwMTQ1OTZiODQwYzZjZmRiZThkNTY2YjM4MDQ1ZjI4OGI1ZGNhZjMgYXN0LWJyYW5jaAorMzkzMjIgYjQ2M2JiNDgyNTk0OWJkNDI2MTBhNWZmMzhmNzNiNmQ5MGRkY2Y5ZiBhc3QtYnJhbmNoCiszOTMyMyBlN2VkMGU2YWVkMmYyNzM5NDRjMzE3ZWViMzZkMTdiNzYwYjJiOGU2IGxlZ2FjeS10cnVuaworMzkzMjQgNDQ4YzZmYmZmNjQxMzEyMmE1N2U1Y2UyMDZjMGYzYjAwM2EzNjM4NiByZWxlYXNlMjQtbWFpbnQKKzM5MzI1IDkzMzAwODBhM2Q0MTc1OGUyNmEzNmZjN2MzYmI4NWY2NTIzYWJjNTAgbGVnYWN5LXRydW5rCiszOTMyNiA5MjYxNjlmZGU1ZTYzM2YxZTJiYTg4MjdlNjVjYzNjZjBiMDNlNGNjIGFzdC1icmFuY2gKKzM5MzI3IGZkZWI0YThiY2I0ZTI1MDk5YTAzOGE3NzBjZmE4NWEwMmVlOWZkNTkgYXN0LWJyYW5jaAorMzkzMjggNDMyMTFiZTBkZTQxNWZkYTFiZDdjNmEzZjlhZDkwMGU5YmVhNjFmMCBsZWdhY3ktdHJ1bmsKKzM5MzI5IGQ2ODI3OTBkNWRiMGUyNGFiMzM3ZGJjMmY3NTNiYjFmN2YyYmIyMGQgcmVsZWFzZTI0LW1haW50CiszOTMzMCAwZjFhMjMxYzJjN2NhYjVkMjFkZmY5M2JmMDdjZTk5MmU0OTRhNjZmIGxlZ2FjeS10cnVuaworMzkzMzEgNzg3NDc4OTIzZTgyZjI3ZTNiYjA1NmJjNTM0Nzk4YWNhMzJkZmFjNyBsZWdhY3ktdHJ1bmsKKzM5MzMyIDA0ZGQ1YjA2ZDNjOGVkNTNkYmU5OGU5NjI0NGJlNzg1MzA2MzBmYmMgbGVnYWN5LXRydW5rCiszOTMzMyAzNGZmN2NhNGNlZjg1MjdlM2IxZmJjYmM5NTBmNzQyMTY1MGQ5Y2I0IGxlZ2FjeS10cnVuaworMzkzMzQgYTZlNzAwMDRlOTg3MGNkODdlZjMxYjJkYzBlMzRjMjBkYmFiNTI3ZiBsZWdhY3ktdHJ1bmsKKzM5MzM1IDM4ODI0YjZlMzYwMDdjMzY5NTFmY2Q1MWYzOWVmNGY0MzRlYmY5OWMgcmVsZWFzZTI0LW1haW50CiszOTMzNiAwZWIzODZlZTk0MGUzMDMyNmM0N2JjYWFiYTE1YjkyMWYwOGU1MDNjIGxlZ2FjeS10cnVuaworMzkzMzcgMDcxMzcyODY3NzNjYWZmNmVmMDc1OTAzNjM4OTJhODU3YWE2Mjg5ZCByZWxlYXNlMjQtbWFpbnQKKzM5MzM4IDRhY2QzMDc2MWJjMjE3NjMwM2JmNDJjNzRiYmIyOGUwOTZmY2M0ZjQgbGVnYWN5LXRydW5rCiszOTMzOSA2YjM3ZWFiZTJhYzQzN2JmZDQ0ODQ5ZGYwYWQ1ZTkwM2UwNjRmYWY3IGxlZ2FjeS10cnVuaworMzkzNDAgNWY0MDBmYjJkZDhhNjliN2NkNjlhMzE4OTFjYmJlNjQ0NDYwODYwYyByZWxlYXNlMjQtbWFpbnQKKzM5MzQxIDM5NzNkNjNkMjY2NzdjMDY3NDYxMzZmMWIxNTI2NTcxMzc4MTFhNWIgcmVsZWFzZTI0LW1haW50CiszOTM0MiA5MWQ5NjhiNzc1NzlhNWEzNjYxYmM0NmUwMWZlYTlhNmQ0YjQ5NWQ5IGxlZ2FjeS10cnVuaworMzkzNDMgNDNjZjU5ZTdhNjE0NWFjNzE4ZmU5NTM4NDNmNDIwYWNjODNhMWQ3YiByZWxlYXNlMjQtbWFpbnQKKzM5MzQ0IDRkYTZkNGUwYzNkNTYyOGMwY2YxZGVmNWFlMzUwY2VmNmVhZGUxZTYgbGVnYWN5LXRydW5rCiszOTM0NSAxMmE5YmIyNGI2ZDk2NDY2MDc0OTRkNjI4ZWNhODllYzBmYWVkOGFhIGxlZ2FjeS10cnVuaworMzkzNDYgYmVkOTNkMDQxNmRkZTgyYTM0OThlMmRlNzdjMzk5M2U3ZmI4NDNhNCBsZWdhY3ktdHJ1bmsKKzM5MzQ3IDdmMTYyNzc2NjYyMTZjMWU3ODdiMjAxNzdiYmNkZDA5NDRhNzc0YjAgYXN0LWJyYW5jaAorMzkzNDggMDFlZmY2MDc5ZjkwYjZmYWFmYmE3NDY1ZGY3ODkwNmFiMWIxMTdhMCBhc3QtYnJhbmNoCiszOTM0OSAxNzA4NDc5YWRlNGQ1YmFjZDQwMmRkNjMxMmUzNGU4NDc1MTZiNzA4IGxlZ2FjeS10cnVuaworMzkzNTAgYzllYjI1ZmUzOWNiYmUwNWQ1YWQyZmQzYzhmNTJiZDQ5YzIwNWNkOCBsZWdhY3ktdHJ1bmsKKzM5MzUxIDllMDVlYTNiMWJmM2I4NWYzYTI5OWU0ZDM0MmQ0ZmIxOTQ3MTk1ZDkgcmVsZWFzZTI0LW1haW50CiszOTM1MiA1YzdjY2EyNTQ3MmRlZmZlZTQ2ZDc1Y2E5OGM3MTUyZmZhMTVmODNhIGxlZ2FjeS10cnVuaworMzkzNTMgNmMwODY1YmVhYWI3MzEyOTIwODBmYTIyZGU0YWFiYmEwMTdmNTQzMyByZWxlYXNlMjQtbWFpbnQKKzM5MzU0IDg4MzdkZGZhYWQ0NWVhZjgzODE3YWQ4MWFkMzE3NWE5ZDdhNjJkMjUgbGVnYWN5LXRydW5rCiszOTM1NSBmOTYyODdkMWI1ZjZmOThiZTc4NWM0Yjg3MmM5ODViNjRiZTcyNzBkIHJlbGVhc2UyNC1tYWludAorMzkzNTYgNjM0Y2E0ZDhhMzA2YTIyMjIxOWQ2YWVlYjJhNjIyMGZiMGM2MTIxYyBsZWdhY3ktdHJ1bmsKKzM5MzU3IGI3MDk3ZDkxZjA0ZDFlYmQ1NmU0N2IwZTdkMjAxZGE1N2VmZDdiNDIgcmVsZWFzZTI0LW1haW50CiszOTM1OCA1YjFhMmZiODY0YTc2MjZjMTY0N2EwYjUzMTk3NjFkOWFjY2E4NTY2IHJlbGVhc2UyNC1tYWludAorMzkzNTkgM2JiOTMyODAxYjY0NTJmODhiNzliZDJlZWMyMGZjNTk5NzNlZWM2ZCBsZWdhY3ktdHJ1bmsKKzM5MzYwIDM3NDVlM2M2YTNlMTM2MDE2ODk2ODQyNWU0OWYwNTdlNWVlZjVmZTMgbGVnYWN5LXRydW5rCiszOTM2MSBkZGUwNTZhNjY2ZGRlZjUyYWQzMjAzMmRhMzhlNTkxZDMyOWFmOTk1IHJlbGVhc2UyNC1tYWludAorMzkzNjIgM2VlYzkxMDM4ZmJjYTlmNDM5YWEyZGE5NzQ2NWI5ZjU1ZjQzMTI3YSByZWxlYXNlMjQtbWFpbnQKKzM5MzYzIDBhNmRiY2I0ZTA1NjYyMzA1Y2FkMzg4YTNhYjM1MzI0YTA2ZjZlYjUgbGVnYWN5LXRydW5rCiszOTM2NCA0ZDA1ZjllN2U2ZTI5NGE5ZTQxN2RhNTc2MDZmYmYzMzEwZjUyYmRmIGxlZ2FjeS10cnVuaworMzkzNjUgMTU2YWJkYTRlNDU3M2E4ZTJmNGYxZmEwN2E5MDZlZDEyNTA4NjcxZSByZWxlYXNlMjQtbWFpbnQKKzM5MzY2IGZmMmU2NmZjMGEyOTI5MDRkYzA0ZDM3MjAyYzg4YmRjZTA1YzFkM2EgbGVnYWN5LXRydW5rCiszOTM2NyA0ODk2ZjgzMzRiZmYyNDQ1MzI2OGE1Y2I1ODgwYmRiYTlmNTE5YjQ1IHJlbGVhc2UyNC1tYWludAorMzkzNjggZTQ4ZmNkNGMzNThkNDk3YzA3ZjYwNzNiNmI1NTRiOWM0NjdkMDE3OCBsZWdhY3ktdHJ1bmsKKzM5MzY5IDM3ZmE3YjZkY2E5YmI4OWJhYjJkOTFlZDFkNjVjZjAwZjQyYWE0ZDMgcmVsZWFzZTI0LW1haW50CiszOTM3MCAyYTZiNjk0MmE3ZjdjYjYwNDA2MDU2YmY5MGM5YjQyMTQ3ZTNlY2U4IGxlZ2FjeS10cnVuaworMzkzNzEgYzRlNWVkN2EyYmEzN2Q2NTEwMDQ0MWJmMjBlYjNhNWExYTU0YjAxNCBsZWdhY3ktdHJ1bmsKKzM5MzcyIDg1ZjBhNmU4MzgwYjVkZDc5MmNkNTg3MTI0YjY3MGQxOTgyM2UyMjggbGVnYWN5LXRydW5rCiszOTM3MyA0ODE0NjNhNWIyMGM4OTZmZDhmMTc3NjZlNDgyNmIwNjkxYjJiY2Q0IGxlZ2FjeS10cnVuaworMzkzNzQgZmUzMjM1ZmNkZDc3MjUyZWRhZTdiYTE0MWM1MGM3NGUzZWU1OGUxMCByZWxlYXNlMjQtbWFpbnQKKzM5Mzc1IDdjYWFiYzc0OTk3NTY3ZWVhMjgxNGY2OTQyMmYwNDE0NmZjNzY2OTkgbGVnYWN5LXRydW5rCiszOTM3NiBkNWRmNTIyMmZkNmQ1NDJjOWFmYjVjYzY4YjVhOTFkNDI4N2NjMDIwIGxlZ2FjeS10cnVuaworMzkzNzcgMTY1MjBmY2MwNjA5NTBjYjBmNmEzZWE1ODA0MTc5ZTAyYmFmMDllOCBsZWdhY3ktdHJ1bmsKKzM5Mzc4IDU1ZTI3NTlkMDIxMTM3MjQ5ZjFhZjRjYzU3NDY4N2NmNWE5ZGM5NzEgcmVsZWFzZTI0LW1haW50CiszOTM3OSAyNDVlOGY0Y2JhMWRiMjQ4NmE0YTRiZGUzMTQ0YmNlNDk3Nzc3Yzg2IGxlZ2FjeS10cnVuaworMzkzODAgZTBiZDZmMzI0ZmQ2YTFkMjk1Yzc1NjA2M2Q2MDhjODVkOTc4YTAzZCBsZWdhY3ktdHJ1bmsKKzM5MzgxIDFiN2M0ZmJlZTBiOGJlMTBmMzA4ODIwN2Y5YWFlMmRkNTc0YjgzMDQgcmVsZWFzZTI0LW1haW50CiszOTM4MiBjMWYwZjE3MDkzNmQ1NTcyYjRhNmU3NWRmNDY3NzU4YmUxMGJlZDNkIGxlZ2FjeS10cnVuaworMzkzODMgMTMwYjZjZTliYmYzZGMxMjc2MDg1ZGYyZmQxNDY4ZWY1MGFhNzEyNSBsZWdhY3ktdHJ1bmsKKzM5Mzg0IGVkZGNlNDBlZDFiMTZlMTdkNjI3MGFmYmZiNDdkMTlkMTdmY2ViZTUgcmVsZWFzZTI0LW1haW50CiszOTM4NSA3ZDNlOGMyYWUzMzkxMzJlODZjYmFkYzlhNzQ0ZmZkYTljNzQzYmZkIGxlZ2FjeS10cnVuaworMzkzODYgOWQzNDNiYzgxODYzODE2YjViNjFkYTU3YjJmMTY1M2Y1YzljYjFmNCBsZWdhY3ktdHJ1bmsKKzM5Mzg3IDRhNTA3Nzg3M2NiYTBiYmE5OWZmOGJlZmNmNmJhZDc2MzU4YWNiYjkgcmVsZWFzZTI0LW1haW50CiszOTM4OCAzZDAzZDJjYmUxYWQxNmRlNTk0ZjE5NmRhOWNkYjVmNjdmMjBkOGVjIGxlZ2FjeS10cnVuaworMzkzODkgNjUyMzhjOWE3YTY2MDEwODBkMDVhNjg2MDc3MDYwMmVmNjIzNzg1OSBsZWdhY3ktdHJ1bmsKKzM5MzkwIDE3MDdjOTQ1ZDZjMjRkZDA4Nzc5ZDZmM2NlODE5YWM3MmQ2YTkxZDIgcmVsZWFzZTI0LW1haW50CiszOTM5MSA1OTU0NTFjMmM4ZWNkYzk5YzQwNjgxMTM3N2YxMTU1ZWVkZWRkYzdiIGxlZ2FjeS10cnVuaworMzkzOTIgYTE3MDEyMzQ1YWY2YWEyOWYwYzA1Y2MwMjA1YWU0OGMwODBlYmU2ZiBsZWdhY3ktdHJ1bmsKKzM5MzkzIGQwZTg2NTc2ZjBiNWRmNTc5ODljOGE2MjljY2JhOGYyYWVlNjNmNjUgcmVsZWFzZTI0LW1haW50CiszOTM5NCA0NDYxMjU5MzQ3MWM5NjBiNzM0ZjM5ZTJlNjg2NmRiOWRjZTA0YzdlIGxlZ2FjeS10cnVuaworMzkzOTUgY2I0OTlhZWUzNmU3OGFjYmZhN2UyYTg1ZTI2MjNiOGVkZDFlOTljOSByZWxlYXNlMjQtbWFpbnQKKzM5Mzk2IDdhMGQwYjRjODdkMDY0NTExNTYwOTkyYWY4ODQ1ZDRhOGNlYTJlYmYgbGVnYWN5LXRydW5rCiszOTM5NyA1ODJjOTBkZWRhOWRmZTMwNDI1Y2E2ZGEwNWE2NWQ1YjJjNTMzZDFkIHJlbGVhc2UyNC1tYWludAorMzkzOTggMDk5OTI5MGM2NzU4OGExMDI1YWNmY2E3NWI0MTE2OWExNmVkMzI3YSBsZWdhY3ktdHJ1bmsKKzM5Mzk5IDUzMTY4Njg1NGYwODZlYTM2MGVkZWJkMmU1YmIyNGJkODIyNGM0MjUgcmVsZWFzZTI0LW1haW50CiszOTQwMCAxZmRmZDAxMzBlMjgxOTIxMzhlZmUwZDMyN2M5NjdiMTY2YmQ5MTNiIGxlZ2FjeS10cnVuaworMzk0MDEgOTdjOTcxOTRlNjRiYjg3MjNlNjI4MzA5YmRmMDFlN2MxNzFmNjYxOSByZWxlYXNlMjQtbWFpbnQKKzM5NDAyIDM2NTE0Yjk1MDAyYWIxZDU5MmYwNTZiZjk2ODhkYWRmODFhY2MyMDkgbGVnYWN5LXRydW5rCiszOTQwMyA1OWE2M2IwOWE0YzI2OWU1MjY3NWFlMzM1N2FiOGUzOWIwYjZhZTc5IHJlbGVhc2UyNC1tYWludAorMzk0MDQgMzg1NWE5NjBhNmFhOTZjYTllYzg1OWZlOWExMjEwNzkxYjYyODU4YSBsZWdhY3ktdHJ1bmsKKzM5NDA1IDlhODM3MzgwYzNjNWYxMjdhMTc4ZGI2ZDA2MjJlOGJjNzMwMDBjMDYgbGVnYWN5LXRydW5rCiszOTQwNiA4YTNkN2Y5ZjAyY2MyZmUxZDE1ZjM2ZTNlZDA0M2ZmNDNiMzAzMzQ3IHJlbGVhc2UyNC1tYWludAorMzk0MDcgY2ZjYzI2NDFhOTEwOTgwZDMyYjg3MmVkOGIzODkzYjJmYWViZjhjNiBsZWdhY3ktdHJ1bmsKKzM5NDA4IDlkNDFhZmE2M2I3OTUzMTMzZTQ2NGVmMDA2MmI0ZjEwOTg3NWJmYTAgcmVsZWFzZTI0LW1haW50CiszOTQwOSAzOGU1ODhkMWQ4ODUzYjhhNDliZDM5ZWI1NjBmNmM2ZTkzODYyYWExIHJlbGVhc2UyNC1tYWludAorMzk0MTAgMDg1MjhmYmQ0ODA0OWZiY2VkZDRjZWI2ZjMxYTY1NDg4NzZlNjhmZCByZWxlYXNlMjQtbWFpbnQKKzM5NDExIDliZTkyZmU4YTdhODEwMTIwZTU1MDRjZDE5MGQ1NjRlZmJlNTg5NzYgbGVnYWN5LXRydW5rCiszOTQxMiAwMzU0MDllZjA5MDExZjU1YjU2ZGVlYjJlOTY3MGM0Mzk3YWNlNWNlIGxlZ2FjeS10cnVuaworMzk0MTMgMjU2ZTczODRmMjRkYmQzMzNjYjM1ZDJiYjliYmI5MDE3MTY4MTI1NiBsZWdhY3ktdHJ1bmsKKzM5NDE0IDEzMTI5NDZmMzJhYjVjZTExNzNhNWUyYWYxYjQyODY0ZWM2ZDFiZDAgcmVsZWFzZTI0LW1haW50CiszOTQxNSBhZGVkYTlmYjM0ODVkNjc0YzcwY2QyMDI2N2VlMDhhMDY2ZGVjNmMzIGxlZ2FjeS10cnVuaworMzk0MTYgM2U1YzA3ZmFhYjExMTM5OWIyNDAyY2U5Y2U1YmNiNzcxZWE2YzU2OCBsZWdhY3ktdHJ1bmsKKzM5NDE3IDUyMzNkMTlmZjg3ZjI3N2YxZDI2NDg1NDJmNWM1MTk4ZWEzZWU2ZGMgYXN0LWJyYW5jaAorMzk0MTggNzJkM2FkMDhiMmM2MjBiYWE2NjBjZGIxZjRhOWM0Y2NhY2ZiMzgzZCBhc3QtYnJhbmNoCiszOTQxOSA2OWVhYjg1MTc0ZmJhM2Q4NjJjZjYwNmI5MjhhNTc2Yjc4OTk0ZGZhIGFzdC1icmFuY2gKKzM5NDIwIDMzZjY2MmY2Nzk1ZjMzYTFlMTljNzk0NzA2ZmIwMmQ2YzM4ZTI2N2QgYXN0LWJyYW5jaAorMzk0MjEgNzEzY2NmZjcxZmRmZTRiNzAzMjMzZWYyZmNmNjA1OGUzOTY4NDIyOSBhc3QtYnJhbmNoCiszOTQyMiA4NTk2MGNhNGZjMDg5ZTlhMTZmNGJhOTNiNjYwNTA5Y2Y5MTNjMzVkIGxlZ2FjeS10cnVuaworMzk0MjMgZGJhMWUyZGZkOGRlYTc4NDVlYmI5Y2Q3MmNkMzY1ODM2YWZkZDI2NyByZWxlYXNlMjQtbWFpbnQKKzM5NDI0IDIwMGUyZWY0ZGJkYzY0M2M0N2Y0NTRmNjkxMTM3NWNkM2I0MjcxMjggcmVsZWFzZTI0LW1haW50CiszOTQyNCAwZjQwNWExYzUzNDA1NDk0MjY0Zjk3YjRkZGU4MmVlMWE2ODkwNGMxIGxlZ2FjeS10cnVuaworMzk0MjUgYWFhMzY0NmY0NTY3MTI2YjAwYjQ0MjEyZmRiOGNkOTJkNjIxNzI1ZSBsZWdhY3ktdHJ1bmsKKzM5NDI2IDAyMzRjODRhN2Q4ZGE4MjZhMjUxNzRkODIxNjU5NmQxOWJjNmZmZjkgYXN0LWJyYW5jaAorMzk0MjcgZTUyZWQ4NzhjNWVlMGFkZTIwN2NkMjllOTRmNDQ2MzBiNDY4YjFmMyBhc3QtYnJhbmNoCiszOTQyOCA0OTZkMjliMGJhNWJiYWY2Mzk2Y2IyMjljOWExMGRhMGI5ODY5MDBmIGxlZ2FjeS10cnVuaworMzk0MjkgMTFlMTVmN2FiOTQwNmVlYzVjNjJhZDFjNDZmMmE1YTMxNTkxZDNmNSByZWxlYXNlMjQtbWFpbnQKKzM5NDMwIGQ5MmYwZWQ2YTdmMmY5ZDdlZWI1YjdjMzViMDM1NmU4ZGMyZDIwNGMgbGVnYWN5LXRydW5rCiszOTQzMSBhODRjZGFiYjhhZjA2ZGFiZDk3ZTkzOTQ4YTE0YWZiNjNjNzI5ZjVjIGxlZ2FjeS10cnVuaworMzk0MzIgODllOGE1ZWMzZGEwNTc3YjcyYjE0ZGE0YzNkMjdmOTgwZTFhNzhjMSByZWxlYXNlMjQtbWFpbnQKKzM5NDMzIDY3NjNjOTFmY2ZlZjQwOTllOWM0NmJmNWZmYzJlNDJlOTU0ZmQ0YjAgbGVnYWN5LXRydW5rCiszOTQzNCBiYWVkOGI3ZGViNTZkMWM5NWFkOTQwYzU1YjkwMWNjM2U5MDdhYzljIGxlZ2FjeS10cnVuaworMzk0MzUgOWIyMTA0MDExZjcwMjZhNWNjOTYxZTBmNWVlMTI4YjEyZDYxMTJiNCByZWxlYXNlMjQtbWFpbnQKKzM5NDM2IGJiNjc3MDc5ZjgyN2NlMjAxNjVhYTBjY2YzMTBkZGM2YjMwZmEwZGUgbGVnYWN5LXRydW5rCiszOTQzNyAwZTg5NjRmNTM3MzJiZGM5MjBjNmNmMTBlZTI5YTljMWJiOWM1ZjMzIGFzdC1icmFuY2gKKzM5NDM4IDUxNmVkNjBhOGY5Y2FmNjcwZjNkMDk3MTgzZmVlNDE1MDQ1OGViYTMgYXN0LWJyYW5jaAorMzk0MzkgNjA2MWFhYTQ0ZWJjNTM1ZTQ5YjZiODM3MmIzOTE0ODE0NTRjY2M3NiBhc3QtYnJhbmNoCiszOTQ0MCBkMzMyYjIxNjhjYjI0NzI2OWE0NmZjNmE1ZmFiYWNmZDczNmE0MzU4IGFzdC1icmFuY2gKKzM5NDQxIGNkN2Q2YzZmMmRiMjE3NTRlMmIyMDM5NzdiMjQ1N2UyNDllYTNlZjMgYXN0LWJyYW5jaAorMzk0NDIgZTE1OGYxZTE3YWI0YjcxNTlhYzFmZWY2MWE1NjgyNmZmOTViN2NmZCBhc3QtYnJhbmNoCiszOTQ0MyAwNmVmZWVjNzRkNTlhNTIxMjQ5ODg3YThlYjdkNzNmNTAwMmVmMTFhIGFzdC1icmFuY2gKKzM5NDQ0IDM0MzhlZWJhNThjMzhhOGZkMzY2MzRjZWQ2MDNiMzVlNGJlNjllM2UgbGVnYWN5LXRydW5rCiszOTQ0NSA4MWEwNmE5YTFhYzQ3YzQ5N2I5YzhjODYzMTUwNDdhODMwMzY0ZjVmIGxlZ2FjeS10cnVuaworMzk0NDYgYWIzZGRiYmQwODYyYzhmNDNlZjcxM2M4NGYwNzI2OGNhOWQ2ZmY2NSBsZWdhY3ktdHJ1bmsKKzM5NDQ3IGJiZjgxNTdkMDM5ODRlOTZhOWE4Njc4ODk4ODA1ZmVhMjcxOTkzNTkgcmVsZWFzZTI0LW1haW50CiszOTQ0OCA0ZmM3YTdlZGNiNGI2YWZiYzk0MjQxOTZhMTMwMmQwZjUxNWQwMWE4IGxlZ2FjeS10cnVuaworMzk0NDkgNmI4YzU1ODc3NzU1YzdmZGVlMDU0MzRhNmU5ODkxYzE4NmJiNWYwNCByZWxlYXNlMjQtbWFpbnQKKzM5NDUwIDFhM2NmOTZjOGQ0NjRiZDU0NTQ4OTJkNjQ3NTBlMWYxZTYyM2E2ZDEgcmVsZWFzZTI0LW1haW50CiszOTQ1MSBiY2Q5ODExMjM1ZDQ5NjJiZTA0ZmI2ZDg3NTk5NTk5Yzg4Nzk3YmExIGFzdC1icmFuY2gKKzM5NDUyIGExNTk1ODRkYjY1YzEzNDE1N2Q1NjEyOGIwZjAzMzc4MWI1NWFlOGEgYXN0LWJyYW5jaAorMzk0NTMgYmE4NDRiZDdhMzJiNmJiNjUxMDUzMWE2M2FiMGRjMDAyOTA4ZDY2OCBhc3QtYnJhbmNoCiszOTQ1NCA0NjgxYThmYTQ2ZDA2ZWNmYzdhNGM2Nzc0NGZkMzU4MGNjZGM0NThmIGxlZ2FjeS10cnVuaworMzk0NTUgY2U1Yjc1MzI1MjBhODdkOTQ2NzQwMzk2MWY2Yjk4OGIzYTQ0OTc0OSBsZWdhY3ktdHJ1bmsKKzM5NDU2IDBlYWU1MjE5ZjNiODI0ZDBmZTYyN2ExZDdkYTQ3MzdhYmU0ODg4NDUgbGVnYWN5LXRydW5rCiszOTQ1NyAzZTYyMTIxMTNlODJhMGRjYmIwOWU5ZTA5NTk1NzIyZjY1NTE1MDQyIHJlbGVhc2UyNC1tYWludAorMzk0NTggYTE4NWQ2OTYzMGIzOGEyNzhjYzc0NjUwMzEyY2QxYmRhOGI4ZGVlZSByZWxlYXNlMjMtbWFpbnQKKzM5NDU5IGMzNTNjMjc4MmFlMTU5NWQ1ZTQ3NTQ3OTgyZDA0NDkyMjczNWFmZGQgcmVsZWFzZTIzLW1haW50CiszOTQ2MCA5N2RjOGYwNmM0ZmFiN2Q5NTRhYjUzZDYyMDAwMDRkOTM3MGE2MzA1IHJlbGVhc2UyMy1tYWludAorMzk0NjEgMGJjYjMwM2IzNDFiNjY0YjllMTY1NGM0ZDVhOGFjNWUwYzNlMTRmZSBsZWdhY3ktdHJ1bmsKKzM5NDYyIDBmZTgxMTdiNzYxZDc0YWQxYTJlZjcyMDQ4ZmY1MWFiMzRjYWNkM2UgbGVnYWN5LXRydW5rCiszOTQ2MyBmZTBjYTYwNDgyNjcwMjc3MjJjYjE2ZDgxN2EzOGZkOGFiM2NmOGNiIGFzdC1icmFuY2gKKzM5NDY0IDA3OTU2ZDRhOGU0YWJiZGQ3NWMxZjZhYzNmMzhjZWQ3ZDUxZjVmODQgYXN0LWJyYW5jaAorMzk0NjUgMTI5YWIyMmM0YjE5YTljYTRkMTllN2NlMjk1ZTc5YmQ1M2YxYzc5NyBhc3QtYnJhbmNoCiszOTQ2NiBmNTRlNTBjNTNhNzJkMzljNmFkZDdmNjNiOWIzMTU3NDg4NjUyNTIzIGxlZ2FjeS10cnVuaworMzk0NjcgYzg5M2NhZWIxMTM3MDU3OWNhNjM2NDgzOGUzMWUyMTU4ODQzYTI2MSBsZWdhY3ktdHJ1bmsKKzM5NDY4IDIyYTQwOTNiNTE1MWM2OWI4NzM5NWNlYzI2OWFjMDZmNmZhY2NjY2MgYXN0LWJyYW5jaAorMzk0NjkgZGFmMzM4ZWNkY2NjNmJmNjEwYTNmNjQ2ODJjNzMwZDQ0NjI2ZTExNCBhc3QtYnJhbmNoCiszOTQ3MCBiNzIwMTA0YjdkYjkxNjVhMDM4YTU1Mzc4YjFlN2Y0NTNmZmFkMjVhIGxlZ2FjeS10cnVuaworMzk0NzEgYmE0NGU5ZTJiNTU0NzI5ZjcyMGNkZDdjY2NlZjllYTAwY2IyMzlhMyByZWxlYXNlMjQtbWFpbnQKKzM5NDcyIDhmYTgzYTllYmM2ZWNjZWNlYmI5ZDA5NWExNTkxYWY3MGJkZTY0YzUgbGVnYWN5LXRydW5rCiszOTQ3MyBlZDY1ZTBhZDIyMTU5NWI3ODI5NjQ0ZjQyOTU5ZDkzYTFkNGRiNThmIGxlZ2FjeS10cnVuaworMzk0NzQgNzcxODQ3Y2JlM2I2Y2I2ODYwMjQ0N2FkMDdhZmMwYmI4YTFjNWVhNSByZWxlYXNlMjQtbWFpbnQKKzM5NDc1IGY2M2U2OTYwYzVjZmJlMjZiMWI1OWFmMWFhMjIxOWJmYThlYWVkYzIgbGVnYWN5LXRydW5rCiszOTQ3NiAwYjdmYTZmMDU1MmFiZTkwNTFlZTRmNGMzM2NkY2Y2NDc5ZTYxMTcyIGxlZ2FjeS10cnVuaworMzk0NzcgMjZiYTNkNGY0ZmM0MTU1N2ZkMjZlM2RmZWMyZDNmNmFmYThjMTk3ZSBsZWdhY3ktdHJ1bmsKKzM5NDc4IGE1NzgwMDJjOGY2NTk5MjIwZDBiYWEwYjYwMzg4YmZjN2ViOGFjZTkgbGVnYWN5LXRydW5rCiszOTQ3OSAxNWE4OTc1ZjdmYTkzZDVhMDY4ZjdlMmJmYjRiMjY0YTQ3YjA5NTQ2IHJlbGVhc2UyNC1tYWludAorMzk0ODAgMWYyYWYyNTk5NjhiNDU1ZDQwYjM1YWQ3YzQ1MTRlY2U0MzhjZTc5NiBsZWdhY3ktdHJ1bmsKKzM5NDgxIDBhMjhkNDg2MzZjODY0M2ZkZmNmYzhiNzIwNTE3NTE5MGNjYTMzNjAgcmVsZWFzZTI0LW1haW50CiszOTQ4MiA1ZDU4NDQzZjQ4OWI0ZmQyOTEwYTQwZjAxZGEzNTZhNWIxMGJmMTcwIGxlZ2FjeS10cnVuaworMzk0ODMgZTdmZDg1NTUwYmMwYjU5YjhmOTY2ZWEyZWY1ZTlhZTQzM2UyMDk0MSBsZWdhY3ktdHJ1bmsKKzM5NDg0IDk1MTZiYTU0YjlkZjQ0NzU3ZGU0ODI4YmJmYTI3YjQwNmIwMDA4NjAgbGVnYWN5LXRydW5rCiszOTQ4NSA1ZGIyNzMxNWVkY2ZmYTVhNjhlYjdhMTljZTE1ZDgzZjRlODE0Nzk0IGxlZ2FjeS10cnVuaworMzk0ODYgNGFiYWY2OTIzNDM3MTk0ZGJjNjMyMGFmNmE1MTJlZWY0MzRmZWVjMiByZWxlYXNlMjQtbWFpbnQKKzM5NDg3IGNlYWMwMjc3ODUyMzQ5YmU2NTg5YzEzZGFjYmIwZWVjYTA5OTVjNWEgcmVsZWFzZTI0LW1haW50CiszOTQ4OCBkZTFjNWQxN2ZkZTZjNjMwZTlmNTBhYWE1ZjQ2MWVkZWYzMDYzOWVjIGxlZ2FjeS10cnVuaworMzk0ODkgNDM2YmUyYzg5MTQwMmY0ZGNlZDNmZDk2NjI3MDUxZTlmNDk1OWRiMSByZWxlYXNlMjQtbWFpbnQKKzM5NDkwIDdkZDQzMTc1MGJkMzY1ZmQ1ZDM3MTFkNDM3MDYzZTc3NTNhMWIwODMgbGVnYWN5LXRydW5rCiszOTQ5MSBlY2Q2MWM5MmFkZjMxNjJlNjMxMDI3M2ZmOGVlMzY3NzE5MzgzMDk3IHJlbGVhc2UyNC1tYWludAorMzk0OTIgOTUyMWUzODAzODBmMGVhM2VjNDMzZTJmYmI1ZWZkOWFjYTU2NTI2YyBsZWdhY3ktdHJ1bmsKKzM5NDkzIDZiZGU2Y2QyMzk1NGM3MTI1NzM1NGFiMzIzMmE3OTgxZTA4YTlkMGIgbGVnYWN5LXRydW5rCiszOTQ5NCAxN2IxZGZkM2NiYmJkMzNmZWMxNjZiOWU5ODQ3MjFjZTY0MGVmNmZmIHJlbGVhc2UyNC1tYWludAorMzk0OTUgY2M5NDE2ZWU1OGUxOWYyODJhYmQ0YzExYzI1ODFhNzJjOGMxMzQ4NCBsZWdhY3ktdHJ1bmsKKzM5NDk2IGY3Mzc4ZTk3YjY2YTI0Nzg3Y2Q2N2I3ZGE1ZmJkNWEyZDliODA0YjAgcmVsZWFzZTI0LW1haW50CiszOTQ5NyBlNzNhY2NmM2VkZGI0YTMyZjljYzY1MTUwYThhZmQyNDYwNGQzN2I3IGxlZ2FjeS10cnVuaworMzk0OTggMzM2YjY2NGEyMjEwZTkyZDk0YmUxZDk2YjMzMzhhMWI3MGY1YTdiOSBsZWdhY3ktdHJ1bmsKKzM5NDk5IDU4MjQxMzBiN2FjMzUwZmYyN2RkYWRhNTkwYWExNzQzZjM4MTc0MTEgbGVnYWN5LXRydW5rCiszOTUwMCBhN2NjY2MzOTEyMjgwMjJhODJiNzIxMDNmOWVjNDY4ZDYwZWE0ZTY4IGxlZ2FjeS10cnVuaworMzk1MDEgZGM4NTM4ODQ1YjBjODkwZWE3OTI3NTRiNGY1MmRiNGM5OTQ5MDcyYSBsZWdhY3ktdHJ1bmsKKzM5NTAyIDM2M2U2ZGQwNzlmY2FjMzk3ZjNlOWQxMzZiYjM1M2NiMjdlMzQwNmMgbGVnYWN5LXRydW5rCiszOTUwMyAzOWRiZTNiZTMyN2FhYWZjN2JhNGM5ODQ4YThmYTUyNTI4M2Q4ZDNkIGxlZ2FjeS10cnVuaworMzk1MDQgZDUwNGEzMDJiZjUzZTNhM2RhY2I0Y2VkOTRjNzEwOGUwZWNmOTFlNyBsZWdhY3ktdHJ1bmsKKzM5NTA1IGYxN2VkM2I2MmFkYWIxNTY2OTQ3ODM3OGIwZDA4MWNjYWQ0ZDI5ZjMgbGVnYWN5LXRydW5rCiszOTUwNiBlYTUzZTdkOThiMDA2YWEyMzlmOTMzNDMxNzM1ODI1YWZkZTM1Njk3IHJlbGVhc2UyNC1tYWludAorMzk1MDcgZmE3Mzc2NWU4ZWY1MWQ4NTczNjlhZjFjMzc1OWZjMTBkMjg0ZmE3ZiBsZWdhY3ktdHJ1bmsKKzM5NTA4IDQ2ZjBhNDRmNDllNjQzZmU3Y2EyYzJhZDM1ZTc1MGRmZTY5MDhjYzYgbGVnYWN5LXRydW5rCiszOTUwOSA5NjZkZWFjMTVhODkwZGY3M2EwZTZlNTBiYjU4NjI3OGJmOGNiODRlIGxlZ2FjeS10cnVuaworMzk1MTAgODc1NzM5ZDcyZmMxYzdiOTg2ZWU2MDVkZTVjNzk1YjQwZTJhMWFhOCBsZWdhY3ktdHJ1bmsKKzM5NTExIGMwZDZiYWUzNWI0ZTc4ZmEyMGY3N2YzMTYzN2RmMmFiNzU0Y2QwYWQgcmVsZWFzZTI0LW1haW50CiszOTUxMiBlNDFmZGE5ZjBmZDEwMzNjZjE5MWE4YWRlZmI0YjEyN2EyMDE3MTQ4IGxlZ2FjeS10cnVuaworMzk1MTMgN2QwYTVhYzI0NjY5YWI2YmU0NzBhZDk5YWM3MWRiOGEwYTE0ZmZhMCBsZWdhY3ktdHJ1bmsKKzM5NTE0IDgxMjU5MDA5YmEyYzhmMDI0MTExYzczMDhiYzc3NDc2ZTU0NzA4NDUgbGVnYWN5LXRydW5rCiszOTUxNSAyNTM3OGJkYjFiM2EwZGE4Y2RkY2VmNDIwODA3Y2Y5NGUwNmY5ZTM4IHJlbGVhc2UyNC1tYWludAorMzk1MTYgYWNmYzBlMjJjZDhmYzU4ZTZiMjIyNmE2NmRlMGRlYTEyNzlhMmVjMiBsZWdhY3ktdHJ1bmsKKzM5NTE3IDc2ZTI5NWVhNTE1MmM5ODQ2ZjFlMDk2NzNhZTQ3Mjc3OWI2NjhhNjQgcmVsZWFzZTI0LW1haW50CiszOTUxOCAxMWEyNjUwZTg1NjhkYzBhNzUxYmRhNmI4NGQ3ZDA1NmYwMTMwMjhjIHJlbGVhc2UyNC1tYWludAorMzk1MTkgYmJiYjdkZGEzMmYzZWUwODU5Yjg2MjMzYmY2ZjM3ZjU3Y2IyNWFkMSBsZWdhY3ktdHJ1bmsKKzM5NTIwIGQ3OWFmMDY1MTE1NTA2ZmJkMzA4M2ViMDgzMjM0MWYzZWI1OTVlMDUgbGVnYWN5LXRydW5rCiszOTUyMSBiMTljZjczYzU0YTc4MDAxZDZkNmQ1YTEzZGZiMDVkOTdhNzFiMmExIHJlbGVhc2UyNC1tYWludAorMzk1MjIgNzI0YmJkNDg5YWQ0NzI3ZTkwNTJjNjliNTYzNDFiMmI1YjJjZDJhOSBsZWdhY3ktdHJ1bmsKKzM5NTIzIDU3ZjYzMGE5ZGUyNjE5NjE2ZjJiMjBhZTFjMzU3ZmI0M2UwMTI4NTIgcmVsZWFzZTI0LW1haW50CiszOTUyNCA5YjdkMTE3ZWI0YmM5NmRjY2E3NGM2YzhjZWU4YWJjOTE4NDkxOTJlIGxlZ2FjeS10cnVuaworMzk1MjUgMTE3NDRmN2JiNDdhODJkNzhiMzY5ZjliZTM3ZTZmNzMwMGMyOWVhZSByZWxlYXNlMjQtbWFpbnQKKzM5NTI2IDY4YWQ1MmIwNDQ1YmRiN2YyMjhhZWM3NzFjZjc4MzhiNTEzMzM5NDcgbGVnYWN5LXRydW5rCiszOTUyNyA0MTQxM2YyMzM0NWI0Zjc1ZTA0NTY3MTQ4MGI4MDljZDJhM2Q5NmNhIHJlbGVhc2UyNC1tYWludAorMzk1MjggOGE2Yzk5Zjg2NWViZDM5Y2ZlNzljNTBlYWRmODQxNTk5NGYxZGI1ZCBsZWdhY3ktdHJ1bmsKKzM5NTI5IDhhZDlhMmZhOGViMmE2MDc4Zjk2YWYzMGM4M2UyYzU1OWRhYjFlZWQgcmVsZWFzZTI0LW1haW50CiszOTUzMCBiZmJlMmM5YjEyMTU5OGI2ZTVhM2ZjMTU4MjdmMjA0MTQ0MGU3NDFjIGxlZ2FjeS10cnVuaworMzk1MzEgZjIzNWU4ZWYwZDU2OTA0ZmUyMDRhZGFiYTczNzVkZDcyNzJhNjJmYyByZWxlYXNlMjQtbWFpbnQKKzM5NTMyIDA3ZWFmNjBmNzU2NTBiMTcwZjM1ZDM5YjkzYWU1ZjFkYTI5YWRiZTAgbGVnYWN5LXRydW5rCiszOTUzMyBiOGQxYjQ1MjkyMDcxMTYzMzY4YjU3Y2NlNzFiNDBjM2UzNzkzMGUxIHJlbGVhc2UyNC1tYWludAorMzk1MzQgYWM4ODA0NGNkZTQ4NmIwMGEzZTQ3OGQ3Nzg1YjdmZDdhZDMyYmRmOCBsZWdhY3ktdHJ1bmsKKzM5NTM1IGRmYWJmMGM3ZjFhZGZkMTdjNDUyNmNmMmJkOWNhM2RjYjgwMmZiODcgcmVsZWFzZTI0LW1haW50CiszOTUzNiBjODY1NTg4NWU0MDY1ZDM1NTMzODM0OTA5MDkxM2Y4NWNhZmZkZjM1IHJlbGVhc2UyNC1tYWludAorMzk1MzcgNmRiZmJlZTU4NWNjODNmZTMzMjMyNjQ2YzZkNzhhOGNhODRiYjViZSByZWxlYXNlMjQtbWFpbnQKKzM5NTM4IDE1MmFlNzE5M2M5YTc3ZWEyYmEwYzg3YzRjNzQ3NjBkODBiZTYwNTkgcmVsZWFzZTI0LW1haW50CiszOTUzOSBmYTA4ODFmZDQ5YjdhOTUwNWUxNzY5NjVjZmE3YTdjODY0NzA0OTI2IGxlZ2FjeS10cnVuaworMzk1NDAgOGJhZDFiZmMzMzE5OTJjOGUxZjM0OWVkNTJiYTllMTY0NWY5OWIxMSByZWxlYXNlMjQtbWFpbnQKKzM5NTQxIDI2OTFjYmRhZTU5YmYzNTYxN2YxYTMzNjgwNTA2M2VkZmFmNGMyN2YgcmVsZWFzZTI0LW1haW50CiszOTU0MiA5MDkzMGQyZDBjMTkxMDc2YTJhMDI3ZDU5ZGQ3ZjI3ZWYzMzQ5NWJmIGxlZ2FjeS10cnVuaworMzk1NDMgMzVjNDM2NzQwODNhOWEzNDEzM2U3YTBmYTI0ZjMxMjI3NDQxYjFkMyByZWxlYXNlMjQtbWFpbnQKKzM5NTQ0IDFiMjVmZTg4MzRhZWZkN2VjYmVjZGI5MDAzYzQyNjg0OTdiNTlhYmMgbGVnYWN5LXRydW5rCiszOTU0NSBmZDUxY2U4ZDM1YWI0ZmQ0MmFmNWVmZjYxZDAyZGNjMjcwYjQ0M2MxIHJlbGVhc2UyNC1tYWludAorMzk1NDYgY2QzMTAyN2E3MTY3YTM3NTQ4ZjI4NTY3OWM1Yzk2N2EwYmJlYWM2ZSBsZWdhY3ktdHJ1bmsKKzM5NTQ3IGQzYWU3OTMwY2I5Mzk1MzNmY2ZmZDQ0ZDE2OTVkOTM2MmVkMGE0YzcgcmVsZWFzZTI0LW1haW50CiszOTU0OCA3M2ZlMjE2M2YwYjMwZDMzYTAyNmM4YmE2ZDI1MjkwZWE1MjU5MDYyIHJlbGVhc2UyNC1tYWludAorMzk1NDkgNWE2YzQ4M2VkNjg5ZjQxMDU4Nzg0Mjg4MjA3ZWI5OTBkYTMxMDQ2YyByZWxlYXNlMjQtbWFpbnQKKzM5NTUwIGMyOGQwZWQ4NmZmMDU4Yjk4MTAwZTZiNzcxMzA0ZDQyZDExNTE2OTggbGVnYWN5LXRydW5rCiszOTU1MSA4ZWY1MDBjNDUwNmM3MmI3NGJmOWZhMDUwMGE5NTlmZGQzZDUwZmY1IGxlZ2FjeS10cnVuaworMzk1NTIgZjRjMmM2MWNiNTYwOTU5NTI5OTQxMjcyZTE4MGRlNDYzMjYxZTI1YyByZWxlYXNlMjQtbWFpbnQKKzM5NTUzIDM3ODU5YzZhZDViYjVmN2ViYWQxOWExNjlkOThkZWE0MjZjMTIxNTIgbGVnYWN5LXRydW5rCiszOTU1NCA1MmM2NWQ3M2ZiNzQwMTlmNmY5YWI1NDdjMGZiMTg1MTA5YjJiMGJmIGxlZ2FjeS10cnVuaworMzk1NTUgMDk4ZWExZTE4ZThkOTc2MDRkOGY2ZjE4ZDBhZjlkYTFhOGEzNWI5MCByZWxlYXNlMjQtbWFpbnQKKzM5NTU2IDBhZTMwNzIxMjc1NTBhZTI0Yjc0MmYxYjMyYmNkMWM0MTUyYjEyZmIgcmVsZWFzZTI0LW1haW50CiszOTU1NyAwZGEzOTc1ZmIwYmJmY2Y3ODJkOGMwZjY3ZTY1ZTUwMmIxMDZhNzQ3IHJlbGVhc2UyNC1tYWludAorMzk1NTggZTYxMTlkNTc3Y2QzNWZkOGQ1Mzg1ZTUwY2MxZmRhYmU0Y2JlNDc5NSBsZWdhY3ktdHJ1bmsKKzM5NTU5IDAyYThjMDY0M2Y1YmNlMjY2YmVhYjc1MGFiOTFjNzAzNmVmNzgxN2MgbGVnYWN5LXRydW5rCiszOTU2MCAxY2YxNzAzN2EyY2E4Yzc1ODE3N2NiN2RhYTE0MWEwMzhhNDYxODIzIHJlbGVhc2UyNC1tYWludAorMzk1NjEgNWYyNzg1NzIyY2JhZDAzOTQxYTIxNjc3MTY3Yzc5NmY3M2YzZmVhMiBsZWdhY3ktdHJ1bmsKKzM5NTYyIDQ4MDZjYjAwOWE5Y2U2MjNjZWY4YzFhMTFhYTk4MDEzZDM0MWE2MDIgcmVsZWFzZTI0LW1haW50CiszOTU2MyA5YTJlMjAzMThjOWY1ZmJkYjc4YTkxOTQ0YWYwODhkOWVmY2NkM2FkIHJlbGVhc2UyNC1tYWludAorMzk1NjQgNjIwOTkyYWEwYTllZjU4M2QzNmJmOTNjNGMxMTljZGMyODJlYTA5NyBsZWdhY3ktdHJ1bmsKKzM5NTY1IGI2OGIxMzViNDU1MjYxZDI4Mjk5NzA3YzY2ZTUzMGNmOTA4NzQ5ZDYgcmVsZWFzZTI0LW1haW50CiszOTU2NiBiY2QwNWNmMmQ2MWJhODBjZTliNTc0YjkzODdhMmRiMzI1NTNmNmU3IGxlZ2FjeS10cnVuaworMzk1NjcgOGNjYWQ3MzIzMTVmODkyZGI1M2IzZGI1MTlkNzdlOGQwMDRlNGFjZiBsZWdhY3ktdHJ1bmsKKzM5NTY4IGFmZGFkZDU2OTE5NzA1YzFlMTkxOTUxZjJiZDRjYjU0YTNiNzA3MTcgcmVsZWFzZTI0LW1haW50CiszOTU2OSA1YzBjMDZlMjI2ZWMwNmVhNjRmNGE5MDZkMzY5MWU2MDcwODA4YTdiIGxlZ2FjeS10cnVuaworMzk1NzAgNDBkZGYzNjZmNWExNTJmNmJkMjBlOTgyMDkyMTkyOWJkOTJjZjM0MSBsZWdhY3ktdHJ1bmsKKzM5NTcxIDliOTk0YzY3ZTkwOWMwODZmMDI2MTcxMWI5OWI2NGE3NzRiOTEwMWYgbGVnYWN5LXRydW5rCiszOTU3MiA4NzNhMWIyZWZkYzczNjU3NmRhMDQ4NDgxNGNmNjU2MDg5YzAxY2VkIGxlZ2FjeS10cnVuaworMzk1NzMgMmMyODBlNDY2MWQwYTA2OTQ0NGNhMjEwMTRiNWE0YWQ1NjZmZjdiYSByZWxlYXNlMjQtbWFpbnQKKzM5NTc0IDM5ZWI2YTIyMWNmMzEyNDIyMWExNGIzOGU2M2Q0OTkxY2YwY2Q4ZmIgcmVsZWFzZTI0LW1haW50CiszOTU3NSAyMWJjNjI2MmViOTkyMGFjOGMyZTU3ZWExZTNmMGJmYzdkZTZhMGE4IHJlbGVhc2UyNC1tYWludAorMzk1NzYgODljZjJlM2ZlNzI4YTY4ZjRiYzY2ZmNhOWMwYWY3OWUwZTA4NWE5YSBsZWdhY3ktdHJ1bmsKKzM5NTc3IGY4NmNkMjc3ODZhYjMxOWI3MzY1NTEwYjU2MDUwM2Y2NjVhMGZhYTYgcmVsZWFzZTI0LW1haW50CiszOTU3OCA3NzU3MWY3MWIzZTY3YjBiZjNmNWQ4OWE0NjNjYmUzMDUwMmI5MzBhIHJlbGVhc2UyNC1tYWludAorMzk1NzkgNWE4YmY4ZTdkMDEwMmMwZTBiMWVmZGQ4MWFkMDBiNzIwNzFmMjFiZSBsZWdhY3ktdHJ1bmsKKzM5NTgwIGE2NzBhNWRkMWZjNmFhOTE3YmI2MmFkNDU2MDRjM2ZjYjY4M2Y0OWEgbGVnYWN5LXRydW5rCiszOTU4MSAyM2RkYTkyZGU5OTM4YTI4ZmY1NTVlYzgxMzhmOTQ0NjBiMzEyMDUxIGxlZ2FjeS10cnVuaworMzk1ODIgMWYyMzZlNTk4YWU5NzYzMWQ0ZGI0NDcyMzAyNTAwZmYzMzg0MWMzYiBsZWdhY3ktdHJ1bmsKKzM5NTgzIGFmM2EwNjYyNWE2ZTU5YzJkYmY5MmI0MGVhYmI3NGJjMmQ0NTY4MWIgbGVnYWN5LXRydW5rCiszOTU4NCAzNWE5OWVjY2FjYTY3OTMyNmY1ZTVjOTkwYjNiOWY2YTY5NGNmOWJkIGxlZ2FjeS10cnVuaworMzk1ODUgZWNiNzg4NjNhNGVlN2YzMTQzMmI3OWZjYzE0MzYxNDljMDU1MGRjMSByZWxlYXNlMjQtbWFpbnQKKzM5NTg2IDdiMmI4ZGI5ODEzNjMzNTA3Y2U1OTY1ZGYzODdkMjQ1NWI3ZTA0YjIgcmVsZWFzZTI0LW1haW50CiszOTU4NyBjNmQ3ZjFmZTlkMWViZTkxYTZhYmI4ZjMyNWUwYjhjZTU5MjBkOGZmIGxlZ2FjeS10cnVuaworMzk1ODggOTBiYjcxMTIyMjU3YzExMjNjZWM4OWI1NTA5YjdiOTI4MWVmY2Y0NiByZWxlYXNlMjQtbWFpbnQKKzM5NTg5IDRkMWJkOWQwYzAwNmRiNjYzZWNlNTc5YzhhMjQwZWU2YmEzN2IwNzMgcmVsZWFzZTI0LW1haW50CiszOTU4OSBkMDJkMzg3NTU0ZTIwMGJlZmNlZWM5OTliNzg4ZjQ1OTNiNDM0YjQ5IHJlbGVhc2UyNC1tYWludAorMzk1OTEgNzA5MjdjNzk5YTIxZTI2YjNiNWNkMGY2ZmMxMDVjYmFmOTcxY2RmNCBsZWdhY3ktdHJ1bmsKKzM5NTkyIDhmZmVlZGI2MDZkMzMwY2RkM2E0ZDE2YmE2NzZhMWE2ZWEzMGI0Y2MgcmVsZWFzZTI0LW1haW50CiszOTU5MyA2ZjNkMjA5NTU1ZWI1NWZmNDhmNTVhMWQ5NDVkNGVmZjBhYTIxZTQ4IGxlZ2FjeS10cnVuaworMzk1OTQgNzI2NjBjMDg2NmExOWYwMDM2ZTcyMDgxNzk4YmViYjhmNmUxZWYxYSBsZWdhY3ktdHJ1bmsKKzM5NTk1IDc3NGJmOWEzOGIyYWI5NDY2NmM1ZmI2NTRkYTRlMjRlMjRhNWNhMzYgbGVnYWN5LXRydW5rCiszOTU5NiAxN2E4MmJhNDU0NTJhYzFiNWExMmRlOWRkZDQzM2NmYTYzOWEzNzVkIHJlbGVhc2UyNC1tYWludAorMzk1OTcgMzk5YzQxMTc2YmI3OWEyZjI0ODVjOWQ0YTM4MDdhOGMyMDk1ZDRhNSByZWxlYXNlMjQtbWFpbnQKKzM5NTk4IGE5NTc2NWY2OTI4MjUxZDg2ZjBkMTM1N2ViNDY2NDFhYzQ4MzM5MTIgbGVnYWN5LXRydW5rCiszOTU5OSA0ZTBkMmE3ZjVmMTU0NDFiZGMxNTJmYjFlMGNhNGUwMGFmZmMwNWY3IHJlbGVhc2UyNC1tYWludAorMzk2MDAgNzc3YjI5ZDkxM2E2MjJhMmU5OWY4M2E3ZWVhMjNlYWZiMGY2NzA5YSByZWxlYXNlMjQtbWFpbnQKKzM5NjAxIDQ5NWU3ZmZhZDdlOGNjMDY0N2JmZTJkYzMwNGU5MGNjZGVmYTNmYzAgbGVnYWN5LXRydW5rCiszOTYwMiA2ODdmYWE5Y2Y2ZWIwOGMxNjJlZTM5MmY1NTA0ZjQ4OGJjMzI2NjMwIHJlbGVhc2UyNC1tYWludAorMzk2MDMgYzI2MGQzYjdkNTgyOTgzMDQwM2QxNWZiZDU0YTc0NDg5NjA0OGM4OSByZWxlYXNlMjQtbWFpbnQKKzM5NjA0IDAzY2ZkY2JjNGQxZjNhMzUzZGMzODUwN2ZhNDBjMmZmNzNkMmEwYTEgbGVnYWN5LXRydW5rCiszOTYwNSA0NWFhYTQzNmI5NDUxMjYwNjMxMjQyMjBiYmQ1MThlYzg4ODM3Y2JkIGxlZ2FjeS10cnVuaworMzk2MDYgMzAyOGUzMGFhODM1NTkwMzVjZWYyNzJiNDdkYmIwYjdkYmIwNzEwMCByZWxlYXNlMjQtbWFpbnQKKzM5NjA3IDI3ZTE0MjZiN2YzMWQ2NDJlNDExNGEyZmJmNjEzZDhkZjY0ODRmMjQgbGVnYWN5LXRydW5rCiszOTYwOCBlMjIzMzRiMWRhNjdmYjI5MTZlNjg2ZDNjNGRmOWNlNjNiNWM5N2Y3IGxlZ2FjeS10cnVuaworMzk2MDkgN2RkNGU2Y2I5ZDI3NTI4M2VjNTgwYWI3MWNmYTNjNjE5ZTEwYWZlZCBsZWdhY3ktdHJ1bmsKKzM5NjEwIDY4ZGJjYmYwNTE2YzU3NjU4NjIwNzkzZTI4NDYzYTc4MjIwODk5NjUgcmVsZWFzZTI0LW1haW50CiszOTYxMSBlMzE1NjRjN2JkYmY3YTI2YjNkODMxYWU4MDhhY2ZhYzU2MTcxODYwIGxlZ2FjeS10cnVuaworMzk2MTIgMWU3Yjc1NTE5NGE0ZGRiNzQ5NWU0MDgxY2VhNjc3YTlmNTEzMTQzNiBsZWdhY3ktdHJ1bmsKKzM5NjEzIDQwN2FjNDk5YTVhMzkxZjY2MGU0Y2Q2NWEzZGUzZTlmMTkyYTI1OTIgbGVnYWN5LXRydW5rCiszOTYxNCBlMGE5ZjY2YjcwMTQ2NzE2YjZjMTc0ZWZmZTE2NDM4ZGZkYTllNDcyIHJlbGVhc2UyNC1tYWludAorMzk2MTUgYWU1MzZlNjZlODZmNWYwMWMxOGNkNDI1ZTAyZGZmNjdkZjc3MWMzMSByZWxlYXNlMjQtbWFpbnQKKzM5NjE2IGI2NDYzOWNlYTNlZDg3ZmZmNGVjMGU0YTkyYjZlNDMxNWJiYjdjY2QgbGVnYWN5LXRydW5rCiszOTYxNyBmNWJkN2VhZDE2YzQ3MjM3MWQ1NWFhMTlhZTI0MDM2OGQ5ZWQxZjZkIHJlbGVhc2UyNC1tYWludAorMzk2MTggNGFlN2RhYWYwYTY2MTE4ODQ0OWFiODNkZmE5YTM3NmNkYWQ5OGE4MSByZWxlYXNlMjQtbWFpbnQKKzM5NjE4IDhkMzcyNzZmZGYwNzdkNmQyM2Q5NjNkM2Y3Zjk1MzgxZDAwZjE5MjYgcmVsZWFzZTI0LW1haW50CiszOTYyMCA2YjQyZWViNTIxNGRhOGEwMzIyZDMxNjJlNTNmZWUzMTkyYjk3Y2M0IGxlZ2FjeS10cnVuaworMzk2MjEgOGYyYmYxODY3NGNiZTkzMjgyMGYzZTlkNDBkMmEyODNhMWRjOWJiYiByZWxlYXNlMjQtbWFpbnQKKzM5NjIyIGQzM2Y0ZmM4NGQ0YWYyYjE5ZTYzZjYwMzIzNWE5MTQ5NzhiZWNjOTIgbGVnYWN5LXRydW5rCiszOTYyMyBjMzc4M2ExMmExYmMxOWQzZDBlYjI4MTI0ODc3ZTIxYmVjMjhhMzJhIHJlbGVhc2UyNC1tYWludAorMzk2MjQgY2E4NDQ1MTdjODQ5NTJjNDU2NDMwYmQ1NWI2MDRiMDM3MGZlZjU3NCBhc3QtYnJhbmNoCiszOTYyNSA2YTIwODMxZDM1N2Q1N2NkNjI0YmFiOTBkZTM3MzNlNTFlYjUxMzEzIGxlZ2FjeS10cnVuaworMzk2MjYgOWVmMjVjODlkMGQ2YzMwNjljZDgwYWI5NTk3YzBhMjcwMGUxNjE1NyByZWxlYXNlMjQtbWFpbnQKKzM5NjI3IGI1YTAxMjgyZGFkYWZjOTljY2E0ZWE2MTEyMzQ0MDUzZGI4Njc4MWEgbGVnYWN5LXRydW5rCiszOTYyOCA4ZWI3NWMyOGVkOTQxYzQzMmY1ZDEzZGMxNTBmYzM3Y2RiNTYxMDgyIHJlbGVhc2UyNC1tYWludAorMzk2MjkgYTJjZjI1NjQyYzhlY2RmOTZhODg2ZjQyM2ZkODYyYWI3MzUxYjhlZSBsZWdhY3ktdHJ1bmsKKzM5NjMwIGNiYTEwYzZkMzRlMzg1OTNlNjZkNmE5NjhkNTFlMGI4N2JlMDEwYjggcmVsZWFzZTI0LW1haW50CiszOTYzMSBhODNlOGRmMTM0OTg2MmFmMzE4NGE2MjE5ZGU1NDdlZmE3ZmVmN2YwIGxlZ2FjeS10cnVuaworMzk2MzIgMWQ0ZDg1YzczNWU3YzRmOGExOWU2MGVkYTYyYmNiNTExNGZkMmM2NyByZWxlYXNlMjQtbWFpbnQKKzM5NjMzIDZkMDRjYjJjZGQ0YWZjY2FmNTg4YzRlYWU0YWFkMTI0ZTViZmU5OWYgcmVsZWFzZTI0LW1haW50CiszOTYzNCA4NTY1MWViM2Q5YTkwZDEyMWEwZjQyYTViMDRiNzQxMmYxNTM2ZTBkIGxlZ2FjeS10cnVuaworMzk2MzUgNjc4NDhjODcxNzY4YjU1OWMzZjIzNGE5NGY5NmJiNGZmYzJkODdkNiByZWxlYXNlMjQtbWFpbnQKKzM5NjM2IDU2MTFkYjQ1MWEzOWJhMmVmN2I4YTUwYmMyYWEyNDU4NjBjYmI1ZWYgbGVnYWN5LXRydW5rCiszOTYzNyAwYmUwMDc3NWE4MGM0NTFjMDUxNjAxYTljNDA1ZDc2NGFmZjNjNDMxIHJlbGVhc2UyNC1tYWludAorMzk2MzggZGM1ZDcwNjI4M2Q2MmZlYmM0NTg3YWJkOWI5YzI5MmJlMjIwMmYzYyBsZWdhY3ktdHJ1bmsKKzM5NjM5IGI4ZTU3MWU2ZGUyZTNlNTc2N2ViMGVhYmQ2NTBhMmI5NjU0ZTdlNjIgbGVnYWN5LXRydW5rCiszOTY0MCBlNDU0ZDZjMWIzYzFmM2ZjM2MzMTcwMGI4NzBiYWMzNDNjNGU3YjFkIGFzdC1icmFuY2gKKzM5NjQxIDYzMGZmNTQ0MGRmYzZlOTQzY2Q0MzEzNWM2ZTg1YjdkOTY5MjQ3NzcgYXN0LWJyYW5jaAorMzk2NDIgNzUzNDU3ODc5NDI1NTkwYTQxMzU5NjA4ODAzMmExZDhiZjVmMGMxMSBhc3QtYnJhbmNoCiszOTY0MyA2YzNkMGEwYzE5NTYwMDg3YjU0MzUzZDI1NDZkYWU0MWVjOGNiZDhjIHJlbGVhc2UyNC1tYWludAorMzk2NDQgODQ1NDE3MzFiMTY2YTZjNDU1M2FhOGNmYmM5ZGY3OTdmMDFmOTcyOCBsZWdhY3ktdHJ1bmsKKzM5NjQ1IGY2YTIwOWI2OTUwY2FiNzNhYTAyMmI5OWI1N2IyNTJjY2JmYTk1ZjggbGVnYWN5LXRydW5rCiszOTY0NiBjZWVkMzNlYWM0MzYxNjgxMmEyNjcxZWVhNjVkODNlYWY4Zjk3ZjQ2IGxlZ2FjeS10cnVuaworMzk2NDcgNWQ1MjM2ZWFlOGJkM2Q2MGRmODAzOGNmNTk3ZTA2MDYzNDQxNWQ0YiBsZWdhY3ktdHJ1bmsKKzM5NjQ4IDQxMmQyMWUzMGMxMzBlMjI3NmI5ODQ3MDg5YTYxNzU0OGZlODdjZTMgcmVsZWFzZTI0LW1haW50CiszOTY0OSA2MTJhMTIxNzhlNDdiNzA4NGM2ZTEwM2Q1MDk1ZTBmMWVmNDY5MTJkIGxlZ2FjeS10cnVuaworMzk2NTAgZDE0ODEzZTc4YTUwMGZiMmI5MWFjNTRjZTVjYTFkNGQzMTkwM2Q2NyByZWxlYXNlMjQtbWFpbnQKKzM5NjUxIDlkNDMzODFjMTg0Y2JiYmM3ZGFjYzJhMjZlZDVlMDA4NWE0MDlhOWEgcmVsZWFzZTI0LW1haW50CiszOTY1MiBlMWRmNDhmMjg0N2FkOGU4ZGRmNjAyYjdmMjk0MDlhNjhlYzlhZjliIHJlbGVhc2UyNC1tYWludAorMzk2NTMgZTliYWUyZmViYWM4MDBlMDNiY2JjZWI3YjRlNDhhYWEzZDA5NzI1MCBsZWdhY3ktdHJ1bmsKKzM5NjU0IGYwOTUxZmRhZWQzN2MwYWYzMzg1OGRhMGE3ZmQ0MDZlYjE0NmFkNDQgbGVnYWN5LXRydW5rCiszOTY1NSAxNzJmY2Q5YzE5NTI2MTVjODFmZDBjYTgxZDhlMTBlNTU1MDZmY2Q1IHJlbGVhc2UyNC1tYWludAorMzk2NTYgOGJkZDhjMmM2YzQ5NWY4YTZmNThhNDFmZDU0YTZkNjMyMTZkNDlhNyBsZWdhY3ktdHJ1bmsKKzM5NjU3IDNlMGJiN2Y3NWFiNzY1YTljOGE1N2I5MDExYjgyMTlhN2Y2MTVjMDkgcmVsZWFzZTI0LW1haW50CiszOTY1OCBlNDY2YzBhNTUwYjg4Y2I4N2JhNDJhNTFiYjM3YmVjZGUyODdiMTk2IGxlZ2FjeS10cnVuaworMzk2NTkgMDJmZTVkNDk2ZmNlOTkyNDZjNjNiNTIzMGEyNzJmMmRkZGJmYjRlZSByZWxlYXNlMjQtbWFpbnQKKzM5NjYwIDY5MDdlNDcxYmRhY2U0MDBkMjMwYTA5NGM2ZjYzMDY3NmU0YTI0ZTcgbGVnYWN5LXRydW5rCiszOTY2MSAzYmU4MzUzNTAwODI4NjJiNWFlNjg4M2RlYjQwMGYyZGNjM2UwZWJhIGxlZ2FjeS10cnVuaworMzk2NjIgZjk4NzkyMzc4OTU0MTdiN2RkODUyODExOWJjZjQ4NjdkOGE4NWU1OCBsZWdhY3ktdHJ1bmsKKzM5NjYzIDI5ODVlNDJlYjJkMmIwOTFjYWQxOGE2MmYzZGZlYmI0Yjk5NWY0NzQgcmVsZWFzZTI0LW1haW50CiszOTY2NCAzMzBjMjMwNzUwNTQxOTEwNmY3MTY3MzZlMDEyMzE1MDBmZjFiYzJjIGxlZ2FjeS10cnVuaworMzk2NjUgMmZkYTdiMTc0Nzk0ZDljMDA3OGU5YjY1NzVmZTA4ZmQ0MWZjOTlkNCByZWxlYXNlMjQtbWFpbnQKKzM5NjY2IDU0OGJhZDIxNTQyOWYzOWFmOTM3MzdlYTE5NWI5NWRkYTAyYTgyYjMgbGVnYWN5LXRydW5rCiszOTY2NyBlMjk5NTU2MzYxMGY3MTc5NGVlZGM1ZjlhYmNhZDAyMWNlMDhiOGI1IGxlZ2FjeS10cnVuaworMzk2NjggN2E3ZTg3OWIyYWExYjJlMDU5MWViNTQ0Zjk4YTRjNmI4ZWZmZmJmYiBJRExFLXN5bnRheC1icmFuY2gKKzM5NjcwIGI2MWNkZDRmODg4YmY5ZjYxMjhmMzY2MjI1MTM1OGYxMTEzMGRiMTQgbGVnYWN5LXRydW5rCiszOTY3MSAwOGE1NTFlNzU2MWNjMmI0NjNkYzc3MjVhZmEyOGJkMmZlYjM4NGQzIGxlZ2FjeS10cnVuaworMzk2NzIgOTVjMGRkMTFhZmE3OGQyYTVmZTE4YzY0MjU2NGJjYWI3NDRmMTU0NiBsZWdhY3ktdHJ1bmsKKzM5NjczIDU4NmI0OGUzY2I5OGEwMzNhM2Q3MzExMjBhYmIwMTZlZjgwYTQ2MWMgcmVsZWFzZTI0LW1haW50CiszOTY3NCA5MjFhZmQwOGE1ZGNiZDQyMDEyOTg3ZThiMmI3Y2RlMzlmMGQ4MTkyIHJlbGVhc2UyNC1tYWludAorMzk2NzUgZDBhZjdiMDk4YTk5ZDYyZWViMmU2N2Y2MTczYmMyODcwNmIwOWM0YiBsZWdhY3ktdHJ1bmsKKzM5Njc2IDkyMzcyM2E5YzQzY2I5NmU4MTg1MzJlMDMyYTE5NTcwZjUxNWNiY2UgbGVnYWN5LXRydW5rCiszOTY3NyAzNTcyMjQ5YzFlNzcxMDI5NDI4OGQxY2Q1OTk2MzIzMzM2ZTRhMTczIGxlZ2FjeS10cnVuaworMzk2NzggZDQzZGZlNjk1ZDA4YTRhNzQzYjZkZTI1MTc3OWEyMzQ4YTk0Nzk3ZCByZWxlYXNlMjQtbWFpbnQKKzM5Njc5IGUxNmI2YmRmM2Y4OTlhN2Y3NmI4MTczZGI1ZGI3OTNkOWU0YTRlM2QgbGVnYWN5LXRydW5rCiszOTY4MCAyMmE3MjBiMzUzMTRkMDEyOTlhZGFlYTZiMmZhMDUxMWEzYjMzMmMyIGxlZ2FjeS10cnVuaworMzk2ODEgZTc4ZTg0ZjFhODI0ODdmY2M0NTNlYzNlNDRkMWViY2ZjNWI4MjlhOSBhc3QtYnJhbmNoCiszOTY4MiA3NjYzNWFiN2I3MDc0ZDg1NjM1MWJiYjg3ZDM0ZGY5N2ZjMTllYjA4IGxlZ2FjeS10cnVuaworMzk2ODMgYTY0YmUxMzhmMGY2YzQ4MDYwZDY0M2RlODk0ZjkyODE0YmRlNTMwNSByZWxlYXNlMjQtbWFpbnQKKzM5Njg0IDZlMDRhNTU3YWUyMGNkNmVmYzJkY2I2ODE4YzdiMTQ3MDg4ZTBjZGIgYXN0LWJyYW5jaAorMzk2ODUgNGUzOTg4MzczNzNjOWFkNmUzNzUxZjU5ZDhhMzQ3NDA5MDU3MTcwYyBsZWdhY3ktdHJ1bmsKKzM5Njg2IGFhZTM3NDMwZjUyNTk2MzQ3N2EwYzVhYWMzYTEzYmZhNjBkNjM0YjQgYXN0LWJyYW5jaAorMzk2ODcgODU2N2ViMjNlNjVkZWI0ZjNiMTM2YmMxOTU3ZWQwZGIzYzkzYzYzMiBhc3QtYnJhbmNoCiszOTY4OCAwZTY5MDc4Y2FkOTAwZmQzN2EyNTUzYjdlODdiMDliMzNhZGE0MDgxIHJlbGVhc2UyNC1tYWludAorMzk2ODkgNTY4NWVjNTlmMzViODQxMzAyMWYxNDNkOGU4NDYzOTZkMWNmZTU2MCBsZWdhY3ktdHJ1bmsKKzM5NjkwIGFhYjFkNWZkZjY0ZGY2NTZlZGYzYTI1ZjM2M2UyZDEyNzg3NTIwMWYgbGVnYWN5LXRydW5rCiszOTY5MSA4ZTg2ZGJhZDhjNzE0ZTk4OGM4YTA5MjFiOGIxZjdmZTEzYWFhMWI4IGxlZ2FjeS10cnVuaworMzk2OTIgNTljNGE2NTY0MmM1NjdhZDgwYTM4YzU1NDdkNWFjMDI4NDc4NjlhOSBsZWdhY3ktdHJ1bmsKKzM5NjkzIDZlNzBlZDZkZmFkNjc1Nzk3MDliMjIxOTdiN2UwOTkxMGU2ZjZhNGQgSURMRS1zeW50YXgtYnJhbmNoCiszOTY5NCBlOWUzMGQ5Mjg3MWU5YTI3YWEzYTY3NDQ1MDJhYWY3MmY2YWMwODg5IGFzdC1icmFuY2gKKzM5Njk1IDdiMzVjMjkwNDBjOTkyZmFiZTk0MjRlMzQ3ZWRmZGZjZWMzMWUxNjcgbGVnYWN5LXRydW5rCiszOTY5NiA3YjdlYjNlNzYyMGRmOTEwMDE4OGIzYjljYTMxOGE2NjIzMDUxMzQ2IHJlbGVhc2UyNC1tYWludAorMzk2OTcgNzJmZWJlZTU4ZTdiOWUzNjgwODA1YWI2YjE5YTQzZGUyY2UyMzJhMyBsZWdhY3ktdHJ1bmsKKzM5Njk4IGMzOGU0ZWM3YjdmMTFkNTZlM2NjYTM0MzZjNjJjMDU0YTkwYWYwYWYgcmVsZWFzZTI0LW1haW50CiszOTY5OSA3ZTc5ODliNmFjMzZjNGI5MTU1OTdhOGJjZWFmNDNmMGQzYzBhMDNhIGxlZ2FjeS10cnVuaworMzk3MDAgNWE2MjY4NmY3ZGZkZjY0ZWI2YzEzZWYzM2VhMmRiZTM1ZWZmZjdhNCByZWxlYXNlMjQtbWFpbnQKKzM5NzAxIDMwN2I3ZWVlM2UzZDkyMjA3M2E2NmM3YmU0OGM5ZThlYzNlYTE1YWYgYXN0LWJyYW5jaAorMzk3MDIgZDk0N2ZiZWMzNWQzZjA0ZjE0OGRlNGYwYWY0ZmY4MjZmOTA1YmIzYSByZWxlYXNlMjQtbWFpbnQKKzM5NzAzIDcyNTk1YTYxNTU3MWI0MDY3MWU5MzNkMjMzMWU3MmM2YzE3MmZiNDEgbGVnYWN5LXRydW5rCiszOTcwNCBjM2Q2NGJjN2Y2OTYyMjg2ZDRhNDBiMDhjNzUzNDNiZjM1Nzc0NGYyIGFzdC1icmFuY2gKKzM5NzA1IDU3ZjYyZTVhMzkyMTY2NjAwZTRjMDc2YjYwNWY3ODk5ZTZhYzFiMmYgYXN0LWJyYW5jaAorMzk3MDYgYzdhN2UzZDFiZmE3MGE0MjA4ZGQwOTc4MWJjNTkxYTcwOTA3MzI2NSBhc3QtYnJhbmNoCiszOTcwNyBhYzdmNTQwNzI0NmY0MGZkM2ZhZDQ4ZDUwNjllZjU5MTZhYmE1ZTYzIGFzdC1icmFuY2gKKzM5NzA4IGVmN2NkZGViMzI3Y2M4YzRjZDcwNTU1ZDQ1MDE0ZWNkM2I3ZTMzNzkgYXN0LWJyYW5jaAorMzk3MDkgYjEwODFjNDk1ZDQ2NzMzYmJmYTdkMmJjYTNiMTMyMDgwZGRhNDdkZCBhc3QtYnJhbmNoCiszOTcxMCAxNzQ1YzJlZGM1MTRkOTIzMmNlNTRmOTUxZTk3NDI4ZDBlZWFmYWZhIGxlZ2FjeS10cnVuaworMzk3MTEgYTQ0MjliNzc4N2Q0NGU1YjliMmY4NjEyNTFlMjBkMWM2ZWVjZmVkZCByZWxlYXNlMjQtbWFpbnQKKzM5NzEyIDIzNDJjZGI5MjY5NTZiMmQ4ZDhkZjMwNTNjNTc1ZjBlNmM0MWZlYjggYXN0LWJyYW5jaAorMzk3MTMgZWNlNWViNmYyYjVhMzNkZDI4YTkxNjVkZjJiMTE1NjRkYmM2NGZlMiBhc3QtYnJhbmNoCiszOTcxNCAzYmQ3NDgyNGEzYWNkMGExZTQwNmI1MzlkY2JmYmRhMzdiMDZlZDQ5IGFzdC1icmFuY2gKKzM5NzE1IGQyMDQ0ZTVhMDZjN2U2MzhhMmNhM2FiNzBmN2QwMjUxZTliMzRiYzIgYXN0LWJyYW5jaAorMzk3MTYgYTRiZWM3YjZiNjQwNWIzZWFhYzI4ZTQ1ZjIxNWU4NGRjOTJhNTFjMyBhc3QtYnJhbmNoCiszOTcxNyAzMGU4OGExNzVmZGM5MGM3OTc1MThkNjlkYzljM2ViZjY3ZDQ2OTk0IGFzdC1icmFuY2gKKzM5NzE4IDUyNWRhYzBkMjg1YmYyZTI0ODgwMGM1MjNkZWNiZDJkMGQ2MDZhN2UgSURMRS1zeW50YXgtYnJhbmNoCiszOTcxOSA3NmI5MWFjYWQ1ZTg4Y2NmNzI0YzRhZjE0NGUzNmU0OGIxYWNlMDM3IGFzdC1icmFuY2gKKzM5NzIwIGJjN2Y2ZGVhYjM0MGFlNzU3Mzg0NjJlZTdjYmFkZGFmOTRlOWJlZmQgYXN0LWJyYW5jaAorMzk3MjEgZGQyOTI2MWNiNDM4MjBlYmQ5YmU4NjBjNWE0ZTc1MzI4YmNjY2U3OCBhc3QtYnJhbmNoCiszOTcyMiA5ZWI0NDFhNzA3MjQ2YmRhMWU3YWYxZGIzODEwMWVhNjE5MzBmMTVmIGFzdC1icmFuY2gKKzM5NzIzIGNkYTg3MzU3MTg1ZmI5M2NmMGE3OTMwY2NjOGMxNzFmM2IyZDdkOTUgbGVnYWN5LXRydW5rCiszOTcyNSA1NjY5MzA3YzEzMWM1Mzg0NjY1NmFjZTlhNmYyOWMxYTE2OTk2OTRiIHJlbGVhc2UyNC1tYWludAorMzk3MjYgNDJkM2E0NDAwZDM4NjZjYTg2NDVjMGZkZDY0NjNlMjNkOGVmN2QxYSBhc3QtYnJhbmNoCiszOTcyNyAyMTYxMWZmNTU4YTUwMjM4M2I1NjllYmFiOTI0ZGI1YzlhNTBmNDczIGFzdC1icmFuY2gKKzM5NzI4IGFlNTM5YWY0YWZjNTAxZDQzOTZkMTJlZjYwY2I0NDM5YjQ0ZGQwMDQgbGVnYWN5LXRydW5rCiszOTcyOSA2MGRmZTJmNTVjMGY1M2ZjNjQ5MTY4YTc1MWVkZjNmZjQ5OWIxODFhIHJlbGVhc2UyNC1tYWludAorMzk3MzAgNjY3OTJhMmVmM2RiZDA0M2NhNGU5NmQzNzQxYjQ3YWM2NGY0Mzk0NSBhc3QtYnJhbmNoCiszOTczMSAwNmFkNjM0NTY0OWZkZGI2YTQ4YWFiNjI3YzhkZGIwNWNhOTllNzJjIGFzdC1icmFuY2gKKzM5NzMyIGQ3ZjQwNzA5ZTE1ODU0MGRhZmE3NTYxODA5MTNiNGVlNWY0OTJlZjEgYXN0LWJyYW5jaAorMzk3MzMgYmI1YmE1NDM1OWU1YmNkMzgyZjk5ODk3MjAwNzRhNTBiYTRkMTQyMyBhc3QtYnJhbmNoCiszOTczNCA0OTZlYjVkZWQ1ZTQ1YjNlYzgyNGQzMzJmMjRkZjk0ZWNjMDlkOWY5IGFzdC1icmFuY2gKKzM5NzM1IGM5ZmE4NWI0MDUzYjc1Yjc5MjQ5NDY4OGNiNTM2MzljNjI2NTgzZmEgbGVnYWN5LXRydW5rCiszOTczNiBlYjJjMDlkODc4NzAxODNmNzlmNzQ0OWViNjRjMzNlZDZjOGIwZDg2IGxlZ2FjeS10cnVuaworMzk3MzcgZmUxMDM3M2NmOGEyNzFkZGFiZDdkNTlmYjFiOGU0ZmZhMzM5MDlmZCBhc3QtYnJhbmNoCiszOTczOCA4M2YyNDVmNzI4MzJlMzkxZjhmZWE0YTJkNGQ3MDIzZGFhNjM5OGIyIGFzdC1icmFuY2gKKzM5NzM5IDUzNjU5MGMzMjMxMTg1MmEzM2ExODhmY2Q3MWVkNmRjYzhkNmM5YzIgbGVnYWN5LXRydW5rCiszOTc0MCA1NzQ3Y2VkMzU0MjRhNmYxMDY1YTIwOTcyZDIyMWViN2JiMTBjODA2IGFzdC1icmFuY2gKKzM5NzQxIGNiNWNjNDhiNWMyOTVhZjA4MmE5Nzc1MDQ3ZmU1ZmU0ZWM5N2UyYzcgYXN0LWJyYW5jaAorMzk3NDIgYmM3Y2ExNjMzNGJhYjU0YWQ4ODExYmIwMDU5ODcxZGU1OWRjY2RkOCBhc3QtYnJhbmNoCiszOTc0MyA5ZWQ0M2U2MzdhZTdiNWFlZDViMWFkYzhkY2Y5YjhmY2Y3YjExM2I3IGxlZ2FjeS10cnVuaworMzk3NDQgNjkxM2FiYjcwNDdhZWZmMThhODIwYjMzMzM4ZTEwNWRiOWFiYzZiMiBsZWdhY3ktdHJ1bmsKKzM5NzQ1IDhiZWMxMjBkYmIxNmE2Nzk0NGViM2RlZmI0YTY2MjM5NDNmZDkxMTQgbGVnYWN5LXRydW5rCiszOTc0NiAwYjgyNjhlMGQ3MGU3NzgyOTlhYTJmMmY5Yzg4NGM0NzhhYmExZjZlIHJlbGVhc2UyNC1tYWludAorMzk3NDcgNGYyODQzZGZhMjNjNzlhYzI3YThlYTYwMjM1YTgxNGUwZDJlODhkOCBsZWdhY3ktdHJ1bmsKKzM5NzQ4IGQxMjAxZmFlMDZhODUwMDczZTE1M2EzZTdjZWI1NjkxOGEwMzU1MmIgbGVnYWN5LXRydW5rCiszOTc0OSBkZmI4ZmMzNzdiNThlNjhkZTYwZDc4ZGEyOTdiMGU3NzQ0ZDEyZTk5IHJlbGVhc2UyNC1tYWludAorMzk3NTAgZWE2ODA4YmExNjM3YmMyNzg3YWZiZTNkMDJmNWU2ZDU5MjMzYWZmZCBsZWdhY3ktdHJ1bmsKKzM5NzUxIDdlZDg3MDUwZTE2OTc0NjZjMjIxNGQ1OGVkY2YzMGUzNWUyYWEyMjkgcmVsZWFzZTI0LW1haW50CiszOTc1MiA1MzkwZGRjNzdlYjg2NmRmZjM3MmQxYWVhMmQyYjUxYmU3NGIzMjlhIGxlZ2FjeS10cnVuaworMzk3NTMgZTAxOGZjZTE0ZjEwMDY1NDFlMTBiODQxMzE0OWNiMDkyMGQzOGRiZCBsZWdhY3ktdHJ1bmsKKzM5NzU1IGQwMzk5Mzc5ZDBjYjI2NGMzODIzMTMwMzBjMzQzMjc1ZTQzYWQ2Y2EgbGVnYWN5LXRydW5rCiszOTc1NiBiMzJhMzkwOTFhZWRjYjZiMDY5Y2YwY2RkZTZlOTMwNGNkYzAxY2Y3IHJlbGVhc2UyNC1tYWludAorMzk3NTcgMzcxNjA1MTgzMGMyY2M1YWIwZDVjMWM4MjI5ZTA1MDUxZDRkYzlmNyBsZWdhY3ktdHJ1bmsKKzM5NzU4IDFjNGQxOTJmMTU2OGRmOGNhZTJkMzUxNDFhNzI5MjQ3NTY0YTNjZmUgbGVnYWN5LXRydW5rCiszOTc1OSAwNWI3MTU4MjJiYTU5NmUyNzU1NTU1YzUxNWM4ZDM3MmMwODA0M2YwIGxlZ2FjeS10cnVuaworMzk3NjAgZTc4MTU0OTViYjI3OWIxOTJlYzE0ZGU1M2FjZDlhYTk5ZDNlNTg1YyBsZWdhY3ktdHJ1bmsKKzM5NzYxIDQwN2MzZGFjYmQ3YzMwNWZjNjc0MjMwMjg2YTI3YmFiMjM5ZTFkY2EgbGVnYWN5LXRydW5rCiszOTc2MiA3MThlOWRlMjJlYTcyNWUyNWI0MGZiNTc4NWJhZWRlMzBkYmVjMWI1IGxlZ2FjeS10cnVuaworMzk3NjMgZmRjYjU4Y2JmZjRkZjBkNmQwMjE3NmZlZTlkNWZkMjA4NDE2MDYxMiBsZWdhY3ktdHJ1bmsKKzM5NzY0IDI1YmEyZjMzMTNjOTFjYzRlNzlmNjc3M2JlYjJiNTc4OTRjMjZhNzQgbGVnYWN5LXRydW5rCiszOTc2NSAxNzgyOGEwMGE0NTQ0ZmEzZmI0MjA2NWJiNTFkNjBiZThmNTY1MTNmIGxlZ2FjeS10cnVuaworMzk3NjYgYTdhNDkzZGI2MjMxM2QwMzNiZGJjNGM2NWE4ODc3ZjM0Yjk1NmVkZCByZWxlYXNlMjQtbWFpbnQKKzM5NzY3IGU1NjE0NDcwNDgwOGQ3Y2U2YzMwNWMwYjRmMDUxNGUxZWJiZGJhNTEgbGVnYWN5LXRydW5rCiszOTc2OCA0NzQ5NmU3ZGJmMmZjZDMwNjBjNzkwMWExMjNmYzYxYjFjMjc2MmZlIGxlZ2FjeS10cnVuaworMzk3NjkgODFlYmQ2ZTE3N2EzZjhhOTA0MzU3ZDhjMDcwYTcwN2EzYjgzMDA0ZSBsZWdhY3ktdHJ1bmsKKzM5NzcwIDE0NDA5YjgyMDkzM2ZjNzdiZDVjYWI5YjExYTNhZWYyNWExNjU2N2UgbGVnYWN5LXRydW5rCiszOTc3MSBjMjhjMWEzN2I4NmFlMTgwMDgxOTYzMDk5MjY0Njg1YWRkNTRjODY1IGxlZ2FjeS10cnVuaworMzk3NzIgYjcyYjNlNTE3YTRkZTdhMjRkZTliMjMzZTdmNWM2NTliNTQ3NDBlNiBsZWdhY3ktdHJ1bmsKKzM5NzczIGViMTVjZGQ0YTJmMTAwMTc5MjA3NGNhMDc4OTAyNjk4OTQ1MmZmODIgbGVnYWN5LXRydW5rCiszOTc3NCBlMGUzMjBmMzZjOTM2M2Y2ZDVmOGJmYzQwNzNkZDZjNTI3OTQ0Zjk5IGxlZ2FjeS10cnVuaworMzk3NzUgZDkxZWQ3MTA3ZmQyZGEwM2QzNTZhY2JjNTI0M2E2OGQwYjUwNTg1MSBsZWdhY3ktdHJ1bmsKKzM5Nzc2IDc5YzViODE3ZmVkYzExNTc5MzBiOTBlMDFmMjNmYjk2MDZjYTM1Y2UgbGVnYWN5LXRydW5rCiszOTc3NyA3YTVhYzIwMzE1NGFhYTJkNzU3NWExYmQ5MjVkODg0M2Q3ZTZlMjAyIGxlZ2FjeS10cnVuaworMzk3NzggM2Y2MzM0MWQ5MzEyZjY5MjIxZDY2NzBkNWNmZTU5M2Q5NzE0N2FhOSBsZWdhY3ktdHJ1bmsKKzM5Nzc5IDUyOGUwMzg4MzlhMmFhZTdkM2RlYTJlNTdiOGY0NTRlNzZhOThlMDIgbGVnYWN5LXRydW5rCiszOTc4MCA0YWFmNTA2YTdkMDk5MmI4YzE1NGE1MGFiNTY0MzhkM2ZkZjJmMWU3IGxlZ2FjeS10cnVuaworMzk3ODEgZjM3NjIyMWJiYjc2YzFkMjcyZTQyMzg0MGMzNDhhMWM1YzIzZGJiOSBsZWdhY3ktdHJ1bmsKKzM5NzgyIDM0ZWY5ZjEzOGMzMDNiNzYyYWQ4NjgyYTBiYTQ4NTBiMDViOTMzNmUgbGVnYWN5LXRydW5rCiszOTc4MyA3ZWU2ODgwY2IxNmYyODUyZTA3ZjBkZjUxM2Q3MmQ0ZTJlMTc1ZWRhIGxlZ2FjeS10cnVuaworMzk3ODQgNTc2YjlhOWNlNTc5N2NmN2M2NzJhOTc0NTZkNjkyMWRhMTAyZGE5NCBsZWdhY3ktdHJ1bmsKKzM5Nzg1IDdkMDY1NDM1ZTg2YzFiODgyY2ZmYWIwY2Y0ZGM5MGNmODcyNzdmMzggbGVnYWN5LXRydW5rCiszOTc4NiA5YTdjMmQxZTU2ZGUzMWRhZWEyMGZhMzQ5YjIxZWQwMDQ5ZGVjZDI5IHJlbGVhc2UyNC1tYWludAorMzk3ODcgMDQ0ZDhlMGY2NWYyZmI5ZTM2MTE1N2FkMWIzODI1MzE3MWMyNWZkMyBsZWdhY3ktdHJ1bmsKKzM5Nzg4IGY2NGZiMjg0ZWQxNTRkNDg3Mjk1YTg5MGNhNWYyODI0ODIyMjQzZmMgbGVnYWN5LXRydW5rCiszOTc4OSAwYWVmMzUxMjIzZGFlZDk4NGMzODVkMjU4ZDZhNmVmOTVjZDc2NGJmIGxlZ2FjeS10cnVuaworMzk3OTAgNjZiOTA3NWQxNDJiOGVjNTNiNDZhMzRmZWQ5OGQ3NmE0N2MxNmEzYSBsZWdhY3ktdHJ1bmsKKzM5NzkxIDE0NGI1MjUzNTQzNGZkMzVlMThkNzk4MWM3MWQ4ZTYzYjJlMzkxNDkgbGVnYWN5LXRydW5rCiszOTc5MiA4OTNiZTk0Yzg4OTE4MmE5MDkxYjc5MjBhZGI0ZTNkMWQzNzcyNDdlIGxlZ2FjeS10cnVuaworMzk3OTMgZWZlNjA3MzBhMWVlYWI2ZDI2MjJhMGYyYTg1ZDY2ZmJkY2Y3ZjliNiBsZWdhY3ktdHJ1bmsKKzM5Nzk0IDk1ZDBhODU3YWU1MWZhMTVhNTllYzAxOWNlZjk4MDMzZjMyYmE3NTQgbGVnYWN5LXRydW5rCiszOTc5NSAxOWQ3OTZiZDc0MGY0YTA5NzQ5NjYyMWMyYTgzOTEwYTU3MmEwMDgwIGxlZ2FjeS10cnVuaworMzk3OTYgNzJjYjA0MWNjZGUzYWM3YmViMjk2ZDQ5YmZjMjAzYTVlNDNhZjdkMSBsZWdhY3ktdHJ1bmsKKzM5Nzk3IDMxZDM2ZGQ1OTU5Y2U5ZDllNjI0YmZhMjJhZTJkNTBkNmQyZWJhNTMgbGVnYWN5LXRydW5rCiszOTc5OCBhYWU0MTEzNTJmYmQ2YTRjMzBiOTc0NWE3MjNiZjc4NjhiYzBmYWQ1IGxlZ2FjeS10cnVuaworMzk3OTkgYjFhMGUxYTJiMjhmYWNiYmVlYTdiYjc5ODZkMDhkMDk1NDk1MzE3MSBsZWdhY3ktdHJ1bmsKKzM5ODAwIGM2ZGJmODhlNGIxNGI4NmQwMjE2ZjRjNzc1YzUyNDhlM2Y0M2Q1MTQgbGVnYWN5LXRydW5rCiszOTgwMSBkY2E3MGY0ZWM3N2I2NzQyOTQ4MDMwNjlmYWI1MGI3MWY3ODAwNzk0IGxlZ2FjeS10cnVuaworMzk4MDIgYTBiYjBmZDVlMTQzYTljODQ4NjkwMDhhMjE3NDA1ODQxMzg0M2IxMiBsZWdhY3ktdHJ1bmsKKzM5ODAzIDE2NjFlNzNjMDdhYmEzOTk5OThkODMwYjU3ODc5NzU0YmNiZjEwMjAgbGVnYWN5LXRydW5rCiszOTgwNCBkYjllMmRlYTRjMTEzZDZiZTlmYmM3MTgwYTBmOTgyYjg5Mjk1MDgyIHJlbGVhc2UyNC1tYWludAorMzk4MDUgMTlhMzdhOWY0ZWY5NGIyNmMxNjcwMjk0ZWRiNzc1MWViYmE5YmVhYiBsZWdhY3ktdHJ1bmsKKzM5ODA2IGY3YjBjYmVhOTA1YjViMzQ4ZDEwYjcyNzk1MmQyYWYzY2M5MGVlM2MgbGVnYWN5LXRydW5rCiszOTgwNyAxYWM5ZWQxYjVhMDNjMTkzNTNkNzZiYjdkODdkNGJiNGIxZmY5YjY3IGxlZ2FjeS10cnVuaworMzk4MDggYjhiMTNiMWZmZTc1NzFiNGFmNWY1YmM4Yjc5YWYxM2QwMjgyM2UyZSBsZWdhY3ktdHJ1bmsKKzM5ODA5IDkxNGVjMGFmYTUxYzIxNWIxMDg3OTg4YjIzYzkyNzdiNDU5YjM0NGQgbGVnYWN5LXRydW5rCiszOTgxMCAzOWYzNjMwYTcxMjRkOTBmN2I1NzlmNDk2MjQ2NjJiMzhmNTRjNzlhIGxlZ2FjeS10cnVuaworMzk4MTEgZGJjOTg4YmVhNTVkNmY2YzUxNDU2NTFkYjZjNTk3YmFkZGQ2YTgyMSBsZWdhY3ktdHJ1bmsKKzM5ODEyIGZkNjMwMDQyYWFkNDNkZWNmNTBhZjY0MjI0YjZhMDdkMTM0YzBiZTEgbGVnYWN5LXRydW5rCiszOTgxMyAzNzc4MDgzZmUyYzg2MmM0MGQ5M2VkMjNjNjcxMWIzNDIzMTZjMGVlIGxlZ2FjeS10cnVuaworMzk4MTQgODU3ZjY4ZmJhMjc1NDRkYWNhMzI4YjA5ZDNjY2RiNjdjM2E3MWUyZiBsZWdhY3ktdHJ1bmsKKzM5ODE1IDg0MmNhYTI0NTkxN2Q4ODVjZDljMzYwZjEwYzhkZDEzODAyNzg5YWQgbGVnYWN5LXRydW5rCiszOTgxNiA0YmY2NDU5YzhlM2JiOTY0MzMyNmQ1YWI5ZDYxNzI0Mzg3ZmI5MzRiIGxlZ2FjeS10cnVuaworMzk4MTcgZTE3YTMwN2IxMjE2OTQwOTA1ZGIzZjFjYzMzMjkwYTdkMDk2YmIwMiBsZWdhY3ktdHJ1bmsKKzM5ODE4IDhkYWVmZTg0OTk0OTM0ZGUzZTY1ODRmY2ZmMzA1MzhkMDVmMzFjOGYgbGVnYWN5LXRydW5rCis0MTMzOCAxOTMzMDVjOWRiZGIzNTQ5YWQ1OTYzZjVmODJkYTc0N2E2MmM1NTRhIGxlZ2FjeS10cnVuaworNDEzNDAgNzZhNmU5MDg2MjRkN2M1Y2RiN2U3N2Y3N2FiYzdmZTY0Y2Q2N2Q5NSBsZWdhY3ktdHJ1bmsKKzQxMzQxIDUyZjY1ODk4ODc0YTY4ODg1YjMyN2I3ZjdkODY0YzY5YzNkZjUyYzYgcmVsZWFzZTI0LW1haW50Cis0MTM0MiA0NGZlMTU3MjU1YmM0Y2Q4YTA1ZjdmMDYwMGM4ZmUyNzhmMmUwM2FjIGxlZ2FjeS10cnVuaworNDEzNDYgZGZiMTEzOWVkYzU1YTFiMGY3ZjI3MmVkNzczNWNmNTRhNDAwNDZkZiBsZWdhY3ktdHJ1bmsKKzQxMzQ3IGMyYTk4YmEzNzFjOGE5MGMwYmRjMWE0MmM3MjczOTkyMjg4Mjc5YWUgbGVnYWN5LXRydW5rCis0MTM1MiA4ODUyMzAxNzQxNGMxODczZGNmM2MyYzE1ODE1OWY5ZGM2NmZiZjE5IGxlZ2FjeS10cnVuaworNDEzNTMgMzliMWU3NGJhMTdjNTU0NzE4OTZlMWE0NDA0NTEyNjk4NjIwY2U4MiBsZWdhY3ktdHJ1bmsKKzQxMzU0IDliMGRkMWY1M2FlMjE4NmQ5ZjI4ZWYyMDg1ZGEyZDZiYzAyY2E3MzIgcmVsZWFzZTI0LW1haW50Cis0MTM1NCBhYmJmZTkxNzg3MzE5YjdmOTQ1NDNmNDBlYTdiYTE1ZDk5YWQ2ZTBiIGxlZ2FjeS10cnVuaworNDEzNTUgMmUyNWU5ODMyM2E3ZjY1MWZhOTI1YzU0MDc0Y2RhOTIwODhiZTVkNiBsZWdhY3ktdHJ1bmsKKzQxMzU2IDEzZGVlYzUyODFlZmNiMjBhNWQ0MjQzMDBhYTQ4YTBlNDE2NGM2M2IgcmVsZWFzZTI0LW1haW50Cis0MTM1NyBlYjlhMzljMWE3OGJiNzNlZGYzZjFlM2Q5NGY0YTA1MWNjZWU4MWU1IGxlZ2FjeS10cnVuaworNDEzNTggYTAwMGYzMjJkZDA1ZGJmYWJjNWQ2NjFmMzU1ZWU3NjkzMjViMTVmYiBsZWdhY3ktdHJ1bmsKKzQxMzU5IGVkMjQ3ZjZlNmYwNzU0ZGY4MGNjZTU5M2M5ZTE4N2Q1NjhmMjZlMTAgcmVsZWFzZTI0LW1haW50Cis0MTM2MCAyMGJiN2ZmMTY5NTI3N2JjY2RhNmU1MDNhZjE2NDIzMDc1Mjc4NTdjIGxlZ2FjeS10cnVuaworNDEzNjEgYTQ5N2UxMGIyM2U0NzBjYzc2YjM2ZjI3ZWU3MDRhZTUwODgyY2MyYyByZWxlYXNlMjQtbWFpbnQKKzQxMzY2IDY5MDM0YTA4ZTVhM2EzNGY5ZjllNzJhODRhNzc0MDc3NjRkYzYwYTkgbGVnYWN5LXRydW5rCis0MTM2NyBiNjUyZjUzNTIwMWQ2ZmNkZjc0YjA4ODkzNGUzMDQ0MjQ4MjAyNzM3IGxlZ2FjeS10cnVuaworNDEzNjggNmNkMTEwNzQzYmQyMDg5ZjBkNjUzYWE5NmYyOWQ0ZDU3YWQzYWNhYiByZWxlYXNlMjQtbWFpbnQKKzQxMzY5IDhiMDJkOGE1ZTcwN2YyNmYwMjQyZjk2N2MzZmYxNTA1ZDFhZWNmNWYgbGVnYWN5LXRydW5rCis0MTM3MCBmOWU1MGZmOTZmZjg1ZWJmNzZiNGNkNmFjOGIzNjcxMjFkNWUwNmUzIHJlbGVhc2UyNC1tYWludAorNDEzNzEgY2MxN2E1ODI1MThhZWZkNDJhMzM3NjBlOTU4ZmQwMzQxNzYwZGIyNyBsZWdhY3ktdHJ1bmsKKzQxMzcyIDBlY2JmZmJhZGMwMDU2ODIzZTU5M2YyMTdhZmYzNTI0ZmQ4NDI1Y2MgbGVnYWN5LXRydW5rCis0MTM3MyBhYjNkMWU2YTAyMzcyNzBlMmIwMTUyNzZiMjM3ZDlmMzIyNGU4YmFmIGxlZ2FjeS10cnVuaworNDEzNzQgYmZmYWUyZjgxMmY3NGFlZDc1YjAyMGEyM2NmYjJhNDhkNWJkYTM5MiBsZWdhY3ktdHJ1bmsKKzQxMzc1IGYzY2FmODBiZDY2ZDIxYmE4Mjk0YTA2NDkzMjQzNGM5YjEyNTBjOGQgcmVsZWFzZTI0LW1haW50Cis0MTM3NiAwMjliNmM1ZjI1OGU1YWI0NmJlMmQyMDc5OTk2NzM2OGMzMDI2OWVhIGxlZ2FjeS10cnVuaworNDEzODUgNjQ2YmE3NjExNWFjYjQzNTBjYzMwZjVlYzVhMGQ3OGFkNjdhZGE1NCByZWxlYXNlMjQtbWFpbnQKKzQxMzg2IDdiZjQ4NDAwZjI0YThlN2Q5MTQ0Y2YyZTZkZGZjYzExNzA4MTIwNTEgbGVnYWN5LXRydW5rCis0MTM4NyA5YjFlZmIwZWQ2MzU5MmRlMTJkNWJlZmM2NzQ1YjYyOWFjMTVkYjdlIHJlbGVhc2UyNC1tYWludAorNDEzODggNDE4YTYxZWFkMTFiODVkZWJjZTNmYTUxYTJkY2YyNGYyYWEwOWUyMSBsZWdhY3ktdHJ1bmsKKzQxMzg5IDIwYWExZDViM2IwODMyN2VhNjQzYTJlNzkzMTgzYjEzYjYyMGVlMTggbGVnYWN5LXRydW5rCis0MTM5MCBmZDA4OTE4Mzk0ZjljM2IxMTE5MmY2NThmYTQ2YmVmMTY2MDY0Yzk2IHJlbGVhc2UyNC1tYWludAorNDEzOTkgYTg2NDk4NjljYjYwYmJlYTA5NWRmZjU2NDFhY2RkZGQ1OTVlNzUyMiBsZWdhY3ktdHJ1bmsKKzQxNDAwIDQ5YmFmOGIwNDY4MTI1NWFmNDVjMDE5NmUxNDA5OWU1N2M2NDVlOGQgbGVnYWN5LXRydW5rCis0MTQwMyBkZTA5MGJmNjdhNTk4OWRiZmYyNWRhYTU1ZGVjYTFlYjg1YzU4ZWE0IGxlZ2FjeS10cnVuaworNDE0MDQgZWNmOWY0ZWQxMDllNWNkMDBkZWE2MjJiMzQ0Nzc4N2VjNzY3NDg2MyBsZWdhY3ktdHJ1bmsKKzQxNDA1IDZlMmIyODI0MzRkNDk1MTA5NDRmY2QxNDI5MmM5ODRiYjE3NzliZTIgbGVnYWN5LXRydW5rCis0MTQwNiBmODVkYzMxZjFmM2U0ZmUwZjg2NDg1ZDNkYmNiYmFhZmY1ZjM0YTIyIGxlZ2FjeS10cnVuaworNDE0MDcgZDgxMmUzOWFlOTA3YTdkNTk5MWY4NjVmZWE3MDJjOTM2NjBhZGU3MyBsZWdhY3ktdHJ1bmsKKzQxNDEyIGNhZWEwY2MwOWE0MmY5MWM5MTY2YzQ3OTc2ZDdjMWMyMTlmY2EyOTkgbGVnYWN5LXRydW5rCis0MTQxMyAxZDE5NTdmNTU2MjY3OTBkZWM4ZWQwYzFjYjgzMWI3YjIxZDRmNzdhIHJlbGVhc2UyNC1tYWludAorNDE0MTQgZmExZDU2OTQ3MzAxMzA3ZmFhNjcwODZlNDI5M2NjMzNlMGZhM2E0YiBsZWdhY3ktdHJ1bmsKKzQxNDE1IGYwZTMzNTUyMzVhNWU1MjVjODJmZWU2NzJkNjFhNTE5ZTFlOGU5M2IgcmVsZWFzZTI0LW1haW50Cis0MTQxNiA1ZjcxYTUwMjg5YTI1NTZiYWQ3Y2RhZDA3OThiYmRlZjQ5ZmU5ZjY5IGxlZ2FjeS10cnVuaworNDE0MTcgYWVmODUyNmZjOWJiYTZmOWQzZWMwZTkyNWJjYjA0OGQ3Mzg0YjYwOSByZWxlYXNlMjQtbWFpbnQKKzQxNDE4IGY2ZDhiMGRlMTM0YTIwMTM4ZTQ5NWZiMmRlMGZiMmRkNzc1N2Q0MjYgbGVnYWN5LXRydW5rCis0MTQxOSA0MTNjNjhiMzE0ODcxZWE0MWE5NTUzNThiZDVkMDFlMzBmYmNjYjYyIGxlZ2FjeS10cnVuaworNDE0MjIgZWUzZTBlZTFlZGNhN2QzNDgyYzkxOWIwNzI5YjUwMGFmNzk3ODFmYSBsZWdhY3ktdHJ1bmsKKzQxNDIzIDJhOTJkNWNlMGMwZDhjNDhmN2NhMWRjMDUxNTI2MWRmMWViZTc1OTEgbGVnYWN5LXRydW5rCis0MTQyNCA3ZjM3Y2NmNjk4Y2Y1YjAxNDYzMmQ2OGMxNmRhOWYyNjJhMzIwMDVjIHJlbGVhc2UyNC1tYWludAorNDE0MjUgNjg4OGRkZjFlYTlkNTNkNDRmYWE1OTE3NGVlZTAyMTU4ZDIzYmYzZSBJRExFLXN5bnRheC1icmFuY2gKKzQxNDI2IDQyOWY1MzdjZjZkNmI3ZTU5Mjc5NmYxNDI1MTQxMmJhM2JmMWU3ZTAgbGVnYWN5LXRydW5rCis0MTQyNyA0NDYyODcxYTZkY2VjMDEzZGIyODdiZmUwODUwMTA4ZGM2M2RmYjk3IGxlZ2FjeS10cnVuaworNDE0MjggODdlMjIxMGUwN2Y0OWFkNWQ1MGU1YmU5Y2ZkNjRkMjBmZGQwZTA4NSBsZWdhY3ktdHJ1bmsKKzQxNDI5IDZhMDE4ZDhjNTljOTFlMDQ2Y2I2NzFkNDY1OTgyOTY2ODU5ZTYwM2MgbGVnYWN5LXRydW5rCis0MTQzMCA2MDE1ZGYxMzZiMDBkMWJjY2M0MTJjZGJlMjA4OGIxYzA0NTU2ZTQzIGxlZ2FjeS10cnVuaworNDE0MzIgOWI4ODVjOTM0MTQ0YjcwNTVlMzZiZDYxN2EwZTBhYzhlMTIwN2QxNCBsZWdhY3ktdHJ1bmsKKzQxNDMzIDNlNjM0ZTQxYjZlYzNjNzk3MDFhMmFjZjJiYjE2YmZjMzZkMGI2NjAgbGVnYWN5LXRydW5rCis0MTQzNCA2ODY3OTk1YTE4YTdkYTkwMGU3OWQyMjA3NjVmZDE4YWE1Y2YyNWJhIGxlZ2FjeS10cnVuaworNDE0MzUgNzlmMmNlMzIwMTkyNWM5ZDYzZWNiMTY0NDg4NzZmNWRmYWJlZmE5ZCBsZWdhY3ktdHJ1bmsKKzQxNDM2IGRiYzkzZWU1M2UyZmVmZmNiZmI5ZWVlNDE1Nzc4NGIzZTkzNTA2ZGIgbGVnYWN5LXRydW5rCis0MTQzNyA2MDBiYmJhNTZmOWJhYjM4MmJkODA1YzU0MDU3ODU3YWFlZjA5MzNmIGxlZ2FjeS10cnVuaworNDE0MzggOWY3M2RjMDk1M2QyMDIwNGE1NDljOGM3ODFhNGM0ODg0YjIyMmNlYSBsZWdhY3ktdHJ1bmsKKzQxNDQwIGY0ODQyZjQyNzAwYmRiN2Y3M2RiODhjN2FmNjMzYjExN2Y0YTg5M2IgbGVnYWN5LXRydW5rCis0MTQ0MSAzN2RhOTY5YWQxMTZjNWJhOWI3MzU1YzIzZjNiZGZmYTA3MGZlZjA4IGxlZ2FjeS10cnVuaworNDE0NDIgOTAwMzgzNmEwMzZmMTMzNTJiNWJhYjFiMmVjNzM3MmEyMGQ4ZTI0ZCBsZWdhY3ktdHJ1bmsKKzQxNDQzIGY1MzFjMDVjZDI0MDg2NmU0NjBlZWVjZGQxMDAxYjg2ZWVmZGJlNTYgbGVnYWN5LXRydW5rCis0MTQ0NCA5NDc2NTY2MzBiMTI4ZGZlOGVlMjA3Yzc2ZDZmZjQ0YTIxNTZhMWUyIGppbS1kb2N0ZXN0Cis0MTQ0NSAzYWNiNmIzNDEwNzVjOWE2ZTgzNDYyNmRkNzg5MWIwYmI5NGU3YWIyIGppbS1kb2N0ZXN0Cis0MTQ0NiA0YWMzZmExNTg5Mjc5MDIzMDdlZWMyZjkwOTM0NzY2NDEzZTRiZjdkIGxlZ2FjeS10cnVuaworNDE0NDcgNTgzY2U5YzBjNjY0ZWJiYTk4ZDJiNzFhMzA1MzMyOGI1NDhkNjY5MyBsZWdhY3ktdHJ1bmsKKzQxNDQ4IDc2ZWQ3ZmRjOWQ4NWJkZjU4MjkxMjI0YzA1OTJkZjJjMTAyOGI2ZmEgbGVnYWN5LXRydW5rCis0MTQ0OSA0NGQ2M2VlZGZhY2FmMDQ3MGYzMjU0MjY5ZTFhOWIzNWRiOGMwNGFjIGxlZ2FjeS10cnVuaworNDE0NTAgMDg2Y2FjY2ZmZjBlNzY2YWMzYzc1OThjMGVlOWUzNDUxZWMyOGFkZSBsZWdhY3ktdHJ1bmsKKzQxNDUxIGYzMzRlZmU3NmY2YTU0NjIwMjViZjkyMjlmMmUyMTcxMmZkODQ1YjQgbGVnYWN5LXRydW5rCis0MTQ1MiA2ZDhjZTU1NzBjYjcwMjBjZGNiYzAzMDk3MWI2ZDE4NDUyNThiNGVlIGppbS1kb2N0ZXN0Cis0MTQ1MyA0MGYzZDc5YjIxMjUwYTQxNWY3OTlkMjQxMTJmZWZkZDIxYmM0NjMxIGxlZ2FjeS10cnVuaworNDE0NTQgOTRhNDA5ZGE0YmQ0MGI3MzI2ZjcxYWE2ZDg2NTQ1M2Y1NTZhOTU1YiBsZWdhY3ktdHJ1bmsKKzQxNDU1IDFmOWQ0YWMzNTAxMDI4MjMxMmI5YWYzODg5MzlmZTUwZWZjMzhlYjEgbGVnYWN5LXRydW5rCis0MTQ1NiAwZDFlMmU3M2MzZWMwMzM3N2E5MWU2ZjFjOWM0ZmM1NjA2NzQ2ZjE4IGxlZ2FjeS10cnVuaworNDE0NTcgMjk0MjBiZDNiNWNiYjE4YTRlODkyMDY0YzgxMDNmMGVmYmIxYTAwYiBsZWdhY3ktdHJ1bmsKKzQxNDYxIDMyMzZiNWZiMWZiNzBmMzA5NzIzMjlmOWFiNmY3MTUzODg1MTQ2OTQgbGVnYWN5LXRydW5rCis0MTQ2MiBlNzE2NDgzY2IzZjkxNGNiMTk2ZmFkNjI2YjRjMTY4YTVkNGU3Y2Q1IGxlZ2FjeS10cnVuaworNDE0NjMgMDM4NjdmYzZmZDgwNzhjYzNiNGI1NjlhYzM3MmMzMGY5NWU2ZmNjMyByZWxlYXNlMjQtbWFpbnQKKzQxNDY0IDViODIxMjBjYjQ5ZDYxMjJkZDBhYTZlM2JmZjQ4YTJmMTYxNzk2YTcgbGVnYWN5LXRydW5rCis0MTQ2NSBmOTlkNmNiODhmNmYyMDhiZTk2MWY2NThhZWM5MTEwMjk0NzU4MmQ4IHJlbGVhc2UyNC1tYWludAorNDE0NjYgMzk1NmQ2MjBhZjA5YmEwMGQwNjdlZDEwMWMzMzg5MGU5Yjg4MWRhYyBsZWdhY3ktdHJ1bmsKKzQxNDY3IDQ3ODllNzVhNmZlN2QwNjIwNjJkMjJhNTkzYmQyODgyMTU3YzA2MWIgcmVsZWFzZTI0LW1haW50Cis0MTQ2OCBlMjQ3M2M0ZjJlZTBkN2ZkN2VkYzJiY2UxMmQxNjc2NzE5ZTY1ODZjIGxlZ2FjeS10cnVuaworNDE0NzggZjQxNGZmMjg3ODIzYjYwZmYzMjcyMjFmZTU0NTFlYTFjYzlhNjJhMCBsZWdhY3ktdHJ1bmsKKzQxNDgwIDhmZDQ2YjY2MGU2Njk1MGI2OWI2YTQ5ZDZlMzU3YjFmNjEwNTE4YWUgbGVnYWN5LXRydW5rCis0MTQ4MSA3MWVhNmI3ZjU4Y2UzOGQyMjUwNTA5YTdjNTRhZGM3ZmM3YWUxZDA3IGxlZ2FjeS10cnVuaworNDE0ODQgODI1NjU1YmZkZjIwNjQ1MDBlYWYwNjJmN2VmMjVhZGZkMTk2NGI5MCBsZWdhY3ktdHJ1bmsKKzQxNDg1IDA0NDU0MmQ3MDVjMmNhZWVkYTlmYjU3NzRmYjQxNWU0ZDMxYjczMjAgbGVnYWN5LXRydW5rCis0MTQ4NiBmZTRjNjI3YjIwOTY1ZTkwNTk2NDNlY2Y5Yjk3MTc4ZjI2OTAzNWFlIGxlZ2FjeS10cnVuaworNDE0ODcgZTRhNWE4NGU1ZWJiMTM5NzNkZDM1MGZiMDFlZjI4MzgwMWJmNDVhOCByZWxlYXNlMjQtbWFpbnQKKzQxNDg4IGNlOWJhMDFlYjdlZDVmZmQxM2JlMjFhMzU3Njc0ZWM4ZGFmNmQ3MDIgbGVnYWN5LXRydW5rCis0MTQ4OSBkNzJkYjgyYTcwY2Q3YWRlY2M2YjUwMzQ1MWNkNjA0OWJlMzY2ODQ5IGxlZ2FjeS10cnVuaworNDE0OTAgZGY1OTI4NTU4YTU3YjQwZmVjZDY5MWI4NmZhZjhmYTI4MzM2YWQyMSByZWxlYXNlMjQtbWFpbnQKKzQxNDkxIGU5YmU5ZTYxODhmNGQ0ZTMyNmQ3YzE0ZWFiNGU3MmUwZTczNzU3NWQgbGVnYWN5LXRydW5rCis0MTQ5MiAyYjBjZjUwZTc3ZWM5OGExNTRlNzVmOGY5N2NjMDg0NzUzYmI3ZDExIGxlZ2FjeS10cnVuaworNDE0OTMgOWZkMGNkMzYyYWZmYzcwOTJmZDZkMTRlMmMxZDhlNzdkZDEzYTEyZiBsZWdhY3ktdHJ1bmsKKzQxNDk0IDgwMGY0OGExNGE4YTM4MTEyZmExMTAzODY3M2NkOTFjMTU0ZmNlZDkgbGVnYWN5LXRydW5rCis0MTQ5NSBhNmJmN2NhZWQxMzU3MDU2NGUyYzZlNWVlZmM3Y2M2ZjA4YTA0MjgzIGxlZ2FjeS10cnVuaworNDE0OTYgMWRmZDVkNjJkNzY0ZWRlYzVjNzJiMjZmN2YxZTUzYmIwYjg1ZWU5YyBsZWdhY3ktdHJ1bmsKKzQxNDk3IGY5MzczODdmNGRmMTIxZjhmM2QxZjkwZThiYzA3MDhlNjY4OTViOGEgbGVnYWN5LXRydW5rCis0MTQ5OCA0ZDFkMjc3MTc4YTU3YWQzYzUzNzJiNWRmZmNjMGM2YjI4MDkyYTgwIGxlZ2FjeS10cnVuaworNDE0OTkgNGU1ZTE2YTNiZTBkM2MzODg1ZDkyNzk1ZGVkOWMyYzY1ZTM1Y2E3MiBsZWdhY3ktdHJ1bmsKKzQxNTAwIDExYTFiYzM1MjkxN2EzZWRmMWFhZTJjYTUyZDAxNjczYzUyMWM4MjMgbGVnYWN5LXRydW5rCis0MTUwMSA4ZmVhZWQwN2ZjY2Q3MTQ1MjZiYmE4OTMwMzVjZWJjNjc3N2MyZDVlIHJlbGVhc2UyNC1tYWludAorNDE1MDIgY2YxNTcxNGM5YzhhYTM1M2Y2ZDkyMzc0MzdiZGZkY2Q5Zjc0Yzg1ZiBsZWdhY3ktdHJ1bmsKKzQxNTAzIDY4YjM5OGE4NWEzODc0YmQ0MmU2ZThjODBkYzMxNjVjNmU0MGJjMGQgbGVnYWN5LXRydW5rCis0MTUwNCAxMmYyMjJiNjE3Yjg5ZjZjZTEwMzMyZWNmMGE1OWE1M2UzNjExNjcwIGxlZ2FjeS10cnVuaworNDE1MDUgM2ZkOTdkZTBhNzkwODNlNDg4MTFlYjU3ZDJhMTYzYmY4NzAxYTUxZiBsZWdhY3ktdHJ1bmsKKzQxNTA2IGYxM2ZjMGM5YTZiM2E1Njg0NmJiNWEyZTBkMTkyZTIzNGJhNTZhZjcgcmVsZWFzZTI0LW1haW50Cis0MTUwNyA1MWY0ZWU0Zjk3ZWExYWJmOTcyZjgzZTlmNDAzODZkYjJiYjI4ZjI0IGxlZ2FjeS10cnVuaworNDE1MDggMWZhYTMwNjk5M2MwNWFmNTE4OGQ1ODIxZjE4ZWZmNjZmZjRjZTMyZCByZWxlYXNlMjQtbWFpbnQKKzQxNTA5IDlmYzZiZjY1NWY5Y2IwMjk0YjdkNmNhYzA1Zjg4YjVmZTc0YzViODEgbGVnYWN5LXRydW5rCis0MTUxMCBkNGE2ZDI1OTFjZjU4YTExOGYwNWEwMGYxMWMyYzRlN2UxNzI4YWNhIHJlbGVhc2UyNC1tYWludAorNDE1MTEgZTExMzIzMTg5Yzg0OTEyZTBlZTI2ZTkxMzMxYzljZDUzMjkzNmJiZiBsZWdhY3ktdHJ1bmsKKzQxNTEyIDc0ZTU2MWE3ZTgyY2FkN2FlMzhkODVjMzI3ZTc2ZGNmZDY5ZDY3ZTAgbGVnYWN5LXRydW5rCis0MTUxMyBjOTQyNjgyNzdkZTkzODM2ODViZTg2M2NjZTAxOGEyYTc2ZGQ3MTE3IHJlbGVhc2UyNC1tYWludAorNDE1MTQgMWY3NzQ1MjkyZTUwZWQ4NGQzOGUyN2I2ZDUwNzk4YzIyZTBjYjU2ZCBsZWdhY3ktdHJ1bmsKKzQxNTE1IGYyNjA1ZjVhNmQ0NmY4M2E3OWRlZTA5ZmJiMmE4ZGQwNmM5YjAwYTAgcmVsZWFzZTI0LW1haW50Cis0MTUxNyBjMmJiYTVmNDZhYjZlYWUxNzdhNmU0OTg1NmNmMjEyNWU4YTYyZjg2IGxlZ2FjeS10cnVuaworNDE1MTggZmFiMzcxMzZkZDZkYTUzYThhMDlhMjk5MGE5MTUxZTMwNTE2MTJkNSByZWxlYXNlMjQtbWFpbnQKKzQxNTE5IDlmNjg1MmZmM2QxOTFlNDhhNGMxMDExZGM0ZTJiNzQxZWYyNzMzNmMgbGVnYWN5LXRydW5rCis0MTUyMCAxZTFjM2Y1NTMyOGEwODYxNDA0N2UyYjcwMTIxOGJjMTVhYjBkYjI5IHJlbGVhc2UyNC1tYWludAorNDE1MjEgNzJkNWM2MGZhNDVkOWVkYzM5NWJkOWI3ZDgxYTgwMjgyYzQwOTJjNiBsZWdhY3ktdHJ1bmsKKzQxNTIyIDllNjMwY2MxZDMwOTBiOWVjMjBlNWZkNzdiMGViYTBhMjk0MDNkN2EgcmVsZWFzZTI0LW1haW50Cis0MTUyMyBjZjJiNGM4YWQxYWQ0ZTQ2ZjZmMmU2ZmE1YzY3OGFmNmE4YWUyMTdkIGxlZ2FjeS10cnVuaworNDE1MjQgYjdjNmM0NjFhODA4MTgwYjBiYmZiNzE0MTIzNTA5MjA2MGMxNzk3NSBsZWdhY3ktdHJ1bmsKKzQxNTI1IGUwZGRlYTg4MWY0YWJmNzFjNGVjYTRlODEzMzcwYjIwOWJmOWIwYmIgcmVsZWFzZTI0LW1haW50Cis0MTUyNiAxZmRlYmJkNjBkN2RkZGEwZWUwY2EzYzdjZjNhYjNkNDllZTg1YzBiIGxlZ2FjeS10cnVuaworNDE1MjcgN2M4ODAwYjgxYzUwYzlmNjU5YWNkNzQxYTg4ZmVhYWQ0OGI0NzkxYyBsZWdhY3ktdHJ1bmsKKzQxNTI4IDIxNTBhZjg0YTE4NWU5MDhkNWVjNThmYTRhNWJiNTdjZGM0Y2VkNTYgcmVsZWFzZTI0LW1haW50Cis0MTUyOSBlNmQzMWNiZjJlZDM4YzVjMWMyOWM2ZjU1MDJiNDI5YjNlMDBhOTEwIGxlZ2FjeS10cnVuaworNDE1MzAgYmI4MGI4ZjM5M2VmZjFkMmUxOWRkYzE5ZTQwZjVmNTIwMDEwN2RiYyBsZWdhY3ktdHJ1bmsKKzQxNTMxIDc5Mzc0ZWI2ZGI1MTZjY2E5YTg0YmRmOTZiNDdhMTc4NTg4OGZkMTcgbGVnYWN5LXRydW5rCis0MTUzMiBjYjFmZjJhODVlM2RkZDIyODE1ODY0OTkyYjFlNzE3OWYxN2Y0Yzk5IGxlZ2FjeS10cnVuaworNDE1MzMgMDMzYmI0ZGI1YWU4YzFhNjI0YjhiMWUzODFkMWI2YmFlZGIzNmQxMSBsZWdhY3ktdHJ1bmsKKzQxNTM0IDZkNmM3Y2Q0NTI5ODllNTgxOGEwYmEwZWJjN2E3YTMwNjFkZmY3NTQgbGVnYWN5LXRydW5rCis0MTUzNSA1YzhkYzVkMjE4ZDhkNzBmMmYwM2M4OTgwMzc2MDlkMTEzZmM3OTRjIGxlZ2FjeS10cnVuaworNDE1MzYgYjQ2ZGM2ZDEwOTg2NzU0MzFkYTBhZmQxMmNjZTk4MDc1ZTIyZjhkNiBsZWdhY3ktdHJ1bmsKKzQxNTM3IGU4MGExYWY2NzYyM2YwZjU3MjljMWNkYWMzYTcxZmE3YTA2ZWVmYzkgbGVnYWN5LXRydW5rCis0MTUzOCBiMmViMTU4OWMyMmI1MTM3ZWUxMzFkZmEyODA3ZjdmZDUyMmE5NmNhIGxlZ2FjeS10cnVuaworNDE1MzkgNDU3MmZiNGRmYmIzZjBmYjZhZDQ1NzMyOTZkNzhjYjY1ODc5OWVlNyBsZWdhY3ktdHJ1bmsKKzQxNTQwIGVmNjA4YjU4YmZkOGFkNWMxM2Q5NWVjYWVhYTUyZDU5NzBmZTM3OTcgbGVnYWN5LXRydW5rCis0MTU0MSBmODA1NjMyOGYwMWExNjNkY2QwZTUzNzY2ZDJhY2FkNjBiZjk4MTNlIGxlZ2FjeS10cnVuaworNDE1NDIgYjljNjgyZWQ5MTBjZGM2MmIzNzY5NGNlMDc0MGU3NzI0NzQyMWU5YyByZWxlYXNlMjQtbWFpbnQKKzQxNTQzIDkwNzk3MjMzMjA4ZWZlMGZhMTY1OGY1NzA4NTdjNjU3MDY5MzljYTUgbGVnYWN5LXRydW5rCis0MTU0NCA0ODM1M2NmNTEzNDAzYTFkYzYxMjZiMzQ1ZjNjYWU3ZjBmNTc4MmJkIHJlbGVhc2UyNC1tYWludAorNDE1NDUgZDdmNjNlZGU0OTVlODVlMjU1MWViNzFhZDU5NDNjMjI0YmUwNTZiMSBsZWdhY3ktdHJ1bmsKKzQxNTQ2IGQ3ZjUyZmM0MjI0NThhMTY1OTdhYmRkMmFkZTE5Yzc4OGMwYjNmNzIgcmVsZWFzZTI0LW1haW50Cis0MTU0NyBkOWQ4YjJlMmU2MGFkZjA2ZWUwOGMzOGUyMGM3MTVlNjZiODg0MzkwIHJlbGVhc2UyNC1tYWludAorNDE1NDggNzVhNzljYzRjZjdiNjkwNmM1MjAzYmJiZWU4ZTgxNDQ5ZWEyMWM4ZiBsZWdhY3ktdHJ1bmsKKzQxNTQ5IDlmYzdkZmU4NmY5NjYzNjA1YmU4ZjY1MGZmZmYzMTQzZDkwYzk5M2YgcmVsZWFzZTI0LW1haW50Cis0MTU1MSAxZDhlZmZkZTgyZjFiNDNlZjVjOGU1OTYxNTdkZjYyNDk2OWI2YjI1IGxlZ2FjeS10cnVuaworNDE1NTIgZmNhNzMzNzcxMGZkN2IzNDE3ZTQ3NDM2N2VjZjg1MGJlZDU1ZGJhOSBsZWdhY3ktdHJ1bmsKKzQxNTUzIDY1ODQ0NGJhZWJhMzdlZmM4ZTQ5NWFmN2IxYTIzMTRkZDVjMTViYjMgbGVnYWN5LXRydW5rCis0MTU1NCA3MjU1NWE5NjdkNmE4NWNiMzdjYzFmMTNmMWIyYjE2OWMzNTU1YmE4IGxlZ2FjeS10cnVuaworNDE1NTUgNzNlYmRjNjJiZjhmMGQxYzkxM2IxNjRmMzEwYTEzMGU2ZmJlMDdmMCBsZWdhY3ktdHJ1bmsKKzQxNTU2IDRkMDYxNjJhZDIwOWM4MmE1ZGJjZTQ2YmI0ZTE1YWY5MWZkNGU3ZmUgcmVsZWFzZTI0LW1haW50Cis0MTU1OSBkMTcyY2JhOTY0Yjc4MWJhM2U3ZWI0NjBlOGY3OWVlODU1NTM5OTEwIGxlZ2FjeS10cnVuaworNDE1NjAgOWQ5ZTRlZTRkYTg5ZmVmYzRhNjcwYjkzNDAwYWQwNzQzNmJmYTdkMSBsZWdhY3ktdHJ1bmsKKzQxNTYxIDljNDc2NWU5ZGM5MjcyMzY1MjU1MzVkNWRhNmRiMGUyNGVhNmZiOTcgbGVnYWN5LXRydW5rCis0MTU2MiBmOTk3MjEzODM2YmIyOTBkNjFkNGQxZjlhMzhmN2JmZGRjMzdjNzdiIGxlZ2FjeS10cnVuaworNDE1NjMgYTFiNmU2Nzg0Y2E1ODBlNWEzMDRhNTYzMTZkNWNlMjhjZGE1MmU0NCBsZWdhY3ktdHJ1bmsKKzQxNTY0IDE1Y2M2MDE2Nzk1ZTAzNDY2Y2U4MTViNDAxZDM2ODViYTM3NmY0MDAgbGVnYWN5LXRydW5rCis0MTU2NSA3NGU5ZmUwNjhjNGRkMjE4NDNmNGNmMTVlMWMzZGM2YTQ5NTA3OTBjIHJlbGVhc2UyNC1tYWludAorNDE1NjYgNGVhYTcyYmExOWEyZTcyN2JkMzBiNTJkNDlkNzBjMzgyOWUxMGFmNSByZWxlYXNlMjQtbWFpbnQKKzQxNTY3IGExN2NjZmMzNzJlOTlhOTg0MDRmZWIzNDMzNTAxZTBhODcxZTU0MmMgYXN0LW9iamVjdHMKKzQxNTY4IGU2NzVmZDI5NWI0YjllMjY1MTMxYzQ0YWIzOTNmYzcyODA4ZjUxM2YgYXN0LW9iamVjdHMKKzQxNTY5IGNjZDhhMGQyODk1MDk2NmQ4NTNmNTg2MmE2NGU2NzViZmVkNjk0MjMgYXN0LW9iamVjdHMKKzQxNTcwIDViMGY1ZDk3NjMyNThmOWFmODdmZDE2Nzk1MmYxZGI5YmI2YzI5ODkgbGVnYWN5LXRydW5rCis0MTU3MSBhNWQ4ZjA1YmFmOThjZjJjNTBkOGZmNTczNmYzYTc0ZTk3NGU1MGNiIGFzdC1vYmplY3RzCis0MTU3NCA5NmE0ZTgwNjQyNWU0MTg1NWU3NWNmNTMzMmNjYzRhYmUxYTUwNzUzIGxlZ2FjeS10cnVuaworNDE1NzUgNDY1MDE0OTAyNTJkYjdhYWEzMWRjOGNhNzk4Yzk4MTkxODc0MDAzMiBhc3Qtb2JqZWN0cworNDE1NzYgZWI2NmVhZTljMmM4YzM0MjA0MjAxZjNjYjNhNTNiZGJmYjJjM2MxZCBhc3Qtb2JqZWN0cworNDE1NzcgODUwN2Q1ODI1MzU0YWY3OTViYjViNWZlNmEwNDY5MWI2ODM4ZDM1NCBhc3Qtb2JqZWN0cworNDE1NzggOWMwNDkwOTk3ZTY2MjAwY2UzOGNmZTkwMDc0MDlkODY0YWQyOGM4OCBhc3Qtb2JqZWN0cworNDE1NzkgYWJmZWFiNzNjOGYxOWNjZWY3MmU4NDQwYTUxZGU3NzI3NzA0YmUwMiBsZWdhY3ktdHJ1bmsKKzQxNTgwIDgwNTYzZGMxMzQ4NzVmMGZhYWZjODk2NTU0ZTlkZTFjZTVhNDk0MjggcmVsZWFzZTI0LW1haW50Cis0MTU4MSA2ZjQ2MTBmNjkyZTBlYWI4NTViYmU4M2UyZGE0M2E3M2ZjNDAwM2ExIGFzdC1vYmplY3RzCis0MTU4MyA3YWFhMDlmMWEwNDcyNDMzMWMzZjVmNTVhNDQyNGIzYjFlMzc4MjExIGFzdC1vYmplY3RzCis0MTU4NCBjNTkzZjMzNjQzZGRmNTBiZWQ1MGNiMWVlNmUwNzg1M2JiNDU5ZmMyIGFzdC1vYmplY3RzCis0MTU4NSA4MWM5NDRjM2QxM2EwNThmNWZmNWM3ZWNlYzcxZTY0MDIwMmY5OGU5IGxlZ2FjeS10cnVuaworNDE1ODYgMTkxYjU5OTA5ZGVkOGQ0MDM4YzM3YTYzMWFlOGVlOGQwNjhhZjQzOCBsZWdhY3ktdHJ1bmsKKzQxNTg3IGU3MmJjNWRhZmUxNmViZWVlOWFmYjU1ZTEzZDVlN2ViYzAwODkwMGQgbGVnYWN5LXRydW5rCis0MTU4OCA1ZDk2YTUzNmJiZjNlNjVkMjNkYTgwMmYzOTk2NzU0YWI2NTU1ZDg3IGxlZ2FjeS10cnVuaworNDE1ODkgYWQwZjAzODVjNmYzOThmYzRkYWViOWEyMGFmMDRmZTM0MTE4NTM2YSBsZWdhY3ktdHJ1bmsKKzQxNTkwIGNmMzFiMmM4ZTg1NDYwZjBkNDg0OWRlZDBkMDc0NDhlYzhmOGFkNDkgbGVnYWN5LXRydW5rCis0MTU5MSAwM2FlMGI4ZWI2Y2JmYjRiMWNiYWVmNTQ4NDIwODRmN2EyYWQ4ODc4IGxlZ2FjeS10cnVuaworNDE1OTIgZTI2ZGMzMzQ4OTA5YmY3MDA1Mjc1NDg2ZTY5ZDdjYjc4NjdjMzdhNSBsZWdhY3ktdHJ1bmsKKzQxNTkzIDE2ZTAzY2ZiOWEwMjJhZTFkMzkzYjZlYjdjYTM5M2ZlYTBlY2Y4YTkgYXN0LW9iamVjdHMKKzQxNTk0IDc1ZDUzNmIyNDdlYWE5YzE4YmJhNTAyZjIzNWUzNTIwYWQ5MTMzNjQgbGVnYWN5LXRydW5rCis0MTU5NSBhMDg3ZTdiZjUwZjFkZTM3ODQ0MDFhZWQwNDYwMWE0MjVkYTliZGFkIGFzdC1vYmplY3RzCis0MTU5NiA1MDk5NTZhNTRmMzc2MTc2MTg2ZDYzNzYzYjc4NjdmYTBmYjEwZjA2IGFzdC1vYmplY3RzCis0MTU5NyAzYTQyMTRiZmI2ZTQ0YjAwNWVlMTJiZDgxNWZmNTc1MTZmZjFjYTRlIGxlZ2FjeS10cnVuaworNDE1OTggNTIyNTEyMjRjYjk5NWUxYmQ3ODk2ZWQ5ODA4NTg2NDAwOWYxMzJlNiBhc3QtYXJlbmEKKzQxNTk5IDViYTkyMGVlZjAxNjA0MzgxMzkwNTdhYzc5NjZkMDQ0M2I0MDI0Y2QgbGVnYWN5LXRydW5rCis0MTYwMSA4ZWRhMWE1OGE0OTAzNzBhMjZmMjI0OWZlZGU0YTU3MjI1MTlmZDJkIGxlZ2FjeS10cnVuaworNDE2MDIgZjAyMGE3YWRlNmI1ZDVlZWM3ZGI0ODNjZmU0NTBjZGQ0MmI2MWUwYSBsZWdhY3ktdHJ1bmsKKzQxNjAzIDFlMTI4N2I2ZjY1MjZmNTljYjNmMWQwOTQwYTc5MjE2MzMxNjczNDYgbGVnYWN5LXRydW5rCis0MTYwNCBjYjNhZTdjZWExMDY2NjI0OWMzZjJhMDMxZWY0ZmJiMmEzZWRjMGQ3IGFzdC1hcmVuYQorNDE2MDUgNWQwMzFiZDIyMzA3YmNiNDU4NmNhY2E5NWUwN2YyZmExNzVjMzVmMCBhc3QtYXJlbmEKKzQxNjA2IDNjMjFkNWJkMTViZTYzZmY1ZmRkM2Q0OGRmNjNlODY1OTAyNDFjNmEgYXN0LWFyZW5hCis0MTYwNyBjODk3MDdkYWEwMTE0NDljNDE1OWEzYjVmY2VhMmM1MGYyMjZjMDgxIGxlZ2FjeS10cnVuaworNDE2MDggMDFiZDE0NmRjNTIwN2Y3ZDdjMTdiZTIyYzM0YzdhY2JlYmJjNjM0NCBhc3Qtb2JqZWN0cworNDE2MDkgYzgwMDliZDYxMTRmYTY1YjA4NmJlYzhkMThjODYwZjk3MWM2MWM0YSBhc3QtYXJlbmEKKzQxNjEwIGVlNTU0MzBlNWNmZTc3OGRjY2E2NjczNmMwN2M1MjdmMTQxYzUwMDggYXN0LWFyZW5hCis0MTYxMSA1NTFkNThiM2QwY2QzYzc2YzUzMGZhZmRkNTg2Mzg2MzAzNTY2ZTlhIGFzdC1hcmVuYQorNDE2MTIgYWE1ZDhlNGEwMGE4YTQ4NjM4NjQ1ZDg1NDQwYThjOGU2NTcyN2ExZCBhc3QtYXJlbmEKKzQxNjEzIGMxZTY3OGU3YmIxMjgzOWJiYTM4ZjFlODc0ZWUyMWNlNDNmNWI0YjggYXN0LWFyZW5hCis0MTYxNCBhMjlkYzU4YTk5ZjM4OTRlYTQ5ZTNkZTM5NWJjNDJiNGVlYjVmZTZiIGFzdC1hcmVuYQorNDE2MTggMTFlZTk4MmY4YzhkMGU0NjBmNGYxYTRkMGRhZmZhY2NhZjlmZGEzMyBsZWdhY3ktdHJ1bmsKKzQxNjE5IGQ0N2FiZjk3NThjOWZlYWU3NTk3YzZmYzRiODJlZTlhOWViNjJlZjAgYXN0LWFyZW5hCis0MTYyMCBjNjI5ODEyNTAzOWU0ZGZiMTM4N2JiMDkxMWVhYjA5N2YyZWE5ZDFiIGFzdC1vYmplY3RzCis0MTYyMSBjMGMxMmFhNzU3ZTcwOWYwOWM3NmJkMzE3NjIzMDc3N2YyYTVlMmZkIGxlZ2FjeS10cnVuaworNDE2MjIgYWJlMWIzMzJlYWEwMGY3MDc0MDkzMmMxZjY5ODYwYzZhNjM3YTljNCBhc3Qtb2JqZWN0cworNDE2MjMgYzIzNmViNmQ5OTM0NTI3NWY5ZDRmZGFlYWYzNzZlMGFhOWRkY2I2MyBhc3QtYXJlbmEKKzQxNjI0IDFlNjllNjNhZTNhMDhiNDlmOThlYjc1ZjAxM2E5MzhhZDlhYmQ1ZmMgYXN0LWFyZW5hCis0MTYyNSBhYjhhYjliZTZmNGI0N2NhMGJiMWFlNjlhOTgxMGM0M2I0YWU5OGUyIGFzdC1vYmplY3RzCis0MTYyNiBhMjljODliNGU4YzYzMDk1YzcyYzE0ZTI1ZWU4MTkzOTk5MGFlZDM3IGxlZ2FjeS10cnVuaworNDE2MjcgOGFkMzE5ZjNhOTM1ZWM1ZDRhZmEwZjFjNWUyOGY5Y2U4NjgwMmQ2MCBhc3QtYXJlbmEKKzQxNjI4IDUxZTNhODM4YWViZTc0MDFkYzg2MjhjODIxNjZjMDAyZDljZjIwMmUgYXN0LWFyZW5hCis0MTYyOSBhYjQzMWIzMjRhNGJkNDM5OTczMjJmYWY5YWQzYjU2MzgxNzUyMmY4IGxlZ2FjeS10cnVuaworNDE2MzEgYjc3ZWRjZWU4ODhjYTM0NTFhNzA1YmJmMzQxZDA5OGQyZDNmMDVmYiBsZWdhY3ktdHJ1bmsKKzQxNjMyIGRiY2M4OTEyYTI0ZGVjNDRkNmVjYTNkMDkwMjlkN2MzOGNhYTZkNzEgbGVnYWN5LXRydW5rCis0MTYzNiA2NDljMzQxODBhMGY1MGUwMDU1MDRiZGY5NGUwNDJmYzhhYzcwMTZhIGxlZ2FjeS10cnVuaworNDE2MzcgOTZkMWZhMzY5NjRkNGUxMWEwMjczYjQ5ZTRmMDZkYzEyZmI5NTdjNCBsZWdhY3ktdHJ1bmsKKzQxNjM4IDk1NDEzNjliMGRjYWYwNDhmMWJkOTg2YTI4Yzk2ZmZlZWUzN2Y4MDggbGVnYWN5LXRydW5rCis0MTY0MSBjYzMyNjE1OTcxMzZjNjI1NmY5MWNhNzYzMGRkYzZjOTMyOTA3ZjNkIGxlZ2FjeS10cnVuaworNDE2NDIgNjMyMTY2OWYyZjRkMTBjNmJjZTViZTM1ZTkxYzE3ZDk5MjM1NTE2MCBsZWdhY3ktdHJ1bmsKKzQxNjQzIDBlYjZlZjkyYzU2ZTI1Nzk2YjNiMjljZGNjMTkwNDhkMTNjZWIzYjkgbGVnYWN5LXRydW5rCis0MTY0NCA1MmYxZDU3ZjIzN2RiYmRjNWQ4Mzc0NGRmNmQxM2Y0NjRiZGE2MTMxIGxlZ2FjeS10cnVuaworNDE2NDYgZTRiNjIxZTFlZGE2NjIyMDU2NTBkZGMxMTQ2ZjVhYTUxNTQ1NTJjZCBsZWdhY3ktdHJ1bmsKKzQxNjQ3IDMyZTdmZTljMjNiOTFjYjJmNTExODhmYjgyODUxYjg3YWE2YjcyNjYgcmVsZWFzZTI0LW1haW50Cis0MTY0NyBmNmU3MzRiMWYyNjFjNTQ2ZDgwZTk4NDkwMzgwNTRiZjA5N2ZmODRlIGxlZ2FjeS10cnVuaworNDE2NTEgNmY1MDJkMzVmYzc3NWJlNjdiODMxZDRkYjNlNWE1OTk0MWExMDg2MSBsZWdhY3ktdHJ1bmsKKzQxNjUyIDEwMjE0MGMzYTM2MTRkYjNlOTMyNWFiMDIxMjQ1NzE0ZTFkZGQxNmYgbGVnYWN5LXRydW5rCis0MTY1NSBhNWFkNzZhNzhmNGIyOWE4YWE3Zjc0N2RkYjZmMTZhODJkY2UzOGZkIGxlZ2FjeS10cnVuaworNDE2NTcgNTIyZTAwNzNkOWM5ZThiYjc1MTdiZmM2OWMyZWIzYmMzYmQ5ZjI0NSBsZWdhY3ktdHJ1bmsKKzQxNjU4IGY5NDQxODcxNWU1NTMxMjk5ZjNhYjdjY2RjMjE1YzBhMmMzMGNiMzcgbGVnYWN5LXRydW5rCis0MTY1OSAwN2ZkYjRkMmI4ZjYyMzM3ZDM5MzY0YTU2OTM1OTZmNGYxYWQxMDRmIGxlZ2FjeS10cnVuaworNDE2NjAgMDdjZTkzODg1N2UxYmEyZjE4NWM1OGQzYTJkZWE5NzYxZTEyNzdjMCBsZWdhY3ktdHJ1bmsKKzQxNjYxIDE2NDcwYjcyMmYyMDljMDEyNTQzZThhOTAwZWQ5YmQ3MTQ2NjRkOTAgbGVnYWN5LXRydW5rCis0MTY2MiA0MDM2Nzg3NGY4NjE2YWM3MDQ1N2E4MzNmMWRlYmRiZDJjM2I5NGYyIGxlZ2FjeS10cnVuaworNDE2NjMgMzc3ZGYzOWJjZGExZjI2ZmQzM2Y3YmY3NzdiM2JjMjQzMzE2MDQwYiBsZWdhY3ktdHJ1bmsKKzQxNjY0IGVkMzQ3YzQzNmQ1ODk2NmNiZmQ4NGZlYmMxNDBjNTMwOTNhY2VmYmMgbGVnYWN5LXRydW5rCis0MTY2NSBjMjUzZTk5M2RmOGFjZTgyMTYxZWIyZGQ3MzI5ZWNkYTA3Yzc2ZDZhIGxlZ2FjeS10cnVuaworNDE2NjYgNjg4MTczMTViNzRjYTk2OWE0Yzc2ZTUzMGQ2NzdiMTgyYzVlNjAzMCBsZWdhY3ktdHJ1bmsKKzQxNjY3IGJmZDZhNmZjNzBlYWY1M2Q2YzEwYmUwY2I0MTJlZDRiYTRhYmZiZjYgbGVnYWN5LXRydW5rCis0MTY2OCBjZjg4NjM2Y2RmNGJlOTlkNmJlZTljZWIyNTRlOWYyOGQzM2MzNGRhIGxlZ2FjeS10cnVuaworNDE2NjkgYTE0YTdmNjE0YTk2ZGE0YmI5YmY0NjA0NTkyOGU5YTA3OGFmYjhhOCBsZWdhY3ktdHJ1bmsKKzQxNjcxIGJlYzlmYWM5Zjc3YzczMDM0MWRhYjY3ODhkZGJkZDdlZjg2YThmOTYgbGVnYWN5LXRydW5rCis0MTY3MiAyN2RmMmZiZTI3MDY2NGNhMjI4NWZkZDcyYWUzMDAxZDZkMjk5NTVlIGxlZ2FjeS10cnVuaworNDE2NzQgZGIxYzBhYWJjNDA1YTAyZWE1NWFkY2JlYWM2NmFjMTdhYzk0OWFmNCBsZWdhY3ktdHJ1bmsKKzQxNjc3IGUwMWQ4NTI0YjZmNjQyY2JiMzkwOTQxYWQ0NzNmZDU4MGJjM2JhZWIgbGVnYWN5LXRydW5rCis0MTY4MiBjZDhiNWIzMWUwMmFhNGJiOGFjOTdmY2Y5Njc3YWM2ZDE0NzU3MmEwIGxlZ2FjeS10cnVuaworNDE2ODMgOTMwMWE3YzAzMTJhYzAzYjc2OTUzOWIwMjkzM2U3OTMzMmMzMzk5MSBsZWdhY3ktdHJ1bmsKKzQxNjg0IDM1ZmU5MDMyNWY1YjdhMjJjZmE0YjEyNDIzNmFjMDA1OWM2OTBmNTYgbGVnYWN5LXRydW5rCis0MTY4NyBmMGE1MzMwZjJiM2UxMWIxZjU3MGNmZTRhYmM0ZDQzNTNmODUwOTY0IGxlZ2FjeS10cnVuaworNDE2ODggNjM1ZTBkOTA5NjQ1ZWY2NWEzMTMyYTM4MGNhZjMzOWY3YTk1OWY0OCBsZWdhY3ktdHJ1bmsKKzQxNjkxIDZkN2QxYTk5NmEwMjNhOGRhMzVlZmQ5OWFhNjE2YzRhYmFlMTQ2M2MgbGVnYWN5LXRydW5rCis0MTY5NSAyNDlmZmUxM2NhZjhhNTRjNmZkNmJjMDBkYmM5M2M4NDk0NDI2ZjNkIGxlZ2FjeS10cnVuaworNDE2OTYgZmRmMGFjMzZlYjc0NjEyZmE0NjhiMzFlNTg0OTdmYzZkNDM4ZmI1OCBsZWdhY3ktdHJ1bmsKKzQxNzAwIDRiZmNkNWRjZDBiZmEyNTBhNTk5MDM1MjJiMzZkMmI1MWZjMDhjNzQgbGVnYWN5LXRydW5rCis0MTcwMiA3NTQ4ZDc2NTZkODk4NjRiM2FlMGIzZjFkZmNlOWFkZmJmMGEzNmYyIGxlZ2FjeS10cnVuaworNDE3MDMgZGU2OWE1MjRmNGVkYmM2YzNiMTI1ZTk4ODc4NDQ1MWM1MWE4NDY3ZCBsZWdhY3ktdHJ1bmsKKzQxNzA0IDY0YzZhYjU2NzFlN2Q3NzI5Njk4YjA5MThiMTdlNjRjNDgxNTIzYzIgcmVsZWFzZTI0LW1haW50Cis0MTcwNSBkZTBjMmZlYTY1YzIxYmM5YWNiZWQzOGQ4YTAwMWE3ZTQwNTBhMjY4IGxlZ2FjeS10cnVuaworNDE3MDYgYzY5MWZkNjNlYjNjMDk1YzZlZDBiYjg5Njg5NDZhZjM1OGQ5ZDNmOSByZWxlYXNlMjQtbWFpbnQKKzQxNzA3IDE4ZDI3YzQ0NDdkMTEzNmNkYzNiMTNlMDA2ZWEzMDNkZjY2YjY1ZmIgbGVnYWN5LXRydW5rCis0MTcwOCBjMTE1MTM2OTNjYjk3MDNjZTY5YTYxNDIxMWYxMzI5ZTk5ZmQxYWYyIGxlZ2FjeS10cnVuaworNDE3MTAgOTg2NTNkOWY5Y2MzOWMzZTU5M2I0MTRiYmVjYmI4ZGExNDNjNGM4MyBsZWdhY3ktdHJ1bmsKKzQxNzExIDY1MmJkNWU1Yjc3ODJmODZjMDdjM2ExNTIxMzY2ZWExMDlmZTA3NDQgcmVsZWFzZTI0LW1haW50Cis0MTcxMiAxOGYwOWFjNjE5ZTg5MmYyZTlkNWIwYzgzNTA1OGUyMjk3ZWRiNDFlIGxlZ2FjeS10cnVuaworNDE3MTMgYTU1ODMxZDMyOTE1YTA1ZjYxYTFjZjllZGFjM2E4YTkxNjg5MDc1NyByZWxlYXNlMjQtbWFpbnQKKzQxNzE0IDRkYjE3YTAwYmRjZDM1MzA3ZjM2ODcyMDExZDViZDM1YzYzYzRlZDMgbGVnYWN5LXRydW5rCis0MTcxNSBkZWUyNTNhMzExNmM0NTZmOWI4NmNkNzc4MWUyNWRkMzUxNGI1NTU2IHJlbGVhc2UyNC1tYWludAorNDE3MjIgNGVjNjAxMTEwOTA2MTM3NjFlOTkwZmViNmUzZGNkM2M4YjcxNjVmOCBsZWdhY3ktdHJ1bmsKKzQxNzIzIDY1ODZjZDk5MjBlN2UzZmY2YjFjZTA0OWE0NTk0M2QwMWQ0Zjg4N2MgbGVnYWN5LXRydW5rCis0MTcyNCA5Yjg5N2ZiN2FjNmEyMjE2ZDY4OThjZWMwOGRkM2I1MTA2NzkwMzQyIGxlZ2FjeS10cnVuaworNDE3MjUgZjg5M2Q0MDNhOThjMWY4MTljMDIxNmE2M2Y1MjkzOTNhMWM1ZmZiMCBsZWdhY3ktdHJ1bmsKKzQxNzI2IGZhMDhjNjk3YTI3NThkYjNmZWNmZDBkOGY4OTIyMGJiNWQxYTc1MTMgbGVnYWN5LXRydW5rCis0MTcyNyBhZGU2Nzg2ODdkM2IzMjgwNWM0MjY5OWZhOGNmYTNiMjIwNjk4NzE3IGxlZ2FjeS10cnVuaworNDE3MjggMzIxZWZkMDM3ODU5Y2NjZTgzZGU2NjNkOWMzNjdjMmZmYmRkMmYyZSByZWxlYXNlMjQtbWFpbnQKKzQxNzI4IGYxYWUxMTQ1N2QzNGJjM2IwYzY3ZjdjYzAzNDNlODllY2Q1Mjk2YzEgbGVnYWN5LXRydW5rCis0MTcyOSA4NzdiNWQ0Y2EzNjgxNzIxMzRmYTcwYjIxNDRmNGIwYTdlOWFiMzc5IGxlZ2FjeS10cnVuaworNDE3MzAgNzMxMDMyZDEwMTU5ZmJjMGQ1MjQyNDUzZDY4Mjc3OWUxNDY3ZjU3OSBzc2l6ZV90Cis0MTczMSAyNzkxOWNmODRkYzNkZGYwY2RiMzBlYzExMzRjZDZjN2M4YTkyMmMyIHNzaXplX3QKKzQxNzMyIGNlYzljMmMxNGUyOGQ0NGY0MDYwNjUyN2NlODExMmE0YzY3OGNhYTAgbGVnYWN5LXRydW5rCis0MTczMyA5ZWM1YjE2NWZlYTA4MTRhMjdiYWE4Yjk2NWYxNTI5MTA5ZDExYTNmIHJlbGVhc2UyNC1tYWludAorNDE3MzQgNzk2MzEwY2JmZmViMjMyNGU5NDZmZjU5ZTJlZTJlNTEyNjI2MDYyMyBsZWdhY3ktdHJ1bmsKKzQxNzM1IDRjMTVhOGU5MWFlNzRmZWM1YmQwYWM1MzBkYzY2ZmYzMWYxZmE5MzUgcmVsZWFzZTI0LW1haW50Cis0MTczNiA4MWQ1OTk1OTUxZmQ0MTBjYTg2ZGMzZjc0ZDUwZGYxNjM2NWQwZGY1IGxlZ2FjeS10cnVuaworNDE3MzcgOTgwNTYxOTU4ZjFkMzkzM2ZkNjIxMzUxZjlhZGQzZWQyOTljMGM0NiByZWxlYXNlMjQtbWFpbnQKKzQxNzM4IGZiNmU2NGViODZjMDM4ZjMwMmNlMjhmM2Q5ZjZmNzJjOTc4OTExNmEgbGVnYWN5LXRydW5rCis0MTczOSBlYTA4M2VmZGM5NmM3M2E5OTIwNDNlZmVjN2RjZTI3NzcxZTNkMWRjIGxlZ2FjeS10cnVuaworNDE3NDAgNzE5YmEwMmQyZTJjYTYzZDE1MTIyYjQ0NmRjM2YyOTNmZmVkNGM2MyBsZWdhY3ktdHJ1bmsKKzQxNzQxIDdiZmIwOTdmOTU5NzZmNGViYzc2YTM3OTVjZTMwMDc1MjVkZjE4OTggbGVnYWN5LXRydW5rCis0MTc0MiAzZDFiYWY3MTdjNWFmNWQ5ZWY4OTE4NmY1MDM3NTk0ZTcyNmI5YTBmIGxlZ2FjeS10cnVuaworNDE3NDMgZDAyMTRiYjFmZDUxMmI2N2YxY2U0ZWJiMGNlMjNmYzFlMTE5NmYyOSBsZWdhY3ktdHJ1bmsKKzQxNzQ0IDk2OTdlZWVhZjI0NjYzMmVjNDA5M2E3NzZhODZhNzAwNjEyNzlhOGUgbGVnYWN5LXRydW5rCis0MTc0NSA0NWY3YjczODNhNGUyMGE5NzEwZjUyZDljZDk2ZTU4MzcyNmY2NTc2IGxlZ2FjeS10cnVuaworNDE3NDYgZGUxNmE4NWMzYjRjZjM4ZTJlNTZhNzg4MzZmYzc1NzFiZGQyMWYyOSBsZWdhY3ktdHJ1bmsKKzQxNzQ4IDE1YjU4ZTQ1ZjFhMTMxNmFjYzE1Yjc0ZDE3ZTM4MDBlOWRmN2YwZTUgbGVnYWN5LXRydW5rCis0MTc0OSBkYTBiYWI1ZGQ3NDA4OWY3MjdiODZmZmM3MjkyM2QxZWU3MmY3M2RjIGxlZ2FjeS10cnVuaworNDE3NTAgZjY3YzRhYjMwNGVjZWE4MWFhOGE0Mzk0M2FmNWEzMjY3MzA4MDk1NyBsZWdhY3ktdHJ1bmsKKzQxNzUxIGFhN2Q3ZGY4NTNkNTcwNTkwNjZkM2Q1ZTVhOWZhNzEzZDNhMjIzM2MgbGVnYWN5LXRydW5rCis0MTc1MiAzYjkwMjU4ZmVjOWY2YjJlNmIzYzk4Mzk0MGJjYTAxNDg0ZDZkNzU3IGxlZ2FjeS10cnVuaworNDE3NTMgMWZmNDc5MGI3NjA1MDE4YzY0MWZjY2M0NTk2OTIxNDdhNTNkMDE1MiBsZWdhY3ktdHJ1bmsKKzQxNzU0IDhlYmUzNGViM2ViNzQ4MDJhNDlmMmQ3NzEwZjdlNGQ2NDRhNjRkNDEgbGVnYWN5LXRydW5rCis0MTc1NSAxMDQ0MGJjZmEwNjE3MTljN2I3ZTllZmY3NWQyMWU3NDcwMTllZTJlIGxlZ2FjeS10cnVuaworNDE3NTYgMTlkOTZjMmQ3ZGY1NGUyOWYwZWY1ODQzMTNhZWIxYmRlOWExMWY1MCBsZWdhY3ktdHJ1bmsKKzQxNzU3IDNmMzU4YWZiYjNkM2YzN2FmMjAzMjNjNmE3MDc4NGMxM2I3ZTAyYzggbGVnYWN5LXRydW5rCis0MTc1OCA0Y2JmMmEwMTBkOTQ1YjZiY2Q5NTVmYTA1MTg3YzI1Nzk5NzBlYjAwIGFzdC1vYmplY3RzCis0MTc1OSBlM2VjYTY1YWUxNDRmNWRjODQwYjg0NjU0NmRkNGRlNjU5OTEwNjlhIGxlZ2FjeS10cnVuaworNDE3NjAgMzAxZmIwYTk5MzcxNDRlYzk3YjMyM2E1YjhmNDUzZWI4YjViZTc1NSBsZWdhY3ktdHJ1bmsKKzQxNzYyIGZhNjlmMGZhMzZmZWY5YjJlOWM2YTYyMTdjZTRkMTMzNGM0YjNkMTEgbGVnYWN5LXRydW5rCis0MTc2MyBlMTRmNDc5NjQ3NDgxZTRmZDljNTE4MzYxNjJmMjk4YzczMjc2YTlkIGxlZ2FjeS10cnVuaworNDE3NjQgNDlhMDQ5M2YyNDVlM2ZiODRlNTVkZjE5ZTE5YTJlOTA3MzNmYmRhMCBsZWdhY3ktdHJ1bmsKKzQxNzY1IGE5ZDRmYjg2MDdkMjlmZTlmMDAwOGQ0N2VlZGNkY2M3NGU5NzRhMzggbGVnYWN5LXRydW5rCis0MTc2NiBlYzM0NTI4NDBiOTY2ZTZkOGRlMmQzY2ZiZmE0YmM3MGY3MGFjMjBhIHNzaXplX3QKKzQxNzY3IDRhYTAxODc5YThmNWE5YmNlODMzOTE1MTM5MmY1NzIxZDViN2M0N2YgbGVnYWN5LXRydW5rCis0MTc2OCA4Y2I2ODZkZDZlNjQ1OGZmNDllNmY4M2VlNTQ4N2I5YzU5OWYxM2RiIGxlZ2FjeS10cnVuaworNDE3NjkgN2M0ZDViMzhjNTVlNjYyYTY0MTA4ODY0YTM0YjllNGU2YjA5OTc3NSBsZWdhY3ktdHJ1bmsKKzQxNzcwIGI3MGIzZTViM2NkMWM5NmI3Mjk5YmJiNGFmMDZhMmMyZDM0Y2JlOTkgbGVnYWN5LXRydW5rCis0MTc3MSBiOGIzNzgyYjJkYzA3NWJlMjc5NDZiYTViZDA2NzRkZmM3Mzg3OTZhIGxlZ2FjeS10cnVuaworNDE3NzIgZTkwZTdkOWU5ODkxMDlhMTAxOTc5MDJjYjIzODVkN2YwNzE0ZWEyMiBsZWdhY3ktdHJ1bmsKKzQxNzczIDM1NTk2MzA3ZTc4NjAyMWIxMGI0YzJmZmExN2I0OTVhNDBhY2RlMDIgc3NpemVfdAorNDE3NzQgOTYzZDc0OWM5Nzc2NDBjMTllYzRlNzJmYTg5YTEyNzZkNDViYjAyMSBzc2l6ZV90Cis0MTc3NSA1YTg3NjQ0YTM5MDAwZjU1YzE2OTg2NmIyZTdlNjQzNGUyNTBiMWY0IHNzaXplX3QKKzQxNzc4IDhkZDM1ZGQ2YjBlODljY2U1OTJjNzExZTdiMjkxMjEyY2JlYWQ4ODMgc3NpemVfdAorNDE3NzkgM2JhMjMwYzc3ZDQwMDAzMTAzYzllMTNkYzA1ODZjMzU0YTI1MWE1MiBzc2l6ZV90Cis0MTc4MSAxNmUzZWViODUyMDZmZGEyZjBiZDFiYWJiNzc3YTdmYTZiMzgyZWYwIHNzaXplX3QKKzQxNzgyIDRkMWYzZWM0ZWFkNTk2OGE3MmU1Y2Q5NGU2YzUxNTllZDc3ZWE5ZjQgc3NpemVfdAorNDE3ODMgZDZlYTE1MzBkYTMwMDQzNTViNjM3ZTNhODgzOGYzMTc2YWRkMjlmYiBzc2l6ZV90Cis0MTc4NCA0MmFjZjMzYWEzYzhhMjhmMGU0ODAzYzBkMzE2ZWE1OGQ3ZTIyMjE5IHNzaXplX3QKKzQxNzg1IDA4ZTgwYTJiZjQwY2Y4NTVkM2YzZjdlOWZhNTBkYmIwMTExMWM5YWUgbGVnYWN5LXRydW5rCis0MTc4NiA5ODhmZGYwMjUyYjc5NGQ3MDZjZDVhMDIyMDczZWJjMjkwOTcxZGNlIHNzaXplX3QKKzQxNzg3IDYxNzA2ZTU4MWVmOWNhNDQ5OTE0YzczYjlmMjk0NjU5NjlmOWMzNjkgbGVnYWN5LXRydW5rCis0MTc4OCBmMmZhNDBlODgzNjMwYjYzZWNlM2U0OTVhNTRhYjY2MWU2NTJjZGU0IHJlbGVhc2UyNC1tYWludAorNDE3ODkgOTEzYTgwZjQ1OGU2ODc0NzlhNmI4OGQ1MjljNzc2OGRjMmQzZjM5YiBsZWdhY3ktdHJ1bmsKKzQxNzkwIGM4MDg5N2JiNTA1M2NlZWQ4NzhmMzFhYjYzZTM0MGU3YzAyM2M3YjkgcmVsZWFzZTI0LW1haW50Cis0MTc5MSAyYTVlNjAwOWE0NDUyNzAzMjE1Yzg0NWRmMTA0YzcyOTE1MDI1NmFlIGxlZ2FjeS10cnVuaworNDE3OTIgNTBmYTU4YTI0ZTYwZjQxNzBlNzc5NTk2YmI1NWU5NmQ4MGMxZmVkNCByZWxlYXNlMjQtbWFpbnQKKzQxNzkzIDBjZjMyNDhlMjdlNjU4YTZlYTQ4MTI5YzBhMjQ2NTRiNDZkZTI1ODEgbGVnYWN5LXRydW5rCis0MTc5NCAzZWQ1YTRhY2JlN2NiM2I5Y2JmZmE3ZjJhZGViZmJjOTE0ZWMxMjFkIGxlZ2FjeS10cnVuaworNDE3OTUgYTkzYmU1MTlmOWVjNDA3MjRjN2EwYmIxODE0YzA5NzgxNmQyM2FlMCBsZWdhY3ktdHJ1bmsKKzQxNzk2IDdlY2M0MGQyMDU4NjQxZmM3Y2IzMzFmYmU2YzhlMzU4NjE5MzcxOTEgbGVnYWN5LXRydW5rCis0MTc5NyA3NGJlZGZkMGJkNmIyZmZjYTFlYWEzMjkzYTE0YWRhZmNkZjljNmJmIGxlZ2FjeS10cnVuaworNDE3OTggNWNlNDcxMDNmODQ3OTQ5ZTM1OWQyMWE1MDE2NjY2ZmM0OTcwMWRlMSBsZWdhY3ktdHJ1bmsKKzQxNzk5IDNhMzk0MzFhNTRhNTNhYjc2MzNjYjhhOTIyOTFhZDcyMDk5YjIwNTggbGVnYWN5LXRydW5rCis0MTgwMCAzNGE1MTU0ZTYxMWNjMTA2OTcwN2I4YTc4ODA5NTU5NTM3OGQ2ZjUxIHJlbGVhc2UyNC1tYWludAorNDE4MDEgZjAxMTI1M2QzYzQ3MGQzMzkxZTBlYzcwMzA3ODI0OWVmYjA5OTdkNCBsZWdhY3ktdHJ1bmsKKzQxODAyIDYzMGQwMWZlY2ZlYzY0MWU0ZmNhYzA0YTJjNzg4M2E4ZDJiNmJmZGQgbGVnYWN5LXRydW5rCis0MTgwMyA1NmRkZjNhYTEyYjExY2NiYWEzY2VlOWQ5MTVkYzMxMmJhY2MzMGU0IGxlZ2FjeS10cnVuaworNDE4MDQgOThlMjU5NWQ3MzdmMDFjMzM5OWIyYTI2ZGU3MDI4NzhjMmMyMDNlNSBsZWdhY3ktdHJ1bmsKKzQxODA1IGU5YTEwZjc0Y2Y4OGFjN2UzN2MyOGUwOTc4YTRmMWQxNGQ0YWNkZTcgbGVnYWN5LXRydW5rCis0MTgwNiAwM2RiZWMwZDk1MDQ2ZTFhMWY5MTM2Y2EyYzU4N2RmYTNmNDlkODZiIGxlZ2FjeS10cnVuaworNDE4MDcgNzY3NDFlNzNiYjY0OTc4Yzk2N2E4MGZjMjhhYzAwMmEzYzI0M2RhYiBsZWdhY3ktdHJ1bmsKKzQxODA4IDdkNmFiOWYzOTk5NmNjZmEyOTcwYWIwZmFmODQxYTVlMzkzMDNmNTMgbGVnYWN5LXRydW5rCis0MTgwOSAwNDRkMzVjYTM0MjQ3YjZlNzkyMWQ4ZTJhZGI3ZDhhMzc1ZTNkZmZmIGxlZ2FjeS10cnVuaworNDE4MTAgNmNiNTczOWI3MWNlMGI4NGNjZTE3MTkxM2ZmYzczN2JjNzU3NDExNSBsZWdhY3ktdHJ1bmsKKzQxODExIDQzYmM3Y2EyZDlkZmI4NzliYmUwMzRhYzg2NjdmOTY3YWQ3NDg1M2YgbGVnYWN5LXRydW5rCis0MTgxMiA2ODYzMDZhNjdlOWIyNDYyNWZhZjUwZmNjOTgyMTZlMGNjMWNjYjMzIGxlZ2FjeS10cnVuaworNDE4MTMgY2FkYzc3OGFlYzc5NmYyMzU0NDdjNDU1NTdkMWZjZjJmNWQ4OTE2OCBsZWdhY3ktdHJ1bmsKKzQxODE0IDZmMDYzOGU3YmQyMzY4OGE0ODZjMDVlOTMwMGUwZjgwOWQxNTk5ZmMgbGVnYWN5LXRydW5rCis0MTgxNiA1MzZmMjRlMTZhZjI0NjgwMjE5N2JhZWVmM2IxMzQ2ODU4NzFjOWFlIGxlZ2FjeS10cnVuaworNDE4MTcgMTYyNzc3MThjZWI5YWU2NjMxZjI5NzU1N2Y1YzgxOTliYmRjNWFhZCByZWxlYXNlMjQtbWFpbnQKKzQxODE4IDIzZWI4Njc3YmRhZDEzOGZmNmRlZDdiMzg5NjE4YzM3MzNlODk5OGYgbGVnYWN5LXRydW5rCis0MTgxOSA3NmQ1MTE5NzI2MTYyNzc4OGFkNDRjNjNmZWIxYjY0MjQ5MmMxODUyIHJlbGVhc2UyNC1tYWludAorNDE4MjAgZTQzMTZkYTE5Y2ZjMWQ5NGFlOGI2ZmQ1NTJjNjU1Yjc5MTg5YWFlZSBsZWdhY3ktdHJ1bmsKKzQxODIxIDIxNDMzNzFiYjkxZmMyMzdlM2Y5ZDVjOTdjNGE1MzkwMmQ2MjBiNTAgcmVsZWFzZTI0LW1haW50Cis0MTgyMiAxNTZkZjc3Zjk5MmViZWZkZjZlODhlMWVkZTRhZDEyZWMwMzZlM2RhIGxlZ2FjeS10cnVuaworNDE4MjMgNTlhODliNTg4YzMwOTZhMzZiZTY5MGY0ZjE4YmRiYzczZDViNDZhOSByZWxlYXNlMjQtbWFpbnQKKzQxODI0IGUwNmRmNWUxM2RiOWRiNzE3MzdlY2Q3OTMzNDBhNjFkNmI5Y2RmM2MgbGVnYWN5LXRydW5rCis0MTgyNSA3MzBmODRjMmZkZGI1YjExNjQ5ZDg3OWFhYTQwYjZhNmVjMmFkZGY0IHJlbGVhc2UyNC1tYWludAorNDE4MjYgNDlkNjNmMzc3ZmU3MmQ3MTk1ZjE5MjJiYmNlZDNhZWE5ZDljOGI5MyBsZWdhY3ktdHJ1bmsKKzQxODI3IDE0ZjAwMmNkMDM3MWI0YTg3ZTJmYWY5ODczMDM0ODlmMTQ4NjJkNzIgbGVnYWN5LXRydW5rCis0MTgyOCBjODg2Y2IxNmExNTY0NjU2OGQyMmI2YmFkNjk0ZGYxMmJmOGQ5NDg4IHJlbGVhc2UyNC1tYWludAorNDE4MjkgZjM5YmRiZjRiMGMxYjdmYjRhOTk4ZmE3ZGI5ZWViYmM1YWJmMzVhZCBsZWdhY3ktdHJ1bmsKKzQxODMwIGE2YWUxMDJhNmUxMTllZjMxN2M2NGQ3N2NmMDJmNjJhYWU2YTc0NzggcmVsZWFzZTI0LW1haW50Cis0MTgzMSBiNTQwYjYwNzZmZDk5MTVlZDhkOGFlM2U2MjUwODRiNTM1NWI0ZWRiIHJlbGVhc2UyNC1tYWludAorNDE4MzIgN2NjMjE1ZjBjMDliM2JmMWVjMjdkNDE2YmEwMmQzYWI2NGUwYmRjMSBsZWdhY3ktdHJ1bmsKKzQxODMzIDIzMzk3NWRhMjQ3ZTIyYWU2OGMwZjdkOTNmNjQ0M2UxODNlOWNhMTggcmVsZWFzZTI0LW1haW50Cis0MTgzNCA4ZTQzOGJmNzZjYmJmMjUwNjJhNTU0YWM4NTc5ZGM2OTY2ODZkNjE0IGxlZ2FjeS10cnVuaworNDE4MzUgMTAxYjYxYTllZWQyZTUxOGM4YzNhNWYwOWIzYWM4NjBkMzNhZWY2OCByZWxlYXNlMjQtbWFpbnQKKzQxODM2IDgyYTUyYTQ2NGFhMjU2Y2JhYjc3ZTY1ZGY3YjQ5Mzk1MThkNGIyNDcgbGVnYWN5LXRydW5rCis0MTgzNyA3NGQxNmViMmNhYmRkMmVhNDNkM2IxNzExMTExZTY0MGU0YjY1ZGU5IHJlbGVhc2UyNC1tYWludAorNDE4MzggMjJkYmY1ODE4YjBiMjk0ZTQxZjQ3NDU5ZTkwMDdjZDEwYzE2ZmViYyBsZWdhY3ktdHJ1bmsKKzQxODM5IDg1MGY3ZDFlNGNhMjc2NDVmMzA5NWI2OGEzZTY1YmMxNTg0NzUzMzkgcmVsZWFzZTI0LW1haW50Cis0MTg0MCBhYTcwNzA0MTUwNWQ4OTljMzM0Mjg3NzExYWNjOWJiZjVkNDEwYzdmIGxlZ2FjeS10cnVuaworNDE4NDEgZTQ0YTgzM2VjYTQzMzVkODUxMjJhMjY2N2YzY2FkN2MyYzY2YjA5NyBsZWdhY3ktdHJ1bmsKKzQxODQyIDJlYjc4ZjVkMTQ1MDBlNDY1MmYzYmNkNTczOGM2Y2YzZTQ0ZDRjYmEgbGVnYWN5LXRydW5rCis0MTg0MyA3M2RhNTkxZjliZGJkZDVjZTk3ODA3MjYxNWFhYTdhMWRmN2IwMTQyIGxlZ2FjeS10cnVuaworNDE4NDQgZjkyODEyODNiMTA5YTQ5YmQ0MjdiZjY3NzIxYmRiZDA5YWE1Yzg3MyBsZWdhY3ktdHJ1bmsKKzQxODQ1IDA0MmViM2QxY2UzZjMzOGFlNjFlMzVmM2M1ZWJmNzRkYTUwYTUyZWYgbGVnYWN5LXRydW5rCis0MTg0NiA5NjNhOThkOGZlMmU0ZDJjZmYyN2Q2ODcyNTQzNGU3MjQxM2Q3ZWQxIGxlZ2FjeS10cnVuaworNDE4NDcgZmU5YmQyMWYyN2YyMjg5ZDUwZWUyNjE0MzcxNzQ1NWQ0OGNhNTM4NyBsZWdhY3ktdHJ1bmsKKzQxODQ4IGM3MWNhMWNkMzYzYjc1ZjM0OGVhNzY0YmZmNGI3M2E0MWI5ZDVhNmUgbGVnYWN5LXRydW5rCis0MTg0OSA5NmViMmE1Y2ZiZWY2MjNlZWZkMGI2MTFhZGYzODcxNWM4Mzk3OTZiIGxlZ2FjeS10cnVuaworNDE4NTAgMzQ1MWIxMDlhMjRjNTYzZTkxYWM5ODA4NGFlYzgyZjUyMzcwODY1MCBzc2l6ZV90Cis0MTg1MSAyOThmYzMyNjkzMTBiZTlkN2ExNzk3ZTk1ZDZmYTU1YjI1ZjJjNzViIHNzaXplX3QKKzQxODUyIDI2MTA3YzVkMDU3YzFmZjhjODkxZTc0NTQ4NmEwMzc4ZjcwOGI1OGIgbGVnYWN5LXRydW5rCis0MTg1MyBmNDUwNzc3NGQ0ZTQxZmZlNGVlOTU0MGExMDI0ZTQwMjBiODEzMzE1IHJlbGVhc2UyNC1tYWludAorNDE4NTQgZDk5M2EzZWU4OTFlZDgyYTQxYzUzN2Q2ZmY0ODA4YmJmYWQ2Njk4ZiBsZWdhY3ktdHJ1bmsKKzQxODU1IGNmZDFlMWY0ZmRkZGIxMjc2OTc1ZmI4ZmQyOWZkNjIyZWIyNzVlOWEgcmVsZWFzZTI0LW1haW50Cis0MTg1OCAxZTU5NWI2YzkyNGUxNzA4ZjViYjJjZjBiZmM5ZjI2YjE5MWJmZTdmIGxlZ2FjeS10cnVuaworNDE4NTkgYmI1MWQ2YzZhM2UwM2EzOTNlYzgzNjZlMDQ2ZGMwMzNhMGQ1NWIwOSBsZWdhY3ktdHJ1bmsKKzQxODYwIDUwODg2ZDQyYjQ0NGU0MGQ3ZTkzNjNjMWFiNjJhMjQwMjkxMjkwNzIgbGVnYWN5LXRydW5rCis0MTg2MSAxNDdjMzVmNDM1YTBiNWFkMDgxNzIwOGM2ZmFlZDY2NTU3ZDkzZjFhIHJlbGVhc2UyNC1tYWludAorNDE4NjIgNmYyNTAyOWRlOWRiNDM2ODQ3MTk1Mjk5NmY5OGI3MWRiNGY2YzIyYiBsZWdhY3ktdHJ1bmsKKzQxODYzIDgzNGRkNjY0YWVmY2E5ZmUzNTMyZjA5MTUwMmRjYjU0M2Y0NjVmYjUgcmVsZWFzZTI0LW1haW50Cis0MTg2NCA4YTJhYjVmNTE5MzJmZWEzYTEyMmE2ZTM4OTJkYWE5NjY3YTUzNDAyIGxlZ2FjeS10cnVuaworNDE4NjUgNjUyNDI5YzRmMmE0OTJmNzNjZTVhODlhNDA0ODFmYThmYzc4MmU2MCBsZWdhY3ktdHJ1bmsKKzQxODY2IDI2NmJiZGY5MWJiNTNlNzJiMjJmYzVkZTk3ZWZkMzZmOTA4YzZkYTAgbGVnYWN5LXRydW5rCis0MTg2NyAwMGRmMDVmYTgxNjE0YWU2MDkyMWRmNDMxMzkwYjJiYjJhN2E4Y2RhIHJlbGVhc2UyNC1tYWludAorNDE4NjggMDllZDZjOWJkYmQ5YTI5NWM1YzJjOGUwMDkzYWMwNzZhYjhlMWRiOCBzc2l6ZV90Cis0MTg2OSBjMTg1MDRjZWYyYmE2NWFjMzI1MTM1MjEzOWY0MzkxZjRiNzMxZjBlIHNzaXplX3QKKzQxODcwIGMzYWRjNzdlYjI4OTFlMjA0ZjJiY2VkN2VmMzE0MGZkZTJmZjI0N2Ygc3NpemVfdAorNDE4NzEgZjU0NDNiZGY5YjBkZjhjMTkzZmFhNzZhY2ZmOGI2NTQ2YTEwZmFmMiBzc2l6ZV90Cis0MTg3MiAxMjQ4NGI2NTlmYTg2N2E4NDQ4MzNhMjZjZWMyNjhmNDI5MjkzYjkxIHNzaXplX3QKKzQxODczIDQ2ZmY1YzU4NmQ4NjM5NzEwZWIzM2QxYTMyYjYyOWE2OTgzNjA3ZjUgc3NpemVfdAorNDE4NzQgYTIyN2VmMjZhMThkYmQ0MmQ4OTJiNzA0NjVkNDhjZWE4ZDAyYzllZiBzc2l6ZV90Cis0MTg3NSA1MGE0NzUyMWI0MGY0MzBlNWViZWE0N2I4Yzk4M2MyMjBhNTE3NmYyIHNzaXplX3QKKzQxODc2IGM4OGE4MzBkODMxYzFiZjM3MjYwZjQ1MTA1MGE5N2VjNmQ4YWUzYWIgc3NpemVfdAorNDE4NzcgMjkyNDM1YTczMmU4YzI0OWY5MWU5Y2JmYjNhMzBiNGFkMjMwYzg1OSBsZWdhY3ktdHJ1bmsKKzQxODc4IGFkZTQ2MzcxZjA0YjA1YzlhMGY2NjIwMzk2MzFhNzlhMDQ1OGRkZDYgbGVnYWN5LXRydW5rCis0MTg3OSA2ZGQ2MjU0MmI2ZTVkYmY4ZTFmMGRlMzRjMWEzZjgzOWY1MGVjNWJlIHNzaXplX3QKKzQxODgwIDg1YjJkODA0YWMwYWJjNzg5OTQ3OTk2Y2ZjNTQzZjk5MzVkZGMxZDkgbGVnYWN5LXRydW5rCis0MTg4MSBiOTA4NjU0NDM4MmUyMjA4MjM1Zjc0OWNlMTcxZThlMjg0NDJmNzI5IGxlZ2FjeS10cnVuaworNDE4ODIgZjMyMWJlMzRiODVkNWY1NTg0N2VmM2I1MDk5NzcyOGE5Y2Q4M2JiZSByZWxlYXNlMjQtbWFpbnQKKzQxODgzIDAzYTBiMThhNzViZjVkZGM4MDRkZjI5ZWY4MDQzNWI5NDM1MWE1NTQgbGVnYWN5LXRydW5rCis0MTg4NCBhODExZWJhMzBmYTRkZjNhZmI3NzAyODFlZDg5MWRlODhmMTc2YWZkIGxlZ2FjeS10cnVuaworNDE4ODUgOWI5Y2VkNGQ3OTIxZjZjYTEzNWU0MjQwZGQzOGQxOTgzZmQxODJiOCBsZWdhY3ktdHJ1bmsKKzQxODg2IDNmNjJkMzFkNTk4NWFiMjhkMTZmMDE2MGZhMGJhODgxMzc2N2MzYzUgbGVnYWN5LXRydW5rCis0MTg4NyA0MzFkNmU4N2I5ZmUwYmY0YmE0Y2VkOWFiMzY2Y2UxZWMwNjY5NzQ2IGxlZ2FjeS10cnVuaworNDE4ODggYjI2NDhjYTIzMWU4MDI1MzJkNDAyNjBhZTUzNWI5M2Q0YmJjNDJjZSBsZWdhY3ktdHJ1bmsKKzQxODg5IDc5NzBlMDJmYzg0N2I4NTE2MGI3ZTZmZWY5Zjk2ZmQzOTM2YmUxNWQgbGVnYWN5LXRydW5rCis0MTg5MCBjODI5NzVlOTFlOTk4NWM5ZmRmNTEzYWY2ODJiNDQzMmVhOTVjNDY2IGxlZ2FjeS10cnVuaworNDE4OTEgYmY3ZWVmNTA3MmI2OTE2OTNiMzYxYzJkZmI3NjkzMjI0MGYyNWIzOSByZWxlYXNlMjQtbWFpbnQKKzQxODk0IDgxZmE0N2QyZDQ3N2JkOWJmOGU2OTQ4MTU5YTU5ODUxODc3YTRmZTYgbGVnYWN5LXRydW5rCis0MTg5NSBlZTk4NGZlOTgxYjRlZmJhOWUzYjI5MWIwNWQyYTZlNjIxM2Q3OTc4IGxlZ2FjeS10cnVuaworNDE4OTYgZjgwZWUxNDI3MjdhODYyZDJkZWE5YjU3NWNkZGNjNWNmZDM5ZTVkYyBsZWdhY3ktdHJ1bmsKKzQxODk3IGRlZTkyZWNiOGExMTNjZjI4YjUyNTk2NDBiY2YzNDE1MmQ4ZDQ3NjMgbGVnYWN5LXRydW5rCis0MTg5OCBhYTQ1NjQ0OTI2NjAzYjA0YzUxNTJlNzdlNmYyNDY2NzhkNzE3NzljIGxlZ2FjeS10cnVuaworNDE4OTkgNzllNzBmYThjMjEyZmVjNzAyMGVhMmVjYTMxMjVlMTA3NmIxNzNmOCBzc2l6ZV90Cis0MTkwMCBjZWVmY2FjZTZmMjQ5OWRiNTAxNDM2NjJmZGU4NmZiMGJjNTIzYWNhIHNzaXplX3QKKzQxOTAyIDZjODE0NWZlNDk1ZWRjOTA1OGM4YzE0N2VlYTExOTZjMDNhYWQ1ZWEgc3NpemVfdAorNDE5MDMgZWYyZDdiOWZkZTdjZjllNGQ5NWFjMWEyMGZlYzBhYTI4ZmE5Y2U0YiBzc2l6ZV90Cis0MTkwNCA2OTFlZTUyNGYwMjc1NGE5YmRkMjc4YjE1OWVlZjE1MzJjODhhNDljIHNzaXplX3QKKzQxOTA1IDc2NTRkYTM2ZmU5Y2NhODY5ZTAzZDFhMTYwNTMwNjNmZTMzNjdhOGYgc3NpemVfdAorNDE5MDYgZjA2MTMzYmNjMDVlNjY3YjA1MzVjOTA5MTc3ZDE2YTg3NTI0NDcyYiBzc2l6ZV90Cis0MTkwNyA1MmE3NGEzMjM2ODIwNjc3Y2UxMTI3NTlmMzE4NDY1YTcxOGYwOTljIGxlZ2FjeS10cnVuaworNDE5MTAgNjE0OTQ4M2Y3YTNkNTU0M2M4YzVkNzczMDFkZTdlNTY2NDhmOTIzNyBsZWdhY3ktdHJ1bmsKKzQxOTEyIGVjZmVkMWY3NDc4Y2NkYjg3OTIxMjQyZTk3OTI4YWFkOTE1NTI0NzIgcmVsZWFzZTI0LW1haW50Cis0MTkxMyA5MjA4YTc5ZjU2ODNjZGJiNDk1OGM5Mjc1OTljNmE1NzMxZDQyYWY5IGxlZ2FjeS10cnVuaworNDE5MTUgMDM2MDhkNjZlNTlmMGM1NDQwMDFiZmQ4ZTdlYjhmNWNlYmMzZGFlMiBsZWdhY3ktdHJ1bmsKKzQxOTE2IDBiMTBlODU1ZGFkZjY0ODIwZTM2YTFlYjZlZGUxYWEyMGM2ZTNmZDcgcmVsZWFzZTI0LW1haW50Cis0MTkxNyBlYTZjZDFiZTk4MzdiNTI4OTUzNGJjNTE3YzYxZDAxMGQ1Yzg4ODZhIGxlZ2FjeS10cnVuaworNDE5MTggMjZiZThiMWQxODUzMDE3ZGM0ODVkOWJmMzUzOTNmNjJhY2ZlNDRlNyByZWxlYXNlMjQtbWFpbnQKKzQxOTE5IDkyZWY1NmM5N2NkZjQyMTBlZDYzZTZjNGFlMDEwMmFiN2ZlZDNkNmEgbGVnYWN5LXRydW5rCis0MTkyMCBiMzQ4MjE2NGExMDAzODE0NWIxOGU3ZmYwZjFiYzU4OTNlZThlMWFlIGxlZ2FjeS10cnVuaworNDE5MjEgNDRmMDc2MGUyNGExNjllZGFiODNmNDQ1ZTJiNzlmYmNmNzBhZGY0NyByZWxlYXNlMjQtbWFpbnQKKzQxOTIyIDM4YjBmZTUxYjBiNGY5OTVlNWM5ZDVmZDRlODBiYmNjNzBkZTI5NDggcmVsZWFzZTI0LW1haW50Cis0MTkyMyA0NGNmY2E2MTM2YzYzODJhNmU5YWJiYTkzMGIxY2MxMjA5OWIxMDczIGxlZ2FjeS10cnVuaworNDE5MjQgMDMyOTI0ZTc1YzI0YmEwMGRiZjE2MWJmOGJjNmI2Njk5ZDFhYjNlYiBsZWdhY3ktdHJ1bmsKKzQxOTI1IDAxY2JlZDVlODczMTA3MGIxN2YzNDg4ZjVkNTBjNWFhN2MwMjlhOGQgbGVnYWN5LXRydW5rCis0MTkyNiA4NzkxZThjNDQ4YjMxZTMwMDc0YzMxNzc4Mjc4OTMwMGMxYjUwYjQ3IHJlbGVhc2UyNC1tYWludAorNDE5MjkgODI1YTA0MTgxM2ZiZWUwNzhhM2JmZjNmMTEzZGVmM2E0ZWFlOTI3NCBsZWdhY3ktdHJ1bmsKKzQxOTMwIDIxNTMxZTM5MjExNmEwNjFmZWEzMTg1NTg5ZDQ1NmZjZTNiZTExNzAgbGVnYWN5LXRydW5rCis0MTkzMSAwM2E1NzQxY2ZlYTlmNjBhYmVmM2NjZTdmYmFiM2ZiYWU3MmI5ODI2IGxlZ2FjeS10cnVuaworNDE5MzIgODMzNjQ3NjNjN2IyYzZhODM5MjExMjU1MzljNTk5Yjc1MzgwYzM0MSBsZWdhY3ktdHJ1bmsKKzQxOTMzIDZkNzQzZTViYWYxNDdhZTRiNTFjNDJiOTJiZjI0NjA5YmZmMjQxY2YgbGVnYWN5LXRydW5rCis0MTkzNCBjZWUwNTk4MGYxZmQxYzUyM2YzNDIzNzE2NWZmOTg4NDJhMjNjMTk3IGxlZ2FjeS10cnVuaworNDE5MzUgOWI4ODg1YzllNTUxYzM5Y2E0Mzg5ODBhNzI0M2YwZjZkMTg0MzYwMyBsZWdhY3ktdHJ1bmsKKzQxOTM2IGM5ZGEwOGQ0ODJjMzZhZmZhOTkxNjViMmNlNTQ1N2Y0N2JlODY2MGIgbGVnYWN5LXRydW5rCis0MTkzNyAyNDEwNzhlZTZlODdhZTg2M2UzZWIxMTRmZGUxNWYzMzc4NDhjNDU5IHJlbGVhc2UyNC1tYWludAorNDE5MzggNjVkZjI1Njc0ZDFhZWY3MmQyMTcxNjcyMzI2ZDg0NDAyYjkyMDZhNCByZWxlYXNlMjQtbWFpbnQKKzQxOTM5IDc3YjRhYWFkNjkwM2ViYjhmZGUxY2U5NGI0MzFmZjM0MmY1MzMxYjIgbGVnYWN5LXRydW5rCis0MTk0MCBmNzIzZTE5ZmEzYjcxYTIwYjIxZmRlNzQwMmY5ZWI1ODhiYmRhZmYwIGxlZ2FjeS10cnVuaworNDE5NDMgYjEzOWM5OTk2NjVkOTk3OTI2ODlmYzNiMmNjZWNlMDRhNDI0NTJkNSBzc2l6ZV90Cis0MTk0NCAxMjIwNThkZmJhNzY4YTkzZDkyZmRiYTE5YTg1OWM1OTg3NTQxZDNmIHJlbGVhc2UyNC1tYWludAorNDE5NDUgNmUxNzk2OGQ0ZGU5MmIxNjMyYTgzZmY4NjI1ZjM4MmYyNDQyZDJkNyBsZWdhY3ktdHJ1bmsKKzQxOTQ2IGExYjFlNDUxZDgyZTg1ZTc5NGZhY2Y5MmU3MmFkMWJmMzNmNzY5ZjcgbGVnYWN5LXRydW5rCis0MTk0NyA0YzhhNzRhMjAyMjc4MzQ4M2M4YzJiNzM4YTRjOWJjYjIwZTMwNGNiIGxlZ2FjeS10cnVuaworNDE5NDggY2Y2OWUzMTkxMjE4MjhiNGE3NTJhYmQ4MWZmYjliYzMyNWM2YWIwMSBsZWdhY3ktdHJ1bmsKKzQxOTQ5IDE2ODVkY2QyZjkyOTkzY2Y1MWU1ZTMzYzllZmMwMjQzZmY3M2FlNmQgbGVnYWN5LXRydW5rCis0MTk1MCA1NmFkOWYyNzViZWMxOTNkMjk2M2MwYmEyMjU2YTBhNTgzMjY3NjgwIGxlZ2FjeS10cnVuaworNDE5NTEgYmI2ZmE0YTMxZjE1Mjk3NjAzOWUzYjY3ZTFhMzg3YWMwODZkYjYxZSBsZWdhY3ktdHJ1bmsKKzQxOTUyIDAyNmFlMWI4YTdlM2JhMDVlMTRjYWIxMGUwZjFmZjZiY2ExM2JkYjkgbGVnYWN5LXRydW5rCis0MTk1MyBlN2M5NmMxZDE0NGJhNzQyODU0MzhlMTM3NjFjZTVlZTgwZDJhNmY0IGxlZ2FjeS10cnVuaworNDE5NTQgZThkZWM3OGNmYTJlM2U2ZjRmMzI4Y2YxMmM0Zjc3NGRkYzRlZjE3YSBsZWdhY3ktdHJ1bmsKKzQxOTU1IGRlZDRhNDk3ZWI3NmZiODdiZGVjODJlYzkyYjk5YTUxZDhmYzU0YjAgbGVnYWN5LXRydW5rCis0MTk1NiBkM2Y0YzQ2N2U0MzlhMjU3ODUzZWU1ZTI4OTgyOWRhMDkyM2UzMTgyIGxlZ2FjeS10cnVuaworNDE5NTcgYTc3ZTViMDQ2YTUwODc2MzM4ZThjMTc3ZWU3ZmQwYWEzMmZkNTllMyBsZWdhY3ktdHJ1bmsKKzQxOTU4IGI5ZGQ0ODFiMzk3MmRkNjQwMTNiNWNiNmNjOWVlYWMxY2U4NDk2OTUgbGVnYWN5LXRydW5rCis0MTk1OSBlOTRlZTU5YTJkNDYxZDk1MDRhYzdmZTkxMWMzZWViOTI3MzdjZTlhIGxlZ2FjeS10cnVuaworNDE5NjAgOWY2NmJkZDVhMDYxMjM5MjQxYzg3ZjA1ZjYzOWNhODJlZTFjNjU1YiBsZWdhY3ktdHJ1bmsKKzQxOTYxIGVjZDQyMzcxOGEzMjdkZjU2ZDk5NjNiOGYzZThjMTY1Yzc1ZjI4ZWUgbGVnYWN5LXRydW5rCis0MTk2MiA4YWI3OGZiNGQxN2VkNGFjMTllNmQ3ZTk1ODU5YzFmMzAwODRiZTU5IGxlZ2FjeS10cnVuaworNDE5NjMgMGY4YzU1NDZkM2JmNDRiNzU0ZjNlMGZkOGFkMDI3NGRkOWUwZmRjMiBsZWdhY3ktdHJ1bmsKKzQxOTY0IDkyZTI0NjhiZGI0YTZhNDAzMTdjZGViZTM4ZTU3Mzc4Njg5ZDRkZmEgbGVnYWN5LXRydW5rCis0MTk2NSAwMGJkYzA4YTUwN2RlYzlkYTBjNmRlNjNhMTE0Y2M0ZjM1ZmU2M2M3IHNzaXplX3QKKzQxOTY2IGFmN2Q0ODQyMDhlOTI3MWE0Y2JhYmU0NTgyNWU2NjNiNzk2NjFlNTcgbGVnYWN5LXRydW5rCis0MTk2NyBkMjIyNGM4ZDQ1NDkyNjI1NDkzYzk2MjdhOTJjZjhjMDUxNzZkOWUyIHNzaXplX3QKKzQxOTY4IDU1N2U5YjZlZTdlMTFlNmY3ZWE1ZWEwNDI3YmZiMDQ3YjBlNTQ3NGUgbGVnYWN5LXRydW5rCis0MTk2OSAwZjUxODk2MDcyNjQwYWUxMTY3OTJiMTQ2MGZmY2JiM2Q5MWM3ZWZmIGxlZ2FjeS10cnVuaworNDE5NzAgNjBhNWExYWExNjgyYjY3MGUyM2U3ZmRkMDliYmQ5M2MzMWVkNjY1OSBzc2l6ZV90Cis0MTk3MSBhOWFiZGIxNGNmM2I3OGE0N2E5ZWJjMzRjZWI2YmExYzFmYmM3ZTUyIHNzaXplX3QKKzQxOTcyIGEyNjQzMjUzYWM3OTYyOTRiM2M2OGQ5MTlkOTRlOGZmNmYxNDFmYzMgc3NpemVfdAorNDE5NzMgMDk2OGYwNjJmMzUwNjk4OGI4ODZhNGY5YzFiNTJlNGMyNjdmMWUzMCBsZWdhY3ktdHJ1bmsKKzQxOTc0IGU3ODgwZjRmNTNhNDBkMzEzYzdhMDQ3ZDUwNDI1MjMzNjIyNGE4YjkgbGVnYWN5LXRydW5rCis0MTk3NSBkM2U2OGNiNzM5ZmIyNTc1ZmE1OWE0Y2Q0OGIzOGUxNWExYWY1MjE3IGxlZ2FjeS10cnVuaworNDE5NzYgNTkxZGY1NGQyZDMwZjE0ZTA2MTI0NWM2Nzk4NTRhNDUyODgwZWRhOSByZWxlYXNlMjQtbWFpbnQKKzQxOTc3IDNiYTlmZjc5YmIyOWI5NDdlYjk3ZThmOTkzNTA5MWQ4NTNkMTZmZTUgbGVnYWN5LXRydW5rCis0MTk3OCA4MTFkNjQ0ZDE5MTc2NzcxMDU0NzYxYTI3ZGZhZTgxNTBkNzE2YmQwIGxlZ2FjeS10cnVuaworNDE5NzkgNGFjOWI4ZmNkNjNlYThkODUzMTI2OTk0NDkzNTRlMmRlZDdhZDU5YSBsZWdhY3ktdHJ1bmsKKzQxOTgxIGYwOWU2MDkxYTc2MjllZWZmYjc2MTY1YjA3OThiMzBlM2QyMzIzMTQgbGVnYWN5LXRydW5rCis0MTk4MiA4ZGYxOTQyOTRjOTBkYzRhMTFkZjkwYmI1ZDJlZTMyMjU5NTg1YjRmIGxlZ2FjeS10cnVuaworNDE5ODMgZDQzNGIzYzczOTAxNjBmMzUyMjA5NDNkNWM0M2VkODZkZWFjZThiYSByZWxlYXNlMjQtbWFpbnQKKzQxOTg0IDI3YmRjMWUyN2VlZGI3ZWM0NTliY2I5ZTNiMDQzNGM4ZWZkNmViOWYgbGVnYWN5LXRydW5rCis0MTk4NSBjM2I0MmI3YmQ2ZDlkYWFkYzRhOTc2ODZmZWJkODQ3ZWNiZDgwNjRmIHJlbGVhc2UyNC1tYWludAorNDE5ODYgM2MxNTk3NmZmNjE4NzJiNWI5MDJiYzJiZDNlYmVkYWEwNmEyMzg2NCBsZWdhY3ktdHJ1bmsKKzQxOTg3IDZjZjdkMDRkY2MxZjU3ZTY3MzM3ZDE2MDllZjdlNmU1NDEwY2VmYmYgbGVnYWN5LXRydW5rCis0MTk4OCAwOWMyMWE2YmU2MDQxODQ3OGM3YmM5OWRmYzE1YzYzMDM0MTViMjk4IGxlZ2FjeS10cnVuaworNDE5ODkgOWY2ZWRjODc0NTQxY2QyOWMyNDQyZTQ5MTE0MGI5YjYwZWE5NmJjMyBsZWdhY3ktdHJ1bmsKKzQxOTkwIDI2ZTc4YjE5NmMxNzI3OGE4NjA5ZjNlZWEwNmYwODIzMjg2NGRiZWMgbGVnYWN5LXRydW5rCis0MTk5MSBjYWQ1OTFkOTIxZWNiMDJkNDAxZGQ5MzM5MzQ3NjJiNDc5ZjAzODFjIGxlZ2FjeS10cnVuaworNDE5OTYgMzAzZGVhODQ3NjM5MDRmYjg1NGNjYzhiOGU2Zjc3MTRlMWY1YWJkNSBsZWdhY3ktdHJ1bmsKKzQxOTk3IDc2YTFjMjBlODMwZTU1YzAyMWEyNWQzN2I4ZmE4YWEwMzIwNGJjZjQgcmVsZWFzZTI0LW1haW50Cis0MTk5OCAzYzAzMGVkZmY5ODVhNmJjOTk5YmYzZjcyYzc3NmFhMzI2YjczYWRhIGxlZ2FjeS10cnVuaworNDE5OTkgOWRmMzljOTYwYmYxYzY4MGJiMzRmMTdmY2ZiZWU2MDNiZTk4ZjZiZSByZWxlYXNlMjQtbWFpbnQKKzQyMDAwIDc5MGY4ZDllNDk4ODk4MTE2ODAyYTcyZmU3NTA0ZmJmMmIwMWY5MmQgbGVnYWN5LXRydW5rCis0MjAwMyA0MWVmMjkxMGRkNDk4YjBmODRlOGY0Y2JhM2E4MWUzZGQzYTU1ODk4IGxlZ2FjeS10cnVuaworNDIwMDQgMzVkZjZkZDgwOTExMGM3YjRlZGEzMjFmYjc3Yzg3YmFiYWUxYjMyYSBsZWdhY3ktdHJ1bmsKKzQyMDA3IDBkNTMzNTM4N2JhNzMyYzg0ZGY4ZTU5YTE2MzJjNTFmY2Y5Zjg4NzQgbGVnYWN5LXRydW5rCis0MjAwOCA0NzViNjQ1ZTEyZjVlYzA1OGMzMjgwYmY0MDI1ODZhZDU0YzZlMTNhIHJlbGVhc2UyNC1tYWludAorNDIwMDkgODc0N2JmNGI5NTQyMmNiMjNjZjA1NTEyMTUxYzgyMjRkZjMzOGI4NCBsZWdhY3ktdHJ1bmsKKzQyMDEwIDIxZTE3OGI5MzAzMGQxYmZhMmJhYzYzYzlkYzBiMDc0YWMyMzVhNDUgbGVnYWN5LXRydW5rCis0MjAxMSA4NGJhMjk5ZTJiNWZlZjQxMWIwYTcxZmI4MTZlZDU0NzI2MDZjYzNmIGxlZ2FjeS10cnVuaworNDIwMTIgZDAxMDQzNjRmNmQxYzg0MDgyNzcxODRlYmJkYjBhMzJiMjNlOTUwZCBsZWdhY3ktdHJ1bmsKKzQyMDE5IDVkODE2OTI4YTIyNDVlMTc0NTMxZWQ3M2RhYzcwNjU2MDVlY2U4NGIgbGVnYWN5LXRydW5rCis0MjAyMCBlMWZkN2JkMjg5NWIwN2Q0OGZmZTNhZjkwNGEwZDY1OTExNmUzMGU2IHJlbGVhc2UyNC1tYWludAorNDIwMjEgMTkyZTgzODk0ZTg5OGNhYzQwMzY0ODVkYzA2ZDc4MTNkYWU3NDEyYyBzc2l6ZV90Cis0MjAyMiA4YjhmMWE1MTQ2OGFkMjQ4MTEyYTY1ZDRjZmY3ZDk2NTA0YzBkM2I3IHNzaXplX3QKKzQyMDIzIDBmZTc1YTA0NmMwMDU0ODBmMjRiMDliNWI0YWQ0ZTYxN2ViOTBkYjUgc3NpemVfdAorNDIwMjQgNGY5NTA3YmU1ODU3OWI0MmNkMjk2NzBhNTZiMWM1MDc5M2I0ODA2NCBzc2l6ZV90Cis0MjAyNSA2NjJjNjM5NTRkZjI5NGI3NDg0NDAwMTY2OGVkNmQ0N2Y0ZDU5NGRhIHNzaXplX3QKKzQyMDI2IGZkMWIxMmQzYWJiNjljMzlhZmM4OTFjN2IzMTgxMTQ4OGVlNmQ5ODUgbGVnYWN5LXRydW5rCis0MjAyOCA1Mjc3NzcwYmM5ZDFiYTZhYmI3YjQ4MGEwNWI0NDQ5YjBhMTU3YjkwIGxlZ2FjeS10cnVuaworNDIwMjkgYWIxMzBkNTY2OTMxOWU4ZWE4M2U2ZDBjNzVlMDBmMGQwZmY5NWU3NiByZWxlYXNlMjQtbWFpbnQKKzQyMDMwIDVlMmE1OGM4NjdmNzJjMzcxYmZiYmNiNWY2NmI0OTA2MDI5YmQ1ZGEgbGVnYWN5LXRydW5rCis0MjAzMSBkYTA5OTVjYTFmMzA3ZTc4N2MyNGY4MWNjMDlkNjY1MTFmYjYyZWFlIHJlbGVhc2UyNC1tYWludAorNDIwNDEgNzhhNjk3NTk1NDdlYmU4MDEzZmVkMDBlOTNmZjZlOTE3NzQ2ZDU2NiByZWxlYXNlMjQtbWFpbnQKKzQyMDQyIDIxZDMwZjhlNDFmZmRlNjc4Y2M0NDBlMjJhOWExYjlkYmE5MDRlMzUgcmVsZWFzZTI0LW1haW50Cis0MjA0MyBlNjA5ZmVhOTJkMWUxOGE1ZmVlMWZhZWViMDRjYWE5NDE0MzdiM2ZlIGxlZ2FjeS10cnVuaworNDIwNDQgMGIyMzFjMDVhN2VkYWMxNjZkNDdiNDI3YzliMGRhMTAzYzZlMzJhOSBsZWdhY3ktdHJ1bmsKKzQyMDQ1IDg2OTc3NzZiYjQyMDM3YzIzMjUzMTU4NDdkYjVkN2VjZDI1ZTFiMjcgbGVnYWN5LXRydW5rCis0MjA0NiBhZTQ0ODA5MzUwMTYwZTU4MzMyOTE2NjUzMmE4ZWUxZWE3Y2RhOWMyIGxlZ2FjeS10cnVuaworNDIwNDggYzEyODAwMDIxMzk2OTkzMWQ1ZGExNGRmNWU3MjQ4MDUzZmQyOTNhYyBsZWdhY3ktdHJ1bmsKKzQyMDQ5IGM5ZWE1NTcwZGFjN2U2YzFmNGMwZjk0MTlmYTFlYjhlZWIyZDBlZmYgbGVnYWN5LXRydW5rCis0MjA1MiA3Y2E1MWNiNzBjMmUyNGRhNjI5Zjk5ZjIzOGJlMDJiM2FkNjJjMzgwIGxlZ2FjeS10cnVuaworNDIwNTMgYjk0ZWU5MmE2ZDZiNWViNTllODRjOGU0OTk0OGViM2ZjNmVlMDQ5MyBsZWdhY3ktdHJ1bmsKKzQyMDU0IDA3ZmJkMzRmMWY2ZWQxMzFhZmNiNDZlNDZmMmNmMzE3MzhmZjkzYTcgcmVsZWFzZTI0LW1haW50Cis0MjA1NSBlZjFkOGQ2YWM2YmVmYjZlNDg3YWU0MTkwZjE3ZTMyNjM1MzcxMjI4IGxlZ2FjeS10cnVuaworNDIwNTYgZWYzYjQzNTc4YTVmZmE3NzE0MzczYjVmMGU5YTJlOWNmNzE4ZWQ0YiBsZWdhY3ktdHJ1bmsKKzQyMDU3IGEyMTI1M2ZiMDhjOTcyZDAwNjFhMjQ1YjcxYWIxYmM1YTc3MWFlNjQgbGVnYWN5LXRydW5rCis0MjA1OCBlNzAzM2RmZmQ2MGNhZTgzNDk1NjE3NjdjMzBkZmUzMjNlMDdlMGUxIGxlZ2FjeS10cnVuaworNDIwNTkgYzdjZmVhMWViYjMyMzQxOWUyOWFmZGNiMWRlZDc1ZGI1YjJjNGVjYyBsZWdhY3ktdHJ1bmsKKzQyMDYwIDZkMmJlM2I3NmYyZTI4MzY1NzM0NTc0ZGNjNjNhZmNjYmMxZWQ0ZTAgbGVnYWN5LXRydW5rCis0MjA2MiA5ZWVhYTMzZjk2NDA2MzNjNjE2MjhiZDdhZGY1OTk2ZTUwYzZjY2M0IGxlZ2FjeS10cnVuaworNDIwNjMgYjBkN2QyOGNkNzQ2MWYyZjFjMzRkMzU2OTBjMTI4ZGZhZTAzZDhjOSBsZWdhY3ktdHJ1bmsKKzQyMDY0IDM4OGViYzZlM2RlMTE3OTczMzE1MDdkMjI5MmI4YWIxMTE2NGUxM2IgbGVnYWN5LXRydW5rCis0MjA2NSBlOGZjNjBjNGZhYWQ3ZTNhNzdlMmY4NjlmYWYzODAyZjNlNmU0MWViIHJlbGVhc2UyNC1tYWludAorNDIwNjYgNDA1YWIwZGM5Y2JjMzkxM2Y4ODQ5ZTkwMzE1MjUxZWJjMGZiZGVhMiBsZWdhY3ktdHJ1bmsKKzQyMDY3IDQzYjE2ZWVmZjIyNmIyZWVkY2NkNDM1MDI5MmM2ZGZlMWFjODIxYTYgcmVsZWFzZTI0LW1haW50Cis0MjA2OCAyYWZiYWFlNmI4OGUwYmFjZDJmMDI3ZGY5MDc0YWYzYzNlMGNmNGQ0IGxlZ2FjeS10cnVuaworNDIwNjkgMmM4NjMwYjZiYzM1OTk1OGIyYTA3ZTY1N2YzYzhjNTQ2NDUwMGQxZSBsZWdhY3ktdHJ1bmsKKzQyMDcwIDAyOTRlNjY2Mjc0OWFkNGM1M2VlYWE5ZmY3ZmEwNGQ0ZGRhMjY5MmMgcmVsZWFzZTI0LW1haW50Cis0MjA3MiBiZWNlYjhlNjZiMGJhMDRhZDBkMzA5YzE0YmQ2ODk3NjNlMzRlZWU2IGxlZ2FjeS10cnVuaworNDIwNzMgMmY3YjU0MDIyYjNiMWVlM2M2Y2Q0M2Q3YThhNTNhMDU0OTI2MDBhZSBsZWdhY3ktdHJ1bmsKKzQyMDc0IDRkYmE2MWU0OTAzN2ZlYmM5MDg2NzU1ZWI2NGYyZDU3OWQ2MDJlM2QgbGVnYWN5LXRydW5rCis0MjA3NSAyMGYyMWRjNzM5NmYyM2RlOWM3ZjBiMTA5MjdjYjc3NjNhNzY3NjM5IHJlbGVhc2UyMy1tYWludAorNDIwNzYgMzcwOWNlMzdmZTFjNGYxZWQ2YTFkYWM1M2Y2NTE3MjhmM2Y0Yzk4ZSBsZWdhY3ktdHJ1bmsKKzQyMDc3IDY1ZmU5YWNlZDAwMmJjOGE1MGM2OTFkZDhmOTliYTY0NTg2YWQwYzcgcmVsZWFzZTI0LW1haW50Cis0MjA3OCBiYzE4M2I1ZjhiYzE5ZGVmZTcxZmUzYTg0YWE5NWQ0OGM1YjVjY2I3IHJlbGVhc2UyMy1tYWludAorNDIwNzkgZTM2NDhiYTkxOGVlNDAwODA1ZWNkM2Y0NmQ2MzkyOWUzNDE5NGY2NSBsZWdhY3ktdHJ1bmsKKzQyMDgwIDJhZTQxNmFhY2I4ODc3NTdkZDk0ZTk1NzczNmFmNjIwOGU2NGY3ODQgbGVnYWN5LXRydW5rCis0MjA4MSA3YmI2NGFjZWFkZDdjOGM2OTNjZjNiMTk0OTI5YWIyNWM1ZmViNDJhIHJlbGVhc2UyNC1tYWludAorNDIwODIgYzRjOTNiZGUxODVjN2ZmNDQ1MWIwMjgxMDgyZThkMGIxMGJjNDUyZSByZWxlYXNlMjQtbWFpbnQKKzQyMDgzIDFlZjUwNjNhMGM2ZDk1NGVmM2ZlYzI4ZWYxZDU3YWZlY2JkZDc2ZTIgbGVnYWN5LXRydW5rCis0MjA4NCBmNjJkN2QyYzUwZGVlZDM0ZjhiNmU0MzA1NWQ0ZjE1MTFhZTA0NTA4IHJlbGVhc2UyNC1tYWludAorNDIwODUgNDk2NmEzNjFmOTM2NDI0NjVmYmQ3ZGEyY2U1OGIxZmJlYmIyYmYxZiBzc2l6ZV90Cis0MjA4OSA4NWI1YTJjZGJhYzEwN2JmZjE3NDA1ZjQ3MjhmODIyYTM2Yzg4ZjQ1IGxlZ2FjeS10cnVuaworNDIwOTAgYWUwN2IwZTdkNzBhODlhMDc3YzA0NTAwMzk1NmFhZDc0MjhhNmFjYyBsZWdhY3ktdHJ1bmsKKzQyMDkxIGM1ODMyMTRkNGM1MTA5NGM4YTQ2ZDk3ZDljMWM4NDE1YzI1ZWQzNGMgbGVnYWN5LXRydW5rCis0MjA5MiBkNzlmMDQzMjg0YmQ1MDZmY2E4ZjBjM2M3ZmU2NDlhZmJiMzdlMTAxIGxlZ2FjeS10cnVuaworNDIwOTMgMWFmN2Y3MTllZDI4ZjI3Nzc1YjFhYWM5OWE4NThkMDE4YWFiMjI3OSBsZWdhY3ktdHJ1bmsKKzQyMDk0IDNlZjEzODBmZDgzYzJlYjU3NzkyZmEwZGRjMWYxMWNjYTJiOWZhMjIgbGVnYWN5LXRydW5rCis0MjA5NSAyZTE1MWJjODIwZjcxODQwOThlMWE3ZmY5NzM5NGFjY2RkNzJmZjRiIGxlZ2FjeS10cnVuaworNDIwOTYgMjEyYmMyMzYzMmFiNWQ0NzQ5M2NkMTVmZGEzMTJhOWI5ZjMxZWJhNiBsZWdhY3ktdHJ1bmsKKzQyMDk3IDJkM2ExYzNjOTMwNTY5MTNiMmJjNjBmZjM1YjIyMmNlODhkYWIwZjggbGVnYWN5LXRydW5rCis0MjA5OCA2ODc0ZjI2OTNlYjhhMGVlZjlkNjhjZWNlYmUxMzhhOTkxNmNkOTU2IGxlZ2FjeS10cnVuaworNDIwOTkgYTUzMDE3NjE4NTg2NWVmOWViYjA0MjI5ZjFmMTJjNjEwMGY2N2RkMiByZWxlYXNlMjQtbWFpbnQKKzQyMTAwIGI1ODc2MTBlMjA2OWE0ZDljNGI2NzlhZTk0ZWI0Y2U3NTQxYzE3MzEgbGVnYWN5LXRydW5rCis0MjEwMSAxZDc2NDYzOGFiZGQ4MDMxNzZhMDVjMTMyMzdiNTRhY2FlNWFhMzI5IHJlbGVhc2UyNC1tYWludAorNDIxMDIgZWE2YTQ2ZDhjNTFlYzBhYmM5NGYyYmZlNGZhMmM1NDJjYmQ3ZmEwMiBsZWdhY3ktdHJ1bmsKKzQyMTAzIDk4ZmFhYzFkZjViYmVkZjVlYjBmZjVmMjcwNDE1NDE5NDY5ODU0ZDQgcmVsZWFzZTI0LW1haW50Cis0MjEwNCAwNzBiYjQyMWEzMDNiY2UyMDAyNzM0MTliMGYxMmE4MjRkYWI5YjVhIGxlZ2FjeS10cnVuaworNDIxMDUgOTI4ZGU0YTNiZTZmNTQ5YTEwYjgwNGM2ODM5YzY4OTViMDIxYzU4YSByZWxlYXNlMjQtbWFpbnQKKzQyMTA2IDVlOGFmMjQyMzU3NTA2MzQxYjcyMjNkODk2ZWQzZjk0ZTQ2YTZhNzQgbGVnYWN5LXRydW5rCis0MjEwNyBmZGE5MTJmZThiOWFkYzQwNzhiMTZkMmE3ZmI2YmFlNzM4NTY4NDI5IHJlbGVhc2UyNC1tYWludAorNDIxMDggNzZhYmEzZmE0ZTJmODE3YjVlNTMxZjMzOTdkZDhkZDE1MDExMzlhZSBsZWdhY3ktdHJ1bmsKKzQyMTA5IDE3ZjA5OTQ3OWU2YjczZGNlZTVkNjcyNTYwYzdlNzJiOTg3ODI4NTEgcmVsZWFzZTI0LW1haW50Cis0MjExMCA0YmNmNWZlNTRkODM0MGFhZDc0Y2UzYjI1Y2M2MDNkYjJjNDJiOWQ5IGxlZ2FjeS10cnVuaworNDIxMTEgOWVhZTMyYmRmODAxYjY3MDFiYzdiOWY4ZTlkOGQyMzAzNTA5OWZjYyByZWxlYXNlMjQtbWFpbnQKKzQyMTEyIGFhN2FjOTA4N2ExYzMwNjMyYWJmZDc5NTAyMDg2NDc1MDFhYjY3MWUgbGVnYWN5LXRydW5rCis0MjExMyBjMmIxNDk3MzEwZDEwMTU5YmMzYzUzNDg1ZWE3MGE5NGNhMWUxMzUzIHJlbGVhc2UyNC1tYWludAorNDIxMTQgYWVkMzJjZTM1YjgyZGZmYWQ3ZTViMjljYTZiYjJlMTMzYTgwNmRjYyBsZWdhY3ktdHJ1bmsKKzQyMTE1IGQ0OGY0YTRhMzA2ZjU5M2VmMGExMTRkYzE1YzM2MGUxNzAwNWU1MTMgbGVnYWN5LXRydW5rCis0MjExNiA1ODI1MWM5OTA0ZTE4OTI3MDQ0NmU2MzM1ZWEzMGIyNTVkYTdhNzk0IHJlbGVhc2UyNC1tYWludAorNDIxMTcgZWI0YTQ3YjgxOTQyNGNjZjM2OTgxMWNkNmIzMjJhYTgwYTZiN2Q1MCBsZWdhY3ktdHJ1bmsKKzQyMTE4IGIwYTlhOGQxNGFiMjIyNDRjMGFiMDRhM2M1MzA4ZWEyYmIwZmY4MTMgbGVnYWN5LXRydW5rCis0MjExOSAzMTVmNDQwN2FiMTJkNTc3ZTAwN2U4YTdjNzNjNmE3MGJiODI0YTU2IGxlZ2FjeS10cnVuaworNDIxMjAgZjhmY2NhZTZhMGY1ZGM4Mjg3ZjA2ZWE3NzY1MmFjNGUwYjJkYmJiNSBsZWdhY3ktdHJ1bmsKKzQyMTIxIDZlMTI3MDczNzFhMTMwZWVkNDJkYjEyMDIwMGU4ZTZmNmU2MTI4NWQgbGVnYWN5LXRydW5rCis0MjEyMiAxOGEyZDc1YTNjNjk2NDRmNzEzYzI1NTliYzNlOTk1ODdmNWIxMWJlIHJlbGVhc2UyNC1tYWludAorNDIxMjMgM2E5MmU1NjU0NzQ4NWFkODhkZmQ2YjhkY2IxZTRhYzc1YTkwNGFhMyByZWxlYXNlMjQtbWFpbnQKKzQyMTI0IGJhMTYwNDY0YThjNmMxOWNhMTMzOThkY2ZlNmNlOWM3OGIwNWMwZmMgcmVsZWFzZTI0LW1haW50Cis0MjEyNSAwNGE5NmNjODg1ODNlYzNjMjFmOTBmM2FmNGM3ZDFkMzBmYjMxZTE3IGxlZ2FjeS10cnVuaworNDIxMjYgMjQ0NTYzMzgwMjZjMDRmMmQ1ZGY4MjAzYWNlZDUyNDU4OWU5ZjJkNyByZWxlYXNlMjQtbWFpbnQKKzQyMTI3IDFlOGY0NjczZTQ0NzQ3M2JhYzRjNGUxNDFkOWY2NjgyNmNkNjdhYjQgbGVnYWN5LXRydW5rCis0MjEyOCBiMDVjNGNhODU5NDM0ZGI3NjFmZjNjZjUwMTBjOWQ3ZWU4OTcyZDBlIHJlbGVhc2UyNC1tYWludAorNDIxMjkgNDc0NmZhYjM0MDEyNDRmZmJmNGJmOGNjNmNiYjM3NGZkNDYwOTVhYiBsZWdhY3ktdHJ1bmsKKzQyMTMwIGFjMDJmNjU1YjMxZTM4MDhlMmZhYTc3YjlmZWRjNTJiZGFhNzcyMTggcmVsZWFzZTI0LW1haW50Cis0MjEzMSBjYTZjODAwYWQ1YTAyYzExOWJiMGMzYTM5ZGQ3MGFlZjZjYTEzYjY1IGxlZ2FjeS10cnVuaworNDIxMzIgNmZjYjU0MDUwNzRlN2E1ZTU4NDlkYmY0YTBmMzdmN2U3NjM3MjMyYiBsZWdhY3ktdHJ1bmsKKzQyMTMzIDk3ODg1YWRmNzNiNTQ3MWFjN2RhM2E0MzJmM2RmODFkMDJjY2Y3YWEgbGVnYWN5LXRydW5rCis0MjEzNCA3ODcwMmE1MDI4YTQxZjg1YWI4MGY0ZWM3MGMxZDVmODFhNTAyZDQwIGxlZ2FjeS10cnVuaworNDIxMzYgOWY3Y2UyODQ2YzMwOTU5YzU0NWQ5MTE0NmY4MTc0OTU1M2E5MzNkOCBsZWdhY3ktdHJ1bmsKKzQyMTM3IDYxYjhlM2UzZDY0MTgzYWNjMjgwNjQ0ZWI2NDk5MWM2NGJkNGI5YzQgbGVnYWN5LXRydW5rCis0MjEzOCAyODA2NTA3OTJlZjcyYjdjZWU4YjkzODk4M2IxYWYwNzRhZTAzYjg0IHJlbGVhc2UyNC1tYWludAorNDIxMzkgZjk0OTkxZDVkZDIwNjljYmRhYmZmOWQ0ODU5YWYwNWRiNDM0NDZmYyByZWxlYXNlMjQtbWFpbnQKKzQyMTQwIGZkZjFiZTljZmVkZjJiMzAxOTYwMzJkOTMzM2Y5YTU3NGYzMzY5NzMgbGVnYWN5LXRydW5rCis0MjE0MSAwMGVlMjE3MTUzN2Y3NWRlN2E3MDk1OGZiNzk4NTQ3ZTRkOTQ1MzY2IHJlbGVhc2UyNC1tYWludAorNDIxNDIgZjAxNTQzZTE1Zjg1YTQ5OTFlMzIwMTFkMWEyYjVhMTNlNDFjMTY1ZSBsZWdhY3ktdHJ1bmsKKzQyMTQzIDQzMTVjNTNmNTFiY2E2MDQyOWRhNTZkYjNlNWIzMTYzN2QwNjRhNDkgcmVsZWFzZTI0LW1haW50Cis0MjE0NCA0ZDJhMDlhNjQ4NWQzZTljOThjYjlhMWE2ZjY1OTc1ZjEzMTI4MmQzIGxlZ2FjeS10cnVuaworNDIxNDUgM2I2M2JjOTA0ZDkyZTdiNWI1MjUwNDNlMDY2MTkyZDcwZGQ5MDA1MCByZWxlYXNlMjQtbWFpbnQKKzQyMTQ2IDRmMTFiMjNlMzYxZjQ1NGQ5ZTlhOWViNzdhOTRlNGE2NjQ5ODQ4ZmIgbGVnYWN5LXRydW5rCis0MjE0NyA0NDZjYjVmYzNkMjgwYmY3ZmM0NmYyZDZkYWQyYzgxMjYwMjk4NWM4IHJlbGVhc2UyNC1tYWludAorNDIxNDkgYTE3YjczODI2Zjk3ODNhODAxNjhlNTQ3OGU3YjM0YzQ0NTBkODdmMiBsZWdhY3ktdHJ1bmsKKzQyMTUwIGM4M2MwMjJhMzQ5MWViMTZmZTFhZmY1YTc4ZTQxZWNlNjk3MzNkYzAgcmVsZWFzZTI0LW1haW50Cis0MjE1MSA4MTQwZjAwMGU5ZDQ1OWVmMzRmMzI5ZDM1YjU5ZjBjYzJjMGNlYzFhIGxlZ2FjeS10cnVuaworNDIxNTIgNjA0ZmU4N2FkNDdjN2MwYzE5MjRlYjM5ZjlkYWE3Y2E4NTgyZTBlNyBsZWdhY3ktdHJ1bmsKKzQyMTUzIDk5ZDQ5MWZhYTY1YzJiOWRmN2UxNDg4MDk3MWE2ZDExMDY1MmJjZjEgbGVnYWN5LXRydW5rCis0MjE1NCA3YjNkOTE1YjZlOWQwMDEyM2U4ZmM3ZTVjZjhhZDQ3MmEyNjRmYjZhIGxlZ2FjeS10cnVuaworNDIxNTUgNGY5MGM3YzA1MzY0ZjQyNGI2M2Q2MmQ0ZDEyYjEzZmNkMjcxNjgyYyBsZWdhY3ktdHJ1bmsKKzQyMTU4IDgzOGI1ZjU5MjRlZTE3MTQxNDY3ZTkxODgxNWEzZDUzZTBkZTM4MTMgbGVnYWN5LXRydW5rCis0MjE1OSAzYjRiNDQ1NGZlODY2NGJjNGJlYWYxNWNjOGUxYzE5NzNlODMwNjNiIGxlZ2FjeS10cnVuaworNDIxNjAgNWVlNDZiYmVkMWY5ZmUwNDY5ZTE2ZTJkZDQ0M2Y0Y2Q2NWU2MTkwOCBsZWdhY3ktdHJ1bmsKKzQyMTYxIDVjNDg3Y2I2MzI5NTA3OGRiM2YzMzllYWUzYzY3MGU2YjZkODI3YTYgbGVnYWN5LXRydW5rCis0MjE2MiA3ZjA1OTc0YzhiODAzMTdmMjg3MDY5MjE4ZTIwMDBlMTBhN2M1MGM5IGxlZ2FjeS10cnVuaworNDIxNjMgMDAwNmFlMTBiN2YwYzkyYzkxYTNlMDkwMjc0YzJhOGZhNDAyNTAzOSByZWxlYXNlMjQtbWFpbnQKKzQyMTY0IDc4YmQ3OGExY2U3NGI0NjFmMjU4YjU2YjU1NGI1ZmJmZTA3Y2I3MTYgbGVnYWN5LXRydW5rCis0MjE2NSAyMDEyYzU0OGNlNjk4Y2JmNDBiYjllNDVjNmE4MzgxMGFkMGE3MTljIHJlbGVhc2UyNC1tYWludAorNDIxNjYgMzExNGViMDYwZDBhZWQyZWE3ODY1ZTJmM2I0MmQxOGVhOTk4ZmU2MyBsZWdhY3ktdHJ1bmsKKzQyMTY3IDc0YTU5ODk2NGM5NjI4ZDBhNDdmOWNkZGU0YThlNDQyYjY1MmE4MTYgbGVnYWN5LXRydW5rCis0MjE2OCBhMjljYzIzYmI4OWM0YzVmNzdiZWUyMGMzMDk0Yjk4NzU2ZWNlMzhmIHJlbGVhc2UyNC1tYWludAorNDIxNjkgMDM3MmUyNWU0MzBlY2M1NzJmMmY4YTkyZjY5ZTgxYjg1YTQyMjg1YyBsZWdhY3ktdHJ1bmsKKzQyMTcwIGE1MGY1NjM1YTQ5NDljOTU2ZmU3Y2ZiMGFiMTJmNzg2YjQyYzAyM2EgcmVsZWFzZTI0LW1haW50Cis0MjE3MSBkNjhmNzNmOTZmMzFmNzJlMzQ0MzljNWZiZjRmOGI5NTk3NmZmZDQ2IGxlZ2FjeS10cnVuaworNDIxNzIgNmFiODJjNDcwNjMzOGYxZTQ2NWIyYjVhMWJiOTgwZjJmYjU0NTQ2NCBsZWdhY3ktdHJ1bmsKKzQyMTczIDA1NWZjZGM2NTJkZDQzNTZjZmE4YzQ4NTBmYzc2YjBjNGQwMjkyZTMgbGVnYWN5LXRydW5rCis0MjE3NCAxYjllYjk2MzJjODliOGEwOTRiMzFiYTA3MTlkYWI0Y2M0MjA3ZjEyIGxlZ2FjeS10cnVuaworNDIxNzUgYmZiMjQ3ZDdiYzNmNzI1MmYzMzk5MTg5MWY0M2Q0Yzg2NWM5OTc5YSBsZWdhY3ktdHJ1bmsKKzQyMTc2IGQ1NzM0ZGMwN2Q0YWJkOTk1ZTFlOTVkZmJjNDUxYTcwYWQ2ZjQwNTcgbGVnYWN5LXRydW5rCis0MjE3NyA1MTIzNDUzNjkwZTUxYTE4ODg2ZmVhMWVkNTE0NDgzM2VkM2FkN2I0IGxlZ2FjeS10cnVuaworNDIxNzggZDYyZGEzNmFhZTE1NTEyNWFjZmFjM2FjOTVhOWQ3NzdmZjYyZWFmOSByZWxlYXNlMjQtbWFpbnQKKzQyMTc5IGU3ZjE5ZWQxZWEyZGMwY2ExYmMyMDAwOWQ0M2ZjN2Q3Y2IyYmMxMzggbGVnYWN5LXRydW5rCis0MjE4MCBjMDFkMjI3MmU2YzNhNmZiNDk3NGY4ZTVlMmU0OGI0YmY4M2IwYjcwIHJlbGVhc2UyNC1tYWludAorNDIxODEgM2RmNjM0NjFiMTE2ZDM3OWQ3ZWU4NjM3YzBjMzcyNzNlMTIyMTM5NiBsZWdhY3ktdHJ1bmsKKzQyMTgyIGUwMjg5ZmJhNmZmMWVhOTM5MWI2Y2EzNzRmYjYwMGNmZDQ2MzliNGQgcmVsZWFzZTI0LW1haW50Cis0MjE4MyAwNDBkN2ZiNGViNTY4NDdhZGRlMTBkOGJmM2I2YTNiYTY2ZDlkMzZiIHJlbGVhc2UyNC1tYWludAorNDIxODQgZTk3ODE4YmMyOTE5NDRhZjZkMDllMWQ2N2IyYjA0ZDdiN2I4YjNjNSByZWxlYXNlMjQtbWFpbnQKKzQyMTg1IDEzNTk2MDVmMzcxM2ZiNTkyMzllZmZjMGZhMjUzN2IxZDE5Mjc1NzMgbGVnYWN5LXRydW5rCis0MjE4NyBhZjY4NGQ3M2YzYTY3M2RmOTczMWE3MzEwZWIwNmZlY2E4Yzg5YWNhIHJlbGVhc2UyNC1tYWludAorNDIxODggYzNiNjcyOGQ4ODZiODc3Y2JkNDFmYTQwZGMyZmU2OGYyZjZhMzQyOCByZWxlYXNlMjQtbWFpbnQKKzQyMTg5IGNkZTZlYTA5MWFhYWZjZTQ1ZTMxNTJiOTRjOWJhNTNhZWE1MjhkOTYgbGVnYWN5LXRydW5rCis0MjE5MiAwNjAyODg3ZGFkZjVmNTc0MWYzNTU0NzZkNmIwMTgxOTAxZDU2NmRlIGxlZ2FjeS10cnVuaworNDIxOTMgZjBhZGE2ZjBmNjc4OTkyOTNhOWM0MjE5NzQxMTI0ZTQwOTJhMTFjNyBsZWdhY3ktdHJ1bmsKKzQyMTk0IGE2MjVlODg3NjQwNzAzODE4ZTIzZjMwMzYwZmU1NDY3ZTNiODMwNzMgbGVnYWN5LXRydW5rCis0MjE5NyA5NTBlM2UzODQzYmJmMDA0NzdjMzFlMmU0NDk2YjBmNjAyYmRmNTNiIGxlZ2FjeS10cnVuaworNDIxOTggMDAwNGE5ZDA0ZDAzNjY1NzE0NmEyZTIxZjRmNWFiMzhkNjk0NDFlMSByZWxlYXNlMjQtbWFpbnQKKzQyMTk5IDIyODk5NTAyMTE3ZmU2ODkxZjY5MjFjN2FjMTA5MDk4ODYxYWE0MjIgbGVnYWN5LXRydW5rCis0MjIwMCBmYzEyY2NhNzNjMzVkMGJjZDE2ZmJkODBjOTRjNzFiNDFkN2I2OGFkIGxlZ2FjeS10cnVuaworNDIyMDEgMjliZmJiNTg4ZDkzZjg4NzcxN2FiNjFlMTEzZTEwZmVlNzIzZDA0YiBsZWdhY3ktdHJ1bmsKKzQyMjAyIDIzZmU0N2U5MzM3ZDhmOWM2ODQxMmExYTY1ZjRmNTJkM2IyNzA5ZjIgbGVnYWN5LXRydW5rCis0MjIwMyBiZmEyMjcyNjdmNDgxNGU4MmU5ZmJhY2VhOWEzMjFlNmExMWFmYzk0IGxlZ2FjeS10cnVuaworNDIyMDQgMGYyZDgyMDAzYTBmYjc0ZDRkMmFlNDliNzFiMzU3YmVmMjk5NTdlOCBsZWdhY3ktdHJ1bmsKKzQyMjA1IDI4MGQ2MDE5Y2Y0MjZjMGEwMzY2MTI4Y2RhNzZiMzRhODcxMjliZjUgbGVnYWN5LXRydW5rCis0MjIwNiAzOGE5NGU1OGE2OTU2YzZhYTk3MDhjOGVmN2UyODNjMDUzMTE1MDc2IGxlZ2FjeS10cnVuaworNDIyMTIgMTZiZmU5Mzg2MDY4Y2ZiZTE4YTM1ZWU5YzI5OTJlNjFjZWI5YjZmOCBsZWdhY3ktdHJ1bmsKKzQyMjIxIDgxOTQyZmM5YTIwZDE2NjllODcyNjlmYTZhNmJmMjY4MTk0ZGY5NTQgbGVnYWN5LXRydW5rCis0MjIyNiBkNjgwZmE1MjU1MTIyNmM0MGYyNTRjOWI0ZjZiMTI4OGY3NTFjNjAwIGxlZ2FjeS10cnVuaworNDIyMjcgNmE4ZDVlMDU0ZTk3MWQzZGI0ZGYwYTljY2MyZjlkYmE5YzlkNzQ3MyByZWxlYXNlMjMtbWFpbnQKKzQyMjI4IGYyMzY2MTA4YmNiMjgxYzZkNmNmNmI5ZWIzNDNmOTNmNzMzYzNmYzAgbGVnYWN5LXRydW5rCis0MjIyOSBiZDQ0YzdjMDk3N2Y1NzY3MjkxNjVmN2E1NDBmMTA0ZTIxZGJkNzEyIHJlbGVhc2UyNC1tYWludAorNDIyMzAgMjZlMGY2OGRlODZlNmJhYjEwMDA4YTMzMzRlNWZmNmRiMTdjODhlOCBsZWdhY3ktdHJ1bmsKKzQyMjMyIDY1NWZhMjI2MDY3OTg0NjNmM2ZmMTUzYTBhZDljN2M3OTcxM2Q4ODAgbGVnYWN5LXRydW5rCis0MjIzMyBlNjYyMjg1ODBlYTI2NDg0OGE4Y2ZhMzQ0N2QzNjhlMDJiNDIyNzliIHJlbGVhc2UyNC1tYWludAorNDIyMzUgOTRkMjdlMDE4MzNkYTQ3OWJkZjhlZjU4YjZlMjE3ZDE3ZTNiYzlkNCBsZWdhY3ktdHJ1bmsKKzQyMjM2IGNiMGRiYWU3MmE4ZTc2MWIxOTg5NGM5MjliMTcxODBjOGY2OGIxZDIgcmVsZWFzZTI0LW1haW50Cis0MjIzNyA1ZTJhY2Y3NDQxYmQ2OWJjZmNkZTViYjFlNGIzNzIwNTdiMDFiNjZhIGxlZ2FjeS10cnVuaworNDIyMzggZGMzMjQ2MzAxNWYxYmNkODQyNmVhMGEzMmI0NThhZGU1YmQwN2MwNiBsZWdhY3ktdHJ1bmsKKzQyMjM5IDhlMjNhN2NjZjYxNWQxOTRiYzRjYjMzYjYwYTNkMzI2ZGQ5N2IwYmQgcmVsZWFzZTI0LW1haW50Cis0MjI0MCA5YTRmZjZkNmU3MjQ2NDEzYzg3YTFlNWViYjE3OWJlYWNhNjI2NjMwIHJlbGVhc2UyMy1tYWludAorNDIyNDEgYTA3ZmIyZWY1MmFlNzU5OWM2YWY0M2M4NjI1OWJmNjE3MTI2ZWJhZCBhc3Qtb2JqZWN0cworNDIyNDIgZDFlZjIzYTE2NzYwYzIzMTM0Yjg5ZDU2YTEzZDRhNDI2ZDg1NGNhZCBsZWdhY3ktdHJ1bmsKKzQyMjQzIGEzMDQ2ZDQzZWI1MmYyZjFjYWZjOGI5OWU1NmI0OGM2ZTQ1NWNlM2IgbGVnYWN5LXRydW5rCis0MjI0NCAwMmYwNzQ0YTljZDAyZGQ4MDEzNjgwNDUyODZjNWFmMzJiYjdmOTAzIGxlZ2FjeS10cnVuaworNDIyNDUgM2VkYjFiY2Q0MzRkNGRhMWI5Y2IzOWNiMmYxZmE3ZjIyNWJmMjA1OSByZWxlYXNlMjQtbWFpbnQKKzQyMjQ2IDM4OGE1ODNlN2E2MzQ0ZDVlMGRlNWEwOWUyM2MzYzZjZWE0MmI5MTkgbGVnYWN5LXRydW5rCis0MjI1MCA0ZWQzMGVhYTAyNTYxMjVhNDIxMGMwYjI1M2EwYjUyYzFhM2MyZDg5IGxlZ2FjeS10cnVuaworNDIyNTEgYzE5MzI4M2U2M2JjYjc2MTI1M2FkOWE4ODM1YWUyMWZlNzQ3NTZlZCBsZWdhY3ktdHJ1bmsKKzQyMjUyIDg0MDRjOWVmZGMzNWViZmY3MDE1ZDU1MmU2OGM3ZWVlZjc3YzVkNDEgbGVnYWN5LXRydW5rCis0MjI1MyA3Nzg5Y2M1NTdlMWVmYTU0YzA4ZWE5ZDM2YTMwYmQxNjhiNDg1MTYzIGxlZ2FjeS10cnVuaworNDIyNTQgYWY2N2I2MjY1YWY2YWUwYmRmZDVhZWZjMzY5ZDZlYWU4MjUxOTQ1OSByZWxlYXNlMjQtbWFpbnQKKzQyMjU1IDAwMmY5YjhmZWMyMWU3MGI2ZWZkNTAxMGE1YzlkMmY0ODg5NjkyNWIgbGVnYWN5LXRydW5rCis0MjI1NyAwYTJhNGYxNDExMGI5NGE4NDFkY2VkYzFhMGFhOWRmNGZmMGFlM2I3IGxlZ2FjeS10cnVuaworNDIyNTggNTFmNzYwMjg4MTA0NTI5YWE3ZDA0NWY4NWY2OTVkZWNkMzViMWZkMSBsZWdhY3ktdHJ1bmsKKzQyMjYxIGYzOGI2MzUyNjNkM2ExZmZmNmFlZDRkNzA0MWQ3OTdiMWE4MTY0YjUgbGVnYWN5LXRydW5rCis0MjI2OCBjZDQ0NTlkMDhlZTIzNjhlNmNlOGQwZTJiNzZiYjIwMjYwMjk0ZDNmIGxlZ2FjeS10cnVuaworNDIyNjkgM2FiZjMzMjY0MTQ2MzM2MWQ4ZjliOGVmMGEyY2M1YTlhYzcxZjJkNyBsZWdhY3ktdHJ1bmsKKzQyMjcwIGVhNTRlYWY5MjAxNjAzMTg4NWRiY2ZiNTdhMWVhMWMxMmUzM2VjOWUgcmVsZWFzZTIzLW1haW50Cis0MjI3MSBkNTk2MTlhMzcxYzIxNzljMzIwZmU3ZDZkNjA1NTdiYWJkYWMyYjQ2IGxlZ2FjeS10cnVuaworNDIyNzIgZmRhY2Y3MmQ0OTc2MzAyYzkyYjQ1NTE5ZGE0NTk0NTZiYTAyM2M5NyByZWxlYXNlMjQtbWFpbnQKKzQyMjczIDU1MjQ2NGQ4MWUxYjIxNjk2MWVhMmE3NmFlZTU4MTViOTJhNWJkNGMgbGVnYWN5LXRydW5rCis0MjI3OSA4NDE2ZmIzMjA0MDM5MTlhNmRkMDY2ZjAyODZkOTViZThjMmFiNWRmIHJlbGVhc2UyMy1tYWludAorNDIyODAgMzk3ZjYzOWY3ZTZiOGFmZDBiODMyMDZhMGM4ZmQ5ZDE4MDM2MzFiYiByZWxlYXNlMjQtbWFpbnQKKzQyMjg0IDRjMmQ2ZWI4ZDVlOWMzYzYyN2VhYThmOWJlNWFmMzk0NzRjNjZjZDUgbGVnYWN5LXRydW5rCis0MjI5MCA4OWYxZGExMzQyY2E0N2RmOGFiYmRhMzAwOTQ3MzU1ZGExOWY3ZWVkIGxlZ2FjeS10cnVuaworNDIyOTEgM2NmOGE5ZWQ0NDZiM2U0YjEwNTkxMTU5NGQxMzEyNWIyNWZmM2ZjMiBsZWdhY3ktdHJ1bmsKKzQyMjkyIDkzZWZhNTliMzI5N2NmZmFjN2Y5MDZlZTlhOTM5MTM3N2VjNTBkMTUgbGVnYWN5LXRydW5rCis0MjI5MyAwNWUzMTRlZTI2Zjc3MDg4NWRkNzc5NjY3Mzg2OWU2NjkwM2Y5MDY4IGxlZ2FjeS10cnVuaworNDIzMDMgMTY1Mzg5YjE0ZDZiYTcxOWJjYzE1MTlmZTQxNzRmNTBmNTAzYzRkNiBsZWdhY3ktdHJ1bmsKKzQyMzA0IDgxZjQ0ZDEyYmVmN2ExOGUzOGY2NmU1OTE0ZDAzMzVmOGNiOTM3YWEgbGVnYWN5LXRydW5rCis0MjMwNyA3YjE5YTUzM2NlOWJhZDk1ZGY4NTdiM2NhNGFkZDhhY2U3OWMwZGJmIGxlZ2FjeS10cnVuaworNDIzMTEgMGM1YWU4OTI0MTA0ZWU2NDE3ZGIwZDQ1YzA1Yjc1MThmZGFlOGJmOCBsZWdhY3ktdHJ1bmsKKzQyMzEzIDFjM2IxNWRmNjdhMjkzOWZmMzAxZGI4ZGYwYzdlNmFhMTc2NzNkNDIgbGVnYWN5LXRydW5rCis0MjMxNCBjMDczZGZmYmU3MGVjOTVjMjNiYjQwZTQwZTA4YjBhOTk5YzQzYTNjIGxlZ2FjeS10cnVuaworNDIzMTggZDIxODc1ZDM1OTJiNjQ5NzRiMjZiMGEwMDFlYzE0M2Y0YzdlMzFjOCBsZWdhY3ktdHJ1bmsKKzQyMzE5IGUyZDQ2MDhmNWMxZDZkMGY4ZjQ1NWVmODQ3YThlZTBhNzc5MjU5OTkgcmVsZWFzZTI0LW1haW50Cis0MjMyMCBkNDk2YzA3NjRhZDYxNGE3ZTU4ZGE5ODNiNzdjNGZkYzFlYzg2ZWZkIGxlZ2FjeS10cnVuaworNDIzMjEgYWUxZGE1MTI0MzgyNGE4ZDdjYTM3ZWM3MDI3NzNmZmE3OGZkYjNhNSByZWxlYXNlMjQtbWFpbnQKKzQyMzIyIDZjNmI0MjlhNzAzMGM2NTAwOWQ4ZmRmMThmN2NlNjFlOWRlMDE0Y2EgcmVsZWFzZTI0LW1haW50Cis0MjMyMyA1MTI5NzgzMWI1Zjg5MDllZTM2NGY0YjgyYTk3Y2ExZmI2MjViNDZhIGxlZ2FjeS10cnVuaworNDIzMjUgYjQ4YTA0NzI5Y2M0OThiMGJkM2U4ZGEzM2Y4NmFkNTM4ZWUzMThhYiBsZWdhY3ktdHJ1bmsKKzQyMzI2IDIwZjc1ZDVlNzllOTUzYmU0NmZhMTVmMmJiY2E0MjA5YTYxMjQ2ZTggbGVnYWN5LXRydW5rCis0MjMyOCBjMDA3MGQ3NmMwZGIzZTA1NTMxZTJhOTc5NjJmNmMwN2QzMmE0YWMyIHNzaXplX3QKKzQyMzMwIDM2ZWFlM2ZjMzczZDUwMTA1MmFkNGYyZjFjYWMwOTNhMmQ5OTM4NzMgc3NpemVfdAorNDIzMzIgNzE1MzA5MjFjZTkzYjNlMzdlNWJkNGJhOTlkZDg2YTcyNTdhOWU5NyBzc2l6ZV90Cis0MjMzNCAyYTMyMzFmZTcyZTI5OGFkOWY5OTEzZmQ5N2NkY2ZiYTdlZjU4MzJiIHNzaXplX3QKKzQyMzM1IDk5ZGZkY2M2ZDYxM2RkZTQ0Yjg5YTgxNDZjMzllNjJjZDA3OTE2MjAgbGVnYWN5LXRydW5rCis0MjMzOCBjNDZkZTFlNWI5YTAzMjAxODA4NWNhZDZmNDZkNWMwMWZlNzRiZDAxIHNzaXplX3QKKzQyMzM5IDY1YWU3MzBiNjIzMTQzYTliNWNlMmExYmYxNTM5MmM3N2JlOWM4Y2IgcmVsZWFzZTI0LW1haW50Cis0MjM0MiAwN2JhOGFhZTNkYzY3MWE4NjE5MDE5MjBiYTJkNGVlZWVjNDZlNzhiIGxlZ2FjeS10cnVuaworNDIzNDMgYTJiNmRkYWI2NmQ3OGEwYjg5OWZiODc5NDg3ZGNiN2Y4NjEyNTk4ZCByZWxlYXNlMjQtbWFpbnQKKzQyMzQ0IGU0NzFmMWRmMmQwMzFmMTA2Njg4Mjk5ODhhZjE4YTUyZDQyYzEwNzQgbGVnYWN5LXRydW5rCis0MjM1NCA3NGIyNTMzYjU5YjhiZWI0N2RhYjI3NTU0Y2E3YzEyYzRkNmZlM2U0IGxlZ2FjeS10cnVuaworNDIzNTUgYzdhYjQxN2M1OWJjOGIwM2Q4NjY5NWI0YzJiODg3ZTc1MWEwMzExZSByZWxlYXNlMjQtbWFpbnQKKzQyMzU2IGFjZDcwMmUzMDZmYjQxNGI5ZGFlOGI2MDEyYmE2ZTI3NmY2OTVkNTQgbGVnYWN5LXRydW5rCis0MjM1NyA1NzRjMjVmZTYwMjg0NTIwZWQyNTNlMzM0YzI3NTlmODljZTIzYzk5IGxlZ2FjeS10cnVuaworNDIzNjIgMzQ0NzU0NDk3Y2IzZjU4OGU2NTg3NTgxMjQ1NmRiMGExOTA1ZGY3YiBsZWdhY3ktdHJ1bmsKKzQyMzY1IDIyMDQ5N2UwODljZThkZWI1YjBjOTYzN2YxMTMxZTQwN2MzNzM0ZWUgbGVnYWN5LXRydW5rCis0MjM2OCBkYjJmY2E5ZWEyNjQwNjI4MTg2ZTM2MWQwYTU1MzI4ZWEzNzYzMzBhIGxlZ2FjeS10cnVuaworNDIzNzEgYzBjMzZiYmQ1ZTBjMTk0Mzc2OGIwYjM5OTNiNmM1MTk0YWNkZTIxOSByZWxlYXNlMjQtbWFpbnQKKzQyMzcyIDE3ZWMxN2RkMmFiM2Q3ZmM0NjY0MTI0ZmI0NzE4ZDMzZWIwZWZjYmYgYXN0LW9iamVjdHMKKzQyMzc2IDk2Njg1ZjExMjcwOTQ0NDQ1MmQ0MTA0NDM3ZjZmZDY4ZDc0Y2UxYmMgbGVnYWN5LXRydW5rCis0MjM3NyAzNWRlOGJjY2ZkMGVkNzI4Yjk5YmM0MWFjZmI1ZTIyMjllNTA4MzQ2IGxlZ2FjeS10cnVuaworNDIzNzggOThmN2I3NDNkOTFiMDM1YmVmMjVhNDk2NmQ5MTMwNDVkZTVkMmY0MSByZWxlYXNlMjQtbWFpbnQKKzQyMzc5IGMwMzRjZGQ3OTYwY2VjNjE0NGVhMmJmNjVhNDRkZWYwZjgxOTg5YmUgYXN0LW9iamVjdHMKKzQyMzgwIDM2MjVjOGIxNDNkOWNjY2Q1OTI4Y2Y5MGNmZTFiY2FhNzBhZjhmYjkgc3NpemVfdAorNDIzODIgN2ZkYzYzOWJjNWI0ZDNjMDkyY2IzZmQ3ZDg3ZjczZGIzZDQ3YmEyNyBsZWdhY3ktdHJ1bmsKKzQyMzg0IGI4ZTczYzJkMWYxN2IyNzUwYzY1MzcxZjI3NzI1OTlkODM1MTdjYTYgbGVnYWN5LXRydW5rCis0MjM4NSA3OTk4ZDg1NjQ5YzllMDAwYjM3YmMwZDFmMDE2ZGY0NjYzYzc2OGZlIGxlZ2FjeS10cnVuaworNDIzODggZGE5M2Y5ZjJkNmU4YTgxZmRkYmQ1M2EwYTk1MTY2ZmU5ZDNhNzliNiBsZWdhY3ktdHJ1bmsKKzQyMzg5IDU4MjVjNmFjZTI4YjYwZWI1N2E1ZDU0MjU1OTNjZWYzYmUxYzA2MmEgbGVnYWN5LXRydW5rCis0MjM5MCA3NzVkZWZiYTRlZTc0YjU2MWJmNDM4ZGZkNzFlNDJiYzM0MThjZGY3IGxlZ2FjeS10cnVuaworNDIzOTQgNzY3YWRjMDk4NDE2MWJmNjMzMDUyNDM2MGFiMzA3YzZiNTI1MTc5ZSBsZWdhY3ktdHJ1bmsKKzQyMzk1IDczMjJkY2NiYTIyNDI4YTQyYWM4OTlkNTBlZDk0ZThkOTVmMjQxNjIgbGVnYWN5LXRydW5rCis0MjQwMCAxM2U5OGUzNjlhYmQ5Zjg2YWVjNzRiYjM0YzMzYzE1Yzg3OGE3MzZiIGxlZ2FjeS10cnVuaworNDI0MDEgMGYzODk0YmIyYWRhYWM4YTlhNWE1NmRjMTA0Y2EwMWRlNjlmYzNkZCBsZWdhY3ktdHJ1bmsKKzQyNDAzIDE1OTZmZjVjNzliNTAyZTFiM2M0YzhmMmMzODUyOGI1ZWEyYmJhYzMgbGVnYWN5LXRydW5rCis0MjQwNCAzMzUwZjg1Yzg4OWZkODBiZDNmYmViYTc4Zjk1MTJkMDJkMWM2MmU3IHJlbGVhc2UyNC1tYWludAorNDI0MDUgNDQ1YzBhYTgxMWNhNzBkZDlkN2I4MDc4MjZjNDZhMWM2MjU0YzNkNiBsZWdhY3ktdHJ1bmsKKzQyNDA2IDkxNGY1YjBkYTU0ZWUxZjQwMjMxM2U1OTExMzQxNTg0OTE0MDQ4YjIgbGVnYWN5LXRydW5rCis0MjQwNyA3YzljZmQzYjVkMGZhNmYxZDQ0ZTVjZjM0YzFjODU5ZmZiOWVlYTRjIGxlZ2FjeS10cnVuaworNDI0MDkgN2RjMWZlNzc3MTNmMmQyMGNjOTQxNTVmYjkxOWY4ZjAyYWMxMGE3MCBsZWdhY3ktdHJ1bmsKKzQyNDEwIDkxMzMxYTg4NzE4ZTAyYmUyMTFiNDk3MzQxMmZjZThmYjY4ZTc2YjcgbGVnYWN5LXRydW5rCis0MjQxMSA5ZjNmODdlOTIwYTZkMWUxOTU1NzcxOTFhMWI1MTljOWIxZDY5NWU2IGxlZ2FjeS10cnVuaworNDI0MTIgZDZkNDE1ZGYwZGYwYWFjMmExY2E3ZjMxYjQ5NThmOTY0M2UwMTg3MSBsZWdhY3ktdHJ1bmsKKzQyNDEzIDI2NDcwY2RlZWEzZDZmYmVjYTBjMzM3ZGQ1ZTdjZjE0OGM1NzMyOTkgbGVnYWN5LXRydW5rCis0MjQxNCAzMGFlZjNjZTJiMjZjMDkxOWNhZjdjZjZiYmFmYWZhZGJhNTk0NGQ0IGxlZ2FjeS10cnVuaworNDI0MTUgMjc5MTY3NmIzODI1OTAwNzYzMGQ5NzdiMTQ0NmE5NDYyYmYzNjA1NyBsZWdhY3ktdHJ1bmsKKzQyNDE2IDY3MmMzMGJmOTVlNjlhN2RlMThjMWQ3N2JjNWJmM2Q1NzkyNjZkMWQgbGVnYWN5LXRydW5rCis0MjQxNyA0Yzg2MDYxOTFjMGNmMzIyZTllNzg1MTc4NDAwOWQ3ZjJlMmQ3MjIwIGxlZ2FjeS10cnVuaworNDI0MTggMjI5N2IyNzBmY2Y2OGQ5NjBmZjIxY2EwNTQ5NmU0MzAwMTcyMjRkOCBsZWdhY3ktdHJ1bmsKKzQyNDE5IDAwZjljNmUxNTBiYTI1ODdjNjhmMzJmMWNlODU2NzcxZDdlZmI4ZmMgbGVnYWN5LXRydW5rCis0MjQyMCA5ZGY2MWI5NmFhNDI2NGJkOTQyNTk5M2FjMmI4ZTc4YTM2MGUxOWE3IGxlZ2FjeS10cnVuaworNDI0MjEgNzZjZTg4MGRjZTQ5ZTExMTNkZTZlMzBmNTI2Njc3MWI5N2NkZjg0YiBsZWdhY3ktdHJ1bmsKKzQyNDIyIDQ0MmMwZmIzYzRlZDExMThkOGIxZDJiNWYwZGRjY2ViYWY1N2UwZGEgbGVnYWN5LXRydW5rCis0MjQyMyA5MmFmZjk3NDE3YzQ2YTFhYWEwNmQ2MzA5MmQxZjNiMzZjNmNjNzAyIGxlZ2FjeS10cnVuaworNDI0MjQgNzFlNmY2YjQxNWE0YzI2MzI5NGQyYzI0MDdkZjg2ZmM0OWE4ZGYzOCBsZWdhY3ktdHJ1bmsKKzQyNDI1IDBjMDk2YmUyNzAwMDNkYWNhYTNlNWM2ODYxN2EwNDI1MWU5M2I2NzUgbGVnYWN5LXRydW5rCis0MjQyNiBlZDA3YzFhNWUyNGM2Mjc2MzlhMmUxMDFlYzc3ODRiODk5NWY0ZDY4IGxlZ2FjeS10cnVuaworNDI0MjcgODYyNDkzY2VhZTRiMzIzNzhkM2EzMGM1MjYwYWUzZjU2ZmRjYzAwNSBsZWdhY3ktdHJ1bmsKKzQyNDI4IDI2Y2FjMzcxZDdiNmVmOWFmYjkxZDZhYTU4MWNiMmU2NzViYjZkZjUgbGVnYWN5LXRydW5rCis0MjQyOSBjMDZlZTBjOTEyMDk1N2E3NzI2MWJhZjk3N2M3OGIzMmE0NThmMzU0IGxlZ2FjeS10cnVuaworNDI0MzAgZmRhYmRmMTQ4MzM2MjA1ZWU1NjJlZDQwYTVhYjlkOTM2YTAxNDlkYyBsZWdhY3ktdHJ1bmsKKzQyNDMxIDMxNjkzOGI0ZjhkMDAyODNjOWJhMWJjMzYyNjUzNmYyZTRmNjBiZDYgbGVnYWN5LXRydW5rCis0MjQzMiAwZDQ4OTEyODQ0MWFmNmI5NzZjODM5Y2U0MThhMjg5ZTVlYmY3MTllIGxlZ2FjeS10cnVuaworNDI0MzMgN2RiM2NiOWU4MzlmYWUzNWFkMjg3MmNjMDY3ODVlM2U3ZDdhYmI0NSBsZWdhY3ktdHJ1bmsKKzQyNDM0IGY3ZjBkMmE1YjIwYjgyNWYyNzBmNmFkYmQwZThlYmIzNjg3NGZjMGIgbGVnYWN5LXRydW5rCis0MjQzNSA5N2M4MWRjMDNkZGRiZTc2M2Y4Y2IwMWUyYWIyODcxZjcwMGM3NjdjIGFzdC1vYmplY3RzCis0MjQzNiAwNTZlNWI0NjA2ZGE0MzMxYTdkN2Y5NmU5YmEyZTliYjM2MmIxYzhiIHJlbGVhc2UyNC1tYWludAorNDI0MzcgMzYzMjVjYWVmZjljNjViMTRiMWM1NDY4ZTYwZDBiOWQ2ZTgwNGRlMSBsZWdhY3ktdHJ1bmsKKzQyNDM4IDIzZTIzZTE1ZTdlN2MxNDAxYmRhMTcyMjY4NTBhMmM5ZjQ2NDQ3OWUgbGVnYWN5LXRydW5rCis0MjQzOSAxMjMyZTg3Y2I4MTYwNzk5NGMzODhkZGFkZWQ2ZmU2MTIwMjRlNGQxIGxlZ2FjeS10cnVuaworNDI0NDAgNWJkMDJkYTAzN2JmYzNjZjYzYjE2MmRmMjk5Y2E2ZGE5MmRjM2Y4OSByZWxlYXNlMjQtbWFpbnQKKzQyNDQxIGM5MTg3OTEyYjU5ZTk5MTdmMzQwZDIxZDdiMzBkMDAyNDM2NTEzNzcgbGVnYWN5LXRydW5rCis0MjQ0MiA2OTNkYTg2Nzg5NDZiNjU2MzE5MzE5N2MyN2EyNWIwYzJlYzMxMTAzIGxlZ2FjeS10cnVuaworNDI0NDMgYWQzYzRiMmMxNzMwMDk0MmNiNWZkYjkwMzhmYWZkY2ViY2M0MjgwYiByZWxlYXNlMjQtbWFpbnQKKzQyNDQ0IGJjZTNmMzU2Y2Q3YjlkMWIyMzhiM2Y2ZTVmMzMzYTU2MDZhYWZhZWYgbGVnYWN5LXRydW5rCis0MjQ0NSBhOWY5ZGI5ZmE5NzRhYzgyNDY4ZTczMzBlZTg0ODk3OTQyYWQwMjU1IGxlZ2FjeS10cnVuaworNDI0NDYgYzU2NTBkYmY5MzZlYzBjMTE2MWMyMjMyZjQxOTFhZTYwNDg1NjQ3MSBsZWdhY3ktdHJ1bmsKKzQyNDQ3IDViMzk2MTQ4MTdhM2U5YzM1MzI2MzU0YzQwMThhOTk2NTJkNWYxMjEgcmVsZWFzZTI0LW1haW50Cis0MjQ0OCBiYzQ3ZjFhNmFjYjk5ZTViYTU2NTcwYTRhZmI2YzM0NTVjMDM2NTJkIGxlZ2FjeS10cnVuaworNDI0NTAgNDY2OGRmNDUwNjcyYzJlZmI5OTMwNWMyYzllNDA0OGZkNGU2ZDAxMiBsZWdhY3ktdHJ1bmsKKzQyNDUxIDE1NzZmOWJlYjUwM2JjNDhlY2RhOWEyMGVjZWMxM2VhOWIwZTczNTAgbGVnYWN5LXRydW5rCis0MjQ1MyA3ODdmZWJhZTMwZGJmM2M2YTNlNDg0YzI5ZWZkYjJiN2E3ZmQwMTQ3IGxlZ2FjeS10cnVuaworNDI0NTQgZDM2ODVmOWI3YjcxYjk3NTdhZTkwN2VjYjlkYWQ3OTY3YWI2YWE5MCBsZWdhY3ktdHJ1bmsKKzQyNDU1IDA5MjMwMzU3ZjkyNzkxMTg3NzhlMTQ0MDZkMmIxZDk5N2FhZjg2MjQgbGVnYWN5LXRydW5rCis0MjQ1NiA5YTgzOTZmNDYwYWZmY2JkYjkyMDk1YzYyNTg3ZmY5N2MzMDY5NjEwIGxlZ2FjeS10cnVuaworNDI0NTcgNmJmNzhkMmI1M2I0MzVmY2VmZmRiNjExZTQ1NTI3NmY5MzgzYmNjZCBsZWdhY3ktdHJ1bmsKKzQyNDU4IGExMjMyNjAyMjYyY2JmYWQxNTVkOTJjN2ViNjMyMmRkNzQxYTkxYmQgbGVnYWN5LXRydW5rCis0MjQ1OSBiOTM4MWE1NjIzZTJiZTc2Y2ExYjZhMGQ2MTI2ZDE5YWQ2ZTY3ODRkIGxlZ2FjeS10cnVuaworNDI0NjAgOGRlNTgyNDZmZWY4ZTBjNGYxOWIwZTQ4ZGQ4NmUwZjI4ZmEwOTdjOCBsZWdhY3ktdHJ1bmsKKzQyNDYxIDk0MTc4NmU2M2FjOGU2YTVjNzVhZjNiNTZkODYwNjIwZGZiMGUzZDcgbGVnYWN5LXRydW5rCis0MjQ2MiAwZWY3Y2Y1MjIyYjA4YWQ3YzE4YzFiNjQ5NmZiOGViNmM2Y2ZmNmViIGxlZ2FjeS10cnVuaworNDI0NjQgOWQyOWRhZWNiOWZhYWU4YWY0YjRhZmUyMjQ4YjgyZWM2ZGI2YjM5ZCBsZWdhY3ktdHJ1bmsKKzQyNDY1IDVjZTMyYTViZDI0MGE3NDkyYzA2N2I4ZWM1NThjOTI5NWUxODZkYjQgcmVsZWFzZTI0LW1haW50Cis0MjQ2NiAyMzg2YzEwNWE4OTQzNjQxMzJjNmE2YjgzYTRlNGIwNjYyMmEyZjVmIGxlZ2FjeS10cnVuaworNDI0NjcgM2UxZDhkM2I0YjZlZDg5MzIyMjBlNTUzNTk2YWM5OWIzZTIxZDAwOSByZWxlYXNlMjQtbWFpbnQKKzQyNDY4IDE4NDU4NzExZWJlZDg2YzViYzI0OGU0MGU2OGUzMzM1N2QyOTJjZGUgbGVnYWN5LXRydW5rCis0MjQ2OSA4YjRjYjIyNWI0OTc1Nzg4ODljMjA2NmIxM2RhYTBjYWRlNDFjYjcwIHJlbGVhc2UyNC1tYWludAorNDI0NzAgNTliNTMyYWIzMzc2OTIzMjBhZWRmNTIxMzIwYmY1ZjE5MmMxN2Y5ZSBsZWdhY3ktdHJ1bmsKKzQyNDcxIDU3MjliNGJjOWI4ZDM5NjlhOWU0MzZlNjRiNDVjYzA5OTliYmM1YWUgbGVnYWN5LXRydW5rCis0MjQ3MiBiNjBjNTBiMTYxMjZiNWRjZTcwNzZlYTgzN2IzYTI0YmY4NjRlMGFmIHJlbGVhc2UyNC1tYWludAorNDI0NzMgMzNhZGM1ZGQyYmYyMTk4Yjc2ZTdiZjQ3MjQwOGNjM2ZmM2JjYjlkMyBsZWdhY3ktdHJ1bmsKKzQyNDc0IDkyMDA0OTEzYjQxMjIwNjNhYjhiZmY1YzZhMjcwYTFiMDRkNmM5NTAgbGVnYWN5LXRydW5rCis0MjQ3NSA4MWZmZGVlYTFkMDY2MDFmY2Y0YjliZjc0NWM4NGIxNmEzZTk5YTJkIGxlZ2FjeS10cnVuaworNDI0NzYgMDJhMGViMWEyYjIxYmI5NDljMTFjNzhmNzJkNjRhMGNjYjhhNGQyNCBsZWdhY3ktdHJ1bmsKKzQyNDc3IDhlMTMyMzYyNDNkZDM0Y2ZlZDM5YTYwNDgyYjJkYmFiMDBjMDYzYWEgbGVnYWN5LXRydW5rCis0MjQ3OCBkYzZkZWMxNTY4Njk4MmQ1OTMyNWJjNDA0OGFmNTY0ODczYjA0MzIxIHJlbGVhc2UyNC1tYWludAorNDI0NzkgYTY0NTBmOTg4YWE0NDU3MmU4ZmMzOGFjODk4NTAxNTAwMGUxMGExMSBsZWdhY3ktdHJ1bmsKKzQyNDgwIDBmMWZjOGVmYjcwYjU4MmFjMTI0ZTE2ZjBjNGU2ZjI5NjQ2NzRiYzcgbGVnYWN5LXRydW5rCis0MjQ4MSA5ODlhYTI4NWVkYjliZGRmNTc0MTdlYjAwNWUyOTQzNjczNmJlYWQzIGxlZ2FjeS10cnVuaworNDI0ODMgMThmMjcyZjUzNjk5MTI4YTViMjA5ZjUwNzM3Y2ViYjJlYWRmYzE0ZSBsZWdhY3ktdHJ1bmsKKzQyNDg0IDI0NzVmZTk1NzgyZDAwNTY1ZWY5NDg5MmNkYWRhNDVhMjg5N2Y2NWEgbGVnYWN5LXRydW5rCis0MjQ4NSA4MmJiZDVkZTAyZjFjODg2OThiN2I0M2RkNTU0Njc2MTFiMjc4ZWNkIGxlZ2FjeS10cnVuaworNDI0ODcgYzZiZDAxYzdhNTY4YzUwNmNlMDkzNTIwMjNiNDIzOTkyYTk1MjUzOSBsZWdhY3ktdHJ1bmsKKzQyNDg4IDIxMGNmZTlkMzA3NzQxMjg2ZjFiZmRmOTEzMWI5MzAxOWQxOGQ5YjYgcmVsZWFzZTI0LW1haW50Cis0MjQ4OSAwZDVmODA3N2JkMjQxOTVhMDhiYzE1NTM4N2E0ZTQ0MzQwYzMxNmUxIGxlZ2FjeS10cnVuaworNDI0OTAgYTFiMzBmY2Q5ZTI4ZWI4NDVmMWNhMzRiNmVkMWFmZmU2ODU5YzRhNSByZWxlYXNlMjQtbWFpbnQKKzQyNDkxIDA1ZWUwNmI3YjU0NzM3MDBkZGFjNTc5ZjhmYjk4MWU3NGIwMmZlYWUgcmVsZWFzZTI0LW1haW50Cis0MjQ5MiBiZDdmMmQ4ZThkZWFiYmUwNDI1ZDNkNDE0YTBmY2FiODM0NWJkZThhIGxlZ2FjeS10cnVuaworNDI0OTMgNzgxNjU0YmU1NWVmMGM4ZGUzYTU5ODNiMTljZmRlMTA4MTI0ZjQ0ZiBsZWdhY3ktdHJ1bmsKKzQyNDk0IGM2ZmJhNDU2MjI3Yjk3M2ZkMjVjNmFhMGRhY2YzOWMzYjEwMDhjNWEgbGVnYWN5LXRydW5rCis0MjQ5NSBlNTczNzdmMGExNjdmMTQ2ZDNjMmVjMjM1MzhhZmRhYWE4MmE4YzdjIGxlZ2FjeS10cnVuaworNDI0OTYgMzhmNGIwOThlYTY5MGM5NWM3ZjYzMDU2NjRkYjAxMjlhZjNhYjU0NCBsZWdhY3ktdHJ1bmsKKzQyNDk3IDlkOTdjODMzOGQ0YzI0YzMwMjFhNWI2MjM1NzNmNDYxNDNkOWVkYjggbGVnYWN5LXRydW5rCis0MjQ5OCBjNThlNzliMmNhMDVlYjk0NDZhMzdjY2QxMzE4ZTYyMWY2MzA1NmQ3IGxlZ2FjeS10cnVuaworNDI0OTkgZThhNDllYjg1MTljMzU2NTliODEyOGQwOGNmMThlYmJlNWNiNGQwYiBsZWdhY3ktdHJ1bmsKKzQyNTAwIDJjMTg3MGFiYjZjZTU2ZGQ1Y2NmMjNhZjk3YTg1NjdmZGYwNDRkNGYgbGVnYWN5LXRydW5rCis0MjUwMSA5YzBmZDU4NjQ3NWMxNzA2NDQyNzA4ZmE4ZWZiNzYxZmJlZmY5MDkyIGxlZ2FjeS10cnVuaworNDI1MDIgOTQ2Y2Y2ZDU4ZmQxMTU5NTc3MzdjN2IwZGVjM2FhZjMzNDg5Mjk4MCBsZWdhY3ktdHJ1bmsKKzQyNTAzIGZlNGFlMGM0MTdjN2IyOTY2NmRhNmE2NTI0ZGMxM2JjZDc3MTVmYjQgbGVnYWN5LXRydW5rCis0MjUwNCBjYWIzNmFhZWUyZTNkNTdhNTI5MTVmODhiOWVlNDVmNzM1ZTBhOGJiIGxlZ2FjeS10cnVuaworNDI1MDUgZjZkNmU1MjIwODIzZTE2YTRmNjBhNTkzMGUxNmEwYzE1YWZjMmNkOCBsZWdhY3ktdHJ1bmsKKzQyNTA2IDFhOTg3OThhNGIxZGE3MjE5YzUzNDg5MTE0MDQ5ZDA0ZTQ0MmYyOTEgbGVnYWN5LXRydW5rCis0MjUwNyAzYTVmNzFkNmJiZWU5NDExMWU3ODU3MDRjMDIwYmVlOTAzMDVlMGIyIGxlZ2FjeS10cnVuaworNDI1MDggNDZlYzk0OGNiZGU4Zjc5NjlmMjc3OGM3NDY4NjZlN2ZmNmQyNTEwZSBsZWdhY3ktdHJ1bmsKKzQyNTA5IDA2NzFmM2M0NjJkNTAwNjhlNGRmMjg5YjQyNzQ4NGU2OTQ3ZTkzNDkgbGVnYWN5LXRydW5rCis0MjUxMCA0ZDc2NTNlNWNiM2JjYWFhYTI5NmUxYTAzNjQwY2QzMmYzNWIxZTU0IHJlbGVhc2UyNC1tYWludAorNDI1MTEgOTUyM2E5NDE1ZTE4MTBlMTJkNjlmMzJkMDg1YTRjOGI0ODI5MDQzZCByZWxlYXNlMjQtbWFpbnQKKzQyNTEyIGRjZjYyMTEzYzJlMzJjMWM1MTNlOWI3NmVlNDAzNGFkNGRhZDYzMDkgbGVnYWN5LXRydW5rCis0MjUxMyA3ZDI5MmNiYzcxM2FiMGZlOTllOTA2MmRiOWUyMTI5ZmUxODY1MTAxIGxlZ2FjeS10cnVuaworNDI1MTQgMzYxYzY1OGE1NWU2ZTMxYTMwYWVhZmRhMjZkZjhlYmNhNDkxMmM5MSByZWxlYXNlMjQtbWFpbnQKKzQyNTE1IGMzNmUzN2ExOGYxYTM5Njk0YjI1MWU5M2I1ZWYwODliNDQ4YzQyYzAgbGVnYWN5LXRydW5rCis0MjUxNiBhOWQ2YjFhZWMwOTYzYjRjY2Q4ZTNjYTljMjRiNmY5NGRiYTQ1NmJlIGxlZ2FjeS10cnVuaworNDI1MTcgNmQzYmEwMDRkNWU1OTcxYjBlNDY4ZDU5YzZmYmM4ZWUxMTRhNzA5MiByZWxlYXNlMjQtbWFpbnQKKzQyNTE4IGI3NjZlZDAzZDQyNTZhNmVmNGY3ZDQ5ZDJjMWM0MDI0YWE3OWJjY2IgbGVnYWN5LXRydW5rCis0MjUxOSBjNmZkZThhM2I5ZGY4YTA1ZWJhNjZiMTJhZGRjMzQ3NDdjMThkMDQxIGxlZ2FjeS10cnVuaworNDI1MjAgNGI0ZWEzOGRhOThlZDMxOTg0NjYzMGI5ZmYxYWYxZjcxOWI4ZTMwNSBsZWdhY3ktdHJ1bmsKKzQyNTIxIGQwMDgwNzUwNTczYjYzY2RjNzc2ZjkzZTBjZDJjNjMyOTYxYjJiYjAgcmVsZWFzZTI0LW1haW50Cis0MjUyMiBkMTEyZGE3OTY0ZDYyOWEyYTI4NTkyYTYyMmM2YjIzOTg1ZGFjMWIxIGxlZ2FjeS10cnVuaworNDI1MjMgZmY5YWZlYjA1YjM0MjY3NGRhNzhiZDI0OTVjMjZmYWFmMzlhNTM5OSByZWxlYXNlMjQtbWFpbnQKKzQyNTI0IGJkZGMxM2Q1N2I4ODJkMmZlZTJiMzBiNTMzM2Q4YTBjNDU4ZmI1NjcgbGVnYWN5LXRydW5rCis0MjUyNSAxZTM5NjhmY2FjNjgxOWVlNDY1MDFjMTE3NjE5Y2ZhYWI0M2JiOTM0IGxlZ2FjeS10cnVuaworNDI1MjYgOGE2ZmFlZDBhZjA0YjVjOTczMTUyOTAxZDJiNGQ5OTllNzQzNjc3MSByZWxlYXNlMjQtbWFpbnQKKzQyNTI3IGQ0ZTE3NjJiOGUxNTM0MGZmY2ExZTk3ZjVkZjcxMmQ0OWUyZjU5NjAgbGVnYWN5LXRydW5rCis0MjUyOCAyODQxM2MwODJjMDg3NjJlMGI1OGE1MTg1NWI2MDM4YTFlOGQwMWM4IHJlbGVhc2UyNC1tYWludAorNDI1MjkgZWIwOTc3OTMyZTJkZTg2NWVmNTJiNzRlN2RlNTdjMGE4YjJjNTM0YiBsZWdhY3ktdHJ1bmsKKzQyNTMxIDQ5ZDljMTIwMzU3YWQxMDE1ZjliMWZiNWUxZWZjYzNlZTc0M2YyNzkgbGVnYWN5LXRydW5rCis0MjUzMiA0ZDk4OGRkYTY0Nzg2NDRiOTFkNjFmM2RhM2M5YWJiMjI1OTk2ZWFiIGxlZ2FjeS10cnVuaworNDI1MzYgMjBjOGZhMWUwNjY4MzhmMDU5YWRkZGQ1OGI5YTlmZTQ2MTFiY2ZhZiBsZWdhY3ktdHJ1bmsKKzQyNTM3IDk4ZjZiNTlhNmUwYTA5ZGE2YjZmNzg2MWM0NGVmOGZiMTAyYjI2NGIgcmVsZWFzZTI0LW1haW50Cis0MjUzOCAxNDVkNWZjOWE2YTUxYTI2NDNmNWRlMTIxYjVhMDgwZTcwYjIwZTFkIGxlZ2FjeS10cnVuaworNDI1MzkgNGU1MGFhN2JiMWI1MmQxYzEzZTAzNTU0NWVhZjJiNmFkYWNmZTUxYyBsZWdhY3ktdHJ1bmsKKzQyNTQwIGQwZWJjYjRmNjAzMTM5YjM0MDM5YTVlMmVkZDNlMTA1MmMwOGFlNjUgbGVnYWN5LXRydW5rCis0MjU0MSA2OWMwYmVjMTEwMGFjODNjNzk4Mzg1YTFiNTE4MmIyMjdhMDM3ODZlIGxlZ2FjeS10cnVuaworNDI1NDMgNWYyY2I0NDVlMWM1NDllZGQ5ZDVjMmU2YjdmMmI2ZDNkMDljMTA0NyBsZWdhY3ktdHJ1bmsKKzQyNTQ0IGUwYzJhYmQ1ODFjNWIwYjU1ZTQyNmNmZjliNDA4ZTQxZWJmMzg0OWIgbGVnYWN5LXRydW5rCis0MjU0NSAzNmFlM2Q5Mjk4MzJkNGZmOGNhZTczYzY5NDZiZjU0YWRkOWNjNThiIGxlZ2FjeS10cnVuaworNDI1NDYgMmM4ZGMzNTgxYjcwZjJkMTFhNDRlYzQ5YTRmMjEzNDI5YzBmYzdkZCBsZWdhY3ktdHJ1bmsKKzQyNTUwIDA5ZDE5MzdmMmRhODk1ZmU4ZGM0MGM1N2RmY2FiNjIzMjE1NTMxZDcgbGVnYWN5LXRydW5rCis0MjU1MSA4MWYxYjBkZGM4YTE2ZjFhYTNlNjJlMGFmY2FjYzBjYmQ2MDVhNDUxIGxlZ2FjeS10cnVuaworNDI1NTIgNWE4MzY5ODYyMDZkZDM5MGRhYTZhMTU0ZTBlODgzN2IwN2EzYjhiYSBsZWdhY3ktdHJ1bmsKKzQyNTUzIDIxNjIyMTYxMzliOTU2OTU0MzJlMTc0ODc5YWZiODk5ODU0NmJhNjQgbGVnYWN5LXRydW5rCis0MjU1OSA5MTFjN2ZhNDk1YjI0MDQ3MDZmOGFhNDVjY2NlMGE5YTE0ZjhhYWEwIHRpbS1vYm1hbGxvYworNDI1NjAgMTQzYzM0OGZmNzE3NjlkNjBiMGRhZjRiZWYyMDc0MTlmZTMzMjVlNSB0aW0tb2JtYWxsb2MKKzQyNTYxIDQxMjc2MTRmNzUyYTFmNDM2Yzk5ZWM3OWFhODRhYzY5NTYyN2NiMGEgbGVnYWN5LXRydW5rCis0MjU2MiA5NTgwMDg3NWJkMTI1OTRiMzA0ODJjOWY4YjMyMDc5YWRjNjlmMTZhIGxlZ2FjeS10cnVuaworNDI1NjMgZTFjM2ZmZTkyNmMxMTU2MmRhY2M0NzY4MDhjMDM0OWNlNDBkYThjZCBsZWdhY3ktdHJ1bmsKKzQyNTY0IDVkODI4NzAzYzZhMTczMmFkZDQ0MjAxZDNmM2U0MmQ4NzA1MmI0ODIgbGVnYWN5LXRydW5rCis0MjU2OCA2MjU2NGRjN2JkNzI2MmQxMDEwODQxYzE1MGViMDY2YmE3MDczYmNmIGxlZ2FjeS10cnVuaworNDI1NjkgOGRiOTg1YjQwODZlMThjZWU3M2Q2YzkxNzQwZTAzNTBiMzlmMmExNyBsZWdhY3ktdHJ1bmsKKzQyNTcwIDJmZGE0ZDE1MGMzZGI0NmY2NDcwMjliYjcxNzUwMWVkNWExOGE1YTMgbGVnYWN5LXRydW5rCis0MjU3MSA2YjQyOTIwYWNjYzkyNjRmN2NhYmZmNWMzODYxNzJjMjI0ZjM0NWU3IGxlZ2FjeS10cnVuaworNDI1NzIgYzY1MDY0NDJkZmUwMTUyMmVkOGJkYzE4NmIzYTkxMzFhZWUwMThmMyByZWxlYXNlMjQtbWFpbnQKKzQyNTczIDkyY2U4YmI4YjEyYTdlYjVmNGE5MzJkNmE0M2JkZjllMmVkOGU0ODYgbGVnYWN5LXRydW5rCis0MjU3NCBjOTk2YTEyMjM0YzI1OWMwZmNhMGYzNTI4OGFjOWE0YTQwNWRjOTQ0IGxlZ2FjeS10cnVuaworNDI1NzUgMzkyNGFmY2Y5NWU3ZmQ5YjUxM2MxYzU3MGNiNzIxNWU1NzJhYzkxMyBhc3Qtb2JqZWN0cworNDI1NzYgYzlmYmIwNjdjMmE2YzkwZTMwYWI5MTdjMWM4NjBmZTIyNTQ4OWVhNSBsZWdhY3ktdHJ1bmsKKzQyNTc4IGJiNDgxMTVlNmRhYjMzNTMwOTZjMmEzNzY0MjEwYmU0ZTllMzRkNjMgbGVnYWN5LXRydW5rCis0MjU3OSAzYzBiMjYxMTNkZjZlZDViMzZhNjA2NDlkMmZkMzEyNjJlODY4MWE3IGxlZ2FjeS10cnVuaworNDI1ODEgNzEwY2JkZDQ3OGE4NTFiMzQwYWNmNGVmMzgxMGU5NzBlY2Q1YzYzMyBsZWdhY3ktdHJ1bmsKKzQyNTgyIDJhYjkyNzBlZjE5YWVhZjdmMGVhOGY0OGM0NTEwNjZiMjZkNTQ0NDQgbGVnYWN5LXRydW5rCis0MjU4MyA1Nzg4ZTBhNjg5ZTI1NzdlOGE1ZTMwNmY0ODhkNmQwOGI2M2JjNzQ2IGxlZ2FjeS10cnVuaworNDI1ODQgN2JmYmZiMmVmNGUyMTQ1YTU5MzQzODNiZGRlODYwMjEwMWQ1MDBhOSBsZWdhY3ktdHJ1bmsKKzQyNTg1IDU4YTg0NTFmZjc5NTg3ZTNlNzhiMjU0NjBiNWQwYmVmZTBkNDcxOTQgbGVnYWN5LXRydW5rCis0MjU4NiA2MTY1OTI3NDMxZDZhNjg1NTA4ZmRlNDA4NmU2NzFlNWNhY2Q4MmQyIGxlZ2FjeS10cnVuaworNDI1ODcgZGI1NzFmOWNhZDZmODdiZjBkOTBkMzE2YmRhMzMyYjIwNzQwZjhiMiBsZWdhY3ktdHJ1bmsKKzQyNTg4IDg0MTBmMDZhZDM2ZTE4ODU5NTg5NDlkMTk3NThkZjQ3NjA4NjdiYmYgbGVnYWN5LXRydW5rCis0MjU4OSA5NTA0ZjdhYzM2NjljMjgxY2UyMTRlMTg3OWRhNmZjMGU1OTU5ZGIzIGxlZ2FjeS10cnVuaworNDI1OTAgMjk2Y2RhOWIzZTJmODA5ZjQ1ODg4OGEzZGU5Nzk0M2FkMzFiOTNhMCBsZWdhY3ktdHJ1bmsKKzQyNTkxIDU4NDYzN2Q4MzFlM2ZjYmVjZGFlZDI0ODNlMmUwZWVmZjBiMjY3OTcgbGVnYWN5LXRydW5rCis0MjU5MiA2YzBiNmMxY2QxZjQ2OWQ1OTQ5NDNhMjU1YzQwMmVlZGE4ZTcwYjU5IGxlZ2FjeS10cnVuaworNDI1OTMgMmRkZWE1NTM1ZjA4NjQ5ZTU2NWNiNzQyMjA4ZDRlNzdiMTJkNTI5YSBsZWdhY3ktdHJ1bmsKKzQyNTk1IDc4MGI3YWZlNjE3ODVhZjdjMTQ3YTliNzE4NWIwMjRmYzU2MWFiMzggbGVnYWN5LXRydW5rCis0MjU5NiBkYmE2NDk0NzM1ZDAyYTU1MzkyZTVjZWExNjkwMjg0NDE3MGQyN2RiIGxlZ2FjeS10cnVuaworNDI1OTcgNjdjNzRlZmFkOGMyM2Y3ZmNhNDdmNDg3NDgyZTAwNGNmZGIwYzAxZiBsZWdhY3ktdHJ1bmsKKzQyNTk4IDUyMzBjNGMyOWViYjI3ODY0M2U3ZWMyMDY3NjI0ZWQ4MmVhODFmZmMgbGVnYWN5LXRydW5rCis0MjU5OSBhYzQ5ODk1M2NlNTc4ZmFhOTAyNzIyM2M3ZTIzMjVlZmI0ZjJjMzRjIGxlZ2FjeS10cnVuaworNDI2MDAgZTEzOTE5MTBiMDI2NTJkODM0ZTExODQ2MDM5NGM2MGU4ZTliNzVhYyBsZWdhY3ktdHJ1bmsKKzQyNjAyIDU0ZWI1YjFmYjM2MzJlYzhiYWMzY2M0ZTE0NDQ2ZjQ5ZTQ5ZmE3NzUgbGVnYWN5LXRydW5rCis0MjYwMyBlOWYwZGI0MjlmMmJiYWUzYmUxNjUwZjdhY2YyMmU4ZmJkYzFiMTRmIGxlZ2FjeS10cnVuaworNDI2MDYgNTJjYmM0NDdlMWM5ZmJlZTdhZjUwMmZkMmNlNzYwZDQ1ZDY0YTEwNCBsZWdhY3ktdHJ1bmsKKzQyNjA3IGRhMmExMDQ5MjE1ZDYzMThiZjNmN2YyMWQyMTQ4ZDQ4MjUzYmM3NzkgbGVnYWN5LXRydW5rCis0MjYwOSAwYmViZWIzOTMwNDU0MzNkMGFmYzQxNTI5MDgwODFlNzJiNmY4YTAxIGxlZ2FjeS10cnVuaworNDI2MTAgYjg3M2VjNjc4NTYwNTEzNmMzYzY0ZTQzOTVkYTllNDgwMzUxMjc2YiByZWxlYXNlMjQtbWFpbnQKKzQyNjExIDg2MTFmMzljZDgyYmZjMmFmM2Q0OGMxOWQxNDNlNjRiZjEyZTQ0NDYgbGVnYWN5LXRydW5rCis0MjYxMyA3ZDBmMTIzNDBjOWU0ZjU4YjYxYzA2OGU5MWM5YTQwZTA0NjllYzg4IHJlbGVhc2UyNC1tYWludAorNDI2MTQgZTBmZWFkYzdhZmZiNzJiZjgxY2Q1YTFhZDE4NTQ1ODE2MjZmOTdjMyByZWxlYXNlMjQtbWFpbnQKKzQyNjE2IDExNDg0YTcyZDk2NmZkODhlYmZmOWE3N2ViNGNlNmFlZWQxMDMyZWYgbGVnYWN5LXRydW5rCis0MjYxNyBhY2FhNzllNzMxMzMzZTUyZDBhMGU1NDJkMDRiYzViNmQxZmIzZjVhIGxlZ2FjeS10cnVuaworNDI2MTggZGQzZTVhOTQ1OTYyYzFlYzlkODExNTYyZGNlNjRlY2Y3NmYwM2E4YyBsZWdhY3ktdHJ1bmsKKzQyNjE5IDMwMTcxMDUzNWQxNTAyNzQ4MWMwY2JjZGQwN2Q4YjFhYTQ3MzNjMzEgbGVnYWN5LXRydW5rCis0MjYyMCAxODBkYmZjZjNiZWQwNjUwNTk4NTYzMjc5NDQzMDcyYzY3MTNlN2I4IGxlZ2FjeS10cnVuaworNDI2MjIgMDE1MWEwMjM3NGE4MmUyNTNhMzVmNTQyMmU4Y2FiODIxMDUyNWRjMiB0aW0tb2JtYWxsb2MKKzQyNjIzIGRmYWIyMmFlNDhlMzY3ZjQwOTM5ZTM1MTAzMjRlMWI2ZDBjMGRlYjggbGVnYWN5LXRydW5rCis0MjYyNCBiNmQyZjZmZDNlMTE2YjliOWZlOTViYzk4MmFjNzYzYzM1OWZmMTAzIGxlZ2FjeS10cnVuaworNDI2MjUgN2I1OGZiZGU1ZTVkZmMxYmRkMzk4MTBjNjc1ZWQ0MGFjNDAxZDNmNSB0aW0tb2JtYWxsb2MKKzQyNjI2IGUwYTc3MDEwZDAzM2JjOTMyMmE3N2NkZDBlZTI1YmE3ZDI3MTU4MjUgbGVnYWN5LXRydW5rCis0MjYyNyA3OGRlNWY2YjJmNjdiM2U4NTM5Mzg4Yjc3Y2FlMGUzMjRlYTc4NDFhIGxlZ2FjeS10cnVuaworNDI2MjggMzA1NjdiZTkwYzg1MTMxMWU5MmFkMTAwYmMxOTBjZGZjNDhlYTliYSBsZWdhY3ktdHJ1bmsKKzQyNjI5IGFhMDQwNDEwZmI5YTJkZjk5ZDBhMzgzYjM4ZGI2ZjdlYjU0NTY4MmQgcmVsZWFzZTI0LW1haW50Cis0MjYzMCAyYTJkNDZkMTkyOWE0MDZhZmU2NWIxM2UzZDdhYzM4YzIzNjBlZDQwIGxlZ2FjeS10cnVuaworNDI2MzEgZTMyNDhmMWZjNTRkYjcxOGE5NDIzODQyNzliZjQ4ZDU2YmU1MjVmOSBsZWdhY3ktdHJ1bmsKKzQyNjMyIDM1ZGJiYzFhYjQ0ODdkZmY4NzY0OTg3ODFmMzg4OWM0MmE5MzQzOTIgbGVnYWN5LXRydW5rCis0MjYzMyBjM2UyODQwOTY4NmNiZTJjM2E2NzkwMGViYjBkYjc4MWRmNWNlZWMzIHRpbS1vYm1hbGxvYworNDI2MzQgNjY0NWRiMDk0OTQzZGQyYjQ0NGZjMWUwMWQ0ODE4NzY3ODNiODNmMiB0aW0tb2JtYWxsb2MKKzQyNjM1IDlmM2U1OGRiZWE2MzFiYzY2NTM1OTQwNzUzYTUyODg5NjhkNjI1MjEgbGVnYWN5LXRydW5rCis0MjYzNiAzZDY4ZjM1MmMyZmYwMWYyMDdkNmE5MWNjZjRjNzBjMGI3MzZjYzlmIGxlZ2FjeS10cnVuaworNDI2MzcgOGZmMjhmY2Y4NzJlMGE5Yjk1YzZjOWFhYjA1YTA3NzQzY2Y2OGExMSBsZWdhY3ktdHJ1bmsKKzQyNjM4IGI2YjFjNDRkOTExMDUyODUzYzdjZGYxZjc0M2U4M2U3YmRkZmY1NDQgbGVnYWN5LXRydW5rCis0MjYzOSBjZDg0N2U3MjY4MzcyZTRlN2ViYmRiMDQxZjAxOWQ2MGNkYTI3OWI5IGxlZ2FjeS10cnVuaworNDI2NDAgODFiZTE1Yjg0MjQ0NTM5ODI2YWVmMWU2YmJiYzM2NzAwNDgxNjdiOCBsZWdhY3ktdHJ1bmsKKzQyNjQxIGJlYTk0NzU0NDQxYjFhNzBiNzEzZmVlZWVjODFlNmM2ZWU5OWU0MjcgbGVnYWN5LXRydW5rCis0MjY0MiAyNTg5OTAyNDI4OThlNmM2MDNlNzM2NGZhNTgxNGM3MjhhODRiZjQ3IHRpbS1vYm1hbGxvYworNDI2NDMgM2MwN2I2YzVjZjc4OGI3YmQwYzhmZWE4YTk5NGE0YzZjOTE1MDgwMyBsZWdhY3ktdHJ1bmsKKzQyNjQ0IGYxNTMwMmQ4YjJkZTU5ZjFhMTQxMjQxZGVhODAzY2IyZGVkYTFkYjcgbGVnYWN5LXRydW5rCis0MjY0OSA1YzM2YzIyMmU3Y2E1MzEwZTVjYzhiOGRiMjgzYmQ2NjlkMWUyNGQ0IGxlZ2FjeS10cnVuaworNDI2NTAgOTdlZTdiNTMzNjY0ODE3ODBiNmYzMzE1NTBkNjY0YWM4NjNmNjY4MiBsZWdhY3ktdHJ1bmsKKzQyNjUzIGMzNDQ1YjFjZjFiZjFlZDA0ZGJkMWMyZGY1YTgxNTFiNDEwMmQxNzkgbGVnYWN5LXRydW5rCis0MjY1NCA0MjkyYjQyNjgzYzVmY2M3NTU0MzM4YmJmZDg0N2JiNTNlOTFhYzUyIGxlZ2FjeS10cnVuaworNDI2NTUgNzFkODczMDU0ZDI5ZWRiZDIyMDMyYzhjOTE1Y2YwZWVjYmI4YjVjMyBsZWdhY3ktdHJ1bmsKKzQyNjU2IGFlMzlmY2UwZjlhMTZlYzBhNTg4ZDcxODk5ZGQ0NmI3N2Q1MTQ2MTAgbGVnYWN5LXRydW5rCis0MjY1NyA0NWU2ZjkwMTkwMmNhNTg1N2VlZTkxYWJhMDQ4ZGY3ZGQ1NjAxODY0IGxlZ2FjeS10cnVuaworNDI2NTggNjZmYzViMjYyODY4YmVlN2QyMzFjNzU5ODQ2YzFmZWQzY2Q1ZWRlYyB0aW0tb2JtYWxsb2MKKzQyNjU5IDk0MmFlMjVjYjM5MTUwNDA5MTAyZDRkNjY2ZTM3MzE0ODk1YTQyZDEgbGVnYWN5LXRydW5rCis0MjY2MCA0MDJkZTBmZWYxMTZkOGU3YzE0YzAyYzU2ZGRlMGNmZWI1Zjc0YjVkIHRpbS1vYm1hbGxvYworNDI2NjEgMTE1OTYwNjQwZjI1ZGU1YjAxZDIyOWIzMjJiNzllNzVmOGIyMGFhNiBsZWdhY3ktdHJ1bmsKKzQyNjYyIGY3YjQ3MjZhZGE2YzUwOWMwMzlmNjc2MmZlMGFhMWFiMzE2YjNiZjIgbGVnYWN5LXRydW5rCis0MjY2MyBjNDBhMzNjYTY1YjkxNjNiOWQ4MmRjOTNlYjliMTcyZjM2YzNiYmVlIGxlZ2FjeS10cnVuaworNDI2NjQgZTU4MGM4YjBkY2VhYjQwZWJmMjlmODU4NjlhNDY1YzQ4ZTBjNmFmZiBsZWdhY3ktdHJ1bmsKKzQyNjY1IDVmMzgyMmMyZTczMTA0YmJlNGY5ZDdjYTA4MWJiMGIzMDM4NTI0M2EgbGVnYWN5LXRydW5rCis0MjY2NiA5OTA2NmJlYTE3ZjhmMDMyZTgwNzhkNWFkNzhjNmFjZWI3NGZjMGQ0IGxlZ2FjeS10cnVuaworNDI2NjcgYmJmMTZmZDAyNGRmN2JjZWJjMGY2ZmU4ODJiN2NjOGNmOTc2MGI1NiBsZWdhY3ktdHJ1bmsKKzQyNjY4IGMwNjYxM2U1M2ZhZGYzNzQ5Yjg5MWU4ZmNmZDRhY2ZjZThlMjljNDYgbGVnYWN5LXRydW5rCis0MjY2OSBmMmE4OTVkMzNhNWNhZTkxM2Y2ZWRjODNhMDUxNWEwYjk3NTgxMjU3IGxlZ2FjeS10cnVuaworNDI2NzEgZDZjYmM3MWI4MDEwOTA5OWQyZDM2NzhiYmE2ZThlOTJhNjMyYjI4YiBsZWdhY3ktdHJ1bmsKKzQyNjcyIDg3NzA2NDM4ZGMzYzQxYmEyN2M3ZGM5NGRkMTM1NjIyMTE3N2YxMGQgbGVnYWN5LXRydW5rCis0MjY3MyBmZDU0OTdiNjQyMDljMjQxMTdhNDdjODZlM2U4Nzk1OGZkZDk4YzljIGxlZ2FjeS10cnVuaworNDI2NzUgOGEyYTVmNzFiOGIzZDdlMjcwMDZhMTIwNDc0MDI0Yzk5ZjM5OWI4ZCBsZWdhY3ktdHJ1bmsKKzQyNjc2IDY1ODNjODY4ODE3YWFhNGM5YjljZTM3YzM1ZGMxM2VmYjdlMTJlZDUgbGVnYWN5LXRydW5rCis0MjY3NyA0YTRlMGM1OGQ0MzdlODdmMGMzMTU5OTk1Y2Q3ZWI1OGUwYTgwM2Q1IGxlZ2FjeS10cnVuaworNDI2NzggNDE3ODE1MDYyMzM3OGExZTkxNTI1Y2FjYzRkOWFhNzc2MjU0Y2NiMCBsZWdhY3ktdHJ1bmsKKzQyNjg1IGJiY2U4ZWMyZmY4MWQwZGNmOTgzNzE2MWYxNjhmYmUyMDQ3NWRlYWQgbGVnYWN5LXRydW5rCis0MjY4NyA4YjY4NTEzODJlMjc1MzU4ZmE4YjI4YzUyZWY3ZmVjNzkyMmJjNDQ2IHRpbS1vYm1hbGxvYworNDI2ODggZmE5MmZlMTUyNTFhMDUxMDg1N2IyMDI5ZTZmZDJiNzVjMTk1OTY2MiBsZWdhY3ktdHJ1bmsKKzQyNjg5IDQzYjlkNWYwOTAxYmU2NjI4NDQ1ZjVhYTUzMDhjNzNjZDlhMDgwY2UgdGltLW9ibWFsbG9jCis0MjY5MCA0M2M3MDQ2MGNjZDU5MGQwYjU5NDhmNDU4ZGJiNGM4MWFkZmMzMWY5IGxlZ2FjeS10cnVuaworNDI2OTEgNzk2ZDE1MGU0NWE5NGJmZjEyMDU4NzQyMDIzMzQ5N2I3YzcwYjdkZSBsZWdhY3ktdHJ1bmsKKzQyNjkyIGEzZTRiZDQ3NWFkN2Y3NDg1ODQwZTEzYTQ4MzJmYjRkZDIyOWExMjAgbGVnYWN5LXRydW5rCis0MjY5MyBjMDk4MmI4MTU1YzYyZDNmZjQ1YTgyMWZkNmFkMzE1YjU3MjNiZTBmIGxlZ2FjeS10cnVuaworNDI2OTQgNjU4ZjhmZjJhNDQyZDAxODE1NmU1NTgxYWNiMTk3NzhjNmYwZTQ2MyBsZWdhY3ktdHJ1bmsKKzQyNjk1IDMxMDUxYTcwYjI5NzJkOGYyY2U0MGU0ODljZWRlYTk0OTQ2NDAwZGIgdGltLW9ibWFsbG9jCis0MjY5NiBkYmY5Y2M2YzM2ZWJkNzFjYmJkOTIzMzdmYzIzYmViNjliODgzMTcwIGxlZ2FjeS10cnVuaworNDI2OTggYTIxMzhkZmI1OTY1MjY0OTQ1NTI2ZTAxMmM3ZjVlMjgxZWMyOTdmNyBsZWdhY3ktdHJ1bmsKKzQyNjk5IDNmZmMxZTFkMmY1NzZmNjRmNmQ3MTgxYTYzMzY1MzI2ZTBhY2VmZjAgbGVnYWN5LXRydW5rCis0MjcwMiA5MjI1MzlkYmRjNGU1ZDljODZjNTBmNTM4YmYwMzNmYjdkNzYzMWQxIHRpbS1vYm1hbGxvYworNDI3MDMgZTgyMWI5MzZmM2ZhNzU2YTE3NjhjZTYzZmE0NWFjYmUwYjg5Yzg2MCB0aW0tb2JtYWxsb2MKKzQyNzA0IDhkZjU1MDE0YzhmYjBjZDI3MTRhMzNkYTNiNDFiMDgzM2FlZWJiYTkgdGltLW9ibWFsbG9jCis0MjcwNSBlZjUyNDZjZThmZTY1NjAwZjBkZmE1YWE5YWY0YWVhZmY0NjE4YmUyIGxlZ2FjeS10cnVuaworNDI3MDYgZGJhNzcwOTJkNDZlYmFmMmJiOGYyNDJiYzJhZDAzZDg3N2I0ZjU3OSBsZWdhY3ktdHJ1bmsKKzQyNzA3IDBmNzI4NGM0OTFhMzE3YmQ3ZmY2NDllNzZjZWFiZjgxMTUwYTc2MmIgdGltLW9ibWFsbG9jCis0MjcwOCBjMjk0MmNkZDg4YjMyNTA3ZjU1YTM5NDQ0YmI4ZDgwMTk4ZjI2MDY2IGxlZ2FjeS10cnVuaworNDI3MDkgMGI1ZTlhY2UyZTg3YjM4NjgyNTBmM2RkMzUxNDM4NWM5YTJlM2QyMiBsZWdhY3ktdHJ1bmsKKzQyNzEwIDkyYmE3MjQ4NGZmMzg0NTI0OGVlOTk3YjE2OWZkM2E2ZTA2NTA1N2UgbGVnYWN5LXRydW5rCis0MjcxMSA4ZTA0ZGUyNDgwZTQ5ZWE4NDY3NmMxOGFiM2ZkNjVmN2FjNjRkOWEyIGxlZ2FjeS10cnVuaworNDI3MTIgN2I2NmIyZGNjNWU5NmE2NGExOGRmMjFkMTNiYTlmMmFmMTFiNDhkNSBsZWdhY3ktdHJ1bmsKKzQyNzEzIDFlODNmMTgyYjVmOWFmODExZDQ3NDhlZDkxYWVhZmQzNmI0NTEzMTQgbGVnYWN5LXRydW5rCis0MjcxNSAyZjE5Yjk4MWFjMjQ3YzMyM2QwNDA0MTllYjYxN2NmMzJlYTdhNWUwIGxlZ2FjeS10cnVuaworNDI3MTYgMzJlMmI4YmRhNTM1YjhhNjg3MTVkMTcyNTQzN2YzOWEzNjJmZWJlMCBsZWdhY3ktdHJ1bmsKKzQyNzE3IGQwY2E2MzAyZGQzYzk4Y2NmMDcxZDgzYzYxYmJiN2M3ZDgzNGRjZTMgbGVnYWN5LXRydW5rCis0MjcxOSBjNDEzOGFkMWUwOWEwZTM5Yzc4MjMwNGVkMmRjOWU4MGJkNmUxZmEyIGxlZ2FjeS10cnVuaworNDI3MjAgM2UxOTI3MWVmYzQ2ZTY5MjYzOGNiZDM2MWQ3ZTEwZWE1MmExNDY1MSBsZWdhY3ktdHJ1bmsKKzQyNzIxIDgzYjg2MGFjZmU5NWU2ZjAxN2NjZDYyMDI5M2Y3NTQzODAzZTQ2OWEgbGVnYWN5LXRydW5rCis0MjcyMiBhMzY2ZGZjNzAzNWZkMTkyMGMxYWEwM2IyN2YzNTQ3YWYxOWU0OGRhIGxlZ2FjeS10cnVuaworNDI3MjMgM2RkOTJkOTdhNjdmZjgyMWRmMmUzNzgxOWIzY2Q4NmU5MjhiYWE3NCBsZWdhY3ktdHJ1bmsKKzQyNzI0IDIyYzUxNjMyYjQ1OWQ3NzAyZTRhYzg1NjE1YWZhMmZiMDY2MmI3MjAgbGVnYWN5LXRydW5rCis0MjcyNSA1ZTQ2M2FlNzA3MDc2ZGQyODcwOGQ3NjdkM2VmMmIyYzM0YjQ0ODZkIGxlZ2FjeS10cnVuaworNDI3MjcgOTVhOTJiMmI1M2VlNDlhYzYzNzg2ZWVhNzMxYmQyYzhhNTkyOTgzYSBsZWdhY3ktdHJ1bmsKKzQyNzI4IDA2NzQ3OTZiNjk2Y2M1YTIwNjBjYmEyMzM5NmJmM2QzOTcyM2E2MTEgbGVnYWN5LXRydW5rCis0MjcyOSAxZGFhMTk5Yjc4NGJlNGE2M2Y1MGM4MDVmNmFiNDNhOWM2Nzk2ZWRmIGxlZ2FjeS10cnVuaworNDI3MzAgZTM2NGJjNzZiZGM4ZDQ2M2Y2NGZiNzIzYjZjMDM1MDAxNGRjNzg3NSBsZWdhY3ktdHJ1bmsKKzQyNzMxIGQ2YzMwY2UzODY4YjEzZDdjOWRkZDMzN2U5NjU5ZmZhZTdiMmQwMzEgbGVnYWN5LXRydW5rCis0MjczMiBhYjFiNTNkNTQ5MDFhOGRhNzE2N2ZlYTI0Y2Y5MDk3OGNjNmU0NjViIGxlZ2FjeS10cnVuaworNDI3MzQgNjIzNzYzNDU3YTRlOGY3NTcwMTYzNDhiMWI0NjU1NTM4ZTk2NTI0MiBsZWdhY3ktdHJ1bmsKKzQyNzM1IDRjYzk1ZmNlNjVkYTc2Mzk2NzlmZTVhYmE5YTcyMzkyMjQyYWVlNjUgdGltLW9ibWFsbG9jCis0MjczNyBmOGZmYTdjYmY5NjA1ZGU1OGNjNGNmNzg3ZTc3YTVkZjUyYTQ5OGU5IGxlZ2FjeS10cnVuaworNDI3MzggYWY5ZjliNTkzYTUzNmQ3MjhkMmM0NzhkZTY2ZjA1ODZjZDUwMTQ0OCBsZWdhY3ktdHJ1bmsKKzQyNzM5IDY0ZmYzYjIyNWQ0ODUxNjE1NGQ0NTFjZmVlOGM0ZjA0ZDczZDIwZWEgbGVnYWN5LXRydW5rCis0Mjc0MCAzNTYxMmExMzFhYzYyNDgxNDk5ODI1ZGRhYzIxMDFiOWQyYWY4M2E0IGxlZ2FjeS10cnVuaworNDI3NDEgYTU0OTQ4MTgwYTNkZTIyOWU1ZTFjZjgzNWFjMDNjNWJjYmQ2YmUwZiByZWxlYXNlMjQtbWFpbnQKKzQyNzQyIDFhZWEzYWVjYTUzNWE2MzBjYWQ2MzRkODQ1YjI0NmJlY2M1YmRmNWUgbGVnYWN5LXRydW5rCis0Mjc0MyAxMjExYTY4YjI4ZGQzNzE3NzlkYzQyYTU4MzI2YzQ3YWYyZTRkM2QwIGxlZ2FjeS10cnVuaworNDI3NDQgY2Q3ZDI5MTkxNzhjNzU3NjM3NzdlMDk1M2JlMTE5ZGU1M2M3NGVhNyBsZWdhY3ktdHJ1bmsKKzQyNzQ1IGE3YjM2MzJkMGUwNTE1MjViZjU4NzFmZjZmNjg0MWJkMjIxODZmMGQgbGVnYWN5LXRydW5rCis0Mjc0NiBhMDBhOWVlZjYwNjNhY2U5OTdmZDNlMzc4Y2Y1YzU5ZjllYTA2ZGU1IHRpbS1vYm1hbGxvYworNDI3NDcgMzc2NzkyYmZiNTdlZjliODM0MGY0YmE0N2Y5ZjMyNWUyZjVhMmQxMiBsZWdhY3ktdHJ1bmsKKzQyNzQ4IDI1ZjhlNmRkZTRhM2IwOTZiMDVhYjMwNzM2YTFkYzYzNDYxNTZhYmIgbGVnYWN5LXRydW5rCis0Mjc0OSAyYjY1OTI2OGE3M2FhM2U2ODQ1MTY4OWVmNDIwZDdlOTZhZWQyZTFkIGxlZ2FjeS10cnVuaworNDI3NTAgOTY1YmI0YTU0MDk2NjMyYmYxNDQxZGFkYzgxMzY5NjAwODc1NGI2NyBsZWdhY3ktdHJ1bmsKKzQyNzUxIGQ4NTNiYzA2ODQ3ZTY2ZGE0YTVkYTdkMmY2MDRmZmE1ZDYxMWVkOWMgbGVnYWN5LXRydW5rCis0Mjc1MiA2ZTI4NWM2OWVmYzA1YjdmOGJkYmIwOTkwYWVhN2IwYzkzYmY4ZDU2IGxlZ2FjeS10cnVuaworNDI3NTMgNTczMjJjYjJjYTExMTdiN2YwZDJiNGMwZGQ1NDYwMWUwYmJkMmZhYSBsZWdhY3ktdHJ1bmsKKzQyNzU0IDBjYzU4ZGJkODdmZWJlMTgyMGFiMzY0OWQ1MzYyMWJkYmYzOTY1NTQgbGVnYWN5LXRydW5rCis0Mjc1NSBjM2M1ZDA2ZmFhMDFlY2QxZjY3YmVhNTE1YTNmMmI2OGFiNDVkNjVmIHRpbS1vYm1hbGxvYworNDI3NTYgZjY2NmJjOWY2MTdkODcwMmM0NTgyMjhmYzY0MmFmZjgyMTNiMWU2MiBsZWdhY3ktdHJ1bmsKKzQyNzU3IDA5ZDE3NDMwZjRjMjVhYzQ5NDJhZGY2YjE2MzcxYWE3MjVmMGEwYjEgdGltLW9ibWFsbG9jCis0Mjc1OCAwZTJjZDk0YzUzYTk4YTA4NDNmZWY3YmZiMjFiZDExOTVmZDQ3MjZjIGxlZ2FjeS10cnVuaworNDI3NTkgNDhhMjhiMzVkZDY0NTU2NWVhMmMyNGEzNGE0Y2QzNTBlYzIzYTRiNCBsZWdhY3ktdHJ1bmsKKzQyNzYwIDAyZDliNDc2OWE4OGU4NmVkZWMyYTgzMTA3YmQ3Zjc4YTM5YTI1MTQgdGltLW9ibWFsbG9jCis0Mjc2MSA2MDRhMTI2ZjgzYzIxNGY0MDk1ZDE5NThkNjBmYTJhMTY2MjlkNzkyIGxlZ2FjeS10cnVuaworNDI3NjMgNjg4Nzk1ODczZmYxY2VhMTQwOGY0ZjJiZjhhZDI0MzI5ODY2NWE0YSBsZWdhY3ktdHJ1bmsKKzQyNzY1IDFlOGNiNDdiZWFhYTQ4ZGY4NTZmN2RmYmM2NzNmMzQ4NDZiNWM4MzIgbGVnYWN5LXRydW5rCis0Mjc2NiBkZjg0M2IwN2Y1ZmUwYThjMzI0ZTQxMDUyNmJkNjIzY2M4ZTE4NDAzIGxlZ2FjeS10cnVuaworNDI3NjkgODlkNjlkOTIxMmEyZGNiOTBmYzg0ZjJhMDBlNWNkN2EwYzZmODI4OSBsZWdhY3ktdHJ1bmsKKzQyNzcwIDA0NzQ3MWNiOWU0ZDk3YjU3Mzg3M2M3MGE0ODBhYzBkODc5ZTgzYmIgbGVnYWN5LXRydW5rCis0Mjc3MSA3Mjg1YzM3ZDc2MzNlNGRlM2RiNTdiNGQ5ZjhkNTIxMzRjMmIzNTQzIGxlZ2FjeS10cnVuaworNDI3NzIgOGRkY2FhYTA4ZmRkZWQzZjFmODFlMmU1Y2I1NmQ0Y2VjZmQ3N2NlMyBsZWdhY3ktdHJ1bmsKKzQyNzczIDQyNDg3ZDhjZjMzODAwOGY4MTQ3MzFlYzNkZDNiY2FiMzcyYjExYjkgbGVnYWN5LXRydW5rCis0Mjc3NCAwNGQxOGJjZjc1MTlmODJkYWFlNTlkOGVkMmJmOTJkODM2N2U4NjUwIGxlZ2FjeS10cnVuaworNDI3NzUgNTE1ZWY3ZGQxNmJkOTdkNjcyNWU2N2MyNDY0ZmVjNTA0YWM1MzUyMyBsZWdhY3ktdHJ1bmsKKzQyNzc2IDg4ZGZkMzI4MWY3MWQ3Y2FkNTE2ODA3OTZjZGJjODA4NGU1NjNmZmYgdGltLW9ibWFsbG9jCis0Mjc3NyBiZDA2NDFkNjI0NjI1MzdlZDQ5ZWYzZTg3ODgzODg3NTQxMWRmMDk2IGxlZ2FjeS10cnVuaworNDI3NzggOGVhZjk1MzFhMmRlZDI5NmQwMWI2NDU4N2RiNTllY2E3OTA3Y2FmOSBsZWdhY3ktdHJ1bmsKKzQyNzc5IDY1ODJhNDQ5MGQxYWFiMTVjNWFjNGU3NjczMGJkMGIzNzAwZDNlZWEgdGltLW9ibWFsbG9jCis0Mjc4MCBjNTUyZjIyNzU3ODJjZjYyYjhhYjRjYzgxODdmMTdiYjU0YzYzODY0IGxlZ2FjeS10cnVuaworNDI3ODIgZTAxZjE3YzI3ZWYzMGM5ZjRjODM3MzM2MjYzMTU3MDViMTQ0YzAzOCB0aW0tb2JtYWxsb2MKKzQyNzg0IGEwMGJkM2NkYjcyODdhYWZiMzZjNGJiNDg1ZWMwYzhhZmZlNmQyNDAgbGVnYWN5LXRydW5rCis0Mjc4NSBkNWU1YTVkOWZlN2MwMjU0N2YxOThkOWYzOTNkMjM4MWZmZThjYzZlIHRpbS1vYm1hbGxvYworNDI3ODcgNzA5OWY2ZTY4MTgzZWNhNjQ5ZjgxMDBjMzlhZjFjMmYwM2MzZDUzMiBsZWdhY3ktdHJ1bmsKKzQyNzk0IGRlNDgxNmQzNDRlZWE0ODU4ZTZmNGM3MjJkM2EzZWI0YWEwMTRjODAgbGVnYWN5LXRydW5rCis0Mjc5NyBiMWEzYzIyMzhmOTdlMWE2NTUyZjk1ZDA0OGU1MzQ2NzJmZjk5YmFkIGxlZ2FjeS10cnVuaworNDI3OTggMmMyZGZmZTA3MGRmMjgzNjEyODQwOGNmYjIyYjU3NGM4NWM5NjkwOSBsZWdhY3ktdHJ1bmsKKzQyNzk5IGVmODc3OWQ0NTVlYzVjYzk2NGU5YWI3YTVkYzVjNzY2N2NiOWMzZTkgbGVnYWN5LXRydW5rCis0MjgwMCBhYmE3M2I0NjgwM2M3NzkwYjFiYzk1YjI0OTYxNDkyMDliNTIyZjE4IGxlZ2FjeS10cnVuaworNDI4MDEgMWQwNTVlYmQ4MzIyOWZhNzcwYmJkNmQ2MWExM2Q5ODUwYTYxNGI0MiBsZWdhY3ktdHJ1bmsKKzQyODAyIDU0NzU0ZjBkMjVjNzJmN2E1ZjFhOWVmOTVhNWI0NmNkZDEzMmQ3ZmYgbGVnYWN5LXRydW5rCis0MjgwNSA3YTMwZGMyYWYzMjkzODU4MTA1ZDQ1MTY5Njg1NzYwOTIzMDRiMmVhIGxlZ2FjeS10cnVuaworNDI4MDYgNmI3Y2EzYjIwMWYzZWZkZmFjZDg3ZWM3ZWVlNzRjYzJhMzczZWI0MCBsZWdhY3ktdHJ1bmsKKzQyODA3IDRmMmFmNTZkOGViZTRkMDI3ZTEzMzNkYTk5ZTAzYTFlNjUzMmNmMGQgbGVnYWN5LXRydW5rCis0MjgwOCBiYzA3OTdiMDZhOTllYmM2ZWE2NzViNTE3MDgzMmJkZWI3YzU4NmUwIGxlZ2FjeS10cnVuaworNDI4MTAgZDM4YWI1Y2FkOTQ1YjM1NGMzMWYxMDExNDAzNGI2NWYwYTA4MDIwOCBsZWdhY3ktdHJ1bmsKKzQyODExIGJiNWUzMDQ2N2ZlNGQxNzYyZTUwODE4Mzk1NWVkOGE3MzQxNTJhODIgbGVnYWN5LXRydW5rCis0MjgxMiBjMWM0NjIxMGI0YjdlNDBlY2M1ZjUzNzM3NjUxNDI2OWMyODFkYmY4IGxlZ2FjeS10cnVuaworNDI4MTMgMTJiY2QxNmMzMWFkZTZmZDQ1M2NhOTQ0MDZjYjNmYmE2ZjRjMTBiZCBsZWdhY3ktdHJ1bmsKKzQyODE0IGQwMmI0Y2ZlZmEwYTBiZTYwY2RlZmIwNzIwMzY0YThhMDg1M2FiODAgbGVnYWN5LXRydW5rCis0MjgxNSA3YTZiMTc0ZGRlZjJmMThlMzBkN2VmYzc5NDU0NWMzMWQ4ZmE5YjA4IGxlZ2FjeS10cnVuaworNDI4MTYgMDdmMzMwYWQxYjQ3NWUyYWI3NTZiYzczMjAwZjJhYjI0MGRmOTQ5NSBsZWdhY3ktdHJ1bmsKKzQyODE4IDliOWQ4MzkxYjY3MWNjNWYwZTU2NTBiMjkzYWU0YjgwMDI5NDg4ZDggbGVnYWN5LXRydW5rCis0MjgyMCBkYjYxMzFjNWFlNWFiZjIwOGZkZTFiMzg0ZjllYTcwYzVjMDFlMGFlIGxlZ2FjeS10cnVuaworNDI4MjEgYjI0MTZmYWIxM2ZlNmQzZmQzZDU3ZTNhMzRhMWJhZTJhMjAzMzljNSByZWxlYXNlMjQtbWFpbnQKKzQyODI1IDFmNTg0MTY0ZTAxMzE3NjFhNWFjMmMxYWVmMTUxZDdmMzIxZjVkYzggbGVnYWN5LXRydW5rCis0MjgyNiA2NTNkODU4NWYwODBhMDE3OTYxNzliZjU0Zjg2MDgyMTI1Y2E4NzFlIGxlZ2FjeS10cnVuaworNDI4MzAgNzQ3MDFlNGZjZGFkMGY5NDg1OTIwNWExMTExNDNiNzJlZjFmZjY1OSBsZWdhY3ktdHJ1bmsKKzQyODMxIGJhYzZiZDM0M2ExMjQ3YjgwNzViMjFjMjdkZjc1NWM2ZjZjMzFmZjEgbGVnYWN5LXRydW5rCis0MjgzMyAzYzUxOWE2MTJiZGI3ZWNhMjQzMjEzNzE5Njg0MmQ3N2U3MmYzZTlmIGxlZ2FjeS10cnVuaworNDI4MzQgOWU4MTc4OGIwZDRiNTkxMmQzMmY5YTA1OTY3NzM3MjQ0ZmY1MjA5NiBsZWdhY3ktdHJ1bmsKKzQyODM1IDBiNzgwOTY2MDQ1NmY3OTIyZDA2MzA2NzE1YjY3NWQ1OTE1ZGU5NjkgbGVnYWN5LXRydW5rCis0MjgzNiA5MTA5YjFhMGQyNjVlMWFlZmM2ZmIyODNkNjdlZjgyOGRjYTk4ZTAzIGxlZ2FjeS10cnVuaworNDI4MzcgMDFiYzhlZTNkMmZmODQ2YzRmN2EzM2E2MTllMGIyODZiNWIyNWQxYSBsZWdhY3ktdHJ1bmsKKzQyODM4IDNhM2FlZDQ5YjI0NTZlOTE3ZDhiNjYyMDYzOGQ2MjUxNzlmOGJlM2UgbGVnYWN5LXRydW5rCis0MjgzOSBkZWRjMmM5NGQxMTI2MjQ0MTg1NjJjZWQwM2MwNGM5YmM1MWI2ZjdkIGxlZ2FjeS10cnVuaworNDI4NDAgN2MxYWNhOGUzZDdkN2E1YWI5MjU1YmYzMWU0OTU0YjVlNWQ1MmQ3YSBsZWdhY3ktdHJ1bmsKKzQyODQyIGIxOTI5ZThkMTVmOTk5OTQ0YTUyYTdjYWY2Nzk0MWU3YjQ1ZWMxN2MgbGVnYWN5LXRydW5rCis0Mjg0MyBkM2QwZGQ5MmM3MzFhYjdlMGFjNDdiZjJhZDQxYTdlNTI0ZWRjOTYyIGxlZ2FjeS10cnVuaworNDI4NDQgYTk2OWJkMTU3ODhmNTE0MDUxNzdmOTQzMmJhZjYxMzViY2Q3MmMzNSBsZWdhY3ktdHJ1bmsKKzQyODQ1IDE4NDhkNzViYmRiMzhiZDVjNDRiZDI3NjAwMGU5ZWMxZTQ5MTEyZWIgbGVnYWN5LXRydW5rCis0Mjg0NiA0Mjg0YjMzMjRjZTJlNGI2NDFkMGEyNzhjNDczNDZkOWIwY2Y5Yzk5IGxlZ2FjeS10cnVuaworNDI4NDcgMzkxZjc0YzljMjYzNjgwOTcwMzZmYzRkZDQwOTA0NWMzMzJjYWFhNyBsZWdhY3ktdHJ1bmsKKzQyODQ4IGFkYmFhOWViYTk3NTQzZDdhMTFkM2U5NTY1N2UzYzFkZWIwODkzNGEgbGVnYWN5LXRydW5rCis0Mjg0OSA0Y2NlZjQ3ODgxZjc5ZDkzOGY5MTI1OTg4MTg5MjhhMDQ5M2VkMTBmIGxlZ2FjeS10cnVuaworNDI4NTAgMmQxZGYyNGUzM2RmNzEwZTRkMzY3Yzg4MmYxYzY3YjA3YTZlMWQwOSBsZWdhY3ktdHJ1bmsKKzQyODUxIDNiNjc1YWM5YTkyNTRlMTIwNWQwMjUwNDY3NzM3MjA1OThiYzQ4OTggbGVnYWN5LXRydW5rCis0Mjg1MiA4Y2QxNTI3NDYzOTg3OTdkODZkMGU3NmFhMDY2MDcyODM3MjlkYWE2IGxlZ2FjeS10cnVuaworNDI4NTkgNmFhYWRiYWIzNTMwMTU1ZWMxOWQ4MWNkYTNiZGFiYjMwNjFmYzZmMSByZWxlYXNlMjQtbWFpbnQKKzQyODY4IGY4MGNhNzEzYmI0YmVhMzUzOTM5MGMyMTEzNzU2N2FlYmVkMDE5YzUgbGVnYWN5LXRydW5rCis0Mjg3MCA5YjEzZGE2NDdhNWViYjU1MmJiODdmMDhhNTllMDNjNmNkOTM2MThhIGxlZ2FjeS10cnVuaworNDI4NzEgOGUwZjBmYjE0ZDM1OGI3YmZjMjVhY2JhZmZmZjNjM2U0YTU2NTExZiBsZWdhY3ktdHJ1bmsKKzQyODcyIDIwNGMzMDdiMDFjZTU3ZWMzN2ZlYjFiZmYzZGRjNjMyZWU2YWZkM2YgbGVnYWN5LXRydW5rCis0Mjg3MyBmZTA3MzZjY2JhNzU1MTgwNzIzNDYzNzNiOWYzMmM1ODcxOTg5ZTRlIHJlbGVhc2UyNC1tYWludAorNDI4NzQgY2Q3MmViNTVkNWY4ZDhjY2E3MWI5MGI0NTI0YzRhNjUwNTk2ODNlYiBsZWdhY3ktdHJ1bmsKKzQyODc1IDdmYWM1ZDc5ZDA0M2JmYWU5NzExMWYwNTc0YmM5YTcwYjBkYjRjMmIgbGVnYWN5LXRydW5rCis0Mjg3NiA0ZjYyOGVjYzMwY2IyZWI0ZTIzZTk0NWVjMDI1YzI3Yzk3MDAxZDZiIGxlZ2FjeS10cnVuaworNDI4NzcgOGViZjc5OTdjNmNkNTZlODNjODNkNmYzMGU0ODVhNzBlNTNjYzU0NiBsZWdhY3ktdHJ1bmsKKzQyODc4IDg5NTA3NGU1ZWQzYWI4MGE0NjNiMTBlNmJhOThjZDA2NThmYWYxYTIgbGVnYWN5LXRydW5rCis0Mjg3OSAxZTA0M2ExMjViZTY4M2Y1YjQxMDQ3ODgzNTQ3MWM3YmU4N2U2M2MzIGxlZ2FjeS10cnVuaworNDI4ODAgMmQyNGYzYTM3YTFiMzVmNTM0M2UwYTAxMTE2ODVkMTNiZWNhNjM2ZiBsZWdhY3ktdHJ1bmsKKzQyODgxIDFlMTkxMzkyZWM1YzYxODJlYzY2Y2NlMTYzOTM2MjhjODUwMGE1NzMgbGVnYWN5LXRydW5rCis0Mjg4MiAxNWQzMzI5NTYxNWY2ZjBhNDRhOWZmODc4MDczMTNmMGE3OTE5MGMwIHJlbGVhc2UyNC1tYWludAorNDI4ODMgOWViMjRmOTJhNzg0YmYwY2VhNjZjYzJiY2M2NmMxZWRlZjJhNGYwZSBsZWdhY3ktdHJ1bmsKKzQyODg0IGE3MzVkZjU1MmYwMmQ5ZmExOTk2MzJiMjQ0MDQ4NmUwOWViNTZiOTQgbGVnYWN5LXRydW5rCis0Mjg4NSBlNjI3NjdlNjRkZTgxOTZjNTIxMmY4NGJmYzE5ZjlmMTI4YTJjMjU0IGxlZ2FjeS10cnVuaworNDI4ODYgYzkxMjE1NjQyZGNkNDVkZTAwZTI3Y2Q3M2YxZTUzYjk0ODNmODJhYyByZWxlYXNlMjQtbWFpbnQKKzQyODg3IDQ1NTY3MmE4Zjg3NzYxYzcwZWI2NGIwM2Y4OGQwOGY4YzA4ZDgxMTQgbGVnYWN5LXRydW5rCis0Mjg4OCAyNTdhZDg5ZDkyZGY4NDUyMjM2YjhmZWQ2N2ViODBhZTQyNTZiMGZhIGxlZ2FjeS10cnVuaworNDI4ODkgYjE2ZTUwNDQxM2MzYjgzNDZjNThhMTVmYjhmMTVhMzE4Yzg0MGE0ZiByZWxlYXNlMjQtbWFpbnQKKzQyODkwIDc4YzlhY2JiNDYzYzMzYWYzYWQ1NmI5Njg0MTAwNjQxNTE1OWIxN2EgbGVnYWN5LXRydW5rCis0Mjg5MSA5YmI1OTBhMGI3ZmIwNGE2NTYwYzczZTM3ZWUyYzhiMzFiNmNhZGQ5IGxlZ2FjeS10cnVuaworNDI4OTIgNjhhMDk0M2RiYmU1MzNkYjI4Y2IyNmI3Y2ZkMTcxNWFkZmI3OGM0MSByZWxlYXNlMjQtbWFpbnQKKzQyODkzIGNhNGJiY2JiZDBkNTk1MGYxMDExYmM5MWQ2NjBkZDYxNmQwMjE4ZWIgbGVnYWN5LXRydW5rCis0Mjg5NCBlOWE3YTI3ODRlMTdlZmJiYTIzMDhlMWFjYWQ2NjdmY2JiZWZkMjgzIGxlZ2FjeS10cnVuaworNDI4OTUgYWNjZmIxNTZmOWNjNjQxZWFmNGMyM2EzOWVlNzRhMTJjZDkyNWUyMyByZWxlYXNlMjQtbWFpbnQKKzQyODk2IDhkNDFkZGMzMWU2MWU2M2IyMmUxMjdmMmE1YmVkZGQ4ODE2NDZmYjEgbGVnYWN5LXRydW5rCis0Mjg5NyBiMjJjNDhmZTYyYTRiMjg2NDM4ZGE3NDRhMmEzNTUyODIyZmViZTI2IHJlbGVhc2UyNC1tYWludAorNDI4OTggNDcwNmI3YTEyNTZjMjljNzQ5N2U5NGI4NmI3Yjc0OTUzNzE5M2MyZSBsZWdhY3ktdHJ1bmsKKzQyODk5IDZhOWM3MTY1YjE3YmRiN2I4NTEzNmUxZWUxMzE1OGRhYzI4MDY0N2YgbGVnYWN5LXRydW5rCis0MjkwMCBiMTdkYTVlMGE2OTdhMGZmZDE5MWQ1ZjgwZTgxNmU2NDkxODZhNDkzIGxlZ2FjeS10cnVuaworNDI5MDIgY2RlNzU3MzM1NDkyOWZiYjk2NWU1MGJmMzYyMTc0ZTExMDA0NjhiMyBsZWdhY3ktdHJ1bmsKKzQyOTAzIGRiNTZmNTcwYjBjYTEyMDVmM2U0NGJlZjBjZGMxY2FjMzMwNmU4YTIgbGVnYWN5LXRydW5rCis0MjkwNCBkMzQyYjBkYzQ5MzQxNGZiMjM0YzU5OTIyMzgyOTEyNGU5YmYzNzMxIGxlZ2FjeS10cnVuaworNDI5MDUgMTNiOThkMGE3YmFhOGI2ZWZiZTJkM2YxYmRlMzAxNDFhZmE4NDI5NCBsZWdhY3ktdHJ1bmsKKzQyOTA2IDdjZjVkOWJhNWY5N2VhYTNhNDg2N2EwM2I5Y2JmMjk0MGI3ZTlkZmEgbGVnYWN5LXRydW5rCis0MjkwNyBiNDhiYTdjZjQ1NzZlYjVjYTI4OTkyZTgyODgwODA0MTcyMzE0N2VhIGxlZ2FjeS10cnVuaworNDI5MDggZjZiN2UwYzM4NGRhOWZkZGMzMGY1MDIwOTk4OGNkODc0NjYxNWI3NSBsZWdhY3ktdHJ1bmsKKzQyOTEwIGE5Njk3ZGU1ZTE4YmZmNDIwMTNiZTA0ODg4YmE4OWYzMzA0NWM3M2UgbGVnYWN5LXRydW5rCis0MjkxMSA2MzJhNGRhYThkNGFmZTE1MzczZDMzYzMyY2Q5MzlmZTk0MmRmMTk5IHJlbGVhc2UyNC1tYWludAorNDI5MTIgNGIzNDdjNjU0NjM1ZjZhNWU1MmZjMmViZDEzMDc5ZjdkM2Y0MzM2ZCBsZWdhY3ktdHJ1bmsKKzQyOTEzIDU1MmRkNWZkYjlkODRmYzc4MTE1ZjRiYmVkMmM1MzQwZDBmN2FiMjIgcmVsZWFzZTI0LW1haW50Cis0MjkxNCBmZDczNTU5NmY2OWMxY2JjMzgwNmNlMDgzOTk3YjEzOTU0ZjdlYjgzIGxlZ2FjeS10cnVuaworNDI5MTYgNDM1ZjdmM2M4YjZkYTQ3NWVhZTVkNDY5ZTJjZDk2MjMyMzMyMWU4YSBsZWdhY3ktdHJ1bmsKKzQyOTE4IDZmMmVkYTQ5NWQ5ZGU2YjY4ZjE4NTJlMGViNDQ2MDM0YjM3ODE1MzAgbGVnYWN5LXRydW5rCis0MjkxOSAyNzkwNWViYWRkYWI1ZGRhYzVmZTAyOTU1MWE0ZTY3Yzc1NDViZGZlIGxlZ2FjeS10cnVuaworNDI5MjAgMDAyM2MwY2Y4ZmViYzBiOWFmM2MxMjUxNjUwMTQyMDE3ZWI5ZTk3OSBsZWdhY3ktdHJ1bmsKKzQyOTIxIDkyMjdhZTNkYjdlZDFlMmE0YWY0M2IyYzdjMjg3MTcyMWJmMzE2MWYgbGVnYWN5LXRydW5rCis0MjkyMyAxMmIwODEyM2VjYmNjZDgyZTE4NjQ4Yzk4MGU1MGJiMDVkZDhjMjIxIGxlZ2FjeS10cnVuaworNDI5MjQgNGRlZGMwNWFkNmI0NzY0YWE1MmJkNTA0NDk4N2VlNDRkZWQxYjdlMiByZWxlYXNlMjQtbWFpbnQKKzQyOTI1IDIxMDMzYmI3ZWNiZTE5YTExNGU3NWUzNmE3NTFiMmZjZmVjMzA0OTEgbGVnYWN5LXRydW5rCis0MjkyNiA1NmE0Y2YyYjAyZmRkY2ZkZDc2NmYzNWM3NjJhZDNlNjAxZjA5NmYzIGxlZ2FjeS10cnVuaworNDI5MjcgY2EyOWRkYTU2M2I3YTQ2YTRmY2UzMjdjNThlYjMxNDJhMWMyYTFmZSBsZWdhY3ktdHJ1bmsKKzQyOTI4IDkwMmVmMWRjMjk3OWI2Y2JmODI4MTdlMzVhMzgwZDRhNzE4ZDc0MGEgbGVnYWN5LXRydW5rCis0MjkyOSA2OWViNmQxYjk5ZjU2ZDZhNjQ0OTUyY2QwODI3NmFhYjVjNWRmNDc1IGxlZ2FjeS10cnVuaworNDI5MzAgM2UyYjU3NDcwMzhmZmZkNDY1N2YzNGM5OTcwYjNiZDFkNDc3Yzc0MyBsZWdhY3ktdHJ1bmsKKzQyOTMxIDBiZjUzNjM5MDE0YTk0YmIzZTA4M2ZkNDE5OWI5MDMzNDQwMjY4YzAgbGVnYWN5LXRydW5rCis0MjkzMiA5MWE5ZTJlMzFlOTMwZDQ2MTZlYmYwN2IyZTkzM2FhNWI1N2MyNzdiIGxlZ2FjeS10cnVuaworNDI5MzQgYjRlODlkMjliZWE4YzQ1Y2YyYmFhYWNjOWQxZjEwYjhkYzJlMTM3NCBsZWdhY3ktdHJ1bmsKKzQyOTM2IGIyMTg0ZDkxMGEwMGY4MTY5NjM2NDI4ZGU2OTI0MjEwMDIwYzgxOTAgbGVnYWN5LXRydW5rCis0MjkzNyAwZTM2ZTdjNjZiOGU4YTVhM2ZlMjlmYjEwOWEwM2RjNzk0ZmE4ZGRjIGxlZ2FjeS10cnVuaworNDI5MzggZjFlYWFlN2Y5NjJkM2Y3YTFhYWQzMTI5NGFjNTUyYTAxMjUzMTE1NyBsZWdhY3ktdHJ1bmsKKzQyOTM5IDE4ZjkxMWRkZTNlMjQwMGRkZWIwYmRkMDJlY2NlZWFmY2M0YmQ4NjUgbGVnYWN5LXRydW5rCis0Mjk0MCA1MDJhNjg4ODc3ODM5OTliYWY1ODQ4NDEwMzUwYThjMjBkM2U4M2NkIGxlZ2FjeS10cnVuaworNDI5NDEgZDQwYjQ4ZGY4M2U3OTRkOWEyYzA0MDBhOTU4NTAxZmYwYjMwY2IwYSBsZWdhY3ktdHJ1bmsKKzQyOTQ0IDZlOWIzNjg3ODlkZjBjZTU2NjNlMzFhNTIzOTNmZDJkZmVjMjY5MTggbGVnYWN5LXRydW5rCis0Mjk0NSAzNjUyYjUxMjhiNzA3ZGU4MzMxMTQwYjZlZDcyM2EzMTZkOGJiYzhiIGxlZ2FjeS10cnVuaworNDI5NDYgNzlkNWI3Zjc3YWM0NTk0ZjMzN2U2NDRjMGZjOGZhOTMxMGM1Zjc4OCBsZWdhY3ktdHJ1bmsKKzQyOTQ3IDk3ZDM4Nzk3YjhiYzA5N2FiM2YwYTNiNzMxYmUxZTA5YWQ5MjVjODAgbGVnYWN5LXRydW5rCis0Mjk0OCBkM2QyZjlmZmRjMDY1NDBjNmI5ZWFhODM4NmE3MWE5MTlhNWM4NDA4IGxlZ2FjeS10cnVuaworNDI5NDkgODA1ODAwMTgxZTBlMTlmZTZjYTJjYzAxY2JhODllN2JlZjZjMWRmZiBsZWdhY3ktdHJ1bmsKKzQyOTUwIDQ4ZTBhNWUzOTQwM2JhMWZmMGU0N2MzZGM3MTFmOTU3NjhiNTFmYjUgbGVnYWN5LXRydW5rCis0Mjk1MSA3YzE3ZTkyMjFmOTQxZjZhMWNkZDQwNzFkY2VjZmEyYmRkNjIzMDFlIGxlZ2FjeS10cnVuaworNDI5NTIgZmMxMGZmMzIyZGYxYjc5M2VkODVmYzgyNDI1YTViMzQ5MmQzOGZmNiBsZWdhY3ktdHJ1bmsKKzQyOTU0IDMyNjZhMDIwYTBkYWI3ZjBhNzI5NGJhZTk4MWY2ZTQ0YjhhZmEyMWYgbGVnYWN5LXRydW5rCis0Mjk1NSAxMWY4YjViOGNlMjAxODc4NjlhOWU5N2EyYmEwNzc2ZWY3NWZkNGM3IGxlZ2FjeS10cnVuaworNDI5NTYgZmFiNDRjNWM4ZGY0MmI5NTMxMWU3NTdlMzA1Zjc5MTFiOGU1ZDcwNSBsZWdhY3ktdHJ1bmsKKzQyOTU3IDJhOTA1NmY0YzE2NDc2NjM0NjYwOTE2MjdjMmQ2ZmRkMTRlZGMwZTMgbGVnYWN5LXRydW5rCis0Mjk1OCBkYjQ2NTA0OTNjMmI4ZTM5MmM5OTJhYzUyMzI0NGZkZjZlMWJkZjQ3IGxlZ2FjeS10cnVuaworNDI5NTkgYWU1OWZjZWQyZTE0MmQ0YWJmZDIyYzdiMTk3NDcyMzVlYjNiNzc5MCBsZWdhY3ktdHJ1bmsKKzQyOTYwIGViZWJhNzM1Mzg5NDdkZjMyNzAwZjgzN2M4NWQ0NWMyMDE4MzE5ZWUgbGVnYWN5LXRydW5rCis0Mjk2MSBmMTIwZjc0MGFiZTQxZTY3N2E2MWFmMzgwOTdmYzVjZmVlODNiY2JkIHJlbGVhc2UyNC1tYWludAorNDI5NjIgMDZlM2Y2MjdhZDk5NTg5ODliNTZlZDg5YTBkY2VkNjUzYWE0NjFiYSByZWxlYXNlMjQtbWFpbnQKKzQyOTYzIGUyNTZiNTMwMmI1NWMzODQ3MWUzYzI1NzMzYzk3MWZiZTAwOTJiOGMgbGVnYWN5LXRydW5rCis0Mjk2NCBkZjQzYzA0ZDI1NTQ1ZWQ0YmJkZTVjMDNkZTk0ZDI5Y2I0MWIwN2Q1IGxlZ2FjeS10cnVuaworNDI5NjYgMWRkNjUyMDRjMDlmZTdkNzkxZjYxOWZlYjViNTRjYWQxMTY3MDk2OSByZWxlYXNlMjQtbWFpbnQKKzQyOTY3IDAzZWY5ODcwNDNjZTAwZTkwNDQ5MGZjZjlmNjQyOTI4NzQ0MThkOGYgbGVnYWN5LXRydW5rCis0Mjk2OCBlNDQ2NWQyNzM3YzRlNzVkZDZlNDFjMDYxMzVhNmU0ZWFhZWRjN2ZkIGxlZ2FjeS10cnVuaworNDI5NjkgNjcxODc3ZDIyYTFjYzg4MjhmMjczZGYyMmIxYzRjMTBlNjIzNjFjNCBsZWdhY3ktdHJ1bmsKKzQyOTcwIDRiODY3ZTY1NGE4YTRjYzA3MzFlYmMzNWZhZjFmNTM1ODU1MTk2YWEgbGVnYWN5LXRydW5rCis0Mjk3MSBmMDYxMjVhOWQ0MDYzNTcxNWQ5Njg1MmUzYmYzOWNkODUzMzM2ZWUwIGxlZ2FjeS10cnVuaworNDI5NzIgNzM1MWFhYjg3ZTZkZTBmYjNiZWM3ZTRkOWViODVkZjcwZmE1YzA5NyBsZWdhY3ktdHJ1bmsKKzQyOTczIDBmMTlhNmZjOTc1NjA3YTYwYTQwMjZkZjhiM2I5M2MwMTFmMzNlMDMgbGVnYWN5LXRydW5rCis0Mjk3NCBmZGIwNWM4YWQ1MzMzYTM5MTc4MDdlNTg2ZWY0NGE1YTgzYWQyYmRjIGxlZ2FjeS10cnVuaworNDI5NzUgNDAyNTZiNTRjNzkwNjBiNjA0ZDYwM2RjMTIzYjBhODc3NjhiNjk3MSByZWxlYXNlMjQtbWFpbnQKKzQyOTc2IDY5MTNlYmE3OGQ0MDc5MTBjMmZlNmU5ZDkxZjI4NzkxN2FiZWY2MWMgcmVsZWFzZTI0LW1haW50Cis0Mjk3NyBjNzdlY2U2NjcwOWQxN2U1NzQ5NTUyZTIxODIwOTMyMzQzYTUzYzYzIGxlZ2FjeS10cnVuaworNDI5NzggYWIwMDMxOWMzNzQ0ODYxMDU0Y2IxMGI5ZWZiYTJhZmM3OTFmMGU2ZCByZWxlYXNlMjQtbWFpbnQKKzQyOTc5IDk3ZmVkNjE4YjVlNzIzYTRmYTNhY2U0MzY5YjE5ZTBjZWQ4NTkzZjQgcmVsZWFzZTI0LW1haW50Cis0Mjk4MCAxYTg0NjViYWYwN2RkNGY3MjlhYmUyNGZlZDc1ODY1NzRhYmZkNTgyIGxlZ2FjeS10cnVuaworNDI5ODEgYzllNDkxMzhmNjU5YjFlMTQ5OTA3YzJhZTUyNjQ4MzZiYjBiMzUyMyByZWxlYXNlMjQtbWFpbnQKKzQyOTgyIGRiNWU3MjBiMGNlZjllMjhmYmNjMjNlN2ZjMjQ3NWEwZDJmY2FlNDYgbGVnYWN5LXRydW5rCis0Mjk4NCA5NTg0MjUwMDdlYTZhOGE2OTM1ZDZhNDU4ODNmZDEzMjM0ZjY3ZTc3IGxlZ2FjeS10cnVuaworNDI5ODUgM2JlMjQyNWQ3NzQwMGQ4ODcyN2U0OTg2NzFjZjMxYjk4YTMwNTBhZiByZWxlYXNlMjQtbWFpbnQKKzQyOTg2IGNiOTg0YThiMTEzNDJmMGJlMTYxZWI0OGRkOTM3YTI5NmZmYzk0MWMgcmVsZWFzZTI0LW1haW50Cis0Mjk4NyA0MzA5YjNmYjViNDM1ZWVhOTAyMWExMTU5YzQyOGUwMDlhNDc1NGM3IHJlbGVhc2UyNC1tYWludAorNDI5ODggMzJiODY4YTQ5NjU5MzA5Yzk1OTMxOWMyMGJmODk5NTVhOTM2Zjg4ZiBsZWdhY3ktdHJ1bmsKKzQyOTg5IDNhZDQyZjk5YTZkYmI3ZmRjMDQ3ZTBjOTA2NWI1MTM2YmI5Njk3ZWMgbGVnYWN5LXRydW5rCis0Mjk5MSBkZGE0MjQxZjlhYmM3ZWExZWRkMjlmODc1YjVhMTJlYjIxNGU5YjYyIHJlbGVhc2UyNC1tYWludAorNDI5OTIgM2Q3YWRmODg3NGFjNThiODM4NmZjZjkzYWJkZjc1M2Y5MDc4MWQwOCBsZWdhY3ktdHJ1bmsKKzQyOTkzIDgyOTJlM2U2ZWNmZWE5N2FkMjllMTdmY2MwMDAzNmIxY2EwMGEzNjAgbGVnYWN5LXRydW5rCis0Mjk5NCA3ZWIyYzBmMGQwZmQ2NjUxMjZkMWE1ZTI4ZGY1YTdjYjRhNWJjMTczIGxlZ2FjeS10cnVuaworNDI5OTggOWEwODcyNDExMGQwYmViOTZkYjgxYzMyOTZiNjg2NjIwYTBjZjNlZSBsZWdhY3ktdHJ1bmsKKzQzMDAwIDMyMTAzYzVkYmVmYWMzZTJiY2RiZmQ0NjkyODA5MmIwNzMwZmExNGYgcmVsZWFzZTI0LW1haW50Cis0MzAwMSBhOGZkOTFjZDMxN2FjYmI4OTEwOGNlNDY1NzI3NTEwMzE1OGU2NWU0IHJlbGVhc2UyNC1tYWludAorNDMwMDIgMTVhNDU4MTcxZWIwMDg5MDYzNWE5MTFkYTY0YzYyZGQ5ZWMwNjIyNSBsZWdhY3ktdHJ1bmsKKzQzMDAzIDBjMDQwODM1MmVlNjljYWZlZGNhYTQ2NWNmYTFjMDI3ZTNlM2Y2YmUgbGVnYWN5LXRydW5rCis0MzAwOSAwMzVjYzg0MTQ3ZmIwNGU0ODlmYTA3YWQ5MmIxYWVjYzQ2NDE5YmYyIGxlZ2FjeS10cnVuaworNDMwMTAgODUxODhlNWI0OTEyZjU0YjcxMDA0OGJiYzYwMjA5OTI3ZjU5OWIxMiBsZWdhY3ktdHJ1bmsKKzQzMDExIGI1YTEzNTcwNTkyZGRjOTQ3MDdjNmM4ZjJhYmJhNWQ4MTJjOTE4YzAgbGVnYWN5LXRydW5rCis0MzAxMiA2YjFiMzJhODVmNDc2MDFkOGZjOTZhOTc4MDNhMDllZDY0ZDEzZTYzIGxlZ2FjeS10cnVuaworNDMwMTMgMjllNmU3YTEwN2RlMzkyMDVjNTQwYTI4NjdjNGMyNmM4Njg3OThkNCBsZWdhY3ktdHJ1bmsKKzQzMDE0IGJkYWZjYTIxOTJkMzdlYjFmMWFmMzAwOTVmODU1NWJlMzliNGRhZDkgbGVnYWN5LXRydW5rCis0MzAxNSA4YzFiZjc5OTk1MmNmMWQwMzQ1YjA3MmJjMGRiNDJiM2FkYjc3MzIzIHJlbGVhc2UyNC1tYWludAorNDMwMjIgOTU0NjllOTdmZDkwMDBhYjI4YzcwZjk5NjRiNzI3OWZlMWIyMDE4YSBsZWdhY3ktdHJ1bmsKKzQzMDIzIDQ4MDhlZTYyYjE1NmE2MTlhNTljMmE4MjU0ODY1MTJhMTliZGVhYmIgcmVsZWFzZTI0LW1haW50Cis0MzAyNCBiM2MzNjQwZDkyZjg0YTEyZTA1ZTI5ODQ1ODE1NWMwNzBmMzQ2MTMzIHJlbGVhc2UyNC1tYWludAorNDMwMjUgYzhmZmM5MTNkMDE0MzA1N2M3NTAzM2NmY2UxMjNjMDI0YjVjNjc1MyBsZWdhY3ktdHJ1bmsKKzQzMDI2IGZmMzAyNDI1OWQ5MWQ3MmJhZTdhN2MzYzdjZWRlMjIzMjIwZTg5M2IgbGVnYWN5LXRydW5rCis0MzAyNyBlMmFiNzU1YWU2ODU4MGUwYzAyMzM4YjU4OTE4ZWI5MTAzYmU3ZjFmIGxlZ2FjeS10cnVuaworNDMwMjggMjJmZmYxZjNjNzhhZTU0NTE4ODFkMDcxOTY1YTMyM2E5Mzk2Y2VjYyBsZWdhY3ktdHJ1bmsKKzQzMDI5IGNkZTU4Y2QwN2U3ZDg1MDQzYmVlNWYzMmI2OGM4ZTQ3ODI3MmJkNmQgbGVnYWN5LXRydW5rCis0MzAzMCA0YTg5NmZjMTIzODQyNzI0MTkzOWJmODBkZDQwYmMwZmEwNDJkNGJkIHAzeWsKKzQzMDMxIDU3MGM2MTZhY2YwYzE0ZWM3YThlZjI3NDM3ZTE0MzZmM2IyOWJjMjAgbGVnYWN5LXRydW5rCis0MzAzMyAzNzVjZTFjMDRlNjZiNTliMWY3MTNkNWE1NDM2ZDRkNGNlNWIwODczIGxlZ2FjeS10cnVuaworNDMwMzUgNDljNmViNjg4OTA2YjFkZGRhYmY1NzhmMDgxMjllNjcyOWQ2MTUxZiBwM3lrCis0MzAzNyBhYmE4MTRhYTRjNmE3YmQ4MmQxYTMzZjBjNGMwOGUxYzgxMTlkZmY1IGxlZ2FjeS10cnVuaworNDMwMzggNjljYmUwZmI3YTZkMjA0YjAxOWYyYmMzMjY3MzM0ZTkxMjM0YjE4MSByZWxlYXNlMjQtbWFpbnQKKzQzMDM5IDhlOGQwZTAzZjA3NmEyNDJjMmI0MDdjZjc5NWQxZTUzMGU4M2ZhODUgbGVnYWN5LXRydW5rCis0MzA0MCAyNTFmOTIxY2M4MWRjYzFkOWE1NWYyNWZiMWM2NDFmZjYwNmJiMjFjIGxlZ2FjeS10cnVuaworNDMwNDEgNWZiNTRlZDg1NDNiYjA3M2JiZjg5MzRkMzA1ZmQ4ODYxYjQ1ZTEzYSBsZWdhY3ktdHJ1bmsKKzQzMDQyIGQ5NjllMzM5YWMxZTUzN2ZmYzY0NWMwYmJkMjgxNWE5MGI2YjExZDAgbGVnYWN5LXRydW5rCis0MzA0MyBmOTE0NjMwZjQxOWMxYzRlNjgxMjJmYjZkYzdjYTU3NGVkMjRhMjU3IGxlZ2FjeS10cnVuaworNDMwNDUgN2ZhNGMyOWQ3MDMwMTVhNzk4MTc5ZTJkODFiZjk2MGM5YTEwOTk4MiBsZWdhY3ktdHJ1bmsKKzQzMDQ2IDlkM2EyY2RlMGRiZDMwZjljNzA1ZTEwODMzNmY2M2Q3YjRiMDIyMTUgbGVnYWN5LXRydW5rCis0MzA0NyA0NTFkYTNhNTI5MTMxNmRhMWU4ODc1OWY2MmFhNDk5NWVkZWJiNTAwIGxlZ2FjeS10cnVuaworNDMwNDggMTc5MDg0ODk5ZDk2OWIzNzk1NTZkZmU2MGNlY2QzMjcwNzMzZDYwMyBsZWdhY3ktdHJ1bmsKKzQzMDQ5IDg2ZjEzMzAxYzNkYjQxNGNmYWRjYTQ1OWJlMWNjMDNlN2M4OTc2NWYgbGVnYWN5LXRydW5rCis0MzA1MCA1NWU0ZjQ3NjU3NjNlY2Y2NjIwYWMzY2I5ZDcyOWIyZjVlYzk1ZDM1IGxlZ2FjeS10cnVuaworNDMwNTEgNWIzOGRjNTUxZjg2ZjhjNWJlYjIzM2EwNzBjNGVlOGNiZmUwOTFjYyBsZWdhY3ktdHJ1bmsKKzQzMDUyIDRmNDQ0MTJlOWY2YzEyN2NiNWEyMDBkZTE3ZThiYjg5ZDcyNWY0YTEgbGVnYWN5LXRydW5rCis0MzA1MyAzYmYyMzA2MWQ4NmNkOTQzNWY1NmM0OTQyYzMzOGIwM2ZhN2UyYTY1IGxlZ2FjeS10cnVuaworNDMwNTQgNjczOGY3YjI4MmY2NWM1YzkxYzA1YzQyNWJmZjA5NGExZjI0ODA5YyBsZWdhY3ktdHJ1bmsKKzQzMDU1IDM1NGUyMmYzZGFjNmYzMjJkYWM4NDZmODY5ZDJlNmIzNTczZDdmMTkgbGVnYWN5LXRydW5rCis0MzA1NyAxZGRmMGQ4MWQ2YzU5MGNjZGNiMzM1MjA3ZmUzYTQ4NzczMGM0Y2E3IGxlZ2FjeS10cnVuaworNDMwNTggNjE0ZDgwZGZmYzFmODhlMjAwZmM5NzA2YThlNzdiMTlmZmZhNGVlOCB0aW0tb2JtYWxsb2MKKzQzMDU5IDY4NTg0OWJkOTA1YzRhYjNkM2JjNjI1MjAzNTAzNDBhYmE5MzI1MTMgbGVnYWN5LXRydW5rCis0MzA2MSA5Nzg3ZjgzMGQwMjViNTg1YzRhYzc0NGU4Y2M3Mzg3Mjc3MGVmOTg0IGxlZ2FjeS10cnVuaworNDMwNjIgNjI0MDlhMWJjNGRiMzJlNGZlMGM5NGZlOTBmZmY2MmIwZGIwZjRlNyByZWxlYXNlMjQtbWFpbnQKKzQzMDYzIGFiMTdkYTY4NDI2YmE4NTQyNDBhMGU5ZjkxNTI4NWQzM2Y3ZWE4YzQgbGVnYWN5LXRydW5rCis0MzA2NCA1ZDJhYjQ4MjNmM2NjN2ZlMmY3YTcyZmRlMTdiZjA5ODZmNzRkNDVkIHJlbGVhc2UyNC1tYWludAorNDMwNjUgZjBiMGFhMzU3ZDQ5ZTQzNDlhZjViNDVkOWFkN2YwZDVlOTVlZWEzZiBwM3lrCis0MzA2NiAyNTAwN2MxNTU2NjhkZDc0ZTNkMTJjZDYyZmZlOTQ0ODAxYmFkYzcxIHAzeWsKKzQzMDY3IDU2MGFjMWJhOTkyNzRmYmVkOTg3ZGEyZmM2MDNlYjE2MmVkNGI4MzEgbGVnYWN5LXRydW5rCis0MzA2OCA0YWUwYmJmYzY4NjZlMTk1NDc3Nzk4YWY3M2E3MTY0YmFkMjRmMzExIGxlZ2FjeS10cnVuaworNDMwNjkgZDY4MzQ0ZDkzMmM0NThmODc2NzkxMWE1MjhlMGE0NTAwNmM1Njc4YyBsZWdhY3ktdHJ1bmsKKzQzMDcwIDg1ZWFmMGNhNjRmMmU0ZmY2YzNkNjRiMzEwNzZhZGFjZWU2ODE5ZmIgbGVnYWN5LXRydW5rCis0MzA3MSA3ZGFkODNjYTcwMmRiMmIwOWRmZTI3YzI5MTdkNmMxMTY3ZTIyNDI5IGxlZ2FjeS10cnVuaworNDMwNzIgNDkyMGJkNDkyZDk4NmI1YWFkMDJhMWVkNmQ2ODUyOTlkYjg3YTZjMiBsZWdhY3ktdHJ1bmsKKzQzMDczIDQ3MjdmMjYwZjZmOGQ5NjkzNWUwZGM5Yzc1Y2Y0NTk2YjAwYzM2MDMgbGVnYWN5LXRydW5rCis0MzA3NSAwZjZiNGNlZWE1ODA1MzhjODM4NjRhMDYzMjdmNmMyMmRmNGY3Y2FmIGxlZ2FjeS10cnVuaworNDMwNzYgNDk1MzQ0ZmVkMjU1YjVhYjhkMWIzM2FiYTllYTE4ZjczMDJlNWRjYSBsZWdhY3ktdHJ1bmsKKzQzMDc3IGY3MGMwMzY0ODllYzQzMTc4MDhhODQxMjRkMDg0NTQ4ZWI1ZDk5MTEgbGVnYWN5LXRydW5rCis0MzA3OCAwMzg5NGE3YTMyZWNkM2ZmZjQzOTdmYTNkYTBjMjIxZDRkMWZlMzlhIGxlZ2FjeS10cnVuaworNDMwNzkgYTJhNjA0OTMxZmY2ODA0N2ZjNjA2Y2EyODgwODAxZGEyYWMxOTE5MiBsZWdhY3ktdHJ1bmsKKzQzMDgwIDMwMjAzZTJiOTdkNzMyZDVkZmY2MDk1YjliZThhNjFiNzQxZDVjYmYgcmVsZWFzZTI0LW1haW50Cis0MzA4MSA5MmJlMmUxMTcwMzMxOTU4YzU1ZGJiMDJmZjA4YTI5OTg2Zjk5NDE5IGxlZ2FjeS10cnVuaworNDMwODIgODJmNzAwZmM0ZGUyMGRlNThiN2VkYmJjZWM2ZTQzZGEyYTZkYzc3MiByZWxlYXNlMjQtbWFpbnQKKzQzMDgzIGEyNTM5NThiZmE0YzQyYjMwMmRkZGU0Yzg5YTY1ZjdkMzRlMmIwMTIgbGVnYWN5LXRydW5rCis0MzA4NCBlNzIxZDY4ZGJmNmYxMjgzN2Q4YzZlZGI3YjVmZjM2ZDJlODQzOGE0IGxlZ2FjeS10cnVuaworNDMwODUgM2IzMDcyMGZhNTdhMTE0YjJmMGEwODJjZDRhMTQyOTY3Yzc1YjJhMiBsZWdhY3ktdHJ1bmsKKzQzMDg2IGMwYWViMTA2NTRiMmY2NjljZTNlM2ExZTJkMGYxYjUzMDIyZGE1MmIgbGVnYWN5LXRydW5rCis0MzA4NyBmZmY0ZWVjZGVmNDVmNjQxOGRlNDlkODFlYzBkZTFjNzExZGY3ZGQ1IGxlZ2FjeS10cnVuaworNDMwODggYmNlNWM3YWU2NTlhNTI1MjNlYzA2YmEwNzc1MDY4NmQyNWU4OTYxYiBsZWdhY3ktdHJ1bmsKKzQzMDg5IGM0NDk5NDQwNjhkMjI4ZjZlMzQ0Nzk2M2M0ZTFiM2Q5MzRlOGY3ZWUgbGVnYWN5LXRydW5rCis0MzA5MCBiZmI3NGE0MjBhYzhlYjM1MTUyZDA3NjJkOTUzN2Q0MGI0MGY3YWNjIGxlZ2FjeS10cnVuaworNDMwOTEgZTQxNWYxYTg3NGIxMDllZmI0NzIwM2Y1NzBjYTU5ZjI0ZTdiMTIwYyBsZWdhY3ktdHJ1bmsKKzQzMDkyIGE5YzNjOTM4MjQ2NTNlMDY4OTIxZjcwYmMzODE1ZmZiNzU2M2I2NDAgbGVnYWN5LXRydW5rCis0MzA5MyA1M2M4MDZmN2EyNTA4NmMyNDNmN2U5N2M5ZWQyZmE0YjNhZWU1Y2Q5IGxlZ2FjeS10cnVuaworNDMwOTQgYmQzNzE1MzUzYTA5YjU2MjY2Nzk0NTJiNDQwMzAxOTZlNzFkOTdmNiBwM3lrCis0MzA5NSA3YWRhMTZhMTQ5Njg2NzQ2MjMxNDNkMmQwODExNjU5MDUyNmNlZDdjIHAzeWsKKzQzMDk2IGNkMTgxOGVlN2VhOWE4Y2U4MzliZjFiNzYxMDFmZGJmY2FiN2E1YzQgcDN5aworNDMwOTcgZmYzODFiMzg4Y2ZmNDJjOTc1NDQ4N2Y2ZmVhNmZhNjZiYjZjMjE3ZCBwM3lrCis0MzA5OCAwODFiNGYwZTgxYjdiYWE2ODAyNTRhMzBiNzJjNDU0NTFkNzFiNzhkIHAzeWsKKzQzMDk5IDMzNDJiM2I1ODYzMDQwNTNhNzZhMGY2M2RkOTUwZTUxMmI2Y2VhZWMgcDN5aworNDMxMDAgM2UxZWU2ZTE2YzgxZjkxMmY2OTFjMjQ0YWYxNDY2YTBkYjUxN2I5YSBsZWdhY3ktdHJ1bmsKKzQzMTAxIGMwNDhhMDlkMDZmZjg2NzRlMDUwOTQ5NGE1ZTU4NmFhY2UyNzNjMDQgcDN5aworNDMxMDIgMTE4Mzk3NzZjNjZjMzI0MzY2YTc3YzIwODkxY2QxZmMwMDYwNzg2YSBwM3lrCis0MzEwMyA0MDUxMWJmNTkyOTc5ODNlNDk2NzRiZWY5YTI3MTFlZGZiODY5OTBlIHAzeWsKKzQzMTA0IGEwMTY3MmE5NmQ0NzI3MDQ2MzY2MGJmNTU3MDlmODVmOWQ5NjU4NTMgcDN5aworNDMxMDUgY2UyNjdmNjgwNjVlMjIwOTJmMTc4ZWMxNzYzNjRhN2ZjMzJhYzQ0YyBwM3lrCis0MzEwNiA5ZWYzZmFjNWQyYzBhMmE5NDk2MjJlNTRmOTkzMTBlMDkwYjAxMDRlIHAzeWsKKzQzMTA3IGVhNWI2NmFmNjI0NWE0MDllMmMyM2Q3NjYyMTVmODdkNGU4MzUwOWYgcDN5aworNDMxMDggZmRjMDViMTY3MjM2ZTc1NzIxN2RjNThkMTU5M2U3MGQxZmM4YTVkZCBsZWdhY3ktdHJ1bmsKKzQzMTA5IDVhZWNlZGM5OGFmNjU1OWUwNDUzOWFjNTkzNTQxZTdlMGU0NTRlMmUgcDN5aworNDMxMTAgZjdmZDExYTc1YTZhNGRjYjhhMjNiMGY2MGIzY2I0NzZiZDMyYjExNCBwM3lrCis0MzExMSBjMmMxMjgxNGY4NTRhYmYwZTA4MGExMTVmYmFhNDU4MDhmYjdjNjYzIHAzeWsKKzQzMTEyIDJiMDRiOWM3YjU4ZWIyZDAwNmU1Yjc2MTE5ZTM1ZjUxZDMxODM2MmEgbGVnYWN5LXRydW5rCis0MzExMyBmMDJhMDMyNTRiOTFlNzdjYTc0MDJjNThmNTc3MzE4MGYwNGI3NTA2IGxlZ2FjeS10cnVuaworNDMxMTUgMjAzYzA2ZmJiMDc1NDQ3NDNjMmQ2ZGQ0YWRkY2I1MzUyNDFhOTMyZiBsZWdhY3ktdHJ1bmsKKzQzMTE2IGQ3ZDEyZDdmY2MzOTJmOTc5NmFjN2Y4ZGU5NzkzODBiODU1NDEwZDAgbGVnYWN5LXRydW5rCis0MzExNyAyMzA0NWYxZTM5ZjJmOTFjOGZkMWZhNDUzZTM0MDE4MmVkMzg2NGIzIGxlZ2FjeS10cnVuaworNDMxMTggNjRjODNlMGY2ODNlNTY2YWM2ZGUwMDk2ZTJiNjI0Y2RmNmUyM2JiZSBsZWdhY3ktdHJ1bmsKKzQzMTIxIGIwMWM4MGQ4ODI2N2ZlNTBhZmJiMzQ2NzRiY2YzY2IzNzBjNWY5ODEgbGVnYWN5LXRydW5rCis0MzEyMyA0YzgwNGFiODdlYWRhYzBhYWM2MDI0ZjZiY2IzYzY0M2I1MmFmZWQzIGxlZ2FjeS10cnVuaworNDMxMjQgMWY0NTQ5ODY1YWFkYmU1NTRhZWQ0MjU5NWFlZDhhZWQxYjI1NmE0MiBsZWdhY3ktdHJ1bmsKKzQzMTI1IGU0M2Q1ZDJjYTUwYWJjZWJmNGM2N2VmNmFmODA2NDczYTczMTIwNWMgcmVsZWFzZTI0LW1haW50Cis0MzEyNiBkZDQ5ODQ3YTYwZDMwMGQxNzYwZjE2MDdjNTA0NGRhMjY1MWRlNzJkIGxlZ2FjeS10cnVuaworNDMxMjggYjMzZDkxNjY4Njk2MTVjZjI5NzRkYzg3ZTg5MmI2OTkxODU2Y2M2MyBsZWdhY3ktdHJ1bmsKKzQzMTI5IDk5NDkzMWI2Yjg3NTQ4OTI5YmMzNjEyY2Q4YzY1NWQyNjUxMmQ2MGQgbGVnYWN5LXRydW5rCis0MzEzMCA0M2MzOTNiMmZlOWZhNDc5ZDA3ZGI0Yjc5Y2VkMDFlYTU1OGMzNTRkIHJlbGVhc2UyNC1tYWludAorNDMxMzEgODFkMGU5MzIwOGQ5ZTgxMDVkMjcwZGM2NjQyZGVkNGE2MmYxNWNjZSBsZWdhY3ktdHJ1bmsKKzQzMTMyIGQxMzQzMGE4YmQyY2UyNTllZTk1Mjg1ZTNkOGE4NWFiYTY1MGI4OGMgbGVnYWN5LXRydW5rCis0MzEzMyBiNTVmNTMwNDE5NjUzNTk2NDRjYWJkYzlmYmJjNTIzODQwODVkNGVhIGxlZ2FjeS10cnVuaworNDMxMzQgNjg1ZTIxMjM4NjRkM2Y2YWYwNGI4NjdjYzkwNjlhOTIzMTg1NTg2NSBsZWdhY3ktdHJ1bmsKKzQzMTM1IDM4NDAwYjY2MjQwNDc1YTI5NTlkMjEwYjJlMGYwNTIwMjZiMTQzYzcgbGVnYWN5LXRydW5rCis0MzEzNiAzZjkwYTkzZmY1ZDBlYTkxODgyNGM1MWYwODBhYzY3Y2VkM2ExZWU0IGxlZ2FjeS10cnVuaworNDMxMzcgOTJjYjRhN2ZjNTU0ZWZmYTY5MTZiNzFhYmQyMjVhNmRiOWY0ZmVhNSBsZWdhY3ktdHJ1bmsKKzQzMTM4IDY3NzFmMGUwOGI2MGEyMzZmMjE2ZTY2N2ZlYjQxMzBiMTA4ZjlkODAgbGVnYWN5LXRydW5rCis0MzEzOSA5Mjk1MmFjOGU4OTExZjA2N2Y1NmJlYmM0OWFjZWQ4ZDk1NzRjYWZlIGxlZ2FjeS10cnVuaworNDMxNDAgYmI0OTFlNTVmYjRjMjQzM2E1MWNjYjRlMWVlZmY1NjA3ODk0NGYxZCBsZWdhY3ktdHJ1bmsKKzQzMTQyIDg0MzkyOGM2YjI0Y2RkZjZkYjhjMjU4N2NkMjc5Y2ZkODM4YWNmMDMgbGVnYWN5LXRydW5rCis0MzE0MyA2YzNlYzM3MzZjNTE0ZGY3YWMxZGQwODAxZjU3NGEwOGI5YTliOTA2IGxlZ2FjeS10cnVuaworNDMxNDQgOTkxMGZmNjlhZjk3M2JlMzM5YzJhNzU3OThiMGIwZTM0NWIxYWVhYiByZWxlYXNlMjQtbWFpbnQKKzQzMTQ1IDNiN2IyOTVjY2E5MDJiZjcxMGZmYjczM2RlZGRlNTA3MWE2YzliNjcgbGVnYWN5LXRydW5rCis0MzE0NiBjMDExYWY0YTJiMDFmZDI1MTdlZWU4ZTNkMmEyM2U2NWE5MmRlOTU1IGxlZ2FjeS10cnVuaworNDMxNDcgMDdhYjU1NzYyNWI5Y2VlZmVmYzdhZTY0MzhkNWEzOTZlYTU5N2Y3YSBsZWdhY3ktdHJ1bmsKKzQzMTQ4IDIzMzU3Yjg4YzAzZWFmYTZiZTI5ODVkZGY1NTZjZTE1MDVlMzVhZDcgbGVnYWN5LXRydW5rCis0MzE0OSAxZDMwODFjYjNlYTY3MzViYjJjZTZjYThhOTU3YmVmYmExNjQ3MzdhIHJlbGVhc2UyNC1tYWludAorNDMxNTAgN2MyMmI1YWEzNDM4NzFkYjk0ZDVlZTYzMWY0ZTBhZjNhNzc2NGRiYyByZWxlYXNlMjQtbWFpbnQKKzQzMTUxIDhkNDJmNjYxZmVjODAyOWUxYTIwYzM0M2RiYmQ3YjE4YTdjNjk5MGYgbGVnYWN5LXRydW5rCis0MzE1MiA3NzVjZDY5ZjhhMjM3ZGFmZWRiOTQ3MjllNmExMmY2NTg5MDc5M2E1IHAzeWsKKzQzMTUzIDZiNTE2ZjMyMWQ4NTI0Y2JiZWUxNGQxZTY2MTc5ODQyYzhmOWIxYjkgbGVnYWN5LXRydW5rCis0MzE1NCBiMzFiN2VjNWE2YjQzOTQwY2I4ZTkwMTBiYmU5YzMyYTU4ODhlODFmIGxlZ2FjeS10cnVuaworNDMxNTUgM2RhYmQ5YmI0OTZlOWE2OGNkNmNkOTRiNzYyMjk3M2ZjNzY2NDA1YSBsZWdhY3ktdHJ1bmsKKzQzMTU2IGI0ZDBmOGQ5NTE3OWE0NmJjY2I0OWQ4MGRkNTYxM2QwNWFlMGMyNGQgcmVsZWFzZTI0LW1haW50Cis0MzE1NyBkZThmNWQxY2RmNGQ5NTgyNGFlZDNiMGUzM2Q3OGQ3MmYzYjliNTA2IGxlZ2FjeS10cnVuaworNDMxNTggZDYyYjEzNDg4OTQzZDc4YzljOGQ4MTczMjI5MzIzMmE4NGI3OTA0NyBsZWdhY3ktdHJ1bmsKKzQzMTU5IDg1MmRlMzNlZDQyN2Q2YTQzMGY2MWNkODlkMzYyMmQ5YTM5MDVhOGEgbGVnYWN5LXRydW5rCis0MzE2MCAyZGM2M2NkYjA5Y2YwZGE4M2JmMTQ5ZmYzNTA3MGEyZDQzMzM3Mjk4IGxlZ2FjeS10cnVuaworNDMxNjEgZGI5ODZiZTJjMDBjNWQwM2E1ZGU1NDVhZTYzMWVkODJjMDVjYmQ3OCBsZWdhY3ktdHJ1bmsKKzQzMTYyIGU4MGZkYjNhMGY0MGE5NjM5YjQ4MWZhZjhmNjhmZDIxYWJhZjQyYzIgbGVnYWN5LXRydW5rCis0MzE2MyA3OWU0ZGJlNGJkYzZhNjM4ODA0YzZmNTVjZDk0YmIzMmJlN2Q3NmZmIGxlZ2FjeS10cnVuaworNDMxNjQgYTA2YzlmZDI1MTIwOGNhZDJkZWFkYmI1OWU5NDVjMGQ4M2JkZThiOSBsZWdhY3ktdHJ1bmsKKzQzMTY1IGQ4NjAzMTFmOGE5NzFlNzJhOWViMzMyNTI4ZmZlMzk0Y2RkYzYwNTggbGVnYWN5LXRydW5rCis0MzE2NiAzNjA1MjE4ZDAzZmEwNDM3YWU0ZjNiMzNlZGExMWE1ZDE1MmJhZmIxIGxlZ2FjeS10cnVuaworNDMxNjcgZGUyYjk0MmYzN2Y5NDhlMGNjNmFmNmRiNGJlOWI5MWIzZGRmNTE5ZiBsZWdhY3ktdHJ1bmsKKzQzMTY4IDVhNzc1MGRiMDk3NzhlMDIyN2ZlYTFlZjIxYjhhYTlmMDZkNGZlYTMgbGVnYWN5LXRydW5rCis0MzE2OSBhMGFjNzcyNTliOTljZTdmYzY5YTAyN2ZkY2Y2MzgyMmUyNzFjNTI0IGxlZ2FjeS10cnVuaworNDMxNzEgZDg1OTIyNzZiMTM3NDVhOTFiOGIzNGQzNDgxZDZkMjc0MjViNjY0YyByZWxlYXNlMjQtbWFpbnQKKzQzMTcyIDQ5MDdmYjg3OWNkOWM3YTYzODhhYTM3OWJmNzY3ODIwNTZhMDdkZWQgcmVsZWFzZTI0LW1haW50Cis0MzE3MyA2NDEyZWQ2OTc1ZGVlZThmYThkOTllZWFiNTU4ZjM5ZjFjMzZhZDU0IGxlZ2FjeS10cnVuaworNDMxNzQgODdlZDFmM2QyNzJlNGVjMzIwMGYwZjk1OGVmMjc1MTU5ZTlmMmMzMiBsZWdhY3ktdHJ1bmsKKzQzMTc1IDgyYWViNTRiMGJhYWIzZjFkNjgxYTcwN2MzMzQyYmYwMDViNTJjY2QgbGVnYWN5LXRydW5rCis0MzE3NiAxMzZiNDU3YjU0M2FiNjU3OTZiYjZmYTY0MWUxYjNkZDFjMDk0ZmI5IGxlZ2FjeS10cnVuaworNDMxODEgZjc5OTNkYzZiZjI2NGY4YmIzMDk0ODgxZDdmMDNlNWIyZWUxMGQ3YyBsZWdhY3ktdHJ1bmsKKzQzMTgyIGRiMzE3ZTQzNTdhZDU0ZTZjNzcwY2UyZjY3NWNmNzc2NzY3OWFhMjAgbGVnYWN5LXRydW5rCis0MzE4NCBkYjI5N2I5NDQyZTQwY2E1NjY1N2FmMTI1Y2MwMjQ4MzVhM2M3NjExIGxlZ2FjeS10cnVuaworNDMxOTEgZTczYjM1ZDgxNjE3YmViMWRkMjgwMTI0OWM4NjZhZGE4MDYyZGU2YiBsZWdhY3ktdHJ1bmsKKzQzMTk0IDhkYzQ0ZTlkNWM5MzliODJkNjI0MTFmNGMyMWNlNGQzNWRkYTY2ZjQgcDN5aworNDMxOTUgYTljMWU1MmFkZGYyOGJiYWQ4MDFjOTRmNzQ3MTcwNjdmMjJiZjU0ZCBwM3lrCis0MzE5NiAyNTFlY2VjMDRmMWJmZmQ2MzViNTcwZjFkNmU4ZDgzZmZkNjhiODM4IGxlZ2FjeS10cnVuaworNDMxOTcgZTM0NTA2ZTQ0ZTY3NjgyYjdkMzMyMzM1MGRlNTRmYzhhNzRmNjNjMCBwM3lrCis0MzE5OCA1MmRkNDVkYjFlODUwNDdhYmJjYzBlNTZmNzg4ZTJhYmU4MTIxMzEzIHAzeWsKKzQzMTk5IGJhZjY1ZGM2MzljMTRmZTBlMzk1MmY3YjUwNGNlN2FmMDA5MzZiNWUgcDN5aworNDMyMDAgMDhjZjhiOWVjMjA4NzIzN2I0YjIzMTg3ODY0YTA5MTdiZjkwMjk4MCBsZWdhY3ktdHJ1bmsKKzQzMjAzIDJmNGE0Zjk2YWNkMWU2ZjQ4MjljMTg4MzI4NDY3OTg0ZDZjOGNkZTUgcDN5aworNDMyMDQgYWEwMzlkZTg5MWM5ODdmZTZmZTA0NWU1OTg5MzVmYTQ5MzFiOTVhNyBsZWdhY3ktdHJ1bmsKKzQzMjA1IDBiYjc3MDA1OTNmNzVhMjFlN2E3YzU2YTU3ODFiOTZiZmY3MDAyMDEgcDN5aworNDMyMDYgNmU5MjkyMzhlM2FjNDdiMTgyOWYzMTU5MGVmZWViMTAyN2U1MmI3NSBsZWdhY3ktdHJ1bmsKKzQzMjA3IGM5ZWUzMmI3OTNlNzg4NDZlZDJjNjQ2OGQyYjI3MzlkMmRjZmQ1OTcgbGVnYWN5LXRydW5rCis0MzIwOCBlNzJkMWM3Yzg1NTQ4OTA5YzJmY2ZlOWZkZDFmYzgyYjU5OWI2YzdjIHAzeWsKKzQzMjA5IDNmODI0MTQxZWViOTllYmQ4MzRhZGQzMTE3MmVhMWE0ZTdjOWNlZTUgbGVnYWN5LXRydW5rCis0MzIxMCA3ZGFkZDNmYzVlZmFjNmJiMGM5ZGE5OTEwM2YxOTg0OGM1NzdiNmZmIGxlZ2FjeS10cnVuaworNDMyMTEgNzFjNTY5NGUzNDIzYjI0NWYyNGM4MjU1ODBlNzg1YmMyMmNlZmZiNiBsZWdhY3ktdHJ1bmsKKzQzMjEzIDYxNzc0MzExNDYwMGJiNGYzYmJjOWI5MTY5NGY1ZjI4N2UwOTFmNGQgcmVsZWFzZTI0LW1haW50Cis0MzIxNSA3NjdlNmJlNTg5YTA0MGRiZTU0NmQ3NmFlNjA5NDBmZDViNTQxZjcwIGxlZ2FjeS10cnVuaworNDMyMTYgZGJhZjBiY2U4ZDQ2MDJkMjBhNTUxYWQ0MTZhNGZiMTU0MTVmYTU5ZSBwM3lrCis0MzIxNyA3ZWFjMjNjOGU0ZTk4OTNlMDc0ZmU1OTYyNmExNDAwYWM3OWJiMzM4IGxlZ2FjeS10cnVuaworNDMyMTggNGVmOTk2OTVmN2JiYmVlZDk5NWIzZDgzMWMxZTFhZDk1MTNjNGFjMSBwM3lrCis0MzIxOSA3MDQ5ZGMwYzYyMWEzZDJiMDJiMzIxYzg1NTY3NzRhZDg0NjViMjM0IGxlZ2FjeS10cnVuaworNDMyMjAgNTIxN2M3MDNhOTRmOGFiZWE1MThkY2EzNTYxYWMwODcwYTVmYmI4MyBwM3lrCis0MzIyMSA5MWRkNGQ0NGQzYmM3MGRhNmY1NzRmOGFkNGMyOTFmZmVjYmNkY2RmIHAzeWsKKzQzMjIyIGQ3NTEzZjM4YjIyZjk5ZWJkNDg0NTlmOTQyNTVlZDM0YjIwNzg5M2UgcDN5aworNDMyMjQgNjkxZGQwNTkxNjkxNzE3YzdmNmM1ZjI3OWM4MzhjM2ZhMGIwM2JkYyBsZWdhY3ktdHJ1bmsKKzQzMjI1IDAwNTc4NjJhM2JkYmRhZjYxZWE4OGRhMjE4YjM5NjFmMjRiZjlhYTcgbGVnYWN5LXRydW5rCis0MzIyNiAyZDkyYWI3ZjVlODllMGQ4YmJmNGEyOTk2Zjk5ZmQ3ODMxYTE0MGY1IGxlZ2FjeS10cnVuaworNDMyMjcgNGQ4MDYwNzAzM2ZiMzE1ZGU1NmYwMjI3MmI0MWNkMGE0MmE2ZDhkMiByZWxlYXNlMjQtbWFpbnQKKzQzMjI4IDEwY2NlM2Y2NTE3MDI5YWFhOTcxY2Y0YjUyNWMwNzBhMGE4YWVhZmQgbGVnYWN5LXRydW5rCis0MzIyOSAzNTQ1ODExMjM5YjQwYmEzOWRlNDdiMzExNWY2YzEzMDk3Nzk1N2IxIHJlbGVhc2UyNC1tYWludAorNDMyMzAgMTZiODg1OWIwNzYwNWFiNmQxZjliZDFkNTAwODZjNWZlZTcxZDE5NSByZWxlYXNlMjQtbWFpbnQKKzQzMjMxIDlhZDBlNTE3NTI3ZmY0MWI3NzM3MTdhYTQwMzMzOTE2MTVjOTBjMTkgcmVsZWFzZTI0LW1haW50Cis0MzIzMiA4MTQ5ZDBhNDI0YTU1ZTAwNTUwZTE5MjYzZmNjMDI5NDY5NjEyOTM1IHJlbGVhc2UyNC1tYWludAorNDMyMzMgMWFmMjQ1ZmFjOTBhNmI2ZmFlZjg4YWZmMDA0ZDk1MzQzMGQyNGFlMyByZWxlYXNlMjQtbWFpbnQKKzQzMjM0IGMxZTcwMmQyOGNmMjg3ZmM2NGFmNmEzZmY0MWNlODc5MTliYjQyZTAgcmVsZWFzZTI0LW1haW50Cis0MzIzNSBhOTUwNDUwZWY0ZWI5Mjg3MjY0YWZmMThjOWM3YTkwM2QwNDZkOWJiIHJlbGVhc2UyNC1tYWludAorNDMyMzYgZDExNzBlOWFhNzg5YjNhNGFkMDE1M2RkYTJkMDczYzJjZTRkYjM1ZSByZWxlYXNlMjQtbWFpbnQKKzQzMjM3IDdjNWJlN2MwZmRmZGJiYzBhYzFkOTFjMDcwMzhiYzgxNDEyZGE0MTIgcmVsZWFzZTI0LW1haW50Cis0MzIzOCAzZTA5Yzg1NjZkZjFhZmQ3MGE1NTRkYjA2MDUyYmYzNTcxNDc0ZDgzIHJlbGVhc2UyNC1tYWludAorNDMyNDIgYjJlNmQ2YWE4NmQxYzFiMzIyYWMzNTA0ZjkyMGNjY2IzNDU5ZGJlNSBsZWdhY3ktdHJ1bmsKKzQzMjQzIGI0ZDkyZWYyZjMzODBkZWRiMjllMzBmZmY0MjgwMzIwMWFmYmQ2ZDQgbGVnYWN5LXRydW5rCis0MzI0NCAwYzYwMjkzOGVkOGU4Nzk3ODNhMWQ2NDI1Yjk0YzNlZDY0ZWQwOWE3IGxlZ2FjeS10cnVuaworNDMyNDUgMmI3ZWNlNzhlMjkzMTQ3Nzc3NjQzODY1ZjczYzE3YTdlNmFjMGJmMyBsZWdhY3ktdHJ1bmsKKzQzMjQ2IDQ1ZGQ5MzhiN2ZlYjIwZmQ5MDhjY2RmMDAyYjYxNmQ5MGRlODBkYzYgbGVnYWN5LXRydW5rCis0MzI0NyAwMjdjNmZjZWVlMGRhZjk4MGUzZTRlODM2MjU0MjczOWNmNGE1ZTI2IGxlZ2FjeS10cnVuaworNDMyNDggNDFkNzA1Nzg1NzhhMzgxMTYwZjQ4ZjliMmYyMjNmMDhjZTA0ODAxNCBsZWdhY3ktdHJ1bmsKKzQzMjQ5IDRmOTdiNmEyMjljZTAzMTVmNDM5MjNhYTUyZWFkYTcwYmVjMTQ3NGQgbGVnYWN5LXRydW5rCis0MzI1NSAwNjZjOWNlNDhjMzAwMmJlZWQ0ZTNiNmZmZTZlNTkwMzdhZWM2MzY5IGxlZ2FjeS10cnVuaworNDMyNTYgMjlkZjRmZTEyOGEwYWJlYWJmMDE3MDZmOTRkZTBlNDJkNTA3YjFjNyBsZWdhY3ktdHJ1bmsKKzQzMjYwIDcyYTcyMGRkNjRmYjRiNzA5ZmY2NDE1ZWMyMzA0NGY0MTcwOWI3MmEgcmVsZWFzZTI0LW1haW50Cis0MzI2MSAxZWQ3YjhkYzc3N2FjZmQ1ZjZlZjUzYmZhZGY0OTkzZmJiNDliZDFmIGxlZ2FjeS10cnVuaworNDMyNjIgOTczNTdmZTM0MjIyN2JkOWJlYTBlMDc4YTlmZmRjZWJlNzlkZjIzMSByZWxlYXNlMjQtbWFpbnQKKzQzMjYzIDdlM2JmODQ5MmMwM2E2OTY1ZmVmNTUyZTZmZTUyN2FjZGQwNTA3NTcgbGVnYWN5LXRydW5rCis0MzI2OSBhMThhYTNmYmRkNGFiMGQ4MWU3MjUyNjkxM2ZmODI3MjJkOTA4Y2NmIGxlZ2FjeS10cnVuaworNDMyNzAgZmI0ODFlMGY1Nzg2ZTUxZWUzZTFlMjY1NWExNjMzNTQ5OGE5Yzk5MCByZWxlYXNlMjQtbWFpbnQKKzQzMjcxIGE4ZGUwYjk2MDAyNzViYzQ2ODMwNDkxMTM0YTU1NzlhNTk0YTFjNTYgcDN5aworNDMyNzIgMjMxZDYwNGRlZDg0NmUwYTQxYjRjM2MxMWJkZmUzMTY5MWM2NGM5NiBwM3lrCis0MzI3MyA1MjBlNTViZDc2ZDZjMjNjOWJlNjE5MzM4YzBjYzg5NDgyYmJlOTI5IHAzeWsKKzQzMjc0IDY0YWUzMmIwNzgyOTlhMjQwYjYxZjMyNjRiNzA2NmYyZTU1OGYwYmMgbGVnYWN5LXRydW5rCis0MzI3NSBjYWE5YWZmMDg1YTY2NjNkMjNkOTA0YTk5MzIwMGNmMWY0ZWQ4OGMxIHAzeWsKKzQzMjc2IGY5ZjA0MTE1ZmJiNWY1MDAzZGIxYzA0OTI3MGFkM2U2Y2M0YWYwNzEgcDN5aworNDMyNzcgYjJhMDVlYTdlYWMxYWQyZGM1NjQ4NGRlNzg3ZGYyZTk5Y2YwNGYxZCBsZWdhY3ktdHJ1bmsKKzQzMjc4IDg2OGFiMmE2NWM3MzBlZWI0OTYwZmMzNDM2MjJjNGQwMmI5MWUyY2QgcDN5aworNDMyNzkgNjY4YTViYTc3ZGM2ZjNkY2U3NThjMjc3Yzg0Njg1YTE4ZWEyODVjZSBwM3lrCis0MzI4MCAzNWNjNWUxODBhYTNlNjY0ZTdjN2NiMzRmOWNlOTZiYTQ2MWE4ZjJkIHAzeWsKKzQzMjgxIDYzYzYxZGI1NTNhODY5NmRjM2QzMThiODRiNjE1MzFkZjc5MmZlOGEgcDN5aworNDMyODIgNzYwZmZiMGZiYTM3MzdkNGVlYjBlNGYxZDMyZjIzNjE4YjlkYTFkMiBsZWdhY3ktdHJ1bmsKKzQzMjgzIGI4NTY3Yjg0YzUzMTM3ZjQ3NmFhNDEwMWFlNjI4NTU4ZjcyY2RhODEgcDN5aworNDMyODQgMGFkMzg3ZmI2MzE0MzIzY2I1ZGY1OTNlZjM1YTQ2ZmJjNTk1Njc3ZSBwM3lrCis0MzI4NSA0YmZlOGFmZThmNjVlZDEzM2UxMjEzMzMzOTUxMTNiZDgwNWU5YzkzIHAzeWsKKzQzMjg2IDU5M2U4ZmI5YTNjYWZlNWM0NzdjZDU2MzdhMWRjMjdhNzU3MjQ1NzMgbGVnYWN5LXRydW5rCis0MzI4NyA3ZjMyMmVmNjg0Mzg3ZGExYTc5ZjRkYjg5NTBlOTBiM2VhNWZmZjgxIGxlZ2FjeS10cnVuaworNDMyODggZTM4ZmYyMTE5MWRlNTFlOTUyNmVmYTg1YTk0MjM4NjE1ZmZiNjM3YyBwM3lrCis0MzI4OSAyNDM2MzMwMWEyOTljNTEwN2VmZTVlYWIwMzY5NDNjM2E3YzVkNWQ3IGxlZ2FjeS10cnVuaworNDMyOTIgYzFhNmJhN2VjYjIzNGE5NWUwOGNhNDdmNDIwMjAzNGJhYWM0NmVmYiBsZWdhY3ktdHJ1bmsKKzQzMjk0IDY0MzE3YzcxZWQ2ZDM5MzYxZTA3MzY1MTMzZWNlYzM2NGVlYzM0YTcgbGVnYWN5LXRydW5rCis0MzI5OCBiZWQzZjUyZjBkYzYzZjdmMmEwY2EwYTI0Nzk1OGM0MWI5YTRhOTNiIGxlZ2FjeS10cnVuaworNDMyOTkgMWI3MmQwZTRmNGFhMGFkYTlmMzlmZDhkNjliY2Q1ZDY5NDYwMjk0NSBsZWdhY3ktdHJ1bmsKKzQzMzAwIDhhYjAxYTljMTQwYjcwMmEyOTdmYTJmNGVkOTQ1Njk4MzIyMDlmYTggbGVnYWN5LXRydW5rCis0MzMwMSAzOTVhZDBkNTQyM2Q2MGE0MWNkNjJjMGNkYjhhNGIwNjY3MmVjYzZiIGxlZ2FjeS10cnVuaworNDMzMDIgZjVjZDMwOTFkOTlmOWFjZjExZTdjYmFkZTM5NjNkMjNlOWFhOWQ3OSBsZWdhY3ktdHJ1bmsKKzQzMzA0IGIzOWMzZDdhNWFkNDUwY2RiMTZhYmViMTM5OTM2NjFlYjRmMzFkYjcgbGVnYWN5LXRydW5rCis0MzMwNSA2NDI1YTQzYmYzYzZlOWVmNThmYjM2NmFhZWY3MTNhNzUzOTdhNzY5IGxlZ2FjeS10cnVuaworNDMzMDYgNDk2MjJkNjVjMjlkMmFmMTc4MGY2NWI5NjRjMDQwY2EyMzRlODRhYyBsZWdhY3ktdHJ1bmsKKzQzMzA4IDUxZGY5OTQ4ODVlOTc4ZjM2NGE0NmU1ZjY5NWEwMDcyZjQzY2UxNjMgbGVnYWN5LXRydW5rCis0MzMwOSA5NmU0ZDUzMTI4YzllNzNlODU4MzFhMWYwM2Q5NjUyY2M5ZDlhOTI4IGxlZ2FjeS10cnVuaworNDMzMTAgYTgyZWUzMjk4ZTFhZDJiNjQyOGUwZjc3NDYyMjhmMmQ3Yjc5MWUyOSBsZWdhY3ktdHJ1bmsKKzQzMzExIGM4NDQzMDVhYThlZDFmMjJlMDgwYzVlOWViMTkxZjI5MmU2NzBjMWIgbGVnYWN5LXRydW5rCis0MzMxMiA2OWMzNThiZjZhMzQ1NmQ1MzhjZGEzMTAzMjBhYjI0MTZiNjU3ZjFmIGxlZ2FjeS10cnVuaworNDMzMTMgMmMxZmU3NjFmMDE5NDE5OTgwYjJlNTA0ZWI0ZmE5MDZhMTNjNWYwMSByZWxlYXNlMjQtbWFpbnQKKzQzMzE0IDA2ZDc2MTNhMzUyMzE5YzI5NTZmNDg1NzIwMzYwZjEwNGE4YThiMDMgbGVnYWN5LXRydW5rCis0MzMxNSA1MTUxMThjMGUzMzhiODNjYTU5OTJlZTg2OTYwYmUxNWMwZjljODE2IGxlZ2FjeS10cnVuaworNDMzMTYgYjM0NDQwNDE5YjY3OWU3ZTExMzdlMGVhYTEwNTk4ZGIwOWI2YmUyOSBsZWdhY3ktdHJ1bmsKKzQzMzE3IDMwZmFiYjg3ZmJjYzMwZmZkZjE3ZGQ2NDg4MTNjYzY3NTkzOTM1YjEgcmVsZWFzZTI0LW1haW50Cis0MzMxOCA1NGFhNWFhOGYyY2IyNmE3ZGE5M2FiMmE0Y2M1ZDc5MjRkMTg0ZDM1IGxlZ2FjeS10cnVuaworNDMzMTkgNDYxNzZmZmM4YmY1ZGRjZGZjMWNmZmQxZTU0ZTliYjVhNDQ3NDBiMSByZWxlYXNlMjQtbWFpbnQKKzQzMzIwIGUyMzRmZjhiZWFhMjAyMWIyZTEyZjQ5ZTc3NTQzOTQyZjQ4NWEzODYgbGVnYWN5LXRydW5rCis0MzMyMSBkN2E2ZWM5ZGU4ODc1NTgxM2Q5ZTI1ZmM1NDIyOGJiMDIzNmM4ODJkIGxlZ2FjeS10cnVuaworNDMzMjIgNWJiZjcyMjdhZDZlOWI5M2MzMTI1OTczZWJlZjc4ZmE1Nzc3OTQzNSBsZWdhY3ktdHJ1bmsKKzQzMzIzIGYxOTg5MGE4NmM0MzMyYzVlZDM2ZDQ1MjdlMDg5ZGE3MDdmYjc1YmIgcmVsZWFzZTI0LW1haW50Cis0MzMyNCA0MTYzNDg3NDg0NjA0NDg5YWEwZjQxZmQyYTE2MzY3ZTg4YWQyYmYyIGxlZ2FjeS10cnVuaworNDMzMjUgYzA4MThmMjFmNjVhMmRhYmFmY2Q5NTBkYmE5YTBlZWFlYzk2YzcxNCBsZWdhY3ktdHJ1bmsKKzQzMzI2IDkyMzhmMDRlZWFhNmNlODU0NDk1OWJhYjcwYmUyYzVjNzVkNjgyY2QgbGVnYWN5LXRydW5rCis0MzMyNyA4YWRkYzMxM2FiMGZjNzIwMzJhNzQxN2Y5NjllYzk4YmRhNWE3MWM5IGxlZ2FjeS10cnVuaworNDMzMjggNzk5YjQwYzRhMmM2MWJhOWExNTkwMWU3ODk0ZTQ2ZTg1MDUwMmY3NyBsZWdhY3ktdHJ1bmsKKzQzMzI5IDhkNTdkMjVlNjU0ODc5Yzg2OWRkOWZlY2U5MDlkMjc0YWEwNTcyNzIgbGVnYWN5LXRydW5rCis0MzMzMCA4ZjdjMDNhY2FkZGRiYzc2MjkyMTljN2E2OTA3ZTYyYThjNjMxNWEyIGxlZ2FjeS10cnVuaworNDMzMzEgNmUxYTg5OWNhYzhlZTZkZDIzZmFiNjZhNWU1ZTM1MmVkOWVkMjEyZiBsZWdhY3ktdHJ1bmsKKzQzMzMyIGE0ZDJmN2I4NDdiMWU4Mjg5NTgyZmMyNDQ4NGI3M2RlNTg5ZmVkNWUgbGVnYWN5LXRydW5rCis0MzMzMyA5NGY1NGVjNjJkMTQzOGIwNDMwNzYzOTdlYjliZGYwZTdiMzUzNTkxIGxlZ2FjeS10cnVuaworNDMzMzcgZTVjZmQ0YTNlNjVjNjE3MmFiZTkxMjY2NzIyMTAxZDk3NzFmYjBkNyBsZWdhY3ktdHJ1bmsKKzQzMzM4IDAwOThlNzI2NGVhYWM1NGEzZWZhZjhlMmJlMzgyMTM2YmRlYzIyOGYgbGVnYWN5LXRydW5rCis0MzMzOSAzNGYyMGFiNDRjZWZkNDkwOWFhMGZlMjViNTNjZjI4ZmNlYWIzODI5IGxlZ2FjeS10cnVuaworNDMzNDEgOWQ4YjMzYWZmNjBjMTAwZTU1MjlmYTA1YjViNjJjZGZmOTJiMTU0MiBsZWdhY3ktdHJ1bmsKKzQzMzQyIGIwNTIyNDdiMTgwOWZmZWM1NzNiOTI5NjgwN2QyMDQ2OGRmNjk1YTQgbGVnYWN5LXRydW5rCis0MzM0MyBlZTM2YzE2ZDhkMmJiMTVlOWQ0M2NkMGE4YTkxNGUyYjI4MWJjMzUzIGxlZ2FjeS10cnVuaworNDMzNDQgYzA0MWIzNjJiYjA0ZDhjZjE3NTNjNDdiYmIyNmFkZTQxNmRhODY1OCBsZWdhY3ktdHJ1bmsKKzQzMzQ1IGRjMTgzNWZiOWU3YzNiMjhhNWFjYzYxOTdlNmU3NjYyYTU0YjA4ZDQgbGVnYWN5LXRydW5rCis0MzM0NiA0MzQ1MmYxZmVhNjkzNGI5NDM4Mjk5ZWY2NDdkMjhkYTgwNmU5YjNjIGxlZ2FjeS10cnVuaworNDMzNDcgMzczZjdmZTBlNzMzZjRiYWJkMTA0NDY4MzBiYjcxYmNiNzExOGEyOCByZWxlYXNlMjQtbWFpbnQKKzQzMzQ4IDIyMzQ1ZDFlNjg1MjcwM2Q3ZjQ1ZWU4MjVhYjk5Y2Y4ZDhjODA1NGIgbGVnYWN5LXRydW5rCis0MzM0OSAyNjExMTZmNjg4OWMyYzRjN2E5NGRhYWVlYWM2M2FmMzhmOTczMDU2IGxlZ2FjeS10cnVuaworNDMzNTQgM2I2MWU0YWE3ZWRlMWE3YWMwYjI5ZjBmYTMyMjVlZDI4ZWU0ZWRhOSBsZWdhY3ktdHJ1bmsKKzQzMzU1IDZlYjliMTZkNmUyMTU4NjNkMjNhYTliYjFkOTA3NjliMTMwNTllODEgbGVnYWN5LXRydW5rCis0MzM1NiA0MWEyZDc4ZDQzYzY5N2NjYzAyODUzMWZlYjc0NWY2Nzg0MGJmZDc5IGxlZ2FjeS10cnVuaworNDMzNTcgMDQ5MDA0ZDc5ZmVmYjE4MDJiNmU1YzgyOGM1ODFiZjE0ZDAwYWNjNiBsZWdhY3ktdHJ1bmsKKzQzMzU4IDAwZTlkNTljMjNiNGUzOWEyNTUyMjk1YzMwNWNhMjY4MGJkYWExNjcgbGVnYWN5LXRydW5rCis0MzM1OSAzNTIwZjk3MTRlOGMxMDQyZDE4YTViYzYwYzE5Zjc5N2UzMGMyZGI3IGxlZ2FjeS10cnVuaworNDMzNjAgYzhmODdmMDhmZTBiZGRmMDhkMWQyNTQxMWFkZWRmMGU1MWExNzE1YyByZWxlYXNlMjQtbWFpbnQKKzQzMzYxIGMxMWZlMmUyOTg0ZDliMzc1ODk4OGM0YTI3YzE5ZGRkMGE2NWNiNGQgbGVnYWN5LXRydW5rCis0MzM2MiA1MmRlYmJjM2NjMDhhMmVhMzcwZWIyZDQ5ZWY5Nzg3MDRjMDI4OGFhIHJlbGVhc2UyNC1tYWludAorNDMzNjMgOTMzNDRkYTc2YWNkMGU1ZjQxMGEyM2ZmN2ZiZjE4Yzc0MzU3YjNjNSBsZWdhY3ktdHJ1bmsKKzQzMzY0IGE3ODE4YzI4NzQ5ZjRhYTcyNmVmMmE4MmQ3NWIxN2E5NTEyNjdjZWUgbGVnYWN5LXRydW5rCis0MzM2NSBmNGNhMDNiODcxNjBiZTZkZGQ0ZDgxMjhkZmUxNzY0MjYxMzc5ZTI0IGxlZ2FjeS10cnVuaworNDMzNjYgOTRmMTYxM2I4N2Q1YjJiYWYwOWE5OTIyN2FlMmI4MzlkNmZhNmViOSBsZWdhY3ktdHJ1bmsKKzQzMzY3IDAzNGMwY2Y1MDA3YjI4NDI0ZmViNjEyOTViZjljNGRhNjczMzQxN2YgbGVnYWN5LXRydW5rCis0MzM2OCA3YjUyNDgwYzEyYzYyYmVmYzY1ZjZkOWUzOTZlMjljODViNGFkOTlkIGxlZ2FjeS10cnVuaworNDMzNjkgYWYyNGViM2JiZmNlYjdkZWU3MWNhMDQ3OGMwMDI2NWVmZjcyYzkzNiBsZWdhY3ktdHJ1bmsKKzQzMzczIGUxMmU0OTNiNTI0NDQ1NGFmODJlN2E2MDljMjRjNGE5ZDEzZGNjOWYgbGVnYWN5LXRydW5rCis0MzM3NCBiYzUxNjFmMjkyYjc3MTMwMTkzOGE5NTZlNWY5ZjQ1YzdlYTY1MDg5IHJlbGVhc2UyNC1tYWludAorNDMzNzUgNWEzZjIyODA4N2FmZGUzYWIzNjlmMDUzMTI0YzczMmU3YTdmY2RhZSBsZWdhY3ktdHJ1bmsKKzQzMzc2IGI3NTQ0MGNiZmQzNGYxNWU5ZjVjNThlMTRjZWMyYmQ3MTI4ZjVlMmQgcmVsZWFzZTI0LW1haW50Cis0MzM3NyA2MTQ2MWVlYmQ1OGY3ZTNiYzQwY2I4MWE3ZTBiNmYwNzNmMTg0YzU3IHJlbGVhc2UyNC1tYWludAorNDMzNzggYTI4NDdiYjMyOGMwZTZlMmU1M2FiYTkxZDI0MDVhYTIzOWQ5NGJiMiByZWxlYXNlMjQtbWFpbnQKKzQzMzc5IDVkNjI1ZjU4OWYyYTdjYzdmODk0MWVlYWRlOWNhNzViMjZhNmY5MGIgbGVnYWN5LXRydW5rCis0MzM4MCBkOGRlNzUwMDI5MWRkNDU3NjFjMWZhMzE2ZjQ4MTNmMzM4YzY3NTI0IHJlbGVhc2UyNC1tYWludAorNDMzODIgYTc4MzQ4NDRkY2Y2MTAxNjhjYWRlZTMzZGEzMmVmZTM0NGIyOTFmYSBsZWdhY3ktdHJ1bmsKKzQzMzgzIGJhZGFhN2U5MWQ5YTdlNzBkYWU2MzMxNDMxYThmODc0MzhhNGYxYTEgbGVnYWN5LXRydW5rCis0MzM4NCBhMDNjOTU1ZmZlZDEwZmZlYjM2MTRkOGM5ZTRiNWYyYjZlODU1ZjMzIHJlbGVhc2UyNC1tYWludAorNDMzODUgODBjNGZjMDNmZjliN2Q2OGJmZWY2M2QxYjgzNDI1NDlhNDFlOWY4NiBsZWdhY3ktdHJ1bmsKKzQzMzg2IGRjZDQ1OWIwMzY3MDZjNzQ3MjRiZjJkNDNiOWE3NDJhMzRkZTc0Y2IgbGVnYWN5LXRydW5rCis0MzM4NyBiOTQyNjA5M2Q3ZWE2N2FkMTk5Y2U5YzE5NDMzMWZmMWY2YTJlNjdiIHJlbGVhc2UyNC1tYWludAorNDMzODkgNjNjNDQyMjY2NzA1NmI2YzFjMTFhZTZkNmU5N2E0OTc3MWY0MGEwNSByZWxlYXNlMjQtbWFpbnQKKzQzMzkwIDhjY2EyNDkyNjI2Y2U0MDhjZDU2NzExMDgxMWMwNjkyZmQxZDM3ZGQgcmVsZWFzZTI0LW1haW50Cis0MzM5MSA3NjJlNWI4ZDE4OWRhZWEwN2RmMTRlOTc3MGFiNWU4OWRhZGViOWUwIGxlZ2FjeS10cnVuaworNDMzOTMgZWZkMTQxY2JmNmNiMzc2OTQwMTA4NjA0MjBhNGI0MjQxNGMyNDVhMyBsZWdhY3ktdHJ1bmsKKzQzMzk0IGJiMWI0ODUxNjEzMTdmZWMwYTJiMjcwOTBkMGZkMTA3NTIwYTM0MDQgbGVnYWN5LXRydW5rCis0MzM5NSA0ZTFhZmYwZTIwZDE4ZmI3NDgyODBjYTNkYTdmZmE3N2QxMmQ0ODJlIGxlZ2FjeS10cnVuaworNDMzOTYgY2NiZGNmYzQwYzgxYzQ2OGI4MmQ3NTA0NjczYTIyMGZhNmEwMTE0ZiBsZWdhY3ktdHJ1bmsKKzQzMzk3IGVlNGE2MGM3MTM1NzEyN2Y3ZTU4MTQ2MjdhYmJlOWY3ZDE5MGU4MzEgbGVnYWN5LXRydW5rCis0MzM5OSA5YzY5Mzc4NTE2YWIwZmJiNTg4MmI3OGU5OTMxZTE5MDdjOWM3NWIzIGxlZ2FjeS10cnVuaworNDM0MDAgNTIwMzM3NmYxNTg5MmNiZGU5NGZhMDFlODlmNzdmODZhMjVjZDM2MiBsZWdhY3ktdHJ1bmsKKzQzNDA0IGVmODA1OWY4N2ZkMmY5MmViZDQxMTM3ODExNjc3NjU4ODgzMmUyYzcgbGVnYWN5LXRydW5rCis0MzQwNSBhMTU3ZjVhNjlkMzVjNjA5MDhlYTA2M2Y5YTdiMDlkZWE2OTI3NDE3IGxlZ2FjeS10cnVuaworNDM0MDcgYWIzZWZiY2E1YzkyMDk4NDE4Njg3NDBlOTc2NzE4OWI5NDg4YjEwNiBsZWdhY3ktdHJ1bmsKKzQzNDA4IGU0OTQ1NWU5NGJlZTI4OGYwOTRmNzkzNDkyODI0ZTM1ZGEwZDdmYmQgbGVnYWN5LXRydW5rCis0MzQwOSAxZjYxYWE0NmZlZTViM2QzMDIyODAxNDU0ZTk5YjExNDc3YTA5NmEwIGxlZ2FjeS10cnVuaworNDM0MTAgNDM3ZDI3NmM3MzJjN2JkYTc5MzVkYTgwNjI4Y2VkM2Y3ZjU2NTZmMyBsZWdhY3ktdHJ1bmsKKzQzNDExIDg5MTQyY2FkY2ZiOWU3NDc2OTEzOGNlNTc5ZWM3ZTQ3OTQ1OWVmODEgbGVnYWN5LXRydW5rCis0MzQxNCA5M2JhMTU2MTlmNWFhYzkyNzhlZjRmNDgyOTIwMGNlZjMxYWE2MWJmIHJlbGVhc2UyNC1tYWludAorNDM0MjAgNjBiZTNmMzlhNzJiZGY4NThhMTgwODRjMTk3NWRlNDc2MzNiNTVkMiByZWxlYXNlMjQtbWFpbnQKKzQzNDIxIDFjYTAxMmNlNDI3ZTMzNjRhYzUwZWI2MWY1NzQ3ZTJmZWQ1Y2FkYWIgbGVnYWN5LXRydW5rCis0MzQzNSBiODVhZDIxNjZjMDFiZTdhZDBlZTIwZTRjMzQ0MmE2M2U1MWQwYTk3IGxlZ2FjeS10cnVuaworNDM0MzYgYjhkMWE0NWEzMDU3MzI5NjM4ZWZiNDJiYjgzMmIxMWI2MTQ5NmM1MSBsZWdhY3ktdHJ1bmsKKzQzNDM3IDgxZDYxMTlkYmM2NmI1N2RhYTkzM2MwNDBhMDI5OGRmZDAxMzM4NjAgcmVsZWFzZTI0LW1haW50Cis0MzQzOCBlZmIwOWRiYWE0MGU2N2RiOTk2MmQ0YWRkNWMwZDc5MDYxNWQwNTM5IGxlZ2FjeS10cnVuaworNDM0MzkgYWNjZTA0MGUwYTFhYWJiMGNiZjQwMDIwYzdlYWFhNTI3ZDcwZGU5YSBsZWdhY3ktdHJ1bmsKKzQzNDQxIDQ0ZTZmYzhkMDJlMWMxZmM4Zjc5MjBmMGM4MTE3MDljNGM4ODJlMjAgbGVnYWN5LXRydW5rCis0MzQ0MyAyNDM0N2U0NjU2YTRmZDI1ZDNiMWVmMjA0ODNjODJmN2EzYThjYmI2IHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NDQgZTllODA5OGY2NTcyNDhlNjFiM2E4MjRhMTgwMWNmOTA2NjgyNTEwOCBsZWdhY3ktdHJ1bmsKKzQzNDQ1IGYyODRlODU0ZmU3MmVjNDdjMzBhNTY4ZDQwZjhkNWRkOWM0NTgxZTMgbGVnYWN5LXRydW5rCis0MzQ0NiBlMTU2YzU4MTRmY2NiYzUwNjVhZTQzZTEzYzhjZDRmMmIwZWI2MDIwIHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NDcgMDhiZjExMjJjMTQ0MGYyNzViM2FjZDBmOWJlZjQ0MzE1NWNkYmFhNyBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDQ4IGZiN2I1MmM0MTE2YzM2M2ZmOTEyMjI3YTMzZjY2ZWQxMGEyOWI4MzkgbGVnYWN5LXRydW5rCis0MzQ0OSAxMzNkNGJiNjFiYWIyZjNhMTEzOTBmMDQ0NGRkM2MzMDNmZjM1ZTAxIHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NTAgOTU1YTg2ZjhhMTQwYzAyNjgwZDE5MGRmNGEyZDVhMWU5ZjU0YzNjYiBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDUxIDc4Y2FjMjBmOTY0MmQ3MmQ2MTBjMmM0YWRkNmZiMDMxNjZiYWRkOWIgc3FsaXRlLWludGVncmF0aW9uCis0MzQ1MiA2OTE4Nzc5OWE5ZjZiZTdkZjgwZjYyYzViNWU5Y2M5MjE3ZmJiNjgzIGxlZ2FjeS10cnVuaworNDM0NTMgNzlhMGYwODBmODk4YzI1NGJjYTk5OWI5ZDNjMzM3M2QxYzg5ZjRiYSBsZWdhY3ktdHJ1bmsKKzQzNDU0IDVlMWI2ZjU1Mzc2MzEzYzVhYzViYThhMjVlNDEyYmM2MDg3N2M2NmIgbGVnYWN5LXRydW5rCis0MzQ1NSA4NDk2N2ExOTYyY2JiMmE1Yzc0MjdhM2VhNDRhN2Y1MzI1M2NkMjU3IHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NTYgY2U1NmM1ZTNjYjIwNTBlYWVkMGFhZjQ1MWU4MmIxY2Y4OGVjODY1NSBsZWdhY3ktdHJ1bmsKKzQzNDU3IGU1OGE3MWE4NTUwZTdjOTM3YjYyMGFkYzM4OGNkYTVjNzFjMmZlNGUgbGVnYWN5LXRydW5rCis0MzQ1OCBhYWEwNGJmYWZjNTg1NWExZmQ1ZjQ0NzMzNDVhZGRjYTYxNjJjMDQyIGxlZ2FjeS10cnVuaworNDM0NTkgMjM1ZjYzNWFjNDVhMDQ4NzBiZGE4ODgwOTJkZDQ2ODExN2QyZGI3YSBwM3lrCis0MzQ2MCAzNjE5MGQ3ZmQ4YWIyZWFhYzk4YTY0NWMzMTAxMmYzZjY0MDdmYTUwIGxlZ2FjeS10cnVuaworNDM0NjEgMDg5OWE4MDRhNTk0Y2NmOTI4YmJlNjkyZTU5ODMxZTdmZTljZWU1ZCBsZWdhY3ktdHJ1bmsKKzQzNDYyIDYxNDUyYmQxMjVlNWUxMDZhZDk0NmExODI1OTJlMzNmNDBkZmY4MzkgbGVnYWN5LXRydW5rCis0MzQ2MyAyMjhlMjVjOTNhOTc5M2I2ODk1Y2M0MzZjMzRlZDIxOTYyYzdhNmQwIGxlZ2FjeS10cnVuaworNDM0NjQgYzcyYmM4NDcwZjZjOWViODI0ZjdjOTA1OTg2NGExMjljNzYwMjY1NSBsZWdhY3ktdHJ1bmsKKzQzNDY1IDE5MDU5ZGY0NWNmZTkwMmYwZTA5MDk4NjFkMWQzOTYxOTUwY2U1NGIgbGVnYWN5LXRydW5rCis0MzQ2NiAwNDk2MDY5MzMzMjhlODkwODIxZTEzMzI5MGJjOTk3NGQ1MzU3MDQ2IGxlZ2FjeS10cnVuaworNDM0NjcgZjVlNzkyYTkzYzQzMWE0ZGIwZmZmNTU1NjhiOGI4MDJlZTEwOTkyZSBsZWdhY3ktdHJ1bmsKKzQzNDY4IDk4ZjVjOTE4YTI0YWNiOTMxZTFmNzdiZWJmMzA4NDM5MDZmNDQ1NjkgbGVnYWN5LXRydW5rCis0MzQ2OSAyMDJmZTRhYWZjYmIyYzA4MjMwY2E5OTZiYmMzMWE0ZWU3ZWUwYzEyIGxlZ2FjeS10cnVuaworNDM0NzAgZDE5OTNlZThhYzQxMWQxZmMxMjE3NmRiNDI4Y2QwMmEwZmFlOGQ1YSBsZWdhY3ktdHJ1bmsKKzQzNDcxIGNiMjY0NWE1NTRkODgyYWY3YTJiN2FmZDJjYmUxMjczZTU4ODhjMWUgc3FsaXRlLWludGVncmF0aW9uCis0MzQ3MiAwZDNlNWFjMDcyYjJhMTdiNDllMzczMDI1MDU5MGFjYTgzNzYzZGE5IGxlZ2FjeS10cnVuaworNDM0NzMgMzJlNzY3Njk5MDAxNGJkMWE5NTQxMzk3NTU3YzFjYTRhZmI2MjBjNiBsZWdhY3ktdHJ1bmsKKzQzNDc0IDE2NGY5NWU4ZTBjY2I1MDY4ZGVjZDIwZDVhY2VhMDBhYWZmN2VkYzMgbGVnYWN5LXRydW5rCis0MzQ3NiBjNDk4OGFjNTg5OTk3OTBlNTFmZjQzYWVhNjQ2ODY3YjEwOWMyNzg4IGxlZ2FjeS10cnVuaworNDM0NzcgZDY1YTljOWM4YTdhMmVhMzcxNzM0NmE0YzRmMWFjZjAzYjZlY2NmMSBsZWdhY3ktdHJ1bmsKKzQzNDc4IDU5OTEyYjQ4MTJlNmFkODVlZTRjNjc1MWNiZWU3MzJlMGE2Njg1ODYgcmVsZWFzZTI0LW1haW50Cis0MzQ3OSBmYjdkODk1YTg4OTdmNTNlMzZlODg0YjNjNGM5NDg3NTYzYmRkOWY5IGxlZ2FjeS10cnVuaworNDM0ODAgODY2ZGE3ZjMwZTU2ODYwYTYxMTg2YzgwYTZlMTVjYTFiOThlNGUxMCBsZWdhY3ktdHJ1bmsKKzQzNDgxIDY3MTkyZGEzZTY5Yzk4NWJiMTI3MmRhOTMyZDdkZTYwNzMwMzNmYWQgbGVnYWN5LXRydW5rCis0MzQ4MiBjNzcxMTVkZGRiZTE2ZGY1MmZiZjY4MjI0OWRmYTJhM2JjNWI1NTg4IGxlZ2FjeS10cnVuaworNDM0ODMgYWFjMDA1ZThiYjgwMDc5MDNlZDJlNTBlNzFmNTlmYjk4OWQ1NjAwNiBsZWdhY3ktdHJ1bmsKKzQzNDg0IGI4MGI1Zjg0YWU1NGYyZDQ1MjMxNWNmNjg4YmU0MTc3NGMwN2NiM2UgbGVnYWN5LXRydW5rCis0MzQ4NSBhN2VjNzhmOGQwODY2ZTY4ODJmODhkNThmMDNiZjgwMGYxYTZjYzk0IGxlZ2FjeS10cnVuaworNDM0ODYgYTQ5NTBlYTU1NmI1MzQzOWI5NTgxNzJhYmY5YjkxNmIwNzBjNDZlNCBsZWdhY3ktdHJ1bmsKKzQzNDg3IDc1ZjllYjAxMTIyNmUxZjNlZjdhZTFjNTZhYTYwYTYxMWZmMDkwYWUgbGVnYWN5LXRydW5rCis0MzQ4OCA2YzZiMjAwNDQzZTM2YzdiNDRlMDkxNjFjZGM3YjI4NTVlNTYxNTEwIGxlZ2FjeS10cnVuaworNDM0ODkgYzlhNjI3Mzc3NWI1MDNjNDFmNmRiYzZkNWY3YzRjNDAyNzgzOGVjNiBsZWdhY3ktdHJ1bmsKKzQzNDkwIGRhNzcwNjU5Zjc3Yjg0MmYxMmFlNGY2ZTBmOGViMmM0NmU2NzBiNmQgbGVnYWN5LXRydW5rCis0MzQ5MSA2ZmVmOTU3NzEyYjkwNmNmM2NkMjQ2MGY5MTQwNmJmZWEwMmQ2Y2NkIGxlZ2FjeS10cnVuaworNDM0OTIgYTYxZDNhZmRmYzRiNDkzYzk4MzA0ZDc3ZjQ2ZjFiOTI1ZmEyYWNlZiByZWxlYXNlMjQtbWFpbnQKKzQzNDkzIGYzMzAwNDhkOGJkZjgyMDI0MTRhMzM2NGNhZDI0ZjE5NTEyMGU2ZWUgbGVnYWN5LXRydW5rCis0MzQ5NCBkNjEwZmNkYjg5ZjdlYmIxYmY4MDlmNTIyMjBhNWJjYjZhZjk5OTlhIHJlbGVhc2UyNC1tYWludAorNDM0OTUgZmUzYjkzYzIyNDgxNGYzNjBlYjYwYjM1YjEwZDFjOThiNmQyYzhmMSBsZWdhY3ktdHJ1bmsKKzQzNDk2IGM2Y2YxMWFjYjQxZmIzMGJlODQ0ZjM3ZTRhNTNhZjljY2FkMGEyNDYgbGVnYWN5LXRydW5rCis0MzQ5NyBlNjBjOGI5YjJiNGYzZWRlZDVjOTBjMDMxZWFmMzBlMWVlMWJiN2UwIGxlZ2FjeS10cnVuaworNDM0OTggY2MzNWQzYTg3OWFkNDk0Y2UzMTU4ZmMyYmI2NTRkYWYxMjJhYmI0NSBsZWdhY3ktdHJ1bmsKKzQzNDk5IDM4NTBhNDQzNDgzYTFmYTJjZmNkYzA1Y2M4ZTNmNDUxNjY5ODJjMmMgbGVnYWN5LXRydW5rCis0MzUwMCAzNzA0MDQ1OWJmMmU0MWE4NDUwODFhZjc5YmZhMWJjODYzN2UzMWQ4IHJlbGVhc2UyNC1tYWludAorNDM1MDEgYTI0Y2JmOTRiYjhlMGNkNDU4MzUyODZjMmU0NzM5ZWFhZjUzODU3NyBsZWdhY3ktdHJ1bmsKKzQzNTAyIGJmNjY0YTE2MGZjMGFkYzc0M2NkZWI4Y2Q4YTk0ZTk5NDRmZmJkNWUgcmVsZWFzZTI0LW1haW50Cis0MzUwMyAyOTE0ZTdiNGQyNWE0MDA3MGZiNWE4MGUzZjhhZjljZjg2MzdlMmE5IGxlZ2FjeS10cnVuaworNDM1MDQgNDM2YjAzZmZhOGEyNDhmZDYyNjExY2NkZDk2ZWMxNDRjMTllNDQ1MiBsZWdhY3ktdHJ1bmsKKzQzNTA1IDRhOGVmNzBkZTIxMmU0MmMyY2VhMTlmYjY2Njg2YzJjMzAyZTdlYmUgcmVsZWFzZTI0LW1haW50Cis0MzUwNiAwMTZkM2QyM2ZmNTJkYzRkYmYwYzQxMzQ0NWFmMGIxNzIyZGM3ZTkwIGxlZ2FjeS10cnVuaworNDM1MDcgYTdmOGIwYmU1OTdlNTczODRmMWVmMWYxYTkzMjE1MjFjYzRmYmIyZiByZWxlYXNlMjQtbWFpbnQKKzQzNTA4IDQ3ZmJiYTg0OWE2YzgxOTczMDg4YTRmOTRiYjE5ZGE1NzUxYmUyMGEgbGVnYWN5LXRydW5rCis0MzUwOSA4NjcwYTI3MDFhMGY5NmYyYjg2ZDU5NWFhMjYxNWE0YmI5ODBjZjUzIHJlbGVhc2UyNC1tYWludAorNDM1MTAgZmFiNjcyYzNkZGU2NTg3NDMyNTk3Y2NlMDlmODVmZWRmM2EwZTQ4NCBsZWdhY3ktdHJ1bmsKKzQzNTExIDQ2MmM5ZDJhMDdiYjM3Y2EyODZjYjJjNDZmNDUyOTFmMDRlZWYwNTcgcmVsZWFzZTI0LW1haW50Cis0MzUxMiA5ODI1MTc4MDIzNmQ3ZjQ0YWI0YjAyOWEwMGMzMjhiNzczZWQxMWQ5IGxlZ2FjeS10cnVuaworNDM1MTMgZjA1YmQ5OGQ5MzVkNTZmNWVjMThiNTU1YTA1NjgzYWMxNDliNWZjMiByZWxlYXNlMjQtbWFpbnQKKzQzNTE0IGU1NDYyNzRkNjUwM2VhMjIxMzQ1ODBiNTc2ODA3YjFiM2ZiMjQ5NTQgbGVnYWN5LXRydW5rCis0MzUxNSA1OTE4NWZmYTg2MWRhMGYxNjBlM2E5YzI2MGRmMjVmNDVjMTc1MmY0IGxlZ2FjeS10cnVuaworNDM1MTYgYjQ3ZDgyMTllY2Q2MWZkYWY5MDY3ODc2MGU4MzMyMjBmZGQzNDUzNSBsZWdhY3ktdHJ1bmsKKzQzNTE3IDM1Y2Y5MTI5NzY5M2VmMDRmZmY2YTQ0ZDUyMDQ5NjY4ZmIyN2QzMjIgcmVsZWFzZTI0LW1haW50Cis0MzUxOCBiODIzZjVmZTk4MGNjMzlmMGI4NDUxMjExMTRmY2VmODI0OTEwMGZiIGxlZ2FjeS10cnVuaworNDM1MTkgYTUzM2Q1YjVkYjg0MDE0ZTczODVhMmIzMjE5NDczMmI1Y2Y4Mzc4MSByZWxlYXNlMjQtbWFpbnQKKzQzNTIwIDA1OTE0ZThkZWQ3M2VkYjk5ZWFhMzRmYWNkMjMzNGY1MDNiODk3MmUgbGVnYWN5LXRydW5rCis0MzUyMSA4NThhZTk1NGYwNTU4NzY0NzMzNzlmOTg3NmE4NjI4ZDZmYjJiYzFhIGxlZ2FjeS10cnVuaworNDM1MjIgODcwZDU2YTNhMjBiZTQ4NWE2Y2YyYzA3YWQxZjc0ZDAwNTc3MWE2NiByZWxlYXNlMjQtbWFpbnQKKzQzNTIzIDQ5MjA0NDAzNGE4N2JiYjRlYTQ1ZDk1YzdiYWJjMjZmNTM4ZmZlYTAgbGVnYWN5LXRydW5rCis0MzUyNCA0MjMxMmU1ZjExZmQxMTViMzA4MjI1MWJlMWM1MjIzNTlkYzcxMmYyIHJlbGVhc2UyNC1tYWludAorNDM1MjUgZjY0ODEyYjJiNWMxY2I0ZDE5NjkyY2E4MjZhMzI1NDgwNzUwYmJmNyBsZWdhY3ktdHJ1bmsKKzQzNTI2IGIwNjhhZWUxZGZiNWIzNTYyNGUwMThjZTEyZWQ4NDRhM2FlY2FmZjAgcmVsZWFzZTI0LW1haW50Cis0MzUyNyA2ZjA4NjNiZWRjZWEzMmQxY2YzM2RkNGE4MmM3YThmY2U2YzFmYTBiIGxlZ2FjeS10cnVuaworNDM1MjggYjA5ODFmMGMxOGZlYjZlYzNlN2Y2MWU2Mjc0NTRjMDFlZjYxODhmYiByZWxlYXNlMjQtbWFpbnQKKzQzNTI5IDhkMDU3OWQyYjY2Mjc5MmEzZTkwNWQwM2E2MzFiMzc1MGVhZjFiOWIgbGVnYWN5LXRydW5rCis0MzUzMCA4MjNjNDhkNjg3MWVjNzkzYWYzYWI1ODRiMjAyYWI1Zjk5MWQ0YmI2IHJlbGVhc2UyNC1tYWludAorNDM1MzEgMmNjZTliY2RjOWY2NDU5NWJhNTFjYThlZmE4NzJlM2U2OTMzMTFkMiBsZWdhY3ktdHJ1bmsKKzQzNTMyIDVmMzU3ZTYwY2RkZWE1OWNmMTUxZGIwOTI3MjcxZTZjMzVkODQ2MWYgbGVnYWN5LXRydW5rCis0MzUzMyA5MWU5ZmI1Y2ZlMTQyNTViMzk2MzhkZTc3ZGYxYjBmNDJlM2E4YzM3IGxlZ2FjeS10cnVuaworNDM1MzQgODM5ODgzNTRiNjRkOWE4OGJmYWVjMzA0NjFjNTlkNzRjZGQ5ZDYxZiBsZWdhY3ktdHJ1bmsKKzQzNTM1IGI3MzE3NGFmMjZhOWI1ZDdlYTkzZjBmYmY4ODJmMDJmZjgxM2RlOTcgcmVsZWFzZTI0LW1haW50Cis0MzUzNiBmYWI0NjkzNjFiYmMwZTRiOTk4YjVkZTEyYjFkMGQ2NTBkYTEwY2RjIGxlZ2FjeS10cnVuaworNDM1MzcgYWNlNjdlM2JjYTY4MzJlMTRiYTRlYWM1YTVkZGJiMGJhYTc3NGVmZCByZWxlYXNlMjQtbWFpbnQKKzQzNTM4IDNhODFkY2VhYTlhOGJlNDEzYTdlZjdlOGMzMzFiMzI3NzUyYjVlNTUgbGVnYWN5LXRydW5rCis0MzUzOSA0YWI4ZWM5ZTU5ZGZhZjM0OTFjMzQwNTE1NGZmZTVjMWFiODgwNGM0IGxlZ2FjeS10cnVuaworNDM1NDAgMGU0YjNjYWQ4OWZlNmMyMjZmMGFiMzU2NzZjMjExOGI5NDgxNTU1MiBsZWdhY3ktdHJ1bmsKKzQzNTQyIDNkNGEzZjRmYzk4ZThiMWZhZWE0M2UxZjA2N2NlNmZjMTA4MTRjYzIgbGVnYWN5LXRydW5rCis0MzU0MyA1ZTFjZjIxZDRhYjIzMTkwZWE1M2RhNTlmYTYxNzJhNmI0NDAxNTI2IGxlZ2FjeS10cnVuaworNDM1NDQgNGI2NWFiNDFjNzcxN2ZkNWVhZDM0NjBkODFmNjIyZTM1N2I0Y2I0NiBsZWdhY3ktdHJ1bmsKKzQzNTQ1IGZlOTdjMDAxNmQ0YjEzZmZiNzU3ZjhkOTJjZTQxYjU0MTVkODdkNmYgbGVnYWN5LXRydW5rCis0MzU0NiBhNmJjZTdhZWJlMDViY2ZkM2ExMTNhNjUwMzc5YTYyYmQ5ZGI0YjhhIGxlZ2FjeS10cnVuaworNDM1NDcgNGEyMDZmY2U1ZmU3YTg0MjhkOWFiM2Q0MzcwYjVjMmUzYzhhNzAwNiBsZWdhY3ktdHJ1bmsKKzQzNTQ4IDVhNmM3ZDZkZWYwYzljZTU1YzBlNjg1ZGRlNzkyZmE1MTM4M2QwMDkgbGVnYWN5LXRydW5rCis0MzU0OSAzYWEwYTQ4Mjc4ODhiMjQ0NGU5MGYxMWJjZjdiYTY5ZDBkNTAyMGZlIGxlZ2FjeS10cnVuaworNDM1NTAgODA2OGMyMmMzNzI0ZTZjZmUzNDA4NDlmNGU3MjY5NmQ3ZDU0OGI2YyBsZWdhY3ktdHJ1bmsKKzQzNTUxIDUzZWY2YzM3NzI3MWRmOGRjOGRiM2E1NDhlMDM0Y2I3ZTEwMmYxMzkgcmVsZWFzZTI0LW1haW50Cis0MzU1MiBmNGQ4OGNmYWVjNjBhYzUyMGU3NmQyMmE1MjQwODIxNTlkNjVlMWMyIGxlZ2FjeS10cnVuaworNDM1NTMgNDgzNzcyMmE2MGYwM2Q5NjU2ZmE4ZTA0NzRlNzA2N2VhZTZmZjk5MiBsZWdhY3ktdHJ1bmsKKzQzNTU0IGNmMTBmMjQ0MzU0MmY2ZDJiZTRlNmQ5NzQ1YzRjZTdlNzg1ZmM2OWUgbGVnYWN5LXRydW5rCis0MzU1NSAyY2YzYjVjNDUxZDc0NWIzNTVjM2IyY2E2YmExODIxZWRhYjcyODU3IGxlZ2FjeS10cnVuaworNDM1NTYgMjYwZWUzOTFmOTA4ZjIzZTJlZTY5NzA2Mjc0YzljMzE1YWNlYzg0OSBsZWdhY3ktdHJ1bmsKKzQzNTU3IGEwNjY4NWYwODg4NjdmYTdiYWM3Yjg3YmNjODMwMzU2NDNiZWNlNTggbGVnYWN5LXRydW5rCis0MzU1OCBlOTU1Mjg0Y2Q2OTQwMmRhYjI1ODc3NjNlYzFmMGZlMjFmMzcxZTBmIGxlZ2FjeS10cnVuaworNDM1NTkgODViMjZmNGZhMmE1MDRmZGI1MzRjOWE1MTI2ODY5ZWIwMmI3NjM5YyBsZWdhY3ktdHJ1bmsKKzQzNTYwIDI4MzRjY2Y1NTJmMzdmNjdjZTdhYWRiZTg2MjlmN2NlNDQ4ZmE0MjcgbGVnYWN5LXRydW5rCis0MzU2MSBhNjBhOTQ0M2U4ZGFkOWUyZmQwODg2NGNmOGJhZWFkYmIyYTI0OTg4IGxlZ2FjeS10cnVuaworNDM1NjIgOWMyYTQ2MmQ2NmJiNzNhYWM4YTg0MmQ2MWFlOTUzMDgyZGQ0Yzg2NiBsZWdhY3ktdHJ1bmsKKzQzNTYzIDQwMjBjZjZjMzgzZTA2MDZlNjg1YTQ5NWNiYjBmMDJiOTU4MjE5MmUgbGVnYWN5LXRydW5rCis0MzU2NCBlYTlhMDNiOGI5ZjZiMWVlNjBjZjM1ZjUyMTRlMDYzYTZiMDQyMmIxIGxlZ2FjeS10cnVuaworNDM1NjUgZGZjMzNlYzdmNzNhODVmZWFiMDgyOTA4Y2ExYTgwNzlhZmY4OGMyMyBsZWdhY3ktdHJ1bmsKKzQzNTY2IDc4MjYwNDlhY2I0YjFkM2FjMTEyYzhiNWY3YjBjMjIzOGY1Y2FlZGQgbGVnYWN5LXRydW5rCis0MzU2NyA1MDFmZGE1MTFiMGFiZDRkN2RhZDdmNmYyMzRmOTJmNjQ5NGE0YmI3IGxlZ2FjeS10cnVuaworNDM1NjggMDliOGU1YTEyMTQ2Y2M5OGY5OTczMzhmYzhiNDVhMzAzMDg5MTkzZCBsZWdhY3ktdHJ1bmsKKzQzNTY5IDU0NmI2MzE5MjQwMDYyZTllNjRhN2JhYzJjOTE4ZDcyZDYyZjAyMjkgbGVnYWN5LXRydW5rCis0MzU3MCAxMDA0MGQxODdjMjEwNGY1OGZiYmQ0YjQ2ZmQzNTIwYThhMWVkYTMyIHJlbGVhc2UyNC1tYWludAorNDM1NzIgY2VhNTRjOWQ5MjFkNTdhOThlNDk0ZTNiM2YxZjRiZWRiNDc2NzRiZiBsZWdhY3ktdHJ1bmsKKzQzNTc0IGU4MmFhODA0MTgyMWEzNTkzMzA1MWE3MTVjMmRmMDgxYTVlZmUyYzEgbGVnYWN5LXRydW5rCis0MzU3NSBhMzQ4MTg3MTEzMmNlNjU1YzE0NDc0MjI1NWM3ZmQ4NGQyN2JkN2UwIGxlZ2FjeS10cnVuaworNDM1NzggNzk4NmE1YjEzMWVkMmMwN2Q0OTgyMTcxYTIwMDczYzFmZWZmZjllYiBsZWdhY3ktdHJ1bmsKKzQzNTc5IGU5NTZlMTZlNzQ0NGZiMjRiYzhmZDE0MjY3ZGRhNmFlYTUzZTViNGQgbGVnYWN5LXRydW5rCis0MzU4MSA1N2IxZmYxMzg5OTVlODcwMTlhNTVkNWRjNTNkNGU3YmZmMjA2NDQ1IGxlZ2FjeS10cnVuaworNDM1ODIgM2VlYTY1YmI4OTZlZGMwNjNmMjdhYmYwNTQ4Njc5OWVmYjc0NWE4ZiBsZWdhY3ktdHJ1bmsKKzQzNTgzIDUxMzNiNWIwYjRhODQ1OGRkNWU4NTk3NTBiYTQ1MTc2ZGZmOWYxNTkgbGVnYWN5LXRydW5rCis0MzU4NCBlMTQyNTVkZjdmZDE2MWU4ODBiNDU3YWFmZDZmOWI5MDA5YTljY2M1IGxlZ2FjeS10cnVuaworNDM1ODUgOTJhMTdhMjgyMWUwNGUxNjliYWMxNDU5ODIyMTA4ZGMwMGQ4MTBkNiByZWxlYXNlMjQtbWFpbnQKKzQzNTg2IGViNjlkMmUzMTM0Y2ViMGE1M2Q0NmYyYjk3MmU3YTYyYTE4YTUwNjQgbGVnYWN5LXRydW5rCis0MzU4NyBlODE0YWQ5NzBmYzZhOTE2NWQwNWY0MTM4YTMyNGZmZjE5MmJkNDM0IGxlZ2FjeS10cnVuaworNDM1ODggZmJjNjJkYjk3ZTQzOWM1YmZmMTUyMTVkYjY4Mjg0YjQ0ZWM3YTY1ZCBsZWdhY3ktdHJ1bmsKKzQzNTg5IGE4Y2Q5MDVmZDk2Y2QzZWFkMmVlM2I0YjUzN2Q1NTJjYzg5Yzg4MmIgbGVnYWN5LXRydW5rCis0MzU5MCA3OTZhY2RlNzAxOTU0MTFmMTMwNmMxZjExZWExOGUxMmRhMzUxNGJhIGxlZ2FjeS10cnVuaworNDM1OTEgYmRiZTA3ZDk2YjhlZjRkYjM1Y2ExYTQ3YjExYzNjZjM5NWY2NDJhYSBsZWdhY3ktdHJ1bmsKKzQzNTkyIDAxZmQwOTNiODc4Y2M3NzAyM2Y0NWE2ZDIzMzkyYzEwOTcyYTBmMmYgbGVnYWN5LXRydW5rCis0MzU5MyBiYmUxY2RjOTI2MDUxYWQ4MjhjODA0NWUzMGMwM2RiZWJhZWEyZTZhIGxlZ2FjeS10cnVuaworNDM1OTQgMTE1NDI4YmIxZDNmNjQ1YmU4Zjg4NzgwZGVjNTk1NmVhNmZmNTIyNyBsZWdhY3ktdHJ1bmsKKzQzNTk1IDVjYzZkNzE1MzdhMzFhOTVmM2QzOTBiMWE2NzM3ZGQwNDRmZDJiYTYgbGVnYWN5LXRydW5rCis0MzU5NiA2ZDUwZmQzNjRjZjVjYjU5NmQzZjBkNDJlN2M1NjkxNzg1MTg1YmQ5IGxlZ2FjeS10cnVuaworNDM1OTcgZTQ1N2IyNGY5OGM1MWY3M2Y4MDY5ZWYxYjRmMjkyODczYWJjN2Y4YiByZWxlYXNlMjQtbWFpbnQKKzQzNTk4IDM1YzRiMDkzM2E4YjdlNTlkMTY0YmJiNDNhNWQzZTdhNjUxOTY3YjAgcmVsZWFzZTI0LW1haW50Cis0MzU5OSBmNWFkM2M3ZWMyY2JmNDUzYmZlNWI4YTIyOWI5NWYzOGM2M2FkMzFkIHJlbGVhc2UyNC1tYWludAorNDM2MDAgYmM5ZDUzYzAwZGFkNmMzNjMwMTA0NzhkZDMwNDE2MDJkNWExYjMxNSBsZWdhY3ktdHJ1bmsKKzQzNjAxIGUyYjNhN2Q5YWNhOTE4YWQ1YzUyNjI3MjI1ZjlmNmY3NWFiOTViNzMgcmVsZWFzZTI0LW1haW50Cis0MzYwNCAxMDQ5ZTlhZWIzODUwOWZlZWUxZGE1M2JhMGQxYmVkYzQ4MmIxZTY5IGxlZ2FjeS10cnVuaworNDM2MDYgYTM4MzAzNzdlMWE3OTYyMTljMTI0YmZkY2YyOTBiZTMzMDEyNTFjYiBsZWdhY3ktdHJ1bmsKKzQzNjA3IDJjZDFlNWIxNWUwNTBkZTNiZDZlNGEzY2E3YzM2NWIyYTZlNjMzYWQgbGVnYWN5LXRydW5rCis0MzYwOCAyOWEwNmEyZjNmMmQ4ZjI1ODM3YzY3ODA1ZDEwZTBmMjlkZDk0MDY0IGxlZ2FjeS10cnVuaworNDM2MDkgNjBiZWQ2NDFiNmQwMzMwMDQ0NTNmOGI3Njk0MmNlZDQxMGYzOWMyNSBsZWdhY3ktdHJ1bmsKKzQzNjEwIDVhYTNjZWY0YThhN2I0OTIyYWM4M2I5YTQ1M2Q1YWFmMDdiODEyZGQgbGVnYWN5LXRydW5rCis0MzYxMSA2ZGJlYTkxMWU4ODEwYTRhMjUzMjVhNjZhODA0ZmFkOWM2MWRlZmI3IGxlZ2FjeS10cnVuaworNDM2MTIgMGYzYjdhZmExODdhZTY2YmRjMTc2MGQwZmVlZGJiZGFjODIzNmQ4ZiByZWxlYXNlMjQtbWFpbnQKKzQzNjEzIDQ5ZGJlZGZiMWQ3NDgzMGU2YTE1NTk5MTczNmQ5ZjMzYzFhNGU5NGIgbGVnYWN5LXRydW5rCis0MzYxNCAxNmE2NGUzOTQ2MDIyZmI4YjMxZjZhYzUyNDJhYmFhZWU5Y2U5ZTJhIGxlZ2FjeS10cnVuaworNDM2MTUgZWZmNmM1MzQ4M2ZmMzlhMzI2NDYzZDQ3MDk5ZDYzM2Y2MjNlYzIyNiBsZWdhY3ktdHJ1bmsKKzQzNjE2IDA3ZTQ0ZmQwNmNmNzYzOWU3ODUxOTUyY2M3ZTk3MmRmZmE2NzhjZGUgbGVnYWN5LXRydW5rCis0MzYxNyAyZjU3ZGE5MjFhZWY3YzFlYTY3OTljNzk5YTcyZTU0YWM1NzhiNWNjIGxlZ2FjeS10cnVuaworNDM2MTggZGNjZTgxYjdlNjRkMDNjODU1NDE5YzIyMDdmNDFmN2M5ZjdjMTRmZSByZWxlYXNlMjQtbWFpbnQKKzQzNjIwIGQyNzA1OGM0MDlkZjNjNjk1Y2RjNTA3Mzk5NzMwZDZkY2VkMDU4OTQgbGVnYWN5LXRydW5rCis0MzYyMiBjMWNlZjFkMmRjY2Y0Yjk4NDFmNmQwZTQ0ODcwN2M3YTM1ZjI1YWY1IGxlZ2FjeS10cnVuaworNDM2MjMgZDI2OTdjNTJjY2FlNTliOTJiMDBiNzNhZWVhYTA2MmJiYjkwMTUzZSBsZWdhY3ktdHJ1bmsKKzQzNjI0IDZhYjE1ZmM4NWMyZDBjNjhjNzdjYzY5NWY4N2NkMjZiY2RlOWI3ZmMgbGVnYWN5LXRydW5rCis0MzYyNiBiNjAzMzA3MjkyZmM3NGFlODZhZjZhNTU4ZWUxMDQzN2FkYzhhM2M1IGxlZ2FjeS10cnVuaworNDM2MjcgYWRkMDA3ODcwYmJkYWQzOTA5MjFkOTIwYTY0ZDNkMmEyNTgyNjc5MCBsZWdhY3ktdHJ1bmsKKzQzNjI4IGQzNDUxNjU4ODI3MmFlZTFjODNiOThlNGRiNTQzYmZhODlmY2RhNzkgbGVnYWN5LXRydW5rCis0MzYyOSAyYzM4ZWU0YmRkOGFiMjk1ZTQ5OWFiNTMzNzQ0YjJlY2NjYzFjZGMzIGxlZ2FjeS10cnVuaworNDM2MzAgYzExNWIzYWUxYzE4NzlhM2IwMGJlZDBlNTdiYjdhZWM5NzEwNGE2ZiBsZWdhY3ktdHJ1bmsKKzQzNjMxIDFmMTA5YTQ5NTNjNjlhMjM5MTY5MTE0NGY2NjhiMTFlYjdmOTBlZmUgbGVnYWN5LXRydW5rCis0MzYzMiAwNGFmYjM2NTA4NDc2MGVhY2VhNmRkOGFkY2ZhMjgyN2ZhMDRmYjY0IGxlZ2FjeS10cnVuaworNDM2MzMgYTE3YjUyOTRlOTkzY2E5NmZjMTAxY2U1Yjk4ZGY5OWM5MjIxMzA0NyBsZWdhY3ktdHJ1bmsKKzQzNjM0IDllY2JjZTU1YTQ1NDY1ZDhhMDRiYmU0ZGU5NDA3ZjkyNzI2ZWI3N2IgbGVnYWN5LXRydW5rCis0MzYzNSA4ZWZkZWYyZWNmM2IxOTU4NWQxMjViYmQwMzIyNmQ2NDA5MWY3OWIxIGxlZ2FjeS10cnVuaworNDM2MzYgZjhmYzMwYzBmYzdjMzQ1MjE5M2ExZjhjM2YzYjFlOWI4YTg2Yjc3OSBsZWdhY3ktdHJ1bmsKKzQzNjM4IDIwZmZjMmNhMDNlMGNhNTFiYWY4OTY2MGQ4ZmI5YzNlNjk2NjIwMTEgbGVnYWN5LXRydW5rCis0MzYzOSA2MjU2N2JiZTdkODhkYTU4YjAxNGU5MDM5YzBjYmVjNDczZTdmODA1IGxlZ2FjeS10cnVuaworNDM2NDAgNThiOGQyOTgyMTQ0Zjg4ZDM2NWNiNDk5MmRiOWFhZmE5NDQ2MzY2MCBsZWdhY3ktdHJ1bmsKKzQzNjQxIGU2NTgyOTA1ZWViYTZiNTZiYzdmMjVhM2FkYjg2NDE0ODg4YWI3MjggbGVnYWN5LXRydW5rCis0MzY0MiA5MDNlMzE2MjA5OWUyOTBmODhiMWJlNTE3MTg4ZTFjYzllODAzZmRkIGxlZ2FjeS10cnVuaworNDM2NDQgODUyZjFjMWE4OWI0ZDM0ZTYxNzk4NzE0ODE2MmRiN2E5MmQwMGQzMSBsZWdhY3ktdHJ1bmsKKzQzNjQ1IGU3MDllNjI4ODZlNjAzOTQ1MjM5NTIwNTAzNTkxM2RmYWEyNTdiZDEgbGVnYWN5LXRydW5rCis0MzY0NiBkNmVjYmE1OTZlMWU2ODkxZDA0YTZhMWJkOGU2NzlmMzlhZTdiMGRmIGxlZ2FjeS10cnVuaworNDM2NDcgMjk2MzkyYzcxMDY5MGU2MGRkMTRkM2Q0ZWJiMTEzYzM3ZDVmOTM2MSBsZWdhY3ktdHJ1bmsKKzQzNjQ4IDRhOTk5YzZlMDBjMDJmZGE1YWUwMTM1NWU1OGM1ZDI2ZDg5NjdmMzYgbGVnYWN5LXRydW5rCis0MzY0OSBhOTgyYjAyYmVjMGJmMTg0NTA2MmJmNTg1YTRmZDFhNmExYTUxNWE2IGxlZ2FjeS10cnVuaworNDM2NTAgMTA1YThkZDAxODUxNjY1M2JkMDE1ZjY2NmI3ODNhYWUzYzc5MDY4NCBsZWdhY3ktdHJ1bmsKKzQzNjUxIDg5NmY5ZmVhZDE3ZTcyMGVjNGEyMWRlM2FjMjE0NTE4ZGE4NDg0NWYgbGVnYWN5LXRydW5rCis0MzY1MyBhMGYyYzM4ZDg1ZjQ1M2FjOTZlNTk2ZWZmMjdlMGMwNDEzMzBjOWI1IGxlZ2FjeS10cnVuaworNDM2NTkgMzk1YjFmNWM5NzUxNDkzY2FlNzFiNGU4NDE0MGNhZGYxOTI5NDY2OCBsZWdhY3ktdHJ1bmsKKzQzNjYwIDRiNzYxYTYzMzk5YzQyN2JiNzhiNTNkMmY4NzYyZjJjODQ3ZmE0MDggbGVnYWN5LXRydW5rCis0MzY2MSA2OWY3OTUxNzc2MWQxMmE2M2VlZjA2ZGRkZWQ3OTEwMGExZjUxYTFmIGxlZ2FjeS10cnVuaworNDM2NjIgZGJmNWIyZjJhNDI5MTY4NzAxNzQyNzZkMWE4YzY1ZjAzNjQzMTQ1YSBsZWdhY3ktdHJ1bmsKKzQzNjYzIDY1MzMzOGFhNjlmMmQ3ZGMwZDE2YmY3MWZlZTY5OGMyMjJiMWU5MjIgcmVsZWFzZTI0LW1haW50Cis0MzY2NSAwOTk5MDY2MTIyNmRiYWE1YzMwZGUxNGM5NDdkYjRkNjAxMDVhZGUzIGxlZ2FjeS10cnVuaworNDM2NjYgZWQ2ZmU3MjkxMDgzOTk4ZTU2YzM1OWZmNjcyMTk0YzA3MTBlNDMyYiBsZWdhY3ktdHJ1bmsKKzQzNjY3IDk3NmMwMTA5MWIzODVkZWQ5MDQ1MmUxYmY1ZjU4NDgyNTM1YWU4YTMgbGVnYWN5LXRydW5rCis0MzY2OCBkMzk2OWFlYmE3NzdkMTAwNmNkZjk5ZGI0NjBhOGRjOGE0MGUzODcyIGxlZ2FjeS10cnVuaworNDM2NjkgNDg5OGYxOTZhMjRkZWJjZWQ1YjQ4NTg3NTYwODc0NWEzODNhYTRkNCBsZWdhY3ktdHJ1bmsKKzQzNjcwIDNkNGYzNTNjM2Q0ZmIyNjk0OTYyYjI1NjRkNzllZDk3N2IyMGIyYWUgbGVnYWN5LXRydW5rCis0MzY3MSA0OGQxMmRlZjMyYjNjOGNlYjk5NDQ3ZjAwZjdmYWJiNmRlN2EzZTdmIGxlZ2FjeS10cnVuaworNDM2NzUgOTdiYzM0OGRiYzVkZjJkOWQ4NjE5MGNhYTM0MTk2NjEwOWU0ZWJjMiBsZWdhY3ktdHJ1bmsKKzQzNjc4IDVlYzg4ODNhMmVmOWExNjQyYjZjMDdmY2JkNzY4ZjQwN2Q3MTU0ZjcgbGVnYWN5LXRydW5rCis0MzY3OSBmNjYzNWYzMDQ2OTVlNjZiZjU5NTkzOGRmNzczYzIwOWVkOWM0ZGIwIGxlZ2FjeS10cnVuaworNDM2ODAgNDhjZGUyZjhkNTBlMWYxMzkzMjFkNDRjZjNmZjc3OGJmY2E0N2ZmOCByZWxlYXNlMjQtbWFpbnQKKzQzNjgxIDM2OWJiNWY2N2VmNjg1N2QzMTUwYjQwYjNiNTdhZWE4M2EyMjA4YjkgbGVnYWN5LXRydW5rCis0MzY4MiA5NjBiZjZhYTg1NGRkNjY1Y2NmYWI5ZGIzODhhOGIxMTBlNjA4NmYxIGxlZ2FjeS10cnVuaworNDM2ODQgZmM4YzkwYTQ0ZTY4Yjc5MzI3OWIzZjUwZGZjMzNiN2QxY2M2YmRjMiBsZWdhY3ktdHJ1bmsKKzQzNjg1IDFkYWY0ZjdiMzAyMTZhMTFkYmIyMWMxNjljZTJhNjEzZGRmZmQzYWUgcmVsZWFzZTI0LW1haW50Cis0MzY4NiA1YjExOWYyNTZjZGU1ZWIxMWE2ZGYyYTIxYmY2YTBmNWI0ZWJmNTY3IGxlZ2FjeS10cnVuaworNDM2ODcgZDVjYjc3MjMyMmJmNjdjMzMzNGMzMTA1OGUzOGUwNTEzZjkxMTUxMSByZWxlYXNlMjQtbWFpbnQKKzQzNjg4IDNmMDk1YzU1YzJkOWIxZDRkN2MxN2UxN2FlNDkxODM4YjAxNDBhNGIgbGVnYWN5LXRydW5rCis0MzY4OSA0Mjg0ODc5YTE4ZWFkODYzZWZmNGNkNzEyODczMDI3MzQ4NWUzYTY1IHJlbGVhc2UyNC1tYWludAorNDM2OTAgYWQ0Zjc1NTBkOGE0MDYyNThhZThjNmI5Y2RkMGIxOTU4MjhlNjQxMiBsZWdhY3ktdHJ1bmsKKzQzNjkxIGQxZGRhMTE0OGYxMDk2OWI4ZTEyNWYxNDdhNDAwMGZhNzIyOGYzN2UgbGVnYWN5LXRydW5rCis0MzY5MiBkMDMyMDFmMmY5YzI0YTU5M2I4OTg4NjRmMzg2NGNjOTkyZWQ3MmQ5IGxlZ2FjeS10cnVuaworNDM2OTMgMmIwYTVlZWMwMjhiMDdkZmNkYWEwYjZjMDdlODdkYzIxNDI0ODJjZCBsZWdhY3ktdHJ1bmsKKzQzNjk0IGMxNmI3NTJlZTkzYmMyYWRhNjFmNTFlMzM3MjI4ZWI3ZjRlZTYxNDMgbGVnYWN5LXRydW5rCis0MzY5NSA3Y2QzYmYyMzk5ZTYyMGE2MzQyYmZiZWJhOTIwZWQ0MGZmOTNmMGU4IGxlZ2FjeS10cnVuaworNDM2OTYgY2U0YWY1NDE2ZDc2NWViNWZhODk3ZGZlMThhNWU0YzNjZjg1YzA4OCBsZWdhY3ktdHJ1bmsKKzQzNjk3IDc5ZDNjNGFkOTMxMDliNzk5YTliOWZlMTBmMDFlMWZlOGEyZmRmZTcgbGVnYWN5LXRydW5rCis0MzY5OCBmZjcxODdkY2EyZjFhZjQxMWEzZTNlMDMzNjk0OTU3NjI1MTVjNGY3IGxlZ2FjeS10cnVuaworNDM2OTkgMjExNDEwMzdhMTIzM2JkOTRlZTI4YmQwNDBkM2ZmZWMzMmM4NzBhZCBsZWdhY3ktdHJ1bmsKKzQzNzAwIDdjNDA0OGVjMGM2ODhjNWU1NmE0NDlkYTA2ZTc1NDc0OTdjMWE4NTMgcmVsZWFzZTI0LW1haW50Cis0MzcwMSA1NTU2Y2U5OWYyMGM0ODQ2Zjc4ZDU2YWE3MzU0YWE0NzcxOTdlZDQ2IGxlZ2FjeS10cnVuaworNDM3MDIgMGEwMTQ4ODQwMTdjZGNjNjNlMWU1MzNhMDUwNDBjMzgxYWM0ZjU2OCByZWxlYXNlMjQtbWFpbnQKKzQzNzA0IDAxODQ1YTI0N2M4YjE1NWU2YTY2MDMwNGZlY2RlYjljODJmZWEyOWUgbGVnYWN5LXRydW5rCis0MzcwNSA4Yzc4Mjg4ZDBkYmJiMTRiODFmMTA4ODQ0ZjM2ZWZiNjhjOGU5NmM2IHJlbGVhc2UyNC1tYWludAorNDM3MDcgYjQzZGI4N2E5NzUyMzk3ZWIxNWY1Yjg1NTA1NDcxYTcxYWZmOGEzOSBsZWdhY3ktdHJ1bmsKKzQzNzA4IDBhZTFmYWY0MTFmZmYyMjQxNWFjOGVlNGQ5NjFiMzMyZTEyYzU2MzEgbGVnYWN5LXRydW5rCis0MzcwOSAwYTQ1Y2IzMGI2NGUwYmVjMDkzYTZkNzg5MWY5ZjU4YWZmYzIzZjliIGxlZ2FjeS10cnVuaworNDM3MTQgYTlkZjliMGJhNDE2NWU0YzhhNWUwZWYxOTViM2M5ZDFiODVmMGViNiBsZWdhY3ktdHJ1bmsKKzQzNzE1IDNjN2VhNTA1MThiZTIyMTVjYzNiMTIxOTZmYmY5ZDg4ZjFkMDdiOGQgbGVnYWN5LXRydW5rCis0MzcxNiBkMjJjYjE0ZGE2NzE0M2U3ODA4YTgyMjYxMjNiNjAwNTg1YTUxYzg3IGxlZ2FjeS10cnVuaworNDM3MTcgMTU4M2QzZmRkZGNkNzZhODAyOWI4ZWMzYzhkYmJkNjZmOWY4MmJkMSBsZWdhY3ktdHJ1bmsKKzQzNzE4IGE5NDcwZWI2MzdmMTk0ODgwNzcxYzgwMTU0YzEzZWFjYzlkOWNjYTQgbGVnYWN5LXRydW5rCis0MzcxOSA4NjlmM2M5ZDc0MDE0MDBlZTEwYzRhOTViZjVjYmYzZDQ4YmEwYzk1IGxlZ2FjeS10cnVuaworNDM3MjAgZjhjNGFhNTQxM2RiYTBmNmQ4YzIzN2FiYjUwMTlkNWFhYjBkN2EwMiBsZWdhY3ktdHJ1bmsKKzQzNzIxIDliZWQzMGRmN2E0YWVhOTQ4MzZlOTZlYzU1Y2Q5OTMwMDI0OTljZjIgbGVnYWN5LXRydW5rCis0MzcyMiA1YmMyYjRlM2ZmYzE2NDVmMmJlM2NhMWRjZmFkY2FjNjRhOTFhZGFhIGxlZ2FjeS10cnVuaworNDM3MjkgOTAwNmY5MjIzZDgwYjVjNDZkNmU1NGFjZTQ2ZjE3MTJjYzRjMjUyZiBsZWdhY3ktdHJ1bmsKKzQzNzMwIDE0OWZlNjg0ZTQwMTYwOTZiZDZhNTJkMWY3N2JlODNiNWZkYzFlZWMgcmVsZWFzZTI0LW1haW50Cis0MzczMSBiMzY2NmM1ZGRkOGEwYThiYzhjYjJlZTU4YjNlNDQzYjY4YTE0NmEyIGxlZ2FjeS10cnVuaworNDM3MzIgNzA3MzEyNTJkYTM0NjkzMDY1NDYzY2M0YzBkZjg3YWUwNjA5N2Y4NSByZWxlYXNlMjQtbWFpbnQKKzQzNzM0IGMxN2M1MjE5MzE2OWVlNDRjNzUyMjFmMzkyZjcwMzBlMDQzMTEwYTkgbGVnYWN5LXRydW5rCis0MzczNSBhN2Q2ODhlYmUzZTFhMjAzMjhmOTQ0ZWE4NWU2Y2VhY2NhNTIzZTYwIHJlbGVhc2UyNC1tYWludAorNDM3MzYgNDMxNjEzYmM5MzVlOTVhMzY4ZmUxMmVlMGU3Y2JhMjMyNzIxYzA1NiByZWxlYXNlMjQtbWFpbnQKKzQzNzM3IDcwOTI2NjI2YzZhMGEzNDAwMGU0NGYyYWU2Y2RjMzI4ZmY3OWU5YzEgc3RkbGliLWNsZWFudXAKKzQzNzM4IGJhOGYyNzY0YWE0YWMwOTAwMWZlODk5MzE4YmY0MDQxNzZmYjg1NjQgc3RkbGliLWNsZWFudXAKKzQzNzM5IGE4ZDQ5MjgyOTJkOGIyYjIyOGFiMGU1YTJhOTU4YjJhOGQyMDA4ZmIgbGVnYWN5LXRydW5rCis0Mzc0MCBlZGM2YTBjYzg0NjZiZTYxZWY0ZTE4ODExMTVlMWRhMjhlMDQyOTE5IGxlZ2FjeS10cnVuaworNDM3NDEgNDgzMTE0MDFhMjBlYTM2NmE1ZTE1ZmJhNzUzYjBkOTBhZGE3N2U3NyBsZWdhY3ktdHJ1bmsKKzQzNzQyIGYxYzQ0MDZiZjQ4MWVhZDIzNDU5YTJhN2ViM2EyNThmYWIxNmQwYjAgbGVnYWN5LXRydW5rCis0Mzc0MyBiMDUyOGU4YzZiNzg0NGQ5NTM2N2UyN2JkNzE2M2VmNDIzZTliOTg5IGxlZ2FjeS10cnVuaworNDM3NDQgMDM0MmM1ZjBmNGZmNjVjMzZmMmY4NWRiMGRmNjcyNTcwOTFiMzk2NSBsZWdhY3ktdHJ1bmsKKzQzNzQ2IDA0NmU2ZTM0ODM4MTc2OTU0MjdiMjRkODM5MGQ3ZjgwYjg2ZjZkM2MgbGVnYWN5LXRydW5rCis0Mzc0NyAyY2RmNTI3YjU4ZjZhMjlhYmJmNjE2MzIxOTNkZmZjMTRiYmM0NjEwIHJlbGVhc2UyNC1tYWludAorNDM3NDggMzk1OTgxMGJjNTQ5MTMyNjkyYzNmNDNhMmQ0YTNjZDQ3YzEzZjFiNiBsZWdhY3ktdHJ1bmsKKzQ1MjIxIDM2YmNiODNlY2JhZDUzZWI2M2UyM2RhNDM0MDQ5OTRjOGYwOTYwMTQgbGVnYWN5LXRydW5rCis0NTIyMyAyMzFlNDJkMDM2MmVkMjY3ZDNiMzUzMjU4NGE2Zjc0OTU5ODlhYjRhIGxlZ2FjeS10cnVuaworNDUyMjQgOWJkYTViYTQxNjc3Y2Y2YjMxNDAzZDVlYjRmOTU4OWRiNTgwZjhlOCBsZWdhY3ktdHJ1bmsKKzQ1MjI1IDZhZTRhZGVmYzU3M2I4ZWIwNmM5ZGFhNTU4ZTQ5ZWQ4OWI3NmQ4MzQgbGVnYWN5LXRydW5rCis0NTIyNiAyODZjODE2ODk4MjZjYWJiMTU3NzJmMmExOTIxYTg2NTA4NDQxYTQ2IGxlZ2FjeS10cnVuaworNDUyMjcgYTc4YmMwYmIzNDU5NjJlNjkwMjljZTNjMDk5MDg4OGIxNGFkY2E3OSBsZWdhY3ktdHJ1bmsKKzQ1MjI5IGViMGI5OTI3ZmZmZDAyNTI3NmE5NmRkYzI0MGFhZTI4NDhhOGM0OGUgbGVnYWN5LXRydW5rCis0NTIzMiBiZDM3NTc3NzkzMmQ5MWEzZmIwMDk0OTJiMjA4ZmRkYWY5N2VhNzA5IGxlZ2FjeS10cnVuaworNDUyMzMgMGYyZTg2ZDA4ZDhhZmYyMmYwOTI5YzdkOTkxN2I2ZDkwZDIxNWU5YSBsZWdhY3ktdHJ1bmsKKzQ1MjM0IDQyMDIzZjViN2Q2ZDFkZDczYjFlNDkxZTdmOTczMjFkOGEyOGRmYjcgbGVnYWN5LXRydW5rCis0NTIzNSBjNzgyY2Y2YjUxNmU0MmU4NzcxNGE5ZDdjNWZmNjU0N2JmM2EwN2Q4IGxlZ2FjeS10cnVuaworNDUyMzYgODA5NGNjMGM5OGQ3YTY0MmNhMzlhYTcwOWQwY2I4ODQ1OTdhNGQzNCBsZWdhY3ktdHJ1bmsKKzQ1MjM3IDMzNDIzYjg0NTU1NDA5NmIyMDIxYTNlMWZmOGE4NGMwOGM0MDBkN2MgbGVnYWN5LXRydW5rCis0NTIzOCAzZDYwMTUxMzkyYzIyNTdkNmI2YTU3OWRhMjk5ZjcwMTZmM2NmZmRhIGxlZ2FjeS10cnVuaworNDUyMzkgMjEzYzQxOThmZTIzZDliZDU4NTg1ZTYxZjM4YzQ3Mjc3MWE2NGNjYyBsZWdhY3ktdHJ1bmsKKzQ1MjQwIGI3NDQwYWI1Y2Q3MDZmNDkwZmFjODcwNDdiM2YyN2JiOTk5YWFhODYgbGVnYWN5LXRydW5rCis0NTI0MSA1YjM1MWRkN2QwODE1ZGUwZTIxOGI2N2Y4ZTVkMGM5YmVmZWYzOGUwIGxlZ2FjeS10cnVuaworNDUyNDIgMGJjM2Y3NGE0YTQ3MTg0MTllYjJjZTk2MGZhZDJlZTdjZGJiMWEyMCBsZWdhY3ktdHJ1bmsKKzQ1MjQzIDJlMjM0ZjRmZDc2Mzk5MDczNmRlNmQ0OWQ0MzYyMDk4MDdmNGE3NmMgbGVnYWN5LXRydW5rCis0NTI0NSBmNmExZjU1ZDNlNWNlNmJiOTNkYzg4ZTU4OGIxN2U4NDM2MjZlY2E3IGxlZ2FjeS10cnVuaworNDUyNDYgZGQwODVjMTNjNDlhNzVlODRiZjc1NmFiZTRkYjBlNmRhMmM2NjE0ZSBsZWdhY3ktdHJ1bmsKKzQ1MjQ3IGRjOWEzNmM4YjQ3MzBhYmM4ZjkzNWZlZGE2YTYzMTM0YjRkNDFkM2MgbGVnYWN5LXRydW5rCis0NTI0OCBkMTEzNjZmN2UxZTdhNTg2OTIxMjYwYTBhNWZjYWI5ZDM5MWM1OGMwIGxlZ2FjeS10cnVuaworNDUyNDkgN2NiNmEzMDQ0NjBmYzAwYWIwYjk0OGQ2OTg2ZTJiN2M3NWE3YjQ0OCBsZWdhY3ktdHJ1bmsKKzQ1MjUwIGUyOWNkZjg2NzhmZTk4ZTJkZjBkZTE3MGUzN2I5YzViY2MyMjk4NmYgbGVnYWN5LXRydW5rCis0NTI1MSAwMGJmOGYwMGVjNjMyNzU3MTg2YzU5MjBhYTU5M2RjYmU4ZTE1MzYyIGxlZ2FjeS10cnVuaworNDUyNTIgMDcyMDUwNjE1ZmMwYzE2NmNiN2Q1MGQ3NjRjZTc5M2ZlN2M1NmJiYyBsZWdhY3ktdHJ1bmsKKzQ1MjUzIGIxMTJkOGM3OTg4YzMxN2MwZGZhOWI2OTYyNTAwZWIxYmRhMzgxODYgbGVnYWN5LXRydW5rCis0NTI1NCAwYWY3ZjE4MDg3YTFmZmZhZjQyNzhhYzM2YjUwY2UxMTc3MzQwMjU2IGxlZ2FjeS10cnVuaworNDUyNTUgMWEzZTc5OWQwNjM0MWI0MTM5NTEyYTAxMDY5NWM2YWIxMzM0NzBhYSBsZWdhY3ktdHJ1bmsKKzQ1MjU2IDNiNGZkYzc1YmUxMmNlNzFhYTRlMTE5NWJjNjgwN2M5ZDY1MjZmZjEgbGVnYWN5LXRydW5rCis0NTI1NyAyOTI4NTRjNDNiOTliOWYzNTkxYWNmM2NlZjJkN2ZhOGE3YTYwYTJhIGxlZ2FjeS10cnVuaworNDUyNTggMWNlZDc5ZjA4MDUwOWM0NDRkZDUxNDExNTQ3YjcxMzEzMTgwOWEyNyBsZWdhY3ktdHJ1bmsKKzQ1MjU5IGE4NDE2YWQxYTVjNTljMzQwNzczZTVhNzg1MzdmMWJiMDZjN2QwYTggbGVnYWN5LXRydW5rCis0NTI2MCAxM2RkMzA5NzRhZDY5MTJlOWQxODY5MDE5YmJlZDdjM2Q2MGJmMjJkIHJlbGVhc2UyNC1tYWludAorNDUyNjEgYWVlZTg1YjZhNWRkODhhZDFlYzgxNTIzZGZlYTJkYWFkYjk0ZTE2MCBsZWdhY3ktdHJ1bmsKKzQ1MjYyIGY3N2RiYzBmOThlMzQzNTIxZmJkODQ2MzNlZDBmZGM3ZDc4ZDk2NjAgbGVnYWN5LXRydW5rCis0NTI2MyBhZGRlOWRlMTAyODdhZDQ1ZDk3MmI1ODZjZDdjNjQzYzdlOTZkNWVjIHJlbGVhc2UyNC1tYWludAorNDUyNjQgOTI0NTA0YjAwMTk2NDkwNDFmZDUzZWYyNzQyOWM4MGQ3ZDlkZTBmZSBsZWdhY3ktdHJ1bmsKKzQ1MjY1IGFlZDFjM2MzNWI4MzYzZTgzNTg3ZTkxMDEzMmExYzFkZjMxYTVjYzYgbGVnYWN5LXRydW5rCis0NTI2NiA2ZGQwZDhiNGJhYzU3NGNlNGQwNjg1MjlkYTlkYjE0YTkyMmUwNzc4IGxlZ2FjeS10cnVuaworNDUyNjcgMDU5MWQwMzIyZjA0YzI0ZGE1ZmI4YjczMThjMjdlZGNkZmI4MTVhMCBsZWdhY3ktdHJ1bmsKKzQ1MjY5IDFiMDc4NDkzZDUzODJiODNmNTMzMzY3ZmMyYWM1YmVkOWE3ZTRjZjcgbGVnYWN5LXRydW5rCis0NTI3MCAyYjJlOWMzODhmYmJlMjI1NTZjOThlZjk3MDdkMDMxNmZiZTY5YTQxIGxlZ2FjeS10cnVuaworNDUyNzEgNTZlMDBjOWI1MDExNzM0NjQ5MjBiNGNmNWU3YmZmNGMxYjYyNmY2MCBsZWdhY3ktdHJ1bmsKKzQ1MjcyIDQ0ZmIwM2E2YTUyNDk3MDg3ZTBlZDJiNjZjYjg3MzA5NmMwMjZmYjkgbGVnYWN5LXRydW5rCis0NTI3MyBjNGM1ZWViMDc3MzlhYjQxMDU1Mzc2ZWFlNTdlMzc0NjcxZjM0MDVhIGxlZ2FjeS10cnVuaworNDUyNzQgZjc2YjVkOTg3MzE0ZDc0NDc1ODBmNTVlN2FlOWVhZWFlMGU4NTk1YiBsZWdhY3ktdHJ1bmsKKzQ1Mjc1IGNhOTVhZDViMGZiYzYxZjllZDExNWVlNjAwODZkYTI3MjdlN2EzODcgbGVnYWN5LXRydW5rCis0NTI3NiAzOGFjYjkxODI0ZmNjNTczNTRmM2M3YmZiNWRjOGY4NWQzNjYzZjE2IGxlZ2FjeS10cnVuaworNDUyNzcgYzczMmY2NmM5MTNmZDM2MmJhYmExYzViMWE0YzA1ZDgyNjQyODEyNiBsZWdhY3ktdHJ1bmsKKzQ1Mjc4IGUwNzBjMzE2ZWI0NTU5YThmZTg5OTM0ZTAzYzZiNzU2MDZiNzVkMjQgbGVnYWN5LXRydW5rCis0NTI3OSBmNDQ4ZDAwNzU2OTFmOTUyZDdjZDRiZjhiMDkwYWNmZTRjYzA5ZGQwIGxlZ2FjeS10cnVuaworNDUyODAgNDgwYTU2MjVlMjg2OTIwMTc0NDcwMjE0NWQyNjVlNDk5OThiMGFmNiBsZWdhY3ktdHJ1bmsKKzQ1MjgxIGI3NGQzYWRiZjg4ODVlZmJkYTI0ZmU5MjhkMzFjMTZjZDk5N2ViYjkgbGVnYWN5LXRydW5rCis0NTI4MiBlNjBiMzE2NDdhNmIzMWQwN2ExNzUxNTk2NTc5ZTNhZGY2ZDg1NjQyIGxlZ2FjeS10cnVuaworNDUyODMgN2VkMGYwMDNiYTYzMTM2YTE1ODgyMDMxODdiZDYxZTMxZThjY2IwNCBsZWdhY3ktdHJ1bmsKKzQ1Mjg0IDdhZmFhNzUyYzc3MjA4ZTMzZjdkMGQ1Zjc2NTk2MGE2YTg4MzhjOGQgbGVnYWN5LXRydW5rCis0NTI4NSBjZDE5NWUwNzNkZDQ2NWQwZjVhMDBmYmUyYjg4NjEwNjQ2ZWU0NWVjIGxlZ2FjeS10cnVuaworNDUyODYgMGNhNTExMmUzZTEyOWEzZDA4NDUwOGQwZTU3YTc3ZTRkYzQyY2QwZiBsZWdhY3ktdHJ1bmsKKzQ1Mjg3IDcyY2ViMWIzMGQ0YmJjMjJhZWVkYzU1NzAyMzc0MzczZjE3NGI4ODkgbGVnYWN5LXRydW5rCis0NTI4OCAxOWQ5OWIzMTU1NWNlYmNmMGU4Y2Y0NjBlYTNmNjdkODhhNDU1NWMwIGxlZ2FjeS10cnVuaworNDUyODkgMWU5ZDdlNjZjMWJjZmE2YmFjY2ZkZjI1ODUxMDQ4MWFkMGNiMGVkNyBsZWdhY3ktdHJ1bmsKKzQ1MjkwIDg5NjhiMTI0MmYxODk5NGIzOWQzMTE0YTViZjUxYjY1YWIxOWM5Y2IgbGVnYWN5LXRydW5rCis0NTI5MSA2ZmJjMTFhMDNiY2MyYTNiNjg0OTdmYzUwMjI5OGQ3ZmVlYTExYjVlIGxlZ2FjeS10cnVuaworNDUyOTIgZjE5YWRkZDY5YWQ5MzlmMjBhNDUzNDJiN2RjYjdlZmJjMjg5NTA0MSBsZWdhY3ktdHJ1bmsKKzQ1MjkzIGI0M2E5NzAyNjQ3OTAzZjUyNDU5MmQ4M2RmOWFlNGY1MWQyODgwOGQgbGVnYWN5LXRydW5rCis0NTI5NCAxNTcxNzlkMmE0YzM1MjJlMmY0Nzc3NjFhNTlhYTM4MDQ3MDE2YmYxIGxlZ2FjeS10cnVuaworNDUyOTYgOGExODgwMzZiNzEzYjRhY2Y4MDFhOWU4NmQ3YzE0MjNlNjhkNGY3YyBsZWdhY3ktdHJ1bmsKKzQ1Mjk3IDJmZDZhZDU4MjIwMzJmYmE4YWU2ZDUyZDAwOGFhNTc5Mzk5OWEzMWIgbGVnYWN5LXRydW5rCis0NTI5OCBlODA4ZTJhZjkxZjYzNDliZDNkZmNmMWJiNzA2YWM0NzUzZTFlYTIzIGxlZ2FjeS10cnVuaworNDUyOTkgYzhhMDlmZDRmMTBkYTdlZTEwM2JkMTliM2JiZmZiMTk2OTY3ZDlmOSBsZWdhY3ktdHJ1bmsKKzQ1MzAwIGMyNmY1ZTIwNmRlNzlkNTQ4OWM0NTE4ZDRkZGRmYjA5NmFmYjk2MGIgbGVnYWN5LXRydW5rCis0NTMwMSBhNTM5MmJiMDc0NDAyOWNmMTViMTcxNzQ2ZTMxNzMyMWRlN2IzMTFhIHJlbGVhc2UyNC1tYWludAorNDUzMDIgMGRkMzJhNmIyOTY0ZTIzNDIxMDgxYzM3OTZlMjNlNWZkYjQ2ZTJlYyBsZWdhY3ktdHJ1bmsKKzQ1MzAzIDI4OTExNmE1MmJiMWU4ZTY3YTFkNzIyNTM0MTgxZWM0ZTEyYjVmMWUgbGVnYWN5LXRydW5rCis0NTMwNCAxZTEyZWM0OWRmOWI0ZGI5ODQzMDQ0ODQ4N2MwZDJiNTFkNzA2NjU5IHJlbGVhc2UyNC1tYWludAorNDUzMDUgMzk5YTlhNzIwOTVmOTMwYTIzMjNhNjY4M2U3N2FmOGUzOWZlZGIxZiBsZWdhY3ktdHJ1bmsKKzQ1MzA2IDE3ZjhhZGNjNzNlZDg2YjhmNThjMmQ3ZGJhNjMwMzA4NWNhMmQ1OWEgbGVnYWN5LXRydW5rCis0NTMwNyBhZjA1NmI2M2NlNTM2MDQzMGMxMDFmODFmNTg3ZTVjMDY2MTdmYjA1IGxlZ2FjeS10cnVuaworNDUzMDggODgzMWZkODIyYjYwNWRkYWJlYjhjODQ0M2IwNDIxZmIzYmU4MjcxMCBsZWdhY3ktdHJ1bmsKKzQ1MzA5IDc2OWM2MjYxMzU1ZTkzOWEyYmUwNmMzMGEyOTY3YjY0YTU0NjA0NTEgbGVnYWN5LXRydW5rCis0NTMxMCAyZThhYjc5N2NlYWY5ZDc0OGQ4NWNlZDJhYTVkY2I3ZDQ2NGE0NGJjIGxlZ2FjeS10cnVuaworNDUzMTEgOWE2YTAzNzVlZjIyOTVlYWY5MWQyMDM0NmFhYzIyOGFkMjc1N2VkYyByZWxlYXNlMjQtbWFpbnQKKzQ1MzEyIDY1ZWNiODNlYTdkZGZkMjMyZWU4MGUxYjQ5NDQ5YzNlYzRhNzU1Y2EgbGVnYWN5LXRydW5rCis0NTMxMyBiYzRmYmJiMmRiMzAwOWYwYWI3YzBmYTA4OWY2NzA5ZDUyNTBkYWJiIHJlbGVhc2UyNC1tYWludAorNDUzMTQgZmVkMjk3YzIwNjJkOTI4YTAwNDY1MDk5YjcxZGU1NjMzYjkxMjM2YyBsZWdhY3ktdHJ1bmsKKzQ1MzE1IDM2ZTE3NjJlYWQ4NmI4MGIwYWNmOTZkN2IyODU2NDIyMjY5ODhkYjggbGVnYWN5LXRydW5rCis0NTMxNiAyMmYyYzkyYTFkYTdmOTY1ZmFmY2NlZjY2MmNiNjY2YjBlOWNkY2E4IGxlZ2FjeS10cnVuaworNDUzMTcgYWQ0ODZlNDg3NWM2ZTE4M2I1MGYzMWQ3NzRiZDE4NmYxNGYzZTZmNiBsZWdhY3ktdHJ1bmsKKzQ1MzE4IGM2ZTExZjgwNGQwMGY3NjNmNDAxNWY4ODJhMzVlMzU5YWNjNzU5M2IgbGVnYWN5LXRydW5rCis0NTMxOSAyYzA2NTg4YWU2OWU2MjgyZWZmZGU1YzY2MzBlYTY5OWU0ZjZjYzZmIGxlZ2FjeS10cnVuaworNDUzMjAgNDIyY2RkMjRhZjQ2YzQ3NGU0Mzk3NGUyNjc3NjQxNDNkMTI5NjI4YyByZWxlYXNlMjQtbWFpbnQKKzQ1MzIxIDEwZTQ3ZjI3ZWEzOWZhMDc2ODZiMGQ2MGI2NWEwOWNkMTg0Mjc3ZWMgbGVnYWN5LXRydW5rCis0NTMyMiA0NTUxZGE4NDc2NTFhY2MyNjFhMzNiZjJjZmVlN2VhNTgxMDA0YTAwIHJlbGVhc2UyNC1tYWludAorNDUzMjQgMjFmY2M4NmU0ODIwODJiZWM2YmQ4ZDNkMTlkNTMxNWMwMjU0MDYyOCBsZWdhY3ktdHJ1bmsKKzQ1MzI1IDhjOTk4Yzc2MDE5MTBlZDRlY2E1M2U4YTAzMjBlYmI4YTBhOGQxYzYgbGVnYWN5LXRydW5rCis0NTMyNiA3NGQwNDgzOGNkMTEyNzRmYTYxNTM4MDIwOGJjMzZiYTdjODg3ZDBhIHJlbGVhc2UyNC1tYWludAorNDUzMjcgYjVmODk5YzE4N2Q0YzVjZTdhMTdkYTE2OWQ5YTViMzA1NTk5NDdmNiBsZWdhY3ktdHJ1bmsKKzQ1MzI4IDEyNTY3MTg5ZWYyNTcxZmRmYTk2MmRmMzg1YjJhMjcxNDZhMTZmOTIgbGVnYWN5LXRydW5rCis0NTMyOSBkZWMyNTllNGQ4OTE2YzY1ZDAwMDVhZTI0MGYwMzc4Y2FjNWI3ZTI4IGxlZ2FjeS10cnVuaworNDUzMzAgMmYzZjJlMzJkZmQ5ZDc2ZTcxOTg2M2VlMTViZWIwMTE5OTFhYmNkNiBsZWdhY3ktdHJ1bmsKKzQ1MzMxIDdkZjBjNDRmMzk4NjIzNjk4ZGNmMzBmYjhlNzM3MDQxYzc5ZTg2MWQgbGVnYWN5LXRydW5rCis0NTMzMiBiNjMxOWE2OTlkYWJhMWQ1OWVlOTYwMmI5NDkwMGEzMjQwOGQ1MDU3IGxlZ2FjeS10cnVuaworNDUzMzMgMmMwODRkODFjOTUxNDAxZGQwOWUwM2VhZDgyMWYyZjViZjJkZmMzOSBsZWdhY3ktdHJ1bmsKKzQ1MzM0IDA1NGFjZWRmM2MwZDkwYzE0NDE5YjlkZTAxNDgwYTE4ZDQ0YmI5MmIgbGVnYWN5LXRydW5rCis0NTMzNSBmNDViYzI0MWUyMDAwYjJlYTJjN2UzNjE2MWNhMjE1NGVlNzE1ZWQ5IGxlZ2FjeS10cnVuaworNDUzMzYgYjFjNmEzODY0YjFlOGMxNjkwOGVhNzMwYzlkZmFjZDAzMjJlNzQ4ZCBsZWdhY3ktdHJ1bmsKKzQ1MzM3IDA2NzhjZTlmYjZiMmIxMTEwZmI2YjY2OTNlMjM5NmFiMTVjNjVmMGUgbGVnYWN5LXRydW5rCis0NTMzOCBhODQwZTliYWZmOTZjYzk3MjU2ZGFjMmU1ZjRkMDFkMjY2MWZmNjgxIGxlZ2FjeS10cnVuaworNDUzMzkgZDEzZGVkOTE2NWVjNDQxNDFmMDgwYTE2OTE5NTQwMDZiMmUzYjRmYSBsZWdhY3ktdHJ1bmsKKzQ1MzQwIDY2Njc2YThlY2I1MmNlNGMwMzIwZDA1Y2U0ODY4NmJmMzJhZGRmYzIgcmVsZWFzZTI0LW1haW50Cis0NTM0MSA1YTlmY2Q2NzZiM2ZlOWVkMTA4NzFkY2ViZTFmMjMzZmU5MTdiMWQwIGxlZ2FjeS10cnVuaworNDUzNDIgYjE3MjRlOTI2ZTA3YzQ2OTVmNGQwZTU1YjRkOTg4ZjRjYzAwNDZiYSBsZWdhY3ktdHJ1bmsKKzQ1MzQzIDQzNDJlNDQxYjExY2NiNTUwMjhhNWIzY2YyMDAwNzNjMmYzZWI2MzcgbGVnYWN5LXRydW5rCis0NTM0NCBiOTNjMDU5NjBhMTVmYWI2YzdmODZhY2ZmZmVmMjQ1ODJjMzViMzQ4IGxlZ2FjeS10cnVuaworNDUzNDUgMzZiZmU0NmM1YzZhNjNjYmE5MWY2MzNkOTBjMWQzM2RiMGM3ODhjMyBsZWdhY3ktdHJ1bmsKKzQ1MzQ2IDNmOTczOWRlNjYwMzMzNTNjMzg0NWMyNzgxYjEzYjg0YWY0MTgxMjYgbGVnYWN5LXRydW5rCis0NTM0NyAwYTI4ZjE1Nzg3NWUyYzExNDRmODkyMTZiNjEzYzM0Y2U5NTI5MGYyIGxlZ2FjeS10cnVuaworNDUzNDggNjA2ODE4YzMzZTUwZmU2NzIzMDgzMGRkNzU1YjQ4NGRlZmZmZjgwMiBsZWdhY3ktdHJ1bmsKKzQ1MzQ5IGE0MjMxYWEzMjAxYWUxYTM5NGVlNjQzYzVhNDdjN2MxOTRmNjg0Y2EgbGVnYWN5LXRydW5rCis0NTM1MCA4NmRiNmRmMjQxNzQ0OGRhYWMwYTQyZmI1ZDhiODZlYTAwMDk5YjNmIGxlZ2FjeS10cnVuaworNDUzNTEgM2EzOWVkNTk3YjY4YWFmNzYwMzAwOGIzZDQ4NjJiZTg5M2FhZmIxYyBsZWdhY3ktdHJ1bmsKKzQ1MzUyIGU3OTVkNmM4NmE1ZWRlOTg0MWEwYWFhNGNmOTczYWNjMWU4NzllNGIgbGVnYWN5LXRydW5rCis0NTM1MyAzMGQ2YjllYWYwMmRiOGUyOWYzZmFmNjNlYTliMjljZGMyMzVlYWMxIGxlZ2FjeS10cnVuaworNDUzNTQgNTg2NDA5ODNmZDY2YzY5ZTc5YmU5MzEzNzI1ZTU3ZTk3NTY3NWVkNSBsZWdhY3ktdHJ1bmsKKzQ1MzU1IGZlODhlMDFmZjZkZThiNDkyN2JkODcyZTk5MWVlZGRmMmE5YzFkZDAgbGVnYWN5LXRydW5rCis0NTM1NiAyM2VkZjI5MGI2NzZmMjBiOGQ1NTAwNzg4ZWI5YWQyYTk3NzA3ZGQ2IGxlZ2FjeS10cnVuaworNDUzNTcgNWE0Yjk2NDEyMzJmODVmZmM1MDg5OWIxNzA5NGEzZTczNjY2YjY3ZSByZWxlYXNlMjQtbWFpbnQKKzQ1MzU4IDQxMzNlODQxZjBjYjkxZGQxODUyNGY0ZWY3YTFhNWUzOWFmODkwZWIgbGVnYWN5LXRydW5rCis0NTM1OSAzOTliMTE5YzA1OGExYjk2Y2U0MjZiZWI0OWVhYjA0MTYyMzRjYmI5IGxlZ2FjeS10cnVuaworNDUzNjAgNWU3MmIwYzc0MTAwZDc1MGQzYTlkZTlmMDU4OTUxNzBkNTNhYjI0NCBsZWdhY3ktdHJ1bmsKKzQ1MzYxIDk1M2ViM2RjMThlNTQzMWYxMDQ2NTcyMzllYjk5NzNhNzUzNmY1NjkgbGVnYWN5LXRydW5rCis0NTM2MiA5OTc1MTI4OWVhMDNiYWQzNWY1OTllODE1ZWFiYTA2ODc4NTg3MWE3IGxlZ2FjeS10cnVuaworNDUzNjMgYjM1MGU5ZDc5MWU2ZTJlZjczMGVmMjc3ZWU0NzI5OTM2NGI3NWRlOSBsZWdhY3ktdHJ1bmsKKzQ1MzY0IDFiNWIxNmNkYmUwZTFhMGJjYmIzNzQyNmQ2MmZjYzUzNDljZDYzNjMgbGVnYWN5LXRydW5rCis0NTM2NyA3NTFmN2M3OWI1ZmQxNDU5NDI1OGM1YzAxM2Q2NjNiZTU1NTk2MTZlIGxlZ2FjeS10cnVuaworNDUzNjggZWFjODNmZWViMTFmNmM4Y2I0MjI4MGFlOTgwNWJlYzI4MTdiMGIxYiBsZWdhY3ktdHJ1bmsKKzQ1MzY5IDRkN2IyMjM3ZmEwN2YzNzFmODlmZTk1OTA3NWY2MGY2M2ViMWY5OTQgcmVsZWFzZTI0LW1haW50Cis0NTM3MCAzMDhlMmU4ZWQ2NzY2MWEyMmM4OWI5YTE0NTllMmMyOTljMzZlY2FiIGxlZ2FjeS10cnVuaworNDUzNzEgOTFhZWM0NzQ2MjE4NWRlNDM3NDI4YTMyZTM0Y2JjOTE4MDRlOTBlNyBsZWdhY3ktdHJ1bmsKKzQ1MzcyIGFjNzllOTAzN2UwNmNmMzZkMmY5M2RiYjY5NDM3MGRlMWFlNTE0YWMgbGVnYWN5LXRydW5rCis0NTM3MyA3MjA0NzQ4YzI5MjE1ZDhjZjRkNjViYmQ2Nzg1MzgxZTc1NWIyZGE1IGxlZ2FjeS10cnVuaworNDUzNzQgN2VlNDA2OGUyYzYyYTI1MGUyYTllZWMyYmY5OGJiMDkyM2RkNmQwYSBsZWdhY3ktdHJ1bmsKKzQ1Mzc1IDI1NGNjY2I3ZWYxNzY5OWQ5YzgzMTYwMGJjYTg3ZTljN2NkYmE0OTEgbGVnYWN5LXRydW5rCis0NTM3NiBlMDU3YWYyZGZmY2VjMzE4ZTA3ZTFjMDExMzcwOTYxYmY2MzBmNzI4IGxlZ2FjeS10cnVuaworNDUzNzcgZmJjZGY3YzBjYzc0ZDMxMzVjYmUzZTQ4NWQyOGNkZTc3MTU0YTZjNCBsZWdhY3ktdHJ1bmsKKzQ1Mzc4IDBhMGQ4OWQ3MTBhNGRmMTViZTYyYzVmZGVkMTE4OWUwNTAxYWExMzMgbGVnYWN5LXRydW5rCis0NTM3OSA5YjIyZDhiN2JjYWFjNDMzNTYxODBlNjBmNmQ5NzUyYTI2ZjQ5OThjIGxlZ2FjeS10cnVuaworNDUzODAgZWU1NzM0OTc0NGYzNzExYWIzZGUwZTBjNmZhZWMyZDg5NjM5YzkyYyBsZWdhY3ktdHJ1bmsKKzQ1MzgxIGJiM2Y5MDc2ZDA3OWM1ZjQ0M2VlYzFkNTcyYzA4NjI5ZTZjY2YxMTUgcDN5aworNDUzODIgOTE1MGUyNjBjNDE3NGE3NTk5NDA4M2FkNWU1YWZhNDZlZDU4Njc0ZiBsZWdhY3ktdHJ1bmsKKzQ1Mzg0IGQ3MWYyNmU2NDQ4OWViMWY3ZWQzOTRmYTg3YWZjNWFkZTAyMzU2MGUgbGVnYWN5LXRydW5rCis0NTM4NSA3ODZkMDM1NmRlNTEzYTJmYjM0ZjFlMDI0ODk3MGFlZGZhNzEwNTdhIGxlZ2FjeS10cnVuaworNDUzODYgMjMwZmZmNmUwNjE4ZDI0MWIxZWMyNzZiNjhlZTdmNzIzMGI4ZWEwZiBsZWdhY3ktdHJ1bmsKKzQ1Mzg3IDM3YThlYjc0YzUwNDY1MTM2YzU1NDZhOTlhZGZjNmY5M2Q4ZTdhODEgbGVnYWN5LXRydW5rCis0NTM4OCBjY2IzYWY0OWJjYjMwMWM3MjVmYTg1OTFhMzUxYjI2MTllZGQyZWJjIGxlZ2FjeS10cnVuaworNDUzODkgMjMzYjEwZWNmY2VmNjYyZWViOWYxY2E5NGE1MmJjMjI2N2U1NzFkNCBsZWdhY3ktdHJ1bmsKKzQ1MzkwIDliZWYxZGViY2JhYTdmNzc2OTUzMjRhMjkxNWUyMjJiYjNhOTljNjkgbGVnYWN5LXRydW5rCis0NTM5MSA5MWQxNmE4N2NiZThlYTc2ZTcyODI1Yjk3ZjAzZGI4ZjNkY2FjMTNmIGxlZ2FjeS10cnVuaworNDUzOTIgZWM5ODZhYWJlMWZkZWYyNzEwM2FmYTUxNzgzYTlkOWVmYjc2YTExMCBsZWdhY3ktdHJ1bmsKKzQ1MzkzIGFmZTU2YjliNjY0YjI0MTc3NmM1NDUzOGViYWUyZjhkMWMwNTA5MDcgbGVnYWN5LXRydW5rCis0NTM5NCAxZDVhNGM4MjA2MWU2OGRhM2NkMWQ4ZDgyOTEzOTJhODg3Mjk1N2IwIGxlZ2FjeS10cnVuaworNDUzOTUgZDdkYzAwODVkZDg1YzhjNDY0NTAwNzMzYWIzYzk4MGY5MjJhMGU0OCBsZWdhY3ktdHJ1bmsKKzQ1Mzk2IGFmNDdkYTVlOWNlMTRkYjRhY2UyMjBhYjlmZGEwOGUwNDhhZTMwOTggbGVnYWN5LXRydW5rCis0NTQwMSBjZjcxYzM4MTRiMGIzMTc3YzljMDI5MDk0MWFjMmI5YmJlYTAwNjRhIGxlZ2FjeS10cnVuaworNDU0MDIgMTM2NmJmYTA4NGVlNzE3MWE0ZjAyNzgxYmJlOTc5YmE4OWRkZTVjNSBsZWdhY3ktdHJ1bmsKKzQ1NDA2IDg1NmJlZTE1MDBiYmNkZWFjMDE2NmE2MzA5ZTM3ZjM4MTdhZjA3ZjYgbGVnYWN5LXRydW5rCis0NTQwNyA2NDQxZjZmYTY1NzFhN2QyYmEyNjUwZjNmMzRlNmU5MTM4MGVjMzYzIGxlZ2FjeS10cnVuaworNDU0MDggYjk0MGFjNGY5NTU4NmFiYzBhNzg0YWEzNWE0MmM5ZWVhZTJkNmU5ZiBsZWdhY3ktdHJ1bmsKKzQ1NDA5IDMxOTI5ZGEwYjA1YWZhMTI5NTQ2MTdlNDEwZTM4NWU2NmJmNDhlNTMgbGVnYWN5LXRydW5rCis0NTQxMCA2ZTlhYjg3YzYwOGNkOTA1NTM3YTlmY2IwN2RkNTIxOTY5NjYwMjY2IGxlZ2FjeS10cnVuaworNDU0MTEgMjdhNjM5YzQ0NzFhNGUwMDczYjYwOWQwZjZmZTkxZWU2NWMzMzEzNiBsZWdhY3ktdHJ1bmsKKzQ1NDEyIDYyYzkwMzhhNTc4YThhOTIyN2U3MmMwYmUxMTJjNzlhNDIxYzQyZjMgbGVnYWN5LXRydW5rCis0NTQxMyA1ODhmOTdiMjRiZjllMWZmNjU2NzA0YWQ0MzlkMjUyM2ZmNjVkMzkwIGxlZ2FjeS10cnVuaworNDU0MTQgYzZkZjVlNzk1NDIzMDM5YzM4NDhlYWJjNTc5MTEyNjYxNWIwY2JhMCBsZWdhY3ktdHJ1bmsKKzQ1NDE3IDUzMDQwNTllN2RlM2IxYjMzYjI0MDJmZDkwOTEyMmRkOWNkYThkZjMgbGVnYWN5LXRydW5rCis0NTQxOCA5YjE2ZTgxNjFkZjc3N2QxMDE4NmViOTg2MzU4ODVjYmEyYzIwMDUyIHJlbGVhc2UyNC1tYWludAorNDU0MTkgYmZjNDhhZDgxZTgwNGNiMjVkNjU5MzI5NDY3MjBmNTg4NWM3MmQ4NiBsZWdhY3ktdHJ1bmsKKzQ1NDIwIDlmODIxMDMyNTRmYTRlYmVjNTE3OGM0MGFiZWEwMzYwYTEzMzUzMjYgcmVsZWFzZTI0LW1haW50Cis0NTQyMSA0YzZkNDY5OGExMTVkYzc3NzQ1MDJlZjFhNTI3MjU5NGQ4MDJiYmZhIGxlZ2FjeS10cnVuaworNDU0MjIgMDVhZjM5YTkwNzU0MzVkZmIxZmJhNDY2YTkwOWMwZjNjOTMwZDUwZiBwM3lrCis0NTQyMyBiMDI3MGM2ODA0MmVkNDc4NGFjZWM3YWUwMWYxMDg2NjdiODQ5MTZhIHAzeWsKKzQ1NDI0IDBhMTNhOTY1ODVjM2QzNjc2MjkwNjJkZWJlZGEyMGM3MjI0Zjc4NzcgcDN5aworNDU0MjUgNGNjMzRhZjAxOWQyYzI2M2I3NjBmYTFlODc5NTYyYjZmNDc1MTUxMyBwM3lrCis0NTQyNiBmYjJhZmYxODYyZTQ2ZjE4ZDJjY2JiMDJhZGU1NTU1NmJjODVlNmNmIHAzeWsKKzQ1NDI3IDhkYWFlN2JhMDc4YTU1NDUzYWJjNDgwODUxMWI4NTgzNTMzNTEzYjEgcDN5aworNDU0MjggYTY3ZjIxNThkNjFiMWFlYWZmOWJjMzc4YTU3YTc1OWVlMzY2MjJiNyBwM3lrCis0NTQyOSBjNDdjY2NjYTBiZjQzODZmODVlMDZkODU0NTAwNGMzOWJmZTRhZWVmIHAzeWsKKzQ1NDMwIDdjYWU2MjJlZGNjOTc4ZDQxZDMxOGMzYjk3MzJiYTYwY2QwODI5ZDQgcDN5aworNDU0MzEgYTVjOTc3ZTZmNWRhMTQ4YmU3ODM2YzlkOGY1ZDVjMDBiZGJkODQxYyBwM3lrCis0NTQzMiAzNTNmZTA2ZGFiNWIzNzI1YzdhNTA0ZmM1ZWNhM2NiZGQ3NmM0MjRjIGxlZ2FjeS10cnVuaworNDU0MzMgNjM2Y2E4MGE4Y2JlZGM3MDViZTZjNDdmZDAxNThkMTg5M2ZlMjllZCBsZWdhY3ktdHJ1bmsKKzQ1NDM0IGE1OTAyZTBlYzA3YzhiYTg2OWU5Yjc3NWM3OTRjNTEwZDU4MTgxMjkgbGVnYWN5LXRydW5rCis0NTQzNSBkMTU0NzQyNmFiNjEwNmVjYWQyZDNiYjBlZjM2MGY0N2Y2Yzc0NGE5IGxlZ2FjeS10cnVuaworNDU0MzYgMjQwMDk4OTM1Y2Q1ZWJkMThkZGEzMGQxZmY0OWQ4ZTJiOGQxZWVjNyBsZWdhY3ktdHJ1bmsKKzQ1NDM3IDYzMTQ1YzA2ZGVlZWI0ODNmMzRiZjkyODFjMDljNGExZDZhNmQwZWEgbGVnYWN5LXRydW5rCis0NTQzOCAxZDAyMzc0ZjRjN2UxYTVhNDYyMjFjMDZkMWU4Njc1MWQ5OWY3NDgwIGxlZ2FjeS10cnVuaworNDU0MzkgN2Y3Mjc5MWYwYWVjMzJmNjkwNDc4N2E3MmI5NzNhNzc5YjdkNjYyNyBsZWdhY3ktdHJ1bmsKKzQ1NDQwIGFiZjgyNDYxZTZiNGRmNTFmNTExN2YxMjUzNjMxODUyZjE2Yzg1YTMgbGVnYWN5LXRydW5rCis0NTQ0MSA5ZTM4MmYyZjQzOWQ5Nzc1MjMwNjZlNmY1YWQ3YTgxMGI3ZmNkMTFjIGxlZ2FjeS10cnVuaworNDU0NDIgYjczNzNiYzNiMDlmMzM5MmJiYTMyNjJkMTJjZWY3MGE1ZTcxNDQ0NiBsZWdhY3ktdHJ1bmsKKzQ1NDQzIDdiMmU0MzZhNGEyMTFjMmU1N2JmNGE4NGJlMjFmMWE1Y2FjYWM5YjkgbGVnYWN5LXRydW5rCis0NTQ0NCBlMTM4OGFiYTk4OTYyM2NhMDE2YzY3OWY0YjRjNmE2Yzc1ZjM0ZjZkIGxlZ2FjeS10cnVuaworNDU0NDUgOWI3OGRjMDdiMTcwY2M2NjUwNTk0OTYwMTRkZjEwMzYwMjMxNGRmNyBsZWdhY3ktdHJ1bmsKKzQ1NDQ2IDM1M2I1OTY1MWU0NTBlMTQyNjI0MDk0MTQwZTRhNDQzMzJmNDI0MmYgbGVnYWN5LXRydW5rCis0NTQ0NyA5ZWI0ZGMxY2M4M2U3YTYzMTI0YWI4Y2M4MmM4ZmNiMDM5MzcyM2U2IGxlZ2FjeS10cnVuaworNDU0NDggODMzZjM4NGViZDQxYjYzMDJmMmI3MWRkMzc2ZDYyODBmODY0YzU5MSBsZWdhY3ktdHJ1bmsKKzQ1NDQ5IGEzOWNjODRmZjE4NTZjN2FjYzViYzc4MWM2Nzg2MmI3MGM3MDNmZmQgbGVnYWN5LXRydW5rCis0NTQ1MCBiN2EzOTcyZTk5MTU3MjdlOTczYTg0Njg0ZjIwY2NhZDVlNGRhMzk1IGxlZ2FjeS10cnVuaworNDU0NTEgOTZhZGRhYTI1ODY5NzBiMDgwOThmOGRlYTVkMjI3M2UwNzY1ZjA3ZCBsZWdhY3ktdHJ1bmsKKzQ1NDUyIDBhNTRjMTVhYTE0M2M0ZDYwMDIwODEzNmQwMWU3NzZiOTg2N2E2NTggbGVnYWN5LXRydW5rCis0NTQ1MyBmMWM5ODUzZGYwZjdkNGFlNmE0ZGI0OTdjMmViYWFmN2JiZDAwZjZhIGxlZ2FjeS10cnVuaworNDU0NTQgN2NjMzE1MTZmODI1OGZmMTYyODgwMTA3ZGRiZDNhYzZlYTc0NzFmOSBsZWdhY3ktdHJ1bmsKKzQ1NDU1IDM4ZDE3ZDUxZWE5NWQ0NDg3NTA0MWI4OWMwNTAxNjdmMmM3NTE2MGIgbGVnYWN5LXRydW5rCis0NTQ1NiAwMWU1MWY1ZGI4ODFiODViYTFlN2FjOWRkMTM2NTkxMzg0NTllYWM0IGxlZ2FjeS10cnVuaworNDU0NTcgMzFkY2MzMTExMTMzYmU3MDE4ZGMwNGYyZDIxZjdhOGFiNjFiY2NkNyBsZWdhY3ktdHJ1bmsKKzQ1NDU4IDA4NGQxODhlN2RiZWY3YWVkNjk5YWIyN2IwYzcwOGZiNjk3OTY1YmUgbGVnYWN5LXRydW5rCis0NTQ1OSBiOTBhN2M2MDIxYmNjNDIzODJkYTY4OGY0ZjVhZDBiNDQyNjgzMTQ3IGxlZ2FjeS10cnVuaworNDU0NjAgNjA0YzliY2IzMDZjNmQyNmJkMzFiMjJiOTY2NzlmMjA4YWNkMGIyYiBsZWdhY3ktdHJ1bmsKKzQ1NDYxIDViYjZlNTRmOTQwOGY2MTc2YzkwNTlkN2YzYjlkNmVkYjY5ZDI1MWMgbGVnYWN5LXRydW5rCis0NTQ2MiBkOGIyM2JhNGEyNzRlY2Y0ZWQ3NmRkYzU4ZWYwMDM5MTQyZjJiYTc4IGxlZ2FjeS10cnVuaworNDU0NjUgYjAwNDRiYjRkZjJhZWRjZmJmMzExZGY1OTkxZDljZGI1ZDUyYmFiNyBsZWdhY3ktdHJ1bmsKKzQ1NDY2IGQ0YWU1YTI2MTU3ODgyZTFkMTBmNzlhNDI2NmQ5ZjVmOTE5YjA1ZDggcmVsZWFzZTI0LW1haW50Cis0NTQ2NyBiZTIzOGNiMjZkMzI1ZTM1ODMyZDdlOWUxYWU1MGRjYzE4NTNhNDcyIGxlZ2FjeS10cnVuaworNDU0NjggN2JiYjliNWY3YWRjZmQ4ZTE5OTQ0NjU1NDFiNzg0NzhmOGU2MmMzOSBsZWdhY3ktdHJ1bmsKKzQ1NDY5IGI5NWI1YzMzY2IzYTUzMzFiZWE3YzVhYzVmN2UzMTkzMDBhNWRhYzMgbGVnYWN5LXRydW5rCis0NTQ3MCAzMDBiZjFjNGRlZWRlN2MxZDNlYWY3Yzc1ZmU5MmYzNTg4ZGFmNjE5IGxlZ2FjeS10cnVuaworNDU0NzEgZGRmOGM5MTQ1ZjEzNjNlODJmOGM0M2M3YjBhMDlmYmRkM2E5MGFlOCBsZWdhY3ktdHJ1bmsKKzQ1NDcyIGI1ZmNlZjE1ODEzM2E5NzZmNjFmYWJlNjUyZjM4MzFiNTQ2ZDNmOTIgbGVnYWN5LXRydW5rCis0NTQ3MyBlMjM5ZDc0NWM2NDc0MDM3NjAwY2ExNDgzZGEyYzY1ZjFjOGE3ZDUzIGxlZ2FjeS10cnVuaworNDU0NzQgMmM3NmY3MWIyMjNkZTc1YTg4Y2FmOWZjZTY3MTJlMmYyZDkyNTMzNiBsZWdhY3ktdHJ1bmsKKzQ1NDc1IDVjNDUzMzAyZDVmNmEwZWM0MjE0OWFhNjZlN2M1ZDRlNDIxOGNjMGEgbGVnYWN5LXRydW5rCis0NTQ3NiBlYzAwYjc5OGFiNTY5ZWFlODQ3ZWI2ZjZhYzg3ZjE3OGIwZDU4ZWJhIGxlZ2FjeS10cnVuaworNDU0NzcgMzM1MjIzNDIyMTk5Y2U0MzMyODY4ODA2ZjJhODJmZGQwMTE1YjgzMyBsZWdhY3ktdHJ1bmsKKzQ1NDc4IGRkYTdjYzg4YzA1YWFiYzA2MWI5Yjk1ZmM4MTlhYmY0MTU4MzExZGQgbGVnYWN5LXRydW5rCis0NTQ3OSBjMDQxMzZhODA2MmExZGJkNTI1ZjgzYjZhZWE2MWJkYzcwYzhiMjhiIGxlZ2FjeS10cnVuaworNDU0ODAgMzg0ZTkxMjAyNTc4ZjkxNzA1ZGQxMGE5ODMyZWMzNDJmNDcyOWY2YyBsZWdhY3ktdHJ1bmsKKzQ1NDgxIGU4MTliODZhMTUwNmEwMzczNTEzZTMyNmIyYzI5MmFmZjkxOTg5YjMgbGVnYWN5LXRydW5rCis0NTQ4MiBjOTRkNzcwNTA4NWE1NDVjM2Y4MWQ3NmE1NWU4ZmIyYWNhOGQ4NTQxIGxlZ2FjeS10cnVuaworNDU0ODMgMTljMWJhYzE1YmRlYTE0ODczMGQ0OWNiYTMwNTRiYzk3M2Q1YTA0MCBsZWdhY3ktdHJ1bmsKKzQ1NDg0IGIzNzQxNDBlNDY3ZDJlOWEzZmExYjI1OWU3ODVhY2ZhZjQxOTRkNzUgbGVnYWN5LXRydW5rCis0NTQ4NSBmNzk5MWNlNDMxZTUyZWY2NzA3YTVlOWNiNWFiMDI5ZjUwZGNmNjI3IHAzeWsKKzQ1NDg2IDZmMzVmN2JlMzZjM2Q0NWY3OTM4MTM2ZWU3NzQyMTk0NTE5ZDY4YTAgbGVnYWN5LXRydW5rCis0NTQ4NyA4MWJmNGQzNzhiOWU2NzlkNzA0M2I2YjM3ZmI4YTJhZDJhYzBkNzdkIGxlZ2FjeS10cnVuaworNDU0ODggNzAyZDU5N2YyZjY4OWMyY2ZkNGE5YmVmODA3MTdjMTFmNzc5MzBiYiBsZWdhY3ktdHJ1bmsKKzQ1NDg5IGYxMTdhNWZkZTRlNTliZGFlY2EyMGU0ODIwZDRiZGU0N2RhMDE1ZDEgbGVnYWN5LXRydW5rCis0NTQ5MCA0ZDgyMDkzZTJlMTk3ODM2NzE2NmQyZTM4ODczMDcyYTg5MjY0ODVhIGxlZ2FjeS10cnVuaworNDU0OTEgZmJiYzBiZWZmZmY3NzhmYTlhMzhhOGI5MDZhYTk4ZWY5NGJiNDA4ZiBsZWdhY3ktdHJ1bmsKKzQ1NDkyIDE5ZDI0NzdjMTI4MzE2OGI4MTM1MWM5ZTk1OTYwZGIzOGY1MjU4MDYgbGVnYWN5LXRydW5rCis0NTQ5MyA2Y2ZlNDhlNjcyYzRlMDhiODRhZjQ3OWY5ZDA1M2M3NGI2MjNhYjIyIGxlZ2FjeS10cnVuaworNDU0OTQgZWZlNzQ5MjI1YmFlMmM2NTJmODE5OGM1NTg4MGJmMDdhYzM1ZGY0OCBsZWdhY3ktdHJ1bmsKKzQ1NDk1IGRmOWVjYWNiMGJmNjdjMGE1Mzg0MmNhNDZmZDZlYmY4YmI3YWMyZmQgbGVnYWN5LXRydW5rCis0NTQ5NiA1ZjQ1N2Y0MjZkOTE2YzE5OWRhYmYxY2I1MjJkYjM2NzllYTFlOTQyIGxlZ2FjeS10cnVuaworNDU0OTcgY2NjMGI1NDEyNzk5ZWE5MTFhOTM2ZDdhOTM2NDgzN2MwNjJiNjg1YyBsZWdhY3ktdHJ1bmsKKzQ1NDk4IDA4NmQ4NDM0YzdmN2RjMjQ4ODI5NmQwYzg3MDQxZDM0MWRhYTE1MGEgbGVnYWN5LXRydW5rCis0NTQ5OSA1OTk3ZDdjZWQxN2Q3ZGZmMzc4ZmIzMjEyZjgxNjdjOGYwMmRmZmUxIHJlbGVhc2UyNC1tYWludAorNDU1MDAgNmQ4ZTNlNjU5NDdmMmEyNTliYzFlMGQ5NmNjNmNiZDZmNTNkZTdmNiBwM3lrCis0NTUwMSA5Mjc0ODc5ZjA0ODQyOGI4Y2U2ODU2OTJiMWUxMzFkYWNjNjk3MDM4IHAzeWsKKzQ1NTAyIDg1Njk1ZGU2MDQ5ZTAxM2QwNGFmOWRlM2IxMWU1OThmN2MxYTM0YTAgbGVnYWN5LXRydW5rCis0NTUwMyA4NjI1ZTRhNWNlNGQwYmRhNDUyMTc4OTE0N2JhYzYwNGMxNzRmMjI0IGxlZ2FjeS10cnVuaworNDU1MDQgMjBjYjEzYmRmMWYwMDlkNWU5Y2Y3ZDYyYTdkNzA4MTIxMzA2NjQ0MiBsZWdhY3ktdHJ1bmsKKzQ1NTA1IGFjYjYxODM2ZjdmYWFkOWQxMzZjOGQwNDFmMTYwMjBmMzE5NWU4NzEgbGVnYWN5LXRydW5rCis0NTUwNiBjYzkxOTI1MDViNDA1YmM5YzcyMjZmZGJkMjU2YWY1ZWMyNzUzZmIyIGxlZ2FjeS10cnVuaworNDU1MDcgMmUzMjc2ZGMyMzFmNzYwNWUzZGIzM2QxNDNlMmVkNTBjOGU0NTliZiBsZWdhY3ktdHJ1bmsKKzQ1NTA4IDYxYWMxZTMyMmRhNzZkOTdlZTMwN2QxNDllN2ZiMjIwNjY1MDBkZWYgbGVnYWN5LXRydW5rCis0NTUwOSA2ZWI4NmE3MWY1YzgxNjczY2FkMjdmZjI5NWJmOTg1NDUzZGU0ZDY1IGxlZ2FjeS10cnVuaworNDU1MTAgMzEzNTY0ODAyNmM0YWVkNTIxZjJkZGQ0ZmJhM2M3YmEyZjdjN2NjMiBsZWdhY3ktdHJ1bmsKKzQ1NTExIDNlZGUxNzVlYWQzN2E4OTk2ZDU0ZDI5MDJkNGNiZTBlZTljZmIzMGEgbGVnYWN5LXRydW5rCis0NTUxMiBhNWU4Nzk4N2NhZTYzZWE4YzBiNDEzYjdjZjE5MDNkNmRlMDUzZjQyIGxlZ2FjeS10cnVuaworNDU1MTMgZTI1NGI5MjJjNGYzNGVmMGQxYjlkNDAzNjBmM2JmZTQxY2M4MDYxYyBsZWdhY3ktdHJ1bmsKKzQ1NTE2IGZjNTg5NzQxOGYzMWJkNGQ2NmRiZGE2ZmU3ZGU4MmQ4NjBkYzlkM2MgbGVnYWN5LXRydW5rCis0NTUxOCBmNTgzMWZmN2NmYmQyYmFmNDhmNjQ3NDhhMDcxMjBhMDJmODc4ZWI4IHJlbGVhc2UyNC1tYWludAorNDU1MjAgNDU3N2IyNDNiOTgxMzc4ZGZjYTMyNDEwOGU0ODBkN2ZkMmU3OGZlYyBsZWdhY3ktdHJ1bmsKKzQ1NTIzIGJlMmE3ZWM0NjJmZTQxNzlmMmQ0MzEzM2VkYmQ5M2MyZjU3NGMwZjggbGVnYWN5LXRydW5rCis0NTUyNSBmMDQ4MTE2YWFkZTA1NzhjZDJjZDg3ZTg4YWNjMjU4ZTJkZTM4MDZkIGxlZ2FjeS10cnVuaworNDU1MjYgZTg5MmI1NDQyODM1MDhhZWQ1NDZkMWFlMjljNWYxYjY2MmU1NGY0YSBsZWdhY3ktdHJ1bmsKKzQ1NTI3IGQ4MmRjZWQ2ZjFmYTc0MDdhM2VhMTMxYjYzNDgxZTg0OTk3Nzc1NjEgbGVnYWN5LXRydW5rCis0NTUyOCAxNzQwNjJmN2MxYmUwMDY4YTliZjU3OGI4YTViMzI4MTJiMmY2MGZjIGxlZ2FjeS10cnVuaworNDU1MjkgZWU5MGFiMjYwODZhYTQzNTM5ODZkYmJiNzdhZjI0N2ZkMTliMzI3NiBsZWdhY3ktdHJ1bmsKKzQ1NTMwIDMxYjBjZGExMWE2ZDZlYzkyMTdhMjY1ZTBmY2M4NTUzMGM5NTkxZjkgbGVnYWN5LXRydW5rCis0NTUzMSBkNDg4MjQ0ZGYyODg0YjE0NWRmMzgwMmE4YTI0OGJiZmU1YWZlZWZhIGxlZ2FjeS10cnVuaworNDU1MzIgNjM4NjQ0NDU4ZmM3NTI5YzZiMzg5ZjdlYmM3ZGViZWY1NTZlMjQwOCBsZWdhY3ktdHJ1bmsKKzQ1NTMzIDE3Y2NjYTU5MGFlOTM3NzVlODBiMDBiNjFjY2VjNzljOGI0ZmUwYTYgbGVnYWN5LXRydW5rCis0NTUzNCBjYzQ4OTg1YzMyNjZjNDhkMTM3M2Y1NWExNjhjZTM1N2U4OTAwMDMzIGxlZ2FjeS10cnVuaworNDU1MzUgOTEzZDM3OTBmZDk5ZTkxZmE5NTFiMzIwMDRjZjg4ZTgyNDYzM2JiNyBsZWdhY3ktdHJ1bmsKKzQ1NTM3IGUwYTYwMzFkZjdjMGVkZGYzNTFlNmQ3YjI2OTE3YjA5OTc2NDdmMTYgbGVnYWN5LXRydW5rCis0NTUzOSAwYzAxMjJiZDBlYTMxZDZjNGU2OWYzOGY5MTNjMTFlZDEzYmUwMmEyIGxlZ2FjeS10cnVuaworNDU1NDAgMjQwZmU0OTVkMTg2NzBhMjIyYmMyNjNiZmU1YTc5N2NhZTlmMWFkNiByZWxlYXNlMjQtbWFpbnQKKzQ1NTQxIDQ4OGZiYjRjYThlNTE0ZDZmZjBjZDhhNDkzYWU4ODNjMDQ3MGEzYjcgbGVnYWN5LXRydW5rCis0NTU0MiA4NzI1YjkwN2FjYmJmZWRmZGZmMmQ0OWIzYWFmMTQyNzBiZWFiYTNkIGxlZ2FjeS10cnVuaworNDU1NDMgMzVmMjdiYmQ5YWQ4YTJkZjVmNzczNzJiYzU5MjM0MmYxMTU3MmQ5NyBsZWdhY3ktdHJ1bmsKKzQ1NTQ1IGQ2NGJhZGFjNmNmMzEyNjVjOWFlNjU3NGZiMTg2ZDVjOTc5ZjlhYWEgbGVnYWN5LXRydW5rCis0NTU0NiAxMmFiMjBjZDdjMjczYTFjMWMzMzZlY2Q5MWUyYTMzZWFkNGIzMjc0IGxlZ2FjeS10cnVuaworNDU1NDcgZGQ0MTU2YzM2NzAzZmFjZDcyNmRmYjc0MWYxNGUzZGUxYzcwMGJlMCBsZWdhY3ktdHJ1bmsKKzQ1NTQ4IDQxZjEzYjU2ZGMzMmJjZTg0OTZmNzE1MDE3MDU4NDJmOTNmOWU5OWYgbGVnYWN5LXRydW5rCis0NTU1MCBlYmU1OWNkMTgyNzMwMmRlY2U4MGMwOTcwOGVlNjQ3ZjI5ODM4MTI2IHAzeWsKKzQ1NTUxIDE5MDQ1YzVmMGJhMmRhYzYzODU4NDVhYWE4Mjc5MTFjNmNkYmU4YzAgbGVnYWN5LXRydW5rCis0NTU1MyA4MGUwMDM0OTY0N2QwZDM2MTZiMTA2MGU3MzRhZTFiZjRkZmNlNzU3IGxlZ2FjeS10cnVuaworNDU1NjAgMjkyNTdlZjZhYmViN2UwMWQxMzhiZTFiMDlmMjM1ZjkyMTM2NzY2MSBsZWdhY3ktdHJ1bmsKKzQ1NTYyIGI3ZDQ3MWUxMjA0Mjc2YWYyOGU0Y2UyODgxNjBlMDhiNTk5ZGY3YjcgbGVnYWN5LXRydW5rCis0NTU2MyBkYzhlZmQ3MGFiNTY4NjgxMGYxYTY2OTU3NTE3ZjQzMWJhNGZkZmY1IGxlZ2FjeS10cnVuaworNDU1NjQgYWNkOGZiYTYxOTQzMGY4MWJlZDBhZjg0YTYyYjRkMWUzMTZjYzY5NSBsZWdhY3ktdHJ1bmsKKzQ1NTY2IGE0ZDVjZWZjMmRlNDA4NTFjODA3MjJiOGViMzA1NjkxNDQwOTRlZWQgbGVnYWN5LXRydW5rCis0NTU2NyA3NGY0NTlhMjg5YmU5ZGQwYjJmODg0MGM1Mjc3OTBkNjdmZmYwOWQ2IGxlZ2FjeS10cnVuaworNDU1NjggNTY0ZWM5NzM2NWY5ZDlmYWNkYzM0ZjIyNWY3ZDM3ZWFhN2RkNWFiMCBsZWdhY3ktdHJ1bmsKKzQ1NTczIGQ0YWU5YzAzMjViMWE3OWZkOTM5ZTI2ZjQ0M2MyZDcxMGZjMDFlOGQgbGVnYWN5LXRydW5rCis0NTU3NCBlOTZkMWNhZDQ2ODIwNWEzN2M3YzBiYmIzYmIyMzMzMTg1OTM2YjVmIGxlZ2FjeS10cnVuaworNDU1NzUgNDdhYzUyNGRiOGE3YzgzZThkZTRhODlhMTQxZjIwOWYzNWE3ZjQ5NSBsZWdhY3ktdHJ1bmsKKzQ1NTc2IDQ3N2JmOTMwZjNlN2Y0ZWQxMWU1YWJiYjRkMDBhOWRmOWRkYjIxNGIgbGVnYWN5LXRydW5rCis0NTU3OSA3NWU3MDZjMzZjODY0YTE0N2Y2ZTM0Y2FiNjIzMjZhZDRkMGYzMmRmIGxlZ2FjeS10cnVuaworNDU1ODAgZDNlNWM5NTY1ODFjZTJlY2U4MDY3NGRkNmIxMTc2ZDBkMDkyZWI0MSBsZWdhY3ktdHJ1bmsKKzQ1NTgxIGIwZjM3ZjlmYzYzZmY5YjY3MDRmM2U4ZDhjMGQ4OTBkYTNiMDMwZjEgbGVnYWN5LXRydW5rCis0NTU4MiA0Yzg5NDU1MmI5NjgwZjU1YjljNWEzN2VkMmI3YjY1ZWEwOTIwYzcyIGxlZ2FjeS10cnVuaworNDU1ODMgMmZiMTZhNjI5NDE1NzhkYjA3ODdmMWZkYTY1ODg1MDlkMzA2MDY1MiBwM3lrCis0NTU4NyBhYzEyN2NkODY2YTMxMmYyYTNiYzcxYTMxODk0YzJlMmUzMzM2NGY5IGxlZ2FjeS10cnVuaworNDU1ODggYzQzNDFlNmM2YTAzZGU0YjhlZGNmZDM5YTU4YmRiZTk4ZjkzMmU4OCBwM3lrCis0NTU4OSBhNDcxMTdmYTNjYTg4YzQ2MGI1ZWYyOTIzMGI3MGNhNmVlNWY3NzVlIHAzeWsKKzQ1NTkwIGIwZjg4MTQzZGM1Yzk1MDMzNWIzOGVmMjA1MzZhM2Y4ODE2MDk3NTQgbGVnYWN5LXRydW5rCis0NTU5MSBkMzVkYjg0Y2EwNzJjZjQ5YWUyM2Y5NzUzMTQ5NGNiZDY0ZTgxOWU5IGxlZ2FjeS10cnVuaworNDU1OTIgYjlhYWQ2YTc0NDUyZGM1YjcxMGViNWFlYmUzOGM1MzkzNTM4Yzg2YSBwM3lrCis0NTU5MyBhNGM3MGYzOTY4YmU3ZDlmODBhNjNhMmIyNjhlMzc1NTgzMTIzNTQ1IHAzeWsKKzQ1NTk0IDhkZjYwNzk2MzM1NThlNDJlMTk3NDEwNzEzYWYwMjBiMzc1ZjI3NzMgcDN5aworNDU1OTUgNmE0NWYyNmVhNjE5ZTU3MDY5MDM3MGZmODU1OGVhZGVjODVmMDJmZCBwM3lrCis0NTU5NiBiNjhkMjEzNjQ5MTY3MTNiNTNjYmY2NzVmMjE1Mzc2Mzg4ODBiMjE0IGxlZ2FjeS10cnVuaworNDU1OTcgZjczMTg1OWU5YjNiOTEyNjRiMzEyYTgyYzMxMjhkNjZhNDJkOGZmYyBwM3lrCis0NTU5OCA5NmFhNWNlODY0NDU4MDdiZTQ3M2ZlOTMzNTA1OWIxZWY1YmNkMGM3IGxlZ2FjeS10cnVuaworNDU1OTkgNzAyZDg1ZDk0MThhNzQ1NjAzYWZhODUwMGMwNDM2OTBiZjYzNjFjZSBwM3lrCis0NTYwMCBiMjcyNGExMmRkY2U0ZmZjNmYzOTI2NTk2MjcyYzIyZmI0ZjdmZGIyIHAzeWsKKzQ1NjAxIDcyMjQ1MTU5Mjk5ZTAxNTNhZmUyYmMxOTdkNzdmMTFiNTJjODhmM2UgcDN5aworNDU2MDIgYjQ5ODQzYTNhMWRmNGE0YmY1MmQyMjU3ZWEwMDk0NDk5M2VlOGU5NSBsZWdhY3ktdHJ1bmsKKzQ1NjAzIDliYjZlMzVjMWNjNDE4YjgyNWI0NTc5ODE2YjhkMjBjM2QxNjEwNjUgcmVsZWFzZTI0LW1haW50Cis0NTYwNCBjMjhmNzRiZWQ4M2JmODRiZGEwZjZjNGM4MDkwYzY4YjVhMzkzYTc4IGxlZ2FjeS10cnVuaworNDU2MDUgMzAxYzRlZGU0OWRkNmU2MzNmMjlkZDdhZmU1MTAyMTkwZTI4ZWQ1YSBsZWdhY3ktdHJ1bmsKKzQ1NjA2IDViYzkxNWZlZWQxNDBhMWZiODFjYWEwN2NlZmMzYTg2NWYyODRhZjUgbGVnYWN5LXRydW5rCis0NTYwNyA4MTAyNTU3YWZkZjE3NjZlMTRmYjE5OWM3YmNhOWMzMzU0YTYyNTJjIHJlbGVhc2UyNC1tYWludAorNDU2MDggNzQ5YWQyYTM2OTNmMjJiZTdkMDAzNWIyYmNiOGZmMTEyZGU0MTgzYSBsZWdhY3ktdHJ1bmsKKzQ1NjA5IGQ2MmM5ZjY0NjYzODFlNjdkOWEwYzUwODUxNjI0MTY5MmUwNmE1ZGMgbGVnYWN5LXRydW5rCis0NTYxMCBiZDc4NTMzOTRjN2FhNWZhMjk2YTBhMTIyY2U5YWI0NjkwZGE2MjRjIGxlZ2FjeS10cnVuaworNDU2MTEgZDE4YTJjODY2NjA5NWEzN2VlZjhkZDZmODhlMzFjNTQyOGJhYmY4YiBwM3lrCis0NTYxMiA3M2Q4ZTg5Nzc3ZTMzMDI3N2VhNDgzYWY0MDc0OWQ3M2QxNDdkMDE3IGxlZ2FjeS10cnVuaworNDU2MTMgOTFhMDk4MWVjNGMyYzEwNTNlOTY4M2MzOGQyOTQxZGU0MmFhNTQ1ZSBwM3lrCis0NTYxNCBmOWVjYTEzM2NmODg2OWNjNTgyM2Q3ZTc1ZmZmOGY2YmEwNTAwMGUyIGxlZ2FjeS10cnVuaworNDU2MTUgYTMxMjAyYzk0ODVkYWNlYjZkM2RmNDE0MmU0ZmJhNzI5MjAzYmVlZCBwM3lrCis0NTYxNyA3ODE0MGJlNTMxNWJjN2ZmYTQwZmI5ZWM2ZjRhZTQ1OWEzOTE1ODcxIHAzeWsKKzQ1NjE4IDM3YzI4YTZhZDUwMTFjODdlN2ZlNGI4Yjc3Y2IyYzhkMDgzODlkNmUgbGVnYWN5LXRydW5rCis0NTYxOSA1MGUwYmQyZTQ1ODgxNmEyMGVmZGU2NTliYThiOGUxZTVhZmYyZGExIHAzeWsKKzQ1NjIwIGZkNmYxOTBlMjZhOGMxMTllODA2NDhjNjRiYWQxMjE1MTkyZjU3MWYgbGVnYWN5LXRydW5rCis0NTYyMSA1MjU1MTIyMWExMzJkNTUxNzkyYjliZGE2MzBiZTlmMzdjMjVmOTIyIGxlZ2FjeS10cnVuaworNDU2MjIgNTYwODlmYWJhMDU2YTBjMDdiZWUxNTE1NWFjZDk0MDJiMDQ3ZmNkMSBsZWdhY3ktdHJ1bmsKKzQ1NjIzIDA2ZGNkZWRmYzk4ZmE3ZmVkNDY1OGZhNzM3YTRhYzkzNmE5NzRhNDUgcDN5aworNDU2MjQgYzJhZTZkYjMwNTcyYjM4NGU2NzUwMzdhMDI2MTlhNjIzODRmMWFiNSBsZWdhY3ktdHJ1bmsKKzQ1NjI1IGZkMjlhZDBiZWY3MDgzOTVjNGY3OTk2NDY3YmNjNzFjMjM3MjQ5NTggbGVnYWN5LXRydW5rCis0NTYzMCAwZTBlMzE1YjQyMDIzNTdjZTNjNTRmMGRiYjMwODg1ZTkyNzMyZGNlIGxlZ2FjeS10cnVuaworNDU2MzEgYzdlZjkyYjkwNDVjNjg4YTM3YTQ0YzY2NjQ0NDdhNWQ3NjY3YTNjMCBsZWdhY3ktdHJ1bmsKKzQ1NjMyIDcyMDRmYmFjNTc5Y2M4YWM0NWEyZDMwYmM0ZDc1ZDMzOWU4NGRmODcgcmVsZWFzZTI0LW1haW50Cis0NTYzMyA2YzYzNGM2ZDc3ZGQ4ZDNhMDAxOGRhOGEwYjNhZmJjYTRmNTg1MDExIHJlbGVhc2UyNC1tYWludAorNDU2MzQgM2YxNDMxYTllZGNiNzFlOTY5NmViZWIzOWY5MTQ0YTU1MTdlMmNmYiBsZWdhY3ktdHJ1bmsKKzQ1NjM2IDYyOGY0MWE4YjFjZTAzODM4MGRkNGIwZjlmMWZiYTAxZTcxOGIyYTQgbGVnYWN5LXRydW5rCis0NTYzNyA1NGYxNTUzNjlhOWMxMjljMzFjZjk3M2IwNmEwNmUwYzZlMzVmMzcwIHJlbGVhc2UyNC1tYWludAorNDU2MzggZmE2YjQ5YmE5YWU5YjUxOGZiZjE3NTgyOTMxM2Y1MjUwMTcyNGUyZCBsZWdhY3ktdHJ1bmsKKzQ1NjM5IGNlMmVjOGM4MzVlOTM1ZTkwOTcyOTA1NTUxYWE3ZTVkZDQ4MWEwMzcgbGVnYWN5LXRydW5rCis0NTY0MCBkZTRhNWY1NWUyMWRlMTNhNmVlNDgxYjAwZThiYjg3ZDBkY2M1ZTI0IGxlZ2FjeS10cnVuaworNDU2NDEgZmIxODM3ZTg4ZTcyYjYzYjViZjM0ZTRmMmZkYjdiMGUyNTMyOWUxYSBsZWdhY3ktdHJ1bmsKKzQ1NjQyIDEwZjI0MWZjOTU5MzlmOWM5ZDdjOGIyZDFjMmFkYzFlODE2ZDQ3NzEgbGVnYWN5LXRydW5rCis0NTY0MyBhYjRlNjVjODA5ZTZmZjMwMGU2YjQ5YTk4Y2IzNmEzYWU4MTVkYjljIGxlZ2FjeS10cnVuaworNDU2NDQgY2U1NTg1YWZjMjBmOTIxNGQ0NzhjMjA5NTllNGJkMDZhNWM2ZGM1NiBsZWdhY3ktdHJ1bmsKKzQ1NjQ1IDVmOWVhNzZlMjA3MjQ0NDRlNGQwNjU2YmE0ZjRmOTU4NGVlOGViNzIgbGVnYWN5LXRydW5rCis0NTY0NiBmNDlhMmRkYThlNzQ1Njg2ZDQ1NzQzNWM1ZjQ4ODk4N2JlYjk3NjJmIHJlbGVhc2UyNC1tYWludAorNDU2NDcgODM0ZmQ5YjNjZWVlYzIwMjA4YzcxMDg0YTBhNzA2MWFjYmNkNjNjNiBsZWdhY3ktdHJ1bmsKKzQ1NjQ4IDkwNDhkNzZiZjAxZTZkZjQ5ZDk5NGNiMWIwMWI0YjAzODc5MjkzZDQgbGVnYWN5LXRydW5rCis0NTY0OSA3ZGUyODQ5NTg4ODM2MDUxNmYwMjk3OWI4YjkxZGJlYzU0MDRiNjVkIGxlZ2FjeS10cnVuaworNDU2NTAgZmQ4MDhlZTY4ZWI5ODU1ZWUxOWIxMzRhNjBiNTRlNjE3MDI2ODE0YiBwM3lrCis0NTY1MiBhN2YzNzY1ZWE0NjQyOWI0ZjkyZGNiYzVlODgwNDQ5OWQ2YmYzMmM1IHAzeWsKKzQ1NjUzIGFlNmY1MDYwMGM0NmIzYmY1Nzc0ZTdlNjM4ZjlkN2Y1MjZmZGUyMWIgcDN5aworNDU2NTQgODhkYTg0Nzc2MTE5MjkxZGI4ZjQzMjNkNGQyNTliMDMzNGY3NGZjYyBsZWdhY3ktdHJ1bmsKKzQ1NjU2IGUxMjUyY2VhNDM5YzY1ZWI4NWQwZWZlYmUxNjQ0ZGUyNDE0ODQyMDYgcDN5aworNDU2NTcgZDBlNGNlZDQ4N2IzNjdlNDI0ZTUyZTZlZWVmNzIxZWQ5NmM3ZGY2ZiByZWxlYXNlMjQtbWFpbnQKKzQ1NjU4IGEwYWE5MTFiZTk2YTMxZWFjMTVjNDk3YmM5MDU5ZmFmYWE5Y2I2MjEgbGVnYWN5LXRydW5rCis0NTY1OSBiY2Y3MTVhOTg3NzRiMDRkODdhMjE5M2M4NzFjOTUwNGRiNmRmZmVjIHJlbGVhc2UyNC1tYWludAorNDU2NjAgZWE2NzYyOGRkYWU1NjU1MWYzMDBkZmIzOTI1MjJhNjlmMGNjYzk0ZiBsZWdhY3ktdHJ1bmsKKzQ1NjYxIGUzYThhOGRlMzU1ZTNmYjk2YTlhMDljNDRlNzBlODNhNTQ2OThkNzcgbGVnYWN5LXRydW5rCis0NTY2MiA3OTk1OWFmMGY5ZTBmMzFlNjgyOWQ2ZWIyYzk4ZGRmNTg4YjUzOTMxIGxlZ2FjeS10cnVuaworNDU2NjMgOTc3ZTdhN2UxNTVhZDQzOTQ2YzE2NjFjNDliN2ZlODQ0NGM2Y2E5NiBsZWdhY3ktdHJ1bmsKKzQ1NjY0IDdkYTRhZjk1ZWJhZGExMmQ3Y2ZkN2ZiZTJlYjc3Y2I5ZmQwYTgyNDkgbGVnYWN5LXRydW5rCis0NTY2NiA3YmJiMDcxMTNiMjlmZDFiYWM4YTdiNTc2N2ZlZTNlOTEzYmE2OWFjIGxlZ2FjeS10cnVuaworNDU2NjcgMjIyYjQ3ZDY3ZDQzMmI0MTg4MzdmMDY3ODg4MWYxZGEzYTY2OTI4YSBsZWdhY3ktdHJ1bmsKKzQ1NjY4IGQ2YjFlMmIzMDg3ZjM4NDAzZDI0MDU1NTQ1NzQyN2YzZWYzNGVlY2UgbGVnYWN5LXRydW5rCis0NTY2OSBjMjVkZDc1ZTA2Njc5ZWVmMWE5YWYyOGRhM2QxOWY0ZmUwMTIzZjQ0IGxlZ2FjeS10cnVuaworNDU2NzAgOTkxMDY2NTc2NDM0N2E0NTYxMzQwYjVkZmRhNGYzMTQxMWU1YTFjMCBsZWdhY3ktdHJ1bmsKKzQ1NjcxIDUwOWI1MzE3MTk1NGE4MmRlNjQ0ZTk4YTg3OTg2M2RlZTE3ZGQxZjYgbGVnYWN5LXRydW5rCis0NTY3MiAyZmQ0NzdiNjE0ZTNmNjJlYjhmMDNmNzliMWY2NWE1YTAzNjRkZWQ1IGxlZ2FjeS10cnVuaworNDU2NzMgODQ3NzEwZTVkN2UxNjYxY2ZiY2Y5Y2Q4NmFmMzNmMGNjMTBhODY2NiBsZWdhY3ktdHJ1bmsKKzQ1Njc0IDFiMTkyMDM3YjYyZjFmYjk1NjllOWIxZGQ0ZWI2ZTBlZTk0YjZkYzkgbGVnYWN5LXRydW5rCis0NTY3NSA1OGQxMGQ3ZDBhYTExY2VjODNiNzkyOWU3ZDdkYmI2NjI0ODc5NmI0IGxlZ2FjeS10cnVuaworNDU2NzYgYjZkMTBkZDNmOTk3OTVkNjEwOTdjYTBkYTBlMjMxNTA2MmY5YjcwNyBsZWdhY3ktdHJ1bmsKKzQ1Njc3IDZmNGVkZDkxNGM1ODZhMTYxZjNmOTQxNjUzNTExMjQyNmUwNjZmNDAgbGVnYWN5LXRydW5rCis0NTY3OCA3MTY3YzFjMGUwMTMxNzA1ZmNkODU1NjVkNzg2MjRiNGFmNTcyNjNhIHJlbGVhc2UyNC1tYWludAorNDU2NzkgOWMwNDFjODhlYjY3ODM3ODVkNDMzNzZmZjM0ZTY3NGY5MzAyNjQzOCBsZWdhY3ktdHJ1bmsKKzQ1NjgxIGQ2MGZiYzU0YzBkNGRmZWIyYTgyNjU3ZDAxNzU1MmQ2MTQ3MzM3ZGMgbGVnYWN5LXRydW5rCis0NTY4MiA5YWNiNTU1Mjg2ODAzOTllNjgyMGVjZjFiMWE4Mjg4YjJiMjY5OWZkIGxlZ2FjeS10cnVuaworNDU2ODMgYWRiMTBhZmRhNTViNGVkYTM0MGI2NGZmYmRlY2RlZTRiODljZGNhOSBsZWdhY3ktdHJ1bmsKKzQ1Njg1IDk3ZTU5ZDJlNjNkZjYzNzc1MzFjMjgxODU2NWI4NTE0YTU1ZWYyZjAgbGVnYWN5LXRydW5rCis0NTY4NiBkYWQ5YjMzZTc4ZTUzZDkxYmFkYTYyODM0Y2U0ZTllOTI3YTRlNTJjIGxlZ2FjeS10cnVuaworNDU2ODcgYzc4ZDMwNmFhY2NmOTEyNTE1M2JkY2Y3ZGJkMTc1Njc2M2FlMDE2NCBsZWdhY3ktdHJ1bmsKKzQ1Njg4IDJmNGQxN2JjYzk3NTFhOWM0ZmNlYmEyOWM0ZDFlZjRmZTRlZjI3YjggbGVnYWN5LXRydW5rCis0NTY4OSBlMGI3ZTM0YjU5NzEzMzFiYTY1NTFmZWM0MjIxMjkyZmY0M2QwYTRlIHAzeWsKKzQ1NjkwIDhiMGYwNzM1YjI0NmVlMTU2M2U4MjMwMTY0Y2NhMTM0MmI3NDQ3OWQgbGVnYWN5LXRydW5rCis0NTY5MSA3ZTJkNWQzNzRlM2EyZjQ1YWNlOTI2MDRjYWQ2YzYxYzNlYzhlYmFkIElETEUtc3ludGF4LWJyYW5jaAorNDU2OTMgOTJmMjE4YTZiMjBiODQ0ZDM1YTMwY2U2ZDdhODE3ZTQ1ZTdiYTBmZSBwM3lrCis0NTY5NyA2MTIyOGU1NTc5MWYzZWY3MDA3MDZjMTQxYTZkM2Q4OTE4MjE4NGNlIGxlZ2FjeS10cnVuaworNDU2OTggYWNkNWU1NTU5ZTNjMjc4Y2Q3ZWJiNzg3MTgyODAxMzMyZDIxNWY5MSBsZWdhY3ktdHJ1bmsKKzQ1Njk5IDMwMTU1MjBkNjdmZjFiYmFiZmVlYjFlZGRiYTVkZTIwZTA2YjM0NmUgcmVsZWFzZTI0LW1haW50Cis0NTcwMCA4OTViN2RhYmEyZDYwODRhYzA0NTQ4ZjhmYjQyMDFiMmQ4YmE1ZGE4IGxlZ2FjeS10cnVuaworNDU3MDEgMDBkZDFkYWU3ODhiN2QxMTgyYzJiOWM0YzkwMDUzMTJlNTFiNTllYiBsZWdhY3ktdHJ1bmsKKzQ1NzAyIGYzM2U0ZWQ1NTBiOGE0ZjcxMjg1NzhjZTY0NDJkZmYxY2Q3MGMxOTEgbGVnYWN5LXRydW5rCis0NTcwMyA0NDlkNGJhM2NkNDQyNDdhYjBkN2MxOTdiMjY5ZTEwZjVjY2M3NDI0IGxlZ2FjeS10cnVuaworNDU3MDQgMTRjYjJlZWNjNmY4OTQ0ZDJlYWEyNzJhYmRmMGE3ZTk3NzNkNjc5MCBsZWdhY3ktdHJ1bmsKKzQ1NzA2IGFmNDRkYjJhOTUyM2EwNTNhZTNlMmRhYWU0NTEwMGNjNzMyNWZhNmEgbGVnYWN5LXRydW5rCis0NTcwNyA2YzEyNDI3NmExZjBjYWZjZGY0ZGE1YTVkNWJlNmI3Y2VlZjgyMDJiIGxlZ2FjeS10cnVuaworNDU3MDggNDVmODQ5MjliMmFlYjg2NTI0OTU4Yjk5MWM2OGZmZDNiMWVjYzNlZSBsZWdhY3ktdHJ1bmsKKzQ1NzA5IDhlMTQxNDgzODZlYzA0ZTk2MGQyMDI3Njk0OWM1N2M2NDM0YTRmMGUgcmVsZWFzZTI0LW1haW50Cis0NTcxMCBhODY4YzIxOGEyMTMxYjZiNjZmZTM1NWZiNzFjZjlhNzUxYjg3YWQ1IGxlZ2FjeS10cnVuaworNDU3MTEgODg2M2ZlZDZjOGQ3MTlkOWEwZjgxNDcxZTY2NWU0ZDAwMzkzZDY5ZSBsZWdhY3ktdHJ1bmsKKzQ1NzEyIDE4NDM3MTBmMzJlODMyMTM2N2E4NDU1NjFkODUxNWNhZGM2M2I0OWYgbGVnYWN5LXRydW5rCis0NTcxMyBlNWZlYjA1MWMzMmZkYzNlYTY0YTAzNTdkYjRiZGMxZTAwMTFmMmI2IGxlZ2FjeS10cnVuaworNDU3MTQgNzA0YjgwNTI5NjY0YmE0ZTk4OTdjOTQxZDE4OGRlNTZlNDdkMDU1OCBsZWdhY3ktdHJ1bmsKKzQ1NzE1IGI1MzVjMTkxYTQ0YjA4MjA4MjFhM2M3ZWRhODVkYWMyZmFjZTY4NjcgbGVnYWN5LXRydW5rCis0NTcxNiA3ODNjYWI2OTMzNDc3YzQxYzc0NDFiMDdhYTQ2MDA3NzE5YmJmMjMzIHJlbGVhc2UyNC1tYWludAorNDU3MTcgNjhhN2MwMTVhNTQ3NDc4NDAxYjk4ZDFkMDZhY2Q0NWNmMmJlZDMzNyBsZWdhY3ktdHJ1bmsKKzQ1NzE4IDI2OWM2MmM3ZjY2YTUzMzM1ZmIxYmM3N2RjMzViNTA5NjE5ZWYwZDggbGVnYWN5LXRydW5rCis0NTcyMSBkOGQ5MDBkMGViOGE0Njg0Y2ZlNzM4NjVlZTM1NjU1ZDc0ZmM3NTc5IGxlZ2FjeS10cnVuaworNDU3MjIgMDljNDI1YTVhYTNhZjNjZWMxOWRkMmE4ODU5YWYwZTVlMjRiNjRmOSBsZWdhY3ktdHJ1bmsKKzQ1NzIzIGQ1ZTZlNDlhMzg3OTBhZWFhMTdkNDBkYzNmMmMxNWY1YWJiZTc3MDcgbGVnYWN5LXRydW5rCis0NTcyNCAwNmMwNTliOTJkMGJhYzc3YzNkMTBhZDBlM2QyYTM1ODIzN2U1YTgzIGxlZ2FjeS10cnVuaworNDU3MjUgODgzOWVhOTNiNmQ3MDQyOTQ3OTI3YjU1NjlkY2VjMDJhNTZhZjZjNCBsZWdhY3ktdHJ1bmsKKzQ1NzI3IGY4MWNkN2U5ZDAwMWYwODA5Y2I1YTdhNjVjYmFkOThjZGYwZjFhNTkgbGVnYWN5LXRydW5rCis0NTcyOCA1NTY0NGYwYTQwMWJiOTM1ZjVmOWQxYjNiYmI3OTkxODViOWIyOWI3IGxlZ2FjeS10cnVuaworNDU3MjkgMTY0OTcwNGEyMjFhMWE2MTE3NTZhMTc0NWRjZTIwZjQ4Zjk0YjhlMyBsZWdhY3ktdHJ1bmsKKzQ1NzMwIDhkYzJhNGQ4YTIyZTAwNjZmNzY0OTBjYzQyYjFkMTFjMjJjMWFhMTQgbGVnYWN5LXRydW5rCis0NTczMSAzNTg2NjJlMmYyNzNhMmRiYTkwNjBiNGIwYmYxMjM3NGU2MmVjZWU1IGxlZ2FjeS10cnVuaworNDU3MzIgZmVkNmUzN2FkMDNkMTA1MmU3Yjg4NjFiYTIxNGVhNThlNDA4NDU2YSBsZWdhY3ktdHJ1bmsKKzQ1NzMzIDljYzEyYmIwYjcwYTg2NjM0Yjg3ZmI1ODE0ZWMzZTQyYWU4OGRhNzEgbGVnYWN5LXRydW5rCis0NTczNCAyMmJiNWM2Mzg2MmVjNjIyYTk2ZjE2OTI3NDhmM2RhYWYyMjBhYTc0IGxlZ2FjeS10cnVuaworNDU3MzUgN2MyMjJjZTUxYmQ3ZmUwY2YyNTVhOGQyOTRmY2I5ODQ0MmVhNjc0YiBsZWdhY3ktdHJ1bmsKKzQ1NzM3IDg1YzljYTVlMDM1YWRmZjgyZjdmNzNhNGNlM2NiMDY0Mzg3NzU2MGYgbGVnYWN5LXRydW5rCis0NTczOCBhYzA2ODQ1M2E3OGE4MTI2MWRjYzhjZjdmZjE2ODlkM2Y2YmNkZDg1IGxlZ2FjeS10cnVuaworNDU3MzkgOTRkOWUwZGU0ZTQ5ZTMyMGUwOTg0MjJiNjAxYTI3YjUxYjIwMzIwMyBsZWdhY3ktdHJ1bmsKKzQ1NzQwIDBlODA5YjdhODRmMTc4Zjg0OWY3ZTdmYmM1YzUwYzg0YjY0OGZjNWEgbGVnYWN5LXRydW5rCis0NTc0MSAyNmQwNzcwZjJiN2VlMjg5YTM5YTNiNTVkY2VjMWMxZWU2NTg0OWM1IGxlZ2FjeS10cnVuaworNDU3NDIgNTA4NTY3ODU3MzIwNWU1ZTQwYmU3ZmQ4MDgwZDY5MTg2NGUwMTFlYSBsZWdhY3ktdHJ1bmsKKzQ1NzQ5IDA5OTI3ZjJmNzQ3OGU2M2NkYjRhYjU4MDhhNTBlNTMxMGI0ZmJhNGYgbGVnYWN5LXRydW5rCis0NTc1MCA5MjMzNTMyZWM4YjM1MTM1ODJkZWIyMjFjZjgyZDlmOTRjYjA1N2VhIGxlZ2FjeS10cnVuaworNDU3NTEgY2Q5ZWQyNzNhNjg3OTYzM2EyZWU4ZmE2MDIwNDVkNmYzY2RlYmM0ZSBsZWdhY3ktdHJ1bmsKKzQ1NzUyIDFlMWI1MzZjNjhiNjU2MDVlMzExYzc0OTRhODQwMmQ2NTY0Nzc5YTkgcmVsZWFzZTI0LW1haW50Cis0NTc1MyBkZmJkNTdmNGE3MTEyZjkyZjc0NDY1Yzk5ZDVmMzdjZmYzMmM3OTYzIGxlZ2FjeS10cnVuaworNDU3NTQgYTg0YTYyMWVjNWMyNGI5YzcyNzVhZGRhNDM0OWRkOWFjOThmNmVjOCBsZWdhY3ktdHJ1bmsKKzQ1NzU1IDA5MTM0NzdiZDI0ZWE0MGI0NDk4ZjA3OGJmMzhmMmVjM2Y4MGYzYjkgcmVsZWFzZTI0LW1haW50Cis0NTc1NiA3N2ZlYTA2ZWJjMTBhMGI3Mjk0YTE4YTI3YTkyMzVlOGUwZTk1ZWRhIGxlZ2FjeS10cnVuaworNDU3NTcgNzg4ZDg2NjVmZjU4YzU0NGNjOTYzZjdmMTIzODVkMmFhZDNiNWJjNyBsZWdhY3ktdHJ1bmsKKzQ1NzU4IDRkYTBmNzYyMTMyNWMyNjdhMDc4MTBkNWNlYzQyMDI1ZjBhZmEzYTEgbGVnYWN5LXRydW5rCis0NTc2NiBhZjk1MmJjN2ZlYjI2MTU5YTZlZWVkYTgwYmJkYmE1MWE0YTk0Mzc1IGxlZ2FjeS10cnVuaworNDU3NjcgOTQwY2U1YTc2YzVmZjg1YWJmZjc4NDNjODA1Mzk2YWViNTA4ZDAxZSBsZWdhY3ktdHJ1bmsKKzQ1NzY4IGQ1NTE0YTdlYWE0Y2NlY2VmODJiYzc4Yzk2MTlmOWYxNWM5NGE4NTkgbGVnYWN5LXRydW5rCis0NTc2OSAwYjhlNzgyYjg0ODRiODhkZDNjZWUyMThmNGNiZjc0YzJlNjc3YzU2IHAzeWsKKzQ1NzcwIGI1ZTdkNWIzYzQ0MmU3OWRiMTI4NGFiYjM1OTlhZWMyY2IxNmRiNWEgbGVnYWN5LXRydW5rCis0NTc3MSAzODQ1ZjcwZTBiYWZkYTA0YWZhOGNhMGI4M2I2OGJkOTAyYjIzNGI0IGxlZ2FjeS10cnVuaworNDU3NzMgYmI2YzVjMjAwYTNmMDNiZmM5MmRjZGI2YmNjYTAwZjA4ZGMzZjdhNiBsZWdhY3ktdHJ1bmsKKzQ1Nzc0IGI1ZTcxODNhZDExMjI1ZjkzMjYxNDFlOWQ1NzZiOWU1M2U2NGY1ZmYgbGVnYWN5LXRydW5rCis0NTc3NSAzNTE4ZTk0YWE2NjM3MjE5NGU1N2NlMGVkYWZmMjQ5N2U0NWYzZTc5IGxlZ2FjeS10cnVuaworNDU3NzYgMTlhZDNkMzVmYWM0YTg0YTVmMjI5NWNmZGY0YjBlYzQyZWM4MGMxZSBsZWdhY3ktdHJ1bmsKKzQ1Nzc3IDhiYzRhN2U1ZmVmODRmNzE4YmEzYTViYmQ3MGNmNzQyYmExMTEyZWQgbGVnYWN5LXRydW5rCis0NTc3OCA2MWM3ZWM5OTVhZGY1N2UxODM4YTNhZWQzZDI3YWRmNmRmMTk3MzllIGxlZ2FjeS10cnVuaworNDU3NzkgZTlhNzBiMTQ2ODU3OGQ4ZTQ2MDUxNWUwZjQ4ZDAxODNhNzY0NTdiNSByZWxlYXNlMjQtbWFpbnQKKzQ1NzgwIDM0ZDY5NmMxZWViYzY4YzE0YWVlYmExNGRmNmU2NGVmYzI0OGYwNzggbGVnYWN5LXRydW5rCis0NTc4MSA4ZTViNjRhN2IzM2YyYTFlMzhhNmRiMGUxOWM1MDhjN2FkOGFmZTU3IGxlZ2FjeS10cnVuaworNDU3ODIgMzllYjViNTIyNTIzOWNkZWM1MDBkZjE5YzBhODMwMDQ5OGU4YWJlOCByZWxlYXNlMjQtbWFpbnQKKzQ1NzgzIGMxMjQ3MTY5ZjNhMTY2ZDhiMDVjZmMzNzhhYzFhZjVjYzFjNGNkZmYgbGVnYWN5LXRydW5rCis0NTc4NCBkZTJlZThkZWRjZTg5OWFjMjJkODY4YThmYzY3OTE0OGVhZWFlZGJhIHJlbGVhc2UyNC1tYWludAorNDU3ODUgNTY1YmZmZGU4YmYxODMwNjQ4ZmYzMjI2ZjU0ODcyNzA1NzhjMTE5ZiBsZWdhY3ktdHJ1bmsKKzQ1Nzg2IDQ3M2YzN2RlMTNhMTM3ZjQxZjc0NDRhOGMyYTAxNWZhNDNkODliOWEgbGVnYWN5LXRydW5rCis0NTc4NyAyNTQ2YzQ3NzM0YTAxNWY4Zjk1YzY3NWU3ZWE1MDk2NjdiNzU4NGQyIHJlbGVhc2UyNC1tYWludAorNDU3ODggOGJkYmVkNjdhZGY3ODZlODU5N2ZhMmZkMDJjNGMwZmI2NDQ3ODcxMiBsZWdhY3ktdHJ1bmsKKzQ1NzkyIDM4OWU5MjJhNjQ3YzExMDJmNWYxZmYyNmE2ZDMxYjEzMWE4Mjg2NGEgbGVnYWN5LXRydW5rCis0NTc5MyA4NzRkNzdlZWZjZTQzMWMwZDgwOWVmZTM5ZDEwNTExNGY4OTYxYjQxIHJlbGVhc2UyNC1tYWludAorNDU3OTYgZjI3NDJhY2EyYWQwN2Y0NDI0YjRjYmU5YzdlYjMzNjMwMWIzOTM5YyBsZWdhY3ktdHJ1bmsKKzQ1Nzk5IGYwODA5NDgzYjRkMDVmMWI3ZjJmMGNhMmVlNGJmZjU3MDQ3YTNiYzIgcmVsZWFzZTI0LW1haW50Cis0NTgwMCAzNmM3YTQ0MjJlMzA3NTk0NWU4MTYwZTVkMjkzYzFjNzQzNzk2MTQ3IGxlZ2FjeS10cnVuaworNDU4MDEgNTczOThlYjk3OGMyNTRlNjcwYTcwMmM5OGRhY2RkZDlmZDkzZTgxMiBsZWdhY3ktdHJ1bmsKKzQ1ODAyIDg0NjlkM2Q4ZDRlZGI3NDZmOTk1ZjRmNTZlMWEwZGMyNmUxNDA2ZDUgbGVnYWN5LXRydW5rCis0NTgwMyA4ODczZDMwYTE0MGY4NDQwYjc5NmI3ODI0YzgxMWU3NzkzNWYzZGRlIGxlZ2FjeS10cnVuaworNDU4MDggNWMyMjc3YTI5NGVhNDVlM2I0YzBmMjFiMGUxZThjNjAxMzI4ZDAxMyBsZWdhY3ktdHJ1bmsKKzQ1ODA5IDUxYjZmOGUwNDJkZmJmOWJmNTlmMzlkYzFlZDZmYmY5YTMxNjUzZGEgbGVnYWN5LXRydW5rCis0NTgxMCAzZjUxZmZkNWQ4YmY3N2FhOTJmYmViMDQ4ZDgzNWI4OTY2MjRlMzA4IGxlZ2FjeS10cnVuaworNDU4MTEgZjYyNmQ1MmZhYmYwNDRjM2FkODkwM2IwNzYxOWUyNjEwYWQwMWQ5ZCBsZWdhY3ktdHJ1bmsKKzQ1ODEyIDQ2NWY1YjNhMDIzNDg0YTMzNThjZWQ0YTNkODVlZDQxZWY5Y2MyNjkgcDN5aworNDU4MTMgYWNhZjI3NjM5YTQxMWJmYmNmMGE0ZjUyOTk3MzZmOTY1M2RmYzcwZiBwM3lrCis0NTgxNCA2MTRjOTIxNzA3Zjk1NGE2ZjI0YTg1ZDk0MWZmZGFhNzAwNDZhZmRlIGxlZ2FjeS10cnVuaworNDU4MTUgMmEyODkxNTYxNmQ1MDFiYWE1YzU5MWYzOGJlYjBlMzcwNzY0MDA5OSBsZWdhY3ktdHJ1bmsKKzQ1ODE3IDMyYTE4N2YzZDViYTkzNmFjYzNmMDFjMzg5NTJhMjUyZDdiNDkwZDUgbGVnYWN5LXRydW5rCis0NTgxOSBlNGU4NDgyMTRkMjM4NTFiZDNlYjRlY2ZiYzM1ODc0Y2ZjMTkyZmJlIGxlZ2FjeS10cnVuaworNDU4MjAgYWI1M2EzNzhlZGE4ZjliMzczM2FkZjIxZGQ1NjA3Y2Q3NTY2ZGVjNiByZWxlYXNlMjQtbWFpbnQKKzQ1ODIxIGZjYzYxODM1YzZhYzhlNmYzOTg1OGM0MzM4ODdjNTU0OGNlNzhjYmIgbGVnYWN5LXRydW5rCis0NTgyMiA2OWYwNDU3YzE3YmIxODA4NTc4NTZiYmNlNGNkMDFhOTNmODZiMzFlIGxlZ2FjeS10cnVuaworNDU4MjQgOGY3YWJjMmJhN2QwYTIyZDVmMzAyYTMzNzY2YTNlODM2Y2UxMmVmNiBsZWdhY3ktdHJ1bmsKKzQ1ODI1IDlhYmVhYjk2YWY1NzIzNmQzYWZkZGIxN2EzN2UwYTY0MTk2YmEzYmEgbGVnYWN5LXRydW5rCis0NTgyNiA3Y2M3YzdhMTM2OTdiY2YwMmJmZTI1MmMwZWIwNWM0NzU3ZGJjY2VjIGxlZ2FjeS10cnVuaworNDU4MjcgODFkOTFmZjgwMDNiOTk0M2IxYzM1N2EyNjM5MGMwN2VjMDA3ZmE1MCBsZWdhY3ktdHJ1bmsKKzQ1ODI4IGY4OTQxMDQ0ODAxY2JmYjNkZjQzMjUxN2Q5ZmRiOTA4YTgzNDViMjQgbGVnYWN5LXRydW5rCis0NTgyOSBmYzdiNjE4MWQwOWVhZTMxN2Q5MmRjNDNhMDA0MjJmZDM4NWE1MzdlIHJlbGVhc2UyNC1tYWludAorNDU4MzAgZjYyYmQ1MTE4Yzc4Y2YzNDViNjgzOGJjMDU5NDI4NDczZDQxYjMxZiBsZWdhY3ktdHJ1bmsKKzQ1ODMxIDA3MzZiMjVjNTdjNTc2ODEzY2YwM2UxNzEzMzJkNTk4NGIwZDdjZWIgcmVsZWFzZTIzLW1haW50Cis0NTgzMiAxMzViMTc3ODgzYzM0MjViZWE2ZWI0YTUxZjE1NWJkYjFlZjM5MGNiIGxlZ2FjeS10cnVuaworNDU4MzMgYjg1MDdkZWQ0ZDE1Y2MzOGE4ODczNWNjZjY4OGY1ODYzZmQxOGI4NyBsZWdhY3ktdHJ1bmsKKzQ1ODM0IGVmZWViYzg3NzBlNWU2MjFiMWY0MjVkODEwY2M1NjU2YjI4ZmE3YmUgcmVsZWFzZTI0LW1haW50Cis0NTgzNiBjYTZjOTE1MzFhOTY3ODcwNDA1NzFkNGM0NWZmZTM4MDI5N2RkZDczIGxlZ2FjeS10cnVuaworNDU4MzcgY2YxOWExMjNhNWQ5YWNjYzYyNGYxNzBjZTUyNzRiZWY5ZjVmYWI4MiBsZWdhY3ktdHJ1bmsKKzQ1ODM4IDliNzVhZDIzNmYwMDAwODBkNmFjM2JkMDhlYTNkNDQ5OTI4YmM3MGQgbGVnYWN5LXRydW5rCis0NTgzOSBkNzZiOWFhNzIyOWZjNjk2MTg2MjNkZGQ0ZWIxMDBiOGYwM2NjZTFmIGxlZ2FjeS10cnVuaworNDU4NDAgZWU5OGVjZjA1NzczYTcwNzE3N2QzMzU1MWZmZWNiOGY4ZTQ5NTJmYyBsZWdhY3ktdHJ1bmsKKzQ1ODQxIDYzNTFjZDBmN2MyODVmOTI3OWFkZDFiNTVkYTZmZDA3Mjk2NzExZjMgbGVnYWN5LXRydW5rCis0NTg0MiBlZDMzNWU1MmQxNzA1NDk0ZmNhNzA3NjQzMjY4NjFhYWIwOWZhYjFkIGxlZ2FjeS10cnVuaworNDU4NDMgN2I4M2I2OGJlOGE2N2E0NWFhZGY2MDIwZDkyMTgyMWQ0NzBkNDQ5NSBsZWdhY3ktdHJ1bmsKKzQ1ODQ0IDEyOGMwMDYxYjViYjI2YjI5ZWJkNTM2MDYzZjY5ZjMyMWFlMTE4MGYgbGVnYWN5LXRydW5rCis0NTg1MCBjOTIwMmYxYzU2YzI3NGUzMDE3NzcyZTJiODUxMTJkMGM0ZDBhOGU5IGxlZ2FjeS10cnVuaworNDU4NTIgYjFjYmM2MDViZWM5Y2RmOWE0NmYwM2RkZTg3YzIyMzQ5NWNhZjkxYiBsZWdhY3ktdHJ1bmsKKzQ1ODUzIDcyOGMxNmYxNjI2NzFmMzQxYjc5YzJhZTc1MTk0ZjYyNWRlMjU3MjEgbGVnYWN5LXRydW5rCis0NTg1NCBiOGVjNjg5Y2IyZmJjYzRmNmFjYmQxYzBkOWUxYzc1YzkxNmRjZjc5IGxlZ2FjeS10cnVuaworNDU4NTUgYjdiNWYwYjM0ZDI1Y2NkZDdjMWUxYTFmYzg2MzczMGFkNGE0YzcxZSBsZWdhY3ktdHJ1bmsKKzQ1ODU2IDlhMTdiODJlYWZjOTQxMjdhMzdmYWM5ZmYyY2IyZGNiMmVkYmE5YzggbGVnYWN5LXRydW5rCis0NTg1OCBiYjNlMGM4ODk2MzI1YTUxMzAxMWEzNzA2MDIzMTIzNDhjNGUxYTE0IGxlZ2FjeS10cnVuaworNDU4NjIgYTgxMmQwZmFlNzRhNDI4YTE3MmVlMGZhYTU5ZTk4YmI5YWM4MDY1MyBsZWdhY3ktdHJ1bmsKKzQ1ODYzIGZlMjkzOThmNDhjOThkZmUwYjhiNzZmYjM5Y2YxODkzOWMzZTgwNWUgbGVnYWN5LXRydW5rCis0NTg2NCBhYzcyOTAwZTE5MTlhMWZlYmVjYTY2ZmFjYTg4MzczZDBiYTQ0ODNlIGxlZ2FjeS10cnVuaworNDU4NjUgYjcwNmIxMDBjOGZjMGEwMzg1MTNmMTA1ZjY4NjE4MmJhMDExMjY3NyBsZWdhY3ktdHJ1bmsKKzQ1ODY2IDhhYWY1N2JjY2JmOGI1NjgzYThhZGY3ODZiMzUzN2E5MGU3ZGE2NmUgbGVnYWN5LXRydW5rCis0NTg2NyA2Njg3NWI5Yzg5ZjQ1NDVmNTQ4ZGEzMGYzNzU1ZTIzNDk0MjNlYzRkIGxlZ2FjeS10cnVuaworNDU4NjggNjZmMWIzZWJhZWUzYTIxOWYyOTEzMzIzZmU2ZTZmNWY4N2NjOTM4NCBsZWdhY3ktdHJ1bmsKKzQ1ODY5IDZlMGIwNTNjNmNmN2IxNzZhYjVlMWI2ZTJiNjUxN2NjMWIxMmMzYmUgbGVnYWN5LXRydW5rCis0NTg3MCAwZmEzYmFkNDg5ZGQ0NzdmYzhmMzg4YTAzM2E5NGZmZmFjNDZjODgwIGxlZ2FjeS10cnVuaworNDU4NzEgYmM0OGU2YjFlNjU0NTVjN2VlOTAwYzgwNzQ1YzAyMDI5OTBhNjMxMiBsZWdhY3ktdHJ1bmsKKzQ1ODcyIDZhMTQ2OWIzOWQ3Mzc4NTNiY2QwNDE0NDhlOGRlNWY0NzliM2M3YTEgbGVnYWN5LXRydW5rCis0NTg3MyBlYjAzNTYyZGY0YTc5Njg0N2NhM2NjZjA0NmY5ZDE1Yjg4MGI1ZGJmIGxlZ2FjeS10cnVuaworNDU4NzYgNTQ1N2FiOWY4NTk5MTdiMDRiMWIzOWNmNTZmZGMxZDNkOGRjNzRlMiBsZWdhY3ktdHJ1bmsKKzQ1ODc3IGU1ZDExZGZiMmQwOGVjNmMxZjk1M2E4MDdiZDE3Zjc2ZThjMTRlZGUgbGVnYWN5LXRydW5rCis0NTg3OSAyM2Q0YWMzM2FjMTZlNzRjMjFkZWQ5ZDJiOTk1Y2E1MGIyZGQ2Yzc2IGxlZ2FjeS10cnVuaworNDU4ODAgYzA2YTYyZjA1ODlmYmE0YTgzODY0N2FjMjU1MTZlOTA1ZjU0MjE2MiByZWxlYXNlMjQtbWFpbnQKKzQ1ODgxIDRmNzJhNDlkNzBjODA1YzBmOTcxNzZlN2IyOWJkM2JlOTdkYzEwODIgbGVnYWN5LXRydW5rCis0NTg4NyA2YmMxZTgzYTk3YTY5ZmI4OTlhYTRkZWE0NzA5ZjQ4NGVjNTQ0MjU2IGxlZ2FjeS10cnVuaworNDU4ODggZTkyYThiOGVlYzczYjgzY2I1NjViZTlmYTk0MjM2MjdhNzhjODAyYiBsZWdhY3ktdHJ1bmsKKzQ1ODg5IGEwNmI2OWY4YzI3NmE4OTQxZGJjZTJlZTIxZTMwZTY0OWNlMmM1YjkgbGVnYWN5LXRydW5rCis0NTg5MCA4OGI4OWY5NmI5N2ZmMDc5NzdmNGNmZmM4NmJiNTcxODgxMzFjYzU3IGxlZ2FjeS10cnVuaworNDU4OTEgOGMzODNlZjc4MTk4NDlhOGM4YjBiY2ZhMWZhZjljMWZiZjg0NTJmMCBsZWdhY3ktdHJ1bmsKKzQ1ODkyIDAyNTE4Y2YxN2E2NmVhNzYxN2E3YzEzZGZkMzQ5NmNiOGVlMTM2MmQgcmVsZWFzZTI0LW1haW50Cis0NTg5MyAyOTQyNTA4NmU5YWI2MjhiMzE5MjRjZjZjYjMyMmY1YmRmMmY2M2U5IGxlZ2FjeS10cnVuaworNDU4OTQgMjIwYWQyMDM5NGRmMGIzMWE0ZGU1OWYxMDI5MmI4MjliYWIwZmM0YiBsZWdhY3ktdHJ1bmsKKzQ1ODk1IDkxYTY0MzZmMGE1ODRlMTJkNGE2YmUzODRlZDdiZGU4NTAwMDVlN2YgbGVnYWN5LXRydW5rCis0NTg5NiBjZTJhN2ZhZGMyYjA0ZTIzODhlMDg5NDY2ZmUzMDE4YzllNTZmN2UyIHJlbGVhc2UyNC1tYWludAorNDU4OTcgMGU3ZDM0YWFlYTYxMzFlZDk3YTBjMWI4NjZiMmU2MTk3ZWE4Yzk3MSBsZWdhY3ktdHJ1bmsKKzQ1ODk4IGJlNDk2NDVlMzk4NDEwYTY2YjkyZWY5YjEyOTA1MGE4NDNlNWJjMDMgbGVnYWN5LXRydW5rCis0NTg5OSBiNThmNzUwZDUyMTAxZmUzNzc3OTUxNzgxOWMzZDhkYjJmMDRjYjgyIGxlZ2FjeS10cnVuaworNDU5MDAgNzljOGEyYTk4OGNiMzk0NDc5YWEyYTA2MTUyZmIwMGMyMjc5YzcwOSBsZWdhY3ktdHJ1bmsKKzQ1OTA1IGE2YTEzNTlhYWI4NGRmNTMxZDdkMDM3YTc4NDJhODFjYzhhY2VkOGIgcDN5aworNDU5MDkgYmUwY2NhNzBjY2FhZGIzMTE1MmU1NTI1YzcxYmJjYTBlOGE3ODQ2MCByZWxlYXNlMjQtbWFpbnQKKzQ1OTEwIDU3YmQ3YzdkOTFlM2FiZTAyMWFlNWIzMDdiNmEzNjExZmU4ZDFmYmEgcDN5aworNDU5MTMgMzYxODEyNmM2MzA0YzcxYTgzMzgxM2UxZWY0NThiNDRkNGYzMDA0NiBsZWdhY3ktdHJ1bmsKKzQ1OTE0IGMwMWMzMzdhZDYxODhlZmUwMjVhOTE2MmQxMTg0OGUzYWQ5ZmVmMDIgbGVnYWN5LXRydW5rCis0NTkxNSBhNTk2ZWQ5M2NmNDI2NGIyN2RjZGY0NjYyMDMzYmUxNzVkZDc1Y2YxIGxlZ2FjeS10cnVuaworNDU5MTYgNzQxZmI4M2I0ZWFiNDc2MTJkOTA4YTcwMjE5OWNjMWFiOWZiODliYiBsZWdhY3ktdHJ1bmsKKzQ1OTIwIGMzMzQyZDg4YWVmZDRjYjY3OTdiOTBkNzU4M2Y1YjNiOWNhYzNkZDAgbGVnYWN5LXRydW5rCis0NTkyMSAyYzVlNzRjNjQ1ZTI4Yzk4ZGM2NThiM2JlY2NmOGUyOWNjNjA1MDhmIHJlbGVhc2UyNC1tYWludAorNDU5MjQgYzNhMzZkNDU2ZGVhMGJmMzNiNDk1NmJlNGFhNTU4OTAxM2Y5M2I0ZiBsZWdhY3ktdHJ1bmsKKzQ1OTI1IDBkODc5YmZmMjVmNjZjNzIwZDdkOGE3OTU5MWZhZWY3N2VkOTU5NjYgbGVnYWN5LXRydW5rCis0NTkyNiA5MGRkNTdmY2QyNGUxMmJhZDMxZDYzMDZhYTNkOTQ1Njk5MGNhZGE3IGxlZ2FjeS10cnVuaworNDU5MzEgNGMzOTE4ZjIzMDNiNWE5NWJmN2RhODA2NWVkODgyYzc4ZmQ0Zjg0NSBsZWdhY3ktdHJ1bmsKKzQ1OTMyIGU3MDM1Mjc1MjQ1YmFlMzY2ZjA1NWVjZGE5M2QyNzVjOWY0Nzc4MjEgbGVnYWN5LXRydW5rCis0NTkzNCBkMDE3MDI3NmM1ZGVkMzA0YmQ0NDM4ZjA5NjAyY2M4ZjQ0ZGI0Mzg5IGxlZ2FjeS10cnVuaworNDU5MzYgZGRmMDA2OWY2MWY5MmQ3ZWQ1ZDhjNmI2MWQ2NGY2OGI3ZWVjNjc1MyBsZWdhY3ktdHJ1bmsKKzQ1OTM4IDgyMjVhZWU5MTkwNDk1MDkzYWQ4NTg2MjczZWNiZTk3ZWRmNjMwNmEgbGVnYWN5LXRydW5rCis0NTkzOSA2ZDFlMjQwYzkxOGMxMmYwNzRjYzhhNDMzMDgxZWM0NGVkZmY5NDY5IGxlZ2FjeS10cnVuaworNDU5NDAgYjQ0ODU5ZjBiMzA4YmM4NDk2MTMyYjA0NGY3Nzk0NjJlM2NjZTYwMCBsZWdhY3ktdHJ1bmsKKzQ1OTQxIGViNDg3OWMwODVhYWE4N2YyYjk2NzkwZjE0ODE0YWE3MmFlMmNjMDcgbGVnYWN5LXRydW5rCis0NTk0MyBjZTBiNDdkM2U1ZDEwYzcwMjk2YWVkOTg1MTljMzI0ODA5ODI3ZTZmIGxlZ2FjeS10cnVuaworNDU5NDQgMDYwNmI5YzA4YWMyNGYxZGRiNzg1N2U1MmZjM2Y2ZThmOTdlMzQ0OSBsZWdhY3ktdHJ1bmsKKzQ1OTQ1IGYzYTVlMTUzYzMyOTQ5YjgxMTcxNjgyYmZlZTQ4NWFkMjIwYmNiMDQgcmVsZWFzZTI0LW1haW50Cis0NTk0NiA0Yzk5MjJkOGRjZGQxMDdmYzE4OTg3YTg2YTZlYTNjMDlhOTg1NDVmIHJlbGVhc2UyNC1tYWludAorNDU5NDcgZjFlMjQ0NTJkYmJhN2IxYWVkNDY5YmZhMDVlNThiYThkMDVmZDM1ZSBsZWdhY3ktdHJ1bmsKKzQ1OTQ4IDhkYTA4ZDg1ZmNiMWU2OTJlMTAyNzcyMDAwN2ViZjI2NzY0ZmEzZjggbGVnYWN5LXRydW5rCis0NTk0OSA5N2RiM2Q5YjE0NTgwMDkxYzQzZTU4MWI0Yjc4YzU3YzY3NDM1NTFmIGxlZ2FjeS10cnVuaworNDU5NTAgOGM4NmNhOGYyNjgyODgwMWQ3NDQ5NjM3MGMzMmE1ODE0NjdiODQ2MCBsZWdhY3ktdHJ1bmsKKzQ1OTUxIGVlYTE3NmU2N2YyMjg4NGM1NTY5Njk3ZDgxMGEyZWI1YjY2NjIwYWMgcmVsZWFzZTI0LW1haW50Cis0NTk1MiAxNDU3MzM2ZDQzMmZlNDU5YmVhOGMwNTRiOWQxNjc5MDMzNmNkYjFjIGxlZ2FjeS10cnVuaworNDU5NTMgNDI3MjhjYjE4ZWEyNTYwYzFkYTY1ZDc2ZmU1MjE0MzNhNjc0MmI3MiByZWxlYXNlMjQtbWFpbnQKKzQ1OTU0IGY2MWM4OTJjYWRhYzk3NzQxNTRhNGQ0OWZkNjFjOTQ4YjcwZjgxOWUgbGVnYWN5LXRydW5rCis0NTk1NSA3ZmU0OWRiY2JiZGFiMWM5NTk5ZTRlNWQ2NTYzOTdiODIyYmIyNzZlIGxlZ2FjeS10cnVuaworNDU5NTYgZjI2ZmMzYWVlZjk2Y2I0NzhlYjhmZWJlZGU1YTczMDA0ZWQ5OWNiZCBsZWdhY3ktdHJ1bmsKKzQ1OTU3IDY3MDEzMDllZmE3Njg2ZTYwMjcyMmNkMzUxNzQzN2FkZTExZjZiNDAgbGVnYWN5LXRydW5rCis0NTk1OCA4NmEwNTFkMjI2NGQyYTI5MDU4MmI0ZWYwOGEyNWY1ODVlZWMxMTk0IHJlbGVhc2UyNC1tYWludAorNDU5NjAgOWQ0ZmNjMzkwMjM2ZTRhYjVkODEwMDVkNTJkYmVjYTc0YTJkMzJhZCBsZWdhY3ktdHJ1bmsKKzQ1OTYzIDlhNjM3YmY0ZGY0MjdhYmEzYWZjYTA3NjJjMzIzMWUwZDBlNjk4ZDYgbGVnYWN5LXRydW5rCis0NTk2NCBlMmVmNjBmZWMzZGFkOTFhNmRmMWU0NTE0YjAyMGU1N2Y1MGE3MWEyIGxlZ2FjeS10cnVuaworNDU5NjUgNDA4MmQxYTExOTE3YzEwZjIwOTNkODJhNDc4OGRkYmJjZTM0ZWExOSBsZWdhY3ktdHJ1bmsKKzQ1OTY2IDhmNDA4YWEyYTdlZmE0N2Y0YTViMDcwNDZkNWFmNGUxMDg1ZTk1NTMgcmVsZWFzZTI0LW1haW50Cis0NTk2NyAyYTliNDVkYzMxMTQxZDllYmI0MTU5Zjc5ZWQwNjMwOWViYWU0YmZiIGxlZ2FjeS10cnVuaworNDU5NjggYjIxYmU5ZDIzNDFhOTA3Mjk3NDg1M2ZkZWQ5NTgwNGEzYWVhYTEzZCBsZWdhY3ktdHJ1bmsKKzQ1OTY5IDdmYzkzZDk1MzBiZjYwZGY4NTI4MjYwMmQzNTQ0MDA0MjZlMGExZDMgbGVnYWN5LXRydW5rCis0NTk3MCBjNGFhNTZkN2E1YzEwNjM5NDM2NzViOTM4ZGU0YWE2NzJkNjYzYTBjIGxlZ2FjeS10cnVuaworNDU5NzQgNWUzNTQzYjc4MzM3YmEzNzZiMjFhOWNhYjhhNjJjYjI3Yzk1NzJiNyBsZWdhY3ktdHJ1bmsKKzQ1OTc1IGJmMzczNTIwNjg3MWJkMjdlOWRhMWMzOGFjZTA4NmRjNTcwMGI5ZDUgbGVnYWN5LXRydW5rCis0NTk3NiAwNzk1MzcyYTg0YWJmZTBkYzYyNWJjMGE3ZGViZDM5NzczYzFmMmUzIGxlZ2FjeS10cnVuaworNDU5NzcgNzg5MGY2YjkyYzE0OWNmOWIxOTY0YWE5MWUwYTI1YWQzN2MzMzdjOSBsZWdhY3ktdHJ1bmsKKzQ1OTc4IDRkZTMxNTVlMTkyYmM5OTA4ZjZmZGRjOGM4M2Y2YmQxNzJiOWViNTYgbGVnYWN5LXRydW5rCis0NTk3OSBjZjc4ZjljNDc5MGVlMTI5OWE5NGNkM2Q1MTM3ODNmODhlZWRhYmRhIHJlbGVhc2UyNC1tYWludAorNDU5ODAgNTc0ZmZjNGQ3YmY2YmM3Nzc0MDViZjA0NGFmNWNkZjZiZDFkMjY1NiBsZWdhY3ktdHJ1bmsKKzQ1OTgxIGJiNjA5Mjk5NTQwOTkzNTEzNmEwMmM5ZDBlOWZiODNlODE3ZTFkYWUgbGVnYWN5LXRydW5rCis0NTk4MiBhNzk3ZWZiNGU3ZjgzZmVmMjM1MzNiYjRjMDQ3NzVlNjc1MzFiMzM4IGxlZ2FjeS10cnVuaworNDU5ODcgODVjODI4ODc4MTg4YjM1ZGJkZTA0ZGE1NzRhODI5NjBjY2NjMTdlYyBsZWdhY3ktdHJ1bmsKKzQ1OTg4IDhiNjAxN2M5MzdhYzI3ZjAwODkzYWExZTk5NGE4ZTdmMTY2YjhkYWQgbGVnYWN5LXRydW5rCis0NTk4OSA1MjU2MjRlOTRlNzhhZTc2ZGE4ZTg1MzJhYTM5NzFjMmI0ZGJjOGY3IHJlbGVhc2UyNC1tYWludAorNDU5OTAgMzI0NzJlYTVmM2NkYjYwOGYzNjcwMmRmYmIyZGVkYjAwZTE1OWIyYyBsZWdhY3ktdHJ1bmsKKzQ1OTkyIDM4MGRhZDM5NTU5OTE0ZjlkNTQ3NmFmZGZkMmY4MDg0NDkwOWFlZmUgbGVnYWN5LXRydW5rCis0NTk5MyBlYmQ1NzMyMTBlMjUwMzhjZTQ0YzA1MDY4ZTE2OTg1ZmY1ZDZiYjdhIGxlZ2FjeS10cnVuaworNDU5OTQgNGJkZjI3YmQ3M2QyMmFkNWU3NzRiMjYyMGE3YTNlZTgzZjRhMDk4MSBsZWdhY3ktdHJ1bmsKKzQ1OTk1IGNkZjhmNTMzNDQyNjllOTIwNGQ2NTlhZDc2N2MxNGI4MWE0OGVkMjAgbGVnYWN5LXRydW5rCis0NTk5NiA2NzY0OTJhOTNjOGE3YmY3ZGVjNTdiMWY2YTk5ZDIzNWYwN2IxNzMwIGxlZ2FjeS10cnVuaworNDU5OTcgZWY4MmM1ZDAxNDYwN2ZiYjU4ZmMwYzEwYTc5NWY5NTViODY0NTdiZSBsZWdhY3ktdHJ1bmsKKzQ1OTk4IGYyNTJjNmFlMGM0MjY0MzYyNmM5NDYyNWE1ZTcwNjA3NTQ1MTJjZWQgbGVnYWN5LXRydW5rCis0NTk5OSAyOWI3MzZmMDczYTM1YzNmYjhlNDA0MDIxNjdmYWI1M2ZmYTBmNGI0IGxlZ2FjeS10cnVuaworNDYwMDAgYWI3MDRiOTllMTUwY2YwMzc1OWU3ZWE2ZWZlYmNkY2Q2ODAzM2JmZiBsZWdhY3ktdHJ1bmsKKzQ2MDAxIGQ4MzU1Y2NjZmY0YWNmYzI5N2MyNjA4MmYyY2NkM2Y2MjE4NzJjYTcgbGVnYWN5LXRydW5rCis0NjAwMiBmZWE1ZDJmZDliOGE0ODNjNzExOTY4YzhiNzEwZjA1YTM5ODQ5MTlmIHJlbGVhc2UyNC1tYWludAorNDYwMDMgZTdkMzBkNzVkYWU3YzJiZmI0MDg1ODg0MDgyNjM2ZTc0Zjg0MTAzYyBsZWdhY3ktdHJ1bmsKKzQ2MDA1IGFkOGI3NmU5OTI2MTA1MmIxOTE2ZDMwMjczYzY3M2U4OTUxNTJkMjcgbGVnYWN5LXRydW5rCis0NjAwNyBjYTEwNTA3YTZhZmJmM2NjN2I2ZmJjMzI3MWEzYmFlZTYxOGM1NDM2IGxlZ2FjeS10cnVuaworNDYwMDkgMGFlNGJiNzRlNzgxYTgzNGMzYTRkOTIzYjI2MWVkMGU2N2JjOGFjZSBsZWdhY3ktdHJ1bmsKKzQ2MDEwIDMzNzlhZDY2YjBlMDczYTQ1ZmM3NTFlYWI1NTljM2QwNzViMWMxMzYgbGVnYWN5LXRydW5rCis0NjAxMSAzYjVjZDdjNjZkYTA5MDk3ODc1YmRkOTcwOTljOGQzMDdmMjUxNDJhIHJlbGVhc2UyNC1tYWludAorNDYwMTIgZDZkODc5YWYzNmQzNGE1YzcwYTIxYWFhNzY1NmVjYTU1ODJlNjFiYiBsZWdhY3ktdHJ1bmsKKzQ2MDE1IGY4Mzg1ZDZjOGY1ZWUxNjA0NTFlNzllZjk5M2ViZTkxYmU3MDVkZWMgbGVnYWN5LXRydW5rCis0NjAxNiA2Y2Y0NjYyNzYzYTFhMjkzYzQ2NDQ2YWRiYzcwMTA4OGEyMDBhYjk5IGxlZ2FjeS10cnVuaworNDYwMTcgMzY1NjNiMTNjZTc5MmE3MmJiMGY4MGFlMGQ1M2E3MGNmZjMzZmE2OSBsZWdhY3ktdHJ1bmsKKzQ2MDE4IGY5MTM1MDUwMDgzNDZmNDNkMTZkY2FlMjkwOWYyYTljYzBlNWQwYjYgbGVnYWN5LXRydW5rCis0NjAxOSBkNmVhN2Q0M2ViZmMwYWJjNzYwMjY0NWU0ZTI4YmEyOWNmZWIxMjJhIGxlZ2FjeS10cnVuaworNDYwMjAgYWM1MDZlMmRmMDRkNTM5NmE0OTY3ZTRlNzgzMGE5ZjU1ZjRiYzg4OCBsZWdhY3ktdHJ1bmsKKzQ2MDIxIDIwNGVjMzgzYjQ0NWFiZjM5YmY3NTJkYWVkNDBiYjI3ODA2ZGVhMjQgbGVnYWN5LXRydW5rCis0NjAyMiAzMDE4OGM1MjNiYzU1OGRhZDA3N2IzNWRjZDI4YmM3YTk1MTI2YTI1IGxlZ2FjeS10cnVuaworNDYwMjMgYWFlMmZmMzNlMjdjMzg1NDBkYWE3NGU3MWIzOTJjZGM3MGFlMTE1OCBsZWdhY3ktdHJ1bmsKKzQ2MDI0IGFiMWRjN2UyM2JmZTUxMzllNTY0NTcxZTk2NjBiNzY5ZWFhZGZkNTYgbGVnYWN5LXRydW5rCis0NjAyNSA3Y2FhNmQzM2E0YzY3OThkNDgwNjM0MWEyYTc3MGVjMWNhZmFjNDMzIGxlZ2FjeS10cnVuaworNDYwMjYgYmZiNzZhZTgyYzkxMjFiZTA4M2EzMGE4YmJlMjU1MGIwMmFjMDVkYiBsZWdhY3ktdHJ1bmsKKzQ2MDI3IGMyZTNiNWMzNmRlNDUyYmQwZTRlNzQ3MmFkYTMwNDE3YTYwN2YyZjEgbGVnYWN5LXRydW5rCis0NjAyOCBmYTNjNGVhOTlkOTVjYTZlZGVkMWE3ZjhlNTM5Yzc5NTM4Njc4M2I4IGxlZ2FjeS10cnVuaworNDYwMjkgMGI0NzMxMDQ5YjcxY2U4OTBiYmJlZDMzOWE3OTc2YmI5MmQzZjE0NyBsZWdhY3ktdHJ1bmsKKzQ2MDMwIDA3YWJjNjI4NDg5OWRmYTFmMGEzNTQwZjQwMjBmNjRkMzRmMTk0MTIgbGVnYWN5LXRydW5rCis0NjAzMiBiNzNmMjRlMjFiMGFiNjRjNWJiOWQ4ZDhmMTc4YWJhZmIwOGEwYmIzIGxlZ2FjeS10cnVuaworNDYwMzMgYjI4NmVkNDU0MzlkNjYwYmUwYzkwMDc3MDJiMjM0YzdlZGQyOTVjMCBsZWdhY3ktdHJ1bmsKKzQ2MDM0IGIzNWNkYTU1ZDYwYzZhMTk3MDk1N2E4YWFiNzhmOTY4OWI0NmRiMGYgbGVnYWN5LXRydW5rCis0NjAzNSA3M2M3YWQ1ZTg3ZGViYTc5Zjg2ZGM4MDRkMTM2MTk5NjZlMTNkNGJlIGxlZ2FjeS10cnVuaworNDYwMzYgNmZlYWE0MmVmZjY5ZjRkNTFmMTJlYjJlN2IyODk2OTZiMGFhMDg4MCBsZWdhY3ktdHJ1bmsKKzQ2MDM3IDQyZDZiYWI4ODA3OWZmNjBkZTIxYjE3NzYwYmZkNDM4ZGZmOGZhNTcgbGVnYWN5LXRydW5rCis0NjAzOCA4MWUzODVhNjQxZWY4YjA3MDNhZWViODVmN2Y5ZDZmNjAyZDZmNDQ1IGxlZ2FjeS10cnVuaworNDYwMzkgNGNiOWRjMGRjM2Y5ZWJkMWI1ODZiZjYwZWQ5OTVkMjI0YTc5N2NiZSBsZWdhY3ktdHJ1bmsKKzQ2MDQwIGM2NGNkMjcxYWNlYTlhZmM0NTZkNTc3YTVkMTRiMGQ2YTdmNzFhODEgbGVnYWN5LXRydW5rCis0NjA0MSBjMDdhNWMyMzA0ZjNmY2Y5Njk3MGM3MWRkYWZmNTBhZGJkMzc5MGQ3IGxlZ2FjeS10cnVuaworNDYwNDQgMjE5NTk3MmY3MzkxZDRlYzQxNmJjOGNkNWE2NDFlN2ExN2RhYTVkZiBsZWdhY3ktdHJ1bmsKKzQ2MDQ1IDI2ZmI1NjM4ODFjOTNkOThiYjViNDBkNWQ1NmIyOGYxN2M4NjVhY2EgbGVnYWN5LXRydW5rCis0NjA0NiBjYmYyZDU2MmUzMjI5MjkxMDQwY2FhMjBhYzgyYzkwOWRhN2UyMWZiIGxlZ2FjeS10cnVuaworNDYwNDcgYzQ5MDdkOTkwZGI1ZDcwYThlM2RiNzU4NTIyM2ZlYWRhOWMzYjA0MyBsZWdhY3ktdHJ1bmsKKzQ2MDUwIDI4NTExNTU0ZGZmMWZmNGViZDUyOWE2NDAyOTg0NTNhZGJjZGNlYWQgbGVnYWN5LXRydW5rCis0NjA1MiBiMGJhNGU4MjI5Zjc3NTE5NjQ3MTRkNzY1YWI0MDQwYWVhM2IyZDJmIGxlZ2FjeS10cnVuaworNDYwNTQgYWNjZGYxMTI0YmEyZWRmM2JlMjYzMmRmNzgwMTlmYjFhODQ0YTc4OCBsZWdhY3ktdHJ1bmsKKzQ2MDU1IDEwOTQzN2M0Y2FjNDc2MDk3Mzg4ODgxMjU2NWZlYWIxMTU5N2ZlODQgbGVnYWN5LXRydW5rCis0NjA1NiBmOTYxMjE3N2QwOGQxYmIzMzE5NGNhYTY5ZWNmNmUxNWRmZTgyNGJlIHJlbGVhc2UyNC1tYWludAorNDYwNTcgY2MwNTU2YWRjMmIwY2JmMTE3YzRjNWQzZDBiNDU1NjIzYTU3MmJmMyBsZWdhY3ktdHJ1bmsKKzQ2MDU4IDJkMTgyZmNmYWI2Yjk4MDQwZGZhZjBmMGE4YmVkZDZiNDMzNmZkY2UgbGVnYWN5LXRydW5rCis0NjA1OSBiNGJkYmQ3YjFmNWVlNzYyNzI4Y2E4YTEwZTAzODFjZGVmNmFkYzAzIGxlZ2FjeS10cnVuaworNDYwNjEgY2ExZjFjMjE4OWU3NGZhZDBkYmFiNDVkMTZkMTk4MTAxOTViYjRjNCBsZWdhY3ktdHJ1bmsKKzQ2MDYyIGE2OWVlNWJhZDliMjNjNmViODY5ZWI1YjY0M2MxZWU2MzE4ZDI2NzcgbGVnYWN5LXRydW5rCis0NjA2MyBkYWUwZTRjMzkwZTc3MjE0NWJmZWQ1Yjg4ODYyYjRlOGI0MTgyYjZhIGxlZ2FjeS10cnVuaworNDYwNjQgYWE2MjA4NTZlOGEzZjc1Y2E2N2ZmZTlkOTNiZGRkMDU2MWI1MTZlMyBsZWdhY3ktdHJ1bmsKKzQ2MDY1IDk1OTEwYmM2NWY2Yjk5MWY0N2M3ZWNjODY3MjlkOWQ5YTczNGQ2OWIgbGVnYWN5LXRydW5rCis0NjA2OCAxMDU1ZDYyNmVkNTk0ZDYzOGYwNDMzMTI1NzFkYTlhYzFhZDk3NTU2IHJqb25lcy1mdW5jY2FsbAorNDYwNjkgODgyYjYxMmE1ZmU5Y2I3YTM1Yzc4ZmVmMzQxMDZkZDMxNGM1MDViOSByam9uZXMtZnVuY2NhbGwKKzQ2MDcwIDI3YzgwMDU4MTczZThhN2FmMWEyYzZmODQwMGQ4M2IyYTQyMWJlNzEgbGVnYWN5LXRydW5rCis0NjA3MSBmYjRmMGZkN2ViYTRlYmUzNTc1OGZkZGViMjVlNDMwN2JjMWU4ZjgyIGxlZ2FjeS10cnVuaworNDYwNzIgNTEyNDFjYzk1ODgzZWRlZDVjOGQ3NWQzZDg5OWNhNGM0MjcyMTIwNyBzcmVpZnNjaG5laWRlci02NGludHMKKzQ2MDczIDdlMTZmY2NlMzRhMTM1Mzk1MWE5NWM2ZWIyNDdiNmNjNjE0Y2UwNjEgbGVnYWN5LXRydW5rCis0NjA3NSBkNzEwYzJkYmEzZTg4MGM5MjBjZmU4OWQwMWY5MDEzNTg4YzljMzA5IGxlZ2FjeS10cnVuaworNDYwNzYgZmViMDBkZjkxOTIyMDZjNDQ0YzQyY2IyOTQ1YzY1YThmODc3ZTI3OCBsZWdhY3ktdHJ1bmsKKzQ2MDc3IGNjZWQ4M2E5MTU3NzhhZjdkMjBhMzJhMTU4N2YyMDMxZTg4NDYwYmIgcmpvbmVzLWZ1bmNjYWxsCis0NjA3OSA2MDRhZjg2N2M2NWZiODEyNTI0ODNlZjVkYWU0YWQyNGFhNDhhY2VhIGxlZ2FjeS10cnVuaworNDYwODAgY2QzNGEwODgzMDUzNmUzYjE0NDdhMTUzOWY5ZWQzMGE1OTkzZDFhMiByam9uZXMtZnVuY2NhbGwKKzQ2MDgxIGVjNTRjNmRmOTA0MDJiZmVmMWJhNjEwMTk1NTM2OTgwZTJmMzJlYTMgcmpvbmVzLWZ1bmNjYWxsCis0NjA4MiAwMmEwYzY5MjhjNTBhN2MxYzY5MjFiOWQwZWQyOWE0ZjRiYTI4YTViIHN0ZXZlLW5vdHJhY2luZworNDYwODQgMDM3M2EwNzQwMDRjMmVhOWE1NDlmMmVlZjFhYTYyZDg1MGQ1MTdjNiBsZWdhY3ktdHJ1bmsKKzQ2MDg1IDVlYWY4Yjk1ODdkODY5OTQxYzQ4YWJkMTE0ZDcwMzJmYTZiYjYwNTUgbGVnYWN5LXRydW5rCis0NjA4NiA4NzIwNDJhM2IxMzQzYzlhNTIyY2RlMmY4ZTg1YmY4ZTE2ZWQ1MzM3IHJqb25lcy1mdW5jY2FsbAorNDYwODggZmI4MTZkZmNkMDMxNTQzMGUyYmZmZTc0NTAzYjBiYjgwMDJjMWYyZSByam9uZXMtZnVuY2NhbGwKKzQ2MDg5IDRjZWFiYjU0MTRkNWYyYTI0MzNmMmEzODc2NDlhYzY5M2Y1NGZkMmUgcmpvbmVzLWZ1bmNjYWxsCis0NjA5MCA5YTI4YmZhNmY3ODdjNDYzNzNhOGNiYmIwMGVlNzQyOTUxYjY4NDQxIGJsYWlzLWJ5dGVidWYKKzQ2MDkzIDAwNDU2ZmNhMzdjNDI0NGNkZWRkYjIxYjg0NTUzYmYzZTdlNzJlZTMgcmpvbmVzLWZ1bmNjYWxsCis0NjA5NCAwZGU5YTc4OWRlMzkwNGU1YzY5OGEwOWFkY2FkNmIxZTJlYWU3Y2Y5IGxlZ2FjeS10cnVuaworNDYwOTUgMGJhNzExYTQ5NmU2YjAwMTlkMDM0NDQ3ZDJmZDlhZTRkOWQyNmZhMCBsZWdhY3ktdHJ1bmsKKzQ2MDk2IGE2MzdjNzhiZjExOTVlZmM3YjVmNGE5NDdiZjFlMGZiMTg5NDQwYTIgbGVnYWN5LXRydW5rCis0NjA5OCA2YTZjNTQ5MmI5YWQyZWFkOWFlYThlMzAyMzc3NzdhY2Y0NTg3MDQ1IGxlZ2FjeS10cnVuaworNDYxMDEgZWUyMTM5OTM1YTFkM2FmNTJkNTAwOWI3NDcxOTI4NjQwMjIxNmZjMiBsZWdhY3ktdHJ1bmsKKzQ2MTAzIDViNTg3MTkwZjRjNjg1NzdhMzI1Mjk2M2M4NTc2YzRmNDNmOGMxNjQgbGVnYWN5LXRydW5rCis0NjEwNCAzMDc4ZmRiN2NmM2RmNTVjNzNmNDNhZmI1MzI3OTUyN2E5OTExNmZkIGxlZ2FjeS10cnVuaworNDYxMDggYjdhYWYyMWM0NzU2NDAzZjAxODI4YTc5YmZjYjI2YjcyZmEzYWI5NCBsZWdhY3ktdHJ1bmsKKzQ2MTA5IDc2YmVkZjllZDIyZmYyNGUzZDU0MzdjNjRiZjUwYjBlOTc2MDBkZjggbGVnYWN5LXRydW5rCis0NjExMCBjYTM0NTIxYmIxM2MzODM3ZDY1MWZjYTkwYzFkZjBjNGJjZTI5MjIyIGxlZ2FjeS10cnVuaworNDYxMTMgNzViZGQ0NGY4NWRjZDRhZGE4NmNlYjA5ZTJmNzJjNDQ3N2NmMGVkYiBsZWdhY3ktdHJ1bmsKKzQ2MTE1IDlhOTA3NTNmNmJmYmIyMWE5ZDdiZjIxM2VjOTdiNWYxNzQ0NDcxMjUgLi4vYmlwcG9saXRvLW5ld3N0cnVjdAorNDYxMTcgNjY3YTJjYWU3OWU2MjY5NjUxNmI5MTIwMzE2ZjBmM2ZiOTZkNGM3NiAuLi9iaXBwb2xpdG8tbmV3c3RydWN0Cis0NjExOCA1ODMxN2RmNGQzMGJiY2I0MmRhYjAzNzI4OTU1ODY1YjQ0ZDQ4ZWEzIGJsYWlzLWJ5dGVidWYKKzQ2MTIzIDRiMGZmNzg4ZTlmZGFlMGE3ZGJiNmVkY2Q1MjU1Mjg3ZmQ0ZjMyNWMgcnVuYXItbG9uZ3NsaWNlLWJyYW5jaAorNDYxMjUgMGYwZjA0NmEyOWZiYTQ4ZGM3ZjdlODNhYTM4YjRjY2U5ZGE4ODlhYSByam9uZXMtZnVuY2NhbGwKKzQ2MTI2IGZmNTBhZTEzZGI5ZTY4ZGZmNjBiNTNkODUyYTE3MTkzNDA1ZGE3ZmQgcmpvbmVzLWZ1bmNjYWxsCis0NjEyNyBlYWFlNjk5MGUyZDE4ZDJhOGRiNDdkNjZhYjA5YjYxOTdlNDk3OGE1IHJqb25lcy1mdW5jY2FsbAorNDYxMjggNGJkMjk5ZDAwZTRjNmYxNzNjYmZmMzVkZWY5MzgwZjQ5Mzk0ZTllOCBsZWdhY3ktdHJ1bmsKKzQ2MTI5IGJmNWZiNmU3NTI3YzJmZmU4NTFhOTlkNTIwZGNlYmYzNTcxYWJjODggbGVnYWN5LXRydW5rCis0NjEzMCA0OTVhMzRlNTRkNjBhNTI3ODUyZDg3MDRhNDRhZmFkMzkyMGZiYWYzIGxlZ2FjeS10cnVuaworNDYxMzEgOWVmY2NmNTZkNGU3MWY0ZDQ3M2VmMDJiNDgzYmRmMWQzZjQ1ZDliZSBsZWdhY3ktdHJ1bmsKKzQ2MTMyIGFmNDZjN2VkMDVlYjc5MWIxZTQzNjViNzgwODI0MmViZmJlMjY4NDQgbGVnYWN5LXRydW5rCis0NjEzMyA5ZmRkNDM0MjE2ZWY4MmVkYjJlZjdhNWZhN2MyNjdmOGNmMWViZGMyIGxlZ2FjeS10cnVuaworNDYxMzQgODk1ZGE0MjQ4MGYxYzM1NzM3MDhhYzEyODhkZGY0NmY4YzFlNDU5YyBsZWdhY3ktdHJ1bmsKKzQ2MTM2IGMxY2UwYjgzMTYzNjcwM2QxM2Q4MTA3ZWU2ZDQwNTMxYzBlNGZhY2MgbGVnYWN5LXRydW5rCis0NjE0MSAyNzg4MmE4ZTQzYTllODliMTAzM2IyMmEzNzMxN2EwNGFlZTllOThkIGxlZ2FjeS10cnVuaworNDYxNDIgNmI3OWZmZmJiZTFmMDQzM2QxYmQ1YWMxNTBlODRlNjQ1OTM1NWJhMiBsZWdhY3ktdHJ1bmsKKzQ2MTQ0IGVmYjdlODcyNGVlZmE2Y2U3NjA0N2FhOTVhZjQ0ZGNjZjFmZDE1ZjUgbGVnYWN5LXRydW5rCis0NjE0OCAzMzYzMWI2YjA4MDE0NzU5NmU2MjA1ZjUzZWI5YTk5YTY4NDFhODZiIGxlZ2FjeS10cnVuaworNDYxNDkgN2Q4MmNkZWQ4YWIxNTJlYjE5NTQ4ZmY5OTk4OTM3NjYxODUwNjQzZSBsZWdhY3ktdHJ1bmsKKzQ2MTUwIDc0YzgyZWJjNGU0NDk5MWNiNWE1YWQ3MGVhOTQ3NWYzNTNmNDVmNGQgbGVnYWN5LXRydW5rCis0NjE1MSBjZjVhOTA1N2VkM2E5MjA0ZWI4NzU2ZGI5YzQ0ZDIzNWJhNzBhZjM5IGxlZ2FjeS10cnVuaworNDYxNTIgZTA3ZGMxMzQ4ZGFkOWQ0YzQ0N2YyZjIyMDFlZDRjOTdmNTI3ZDJmYSBsZWdhY3ktdHJ1bmsKKzQ2MTUzIGI4YmVmNWEwN2RmNmNjZmI1MjEyZGU3ZmI3YzExMjdmZWMwOTA5ZTggbGVnYWN5LXRydW5rCis0NjE1NSAxZGM1NjU3ZjE3NDUzYzcwYTc4YmU2Y2E3NmUyNjNmMzRkY2Q4NTVjIGxlZ2FjeS10cnVuaworNDYxNTYgMzE0ZDY2NmM3YWRiZDFkN2VjMjQ5OGIzMTYwZmQwNzg2MThjOTM4OSBsZWdhY3ktdHJ1bmsKKzQ2MTU3IGRlOWYxYTE0MDYxMTkzNzJkZjllZjIzYTQyM2Q4YjYyYTA4Njk1ZTcgbGVnYWN5LXRydW5rCis0NjE1OCA5YWU2OWJjYWI5ZjcyMjE3YmJjMTRlYTlmOWU1MzgzODFmMzc2MTA5IGxlZ2FjeS10cnVuaworNDYxNTkgMDY5MWYzZmIzOWNhYTFkMGQ5YTQ4ZDRlZWU0ZWE4N2MxNWM2ODE3OCBibGFpcy1ieXRlYnVmCis0NjE2MSAyZDU1ZTk3OTAwMzU4YmI3YjQ1MzNkZDA5Njc3NWQ3NmM5N2Y2ZWQ0IGxlZ2FjeS10cnVuaworNDYxNjIgMzU3YjU0MDNlODFhZDNjOWY2MzcyMzM3NjllOWNhN2E0ZjYxYWRmYSBibGFpcy1ieXRlYnVmCis0NjE2NCAwNDJlZDZmODA4NDdjYzA0YmIzYTQwMTAzM2EzN2ZmYzM5ZDNkYTlkIGJsYWlzLWJ5dGVidWYKKzQ2MTY1IGE1ODliNzQ0MTVjMDIyZjZlMTZlNzAxNGRjNmY2M2E1YTU0MjA4MTMgYmxhaXMtYnl0ZWJ1ZgorNDYxNzAgODliMmNhNTEyMzA3MjNlMmE4ZWEzMGQxNjQ0MmFlMGEwMmMxMzY5MCByam9uZXMtcHJlYWxsb2MKKzQ2MTcxIDBhOTU0ZjRlM2UzNmEyYWNjOTc2N2JkMGZkMjExMDk0M2VjMTA1NDQgcmpvbmVzLXByZWFsbG9jCis0NjE3MyA0M2IxNDc0YjUxMmJiYjRjZjAwOGZhZGI4ZmMzZmExOTljZDNjZTRhIGxlZ2FjeS10cnVuaworNDYxNzUgNmRhMzFjNDllYjBhNjg2MzYxZTFhNTY1Y2I4ODhmMzc0NWJhNmMwZCByam9uZXMtcHJlYWxsb2MKKzQ2MTc2IDIyOTk1YzEwOWVmZDY3ZTVjMDY2ZWNhNjljZjNjYTBkNDg0ZjNhZDEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjE3NyA4YWQ5ZTE0NDg5ZmZmMWYxYjU1OGUxYjhjNDQ2YWM4OWY0NWNjZDJmIGJsYWlzLWJ5dGVidWYKKzQ2MTgyIGI1YjI1Njk2NmZlOTJiNDE1Yjc0YjcwMzNkODg4NTRiMGZiZjQ2MzIgbGVnYWN5LXRydW5rCis0NjE4NCBiODI1ZTYyMjczNjY2ZTZkMmIxMTM4ZDU5ODJlMDlmNzgzOWUwMzM3IGxlZ2FjeS10cnVuaworNDYxODYgYzI2YjlmZGI2NWZiM2I1NzZiNjM1ZDUzMTdiMmY5YTQxNTczODZhMyBibGFpcy1ieXRlYnVmCis0NjE4OSAyNjBkNWE2Y2UzMGY0ZTI1NjlhYjgwMTdjMzY4Nzc1NzEyZDFmYWJlIGxlZ2FjeS10cnVuaworNDYxOTAgZmVmNDk2YWQ3ZjZjZDJiZGMxZjI1ZDdhYzA1YjQ3OTk5YmZkM2U3ZSBibGFpcy1ieXRlYnVmCis0NjE5MiA1MWQ2ZTI3MTgyNDM2OGVlZWFmMmJiYzY4NDc3MzkzY2NmZjBlNDA4IGJsYWlzLWJ5dGVidWYKKzQ2MTkzIGFhY2UzMTQ4ZjdlYmFmMDIyOTI2ZDNkMjc4NzhlYWMxYzZhMDkyNDUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjE5NCAzY2ZhZTNhMGU2OTU5MTA3MWQxNzRiMTRjMmJhYTI3MzE4OWYzNTBjIGJsYWlzLWJ5dGVidWYKKzQ2MTk1IGY3YTc3NDJhZWY4M2I4NTQyMzA3NGViZTE5ZWUwY2JkMTExYTFiYTUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjE5NyA1OGQyMGZlYjZlMDM5YmJhNmYxNjE4OTM3ZjhlMzgwZTBlYTc5NjQ4IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYxOTggNjg2MGMzNmY3ZGI3NTE0ZjVjYWQ5YmUzNTViODI4ZWQ4NjcyODgzNiBsZWdhY3ktdHJ1bmsKKzQ2MTk5IDkxZmUxYjBhZGJmMjYxNGY5ZWIwYmE5NzRmNjgxYjQyMjE1M2Q3YmYgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjIwMCAzMmJhM2EwYzYwNDA5MzgzZDhkZDMzNDg2YjE5ZWY3MTYxYzBlMDY0IGxlZ2FjeS10cnVuaworNDYyMDEgYjI0OTFmZDBhNGRjNmM2N2RiNGIyOWFhNWFkOWFmMjMxNDJiODliOSBsZWdhY3ktdHJ1bmsKKzQ2MjAyIDFjNWVlOTYzMWM2YjhiODk2NmJlODU3OWRlMTU5ZTY1YjA5YjIzNjUgbGVnYWN5LXRydW5rCis0NjIwMyA4OGNjN2U0ZjAxZmY0ZDBmNTdmM2MyYTBhZDE5OGE5NmQ3Y2U2M2RiIGxlZ2FjeS10cnVuaworNDYyMDQgYmNlYTc0YjM1ZDFmZWRlMGY3OTE3YzE0M2EzY2JkYTU1MWRjYWMxZSBsZWdhY3ktdHJ1bmsKKzQ2MjA1IDY2MzIyZmNhOTFiNDFiYmJjMzI0M2VjMGViM2IzN2MxMDlmMmFkYTMgbGVnYWN5LXRydW5rCis0NjIwNiAwNDNlMjlhMWUzOTg1ZWNjYjAxMDFmYTY1M2RlNmQ3YmFjYjE0YWRmIHJlbGVhc2UyNC1tYWludAorNDYyMDcgNDU3ODgxMjhhMWIxNTQ0OWVhNmIyZmNhYmQ4NGIwODc3YzEyY2UxMCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjA4IDY5ODE5OGNhYmJjNWFiNzc3NTFiNTkwOWMxMzlmZDI4ZGY5NDZiZmYgbGVnYWN5LXRydW5rCis0NjIwOSA4YzUxNDZjNTFlMmRmMDBlOGQyNzhkMTBmMGI0Y2ZkOTg4YzRjMGJjIGxlZ2FjeS10cnVuaworNDYyMTAgNzVlMWNkMjJiNTZiZGRjNGFmMGU4MDAzZjg0MmEwYWM0MmNmYzAyMCBsZWdhY3ktdHJ1bmsKKzQ2MjExIDNkZTcwNjRkZmE1NjQxNGFjNDVjOTgwOGM1MzUwNDVmYWZiYzI2Y2UgbGVnYWN5LXRydW5rCis0NjIxMiA5YmI0YzE5ZTU2MTM0YzY4OTFiOTBlOGFkNDhhYjdlMDk0NTY5Yjk0IGJsYWlzLWJ5dGVidWYKKzQ2MjE0IGFkMWUyNDM4Y2ZhYTViZjQ1ZTQ4Yzk5NDk2ZThlYjA0NDY1OTQ1NzcgbGVnYWN5LXRydW5rCis0NjIxNSA3YjNkNGE4MWU5NGRlNWFhYWFjNTZkZDgzYzc0ZWEyNzVmYmI1MDMzIGJsYWlzLWJ5dGVidWYKKzQ2MjE2IGUxNWIxNGM3ZmExNGQ1YzQ0MDA1MmFmMTEwNWNiMTkxODFhZWU5Y2YgbGVnYWN5LXRydW5rCis0NjIxNyA2ODhmMjU3NTcxMDQzMzEzZmExMGFmODA4Y2IxZWJlMDhkZmNkMTllIGxlZ2FjeS10cnVuaworNDYyMTkgNDE3NjhkZTE3ZWFkOTA5MmM0NTRhZGY5OTEwZjlkOGRiYjg1MmFjNyBsZWdhY3ktdHJ1bmsKKzQ2MjIwIDRjMGMzZWNmZmNhYzJiMzIxODQzYjE5Nzg5NGYzMDEzMzIzZmYyMmYgbGVnYWN5LXRydW5rCis0NjIyMSBiYTcxM2QzMWQwMGM2Njk5MjFiMzczM2NmNGM5ZWQwNTExMjA4YWFhIGxlZ2FjeS10cnVuaworNDYyMjIgMjljY2Q3NzEwNDEzZmVmZDllYTY5MDgyMGFiYjRlYjA0MDNiMzJlYSBsZWdhY3ktdHJ1bmsKKzQ2MjIzIDk4NmJlZTE2YmI0NDUxY2IxZDgyMzVhYjdlYjVlYzc4ZTM1MGI3MDcgbGVnYWN5LXRydW5rCis0NjIyNCBhZTZiYmYyZjJhNDEyYjZjNDFkMTU0NGMyMGU0MjQzNzNlZDdkNDk1IGxlZ2FjeS10cnVuaworNDYyMjYgNDE4MDk0MDZhMzVlYmEwNGY5M2FmYjRmNDU0YWNjMDVlYzk4NDEwYSBsZWdhY3ktdHJ1bmsKKzQ2MjI3IGRjY2JjYmJkNjcyMDhhMDc4MjMwZWNjOGE4MDNhOGQ5NDkwNjExZWEgbGVnYWN5LXRydW5rCis0NjIyOSA5YzA4YTdiZGJjMzEwYTc3NDYwODQ1OTlmNmRjYzU4ZWNlM2FjMGZkIGxlZ2FjeS10cnVuaworNDYyMzAgMTdlYWE4YjU3ZTA1MmY1MTQ2NWNiMzMxZmFiZmMzYzVhMzM3ZTcxYyBsZWdhY3ktdHJ1bmsKKzQ2MjMxIDA1NDk2ZGVlYmE2NGJlNzA0MDEwYmM2MWYzYzhlNWRlMmZkMGI1YWUgbGVnYWN5LXRydW5rCis0NjIzMiA2ZmMxZGMwODY0NTk0MDI1OTdmNzgzMDFiOTk0ZDBkOWY1YWI3MTQxIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyMzMgM2U2ZDc3NTUyYmUzMDJiZWFjMjU2MmQ0ZDUyNzk3MTJlMDRkNjhmNSBsZWdhY3ktdHJ1bmsKKzQ2MjM0IGM1ZDYxOTY1Y2FkNDIxOWE4ZjdhMDJjZTNhYjJlM2NhY2Y3ZDg3ZWEgbGVnYWN5LXRydW5rCis0NjIzNSA1YTYzMzY5MDU2YTdmZTVmYzNjMGI1ZmYwZGUxMDg3YjE5NjUwNzE4IGxlZ2FjeS10cnVuaworNDYyMzYgZjI3OWQwMzFmMGNlYTNjZjhiYzRmMTAxOGFkOWZhOWQyNWU4ZDg2NiBibGFpcy1ieXRlYnVmCis0NjIzOCA3NGJlYjE4OWZkN2VlNDg0Y2ZjMmQyMzM4YWVhMjQ4YWJkYmY1ZWI2IGxlZ2FjeS10cnVuaworNDYyMzkgMmFhOTQwOTM1MWQ2MWY5MzE3Y2UxMWRhNzc1MmUwOTY1ZDcyZGIzYiBsZWdhY3ktdHJ1bmsKKzQ2MjQwIDg1MGQ0Zjc3MTdiOGRlYTBmOWJkZjU5MDBlNTAyM2MxNTBhZDZjYTIgbGVnYWN5LXRydW5rCis0NjI0MSBjOWRjMzAwZWVlNjgyYWNlMDVmNzdiNDg4ZDkwMzUzNjQ2ZWRmZmYwIGxlZ2FjeS10cnVuaworNDYyNDIgMDUzMjRhYTQ0NGJkZTFjMGI2ZjBkMjk5NGJhM2ZmNTE4NTUxOGY4MiBsZWdhY3ktdHJ1bmsKKzQ2MjQzIDRhOGM5ZjliNjZlNjhlYzk3MDVjMjNkYmE1YWVjMGE0OWZiZDcwZGEgbGVnYWN5LXRydW5rCis0NjI0NCAxZmRmMjlhODhmMGVlMGIxM2IyODkyMWE1ZmJmYjE3NTFiNWYwY2YzIGxlZ2FjeS10cnVuaworNDYyNDUgOTFjNmM5NDQ5MGIxYzU2NDRkYWI2OGY4OWU0YzQxY2U0MzM4ZTU2NyBsZWdhY3ktdHJ1bmsKKzQ2MjQ2IDJmMTZlMjcxNTIyMzViN2ZmM2NiODdiMTUxMTM1NWY3ODU3YzVhMjcgbGVnYWN5LXRydW5rCis0NjI0NyBlY2YyYmY0MTgyYWRmNDkzM2YxMmQwNjRjODUxYjg2ZjVhOTcwMTBkIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNDggNjhhMzQ4Yzk4NjhkYjhiMzU4NjE1YmI0MDQ3MWJhY2EyNWE1MDIxYyBsZWdhY3ktdHJ1bmsKKzQ2MjQ5IGMwMDZjMjcyMTE2ZmZhYTZhODMyN2EzOWM0YTAzZmRiNGE4MjhjMDUgbGVnYWN5LXRydW5rCis0NjI1MSBjMzUwOGE5NDE1NjgzNjU5NmEwM2U4YTkwOTMyNjRjYzFkY2Q4OGJjIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNTIgZTE2YjQxNTc2ODZjYjlhNDg4ODUyZDQ0ODBmMjI3NTI2MTRmMDkzYiBsZWdhY3ktdHJ1bmsKKzQ2MjUzIDNkNDc3ZDE1ODQwMWM3MWIxMzg0M2Q3MDdmZmE2ZGJkYzFmZjc3NzkgbGVnYWN5LXRydW5rCis0NjI1NCBlYTBhZDRkNGZmOGVkZjBhY2I5ODUxOWUyZmU1ZDMwZTE1ZGUyZThhIGxlZ2FjeS10cnVuaworNDYyNTUgYzc3ZGEyNzM2ZmIyNjVkNmE0NDU3YWIwYzJjZTg4NTM2ODc0MTc2NCBsZWdhY3ktdHJ1bmsKKzQ2MjU2IDM1ODdlZTMxM2IwMDYxMDJhZTYxMGE1OTdlODRlNGU3ODI5NmEwYzUgbGVnYWN5LXRydW5rCis0NjI1NyAwNGYzOWVjYmM3M2M3NmE1NWFlOGNjMWVmNWI1M2RmNWI3ZWZkMGMzIGxlZ2FjeS10cnVuaworNDYyNTggZDMzZDhhOGI1NDVlZWViMTUwZDFiNGM1NzhjODBlOTMyZjQ0ZmI0NyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjU5IDhhNThhYTQwZGNjMDVkNTgwNDFhNmI0YmU2ZjM4ZDE2NDFiMzBlMmYgbGVnYWN5LXRydW5rCis0NjI2MCA1NTY2MjBjZDdiMWRlM2MxMTg2NTE1MmQ3NTlkYjAwY2VhNTQ1M2QwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNjEgOWY4ODRkMzRhMGVjZDRiOTllNzIyOGQ1OThmNWIyOTU3ZGE4NDY5OSBsZWdhY3ktdHJ1bmsKKzQ2MjYyIGU5ZWI1MjZiNzExMTU4MGQxODNkOGRmZDdmY2VkOGIyYmU1NmZhZGIgbGVnYWN5LXRydW5rCis0NjI2MyBjZWViZTZjYzQ1NzA0YzhjMThiZmFhNGQ3YTFkOThhMzg1ZGU0OTc1IGxlZ2FjeS10cnVuaworNDYyNjQgYWIwMjIxODExNzcxN2JiNjFiMGE3NmM0YzViODY2MWJhMDUzMzJiNSBsZWdhY3ktdHJ1bmsKKzQ2MjY1IDA4NzI4NzAwOTY1OGVlYzcwOTk1NzJhZjViN2UyM2RmN2Q5ZGJkYTggbGVnYWN5LXRydW5rCis0NjI2NiA3YTZhZjRhMTQzYzYyYmM1ZjZlNGZmODkwYzk5NzIyZTVlMDAzNDY0IGxlZ2FjeS10cnVuaworNDYyNjcgOGE5Y2Q5OTk1MzVkMTc5NzQ2MGNlNmMwNTYwZjhiOGNjN2EyNDNhMiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjY4IGViMjM3YTM3ZWEwMmRlYjMzMGUyZmU1ZTFmNDM3Mjk3MmIwODkwNzYgbGVnYWN5LXRydW5rCis0NjI2OSBkZGMyMDBhZmRlMWE4MzFiMWMyYmRhNzNmNmExMzZhNTI0NzNlOTFhIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNzAgZDZkNTUzYjlkNDY5NzdmYmRjY2VkMDFhZTIxMDQzZTUxZGYwN2M3NSBibGFpcy1ieXRlYnVmCis0NjI3MSA0NmQ3N2JiMzJmYjBkYThiNDFhNjVjMWIyNTAxYjRmYTExY2UxOWJjIGxlZ2FjeS10cnVuaworNDYyNzIgNWExNDczNjU1MjdlNTM4NDVhMGY3YWMxYTNjZjZlZTY5ODA5MGJhYiBsZWdhY3ktdHJ1bmsKKzQ2MjczIGY5MzMyYWQ0Mjg3YTdmNmQ4NjI0ZDkwODdjYjAyMTkwMWQ0NzM1YWMgbGVnYWN5LXRydW5rCis0NjI3NCA4MmI2ODA4NDZkZjg4OTdmZjcyOGJjZTdkNmU2NWQ4MDNkNDliMzgzIGxlZ2FjeS10cnVuaworNDYyNzUgODFiNjQxZGE1Yzc5NTJhN2UwNDA1ZjgzYjk2ZTlhZjAxYTFlNDA3NCByZWxlYXNlMjQtbWFpbnQKKzQ2Mjc2IDEwMzVhMmIzMWU2ZGYyNjE2YzlhNDIwOGVlYjFhYTk0ZTBmYWRmNmQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI3OCA5NThmOTE2ODQyMDlkMDBjMzNkN2ZlZmE2OGNlNDZlOWQwM2E5Y2VmIGxlZ2FjeS10cnVuaworNDYyODAgMTY3MGZmNzI2ZThmZDdkNzQ3ODI4NjE1ZjEwMDlhMjc0NTI1YzQ3NSBsZWdhY3ktdHJ1bmsKKzQ2MjgxIDMwOTFhNzVlYjU2MGM1NmRlNzdmODY5ZmZmN2ZmMTgxOTE2OTcwMmIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI4MyBkZDQxNzMxZGVlNmQ0YmQyYzhkMDVhYjU0ZTQ0NDUxNDhkMjUyYWM1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyODQgMmY0ZmI2NDE0ZTg3MjA4YWJjMTgzMWQzNWE2NTZiMDJiNTcxNzhlNSBibGFpcy1ieXRlYnVmCis0NjI4NSA4YTk5Y2RlZjBjOTRhY2I1ODFmNTNlYjI1Y2MyMWYxNGI5NmY1OWI4IGxlZ2FjeS10cnVuaworNDYyODYgYTY1NGQ2MWQzNmQ1MzE5NjcxYjEwYjBiMWU1MjE4OTFiMTc5Y2U3NCBsZWdhY3ktdHJ1bmsKKzQ2Mjg3IDUzODJhYWYzYTBkYWM1ZmNmMmU1ODlkMWY0MWZmZjBiMjk5MzZlNmUgbGVnYWN5LXRydW5rCis0NjI4OCBjOGU0YjNiMzk3NzQzMDVmYWM4YTdhNTEzOTc3NmQ5N2Q5YTNkNWZmIGxlZ2FjeS10cnVuaworNDYyODkgODM1ZWE1OThhNDA2MGJhODFiOTg4ZGMxNjMzZGU5OWRjMjkyNjIwZiBibGFpcy1ieXRlYnVmCis0NjI5MCA2NjEwZDRiZThmYmQ5MDI1MDU0MDNkOTJjMGJmYzM2MDA3OTM2MDNlIGxlZ2FjeS10cnVuaworNDYyOTEgZmU2NTNlMjI0ODhjOWEwYjA4MzMxZDA1NGI4ZjBlOTYxMGE0YjA2MSBsZWdhY3ktdHJ1bmsKKzQ2MjkyIDkyYjBmYzU0ZDIzMDBkMDU4ZDAyYmU3MDRlMmI3MDJmZTllNzE0ODIgbGVnYWN5LXRydW5rCis0NjI5MyA2ZDg2MTVmOWYxY2NhOTc4Mzg1Yjc5NjM4YmM4MTIzNDViZmMyMjc2IGxlZ2FjeS10cnVuaworNDYyOTQgOGQyOGU2M2U4ZjIxNjY0ODNmMDAyZTVkZjY0OTZhODViMWNlOTZmYiBsZWdhY3ktdHJ1bmsKKzQ2Mjk1IGFkMmU0ZGU0N2QwOTYzNjVkYWVkN2UxNGNmYmVlNGUxN2MwODljODMgbGVnYWN5LXRydW5rCis0NjI5NiAyZjQ1YWQ2NmNkMzY1MDU4YjAwZGZkMjFmNjZkNjQwMGI3NDhlOTQyIGJsYWlzLWJ5dGVidWYKKzQ2Mjk3IDNiZWYyNDA4NmFjZTUxZGEzMmEyMWU2NTVmYWU1NTI1ZWZkZGY3N2YgbGVnYWN5LXRydW5rCis0NjI5OCBiN2I3NjE1ZWE1ZjVmMjA3M2Y0ZmMxMmY4MjEwZjZlMGU3M2Q0Y2VlIGxlZ2FjeS10cnVuaworNDYyOTkgOWY3YjFiN2FkZjAxMGUyZmJmZGM1NzhmODEyMDg3MTE0MWQwNGYzNyBsZWdhY3ktdHJ1bmsKKzQ2MzAwIDM2Y2Q0YTRhYjhmN2U4ZjcyYmE4MDIwY2I1N2QwYTgyNWE4YTE4NTcgbGVnYWN5LXRydW5rCis0NjMwMSBjMDdhOTZmNjk4Mzk2MmI0YjJhNTE4NWYxYjI0YThmZGZlMDk5NDZlIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMDIgOTU3NzI3ZjJmZjA5ZjM5MzczNzI3MTc1ZDkyZTMxOGQzODhjZTRjNCBsZWdhY3ktdHJ1bmsKKzQ2MzAzIDk4ODM3OTAxNDQ3NzMwODJiMGM1ZjE1ZjE5ODc1YTBkMzNmNTJiNTcgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMwNCAzNzhiYTY3N2I1Nzk3MDc2ZmQzNDg1MGRkMjcyZGNhNTViOTI5MjQwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMDUgNzhjNjBlNTk5YWZkYjdiYWRmNjFhNDg0M2E4YzgxZTU2NWUwYjcyMCBsZWdhY3ktdHJ1bmsKKzQ2MzA2IDMxYjljNzhhMDdmMzY5ZmQxZGMxMGVlNzY4ODJhYmEwMmFlMWNhMzIgYmlwcG9saXRvLW5ld3N0cnVjdAorNDYzMDcgMDViYmJkZGZjZTNmN2EyN2IyNTE1MzlkZWRkN2E5N2RjNjQ3YzM5ZiBsZWdhY3ktdHJ1bmsKKzQ2MzA4IGJlNzQxNWIwYTMxODUxYTNjOTNiYmJjZjA0YmJhYjYxMjAxNWEyYzcgbGVnYWN5LXRydW5rCis0NjMwOSBlM2VlM2ViMTg2NzhkYzZlODM3ZjNiZWU2YjU4ZGZiZTBiYzg2NTVjIGxlZ2FjeS10cnVuaworNDYzMTAgZDJkZjRhMzU5ZTM1MmFmNzdjMGUzODMxNzVmZjViZDlkNjdhY2M0MiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzExIGE0ZWU0NTlmZjI4OGE0MmU4OTJlZGQ4MGE5MzU0M2Y2MDk4NTE5ZGUgYmxhaXMtYnl0ZWJ1ZgorNDYzMTMgODhlOWQ4Njc3MDA2NmVjZDBmYmIxY2E5M2YwYjAxOTI5NmExYjYyZiBsZWdhY3ktdHJ1bmsKKzQ2MzE0IDQ1NGJkZTdlNDE2ZTQ5YmE3YmIwZTk3YmI3ZGNjMGIzMmI3M2FhMmQgbGVnYWN5LXRydW5rCis0NjMxNSA4OTBmNjE2MWM5OGE1YTkxNTdmMDg0MzE1YmEyMDBiYTI5OTI0ODQ1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMTYgNjUzM2Q4YWUxZmQ5NTEyZWYxN2I5NGVhODkwMWI2MDNkYzM4YTkyYSBsZWdhY3ktdHJ1bmsKKzQ2MzE3IGEwNDNjNWQ3MWVhYTE4YjM2YWZlYTUwYzc3N2FmOGFlNjUzZjJkNGIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMxOCA3NmIzMDFhYzRhNWU2MzQxODZmODRkZWZmZDRlZTFmNGI4MTI1NDAzIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMTkgOGEzOGRhOGUxMjhmN2RiYzY0MDg5M2U1NDQyYzkzZDMwMWVkNDY3MCByZWxlYXNlMjQtbWFpbnQKKzQ2MzIwIDUyMTNiNjA2NTE5Nzk2ZTkwMGU1NWI3MjgxZjZjYzg0MzkzNDdiYWMgbGVnYWN5LXRydW5rCis0NjMyNSAxYTExMzA1MDY5MGI3NDFmMzI3NmM3MWRlOTA0ZTFlYzZhMmI5OTZhIGxlZ2FjeS10cnVuaworNDYzMjcgYzAwODI3MDVmMmYyMzQzYTI0OTI5OWI0ZTQxMDBhZGY1YWZlMjc2OCBsZWdhY3ktdHJ1bmsKKzQ2MzI4IGY3NDNlM2M2YjliZjE2YTg2NzcwYWVlZGI1MGExMGQxNDc0ODY1MDYgbGVnYWN5LXRydW5rCis0NjMyOSAyZWQ0Yjc1N2MwY2YyNjNkODllZmUyMzc1NzgwNzQzODk0MTY0NzA2IGxlZ2FjeS10cnVuaworNDYzMzAgNzljOGRjYzI3N2E1ZjI2M2UzYmFjZDg5YWU5MTllMWI5YTk2YWUzZiBsZWdhY3ktdHJ1bmsKKzQ2MzMxIDEzZTBmNzFhNzBkNTQ0ZTRhYTlhNDcxMjY0MzA4MGYxNDQ5YmE2MzggbGVnYWN5LXRydW5rCis0NjMzMiAwOWQyZTk2OGQwNzQ3MjkzMjk1YTY3M2EwMWRlOGZkNWVjNjY4NWIyIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMzMgZmE5OGI4ZGYwZmUyMTc2ODQxNTQ4ZWZkMjczNTFhYmRkYjI4ZjQ0YyBsZWdhY3ktdHJ1bmsKKzQ2MzM1IGE0ZTQzM2MxMzZkYTQzYjAxOGQ3NWFiMjEyZjNhNTJmYzI4ZTQ1YTQgbGVnYWN5LXRydW5rCis0NjMzNiAzMWQ0MjE1NDgwYzY5OTk1OTA3YmY3YzRjY2NlM2IwMzJjOTk3NTIxIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMzcgZDJiMzhhNjFkZTcxMzUzNGU5YTAyODMxOWUyOTNmZWZmNjczOWU0OCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQwIGJlZjZhYWI1ZjliM2EzZDAxOGE1MmE1MGMyOGEzN2UzZmY2M2ZmNTAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM0MSBjMGRiZmVhOGMwZmI1YjkwODQ2NzdlYjMwNDM3YjViZTFhNDM0NDZkIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDIgZDEwOWIwODFkNDRiZTU0MDY4OWUwMTlhZmM3Yjc5MjJhMjNkNGQ3ZiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQzIGMxNGUwYzg5YThiMGQwN2U1ODBiZTZhNGYyMDBhYTA5NTViOTgxYzIgbGVnYWN5LXRydW5rCis0NjM0NiAyZTdhMDBlYmMzMTkyNjA1ODVlOTFlYTQzOGY0OTdmYWM1OGUzNDkwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDcgNWU0ZGNlNzhmMjNkYTliMzMwY2RjNzEzMmU1MjkyOGI3NGFiMGM2YiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQ4IDYyNGI0YmI5M2Q5MDI2YTJmNThkMjE4MGQ4YTdkMDM1ZjJmY2Q0NmEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM1MCA0M2M4NmYzNDlkNDc4NGM3ZDY0NzdiNThmZWVjMTVhZWVkOGU4ZDkxIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNTIgNGJmZWFiMjMwZTM4NWQ2N2Q0MTRiMWQxMjkxOTQyYTcyOGM4YTM4NCBsZWdhY3ktdHJ1bmsKKzQ2MzU0IDFiYTNlNDBlODY0OTZhMjczNmJmYWE5MzhhYTVlZDkzYzU1MDNkYTggbGVnYWN5LXRydW5rCis0NjM1NSA1MmQxMzk5ZTFjNmQ5MWM3YWUxYzZmNTMwZDBmN2FhNDc1ZGZkM2MyIGxlZ2FjeS10cnVuaworNDYzNTYgYTE2OTQ4ZTk5MTVlY2E1NmQ4MzA0ODlmZDVkOTcxZDZmNDk3OWE0ZiBsZWdhY3ktdHJ1bmsKKzQ2MzU3IDBiOGIyOGYwZjMwMTQzYjEwNzU3YmRhNjM1Mjg0MTFhNzI3OTY1YmYgbGVnYWN5LXRydW5rCis0NjM1OCA3MjlmZjgwMDhjOWU1OTgzMDc0Y2UxOTViZGE0YWI0M2I2MGNkZTk0IGxlZ2FjeS10cnVuaworNDYzNTkgZDM3ZDVjNTUyMWUzODY0NmVhNTlhN2VlNDY2YjczMWQ4OTIzZTllYyBsZWdhY3ktdHJ1bmsKKzQ2MzYwIDJlNGEyNzRlMzEwOGFlYjM2MjMyNmI5Y2VkMjlkNTBhN2U2MmZlMDIgbGVnYWN5LXRydW5rCis0NjM2MSBhNWY1M2ZlY2ZjZTY2Y2IxOWQxMWI2N2E0ZWI3MDM5NDY5Nzg5ZWYwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNjIgYjMyZjliYjJlMDc3MjdmYTZkMDQ4ZTdkNDNjZTFiZTMzZTMzMjM5NyBsZWdhY3ktdHJ1bmsKKzQ2MzYzIGY3MTBlZGNhYTY3NTg5OWVhNGI3YmY4YTVkNTA0ZDhhYTRjY2ZlNjAgbGVnYWN5LXRydW5rCis0NjM2NCAwNTc0NDkxN2I3YzM5YjIzODZkMzQzN2IzODg4YzRkMTkxMWI1ZTAyIGxlZ2FjeS10cnVuaworNDYzNjYgOTY0MTUxMDVjMjllMDFlZWFlMTAwMTFlNTUxMDcyNGE3ZGQyMzIyNiBsZWdhY3ktdHJ1bmsKKzQ2MzY3IDM4OTBhM2M3OTJiOTAzNzNlZTE3OGNmMjkwNjJlZDdkNTY2ODBiM2MgbGVnYWN5LXRydW5rCis0NjM2OCAzNWY0MTczMWJlZTk0ZTRiYWE0NWE0ODlmODMwOTczMThkNzQ2ZjFhIGxlZ2FjeS10cnVuaworNDYzNzAgNGQwYWJiOTljOWU1NDhkM2I5YzBkNzQxNTNjYzdhYWFlNzFjMzViZCBsZWdhY3ktdHJ1bmsKKzQ2MzcxIDJmNzFkMWE2OTJiZjRhMGJiMTYxYTAyMWViZjc5ZGE2M2FjMWMwNTYgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM3MiBkMjE4OTZiMmRkMGFkNzFlZjdiMTUyMzgzMWEzOWUyM2EyYjI0MDRmIGxlZ2FjeS10cnVuaworNDYzNzMgZDg1YjM2MGFhNWY2ZjgxZDhhNDBhZThkMmQ3NjU5ZDRiZDEwM2Q4ZSBsZWdhY3ktdHJ1bmsKKzQ2Mzc2IDFhYjMyNjE3ZGFkZGY2NjdiOTA2NGIxMTZkYmNhMGU4Y2FlODRjMzggc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM3NyA3NjgwNzkwMmEyZjUwNWU1N2QwZTUyOWIyNmUxMzU4YTQ5NGIwMWE2IGxlZ2FjeS10cnVuaworNDYzNzggMjNmNzhlNWJkM2UzYWU1Yzc0MGYwN2JmMDg5OGRlYTcxZTIxMGRkZSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2Mzc5IGY3MDY1M2MxZTYzM2I2OGE5ZDk0MjQ5MjIxZGU4MjgyMTc2ZmM1OGQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM4MCA3ODc3MWQ2NzNiNGI3MzEyNjI1ZDUyNjkwYmU0OTQ3ZTY4ZjAzM2JhIGxlZ2FjeS10cnVuaworNDYzODEgODE2ZjhlNjAwOTdhOWRhN2Q3ZDI0ZDg0MTgyZTJkZWY0OTQ5MjgxNSBsZWdhY3ktdHJ1bmsKKzQ2MzgyIDQxZjgzOWU4OTUzMjVkMzYyODBmMzAzZmExZjA5NTgxMWFiNDY4MmYgdGltLWV4Y19zYW5pdHkKKzQ2MzgzIDBmNjFjM2M2MmI4YmY4MTkxOGQzZDQ1M2VmNjIzMzhjYmI4ZGMwYzAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM4NCBjZmM5YTAwN2U4Y2ViMzBhODViYmY1ZjJlNTc4NzVhNTk4MzdkM2M1IHRpbS1leGNfc2FuaXR5Cis0NjM4NyBiMjBlN2NiZGE0MDkxMmM4MzRkNzliNzU1YWFiNzg4NGRmMzBlYjEyIGxlZ2FjeS10cnVuaworNDYzODggZDE1M2QyZjY2ODg0ZmMzMDE4NWJjMjFiM2I1ODk1MDM1YzQzY2IxYiBsZWdhY3ktdHJ1bmsKKzQ2MzkxIDcwYzBmZmQyMWJmMGE3MzAwZTE4YmE5ZWI1MzI4ZDNhYjFjOTc5MzMgbGVnYWN5LXRydW5rCis0NjM5MiBkZjA0ZjE5MmEyYTI3YzRmMDA5YmJjZGY0MDI0ZjFiOTBmNTkwNDk3IGxlZ2FjeS10cnVuaworNDYzOTMgYWM0NWVjYThjMzVjMjQ2ZGI4Njg2MTI3MTY2MGE1YjdiMjkwOTlkMiBwM3lrCis0NjM5NSBiMTg5NjY1NmYyMmU0NjkwNjNmMjk0MTM3MTA2ZDczMGI2N2U1YTRhIHAzeWsKKzQ2Mzk3IGRiYjE5NWM5ZGQ4OGUyNTQ2NjI5YWRmNjJlMDNiY2RjZTk4ZTQ5OTggbGVnYWN5LXRydW5rCis0NjM5OCAzM2MzMjg4OTZmNTI3ZWI1ZjBjNzY1Y2JlZTQ4NzAyYjlmMTBiNjEyIGxlZ2FjeS10cnVuaworNDY0MDAgYWRjMjE0ZmMxZTFjMTNjMzk4MDZkMzgxOGY1N2YzMWI2ODE5MGRiNCBsZWdhY3ktdHJ1bmsKKzQ2NDAxIDVkZGJkMjA1MDBmYzUwNDkxZjc4YjgxMWVhMmJmMDdhOTA1Mzk5NzMgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQwMyA2YjAzYTQ3ZWI1NGRmN2VkYWNjYTFlMTEzNTY0MTBiYTkwMDI5NjMzIGxlZ2FjeS10cnVuaworNDY0MDQgNmQ5OWRmNTU2MDZlMjRkMGZjZTY3Yjc2Y2U2ZjRjMDFiZTNkN2U2ZSBsZWdhY3ktdHJ1bmsKKzQ2NDA1IGU4M2UxYWFhYjFhM2FlMDQ2MTNlZGViNjU2MDg5MjNhNDYxZmIzMzIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQwNiA1MmYyYzlmNzRmNWFkNWE3NmIyYjFmOGFkOTYyZTQ1ZWYyYTA3OGMxIGxlZ2FjeS10cnVuaworNDY0MDcgMzEyOGNmYWRhNmI0YTdjZDhhZmViMjNmNDU5Yzc0MWE0MzE4MTU2NCBsZWdhY3ktdHJ1bmsKKzQ2NDA4IDQwMmYzYWM0MDUyZmZhZmRkODE0YjhkNGE1NmRlNGRkOWFkZmQwNjUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQwOSA4ZjdjN2FlYWMzYTU4M2EzYjkyZmE4ZWFlNDdiYzg4OThjODg2NjZlIGxlZ2FjeS10cnVuaworNDY0MTAgMWRiMGQ3Mzc0OWVkOWVkYTVlZGUwMGI3NjZlZTkxNDFmYzZkMzg1YSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDExIDU2MDdhYjZjNjdkZmRiMGRhNmFlOWQ1YTM2NTIzYmI0ZjFiNTk5NmUgbGVnYWN5LXRydW5rCis0NjQxMiBmYTY3NWIzZDc1Y2E4MjI1ZWQ5NDcxNjQ4NTRiNDU3MDQxZDk0OGY4IHJlbGVhc2UyNC1tYWludAorNDY0MTUgZTdhZjk3ZTI3OGM0NGE3MTBkYjQxOWUwOTcwN2I4YzkzMWFhZDhkOCBsZWdhY3ktdHJ1bmsKKzQ2NDE2IDQ2OTdkMTk1OGNjYjA1YmE2ZDlmZDMxNDYxMGRhMTUzNDhlYTc4Y2IgbGVnYWN5LXRydW5rCis0NjQxNyA2MzFiNjY0OGZkZjQxYmUyYzQ1NzU5NTMyNTdkZDg5MTE2ODQ2ZmNkIGxlZ2FjeS10cnVuaworNDY0MTggMmJlZTE1MGEwZjc1MjI5YTEwY2I5MDdmOWIyNGU1ZTMwMTI4YjMyOSBsZWdhY3ktdHJ1bmsKKzQ2NDE5IGZlYTZmYjQ1NTcxMTNiYzYxMTcyNjJjOTFmM2NmMzliOGFkNjlmNTUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQyMCA0ZGM2MWQ3ZGIzYTI5ZmY4NmFjZGU1ZjJlY2IwOTU2NThhNDAxZDY0IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MjEgOGUyZGMzZTQxODAxMWE2ZTI1ZDc2MDJkZGFlZWNjMTBkNjBlNzdjZiBsZWdhY3ktdHJ1bmsKKzQ2NDIyIDBlZWJkOWVlYjcxN2NhMzEzM2M3ZTFjZDRlZGRmNGM3MDhiY2I0M2QgbGVnYWN5LXRydW5rCis0NjQyMyBjZTYzOGQ0YjRmYzhjZGFmMGM0YjYzYTE2NDg1M2EyNzYzZWY2ZTU2IGxlZ2FjeS10cnVuaworNDY0MjQgOTBlZGFmMGQ5MDYyMTgyMThiYjk0YmZjY2RkZTNlMDAxZWQxZTlmZSBsZWdhY3ktdHJ1bmsKKzQ2NDI1IGUwZTQzZTU2MTUxMmJjOTYwNDEwYjdjN2QxMjZkMjFlYWFiNmYwMWEgbGVnYWN5LXRydW5rCis0NjQyNiA3MDhlYWYwODk2YmY0NTQ0ZDRkNTQzNTM4MzJmMzMwMDcxY2FhNjU4IGxlZ2FjeS10cnVuaworNDY0MjkgMzhlOWFmMzhmMzgxYzI3ZWM2MDcwYjVjNjJhNTM5YzM4ZjQ2ZDMyOSBsZWdhY3ktdHJ1bmsKKzQ2NDMwIDQ5OWNmN2MyZjc3NzNlZjk2ZmVhNGI0MjRiM2M5MzRiZWNjNWQ1NmQgbGVnYWN5LXRydW5rCis0NjQzMSA0MjA5YTNkMjk1ZTM0N2VlZDZmZTU0MTAyOGE4OWExM2MzYzQzMTExIGxlZ2FjeS10cnVuaworNDY0MzIgZGZiZDQ1N2NhNjdhYzZhOGYwOWRmM2NkZjU5NWJkZDBmYzU3NGU4ZCBsZWdhY3ktdHJ1bmsKKzQ2NDMzIDY4ZTFhMDJhNWIyOTFkODkzODFiZmY4ZDk1MDRlMDMxMzUwZjY0ZWIgbGVnYWN5LXRydW5rCis0NjQzNCAxMGE1OTczZTBjOWE3Mzc0ZjFjMWM5MTI3YTQ3MDIxZDdiYWJmY2Q5IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MzYgM2Q4MWZhZjQ3YWY3N2RkMDlhZmRiZWQwZjQ5YjJjODIzMTVlMDNhOSBsZWdhY3ktdHJ1bmsKKzQ2NDM4IGNhNjU3ZTBiZDA5YzAzNzc4ZjAxNmMwZDBjY2U0N2Q1Y2E0ZDJmYzggbGVnYWN5LXRydW5rCis0NjQzOSA5ZjMzNzVlMzNkYjk1ZDA4ZWM0YzJkOTczYTYzZTEyNTQ0NzRmNzUyIGxlZ2FjeS10cnVuaworNDY0NDAgOTlkMDYxYmMzMTQzMWQxZmZhMWM2MjE0NzBmYTU5ZDAxNWRkZTQ3YiBsZWdhY3ktdHJ1bmsKKzQ2NDQxIDhiNGQyYTkwNzVhZjViMGMzZjNhMDlhYWJmMzUwZDFkYzM3NDUyNDMgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ0NCA1NDljYWRhNGUzNmNjNTdhM2U1ZjJhZTQxOTk2OGNmMWVmNDhkMmIxIGxlZ2FjeS10cnVuaworNDY0NDUgM2ZmM2QyZjIyMDEyMjQ2ZmMxODA2NzUyMmNkZTE2YTg4OWY0MmRhMiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDQ2IDMyODc5ZDI2MTA5ZDk2OTYwNmQ3ODdhNTUxNTUzMDgzYWFmYWMxNTcgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ0OCAxNmExY2FkMGY5NDk5OTI1NDRiZjhiY2E1YzhiNjkyZWU5YTQ5YWU1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NDkgY2UzZTNjNjNmZTVhZGRlMzBlZDBmNzk2M2FjZDJlM2M0ZWM0M2FmYyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDUwIDAwMzQzMzUxMWU0ZGQ4NGFmYTRjMDQxYjJhYTc2N2U3MmUwYmY3NmMgbGVnYWN5LXRydW5rCis0NjQ1MiA3MzQyNmU3MWY2N2FiNTc2MmFmMzBkOTBiYTVhMzFkY2U4MTJjYzg0IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NTMgYTVkNWU3M2IyZWRiYjVmYjNlYjk5Nzk3MjVlMTAwYmRkMTQ2MDJjMCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDU0IDc5NWQxY2IxZGYwMTNjZGYzNDVhOTI2YmFmNTA2NWJkMDE1YTBiMTUgbGVnYWN5LXRydW5rCis0NjQ1NiA0YzA4MjNmMGEwYTE1NzRlYTgyYzE5ZGU5ZDRjMWUyYTFhNTYwOWY1IGxlZ2FjeS10cnVuaworNDY0NTcgYTU2YWE4YWI0ODliNzBjNDVjNTI3MzA2ZTk0ZGYxNDVkNjkzMzQ3ZSBsZWdhY3ktdHJ1bmsKKzQ2NDU4IGNlYmE4ZjJlYTI0ZWViYTUwODc1ZDQ0M2Y0NmRmYjk3MWQ2ZDI5ZjYgbGVnYWN5LXRydW5rCis0NjQ2MCBjY2RjMGJjMTFkY2YyZTI4ZjZjNGJjOTY0NDBkZmYxNGZhNjQ5OWY2IGxlZ2FjeS10cnVuaworNDY0NjEgNjA2M2U0ZTZlZTIwZTE3ZDk0OWMyMTdlMzc5NjIzMmY2NzI2OTIzMyBsZWdhY3ktdHJ1bmsKKzQ2NDYyIDMwZTRlYTQyMzM2OTA5YWJjZTA2NWRkNWM0ODY5MmM1ZDQzOTdhZDQgbGVnYWN5LXRydW5rCis0NjQ2MyA3ODFiZDk0Y2ViYWQ1NWUyOGY3ODhkYzkyMjU0M2YzNmZkOTQ0Zjc4IGxlZ2FjeS10cnVuaworNDY0NjQgMDUzMDVkM2FhMDRkMWRiNjQzODJlODBiODk2NTQ1NWRlYTY0ZjdkMyBsZWdhY3ktdHJ1bmsKKzQ2NDY1IDUwNmVmOTEzMDIzOGI1ZWI5ZGEyYTc5M2FkY2Q2ZWQxNWU2MTE3NjggbGVnYWN5LXRydW5rCis0NjQ2OCA1YjA3NTNiOWQxNmFjMzg3NjhjMDY1ZWUwZDQyNDg1YzViN2I5NWZjIGxlZ2FjeS10cnVuaworNDY0NjkgNzIzMjdmOGY0YTc5NmZlNTZhNDdiOTA4NDhiMWJlZWFjNjc0Y2Y5YSBsZWdhY3ktdHJ1bmsKKzQ2NDcwIDgwMzhlNDFmNDZjYzBkMjQzNDFiMGJmZTg4MzYyMTJkNTlmNWRhNTQgbGVnYWN5LXRydW5rCis0NjQ3MiBlYWU2ZGUxYjQzODM4MGE1NTcwMmZiMzBmMWZiYjAxZDEwZWQwNzc0IGxlZ2FjeS10cnVuaworNDY0NzMgMDhiZjA4MjJjNTBhMGQ3M2Y5ZmY5MzU2ZGMyZTQ0MDQyNTQyZTEwNiBsZWdhY3ktdHJ1bmsKKzQ2NDc0IDhkYWViOWFmODQyMmNiZDQ3YzI5MjQxMjA1ODM4YjliZDM1NDI3OTggbGVnYWN5LXRydW5rCis0NjQ3NSA5YTY1ZmQ0MjU1YTM3Y2VhNzJlZDAxMzgwNTExZTA5ZTA2YzdkMTRhIGxlZ2FjeS10cnVuaworNDY0NzcgODA3NTQwY2Y3NzE0Yzk4OTRkMjlhYjA2ZGVmODMxYjI4MWVmY2IxNiBsZWdhY3ktdHJ1bmsKKzQ2NDc4IGU5NTcxNTVhZTliZGRjMjFjYTY2NjFlYTI1YzAxMWNjNDBhZjY0NGEgbGVnYWN5LXRydW5rCis0NjQ4MiAwMzhiYjhkMDA1OGIyNTM5NTcyZjE5NTgwZDBlOGM5YWFjNDNjNDIyIHJlbGVhc2UyNC1tYWludAorNDY0ODggNDU1NmMyYzkzMGY0YjAyNWU3OWFiMWExZWFiZDA0YWFkMWUyMjEwZSBsZWdhY3ktdHJ1bmsKKzQ2NDg5IDNkZWQwOTA4ZTk1MmY2NDZkNDAwZTllNTVjNmY4YzY4Y2I0MWY0NWIgbGVnYWN5LXRydW5rCis0NjQ5MCAwZjJmN2EwZDliN2RkMjAxNWI0ZDcwNGUxM2VlMTkxNWEwZGVjMTM0IHAzeWsKKzQ2NDkxIDI5YWU1ZTBmYzM0ODI4YjVlNjNmMTg0ZjMwMzg0NjExNjY4ZGJlZmQgcDN5aworNDY0OTUgNjMxYzIwN2MzNjkyM2QwMjNmODRjZDBhOTJiMjg5YjZiNzBiZTZkMCBsZWdhY3ktdHJ1bmsKKzQ2NDk3IDFhMjM3MDYxMzljYTBmYzI3ODY4OTQ4MzI1ZTJmNDIxNTFhYmNhNDggbGVnYWN5LXRydW5rCis0NjQ5OCAzZmVjM2NlMjA0MTM4NGFkZWJkOWRjNzNlZWU2MzI5Njk5MjQ1YzI1IHAzeWsKKzQ2NDk5IDU1MTgxNGU0YjQ3MTE3YjMyZjYyNzRjMWUzOTA4YzQ2NGNmODIxNDQgbGVnYWN5LXRydW5rCis0NjUwMSAyMzY3MjVmNjRhMzQxZmZlOTAxMjliMDk3OTAzZmUxMGE1OTM5NGIxIGxlZ2FjeS10cnVuaworNDY1MDIgN2ZhN2NiNmQ4YmU4MWUyOTBhYTJhNmU4ZDAyNGUzOGQ3NDgyNmQzYSBsZWdhY3ktdHJ1bmsKKzQ2NTAzIDAyMDNhOGFmNzRhNzVhOWFiZjYwZGZkNjlkZjhhZWIzMjdhZjM5MTggbGVnYWN5LXRydW5rCis0NjUwNCA2YmE1Njc4YmU3ZjI2MzU0NDZiOTg1OGYzZDMyZmM2YjgxYjdhYTA1IGxlZ2FjeS10cnVuaworNDY1MDUgZjc2ZDNlNjhkMWFjMzdiMDBiMWQ5NWJkZmJkOGJhZDMzODQwN2RmZSBsZWdhY3ktdHJ1bmsKKzQ2NTA2IDUxMjU1Y2M4YTBkYzA0YWJlNzMwNWU1NGRhM2EzMGY1ZmM0YzEyNGUgcmVsZWFzZTI0LW1haW50Cis0NjUwNyBlOTg5ZWU1ZDQwNGFiZTc3NjIxNGFiMDgwZTI3NjIwYmVkYzI3ZjBlIGxlZ2FjeS10cnVuaworNDY1MDggMzIwNGFhOWUyYjIyNTk2YTk2MjQ4OTkwNWE3MzVlODZmYzJjYmMzMyBsZWdhY3ktdHJ1bmsKKzQ2NTA5IDcxODYxYzM3ODA5MzcxMzYxZWRkOWVhMTlkOTFjYWU2ZWU2ZjdmOTAgbGVnYWN5LXRydW5rCis0NjUxMCA1OTNhY2NkZGUwMGVmMzMzZDNlYmQ1OWI4ODgyYWNiZTg2NTJlNTZkIGxlZ2FjeS10cnVuaworNDY1MTEgZjE3ZDM3OTIwZjZhMWJkZmNlMDg2MDkyN2UxN2I4NTdlNjM4YmViYiBsZWdhY3ktdHJ1bmsKKzQ2NTEyIDk1ZmIyY2QxZDNiYWNlNDc1Y2QyNDE1ODRkMWQwMDhjODI2ZTE3OWEgbGVnYWN5LXRydW5rCis0NjUxMyBlMGNlYTYwNTQxN2U0NWM1NTFmMjc2YWM0ZDllZTUzZDY3N2Q3N2UyIGxlZ2FjeS10cnVuaworNDY1MTQgOTI2OGMzMDc4MmMwYWZmNzFmNGYzMzA5YmFmMzUwMDA1YjU1MTYxNyBsZWdhY3ktdHJ1bmsKKzQ2NTE1IDkzOGMwZmNkNWJjY2I2YzczY2FiYzlhZDNkNmEzMzkzMzA3NGZkNGYgbGVnYWN5LXRydW5rCis0NjUxNiBkNjBjN2Y2YzJhYTAwNGJlM2JiOTQyYjBkYTBhMzE4N2E4MzU1NWY5IGxlZ2FjeS10cnVuaworNDY1MTcgYmYzMjY1ODFjNzQyMjI2MmE4YTlmN2IwODc0NWU2NjE4YTQ0YzYwNyBsZWdhY3ktdHJ1bmsKKzQ2NTE4IDlmMzI4NGM5MmViMzBmMTA3MTBjOWI2YjkyYzZkMDA3NmM3YWVhZWEgbGVnYWN5LXRydW5rCis0NjUxOSBkMzM4MzA2MzQ5MWY1OTgzY2ZjMWM1OWYxNjM4ZWEwZGU2MjFlMDMwIGxlZ2FjeS10cnVuaworNDY1MjAgYWEwNjVmODIwMjUyNDZiYTE3ZWIyMzI1N2MwZDAxODY5MDdiM2Y4YyBsZWdhY3ktdHJ1bmsKKzQ2NTIyIDU4ZTk5ZjJhNjRlY2ExZGUyYTZhYWU1ODc1N2IzMTVjNzE3MjY0YjIgbGVnYWN5LXRydW5rCis0NjUyMyA1NTMxOTU1OTkzZWQ0MTY0MDZkNTI0NjY0N2RhMTI2NTVlN2NjOTc2IGxlZ2FjeS10cnVuaworNDY1MjQgOWIwMDFlYmVhYTVlNDg2Nzc3NWQxMGRmZjQ5MDMxZjNiM2M0N2IxNiBsZWdhY3ktdHJ1bmsKKzQ2NTI1IDNkMWE5OWIzOWZjYTI1YWViNjE0MWU1Nzg1ZjUyYjhjNzNjNDgyNzAgbGVnYWN5LXRydW5rCis0NjUyNiA2NzQzYTZhMDZmMTU2ZDFkYmZlODllNzk1M2FkODI1M2QzMzk4ZTQyIGxlZ2FjeS10cnVuaworNDY1MjcgZmI1NmEzOTkyNjA0YmE4NTk3NmNkZDExNzE2Nzg0ZTA3NjZiMjIxMSBsZWdhY3ktdHJ1bmsKKzQ2NTI4IGY2NGIxM2EwMGYzM2IyOGM4ZWZhYTU1OGEwMzBjYTgwNzczMzkzMzkgbGVnYWN5LXRydW5rCis0NjUyOSBkY2Y5MmRkNzQwOGEzZjBiZDJhZjU0NDk0OTg4MWEzOTVmNjk0NTI4IGxlZ2FjeS10cnVuaworNDY1MzAgOGFjNjAzZTU3MGEwNTU4ZjlhMjc1NzE0NTY4MjYxODk0YTkxNzFhYiBsZWdhY3ktdHJ1bmsKKzQ2NTMxIDVhMTJjMGM1MTgzZTg4YTA1ZmI5MDM1Y2Q4Mjg2YTNjOWIwMmI4MTUgbGVnYWN5LXRydW5rCis0NjUzMiA0OGE2YWY4N2YzZTg2MmE4YjMzNzcwODIzNWQxNDYyMDIyZDU4OTE1IGxlZ2FjeS10cnVuaworNDY1MzMgM2ZlM2NjZGYwMTU1NTIxNjNjNGM5MWExZTk0NmNiMTExNmI2YWIwYiBsZWdhY3ktdHJ1bmsKKzQ2NTM0IGE1Mjk4ZjM3MWJlN2NkMmFkOTE5NDIyMjMwMzU1MDUwNTgwZjg5YjEgbGVnYWN5LXRydW5rCis0NjUzNSBjM2YyYzY2NzZiMDYxY2E3MTI4OWJkZGM3Y2UwNTIzMmFjZDRjZmI5IGxlZ2FjeS10cnVuaworNDY1MzYgZDViZGZkMTIwMjMyNzA4MjY3YWRkYzY0NmJlZTM2YTBlN2ZjODBkMyBsZWdhY3ktdHJ1bmsKKzQ2NTM3IDdkNTEwZTRmM2M5ODg1MDVkMDZiYzU5MWM1OTA5OGUwNTRiYjEzNjIgbGVnYWN5LXRydW5rCis0NjUzOSA0ZTRlNjUzYTgwYmY0YWY2NGFmMDk5YjE2ZWIyOThmODU4YjFhMjc3IGxlZ2FjeS10cnVuaworNDY1NDAgMTczMWZiZGYwMjlkMjA5ZTc2ZmE4Yjg1Mjg4NjQzZmVhYzI2ZjU4YiBsZWdhY3ktdHJ1bmsKKzQ2NTQxIDZkNzlhY2RjODEyZDIwMTBkMGQyY2VkZjBmZmZmYWJhNzM0MzFmODMgbGVnYWN5LXRydW5rCis0NjU0MiBhODJmZDdiMDQ0ZGM3YTdkNmQ1ZDY5MWE4NjFhMjZiYzhlMmQwMjA0IGxlZ2FjeS10cnVuaworNDY1NDMgOGRmYmEwODdkYzA3N2E2MWY1MGYzYWY2YTI4MzRjY2EyNGRjMzRlMiBsZWdhY3ktdHJ1bmsKKzQ2NTQ0IDQ5NGNhYjU2M2MxMTdhMTM5YmRhMTM4OTQ5OTZmMjhjYmU1NmQyNWIgbGVnYWN5LXRydW5rCis0NjU0NSA5Zjg2MmQ5Zjc3ODVkZGE3NTEwZTIyYWJjZDNiYzg5ZjdkNTE0Y2RiIGxlZ2FjeS10cnVuaworNDY1NDYgZWM1ZGM4YTQ5ZWRmYjY1NzQwMWRiNWMyMTE2OTNkN2NhOTRiNmVjYSBsZWdhY3ktdHJ1bmsKKzQ2NTQ3IGM0NTAxZmVmZDMyNGZiNDM2M2M5NDU2ZjdmYmY3MmQyYzkwNjg0MTMgbGVnYWN5LXRydW5rCis0NjU0OCA1MTA2ODJhYzVlODlkZDViNjViZDQ3YjhhYzhlMGVmYzJjNjQzNWIzIGxlZ2FjeS10cnVuaworNDY1NDkgNDQxNzExY2JmZTM0MTcxZGE2NzQzNmVmZjE4NWNhNDYzMTEwOWNhMiBsZWdhY3ktdHJ1bmsKKzQ2NTUwIDRmODU4Njk0NmM4ZjU2MzJhNDY1NzgzZTRhOGY2OWVhYzM4ZmYyMDcgbGVnYWN5LXRydW5rCis0NjU1MSAwYWJhNjNmZjdmNzNlMzg2ODNkYTU1NWZjOGI0YmNlZmVjZTgxYzc4IGxlZ2FjeS10cnVuaworNDY1NTIgZDIwMDhiMzFmZDYyYTI0ZDZhNGZlZTE1NjViMzU1ZWQwNGUwMjE3NiBsZWdhY3ktdHJ1bmsKKzQ2NTUzIDk5NTY0ZTYyYWVhOTJkZTE0MDg5MmUxNzgzMmZlMjE3YTYzZWNhYjEgbGVnYWN5LXRydW5rCis0NjU1NCBlMTE1OGUxOTUxZGE1MGY2ZWFkZjg4MjRjNGVlNzA3N2IyNDJjOTZkIGxlZ2FjeS10cnVuaworNDY1NTUgMTNmZWRkMGQwZjI2YzY2NGVkNTk2NGU0ZWFhNzU4ZTNkMDQ1OWU4NiBsZWdhY3ktdHJ1bmsKKzQ2NTU2IGM3NDdhZDUzZTA5ZTBmOTI5NDRjNTQ2MzU4Yzc4NTQwNGVkNzU3ZTkgbGVnYWN5LXRydW5rCis0NjU1NyAxNjhlYjZlMTViOGM3Yzk1MWRkMTIxZDkzZjhkNzFkYTk2YWU2NDc0IGxlZ2FjeS10cnVuaworNDY1NTkgN2YxZjM2YjNjOWY5YWFjMzkxOGVkNmU4NmYzZTNiZjFlODkxNGU4ZiBsZWdhY3ktdHJ1bmsKKzQ2NTYwIGVjZjcxNzNlNzlmZjU2NmY0Zjk1OGJhZGMxODllNTdiNzBmMjg2MGUgbGVnYWN5LXRydW5rCis0NjU2MSBiYjBkMmI5NTU0MzlmMzJlNDgxMjM3MDcwM2Y4OGU2MWUyMjQ2NzAyIGxlZ2FjeS10cnVuaworNDY1NjIgMmZlMzIzM2JkNDI2MTJmNGIxNzM0YzFhZTkzZGUyNjEwZjE1NjU4OCBsZWdhY3ktdHJ1bmsKKzQ2NTY4IGQyYWU1ODA4ODBiNGJiZGQ2ODVlYzdkOTBmNGQzOWZiZjkyNDhjYTYgbGVnYWN5LXRydW5rCis0NjU2OSBmOWQxODQwZmFkMzQ4NTI1NDA5MjVlZjdhZjliZTlmOWZhZDk3MTVjIGxlZ2FjeS10cnVuaworNDY1NzAgNjI5ZWJmN2QzYjVjYWNhNTlkYmYwYzEzZGM5YTlmOWFmNjhjZjU1ZiByZWxlYXNlMjQtbWFpbnQKKzQ2NTcyIDFhNTZkYTg2YzExYTg3OWZhNzE5NTBjYjQyZTJlZmZhMThjNjM5M2UgbGVnYWN5LXRydW5rCis0NjU3MyBiYWRjMTczN2RjODAxOWNmMmIzMDJkNTIwMDA1ZjAzNTcxMmEwZWM3IGxlZ2FjeS10cnVuaworNDY1NzQgZjBmMjkxZmE5YjQ2OTE4NDFlZGVlZTVlZTUzODAwMGVkOGUyY2VkYyBsZWdhY3ktdHJ1bmsKKzQ2NTc1IDNmZDgwMjc4NDVmODAyYzlhMGQ4ODA4YWM2NmY3NGJkNjcwODZkOWIgbGVnYWN5LXRydW5rCis0NjU3NiBmNTBkM2E1MWQ2NDZmMzNiZWZmNWI0MmJiZTYwNTg2ZDRjNDQwMmU1IGxlZ2FjeS10cnVuaworNDY1NzcgZDI1ZTI3OWM3ZWE5YjI1N2NkYzVhMWIxMmEzZjczNWQ0OWFiNjMwYyBsZWdhY3ktdHJ1bmsKKzQ2NTc4IGY4MzFlOGJjNmJkMzc4OTkzNDQ3NThhODVmNmUwMjc3NTA5NWM1MDAgbGVnYWN5LXRydW5rCis0NjU3OSA1ZjQ0MmY3YmY0MTllNGZjM2MxMjA5ODAzMDdkOTFiNjY1YzNlODlmIGxlZ2FjeS10cnVuaworNDY1ODAgZTA5OTdmZmEzNTcyNDY4YjllYTBlYTBjZjYyYjE2ODE3Y2ExMTFmNiBsZWdhY3ktdHJ1bmsKKzQ2NTgxIGE3ZjIyOTVhNzhhYzEzOTUwYmZmZTg3ODRiZjg0OTJmMGIyY2JiMTcgbGVnYWN5LXRydW5rCis0NjU4MiA0NDdhOTRiMDM5ZGViODBjYTFkYTkzMzNiYTNhYzgxM2I4NzBjOTM5IGxlZ2FjeS10cnVuaworNDY1ODQgNDI4ZTljYmI0MzQ2MWUwZWVmZmYyZjc0MzAwNzVhODQ3NTI2N2ZlYiBsZWdhY3ktdHJ1bmsKKzQ2NTg1IGRiMmQ4YWE5ZmUzZDQyMDhiOTkyODdmMDUzYmY0OGQxM2ZhZWIzZjQgbGVnYWN5LXRydW5rCis0NjU4NiAzMDMxYTcxMTBkYTlhODc1OTczMmZmMjYwMmZjMzk5MjIzMWFmOTQxIGxlZ2FjeS10cnVuaworNDY1ODcgYjFlYjRhNjc0OTk4MDU0YTZlNzUxYTE2ZTNhN2VhZjNiZTcyYWMwZCBsZWdhY3ktdHJ1bmsKKzQ2NTg4IGNmNjc3ZTk3ODg1MmZhNmNlYmViMDkzYTUwNGU1ZDRiODQ4YjkzMGYgbGVnYWN5LXRydW5rCis0NjU4OSAxNzVjYmRmOWE1ZmJkMDY1N2Y4NTE1ODYwZWM1MTA4M2JlNDBjYjgzIGxlZ2FjeS10cnVuaworNDY1OTAgOTk1ZWNkMjMxZjdjNTk4ZDViNDE1MTMwM2ZkMzI2NGM4ZDA3MjkzNiBsZWdhY3ktdHJ1bmsKKzQ2NTkxIGM1ZDUwODcyZWZmNDgyYTczN2U0OTE0YjJjNjI4NDE2N2JhNDQxOGQgbGVnYWN5LXRydW5rCis0NjU5MiBiOWIwMzZmMDIyMDdlMjliMjIxNTM0ODY2ZDcwZDJlZjI5ZDRmZDZiIGxlZ2FjeS10cnVuaworNDY1OTQgZDdkZDUyODQyN2MwZDE0YWE0M2IwZjhmYWQ1MmViNTU1Mzg2ZTlkZSBsZWdhY3ktdHJ1bmsKKzQ2NTk5IGYzN2U2N2JkNDM5MzE4NGExZWJhYWVlYzhkMTFiMjE5ZDU1MTc5OTkgbGVnYWN5LXRydW5rCis0NjYwMCAyNjMyYmQ1NWMyOWYyNTQ0YmQ5ODc0MTZjZjJjZDc5ZTYzNThkYjI1IGxlZ2FjeS10cnVuaworNDY2MDEgNzVkNjgxMTU5MzI5ZDk4ZjE2NTVkYmUwZjI3ZTU2MTBkM2ZlOGY5NCBsZWdhY3ktdHJ1bmsKKzQ2NjAyIDY5N2RkODQ4ZTFmMTM2MzZlNTU0M2ZkYTVmYzYxZDUwN2E0MzMyOWQgbGVnYWN5LXRydW5rCis0NjYwMyAyMWU4ZGQzZTM5NDU3N2M1ODE2NmI1MTUwMTAyZTEwYWJkZmJhMzg4IGxlZ2FjeS10cnVuaworNDY2MDUgMmViOGJlMGY4NzMxMjk3MTYwNzZkMzY5NDdlZTBhYTUzOTU4NTIyYSBsZWdhY3ktdHJ1bmsKKzQ2NjA3IGY5YzMwMWRjNWZiNzRjOGMyZTE4YTVkYWYyMGRkMDhmODI3NDFkMDQgbGVnYWN5LXRydW5rCis0NjYwOCAzODNjZDk0YzJhNjdkMzdmMmJhMWIxYzE3MjY1MGE5Y2I2ODQxNzc1IGxlZ2FjeS10cnVuaworNDY2MDkgNmY5YjUzNmU5NmY2NjM1M2MxZmU5ZTc1NTIzOGE5MDIzZTNlOWM1OSByZWxlYXNlMjQtbWFpbnQKKzQ2NjEwIDk2NmU3NDcwZmUyMzczMzNiNGUwZWYxZDU0Yzc5NTI4MDQwOWY3ZjggbGVnYWN5LXRydW5rCis0NjYxMiAyYjVhOWRjNDkwNWM5MzliZDRkM2Q2NDJlMGE3NzEyM2YxYmM3NWY0IGxlZ2FjeS10cnVuaworNDY2MTMgNjRiOTM3OWZhODBkYjA4ODQxMzU5ZDFlYTQzODhjNjJlMjM2YTRkYiByZWxlYXNlMjQtbWFpbnQKKzQ2NjE0IDQ2NDI2NWMxZDA4YjFjYTY3ZDQ1NmY4OGVjNTc0YzAzYzcyODc4MWUgbGVnYWN5LXRydW5rCis0NjYxNSAzNDczZmNmMGJjZWU4NDYxZjZmNjZmZDY2NjA1ZmRiZWQ4N2Q2Nzc2IHJlbGVhc2UyNC1tYWludAorNDY2MTYgYWFiYzEzNjAyNDQwYWYzZTZmOGI1MGNjZWQyYzRiNWU5ZGUwMzA3MyBsZWdhY3ktdHJ1bmsKKzQ2NjE3IDg1NTk5M2IwOWZkOTIwODJiNDJhN2Q2NTU1NjkwZjJiZTk0MGFhM2UgbGVnYWN5LXRydW5rCis0NjYxOCAzMmY3MDZmZDQ1MDNlOTg5MGU3ZjExYmM4NDQ4MWNmM2JkMzdiNTNjIHJlbGVhc2UyNC1tYWludAorNDY2MTkgOTcwNTI2YzFhN2UyZmYzNjQ0ZWYyYzI0NTYzMzJjYmZhNDcyYTNhOCBsZWdhY3ktdHJ1bmsKKzQ2NjIwIDEyOWFiODQ2YTcxZmFmZjYxMjNjMzU1ZWQwNTYyYzdlMzJlZjI4Y2MgcmVsZWFzZTI0LW1haW50Cis0NjYyMSBkNDE0MGY3OWYxYzcwNzk4YTMwMTI0M2Y2NGFhMDZhYTJkNjUxZTRkIGxlZ2FjeS10cnVuaworNDY2MjIgZjdkNDIzYzBiY2Q4NmEzYjAzYmM5YjU5NjQ2MDAwMmQzMzNhNDYwOSBsZWdhY3ktdHJ1bmsKKzQ2NjIzIGYwZjVkY2EyOTk5MDdhNDgyM2NiOWI5ZmJjMDU0OTJmMzE2NjMzN2EgbGVnYWN5LXRydW5rCis0NjYyNCAzNDcxNGU0MGQ0NjU2ZGYwMjc2ODY2NjE0YmRlYjA2YjIzMDg0YzAxIGxlZ2FjeS10cnVuaworNDY2MjUgZDFmYWNhNGYwYjgwMjYxMjViMWYxZDIyOTFmNzU5OTI5MDk0YmVhYyBsZWdhY3ktdHJ1bmsKKzQ2NjI2IGE0NjU0NzcxZTViMzAxNDRjYjgxOGU4NjBkMDM4NDhiMDUwYjZmOTUgbGVnYWN5LXRydW5rCis0NjYyNyBiZWYwMjM2ZDdiZmE2ZjEzNmUzZjU3OGVmNTUyZDVkYzA4MzdkOGQ2IGxlZ2FjeS10cnVuaworNDY2MjggNGVjOTQyY2Y4YzkyZWQ3NmU0MTRhYTgzYzI1NjRhMzY3MTU0OTE2OCBsZWdhY3ktdHJ1bmsKKzQ2NjI5IDgwNmYzZTE0MTE5ZDc3ZGM4M2ZkNzYxNjBhNDIyNDg1OTRmZWM1ZTggbGVnYWN5LXRydW5rCis0NjYzMCA3MjFhN2ViMjNlYmY5YzA5ZGNhOGI3YzM4MzAyYWE3MTE4YWZlM2RlIGxlZ2FjeS10cnVuaworNDY2MzEgMTYzMTgyNDlhYTMzMjQ2MzczMjBiZTM0NWU2MTQyZjI3ZDJkZDUxOCBsZWdhY3ktdHJ1bmsKKzQ2NjMyIDI0OGQxMDZmODk1MmVmZDRmZDcxYmM3Yjk0NjY2N2Y0OGZmYTA4ZWQgbGVnYWN5LXRydW5rCis0NjYzMyAwN2FjZjZmYTVhYTBlZGZmZWViMWUwMWI2ZThiMWRkZmFmNTYxNzQ4IGxlZ2FjeS10cnVuaworNDY2MzQgM2FhZGM2ZGM0YjFhNjQyMDU1YWFlOGMwNGRhMDcxZDUxZmYwYWM5OSBsZWdhY3ktdHJ1bmsKKzQ2NjM1IDZmNzQwNGYzZmM1NzY1YjM3ZDJhNTEzNzMyNDNjNjhjNzA0MzM1N2IgbGVnYWN5LXRydW5rCis0NjYzNyA1NzIyZjExMmQ1ZGE1NGJkMDViMTBiNWRlZDRhZTBmN2UwODJkNmU3IGxlZ2FjeS10cnVuaworNDY2MzggODIwNzJhOGY1MjY3NGYwMzU0ZjYzODU0ZjVjMGVmNjg4ZTcxNDcxOCBsZWdhY3ktdHJ1bmsKKzQ2NjM5IDA3ZTUwM2U4NThlZmUyN2Q0YjA4MzEyMmY4M2RjYzZjMGUyMTVmMDkgbGVnYWN5LXRydW5rCis0NjY0MCAwYjJiMDc2ZTU5MDhlYTNjMTIzNGJiNzY1MzUzODUyMWJhNDg3MmNhIGxlZ2FjeS10cnVuaworNDY2NDEgMTk0MzBjZGZmMmJkNmFhOTFmMjk5OTJjZWMwOGYxNDZkYmMwMDg1OSBsZWdhY3ktdHJ1bmsKKzQ2NjQyIGExMTQwMDNhYTNkM2ViMDcxMzM0NDNiMWJiYWJiZjk3MWIwZjEyZTYgbGVnYWN5LXRydW5rCis0NjY0MyA3MjM5YTFhODA0ODc5MDBhM2JmMTFkNmFkODAyNjg3ZjdhNGJkNWJhIGxlZ2FjeS10cnVuaworNDY2NDQgNDcyMmQzN2ZhYTE0Mzc4Yjk0YWRlMzA2MmJkMjg1NTkxYTYyNzNiYyBsZWdhY3ktdHJ1bmsKKzQ2NjQ1IGUwMGU2OGRkMWRkZmE4NjFhNzlmNzc1MjVkYzRkZjBiYjQxMThmOTggbGVnYWN5LXRydW5rCis0NjY0NiA1ZWM4OTczZGQyMjEzOTFiOWFjNThjY2I3ZTgwOTdjOTk1MDg1YjcxIGxlZ2FjeS10cnVuaworNDY2NDcgZGI3OTI5NzcyNjNhY2VlNmYwNGQ1OGQxYTQ0MzA1ODcxNDBkYWZjNCBsZWdhY3ktdHJ1bmsKKzQ2NjQ4IDllMGIwNTBjZTQ2ZjA1YzBlNzdlMzY1OThkNzUwYTg0OTA1MjJiODUgbGVnYWN5LXRydW5rCis0NjY0OSAyMTk2OWI3MWMzNmQwNzIxY2FlOGEzNjI4NDdhOTdjNTcxODE4ZjczIGxlZ2FjeS10cnVuaworNDY2NTAgNWRmYjIxYTM3ZjE5ZmFmOTBiNWU1MTUwY2Q2NzdhZWE1NTRlYWNjOSBsZWdhY3ktdHJ1bmsKKzQ2NjUxIDdkMzFkMDMxZjhlMTMzNTA5YWExMTdmZTRlZTViMjMwOWMxZDNjZTggbGVnYWN5LXRydW5rCis0NjY1MiA5MTNlNWU4NGZhZGU3NmQ2NGIzYjk5ODEwOGZmNTEzZTQxNGRjNDI2IHJlbGVhc2UyNC1tYWludAorNDY2NTQgZjE2ZDQ0ZDMwM2NmODQwMDllNDI5MDRmNWY4NTBhMGY5Y2UyMDRiMyBsZWdhY3ktdHJ1bmsKKzQ2NjU1IGM0NTg3YTVmNWU5NGVlNmM2YWNjMTg1M2JlYjQ0ZTExYTlkOWI2NmUgbGVnYWN5LXRydW5rCis0NjY1NiBkMDA3M2M2ZjZmNTZlMmQ4MTUzNTMyMDdmNDAxY2Q0YWMxOTU5ODZlIGxlZ2FjeS10cnVuaworNDY2NTcgMWMyM2U5NWE4MGEyZWY4OTRjNDM5ZDdmYmZlNjc4NmVkZWFhZjhjMyBsZWdhY3ktdHJ1bmsKKzQ2NjU4IGIwMGNiYjA4ZTBjYzExYmVlMGRlYWI0NTdhOWZhNGUzYTQ4MzdhYWUgbGVnYWN5LXRydW5rCis0NjY1OSA1OGRlNjFiZWRkZmNlZjNmZjJhM2UzZjE5ZTBjYTZlZGY4MDlhY2Y1IHJlbGVhc2UyNC1tYWludAorNDY2NjAgYzA1ZWYwOGUxYmE5NGQ5Y2ExNzk4NjkzMGJiZTQwNzkyYjBjMGQ1OCBsZWdhY3ktdHJ1bmsKKzQ2NjYxIDIzNzQ1NjA2MmI4MGY3MzZjYjg3MjIxMzMxYzkzNTJjNGEwOTk2ZmUgbGVnYWN5LXRydW5rCis0NjY2MiBjYjNmNTEzOGVjYjU3ODBhNGZkYjVjMGFjZWI0OGU4NmYxN2RhNTRiIHJlbGVhc2UyNC1tYWludAorNDY2NjMgYzkwOGFhYTkxZWFlMTc4N2MzMTUzNDdhNTVlNGZkM2E1ODFmNTdkYiBsZWdhY3ktdHJ1bmsKKzQ2NjY0IDFjOWQ4MDc3ZWNmYjIxZjljZmQ3Njc0ODc5NjJhMTU5YmQwYTI2NjcgbGVnYWN5LXRydW5rCis0NjY2NSA1YWRiYTcwOTYwNmIzYTY0ZDIyY2E5YjJiOGQzZjUxZWU3ODdmOTRmIGxlZ2FjeS10cnVuaworNDY2NjYgOTkwNjQ3ZTJhYmM0YjI0NTJiMjVlODc3OGQ5M2RjZjMwNGYzYjMzYSBsZWdhY3ktdHJ1bmsKKzQ2NjY3IGE0YjU4YWI2NTIwMjNjNTgxMjkwNTM0OGM3Y2NhMTY0OGFkMmJmYTkgbGVnYWN5LXRydW5rCis0NjY2OCBmM2E2Nzk5ODVlMGQ1NDhkZjMwN2E5OWE3NGE0NWYxYjAyMTc3NWI3IGxlZ2FjeS10cnVuaworNDY2NjkgMzA2MDViZjk1ZWY4YjhiZTdhYjA3YzA0YmQxNDAxNWM4OGU2NTY0NyByZWxlYXNlMjQtbWFpbnQKKzQ2NjcxIDAyZDQ3NTQwNWUzYjVmMjkwYjYwNGFmMDMzMzExMTBhNWQzZWY4MWIgbGVnYWN5LXRydW5rCis0NjY3MiA2NjQ5YjUxZTI0NWY5MjVkYzc3NDExMDFjMDk3NTU4NjI3YTk2Y2MzIGxlZ2FjeS10cnVuaworNDY2NzMgMjE3N2FlY2Q5MWZjYmFiM2RhOGQ3NzMwYTVhNjNhM2ExOTc2Y2E2MSBsZWdhY3ktdHJ1bmsKKzQ2Njc0IDA4NTVkYTE0YTgyMGMwZjE2YTVlN2JjYjkwYTY4NTE0NDI5YWVjMTAgbGVnYWN5LXRydW5rCis0NjY3NSA5NjM5Y2IxM2I5NDA1MzBkMTM5MGE3ZWQ0NjFmNzEwNDE3ZTAwODY1IGxlZ2FjeS10cnVuaworNDY2NzYgNjg3YWFjZDY0YmU5NjY5NjFhZDc0NzExODAzNjBhZTJlMmJkNzc5YyBsZWdhY3ktdHJ1bmsKKzQ2Njc3IDBkY2I5MjI4Y2IzZmQ4NTUwMjQwZDlhZDk0NDdiMWQxNDBlYjAyMDcgbGVnYWN5LXRydW5rCis0NjY3OCA2NTRmMDM4M2RiY2IyZTNjY2FlOTgxYzEzODJjNTU1MTcyMWI0Y2RiIHJlbGVhc2UyNC1tYWludAorNDY2NzkgYzRiNDQyMjJhNTk5NGIwN2FjZDRlOWU3NjhlYTM2OTFkZmQ2ZWM1NCBsZWdhY3ktdHJ1bmsKKzQ2NjgwIDE4ZGU1MGI1OGZiMWQ3OGZmY2U3NjEyMTUxYTg3ZTc2MWQ5ZTMwMGQgbGVnYWN5LXRydW5rCis0NjY4MSBmMDA1MThiYjViNDMzNTc3NWMwNmUyNjliZDU0ZjZjMjIzMmU4ZDJmIGxlZ2FjeS10cnVuaworNDY2ODIgODBhNjI3MzQwYzlmMjNkNzk4MDQ3ZmUzOGM1ZTgxZjNjZjBmNTdiZCBsZWdhY3ktdHJ1bmsKKzQ2NjgzIDExZjY2NzMxNTU0ZGJhNzgwZTUwNTA1NDdhYzFjNWEwY2NhN2QyOTkgcmVsZWFzZTI0LW1haW50Cis0NjY4NCBhNjBhZGYwY2IyZmQ3NGZiYzdkOTI0ZDMzNjhjMjMwZWY5ZTU1N2YxIGxlZ2FjeS10cnVuaworNDY2ODUgNzA4MWU4ZDUzMjk4ZWYzYzQ0OWZjZDdhOTI0MzFkNmVhNDIwYjk2NyByZWxlYXNlMjQtbWFpbnQKKzQ2Njg2IDZhZTQxOGU0YjM2YTlhNjdjY2RlNzIzYmZkYTIwOTVmZGI0NmU2OTUgbGVnYWN5LXRydW5rCis0NjY4NyAxZTM4ZmY4MWM4YTk1MmVlYmY3Y2JiZjM2NzI1Nzg1MmE4YzAzZWYyIGxlZ2FjeS10cnVuaworNDY2ODggODI4YzEwNmQ1ZWNjOWZkNzRjZDE2ZjhiZmQxYTkyODZiMTZkYzIwYSBsZWdhY3ktdHJ1bmsKKzQ2Njg5IDVmYmVmYjVjOGEyM2U2OWNkMDJhNmUzOTkzNWM1MWM5YzIzOTgxZTEgbGVnYWN5LXRydW5rCis0NjY5MCAwZGNiNjJkNmQ5OWEyOGE0ODA3NjY0YWFiMmMzNTg5YTU2OTUwN2E3IGxlZ2FjeS10cnVuaworNDY2OTEgOThlODFhZjQwMDA3ZWZkMThlYTY2NmVjNGRhNWQ1MmFkMTZmNGY2NyBsZWdhY3ktdHJ1bmsKKzQ2NjkyIDFjMDE2ZjljYTVhNzRhZDEzNzM2Y2I3MDEzZGRjZmQyZjEzODJlZDUgYWltYWNpbnR5cmUtc2YxNDU0NDgxCis0NjY5MyAyODBiOGVhZWUxYzAzNGRkYTA1YWMyZDg3MmIwNmEyOGM3YjAyYWRjIGxlZ2FjeS10cnVuaworNDY2OTQgYzk4OWZhZmZmM2RjNmM1MmRiYTJmMTQ4YjIzMjExMjExNzRkOTljMSBsZWdhY3ktdHJ1bmsKKzQ2Njk1IDMxMWY3NTFhY2E3YTMzMmQ4ODE1YjA1ZDE0MGZiOTQ2Yzc4OGMzZGMgbGVnYWN5LXRydW5rCis0NjY5NiBjYjNiNDM5YzI5Y2NmZGE5ZmUwODFmOTUxOTc2ZGIxZDYyNDgxZmRlIGxlZ2FjeS10cnVuaworNDY2OTcgOTMxYWQwNmJlYzU2MTk2OWQxNDRlNWE5MDNlZGQ4OGVhZjM0OGFiMyBsZWdhY3ktdHJ1bmsKKzQ2Njk4IDYyNWMyZDk4YTFmODA1ZDE3OTM3YzM2YTgzOWE1NTllZDMwNzMwZTkgbGVnYWN5LXRydW5rCis0NjY5OSA3YmZhZmRlZmZlZTI2MDk1NmVjMjhhZmRkM2JmMTUzNmJhN2QyODAzIGxlZ2FjeS10cnVuaworNDY3MDAgMWU4YjU5Mzg5ZTJlMTBiNjgyNjhlOTkzMThmMTRhN2I5OGE3YmQzNiBsZWdhY3ktdHJ1bmsKKzQ2NzAxIDFlODU2NTdmMDQ3NDBkNjBiNjk3ZGYyMmI0MmNlZmVjZmM5NmUyMjkgbGVnYWN5LXRydW5rCis0NjcwMiAzYTM2ZDVmNWIxMGZkMzA0ZTUxNmY4Yzk4ODg2NTRiMjBmYjJiNzkwIGxlZ2FjeS10cnVuaworNDY3MDUgZWE5OTY2Yzg4NjU3NDJkMjgwNDZhODNmNDE4NzlkZWIyZjJiY2Y1MSBsZWdhY3ktdHJ1bmsKKzQ2NzA2IDBjZDIyNzNiYzNiMTc1NmM4OGMzZjZiNjkyM2MxOGNlOTZjNTU0NDcgbGVnYWN5LXRydW5rCis0NjcwOCBkZWZiMmI5OTM0MzRmZjFmNjYxOTc1ZDYyOTgzZjdkZjBmMWNhODExIGxlZ2FjeS10cnVuaworNDY3MDkgYTJjZjg3MWI3ODAwZThkZGMzNzNhOTQwZWI2YzM1NzAxYjY1NGVkZiBsZWdhY3ktdHJ1bmsKKzQ2NzEwIDNmYjM4MzUxZGQzOWNiNzNlNWQyYmIzYjQ2NzU4OGYxMzYzNzVlYWIgbGVnYWN5LXRydW5rCis0NjcxNiAyYWY1NzU3ZGU3YjFlOWFkNjQ3YTk5MmYyZTZjNzMzMjRjODI4NmVlIGxlZ2FjeS10cnVuaworNDY3MTcgMWNiMmVjZTRiOWUxZGUwZWFiZDM5ZDZhZTQxYTIwZmU0OTM2MTNmOCBsZWdhY3ktdHJ1bmsKKzQ2NzE4IGEzNjY4ZTk0ZmM2ZDRkNDc3MmI0YzM0MDM0YmU1MTUzYTIwMDlmNDQgbGVnYWN5LXRydW5rCis0NjcxOSAxYjQ3ZDAzMGMzZmFlNWM3ZjVhYjNiMDZiZGY3NmZiMzNhMmU2OWExIGxlZ2FjeS10cnVuaworNDY3MjAgNzcwNGYzNzU0MWY0MjMxZmViZDYwMmNlMzEzMjkzZjU2MjM0MGQwOSBsZWdhY3ktdHJ1bmsKKzQ2NzIzIDg3MmU5OTFmOWI3MDE1NDA5ZWY1N2E3OWYyMzViMDc3NjJjOGFmNjIgbGVnYWN5LXRydW5rCis0NjcyNyAxMTAwYjUyYzU1ZmRmZTM2NDViZjEzOWU1NjA0ZmNhY2U3ZTdhNDcwIGxlZ2FjeS10cnVuaworNDY3MjggYTA3NjFjZWI4NjMzYTgxYTM0ZDg0ZjkwZmQzYzZjNmQ5MmRkYzZhNSBsZWdhY3ktdHJ1bmsKKzQ2NzI5IDBiNGVhYzQwNTBiODAwMjhiZjJmNTVhMGVjMTc5MDQxYmYzYTEwMTggbGVnYWN5LXRydW5rCis0NjczMCBmYzNiY2Q0ZTQ0Yjk2NGFlNzI4MDI2OWQyZTkxMjg0MGY5NTZlM2MxIGxlZ2FjeS10cnVuaworNDY3MzEgMGU3YmFmYjFiODJmOWMxYTE5ZDI3YjhlYTdmNzhjOGQyNmQ0ODFjZCBsZWdhY3ktdHJ1bmsKKzQ2NzMyIDdkMzFiNjY5MmFiNzQ4MDFkZWIzNWM2NTYxMDQyMDdhZmEwMjFiYjIgcmVsZWFzZTI0LW1haW50Cis0NjczNSBlM2MwOGYwNjZlYjgwZDdlODFlZDFkODk5MGQwMzhkMTA1NTU5ZjAwIGxlZ2FjeS10cnVuaworNDY3MzYgZmNiZjYzYzliNGY2ZmNlZGE2MjUyNTg3YmMxZWRmZWYxMjNiZmQ1OSBsZWdhY3ktdHJ1bmsKKzQ2NzM3IDRiMGEzZDBkODU4NDFiNzUwZjdmMzE0YjdlN2QzM2QwZTljNjliNzQgbGVnYWN5LXRydW5rCis0NjczOCAxZTA3MDRjZDllZTgxYWFhNTg4MGY1YThkYjAyM2ZhNGM4YjBlNzE3IGxlZ2FjeS10cnVuaworNDY3MzkgNWM1OGZkYTk1YWE1YTJiZmQ0MjFjN2ExZWQ0Y2JjZTk4YzU0MzRkNCBsZWdhY3ktdHJ1bmsKKzQ2NzQwIGYyOGY5YzE1ZTJkMGY4ZTAyMzE3ZTg3MGU2NmM2NWQ2NjkwMTM1YzcgbGVnYWN5LXRydW5rCis0Njc0MSAzNTgxZDFkYzQyNTMzNzIyMzA1OTZlYzg0OWE2YmYwZTYxMjVkMTczIGxlZ2FjeS10cnVuaworNDY3NDIgMWQyMzljN2U4ZDYwNzVhMzE4NjAxOGFiNmI0ZmE0MGRmZGFkMWIzMiByZWxlYXNlMjQtbWFpbnQKKzQ2NzQzIDcyYzhmMThlMDMxMTgzZGJlOWE3ZmNlOWZlNjYwMzExMWQ5NjA5OWIgbGVnYWN5LXRydW5rCis0Njc0NCA3NjE5MjE2YmJjMTk0YzM0MzFmODM3MDlhYWI5NmY5YTlhZmJhYmVjIHJlbGVhc2UyNC1tYWludAorNDY3NDUgZDNkOTYxZjM4OGJlMmIwM2FmNjRiMTQ4YzczZjAyZjQ2NzNjZWE3ZiBsZWdhY3ktdHJ1bmsKKzQ2NzQ2IGUyYmE1YWU0YjgxM2Q5ZmQyYzJkMjY4ZDhiYWY2YzI2ODQyNTU4NTEgbGVnYWN5LXRydW5rCis0Njc0NyBlMGQyOTU4NjIxMmEzNzdlZGQ5MjI3MzY4ZjRjM2M2ZDcwY2YzMjE1IHJlbGVhc2UyNC1tYWludAorNDY3NDggZGVlNzNmYTgxMTBmM2VhZDQzMDBmOTE2NDVmNjVkYjhjOGUzZTQ1ZSBsZWdhY3ktdHJ1bmsKKzQ2NzUwIDE5ZmQ2MTQxOTQwZDViMGE3YjRmYjJjNDEzODkxMmFiYjAyODNkOTggcDN5aworNDY3NTEgMjQ5MzBlM2I2MDYxOWFlYzMxOWNkZjMzYjJjZjQwYmM5MzExODI2YiBsZWdhY3ktdHJ1bmsKKzQ2NzUyIDM2NWNhMDRkMDg1NjRhMDlkMWNlYmFhZGFlNzQ1YjA4YTQ3NzZjNjggbGVnYWN5LXRydW5rCis0Njc1MyAwOTk5N2IyZjYzYTJjM2RhYjJlNmNkN2VhOWNiZmJmZjFiZmExYjJmIHAzeWsKKzQ2NzU0IGExOWMyMGM1ZTVjNzU2NjIxNTdiMTEwMmUzNmMwN2QxZTJjMDFhYjkgcDN5aworNDY3NTUgNmJhN2Q0NjY3OTg2N2JmOWQ0YWI2ZWU5OGUxNTVmY2QwMTE3Y2FkNSBsZWdhY3ktdHJ1bmsKKzQ2NzU2IDBlMzE5NjY3NDU1YzM1YzYyMjI0MzU1YjM3MjkzZWRlNGU1MDIzYjggcmVsZWFzZTI0LW1haW50Cis0Njc1NyA1YmM3MjcyYjgxZTU0N2RmY2NlYTBiMGZmYjgwMzUyMDk3Y2Y3NTU2IGxlZ2FjeS10cnVuaworNDY3NTggOTM1YWMyMmYwYjNmMDI2ZTUzZjhkYmM3Y2IxYmM5ZDY1MTM3MTYyZSByZWxlYXNlMjQtbWFpbnQKKzQ2NzYwIDVmMTk1NDQzZTAwYWE5MDljOTA1ZmQxNTFjMzlmY2U3OGVkZDg0OTIgbGVnYWN5LXRydW5rCis0Njc2MiA0ZTc5OGNhYTA4MmU1Y2RkMTJhMmQ3ZTFmNzJmY2VlMWI3YmNjMDU5IGxlZ2FjeS10cnVuaworNDY3NjMgYzIwMzg0MDU3YTA2YzI3YjczNjI1NWEwYjgyYjg0ZDE5ZGE1NjU5NCBsZWdhY3ktdHJ1bmsKKzQ2NzY0IGMzYzUyZjE1OTk5OWFlOTQ2MGFmZGRiNGQ2MzdjYzEyMjFmOTBmYTkgbGVnYWN5LXRydW5rCis0Njc2NSBlY2E0ZmUxMzI5NDBiZDNjNTJhYTZkYjExMGU4OWViNDIzNTYxMmMzIGxlZ2FjeS10cnVuaworNDY3NjYgMmVhMjYzYjYyODk3MmU0NTI3M2ZkOWZkZWI4YmUxZWU5NjY1YjYyNCBsZWdhY3ktdHJ1bmsKKzQ2NzY3IGRlYmM4ZDc4M2Y4NjllNWE4YzhhNzI5OGY3MjQwY2FjMWNmOWEyNzcgbGVnYWN5LXRydW5rCis0Njc2OSAwYTFiYWQzMmFiZmUzOWQ5YTBkYzBiYjI2Y2M0YzUwZjU2ZWI4MGUxIGxlZ2FjeS10cnVuaworNDY3NzMgNjdmNDMwZDkyYjM4ZTVjYTQ0YzIyYzc2M2E2ZjQzMTdmOWFmZjgzNCBsZWdhY3ktdHJ1bmsKKzQ2Nzc2IDQ2NTk5ZmM0ODZlOGZkYWFmMjFmOGJiODNiOWE4OGI0ZGYyMDRmMDUgcmVsZWFzZTI0LW1haW50Cis0Njc3NyBjNTczMjFjODQyMjZjOTE2Nzk2YThlZDVjMDdlYzNiNWVkMTZiMjZlIHJlbGVhc2UyNC1tYWludAorNDY3NzggNzdiNjU4OWZhZGI5N2Q4NWUwYzY0NWM4MTVjOTg5ZjM0ZTU1NjRiZiBsZWdhY3ktdHJ1bmsKKzQ2Nzc5IDRlZjFjNjg1YmNiZGNlNDQ0M2IzMjhhZTA3Yzk3NzcwMzlmZjMwZjUgbGVnYWN5LXRydW5rCis0Njc4MyAwNWE0OWM4OTg1ZmIwOWY0NzVjN2EyYTlmNDNiOWQxODNhOTY5OTc2IGxlZ2FjeS10cnVuaworNDY3ODQgYWMyNWVlZTkwMjU0MTc1MTIxYmNlYTE1NzYzNWU5ZWRmMWY5MmQ3NiBsZWdhY3ktdHJ1bmsKKzQ2Nzg1IDcyZTM3YWRhNDE3MDcyZmIxYTEzMDMwOGNlOGUzMGUzZjBiN2FjYWMgbGVnYWN5LXRydW5rCis0Njc4NyA3MGFhYzJiOTNlMDlhM2E0ODkwMGIyNWJkM2JjOGQ1YmJlY2VjMjBkIGxlZ2FjeS10cnVuaworNDY3OTIgNmU4ZDk5NzE4MTcwMGQ0MWMyMjMyNmZjZDM0OTgyOGU2YzFjYjk4NyBsZWdhY3ktdHJ1bmsKKzQ2Nzk0IDEzNWQxNTg2YjM1ZDU0YmFjODFkNzFmYTQ2ZTJkNmE3OTg0ODIzOWMgbGVnYWN5LXRydW5rCis0Njc5NSAxY2FmYmNkN2Y1NWNjY2E5MWM0MDg1YjFmNWE2ZWE1YWY5YWYyYWU1IGxlZ2FjeS10cnVuaworNDY3OTggNzZhZDExOGZmZTNiNWY4NTYyODY3NTlmMGVkYzc1M2Q0OGVmN2I0OCBsZWdhY3ktdHJ1bmsKKzQ2Nzk5IDVhNzQxOTM0MjlmMDY0ZTEyNWRlOTM2MmNjMTg2MzY0NGQ4YmE0MmEgbGVnYWN5LXRydW5rCis0NjgwMCAwN2YyNDE5N2I4N2NkNzBkMjExNjhhZjFhMTE0YzVmMzZjYWNmYzQwIGxlZ2FjeS10cnVuaworNDY4MDEgMjZhOTdlNWJkZjIxMjE1MTEwM2E3YjgzMGE0NTM3ZWExNzQ2OTFhMSBsZWdhY3ktdHJ1bmsKKzQ2ODAzIGIxMjlhNTAyNzFhZGZlYzc5MjA2MjM2Y2MyZWM1Mzk0NGJlZmNlNTQgbGVnYWN5LXRydW5rCis0NjgwNCAxODI4YWY1ZGNjOTk0NGEyZjc4NTViN2ZjYjE2ODY0Yjc4YjNiYTlkIGxlZ2FjeS10cnVuaworNDY4MDUgYmE2ZWViZjdjNzE5ZGZiNThhNWUzOTU0YThjZTViMjRiZmEzODkwOSBsZWdhY3ktdHJ1bmsKKzQ2ODA2IDE2Yzc5OGU4ZWFlMzI3Yjg1YTQ2MGNiYmExY2ViZmI0NDE5NzYzOTAgbGVnYWN5LXRydW5rCis0NjgwNyA0OTNmYjU3NzkzMmYyZDg4MzFhNDNiNTMxOWM0ZWM5N2YyOGExN2U5IHJlbGVhc2UyNC1tYWludAorNDY4MDggNDJmZTZkZTI0NjAyZmQ0MGY0MmUzOTNlZDEzNDQxY2Y1NDlhM2VlNyBsZWdhY3ktdHJ1bmsKKzQ2ODA5IGFkNWQ0NzM1YmVkYzg0NmM2YWVmMjFjMTAyZWNkYmNjY2VhNWMzMjEgcmVsZWFzZTI0LW1haW50Cis0NjgxMiA2NzQ1MGRiMjZmODE2N2U3OGJiYzNlMDUwOTcwODE0N2Q1NTdjYmU1IGxlZ2FjeS10cnVuaworNDY4MTMgZTE1ZmFmYTQxMDdkMjBkNmIwZDQxOWRmYjdiZjNkZDliMmRlODVjMyByZWxlYXNlMjQtbWFpbnQKKzQ2ODE0IDA4YjI0Yzg4ZDUxOTAxMGY1MTMzYjgzOTQzODdjMTI3NmU0ODRmNWUgcmVsZWFzZTI0LW1haW50Cis0NjgxNSBlN2QwODRjZjY1YmI5YjQwODQwY2VlOTMzZGFmMWJiYzU1MGJhNDM4IHJlbGVhc2UyNC1tYWludAorNDY4MTYgNDU0YWEwZWMwZWI3YjNhNmNiMzQxY2MyMTAzMDQ2YTMyNDNhYjZlMSByZWxlYXNlMjQtbWFpbnQKKzQ2ODE3IDgyMzMxZjExYTE1NjBiZmUzY2VmNDE5ODFiYmE5NGE0ZDVmZGUwZWMgbGVnYWN5LXRydW5rCis0NjgxOCBlMmQyZGM1MDY1Mjg3NzliYmQyNWQ2OTUwMjQxYWRkMTMzYTc2MGEwIGxlZ2FjeS10cnVuaworNDY4MTkgNDI4MDg1MjY1MTFjOWJiNDkyMGIxZTEwNzIyMWY4ZWFkMTczZWZmNiBsZWdhY3ktdHJ1bmsKKzQ2ODIwIGIyM2VlYjgwMjc4MDUyM2I2NTQ5NmU0YmJmNWVhNmM4MjYyYjNlYTYgbGVnYWN5LXRydW5rCis0NjgyMSAzMTI1MDk5YjM0OTcxYzMwYzc2OTc4M2VkMzkwMGE2ZTUxY2VhMjE2IGxlZ2FjeS10cnVuaworNDY4MjIgMmRkMTk3MDE0NjEyMmFkZWNlYzg3NjkyNmQyNDhiNTUyNjVhYWU4MSByZWxlYXNlMjQtbWFpbnQKKzQ2ODI0IGFhNWExYmNhMjhkZDg4Y2NjMmRlYzE0YjU5ZTQzYTRkODFlNjcwZjggbGVnYWN5LXRydW5rCis0NjgyNSBjZDVmMmM1YmFiNjUzYjU1NzM2ZTc3M2VhZTM4NWFiNDMyYzJmOGQxIGxlZ2FjeS10cnVuaworNDY4MjYgNTM4Y2YxODhmOGE2Y2JjMjIwOGE1MjI2MmViOWFiZGI5ZjI2MDY0MSBsZWdhY3ktdHJ1bmsKKzQ2ODI3IGJjMDkxMTgxYjg0MTM5NTUwN2E3NzgwMjFmNDU5NWYxYjFlNGIyNGMgbGVnYWN5LXRydW5rCis0NjgyOCAwMTQyNTM2YjUyYjY0YjNhODM2YTYyNzgwNzdmNmYwNWJjZTRiYzE5IHJlbGVhc2UyNC1tYWludAorNDY4MjkgYzVhZmQ0NDBhNGQwOWQwZGUwYzc3MzdlNTM3MWNkMmQzNWU3MmU3YiByZWxlYXNlMjQtbWFpbnQKKzQ2ODMxIDkyNDQwZGU4NjhlOTNmZWYxM2IzMzgzYmU5Y2M1MTBlOTdmYjRkZmMgbGVnYWN5LXRydW5rCis0NjgzNCBhMWRkMjVlYzJmNWJjNjY1NThjMzM4OWRhYjU1YjBiZjMxMmU3OTg3IGxlZ2FjeS10cnVuaworNDY4MzUgNzM2NjVmNmZlYzMxNWFlY2YzMGRjZjdlMzFhZjQ2OGZmYTdkOWI0NSBsZWdhY3ktdHJ1bmsKKzQ2ODM3IDdiMzE4ZTk2ZjgwYWE5NDhkYWE0MGYxY2EwNzFlOTllMWIzYTJjZTggbGVnYWN5LXRydW5rCis0NjgzOCBiOGYyMjg1MWMxZmYxZTU5OTI0YzVlN2IyNjU4MGI5M2E5MDI2NTU2IGxlZ2FjeS10cnVuaworNDY4MzkgMGIzZmUyYjczNGExZGZmMTQwNjU1ZjEzYzMwYzgzZGI1NTM2ZTY0NyBsZWdhY3ktdHJ1bmsKKzQ2ODQwIGJmNGU0ODViZWNmMzc3NjIyYjBmYzJiYWU5ZTJlYmVlN2MyY2QzMGUgbGVnYWN5LXRydW5rCis0Njg0MSAxOTVhMGQzZWVjZDQ1ZWI3NDNhYjIwNGJmOGEyZTYzMDdhMWU2Mzg0IHJlbGVhc2UyNC1tYWludAorNDY4NDQgOWQ4NDc4ZjczMmQ1YWRjOTFmMWM3ZGM4Y2IyOTk0MGVmZjFiNDc3YyBsZWdhY3ktdHJ1bmsKKzQ2ODUwIDlhOTQ0Njc2NzMyYTdkYjBlNDBiYjY1YzhkZWY2NjVjMzMyODI4OWMgbGVnYWN5LXRydW5rCis0Njg1MSBlODAwOTdiZjczYjYwZmFkOGU3ZjE0MGYzMDM2NWQxMzU2M2FlY2NmIGxlZ2FjeS10cnVuaworNDY4NTIgZTYxNTc1NWNhODcyNWZiMGI5ZjhmY2Q3MTVjY2RkMzljYjU2ZWJjYiBsZWdhY3ktdHJ1bmsKKzQ2ODUzIDBhOGEzOTJlMWZhZWNmMzBmODEzNTNlODMxNzI1MGQzOTM4YjU2ZDcgbGVnYWN5LXRydW5rCis0Njg1NCBhZjE3NDJhODA0OWVjNzg4NmU4NGQ1MTA1ZWVmODkzZmMyMGY0YjBkIGxlZ2FjeS10cnVuaworNDY4NTUgNTAxZWUyYTA1ZmVjNGI4ZmQwZGY1YjZjMjg4ZWFiNzJiMzVkOGVlOSBsZWdhY3ktdHJ1bmsKKzQ2ODU2IGFkZjIwODkyZDhjZmJjMGNlZmZkYzk3YmRiMTc3ZjFhYWM5OTNhYmUgbGVnYWN5LXRydW5rCis0Njg1NyA0OTAyNmFmOWQxZDc5YzQxYTBhN2FhNjRiMmZlYmRiZDEzNDUzZmE0IGxlZ2FjeS10cnVuaworNDY4NTggZTg0NjRhZmVmNGE0MWFhOWE3YjJmNjE1YzBjYzMxYjg4MGQ3MGNiZSBsZWdhY3ktdHJ1bmsKKzQ2ODU5IDFiM2I2YjE5ODJhYWNkMDMxNDg4OGVmZmI4MWJiZWQ1YzY1MTY3MzYgbGVnYWN5LXRydW5rCis0Njg2MCBhYjI1M2NkNDk3ZDIxMzc2NzMwMmJiZWI2YTI1Zjg4YTJjMDAwNGE4IGxlZ2FjeS10cnVuaworNDY4NjEgZmM0YWZlZTQwYzJiM2I4NThhOTU5NzRiYzM0MTc4NTE5MzczNzVhYSBsZWdhY3ktdHJ1bmsKKzQ2ODYyIGE3ODkzOTBkOGVhN2VkZGU3ZDA2MzRlN2NhYTg0NTVhYjdhODk0YzAgbGVnYWN5LXRydW5rCis0Njg2MyBiNTBhYjI4OGFlMjdmZjQ4OTU3MGJlMzFiODZhMzM2OGMzODkxZGY3IGxlZ2FjeS10cnVuaworNDY4NjQgZDY3ZGVkN2EyOTE0ZTRjZjNmOWMxNWExODI0NzBhYjQzMWFkZTBmNiBsZWdhY3ktdHJ1bmsKKzQ2ODY1IGZjYTFlNDI0ZDAyMzhmODk1MmIwODgzZjdlYjljNzc0NDU0ZDk5MGYgbGVnYWN5LXRydW5rCis0Njg2NiBjYmYyNzJmNDc5ZDEwN2IzMjNlY2E0MDYzOTYzMmEwOTlkODg5NjJkIGxlZ2FjeS10cnVuaworNDY4NjcgNWE5OTRkMjZhM2NmODk0YmE5YTE2ZWE4ODVmYTBiN2ZjMDVhOTk2NSBsZWdhY3ktdHJ1bmsKKzQ2ODY4IDBhY2M1MmQzZmJmMWY0MzVhM2ZjM2JlN2IyYmVlMTg3Yjc5ZjhjOGIgbGVnYWN5LXRydW5rCis0Njg2OSBlNmM4MDBhNDYzYjEzMTI5ZDNjNzE4MDJjYWE1ZDQzN2QzMTYxZmY4IGxlZ2FjeS10cnVuaworNDY4NzAgOGJhOTdjY2JmOTNhODNmNmU2YmZhODA2MmU1ZGJiZWJiZTg1NjA3MiBsZWdhY3ktdHJ1bmsKKzQ2ODcxIDY2Y2JjY2U0MjI3OGYyMmQyMTRiNjhhNmViMmVmZWM3NTk4OTNhNWUgbGVnYWN5LXRydW5rCis0Njg3MiAxZmE3OGZkMWU5MzM5MTQ3NGZjODk1MzE3MDk2ZTg1ZTJlNDQ3MmQxIGxlZ2FjeS10cnVuaworNDY4NzMgNjBkNzlhMmJjOTk3ZThjYzBjMzMwNDA4ZTMxNzMxMmIzYjdjOTkxMiBsZWdhY3ktdHJ1bmsKKzQ2ODc0IDFhMTFhNGE0OWZiODVhM2Y5NmY0ZTM0ZjI3MGJmYjBmZGIwNzk0NWYgbGVnYWN5LXRydW5rCis0Njg3NSAzZWVlN2JkOWEwZDA3MmI0M2JkYzZlZDcwYzdmNzUwZTI0OWE2ZDM0IGxlZ2FjeS10cnVuaworNDY4NzYgNDE1NzBmMDk5YTRjM2U2NTFmNmIyZDU3ZDc5YzA5YjY3MDc2NmMxYyBsZWdhY3ktdHJ1bmsKKzQ2ODc3IDkyZDhjZGM0YjkwYzAyYzRkMTc1ZmE2YTQ3MGE3Mzc5ODUxMjY0MDQgbGVnYWN5LXRydW5rCis0Njg3OCBmMTRhYjcwYzMyMGU0OGZkMmI1MmUzMWZjN2E4N2JjMjUwNzA1ZTZmIGxlZ2FjeS10cnVuaworNDY4NzkgNjllODljMjkwNDRlMmJkZDBmYjliNzU1M2IwZjliNWY5MzJmYTc3OCBsZWdhY3ktdHJ1bmsKKzQ2ODgwIDQ3ZDhkMTljY2FkYzcwNTJiYThjMmI1MjQ2OWEwMWVjNTMwN2I0YzkgbGVnYWN5LXRydW5rCis0Njg4MSA3OTk4M2NmNjM0YzAyNWFiNGE1ZTcxZWU4N2Q3Yzk4ZjM0ODBlOGIwIGxlZ2FjeS10cnVuaworNDY4ODIgNDZmM2ViNDc0Yzg0MmQwYjAwYWU5MjkxY2IzNTdmNzYxMWUyOWE0YSBsZWdhY3ktdHJ1bmsKKzQ2ODgzIGE5MWU3MzljZTMzMzI1ZmE0YWFmMTAwMjRmY2Q4YTM4ODczZDA5NmUgbGVnYWN5LXRydW5rCis0Njg4NCAxODkzMDRjOWQwN2VhZGE0Y2Q0YzIxOTE3MmFiNWVlNTkwYzJmNDkwIGxlZ2FjeS10cnVuaworNDY4ODUgMmFiMDM5NGU2ZTQ5YjRmMzUzYjg2YjAzY2VmOTYzZDVhNTNlNmVkNiBsZWdhY3ktdHJ1bmsKKzQ2ODg2IDYxOGQwODhkOTY2ODljZjdkZGFlNzgzZTJjNGM4ZjkzODRjYmJjY2QgbGVnYWN5LXRydW5rCis0Njg4NyAxZGE4NDU2ZWJkNDg3MTlhNGViZDc4N2U0ZmJiMzU2NWMzMDMwOTE1IGxlZ2FjeS10cnVuaworNDY4ODggZDU3NzFhMzg5YjhlYjdhOTg1NzhjZDgwNWVkZDNlMTI2MGZkNTNkOSBsZWdhY3ktdHJ1bmsKKzQ2ODg5IDE3MDNlZmRhNTc3NDJkMTgxYmUwNDVmMjA3MDhkNjVkOTJkYjk5ZDEgbGVnYWN5LXRydW5rCis0Njg5MCA1MTczMmU4MWM3OTYxNDY3ZjY4MzJlYjZmYjhjMDNhODdlM2NmMzhmIGxlZ2FjeS10cnVuaworNDY4OTEgOGZlMzczZmIyMWQ0MzBjNGE2NGViNDU0ZDAxZWNiZDJkZmI1Yjk0NiBsZWdhY3ktdHJ1bmsKKzQ2ODkyIDk3MWFiZjNhZWNmNDExNThjYzcwYzFkYjc5M2QxNDU0ZjE1YWRlMTggbGVnYWN5LXRydW5rCis0Njg5MyA5N2I2MWQ2ZjZiNzY4MTYyMDQ3YTljNjQ4NjFhMTdjNTBjNTMzODM2IGxlZ2FjeS10cnVuaworNDY4OTQgNGM3NGVjODMxYTZjM2JmZWUzZjg0NDkzZmM4MGJiOWJiNzZlYjQyZCBsZWdhY3ktdHJ1bmsKKzQ2ODk5IDM4MWE3MmFiNWZiODM5NGEyZDNlYTI4YmQ3MGMxMDBkNjM2YzdkMWEgbGVnYWN5LXRydW5rCis0NjkwMSBjODYxODQ3M2NkYzZlODE2YjY5Y2IwY2FlMGM4YTU0OTJkMGQzMmRiIGxlZ2FjeS10cnVuaworNDY5MDIgNTFmMzM0MmI3MGQzY2ZhNzM5ZWQyMGZkZjdkNDQ1ZTBjMjJjNjQzMiBsZWdhY3ktdHJ1bmsKKzQ2OTAzIDc2NWZiMWNjYzNkODk0ZGJkYjFhZGE5MWQzZmU5NDM2OGI2MjZkYzcgbGVnYWN5LXRydW5rCis0NjkwNSA5Yjg1MDdjZmJlOTUwMTA1OWYyNzcwZmNlZDI5NWQxYzliN2E3YmRiIGxlZ2FjeS10cnVuaworNDY5MDYgYTQ1NTJmMDhkNTNiMzQyNzNlZjRjYzQ0NjU3OTU4ZTc0NTkzZjE4NyBsZWdhY3ktdHJ1bmsKKzQ2OTA4IDljNTJlZmNhZmY2NTFkZWU4NTkyMTM3Zjk5YzdmM2M3Mzc0NTQyOTUgbGVnYWN5LXRydW5rCis0NjkwOSA3MGIxNjZjYTFjNDllMjM3ODg1NTIyZTgyNGQ4MGZhOWRlOGQ0ZjRkIGxlZ2FjeS10cnVuaworNDY5MTAgOTE0ZGExMDM2ZWVkNWRiNmIwNjhhNmM4MDhlYThjZmNkMzJlNzU2YyBsZWdhY3ktdHJ1bmsKKzQ2OTExIDkzNjQyOWUxMGI4Nzk2ZWI2YmVjMzFhZmQzMDk1MGUyNDkyOTRiYjIgbGVnYWN5LXRydW5rCis0NjkxMiBlYTM3MjNiMmQ0NmJkMTc4MDQ2ODRiYmFkMjg4MTFlMTBiZTY3NjBiIGxlZ2FjeS10cnVuaworNDY5MTMgNjQ1NjA5MmMxMjM1YTE3MDFhNzY0YTdjZWRmOTY3YmQ0NDIxYmJmZSBsZWdhY3ktdHJ1bmsKKzQ2OTE0IGUxYjE4NDc5Y2U5MzA3ZDNmNWZhODEyNDkxMGE1M2Q0ZDg4YzNjYzkgYWltYWNpbnR5cmUtc2YxNDU0NDgxCis0NjkxNSA5ODEyMmQyMTc2ZjE0MGExZjUwMjc3ZjkzMjdmMjI2MjU5OTVkN2EyIGxlZ2FjeS10cnVuaworNDY5MTYgNWRiMWZhNmU5NjgxODM1ZjUyZDBjYzk3NGY4NDE4NWU4ZGQyOTYwZiBhaW1hY2ludHlyZS1zZjE0NTQ0ODEKKzQ2OTE3IDk5MjEyNmEyOWUwZmQzOGQ0ZGZjMDRkZDcxNDEwYTExZmUwYTFkNTEgbGVnYWN5LXRydW5rCis0NjkxOCA0ZTc0ZGY5NTk1MThhNGI3MzgzYzZlZDRlY2NkNjY2YTI0ZGYxMjNmIGFpbWFjaW50eXJlLXNmMTQ1NDQ4MQorNDY5MTkgZjdkMjNiY2E1OTlmZWJjYmQxZTRlMTljMTAxZmU4MWYxZDNiNGVjNiBsZWdhY3ktdHJ1bmsKKzQ2OTIwIGE3MTRmMmYxM2UyNWYyMjcwNGYxN2FhMTgyNDQwYmU1NTQ5YTI3NGUgbGVnYWN5LXRydW5rCis0NjkyMSAzZTk2ZTUwMjVkOWY3YWFlNGIwNGYzNjU3ODZjYzU3NmRhNTIxOWFlIGxlZ2FjeS10cnVuaworNDY5MjMgNmYyZjE4Zjg2Mzg3NDNkNDlhZDQ3ZDEyOTFlNDZhNWVhMmE1YmM1NiBsZWdhY3ktdHJ1bmsKKzQ2OTI0IDZmMzA2MTFmMjgzZGNiZTcyZWY3NjA5MDZmNzA1ZjE4M2JlZjQ3OTcgbGVnYWN5LXRydW5rCis0NjkyNSA1ZDYyMmU0ODNmY2NmYTYyZGY1N2I0NGMzNDQ5M2UxYzMyNTY4OTY4IGxlZ2FjeS10cnVuaworNDY5MjYgNTEyNTA3NjZkNmY1ZDI1MTMyMDIwODZiNmZjYjk0Yjg1MmMxYWU3NCBhaW1hY2ludHlyZS1zZjE0NTQ0ODEKKzQ2OTI3IGJiMWYwMmU5NzExZGE1ZjUzZWFkMjdiNzIyM2Y1YzRhYTA0YmFhMDQgbGVnYWN5LXRydW5rCis0NjkyOCAyMTY3MTA1MTIzZTQ0NzhiYWFjNzUzYzE0OTY0N2FiZDk5YmI0OWFmIGxlZ2FjeS10cnVuaworNDY5MjkgNmUwYzBjN2NmMDY4OWFkNDgwY2M1ZWZlMTcyYTVmZDIwZWE5YzRiMyBsZWdhY3ktdHJ1bmsKKzQ2OTMwIDcwYzJlZmEwMDAwNzhmMjljNGRjZWQyNWYyNjk5NTFjNTJjOGYyM2QgbGVnYWN5LXRydW5rCis0NjkzMSBhMjQ5MGY3OTMxZDMxMTM5ZWI1ZDdkZmViMjBmNGNhOTkxYjQ4MjdkIGxlZ2FjeS10cnVuaworNDY5MzIgYmI2ODRhMGMyMmQ5NjM0YTBjZjBjMzc2MWIwZjY4OWY5NmYyOTQ3NiBsZWdhY3ktdHJ1bmsKKzQ2OTMzIDc0YmY1NzNiZmY0YzM1ZTdhODVlMjllODUxMThhYWMyMjJkYTFjMjkgbGVnYWN5LXRydW5rCis0NjkzNCAwYTVjZjI1OTQ1ZTJiNjc1Y2Q1MmRkYTE5YzA5NGQzZjJhNWFiODFiIHJlbGVhc2UyNC1tYWludAorNDY5MzYgM2U1ZmQyYjcwZTVhNzBkNWU1NzEzOTRmZjE1MjFjMzE0Zjc2NGQ5YyBsZWdhY3ktdHJ1bmsKKzQ2OTM3IGVjZThhNjc1MWRiNzQ4OGI3YjgwN2Y2ZTMxODE4NzA3OTY3ZTJlZTMgbGVnYWN5LXRydW5rCis0NjkzOCA2ZjdlNjRiNzJhNTg3OWVhNmNkYzgwMTUyNmZjZTdmZTEyOGU3ZDUzIGxlZ2FjeS10cnVuaworNDY5MzkgNDU1ODkxNmI4NDFmMWNmYTc4Mjk5MTlkNzNjNWIyZDU4YmQwYjc0YiBsZWdhY3ktdHJ1bmsKKzQ2OTQwIDYyY2Y2ZDU4YmI1M2ZiNmJkZWFhMDcwYTU1YmU1NGM2ZTUxN2U1YjkgbGVnYWN5LXRydW5rCis0Njk0MSA1Nzk2YWNmYmI2ZGExNjc4NGJkODIxMTY1MGJmYzA0YTVjOTBmZTI0IGxlZ2FjeS10cnVuaworNDY5NDIgYjdhMzYyMGQzZGJiNzY3MDVkMjk3MmY2M2E0NDZjZjQzMWM5YjQ4MyBsZWdhY3ktdHJ1bmsKKzQ2OTQzIDZkODA3NmQzODA1OTdhNjY5ZGY0YzEyYTIxYWM3ZmFlYTVmZTMwZWQgbGVnYWN5LXRydW5rCis0Njk0NCBkODU3YTMyMDc1ZDRiZWMwNzEyOTgzYzNhM2MzOWNkZWRiYjFjMTgzIGxlZ2FjeS10cnVuaworNDY5NDUgNTQ5YzU0NzcwMGFmODcyNWU1MDRlYmRjMDk1ZDE1ODVmN2RkMTk1ZSBsZWdhY3ktdHJ1bmsKKzQ2OTQ2IDA2OWZmM2E3MDY5NDEwNGE0M2YxYzYxZjQ5MWZiNmRhY2MyNGIzZWEgbGVnYWN5LXRydW5rCis0Njk0NyBjOTU5ZGU2NGE4ZGExODdlMWVlODdlMTc2MzgwMGM5NzQ2NTI5MDRlIHJlbGVhc2UyNC1tYWludAorNDY5NDggNDM3N2IxN2RkYjJjZmU1MDNkYWI4MmM1ZTc0OGUzY2MyNjliNmU0ZCBsZWdhY3ktdHJ1bmsKKzQ2OTQ5IDA2OTA2Mjg1OTI5OGM1MjQyZjFjOWM2YjU5Njg3MzUxNDA1NTk2NjMgbGVnYWN5LXRydW5rCis0Njk1MCBjNTIwZWVjZTAxYjAzOTY4NGI1YzgyYjdhN2E1OWM3YWVjOGQ0Y2IzIHJlbGVhc2UyNC1tYWludAorNDY5NTEgZDY4Nzc4MzU3OTFkN2M2NDJhM2RmMDkyYTVjODZkOTQ2NzVlNjc5NiBsZWdhY3ktdHJ1bmsKKzQ2OTUyIGI3ZjRiYTYwMWRmOTdhZjdjZTVjM2FjYzM1ZjIyMDBhY2ZkMWIwNDggbGVnYWN5LXRydW5rCis0Njk1MyA5MTdiZWVhNTU1OTVkOWJiMDY1MGUwY2E5NzU4NGRjNjlkNmFiZmZjIHJlbGVhc2UyNC1tYWludAorNDY5NTQgMTZlMDVjNjA2Mjc1ZWI4OGZmNWU4MzdkOGI5YjdjOGI3NzI1YWU5OSBsZWdhY3ktdHJ1bmsKKzQ2OTU1IGQxYWVjN2I0ZGJiODY5M2Y0Mzg5MmZmN2E2YWIxODEyZTI2MWM1ZjUgbGVnYWN5LXRydW5rCis0Njk1NiAwM2MwNWNhYjVmMjEyNzdhOWUxYjE5YmY3Y2RiNDhhNWU4ZGM2YTQ1IHJlbGVhc2UyNC1tYWludAorNDY5NTcgMGY3NmE1NmQ1MDZjYzIwMGM5NDJkYjQ5YWFlMTAxYWFhYzAxZGUzNyBsZWdhY3ktdHJ1bmsKKzQ2OTU4IDBjZjJlYjNjYzUwYTczYjZlNzQ2MjQ4MzY3ZDE2OGQ2ZDBlOWQ0NzUgbGVnYWN5LXRydW5rCis0Njk1OSA4NjgwODUzZTllZTQwOTc2M2ZlMThkMGMzMWYwOGI0MjVlOGRhZWVjIGxlZ2FjeS10cnVuaworNDY5NjEgZDE1ZGYwMmRiMWNjMTNmN2FjNDQxOGE0OGExM2Y5NGM3YTUyYjBlMSBsZWdhY3ktdHJ1bmsKKzQ2OTYyIGQ3YmM2NDcwZTgzODM1Y2JkZTBmMjI3NmZkZjNkNDI0MjgxMmNkZmEgbGVnYWN5LXRydW5rCis0Njk2MyAzMmFkYWFkNTlmYjM3ZDc5YWIzNTk5NTQyMTE4MjVmMTZjMDk3Y2EyIGxlZ2FjeS10cnVuaworNDY5NjQgMGE4Yjg1MWIwMzc1MjI5ZWJlZTA2M2Q2MTNjMWNlNmM4MTlmYzA3NCBsZWdhY3ktdHJ1bmsKKzQ2OTY1IDc3YjAxYzkzMzMwODhhZmE2ZTRjMWQ0N2M0MjE4MzMzODI1YzA4MDcgbGVnYWN5LXRydW5rCis0Njk2NiBhOWY5YjUwNzViYzBjZjAzY2VjYmVjOTVkMzkxZDVmYmJjZjUxZDVjIGxlZ2FjeS10cnVuaworNDY5NjcgZmQ0MTJhMDBhMDdkZjQ1OWMyYWMzNDkwMjQyMTk1MzA0OWVjMjM4MyBsZWdhY3ktdHJ1bmsKKzQ2OTY4IGQ0YjFmOWEzMWMyOTY5ODUwMzMzZDI1ZDVlNGZiNDYyNWIwNzYxMTUgbGVnYWN5LXRydW5rCis0Njk2OSA5OTM3ZjA5ZDc2ZTNhMGRlOGFkZmI5NDY1YzNhY2NiZTI1ODY1YmRlIGxlZ2FjeS10cnVuaworNDY5NzAgNzkzZjAyNjk5M2JiMjlkNmNjOTE1OTI2NTMyOWYyMDZlZDY3MGJlYyBsZWdhY3ktdHJ1bmsKKzQ2OTcxIDNiNjVlZWZiYWY3NmUzZGJkMGZjN2RhOGEyYjFjMjcwMjk4ODdlNGQgbGVnYWN5LXRydW5rCis0Njk3MiAzNGI2OTcwNDExOTFhZTcxZTI2ODdiNDY1ZTc1MzRmYWFlYjU3NGQ0IGxlZ2FjeS10cnVuaworNDY5NzQgYzc3YmU1YzQwNjNiMzFlNGI4N2JkN2YzYjY2OWE4ZTI1ZjNiNTVhNSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTc2IDk5Mzg3Nzc0ZWIxZGRhMTE4ZTI4N2Y2YjAxMThlZTVhNWI2YTUzODYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk3NyA1NGRmMzVlOWM2OThhN2Y4ZDg1YmIxZWNiZmEwYTNjNzJjNTRiOTVhIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5NzggOWU0ODI4MDAwY2ZhOTI4YmExMTlkMGY1ZGYxZmRhM2MxNjdkM2U0NSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTc5IDdkYmJlNzg2ZmRjZDIzZGZhNzliOGE1YzAzODA1ZmVjNDU0Y2M2OWIgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk4MCAzNzMwNDNhMWJkZmJiODUwMWU5NDVjZjk0NjYxMDU2M2IwNDRjZWE0IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5ODEgOTJlYjZlZDAzYzJlMWNjODUwMTIyODQ4NTg4NGYwODY3YTdiMGU3ZSBsZWdhY3ktdHJ1bmsKKzQ2OTgyIGNhY2Q0N2E2MWU3OTZkZmIzNjc0NDE3ZDQwMjVjYjM3MzlmMTAxNGEgbGVnYWN5LXRydW5rCis0Njk4MyAxZjk0N2YxMzQxZDE5NDdiMzJhYmRmMDkyZDE4ZWNlY2E0ODZiZjA5IGxlZ2FjeS10cnVuaworNDY5ODQgOWE5ZDU3ODJlNDM2N2I5YTAxOGRjNmY0MjkzNzllNTA5ZGU1NDA2ZiBsZWdhY3ktdHJ1bmsKKzQ2OTg5IDllODI3ZmQ4MzFkNzdjODQ4Zjc2NGFhZWNiYWZiMDBlZTBiODNhZjEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk5MCBiNWVmYTIzY2M5NDg4ZDdhZDM2NmFmZGIwMGY2NDcyZGVmNjI5NmNmIGxlZ2FjeS10cnVuaworNDY5OTEgZTc2YjZmM2E0NDE5MzkzNTAyNDM5M2QwNTFiYjM4MTBjN2U5MmVkMSBsZWdhY3ktdHJ1bmsKKzQ2OTkyIDZiNGRhNGVlNzE0NmViOTA2NmJiOWU4Y2NkZjhiNmZkYmE3NGMyN2YgbGVnYWN5LXRydW5rCis0Njk5MyBlMGMzZjVhNDQ0MGZkNDM0MWJjN2Q0NmU0MjVhMGU1NWQ3NDJiM2FhIGxlZ2FjeS10cnVuaworNDY5OTUgNTU3ZTYyMTI2Y2IxZGMyMmViODViMGU1OTY5NDFhNmVkZDA2MGVlNCBsZWdhY3ktdHJ1bmsKKzQ2OTk2IGIyYTRiZTQ3MzcyODIzMDBjNGYwZjU1NTdkZjU2ZTVmNWI5M2RhOGIgbGVnYWN5LXRydW5rCis0Njk5OCA4YTUwZDhlOTAxOGM4NDc5NTcwMGFlZDhkOWE3ZDhjMjgzOTJmMmEzIGxlZ2FjeS10cnVuaworNDY5OTkgZjZkYzU1ZDMyZjcwMmNlMDljZTY0OGU0YmEyOGExYjJlMjRiY2ZlOCBsZWdhY3ktdHJ1bmsKKzQ3MDAwIGFmZjY2MjlkMWQxYzQxMWZmZjQ2NDJjYTFkMTkyOTliOWY0YzgzMjggbGVnYWN5LXRydW5rCis0NzAwMyAwM2NmNWRkN2M5MDYxNWJmODdmZmQ4ZWQ5NmU3MzJhOGRkMjQ3MDY4IGxlZ2FjeS10cnVuaworNDcwMDQgYTBiMDYyZmYyOTM5YzkyZWJlMzdjZmI1ZGE3NjhkNzhiY2U0YmMyOSByZWxlYXNlMjQtbWFpbnQKKzQ3MDA1IGM1MDI2NzAzOTA4OGUwMjA5NGQ3ZDJjYzM5MzNhZmM4MDFlY2YyZmMgbGVnYWN5LXRydW5rCis0NzAwNiAwMjY1MGE0N2VlOGJlMzkzODQyNjhmZjM4M2IwZWY5OTUxMzU0YzEwIHJlbGVhc2UyNC1tYWludAorNDcwMDcgOTZlMWIwYzhmZjlhOGRhMWFhMzMzODJjMzE3OTM1MzQ1MDFjNDhiZiBsZWdhY3ktdHJ1bmsKKzQ3MDA4IDEyNThlOTNiYjFkMDA1OTRkNGQxMDJiN2Y0YzAwZDc3OTI5MThmOGUgbGVnYWN5LXRydW5rCis0NzAwOSA0ODRkM2Q1YmE3ZjlhNWFiMDMzMDFlNGUyYmQ2NWZlMDQ3NjRlZTM5IGxlZ2FjeS10cnVuaworNDcwMTAgYjlkMTQ0MGMyZGQxNjMxZDRkMDg3NjA3Y2E5NDc5Y2U3ZDY4ZDFjZSBsZWdhY3ktdHJ1bmsKKzQ3MDExIDZhN2YxZjEyZWFhZjdkNDRlOGQzYzkzMzZlMjMxZDFmODQ0NDZhMDMgbGVnYWN5LXRydW5rCis0NzAxMiA0MTFkMGEzNTNhMTVjODRmZDdlMmIwZTVjZmE2N2M2NjYyM2M2YzkxIHJlbGVhc2UyNC1tYWludAorNDcwMTMgMzBkMjMzMzg1MmQ1MGYwMWQzZDM4YzllZTA3ODYyNmIxYjY4ZjY2OCBsZWdhY3ktdHJ1bmsKKzQ3MDE0IGFkNWFkZDllMDM2OTZkM2FiZGFmMTZjMDMzMWJkZjY0NTExNTdjNzcgbGVnYWN5LXRydW5rCis0NzAxNSBmNGI0NDEyNTY0Njc4OWY1NDU5MTA5MTVkNWQ1YWYwMDg4NWVjY2YxIGxlZ2FjeS10cnVuaworNDcwMTYgOTNjYzNmYzI1MDk5OTk5ZWFhNWU4ZjI2NTIyOWJkMjYwMzg5OTNlYyBsZWdhY3ktdHJ1bmsKKzQ3MDE3IGEzYzYxYzY0OGZjODE5NGRjNzk1YmM2YzE3OWI4ZDhjYjIwMWIzOWMgbGVnYWN5LXRydW5rCis0NzAxOCA4MDVmNDE4ODFlMjcwZTM4MTJmOTFkNDcxOWViOTYwMGNkMGIzNGMxIGxlZ2FjeS10cnVuaworNDcwMTkgMjg0M2JmNzBhOWNmZDRmOTllMjYzOTNmZjNjYWFjYTY2Nzc2YmViZSBsZWdhY3ktdHJ1bmsKKzQ3MDIwIDY3MjljMjdkMDFmZThkYjlmMTQ1MmNjOGQ0ZjE3MGJmNGI3ZmI5OGIgbGVnYWN5LXRydW5rCis0NzAyMSAxMThjNjUwZTJjOWIzYjQ0ZWRkMmM4YzZlODUxMDYzMzUyODhjMGEyIGxlZ2FjeS10cnVuaworNDcwMjIgNGE3NjYwMjQwNDNhZWVlNTkyYTZjMDkzN2RlMmRiNGIxNWEwYTY3MiBsZWdhY3ktdHJ1bmsKKzQ3MDIzIDBiOTVhMGFhYWFlZjk4NmFiNGVjZTMxN2MxNjdhMTIyZjhhMmM2MTUgbGVnYWN5LXRydW5rCis0NzAyNCAwYmY5ZTMwOTljNTdiYzczMGZkYjY1YjE2ZjViOTVhNTdlNTZkNWI4IGxlZ2FjeS10cnVuaworNDcwMjUgYzYzZDJiNjI2M2I1OGI3MjA3MTM3YjY2NDAzNWI3YmZlNDliOTNiNCBsZWdhY3ktdHJ1bmsKKzQ3MDI2IDQ4MzBkNjE0N2FhZjA5OTUyNGQ3YzRhYmQwYmRhNjU5ZjQxMTJmNmUgbGVnYWN5LXRydW5rCis0NzAyNyBhNzQ2MjA1ZjU5NzU5YzczMjhkODk4ZTc4YjhjZGJlOTgzNDFiYzMwIGxlZ2FjeS10cnVuaworNDcwMjkgZjA4ODVmZTE0ZDQyYWVlYTFlNzliNzQ4MDYxNzczYTVlMjlhNTcwNyBsZWdhY3ktdHJ1bmsKKzQ3MDMwIDQwOGQyYTU5NmY5OTIzNDU2YTcyYzY5ODgwMzYwZDg1OWM3ODQ4OGEgbGVnYWN5LXRydW5rCis0NzAzMiA1Yjk4N2QyMTIzMWJmYjY1NDY2MjM2MDBjMzY1NDIxYTZkNGZlZjA1IGxlZ2FjeS10cnVuaworNDcwMzMgZjE5ZTg3NzI4MWU0OTAzNzExZjE1NzdmZmU2MzYwODZjN2M3OWQ3NiBsZWdhY3ktdHJ1bmsKKzQ3MDM0IGQ0OWIxOThmNTQ1Y2Q4MmZiZjczNWEyMjk3OWMzMzJiOGE5N2VlY2IgbGVnYWN5LXRydW5rCis0NzAzOCA1MjM3NWYyMDMyNDQ4ZmU0N2IwNmU1OWE2MmMyOTA1N2JlOGFhMGE4IGxlZ2FjeS10cnVuaworNDcwMzkgZjg3MTZiNzZhNzFlZjdhMDdhMDdmZDI4NDU4NWZiMWQxODhjNzQ3NSBsZWdhY3ktdHJ1bmsKKzQ3MDQwIDNhZjMzMmZmZjUyNzlhN2FlNTY0YzlmYzRhYzkzMzhiZTZiNmVjY2IgbGVnYWN5LXRydW5rCis0NzA0MSBmZGNjYzZiMTRmYWQ2ZWRhNTU5YmFhMjUzOTZjNGFjYWY4NzRhYjgxIGxlZ2FjeS10cnVuaworNDcwNDIgMjZlNGJmMTk1YWUyOTJmZDk4OTQzMWYwZjMyYWM2ZDE1OWM0MTRkMiBsZWdhY3ktdHJ1bmsKKzQ3MDQzIGEzYmExYTM3YjUzNzQ4YmZhODQ0NDRhMGRhOWNkMjUxZjZlZTRhMDYgbGVnYWN5LXRydW5rCis0NzA0NCA4NjgxMjZlM2JjZjZkMDJhNTRmYjg4NTE0NzIxZWE4Y2FlNzEyM2EwIGxlZ2FjeS10cnVuaworNDcwNDcgNGZmZmU2NzdmNTUyOTZjYjc5YWJiYzRlYzJiYTM4NjdlODdkZTY4NiBsZWdhY3ktdHJ1bmsKKzQ3MDQ5IDcwMjNjZWRjYzVlZDA0YTQ1Yjk5Y2Y3ZjhlNWEzZWIxN2IzMjgyM2IgbGVnYWN5LXRydW5rCis0NzA1MyAwNTFjYzM5YTgwMDg0MzI3ZGMwYWRjYmZlYTY5OTFlMmVlNDU3YWJiIGxlZ2FjeS10cnVuaworNDcwNTQgNTNiMDRjMTlmZTQxNmNjYTkwZDg2NjIyNTcwODBmMDkwMzc4YjhmNyBsZWdhY3ktdHJ1bmsKKzQ3MDU1IDliMGY5NDMwY2JjYmRiYjQ5NjVhYzYwMjcyM2JjNDFlZjJjMDQyODIgbGVnYWN5LXRydW5rCis0NzA1NiAxNDkxZTUyYzg1OTcwZDI1MzhjODQxN2YyOWVjNWUwY2FmYjU2MDEwIGxlZ2FjeS10cnVuaworNDcwNTcgZTNhYzczOWQ0ODg5NTU1Y2ZkNDVlOGM5NmZiNjhkNTkyMzRmMjk0YiBsZWdhY3ktdHJ1bmsKKzQ3MDU4IGE0ZGQ2YjIwOWI2NWEyYTZlODZhZmYyYWExOWJmMGIwMDQxNTNlNzggbGVnYWN5LXRydW5rCis0NzA1OSA2OWVmMjNmY2Y1ZjgzZjJhMWU0MDEzOGI4ZmI3NmU0NGZjYzMxZGQyIGxlZ2FjeS10cnVuaworNDcwNjAgMTUyZWMyMmM0ZTY5NWRhMTE2ZjhiOGUxYWI1NTY5NGQxOTQ5NDNlYiBsZWdhY3ktdHJ1bmsKKzQ3MDYxIDUwNmM3Njg0N2VjNzE2MjVkNmUzNDljZWMyNTk4MTdmMzlkMjA2MTggbGVnYWN5LXRydW5rCis0NzA2MiAzY2RkZTQ1YTQ2OGQ1OWIzYjdjOTRmMmM0YjM2OTkzN2UwY2FjZDQ2IHJlbGVhc2UyNC1tYWludAorNDcwNjQgY2I3MjI1ZTg0ODA1NmNjMDdmMzUxNWRhMDIyMDk3M2U1MjkwOGIyNCBsZWdhY3ktdHJ1bmsKKzQ3MDY1IGFjYTM2ZjdmM2FlODdjYTBhMzc4MzhjZTA0YjRlMTkwYWU1NzAwOTEgbGVnYWN5LXRydW5rCis0NzA2NyAwNDFhZDAwNjg1NzAxMTZmY2ViNDFkM2IwNDEyMTYwMGQ1NzM0NjVkIGxlZ2FjeS10cnVuaworNDcwNjkgZWJlZTU1MzkzMDhhZWU3NzkyNGFkNjU1OGQ5YjEwM2QwYTE2ZTk5MCBsZWdhY3ktdHJ1bmsKKzQ3MDcwIGFlZDgwOTQ0MzIwNTNkMTc0ZjFkYTkxYTVjOTliOTMwN2I1YTM1MTEgbGVnYWN5LXRydW5rCis0NzA3MSAyMTE0ZWI3M2FlYjUxNzI3YWJhNDFiZWY5OWRmYmFmOTUwZWFjMTdlIGxlZ2FjeS10cnVuaworNDcwNzIgNTgwMzQwODRlZjQ0YWU0NWYyYjgxN2VmNDllNTNhYTRlYTdhNDQ0NiBsZWdhY3ktdHJ1bmsKKzQ3MDczIDY1MzUzYzRkYjhjMjFiOTNjOTVhYWM1NWIzZjA5N2Q3NTg2NmFjOGIgbGVnYWN5LXRydW5rCis0NzA3NCBhZmM0NzVkMDU2Nzg2OTU0MGY2MWNhN2Q2YTM4NTAxZDY0ZDgzMmQ3IGxlZ2FjeS10cnVuaworNDcwNzUgYWZjYjU4MmQ5MmQ4MzA0ODQ3MzVkYzk0OTdkMDZiN2MwNTNhNzI5MCBsZWdhY3ktdHJ1bmsKKzQ3MDc2IDc4ODE2YzVjZmYwNTA4YzRhMjhiNTg1YTY3ZmRkZmNkY2MwMGEzOTcgbGVnYWN5LXRydW5rCis0NzA3NyBiY2VhYTc3MjBjYzcxMWNkNTNlZWRlYjgzYTVhNTRmOWViYWZjMjM0IGxlZ2FjeS10cnVuaworNDcwNzggZDg0MjI0MzIwZjgyOGEwYjZkMjgzOTFkNDA1YzM0N2Y3OWYwMDk1YSByZWxlYXNlMjQtbWFpbnQKKzQ3MDc5IDliNDZhNGY1MmQwYzAzMTVmZjg2MjY4NDc0N2FkZGM0YmM3ODA3MDggbGVnYWN5LXRydW5rCis0NzA4MCAzMjNkYTQ3NmYxN2VlMTdmMjg1MzlmZTA3MjMxZjM4OGJiOTMwMzg2IGxlZ2FjeS10cnVuaworNDcwODEgYmFiMGIxZTZjNmQ0MWNiZmUyZTQ2YTM4YWQwODY3OWI4NDZhNDZkNCByZWxlYXNlMjQtbWFpbnQKKzQ3MDg1IDY0ZDFmNjZhMjM5YTYwOWM0NTI5ZmFmOGZmMjljOTU4MDU1MWYzODEgbGVnYWN5LXRydW5rCis0NzA4NiA2ZjA0MmY1YmY5NGRlNzg0NjkyYjMzOWFkZTk4OWJhZDU2MDUwOTRjIGxlZ2FjeS10cnVuaworNDcwOTEgYzc1MzI4NTZmZDE3NTkyNTI1ZWFmOWQ4OGEwZTRiZjExZjA2ODA3NiBsZWdhY3ktdHJ1bmsKKzQ3MDkyIDEzNDJkZmQ1MjczMzkwMDhlZWVkNDA4M2U4MGFiZjZiMzlhZTE0OTUgbGVnYWN5LXRydW5rCis0NzA5MyAwOWQxNjA2ZTc1MjQ5Y2MwMTIwZGYxMjU4NTk4NWEwM2Y0YTY1ZDhiIGxlZ2FjeS10cnVuaworNDcwOTQgYWQ1OTQ5MTUyNzExNmQzYTAyMjdhNmZmNTdkNzE3YmQxYjViMGU3ZiBsZWdhY3ktdHJ1bmsKKzQ3MDk3IGI5YTY0YjdhMzI2MTJkYjYyOWU5OGViOGRhYjhhYTE1NTJiY2E1NDYgbGVnYWN5LXRydW5rCis0NzA5OCBiODJjNDBkYzA4ZDgyY2QwMTQwNjY1YTNiZWIyNTJjM2Q2NzM1YzY1IGxlZ2FjeS10cnVuaworNDcwOTkgODE2OGQwNWY5YjQ5ZTYwYzQ5ZTYzNDRjYjNjMjkwZWEwNWFlYjFkNiBsZWdhY3ktdHJ1bmsKKzQ3MTAwIGYyY2MxNTZlYjkyOGUzZmRmZmYzOTk3NDBjZjU2Y2Q4M2FhZmU5ZDkgbGVnYWN5LXRydW5rCis0NzEwMSA1OGY0MTlkOGM2NDYxZmI5MTdiMDZjY2M5YzIyNzI5N2I0ZTY4NzY4IGxlZ2FjeS10cnVuaworNDcxMDMgMzVjZjBmODc5ODNlZGVjYTgwNTk2ZDgxMWRiNWYzYjFmMzQzMjY3MCBsZWdhY3ktdHJ1bmsKKzQ3MTA2IGYyNjYxM2JkNDg0ZDdkZTdkNTE2NDY4ZGYzZmYzYjI2OWVlNTdjNzEgbGVnYWN5LXRydW5rCis0NzExMyBiOGIyMjU1MGFjYWMwMTQ1NzIwYzUzNTU2ZWIyNjdjNGNjNzc5OTdkIGxlZ2FjeS10cnVuaworNDcxMTQgNzQxMzEzMDI5ZDYzZDk2OTQ0NzNiMjRlMGZhNWQwMWU0ZWZhNzhmMiBsZWdhY3ktdHJ1bmsKKzQ3MTE1IDIyNTQ3OWFjZTlhNzBkMjc5YWQ3NGYyMzJlNTdkZTE3YWVlZDk4OTIgbGVnYWN5LXRydW5rCis0NzExNiBjZWVhOGE5ODY1ODQ0NzdhMzBjOTQ1OTdjNzZkZWJhNjgxZDQzZTBkIGxlZ2FjeS10cnVuaworNDcxMTcgY2I4Mzk5OTZhMzg2ZWRhMDE3N2JjMGJhOGViYjY5ODYyMThmOGMzZiBsZWdhY3ktdHJ1bmsKKzQ3MTE4IDcyMWNlYzdmMDE4NTc0NzdmNTZmMzYyMDNlMGVhZWY4OTk0NmViNWUgbGVnYWN5LXRydW5rCis0NzExOSA0ZGVhNWY0NmVlOTg1NTQyNDk4MGM1YTk3MmQ0M2JhYzhhNTJlMmJlIHJlbGVhc2UyNC1tYWludAorNDcxMjEgZGU0MTAyNTJiOWZkYTNiOGQ1ODMzOGJiNTExZWUzZDc2NTQzMTg1OCBsZWdhY3ktdHJ1bmsKKzQ3MTIyIDUyMjUwZWVhZjc5MWQ2NjQzZGYwYjEzNzMyNTAyYzA0YWU4YjQ1MmQgcmVsZWFzZTI0LW1haW50Cis0NzEyMyAwNjAyNzcxYjhiNDliN2MzMzQwZGQ0ZDBiYTQzNmQ3YmRjMjlkZDA4IGxlZ2FjeS10cnVuaworNDcxMjUgMDk1NTQ2ZGRiMmYxNmM2NDczNDdjY2ZjMGY2YjM2OGEzYTNlNzYzZiBsZWdhY3ktdHJ1bmsKKzQ3MTI4IDdjODk5MGNjY2Y5YjJhZDliY2ZkMjA4MjhlNmYwMWIzMzYxNzQ4YzYgbGVnYWN5LXRydW5rCis0NzEzMSBhYzNkNGI3MWJjZTJiMjZjOWZhNzliZGQzNWEzZmM0MzFjN2QwZjkyIGxlZ2FjeS10cnVuaworNDcxMzMgM2NmMjE4ZThiNDQ5MjU3M2IyMjhiM2VhMzE5MjI5NmEzMTA4YmIyNSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MTM0IDAzODhjN2RjZTRkNDI2NjZkMWVmNTMyY2ZhZGNmYjAyOTA1NzNlZTYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0NzEzNSA0YjRlZDIzMDJkMWNmNTZlZjE2MTkzMDU0MTViYjBkZTJkNzg3MTI0IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcxMzYgODUxZjM3OGFiOWNkYzViNzU2NGM0N2QyZmQ3NDMwNzU2NjlhNjE5ZSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MTM3IGQ3NDkwOGU3NGQzMDcyMGY1YzEwYzMzMzJiNDNiMDdiYmQwNjVkNmIgbGVnYWN5LXRydW5rCis0NzEzOSA1NmJmNTZmNWM4MjE0NzZkNWQ2N2NiNDI3NzkwY2YxYTY5MDk1ZWUyIGxlZ2FjeS10cnVuaworNDcxNDAgYTQyNjNjNDI0OGNiNjdlN2FkM2JkYzYzYmY0YzcxN2VhYWNkYzc5ZSByZWxlYXNlMjQtbWFpbnQKKzQ3MTQyIDViODA3OTY2MGVjNDVlNGM4YjI2MGZjZWZhNjZmZDhiNTEzMTAzY2QgbGVnYWN5LXRydW5rCis0NzE0MyA1ODI3MGE2OTBmNDNjNWQxOTAwOWRlMjA2MDczN2VmNjk0M2JlOGE5IGxlZ2FjeS10cnVuaworNDcxNDcgZjk5ZmJmYmE4OTgzNDYwMWQ0NDcwNGMxYjk0YzY2MDk5ODFiYjY4OCBsZWdhY3ktdHJ1bmsKKzQ3MTQ4IDJlZTViZGE5MjBhMjQ1YWUwODAyYWI2ZTE4NDFjNmY4ODIzNmNmNDEgbGVnYWN5LXRydW5rCis0NzE1MSAxZWFiNWFlM2IxZmZiYWVlNzJlNTlmZmRiN2U1Y2Y4ZWU0NDkxYTlmIGxlZ2FjeS10cnVuaworNDcxNTMgYjNlZjc0MWUyNjE3MWFmZjExZmNlMTFhZmI5YzBlODRiMzQ1NDEzOCBsZWdhY3ktdHJ1bmsKKzQ3MTU0IDNjOWQzYTMxM2Q4MWRlNTM5MTY4NDdiMzQyNWNjMmYwYmExYjNlMTAgbGVnYWN5LXRydW5rCis0NzE1NSAxN2Y4MmJkNjg4Nzg1MzJmYjI5OTM0MTgxYjZmNTRjZGNlZmJmNzdjIHJlbGVhc2UyNC1tYWludAorNDcxNTYgMjllNDNjNWUxMThmN2IwOTAxNDIzZmY2NGUyOTcyYmRhNTNhMzMzNiBsZWdhY3ktdHJ1bmsKKzQ3MTU3IDFiMmRmMmVjYmM2MzZhMmM4YjcyMjMzZTgyNWFjNjBlYjc5ZDczODkgcmVsZWFzZTI0LW1haW50Cis0NzE1OCAwYTgzZGMzNTI5ZDE1YWY0NDkzNGY1YjM0ODFjMGNiOGEwMzNmYzhjIGxlZ2FjeS10cnVuaworNDcxNTkgZjQ5Y2MyOTA2Y2QwMGY2MDQ3ODZkMmQ3MGVlMmJhYWE4MzM4NTA0OCBsZWdhY3ktdHJ1bmsKKzQ3MTYxIGM2ZDA0YzljM2M0YWU3NzRjNWEyOTAwMTY0NjkzMTFjZWNkNjkyYTQgbGVnYWN5LXRydW5rCis0NzE2MiA5OWIxNWMyNWI4NDAxNjkzOGFhNjk1ZTI5ZmY1ZDVlNjMxZjkyZGIxIGxlZ2FjeS10cnVuaworNDcxNjMgMTVmZTlkYmM1ZDM5ZWYxMjhmOWQ4OTM1ZTBhYThkNDAwMmM4MjIwNyBsZWdhY3ktdHJ1bmsKKzQ3MTY0IGRhMjJiOTA1ZGZiZWJkOWU5YWNkODg4YzM1NDE2YjhmZmM4Mjk0N2IgbGVnYWN5LXRydW5rCis0NzE2NiBhMjFlNDIwYTU5N2NjOTUwNTE3MTg4NGZhMjQzYWNmNDdmNGI3Y2RkIGxlZ2FjeS10cnVuaworNDcxNzAgZDg1NzA4NzY5YWIxZDk0YmNkMmI0MDQ2OGY4MWE2NjZlOWViOWM2OSBsZWdhY3ktdHJ1bmsKKzQ3MTcxIDEzOTI1NjFkNWRkN2FlM2RlMmI0YmQ1NTIyZDQwNzg4NmIyMmY2ZmIgbGVnYWN5LXRydW5rCis0NzE3NSAyNzJmMTk1YTI4NGU3ZTAxNGNhOTQyZmZiMTg1ODk2MmFmZmI3MTNjIGxlZ2FjeS10cnVuaworNDcxNzYgNDg1MDU2ZTUzY2RiOTljZjE1Njg4NzNiMzgzZTZjZGY2NjkzZjU4ZiBsZWdhY3ktdHJ1bmsKKzQ3MTc3IDZiMGM2M2E5NzUxNDdhOTRmNjliM2EwMzg4MzhjOTRlNzU1MDRiNzYgbGVnYWN5LXRydW5rCis0NzE4MSA1ZDJjOTgyYWJiYjM5ZTc4NDI2MWZjNjEwMGUxYzIyYzJhMTUwYjIxIGxlZ2FjeS10cnVuaworNDcxODggZDRkYmZiZjNmMmI5MGM1YzIzOTkwZmFiN2FmYWZlYzVlM2JkNjkxZCBsZWdhY3ktdHJ1bmsKKzQ3MTg5IGI2NjRhOTA4YmZmMzUwZWQxYjU2YjU2MGY0ZjA3MmQyYTE1Yjc0NjAgbGVnYWN5LXRydW5rCis0NzE5MCBjNTQ3ZjZlOTFjNTg0Yjk0MjYyMDVmYjg2YTMwMWZmZTc3ZDY0M2VlIGxlZ2FjeS10cnVuaworNDcxOTEgZTA3NmUzZDc2Zjc3MTBhMDAwMWUxZTM4Y2Y1NjJkYzQyNTdhNjg4YyBsZWdhY3ktdHJ1bmsKKzQ3MTk3IDVkZDczNjI2OGZmNDQwMjNkYjY2NWM2YmE3MWM0NGNkNmQxOGIyMDkgbGVnYWN5LXRydW5rCis0NzE5OCA2OTc1YmQ0ODg0ZWJjMmM4MDA0YmQ5NjhiYWQ3YmY0MzAwMDc5NTdhIGxlZ2FjeS10cnVuaworNDcyMDMgMGYzYmEzZGVmMWFkODBhZWQxZmM0YjUxZmY0N2Q1ODNhNjM2ZWFlMiBsZWdhY3ktdHJ1bmsKKzQ3MjA0IGMwMTIzMDA3Njg1OWMxZmU2NmNlYWZmMzE3MDA4NGZlOTg4OWU5OTggbGVnYWN5LXRydW5rCis0NzIwNSA4ODk0ZWVmYmIwYTQ5ZmM1ZWFmNTQ5ZTU1N2Q5YzFhYjVlMjNmM2RmIGxlZ2FjeS10cnVuaworNDcyMDYgNjM4MjQxZmY4N2JkZGJiYmUwZTIyMDY1Mjc3MDlhZTZiOTU3Mjc5MCBsZWdhY3ktdHJ1bmsKKzQ3MjA3IDI3OTczOTYyZmM5ZmI2MmNmOGY2Y2FhZjA2OWIyMzg3NTZhNTBkZGUgbGVnYWN5LXRydW5rCis0NzIwOCBiMTYxNGY2NzRiMzI3MDQzNWI5OGZkODBjM2VmMzNlYzExZTYxNDkzIGxlZ2FjeS10cnVuaworNDcyMDkgZTYxYTkzOGZlOTk4ZDVmNzk5NzRiMzc2MzEyZjBiYWFjMDJhYjgzZCBsZWdhY3ktdHJ1bmsKKzQ3MjEwIDI1MzdkZWRhMzUxZmE4OTEyY2VmY2ZkYjkyYmYyMjBhODRiMTE2NGEgbGVnYWN5LXRydW5rCis0NzIxMSBiOTQ3MGQ2N2Q5NmMyZTI3MDJlODA5ZDQxZjg4ZDc0YTg3MDZhZjEwIGxlZ2FjeS10cnVuaworNDcyMTIgMGU4YTk0YmEyMTA2NmRhNjVkZjlkNjYwOGU3ZTQ4YmJhNjM5MzcxYSBsZWdhY3ktdHJ1bmsKKzQ3MjEzIGU5ZDM5YzVmY2MyNzQ2MTRiYzJiNmUzZWI5MzRlOTRlYTczMWQwMmQgbGVnYWN5LXRydW5rCis0NzIxNCBmMTE2NTgyZjY2MjI0MjVlOThjY2E5OWViY2I3MDkyNTdjM2UyZGFjIHJlbGVhc2UyNC1tYWludAorNDcyMTUgMDkzMTU2ODk5Zjc1YWIyY2IwNmQwOTBkZDc5ODk0Yjc2NDFmM2UwNSBsZWdhY3ktdHJ1bmsKKzQ3MjE2IDE2YmYzNjY0ODMyMzNiMDhkZmJjZTNiOWY5OTI2NTI1NTU5N2RmODYgcmVsZWFzZTI0LW1haW50Cis0NzIxNyA4Njc1YTYwODQyNDBmODU1NzFkNDBlOTAzMDVjNDM1NGEwNDMxMzQ0IHJlbGVhc2UyNC1tYWludAorNDcyMTggYzViZWJjYmU0NTM5MWEzY2JiMmY4YjkxMWEzZWU2NDgwNjIxOTUyOSBsZWdhY3ktdHJ1bmsKKzQ3MjE5IDgxMzA0YzAxNDYzYTJlOWJkOGEzZTdlZjg2YTE1MzQ4MmE0NmQwMzQgbGVnYWN5LXRydW5rCis0NzIyMCA2M2EzMTlmMDczM2NhMDY2NmI2ZjIxYTMzYjQwMGQ0ZmRjZDkwNDc2IGxlZ2FjeS10cnVuaworNDcyMjIgMDFkNGIwNjg1MDY3NjA2ODEwOWUyY2Q5YWU5MTk2ZTUzNzYxZTEzMCByZWxlYXNlMjQtbWFpbnQKKzQ3MjIzIDc1YmRiMWViMDc2NjU5NWRhMzE2OTIzYmYxY2I1YjY4ZGQ4ZTM5ZDggbGVnYWN5LXRydW5rCis0NzIyNCA5YzkyMmUzMWI2YTVjODkxMDRjNDZiMjBmMDcwZDY5M2YzMmYzYmNiIGxlZ2FjeS10cnVuaworNDcyMzQgYzgyMzc1ZDU2MGIzZmU4YTI4YTI3N2Y5MTllNjAxNjI5NGRhNGRjZSBsZWdhY3ktdHJ1bmsKKzQ3MjM2IDQxZmMyMDNhM2U5MWYxNjE1YzE0YTZmYjM4MDgzZDAxOGY0NzQ4YWQgbGVnYWN5LXRydW5rCis0NzIzNyAxODk4OWQwOWQ1ODRlNmMzZTg0ZDQwNWM2NjQxMWFhZThkZmJlZjEzIGxlZ2FjeS10cnVuaworNDcyNDEgNmQ5ZTIyYzMzMGU0Yjc2NDAzMDA0NjlmZjM5YzU5ZjYzYWQ0NTBlNSBsZWdhY3ktdHJ1bmsKKzQ3MjQyIDBjNGU1YTBjMTkxNGY3YjIyZGZiMGIwZTNjZmRmODU2ODU3M2EzMzYgcmVsZWFzZTI0LW1haW50Cis0NzI0NCBkOWU3ODMxOWExOTI5MzgxMjY3MTRlNmQ3YjM3ZDAzMmNiNDRkMDRmIGxlZ2FjeS10cnVuaworNDcyNDUgNzU1MDQ0NzEzZTk3Y2EyNDNiYTZkYWJlZDZlN2E4ZjlkZjVlMTcyMyByZWxlYXNlMjQtbWFpbnQKKzQ3MjQ4IGI5MTU1YmIyNmIyODFlOGUzMzExZDM2YzdhZGY0MGU0YWNiYTFmYTEgYmNhbm5vbi1zYW5kYm94aW5nCis0NzI0OSBiMGJkMGJjZTk0MDZlZGE0YjEwMzI3NDk4ZDk1NGZiYjZiMTNkMzJmIGJjYW5ub24tc2FuZGJveGluZworNDcyNTEgOWU4MjE0MzVhNjEyZDFlOTcyYjM1OTZlMjQ4ZGViZWE5MzY5OWI1YSBsZWdhY3ktdHJ1bmsKKzQ3MjUzIDUwMGFlOTUyMTUwYjc2NjhlMzAwNzY1NDllZWQwNDA0OWMwYzMzOGUgbGVnYWN5LXRydW5rCis0NzI1NCA4N2U1YjAxMGIzYjA5ZDViNWI5YzU0Zjc0ZTM5MDg4ZGIzZjA0MWNlIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcyNTUgNzFlYWRjMzVmMTYzNzI2MTE2NjlhOGY2NGY5OTYzZDU0MjBhZGQ0YSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MjU3IDQxNTYxYjAwMTRjOGI2ODE1NjQ4ZTUwNDIwODFmYTY4ZDZhZWU4M2IgbGVnYWN5LXRydW5rCis0NzI1OCA0MGYwNTg2NzMxNzBiOGE2YThhZGYwM2I2YWU1YzA3Y2YxYWE3MGFiIGxlZ2FjeS10cnVuaworNDcyNTkgYjg1MWFmY2MxNjQ5NjU2NzAzYTcyZDBlZmQ1YzJmOWZhNjY5YmZjYSBsZWdhY3ktdHJ1bmsKKzQ3MjYwIGUzY2ZmNjFiNzc3OTYxYWY0NmY0MmUzYzE3ZWZmODQ4Y2NlMDg0ZTEgbGVnYWN5LXRydW5rCis0NzI2MSA0ZGQxYTkzODNlNDc3ZmM2NzJjOTU0NDMzMDEyNWFjNzQ4MDU3ZGUxIGxlZ2FjeS10cnVuaworNDcyNjIgZDhjZTliYzQwNWU0MWI2OTU0NmExNDRkNzE3Y2Q1YWEwOTBlZTVkMCBsZWdhY3ktdHJ1bmsKKzQ3MjYzIDY4YzllOGE1NTM2ODNiMmMyMzQ4Y2NmMjc5OTg0OGY4ZmRiMzBkNjYgbGVnYWN5LXRydW5rCis0NzI2NCAyMDczZjMyY2Y3MWZjN2VhNDQ4NTZlYjUyNzhkNzA5Y2VlMDRhOTNiIGxlZ2FjeS10cnVuaworNDcyNjUgNjk3ZDA1NDgwMDUzZDZmZGVmZTY0NWUwODlmY2MxNDZkYjFjYTgxMCBsZWdhY3ktdHJ1bmsKKzQ3MjY3IGY0ZTMzYjEyYmI1N2IxMDBiMzRjMmY5MjY5MDUyZjQzMjA5NTEwNGEgbGVnYWN5LXRydW5rCis0NzI2OCAzNGE2NmUyZjg5NTk4MDI1YWQxYzczYTQ5YTRhYjgzZDFiYTVkNTczIGxlZ2FjeS10cnVuaworNDcyNjkgZjY4ZTUxYTY3M2RmNzNmMmIxZjQ3NDllNzQ2Y2YzOWJjMDk5ZjI2MiBsZWdhY3ktdHJ1bmsKKzQ3MjcxIDM0Y2I5YTZjZTEyZDg3ZjZhZTAzMTY2NjEwNzVjODhiMDkyNjYxMTAgbGVnYWN5LXRydW5rCis0NzI3MiAzNzRjMjI5ZDkwZThmMzY2ZTU5NTU5ODRjNDU2MTU5MTFlOTY3NjVmIGxlZ2FjeS10cnVuaworNDcyNzMgNWE0YWIzODIwNThhNWYxMGYzNGZmMjUyMGE2MDU0M2EwNDc1MTQ2MCBsZWdhY3ktdHJ1bmsKKzQ3Mjc0IGVlYmM5NWY5NThlNDhmMzc3ZGZkOTk1Y2U2M2NiYWE0YTA2NzU1NWUgbGVnYWN5LXRydW5rCis0NzI3NSAyMzhlMGIyMDM3ZmMyNDhhYTdlNjNkZTZlZGFlNDE1ZGM0NjYzMmEyIGxlZ2FjeS10cnVuaworNDcyNzYgMzQ0MjUxY2Q4ZDc2NDQwOWNjMDNjNTk2N2ZiMTVmNzhjMjdkNTQyNiBsZWdhY3ktdHJ1bmsKKzQ3Mjc3IDNmYTc5MGIwYWE2ODE1YzFlMWRhZThmMjMwYWM4NWRhYmU4MTk5ZDggbGVnYWN5LXRydW5rCis0NzI3OCBmOTNkYmZjYzY2M2IzMzA3M2M4MmJlZGJmYzNlNTg1YzFkNDBlN2UxIGxlZ2FjeS10cnVuaworNDcyNzkgNThjODhhN2M5MzI2M2M0OGJiZWIxZWVkM2EyMjAzYzIwNTAwYmM2YiBsZWdhY3ktdHJ1bmsKKzQ3MjgwIDhmZWZhOTllODdjMGQzODU2NDQ4ZmM3NjczZDI3ZGU4ZjhkMTA2ZmQgbGVnYWN5LXRydW5rCis0NzI4NCBlZDQzMjQzYzg4NjA1ZWZjOGUwOWFkNDRhZmMxYTI3ZjY1NjY0YmY0IGJjYW5ub24tc2FuZGJveGluZworNDcyODUgNDUyNDdiOTNhNWQ5YTEwMTkyMDdhMWRlMjIyOTBlZDY1ZTA2MGMxNiBiY2Fubm9uLXNhbmRib3hpbmcKKzQ3Mjg3IGIzYzBlMDc1OWFjMDk4MDQ0NjA5MmU0NWU3Nzg0ZDNmM2IzYWRjYWQgbGVnYWN5LXRydW5rCis0NzI4OSBkYTU5ODM2MTRmYWMyMjgxOWNhZWMwOTViZmUyMzhmMDFmNjM3ZTU4IGxlZ2FjeS10cnVuaworNTA0NzcgMTA4ZGMyZjFlN2RhMzJjZjFhMWM3ZTdlYmY1ZGRmYzRlYTVlMWM2NSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDc4IGJiMzA1MDI2MzI0NDIyYWU3YWM0NWRiM2ZkMDllNDIyYmU5ZTE5NTUgYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ3OSBiOGE4ZWZjMDBiMWUyNWUyZjRhZDlkN2NkYzQ2NWExM2VlNjgxYTA0IGJjYW5ub24tc2FuZGJveGluZworNTA0ODAgOTAzZjk4Njc2NTRhMTdhMzk0NzRjZWFlMzI5MzE2Njc1ZDQxNDQzOCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDg2IDM1YWZlN2M0Njc3MjA2Y2QzNWJhMzdhMjA4NzU3NDgzZTE0ZTIzODggYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ4NyBiNDI4MTJjNzc0ZDBjOTQ5YjBiYTc3Y2Y1YzNmNjE4MDcwMTM4MmVhIGJjYW5ub24tc2FuZGJveGluZworNTA0ODkgMDY2YWE0MmNlNWYyNDA5NzhjMTY1NmY1ZWNiNjA2Njk1ZWI4MmEwNSBsZWdhY3ktdHJ1bmsKKzUwNDkwIGFiYjJjNzZhNWUwNTBjZjhkMDZjMjYwNzNjZjIyNjViMmYwNDJiYzIgbGVnYWN5LXRydW5rCis1MDQ5MSAxYzViZGJjNzU4MGNhMThjZTY5OTJiMThiNzJiNDYyNjAyYjc3NTM5IGxlZ2FjeS10cnVuaworNTA0OTMgOWY3MGY2YmE3YjY5Y2JlNmJhZGQxMWZkMjkwNzMyNDkzNzU2YWFmMiBsZWdhY3ktdHJ1bmsKKzUwNDk0IGJiYzc4ZjAyMTAwN2MwZjA0MjE4ZDljYTI2YzBiYTc5YmYwNjgwYjUgdGltLWN1cnJlbnRfZnJhbWVzCis1MDQ5NSA2NGNjZDc0NWVhOTIwYmUxYjk5Mzg5MWU0OTYzN2QxZjM1MWM0NDk0IGxlZ2FjeS10cnVuaworNTA0OTcgOTVmOWUwMTg0NTU1NmY5NjEyODE2MWRhNGVhZWY2MWIzYmY1NmEyYiBsZWdhY3ktdHJ1bmsKKzUwNDk4IDNmNTU2MWM1ZDk1OTU1YjEzOWNjNjRlZTI3MmZlM2YwOWUzOTUzMzUgdGltLWN1cnJlbnRfZnJhbWVzCis1MDUwMCBjYTNkOWE2NzEyNmJmOGQ5MTRhNzY2MWI3ZGEyMDAxMTE2ZDBkOTIwIGxlZ2FjeS10cnVuaworNTA1MDEgOGNjOTc4NDEzMGEwZTgzZDA2Mjc3ZTU5N2FmMGE2NDg2MGU3OTZlZiBsZWdhY3ktdHJ1bmsKKzUwNTAzIGMwMmZhMTg3ZTBmNDljYjJkY2E3YTljNDQ4ZGI1MzYxOGE2NmU2OTEgbGVnYWN5LXRydW5rCis1MDUwNCBjNjdiMjMzOTdmMzA2NDlhZmU3NTRlNTczMDdjOGRhZjc4NzZjNTYyIGxlZ2FjeS10cnVuaworNTA1MDYgMGZlMDhhZWRiZDhjNGZjYmRmYjYwYTNjMjM1MjQ2ODBjMTI0NTljMSBsZWdhY3ktdHJ1bmsKKzUwNTA5IGM1NDc2NDVhYjczNjRjMjk0NzU2NmFkYWViOTdiMjMwM2RiNjFmNzcgbGVnYWN5LXRydW5rCis1MDUxMCA1MTQyOGMzNzhjYzNlMjZmMWZiMmRjNzNmY2FjODRjMzI1YTRjYzZjIGxlZ2FjeS10cnVuaworNTA1MTEgN2U0M2QwMmVlMjFhNjFlZGY2Y2UzNzRlNDVjYjk0ZmY3MTQ0NDhkMiBsZWdhY3ktdHJ1bmsKKzUwNTEyIGMxZjRiZjhmZjc0OGMwMWY2YzIzODU3MzA1OGU5MjQzOTc2NDczYTggbGVnYWN5LXRydW5rCis1MDUxMyAzNWM0ZmRhNDdkZmJkOGY3MzA4NWYxMjFiMzk0MDBiNTkxNDFlZmJlIGxlZ2FjeS10cnVuaworNTA1MTQgMDI1OThjNTdjYTA5Y2MwZThlYTkyNDBhMjM1YjNkZjA4NWY4Nzk5YSBsZWdhY3ktdHJ1bmsKKzUwNTE2IGYzNzM2NDY3OTUwMTgyNTU4OTlmYmFkYjc3ZTgwNjY1YjA5YzcwMWYgbGVnYWN5LXRydW5rCis1MDUxNyBhZTU2NDVjNzZkNWVhMzNlY2I4YWU1ODEzYTYxN2UzMTVlZmIxZmZkIGxlZ2FjeS10cnVuaworNTA1MjYgYjk3OGFmZTdjYWI2NmFlY2ZmZGE3Yzk4NzM3NGVjZWMwZjY3MjRiNCBsZWdhY3ktdHJ1bmsKKzUwNTI3IDhhZGRjOTEzMTcxZTg4MzQ4YzNmNDk3NzkxMjRiZWJmNDZlMTBhN2MgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDUyOCBmMmFjMzFmYzM2OWU2MmZlNzdmYjViNWM4OTI0NzEwZWZiNDJjMGI2IGxlZ2FjeS10cnVuaworNTA1MzcgM2IzOGFiOWM0YjAzNjk1YTMzMTU4NTFjOWZiYzhmYzcyNTBjNjA0ZSBsZWdhY3ktdHJ1bmsKKzUwNTQwIGM4NDk5N2UxZWNjNzY5MjU0ODliZDMwMWRjZTYzMGQwN2NlYzNiZWMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU0MSBiNmZkNDk5ZTQzNDNmYjc3NzkwY2ZlNGI3MzUyN2YxMzM4YjJmMjA0IGxlZ2FjeS10cnVuaworNTA1NDIgYzM2MTkxNWRmMjkxM2M2MWFmNzkwYTA2MTdmMmEwZTQ0MTdjZWQ0NyBsZWdhY3ktdHJ1bmsKKzUwNTQ4IGZjYmY0NjIxMTkwM2E0ZjJhMGQ3NjQwODY4N2ViZTFhOGU0ZjgwNjggYmNhbm5vbi1zYW5kYm94aW5nCis1MDU0OSBlNDAyNDRmNWZlYjk0ZDAxNTRkM2UwM2IwM2I4NzljM2JjYzExMGU2IGJjYW5ub24tc2FuZGJveGluZworNTA1NTEgZmE2Y2EzZjVmMjI2ZTU4MGViYmRkNjllMTFhZmY5OWI4NWEwZWJjNiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTUzIDFjYTAxNWJlNzBhZTIyZjg1YWVkNzBmOGM5ZWQ2OGYxZTI3YjllZDQgbGVnYWN5LXRydW5rCis1MDU1OCAyZDU3ZTRiMDhjZTY4Y2Y3YjE4YjM2ZDhmNTE2YjdhNWI4ZGZkN2E1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA1NTkgYjI4NjUzNjIyMDkzODMwMmNjZTE2ZWI1MmMwZmM2MGNkMDdiNGI1NCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTYwIGUzMWVkZWU1YmMzZjU0ZTM0MjY2MjAyOTc4OWJjNGU1YWM2NDE3NGQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU2NCAyMTZhOTdhMmVkMzZmMjU5ZGFlYWYyZjkxMTU5MjAzMjRmMTJhNzQ3IGJjYW5ub24tc2FuZGJveGluZworNTA1NjUgZGFlZThmOGMwMzVmOTZhZTE5ZDA4MzBlNzJiMTJhMTAyM2E0MjA5YyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTY2IGUzZjYwNjZjZTc1ZjU4MmQ5NGQyMjgwNzlhMGI3NTMzNzcxYWMzN2MgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU2NyA1MmE4NzM4ZjVhYjRkMWU2ODAwZDMzZGUwMTI3Y2Q2ZjYyNmU0ODk1IGxlZ2FjeS10cnVuaworNTA1NjggMDNiNmZlNTdjZDZkZjViYjM0Y2ExOWY0Yjc2MGI5NDMxODZjYzgwNiBsZWdhY3ktdHJ1bmsKKzUwNTY5IDAwZjk3NWVhZDM0NGFmYjJjYWQxNGEyY2U1OTUxOWQ5OGIxYzZjNWMgbGVnYWN5LXRydW5rCis1MDU3NSBkNjQ2M2U4ZWY5YzQ3ZDMyNzNkM2U5MDU1ZGFhZDExNjkzOWIwZDBlIGxlZ2FjeS10cnVuaworNTA1NzYgZjUwYjlkYTVlMzYxOTUzYWQ0MGIzYzI0M2EwYTZmNGQ3NDgwZjk4YyBsZWdhY3ktdHJ1bmsKKzUwNTc5IGFlMGMzMjhhYzViZjkxYmY4ZTY4YzVkOTQxMjFlZGQ4NmJjN2YzMzUgbGVnYWN5LXRydW5rCis1MDU4MiAyMTRiMjhkN2E5OTkzMzRkMDQxYWM3MDdmMGZkZTk5NjNhNTgwNmU1IGxlZ2FjeS10cnVuaworNTA1ODMgNjU1MjI5OTIzZDQyZjlmMzNiM2MzODIxMDQ5NzBlYzdmYmNjZDgzYiBsZWdhY3ktdHJ1bmsKKzUwNTg1IGM3ZGQ2Njk2ZWM4Y2IxNzBhMTdjN2FlMmM3MDJkMWJhZTg1YWY1ZGMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU4NiA2ZjY5YWZiNzg1ZDBiZjljNWEwMDA3ZDU3NGNkZDg5MTRhZTA1MjhmIGJjYW5ub24tc2FuZGJveGluZworNTA1OTQgZTZmMTZiN2E1ODRmMjM2NmQxMWE3OGM3ZjBmN2E1MzA2NGJlY2EyOSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTk1IDkzM2JlM2UwYWM2Y2IwNTZlYTY0YTUwMTIyMzViY2I5ZjA1ZjYyZjIgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU5NiA3MTdhNzg4N2ZkN2E3NmQ3MTRiOGMxMmQ2YWI5MDhkYzFiNzdkYmNiIGJjYW5ub24tc2FuZGJveGluZworNTA1OTcgNzE4MmMyNzc1YzFlNDU0MmNkN2Q0MjYyMDVjNDlkNjViM2Q4MGJjNSBsZWdhY3ktdHJ1bmsKKzUwNTk4IGIxYmIxNzlhOGFiMDU3ZGJjMmQ3NDVkYzkwNjY4MDYyMTNiMDY5YTIgbGVnYWN5LXRydW5rCis1MDU5OSA0NzZjZDgzNzc3ZjJiYTcyZWRjN2VmZWNhMjU1NmQ2YjhkZDg1M2EwIGxlZ2FjeS10cnVuaworNTA2MDAgMmMzZWM3MjBhYTdiZWIwZGE0MDAyYjg0N2NjNWVkN2RjNzgyNTY2YyBsZWdhY3ktdHJ1bmsKKzUwNjAxIGIwOTVlODM4OGIyZTY0NTI1ZGUyODM1YzcyMmViYmJkMmM2MTU5NWYgbGVnYWN5LXRydW5rCis1MDYwNCAzNmM1ZDA4NWI4NjkyMDc0MDNjZjQxZTYxYjdhMjJkNGI3MWVjN2Q5IGxlZ2FjeS10cnVuaworNTA2MDcgYzQ4YjNhNjhmNjk2MmE2OTViMjliZDE2MmIyNDI4OTlmNjNhOGQ3YSBsZWdhY3ktdHJ1bmsKKzUwNjEwIGI1NjJmZDc5NTAwZDFkMzcwZjY5N2NkZTUyZGU0MDk3YTZiNjRlOGUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDYxMSAyZjMwNTE1Y2Y2NmI5NmU5MWJhYTFjN2I0Njk5ZmM0MTQzNGVmMTM4IGJjYW5ub24tc2FuZGJveGluZworNTA2MTcgODkyYjdhYzI2ZDNiYjU5MDA4NDI1Y2YzNmVhODIzODc2NTIyMjE5YyBsZWdhY3ktdHJ1bmsKKzUwNjE5IGU0YjZhNGYyY2UxNDM3ZGE2MTRiOWQyMWVkZmYwNTg5ZGI1YWFhZTEgbGVnYWN5LXRydW5rCis1MDYyMCBjZDQ1OWM5MjBmOTkwYzk0M2Y2MTA2MWUyYjJmMzAxMzQ4YTQxZDBhIGxlZ2FjeS10cnVuaworNTA2MjEgYTc3NjhmZWY1OWIyY2QxZWJkMmJjNzk4YjEzOTdkN2M2NGFiMTQ4ZSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNjIyIGZjNjlmYTZlNTRjODZkYzJlMTRkODQwNTE4ZjMxMjM1NzUzYjk3OGIgbGVnYWN5LXRydW5rCis1MDYyNyAxOGI5Nzk2YjdiYTU4Yzc0ZWFhMzIyZTU5Zjg5M2UzMDMyMWY3YWE2IGJjYW5ub24tc2FuZGJveGluZworNTA2MjkgYzg3MGVlMDY2YzEyNTQ4YzhlOTdhMzgxMThkZDc2MTNkZWM4YWVmNSBsZWdhY3ktdHJ1bmsKKzUwNjMwIGY3MWYyODQzNjMxZmVjZmIzYmEwOTU0MzEyMzI2ZTNiYTA4NTg3OWYgbGVnYWN5LXRydW5rCis1MDYzMSAyYTg0YjQ2YWQ2NGNhNjlmYTRlZGNmNWZlMGU1YWUzMDEyYjZmNTU0IGxlZ2FjeS10cnVuaworNTA2MzIgMTZmM2MwMmVkZTAyNTMxYjFkYjc4MGQ0ZWVmY2E4NDViZjI4Y2JkNSBsZWdhY3ktdHJ1bmsKKzUwNjMzIDBkZTU4YmNlNDdlZjMyYTMwZjFlZTdjMTk0YWVjMmFhZjAzYTVhOTAgbGVnYWN5LXRydW5rCis1MDYzNiA3ZGZjNzc2ZGQ4MWJjZWY2ODMwMDM3NjM4NTI5OWY0ODFmMjRmY2I5IGxlZ2FjeS10cnVuaworNTA2MzggOWYyYzNkZTc0ODU2ZGRkMTNiZmFlNjg4MGIwNTcxYzA0NDE1YzY4NCBsZWdhY3ktdHJ1bmsKKzUwNjQwIDg1ZmZjMGJmY2M5ODI5ZWFmMDZmZmM0MGJmN2Q2OWFiMTNkZGVhZmMgbGVnYWN5LXRydW5rCis1MDY0MyBiNjMyNTYzNDllNzc5MDA1MWFjNzE3NzQ0YTJiZjk3YTBlYmY5MzVlIGxlZ2FjeS10cnVuaworNTA2NDcgN2Y0MGVmODcxNzMxMTE0NmY3MDQ5MzdiNWViNTM5ZDY2MmU3MjVmYiBsZWdhY3ktdHJ1bmsKKzUwNjU1IDZiMWVkN2I3MDQ4ZTVlOGI5MTgwYjkxOTk3OGVkNTg0NzI3NDVlYzcgbGVnYWN5LXRydW5rCis1MDY1NiBiZjQ3NGY5ZDUyMjVlN2U3ZWE2MGM0MTllNDQ5YTgxN2FlMTgxMmUwIGJjYW5ub24tc2FuZGJveGluZworNTA2NTcgNWVjZjIyYTRlNWRmYzIwNDQ1ZDM0N2RhMDU0MGQ2NzhjNGNkNWMzYyBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNjYwIDA1MjlhNTg1MDY0YzRkNzRkNDY1YmIxZGFjZGI2ODcwYTkzMDhhZGMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDY2MSAxNDY3MWE4MGFiZWYwOTA3NDI2Yzk4ZGU2Y2M3NjJkYjZkMGU1NWYzIGJjYW5ub24tc2FuZGJveGluZworNTA2NjQgMmE3NmVjMmYwYjc5ZDBkNTRhMTljOWFiMDM2NjUyM2E0OTc1ZGEyYyBsZWdhY3ktdHJ1bmsKKzUwNjY1IDA2MzE2NDFmZGVmZjRlZTQ1MGMyZmY2NGY1MTEzYzNjYWJjNjgwNTMgcmVsZWFzZTI0LW1haW50Cis1MDY2NyAwMDcxNTM1M2Y4MmM1Njc3ZjdmMTMwMjA1N2MwMTc5NmRiNjg2OTBjIGxlZ2FjeS10cnVuaworNTA2NzEgYzEzNmZmNGQ0MjZkZmJjYjczMjdkNGUzNTYwOTYyOTNkMDc4ZGM1MiBsZWdhY3ktdHJ1bmsKKzUwNjcyIDkxMGE5NDhlMDI5MGYxODE3MTc4YTQ4Zjg4N2MzNGFlZDRiZjVhYWUgcmVsZWFzZTI0LW1haW50Cis1MDY3MyA3NTZkNTdhY2RhODViY2JhMjhmMjMwZTQ1ZDcxNDhmOGNmY2NlYjk5IGxlZ2FjeS10cnVuaworNTA2NzQgYmRhOTNiNDVjYTQxM2ViM2E1MTFkNTNiY2VlYTFkZWU1Y2UzN2I3NyBsZWdhY3ktdHJ1bmsKKzUwNjc1IDNkZGI1OTQ4M2YxMDMzNWYxNjUxNjljNjhhMjgyYWY5YzBhYzYxNDAgbGVnYWN5LXRydW5rCis1MDY3NiBhZWRiODVlZTRmZWMyZWVhNzBhOTkyYzU2NWQ3MjI1NTg5MmFhYmExIGxlZ2FjeS10cnVuaworNTA2NzcgNTBiMGI1NGZiMTdkN2UzZmJlNWFiYzAyZDE1N2RhYTQ1YjIzMGJmMCBsZWdhY3ktdHJ1bmsKKzUwNjc4IDc3NWY4NWI5OGU2NTk4Mzk2MzkzNGEyOGQ0NWQ5ZmIwMmI0MTg1MTAgbGVnYWN5LXRydW5rCis1MDY3OSA5MGQ1ZDFmZWE0ZjJjMTE1Njc4MzlhYWU3ZjVmOWI3MmZmMjNkOTkxIGxlZ2FjeS10cnVuaworNTA2ODAgMzVkNTBmYmUwYjg4OTk4MGZmYjM2NWRlOGVhMDNjZjk0NTAzYWNkOCBsZWdhY3ktdHJ1bmsKKzUwNjgxIDkzNGJhNWJlOGYzZjBjMjcxMjJhZDE3MzUyM2M3MDIyYTk1YzA2NjcgbGVnYWN5LXRydW5rCis1MDY4MyBhNTUxOTdiZDcyMDBkZTExMzIzZGFkYjhjOTVmMTY4NDhmNzdiNTRhIGxlZ2FjeS10cnVuaworNTA2ODQgNjA2NGNiMzAxMjA5YzhlYzczN2U3ZmI1MWI3ZThiZDU2ZDZmZDdiYyBsZWdhY3ktdHJ1bmsKKzUwNjg1IGFhODU3OTFmNTk5MTNmMWExMDZkN2E5ODJhMTJhYzNjMjcxNzZiM2EgbGVnYWN5LXRydW5rCis1MDY4NiBkMmJmY2MxYWFjM2Q0ZmFlOWUyOTM3Yjg3MDhmMjdlMzY5NmQwMGNkIGxlZ2FjeS10cnVuaworNTA2ODcgYmIxNzA3MjY1ZGU3ZTI2ODI0YmI1YzAwODllMjcwYjg0NTExNzQ4MSBsZWdhY3ktdHJ1bmsKKzUwNjg4IDAwODk0MTUyMTgwNTAyZGNhNjRjNzQ0ZDVlMDUzMWZmYTIxNTk1ZjEgbGVnYWN5LXRydW5rCis1MDY4OSA2NTRhNWIyNjI3MTdlMjdmMjljMjQ5NGYxZDAxY2VjNjA2NGFhNzM2IGxlZ2FjeS10cnVuaworNTA2OTAgNjI4Yjg1MTBmZWZiYjk3ODlkZDcyZjA4YjE3NDYwMGRkNzFmNTZmZiBsZWdhY3ktdHJ1bmsKKzUwNjkyIGZkYTNjYmQ3NGM3MThlZmNlNmY3ZmFkNDY1YWIxMTdhNTFlNWFlMjMgbGVnYWN5LXRydW5rCis1MDY5MyBmZjUzOTcwN2ExZWQzNDdiYmQ5N2IwOTU0MjdhZjczN2NlMjZjOTM1IGxlZ2FjeS10cnVuaworNTA2OTQgZTdkMGE3NWUzMTQ1NTNmNjA1MWY1ZjEyYTE3NGZlZDgwNTg2OTZiNSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNjk1IDI0NGZiNTI0ZGRkNDFiNTQ0YmY1NzZiYmY4M2M5NWUxZDIzOGY1Y2QgbGVnYWN5LXRydW5rCis1MDY5NiA5NzllMzkwZTJiYjRjNTY1ZDA2OGQzZmNlODE2OWJmMjQyMTA3ZWU5IGxlZ2FjeS10cnVuaworNTA2OTcgOTcwMTYzMzgxOGI0YmIyMDI2YmY0ZDcyYWY4YjM5MDBiNDE4M2QxMSBsZWdhY3ktdHJ1bmsKKzUwNzA0IDk1ZmE4ZmM4YTA2NWMzNzA0ZTgzOGY2OTQ4MzcyODU0ODM2ZDRiMmEgbGVnYWN5LXRydW5rCis1MDcwNiBhY2ZmMWMzNGNjYTNjMzVmNzEwNjc1ZDNhZjliNzFkNmNmMjNiYjYxIGxlZ2FjeS10cnVuaworNTA3MDggODViMjM5NjVlYzRjMDY5MWIzYTI1MTUzOGNmOTk1MjM4NzU2MGJkNSBsZWdhY3ktdHJ1bmsKKzUwNzEwIDA4ZjM1YWJlY2Y5ODBmZGE1NGU1Y2Q5YzZiYWMyMmJkNTQ1ZDBkMDcgYmNhbm5vbi1zYW5kYm94aW5nCis1MDcxMyBjNTc1OWI1YTU3ZjBjNjkwOTI5YTk5NzBhYjQ1ZmJmMDRmNGY2ZmViIGxlZ2FjeS10cnVuaworNTA3MTUgMWQ3ZGE4NjA4MDMxYmZkMmYwYzc0YTJkMDliNmVjOGI5ZWI1ODA5OSBsZWdhY3ktdHJ1bmsKKzUwNzE2IDVmZjVhNTgzYjEyZTljNjRkNTBmYmM1MTNlMmZmYWZlOTQ2NzcwODYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDcxNyA4NGU5MTY2YjcxMDhmMTBkNjIyNDUyMzYwYmFmZTlhMWUwNjAwM2IyIGJjYW5ub24tc2FuZGJveGluZworNTA3MTggM2M1ZGIyYjNmODkzYWRhMjdkZmFjNWQwYzVmZjA0YjA5YTZhMmJjYiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzE5IDVjOTAzZjY1MDcxOTllM2Q2MmViMjgwZjcwNTYwNTBhMGE4ODBmYjUgbGVnYWN5LXRydW5rCis1MDcyMCA4ZmU2Nzg2ZjUxNDQ1YmE0YjQ2MDcxZGI2MWM2MGI0YTEzZGM4MTYwIGxlZ2FjeS10cnVuaworNTA3MjEgNWFiNzZmYmYyM2YzY2YyMTdiZmZkZTdhNWExNWMxMWVkN2FlMjMxOSBsZWdhY3ktdHJ1bmsKKzUwNzIzIDJhMWZlZmIxODc2NGNhMzJkMWY2OGIxNWM1MWQwZTgwZGU4OWU5NDQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDcyNSAxNDA1MzFiMTI0Zjg1ZGY1NzI5Mjc0MWUyNTA0NmJjOTU4ODVkN2FjIGJjYW5ub24tc2FuZGJveGluZworNTA3MzAgYmUxNzM0Y2M2ZGMwMmM1NzQ4OTZhMTYwMjZiNTkwY2I0OGFjMjE3NyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzMxIGEzMmYyMGVjYzAyNGI3YmNiOTc1NmM3NDBjNWExYWQ1NWJjNmJhNGYgbGVnYWN5LXRydW5rCis1MDczNyA1OTc2OWI1MzQ3ODllNzUzYTU0MjA2ZjA1ZTkxOGYyMWY3MTJkMTQzIGJjYW5ub24tc2FuZGJveGluZworNTA3MzggZWI0NDBlYzc0YTEzZWJmNTUzMTMyYzc2MDRmZGFhN2MyNWM0MjVhZiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzM5IDA2MDcwYTEyYTZiMDJiNTcwZGRmNzk3OGY3ZjVhZmU0MjE3ODE5YTcgbGVnYWN5LXRydW5rCis1MDc0MCAzNTcyZmFhOWEyOWUwNzhjMzIxN2Y2OWYxY2I4NDBiOTI4YTQ3YzFjIGxlZ2FjeS10cnVuaworNTA3NDEgN2YzODE3MzI1MWJiYzZiMDA1ZWEwYWU1MzU3YzA3MThmYjcxYmExNiBsZWdhY3ktdHJ1bmsKKzUwNzQyIGFmNGEzYTBkNDdjY2ZlNmY2Yjc0NzM0NWM0NzhjMDg5YjZmMWU3MDUgbGVnYWN5LXRydW5rCis1MDc0MyBmMjAzMWYxNWQ5OWQ4MTI4YWRmMWNiM2E3MGJhYjcxYjk3YzBkZWEzIGxlZ2FjeS10cnVuaworNTA3NDUgYmFhNTQzMzdjM2Q5ZTk1ZmJhZDM1OTYxNTcxMmQ0YTQxYmZhNTI3OCBsZWdhY3ktdHJ1bmsKKzUwNzQ2IDdjMDliNjZmMDRiZDE0OTFiMDM2N2M5NzcxYTk0MjE5OTdmZDdkNGQgbGVnYWN5LXRydW5rCis1MDc1NCA0MTdjZGVkZTA2ODgwZjFkNTQ5ODMzZDZiYzQ3ODEyMmQxMTliOGU5IGxlZ2FjeS10cnVuaworNTA3NTkgZDBhOTU2NTRmODAzMjFjZTIzNTM5YzlhZDJiYThjMjdmMzY1Y2JiNiBsZWdhY3ktdHJ1bmsKKzUwNzcxIDA3OWU0MmUwYjgyNmE4OTBjZjBmMDM1NGY0YmIwMWJiZTI3NmM3ZGEgbGVnYWN5LXRydW5rCis1MDc3MiBmMWEyNzc3ZTVjOGIzZDY4NTRjNDFjNDFiODZmOGE2MzU0NDFlODEyIGJjYW5ub24tc2FuZGJveGluZworNTA3NzMgMTJlOTczYmRmZWVlMjk4ZjkxMjRiMDUwMWRiZWJmYjg3N2Y2ZjFkYSBsZWdhY3ktdHJ1bmsKKzUwNzc0IGVlNmFiMzMxNzU4MWJmNzg0NWQ4NGI1YTZlOTc3ZGJmODk5MTA1MDggbGVnYWN5LXRydW5rCis1MDc3NSA4MzJmY2U1MGRhOTM2MmVhNDQ0NDNmZWM5ZTZlMjQ5NWU2YTIyN2UzIGxlZ2FjeS10cnVuaworNTA3NzYgNzEzMmY5OGVmMDdiMzJkOTk0NDkzM2YyZGJlN2Y4ZTc0ODBjY2MxOSBsZWdhY3ktdHJ1bmsKKzUwNzc3IDc1YTcxMDY2NjJhM2ZkNjI3MjllM2QyMjIzODhkZjUzMjYyMjAxYzkgbGVnYWN5LXRydW5rCis1MDc3OCAxODA1ZTY4NGRjOTI1NzI5NzU0MjU3ZjYwYmViMTFlZmQ3ZThlOTAzIGxlZ2FjeS10cnVuaworNTA3NzkgYmM1ZDgzMWYxZGRhNTA5Y2JmNTZiZmZlYzVlNzM2NzBhYWE5YTgyNyBsZWdhY3ktdHJ1bmsKKzUwNzgwIGNkYmI0NGMzZGU4NzE1YTEwYzBkY2RhOGYwOGE5YmJlYzY5ZjNlODUgbGVnYWN5LXRydW5rCis1MDc4MSAwZTBhOTdjZWQ4ZTkxZjkyZTIzYThlYWVkZGQyZTZlNDc5ODNhM2VkIGxlZ2FjeS10cnVuaworNTA3ODIgZTk3NzNmYzI3ZTliMzZhNTk1ZGU1MTNmNzViZTNmZGFkZjIzNzg3MCBsZWdhY3ktdHJ1bmsKKzUwNzgzIDk1N2JmMzExOTI0Nzg0MDYyMjg1ZjJmYmY5YmY0NmQ4NmVjOGZjZTEgbGVnYWN5LXRydW5rCis1MDc4NCA5ZDE4ZDk2OGE1OGIzMzFmZTdmMjM1ZTk2MTZjMDEyODQzOTYzYTdkIGxlZ2FjeS10cnVuaworNTA3ODUgZTNkYTVmODdmZTY0MWQ4YjM5MmVhZTc1MWZjYTBhYzNmZjY5ZjVkZiBsZWdhY3ktdHJ1bmsKKzUwNzg2IDU0YmI3MjA2MzJjNDJmZDE4NWFkZTg5OTllOGMwZTI4ODIzZTZhYmIgbGVnYWN5LXRydW5rCis1MDc4NyAwYTRhZDgzZmQ2NTQ5MjI1M2MyODczNDk4MTVkNjBiZThiZGI2MGIwIGxlZ2FjeS10cnVuaworNTA3ODggM2FjODUwOTQzN2RmZGJjMjQ1MDA5NjhjYThkM2Q4MTQ5Y2RkNzY4NSByZWxlYXNlMjQtbWFpbnQKKzUwNzg5IGI1OGY3OTUyZTM4YWU4OTFkMmExMDM1NGY5NjEwMzM5ZjRhMzE3YTMgbGVnYWN5LXRydW5rCis1MDc5MCA3ODY0M2JlM2NmNDBiYjNhOWY0ZDQzOTM1NzJlZTAyMjMyYzYzZTllIHJlbGVhc2UyNC1tYWludAorNTA3OTEgYTNmZGE4NDMyMzRlNDhkMWNhNmM4MmIyNWU2M2NhNGE0NGE5OTNjYSBsZWdhY3ktdHJ1bmsKKzUwNzkyIGY4ODE5YmQ0ZTQzNzk3NzA1ZGFjZTAxMTdlMjJjNTYyYWI0NDk5OWIgcmVsZWFzZTI0LW1haW50Cis1MDc5MyA1MzQxOGNiYWQ3ZmQ0YzM2MmI5ZTc0OGZjOWQ1NjViMTM0OGMxYzNkIHJlbGVhc2UyNC1tYWludAorNTA3OTQgYTRjNGI3ZWE3OWMwYTc0ZjM2OTEzMTk5Yjc0Njc4M2IxZTExNzhkYiBsZWdhY3ktdHJ1bmsKKzUwNzk1IDgzMmQ1YTM0MTMwZmE1MzY0NTcwNzQwZGU3NTEwNjkwYTFiYzNhNWIgbGVnYWN5LXRydW5rCis1MDc5NiBhNGZjNGU3NTI2MzQ2ODI1MjdiN2YwZDFmZWUyNWJjMzI4YmQ1YjA0IGxlZ2FjeS10cnVuaworNTA3OTcgNjNhZWE2ODhiNWJiMjZkZmNjZGM0MGU1NjU3MjhkYjJhZWVjNzM4ZCBsZWdhY3ktdHJ1bmsKKzUwNzk4IDFiMWZkMThiMWFkYTUzODNjMjVlNTYyNGY4NjFiZjA1M2Q1ODYxMjggcmVsZWFzZTI0LW1haW50Cis1MDgwMCAwMmZhMTAxNWNiY2M0YzkzNGM4NDBhM2Y5ZmQyZmU2MjAwMWU5NzJjIGxlZ2FjeS10cnVuaworNTA4MDIgY2FhZjM3ZTQ1ZDQ3ZDQ3ZWM0NzgzNTg2Yjk2MDZlOTQwZThkMDE4OCBsZWdhY3ktdHJ1bmsKKzUwODAzIDg5ZTA5MGZlZjk4NTMwMjFjYWI2OTk2YjdkODQ2NGJlMThkYjQxMzEgbGVnYWN5LXRydW5rCis1MDgwNCBlZmRlNWVlODhjOWY3Nzc5ZjAxY2U1YjNmYzYzMjhmMTczNDJmOTM3IGxlZ2FjeS10cnVuaworNTA4MDUgMGMwMGUyZjUwOWUwMDc5MzQ3YTNkYTVkM2Q4YzUxNGZiZTcxODczNCBsZWdhY3ktdHJ1bmsKKzUwODA2IDdjZTdlZDJlY2Q5Y2FkMzRmMjY3N2M4NDMxNzc0NWNjYzJlMmI0OGUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDgwNyBkNzFkNDY2OTc0ZTU4N2JiMzYzOTU3YTA5OWNmYWNlZmY4Nzg3MWY3IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA4MDggZWFlZGNjYzAyODNkNzkxMGU0OWZmMmU3OTlhZmU5MzM4MjUxZmIyMCBsZWdhY3ktdHJ1bmsKKzUwODA5IDA3Y2VlMDFhNGZjY2MzODdmMGZjMWQ5MjhmYTUwZmE4MWVlN2NlMTEgbGVnYWN5LXRydW5rCis1MDgxMCBhNWY4ZDFkMjU1YTk3OWJjNzBmNGY2OGMwNzQzOWI2YzNlZDJkMzg5IGxlZ2FjeS10cnVuaworNTA4MTEgOTlhYTg0MjI0ZjE4MTlkNTUyNzI2YWE5MTFlYTg1NzA5NDU0ZjQ3ZCBsZWdhY3ktdHJ1bmsKKzUwODE1IDYzYTQ0YzkxYTRkNWViY2UzMjVmYzBmODIyYzJlOGY4MmRmMTJlMjcgbGVnYWN5LXRydW5rCis1MDgxNiA2MjI4MmZkYWFjNWEwYTEzNTY1OTUwMmJmM2MzNGI4NWY3NDQxNmY4IGxlZ2FjeS10cnVuaworNTA4MTcgNzkwYTc4MmQ5ODNjYzc0NDY0MTg1NDAyMjMwYmM4ZWIyMTc5ZGI5NyBsZWdhY3ktdHJ1bmsKKzUwODE5IDY2MjFlZGZkMjk2YWI4ZGUxNzBmMTYwOTg4MTcwYzY3MDdmMDIyN2EgbGVnYWN5LXRydW5rCis1MDgyMiAyZDRjOWFjY2I4ZmNjMTNjNDI4NmYxODA5ZmYyMDdlZTFjM2U5MjI2IHJlbGVhc2UyMy1tYWludAorNTA4MjUgODM3ZjU2OTUwY2VhOGI3NDJhNDYzZDc0Njk4NjAxNjM0OTJmZWIyZiBsZWdhY3ktdHJ1bmsKKzUwODI2IGZmOGU3YzQ2ZTQyOTgwMWYwNTZkMTFmMGUzMTRhYzdlNjZjNmY5NjggbGVnYWN5LXRydW5rCis1MDgyNyA5NTM3Njc1MmU2N2NmOTNiYjEzZjU0Y2ZmYjM4MmE5NDk5ZGMxN2RmIGJjYW5ub24tc2FuZGJveGluZworNTA4MjggOTAzZmRjMzhkNTY0NWU0YzJlMDE4OTIwMGY1ZjA1NGNkOTYxN2E3MiBsZWdhY3ktdHJ1bmsKKzUwODI5IGY5MGYzMjg2Mjc1NjFjNWQ2NzFhODRhZTM4ZDEyMjYxOWQ2YWYzMjQgbGVnYWN5LXRydW5rCis1MDgzMCBiOTE1MWM4Yzc5ZThmNTNlOWQzMzlkMDUwNDEwNjc1MzZjZjAyZDJkIGxlZ2FjeS10cnVuaworNTA4MzEgNWQxMTYyZTZiYzM3ZjQ4ZDVmMjhmOWJhYWU0YWVmNjZlOTNjMzIzYSBsZWdhY3ktdHJ1bmsKKzUwODMyIDQwZThjYWVmODQwZWYyNDliNTY3MGNlMDgxYmIxODlhNGJkYTZhNmYgbGVnYWN5LXRydW5rCis1MDgzMyAxNDkwNTI5ZTc0Y2UzYmFiOTI4M2I4NTUzM2JkMzNjOTZjYzNhMDZkIGxlZ2FjeS10cnVuaworNTA4MzQgYjU1YmYyYWRmYWU1ZTkxNDNhYmI4Yzk5ZGM0M2RmODMzYzg2OGVjNCBsZWdhY3ktdHJ1bmsKKzUwODM2IDVmMzMxMjA1NGNlZGU2MWU4MzVlNDg0MTMzZTNlNzk1NTQ0YjA3YTggcmVsZWFzZTIzLW1haW50Cis1MDgzOSBjZmJmNTc1NzI0NTdkYzAzNWQwOGIxNGE0NzViYzAxOTRhMjMxZTA4IGxlZ2FjeS10cnVuaworNTA4NDAgNmIyMDBiOGM2M2QzMzI2NmMzY2IzZmJjNzRlYjk5ZThkMDlmOGRhMSBsZWdhY3ktdHJ1bmsKKzUwODQxIDZkMTg0ZmI4YzUzNTA5OGQ5OWExNTNhZmVhNjZmZjI5N2Y5NDdiNTkgbGVnYWN5LXRydW5rCis1MDg0MiA3ZGE2ZjgxYWQ0ZDUzZTUyMWE5NmNmNTc1OTQ4OTY0YzRiMjJhNzM2IGxlZ2FjeS10cnVuaworNTA4NDMgMTdkNTY3MWZmZmNjYzNjYTk4ZDhjNmFjNzFhMWMwZTMyZjA0YzQwNiBsZWdhY3ktdHJ1bmsKKzUwODQ0IDljNmRjNmQwOWIwNzM2MjNlMzFmODgxYTM1ZjFhZTFjODEwY2ZhNDYgbGVnYWN5LXRydW5rCis1MDg0NSA5ZjNmMWVkZDljMzUwNjM4ZDE5ZDAzZDliZjU1NDUzMTI3NTYzZTZiIGxlZ2FjeS10cnVuaworNTA4NDYgMjY3MDY1MDc2ZjA1OWRlZjA0MjAxNWU4NWFmZDQ5ZTVmNTA1ODdlZiBsZWdhY3ktdHJ1bmsKKzUwODQ3IDI3MWIyYmIyZmM5MjNjZjBkZjAzM2FiNWE1MTBhMTVkYTZiMDk1YzggbGVnYWN5LXRydW5rCis1MDg0OCBmMjkyYTJiMTRiYWY0ODEyYzM0M2E3OWQ4OTYxY2JhYjk2NTI0NDE0IGxlZ2FjeS10cnVuaworNTA4NDkgYWNmNjAwNDcxMzY5ZjQzZjRiM2Y3MmIzNGU0OGI0ODc3ZmU2OWZjMSByZWxlYXNlMjQtbWFpbnQKKzUwODUwIGYwOGM1YmJiODA0MjFjZDM0YmU3YjFiODBmYjIwZWY2YmZjYjljMzggbGVnYWN5LXRydW5rCis1MDg1MSBiODE2NDJlNTIyODdmMzZiZjZhMWUwZjljYWIxYjFmNTJjOWQ0OWM3IGxlZ2FjeS10cnVuaworNTA4NTIgMWUwMGVmMDdiZWIyNzE5ODQ4MjNiOGQyZjM2MTgwNGFjZTVkMzljMCBsZWdhY3ktdHJ1bmsKKzUwODUzIDE4NWY0MjgzYTNiOWNkNGI2NzBkOWIwYWJkZjFmMmJiY2M0MTYyZTEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDg1NCAyOWMyZmVlNmM5ODQ4ZThhMjc3ODlkNzFhNzBiYmQ1MzQ4ZDFlOWUyIGxlZ2FjeS10cnVuaworNTA4NTUgNDBiNDQ2ZWQzZjEyNjJkOTYyZTIzZTFhZmMzYzE5YmJiMDBlZTM0MCBsZWdhY3ktdHJ1bmsKKzUwODU2IDVlZTZkM2RhMGU2NDU2NDg3ZDEwNjgzYmY3NTY5NzExMjU4MDA0YzcgbGVnYWN5LXRydW5rCis1MDg1NyBiY2VmYmM1ZTY3MWFmZDdhMTY4NDI1Y2FlYWQzMmQwOGNmYTdlZGU2IGxlZ2FjeS10cnVuaworNTA4NTggMGIwY2M3YTQ5NjgyY2MwYWY4MWVkNGU0MDNmZTIzZDZiZDFkYjU3MSBsZWdhY3ktdHJ1bmsKKzUwODU5IGQ3NjU3NzVlZDc5Zjg1NjNhMTk5NTVjZjhlNWIwNWFhODk1N2VmODUgbGVnYWN5LXRydW5rCis1MDg2MCA4Y2EzMDY4ZWEzNDNhMjRhZTczYWFiMGY0MTQxMGE1MTA4Y2Y0MzBlIGxlZ2FjeS10cnVuaworNTA4NjEgMDI1YzI3YjgxMmY2OGM0MjRhNjZlYmI2OGIxODFkZGI0Mjk4NzBlZCBsZWdhY3ktdHJ1bmsKKzUwODYyIGIwMTFiZWNmOGM4MjJjMmJiNTY1NGM5OTFkN2E3NmQyMDAxZWQyMTggbGVnYWN5LXRydW5rCis1MDg2MyBjMThhNjY5NGEwNjZjN2U5NWQxNWM2N2FhYzViNGY2NjY5ZDA3ZWM4IGxlZ2FjeS10cnVuaworNTA4NjQgMDBhY2U2ZTQwOGIwMzcxYTBmMjI1ODgxNTcwNGM2MGZmOTI0YzI1MiBsZWdhY3ktdHJ1bmsKKzUwODY1IGExMTBhNDQ2MjE4OWEyMDAwMmI4ZDhkNGYwNzQyZTY1NGFmNGM3MGEgbGVnYWN5LXRydW5rCis1MDg2NiA2MWMwZmU0ODM3NmExMmQ4YTMzYzViNjQzNWUxZmM1YzE5NTRiYjI4IGxlZ2FjeS10cnVuaworNTA4NjcgNjA1MjJkZmU2MjU5OTBiMDQ1YTQwYTQxMTAwN2Q5ODljZTAzMDU4ZiBsZWdhY3ktdHJ1bmsKKzUwODY4IDcyYTUyZTZmYzZmMTBlNTNmNTBiNmYxMjFmMjA2NDI1MzA0NDgxMzcgbGVnYWN5LXRydW5rCis1MDg2OSA4NzliZDc1MTBmZWEwMGQyMTI2OTdiYWUyMmMzOTc1Yzg2YThiZjAxIGxlZ2FjeS10cnVuaworNTA4NzAgNmIzZDRhMGYyYWM1OTE1NzgwNzRkNWZkMzc4NGViNDJlNjg3Nzk0NCBsZWdhY3ktdHJ1bmsKKzUwODcxIGM0YTc1NDZhNTA5ZjE3NGMzODhkZTQzNDU2YzNlYmMwNmQwZTg2ZTIgcmVsZWFzZTI0LW1haW50Cis1MDg3MiBjZTRkZmYyYTk1MjM4MDBjYjY1MDcxNDJlYjA5OWNmYTY0ODYyY2QxIGxlZ2FjeS10cnVuaworNTA4NzMgZWVhNjc0MjExZDMyYmMxZDU2M2UwMmQyZWZkZDk5M2UzOTYyNzRiMSBsZWdhY3ktdHJ1bmsKKzUwODc0IDBkMGQ4MmU0MGI5MjdlNTNkYWI4NjNlZjYwNGRiMmE1YzU1MTVkODkgbGVnYWN5LXRydW5rCis1MDg3NSBjNmQ0YzBhZjJhMTIyMjY5YTE5MTBkNGFiMWE1MzNhYjBmZmJkNmQxIGxlZ2FjeS10cnVuaworNTA4NzYgYWMwMWI2MzU5YjYyMTU4OGNkOGZiM2M0ZjczMWQzYWQ2OTZhODIwOCBsZWdhY3ktdHJ1bmsKKzUwODc3IGIwY2RjYmNjNWY0NTc4ZGI2NGU0YzcxMDM4MDRhNmU0ZGI4NTExZmUgcDN5aworNTA4NzggYTc1MzAwMzZmMDU1Y2JkODQyMTgwMzkxOTY2ZmExNmE2MmY2OWIwOSBsZWdhY3ktdHJ1bmsKKzUwODc5IGUxOWRhOWIwMDJkYTMxYzYyZjE4ODNhZGExMmQ2YTQ1M2VkOTZlZTMgbGVnYWN5LXRydW5rCis1MDg4MCA2ZWIzNzU3YzJjOTkxZDM2ODllYjU4NzQ3YjMzYTY4MjFkZWY5M2YyIGxlZ2FjeS10cnVuaworNTA4ODEgMjhjZGQ0M2UwNTY5MDJjZmZiN2MwYzAyZWM2Y2U2MmNjNDYyN2VlNSBsZWdhY3ktdHJ1bmsKKzUwODgyIDA3ODE3MmVlYWFlNTNkNjE0MTIzMDc0MDg0ODRiYTk4MWEyYmQyZTMgbGVnYWN5LXRydW5rCis1MDg4MyAwYjNmZDA0Y2RmYjQ4ODVjNzM2OTVkNDY3MWVhYWFhMjY2MzBkYzdhIGxlZ2FjeS10cnVuaworNTA4ODQgMTEyZjIxODgyMTNiMjRjYjIzNzdhMGRlMmUwY2FmZGZlNTJjY2JmZSBsZWdhY3ktdHJ1bmsKKzUwODg1IDQwY2ViYWZhZTU2ZmY2MDNmODFjZGQ5ZTBlMmUyNTJhMWY3NGM2YjcgbGVnYWN5LXRydW5rCis1MDg4NiAzNTA0M2ZiYTdhZWQ4MDFjZGRhNTNhOGQyNzBiNzI4ZjM4MDMyZmY1IHJlbGVhc2UyNC1tYWludAorNTA4ODcgY2Q4ZjIwZDQwMGMxYzY1YTMzMGQ3M2U0Y2Y0OTdiYTRkNjBiZDJiYSBsZWdhY3ktdHJ1bmsKKzUwODg4IGVmMWU3ZjNkOWY5ZDgyZWM5Y2RkYjc1OWRkMDM4ZmFhZDM3YjJhZWUgbGVnYWN5LXRydW5rCis1MDg4OSA2MWM4YjQxMDRhZWZhZWE1MjExZjZmOWNmMGM4NTQxZTg3ZWM0ZWE5IGxlZ2FjeS10cnVuaworNTA4OTAgNzU0MzFiMGJmYjBlNzIxM2IwYjM0YjA5NjBmZWUwOTNhNjM0MTc3ZiByZWxlYXNlMjQtbWFpbnQKKzUwODkxIGI5ZjM1M2MyYzAyM2U1Yjk4NjMzMmQ3ODY4ZWQ2YWNjMzIwNTA5YWYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDg5MiA2OTdhZTM2MmVkMDI0MTUyYTEwODc4M2M2Mzk2N2VhMDAxMTdkNzE0IGJjYW5ub24tc2FuZGJveGluZworNTA4OTMgNDI3NmQwYjQ2OWFmZmYyNGYyYjdlMjcxMDFlMDZlOGI1ZjcyYmRiYyByZWxlYXNlMjQtbWFpbnQKKzUwODk0IDI3N2Q3YWY1NWM0OTQ1YTc4MGFiMzg0ZDc2ZWYyM2FiZTc0NTNmNzkgcmVsZWFzZTI0LW1haW50Cis1MDg5NSA0YTZhZGU5Y2U3ODBkYjkwNTU3YTM2YTFjZDljMDUyOTZlNTRlNDM1IGxlZ2FjeS10cnVuaworNTA4OTYgNTU4NjVkN2JjNmVhNDkxNDQ1YWNhYTUzMTFiZTE5OWE1OGYxZWZjNyBsZWdhY3ktdHJ1bmsKKzUwODk3IGJmMTk4NGMxM2UyZjc5ODY0NDY0OWRmY2MwODBlODE4MDFhMGQ2MTMgbGVnYWN5LXRydW5rCis1MDg5OCA2ZGFjZGMxYTAwNTRmYTkzNjljNzNhOTU4ZjU5MTJhMmViYzg2NjliIGxlZ2FjeS10cnVuaworNTA4OTkgMGU5YTI2OWEyMTg5MGIxMDA1ZThiODA5MGRjNjc2ZjE3NjBhMTI4ZCBsZWdhY3ktdHJ1bmsKKzUwOTAwIGQxNjY0YTUwMWRhNWNiZGUwZTAwMTA3ZThmZmM5OTYxZThhYmRhMzYgbGVnYWN5LXRydW5rCis1MDkwMSAwZGU5ZDcxNDQ0ZjYyOTZlYjU4NDAwNzE2MTYwYTE0NjNhM2U1ZDc2IGxlZ2FjeS10cnVuaworNTA5MDIgYTliMmZkMmQ0Yzk2MTdjYTU0MzQwOTczZTkyMjQ2MWE2NjNlNDg3OCBsZWdhY3ktdHJ1bmsKKzUwOTAzIGM4MzRjYjk1NjM3YWNkYjE3ZDIzZGQxNmQ2YWFjMzJkYTZhMGQ1NGUgbGVnYWN5LXRydW5rCis1MDkwNCBjM2JiNGIyM2ViOWIzZmJhY2EyNjJjOWY4MWVjMDlmY2FmNjkyMDhlIGxlZ2FjeS10cnVuaworNTA5MDUgNDA2YzFlZmU3YmVlZDM0NjlmNjkxZTY5YjEzY2M5YmMzM2RiNzA1NSBsZWdhY3ktdHJ1bmsKKzUwOTA3IDA0ZGYwYTk3MjFiMmM3NGNiZjMwMTQyNWM2MjFlYjk1M2Y0MjMyZjcgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkwOCAxYjU5N2M4MDE1NzIyMmM0MzI5MTA4ZDRjNzM0OGZmNDc0MDQ0YjlmIGJjYW5ub24tc2FuZGJveGluZworNTA5MDkgOWZkYzY4NDFjM2ViNjljNzJlYTE3ZmIzNGEwMWM1NDNmMjNmYTAxYSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTEwIDMwOGJhNjQzMTczYTAwNGYzZmJjYjlkYTRhNTZiYjIzMjgzNzg0M2EgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkxMSBlYzUxNmJhZjhhMzBjNWQ1OWMyNWEyMWUyZDgyYjY0NGEzOTY1NDYzIHJlbGVhc2UyNC1tYWludAorNTA5MTIgZjNkNTQwNzUxYWRlMDdkZDk4Y2FiMTA4NjNlY2QyZmRhYjcxMTcxNSBsZWdhY3ktdHJ1bmsKKzUwOTEzIGM0YWM2ZWE0OTdhMTA1ZWQzNTQ0M2U0ZTZhMjQyNzZjNjlkOTNiOTYgbGVnYWN5LXRydW5rCis1MDkxNCA4N2M5ZTMzMWQ1YzhkNjExMmM4MTNkZTgxYTNkZjY0YWJkODVmMjY3IGJjYW5ub24tc2FuZGJveGluZworNTA5MTUgNmI5NmQ4YzkyM2JlYzViMTVlYTQ4NTBiMTMzNzI5YjgxNWQ0YmY4NCBsZWdhY3ktdHJ1bmsKKzUwOTE2IDNmNDQ4NWIyMGU3OTllOGNhZTI3YTBmN2FhODJjYzI3NTA5NDg4YTQgbGVnYWN5LXRydW5rCis1MDkxNyA1ZTg1ZWVlMzM1ODI4ZDgzNWQ4YTgwNDk1NDc5NTNiZWRkOGUwYzgxIGxlZ2FjeS10cnVuaworNTA5MTggMTJjZmExYmNmODQzZDc0YmNiZTEzZTg0MjUyNzFlM2Y0YjNmZDExZiBsZWdhY3ktdHJ1bmsKKzUwOTE5IDhiOWNjZDVkOTMxZTBmMjQzN2I1YWYzNDM0N2VlMDQwYzZiNDYxOTggYmNhbm5vbi1zYW5kYm94aW5nCis1MDkyMCA5MjVhYjQ3ODI5OTQyNDk3MDk3M2UyOTZmZDI2OTU0MzlkOWUyYjI0IGJjYW5ub24tc2FuZGJveGluZworNTA5MjIgYTU0YWUyNTgzYjcwMTAwY2EyMDhmZTExMzVlNmI3ODM3ZTUwMGJlYSBsZWdhY3ktdHJ1bmsKKzUwOTIzIGU3OTVlMDVkNmQ1NjVjNjJiOTMyYTM3YzAyYjY3Mjg1ZjI4OWMwMDkgcmVsZWFzZTI0LW1haW50Cis1MDkyNCA2YzhiYzdjZDcyYTZjOWZjN2Y0ODFlMDNjMDNmZWUwYTYxZTlhMjNkIGxlZ2FjeS10cnVuaworNTA5MjUgZmI2YmNjZmZiZTMxMGE0YjA4ODI2MGZkYzMyZGM0NzBjYzdiYWJkOSBsZWdhY3ktdHJ1bmsKKzUwOTI2IGNkYjQ3ODcyMjZhZjNiNTUzMTBhZTgwNWE5NDljZjMxOGEzMDUxMTUgbGVnYWN5LXRydW5rCis1MDkyNyBkNDUzNDQwYjMzYzZlNTE3MzNmMWQzZmIyYmJhYTAwZmE1NTZhOTQzIGxlZ2FjeS10cnVuaworNTA5MjggMWZhZDRmM2UzNmJhNGZiMDQ0MzlkNDY5Y2YxYjU0MThhNzFlN2NlYyBsZWdhY3ktdHJ1bmsKKzUwOTI5IGFiMzQ5NWRmNGNjZWNiYTZlMWQ2MjhmZDdhOGM3M2ZhNDA3MGUwNmUgcmVsZWFzZTI0LW1haW50Cis1MDkzMCBiZDI2YTE5NTNjMDViZTJlYWZkM2E2ZGU1NmQ2ODM4MDc5NGJhZjg1IGxlZ2FjeS10cnVuaworNTA5MzEgYTk5NWNmZjg0M2IzNDBlMWY1YWI4Yzk3N2QyMjRmYWZjMGNjOGIxMyBsZWdhY3ktdHJ1bmsKKzUwOTMyIDNmZWQ3ZmI2YmM5NjQ0OTM5Y2Q3ZWYzYzAxNzI2MTZhNGE1MGUyNDUgbGVnYWN5LXRydW5rCis1MDkzMyA1ZjIxNTQzYzMzZGM0ZWNhN2FlM2VhMjUzMWU3NDZmYmIwOTFmZDk2IGxlZ2FjeS10cnVuaworNTA5MzQgMmYzZDg3MWJmNmVmMjJmMzlhMjU3YzY2NjkzNGI4NzNlNDVjZGNjOCBsZWdhY3ktdHJ1bmsKKzUwOTM1IDZmZjcyYWQ5M2FkMmJhNjE3YzUxNTFmMTRlMWUxODRjYTViNGNiOWMgbGVnYWN5LXRydW5rCis1MDkzNiAxYzk0ZjY2MjM3Nzc5YjU2YmFhOTcxZTE3MWZmZDVhMGViYmQxMjg4IGxlZ2FjeS10cnVuaworNTA5MzcgNmE4OTk1YzJlOGJjOTkxZDE4Y2FjYzM0MDYwMjIxZjI0Mzg2MGIxZiBsZWdhY3ktdHJ1bmsKKzUwOTM4IDA2OTFkOTAxZDg5Y2JmM2JhYzBkNTNiYTU4NzFmYWY3ZDI0ODZkMjIgbGVnYWN5LXRydW5rCis1MDkzOSAwYWJhNmIxZjVhMDFjM2JkZjVkZjFkYTEyYjQzYmI1ZGUxNzdiM2MwIGxlZ2FjeS10cnVuaworNTA5NDAgMWEyMjJmMTEwYWFhZjk5ZGQxMjE4MjU4ODU2NGUxMWUxMTUyNTkxMyBsZWdhY3ktdHJ1bmsKKzUwOTQxIGNiMWU0MzJiNDkxOWYxMDY0NDA2YTY4YzhlZjE2MDgzNThiZDY1MjQgbGVnYWN5LXRydW5rCis1MDk0MiA0ZGQ1MmJhNTJkZTgzZWUxM2MzM2VlNzc0ZWExMmZkNDc2NTU5YTY1IGxlZ2FjeS10cnVuaworNTA5NDMgM2EyZDNlZGEzZTE2ZTVkNGQ5NmQ4ZmE1ZDU1N2Y0MTA3YmNiY2YwMSBsZWdhY3ktdHJ1bmsKKzUwOTQ0IDM0OTgzYzBiMjZiYzI5MjY2MjllMjEyNjc0Yzg4ZjI2MWY4NDEwN2QgbGVnYWN5LXRydW5rCis1MDk0NSA4MDY5ZDczYWNiZGY4YjVlOWQzYjg3YzZhZTkyMWFiNWY4YjBiOWQ3IGxlZ2FjeS10cnVuaworNTA5NDcgMzU1ODNmNTVjNWE4YTU1YTA2N2ExYmUxY2ZiNDBlZjFhZTRkMjY0ZiBsZWdhY3ktdHJ1bmsKKzUwOTQ4IDcyODE0MjlhMDFkNjdkNGJiNzA5ODZmMmU1NzcxOTVkNmJjNDMyZjQgbGVnYWN5LXRydW5rCis1MDk0OSAzNGMyMGQzZjI1MTA2NDA3M2RmZDZlYjNkMjkwMzI5Yjc4MTRhMDEyIGxlZ2FjeS10cnVuaworNTA5NTAgODhkYjYwMmYyM2E2ZDFlNWQ0NWE4NDEyNDAzYzBhZTljNTU3OTU5NCBsZWdhY3ktdHJ1bmsKKzUwOTUxIDQ1YTM1NGY3NGQ4MGQ2NTQwOWEwZGYyYTVhMmE1OTJiNmJkYjQ0NmQgcmVsZWFzZTI0LW1haW50Cis1MDk1MiA0ZGI5ZDk1MzNiMTYzZDE3OWMwOTk5YzBiNGJlNjdiNTc5MWY2YjUzIGxlZ2FjeS10cnVuaworNTA5NTMgZDg4ODhjOGI4NzJiMTNhNzM3NGQ0NjNhMzY2ODg3MGRkY2NmYWYxNSBsZWdhY3ktdHJ1bmsKKzUwOTU0IDZhNWY3OWE0ZTY4NzMzZTEzNmYxMjU2YzBjMWI5MTE3MjVmOGZmNTYgbGVnYWN5LXRydW5rCis1MDk1NSA1YWQ2ZTJhNzJiMmFjMmExNDIzOTdmNDIzNTljMWU1ZmM5YTgxMTkwIGxlZ2FjeS10cnVuaworNTA5NTcgNmQxZjY3M2YwNTkwN2M2ODNiNzE5NDZmNzBjMWFhMGU1MjQ3NDQ1OCBsZWdhY3ktdHJ1bmsKKzUwOTU4IDgwNTUxMmNmMTRlZmNhNjVlZDhjYmJlMGFhMGM5MmZiMTNmMWY5ZTQgbGVnYWN5LXRydW5rCis1MDk1OSA0NDA3ZTUxOTNhNGIwYzkxNzI4NWYyMmZjYzA4NDdlYzhlMDZjNGM0IGxlZ2FjeS10cnVuaworNTA5NjAgNGUzYWQ2NWY1NWU4ZWUyN2NlYTAxMjFiYmRhOTY0ZWNhZDJiM2M0NSBsZWdhY3ktdHJ1bmsKKzUwOTYxIGVmYmFlYzk2NzRkZmQxZjk5OGQwNjU2MzQzMjJjN2YxYWFlODllMWEgbGVnYWN5LXRydW5rCis1MDk2MiBkZDUxZTU2YjZjYjBhNWQyOWU4OTdiYmMyNWEwMGUzMTY0OWQ0OWRlIGxlZ2FjeS10cnVuaworNTA5NjMgMTUyM2MzOGNkNTA1ZmYyMTkyMmI2ZjhiNDdkZTFkM2Q3MDBmZjI2OSBsZWdhY3ktdHJ1bmsKKzUwOTY0IDM4OGI3ZDkwYmI4OTYzZTk3ZTRiZGNlYjFlNmQxODc0ZmIyZDg4M2QgbGVnYWN5LXRydW5rCis1MDk2NSBmNjlkOTFhN2NmNzE0ODk0ZWRkMDQ2ZWU1N2UzMTQyMDZjYTNhNzg1IGxlZ2FjeS10cnVuaworNTA5NjYgNzdmMzY1M2JmYzE0ODNmNzQwYjEyMGM3NzlhOGUzZmUzYWRiNjFiOCBsZWdhY3ktdHJ1bmsKKzUwOTY3IGFlZTlmMGQ1ZmQyYjE2NzI0NTNhZGVlOWRlNTIwYjYzYzczYjZjYzggbGVnYWN5LXRydW5rCis1MDk2OCBiNzQ1YjNmZDY2YTY0OWE1ZmE1NDBiZGY0Nzk3MWMyNmFmMGE5NTllIGxlZ2FjeS10cnVuaworNTA5NjkgN2RjNWYzZWRlNGNkYzYyYmZlZmIxZDcwYmQwYmFlYmNkOTc1ODM2NCBsZWdhY3ktdHJ1bmsKKzUwOTcwIDA0MWViNjIzMWNkYzI0MTZkOWI5NWQwNjVhODJlY2IxYTE0NzU1NTIgbGVnYWN5LXRydW5rCis1MDk3MSAxYjRlNWViMjEwNDlmYjVlNTlhM2IyNDQ2OGJjOGRjODk3MDIwYTk5IGxlZ2FjeS10cnVuaworNTA5NzMgY2ViZWUxZjg1MjIyMTkxMWFkYjBiYjA5NTZiMTk3NThkNGZhYzYyYyBsZWdhY3ktdHJ1bmsKKzUwOTc0IDFlYjkyMTU2NDFhODg0NGVhNjQyYzE0Nzc4Y2QzMDMwNWQzZTMyYjkgbGVnYWN5LXRydW5rCis1MDk3NSAyMTY4NzdiODZiYzI4NjVmNzVhZjFhMzk1M2VjOTg4Y2M1MjI5NTg1IHJlbGVhc2UyNC1tYWludAorNTA5NzcgOTM3N2M2NjA0NTQyY2U2ZWFiZjVkMGU2MmNkNDQzNWRlNmQxZWM5ZSBsZWdhY3ktdHJ1bmsKKzUwOTc4IDM2MWVmN2NlZWYyOGQ5ZjYzZWIzZTVjN2U1NTc1ODNmMGExMzU0M2QgbGVnYWN5LXRydW5rCis1MDk3OSBiZGU1OGE3OGZjNzEyZTJhOTcyNWQ0NzQ1ODFjMTRjOWIzMGExZTM3IGxlZ2FjeS10cnVuaworNTA5ODAgZDkzYTA0MzQwZTZiYmE1NzQ3ZWYwYjJmZjA5OTgwNTFlNmZjOTFlMyByZWxlYXNlMjQtbWFpbnQKKzUwOTgxIDY1ZTdiNDIyMzQ0NGYzNmM4NjdkOTcwMTJjNDBlOTRkNGUzMmYxMzEgcmVsZWFzZTI0LW1haW50Cis1MDk4MiA5Yjk1ODA5ODIwMzU1YjZmMWU0ODc0NzFiY2UxZWI5MDRkNzQwNzBhIGxlZ2FjeS10cnVuaworNTA5ODMgYzk4YTIzNTI5ODNhNDk2ZDE0YTk4ZDA5OTMwZTY0ZTFmZjcxNTNmYiByZWxlYXNlMjQtbWFpbnQKKzUwOTg0IDI5Yzc2MzVkMDE5OWFjNWJlMmM5Nzk5NDJlZTEwMmIwOWNiMjQ2ZTEgbGVnYWN5LXRydW5rCis1MDk4NSA3ZjQ0ZDYzNGYzNzdiZDY4OWIzOWRkNGZiMmFmYmZlOGRmZTA5MmM5IGxlZ2FjeS10cnVuaworNTA5ODYgNGFlZDQzNjdhZGQyN2NlZWJmYmRkN2Q4NTNmMmIwMjUwYzA2YTk5MiBsZWdhY3ktdHJ1bmsKKzUwOTg3IGQwZTYxNzA3MDRkZWU4NTA5NjAxNGIzMzdlZDA0MWQzMmNiMzFhYWYgbGVnYWN5LXRydW5rCis1MDk4OCBjODdhMzk1MWRmYzUwYWEwNzE4YmZkOGUyMGIwOWM2NjkxZjFkNTA5IGxlZ2FjeS10cnVuaworNTA5ODkgNGVkNWQ0YzhlNjU0MjRmNGE4MTFhMDU3YWE1NzcwMWYyZDllZTBhMyBsZWdhY3ktdHJ1bmsKKzUwOTkwIDM5NWQxNWU4Mzc0YTcwYTA2YTQ2ZGM0NzgzMjgwZDMzYzA4NTNlMmUgbGVnYWN5LXRydW5rCis1MDk5MSBhZWM2NjY4YzU4ZDFlMWY4OTAyZmU4NWQ1MjA2NzIyMWQ5YzllYjUyIHJlbGVhc2UyNC1tYWludAorNTA5OTIgY2YwNDZlMjJkN2RkNTljNGNhMzJkMjQ3MzQzZDY4YmQxMDFhMmZiZCBsZWdhY3ktdHJ1bmsKKzUwOTkzIDkzMGJiMWViOGRkNWQxY2FjNTI5NzQxNTM0ODgxNGJmNzQ3ZDg1MjAgbGVnYWN5LXRydW5rCis1MDk5NCAzZGQ0MTAxY2I3ZTk3NzlmZmY0NDUyM2M3YmE5YWRhNmNjNzU5YjhjIGxlZ2FjeS10cnVuaworNTA5OTYgZjdmMTBhOGI5NmVlN2Q2MDE0Zjc2NDg3ZGQ3ZTAzOTVjZTUwMzdmNSBsZWdhY3ktdHJ1bmsKKzUwOTk3IDdmMDQ3OTNmZTEzNWU1ZTg4NDk1N2E1NzRmNDVlMjVhMzM4NDI5OTEgbGVnYWN5LXRydW5rCis1MDk5OCA5MTAxNTE1MjRmNWVlYjBkMzE1MTEzY2FmNWNhMDEwZTY4YWFiMzVhIGxlZ2FjeS10cnVuaworNTA5OTkgNjYyODE0ODhlOTAyM2E4MjJkNjk3YWY5NWE3OWVlYzJlZDcwMjM4MSBsZWdhY3ktdHJ1bmsKKzUxMDAwIGI3OWI2OGI4MmE0NDVjMzMxMWUyNTkyMGM4NzU1NzdkOGY0OWQ1NDEgbGVnYWN5LXRydW5rCis1MTAwMSA4NmU4MWRlZmMyODU2ZTYwMjA4MTBmNThlZTc3NDI3YTBkZThiZDlmIGxlZ2FjeS10cnVuaworNTEwMDIgM2I3ODk1N2M3NzkxOTk4NGIwMTNiYjk2ZGI4MDUzNTg1MTM4YWMxYiBsZWdhY3ktdHJ1bmsKKzUxMDAzIGYzZTA4OTE1Yjg3YjQ0MzU2MWIzYzMzYjE0MWE2NTRjZDE4Y2ExZjMgbGVnYWN5LXRydW5rCis1MTAwNCA4NmMzNjE4YTQ5YzNmM2E1OTI0NThmNWVlOWI4NDczY2QxZTk5ODVlIGxlZ2FjeS10cnVuaworNTEwMDUgNDk2NmIxNzk2M2I0MWU3ZTdlNjA2MWU0ZGVlNmU0NWQwY2FhMDQ5YSBsZWdhY3ktdHJ1bmsKKzUxMDA2IDNkZThhNThhZTBiOWU4ZTEyZGVlMjQxM2FiNGI2ZmRiOTVlZjNkMjggbGVnYWN5LXRydW5rCis1MTAwNyAzOTM4ZTZlZmE3OTNkNmIzMTc2ZTY1YzAzODczMDIzZTQzNDdjODIzIGxlZ2FjeS10cnVuaworNTEwMDggMzE1YTY2ZDIyNDdhNzkxZDNiMGNmNDBhNzMyNTQ0MjU0NTA4MTgzMyBsZWdhY3ktdHJ1bmsKKzUxMDA5IGZmMjIzYjk1ZjIwN2UwOWQzM2JjNTA4ZDZlMjRlNGRhMmZjODgwM2UgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAxMCA5ZDdjNDVkMGQxYmY3ZWMzNjlmZTc4M2MxNDdiOTlhMmMyYWQwMjk3IGJjYW5ub24tc2FuZGJveGluZworNTEwMTEgZWUyZDQ2YWMyZjZlN2I1YjlmMTZlNDc3Nzc1OWQ5Zjg5M2EzNjA0NiBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDEyIDFjMGMxMjgzOGU2MjUzZWRmMTUxMTg4MDgxZDMxMjI5NmViM2ZlZjggYmNhbm5vbi1zYW5kYm94aW5nCis1MTAxMyA4MmI2NzU3ZmZmZjQ3NmI1NjE0NTc1ZTYyZjJlOWI0Yjc0MjU5MWI2IGxlZ2FjeS10cnVuaworNTEwMTggOTFjYTZlZWFlYjRhY2M1NjRlMGZhYWMzOWVhMTBiMjczM2I0ZTViMSBsZWdhY3ktdHJ1bmsKKzUxMDIwIGQzOWFlZTZjZGQzMmNmYWJkMWNiZGVhMmI2MTc3ZTJmMWQ2ZGJiNzggbGVnYWN5LXRydW5rCis1MTAyMSA1M2QwNTUyYTdhOGM1MDcxNTEzYmIxMDY3NWU5MjA5NmFjNDZhNTBmIGxlZ2FjeS10cnVuaworNTEwMjIgMjkxNWMwNzI5ZjBhOGNlNmQzMThiMzEzOTU2YzFmNTJjNGJjYjAwZiBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDIzIDdlMDMxODNlYjdhNTJhMWM5NGIwZGM1NzU0NzhmZTA1MGQ4YWQ4MDYgbGVnYWN5LXRydW5rCis1MTAyNSAxNTY3YzAxY2NhNzNmOWY2ODRlM2JmNjYwZmI5YTliMzY2ZTRhNTE4IGxlZ2FjeS10cnVuaworNTEwMjYgNDYzNzdiMDVlMTgxNTg5MTViNjQ3ODVlMWEwZTc5NmNkNmE4MWQ3ZSBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDI3IDJmMjIxYmRkOWY0NGI4ZjhjOTEzN2M3MDJlNjEzNGI1OWJmNDk4MWMgbGVnYWN5LXRydW5rCis1MTAyOCAyMzJkMTU2YmViODJmYzZhZDQyZTI4OTMwOGUwZTc2YWZmNTk1YzM3IGxlZ2FjeS10cnVuaworNTEwMjkgZDIwYjlhMmQ4ZWU3MzAyMDRiYTJhZGE3ZjE0ZDlkZmZkZWFlYTM5MSBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDMwIGNkODJlYmZjNjZhZmQ0NjRmNzRlZmUyMmI4M2JiMmFlYTg1ZGE3YTMgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAzMSBiZDUwYTQyYjdkZjBkMGE2ZWRmMTI1MWIyNzM4MmFiZWUyN2UzNmU3IGxlZ2FjeS10cnVuaworNTEwMzIgNGYxNWFiYjEyMGRjNTE2MzIzODViMGVkMDIxMDFjMjExMmUzY2ZiZSBsZWdhY3ktdHJ1bmsKKzUxMDMzIDdkNmI5NzE1ODE4MDVhNzUwYmVmNGY1YjQ1OTI1OTkwNmRiNDVkMDAgbGVnYWN5LXRydW5rCis1MTAzNCBmYTJkYWMzOTI2ZmZjMTU5ZGExMzk2ZDBhODA4MDUwZTRiMGUwODNiIGxlZ2FjeS10cnVuaworNTEwMzUgNTk3NjJlNzk2MjgxMmZhNzg2NGVkOTQyMWZlZDUyYTdiYTI1ZWM5YyBsZWdhY3ktdHJ1bmsKKzUxMDM2IDEyZmZlZDkyN2EzZDQ1ZDE5NTBhZGM1MGI2OWZmYjY2MDQ1YzE1ZDYgbGVnYWN5LXRydW5rCis1MTAzNyAzNDQzNjRiNDkyMDg1Njg4NjkzNmUxZWE1ZjhmNGY5MDNmZjFkNTRlIGxlZ2FjeS10cnVuaworNTEwMzggMDAzNTBjYmUwYTllOTQ4N2NiNmY2NTgwNWFmNWQ4OWViNTY4MjFjMSBsZWdhY3ktdHJ1bmsKKzUxMDM5IDg1ZmRjZGZjYTg1YzFjYmExYjk3YmVjNmZlMmNmZjhmMjVhMzI4YzYgbGVnYWN5LXRydW5rCis1MTA0MCA1ZjlmYTBiODYzYWVlODBmOTkyM2ZlZjVlMDhlMTQzZTQ2N2JhMjhjIGxlZ2FjeS10cnVuaworNTEwNDEgOGI5MzE3NGQ1MDFhNGNiOWI0ZTBkZDgwMWMzN2E0MDA2ODc4NTBjMSBsZWdhY3ktdHJ1bmsKKzUxMDQzIDFlYWQ0MTIyMWJkODgwZWMxOWFkMTI1OWIyOWYzYTA1NmE0ZDdkMmIgbGVnYWN5LXRydW5rCis1MTA0NSBjZTEwZTNjYzdhZWJlODlmMjRiNzQ3OGE1MDhiNzA4YzM2MDExNzlmIGxlZ2FjeS10cnVuaworNTEwNDYgODJmNTYyMDc2NTJmNjljYWIyYTljMjMwNjU1NjdlYzQwNzFlYzRkOCBsZWdhY3ktdHJ1bmsKKzUxMDQ5IGMwYWJiMTgyOTliNDQyZTExNjBkMmY5NThiY2UxOGY2Njg1MGNhYTkgbGVnYWN5LXRydW5rCis1MTA2NSBjZGNmMmJjYWQ2MjRlYThiYWM2MzY1NjNkZmI4MTkzMDA0NzQwYTdhIGJjYW5ub24tc2FuZGJveGluZworNTEwNjYgYzM4OThhNzNiMzg2MDc4NzUxMzdmM2YzN2RhOWQ3MWJiZDcyODg4ZiBsZWdhY3ktdHJ1bmsKKzUxMDc5IGVjNGYzNWQyYTY5M2NlMTk1MDJmMDZkNmFiNGY0YzViNWQxOGZlZjMgbGVnYWN5LXRydW5rCis1MTA4MCBiOTBhOGIwMzk1YmQ0M2ZkMTkzODQyNDUxZDBjNDk1NzNiNGQ3MTY2IGxlZ2FjeS10cnVuaworNTEwODEgOGVmM2Y4Y2Y5MGUxMjFhMGI0MGEwZTNmYjdjMzA4NmJjMGE5MTQ0MCBsZWdhY3ktdHJ1bmsKKzUxMDgyIDc1YmY3NzM2N2RhMzIwYjEyNTkzOTg5ZmU5MWViZWNmN2ViYjI0ZDkgbGVnYWN5LXRydW5rCis1MTA4MyA4Mjk2ZmI5NmNjMTg0ZjY0YTAwN2ZhNDVmNTZmODBlYjc3OTcxODBkIHJlbGVhc2UyNC1tYWludAorNTEwODQgNTVmODMwMTgzNTMyNmU2Y2JhYmZmMmE4Zjg3NzczMzljMGEyMDE1NyBsZWdhY3ktdHJ1bmsKKzUxMDg1IDg0OTc0YzY3NjkwMzFkMGY1N2FmY2U1ODE4N2Y3MjViN2I4NDQwYWEgbGVnYWN5LXRydW5rCis1MTA4NyA3N2NmMThiOGIxY2UxMzMwMGRjOWQxZjg3NGM1OGYwNDc3M2ViMzRjIGxlZ2FjeS10cnVuaworNTExMDQgMTAwNGExNmIwZjA5MWJiNzgzZjI4NDE5NTE5MTJiMGZiZWZhN2NhNCBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxMTA5IGViMjNkMDk2ZDY5NDY4OTUxOTQ3NmY2YWNjY2E4YWI2ZDEyMDIzZmUgbGVnYWN5LXRydW5rCis1MTExMCBhOWM3NDJkNmM4ODhlZTMzNTMxYmFkYmZlZTlmZDRkNzMxNzFmMTJjIGxlZ2FjeS10cnVuaworNTExMTEgMDIzODE2NmYwN2I3MDM1ZGM2NmEyNDBmMTIzYjY3NWQ2ZDUzYWQzMyBsZWdhY3ktdHJ1bmsKKzUxMTEyIDQwNTg1ZmIzODdiYmFhODIzOTkwNGE2MjdhM2FmNTQ5ZGU1ZTg2YTUgbGVnYWN5LXRydW5rCis1MTExMyA0NjVhMDc4ZDJjYTZiN2EzNmQ4OTEzZjM0NDgwMzI2Mjg0ZjdmZjMyIGxlZ2FjeS10cnVuaworNTExMTQgYWEwY2M3NTUwNzRlYjg5MTAxYzM2ZDVhNTAwNGE3YzA0NjQzNmE3YiBsZWdhY3ktdHJ1bmsKKzUxMTE1IGVmYTgwNjMzMzA5ZGE4NzQ1YzIzZGJjYzZjNzYzMTNiYTRjNDk3MTMgbGVnYWN5LXRydW5rCis1MTExNiA2NTY3YzMyYWI4ODE1NTBlMGUwYzE1MjNiMmQwYmRlNTlkMzQyNmVkIGxlZ2FjeS10cnVuaworNTExMTcgOTk5YTQ5MTRkNTNjYjQxZjdkZGZmMzQwYmU5MGVmNjE1YzZjMzNlZiByZWxlYXNlMjQtbWFpbnQKKzUxMTE4IGZmNGIxNTc4MDM5NjgzM2Y1YTk0ZGU5YTQ0NDBjNzQ5MDBlZmU3N2IgbGVnYWN5LXRydW5rCis1MTExOSA5Y2I0NTY1ZTYwY2FiNDMyMTFhYzQ1YmIwZGU1NGJhMDJkNWFmOGIwIGxlZ2FjeS10cnVuaworNTExMjMgZmU0NGRjYmUxM2YyYzI3N2JhYmIyYTQ5NjBlZGEyMGU4MDYyNjVlMSBsZWdhY3ktdHJ1bmsKKzUxMTI2IDNiZmVmM2RiMzJiMzkyYTRmNjBiMGYxZjM5Y2Y1YjJkNWE4YjEzMzUgbGVnYWN5LXRydW5rCis1MTEyNyA0MDQxNWRmNWJhOWRlNWViNjc0Yzc0ZGY3YWEzYjI2YTRlNDhkODRhIHJlbGVhc2UyNC1tYWludAorNTExMjggYjkwZmU0YWUzMDA4MzQ2MmQ3OWZlMjg2ZWFmNGFhOWYzYmRhYjhhMCBsZWdhY3ktdHJ1bmsKKzUxMTI5IDUwMDlkZTUwNGY5MjQwMjFhNDAzMmVkOTY3ZThmNGZlNjVlOTg1YmEgbGVnYWN5LXRydW5rCis1MTEzMCAyMTRlNGE0Mzg0ZjEyYjEyZjQyYWFiYTQ1MThkMDdjOTUyM2FlOTg5IHJlbGVhc2UyNC1tYWludAorNTExMzEgMmU2MzBiMmQ1YjQ0NjBlZDlhNjYyYzhhMDhkMzEwOTE4OTA0ZmUxNSBsZWdhY3ktdHJ1bmsKKzUxMTMyIDcyYTNmNzIzZWZkMTY5NzIwNDk2YjdhMjM1MzRjNWNlM2Y3MGIzOTcgcmVsZWFzZTI0LW1haW50Cis1MTEzMyBmYzEwMWNjMzU0YTc5ZmI2NTBkYTViMTU5YjI4N2E5M2I4MGIxZjljIGxlZ2FjeS10cnVuaworNTExMzQgYjdlYWIxYzE4ZTlkMzdiYzdlMzgzZmUxODJiN2QxMzE4OGU2OTAyNSBsZWdhY3ktdHJ1bmsKKzUxMTM1IDU5NDMyOTZhNTE4MjE1ZDcwMDM2N2I1MjJjYWZmMWUwYjAzZTc3MzAgcmVsZWFzZTI0LW1haW50Cis1MTEzNiBiNTAyNjhmNDZmZmY5YTc2MGYzMDVlOTE3NGVkODRkY2I3ZDhkMjAyIHJlbGVhc2UyNC1tYWludAorNTExMzcgMzM1MDQ3NGYzNDMzYzk5ZDJkZTBiZjQwMTJlMGY3ZTBmNjgwNDc3MyBsZWdhY3ktdHJ1bmsKKzUxMTM4IGY1YTdmNGRkOTNlMGQ4NzVkOGE2MzViNDJhZTc2NWE5ZDA3ODUxZGUgbGVnYWN5LXRydW5rCis1MTEzOSA5OTc3ODhkZTg2NjczMzBjZTlmMjJhMTZlOTA3OWYxYzRmMDNlYTgzIGxlZ2FjeS10cnVuaworNTExNDAgMjQ4NWVmNGM1ZDQ5ZDJiZTA5YjYzMzJmNmJmZjUyNzc3ZDM2MTA2MCBsZWdhY3ktdHJ1bmsKKzUxMTQxIDBiYzZjZmI2YjVmYjIxYWQxNTY4Y2ViODM0ZGZjNGMwMmRlNDk0MWEgcmVsZWFzZTI0LW1haW50Cis1MTE0NyA5ZWQ1NjBiMzUxMzk4MGQ0YzY0M2NiZTUzN2RkNWUwOWQ4OTI4ODU5IGxlZ2FjeS10cnVuaworNTExNDggMjkwYzU4MmEyMmQwNDM5ODIzNjE2ODU4ZjdjOTVlYjlkNzg1YzcyNSBsZWdhY3ktdHJ1bmsKKzUxMTQ5IGI2N2Y1MjJkNzZkNzhkODAwMjllNTU4YzczMzZlOTFmZjQ4ZTk2ODQgbGVnYWN5LXRydW5rCis1MTE1MCAxNGM3Njk0ODk1M2Q1YzVmN2M2NGQyMGUzMWE0YTM2MmM5NzFiNjEzIGxlZ2FjeS10cnVuaworNTExNTEgMmYwMzE2NDhlNTg3ODQ0OTdlZTI1YWEyMTkxMWIwM2U2ZGMyZDE3NiBsZWdhY3ktdHJ1bmsKKzUxMTUyIGQxNTQyNjBmNDZlOGY3ZDc3N2Q5ZWRhNGRmMzM1MjQ1YmVjMGE2NDIgcmVsZWFzZTI0LW1haW50Cis1MTE1MyA1NmMwZTJmNTk2ZTc2ZjFkMzBmMzNmMDFiZGMzNjI5MThjMGMwYTI4IGxlZ2FjeS10cnVuaworNTExNTQgOGRjNmJlM2UxMWUwMGE3Yzc2ZTFlYjg1NTM4MjJhZTk2MGI4YjQwZSByZWxlYXNlMjQtbWFpbnQKKzUxMTU1IGRlNDk3YzQxZTlhZGVmYzhiNmQ0NGNkMTFjZWVmMDVhOTYzNjFmYzcgbGVnYWN5LXRydW5rCis1MTE1NiA1NjkxNjI0MjY5YTVhNjA2NzZmYmE1YzVmNjg0MDBjMTdmMmRmYWRiIGxlZ2FjeS10cnVuaworNTExNTggOWQwODlhYTU4ZTJmNGI1Y2U0Y2FkOWM0ZjUxZDM5MWMzYzJhYjY1YyBsZWdhY3ktdHJ1bmsKKzUxMTU5IDgwMjI5MjdjMTdhODQ2NDY4NWRlNTJmYjY0YWYwYjMyMzU0NWI5ODQgcmVsZWFzZTI0LW1haW50Cis1MTE2MCA1Yjk2OTJmNjYyOWY0MDdhZGU5NGM5Yjc4ODNlYWYwYzhmMDYwMWVmIGxlZ2FjeS10cnVuaworNTExNjggNmY3NzUxOGI2MzdkYjNiOGZmOWZlMDkxYjNlZjM5YjU3OTk2MDg2MyBsZWdhY3ktdHJ1bmsKKzUxMTY5IGI5NWI5ZjQxNTdhODIyMTMzMDEyMThmNTVkNGZkYjc2MzUwMjk4ZGUgbGVnYWN5LXRydW5rCis1MTE3MCA1YzNkNDkzODU4MTZkNzA2ZjdhMjJkOTdhNTA4ODhhZmI5YWNlYmU3IGxlZ2FjeS10cnVuaworNTExNzEgMTk5Mzg4YjQ2YzgzYTAwYmVkMmYxOGZmNmIxMGZmYzBiOTY0MmJlZiBsZWdhY3ktdHJ1bmsKKzUxMTcyIDlhODA4MWNmNGE3MGRhYjQ2YmEwZjEwNjMxMGNjMjE5MGNiYjlkMzcgbGVnYWN5LXRydW5rCis1MTE3MyAwZjNhZDViOTM2YTg1NzJiZmU3YzA3ZDhlMzc1Mzg2NzNmMjI4Nzg0IGxlZ2FjeS10cnVuaworNTExNzggNzRkMjNjZDA0NDIxMDRmZjk3NWI4NWUxYjc0ZjVlNGVhMjNkNmUyYiBsZWdhY3ktdHJ1bmsKKzUxMTgwIDdkNmIyZTA0ZTQzOTU0MDYwMGU5ODU5MGEyODMxYWQ4NTlmMjg4MTAgbGVnYWN5LXRydW5rCis1MTE4MSBmZWVlNjU4MjAxMWYxNzc2YTZlMWRlODk1ZmIzMmIzZWU5MGQ3Y2E1IGxlZ2FjeS10cnVuaworNTExODIgOTIyMmQwZGFhYjNjNmFlZGViMDFhOTQ3NTE0NzI1MjdmODYxMDU0YiBsZWdhY3ktdHJ1bmsKKzUxMTgzIDE1NmIyOGYwZjJkMzVhYzAwZTgyYzYzZDJhMTQwMTgyYzljN2VjNzYgbGVnYWN5LXRydW5rCis1MTE4NCBkZGVhNGQzN2M4M2NhNDUxYzMwNzljYWQ4NTVkMDRlNTg5YjgzMWU5IGxlZ2FjeS10cnVuaworNTExODUgYjhlMzdlMDI2OGYyY2FjMDQyZDkyZDE2MjAxNmE0M2MxMzhmNDg2MSBsZWdhY3ktdHJ1bmsKKzUxMTg2IDI2YTZiZWRkMTdlMjFkYjEwNjk3MzZkZTMyNTI1NjZjNTZkZTNjY2QgbGVnYWN5LXRydW5rCis1MTE4NyAzYzJiZjc5NTI2YmU4OTgxNGNkMDIxNzEwNDAzNDE4NzhiYmQzZjU4IGxlZ2FjeS10cnVuaworNTExODkgZDhmYTgxMGNmZDU0ZGZkOGYyN2VlYTNiYzIyYTE1MThkMDNiMDFjMCBsZWdhY3ktdHJ1bmsKKzUxMTkwIDlmMDg1MTZhNGQwYzllOTlkN2Y0YmQ0ZTQ3OTIyMTNlMjJhODgzYTEgbGVnYWN5LXRydW5rCis1MTE5MSBlYWQ0OGE4MjIyOTVjODNlMWYxZTgxNDFjNzliYmVhYWFjMjcwYzVjIGxlZ2FjeS10cnVuaworNTExOTIgZTU1ZjZkNzIyNDA0ZmE5MmIyYTQzYzcyZmYyMTMyN2Q3YTQ3MTRiMiBsZWdhY3ktdHJ1bmsKKzUxMTk0IDliMzI2MGQ4MzU1ODc5NWQxYTFkMzFkYjk1ODgxYjYyNjdlZWNlYWQgbGVnYWN5LXRydW5rCis1MTE5NSBkZTllMWE1ZGNhOTM2NjFhNzAxMGU3NzYwMTE4N2I3NjlkOTczYjk4IGxlZ2FjeS10cnVuaworNTExOTYgOGVkNjJkYjE5MDVjNGQzZTM4Yjc1YWY3MWI1ZDkxMzk1M2YxNzdmZSBsZWdhY3ktdHJ1bmsKKzUxMTk3IDJhY2E0ZjA0MDAxMmNlYjA4YWNmMDVjZTlhN2RjMmIzODY1MjM3MzkgbGVnYWN5LXRydW5rCis1MTE5OCBiZTEwN2IwNGMyNTI1YjZiODExMmEyMWJhNjU0MTJkZjMwMDAwNTA5IGxlZ2FjeS10cnVuaworNTExOTkgNmFhZjU1ZjRkN2EzYjZkMzVmZDkxMzcwNTNkMzk1YmFhODQyNDk1MSBsZWdhY3ktdHJ1bmsKKzUxMjAyIDZhYjRjMzlmZDdhMzgzZmQ5ZDk0MmZjZDhmOWI3YmU4ODQ1ODYwN2QgbGVnYWN5LXRydW5rCis1MTIwNCA4NjQxNzI1MTVlZTc2YTNiNDVkZjE0OGY2NjgyZTljMzkzMDNiOGY0IHJlbGVhc2UyNC1tYWludAorNTEyMDUgNDhmZDM4ODczNDYzNmRhMWFkMDIzYmU4ODRjMzQ0YWFhNjEzYzM0MiBsZWdhY3ktdHJ1bmsKKzUxMjA2IDEwODdkZjAwYTZlODdiOTFkNjY3ODcyNTJjZDVhNmJkZTAwZWFjMDEgbGVnYWN5LXRydW5rCis1MTIwNyBlNzc4NzU3ZDMzMzA3MjAxNDVlNzRmZGM1ZGIwM2UyYTk1ZmFhMDA1IHJlbGVhc2UyNC1tYWludAorNTEyMDggNzc5MGNkMGNhYmQwNGM5ZDExZDdlODU2ZmIzNjVlN2NjODA0ZWI5NCByZWxlYXNlMjQtbWFpbnQKKzUxMjExIDY1NGMzODBjZjhiOWYwNzkxNTZlMzIxMTFkMTYyYWQ4MDNjODkzMTkgcDN5aworNTEyMTIgZjY5YmUzYzZhMmQ0NjM2NDliYzU2ODQ2OTI4ODI5NDhhMDZjOTQ1NiBsZWdhY3ktdHJ1bmsKKzUxMjE1IGI5OTVlMjc2MGRhNDcyYzNiNTkwZDM2OTNiOGZkNjU2OTE0NzM0ZTIgbGVnYWN5LXRydW5rCis1MTIxOCBlMTFjYWFkN2UwMjlkYzkwYjhhN2QzYjg2OTRjODJkOTQ3NTFkODM0IGxlZ2FjeS10cnVuaworNTEyMTkgOWYzOTA4ODJhMmMzYTUxZTA4N2QxYzkxNThkOTIwODc4OTRjNmFlMCBsZWdhY3ktdHJ1bmsKKzUxMjIwIDcxYjBhYzgwYTEzNWUzZTJiYWNhMzYxMmIyMzFiNzZlNjljZWM3OTYgbGVnYWN5LXRydW5rCis1MTIyMSAyMTc5ZDlmMTQyNzgxNzNiZTk1ZGFiM2RlMGJhZWM3MDVlN2I3YjYzIGxlZ2FjeS10cnVuaworNTEyMjIgODQyYmQ2MTM0ZTlkMjFhMDEzZGE3ZjU5MTNjNWI2ZTU1ODgxMmJmYyBsZWdhY3ktdHJ1bmsKKzUxMjIzIGE4MGRmNTMzMDZmMGRjZmY3OWRjMThkMTk2YWJkYjg4NjM5N2RlYzcgbGVnYWN5LXRydW5rCis1MTIyNCA2ZDUzNmQ0M2MxYTA2NTRjNDY2NDE5OTM0MGVhZTNiNTNmMDFhNzBkIGxlZ2FjeS10cnVuaworNTEyMjUgODFjNmIwZWQzMTg4ZGRjYzI5ZDIxZTA3Y2Y2MzZkZjc0ZjIxNmQwOCBsZWdhY3ktdHJ1bmsKKzUxMjI2IDI3ZjliNGZlZTE0ZjdiNjgwOGM3YWYyNmEwNGZiMmJlZDljZjY3MWEgbGVnYWN5LXRydW5rCis1MTIyNyA5YTEyODhkODIwMGY4Y2IzY2UyMjBhNmYyZDc5ZDg4YWEyZDI3NjQyIGxlZ2FjeS10cnVuaworNTEyMjggZWQ2NTc2NWViNjc5YjUwMzMxNjRmMGI0Y2IxNDJhYjlhNTIwNjMwNiBsZWdhY3ktdHJ1bmsKKzUxMjI5IDZhOGYwMTY2MGEzYjJkZTRmMDhiYjIyYzUzYzYzMmI3MmJlMzQ4NjkgbGVnYWN5LXRydW5rCis1MTIzMCA4YjkxZmY2OThmNGZmMmYzZGY1NTZiZTUyMWQxMjAxYmQ2NGQ4YzhjIGxlZ2FjeS10cnVuaworNTEyMzEgZGViNzQ4ZjMzYzFkYjUyZWIwODRmMmJhZTNlYzNkMWNkYzRiOGQ3ZiBsZWdhY3ktdHJ1bmsKKzUxMjMyIGNlMTFjNmMxOTM5ZGI2ODRmMzA2N2VhNjQ0YjZkNDdiYzkxZTQ1ZGEgbGVnYWN5LXRydW5rCis1MTIzMyAxNTEwODY2YzkyMGViODJlNjI3NzNiNWIwOGI3NTFjMTg4MWMzZTUzIGxlZ2FjeS10cnVuaworNTEyMzQgMmRiYWQ1M2RlMmIxMjcxN2MwNzkwYmM2NDFiMDM0N2JiZmVmMWE1MSBsZWdhY3ktdHJ1bmsKKzUxMjM1IDY4YmVkNTM0ODQ1NDAyM2NjZWJiNDAyZjViMzcwNWNlODI5MzdhMWUgbGVnYWN5LXRydW5rCis1MTIzNiA2Y2FmZGM4MWNmZGU4Njk4ZTZiODNlNjgyZmEyNGEyNjk4ZjYyMWY4IGxlZ2FjeS10cnVuaworNTEyMzggNDhmMWRiYzU3ODQ1MDYxZmFhNTBhNWMyMzJlYzUzYWIxNjUyZTM2NCBsZWdhY3ktdHJ1bmsKKzUxMjQwIGVjZTk3Y2ZlNjA4MzdiMTc4NmVkZjkzNzJmOWUyZDljN2YyY2ExMGMgbGVnYWN5LXRydW5rCis1MTI0NSBjN2ZmMDJjMTU1OWZkODY2Y2MwODdhYWMwNjU4NDliMWNjYTAzZmJmIGxlZ2FjeS10cnVuaworNTEyNDYgM2JlNjYyNzMyM2I5ZDNhMDVlYTcwZTEzZDhmNmMxYTJhMjJlMWRlYiBsZWdhY3ktdHJ1bmsKKzUxMjQ3IDU3NDgyMTc2ZTEwMTE2NjNlM2ZjNTA5MjNjNDRiMzg4ZGQ4YmY5YjggbGVnYWN5LXRydW5rCis1MTI0OCA3MWJhYTA2NzY3ZGRjMjlmN2Q2OTExZmE5YzZlNTQ1ZmVhNzY3MGI5IGxlZ2FjeS10cnVuaworNTEyNTAgZGFlZGFhY2Y3ZTExMGEzY2QxYTIzNjY4OTAxNDliNzMyYjFjMWNjYyBsZWdhY3ktdHJ1bmsKKzUxMjUxIDUzMWIzNjRiYmMwZTBkODE1Y2ZlZWMyMmYwOWUyODE2M2M0N2QxOGUgbGVnYWN5LXRydW5rCis1MTI1MiA4MTU4YjRlMGM3YjliNWMzYjdkMWI5OTBhNzM0OWZmODdkMGQxZGZlIGxlZ2FjeS10cnVuaworNTEyNTMgYmM3NGFmYjhlNGVmNjFkNDhiZDhmMTlkYjU2NmZkNjI5YjhlNzI0MSBsZWdhY3ktdHJ1bmsKKzUxMjU0IDI0ZDJjYzMzMDAwY2IxODVmNTFlZjM1ZTNhZDRkMTNjN2YwODk2MjAgbGVnYWN5LXRydW5rCis1MTI1NSAyNDlhNTlhY2I2ZWZjZjAyMDRmMDk2OWU3NmY1NjU2ZDRiM2RiNGMxIGxlZ2FjeS10cnVuaworNTEyNTYgNzEyMzFiYzQ4NjIyZTM2ZGVlMzYwMTE3ZmMyMTI3OTVkNDA5NDNiYSBsZWdhY3ktdHJ1bmsKKzUxMjU4IDAzNTZkZDljYzI3NDM5NjE4NmM1ODUzYWRiYjc2ZTE3NmE0N2YwYzQgbGVnYWN5LXRydW5rCis1MTI1OSAzMTc2MDVmMmNmNmY5OWUxZDE2ZDViMDlkN2ZlZTY0Y2EyMjU0MjE5IGxlZ2FjeS10cnVuaworNTEyNjAgZDUyMzFlYzZkYWMzOTlkMzMwZDM5YjIzYTJiZDU3ODhiMWQ2MWZkNSByZWxlYXNlMjQtbWFpbnQKKzUxMjYxIGU3NzAxYjA1ZmQ5ZTIzZmQyNDA0NzRkZjk5MjVmNzA2NzIwNjRiZmMgbGVnYWN5LXRydW5rCis1MTI2MiBkZjk0NzhiZTA2Mjc5YTA0N2ExZGEzYTY1NTk3NmU1YWFkMjgyNDNmIGxlZ2FjeS10cnVuaworNTEyNjMgOGMxNmNiZWY3OTMyNjM1NzAyMGVhZWU2Y2RmMWY2MTExYjAyMTExNyBsZWdhY3ktdHJ1bmsKKzUxMjY0IGFiODUzOWMwN2IxYjNjNmU5MjgzYjVlOGU2NzkxZWExZmU2ZTNiYzkgbGVnYWN5LXRydW5rCis1MTI2NSBjMGE1OGE4NTVhYzBlMzgxMzZhNTg4ZTc1MTg2ZDljMzAwMTM0MDExIGxlZ2FjeS10cnVuaworNTEyNjYgNDIxODI2Yzk0MTA0ZjEzYWZmNzRjOTA3ZDE1ZThjZDU1ZjFmMzA5MyBsZWdhY3ktdHJ1bmsKKzUxMjc0IGE2YTZkZmYxNzkzNTZlMjk4MWZiNTUyZjM5MmU0NDRlYzUzNzQxNDEgbGVnYWN5LXRydW5rCis1MTI3NiA2MzViMDliMWY1NDJlMjkxNzUyOTc2ZTNkOTdmMTJlYzBiZmU2NmYyIGxlZ2FjeS10cnVuaworNTEyNzcgYTU1MzY5ZTIzZjA2OTRhNWU3OTMzZTIwMDBlYWEzZmI2Y2UxN2Q2MyBsZWdhY3ktdHJ1bmsKKzUxMjc4IDRlNWI4M2JhN2MyYTZhZjljYTAxYmNmODM1MzI1MGNiMTVlNjQ1ZjggbGVnYWN5LXRydW5rCis1MTI3OSA2NGZiNjhkY2E4OTY0OGI1OWQwMTYzNzE4MzFlYTgyMDMyMGI5NjM2IGxlZ2FjeS10cnVuaworNTEyODAgMjMxMmUxNzhiMzRkOTc5ODhjZmQ2ZTViZGQ2NTg0ZDg5YzgzZTFiMCBsZWdhY3ktdHJ1bmsKKzUxMjgxIDI1NGExODY5MzdhOWI0OTllOTcxODJlMzdjN2JlY2I0N2Q3OTNjY2UgbGVnYWN5LXRydW5rCis1MTI4MiAxNjBiODNjNzFkN2EwYWM5NjA3YjhjOWEwOTYzNjY0NTM1ODdhZTIxIGxlZ2FjeS10cnVuaworNTEyODMgYTk1MDkwMjgxMDMyMTIxYTAwMmU3NmY0MWE2YmE1N2FkYjcyMmJhZiBsZWdhY3ktdHJ1bmsKKzUxMjg0IDE0ZWM5Y2ZkOTc2MDBlMjYxNDY2NjQxMWZjM2FkNmI3ZjY1NjA2NzkgbGVnYWN5LXRydW5rCis1MTI4NSAzNTJmZmU3N2I3MWRkMGU3Y2E4ZjY2N2E5ZTZhMjA4NmRhYTNiMDYwIGxlZ2FjeS10cnVuaworNTEyODYgZWExZjhhMTFhNzJiOWEyYTAwMGEyNTQ0Zjg3YzExZjdjNmUzNDAxNSByZWxlYXNlMjQtbWFpbnQKKzUxMjg3IDlkNjRiZDc0ODMyMGFkYjQwYzdlMDNiYWI5MDRmYzA4NTRhYWYwOWIgbGVnYWN5LXRydW5rCis1MTI4OCBjZDY3ZTExMWUxYjg1YjdlMTVlYjFiZTRmNTlkMTk0NzMzOTZhMWM1IHJlbGVhc2UyNC1tYWludAorNTEyODkgMjA3ZTQ4N2Y0MjVkZmU0MWM2MTk5MDllNmFkOGRmMDllMTU1ZTkzNyBsZWdhY3ktdHJ1bmsKKzUxMjkwIGU4YzQ2Y2M5OWRmNWVkZDJiNTMyMzNhODgzMTQyZjk4ZjVkMmVlMzcgbGVnYWN5LXRydW5rCis1MTI5MSA3OTliY2YwY2NiZmQzMTNmZjU5NzI3YjZhYTk3Y2UwZTZhZGNiZjcwIGxlZ2FjeS10cnVuaworNTEyOTIgMTQ5ZGU3MjU2ODY0Y2Y5MjAwZDk3MjMyYjZmMjNkYzlkNWQ3OGQ5MSBsZWdhY3ktdHJ1bmsKKzUxMjkzIDg0Njc4ZjA3NTBiODQ0ODA0NzA4ZTRmMGQ3NGZkMjFkNWRkNGE5YzkgbGVnYWN5LXRydW5rCis1MTI5NSBlOTBlN2U3NjhjYjM1MjdhYmYyMGI0YjExODdkNDg2MWY3NzQxZjQ4IGxlZ2FjeS10cnVuaworNTEyOTYgZTZmYzRmOTlhNjFiZTE5YWFiN2EzZWJjMWQ5MmMxYmYzMThlYWU5ZCBsZWdhY3ktdHJ1bmsKKzUxMjk4IDRmOTBjMWQ1MzBkOTVjOWM5MDY4Mjk4ZDA5YjIxYzhhNjhjZTVlYjcgbGVnYWN5LXRydW5rCis1MTMwMCA2NGIzMzA2MGVmMDlkNWE0NzBmNDI2NzBhNTM2NzEzMDA2YzlkNGNkIGxlZ2FjeS10cnVuaworNTEzMDEgYmY1YmFlMWYwMGFkNDg1ZTQzMjBlMjk1NTg0M2FhMTA4NjgxYmIwYiBiY2Fubm9uLW9iamNhcAorNTEzMDIgYmU5MGZhN2FhY2RhNzljYzczZGRkZGZjM2FiYTIwOTg5ZTI5Mzc1ZiBiY2Fubm9uLW9iamNhcAorNTEzMDMgOTVmNjU2NjkwYTAwMDg4OWNiNzQ0NGI4YWM3YzM0ODAxMGY3MWFlNyBsZWdhY3ktdHJ1bmsKKzUxMzA0IDIwN2U3N2MxNDMzMDY0YjZjY2UyNzFlYTA2YTY2NDM4Mzk5NjZmMWQgbGVnYWN5LXRydW5rCis1MTMwNSA5MDk3ZWNmZWIzNDUwYzAzYjVhMGE0ODVmM2I5ZTdjNmEwNjcyMGYxIGxlZ2FjeS10cnVuaworNTEzMDYgNmU3YjNkZDU4Zjk4NzEwM2JjNzVjZjE2NDAwOTdlNzJlNjM0NmE0YyBsZWdhY3ktdHJ1bmsKKzUxMzA3IDkxMzMwNzZjMGJmOTcxZTk2YmVkYzJlNGU4OTU4ZGY5M2NiOTI2NmUgbGVnYWN5LXRydW5rCis1MTMwOCAyZGZlMWM2MjQzOTdhNGRhMTYyNjY5NDUyODAxYTFhNjg5OTFlOTA4IGxlZ2FjeS10cnVuaworNTEzMDkgMzcxYjljZDNhZjE1NjAyOTVkMDNkYzU3ZWU0NGUyMmM4NWZhNmZhMSBsZWdhY3ktdHJ1bmsKKzUxMzEwIDc5OGJlY2FiMzkwM2M0YWM5ZWU0MjkwOWJhNzc5ODY0NzkxOWY4N2QgbGVnYWN5LXRydW5rCis1MTMxMSAyNGNhYjIyOGIwMzk2YjcwMDI1Y2I5NzM5NDI0ZDc2NDMwMzQzZDlkIGxlZ2FjeS10cnVuaworNTEzMTIgYjUwNzNiNDhjOTI1ZjFhOTc2MzAzNjIzYjQ3ZTI0MmVmNzM4MTM1YSBsZWdhY3ktdHJ1bmsKKzUxMzEzIGRhNGJlMDQwOGI2MjU3Mjk2YTY4NzRkZmU1ZTEyYjVmZjM0YTE3M2QgbGVnYWN5LXRydW5rCis1MTMxNCBhMjdiZDUwZWIwZmQ4N2IwY2UzOTA2YmZiNGU1OTA2MjdkOGZkY2IxIGxlZ2FjeS10cnVuaworNTEzMTUgYzhjZTM5OTQ1ZGY1Zjg3NTc5YjBiNjljMjMzZTBkYWQwZDQzZGE2YSBsZWdhY3ktdHJ1bmsKKzUxMzE2IGE1ZDBmOWZiY2JmNGI4MjQyNWQwMjUwY2QwNTkzZWYxZjc5YWY1NDQgbGVnYWN5LXRydW5rCis1MTMxNyBkMjNiNjY3ZjA0ZGEyYmUxZTZjMTc3NmRlYWVhMjE1NGFhNTY0Y2MyIGxlZ2FjeS10cnVuaworNTEzMTggNGJiMzRlYjQ4NzM2NzQ3MGQ0Y2YyNmQyZTkyMzdhYTVlOWI5YzVlZSBsZWdhY3ktdHJ1bmsKKzUxMzE5IDEzNTg0MDRkNmRkOWVlOTQ1MmZjYzI5NDhmYzFhOWI3YzNhY2FkZjMgbGVnYWN5LXRydW5rCis1MTMyMCBmZmU3ZDNhYjM1YTgzNzBkMTYzMDAzMjIyMmM0OTA0Mjc3YjI5NjhhIGxlZ2FjeS10cnVuaworNTEzMjEgZmU4MGJiMTAyYWI2ZDUxZTBmOTRlZmUwNWVlNDUyMTI4NDFhNmY4YyBsZWdhY3ktdHJ1bmsKKzUxMzIyIGQ4MjIxODU1NDg5NzFhYjdmODA4MzMzMjYxNTM4NzkwM2I3N2FmNTEgbGVnYWN5LXRydW5rCis1MTMyNCBlZGQ4M2YxNjI0NTNhYTMwODg4YTY1N2U0MzJiYTZmMjQwZmE3OTU5IGxlZ2FjeS10cnVuaworNTEzMjggYWFmZTFhZDczZWQ3NDliZmZhNjNmZWE4YmIyYzdmNWEyMjhmM2Y0NyBsZWdhY3ktdHJ1bmsKKzUxMzI5IGQ5NjYwZjUxYjA1NmI3NGY3NTRiZWRhMmQxNzU0NDU4ZmE3MzM3OGMgbGVnYWN5LXRydW5rCis1MTMzMCBhNmFmZTBlZGE3MTFkOTk2YjcyNmE1NDhjMDU3OTNlYzU1YjZlOGViIGxlZ2FjeS10cnVuaworNTEzMzMgMmRjNjRkNTcwZThkN2E0NDk4YWI4NTAxMDhjODU3MDljMjc2ZGY5MyByZWxlYXNlMjUtbWFpbnQKKzUxMzM0IGEzNThhZjIxYTU0YTliZDM5ZjUwNmQ3MjkxZGYzNDM4NzlkMTdhODAgcmVsZWFzZTI1LW1haW50Cis1MTMzNSA4ZTg4ZWNiZDQwOGJmYzljZDBiZmQzNTYxZDc2ZGRlZmE0ZjdmZjQ4IHAzeWsKKzUxMzM2IDhmNWI5OTgyYmViYTA0OGI0YmU1NmIwNmI4N2RiZjEzZGYzYzY4OTggcDN5aworNTEzMzcgZTRhNjQyOWMxMjE0ZWRlOTExY2FhNTVmMGQ4MDYwMDU4NDY5YzAzZiBwM3lrCis1MTMzOCA4NDFlMGM4NmUwMGU0MjNmODE3MDkyZTJmZjVjZGFmYTRiODEwMTQxIHAzeWsKKzUxMzM5IGNiNjczZWQ1MDdhNzk0MDI1YmViNGEzN2FmODdkZWYxNmRkMzgwYWMgcDN5aworNTEzNDAgYjJmZTM2YmFjM2ExNjQ0ZTI1YmQ1ZDg2YThkMTQxNTdkNTczMmJhZSByZWxlYXNlMjUtbWFpbnQKKzUxMzQxIDFhNjg5YmUyNzMyOTczMjRjM2ZhM2RkNWQwYjgwOTlmYTUwY2U5ZTYgcmVsZWFzZTI1LW1haW50Cis1MTM0MiBlZGIxNjIxMDA5NzliODc5MjdiZGZlZDE1OGNlYmI5NjQ0ZTA1N2JlIGxlZ2FjeS10cnVuaworNTEzNDMgOWJjMGJjMGFkMWJmZTZjOTA5NmU3YjFjYzJmNDc4Y2E5YTIyYzU4MyBwM3lrCis1MTM0NCAwMTAzNDAxOGU4YjJmODBkOGZkNWM4Mjk4OGQyMzgyYWEzZGZiMzBiIHAzeWsKKzUxMzQ1IDRhYmI0NmRkMmI2MDdmOWVhYTlkYWQ1Njc2ZWFjODkzNzY2OTQ0N2QgcDN5aworNTEzNDYgMWVkZGUyMzQ5Zjc4NDY2ZmJjMDA5YzQxNzIzODY3M2MyODI4N2RlYiBwM3lrCis1MTM0NyBmNjgyNjllZDQ2MWU1ZDYyMDk4YTMyOTUxN2Y1ODk4ZTk1NTYwZDU0IHAzeWsKKzUxMzQ4IDY3ZTQ1NzA0YzA3ZWE1YTA0YWYwZTdiMWJkYTAyZGQ4MTdkZTEzMTMgcDN5aworNTEzNDkgMzAyMmNkNWUwMTAwNDRjM2JhZDFkNmI4MDAwYTAxNTNjNjNlYjRlZiBwM3lrCis1MTM1MCA1YjZmODIxMDFjNDA1YjE3NTZkYzgwMmZmMjIxNTM5NGJlYTgwZjE2IHAzeWsKKzUxMzUxIGE4YmIxYWQ3ZmM2ZmFkYzkxNDRmNjE3MjJjMDg2MDYxMDE4YjMyZDcgcDN5aworNTEzNTIgMGExZjg3YTg1NWIzZTYxNWI3Yzk4MjJhZWUwYzI0NzEwZGM2NjBkMSBwM3lrCis1MTM1MyBmYTI3NTg0NTg2NmM4YTdkNWU1ZTliMGZlNzIzNDc0YTUwNTVkOWU5IHJlbGVhc2UyNS1tYWludAorNTEzNTQgYTg3MzIwZWJkMGU2Njg5NjRiZThhNzQ1Mzk1MzBmODZiNDAxN2ZhNiBsZWdhY3ktdHJ1bmsKKzUxMzU1IDFmZjkzYmE0MDQ1MDg4MzcwZGRmMDRkNGYyM2UzZjYzYzk5YWIzNjQgbGVnYWN5LXRydW5rCis1MTM1NiAzMWI5YTRiNDI1MjhlY2ZhNTFmYTJjZDZiNTBlYjYwYWFiOGY1YzcwIGxlZ2FjeS10cnVuaworNTEzNTcgZGY4N2I2MDU2N2NlYjUyNGFiOWEyMzM0ZTY5MGIzZGNmZTNmZWI4ZCBsZWdhY3ktdHJ1bmsKKzUxMzU4IDA0NWUyMGZmODllYmI3MDkzMjE0MTI3YzY1ZDczMjMwODQwYjA5MDkgbGVnYWN5LXRydW5rCis1MTM1OSA4OWI3MzBiNzE0MzRmOWNlYTQ4NDhhYmM4NjZjYzhlODNjOGNkNGZiIGxlZ2FjeS10cnVuaworNTEzNjAgMjEwYzViNTU3NWNiNWNhMDFkMWEwMmM5YjY5NGRjYmViNmFhYWM3NCBsZWdhY3ktdHJ1bmsKKzUxMzYyIGI1ZDRmM2E3M2RlMDRmNzBlNzVhNTNkZjE3ODRiODdlOWRhMmU1NmIgbGVnYWN5LXRydW5rCis1MTM2MyBmM2RlZTYyNWZjNDgzYTYzZGZlNWY0N2Q1Mzg4MzgyMjAyY2NhYmYxIHJlbGVhc2UyNC1tYWludAorNTEzNjQgNGM2Zjc3YjU2NDUyZDZhNDhjZjJhZWNiNTkwM2NmZDg0N2RmNmQ0MCBsZWdhY3ktdHJ1bmsKKzUxMzY1IGNhNzdkZTM1ZGI2MjBhMTc1MDdkZDczOTBjMzkxOGFhODc2MjdjNDMgcmVsZWFzZTI1LW1haW50Cis1MTM2NiA3ZmI1NmFhZjUyYmJjZWE1NWMyM2E1ZjcxOTMwMTg4NTJkMzc5MzZlIGxlZ2FjeS10cnVuaworNTEzNjcgYjg3ZmUxMWZiN2UyOGFlMjkzZWY4YmRhNmVmOGQ3MTUyODg3ZTUxYiBsZWdhY3ktdHJ1bmsKKzUxMzY4IDBhZDdlODVjOGMwNGU4YTY3ZDcxNTY3ZTY3YzllN2EzNDkzOGZiN2UgbGVnYWN5LXRydW5rCis1MTM2OSA3OWJiZmExZGJkMWJiMGM2YTFmYmFmZjA3MTIwYjU5NDg3MjExMjk3IHJlbGVhc2UyNC1tYWludAorNTEzNzAgMWFjMTRkNDNlYzY0NDFlNmNiMjIwYjMxOGYyOTg2NzM5ODA4Nzg5ZCByZWxlYXNlMjUtbWFpbnQKKzUxMzc2IGM0ZTdiNDA3MGYwNzU0N2ZkYjEzNGQ1ZTZjYjk1M2IzMjY5Y2U4YWMgcmVsZWFzZTI1LW1haW50Cis1MTM3NyBlN2E1YjI4N2YyN2MxYTllZTkwMWQ1MjExMTg4NDU2YTI2ODVlNDAyIHJlbGVhc2UyNC1tYWludAorNTEzNzggY2JiNDM1YzVjMjFjNjcwM2YxOTcwMzhlNzQ3ZjUxNDg5N2Q5YzM4YSBsZWdhY3ktdHJ1bmsKKzUxMzc5IGRlNGVmMTc3Mjc4YmZmODU3ZjcxMTYzZDQ3MGUxZDdmMDU4MWJlOWQgbGVnYWN5LXRydW5rCis1MTM4OCAyNTUxZWI1NjcxYTQxZDhhNDZiNjgxM2ZmMTQ4OTNhOTQxOTE5ODk4IHAzeWsKKzUxMzkwIDYzMjM3ZmNlZmQ5OWVlNGY2NzU3MjJkNWMyNzEwNjU5YWE1ZGQ4Y2IgcDN5aworNTEzOTEgY2ZiMzg0NzNjYTExOTlkOTgzMmIzYWViYzIzNTRhZDYxMTRhYWEwOCBiY2Fubm9uLW9iamNhcAorNTEzOTIgODQ1MmQ1ZWU3YjAzYmMyZWMwNjQ5MDA2NjA4YmQxNDZjMDk0NTc3NCBiY2Fubm9uLW9iamNhcAorNTEzOTMgNGM2NzRhMDdiMjNjMzYwZmY5YjE4OGM4MWFmYWZmZWZhYjVjOWViMiBiY2Fubm9uLW9iamNhcAorNTEzOTQgZDIzYjdjYjE3MDBiNTBlZGFiZDQ1ZDBhZGVmODNhYWY0MzYyMTUwMyBwM3lrCis1MTM5NSAwYjVkOGVhZTNlY2EwNjFiN2ViZGU2MmJhM2E4MDNkNmJmMzg3Y2U3IHAzeWsKKzUxMzk2IGM1NTdkNDQ3NGYwZjRmMDdmOWIwZWMyYWU3OWQ1ODJjMmQ4Njk1ZTYgcDN5aworNTEzOTcgM2ViZjU2MDRmNjMyMGU1YjFlZTJhMzY0NDI5NTM5MWQxZGNkY2I2ZCByZWxlYXNlMjUtbWFpbnQKKzUxMzk4IGI4OGI2OWY5N2FjYzAwNjFhYWNkM2E2OGIyMDk2ZGIzNmQ1ZDEyZWYgcmVsZWFzZTI1LW1haW50Cis1MTM5OSA3Y2JjYjIyYzhiOGIyYzhhNGI2MzYwYTA1YTJiNzQ5MzQwNzBhNWUwIHJlbGVhc2UyNS1tYWludAorNTE0MDAgYTc0NWEyYmQ0OGFmMGI5NGIxZmNjZWQwNDVmNDhmMDA1NjhhYmU4YyBsZWdhY3ktdHJ1bmsKKzUxNDAxIDBhZjRmZmFiYTAzYzMyYjRjYTRjMDRmYTljMmUzMjRjN2Q0NmFlNmQgbGVnYWN5LXRydW5rCis1MTQwMiA4N2QxNTNmZmJiOThiNWE4M2I1ZTY4Y2YyMjBlN2JkNzZmMjBhNTIzIGxlZ2FjeS10cnVuaworNTE0MDMgYjBlMGE1ZWI5MDlmMTk3OWJhMTE0NTAxOGRjOTUzYjhkMzFkODZiOSBsZWdhY3ktdHJ1bmsKKzUxNDA0IDJjNDAyNjc2OTk0NTQ5OTA3Y2Y4MWM1ZjIyZDgyYTQ5YTNiOTM4YjYgbGVnYWN5LXRydW5rCis1MTQwNSBiYmVmMmVjZGVlMzNlYmI4MTkwMzMyMDk1ZjhkYTk0N2QzYzA2MzQ3IHJlbGVhc2UyNC1tYWludAorNTE0MDYgYmRlZTQ1ODg4YjY0MGM5NTYxZWQzYjhlNGVjZGM2YjAzZjhkNGYyMiBwM3lrCis1MTQwNyBkMjQwY2U1Njk2ZjlmZThmODU2MWE1NWZmOGQxM2RkMjgxNjI2MzlhIHAzeWsKKzUxNDA4IDEyYzQyZmY5OTQzN2JmNzJhZGU2NzkyNjcwYmQwYjhlYmRlMTg3MmIgcDN5aworNTE0MDkgODI3MTdiODQ4ODhlMDQ2YWFiOWNlMzEwOTNmNDVmMDVmMzQzNTRhNSBwM3lrCis1MTQxMCAwZjEzNWFmZmFiZjJjN2FmNDE2NzM2YzFiMTI0ODdiYWJlZDQ0NzllIHAzeWsKKzUxNDEyIDU5OWFiYzMxZjc3MGFkNzVhNzZjZjc2Yjk3N2U1NTJjYmVhZjlmMWMgcDN5aworNTE0MTMgOTYzNDk2Y2JmM2QzYzBmMWNjZTNmMGZmZGU2MmY0NTAwNjEwM2E2YyBwM3lrCis1MTQxNiA0NDYyMmViNThhMjViNmFmMDYxODgwZmNjMDU3YTFkNDU4NTE5Yjc1IGxlZ2FjeS10cnVuaworNTE0MTcgNWIyYzFiNjVkMzVlZWE5OGUwNGE0MTg4M2ZlMDIxYjExOGRmYzRhZSByZWxlYXNlMjUtbWFpbnQKKzUxNDE4IGMzMzE5MmUyYzI1YjE5NGZkY2I4NzJhYTQwZDFkZjJiOGFiYTY1NGQgcDN5aworNTE0MTkgMTU0ZjI1NmZmZjQyOTk1ZDlkYTEzZDc2NzRiMzMxYzRhYjI4ZjEyMSBwM3lrCis1MTQyMCAyMmMyZTI1ZWQwZTQwYmVjY2NkNmRhMWYwMjkxOGEyYTFhZWNlM2MwIHAzeWsKKzUxNDI4IDVlMTQzOTQ0NzcwYjQxY2IyNGVkMmMxOWQ5ZTU1ZTE5NjQwYTM4OTMgbGVnYWN5LXRydW5rCis1MTQyOSBlZWRhMjcwNDEzMGVmNTBiMDczZDllOGI2MDg0NDFlYmVkODUyMWY1IGxlZ2FjeS10cnVuaworNTE0MzAgNzNhMzI5MWM1OGRjMWVlYjRlYzY1MzVmNjJmYTQwZWM2YjAyMzJlNyBwM3lrCis1MTQzMSA0MGJiZTY2OWIwODllZmE3MGQ2YTMxZDVjMTU0ZDQ1OTM5ZDdjYTI0IHAzeWsKKzUxNDMyIDhkZDU3YzUzY2NmNmIyOTNjMzRkZGY4MWNkMzM4MGMwNWVjYzg5YTggbGVnYWN5LXRydW5rCis1MTQzMyBkYjQyZTg3Yzk3NzZmNzAyNDczYWE0M2I2ZThkNDQ4NGJiOTA3ZjVmIGxlZ2FjeS10cnVuaworNTE0MzQgMmZmZGVlMWMzODg0NGFiMDEyYjZmOTIzZDQ1NTI0Y2VjYzdiZDc3YSBsZWdhY3ktdHJ1bmsKKzUxNDM1IDZmMTAyMDc0MzA3NzRmMTM4NmMwNmQ2NjdiNTU0ZGU5OTVlODA4NjEgcDN5aworNTE0MzYgOGRkNzE1N2QyYTIyYTE5MTAyZTU0M2JiYmQ1MjU5NjFiMWZhNWFiNyByZWxlYXNlMjUtbWFpbnQKKzUxNDM3IGNmNDJhNDRjNTQ5ZWRhMDEzOWJhZDQ1ZTllMjJkNTE4MTg0YTEwMjMgcmVsZWFzZTI1LW1haW50Cis1MTQzOCAzNjc0ZjIwYWM3ODFmNjU3YzdmYmU2Y2U0MzQ0NWI3ZmJjNDUxNGU2IHAzeWsKKzUxNDM5IDE3ZjFkZjE1NTNjOWFlNDI1ZDJhYmMzMTU5NGMyNTEzMmZhODA4MDAgbGVnYWN5LXRydW5rCis1MTQ0MCA1MTFkYjcxYjVjMTQ4OWEzODVhYjYxYjJkNDY3Y2QyYzI5YzE2ZGU2IHAzeWsKKzUxNDQxIDUzOTE0ZDU0MGE2NzgwMTg2ZmM5N2FjNzFiYjI2ZDJjNWE4ZWNjMmYgcDN5aworNTE0NDMgOWRlZTgxZGNiOWI0MTliOWNhNzcxYWE0NGVkZTJiNWI2MGE5YzA3YyBsZWdhY3ktdHJ1bmsKKzUxNDQ0IDc4M2M1ZTI4MDNmOTU4MGZjODI3NmEwYWNhNzNlODg0NzU4NTI2NGYgcmVsZWFzZTI1LW1haW50Cis1MTQ0NSBjNDBmZTg2NTYzZmM4ODFjZWE5ZTIyMWMwZWFhZTFjMTVlYzkwNzEzIHAzeWsKKzUxNDQ2IGVkMGRiMGQ2Y2E5OTM4MWEyODg3Yzg4MzUzNDM0OGMzOTE1YjI5NzQgcDN5aworNTE0NDcgZTYxYjIyYmY3YWI0NzcyNTcwYzk3MWE4ZWZhM2UzNTMzNTMzNWEyZiBwM3lrCis1MTQ0OCAwMmJiZWVjMjcxNGYwNDkxYjA1MTU1NmQxMjZjNTgwNWU2NDBlNTc3IHJlbGVhc2UyNS1tYWludAorNTE0NDkgMzk4MjQ3NWM1MTQ0YmJjOTllMTk4MmI2Y2NjYTRkZTJmM2MwMjAwNSBwM3lrCis1MTQ1MCBlOGE2NWJiZDZhMjkyYzg3NDhlYjIwNDU2NjU2NTMzNjcyMDRkZTcyIGxlZ2FjeS10cnVuaworNTE0NTEgM2NiZWQxM2M0NjRkOWMxZGU0YzVlNDQ3Y2QzZTk2NzljYWY4ZTEwMCBwM3lrCis1MTQ1MiBlN2IxYTNkYjFmZTNjZGJjNzYwZTlkZjU3YmQxY2NmZjAzYTU5Nzk4IGludF91bmlmaWNhdGlvbgorNTE0NTQgYzZkOWZhODFmMjBmZGNkMDJjMzQzYWE2MjAyNGUwMTVkNTEzYzYyMCBwM3lrCis1MTQ1NSBmMThkNzc5YzdjZWI2NzJlZTM3ZTc4M2ZkMWZlYTRhY2VkYWRlY2U4IHAzeWsKKzUxNDU2IDVmZGRkZGQ1MTZjYjdjYzNjYThiZGU2Mzg2M2NlNDM4ZmRkZjJmNmEgbGVnYWN5LXRydW5rCis1MTQ1NyBjOGZmNDM4MDJmMzE0YzdkNmU4ZDI4YmQzOTM3ZjQwYTM3YmJhMDgyIHAzeWsKKzUxNDU5IGU4NmMwYjI5YjRhMjZhNDJlNGNlNjQ2OWYyY2EzZTliZmNjMzA5NWEgcDN5aworNTE0NjAgNzE5YzVkYjdiZmFkNDVhN2ZhOTE3ZDE1YmE1NjMzMWZhMDU1MzQ5NCByZWxlYXNlMjUtbWFpbnQKKzUxNDYxIDljYzZhNTQ4ZGVjNDk0M2VjMmRjNjI2NmIwNzMzM2JhYjg0MjU1MGEgbGVnYWN5LXRydW5rCis1MTQ2NiAyZjZiNDJhZWFkOTRmODFjZTJlNjBlM2YyYWNlZmU4ZjM0YTk4ZGJlIHJlbGVhc2UyNC1tYWludAorNTE0NzIgOGQ3MWY5YTZjMWMzYTJlYWYzMjc4MTNiYWRmMjBlOTRiMDZiYTVkOCBwM3lrCis1MTQ3MyBkNjVlNmRjZmRjYjU3ZWJkMDEwOTM5ZmJlMTk4YTlhNGNhZDMwMWNjIGxlZ2FjeS10cnVuaworNTE0NzQgOWYyNzgwMDkwMjZkYjM4MzRiNWUyZjA2MmQ0NzBmZTdhNDg1ZjJiNiByZWxlYXNlMjUtbWFpbnQKKzUxNDc2IDVmZjY5NmYyYTdhNWFhMjU3Nzc2MTE1ZDQ2MTM3NzI5N2U3MDMyOGQgaW50X3VuaWZpY2F0aW9uCis1MTQ3NyA0NGRhM2QyOTcxMDc5YmJmN2IxNjkxNGM0N2FkYTg1MGRiOWU1YzdhIGludF91bmlmaWNhdGlvbgorNTE0NzggZDkxNTg1YjJjZGMxMDA3OTc4ZGJmYmJiMDU0NWExZGNlMzNiZmY2MyBwM3lrCis1MTQ4MiAzZWE1Mjc1ODc0MTMxZTA4MmUxMjM0N2VkYjA1OTM4ZjU4MmNlMzhhIHAzeWstbm9zbGljZQorNTE0ODYgZjBmNDk3YTA1MDRjY2Y1MjVmMjJiZWZkNDY4MDA5NjE5ZWRhNjdjZiBwM3lrLW5vc2xpY2UKKzUxNDg5IGY4YTkwZDE4MjVjZTAwMmI4MTFkMTU0YjQ0YzdlOGY5NDE4ODVlMWEgbGVnYWN5LXRydW5rCis1MTQ5MCA1M2RmM2VmZjk0ZTNlNjE4MmVlOGE3ZGJhOGFlODkzZGM0NjRjZDViIHAzeWstbm9zbGljZQorNTE0OTIgMTg0ZjdiMTZkMjAzNmY2YzRlNDU2ZDQ5MTc5MjUxOTM5MjBlMTdjMSBpbnRfdW5pZmljYXRpb24KKzUxNDk0IGE1ZjM0M2Y3MjQ3MTM1ZmExODNlODUyY2EzZTI5MmQ3M2M1N2UzZjAgcDN5ay1ub3NsaWNlCis1MTQ5NSBjZTVlNDVlNGM1ZDA2OWNkYTBmNDMzZDM4ZWQwOTc4ODhlM2RlOTI4IGludF91bmlmaWNhdGlvbgorNTE0OTcgYTU5YmJmZDgwOGQ5NzI3MDg2YTFhMGFkYTM4YjhhZTI2ZTVhMjFmMSBsZWdhY3ktdHJ1bmsKKzUxNDk5IGU2ZTFiNDAzODI3ZTVlNTc5NDRlZWQ4YmRmOTM4MGE1ZjIzZTMyYTYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTUwMCA4NzgyY2MwZmI1ZTBmZWMwZThhYzdkZmQ4ZmJmY2FmMTdhM2ZlNjkwIGludF91bmlmaWNhdGlvbgorNTE1MDUgYWM3ZjM5M2ZkMjliMzQyZjAzNjE5MDEzOWZjYmJiNTRkMzcyM2YwNCBpbnRfdW5pZmljYXRpb24KKzUxNTA2IGQxNzQzYjA4MjczNDcxNDRhZmUzODQ1ZGQxY2RiMmJmYTJmNDE5NDcgaW50X3VuaWZpY2F0aW9uCis1MTUwNyBiY2M0MTQzNzhmMzIwN2NjZDUyZDI0OGI0MzI5ZjhjNTFjM2E0OTVjIGludF91bmlmaWNhdGlvbgorNTE1MDggNmQ0MzVkYThiNzliMzE4NmFjMDRkNjE3ZTlkYzVlZDk0ZDlkNjA0OSBpbnRfdW5pZmljYXRpb24KKzUxNTA5IGYyOGJlNWRiNTAwNWJhOTJiZDgzZTQ2YmEzMWY1ZmVmZjRlNjUzMjUgaW50X3VuaWZpY2F0aW9uCis1MTUxMSAwNTBmYjlhMDk3Y2Q3Y2YwY2UwODEwOGZjNDY0MDE4Y2ZhNzgxNmU0IGludF91bmlmaWNhdGlvbgorNTE1MTMgNDcyY2E3MDA2ZjcwZjJhM2NhZTRhMDk2MmJmMzQ1OWJkMWE1M2RlZCBwM3lrCis1MTUxNSA0NDliYTBlZmI2YmQyNzkxMWQ5YTViYmRlOTc1M2IyMjgyNWUwODhiIGxlZ2FjeS10cnVuaworNTE1MjIgZTI4MDMxYWZlZmY1ZjJmYThiYmM1NjBhZTQ4MmQxYTI5NTJmY2YyYyBpbnRfdW5pZmljYXRpb24KKzUxNTI1IGQ1ZmE0YWZkNjYyMGU2ZTY3ZTAxYzU1YjQzMDhiOThlZmVmNjU0N2IgbGVnYWN5LXRydW5rCis1MTUyNiA1Y2NlMDI4ODc0YmM3OGUxMjMwYTk0YjQyNzc3ZDU0YjM0OTFiNTMxIGxlZ2FjeS10cnVuaworNTE1MjcgZjQ1NDUxODE5NDkxYjQ2NWVjYTc2MTQ4OTVmMDg1OWYzNWIwOGE0YSBsZWdhY3ktdHJ1bmsKKzUxNTI4IGFhYTc0NWZjN2I3NjdlOTcxMDFlN2UwMjgxOWJkNzBhNjkyYzc5N2IgaW50X3VuaWZpY2F0aW9uCis1MTUzMCA5ODExODFkMmE0ZmUwNzU1N2QzZTg3MjYyMzI4ZTE5MGU1MTNkZDhiIGxlZ2FjeS10cnVuaworNTE1MzEgM2RkNjFmZmQwNDllMTU3ZTI2Mjk2NDQ2ZjMyZTU1MmUxZDIwNWUyYiBwM3lrCis1MTUzMyAxM2Q1ZTVmMGU5OTNhYzdhNjRjMzdjOTIzZDQ3YTQ0Zjk4ZjJkNzg5IHAzeWsKKzUxNTM1IDhiOWVjMzQ0YmVkMmU1NzBmZDZlMmE0ODIyYWM1Y2YxMDZhOTE5MWQgcDN5aworNTE1MzYgY2UyM2Q4NjczMmIwYjg5YWYyMDQ5ZmRiYWViMDg5ODY0YzE2YTVlOCBwM3lrCis1MTUzNyBkY2VlYTQxZjRhNmRhZWEyMTI4NWRlODg3M2RiMTg5OWQyMzVhYTJhIHAzeWsKKzUxNTM4IGVmZTNmMmMwZGE1ZThlZDUyYjYyNThkYjhiYjNiMDE1ZGRhNmM2ZmUgcDN5aworNTE1MzkgNzQ5NmY5NDc1NGZmMGViMTgyZDY2YWZiODRlNjNhMjhkNjBiNTQ0MCBwM3lrCis1MTU0MCA2OWY2MWY5MGM0ZmMwOGE1NTY0ODgwNzYwZjlmMGE1ODZmZTJjMmY3IHAzeWsKKzUxNTU2IDFhMGY0NDdlNjBhOGFmYjM2NzJlYzAwMzZkMzBkODVmNzQ0NDU3M2IgaW50X3VuaWZpY2F0aW9uCis1MTU2MSAxY2Y1Mjg1YzhhYjk0N2Y1ODVhNWQzZGVkMjU3NGYzM2NlZmYxZDgyIHAzeWsKKzUxNTYyIDUxY2RjMzk4ZTBiMDYzZTg2NWM4MzA1MzgzOGEyZDc3NjAzODFjMmUgaW50X3VuaWZpY2F0aW9uCis1MTU2MyAzMTdkY2M1OTBmZmQ4YTI2YjY3ODlhYTkyOGZhNDdlZWNjYTZjYjdlIGludF91bmlmaWNhdGlvbgorNTE1NjQgZTRkZWVhOTM4ZGVmMDgyYWZkZWQ3MDg2ZmEzNmIyYmQ1YmNjYjMxYSBwM3lrCis1MTU2NSBhODhiYzNiYWQ2NTFiM2FmYWI2OGVjY2Q0MTc1YmRlMzRjZjUwNTdjIGxlZ2FjeS10cnVuaworNTE1NjYgYWRiZmQ4ZDU4NTFjYzYyYjU4YjAxMzJlYzIzNDRjOTUxY2EzYmU4ZCByZWxlYXNlMjQtbWFpbnQKKzUxNTY3IDI4MGM2ZGIzMWM1YTNkMjAzMmYwYTkzZTZjYzVkOWQ1NjIyNmZjMjIgcDN5aworNTE1NjggOTM0OGVhNjNiMDJkZmRlYzAzNzJmOWM2ZjZjZGE0YWRiNjUxZWQ3YSBwM3lrLW5vc2xpY2UKKzUxNTY5IDA4MDA1YmE2Y2ViOTMwZGM3MzdmNGZiMTJhMmVmN2RiYTFkYTIwMGYgcDN5aworNTE1NzAgNTIzZTZjY2U0MTg3MTUwZGQ5YTI3YjQxYTVlZjdmOWI1NzI2YWZkYiBwM3lrLW5vc2xpY2UKKzUxNTcxIDdlZDVjZTg5ZjI2YWU3YzQ5NWFmYWU1N2U3ODgzNjE4YTNkYTUzNDcgcDN5ay1ub3NsaWNlCis1MTU3MiBlYmFkNTljNzIzM2UzYTgwNWE2OWFjMzkzZDRjODE3NzViZmJiYjk5IHAzeWsKKzUxNTczIDdiYzQxOTJhNTI3OGM1OGJjYTk1Y2ZlZDU0MGYzYTM3Nzc3MDVhNjAgaW50X3VuaWZpY2F0aW9uCis1MTU3NCA4NDMzNTc4OGQ5Y2IyMTI2MmI3NTdmNDIxZjEwMTA1ZGNhNGZhMTMyIGludF91bmlmaWNhdGlvbgorNTE1NzUgZTVlYzFhZGIwNjFmNWFiNTgzZDI2MWFhNzZjOGU3NzNiMWY5M2I1OCBwM3lrLW5vc2xpY2UKKzUxNTc2IGJmNDJjODFkYjgwNmVmMjEyZjI1YTBhOTBlZGViNTBjOGY3NGIyNTAgcDN5ay1ub3NsaWNlCis1MTU3NyBhNTA0OGM4ZDhmMzMzMmFiN2Q0NDZhY2RhODAwOGI4YzUxYTI2MTk0IHAzeWsKKzUxNTc4IGEyNDNhNTBkYTIzYWUyZWY1MTBiNmNiZDBlMzk1ZWU3YzVhZTRmMzggcDN5aworNTE1NzkgZjllNzU2MGZlMDBkMjE4OTg5NjM1ZjA3NWE1NjIyOWFiMzdiYzRlMCBwM3lrLW5vc2xpY2UKKzUxNTgwIDc2YTlhNTEzMWFhZWM5NjM1NGE5MjdhNjhhZDkzMDhhZGFmMWU5M2UgbGVnYWN5LXRydW5rCis1MTU4MSA0NGFmNGIzN2Q1ZmY0MGEyZTdjY2VlZGYxYTk1NGEyMzU3ZGM0NDgzIHJlbGVhc2UyNS1tYWludAorNTE1ODIgMjZkMjk1ZTc5YWU4NzE2MzM3MTg4NGQxYWU0N2ZkYWU2MjFlMzBjNyBwM3lrCis1MTU4MyBlNjg0Zjk3YWUzZmFmYjE0ODBhMDg1MTJkYWNmZjVjMzkwYWY5MGZmIHAzeWsKKzUxNTg0IGYxNmE1ODNjNWIwOTA0NWQ4YTJkM2I0MzQ3N2QzODk2OWIyZjAxMzAgcDN5aworNTE1ODUgNGEzOGNkMWExNjA2MWIxZjNlMjA1Y2JlNmNiYTk3MWFhOThiOGY1NyBwM3lrCis1MTU4NyBmNTFlZGJjZDVjYzAwMDhiMDMzYTEzNTI1ZWU4YzRhNTBjZjc1NmEyIHAzeWsKKzUxNTg5IDkyY2YzOTc0ZDMyZmJjZWU3NjE5YTNhMDNhNWJiNjFkNjZiNzkzY2QgbGVnYWN5LXRydW5rCis1MTU5MCBlZGVjNzk2MmFmMjg3ZThjMGZhZTU2ZWFjMTY0OWVkMTJjODM3ZTlkIHAzeWsKKzUxNTkxIGUwNzZjY2E0ZDlkN2EwYzljYzNjZjliNGVmNTM0NTE2OGEzZjRhYjggcDN5aworNTE1OTIgZGJiNTk1NGZkZGNjY2IwMzk3NzUzN2RmNGI2MDY0OTliMTk4MTNjNiBwM3lrCis1MTU5MyBmMDc4ZTdlNGI5YTE1MDYyMjEzOWFjZjY3OTIxZGMxMTIwNDNmMTg3IHAzeWsKKzUxNTk0IGZmNjkzYTg2MWI3MDRmZGUxNzUwZWM5ZGRmMjE3ODNhZDc5MTQ1ZmMgcDN5aworNTE1OTUgZjgxMTVmNjg2ZTQwMTFjNjhjMTQyYTNmNzczMDgxYWJhY2EzNmUwMyBwM3lrCis1MTU5NiA2OTI3YWNiZmEwMWI0N2ZhYmE4NDQyYzIwMGYyNzY4NTA4MzU4YzRmIHAzeWsKKzUxNTk3IDRlNWM5NGQwMzY0OTNkZjcwY2QyZjQ2OTAwYmM1ZWZjODc2OWU5OTAgcDN5aworNTE1OTggZWIyZjcwZmRiZjMyNDBiOTlkMjYwNTA2YWVlMmFhZmEzOWRmNDA4ZSBwM3lrCis1MTU5OSA3ODU2NGUyNjlkMjMwYjJmNTM3NzdlMzNiYjcyODE5NDdlMjMzNWQ3IHAzeWsKKzUxNjAwIGY4N2EzZTYxODUzZDcyYjFkMTMzOTkyZjk5MWUzOTdiMzFhYWM4ZTggcDN5aworNTE2MDQgM2JmYzhiYjRlNzI2ZjBhNzM2YzljNTAyY2I4YThhMzVhOTNlYzk2OSBsZWdhY3ktdHJ1bmsKKzUxNjA1IGNhMmIyY2MyMzA3ZTQ0MTNmYTJiZmY1YjZhYWIwOTI3MzkwN2ZjNzkgbGVnYWN5LXRydW5rCis1MTYwNiBmNDk3NjUwYTE0OTA2ZjI3NjM4ZGZjMzMwZGIxYWIzMDVlNmQzZmVhIGxlZ2FjeS10cnVuaworNTE2MDggOTE2YWU2MzZhODNlNGI4MDAyYzA3MjRiYzY4YWM3NGQ4NDM4NjJlYyBsZWdhY3ktdHJ1bmsKKzUxNjE2IGJiMDczODA1ZmJhYmEwMTE1Mzc3NDg2OTI3YzI1ZDAxY2EyOWE2ZWEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTYxNyA5MDQ5NTgyMTY4MTMxZDk4OWZhNWMyZWM2MWUzNmE3YzBiMGI3NTdiIGxlZ2FjeS10cnVuaworNTE2MTggNTU0Mjc1OTI1NGMwYjI4MGNkYmZlNjA1NWI1YTEzODI5NDkzMDIwZSBsZWdhY3ktdHJ1bmsKKzUxNjE5IDFiNzM1YTlkMjEwNzEwZGU0YjhjNGFhYjM0MDIwOTc2Y2FlOWQ0NzcgbGVnYWN5LXRydW5rCis1MTYyMCBhY2E3MDlmMzNhNmExNjhiMTk5ODY0NWRjMTdiNGY4OGMxZmQ3ODg0IHAzeWsKKzUxNjIxIDNkNzc5OGZlYWZjNTk4ZjllYmJkNzYxNGI5NTljMjE1OGM3NGQ5N2EgcDN5aworNTE2MjIgNmMxODRmYTU1MTcwYTI2ODZlMTkzMjMwZTdhZWE3NGU0ZDlhYjA2NSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNjIzIGViZWIzNGFkZDRhNjJjZGNlNjU4OGQwNDkxZmM2OGE3Yjc0Mzg0NjQgcDN5aworNTE2MjQgZDBlZDdkYmFhZDU2ZTBhMGFlYTUyZmFiNjg5ZmQ4YmQ2ZGVhY2YwYiBsZWdhY3ktdHJ1bmsKKzUxNjI1IDBjYjllNTdlYzQwNjQ3OGM3ZGYzYjZlMDVhZDc1NzFiMjM2NDQ2MDQgcDN5aworNTE2MjYgYzRkOGMwNTQ2MTZjMDA5ZDBhYzAyNzk1M2Y4MWU1MzI5ZWRlNmExNyBwM3lrCis1MTYyNyBjMDkzNjMzYmViZWNjZmUwNGU5NDgzMjViNjE2MGM0Y2ZjYjFjMWRjIHAzeWsKKzUxNjI5IDU0MGM5NTkyNzI5ZTc0ZDgyYWQzMzFmNjc0M2VkNDk1MThhYzJhNzEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTYzMSBkMGI4M2M0NjMwYzA5MjRkZjY2MTA2MzU0M2YzYzU0NzhjOGMzNWFjIHAzeWsKKzUxNjMyIGRhM2E5ZjQwMjg4NjA2NThhYjc5YzZkZTM2YjMzNjZiOTlhMTQ3MmIgcDN5aworNTE2MzMgNGY3NmY2M2EzMmYzNmJhYWYxNzE3OWFhNmNiZTk0ZjJmYjEyZjMzZiBwM3lrCis1MTYzNCBkMTRmMTBhNGQ5ZDQ2NjBkY2UxM2M4NzRiNTlhNjIxMzUxZDE1ZWRlIHAzeWsKKzUxNjM1IDA1YWM5YzQ5MjhhNDhmMTI5NGNiOWVkZmM5ODExNmQ3MTY1MGVhZTggYmNhbm5vbi1vYmpjYXAKKzUxNjM2IDZlMTk4YzY1NWVlYWFjZjM1NTkwNzUxNzJkYjQ4M2ZmNjIzYjlkZGIgYmNhbm5vbi1vYmpjYXAKKzUxNjM2IDkwYThlZTZjM2E4Njc2Y2M1Yjk0M2IyYjFkZWJjM2NhMGYxN2JhZjEgYmNhbm5vbi1zYW5kYm94aW5nCis1MTYzNyBiNTYzYjEyZTRjMDAzNjM5MmM0ZGI4MTUyOGU4OTBhYzZkOGJiYTM1IGJjYW5ub24tb2JqY2FwCis1MTYzOCBmZWYwMmRiYTliNWYzMjY4NzFlNjI3NTQ1YmM4NmYxZDJlNmNiMDMwIGJjYW5ub24tb2JqY2FwCis1MTYzOSBlYzQ4MDU3YTM0YjYwMThmNTdiYmY0ZjQ5NzQ2NTIwMzU1ZjI5NzM0IHAzeWsKKzUxNjQwIDA3ZWI4MDI2NGY2MTUxMWRlZjU3MjhkZjVjNmE3NTdlZDY4ZDliZDYgcDN5aworNTE2NDEgZjk3NDg5MGM2Y2QyYTdjNTJkMzAwN2QxZDZjYjMxNjhkNGNmMTFhZiBwM3lrCis1MTY0MiAyMThiNmU5MDBhOGQ0NDI1YmQ5ZDkyYTU4MjA1YWUzODgzM2M3NzZmIGxlZ2FjeS10cnVuaworNTE2NDMgNzU5MTIyODE1MWQ3MDJlYzUzM2JmYmFiYjhhMzgzNWU2YjliMDlhMSBwM3lrCis1MTY0NSA4OTNhZGQ1NTQ1NDE5NjcwODAwZWIxMTc2YjhkYjRiY2ZmZDM1MDA3IHAzeWsKKzUxNjQ2IGFhNTk0NjZlYmQ5YzE2MTYxYzUxYzExNDAwNDc0MTFkZjQxMzIxZjkgcDN5aworNTE2NDcgNzU0YTcyOWU5N2FmNWFjNjQ4NWE1ZmE1OGVlNGE4OWJkZDlkNDJmMCBsZWdhY3ktdHJ1bmsKKzUxNjQ4IGYwYjhmNzExODVmNTVkNmZkOGNjNTVlMmFlOTk5MTcwNzk0NzFhNTYgcDN5aworNTE2NTAgNDE2MTA3YTM1MTg1M2Q4ZWIzM2Q1ZmE0ZmM5NjE1MzM5NWI3OGIwZSBiY2Fubm9uLW9iamNhcAorNTE2NTEgMTZkNDg2YzdkYTgyNDVjMzU2MGZjNDNlOTk5ZDZhZWI5YjVjZjI1YSBiY2Fubm9uLW9iamNhcAorNTE2NTIgOGY3MzIxYWI4ZjQwZjczNzc2MmFjMDMyMDU4ZWUzMWM1OGUzNzIxMyBiY2Fubm9uLW9iamNhcAorNTE2NTMgNGQyM2U5YTEyNzEwMzg1NWQ4MzM3OWI0MDFjYzE3ZjYxZGRmM2RmZiBiY2Fubm9uLW9iamNhcAorNTE2NTUgZjEwZmVkYmU2YzEzOTYxYjhmYjYzYjA5NTYxNzU0ODAwNzVmMDdjYiBiY2Fubm9uLW9iamNhcAorNTE2NTYgNWIwMmViNWY2NWYxYmZmNmE0NWYwODg2ZGQ0NDgxOGE3ZmM1MWM4ZCBiY2Fubm9uLW9iamNhcAorNTE2NTcgMzU1NDk2MmQ4YjIxZDdlNTY1Njk1YWI4OGQzMmMwZDMxOWMyNjMzYSBiY2Fubm9uLW9iamNhcAorNTE2NjMgZTg1ZDViMjBlYTYwZWQ0MTgxMjZiYjc3YTBkNTcwZjg5MGQ1ZTViNCBsZWdhY3ktdHJ1bmsKKzUxNjY0IGE4Mzk1N2M5MWZkYjliYjc3MTcwNzBmOWIwNzJiNTE3YTc2MzVmYTUgbGVnYWN5LXRydW5rCis1MTY2NSAxZjE3MDU3MDU4OWVhNWZiNTAzNjAzNjM5MWJiMTMzZTk0ODBjMDIyIGxlZ2FjeS10cnVuaworNTE2NjcgNjBjMTE5MzQ3MDllYzc0Mjc4NGEzZjJhZDIwMGFjZTFhZmE4NWE2MiBiY2Fubm9uLW9iamNhcAorNTE2NjggYmNjYzkxNTgwOGQ4MDFmZmFhOGE1MjhiZWYzZWM1Y2U0NzA1ZmVkZiBiY2Fubm9uLW9iamNhcAorNTE2NjkgZGQ1MTRhMTc3ODQ4YWU2ZTUxNWRkNjc0MTkwMTU2Y2YxMjRhY2UwMCBsZWdhY3ktdHJ1bmsKKzUxNjcwIDg5MTc2ZTY1YWRkMmM5ODViMDAzNWQ5MmQ2YjBkYTlhNWFiN2U3ZGEgcDN5aworNTE2NzEgNzIxYzM5NGViMGJhMzNlOTlkODAyOTU3OTA4NmNjYTM2OWUwNGUzYSBsZWdhY3ktdHJ1bmsKKzUxNjcyIDU2MjZiMmVlOGNlNGNiYzVjNDEzOGE1OTdjZjA2ZDE0OGNlY2Y2MDkgYmNhbm5vbi1vYmpjYXAKKzUxNjczIGFhNjQxZmIxNzY5OGVkMzI3NzkwMzkwZmNkMzVmOTFmNzkzYjEzZTMgYmNhbm5vbi1vYmpjYXAKKzUxNjc0IDgyMDgxYmE5YTVjNTA3YzA0OWFiNzY0MTg4YjVhMDk5MmNjODdjMDUgbGVnYWN5LXRydW5rCis1MTY3NSAxMWY3MDUzMDUxZmY5ZWFkZmNjZjVkNjY5OWM0MDY3YTIwNmYzODMyIHJlbGVhc2UyNS1tYWludAorNTE2NzYgNGE3OTA2ZDhkZTg2MTA3Y2ExMDBjMDZkNzMyMjI4MWNkZTRmOTMyOCBsZWdhY3ktdHJ1bmsKKzUxNjc3IDcxZWEyYmU3ZDkxMjZhOGJjYWFlM2JmNjk1OTUzMTdiZjNhYzkxNWIgbGVnYWN5LXRydW5rCis1MTY3OCAxODRjMWRiZjcxOTRlNDA0OGExYjJiODExNThkNWNmYjFjMTBhODNlIHJlbGVhc2UyNS1tYWludAorNTE2NzkgYmE4Mzc1NDVjYzJmYWYwNzhjM2M5ODQ3ZmI3ZmRiOTliNTM4OWViZSBiY2Fubm9uLW9iamNhcAorNTE2ODAgYTY2NmQ3NWYzZGZmYzM5MzRlNmNlNWQyNTM0ZGIyYWNlYzI4NDQ2NCBiY2Fubm9uLW9iamNhcAorNTE2ODEgZDE5ODZkMzY5ZmVmYjg4OWI3NTg4Y2NlZTkzZTY3NWJjOTYzYzZhOCBsZWdhY3ktdHJ1bmsKKzUxNjgyIDg0MThmMWI5MDkwZTg3ZWVhYTlkM2VmYTMxNTU3Mzk0OTNhZTRlZmMgcmVsZWFzZTI1LW1haW50Cis1MTY4MyBlOTA1Zjc4ZWFmY2E1NzIxYTY2MjFlYmY4M2M4YWQwM2YwNTc1YzQ0IGxlZ2FjeS10cnVuaworNTE2ODQgMTM1MmFkOWFmY2MwYjhkZjNkMjBhYTNiMjZkYjllMzE1NzgwMjE2MyBsZWdhY3ktdHJ1bmsKKzUxNjg1IDJmMDg2ZDU4Y2ExMGY3ZTExMTMxYzdkOGM5Y2QwNjI3MWQwMzA4ZjMgbGVnYWN5LXRydW5rCis1MTY4NiA4ZmUxNjg3MDMzNDhiNzRjOWFiYmUwOWY1NjhjNTVmNmZmNTYxZjJkIGxlZ2FjeS10cnVuaworNTE2ODggNzY5M2I2OTkzZGRhZjNmODAzMDE3Zjg4M2NiYTZlODg2NDc0ZmY5ZiBsZWdhY3ktdHJ1bmsKKzUxNjkwIDMxNGM0ZTdhMzZkM2VmM2M2M2Y5OTZkZWFlMjgxOTk5YWViYzVhMDIgbGVnYWN5LXRydW5rCis1MTY5MSAxZWM3ZWYwZjNiOGQwNGY0Y2JkMWQ0MTQ5Y2FhYzM5Y2Y5NTQxODhkIGxlZ2FjeS10cnVuaworNTE2OTIgMjExOTdjYmVkNTFkYWM4OGYzMWQ0NTdmNTVhYzQ1NGRhODQ2NWZmMCByZWxlYXNlMjUtbWFpbnQKKzUxNjkzIGFhOGZlZGY2YmIyNDhlZGRiM2ZkMWY3NGNjMzM1NzJhZDZiNDIzOWMgbGVnYWN5LXRydW5rCis1MTY5NCA4ODMyYjhjMmZjNDk5ZjQ3NjQ5NzE0Nzc5ZTk0OTEzZGYxN2MwMjBmIGxlZ2FjeS10cnVuaworNTE2OTUgNGNlYzQ1YmQ2NjYzOTgzZWUyZjc2YzQ5NjZkZWY5MTdjNmU3ZDQwNyByZWxlYXNlMjUtbWFpbnQKKzUxNjk2IDA2MzMwZDBiNDY0YWYyNTMzNWQ3MTE2ZDZkOTNiYWZhZGYzNmU0ZjQgcmVsZWFzZTI1LW1haW50Cis1MTY5NyBjYjY2NDJkZWQ0ZTc1ODEzMmY2ZDU5NTA1MDc2OGY2ZTM0MTE0MDVmIGxlZ2FjeS10cnVuaworNTE2OTggMTAxZTA0YTRmNDAzYWFlNWM1ZTc0MzdjNzFlNDIxNGRhY2E3MjY2ZCBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNzAyIGM2ZmVmOTQ0YWQ5NWRlYWZkMmFmMDY4MDdlN2NjMjEyYTdmZWE5MjcgcmVsZWFzZTI1LW1haW50Cis1MTcwMyA1ODk5ODBjNzgwMjU0NjA4YWQzM2FiNDU0ZjlhZTRiNzExNzhkOWE4IHJlbGVhc2UyNS1tYWludAorNTE3MDQgY2ZiNzdmZmYwMjQwMjEwODJhZDgxMWFkMjI0YWY3MThkYzEyNjE4ZiBsZWdhY3ktdHJ1bmsKKzUxNzEwIGFiY2E0ZTYyNmNiNWY2YThiMjYyOTk2MDZjYWEzNjcyMTY1ODc3ZjEgcmVsZWFzZTI1LW1haW50Cis1MTcxMSBmNWU3OGFlOGVjMGNiOGVjY2YxZThjODNhNjQwNzNkMWFmMmUzOTFkIHJlbGVhc2UyNS1tYWludAorNTE3MTIgMDBkMmM5M2I4OGJmZWQ1N2FlYWUxYTI2MTdjYTEzYTdiYmE2NzBkMiByZWxlYXNlMjUtbWFpbnQKKzUxNzEzIGM2ZDQ0YTk3NDlkYjQ4NmI2NjgyNzhiYjM3MDUwOGQzMzlmNzhlOTIgcmVsZWFzZTI1LW1haW50Cis1MTcxNCA5Y2ExOWRiMTdmYWY3OTUwMDMxOWY1YWIwMjVjYjc3Mjg5YWI0NzYyIHJlbGVhc2UyNS1tYWludAorNTE3MTUgMjQ0YzczNGYxZDhkMWRiODBjZTdhZTY5MjgwYWE0OTQxODM3Yjk4ZiByZWxlYXNlMjQtbWFpbnQKKzUxNzE2IGUxYWE5YTI5ZWQxNTFmZmJkZjE2ZTQ0NzA2YjM2NmJhZTZkYjJmOTcgbGVnYWN5LXRydW5rCis1MTcxNyA5OTU3NDY3ZmFmNDdjM2NlMTZjN2ExYjNmMDE3ODljMGM3MTdjZDgzIGxlZ2FjeS10cnVuaworNTE3MTggZDFiNDk3ZWMxOTBhMWFiNmNlOTM0ZTNmNDFiYTgzMmU5OTg4NDM4YSByZWxlYXNlMjUtbWFpbnQKKzUxNzE5IGIzNTE0MzgyYzMyNzQ3Y2M4MTQxZTgxNzBkZDRhMTM2N2Q0N2IzYTUgbGVnYWN5LXRydW5rCis1MTcyMCAwOGNhNDc2ZjhhMzQyNGRjMjYzYTdlMjIyZWE4ZDhkMzRlNzIwMTY4IGxlZ2FjeS10cnVuaworNTE3MjEgOTdkM2VhYjhjZGEyZjkyMGI1MDQ3OWEwZTU4MzQ2NTdiNDg2MmM0NSBsZWdhY3ktdHJ1bmsKKzUxNzIyIDlkNDQ3OTIwNjNiYmZkZTljNjNmYjY5OWE4Zjg2MWM4MjI4YjJlMjYgcmVsZWFzZTI1LW1haW50Cis1MTcyMyA2MjdhMjFjY2YyNGZjNDAzYzhjYjc5YTY0NTM1NDYyOTc5OGMzNmY3IHJlbGVhc2UyNS1tYWludAorNTE3MjQgMzAwZmU1MDZhMGFhNDIwYjAzY2I2ZDIyZjBkNDA0ODhkNzBjZWQ3OSBsZWdhY3ktdHJ1bmsKKzUxNzI1IDgyNjM5YzA1NWE2ZmE4NDc1M2Y0MmJlNDVlNTMxZTA2Mjk3NDZkMjUgbGVnYWN5LXRydW5rCis1MTcyNyAxNTVjYjE1NTdiOTc1MGQ0OTExMWIxMGUzMTg5ZTc5MDIyODg1ZGJkIHJlbGVhc2UyNS1tYWludAorNTE3MjggNGM4NWNlNzA0MjZlMzlmNGFhMTkwZDE0NTE5YzRiMWVhODNmY2MyYSBsZWdhY3ktdHJ1bmsKKzUxNzI5IDhkY2I4ODJlYzNlMWFhYzdkMzM2YTQwYWE2NGVjNjY1NjFmYzNkZWMgbGVnYWN5LXRydW5rCis1MTczMCAzMzAwZDc0OTJmMWExM2NhNjA0YmZhYTNmZTI5N2E0ZjMzMzhkMGYzIHJlbGVhc2UyNS1tYWludAorNTE3MzEgYzU5MWQ5OTU0ZmIzOTMzMGMyMTM2YjIyNjYwOTA4ODRmYTY2MGEwYiBsZWdhY3ktdHJ1bmsKKzUxNzMyIDNkOTY4YjVmY2FmOWJlZTc4YzZjOGYwZDcwNjNkOTFiZDE2ZTAxYzkgbGVnYWN5LXRydW5rCis1MTczNCA2YTUxY2I4MDY4ZjVjZWVlNWEzMDAwNTZkNjhiZjc4MDBkZDM3NWM4IHJlbGVhc2UyNS1tYWludAorNTE3MzUgNWQ2ZTk2YTJmZTZlODZkZDVmOGY2YTEyMzIzOTlhMjZkZDE3OTZjNyByZWxlYXNlMjUtbWFpbnQKKzUxNzM2IDlmMGIzZjljNzBkYTFjNzIyZmI5YmQ1NDk2ZDQ5ODU5ZjVmNGYzZDkgcmVsZWFzZTI1LW1haW50Cis1MTczNyAxNTEwOTc4MWYwMTY4ZWJkODUxM2U0ZWM5MTZhZTI3ZGRmMjBjZjNhIGxlZ2FjeS10cnVuaworNTE3MzggZWUwYzc1N2M0OTkwYWJhYWIyMDQ5YTkzN2M2MmQwYmQxZDEyNmNiMiBsZWdhY3ktdHJ1bmsKKzUxNzQwIGRlZDdiNjkwYzMwNjNiMGM3YjM5YzQwNDczOWYwY2RhYzM2NDdlZTIgbGVnYWN5LXRydW5rCis1MTc0MSBjYTk1YmQ1NTllNzE2N2VmMTUwY2U1Yjk1YzJiNzhhY2JkZTk0NzlmIHJlbGVhc2UyNS1tYWludAorNTE3NDIgNmQ3YThiNWViNTUxZmM1MTk3MTM2YWU4MjJkOTI0ZTM3MTZkZTIzNyBsZWdhY3ktdHJ1bmsKKzUxNzQzIDhmYjU5Nzc4NGYxODU1MTEyNWQ0M2Q5YzBkYmEyMTNkNzhiMzIzZmUgcmVsZWFzZTI1LW1haW50Cis1MTc0NCA3MWFjNzk2YTAxOGM2MzE5OWViNjkzNmMzNGUwNTEwYzgwZjkzN2E4IGxlZ2FjeS10cnVuaworNTE3NDUgN2M1ZTI5MzYyODAzYjFmZjNhYjlkZmNlMWZhMTQyZGQ4NThlNWY0YSBsZWdhY3ktdHJ1bmsKKzUxNzQ2IGU4YjY4ZGY5MGI4NGVkNWNhNWU2MmEzMGFlMmEyOTIzMzZkYzE0NzggcmVsZWFzZTI1LW1haW50Cis1MTc0OCBhNTI0ODk5ODBiNWI0OTNhNWQ4OWM5OWQ3M2MxMjVhMjU2NjJiZWNlIGJjYW5ub24tb2JqY2FwCis1MTc1MSBlNDY2ZmZmZGM5YTkxYzUzYzZkODg0ZWZhMGJlZWU3YzQzODhlNTk5IGxlZ2FjeS10cnVuaworNTE3NTUgMWM0MjVhODkwZjZjY2EzMTU3OWRhMGFmZjU1NTRlODJiMWYwNThmZCBiY2Fubm9uLW9iamNhcAorNTE3NTYgYzljYzI5YmU3NTU4NzhjYjZhYjYwMDI4OGY2Yjc0NjY4N2NlYTQyNCBiY2Fubm9uLW9iamNhcAorNTE3NTcgNzZiOGE3NWRiZTZhM2Q3NGUzNGJiZjQwMjk4YjQ5NTcwYzNiMWQ2MiBiY2Fubm9uLW9iamNhcAorNTE3NTggNDY3YzcxNmUyZjgxOGJiNDA3MmFiZmZiNjVjMTMxNzIxYjRmOWI3NSBsZWdhY3ktdHJ1bmsKKzUxNzU5IDhhMjBjOTRkOWQ5OWUyMmI5NDEzMTU1ODk3NDFiYjExMGFmNWU5OTMgcmVsZWFzZTI1LW1haW50Cis1MTc2MCAyYTczMGZiNmYzNGI0MzFhNzViYzRiODdkMzUwMWIxYThhNTkyM2EyIGxlZ2FjeS10cnVuaworNTE3NjEgOWRlYjA4ZWY0YmExZGYzNTBlNTA2NmI0YjFmOGU3OTBiZjg0ZDY5MSByZWxlYXNlMjUtbWFpbnQKKzUxNzYyIDk4Y2Q3YjE2NjZmYjQ4Y2Y1MWYxZTJkMWYwZTYyZDA1ZDQ3ODM1MDggbGVnYWN5LXRydW5rCis1MTc2MyA2ZGNjNjQ4NzkzNDEzODFiYjEzZTY3NTJlYzBmMzE4MDU1ZjNhMTE5IHJlbGVhc2UyNC1tYWludAorNTE3NjQgYWU1YjhhOGI5MTFlMjlkOWMwYjMzNTFiNTJjNzBmMzY2NGQzZDkwMyByZWxlYXNlMjUtbWFpbnQKKzUxNzY1IDMwN2ExMWMwODViNDYxMGQ4NmVmOTIyZDIzZTM3ZjFiODk2MTEwNDEgbGVnYWN5LXRydW5rCis1MTc2NiA4Mzk0ZDJlOWJmZDY3YWY0ZWIwNDNmODJhYTk2ZTI4YzE2Zjk5YTQ4IHJlbGVhc2UyNS1tYWludAorNTE3NjcgYjhmYmQzMjI3NjBhOWJiMTVhMGEzM2YzMGUxYWI0MWEwZTBkYWE1MSBsZWdhY3ktdHJ1bmsKKzUxNzY5IGQ3MTlmYWI3OTY2Nzg3NmNkMTQ1NjVhNDI3ZDc2OTYwZmQyOGY1OWMgcmVsZWFzZTI1LW1haW50Cis1MTc3MCBjYjg4M2U3ZTBiN2UxNzJjZjdmMTQ1MWRmMDQ4OWNmNTdjYzliMjVjIGxlZ2FjeS10cnVuaworNTE3NzEgYzk0ZjM3MDU0ZjE5NzBmNmZjMTYyYjEyNTFlZWYyNTQwODU4ZTIzYyBwM3lrCis1MTc3MyA3YTBhZDExMGU5MWU3OTE2MzFkZjg4OWMxMmY1NWYwNzZiOThmM2JlIHAzeWsKKzUxNzc0IDNiNzVlZGNjNGE2ZjQ4N2RmYzdjYWVlMTFmN2JmYzU2NzRlNGYyNTEgcmVsZWFzZTI1LW1haW50Cis1MTc4NSBkY2UxN2I1YmQzODdjYTNiYTc3OGU1ZDFiOTc2NjRmZDQxOGJkNDRkIGxlZ2FjeS10cnVuaworNTE3ODYgODFiNDY3ZmU5MmVlNTA5NjRjNTI4ZmRlZTBmMDlkMzc1OTcxZThiNiByZWxlYXNlMjQtbWFpbnQKKzUxNzg3IDRhYTk4NDE0MWZlZmNmYjY3Yjk4NTc1ZTgyZDZiMGRlMTk3ZDc1YmUgcmVsZWFzZTI1LW1haW50Cis1MTc4OCAyNTI3YTQ4MzUwOTkyOTNiOWQ5MDJiNjU1ODU3OTcxYjkxYTI1OTM4IHJlbGVhc2UyNS1tYWludAorNTE3ODkgY2QzYjdmMjU2NDlkNGYzNzk0ZjAwMGI3YzBjNGZjZjE0MjBhMjExOSBsZWdhY3ktdHJ1bmsKKzUxNzkyIDU2ZTdkNjk1Mjk4NTE1NWNiZmY1ZjBkZWQ0NTk0YmRjYTI4NWVlODUgcDN5aworNTE3OTMgNWU1MDJkZTBjZWRhY2ZkNWVhYWY5M2U2NWM3MTBjZmYwODRmZWM5OSByZWxlYXNlMjUtbWFpbnQKKzUxNzk0IDZkNDdjOGJjMDUxMjcxYjQ5OTQ5MGU5YzdmNzgxZDFlZGM3MGVhYzAgcmVsZWFzZTI1LW1haW50Cis1MTc5NSA2ZTZiYWYxYWZiMTJjMDU2MDI2YThkZDc2ZmQ3MDM2NDJjZDY1NDZmIGJjYW5ub24tb2JqY2FwCis1MTc5NiA5NDIwNDU0OWI1MTYwOTNkNzNkOTU1MmQzNWQwMTE1ZTRiNDcwNTRmIGJjYW5ub24tb2JqY2FwCis1MTc5NyAzNjNlZjgwNGEwOTZmNTE4OWJiZjJjOWNhYTc5NmM0NGQxYjJlZWU4IGxlZ2FjeS10cnVuaworNTE3OTggZWYwZjQyYmYyYTA4NTM1MGM5MzkzYjAzMDVmMzY0YTIzNGE5NTgyOSBsZWdhY3ktdHJ1bmsKKzUxNzk5IGM2NDNiMDMxZDUyNmM4MzU3NWQxZTczMjM0NzhmYzAwZjFjNWZmZWIgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTgwMCBlODM3MjJhYTc4ZGQ0NzUzMTQ3OWRjMjM1ZDlhMzVjOWY2MjE1Zjg3IHJlbGVhc2UyNC1tYWludAorNTE4MDMgMzhiYTk1MjQ3ODNhMWVhYmU4ZjY3N2MwMDdmNmNlNTc5N2M0YjA5MSBsZWdhY3ktdHJ1bmsKKzUxODA0IGNmOWQzYjM4MjUxZjkyYWQ2YmIwNmMzNDdhZjcyM2QxY2U2NjQ0MWYgcmVsZWFzZTI1LW1haW50Cis1MTgwNSAxZWViYjY0NzMxMGZiNWVjZmFjYzVkZWI3NWM2ZDUxZWJlMTczOTM0IGxlZ2FjeS10cnVuaworNTE4MTEgNDA1ODA0MTkyYTY4MjgyNWRmODM3MmVhZjNjZmY3YzhhMzJlN2RkZCByZWxlYXNlMjUtbWFpbnQKKzUxODEzIGMzYTM1M2EwNzE0NjhiNThhNzIxZjk4MzdjOTAxNTFiMDY4Y2JlYTcgcmVsZWFzZTI0LW1haW50Cis1MTgxNCA0MWMxZTU0M2I5ZTk2OTc2MTQ1ZDUyMjVkYzg1MTVlN2MyMmVmZTliIGxlZ2FjeS10cnVuaworNTE4MTUgNGU4MTk3NGY3ZTE0MDNjNzRhNzRlZjY2OWM1MTlkNGJmOWU1NTcwZiBsZWdhY3ktdHJ1bmsKKzUxODE2IGQ5NjczYjYyY2UzNWQ5ZDBkM2JmMzBhNjJiZDA0ZWY3N2NjNjUxOGUgbGVnYWN5LXRydW5rCis1MTgxOCA0MzRhZmM3MjhmNmY3NGFmOTA1MDMxNGRiMTIxODZlNmVhMDM4MzU2IGJjYW5ub24tb2JqY2FwCis1MTgxOSBhMDY1YjU1ZTFmYjFkMDZmMDZkZDU1ZTdmZmU5MzM4MmRjMmQyNjkxIGxlZ2FjeS10cnVuaworNTE4MjAgZDVjNmZlYTI1MmYwNDg4MjY1ZTc3ZTgyY2ZhNGZlNDFhMzg4ZDk0ZiBsZWdhY3ktdHJ1bmsKKzUxODIxIGVjNmZkOWNlYmRhMTg1ODdiNjA2ZDY1YTE2YmY0NmQxYTBiOGYxMDAgYmNhbm5vbi1vYmpjYXAKKzUxODIyIDcwMTA4YzYzYzZlNTBlODM3ZDY5Y2RhNmY2MDc0NzBhMWM5MGRkYzMgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTgyMyAzMjM5ZjkzY2Y0ZDIzZWQ2OWZjODgxNzI5NGMyODJlMDE3NGVmY2E0IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE4MjQgMjY1M2Y4MzM1ODc3OTM4N2QxZGQ0MTFmZjY3NjA1OWUxZGFmOTJjNiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxODI1IDg5MWUzMzJjZDJkNmEyNjljMGNhMmIxZDQ5MDMwM2MyZmMxYjExM2YgcmVsZWFzZTI1LW1haW50Cis1MTgyNiAwMjk4Y2M2YzI5Y2Q2ZWNkYWNkNTRlYzI0ZTExNzAwNjFlOGMzZmEwIHJlbGVhc2UyNS1tYWludAorNTE4MjcgYzAzMTRjODkzNmU1MTE2ZDNiYmJiMmY3ZGE1ZTAwYzY2NmI5YzFiZiBsZWdhY3ktdHJ1bmsKKzUxODI4IGQ0ZTUzZTcwY2Q3ODI3NGQwNTM4NjNjOGY1NmJhYTU2MGEyYjVlMmQgbGVnYWN5LXRydW5rCis1MTgyOSA3YmUzMGNiZmM5YjI4M2FhMzg4ZTA3NGEwOGRmZmNiNDczYjJmZGQxIGxlZ2FjeS10cnVuaworNTE4MzAgNTI3YTNkMDA1MmM5MDExMjFiNThiYWFiOTYwOGVjZWMzODFiZWRiNCBsZWdhY3ktdHJ1bmsKKzUxODMxIDZhODNiMjc0MGZjN2NjZGEwM2Q5NjEwZTNjZDBiODk0MjkzMzkxYzkgcmVsZWFzZTI1LW1haW50Cis1MTgzMiA0MDczNWQ1ZjhhY2RiZTc3ODgxZGY5Y2ViZDIxNmZhN2E4NTllZWFjIGxlZ2FjeS10cnVuaworNTE4MzMgYjUyNzU4ODJhM2UwZDRiMGNjNDMxNDdiMzMzZWIzODc0MjZhOTA3OCBsZWdhY3ktdHJ1bmsKKzUxODM0IGE0YTIxNGJkZjhlYWMwZWEwZTljMzhkMWEyYzg5NDc0YWQ1YzhiNDcgcmVsZWFzZTI1LW1haW50Cis1MTgzNSA2ZjZlNTVmZDliNzkxYzJhN2RjYWQ4ODU2MTc1MWU3MTJhZjM1MTBiIGxlZ2FjeS10cnVuaworNTE4MzYgMGViM2YwZjU0YTI2NzRmZWY2ODBhYjUyOTFhZGUxYjVmYjk2ZWFiOSByZWxlYXNlMjUtbWFpbnQKKzUxODM3IGMyZmQ5NzhkZjM5MjI0MjVmNWZlODc5MWRkNDlkYTU1ZDA5MzMwN2YgbGVnYWN5LXRydW5rCis1MTgzOCA5ZTdkYzY0MzJhNDQ2NWI2MzVkNzcxZTZlODJhNmUxOGNjNzExNGQ3IHJlbGVhc2UyNS1tYWludAorNTE4NDEgODA0ZDE3MWMyY2I3MTU1YzY5MzIyZTdhOTY4NzUyMjhjMTE3YzA2ZCBpbnRfdW5pZmljYXRpb24KKzUxODQ3IDBmZmU3ZjkyYWIyZmRlZmEyZjg4NWEyZDE5OWI4ZWU2NDU4YjZmYWQgcmVsZWFzZTI1LW1haW50Cis1MTg0OCAzOTg2YjM2Yjg0OTUyMzM0MGQzMDljOWMwODVjZjA2NWFkNmMyYmRlIHJlbGVhc2UyNS1tYWludAorNTE4NDkgNWVmMDQwNmU2ZDUyNGM2Y2NmNjcxYjI4NDA5MjhkNTc1NTM5ZDY5NCByZWxlYXNlMjUtbWFpbnQKKzUxODUwIGU0ZThmMGE0ZWRhNGZlMjhiYzc1MWFjZGRhZTk2YzE1M2E3ZDdiMTUgcmVsZWFzZTI1LW1haW50Cis1MTg1MSA1NGQ0ZmQwODgzODVjN2ZkYzFlNDFmNjQwNmNkNTU3NGNmMjFmMmIxIHJlbGVhc2UyNS1tYWludAorNTE4NTMgZDA2YjJiNDJkMTM4ODE2ZmViODkyNzc1MDg1OTI5YTZlZDM1NTFmNSByZWxlYXNlMjQtbWFpbnQKKzUxODU0IDE1YWQ2YmEyZTFhNTQyNzgxYmVhYmExMjQwM2RmN2NiNzQwMWUyYTcgbGVnYWN5LXRydW5rCis1MTg1NSA2NmQwMzU3MDI5YjU1YWM2MTY4ZjlhMzAxODM5OTdlN2YyNTc4ZGE5IGxlZ2FjeS10cnVuaworNTE4NTYgYzBhMDcxZGY0NjIxYTU3OTRkNDVhOTJlNGE1OTUzNmQ3Y2IzZTU2ZCBsZWdhY3ktdHJ1bmsKKzUxODU3IDBmN2VlOTkyNWI3YzQyOTYyYjYxNTY0YmQwZDQ0OWEzM2NhMjNmYmIgcmVsZWFzZTI1LW1haW50Cis1MTg1OCAwYmFjNDBlNGQwYzY0M2E3OGMxOGI0NmZjYjBmNDhjNzg3MWFkMWZkIGxlZ2FjeS10cnVuaworNTE4NTkgYzVjOWRiZWVhZmE3NmExZGQ0YmYyNmYyMjYwMWNhZDZmZGQzNzI0YyByZWxlYXNlMjUtbWFpbnQKKzUxODYwIGNjM2NiM2E4MjM3ZWE1NDVkYjkxN2Q4NGM0OWQ4YTBhNWUxNzVjYzEgcmVsZWFzZTI1LW1haW50Cis1MTg2MSA3ZDQwZDM3ZTRjYzM1ZDYxOTE5NDA4MmQ5ZjgyMzkxNGZjMjJmN2I0IHJlbGVhc2UyNS1tYWludAorNTE4NjIgMjQ5ZmRiNTlkYzUyZjliNTNhNTI5MmFkZWIzMzgyZDU2N2I5MDlhYSByZWxlYXNlMjUtbWFpbnQKKzUxODYzIGRjNTBkNGFjOTVkOTFmYzE4MDAxODcwNDA0MTc1N2U5ZjI5ZDM1NjggYmNhbm5vbi1vYmpjYXAKKzUxODY0IDk1Y2YzMWU2OTMzNTAxZjJkM2YyOTZkYmIwN2QyNjUxMTMwYjNmOGEgYmNhbm5vbi1vYmpjYXAKKzUxODY1IDQxNzUwMWVlM2U4NmZmYWNlYmRmMGU2YThiMmQxZTk3NDU5NGY1Y2QgbGVnYWN5LXRydW5rCis1MTg2NiBlNTdkOGFlNDU2NjlmNGQ3ZTJkNGNlM2Q3ZjhhNjFlZWFmMmUxNmQ5IGxlZ2FjeS10cnVuaworNTE4NjcgNTRiODJiZDI1NjkzZTlkN2YyZGY2OGEzOGYxOWVkNTI5ZDlmOGM4NiBsZWdhY3ktdHJ1bmsKKzUxODY4IDUwNDRkMDY5YjUzMjkyZWUwMzBkMTYzZjE2M2YwZTgyZGY2OGZhYjAgbGVnYWN5LXRydW5rCis1MTg3NCAxMGViMWY2YjMwODA5MzQyNjI3Y2ExNDRlMDAzYWJmZGYyNGMzOWEzIGJjYW5ub24tb2JqY2FwCis1MTg3NSAwYmMzOWMxMzE5ZGRjMDM3YWIyYWI0MDQ0OWZmM2NmODI5MmZjYWFkIGJjYW5ub24tb2JqY2FwCis1MTg3NiAwN2E0NGJmZjk2N2Y1ODI2YzM1MTA4MWQ2Y2VkYjcxMjlkMTMyMzZiIHJlbGVhc2UyNS1tYWludAorNTE4NzcgNzRlNDI0YzE3OGY0NWMyMzlmMTk1OWFlNDU2ZDUyYWU1Nzk3NTYyNyBsZWdhY3ktdHJ1bmsKKzUxODc4IDJiMDVlYzVkZjc3Nzc5N2Q0OGVkMzFiYjBkMDU2ODM4ZTVmZTRlM2QgbGVnYWN5LXRydW5rCis1MTg3OSBhMDIzNWQ0MzVlZDRlNzJkNDljNWE1M2YyYzE1N2ZmODI3NWIyNWQyIGJjYW5ub24tb2JqY2FwCis1MTg4MCA3NTE3OWMyZWNhYzFjNWIwZjM1YzQ2NzcyMTQyOWIwMjlhNWZkYWJiIGJjYW5ub24tb2JqY2FwCis1MTg4MSBkYWRhMzRiNGQ2YjZhNGUyZDdhODlmMGFjMDNjMDBjM2M3NDVhMjI0IGJjYW5ub24tb2JqY2FwCis1MTg4MiAzNGFiMDUyNzQ1ZWMyYTcwZTRhMjFjYjc2MGY1YWEwNDUzYWU4ZjI2IGJjYW5ub24tb2JqY2FwCis1MTg4MyAwZWNlMjhjYjViOWU3M2U4Y2YwZjY1ZTIzZWEzYTI2OTU1YmFmODE1IGxlZ2FjeS10cnVuaworNTE4ODQgODk5ZDRkYzEyYzM3OGRiZTI1YjY4OWM0NTFlYjU0NWZkNjhjMTQ3ZSByZWxlYXNlMjUtbWFpbnQKKzUxODg1IGI2NzMzYTM2ZWVjZGY2NTU2YTgzOGMxN2E0M2U3ZWY2MjRkM2YxMjIgbGVnYWN5LXRydW5rCis1MTg4NiA4NzM3NTliMGIxMjYxNmE4MDRlMDFlOWZhYWY0NzNmYmVlMmY2ZmRmIHJlbGVhc2UyNS1tYWludAorNTE4ODggNGYzNmM0MTU5NmIxOGQwZGZmNzljY2MxZDRmMWM1OTFiYjRmNGFjMiByZWxlYXNlMjUtbWFpbnQKKzUxODg5IDJlOTk1ZjI0NGQ2YjYyYzk0MDkwOWVjMDIxYzc3YmRiZGQ5Mjk3YWYgbGVnYWN5LXRydW5rCis1MTg5MCAyYTM0OThkODc0MWI0MmM1MWFhNGIzNzlkNDZhMzRhNGE2NmVhNDM4IHJlbGVhc2UyNS1tYWludAorNTE4OTEgZjljOWY4YTA1YTg5NGJkMTQwNjJjYjA0MWRkNTAyY2Q5OTAxMzNlMSBsZWdhY3ktdHJ1bmsKKzUxODkyIDhkM2I3NjQzNTk5MjFhY2Q3MzAxMmY4N2M3MTRjYjg3MmM1MTM3NTggYmNhbm5vbi1vYmpjYXAKKzUxODk2IDMzMGJkYTI0MDVlZTZjNjgyMTgzZGM1ZWFhNTMxMGI4ODkyMzA0MDMgYmNhbm5vbi1vYmpjYXAKKzUxODk3IDE2NjBlYWEwY2MyNjYzMzMwYzMxMzhiMmZjYjJiMWVkYmUyMjhlNDggbGVnYWN5LXRydW5rCis1MTkwMSBmNWY0ZDJmZGI2MmMyOWFmOTQ0MDNhMjFiNzNmNGI0YzFhN2U0MGJlIGJjYW5ub24tb2JqY2FwCis1MTkwMiBkNDNkOTQyMmI3YWM3OWYzYjZlMWNmZmRkYmZjYjQzMTA3NTNiOTcwIHJlbGVhc2UyNS1tYWludAorNTE5MDMgY2VkZWE5ZTIzYTk1NWM3NTU5YzI3YWRlMzJlYzQwZmQwMDA3ZGUzYyBsZWdhY3ktdHJ1bmsKKzUxOTA0IGJiOWU5MTRlZGUwNTFmYWIwMGIyMmNmMDI4OGZmNGNmNzE2Njc1ZjIgbGVnYWN5LXRydW5rCis1MTkwNSA1OTBhOThhNzBiZjlkOTQ1ZGE2YzFmNmM0YWQ1M2Q0MzA4ZGE1YzA4IHJlbGVhc2UyNS1tYWludAorNTE5MDYgNmIwMWE5YzQ1NWRiZDI2NWRkZWZiN2E3NThiYmUzNTJjM2Y2YzQ3MyByZWxlYXNlMjUtbWFpbnQKKzUxOTA3IDc2Nzk2MmY4ODgzNDYwOWY4ZTg5NDgyN2U4OGRmYjQ0MjExYTE5NGEgcmVsZWFzZTI1LW1haW50Cis1MTkwOCBjMTBhNzFjZjE2ZTQ3MTQyNWU2ZDc1NjRlM2Y3YTY0OGYxNGI3MDJlIHJlbGVhc2UyNS1tYWludAorNTE5MDkgN2Y1ZjQ2YjU2NjExYzE1M2FlYzdiMDUzYzAwZjFkODkwM2ZhMWVlZCBiY2Fubm9uLW9iamNhcAorNTE5MTAgMjAxNDc0MTVlOTdmOWIwY2Q5NTFjMWVlNWQ2OGFmMjlhMjM4ODhkMyBiY2Fubm9uLW9iamNhcAorNTE5MTEgY2UyNDc3OGE2NDlmMWFlNTNmNWQwMDc1ODIxNDQ1YmEyNDkxNWJmNSBiY2Fubm9uLW9iamNhcAorNTE5MTIgNzc1MjM3ODA3N2E1MzdjYjNjZDJhNGMwZmE5NzUyN2JjNzEwNjAwOCBiY2Fubm9uLW9iamNhcAorNTE5MTMgYjQ0NzBhNTQ5OTNhMzg3YzU3OWJmNjc5YjIzYTFjNTQ2N2VkOWQzNCBsZWdhY3ktdHJ1bmsKKzUxOTE0IDc4Mzk0MWEwMGU5ZTI5NTIyOTFjMDhjODQyN2U2OWFlY2JmMTdkNmIgYmNhbm5vbi1vYmpjYXAKKzUxOTE1IGU3MGE3YjcxOTdiNjg0MWQ3ODM2NzA4MGI2ZWY2MzAxZjBhZjVhZDMgYmNhbm5vbi1vYmpjYXAKKzUxOTE2IGI2ZWU0ZDM1NDFjMGE1Mjg4MTIxZDI4OGFkZmQyM2E5ODEyMzY2ODAgYmNhbm5vbi1vYmpjYXAKKzUxOTE3IDA5NGRhZTQ5YWJlYmIzNGRhMzhjM2IwNjQzYmE4MDc2Yzc5Y2JmMjggYmNhbm5vbi1vYmpjYXAKKzUxOTE4IGUwMzZmYzljNjgyNzE0NzdjOTY1ZmE2OTIzYmIyZWVlODEyYjNmOGEgcmVsZWFzZTI1LW1haW50Cis1MTkxOSBiYzc3MmZiNTEzOTI5NWQxNThiNzI3NDU0NmY4YWQ2ZGNmY2IwN2Q2IHJlbGVhc2UyNC1tYWludAorNTE5MjAgNzFiODAyNDBhYzNkZGFlNDE5MmEyYzUwYTFjYmM1NGRiNmNkZGZiYiBsZWdhY3ktdHJ1bmsKKzUxOTI2IDAxNzExMDhhYjUxNTU4ZWIwNmI3YWI0ZTczZDA2ZjUxYzgzMzgzZjUgbGVnYWN5LXRydW5rCis1MTkyNyA0ODg4ZDJkNGQyOTJlYzM4ZDVlM2U5NDMxOTEzOTNlMDdjZjMyY2M3IGxlZ2FjeS10cnVuaworNTE5MjggNzFlMGYzZmM1N2RhNzc4ZjRmZTA4NDliNjRhNjVlYWE2MTFkZDU4NSBsZWdhY3ktdHJ1bmsKKzUxOTI5IGIzMDNkMmMyYzZjNTY0MzQzYTAzNjdlMGZmOGE2YWNlN2FjNTk3MzggYmNhbm5vbi1vYmpjYXAKKzUxOTM5IGVhMjRhOWM4ZWRhMjU4YjkzYWVmNTkxM2MyODgzZGM0MzU2ZGQxMmYgYmNhbm5vbi1vYmpjYXAKKzUxOTQwIDAwMzFmYzJlMDVlMjg2ZTJiYWY4OTM3ZTdiMzNjNzJiZWU5N2UyZWQgYmNhbm5vbi1vYmpjYXAKKzUxOTQxIDAxNTFjMDdjNTNlNTEwNjI3MzJjMDM3ZTI1NjQ1YmUyM2YwZGY3YTYgYmNhbm5vbi1vYmpjYXAKKzUxOTQyIGRlNDkyNGQwMzkwM2Y3NGM4NTlmYzIzMDdlYmIyZGIzYmZlNGM5MDcgYmNhbm5vbi1vYmpjYXAKKzUxOTQzIDFmNDg5N2Y1ZmIyYmViYTYxODhmNGUyMzRlMDJmNGIwZjI4ZTdkYTEgYmNhbm5vbi1vYmpjYXAKKzUxOTQ0IDQzYmFmNmJiMGY4YjBiNGU3M2QwZTAyZThlYmUwZmIzZWVkNDA1YjIgYmNhbm5vbi1vYmpjYXAKKzUxOTQ1IDU2ZjBlYzUwZDczNzE3NDhjOTg5ZTYxY2Q5YjI2YjU3MGU1MjM5ZTMgYmNhbm5vbi1vYmpjYXAKKzUxOTQ5IDkzNjI5NzA0N2MxNzllZDg3NzlmYzIzYjFlNmI0MzZmMzI0NmEyNWMgbGVnYWN5LXRydW5rCis1MTk1MCA2OTUzMGFhMjFiOGE2NDlmZjc0NzBhZTE0Zjk4MWMzY2FkM2MyYTY2IGxlZ2FjeS10cnVuaworNTE5NTEgMzViZjE2ZTdmMTFjZGUxNmM0NWQ2YzA3ZjM4YzUzMjljYWE4NTJhZSByZWxlYXNlMjUtbWFpbnQKKzUxOTUyIGVmZjg4YzZhYWFjMzc0NzZkY2JkOWM5Nzc4Y2E2MTFkODUyYTQ2OTAgcmVsZWFzZTI1LW1haW50Cis1MTk1MyBkZTQ4NjZkNDRmMTM3NzVjNWZkYTMyZDNmYjcxOWNiM2JiNTczMTU0IGxlZ2FjeS10cnVuaworNTE5NTQgN2Y2YjRmYzY3YmI2YjNmMzkxNzllYjgxYjg0MGEwYTE1OTliMzFkNCByZWxlYXNlMjUtbWFpbnQKKzUxOTU4IGRmOThkOTczMTM5MGYxNDc2ODE3Zjk0NDk0NDg1ZjdhZGMwYTBlYmMgYmNhbm5vbi1vYmpjYXAKKzUxOTU5IDA4OWRkZjE4NzdjYzA3OGQ2MTQ2NmQxNDJkZGExMmQ5NTRhOTdhZTAgYmNhbm5vbi1vYmpjYXAKKzUxOTcxIDI0ZjlhMTMwODRiMDE3NDc0NDM5MmZkOGMwN2JiNjNiNzg4YTY4NWQgbGVnYWN5LXRydW5rCis1MTk3MiBiOGNiNzIwMTM3OWM2Nzk1MGRlMTFhZWZkM2MwMzExMTE0NDM0MWNiIGxlZ2FjeS10cnVuaworNTE5NzMgYWVhMTljMmE0NWJmYzk0YWUxNjE1NzkzYmE2MGFjOTQ5MGYzNGQyNCB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzQgMjY2MTg1MjhmYTNiNzY0YjA4ZDY3ODFiM2I4MzM1MWJhNjY5ZDUzMSB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzUgOTRhOGNkNTg4OGU3MGIwNzAzYjU2ZDY0YjFhMTE0NDEzNDNkNDM4ZCBsZWdhY3ktdHJ1bmsKKzUxOTc2IDBiNjNjMjg1OTM0ZmEwNTBmYmZiNGFiNjdiN2YyZmIxMjJiZTk5ZTcgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTc3IDY5YmUwMTVhNGI1MWMwM2QyNDkwYTQ5NTc0M2YzZDg4YzlhZjVkZjQgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTc4IGM3ODFjOTgwYzlhMGRkODgwYjkzMWRmMWE1YzhmZWMwNDJiMjM2OWQgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTc5IDA3OWY5YmViMWQ3ZmEzNTkyMmIyODY4MGNjZGNhNjc1MWVhMDBiNjIgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgwIDU4NzJiYWJmZjYzODRmNDZlNTNlNTM5OTRkODFkZmViYzJkNjI3OGYgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgxIGUzYzVmM2I1OTI3MWYwMmVhZjBjMzZjOTA4ODc3ZmRmNjNlOGQyNGMgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgyIGUyNzQzMjIyNTgxZDI4ZGJlOWZhOGZiMWJmN2YwNDIwMDBlYjY4MWUgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgzIDc0Mzk3YjAwOTkxNDFmY2FmZDllYzIyY2FmN2VkZTc5ZjVlYzM2MTUgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTg0IGI5NDI3OGUxYmNiMzE0MWE1MDJkNzM2MzVkNDM3MThhMjk2NjM0NTcgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTg2IDA0Yzk5OGZmMjhiN2Q0MWNkMzI5NzY0NzIxZTg1NjBkNGI0YmY4NWYgbGVnYWN5LXRydW5rCis1MTk4NyBjYWIwNTY5MDNiM2RkMjY0OTJmMDZlYTkzMjhmZTVhMzNmOTQwZjM3IGxlZ2FjeS10cnVuaworNTE5ODggYzIwYmQ3NGFjOWE2N2RkZWIyMjc1ZjA0NDE4MDVhYmE2ZWFhMjc2NSByZWxlYXNlMjUtbWFpbnQKKzUxOTg5IDQ3OWUzODljYjQ2MmY4ZGNiYTg4NWNlYmM5YTAyNjVlYWE3MTg2NDcgbGVnYWN5LXRydW5rCis1MTk5MCA3ZjZkZGY1NTVjMTIwYmM5MzVhODI5ZTc1MGNkZjExZGQwZmUzMzE5IGxlZ2FjeS10cnVuaworNTE5OTEgZDk5NzUzMzE0NDUzMzUzZGRlZWI5OTZmYjdkMDc1NzIyOTlkZDgwMCBsZWdhY3ktdHJ1bmsKKzUxOTkyIGI1MjkyZjk2Nzg3N2NjMzQ5YTE0MzU5MmE1NWJjZjE1M2EyZjkzNmUgcmVsZWFzZTI1LW1haW50Cis1MTk5MyAyNWJjZGYzY2QxOTQyMWQ0MzQ0N2U0ZWY2YjE4NDg5Y2IwNjhkZjk5IGxlZ2FjeS10cnVuaworNTE5OTQgMzQ3OGMxNjAyMDdiNzlkNmY4YzE4NWU0MjMwYzYyZTgyNTAyODI3YyByZWxlYXNlMjUtbWFpbnQKKzUxOTk1IGVjYWFmYzMyYzUwMDA2MzE0NDlhNjAxYjg0ODYxNDFhYmFmNjE4NWEgbGVnYWN5LXRydW5rCis1MTk5NiBjY2RkYjIyNjExZGM2ZjBkNTYwMGNlYjExNWNlZjlmMDI0MGE4NzIyIHJlbGVhc2UyNS1tYWludAorNTE5OTcgNjAzY2RlNWVkMWViYzU3ZjY5NTkxOWMyNzlhYTM4MzRiMzI2NGVjYiByZWxlYXNlMjUtbWFpbnQKKzUxOTk4IDNjN2YxODgxZTgyYTk2YWU0NjViYzAyYWYyY2VlOWViMmY0NGExYTkgcmVsZWFzZTI1LW1haW50Cis1MTk5OSBkZWM3ZDk5M2I2OGYyNDE0OWFkODhmMTkyODJlZWMyZTFlYWI1NmI0IHJlbGVhc2UyNS1tYWludAorNTIwMDAgZjhhN2RmYmY4MWQwODkyMmIxMDVmNzZkZTMwMzU4ZjYwNjM4MDA0NyBsZWdhY3ktdHJ1bmsKKzUyMDA1IDc4YzVhMDM5ZmEzYTY0MjNjZTA4MGQwNDlhYjQ4YTM0MDUyMjg4NDUgYmNhbm5vbi1vYmpjYXAKKzUyMDEwIDc4ZDRlNWU0NzBjZjgyNDNhOWM2N2EwN2M4NWZhZWFhYjZiZWRiZDcgYmNhbm5vbi1vYmpjYXAKKzUyMDExIGIwNzIyMjhjOTVhMjA0MDUwMTA3ZWEyMjU5ODRkMWNkODVhYjEwYzYgbGVnYWN5LXRydW5rCis1MjAxNCA3NGRjZmQzNmY3YzRhMzliMjU2NWE4YTNmMmQyNjlkMTliNTZjMjVkIGxlZ2FjeS10cnVuaworNTIwMTUgZTZhNGUwNjc4OTkzY2U4NmQwZGE3YThhZmYzMDlkN2FhNjBlMmZiNCByZWxlYXNlMjQtbWFpbnQKKzUyMDE2IDkzNDdjMmI0NTFiYWQ5YjFkYTNmYmEyN2JhNjQ1YjJhOGZmNTEzMGIgcmVsZWFzZTI0LW1haW50Cis1MjAxNyA2ZmI0NmU4N2Q1Zjk0YzYwZTU0OGZjMTQzYzU4NGEwNGRhNTQxYTFjIHJlbGVhc2UyNC1tYWludAorNTIwMTggM2I3MGRhOWVlMzY4NzU5MzAyZTdkYmM1NDdhNzY5ZTcxNTUwMjAwZiBsZWdhY3ktdHJ1bmsKKzUyMDE5IGE1MjE0MmJjMTU4ZjY1ZDVlMzY3Y2I2YjcyNDdlN2QwMDc1ZTgyODAgcmVsZWFzZTI0LW1haW50Cis1MjAyMCA2OGE1NmExNWQ3NTU5MzM2YzZhNWJmZTVmMzEwYTdmYTE0NjRkZGRkIHJlbGVhc2UyNS1tYWludAorNTIwMjEgOTRkZmJiOWRhYzU3OGIwMzdkZmJkMjg0ZDgxMjQ2ZDY3NDUzY2ZjMiByZWxlYXNlMjQtbWFpbnQKKzUyMDIyIGM0OWYwMmE1MGNhZGQ2ZjgwMWNiNWUyN2Q4ZWFhM2JkY2ViNjVmNmEgYmNhbm5vbi1vYmpjYXAKKzUyMDI4IDE2OTZkODViYTA0MzU2NDVhMmFjZjQ3NTQyNGVkODkyOTU4YzhlMTYgcmVsZWFzZTI0LW1haW50Cis1MjAyOSBhZjMxODZjNjQwOTIwN2M1OGNlN2QyNTE2MTkxY2Q4ZDUxZmE2NTg0IHJlbGVhc2UyNC1tYWludAorNTIwMzAgODg0ZDFjYjcwMjIxNWJiN2QwMmQ2NDY2NzFiODUzMTUzMTk2ZjhjNSByZWxlYXNlMjQtbWFpbnQKKzUyMDMxIDEyODY5YWFlOWY2ZDllZGZiZThiNjhiNDIyZjAxYjA2NjVmYzhmNDUgYmNhbm5vbi1vYmpjYXAKKzUyMDMyIGY5MGJhMzA2YzI4N2E0OGRiMDEwMzU5ZDJjYWM5ZDkxZGJiOGQzOTMgbGVnYWN5LXRydW5rCis1MjAzMyAzNTA3Nzc1ZjRlZDQxZDU2YTJhN2E4NzhhZmVkMjg2OGY3NjMxZmVkIGJjYW5ub24tb2JqY2FwCis1MjAzNSBmYjI4OWVlMWNkNjA3YjM3OWEwMWVhYzI2MDhlOTY5M2E0OWU0YWUwIHJlbGVhc2UyNC1tYWludAorNTIwMzYgYWI3OWVkMGY5MjgxNzVlMTkwNzUyMjFhNjhiZDE5NjAzYmNjZWVlNSByZWxlYXNlMjQtbWFpbnQKKzUyMDM3IGNjMThmZGFkMTA4YjdkNzIwMDc5N2ViMDVlMWM1MGMzNzkwODExMDYgcmVsZWFzZTI0LW1haW50Cis1MjA0MCA0ZjExNzQ1YzdlNWZjZTg4ODE0ODZjYzhmZjY0N2ZjMzVmYzliODM3IHJlbGVhc2UyNC1tYWludAorNTIwNDEgYzExY2FlMmI5YTc1ZjJhODE0MWQ4N2EwMTY1MDM4ODAxN2Q0OWE3YiByZWxlYXNlMjQtbWFpbnQKKzUyMDQyIDI2MzJjOWFmNjRhYmIyNTI3NjE0YjRjYTE2YWNiODkyOGY2ZmM1YzcgcmVsZWFzZTI0LW1haW50Cis1MjA0MyAxNWRkYWJlNjNkOTUyYzY3YjM1M2FjZTNkMjI4Mzc4MzBmYmU1NmI1IHJlbGVhc2UyNC1tYWludAorNTIwNDQgMWU1ZjBiMDQ2NmQ4ZGYwZGJhOWM0ZjAwMTYxNGU1YTY1MDNiODhiMSByZWxlYXNlMjQtbWFpbnQKKzUyMDQ1IDllMGZiOTU0NzkxZWM5MzQ5MmVjYTdhZTIyZmY5MzhjY2IxNTMyNWMgcmVsZWFzZTI0LW1haW50Cis1MjA0OCAwNTg2MTc0OWVhY2QyMTFhZmIyY2YxM2FkOWQwYWQzZmY4MDdkZmYxIGxlZ2FjeS10cnVuaworNTIwNDkgMDFjMDNhNzExYjE1Y2IxZWQwMWZkM2YwZDMxNGQzMDA1M2U2NmY4ZSByZWxlYXNlMjUtbWFpbnQKKzUyMDUwIDUyY2RiZTRiNzY0NGQ3MmFhOTJjYTBmYzY1NDg3ODYxNGNjMTNkNmUgcmVsZWFzZTI1LW1haW50Cis1MjA1MSAwZWRmMzk5OTYxOGFlMjhjZjk2OGE5YjAwZWRiMDI3MmNmMWIxM2FiIGxlZ2FjeS10cnVuaworNTIwNTIgMWRjMjJjYzIwMTMyZjJhYzA1OTk3N2E1YzRjN2ZhMmE4YzMwODQ4MiByZWxlYXNlMjQtbWFpbnQKKzUyMDUzIGRlNzlmMTg3MGFlOGYxZDg2ZDFmNTg1MTg2ODFkMzQ2ZWZlMzVmZWEgbGVnYWN5LXRydW5rCis1MjA1NCA1ZGZmYTM1Y2M2NDMwMmMyYzNkZGEzYWUxZmNkYmFjOGQ2ZmM4MjliIHJlbGVhc2UyNC1tYWludAorNTIwNTUgZDgzMzgwNmM3MzUxYTU5MTcyNjJjODg5MDBjNTJmYzgxZGM2NWE2NCByZWxlYXNlMjUtbWFpbnQKKzUyMDU2IGM0NzdhMGUyYjA2Nzk5ZGFhZDg5NDUyZDk4MWM3NWRjYzQ5YzM5ZDEgbGVnYWN5LXRydW5rCis1MjA1NyAyYzgyNGE4YTFmYjhjZDU2YWE4ZWI2ZmVmZjljYTU2ZDM1MzFmZGE2IHJlbGVhc2UyNS1tYWludAorNTIwNTggNDlmYmRkZmIxMjE3MDFkZGVlMTY0YWM3NTJiMTMyMTI4MGZiY2Y2OCBsZWdhY3ktdHJ1bmsKKzUyMDU5IDEzY2YzNDRkZThjOTg5ODRmMzVmOGQzODE5YzE4MTY4NDQxNTE0YzUgcmVsZWFzZTI0LW1haW50Cis1MjA2MCA1MjQ2MGIwOTJiNWE2NmQ1YTM1OTNhMTZmMmU0Yzc2MzFiODlkOGY2IHJlbGVhc2UyNS1tYWludAorNTIwNjEgZTFhYjQ2NTNlYmMwOTMyNTk2YjZiMDY0MmMyZjBlODliMTkyYzEzYiBsZWdhY3ktdHJ1bmsKKzUyMDYyIDM5ODZiZmU1MzEwMWRiMzEyOTIyOTQzYTZjOTMxM2Y3ZTk5NzQ5Y2YgcmVsZWFzZTI1LW1haW50Cis1MjA2MyBlN2E1ODM0MWIyZThmNzUzNWQ3N2NkMTRjMjI3YjJhNzE4ZDMzNWUxIGxlZ2FjeS10cnVuaworNTIwNjQgMWJmNTFkMmY0NjlkMmQyZmFmNzgzYmM2OGY1M2NlZjliZjI4NDZiOSByZWxlYXNlMjUtbWFpbnQKKzUyMDY1IGI5YTJlZjEzMDJkNDdjY2Q1MTUwZDU5M2ExOWM2MWU1YTAzYjYyNWQgbGVnYWN5LXRydW5rCis1MjA2NiA5OWQxYzkzNjc2Nzk0ZDJkNGI1ODNiNjQ4NjI3YmFlNmI0ZmNlNmI2IHJlbGVhc2UyNC1tYWludAorNTIwNjcgMzMwZGJjYWRiOTMxNzFmNjIzN2ViMThkN2FhODFiOTk3NGRlZjQ2YSByZWxlYXNlMjUtbWFpbnQKKzUyMDY4IGZmYjkwMTM3NGEzODI1MzlhOTA2NTdhNTRjODljY2RlMDhmZjJjZjUgbGVnYWN5LXRydW5rCis1MjA2OSBkOTE4MjZiYWM2NTU1Y2IwYTYxNDZiNzU1YzY2Y2I0NWUzYzRjZjY5IGxlZ2FjeS10cnVuaworNTIwNzAgOTVkMjQ3M2Y3NzcwY2IxMGM2Zjg5MzVjMDIxMTZjZGI3N2QxNDM2YyByZWxlYXNlMjQtbWFpbnQKKzUyMDcxIDljYWY1YTlkYTU1NGQwYmFiM2JhMWFjODQ5NjJjNDZiMDc1NGJmYzAgcmVsZWFzZTI1LW1haW50Cis1MjA3MiBiN2FlODk3N2QwNmU0OTdkNmZkYWRlYWEwYzg2ZDMzNmFlZGNlYWNkIGxlZ2FjeS10cnVuaworNTIwNzMgOWJlMDMyMjZhN2JmOGRhOTllZGYxNzkwYWU1NTk4NjIzMmZlYmEzMiByZWxlYXNlMjQtbWFpbnQKKzUyMDc0IGNmNThmYjg0NTBiYTMwNWQ0ZmMwNTlkOTA5NWE1ZWFhMDAyOTdjY2UgcmVsZWFzZTI1LW1haW50Cis1MjA3NSA0MGUyZmVlMDNhOTQ5MjI1MDk4YmI4N2Q0YmZiNDI4ZjdmY2RjZmJhIGxlZ2FjeS10cnVuaworNTIwNzYgNTEzMGI2OGI1NGU5NGE4YjA5MjIzYWQ5NTJjYWExNzA2NTNmMGYxMCByZWxlYXNlMjQtbWFpbnQKKzUyMDc3IGRmZDgwOWRjZjY4MDAwZmU2YTRhNjgwYTI1MGMxZjllYjk4ZDJlYzIgcmVsZWFzZTI1LW1haW50Cis1MjA3OCBjODlhNzU2YzA5NjVhOTBkMzVjYTYyMWIzMGI3ZDQ1MjFhMjZlZTU0IGxlZ2FjeS10cnVuaworNTIwNzkgOTA3MjhkZmMzM2U4NTg4NGRjY2VjYjgzNmU1YjAxNDVlYWVmODQ3MyByZWxlYXNlMjUtbWFpbnQKKzUyMDgwIGQ3NDMzODExMzFkNmM5ZjFiODkzZTEzNmExNjg0ZWVlNzc2MTg5YmIgbGVnYWN5LXRydW5rCis1MjA4MSBiZjQ3ZGU2ZDljOTE4ZTIwNmMzYWI3ZmNkZWNmNDUxZDg2ZmQxYjE4IHJlbGVhc2UyNC1tYWludAorNTIwODMgMjU3ZGFmMzliMDhjNjhlNjJmNGU3MGQ1NTEzOGQyMjY5YTgwOGMyMSBsZWdhY3ktdHJ1bmsKKzUyMDg0IDg5ZTRhZWJiZjMxYzQ2MDkzYjNjY2E3YzgxODIzYzg3MWRjYjZlYzkgbGVnYWN5LXRydW5rCis1MjA4NiAwMGFmNjk4NzAyNmE2ZDVjMWUyZDNlMTY0NWRkMWY2YTk3YjM5MGE2IGxlZ2FjeS10cnVuaworNTIwODcgMWRhMDRjOGVlOGZmMDAzMDg4NzA3OGE4YmRhNjhlMjQ1ZjZhZDdlZiByZWxlYXNlMjUtbWFpbnQKKzUyMDg4IDlmY2FhOGVlOGMyMmZkYjNlZDYzYzMzYTM2Mzc5MDg1NzZiYTVlMTMgcmVsZWFzZTI0LW1haW50Cis1MjA4OSAxNjk3ZDBkNGVmMzM3YTg4MjJiNTkzNTBhN2JhYTAxNWFlMDk0N2E3IGxlZ2FjeS10cnVuaworNTIwOTAgNWMzNmVjNWZkM2MyMzZlYjZjMDQ0MGNmYmU1ZmQ3OGU5OWY4OTg0NiByZWxlYXNlMjUtbWFpbnQKKzUyMDkxIGMwZTcxYTRiNzFjNzQ2ZjBiOGJkYWI1MDU4YzFiNWEyM2ViZmY0MWYgcmVsZWFzZTI0LW1haW50Cis1MjA5MiBjZGMzNjdhYjNiYmZjYjExZmRkNGY1Y2NjYzJkZWU4NzE0YjE2MjU3IHBlcDMwMl9waGFzZTIKKzUyMDkzIGIxNDQ5YTdlMTVlZGVlYWQ4NTdmNTNjYjgwZmY1ZGU5MzZmZmNmZGIgcGVwMzAyX3BoYXNlMgorNTIwOTQgYjQ1NTNiMTJlMjViZTlhY2Y2M2JkYjExYTM2YzdmOTFmMzBmN2UzMCBwZXAzMDJfcGhhc2UyCis1MjA5NSBiMjJiYWExNTQxNDc0ZjUxZmEyY2NmNTJiYzMyMjlkOTI5Yzk2ZTJiIHBlcDMwMl9waGFzZTIKKzUyMDk2IDg0YWZhMzY2ZWVlN2EyYjA2NTQxZTlkYjgzYTBhMzQxOGM3MTIzMTEgcmVsZWFzZTI0LW1haW50Cis1MjA5NyA0NWRiY2IwZTlmYTlmZDRmOTE4NjM5NzAyMTRhOTBiMDZlMDhmNGU4IHJlbGVhc2UyNC1tYWludAorNTIwOTggODE4MTE4YzNhMzQwZGZhMTI3YTJmZWEzY2ZkYWZlMzM1MjcyYzE0NiByZWxlYXNlMjQtbWFpbnQKKzUyMDk5IDU4MGY2YTY5NTE3MjM5NzVjNWVjODMxZjU0NmU5MWYwMGY1ZTU1NGIgcmVsZWFzZTI0LW1haW50Cis1MjEwMCAyYzg5ZDYxNmE5ZWQzN2MwMWYyYmI1NjdlODAwNzA1NDRiZWE2YTBhIGxlZ2FjeS10cnVuaworNTIxMDEgMmUxYzQ5Mzk1Yjk2MWY2NTU1NGY5YTFhNmQ2NzkyOTU0ZjdmZjkzNiBsZWdhY3ktdHJ1bmsKKzUyMTAyIDRkYTRkZTk1NDAxMmI0OWYzNTliNDFiOWU1NDU3YmY3N2FiODk2ZWEgbGVnYWN5LXRydW5rCis1MjEwMyBmMDE5ZTRmODYyODc3YWE3YjBiOTQwOTYyYmNhOWRiMzJlZDY3Njc1IHJlbGVhc2UyNC1tYWludAorNTIxMDQgMjhhOTRiZjdmNjdmM2M0YjFiMmM4ZmYwZGRlM2IwZmY3MjEwNWI0ZCByZWxlYXNlMjQtbWFpbnQKKzUyMTA1IGRlN2MwY2I1YTg3Mjk1YzZhMTQwMzY3YWYwYmIyZWE0YzRmZDkxMmQgcmVsZWFzZTI0LW1haW50Cis1MjEwNiBiMzMyZTFhYzY2Y2NkN2M2ZWY3ZjBmZTY2M2EwN2JjZGJlZGIyY2ZkIHJlbGVhc2UyNC1tYWludAorNTIxMDcgMDYyOTFlYWRkZTJkYjVhMmVjZDMzYTRiMjcxODQxZjM1YzM2ZjRmYiByZWxlYXNlMjQtbWFpbnQKKzUyMTA4IDQ0M2I4NzNmOWViOTA4NTVlZTRjMmZiNTI3NmU5ZDQzZWY4YmZjMGYgcmVsZWFzZTI0LW1haW50Cis1MjEwOSA1ZGQ2YzkwZDQyMjJjYjllNmQ3NmEzYjZmOGU0MmM3ODc3YTQwNGVlIHJlbGVhc2UyNC1tYWludAorNTIxMTAgNmIxYzRkN2QzYTI2YzMwNTQ1ZmZmMDNkNDllNWFlNWRhMzk1NTU5YSByZWxlYXNlMjQtbWFpbnQKKzUyMTExIGI3ZTM0ZmJjODBhZDY5YmNmZmNmOGUwMTA4ZmY4NDhhMmE2MmYxOGEgcmVsZWFzZTI0LW1haW50Cis1MjExMiA1MmU5OTY0ZWY5MjJkNzczMDQ4ZmJhODNmMjdjNzU2MDg5NzRmZjg0IHJlbGVhc2UyNC1tYWludAorNTIxMTMgNTRkMTc3ZWRlODgzODgwMmQ2OWIwZTk4MWVjNjI4ZmI2NDk5NmJjNiByZWxlYXNlMjQtbWFpbnQKKzUyMTE0IDhjODNmZDc5Y2VlNWJlMzA2NDY3NjIxMzQxNTU0MTliMDUwNGIxNDEgcmVsZWFzZTI0LW1haW50Cis1MjExNSBlZjA5ZTI2ZWYwOTlhNDM5MTViMDhjOWVhOWEwODMxYTk0NjgwOGY1IHJlbGVhc2UyNC1tYWludAorNTIxMTYgMmYyMzhhMmNkMTg5ZGZjMzdkNTdiNTNhNzAwZTQwOGJkMzU4ZjcxZCByZWxlYXNlMjQtbWFpbnQKKzUyMTE3IDBiNmIzNjBlOTIxNzk1MTMxMTZkZDhlNGU0ZWI3NGFhZDgxOTRiY2YgcmVsZWFzZTI0LW1haW50Cis1MjExOCA5ZTc2M2JjZDEzY2I5ZmViYmMzNjc4NjU0YmE3ZGNjZGUyODY0YjRiIHJlbGVhc2UyNC1tYWludAorNTIxMTkgMGQzNWI5Zjk0YjE1MTZjZjJmNWVlMjZlMWMxYjFhNTA2NWU2NmNhNyByZWxlYXNlMjQtbWFpbnQKKzUyMTIwIDkxNjc5Mjg3Y2I5NmNmOTg2YzAyNzI0M2JkODAxMGVhZGU1NWJjYzkgcmVsZWFzZTI0LW1haW50Cis1MjEyMSA0N2FiMGMyN2RkMWY5MjJmNGY2MGRiMzdmMDRiNWU1N2U5ZDIzNzhjIGxlZ2FjeS10cnVuaworNTIxMjIgMzYwZDA5NzFhNmVlZjFkODc4ZjBhMGQ1MzRhNWRhMzU1ZDEzODY0YyBwZXAzMDJfcGhhc2UyCis1MjEyMyA5ZTM1YjYyZWQ0ZDJkZjk3NTcyNTkxYzRkMWM1ZmE4NTkyODYyNTlkIGxlZ2FjeS10cnVuaworNTIxMjQgZmQxNGJiNTgzMWNkYWM0Y2NkYTVkN2E5NDJjMDEyNGE3ZWI5ZGM1ZiBwZXAzMDJfcGhhc2UyCis1MjEyNSBhZGE1NmI1NGRiOWE3OTM0Y2FhYzA5NDMyMWEzNzdkZmIwYmE0NTAyIHBlcDMwMl9waGFzZTIKKzUyMTI2IDY2MGNkMDcyMDgwZGYzZThiMDQ1NmQwMjEwZWRmNGE5N2UwZTQzMTcgcmVsZWFzZTI1LW1haW50Cis1MjEyNyA3OWI2NDRiZjAxMTY0N2E1MzFkM2VmZDJhNjNkNTdlNTgzOTBkNTVkIHJlbGVhc2UyNC1tYWludAorNTIxMjggZGI2Y2EzZWE1M2U1YjY3YWU0MTg0MWU1MGU3NWNmMjA4Mzg1NTNiYSBsZWdhY3ktdHJ1bmsKKzUyMTI5IGY1ZDdkZTUwMzFhYTRlMjI3ZGRlZDIyNzE5NTgzOGY2MmZlMWY3YjYgbGVnYWN5LXRydW5rCis1MjEzMCBjYTg4N2Q1NWM1OTIxM2QzNGRlODc4MzQzMjhhYWY5MTNkOTIwMmI5IGxlZ2FjeS10cnVuaworNTIxMzEgOGEyODUzYmY5ZWNhZDNiMTY1ZmRmOTdjZThhY2Q3NzQ1Njc0NTU5NSByZWxlYXNlMjUtbWFpbnQKKzUyMTMyIGUwMzljZjZiN2Q0MjljZTU5MDVhN2ExYTgyYzc1YTIxMDBmZDRkNTQgcmVsZWFzZTI0LW1haW50Cis1MjEzMyAxYjYxZTgyNjYwYmE5YzljMDEyMzIyZjQ5ZDQ3MjgxZTA0NTg4ZmVlIHJlbGVhc2UyNC1tYWludAorNTIxMzQgMTBiYjdhY2JiZGM4MzdlMjlhOWIxMWYxMzg3YTZiMWIyY2EwNDVmYiByZWxlYXNlMjQtbWFpbnQKKzUyMTM1IDJhZGQ0NGMwZGU2YzdkYWE2NDdlN2Q4ZDI5MzYxZWI0OWU4YTY1NDcgbGVnYWN5LXRydW5rCis1MjEzNiBhOWIxZjQwNGU4OGI1OWNlNDgxZjNiZjgyNzYzMmZmMTAzMjY4YzFhIHJlbGVhc2UyNC1tYWludAorNTIxMzcgMGM4ZTlmOTI3MmQ1ZjNlMTQ0NzFmNTUwYjA0MjBiMDg3ZDI2NzRmNCByZWxlYXNlMjQtbWFpbnQKKzUyMTM3IDBjMzY0MTBjMzllOGRkYmI4OTUxODU3ZGM0YWRmMzNmMjlmZGMzNWEgbGVnYWN5LXRydW5rCis1MjEzNyA0ZWIyODZlOTMxYTk1ZGRkYjE4ZDNlY2M2OWFjOTczMjQ3NWY0ZjNlIHJlbGVhc2UyNS1tYWludAorNTIxMzggNzk4OTM1ZTEyOTVlN2ZhMzI0MTA5ODMwOGU1NzUwMmY1MTVhZWVkZiByZWxlYXNlMjUtbWFpbnQKKzUyMTM5IDZiYTQwMmI2MDA0MThhNTY4NDUzZmFiOWVlZTdmM2NiOGFhMTQwYTYgbGVnYWN5LXRydW5rCis1MjE0MiBiZmFjMjMzODhhMjI0ZTc5OGJjMjExZjVhNmZiNTZhNzlkZDAxNjk5IHJlbGVhc2UyNC1tYWludAorNTIxNDMgZGY3YTU0MzVlY2JiNWNmZmI1NjBiZjIwOTMzMDRhZTk4NTg1MzUyMCByZWxlYXNlMjQtbWFpbnQKKzUyMTQ0IDQyYWJmYjM5MTMwMGEyNTA3NjU3YTlmNTUyMDllY2I3NTIyMWUyZTQgcmVsZWFzZTI0LW1haW50Cis1MjE0NSAwNGVjMzkxNDEwY2JlNDZlYjkyZmQwOTAzMzUzMjQwZjc3YTc4NmI3IHJlbGVhc2UyNC1tYWludAorNTIxNDYgNTI3MGIxZTM2NjQ4ZWYwNDI3OGFhY2QzODZhZjEzNjY4NjExYzU4NiByZWxlYXNlMjQtbWFpbnQKKzUyMTQ3IDQ0MDRhMzk4MTQ3MDY0MWQzMTdiODk5YTU1OTkwOTE5MzVmNjI2MTUgbGVnYWN5LXRydW5rCis1MjE0OCA4YWFhM2Q5MWVlZmE3ZjI5NmNmMmM3YzNkNzkxYmZiN2UzNjI2NjQyIGxlZ2FjeS10cnVuaworNTIxNTIgYjFlNzM3N2VjZjA0NDYwMTA0MzdjMjRjYmNmZDZkZDE3MGMxZjQ4OCByZWxlYXNlMjQtbWFpbnQKKzUyMTUzIGU4OGM0MjY3YWNkMWM3OTE3NGJkMGE2YTEzODIzODNmMjZjN2VmNjIgcmVsZWFzZTI0LW1haW50Cis1MjE1OSBhNGJiZmNhNDBjN2NmNzZmMDFiNWQ4MjRhZDZiNzAwM2EyY2U2NWVmIHJlbGVhc2UyNC1tYWludAorNTIxNjAgZjZiYmU4ZDZmYTMzMDM1NWUyZmE2MWE3ZGU4MzIyMDUzYTU0ZTJjYSByZWxlYXNlMjQtbWFpbnQKKzUyMTYxIDFmNTg4YTk4MmNjNTZjNzVlYmI4MGFlMDRkNTg5MTRkZDA5MDlhNmEgcmVsZWFzZTI0LW1haW50Cis1MjE2MiA4MDE3YjNmMjFmNjJlNmEwNGI3OThkM2E2MjJiZWJhNDI3NDFkMzNjIHJlbGVhc2UyNC1tYWludAorNTIxNjMgYzI3ZDhmODlhYTg5MTU1MTljMTBmZGE3ZmQ1YjcxYTYyMWYyYmQxYiByZWxlYXNlMjQtbWFpbnQKKzUyMTY0IDk4MTljZGQyZmNiMTU2OWFkYmE5M2ZjMzI4ZWQwNTAyMjdiNzI3Y2EgcmVsZWFzZTI1LW1haW50Cis1MjE2NSBhOWZlZTFmNjJmMTc2MDY3NjY2YzA4ZjdhNmZhYTg4ZWY0MDU0NTI2IHJlbGVhc2UyNC1tYWludAorNTIxNjYgYWIxMzU3NjM3NGIxYTk1ZmY3MGQ5ZTlhMzg1ZDBlYTIyYWYwZTU2MSByZWxlYXNlMjQtbWFpbnQKKzUyMTY3IDVlMjQ0OTk0ZTQyZTUzNDI3NWRlMjRiYmYxYTViODQ5M2Q1Y2FiNDQgcmVsZWFzZTI0LW1haW50Cis1MjE2OCA1ZDkzZTVjY2IzMWU3NGM3ODM0MzhkZGM3Nzk0ODgxNTU3ODM1MGJmIHJlbGVhc2UyNC1tYWludAorNTIxNzAgY2Q2Y2U2NjZlZmY5MWJmYTIxMjY1MTI5MDRiNDUxOTdjNGQ4NWEwNyByZWxlYXNlMjQtbWFpbnQKKzUyMTcxIGU2NTgzNjgxNTc5MWM3YmY2ZmYwMDEyMzFmMDQwODFjMjQ4YmM5ZTcgcmVsZWFzZTI0LW1haW50Cis1MjE3MyAzYjU3ZWVjZGM1MDRhMTAwYjVmZDM0ZDE2YjQyMThhOTA5NTUwYTY4IHJlbGVhc2UyNC1tYWludAorNTIxNzggMmE0NmI3NmJlYjllYmQ5YTI1NjI0MmVkZjA2ZjczMTdhMzUyMjQyMSByZWxlYXNlMjQtbWFpbnQKKzUyMTg2IDQ2NjNhY2UyMzQ5OWNlNjdhZjBiNGNiNTgyOWRmY2FlYjk5NmZlM2QgcmVsZWFzZTI0LW1haW50Cis1MjE5MCA3YmJmZjJlOWE5YzIxOWM1ZjkwZWQ1MWI0Y2JhYjEzMTJjMDVmYmEyIHJlbGVhc2UyNC1tYWludAorNTIxOTIgNWJlYzRhNjdmZjBkYTg4ZGNkNDczODI3NTRmODA4N2I4Njc5ZWJiOCByZWxlYXNlMjQtbWFpbnQKKzUyMTkzIDQ1YWM5Y2UwYmIxNTcxNmRjMWNkZTQ0MTQ5OTRiZTE5MDE5OTI4YTIgcmVsZWFzZTI0LW1haW50Cis1MjE5NCA2YmIzNzVmNTU5Y2U0Njc0YzFjZTdjMzQzMDNhYWU5NjY2MzkyNDllIHJlbGVhc2UyNC1tYWludAorNTIxOTYgZTgxZmY5YWY2NDFkYjI1Y2JjM2NhMzk1Y2I5YTA5MzRhYjMxMWZlMiBsZWdhY3ktdHJ1bmsKKzUyMTk3IDZiMWRkZjM4N2JkMTk1ZTU4YmEzMjQzY2VhYjNkNjY2NjM1YjMwZGUgcGVwMzAyX3BoYXNlMgorNTIxOTggNTQzNGVkNGZlODYyMjY3MWUzYWJkZDk1NGMxNTk0OTY4YjAwOWRmNCByZWxlYXNlMjQtbWFpbnQKKzUyMTk5IDQ3MTNkOTkwMGU5ZTljYjcxNjBhZDFhODdhZGExM2Q4YjgzNTk1ZTcgcmVsZWFzZTI1LW1haW50Cis1MjIwMCA3NzY3NGMwZjkyMTQxMDY5NzU2ZmQ4NjgzY2QzZjk3MjczZjRmZmM5IGxlZ2FjeS10cnVuaworNTIyMDEgNzhkN2JlYTNjMTIyMGJhMjVhN2EzOTkzZTYxMDkzYjk5ZmYyMDc3MyByZWxlYXNlMjQtbWFpbnQKKzUyMjAyIGRkNTRiZDZhNmIxZWNhNGM1ZjMwNzY2OTI2ZGFjZjNjYmNkYTYzMmMgcmVsZWFzZTI0LW1haW50Cis1MjIwMyAwNzZjMjBjYTVkN2I2ZjM1OWMzZjk1NjE5YTVjMmM0YmU3ZmI4ZWEyIHJlbGVhc2UyNS1tYWludAorNTIyMDQgMjZjMmZmNzI4MDI3ZmY4OTJlM2FlZjEzNmU1NmFkMmIxOTg2MWJjZiBsZWdhY3ktdHJ1bmsKKzUyMjA4IDVhZWE4YjFmZDI2MjU0MGQ4NGY4ZWIxN2Q5NDhmMWMxYmY4ZjZiMjQgbGVnYWN5LXRydW5rCis1MjIwOSAzNTcxNDcwMGNmODdjNTRiMDQzMWFiODU0OWVjYmIyNWZiNWY1NGU0IHJlbGVhc2UyNS1tYWludAorNTIyMTEgMGU5ZmRiMTY0ZDIwNjEyZDY1Yjg2MjhkNWI1NTVmZDczZWIzYjUyMyBsZWdhY3ktdHJ1bmsKKzUyMjEyIDk5NGFkNzUwYjBlM2JjMDU4YzU4OTNiMWJkNWZmOTFkMTcyYWMzNTcgbGVnYWN5LXRydW5rCis1MjIxMyA1ZDgzOTk0Y2Q4Y2RmNDBhNGIzMzVhODNhZmFkYzY1ZTE0MDU4YTM1IGxlZ2FjeS10cnVuaworNTIyMTQgZDI0ZWFhZWRhNzQ4YzQxNmY2NzI2ZGNiODJjODRkODQ4MTM4MzU5NiByZWxlYXNlMjQtbWFpbnQKKzUyMjE1IDkxMThlYTc4MWZkNTJhZjRkYTY0OTQ0MTUyMDY1MDI2MWQ1NmRkZGIgcmVsZWFzZTI0LW1haW50Cis1MjIxNiAyYTA1ZWU0YTIzZTA3MWQxZWQyNWY4YzgwOTE5OTAzYWQ2MDI2OTI1IHJlbGVhc2UyNC1tYWludAorNTIyMTggN2MzNDk0NGQ0YzgwYmU5NzU4YzAwYzZlMmM2NjIxNWRlZGZmMGE3OCBsZWdhY3ktdHJ1bmsKKzUyMjE5IGEyZjI2Zjk0NGI2NTcxNzlhZmUzNmQzZTZkNmZmZThhMjgyYjkzNDQgcmVsZWFzZTI1LW1haW50Cis1MjIyMCBlZDg4ZDZiN2MxZjk2NjkwM2JkOTFkOWE5ZWU3ZTAzOTFhYjIzMjdhIHJlbGVhc2UyNS1tYWludAorNTIyMjEgMTZlMjg5MmUxZTNjMmEyNjkxNWMyNjE4ZTcwNWM4OWFiZDY0MmM5OSBsZWdhY3ktdHJ1bmsKKzUyMjIyIDllMDQzMWZkNjc0YTI0Zjk4ZGIxYmNhYjdhY2IzYzYxZTkwMmY4YmEgcmVsZWFzZTI1LW1haW50Cis1MjIyMyAzNDc3OTQzOTFjZTQzNDBiYjVjMjFiMWU4MWM2NDYyMmFkNWVlZmE4IGxlZ2FjeS10cnVuaworNTIyMjQgZDNjMTk0N2QxNjY2NTMxZTFiYTFiOTgxZjgxMjZiM2Q1YjAwYWVjNiByZWxlYXNlMjQtbWFpbnQKKzUyMjI1IDkzZTJiMzExMmQ3OWUxMDllYzViNjQwYTBkNDMzNTM1YjBmMTI2NWYgcmVsZWFzZTI1LW1haW50Cis1MjIyNiA2OTljYzZhNWM4NmViOGE1OWFiMDU2OTFkODA5NWFlZjUxY2U1ZTYwIHJlbGVhc2UyNC1tYWludAorNTIyMjcgYjlkMzMwMWU1ZjE5NWU2MGQ5OTM3YmE3YTk5ZTQ1YmNjMjQxYjQzYSBsZWdhY3ktdHJ1bmsKKzUyMjI4IGRlZWVhNGRhMWYzNTQ5ZWYzM2FkZWM2MTk2MDQ5Yzc0ZDQ3NGE4MmIgcmVsZWFzZTI1LW1haW50Cis1MjIyOSAyMDQ3NGQ5ZTc1ZTE0YmRjMjA0NDY5ZGFkNDA2YjhmZTM5Nzc4ZDY5IGxlZ2FjeS10cnVuaworNTIyMzAgZjgwNWNjY2UyZjU2NGUwNTJlNjg2OGMwYmI2ZTI3NDY5ODIzYzdhNCByZWxlYXNlMjUtbWFpbnQKKzUyMjMxIDY5M2ZmNWQ3MzQxMjUxZjk2MzE2ZWQxNjVlYjRlZWZjNDZkMzVkODQgcmVsZWFzZTI0LW1haW50Cis1MjIzMiAwZGMyNjFkOGM1N2ZhODQ1MzFmMWQyODNlMTkzYTA0YjQxMWYzYjJhIHJlbGVhc2UyNC1tYWludAorNTIyMzMgODM5NjU5NzdmMzRhMWFlMzk0NzUwMDIwYzM5OWQ4ODM2ZDA3ZGVmNCBsZWdhY3ktdHJ1bmsKKzUyMjM0IDc2ODg5NGYzM2YxYzM0N2Y0NDA0ZGU5NWRiZjNiZWUzNjMxYWVjZTIgcmVsZWFzZTI1LW1haW50Cis1MjIzNSA3MTE3ZjZlNWFjODM5OGRlNzFiYWZjZDI1NjNjMGI4MzFkNjBlZTY4IHJlbGVhc2UyNS1tYWludAorNTIyMzYgOTFiZTk2NjQ2NDA3MzI4YWE3N2ZkM2M0ODAyY2JjODhjOTgwMGU2MSBsZWdhY3ktdHJ1bmsKKzUyMjM3IDIwZGQxM2FlZTIzMzQ5MTIyOTIxYWNiMjJlN2UzNDQyY2I4NDFjNjUgcmVsZWFzZTI1LW1haW50Cis1MjIzOCBjMzM5YTFhMTZlYzViNjQxNTZkMjYwZmM2MTkwZDNkNmRmMTNiZjM2IGxlZ2FjeS10cnVuaworNTIyMzkgNDc1MjI4ZWQyMDU0Yzc4MmNlNTIzY2RhNjY0NDY4Yzk0NTA0MzAzYyByZWxlYXNlMjUtbWFpbnQKKzUyMjQwIDBhY2UzYzgwNjExNDEyZGI4ODAxZTdhMzQwNzhjYjM3OTBjNjkyYTcgcmVsZWFzZTI0LW1haW50Cis1MjI0MiBhZWVlOWY1YTBiM2VjMGU1YzViNjJiYWQzNjRmODI4NzNiMGIzM2E3IGxlZ2FjeS10cnVuaworNTIyNDMgZGUyYjZhMWM5YjMxMTExNTUxYzg2ZTBkYjhhODFhNzE0MGZlZDY0ZSByZWxlYXNlMjUtbWFpbnQKKzUyMjQ0IGE2MDQ5NWIzNmYzOGNiMmVjNGI1YjEwYjRlOGQ1OGJmMGViNjEyYjUgcmVsZWFzZTI0LW1haW50Cis1MjI0NSBjMzg3N2I2NDMwYjVkODllMmUwOWJjMWE0ZTg3NDYyMTFiN2Y2NzE5IGxlZ2FjeS10cnVuaworNTIyNDYgZWRhOTMxZjM5OGMwZDVlZmNhMGY0OGVkMjhiN2MyNGM1N2UwYzBhNyByZWxlYXNlMjQtbWFpbnQKKzUyMjQ3IGVkZTA1ZDM0YzUxODNmZTMxNmE0ZWJjMDBjNzQ4ODBmM2RhOWMzYzAgcmVsZWFzZTI0LW1haW50Cis1MjI0OSA0ZWVmY2U4YmMyZjc0OGEzMzdkYTdmYmMwMDdiYjIyNGExOWUwOGQ3IHJlbGVhc2UyNC1tYWludAorNTIyNTEgNjY1ZDc3OThhMWJjOGE2MGI2OGJkZjMyZWVhMDM5NDJlYTRjNjNlZCBsZWdhY3ktdHJ1bmsKKzUyMjUyIGJmNmEwMmFkYTQ0OWU0YTJjOTgyZTUzNjM0NjM4NDVlODg2MGEwYjcgcmVsZWFzZTI1LW1haW50Cis1MjI1MyAzODM1Njk1MWMxOWY5OGFhNjRlZTQ0ZTY3YzE0NWVjNzcwYjMwY2E1IHJlbGVhc2UyNC1tYWludAorNTIyNTQgMWU0ZTAxNWMwN2MwNzRkZTdkYjQ5ODAzNDZkOGQxMTI1MzliNGE2OSByZWxlYXNlMjUtbWFpbnQKKzUyMjU1IGY0NmJhZGM4ZGMyMTMzOTgyZTMyOGU0NjBjOWMwODNhMjI2YTJhMjAgbGVnYWN5LXRydW5rCis1MjI1NiBkMzNlNDAxMWUyMDI5NDc5YWFhNTdlY2IwYmMwOWZkZTc3Yzk3OTg0IHJlbGVhc2UyNC1tYWludAorNTIyNTcgMjhkYjYxMTAxNDYzNmVlYTFjODhkMGNkM2ZjMmNkYjE0Yzg4NDMyZCBsZWdhY3ktdHJ1bmsKKzUyMjU4IDhjYTlhN2IxMWE3ZDQyNjFiYTBjMmI4ZTZhM2FiMDdkMzZlYTIzZTcgcmVsZWFzZTI1LW1haW50Cis1MjI1OSA1MmI2NWYyOGJlMTcxNzIwMzFjMzMwMjM4NTUxMzdlOGE0OGViNWM0IHJlbGVhc2UyNC1tYWludAorNTIyNjAgY2U1MTUwMzJmY2UzN2FhMWIwZDg3NjhkMDc3NjJkNzFiMmVlMTVmMCByZWxlYXNlMjQtbWFpbnQKKzUyMjY2IDMwOTA5ZTFjYWY3OWM4ZDU0NDYyZDVkNTkzMmFhNmFmZWJhZjkzMTcgcmVsZWFzZTI0LW1haW50Cis1MjI2NyAwZGFjNmRlMGZlNzhhZGZiZjk4ZmRlZWE0MzE4MGZmZTg4MzhjNmY1IHJlbGVhc2UyNS1tYWludAorNTIyNjggNjZiODNkMWJhMmZjNWY5OWY5OTI1N2FhMzNmN2Q4MDYzYzdmMWU0MyBsZWdhY3ktdHJ1bmsKKzUyMjY5IGIyZWRkNTEyNDFhZTIyMWE5NGNiMWQxNDY2NmQxZjZmMjkzNTdkMTUgcmVsZWFzZTI0LW1haW50Cis1MjI3MSA1NmI5MTFkY2MxODVhYzYwZmFlOWJlODM0ZWQ1NjNlZmJiZjg5ZDBiIHJlbGVhc2UyNC1tYWludAorNTIyNzIgZjdmYmRjNTYyZDdhZGY2ODk3YTNkNjhhN2QxYjhiNDIzYjE4MWY0MSByZWxlYXNlMjQtbWFpbnQKKzUyMjczIDViY2FiNGNhNjYwODA0OTdlYmQ3Y2NjYzc3ZDkyYjgwZjIzODc1NzUgcmVsZWFzZTI0LW1haW50Cis1MjI3NCA5ODUxMjY4NzM3NDBkZWY1NTc3M2JkZTU0MGM2ZDI2MjMxY2M0NmFjIHJlbGVhc2UyNC1tYWludAorNTIyNzUgYTFjMzgxYzA1ZGRlYzQ2NzcwOGVmNDlkOWVkMmMwZGE4ZGVmNTk3ZCByZWxlYXNlMjQtbWFpbnQKKzUyMjc2IGJhYWVlYTcyMmIxYzk3Y2EwMzE3OWU1YTAyYTQ3MTdlNzAxN2JhMmEgcmVsZWFzZTI0LW1haW50Cis1MjI4MiBhMDQ1NGYxZjk3YzZjYWJiMzZjNGZhY2NjNTg5MzhjOWRiZjA5NDVhIHJlbGVhc2UyNC1tYWludAorNTIyOTMgYWM2NTBhZDZjODE3YmUyYTU2Njg3YWEwYzc5M2QxMWQ5MzQzODI2OSBsZWdhY3ktdHJ1bmsKKzUyMjk0IDY4YjRkMGRhYjQ5YWQxZWVkNmI2Mzg2YzhlNjIwZGY2OTcyOGYzNDAgcmVsZWFzZTI1LW1haW50Cis1MjI5NSA3MDE0MGNjY2QzZGE3M2JkZDQyNjM5OGNmYjVhMTAwMzgxMThiMDM4IGxlZ2FjeS10cnVuaworNTIyOTYgNjY3MGRkYTRiMjdkOWYyZDEyMjBlYjQ5NGUyYmQ4ZjE2ZTg0ZDBjNSByZWxlYXNlMjUtbWFpbnQKKzUyMjk3IGRlYjFhMGI1ZGJjYjhlYWI3ZDg0OWJmMjE0ZDUxNzYxNmJhYjRjZTEgbGVnYWN5LXRydW5rCis1MjI5OCBjNjhmYWMxZWI2Y2JlNDc4YjRjNjU4MzkxNmU3MWM0MTkwOTNkYmQ1IHJlbGVhc2UyNS1tYWludAorNTIyOTkgYzAyMDgxOTVhNTU4NTA3NTYzYThiZGZjNTM3MDJkMzM0NDBkMzc0OSBsZWdhY3ktdHJ1bmsKKzUyMzAwIDc2NDBhNTc4MjJhNjdhYzZhZDk0MTkyY2RmNGU3YjM0ZTlmNjdjN2YgcmVsZWFzZTI1LW1haW50Cis1MjMwMSA2NDc1OThjMWE5ZDkyNDNiYzZmZGJhMDY3YmU0OGFhMTE3MzMyNDYyIGxlZ2FjeS10cnVuaworNTIzMDIgNmU2YzIyMGMyZmE2MjJhYzI2OGRkNGY4NTcxNTIzOGJjYjVjMWY3YiByZWxlYXNlMjUtbWFpbnQKKzUyMzAzIGQyN2U3NjMyNjgxOTg3YWU1Njk5YjUxZDg3YzI2MDRiMjcxNDM4OGQgbGVnYWN5LXRydW5rCis1MjMwNCAxN2Y0MTc4MDllMjM5ODNjMDNkNjY2MmZiY2U0YzQ5NmNjYjNmNzYyIHJlbGVhc2UyNS1tYWludAorNTIzMDUgNDE1OTM4NmY4ZGJkZmMwNTU2ZDYzMDc2YWVmNWU2ZGE0MzFhMzc5ZCBsZWdhY3ktdHJ1bmsKKzUyMzA2IGEwYmY3MjgxYmQyMGI2NWE1ODRmNGE2Mjk5Y2JlY2UyNTk1NmQ4MzQgcmVsZWFzZTI1LW1haW50Cis1MjMwNyAxMGFiZmNiNjZlNjdiZGVmYTdkN2M1NzA5ZDk1NzA2N2ZlMjRmZTI3IGxlZ2FjeS10cnVuaworNTIzMDggY2Q1ZjdjZDIwOThlYjNmNzRhYmU4ZmI4NGZmYTkxMGIyZjEwNmViNiByZWxlYXNlMjUtbWFpbnQKKzUyMzA5IGY0NDMwYmVjMzAxM2UyOGY5MTExNDVkYTVhZTZjMGQ2OTE3MDgxY2QgbGVnYWN5LXRydW5rCis1MjMxMCAxYTFhNTlmNTBiNGFlMjI4Zjk2MWM5YzJkZGYzNTY1YzllNzUyMTAyIHJlbGVhc2UyNS1tYWludAorNTIzMTEgYTI0ODAxZGE5MmVlMGQ1MmI2MTAzMGZhZDdhNzBlNWU2YWYxYjhiNiBsZWdhY3ktdHJ1bmsKKzUyMzEyIDFlOGU5MDBkOWY0OWQyN2I0MGIyNWI2NDNhNDNjYWI5NWI5NjdjOWIgcmVsZWFzZTI1LW1haW50Cis1MjMxMyA3ZmFiYmM0YTBjNGU4NmI2NjgwM2U4NDYyZDc3YzQ5ODE3OWU2MWY5IGxlZ2FjeS10cnVuaworNTIzMTQgM2NmYTg4ZmIwZjQ1Mzk3OGMwYTZmMjBiMDNjMjY2ZjgyODQzNDEyZSByZWxlYXNlMjUtbWFpbnQKKzUyMzE1IDYzNTQzOGIyOTY3M2ZkNjExZjIyOTliZDdjODY5ZWYyMTRiZWRiMWYgbGVnYWN5LXRydW5rCis1MjMxNiBjNGM0ZWVjNjRjMTM2NGJjNjg4NGFjMGI1NGE2YmY3MDg2ODMxNGU2IGxlZ2FjeS10cnVuaworNTIzMTkgYzc3ZDlhOWZlNzA0MzY5MmYzY2NlMmNhZTEyMTIxNzk0YzFhZDY5OSB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTIzMjAgOGU2ODViMjM4OWRjZWVhZjM5MTRhNTE0NjA5NjEzNDg1YjRjNmNkYiB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTIzMjcgMzliOTkxYmE4NzhmNzkwNWM2ODQyODU0NTMxNjVkZGY2ZmU4MWJkZCBsZWdhY3ktdHJ1bmsKKzUyMzMxIDEwOWY5MGMyNjZmYmMyODczNmM0MzVhNWQ5OTAzNWVmMzA3YmFiY2EgYmNhbm5vbi1vYmpjYXAKKzUyMzMyIDM5ODVkN2UyMDY3ZGI3NWYxNzBlMDg5MTk5NGIwZmQ3MDk2M2U0MGIgbGVnYWN5LXRydW5rCis1MjMzMyBiNjFhOTBlNzQ3ZTdjOTI5MDI1Mjk4M2M2NTZhNDI3MmM3OWY3ZjA2IGxlZ2FjeS10cnVuaworNTIzMzQgODRkM2I3MmRjMzM5MmE2ZDEwZGVjZjliYWNlMGI1YmI3YWMxMjFmOSByZWxlYXNlMjUtbWFpbnQKKzUyMzM1IGI5NGJjYjdhZWQzZGQzYWE3YTBjOWU3YTAyZGQ4ODg5ZWY4ZDIwMGUgbGVnYWN5LXRydW5rCis1MjMzNiAzYmM0YTk0MDFhMTE2MTdiNTY1NzYyZmJkMDEwZmY1MzAyOGQ1NWFiIGxlZ2FjeS10cnVuaworNTIzMzcgZGFlNzRhODA5NGQ5MGEzYjBjNTI2OWZlNjYxZWFhMDA1YjJjZmJiOCByZWxlYXNlMjUtbWFpbnQKKzUyMzM4IGJiMzVjNTViYzQ2NzBiZDBkZWIyOTU3NmUxOWM2Zjg1ZGRmMDJmOGQgbGVnYWN5LXRydW5rCis1MjMzOSAwZjUwNWVjOGI5N2FhMjFlMGZhYTE2ZDQ0MGY0NjkwZjczZDUxZTI1IGxlZ2FjeS10cnVuaworNTIzNDAgNDVlZmU0MzU2YjYxZWRhMDMwOTY3ZjExOTk3ODRhOGZmNGMwOWI5YyByZWxlYXNlMjUtbWFpbnQKKzUyMzQxIGMwMDZkMjI3OTQ4ZGVlZDQ5ZGM4MWUxM2IwNjM1NmEyZTA2OThjMTggbGVnYWN5LXRydW5rCis1MjM0MiAwNWMwY2QyN2FiY2EwODY2MTM0MGNhN2NlODAzNDNjZjdiOWI4NjAyIGxlZ2FjeS10cnVuaworNTIzNDMgZGU4OGMzNjNkNjIyMzYyODYzMzI4ZTI2ZTJiYTMyYWQ4YzJkMmEyMyBsZWdhY3ktdHJ1bmsKKzUyMzQ0IGEyOWQxMDBjNzgxNTNjMTBhMmEyNGFlNzBiYThhOTVhZTg5MjY3YzEgbGVnYWN5LXRydW5rCis1MjM0NSA1NjE1ZWFjOGFhNzk3NmZjZTY2NjJkODg0NjZjNDNhYmZjM2M0NWUyIHJlbGVhc2UyNS1tYWludAorNTIzNDYgMmExYTVkYzI1NWFkYzkyYjcxMTQ4NjgxNTc1YTFhYmMxZjQ5MTY2NiBsZWdhY3ktdHJ1bmsKKzUyMzQ3IDFlNTU1ZjA0OGUzZDRiYmUwYjYzMGM5NDMyYzQzNjVlYjZiMWU5NjIgcmVsZWFzZTI1LW1haW50Cis1MjM1NCBmYTk2YmZmOTNiY2FkMDBhZDczZDY5Mjc0OGY4NjgzOTAzMmUxZTUwIGxlZ2FjeS10cnVuaworNTIzNTYgYmY4ZGFmNGE2ZTcxYTFlYTJlNWRlNTFmYzY0OGRmNzVlNWFhODg0MSBsZWdhY3ktdHJ1bmsKKzUyMzU3IDQ2OWMyZDZjODE2NWIyNTY3NTMzNWFhNWVhMzllODkwYzM5NzBhYWUgcmVsZWFzZTI1LW1haW50Cis1MjM1OCA4NTA1MDgzOTFkNDZiZGU0ZTAwMTcyYTQ5NDkxYzFhYjI5NjAwYTgzIHJlbGVhc2UyNC1tYWludAorNTIzNTkgZTFjYjMyNjQ1Zjc3ZTFmOTdlZjkxNzdjYzEwMTExZDcxODBlYTYwZSByZWxlYXNlMjQtbWFpbnQKKzUyMzYwIDdjN2ViMTkwYjI2NjMwZmM2MmU2NGU4OTU1MDk1MjZkYjZjM2YyNTUgbGVnYWN5LXRydW5rCis1MjM2MSBhNjUxMWU4Mjk3ZjA0OGM1MzJhODc0OTU2Y2VkYTU1ZmY5NTg2ZWNhIHJlbGVhc2UyNS1tYWludAorNTIzNjIgZmI1ZGIxMmYwMjY3NjAyMTljOGFjNjM0NDE1MmM0NjE2OWE0NTIxMyByZWxlYXNlMjUtbWFpbnQKKzUyMzYzIDE0NTEzZGIwZDYyZDUwZmYyMmEyMzc2MWUzM2I5MzU4NzdmZjJlZmEgbGVnYWN5LXRydW5rCis1MjM2NSA1MmZlMGVjZjU1YzFhMTgxMDVmZjVjMmQ3NzlhODcxZjdmY2FmNTQ4IGxlZ2FjeS10cnVuaworNTIzNjcgNDA1MGYyNTNhNmY4YTVmMDI3OTM4OGNiNmVhMTA3OTliNjc5ZDNkNyByZWxlYXNlMjUtbWFpbnQKKzUyMzcyIDM0NTU1NDIyZGM0NWY4OGY1MjkzZmI5ZmJhMzE5YjU1OWU4NzZhYTkgYmNhbm5vbi1vYmpjYXAKKzUyMzc3IDQ5OGNmNGIwOWQ4YWMwM2U0NWYzYTBlMjZhNzNjYjkxM2ZlNzY3ODAgbGVnYWN5LXRydW5rCis1MjM3OCA2NjA5ZjAyMDY0OWYwZDBjZjY1M2U2OWU4YTE5MDZhODZhM2NhNGQzIGxlZ2FjeS10cnVuaworNTIzNzkgYTFhNjc5MTA1Mjg4NmM4OTBhMGYxMTljNTI1YzNkMjcxOGYyN2M0YyBsZWdhY3ktdHJ1bmsKKzUyMzgwIGIxZDcwOGMzM2VhYjQyOTAyNjJlOTY4NTNjZmI0MzQ1ZjllMDczMGEgcmVsZWFzZTI0LW1haW50Cis1MjM4MSBmYjBjNmE2N2E5MzllOGEyZWEyNzc5Zjc5ZTMyYzNiNzY4OWMzN2U0IHJlbGVhc2UyNS1tYWludAorNTIzODIgZWU2NmExNWE5MDMwMjFjYTI1MDRhMzIzMjRkM2RjYmM0NmVhOGE5YiByZWxlYXNlMjQtbWFpbnQKKzUyMzgzIDU5MmFjOTM1MzJlZmRmYTlhNDBmNDdiOTZiMWMxMjMxZDJlYWUwZTUgcmVsZWFzZTI0LW1haW50Cis1MjM4NCAxMDQzNGQxYjQyNjYxYjcwMDE4OGM4MmVmYzM1MDcxZjgyNGNjMWU0IHJlbGVhc2UyNC1tYWludAorNTIzODcgNDEwYzFjNzhlZDUxZTEyZGMzZGU5NTc5NTlmNmI3OTcwYzM3OTk0YSBsZWdhY3ktdHJ1bmsKKzUyMzg4IGUyZGYxMzU2MzQ5ZjE2OGJhZWJiMzM1ZTIxYzE1ODMzMzA0M2Q0ZGYgbGVnYWN5LXRydW5rCis1MjM4OSAwNTA5YWIxNGIyZDk3Y2VlZWZlMjVlOTY0MzJmNGUzNzNlYWFiODJlIGxlZ2FjeS10cnVuaworNTIzOTAgMThjMTJkMzQyMTQzODJmYWY4YzVmYTVjYjNjNjM2NDkwNTM4NDJjNiBsZWdhY3ktdHJ1bmsKKzUyMzkxIDE5ZGUzMTY0OTJlNzM4Y2VlZGVjYjhlYzU4MDg0NzUxMzZkYzY2YzAgcmVsZWFzZTI1LW1haW50Cis1MjM5NCAzYjg1MzMzNDI4Zjk4NmRkNmQ5MWQ1N2YwN2NlNTA3MjFiMDE4NWI1IHJlbGVhc2UyNS1tYWludAorNTI0MDUgODZlYTg4YzUyMDViZjUwNDUxYTMyMzBmNjczNWRjYzJmMjNjOTYzYSByZWxlYXNlMjUtbWFpbnQKKzUyNDE0IDgyNmU4Njc0YTExZDU4OTU3ZmJhZWFkZGU4YzA5NjRlZWMwN2YyMzEgbGVnYWN5LXRydW5rCis1MjQxNSBhMGQ5ZmNmNmYyMTUzZjUyOTdhMTRiZTJlMTk3ZGI5NWExNzE5ODlkIGxlZ2FjeS10cnVuaworNTI0MTYgMzg0ZWY4N2ZjYzI1NzllYTZkNWU5Yjc3ODUwMmEwYzRmZjhjNTEyMCBsZWdhY3ktdHJ1bmsKKzUyNDE3IGM1NDQyYjQyNGE4NjkzODVlMDMzY2U3YzI4ZmU3YWE2MDI3ZGZhNmMgcmVsZWFzZTI1LW1haW50Cis1MjQxOCA1MDMwZmI0YTQwMGZlYmI5YWM4Y2Q0NzkyYjg2NzZiOGU1OThkOTU1IGxlZ2FjeS10cnVuaworNTI0MTkgZTljODQ0YzRkMWExYzk1ODdlZmQ3NmQ5ZTExYjdhZDc5N2FhZWZjYiByZWxlYXNlMjUtbWFpbnQKKzUyNDIwIDc0OWQ4NTVlZTM1NzFhYjdlNTdjMmY0OTE4ZDU1MTAyMWNmYTYzYzEgbGVnYWN5LXRydW5rCis1MjQyMSAxMjNjMTRlZDMwOGExNTM4MWQ0MGIwODM5ZjUzN2QwOGVlZmU4Y2I2IHJlbGVhc2UyNS1tYWludAorNTI0MjMgNGVjZjE2NjI0NDk4NDRlNmUwY2RjOTliNDQ4MTdjZDNkOWQ5MWNiMCByZWxlYXNlMjMtbWFpbnQKKzUyNDI0IDhjZDBiNzExM2E3MWEwNTUxZTM4MzBjZmZmZmE1OGEwMTgxNmEwNGYgcmVsZWFzZTIzLW1haW50Cis1MjQyNSBiMjE0MjdmZjI2NDc1ZjljN2Y0YTcwMWRhMzI0ZTk1MWMyYjE2MmZlIHJlbGVhc2UyMy1tYWludAorNTI0MjYgY2RkMzQ3NmQxYjA2YjNiNGVjYzg5ZWQzNWQ1YjQ4YjZkZmI2MDNhNiByZWxlYXNlMjMtbWFpbnQKKzUyNDMxIGU4MmU2OTZjMDNkYzhhZDYzNmE3MzMxNzUzMzJmMjdjNWM3YzY3YjcgbGVnYWN5LXRydW5rCis1MjQzMiAwNTAwNDBjYmEyNmE0NWE4MTk5OGJkNzk1YTJhNmUyZDAzMzRmNTZhIHJlbGVhc2UyNS1tYWludAorNTI0NDYgOTE4NjU5ODI5NmNiMDllMTU5NTVhNTdkMTg5YTI3MWY5ZDdlODllZCBsZWdhY3ktdHJ1bmsKKzUyNDQ3IDk0NzM2NmUxMzFmZGFlMjAxMmQ4Zjk2YjJkMjlmZjk2MWI2MjhjYTUgcmVsZWFzZTI1LW1haW50Cis1MjQ0OCBkNzhhN2E2MDU2MTkzOTY4ZTg4NTZjYzgyN2Q4M2QxMTM5Zjg4NGU0IHJlbGVhc2UyNC1tYWludAorNTI0NDkgMTU4NmZhYjNjODQ4Yjk0NDcyN2UxYzRmZGQ5N2FmYjM5NjNiNjdlMiBsZWdhY3ktdHJ1bmsKKzUyNDUyIDBjMWNiOTJkYWM5N2VmMzllMTE1ZjljNTljYTMzNDkzOWU4YmM4ZTggbGVnYWN5LXRydW5rCis1MjQ1MyAwZTgzZjhjNWQ3MGFlYzM0NzMxYjBiOGUxZmM1YTcwYWNmYzYyODIyIHJlbGVhc2UyNS1tYWludAorNTI0NTQgYzBmNTZmMjQ2MWY1Mjk4ZmJjMTM5MTRmNzllYTNjNzE0NmZmODc2OSBsZWdhY3ktdHJ1bmsKKzUyNDU1IDVkYzQ3MzE2NTA4ZmI0ZThiZjI2YmQwMmZkYTU1ZTBlZGFhMDFlNDYgcmVsZWFzZTI1LW1haW50Cis1MjQ1NiAwMTVmODlhNzM5MjllNGJiM2NkMmI0N2RkMDAyMWEyMmYzNTg0NGVjIGxlZ2FjeS10cnVuaworNTI0NTcgMzRkY2JjNzQ2MjQzZTY3YzIxNmNjOWM5YWE0OGFlY2JiMDA2OWIxOCByZWxlYXNlMjUtbWFpbnQKKzUyNDU4IGU1Y2I0Y2I1NjU0MWI5N2NiMDI3ZWRhYTJlYmI0ZGJhMzZhNzNlNjQgbGVnYWN5LXRydW5rCis1MjQ1OSBkM2RiYjMyNmZmYmFjNzlhNTdjMzlmNmI3NWNhOTU0ZTRmNjRiNWIzIGxlZ2FjeS10cnVuaworNTI0NjAgYWQ0YzliYTFkYjU3ZmQxZTAyYzA0ZDY2OTc5MWZiOTdlNmI1ZjM1MSBsZWdhY3ktdHJ1bmsKKzUyNDYxIDVhMTA2YjRiY2RkMjhmMjNhYzNiZjk0OWZjZTE5MGUwMGE5N2UxOTYgbGVnYWN5LXRydW5rCis1MjQ2MiBlNTc4MmUyYTQxMmJhMThlMzJiYjY5NmM0Y2U4YjExNTM0Y2YxNzljIGxlZ2FjeS10cnVuaworNTI0NjMgN2FmOTRhMjcyM2VjYjEzNGZmZTBiMGRiYjAzYWVhMWFlOTIzNWY3YSByZWxlYXNlMjUtbWFpbnQKKzUyNDY0IDBkNTE3NmUyYmZlNGI0NGE5MWU3NGIyMzYxZDJmMzkzMzg1YzMyYTMgbGVnYWN5LXRydW5rCis1MjQ2NSBkZGIxZGI1NjU2MDg5M2M0YjdhNTYwZTU5MDM1NWE5ZTVjZTZlMTBiIHJlbGVhc2UyNS1tYWludAorNTI0NjYgZTg2N2I1OTUwNzllOTI3ZTRmMmNlZGY5YTBiYTQyYjUxMTc5MDU5YyBsZWdhY3ktdHJ1bmsKKzUyNDY3IGI1NmI1NjJlM2E3YjdjODFmMTBlMTY5NmFmYWNlMTlkMjA1MmYyYzYgcmVsZWFzZTI1LW1haW50Cis1MjQ2OCA3NjJkY2FkNzIwYjUzZWFjZjE0YTdjMzcwNmY3MmVlNTljMTVkMGJmIHJlbGVhc2UyNC1tYWludAorNTI0NjkgZTJlODBhMDE2OTQ1MjIwOWE2ZTRkMjJiYzljY2FkMjAwMWVkNDdiYiBsZWdhY3ktdHJ1bmsKKzUyNDcwIGM1YTZhY2UzZmM3ZmQyNTRiMjM4ZDdiYzBiNGEyMjk5YzQxMmQxOTYgcmVsZWFzZTI1LW1haW50Cis1MjQ3MSA1OGRiOTY4ZDE0NDgyZTdjOTQ1NWJiMmI3NzZmZjJkNmUwZDc5MjVhIHJlbGVhc2UyNC1tYWludAorNTI0NzIgNmI5MWMwZGNlYTU4YTY2NmI3OTExY2Y4ZGYwYzg3YzBmNzg2ZDQwYyByZWxlYXNlMjQtbWFpbnQKKzUyNDczIDhmOWFkMzU4MTM2ZjAzOTE0MjlkNDFiNWZiYWQzNjZiNjMwMGMyYjQgbGVnYWN5LXRydW5rCis1MjQ3NCAyOWMwMWU2MmNlNmJjYWU2ODE2OTBjMjZjZDJhNTJlM2NjMTgxY2ZkIHJlbGVhc2UyNS1tYWludAorNTI0NzUgMTk1NTU5YzViYWNkZjA2YzI2MmY2MGRmZWZmNDE3MTM4N2Q4YWU1YSByZWxlYXNlMjQtbWFpbnQKKzUyNDc2IGUzYjljNjM5NzcyMzQ4MmNkMWFlYjk2M2RkNDNiZWZiYzIwNWVmZTIgbGVnYWN5LXRydW5rCis1MjQ3NyBmNDViMmYwYzU0MmZjM2MyYjhhZWE3NWU5NjZlMjIwZjVmOTYwY2E2IHJlbGVhc2UyNS1tYWludAorNTI0NzggNzcwYzcxOGJjOTdlMDJhMmIzY2IyN2U0ZGI5Y2QzNTBhZTFkZDYzYSBsZWdhY3ktdHJ1bmsKKzUyNDc5IGJiMGRiNDVmMjBlYTJiYzM3N2ZiNDZlYWI1NDc2ZGUyNWUyZjFmMjMgcmVsZWFzZTI1LW1haW50Cis1MjQ4MCBmYjlhN2IyODhkY2UyOTQzNTU2ZTI1NTczZDEwN2EyYTZiMDkxY2M0IGxlZ2FjeS10cnVuaworNTI0ODEgOWQ2OTFkMzc1NWQwZGU0ZTFlYjEyNzQ5YjljMzFmN2Q5YWY2OTdhZCBsZWdhY3ktdHJ1bmsKKzUyNDgyIGI5MTE2NmU4ZDM4ZGIwYzcxYzNlZDM5ZTZjZjljOWE0MzNlN2YzN2EgcmVsZWFzZTI1LW1haW50Cis1MjQ4MyA5OGU5MDA0OTkwNDM0MTU0MGNiMjkwMDRkOWQzZTQ5OTU0ZGNiNmZiIGxlZ2FjeS10cnVuaworNTI0ODQgODYyNDkwOWY1MDMxZjQwZDkyNTVmN2U2NzdmOGQ3MDkxMTI5ZGYxMyBsZWdhY3ktdHJ1bmsKKzUyNDg1IDk4OGQ5NWZmMWZkYjcyYWQwNTdjODA3Zjg3MDZhNzM5MGI2ZjBhMWYgbGVnYWN5LXRydW5rCis1MjQ4NiAxODg3MWExMGZmYzFmYTU0ZmNiMjA5ZjgyYTU5ZjE2NWYyMjE4MjE4IHJlbGVhc2UyNS1tYWludAorNTI0ODcgNDNhODI2NDY3YWQzY2VhYmZiNDE0NGE3NGEwNTIwMTNlMWJjOTUwZSBsZWdhY3ktdHJ1bmsKKzUyNDg4IDVkNWYxODQ0MzY2NGQxNTcyMmQyYTc2ZmQ0NDkwMTJkNGE5MTVlNTkgbGVnYWN5LXRydW5rCis1MjQ4OSBkYzFlNDM2MTc5NzI4MjJmMjdkMTdiYmMyNzc3MWE1ZjRmYWY3N2JlIHJlbGVhc2UyNS1tYWludAorNTI0OTAgZDBiZDhhOGFmYjAxMDNjNmMxM2M1M2M1ZjVmYjgxOTdjNGExMDkxNCBwM3lrCis1MjQ5MSAxY2NlMDUyNmQ5YjBhNTNmNGZmOTU3MTNkZGUxNTNkYzcwZGFlMmRjIHAzeWsKKzUyNDkyIDIxOTA4YzcwZDI2NGJjZjkzMjczODgzOWM0M2Y0YTEzZDYwYjM3NTYgbGVnYWN5LXRydW5rCis1MjQ5MyAxM2I4YWQ2NzlkZWZjNzQzNGIxYmExYzVlMzNhMWZiMjM0OTgwOGZjIGxlZ2FjeS10cnVuaworNTI0OTQgNTEzMzlkMzlhNTk2YWZmMDJhZDE1YzM4ODQ2N2FiZDcxYjM2MTA1NiBsZWdhY3ktdHJ1bmsKKzUyNDk1IDY5NzI4YTdkMjMxMjM5Y2VjNTE1MGViN2IxNWRiZjZlOGM3NWI1MTIgbGVnYWN5LXRydW5rCis1MjQ5NiA3ZDBiZGQ2ZTFjNDY4YjJiNTYxYTYzNTU0M2I4ZmUyZmE3YjMxMDFjIGxlZ2FjeS10cnVuaworNTI0OTcgYzM4MWZjZjlkMTA4MWM2NTVkOGM2NmU5NTJmOWZmZTI5N2Y4OTBkYyBsZWdhY3ktdHJ1bmsKKzUyNDk4IDJkNWE1ZGVkZDk3NTk2ODFlOWViMjNiMWI5NzVkNDI4NzlmZjgwMWUgcmVsZWFzZTI1LW1haW50Cis1MjUwMCA0YzUzYjI0M2MzOTIyYTQ1NDMxNWMzZWU1NzZjNGYyMDdkZWRkMTI4IGxlZ2FjeS10cnVuaworNTI1MDEgYzU4ZDFiOTY5ODQzOGU2YWMwZjhmNGJkMDE0YmUwNWE2YTk0ZTI3NiBsZWdhY3ktdHJ1bmsKKzUyNTAyIDc5NjMwNGVmYTI2OGMwNWQyZTNlOTdmODhjNjIwOGRkNTc2ZmMzMzEgbGVnYWN5LXRydW5rCis1MjUwMyA2MWU0YjU5YWRhMGMyOWVmOTI0ZDExYTg2MmYwZWY1NjIzMzNiMTE0IGxlZ2FjeS10cnVuaworNTI1MDQgMzYwODYwNWE3NGQ1OGU1NmVhOGEyYTllM2IxNTgyYjU3ODc3Y2FhNyBsZWdhY3ktdHJ1bmsKKzUyNTA1IGM0ZTVlNTNiYTczZjM1OGI5ODk0MDFjZjM0NzNiZDQxNmVlZjA0NzUgbGVnYWN5LXRydW5rCis1MjUwNiAzMjFjMDc1Zjk1Y2ZkYWM3ZDFlMThiYjA1MWFlMzgwZmRiYmYyMjViIGxlZ2FjeS10cnVuaworNTI1MDcgYTE4NjM4MzNjNGU2ZjcwYWM4OTI4Njk5NjU5ODIwN2U3OWNkMWY3YiByZWxlYXNlMjUtbWFpbnQKKzUyNTA4IDRjNjFmNDAwY2UzMGQwY2I5Zjg1NmMwYjhmMTQzNGU4ZWZmYWQ1MTQgcmVsZWFzZTI1LW1haW50Cis1MjUwOSAzODBhMzVkNzhjNjA4OTZiODY5ZjI3MGU5MGNkMTkxZDFhMGM1NGE4IHJlbGVhc2UyNS1tYWludAorNTI1MTAgOWFjYzE3NzVkNTcxNGJiZmUyMTkwM2IxNGVmNTZmZTJlMzNjMWEzNSByZWxlYXNlMjUtbWFpbnQKKzUyNTExIDZhNjQ2OWUyOTRlNzJmY2FiYzlhNDBhMzU4ZWFjYTA4N2YxNWFkYTQgcmVsZWFzZTI1LW1haW50Cis1MjUxMiBkMDIwZTJmNzA4YmU4MjlmMzU5N2M0MWU4ODYyYzI5NGMxOTAzZjhjIHJlbGVhc2UyNS1tYWludAorNTI1MTMgZGUyNjFmNzYzYjRjYzA0OTU5MDQ3ZmNhZTRiOWY2MDJmNTYzMWZiYiBsZWdhY3ktdHJ1bmsKKzUyNTE0IDQ4MWJiYTQxZjlmNDUwZTI2NWYxYTkxNzJhMGI0NmI2ZDQ0OWMyMzYgbGVnYWN5LXRydW5rCis1MjUxNSBkMjFkZDhjYmM3MTYxNjdhMDQxNmM4NzM2OTRiMzY1MmNjYzlkZmUyIHJlbGVhc2UyNS1tYWludAorNTI1MTcgN2M0MDU4NjgxMjI0OTU1ZGU2YWVhMmZhYmE0YTFhYWYyMzNjMTllNCBsZWdhY3ktdHJ1bmsKKzUyNTE4IGQyNDVlZmM3ZWM4OTAwNDhhZWM3MWJlYzljY2YxNDIxNGQ4M2VhNWUgcmVsZWFzZTI1LW1haW50Cis1MjUxOSA2YTg2MGM4MWFiN2QwODM5ODI3OGM3Y2E2ZDY5NjNiZTQzNmQxZWM5IGxlZ2FjeS10cnVuaworNTI1MjAgNGQ4MzNmY2EzNjcwMmNiZWFjNDczNjE2MDIzNDg4ZDkwN2QxZTg2NCBsZWdhY3ktdHJ1bmsKKzUyNTIxIDJhMWVhZTZjMGViODYyYTVhODRkYmU1MDBiMjBiZGM1MmE4NGMxN2QgbGVnYWN5LXRydW5rCis1MjUyMiBhNzJkOTcwYzM4NGJkMTM1OTRjNTYzMTViOGE1ZTJhYjNlYWVhNDc5IGxlZ2FjeS10cnVuaworNTI1MjMgM2QzZjEyN2QzZTBjNzliZTgzZmI1MGIyY2ZmMzUwZjczMGZlMGY3YyByZWxlYXNlMjUtbWFpbnQKKzUyNTI0IGZkOGE1ZjkyNWQ0ZDUxMzljZTI2MjM3MjExM2JmZGYxMzIyNWE2OTMgbGVnYWN5LXRydW5rCis1MjUyNSBlZDIyY2E4Zjc4ZmYwM2E1MzBiMGJmZDUwNjMzZmRhNGRhOTBlZGNkIHJlbGVhc2UyNS1tYWludAorNTI1MjYgYzdkNzc4ZGExNjJjOTIwZmFhZWMyYjNlMTNmYjg5ZWEzNTUxMzExYiBsZWdhY3ktdHJ1bmsKKzUyNTI3IDk2NjMxMDBjOTVjYTJkMjYxMjE3MTU0Zjc0MzY0YTBlN2M3MDFhZWEgbGVnYWN5LXRydW5rCis1MjUyOCA3YzQ0MTQ0NzE0ZjY4ZjkyYTdhYjc0MjMzZDQ0NTFmNjk5YzRiOGQ1IHJlbGVhc2UyNS1tYWludAorNTI1MjkgZTE2ODAwYWMxZWVhMTQxZjBkMjNlNDNjMzIwM2Q1MzA0MGFkODA5YyBsZWdhY3ktdHJ1bmsKKzUyNTMwIDgyNjk1ZTczNjgyM2YwMjg0NmVjZWMwNTA3Y2ExODQxMTg5MmM3YjYgcmVsZWFzZTI1LW1haW50Cis1MjUzMSBmNDljYjYwOTA0Mjg3M2I2NWRmOGViMzU3MjFjN2MzMjRhZjhhOWY2IHJlbGVhc2UyNS1tYWludAorNTI1MzIgZGE3OWM0ZTlhNWJiZmI1NzRhMmNmMDJkYzcxMDFkYmEzODkwMzMxMSBsZWdhY3ktdHJ1bmsKKzUyNTMzIDkzNjY3YTc4NWI4MzQ2NjBmM2U1ZWUyZDUwYmUzYjEyNWI1YmY4NzYgcmVsZWFzZTI1LW1haW50Cis1MjUzNCBjNjc3NGViM2EwNjczNjVmYzk4OTY0MjQ3Y2M5OGI4YzJmOTkyNjk2IGxlZ2FjeS10cnVuaworNTI1MzUgOWFiN2E3NzM2Y2EwNWQzNTJiYTk5OGQyNWViMzQ5YmMwZmFlNWI3ZiBsZWdhY3ktdHJ1bmsKKzUyNTM2IGJmNzhiZTYzZjIwZDU2YmU0ZTgwM2I3MmM4NDEwMDRmYzMyYWQ3ZTUgcmVsZWFzZTI1LW1haW50Cis1MjUzNyBkOWE4ZDRmMWQ2NTE0YzdmZTk0NzM3NjUzMWIwNzZhYzQyMmJhZGVlIGxlZ2FjeS10cnVuaworNTI1MzggZjU2YjI1MTY4MTQyYzk0NTRkZDA4OWU5Nzc1OWM4ZDA4MTc3YTQzNCBsZWdhY3ktdHJ1bmsKKzUyNTM5IDdjZTg3MmJmMDBhM2Y5ZGExNGMwNWQ1NDZhMTU1NzgyZmM4MTI0Y2IgbGVnYWN5LXRydW5rCis1MjU0MCA0MTRlYzI2MmQ2MDhlNGRhYTFjZDM4ZDU0MGNkZjEwMTE3MWE5ZjFjIGxlZ2FjeS10cnVuaworNTI1NDEgOGQ2ZDMxNWIyYWYzYjk1ZmFhNjVkMDI2NTczZTNkNmMzY2FiYTViYiBsZWdhY3ktdHJ1bmsKKzUyNTQyIGNhM2QxZDNjNGQ4YzJjZjMyZjRhNzc3ODExMzM3NDJiODZmM2NkZWQgbGVnYWN5LXRydW5rCis1MjU0MyBjMzcwN2RhODBhZWYzOWU5NDdiOGZkYjFmZDliMmYwMzMwNWE2MzFhIGxlZ2FjeS10cnVuaworNTI1NDQgMTAwNzMyOGY5ZGI1MTRlZWNkMWI5MWVmNmI4YWFmYWUzYzQxY2RkZiBsZWdhY3ktdHJ1bmsKKzUyNTQ1IDc1NTA2ODEwY2JiZjRjYzA1YWNlYzc4ZmJmZTYxYjFiOWI1ODVlZDggbGVnYWN5LXRydW5rCis1MjU0NiBmZmNjNjk2ZTFkYTNjMjQyOGM2ZGUxNjAwMTQzZmVkYzg0MzQwNjE5IGxlZ2FjeS10cnVuaworNTI1NDcgMGQwYWU4NGRkMWI3YWVhZWI4MTBmNjBkY2Y5MzE0ZjExOTBmMGMwMiBsZWdhY3ktdHJ1bmsKKzUyNTQ4IDE3MTVlNmEwYWVlOWFkMGZkNzlmZjAxMzQzYmY4MTY4OTE4NGQ5MzYgbGVnYWN5LXRydW5rCis1MjU0OSBjNWEyZjQzMWM2OThlZjMwZjQ4ZmMxZmU2NDljZTdiNGJmNmI5NTk4IGxlZ2FjeS10cnVuaworNTI1NTAgYThhNmUyYjg0YmJhZjY4ZDQ3YjkwNTZiYjk0YjlhZDc1MWVlZWIyMiBsZWdhY3ktdHJ1bmsKKzUyNTUxIGI4ODUwYWVjMDQ2NmZmZWQzODJjNWZlYmZmNjFiYWQ0MjMzY2MxNzIgcmVsZWFzZTI1LW1haW50Cis1MjU1MiBiYzhmZmMzZTNjZGI0ZTljZjU5YmJkNmRmY2E1MzAxMzEyMjM5ZTg2IGxlZ2FjeS10cnVuaworNTI1NTUgYjgyMDQwNjg1MmEwYTljZDBiZTRkOTJiM2RiZjYzZTRlNDM0Yzg2MiBsZWdhY3ktdHJ1bmsKKzUyNTU2IDMzODQwYzQwNzJiNzQ3NDIxZmQ3NDkwNzhmM2VmNzkwOTVlYjczM2MgbGVnYWN5LXRydW5rCis1MjU3MiAxYWJjZmVmZWEzZWVhNjk3MzE4MmYzMWQzNmE4Yjk1ZmM3YmU0OGY1IHJlbGVhc2UyMy1tYWludAorNTI1NzMgM2I2ZmI1NDM5YzEwNjFhOTQxNDAxMjQ1MDc2YzMxNWJlYWZjYzc4NyByZWxlYXNlMjMtbWFpbnQKKzUyNTc0IGI2NzU1M2MxNGZiY2FlMWUyMDRiNzU2ZGM0Y2M5MmUxZDRhZGM3YzQgcmVsZWFzZTIzLW1haW50Cis1MjU4OCBhM2JlNDBjMDcyNTAzMDM3YjZlZmZmNWEzMWVlOGYxMGIzNmRlNDI0IGxlZ2FjeS10cnVuaworNTI1ODkgODcxYjA1ZDI1MmJlMGFhMTFkYWZlMTg3NTRhZDE4YmNiMjZiMGQ2NyByZWxlYXNlMjUtbWFpbnQKKzUyNTkyIGFlNDExZmUxZWVjMDFiMmEyNTI3MTJiMjQxMDkxZDMxOGI3NDliYTkgbGVnYWN5LXRydW5rCis1MjU5MyAzZTRlMGJlNDBmNTIwOTM4NTc2ZTc2NzZmZjA0NTc4MzBiNjZiMzUyIHJlbGVhc2UyNS1tYWludAorNTI1OTggZmY2Nzg2NjlhYTZlMTMxZWNkMmFlODdmMDIzMTE0OGVkMGU1YTQ3NSBsZWdhY3ktdHJ1bmsKKzUyNjE5IDUzMGQ3ZWIwYzZjNDhmMWQ1MGFkNTQ0MGU1ZGEwZTM1ZTgwODQwYWMgbGVnYWN5LXRydW5rCis1MjYyMCA2ZGY0YTkxNDNkZGY4ODA0ZWU5NThlMzY3ZDUzNTdkNDE3Yjk3ZDI3IHJlbGVhc2UyNS1tYWludAorNTI2MjEgZWJhZjM0N2Q0MmZiMTRkNzNiODliYjlkMmFhMDcxOTFmYzcyZGMyNiBsZWdhY3ktdHJ1bmsKKzUyNjIyIDAwM2Q4M2RhOTkzMjYyNTAyYjE4ODdjMGI3M2ViMzY4Zjg0ZWRhNWQgcmVsZWFzZTI1LW1haW50Cis1MjYzMCAxZjA1NWZjYjZjYTY2MGJkN2EzZDBkOTg3YmMxMDU4MTE1YzdkYTVlIGxlZ2FjeS10cnVuaworNTI2MzEgZDc4NWMyOWY1MzQwMzViZTMwMmIwYmQyNTYyMzVmNDkwOTZlMzA2YiBsZWdhY3ktdHJ1bmsKKzUyNjMyIDFhMGY0Njg4M2VhNWYwZjEyMTIxM2YzMjNjNTU4ZjZiMzdiNTliNjUgcmVsZWFzZTI1LW1haW50Cis1MjY0NCBjYmUxMzNkNzJlMzk3MmQ3MWQyM2ZmMGE1ZTdiNDg1N2EwYzU1ZjNjIGxlZ2FjeS10cnVuaworNTI2NDUgNTUzMWY0NjIzMmI3YWY0YmE0NTVkOGE3YWY2NDAyZjVlOWU2NDA2MCByZWxlYXNlMjUtbWFpbnQKKzUyNjQ2IDI0NDk4ZDQzMTI2Y2I4OWQ3MmVmN2QzMjY3MjU1Yzk1ZGQ3NzZkYmUgcmVsZWFzZTI0LW1haW50Cis1MjY0NyBlZDJhYzgwODRlMDQ4NTBkNWMwMTdiZTI2ZTcyMThmNmE2Y2VmNjk5IGxlZ2FjeS10cnVuaworNTI2NTEgMWRlNWU3MzlmOWZmNTkzZGU5MGEyM2U2NTEzOTNlODgxZGQ5NDFlNSBsZWdhY3ktdHJ1bmsKKzUyNjUzIDNjYzJlYWYwZTU4MTQ5OWRiZmZiMDM5NDdiOWJiZTA2ZWU3N2JiZGUgbGVnYWN5LXRydW5rCis1MjY1NCBmODg2Mjk5ODI3MGZiZmJhMDgwNmU4ODE5NmU4NDMzZDdjZTkzZGZmIHJlbGVhc2UyNS1tYWludAorNTI2NTcgOTYzM2Y1MzhjOThkYTZlZjVkYzM0OGYzM2YwY2MwNmUxODM2NjZmYSBsZWdhY3ktdHJ1bmsKKzUyNjU4IDhkNjhiMjI0YThmMDU4ZTMxMzY0ZWJkMTJlZjlmZDU3YTllMjkxNjkgcmVsZWFzZTI1LW1haW50Cis1MjY2MiA2MWNkOGM4N2NmZTJjMzdlNGQzNTc3Y2FlZjU3YzFiMGYyOTI0ZWM4IGxlZ2FjeS10cnVuaworNTI2NjMgNzhjNzViM2QzZDBiYjE0MjAxNmY0YTQ2NDk2ODVjY2E3OGE5Y2E3ZiByZWxlYXNlMjUtbWFpbnQKKzUyNjY0IGZhOTAyOWE0MWNlOGFiMDljODM5ODhjZGRmOTBmYThkZDIxZjZhYjIgbGVnYWN5LXRydW5rCis1MjY2NSBiZDE2MjNkMDRiZmM0NGUxNzkxODIwZjFlZDU1MjRmMGQ0YjE4NmQ0IGxlZ2FjeS10cnVuaworNTI2NjYgNGY4ZWJhY2VjNWYwNTM2MjhjOGYyNGQxODI3MjI3NzczYzA4ZjllMSBsZWdhY3ktdHJ1bmsKKzUyNjY3IDAyYzM2NmIyYWFjMmNhYzY1ZjMwN2ZkZWY4Y2VhNjhhZjM1MzFmMTMgcmVsZWFzZTI1LW1haW50Cis1MjY2OCAwZGVhMzdiY2JlZmY0YzAwZDIxYzdjYzAwMzNkNTczMjMwMDc5OTMzIGxlZ2FjeS10cnVuaworNTI2NjkgN2I4NTEyMDZkMjRjZTM0YzM0OTllZGUzYzJmMzVlZTI4MzFlMTM4YyByZWxlYXNlMjUtbWFpbnQKKzUyNjcxIDcwYzc1NmFhOTI3M2MyMDg2MzcxYzk1NmY3ODRhNzA5NzMwZWExYzYgbGVnYWN5LXRydW5rCis1MjY3MiAzNTdjOTk1MzdlODUyZGQzMzlhMmRiMDYxOWYxOWQxNTU4NGY5ZGVlIGxlZ2FjeS10cnVuaworNTI2NzMgNTc2NzQyMTJjMzdjZjJjOTU2MGU2ZjI0ZWQ1YjU4MThiYTY4MzAzMiBsZWdhY3ktdHJ1bmsKKzUyNjc0IDI0YTVkYzc3NzkzMTY2NDZlMGQyMGJmMzEyNjU2YTdiOTJiMTk1YTQgbGVnYWN5LXRydW5rCis1MjY4NiA1MjZjOTU4NGYyNTI3ODY3MjY3NmQwNzg3NTc1NzY2ZjYyZTVlMmNmIGxlZ2FjeS10cnVuaworNTI2ODcgMDI1YjI0YTI2MTMxNGQxMGVhMWRlZWJlNjU2YmEwYjdhYjNjMzNhMCByZWxlYXNlMjUtbWFpbnQKKzUyNjg4IDA3YjI5YmNmYzAxMzUyMzY5MTFkMzE1NzA0YmI1YmUyMTg3MzA1MjggbGVnYWN5LXRydW5rCis1MjY5MCA2ZDk5NzYyY2Q4MTg4MWQ3ZGNiNDNlZTg3ZWViZTIyOWYwNzZlNzM2IGxlZ2FjeS10cnVuaworNTI2OTEgNmMwNjc3MjczYzVhYmIzYjU4YmVjNmQ1MDE5OTIzOGM4ZTU4YTlhNCByZWxlYXNlMjUtbWFpbnQKKzUyNjkyIGFkNzk2ZmU0NzJjYWVmZTQ3MThmZGVlNWExZmNjY2U4MjA2MTg3MTUgbGVnYWN5LXRydW5rCis1MjY5NSA3MDU5ZGY3YzE1ZGY4MjMxNmMxODlkOWEzNTY3OTY5NDBlNjBiN2VmIGxlZ2FjeS10cnVuaworNTI2OTYgYzMwYzU4NGNjNmFhNDk2YjFhOTk1ZTExODZkYzJlOGJjNWRlNDRlNyByZWxlYXNlMjUtbWFpbnQKKzUyNzEyIDU2MWZmYTc1N2RmYjVhNGMyMjYxYWI2NTNlYTAwMDZkZGNiM2E0MzkgbGVnYWN5LXRydW5rCis1MjcxNiA1NGY2MjJkZDNiMjY2NjRhNTJhOWUxMjYxMjJiYmRhYjQ1YzkxNzZjIGxlZ2FjeS10cnVuaworNTI3MTggNzMyNDI1ZTNiOTI3NGI3M2Y1Zjc3ZTFmZTY1ZTA0M2RjYzMwMzc2ZCByZWxlYXNlMjUtbWFpbnQKKzUyNzE5IGQ3NWNiZTJiOTYwMTljOTIwOTFiYmMzNzg1MWJmN2NlODM3ZTE2ZmMgbGVnYWN5LXRydW5rCis1MjcyMCAwZTVmMmQwNTQ4ZWI2Yzk2NmE3MjE2OGVmMDg5ZTEyZTM4ZTQ0ODk3IHJlbGVhc2UyNS1tYWludAorNTI3MjUgNmYyOTcwOTIyYzQ0Y2Q4NGZjYzYwYzg3NGUzYjg4ZDY2NjI0NGU2NyBsZWdhY3ktdHJ1bmsKKzUyNzI2IDYxNmEyMDhmNGI4MDUxNDAxYzhhYzRjYjcwNmNiMTcyMzJmYjFiNzMgcmVsZWFzZTI1LW1haW50Cis1MjcyNyAxMGE5Nzc0YmIzZTM0N2UwZWU3ZDBkZGE2OTNkZWNjYzk3YjY4Yjc5IHJlbGVhc2UyNS1tYWludAorNTI3MzEgNDQ2MGVjMjRkYWM5MGY5YzlhYjY5ZDBkMmQwY2YyZTBlNzA1YzA5YyBsZWdhY3ktdHJ1bmsKKzUyNzMyIDM1Y2YxMzNhYzdmOGYwMTNhYTgxYTc5YWE3MjNlYTg3ZWQ0NDk2ZjggcmVsZWFzZTI1LW1haW50Cis1MjczMyAyY2YxOGYxMjc2NjNjNzgxNjAyZTQ5NDhmYjUzYjA2NDQ1ZDU0MjRkIGxlZ2FjeS10cnVuaworNTI3MzQgNjMzODEyZThjYTFiNmE5YTVhZDJmNWVjMDQ2YjQxOTEwOTM0M2Y4ZiByZWxlYXNlMjUtbWFpbnQKKzUyNzM2IDkwZDM1NTgyOWJiYjc4Njg4NTg5M2UxYzBlYTA2NWNjMzk4YmY3MGUgbGVnYWN5LXRydW5rCis1MjczNyA5ZjdmYzY4YTIwYWVkZGNlZTZiOWNlOTVlZTA2NzZlNmQ0NGNjYjc4IGxlZ2FjeS10cnVuaworNTI3MzggYmY0ZDIwNDc2YTg2MTRlOWExYmRiMzhlMzVhMWVjYzJhNTk5ZDQ2OCBsZWdhY3ktdHJ1bmsKKzUyNzM5IGVjYmU5MWI1ZTQ2YTUzNWE4NTM1MTk4MWRkMWNkN2U0MGJkYmE5NGUgbGVnYWN5LXRydW5rCis1Mjc0MCA1OTFkYWE1MzYyYjJkNDhhMjcyMTM1ZGRlZWExNTFmNTU5M2ZhOTQ5IHJlbGVhc2UyNS1tYWludAorNTI3NDEgZDQ5ZTBkZTQwMTlkMWY1NWUwMWNjMjA3YzhlMThlZjY5YjkwODU5MCBsZWdhY3ktdHJ1bmsKKzUyNzQyIGVmZjExZTQzNWY0MTAzYTZlNzUxNzEzZmNlNjRiZjNiNjY1NjM3YTYgcmVsZWFzZTI1LW1haW50Cis1Mjc1MyA3ZTBjZjZlMzY1MGM4ZTkzYzQxNWNlM2FmYTg4NmJlMzRiZWQ0MmNjIGxlZ2FjeS10cnVuaworNTI3NTQgZjkxYjZkODVjYWI1NjIyY2E0ZWIxMDJkZTBlYWI2ZTZmODZlZjQxMSBsZWdhY3ktdHJ1bmsKKzUyNzU1IGExYzBiNTE0Y2I1MzlhMDc4MzY5NTM4OTY2OWZjOGQyNWEzNTY4ZTYgcmVsZWFzZTI1LW1haW50Cis1Mjc2MiBiODBhMzY4ODUzYzc1YTc2MGE2NjE5ZjhmNGUwN2JjNWY2NDExY2Y1IGxlZ2FjeS10cnVuaworNTI3NjMgOGEzNjVmZGNkYzQ4ZGNlZTU5Njg5ZGIyMGRlNWNiMTU5OTcxNjEyOSByZWxlYXNlMjUtbWFpbnQKKzUyNzY0IGJhNTYzYWI3YTU3YWUyZDg3ZjZlZGFkOTdmMDdkYWQxZWE1M2JiNWIgbGVnYWN5LXRydW5rCis1Mjc2NSAyNTE1ZWM0YjViMzM2NTY1MWM1OGJmNjE4ODkxNjE1YTc4Y2U5NTRhIGxlZ2FjeS10cnVuaworNTI3NjYgZTI2YzUxNzgwNzM3NTFjYmM0YzFiMjZkMGU3Y2Q0MWUzNThmZmIxNyByZWxlYXNlMjUtbWFpbnQKKzUyNzc2IDdjZWU5NDM0OTgxYTJhYThmYmU3ZDUyNGIwZTQ0ZmU2M2E1N2I1NmQgbGVnYWN5LXRydW5rCis1Mjc3OCA0YzYyYzgyOTBkNGY1ODJmNGE0ZDMyMWMwM2Q1NWRmNWI1NGU1YjhmIHJlbGVhc2UyNS1tYWludAorNTI3ODAgODlmMmU4ZGEwZjBmOWVkZDYxYzhmNTM3OWIzNGM3MjNhOGZjNzZlNiBsZWdhY3ktdHJ1bmsKKzUyNzgxIGMxYWM4YmRlNWUxNzZkMzRhOGUyYmRmOWEzYmU5OWZhYmFhYzA3ZDYgcmVsZWFzZTI1LW1haW50Cis1Mjc4MiA1YzA4ZGNiN2QyODA5ZjQ0Y2Q0M2I0YmNlMzBiMTEzNWIyMmU2YzdhIGxlZ2FjeS10cnVuaworNTI3ODMgNzhjMGU3MmYxNmQzZDA3N2Y5MjJlODAxMzNhNDg4YzBlMjQzMWRjYiByZWxlYXNlMjUtbWFpbnQKKzUyNzg0IDMyMGRmZGVlODk2ODk3YzVjNzJjNDdjMzhkMGIxNjA0NGUxZjJhZGEgbGVnYWN5LXRydW5rCis1Mjc4NSBhMDQwNmU5MzNhODE3MzdkYjVhZDZmOGY4NjJmYzQ0ZTA4MjI4MTY3IHJlbGVhc2UyNS1tYWludAorNTI3ODYgNWZhNWVmNTU5YTJmMTNiOGYzYTM2NmZmNDg4MjJmY2IxMTMxMmE1MyBsZWdhY3ktdHJ1bmsKKzUyNzg3IGI4NzFlN2JkODM1NWIyOTIyZGM5YjcyMzgwMGU4NjMxZWMxYTU0MWMgbGVnYWN5LXRydW5rCis1Mjc4OCAwZmRjMmI4MjExZjkyZTU2NjE5ZTZlYmUxN2UzODllZjVhODE5MzQ1IGxlZ2FjeS10cnVuaworNTI3ODkgYmUyZjViMmQ1M2IzYmQyNjFjNjkxNzMyZDI4ZDA3ZTlhYmEwYzgwZCBsZWdhY3ktdHJ1bmsKKzUyNzkwIDQwMTY2ZTUwMTFmODE5MGE4YjkwMDcxOGFlZmRiNTE4Yzk0NmVlYTAgbGVnYWN5LXRydW5rCis1Mjc5MSA5ZmQxMzU0ZGE2ZGI2YjJiZTg2YjQ3YTE5NTlhNTI4ODZjNWJjNWI5IHJlbGVhc2UyMi1tYWludAorNTI3OTIgMjcxMTMzOTgxZTYzZTFiYzc4Zjg5ZTc3MDEzZDEwMGE3Yzc5OTEyYyBsZWdhY3ktdHJ1bmsKKzUyNzk0IDY0ZTBhYzgzOTZhM2Q2ZWUyM2UwZjM1NGUwNDUyODg1OTAyZWMyN2QgbGVnYWN5LXRydW5rCis1Mjc5NSA2MDZlMWYwZTg3YmRhZDZjZDI0MzU5NWUxYmNiMTQwODQzNmZhMzgwIGxlZ2FjeS10cnVuaworNTI3OTYgNDJlYWVkOGQyYjQ1NDJhZmZjZWYwMTAzNWI3YTAzOTUyOTk4MTY3MiByZWxlYXNlMjUtbWFpbnQKKzUyNzk3IGYzYTYzMTg1NzU0NDc1Y2Q1NWIwODU2OWIxOGFkNTZlM2ZmZmUyMWQgcmVsZWFzZTI0LW1haW50Cis1Mjc5OCBkN2FjM2I4ZjIxMzkyMTllZjhkMjY2Nzc3ZGFiNWYxOGJkNDY1YzMzIHJlbGVhc2UyMy1tYWludAorNTI3OTkgOGZkYTVjODZjYzE2Y2VhODkzMTE0YzVjZjA1N2FmODU2YWIxODk3ZCByZWxlYXNlMjItbWFpbnQKKzUyODAwIGNmMGU2ODU2MjYwNGQ5YTJhMzY2M2JkMzBmMmQzY2EyNzMzN2U5NzggbGVnYWN5LXRydW5rCis1MjgwMSBjZTRjY2Y4N2Y1NmU0NjM5NGViZjBmMzMyOWNlNjVlMTQ3MjM3MTU0IHJlbGVhc2UyNS1tYWludAorNTI4MDIgYzdhOGNiMDk1YzQ4NTFmODE5MGRkYzE3NDdiMDVkYzFmOTdjZWQ5MiByZWxlYXNlMjQtbWFpbnQKKzUyODAzIDk1YWU3NDFlMjg3YmFmN2I3MDkxYmE1ZTYxYzJiZjAwYjJhNjU5ZTcgcmVsZWFzZTIzLW1haW50Cis1MjgxMSA5OWNiMzgzNTFmZmM0MGJiYzMwMWY3YzNjZjEzYzU1ZGJlYmQzMjZiIGxlZ2FjeS10cnVuaworNTI4MTIgYWIxODg1ZjM0NDNhN2RhYjNhOGU0OTRkZmI0ZjgxN2FiYmU5ZDZhNyByZWxlYXNlMjUtbWFpbnQKKzUyODEzIGEyN2VkZTJjYTYwNjhhNTE2OGI1NjJkYzRmOWI2NWMwN2YxY2IyZTIgcmVsZWFzZTI1LW1haW50Cis1MjgxNCA2MWIwNjliODRkMGFmY2M1MTBkMjU3NjJjZTYzMmRjNDMxODgzMTdjIGxlZ2FjeS10cnVuaworNTI4MTUgYjBjMDhlZjFjMzAzMDkwN2E2NmQ4N2I3Y2RiZTJlM2MwMjMwY2JjZiBsZWdhY3ktdHJ1bmsKKzUyODE2IDZlMWI5MDA3YmJkYzYwNDhiODI0ZTZkYzliMjE3N2VmZWI1ODRhMWUgcmVsZWFzZTI1LW1haW50Cis1MjgxNyBkMTgzZDgxMjQ4MDNkMDI3MmU1Y2RkZTQzZWE4YWZhOWQwZjBhODkwIGxlZ2FjeS10cnVuaworNTI4MTggYTAzN2ZhOGY4NDU4ZTMxZjMxZjJhNzE3OTBlMzdiODc3YzhlZGFkMSByZWxlYXNlMjUtbWFpbnQKKzUyODE5IDI1OWQyNjkwMDg2MTdjYmMxN2Q5MTBmMDA0ZjA0OTFhYjczZjAwYTkgcDN5aworNTI4MjAgZDc1YjBjYWE2N2RiOWRlNjEyMTA5NzhiZGJhZjFlNmFhNGViZTRjMSBwM3lrCis1MjgyMSA5M2RiZmM2NTRiNmEyMjJmYmQ1MmFiOGZmNDNiZWI3OTExZmJmNjAzIGxlZ2FjeS10cnVuaworNTI4MjMgN2YzM2YyNGE3YzQxNjdjODI3OWQ2OGVkY2E0MmVhOWI2ZTNkMzk0MCBwM3lrCis1MjgyNCAyNWNjNjE2MTQ3MjA2M2JhY2M2YTNmZWRkNTllYWUwMmU2YjM2ZDAxIHJlbGVhc2UyMy1tYWludAorNTI4MjYgYTNlMGYxZTExMDgyODg4ZTkzZDBjODI4NWVhZmYyNTk2OGQ4NWRlZSBsZWdhY3ktdHJ1bmsKKzUyODI3IGI2YjAyNTkzMTQ1MTMzMzc3ZGUyODMxZWFkOWEwYjBlOGNmOThiODAgcmVsZWFzZTI1LW1haW50Cis1MjgzMyAyOTFlNjMzNjg2N2I2NzRmMGY4NGZkNGNjMGY0NjM2MjFkY2M2NzE1IGxlZ2FjeS10cnVuaworNTI4MzQgY2QzZDZiOThjYWVhZDI2NmI5MDAyYzhjZDc3MTk1YzZkOGViZmRlMCByZWxlYXNlMjUtbWFpbnQKKzUyODM1IDAwNDYyY2E0ODg0NTQ4MGU5Y2E4NDIzYTRiZjc1YjcwNDdiMjJmYzQgbGVnYWN5LXRydW5rCis1MjgzOSBlNzA3MGQ2N2RiOGM3YzlmZTMzZjBjNzhiOWZkNTY0MjA0ZjM1ZjA1IGxlZ2FjeS10cnVuaworNTI4NDAgMTkzMTQ2ZTRkMjc2YzA0NGVmN2FhMjFiM2Y1ZWM0ZDNiNzhlZWM0OCBsZWdhY3ktdHJ1bmsKKzUyODQxIDk2YmU5ZDc0YWQzNjc1MDQwZDYwMjFjM2U3OTY5MWQ1ZTVlMjY0NDYgbGVnYWN5LXRydW5rCis1Mjg0MiA1ODZkZDhlZWRiNzVmZWY4NzlhNmNmYjRmYjUwMDI2ZDkxNDQ3YzNlIHJlbGVhc2UyNS1tYWludAorNTI4NDMgMjUwODM1ZGM1NDRhYTYwMDNkMjAzNjYwNzZhMjUyZTNkNjUzMmVjMyBsZWdhY3ktdHJ1bmsKKzUyODQ0IDIwYmU0MzFlNzU0MDFhZmQ5Yjc2ZmY0MGExZjhjYWNkNWJmYTczODQgcmVsZWFzZTI1LW1haW50Cis1Mjg0NSA0NTRlZmYyNzA2ZDNiOGJiMjcxZGNjZTE0N2Y1ZTc5YTgxNDlmMDJhIGxlZ2FjeS10cnVuaworNTI4NDYgYTU1ZDQ2NWQ0MGNmZDI0ZGU1ZDUyYzEwOWNjMjY3ZjFhNmZlODY1ZCByZWxlYXNlMjUtbWFpbnQKKzUyODUwIGVmMTU0NzAxNjcwMzNjNzRhZTUwNWQ3ZDQyYTBkZmI2ZDNkZDllYWIgbGVnYWN5LXRydW5rCis1Mjg1MSBhMTAxNTMwMmQ3ZTRkNDJhMGFmMTY5NWMwODZkMmVmYTgyN2QwOGVmIHJlbGVhc2UyNS1tYWludAorNTI4NTMgODgxMzM0MTdkZmQwNWI0ZTE1NmE2YmNlNzE0ZDJhZjAxOWM1Y2FiOCBwM3lrCis1Mjg1NSA3OGZiNzk5MGM1YWE1OTViZmJjNGYxN2NhODFkOGZkYzI4YTYzNGI5IGxlZ2FjeS10cnVuaworNTI4NTYgYTFmZDkzYjU4OTEyMTA4NzhhYzNiNGFjN2U0ZjkwNjY0MzNlNDkzZiByZWxlYXNlMjUtbWFpbnQKKzUyODU3IDAyZDUxM2U4NzFmZTk1NzJkMjJmMTYyMDI2NDk4OTZlNjhlMzE4OTEgcDN5aworNTI4NjIgNGUzNjhlODJjNzBkNmExZTMxMjA4NDJmYmUyNDFhYjMyOTY1YzJmYyBsZWdhY3ktdHJ1bmsKKzUyODYzIDM5YWQ5OWRkNjdlNGRlNWNmYTliMzE1ODI5NDMyZDExMjUxNDU0NmIgcmVsZWFzZTI0LW1haW50Cis1Mjg2MyA5OGExZWNhM2E5MzA4M2NjZjAxZjQ1ZDA5YTI2MDk2YmRlNDEwNmY5IHJlbGVhc2UyNS1tYWludAorNTI4NzIgZmVmNWI3NzQ4MThiZGM0ZTYyNjJhMjMwMDRlYTJmZGQzYjkwNDU1YiBsZWdhY3ktdHJ1bmsKKzUyODc1IDFlM2Y1MDIwYmI1NTU4ZjAyNzc3OWEzZTIxYTg2YmQzNTI3MWYxNGQgcDN5aworNTI4NzcgMmU1MDExYWNiNDE0ZDRiMjY3ODhjMDM1N2EwNWIxYWE1NGI3MGY3MiBwM3lrCis1Mjg3OCBiM2VkMDUzY2M2YTFmMmIxZjJhY2MwMWNhZTk1MzRlZjc5MTliZDQyIHAzeWsKKzUyODkwIGQ4MDBkNjczNzU1NjQxNDQ0YTJmYTZjYzc4YmQ4NjI1MzM5MjlhMWYgbGVnYWN5LXRydW5rCis1Mjg5OSAwZTJhMDczY2JiYmZhN2NmN2RmYWFmNWQ0ZmQxNjczY2FlYTRiNDc2IHJlbGVhc2UyNS1tYWludAorNTI5MDAgYzdlN2U3MTk2YTRjY2YzNTVmYWU5MTJmMWQ5ZTkyNDI2NjY0MmQyZSBsZWdhY3ktdHJ1bmsKKzUyOTA1IDNhYjEyZDFhMTdkMmVlMzQ4ZmQ4YWJmMGVkZjU1MDZhNzdmY2IwMWYgbGVnYWN5LXRydW5rCis1MjkwNiBjNDM3ODdlNmQ3MDYxZDU3ZmQ3MDgxNjRkMGVmMDJmYzAwZDlhNTYyIGxlZ2FjeS10cnVuaworNTI5MDcgMjZiNzEzYTE5NTM0ZjI4ZTdkZTJhYWI5YWVkYzY5ZmUxN2M1Y2ZiMyByZWxlYXNlMjUtbWFpbnQKKzUyOTA4IDNlZTlkMWEzNmQ0NjQzMDljZjRjYmMxNTI4ZDY1MTcwZjlhNzU4ZTAgbGVnYWN5LXRydW5rCis1MjkwOSBhMDE0NjkyY2ZhNjY4ZGVkMWMwYmNiYTQyYmU5MzNjN2FkMTE5YTU5IHJlbGVhc2UyNS1tYWludAorNTI5MTAgNzNmMGZjMmY4ZjI3ZGMwOTdhZjFhMjI0YTE4MDRmNWUyMjYzMGE0MCBsZWdhY3ktdHJ1bmsKKzUyOTE1IGMxYTZkOTRiODAyNzc2OGYyMzYzYTAxZDg2YTFkYTQzZDNmM2M2OTYgbGVnYWN5LXRydW5rCis1MjkxNyAwY2FjM2U1MzFjNWExNWIxYTI5Mzk0MGUyZGY5MTk0NTBkNzI4OTc3IGxlZ2FjeS10cnVuaworNTI5MTggZjFhNmFiMzU3NGVmZGJkZDY5MWU2ZjEzY2NkNDllNTBjMDA5YTA2MyByZWxlYXNlMjUtbWFpbnQKKzUyOTM4IGViMzBkMzBmMjJhMTg1NzllZmQxZjA1YWE3NTEzMjJmN2UzN2M2NzcgbGVnYWN5LXRydW5rCis1MjkzOSA5ZmYyYjc0NThjNzBkMGFiYzc5NzI0MjNjMzU1NWRmMzczZTA3NDU0IHJlbGVhc2UyNS1tYWludAorNTI5NDUgOWZlNTg1NWIwNWRkYThmN2RlZmQyMDY5Mzk3YzRkYzViZmJlNGVhYiBsZWdhY3ktdHJ1bmsKKzUyOTUxIGQ1NTc2OTcxMmY3M2RmNTg4NWM4MmExNzhhNmM1NjU4ODVkMmIxMTIgbGVnYWN5LXRydW5rCis1Mjk1MiBlZWY3MjVhNDBhNjY3ODExNWIyZTU5YWIwNTBjM2EyYWViZTdiYjNjIHJlbGVhc2UyNS1tYWludAorNTI5NjIgZTVjZTVhMDUzNDExNjk2YmQwNjZhODA2MWEyMjg3M2MzZDI4NDM1ZCBsZWdhY3ktdHJ1bmsKKzUyOTYzIDZlOTFmYzg4YmY5OWNmODUwZTFmZThmYTFjMjA0YWZiNGYyMDg4ZTEgbGVnYWN5LXRydW5rCis1Mjk2NCA2YjAyZmUxYjM4MmZkZmM5NmU0YTRlYTc5NTAyYTRkY2I0YTE3YjBhIGxlZ2FjeS10cnVuaworNTI5NjYgYTE1YmQ4MWVmZGI2MzY5OTZkMzE3NGFkNjUyMmM0YTcyODNmMjY3YSBsZWdhY3ktdHJ1bmsKKzUyOTY3IGZhMjgwZDdjN2Q1ZWQyYjcxMThhMjIxYTVhNzk0ZjE0OWZhY2JhMzAgcmVsZWFzZTI1LW1haW50Cis1Mjk2OSBhZTkyYzhkMGYwOGQ1OTRiNTA5NGU2OWU1ODY3ZmNmNTU2MjVlYjM0IHJlbGVhc2UyNS1tYWludAorNTI5NzAgY2Y4N2M4ZjMzZjlmNzJmN2Y0ZjI0ZTI3ZDRjYjNjMGJlMWFjNDcwMyBsZWdhY3ktdHJ1bmsKKzUyOTcxIGI4N2M1NjM5YmMzYjgwYTQ5MGMyYmQxMTkwNGExYzkzN2U1N2I3ZjQgcmVsZWFzZTI1LW1haW50Cis1Mjk3MiA5ZDQ3MjU1NWI5MGQ3ZmE0NTU0NGE3ZDllNzZlMzU1YWJiOTI5YTM4IGxlZ2FjeS10cnVuaworNTI5NzMgNjhlZjA3ZDljODFlMWMxNTUxYTAzOTJkZjg2NzcwZTU1OGE3Y2QwZSByZWxlYXNlMjUtbWFpbnQKKzUyOTc0IGQ5YjRlZmM0ZWJlZmZmYzhmODU3NjI3Mzk2Zjk5MGI1NDRhZDFiNjMgcmVsZWFzZTI1LW1haW50Cis1Mjk3NSBkNGViNjdkMWQ5MzE4ZTc4NmVlZDRmMjQwZWM2ZTJmNWIwZjA5Nzc5IGxlZ2FjeS10cnVuaworNTI5NzkgNDQ3ZWYwZTc0NjI5OTcxMTM4OTMxY2NkNWVkNWU0MDY3NDQzNjFhYSByZWxlYXNlMjItbWFpbnQKKzUyOTk0IDBjNTFiMDA1YzIxNDRhNDQ5Njc5NzAyNGEzYzExOGVmOWMzNGM1MTEgbGVnYWN5LXRydW5rCis1Mjk5NiAzZDViMzA3NzI4OTJhY2E2YWZhODRhNWUzZWUyMzU2MmVlMjBjZDA0IGxlZ2FjeS10cnVuaworNTI5OTcgMDRmZGY5ZmZiMTg4MmU5YmNmYTA4ZWJjZmM1MDBmNDg0MWNhNmM4YyByZWxlYXNlMjUtbWFpbnQKKzUyOTk4IDYxMzA3MmI4ZjhkMDljM2Q2YWVjNzI5YzliZGY4MDBjZWJjNTg2MWUgbGVnYWN5LXRydW5rCis1Mjk5OSBhMzExYTEwYmEwYmZkNmYwNmY2N2UyZGUzNGQ1YmZhMmNjNWQxNjNmIHJlbGVhc2UyNC1tYWludAorNTMwMDAgMzE1YzVhNjMzYjA1YmYyNTRmM2ZjNjZhNDYyZmI4ZWNjOTM3NjhkOCBsZWdhY3ktdHJ1bmsKKzUzMDAxIGIzMzMyZWMyOTNmMjZkOWIwY2JiMmE5MTIxNDRkNDgyZDg3OTllMDEgcmVsZWFzZTI0LW1haW50Cis1MzAxMiA4MTAwODE4MTI5OTZkOGZlN2UyNWRiZDM1ZGFiOTgwMzNjMmUzY2EyIGxlZ2FjeS10cnVuaworNTMwMTcgY2M5OTJkNzVkNWIzYzk5MmE5ZWQwOTFlMTE4OTJhMTEzYzEzNDVlOSBwM3lrCis1MzAxOCA2NDgyMjYxYjEwOTIxNjBhMWZmNDk4ZWM2ZGVhMDJmNDc4MTUwZDM3IHAzeWsKKzUzMDE5IDUwY2U1NmIyNGNiZTMxMzczMWI5N2RmOGRlZWY0NmFjMDExY2Y2ZGIgcDN5aworNTMwMjMgMWNiN2IzYWU0MTRkMDVjMjAxOGEyYTQ2ZmZhOGZkMDdiYTFiNWZjMSBsZWdhY3ktdHJ1bmsKKzUzMDI1IDU2ZTg4YmJhZDlhMGU4ZGIxMTVmN2M0ZjE3ZTFjZDVkODkzOTllN2UgbGVnYWN5LXRydW5rCis1MzAyNiA0ODA3ODliMzI5NGRjNWJiY2ZiNDA1ZWNhZWUyYzg0YTFlYjVhYWQ2IGxlZ2FjeS10cnVuaworNTMwMjkgZTRmMmI5MmM3NTdjOTVkNjRkYTRhYzgzMDc1YTY4NDY2MDEyODczNyBsZWdhY3ktdHJ1bmsKKzUzMDMwIGNlZWVkMDI4NzIxNjgyMzJmYjAwYTRhNmVkMWFkNjFiYWRiYjJkMTEgcmVsZWFzZTI1LW1haW50Cis1MzAzMSBhOTEwYWJlNzgxNTkwYTU1NGI3ZjE5ODMwMzllMDczYTE2NWNiYTcxIGxlZ2FjeS10cnVuaworNTMwMzIgOWUzOTY5OGFmYmE1NmNhNjlmNDE0Njk2YmViYTNjNjI4NGRhMzU3MiBsZWdhY3ktdHJ1bmsKKzUzMDMzIGVlNWU0MWRlYTk0OTJlYjU5OTZkMGY0OWZlMjgyNjJjZGFhNDgzOGYgcmVsZWFzZTI1LW1haW50Cis1MzAzOCAwZGRkMDU5M2Q0MGJlZTkyNDBmYjhkMzU3OTAwYzAwMDlmMzI1NzdjIHAzeWstbm9zbGljZQorNTMwMzkgZmE5OTM0NjI2NDEwNDQyYzFiMjgxMDFhNTc1YjA1Y2YyMDIxMjU5ZSBwM3lrLW5vc2xpY2UKKzUzMDQwIDQ2N2IzODExOGIyOWEyYjZhZThlMzkxOWYwYjQwMWUyODhlOTUxZjIgcDN5ay1ub3NsaWNlCis1MzA0MSA4MzM4NGE2OTI1YTRjOTJjYjE4M2U1NTlhODE1MWVkMTgzOWQzODFjIHAzeWstbm9zbGljZQorNTMwNDIgNTk3ZmU4OTVhOTU4MzYyZjZlZmNhYTA2MTJiYmRkZWI4NTdiNzBiYiBsZWdhY3ktdHJ1bmsKKzUzMDQ0IDRmN2Y3MmJjMzQwYTdlNWQzMDE4OTM4OTVkNGY0N2E5MDBiYjY1MWMgcDN5ay1ub3NsaWNlCis1MzA0NSA3NDU3M2ZkZTRmMGNlNzcxYTBmZTEwNjYzOGUwNzQ4MDVmMzZmZmQ0IHAzeWstbm9zbGljZQorNTMwNDggMGQ2NGYyOWVmMjczZDJjMjMzNGI3OGY4MTZmOWIyMDY3OGY2MThjOSBsZWdhY3ktdHJ1bmsKKzUzMDQ5IDdkNzlmZDE4MTZhODQ1ZDk3MDhmY2RhMTFjOTM3Zjc5NzBhYWIwZjcgcmVsZWFzZTI1LW1haW50Cis1MzA1MCA4MWNjZmVkYzFjOTllN2Q4ZDBmMTA1YmZmZjliNGM1NmFmZWZiZTJiIGxlZ2FjeS10cnVuaworNTMwNTEgOGUzZjJiMDIyZjcyNzcxYzcwYzViMDZkNjQ2MGQ0NzA5ZDM0M2RhNCBsZWdhY3ktdHJ1bmsKKzUzMDUyIDM4YWExYTAxMDIxOWVlYWM0ODZlMzQ1MmQ5YWFjZGVlMjM2OGY3YmEgbGVnYWN5LXRydW5rCis1MzA1MyA1NmRjNzJjMWExZjQzZGVlYWM0MjYxZTRmNGUzODYxYTI1NGY3YTFkIGxlZ2FjeS10cnVuaworNTMwNTQgY2RmNjM1MTNhOGNkZmZjMzQzODJiMmQ1YTg1MWI3NjQ0ZDQwYTJlNyByZWxlYXNlMjUtbWFpbnQKKzUzMDU2IGFkZDAzYTlkNzc4YjgyODE5YTFiMjk5YTJmZmY4MjhjYjUzOWI2OTkgcmVsZWFzZTI1LW1haW50Cis1MzA1NyBmZTJhM2M5NjZjOGVhZjFhNzY4NDE1OGE5MTVmNzYzNmY0NmI2NjQ2IGxlZ2FjeS10cnVuaworNTMwNjMgZWIzYjIzOWE0ZDA3ODA2MTY2ZjI4OTJkMTM3ZjU1NmUyYjIyZjA1YyBsZWdhY3ktdHJ1bmsKKzUzMDY0IDk1NDhjYTBlNjU2MGVjZDQ0NGViZGE4NDk4ZWQzN2E5NTgzOWJlMTYgcDN5aworNTMwNjUgMjE0ODBkODliNDdmMTJkMGNmNTE5YWNlZmMxZjA3MWM1Mzk0ZjU2NCBsZWdhY3ktdHJ1bmsKKzUzMDY2IGIyN2Q1ZDk4YTU1Njc2YzY1OTY0MTVmZmI0MGY2NGQ2NjczMzRhNGEgbGVnYWN5LXRydW5rCis1MzA2NyAxN2U3NGNlMmJjMzVlNzliNjU0YzIxNTIxZDViZDlkYzg1Y2Q4ZDZmIGxlZ2FjeS10cnVuaworNTMwNjggZGNjNDBiOTNiZmJlY2JhM2IwNDVkNDRiNzEzOGNlN2ZkMTBhY2IxMyBsZWdhY3ktdHJ1bmsKKzUzMDY5IDBiMDRjYjc1MWMxYTIyMTEzZGEzNjY5OTBlM2U2NzgxZWNjZjdlYjAgcmVsZWFzZTI1LW1haW50Cis1MzA3MCAxNjQ0YmE3ZGNlMWYwNWRlMDZkYTQ5ZDMwOWY5NjUyYTE5MWE2YzIxIHJlbGVhc2UyNS1tYWludAorNTMwNzEgZjk4MzQwZTM2YzMxMTVlZDc2M2UxNTg3YzZkNDhmZDBjNzQ1ODE2MCBsZWdhY3ktdHJ1bmsKKzUzMDcyIDMwZjA5Nzc2ZWQ1NTYwMGEwYzQ4NjNkNDczNGMyMDgxMjU4MTJjOGIgcmVsZWFzZTI1LW1haW50Cis1MzA3MyBmZTY5OGQwNzhjZjk3ZTc3NjdhYTFiMmNhMDQ5MzM2YjExMjA5Yjk2IGxlZ2FjeS10cnVuaworNTMwNzQgYThmYTI2YTNhMmNhMWM5ZGFmM2RkODkyYTA0ZjY2NmU2OTY0ZmM0ZCBsZWdhY3ktdHJ1bmsKKzUzMDc1IDZmODY0YTkxYzYxMmM5ZWQ3MjlmMTEwNmY5NDVkNzVmMzFlNTIwZGIgcmVsZWFzZTI1LW1haW50Cis1MzA4MCA4NTY1ZTNmZWE5YjYyYTJiYzM4N2Y3MGQ2YWM5NTJhOTcwMTA2NjliIHAzeWsKKzUzMDg3IGQ0ZmNiNTY1NjMxNjJjMjc1Y2Y0ODhmNDkxOWRkYmNiOWViOWVhN2EgcDN5aworNTMwODkgZjFhNGNlMWZlNWIxMGI1ZDIwODY3ZjQ4NjE4OGYzODI0MWU0NTMxNCBwM3lrCis1MzA5MCA1MTM5NWMwYjU0ODJmOGM0MGZmZjA3MDE1Y2I2YWE3NzMwOGUxYTgxIGxlZ2FjeS10cnVuaworNTMwOTkgOTZkNTMzZWZiZTdkZDRjN2YwN2I1NGI1Yjk3YzVlNjk4ZDZkNDZjYyBsZWdhY3ktdHJ1bmsKKzUzMTAwIGZlOWI1Njk5MDg5NDQ4ZWNmOTc1YmNjOWIwMGM0YWQxMGQ0NDliMjggcmVsZWFzZTI1LW1haW50Cis1MzEwMSAwMzdmM2NlYTI2NTUwMmM5NmY2NWU5MDNlZjNhMTdkY2I5Nzc5NGFjIHJlbGVhc2UyNC1tYWludAorNTMxMDYgMTI1MGZlNDJjZTVjNzkxMjQwNzc5OGIzN2FkZGYxZjhlM2M1M2EzZiBsZWdhY3ktdHJ1bmsKKzUzMTEwIDhmYjMzNTAwZTA2NzBiODU4ZDVhMmY4NTk0YjAzZTlkYzc1NThhYzggbGVnYWN5LXRydW5rCis1MzExMiA3OTA5YTRlZTU2NmIwNTgzNDJiMTUwNGZhNTNiNzIwM2JlNTk0ZmUxIGxlZ2FjeS10cnVuaworNTMxMTMgMmQ1ZWQyNjdhNDBmYTFhY2ZkMjk5OWRjMWEwNDgzOWFiOTlmODJmMCBsZWdhY3ktdHJ1bmsKKzUzMTE0IDgzZjVlODBjZTFmMjljMzExYTA3NjBiMjRjZjc2MGVlYzQ1YjljOWIgcmVsZWFzZTI1LW1haW50Cis1MzExNSBhODU5NWRlYWQ1NGFkNWQ3ZmE5YmVjNzNjN2IzNDcyOGY1YzQ2YmI1IGxlZ2FjeS10cnVuaworNTMxMTYgMjJhNTdmNGZmYmNkM2Q0ZWU5NTFhODE2MTQ1ZDU4YmQ2Y2ZlZmYyOCByZWxlYXNlMjUtbWFpbnQKKzUzMTE3IDM1YzQ4ZjY5YmFjZWM3OTU4MjdmZjQ4MTVhNmMwZTNkYzAwMzI5NGMgbGVnYWN5LXRydW5rCis1MzExOCBkMmZhN2RhYWE1OWJmMzA4NzA4OWQyMDY2M2RmMDg4NDNmYTkwZjU1IHJlbGVhc2UyNS1tYWludAorNTMxMjAgM2Q2NjY5YWRlY2U0YTY0Mzc4YWJlNmZlYzMzZDQ0MGExZjFlZWY3ZiBsZWdhY3ktdHJ1bmsKKzUzMTI1IGU4ZTIzZWQ2YjY3ZjEzNGNhZDFiZmE0M2IzZGQ3YTUzOGI0MjBmNzEgbGVnYWN5LXRydW5rCis1MzEyNiBmYjVlM2ZjNDIyN2JlODIyYjNlN2ZhYWY4OThiZmY5MGJlMWQ2YTIyIHJlbGVhc2UyNS1tYWludAorNTMxMjkgOTRlYmY0YTJmNzM4ZjAxMWU1OWNjMWY2NjI0YjljMzJjZGE1M2IxMiBsZWdhY3ktdHJ1bmsKKzUzMTMxIGY5NGUyYjE5NTE4OWVkYzk1NjczZjg1NDFlYTBkODQyNTdmYzY0ZGIgbGVnYWN5LXRydW5rCis1MzEzMiAzN2U3MWZlYWVhM2QyZmMyMDRiOTJiN2ExNmJhNWFhNmE1NDg4NDY4IHJlbGVhc2UyNS1tYWludAorNTMxMzcgODgxNjI1YzEzYzIwNmNiNzI1MWRhZTkyY2IzNGU5NGQzMjliNGE1MCBsZWdhY3ktdHJ1bmsKKzUzMTM5IDY2M2M5ZjFjZTNhYWJmOGQ4NGMzNTc1YjY1M2UzMGE1MzU1YWEwZjAgbGVnYWN5LXRydW5rCis1MzE0MCAyYzUwNGM2MmQ0ZDhkZDU0MTgwNzU5MTE1YjViNzU1NDc0ZWRlNWZkIHJlbGVhc2UyNS1tYWludAorNTMxNDEgMmY4NGI2ZTgxOTAyYTg0MTc0MDQ4NjI5MTZlMTdmMDM1MDg5OGVlMSBsZWdhY3ktdHJ1bmsKKzUzMTQyIGY5MjZiYmMyZmQ2MjkyNzdlNmEzYTNkN2ZjMjA5MDYyZWEzZTllYmMgbGVnYWN5LXRydW5rCis1MzE0NSA1YzY3NDg0YzRjZjVlZTE3MmM1NzA1ZjkzNzNjNjM5MGY3ZjM3YmEyIGxlZ2FjeS10cnVuaworNTMxNDYgOTJmM2VmOGZhNGFmYTA4MDY3NjdkZDE5ZWMyMWU2MGVhOTQ4NjIzZSBsZWdhY3ktdHJ1bmsKKzUzMTQ3IDA5ZjRiNDYwYmFlYjdlNWZiNGM3ODQ0N2IxZjk4YmJhNGY3OTFmNGMgbGVnYWN5LXRydW5rCis1MzE0OCBkZWQ5OWRiNzBjYTY3OGRkMDliM2RlY2FjZjg2NzIzNGVmMGE4MGQ5IHJlbGVhc2UyNS1tYWludAorNTMxNDkgZTRiMGZmNDQ5MjE1ZjI1ZjJhZDU1ZGQ0Y2QzZDI1MzE2YWJiMWRkMiBsZWdhY3ktdHJ1bmsKKzUzMTUwIDI4OTgxOWZkZTNhZjBlY2Y0OTY0MDg3YjBiNzI3YTBkZGQ4YzU2OTggbGVnYWN5LXRydW5rCis1MzE1MyA1YzdlYTkzNDZmMTI3NDUxODhlOTI0ZjYxOTY0MmE5ZWE4YmYyOWFkIGxlZ2FjeS10cnVuaworNTMxNTQgYWM4YTlhNDEyMWQxN2FhNzFkYmFmNWFlZGE3M2JkNmIxNmYzNjYyZSByZWxlYXNlMjUtbWFpbnQKKzUzMTU1IDY3NjNlNDVjN2Y3ZDM0ODM1NDJlNDJiNDNiNzViZTljNmFiODkyNjUgbGVnYWN5LXRydW5rCis1MzE1NiBlZjRiOGZjZDE0ZDcyZmUzOGJjMDAyNzk4MDkzYmFmNjAxYTE3N2RhIHJlbGVhc2UyNS1tYWludAorNTMxNTkgMWUxYjljMmUyYWYwZTMyMmQzMTE5MDIxMTA5YzYxY2RkOTU1MDU3NSBsZWdhY3ktdHJ1bmsKKzUzMTYwIDEyYWY2Nzg4ZDkxMTU1OWM5Y2VmNGU4MGM5ZWU0NzhjYzNhNTRmNDggbGVnYWN5LXRydW5rCis1MzE2MSBlODVjYTNmZDRiZDYzZjM4MGEwYWIzMWI4ZWI0MTI4NDZkYWY4NWUwIGxlZ2FjeS10cnVuaworNTMxNjIgMjY3NmQ4Mjg3YTExYjBlOWEyZmQ5MjFjZmY1Zjc5OTg2NTk5NmRjZSByZWxlYXNlMjUtbWFpbnQKKzUzMTY1IDZmOGM2ZjgzMGI1MWNlNjVlMjVkOGY1NTRjZWJiZDA5NDA1ZjVlZWUgbGVnYWN5LXRydW5rCis1MzE2NiA0ZDc3YTJjNmFhNTUzMzczYTY0MDVhZDg2MjM5Nzc1OTFlM2JhYzNlIHJlbGVhc2UyNS1tYWludAorNTMxNjcgMTk1ZjY4OWFmNWFmZjRiY2MwNjVmZjVmNzQ4OGY2NWViM2IzNDY5OCBwM3lrCis1MzE2OCBiY2U3ZTRhOTI2YTkxYmE1YjQzYjZlYWExMDliYjQ1NWM5MDk5ZjkyIHAzeWsKKzUzMTcwIDU0Y2Q0Nzc4ODgxMWMwM2M1ZWQ1MTRhYTBkMDEwM2Q0NmE0ZmUxODEgcDN5aworNTMxNzEgN2EzNWQzZDFhYzVhMzAxZWYzZGM1MmY5MTQwODQ0ZjA0MjIwMTFhNSBwM3lrCis1MzE4NyBkNjNmYTkwZGY5ZWFkODQ0N2NlYWQzYjdmZTQyM2MxMWFjMTgwMWI2IHJlbGVhc2UyNS1tYWludAorNTMxODggYTMyMjIwNzVmNWM2NmExM2NiY2JkNTc2YzI2YjllMDVhMmIzNjUwNCBsZWdhY3ktdHJ1bmsKKzUzMTg5IGIxOWVkNTQzZDY5NWEwMzA1ZmEwMjgxNDk2NDM4ZTQxOWM4NjQ1NDggcDN5aworNTMxOTAgYjlmY2E4ZmIwZmIzNTE4ZjE5MTQ1M2JlYTk2NjljYzUwNDlmNmM4NiByZWxlYXNlMjUtbWFpbnQKKzUzMTk3IDk0Mzc1ZDgxNDg3ZGE4MTgwYjBiZDk4M2UxZDc2ZjQyNTcyZDE2OTUgcmVsZWFzZTI1LW1haW50Cis1MzIwMCBjMWE0ZGM3MWNkZDM3NjAxMjA1ZmI2NjRkNDljNDIyZTI3NjFjYjE5IGxlZ2FjeS10cnVuaworNTMyMzIgYmU4MjQwY2U1MmZmN2YzOWJhMTY2MWZkYjdhYjk2NWUzNWUwNDhkYSBsZWdhY3ktdHJ1bmsKKzUzMjM1IDJiMTliMmFkYzVjMWI4YTg3MTQwMGU5MDEwYzRiMDJlOGE4MTExYzIgbGVnYWN5LXRydW5rCis1MzIzNiA3YTEzODM5YzYzNWRjNTVjZGU0N2UyMWZlOTkzZWQ2MWQ4N2Q2M2Y4IHJlbGVhc2UyNS1tYWludAorNTMyNDMgOWNjNzYxYjllMmFjNTYwZjQ4YTRjYzU4OTI0ZTY5MWQzZWFiNmYzZiByZWxlYXNlMjUtbWFpbnQKKzUzMjQ0IGRjN2Q0ZTVkOGI0OTdlMmIwMWJiZDg2ZDI3MDllMzM5ODE4YTU2ZTEgbGVnYWN5LXRydW5rCis1MzI0OSA0MjAzZjhlNmU4NmFiNDBiZmZkMmMzYjgzN2EyZjQwZWI3OGQzYzBiIGxlZ2FjeS10cnVuaworNTMyNTAgZDk3NDljM2U2MzI2YWUxNjIzZjlkMWQ0YWU0YmY0OGM5NzFhNjQ1YiByZWxlYXNlMjUtbWFpbnQKKzUzMjUyIGY5YjI3ODIwNzk4Yjc0NzRmMzZjZjM0MWFiMTcyMmExODZmNTczMjEgbGVnYWN5LXRydW5rCis1MzI1MyA2OWZlNjgzZWNlNTY2Yzg0MjMwNzdiZjE0MmQ2MzUyNzU3NmNmMmFlIGxlZ2FjeS10cnVuaworNTMyNTQgYWZhYmZmZDU2MmU5NGNiZGUyNGUxMzkxZDhmNjhhZjQ3MmU0NGQzMiByZWxlYXNlMjUtbWFpbnQKKzUzMjU1IDQ1YzczMTUyYjRhYzU4MzE0NTUzZDEwNWM2MzRlNjdhODQ0MDJjZmIgbGVnYWN5LXRydW5rCis1MzI1NiBjYTI5NWMyNzBiMWMzZjJjMTU1YTk1MmE5ZGNkZTJlMzcxZTM0YTUyIHJlbGVhc2UyNS1tYWludAorNTMyNTggNDI3NGVkZmRjZTk4MThlNTQ2ODRjZGUyMGU3YjgxN2RhNGE0ZmE4MiBsZWdhY3ktdHJ1bmsKKzUzMjU5IDMwZGEwNmIyMjVhZmFjM2JiMThjMDhkMTc1ZDk3ZjNhMTNjYTE5ZGEgcmVsZWFzZTI1LW1haW50Cis1MzI2MCA5NmQ3NmQwOWE0ZTljMjI1MmRmYTg5N2ZkNmNhOGY5ZWFjNzQ0Yjc5IGxlZ2FjeS10cnVuaworNTMyNjIgN2Y3Njk5NmM3YmY0YjhlYzc0YmY0NmEwNGQ0NGQwZjU5NjUxNjkwYiBsZWdhY3ktdHJ1bmsKKzUzMjYzIDkwOTM3ZDMxNzRjYmU1Njg2Y2E5MWRkZTkwYzcxZjgxNWM5OWQ1YWMgcmVsZWFzZTI1LW1haW50Cis1MzI2NCA5MzM0YjBkYzNhMTdkOTBlMjdlZjQ1Nzk3ODg5NzAwNDM2NGE1Y2NkIGxlZ2FjeS10cnVuaworNTMyNjkgM2E4ZmQzNjM4ZjI2MGExYzU1ZTFhNTc4YmFlZDVhMmYzYTc3M2Y0YyByZWxlYXNlMjUtbWFpbnQKKzUzMjcwIDg0YWNlYThlMDcyZTY2ZTMxYjQwYjc1Y2VlNTBjZjZmMTFkNzk4YmMgcmVsZWFzZTI1LW1haW50Cis1MzI3MyBmNzAyNzlmMDBkZmM4MGMwZGZiOTg4OWY2ZTgzNzk2MTgyMWZlNjc1IHJlbGVhc2UyNS1tYWludAorNTMyNzUgNjg0NWUwZTYyOTAwZmMyMTk1NTliMWE3OGEyNmNmYmI0ZDI3NDQwYyByZWxlYXNlMjUtbWFpbnQKKzUzMjc5IDE2N2U3YmE3NDc1NjEzYzIyNjgwY2FiOTZiZmFmZWRiYWMwNTdiMTQgbGVnYWN5LXRydW5rCis1MzI4NSAwN2M0NzAyMDIwZGM5MmFkZTY1YjFmMWExZmM4ZWRkZjJhOTFiM2Q5IGxlZ2FjeS10cnVuaworNTMyODYgNDEwNTU3MGRhMzBhZDJiMjEwODljZDAxNWYxYzVkYWI3YzI0OTMxYyBsZWdhY3ktdHJ1bmsKKzUzMjg3IDE1MjBiYWFmMjdiZjc0ZTk3OTc5ZDdhZjA3NTIxMmZlODRhYmZmODUgcmVsZWFzZTI1LW1haW50Cis1MzI4OCA2YmQ2NWNiNWI5NTIwNjJlMzBlYTJlMjM2ZGM1MjE1OWMwYjliMGEwIHAzeWsKKzUzMjg5IDk5NWI3ZmNjMjk2ZGY1Njg0YWM3MzlhMjFjZTY0YTQ1MmI4NzA0YjMgcDN5aworNTMyOTEgY2M5NDljNjA1NTc0ZGE3NWRjODU5MWI3MmY5ZmVmNWY0YjE4ZjkxZiBsZWdhY3ktdHJ1bmsKKzUzMjkzIDdhMTFhM2FiZTY0YzFmNmY3YzVjMjM3N2JiOGNlZWU1YjI1ZWUxZWIgbGVnYWN5LXRydW5rCis1MzI5NCA0NGM2MjIwYjFkYzNmZmE2NmRhZGZkZjI5OTBjNTgzZmZkZDg0OWZiIHJlbGVhc2UyNS1tYWludAorNTMyOTUgOTkwOTNiNTI3YzAxY2EzZmY1OTBlYTJjMzk4MGRmYjE1ZjJmZWM4MSBsZWdhY3ktdHJ1bmsKKzUzMjk2IDAzNTQ3YTRjZDMwYWZhMTBhMzhiYThjMjJhNjg1NTYyYzg1ZjhhNTAgcmVsZWFzZTI1LW1haW50Cis1MzI5NyA5NDBmZjVjNzdmM2E5MTA3ZWVjYjE2ODBhZDcyYTNmY2I5OTQ2ZGUxIHJlbGVhc2UyNS1tYWludAorNTMyOTggOGRhNmRkYTY3OWY4YjJhOGU1ZGRmNmI1ZWIzOWIyNWMwNGZlN2RmMiByZWxlYXNlMjUtbWFpbnQKKzUzMjk5IDRkYzc5ZTI4MzIwOTRkNTJhODI3M2M4MmY4ZGI1MzNkODllNTViMzEgcmVsZWFzZTI1LW1haW50Cis1MzMwMCBiZDdlNDFkZTk4MmY2MGU5ZjI5ODA4ODI0Y2MzZjVlNWU1Nzc0NjY1IGxlZ2FjeS10cnVuaworNTMzMDEgOWFmZDJjN2ZhZWRlNjNhNzE3OTVkMzFhNjU3ZThlODRiZGM2NTcxZiBsZWdhY3ktdHJ1bmsKKzUzMzAyIDFlZDNlZDlhZjM0OGNmYmE0Y2U3OTMxNzY4NmM4OWJhNDBkNjEzYmYgbGVnYWN5LXRydW5rCis1MzMwMyBkZTUwNDAyNGE2ZTc3YjQ1OWIwOWVhNDA2ODdhMDY5ZDU2MTM2ODM4IGxlZ2FjeS10cnVuaworNTMzMDQgOTJkZDJiYjk0Y2E5Yzg3OTE0MDdlYjI3YjAyMDM0YmYxMTdmNjc1ZiBsZWdhY3ktdHJ1bmsKKzUzMzA1IDVkNDMxMDI1Yzk5OWE5NmUwZDI3NTc2OGFjODE4MTU3YTBjMDllMGUgbGVnYWN5LXRydW5rCis1MzMwNiA2MWQ2MzRhMGJkNmEyM2Q5MDM3NDEzOGNhNjc0Y2I3NzFlMmVmZGIxIGxlZ2FjeS10cnVuaworNTMzMTYgMGQ5MmNhYTJkMGY0MmIyYzM5MmNkZGZjOTE2MWE4MjNhNDg4NGFkMiBsZWdhY3ktdHJ1bmsKKzUzMzIxIDZkZGI2MzZmOTVjMDA5NDRjNjg2MzBhZGEyYTJiNzhjZWE2Y2YyNWEgcmVsZWFzZTI1LW1haW50Cis1MzMyOSBiODFmNGVlOTRiMDRjYjk2YWY0ZDE5Y2FmYTMyMjkzMjY2NmQ1MWY1IGJjYW5ub24tb2JqY2FwCis1MzMzMSA0OWRjN2ZjNjZiZWUzODJhMDU1YzI4MGY3NmVmODQ5YjUwZGJhMjU3IGJjYW5ub24tb2JqY2FwCis1MzMzMiA2NzI4N2NhNGUxZTg1M2ZjZGE3MjJmM2I5OTM5NmYyZDRlODg5ZjZkIHAzeWsKKzUzMzMzIGJiMWVlYTljZWQ3MGRhYjc4NDRmMzNiNDU4MWUwNWJiOTE4ZmNhMTkgYmNhbm5vbi1vYmpjYXAKKzUzMzM0IGYzMWZlZTI2MmI1MTQ1ZjA0M2M1YjM4MzIxODYwOTQxMjY4YmViMDQgYmNhbm5vbi1vYmpjYXAKKzUzMzM1IDY5YmM4MDZkOTY2MTY1M2EzNmMyOTU0ZTNjNzczODk3NGM1ZWU5OTIgcDN5aworNTMzMzYgMGI3OTdhN2I1MzEzMDRmMjUwOTBkOTk1MzhjNjNmYTQ1MmM0NWJhOCBwM3lrCis1MzM0MCA2NjdiZDAyN2Q4MDA5OGQ0NzBiOWNlODg1NTdkNWQ2ZDQ0MzE3OWUyIGxlZ2FjeS10cnVuaworNTMzNDEgYjRiYTcyNDlhYmE1NjgzMTEwNTZkOWYwZGEzYjkwMTUyZWQ3YWYzNiBsZWdhY3ktdHJ1bmsKKzUzMzQyIDZiMThhMDk1YzJlN2FiN2MzZTMzYTA2NmM4YTc0NTkyNWJlZjQ0YWQgcDN5aworNTMzNDkgNGJhYjY1ZmNjYThlNjM2OTliMDIyNjI0MmRmZTA4MjAyNDU5ZDk4OCBwM3lrCis1MzM1NyBmZjcxYjgyZjZjOTU2MDgzYjBjZDI4Y2IyMmM0ODY4ZmVkMzY5ZDE1IHJlbGVhc2UyNS1tYWludAorNTMzNTggMTNmYzE5NDIwNGM0ZTc0YzZlNDNjNjZiNWU0MTdlM2NkODBmOWUxZiBsZWdhY3ktdHJ1bmsKKzUzMzYwIDQ2OGFlM2UzOTJhMmEyYjY0ODBmNGFkZjZiNDc4OGRhZGIxYjFjMGMgcmVsZWFzZTI1LW1haW50Cis1MzM2MSA5MDk0NmQ1NDM0YWEzMmE3NzY3YmU3Yzk5NTk0NTEzNDlkM2UwYTJlIGxlZ2FjeS10cnVuaworNTMzNjIgNWYxMzAyNzFmMzg2OTVlZjQ5OTY3MmQ2Y2M2MzhlYTFjNGY0YjMzZCBsZWdhY3ktdHJ1bmsKKzUzMzYzIDdlMjUwMDIyNmM0MzZjNjVhMWRkNzkzMzY4ZjhjODViZWYxMzFhOTkgcDN5ay1ub3NsaWNlCis1MzM2NCA4YzM2OTM0NmE0Y2M1MDhjOWRjZDM3N2M2MTI3YmYwNTRlMmNiNWM4IHAzeWstbm9zbGljZQorNTMzNjkgZTFlNDQ5M2Y2ZThmMjQ3YWYyNTlhZTI0MTY0Y2M5MWFjYTFjODNlNCByZWxlYXNlMjUtbWFpbnQKKzUzMzcwIDQ2ZmM3NTYxNWRhNTIyYmM4MDhjNTM0YjU2YTA0ZWMyNWE0MzNiZjIgbGVnYWN5LXRydW5rCis1MzM3MSBiNjBiNDIwOTdiNzhiNmFjYTRkYmVjYmQxZjM3YWE1NmU1OGQ0OTYzIHJlbGVhc2UyNC1tYWludAorNTMzNzMgODEzZGNjODNlNDJjMjdkYzA2YTNlMGQ0M2I4NDEwNzRiNTk1OGMyZCByZWxlYXNlMjQtbWFpbnQKKzUzMzc0IDQzYzc1ZTU0MGU5MjJmYjZlOGY3ODYwNzI0YzhjZjNmZDE3YmJiNzEgcmVsZWFzZTI1LW1haW50Cis1MzM3NSAyMTExOWRiNWUwOTY2NTBkNDNhYzU1YzRlN2UxNWY5MjFjOGI5ODIwIGxlZ2FjeS10cnVuaworNTMzODAgMjY4NTk5MDBmYTVkZTdlNWRhNmIzNWU5MWViMTIxODBlY2Q4OTA5NCByZWxlYXNlMjUtbWFpbnQKKzUzMzgxIDdkYTNkYmM4MTQ1Yjg0ZGJhYTJlMjM3ZDQxOWNjYjg4YjUxMDZlZTUgbGVnYWN5LXRydW5rCis1MzM4MyBiZTE5M2FmMjJmMDQ3ZWIwYWY3NjNjY2QzYjNjZDllNGJmZTY1YWQxIHJlbGVhc2UyNC1tYWludAorNTMzODQgZTE4YWYyOGI0OWRhOWE1OTEzNmFmM2MyYTQ2NTFiMTAxNThiMjBhNSByZWxlYXNlMjQtbWFpbnQKKzUzMzg1IDUzYzBiMDljNDhjMTFmNGNjMDRhMWYzZmFiMDc3YzQwYTE5N2E2ZTAgYmNhbm5vbi1vYmpjYXAKKzUzMzg3IDFjNGJiZTYzZmRmYzQ4NzcyNDNhYWE3YWFmZWU3NTMyNzFkZTVkMzMgYmNhbm5vbi1vYmpjYXAKKzUzMzg4IDdkODg2OGNmYmE3YzVlOWRmNDBmNmNiNDMzOWMzNTZmYmJjNTE3MWEgbGVnYWN5LXRydW5rCis1MzM4OSBhMmUxN2I3NTE1ZDNhMzYzZTI1MjcwMjBkZDNkNmJiNmQyN2VmZDUxIGJjYW5ub24tb2JqY2FwCis1MzM5MCA2ODk5Yjc0MGU4ZWFlNmRkZDdkY2RkODk5OGJlZDI1NGNiMjhhMDQ4IGxlZ2FjeS10cnVuaworNTMzOTEgNzhjZDM4NGQzZmNmOTA5YWM4NTJkZTM4NzZhNDUyZTk0NGQwZmJkYyBiY2Fubm9uLW9iamNhcAorNTMzOTMgYzdiZDg5MmMwNTY3ZDcyZDIwN2MzZTI2NWM3MzEwOWFlZDA3ZGFhOCBsZWdhY3ktdHJ1bmsKKzUzMzk0IDZkMTZlYmM3MTU2OTVjMDkwOTE5ZjA5ODUzYzNlOTk1NTZkYzUwNWUgcmVsZWFzZTI1LW1haW50Cis1MzM5NSAxODAyY2Y5MzI1NGJmNjY0NTQ1ZjBmZDE0YjVkMDRkMDU2ZmU4YzlkIHJlbGVhc2UyNS1tYWludAorNTMzOTYgOGJmNjhlY2M3Njc2YWYxZmJkMzRiOGVkM2IwYmM2YWY3Y2I1NjM5MCByZWxlYXNlMjUtbWFpbnQKKzUzMzk3IDJjNTcxZjZjZTIzYWIyNzY2OGMyYWUxMmQ0ZGI2NDI4NzdiNGVkNmUgbGVnYWN5LXRydW5rCis1MzQwMSBlOGFkZThhNmU1Y2I5Y2E0YTIxMzVhMWZlYjY3YWY5YmRkNTljMzg1IGxlZ2FjeS10cnVuaworNTM0MDIgY2Y4YWY2Yjc1OThiYzUzNTU4OWQ3NWQ2OTViMWRjYjczMzAwMjFmYiBsZWdhY3ktdHJ1bmsKKzUzNDAzIGNhNTM3ZTliYTdhN2YxYTYxMDY4ZjUwNWM1ZjMzZTg1NjFhZTkwODEgbGVnYWN5LXRydW5rCis1MzQwNiBiMzAzZmIzODNmYTQ2OTQ4Mzc1MmUzZjNhYTY3ZjdiZWVhZDgwYzkxIGxlZ2FjeS10cnVuaworNTM0MDcgZjI3Yjg4OTliNjEzNTIzMmE3YTJhZTlkNjNlMzE0NDExY2E2ZDgyOSBsZWdhY3ktdHJ1bmsKKzUzNDA5IGVkN2FjZjE4ODFhOTQwZmM2NWM3ZDI1OTVjNjFmMzVjZmQyNWQ0NDUgbGVnYWN5LXRydW5rCis1MzQxMCAyYTQ3NmM5NGJlMjAwNDA1YTkxZTgyNTM5ZTJlZGFmYWMzZDIzNzAwIGxlZ2FjeS10cnVuaworNTM0MTEgNjhiNDFjMmQ2NjYzMWFhYzRiNDE0YjJjYTZjNjFmZWZlZTM0N2NjNiBsZWdhY3ktdHJ1bmsKKzUzNDEyIDJkZjgwZTcxNmU1YzlkOTI2NmZmZWQwYTlmMjNiOGRkNmY0N2E1MTggbGVnYWN5LXRydW5rCis1MzQxMyAxNDA5ZTFmMjczYjUwODUxMzU2MmM4NjM5MGVkMzNlNmIwMjE1YmExIHJlbGVhc2UyNS1tYWludAorNTM0MTQgNzNiOTNkYzVlNDQwYWMwODg5MjYzNWRlMGVhMTljMGMzNjdmMTljZSBsZWdhY3ktdHJ1bmsKKzUzNDE1IGYzMjgzMjk0NzFkZjU3MTM5NmEzYmFjYzlkYWFmM2YwYzEyZmI3NWYgbGVnYWN5LXRydW5rCis1MzQxNiBjYTFiNDBjYzZiNzRjMzU5OWEyNDZjYWU5NTQ0NTc1YWFmYTgzNDNlIGxlZ2FjeS10cnVuaworNTM0MTcgNDI2ZjFkMzczY2RkNjU3ODBmODc3OTgxMzJjYjQ5YjljMTNjYjBhOSBwM3lrCis1MzQxOCA0ZWJmMGI4MDVjZTg0ZjdhNzlmMDBjYjlkMDE2M2UyZDRlODZhNTdlIGludF91bmlmaWNhdGlvbgorNTM0MjAgYjlkNGNlZDIzNTA2MjFmNjY4Y2ZmOTQyZmM0MzUwMjMwZWJkOWE4MiBsZWdhY3ktdHJ1bmsKKzUzNDIxIDRhZWUzZjY3MmY3N2UwZmVhZjAyY2NkYWJkMDFlZWQ4YjYzMjM2ZGUgcDN5aworNTM0MjIgZGJmZDg2YzNjNzkxM2FhMWNkMjQyN2ZhZjE5NDZhZWJmNTExNmE4ZSBwM3lrCis1MzQyMyA5MGMzODI3MTY4NmIxMjEzMTQ0MzViMzg5ZmMyYjE3ZWM4OThiMzVmIGxlZ2FjeS10cnVuaworNTM0MjQgYTAwNGMzYjAxOWNhMTUzMjI1MGM1MmM1YWZhY2ViOTAwYWU0NDk4ZiBwM3lrCis1MzQyNSAzZDc5YmM2ZWQ2ZWNlNzIyODlhMTZiYzhmYTM4MWFjMDk5NGUwMmM2IGxlZ2FjeS10cnVuaworNTM0MzMgOThkNWY5MGNiOTA1YWZlYmNmY2ZkMWNkMzdiYzFlMjczODFmZTEzZSBwM3lrCis1MzQzNCA2ZWZlM2E0YjEwYWM5OGFkMmUyNTc4OTI4MjJmYTk1NDEyMjlmY2YwIGxlZ2FjeS10cnVuaworNTM0MzggZGI4YzE3NWQxMjgzZDdmYjc2NjIwMzAwMmFkNjBmMTcwOTY0NDA3YSBwM3lrCis1MzQzOSA4ZTJjYTU0NDQ5MDAxZWNiMjNhZTVhYTUxODc3NGUxMGVmZmU3MWZkIHAzeWsKKzUzNDQwIGNmOTgzNDViOWQ2YjAyMGFmMDBlNjc3NzBiMGYzYTcxMjNiZGU2OWQgbGVnYWN5LXRydW5rCis1MzQ0MSBmMzc2OTZlNjQ2ZmFjNWQ1MzU2M2QzOTg3OThmNGQ4MDIwZTMzM2EzIGxlZ2FjeS10cnVuaworNTM0NDIgY2M1YzA3MWM4NDIzMTFlODNmNmNlYTA4ODNmNDQ5Yjg4NzdmNWVmNSBsZWdhY3ktdHJ1bmsKKzUzNDQzIDg2Y2UxZGY2YTg4ZTcwYzFhMzkwYTMzYTA4ZGI3ZGU0Mjg4YzA2MjYgcDN5aworNTM0NDQgODJiOWI1YjEyMjU2ZTQ1ZTBjYTQ5MWQyNGJkNmVjNWRhOWM5M2UxZCBwM3lrCis1MzQ0NSA2ZjViMzM5NDcyNzRlOGI0ZDNmYzUxZWM5NDUzYTJlMjFmMjY0N2U0IHAzeWsKKzUzNDQ2IDM0MjUzMmY0NTM2ZTYxODQ4OWFjNTI4MDA5M2YzOTczYjU1NjJkMmIgcDN5aworNTM0NDggZDAyZDI5YzUyMzJhMWNhYmNiMjcwMDM0N2Q4NGRhOTg2NTFkMWU4YSBwM3lrCis1MzQ1MSA0N2Y5ZWZkYzA4NTVhOGQxNzYxYTBhNDI0NzkzNTc2MmY0MmMzNWMzIHAzeWsKKzUzNDUyIDFjMjY1MDVjMWRlNmViNTBlYTg2NGE5NzcwMjhiZGY2OTU3OGE5N2MgcDN5aworNTM0NTMgM2Y3ODI3NGYyYTM0OTQzNWI3NDUyZTJkMjQyZmI2MGE1NDczNjY4MiBwM3lrCis1MzQ1NCA0YTRiYzVjNzZlNDU5MGJkYzhlNWU3YWRhMmJjMzRmNGVjYzA2NGNiIGxlZ2FjeS10cnVuaworNTM0NTggOWJlNjJjNDVmM2E4Nzk0MGYxYjBjZGUzYjNiNzZkY2RkZDhhOTM2NSBsZWdhY3ktdHJ1bmsKKzUzNDU5IGU1YjY0MWU3MDBmMjM1NDVhMzk0YzBhODM4MGZjMDE3NTIwMGNmYTggbGVnYWN5LXRydW5rCis1MzQ2MCBhNGNkYjljOGFmMjViZDY3YTM5YjE0OTJjMzhjMWMzYzFiMjVhZWY2IGxlZ2FjeS10cnVuaworNTM0NjIgMzc5YWY0MThmYzM2NzUyZGU5NWY0YWEyYmI3YmRkNTk1OGJlODExMSBiY2Fubm9uLW9iamNhcAorNTM0NjQgNDhkMzhkNzc3MDI0OTYyOWViNTE1M2IzOTA2MGYxNTE1ZDI5NWYyNSBsZWdhY3ktdHJ1bmsKKzUzNDY1IDAzYTVmMmIwNjgyNTNmYWUwNTM0NGE0YmQyYmM0YTM2ZGJkZTVjYTEgbGVnYWN5LXRydW5rCis1MzQ2NiA2Njc4MmU1Yjk5MmY1N2Y0YjcyMWIxYzk1NjRhOTljNTQ0OGVmYTE3IGxlZ2FjeS10cnVuaworNTM0NjcgNGE5N2YzYmZiNTVjZTFlNWJkY2NkOTNjZjU5ZjcwN2Y1YTkwNjgxOSByZWxlYXNlMjUtbWFpbnQKKzUzNDcxIGI3MzM4ZjNiMWIwMjI0NWVhNGNmYzg2OTBkYzM0NjFlMDU4OGIzZjUgcmVsZWFzZTI1LW1haW50Cis1MzQ3MiAwOTFkZjQzNjAzOGQ3NDVlYTlkNjI3Zjg4MjAyYjMwODQwZjRkNWNiIGxlZ2FjeS10cnVuaworNTM0NzMgMTkxZWFhZTVhMjlkMmVjM2Y0YTVmNjMyOWVmYjY2YzdkMTFmZTU1MiByZWxlYXNlMjUtbWFpbnQKKzUzNDc0IDRkODU3ZGE3ZTZjNGY0MTMyODc1NDNmOTY2ZTk1ZjNhM2RiOTExMDQgcmVsZWFzZTI1LW1haW50Cis1MzQ3NSA3NzMyOWIxMjdkNDM3NGU0MTY4NjE4ZjJkNGYwYjI2ZmVmZTBmNzMyIGxlZ2FjeS10cnVuaworNTM0NzYgOTRjYTA2ZDk1OTMwNmY4MmM1ZWIxMzM4MWM0ZTMwZTZjMmJjYjQ3YiByZWxlYXNlMjUtbWFpbnQKKzUzNDc3IDkwMTYwNDkwYzZkNDA1MmQzYjQ3NTE5ZDczMzUzN2VjNTliMjExODQgbGVnYWN5LXRydW5rCis1MzQ3OCAyMjNmZjM1ZGNmZmMxYjA2YWQ0MGJmMDc0NTQ1NjQxZGU5MjYyMzZhIHJlbGVhc2UyNS1tYWludAorNTM0NzkgZWU4N2VlZjk1N2YzNTkxMzYzMjc3MDM0MDdlM2ExMzlkMTQzMDBlNSBiY2Fubm9uLW9iamNhcAorNTM0ODEgY2E2MDdkNzQ4ZjY0ZTY2MDRjOGE1YWUwNjAyYmZiYTQ1ZWNkYzlmNiBsZWdhY3ktdHJ1bmsKKzUzNDgyIDliZGYzNGIzZjcyZWIwZmVlM2MyYjE5YjM5ZjJkODg5ZDVkMzY3ZmIgbGVnYWN5LXRydW5rCis1MzQ4MyAzZjFkZmFmMjkzZmExZGEwZWY5Yjk0OTA3OWY2ODhmZjlmMDU1MDRhIGxlZ2FjeS10cnVuaworNTM0ODQgMGJjNDJjMTU2ZTlmNWVmZWU3ODljOTUyYTRkMGU4ODZmNmU0NGVhMCByZWxlYXNlMjUtbWFpbnQKKzUzNDg3IDlmZTkyZjE4YmI2YTQyYTc0NjkzZDZhZTk4MDgzYzYxYTdiZDQ4ZTAgcmVsZWFzZTI1LW1haW50Cis1MzQ4OCBiOGFjZWM0YTRjODljYTZiZDNhZjg1OWI3ZjY3YjQyNDE3YzllYjRiIGxlZ2FjeS10cnVuaworNTM0ODkgYjA1MWQxOTdmN2E0OTM3ZmNjZWZjNjdhYWViODBjMjE2YTQ1NTI3NSBsZWdhY3ktdHJ1bmsKKzUzNDkwIDA1YTg5ODZkOTUyNjczN2M5MjQyMzJjNTdkYzUzMmNiODA3NGFjZjcgcmVsZWFzZTI1LW1haW50Cis1MzQ5NiA2ODBkMTdhNmIxNWYwYTA0MjRhMDNkNjA0ZDBkNDUyMzFlZTE2ZDIyIHJlbGVhc2UyNS1tYWludAorNTM0OTcgMzliM2E1YTNjNjQ1Yjg5YjgwZjVmM2I1YzBkNGEzNGQxYWU0ZDRkYiBsZWdhY3ktdHJ1bmsKKzUzNDk4IDYwZDMxYTEyYjE1MGQ1MDljZmQ3MGJmMTk4ZDA2YmNhZjY1ZmViYTggcmVsZWFzZTI1LW1haW50Cis1MzQ5OSAyZjgwYWY2NzQwNzRhZmMyNTI2YWUwMDFhYWQ4YzRiNWU2Mzg0YmJiIGxlZ2FjeS10cnVuaworNTM1MDEgNWJmNGYwNTkwM2IyMGM2MGY3OGViYzQ1MDY2MGQyNzQ2Y2E3YWVhMCByZWxlYXNlMjUtbWFpbnQKKzUzNTAyIDU5Y2Y4OWU1ZjIzN2VkYWE1MTYwODQzMTMxMzIxZjhmODRhYzhjNDIgcmVsZWFzZTI1LW1haW50Cis1MzUwMyA3YjM4Zjk5NTVjNjQ2NTk0MDE0Nzc1NzFiNzFhZjliOTkzYzU4ZmFmIGxlZ2FjeS10cnVuaworNTM1MDQgMTBiZmZkMTliNTM1YTQ0OGU0ODJlMjllZmZlYWZjODU5ZDJiM2YxMiBsZWdhY3ktdHJ1bmsKKzUzNTA1IDNhZTRmOTMwYmYyN2I0Y2RjMGM3N2ZlMTZiZGY1MDQxNmE4Nzk2NTIgbGVnYWN5LXRydW5rCis1MzUwNiBhYzRjMmY1YzNmYzBlOTkzNDMzNjQ2OGIzYzkwOTkyNzlmOTg5YzkyIGxlZ2FjeS10cnVuaworNTM1MDcgNWY4YTU0YzgwNGZmNmYwZGQzMmIyYzI1ODE5MmRhOTNhOWE2ZWQ2NCBsZWdhY3ktdHJ1bmsKKzUzNTA4IDBiZmZjYTY0Y2NjNGJhMDRlNDEzMDg4ZDA3NDBlYzgyZjQ4NDgxMTkgbGVnYWN5LXRydW5rCis1MzUwOSA3N2UwZjQ3MThhN2NhNjE3Nzg3ZTcwZmIzYThmNmZiZGU3YmEwNWM2IGxlZ2FjeS10cnVuaworNTM1MTAgYzg2ZGYzMTFlNjJjZWNlMjEwMDZiZTZiYzM2MjA5ZmFlZjJiNGI4YyByZWxlYXNlMjUtbWFpbnQKKzUzNTExIDJmYTZlODJiMWYxN2I3YWVmODc2MTM3OTcyYTczYjdjMmZmZGU3NzcgbGVnYWN5LXRydW5rCis1MzUxMiA1NzNhNDYxNzYxNzUzOTUyYTBiMDUyYzIxNTA0MjMwNTRkMDc1NDBjIHJlbGVhc2UyNS1tYWludAorNTM1MTMgNjY2ZmFmODkxMmUwNWYzN2ZlM2FiNGQ4MTNkYTI0OTIxNDViY2RhZSByZWxlYXNlMjUtbWFpbnQKKzUzNTE1IDE2NzlhNGFkYTE3MTJiMGQ4ODk5YTU4ZmRhYzlhZDBmY2Y5MDQ3ZGYgcmVsZWFzZTI1LW1haW50Cis1MzUxNiAzYjZhYzRmNGI0MzcyNDBiZGZhMGY4NTM0MGFlY2RjNTZiYmIxODM5IHJlbGVhc2UyNS1tYWludAorNTM1MTcgYjIzNzExYmUyYjNlMDM0MjEzOGY0NzRmZjMxNjY0ODQ4ODcwZmQ0ZiBsZWdhY3ktdHJ1bmsKKzUzNTE4IGJiNGMwYmJiYTI3MmY4ZDc4Zjc1MjZmZDI0YzYyMDgyODE0MDA4YjggbGVnYWN5LXRydW5rCis1MzUxOSBiMTZiNGY5NzZlNzBhZDg3ZjY2Mzk3MmMyY2FmYTQwNzkzZjQ3OGMxIGxlZ2FjeS10cnVuaworNTM1MjAgZWNlMmFmNzY0NjIxZDA1N2U0MjU2NGE0YjQ0ZDM0MWI5NmVjYTU0NSByZWxlYXNlMjUtbWFpbnQKKzUzNTIxIGRlMmJiZGVjZTgzZWRhZmQyYWUxZGE0ODkxOGE0MzI3MzU4NmYyMDUgcmVsZWFzZTI1LW1haW50Cis1MzUyMiBkN2JlMDNlYmY0NjY3MzFjYjdiZTYxYzQ3NGM2NTFlOTUxZmY0NDRmIGxlZ2FjeS10cnVuaworNTM1MjMgOWYyMzkzZTllYWNhYmY0MzgwNjNmZGFmMjhmMmY0ZjE3ODc5ZTgzMiByZWxlYXNlMjUtbWFpbnQKKzUzNTI0IDA4MWNhNjA4MGZmMTQ1MzA0ZTRkMzRmMTE4OTE5OTY0MzUyY2Y1MTUgbGVnYWN5LXRydW5rCis1MzUyNSAyOWI4YjY1YmFlM2ZhYjVlMGY0Yjk3MGJkOTZiZmEzYmUwMzBlMjEwIHJlbGVhc2UyNS1tYWludAorNTM1MjYgN2Y0MDY1ZWZhNDRlZTIzOTY1MTExNTE1ZjRjMzA3MmUyNWUyYTMzYSBsZWdhY3ktdHJ1bmsKKzUzNTI3IDg2YWIyZjIwYTMzMzM4ZGMwYTJmMDEwYWYwYzkyOTMxNGViNjg4M2IgbGVnYWN5LXRydW5rCis1MzUyOCBkMmUyZWRkMDcwODJjNGZiZWRlNDhiMjdiMmZlYjNiZTc2NWUzOGE0IGxlZ2FjeS10cnVuaworNTM1MjkgZGEzMGEyNmRmZWIzOWNiNTAxYjViMGMyODVhZGVkYzVkZGU3YmZhNSByZWxlYXNlMjUtbWFpbnQKKzUzNTMwIDY4NjBiYTg4ZDY3ZWE5ZDMwZjc5ZWU4MWEyOTM4NjNmMTI3MzJjZDggcmVsZWFzZTI0LW1haW50Cis1MzUzMSBkZjI5NGJjNWNlNmU4MjY5ODc2NTIxNjdjMTJmMzg5NTQyYmNmNTdmIGxlZ2FjeS10cnVuaworNTM1MzIgMGU5NWM3NzUxMmY1NGExMGMyOWMwNzM4MGIwMmE3MWYwNTQ2NDkxNiByZWxlYXNlMjUtbWFpbnQKKzUzNTMzIDI5MzMxMWU2M2E3MzJlMjFkYTdlZjY2MzBmZmYyNWQ5ODAwODA0N2YgcmVsZWFzZTI1LW1haW50Cis1MzUzNCAwMzE0NGM0ODY3ODJjMWIxM2UxYmE2MDg3OGI1OWY0OGUwZmYxNjAxIHJlbGVhc2UyNS1tYWludAorNTM1MzUgZGJiZGZjMDM4ZGM5NDdjZDkyNDBiYzI5NzVmODI4MjVlN2YyN2NhZSBsZWdhY3ktdHJ1bmsKKzUzNTM2IDM4ZDk0NGVmZTYwMGM2YzRlZjY5N2VmZTM5NThmNDUzZjkwYjYyNmMgbGVnYWN5LXRydW5rCis1MzU0MyA0ODA3YTZhYmY5MDYyNGM5OGI3OWM1NTNiMTNiYzA1MDJlMzliNmNhIGJjYW5ub24tb2JqY2FwCis1MzU0NSAwZDA5NmIxNDZiNDg2OGIzMjhiNTgwMDNhNzU2ZWMwM2RiMmMxMTVmIGxlZ2FjeS10cnVuaworNTM1NDYgNDE1OGJhN2Y0NmEwMzVhYTQxY2YyMjkxZGJmYjc2ZjRmNzcxMjBlMCByZWxlYXNlMjUtbWFpbnQKKzUzNTU2IGE1YjI2OWNlMDc5ZGVkYzZiMGZmNGM4YjQzMTk0ZTA1ZTA5MDA5OWQgbGVnYWN5LXRydW5rCis1MzU1OCA2NTZkZDAwOTVmNTJlZGMxOGRlZTk1ZDIzZDY5YmFjYjE5YWFiZGMyIHJlbGVhc2UyNS1tYWludAorNTM1NjMgZTQzODE2ZGRjNGYwNWQzMThkNTQwOWU3MmFjYTlkYzczZGM3YTlhOCBsZWdhY3ktdHJ1bmsKKzUzNTY0IDE1ZGVjYTM5ZTBlNmJiYzc5Y2M0ODE2MDYzZGJjZTIyMDBiMjNmMmQgbGVnYWN5LXRydW5rCis1MzU2OSA0ZmE5YzgwZmIxN2FiODZjMTlkNDg4NGEzNTRmYzUyNTkyMzliM2ViIHJlbGVhc2UyNS1tYWludAorNTM1NzAgMTE2M2Y1NWRhZDk1ZjgwY2Y3ZjA1ZWYxOGJiODZkZTU3ZjJlN2M1ZCBsZWdhY3ktdHJ1bmsKKzUzNTcyIDJiYmYxN2MxYzY5Y2I5ZDFiZGNjYTE0ZGMzODQ0NzEwMWQ1MDgxNjkgcmVsZWFzZTI1LW1haW50Cis1MzU3MyAxMjg1NTAwMGUxM2JkZWFiNDg4N2M3NDRjM2UxNjU5OTU1Njc1OWFjIGxlZ2FjeS10cnVuaworNTM1NzUgMjM0M2M2OGNhMWM4N2EzYWZmNTAyM2FiMjdkODFiMGU4Y2FiNTUwNyBsZWdhY3ktdHJ1bmsKKzUzNTc2IDE3NTFjYTNmZWZmZTk2YjQ0OGY2ZTM2MmI0ZDE2MmNjOWZiN2YyOTUgcmVsZWFzZTI1LW1haW50Cis1MzU3OCBjOWQ3Yjg2ZjkzNzdjYjE4YmJmMTM2ZmNhYmY5Y2FjZWFlZTEwYWUzIGxlZ2FjeS10cnVuaworNTM1NzkgMjQzMWY4MmE2YTE3NTZmYTc0YWQyMmNlM2I3MjAxN2RhNGZhMWZmYiBsZWdhY3ktdHJ1bmsKKzUzNTgwIGFkOTM2ZTBiNmZjZmQxYmIyZGJmOWE3YTM5OTBmMWNhMzc5ODM3MjIgcmVsZWFzZTI1LW1haW50Cis1MzU5MCAxNzgyYjYyMmFhYzcxYjliMGUzYWFkOTEzYThmNjVjOTFkZTA2ZDk5IGxlZ2FjeS10cnVuaworNTM1OTEgMmQ4MjM5YWJmYTYwZmFlM2MxYmU3NWViYzBkYmM0NGM4ZTJkNWI4YyBsZWdhY3ktdHJ1bmsKKzUzNTk0IDVmYzgxOWM2YzEzZTJlZjllN2JkNWQ2ZTcwNjBkZjZjYmYwZmE1YjggbGVnYWN5LXRydW5rCis1MzU5NiBkNjBhZDkxNGQ4MzNlZTk2Y2RiZWIzNGNkNWFjYzZiNGFjZDEwYzYyIGxlZ2FjeS10cnVuaworNTM1OTcgYWI5Yzg2NTE5NjI4MWFmYTJhNzU3N2NmNjY0OWU3NTc3OGU3YzIwNiBsZWdhY3ktdHJ1bmsKKzUzNTk4IGZmYjk1ODBmOTY3YmFhNmM5NjIyODVkNWQ4MzY2ZWY4MTVlMGE3OTQgcDN5aworNTM1OTkgZDViYWJiMzI2YTUwZDEwM2IwMTU0YmVjNGQ2YzBiMjUxMDgzMDhmZiBwM3lrCis1MzYwMCBhMjY0NDIyMjgwNTg1NWM4MTdkZjFkNTM2YzI0ODI3ZmYyYzQxNjljIHAzeWsKKzUzNjAxIDVkYWUwZDdmNjgzYWIzNzk2OTJmZDRjYjQ1YTkxOTFkZDkyY2UyMGQgbGVnYWN5LXRydW5rCis1MzYwMyA0YjEwMDFkYTM5OTI4NmE4NjNhYzY1OTk5MjIxNWVhYWJhNWQ5ODE0IGxlZ2FjeS10cnVuaworNTM2MDQgMGFjYTAwMzljYzFiNWVkMTVmMTBhOWRmNDFlMjY1ODQ3ZDAzNzU3OCByZWxlYXNlMjUtbWFpbnQKKzUzNjA1IGJkMzczOWE4NzI1OTVhMDcxNmQ4ZjYxNzc3YzMwZmI2OWZlODRiYTkgbGVnYWN5LXRydW5rCis1MzYwNiAwMzdhYmNhODE3YjYzODNiZGI0OGE3NzYxMzg0NDZhOTI1NWU0MDg2IHJlbGVhc2UyNS1tYWludAorNTM2MDcgYzE0N2M2YmM1NzlmMjgxOGFkMTMxMzJkYTA4NDFlY2QzMGFhZjMxZiBiY2Fubm9uLW9iamNhcAorNTM2MDggNjdlYzRhZmZiZDE0YzBlNGQ4NzE1ZDVhYWYwZGIwNjIwYzQ1M2ZmYyBiY2Fubm9uLW9iamNhcAorNTM2MDkgMGYyMGMzYmM2MjcwNmEyMmZjMWVhMTE5MmQ2ZWFiYjA3YTAyY2ExOSBiY2Fubm9uLW9iamNhcAorNTM2MTAgNmViYWQyYTZiOTkwNzg2YWI2MTIzYmM5NmI2MTY3MzE1MTdhMmJhMiBwM3lrCis1MzYxMyA1ODM4OWRlYTY1MWNkNjkzMWU4YTQxY2EzNzFlZmUxYWFlYTc4Y2U0IGJjYW5ub24tb2JqY2FwCis1MzYxNiA3MmMwYzZhZWMxZWQxODVjNjM2Y2UxM2YwNGE1YTcwNjM1YzIyMDEyIGJjYW5ub24tb2JqY2FwCis1MzYxNyA1M2EzNmRiMmMzODc2NDA5OGJlOGY2MTBhZjYwM2I5NGEwOWQ0ZDhiIHJlbGVhc2UyNS1tYWludAorNTM2MTggMmE4ZTllZmI1ZDIwYzNiYzVkY2M3MTllZTI3MTRlNjg5YjAzZWFjOSBsZWdhY3ktdHJ1bmsKKzUzNjI0IGFkOGNkZmI2OTg3MjEzZWQwY2Q2ZDVkM2RlNDhmNTc1YzIwODAyNTggbGVnYWN5LXRydW5rCis1MzYyNyA4NDgwOTY4ZjRmNGExNGU5MjkxYWI1MDE1NTk5ZDE5MTdmNmFhOTE5IHAzeWsKKzUzNjM0IGYxNzAxYmEyNDUyYjQwZWE4ZGI4OWMyM2IyYzNhMmM3YzMzM2EzODEgcDN5aworNTM2MzUgY2NhYzYzNmIxNTJjZTY4MmZiNGYyNTI1MjViZTQ1ZGFiZGY4ZDY4MyBsZWdhY3ktdHJ1bmsKKzUzNjQxIDZkOWNhOTBkOGJmNzQ5ZDk1YmQ5ODBhZmQxMTdkZDAyY2E2YmVlNTggbGVnYWN5LXRydW5rCis1MzY0NCAxYWY4ZmVlMzMwMTNjMGU3NjJiMjQwYTU4NDM0ZWU5ZTE3MmJhMzJjIGxlZ2FjeS10cnVuaworNTM2NDYgZDNlODg2MzFmOTJiYjZhMDdiYTcwZTk1ZDllYzIzYTFkMDVjYmIxZiBsZWdhY3ktdHJ1bmsKKzUzNjQ3IDI2NWM1MWJhMzkxMDIzMTQ5YzY5YWQwNWM1MGE1OGM1NjE2ZDZlZTEgcmVsZWFzZTI1LW1haW50Cis1MzY0OCAwOWRjYWNjOGEwYmMyYTFlMzBmZDg0N2EwMzY3ZDdjYWQ1ODU0NjY5IGxlZ2FjeS10cnVuaworNTM2NDkgMDUyOGQ2Zjk0ZWI2ZWU2M2Y4ZTQ4YzBkMWFmMjcwN2IzOTg3MmYxMCBsZWdhY3ktdHJ1bmsKKzUzNjUwIDZjNDFiMDEyMjc0N2FmNTlkNTFmZTc5NGFiMGE1OGQ3ZTFiOWQyNGQgbGVnYWN5LXRydW5rCis1MzY1MSBkNTk0ZWM4NThmZTk3NGRjNWQ5MmMxNzAxMzZiMGYyMzY5NGQ2ZjQ5IHAzeWsKKzUzNjUyIGY4M2Q2YWEzOTBmMTA2YjkyZmI4ZmYyZGZlMmRhNGViODg1OGQ4ZGYgcDN5aworNTM2NTMgYzc3OTMzNDVhMGM1NDRjMjQ4MjdjYTVjYmEzNjdkOTJkZWI2YWZlZSBsZWdhY3ktdHJ1bmsKKzUzNjU0IDQ5OWJmMzA0MGFmN2JmNDUzYmZkMzFkZTIzZTU5YjNiZDVhYTFiNDIgbGVnYWN5LXRydW5rCis1MzY1NSA1NmRiZGI3YjQwNGEzOWJlN2E1YzI4MzNhNjgyOWQzZGQzOTRlZDBkIHJlbGVhc2UyNS1tYWludAorNTM2NTYgMDc4NzU1NDk4Y2ZlMzU1MGJiNjAxMmRlYzBiNTZhMzVhMjc3OTZmMyBsZWdhY3ktdHJ1bmsKKzUzNjU3IGQ1MDk5NDY5M2M5MjU2ZmQxZTFiY2JkNzBlZWNlYWM4OTUxZmU0ODMgcmVsZWFzZTI1LW1haW50Cis1MzY1OCA0ODdlZjBmOTAzZTAxNTg0MTdjNzg1Yjk0ZDFjMDM5OGRjYTY4YzhjIGxlZ2FjeS10cnVuaworNTM2NTkgOGViMDNiMTE4MTY0MGYxOWU1NDk5YjIyYzJkM2UyNGZiZTIzZTRkZiByZWxlYXNlMjUtbWFpbnQKKzUzNjYwIDI5MDBjNzU2NDA1NWQ2MmMyZGY4MGE2N2IyN2Y3NDg1ZjYyNjZlZjcgbGVnYWN5LXRydW5rCis1MzY2MSAzMDIyNzc4ZWUwY2M2ZDM2ZmI1NDg2NzE3Mzg3ZGIzZDBiMTNmNDI1IHJlbGVhc2UyNS1tYWludAorNTM2NjIgZmZhYWFlMDJjNjYyOWNjNTU2ODhlZDhlMzZlZTAxNTE1OTQwN2ZkZCBsZWdhY3ktdHJ1bmsKKzUzNjYzIGEyZDdmNGMyOWU1YjA4OTEzZGZlN2ZjOTk0Mzk4YmZlZDU4ZWU0OTQgcmVsZWFzZTI1LW1haW50Cis1MzY2NCBjOTk0YzI0NWQ5YWI1Y2Y5NjU3MDU0ODQ0Y2MxMDM4NzA3ZDdlMTVkIGxlZ2FjeS10cnVuaworNTM2NjUgZDhmYjBmNmFhYWQ0M2NiMmY4MjAzODhiMjAzY2I5YjFkYWNlYzE3YiByZWxlYXNlMjUtbWFpbnQKKzUzNjY2IDFhZDA1Njg3MzdmNjEwMTMyNGE1NDc1MmZkYTE3MmI5ZWQ3NTZkYmMgbGVnYWN5LXRydW5rCis1MzY2NyA0N2JiMjgwM2ViMWJlMzY5ZGYzOGI5Y2Y2ODFjNDI3YWVlMTFhOTBjIHJlbGVhc2UyNS1tYWludAorNTM2NjggMWY3MWEzMmY5OGQyM2JjMDMwNDFhZDZlYTc2NjBmYTg3OTAxOTE4ZSBsZWdhY3ktdHJ1bmsKKzUzNjY5IGEwNGM3ODE1NDZlZDJhOTdiM2Y1YjZiYmM4NTNkMGMzYjEwMGQ4NGQgcmVsZWFzZTI1LW1haW50Cis1MzY3MCA5ZjVlYWVhM2M3OTU0MDliYzMzNThmYWZiNGY5ZWRjNmE5MTEwOTFjIGxlZ2FjeS10cnVuaworNTM2NzEgZTc3NmM4M2EwYzE5ZTI3M2U3MjA4ZjFjZmQyYTk2MWIwYTQ0ZmI5MCBsZWdhY3ktdHJ1bmsKKzUzNjcyIDcxNTZjZmRjMzY2N2UzYmZkMDUyZDQxOGJkYTM2ZjkyYjU5OTFjN2IgcmVsZWFzZTI1LW1haW50Cis1MzY3OSBmN2U5MDcxYzNhMWYwMGVkNzEyNGYxZGUwZGUwYTI4ZTFkZTZjOGY3IGxlZ2FjeS10cnVuaworNTM2ODUgNzkzZTAzMjNkNGQ2NWJmYzg5YjQwZDc4MTYyY2Q3NzFjNTc1YTE4ZSBwM3lrCis1MzY4NiA0Y2RmMjFhMGRiYmNlODkxZTc1YTkyMGQ0ZmFmNGMwZWNiZGQ4MzMyIHAzeWsKKzUzNjg4IDFkNTQzYTMyMDM0NjEwNzMwNWM0OTEzZDgyN2QxNDlmMjBhNDM0ODcgcDN5aworNTM2ODkgZjZmMzkxZDFkMDUwZmUzNmQwMDI4ZmVjMmRjZTEyMmJmMzBjNDRlOSBsZWdhY3ktdHJ1bmsKKzUzNjkwIDgzZWZmZjRkNWFlOTQyNThlYzY5MmNlYmZiMTgyYmZjZWVmNzBjNWIgcmVsZWFzZTI1LW1haW50Cis1MzY5MSA0ZDkxNTY0NjQ2NzM2ZGY3MTA3ODE4YTI5OWFkY2FiNTZjNDM5ODNkIGxlZ2FjeS10cnVuaworNTM2OTIgYjcwNDJiZGY5MGE5YmFlNDE0ZjQxNDE1OGE2MTM3ODFkZTY4ZGZmNSByZWxlYXNlMjUtbWFpbnQKKzUzNjkzIDk4NDA0MWU3NDQ2ZDMxYzZhM2JhMDRiNWM1OWEwMDhjNmVhYWQ1NzMgbGVnYWN5LXRydW5rCis1MzY5NCBkMmZlODkzYTQ4NDM3MjU3MDU5NzAzZDA2MThlNjhiNmZhMzM3ZmVlIHJlbGVhc2UyNS1tYWludAorNTM2OTcgMjY2YzFiMGY5ZTE2YzY4ODY2NDZhYjI5MzdlMDQ0MGI2NmU2YzQxNiBsZWdhY3ktdHJ1bmsKKzUzNjk4IGJlMjk1ODc4MjU2YWFiY2YzZWUwNjNkYzBlZGI2YmU1M2RhMjk1NzcgcmVsZWFzZTI1LW1haW50Cis1MzcwMSAyMjc2MGQ1M2Q0ZGE1ZDI4NzdmODE0ZmExOWRkNjFiZjcwMDZhYmE2IHAzeWsKKzUzNzAyIDBjZTE0YzRjYTEzMzdkMTA2ODNhNDY5YTc3YWM0M2FjODhiZTRiZGEgcDN5aworNTM3MDMgNjkxN2M2NzZjOTJmYmI0OWNkMWIxMjUyMmQ5M2E3M2EzOGZkNGU5YSBwM3lrCis1MzcwNCBlOWE2MjM0YjI2YWZkMWUwMjUzOTYzMjU1MjNhY2JhM2QxYTNmYWYxIHAzeWsKKzUzNzA1IGU4YjI5MTNmOTI5N2Y0N2Y5NDJjMTVkM2E5M2YxZGIwMDY0MTIyOWEgcDN5aworNTM3MDYgOGQ5YTBlYzRkOTc2MDA3NzYzOThlOTk2ZGRkMmQyOGQwZTA5MTZiZCBwM3lrCis1MzcwNyA5ZmQ5NjQwODhlMDcwNWY1MmU4NTA1N2VhMDJlZWIxNzUzOTY3ZDg2IHAzeWsKKzUzNzA4IDgxZTQwMzRhZDg4Mzc2MTIwMjZmZjFlZGRmODFlZTM1NWYxOWU0NjIgcDN5aworNTM3MDkgYzE1Y2ZmMmRkMThmNWNlZDk1OWI0NWYxMTdkM2IxNDA5MjMxMzA4YSBwM3lrCis1MzcxMCBiN2Y4OWRiOWExZDA1YWE4NjQ1YTU3OGJiNjhhN2E0M2NhY2VlODZjIHAzeWsKKzUzNzExIDQzZTM2OWNjMDJjNTVmNDczZjZkNGE3NTZmNWZmYzhkNDE4OTM3MmUgcDN5aworNTM3MTIgYzRiZTQ5M2RjYjZmOTRiNTZiYjZjNWNkYmZkNzEzMjZlMTc2NTc4NSBwM3lrCis1MzcxMyBmZmRjOGQzOThlNDkxMWI3YzQxYzhlY2NjNzcyYTdmOWQ1ZTZiY2NlIHAzeWsKKzUzNzE0IDcyMjc3ZTE5NjdiMmI2ZGZjZTIyNDNjZDdlZTkxMmY0YmUxMWI3ZDMgcDN5aworNTM3MTUgMDRmNWNiYzc0NDI0MWRiZDQ2NGU0OTNlZWIwYTg1ZWRhYTBlOTNjYSBwM3lrCis1MzcxNiA2NzUyNWVmYzk5YzU3ZjdhOTc0YjhlMzQwZjgyNTFhNThkZmJmMzMzIHAzeWsKKzUzNzE3IGFlOGVlOWU1ZTgxNTAzOGZjZjYwOGMwNDlkOTQwNTE5ZjkzMGZlZjQgcDN5aworNTM3MTggNTYyMmExM2FkOGFiMTFkNzAxM2UxMTZiYWEzZTZmZjIxNWIyYTFmNSBwM3lrCis1MzcxOSBlMjgwMGU4ZGQ5YzQ4NGM0YTk4OTVmY2JhNjk1OGFkMmY3YmI4ZDRiIHAzeWsKKzUzNzIxIDQzNWVkNjQxYTMzM2Y4MzM5NjMzYWU3MTExMTI5ZmJlMWYzZjgyY2IgcDN5aworNTM3MjMgZWFlZGY4NGVhYmNkZjY4MzhkZGQ4NDlhYTQxNmM3Yjg3YmY3Mjk5ZiBwM3lrCis1MzcyNCA3ZGEyYWUxYTRmNzA5ZDBmMTRkM2E5ZTU4YWQ2ZmQ4YjJlNzFhOWVhIHAzeWsKKzUzNzI3IGYyMjk2NDVkNjA3ZGRlM2U5MGYxMzNkMzQ4ZTAyMDlkNmNkOTk4MTggcDN5aworNTM3MzEgMzUzYzAwOWY2YzUzODUyNTQwZmFjYmEwZDMxYzY1M2VjYTc2ZGM5OCBsZWdhY3ktdHJ1bmsKKzUzNzMyIGYzNDBjYjA0NWJmOTJkMGU3NzcyMzg1YTcxOTdlOWIwYWYzN2YwYTggcDN5aworNTM3MzQgNGEwMWY2ZTAyMDE2ODg2NDFkZjVhZjk2OTRkMjk4MTA0NmVkYzVjMSBwM3lrCis1MzczNSA1ZGJjZTJlYTEzM2MzYzAxZTc2YjBjNmQzYTQ5NDE2OTVhYmJhOTFiIGxlZ2FjeS10cnVuaworNTM3MzYgOTA1MzZiZTA5M2Y3ZGE1ZjlkZTY2MzhiMWQ2NTExZGIwM2I3N2NjYiByZWxlYXNlMjQtbWFpbnQKKzUzNzM3IGZjZjY5MDJmMjEwZWQzYjA2Yjk1YmM1MjA0NTFlNzQ5YmViY2ZmZDggcmVsZWFzZTI1LW1haW50Cis1MzczOCBjYjgxMjNhYjJhMDY1ZDhhMDkwZDE0MjNjZmFhMTIxM2NjY2UzZTQyIHAzeWsKKzUzNzM5IDVkZTc1NDdhNWEyMzcxMTExMzg2NjEyYTlhOWEyZmE2MjNjMDY0ZWQgcDN5aworNTM3NDAgM2QxOGQ4ZjM2NmIxMTg0ZDYxOWJhNzQ5NTBhM2Q3MTU4ZDY0ZDI1OSBwM3lrCis1Mzc0MSAyOWQ2NTc0MWY2Yzg5NmYyZTFjMTkzZTAyMGNmN2RkYjQxMjcyOWIxIGxlZ2FjeS10cnVuaworNTM3NDIgYTg0NDYwZTUzMTYwOTNkMDAzMGZlYjhjNzYwYWMxYzNhOTg4NTcyNCBwM3lrCis1Mzc0MyA1ZWY3MGM0OWQ4NWEyNDMzNWI0M2FmNDNjM2YwOWI2ZGY2MzE5MmEzIHAzeWsKKzUzNzQ2IGU2Njg1Yzg0MGVlM2MxMWE5MWUwYTMzNzIxYTU3YjE3Y2Y1MWY4MzcgcDN5aworNTM3NDcgNDI5YTRiYzMxYzhlMzY3MGU3MDAwZmE1NDA5YzdlMmI4MGY1NDc1MCBwM3lrCis1Mzc0OCBkY2E5YmM4ODMwNDA5NjU4ZmI3NzJhNmQwYjMwNTNjNmRkNDM0NWQ1IHAzeWsKKzUzNzQ5IDUwMzMwZDE4ZDFjZDcxNDFiYWZjMmM4YTk5ODBhOGI4Y2E4ODNkNzYgcDN5aworNTM3NTEgMTgwZDRlODk5NjgzOTA2OWZjYTg4MTljZjlmM2NjYzVlYTJlYTNlMSBsZWdhY3ktdHJ1bmsKKzUzNzUyIGVjMWViZGY1NGVhZmQ5YWJiMTQyNDE4ZGM2NWNiYTRhNjJkZDMwMGEgbGVnYWN5LXRydW5rCis1Mzc1MyBiYmU2ZGUzYTk3NDUwMDZmNDEyNWFhYzMyNzJjZWJjNDMzZjNlM2VjIHJlbGVhc2UyNS1tYWludAorNTM3NTQgNzI0ZTBiNjNhNzliNWQ0YjBjYjE2N2FiOGY5NjBlYzUxZTZiMzkyOCBsZWdhY3ktdHJ1bmsKKzUzNzU1IDdhZDI5ZTk5ZWVjODU3MjYyMGZjZjA5ODcwM2FhNTVkNjA0Yjk3NjUgcmVsZWFzZTI1LW1haW50Cis1Mzc1NyAzMmQ0NmFiYWE4YWJhNGM1ZTdhOWNhODI5NTI1MjNjZGNkODFkOTY4IGxlZ2FjeS10cnVuaworNTM3NTkgOWQyNTNjZDM4YjViNjVhM2Q2YzY0YzQ4ZjhjYWYzNDVlNTVlNDI2YiBwM3lrCis1Mzc2MCAyOGM0ZDliNzc0MGVkMDEwMzg1NzNlZmFjNzAxZmU3MDE3OGNiMDQ1IGJjYW5ub24tc2FuZGJveGluZworNTM3NjEgMzVjMGQzOGFjZGNlMDgwMmYzYmJkMDQ3ZDZjMDAzZWNjMDBjMTQ4OSBiY2Fubm9uLW9iamNhcAorNTM3NjIgZDRhNmE2N2EwMGEwYmEzNWJjMjFiOWFjMzIwM2U5YjA4NTgwYjBiNCBwZXAzMDJfcGhhc2UyCis1Mzc2MyA4MWQ2OGRkODRhYTA1Y2Y4ZDU4ZGY1NWFmMTc0NmQ4MWE5OTlmYjE0IGxlZ2FjeS10cnVuaworNTM3NjQgMWRiYTYxYzA3NzAzNGUxNjg3YTFmZjYxNWFjMmRiN2JhZjA4NzJlYSByZWxlYXNlMjUtbWFpbnQKKzUzNzY1IGRhZjA2MzUyN2I5NzIxNGM5NWUyNzMyN2RkZDk5MmVjMDdlNGQwMmUgbGVnYWN5LXRydW5rCis1Mzc2NiBkOTQ5OTMzY2Q2YjQ2YzcyY2Y3YzQwMjkxNDEyZDJjNmViN2FmNjE5IGxlZ2FjeS10cnVuaworNTM3NjcgYmQyNGQzODI2Y2M4M2RmMGM5YjU4Y2RkZjFjN2UyYzRjNzMyNjJmNCBsZWdhY3ktdHJ1bmsKKzUzNzY4IDE3N2E3YmVlNjRlOWViMmQzNzcyY2VmZjgxZDE5YzJjOWE5YWVkYTQgcmVsZWFzZTI1LW1haW50Cis1Mzc2OSAzYmJlYzkxYzViOGZlNjZlYzM0ZjBmOGYxYWIwODg0YTE0YTg5MzBlIGxlZ2FjeS10cnVuaworNTM3NzAgODg1YTc3ZmQ1YzAxYzdkYmY4M2EyOWQ1ZGNiZTk5ZjU5NmEwOTA3MSByZWxlYXNlMjUtbWFpbnQKKzUzNzcxIDM5ODNlZTBmNmY5NjRkYmIyMjhmNWUxYjE1MmRiYWRlOThhYzU1OWQgbGVnYWN5LXRydW5rCis1Mzc3MiBkNDc2OGJmZjY0M2VhODEzZjY2ZWI2ZDc5NzIxNWQyYjUyYTVhMmU4IGxlZ2FjeS10cnVuaworNTM3NzMgYWJmZDk1MTg1YWI5OTE5MzY5NDFkYWRjNDBkYWRmNWFkMjFmNmJiNCBwM3lrCis1Mzc3NCA5MGUyMmZlYTgzNjM0NDU2N2RjNTVkZThhOWE4YTBkYWI3Y2U4M2M5IGxlZ2FjeS10cnVuaworNTM3NzUgZGM1Njc4OWIyOWU5YTYzYjRmNTcwNGYwZDgxNDUxMDM5NzFmMTg5YyBsZWdhY3ktdHJ1bmsKKzUzNzc2IGE2NTQ2YzI3MzY5YTZjNGYxMzBlNmRmMTBlYzY3YTE1YmJmZGYyMzMgbGVnYWN5LXRydW5rCis1Mzc3NyAwOTcyYzIxNzZhZjliOWE5MGY4ZmNiMGZjNGVhNWRiNDFiMmFkYWM1IHJlbGVhc2UyNS1tYWludAorNTM3NzggYTYyMTg0YjAzZjBmMTUwMmQwYWI4ZTdkZWY5MmM5YjY2NmJmYTY4MiBsZWdhY3ktdHJ1bmsKKzUzNzc5IDczNDgxZTA3Nzc1OGE5NDE5M2ZiMDExZmU5NjZhYzU5NzhlZWRjOTEgcDN5aworNTM3ODAgNTAyZGUwNzlhYjNhMjA1MjAzMzUxYTBmZjUwMmI4ZDg0MDk2OTYwMiBwM3lrCis1Mzc4MSAxZDUzZWEwZmMyM2YxNWY1ZDJjNjA1NzZlOTZjMzA1YmMwZmE3MjY3IHAzeWsKKzUzNzgyIDQ4YjZkMDE1MzQwYWU2OTc4OGI1OTY5MzRmMDQzZjNmMWY1NzIyMjcgbGVnYWN5LXRydW5rCis1Mzc4MyA3ZTRiNjM1ZjFkMzFkYmEwZDdlYWUxZTEzYWIzZTgwY2M0ZmEzYTI5IGxlZ2FjeS10cnVuaworNTM3ODQgOTliMGUwNGIyZWIxY2EwMTFmOGZhODNiMzJlYzQ3ODEzZDVjMzZiNSByZWxlYXNlMjUtbWFpbnQKKzUzNzg1IDJhMjUzMjg4M2Q4MGZiMzcyZGIyZTNlZWE4ZTI3Y2VlOTZkNzc3ZDYgbGVnYWN5LXRydW5rCis1Mzc4NiA5MTRkZDUwNTlmMzhmMzIyNTU3YTgyNDQzY2UyOGY2MWY1Y2YwMmEzIHJlbGVhc2UyNS1tYWludAorNTM3ODcgNDc0OTc3Y2Q0ZDljODQ0MTQyOGE5MTQzZDM3ZWFhYTM3MTYzMDc1YiBsZWdhY3ktdHJ1bmsKKzUzNzg4IDI5ZmI4ZGJkMTBiODVmNGIyOWY3OTg5ZDA0NWQ5NjMyN2QzYjc5YWYgcmVsZWFzZTI1LW1haW50Cis1MzgwMCBiYzJiZDBmMDFkOTViNTQzNDk2ZmZhMTZjNWJiZjZhNDI1NGE1OGUzIGxlZ2FjeS10cnVuaworNTM4MDEgYjRiMzI3ODQwZmIxNTEwZTk3YzU0MDk0MDYxNDY2MTRmNTc1M2JmMCBsZWdhY3ktdHJ1bmsKKzUzODA5IGY0ZjY5NWE3NTY2NGFmM2JiZjJmNzg1ZDA1MzNlM2Q2Y2RjZTVkNGIgbGVnYWN5LXRydW5rCis1MzgxMSBkNzk1YTU1ZTliZTQxZDZkOWQ1MjBkMjczYmY2NTZkZmMwZGIyNjY5IHJlbGVhc2UyNS1tYWludAorNTM4MTIgNzM2ZjNkOTBlNGUyODQ4NmY3MDc1Y2MwMzgzNzQwNjk4ZDJhZDI1MyByZWxlYXNlMjQtbWFpbnQKKzUzODE2IDllMzU2NDVhZjQwZjY4MmVjYzJmOTFmNjllNDBjZDcxZGQ1ODQ0MDcgcmVsZWFzZTI1LW1haW50Cis1MzgxNyAzNWFlMjgyNTdhMjgwNWI0YTcxZTllYjEzYjE3ODBmM2VkMWYwOGUwIHJlbGVhc2UyNS1tYWludAorNTM4MTggYjBmOGU5YjBjYzE5OTI4Y2NmOTczYTU1MjhmZmE0M2I3Nzc3ZmZhYyBsZWdhY3ktdHJ1bmsKKzUzODE5IDgxYjVkZjU3OThjMjdhNWE0YjBjOThlMWNlZjE4ZWNmZmU1ZWI4OTkgcmVsZWFzZTI1LW1haW50Cis1MzgyMCAzNmQ3YjNiNmVlNTk2ZmU4MTg4MTgwZTg5MmU2ZmVkZmYwNmZkNDA1IGxlZ2FjeS10cnVuaworNTM4MjEgZDM4NmI0NjA5OTNiNzNiODZmZmRhY2MwODJjNTI1M2VlYzQ1MDUyYiBsZWdhY3ktdHJ1bmsKKzUzODIyIGRmMDIwNGNhOTczOWYxNTc1ZWYwM2E5Y2JkM2QyMzBhOWU1NmM5NmEgbGVnYWN5LXRydW5rCis1MzgyMyAwY2M0NTBiODk4Mzg5MTZkMTUyM2JiNDdjZTBlNGJmODU1NjFlZjIwIGxlZ2FjeS10cnVuaworNTM4MjQgYzllNDEzYjFkNTQwNmEwYThiZjdiOTQ0NmM0ZjdiZGJjYjRlMzU2YSBsZWdhY3ktdHJ1bmsKKzUzODI1IDU3N2JmMjFiMmM4NmRjZTA1YjAwMzE0NDY5OWFhMThjMjcwMWIyY2MgbGVnYWN5LXRydW5rCis1MzgyNiA1M2ZkMTQ0YTNmMWFiM2NiOWYyNTgzMDJhYjVmOThhNmJlODU0NjdmIGxlZ2FjeS10cnVuaworNTM4MjcgNjcyYjkwNzU3NjQ3MTNkYThkNTYwZTc5OGViYTBhYjAzNzU1OWQ4YiBsZWdhY3ktdHJ1bmsKKzUzODI4IGMzNGJkNjU4OWUxZWViY2QzOTc1MzE3MzY5Y2M3MmQ2ZDljODc0Y2IgcmVsZWFzZTI1LW1haW50Cis1MzgyOSBkNWExNWY4NTNkYjc0ZGU3NmNlOTI2YjViNTM1NWYxMWI1ZWU2OGEyIGxlZ2FjeS10cnVuaworNTM4MzAgMDFkNTRiODhiZjU4NmUzYjhkMGI0YTYzNDllMjJkNjc0NjE1MGI5YiByZWxlYXNlMjUtbWFpbnQKKzUzODM3IDZmYTBkNjgyZTFlNTUwYWEwMWIzZDMzYzFiZDcyMTZkMjUxOTY5MWYgbGVnYWN5LXRydW5rCis1MzgzOCA4MTI4NjE5ZTk4NGRlOThjZDY3MTQwNTRhOGQyYTY0NzZkOTk1N2U2IGxlZ2FjeS10cnVuaworNTM4NDEgNDM3OTczODQxMTVlNTk4ODgxZTYxMTZhMDNkYjA3NzQzNGQ3OWMxZiBwM3lrCis1Mzg0MyA1NWRlYjFkYTRjYjhkZTE2MzUzMTJlNGZkZDFmYzk1MTFlZDc3ODM4IHAzeWsKKzUzODQ0IGU2OGI0OGMzOWQ4YWNiNTNmM2YzMTVmODc5ZjE4YmEzZTM5ODMxYzIgcDN5aworNTM4NDUgNjA4ODNlNjE0Mjk4ZjMxYTZjZTY5ZGY0NDRmODhlYzY3NjI0YTQ1MSBwM3lrCis1Mzg1MiAzZmJjZDZlMmJjYjc3ZGRkOWNkMDgyNDgyNGFjM2FkZDk5M2IzMWE4IHAzeWsKKzUzODUzIDM0MjdhOTczNDVmY2ZlNzQ4Y2Q0Yzg5MWE2Mzk0YmJiZThkZjEyYjIgcDN5aworNTM4NTQgYzE2NGIwYjc1OTcxNjBlZjUyMjQ4ODIyMTNjYmY0NDY5N2U3NTc1ZCBwM3lrCis1Mzg1NSAxMjQ4OWE1ZGZiNGFiMDJlZjYzNzNmYjNkYWU4YTEwZGI1MTVlY2VjIHAzeWsKKzUzODU2IDkwOTc2NWViMzgxYmRmNWI3ODRiY2E4OWNjNTc2OWE0MDY3OTVmOTAgcDN5aworNTM4NTcgMjk5ODcyNDQ5MDVkZmZkNDRiYTNlNWEwN2YzMTJmYzg5NWFjZjhkNyBwM3lrCis1Mzg1OCBjNTBlMjYzMzAxZGFiYjUxZjBhNzZjZmUxNGQ2OTQ3ZDhiMjVkNTE3IHAzeWsKKzUzODU5IDIwZTA4YTg3OTE1YTU1YWE4NTJiZjYyNjM1NjE2NTBlMDM3ZDhmNDggcDN5aworNTM4NjEgZjNhNTlhY2NhNTFmZmU4NzI0MDg3YzY4ZDRkMTUwMDgzMDM4NmFmMiBsZWdhY3ktdHJ1bmsKKzUzODY0IGM5M2Y5MmE3ZDkyMDJlMmE1MjBiODE0NGYwMTI5ZTM1MzI1MjhmMmIgbGVnYWN5LXRydW5rCis1Mzg2NiAzMmM0ODk3YjVkNDZjMDBlZWVjZWYxYmFlYzdkYzIxZDBkMWJiNWMxIHAzeWsKKzUzODY3IDNiYWM0OTI1OGE0YTU4MGY4ZDk5NTA1OTRmNThjZjdmMTk1ZWVlODkgcDN5ay1ub3NsaWNlCis1Mzg3MiAwZWEyNGY0ZjI0NjdhZmM0OTNkMTM0ZjU1OGFhNDcwY2JlODA0N2U4IHAzeWsKKzUzODczIGJkMTQxOWU5NDc3M2YwOGEwYmVkNjExNDI0MGZhM2UyMzliMTljNDcgcDN5aworNTM4NzQgYjA1NzkwZDA2NmI0NzQ0ZTUyZDNjNzJkOTI5YmRmMTg3Y2MxNjBmNCBwM3lrCis1Mzg3NSA1ODNmZTc1M2U3MjEyOTc5MTAxYjRlZTMyZTg1ZTBkM2QxNTMxMTAxIHAzeWsKKzUzODkyIGI1OGE0Mzc0YWMyMWU0NWIxYTA2MmYwZTdmZmMwMGQwMzNkODViOTkgcDN5aworNTM4OTcgNDJlNzljNTkyMTJkMjJkMjUyYTA0Zjg1NWI3Zjc5YjMyYjE0MDM2OSBwM3lrCis1Mzg5OCA5MzA0N2VlNDg2ZGE0YTA5ZjRkZGEyZDNjNmEzZDNkNTIxNTJhNDVhIHAzeWsKKzUzODk5IDJlNGRhYzA1OWNjNTRiM2E0MGUyMzdjZGNhNTk4ZTM4N2E1NzM0MzMgbGVnYWN5LXRydW5rCis1MzkwMCA2NWNkMWYyODBlNjNjMGI2NmUwZTY4N2EwMDU3NjhmOWFhZjhlYmJkIGxlZ2FjeS10cnVuaworNTM5MDEgODgyYjljMTQ4OTVjMGNjZTVlOGUzODAxYzlmM2M5ZmVhYTUwMzRjMSBsZWdhY3ktdHJ1bmsKKzUzOTAyIDE5MWM0OGNhOGJmOWMxMjY4MTk1NDI4Yjg2NzhlYjg2MmYzNTNjOTEgbGVnYWN5LXRydW5rCis1MzkwNiBlODU0MjcxNDk1ZGUxMDQ0Y2FmNmRhYWEwOTU5ZjI1NzMxM2Q3YWI3IHAzeWsKKzUzOTA3IDgzMDg4YWQ4M2E2YjBmMmRhODMyYWNiYWQ1ZDYxZmEyYTg3NDQzMDkgcmVsZWFzZTI1LW1haW50Cis1MzkxMCAwYzQxMGM3ODUzMWNmMzAyMzNhYTgxNzU5NzRjZmUxNmVmZDU5MzM3IGxlZ2FjeS10cnVuaworNTM5MTEgZDAxYmQzN2JmNWNlNTI2MTgwZDBhYTMxY2EzOTJmNzM2OTc4YjQ3ZCBsZWdhY3ktdHJ1bmsKKzUzOTEyIGYyZjBiNDFmMjcwZGFlNGM2OThmMmNhZmE4ZTQ1MzBmMWYzOTg5OWUgcDN5aworNTM5MTMgZWFhZWU3ODVlYjg2ZDc4ZjI0MmNmNDNjZTE4MDRmYTZkNTY4N2IwNyBwM3lrCis1MzkxNCA5N2M3N2IxZTM0YmYyNDMxMjI1NDNlMmU0MWFmODVjMGNlNzIwN2E2IHAzeWsKKzUzOTE1IGE4YzNhYWFiMDBlYTIzMjRhNmYwMTgwNjc4NmQ3MWU3OGUwMjYxNmIgcDN5aworNTM5MTYgMTlhZmIwMzAyYTA2ZWIxZTZhYmM3NTVmMjRmNTNkZTIyYTdjNzRkZSB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTE5IGQ4NDJlMzVmNWEzMTBlNTQ2ZWU1NmEwNWJkMTA1NjFlNWRiY2I3MGQgbGVnYWN5LXRydW5rCis1MzkyMCAwNzBiOWEwYjRjMDQwNDA3ZjM3YmUyOWU0YzM5OTNmYTViMzZhYWE5IHJlbGVhc2UyNS1tYWludAorNTM5MjEgMTNmMzkzMWI5ZmM0NjkyOTQyZTNlY2U2MmRkMGZiOWI2OTA2NzA5NyByZWxlYXNlMjQtbWFpbnQKKzUzOTIyIGY1NzkwZjk2YWNmM2MzOWRkY2M3ZDFmYzE3YWVlYTJjZTc4OTYxZjggcDN5aworNTM5MjYgNWJkM2EyMmJhNDk2YjFjNDA5MmMyZDQyYTQwNTBkZGY0YjE0YjU0NyBwM3lrCis1MzkyOCAxYjk3MmI3ZTM1MmFkZjMxMDUyOTE1MTI3MGVkMTlhOTg5MWM5NWQ1IHAzeWsKKzUzOTI5IDQwYjE3YWZjNGFhN2JmNzFiNTA0Yzk0ODc2NmZmZTQwYjgyODk3NjggcDN5aworNTM5MzAgMGQyZGMzNjExZTNiMzgyNmZmZDkzMTU2NTQwOWUxYzE4YmRlYjAwYiBwM3lrCis1MzkzMSA2MTBjN2FjYzk5ODI4ZTYyZTFmZDM3ZmIwZjY3Yjg2ZTQ1MTJhOTNmIHAzeWsKKzUzOTMyIGJlNDFkYTY2Y2UzN2Y2NDFmNWI2NTZkZmE5ZTlmNTJiNjliNWY1YzEgcDN5aworNTM5MzMgMjVhODQ5MDBlMjA1NWMxNGM3NjYwZTRjZTYzNWI1NjQ4NzQ1ZmYxMSBwM3lrCis1MzkzNCAwMzg4M2FjYjY1MGI4MDhjNjlkZjQ2MTkyN2ZkYWNkMzUwZDE3ZGNlIHAzeWsKKzUzOTM1IDYyMTQ0M2ZjMDFiYmExNTU5ZDA4YmNiYmI0ZmM1NjJjMjYzYmI3NTkgbGVnYWN5LXRydW5rCis1MzkzNiA5ZDFiMGMyOTVlYmJjMGZjMTc4YzYyYzQxZTlmNjFiMTMwZDM1YzQ4IHJlbGVhc2UyNS1tYWludAorNTM5MzcgOTNmNTgyODAzNzMzMDRkZTIxOWM4YTA1YzY2ZmUzOTEwYjRiOTg4NiBwM3lrCis1MzkzOCA3YmM3Zjc0MGY2OWZkYzlmOTJmZDU0ODgyMDdhMGYzYjMwM2ZhMTQ5IHAzeWsKKzUzOTM5IGMzNDUxYTc3YmZkMTY0ZGY1ZGZjZDgzNzBkNTA5ODdkODk5M2ZkMDIgcDN5aworNTM5NDIgOTBjODA3ZWU4NzY3YjFiYjY1MDgxYjZiYWNiYmQyNjQ5MTdkNTZhYiBwM3lrCis1Mzk0MyBlY2U4YTM5ZmEyODJlZGM2MmUxNGZiNzY5Y2IxMzgzYjZmZDc0OGZkIGxlZ2FjeS10cnVuaworNTM5NDUgNTVkN2U4ZmE1ZWE4ZDRmYThlNzE3MDczMGRmNTU2YWJkN2QxZDdhMiBwM3lrCis1Mzk0NiBhMjYyOWJlMWIxZDAxNTk5MjcxOTJhM2NhZGU1MTVkZGU1MjE4NjlhIHAzeWsKKzUzOTQ3IDg5YmE5M2M3MDFjODg0NzM5NmQ4MmY5NjVjNjc1Y2FkNWFiNWVkOTkgbGVnYWN5LXRydW5rCis1Mzk0OSA0NWFmZmFlNDY1ZTQxMTkyOTE4MTQyZmVmZjc0NmYyMDRmNTFmZmUzIGxlZ2FjeS10cnVuaworNTM5NTEgMDM3NmYxM2ExYWY5MTMwNzA0MmRjNGE1YjJmNTg3YTNlZDliYjJkMyBsZWdhY3ktdHJ1bmsKKzUzOTUyIDZhYTFiZTVkZDAwOThiMzU3MWYzNWJhNzIzOTk3MjgyNGUyN2QxZGYgcDN5aworNTM5NTMgMmMwM2Q3MDY4MzVlNDYwYmJkYzg4ODExYzU0MGY5MTA3ODM0YjAwMiB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTU0IDA0N2VlMjNjMGY4NzhlOTMzZWMyODQ4MjFhYmZmZDk3M2E0ZDk0MTMgbGVnYWN5LXRydW5rCis1Mzk1NSBjOGMwNjczMDI2NTk5YmNkNjQwZWZhYTk1MzZkNGQyOTM2ZDY5OWUwIGxlZ2FjeS10cnVuaworNTM5NTYgMTg1M2NmMDZlMzZiYTMxMmFiZDEyM2U4YzJkMTY5ODk4YjQ3N2QyOCBwM3lrCis1Mzk1NyAyY2ExNGQ2YTM2OWI3MjViMTNkNDliMGFlMzc3YjMzYjI1MzQyNmRiIHAzeWsKKzUzOTU4IDg2NDcxOTBkYjk2Y2QxYWE4YjQzYjI2NGYzMWI1OGJkOGJjMDQyZTMgdHdvdXRlcnMtZGljdHZpZXdzLWJhY2twb3J0Cis1Mzk1OSBmYzIzZmM4NjM5YmFmMDBkZTUxYjQ0NjUxN2ZlZTk2YTI0MWQ3MTAyIHR3b3V0ZXJzLWRpY3R2aWV3cy1iYWNrcG9ydAorNTM5NjAgNGI5ZDBkYWM3OWNjYzA5YmMxZjdiNDYyMTJjNzAyZjE0MDA0MzVjMyBwM3lrCis1Mzk2MSBjNzllNjIzNGZiMTllZjZhMzRjZWE1YTI1OWNkMGRkNmJmNmIzNGEwIHAzeWsKKzUzOTYyIGJiNzNkM2EwNDU3ZTk3N2Q4NDg5NjBiZGVlYzJlNzk1OGNlZTY2MjcgcDN5aworNTM5NjMgN2Y3MDc0ZDRmODJjZjcwY2ExZDcwOThkM2NkMjM4Njc5NGY5NmY1NCBwM3lrCis1Mzk2NCBkOTc2YzlhNjMxMTE0YThmYWIxYjBmNTExMzNiYjRjYTEyMDgyZDQ5IHAzeWsKKzUzOTY1IGIwODI2ZThlNDVjNzhlZjU0ODhiZjhhNDhiOWNlYzg3NzM2MTliZTggcDN5aworNTM5NjYgMzA5M2VhOWI0MDI0OTcyODE5ZGMwNzc0MmVjMDAzZGJjMDY4YWJlNSBwM3lrCis1Mzk2NyBlNzU5ZmQ4ZDk1YWU3YmNjYzQ2MjU5ZTFlMDRkMWE1YWZkODQzNjRiIHAzeWsKKzUzOTY4IDFlNGUyOTI0ODZiNjg4ODk4NjJhODA0N2M4MDEwOTY0MDEwYmRiMzggdHdvdXRlcnMtZGljdHZpZXdzLWJhY2twb3J0Cis1Mzk2OSBmM2YwYzY5N2FhNWIxNjMyZWQyZTBjNGFmM2RkOTBkZTIzZTMzOGM5IGxlZ2FjeS10cnVuaworNTM5NzAgZWUzNjAyYzdhZTA0MTQ3NGE4Yzc1ZGFkMDRkY2JkM2RmZGEwNTA5ZSBsZWdhY3ktdHJ1bmsKKzUzOTcxIDQzMDgxMWJkYmZlZjY2YmM5YTg1ZWM5NGNjYjdhYjY5OTg5YWFjZGUgcmVsZWFzZTI1LW1haW50Cis1Mzk3MiA5NGM0ZTM2YzMxMjQyYjg5ZTAyNjAxNTBiMTJhZWIyYzFmZDEyMTI1IHAzeWsKKzUzOTczIGRhNzNiNWEwZmQ5MGFiYTMyYzRjYjFkMDkzNGRkMDRhM2Q3MjhkODkgcDN5aworNTM5NzQgMmNlMjI5YTdiYTNmNjllYzU0N2U3OWRjNDBhNWIyZDU3ZjU4ZjQwNiByZWxlYXNlMjUtbWFpbnQKKzUzOTc1IGM4M2FjZmIxYTYzMmY3OTQ2ZjM0NmU3MjJmNzBkZTc5MWYzYzIzNDYgbGVnYWN5LXRydW5rCis1Mzk3NiBmZWRiMDNlYWM2YWQ2ZDExMDQ1MDQ4ZDI4OTZiMWU3ZWIwYWY3NDJlIGxlZ2FjeS10cnVuaworNTM5NzcgYWExOTVhMWFhOTU1MjhiODg1MzIyZGZmYWJiNGJlMzA0MThhMzcxMSB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTc4IGU1ZTk4MzdkYTcwYjc4NjAwYTgwYTUyZTc3MjZmYzIzOTI0ZTcxZmYgcDN5aworNTM5NzkgMGVhNTI1NThiZGZlYzI5YWY5Y2Q5Yzk4ZTBjMDVkYjJiZDI1YTAyMiBwM3lrCis1Mzk4MSA1NDFhOGIxYjVkYTc1ZDlhZjU0OTQzNDcwNGIxYWI1NjNiNzIwNzcyIGxlZ2FjeS10cnVuaworNTM5ODIgZTY2ZGRiNmUzNGU4NDQ2Nzc2NWE3NmRlN2NjZTNjZWIzMzQ5ZDY0YyBwM3lrCis1Mzk4MyA0MTYyOTJjODI0OWNlOGM5MDgwYzU0MTExZmE3ODg0NzA1ZmFlYzg1IHAzeWsKKzUzOTg0IGMyNGU5NWQxMTc1MjAxYjU3NDcwNDE1YWJjM2IwZTJhMGNiNDdhYWQgcDN5aworNTM5ODUgZDU1NDZmMDlmMjBlNzYzOGI3NTgyNDhlNWQ1NGYxYjg3NmUyYWFkMiBwM3lrCis1Mzk4NiAzMGU1Y2IzYTU1YWMzMTQ3ZDllOTJlYTM4OGY0Zjc5NDU2MTZlNzY3IHAzeWsKKzUzOTg3IDE0MGYzNTI0MDI3ZjBlMGI1YTcwY2UyZmYxNTk0ZjMxYmEyNDZjOGQgcDN5aworNTM5ODkgYTllNmM3M2UwZmE1YjIxMzJjMTUzMWMzMWFhZWY0Y2ZmZTRkNTI2YiBwM3lrCis1Mzk5MCAyZDlkMTA3MDJlYzQ0ZTJmZTRjZjgxNDljNmM2ZjI1YTQzNGVkYzIyIHAzeWsKKzUzOTkxIDZjMGQwYmU4MmI0N2JhZjI5YTU4MTE4NDFjNThjODgyNzI5YWJkZWYgcDN5aworNTM5OTIgMTE3NzdjODg3ZjdjZTAwZTRiZDdjZWFlYzYxMzY5ZmY4Yjk3ZTQ1NSBwM3lrCis1Mzk5MyBhMmM5ZWI5YWI2MDk2NzRiNDUyZjNkYmI0OTk5MWIyNjc1YzM2MTZkIGxlZ2FjeS10cnVuaworNTM5OTQgMGI0NzQ0NmNjNDA4NGEwMzgwZGI5Njc3MThlNDdmNzFkZTQzNThlMyBsZWdhY3ktdHJ1bmsKKzUzOTk1IDQ2Zjc3MWUyNjdiYzgxNTgyOGI2ZWQwNmUwMjNjZDVjM2Q0ZGNhYTIgcDN5aworNTM5OTYgM2NhYmJmYTQzOTg0MDkzYjEzZDdjYzRiM2RmOTQ4OThjNTExZTc1YSBsZWdhY3ktdHJ1bmsKKzUzOTk3IGQ2MjgwNWE5OTNjNTA4ODE5ODJmZjUxZWQwMTZlNDFiNjlhYzU2ZGMgbGVnYWN5LXRydW5rCis1Mzk5OCA1ZWFkMzIxMzBmNjQ2ZThiMmU2YWZjZTBkOTdiMzIzNWQ3NjEwMWFlIGxlZ2FjeS10cnVuaworNTM5OTkgNGE0ZjZmMDI2ZjFjNThmNDk5YWFjYTgyNjZlY2YxMTcyYjJjZTE3NSBwM3lrCis1NDAwMCA2MWZlZTE4NTNjYTg4ZjM4MjBiZjdhM2M2M2ZiZjQ1YTcyNTYxZDJiIHAzeWsKKzU0MDAxIDgwZTg2MWU3ZmFiZTg4ODU4NmVjZGEyN2Y2OGM0OTljYzRmNmNlMzggcDN5aworNTQwMDIgYzNiMjhiYTkxOGY4M2ViZmYyZTRjZTgxMTY1NGRhN2Q0YjNmMjMxNyBwM3lrCis1NDAwMyAxZjc5MGRhNzk4NDA5ZDkxY2U4OWNiZDBiMGQ3ZWZlZjQ3NjlhOGI0IHAzeWsKKzU0MDA0IDQzMWIzMjM4NTkzZWFjYmFjNjVhNTlmMTRjY2I0ZDk5ZWI4MTU3NmYgcDN5aworNTQwMDggNzYyOTY0Zjk5ODcxMDQ3YmYwMjM5MTk0Y2E3MjU0ZDFkMzJkNDZhNSBwM3lrCis1NDAwOSBjMDM0NDcwZTNjMGFlYjkxNjQ3NDEzNzJhNTcwZDllYjE0YzA3NzQyIHAzeWsKKzU0MDEwIDhiZWI3NTQwMmU3NGJmNTU0N2Q0ZmY0OTdiN2I4ZGEwMGNmOGQ4MzkgcDN5aworNTQwMTEgOTMwMzFlNzE2NWFiMDEyOWZiYmQ4YTEwOWY2YmVhYjAzNGU4ZjRkNSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxMiBiYTkyZTlhZGUzNmYxMTc4YWQ0NTY0NzU2ODMzODc1NWI2YjMxM2MzIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDEzIDZkOTFlNzRmY2Y1NWU1MjA4NmQ4YWUzZmY0YjJjMTgyNTEwOTJiYjEgcDN5a19ub19hcmdzX29uX2V4YworNTQwMTUgMzRhN2MyOWU2NWQxNjJhZjFhNzA4NTAxMDhlYjc0Y2MwNjVkYjk5OCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxNiBlMTAzYjkzN2Q3NDc1MTBlNGVlMzEyMGVhZmEzY2Q0ZGU4OTYyMzEzIGxlZ2FjeS10cnVuaworNTQwMTcgYTFhZWU4MTBiNzM5Njg2MDYwZGZmMGRlZTI3MWIyZjkzNGEwYzRmMCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxOCA5NTMzZWIwZTg3Y2ZmY2JmNTJmMmNjNmYxMGMyYmZlYmQzNGE4NzRkIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDE5IGYyNTI0NjgwNTg1MDdlYzdkOTQ0ZDk4NDM2ODE4MzA1YmJlZDA4OTYgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjAgYmQzNTkwYjhjNzhlZTU5MWUwNDFlYzVlYjM2M2NkY2UyNzIzMDk3MCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyMiA5ZGQ4NmVhZDUxYzM3NzZjZDZhNGFhMWJjNjRiMTdiYWYwMWJkNjc5IGxlZ2FjeS10cnVuaworNTQwMjMgMTY1NDYxYWQzOGRiOGUwNWUxODE1MmJhZmI5MDVlOTBlMDdjMTViMCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyNCA4M2I4YzcwZWZkMWU1ZjFiZWE1ODM0MjcyNmFjNWM4ZGI3MjRmNGJkIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDI1IDllYjYwYTA3Mjg1YTQ3ZWQzNDcyNmI4N2EzYmI2ZTFlN2YzNzQxMDIgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjYgYThjNzliMWU2OTZhZTdlZDMyYjE4NTQ1YjNlMzI1MDA3YjFiZTM0ZiBsZWdhY3ktdHJ1bmsKKzU0MDI3IDE2NWJiZWQzMzc5ZDZkM2Y0NWJlMWVkZjJhZTEyZjU4NDcyODYxMGYgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjggMmM2Y2Q5OGRiMGI4ZjNlM2U3N2MzNmMwOWQ3ZjIyNjliNjM3ZDc4YSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyOSBiMzVjZmQ4YjQ5MTA2MTRkMmJkZDcwMDEzZWUwODJiYzllNTE1MmZiIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDMwIGFjMGViYWU0NTg3MjIyZGNhMjFkZDE0NzdlYWY0Yzk0NmE2NTc5M2IgcDN5a19ub19hcmdzX29uX2V4YworNTQwMzEgNGM1NmZjZWZiMjgzYjdmNmJhNDViNGU1YWZlMzkzY2IzYjAzOWFiYiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzMyA0MDg3YzBlYzczM2JiYTU0ZTgwMTM3MjdlZDY0ZjE3M2I5YTYxNzVmIGxlZ2FjeS10cnVuaworNTQwMzQgMDFkZGVjYjc3ODE1NDI2MzgzNGU5YjAwYjFjZGEyYWQ2NDA5MGU1ZSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzNSBlNDc2YTVhNzhiMjkzN2U3NjcyMTIyZjAxYWI2NjQ1NWRiMGE5M2NmIHAzeWsKKzU0MDM2IDU2ZDUxZjU5NDg2NTNkYTJhMWU5OTc5ZWZjNGIxMWUyZjZkYWQxZjggcDN5a19ub19hcmdzX29uX2V4YworNTQwMzcgN2Q3ZjMyMmYyY2I2Nzg3MjkwYmY2NzM1ODNmNzg5MzE1YzcyZjQ1OSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzOCBlMjIwOGQ0ZjVhN2ZjOWI4NmIzNTU2ZDUzYmNjODcwMjI2OTRmMWIwIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDM5IDc0NzJmN2I3ZDkwMzQ0NjE2MmIxYTZiMWVkM2QyMTE2ZWM4NDVmY2UgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDAgMWRjZTI1MDI1Njc5MjFiMjUyYzkzMDA0ZjNjZDI4NWVlNWNlMWU4YiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0MSBiZGI1MjcyOGIwMmVmNGFiNzJkODk3MGY0ODM0NWM1ZmM3M2I5ZGZjIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQyIDQ1NTU5NjFjNWEyZjk2YWE5M2U4MmI5N2E0NDliMzYyZGNmNTk0OGQgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDMgZTE2MjY4YzI3M2JiMjY2NGM2MDk5ZWVjNTAyYmZiNWE0YTU2MDllYiBwM3lrCis1NDA0NCA0YWUwNDkwZTFhMGMwZjM0OWY2NzgxYzA2NDVlMjI5ZDQ2YjExYzc1IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQ1IGRlMmM5ZjlhZWExZWU3NmQ1OWQzZTBlNTJiN2VmM2JjZjNhYWE3OTEgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDYgNjljYTY1N2E2NGU3ZWRiZjA1ZWIyYzM0OTBjZGZhNTVkMjRhMTg3NyBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0NyA0YzFlMmMzM2ZhY2QwOGNlZWI2NzBlYzhjNDM1Yzc4Yjc3N2NkMWUzIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQ4IDBjMTRiNjZhY2E3MDJiNGQxZjlmZWFkZmMzYTYyMjY3MDVjYjY0ZjUgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDkgZWU0NjIxN2M4N2FmN2E4NzM4MTlhYTNkY2M3MzMxMjRmOTY1OTg1MyBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA1MCAyN2EyMTg2ZjQ1Y2I0YjIzNzE2M2U2ZTc1YjI4ZDk0YWU2MDFkMzFlIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDUxIDkxODVjNzBhMTU4NWU5YTZmYzBjMmRmZGVmNzY1ODE5NjZlYWQ5MDMgcDN5a19ub19hcmdzX29uX2V4YworNTQwNTIgZDliMTUzNGVjNzlmZTc1MDQzYzAwODE5NjUxYTQ5NTI3MTkyYzhjOCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA1MyBiNDZjNmQyNzYyNWUzZTZjMDM5NjljMzZiNjQ5MjU1ZDAyNDdmMjg2IGxlZ2FjeS10cnVuaworNTQwNTQgNTJlNDUzMDc3M2M5NzAxYTA2YzExZTExNTc3ZWRlOWJiMWRmMjYwZCBsZWdhY3ktdHJ1bmsKKzU0MDYwIGJlNDRiZjJkYjM1MGU0YWEyYzQyNTY5MTFmMzAyMTYzNTVlZWUxMGUgcmVsZWFzZTI1LW1haW50Cis1NDA2MSA4ODg4NGU3YmFjNmRjMmEyOGZhODhiMDg2MTRhYzdlNjA2MjMyNDIzIGxlZ2FjeS10cnVuaworNTQwNjIgNTJlOTVmYjA4OTAxN2RhYjg5Zjc2MGM1YzUxYTFhZGM5Y2U1NDU4NiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA2NSAzMmE0ZTVlZTJkOThjMTQ1NzliZDUxZjUyZTg2YWFhMDM1Yzk4MjM2IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDgwIDFjNTg2MTFjNTFkMGNhNmZhNTk4MmI1YTEyODhjYWNmYWQwNzMwNjcgbGVnYWN5LXRydW5rCis1NDA4NSBiZTY4ZGE1NjFkY2Q2Nzg3MGY5NjViMTY0YzliMjdiNjdjMjVmZTFhIHJlbGVhc2UyNS1tYWludAorNTQwODYgNGUzNDgxOTYxZmJiYzJlY2UxNjUwMjVjYmNjMDg5YjIxNjExMGVkYyBsZWdhY3ktdHJ1bmsKKzU0MDg4IDY4YTQ4N2QyMWMwNjlhNzVjMzNlYzg2YzVmYzZmMzkwMmQ1Nzc3YWIgbGVnYWN5LXRydW5rCis1NDA4OSAzMjRhNzFhMTAzZWMyZGZlY2NkM2E1MDk5ZTgwOWVjMjJkZGU2ZDk0IHJlbGVhc2UyNS1tYWludAorNTQxMTQgMmYyYjg5MzVhODFlMjYyMDI2YmExZjUyYmYxZGU4NGQ4ZWE2MDZkZCBsZWdhY3ktdHJ1bmsKKzU0MTE1IDZkZWY4MmI4Y2YyMGFhMjIzYmE3YTVlYWE5OWM0Yzg5OWQ0ZWMxZDMgcmVsZWFzZTI1LW1haW50Cis1NDEyNCBmZTlhOWQzOWEzNTE3ZmVmNTg5MjQzZTc5ZmFlNTdlOTcwMTY4MjU0IGxlZ2FjeS10cnVuaworNTQxMjUgM2IxZWZjZTM1OGEzNjAxMjczMGVkYzE2YjhkZmJmZDQ4NzAxZDEwZCBsZWdhY3ktdHJ1bmsKKzU0MTM2IDM3MjA3MGJhNmZkMzFmNGUzODlhOTBjY2IzY2IwNjJmZDgxN2M3ZjggbGVnYWN5LXRydW5rCis1NDEzOCBlMWIwMDBiZWQ0NjJmMzhiZGQwZjA3Y2VhMTc1ZjUzNzI2Y2RkYWQxIGxlZ2FjeS10cnVuaworNTQxMzkgNmQzNDU0YzM3MWRkNDNhYzlmMzFiNGEzMzZmMTQ0MmQ0NmRiZjk0OCBsZWdhY3ktdHJ1bmsKKzU0MTQwIDg5MWMyOGQ1MzU2OTY5YjA0OTI1YWFhNmY0NWJlNjFhODU2MmVjNmIgcmVsZWFzZTI1LW1haW50Cis1NDE0OSAwODFiNGU4YjZmNWI4MjE2NWMzMDVlMjdkN2RiMjM4Y2MxNjgxYzI4IGxlZ2FjeS10cnVuaworNTQxNTAgNjA1ODU1MzBmMzBiOGJjZGEwNTVhNzBhMTZlMDNkNjAxYzY1MTY3ZiBsZWdhY3ktdHJ1bmsKKzU0MTUxIGU0MjI4MDIyMDJiZTBhMjA1ZTA1MGIzNDI5ODQxMDkzMmJiMzAyZWMgcmVsZWFzZTI1LW1haW50Cis1NDE1MiBmMWU4OGMzNTAyZDlmMWFhZjgwYzQ1Y2ZlOTY4OGZhNmI4YWJhNjdhIGxlZ2FjeS10cnVuaworNTQxNTQgNDgyNTQ3MzkxNTlmZmFlYmI2ODJkZmJjYWIxOGQzMDRjMTVlZTE3ZCBsZWdhY3ktdHJ1bmsKKzU0MTU1IDMzYjQzZGViYjk3ZWU3Njc3YjY2MzZlZDVmMTBkNmFkMDRlNzUwNTYgcmVsZWFzZTI1LW1haW50Cis1NDE1NiA1YzE5NmFhNmVjZjQ4ZGI5Y2Q5ZTM1ZGM4ZmVmMmIwMzhiNGU4MTM0IGxlZ2FjeS10cnVuaworNTQxNTcgYjZkY2I3NzgzMzg1N2Q5OWE5NDZmNWNjM2ZkNzY1MGRkNDM2OTcxOSByZWxlYXNlMjUtbWFpbnQKKzU0MTU4IDEwODBkZTQ5YzgxZThkZjU2NGM4YTA0NzhiZjYwNDkxZDc1NDEyMzAgcmVsZWFzZTI1LW1haW50Cis1NDE1OSA1YzA4ZTY0NjBkYzU1NGY4ODIxOWViMTRkNWNjNThkOWRhMjliMjNmIGxlZ2FjeS10cnVuaworNTQxNjAgYjBmMjZhNzgxM2M5MDk2ZjQ5ZDY0ZGViNTMzZDJkODlkMzc1OTYxZiBsZWdhY3ktdHJ1bmsKKzU0MTYxIGY4M2U1ODIyZTY3MjZiZTk4OTA2Nzk0MWUwN2I4MGY5ZDdiMmQzOGQgcmVsZWFzZTI1LW1haW50Cis1NDE2MiAwOWQwOGZjYjhmN2I5ZDIyMjg0OWZjNzcwYzllZDc2NjZkNGY2MjJmIGxlZ2FjeS10cnVuaworNTQxNjMgMmVlMzY2YTJkMmI4OTFmN2JmYjc5ZjZmMzY3M2NhMGFhYjZjZTVhOSByZWxlYXNlMjUtbWFpbnQKKzU0MTY0IDRlODM1ZGYyYjRiYTg4Y2I5YWQxODVjODljNWFmOWE5NWI0NTExOWMgbGVnYWN5LXRydW5rCis1NDE2NSA5NjNjMGU0NDI4MzIxMTRiYWZlYjdiMjFiNjIyMjAyNjRkNjJlMDJjIGxlZ2FjeS10cnVuaworNTQxNjYgMDY5OTJlNmIyMDVhNDQ5NjE0ZTZkOGY0YjI1Y2U4MzRhODQwNGNjMCBsZWdhY3ktdHJ1bmsKKzU0MTY3IDNjZmRiODBiYzY4ZTg3NGNlNmFjMzgyYTQ1OGE2YmI1NzRlMjEyYjEgbGVnYWN5LXRydW5rCis1NDE2OCAxZWExOWY3NDUwNGNiYzYwYTEyNDllZWM0YzYzNjM2MjZkY2QzNGM4IHJlbGVhc2UyNS1tYWludAorNTQxNjkgZDQ1NzcyMTU1MzlkZGQzNzQxOTBlOWI1NjExNTBmYTc1NDY2MTAwMyBsZWdhY3ktdHJ1bmsKKzU0MTcwIGE2YTA5NWJmNjQ1ODVkMDE0MmY0ODUyNjJiNzM2M2EzMDcxNjdmNTQgbGVnYWN5LXRydW5rCis1NDE3MSA2N2NjMGU5NWU4YTU3OGZiMGE0NmVjMmI2M2E2NWZmOTVjOWZhZjU5IGxlZ2FjeS10cnVuaworNTQxNzIgNDFlZDk0YmU2ZDVjYWEwZmIxOWI0ZmNiZTVlMGMyZDUzMWExNDhkMSByZWxlYXNlMjUtbWFpbnQKKzU0MTczIDZhNTk5YWVlN2NhNDBhMTI2MTAyODBjMmViMjUzZjA0M2QxMWEzMmQgbGVnYWN5LXRydW5rCis1NDE3NCA2MTRiY2QzN2M2ZjNhNGVmZDJlNTQ1MTQ0OTBiMzhjMWVmMDkyNGMyIHJlbGVhc2UyNS1tYWludAorNTQxNzUgNmNkMzY2ZTZiZWVjYzU4ZmJlMzgyZmQzODE3MjljNDM2N2Y2N2Y1NCBsZWdhY3ktdHJ1bmsKKzU0MTc2IGU2NmNmYzcyNWU4ZGIwZTEwZTFiOTJkMTY5ZWYyYWZiMDI0NDE4YjMgcmVsZWFzZTI1LW1haW50Cis1NDE3NyA2ZDhkY2FkMTJmZDliZmI4NGMwZTJlNWVkOTU2ZmJlYTIzNTQ0YzNjIGxlZ2FjeS10cnVuaworNTQxNzggODI4MGI3YzQwNTU3NjAyMjhkOTNiMjcyYTI3Nzg3Y2RiMDBhOTM4ZSByZWxlYXNlMjUtbWFpbnQKKzU0MTc5IGVmYTBhNzYxOTE4YzI4YzcyZjU2MDIwN2E4YTlhMmY2NjMyZGM3Y2EgcDN5aworNTQxODAgM2FjMjRjMDExMGU5NmY4YTUxZDI0MjUyMTI3YmUyOWNhNTA0ZDU1NCBsZWdhY3ktdHJ1bmsKKzU0MTgxIDFjMTRiMjNiOWMxYmNmNjk3MWViZDA0YThhNzBlODZlZTBiY2FkZDEgcmVsZWFzZTI1LW1haW50Cis1NDE4MiA3NTdlOTNhNDA5NmM1MjRiYTllMzg4ODUxYjVlNmUwMWE5ZmUwNjk3IGxlZ2FjeS10cnVuaworNTQxODMgMTZjMjE1ZTQzYmFkMGEzZjQxZTJkYTAxNjliNmQ3YmYyN2RiM2JhNCByZWxlYXNlMjUtbWFpbnQKKzU0MTg4IDcyOGM2MGU4NWVmYTU5NGZjZDNiMDE1NDRhMTkyNGJkNjg0NzI3MmQgbGVnYWN5LXRydW5rCis1NDE4OSBjOGVkNGFlYTZjNTgzMzBkOTZhNzY0OTVhMGVlNDBhZTBhNzIxODAwIGxlZ2FjeS10cnVuaworNTQxOTAgMjEyMzNjMmU1ZDA5Mzk5NDA3NGRjOGFiNzhmZjc0YTJmZTM1MjgwZiBwM3lrCis1NDE5MiBmNDc5YjljNzRiNzgxOTk3OTFkNjU3NzA2NTc2NTBiNTM3MzcwMjRhIGxlZ2FjeS10cnVuaworNTQxOTQgMTI5ZmZmZjJjZTZkYzQ1ZjM1MjA2ZWYxM2ZlNWEyZTRkNDBmMGRkMCBwM3lrCis1NDE5NSAyNDJkZTE2YTZkNDQyYzBkNTY3NTkwMjVmNmMzNzA2MTI1ODhkYWVlIGxlZ2FjeS10cnVuaworNTQxOTYgMWEwYzkwNzkyOGI0MDEzNDNiNjcxNjU2MmFmYzQzZjc3YzYyYWMyOCByZWxlYXNlMjUtbWFpbnQKKzU0MTk3IDg1MGMzMmRiMjdlNjQ0MDY1NmYyOGZhMjM0MWRjOWUwZDA3Y2YzMzAgbGVnYWN5LXRydW5rCis1NDE5OCBlMTk2MmFiMTJmY2U5YWJhODk0NWZhNzNlNmY5NzNhYzRjM2Q5ZDlkIHJlbGVhc2UyNS1tYWludAorNTQxOTkgN2RhMjNiZjg5NDlmYzRhOGViODg5MTViZmJlMmExMGQ2NjRkYzBjMiBsZWdhY3ktdHJ1bmsKKzU0MjAwIDgxZTQ4NmIzMDA3ODg1YzA1NzE5NDUxZTMyNmFhMWRlMTNmZWQwYzkgcmVsZWFzZTI1LW1haW50Cis1NDIwMSBiMDkyYjJjODNhYjdlODU5NjdiMzNmNzZhMzVmNTA0MTM0NWRkYzU0IGxlZ2FjeS10cnVuaworNTQyMDIgNTEwMjMzNmNhMzQzNTQ0Y2Q2NWNmMjVlMzU3OTdmNGZkYWEyYzA1YyBsZWdhY3ktdHJ1bmsKKzU0MjAzIDQyM2IzNjQ4NDNjZGMxY2FlMDAyNWNmODg5ZjBjODI5MTRhYWU5YTcgcmVsZWFzZTI1LW1haW50Cis1NDIwNCA5OGJiYzkzYmQ1NWJhMGE2NDlmNGI3YzA2YjgxYTc3NzhiZDMxOTY1IGxlZ2FjeS10cnVuaworNTQyMDYgM2I1MzhhY2Y3Njk0ZTEzMThiY2FmNjQxOWFmNGExMTAyYzYxMzliYyBsZWdhY3ktdHJ1bmsKKzU0MjA3IDQ2Y2ZhYmI3ZDU0NDYzZTY5ZTJkYTNmYWI2Yzc1NTVhYjExODUxYzUgbGVnYWN5LXRydW5rCis1NDIwOCBlNDJjNjNkN2MyMzBhODgwZDdhNjc5MjdkY2Q0ODlmMzU0MTc0NTlhIHJlbGVhc2UyNS1tYWludAorNTQyMDkgYmFhYmVmNmMwMGQ2OGUyNzY3NTZhZDhjMjhkNTA0ZDZkZTRkOTc2MiBsZWdhY3ktdHJ1bmsKKzU0MjExIGJmZGJkM2VjMjdkODVhNWVmNDM0YjQ0NjZmZTRhZDEzODU0MDZhYzMgcmVsZWFzZTI1LW1haW50Cis1NDIxMyA0YTBlMjI4YzM2ZTU3ZjcyMjEzNDdlYmUzMzQ1Y2E0MzI1YzA2NzVlIHAzeWsKKzU0MjE0IDZlMWNmNGQyOGFmMzRlYjUyZDVjOGI0YjRjMDc1YzkwZGQ3OGE4ZTAgcDN5aworNTQyMTUgMTU3MjYwZWY2NzdjYWQ0Y2Q0ZWU2MTBjOTQ2NzhlYmI4ZmE0YTFmNiBwM3lrCis1NDIxNiA2M2FmMzdjMmQwYzBlZDI4OWJhODVlYmYyMGViNjhmZTNiOTAwYTA2IHAzeWsKKzU0MjE5IDkxOGVkYWJhYWE4NGU2MjViODM5OTA1ODYzOWUwY2RkNTk0MDFkNWIgbGVnYWN5LXRydW5rCis1NDIyMCBjMWE5N2IwODIxM2E5ZGI1MzRjZjQ5MTJlYjAyYjhkMzZmOGRkYzU1IGxlZ2FjeS10cnVuaworNTQyMjEgMzJhZjk1ODhhMTgyZWY0NDhjMDk4OTU0OGRmNzE1MmE2NTkzMGU0OCByZWxlYXNlMjUtbWFpbnQKKzU0MjIyIDhhYTdjYjUxZDM1ODRmOGY5M2IyZjljYjE0OGIzNmFkYWE1YjlkNWEgbGVnYWN5LXRydW5rCis1NDIyMyAyZjVkODRkY2I2NTU3ZGFkMzVmZDdhOWEyOWQ1MDdjZDEzN2Y4MWVjIHJlbGVhc2UyNS1tYWludAorNTQyMjQgZDk0OGEyYzBmY2ZkZGQ5NTEyMDhmMGMwNTY0MzgxMDk0YWNiOGM2NiByZWxlYXNlMjUtbWFpbnQKKzU0MjI1IDU1NjU5ZTY0Mjc3YmU2Y2Q0MDY0NDkwNmQwYThhZTRhYTkwMmQ5YmQgbGVnYWN5LXRydW5rCis1NDIyNiA5YjU2ZWFkMzUzMmNkNzhlOWM2NjJlMTlhZTE0OTc4ZTBkZWE0MDU4IHAzeWsKKzU0MjI3IDBiYjk2OWYxNTExOGEzODgwZWMxYmU3OWJjMzI4MGIwMDc0NjYwZGEgbGVnYWN5LXRydW5rCis1NDIyOCA4MzQwMGRmOTczNzlhZTJmNTU1NzM4ZWNlMGI5ZWM0MTc2NjNmZjFmIHJlbGVhc2UyNS1tYWludAorNTQyMjkgYTdjOGE0ZDFiOTQwN2QyOWIwNTgwYzg0OTAwNjg1NDVlZmQ5ZDIzYyByZWxlYXNlMjUtbWFpbnQKKzU0MjMwIGYyYmE4MTJmNzIwMDc2MGI2NWJmZjc1YjMxZGIwMDNkNzRiNWM4ZDEgbGVnYWN5LXRydW5rCis1NDIzMSAzYmUyMTc1YmJiMDAwNzRkMjQzYzg0YmY5YzlkY2Y1NmY2OWE5YjE3IHAzeWsKKzU0MjMyIGZmMGM0NmZiMTk1YTM1NmE5MmYyZDJkYzY0NDljMzIxZWI3MGUwYzggbGVnYWN5LXRydW5rCis1NDIzMyBiZTFlMmY3NDU2NjlkYzA5NWM3NTU0YzUzNmViYjdmYzExNGUzYTQ2IGxlZ2FjeS10cnVuaworNTQyMzQgOWNmYzljYmE2NzY4YjE2ZmQ2ZDUyZjkzOWE5MzA0NDRjMjM1ZGM3MyBsZWdhY3ktdHJ1bmsKKzU0MjM1IDFhMGY2YTEyODc0YzJhYWMzM2Y3MDY0NWMzZDkwNmZkYzIzYmQ5OTUgbGVnYWN5LXRydW5rCis1NDIzNiBlODMxMDg1NWZjYzdhNjc0NGQ4MTUwMDA1N2M5NzI1ZGI3ZmJkMTYxIHJlbGVhc2UyNS1tYWludAorNTQyMzcgZjc1NDU3ZDc1MzJjZTBjZTdiN2Q1N2Q0NzAzZDlhYzM0NTcxZjk3YyBsZWdhY3ktdHJ1bmsKKzU0MjM4IDdmNmQ1MzkwYTExYWIyZGQ3NWEyZjgzNmI3YWQ1NjlhM2NhNWYwYWIgcmVsZWFzZTI1LW1haW50Cis1NDIzOSA3NDQ2YWQ2Y2I1OGJkY2JmY2U4MTg5MzFkYTBiYWZjNmRjZDNiNTViIGxlZ2FjeS10cnVuaworNTQyNDAgMDliZmMwY2RmZjlmZWUzYmU0ODhkYmUxYjIwNGM5MGRiNDc3YzFkZCBsZWdhY3ktdHJ1bmsKKzU0MjQzIDI4Nzc3OTg0M2M1ZDM5OTRhMjFlNWQzMmIwZTNmOGZhZGE1ZTY2NTggbGVnYWN5LXRydW5rCis1NDI0NCAzNzE3YjE0ODFkMWI5NTczNzlhYjIxYjBmZmJkNjkyMDljOTYxNTQxIGxlZ2FjeS10cnVuaworNTQyNDUgMWZlZTlmNDJiMWZhZGQ5NzUxNGE3NTkxNGQ0MWEwMjRlMjc2YzQyZCBsZWdhY3ktdHJ1bmsKKzU0MjQ2IGIxMzI2YWEwNGIyYzNkYTI0NTY4YTdmODZmOGE1ZGE1MjkzNmYxNDUgcmVsZWFzZTI1LW1haW50Cis1NDI0NyA0N2FjMWJmZWEzMDQ3YzZjZTgwYmYxNTc5MjQzMDRmMTVhNzBiNWY4IGxlZ2FjeS10cnVuaworNTQyNDggZmVkZDZjY2M1ZTViNGY4NjQ3Y2I4YTQyYmEwNTA1NDZiNTNlYzU4MiBsZWdhY3ktdHJ1bmsKKzU0MjQ5IDRhYTkxODdiNTE1OWNjZGUzNTg2NDEwNGU1ZjZiMzUwNmNjYjMxODUgcmVsZWFzZTI1LW1haW50Cis1NDI1MCAxYWYzOGFmMzE0ZjI3MjczZjg0OTI2NmQyMjMyMzUwOGU1M2FiMjY3IGxlZ2FjeS10cnVuaworNTQyNTIgYmUwZDQ5MTM0ZTRmYTJlODVmNmYwNmMzZmQxNTcyYzk1ZWJjMTYzOSBsZWdhY3ktdHJ1bmsKKzU0MjUzIDFiYmQ2ODhhNmRlMTZmNTdjOTlkNjQ4MzhhMmU1YTlmMzQzMjZlODIgbGVnYWN5LXRydW5rCis1NDI1NCAwMDIzN2Y1MTRmMDYyOTJhMDRiMjE3OTc3NWFiYTFlYTJkZmNmNmJkIGxlZ2FjeS10cnVuaworNTQyNTUgMDFjOGYzZTMzMzJjYWExOGI5MmY5NTBmNWI4NzVkOGZmZjUxNjA5MCByZWxlYXNlMjUtbWFpbnQKKzU0MjU2IDcxODA5YzA4OWEyNjM5NWU5ZTcwMTBkZTE3Yjc1OGNkNjczYTNiMGMgbGVnYWN5LXRydW5rCis1NDI1NyBkM2EzNWZlMTM4MzhhMjE5NjdhNzYzNTdkZmFmZTc3NzUwMjg2YzFkIGxlZ2FjeS10cnVuaworNTQyNTggNTk3OGUwNzI5MWZlNzY4MGQ1ZTAwOGViOGNhZDliZTgzM2JmM2I1ZSByZWxlYXNlMjUtbWFpbnQKKzU0MjYwIGEzZjMxMTMwNGVhNjMyZWJiMTIxOWM1NGI4ZjU2YWQ2MjgwMTRiYjAgbGVnYWN5LXRydW5rCis1NDI2MSAyYjUxYjA0YjI1NDU0Y2ExMjI4MzAyOThlMDJkMDZmMmY0ZWExOGM0IHJlbGVhc2UyNS1tYWludAorNTQyNjIgMTAxYTFhYjU3M2RiNGViMjQ3NTE1MTk3Y2NlYjE0Y2ZmYTIwZDgyMCBsZWdhY3ktdHJ1bmsKKzU0MjY1IGNmNDUyMDI3MDczZTI4Y2NlMzY1YmM2NTk2MTYyY2VkOGU3NGU4MGUgcDN5aworNTQyNjggZjExOGFhZGMxMTIwNWM3NTRjZDZhZjIyMmY5OTY5NjFiZDAxNGFkNyBsZWdhY3ktdHJ1bmsKKzU0MjY5IGM5YjQwYjBhYTMwMzIwMWQ3NWZhOGFlMDBmYTQ0OTVkZTk1YTczNDYgcmVsZWFzZTI1LW1haW50Cis1NDI3MCBhOGFlMmMyOWM2NmFlMmQ2MGRkYTYwMDAwZDc0OTU1NmY5MDA1ODBhIGxlZ2FjeS10cnVuaworNTQyNzEgNWFiN2RjOGU3MzFhOTdhYWUyODFjODQ5MWIxODEyYjVlZjFiZjdiYyBsZWdhY3ktdHJ1bmsKKzU0MjcyIGQ0ZWEwNjhjMzgyMDRkODBkMTVkMmM5YmM3MTc4OWFlZGJkN2VmY2QgcmVsZWFzZTI1LW1haW50Cis1NDI3MyBkNzA0NDQ2NWI3NDNiZjUxNWEwN2M0NmQzYzMzZTYwZTM0MTY4Mjc3IHJlbGVhc2UyNS1tYWludAorNTQyNzQgNjBhMzVjMDdkMzJkZjM0MWE0ZWI4OWY3Nzk5Mjk1ZTFmYjZhZmY1MyBsZWdhY3ktdHJ1bmsKKzU0Mjc1IDViNmUxYzAwOGNhMzIzZGM3MTQ2YWYyM2Y0NzgzZTczMzQ3MjVkNjEgcmVsZWFzZTI1LW1haW50Cis1NDI3OCA5YTBjY2RiYmM1NjhkY2U4MmIwOTM1YWUxMDZmZTBjMWM1ZTRiMmZiIGxlZ2FjeS10cnVuaworNTQyNzkgNzJjNWI1NWNhYTFkYjJlMzczZDQwNDI5YTRjOWM4NTc2ZTU1ZTJjMSByZWxlYXNlMjUtbWFpbnQKKzU0MjgwIGQ4NTBiZjU2ZmRmNmNhMmZkZDg0ZjBmMzNlZGNhYTQ0ODM4NWEzNWUgbGVnYWN5LXRydW5rCis1NDI4MSBkY2U5NDBkOWE4ZTljZGYwZDY1NThkMzM4MmRlNWU2YWM1MTZiOTIyIHJlbGVhc2UyNS1tYWludAorNTQyODIgNDdlZGU2NWUyZWZkOGZmZWIxMDk4Y2UzOGFiYWY5NGMzYmQ3MTBhYSBsZWdhY3ktdHJ1bmsKKzU0MjgzIGFkZjYxMmY3MDZlNGU5MDY0YmJkZThlMDJlYzEyYzc5MjE5MWI4MmQgbGVnYWN5LXRydW5rCis1NDI4NCBhN2RhYTAyMThjZjBjMDYzYTVlZTNkMGMwOTY3ZDUwYjA0NGVlNDViIHJlbGVhc2UyNS1tYWludAorNTQyODUgM2VlOTVmZGU3Y2ZhZTQwNDk0MjNhZDEyMzQ2YTc2ZGI4NWMxYTkyZiBsZWdhY3ktdHJ1bmsKKzU0Mjg2IDIxMTIwMWU2YjA0NWVkMmM1MTE1ZTAwMjEzNTljYmZkYzIxNThmOTAgcDN5aworNTQyODcgNzE3YmMyYTRlZWU3N2I2ZjJkZjAwZDJmZWRjOThmYmFjZDBhZTVkMiBsZWdhY3ktdHJ1bmsKKzU0Mjg4IGE4N2JjYzM3YmYwZmVhNzdhZDI5OWNhNjE3YTllNWEwYjk1NzQzYzkgbGVnYWN5LXRydW5rCis1NDI5MCA3MTAwYzU5MTgyZmYzMTZkZjg3N2E0NGJlNTFkNTYzZmVlOTRhZGU3IGxlZ2FjeS10cnVuaworNTQyOTEgNDVjZTM4OGVjNTlhNWQyM2JlMGIzOGEwMDJiNGMxMTIzMmY4MTdjYyBsZWdhY3ktdHJ1bmsKKzU0MjkyIDJjYjVmYjdjZDM1N2U0YjgxMmUyOTFjNjUyZjU3NmE3MmE0MmQwYmEgbGVnYWN5LXRydW5rCis1NDI5MyA1YmUzZDIxNzczNDA1ZGY2N2I3Yjg3MTYxMWQ2ODRkMjViYTRmNzI4IHJlbGVhc2UyNS1tYWludAorNTQyOTQgNjZmMjY1YWM0ZWM0ZjkwYjVlYjI2ODBiYjRmZmE3MDBkMzQyYjU1NCByZWxlYXNlMjUtbWFpbnQKKzU0Mjk1IDFlMTJiZWQ3YTJmZTVhNDZiMjczNmNmNTg4YzhjNzVjZThiN2E1ZDcgbGVnYWN5LXRydW5rCis1NDI5NiAwMTM1NTEyNGNlNDA1MTViYzE4MWMyZGUxM2IyYTI3YmJlYzViZDM3IGxlZ2FjeS10cnVuaworNTQyOTcgOTFhODBlNTJkODYzZWQ1YjJhY2U1MmU1NTVhNmUyN2U2ZTcwZDdjNyBsZWdhY3ktdHJ1bmsKKzU0MzE1IDkxYmQ3MzhhNDIwNjdhMTNhYzNjYTUzZTIyNzM5NmNiNTgxYjZjNjEgbGVnYWN5LXRydW5rCis1NDMxNiA4NDQ3OGRlYjRhZDk2YTlhY2RlOThlN2QwOGE1YjFkNTljZjBmMGIzIGxlZ2FjeS10cnVuaworNTQzMTggNDc5ZGNiZDc5YjU3ZjE1ZWY4YTJlNjFhNGZjZWMzYjAwMTdmNTg5YyBsZWdhY3ktdHJ1bmsKKzU0MzE5IGY5YTI2YWEzZDA5YzQ0YzI2ZDk1MmJhNzYxNDBiNmI3NmM2NzI4YmEgbGVnYWN5LXRydW5rCis1NDMyMSA5ZGIzZTMyNWRkODhkNGIxNzc0YWJmNjM0NGMzMWMzNWE2YmY3YTFkIGxlZ2FjeS10cnVuaworNTQzMjIgNzI4NmQ4MzJhZDI3MjcxNDVhZjQ0MzkwNWI5MjA0Njg3NWMwY2EyYiBsZWdhY3ktdHJ1bmsKKzU0MzIzIGUyY2VlZGUyMGQ4YzI5NDI0Yzg4NmQ2NTIwNTA2Y2Q3YjAwMWVhOTQgbGVnYWN5LXRydW5rCis1NDMyNCAxNmQ3ZGNkN2E2OWM0MmY3NWQ3ZjMxODhmNDBjN2MyNjY4MGFjOWMwIHJlbGVhc2UyNS1tYWludAorNTQzMjUgYmVkNTdkZmYzZGI4NmU2OGYwZmM5NDQ3ZTg2NDkxZWE1OTViMjExOCBsZWdhY3ktdHJ1bmsKKzU0MzI2IDdhMzMxYzdmOTQwNGZjZDAwMWFjMzgxZjY5Yjg1MjhjNTE4YjQ2ZTkgbGVnYWN5LXRydW5rCis1NDMyNyBiYmFmNmM5MzU2NjM2ZmE1MzdhZGUwNTI0ODZiNmZmYzlkZGM1YTk5IGxlZ2FjeS10cnVuaworNTQzMjggOGZhNGU5ODBiNTg5OWZiOWJkMjE1M2E4ZWZhMzM5YTUyMDE4Y2ExOSBsZWdhY3ktdHJ1bmsKKzU0MzI5IGI4OTQzN2UzYmM4ZWJkN2Q2YjdlOGEyYTM3YzVjMDJiODMzYjMxNzQgbGVnYWN5LXRydW5rCis1NDMzMCBhZGU4ZDFjODEwMDkzZTU4NDRmNjg1MjZiNTI0ODlhYWU1NTExYjE5IHJlbGVhc2UyNS1tYWludAorNTQzMzEgYjEzZTYxMjhlZmE3MmE0ZTI2NjdlMGNlMjg5N2NiYTI2YzIwOTlhYyBsZWdhY3ktdHJ1bmsKKzU0MzMyIGI2YzEwMzg0NTA1NGYxODhkMmFiNTE5MWIxZmZlOTMxYmZmOThhOGEgcmVsZWFzZTI1LW1haW50Cis1NDMzMyBjNmY0MTUyOTBmODA2Y2IwNTVmZjZhOWI2YmI1OTI4NTMzOGE1NzEyIGxlZ2FjeS10cnVuaworNTQzMzQgN2QzMGQ2MmE5MDFhYTgxZjEyNDA5Y2ZkNmNhYzk5NzNhZWJhNmRkNCByZWxlYXNlMjUtbWFpbnQKKzU0MzM1IDVhM2ExYjAyNDE4YWZkMGNiOWYzYTE0Y2M2NTMzMjllMjFmNTQyMzcgbGVnYWN5LXRydW5rCis1NDMzNiBhNGUwYzc5MDE1ZDgyZmUyOTg1YTlkZjc4MmM1YWE1OGU3ZmZiOTVjIGxlZ2FjeS10cnVuaworNTQzMzcgODFlNWM1ZDE5OTg4N2M5NWIwMjU3MGM0ZTA2NTExZjlkYzZkNmYyYyByZWxlYXNlMjUtbWFpbnQKKzU0MzM4IGEzNDE5YzZjMGNmZWRmNmFmYjE3NDg2ZGQwZDYwMzZiZDAyNGIyMzUgbGVnYWN5LXRydW5rCis1NDMzOSA1M2VlMjc5NTI4N2I0NGM2Yzk2YWRkZDk1YTUzMTkyODA4MGI5ZTg3IGxlZ2FjeS10cnVuaworNTQzNDEgMWQ4MGQ4NGM3NzkyNDk3NWJjYjM5M2VkMmRkZDBjNjNjYzgyOTUwZSBsZWdhY3ktdHJ1bmsKKzU0MzQyIGI5MGQ4YjJlNWVkMDcxNzRjNDhlZjZhYzg0YTk4YjMxN2RlZjM5YmUgcmVsZWFzZTIzLW1haW50Cis1NDM0MyAwYzEyMmZlODI3ZDc4YTQ2ZTIyMmY0NzBlYjg0YTVlZjRkZDAwZThiIGxlZ2FjeS10cnVuaworNTQzNDQgN2IzNmE2NGRjYjA4ZDAyNjYyMjI3YjIzM2Q5ZWU0N2NkNGVjODBkMCBsZWdhY3ktdHJ1bmsKKzU0MzQ1IGFjNzFkYjlmYWRjODZiOWFlMTY5ZmU2OWQyMGEwNTdlZWM2MTUxMWQgbGVnYWN5LXRydW5rCis1NDM0NiAyOGIwNDAzZjhjOTJiNzFkYzNjNDM0NzBjMzE4ZTU4ZDAwYjg4YWIxIGxlZ2FjeS10cnVuaworNTQzNDcgOTNlNjdkMzYyYTgxYTI5YTk3OWY2NjY4OTQ0NDUwNjhkYWRkMWMyMiBsZWdhY3ktdHJ1bmsKKzU0MzQ4IGQ5NmViYjIwZDNlMWY2MTA1YzkzNWM4MWQ5MjRlY2QyOTQ2NTc0OTEgbGVnYWN5LXRydW5rCis1NDM1MiA0YTc5ZGQxNWJhNTlmNjVlMzkxODQ0YWYyZDk4OGVhNjE2MjU0NzMwIGxlZ2FjeS10cnVuaworNTQzNTcgNDkzY2FlNzA1ZjkxODhjM2JiNzA5Yzc3NzVmZDk2M2ZlMWViNGM5OCBsZWdhY3ktdHJ1bmsKKzU0MzU4IDc4Njg2YzdhMjNhN2Q1MDNlODIyNmM0OWJhNjc1ZmZjNTAzOTgxNWMgbGVnYWN5LXRydW5rCis1NDM1OSA5MjJiNzcwOGE4MGFmZTIwOTZkODA4OWQ0Y2FiNTE5YzIwYmIwMDY1IGxlZ2FjeS10cnVuaworNTQzNjAgMjI2ZDlmY2Y5ZDU5Y2RhNDc3ZTI5MGQwMWJkMWIxZWRiM2RiNTA2YyBsZWdhY3ktdHJ1bmsKKzU0MzYxIGRiYTVhMzNhMGU3OTk1MjgxNDAyMjliNTNjY2Q2NGMwZTYxZmNjZTQgbGVnYWN5LXRydW5rCis1NDM2MiAyMDlkNjg4ZjNjYTVlZWMyZTE4NjExYTFlNzUyMWNhYTljYjc4ZDliIGxlZ2FjeS10cnVuaworNTQzNjMgZWFmYmZhOGEyYjMwMGMzYWJhOTFkNWU2YTQ1MmUzYzE3N2UwNzc0MyBsZWdhY3ktdHJ1bmsKKzU0MzY0IGYxZjE4NjQ2MDI1MGEyZjUzMDhlZTQ2NDAwZDA2MTEzNThhYzgzMWYgbGVnYWN5LXRydW5rCis1NDM2NSBjYTMzOGQ1NjNhN2FkMTZmZjhjZDFjOWJlODMwYTAwZmVlYjI1NDMxIGxlZ2FjeS10cnVuaworNTQzNjYgZDMxMTAxM2ExNjM4YTk0Y2IzNmNhMTE2MDU2YzEzMDM2ZThhN2JkNyByZWxlYXNlMjUtbWFpbnQKKzU0MzY3IDVhMWEwYWE5YTRiYmFlMTk3NmE0N2NiMDE1OGYzMGUxNjFhMTVlNmEgbGVnYWN5LXRydW5rCis1NDM2OCA4OTQ2OTFjYTQ4MzUzZjBjNDFiOGE1YmVhMTE0MTMyZDRlZjhkMDE2IGxlZ2FjeS10cnVuaworNTQzNjkgMWRjZGJjMjVkZWE3YzY1OThlY2ZiNDNkNDdhOTE0N2EzODdlODU2NCByZWxlYXNlMjUtbWFpbnQKKzU0MzcwIDUyYTY5YTA2NDYzN2E1OTk1MzdlNGQzNTJhYzA5YTA4NzcyNGZkNGMgcmVsZWFzZTI1LW1haW50Cis1NDM3MSBkZTFkMDVjNTViNmZkZjNjZWEyMjVlZTc4NTE5NGJkODgzZDAzNzdiIGxlZ2FjeS10cnVuaworNTQzNzIgZmY5ZDgxZTc2YTc2ZjdkNTdlNjJlOWQyZGJhNTM0YTA5ZDdkMzFiYSBsZWdhY3ktdHJ1bmsKKzU0MzczIGJjMmE1YTU0YjVjYWYzZjRlMWYwZjZkYWE2M2UwNjE4NDMyOTVlMjMgbGVnYWN5LXRydW5rCis1NDM3NCBiNTAwNzYxYjRiNjI2ZGMxZmI5MGMzMDhlMDhmOTdhYWE1ODY0MjJhIHJlbGVhc2UyNS1tYWludAorNTQzNzUgNTZiMmI5MzNiYWFlMmM0NWRmZTUyNmZlMTFjNjBjNTM3ZmI4N2MyMiByZWxlYXNlMjUtbWFpbnQKKzU0Mzc2IGMzMDFiNWJjZGZkYzUxMGRmYjlhOGIzNTQ1MmM4ODAyMGE1ZmU2MDkgbGVnYWN5LXRydW5rCis1NDM3NyA5MGU1N2UyYzdhMDMzM2ViNzhkZGMyYzUzNjQ0YjVhNzgxNDhkNjVkIHJlbGVhc2UyNS1tYWludAorNTQzNzggMjkwMGVjMDQwMzFkOTRjM2FmOGQ2YTg4OTkzZGZiZTYyYzE5MGEzOCBsZWdhY3ktdHJ1bmsKKzU0Mzc5IGZjNWUwNDVjZWFlNDM4ZDIzODkwZDNmNjU2OWRlMjYwYjU2MGFiODQgcmVsZWFzZTI1LW1haW50Cis1NDM4MyA1MTRhZWZmNjNjOWZmYjU1MTEwMDk5N2RiNGJiYTZlZjNkMGFmNzhiIHJlbGVhc2UyNS1tYWludAorNTQzODYgNjI4MDU1MmMxMjk3MjNlMzdkN2IzODhiNGI1ODI2NjFhMThiZWYzYyBsZWdhY3ktdHJ1bmsKKzU0Mzg3IDk5NDNhZWE0ZjJkMWRmMjJjN2E2MGNlMzNjOWFiOWRjZGE1MzY0ZmYgcmVsZWFzZTI1LW1haW50Cis1NDM4OSBiYmNlMmQ4ZmY3M2Q1NGUwZjk3NzkwYTI2Y2UzOGFhZTRkYTQ0MjQ4IGxlZ2FjeS10cnVuaworNTQzOTAgNGViNGNmYjYyNTRlYmI3YjhmM2YwYWMyNDliZDEzZjdhNWRkNjRlOCBsZWdhY3ktdHJ1bmsKKzU0MzkxIGQxNTVhZTYzNjcyODQ4ZWFhMTZiZTA2ZGM1NzAxM2E1MjZjNmI3ZGMgbGVnYWN5LXRydW5rCis1NDM5MiAwYTZjNTEzNWQyZGVmNDk4ZTgyOTU4NzExMzQ4YzA4Y2ViZTQxNzlmIGxlZ2FjeS10cnVuaworNTQzOTMgZmM1MjdlYjk4ZGNlNjg1NWNhOTM5N2Y2ODE0ZDMxMDUzYzJmNjRjZCByZWxlYXNlMjUtbWFpbnQKKzU0Mzk0IDM3NmI0MjM1ZGQ0NDQ0ODFiNzg2NGYzNWQ4NjZhMmZiNjM2M2RhNWQgbGVnYWN5LXRydW5rCis1NDM5NSA0YWNiNDVjMjk3ZWQxZmI2YjhlMjlkNTM2YTBhMzUwOWE3MWNmMzZjIHJlbGVhc2UyNS1tYWludAorNTQzOTYgOGQ5N2RlZTZkZjY0NDQ0MTZlM2NjNTZmNDQ2ZmEwZTJiZjVhMWNmYyByZWxlYXNlMjUtbWFpbnQKKzU0Mzk3IDQyMTdmMzg1MGYwYjhhNWI2ZTczNjAwNTljNjBmN2UzNmU0NjI1NmIgbGVnYWN5LXRydW5rCis1NDM5OCA1MmMzMzljMGNiMzhiYzY5ZDY3ODNlNWRhZWU2YTQ5NjhmNzAxYjA4IHJlbGVhc2UyNS1tYWludAorNTQ0MDAgYTM3N2Y5NDJlZTBhZGMxODk4NWY5NGI5ZTRlYzdiM2UzNmY4MjBhOCBwM3lrCis1NDQwMSBhMzEyYzI3NmE1ZTc5YmNmYjM3MGI3NDk5OTk4MzIyM2JkYjM3MDIxIHAzeWsKKzU0NDA0IGI0M2E1MmY3MTY5NmEwNjUzYjI5NTI2Nzk5YmM3YWE3YzBjNmRlZjAgbGVnYWN5LXRydW5rCis1NDQwNSBkODM1ODA5ZjQ1ZWM0NDkxNGY0YmNkMTA4MTlmZjZlZGJjNzE2ODU2IHJlbGVhc2UyNS1tYWludAorNTQ0MDYgMDE5NTFmNmI4MTlkMTNlYWIyM2I2N2U1YWExNDYzNGQ2Y2Y4MGUzNCBsZWdhY3ktdHJ1bmsKKzU0NDA3IDk0MjA1OTg2YWQ1MzA4YTk0M2RmMTc4M2E2MjEwM2E3Y2E3MzUzZjQgbGVnYWN5LXRydW5rCis1NDQwOCAyNjkwZGU0YmVhYTEzZGE0YWNkOTZmMTBjZjEyMjc3MTZhYTk0YjI0IGxlZ2FjeS10cnVuaworNTQ0MDkgNjQ1MDcwYjgzOTQyNmJmMWY5M2JjNzU4ODIwYjUyNGZkN2ZkODlmYiBsZWdhY3ktdHJ1bmsKKzU0NDEwIGE2OTc5YWM5NTMzZmFlNjY5ODc2YWMyYWQ5ZDE0NWUxMDczOGExNGUgcmVsZWFzZTI1LW1haW50Cis1NDQxMiBjNTdjZDU0NjYxMmRkODNlODdkZWMzMTdhYzQ2ODA5OTZiNjU5YTdjIGxlZ2FjeS10cnVuaworNTQ0MTMgMDZjZDYwYjBiZDE2NGM3M2UyMmE1ZDQ5MzUyOWU3NWY0N2RlZTY5OCBsZWdhY3ktdHJ1bmsKKzU0NDE0IGQxYmE4MTM0NTI4ZTI4YzBiYWIzYzRlNDkzNjM1ZjNmYjAyNDIyMzEgbGVnYWN5LXRydW5rCis1NDQxNSA3MmRhNDhkOTYyNTdmYzMwYjAzMmEyYjRmNWY5MTQ1YmMyMTFkNTgwIGxlZ2FjeS10cnVuaworNTQ0MTcgOGJiNTcwYWU0YzQ1YzcyZThlYzIyZjk5YzY4OGU3ODc2ZWVlNjQ2MyBsZWdhY3ktdHJ1bmsKKzU0NDE4IDc1NDljNGIzYWEzNmEwMWQzOGVkMDU1ZmZmZWVjNTEzYmYwYzdlOWEgbGVnYWN5LXRydW5rCis1NDQxOSBmM2Q0Mjc0ZDA2M2QzMGJjYzgwOTYwMjA0NTEzMzdkNTJjODE4ZWYwIGxlZ2FjeS10cnVuaworNTQ0MjEgZWJlNTJkYmMzNTUzZjdlZTYwODlkYzNjY2VhODFhNTllYjdkZjI1OSBsZWdhY3ktdHJ1bmsKKzU0NDIyIDkxMjY4Njc4ZDU3Zjk2ZDUxMDBjMjY0MTUxNWRiZTllN2JkNmJlNDQgcmVsZWFzZTI1LW1haW50Cis1NDQyMyAxMzczYTgzMDgzYmIyMTNhOWZjYzM2YmExODE4YzAxNjZlZmM4ZTA2IGxlZ2FjeS10cnVuaworNTQ0MjQgYTJhZTI0ZmZhNjBhOTAzNTU4NTE4Y2IwZWQyNDQxZWJkMjlkY2M5MSBwM3lrCis1NDQyNSAzYzczYThhMjA4Mzk1ZmM4Zjg5YTUxYTA5Zjk3MjhjY2E2ZDgzNzhkIHAzeWsKKzU0NDI2IGUzYmE2MGRlM2Q4NDJlMWQ3NGMyMTA0YjI3NjNlNjY4MzY5OTZmMDYgbGVnYWN5LXRydW5rCis1NDQyNyAzNDNiZTM5NmJiZDdjNjEyOWM0NjEyZjU5N2U2YzI2OGVkZWYxNWQ3IHJlbGVhc2UyNS1tYWludAorNTQ0MjggMTlmN2ZmNDQzNzE4ZjdhOWRhMWFlYTllZGJmMDBhMTM1Zjg2MDg4MyBwM3lrCis1NDQzMCA1ZTI0ZjYzNmFjNzU3NmU4YjM1ZmRkOGQ4NzkzYmIxNTRhMWVkMDgzIHAzeWsKKzU0NDMyIDA3MTAxNmM3MjkzOTJlNTUzY2EzYzlmODlkMjQ4YjkzODAwMjFlYjAgbGVnYWN5LXRydW5rCis1NDQzMyAxZjg0Mzg5MGE0ZTYxYjQ3MTVkMmMzYTE0YTVlYzJiMTVkZGMwMWU0IHAzeWsKKzU0NDM0IGIxYTE4YzdlZDVjYTY3OWFlYTg4ZjA3NDUxMzE4ZWM3ZDY2YWJjNTggcDN5aworNTQ0MzUgMTZmZTkzNmY4OWIxOWE1NTExMjM0MGVjNWQ0YTg4ZDA3N2I3OGU4MCBwM3lrCis1NDQzNyA4ZDc5OWE5OWNmNjhmNGQ2OGU3M2E2M2ZkMTViOWExNjFjMThhMTg0IHAzeWsKKzU0NDM4IDAzN2ZlNmE0NDRkMmZlOTgyNzRlYmFhY2VlNGM3MWQ5MDU5YWZkN2QgcDN5aworNTQ0MzkgOGQwNmMxMTIxYjMzMWE1M2YyOTI2MDMwZjQwMDYwZjllNzkyODUzMSBsZWdhY3ktdHJ1bmsKKzU0NDQwIDZjOGMzM2E0M2ExNTU1YjgxZWNlYzkxMTBmNWVkZjBkMjQ5NTkwYmIgcDN5aworNTQ0NDEgOWYwN2Q0MTBjNTU1NDY5Njc0MjU5ZTI2YTc4ZTQ1MjFkYjU1MDdhYyBsZWdhY3ktdHJ1bmsKKzU0NDUxIGM3YzI3NTRmZjJkNmRkYjlhOTBmMTgyNzcwZTdhM2I5YjIyZWZhZWEgcDN5aworNTQ0NTIgZjk5NzNhNmUxYWZlMDFlMGZiM2JjOTdkN2E0MGZhMDFmN2QxNzllZiBwM3lrCis1NDQ1NiA4ZDI5NzgxNDI1OTMzODlmZWE0Njc2OWE5OGNjYjU3OTYwZGJmNzlhIGxlZ2FjeS10cnVuaworNTQ0NTcgMjM2YWYyMTYxZWI2NzhhZDQ0ZGU0MWJkMWM1OWYzOWNjMGJjOWE1OSBsZWdhY3ktdHJ1bmsKKzU0NDU4IDYwMTgxOTRhZmJiZGUxM2UxZmEzZDI0ODg4ZDdjMDQ3ODE4MWFmNjkgbGVnYWN5LXRydW5rCis1NDQ1OSBjOTk3ZTkwN2M0YzY3MDYwZDgzODFhNzZhOTExNTM1ZGNlZTU3ZGJhIGxlZ2FjeS10cnVuaworNTQ0NjAgMzA3ZTVkNDE2NGYzYTNiYjEyMTUwYjcwN2JhZjE5OGM2ZmQ2MjJjMCBsZWdhY3ktdHJ1bmsKKzU0NDYxIDVhNzcxYjRhOGI3OGNjNDNkNzU2MjBmNTk3ZDIyYjdhNjc5MmM0OTIgbGVnYWN5LXRydW5rCis1NDQ2MiA0NTY2OWM0MTRkYjQ1NTY3NTUyNDZlOTcxMGJiZWM1NTU0ZjczMzNkIGxlZ2FjeS10cnVuaworNTQ0NjMgYjhiMTdhMmZhY2U1YWFmM2NkN2Y3MzkwY2I3YzM4YmViZmRmYWY5YyBsZWdhY3ktdHJ1bmsKKzU0NDY0IGI0M2EyZGE4MzJhNzBkN2E4OWMyZmI5Y2FhNjMxNmNmNDZmNWQwNzIgcmVsZWFzZTI1LW1haW50Cis1NDQ2NSBlYzZmYjA5MTAzOWI0NTNjMGMwZTkyMWZlYTQ2ZWM3ZjFmMTBiZGNkIGxlZ2FjeS10cnVuaworNTQ0NjYgNTBhNmIzM2M5ZDJjNWMwNzEzMWEwOWMxZjg3NTdjYTY2NmU5YjEyMyByZWxlYXNlMjUtbWFpbnQKKzU0NDY4IDlkMGMwNTQxMTczNDgzMTQwMDllNTg5ODE1NDAyMWU4NDk0ZTgzYmEgbGVnYWN5LXRydW5rCis1NDQ2OSA3ZjI5YmUxY2VmYmExMjU2MzQwODFjMzEwYmRlMmEwODM5NzRlNTZhIHAzeWsKKzU0NDcwIGUxMmM1MDRlNDY2YjViNmU5ZjJjODYwYmM3MDcyMGJiZTNiYjc2ZWYgcDN5aworNTQ0NzIgZjI5ZjFhOGI3ODY5MmQxY2ZmMTkzNmUwYTA0MjAyMGE2ODU1MzhiYyBwM3lrCis1NDQ3OCA4ODEyNzE4NjY5ZTE5NzkyMjEzY2VhNjg2OGYzMzRjNDRlMDM3YmE5IHAzeWsKKzU0NDc5IGI3NTJhMWUwOTQ0YjQzNjA4ZWIzODAxOTRlZDZmYzY0ODZjMDZlNWIgbGVnYWN5LXRydW5rCis1NDQ4MCA5Y2YyMmM1ZWVlM2Q3ZmEwMDAxMDIyMzgwYWY3ZjM5Y2NhMDE4NjNiIGxlZ2FjeS10cnVuaworNTQ0ODEgMDhkMTYxODNhOWMxNTA1MjJhZTZhZTdjMGYxNmE1YmNmNjU0N2ZiOCByZWxlYXNlMjUtbWFpbnQKKzU0NDgyIDFkYzRjNGNlMmRiOWZmMDIwZjJiOTIwMzk5ZjQ2ODc4YzhhYjEyMDQgbGVnYWN5LXRydW5rCis1NDQ4MyBkMTZhYmU1YzkyZGViZjU1NTE2ZTkwYWU0ZjU5M2NhZjU4YTBjOTdmIGxlZ2FjeS10cnVuaworNTQ0ODQgODUyYzk4OTZmZTkyMzY1MWFhZThmZDU2MDA0N2Y3ZmJjMTBhMzYwMyByZWxlYXNlMjUtbWFpbnQKKzU0NDg1IDQ1OWUzNmIyZWE0NTFmY2RlMjIwZmMwZmEyNjNiNmQ1ZmM4NWVkNjEgbGVnYWN5LXRydW5rCis1NDQ4NiA1YjcxMTYzMmNhZTEzMmFiOGZkYzNkNWU1YjUyYmU0YmRmYTk3Nzc3IHJlbGVhc2UyNS1tYWludAorNTQ0ODcgY2I2ZWIxMzJhY2NmMjY2ODk0ZjBiMWRmMmFiZDhlN2NlYmE2MmNkMSBsZWdhY3ktdHJ1bmsKKzU0NDg4IDczOTNjNzEwZDRiYmJlZGQ5YTIwN2UyZTY5MmUxOTQyNzQxMGU0Y2QgcmVsZWFzZTI1LW1haW50Cis1NDQ4OSBlNTViZmIxYWMxZTdjY2FkZWEwNjM2YWQ4OTI5NzZjMWQ0NjE0Y2RiIGxlZ2FjeS10cnVuaworNTQ0OTAgNWJkOTY2MzYyMGJjOTc4YTEyNzk3MmE3Y2U3YWJjNmYxNjQ3YmJkYiBsZWdhY3ktdHJ1bmsKKzU0NDkxIGIxZThiZmRmZTRiNzk1YTAyZGVlNmM3ODVkMTRkOTQwMTRmYzllYzAgbGVnYWN5LXRydW5rCis1NDQ5MiBjY2M0NDdhNmQ5MTY0OGY3MTE2MjExNWY0NWQwYWQ3Nzk5YWRlY2IxIGxlZ2FjeS10cnVuaworNTQ0OTMgZDI1Zjc3NTc0ODY2MzFlODQ0YjFhNGY1MGU5NzJlMDE0YTliMzlhMCBwM3lrCis1NDQ5NSAxNWE3ZTBiN2U0MjU2YjVjOTBmOGMyMjU4YWRlZDY5ZmNkYTU3MDEzIGxlZ2FjeS10cnVuaworNTQ0OTYgZjg4OWY2NWE0ODYxYmViNWZjMDE5MTdjYzJkNWFhOTU2NTNkNTRhMCByZWxlYXNlMjUtbWFpbnQKKzU0NDk3IDQwOGRmYzdlMzAxODRjMjE1YTA2Mzg0YTFkNTlmODFjNjNjNGI0MzUgcmVsZWFzZTI1LW1haW50Cis1NDUwMiBkNDI4ZTIxZDZlYWY1ODA2NGVmNGNhYWY3MjNkNmY3NWM2Nzk2ZjFmIHAzeWsKKzU0NTEwIGJmYzRlODA0NjEwMjM4YjhiMDBjMzkyZTNkYWNiMjczNjMxM2YyYjMgcDN5aworNTQ1MjQgYWNmOWE1NWM4ODVkNzkxMjc2OWU2OWNjNjgyZDkyMzEyYmE4ZWQyYiBsZWdhY3ktdHJ1bmsKKzU0NTI1IDUyZTJmY2Q1M2FkMzM5NjYzZWViZGFmZmNiMTM5YmI1ODAzZjE4NGMgcmVsZWFzZTI1LW1haW50Cis1NDUzMiAxNzU3ZjgwYjVmZGJhZTQ3OWRkZjYwNDNiNzA5OTM5NzViNmJmNTIzIHJlbGVhc2UyNS1tYWludAorNTQ1MzMgYWZiMWM2Y2IyYzg4NDIyOTE0ZTY4YWZhMDFiZDBlODVjY2Q5Zjk0ZiBsZWdhY3ktdHJ1bmsKKzU0NTM3IGZlMTg0MmI0OGI2NmZmZWM4YTY5ODY0OGZhYWU3MmZhMTAyMGY0MGEgcmVsZWFzZTI1LW1haW50Cis1NDUzOCA0MmViNWJiNzc2NjE1N2FmMzUwYmE1ODAyM2E4YzRkZmU4ZjI2ZDg3IGxlZ2FjeS10cnVuaworNTQ1MzkgOGRlYmNlMmM0ZmIxYjRlODcyOTRiNWM2YTM2NTkyNGU2NjhlZTM2OSBsZWdhY3ktdHJ1bmsKKzU0NTQwIDUxZmJmMmE3NTU0OGIxYTY0MDA4NzgwNzZhMDc1ZmMwMTU0ZTQxZTggbGVnYWN5LXRydW5rCis1NDU0MSA4ZjFjOWU4ZWZiYmJmZDE5ZjhmMjliZDFkNTUzZGRjNmIzOWY0Mzg4IGxlZ2FjeS10cnVuaworNTQ1NDIgZDg3NDg2NzNmZDlmOWE1ZWFhNmI3ZTc5MWViYzYxMGU1YjViNzlhMSByZWxlYXNlMjUtbWFpbnQKKzU0NTQzIDAyNTc0ZjQ4NWIxNWMzZWJkOWZjMWQ2MmIwZTk5OWJjNmY1OWZiZmYgbGVnYWN5LXRydW5rCis1NDU0NCAwZWE1NTk1ZDc1ZGFkOGEzYTMzNTFhMTIwY2M5NWYxMjhlMDk3NTEzIHJlbGVhc2UyNS1tYWludAorNTQ1NDUgMTJjNzA1NTgwNzRlN2NkMGViMzI5NzM1ZTQxYjE1ZTcyZjVkMDg1ZiBsZWdhY3ktdHJ1bmsKKzU0NTQ2IGE3M2FhMGI4MjFjYTU4ODRjYjNmMDYyNWUyNDhlZmQyY2I4Y2FhMzkgbGVnYWN5LXRydW5rCis1NDU0NyAzYjU2ZTdlODk0NzAyZTBlYzBkYzAyNWUyNWE1NDE3OWNlOTNlZTJjIGxlZ2FjeS10cnVuaworNTQ1NTMgNzRkMjliNjM1NDE2Yjg5YWJjNTBjYWNiZDBhNTAyYWI3M2EwMzcyYSBsZWdhY3ktdHJ1bmsKKzU0NTU0IDNmZjZkM2ZhODEyMjliOTBlNjJiMzlmZGM2MThjMjEyODlhMGVjZjEgcmVsZWFzZTI1LW1haW50Cis1NDU1NSAxODk5NWJkOGJjOGIzYWE2Yjk1OGM4ZWIzZGE4MTljZTI2NjFmM2JmIGxlZ2FjeS10cnVuaworNTQ1NTYgMWMzZTBkMmMzNmRjOTc2MjNmOWE4Y2MxZjUzZmNlN2NjY2UwNjg5NCBsZWdhY3ktdHJ1bmsKKzU0NTU3IGVmNzBjZDRkYmE1MGI2NTc0YWQxYTViNzExZGUxNTVlYzRhNTU5NzIgcDN5aworNTQ1NTkgMzhhM2RhMDI2ZDVlNTc0M2RlNjdhNWVkOGIzNTkyMzQzZGMwNTA1NSBsZWdhY3ktdHJ1bmsKKzU0NTYwIGU5MzhlOWVmNDM0YjgyZTYxZjhiODVjZTAzMjIzZDI3MGFiOTA0ODQgcmVsZWFzZTI1LW1haW50Cis1NDU2NSAzMmY3MmU1NzYxOGNjMTViMmVmNjEyY2Q0OGI4NmMxZjYzM2YyODhiIGxlZ2FjeS10cnVuaworNTQ1NjYgOGZjNjM5NmYwNzZhNWVjYmIyMWE1M2M1OGY5Yzg5NTc2ZGEzZmJkMyBsZWdhY3ktdHJ1bmsKKzU0NTY3IDY1MGVlMTc5ZjNjZWMyMGE3YmFlNmRmZjIyNDRhMzhhM2E1YTIzMWIgbGVnYWN5LXRydW5rCis1NDU2OCA4MjU4ZjI1ZDQzZDc5NjQ5MDM0ZTVmMzZmNWQ3MWJhYmRjMTM5MGZkIGxlZ2FjeS10cnVuaworNTQ1NzAgM2MwOTEzYjY1ZThkNmQ1NWU3ZDYxNGY5ZDhkMzk5Y2Q5NmFkZDZhYyBsZWdhY3ktdHJ1bmsKKzU0NTcyIGViMjVjOGUyYjRhMWViZTI0NmEyZTY0YWJmNjIzYjI5NGYyZjExMmMgbGVnYWN5LXRydW5rCis1NDU3MyBhMDdmOThjZmZiZGZlZjk1MTM2MjY1ZTFkNjRlZGVhZGI4ZGE5ZGQ5IGxlZ2FjeS10cnVuaworNTQ1ODAgMmJlMTMzMDEzYjcxY2FiMjgzZWY0MDkzZDc3Y2FkNTRlODgxZjM3MiBsZWdhY3ktdHJ1bmsKKzU0NTgxIDhiZTc0NGQ1YzU2NzM4OTIzNTViY2NkMGY0ZDg0NmU0ZmEyMGZkNDAgbGVnYWN5LXRydW5rCis1NDU4MiAwM2Q1ZGI4MzI1ZjQxMWE2Yjc4M2EwYTZkOTliM2RlNzZlMjMyNGNiIGxlZ2FjeS10cnVuaworNTQ1ODMgYTMxYjBiMThjYWM2MmQ4ZmUzNzM1ZjQ1YzIxN2MwNzRiY2FlYWZhYiBwM3lrCis1NDU4NSA2NTMyNmEzODE1Zjc2MGFlODg3NDE5OTllNDcwYTgyZmQyZmZiZDM0IGxlZ2FjeS10cnVuaworNTQ1ODYgZTQ4OTNlZTlhODg1Nzk2NDAwNTZmNDAyMTRjMDFhYmExZWM2ZjA3ZCBsZWdhY3ktdHJ1bmsKKzU0NTg3IDUwOTVhZmVlMDgwZjEwMDlhNTgyOWM4YWQ3NDA3ZTczYWRjMjY2ODggcDN5aworNTQ1ODggODM0ZGE1MmViMmE0ZWJlNmY4MGUwNTlkMTEzYWNmMWIwNDhkMzI4YSBwM3lrCis1NDU5MiA0NWEyNzYxYzliMTZjZTNiM2U0N2IzZThkOWJmOGU5MmQwYTJmMjllIHAzeWsKKzU0NTk0IGQxNDRmODE1NzRjMDg1ZGUxNWI4MjkxYzBiMDBiZjViY2NkYWI3MjIgbGVnYWN5LXRydW5rCis1NDU5NSBkNDE2ZDk3MTcxODE1YmE2MjhlNDU3MTE1YWEyNDNkMWZkNmJiODU1IGFtay1tYWlsYm94Cis1NDU5NiAzZTZkMDMyMTdhMDJiMDU5OWY2N2UzYTM5NjhjNGQ0Y2Y0MzgxY2I5IGFtay1tYWlsYm94Cis1NDU5NyA0NmFkMjE5Mzk2OGVmYTdhMjhmY2M1OGQwNmZjNzM2MDA0MzNkZDg3IGFtay1tYWlsYm94Cis1NDU5OCA3MzA1NDVmMjQwODZkZDk4MTkzNzY1OGYxY2QxNzAwZjcyZWEwODFkIGFtay1tYWlsYm94Cis1NDU5OSAyZDI5NjY1Njc5ZTY3NDY2MDM0NjUyNDUzNmEzYjRlZDIwNTFjYjNkIGxlZ2FjeS10cnVuaworNTQ2MDAgZWZkY2U4ZDhkYjk5MDAyOGE0MTJkYzc3MThlODQ1MzBhYmYxMThhYiBwM3lrCis1NDYwMSBmOWRmYmI1ZDM1YzJmMzJlNjIwZjRkNDI4YTdhMWNmNWNhNjgwYzgyIHAzeWsKKzU0NjAyIGI4OTdiNzdhMDA0ZjdhNThkODY3MjBlOTI1MjMyMTlhZWYwM2Y0NTMgcDN5aworNTQ2MDMgMzllNDM4NmQ3MWY2NTI1YWI2NTQwNzgzNzNhNDU2N2ZhMjk4MGVkZiBsZWdhY3ktdHJ1bmsKKzU0NjA0IGY1N2U4ZTMyNTQ3NWVjNTA2NjM4YjA0NjUzMGU5MzU0OTVkZGNjZGYgbGVnYWN5LXRydW5rCis1NDYwNSA1YThjYTlkZDg5ZGIzNDdjZmUyODdmZTVkOTNlMDZmNmY3MjFhMzZlIGxlZ2FjeS10cnVuaworNTQ2MDYgZTMzNDlkNDEyNjgxZWU2ZjBmNDE4MmIxZWZlY2QwNWJjZDk3MmVlZCBsZWdhY3ktdHJ1bmsKKzU0NjA3IGZhMjE4MWJkMjcwNDliZDhmYTNjOTEyNDI0NGY5ZGJjOGM2YmVjNTUgcmVsZWFzZTI1LW1haW50Cis1NDYwOCAzZmQ4ZjA2NTc3ZmZmOWE1MTA3MjBhOThjZTJjMjc2MDY1YTAyMzMxIGxlZ2FjeS10cnVuaworNTQ2MDkgNTE5ZTcyZDYzMGQyMDg3Mzg5NmU2ZTRkNjdhMWE4NzE3MGY1MDk1ZiBwM3lrCis1NDYxMCA4OGMyYWM1OTA0NDFjMmU1M2NjNjA2Nzk0Y2Y0ODEyNzA0MmYzOTBkIHAzeWsKKzU0NjEzIGNjZGM1YjNiOWIxMTdhYzlkYWI0ZWRhMDg5ZGY0ZGEzYTc2Y2MxMmMgbGVnYWN5LXRydW5rCis1NDYxNCAzNzhiMmY0N2U4MDhmNzEzMTFhMDZhZTE0ZGZjZGI0ZDY4ZjY5MWNhIGxlZ2FjeS10cnVuaworNTQ2MTUgNmY5ZTY5M2Q3NmExODQ4NDhhNGZjMmQ5Njg0NDJlYmU0ODVhZmFhZiBsZWdhY3ktdHJ1bmsKKzU0NjE3IDhlM2M3YTVhY2JjZGYwMDE0N2YyM2JhMjBiMzI0ZWE2MWI3OTU3MzAgbGVnYWN5LXRydW5rCis1NDYxOCA4M2UxYjA2MTE3MTQ2YzZkZjg3YjFhMGExMWYzYTg0MzFhOWE1NTNjIGxlZ2FjeS10cnVuaworNTQ2MTkgNGU2MGUzYTYwZjUwNGNiM2MxYmQzOGI2MWQwOGJmNTAxNTdkYTcxYiBsZWdhY3ktdHJ1bmsKKzU0NjIwIGE1MDc1YTUyNzNkZjc4ZDRiMTk3ODQ0NzI4MWYyZWFjZTQwYzVkNjIgbGVnYWN5LXRydW5rCis1NDYyMSBjZGIyNTc5OGNmMGJhMDVhNGRkNWJhOGVmMjA5YzdmYjI0YmE5MmM0IGFtay1tYWlsYm94Cis1NDYyMiA1ODQyN2UxZTUxYmRjNjA2ODlmZDQ4ZDdhODFiOTNjOGI1ZGViYWMxIHJlbGVhc2UyNS1tYWludAorNTQ2MjMgZGM2ZTlmNzljYzRhZmJmYzY4MDRhNmNjMDhkOGVkNzk2MjAwNjFiZSBsZWdhY3ktdHJ1bmsKKzU0NjI0IDUwMjYzMjNkOTkyODgzMzQ2MzU4OTkxNTQ3ZGVmYmE2NjY0MjlkYTMgbGVnYWN5LXRydW5rCis1NDYyNSA1NWVjYzNhNDU2ODY2Mzg3MmE3OTUzN2E2ZmI1ZDlkNzdjM2FkMjE1IGxlZ2FjeS10cnVuaworNTQ2MjkgYzFmNjdlMWVlZTU4YjYxOTMxMjc5MDYxNTNlOGZjOTlmMTI0M2VlOCBsZWdhY3ktdHJ1bmsKKzU0NjMwIDM4YTg2MTE4MWZkZDU4YzM1ZDllMzg0MzFmOTQwYTlkYzA3ZDIzYmYgbGVnYWN5LXRydW5rCis1NDYzMSA0MWRiM2YzMGEzZjlmMGQxYzExYzYxMGQyZjFhYTU4YzdiNDE2NWVjIGxlZ2FjeS10cnVuaworNTQ2MzIgZGI5ZWFkYzA3ODI2NDIzNjFiZjQ2Mzc4M2E5NjY5N2M1Y2QwNWYwZiBsZWdhY3ktdHJ1bmsKKzU0NjMzIGY4NjU1N2U1MDNmM2E3ZDEzZWFmY2FkZjAwNjYzYzFmMTU1OGM0ZWIgbGVnYWN5LXRydW5rCis1NDYzNCA5MzQ3ODc0NDEwMzg3OWE4NWI0MzFiMjM5MzI0NWE2NjI5MGE2NzMyIGxlZ2FjeS10cnVuaworNTQ2MzUgYzJiZjNkNjQ2ZWZmYTJiMzI5MDBmNTMzYTlkNzljNDM4YWRiNjhhMSByZWxlYXNlMjUtbWFpbnQKKzU0NjM2IDJjZThlODA1MzljZjc5MTYzYmRhYTA2NTVhNGQ1ZTBkYmNiNDk0NTggcmVsZWFzZTI1LW1haW50Cis1NDYzNyBmYzdmYmNmMmFlNTE3N2FmZGYyNTdjZGE2M2FkNDI4MjJhOGVmOGQxIGxlZ2FjeS10cnVuaworNTQ2NDEgZjIxOWJiN2U3NGM5MjE3MmE4YTliMzQwYmU1ZTU2N2QxZmZlMjg5NSByZWxlYXNlMjUtbWFpbnQKKzU0NjQ0IDdkZWU3ZjdkMjlmMDhjOWU4MDM3YmEzMGUyNzBmNGJlNGVkYjQ4YTIgbGVnYWN5LXRydW5rCis1NDY0NSAyMjExOTQyNDlmYTg2ZTNjNWQxMzE2YjFiNjk4M2VlNGQzNGY0YTI0IHJlbGVhc2UyNS1tYWludAorNTQ2NDYgYjViNzUwY2Y4NWMyMDk1NmU2YmU2ZmM3MjUzYjhhMjA3MmZmNmYyOSBsZWdhY3ktdHJ1bmsKKzU0NjQ3IDY5NmE2NjZkZmU2MTQxNjllNjU3YmY0ODAyNWVhMjllOThjODgwMjEgbGVnYWN5LXRydW5rCis1NDY0OSBlYTZmMmM1ZDI3NDkyZjJjNTViNTk3NzMwODI1MWExOTY2YmM0YWYzIGxlZ2FjeS10cnVuaworNTQ2NTAgZTk1ZDJiY2ZlYjQ2MzFlNjMyYTAzZjQ0MDUwOWRlY2VmYWZlM2FjYyBsZWdhY3ktdHJ1bmsKKzU0NjUxIGFjZGI0ZjNjM2Q2MzIyYTNhOTdiOTAxMGEyZDNjNTc1OTk4NDgwYzggbGVnYWN5LXRydW5rCis1NDY1MiAxYTVkYTA3OGM0MzVmMmY3NTU4MDA1YmQwM2ZlMmMzNzk4MjJjYjg2IGxlZ2FjeS10cnVuaworNTQ2NTMgOTBjNGMzZjA0MjA1NmFmYmVkYmU0NDYwYTlkYzkwZTQyYzljZmQ3NiBsZWdhY3ktdHJ1bmsKKzU0NjU0IDM1YmRjNjFhYzhlYWRlOWYyYmYwNGViOTQ5MjUzNjJlN2E3MTJjMDEgbGVnYWN5LXRydW5rCis1NDY1NSA0N2QwNWYxYWViZGRmYmRjMmUwMGRjODVlNTJjY2Q1MmE3MDFmM2IxIGxlZ2FjeS10cnVuaworNTQ2NTcgODFlNThmMDEwMWRiN2ExMjE0ZTkxMDU1MDcyZjhhYzJmZDEwNGJmMSByZWxlYXNlMjUtbWFpbnQKKzU0NjU4IGY3NjRhNzU1MjE2MmVmYzMwOTM4YjdlZDg4ZTUxYWNkYzMxYmNhN2EgbGVnYWN5LXRydW5rCis1NDY2MCAxMmZmMjA5NDhhMDIyNTczN2M1MjRkZGE3MjI1ZmFjMzcxYjM1NzgxIGFtay1tYWlsYm94Cis1NDY2MSA2NzYwZjM4ZTllZDY3NjFiZGY2OGFhOTEwMDQ4OGRjMGVjYTk2MTMyIGFtay1tYWlsYm94Cis1NDY2MiA2YTNkZDFjNGE3ZGYwMTQxNTU0MWFkOTNiY2E5NmY3M2FjMjZjMzBlIHJlbGVhc2UyNS1tYWludAorNTQ2NjMgNGEwMzg2MGFlMDhiNTcwN2RlZjhjMTY4ZjcxZWY5YWVhNjk2MWQ0MiBsZWdhY3ktdHJ1bmsKKzU0NjY0IGVmNWQzZTUzOTM4NDcyMjA1Y2VlZmU0MGFiYmMxYzQwNGFjMzViYjcgbGVnYWN5LXRydW5rCis1NDY2NSA5OWJmMTQ1NTU4ZDM1YjI1NTljOGU3NzJlNzFiMzI3NTE5MTE0YzAxIHJlbGVhc2UyNS1tYWludAorNTQ2NjYgNDhkOGQ1ZDMxN2FlZTNhYTJjYzY2NDhlY2RlNjFkNDA2OTVhNzE0MyBsZWdhY3ktdHJ1bmsKKzU0NjY3IDM0M2VlZjM0Mjc3NzNiZTA5MDIzMjBmM2RiOTEzNTZlYjUxZjI1ZTggcmVsZWFzZTI1LW1haW50Cis1NDY2OCBlNjg1YmZhNmI0ZWFiODc1MDI0ZDQyMTc1YmQ1NDA4M2Y5MGE2NmQxIGxlZ2FjeS10cnVuaworNTQ2NjkgZjcxZmVlYzdkNTQ3ODlmOTRhM2VlOTlkZjllMzc5ZmQ1NDZmNTU1OCBsZWdhY3ktdHJ1bmsKKzU0NjcwIDg5MGJiOTAwMGNlNTU1MzNmYTZmNTU3MzNmYjYwYWFlMmE4MTBiMGIgcmVsZWFzZTI1LW1haW50Cis1NDY3MSAyMmExNjdjNDY3OGMyYTg1ZWY3YmE2ZGQ5ODQ4YzQ3OGE3ZWMzZDAzIGxlZ2FjeS10cnVuaworNTQ2NzIgODUxMTJkZDUwMDU5NWVlMjMzZGY1MzM2Y2E2MjE5YmJhNDY5MWQ2MiBsZWdhY3ktdHJ1bmsKKzU0NjczIGNmYWM2NGEwMmEzZDgzZTE2MzQ0NGExZGNjZTI3MzYzYTA5ZTQ2ZWEgbGVnYWN5LXRydW5rCis1NDY3NCBjNzM4MTgwNDQ0N2JjM2Q0MTRiMGY5MzNjNDBhNGU0NjM3OTg3NGM0IGxlZ2FjeS10cnVuaworNTQ2NzUgYWMyNTVhNDJlYzBlMWE5MTQzMmZhZGMxYTljZGQ3ZmQzNTkzMTZjYyBsZWdhY3ktdHJ1bmsKKzU0Njc2IGQ0MWQxYmEyMDljOTQyYWUwNzFhNjc1MmIzYjQxMWMyMGI4MzBhNDQgbGVnYWN5LXRydW5rCis1NDY3NyBjYjZjY2U0ZDQyMzJiZjQyOGQyNDBkY2M1ZWRlN2VkMTgwMTQ3NWZmIGxlZ2FjeS10cnVuaworNTQ2NzggZTFhYjI1ZmQ1YmFkODE0NTVmNGM5NGM4NGJlMTM0NDNkNDZiYjdhZCBsZWdhY3ktdHJ1bmsKKzU0NjgxIGRkN2M2OWJkMGM1MmExMzViMzEzNjc0MzVhNzM5MmYxODljNDIzMTIgbGVnYWN5LXRydW5rCis1NDY4MiBlN2Y3OGEzN2FlNTBiMGI5ZjI5MTMzOGIxZThjOTE1NmFjNzhlMDEyIGxlZ2FjeS10cnVuaworNTQ2ODMgYjdlMzc4ZTlkMDJkNTVjM2U4ZGIyY2RmOWRiYzgzNmFhMmJiNTEyYiBsZWdhY3ktdHJ1bmsKKzU0Njg0IDU4NmE3ZTg3NzUwMGUyMGVkZGMyNmU1YTdmZDVjZjk1MDNkYWM0MDQgbGVnYWN5LXRydW5rCis1NDY4NSBkOGNkODhmOTMwOTgwZGUwZjg2ZWNiMDUzNGE0YzAyYWI5MjQwYmQ4IGxlZ2FjeS10cnVuaworNTQ2ODYgYjAwMWI2NTQ3OGZhYmU5ODM2MTA4MDRhZDg5OTM5MjUxN2ZmZmYyOSByZWxlYXNlMjUtbWFpbnQKKzU0Njg3IDQzMjUwMDE4Mjg1YzJiYjIxOTkxODJjYzE0YTEwYzZhYzhjMjhjYzUgbGVnYWN5LXRydW5rCis1NDY4OCA3MTJhMTVlZmNmMTliNzM2OTEyZDNlYWYwMGVhM2JlNjRhZmVkYzA4IGxlZ2FjeS10cnVuaworNTQ2ODkgNTEyZjU2YWZhNGEwNTEzZTcwZDQwNjA1MGNhODcyM2JiNWM4MDFiNiBsZWdhY3ktdHJ1bmsKKzU0NjkwIDRjN2ViYzM5N2Q5NDdjNzEyNmQ3NmJkYmEyMGQ3ZWEzYzQ0ZjIzM2QgcmVsZWFzZTI1LW1haW50Cis1NDY5MSA4MTIwMjdmMWVlYTUzNWEzYTMxOTFkN2UwZWNkOWFmYWYyN2YzOGMzIHJlbGVhc2UyNS1tYWludAorNTQ2OTIgMjhhZWMxMzU4ZjU5NGUxNGJmN2JlNmQ4NmIwZGFiNTI1MTVmYzJkNiByZWxlYXNlMjUtbWFpbnQKKzU0NjkzIDQ3NzdjNDAwN2I1YjE5NDQyMzk1M2Q0MWIxZTVlNmFkYWFiYTZjNWQgcmVsZWFzZTI1LW1haW50Cis1NDY5NCA4MTcwZDQ0ZGQ5MDQ4OGRlMDI3OGU1MTFjMDM3ZGIzMWIyOWRjNWE2IHJlbGVhc2UyNS1tYWludAorNTQ2OTUgODBmZjc1ZmEyNzU0ZWIwZjhiNDVjMDQ3MmU0YmYxMTdkNjFjMWM0NSBsZWdhY3ktdHJ1bmsKKzU0Njk3IDlhNTBlMmI2YjY4NTc0N2Y4ZjkwNTc1NGM5MjdjMWI4NWI2ZjlhNDIgbGVnYWN5LXRydW5rCis1NDY5OCBlYTZmYmY0MDRjMzRkOTYzMWI4MzA3NGNhNDE2Y2VlYWQ3YmE4ZWZhIGxlZ2FjeS10cnVuaworNTQ2OTkgNTgxZDEyN2U4MjJiNzE5NDZlMTY0ZWM4N2IxYTE1NjY5MWJkMzVlYSBsZWdhY3ktdHJ1bmsKKzU0NzAxIDkxMjAyODEyNDFiODJjZWMxMDFlYWRjYTVhNjliNGM0NzE1MWM1NzYgcDN5aworNTQ3MDIgYmFkNWY4MzI4MDlmYzI5NDE5MTNlNDBmYzE4ZDliMDJlYTAwYzBlYSBwM3lrCis1NDcwMyA1OGQ0OWNhZTg4N2YyZjlhM2RmYmQ3NjEyNDE5MThkZmE1MWM3ZDY1IHAzeWsKKzU0NzA0IDNiMTM5NmIwMTIzOTM4MjAyOTBmYzMwNTA4ZTEzZTE0OGY0OWFlMTYgbGVnYWN5LXRydW5rCis1NDcwNSAyMzQ4NjlkZDI3ODRlZDBmNmZmYmJhY2IyYTUwOTlhZTMyOGY5NWJmIGxlZ2FjeS10cnVuaworNTQ3MDYgOTQwOGRjZDNjZTg4ZmRmMDJmMWJmODc0NDE3YTcxYjIzYzk3NmY2NSBsZWdhY3ktdHJ1bmsKKzU0NzA3IGM3YjgzMGM4NmY0MmJiZDM4MWNmZjYyZjE5MmM4NTQ0MjcwMGY4YjUgbGVnYWN5LXRydW5rCis1NDcwOCAwMjBmZDZkZTY1MjVkYTM0YzA2YjAxZTJlY2YxNzE5MGYyZjg1NmZkIHAzeWsKKzU0NzA5IGM1NjYwMDU1YjQyNWRkYmFhZDZmYTRiNzk0OGVkMTcwZWMwNjJjZjYgcDN5aworNTQ3MTAgZDhiMTQ5OTRkODcwYjY4ZTRkMGI3NTlkZjEyMzZjOGY4M2I1Y2FmNiBwM3lrCis1NDcxMSA4MGY1ZWUyMWU1NDU1ODdkZDUwYmVmM2NlZjBiMzI4NTg0ZGMzNjc3IGxlZ2FjeS10cnVuaworNTQ3MTIgY2MwMGJjZTZjNTlkMzdhMzc4NDkzMDc2NWUxODYxODM2MGY3MzEyZiBsZWdhY3ktdHJ1bmsKKzU0NzE0IGI5MTI0YzBlZjE3YTMyMThkZTQ3M2M0NmI3OGU2NmNkZGQ5OGViYWMgcDN5aworNTQ3MTUgYWY1MTFkMjQ0NjM2OTNjZjQ0MGQxMWM4ODYzOWJiYWRmY2Q5ZjkxMSBwM3lrCis1NDcxNyBlMjlmYTRhMWNiZDkzMWIzZmVhNzI1MzQwZWM2Nzc4MjExN2Q5YTVkIHAzeWsKKzU0NzE4IGE1NzA3YmY0ZjZkMTQzMzkyZWZiNjFjOGM0OTgwOWVhYzI2YTQ5OWQgcDN5aworNTQ3MTkgMzM5MDE1ZDk4Yjc4NjQyMjU3N2FmZjRiNTU1NTNkMDBlOTU3ZGQ5NyBwM3lrCis1NDcyMCA1MjJiM2YzNWQwZWI3ZGJiNjM3NTMyZGE3N2Y4NWUxNmJmNWMwNTQ4IHAzeWsKKzU0NzI2IDRkNTBmYWQ5NTc2ODIwNjJmNDQ5NzUxNDBkZjk0YjY2YmUwZWY5Y2MgbGVnYWN5LXRydW5rCis1NDcyNyA2NTczZWMxZTVkYzBjZGZmNGFiMjA2ZjdiOTk1ODYyYWMzZmUxYTc2IGxlZ2FjeS10cnVuaworNTQ3MjggZjQzOTFhYmU1YjAyMzQ1ZjIxNTZiYzQzNTdlNTkzMzEyYzBhMmY5NiBwM3lrCis1NDcyOSA4NTQzOTkyOTdmOTU3ZTg1MjUxMmZhNThlNWI0YjdhODU4OWFhOWVhIGxlZ2FjeS10cnVuaworNTQ3MzAgNjdmOTAwZDJmMmU2MjE0ZWM4MTFjMjU3N2YwNmVmY2ZlODkzZWM1OSBsZWdhY3ktdHJ1bmsKKzU0NzMyIGFlNGNlZDI4YTgzOTAyYmIyMWU5ZjMyZTUyNjU1Nzk5NTA3OTUyYzggbGVnYWN5LXRydW5rCis1NDczMyA0Zjc3MDE2MjU0YmM4NGJmNTFmZTI1MDdiYWZmMmY2NTM0NWY3OTAwIHAzeWsKKzU0NzM3IGM5MGQ3NWE1ZTE5MTE0YmM3YWFlYzJhNmNhZWZiNDRiNTg0MzczM2QgcDN5aworNTQ3MzggZDQxMDhhY2E4NzY0MjdhOWFiYTVlYjk5ZDMyY2MzMmM0NTcwNmZiOCBwM3lrCis1NDc0MCBiYTMxZTcxMjEwZDQ2OWQzMzYxNzg2Zjg0NzM2ZDgxNzMzMDBjNmRmIHAzeWsKKzU0NzQxIGU3ZDk3OTEwMTQzMDhhODc1MTlhOTM5YjNiOTUwY2I4ODFjNWI2NjYgbGVnYWN5LXRydW5rCis1NDc0MiA3YzY5NzJmMzdmZTM1MzIwY2MxZmJjYmMyZjU4M2I3ZmQ0NTIwYjU4IHAzeWsKKzU0NzQ0IDA0ODZkZWFhYWRlM2U0MGU4NmFhNWUzMThlNjMxNjJhMDRmOGFhOGIgcDN5aworNTQ3NDUgNDU2MWY2ZGEzYjdkMzk0Nzg2OGY1NTFmYmM3ZWRlZTk4ZTZjNjgxOSBwM3lrCis1NDc0NiA0MDExMGQwNmU4MmFlMjNiNjc5M2U2Y2QyMjljOWE5OTE3OGI0NDU4IGxlZ2FjeS10cnVuaworNTQ3NDcgMTVmMzRhZDQ2ODFiODg1NDVhMzc2YTVlZWU2ZjM3NmMwZTdkZjg3YyBsZWdhY3ktdHJ1bmsKKzU0NzQ4IDczYzAxNjY5NmE4MmY4NGJlYzdjNWQwMmYyZGNlNjgwNGMwMWIzOTcgbGVnYWN5LXRydW5rCis1NDc0OSAyNmNiY2Q3OWExNTMxMDE1NjUwM2U0OTliMjgxODA3YjNhM2MyZTc4IHJlbGVhc2UyNS1tYWludAorNTQ3NTAgMjhiYzdlZDI2NTc0NzMwNWE1MjYxMjQ3ZTVhMjAwMmY5ZmYxMDUxMyBwM3lrCis1NDc1NCA5ODFhMzFmZjE5NjZkZjMyNTkzNDlkMWVkNzZiMDVkMWZjZTBiN2FhIHAzeWsKKzU0NzU1IDAwZDlmNTBiZGMzMWFhOTRjYjE1YTI2NzAyYzY4MWM0MjA2ZGE0YzYgcDN5aworNTQ3NTYgZjM5MDc5M2U3NWRlYzNkOTdhODFmMDFiNjAzMjAxZjM3ZDY5YWZmYSBwM3lrCis1NDc1NyA0NmQwZjQwNTc3MDViMDk3ZTlhMTcwODcxZmQwMWE1YjYyMTFkZDA2IGxlZ2FjeS10cnVuaworNTQ3NjAgMGRmYTJhNTY0MDc2MGU2ODhmNTQ3YzRhNGMwY2FjNWM0ZmYzYjAxYyBsZWdhY3ktdHJ1bmsKKzU0NzYxIDM2NjdkMWE4YzkxNmYxYTNkYzgxYTkwM2UwY2RiZjgzMjZhNjdhYmEgcDN5aworNTQ3NjIgYTAxY2IzZGYzOGRkZjM0NzQxYjI0ODJkYTczZDk5N2VkZDIxMDg0YyBsZWdhY3ktdHJ1bmsKKzU0NzYzIGM0ZjQwM2Y0NTBlZGE2NWU5YTIxNmM3MDlhMzkyZjA5NDBlMDQwYTIgbGVnYWN5LXRydW5rCis1NDc3MiBjZWRjOGQ3ZDFjN2ZlYjUyYjI2ZmViZWQ5ZWNjNzljMjc1NTU2MTQwIGxlZ2FjeS10cnVuaworNTQ3NzQgODZjNDZkYzZhNzc0YWU5NzQ1YTUwNDhlNDQyOGY4MGFlMTc3ZjEzMSBwM3lrCis1NDc3NyA2NWNiNmIxZmEzOTUxZjM0NTA4MGQxYzgyYWI3MzdiNzlhNzRiN2ZjIHAzeWsKKzU0Nzg0IGMzNGQ3MDViODg0ZTRlOWYwNzMzNzliNTFmZTBhY2EyZTVmZWE1YzkgbGVnYWN5LXRydW5rCis1NDc4NSBjMGM0NDA3ZDM1MzFjNmJhZjU0Y2MwODU5NDRkZmVlY2NmN2I5MDYzIGxlZ2FjeS10cnVuaworNTQ3ODYgODQ0NzMxNGY1MDBhOTdjYzU1YzRmZDg0NjlhYmZhYzlmZDEwMzFiNSBsZWdhY3ktdHJ1bmsKKzU0Nzg3IDk1M2JkZWZkODFmZjU1NmFlNjIxZDdmZjg2ZDExODMyOTI0ZDUyNWQgcDN5aworNTQ3ODggMzU2OTU4N2JlZjA2NWViOTAzY2NjOGIzNjIyN2ZlMjhkMzdhMzY2NSBwM3lrCis1NDc5NyA0NThjOGRiMmU5NDYxNmEyYWYzM2M0NzcwMzcxMmM5YTg2MjlmODYwIHAzeWsKKzU0Nzk4IDBhMzg5YjQ3ZjEyOWU4ZjZkMDZlYmI4ZDEyZGNlZjM4MTg2ODE0YmUgcDN5aworNTQ3OTkgZDFjM2RkMTg0ZTM4ODJiOTk0NDI3NDM2ZWJlYWE0ODA5ZWQzNmZkZSBwM3lrCis1NDgwMCBlMmQ3YTRjMzkzNjBhOGYxYzEzN2IwOGE1MWE0NmRkOTY2YmJlMDI5IHAzeWsKKzU0ODAxIDNjMzM5ZGU4MDAxMDU2YjZkMmEwNzRhMjQwOTgzMWE4YTY3OGUxMjIgcDN5aworNTQ4MDIgMzVmOWZmYzZiNTEwZjhmOWM2NmM2NjJjZmIyMjhkNmVlMDM1MjA3NSBwM3lrCis1NDgwNSBiODIyZmJkODVhZmViM2I3YWIyNDc3NDc2NTkwZGM0MmI5NzI3MTI0IHJlbGVhc2UyNS1tYWludAorNTQ4MDYgNWRmZDJmNGJjODM0YjY4MzMzYzVmMTk2ZTAxMDgyMzM1NTUxOTQ1MCBwM3lrCis1NDgwNyA1MzRlNGM3MDdlOTFlNmJkYThjZDMyNTg1M2Y5NjEwMjViNjkwZmViIGxlZ2FjeS10cnVuaworNTQ4MDggYmFiOWMzODE3MDkyNmIzNzZiMTUwMGJjY2UwMzM1YWJlNjkzZTJkMiBwM3lrCis1NDgxMiAwZDFlNDE1ZWMzNmNjZDM2OWU0MDZkMWRiYmU5NzE0NDA0MjFmYjhiIGxlZ2FjeS10cnVuaworNTQ4MTMgODJmMjc5MWI3YzAyMjE2NGFmMmQ4MjNiODViYzNmNDA2YzIzNDRhNyByZWxlYXNlMjUtbWFpbnQKKzU0ODE0IGVhM2NhNDk1ZjMyMTFkM2IxZTg1ZjYwNDBkYjIyYmZkZjgzMGI0ZjYgbGVnYWN5LXRydW5rCis1NDgxNSBlZDgyMDIzOWY4Nzg3NjA2Y2ZiODQwOGI5NGI0MjY3MDQxMzE2M2ZhIHJlbGVhc2UyNS1tYWludAorNTQ4MTYgODQyMzc3MjA5N2M3NGE2Y2MwYWRlZDg3ZmZlNTMyYjQ2ZjM0ZjM4MyBsZWdhY3ktdHJ1bmsKKzU0ODI1IDVmOGE4N2ZiNGRmMzMyZDlmOWIzZTc0YmU0YmI5Y2UxNGU5YWU1MWEgbGVnYWN5LXRydW5rCis1NDgzNSAwNjBjNzlmNmQ5MTk2N2ZlZDNjMjc5NWM4ZGEwOTFlNDRlMmYyMjg4IHAzeWsKKzU0ODM2IGQ2N2I1ZDk1M2I0NTIzYjI4YmI2MWNjMDZhMjM5NTZiMzgxODljY2MgcmVsZWFzZTI1LW1haW50Cis1NDgzNyBiYzc1YzUyM2I5ZDgxNzE2NGU3ZjFkNDRlYzNhZTNlNjFhZTA3OGUzIHJlbGVhc2UyNS1tYWludAorNTQ4MzggNTYyM2UyMzNlOWNjZmQ0N2JlMzk2NzhlMTE3NzkzYTI3MjBjMWYwNiByZWxlYXNlMjUtbWFpbnQKKzU0ODM5IDQ1NzlhMjc0ZmQ2ZTJhNTllZjZmYjQzYzFjOTc5OWE2ZGMwZThhMGEgcmVsZWFzZTI1LW1haW50Cis1NDg0MCAyZmU5MWQyMDFiMDUyMmMxYzMxNzU1YWQyNmRlYjZkODdkNWMxZDczIHJlbGVhc2UyNS1tYWludAorNTQ4NDEgMzFjOTI4MjhhZWZiMWIyNGU5MDA1NWIxNDk3ZTA2ZDllZGZiYTI5ZiBsZWdhY3ktdHJ1bmsKKzU0ODQyIDNlNWZkYjkzYzk1YTdjYzJlOWQ3NjAwYzZkNDE1MmIzNDY3ZTc1NmIgcDN5aworNTQ4NDQgY2M3MDdmMWFlMGI2ZWVkM2QzMjU0Mjc0Y2I1ZmZjNTEzZTcyMTlmZSBsZWdhY3ktdHJ1bmsKKzU0ODQ1IGE0OTg1OWY0NGM0MzBjNjU0MjA2YzdlNWNiNDhkMDA1NTg2NTExYzkgcDN5aworNTQ4NDYgYjVhMmU3NTNiNjgyMzFiMGQxYzNkNTY0ZDg0MmI5NWQ4NDBkNTMwMiBwM3lrCis1NDg0OSBlMDExNjk2NjM2NWUyYjdmNmQ5OGZhNDM2YjUzNWFkZmMwNTZkZmYzIGxlZ2FjeS10cnVuaworNTQ4NTAgYzFjZmQwYWY1ZjU3MzI3MTQ3YzMzNWQyN2U5ZTliYTg0N2FiYTcxYyBwM3lrCis1NDg1MSAwOTA5NzJjMjBhNDcyZTliMmQ1YjljMTEyNmI3MThlNDUyN2UyZWZlIHAzeWsKKzU0ODUyIGEzMGFmODMzZDM4OWI4MjhkZTMzNDViZjQxNzM2Njk4ZWRiNWZlNDAgcDN5aworNTQ4NTMgOTY1NzM5NWMyNWU1OGJjZGVlNjFiZmQ5MTk1NzBmMzQ3MTZjNWI2NyBwM3lrCis1NDg1NCA5OTAyN2MyYjNmZDJkZTQ5YTk2N2ViZTAwOGRhNTQyMmNhNDQ4ZGE1IHAzeWsKKzU0ODU1IGJlYTBhNTU5MmRiM2ZkZTk3ZjY5ZGIyZmNjMTQ1MjBkNTVkZGI5MjkgcDN5aworNTQ4NTYgYTVlNDEwNjM5ZTI0ODYzNTU4MDcxY2JkOGJhYzRiNDJhZDIzMTFjNyBwM3lrCis1NDg1NyA2MWMyOGQ3NzhlMzc5MzJiMzhhYWEwYmQ3ZDM0NjBiNDE4ZjMzMDlkIHJlbGVhc2UyNS1tYWludAorNTQ4NjMgNDkwZDhjMDlhYmNiODE0OTUwYmU3YmI3YTI1YzNmZjIwNDdjN2ViNSByZWxlYXNlMjUtbWFpbnQKKzU0ODY0IDRlMGU4NGY5ZDE0ZTJiNWQyODY0YjFiM2IxZTE1MmQyMGMxMmMwNWUgcmVsZWFzZTI1LW1haW50Cis1NDg3MyBjMzJjNGIzZGE5M2ZkNGJmZjY0MTdkNjY0MDk4YzRhYTAwZThhYWU5IGxlZ2FjeS10cnVuaworNTQ4NzQgNTg1MjdiOWIyNDJjN2Q0YmQ1MTk4MGRkNWExMGExMWFiNmViZTk3NCBsZWdhY3ktdHJ1bmsKKzU0ODc1IDVhNmQ5MDNhYjdiNWJhNGVmMGQxZDkxZDJjMWIwZWQ2YjFhYTQ4OWMgbGVnYWN5LXRydW5rCis1NDg3NiBkYTQwM2QyYjg4NmFiNThiZjBkZjFjMTFkYzcxZGRjM2RhNTg5N2U1IGxlZ2FjeS10cnVuaworNTQ4ODQgNzZmZDNiOThkMDA3ZjZjNDhjYWU5MTliMzliZGMxM2U4N2NjM2UwYiBsZWdhY3ktdHJ1bmsKKzU0ODg1IDE3ZTQzNjNlZjJiNTMwZjFhYTlhMGJjMTI4NDE4ZWU2M2Y3YzQ0ZTAgcmVsZWFzZTI1LW1haW50Cis1NDg4NiAwZjY3NWE2Mjk3NzBhYTFjMmZiYWQwMDI3YzI1NTkwN2ZiMWFjOTgxIGRlY2ltYWwtYnJhbmNoCis1NDg4OSAwMWU2ZDg0ZTM4OTI0NTI0NzMyMzZmMjNlZWFlZjc0ZWU5OTkzNmFlIHJlbGVhc2UyNS1tYWludAorNTQ4OTEgMTg3OTVkNDliOGQyYWM0MGJkZDM4ODkwMzQ3Yjc0MDBjNGY0NTQ4OSBkZWNpbWFsLWJyYW5jaAorNTQ4OTIgZjQzNjY0ZThhMWZhNGM5ZmRjNDUwZDA1NzI0ZTcyZDk0ZWM0MTgxZSBkZWNpbWFsLWJyYW5jaAorNTQ4OTMgYmZiNmYxMzMyZmI0ZTMzZDVjNzI0YTZiYmVhZjU0NmE1MDk2NjRlNCBkZWNpbWFsLWJyYW5jaAorNTQ4OTcgZjc3N2QxZGQ0ZGNkZGEyNTc3ZDJmYWY0MmQxNDZmYmM0YTljOWNhMiBiY2Fubm9uLW9iamNhcAorNTQ4OTggNmI0NjVjYzAyNWIzZjc1Y2JmYmM2ZWI3ZDQ5MTY1M2RjODhlNjIxYSBiY2Fubm9uLW9iamNhcAorNTQ4OTkgODRiNWFjZWQ1MzU2MTM4OGYzMTE3MzQ5M2Q4YjkwZDViMDM5NjU3NyBiY2Fubm9uLW9iamNhcAorNTQ5MDAgYWY3MjZmYjY4MWZhYWFlYjg4MTY2MjRhYzYxNWNlN2Q0OTlhMjVlZCBiY2Fubm9uLW9iamNhcAorNTQ5MDEgMGI3MDgzMGVkNzQzZmNjYWQ4ZWFkYTM0MDQ3OWU2MWNlM2JmMTVkNCBiY2Fubm9uLW9iamNhcAorNTQ5MDIgYmI2MGI5NTM5ODM5NDFlOTIyNjRiMjdlMWIzZmEyNTY3NGJlYWQ0MiByZWxlYXNlMjUtbWFpbnQKKzU0OTAzIDhjZDA5MzI3NGQ1NzgxMGQ2ZDE2OGEzM2Q3ODZhNWQzYzgyZDZkNjYgcmVsZWFzZTI1LW1haW50Cis1NDkwNCAxY2M2YmYyMzQ5ZTRlMWUwM2NkMDc1ZDZiOWI4OGM5NTJmMmY1MGJmIHJlbGVhc2UyNS1tYWludAorNTQ5MDUgOWE4YzNkOWY0MDVhOGE1ZmM2N2QxN2ZmZDM3MWZiMWEzMzIzYzM4MiByZWxlYXNlMjUtbWFpbnQKKzU0OTA2IDZjNmM4YThhZmIzODFlOGFhNDQ1ZDhiZjc3MDA0NzFhY2NjOGM1NjkgcmVsZWFzZTI1LW1haW50Cis1NDkwNyA1YTQ2MTkyMTQwNDNkMDE2NjMyZWU4NDJlMDhkNTg4M2M2NzlhMDI4IHJlbGVhc2UyNS1tYWludAorNTQ5MDggYWEzYzdiYTUzZjlkMmY0Njk2ZTBlZjIyMGRkMzIzMDA2YTc3ZjhlMyByZWxlYXNlMjUtbWFpbnQKKzU0OTA5IDBhNmU1MzdiOGQ5NmIzNjdhOTQ0ZjY0MWVmZjI5NmE5Yzc2Y2M1MDIgcmVsZWFzZTI1LW1haW50Cis1NDkxMCAwYzUwMTlhZmM1NWI1ZTJhZWNkOGQxZDY3YjY5Mjc5MGUwYjNhZmQ5IHAzeWsKKzU0OTE3IDFlMjhjNjhiNGU0M2ZiMmY5NTZkODgyYjAwMzVkYTQzZjM0YmNkNTYgcDN5aworNTQ5MTggMjgwNGU0ODg2MWJhNjI3ZjQ4OGRlNTY2ZGYxM2I4ZjliOGY1ZmQ1OSBsZWdhY3ktdHJ1bmsKKzU0OTE5IDQ1NjM4YjM3YjgyYzgxMzhlNWQ2NmY1ZDljNTAxZDM2MTAzMmIwNWUgcmVsZWFzZTI1LW1haW50Cis1NDkyMCAzY2NiNGMxNDNkM2I4YjI1M2VmMDE0ZWFjZTFmYmUxMTJiNzY5MzJlIGxlZ2FjeS10cnVuaworNTQ5MjIgM2MyNjcwOTJmMTMxZTVhYjc2ZTU3ZTVmNWI5MWEyOWRkMWFiZmUwZCByZWxlYXNlMjUtbWFpbnQKKzU0OTI0IGY1NTI2ZDJlYjY1NDdiMWQ4Y2FiY2NhMzlhZGUyOWZlMTU5MmVjOGMgcmVsZWFzZTI1LW1haW50Cis1NDkyNSA1NWQ3NjFhY2RjYmNkNDEyZDllZjE0YWNmMTk3OWI5NzUzMGY4YTIxIHAzeWsKKzU0OTI2IDI2ZGY1NjZmODBmMGRkNzhmYzQ1MGZjY2VlYmYzMTA0ZDU5ZDA1NjEgcDN5aworNTQ5MjcgODEwZDMzM2E3M2ExMGRkZTBmNjAzZjVmYWZiNTJhYzVhZGEwZDAwYiBsZWdhY3ktdHJ1bmsKKzU0OTI5IDNjMTIwNWNhNDQyYjZiYzg3NjBjZDhkZDYyMmQ3YTg1OWU2YTRiNGYgbGVnYWN5LXRydW5rCis1NDkzMCBmZDBmYmZmZDZkNTBmNzg1Y2ZkNjA5OWZkZDQwMDU3YTVmZDcxNDY2IHJlbGVhc2UyNS1tYWludAorNTQ5MzEgMDlkZGJhZGU2NWZlZGEzOTAyY2RjZTdhYzZiNjZmYmYyOTI0ZTE2ZiBsZWdhY3ktdHJ1bmsKKzU0OTMyIDkxZjMxMjE3NmVhZjM3OGYwNzg1YTdmM2E5OTNhYmYwNjdmMzY1YjIgbGVnYWN5LXRydW5rCis1NDkzMyBmNDQ2MTkzOGY1MGUzNWJlMzg2NjRmOGIxZTU0NDUyZjY1MTdkYjkyIHJlbGVhc2UyNS1tYWludAorNTQ5MzQgMmY4NzZhNWZmYTBkM2Q0ZjJjNWZiZWIwZTZlMzlkMzg1NTA5ZTA2ZiBsZWdhY3ktdHJ1bmsKKzU0OTM1IGQzNmEzNjFjMDVmZDAyN2QzYjc4MTA2YjhhNTNjNDEwZTYzMWQ4ZDkgcmVsZWFzZTI1LW1haW50Cis1NDkzOCBmNThjMGQxMWE3NWMzMTUzOTZkODEwOGU4YzgwYzlkMDIxZmI5NWNlIGxlZ2FjeS10cnVuaworNTQ5MzkgOGQ1MDE4ZDc1MDhhMmE3YjNhNmIxODdhNDg5M2VmYmM2NWU4MDgxOCBsZWdhY3ktdHJ1bmsKKzU0OTQwIGQwNWQ5ODY0YjYzYzc5ZWM2MWZhMzk2NmZmZjNiN2I1ZWM0ZjlmMDUgcmVsZWFzZTI1LW1haW50Cis1NDk0MSA3ZWE1OTQ5NzE0YWQxNWI4NmUwN2ViNTdiZmVmZTk5OWUxMzZkM2QyIGxlZ2FjeS10cnVuaworNTQ5NDIgYWJmYTcwNTViOGYzMDliMjUwNWE3MjUzN2VkNzA4N2I1YzE1YzI1ZCByZWxlYXNlMjUtbWFpbnQKKzU0OTQzIDdlOTlhZjg2OWM5MTc2ZGI0NjgxYWJiMzU0YThlMWYwYmE4YjlkZjcgcmVsZWFzZTI1LW1haW50Cis1NDk0NCA1MTlmMjMxMzQ1M2I3MWJkODI1MWRkZWFlYmM4Y2NkZjgwNGY2ZWYxIGxlZ2FjeS10cnVuaworNTQ5NDUgYjY4MjcyNDQ5ZGY0YjAzMTFiZDcwYzk0YTI3YTQ3MzUzNmEzNTViNSBsZWdhY3ktdHJ1bmsKKzU0OTQ3IDcwOGM4YzVmYzE3MzIzNmFjZDI4YzA4ZDlmNDU3NWU3YTE0Zjc2ZTIgbGVnYWN5LXRydW5rCis1NDk0OCAxYmIxZmE3ZmQxNzQxYjM3YjFlNzg5YTM3MzU4NDE3NzlkYjViOGQ2IGxlZ2FjeS10cnVuaworNTQ5NDkgNDdhZWIyNDg4MmJkNzlkNWFmYjg5ZDdlMDc2NDk4NDVhZDc0YjFmNCBsZWdhY3ktdHJ1bmsKKzU0OTUwIDNlZTg0OTc0NmMxYmY1YjUzMDBhYTE5YzkyMmU4MjE1NjkzZTUyOTYgcmVsZWFzZTI1LW1haW50Cis1NDk1MSAzNzk3Yjk4MDkyY2VhMmRhOGZkYTY5MmJkMDNlODM1ZjRiMmNjNjJiIGxlZ2FjeS10cnVuaworNTQ5NTIgY2E0ODk4MDRhZTIwMTA2M2Q0MmUyMmNiNGYwNTViNDg3OTA1NWUwMSByZWxlYXNlMjUtbWFpbnQKKzU0OTUzIDRiOWZhODA5MmU4MjcxMDNiY2QxYjFiMmY1Zjk2NzZjZWQ0MGE4MTkgbGVnYWN5LXRydW5rCis1NDk1NCA3ZGVkNzg3ZTYzMTE2Y2M5YzI2YjY5NWNhY2M5NmU5MmNhMDRlMmY4IHJlbGVhc2UyNS1tYWludAorNTQ5NTYgNmM0ZDc2NzhhZjVlMmQxOTM3ZmM4ZmIxNjdmNDFhMjEwNjFjNmU5MyBsZWdhY3ktdHJ1bmsKKzU0OTU3IDEwMDJmNDJlMTBjZGYyZDJiYjVlODFmYjdjY2RjNzkzYjFmODM4MmQgbGVnYWN5LXRydW5rCis1NDk1OCA3MWI1YzFlMmMwOWMyMjFmMTEzMzM3ZWM4MWM4Yzg4NWVlZjJhZWRjIGxlZ2FjeS10cnVuaworNTQ5NTkgMDE5OTA0YzY0NzE3Yzg2ODczOGE4ZGJhZDdiYmU3MzkzODg3MmFiMiBsZWdhY3ktdHJ1bmsKKzU0OTYwIDFmMWZiODE4ODhhZTI4ZTVkYjVkOTM3Yjk3MjNlNDZiMjNiMTE5NjcgbGVnYWN5LXRydW5rCis1NDk2MSA3NjFjZTM5NDZiODZlYjgzNjMxMTUwZWU0YzA3NTgwMjkxMDdhZDVkIGxlZ2FjeS10cnVuaworNTQ5NjIgM2Y0M2ViZmE5MmRjZjIzZDU2NGIwN2FmYWM1MmQwNGYzZWE2NmY1ZCByZWxlYXNlMjUtbWFpbnQKKzU0OTY5IDBmMjlhMWEwOTcyY2RmYTQzZWNkMjQ1ZmNlNDk0ZTc1ZjAzOTQ2MjIgbGVnYWN5LXRydW5rCis1NDk3MyBlNjE2ZmExMzBjMmZjYzNkMDUzY2JlMDdlOTQ2ZDE5Yjk4NDVmZWEzIGRlY2ltYWwtYnJhbmNoCis1NDk3NCAwNzNkNjhjMjkwNDkzODNiMGZjM2Y1Njk2MTM0YjUyOTNmOTQ5ZDJmIGxlZ2FjeS10cnVuaworNTQ5NzkgYjZlOGFkZWMwNTRjN2Q3Y2NkM2JlYTZkMjk5NDY0NzE4ZDAxNzdiOSBsZWdhY3ktdHJ1bmsKKzU0OTgwIDAwYmYxNDc2MDFlNDhkMTVmZTk0MjEwMTkyYjVjZjljMjk2MWU2ZDEgcDN5aworNTQ5ODEgZjc2NjNjNjczNGJiZTRlNDMyYWViZjRiZGE4ZmFlZjZlMDA1N2VmYSByZWxlYXNlMjUtbWFpbnQKKzU0OTgyIGQ5YTQ4N2MyZmE5NjE2MDEwNmRhOGM1OTRmNDM3MzE5NTNkNzM2ZDEgbGVnYWN5LXRydW5rCis1NDk4MyA2ODc3Yjc4ZTgxMGQwMjQ1NjI5ZWVmZmJkZTA5NGY1NmZkZDE5YzhhIGxlZ2FjeS10cnVuaworNTQ5ODQgODkwNWRmNjE3NjEzZTFjMGU4YmYxOGRmZWNkODNmNGYxNzU1MjBhNCBsZWdhY3ktdHJ1bmsKKzU0OTg1IDdjYzMxMDMyZTIwNjNmZTA2MTM4NGY4ZWM1YWYzZjQ3MGYwYzk0YzkgbGVnYWN5LXRydW5rCis1NDk5NSA5MzhjNWFlOGRjMzE0YmUyOTg5M2RiZTBiZTNjZTQyMjMyMzg3NmU1IGxlZ2FjeS10cnVuaworNTUwMDEgMTI2NDlhNzM0YmU2MjgzZTBhYmFkZjBjN2Q5N2U0NGE0NDA4OTk5ZiByZWxlYXNlMjUtbWFpbnQKKzU1MDAyIGNjOWFmZWRlZDIzZmNhMTY3MDQwOTYxODA4NDlhYTVjNTQ2NTM4ZmIgbGVnYWN5LXRydW5rCis1NTAwNCBhZGZhYmM1NzM2MWQzN2M5OTk5ZmMxNWU0YmNkNWZiZTNjYjVhN2NjIHAzeWsKKzU1MDA1IDA2MTQ1ZmJjN2FiOTMxODM0MDRmZWQ2ZjhjNjNhZTQzMjVmMzc4MjQgcDN5aworNTUwMDcgMjcwMDg2OTk0ZjQ4NGU5NjE5NTMwY2I5OTRhODcyYjE5NmNiYjlhOCBweTNrLXN0cnVuaQorNTUwMDggYTZhNDM2YWFlZmRiZWVlZTI4NThkZTUwYjc4MTQzYWQ2Y2YxMWVjMSByZWxlYXNlMjUtbWFpbnQKKzU1MDExIDc2ZTM3NWFiNzUyNTc0MDYyNjgxNTZiZmMwNjMwYTNhMmZiZDNmNTAgcmVsZWFzZTI1LW1haW50Cis1NTAxMyAyOWFlNjY3ZjMyMzk0MTE2NDc4MDZjMjc2NWExN2QyYzVhMzI4OTk4IHB5M2stc3RydW5pCis1NTAyMSBhZDFkNTZjMDc0MjMzOTZmMWJiNmVkODNmNDQyOTg5YTBiYmY0YTI3IGxlZ2FjeS10cnVuaworNTUwMjIgNTIxMTYwYzliMzY5ZDA0YTljZjk5OTQ1NjU4M2M2MTUwMjkxNDk5ZCByZWxlYXNlMjUtbWFpbnQKKzU1MDI0IDRmODAxYTc1ODkzNmQ0NDY2NDQyYjE1MTJjNGYzMzU5MDRjYzg2NDYgbGVnYWN5LXRydW5rCis1NTAyNSA2YTU2YWVkYmUyODA4YTNhNmI5ODEwYTE2MjE5Nzg3M2Q1YjllZjIzIGxlZ2FjeS10cnVuaworNTUwMjYgODczZGZiNTJjMzM0NjA2YTA5YmMyN2VhZWM5NTQyZjA1ZDQ4MzA2YiByZWxlYXNlMjUtbWFpbnQKKzU1MDI3IDgyZTc5OTgzY2IwYzI5OTg0ODlkMzhlNjcwODVmNDQ5NDAxZGJlY2QgbGVnYWN5LXRydW5rCis1NTAzNiBiODZiZDc3ZDNkNDA0MGUzZDE1ZDQ2M2QxYTcwMGZmODQxYjExYWViIGxlZ2FjeS10cnVuaworNTUwMzcgYmM3YTAzNzlkM2IxOGViM2I0MTczYzQxYzZhNDEyYmY3ZmJjMTBiMyByZWxlYXNlMjUtbWFpbnQKKzU1MDM4IDg2YTIzMmVhOGJhNDVkY2ViZjRlM2UxYTdiMzRjYjY0NDM2N2UyNjYgbGVnYWN5LXRydW5rCis1NTAzOSAwMGZlNGJiMDI5MzY0ZDdhMWFlMWVlY2I2MWExYmZiOWU0OTZmMTI0IHJlbGVhc2UyNS1tYWludAorNTUwNDEgMmIyZDU3ZDZjYzdlYjgwNWU1ODU5N2EzNmI3NGI3MjE2MTkyMzJhNiBsZWdhY3ktdHJ1bmsKKzU1MDQyIGQzZGYzMWQ0NTQ1NzFiYTg1YmI4YTZmNTg2NmI1NjE3ZjZmNjA4ZTEgbGVnYWN5LXRydW5rCis1NTA3MCAzNzY5YTUxOTYwMzVhMzA3NTA4NGMzODljNzczYzE1MDVmMDhhNjQ2IGxlZ2FjeS10cnVuaworNTUwNzIgZTUwZDgyYzQxOGE3MmZlNDUxZDdmZTg4MjE3MzFlYWM0NDgyMmJhNyByZWxlYXNlMjUtbWFpbnQKKzU1MDczIGEzYmY1NWEwM2Y2NmY3YmIyYzQzM2UyMzg2MmFjYzI2NGMxOTZjYzUgcmVsZWFzZTI1LW1haW50Cis1NTA3NCAzOWU5NTM4MDUxODQ5MzdkNGE2ZmZiOTY2MDFhODY2M2I5ODllM2QyIHJlbGVhc2UyNS1tYWludAorNTUwNzcgZWFiMjk1ZDkzYzhlNjUwNjkzMGMyNDE2MjAxNmNlN2Q5ODJiY2E3MSBwM3lrCis1NTA3OSBiZWFjZjQwYjU5NjA3YTYyYmU5YjY3Yzk4ZTJiYTA5NTJjYTY4NmY4IHB5M2stc3RydW5pCis1NTA4MCA5ODBmZjBiMWI5NTc4NTU0ZGZiM2E0MWE0NTRmNTRmNmNhNDNlNzBhIGxlZ2FjeS10cnVuaworNTUwODEgM2Q3MmMxMDkxZTVhMzliYWVlYjhhODA4ODMwZmE4M2UyNTBjMWE5MSByZWxlYXNlMjUtbWFpbnQKKzU1MDgzIGJjNmEwZmUzMjM1MTdlZDQ4MjVlN2UyZTJhZGFmOWZlNWVjZDNiMDAgbGVnYWN5LXRydW5rCis1NTA4NiBkNzA1NjU0NTdlYWJiMDRlODI4NDFhNWUxODcwYWYwY2I0NjIzMDZhIGJjYW5ub24tb2JqY2FwCis1NTA4NyA3YTRmMTc0ZGY4NDQxMDk0ZDM4NjI4Y2JhZWYzOTVkYTllMTk3MGVjIGxlZ2FjeS10cnVuaworNTUwOTAgYTY4NDY3Y2MwNmQzYjRhMDUyZmQyZWJlMTNlM2Q4M2Y5OGE1OWYwZSBsZWdhY3ktdHJ1bmsKKzU1MDkyIGU5YmVmNWI0MjAwMTU1NGRhMDg5MGQ3OTEzYzg1ZTQyMDQ0NjM2OGUgbGVnYWN5LXRydW5rCis1NTA5MyAyNWNjMWNlZTVlNjkwNDFhZDAwYTI3YzJiOWEzNTE3ZjIxZDI4OWU1IGxlZ2FjeS10cnVuaworNTUwOTQgN2I3NGExOTc2MDliODYyMTg2MDdhOGY1OWQ0YjU2NmM1MDBjNGVkMiBsZWdhY3ktdHJ1bmsKKzU1MDk1IGMxZjZmOTg0OGIxN2NjMThlNzhhMTY0ODRjNTY0Y2UzYTM4Y2E3NjIgcmVsZWFzZTI1LW1haW50Cis1NTA5NyA4MjVkOTY2MzM4ZWE3MDAwNjFiM2Y1ZjhiZDBiNmVmNDQ5MzM3OTJkIHB5M2stc3RydW5pCis1NTA5OSAzNjhmZWQ5YWY3NjE3OTkxMTU3NzQ0YTJjNzMwOGU2M2I2YTc0ZWZiIHB5M2stc3RydW5pCis1NTEwMCAxNWI4MTBlMjFmZTlhOTBiNDE0YWEzNzk5YTY0MGNhNWQxMTNiMjYzIHB5M2stc3RydW5pCis1NTEwMSA5YjAxZGZkMDNjMjk0OWMwYzk2NGQzNjYzMDUxNWM1Y2NhYmJkMmFjIGxlZ2FjeS10cnVuaworNTUxMDIgMzdkODJiZWU3YTE2MTVjYzVhZmRjYjMyNTRiZGU0MWFhM2MwNDU5YiBsZWdhY3ktdHJ1bmsKKzU1MTAzIDFjMTcwNWJmMzZiODhiN2Q0MWI1ODMxMzEzNjgxYmNiNGExNTAyNWIgbGVnYWN5LXRydW5rCis1NTEwNCBhODVkNzE1MDA5ZWNjMWE4MGU1M2M1ZWEzNWRiZWYyZGRlNDE1MjMzIHB5M2stc3RydW5pCis1NTEwNSAxZTVhMmEyYjE4ZWVkYjg5Y2NhN2U4MzFlYTcyNjc2YmZhYTg2NDJiIHB5M2stc3RydW5pCis1NTEwNiBkYzVhMTU2N2FmOTg0ZDVlNmZjYzg5Y2JhYmZiZjIwYThkMjI1ODA4IHB5M2stc3RydW5pCis1NTEwNyBmNmZhNDcwOGE0ZGI0NzExZjljNDM2ZTQyMGIwNTA0NzFiNjNjMGQ3IGxlZ2FjeS10cnVuaworNTUxMDggMmM1NDc2M2M0NTA0MjFkMGJmM2NhYjhhMmVlY2Y3OGRhOGJmODQ2OSBweTNrLXN0cnVuaQorNTUxMDkgY2ZiM2UwMDIxYjNiZjhkMzJiZmFmNzYxN2MyZDgwYmJlMGY2MWNkZSBweTNrLXN0cnVuaQorNTUxMTAgY2IzYzkyMDYyZWM0MDVlOWQ4MTg3MGViYWRmOWYyNzlkZmQ5MGM2OCBweTNrLXN0cnVuaQorNTUxMTEgY2E0NDhjNjA3YjE0MDFjZTgwYjc4ZGM1YmRiZmIyNjhhNmU1Y2FlZCBweTNrLXN0cnVuaQorNTUxMTIgYTE0ZmYzNzBiNjNkOTMyYjZhNTgwYzg0ZGU1N2ZmZTE1ODg4Yzg5MyBweTNrLXN0cnVuaQorNTUxMTMgYWMxNmJlY2UxZTVmYjdmNWU0ZjIxMWY3MDBkZDAwYjY3NWZiNDZkOSBweTNrLXN0cnVuaQorNTUxMTQgYjM5YWJjYmJiYmJhNGI1NDJhYjVlNTI5MjU2MWM1ZWVkNGQ1ODdiNSBweTNrLXN0cnVuaQorNTUxMTUgMWRlNTQ5NDcxNzIxYzM4YTIyODdhZDNhOTRhYTM3MmE3Njc1MzQzMSBsZWdhY3ktdHJ1bmsKKzU1MTE2IDQ5Njg2ZWQ1NmVjN2ZlODcxN2ZiYzhlMjRlM2NmYzM1YTE2OGY3NGYgcHkzay1zdHJ1bmkKKzU1MTE3IDViOGVmOTRiYjgxMGZkMDI3ZDdjNTBkZTE5OGZmYjIyMTNhYTBjNzAgbGVnYWN5LXRydW5rCis1NTExOCAxMTYyNTAyYTA5ZGE3NmIxZWQ4NDlhMWIwMGE2Mzk0ZjRmYmExMDJhIHB5M2stc3RydW5pCis1NTExOSBhM2UzMDAxYjM1YmYwYTE1ZTJlYjUxZGRhZWQ3NjE0NzUwYjJmMGM2IHB5M2stc3RydW5pCis1NTEyMCA3ZjM2Zjk2YjZjNzY1ODZmODM4MjA0NGE5ZDA1ZTI4ZTE5ZDBhN2M3IGxlZ2FjeS10cnVuaworNTUxMjEgMDUyYmYwZGVlNmI4NTQ3MDY0ODAxODBmMzAzZjM3YWNkOGEwZTQyMCBsZWdhY3ktdHJ1bmsKKzU1MTIyIDkyZWFkODdiZjk4NDNjNDFlNzFjNzc2OTNjOWUyNmIwMzI4MTBlM2EgcHkzay1zdHJ1bmkKKzU1MTIzIGU3OGUxYjYxNmM3MmZjODJjZWZmNjE5NTJlOTdmOGRiZjQ5ZWUyMDQgcHkzay1zdHJ1bmkKKzU1MTI0IGE3MzIzYzcyYjVjNzFmOTAzYWNkMmU4OTQ5NGEzNTUxNzgyNzUxMjIgZGVjaW1hbC1icmFuY2gKKzU1MTI1IGJlOTAzOWI1NzRkOTdjZWM5ZWZmMzI2YmFlOTg5NWQ0OGRhMzhlOTkgZGVjaW1hbC1icmFuY2gKKzU1MTI3IGM0OGZlNGRjMzRhOTE0MjMwNmZhODU2MWQwYmEzZTE4Zjc0OWFjOWYgcHkzay1zdHJ1bmkKKzU1MTI5IDIxMzFlMDM3MjFlZmRjOWE3NzA4YjNmMzI0ZWNiYzdiZGUyYmU5ZGMgbGVnYWN5LXRydW5rCis1NTEzMCA1MmI5OWE5MTVmYWE1ZTc5N2Q4Mjg4MzJhZjkxZDZjNTUyMTNkMzM4IHB5M2stc3RydW5pCis1NTEzMSA4Yjc0M2Y1NTU5NjEwOGRjNTc5MTZhYzg4ZDhhNTg4OTczNDI0N2Y2IGxlZ2FjeS10cnVuaworNTUxMzMgMDc4YjRmMmZkZmM5NDc2YTc5YTM5NTY4YTM5Njg1NjE5MTNkNWE0OSBkZWNpbWFsLWJyYW5jaAorNTUxMzQgM2I1N2YwYjdlZGRmZjkxNWVjODRmOWEwNTJiZjA0OGYwYzRkN2Y1NCBweTNrLXN0cnVuaQorNTUxMzUgOWUxZGZjODU1ODkwNWJkYjg3ODBiZWMxOTJiMTI3NmRhODk2MWNmNCBkZWNpbWFsLWJyYW5jaAorNTUxMzYgZTJiMWQwMjIyYWZlY2YyNTFkOTFlMjM5ZDRkMTEzNTkwNGJjZTc3NSBkZWNpbWFsLWJyYW5jaAorNTUxMzggZGY0NjAxMWM1OTM2MjU2ZmM0MDM1MjA2Zjc4N2FjMmI5NzM3ODZjYyBkZWNpbWFsLWJyYW5jaAorNTUxMzkgODY4MDk3MmVkOGYwMzZlYmYyN2IyZWVjOWY4YTNlZjZiYzY2MzUxMiByZWxlYXNlMjUtbWFpbnQKKzU1MTQwIDYxNTc5NWQ1MmI5ZmQ5OGE0ZmEyMWM2NDdmYWI0NDcyNmJkODk0ZDYgbGVnYWN5LXRydW5rCis1NTE0MiBiZTdlYjNmZDM3NzY2MTMwNzFiNmQzY2FjMzgwOWZhZmY3NGNhMzVmIHAzeWsKKzU1MTQzIDI2NmUxMjM5NGI5N2QyZmIzMzRkMWVlN2Y1MGMzZGVjMGRjOGM5ZDIgcDN5aworNTUxNDQgOTQ2ZmQ1NGI0NTdmNWU0MjZhZDBlNzYwMTFjYmQxOTNjMGY5ZTAwNyByZWxlYXNlMjUtbWFpbnQKKzU1MTQ2IDYxYWNmYjgzMTYzM2M4ZTcyZDMzNDM4YTkzYjExNzJmMTMwMDRhMWQgcHkzay1zdHJ1bmkKKzU1MTQ3IDZiN2QxNzgyYTU3NDk5NzBhYmYwN2U4MmIwMjdmNDUyZDM0ZWZmN2UgcHkzay1zdHJ1bmkKKzU1MTQ4IDgzOGNhYjM3OTM3NmU3YmZhMDFmYTZiNGI5MTBjMzRkMzA1Mzk2MzkgcHkzay1zdHJ1bmkKKzU1MTQ5IDEwN2FhY2I5YzU5NTg4MzFjYjIwN2QxZDczZWI0YTBlOTRjZWUxNDAgcHkzay1zdHJ1bmkKKzU1MTUwIDZiYzE1NmQzYzAwZWMyNTNjYjFjMzgxMmE1NWUxNGZiZTkzNjA0YWEgcHkzay1zdHJ1bmkKKzU1MTUxIGUyNWRjZDg3NGI4Mjc5OWNlYzNjNzRiZTk1YjUyODFiMDJjY2JkOGUgcHkzay1zdHJ1bmkKKzU1MTUyIDQ2YjAwYzczZTMyZmZiNTJmZmIxZDNkNmQ1NDFjMjUxMzZjZjNlN2EgcHkzay1zdHJ1bmkKKzU1MTUzIDE0NDBiYmI2NzE1MGE3MDFmY2EyNmEyOGRjMDliYTk1ZTA4NDRhOWIgcHkzay1zdHJ1bmkKKzU1MTU0IGVhNWNjZWU2YjI4NTRiZTJhNThjODM0MTY2OTJiYjgwMjllNThiYjcgbGVnYWN5LXRydW5rCis1NTE1NSAyZDM3NzQwOGE5ODdiY2M3ZWQzOGQ2NGVkNTU4NmYyNmFhNWI3NTc0IHJlbGVhc2UyNS1tYWludAorNTUxNTYgNTU0ZmYyNzE0NWUxNGFmZWM2NjUxZDM0YWNjMWE1MjRiNzVlOTVlZCBweTNrLXN0cnVuaQorNTUxNTggZjMyMDJmZTc4NTk4MTlhNGFlNmIyMzY2NzZiYjQ0ZjU2ZDJlNzAzYiBsZWdhY3ktdHJ1bmsKKzU1MTYyIDg3MjhjZDAxMmJkODdlNzY0MmJmNjFjYWI3MWQyOWJkMzg0NDMyOTIgcDN5aworNTUxNjMgYzc5MWE1ZTJlMDllOGZlMWQ3ZTk4NDAzNDE0Y2ZmMDIwNmI0NGU2ZSBweTNrLXN0cnVuaQorNTUxNjQgMmRjYzA1YTgwOTA1ZmVlNDZhZTU2YTk5Y2RmOGUyY2U5YTMwY2MxMyBwM3lrCis1NTE2NSAwYzNhMzE0ODIwOGUwYjk2NGY1NjU2MjRiOTM5ZDlkNTljMDlmYjcxIGxlZ2FjeS10cnVuaworNTUxNjYgZDRiYTY2MzI3N2Y4ZmJjMjczNDdlZGRkODJmMmYyMzdhODAyMmIzYyBwM3lrCis1NTE2NyBjMTA3NWYwNjY1MGE3NjFlYjUyOWYwYzg4M2MyMDIzMjk3NmEzODU0IHAzeWsKKzU1MTY4IDVkMDk2OTE2N2Y2ZGI3NmQ3MWYwMzFkYjdiOTAxYjYzODNkYWQ1M2IgcmVsZWFzZTI1LW1haW50Cis1NTE2OSA1NDE3OTUzOGEzODc3MjU1ZGM2NWE4YWY1YWY4YWI2NWUyZTk1NGVmIGxlZ2FjeS10cnVuaworNTUxNzAgNDQzMTAyYmY1ODk1MDU0N2FiODdiYWJkZWE3NTVlMDljOGM4NmI5YyBweTNrLXN0cnVuaQorNTUxNzEgNDExMDI3M2EyNjExMDlmMjQ2NjcwOThjMDc3ODRhMzljNTMyNTgzMCBwM3lrCis1NTE3MyBiZTFlNzA4ZDVkM2RmMTViOGYzYmZmMDE5ODFjZmM1ZjQ4ZTExMGU1IHJlbGVhc2UyNS1tYWludAorNTUxNzQgYTUyMzRmM2M3NTUxMWVkMmJjMGRlNDJlOGNmZWMyYjM2MzllYWE0YiByZWxlYXNlMjUtbWFpbnQKKzU1MTc1IDg0M2QwY2NiMDA5NGRmNzhjZTcyNDNiMTkzN2E2NjhlYWEzNDZmMzggcmVsZWFzZTI1LW1haW50Cis1NTE3NyBmZGZkZWUxOTFhNjEyYjk0YjMzMTI0YTY0MTllYzMxMzA3NDY0NjNmIHJlbGVhc2UyNS1tYWludAorNTUxNzggMjA1ODcxYzk3MTVkYjYzYzExN2ViY2QwY2Q5NGFmZDhkZDM0OWFjNiByZWxlYXNlMjUtbWFpbnQKKzU1MTc5IGExNTNmMjE0ZmExYjg0MDhkNTQ1MzY5ZWU1NDBmNWRlZDk3MWM2ODcgcHkzay1zdHJ1bmkKKzU1MTgwIGE2ZWI2YWNmZTA0YWMyYmYzMDQ0Mjg1YWVmNTUyYzBiN2RmZTRiZWEgcHkzay1zdHJ1bmkKKzU1MTgxIGM2NTY4NTUwYjFjNjEwZGM0YjVmODc3ZTU3ZDQ4YTJiZWIwNmIwYzEgcHkzay1zdHJ1bmkKKzU1MTgyIDhlN2M2MGIxMzU2YjczODNmYjNjYzk4NDk4NDMwMWFkNDM2YzRlODkgcDN5aworNTUxODQgOWNjNGMzZjBiNTgwNzVhNDM4M2UyMDQyZWMzZjgwNmJiZWViN2RlNSBweTNrLXN0cnVuaQorNTUxODUgNzA0NzJjMTU3YmI5YzAwNTM4NGU3OGRiOTVkYjY2YjViMmNlN2MyMiBweTNrLXN0cnVuaQorNTUxODYgOGY3N2Y5NjA3MTEzODgwNWMyZmNjZDBmYjMxZjYyMDliNWZhNDk1NCBwM3lrCis1NTE4NyA2YTAxNmYzZTAwNTE2NjdjM2UzMjQ1ZjFlZjc4MWQ5ZmE4YWM1Nzg1IHB5M2stc3RydW5pCis1NTE4OCBjODQwMDA5NmQyZDcxYzhmNTM3YmQxYzhmZGQwZWZmODVjN2ZmNzk4IHB5M2stc3RydW5pCis1NTE4OSBiYzZhZDYzY2Q1ZjFmNmUwODc5YjNkMmU4MGVlN2EwY2Q0Mzg3NGFhIHB5M2stc3RydW5pCis1NTE5MSAyZDllNThjNWFkMzQzZDQ0MTQ0OGI0NzEzOTA0MWQ0ZTY2YzRmMGJmIHB5M2stc3RydW5pCis1NTE5MyAyM2E4YjNkZmJlOTUzNzEwZmRjYzY3ZjA3ZTA4ZDExZDc1OWExZmVjIHB5M2stc3RydW5pCis1NTE5NCA0NGViYWU0ZjYxYzRhMmIwMDBlYzUzZTkyNDk4NTczZjQ4M2FkZmFhIHB5M2stc3RydW5pCis1NTE5NSAwNTBjOThjZDQxYzRmNzRhY2QyY2U5M2MxYjNhMDc4YzNmOGU5ZDZhIHB5M2stc3RydW5pCis1NTE5NiA1MjUzMzM3MGYxYWQ0MDNjMjMzNjYxZjJmYWIwMDUyMzY0NTlhM2MxIHB5M2stc3RydW5pCis1NTE5NyAzNzBiOTE1MzNjNTNkOGMwMDg1OTQ1OGUzODU5ZTljZjRkOTZlZDk1IGxlZ2FjeS10cnVuaworNTUxOTggZjBkYTFiN2I4ZTVhMmFlNDlkZGIzMjlhZWM3YjgxZWFmNjlmMDNkOCBsZWdhY3ktdHJ1bmsKKzU1MTk5IDc2ZTYzZTAzMzM1NjA1ZGM2M2FkOTI0YjhlNTllY2U2OTUxNmZhYzIgcmVsZWFzZTI1LW1haW50Cis1NTIwMCA1YzcyODUzNDk3MGMxZTI2MmE3OGRjMGVjNDgwNDg0MDljNTRiYjcwIHJlbGVhc2UyNS1tYWludAorNTUyMDEgN2ZlNmFmY2JkM2YyYTZhNjc2ZDkwMjI4ODY2Y2NjYjE4ZjM4MzE4MCBweTNrLXN0cnVuaQorNTUyMDIgNjUwZmY4ZDdjYzM4MGFhMTQ1ZWRmNjhmYWRmZmUxNmViZTYxZDY1ZiBweTNrLXN0cnVuaQorNTUyMDMgM2E0ZjA2YmMyNTRiYjVlZGRiMzg4NmJlNmRkMTUxNWFkMzk3ZDYzNCBweTNrLXN0cnVuaQorNTUyMDQgMDJlNjk4OTg4NTIxYTk5NTc4NTdhZTM5MmYxMmQ1OGJhODY3NzU4ZiBwM3lrCis1NTIwNSA5YjE0YzFlNTg5MzYxYmNhM2Y3YzJjZTc5NDY5YTk0YWUxZTIwZGVjIGxlZ2FjeS10cnVuaworNTUyMDYgZGQyZDQwN2RjZmQwYzQ3ZDFlMWEwMjIwYWU1OWU4NWM0MzE4ZmE0YiByZWxlYXNlMjUtbWFpbnQKKzU1MjA3IDQ3NWM3YzU0MzdmYzYyYjgzZDBkNzBlOTgzNjg1MGJmNWY2ODFiM2EgcHkzay1zdHJ1bmkKKzU1MjA4IGEzNjNjZWEzMmI5YmFhYTAyYjBmYzM4YjE0M2EyNTUzZjkyNWFjYWMgcHkzay1zdHJ1bmkKKzU1MjA5IGEzMjQ4ZmVmYzBkYzhiNmFlZTA1NmM4NTUyNDYyMzRlMDkzNGQ1NzggcHkzay1zdHJ1bmkKKzU1MjEwIDg1ZDUxY2I4YWU1ZWQ4NTI3ZDYzNTg2ZTE3OTgzOTQzMDI5YWYxODAgcHkzay1zdHJ1bmkKKzU1MjExIDRhOTUzM2U5MzY1ZTBkOTc4MTY3NDEyOTE4MzUwY2U3NzQwNDhjZGIgcHkzay1zdHJ1bmkKKzU1MjEyIGIxYmJlODAxMTE1Mjg5M2NjYzUxOGQ2NzY4NDRlZGMyNTExNWJiNmUgcHkzay1zdHJ1bmkKKzU1MjEzIGQxMjgxMWRlY2Y5NGQzN2Q5OWRlZGVlNjIxODQ5MDZhNzc5MzUxNDYgcHkzay1zdHJ1bmkKKzU1MjE0IDY4OGUyYmMyMDgwMjYzOGFlZDU4ODM1ZWJlY2I4MTdhMTQ5MDE2OGQgcHkzay1zdHJ1bmkKKzU1MjE1IDdhOTZjODY0MDU3NTFiZDllYzk5OGQ3ZWZlZjAyY2NiNWQ3ZTBjOTQgcHkzay1zdHJ1bmkKKzU1MjE2IGRkM2FjMWNkMWM5MTk2ZjMyZDEyNmFiMDMzOGVhMmMxYWExMGUxYjUgcHkzay1zdHJ1bmkKKzU1MjE3IDVmMjAyODZiMGRhOTkzNjI5OGIxNjE2YjhlZDRiNTU0OTMxYzI5MDMgcHkzay1zdHJ1bmkKKzU1MjE4IDI0OGRmYzFiZDQ0YzAyNWJhYzkwMmJmZDczZTEwZTEyOTkyNTE4ZTUgcHkzay1zdHJ1bmkKKzU1MjE5IDI5NzczNGY4YTYyN2FjZGY2ZWJhZDg1NmYwYjU1YTNkZDI0ZWNhY2QgcHkzay1zdHJ1bmkKKzU1MjIwIDkxNWQ1MjQ1NWZmYzRiZmVmYzIyYjZkMzFlN2U5MzYwNDQ5ODc5MTEgcHkzay1zdHJ1bmkKKzU1MjIxIGM0YTk5OTNmMmNlNmNlYWEyMDk3ZjI4NjVkYWE3ZDViOTIxYjYwNDQgcDN5aworNTUyMjIgOTkxNDQ2ZmY2YjE1YzA4YjBkZjJmY2NjNGY0YTI0ZDczYTFlZTc2MiByZWxlYXNlMjUtbWFpbnQKKzU1MjIzIDc3NWQ0NGE1NDM5OTU1MGJkNTkxZTZhMTFjMmE1NDEzNTEzYzEyMDUgcmVsZWFzZTI1LW1haW50Cis1NTIyNCA5ODcwOTE4OWQ5ZTFjMDBhYzk0ZTYxOWFlMGJmOThmNTk1MWMwNmU2IHB5M2stc3RydW5pCis1NTIyNSAxMDQwNTY4ZjkwMmNhMmIxYjg1YWFhMzZkZWZkNzk4NTk3YTUxZjRmIHB5M2stc3RydW5pCis1NTIyNiAxZDMzNDkxMmExMDQwZDlmZTg1NGZlNDgxMDhjMDU1ZWUxNDM2OTAxIHB5M2stc3RydW5pCis1NTIyNyA3NTk0NzA5ZTYzMWIzMzM3ZWU0YmM2ZmVmZjY0NzdlMjQ4NTNhYzdiIGxlZ2FjeS10cnVuaworNTUyMjggOGE4YmYyYzA3NGUwNGYwYmIzMjQ0NGVlNDg4YmIyNTBiMzVlODU1YyBwM3lrCis1NTIyOSBjNWViZjljMjE5YmU0NjUyMDYwYzRmYTExMDI2MmY3YjdiYjAyYTFhIHB5M2stc3RydW5pCis1NTIzMCBmYjcwNWYxOGJmM2Q3NjY1ZjY2OGM2MGIzYjg2N2Y1ZTgxMDczNWViIHB5M2stc3RydW5pCis1NTIzMSBiYWI4YTljN2Y0OWViNjIwMTcyZmJjZTQyNzU4YzI3ODVmNzIwNjNhIHB5M2stc3RydW5pCis1NTIzOCBhNmU0ZjJjYmVmYTliZDBiMzUxYWVmNGM2MzM5YjEzZTU4MzI3YzBjIHAzeWsKKzU1MjQxIDQzNjdiN2FmNzUzMTliZDY1ZjdlNzgxYjllOTlmZWI0MDcwZTI2N2IgbGVnYWN5LXRydW5rCis1NTI0MiA4ZWRkNzQ2MjkxZmVmZGVlNmZkZWMyZDgyNzc1NmZlMGQxM2RhNGI5IGxlZ2FjeS10cnVuaworNTUyNDMgMDJkMjQ4OGZlYzYwY2ExNWNiOWE2NWJmMmM0NWU3YzY3NmU1MjQ4MCByZWxlYXNlMjUtbWFpbnQKKzU1MjQ0IGNmOWRkN2YwZjRhMjBmMDI2YTI5NDdlMGJkMjUzOTQwNzhlZGMxMWMgbGVnYWN5LXRydW5rCis1NTI0NSA2YzRhYTQ2MTFjODgxZGM2MmNlNWE5YzRkNjc4ZTU4MjExMDE1MDExIGxlZ2FjeS10cnVuaworNTUyNDYgY2JhOGM2YTVlY2YwMjYxNjc0Njk3YzdmNWRmNWU0NGYzMTgwMDAzNiBwM3lrCis1NTI0NyBjZjc5ZmVlOGI3MWExMGE4ZDY5OWE1ZTMyMzA3MmQ2NWRjODUyZDliIGxlZ2FjeS10cnVuaworNTUyNDggMDExMjc4MjFhZjc1NjE0ZWE1NzNhNzc5ZmYwNjBmZTcxYjc1NWQzOCBwM3lrCis1NTI0OSBkMjMxNjg1ZTllYTdkNTRhMmRjNGY4YmZkNmMzZjg0Yjg0ZTdhOTMyIHAzeWsKKzU1MjUwIGYyMjNhNDRkYjEzYTY4ODM3ZmU4ZmYwZTEwYTBkNTBiNzY2ZTg0NjAgcDN5aworNTUyNTEgOWI5YzUzYzFhYTVjMDk1ZjA5ZmI5YmJhMzg2ZDVhMTVlNTNiMzE4ZCBwM3lrCis1NTI1MiBkYzM5YmZjNWM3NGU2MjJiYzU0OGIyYmQ1ZWY0NDVlMWJmODUwMWMwIHAzeWsKKzU1MjUzIDgxZDlmNTI3MGU4NzUyZDQ3YzFkYWUwM2M0NTY1MDQyNjI2ZjE3NjAgbGVnYWN5LXRydW5rCis1NTI1NCAzZWVlMDZjYjE1YTNlZTFiZWUzNDQzMWYxOWEwNDVmYjQ5NzIyYzIxIHAzeWsKKzU1MjU1IDdkOThjMTJhMzQ0ZGJiMDMwYzQ4MTQ5NjcyNmM4NTdhOGZiMDJjOGYgcDN5aworNTUyNTYgZDkxY2M4ZDQ5Mjk0ZThhZjQyZTEzNDhiYzFiZTBlM2FiMWYxMzc2NiBweTNrLXN0cnVuaQorNTUyNTcgNDU0OGNlYjMxYzk0OTM5OTE1ZWY3Y2I0ZjE0ZGNjYjA3ZWEwOGUzYiByZWxlYXNlMjUtbWFpbnQKKzU1MjU4IGNkMjQwM2QzNzBlMGY2N2M0MWI2OWZlMjdhMDFmMzc5NTNiYjg5NmMgbGVnYWN5LXRydW5rCis1NTI1OSBiOGZhNGFjNmM1ZjA3YzYwOWRlZjczZjZjODRiM2Y0ODQ3ZDI3NjU1IGxlZ2FjeS10cnVuaworNTUyNjAgM2ZhNDBiNTliOWI2OGUyZmViYmQwNWJlNDcyZjJhNDQ3ZGNlMThmZCByZWxlYXNlMjUtbWFpbnQKKzU1MjYxIDUxYzc0MTIyODk1ODNmZmVhMTQ1MTFhMzI5YTYxOWM0Mzk4NWU1NTcgcDN5aworNTUyNjIgYmNmNTdhMTUzYjExYTU3MGZlMGU1NDU1M2RiZTIwNzJiYTE2YTgwMiBwM3lrCis1NTI2NCBkN2M3ZmU5YjZlOTcyZTkyNTg2NjJhM2RkNjQyZDdkYWNkMmRiZjZkIHAzeWsKKzU1MjY1IDkxNTM5MmQ1ZjBiODY0NmIxNmQ1MTQ0YmI5ZGU3ZDM3NmU5OGNkNTMgcDN5aworNTUyNjYgMzI2NzNiODg4YzI0NGNlMThjY2Y0MWVjZTBhNTk4MDExNTlkMTc4NiBwM3lrCis1NTI2NyA1YTJmNTkyMGNmNzUwZmNkNThjZGRiZjI1OTQ4ZTgwMjU5YTMyOTM2IHAzeWsKKzU1MjY4IDdkNDkwMzhlOTljOTkxNDgxMmQ5Y2U0NDU2OGVmYmYyYjYwMzlhYjkgcHkzay1zdHJ1bmkKKzU1MjY5IGVlNDdmZDVjMGU1ZDc0NjdmZWIyOGVlZDE2MTBmODI1MDBlYzIzY2MgcDN5aworNTUyNzAgZTE2YzhlNWM1Y2E0YzExMWI2NWY5MWFlOWEzODRhOWQ5NzdmMGMyYyBweTNrLXN0cnVuaQorNTUyNzEgMjcxOWUxN2M5MjhkMzY2ODA4Yjk0NGIwY2NjZGU5ZDFlMjMwOWVmMCBwM3lrCis1NTI3MiBkZGM0YmUyNzg2ZmQyNTgzNWRmOGU2NmUzMjQyM2JhODM4YmQ5MGJiIHB5M2stc3RydW5pCis1NTI3MyAyMGI4YjI5NTkzYzBkOThkNGM4MTlmZjRkOGZkMmMxZmQ1MGViMWQxIGxlZ2FjeS10cnVuaworNTUyNzUgZTA2ZTE5NmEwNWNmZjM4MWJjNDZlYzM2NjA1Mjg3NDJiN2I0ZGU3NyBweTNrLXN0cnVuaQorNTUyODAgOTcwNmYzYjQ5MDY3MGYzMTg5NzBjNzZhZTE1MWQ1YTg3ZDc1MWMxZiBwM3lrCis1NTI4MiA3OTkzZjIzYWQ0NmNhNTRmMTBmYjlhYzU5NTAxYzNjZGQ3NjU4MDhlIHB5M2stc3RydW5pCis1NTI4MyBkMjM3ZjQ3ZjI5M2YyOWI5YWE2MDUwZmIxODBhNjFhMjc2ZGY2YmM1IHB5M2stc3RydW5pCis1NTI4NCA5MTcwNDBkZmVjNTgzOGM3ZmQxMTNlNzFkMTFjOWYxYjZkODA2YmU3IHB5M2stc3RydW5pCis1NTI4NSAyNjE3MTMzYzdhZmEyNzM4MzQ4ODI2N2UxOGZmMzE3MjIwMTQ3NjQ0IHB5M2stc3RydW5pCis1NTI4NiA2MDI2YjhhMjZjMDVmZjRkNDg2YzRlMjMyNWU4NTE4MDhlYTBmY2FiIHB5M2stc3RydW5pCis1NTI4NyA0ODJiNTk5MGQyZmIzZGY2ODY3NDU0M2JkZmZmYTViMGIyMTE1ZmEzIGxlZ2FjeS10cnVuaworNTUyODggYzE3ZDc2MGNiNmQwNmYwOTYwYzEzYmRkZmEwYmY4YmFhMmM4ZjJhZiByZWxlYXNlMjUtbWFpbnQKKzU1MjkwIDdiYmI5N2UxNGFkNmVkMTJlN2YxYzRmYjY2MzAxMDIxNzg2OGU3ODggbGVnYWN5LXRydW5rCis1NTI5NyBhNDg5M2M0ODAyNjQ4Yjc3YWMyNjllNTVjZjAzYzVhNzEyYjkzYzQzIGxlZ2FjeS10cnVuaworNTUyOTggOTJlYjVhZTRjMThmMTUxYTU4OTU2YWVjZTI3M2RlNGRhODAwM2VlZSBsZWdhY3ktdHJ1bmsKKzU1Mjk5IGExNjBiNDM3ZmYzNWZlMTY4MjRmYWJiYjY3ZTJmY2Q0ZjU1NzY2MmUgbGVnYWN5LXRydW5rCis1NTMwMSBiNDYwMDg0NDc5OTMzMzkxZjgxOTg0NTlmYWQzZmUzNGIwZGExNTYxIHAzeWsKKzU1MzAzIGI3ZTkxMzZkNGM4MzhmOGVjZmJhN2FlYjQ2MzJlZDk3OGYzOTBlYzggcDN5aworNTUzMDUgN2QyNGE2OGQwYTFjNjE2MzYyMmNmNDc0NjBmMDQ0NjE3Yjg0Mzc1ZCBwM3lrCis1NTMwNiA2NTY2NmVjODNjMmMwMGM3MTNiMjA5MTI3ZWVlOGNkZDhiZDk1MTJmIHAzeWsKKzU1MzA3IGFhZTU0OWViYTcwNzVmNTQ2ZTdjOGUyMTFlNzZkZmMwZmE2MjMzYzggcDN5aworNTUzMjAgYzRkNTdkYzYwYjAxOWI1ZTNlOGZiMjM1YzMxNjVjYTNjZmU3NjZjYiBsZWdhY3ktdHJ1bmsKKzU1MzIyIDE1MjNhYTgyNzE0NjVlOWYyNjU5Y2ViNWQ2YThjOTZkNjY1MDA0MjQgcDN5aworNTUzMjUgZjYwYzg3N2Q1MmM4YTA5N2E1ZDgxMTNmOWRiM2NmZWEzZTJjYjQ2NCBweTNrLXN0cnVuaQorNTUzMjYgYzdmNTQ2NjBlYTE3ZWZhZmZiY2RjYzA5MjQwZmZhNmQ2Yzg3NTAxYiBwM3lrCis1NTMyNyBkNmU2Zjk4MmM2MzdiNjk4MDdkMzg3NDQxZWU1NjE3Mzk5ZmM4Njc3IHAzeWsKKzU1MzI4IDAwYzAyYzQ0ODhjZWY5MTFlMGUyMTM0MDViOGJhZTk0ZTc0NjNmYmEgcHkzay1zdHJ1bmkKKzU1MzI5IGYzMjU2YzhjNzJjYTgxMzBkZTMxYTZjODk3Y2Y1MjU0NDBmY2RlZTMgcDN5aworNTUzMzEgYmM0M2NiMjMxNjQwNDA4OTIzMmFjZDZkYjBiYWU2MzIwMWIyODUxOSBwM3lrCis1NTMzMiA1NTg1MThmZjlkOTFhYjYyNDI2ZDBjZTc2NGFiZDJlMmM0NzI2ZGI3IHAzeWsKKzU1MzMzIDZkZWI0YmIxMDA1OWY5MWNjY2I4YmVmMWM1MjZmMmEwMWM2NmMyNWQgcDN5aworNTUzMzQgMWRiMzE5NDFlMDEzOTFlNzk2ZDg3MjM4ZWRiZjc3MTRmZGI4ZDE3NiBwM3lrCis1NTMzNSBiOWM3MjRkZDcyYzgxOGYxYTFkMzcyY2U1ZjkwNGEwMWYzNWNhNGJhIHAzeWsKKzU1MzM2IGQ4MTNmYzM2Yjk3MDFmNTI0YjRlN2JlZTAyNGE3M2IxMjNlMWUyYmIgcDN5aworNTUzMzcgMWM5YTI5OTY1NmJlMzcxYTFhMjk3Y2Y1ZWIwNjFkOGU3YWVlNzE2NSBwM3lrCis1NTM0MyA5YWQ4NDA3MGIyMmQ4NGYxNzVhM2I4OTAzNjdjZjkwNjkyYjY0MThjIHB5M2stc3RydW5pCis1NTM0NyA2Y2EzZDVmM2QxYmUxMzFmZjY2OTdhNzlkZjBlODRiY2E2YzQ5M2FlIHB5M2stc3RydW5pCis1NTM0OCAzZTFlYjdhZjRlYTBkMjFlN2YxZTkzMDVkZjE3NTBmMTc3ZDk1NmNmIGxlZ2FjeS10cnVuaworNTUzNDkgMmI3MTEyYTYzNTcxYjJlZTBjNDk0Nzg0MTJhM2I4ODg4N2ZjMzE4ZSByZWxlYXNlMjUtbWFpbnQKKzU1MzUwIDI2MzQ5YTY0ZWY3MDE1YmMyMGI5OTMyMjlmMzUwYzRmYmUxZjdkODAgcmVsZWFzZTI0LW1haW50Cis1NTM1MSBkM2NkMjkyMGJlYjY4N2JmMjE3MWVmNzk2MTM4MGQzMTZiY2QyMGQ4IHB5M2stc3RydW5pCis1NTM1MiBjOWM1MmI4N2MzMGI1ZmIzM2FjM2FmOTQ5ZmMwM2Q5Njg0MTFkMDA3IHB5M2stc3RydW5pCis1NTM1MyBhOGI3YTgxNTk5ZDA0OGFhYTE0MjRkNjU0NTE0YjNjMmUwMDM0MzE4IHB5M2stc3RydW5pCis1NTM1NCBkMTE0NmQ0ZGI1NDk0Njg0NGY0OTk4YWY4YTA4OTJiOTY2NmI4ODUwIHB5M2stc3RydW5pCis1NTM1NSAyMDI4NmVjYTQ3NDMxNWE5NjNiMWY2MTIyNDE5NDU2MzdhZTU1NTFkIHB5M2stc3RydW5pCis1NTM1NiA0MzBiNmVkODAxNDhlOWIwMDkzZTlkMGNjOTdiYjkyMzE5ZjkyYmU4IHB5M2stc3RydW5pCis1NTM1NyA2ZWE5MzcwMGQ3NzkyMDcwNmZjYTU0ZjBiMmQ3M2VjNjA5YzFmNmIzIHB5M2stc3RydW5pCis1NTM1OCAyOTY4NTk3MTE4YzEzOWM4YmI3YjM3ZWQ3M2IwM2UyM2M4ODRkMzJhIHB5M2stc3RydW5pCis1NTM1OSAyOTM3ZjUzNzEzMmVhM2ZmZTQzNWZlOTUzNGQ2NjAzZDgwNGZjZDNlIHB5M2stc3RydW5pCis1NTM2MCBjN2IxNTVhZDM3OTExOTA0ZTUxYzg1ZmVmNGM4MmExMDY3ODFjYmQwIHAzeWsKKzU1MzYxIDM3ODdhM2ZiYzQ1OGQ4ZGJiOWM5N2FjYjJiZjI3OWZhOTFkN2Q1OWEgcDN5aworNTUzNjMgNzhkNzY0MzVkYTlhYzljZTNmMmEwMGVjNWVlNzk0ODlhNjQ2NmJjOCBweTNrLXN0cnVuaQorNTUzNjQgYmJiMDk5ZDRlYzgwMjRiZjgwMGUwMmMwNjM1ZjI4Yzc5ZDE3YjE4NSBweTNrLXN0cnVuaQorNTUzNjcgMDUyZDU1ZThhZjc3MzBhNzRmMjUwODJhNzE0M2QxNzQzODYyMjhmYSBwM3lrCis1NTM2OSA5MmY3MTlmYTliMTZlOTBjYWJiOTU1YTQwYzE1NjVkNDQyYTY3MDU5IHAzeWsKKzU1MzcwIDRlNDFiNzJkYTBmYzY2MzcyNDFmN2MzZWEzNDRiN2QxMWYzMGNiZjAgcDN5aworNTUzNzIgMGFkNjk1MWMxOGY3YzU3ODJiY2M2MjdkZTRiNjRmOWM2OTdmOGUzMyBsZWdhY3ktdHJ1bmsKKzU1MzczIDY5ZTFmN2VjMGNlOTE2ZjFmNmUyNTEzOTRjNmI2MWY1YmMxZmYxOWQgcmVsZWFzZTI1LW1haW50Cis1NTM3NCBkMGMwNzY2Njk3MzJmZDJmODRmMGFjODM4MzEzZDAyNzI4NWI3YzQyIHAzeWsKKzU1Mzc3IDA0MjRhOWZhNGIwYjRkNGNmYzM2OGU4YjA2NzI3ZmUxZDExZWJkZjMgbGVnYWN5LXRydW5rCis1NTM3OSBiMDE1NDZmMzZhMjI2MzA0YzkxOTU4M2YzY2I3NzdjMjZmOGJmMTNjIHAzeWsKKzU1MzgwIDA3ZjA4MzIyOTdiMWU3MmU1ZmZlNmFlNjQ2OTg0ZWY5NGUxOTExOWMgbGVnYWN5LXRydW5rCis1NTM4MSBjY2E5ZTMyZWU1NTAxYmQ4ZjhkZDNkYzFhYzM1NmY2YWYwMjFmMDYwIHB5M2stc3RydW5pCis1NTM4MiBkYzZiNWYzNTVkNWE4Y2JiMTVmNWMyM2I3YTU0MGZhMjBhNjhiMmEwIHB5M2stc3RydW5pCis1NTM4MyA5YjgyOTNiZjhmZWM4YmZmOWQzOTg5NjgzMTc3MjdiZGQ2MzczYmM2IGxlZ2FjeS10cnVuaworNTUzODQgNzU4MWVjMTYyMzBlZjE4MzE4M2FlYmFhZWMzZGE2NmE3NzkyZjk4NiByZWxlYXNlMjUtbWFpbnQKKzU1Mzg1IDYxYzRjMjIyYTMyNzBkODMxMjVkY2EyNTk0NTAwNmViMzNkYjdiYTggYmNhbm5vbi1vYmpjYXAKKzU1Mzg2IDZmMTI5M2FiM2FjNDhlODM2NmVhNGZlZjIwNDVkYWYxZTYzNTRhYWQgbGVnYWN5LXRydW5rCis1NTM4NyA2OTNiOGQ5MTQ3NzE3MDgwOWFlOTJiMzU0ZDhjZjQ1OWE0MDRmOGQxIHJlbGVhc2UyNS1tYWludAorNTUzODggMzg4ZTRmMjFlNzQ5ZTI3ZGMwM2Y4YTA0NDc1ZWNlNjQyZjg4Nzk3NCBwM3lrCis1NTM4OSAyZWNjMjk2NDQzYzMyYzNjMTEyZjM2YzcxMTIwYTA0NGMyYTI2Yjc2IGxlZ2FjeS10cnVuaworNTUzOTQgNzU2ZTFkNDA0Y2I4NjFiOWUxZGFhMGY0MzAwZDI2ODk0ZDI4ZmNhZSBsZWdhY3ktdHJ1bmsKKzU1Mzk1IGUzZWE4ODFiMTRmZWQyYjUzYjY4NDA5YTQ2MjMwY2RkZWFjOTdiYmUgbGVnYWN5LXRydW5rCis1NTM5NiA3OWRkOTA3ODcwOTFkZmUzZDFlMGM2NDY1MzcxYWRkODMyYmRmZTA0IGxlZ2FjeS10cnVuaworNTUzOTcgY2M2ZjQ3ZjFlMTNhNDQ2ZGQ1MzI3MjhmNzY1MTIxYjNlYmI5OTIxYyBsZWdhY3ktdHJ1bmsKKzU1Mzk4IDZmMGRiYTgwNzczNGFmYzZhZjkwZjQ3MjNhMWUwMDA0ZjhlODg3ZGEgbGVnYWN5LXRydW5rCis1NTQwNiBjMTJhMzA5Nzg3ZDNjYzhmMzk0MzA1YjJiZDVjZjVlM2Q2Y2Y2YjIzIHAzeWsKKzU1NDA3IGIwODVlYjY2YjdmNmRhNmUyNDM3MjNhYmQxMWJhYTMxOTIwMzZjNjAgcHkzay1zdHJ1bmkKKzU1NDA5IDQxYTE4MzBlZWUxNjUxOGRjMzI2NjM5ODAyY2Y1NzFmNjlmNzEyMWQgcHkzay1zdHJ1bmkKKzU1NDEwIGVkYTllNjBjOTc0NTQ3OGJjNjlmMTVjZDE4NWFmYzY0YmU0NWUyMzEgcHkzay1zdHJ1bmkKKzU1NDExIDRkMTVhZDQxNjUxZTRjMGY2OGVjZWQzZmRjNThlZjlhMTM0NjJiNzYgcmVsZWFzZTI1LW1haW50Cis1NTQxMiAxNTExODljNzJhMzcyYjlhMjM0OGZhODdlZDRmM2JlOWEwY2FlMjEyIGxlZ2FjeS10cnVuaworNTU0MTMgYTY3OTZhMjQ0ODFjZTUwMTMzYjdhMzBkYjQ3ZTk3NDM5MmUxMDhhZCBwM3lrCis1NTQxNCA2ODliYWUwNzY3ZTIwYzFlZGJmNmJmN2Y1MDZiMjhmNjg2MzEzYmFjIGRlY2ltYWwtYnJhbmNoCis1NTQxNSBjMjQxMWJkYjYyODZjZmUxNjM2MTAwYzExYjA3ZDgxNzliNTIyOGExIHB5M2stc3RydW5pCis1NTQxNiA2MDk0NWJkYjFiNzU0ODU2YTE5NDczYzEyNDRmOWNkYjllMTdiMmFmIHB5M2stc3RydW5pCis1NTQxNyBiMGI1MTRiYWRmMGIwYmE5ZmM5ZWNhNWNhNzZkN2MxZWU1NzYxNDJhIHB5M2stc3RydW5pCis1NTQyMCAxM2E2YzZiZWY2MDk3MDFhNzc1YjJhNjYzNTY2M2U1OTE3ZmZlZGJlIHB5M2stc3RydW5pCis1NTQyMSAwZWFkMTA2NGVhZDAwMmQ3ZmRlZjk4YWJjNDMzODYxYjRkYzQ4YjMyIHB5M2stc3RydW5pCis1NTQyMiBlZGI0YzkwMjhiZTAwMmEzZWFlMDQ0NDVhZDAyMjM1Zjk3Y2VhMDVhIHB5M2stc3RydW5pCis1NTQyMyAxYTljZDc2MzY0ZTNkNmEyM2NkZmYyMjY5YWYzYTU0ZjM3MzBlNzJkIHB5M2stc3RydW5pCis1NTQyNSA1ZDlkZDFiOGQ5MDhiNzhjYzliYjQyMDg3MjI5OGY1ZDNjZGNmMTE0IHJlbGVhc2UyNS1tYWludAorNTU0MjYgNDdiMTU5ZDY0MGE0NTRkZWNmNmEzYjY0M2NmZGNmY2M2MzlhYmQyMCByZWxlYXNlMjUtbWFpbnQKKzU1NDI3IGY0M2U5ZDFmYWJhYThiNmZiZTQwNjU2NjI1NTgwNmM3Mzc4MDA0N2YgbGVnYWN5LXRydW5rCis1NTQyOCA4ZmU5OGY2MGViNmUzNzk3YzM1NGM0YjljZWQ3MzNkYzBiNjA0NzAyIHB5M2stc3RydW5pCis1NTQyOSAxNDFlMmFlZmZiYWE0M2ViMzhhYjE3MGRiZTM4ZGU4ZDRmZDA5NWI5IHB5M2stc3RydW5pCis1NTQzMCBjZTYwZjQ3YjE3YTI1NDFjOWI0YmQ4MmM4MDA5YTZkMmFiYjZjYWViIHAzeWsKKzU1NDMyIDY1YzNiNDMyZjUwMWI3ZmYzZGU2OTEzZjQyMzRkMWU5NDgyMjM1N2MgcDN5aworNTU0MzMgZDZhYTdlZGYyMTdhNjUyMGU2MjcxODA4MTY3YzgwODY2ZWFlZWZhMCBweTNrLXN0cnVuaQorNTU0MzQgNDdkYzcxNjA1MzQxZDNhOTdkZGRkMTY2ZjkzNmI5ZWI4MjRlN2JhYSBwM3lrCis1NTQzNSA4YWQxYzg4Y2UxYWM2Nzg0ZDc0N2FkYjhmYzFiNjkyMWQyOTMyMGMzIHB5M2stc3RydW5pCis1NTQzNiBiNTkyOTg1YTk1M2ZmOTBkZDc3ZjI3OTljMTIxZDU0OWJkZDY5OWMzIHB5M2stc3RydW5pCis1NTQzOCBiMjlkNzFkNDNjODA5MWYzMjUzMDFmNDFlZTM5ZjI4ZTlhMDkwYTIxIHB5M2stc3RydW5pCis1NTQ0MSA2NTFmYTJjOWMyYWJlNWYzNDNjMWFiZjdkYWJlZmVkNGQ2YWE5NGY4IHB5M2stc3RydW5pCis1NTQ0MyA2ZDhkNjYwNTAwMDNmMWY4ODNlZWQ5YzA2MmMzN2Y2MDYxYjBiNzk3IHB5M2stc3RydW5pCis1NTQ0NSAxMzY0MWFkYmE2ZWNjNjA0ZGY4MDdmYTE4ZDRmNTlhMWVjMmZjN2QxIHB5M2stc3RydW5pCis1NTQ0NiBmMTllNjMxYmUxMDFiN2FmODIyOGU0NzJiZTNhODhmZDg0NDI2ZmRhIGxlZ2FjeS10cnVuaworNTU0NDggNGEzYTYzNzY5ZDM0YTkzNDBkZGI5NTA3NDM4ODdhZjE1ZjkwM2U4OCBsZWdhY3ktdHJ1bmsKKzU1NDQ5IGQ0ZGI2MjZjMjI5MDc2NmI4ODYyYmQ1MGJkMWI2OTU3ZWE3ZDA2ZWUgbGVnYWN5LXRydW5rCis1NTQ1MCAzMTJjMTExOWRjMTQ2YTdhM2I2MWFmZmNiN2RlZDdkNTUxNmQ5ZDdmIGxlZ2FjeS10cnVuaworNTU0NTEgMjk5ODc4ZDYyZTJmNzllNjE4NGZkYTg0N2U1NWVhN2VlYzU2N2ViMCByZWxlYXNlMjUtbWFpbnQKKzU1NDUyIDBmOTNiNzAwYzRjOWYwMWYxMDVlZTUzOTcwYjJiNjhjMGM2NjcxYjIgbGVnYWN5LXRydW5rCis1NTQ1MyA1MTVlMjU2NGVjYTdmYTgxYTlmN2RmM2FkNDdiNmVjYzEyYzAyNTVkIGxlZ2FjeS10cnVuaworNTU0NTQgNGE2N2YxMDM4MzNlYjhjNTJmZjVkNjIyMjk5ZDc1YzVkYThjNjFlYiByZWxlYXNlMjUtbWFpbnQKKzU1NDU1IGYxNGE1YjAwNWExZTJjNGUzOGNkNWY2NTNiZGVjOWIyY2IzYTVjNGYgbGVnYWN5LXRydW5rCis1NTQ1NiBiZWU4ZDAxZWY0MmM3YjEyYWZhOTU5ODYyODI3NjUwY2M3ZGI4YTU5IHB5M2stc3RydW5pCis1NTQ1NyAxMzI2YjBiMmFmYTA5MTUzY2JjODllZjFiZTY0YTg4MDA4NjM0MzlkIHJlbGVhc2UyNS1tYWludAorNTU0NTggYjdmYjk0MmI0MDNlOWU5MWIyYWRiNTZhYmU4OTBmOTRjNTIyYjAzOSBsZWdhY3ktdHJ1bmsKKzU1NDYwIGMyZDMyYjVhZTkwYjNhMzEzZmQ4ZWM3NjczOGVkYWY2YzA0NzI4OTggcDN5aworNTU0NjMgZDFjMzhhZjA2NWJmMzljMTk0ODQ4MDc0NGVjNDMxMTA4NTFmNTZkMiBweTNrLXN0cnVuaQorNTU0NjQgZWNjNjg1OTI1YjUyZDNjMDQzNTk5NmZhYWFhZGIwMmRmNTIzZjI3YSBweTNrLXN0cnVuaQorNTU0NjUgNmQyNDZhYzYzMTk4MmRhNTlhYzJmMzUyNDhmYzllZWI3YTE3MjdiYiBsZWdhY3ktdHJ1bmsKKzU1NDY2IDAwNDEzZjcwY2U1YzNlYmM2OTYyNDQ0NjYzOTM2YTA0ZTI3OTJkMjYgcHkzay1zdHJ1bmkKKzU1NDY3IDc3OWEyMTA1Mzc3NzhkNTRkMDcyMDI1MWU1NzY0MmVlNDU1NmY3ZDAgcmVsZWFzZTI1LW1haW50Cis1NTQ2OCBjMDI4YjI3NzVhOWE0ZWZmYTVkYTA2NjNmOTJjMDJiZmFlZTliOGI3IGxlZ2FjeS10cnVuaworNTU0NjkgNWJlZjJjMjJiZjg1NzA2ZTJiNGFiNGMyMDgxMGNkNTJhZjQzOTQ4ZCBwM3lrCis1NTQ3MCAzMTAyOWY2ZWJjYTJhODdlZTMyZWM3NzhhZDhjMzkyMjQ5NWE2NWMwIGxlZ2FjeS10cnVuaworNTU0NzEgNjdjYjgxODM2MGYwZGM0NzBiNDQzMWE0Y2E5NzI2OTFkOTE2YTNhYSBsZWdhY3ktdHJ1bmsKKzU1NDcyIDYyY2YyY2I3NGUzNTFhNmMxN2ZhZjFjN2Y5MTNlZWVlMjNmNTczZDcgcDN5aworNTU0NzQgYzBlODlkMGVlMGU1YmE4MmJiZTk4Njc0NDhlYmZiOGJiNGIwYzgyZSBsZWdhY3ktdHJ1bmsKKzU1NDc2IDJjMDBhMTkxMDI3MWNiNTdkNDJlMWU1YzdkNzdlMDRkMWQ3ZWJlNjMgbGVnYWN5LXRydW5rCis1NTQ3NyBhNThiYTY3ZmFmMWFiZjM4OTRhYTM1NjMzNjI1OTY5ZTM4M2U2NTMxIGxlZ2FjeS10cnVuaworNTU0NzkgZTM1ZjFlZTIyYWI4ODkzMThjMDcyOGM3NGQ1MjhhNmJmZTVhOGVhYSBsZWdhY3ktdHJ1bmsKKzU1NDgxIGFjOGE2ZGVlZjk3NDBkOGQ1MmU0MjYzYTA2ZmZmYWI3MjZhZGU2ZTUgbGVnYWN5LXRydW5rCis1NTQ4MiAzNWUxOGEwZDEwZjI2YmNmNDAzNDgwMTMzYWY4ZWFlMDdjYWRiNjcyIGxlZ2FjeS10cnVuaworNTU0ODYgZDI0YzllNDMyZDUyNGZiMDJjOTFhYzhlZjg0NDVjM2JmNTQ2MmY3YSBwM3lrCis1NTQ4NyAyNjcxZTA2YmFhNGMwN2IzMTU5OTA0ZDVjNGZhM2U3YmU5NTZhNzQxIGxlZ2FjeS10cnVuaworNTU0ODggOTkzZjhhOWI4YWIzOTk3NDE4NWYzNWYyMzEwNTcxN2Q1MjIzMTNlZSBweTNrLXN0cnVuaQorNTU0ODkgOTQ1N2I5ZjViZGQxMDkzMmZiMmMxMmJjMjg2OGI2YWQ2MzdmM2VmYiBsZWdhY3ktdHJ1bmsKKzU1NDkwIDgxYjE3OGYwYjFlZjM3NzhlZGI1YTVlZmMxYjdiNjM1NzNjZDllNjIgbGVnYWN5LXRydW5rCis1NTQ5MSAzZDNiZjI3NDA5ZTYyMDJiZjhiNDc1YTAwYWFmYmUyMWQ5NDlkMmY4IHB5M2stc3RydW5pCis1NTQ5MiAxNDQ2YjlmY2EwMWRiZDM2NGViOWZjMDgzZjIwY2M1YjRlOWZmN2Q2IHB5M2stc3RydW5pCis1NTQ5MyBlYmIwYjZkNmRhZGEyODAyMWI4YWFlZGJmN2I5NTE4NjI1ZGI2MWIyIHB5M2stc3RydW5pCis1NTQ5NCBlZTI5NTE0NDRhODk2NDY0MTZmYzAzMDhjZTRjM2U5MDY4MmU4ZjYzIHB5M2stc3RydW5pCis1NTQ5NSBhNDA1NzMyYTI2MmRjNzRmMmZiNTBmNmQ3YzMxNTU1YzZjMTY1ZjhhIGxlZ2FjeS10cnVuaworNTU0OTYgZDdmNmQ2ZjQ1NjJlZTYxZTE2ZjA3ZGI2Y2Y1YzE1NGFkYTM3M2RlNiBweTNrLXN0cnVuaQorNTU0OTcgOGUwNjJlNTcyZWE0ZDZhZTYxNTc3OWZjY2NmMjI5ZTg2MDllNzY4MiBweTNrLXN0cnVuaQorNTU0OTggZjk5NDliNjNlYWIzYTEyNjIxOThmYTc1NTdkODJiYmMzYTQ2NDE0YyBweTNrLXN0cnVuaQorNTU0OTkgZDA3ZDM0YjUzZGI1ODA4YzQ4NDg5ODYxMTJjOGYzMGEzYzA1MGNhYSBweTNrLXN0cnVuaQorNTU1MDAgNTBkYWZhMjJiOGE0ZTdiNmI0MDJhOGYzNzc0YmMyYjVlZWNkZTU4YyBweTNrLXN0cnVuaQorNTU1MDIgN2M5ZGRkNGEwODE0NmY2ZGMzYzVjYzdkMDM3NTdjODU3MjhkNDdhMSBsZWdhY3ktdHJ1bmsKKzU1NTAzIDNkMDU4NTg3NjkxZGQ0OWI4YWI4NTRlOGI5NTIwODM5YWM3YTM4NTMgcmVsZWFzZTI1LW1haW50Cis1NTUwNCBhOTIyN2Q3YTM0ZmE4ZTcxNDA3NmE3YjcyYWYxYTlkN2ZjMDM2MWZiIGxlZ2FjeS10cnVuaworNTU1MDUgZWM4M2QyMTA2NWFhMzZmYjFlYmI0MTNkZTlhNTdmMDY4ZGMwZGUxNSBsZWdhY3ktdHJ1bmsKKzU1NTA2IGVhN2FlODkxZjkzODk0Y2FlMGUzYmUxMWRmODY4MzMxZTBhYmNkZjQgcDN5aworNTU1MDcgYzg5NzU1OWE4OWZjOTQ2NWQ0Mjk4ZTIxMjljMmFjOTlmMzE3NzMwZCBsZWdhY3ktdHJ1bmsKKzU1NTA4IGJmYzczZDg0OWUyOGE5ZGViMjAwNmU1ZTc4ZWI0NjgyMWE0OWI4NzAgcHkzay1zdHJ1bmkKKzU1NTA5IGRiNDlhMTI0NzM5ZGVmZTYzMzRhNDI3ZTZiNDE4OWZmMTkzMWViZGEgcHkzay1zdHJ1bmkKKzU1NTEwIGI1YWNhMDI5NWI3OTJmYWE3OTA5NjMwZmM5NDM3OGMxN2NlZDliZjQgcHkzay1zdHJ1bmkKKzU1NTExIGFlNjkxMjI3ZmQzNDM3ZjllN2I0NTM4ZmJiZjc4OWVmMDBiZmViNGUgcHkzay1zdHJ1bmkKKzU1NTEyIDk4ZWY1ZmZjZmYyODQzYjQ1YTU4NDgzNjk0NzdkYWYzM2VmZDk5ZGMgcHkzay1zdHJ1bmkKKzU1NTEzIGRkODBhNGM1ZjQ3ZDA0ZDA1YTYyNDQ3MzQ2NDA3YjhhNWM3NjZjMzMgcHkzay1zdHJ1bmkKKzU1NTE0IDI0YjYwNjIyYjk0NGQwNGRmZTEyZmM2ODI5MTdjYmU3YjkwNjllMzcgcHkzay1zdHJ1bmkKKzU1NTE1IDg0M2Y3ZWZjMDU4ZjIzYzlmZjEyMWMzZmMzZjlkZDg3ZDE0ZmE3YjEgcHkzay1zdHJ1bmkKKzU1NTE2IDhjM2U0MGIxNzliZjQxNGZhYjBiN2JkYTI4Zjc5MmE1YjMxYjYwZjcgcHkzay1zdHJ1bmkKKzU1NTE3IGViNDVmODVjNGM3OTI2M2JlNGE2Mjk1NTFlYjg3ZjQ3NjliMDA2M2UgcHkzay1zdHJ1bmkKKzU1NTE4IGE3YmUxNDhmN2M1NjA4MDY0MDkxZWExMmI2YzgyODJmZGExZTI2NzggcHkzay1zdHJ1bmkKKzU1NTE5IGY3ZjJhNDljMWYyZTU0ZTNjNTg4NGQ0MTU3YTU3ZDYyMWQyYWFiZGQgcHkzay1zdHJ1bmkKKzU1NTIwIDcyZDdjMGYzYmZmZWU4ZjA3ZjQyOWNmMzYyNDVlZDI3YTU1OWUwZTkgcHkzay1zdHJ1bmkKKzU1NTIyIGZmN2JlZmU5MTliNWIxNjZiODA3OTg3ZWM0NzViZmJhOGRmMzcxNTYgbGVnYWN5LXRydW5rCis1NTUyNSBhMGVlM2IyYmEzNjFjM2VlMzM5NDgxNDg1NzI3OTY4YTM0ZmJlYTEwIGxlZ2FjeS10cnVuaworNTU1MjYgNGNiZjk0OTQzNmViNTdhZDZlZmFkZjgxYmY5NGVhYTAyOTI2YjM2MiBwM3lrCis1NTUyNyA4YzM1Nzg5MzRkZjZkYTg3YzI2MTZkMTAzYWZkNmQ2YTkxNGZkNDQyIGxlZ2FjeS10cnVuaworNTU1MjggOWE0NDc1MTQ4NTVmMTE3MWY0NjFhOTQzYThlOWE1ODkzOTY2ZmJkNSBsZWdhY3ktdHJ1bmsKKzU1NTI5IGE2YzkyZGVlYWUyN2YyZmZmZWEwMDNlMTU2NzAyYWJjYzZlZGQ1YTUgY3B5X21lcmdlCis1NTUzMSA4MTQwNzdlN2FkZWUzYWNmNzIwMTgyZjI5ZTg2Y2I3MDkzODZjNmI0IHB5M2stc3RydW5pCis1NTUzMiA3MDlmODJlMmE1NWNiNDU0YzJkNmRiNTVhMjM5NGE0NGFiNjFmMmViIHB5M2stc3RydW5pCis1NTUzMyBhYjM5NjYyZTQ1NGJjZTRiMGU0OTBiMDRhNjVjYTlmNTNjNmU4ZDc5IGNweV9tZXJnZQorNTU1MzQgZTI0MGQyMGRhM2VjOGZlYTg1NTM5NDA3YzMxNjBiM2UyNDgzY2Y5YyBjcHlfbWVyZ2UKKzU1NTM1IGU4ZjYyNGQ0OGRhMmRkZjFlODRlNGViMmZmZTgxNWYwNjEyOTc1NjMgcHkzay1zdHJ1bmkKKzU1NTM2IDU2ZTkwMDcyODkyOTUzMDQ2MWNiMTU3YjdjYWE5NzBjYzgxNGFhODAgcHkzay1zdHJ1bmkKKzU1NTM3IDIzMzIzNzcwN2ViYzk5NzljYTA5MGQ0MjUwMzdjZGI2ODFmNjNhZTAgcHkzay1zdHJ1bmkKKzU1NTM4IGJmZTk1MzA0NmQwNWIyMjZmZDg5NmM5MDcwMDdiYTM5YWRhNDRiYWMgcHkzay1zdHJ1bmkKKzU1NTM5IDUyM2RmMWRlMGE1YzJiOGVjMjA2NjAwOTNiN2Y0OGYzN2MzMDliMmUgcHkzay1zdHJ1bmkKKzU1NTQwIGViMTg4ZDdmZWE1ZDk4ZTQ2NjcyYmVjM2IyMTMzZmNlNTVjMzQ0NzUgcHkzay1zdHJ1bmkKKzU1NTQxIDIxMWRjOWQ2MzY3M2I1ZGM3ZjhmYzRmY2JlNDZlNWMyOTUwMzhjYzIgY3B5X21lcmdlCis1NTU0MiAxMjlmOTY1M2IwYTIzOWYyZDdmNjIxYTM5OTI0YjcxOTI1M2I3YjYwIGNweV9tZXJnZQorNTU1NDMgMWY3ODkxZDg0ZDkzZmUzNjRiYThiMjIyZjFlNDNiODMyYzY3ZTU3ZCBweTNrLXN0cnVuaQorNTU1NDQgNDc3NGE5NGQyZTZkNjY1ZTk0OWY0NmY4YzUwY2NlY2NkMDY4MTdjYiBwM3lrCis1NTU0NSA4MmU1ZGI0OTYwZWRmYjM0YjEwOTE5NWQzM2E0Mjk4MjM5YTRhN2E2IHB5M2stc3RydW5pCis1NTU0NiA5Y2U4ZmEwYTA4OTk3MjdiYTAzYTM3MzBiYWQyMzQxZTYyNGFiMDY2IHB5M2stc3RydW5pCis1NTU0NyAzMDhlNjMyNzAyYmZhNGFlOGQ1YzZkYTQ1OGFlOTdiZGY1MWU2MDFlIHB5M2stc3RydW5pCis1NTU0OCAyMWRjNDYyOWI3MTIxNDU4MjgxYWQ4YTA3NTAzMzc5NDI3ZmVmNGVkIHB5M2stc3RydW5pCis1NTU0OSBjZjE1MTk2N2VlYTNjZjAxNTQwZDBkNDM2YTliNDNkOTBhM2RjMzIzIGxlZ2FjeS10cnVuaworNTU1NTAgNmY4ZjgyMjgwNTQ1ZGQ5M2QwNjEyMTYxYmQzNGRjMTY1NGU2NjFjYyBsZWdhY3ktdHJ1bmsKKzU1NTUxIDM5NzlmOWUyZDAyNjI4N2Y3OTAxMGNkY2E5OGZmNTE5MjdkM2FjYjcgcHkzay1zdHJ1bmkKKzU1NTUyIGNmMDg5MWYxZDYwYWE5ZGIwNTU4Y2UzNWM3ZTcxOTU4ZGU5ZDM4NTggcHkzay1zdHJ1bmkKKzU1NTUzIGU2MzEwMWZhYWRhNjhjMjFlYzc4OTBkNzJhMzQ2NjU4M2MxMmNjYTIgcHkzay1zdHJ1bmkKKzU1NTU0IDg2YTlkNWY0MzMwNzc0NDIzNTg4NzQ0ZjNmNGMyYjhkYjBiYTJjY2MgcHkzay1zdHJ1bmkKKzU1NTU1IDEwNDI2YWQ1YTZlMGIxMzdlNTE2MGE2MWU5NTczNmI3MTk0ZjdlMzIgbGVnYWN5LXRydW5rCis1NTU1NiAwNTdhOWMzZDA2N2QxMTM0NmM3ZGY0MTU4OGJjZWIxZGMxNzAwMGJiIHB5M2stc3RydW5pCis1NTU1NyA0MWNmY2ZkZTA4YTk5YTc0NWY3YWIzZWFmYmY0M2M1MDE4NmVjZjMxIHB5M2stc3RydW5pCis1NTU1OCAyZjQ4YzU2YzVlODE2OTE1MmQ1OGJiZTU0MGE4NTczY2RjOTgwZTY0IHB5M2stc3RydW5pCis1NTU1OSA5OGM2NmVmYzk1NTMzM2E1YjMyMTgwZTRhOTQ5YjllNDY3MGQ3N2RhIHB5M2stc3RydW5pCis1NTU2MCBlNGU4YjEyNzcwZTQwNmJiM2UxYThkZTgwZGM1OWM0Y2FhMTU0OTZhIHB5M2stc3RydW5pCis1NTU2MSBlNmZjNjdhZDljNTRiYzFkZGRiMjFhNmMzYjI1YzNhYjI0ZDM5NGJkIHB5M2stc3RydW5pCis1NTU2MiA5Njk4NjhkZjE5MzhiYzQ4MmZjYzk4ZWY0YjY3NGY3YWI2YmY4MTdhIHB5M2stc3RydW5pCis1NTU2MyA0NmE5NGVhZDNkNjhkZTNiMzFjZDdhM2Y2MDUzODU1MTFhNTBiOTk3IGxlZ2FjeS10cnVuaworNTU1NjQgMjQ5MDA3Njc5NTI0NGQwNTJkYzFlZjhjMDQ2OWUyYjdhZmQ2NjliZSBsZWdhY3ktdHJ1bmsKKzU1NTY1IDk5ZTMzMDY4YzMzNDdkYzI5ZWVhMjg4OGU4ZmQ3NzEyOGIxZTA3NzkgcHkzay1zdHJ1bmkKKzU1NTY3IGNlYzJhOWMyMDBiYTJjYTJjYjZhZTU4N2EyNTE5MmQwMTMxNzc2MjYgbGVnYWN5LXRydW5rCis1NTU2OCA1MjJjNDkzOGJkZjY4MThlOThmYjUwZjlmM2Q5NjhjOGFjZjA4ZDRkIGxlZ2FjeS10cnVuaworNTU1NjkgMmM4YmEzZmFhZjQwYzA1OTUyOTM2OGQxMTQ5NTYzOTJmNWFlNWQ3YSBsZWdhY3ktdHJ1bmsKKzU1NTcwIDYzMTkyNzFjMjMyNjE3ZDhhZWJkNTU5N2I3MDc2Y2JiZDYzZDBhODcgbGVnYWN5LXRydW5rCis1NTU3NSBmNTc3NzVjNWQwYjQyMzY2MjhjMjkwMDExZWNhNDY5Njc1ZDE1Mzg2IGxlZ2FjeS10cnVuaworNTU1NzYgMWEzODVkMGFlODJiYTBlYTUwYjc0MDJiZTc3YzUwNDAyOTE3ZGYxMSBsZWdhY3ktdHJ1bmsKKzU1NTc4IDBlODBmYmQ3MzAwNWM2ZWNmNmE5MTRlNWYwMTQ5YjY3MzJmYmU0ZmEgcmVsZWFzZTI0LW1haW50Cis1NTU3OSBjYzBhZWVlNThhNGQ4NzI5ZGFhMzBjYTkyYjk5Mzc0OWVjNzJjOWE1IHJlbGVhc2UyNS1tYWludAorNTU1ODAgY2VjNmQ5NmMwODRhMTY5NmRmMDg1MGE4NTc5ZDJkM2MzZGNjMWY2YiByZWxlYXNlMjQtbWFpbnQKKzU1NTgxIDM0ZThlMDNlOTIxZjdlNDc3YWY2YTBjNTBkYTA2YzM4MDEwZDE0NWEgcmVsZWFzZTI0LW1haW50Cis1NTU4MiAyZjRkOTIwYTU2ZmMwZjQxZTIwY2RiNTRlZjMzYWY5NmUzMTc0M2UyIHJlbGVhc2UyNS1tYWludAorNTU1ODMgZGNiNDNmNDAzOTBiYTc5MmQ2ZTY5YjY2NmQ2MTY4M2Q3YmZiNzA4ZiBweTNrLXN0cnVuaQorNTU1ODQgMWVjMWFmYTJiZGI1OGMzOGM0MDk0NjBkZjU1MGI4MDk2N2E5OGIxNyBweTNrLXN0cnVuaQorNTU1ODUgMDg5ZjQ0OWEyMGNkYTAxOTM0ZmQzZTcyMGY5OWJkODdmNTY2YTM3MSBweTNrLXN0cnVuaQorNTU1ODcgODVjOTM1ZGJiZWYyNmJmNDA0NzgxNzJhNTUxZGIyY2UxOGZmYjRhNSBwM3lrCis1NTU4OCAwNDc4NmFlNTJkYWQ0MjEyN2Q1YjBkNzI1ZTcxYjczMzQ3NDJkOTZkIHB5M2stc3RydW5pCis1NTU5MCBiZWRmYmRjYWYzNTU3Y2QwMGZhNDE4NTU5NmQ0YjU5YzhkM2Q1ZWJiIHB5M2stc3RydW5pCis1NTU5MSA5NjU3YzMzM2M0ZWE4ZmMwZDc2YzhhZGZhMWFkMTFlNTU1NTgwNTQyIGJjYW5ub24tb2JqY2FwCis1NTU5MiAzODc3ZjM3Yzk4NjEwYmNjNmU2N2MzMjRkNDg4MzVmZGJhYmZiYTE0IGxlZ2FjeS10cnVuaworNTU1OTMgZTc0NmEwNmIzZWFmZTliYTA5MTljMDBjYTVkN2Y2ZjM1NjNkOGI4YSBiY2Fubm9uLW9iamNhcAorNTU1OTYgMDBmOTRkMzVjNjFjZTdlYmIxZDMxNzExNWU5NjQxZjliMjJjNTI1NiBiY2Fubm9uLW9iamNhcAorNTU1OTcgMWVhNGIzY2Y5ZDk4MTRlNzU0OWYxOWU1YWY2Yjg4ZGY3ZGY0NGJkYiBiY2Fubm9uLW9iamNhcAorNTU1OTggNWJjN2Y1NmY1YzMzZGVmODhhZjdlYTVkNzAyMjMxM2Q5MDQ3OGI1OCBwM3lrCis1NTU5OSBhZGJmNjgxZjFiYjJlYjc1MTY4OTA1MjM1NjcxMDE0MzQwYzVkNzU5IHAzeWsKKzU1NjAwIDEwNTY1MzA2MTZhYzNiMmQ4MzNmYTEzNDgxZTA4OTk2YjFmODI4MjMgcHkzay1zdHJ1bmkKKzU1NjAxIGU3MTYyYjZjYTdhMDQwZDhhY2FmOGU0N2U4NGU1NDBkNzhmNzdkZDQgbGVnYWN5LXRydW5rCis1NTYwMiAzODkwNzdhNTRmY2UzZWM4OWU3ZTdmYTY0NzgxZjFjNDZmNGRkMjZmIGxlZ2FjeS10cnVuaworNTU2MDMgZmJmMzQyYmNiNzg0NjUyNTFhZTkxM2JhZDZmZjkzNWYyODJmYzMyMiBsZWdhY3ktdHJ1bmsKKzU1NjA0IGVjM2I4ZTk0YTM1NTcxZTU5NTViNTc5ZmExZjEyMzJiMzA2NTlhNjYgbGVnYWN5LXRydW5rCis1NTYwNSBmMjhiZWQyNjRiMDJjYjMyMDJhYTIwN2Q3NGNiNWUwMGVlZTA1YzgyIGJjYW5ub24tb2JqY2FwCis1NTYwNiA1ZTQzYzczNjdkNTQ1YTg2YjI2MDNiNmViYWNkZTBiZGY2ZTRiNDQ2IGxlZ2FjeS10cnVuaworNTU2MDcgYzM2Yzg4NzlhOGRhZDk4NDU3MTllYWRiNmVmNjgwNGU2NTE2NjIwYSBiY2Fubm9uLW9iamNhcAorNTU2MDggYWE3MzIwNmM5Y2U2NzU2ZWJiNjM0N2EyNTU5NmQ5ODI5Y2FkZjVhYSBweTNrLXN0cnVuaQorNTU2MDkgZjZhOWUwMzRjYzYyODI0MjYzZWRhNDc4NzU4ZDg2MGViYzI4M2ZiNSBweTNrLXN0cnVuaQorNTU2MTAgMjQ5YjUyNWUxYWMwZTk4MGI0MmE5OGNmYzZhYjRhOTdiMGNhZTBjYiBweTNrLXN0cnVuaQorNTU2MTEgYjdjZmIzZmQ4ZGIwNTk5NGRmM2EzZDg0Nzk1OGU5NDI3ODliMDI2ZiBweTNrLXN0cnVuaQorNTU2MTIgYzMyODdlMTk1YTFkNTgzZWNhMmVmZjM3MDg1OTMzYWYyNDQzZGE3NCBweTNrLXN0cnVuaQorNTU2MTMgOWJhZWMyZjU0NTA5ZjY4MzU0ZGRiOWEwMmU1NzdjZTVmMTliYjQ5ZCBweTNrLXN0cnVuaQorNTU2MTQgNGNhZWViNDEzMTg2MmZlYTFjOWFlN2U2M2FhNmVmY2NjZTZiNzg2MyBweTNrLXN0cnVuaQorNTU2MTUgM2ZkYTllNmEwYjZkMWVkM2I3OTg5Y2VmN2U1N2JlNTE0MjRkMDljMSBweTNrLXN0cnVuaQorNTU2MTYgODFkNWIwMDcxMTY5YWMzYjE0MzE4NGM1OGI3MjQwODliMGJiMTI3MSBweTNrLXN0cnVuaQorNTU2MTcgOWRlODc1NjkxODFjYjhmMzFmZDFmYTA3NGY5MGNiODBkMjA5NTZhMiBsZWdhY3ktdHJ1bmsKKzU1NjE4IGFkZTdiMDY5M2UwNzZjMjEzOTNkMTJjYjQ2NjVlOWJmODk3MDY0ZjAgbGVnYWN5LXRydW5rCis1NTYxOSBhOWViYzUwNGY2OWQ4Y2NiOTI4YjIyYTNhNzYyOGIwMTU0NjA5ZjJiIGNweV9tZXJnZQorNTU2MjAgNzU4NjY2ZTI3ZmJlZmI0MTY0NTgxM2NmNWEwN2Y4ZDk0MzQxNmE1OSBjcHlfbWVyZ2UKKzU1NjIxIDhiNGZiNzFmZmYxZDM2NjM3MTYzMzAwOGExODBjOWQyNzU0ZDQxZGYgY3B5X21lcmdlCis1NTYyMiBhZWNkNzhhZmE1YTI2ZTk0Mzg3YjcwNGE0ZDI5MDY5OTdjOThmYTU5IGNweV9tZXJnZQorNTU2MjMgMGU3YzcwZDQxYTE5YjA2ZTkzZDM3ZGE2YzFjNDA0MWJlYTA0M2RjMSBjcHlfbWVyZ2UKKzU1NjI0IDQ4OTA2MGU5N2QxN2ZhODc0Y2U4YTcxYjg4Y2I4Nzg1NDEwODQzZWIgY3B5X21lcmdlCis1NTYyNSA4ZDYzN2Q4MTZmNzU0MTdiMDk5MWQ3YzJhNzg3MGZiYzM5YmZmNWI4IGNweV9tZXJnZQorNTU2MjYgMzcwMDUyZGM4OTkyZjM0NTE1NDI2Y2FiZjMyOTg1YzgyNmQ5YzM4MSBjcHlfbWVyZ2UKKzU1NjI3IDZkZDk3Njc2MzdiYjQzZDdmYjA3OWVhZGU3ODZmZTg1MTBjNDIxN2QgYmNhbm5vbi1vYmpjYXAKKzU1NjI4IGQ1YWQ5MTQ5MzYwYmI5NGQ2MTk2MWViOTI1ZTlmOTI5YThlMTBlNDUgYmNhbm5vbi1vYmpjYXAKKzU1NjI5IDM3Y2E0ZGQ4YWJlZjQ2OTNkYzJlNmY0Mjg2ZmEyZWQyZTM1NzNmYjYgcDN5aworNTU2MzAgZGU1MWFhYzQ2YjFiYzg5NDUzZTg2NGEwYzc5NmM0ZDYyMTc1MWY0OSBjcHlfbWVyZ2UKKzU1NjMxIGJhN2VhZWUzMzgyMjc5MThiNjA1YTJjNWEwMjQ2MjBiZGY2YTUxZmEgcHkzay1zdHJ1bmkKKzU1NjMyIDVhZDJkNzcwMGQzYzUwNTA1OTNhNWRmYjkyMWM1ODFkNjc3ZWY3MmUgYmNhbm5vbi1vYmpjYXAKKzU1NjMzIDUzODFiNGU3MWEwNDA2YzkyMjQ5NGY3ZDI5NGIwODc3ZWFmNGZhOTggYmNhbm5vbi1vYmpjYXAKKzU1NjM0IDUwM2Y1YTU2NDZkMTdhMDk5MjhiMzVhMTJlZDE3NGYyZjgxMDVjNDQgbGVnYWN5LXRydW5rCis1NTYzNSBlMTRlY2U3NzdiOGI0NWI4Zjk5MmVmNzI3MzAxZTczYTJiNmIyM2JlIGxlZ2FjeS10cnVuaworNTU2MzYgYzc4MzQ5NzEzMTdjZDQ5YmEyYjY1MmU4MTMzZTgxMjlkODFhZjYxOCBwM3lrCis1NTYzNyA4ODVkMGVmOTBlMGY0NDFjZTU3YjJhMWZiYjJiMTI1NTE3Mjc5OWFlIGxlZ2FjeS10cnVuaworNTU2MzggMDZlNmQ2MjE1YzViNzhiZDEzYTkxYjU5ZWUwMmFlMzA1MzQ4YzFhYiBsZWdhY3ktdHJ1bmsKKzU1NjM5IDc2ODg3ZTNlOGU1N2E2YWQ0ZDhhYTJjYTRhMDJlNjIxODZmMjM2ODEgcDN5aworNTU2NDEgYWU4MDU3OThmYTY3ODJjNmJkOTVjZjA2YWY3OWYwMDg2NDNmYTIyNyBwM3lrCis1NTY0MiA2N2VlNDY5NmQxNDlhYjY3YjVkYzkwZjdlOWFlMTBmYTdkNjgwMDQyIHAzeWsKKzU1NjQzIDM3N2I1ZGQ2MjkzZGE5OTY2MjVlOWFiYmQ2OTQ1OTViODM1ODk5YmUgcDN5aworNTU2NDUgYTFlZTI1NmZiYzhmODQ1OThhYTI1MDUwYzk0NDlmN2E3ZjE5NGRiNSBiY2Fubm9uLW9iamNhcAorNTU2NDYgMmFlOTk3NWFjYTIwNWU2YTAxYjA0NmZlNzI4MTEzYmQwZTJiZDg1OSBiY2Fubm9uLW9iamNhcAorNTU2NDcgOGIxY2RmOTMyMWZkMTM2MGExMDA1NTFhMjliNjMxNTBlMzdlMGZhZiBiY2Fubm9uLW9iamNhcAorNTU2NDggOTM4NjJhYTc2ZjdjMmEwNzk2MjU2NTdkNzVlZDk5MWY5OWNmMGQyMSBweTNrLXN0cnVuaQorNTU2NDkgOWIxZmZjZTI1NmI5YWFlNjg2NTk2Yjk2NWQ1YzYwYzIxOWNhNDI0YSBweTNrLXN0cnVuaQorNTU2NTAgNmMyZmE3MWRjNDU5ZjM4NTEwZTVhODgzYzZmZGI2OTk4ZWI2MzMxZiBweTNrLXN0cnVuaQorNTU2NTEgNDkyNjg3Njk1YzY2YzgzNTYyZmI2NDNiMDg2YzdkNTA2ZjVjYzA4MCBiY2Fubm9uLW9iamNhcAorNTU2NTIgMDk4MmZiMDhlNzliMWQ4MTQzNTBmNmNkNjI3ZjU2MzQyYmYwNDBhYyBiY2Fubm9uLW9iamNhcAorNTU2NTMgMDAzY2UzNmRkMjAyMjM0OTA4YzVhNzdhMjBlOWNlY2ViYzA1ZmIyZSBiY2Fubm9uLW9iamNhcAorNTU2NTQgMTg4MjE2YjQzZWY2YTc0YjM3MWViNDZmOGJhZDkyZDE1NjM2YjJmZCBweTNrLXN0cnVuaQorNTU2NTUgMzdhMjg1NmQ4ZjBlMWQ5MWNlYjczMTZiODhlZjEwODY4YTQ4N2RmZiBiY2Fubm9uLW9iamNhcAorNTU2NTYgNzViOWNlMWE3NzQ1ZjNjZjQxODc4Yzg3ZjdhODczMWRkZDY4MzdlMiBiY2Fubm9uLW9iamNhcAorNTU2NTcgNjJlMzk0ZDUwYWEwNjExMzM5NjE5NzMzODkyNGY0OThhNTQyOTYzNiBweTNrLXN0cnVuaQorNTU2NTggNjc5NmYwY2IwYmVhNDgxMDA4ZGUxMTQ1ZjFhYjE5MDgyOWQ1ZTVhZCBiY2Fubm9uLW9iamNhcAorNTU2NTkgZGVmZTI1MTNiNzhlMTcxMDU0N2JmZjZkM2U0ZjRkOWYzZmYwMWQ0MiBiY2Fubm9uLW9iamNhcAorNTU2NjAgY2ViYWY3YzNhYjhjNzUwYTgxNjFlOWRlZTNkZTIxZDdjNGZmNzc4MiBiY2Fubm9uLW9iamNhcAorNTU2NjEgYjZmMDQ5NzRkOGE3N2ZmZDhhMzYyZjdhM2Q0NDBiNmIwYWZmYzA4NCBiY2Fubm9uLW9iamNhcAorNTU2NjIgNTYyNjAyYzkxMDFkOWYxZWVhZmNhYWE2ZmE4OWE0MWM1NDE3YjM3ZSBiY2Fubm9uLW9iamNhcAorNTU2NjMgMzZhMDU2OTZiZTgyMTgwOTI2NWNkZGJjM2NiNTM4OTFlOTBjNzNjNCBweTNrLXN0cnVuaQorNTU2NjQgZjQwZmYyZDczOGVhNDI2NGIzMGViODc5NGMzOWVjNjgyOWE5NTk4OCBweTNrLXN0cnVuaQorNTU2NjUgYzQwYmZiMzdmYTE1NDI0ZTkwNGQzYWQ3MzE4ZmRjZThhMjZlY2Y5MSBwM3lrCis1NTY2NiA0MTgwNTk5OTRlNDcyMjJjYmE5ZDQ4OWIyNmYyNzE3NmExZWIxZTJkIHAzeWsKKzU1NjY4IGFhNGI3MjU0OWE2OTY4MjdlMGM0MzRhMTdiMDhkZWNmZDIwYTk2N2UgcDN5aworNTU2NjkgZDViYmY5NzU3MGUzNjI2ZGMxOGMxMTIwY2ViMzExNWUzNGM2MWEwOSBiY2Fubm9uLW9iamNhcAorNTU2NzAgZTcxZGU1NzUxM2UxYmQzYjJjYjVlNWY5YTc5YmM2MzExYjgzOGQ2MiBjcHlfbWVyZ2UKKzU1NjcxIDA2MzVhNmNhMTk4MDAyMjBlN2RkNDY0OWUyMjhmYjQ0NWQzZWMzNzUgbGVnYWN5LXRydW5rCis1NTY3MyA3ZDM3OWM0NzYwMDc0MjE0NTM5NjM3NzlkNTY2NTI0ZjI4ZTIwNTQ1IHAzeWsKKzU1Njc0IDNhZmZjZTJlZjc4MmNiZWFjNDVkZDNlNjNmYTBmNDhkNjZhM2FlNDUgcDN5aworNTU2NzUgZGQzOTYzNTQwY2Y3NzA5NDA5MGEyOTQ0MTUyYmJiMjE0YTBlMDcwZCBwM3lrCis1NTY3NiBkZGYwNDcxYTZkZTM3M2I5NGM0ZmM2YmFmZmRmZjJlNjkwZjFkYzVlIGxlZ2FjeS10cnVuaworNTU2NzcgYWFmM2I2ZDgyYjYzZjM2ZGQ4NzU4Y2Y3NzJiY2I1ZWU0NjYzNTZmMCBsZWdhY3ktdHJ1bmsKKzU1Njc4IDI3NWQ4N2E0N2Y2NDE0ZmU2OWYzNDkzODQwMWQ1YWMwMDcxYTNmNDYgcmVsZWFzZTI1LW1haW50Cis1NTY3OSBjZGVhMDk0Y2YwNDUxZjY3MGY2NDIzNjhmZTUzYjJhMmEwNzcyOGZhIHAzeWsKKzU1NjgwIDM5NGFiNWZmMTg1NGU0MTZhZDNkMjY3Mzk5M2ZmMDVmYTYzYmMyNTMgY3B5X21lcmdlCis1NTY4MSBiYThiNWFkOGU3NmViZDdlY2E1ZDBhYzI4YTVkZDNkMDA2MzIwOGFhIGNweV9tZXJnZQorNTU2ODIgNTE2Nzg1Nzg1MWMxMDlkNGIyNjRhYWQ3YTA5MzAyNTUxYzFiMjAyYyBjcHlfbWVyZ2UKKzU1NjgzIDQxYzdjZDE2YjE5OGMwMDZkYTM0MDEyMDZjNTdiZmQ3MTQxMzJmYjcgYmNhbm5vbi1vYmpjYXAKKzU1Njg0IGFjZDFlMjYyNDk5ZGQyOGNmYTNiNGRmNDQyOWE2OGI3MjM0Y2M2MTcgYmNhbm5vbi1vYmpjYXAKKzU1Njg1IGE2MDQyYzdkN2M1NWZhMmMxYjEyZWFjMDc4ZmIwZjE1ZTVjZDc2MzkgYmNhbm5vbi1vYmpjYXAKKzU1Njg2IDVjMjk0MTFhMDVhNWY1OWM1ZWY4MTBjOGQ2N2UxZTBjNWE4NDc2ZjggbGVnYWN5LXRydW5rCis1NTY4OCBhZDZjNWI4OGI1YzRiMDE5NzBlMGMxMzQwYWVhODY2MjU1NzBkOTM0IHAzeWsKKzU1NjkwIGMyZGM0ZDE3ZTk4YmM0MDRkNDY5NDc2MTI4YmY1NzM4MTU4NzYxN2EgbGVnYWN5LXRydW5rCis1NTY5MiAxNzY5OTkzMTE3OWU4ZjMwNTZiOTU0NzM5ZGE5MjBmOGNiMTgyNjIwIHAzeWsKKzU1Njk1IDEyMDBjMGUwOTU1Mzc2NTkxMmRiMTlkYjIyMzkzYzVhNjgwMGZiZmYgY3B5X21lcmdlCis1NTY5NiAwZTI5YmI4MGUyMjc4ZWY2MmU1ZDIzNDI2OTIzYWE5NjJiZTMxYjA1IGxlZ2FjeS10cnVuaworNTU2OTggOGU3ZWNiZDhhYWFiMTg3Njg2MDE3MzEwMTAxNjhlYjU4MzZjODY1ZCBiY2Fubm9uLW9iamNhcAorNTU2OTkgMGY0MjRkZTQ1NmRiNDYwOTkwZWU3NTY0ZDNiMTNmY2I2NzhlMmEwNyBjcHlfbWVyZ2UKKzU1NzAwIGJiOTQyYjYwYjBmZWYyYjYyZjU5NzUyNjMyMmE4YmI0MjY0ZDkwZTIgY3B5X21lcmdlCis1NTcwMSBkZmNlOWEyNjM1ZTk2Y2YxMmE1MzUyYmE4M2UzMGIyMmI1MDU5YjAxIGNweV9tZXJnZQorNTU3MDIgZGYzZjc2YWNlMmQ3NGQ3M2RlOTAzZjA1OGRjYWU4NWIzYTg2ZTNiMiBjcHlfbWVyZ2UKKzU1NzAzIGFmMGFjODM2MDJiNDc4NmEyMTE1ZTViZDEzNmE1NDA3ZGRlYjkxNTcgY3B5X21lcmdlCis1NTcwNCBkOGE2YWZhNmU4YzYwZWU3NWQ1YTA0OThmNTU2NDcyODY4OTk3OTM1IGJjYW5ub24tb2JqY2FwCis1NTcwNSBkMGI0YmJhYWZhYWU0YzQxNWI1NWY5YjdiMGY5N2Y4ODUyNzA0YTI2IGxlZ2FjeS10cnVuaworNTU3MDYgZGQ0Njg5ZDBlYzg1YjZjMTAzYTU2MzNkNDAwYzk2NjljZTFmMjUxZiBweTNrLXN0cnVuaQorNTU3MDcgZjI4N2I4OGMzYzIxY2ZiYzU0NDI1MzIxZWFhZTI0NWEwOGZmMDc4NiBwM3lrCis1NTcwOCBjNDUxMTE1MGVmNjA3MTIwZTZjMzlmZTNkOWY3YzRkYjQ0ZTNkYWM0IHAzeWsKKzU1NzA5IDcxZDg2MWVlOWZmMGRiZGFlMDdhZTNjNDBiMzJlZWMxOGEzMDY2YmEgcHkzay1zdHJ1bmkKKzU1NzEwIGI4YmVmOWExY2RmMDFjZDgxYjRkNmU3NTFhNjgwNmY0YjRiZDM0ODYgcHkzay1zdHJ1bmkKKzU1NzE0IGRiZDJjZjQwNTI3ODI1ZmJmMTE0ZTRhOTM2YTA2ZTcyZmI2NTk1ZDggcHkzay1zdHJ1bmkKKzU1NzE1IDEyN2YxNTFmMzE3Yjc3ZWE2MTMzOGQ2NzY3YmQ4NDA2ZDkwZWEyNzcgcHkzay1zdHJ1bmkKKzU1NzE2IGIzODBjOWM0OTczOGFjYTA1YTE1M2VkNjVjYTZjN2EzOGU2ODI2ZWUgbGVnYWN5LXRydW5rCis1NTcxOCBjZWYwN2RiMWNhZWQxYTA4MjdlNDliZDkxNzFlNDNiNTJhZWQ5OGQ5IHB5M2stc3RydW5pCis1NTcxOSA5MWJiMTk4MTNjYTYxMWZjYTIxMDgxZGYyYzAzZTBkMDU1ZDQ0NTc4IGxlZ2FjeS10cnVuaworNTU3MjEgYzYxY2FhZjU2MTYzMGExZWE3MGQ0YTUwNGU4ZTc4Njc2YTIxOGUyZSBsZWdhY3ktdHJ1bmsKKzU1NzIzIDY2N2MxYTcyNzljOWY3Y2I0ODc4MzZhNTc2OWY3YjFlZGJlMjMwMTUgYmNhbm5vbi1vYmpjYXAKKzU1NzI0IDVjYTdkMTcwZTQzMTJmNTQwYjRkNjAyYjhlZTIyZThmMjM0NzNhYTAgcDN5aworNTU3MjYgY2NmMjA5OTI1MzgzNjllN2Y5ODIwNjdjNTU0MTBkM2E4YTAzNjAyZiBsZWdhY3ktdHJ1bmsKKzU1NzI3IDk2ODYxYTA0MWY1NDZjZjQ3OGY3Njk2OTg2MzRmZDM3OTc0MjBhMjkgcDN5aworNTU3MjkgMjkzNGFmMDVmOGJmYjA5MmJjZDFjMDVkYWZhNzRlYTEyYmVjODc1MiBwM3lrCis1NTczMCA5YWNiMzk0NzgwZGY5MzYxOWJkYjA0ZTZkMjNlMWM1NTI2YWFlZjljIHAzeWsKKzU1NzMxIDI0ZWZhMmU0NDhiY2UyZmFlMTBhYjRjNzdmYTFiODM0YmJmNjdhZGUgbGVnYWN5LXRydW5rCis1NTczMiA5MDQ4N2E4ODdiZTEzNmZiZTkyNDFiZTc3ZTFlYWNmZTc5YTE1NmUxIGxlZ2FjeS10cnVuaworNTU3MzMgZmVjMTI5NjU0NGFiOTZjMGVmNTI4MmJkZTRiMjRjZDNjZmMzOWMxNCByZWxlYXNlMjUtbWFpbnQKKzU1NzM0IGYwMTIxYjIxNWQzODk2MDMxMzM3NGQ3Y2ZiNmFiMTU5MzgyYmU0NDMgY3B5X21lcmdlCis1NTczNSBmYmJmODUxZTIzMGE1OWU1ZmQ2MzljNDQ0ODQ5OGY4Yjc4ZmVhNzU3IGxlZ2FjeS10cnVuaworNTU3MzYgZGE1MWY3ZjkwOGNhZDhmZTdmZDkxYjkyMWRjMzhmODUzNzQ1ZTE5NyByZWxlYXNlMjUtbWFpbnQKKzU1NzM4IGRmZjYyNGIyYTI0OTEwNDJlNzI4YjIxNWU0YTkyMjViMmFmYzdmZWMgcDN5aworNTU3MzkgZjlmNjAwMDMyN2UyN2JkMmViOGQ0YWM1YjExOTM0YmZkNDk5Mzc0YSBsZWdhY3ktdHJ1bmsKKzU1NzQxIDMyOGU0NTllYjY3MDI5NjExZmRmOGEzODc1NjAzMzM4MmZmMTUxYjEgcDN5aworNTU3NDIgN2IzZjY0YjNlNzM5Mzg4ZWQ0M2ZkMGI0ZGFlZWE4NGMwNzk5OTY5OCBwM3lrCis1NTc0NCAwNGY0YjU1N2QzYzQ1MTFiM2NlMTBlMzFhMjY0ZGZhOWEwNTFmODA1IHAzeWsKKzU1NzQ1IDA0MTg2ZjUyMTkyZGRiMTNlM2UyZWYzMTAzMTU1Yjg4NDFkMzgzOTQgcDN5aworNTU3NDYgN2UwYzIyMGI1NWE2NDAzM2M4M2Q4N2I2MWFkYzk5M2NjOWU5ZTkyMyBsZWdhY3ktdHJ1bmsKKzU1NzQ3IGI0ZjEzYzdmZGZkODhkMTY4YTE1ZDUyMjJkYjBhMGQ5MzgzNzNjNmMgcmVsZWFzZTI1LW1haW50Cis1NTc1MSBlMzFkMmY5NWYyMjU0ZDI0NmQzZTU5ZjI0M2JiYzllMGUzNWZkZDk3IGxlZ2FjeS10cnVuaworNTU3NTIgZTE5OTcyODM0MTcwODhkYWNiNjc5YzVhZjIxMGMxZGY4Yzc5YmUzMiBsZWdhY3ktdHJ1bmsKKzU1NzUzIDgyYjkzZmE5MWRjZjM0MTNkMDJiOTdmZjJlY2QxOTA5YzM2ZTE0NjIgcmVsZWFzZTI1LW1haW50Cis1NTc1NCBhYmRlMDgzODQzY2QyY2EzMjE5YWZlZTg1NDcyZmVkZmRmOWQ4NjM1IHAzeWsKKzU1NzU1IGI4YWJkZmExYzlhZmMxMDAyZDEyMjk1MGYzYjI5YTU1YzQwZGYwM2MgcDN5aworNTU3NTYgZjZmYWIxYzcwN2U5MDlmZmQwNTc5NGNmZTFmNmRmNTgyYTAxY2U3ZiBjcHlfbWVyZ2UKKzU1NzU5IDUwMTRmOGRhYTU3ZmFkNTc4NmJhYTdkZjQzYTBkNDY1NGNlM2ViZmEgcHkzay1zdHJ1bmkKKzU1NzYwIGU0YWIwODAzOWM3NWY4MGZkOGY4ZWU5NTVmNjAxNzdkNTU2N2RjMDYgcHkzay1zdHJ1bmkKKzU1NzYxIDczZGQyZGEzMWQzN2ViZDgzZWZjY2JiNTBjYTg1MjIzNWUyN2M1MGQgcHkzay1zdHJ1bmkKKzU1NzYyIDhiY2ZjNDZlNDQ0YjU4MjY2YmRjY2IxZjFhYTYwYmZiZmUxMzljNTkgcHkzay1zdHJ1bmkKKzU1NzYzIDUzOTYzYTJmNTY1MjliZThjMTY1NDg0ZTVkZTZjZGZkODlhOGY0MTcgcHkzay1zdHJ1bmkKKzU1NzY0IDU3OThhMmZiYWIwMzA0ZjEzNjdiZjE1ODY5MmI4OWM0ZGJmMTQ3MWYgcHkzay1zdHJ1bmkKKzU1NzY1IDcxNjA0ZDQ5YTM4NjM5ZWNhMTQ3MmYxN2Q3NmI4NTgzOTExYTc3ZTUgY3B5X21lcmdlCis1NTc2NiBjMzZhYzY3ZWVmNWI3NzZhMTJjMDQ3NTNmNzA4YTVkYzlhY2ZiZWUwIGxlZ2FjeS10cnVuaworNTU3NjcgNGIzNGZhYWE5NzdkZTg5NjliMmUyYjk0NThlOTExNTY5MjY5MDEyYSBjcHlfbWVyZ2UKKzU1NzcwIGI2YzFhMWExNWE2Y2RiNDUwMWEwNThmZTBkMzk2MDhiYzg5OTFiYWEgbGVnYWN5LXRydW5rCis1NTc3MSBlM2ZiZGQ3Y2I5NjljZWI4YjJjODQzOTZiZGVjODgzOTFmNmFjMDI3IGNweV9tZXJnZQorNTU3NzIgNzYxOTRlNjgyZTIxY2M2YWQ1M2ZkNGM0MzBlMzQ1MmMzZGM4ZWQ5NiByZWxlYXNlMjQtbWFpbnQKKzU1Nzc0IGM1Y2Y5YTRmNGZhOTc5Y2QxNzU1NTkxOWI2ZDI4NzUxNDM5NDhiOGQgcmVsZWFzZTI1LW1haW50Cis1NTc3NSAzNWFjY2VkYjVkMDNiNDhlMDFkNzlmODI0MDAzZjFmNmJlZjkwOTEyIHJlbGVhc2UyNC1tYWludAorNTU3NzUgY2ZiY2ZmNjZlNzI1YWI0MjhlM2U5YTJiMTVhMmM3Nzk2Mzg5NmNhZSBsZWdhY3ktdHJ1bmsKKzU1Nzc1IDAxODEzODQxZDY0YmZiNDM2NmNlMGRkMTFhNmUwZjY4MjhkMmY2MGIgcmVsZWFzZTI1LW1haW50Cis1NTc3NiAzOWExYTIyZjk2Y2Y2M2YxMzQyOWQ3NWFhNDIwZTc4MmMwZjg4NDJkIHB5M2stc3RydW5pCis1NTc3NyBiM2Y2MWJhZTEwYzM4Y2Q4NTk0YTBlZjMxMDViMWI2ZmM3MjgxYWUyIGNweV9tZXJnZQorNTU3NzggZWYzNzQzMWViZjJjOTQ1ZTFlM2FjODEzYmZlYTQyYmY5NjFkZDdiYSBweTNrLXN0cnVuaQorNTU3NzkgNGM1ZmJlNjViN2RlNzkzNTlkNGYxNTc1NjRmMjhkMTY4NjA2NDg3NSBweTNrLXN0cnVuaQorNTU3ODAgYjMwYzc1ZDIyZjM0YjIzOTcwYTRlOGUzOGQyODg2YzRmYjQ1OTkyZCBweTNrLXN0cnVuaQorNTU3ODEgNzAxNWNjY2YyOWUzYmJkNzVkYzI3NDc2MmMyMDlkM2I0ZjIzYTBlYiBweTNrLXN0cnVuaQorNTU3ODIgMzBlNjFhYzFkNjZjNjJjY2Y1NDA5YTU1NDZiNTY0NTA4MGZhZDUwYyBjcHlfbWVyZ2UKKzU1NzgzIDlhZjUyNGUzNTFmMzI1MGYzMWYwZDY0OTA3ODc3YjhlYjcxYTJjMmIgbGVnYWN5LXRydW5rCis1NTc4NCBmMjI3NzQzOWRjZGM5ZjhhZDRhODgzOWE0OTc4OThjMDJjODNiYzgxIHJlbGVhc2UyNS1tYWludAorNTU3ODUgNTg4Njg2ZDRjMmNmODdlYjk2ODRiNzZkYzVkZDI5MTljMDc3MjZjMCBsZWdhY3ktdHJ1bmsKKzU1Nzg2IDZmZDhkNTI0ZDU2YjJlNjhlZWI2NTQyMzg4MGU1NjUxNDIzNjA4ODAgbGVnYWN5LXRydW5rCis1NTc4NyAxMTkzMGRjZjlkNGZiNGRhZTZjOTRlZjRiN2M1MGU0MDYxNjFjNDdmIHB5M2stc3RydW5pCis1NTc4OCA3ZTUyYjViZWM1YTQyNjk5NzYzNTY1MzU5ZmVhY2E4OWJhNjgwMmExIHB5M2stc3RydW5pCis1NTc4OSBjZTVhZjlhNzQ2Y2IyMDhjM2UyYzM2YzBiMjA5MWM5MTFkNjI5MGZiIHB5M2stc3RydW5pCis1NTc5MCA0NTk2NzI3ZjZjMzliYzU4ZjgxZjE3ZWI4YjNkNWIzM2E5Y2E5MzE4IHB5M2stc3RydW5pCis1NTc5MSBiMDVjNmQ0MmQ0ZjcyMWZiNjZiZDkzODA5MzJiNjRlMTdhYjYwYmVlIHB5M2stc3RydW5pCis1NTc5MiBmMTQxYzVmNzc4NjBlMzBkYzM5Njg2ZTQ1OTVlOTQ1NGI1OTBjMTVkIGxlZ2FjeS10cnVuaworNTU3OTMgMDU4NzlhYjg3ZTViNDg0Yzk5NWI1ZTY1ZTQ0MzFiNDk1ZjY2OGVlZiBsZWdhY3ktdHJ1bmsKKzU1Nzk0IDdiMzdhNDM3MjM2MTYzZjhiNDNhOTY2ZjgzYWJiYmNlNmFmNjRjZTQgcDN5aworNTU3OTUgOWQwMmE0YWRmNTc0ODFiNjBkMmY5NzViNmM1NzlmMWQ2ZDFhZDU5OSBweTNrLXN0cnVuaQorNTU3OTYgYjM5MDBhNTEzNDZiNTJjNGQxMWRlOTk2YWYwMDg3YmQ4ZDc5NDc3NCBweTNrLXN0cnVuaQorNTU3OTcgNTliN2U5MzQ2ODg1Y2M2MGNiYWVkOGYwNmM3MGFkZjg0ZGJlZWY5YSBwM3lrCis1NTc5OCBjNjM5MjI4Y2ZlMjNkNDRhOWNhMTU5MTE2YjkzNzc4NjZjYjI1ZjY4IHAzeWsKKzU1Nzk5IGEzMjYxY2RlM2EzN2U2ODNiMjI3MTA0YzVkZWM3M2Y2NjYwZTM2NzIgcHkzay1zdHJ1bmkKKzU1ODAwIGZlZTcxYzdhZjUyZjRmMGUwOTZlZGJhNTU5M2MxMTJiNzlhNDZiYjkgcHkzay1zdHJ1bmkKKzU1ODAxIDk0MmQ4MzAyZjRkNmYxNTQzOTQwMjQwNjMzMmE0YzczNGY2YzVmODYgcHkzay1zdHJ1bmkKKzU1ODAyIGM4YjBlM2I4YjQ1NmJjOGYyYWI1OWQ0NTVlNjc5YTMxZTRlNDc0ZjMgbGVnYWN5LXRydW5rCis1NTgwMyBjMmFjMjJjNmY5OGQwM2ZjZDI4NDY5NTE0YjE3MDdiYThhODZhMTFiIHJlbGVhc2UyNS1tYWludAorNTU4MDQgMWJjOTAxZGRiN2RjMjFiM2FkZGE3ZTk3ZjEwMjBiNmE4ZTZkMDRkMCBsZWdhY3ktdHJ1bmsKKzU1ODA1IDgyM2MyZjc1OTFmNTAyZWE4NGUwMDBjNDM1M2U4OTNiMWY5YWM0OGQgbGVnYWN5LXRydW5rCis1NTgwNiA4MTUwZDFmMDEwYWFjNTY2ZjIzZDAyZmE2OWU5NTVjNzY3ZTFlN2U3IHJlbGVhc2UyNS1tYWludAorNTU4MDcgMTQ3NDViNGZhNzE4YTU5ZjVkNTFkYTQ0Y2Y2ZTk4OGM5NTQ5NzJiNCBweTNrLXN0cnVuaQorNTU4MDggODI3ZWM3NjgwMTk5NTM0ZmM5Y2M0ZTliZGNmYzRjZGQyMTY1Y2RhNSBweTNrLXN0cnVuaQorNTU4MDkgY2Q4ZjE2NWJkN2UyOTdhNGExZmJiYzZhYTBhYjI5MmNkNTAxMTgwNSBwM3lrCis1NTgxMCBjNmEwYjc1ZGJlYzIyOGZmOTA3NTJjZjJiNWUzZDkzM2RkMjk4OTQzIHB5M2stc3RydW5pCis1NTgxMSBlZjA5Y2IwMTE5NTk2NGEzZmRkNjIxZDdlMTVmODFkMmIwYzliMmZmIHB5M2stc3RydW5pCis1NTgxMyA1NGVmNjQ1ZDA4ZTRmYmI2YzM5Mzk0YjBhNWRiYzcwOTE4ZGFlY2MyIHB5M2stc3RydW5pCis1NTgxNCBjNDFmZDU3MjM4NjA5NjAwOTcxNGJjNzhmOTQ4OGZlZjBhMTZlOGMxIGNweV9tZXJnZQorNTU4MTUgZTQyMDAzOTM2OGI3OWJlMmIxOTJkNDAyNTUzYWQwMjgyNWMxYmFmYyBweTNrLXN0cnVuaQorNTU4MTcgYWU2YmE2MTg4ZDM4ZDQwNGUzMGFhYzdkNTEyYzZiMDc1MjMzMGVjMCBweTNrLXN0cnVuaQorNTU4MTggNjQ2NGNjNjM4ZmFhMGQxNDhmNjdlMTcwYTZhMzJiODFjZWYzZmExNCBweTNrLXN0cnVuaQorNTU4MTkgZTY2ZGFmYTk4NDAzZDYyNTY0NDYyMjU4MDVhOGVkMTMzM2I5NTAxNSBjcHlfbWVyZ2UKKzU1ODIwIDE0ZWM5NjczZjg5NDdjNzNmMzJkZWVkYjc0NTJiYjhkZTdkMmNkN2EgcHkzay1zdHJ1bmkKKzU1ODIxIDI0NTNiOTM3OTI1ZTg5M2ZlODY3MzJkNzk1MGM3OTliNzg5MDQzYjggbGVnYWN5LXRydW5rCis1NTgyMiAyOWQxYWYyMjBjM2M3YTViNWM0YThmZDBlMWNjMDMzMmY4ZDc4NGRiIHJlbGVhc2UyNS1tYWludAorNTU4MjMgZTE1M2JhMzUyYjUxM2M1ZjhjNzhhOGRiNzE3MzllZjg4MDJmMGFhMyBweTNrLXN0cnVuaQorNTU4MjQgZjQ4YzE5N2Y5YzM4ZmRlNmY2NDU2M2JjYTMzYmIzNzk4YzE0OGE0MSBweTNrLXN0cnVuaQorNTU4MjUgNThhMTMzMzBkZmRlOTk2N2Y5MzgyMjllZmM1ZWNkMTk2NDRlYWM0OCBweTNrLXN0cnVuaQorNTU4MjYgMGQ4MWE2NTY0MTJhMTdkNDFhYThhNzU3YTY3MjAwMjc1MmMxNDQ3NiBweTNrLXN0cnVuaQorNTU4MjcgMTRiNjVkZTliNzk4NTQ5MGExNzhiNTZiMjI0YTZjZDgxNjVmOTQ3NSBweTNrLXN0cnVuaQorNTU4MjggNTIyYTQ5NDVkZWY4MGU2MGM3MjNlN2I1ZjMzOTM1ZTA1ZTRlNTFjMCBsZWdhY3ktdHJ1bmsKKzU1ODI5IDFiYmNkMzkyNDE3ZGNhNTczYmRjMGQyOTIzMjQyMjQ4Zjg2OGFhNDQgbGVnYWN5LXRydW5rCis1NTgzMCAxMGY4YThhOTE5ZTJhMGQwOTdiN2EyYzQ5YzJiNDRkNTMxMmMwMTY3IHJlbGVhc2UyNS1tYWludAorNTU4MzEgN2I4NGU4OTE5YjAwMGM1MTMyNGE0YmE1NmViNzRlNDg4M2NhYTc1ZSBsZWdhY3ktdHJ1bmsKKzU1ODMyIGI0ZjRlZTg0YzMwZDdhYWU4MTJkY2NmODZlMDMxMGQ5NTlmMjY2ZWUgbGVnYWN5LXRydW5rCis1NTgzMyA4NjkxY2M3NmQ0NDE5MjUwY2U1MmYyYzg4NjUxYWJjMDMwYTA4MDRjIGxlZ2FjeS10cnVuaworNTU4MzQgMDY3MmRiZWQ1ZjdhOTc4ZTE1NjYzZDJmYTY0Zjk3YTFlM2I2ZWQ4MiBsZWdhY3ktdHJ1bmsKKzU1ODM1IGQ2MGQwZDBlZTRmOGM5YzgzNzI5YzNiZDY3YWJjYjRkY2JiMTBhNzIgcmVsZWFzZTI1LW1haW50Cis1NTgzNiAyYmY0ZGM5ZDA2NDdiY2FlNTYxMjQzOGQ2NjNhYjlkOTJmYTM0NzJmIHJlbGVhc2UyNS1tYWludAorNTU4MzcgMDUyN2FiOTQzYTRmMjIyY2Y4NjE4MTJjYjc3OTIzMGI4ODk2NWQ4YSBwM3lrCis1NTgzOCA3OWYxM2JmOGRkMjdhMjg1NzhkYTlkNmEwOTdkZjhjYzRjZjMwZWYyIHAzeWsKKzU1ODM5IGU2MmI2MDZlZmYwYjgzNjZlZjAwZjlhZjY2YzUyNjg3ZDk1NGQ4MDEgbGVnYWN5LXRydW5rCis1NTg0MCAyYmQ5NDE3ZGFjZDVjNTNhYmU3ODU0ZWVkNjQ0ODljMDQ5YjBkZjA5IHJlbGVhc2UyNS1tYWludAorNTU4NDEgMTZjZWU2NzRhNDEwZTU5MjYyNWJlNDYwY2M4Y2ZhMDVmNTcxNjQ4MCBsZWdhY3ktdHJ1bmsKKzU1ODQyIGU4NDEzOTcxMjEyZGY5NDUwOTBhNDhlYmVkYjY1NGQwNTUxZTU1ODYgbGVnYWN5LXRydW5rCis1NTg0MyAyODgwNWE3MjA0NTQwMDJjOGIzNmQ3YjU4YTZiMGY5NTk1NzMxMmFiIGxlZ2FjeS10cnVuaworNTU4NDQgN2M5MjI1ZGE1ZjYxMTU5YjQzNjhmMzQ4MjM4NWJhNzg4MDc3ODk0NiByZWxlYXNlMjUtbWFpbnQKKzU1ODQ1IGUyYzM5YTMwZTA4ZGQ2ZGM0OTlmNWI1YzcwMWQ3NjllNmFkMjBhYmIgbGVnYWN5LXRydW5rCis1NTg0NiA3MzFiNjk5NDIzMTc4MDE5ZjA2MmY2MGFjZDYxMGNlYmI1M2NmZDRjIHJlbGVhc2UyNS1tYWludAorNTU4NDcgM2RjNTA3Y2EyZTJiZWJiNTEwMzRkZGRmNDI5ZjkzNDliMDdjM2YyYSBwM3lrCis1NTg0OCA1OWM2ZjRjYmIzMjY4ZWMyYTQwNzgzOTM3YjdmN2VkNTQ4OWZlMjE2IHB5M2stc3RydW5pCis1NTg0OSAwMjIyNGRhNjBmZDE4M2JmZTE1YWFlOWRmYWYxZjU2ZDBkOGY4M2YwIHAzeWsKKzU1ODUwIGNkMTI1ZmU4MzA1MWI0ZTUwODc4OWRiODY0NDcxYzZjMmYyMTE3ZjggcHkzay1zdHJ1bmkKKzU1ODUyIDY0NDM4NTNiYTMxNDg5MWU3Y2RlN2MxZWIxNDg5MTVkMTcxYWQ1NmIgcDN5aworNTU4NTMgNmJlYjc1ZWVlOWM1MmYyYjEyYzliNDdjYzFkMTg4NjNlMzZiNjIzZCBwM3lrCis1NTg1NCBiMWI4ZWU4MDdiZGFkZTIxOWYzMDZjMmUyMzE4MTUwYmY3Yzg1NzYxIGxlZ2FjeS10cnVuaworNTU4NTUgM2RkYWFmNjE0ODA0NGFiNzllMDY3N2IyMmQ1Mjc0YjQwYjkxZmI1YyBsZWdhY3ktdHJ1bmsKKzU1ODU2IGIyMzlhMmJjYjI0ZjM1M2MxODIxMzc3NGQ0MDU0NTg2NDM0NTg4NGYgbGVnYWN5LXRydW5rCis1NTg2MCA3ZWFjY2Y1M2FkYmQxNGMzYThiNzBhMThkMWQ4ZTliMWZlZjU5ZjVlIGxlZ2FjeS10cnVuaworNTU4NjEgNzk5MGJiMjc1OWNiMzc5NGM3MWU5NzFjNTBjNjM4ZTYxYjAzZDI2ZSBweTNrLXN0cnVuaQorNTU4NjIgZjViNjU3MzFiZDZjOWZiNjFhZGI2YjU2Yzc0YzNmZDM3MGE0NzVlZSBweTNrLXN0cnVuaQorNTU4NjQgNmE0MzgyY2ViNzFlMmM5M2NmZWVkMmU0NTg4MGQ3ZWRkMjg4NzU3OSBwM3lrCis1NTg2NSAwZTliMGI4ZmMzZTdjZjFkNmZiYWQ1YzE0OGFlMjI1Y2RlZmY3OGU4IHAzeWsKKzU1ODY2IGIzN2E1NjhmZDQ0MWViNTVhMmFlOTU1ODYzOWJiNzZhZDBlYjdjMjAgcDN5aworNTU4NjcgMmQ1ZTIzNjVjN2RiMDViODMwZTUyMjJkNGYyYmM0NGNlZDc4ZjAzZCBwM3lrCis1NTg2OCA5ZTg1N2I2YzFlNTYzZTc3NGY0NDQzMjNjZDAyY2E1ODQ3ODZkNDgwIHAzeWsKKzU1ODY5IDE5ZmE5YzdkM2M0ZjA5ZDRjMjM4YzQ0ZjdmNjcwM2RkOWVhY2VmNTIgbGVnYWN5LXRydW5rCis1NTg3MCBlMWFmZTU2Y2E2YmEzMDgwOTIxMzIyODY3ZjIzNmQ5MzhjNjhkMjAyIGxlZ2FjeS10cnVuaworNTU4NzEgYjdmOGRkZDA3MmI4NThmYTM0ZGE5YWMzMjkyMGI0NzAwYzY5ZTJkYyBwM3lrCis1NTg3MiA1OWJjOGRhMDFjNjU5Y2Y4MTQ1N2YwZmYwYWYwMTkxNDRhYjg1M2FiIGxlZ2FjeS10cnVuaworNTU4NzMgZGRlN2MzN2Y0NTM2NGQ3NjYxZjM4MGJhYmQ4YmFlMGJkZDBiY2U0MCBsZWdhY3ktdHJ1bmsKKzU1ODc0IGI5NGYyODQ4MDViZTcwODI2ZTFhNTk4YzYyNzE3Y2RmYzEyMGNmMjEgbGVnYWN5LXRydW5rCis1NTg3NiAzNmI4ZDc0ZGViOWU5MjEwMmM5YmE1ZjhjNDZmY2YxZDcyNzg5MzNlIHB5M2stc3RydW5pCis1NTg3NyA3NWVmZTZiZjhhM2VjZWQ4NDFmYmVmZDZhNDdiOWE2MGYxNWRmMzFjIHJlbGVhc2UyNS1tYWludAorNTU4NzggNzFmMzE5MjkxNWUxMzFlMmY5MWE5ZDI4N2ZlMTM2OGU4YmQwYTQ3NyByZWxlYXNlMjUtbWFpbnQKKzU1ODc5IDQzMzIyZmY1ZTMxMmM0YTU0OTA0NWNlNjU2ZDEyNjQ0ZjE5YzEwNzEgbGVnYWN5LXRydW5rCis1NTg4MCBjOWUzYzgyODM4YzMzODMzY2Q0MGY3NWQ4NjM0MzNjNTJiYTAyYzJlIHAzeWsKKzU1ODgxIDczYjZjZWJjNmY3MjdhMWM5YzRhYzA0ZWZkNzc3M2UxMDRiMDJiZjQgbGVnYWN5LXRydW5rCis1NTg4MiBiMzU2Zjg3MjA5NDFiMjU5MmEyYjdkMmM3ZTQ1MjZhZDIxNTNkYTAzIGxlZ2FjeS10cnVuaworNTU4ODMgODIxNzhhNjA4MmVhZmJkMTUyMTRmZjQ2ODU0Zjc1OTM3ZmE3ZjkwNCByZWxlYXNlMjUtbWFpbnQKKzU1ODg0IDZmM2MzMzVlZjcxNmZmZTA0ZDhkMWNhYjI2MjA0OTZmZGNjYzNkNmEgcDN5aworNTU4ODUgOWI2YzQ2OTQ2ZTAyZGQ1Y2ZmMmFkMDljODIwMTc1NmUwNTAxZDZhMSBsZWdhY3ktdHJ1bmsKKzU1ODg2IDY0NDk4NTBjNTc1OWE1MGFjMjZlMTM2MmM4MjNlMTJlOWM5YjU0MTEgcDN5aworNTU4ODcgZDFkNzljNzFmZjYyY2FhZDg4YTRlM2FjYzcwYTAxY2MxMDllMGFjNiBsZWdhY3ktdHJ1bmsKKzU1ODg4IDlkNDA1ZTEzM2QwYjI0Nzc2Y2NmMDM3ZDYxZTZjOWMwZjg3ODQ1ZWIgcmVsZWFzZTI1LW1haW50Cis1NTg4OSA5YmJmZDg0NTY3ZDUwYTQwOWRiY2YzMjBjZmE5YzAyY2E1ZDk5ODI1IGxlZ2FjeS10cnVuaworNTU4OTAgZDBlNGEzMmY2Yjc4OTUxMmViOTQ0NmI1YTk0YjVhODFhODEyZGYzNiBkZWNpbWFsLWJyYW5jaAorNTU4OTEgMTYwYjczMThhM2NhYjZlMmUyMTE0YjNkYjY1MGYyZjA5MDIxMzI0MyBweTNrLXN0cnVuaQorNTU4OTIgMTgwODQ2Yjg3NTVmOTg0ZmIxOWVmYWE0ODMxYzJhMjlhZTQ2OTE1YSBweTNrLXN0cnVuaQorNTU4OTMgMDU2NjI3Y2IwZTQwYTBmY2ZlNTFhNGNjNTU0NjBlZTI1MWU3YzI1NSBweTNrLXN0cnVuaQorNTU4OTQgZjgzY2M5YjMxYTk3N2JkZTk3MzVhYzJkMzY3MzRiMzIzYmIxZjc2NCBweTNrLXN0cnVuaQorNTU4OTUgOTZlZWZjN2E2N2EwZmM1N2UxYmRhNDVlZDhhZDBiOWYxZWVmMmExMyBweTNrLXN0cnVuaQorNTU4OTYgM2U2NGQwZWFjNzc0OGVjOGY1ZWU1MjU5MjcwNzQxOWY2MjFjZTRjZSBsZWdhY3ktdHJ1bmsKKzU1ODk3IGUwZjkyNzQxNGRmYTM5YTE2MjY4MTNlYWJiNTEyMzQ5NjU1NDZkZTcgcHkzay1zdHJ1bmkKKzU1ODk4IDYxZmQ1NDQ0ZDk1ZjgwYmUxNDQ4MWY4OGQ1YzYwNmEzNzBmZTFjZTIgcHkzay1zdHJ1bmkKKzU1ODk5IGZhYTYyNmQ2ZTY3NTE3MmRhYjU2ZDFiYjQ3YmY2ZTY0YTYzYzVlNmIgcHkzay1zdHJ1bmkKKzU1OTAwIDE3MWYwZTA3MzY3MTI2YWNjZmJjMjdmZDhkN2E1ZGI2MmVjN2Q2NjAgcHkzay1zdHJ1bmkKKzU1OTAxIDk1YmU2YzNhZGU2ZTljOTVlM2U1MDE4ZGY1NDQyZmRmOTIzY2U4YmYgbGVnYWN5LXRydW5rCis1NTkwMiBkNjc4YmEwMTc3ZGFmYTFkMjExY2E1YzI2ZjE3MWFmNjNlMGZlYWY0IHB5M2stc3RydW5pCis1NTkwMyAzOTEwNTMzYjY2YzdhZDQ4Mzg3ZjM4NmVjNWNlMWU1MTRkNmY4ZDdkIHB5M2stc3RydW5pCis1NTkwNCAzYzNmNjE1ZWRjZmZmN2EwNWI5NWVlMDg4NjJlOGI2NTdkMmQ4OWNkIHB5M2stc3RydW5pCis1NTkwNSBjNjMwZTNhNjg4ODNkYzM0OTA0NTRlYTdjMmUzOGNjZmI1NDBmNmE1IHAzeWsKKzU1OTA2IDU3YzM0NDE0OTcyN2YyZTRmOTFjZWViZTkyZTYyOTIxMjFhNGU3MDcgcDN5aworNTU5MDcgMDJkM2VkMmNjMzQ3NTkwMDIyYzA4YTcyODNmNzU1N2YyNzZhZjU5MCBwM3lrCis1NTkwOCAxOTBlMmYwNjliMTgxODAyYTYzMTBjMWJjZWRkMDA3MjBkZTY3YzE0IHAzeWsKKzU1OTEwIDVlMTQ2OTY4NjhmOTcxMzlmNjI5NGIxMDQxOWU4M2IxNmZlYWNjNjkgcDN5aworNTU5MTEgNmY3MjIwOGM2NDNiNWU0OTAxYWIxMjRlNTdlODBjNWNiYzZjYThlNCBwM3lrCis1NTkxMiA1YzI2ZmUwN2RlZGY1ZDg2ODViYzEzODEzNTBlMDY0OTkyYTJkZTBiIHAzeWsKKzU1OTEzIDdiZjgzNjA5ODBmMWYzYzE4MTI0MzhlNTcxZDE4ZDBhOThlMTVjOTAgcDN5aworNTU5MTQgOGRiMDY5Njc2MmI0ZjE3ZDczY2M2YWViNGE5NjNjYmQ5YzkzYzljNSBwM3lrCis1NTkxNSBjYTY5M2Y0ZmQwNWQwZTI5YjA4MDgzM2QwYzYzYTQ1M2U4OGU4NTEyIHB5M2stc3RydW5pCis1NTkxNiA4ODEyMTYyZjBmODJhNjk4YzExNjUxNzY0ZTcwMDYxMjZhNTcxOGVlIHB5M2stc3RydW5pCis1NTkxNyA4ODFhYjFkNDE3ZWJlM2ZlZGI0N2I4ZjNiOGNlNGMyMGE1Zjk5MTk1IHB5M2stc3RydW5pCis1NTkxOCA4MDJjODRmOTlhYWQxNWI2NjBiNGVmNTA5MzMyYTk0MmQyZTgwM2NhIHB5M2stc3RydW5pCis1NTkxOSAwNjM1MzBmY2MzMmU5ZTE0NWNlZjJjYTMzYzM0NjZmOTNmYzUwZWEwIHB5M2stc3RydW5pCis1NTkyMCA2ZDY0NzIxZWNkMjY4Y2UxNWUxZTdmYzY4NzQ3Yzk2NzAxYjhjYWI2IHB5M2stc3RydW5pCis1NTkyMSAzZmFhOGM4MDk3MDI2YmU1ZjFjMGQ2MDQwZTk1YTAyNzc3ZmFiODEzIHB5M2stc3RydW5pCis1NTkyMyBhOTlhOTZiNWIzZjVjYzE2Mjc3Y2RjNGY1MGQ5MTY0YzA5NzFjMGI3IHAzeWsKKzU1OTI0IDE3MmRjZTVmYWJhMWRiYWE1NDcyZjgwMWQ1ZWU0M2VkNzY1MGJlYjkgcDN5aworNTU5MjUgMzQ3M2E2ODVlNWU3ZjhlNDRlOWI1MzZhZmYyODk5YzM4ZmIxNzA0MiBweTNrLXN0cnVuaQorNTU5MjYgYWYyNjA4MDA0MDIxZDZlZGIyMDdlNGY1ZDE5NTJkMThmOWNmZmNjZiBsZWdhY3ktdHJ1bmsKKzU1OTI3IDA0NTliODhlMTRiNDE0ODM3MjQ0MzA2MmRjMDNkYmEwMDM5ODk2MmQgbGVnYWN5LXRydW5rCis1NTkyOCBiYTVkMWEzOTc3ZTkzZDEwZGUyOTc5ZThiYmQwNWFmYzM4OWFlNDQ5IHB5M2stc3RydW5pCis1NTkyOSAwYmQ3NTkxNmVjNTgxOTEyY2EwZDNlM2RiNzZhYzkwOWI1MmJhNThmIGxlZ2FjeS10cnVuaworNTU5MzAgZDBjZmZmODkzMGU1NWFlZTcwZWExMzhlNWJmOGEwN2JmNTlkMTA5MCBsZWdhY3ktdHJ1bmsKKzU1OTMxIGRjN2E4MmM3Y2U5ZWNiNTg1YzI4YzBkNThiOGRmMmYxZGVjNTE0ODYgbGVnYWN5LXRydW5rCis1NTkzMiBiYzkwZmM5YjcwYjc2MjM5N2ExZjg0YTQ1NDY0YmNhYWZiODA4YzhiIHB5M2stc3RydW5pCis1NTkzMyA0ODc3MDA4MDc0YTkxYjgwNDQ5MDRjZTU0MzU2ZTQ1YjVkMWZjYmE5IHB5M2stc3RydW5pCis1NTkzNCA2NTdmZTc5YTZkZmViYjNhNTA3NmZlYjlkNzMzZmRmMTBiODIzN2U2IGxlZ2FjeS10cnVuaworNTU5MzUgZThiMjA2MGNjYjU5YzdhYjUwOWEwOGY1YmZiOWFhYjMzNzg4MWJkOCBweTNrLXN0cnVuaQorNTU5MzYgNDViYjk3YTRlOGI2NzExNzhiNjUzZDAxMTUwYmJiZmE2YThmZWUxYyBweTNrLXN0cnVuaQorNTU5MzcgNGZiODVlNmY4MmU1ZTJmMDMyMmM2NWIyMjc1ZjZiMzQ2MDVkMWFjZiBsZWdhY3ktdHJ1bmsKKzU1OTM4IGU5ZmIwNmI0NDQ2ZTBlOWU5NGU5NjRjNWNiYzZmMjRhMWE4ZTY5MDcgbGVnYWN5LXRydW5rCis1NTkzOSA1NjA1NzE5YmVlZTNjYWY1MzgzY2M1ZjU4YjA4YjE3NWNkMDQ3YzZjIHAzeWsKKzU1OTQzIDgyNTA0MWZjOGUyYzFlZDRhM2JmZjE3NjQwNThiODUzZWZkZjg0MTkgcHkzay1zdHJ1bmkKKzU1OTQ0IGNlNjNhNWRjYjBhZjEzNDE1ZjliZmE0NzU1MWNhNDg3ODljYjAyNWYgcHkzay1zdHJ1bmkKKzU1OTQ1IGY4MzNiNDNjMjc1Njg5ZWIyNDRlNmJkMWQ0MDg1MjU2MWYwZThjZTggcHkzay1zdHJ1bmkKKzU1OTQ2IGZiYWJkYjBkN2RkMjJjNGE2MTY3NTFlODdlOTE3MGQzNzBjZmFhMDEgcHkzay1zdHJ1bmkKKzU1OTQ3IDhjYTFkM2E3ZjRmMGY5ZGY3ZTg0MjkxMmFlNzc4ODU1ZjkzNjNhOTAgcHkzay1zdHJ1bmkKKzU1OTQ4IGRlODgwMzgxNjU0YWY2ZjcyMGVmZDQzMzMxMGJhMTUzOWU3ODVmNjMgbGVnYWN5LXRydW5rCis1NTk0OSAwMzE4YTBmNTQ1MjBlNDI3MWE5OGMxYjc5MDE2ZDE3MjdhOWJkMDJlIHJlbGVhc2UyNS1tYWludAorNTU5NTQgNjBiZTI3NjEwNTdiZmRkM2U0MzE4Y2E1MDNhZTk0ZGM4OTZkOTYwZCBwM3lrCis1NTk1NiBiNTM5MTIxNGRmMzVkZWU3ZTY1ZjY5ZjlhNGM0OGE2MGUxNTEzODEyIGxlZ2FjeS10cnVuaworNTU5NTcgM2Q5ZTBlZmNhNWQzNTI5NjQzZGJhYzlkZDc3MGYzMmE1NDQ4M2Y4YSBsZWdhY3ktdHJ1bmsKKzU1OTU4IDUwYmViZWRjNjE0ZWQ1NGQ1NDQzOWM1YmY2MmUwODNjZDVhMWUyMTYgbGVnYWN5LXRydW5rCis1NTk1OSA5ZTExNGIxZmQ5NGU4MzgwOGZmNTA4MjBjZjRhODlkYWQzNzEyNmMyIHAzeWsKKzU1OTYwIDA1ZjFmZDMxMzQ0ZGQ4YmU2ODA4YTRkMGVlMjllZmZlMTJlOTIzODQgcHkzay1zdHJ1bmkKKzU1OTYxIGZmYjFhZTcyMzNhMjI5OThmMTk5MWE1MGEzOGNlNGI4NWY3ZGE5NDEgcHkzay1zdHJ1bmkKKzU1OTYyIDM3MTg5ZTM3NWVjNzk2YWIxNjA3YzVkM2Y5ODE5MzNjYTc2ZTAwOWQgbGVnYWN5LXRydW5rCis1NTk2MyAyMjljMjhjYjlhZmIyMzI5YzBmNTU3YmFkYmQ1YWYwOGIzNDYyZDczIHB5M2stc3RydW5pCis1NTk2NCA1MzY5OGY5YTRlYjc2ZTU0OGIyYTBiNjc2Y2FhNzc4NTNkNmQwYjBlIHB5M2stc3RydW5pCis1NTk2NSA1Njc1ZjZjM2ZmODNkMWYzMDdmMTI5ZjAyZmQwY2FkMGY4YThhZjdkIHB5M2stc3RydW5pCis1NTk2NiA5NzM5OTJhNzQ0MGExY2M1ODIxMDg1MjU4Y2M2NjM2ZWQyOTJhYzM3IHB5M2stc3RydW5pCis1NTk2NyBiN2U1NDk4NTczMjE1OTdiYTlkNDdkMzUyZTM3Y2M0YmRhOTQ2NTU5IHB5M2stc3RydW5pCis1NTk2OCAwZTAxMGRiMTIyYzcxYTJlMjNjNjJlMDUwYWUyZGVmY2RhNWM5OWIwIHB5M2stc3RydW5pCis1NTk2OSA4NjkzN2IwY2Q1NmE2YzBhYWI5OTAzNDM2ZjE3NTc5NTQ4NWQ2YTJkIHB5M2stc3RydW5pCis1NTk3MCA3MmZjN2QwMjlkM2QyYjNjMWQ2ZjEwODNmNjk0MmJmYTZmNzQwNjQwIHB5M2stc3RydW5pCis1NTk3MSBkMTdhMjcyNDc5ODYzMDI2NWFkMDM1NGQ5NjQ2NDc2MGJkOTc2MmE2IHB5M2stc3RydW5pCis1NTk3MiAzNjU2N2ZlMDJlYTVkMTExNGQxM2FhZTUzN2Y5NWQ0NzBhMTE3MzJmIGNweV9tZXJnZQorNTU5NzMgNDk3ZmFkZTFmODczNDgyNDZhYTQwNmQ3YzRlODM0YzljNzI2ZmI3NyBjcHlfbWVyZ2UKKzU1OTc0IDJjZjdjZTQxZWM2MDM1OWIyOWMwYTk3YWU3ZDBlZmUzMTA1NTA4ODQgY3B5X21lcmdlCis1NTk3NSBmZDhkZDc0NDcwZjk1OTA0N2VmOTM0YTk5ZDVmMDM0NTQyNTk5NTc4IGxlZ2FjeS10cnVuaworNTU5NzYgNDRiNDRiMGE5ZmUyNTdjNzQ4ZjkzNzUxZDU3NDAwY2NiNGVhZWMwYiByZWxlYXNlMjUtbWFpbnQKKzU1OTc3IDI3MWY2ODZmNjIxODExZGNjNjMyODIzNDkzNWI0MTA2OGNlOTg5YTQgY3B5X21lcmdlCis1NTk3OCBmNjU2NzJiOGU3ZDFmZWU5NDdlNmZiOTFhODVjOTIzMzIzYzI0OWZkIHB5M2stc3RydW5pCis1NTk4NCA4NWM0NDZmNGIxOTYyMmNjODhjOGE3YWZiNDhlODkxNDMyNTU1ODVhIGxlZ2FjeS10cnVuaworNTU5ODUgNGY2Y2U5OGIwNjBkMWZjNmM5NDU2Y2JkNmY1NGYxYTY1ZWI0YTFkOCBwM3lrCis1NTk4NiAyNDYzMjRiMzk4OTZiMTMwYmQ3MmVkMTg4YzU5YTQ5YTlmN2Y0ZjBjIHB5M2stc3RydW5pCis1NTk4NyA1ODM4YmVjN2MxMTU4YWUzMDA1NzY1ZTYwN2U5ODdkM2IwNGU0OWM0IHB5M2stc3RydW5pCis1NTk5MSA2NzI3Y2M5ZWQwOWZmMWY1YjA1ZGIzMTZiNzA0OTQ5ZDlmYzhiYzM2IHB5M2stc3RydW5pCis1NTk5NSA0ODc3NDdkOTEwYzc2MmMwMmVhM2RlN2FmZDZkMzhmZTE5NDI5MjZiIHJlbGVhc2UyNS1tYWludAorNTU5OTYgZDZkMWU4NmFkNDZjMWU5MGQ3ZThlMzE0NzBmYTRlODI1YTA1NGM5ZSBjcHlfbWVyZ2UKKzU2MDAxIGVkNmM4MmRhMWE2Y2VlYjFkOTVkMTg3OWNkMDQxM2QxZmI2MjU4YjMgbGVnYWN5LXRydW5rCis1NjAwMiA5YmE5OTJmNjRlOTU3ZjA3ODZjMDU4NDQ2MDVkMmEzYWI1ZjNiY2E2IGNweV9tZXJnZQorNTYwMDMgZTRlNmE0ZDdjMTZlOTU4Y2U0OTE0MDI1MzkxYzkxYjhjZTIyYjk1NSBwM3lrCis1NjAwNCA3ZDdjNDgwNTYzZTIxY2NmZGMwNWI4YTdlZjE4MzU0MGVhM2M1OGJmIHAzeWsKKzU2MDA1IDhlODYwOTQzMmU1NmM4OTFmYTNhODFiNTc1MzRiNDhiNTdhODUwOGYgbGVnYWN5LXRydW5rCis1NjAwNiBjZWQ4ZGI2MThlNWI2YmVhOTU5OTY4MTQ4NjQ3NGYxMjRjOTBhZGVkIGxlZ2FjeS10cnVuaworNTYwMDcgNDFkNDVjMjJmMTQ3ODYxZDI4OTk1ZWM3NWZjYzgwZDBlMjhhOWE5NSByZWxlYXNlMjUtbWFpbnQKKzU2MDA5IDg1M2I4NDA5MzE1MTQ2ZjQxMzI0M2YwZWNlOTY0YTAzNDY0NTIxNTcgbGVnYWN5LXRydW5rCis1NjAxMCA1NmVjMzQ3ZGE4ZTQyZjRkNjQ4Zjc1OWEyZTVhMGIyMjY4MDY1M2FkIHJlbGVhc2UyNS1tYWludAorNTYwMTEgYTlhZWNiZjViMTNmMDIzYzdkYzk4NzIyMzMzODhiNDY1OTIwMjA0MCBsZWdhY3ktdHJ1bmsKKzU2MDEyIDAyZGE2MzA1OGQ2YjE0ZTlhMTA2NDQyOTg5NmViYmE0NmZkYjVkOTggbGVnYWN5LXRydW5rCis1NjAxMyA1OTQ5N2VjMjhjYWFiZTEzNDJhNjQ1MTMyYTM3MDE1YmU0MWQyM2NhIHAzeWsKKzU2MDE0IDA4MDUxNTc3MzRmOGQ5ZGMyMGY4YzczZDk0OTU0ZmIzNTEzMDQyNTMgcDN5aworNTYwMTUgMjU5ZGUzODc0NDIwNjAyMjI0Njc5MDQyZTQ4NjkyOGMzYTdjOWMwMCBwM3lrCis1NjAxNiA4MjgyM2UxM2I2NmNkOWU2MGIwYTZhYjJjYTQ5OGFhNmQ4MzA4ZTE0IHAzeWsKKzU2MDE3IDBlMjA0MzYyMzI5ZWRlNzI5NTRlMDNlOTczMDY0Njg1MmVmOTJlYWUgcDN5aworNTYwMTggYjQ1NjVlMDk2MTMxZjFkMWRmMDQxNzk4NTdmNzAzOGMyNTZiNDk5YiBwM3lrCis1NjAxOSBiMmU3MzM2ZmViODI2YTc2ZGJhZDk2YTgxNmZhZTRiZGJkNjM2YTM2IGxlZ2FjeS10cnVuaworNTYwMjAgZTRmNjQ5YzRmNDU3MjVlZGY2ZDliYmRjNmU2NjE4ZmJjNzAzOTY2NiBweTNrLXN0cnVuaQorNTYwMjEgMzJmZTJiOWU5ZjExMTQzM2M3Nzg4MjExMTg5ZTAwOWM2YzExOTM4MyBweTNrLXN0cnVuaQorNTYwMjIgZWJjODdiOTRlNmVhYjVkMTAzODAzMDk5NTgzYmJiYzMyMjM4M2ZlNiBweTNrLXN0cnVuaQorNTYwMjMgYTRhZTYyNjUzYTVjYjE2OWNkZTBmNWFlZmQ1MGJhMTRiZTBhYzcxMSBsZWdhY3ktdHJ1bmsKKzU2MDM3IDdjODkyZTczZThlNDlmNTA1NThhMjYwOTFmMjE2OWFhZjliNGM2ZTUgcDN5aworNTYwMzggYWFiOTA4MGFjNGM3ZWEzNjllMmQ3OGEwZDE2NGFhMGVmOTU1MzZkMCBsZWdhY3ktdHJ1bmsKKzU2MDM5IDY2YzgzNDdhNjRkZGFlZDA1YzFkZDg1ODY4MDZiN2U4NjY4OTU4MWMgcmVsZWFzZTI1LW1haW50Cis1NjA0MCAwNGE0MTg1YmQ0ZDNjYzE2NTM1ZDA2YzkxZDk2NWY1YTZlMzRiNTdkIGxlZ2FjeS10cnVuaworNTYwNDEgNjdmNzA5N2MzNGYzNDk5ODI4MDUxZmFjNmVkMzI0NDkzZDA1MTdlNiByZWxlYXNlMjUtbWFpbnQKKzU2MDQzIDcwYTA4MzFmZWRhNjkwZTQ0YTUyOTgxMGYyOGJmMjk4Y2JjZWIzMDggcHkzay1zdHJ1bmkKKzU2MDQ0IDRkYjBhMGNjNTdhYmVlOTU0MTFjZTBkMTk5Mzc0Y2VmMmYyOGQ0MmQgcHkzay1zdHJ1bmkKKzU2MDQ1IDA0MTM5ZTMwZTY0ZGE5NTFlZjdmZDU4OGYzZmEyN2I3NzBjMDY2OWQgZGVjaW1hbC1icmFuY2gKKzU2MDQ2IDg0MjUzMzQ3N2NlYTU0NDQ5ZWIxNzc3YzYyNTYyMTFmNTUxNDI1MjYgcHkzay1zdHJ1bmkKKzU2MDQ3IDFmMDZkNWVlNDBiZDdmMmMxYWM4N2EzMDFmNmI4OTUyM2EwNWUyOTkgcHkzay1zdHJ1bmkKKzU2MDQ4IDY3MTBmNDUzY2Y0YThhMmU5NTc1OWI3YmYzZmU4NjI3N2QyMGZmODUgcHkzay1zdHJ1bmkKKzU2MDQ5IDM4M2M4OTA3YmVhMDQ0ODAzMWRmYjg0ZjdjZTUxNDNlZjhlNDI3YzYgcHkzay1zdHJ1bmkKKzU2MDU4IDZiMzI1YjA2NWFlZGFlZjMxZGFjZTViYTk2ZTc3Y2QzYzFhMTkwZmUgYmNhbm5vbi1vYmpjYXAKKzU2MDYwIDM5ZWFhOWMwMjQ2ZTRhMmIyMDgzOGQ0NGM2ZWYyZmI4OTBjOWI2YmIgcDN5aworNTYwNjkgZTEzZDViMTA1M2VmODMxOWZlNmYxZTIwODc2M2Q4NDJlMjM2NmQwOSBwM3lrCis1NjA3MCBiZTlkZTA1YmI4ODljYzJiOWQxMWVkMDU3ODk1ODM0NmVhZjg4YjgwIHAzeWsKKzU2MDcxIDk1OTI3Njg0NDc2YmUxNmJkYjNmYTA3ZWY1MmU0YTcxZGI4MzliNTAgcDN5aworNTYwNzIgZjk3YjY2ZTlhYThmMGQ3YjY2ZjZhZDJjMGZiNGE2ZjJlZDkzOTZiNyBkZWNpbWFsLWJyYW5jaAorNTYwNzMgNDU5MDEyOWU0YzJiNWRmOGQ0ZDI2N2RhODllMmRjNmQwMzE3NTRmNiBweTNrLXN0cnVuaQorNTYwNzQgNzljMjY1NjA1NmY2NzVlYWE4NTBhMjViNGUwMTdjZTUyZGY3ZDQ5MyBweTNrLXN0cnVuaQorNTYwNzUgOGZjOTMyMTVjMGNjZmJiMDQwODgxNGNhNzNmZmVmMzAzZmI4NmRiNyBweTNrLXN0cnVuaQorNTYwNzggYzI5MWQyZjZkMDE3ZjI1MTVmY2Q3MTk0Y2RjNzVlOTBjYmY0MjRhNyBjcHlfbWVyZ2UKKzU2MDc5IGI5YmY3Yzc2MGExMDI1YmJhZWM3YzI5MTQ0MzI4YWQwZGRmZTcyOWQgY3B5X21lcmdlCis1NjA4MCA5YjU2YzkxNjI1MzQ3NGFhNzZiMTRiN2Y2OGEzYjk5NGUwZTdlMGVmIGNweV9tZXJnZQorNTYwODMgZTg3NmY2NDM5ZGM3YmM1YzJiNjY1ZWRmODY4ZGU0NGI1N2NlYTY0OCBjcHlfbWVyZ2UKKzU2MDg0IDQxZThhZDJjOWJhOTkxYzk1YTAyMTM5NGM5ZGM1YmYyODQzNjlkMzIgbGVnYWN5LXRydW5rCis1NjA4NSBkODM3YjU4NDZkNDE0ZmNkODBmNjlmNTEzOGZjMGY2MzhiMDExNjNlIHJlbGVhc2UyNS1tYWludAorNTYwODkgOWE2YWM5YTdlM2E0ZmY5ZmM2OTEzYTI5MjQzMTMyMmRhNjhiNjgxZCBwM3lrCis1NjA5MCBkYjMyMDg3MDRhYzBhZjlkNDkzNzQ0YTBkZDI2MDQ1Y2IxNWNjMTU3IGJjYW5ub24tb2JqY2FwCis1NjA5MSA3MDViYzczZWU0MzMxYzhjMzBjOGNjMjNmMjA4MWYwYzM5NjliZDY1IGxlZ2FjeS10cnVuaworNTYwOTIgYjAwNzRmZDkyNjIxYzY3M2MxNzJiZTYzOTJhMDAyN2JkM2RhOGM0NyByZWxlYXNlMjUtbWFpbnQKKzU2MDk1IGJmNmViODg0N2E0MjQ0MDI5ZGIwZmRhNTNiNjhhNTg1MDk1NWE4ODEgYmNhbm5vbi1vYmpjYXAKKzU2MDk2IDE1OTAzMWRiOGU5ZjI4NTczMDc1ZTVlYTVhNmIyYzc1ZjMxOWY4OWEgYmNhbm5vbi1vYmpjYXAKKzU2MDk3IDYzM2IwNDk0N2FjNDYwNWMwNjRiOWJmODljMmMwZDc2Zjk1ODFjZjEgY3B5X21lcmdlCis1NjA5OCBiYjA5ZWFkMDQ4NDA1M2FkYTk1NTg3MDcyZDgxM2YyY2JmMGFmZjU5IGNweV9tZXJnZQorNTYxMDAgYTIwMDI0MGRlYThhYjc2MzllNWJjYWU0NTYyOGQ4OWZlMDAxZTg1YiBiY2Fubm9uLW9iamNhcAorNTYxMDEgM2Y1ODljNTY0NDI2ZDg3YzFkMDU3MmQzMDJkZTYwOTUyMzUxYmViNSBiY2Fubm9uLW9iamNhcAorNTYxMTEgN2ExMThhYzE0OWEwNjY3MDAzYTVlZmYzZGMyNmYzOWFlODZlZjNkNiBiY2Fubm9uLW9iamNhcAorNTYxMTIgNTBkMzI2NDdiMDM1NjUyYWIyNzUyYjczMjAwODZkMjdlYzJjNWVmZiBiY2Fubm9uLW9iamNhcAorNTYxMjMgNWYxNDhmNmUwYTQ2Nzk4ZWFlYjI1NWRiZDI4ZDEwMDdhMWExNDEyOSBjcHlfbWVyZ2UKKzU2MTI0IDMxNGFkYzNiN2JiNDc5OThiOWRlNjkzZDEyNmE0MzZhZmNmNDE2ZWMgcDN5aworNTYxMjUgN2ZmMzVhZDQ2NmVjNTVlOGRiM2JmMzNjNzBjOWM3ZjYxYTg2MDM3YyBweTNrLXN0cnVuaQorNTYxMjYgODYzZWQ3Y2Q0NWRjOGVkNTY2MWQzOTcxY2YwZGE3NjJkMDcwYTBkYiBweTNrLXN0cnVuaQorNTYxMjcgNDE2NzY4MGIzYWUyNGYzZjYyYzEwOWJjNGRmNmYyZWIzMmI2MTRjNCBwM3lrCis1NjEyOCBhODU4MmUyNTc0OGI3Mjk1N2ZjZDQ3ZDI5ZGExNDNiZjQyZTZiNjMxIHB5M2stc3RydW5pCis1NjEyOSBkYTRjYzY3NjczYTg1MWI2ODk2MTE3YzI5YTA0MDAyOTJlYWEzMzRkIGxlZ2FjeS10cnVuaworNTYxMzAgYzc2YTk0MzIyY2NjODhjZmM0NDE5N2FmYmRmNTI2NzhlYjhlMThhMCByZWxlYXNlMjUtbWFpbnQKKzU2MTM0IDc4YmMwNzhjNzM1MGUyZjlmZjYyMWFmNDMzNjBlMTYwZjMxYWQ4ODYgcHkzay1zdHJ1bmkKKzU2MTM1IDgzNzUzNTk5NDIwZGM5MzhiMmNiNWUwNTE0NzQwZDE1MTBhZDlkY2YgcDN5aworNTYxMzYgMjg5OWNmOGNhNTcyNWYwYTA0MTk5ZDI4YWU2YjNkOWJlMzJjNTAwYSBwM3lrCis1NjEzNyBkY2NmMTRmZTAwZWNkM2NjMWU2NDdhZTEyMzEwZDcyOTMyMGY2YWMwIGxlZ2FjeS10cnVuaworNTYxMzggOTA4NTgwYjljOGUxMGJmMmI0MzNjYmU5ZmM0Y2MxMGVjN2Y3MGM4MSByZWxlYXNlMjUtbWFpbnQKKzU2MTM5IGY1MzU3MTI0Y2VmZTU0MjEyZDIwNDJkZDU3M2FkYmM3Y2IyZDU4NTcgcDN5aworNTYxNDAgMWY3YjY2YTlmZmIwZDI3MmIxN2IwZDlkNjA5MGFiN2Q4NmE4MTM4MCBweTNrLXN0cnVuaQorNTYxNDEgZTNiY2I5ODRiMjRjOGU5ZDkxOWE0ZWE2NjliN2YyMTU1OTFiZTM4ZiBiY2Fubm9uLW9iamNhcAorNTYxNDIgZDRjNGY4OWM3NzdkNDUzOWFkZWVlYjNjYmMwMDgwMTI4OTcxYzJkNiBwM3lrCis1NjE0MyA0MDdkMTc0ZGI2ZGVjN2ZmNzdhNGE3YjA2OTM0NjNiNzQ3YTJkMDFiIGxlZ2FjeS10cnVuaworNTYxNDQgYzNlYTI3NzljNjM1OGE1MjUzNWEyY2U2NDYyNzY3YmY4YzA2YTNmYyByZWxlYXNlMjUtbWFpbnQKKzU2MTQ3IDYwNGJmYTYzYzExMzg5ZmRhOTNiYWI3ZGYxNDRmZTk5OGUwMWJlNTcgcDN5aworNTYxNDggMjEzNzQzNjkzNzVjMTY1OThmNzExNWJmYzNjMjBiZThiZDQ0Yzg3ZCBjcHlfbWVyZ2UKKzU2MTQ5IGFiNzRiZGJmNmRhYWZkYjdlMWNmOGY3NTEwNjdmN2QzOGFlYzczYWIgY3B5X21lcmdlCis1NjE1MCBlYjJkNTI1ODYwMTc1ODc5ZmFkNTk1NjVmNDJmY2M4MDEzNjlmN2U3IGNweV9tZXJnZQorNTYxNTEgZmViMjc2YzA4OTE3MWM4ZGYyODNhMWQxZDhiZWE2YmI1YmU3YzdlNSBjcHlfbWVyZ2UKKzU2MTUyIGMyY2MxMjAzYmQ2OWM5NmVkOTgyM2IzYWJiZTM5MmM2YTlmMDRkODggY3B5X21lcmdlCis1NjE1MyA4MTdjYmZmOWZiZWI0ZGI0NDVlYTQyNDUyNDg5NGJmNjI1NDAzMGY0IGNweV9tZXJnZQorNTYxNTQgOGExN2U0YzQyYTM1ZmI5NjliOWE3ZTQ2NGY1YjA0ODllYzBmZjU3NCBjcHlfbWVyZ2UKKzU2MTU1IDViMWU3NGZjNDJiODFmYjUwNmMxNTQ1Mzc5MDlhMWNkNDBmOWMwYTIgcDN5aworNTYxNTcgYTUzZTQ4YmU2ZGY5NTUyYzYyZmQ2MTMwNDdjMWM2N2M5NzFkNDU5MCBweTNrLXN0cnVuaQorNTYxNTggMGRjNjI2NDdhZmYwY2NkYzc5NTQxYmI0OWE2OTcxZDgyOTBiNmU5NCBweTNrLXN0cnVuaQorNTYxNTkgYWU4NzAyMjhkNWYzMzRlMzkxNzI3NTYzZGFjOThlY2RjMDY4YWIxMyBweTNrLXN0cnVuaQorNTYxNjAgMzFmNDc3YjA4OGM5ZjYyM2JiZmExZTMxYzJlMDNjMzMwM2Y1MWMzMCBjcHlfbWVyZ2UKKzU2MTYxIDhlZWFhOTkyMzkwMWYzODg0NTIyMDk3N2ZkZWI3MTE3MzVlOWYzNTkgcHkzay1zdHJ1bmkKKzU2MTYyIDAxMDJmNWU1MzcwMzlmNjI2ODY0Njc3ZjhlZTIwZTk3Y2U0M2Y3NzIgcHkzay1zdHJ1bmkKKzU2MTY0IDUxODdlZDY4YWJlMGI4ZDNlM2U3MWExYWRkNDRlMzY4Mjc1YWJkNjcgcHkzay1zdHJ1bmkKKzU2MTY1IDhhOTRjZTUwMjIwOWIwOTU1YTQxZWI2Mjc1MTg1ZDI0MTFmYWNjYzIgcHkzay1zdHJ1bmkKKzU2MTY2IGU0NzY5OTcwNDhhMGFiNTEzZDU3ZjIyMWVlYTAxMmFjMGU4MGFjMzIgcHkzay1zdHJ1bmkKKzU2MTY3IGU2YzVmZmE2ZGM2NzM4MTRlZmM5NDhkODI5OGQ5ZWE0MDE5Y2U2YTQgcHkzay1zdHJ1bmkKKzU2MTY4IDQwYTZiOTNmOWUwYmU4YTExNmRjNmY2YThjOWIxYzE0ZjZlMTI3MGMgcHkzay1zdHJ1bmkKKzU2MTY5IDNmNzgyNzgxMDIwYmUyMmY5NTFiMzJjZjQyZDZhMDgyMTQ3NmZjZTYgY3B5X21lcmdlCis1NjE3MCBiMGVhYmE4YjlmMDI5MzU2MjMzYWUxYjc3MmJkOGZhOWE3YjQyMDcwIGxlZ2FjeS10cnVuaworNTYxNzMgNzk2Yzc5NjIzOTM4MzY3NTFjOTYyMGNkMTI0YzJhNThjYzQ2MDFjMCBjcHlfbWVyZ2UKKzU2MTc0IDhiMmZlYmZkYTVmOTlhMzllZTc2M2FkZjMxZTBmZTg5NmI0MThhOWUgY3B5X21lcmdlCis1NjE3NSBjNDA0NGU0N2ZjMWFmZWQwZTc0ZjU5ZmJkNGE4ZDI1YjczMGQyZDQ1IGNweV9tZXJnZQorNTYxNzYgOWU1YTM5NjA5YTIwOGRkMWVkMGE0OWVkZjRkZTcwMmQyMDJiOWFkYSBsZWdhY3ktdHJ1bmsKKzU2MTc3IGQ2MzYyZWQ1NDhiMGIxNzBkYzUyM2I5ZmIwMzBlOTViMDBlYmMyM2QgbGVnYWN5LXRydW5rCis1NjE4MSA3MjI0ZTQyMDgxYmQzODFiYjk4OGFjNjBiNTk0Njk5MDE1YjcxNDBhIGNweV9tZXJnZQorNTYxODIgZGQ4OTYwNTEyNmU1ODVjZGZkMWQ3ZDA2ODhkNGI4ZmM0OTQ5ODE1MCBjcHlfbWVyZ2UKKzU2MTgzIGRiYzc1M2MwMjAwNzM2MmRlNzA1OGM4MmFhMmNkNDFkZDNkNzEyNzUgY3B5X21lcmdlCis1NjE4NCA5YzA4ZDkxNjljMWNkNDQ5MjE0MTEzMTMxMTMxYzE3ODNlNzVmMWI5IGNweV9tZXJnZQorNTYxODUgMzc0MTNmNjIxMTIwYTI4YjA0NzViOTYwODk3ZDRkNmQ0MzhmZjQyZCBjcHlfbWVyZ2UKKzU2MTg2IDA0ZTI0Yjc5MjE4YWYyODkxZDgyOGQ3ZDk0ZDQ2ZmVlOTk2NDYxMGUgY3B5X21lcmdlCis1NjE5MyBlNjJlMmI4MTEzNmEyMmQ5NjdmYTQ3MmNkNDI4YjJkZjVmYzI5MzI2IGNweV9tZXJnZQorNTYxOTQgYjJmZmMwMjg1ODVmYjJkMGZhODQ5NDFlZjljNDlhMDJlMTJiMzJmMSBjcHlfbWVyZ2UKKzU2MTk1IDRmYTY4Mzg3YjZiMzU5ZTljMDUwZTYyZDdlMTU4NzUyMDkzNjNiZDIgY3B5X21lcmdlCis1NjE5NiBhYTMwYjJiMDU5OGU0ODA3Y2JiNDk1ZGNkNWI3YjgyOWM1NzEwMjk5IGNweV9tZXJnZQorNTYyMDIgNTM3ZmU4ZGI4MzM0OTg5ZDAzMTE3OTc0ZmI2MmYyY2MwMjk3OWIxYSBwM3lrCis1NjIwMyA3NGQxMWQ0NDI4OTg1Y2E4NjRkMDljZThhNDMxODYwYWZlMGJiMDM0IHJlbGVhc2UyNS1tYWludAorNTYyMDQgNzgyZjRiM2U0ZGIwOGUzNjBkMmEwYzJmOWU1YTM2MTc3MTAxNGU1MSBsZWdhY3ktdHJ1bmsKKzU2MjA1IDI2MzhiOTc0OTM3MTQ3Yjg4MTljNmE0Y2Y5ZmY0YjJiYmYwMDkwMzEgcmVsZWFzZTI1LW1haW50Cis1NjIwNiBlYzRiNzNjYjI0NDM5NDc2NzFiMTczZDQ4Yjg3NzFjMjI5NjAxMjUwIHJlbGVhc2UyNS1tYWludAorNTYyMDcgZDg5ZDkwMGM1ZDc4MmQ2ZjA0MWEyMjAwODJiMWYyZmJmMjI1MThlYSBsZWdhY3ktdHJ1bmsKKzU2MjA4IGJmMjIyZWJmZjBlNTQ3NDNjNWM0YjdjNjZhY2ZhOGZkZGI4NTc1ZjAgcHkzay1zdHJ1bmkKKzU2MjA5IDBlYjg0MGYyZGFmYTlkOWEyMTllOGM1YTBkYmEyMDU0ODU5ZDBlZGEgcHkzay1zdHJ1bmkKKzU2MjEwIGE2MmVjY2I1M2YzMDFiYjMxYjRmYmY5NmQ5M2Y4NTg4MmJhZjJhYjAgcHkzay1zdHJ1bmkKKzU2MjExIGJmZjllYmFiZmMxNTU5MzljNDUyN2VhZDg2MjFhMzViZTY3ZTg5MmMgcHkzay1zdHJ1bmkKKzU2MjEzIDE2ZTgzYmY4MWRlOTg4OWViOGNkMDJiMTkxZWM5ZGExMjM5OGIyZGYgcHkzay1zdHJ1bmkKKzU2MjE1IGRmYjg4NThjMDY2NDBkZGU0NmZmMmFlZjdmMmZlMjM0NjE5YjBmYzQgcHkzay1zdHJ1bmkKKzU2MjE2IDc4MjAzMjk4YjQyYjc5NDRiNWJhY2Y5ZWViYWNhNmJhMWYzMThmZTEgcHkzay1zdHJ1bmkKKzU2MjE3IDI5YmE2YzM5OTA5MDFkZTY5MDRkYzU3MGM2NzI2MjEwZjU4ZDBjZjQgcHkzay1zdHJ1bmkKKzU2MjE4IDZiMzBiZDEzMGRjMTdkOGMwZTdkMzQ0NDBkNTlmZGRiZjFmOWEzODUgY3B5X21lcmdlCis1NjIxOSBmNGI5OTE5NTY2MmZkZWI1Zjg5OTE3YTIzZmI3MjRiYjUwZWZhMTZiIGNweV9tZXJnZQorNTYyMjAgMzM1MDZkMTNkZDc5MGRkYjhjOTg3NDViMDNiOTRjYWExNzZiNzkxOSBjcHlfbWVyZ2UKKzU2MjIxIGQ5ZDQ4MmQwMzhkNWRiMjFkOTg1N2ZjNDVkMWU2MWI2YjViNjFkYmIgY3B5X21lcmdlCis1NjIyMiA0MDJhMDZlY2M2MTMxMDZmMjkxNzQ4M2Q0YjVhODk3MDE4YjkwNWZmIGNweV9tZXJnZQorNTYyMjUgZjA5NzlhODY2NzBmNDdjNzhkM2RlNDExYjQzMDk5Mjg4NjIzZDUyYyBweTNrLXN0cnVuaQorNTYyMjYgZTM4MDQ3NTUwMzgzNGI2OGMyYjQxYjMwNWQxYTJjMjA3MTExNDVkOSBweTNrLXN0cnVuaQorNTYyMzAgYWNkMWY2NDI3MDZmMmM3Nzc4OWE0NDkwMWY5YTkzNjQ4NjFmNTU0ZSBweTNrLXN0cnVuaQorNTYyMzEgOWQwZDhjYWUxY2M3M2FmYjIyNTk4OGY3YmZkOTgzZjJlYWJiNjNjYyBweTNrLXN0cnVuaQorNTYyMzIgM2RiMDA4M2Y2NjgzN2QwMTJkODYwZDYxMjdjODQ1OGIwNjFlOGI4YiBweTNrLXN0cnVuaQorNTYyMzMgOTFhZGU2N2FiMjMwZGM1MGNmZjhhOWVlOTZkNWRmZmY3NGY3MzE0MCBweTNrLXN0cnVuaQorNTYyMzQgZjBhOTYxM2ZjZDkzM2JhY2M0NTk3NTBhYThhMTJjZTkwODA3N2MzZSBweTNrLXN0cnVuaQorNTYyMzUgOGNmZGFkMjA0Njc2Mzc5NzFmOGNkNTc3YmQ2NjU4MDI3Mjc3Y2EwMiBweTNrLXN0cnVuaQorNTYyMzYgZGRiOTE5ZGNiNDgyMGZmMDUyMmJmZDIwNWUxNTU5Yjk1MzA4Nzg0NCBweTNrLXN0cnVuaQorNTYyMzcgOGQ0YjY5ZTMxNTgxYmQ0ZDgxMjI2ZDcxN2YxNGE4NjJlNjg0ZTRhZSBweTNrLXN0cnVuaQorNTYyMzggYjJkYzMxNzE4YjAzZjI2NDA3ZGZkNTdkZjcwMjZmOTIyNTYxMTRmMSBweTNrLXN0cnVuaQorNTYyMzkgZjRhMWI3NmE1YTYzZDNhYTRkNmE0MzNhN2MzNzg1MjE5MWIxYzEzZSBweTNrLXN0cnVuaQorNTYyNDAgNTYyMTUwNzFjNzQyZTdiNTA5Y2M3YjQ2ZDE2NjJiYzk2OWM0MTRlOSBjcHlfbWVyZ2UKKzU2MjQzIDlmOTllYTRmODFlOTJmYzkwNTk2YjQxOTdhNzFjY2I4M2M1MDI1YmEgcHkzay1zdHJ1bmkKKzU2MjQ0IDM2NDFhMjA2MzBmM2M4YzkzOGYzNjUxMzljYTJhMDBkZDgxODA5Y2MgcHkzay1zdHJ1bmkKKzU2MjQ1IDBlNDQ2MDgwM2I0YTgwOTM1NDdmMjlkNzM1MWYwMDY3OWY0OTc5NGIgcHkzay1zdHJ1bmkKKzU2MjUwIDhiMzE2MDdjYWEwY2IxODg4Zjc3ZmRlY2I4NzNkZWU3YTNiZjA0NmUgcHkzay1zdHJ1bmkKKzU2MjUxIDliMzg2NjA0MjFlZTliOWZkNDUxMzA3NjUwZjUzNTNiMDk3ZjE5Y2EgcDN5aworNTYyNTIgYmY1ZDA0ZTBkYTRjNzUyMjRkMmMzMmE2YzJlNDBiOWZiNzc0NTU3YSBweTNrLXN0cnVuaQorNTYyNTMgNjIyODA2MjkwOWYzNDdkYjA3NzJhMmU0MDAxOWI0MGU1Zjc2ZWZjYiBweTNrLXN0cnVuaQorNTYyNTQgNzQ3YjE1MTlhMzZjZGZlMDZmZWY3Y2QzOTcxMzlmZDEzZjY4OWNkMCBweTNrLXN0cnVuaQorNTYyNTUgMWRjZjFmMTA4NjJjMDIyMDViZDVjZjQ1MTY5YzA1MTIyZjM3NjRlZCBwM3lrCis1NjI1NiBlOWJmYjI0Zjk2ZTA2M2Q1MDRhNTc4YWVkM2E0ZDI1NDAzZjBjNDllIHAzeWsKKzU2MjU3IDkwZmNkMDgyZGEwZGNhY2U4N2M1ZmNkM2Q0Mjc2YzU3YTM5ZDkyNDcgcHkzay1zdHJ1bmkKKzU2MjU4IDgxOTMwZWFhZTcxNThmYTMwOGIzYjNhOTE3NGExODI4YTIxZTQyZWUgcHkzay1zdHJ1bmkKKzU2MjU5IGU4NDBhNGNmYjQxZjZlODc2MTMwMTcxY2IzN2I5OTVmYWMyOGE3NDIgcHkzay1zdHJ1bmkKKzU2MjYwIDk2M2Y1MGVkMmI0ZjhiYzcxYjc4YjQ2NzA2YjZlZWNkODM0MTYwNGIgcHkzay1zdHJ1bmkKKzU2MjYxIGM2YThhN2RmMzdlZjY1Y2QzOTAwOTkwOGM0MGQ3YmYwNzY0ZTUxNmQgcHkzay1zdHJ1bmkKKzU2MjYzIDc5MDgyY2MxNGJmMTQ0YjI0YTA5OTdhNmU3YmZkMWZkNTQwZTNmNDggcDN5aworNTYyNjQgMWFjMmMxYjgwMzI0MDU0YTA4ZjQyNjMxYTczY2JlYzcyYTJmMmI4NSBweTNrLXN0cnVuaQorNTYyNjYgMDkwNTg4YTE3NDkwMzNiZDJmNTMxZDVjODJjYjc4N2Q1NTA0YWE1ZiBweTNrLXN0cnVuaQorNTYyNjcgNzVkM2NhYTQ2YTkzNmIxMGY1MzA5ZjEwOGIwNmVhMDk4MDdjNzg4ZSBwM3lrLW5vc2xpY2UKKzU2MjY4IGRmNDc5NTBjODM3MDhlOWJjOGMxN2M4NmI1YzFkOTg1MDI5Y2NhZDAgcHkzay1zdHJ1bmkKKzU2MjY5IGJkNGUzNzJmNDc5ODU0MDQ2NzRkNWU4ODllNDVlNmUxNGJmZGI4ZjkgcHkzay1zdHJ1bmkKKzU2MjcwIGEzNTUzNTllNDdiNDU4NzFhNjZjYTE1NmQyYTFjNmRjOWM4M2Y1ZGEgcHkzay1zdHJ1bmkKKzU2MjcxIDViMzkzMWFlMjYyZmM3ZGUwNzRkZDIwZjcxNDlmNDVmNDExNTJiODYgcDN5ay1ub3NsaWNlCis1NjI3MiBhODM4YjhjNjQxMDM2M2M4ZmI1NDQwNzIxZjYyM2MzOTM2MmE4MTUyIHB5M2stc3RydW5pCis1NjI3MyA1MTZkYzcyM2M4OWViYjY5NmM3ZDc4NTE3MGI0OTUwZDNhM2FiMDBhIHB5M2stc3RydW5pCis1NjI3NCAzYmVmYjVhZGIzNGViZTZjYWViYjY5NjZkNzQyODgxYTg5MmU5MzYxIHAzeWsKKzU2Mjc5IGMxYTYwYjRiODNkMzliMjhkMzVlNDcyMjczMDAyZTY3NTU3YTVjYWQgcHkzay1zdHJ1bmkKKzU2MjgwIDA5YmYzNTc5M2JjZGQ1OTM2OTM2OWNmYjdmMzlhYzUyZGVjYmE5ZDQgbGVnYWN5LXRydW5rCis1NjI4MSA3YTI0ZmU3MGMxNmRiYjRkZjYzMDFhNjcwNDZjYjBjNDkwMDJiZjlmIHJlbGVhc2UyNS1tYWludAorNTYyODIgODU0Y2M0ZDVhMzNkOGFmZGM3Y2RiM2FmZGUyNmU2Yzc2MTJlYmQ1MyBweTNrLXN0cnVuaQorNTYyODMgYmJjMDk0YzMyOGVmZDkxZDhlNjg0MTRmODgwZWVkNmI4YzhjMGIzNSBweTNrLXN0cnVuaQorNTYyODQgZTVjY2ZlYjExY2Q2NzExOTkxNDBiNDAzMTg5YzNjM2QzYzU1MWUyOCBweTNrLXN0cnVuaQorNTYyODUgOWI3MmYwNjM2OTg2NGEwM2JhOWJmMmNkMGFmMGQ5ZWMwMDVmN2I2YyBweTNrLXN0cnVuaQorNTYyODYgZDFjN2MyNTQzOTAzYjhkNzI1ZjhhZjQ4NzU5M2I3YTRhMTg3MWFiOCBweTNrLXN0cnVuaQorNTYyODcgN2M2YTc5NWI1MjVhY2Y0OGYwYzNiZThjMThmYzQwMDljYzY5MzkwMSBweTNrLXN0cnVuaQorNTYyODggY2EzY2ZiMzRlM2MyNjM1OTc1ZDUxY2UxODg2YThlMzcyNzEyZTVhZiBweTNrLXN0cnVuaQorNTYyODkgMjNmMWQyYzM2ZDEyY2YzODUyZTM4YjU0ODk3MGI5Zjk3YWZmZDJjNCBwM3lrLW5vc2xpY2UKKzU2MjkwIGE1YzIzNDIyYWY2YzY4YmE1ZmY0ZTZjYTQ0MzUwZTgzN2FiMDVhOTAgcHkzay1zdHJ1bmkKKzU2MjkxIGNhMDY1YjUxYTYxNjZkNTczZmEwMTg3Y2ViNzYwZjEwNDcxYzY2OGEgcDN5ay1ub3NsaWNlCis1NjI5MiBkNWNmMTkxNjk5MDQ2MjczYjcwMjdiMTE3ZWMzZjU4ODk2YzE1NTlhIHB5M2stc3RydW5pCis1NjI5MyAyNTViZDQzY2E3OGY3OTM3OWY2MmE0ODA0ZTVlMzZhMzQ0ZGU3N2U3IGxlZ2FjeS10cnVuaworNTYyOTQgMjNhYzhkMTQwYThhMmU5NWM0ODc5ZGRkZGQzMjZkN2U2ZmE4ZjE0NiByZWxlYXNlMjUtbWFpbnQKKzU2Mjk1IDE5NmU1YzYzMjNhMzZiOGZlYjI5OTYwNTIzZTNhOWY3OWRhNTkyNzcgcHkzay1zdHJ1bmkKKzU2Mjk2IDYzMTlhZGIwMDQxZDZlZWZlYzIwYmNjNjJmM2QwZTQ2ZmJhMGZhYzcgbGVnYWN5LXRydW5rCis1NjI5NyA4YjgxNTgwYWQwYzEwNjA3NGVhNjdkNWIzZDc4Mzg2NTI4MjE5M2UxIHJlbGVhc2UyNS1tYWludAorNTYyOTggODZkMWRiZmM1ODMzMWI2MjA1MzNiZDQyZGYyMDU2ZmI5NGY1MzI1MCBsZWdhY3ktdHJ1bmsKKzU2Mjk5IGI0M2U1ZjMzNDhhZWE5NTJhYzRjOTI0YmY1ZmI3YmI1ZjdhZTViNTcgcmVsZWFzZTI1LW1haW50Cis1NjMwMCAyOTNiODNmOWRhOWZkZGU2NzZkZTk0YWE2NWRkNDM2NGY5NDkzZTc0IHAzeWstbm9zbGljZQorNTYzMDEgN2MzNzg0YmJmYzA5YWU4YmIwNzEzYjhjMjIzYjlkMzQ4NDJiMTkxNCBweTNrLXN0cnVuaQorNTYzMDIgMjQ4YTIwNjk5MGFlMDliOWJlZDFkOWQ4ZjM3NDgzMjNiMmY1MTBmZSBsZWdhY3ktdHJ1bmsKKzU2MzAzIDEwZTljOTBlYWYwM2U2ZGZjOTM3OGM3YjJjYjc4ZWYxODZhNDY5MGYgcmVsZWFzZTI1LW1haW50Cis1NjMwNCAyYzMzZGYwOWMxYzcxZjU4ZDIxMzZiNzIxODYyNDA0YTI1ZDc2NGJhIGxlZ2FjeS10cnVuaworNTYzMDUgYzI1NWMxMGRhYzZhNjkxZWI2NTRjMjRkZjI1ZmUyMTE2NjAyZjFiNiBweTNrLXN0cnVuaQorNTYzMDYgNGM0OWNkNjViNWYxNzA1MmNjYTkzMjRlYzUwOTcyNTA0ODY3NDMyZCBsZWdhY3ktdHJ1bmsKKzU2MzA3IDJhZjNmMDY3YTQzMTAyZGNiM2E1NTA3MDZiNjdkNjFmMTZlMDNlMjkgcmVsZWFzZTI1LW1haW50Cis1NjMwOCAzNDNiNjBiNjA0YmQ5M2QwZTY2MTgwYWVmZTdlMDk3NThjYmYzMTNiIGxlZ2FjeS10cnVuaworNTYzMDkgNzJjNTgzMzhiMjJiNjM5Yjg5OTZmZjRjNTkwZDk2Nzk1NTlhYjE5YSBweTNrLXN0cnVuaQorNTYzMTAgZWM3NDA4NGE4Y2JhMGEwN2ExMDFhNzZlNjc4NGY3ZmY4NTA3ZDQwMyBweTNrLXN0cnVuaQorNTYzMTEgNmNiOWVmYjVjYmU1YmU4NzY4NzIzNTVmMmE5ZTgwOTM0ZjMxOTk1ZCBweTNrLXN0cnVuaQorNTYzMTIgM2UwNmYyYjkwMTAyNjQxMmRmZmY4NzA4YTZmNGZmNzhlMDkxOWFjMSBweTNrLXN0cnVuaQorNTYzMTMgM2ZkMzU1M2UyNTg4NTRlYTM4Mzc5YTdiYzFkMDY0YWNmZGU4N2Y0MiBweTNrLXN0cnVuaQorNTYzMTQgNTg2NjFhODIzMzhlODJjZjEwMmUzMTZlMDE3OGViN2NiMjJiMzA5MyBweTNrLXN0cnVuaQorNTYzMTUgZTcxNWUyMDgxNjM3MWExNDdlZTVmZGIwYmNhMTcxMmM4YjAwYmE4NyBweTNrLXN0cnVuaQorNTYzMTYgMGI4OTc3NDExYjA3YjRlNjg4MjU4NzYwMTgyNjk2MGI5NTI4NzI5YyBweTNrLXN0cnVuaQorNTYzMTcgODRhMjE3NTc5YWU1OWQ1Mzg0OGNkYmUxOWQxZTBmYjVhN2E0ODllZSBweTNrLXN0cnVuaQorNTYzMTggODQyMjlhOTA2NmUyZjg2NjAwYjUyYTRjY2JhMmRjZDA0NjZkOTI4NyBweTNrLXN0cnVuaQorNTYzMTkgMDY4MTIzMzM0NGQ5M2ZkMGRlOWU1ZTM0NjFjODE2MDU0ZTExN2I2NyBweTNrLXN0cnVuaQorNTYzMjIgYjQ1YzBmNDQ0ODEzMWRjY2IyM2Q1ODE3ZmUxZjRlOWQxOTVlNjJlMiBwM3lrCis1NjMyMyAyYWNjNjM1OWQwNWQ0MDU1ZDYyZTZkMDgzZWY5ZDM1YjI2ZGMxODQxIHAzeWsKKzU2MzI0IDQ4YzVhODQ5YTBjMmZjZWZhNWE3ZGUzMTBhNjY4MjcxNjk3N2I5ODcgcHkzay1zdHJ1bmkKKzU2MzI1IDczODQ2Zjk2MjljNTY3ZWJhZmEwZWIwMGFiMWNiZDBjOTdiOTgwMjAgcHkzay1zdHJ1bmkKKzU2MzI2IDQ4NGEwMDk2YmFlOTBmNjYxOWFmYzY5MTZiM2ZmOWZmMDYyZmI1ZTIgcHkzay1zdHJ1bmkKKzU2MzI3IDA0OTRhZTczNTA1ODJiNTgxOGQwOTYxYTVmYzA1NGU4YTg3ODgyYmEgcDN5aworNTYzMjggZmJhZTAxMmZmMjk1ZGNhZjdiYjQwMDRjNWQ3NTM1YzM0YWI4MzlkYSBweTNrLXN0cnVuaQorNTYzMjkgNzY5ZTcwNzhhMmFhN2YyNGQ5ZTk4ZjQ0NDAzZGQzZjlhMDBlYmRjZSBweTNrLXN0cnVuaQorNTYzMzAgN2NjODQ5NmYyMzQ4MGMwNmJkZjNhOGNiMjQwMDE4NzFkNmE4MDY2ZiBweTNrLXN0cnVuaQorNTYzMzEgMmZkMTQ2OTcyM2EwNzAyZWIwOWVkNjU2MWY2NzAwM2JiOWI5YTgzZiBweTNrLXN0cnVuaQorNTYzMzIgYWZlODcxNTQ3YjFhMzkwZjIyYjJhN2ZjMTEzMjQ4MjJhOGVlMjE5YyBweTNrLXN0cnVuaQorNTYzMzMgMTBkZTZhOTFkYTRkYTE5MGNhYmY1NzQ4M2M1YzAzNjEyZDY1NTg2ZSBweTNrLXN0cnVuaQorNTYzMzQgNmEwOTc3NzJlYTg2YjVhNDAxNzU4NzgxODE1ZmUyYWJmM2NiNzJiYyBweTNrLXN0cnVuaQorNTYzMzUgNmU2NWYwOGYxMjc2Mjg2MjFjZTE2YjY4OWRhZWI4OWJlYWZkNGJlNSBweTNrLXN0cnVuaQorNTYzMzYgMWMzNzkwYzgzMWZjMTY1NTZhZjEwZTdiYWNhNzhkYzM2NGI3NTcwYiBweTNrLXN0cnVuaQorNTYzMzcgOGVhZjAzZmMzZjEyOTVkNjE0MmM4YTAyNGYxMGI4MTVlNTk0MTI4OSBweTNrLXN0cnVuaQorNTYzMzggMjJkNjU4NGI4NzEyNmM4ZmI4OTkzODM4MzUwYjkwYjBjOTllYmJkMiBweTNrLXN0cnVuaQorNTYzMzkgNWQxNmY0Nzg0NjVhNTM1NThmMjZkZDAyNmZmOWQ0NjcwY2JhYmRkMCBwM3lrCis1NjM0MCAwYzBkNzUwZWU3NWU0YzI1MjFmNmE4ZDM1NjY2M2U4NzRlYTE0YWU1IGxlZ2FjeS10cnVuaworNTYzNDEgN2JjNDcyM2Y1NjJmYWNlMTFkYzk3MDdiZTk4NDdmNzIyNDlkYjIzMiBweTNrLXN0cnVuaQorNTYzNDIgMDk4MDAzNGFkYWE3MjJiNDY0ODUzM2Q2ODNlZDgzY2YxM2Y0ZjdjZSBweTNrLXN0cnVuaQorNTYzNDMgNjkzYmUyN2Y2MjZmYmJhOTZjYTE4MmY1NTM2ZDZlMzNiNDYxMzZmNSBweTNrLXN0cnVuaQorNTYzNDQgMTdiYjM5ODA0ODNlY2ZiZDIwNjFjYWZkMTYzZDE0MGFmYTM3NTRkNSBweTNrLXN0cnVuaQorNTYzNDUgMTA4OWE0ZjU3ZDIwOTViOWZiZDVjYTNkYTExNTJjYTcwODg3MTQyNCBsZWdhY3ktdHJ1bmsKKzU2MzQ2IGMyODA2NDdjMzMwY2YyYWFkOTI0NzYzNzQ2NWQ0ZjRjNmFmYTY1ZDggcHkzay1zdHJ1bmkKKzU2MzQ3IDdjMWM5MDJkNzAwMDMxMmQxZDg5MDQyNDljM2RlNTVmNzZlNDgyNzggcHkzay1zdHJ1bmkKKzU2MzQ4IDc2MDIxYmJiODljNzM4Mzc2Y2IzOWFhN2Q3OWM0N2EzMWM4OTg2ZTggbGVnYWN5LXRydW5rCis1NjM0OSBjYjg2NWUzOTllODRjNjVhOTgxMmUzNDhiNjdmYWJkYjM4MTBjYjM4IGxlZ2FjeS10cnVuaworNTYzNTAgYWVhZDEzNmNhNDllMjk5NTc4OTcxYjlmMjI3MGI0NzEzNmZkOTQxYSBsZWdhY3ktdHJ1bmsKKzU2MzUxIDBkNjJjZGQzNTU3ZDVhZGY4NmY3NDE1OTg2MTA1ZmYwZDhhZWNhZWQgcmVsZWFzZTI1LW1haW50Cis1NjM1MiBiNmVhYTY5MTY4ODRjZGNmMWY4MmY0M2Y4ZTNjNGI3YjQ5ZDM3NTVhIGxlZ2FjeS10cnVuaworNTYzNTMgZjMzNjU4ZGEwNjM3NTQ2MmI3MGI2N2YwZTk1ZDdmNWVkOWU4NjA2MyByZWxlYXNlMjUtbWFpbnQKKzU2MzU0IDNmODc5ZDcyNmQxODk4MTRjMDE0ODI0YzJhYTRjOGNmNjQzM2E3ODQgcmVsZWFzZTI1LW1haW50Cis1NjM1NSBmOGM3NWU4NDk5NTYwOTQ2NTA2NjdkMTgwMzg4ODkxYzhlMTg5ZDc2IGxlZ2FjeS10cnVuaworNTYzNTYgZjAxYWEzZDE4YzlkM2FjMDA2ZDEzZWI2YTEyZmRmYjFiZDAxZTcxMSBweTNrLXN0cnVuaQorNTYzNTcgNGNmMDQ1OTQxMDg1NDUwZDIxODg2NjAyOWZlMzc0ZGFjZjEwY2Q3YiBsZWdhY3ktdHJ1bmsKKzU2MzU4IDU5OWVhOWU1YzZjNWQ4ZTlhMzY1ODZkY2E5ZmRhMTk5OGQyMTFhMWIgcmVsZWFzZTI1LW1haW50Cis1NjM1OSBkOGJmNDI2NzIzMzA1NmQ1YTM3ZjU4MjhjM2E5ZDEyNjlhY2FjODVmIHJlbGVhc2UyNS1tYWludAorNTYzNjAgYzI5YjBkYmRhM2Y2YWRmOGEyMjRjMjhiNTdlNGIyZGEwOTRmMmRmMSBsZWdhY3ktdHJ1bmsKKzU2MzYxIDBiZmY0YjZiOTJiZTJiNzNmZmEzOWNkZDY3NzM5NTE0MTQ3NDY2NGMgcDN5aworNTYzNjIgNjE0MTJlMjVlNjFlMzBkMWNhZGE0NzNjNDJmNjNmMmQwMjBlM2U4NCBwM3lrCis1NjM2MyAyMDJjMzc4MzU2MjhiOTE1YWQ0ZWFkYmUxNDM2MTExYjBlODBlNzNkIHJlbGVhc2UyNS1tYWludAorNTYzNjQgOGNjNjUwN2IwNjI2YmI0ZTEwZDM4OWI4OTJiNzk1NTcxMGYyZTNjOSBsZWdhY3ktdHJ1bmsKKzU2MzY1IGRhMmY4OTQ4Y2MxOGQyMDhhYTgxNGQ5ZGNmNzU3NjYyYjE3MmI4MDEgcmVsZWFzZTI1LW1haW50Cis1NjM2NiA2OTdjMGE3OGQ4YzkwMDVkOWRmMDFkNWViZDFjZThhODBhYmUzMTFmIGxlZ2FjeS10cnVuaworNTYzNjcgODVkNGEwMmQwYWJiMGM2NzQxN2E0M2VmYTMxNTUzYzI5NzliMmM2OSByZWxlYXNlMjUtbWFpbnQKKzU2Mzc1IGNmODkwZTQxYWMxMzUxZjU0M2E0YjQ5MGFmNDA2YWFmZGNlYTI0MTIgcHkzay1zdHJ1bmkKKzU2Mzc2IDUwNjZiMDAyNWJmMDg2NTAxYzlhYzE0ZmE5Y2RiMTRhYjc4NGQzNWUgcDN5aworNTYzNzcgYTVhM2RmNDlhY2YzMDI5ZTQyYmYzZmU1ZDQwYjYwNjM1NGQzMWVlNyBwM3lrCis1NjM3OCAyZDIyNTA0MjgzMDU3Mzg5NTYxOGVmNzgxNDhmMmE4MjU0MDBlOTQxIGNweV9tZXJnZQorNTYzNzkgMDljZDNlNTAzMjM1ZTY1YzZlYTFmOTNlODg3Yjg2Y2M3MmRlODQ4NiBjcHlfbWVyZ2UKKzU2MzgwIGE1ZThkZDU5OTYwZGRkOTlkMTVlMWQwOGI0MTU2MzI1NmZjNWMxNmYgbGVnYWN5LXRydW5rCis1NjM4MSA0NWM3ZDQ3MzVkYTM2YzIzZmYxNDliZGE5OTZmMTk4NDVkNzZkNGU5IHJlbGVhc2UyNS1tYWludAorNTYzODIgOGFmMDdlMTFmMTk3ZTI2MTM0ZGExYWRkM2RiNWViNmE2YWMyODVlMyBsZWdhY3ktdHJ1bmsKKzU2MzgzIGRhYWUyN2ZiYjgxNjZlZGUxZDhmNTdkMWVkYjg4ZDg4YmM0NzgxOGQgcmVsZWFzZTI1LW1haW50Cis1NjM5MiBjMjNkOGMyN2RjOTIyMjM4NTA3MGI3MTA1MzUzY2Y1M2Y2MzU4NmFlIGxlZ2FjeS10cnVuaworNTYzOTUgMThlNWFlOTFiZDI5NzllMDJkMjYxOWQyMzI4YmFiZTFjMmJiODc3MSBweTNrLXN0cnVuaQorNTYzOTYgZWJlOTYwZDFkNjI3ZWVkNmNmY2I5MzI4N2JlMTMwYWJhOWMxYmM4MiBweTNrLXN0cnVuaQorNTYzOTcgZjcxNWJhY2RmZDAwZjMzYmFjZDVkMWY2NGVjMzMyZTI2YWY3NzI2MSBweTNrLXN0cnVuaQorNTYzOTggMTkxOTk5YmU2Y2Y1OGVmYTY4MjJkZDA5Y2JmMDNiMzY1MmNmZTUzOSBweTNrLXN0cnVuaQorNTYzOTkgNWFlNzc0Y2MyNmViZGQ3MDc2OTcwMGM5Zjk2NzM3OWY3NWI2YjA1NCBsZWdhY3ktdHJ1bmsKKzU2NDAwIGQwNjJmNjdjMzI2MDRkNDIwZTRkM2JmMzU2M2VjNjNlMTllNjRkODIgcHkzay1zdHJ1bmkKKzU2NDAxIGY1YjVkYWNiOWFlMjliYjEyYjQ3MTk2MjJjNjlkOTBiNDI1OTg1YmIgcHkzay1zdHJ1bmkKKzU2NDAyIDNmMjQyMDlmMjUxZTNhZDExM2M0NjQxNjgwN2FhNjcwZmQ0OTE1YTMgcHkzay1zdHJ1bmkKKzU2NDAzIDM3NzIxMDMyMDBlYzg5YmM4OGJiM2IyZjFiNjY3ZmNlNTBlYjY5OTMgcHkzay1zdHJ1bmkKKzU2NDA0IDg0NzdmYzM4OGVlYWVlM2U4ZjI1YTUxMWRhYmE4ODNlNGJmMTViZTMgcHkzay1zdHJ1bmkKKzU2NDA1IGE4ZDQzMDg1YTg1NzBiMGNlMzMxYTYwOTU3OGYyNWRiMDJjMDg5MmMgcHkzay1zdHJ1bmkKKzU2NDA2IDQ0YmM0OWEwN2U1MjQ5NThlODJhOGI5OTQ3OGM0MTliZjYzNjk4ZWUgcHkzay1zdHJ1bmkKKzU2NDA3IDUzMzdjM2E0YTI3M2Q5MDc3ZDhiZTUzNzA2NWZlYTliYzQ3MDIzZDggcHkzay1zdHJ1bmkKKzU2NDA4IGY1MWQzYmU0MzVkZjY4ZTNkMWQ1MjViMTQ2NzJjMDU4NWY1YTY2ZWIgcHkzay1zdHJ1bmkKKzU2NDA5IDA1OGFiZjg3OGFkNGRmOThmYmMzMzA2ZjdlZWNiOTIyN2Q2YmI0MDQgcHkzay1zdHJ1bmkKKzU2NDEwIDNiZWE4ZmFjM2E3Y2Y2ZDQzZDZmNDRkYmFiOWQwOTBlMzhkNzdhZjggcHkzay1zdHJ1bmkKKzU2NDExIGM0YWIzZWY2MTk0ZjczNzIxNDc3NmU5YjFiNGFkMzUxMTMyOTY2NGQgcHkzay1zdHJ1bmkKKzU2NDEyIGY2NTkyMTQ2YzdmYTY4ZjdhMTU5NDE3N2Y0M2JiMmE0OTM1YjRiZWQgbGVnYWN5LXRydW5rCis1NjQxMyA1NTAxNDFmZDY3YzIzZGU4OTUzNWI1ZDI5MjI0MGQ0MWE1NTI5OTlmIHAzeWsKKzU2NDE0IGM4ZTYyNDU3OWE0ZDYzZTZiZDZlZWQzNWU5ZTI0Zjg4ODBmZjhmYWQgY3B5X21lcmdlCis1NjQxNSBmOTQwZTQ3MGU1NTAyNmUxMmQzNGQ3MTQzNDAwZmYyMDc3YjQzNWY0IHB5M2stc3RydW5pCis1NjQxNiA2N2IwMWIwNWE4MWI2MjM0ODdmYTJmNDlmYTA1ZDYyZTliYmM3N2Y4IHB5M2stc3RydW5pCis1NjQxNyBhMzA5Y2RiN2NiMzMwZDEwYWYxZjhiOTNkZjhiOTA0M2IxOThkMDJkIHB5M2stc3RydW5pCis1NjQxOCA3ZDE2YjQyZmNkYmRlMmNjNTEzZmNkYjQyNzc1NmJjOWYwY2FkMzUxIHB5M2stc3RydW5pCis1NjQzOCBkMDcxOTQwNmIyYzY1OWU3ZGI0Mzg5NjJiNmI1YmM1NGM2MGJhZTZiIHB5M2stc3RydW5pCis1NjQzOSA3Y2VkM2U4NTE5ZjE0MTg4OTFkMzAzNzc3ZjVkODVmMTQ4ZjcxNmFlIGxlZ2FjeS10cnVuaworNTY0NDAgMzVlYjcyMjE1NjMwYWYxYWZlNGZjMWEwYWMzOTgzNzU1MDRmYTRkZSBweTNrLXN0cnVuaQorNTY0NDEgNjc3NWVlNmQ4OWQzZjlmZGIyOTk3ZmFjZTFjOWYyZjQyNTUyZDRmMSBsZWdhY3ktdHJ1bmsKKzU2NDQyIDE0OTgxNWJhMjg0Y2NkZmQzZDhiYjFjY2Y1YzQxNmRhZTliODJiYjEgcDN5aworNTY0NDMgYmQ2YWNmZGI0N2QyNWE2Y2ZlYzFmYWIwYTNkOTBjMTg4Mjg1MzM1MCBweTNrLXN0cnVuaQorNTY0NDQgNGM2NTgzNzdiOTA4NDc1NDkxNmUwYWYxODkzYzQxODM5ODJkNDM3MyBsZWdhY3ktdHJ1bmsKKzU2NDQ1IGMxZTllZWVkYTM0ZjliZjI4M2E4ZmI1YTBhNjAwYTA2MzQ3NDAyYjcgY3B5X21lcmdlCis1NjQ0NiAxYWU1ZjEwMmZkM2Q2ZTI1MTVmZWY4NThkZWZlYTBkMjg4N2VkNjc2IHB5M2stc3RydW5pCis1NjQ0NyAwMDdlZDZjZGQxZjdiYzc0YmU4ZDkzMTFkMjE5NTAyZGRmMjY2OWVhIHB5M2stc3RydW5pCis1NjQ0OCAwODY0MmJkMWJlMTg0YWUxMmMyZTM3ZmQ2Nzg2ZmNjYWE4M2E1NTk3IHB5M2stc3RydW5pCis1NjQ0OSBkZmFjYjUxZDEzODYxNjEyMTc5NWMxMzEyODM4MjA5ZjU2Yzc3YWY5IHB5M2stc3RydW5pCis1NjQ1MCBiZGM2N2RjMWE5NWUyZTQwMzQ3ZTljODVkYzA1OWIxOWFjOTQ2OGIxIGNweV9tZXJnZQorNTY0NTEgZDAxYWU2OThjYjU4MzhmNzVjYjUwNzhiNmNiZDY0YWUzNTZjODMzOSBsZWdhY3ktdHJ1bmsKKzU2NDUyIDI4YWY5NjEwMzhkZTgyNmE1MDdkNjg1YWY4YTZjZDIxMzcxYjg0NzMgcmVsZWFzZTI1LW1haW50Cis1NjQ1NCAzNzkwMmVhNDFhMTdiNDMyYWRiNjAzYjBhMjRlYmFkNTdmNTFmMDlmIHAzeWsKKzU2NDU1IDdmNzYwZGI0ZTc0NmJhZWYxOGIzNTRkZjA5ODUzZTY1MGY5YzU3ODcgcDN5aworNTY0NTYgYzAyYTMzNzg4YThmNWViZDMyMmY5NmU1YWM1YjMzOTYzNGY5ODg1ZiBsZWdhY3ktdHJ1bmsKKzU2NDU3IDNmYjU5NjY2YjI4MTBhNDFkMDJlMTY2NDY2OTg0ODEzY2Q2NGRjM2MgcDN5aworNTY0NjAgNDk5OWEwOTQ3MzQzNGFjZDQzZTQ0MGQ5NmIyYzg4NmIxYWQ5MTVmNyBweTNrLXN0cnVuaQorNTY0NjEgYWMzNmYwNmE2MTJiODBlMGIxMTQ1YTM3OTJlOWI0ZWZlNTc2YTgyZiBweTNrLXN0cnVuaQorNTY0NjIgNjM5NTVlM2NmOTkzYjYxOTUzMjEwYzg0MGExZTExMzdjMjY5Yzk0OSBweTNrLXN0cnVuaQorNTY0NjMgOGM0YTMzMDc5Y2E2MDBkODcyYjY0NjI3OWNmNzkwNGM4OTZlYWEzYiBsZWdhY3ktdHJ1bmsKKzU2NDY0IDNlMzMyMTVjNjZlZGU4ZmYyYzU2NzRiN2E3YjFhY2QxMDYxZjM2M2QgcHkzay1zdHJ1bmkKKzU2NDY1IDExNjI1MWFkYTkwNThmZTYwN2U4YzgyMjUzNTdhZjMzODAxM2I3ODQgcHkzay1zdHJ1bmkKKzU2NDY2IDYwYjcxOGI2ZmM5YjE2MzNjYzI0YTlkZGY3ZjI1NjM2M2I3ZTc4YzggcDN5aworNTY0NjcgNGJiYmUwYzU1ZmEyMTU4ZmUyMTY1MzdjOGZjZGZiM2ViYWQ3NDJiOSBweTNrLXN0cnVuaQorNTY0NjggYzQ2ZjBhZmI0MDNjNDA3ZWI5OWVlODQyZGUyMjA1N2VhMzViYzUyZiBweTNrLXN0cnVuaQorNTY0NjkgOTY0YzRiZjg2ZDlhNjk2NzU3ZWUwZDIzNDRiYjYzOTRjODIwOGExMyBweTNrLXN0cnVuaQorNTY0NzAgYTJjNWNlYmQwZGM1MWYxNWI3Yjk5NWFiZTkwZjVmZGViYmZkMTU5OCBweTNrLXN0cnVuaQorNTY0NzEgNTdjNjJiZDM2YjE5YmI4MWJkYzk0MTcyN2ExZTlhMzUxOGI2MDk1OCBweTNrLXN0cnVuaQorNTY0NzIgNWE5ZTNkMzdmNjYxZjEzZWZkZTE3MWNiYWVhNzE4NDAyN2UyODMxYyBweTNrLXN0cnVuaQorNTY0NzMgMzMzZmYwNTg0OTM4YzU2MzM5ZGU3NTY1YjMzNWNiNjc5NjgyYmI0OSBweTNrLXN0cnVuaQorNTY0NzQgN2EwZDFiYWE0YTUzZGVkNDI0NTFiMTgwOTJkNmFiNTQ5NTkxMDYyZCBweTNrLXN0cnVuaQorNTY0NzUgMmJlMjUxZGQyY2JkZjE2MTMzYzRiNTQ5MTAyMjExYTJiNzliOGRhZiBweTNrLXN0cnVuaQorNTY0NzYgNjYyMGE1MTBlOWE5NTExMGRiMTM5MTJkNjY1NTE4YWRlN2RkN2Q5ZCBsZWdhY3ktdHJ1bmsKKzU2NDc3IGUzNzE3MWE0YjE0Nzk1OWY2ZjIzZWMyYTA4ZjIyZDRkYjY3MzI3ZDkgcDN5aworNTY0NzggZmQzNDU4YTkyYTg5NDBkYmQ3YTY3NTExYTIzZmZhZDk4ZTc3YTk3NCBwM3lrCis1NjQ3OSA0ZTg5ODcyZjA4MmUwNmI4ZmU4OTI2MDVhN2U2MjBjMzYxMjg5YzhmIHAzeWsKKzU2NDgwIDUzMWUxODFmNWI1MzBmOWU0NTI4NjA1NDA0OWIyNjQ0ZGU3MzdlMjIgcDN5aworNTY0ODIgMTJkZjkwNjAwM2VhOTIyNmYyMmNlMzE4ZGZiMWQ5MGYzYjk5MDRjMyBwM3lrCis1NjQ4MyBlNzBjZGNlMGU4YjI5NTVjNDQwMDhhNDQ4ZjA5MzViOWRlN2QxODVlIHB5M2stc3RydW5pCis1NjQ4NCBjOGI4NTBiNWEwNjY2OTFmYTg4Y2ZlNTJlZDM1ZThiODJhMzk5ZWU4IHB5M2stc3RydW5pCis1NjQ4NSAwM2FiOGM4YmIwYWUxODRjZThjODJmMDZlNTgxZGVjNDFmZGRjOWIzIGxlZ2FjeS10cnVuaworNTY0ODYgMjNiZmRiNzU3MWE3ZGFkMWNlODVhYTY1ZWViMTY0NWFjOGJlODIzNiBwM3lrCis1NjQ4NyA4OGVlMGE1NTYyZWUyMjE5MGRmNzFmMDAxOGNmZTU4OWQzN2UxOTIyIHAzeWsKKzU2NDg4IDM4ZDFiZWI2NTBiYWNmZTJiZGVjMzI2OThhMGFiOGQyNTliMjRiZmEgbGVnYWN5LXRydW5rCis1NjQ4OSA4MTFjOWFhNmVkODgyZTQwNTc1MWRjNmY0ZTk1YjcxOTRmNWIxMDNmIHAzeWsKKzU2NDkwIDI3ODYzOGNkYzY0N2FhMjg0ZWEwZmFmM2NmYmRiYmIwY2Y1Y2M2ZTIgcDN5aworNTY0OTEgNjE4NTlhMzlhODdlNzI2NDUxYjcxODU0YTdlMDFjNjdmMzg0NWZmYSBwM3lrCis1NjQ5MiA3YmZlOWExMDdiMjk3NzcyMDNkNjQyMjA2Njc3MDZlNzY3ZGJhYTY0IHB5M2stc3RydW5pCis1NjQ5MyBjMTUyYzdmYTE3YzRkMDI4NzNjN2YwNjY0ZmM2NTQ0MmMxNWI3ZDRjIHB5M2stc3RydW5pCis1NjQ5NCBmNGFmNmY0YjUxY2MzNjE4ZmZiMzM4ZDEyZTk1NzA2ZWYxOThmYjcxIHB5M2stc3RydW5pCis1NjQ5NSAxNDU3NDEwMTY4NDg4MmM3YmRkZjUwMTU4ZjIxZDMxZDhhY2I3NjBkIHB5M2stc3RydW5pCis1NjQ5NiA2MGM3NjcxOGUwNGEwMDVmYzc3NmYwNzdjMWNlYzRjOGRmYmE3YzQ5IHB5M2stc3RydW5pCis1NjQ5NyBmMzJmYmY5ZmE2MGIxYzg5NDA4ZGM1ZGIwODEwZjY2NDM2Njk4MDRhIHAzeWsKKzU2NDk4IDQwOTk4ZjE4YzVkY2NiYzMwMTdlMGJhMjU1M2FjNWNmODlkODFjMzkgcHkzay1zdHJ1bmkKKzU2NDk5IDgzNjcwYzJmMWVhODRjNzExYjFkNzkwMDgzZTJjNGFlNDg3M2I2NzMgcHkzay1zdHJ1bmkKKzU2NTAwIDljZTU0Y2YwZGJlMmE2OWRkYWZmZGZmMGI4ZWQ3NDRiMzgyM2QzNDAgcHkzay1zdHJ1bmkKKzU2NTAxIDM2YjY3MDMwY2E0NzJkYTM0YmEzNjRmY2U5M2FlNDE1YTQyNmI0ZDcgcDN5aworNTY1MDIgYjU5MGY0YTA2YmY4NjQ3Y2E2MjdkODQxNzc1MDY2ODVkYmZkMzgxNyBweTNrLXN0cnVuaQorNTY1MDMgNWU2NmJiNjljMWUzZTQ4NmU3YmY3NDVkYzc0NmRkMGFhNzUyY2JkNiBweTNrLXN0cnVuaQorNTY1MDQgYmZlMDQxYWZhZmU2OTBjMGViNjg1MDU0NmEyOGRjZTQzYjNlOGI3ZCBweTNrLXN0cnVuaQorNTY1MDkgM2ZlNjQzZDYyZWNjNDVlYjA0YzA0NjgzZWEwM2E4MjY1MzljNGI1NyBsZWdhY3ktdHJ1bmsKKzU2NTEwIGZkNjcwNTM5YzA4NWQ1NjAyMjZiOWUzY2ZjZGU5NWVhOGVjZmI3M2MgcHkzay1zdHJ1bmkKKzU2NTEyIGU1MGUzM2I3ZTBlMGNjYjcxMTQwNTI4NjhiMGNlYTNkNTQ0NGJjNWMgcHkzay1zdHJ1bmkKKzU2NTEzIDY0MDk1MmRmNDQzMTRiNGJhMGRhYjU5ZWQ3NTJlNjhkYzdjMmRhMTkgcHkzay1zdHJ1bmkKKzU2NTE0IDk1OWU1MmFlMjYyN2EwODlhZDU4YjBlZThjNWI1M2QxZDI0NTBkYjcgcHkzay1zdHJ1bmkKKzU2NTE1IDM2ZmJjZGE4MGIxYzQ1N2ZiNGVkOWEyMDYzZGE5ODljYmVkYzEzYjggcHkzay1zdHJ1bmkKKzU2NTE2IDViOWM4ZGNlNGVkZDdlOGNkNmJlMWMzNWFhZjllMmU3Nzg3ZjdlOTMgcHkzay1zdHJ1bmkKKzU2NTE5IGQ5NGQ1YjQxNmE5NDdhZjRmODVlODIzZjFkMmZjNmQ5MjkxMzM0MDEgbGVnYWN5LXRydW5rCis1NjUyMCBiYzhlNWUxNTcxYWNjZjBlZWU3OGRlNGRlY2FjYWYzNmQzNzJkNDZjIGxlZ2FjeS10cnVuaworNTY1MjMgMzBlMTEyMzUwZTIwM2EzNjlmNGNkNTg0MWU0ODBlOGUwN2Y5OTYwNSBsZWdhY3ktdHJ1bmsKKzU2NTI5IDc0NmE1MDIxZTFhYTg3MTFlNWI0ODk4MjRhNTc2Nzg0MGJkMjFmNTcgcHkzay1zdHJ1bmkKKzU2NTMzIDBlMmZhNGM2YTQyODM1NTM3MjIwYjdmOWQ1MzE4YWMxNWJkYThhODIgbGVnYWN5LXRydW5rCis1NjUzNiAxMTM3NzI0OTMwYTcyYjM4OGQ0ZTk0NzRiZjVkMDQ4NzMxMTRhNDY1IHAzeWsKKzU2NTM3IGRhNjI4MzZkZDk5Zjc3M2Q2NGExZjgxYWE5MDA0NDg1ZWU3MzVjNWIgcDN5aworNTY1MzggMmZkYTU1M2FjNmUxNjNkYjE0ZjI4OGQzMzhiYTU3ZWM3NDNjNmJlNiBsZWdhY3ktdHJ1bmsKKzU2NTM5IGU5ODkxZDc4N2VkZDgyNjkyZDE4Yjg0M2YyM2IxYTBjY2IyN2ZhZmYgbGVnYWN5LXRydW5rCis1NjU0MiAxMjA1ZDMwMzQ2MWMzMjNiOTgxNDU0ZWFmNjNmOGUyOWIzOThjYWYzIHJlbGVhc2UyNS1tYWludAorNTY1NDMgMjc4NjRhMTgxZjAxYjIzOTJjYzlmODg5YWYxMTRmM2E0OTgyODdjMyBsZWdhY3ktdHJ1bmsKKzU2NTQ2IDc5NWE1ZGNkYzk4MjAzMDMyZTUyMjI3N2IxMTlhMWQ4MDVjYTJmY2YgcHkzay1zdHJ1bmkKKzU2NTQ3IGQ0OGFjYjI4NDY2NGM3NDRiMThmMGY3NTk3MmVkZTY5MDU5NGIxYjIgcHkzay1idWZmZXIKKzU2NTQ4IDVmM2Y1NGMwYzZjOGViMjBkNmI4MTNiZmFmNTYyYWJjNzE0OTEyYzUgcHkzay1zdHJ1bmkKKzU2NTQ5IDhmZjg5OTY0MTU2MzUyZjc3YWFmZTRkOTIwYmQ2MDQxZDdhNzMzZTEgcHkzay1zdHJ1bmkKKzU2NTUxIDZmYTdkOGZiMDc3MzE4ZjhjZmFlYmZjODlkYjI4NDVmNGViZjVmNGYgbGVnYWN5LXRydW5rCis1NjU1MiA0MzRhZTY2YjdkZTA0ZTliY2NhZjk3NzgxN2M4Y2YzMjZmMGU5ZjQ5IHJlbGVhc2UyNS1tYWludAorNTY1NTMgNjQ5MDNmZjc2ZWRlMWEwOTY5ZThiMTY2ZDgxYTU0YTE2ZTQ1NGUwNyBsZWdhY3ktdHJ1bmsKKzU2NTU0IDU3ZmFjZjM0YTcxODYxMGM1NjkzYjRlOWZlMzg1YTQzOTBmYjE1ZGYgcHkzay1zdHJ1bmkKKzU2NTU1IGE1NDM0ZmFkYTlmZjQ5YzQwN2UwMWUyNzI3N2Y2MGI3OGI0ZWY0MTEgcHkzay1zdHJ1bmkKKzU2NTU2IDJhY2M4OTAyNzY4YzQ0N2YwMzM2NjM4ODljODY1YTk1YmJhNjgwYTMgY3B5X21lcmdlCis1NjU1NyAwN2E1NzdiNjIwZWM2OTE4MmM0ODUzNzEwMDk2ZGJiNjlmYTYzODM4IHJlbGVhc2UyNC1tYWludAorNTY1NTggZGVlYzQxMjZmZmFjZWIwNmUyNmZhZGU2YTBhOGZiOGUyN2ViOGViYiByZWxlYXNlMjUtbWFpbnQKKzU2NTU5IGIwMGJkMDhhMDk0OTQ5MTIyNzliODQ5NzlkNTJiZGIzNGExZDgwY2EgcHkzay1zdHJ1bmkKKzU2NTYwIDI3OGM1MjEzNDE0MGY2MTdkY2ZmMWNhYTA3ZGNkZTg0MDhhYzg0ODkgcHkzay1zdHJ1bmkKKzU2NTYxIDEwNzFmNzA3NmU4ZTM4YzczNGZiNThjZmMzNGJmYjljMTBlZTlmY2IgbGVnYWN5LXRydW5rCis1NjU2MiAyMGJkNWJlMjRhYjU2YjliOTg1YmM4YWJmMWJkNTY5MDA2ODA1YmJhIGxlZ2FjeS10cnVuaworNTY1NjMgODYyODViMzk3YjRkMTA0ZDQ5N2VhMGRjNGQ0YTIwMTc0MzU5ZWNhNyBweTNrLXN0cnVuaQorNTY1NjYgMDU0NmMxMTVhOWNmM2M3MmIzNjA1MWI4YmViZDAzZWRmZjI0MDk1MyBsZWdhY3ktdHJ1bmsKKzU2NTg0IDllODRiNDg2ODk4NDY4MWU4ZTFmY2MxZTdiODNiY2FjMzBiMGFmNzcgcHkzay1zdHJ1bmkKKzU2NTg1IDkwZTQyYTBiMjIwMmNmODU2ZGM1YTEzODA5M2Y1ZjIyZmJhYzdiNGUgcHkzay1zdHJ1bmkKKzU2NTg2IGY2NzIwNzFkODJmYjgzOGRjOGI2NWQ2NjUxMzg3MDRiODE3NWMwNTAgcHkzay1zdHJ1bmkKKzU2NTg3IDM1N2NiODk2N2U4NWVlMGY3OGNjZDkyMDFjNTYzN2NlNjE3OWYwNTggcHkzay1zdHJ1bmkKKzU2NTg4IGU5OTE2YTRlMDZhNGRkM2E1MWMxYjVlNWE3ZTQyMGM0YWRhMjA0OGMgbGVnYWN5LXRydW5rCis1NjYwMCA3ZTdkY2UzMDg5ZTM3YTljMTBmYmUyMWFiNjMyNmNmNjA4YzI1ZGQzIHJlbGVhc2UyNS1tYWludAorNTY2MDEgODViN2Y0MGUxYzFjZjBhNWI1NWY2NjM3OTJhMTY3MWU2MWI2ZjQzMiBsZWdhY3ktdHJ1bmsKKzU2NjAzIGQzNDcxZWY2ZmUzOGE5Yzg4Y2E1MTZmMjE0N2RmMzc0YTlmN2E3NmUgcHkzay1zdHJ1bmkKKzU2NjA0IGUzMWM0ODIxOGIwY2I5MWEwYzhjZDI2YTQ5N2IxYTUwN2Y2YzAwOTQgbGVnYWN5LXRydW5rCis1NjYwNSA3ODVkZTIyNDk5NWQ1MTE1YWY3NWQzMWY5NzhlYzllY2IzODVlZWVhIHB5M2stc3RydW5pCis1NjYwNiBlMWRhZTg2MjZjMTFhNmRlMDlmN2M2ZjVmNDZhZDZiMDE2MTRmOTRmIHB5M2stc3RydW5pCis1NjYwNyA4NmMxM2NlNjBhYWRlNWQ5Nzg3M2QzOTcxYmJlZTY5NjlkNjhkNWZmIHB5M2stc3RydW5pCis1NjYwOCBkNTJiZWY1NTJhYTQwN2YxYTYyMmQyZjkyYTMyZTliYTlhMDc3NTMxIHB5M2stc3RydW5pCis1NjYwOSAzMTA1YjdjZjM1YmVhNzA3N2ZiYTk3NmU4NGFkY2FjZjZlY2NmMzM2IHB5M2stc3RydW5pCis1NjYxMCBiOWFkYWQ1Njk1YTM5YWQxMDg5YTk0ODBkZjFmZDMwMGJmNDc3OTZkIHB5M2stc3RydW5pCis1NjYxMSBlOTRkNTA2MGIwYzFjNGEyNGY2MDcyNWIxMDAyNWU0YzNhY2QyNmI2IGxlZ2FjeS10cnVuaworNTY2MTIgZjFmMWY1ZTEzOTVjOGI0OWVjZWQwNzNjMjU0MTc3MjMwMThmOTUwNiByZWxlYXNlMjUtbWFpbnQKKzU2NjE0IDVjZDVmMzJiNGEyODg2NDg4MDYyZTAxNjNkNTQxMWFiNzliMThiNDYgbGVnYWN5LXRydW5rCis1NjYxNSAzNjVlOTkxYTYzMWI0YzU2NWQ2NTUwZDdmYWEyMjVhODkyOTE1MGI5IHJlbGVhc2UyNS1tYWludAorNTY2MTcgOGFkOGEzMzRiZTBmMzU1ZmQwNDc5MDBmMTYzNzMzYzU1MDUxOTA1MSBsZWdhY3ktdHJ1bmsKKzU2NjE5IGU1OTgxNzNmOTVlODgwNDFmOTUwZjE1MjQ4YjJmNjFiM2E3ZmMyMzYgcmVsZWFzZTI1LW1haW50Cis1NjYyMCAyNTEwMzNhMWMyZTMyODVkYTI3NGQ4NmNmNmY0NWQzMmI1YjdhY2E5IGxlZ2FjeS10cnVuaworNTY2MjEgN2U4NDY5NjE3YjFjM2QyNTZlN2U5Mzg1ZjYxMzJkYzg1MjNiOTA2YiBweTNrLXN0cnVuaQorNTY2MjMgMGMzMDBiMjkyMDBjMjI4OWI1Zjk1NTE5ZjY3YTIzNTM3YWEyM2VkMyBweTNrLXN0cnVuaQorNTY2MjQgY2U3ZmMwOGQ1ZjQ3ODUzMTQxNjQwMDY2MzYyZDgzMWFlMTdhZjJhOSBsZWdhY3ktdHJ1bmsKKzU2NjI1IDQ4Y2ZhYWE4Mjg3MzBkZTFhMWExNTljYTU0NWQyMWNjYzIxNjkzZmEgcHkzay1zdHJ1bmkKKzU2NjI2IDQ2ODYyMTU2OWJlOGU5NWVjZDkzM2ZjOWM4NmVjNmJhMjE2MzM1NGYgcHkzay1zdHJ1bmkKKzU2NjI3IGJkODQ1NmM5NTY5YWMyNTMxNDRhZWQ3ODFkMDI1NmZmOGNjNTM4N2EgcDN5aworNTY2MjggOGU2OWFjMWJkMDQyY2NhZGZkYjg0YzYwZmRiNDgyZWNlYmQ0YTVjYiBwM3lrCis1NjYyOSA1MDQwODRjMDRhYzAwMGNkZDNjYmNkZDdmYmE5MmJiMGI3NmZhNGVhIHB5M2stc3RydW5pCis1NjYzMiAzYTAxNTM1NWIwN2FhMDM1MDQxMjI4MzQwOTRlMGFjMjA5M2FkZTI0IGxlZ2FjeS10cnVuaworNTY2MzMgYjYwNjhkZDZhZTAwYzNlMTU3ODkwODhkODk5MjE2YTc1MTEwYWU5MyBsZWdhY3ktdHJ1bmsKKzU2NjM1IGVmMmRjNjJkMjdlYjdkOGYzMTk5MjViMzFlMzBmMjhiZTMzYWY3NjYgcmVsZWFzZTI1LW1haW50Cis1NjYzNiBlMWMwYWE5NGMwOTJmOWMyMGUzZDNkMmFkYjQxMzBmNjdmZGFhOGY0IGxlZ2FjeS10cnVuaworNTY2MzggM2Y3OGFjYzAxMDM5ODE1YjZmYmQ5NTIwMjUxMDIxZTE4ODYxMmFjYiBwM3lrCis1NjYzOSA4YjU2YTA2OTYxNGVmNGEyMTUwZDJmMDgxMDIzNjliMjc5ZmEzNDAwIHB5M2stYnVmZmVyCis1NjY0OCAzOTJmOTgyMjFkMTNlZWFjNDhlZWUwMzkyNDU0NzY5M2QyNzFkYmE4IHB5M2stc3RydW5pCis1NjY0OSA4YzE2NWQyMDcwOWY2M2ZjNjNiNWYyZGQwZGI4YzhkMzgzZDQ5ZjU3IHB5M2stc3RydW5pCis1NjY1MCBhNmQyNmE0ZDY3MmRlYTNiZDgzZjI0NGE4M2VlNDY3ODVkMTY3ZGE2IHB5M2stc3RydW5pCis1NjY1MSA5ODk4YTY2OTY1YmNkOTg3ODU5NGNhNjJhZmJhNTFkZjAwMTVlMzk2IHB5M2stc3RydW5pCis1NjY1MiBkM2E1Yzc5NmM4YmEwMGZmNWYwMTMxYTJiYmIxMmZkZGI4NzkwY2UxIHB5M2stc3RydW5pCis1NjY1MyA2NzA1OWI3OGJjZTQ3NWQzYWZhNTRmNWQ1YWFlMDI2ZDViZDBkM2M2IGxlZ2FjeS10cnVuaworNTY2NTQgODAxYWQyZjBkMGI1ODA1OTdkYzJjODFmOTA0NWJlMDZkMDk0Yjc4NyBkZWNpbWFsLWJyYW5jaAorNTY2NTUgMDdjMmY4MWMyNjdkNjE5YmM3NjNkYWVjOWNjNDUxNTFhMmQ0OGU4ZCBkZWNpbWFsLWJyYW5jaAorNTY2NTYgY2Y0NTk2NTJjMzUyMzRiNzgzZGY0MzllYmU2N2E1OTg4NjZjNzFiYiBkZWNpbWFsLWJyYW5jaAorNTY2NTkgNmYyMzMwZTA5MDliZWM0YjdiMDRiNmQ0YmFjYmQzZDA0MzM3ZTEyZCBweTNrLXN0cnVuaQorNTY2NzIgMDJjMjcxNzdkZjc5MzRiY2NhMWQ2Y2VhZDNhN2RiNmQ1NDE4YWZiOCBweTNrLXN0cnVuaQorNTY2NzkgMGNiYmE0NDI2Y2QzYzRkMmFhOWViODBhYzFmMzQ2ZGMwYTAwZjdjNCByZWxlYXNlMjUtbWFpbnQKKzU2NjgxIGUyMWQ2NDc0NmJkM2NjNGY1MDZhZTk1YzIxNmNiM2ExNGE0Y2MzMDUgbGVnYWN5LXRydW5rCis1NjY4MiA3NTVlMzFkZWE0N2U1OTZmMzBhNjQ3MGE3NDIwZWEyOTFhMjdiMjQ2IGRlY2ltYWwtYnJhbmNoCis1NjY4MyBjMzNjMzdiYTljYjNiNTllMDdiMWU5OTkwNDFjZTFjODRjNzc0NTVhIGRlY2ltYWwtYnJhbmNoCis1NjY4NCBiMWZmNTRmOGY5ZDgzMTNhNTFiOTQ0NzljODg0NGVkMTU1NjFkOTQ5IHJlbGVhc2UyNC1tYWludAorNTY2ODUgM2FkYjAzMzVkZTUwNmNkZWQyMTllMDc2ZDlmZDE5YWRmOWU0NzVhYyBwM3lrCis1NjY4NiAxNjhkMDU1MTYwZGMxOWY5MTExNzRjOTNjMDJiZGYwZWI3MDMyZDg3IHAzeWsKKzU2Njg5IDcyM2NiOWUzZmE1MDBlNzUwZTBjZjBkZWIyZDQ1OGU2MjU5MGQyMDUgbGVnYWN5LXRydW5rCis1NjcwMyA3Nzk0ZGExMzM0YTAxZjc4NDllNzA3YTQzYzczN2VmZWQ5MTg0MGE3IHB5M2stc3RydW5pCis1NjcwNCBhZTcyYmY1YWU0NjUxOGNhNjFkNWI1MDliNGYzYzVkNGExMjNlZWE0IHB5M2stc3RydW5pCis1NjcwNiA0NjYyNWU2MTIyZTk5YmZlMGNhNDFmNjlmMjlmYzYyOTE2ZGIwMjVjIHB5M2stc3RydW5pCis1NjcwNyA4MWFkZTAxNDQyNDdkNzg3NWQzM2Q4NTJkMzI0MTQxMGMzYjUwMjFkIHB5M2stc3RydW5pCis1NjcwOCBiMWJmMWJhYjk3Nzk2NjAzMTUxMGRmNTQxMTAxM2FjNWJiYTAxNTBmIHB5M2stc3RydW5pCis1NjcwOSA2YzNmYTQzZjFkMWQyNTExOTZjYjFmOTQyY2YwMzk2NWY0Njk0ZjA4IHB5M2stc3RydW5pCis1NjcxMSA3NDAxZmY3OGViMjljMDNiY2E4ZDMxMTM3YjgxZTBjNzliMjM0ODliIHB5M2stc3RydW5pCis1NjcxMiA1MzVkYWUwNGQ2Y2Q2NzQ2NDU4M2MyZTAxY2I1ODNmZmZhZTc4ZDIzIHB5M2stc3RydW5pCis1NjcxMyBlMzE5ZDJkMjg1YmEzZDY3NWFmNmYwMTc3MTJmMzU2MGJmNmEzOTU2IHB5M2stc3RydW5pCis1NjcxNCBjMzUxNDA1NTlmODdlOGRhOGNlNjE4ZDY5N2JiYWFlNTNlOWJhNDQxIHB5M2stc3RydW5pCis1NjcxNSBmNmNjNzZlNGNhMjUxYmRhYzdmOTA3ZjE3MWRlNDBkYzRmOWI5ZjBmIHB5M2stc3RydW5pCis1NjcxNiAzZWQwMjBlOTViNDQ0ZTMwZTM5MWU5NWY2NzAzNTIwOGFhMTM5YjYwIHB5M2stc3RydW5pCis1NjcxNyAzYmUyOTcyYTI5Y2FjNWM3MGU5MDc4MTg3MjE2ZjlkN2ZhYWIwMTU3IHB5M2stc3RydW5pCis1NjcxOCBhZGU1ZDFhYzFhMmM4YTUwMzlhZGUwNmI1MGY0YWRjMjM3NmMyMDBkIHB5M2stc3RydW5pCis1NjcxOSA3MTMwNGVmYmMzMTZhNmQyZjQyZDM1YjY0YTVjYTExNzBkNGJkODI4IHB5M2stc3RydW5pCis1NjcyMCAwNTcyOGU1MmIyODMyMGQxODAxODJmNjg1ZGQyODc5NTZkNjE3ZTQ1IHB5M2stc3RydW5pCis1NjcyMSBiNmJkYmI2MzI2ZDJmMGI5ZTE5N2Y0MDYxYjVmZTM1MDI5YjcwNmJhIHB5M2stc3RydW5pCis1NjcyMiAwZmE4NGZmYmE3Njk4YWRlYjI4NWNlZWVhMjI5ZWVkMTQ3NWU2MjdhIHB5M2stc3RydW5pCis1NjcyMyBjNjE5NDQ4MGIxZDU5NjFkNGVkZjM0YThlMTI5MzFmMDQ5ZWM5NzgyIHB5M2stc3RydW5pCis1NjcyNCAxMmRiYWVjZmI0NGI5MTQ3ZTgzMzk4NjQ3M2Y5OTU1NzI0OGExOTFlIHB5M2stc3RydW5pCis1NjcyNSAxMzMzNTAzOTg3MjIxMGE5MWRmZDk0OGViZDA5ZTFhNjFiOTFmNzJmIHB5M2stc3RydW5pCis1NjcyNiA4ZDY5YTA4NGUzNjU1Y2E1NTMwYjU5ZWFlNjU0ZDQ2MDA1YmE0OTM3IHB5M2stc3RydW5pCis1NjcyNyAzZmU1N2RhYWE2MDgxMzQ5Njc4YWFjNTgwZTIyYjZiZmQ1ZGI3ZGEyIGxlZ2FjeS10cnVuaworNTY3MjggYmE2NGZjYWI1MjE0MmE1ZmI4N2M5ZWEwZDA0ZmYzYzU1ZWY2MDMwMSByZWxlYXNlMjUtbWFpbnQKKzU2NzM1IGFhNWVlNjUzMjhmYjY5NDhhNjM4MTk2NWE0YzM2OGFiYWU4MTgwNzAgZGVjaW1hbC1icmFuY2gKKzU2NzM3IGVkMzc1NDJmNDczZWFlMjg2NWQ3MmUwZjQxNmMxZTc4NmFiYTA5OWQgcHkzay1zdHJ1bmkKKzU2NzM5IDUyOGE4ZDllZjIwMmU1NGQ2MzdlNmViOTM3YWE3NDQ3NDIxMDg3MGMgcHkzay1zdHJ1bmkKKzU2NzQwIGE0MGFlZGRjMGM4MWJkOGU0N2E5YzI4ZTU4MjYwODYyMjU0YzU2ZmMgcHkzay1zdHJ1bmkKKzU2NzQyIGY0NDA5YzVkNzk5NGQzYTBmZWNmZGNiNmExOGI3MjZiOTVmNTQyOTEgcHkzay1zdHJ1bmkKKzU2NzQzIGQyMjM1YWVlMmQyNTUwMmNhYzE5NjJkYjY5Y2QwZGU0MzBhM2M4Y2YgcHkzay1zdHJ1bmkKKzU2NzQ4IGE4NGVhZGY2MzcyZTM4YjIzNmNiZmViMDg3ZDNmYzQyOTFiNGE5M2MgcDN5aworNTY3NTAgZmRiZWQ3M2U1ZGE3ZjVjYjExMDkzOGE0YTg4MGZiODdmOGFiMDNlNSBwM3lrCis1Njc1MSA2NDg1NzdjYzY4OGFmNmNlYjA3OTcyOWE1N2JmYWYxZTg2NjQxZTRiIGxlZ2FjeS10cnVuaworNTY3NTMgZGQ3NGUwMjBhMTMyMzg2ZDQxNjk4ZmE4NzJlY2VkMGFkYTIxNDA3ZiBweTNrLXN0cnVuaQorNTY3NTQgNjI5MTg1OTkyYWEyMTUwYjAyOGQ5ODljYWE0NWMyNGJhYmY2NDQ0MSBweTNrLXN0cnVuaQorNTY3NTUgMDgwZjJhYTE4MDE1OGU3MmU5Mjg4Yjg5MmZjZWEwN2I4ZmQ0MWE5ZCBweTNrLXN0cnVuaQorNTY3NTcgNDlkNTFjMWZjMTc3OGMxMmVmNjUxNTg2YTlhNjlhYWZmYTczOGQwYSBweTNrLXN0cnVuaQorNTY3NTggMTc4MDAzNWQ1ODEyM2M3N2ZjZThiMDU0YTc0NjY3ZGM2NWVmZTVhOCBkZWNpbWFsLWJyYW5jaAorNTY3NTkgODhkN2EzZGY1Zjc5ZTUyOThhZTYyNDBhYWQ0YmI1ZjljM2U2MGNhYSBkZWNpbWFsLWJyYW5jaAorNTY3NjAgYjQ1MDA1NjQxYmNhNjI4OWQ5MTQ1YmY0ZWY2NzBjZWUyYWZmNjQ5NiBwM3lrCis1Njc2MiBkYmZjM2NmMTUyMmQwN2E0ZTY5NmM3YWMyMzM2ZWQxOWY3NWI2M2YzIGxlZ2FjeS10cnVuaworNTY3NjMgOWIyNmVlNmU2ZDBhNDVkZmM5YWIyOTJkODM4MGUxOTQ5YWJlZWUwNyBsZWdhY3ktdHJ1bmsKKzU2NzY0IDI1OGUyYjdhNzhlNGZlMTc0Nzg0MDNlYmE5ZmNmMjE0ZWEyOWE2ZmEgbGVnYWN5LXRydW5rCis1Njc3NSAwYWRiNzIwN2U0YmViN2I0ZDNmMDk3NmUzNWJjZmYzMWJjZjI2MThkIGRlY2ltYWwtYnJhbmNoCis1Njc3NyA4YjQ1ZjIyOTdkYmQxNDliMjkyMWMyZDZlYzhlZjQ3MzE0MGYzOGE5IHB5M2stc3RydW5pCis1Njc3OSBiMTBiYTM4ZTZiODA4MTIzNmE1OTAzYTJhMTlkNmRiOTFmZTQ4NGEyIHB5M2stc3RydW5pCis1Njc4MCAyMjkzNjExOThlOGQ1ZWQ4M2M2NTlhNGQwODA2NmRiNmQ2ZDc4NDVkIHB5M2stc3RydW5pCis1Njc4MSA0NDAxNzZmMDYxNDc5NDI0MDYxYTg3YzI2YjJjYjUyZDE2MTBjNmY4IHB5M2stc3RydW5pCis1Njc4MiAzZmMzY2VkYzQ5Y2EzYzZhODViMTg1ODA3MTRlZDkxNGE4NmYyNWI4IHB5M2stc3RydW5pCis1Njc4MyA4MWEzODAzZjQzY2Y5ODllYmQ4NGZjMzdmZWNjN2YzYzUxZjllNDMzIHB5M2stc3RydW5pCis1Njc4NCBmNGM5OWNhZDhkMmY2NGIyN2Y5MzZkNTNlMzk4ZDU5ZWNmMDE3MzkwIHB5M2stc3RydW5pCis1Njc4NSBmODI4MWRjMmU2OGRlZDdmM2I2ZmY3N2UxYzY0YjdiODg3YmE3NWVhIHB5M2stYnVmZmVyCis1Njc5MCAyYWIxOGZmYjQwMWNmMWI3YWQwOTQzZjc0ZGE5MTg0OWZlMjZiYThlIHB5M2stc3RydW5pCis1Njc5MSAyYTExM2E4MjY0YjE2MjEwNjk5NGM2OTc0ZWQ1YTRkMzMzMjY2MmU0IHB5M2stc3RydW5pCis1Njc5MiBmMzI0OGMzMjBkZDAzYTFkYzJjNmU3OGZhNjdjMjI4ODVhZDU1YzRiIHB5M2stYnVmZmVyCis1Njc5NyBmZTVhMDYyMWY5MTg4MDZkYmZhMTJlMmJhODg3M2Y2Yjk4ZjFhZmY1IGxlZ2FjeS10cnVuaworNTY3OTggN2QwNzhmYTM0YmJmNjNiZjJhMmJhZTlkNTUwNGM2ZDA4NGI3NzJiOSByZWxlYXNlMjUtbWFpbnQKKzU2Nzk5IGIyMmQ5ZmQ0YTc4NWFkZmFhMzJhNTdmNDllODBlNmYyZTFjN2RhMTggcHkzay1zdHJ1bmkKKzU2ODAwIDZiYTJlNjc1ODBmYzk4YjgwMmQ1MDM0YjlhOTlmZGY5NWQxOGM1MmQgcHkzay1zdHJ1bmkKKzU2ODAxIDM0NWM4MTJmMzM2NjVlZGYzMmVlYzBmYWFiY2FmYzJmZTI4ZTcyNDQgZGVjaW1hbC1icmFuY2gKKzU2ODAyIDI5NzM1ODk5Y2ExNWEwNjk2YTg1OTNhMTJiZmNlMjUzMGQwNDI2YzggcHkzay1zdHJ1bmkKKzU2ODAzIDZmZGQxYWY2M2ZhNmE1ZmZiN2E3NDU0NGJkZTk1MmIxMDJlMWNiMGMgcHkzay1zdHJ1bmkKKzU2ODA0IGU3ZmQzMjdlMGMxOWEyODhmMDk1NWQ3NTc4Y2E3MDg5NThmMzFiN2MgcHkzay1zdHJ1bmkKKzU2ODA1IDQ5ZDRjNGNkZjBjODYyODNjMWJjZWJjNWI3OTZkNzAxNDE5ZjFkMWMgcHkzay1zdHJ1bmkKKzU2ODA2IDlmMTg0OGY1OTZlMGNjNjRkNWM2NDhkNjhkMWEzNDVhZGZkYWNkOTMgcHkzay1zdHJ1bmkKKzU2ODA4IGUxMTUwYWFlMGY2NGQ2ZGI5NjRkYTM5YmEyZTU3ZTg0Mjg0MTQyNmYgcDN5aworNTY4MDkgMTNkYzgzNmQ0YTk5YTg1ZTA3OTI0ODEzZDdiZTBhMGFkZmQ3ZWQxMSBweTNrLXN0cnVuaQorNTY4MTAgYjIwY2MxYzBjZjEwZTQ0NjFlNzY0MWYxM2Y2NmZkMWZhZmE4ZjNiNiBweTNrLXN0cnVuaQorNTY4MTEgNGRlYTNiNjhiMDEzYjBlOGRkMmM4MDcxZDkzOGIzZTk5ZjFlMDkzMCBweTNrLXN0cnVuaQorNTY4MTIgMDRhMTRkZjQwNzNhNGVmOGUwMWZhY2RjZmM4OGYxZGExYzkxYjBhMCBweTNrLXN0cnVuaQorNTY4MTMgYzFlZDQ5MGJkMjY2NzRkY2Q5NDc3NDdiNzgzMTYzYzEwNjBjMWFhYSBweTNrLXN0cnVuaQorNTY4MTQgYjY1ZjZhYzUyOTY4YzY2MzQ3NGU1YmFmOWU4ZDM1MGZlNTc2N2E2MSBweTNrLXN0cnVuaQorNTY4MTUgM2YxZmNkMDgwZWM0YjUwMTBiMDM3OTdhYWY3MzEzOTgwMGQ0YTczOSBweTNrLXN0cnVuaQorNTY4MTYgYzhhMDkxYjg0MmQ2ZWRjZjMwMWI3ZmY3YzNkNWQxYjhiMzg5MmE5NyBweTNrLXN0cnVuaQorNTY4MTggYzk2YjRjMzg2NTJjMzllMjQ4MzMzYmQ2ZmNlMDNiOTMwOGNkOGYzNiBweTNrLXN0cnVuaQorNTY4MTkgNjY4YTVhZGNjODdjZjJjZjk3ZTU4OTBlZjM3NzdhYjhmMmU5NGUyZSBweTNrLXN0cnVuaQorNTY4MjAgYjU2YThkODIyZjIxYjY1YTFlNjU3M2U3ZmM0NDMyMGI4NTdkYjJiZCBweTNrLXN0cnVuaQorNTY4MjQgYThmMTNhNDNlYWExZTUzZGMyZjFkNjZlZDU1MmY5Nzg5ZjA2NGMxOCBweTNrLXN0cnVuaQorNTY4MzAgODZmZDM5YzJjNjc2OGRjZjJhYTkzYWJlMTQyNDAzMzZlYzVjNWY4NSBsZWdhY3ktdHJ1bmsKKzU2ODMxIDg5YzgxZmQ3MDM4ZTYzMTczZjQxNzQxY2FkNmI0OGQxNWU0Y2QwZDcgcmVsZWFzZTI1LW1haW50Cis1NjgzMyAzZjZiZTEyYjk1MzQyM2ZkYmMxNWU2N2YwZWZkMDIzM2U3ZmE4NDQ2IGxlZ2FjeS10cnVuaworNTY4MzQgNTdjZDA3MGFkMzA0MmYxMmVkNDIwMzNhODA3M2UwZmFlNjJlNzlmNiByZWxlYXNlMjUtbWFpbnQKKzU2ODM1IDVmNjBjOWU0MTQ0MDNhZTVhNGY0YTEwMWY4OTUzNDhjMDg1ZTY3YjkgcDN5aworNTY4MzYgZjRlMzY2YzM5MmJlNzA2ZWMzYzkxZjc5MjJlNDY4ZmUyZmNhZmU5NyBweTNrLXN0cnVuaQorNTY4MzcgMTdjZGJlZGJiMTVkNDU0YTNkYTc1ZDdkYTM0MTE0YjZmMTA3YmM1MyBweTNrLXN0cnVuaQorNTY4MzggOTVkM2E2NWNiNzRjNzBmOGJmYTE2YzQxZGJhODMyN2M2MWExYjhlZCBweTNrLXN0cnVuaQorNTY4MzkgOTYwOThhYmM4ZjhmNjc2NmM1Y2VjZjY2ZmE2NzBiMDA0Y2FlMDQyOSBweTNrLXN0cnVuaQorNTY4NDAgYzMyMWMyYjU5OGYxNzQ4MDkwMTdhYTllNTY3MmUxZWY5MDM2NmZlOCBweTNrLXN0cnVuaQorNTY4NDEgZjYwNjlmOWRkNTJkZmE5YzliNmYxMjNiZmY2YmFiNjFlMDQ3OTc3MyBweTNrLXN0cnVuaQorNTY4NDcgOWVkZjMwYmZjMmViZTBhZDgxMzA4YTY3ODEzYWFlZjU5YTdjYzNmNyBwM3lrCis1Njg0OCA5OTE4OTg5YjczM2I1ZWM3ZjU1MTczN2I3OGYzYjM5YjU5MGNiZjM4IHB5M2stc3RydW5pCis1Njg0OSAyM2Q5NjNhNzU2OTYyZWExMGI0MDMxNGI0YTdkY2Q2YTQyZThhYmIyIHB5M2sKKzU2ODUwIDVmYmQxNWM2MWIxMjUwNTE3Y2UxYzY3NzZmZDk5MGI5ZDNiNDQ2YTAgcDN5aworNTY4NTEgM2UxYTE1MTg1ZjhjZjllZWMwOWM2NjRiMzk5YjZmYzg4MjBhNjUwZiBweTNrCis1Njg1MiAyNmNhM2Q2ZjQ3M2FkNmRlNTY3ZjBhMWM3ZTA5NzY4NDIxOWM5ZDZlIHB5M2sKKzU2ODUzIGRiMjU5ZDE0MWU3YWVjMDJmNmFiN2U4YjhiYzc1ZGZjNDgzMmRlM2YgcHkzay1zdHJ1bmkKKzU2ODU0IDRhYWVhMzVkY2NjZjhkMjE0ZWE4Y2Q1MDgzYjNiNTFhOTFlNjJhMTQgcDN5aworNTY4NjAgMGM4OTQwOWJkYTdhYmM2MGYzOWRiZGNjZmEyODQzMDY3ZDEwNjMxMyBweTNrCis1Njg2MiBkZjRjZDkyOTcwOTgxOTQ3YTI5ZjVkMGZiMWIwZGU2NTFlY2FmMDIwIHB5M2sKKzU2ODcxIDQ4NjViNTEwY2Y1NGU4ZGExZGYzYjYzZTZmZTc5MWQ4MTAyZmM4ZmQgcHkzay1zdHJ1bmkKKzU2ODcyIDNkYTBhNGRiMjEwMjRkZTViNjc1MGMzMzIyNWEwNGRlMDNiMGRhNzEgcHkzay1zdHJ1bmkKKzU2ODczIDUyMmEzZTNhMDNhOTZjZTE5YmI4NmE4YzE5ZTRmNjI3MmY2ZWIxNzQgcHkzaworNTY4NzQgMDQzYTEwMmExNzBlZTJlZjNiYTMyZWFlNDVkMGJlNmVlMDYxYTg2MyBweTNrCis1Njg3NSBkY2YyNzM4NWYxMjUxOTAyMDY3OGE4ODdkNWUxOGJjYzRjMTAzMDhmIHB5M2sKKzU2ODc2IDE2NmM3NDA1MzZiNWY3M2FiNDc2ZTQ5OGNjODM1ZTY2ODA2YjA4NTUgbGVnYWN5LXRydW5rCis1Njg3NyA4MmE1YzMwYzE3ODYyMDZhZGM1ZDFkMjQ0YTRhMWQ3NjI0YWM0NmFiIHAzeWtfbm9fYXJnc19vbl9leGMKKzU2ODc4IGJlM2ZlY2QyZDMzOTQyOWMzODUwNDJmOWY4YTVhYTg4MWI5MTdkNzMgcHkzaworNTY4NzkgYTI0ZTI3ZjA1ZTQ4MjljYjg3MjM4ZmQ5NjhiZGE5ZDZlZDI5ZDRiNSBweTNrCis1Njg4MCBjMGRiZjQ1Y2MyMDcyOThmNGMwNzAxODNkZDA1ZDU5OTkxYmU5OWUyIHB5M2sKKzU2ODgyIDA4NzBlOGU5ZTk5ZjU4ZjZhZGVmNjQ2ZjdhYjM4ZGMxZmVlNGYzYTkgcHkzaworNTY4ODMgZjBjZmVkMzhiOWQ5ZTFmNTQ4NWQ2MDYzMDE4MjhmMTZlMmI3NmI0YyBweTNrCis1Njg4NSAwZTVhZWJhM2M2N2RiMmE1YzQ4NmIzOGJmNzI3MDRhZTBmYjE4OWI5IHB5M2sKKzU2ODg2IDUwN2Y1NjcxZTM4ODYyOGY1ZGU4MTYzNDAzNzVmNzllZDI3N2QyOTIgbGVnYWN5LXRydW5rCis1Njg5MCAwYWIzNDIxYTA5MDY3N2M5MDliOWQ3ZjQ4ZjIzNWJjMWQ1M2M3YzdiIHB5M2sKKzU2ODkyIDlkNGUyMjAyMjRmYjVkZDdmYzUyNzMwYzUyYTM1NGVlODYwMWUwMDEgcHkzaworNTY4OTMgY2MyNWQxNjBmMGY3ZWUxMGIwYTM3MmMwY2JkOTA2ODk1NzcyNGUyMSBweTNrLWJ1ZmZlcgorNTY4OTQgZWViMzdjOTc5M2VhNTM0MzY4ZDA0OTk4MjE5N2E0N2NlZTI0MmNmMCBweTNrCis1Njg5NiBmMzcwMTZkNDI3MjlmYmVmOTg1N2VkYzkyOTc3MWRmODIwMmRlN2IzIHB5M2sKKzU2ODk5IDc3MDMxODdjN2M2ZjExN2NjOWIwMTVlZTg5NzRmZmZlY2MyMThjNzMgZGVjaW1hbC1icmFuY2gKKzU2OTAwIDkzMDczNmVlOTNkOTQ5MGE5M2QyOGZhMWNiMzYyZGM3MjZhYjYxODEgcmVsZWFzZTI1LW1haW50Cis1NjkwMSAzNDZkMGI4NDAzMGI5ZGY5NThmYWY4NTQxYWZjZDUzOTJlY2JkZjc0IHB5M2sKKzU2OTAyIGU2NDI4NjA1M2IyNTIyODUxNWZmODgzY2IwNTRjOTlmOTE3NmUwOWYgcHkzaworNTY5MDMgZDk1YjE1YTU1ZjJjMDYzMGUwY2U1NjA2MDI5NGY1NTI3NzVjOWVlNCBweTNrCis1NjkwNCAzZWMyMGM0YzFhNGZiYzUxMzM2OTJlZjA2ZjYyMTQ1ZmFkYTdjMWJkIHB5M2sKKzU2OTA1IGFmZmIxZTg3ODgxYTVmMWFmNjNmMmZjMzM5MTc3NWRiYzgwZmY0ZjUgcHkzaworNTY5MDYgODFiZDNlOTRjZjBjMzFkODM0MmI2NmEwYzJiMmZiMDNjNjFjMmFhYiBweTNrCis1NjkwNyAzODU4ZDBiOGIwZWY3NmZiZDBkYWJlMTUzNmQ0MTBhZDlmYmRhZTNiIHB5M2sKKzU2OTA4IDNhMTU3MmQxZmYxYWQ1NGZlY2RhZWEwNmNiMTVlOGM4ODRkMzAwODcgcHkzaworNTY5MTAgZjgyOGYzNTAxNGFlMzliYWU1MDg0ZDkxODFmZTlmNjA3YWY4Nzg0OSBweTNrCis1NjkxMSA2YTA5NDIzMTY0ZmU2MjRmNTY3Y2ExNGIxMDJhNzU1NDE1MjI3NzBkIHB5M2sKKzU2OTEyIDVmOWU3OWQxZTE1ODRiNTlmZTgxZWU5YzkxZjc2Mjc0MDk2NTAwZGUgcHkzaworNTY5MTMgOGQ2ODY3Y2I4YThkYjcxODk1MThlZDA1YzViODI1ZmQ3MzBmNzA0NCBweTNrCis1NjkxNCA2Y2RkY2U0MDk2YTIyN2UyMGNhOTUxNDA0ODNkNDhkYmM3MDNlM2JjIHB5M2sKKzU2OTE1IDc0YTNjNjgyNjY4M2U0Zjc0OWEyMThlMzc2Mjc3OWRjMzMzNDYyZTYgcHkzaworNTY5MTYgOWMzZTY0NDBmNTRjMzIzYzY4MTUyMTZlNGNiMTU5MjIwMzhkZDc4MiBweTNrCis1NjkyMiA0M2UzMmIyYjQwMDQ4MWNhMzdiODYzOGMzYWM2Y2M2Y2I3YWU5MWMxIHB5M2sKKzU2OTIzIDY4ZmY5MDk4YjJkYzgzNmQ1YjBkMGI0YmQ2MjMxMTkxNzU0N2Q2OTYgZGVjaW1hbC1icmFuY2gKKzU2OTI0IGFhYjY4NzkzNmVjZDgyNzRiZTQ4ODAyODkzZmMwZDlhYmYwYTdmYjQgcHkzaworNTY5MjUgMGM5YWQwYjJmYWM1NGFiOTBhMjdmYjM0M2IyY2ViYzAyZDk5ODI2NSBkZWNpbWFsLWJyYW5jaAorNTY5MjYgZDE4NTVkMGU0ZTAzYzM5Mzc2MTA3NjcyODk0MWZjYjBiYzA4YmM0YiBweTNrCis1NjkyNyBjZmFkZDdjYzljNDU3N2E1NmM5MWI3ZDUyNGFlZTA4NzI1N2M5MzY5IHB5M2sKKzU2OTI4IGE0NGM1NjQwMjZiODMxNDg2MDU1ZmIxNGViYzhjN2Q0NTVmMzEyNjQgcHkzaworNTY5MjkgMDc3YzY4MTg2ZTIzNzdkNDVhYTI3YjJhNmI1YTZiODYwYTk4ZDUzMSBweTNrCis1NjkzMCBjZjkxMzc3ZTI0NDRlNDE0YTVhZTQyMjdiZTZlN2IyNTNmM2FiZjE1IGRlY2ltYWwtYnJhbmNoCis1NjkzMSA0MjFmOWYzNThlNGZiYjRiOTU3ODM2YTY0MWE1ZWI5NDcxMDgyZDg2IGRlY2ltYWwtYnJhbmNoCis1NjkzMiAwYzBlMzU1Y2Y3NDA3Y2QzZWM0NjUyZjdhMDM5ZGM5MWExYmJiOGI5IHB5M2sKKzU2OTMzIDg0NDdlY2QxYmY0NTgxYjg5YTUzZmY3ZjlmNDc1NTE2YWI2ZDdmZjkgcHkzaworNTY5MzQgYThjNzQyNDI1MzU2MmNkNGY0YzMxOGQ0MTFmNmUxZjE5ODcwNGQyOSBweTNrCis1NjkzNSBlMGY2MjI4NmE5YTQ1NGJkM2Y5M2VmYmFlNzIwZTg2OTYxYTYzMTgyIHB5M2sKKzU2OTM2IDY1ZjFkNDE5ZjYzMTA5ZmU3NzFlYjhhZGI3Yzg0Zjg2ODYyZjBjNTkgcHkzaworNTY5MzcgMjc2MzMwZjQyZTc5MzZiNDZmMGFhYzRkZmY3YWMxZmM0OWM4MDU4NiBweTNrCis1NjkzOCBiNjYyNWQyYjM3OGFmMTJkZjMyNThiZjE5ODk2MWU4ZTdmZWY5OTIyIHB5M2sKKzU2OTQwIGFjMTkyZjg5YzEwOTNjYTIwMWIyMWYxMzJkNWE2Y2YzN2Q0MDU3MDQgcHkzaworNTY5NDMgYzY5ZDEyMjY0M2Q1MGQzZDNiNTRiMWY0OWE5ZDRjY2IxMDFmMTA3OCBweTNrCis1Njk0NCA3YWJhY2M5ZTM5OTU4ZjA4NTQzYmY2M2UwZmM0ZmYxYTVmYWI4Yzk5IHB5M2sKKzU2OTQ1IDNlNjgyYWU5ZDI5OGVmMTE4YTU5MmZlYzU3NzBhNjFjYzk3YzRlYmIgcHkzaworNTY5NDYgYjdiM2Y0ZTMyNTMzZWIzZmYwMjY2YTk0NTVhM2NlYWVmMGJhMjgzMiBweTNrCis1Njk0NyBmZWU1YzZiYmUxNDRkYWI4MzRlYWVmNDliNDY3YjFkNzNkZDRmM2RkIHB5M2stYnVmZmVyCis1Njk0OCA0YjQ5OTVjOGUzZmQ2NzZlMWFhYzU5ODczMmMwYTZlZDExYjljYjdkIHB5M2stYnVmZmVyCis1Njk1MCBjM2IzNGIwZjgyMTZhZTM5ZTMxNjBmMjI3ZmMxZDFmYTk2NDVjZTJiIHB5M2sKKzU2OTUxIDM0NmFmYTY1OGU0NDYwMzg1MDY1MzlmYWIwODNjNWEyZTY4YjcxZDMgcHkzaworNTY5NTIgZTc4MTA4NWFjOTg5ZTRjMGMxYTNmMjU0ZmVlMmNjOWQxMTQ0M2ZkOSBweTNrCis1Njk1NCA3Zjk0OWMxN2NjMzY3YmJjYjM0YzU1MjVmNzQwOTA5YmVkNGZlYzhkIHB5M2stYnVmZmVyCis1Njk1NSAwZmNjMThhYmEzODVkZTRjOTYwMWRiODNkOGYwZjA3YmJhZjBhZjA4IHB5M2sKKzU2OTU3IGQwMjBiOWIxZDk4YjZhZDU3YTk2MDk2YTYwZWY2Nzc2ZTFjN2M2ZDcgcHkzaworNTY5NTggYWU5Y2Y0OGVkNmY3MjhmZDdiMDMyNTdhMWYxODQ4MjgwY2FmOGU0ZiBweTNrCis1Njk1OSAwZDk5NTNkN2I4Mjc1N2NmYzQ5MzJjOWVjMTc2YWJhNWMxMmZlNTQ3IHB5M2sKKzU2OTYwIDE1MDE5ZWFlMzllODI3ZjQxNDBhM2EyZWVhM2UwM2Q1YzllZjkyYzkgbGVnYWN5LXRydW5rCis1Njk2MSAxMzgxMDQ2ZmU4OTQ1YmQ3YzM1ODAzZjQ0MzM1NWMyYWU5N2FmNzEwIHB5M2sKKzU2OTYyIGI5MGMyMjA0MTYzNTFhNWU2YzU4MzJlYTcwYzA0MWM2YmM5OGI5NjEgcHkzaworNTY5NzEgZWIyYzA2NzZjNzNmMWIxNmRmMmE3ODc1YzU4YzE4MjNlMDFhNTBkYSBweTNrCis1Njk3MyBkNGVlNTRhODg0ODUwYmNlNmM4NjJjZmUyMzUyNmU5NjY5MzkxZmQ2IHB5M2sKKzU2OTc0IDUzYjczYzI3MTFiNmM2ODJhNGUxMmE5NTY0MjY4YTlhZTM1NjI5ODAgcHkzaworNTY5NzUgNTQyNjE2MzRhZDQ2ZDVlOTZmMDI4ZDIzOTg0M2VmOTRjYmU3NzQ4OSBweTNrCis1Njk3NiA3YTQ1ZThiNzhkNjNmZjQ0ZWU5ZDAxYWNjZDliOTAwMTViNTFmOWYyIHB5M2sKKzU2OTc4IGE3MjQyNzlmYzkzMWE1ZjFhMGZlZTYwMTVjYTU2ZDAwNjFmNTQ5N2IgcHkzaworNTY5ODIgZmIwNjllYWZhZjg5ZjUzMWIyY2ExZjY5ZWUxZTE3YmYxOTc0YWJlMCBweTNrCis1Njk4MyA0YmNlOTRkOWVjMzFlNDUzOGMzMDZmZmU0YzE3ODljZTJkOWJmNWViIHB5M2sKKzU2OTg0IDZhZjZiYjQ4MjRkNWJlNjFjMGNmMDdjZmY3NzAxMmQyN2JjYmFjY2UgcHkzaworNTY5ODUgNDdhYWYzZjRhMDM4Y2U5NGFiODRmYjcyOWRiNDdlODI0N2Y2ZTI1NSBweTNrCis1Njk4NiAwZWQzZDE4MjkyMGI4ZjhkNjRiZGYzNDhhMmI3MjczMGEzMzNmNGIyIHB5M2sKKzU2OTg3IGNmOWIzYjQ4N2ZkYTFmNjViZDQwYTQ2MzFiYzkxNWNlNWU2YjJkYjAgcHkzaworNTY5ODggMzc3YjQ4MzgxYTQ5YzAzMzRjYTJhNTcwNDFhYzQyOWQyNmNiOTQyZSBweTNrCis1Njk4OSA1YWViMjYxZGUwYmRhY2M4ZjdiOWVhNmQ0NWY1ZWEzNzVhNTZmZmViIHB5M2sKKzU2OTkwIDFlNDkzNjk2NDc3NmY1N2ZmNjA5MjFkZWJjZGFmZjcwN2JjNWQ3NDcgYWxleC1weTNrCis1Njk5MSBiYmNlZjZkZTQ2NzQwNTZkYjZhZWNjMjU1YmM2ZDZkNWNiYzIwZjU2IGFsZXgtcHkzaworNTY5OTUgZDY4YTcxYzk2NWVjMTUwNWI3MWY1ZTEzNWNiOWU4MGEyNjUyZGVkMiBweTNrLWJ1ZmZlcgorNTY5OTkgYmZlMjAyYmZmZGY0MmZiNDQ0ZmUwNDNmZDNjMGRmMTY3N2U5NmFkNyBsZWdhY3ktdHJ1bmsKKzU3MDAwIGJkYzQwMjkzZDc1ZWZiOGViMGYxZmUzNDk3MGI4ZTZjMzQ0NTIwN2UgbGVnYWN5LXRydW5rCis1NzAwNCA5Y2NmOWQ2N2JiMzQ4Yzk1YzAxZDBlNTc3OTJiYzE3OTFjZDIzZWE4IHB5M2stYnVmZmVyCis1NzAwNSBkMzM3MWZkNDkxMDI0NWVjMmE4YTQ3OGNhMDllZmJkMWMyODI5ZmM4IGxlZ2FjeS10cnVuaworNTcwMDYgMjI5ZDYzNDVhNzNhMTEyNDUzMDc3N2RmZTI2Zjg5N2NmM2FlMGQxMSBweTNrLWJ1ZmZlcgorNTcwMDcgNjc5MzdmZWU3NWFmNmEyNzA4ODFhNmQzZTEzNGFlN2IxODkxY2FlNiBsZWdhY3ktdHJ1bmsKKzU3MDA5IGI2MjM3NzdmMjJiMGRhNDAzYzE3Yjk5ZWE5YWJmZmM5MGViMmUxZTMgcHkzaworNTcwMTAgM2MxYTIwMzY1YTA1YmMxYTA0YjFiZGRjYWNiMzU3YjBiNzUwYTlkNyBweTNrCis1NzAxNyAyMTlmZTM5ZWRlOTlmN2U0MjMxOGQ0ZmI2OTgzZTg2NWZmYmViYmU2IGxlZ2FjeS10cnVuaworNTcwMTkgMjc0ZjNhZTRkY2M3ODAzNDA3NTg1YzM2NjI4Y2E1ZjJjZGRhMGFiNyBhbGV4LXB5M2sKKzU3MDIwIGI3YmQ0YTI2ODljMTZjZTVkMTEzYzYyYjYyZGIwYTI5ZDhiYTY3ODYgcHkzaworNTcwMjEgODZmYWYyMTEzZDM2ZjU4ZGE3YjIwNWNiYTA2MTk5MTllYTdkZTI0YSBkZWNpbWFsLWJyYW5jaAorNTcwMjQgYTUyOGY3ZjhmOTdhMjljMDRmMmRkM2NlOWQxNmU0Zjg5NDhjMmE3YSBweTNrCis1NzAyNSAxYjkxZmFhMGRlMmQxZTM2ZThlMWRhYmRlODI5N2FhOTNhNzRjYzNmIHB5M2sKKzU3MDI2IDliMDIxMjg1MjFlMjcwNGFlZWQwYjNiNjc0YjFjZmZlYzNlMmRhYWYgcHkzaworNTcwMjcgMzBjMGQ1OWRiMGM2NDg1MjdmY2RmYzg5OGQ3MzdhMzY2Y2M2ZGYxNiBsZWdhY3ktdHJ1bmsKKzU3MDI4IDUzOTFiNWY4Y2Q3YTBlMzZhZjVhODZhZmI4OTQ1ZmZiZTMxOTQ4ZGMgcHkzaworNTcwMzIgMTNiMjNhZGRlZjQxZDgyMDYxOTYzNzE3NTg1MmEzMjM2YzRhYzExNyBkZWNpbWFsLWJyYW5jaAorNTcwMzggM2JlZWYxNmQ4MTY3MTNjMWQ3OTMzZjI5YWNkZTliNGNjNmI0ODMxOSBkZWNpbWFsLWJyYW5jaAorNTcwMzkgN2M2NmYxMTE5ZTU1NGUwMjA5Mzc2NGQ3ZjRiNjMxYzI2OTllN2FlNCBkZWNpbWFsLWJyYW5jaAorNTcwNDAgNGViZWE2YWZkYzg3MTEwMjhjNjFjYzkxMTkxOTAzOTc3ZjMxZWJkYyBhbGV4LXB5M2sKKzU3MDQxIGVkOTg5ZGQ5OTVkMjQ0MjEyYmM2NDY1ZDgyNmRiODllNDkwOTI4NGYgYWxleC1weTNrCis1NzA0MiBhYzVjZTdjNDNlZTc1OWRlNDk1NjcwODE2ZjFiYmE3ZWEwYzQ1MjdlIHB5M2sKKzU3MDQzIGY2YWYwYjI1OThjYTEyYzFkYzUzNGY2MzhhZmVlNjBkNDMwYTZlYTkgcHkzaworNTcwNDUgOTgwMzA4ZmJkYTI5ZjljODkwNjQ2YjEzOWIyMzQ0YThhYTA5MjY5NSBweTNrCis1NzA0OSAyMDQ3N2NiZmQ5OTY3ODA4NTRhOTZkMDcwZWMzYjU2MjM4NmJjYTBiIHB5M2sKKzU3MDU0IGY2OGI2YmY0NjM2NjFlMmJkZTIyZGFjMGFlMDU1ZTk2MTZjYjNjYTcgcHkzaworNTcwNTYgZjgyOGE5NWE5ZGE2YmE5MDhjOWJhMGMyNjYzZGQyMmEzYmE4ZDRjOSBkZWNpbWFsLWJyYW5jaAorNTcwNjAgNDYyMDY2MWUwNmFmYWY0NTE5Mzg1ODYwM2M0YzFhZWY4MDZjYjYxYSBsZWdhY3ktdHJ1bmsKKzU3MDYxIDE3YmU4ZmJlYzE1OGM0NWIzNzIwZTUxMTE0ZTczZjI1MGU5ZWRkMzAgcHkzaworNTcwNjMgMjQ0OTcwMTljNDA3MzU2NGQ2NDlhZTFiMmJkZmNmZDU3M2ExYjMxNCBsZWdhY3ktdHJ1bmsKKzU3MDY0IDcxN2ZmYjE2YjVkMTI1NGYyNzkzZTM1YzY0YWNkZjA5OTk0MjQwMzQgcHkzaworNTcwNjUgYzYyZjY2NjlhZTIyYjg3Nzk1YmEzNjQ5NDc1MTYzMTQwMWFhNWFmYyBsZWdhY3ktdHJ1bmsKKzU3MDY2IDllMTUyOWJmMDQ0MjI4YjdmN2I4YTE2YzUzN2RiOTE3ODU2NDgwZWQgcHkzaworNTcwNjcgNzI2MWE5MWJlMDAzNjgzMDgzNWY3ZTRhY2MyYTk3NmE4ZTkyMzdlZiBkZWNpbWFsLWJyYW5jaAorNTcwNjggYjFhYmY4NDZjZTgxNTJjMzgwMzAzMTI2OWE2ZGE1YTVjYTdmNGUyNSBsZWdhY3ktdHJ1bmsKKzU3MDY5IGEzZTc2NDMxNzA1YjI2M2M4NjY0YjE1MWJlYzA1MzcwMTg0MjI3ZGMgbGVnYWN5LXRydW5rCis1NzA3MCBlYWI3NWFlMzIxMmJkYjJkNGNiZjg4ZWZiZWJmOThlNDNjOTU0ODU5IGxlZ2FjeS10cnVuaworNTcwNzEgM2NjMmNjNzk1NzY1ZmE5ODRjYWRkODNmNzQzZDdlYWI0ZDBiNmY5YyBsZWdhY3ktdHJ1bmsKKzU3MDczIGQzMzYyYzQ5NTI5NjBiNGMyM2YwZWVjNjUyYjMyYWJmODllYmU3MTAgbGVnYWN5LXRydW5rCis1NzA3NCA3OTI2YThjYTkyOTA0MmVhNzkxNzhhNzc4NjI3OGE2Y2U4MTE5ZDM1IGxlZ2FjeS10cnVuaworNTcwNzYgMTIxMjEzYmJmMzU4Zjg2YTkxZGRkMTdhOWM5YjdiZWVhMWVhNzFkZCBsZWdhY3ktdHJ1bmsKKzU3MDgyIDRhNDg3MTkxZmM1NGMwYTE3MDllZTBkYzcyMjg5NGQ3YjQ3NmVmODcgcHkzay1idWZmZXIKKzU3MDgzIDY2YTU4YzFjMjgzYjNlNTllNzY1ZTk4YWU5YzdhOTgwNzM1MjQyNTEgbGVnYWN5LXRydW5rCis1NzA4NCBiYmI0ZjQ2NjNjZDMyMTJjOGQxMDBjMWFkYWJhYjQ4MWI2OWIzMWYyIHB5M2sKKzU3MDg1IDdhNTYyYTAwOTczZWQ0ZDM1MjhkODI3NGUxYWU5YjU3YTYxNjRhNjkgbGVnYWN5LXRydW5rCis1NzA4NiBjZWQyN2I4ZjA4OWJhNWIwNzYzZDkzNmIwNTEzOTNhOGFlMWY1NzZhIHB5M2sKKzU3MDg3IGNiOGMxZGQ3ZWUzMmIwMjdhNmVjMzdjOTg4NTIxZWQ4MWI3OGNhNWEgcHkzaworNTcwOTIgNjAzZGM1M2M0NzE2MjBlOTU5YTg5NmJhZDdjYzczM2YwZTA2OGE4NiBsZWdhY3ktdHJ1bmsKKzU3MDkzIDEzNWIzY2Q1ZTcyMzJlZWZmMjE5MWZlMGU0NWVhNTA3Nzk4NzNhOWUgcmVsZWFzZTI0LW1haW50Cis1NzA5NCBkMjY0MTA3YzdkYTZmNmExYmQ2MzQ1Yzk0ZjA1NWZkMTViZTRiNDg0IHJlbGVhc2UyNC1tYWludAorNTcwOTUgYTE3NjhiYmQ3NjgxOWVkYjQ5ODdlMTk4ZDY2OTUwYzRhYzE2Nzk1MCByZWxlYXNlMjUtbWFpbnQKKzU3MDk2IGQ5N2ZkNDQ3NzdiMmMxMmM4OGZlNjBjNTk4MTMyZWRlYWRlOTZjNTggbGVnYWN5LXRydW5rCis1NzA5NyA0ZDJhYTRiZmIyZDYwMTRiZTYxYTI0M2U2ODZlMjZjZDQ1ZTg2ZGUzIHB5M2sKKzU3MDk4IGFmMTgwZDU0NmVjMjIwMjhlM2UxNGYzMWE2MjIzZjIxYjIwMjg0ZWEgcHkzaworNTcwOTkgOGRiYzk4MWYwNDBiOGM0ZDZmNTc1ODA4OGM2YzU2YjgzNzFkM2Q4MiBweTNrCis1NzEwMCAxMjRiZDI4MjQ5M2Q1NTZkMzNhYWE1YzkxZjhkNTQwNjA5NTcxNDMwIGFsZXgtcHkzaworNTcxMDEgZDNhODlkOWQyZjVlMDZhZjE3YzVkOTA5NGE5OTc5ZGRmN2M5YjYyYyBhbGV4LXB5M2sKKzU3MTAyIDQ1MTgzZDBiMjBhNzk3ZDgxZmEzZDRhMmYyYzliOTE0NTU4NDFiY2IgcHkzaworNTcxMDQgODlhM2NiYTFjZDUyNDIzMDdmNDYzZDBmZGU3MjRiMjFlZDYzOWFmMyBhbGV4LXB5M2sKKzU3MTA1IGYxYTJkNTFmMWNhYjI4NGYxNjc4ZmZjNzUyYzBmNGY3NTFlMTNhMzcgcHkzaworNTcxMDYgMTgxMDRkYmE4NWUzMzczZTgxNDBiY2Q3MjAyNGZiOTVhZGI1MTdlYiBhbGV4LXB5M2sKKzU3MTA5IGVjYjdiMmRkM2FmNTgwM2U4YzBjMzM4MTAwZTgxMzJhOTk0MDI5NGYgYWxleC1weTNrCis1NzExMCAzNDEyNDYxM2JjNGRkYWJmYTcxMTIwOWFkYmIzZjJmMzUwNmI2M2I4IGFsZXgtcHkzaworNTcxMTEgNDZmNDgwZTExNjZjODRhN2JmZWUzYjEzZjkzY2RhMjY5ZDlmYjM3YSBweTNrCis1NzExMiAwZGViZjk0NTVjZGMxNzc1ODQ4ZDc4OTA0NzI5YTJlZDMzOTIxZDQ5IHB5M2sKKzU3MTEzIGE2YzQ4OTI1ZGU1M2IwODYwZGFmODc4YjUzYjQwMTIxN2FlMDY0OGEgcHkzaworNTcxMTQgMjBhZWM5ZjM0NTk4ZDM1MzkxMWQ1ZDY1YzdmNzZiNDdhOTE5NTVlMSBweTNrCis1NzExNSBhMjg1OWFlODlkYTkxYTFiZWI4YWM3N2E2MDZiM2VhNTBjZTIzYzdmIHB5M2sKKzU3MTE2IDQ4YTMxYjBiZjUwMThiMzYwZjFjOGY5MTI1NzVkYzhjYTg5MDA1MjcgcHkzaworNTcxMjAgYjdhNWJjNjlkMmVlNWJiOTQzNzFmOWZmNmY0ODVlOGQzODZjYWZkZiBweTNrCis1NzEyMyA3YjM5MWE0ZWY4OWNlMmQxM2MyOWQxMjEyOTZlNTMxOTlhODVmMjhmIGxlZ2FjeS10cnVuaworNTcxMjQgMTJkZDYzNzdmZjg1YmVkNzlhZjFhYTM3NDc1NDcxZjM2ZmQzYWQ3MCBsZWdhY3ktdHJ1bmsKKzU3MTI1IDI4MWI1MThlNGJjYzI4Y2E0M2U3ZWQ2NGYwOGI4NTUxZTQyOTZjOWUgcHkzaworNTcxMjYgZmY1YWRiMzM3NGFkY2RlY2M1NTc1MTkxNjY4YzI4ODgxNmM3ZmNkYyBweTNrCis1NzEyNyAyMDU2ZDgzNTNhNjg5YjUxNGZhYzAyMWE0NTk4NjQ1ZTgzNWZhNTEwIGxlZ2FjeS10cnVuaworNTcxMjggMjYwNmFlYWE4NmQ0MDY1ZDRiNWVjZDg2N2MzZGQwZjJiYThkMjAyNiBweTNrCis1NzEyOSBmY2Y2ZGM1MWFmNTQzMWY0MjQwNWViMWMwMDMzNzJkNWU5NDA5YWYzIHB5M2sKKzU3MTMxIDRjNWVjYzJjY2FiZGQ1MmM1ZWYzOWY0N2YzNDA4MmJmOTBlODNlYmIgbGVnYWN5LXRydW5rCis1NzEzMiA5ZmMyMWM4YmFiYjk2Yzc2M2RkOTE0Y2UwYmQ5YjJiY2RkYWU3YzM4IHB5M2sKKzU3MTMzIDZmNDkyMjgwMzQxMTY2YTJhNDdhY2IzMDMyNDBmYTdjMDMyMzNlYWQgbGVnYWN5LXRydW5rCis1NzEzNiA4NjEwYTFjYTY1MGIzNDJhZWY4MDFhNDMxOThlNjBkNWMwY2JhYjA2IGxlZ2FjeS10cnVuaworNTcxNDIgYTVlOTg0ZWRhNDVhMjBjZTcwMDM4OGE1MzI3NTMyZjY3MmY4NjgzNiBweTNrCis1NzE0MyBlMzk0NDkwOTVjYzVhYjZhZjYxNmFlMDkxZGFhZDI3NDhlYmJkYmQzIHB5M2sKKzU3MTQ0IGNjN2I1YmMyOTdjNGVkNTJhNzUyMGNlNzk0NGJjNDlkMjQ0MGI3NmUgcHkzaworNTcxNDUgYThjYTE0Y2VjMTFjZDY4YzYwMTBkMjRiYjZmMDRmYmMzMTI0NWY0ZSBweTNrCis1NzE0NiBjOTE2NzMxMzIxYzBiMDFlODM5OWJkOTYzMmIzNWM2NjBmMGY0MmY3IGxlZ2FjeS10cnVuaworNTcxNDcgZjJmMGU5NWE3OTdiYzc3ZmUyYjAzOTZjZjZhNzQyOTk2NjY1Yzc1ZiBsZWdhY3ktdHJ1bmsKKzU3MTQ4IDU2ZDhjODcxZGM4NmIzOWRiZGVlZWM5NTJmOTY4NWUwNjEzZTM0MmUgbGVnYWN5LXRydW5rCis1NzE1MCA5YzRmNWIxZDZiOWRiNWZhZGQyOGYxZTcxNmU5NGU1NmEwNTNiMGYzIGxlZ2FjeS10cnVuaworNTcxNTEgOTg2Nzc2NDU2NzkxMzY1ZTA3YjMyNWZjYjI4ZWFjNWI4MDZhZGE0ZSBweTNrCis1NzE1MiA3NDQ0NjUwOWYwZjI3NmYwMmE2NWMwMDE4NmRlZjBhODQzZTJkMWU2IHB5M2sKKzU3MTUzIDkyNTE1YjY0OWI5MjI3ZTE0NDc2Mjc2NWQ2NzA1OTQ5OWZmMThlNDUgcHkzaworNTcxNTQgMWI0Yzk1OTc0YTdkYTcyZGY4NzljN2RhMzI1ODY1MWRlZDlkNGZjOSBweTNrLWJ1ZmZlcgorNTcxNTUgMTcyMWZmNWUyODY0ZDVjMDdiMjExM2ExYmM1ODc4ODJiZTVjNWQ3ZCBsZWdhY3ktdHJ1bmsKKzU3MTU2IDY4NzZhZTkxN2ZiMWJhYzcxYmMyOTYwMWI2ZWI4MGI0Njg1MDJlOTggbGVnYWN5LXRydW5rCis1NzE1NyBhZDA2MzI3ZTFmMzlhNzNjY2RjOTM5YmUwMDg5YWZhYmFkZTcyYTAzIHB5M2stYnVmZmVyCis1NzE1OCBiYzMxZGZjZjdkZmEwZDQxNGM0ZDVhNGZkZDc1MGZiYmYyMjA0M2RlIGxlZ2FjeS10cnVuaworNTcxNTkgMzdkNzA4NTRkMjU1MmNlN2ZhOTU1MTEyOGIwYWNlMzZhOWE1OGUxYyBweTNrLWJ1ZmZlcgorNTcxNjAgMzhkZmVkZjFkMmFhOGE1NmJmMjdlODlhZTM2MWRkN2IwODRkMjY1NiBsZWdhY3ktdHJ1bmsKKzU3MTYxIGI4MDU0MTI1MWUwZWQxZWZlMzkyYmI4YmYyY2RkOTYyMzNlYTIzYjMgYWxleC1weTNrCis1NzE2MiBkODg1OTJkZDNhNjEwOTJhYzUxZTU4NDNkMGMyYzE0MWMwODA0ZTY0IGFsZXgtcHkzaworNTcxNjMgYzU5Zjk5NDI2ODJiYjFkY2VjZTcyOWMxMzZlMzRjOWNmM2EyZTQyYiBhbGV4LXB5M2sKKzU3MTY1IGRmZmJmZTYwNzc3NGYwNzNmZmM4OWM3ZTg2Y2NjNzYzMzZhMTUwZTggcHkzaworNTcxNjkgZTBjYzgzM2ZkZDNlYmRlOTcyNDBiZTQyMDI2ZjA0NjEwOGY4OGNjNiBweTNrCis1NzE3MCBhNTRkODY2ZGM3YjRlZmQyZWI3YTc3OTA4ZDRjYzhmNmFlMzEwODEzIHB5M2sKKzU3MTcxIGFmMTJhNDZkZjczN2FkMTZhNmJjOTM0YWNlMTkxYjZlM2FhY2I5ZDUgcHkzaworNTcxNzUgYTkzMWM2MDE1YjkxN2E3ZmM2N2IwM2UyNDMyYjA4NzQyYTU1MGJmOSBsZWdhY3ktdHJ1bmsKKzU3MTc4IDY5NzUwYjA5OGVhMjQ3ZWQ5Mzc2NDZiNzNhN2UyYmZlNzFlZDcxOWMgcHkzay1idWZmZXIKKzU3MTc5IDA2OTUwYmQwNGU2OTY5MmMyOGQ0ZjMxOTM2MjMzNjE3ZjRkNDM0OTIgcHkzay1idWZmZXIKKzU3MTgwIGFkNDc4OGRmNTA0ZTA5NjQxZTM5NTYzMWI4MmE1ZWE4OThlZDUyYTAgcHkzay1idWZmZXIKKzU3MTgxIDg1YzIyYjRkNDQ1NTliM2M1ZjQyNjk4NzRlY2E2ZDczYzc1YjhjNTYgcHkzaworNTcxODIgYjNjYTdmNWI1MzdjNWQ3MmJmYTBmOWZjZjYzMWNkOTMxMzVkNjk3NCBsZWdhY3ktdHJ1bmsKKzU3MTg2IDgxYjQ1YzBkYTJjOGI4YTY1YjMxM2YyMTI3MWUzZjI1NDYwZDI3MjkgcHkzaworNTcxODcgNzZlMDQ5NzNiMTVkZmQwY2Y4MjA2YWZkZmE4YzEwMDNiMzEyYWE0OCBweTNrCis1NzE4OSBlZDk3YTlkMWMzNDczNDQxMmEyNDRkMjc0YzljMDVhNzU3ZGE3OGQ1IGFsZXgtcHkzaworNTcxOTAgMGJjOWNmMWNmOTU5MTg5ODI5NWRiZDZhMGQ1MmQ3ZDNjNWZjZDYxZiBhbGV4LXB5M2sKKzU3MTkxIDhkY2U2ZTI4NzBlODA5M2U1NjNmYmY1MTBjODdiYTViOGMxMDg5YTUgYWxleC1weTNrCis1NzE5MiBmNzhiZjU4NDI3OWU2ZGQ3Mzc3MmM1NDQ3ZGRmZWM2MzU2MzYzOTY5IGFsZXgtcHkzaworNTcxOTMgMmM1MWJlOTkwNGRlMWNjZTQ2ODJiNzAyZTllNWIzODBmNDU0MTNmNSBweTNrCis1NzE5NCA3ZTVlZmY4N2Q2NjRhMDA5Zjk4M2UwYWZmZjU4OTU3ZDQxOTkzYzY3IHB5M2sKKzU3MTk4IGZjYTM1NDE2MDQ1ODUxOGRjOTc4MjJiNjU3YmViOGYwZjMxYWViMTcgcHkzaworNTcxOTkgNmI1MzBlMDI5YjNjM2Q4M2ZiNzVmYWFkZDdmNzBjMTA0ZGQyMTU2YSBsZWdhY3ktdHJ1bmsKKzU3MjAwIDk1YjM3Y2FlNDdjNGY3ZWMxNjYzMzk4YjRjNTI3ZDIyM2E5YTY5NTQgYWxleC1weTNrCis1NzIwMSA3MzlkMzEwNTA5N2ZlMDIyZWIzNGE2MTQ5MzE5NmQwZDI5NTczZTRhIGFsZXgtcHkzaworNTcyMDIgNjkyZjU3YTVkYzc2YTE5YTNmOTZiYjE4N2UzOTRjZGI4YjZmZTFkOCBweTNrCis1NzIwMyBkMDNlYjc3NDU3NmEzZTZlNDkxOTJmMzhhMzlmNjkwYmFhZjk3Yzk3IGFsZXgtcHkzaworNTcyMTEgNzA1NDYxNWYzN2ZlNjAzYTY2YzRmNmYwMDgyZDM0N2RmZmVkNmI0ZSBsZWdhY3ktdHJ1bmsKKzU3MjEyIGNkNDU5MWI3NTRlMDExZDM2YThhMjU5YjdhYWVlY2Q4ZjNmY2M5M2UgcHkzaworNTcyMTQgNTg1ZDhiZWNlODI2N2QwNTk5ODZmY2Y3YjBhYmIyNWQyM2VmZWQzZiBweTNrCis1NzIxNSA5YTJmMzc5NDFiMmIwNWNiNTQxMDFhNWZjMDc5MmQ3MWE1ZDgyNTVjIGFsZXgtcHkzaworNTcyMTYgMGY1MGUwOTFhMzZmZWM2YjdmNTY0ZGUyMDMxNGM0MDlkNmQyMGI1MyBsZWdhY3ktdHJ1bmsKKzU3MjE3IDE1MDQ3YjJhY2QzZDU1NDA5Mjk4M2I5YmRlMmZiZTIxODdkNzczOTQgYWxleC1weTNrCis1NzIxOCAwNDk5M2Q5NmU3MzgxNjMwY2I5MGZlY2RkYzRiZjA4MTg0MmM2M2NhIGFsZXgtcHkzaworNTcyMTkgYzIzZGNkOTRkY2NlMDFiNjA0ZTJhZDljM2VmMzI2MTAxYTkyOGI1ZiBhbGV4LXB5M2sKKzU3MjIwIDM2NDVmMGI5NDkwOGJiYWRiYTczNjUzYjc2MzkwYzEyNTlmZWYzYWUgYWxleC1weTNrCis1NzIyMSBhZjZhNzE5MGNhYmNiM2FjZjljMzFiNzJmZjdlOGUwMWFiNmI2MzAyIHB5M2sKKzU3MjIyIGU3MWMzMjIzODEwZjI0NWJlMGRkNTNlZTZkZDdhMzIyYzlkZGE4MWQgcHkzaworNTcyMjMgMmY0Njc5MzAxMTMyZTg1ZTQ4YjZlZTVkODU3Mjk0ZDQ4ZmZlN2RlNCBweTNrCis1NzIyNCA1YWJhOTY0NjRiODc5N2VhMTIwM2VmNTg4N2FlNWMwNDNmMzU3ODNkIHB5M2sKKzU3MjI1IDVjMDg0NzJjZmMzNDVjOGY2YjUwZjgzZDIyYTI4OWYwYzY5MmYyNTQgYWxleC1weTNrCis1NzIyNiA5NTQyZTJlNmVmMDJiMmY4YTdjNzNjZjdkNzg1NzFjNGIzZmEwZDQ0IGFsZXgtcHkzaworNTcyMjcgNDNiMzU0YThmNzczY2Y1MjdiMjQ3MmM0MTM5NDdlOTdlOWE0OGZiZCBsZWdhY3ktdHJ1bmsKKzU3MjI4IGQwZjNkMjliNzA4ZDMwOGJhMGU2NDMyYWMwZTYwYWJlODNiMzg0ZjEgYWxleC1weTNrCis1NzIyOSBkZGZmNTIxYWM3ZjFhOTExNjA1NTgzYjU3NjZjMGY3NDdiODJhZGUyIGxlZ2FjeS10cnVuaworNTcyMzAgOGQ3ZmE4YTVhN2UzOGZlNWI2MmMyMGNkNTM3ZTVmOTkxMDMwZDY4MyBsZWdhY3ktdHJ1bmsKKzU3MjMyIDJiNGZlZTFkNDg2MWFjM2NiODFmOGYzMDc4ODE0ZmFkZDY0Yjg5N2QgYWxleC1weTNrCis1NzIzNyA0NDc0ZmYxMGJiMGEyMmI5NWFiZWVjOGVkNTRjYmVlZjRlNTBkNDhiIHB5M2sKKzU3MjQ0IGFiN2E2ZTc0YmJmMjM4MTQ2OTllY2Y0MzM0OGNkNGEwMzZhNTc4OTYgcmVsZWFzZTI1LW1haW50Cis1NzI0NSA0ZjExMjU1OTU4YmU5ZjI0NzY5YzVkNjViMzgxYjNiY2JhMjc2MmUxIGFsZXgtcHkzaworNTcyNTEgYzA0MGRiYjY5ZGY3MWM5MTBiMjcxNDIzNzJhNzY0MWI1ODY3ZWE1MCBhbGV4LXB5M2sKKzU3MjUzIGVlOWViYmY1ZjNkYzhiMDJkMjViOWI0N2Y0NzRmMDllNmRiNmJjOGIgbGVnYWN5LXRydW5rCis1NzI1NCA2MmVlZTc5ZGU5MjNhYzdkNGMxMTZlNGU5YzM1Mzc2YzBmMWU2MTNkIGxlZ2FjeS10cnVuaworNTcyNTUgMWVmZTliMTBjNGE2ZjMyYWJhNmM1NGVkY2U2MDhjMmI5NjZkZDU1OCBsZWdhY3ktdHJ1bmsKKzU3MjU2IGZhY2RkNzRhMGJkZDFiNzRkMzMyMGM4MjIwZmI5NWVmNjhhN2MyNDEgbGVnYWN5LXRydW5rCis1NzI1OCA1YmY2OGZjNzM5MjNhOTY5ODdiNzIwZmI0MjUxZDUwM2Y0NmVlNzE4IHB5M2sKKzU3MjU5IGYzMTgxZTlmZGU0ZDdhMGU1YjQ2NjNlMzMyYjU4M2U1ZWU1MGQzOTEgbGVnYWN5LXRydW5rCis1NzI2MCBkZTZmMzBjNjI3MzA1NDM3MDcyZDJhOTI1ZGU0ZGFmYzAzYjY5NjQxIGFsZXgtcHkzaworNTcyNjEgZDllMzdkMjZmNzhlOTU5MjM1YzgzZTI2ODhiZWYxN2UzYWMzYTEzMyBhbGV4LXB5M2sKKzU3MjYyIDZkMjUyODM4ZDIzMDYzOTdkMWIwN2FkYzBlODkxMjM1NWE2MGMzYTkgYWxleC1weTNrCis1NzI2MyBiOTM3OTJjZWQ5ZTgwZjE2NmJhZDFkOGVmMDJiNjdlMDJkMjRhZGNlIGFsZXgtcHkzaworNTcyNjQgYWVjZmY5ZTBlZWFlNGQ5Zjg0NzAzNjcxNTlmOTVhYzBhYjRiMjI0MyBhbGV4LXB5M2sKKzU3MjY1IDYwNTRkN2QyMzQ5ZjA0NjI0NmExZjU0MTQxMzk0ZmUyMTRlNmMxOTkgYWxleC1weTNrCis1NzI2NiAyMDgxMTE2MTI1Y2VhOWY1NjgyZGMwZmVjNGI2ZjU1NWYyMmI5YTdmIHB5M2sKKzU3MjY5IGU3Njk2ZmNlMzM3NjEwYmEzZGUxYTk0OWEzZmMzMjdlMjY0ZTZlMDkgcHkzaworNTcyNzMgYTAzZjM3OGMzYmY3YmYyYzgxY2U1ZDZhODkzMGE1NTZlNDE4Yjc0NyBhbGV4LXB5M2sKKzU3Mjc1IGM5NDdhMDQ3NjhlNDVhMjMxMWRjMGRhYTFkMjYxNDY1MjVlYzlkNmEgcHkzaworNTcyNzYgZTMxYjM4N2U2ZDc3NWMxMDVhYjBkZGU5MDFiM2M5ZTQ4Njg0ZTYxMCBweTNrCis1NzI3NyAwMDgxZGJhY2I3YWE2MTIyY2MzZTM1NjhkZTYwZGJiMWI2ZDUzM2Y2IHB5M2sKKzU3Mjc4IGQ4MDBhOWNkYWI3NjQ2NDEzODgwZDYyNmYxZDRmNDMwOTcwYmMwNWUgcHkzaworNTcyNzkgM2I0ZTM5ZTgzMTkzMjEyYzNlNTY2M2ExN2QzOTA4ODY5YzEwYWNjMCBsZWdhY3ktdHJ1bmsKKzU3MjgwIDg0YzVjMDUyNGQzY2VmN2RjZDgyNjFmYjljYmRhYjMyNTM4YzQ0ZjIgbGVnYWN5LXRydW5rCis1NzI4MSAyNjczY2RlZDg4NTU0NTEwYzAwZmJkMTUzZTk3ZDdjZjJiNmE0ZWQ4IHB5M2sKKzU3MjgyIDc4MjM3MGM5MzU3NThlNjQzMzRjNGIzZTIwOWUxZDA4MDUzNGI0MTEgcHkzaworNTcyODMgOGJhZDg3MjJmMGU2NDI4ZDJhYjdhMDljZTFjNGE3Nzk2NGMxMjE1NCBweTNrCis1NzI4NCAwOTJmMDJjZjAxOGY5ZDkzNzkwMDMwMjI4YzQyOGU2ZDJkZWM3YTg0IGxlZ2FjeS10cnVuaworNTcyODUgMWJmMTc4NTVlOGU4NWYxZjM3NjJlMWIxMjViYWM1NTZmYWRmOGM4YyBweTNrCis1NzI4NiA4YjY0MDBmOTcxNmZlZTNkYmY5NGI4MjJlYjAxNTZjMDQwZTFhN2VhIGxlZ2FjeS10cnVuaworNTcyODcgNWEyMGVlODA1ODE5NThiMDE1YzI5M2ZjOTMxM2Q3NTc3YzM2NjkwNCBweTNrCis1NzI4OSAwYjA2MDY5NjYwYzIyYmVjMmU3ZDc0ODU5NWI4OWU0OTYwN2IzZTI1IHB5M2sKKzU3MjkwIDllODFiMjI2ODlkMmQxN2RjM2QyMTVhNDgxNGJiNjhjNjdlMjZkYjAgcHkzaworNTcyOTIgNjg4Y2Q0Mzk4ZjQ0Njg1NjA2YTM0MjYyODJmYjgxYWI0YjNmZTYxNiBweTNrCis1NzI5MyA1MDk4YzY4NzkwOTE2ZjRkYzI3Y2NiMjA5NjEzMjY0ZGRiOGE3MWViIHB5M2sKKzU3Mjk0IDU4OTE3NTE0ZTQyM2VjZjIxZjFhZDZkYjdjNjIyYzdiMzQxNjBlNzcgcHkzaworNTcyOTYgYWFkMTdiMWFiMGM5MmRiM2JhODFmYmU3MDQ1ZmRlYjM1M2JmYjE4YSBweTNrCis1NzI5OCAyZWMxNmI2YjRkMDQ0MjM2YjU4OThhNDdmODM3OTA0NTBkZmEyZWIzIHB5M2sKKzU3Mjk5IGU0YWRlMTZhNjk0ZmY1NDZlMGE1M2VhNTg4NzJlNmFiM2Y3NGJlMWIgcHkzaworNTczMDAgMjZiMjlmN2I4ZmZkOGVmOWZhYWMzYTgwOGY4NTEzZmJiMjdlNzBhOSBweTNrCis1NzMwMSAxOTk1MDRmYjkxYzU4MGU2YzZhZmFkZjNkZGMzOWZmZjVkYTRlNmFiIGxlZ2FjeS10cnVuaworNTczMDIgN2ZlMjg0OGZkNDFkNzQ2Y2I4OTQ4NGYwMGIxNmI5NjlkMDcxZTk2OCBweTNrCis1NzMwMyBhZTgzZWZiNzM1MDZkMjU3ZWMzMTNhYTcwMGZlMDQ0ODM1NzU0NDQyIHB5M2sKKzU3MzA0IGVhZTEwZDljOWM0ZWVkYjUxOTgxMjE4NmI3NDNkZGI5ZWY1MWYyZGQgcHkzaworNTczMDUgNTA2YjkxN2QyMzYzYTg3MGZjNjAxNjUxZWM3ODlhMDljMGI1NjgxNSBweTNrCis1NzMwOCAzMjg0MzA3YTczNTE5YTlkNWJmNDU3MjNiMjI4MzVlZDJmNzQ2MmU4IHB5M2sKKzU3MzEwIGYzNDc2ZTliYmU2YWIzNjEwNjAzZjM5MDkwMjYyODU0ZGM2NDgwZDAgcHkzaworNTczMTEgN2Y0ZDkzZTAyOTVjYWM1YjVmZDBlYmNlNzljYjA1NTZmMzJiNjMzNiByZWxlYXNlMjUtbWFpbnQKKzU3MzEyIGZhOWE0MGVmMDc4MGRkNzdmY2NhYzdkN2I4ZjgxOGI1ZjVkYjkyMDQgcHkzaworNTczMTMgMDZkZTYyZjMzYzM3N2Q2MzNhMWJmYzQwNmNjODI1ZGFhZGJhNTA2NSBweTNrCis1NzMxNCBhOWE0Y2Y5MWNiN2U3YjVjZmVhYjE1ZGFiYjMwYWZlZDMxM2UyZmU5IHB5M2sKKzU3MzE1IDgwYmM2ODg1MGEwODYwZGIxYzdlZmRjMTdhMTE1ZTBkZjY3OWQ4MzggcHkzaworNTczMjAgMjQ4MGI4NjRiZTAzOTdhNjA1YTk2ODEyOTUyNjNhNzRjNDZhMzMwNCBsZWdhY3ktdHJ1bmsKKzU3MzIyIGRlMWJhY2U4MWU2ZWQyYTRlNTNiODhhM2I2Y2U4OTYxOGJmNDg5OWQgZGVjaW1hbC1icmFuY2gKKzU3MzI0IDhlODdkOWQ2ZTgxMjc1YzEyNGY1YTdiMTYwOGQyYjUxMmFlMGI4MjEgbGVnYWN5LXRydW5rCis1NzMyNSA3YTc1Y2QyOGIxMjVkM2I2ZWI5OTNhYzYyZjA5NjkxODZmMjg4MDQ2IHB5M2sKKzU3MzI2IGIzNDg1NTBhMmJmYzY4OGQ2YWJlN2E0N2QzNmEyMDlhOGVjOTZhZTggbGVnYWN5LXRydW5rCis1NzMyNyBiY2JkYzk1ZGZiYTlhYTU0M2YwNDEzZWUzOTczNWE5NmY2YjBhMjk2IHJlbGVhc2UyNS1tYWludAorNTczMjggOTA4NzMzN2YzYTNmODk5MWRmZTEyZjcxNGQ4ZTNhYWJmY2UwMzc4YSBsZWdhY3ktdHJ1bmsKKzU3MzI5IGE5MTFjZDlkMTk4OTNiZThmNGRmODk0OGQzOWNiYzA3ZGE3MGM5MzcgcHkzaworNTczMzAgZGRlZmJkYmRiY2I1MWNlMGFiMTg3YTUyNTVmMzM5MTRkY2RjZTE0OCByZWxlYXNlMjUtbWFpbnQKKzU3MzMxIGFkYjgzZjRhYzRjYmU1ZTI1YzBhMmFjZWZhYzVjNjIxYzEyZDU1N2IgbGVnYWN5LXRydW5rCis1NzMzMiA3MjlmZTk5YjQwYTU3MmRlYzllZmFjYWYxNmMzYzQ1YTZhOWYzZWZjIGRlY2ltYWwtYnJhbmNoCis1NzMzNCA0ZWRmYzU5YjcyYjJiNGYxZGM5YzNjOGU4ZDA0ZmNlNzI0Y2ZkMDAzIGRlY2ltYWwtYnJhbmNoCis1NzMzNSBhZjhmYzQ2ZDRiNTYxNzhlZmYzNjIwMzMwMDQ1NDYyMjYxYzc4YTJlIGRlY2ltYWwtYnJhbmNoCis1NzMzNyA3MWM2OGRlM2IxYzU3NGQ4YWFhYTZjN2IwMWNmNDYwNTg3N2U2ODIyIHB5M2sKKzU3MzM5IGY1M2YxYTFhYzAxNjQwZjhiM2MzYmI4MDdjMWQ3ZTFkNmYwNDBjYmQgZGVjaW1hbC1icmFuY2gKKzU3MzQxIGEyY2MwMThmMzcwMGRkNDE5ZmUzYWI0ZjYzYzQ3YzA5ZWIwMzgzN2EgcHkzaworNTczNDMgOTA4MGNjNzZkYTk4ZjBlMTA4ZjFlZTlhYzhmZjRlMWE0NGYxNDU2MyBsZWdhY3ktdHJ1bmsKKzU3MzQ1IGUxY2RkNmVlOTEwZTdkYjIzZjZiN2EzOGY4NzAxNjllNmY1MzdiYzAgbGVnYWN5LXRydW5rCis1NzM0NiAwMGY4YjI0ODI3NjRjZjZjZmNiOGUyMmNiNDI3Njc3ODE1YThkYmZlIGRlY2ltYWwtYnJhbmNoCis1NzM0NyAwMzE4YWJjZmFmMzZhNmZkNjg0ZmI4MTBhZjE3NjE0ZWNlYmU0MGNjIGxlZ2FjeS10cnVuaworNTczNDggOTUyMDU3OWNjMzBiZmRjYTlhNzczOTdlYzgzNzIxZGVlOTZhMDEzZiBsZWdhY3ktdHJ1bmsKKzU3MzQ5IDgxODg2ZTA1ZmQ0MDE2YWJjNGViYzBlYTgxZGFlNDIwNzU3ODM5NGUgbGVnYWN5LXRydW5rCis1NzM1MCBhMTU2NTQwNDU5OWU1ZWQ4NmY2ODA5ZGVlODhlYzA2NjRiNzA5NDY5IGRlY2ltYWwtYnJhbmNoCis1NzM1MSAyNjUwMGJhMDlmNzBjNjIwNTc4NGJjOGExYzIwYzQxYzBkYmZhNGFjIGxlZ2FjeS10cnVuaworNTczNTIgZTIwNDJlYzMzMGE0NTU1MjI5YTBmMWEyNGVlYmMyOGVmMTI1YTlmMiBsZWdhY3ktdHJ1bmsKKzU3MzUzIDlhMzQ3YmExN2NhYjBlOGY4YWRiMmUwMDlhMWQyZTg1OGE1MWJkM2IgbGVnYWN5LXRydW5rCis1NzM1NCAzZWQ3ODE0Y2NhMzY2ZDA5ZjdlMWU2YjU0ZWM0NmRjYjgzMWFmMDc3IGxlZ2FjeS10cnVuaworNTczNTUgNzdjZjI4MDhlZWE2Mzc1MTFlNjE2ZjA1MDI2YTk1Njg1NjBiNDFlYSBsZWdhY3ktdHJ1bmsKKzU3MzU2IGNlNTJjZDcxYThkOWEyN2MxMGM1YTkwOWUxMzFkODc2YmUzMGU0YTAgcHkzaworNTczNTcgMjA3M2VhMzAwNWE3ODc5ZWI1OTcwNDlkNDdlN2RkZjZiYjYzY2U1MiBsZWdhY3ktdHJ1bmsKKzU3MzU4IDc5MjNiZmYxOTIxMmIwMzljMzVhNzgxNjNlZDE1NmI0NDVmMTdmOGEgcHkzaworNTczNTkgMDc3ZmU3ODYwY2M5YjE4Njg1NWY1NDNmMWEyNmU0NDVkZDdhN2MzMCBweTNrCis1NzM2MSAxYzk4YjQ0NWQ4NDcwOTljMjY1MmE3NTdkNDM1MTRmNzBkODI1MWYwIHB5M2sKKzU3MzYzIDQyYjM5Y2I1MzZkOWU0YjU5ZjQ5NTlmNjlmZWQwMjllZWI4MGQ3ZWYgcHkzaworNTczNjQgMGI2MjUzOWFjZmI4ZGVkNjcyNTFjNzU0OGM2NmFjOGM2ZGIzNGJiOCBweTNrCis1NzM2NSBlNzQ0YTIwZWQ4YTZhZGJmMDQ2MzJiN2IyNjJjYWU1MDllMjY1MzVmIHB5M2sKKzU3MzY2IGY5NGM2OGZjZjc5ZGM1MjYyY2U1YzRhM2EwMDhlZTc2ZTQxOGQyYzYgcHkzaworNTczNjcgMjczYWNlMzU5ZTU1ZTZjYmI1NjcwOGE0YmIzNmQ4NTQ5OTIwMGNjZiBweTNrCis1NzM2OCBlM2UwNmIzODk0MDZhOTBhMzRlNTlkNzQ3NGZhNTZlYTFiZGQ2Nzc5IHB5M2sKKzU3MzY5IDU2N2M5MjNjYjFjNjFkOTJlNWI3NDhiOTQyOTg1NGM3NmI1NWE5NmEgcHkzaworNTczNzIgODNjODQ0OGM2ZGU0MTE1YWQ5MjFlZDBkYzgyOGU1NTYwMzllZDRhNyBweTNrCis1NzM3MyA2NmY3M2NlOTdiMzJkNzE0YTA5ODk3OTg5OWI2YWQ2ZWNlNzY2ZjYxIHB5M2sKKzU3Mzc0IGI2MjZiODRiNTA3MDQ1MTAxZTJjMjFiZjIwMGNlY2MyYWY0ZGJlOWIgcHkzaworNTczNzUgMTlkYTQxZmMxMTdhMDNhZDc4NjllY2U5N2IxZjdlMzQ4MmEyMzEwMyBweTNrCis1NzM3NyBiMTk3YzFjMDRiYTE1ODY5MjEyNDQ1MmQ5ZjhiMGU2ZDE4YzQwMzJkIHB5M2sKKzU3Mzc4IDA1ZmUwMjdlMmQ4MDk4Mjg0ZGQ4OTc4YjMyOWE5OTk1MTEzMTM3NDAgbGVnYWN5LXRydW5rCis1NzM3OSAzMTQxNTE1ZjZjNDVhMjhlY2QxYzYyZTdhNzZjMzk2MTljMTk3NjVlIHJlbGVhc2UyNS1tYWludAorNTczODAgMmI5YjIxNDAyNjUwNDBkMDFiNjU0NDUxMDFlOWQ0ODExNDA5Yzk2OCBweTNrCis1NzM4MSBkM2JhYWIyMDk2MjY0OWUyZWY0MjM5YWQ0NzdlYmY0OTg5YmQzMzBmIHJlbGVhc2UyNS1tYWludAorNTczODIgNzMyMzMzMTg3NmRkNDM5OGRjMmUxY2RhMWM1NTUzZDA1YTNmN2RmYSBsZWdhY3ktdHJ1bmsKKzU3Mzg5IDg5MDFhN2NlNmMwNzQ1YjJlY2M4MjUzYWY2YzcyNzVkMWU5ZWRkZDUgbGVnYWN5LXRydW5rCis1NzM5MCAzZmJhMTRlYzlhYWViNDgzY2E5YTEwYjRkY2I1NmFhYzI0NjJiYjhlIHJlbGVhc2UyNS1tYWludAorNTczOTEgMmM0MjJhNDk3MmYxYzk1NjA2ZGRmZTZmY2VmMDBkMTNmYmMzNjg4YyBsZWdhY3ktdHJ1bmsKKzU3MzkyIGQ3NTE3YzMwNjc5MTQ1YWEwY2NmODZmMTZlNmQ4MTJkMDlhNzQ0M2EgcHkzaworNTczOTMgYzNiNTNlMDc0ZWQxMWIzYjhhZGQyZTZkYThlN2ViZmMwMWMzYjgxNSBweTNrCis1NzM5NCA5NDI4NjBmOGNkOTdlOWM1ODNhOGViOTFmYmE4ZjQzZDUxZTZiYmQzIHJlbGVhc2UyNS1tYWludAorNTczOTUgNThmMzVkZjBmNmY0ODg2ZDQ4OWE3MTA0Yzg4Njc0YmY1ODFlNzc1NCBsZWdhY3ktdHJ1bmsKKzU3Mzk2IDRiNzAzNmRjNzZkNTU5MjE5NzhkNmQwNjJjMzExZjdiZjhiMTc5NGIgcHkzaworNTczOTcgZTI1NzhmMzA0MmIyZDUyNzU2NGNiNzU1ZTg1ZGM2YTNjMGQyODZkYyBsZWdhY3ktdHJ1bmsKKzU3Mzk4IDhiMWIzMjcyNTRjMGQzNTE5OWRmZDIxYjBiMzhmZmIxODdmOTFiZTkgbGVnYWN5LXRydW5rCis1NzM5OSAyNTZhNGQzYzU4MWY3MmQ2NGVkMzM0ZTRkNGUyM2ExZWI5NTZkNDIyIGxlZ2FjeS10cnVuaworNTc0MDAgZjc5OGMzNjYyNzBjMGZiY2UzNmQwM2IxNDhjNzQ4MzFiYjMxODNlOSBsZWdhY3ktdHJ1bmsKKzU3NDAxIDhjNTY5NTY5NzFhZGUzZWQ2NTY4OTcyZTdjMTI4Mzc4NGY3NjY4MWMgbGVnYWN5LXRydW5rCis1NzQwMiAzMDI1ZTY3NmU2NjkxODM4MTM5M2UzNTRlMzFhNmE2NDAzMTNiZjRiIGxlZ2FjeS10cnVuaworNTc0MDMgMDY2ZDM5ZmFkNDA4ZTFkMWQ1NzllMmJmMzhlNTM0YTA4MjQyM2MwYiBsZWdhY3ktdHJ1bmsKKzU3NDA0IDQ4ZDkxZjE1NThhMDA5ZDk1ZTVhNjM2ZjM5ZjY5NjVjMDFhMTA1NmMgbGVnYWN5LXRydW5rCis1NzQwNSBjNmQ2MzIxZGM3Zjk0MmMxOGZmNjQ4ODZmMTE0NTQzOWJkYTQ3MWI3IHB5M2sKKzU3NDA2IDcyMWMzZWExM2Q4NGEzYzA1OWExMzkzYTllMmEzYTQ0NDMxMTJlZWQgbGVnYWN5LXRydW5rCis1NzQwNyA2MTI0YjJlZjY1MTIwMTYxOWU0MGQ2N2FiMzk1NjU1MTRjNjBmNmMwIHB5M2sKKzU3NDA4IGE2ZTViMzg2OGYzZDgyNDI0MjMwYzRhNzJjYTNmNWRmMDdmMDdjYWYgbGVnYWN5LXRydW5rCis1NzQwOSBlNDJlN2QwMzE3M2IzMTQzYjc1ZTVkMDMzODdlMjU3MDdhYjQwOGNkIGxlZ2FjeS10cnVuaworNTc0MTEgNjFmYjU5NzkxN2QxY2Y5NzZiZWFiMDBlMDdiOWVhY2VhNzI5M2NhMCBweTNrCis1NzQxMiA4NDYxOGIyMDY0YzE2YWMzNjNlNTg5MjVhNDJiN2MxMDExM2M4MjBkIHB5M2sKKzU3NDE0IDZjZjZiODMxYWIzNmNlMDZlMGM1NGZmYjE4YjE3MzVjMmFkMzY3ODkgZGVjaW1hbC1icmFuY2gKKzU3NDE1IGNmMmIzN2I5MGM2NmY1NDk0N2M2YmYxMTE0YmU3ZDAwOTk4MjAyMDEgbGVnYWN5LXRydW5rCis1NzQxNiBlMWEzNjU1OWQ4YjY4OTc4YWQ2NmMyODAzYjU0NmViZDk3Y2NjNzMwIHB5M2sKKzU3NDE3IDhlOTc3MTFmYWRjMTQ3MDA3MjA1NDE2MGMzYzBiYjc5OWFjNTgxYWUgZGVjaW1hbC1icmFuY2gKKzU3NDE5IDM4MzYyMGU2MmVlNjRjNGU0YTA3Y2MyYmE1MjAwNzc5YmMxN2M3ODIgcHkzaworNTc0MjEgYjBhNzFiZmZhMGExZjcxMzZmM2VjODcwZDA5ODM2ODFiY2ZhOWM3NiBweTNrCis1NzQyMiBkMDI2MTBiMGE5ZjNhY2RjNWU2Mjk3MjI3ODk0OGU5ZDM4MzMyZTY1IHB5M2sKKzU3NDI0IDhlNjE3MjdkYjUyOWI1YjE2OGQ3M2VhMTE2MDgxMjRhNGIzODA5YjAgcHkzaworNTc0MjUgNDFkYTQ5Yzk3YTU5ZWM2ZjgyNzE2MWRhNmZjYjdlNTVlYWY1NGM2YSBweTNrCis1NzQyNiAwMWVlNjMxMWJhNDY5NGMyYzU3Y2QzOGVlMTJiOGY0MzQ1YWUwNzU1IHB5M2sKKzU3NDI3IDA5OTQ5NThmZmQ0ZmQ0ZDcyOGMxMWY1ZmI1MmJmYmJjOWY5OTJjZDMgcHkzaworNTc0MjggNjliOGUyOTc2NTU2NWE3NDMxZGRiOWI3ODY1YzJlOTRkOGJmMmFmOSBweTNrCis1NzQzMiAzY2Q2MGY3NDRmOGU5M2I2MDBkNDc5ODMzMzhkMDA1NTQzNjA1NDI4IHB5M2sKKzU3NDMzIDNjYjVkZWYxODY1ZGE2NTgwZWUyYmI4Nzc3Y2QyYTU4OGUxNjAxNDQgcHkzaworNTc0MzQgNzhmN2VkN2Q4MDY0OWMxMTRhZTA3NjA3YjA3OWQzNGZlYzVhMGVkMyBweTNrCis1NzQzNSA1OTk1MTQyODkyMjZlMWE0OTkwYWE4YzZlNWVhY2IwYTAyYjZkMzVkIHB5M2sKKzU3NDM2IDAwZTEyOGI1MjcyZjU1ZWFmNjcyMzhkMjRjMDc5ODQ3NzE2YTUzNjcgcHkzaworNTc0MzcgNzc2YjhiZDY4YjMwMWEwNjZiNTAzYmZlOWQyNDg0MDU2MzMwODI3NSBweTNrCis1NzQzOCAyYzJlOTA1ODk0YTM4MGM2NTY4ODlhNjYyZDUyMjFhMDJjNDZjM2MyIHB5M2sKKzU3NDM5IGE5OWVjNGJlZmRhOGFkZmY1MjZlYWMwNDBjN2RkOWZiZGU2YTYyOWUgcHkzaworNTc0NDAgNzRiOTkzYThhZDZmZWY3MzE5NDM2NTlhMTljMTBiODE1MTA0Nzk5NyBweTNrCis1NzQ0MSAzZDVkMDliNDUxYjY2YTJmODVlNGM3MmRjNzFhMWZkYmJhZGZiODYwIHB5M2sKKzU3NDQyIGY4MWQ5NGMwNWEwZWNkYTQxZGUwZDk4YWM0ZTc5YTI2YjlmOTgzN2MgcHkzaworNTc0NDMgODcyYzdjM2YwYWYzNTQwMGVmYzUwNmZiNDJmMDJjYTAzYWFkMDgwZiBweTNrCis1NzQ0NCA1MzU1MzM3NzA5ZTEwOTUwYmM2ZTI1NmY4NWM0M2M4ODIxNGFiODdlIHB5M2sKKzU3NDQ2IGZiNThmYjNiZGRjMTliOWRkNjkyNzFlODU5NzM2NTU4MGRiM2JiYmIgcHkzaworNTc0NTUgMWI0MjBlNmUwMGViMTY0YTVmZDAwNDdhZDMwMzIwOTUwZTMyMzJmZSBsZWdhY3ktdHJ1bmsKKzU3NDU2IDIyYmJhZmE2OTMzYmQ5ZmNkMDAyNzllNzg1MGYzMTE2NGZjOWE2Y2QgbGVnYWN5LXRydW5rCis1NzQ1NyBiYjI4OGUwNGI4ZTU4ODQ2YzljM2IxM2FmNzhjNTY5OWM3NDY5YjUzIHB5M2sKKzU3NDU4IDMwMmFlZWUzMmRhODNhNDlmYzc0OGVkMTIwNmE2N2Q3MjQ1MjE1YmUgcHkzaworNTc0NTkgYmQ5M2FjMzBjNzc5NTJiZjlkMjM3NjcxNjA4ZWI4Y2E3OGNmN2E4MSBweTNrCis1NzQ2MCAxODRmODAwZmRiZjY3ODVmY2RkNDY1ZmQ3ZmY1YTBmMmFkNzg1MGMzIHB5M2sKKzU3NDYxIDU0M2YyYmE5N2ZhYjlkN2QxZTY0ZmUxNjNlNjYwMmIyNWVmOTA5NWEgbGVnYWN5LXRydW5rCis1NzQ2MiA3ODM0MGNjZWExNGJlNDJlNzBmMzczMjBhMTJmYzA3Zjk5YjU2YzVmIHB5M2sKKzU3NDYzIDZkMTNlMThmNzA2YWUzOTY5ZGZlOTY5NWMwYTA5ODVjNjFiYTVjYmUgcHkzaworNTc0NjQgMDhiNjI3OGFhMWY0MDlmY2FiMGNiY2NjZGYzZjE4Mzk1OTEyN2ZhYyBsZWdhY3ktdHJ1bmsKKzU3NDY1IDI0MTA1MzczOTczMzMyNDYzYWQxMzRkYWVmYmRlM2M0Yjg0NjIxNzEgbGVnYWN5LXRydW5rCis1NzQ2NiBiYjMzNmE2OGE0N2YyNTM0NDZiZDczNzg5YjZkMGQxMjhiMjgxOTY1IGxlZ2FjeS10cnVuaworNTc0NjcgNGNkMTFlODI1NjQ0ODA5ZTFiNjYxOGZlZTBiNTc0YTMwOTRlMzM1NiBsZWdhY3ktdHJ1bmsKKzU3NDY4IGNhZmUxZjY1M2RiMzZiNjMxZDQ2NjczZjMyNzczZjYwMDBlODRiOTcgcHkzaworNTc0NjkgNmExODFhYmZjOGE0MDcwY2YzZjMxNDA5OTUyNTZmMDJkM2ViNGFkOCBweTNrCis1NzQ3MCAyMGUxY2M3NGU4Y2E1MWYyNTg4NmM5ZjQ2NTNlNjk5MmZmNWVhMDQ0IHB5M2sKKzU3NDcxIDVhOWI3YzJmMzU4OWQ5NTEwNTM4NzY1ZjA1ZjkwMTc1NzMwNzAzY2YgcHkzaworNTc0NzIgNzhjZjJiZGE4ODU3MTg4MmZjNWVjMGE1YzFiODc2MTJmMmUwZTE2YyBweTNrCis1NzQ3MyBlZmZlZWE3Y2Y4OTg0ODUxYjUyODI1ODg0NjJiNGI2ZDVkMmJjN2E2IGxlZ2FjeS10cnVuaworNTc0NzQgZDhhNjNiNjMyNzQxMmY4ZGNmZjQwOWFiYWZmMWZiYTJmOTM1NGIwZCBweTNrCis1NzQ3NSBjMzFjMjA3YjhjODZkNTU3N2M2NzkwMzVkNzYxNzBhOWRhYTE3NWViIHB5M2sKKzU3NDc3IDA1NDhkZjc4MTBhMGNiODMzYzEyYWU1ZTg0Mjg0NmI2MjdmZTU3MDcgcHkzaworNTc0ODAgM2E2ODlmODhjODM4NWUxMWQzMGU4OTRhMWFhZDg1NTVjZDgwMjcxYiBjcHlfbWVyZ2UKKzU3NDgxIGE5YjNjZTA2NjVjM2EzNWQzMmY5MWM1MzAyMzhiZGI4YzRmODBkY2MgY3B5X21lcmdlCis1NzQ4MiA2NzNjYmM4NWQ4YzQwYmMyMGZlMDE0N2IxOTFlODAwOWViNGIyMDJhIGxlZ2FjeS10cnVuaworNTc0ODMgZWIxOWYyZmFlZWExMmIyMmQ3NTM0NjNjOWViZWRjM2I2NWM4MzNjMCBsZWdhY3ktdHJ1bmsKKzU3NDg0IDM0ZTZmYTc4YjY0MzI4ODUyYTE5Mjk1YTNjMDU1OGJiNDM0YmUyZDEgbGVnYWN5LXRydW5rCis1NzQ4NSA2ZTczNTkxMDY3MTgxYTMzMjUzOTE2MzcyODI5ZmMwYWQ5MTFmYjdhIHB5M2sKKzU3NDg2IDMxNTJkZjcwNTE3YTZmMTIxNDdhNjFjNDc5N2NlZGNjZWJmOGYxYWIgcHkzaworNTc0ODcgYjU1ZTdjNTMyNTNjMGQxMTQ5M2M5MWU2OTU3YTJkNmIwN2Q3ZTk4MiBweTNrCis1NzQ4OCA3ZmZhZGRkMWRlMzA1MGM0ZGZjNTQ3NDM0ZWU0MzNkZTllYTQ3MmU3IHB5M2sKKzU3NDg5IGVkMWQzNTExOGVkOGYwZjQxOGU2NDE4M2NiNjliMDk1NmZjNjNkZDMgcHkzaworNTc0OTAgYmJjNDQzMjZiNTNkNjk5ZTBjYzhiNDc4Y2MyYjdhZWMxYmM3N2MzMiBweTNrCis1NzQ5MiAwMjdjN2QwNDRjZmQ3Y2Q4ZDQzNDY3ZjI4ODI0ODdiZDEyZTQyNDA4IHB5M2sKKzU3NDkzIDYzODBmODhlM2RlZWRiMzJkM2FjYTk2NzQ1ZDVmN2JiMzFmMzFiYjYgcHkzaworNTc0OTQgZmVkNGY3MmIwNGNiOWQ5ODI2OTc4NTEzMmFmZDU2MzBmM2E3MTk0YiBweTNrCis1NzQ5NSAxMzkwYzExZTY0MGIxYTZjY2RkNDg2ZTc3MGMwYzg4YmNhMzc5M2Y5IHB5M2sKKzU3NDk2IDgyNGI5ZDUyZTAwNmJjYWM5YmU1ZWFkMjcyYzBjN2Q5YzgzYzQ3ZGYgcHkzaworNTc0OTcgZDViNTJkNTZiZWJhZmJkZWQ0NmY2ZmQwNjNlNzE5ZmJkMWIxYzM3MyBweTNrCis1NzQ5OCBmM2IzZmZkMTM5NTQ5ZWFhMTkzNmNhNWJmOTk0OWNmMDlmOTg1ZDIyIHB5M2sKKzU3NDk5IGVmNTYyODFmMDNiNDVkNDU4YjFlZmZkMTk1OTMwZDdlNWRmZDI2ZDUgcHkzaworNTc1MDAgMTU0N2RlMTZmZWM5NTFhNmJjMjNjZjljZmYzZWQ4ZTQ0NDkyNzM4MiBweTNrCis1NzUwMSAwMzY1OThkZTQ2NjBkNjI0ZjlkYzk4NzU5Y2NiOWM0NDk2ODA0NDMzIHB5M2sKKzU3NTAyIGJmMWE1M2NjNmU2NTFmN2Q1MGU2M2FhMWI3YmE5ZmRhNGQ0NDUyY2QgcHkzaworNTc1MDMgNzhlMDBhMGY2MDE1ZTVhMWIwNzQzMTg2YTYzNGVlZjIwZmUwZTExNCBsZWdhY3ktdHJ1bmsKKzU3NTA0IGVkMTU5NGExNmJkYjdjYzMwNzg4NDRhMjNhOTQ3ZjhlOTBhMmZlYjkgcHkzaworNTc1MDUgODRmYTk0N2ZmNjk2NjAyYWQ5ODkxZmM5ODkwZGJmMWZkMmE3NWE0NSBweTNrCis1NzUwNiAxYjFmN2NhM2ZkNDkzMDVkZTI5NTJkN2FkZjJhNzBmNDc4ZmI3ZGYzIHB5M2sKKzU3NTA4IGEwOTcyOGI4OTUzMDIzMmQwMjg3MDI5OWEzNWI2MDkxYWFhODUxMDIgYWxleC1weTNrCis1NzUwOSAzZWI1ZGRhZGZiZjc4YmViOTEwNzMxNzVkOTgwOTg2Y2E0ODNhY2MzIHB5M2sKKzU3NTEwIGQ2ZDQ5M2I2MTdlM2U1MWJjYWE3M2JkZDBlMzM1ZmIzZDM1MTA0NDEgbGVnYWN5LXRydW5rCis1NzUxMSA0MDNlYmQxNDU4YWZmYjVkZmFmYzhlNjcxNGVmN2RmZmVlMTQ3ZTA0IGFsZXgtcHkzaworNTc1MTIgNmRlZGIzM2QyZGEzODQ5YmFhZjlkMDk4ZTk5Zjg5ZjllNTMwMWRlZCBweTNrCis1NzUxMyBiYWI3NWU0YzY0N2Y2ZjQxZmQ4NGVlNjk3ZmNiMGZlZmU1MzgzYmQyIGxlZ2FjeS10cnVuaworNTc1MTUgMzg5NWMxMjllNDg2MjIzNzExNGRhODEwNjY4MjgxMWYxNGUwMmQ4MCBweTNrCis1NzUxOCBjMmM3NmEwNDQ2ZmFiMjY4NTM2YmFmNTFjMTM1NzI4OTNkNTVlYmU0IGxlZ2FjeS10cnVuaworNTc1MTkgYTEzNDg1YTNiNDA3ODNmNGM4NmIzZDg4MjQ4MmIxNzI3MmUxNjEzNCBweTNrCis1NzUyMiBmZjNjMGJlNzFkYzJiMzdjMTQyMTk3YTIwNmU0NjU1ZDE1Zjg0NzEzIGxlZ2FjeS10cnVuaworNTc1MjMgZDhhZDI5YzY4NzYzZWFiNDJhMzY0MjY3NTQxOWM1YTExYWZlYzgxOSBweTNrCis1NzUyNCA4NWVhZWNmOWQ2NzgzNDFjNjNjYzJmNGNlNTQyYTgwMzgxYmMyODJjIGxlZ2FjeS10cnVuaworNTc1MjYgNWZkNjVlMjUwODQzNTVlYjVjYTNlMmMzNjAzZjRjOGEwZDNiZjBkNiBweTNrCis1NzUyNyA1NmJiZDE3NjcwNTc1ZjMwYTMzMmFhNTUzODY0N2I3Yzc0ZmRmYTEzIHB5M2sKKzU3NTI4IGE0MGRmYjUxZGY5MTU0YjA5ODc0NDA1YzJjZjVkYzBmMmMzNjRmNGEgcHkzaworNTc1MjkgNDI2YWRiZmY0OTFkZDU2YjI4MWU5ZjQzNTgzNmFhZTE3NGFiYWY3MSBweTNrCis1NzUzMCBkOTExNWE0NTBmMWM2OWM1YjU0YWI4MjIzNDAxYjljMDQxZWM4NWQ5IHB5M2sKKzU3NTMxIDgwMzY1ZGQ0NTVmYTY4ODk5NGZkZGI5ODBlMWU5ZWUxMTVjNmQyZTUgcHkzaworNTc1MzIgNGM3OGMwNDhjM2JhMDRkYmE0NWQwNzQzYzc0ZGVlMzk4ODRiMDMxMSBweTNrCis1NzUzNCAyNTE5NzUxNTMyYWY3NmI2N2E0MDM2ZmM0MzU3ZGFlMmNhNTRjYWUzIHB5M2sKKzU3NTM2IDE5ZGMyZWVhY2JjMTFhMzdlNjlkNjM3MDVlZGE0YzAxYmJhMWY0YjMgbGVnYWN5LXRydW5rCis1NzUzNyA4ZTEyZDU2ZGQ2MDNlYWNhZmQ0M2I5ODk0NDA3YTQwN2ZmYWVjZGMyIGxlZ2FjeS10cnVuaworNTc1MzggYmI2MjQ5MmI1ODRlYjZmNTU2ZjJhM2UyOTc4YzBhYjRmYjNlOGM0ZSBsZWdhY3ktdHJ1bmsKKzU3NTM5IGU2NDg0ODVjZjNhZmUyNjc1NzMyNmUzOTc0MDVjZjA2YWQ5OGUwMjQgbGVnYWN5LXRydW5rCis1NzU0MCBkNWZiYjg0M2IwYTlkZDAyOWE2ZDk3NGViYjg4ZjZmYWNjZDY2ZTUyIHB5M2sKKzU3NTQxIGU5NDYxMDBiYjlmZDljZjNiM2ViYjY0MzBlZmRlOGI1ZDI3ZjJiNTMgcHkzaworNTc1NDYgZGQwNjcwYzYwMWQ5YWJhYjQ2NWI1YTNkYWYwOWU5OWJlOGIxYjc2YSBweTNrCis1NzU0NyA5MDQ2OTdiZTY4Y2NiNTg1NzM3MGMxMzc1YWM1OTQ3OGU1NWU1ZmI2IHJlbGVhc2UyNS1tYWludAorNTc1NDggMjUyYTg0MjgwYjczMmFlYThlZjQ4YTE4MGFjZDFmNzY5NWI1N2E2NyBweTNrCis1NzU0OSA5YjI5NDg0NmQyMGQwYmFmOTdhY2YwMWViNWNlYzdhMzg1MDQ0ZWJkIHB5M2sKKzU3NTUyIDJjMDJiYTcyNzE0Yjk0NGU2ZGUwNTQzNjZkM2NhM2JmMzc0NDE2MGMgcHkzaworNTc1NTQgNmI0NzgxZGM4MWZmZmNjY2M5YTQyNzUzZGVkYTNlNGI1ZmFiY2Y5MCBweTNrCis1NzU1NSA1OTRmODllYzA2MDc3OWUyNzkwMTI2ZWU0OWU3ZWRjNTBlYzhjNDlmIHB5M2sKKzU3NTU2IDdiZjhmMjMzOWVjNjliZmMyZGY2ODk2MWI3OTFjNzkzNzU5NGY4OTkgcHkzaworNTc1NTcgZTJmZmEwY2Q5N2I5N2JmYzc1NWNhZTJiNTQ1ZTgyYmI2Zjk4OGQ1NyBweTNrCis1NzU1OCAwMDIwYmM3ODRjNzY5ZjhiMGViZGEwMzNiNDY3NDU1MzViNTYwYjdiIHB5M2sKKzU3NTU5IGE0OTY2NWY4ZDJmNGQwNzIzMmNjNTljYWEyNjY3ZTIyMWE1Y2EwYzEgcHkzaworNTc1NjAgMTkxOTZjY2UxNDMxMzBiMjEzZmU4OTBiYTMxZjA4NDE5YzdmOWNmYyBweTNrCis1NzU2MSBjMDljMzI2NGE5MDA5NTBjN2VjZjU4YmFkNDExNmQ5YjdlYTIyZTFjIGxlZ2FjeS10cnVuaworNTc1NjIgNjI4NzRiMzRkOTVkOTljNzJkM2JhMTQ4NGYwMjcwOWRhNDU5YjM1NyBweTNrCis1NzU2MyBmYjMyNmZkOWQxODQyZDNjZDg3MWFmZTgxNjA5YzVkMDFlMjljYTY2IHB5M2sKKzU3NTY0IGNkMjM1MDI3ZTY0YzM3YmYyZTRlNjBmZjAxNWM0ZjY1NzdkYzNiMzkgcHkzaworNTc1NjUgN2VhOGE2Y2NkYzQyZGQxNGU2MWU0NGIwNzZmYWVlNDIxZjM3MjQ1OCBweTNrCis1NzU2NiBiOTdmYTQwNTUzNDM4ZGQ2NDM0N2RhYTI0MGNmMjAyYmJkODkxM2JiIHB5M2sKKzU3NTY3IDAxNzA0MThkYWRlYWJiM2VlYzdmZTI0MTg1MDMzYTg1NGE5ODcwZWQgcHkzaworNTc1NjggNTgwNWZlMTdjYjJkYzYwNDFlZGFiZDMzZmZkNGFjYzdkZDdhOGEzOSBsZWdhY3ktdHJ1bmsKKzU3NTY5IDdhNjJjMjQ2OWRlYTJlNGU5YzNmNjk0NjVmMzkyZmU2NjdlZTAyY2MgcHkzaworNTc1NzAgMjRhMDUzMjU2NzhiMTNhZTNkMWFjMWY1YjRiOWQwODY4MTljM2QwYiBsZWdhY3ktdHJ1bmsKKzU3NTcyIGNiMjhlMTRlZTgwODBkNTI4ZTAxYTk0M2E2MmIxOWNkMzQ3OWRjOWQgcHkzaworNTc1NzMgMDQ0YjYyODU4MTVmMThiMjMxZDEzNTNhNzk4ZTZjYjhhOGIxNTY4YiBweTNrCis1NzU3NCA3OTczMTA0MDIxN2I1ZjY1ZWY1YmU0NTQzYWUxNTAyNWY5YzEyODM2IGxlZ2FjeS10cnVuaworNTc1NzUgZTIwZDViNjQxODljOTQzZmYwZDE5NDFkYTM5NjA5NzhkOWQ3NDc2YyBsZWdhY3ktdHJ1bmsKKzU3NTc2IDNmMGYxYzc3NWQ5ZDQyZmExODBjM2Q1YmExZDI5MjkxN2UwMGUyZWUgcHkzaworNTc1NzcgOWZiODMzMWNlYzJjZmU3M2RlNzUzNGY1N2Q3NWY5NjkwYTY5MTFjZCBweTNrCis1NzU3OCA4ZTAxZjI2MjYyY2Y5ZTRkMDBhOGJiN2Q0MzFlZGM2NzNjNzkxYzBiIHB5M2sKKzU3NTgwIDkyMjA5MzFlNDc0MWJmMDRmOTY3NWFhZjQ4YmUwYjQyMjM2MzcxMmQgcHkzaworNTc1ODEgYzcyYTNjYzIxZWY3M2UxMzIzNTJjMjlmMzIzYzllMjFhNDJiNTcwNCBweTNrCis1NzU4MiBhZWNiZjU2Nzg3MDQ1YzA5NjgzMTgxZDQ4NTk1MzQ3MmZhNDA2MmY3IHB5M2sKKzU3NTgzIDg3MTdiNGY4ZTFlNWVkODMzMDQ0MWJiZGIyNTU5YzAxN2JlNmIwMWUgcHkzaworNTc1ODQgYjExMGJhYzlkZjQwOTAyM2I3NGIyMGI2ZjY0YzViYjhiMmM1MzM1YiBweTNrCis1NzU4NSAzODRmOWQ5Yzc1YTAyZmZlODY3YTAxNDJiMTI0MjZhNmJjYmU5MTlmIHB5M2sKKzU3NTg2IGI0YjE0YzRiZWI4MmNhYjg3ZTNhMzY1YjUzYWM5ZDBiYzM5N2U1MzEgcHkzaworNTc1ODcgMDBjYmIzM2NiODY0MGY4ZmRkNzk2ODMzZmVjZTBjZDgzNzBkYmRjYSBweTNrCis1NzU4OCBmZDFmY2JhNWUxNmIwNTYzMmUwMDUyYzYyYzFjNjUwYmVjMGE2YTc1IHB5M2sKKzU3NTg5IGYzYjBhYzRlNjg0ZjlkZGNhOTQ1OGRmMGI1YjM0Yjc0ZjMwNmMzYzQgcHkzaworNTc1OTAgN2JlMGUwMGIwMzY2ZDlkZGNhYzdlZDgzOGZhNTk3NjBiNDU1ZmQzYiBweTNrCis1NzU5MiAxMWVjNDA5N2ZhZmU3MTU0YTFkM2JiZjI0MmJiNDVhZjVhZmEyY2QyIHB5M2sKKzU3NTkzIGNiZDUwZWNlM2I2MTJjMDhhNjY5ZDIwY2ZlM2Q4MzVhMjU1YjM5NzMgcHkzaworNTc1OTQgYWVlMjFlMGM5YTcwZjM5MDYwM2RkZWNiNWZjZjFmZmVhODdhNjc0YiBweTNrCis1NzU5NSBhYTM5NTBmMTExZDlmMTJhNGFkMGMwYjM3NGMxNTRlYjk2OTM1ZWU5IHB5M2sKKzU3NTk2IGI4NDY1ZjAyZmNiMWVlNmZjMjQ2NTUyZWQwMDIwNTU0OTFmYzdlNmQgcHkzaworNTc2MDEgZmRlZjMyYmJiY2I4NDA3OWFmYzkzYmY3NmUzMDM4NTA2Mjc5OWU4YyBweTNrCis1NzYwMiA0OWRjZTNkYTBlODAzY2YzYTJlYzM5NjZiYjhmMmM5NTllMjc1ZTkxIHB5M2sKKzU3NjAzIGUwYjZiNjI4N2M2YjIzZjdiMzk2NGYxNDg2MmE1MTU4YzlmNWM0M2UgcHkzaworNTc2MDQgYmM5OGFmOTcyNjc4ZDg4ZWI3MzhiYjNkYWY5YzQ1YzY3N2M0M2E5NSBweTNrCis1NzYwNSBlODM2YzEyYzU0YzJmNDQ2MGY5M2YyYjkyNTdhZTgxYjUyZmE5N2MyIHB5M2sKKzU3NjA2IDgzYzEzMWRmZGQ4NGMxODg5NGNjYzgzMWRkYjI2OGFjOGY4ODUxNDAgcHkzaworNTc2MDcgMWRmZTY4NWI4NTc2YmZlYTE4NGE1ZGU1ZWJmNTg0NzJiNGUxZTE2NSBweTNrCis1NzYwOCAxNzFiOWYxNWMyMjNhNGJkOWU4OGVkMWExN2IwOTVkNWFlZGM4NDI4IHB5M2sKKzU3NjA5IDMyNDMyMGQ5NDYxMDJmMTBiOWIxZjljYWM3OTQ1NTdhM2I3MDg0Y2EgcHkzaworNTc2MTAgNzJhZmFmOWFiMzBiYTc5YmU1NDE3MjVhODAwOWViN2NlZWIxODk3ZSBweTNrCis1NzYxMSA4YjA2ZjUxNDc0NDU4NjE5ZjNhYWJkNDNhMTFlODQxYjRjYzYyMGRkIGxlZ2FjeS10cnVuaworNTc2MTIgNjhmZTM1MDkwNzU5MjgxODgxMjRmNjQ3ODcxYWY0YmEyMGRhMTJlMiBsZWdhY3ktdHJ1bmsKKzU3NjEzIDlhMTNlOGZiMWEzYjZjYzljNzhkNjQ5NmRiOGZjZTEwMDRlMmY4N2UgcHkzaworNTc2MTQgOTZkYTFiOWRlZThkYjJjMTk2Njk3MzljYjJkMGM3MDQyZWYxM2NkZSBsZWdhY3ktdHJ1bmsKKzU3NjE1IDRlY2JhZTA3NDgxZjIxNGExMWRkNTM5OTQ3MTIwODdlZGY0M2JiZDIgcHkzaworNTc2MTYgM2JmMmNhZDhmMjJhOWNlMTAxNzcyZWRhN2Y1OWUwYjAyMWExOTIyZCBsZWdhY3ktdHJ1bmsKKzU3NjE3IDY2ZTM2Y2U1YTU2YzZmMjYyYWEyMTBkMTA0ZTMxMGYyZDQzMmQxYTQgcmVsZWFzZTI1LW1haW50Cis1NzYxOSA5NjIwMTM0MDEwYTVhZDJlNTdmOWFlMWJkNzZmYzNjZTJiN2EyZjQ3IGxlZ2FjeS10cnVuaworNTc2MjAgZDE3ODlkNGZmMDBjNmVjNjZlMGNmMzllZjNhNGZiZTc4YmQ1ZTdhYyBsZWdhY3ktdHJ1bmsKKzU3NjIxIGNhYWQzNWU4MjEzYjhhN2VmZDc0ZjE5YjU1YjYyNTExMzFjYzUzZDUgYWxleC1weTNrCis1NzYyMiAxZWRjNmUxN2FlMTg1ZDQyMGQ3MmM2NzJkMTgxYTU3MWY4MzZjNGM5IGxlZ2FjeS10cnVuaworNTc2MjMgMjVhODkzZDY3YzY0MTg0MzA1OTY5Y2QxNjA3YzVmZWM1NTlhYWRkNiBkZWNpbWFsLWJyYW5jaAorNTc2MjQgMjdmMDI4OWI2ODM1MWNlOGM0MmZiYjIxNzBlMWFhMWIwNzhjMjQ2YiBweTNrCis1NzYyNSAzMDUxMTA2OGQzZDQ4MmU5MTRlNmQ2NTU0MzkyNmI3MjgzNGE4YjVlIHB5M2sKKzU3NjI2IGU2YTlmY2QxYjQ0ZTgxNTRmYjI1YWQ5ZWE3YTg0MDk2YjhmZGQ5OWMgbGVnYWN5LXRydW5rCis1NzYyNyA1MzNmYjUzMjFkNmJjMWQ0YzA4ZWMwYzBjMzYzNjE0NzY3ZjIxZjYxIHJlbGVhc2UyNS1tYWludAorNTc2MjggOGJiMWZlMWE3MmE0YTMyYjVlODBiZmU0ZTRhNjc0Y2FjMWI2NzkyMCBsZWdhY3ktdHJ1bmsKKzU3NjI5IDg5YzRmZjk3ZmQ4OTNlY2EwNzVhY2FjYTEyNDU1OWYxMTFlNjg3ZWIgYWxleC1weTNrCis1NzYzMCBkNjlkODA2MDBjZjE3MjE3NjY1ZGQ0MjQzMDQ2MGM2YWE0OTgyY2YzIGFsZXgtcHkzaworNTc2MzEgZmIyY2Y2ZThjZDg2MTE1Mzk3MzljODY3OTIzNTE2ZmRjYWI5NGZhYyBsZWdhY3ktdHJ1bmsKKzU3NjMyIGRlYzJlYzgyNjg3NDExN2FiMDkzNDE5OWY2NGFjOGIwOTdkMGNlNDggcHkzaworNTc2MzMgMWEyMzBjYjc3ZjA1Y2JlYzZkNTUwZGE3NjdmZmU4MDMwZDJhZmI3OSBsZWdhY3ktdHJ1bmsKKzU3NjM0IGI5MmZiMjRjNWQ0YjUwNjFiNjI5ZDhjMTVkMDNlOWI1ODAwOWJmZGEgcmVsZWFzZTI1LW1haW50Cis1NzYzNSBiMmRmNDRiOWMyNTEzNDhkN2YxOGU4NGE4YmZkNWVhYjNlOGExMjdhIHB5M2sKKzU3NjM2IGE3OTUxYWJiODUzNGIzMTAyYjk2MDU3YjhhYWM2MzZmZjEwYTBiNzIgcHkzaworNTc2MzcgZDFhMTdjZDI2YTRiMDJjZmVmMDVjZGQwNzUzNGIzMWY0ZmFlZDgxMSBweTNrCis1NzYzOCAzN2JlYWUwOWZjYjBmZDVmZWE5YjNkYzc4YTEzNzRmYzkzNWVmN2ZmIHB5M2sKKzU3NjM5IDUwYjc4N2NiYThmMWNkNmQ3NWE2ZjY5N2FjYTg1NWUzYWY2NWRlYmUgcHkzaworNTc2NDAgNzEzZmJhMzRkNjZiODhiNDExZGZlNjc5ZGUxOTA3MTE2ODljZmFjNiBweTNrCis1NzY0MSAwZTUxMGFmZjVlOWFlMTU0MmI4M2QwZmYzY2I1MmRhMDgzMzlhMzk1IHB5M2sKKzU3NjQyIGNiNWFlMDIwYTA2MGViYTc2Yjg5MGVlMjk3MDViNDQ4N2FhNDYwZDAgcHkzaworNTc2NDMgOWY3NGI2OTkwNTZhNDY1NmQ3N2RjMjNlNzVjMGQyOGI3Nzg4Mzc1NyBweTNrCis1NzY0NCAwNWM0NzM4ZjhhNDNjNzMzMGQ3Mjk4MzYxMjFiZTk5OGFlY2M4NGZiIHB5M2sKKzU3NjQ1IDFjZTg5ZjI1NzhjZjgxZGZiYzYwMTM3NjFkMDExNWE3MmE1NDU1ZDUgcHkzaworNTc2NDYgMGU5MDY1MTAyNjJkMWE5OGU0OThiMTg1ZDY5MTBiODk4ZjhhOGQxOCBweTNrCis1NzY0NyA3MWNkNTU5OGI3NGQ2ZDBiODAwYTgxMmI0OWUwYmUwODhlN2JjNmI5IHB5M2sKKzU3NjQ4IDZiM2U4YWE1NGRkOWQ5MTg3OTlkNDFmN2FiMTdjYjVjZWJlMzkzMzMgcHkzaworNTc2NDkgNTQyYjliMTExOTE1Y2VkNjQwYjU5NmYwMmNlY2VmNjBiMDg5ZGMwNyBweTNrCis1NzY1MCBkZjhlZjljODM3MWE0NTUwMjkwODQ5ZTJhNTQ3MDM5ZDFiYzhkYjdjIGxlZ2FjeS10cnVuaworNTc2NTEgODI2MDIzMTVlYWViOWU3MTBlZWUxMTUwYTJmOWU5ZjQ3YmFjZGZjZSBsZWdhY3ktdHJ1bmsKKzU3NjUyIDlkZjkxMWQ2NTRhZmNiYzRiMjk1YzhhM2VmNzQ4ZDBiZTFlMDBjNmUgcHkzaworNTc2NTMgMGY4MmZjNDJmZDY4MWFmOTI0OTRiMWMxZDFmZjhlZWY1NTdmMjllMyBweTNrCis1NzY1NCA3ZmRlNmVkZjJiOTIwMTI4MjY1YThkNWJkZjFjYmNjMzhjMDU1MTliIHB5M2sKKzU3NjU1IDc5MTkxYmRmYTIzYjUyYzI5YWFkNjgxOTk4OTU0MTRhMDIxMjA2NjEgcHkzaworNTc2NTYgM2E1NmU3M2FlOTE5NTc0NTlhMTMzOWI0NTk1ODMwYzU4ZGM0Y2U3NyBweTNrCis1NzY1NyBmNDg1MWRjMGRmMDQxNzQ1NzZmMTIwMWQ2MWIwZWVhNWFjMTRjMGY2IHB5M2sKKzU3NjU4IDcwNzNmNDgxNDdiZGFmYzBiMGI0OGY4ZTQxZTdiMzI5OTZhNjg2ZTAgcHkzaworNTc2NTkgNGJlYmIyMjgxN2NmZWVkYjNmMjUwNjY5Y2Y1ZDRhYTJiYmY5M2QyOCBweTNrCis1NzY2MCAwZDI4YTUyMGM5YjE4ZWExOTZjMTcwYjNhN2QyOWIyMjAxYTQ5NDU5IHB5M2sKKzU3NjYxIDE3MjI0NTkyNWFlNjAzZDE2MTJkYWVlZGJhMDk0MTZjMWQ1NmZjZGQgcHkzaworNTc2NjIgYTAzNTMyNjA3ZDFjYTdhODNkMTVhMGNlNzhmMTljOTdhNTNiNmJiYiBweTNrCis1NzY2MyAzM2U4N2Y5NzBhMjJjMDMyMzk1MmQ4Zjg5ZDFmYTQ1MmYyYTNlNmU5IHB5M2sKKzU3NjY0IGVjZGEzMzA1MTczOWQ5NmU5YWVmZGE2YTIzM2IzZWFkNjYwMzQ2MWIgcHkzaworNTc2NjUgOTg4NTRjNzYyOWM4ZTAzM2YzZjhjMzQ1OTJmNThkYTA2MzkyNGFmYyBweTNrCis1NzY2NiBhYmVhNTY1MzA0MDQ5OTY1YzhhODgyMmRmMDk0M2M4MDdlOTg2NmUxIHB5M2sKKzU3NjY3IDI1MGE5ZDA3YzJjYzJiNmYzODMzMzVmMmUyN2E5MGQ4ZDY4NWZlMjcgcHkzaworNTc2NjggNGQ2YzEzNDQzNDBjMmM3MmEwYmYzNDIwYWY4NjFhNTg4ODYyYjYzNSBweTNrCis1NzY2OSBiOTIyNmNhZDlkZmRiMDhiZGJjN2I0MWQ5ZTMwYzhiNTMwOTU1OTdjIHB5M2sKKzU3NjcwIGRjZDI4NWMwNzgxMzVjNTk5Mzg1ODBkMzgyMGQzMTI3NDVmM2JiMjMgcHkzaworNTc2NzEgZGMwZjBmZmQ0MjU3MjhlNzIwNzg2NDE5M2I2Y2Y0NTM2NWNmZjYxNSBweTNrCis1NzY3MiA5NmJkZTA4ODJlNWY0YTQ3ODQ4MDZiNWM3MjU5M2YzMDEwNDMwZWY1IHB5M2sKKzU3NjczIGVhZmM4YjIzNTg5ZDEzYTAwODUwYjgxM2VlNWUyYmI2NDQxMDQ5MjUgcHkzaworNTc2NzQgZTE0MmNkNGI1NzEwMWM1YzIzNGZkMjk2MzY1NmVlZTlhNTQ5N2I5ZCBweTNrCis1NzY3NSBjZDgwZWI5ODk3MjgzZjM1ODNhNmQyYjc2NmVjOGUwYWIxMDAzN2U1IHB5M2sKKzU3Njc2IGFhNTdjZWUxMTYzMTNmNmFmZTExOTU1MjZmNzI5M2IwMzIyN2MwNjIgcHkzaworNTc2NzcgYjc1NGMwOTA4ODk3ZWJiMjYzOTJkNDFlODMzYjhiZGE1MDE5MDA1OCBweTNrCis1NzY3OCBhYzhiMzg5ZjAwMjVkNzM3YjQ0Y2Q0Mjg3OTA3Njc5ZDlmMjQ4YjFiIHB5M2sKKzU3Njc5IDVmZGU1ZDY5NjRkN2NkNzE5NDVlZjM2N2U1NjhiNzUzMGI3MWE5NTkgcHkzaworNTc2ODAgNDc3MTYzOWZjMDQ5OTYzOWZjZjk3MTE5OGYwODRlN2RlNTE2MGFiOSBsZWdhY3ktdHJ1bmsKKzU3NjgxIDA3ZDY3YTk3MjVhNzhlMWIxNjc2MDM5ZWU4MDQxMjc1ZjFjMTlkZmMgcHkzaworNTc2ODIgYWI4OWUxMzBkNjRhODRmYWRmMzFkNjE5OTkyNzc5NzljZjdkODA1NSBweTNrCis1NzY4MyA2ZTM1YzdjMTc2MDRlNmFmMjhmMGUyN2Q5NmI1YzUzMTU0YjhiMmJkIHB5M2sKKzU3Njg0IDBkY2Q3ZjA4NzM5YWM4MDcyNzQ1MjRmZmQ4YjMxZDA2YTdjNTdiNjIgcHkzaworNTc2ODUgODhiYjQ1OWZkYmY1N2M3Mjg2MWY5MDAwMTMwYmQ2MGRhMDE2N2IxOCBweTNrCis1NzY4NiA5ODM0MzAxYTJmZDNlMDE3ODcyZmYxM2ZhOWZjMTJiNTg3ZTQzODg0IHB5M2sKKzU3Njg3IDBjZDQwMWJmMmFhN2RkYWE3NGJmMDFlMzI1MTNlZTAyYmNhYWU0ZTkgcHkzaworNTc2ODggOTUwODQ4MTE3Mzk3ZDcyNGQ0NDBjYTFhOWFhNzZkYmI1MDBlN2NkNCBweTNrCis1NzY4OSAwMTA0ZDc5OWRkNDQ1NDJiMjU4MTIyY2IwMTRmZGQ1YzJiZmFhZTI4IHB5M2sKKzU3NjkwIDE2NTkzNGJjNDQyOTYxMDQ2MDc0MjQ5M2Y5YTNiNjBmZWE5ZDhhNDcgcHkzaworNTc2OTEgZDVmM2MyZjQxNmYyYTg4YjNlNGM2NjhjYzExNzAyZTg5YWE4MDEyZiBweTNrCis1NzY5MiA5MDdhNDVkZjEyOTUzYTU4YWNhOGI0NGRlNjA3YjA3NWYzYmRhYTYxIHB5M2sKKzU3NjkzIGEzNDY0NGE2NTdmNWEyNmZmNmQ1MmM2NTRmZWQ0MjllOWYyNTRjMzAgcHkzaworNTc2OTUgMzkxOGE4YTUxYmQxOTdlOGNmYzUzMWRiNGFkMDYwNWVmMmM0NDc3NCBweTNrCis1NzY5NiA5NTJiZjZhNDRjMjc3ZjcwMzllZjhlMGY0YTYzMDY1MTQ2MmUzYTkxIHB5M2sKKzU3Njk3IDEzMjFiYTBiNjcwZjEwMTAyMDc0ZTdlMDU3NjRkYzc4YmJlMDdkYWIgcHkzaworNTc2OTggYjk2Y2EzNTA4OTFkMWRhMmYyZWYzYjlkOTMwYTU3YmZmYzY0M2Y3NSBweTNrCis1NzY5OSBhNmQzOTMwYjU2MTM4MGFhNmRiM2MxOGNiZDI2NTA0NGVhOTVjNWJjIHB5M2sKKzU3NzAwIDkwNzU3MTJkZWU4ZmQ0ODZlMDc1N2IxNTdjMDBmODgyYzdkYTE4NmMgcHkzaworNTc3MDEgODA3N2VlNDlmYWRmZGNkMzZiMWUwM2ZkMzM5NTg4YjkyZTQ5MjY2YyBweTNrCis1NzcwMiA3MDgwMzNlZDk1MTU5NDhkMDEzZWI5NmNlYzVkMTgzYzQ0MzgyNDk1IHB5M2sKKzU3NzAzIGNjMGZlMDU2YmFiZGY1YTk2ZjQxYTM4ZTI5MWEyOWZkNjg5MTFhMjQgcHkzaworNTc3MDQgYWMyZDVkMzQ2MjUyYTI0NDc0OTcwZWZmNTQyYmZiZDE3MjlkZTdlNCBweTNrCis1NzcwNSBiNWQ5YzE5NWEwYzUzYTk3YjI1ZGQ1MzMzOGJlMjdkNmVkMzNjMjY3IHB5M2sKKzU3NzA2IGUwOTNjYTU1OWMyM2NlYmZlZTc2NTNhZGZiODdlZGMzN2Q3OGQxMjIgcHkzaworNTc3MDcgOGNjZjZmNGM3ZjEyNTY4NTcwNGU3ZjU0YWI1ZDA1MDg0NDlmZjMzOCBweTNrCis1NzcwOCA0Mjc1NDIwOGE2NTQ0Y2ExOTM2NGY0NDdjY2RhOGM5NGYzZjlhNDU0IHB5M2sKKzU3NzA5IGU4MmM4MGEwNDQ4ZDViNTY1YzZmYzM1YTA2NTE1YzAyODc3YTk0OWEgcHkzaworNTc3MTAgY2M3ZTkxNGEyMmQ5Y2M3NDBmNmMyOTlmODM4ZGRkNDYzOWFlMDU4NCBweTNrCis1NzcxMSA2ZTEwMTNiOTIzZTNjMWM4MmFjMDVlYjFjMWI5NjZkMWM1ODlmZWRmIHB5M2sKKzU3NzEzIGZmYTQyMzNkZTg2NjIyN2FkYTBkMjc0ZGE0ZDQ1NGE5OTgxYWJlOTYgcHkzaworNTc3MTQgOTYyNDgzMmYzMTU2ZjM2Zjc3N2MxY2RmN2M4MTBkYzRkYWQ5NWIxYiBsZWdhY3ktdHJ1bmsKKzU3NzE1IGExMTM2NzMxN2NhMGZjY2ZhZTk0ZDIxOWQyNjQ2M2I5NGViOTgxYTMgcHkzaworNTc3MTYgOGIwYjExNDZkOTA4MDVkZTU0Yjg5ZDFmZDZmMWJkNjlhMWFjZjlmOCBsZWdhY3ktdHJ1bmsKKzU3NzE3IDExMzIyMGRhY2U2NDZiYjMxMGI3NTNjYmEzN2RlNDA3ZGU4MmE4MGUgbGVnYWN5LXRydW5rCis1NzcxOCAzOWQ5ZTUwMDBlN2NmNGMyY2E0NWIwZDAzZGEwNWVjNTgxMDU4ZGQyIHB5M2sKKzU3NzE5IGRmNTNjNTc2YzUzMWVjZTFkNDdiYzA1MWQ5NDc2Njc2Mzg5M2MwMDcgcHkzaworNTc3MjAgYjZlMzNiNWVhYzQwZmFlMDUyZTFhYzA3MGRmOWM3M2FhODk2ZDBhYyBweTNrCis1NzcyMSAwOGY3YTZiMjVjOGYyYmQ0NjYwNTcyZWQ1YTc4ZmY1ZTcyOTBkNzg1IHB5M2sKKzU3NzIyIDY1MDBjOGJkN2ZlYWI3MDUwMTg3ZjU5NzUyODc5MmY1MWM3YmZkMTcgcHkzaworNTc3MjMgM2E3YmRiMGE1OTQ4MmJhMDEzMWFhNThlNjMzNDM4MTIzNzRhOGUyNyBsZWdhY3ktdHJ1bmsKKzU3NzI0IDU2YWZkZDZkNmNmNzhlOTFhMjY2YzAyYWNmYjA4ZjYyNTRiZWRjZDQgcHkzaworNTc3MjUgMjI3Y2NkZDBmOGRiN2FmMjhiZmYzZjdjYTc2NTkwYzcxYzllMjU2MiBweTNrCis1NzcyNiA5NzNkYTJlYmMyZDBmMzdkMGFkMDU3ODllYjIyNmRmMzgwOWNmMjQ5IGxlZ2FjeS10cnVuaworNTc3MjcgNmZjYjg3M2YzOTZjNjg4OWRlYzU5YTdhYTRhNzkwODFkNzQ3MTcyMCBsZWdhY3ktdHJ1bmsKKzU3NzI4IGQ4M2MyYjIxYWMyNmVjMmVjZjQyZThjYzQ1YzdhMjYzYmNkOWNmZGIgcHkzaworNTc3MjkgN2VhNjg4ODU2MmQxZDM4NDcwMzNjMTE2NmMzMTVlMGM4NGY2OTdiZSBweTNrCis1NzczMCAzYmYxYjhiMzQwODAzMmQ5MDdjYWY5ZjU0YzY1MjJiOWZhMjA0ZGU2IGxlZ2FjeS10cnVuaworNTc3MzEgN2RmZWQxY2ZlNzYyYzU0ZTY0NDVhMGQxNjQxZmVmZmQ2NmIyMTA1OSBweTNrCis1NzczMiA1YjdhYWZhZGYyMjMwMTk0ZGU0ZTU3ZWViMjQ0ODU4YmNkNTBjMzkxIHB5M2sKKzU3NzMzIDBhMzhjMTI5NzE3YTMxNTVlNzZhOWJjNDI2Y2RlZDBjMzhjMDIxNmYgcHkzaworNTc3MzQgZDYwMzY3YTEzMTZmNDM5MGQ3NzgyNTI4MmUzYTRkNmUwNDM4Yzk2YiBweTNrCis1NzczNSA3ODNlYTY4MjFlMDQ3MWEzNTc3YzhhOTRhOWE3ZjlkODVmNjA1Yjc0IHB5M2sKKzU3NzM2IDFhOTAxYjFjN2NkMzE4NjE1MjcyNWE2MWNiMTdkM2E1NGM1ZWUzZDUgcHkzaworNTc3MzggZTdhMzkwYTM2ZWM4ZjczYmMwNDgxMWM4ZDRlMjc5NTA2NzY1NDE2OSBweTNrCis1NzczOSAwMmQxYjVlN2JlZjU2OGZjYTJiYWY1MzAwNjZmZjliZjhiYjcxOTU5IHB5M2sKKzU3NzQyIDA5M2ZkODRmYTc3YzQ1NDkzZGExN2MyOTM4NWE3ZTEzYjY0NThmM2QgcHkzaworNTc3NDMgNmMyMDNiN2IxZTBhMTE5N2NmZDFhNzY3M2VmMWVlYzYzZGU2MWJmNCBsZWdhY3ktdHJ1bmsKKzU3NzQ0IDZiYmVjYzAyOGJjZTI2NmEwNzIzYzc5Nzc3MDVlNjZiYTdlYTEyZTMgcHkzaworNTc3NDUgYTU1MzI0Yzk2MDJkNjIxZmFlM2QxMTFiNTVjN2ZlNjEyYjYxZGYxOCBweTNrCis1Nzc0NyBiZWFmNjYzMDgxNDg4NGZjZTczODdhN2E2MThkNjM5MWQ3MTZlZmFkIGxlZ2FjeS10cnVuaworNTc3NDggNjZhNWM0YmE5MzhlYWNhZGY0NDU1ZmUxYjJlNjcxZTM0MGM3NzViOCBsZWdhY3ktdHJ1bmsKKzU3NzQ5IGM0YTk2ZGU1ZTQ0ZTU5ZjhiNzg5NjE5Njg1ZmRkNzhiZjUyYzlhZmIgcHkzaworNTc3NTAgZmY5MThmY2M1N2QyYWEzOTMxMDMzZGE4NmQ1ZTE1MDU2ZTVmZjY0MSBsZWdhY3ktdHJ1bmsKKzU3NzUxIDIzMzY0NDk2ZGYzMTM3NGMyNTExMTM2MmRkNjU3MGUxNzJjZDZkMDIgcHkzaworNTc3NTIgZGI5YTE3NjE5MGQzNjBkNzg5NTFkMmRlY2ZiMGZhMmIwYjJkZTM2ZCBweTNrCis1Nzc1MyA1MDRjMTVmMDVkZjM1NDRhMzlmNmU4MzMxYzJjNzNhMzUyNDdhYWJjIHB5M2sKKzU3NzU0IDBmZDFiNGUyZjRlZTU4YWVkZGRkYzdjYTA2MzE5YTI0YTM0ZDg1YjQgcmVsZWFzZTI1LW1haW50Cis1Nzc1NSBkY2VkZDMyZjA2ZGUzNzExZDBkNTFkNGU0MjkxNzhkZDMxYmVjNDMzIHB5M2sKKzU3NzU2IDNlM2JjODQxMjJkN2JmN2NmNGQxZWViZGNiZTgzYTYyOTUxMjM5YWQgcHkzaworNTc3NTcgYmYxMWVkNDBiMTA1OGRiNGEwMjVkNzQ0NDczZTBmN2RkZThkZWQwNyBweTNrCis1Nzc1OCA4N2EwZmRjYWE4NGE2NDQ5ZGYyZGYxODAyODJmOTUxYmU4YjU3N2ZlIHB5M2sKKzU3NzU5IGFlOTA0MjBkMjYzNTVlMjcxODFlOTE0ZDcyYjcwNmQzZWU0OGM1NmIgcmVsZWFzZTI1LW1haW50Cis1Nzc2MCA2OGY4YjIzOTMyNDM3N2UyZmJkNTEwMTEzMDIzYzE0ZDFlOWFiYzcxIGxlZ2FjeS10cnVuaworNTc3NjEgYWZiZjZmZDc3OTgwNzlkZTI2ZGMyMTZmMWZiYWFmYmUxNjQ5ZTk5MSBweTNrCis1Nzc2MiAyMGQ4ZDExYzliMjEzODFmNWM4NjlhNTVhOGZiMmViZTE5YTRjZDcwIGxlZ2FjeS10cnVuaworNTc3NjMgY2IyNTBiMDQ3M2ZjYjZmNzY5OTJjYzZiMDZmMGIzMmZiYWRiNmZmOSBweTNrCis1Nzc2NCA1ZDMxNGMzZTk4ZWRlNTY4NWYwNDZkMDBhODk5NjQ2NmU0NjUyY2NkIGxlZ2FjeS10cnVuaworNTc3NjUgOGRmZDE4MDgzNTQwZDkwYmVhOGY5OGU0M2M1Yzk3YmYxNjg2ZWJlMiByZWxlYXNlMjUtbWFpbnQKKzU3NzY2IDFiY2RlYTFkYzhjNzUwZjdkYzczZDBhZWVhZmQ0MGI4OGRmNWRmNzcgcHkzaworNTc3NjcgMmUzYzAyYzYyNWRlYWMzNzA1YTNiNzEyNmYwYzJiMDgwODQ3NTk1YSBweTNrCis1Nzc2OCA4Yzg5YjhjNDhiNmNiOTBmZTFkNThkZjEwODVhMjFhOGU5NjY5MWE5IHB5M2sKKzU3NzY5IGE2YmQzZGFiM2ViOGM0ZWM0YTBiNmM5NjVmOTJhZjAzODZjMjJiYWMgbGVnYWN5LXRydW5rCis1Nzc3MCA5MmU0N2QzMzg4NGU0N2U4OWYzYTZiMTM2NzgwNWYzODQxMTAwMDliIHB5M2sKKzU3NzcxIDFkNTdmYjdlZmIxNWIwZGJhNGI2NzQwYzE3MzU2MGY4OTUxNzYxNTkgbGVnYWN5LXRydW5rCis1Nzc3MiBkZDA2ODg3NDBkMjQzZGI4NjM5ZmM4YjdkYzgwODQwN2E4MTk3ZDJjIHB5M2sKKzU3NzczIDRhMDdhMjg4ZjVjNDlhZjRlM2FlOGExODI0YmI3YjJmMDQxZGExZTEgcHkzaworNTc3NzQgNjk4OTA2YzJmNDY5MTMwYWJiMDlmYWVkZTdkZmE4MThjZjQ1MTJjZiBweTNrCis1Nzc3NSBhOWFjYzA2ZGE1N2FiNDQ0MDk2Yzc1ZTNhMDdjYWRkYmQwOTA2ZjVjIHB5M2sKKzU3Nzc2IDU0ZGVmMThlYjMxZmRmZDE2YTU3MTFkNzUzNjM1ZjY4ZTZiMjUyNDUgbGVnYWN5LXRydW5rCis1Nzc3OCA0NDQxYzM4NzY1MGQ5Yzg2MzIwMzU4M2Y4ZDk5NThhNWQxNTJkOWNhIHB5M2sKKzU3Nzc5IDRlNmI0YmE2MGMzYjI4NDIwYmE0ZTJjNWJmMTZmZTIzOGUxMjQzNTAgcHkzaworNTc3ODAgM2M0MzI5NDMxYmJjNDg4MmJmOWVlM2MzODFmMTQzMDlkN2JmMGM4YyBweTNrCis1Nzc4MSAzMmY2ZGQ5NWQxYmE3Y2E3ZjJiMjYyMDFkMDBhMjc1MDRlODBkYWRmIGRlY2ltYWwtYnJhbmNoCis1Nzc4MiBlOTFkMmJmNzFmZGVkODdhYzNkMTMxY2JjNGI1YTBhOWIyNGYwZjVkIGRlY2ltYWwtYnJhbmNoCis1Nzc4MyA5ODFlY2M1MjY3MDMwM2Q3ZDIzMWZmN2FhOTU1ZGVmMjcxOGQ1NTc4IHB5M2sKKzU3Nzg0IGQyZTlkYWRlZGNjNmQ5YWM4YTI3ZTUzZTMwZDc2ZDNiYmJiNGZlMjMgZGVjaW1hbC1icmFuY2gKKzU3Nzg4IGRlZTRjNzhlYTkxMGM4NGJkMThhYjE2ZDk2OTMxMTRiZGQ0M2UyYjkgcHkzaworNTc3ODkgNjkxYjVjY2VmMGM4MTFiYmZiMWQ0NTk2NzU2OTU2NGE3ZWE3NzA3ZCBkZWNpbWFsLWJyYW5jaAorNTc3OTAgZGQ2Y2YwMGMxNzk0OTRhN2VjY2M3OTI4YWUyMzE1ODZiZmI5YmRmYiBweTNrCis1Nzc5MSA5ZmIwMzI3YjMxMTAwOTNjOWE0MjM1M2QyNTg0YTE3N2ViYzUzOWFkIHB5M2sKKzU3NzkyIGVlZDE1ZWM2Yjc1OTk1YmNlNTA2NWViNTVjZjk2MWRkNDViN2RmYmYgcHkzaworNTc3OTMgYTg5ZDQ2OWUxZmY3NzcxNjkxNGNlMWE0MjQ0ZmE1MjlhNzFjZTY4YSBweTNrCis1Nzc5NCA1N2UzZjZmMGE1ODhjMDJmMjYxMmVlMzA5OTI0NWE5MjI4ZDViOGRiIHB5M2sKKzU3Nzk1IDAxMzVmMGU2NzZiZDAxYjQxMTNhYWE0NmMzY2VkZmRlNWE1N2RkNTIgZGVjaW1hbC1icmFuY2gKKzU3Nzk2IGVlZTViZGQzNzE1ODc4NDA5MmU0YzJlN2YyZjM4MDk2MzQ2MmIwMTcgcHkzaworNTc3OTcgY2RiN2I5ZjgyY2M0NTYwODdmODFjNTk0YTgwNDZiZWNhNjYxODkyMiBweTNrCis1Nzc5OCA3YjAyMzdjYmQwZWQxMTk0NjQwZjhlMGY4MTUzOTQwN2E1YTZhZmVjIHB5M2sKKzU3Nzk5IDkwYzcxNWJjN2QzMDVkYTNkMTczNzNhNjdmOTU0ZjdhN2ZlOTk3MWYgcHkzaworNTc4MDAgN2VjMDRjYjI2MmQyMWUyNGRlNDNiZTg0ZGNhNGQyMDJkODAwODFiMyBweTNrCis1NzgwMSA4NDU0YTJiZmFlMDQ0NTZmMGY0NTBiOWUwYWUzMzIwNzE2ZjY5MjAxIHB5M2sKKzU3ODAyIDk1ZDZmZTJlOGUwZTkxZjFjOTM2YTNkYmYzMDlhODQ2M2E5ZWYyNjkgcHkzaworNTc4MDMgMGNmNzAwNDY0MTc3NmQ3MjM3ZGY0MTQxYjE0NmQ2NGY4ZmNhYTFkZSBweTNrCis1NzgwNCA3ZWExMzY3YmEyNzU4OGI0MmJkZWNlMDdjNGU3ZmQ2MDcwZjZiNjNkIHB5M2sKKzU3ODA1IDg4YWFhMzgwZjA5MTdjMjcwMDc0ZDBhYjhlMmU3OWI4N2U1MDk2N2IgcHkzaworNTc4MDYgMTRlZTY3MDU1N2NmMDAwODAxNTUwYzE3NmFmNDQwZjFmNTBhZTk5YyBweTNrCis1NzgwNyBmZWMyYzAyOTlhOGNiYWQyMWIyZGVmOTNmYTg2MWI4NzlmZTdmNDkxIHB5M2sKKzU3ODA4IDg4MzRlNjU2ODNlN2I0MTI4N2Q2ZDc4NGZiYmNiOGI0NDJlYmMwNDMgcHkzaworNTc4MDkgMzQyNDgwMzMzN2EzNzBkNjk5Y2YyMTZiZmNiY2RiMTM5ZTJjYTUxMiBweTNrCis1NzgxMCA4NWE2Nzg1Nzk5ODMxNDE4YjZiZmJiNzM3ODEwOTFlZGY2ZmVhODIwIHB5M2sKKzU3ODExIDcyNzUzOTg2NWYwNDY1Y2NiOTg1NTgwOTgxOGI2NmQ3YWFiNDkxNmQgcHkzaworNTc4MTIgZWE4YjhlM2Q4YzkzMjg3ZTEwNTJlYjk0YjY0MzQ4MDJiNDE0M2FlNCBweTNrCis1NzgxMyAzNDQ5MWRjMTQzZTdjZDg0NmNiM2Q3ZDAzZThjYWE1ZTE2MDBlZGMwIHB5M2sKKzU3ODE0IGUxNDA1NWU4MmRiOTkxZWI3NTc2OWFkYjUwMDkxZWZjZmRhZGI0ODYgcHkzaworNTc4MTUgMjIxZmZhZGMxYTRjMjY5NTAwODk2YTE2ZWEzMmI3ZDMzYjFhZGI4NiBweTNrCis1NzgxNiBjOTJkNDI2ZWVlNzUxYjQxZGQxZDE4YjU5ZmE3OTlmMmMxMWQ0YzE4IHB5M2sKKzU3ODE3IDQ3MjkwY2FmN2U4ZTgzZDE4N2IxNGE1YTdhNGFkNTYwOThhMWY3YzcgcHkzaworNTc4MTggZDE1ZDljNmJlZGE3YTEwNGE0NmVhZWUxOWIzOTBjNTJlMjVhMjVmYSBweTNrCis1NzgyMCA1ZmE1YjIxMzNmZWJkOGE0NzU4ZGVlNGRkYTEwYjg1MDhmMDQzNjRjIGxlZ2FjeS10cnVuaworNTc4MjIgYmMxOGFjZjhiNjE4MmRhMTk4OTkyZGUzYzY5NDQ5Mzk2MTMwMTI2NiBweTNrCis1NzgyMyA0MzA3N2MyNzlkMTdjODY2ZTNkOWU2NWE5MjQ0YWJlOTI0YzNjNGRkIHB5M2sKKzU3ODI0IGQ2N2I5NGY0OWRmY2NjZjAzYTU4OGEzMWJiNjEwNWMzN2QxYTRkM2MgcHkzaworNTc4MjcgOTk4ZDc1N2YzZmIwYWU4YjUyMTdjY2NiMzIwMDRkMWU1MzMyZmQ0ZCBsZWdhY3ktdHJ1bmsKKzU3ODI4IDk1OGM0Y2M1OTkzZTFlNmExMDRkMTdmODAyMGM4ZjYyN2I2OWY1NWEgcHkzaworNTc4MjkgYTEyYTAyYjlmNjQ5ZGFjYzc5NmEzNDcxODk5Y2U0YjQ3MjQ3ZjYwYiBweTNrCis1NzgzMCAxMTI2ZTdlODVmMTgwNDU4ODZhMTU5YzA4ZDBjM2VkNWJjZWIwOTZmIHB5M2sKKzU3ODMxIGI1ZjA2ZTU3YTI0ZjQ5ODViZWFkMjI2ODcyNjkzYzIxZTNhNmIxM2YgcHkzaworNTc4MzIgZjdmOTQ0Mzc0NDM4YzAzYzM3NjgzZmQ2MmM3M2JmYjFjYzlhMTNkNCByZWxlYXNlMjUtbWFpbnQKKzU3ODMzIDcxMTI1MjQwMmIyZjU2NzNhNmYzN2FhOTA1Zjc1ZTI2YzZlMmIyZmUgbGVnYWN5LXRydW5rCis1NzgzNCA3NzAwMGYyNjQxZWU5MTY5N2EyMjE1Y2QzNmJjMmNmMDc1YzljYWZkIHB5M2sKKzU3ODM1IDVjMzBmMTVhNmI4Nzk5N2JiOTM1NDI5NWQ2N2VhOTc1YzkwMTllODQgcHkzaworNTc4MzYgMjM2MWFhZWFmY2JjYzg1OWU2Y2U1ZDIxNDQ5NDJkMzViMzQ3YjRjZiBweTNrCis1NzgzNyAwODJjZWYzYmUyOWIzMzlmM2E1NWRhYjcxYmRiZGE2OTUxZjA2YmIxIHB5M2sKKzU3ODM4IDA2ZGM0MzIxYTU2YTBiMzk5ZTEzMDcyNzk5OGI5YjI2NGM2YmQ0MDYgcHkzaworNTc4MzkgYTdkNTQ0MDM1M2MzNWQ0MzlmOGMzYzA4MmQyNWY3YmJlZDlkZjk5YiBweTNrCis1Nzg0MCBmZmIxMDBiZTAzMTBkYTU4NGY2OGY3NjNkNDAyMGFmYWZlMGM5ZTgxIHB5M2sKKzU3ODQxIDFiYjYzYTMyYTZjOGQ5MWFmOTY2ZWEyYzkzNTlkZTViNWQ1YWUxNzYgcHkzaworNTc4NDIgNDIzMTRkN2Q2MDgzZDRmZWFmMzAzMWI5YjgzMWEyODYwMTZjYTVhYSBweTNrCis1Nzg0MyBhNmYzYmMyMTZjMzcwYmM2OGFlODMwZjg0YzAwYzE4YzIxZjNmZWYwIHB5M2sKKzU3ODQ0IGI1ZTBmNzcyMTAxNGE2YzRlMTlkNGIxMmZlMjllNjViOTg4OTQxNmQgcHkzaworNTc4NDQgY2QzZjc4M2NkMDhhMTY3ODFlMjM2YzBiOWNiNTcxN2QxZDk5NWZhOSBweTNrCis1Nzg0NiAzMzVlZjg2YThjNWNhYzk4Yzg4MTk1MjJlYmUxMmUwNjQzZTE0NjFlIHB5M2sKKzU3ODQ3IDlmZjExMjZmMDk2YzJhNzU4Mjc5ZTNmZTZhYmY2MWU1YjRjMzBkODkgcHkzaworNTc4NTAgOGMxYzJkNWJlZDMyMjZmNWQwMzVhZDdjMmI2MzNmMWJiNzUxMTMyNyBweTNrCis1Nzg1MSAxZDBmNGIzZWVmYWIzNzcyYzQwMDM2MmE2NzdkYmVhMTE5OWJkOWRjIHB5M2sKKzU3ODUyIDIwYWJkYjkxNmNlMzIzZTE5NTNkYmVhY2FlOTBjYzlhZmNkNzQ5NWMgcHkzaworNTc4NTMgMjc1Zjg5NGRiZjEyMWM0MDQ5NjBhMzA4M2YzNGI5ZGQ1ZjUwOWVkZiBweTNrCis1Nzg1NCA5Y2ZhZDlhNWM4M2IzODBlMmRjZTg0ZWU0ZTdlYjRlMjVlNmM2NzIxIGxlZ2FjeS10cnVuaworNTc4NTUgOWFmOWM4YTcxYmZlODNkMmZhODg5NTFkM2I0N2ExMTBiYTRkNDAzMCBsZWdhY3ktdHJ1bmsKKzU3ODU2IDQ3Yzg4MGU0OGJmNmIyZTkyY2VkNGM3OThkYzhkODUzYWVmMDRhNzYgbGVnYWN5LXRydW5rCis1Nzg1NyBlOWI2NzM2YzE2MzIwODViNmQ2NmQxMzgyNzZmNDM2ZWRjYzUzMjQ2IHB5M2sKKzU3ODU4IDY2Yzc1MWU4MWM5MGU2ZDQ0OTY1YTMwYTk2ZmQ1NzRmZmU3MjJiMWIgcHkzaworNTc4NTkgNTFhZmMxZDU2NWY4MzJiZmQxZDNlZDhmMzJiZjhkNjVlYTM2NjIwNiBsZWdhY3ktdHJ1bmsKKzU3ODYwIGJkOTlmZWFmZjk5NThjYjYwYjEwYWZhNWJkMTcwMDRlNDdhYmZhOTMgcmVsZWFzZTI1LW1haW50Cis1Nzg2MSA2MjBkY2E2NzUxMzdhMTY0ZDBkNGE2MjVmNGEyMGY5ZDc2NWE5N2E4IHB5M2sKKzU3ODYyIGVlMWIzZWI3YTAxMzZkY2MxMjY5MzNiNWQ0ZTNjYTcyMmI5MmMzNzYgcHkzaworNTc4NjMgMGEwYjgyMjY1NzA2MjI4MmIzOGU3M2ZjNmIxMTY1ZjM4N2ZkMjYxNSBweTNrCis1Nzg2NSBiZWQwZjUwZWM3MGI3ZjllZjQ1YWU2OGY2ODExZjlhYzljYmUxM2Q4IGxlZ2FjeS10cnVuaworNTc4NjYgZDg0MjQ1N2U0YjBlMzlmYjJiMTMyZTE0ZjIyY2RlZGNhNDVmZTQwNiBweTNrCis1Nzg2NyBiZjNjOTQyMTNkNWQxZTI0MzU5MzdlMmM4NWVmOGE4ZDE0ODg1NzczIHB5M2sKKzU3ODY4IDU4M2U0MWQxMjk0YjRhNTNhMDIwZjdiYzdhMDFjZDc2NmNjNDIwOTUgcHkzaworNTc4NjkgZGEyODVkM2IwNjVhYzJhZDBhYjA5N2Y0ZWQ1YjgyNzZmNjZhODJjZSBweTNrCis1Nzg3MCA4MDhmMzJhMGQ5OWMyZTAyYzRjY2I3MzhhZWZlMzgzM2I4MWZhZTZiIHB5M2sKKzU3ODcxIGI3YmZhNzgwYTg4MjhlYzY2NWQyMDgzOTRkN2Y5NTQ0OGU2M2VjNjMgcHkzaworNTc4NzIgZjRkMmVkNTBkZTg1OWQ5MWQ5NDA0YzcyMmZhMzViMzJhY2JjOTVmZCBweTNrCis1Nzg3MyBjNGY2M2JiNGQzOGEyYzQzZjY2NTk2OWY3ZWE3OTY2ODkxYjRiNDBkIHB5M2sKKzU3ODc1IGFjYWNlOGViMGJkODI2ZDAzMGM5MGI1NzJlMjA0OTEzNzNkOTZiNmQgcHkzaworNTc4NzYgOWViYTY4OWVjZjI4N2RjNzczZTNmOTViOTU1ZGIxMjk0N2VjMDRmMSBsZWdhY3ktdHJ1bmsKKzU3ODc3IDMyMGM2YmVmOGQzMGMyOWE5NjlkZTQ5OTBmYjc0YzIxYzVkODY2NTkgcHkzaworNTc4NzggY2FmMGQ3ZTNiMjlhNWY2ZjhkYzdiZWUxNTBjMTZlODhmNTFmOGY3NCBsZWdhY3ktdHJ1bmsKKzU3ODc5IGFkM2Q1YWNhY2YwM2RlNzBiZjUzOGNlNGM4N2I5NmVlNzRhZjQ1MjkgbGVnYWN5LXRydW5rCis1Nzg4MCA5YjE4MzNmYzVjN2IyMDdiMmNjNjEwNDVlY2U2YWQ2NmM0ODRmYzFmIGxlZ2FjeS10cnVuaworNTc4ODEgY2UzYTA3MTM1MWZjY2Q1MGRhNzdlY2U5NjUzYTg5YzdhYzIwODQ0MyBweTNrCis1Nzg4MiAxNGU5Yjg3Yjc1M2IyNzliMzcyMjU5YmZiMjg3OWE1NTdjMTcxMjhlIHB5M2sKKzU3ODg2IDM4NmMyMmQ5M2FiNjViNjNiMDVjYWQ4OTM5NDAwMDU5ZjY3OTg3ZWIgcHkzaworNTc4ODcgZDQ0Mjk4NGYyOTBiOWMyNWUwZGUyODdjZDEzZTg5M2Y1MTRkMGY1NiBweTNrCis1Nzg4OCAzYWMyMzdiY2E1ZWU1Mzc5YzM1ZmViZjgxYTU0ZWM0ZGI0ZWQ1ZGI1IHB5M2sKKzU3ODg5IGQ4NjY3MmJkZTY0MDY1NjVhZGVlYzUzMGUxODBlNWY0YWQ2MzdjNWIgbGVnYWN5LXRydW5rCis1Nzg5MCBlYTE4NDUxMzY2MGI1ZDI4MTZhN2ZhNzgyZDVkMmMxYjQzZmE2NjFlIHB5M2sKKzU3ODkxIDI3OWI5NTZhM2E5NjM1ZGYxYjY0MWI4OTg2ZDg5MTk0MThmZmY4ZGIgcHkzaworNTc4OTIgMTQ3ODY4OGY0NTY1ODdhNTBlZGY1OTkxODQ3M2QxNTQ4ZTIzNWJlOCBsZWdhY3ktdHJ1bmsKKzU3ODk1IDM2ZjU2YTNlZjM2ZjgwOTAxYzA2NTBiYjM5ODgzYWY1MjZiNzc1MmIgbGVnYWN5LXRydW5rCis1Nzg5NiBiNzUxNmEzNDZmMGYzOTg4NDMxNGMzYjYwZDExNGQwMjY0ZDI3ZjBkIGxlZ2FjeS10cnVuaworNTc5MDMgMWIwZDE1NDQ0Y2E1ZDQyNmRmOGExMDFjYTRiOTEwYTYwM2ZjZmZjZCBweTNrCis1NzkwNCBjZTBjYjJkODY5MTk5ZGY4YjcyYjVkODkzNWY4ZjVjZjJiN2FlMGJkIGxlZ2FjeS10cnVuaworNTc5MDUgMWI1YjA1NDZhN2RkMmQ5Y2Q1YjFiMjhjNGM2YTBmOWZlNTYzYzk1OSByZWxlYXNlMjUtbWFpbnQKKzU3OTA2IDQ2M2IzNDFhOWQ2MzFlYzRkZjIzODQ4NzIzZjZmOGQxNWExY2EyZTggcHkzaworNTc5MjMgNDkwMjY3MWRkNjc4NTI3ODlhMGU2MWZkMjc0MGZmZGVkMWU1MjljNCBweTNrCis1NzkyNSA3YzZlN2QxOWZmNTNiYzRlZDgyNjg2NjFhYmJjNjEwNjJjMjJlMzdhIGxlZ2FjeS10cnVuaworNTc5MjYgYjVmNTM1Y2YxMzVmYzlkYzQyMGVjOTEzNGZmOTE4YTkyMTliNmNlMCBweTNrCis1NzkyNyBiNTFhYzJkMmQ1MzhiZGEwZjZmNTdkZDFlZWEwM2M4OGNlNzAxMDIyIHB5M2sKKzU3OTI4IDU2NGFlNTZiZDJkYTYxYzhmMjQ1ZTM5OTlhMGZiYzU5MTc0OGJkMjcgcHkzaworNTc5MjkgZjRmYjc0ZjYzODA2N2YzZDBjNDkxMzdjM2Y2NGQzMjQ0MTQ0NDYzZCBweTNrCis1NzkzMSBkZDBjNjUzYmEyOWYyMzA4ZjI2MmM2OGY2MzU4Zjk3OWY4NDMyMzMzIHB5M2sKKzU3OTMyIDU3OGIxNzQ2MWY2YjZiOWFiYTE3YjAzZGM5MjE4NTRmZmNjMWIzN2UgcHkzaworNTc5MzMgMTE5OTNiY2IwYmEzZDFkOWE0NmJhOTM5MzQ5NmEwMzM5ZmJkZTM4MSBweTNrCis1NzkzNCA0MzU5Nzc3OGVmMmNiYzUxMzM0ZGExYjliMmY1N2RiZDk4MGNhMTg4IGRlY2ltYWwtYnJhbmNoCis1NzkzNSA3ZWI5NTQzNTFhNGZkN2RkNDc3ZjBiNTA2ZmM0Y2NmMjZlZTlmZTNlIHJlbGVhc2UyNS1tYWludAorNTc5MzYgYzQ4Y2Q2ZTA2YWNhNTM5ZDA1MjkwNzY3NjA0NTM4YmMwZmNhMGY3YiBsZWdhY3ktdHJ1bmsKKzU3OTM4IGE5ZmI2NWM4ZWFjYjM4MWVlMjQ4YzE1NTNiOTNjNTBlZjdiZGViZjQgcHkzaworNTc5MzkgNDhlZTYzOWE3NWRkNzJmZWRhZDE5NGFiNDNlZTU4MDZhZDcwZDVmYiBweTNrCis1Nzk0MCBlMjUzYjIwNDUyNTA2OWZlZWM0ZmMzYjIxYmEwNjY0MmY2ZmY3Yjc5IHB5M2sKKzU3OTQxIDNjYmI0ZjkyMjBmNDE5MjViMTA4ZmZiN2FhYTMyNGNkN2E2YTVlN2EgcHkzaworNTc5NDcgYTMxMWFiMmZjMWE3MDA1MTUwYTRiZmY0NTFhY2QwMDdjODFjZTNjZCBweTNrCis1Nzk0OCAzNDM2ZGFmNDU1MTZhZTc4YzhiMjJmZjM1MDUwZDdhYjQ1ZTI3OTllIHB5M2sKKzU3OTQ5IDQyOGQ5MjE4MDRmYTQzY2Q4ZTYxYzRjNDE4YjhmMzI2NmU4ODE0ZDYgcHkzaworNTc5NTAgNjU1MDcxYmY2YzQ1YzZkODY1YjQ0M2Q0YTVjOWQxMTM1NjJhMWMyZCBweTNrCis1Nzk1MSBhMWNjOWI1ODllMjIyZWYyOTljMTVmNzYzMTg2MDU5OTU0ZjJhNTU5IHB5M2sKKzU3OTUyIGJiZDRkMjk2Zjc0YWNlOGYyOGUyYjY5NGY0YWQ4ZmJmODYyMTQ1ODYgcHkzaworNTc5NTMgOTc4YzQyYjUzOGQxYzliNGU5Mjg3YzdlMWM3MWVjYjEyYjhkNzlhZCBweTNrCis1Nzk1NCAyMDUyZjU0Y2VkNDk2NjBiMjg5ZjRjMjkxODhmZThlNDJlNzY0YjI1IGxlZ2FjeS10cnVuaworNTc5NTYgMDI5NGJiMmU5NWRlMzI5YmY1OTA3OWQ2MjZiMmJlYmY2M2VhNjNkZCBweTNrCis1Nzk1NyAzOGYzZjllZjE5M2QyYWE0NDkzYzI4MWNjNGMxY2IyNDM3M2I1MzI2IHB5M2sKKzU3OTU4IDQ3ZDkyZGI3Y2QxMDIyMmNkN2ZiMTI2Nzc4YmU5MTJiMzc3NzNkNzcgbGVnYWN5LXRydW5rCis1Nzk1OSBjOWFjNWI4ZTRhODE2OTVlZGZjMWFjOGU0MjA4MzUxODI5MjkzMjM4IHB5M2sKKzU3OTYwIDFhMGM3MzU4MDY2NWVmNmQ0MTViYTM2NmM5YjUyYzUzY2ViNjkwZWIgbGVnYWN5LXRydW5rCis1Nzk2MSA2YTA0OGZmMzA0ODg4NzhhMmZkMjM4ZDJkOTJlMjRlMDYyZWQwNWE2IGxlZ2FjeS10cnVuaworNTc5NjIgNDI1MTI3YzFkMTEzYzRmYWFhZjNhYjNiZWYwMDllMTJiODc5NDk5MiByZWxlYXNlMjUtbWFpbnQKKzU3OTYzIDhlNzBmZDZhN2RjYjA5NTIzZWYwNGVmNGYxZTU2NWQ5NjVjZDM5N2UgcHkzaworNTc5NjYgMDgxZTM2MjMyNWRhNjhlM2IzNzcxM2NlMjU0MGY4OGNjMjQyZDQxMyBweTNrCis1Nzk2OCAzNGJjNjM4YWM3MDc2ZWMxNWJhMTczZmZmNWU1ZTk1Nzg2MjllMDAxIHB5M2sKKzU3OTY5IDQ5ZDZmYTk4ZGM3ODE3ZjUxMDVjMDc5ZWVlNDRkNTZlN2ZkYWMzODEgcHkzaworNTc5NzAgNzkwNGZiYWZhYjNkZTUwODY1NGZmOTExY2IwMzk0NzdlMzlhMmEyMSBweTNrCis1Nzk3MSAzNDg0MzUwYTRmNjlkZjM3NjQyMjY0ZDJiMmNiMThkYmJkZGY1YTQ1IHB5M2sKKzU3OTcyIDgwZmZjYzE2MWIzMGM4ZjY4YjI4OTk4ZjViZjVjOWJhYzk4Y2RiNTYgbGVnYWN5LXRydW5rCis1Nzk3MyA1M2I4ZmMwNzkwNzdmNDhiZWFiMWI4YzJjZmNjMGYzNTkzNTk4ZmI0IGxlZ2FjeS10cnVuaworNTc5NzQgYzZiMTEyM2UwZTZjYTRiZTFkMDUyMGYwMjYyMGIxOTRmMDRlNjFiNyBweTNrCis1Nzk3NSAyOTRlMzU0NTJkMjU3OTg1MjhlNGI0YmE1NjYyYzkxNThjM2JlN2M2IGxlZ2FjeS10cnVuaworNTc5NzYgZTk0NjA3M2RlZTM4YjA2NWQ2YWRlNzA2MGMxMDYzMjQyODhjYjcxZiBweTNrCis1Nzk3NyBlNmRlOWFkZDdjMDc1YmM5NzBmYzVhMmRmNDJhYjZmNDQzZmRmYzFkIHJlbGVhc2UyNS1tYWludAorNTc5ODAgZTJiNGZjOTYwODMwZmMyMmJlMWY3YTg0NTczOWRkYzA0Mjk0ZTM4OSBsZWdhY3ktdHJ1bmsKKzU3OTgyIDc5MDgwYzQ4ODliYzI3ZTk1ZDhjYzliMjFhNzZhYmRiZThmMjgzZTUgcHkzaworNTc5ODMgY2M0NDQyNzU0NTEwNWUzMjNhMTE3MzJhODVlYTk3Yjg4N2RmZTI4OCBweTNrCis1Nzk4NCBkMzEwNDdhMWNlMTk3Njg0ZjJmNTUyOTZjODk3MTVlZTJiZjIwMmJlIHJlbGVhc2UyNS1tYWludAorNTc5ODUgNDUzMTIyMGU1MGJhOGMxNGZiMTdhYTAzMzNiYjk2YmYyZTcxMTk0YyBsZWdhY3ktdHJ1bmsKKzU3OTg2IDVmZDA0NTFlNzQwNjA5ZmM2YTlmYmE5NzBlNTdjNTkxZTRhYjJiYmUgcmVsZWFzZTI1LW1haW50Cis1Nzk4NyA3ZmI5Y2Q5MWU2NDg2MWQzZGU4OTM1ZTZhM2RkNDY4OGIyY2M3ODNlIGxlZ2FjeS10cnVuaworNTc5ODggNzFjM2U1YjY5ZTE0ZTcxZGUzMzQ1ZDU1NTAzNzg5NzM4OGEzNGYzZSBweTNrCis1Nzk5MCAzYzJhNGY2YWNjZDU2YWRkNDM5ZmU2YWM1NjQ1ZDRkZWRiMGJkYzliIHJlbGVhc2UyNS1tYWludAorNTc5OTEgNThhZjY2NzUwMTk4NjJkYWI0NDlhYjY0NTlmOGY1YTg5Y2JlOWQ5NyBsZWdhY3ktdHJ1bmsKKzU3OTkyIDA4ZTEwNTU0ZTQzMDM4MDcwMzZhOTE4NDkzNTk4NTllMGYzN2JhMzcgcHkzaworNTc5OTMgOTFjOTkwMTFkMDY5NDRhNjE3MDE4M2VhYmM4ZmRhZjJkMDQ2OGNhOCBsZWdhY3ktdHJ1bmsKKzU3OTk1IDcyYTk2ZTZhN2MyZmJjNWJiOGRlMTg0YWRlZWFiMGM2MDFkYTNiYzggcHkzaworNTc5OTcgODg1ODEzY2NiZjQ1NGNjMGQ5M2Y1OTY2ZTA0ZjIxNWIwN2Q2ZGMyYSBweTNrCis1Nzk5OCBhNGJkOGE0ODA1YTgwMjQ3NzE2ZjE4MWJmOGVmN2E1ZWFiYjBjMmYwIHB5M2sKKzU4MDA0IDBhMzFkMWM0NWE4OTJiYTlkMGRkM2Q1MzFlZmQ3MTdjNzQ5ZjEzYWIgbGVnYWN5LXRydW5rCis1ODAwNSA4ODdlMWZlYWJkYmRlNmFjOWExNmE1MDI4MTcwNjhlYjBlMTIwZThmIHJlbGVhc2UyNS1tYWludAorNTgwMDYgZmRjNjc1Y2I1ZThhZWMwMzc4Nzc4YWQ5NDRmYTM5NjBmZGY3ZWU2MSBsZWdhY3ktdHJ1bmsKKzU4MDA3IGJlOGY3ZDNjZDdjYzEzYjJmNmRmNmQxOWRkZjc4Y2ZmNzUwY2MyZmEgcHkzaworNTgwMDggZmNiMDJjYjk2Y2EyMDFjMTcyNTU3MzExYjczNTUwMzhlYzhhMDI3ZSBweTNrCis1ODAxMSBiNGEyZjEwYjM5ZDIwZjEyMjI1NTdiNzE4MWMwZmM2MTU1Mjk3MDg0IHB5M2sKKzU4MDEyIDc5ZGRhNTY4ZjQyNWEzOTA5ODRhYzI5ZTJmMTQwZTNhNjA2ODNlZDcgcHkzaworNTgwMTMgYWMzZmMyYWU0YWJjZmYwZGUxZDIyMDdiYmUwYzc3Y2VlNzBmNDhmNCBsZWdhY3ktdHJ1bmsKKzU4MDE2IGM3NmFjYTRlMTAwZGUxMTYyZjQyN2ZkNzFjMTY1NDljNzRlY2U2NDYgcHkzaworNTgwMTcgN2MyZjVjNjJmOGNhMGQ5MzczM2Y2NTAyNzgzNzk3NDllMDVkYzgwMSBweTNrCis1ODAxOCBlZGZiY2YxZmY3MzQwNzUxMGU2ZmQ2MzdkNTAyNmI5ZmFjOTc2NGE3IGJjYW5ub24tb2JqY2FwCis1ODAxOSBjOWM2MTY1ZjdjMGQxZTA0Y2M2Yjc0OGQ1YzJjNDM1ODU4Y2U4NmE3IGJjYW5ub24tb2JqY2FwCis1ODAyMCBlN2ZkMWZkOTFjNTNmYWI2ZGE4NTRkMjhkZTZjODA1NDM5MTQ2ZmRiIHJlbGVhc2UyNS1tYWludAorNTgwMjEgMmRiYTVhYzhjZTE1OWYxZTA3YmEyYTQzNjgxYTA1ZTUzNGZhMTAwMyBsZWdhY3ktdHJ1bmsKKzU4MDIyIGJhMDhmN2YzNmU4ZWQ0YzA3Zjc0MzRiYzEwZWI3OTYyNWM1NzY0MTkgbGVnYWN5LXRydW5rCis1ODAyMyA1NTY1NjlhYjNmOWRkODU1NTBkOGY3MTYzMWFiYzFhOTI0ZjExOWUwIGxlZ2FjeS10cnVuaworNTgwMjQgMTZjYjg1ZmVmYzVkMDI1ZTMwNGU1MWMyZDQ0YmQ1YzUyODUwNzA3OSByZWxlYXNlMjUtbWFpbnQKKzU4MDI1IDFiYzRhOGQ1N2IzMTI5ODVmNGYyOWNkNTU3ZWQ3ZTIwNDdiYzFmMjggcHkzaworNTgwMjYgNzA1MjU5MzU3NGJmNDdiNDQzMzY3NzU5MDAyZmI1MDNhZTYyMDdmMiBweTNrCis1ODAzMSA1N2VhYmIwNTFjZmRjYWNlYzhmNzdhOGE1OWYxMTU1ODkwNmEzM2I3IGxlZ2FjeS10cnVuaworNTgwMzIgM2JjM2YxMmNhZTI4ZjAyYjM1NzJhYTJiZTdmY2IyNTAyNWVmMDdlNSBsZWdhY3ktdHJ1bmsKKzU4MDMzIDgwZDJkYWVjNjFjYzhjYWM1YWFjZDlkZDBmNTY4MjVlNDliMjU0NzcgcHkzaworNTgwMzQgMjg3MTZkZDE0YmM1ZmEyNzE0MmNhNTc5ZWNhZTdiNzhmMjlhZTY5OSBsZWdhY3ktdHJ1bmsKKzU4MDM1IDdkYWRkMjFmYTg3YzEyYjAyOWE5NTZkNjkwM2ViZjNhYWRlNGNjMDYgbGVnYWN5LXRydW5rCis1ODAzNiBmNjI4NTc1MzNjYmVhYTJiOTRhYWFiYjgwMzFiODY1ZGE4MGQ5ZmJjIGxlZ2FjeS10cnVuaworNTgwMzcgNGIyMTM0ZTQ3MzBjMjJkNWQxNzIxMmUzYTg1YzQ0ZWU3MDM1MjQwNiBsZWdhY3ktdHJ1bmsKKzU4MDM4IDA2ZjY2ODJiMjE2NmUzMDdjMmFhMWYyYTdiMTk4ZGU2NGI4ZThiOTEgcHkzaworNTgwMzkgZmM0NzBiYmU4ZDI0MmI4N2IyODBlNTgzNjIxZGE4YmEzNmRjMTI1MyBweTNrCis1ODA0MCAxZjllZWUwOGFiMzVlOTU3ZmY1NjVmZmE1MmJiMDI2ZjUyMTI5Yjg2IHB5M2sKKzU4MDQxIDc1NWZhNTE4N2QxYmMxMmU5ZDQwYjk1MzA5YzM2Y2M2MGM0MTU3NzQgcHkzaworNTgwNDIgODg1ZmIxN2M1ZTMxOTY4MjVmZmU0NzZmYWJjOTNmODZkNjJhM2FmYSBweTNrCis1ODA0MyBmYTU1ZDQyYzhkOWM4ZDJlNTdhNjcyNjZmYzdiODk1NTc4MDlhMmMwIGxlZ2FjeS10cnVuaworNTgwNDQgYjhhODIwNmMwODQ5MjUwNWYzZGQ4MzU4MTdkNDU0MTc5ODU0YTZmZCByZWxlYXNlMjUtbWFpbnQKKzU4MDQ1IGIzNjdkNmU0MjIzMTVhOTA0YmU0NWQ4NmY2NzdiMjVlYWQwZjA3NDMgZGVjaW1hbC1icmFuY2gKKzU4MDQ2IDFmNjIyNzM2NWMzNmRhYmFiYWExODE4YTYzYzZhZjA3MGU3YWY0YzQgZGVjaW1hbC1icmFuY2gKKzU4MDQ3IGU4NWZhYTAyMTkxYzQ3Yzk1MGMxOTcyYjMzN2UxN2Y4NzJlMzFhYjAgcHkzaworNTgwNDggMDg4MWFiYWI5MzczODQxZThkNjQ3ZjAwYWFhZmYwYWY5MGY5OTIyZiBkZWNpbWFsLWJyYW5jaAorNTgwNDkgZmZhMDc0N2E3Y2I3YTIwNjE0NzA4MzI0OGZkYjMyODA5NWVkZGZmNiBsZWdhY3ktdHJ1bmsKKzU4MDUzIDJhZTZkYjBiYzdlYmNiYmJjNzMxMmRiNmUwM2FhMGY1NTc2NDI1ZDcgcHkzaworNTgwNTQgODc2YjdlZjQ3NzVkOGZiYjllNGE1ZGEzZjQ0ZjA5YTgzMTg3OWM2YiBweTNrCis1ODA1OCBiYWViNjZjZTdiNTFkZGIzNjcyYzQ1NTZjNzMwNGZiZGEzNGRkNGNiIHB5M2sKKzU4MDU5IDc4ZjFjMzI5Yzk4MzcxM2E0MWYzMWE4NWE0MGU4ODM2ZmM0YzFmMjMgcHkzaworNTgwNjEgYTA5ZWEyY2ZlNzZhMzA1YjAzNzEyOWMxY2Q4MTQ5NWQxZjYzNzJlNiBsZWdhY3ktdHJ1bmsKKzU4MDYyIDc1Y2Q1NDg2MzI1MDlhMmVhY2E3ZjBjMzBmNzM4N2E2YjViM2RlYzcgcHkzaworNTgwNjMgNzZjMWNjNjcwYzYzM2VmZWQ5ODE3YWEwMzA5MmJiNjBlZTBmNzczYyBweTNrCis1ODA2NCBhMTFiNDg4NWI0NDVmMjc4MGNiODA2MzUwMmU2NWIyNGMxZTE1NzllIGxlZ2FjeS10cnVuaworNTgwNjcgZThhYTcyNGRhOTA1ODRkMzQyYmM4NzNiZmNlNTA1MjBmYTg0ZTI3ZSBsZWdhY3ktdHJ1bmsKKzU4MDY4IGIzNTVkMmRiYTliNmUyNWEzOWE3ZTJmOWY5NTJiMmVjN2E1NzY4NmQgcHkzaworNTgwNjkgODA3YWRjMDMwNjUzNTE1MWZjODFmMDM2MWU5Njg1Zjg4N2YyZmFhYyBweTNrCis1ODA3MCAzZDE0OTY0ODlmNTg1MWM2MGY1ZTU3MDllNTU3ZWE3NTZkODdiNzI5IHB5M2sKKzU4MDcxIDkxNzZhNTNiNGI2MjUwZWFjODUzNmQwY2YwYjE4YTFhZGY4ZTBjNDAgcHkzaworNTgwNzIgZjhhNWZiYTM1ZWIzNmFmMzRhOWIwMmZmMzhjYjI5MjljOGQzYjk5MCBweTNrCis1ODA3MyA3NWIyNjVjMDhjOTEwYmU1YTg1YmM0NDMwODVhMjEzMzhmNDQ2MTMwIHB5M2sKKzU4MDc0IDlmN2YzMTQ3MDMxYzI2ODZkYTI2Y2Q0MGExMjA5YWMwNzY2MjNmMDYgcHkzaworNTgwNzUgODc1MDUyYzJiN2IzNDZmY2RmYjNjNjQzZmQwZGFmN2E1MWRkMzI4NyBweTNrCis1ODA3NiBiMjdkMzQ5MTYyYmRlZWVkMTZkZGMzNmUwODMzY2ZmNWVjNTUyZGQ5IHB5M2sKKzU4MDc3IDA5Mjg3ZjIwNTVhYjVkOGRmMTY0ZWM3OTRjYjgzYWJiZGMzODgwMTggcHkzaworNTgwNzggODdkNDExZWJiYWUwZTI0MjdhOWFlY2FiYjU3ZGRiODI4ZjRhNzY2YyBweTNrCis1ODA3OSAwOTlhYjgyM2I4NGM0YTFlYTRhZTEwYTc1ZTMxNThiZDY3NzFlOGIwIHB5M2sKKzU4MDgwIGZhMDJjZDJjYzMzYjhiMzkzNThiZmU3YzA1MzZkNTA1M2Y2MDZkMDMgYWxleC1weTNrCis1ODA4MSBhN2RiOWViZWQyOGFkMTI5ZTBkN2IwZDJhNWY5ZDY5OTY2MDRkMjc3IGFsZXgtcHkzaworNTgwODIgZDlmYzkyOGRiMWZhZjU2NDRiNThmMDlkNTdkNDY1NjRiZjM4MTk2MyBhbGV4LXB5M2sKKzU4MDgzIGE2Njg5NzQxOWEzNGVmYTk3OGFjYWExYzNiZTNhZDJjZjhkMWE2MGQgYWxleC1weTNrCis1ODA4NCA1YTUxZDFiNjU2Mjk5NWRhMWUyYTE5YTgxZjljZWFiZWNiZWI4MTc5IGxlZ2FjeS10cnVuaworNTgwODUgZDE1NTJjMTUwZTkxNGQ3YmNhYzIwYjZkYWI0MmZmMjdhOGJmYzBiYyBweTNrCis1ODA4NiA2MGZiOTg2MTJhOWU3ZGFjZDYyYjQ1YzQ2MWM5NTg3NjQ5Y2Y5ZDAwIGxlZ2FjeS10cnVuaworNTgwODcgY2VhNmE4MGJmZmIyOWIwZjgzZjI4YmY1ZDQ2YzViM2Y3MjIwZDZjYSBsZWdhY3ktdHJ1bmsKKzU4MDg4IDM0YjUwMDAxZGQyYzM1NzcyNmI5ZDRkM2YwNTkzNjcyNDg5YmEyZjggbGVnYWN5LXRydW5rCis1ODA4OSA4NjJhZTQzY2ZiMmIyZTIxNmNlODBjNmFkYzk2ZTIxZGQ5MDAwYjE0IGxlZ2FjeS10cnVuaworNTgwOTAgNzhhN2I5OWQ5ZjQyYTBmYzMxM2JmNGFmYWI2MTgyZjM0YWI2NTkyMCBsZWdhY3ktdHJ1bmsKKzU4MDkxIGNlZDI0Y2NjNDlkZDZiYjM3ZTZjODBlZDQ1OTllNmYyOTNlYzdjNDcgbGVnYWN5LXRydW5rCis1ODA5MiBhYzE5OGZiZDM3MDA0ZmNhODE5NGM1NWUwMDY4ZTYzNzY0NjE4ZTcwIHB5M2sKKzU4MDkzIDI4MmUyZDBjMjkzNzFjMTEzNDEzYWE3MTdmYzBhYzk1MDFmNzFmZDggcHkzaworNTgwOTQgNWJmZmI2Yzc5YzA2MTEyNDBjYzZjZTM5ZmJhMjYxMTUyOGZiMjdmOSBweTNrCis1ODA5NSAyNmFlMjEwOTY5YzA1ZTdiZjU0YTE0MzM3YTE5MjQ3NDlhZmI2NzNkIHB5M2sKKzU4MDk2IDRhNmM3ODgyMjZmNWMyZmQ4MTExYTAzMzA3ZTM1Y2Q2N2RiNDhmNzIgbGVnYWN5LXRydW5rCis1ODA5NyAxOTMwMjBiZjUyZGMzNTZjOWY2OGJlNGJlNTY3M2U5YjdjMmUwNjY4IGxlZ2FjeS10cnVuaworNTgwOTggMWRhZDU4ZTAwYzNhNTBhZDdmOTY3M2UwNzE2MTRiYmQ0ZjAyM2I0MCBsZWdhY3ktdHJ1bmsKKzU4MDk5IDMzODE3ZGE1M2ZkNzQzYTk0ZTk2YTc2NTQ5ZmNlOGE2ZDgxYjRkYjUgbGVnYWN5LXRydW5rCis1ODEwMCAyMGE4MGI4M2E2YzUyNjk2ZmZkYTNmYWMzOTM5MDRlZDA0N2Q2ZDIzIGxlZ2FjeS10cnVuaworNTgxMDEgYjNhNGExNGQ4YWMzMTIzMTk1YjkwOTM3MTc3ZWNhMGIxYjY3YWNiMyBsZWdhY3ktdHJ1bmsKKzU4MTAyIGViZGYyYzA5YzE4OTkwODc0MmZhOTQ0NjYyZDc3MzQ0YTBlYTU5MGEgbGVnYWN5LXRydW5rCis1ODEwMyBiZmUxOGI5MDdkODczNWU1MWE5NzYzOWM4OWU0MGIzOTk0YTk2ZGRkIGxlZ2FjeS10cnVuaworNTgxMDUgMThkNWFhNTEzNWNhM2E1MzNkZGFiMDMzOGZkNDNiZmNmNjM4ZGI3ZiBweTNrCis1ODEwNiAzZmYyNDk4Y2Y1NDhhNzcxNzJhOWNjYzQ5ZjkxY2RlMGFlMDRkNDg2IGxlZ2FjeS10cnVuaworNTgxMDcgZTgyODc2YTYyMWI1ZjQzODIyNDBlYjcyNzAzZWNhYTg3ODY4NzMwMSBweTNrCis1ODEwOCBjNWI2YWU5NDQwYjVkZmY0MWQ1ZTJlYTE3NzRlODcwOTA4MTM1NGEyIGxlZ2FjeS10cnVuaworNTgxMDkgZWFkN2MzYzZiZTFiOWE4ZDkwOWFiYmI5MDc3YjcwOTkxOWU5YTQxMSByZWxlYXNlMjUtbWFpbnQKKzU4MTEwIDI3NGZlNGJiZTNlMDcwZDhjNDI2Mjc0NzYxNTY3MDNlMjlmYjI3MDQgZGVjaW1hbC1icmFuY2gKKzU4MTEyIDI1ZWE0ZTY2ZjlhMDA0ODBjNTFiNTM0N2FkNzBmODgxODBhMDRhNTUgbGVnYWN5LXRydW5rCis1ODExMyA2MzdiZmIwYzVkYWU4NWNmYjcwNGRmMWVmYTY3NDBkNDE5NGFlNGU4IHB5M2sKKzU4MTE0IGNhMDZjNGEzMDkxZWU3NGI1Y2EyMjg2MmFjOTNmM2RlOTQ0MTlkNWEgbGVnYWN5LXRydW5rCis1ODExNSA1NTUzZjhiNGRlYzBkZTA4MDc4NGNjMDI3ZDI4YzI0NDQyYTE0OWUwIGxlZ2FjeS10cnVuaworNTgxMTYgYjU3OTVkYTdkZDI2M2E1MTUxMjQyM2Q2ZGFmZjA4NzFhNDc1YjVhYSByZWxlYXNlMjUtbWFpbnQKKzU4MTE3IDA4NTg4ODc2ZTRhNzRjZjU4MTE1NjRlNWFmNmM0NGYwMjViNzJkYWEgbGVnYWN5LXRydW5rCis1ODExOCAyMDM5OGI1NTI2NmM5NmI1ZjFmYjE2N2ZhMzdhN2U5MDdhZTljODA4IHJlbGVhc2UyNS1tYWludAorNTgxMTkgODQwZmY1OGQxZTllZmE0OGYwMzM4N2Y0Njk3NDM3ODlhMjUxOGVmNSBsZWdhY3ktdHJ1bmsKKzU4MTIwIDc1NmE3YjdjZGM0ZTVhZDk5NjBiZmMxNGQ1MDRiY2NmOWUzNzhlYTMgcmVsZWFzZTI1LW1haW50Cis1ODEyMSA5MDA3MTU0YTdjNDkxNTc2ZjNhOGFkOGZiNGVmNmUyMzljY2EwMjVlIGxlZ2FjeS10cnVuaworNTgxMjIgMDZlZmU4MzU4MDRhMmQyYTZhNTQ2NTBkNWI5YjVjNDA2Yjg3ODkyYSBsZWdhY3ktdHJ1bmsKKzU4MTIzIGMzOGUzNTNlODc2MWU4NDAwNDZiNjQ3YzY3NmVkY2ZmNWFhN2EzYzUgcmVsZWFzZTI1LW1haW50Cis1ODEyNCAxZTNmNTdlNzNlMDRjM2FmMzZlNmI2ZWQwNmM0MmVhYTk5ODc4ZGY5IHB5M2sKKzU4MTI1IGEwZDIwMTJmZjRjMTViNWVjYzljYzE1YjBiOTRiZTYzNzQ1MzQ3OTcgbGVnYWN5LXRydW5rCis1ODEyNiA4NGRjODZmMjExOTY0YjczNzRlMTFjNzgxNWNmYWUwNTFlMTllMDdhIHB5M2sKKzU4MTI3IDVhYjVhNWM3MzY2OGZkYjliZTVkMmNlZDQyYjg3MjhmODZjZDUyYTQgcHkzaworNTgxMzEgOTQyZmExYzRhOWQwZWYwMTI2NmQ1Zjc2M2FhODRkZjVhNTA5MjU4MiBweTNrCis1ODEzMiBiZjJkOGI3OTQ5M2FhMjAxNzJjMmE0MGY2ODgzNTM1ZWNjYmFkMjZiIHB5M2sKKzU4MTMzIDcxMDdmMzljMmY2NmMyMGU0MzBiYTdhNTU4OTRiNGRhNGIwMGE1YzkgbGVnYWN5LXRydW5rCis1ODEzNCAzOWViY2YwYTk4YjRkMTM0N2U3N2Y2YmUyODliYzZkOTIwMDM0YWJkIGxlZ2FjeS10cnVuaworNTgxMzUgZTEwMDM3MWEzZjYyZGU1M2FlMmYwYTVjODI1NWIwZDYxYTdhNTA5MiBsZWdhY3ktdHJ1bmsKKzU4MTM2IDk0OWEzNWIyN2QyMDQyZGZiZGM5ZTBkNTAzNGJlMGIyYjQ2YWVmNmUgcHkzaworNTgxMzcgYjJkY2Q3NTdhNmEzNzVlY2ZlZTJhNjVlZjY2OWNmMGFjMGQ3MjljYSBkZWNpbWFsLWJyYW5jaAorNTgxMzggNTI3YzQ0ZWYyNmNjZDJlMzgzYjIxZWQzOTY5Yzc2MTc2ZmQ5MjBjZCBkZWNpbWFsLWJyYW5jaAorNTgxMzkgYzc5YTJmMGE3MDM0MmQ0NGMyZjg3N2NiN2VkZDBkOGVmNTJlYjQwNSBsZWdhY3ktdHJ1bmsKKzU4MTQwIGM2Nzg1MTEzMGZjNGM2ZTlhY2ZjODVkYTI3Y2JlMzQ5ZmI4YjJiOWIgZGVjaW1hbC1icmFuY2gKKzU4MTQxIGYxNGZiN2IwM2RjYTFlYjc2OTY1NjEyMTNiNTBmYmQwODYwNzUxYjcgZGVjaW1hbC1icmFuY2gKKzU4MTQyIDk4YmE1YzIyMTE5ODZjYzJhYjlmZjQ5ZjMwNjdkZDM3ZmM0ODJiYmYgZGVjaW1hbC1icmFuY2gKKzU4MTQzIDYzZjMxNTRjNzMxZDAyMmNiYjA5ODk5MzhlYzY2N2QxYzZjOGQzNzEgbGVnYWN5LXRydW5rCis1ODE0NCA2M2M5NTc2M2E0M2JlNGU5MTk0NGRhZjE5ZWEwZjAzOGU3NzVjYjY1IHJlbGVhc2UyNS1tYWludAorNTgxNDUgYzhjN2E5NDdhNjQxOTdiODZlZmU5NDQ1ZGQzZjg4NzA5M2VlYjlmNCBsZWdhY3ktdHJ1bmsKKzU4MTQ3IDJmOGIzZWE2MmEyZTFlYWNhYjRlZDkwMjM5ODc0MDg5YjEyOTQ5NDQgbGVnYWN5LXRydW5rCis1ODE0OCBkZjhkMzJkNWU0NDQxMGQ2NmExMmUyNDNmODZlMTY5YmZiYTA0NTliIGxlZ2FjeS10cnVuaworNTgxNDkgNjJjM2MxMDRjYTAxMjAzOWI2OWY3ZDk0MjViNTlmMTZhOWM3OWEwZCBsZWdhY3ktdHJ1bmsKKzU4MTUwIGViOThmMjIzZDZlYWVhZDQ1ZmIxODc1MzdiYmNjNzNjNDRjNmFiM2IgbGVnYWN5LXRydW5rCis1ODE1MSA4YjZkYzY2ZTBlYjU0ZWM3YWY2ZmVhMTQ2YjMxZWIzNTVkMzEwNWVjIHJlbGVhc2UyNS1tYWludAorNTgxNTIgZTBmNWFmMTRjOTg4M2NhNDAwNWZiY2MwMTMwNzIwNjhlZGU2YzBhNCByZWxlYXNlMjUtbWFpbnQKKzU4MTUzIGU1MWVkZGUyODA3ZjFlYTExZTFiNzM2OTBhYTdhNDdhZmM0N2VjNzAgcHkzaworNTgxNTQgMDVkN2MzZDBiNzdhMjI4YWVlNGI4MWUzZTYyMGQyY2RmODU0OTNjMyBsZWdhY3ktdHJ1bmsKKzU4MTU1IGZkZmY0OGY4N2YzNWU5MDc1NzhkZjBhZTc0YTlmMzVkMjc3ZDU1MmEgbGVnYWN5LXRydW5rCis1ODE1OCAxMzM5MWY5ZDIwZWE0OTkyNjJmY2NmNDU3YWU2OTFmZGI5NmI1NjBhIHJlbGVhc2UyNS1tYWludAorNTgxNTkgZTAwMjMzOTVlNTM5MzI4Yjk4MTkwZDE3N2JiZWJiZGVmN2U3ZDg3MSBsZWdhY3ktdHJ1bmsKKzU4MTYwIDczZjJjOWQxNmNmNGQ3NWM0Y2VhNGQ3ZjY2MmMxY2I5NWU1ODgxMWMgbGVnYWN5LXRydW5rCis1ODE2NCA5MDQxOTY1YTkyZjJlZjY2ZjA1ZWQwNTE4NzQ2YjU0ZTI1YWExMjQ0IGxlZ2FjeS10cnVuaworNTgxNzMgMWI2NmUyYTU3OTZmMThjOTQ3NWE2ZmM2YzQ4MDBkODJlMWVjNWExYyBsZWdhY3ktdHJ1bmsKKzU4MTc1IDJlN2RkMjAxZWExZDJjN2VhOWU4NjI4YTdiZTUxYTQ3NWNlYWRlMzUgbGVnYWN5LXRydW5rCis1ODE3NiA3NjMwMjQ4YjU5M2NkZmQyMDMwNzIwNzJjNzBlNTU5NWM1NTRlNjcxIGxlZ2FjeS10cnVuaworNTgxNzcgYWU5ODIyOTNjMWFlMDg5Y2I3ZjE2M2Q5MzNmMWM4YWQ2YjkxNjhkNiBsZWdhY3ktdHJ1bmsKKzU4MTc4IGUzMTM3OTVlYTE3NDJkZGZhZTFjNTZiYzZiZjgwMzE3OGEyZTUzNTAgcmVsZWFzZTI1LW1haW50Cis1ODE3OSA5Y2MxMzJjODQ2MWVjNjQ1NzFmNDIyNjc3NzkwMDY4NGE0OTlhYjA5IHJlbGVhc2UyNS1tYWludAorNTgxODAgZTAxZGQyYmYwOTlhNWFkYTBhNTcyMzEzYzgzMTVkMzc3MTE4ZWY0NiBsZWdhY3ktdHJ1bmsKKzU4MTgxIDg4OTBiZTkzODZiN2FjNDdhNjA4NzlkY2JmNWVlNjVkNzlhOThlZjMgbGVnYWN5LXRydW5rCis1ODE4MiA0ZTU3YzM2ZjZkMmUzNjYyMjgzMmU0M2ZmOTg4MjE4Njk1NTc3MjZiIHB5M2sKKzU4MTgzIDVkMzQyOGZmN2ZmYTE4MjNkYWYyMjI1MTBkOWZjMjJmOWNmMGE1NzcgbGVnYWN5LXRydW5rCis1ODE4NCAzNjMyMDNkNzVkNjlmM2RmODczNjk2YmUwNGIzNDA1ZGE4MDU4MGFhIHJlbGVhc2UyNS1tYWludAorNTgxODUgYzU0OTBhOWVhYWUyZjdlZmMzZWMzYjAzNDA1NzUzZDNlNTk2OTViMCBsZWdhY3ktdHJ1bmsKKzU4MTg2IDJmZGZmMGI1YmViNmFiN2M2ZjFjNzhjNTE3YzZlNDViNThhZDcxMjIgbGVnYWN5LXRydW5rCis1ODE4NyA0ZTU0M2ZhZTBkZWQ4OWY4YTIxMGM4NzRkYjliZTc1NzViZjlmYTQ1IHB5M2sKKzU4MTg4IDUzMzVmODlkZjA4MWJhZTQ4N2FkNDIxOGE2YTA2MGU5Y2FlZmZlMzUgcHkzay1pbXBvcnRsaWIKKzU4MTg5IGUzOTVhNjM2ZWU0YTdjZWU2M2VlNzhmOTFjMTQ5NmNiNzIxYjNiZWYgcHkzay1pbXBvcnRsaWIKKzU4MTkwIDY0MWQ0Y2FjOTc1NmQ4YTcxNzNjYWQ5N2NlZDUwN2VhOTFmYzljMWEgcHkzay1pbXBvcnRsaWIKKzU4MTkxIGMxYmNiNjMzOTM1Nzc0YTA5OGZjZTVhYzU1YWU3MGUyMjExMTIwNGUgcHkzay1pbXBvcnRsaWIKKzU4MTkyIDU5NzVhNzMxNmMwNjUzMjJlODllNWMxYzFjNzQ3M2MzODhjOGZlYzggbGVnYWN5LXRydW5rCis1ODE5MyBiOTIzNmE3NWE2ZTVhZWQ0YTk5N2MwYzE3YmNiMmNhNjdmNWUwOTIwIGxlZ2FjeS10cnVuaworNTgxOTQgZWYyMjM1NDZiNGJkNmRlMzM4OGNkY2U2MTM4YTRhNjhjODUyNWZkOCBweTNrCis1ODE5NSA2YTBlYTA2NWE5OWEyZjk4ZTgxMjBlNDFjYWEyOTZiMDBjZTY3ZTcxIHB5M2sKKzU4MTk2IGYxOTI0NDJmNDRkODFkOGE0YzJmMTY3MTliZWJlNjNlMzRlMzNlMmUgcHkzaworNTgxOTcgYjI5NTgyYmRjOTNjZDZjY2JhZWFmMTQ2ZGRkZGM2NzI4MWQ5NzdmYyBsZWdhY3ktdHJ1bmsKKzU4MTk4IDdkZGQ0MDUwM2UxYTFkMDAyNjkyOTZhNGU1YzBmZmNjMjNlNTdjYTEgbGVnYWN5LXRydW5rCis1ODE5OSA3NWU2YmZhMmQ0ZDIyMGU3YzFhYmU2YmNlY2IyNWE5OGJkNmEzMjhiIGxlZ2FjeS10cnVuaworNTgyMDAgM2VkMmY3NzE2M2ZjMzBmOGY5MjdiZWY0ZmNlZTlmNzBhMWUwNzNiYiByZWxlYXNlMjUtbWFpbnQKKzU4MjAxIGYyZWY4YWUwYmMxODc1Mjk1NTQ3MmU4MGZmZmQ4NjNmYjgwMGJkMTMgcHkzaworNTgyMDIgMWJhYzM4NmMxN2NjNjliOTlkMzMxNWI5ZmFhMTUwNTI2YzlmZjYxNyBweTNrCis1ODIwMyBlYjM5NmRlODJjMDMwZmM3MGFmYmUxYzQ3NjYyMWIwZTdlNDFhODBkIHB5M2sKKzU4MjA0IDhlMTNkM2VhY2FjY2I0YmU3Y2JhZjZlYWM3N2EzMTA5NWJlY2VkMzYgbGVnYWN5LXRydW5rCis1ODIwNSA2OTI0OTM3NzFhZTMyMmM1ZDY4ODA2NTg3NTU2NTJiMTE4M2M0OGI0IHJlbGVhc2UyNS1tYWludAorNTgyMDYgZDFmYTgyMGIyZGNhMGQxZWFkNzc1NzEzZGMzZDAyOWRhNGE1NzQ0MyBsZWdhY3ktdHJ1bmsKKzU4MjA3IGMxOWVjOTUxNWEzMzY3NjI1YmE0NjM4MDdhZmIyMGM1YTllNDgyZjggbGVnYWN5LXRydW5rCis1ODIwOCAzNTdmNTQwMTVhMmQzYmExMGNkZjEzMWM4MzQzNmNhM2I0ZTIyZjVjIGxlZ2FjeS10cnVuaworNTgyMDkgNDRhYTRmZmRjMWFjOTZmODgxYjYyNzNkMjM0OGIwZjZjNjczOTMzMSBsZWdhY3ktdHJ1bmsKKzU4MjEwIDgxNDc4NDY1ZmVmM2IxNDczODQ1OWZiN2Y4NTMzMWU1ZWRhZmNiNDUgbGVnYWN5LXRydW5rCis1ODIxMSAzNTdjZjA3YTIzZmUzNjZiZjZhYjZkZWJiNTYxM2I5NzA0ODhmZDNiIGxlZ2FjeS10cnVuaworNTgyMTMgYjA2YjE5MWI3Y2ZhMGI4N2FlZWZlOGNmZDQzMmUzYzc1ZTUyYTM3YSBweTNrCis1ODIxNCBhNWQzN2NkY2QzMTYxNzNhMTM1ZDNjN2I4ZWM3MzIyZGZlMTZiNTJlIHB5M2sKKzU4MjE1IDUyMWJmODdjZWJiZDllMDhhZmRjYzE3YzRlZmUwMzg1YjkwOGNlY2UgcHkzay1pbXBvcnRsaWIKKzU4MjE2IGVmMTcyMTgzNjE3ODJhMDgxODc0ZmQyOTkyNTk5NjE0MzYwZTdmNjkgbGVnYWN5LXRydW5rCis1ODIxNyA0MDkwOTFiMjhjN2U5ZDY4MzQ2YjQyY2QxODg1YTRmZTliNWMwODg2IGxlZ2FjeS10cnVuaworNTgyMTggN2QxNGEzMTg4ODUwMWRjMWQ5MDE4NzkzNTY2NDBlYTg1ZTMyZWY2ZiBsZWdhY3ktdHJ1bmsKKzU4MjE5IGUxYzA5ZmE2ZmMwZjVkMjZmZTMyYjI5OTA4OWI5OWQ3NmU1Mzc1ZGEgbGVnYWN5LXRydW5rCis1ODIyMCBkYzM5ZGRkZWEzMzAwNDVlOTQ1NDY2MzFjOTFiNjdkN2JmYjc2OThlIGxlZ2FjeS10cnVuaworNTgyMjEgNDZjNDY3ZGVlNjU5MzhlNzNlOWI0M2EyZDczNzRhMTk1ZjJmMGQzMyBsZWdhY3ktdHJ1bmsKKzU4MjIyIDBjOGZlYzc2MTExYzdmYWVjNjIxY2E4OWM0ZWU5OTYwOGU0MjQ3MDcgcHkzaworNTgyMjMgZGE5NTE5Nzk3YzYxMDU4YTE5YWEwZWMyOWU0ODc5OTc1MWU2YmJkYSBweTNrLWltcG9ydGxpYgorNTgyMjQgMTgzN2NhZTkwZTUyZTU1MGZiYWM0ZTU1NjQ3MWVhZWYyMWZjNzQ5NiBweTNrLWltcG9ydGxpYgorNTgyMjUgZWM4NDZlYmFiMmVmYTBjNTc1MTYxYzEwZGFmNGM4ZDdmMDg5Yjg3YiBsZWdhY3ktdHJ1bmsKKzU4MjI2IDBmZjQxYjE2M2Y1YmExZjVkMjg5OTkyZDZhYTE0NGNlYTVmNWI2Y2UgcHkzaworNTgyMjcgZjMxZDQxNTU1NGNkYmZjNWI1NDlkZDM3NmUyYWZkZGExOTA2YmNlZCBweTNrCis1ODIyOCBmNmNiYWI3NTkyOGY2ODY0OWM0NTZjMDlkMTYyZWI5N2YwZDViZTQzIHB5M2staW1wb3J0bGliCis1ODIzMCA3M2QyNmNkOGUwYjU2NGYxMDgzMmI3YmVmYjU5OTJhZDMwMjY4NDIyIHB5M2staW1wb3J0bGliCis1ODIzMiBmYzAzMzZmNDQ3YWVhZjBiNWZmM2VkNjQ0ZWFiYTQyZjE1MGVhMzI4IGxlZ2FjeS10cnVuaworNTgyMzMgMzdmZmJiN2ExOTYyOTMwZjcyYTVkNGIwZjk1ZTIwZWYyMmRhNmNiNSBweTNrLWltcG9ydGxpYgorNTgyMzYgMDQ3NmEyY2M1NjU4NzQ0M2NmNDZmZGViY2Y4ODUxMTA2MTFjODhmZiBweTNrCis1ODIzOCBjZWYyZWQ4MjkyYjZjZmRiYjg1NDYxMjk4NWEyYTZlOTU3MzA0NTMwIHB5M2sKKzU4MjM5IDVmNzMzOGE0ZDFkZGRkMjYxODFmNjBhZGFhYWQ0OTZjNzAxYmY4NzQgcHkzaworNTgyNDAgNTVhNjYzMTZjODllZDJjYjE2MTRjMjdhNTU2MGZiZDQ1YmRmMTQ2NiBweTNrCis1ODI0MSBhNGRlMzEyMjE1Nzg0N2YzMDhkYmQ2MmIzYTFiMDFmMzUxNGZjNTBhIHB5M2sKKzU4MjQyIGI0ZTY4OGZkNjYwMmE1NjkwMTUwM2UyNjQ2YTk3ZWQ3MmFkOTgxNjcgbGVnYWN5LXRydW5rCis1ODI0MyA5OGZmOWIyZmY3NTc2NTFkNWQyYTZmYjM2MzhlMTA1NWIwNjcyYzk3IHJlbGVhc2UyNS1tYWludAorNTgyNDQgYjkzZWQwNDNmMjcyMWI1YmNmY2UwZTAwMmZhODQ4ZjgxY2EzNmVlZSByZWxlYXNlMjUtbWFpbnQKKzU4MjQ1IGU5OGUxMWQ3NzY4YzY1YjY4MjE4MjcyZGRhZTNhM2Q1MTAxZWNhNDIgbGVnYWN5LXRydW5rCis1ODI0NiBiNzBlZGI1YTc2ODg0OTFjNzNmNTU4NTE1YmM1YTcyMjdmZmY4M2NmIHB5M2sKKzU4MjQ3IDc3M2U5NzZiYWIzYWZiNTE0OWQyNGEzZTFkMTRjZjEzMWNjNWVmNGUgbGVnYWN5LXRydW5rCis1ODI0OSAwYjYxNGZkMmRjMmFlMDU2YjZlMDkwMWE2OTcwODFmNjQ5YzAwY2UyIGxlZ2FjeS10cnVuaworNTgyNTAgOTQ2M2RkYTE5MTYwMTNhZjhkYzc1YWEyOGQ0NGVmNmNjZmQ4MDE5YSBsZWdhY3ktdHJ1bmsKKzU4MjUxIDUzZjdjOTJiNDAyNDc1NWY2MjBkOTM3MTIwMTkyMDc0ODdjYTg3ODMgbGVnYWN5LXRydW5rCis1ODI1MyAyZGMwZTZlM2FkMjAwZTZhYWVjM2NhOThmY2E0MDc0NDdhNzg2N2Q5IHB5M2sKKzU4MjU0IGY4MWUzOWM0MzczZGE1ODNkYzQ1MzM4YzUzYTUxYjliODg4YmE4MWQgcHkzaworNTgyNTUgNzliMGRiMDM1NmQzMWM5YTY0YTVkODhjYWE0YWI1M2M0MzljZjU4ZSBweTNrCis1ODI1NiA4ZDdlOTNiNDdjYWJkNTNmNzNjMzc3OGQ4YTZmOGY2ODQ4ZDU3NTI3IHB5M2sKKzU4MjYwIDFhNzlhNDUwMDNmNWRiOTQyNjgwOTBhY2U2M2RhMGFkYzE1Yjg4NzAgcHkzay1pbXBvcnRsaWIKKzU4MjY4IGI5MDI4NmFiODYyOWFmMDI0MTM4MWMwNDBiMzdlODQxN2JlOWMxNTUgbGVnYWN5LXRydW5rCis1ODI2OSA4NTZmOGVhOTIyZGY1MTI5NDJkYmZkNDNiZDI5M2EyMjFhZmI5YzIzIGxlZ2FjeS10cnVuaworNTgyNzAgZjUzMDA1OThiMTFjYWQxMzExZTMwOGIyYzA1MTFjNzFiYmFiNTUwNyBsZWdhY3ktdHJ1bmsKKzU4MjcxIDE5NDRmNzlkYjhhZDM0NGZlNWVkMWVlOTU3NzlkNWVlODVlOTQ3NWMgbGVnYWN5LXRydW5rCis1ODI3MiAxM2JhYWRhMmE2MDE3MWU0MjJhNDg3YmNhOWQxZjI2Nzg0YWUwMDU5IGxlZ2FjeS10cnVuaworNTgyNzYgYTdjNDhhYjgwOWVjNDg4MWM5MWJjYjgzNGQ3OGU4N2Y5MzVjZDVlNCBweTNrCis1ODI3OCAwZmY0NmVmOTQ2YjEzZGM1MjMzNTMyMjY2NzdiMjNjMTBmZDc4ZDU1IHB5M2sKKzU4Mjc5IDliYzk4NTU4MmNiMjg1NjcwYzE5OGM0N2FlYjRjZjA3Yjc0ZmY5NjggcHkzaworNTgyODEgN2ZjZDk5NDVkMWJmZTM4NDc3NjM3ZGJlYTgyMjg1MDlkYjNkYmQyOSBweTNrCis1ODI4MiBlODhmODNjM2IyNWU4YzllNTIzYWEyZDUwYWRiNmVjYWE5ZThiMjBmIHB5M2sKKzU4Mjg1IDg2NjcxNzI2OWNhMzgyMzUxMzQ0YzhiODkzOTlkNWQzMDhmOTFkNDcgcHkzay1pbXBvcnRsaWIKKzU4Mjg3IDg4MGIwYjIyYzE1YTlmNzFiY2YyZGU2ODJjMDJhMDIxMmQ3YzQ0ZjEgcHkzay1pbXBvcnRsaWIKKzU4Mjg4IDM4MWVkNDEwMDNlNzY3YWYyOTg0Y2VhNTc3NDhhMjc3NTYzNjIxZGQgbGVnYWN5LXRydW5rCis1ODI4OSAxMDZhNzFjNTE0Nzc1MWJiZmUwNTZiYjEyNzk0ZWUyMGZiYjgzZGNjIGxlZ2FjeS10cnVuaworNTgyOTMgYTFjYTRlYTQxZTdlOWZkNTgwOTc5MmJjMzI0NjE1MTM4MTFjYjc4OSBweTNrCis1ODI5NCA5ZDZkOWFjOTVhZTE3NjBkMDEwM2FmOGI0ZjdiZjYxYjMwMDFmNThkIGxlZ2FjeS10cnVuaworNTgyOTUgNzk0MzI2MmU1ZmM0Mzc2N2QwNDk1YmRjNTk1MWQyZGMwMmVhZWM5OCBsZWdhY3ktdHJ1bmsKKzU4Mjk5IGM5YmY2ZTcwMzA4ZTc2NDFhY2JiNzNkYTFhY2RjOGQzNzU3Yzc2YTUgbGVnYWN5LXRydW5rCis1ODMwNCBiMTJjZjQ2N2IwNWNjMmQzNzcyZjA0MjY5YWE4MzU5ODEyYzIyNzVhIGxlZ2FjeS10cnVuaworNTgzMDUgMzMzYjA1MmU5ZGE5YTBhMjBjZGNiM2JmNWY0NmYwOTIzN2I0YmU3ZSBsZWdhY3ktdHJ1bmsKKzU4MzA2IGNkMjgxYzEyODM2ZGM0ZjA4N2M1NGMwNjc0NTcxODczZWUwODM1OWMgbGVnYWN5LXRydW5rCis1ODMwNyA3MzJjYTI3YTY3OGNmZWMxZWY0NGU1Y2ViZDJiMzI5NjE0ZjdlZGQ3IGxlZ2FjeS10cnVuaworNTgzMDggMWIxYTU2NTJmZWQ4Zjc3NmY4ZTQxYjcwZTNjOGU0N2ZiZDRiYTc1NSBsZWdhY3ktdHJ1bmsKKzU4MzA5IDlhZTRlOGE1MzQ4NjYyZGVjYTAyZDZkZmFiNTlhOGZkM2I3NDFhOGYgbGVnYWN5LXRydW5rCis1ODMxMCAxNzZiNjEzMWIwYmFmNDEwM2RmZjQxMjg2Y2VkYjIzYzY3ZTBmM2I2IGxlZ2FjeS10cnVuaworNTgzMTEgNjViMzY1NGM2N2Y2MzFjNjdlNDM2MGEwZjZmYWY5OGVhNTA2NWFiYSBsZWdhY3ktdHJ1bmsKKzU4MzI1IDViNTI0OWRkMTZiNDUwNzliMThjMGNmNGViMDc3YjZjYzAwNjI0MzQgbGVnYWN5LXRydW5rCis1ODMyNiA3M2Y0OTY1NjQyMGJjYTc3MTU3MmZhMjIxNGZhNjM5YjJlMTI1ODhiIGxlZ2FjeS10cnVuaworNTgzMjcgZTg2OTRhYjUzYTVlY2EzZjIxZmE2M2Q4MGQxZGVmYzg5ZmNhZGE3OSBsZWdhY3ktdHJ1bmsKKzU4MzI4IGMwYWJkZDU3OWViMjZhZmY0ODcxZmNjNTJkNTJmNzViOGViZGI0MmIgcmVsZWFzZTI1LW1haW50Cis1ODMyOSBmMmM5ZjI0YTBmNWE4OWQ0ZDhkZTNiYTIyYTM5MjUwYTYzODdhMTEyIGxlZ2FjeS10cnVuaworNTgzMzAgOTk1Njc3MjE5YTY1NTgyYTg0ODZkYzI3ZjQ2NDIzYTEzMGIwM2VlNiBsZWdhY3ktdHJ1bmsKKzU4MzMxIDI3NTExNTk5OWI1ODEyMWZkMzFkNmFkOThlODEzNzI4MjU5ZDVlMmUgcmVsZWFzZTI1LW1haW50Cis1ODMzMiAxYmVhNmZhZmNjNTA1NzEwOTY1M2YxZTVlYjI2MmRhNGU4Nzk3OTY1IGxlZ2FjeS10cnVuaworNTgzMzMgYTU0MzAwNjMwOGJiOWJkOTQwZWI1YjE4YmI5ZmI5NDlmNzliOTVmZCByZWxlYXNlMjUtbWFpbnQKKzU4MzM0IGU4NDExOTdjMWQxN2Y1NWYwYjI3ZTliMzkzZjM5YjBiNjU1YzU5ZWQgbGVnYWN5LXRydW5rCis1ODMzOCAxN2IwNzM3MGE3ODI5MDFhZGYxODI2ODg4NWMwNjZiMTRhMGM0YTA0IGxlZ2FjeS10cnVuaworNTgzNDMgNjhmYzEwN2RkYjUwYjk4YWZkMTM2ODE2ZTliNmE1YjYwMzNhNmY0ZCBsZWdhY3ktdHJ1bmsKKzU4MzQ0IGY3MzUzNTk1YjdmYTgxOWY5NmVjY2VjNjMzMWRhZDIzMDlmYzliNGMgbGVnYWN5LXRydW5rCis1ODM0NSBhY2RhYzQxZjcxMDk3MmE5MjI1MTVlNjI4YTVlOTNjYWNkMWEwZDFiIHJlbGVhc2UyNS1tYWludAorNTgzNDYgZWQ0OTllMzQ4YTExOWQyNzdkZGZlMjE4OTM2MTc3OWY4NGIzMDA0MyBweTNrCis1ODM0NyBhZTJhOTlmYzczZGE2ZDJiZWIxYTJiYjA5ZDFlMmRhMjM3ODU5Yjc4IHB5M2sKKzU4MzQ4IGYzNmQwZjcwNzdmY2JmNWY5NzYzZTI3NDM4NjE3NGI3NDAyNDAzZDkgbGVnYWN5LXRydW5rCis1ODM0OSBhZDM2NmUzMTZlMzA2NGYzYjQ2N2ZmM2EzMzE3YjJmZDM3NTI4YmVlIHJlbGVhc2UyNS1tYWludAorNTgzNTAgMzlmNGM1MDZjZDcxOGIwNDM3ZjgwZmIwMDFjYWY1NGU3NzkxOWEyNyByZWxlYXNlMjUtbWFpbnQKKzU4MzUxIDNjZDE0NjNjOTM4ZDZmN2M4MzI4MGY3OTZlMzEyNGY2ODg5ODQ4ZDggbGVnYWN5LXRydW5rCis1ODM1MiAwNzQxMzBhMDczYjY2ODJhZWQ4ZTgxZWRlYWJlMzQyZWQ5OTI1NGNkIHB5M2sKKzU4MzUzIDIzMTkyYjFiNzFlMjc1NTRkZTZkZjMwNjQzZGVjMWNmZjllZjgxZjIgcHkzaworNTgzNTUgMTRhZGRkYTgzMzQ0MzM3NWUyOTFlZGM1YWE2NzE1MjRiMzA0MjU4MyBweTNrLWltcG9ydGxpYgorNTgzNTYgZjVjNzlmNDNiYmY2OTU4NmUyZmFhY2MwNmI5ZjA4NWI5YWIzYzkzNCBhbGV4LXB5M2sKKzU4MzU3IGEzYmFkNjk0YzI4MzlkYTNlZjdkZjVlNTU1OGVlZmM3NzhiZTMzNjcgYWxleC1weTNrCis1ODM1OCA5NGU1MzZjMzY0NDkzZmM4YWM2MjYyNWM1ZGE3YTY5YzNiYWYyYmMyIGFsZXgtcHkzaworNTgzNTkgMzA0ZDJjZWExMzc4MzViNzRkMTI5NTMxMDQyY2MxZjliNTdmNTc5MyBhbGV4LXB5M2sKKzU4MzYwIDhjMTBhYWMzNzAzNzkyNWRjY2I3YmJkZmI0YjcxNGI2MWJmYjNmZmIgcHkzaworNTgzNjIgOGJhNTMwMGNiNGIzYjVkNmIzODA3MWM3NTYxOTY1ZGQ0NWFlZTMxNiBweTNrCis1ODM2MyA3NjdlMGMzMTBhNmFhZmE3ZjA5YmNkZDdiNTdiZGVjNDRiY2M1NDkxIHB5M2sKKzU4MzY0IGY2MTQzYzQxMTcxMzU2NTAxZTQ2YWVjYWE3ZGFmMDRlOTdmODVkOGUgYWxleC1weTNrCis1ODM2NSBmNjA2MWM3MWE0ZDIzNmI2ZThkNTNiOGNjMzdmN2ViZDYxOTAyNjgzIGFsZXgtcHkzaworNTgzNjYgZmFiNDA4OWRhYjlmOWYwZDE3NWVkZTliOTQwNGM3MjhkYzM2MzQ0MCBweTNrCis1ODM2NyBkZTQxZTk3OWFlYmViODk4Y2I2NmE5YTJkZTZhMjVlZDUxZjUxNThjIHB5M2sKKzU4MzY4IDA0NTk1MmZmMDhmNzQzYjIzMTYzNTI5YzdlZTJhM2NiZDU5MDE0NjcgbGVnYWN5LXRydW5rCis1ODM2OSA5ZTYwMjBiYjIzNTIyYjMxYzhlOTcyZDAwYTRjMzU0NTkyOTk4ZjRkIGxlZ2FjeS10cnVuaworNTgzNzAgNGRiNWRhYjdmMjM1ODlkYWM3ODQ0M2RhYjRlY2I0MGUwYWI3Y2YyMyBsZWdhY3ktdHJ1bmsKKzU4MzcxIGZmNGJiZTY4MjNmYzliOTMwYTJhOWUxZDE5OTM3MTY4M2ZmZTBkMTUgbGVnYWN5LXRydW5rCis1ODM3MiA5MTkwNGYzZTdiZTFiYTRlNzhlMzExOTdlNWFhMzJjZWYyNTE1NmNiIGxlZ2FjeS10cnVuaworNTgzNzUgNjYxNGQ0MmQ3ZjBhMzM1ZDliMWQ0MWVhMDUxY2FkMzk1NTVlYTBkMyBweTNrCis1ODM3NiAwYmEzODEwMGNkYTkwMzI1MTVhNzdiOGIxOWNjMGZhNzI2MjMzMWYyIGxlZ2FjeS10cnVuaworNTgzNzcgOGJkOTEwMDM2Yzk3Zjc0MGI3MGI0OWMxMWE4Yzk5N2JhYzljOGY4OCBhbGV4LXB5M2sKKzU4Mzc4IDU3MTNiMTc2ZGRiNjk4NDg3ZWU4ZGIwNjRhNWUxMzUxODkzZTkxYWEgcHkzaworNTgzNzkgMjdhZjQ1MjQ5YTgwM2QxNWM2MDFmNzcyNDQ1YWE4YjFhOGRmOTEzMyBhbGV4LXB5M2sKKzU4MzgwIDY1OTg3YjM4ZGYyZTM1OGNkMzMyY2VlMmQ4NGVmNzIwMzUxOGY4ZGUgbGVnYWN5LXRydW5rCis1ODM4MSA5NjVlNzE1NDE3N2M2OTUwNTkzODEwODU2MTJiY2U5NTVmOGE1M2M1IGxlZ2FjeS10cnVuaworNTgzODIgZWJmMmE1Y2YxM2ZiZGUxZTQ1ZGYwZTI2ZjA4N2Y1MTgyZWU1YTlhYyBsZWdhY3ktdHJ1bmsKKzU4MzgzIDk4ZjYxODBiOWIzMzMwYjEwMWY0YzEwNjM2MjFkZTYwODNmZTBkOGIgcHkzaworNTgzODQgMzMwMjFlNDAzZjNjNjU5ZGEzM2M3MDYxYWI0YTY2ZDI3MTM4YjczYiBsZWdhY3ktdHJ1bmsKKzU4Mzg1IDljMzAxNWZjNWJmNDU5OTcwMmRhN2FjZjBhOTNlZjM5YTUzYzM2NjQgbGVnYWN5LXRydW5rCis1ODM4NiBjNDhmOTM4MWRkZjEzMGY2NzQ3YzJiNGZmODVlY2ZhMDFjYWI2Y2QyIGxlZ2FjeS10cnVuaworNTgzODcgZGM2ZTJhZGY4ZGQyYTMwNmU5ODZiN2Y2ZmYzNTMxNjBmYjIyNjgwMCByZWxlYXNlMjUtbWFpbnQKKzU4Mzg4IGExYjc2NzU3ZDYyZWUwZmIwNjE3NTZiMzNmNDEyYWY1MTBjN2Q2YzEgLi4vY3R5cGVzLWJyYW5jaAorNTgzODkgMjRkMTExODA5NDgwMDk0YjM3MTNiMDllNGI3NzE3MTcyNDVhNGQzMiAuLi9jdHlwZXMtYnJhbmNoCis1ODM5MCA0N2MwMjc5MWVjNmIyYzZiZjE2MGNjYjc3NjdiN2QzOGNkNDE4MDRhIHB5M2sKKzU4MzkyIDRhNzJmYzVkZmI3OWIzZDIwYTc3ZjVhY2MxMGUzMmNlYjQyNWZlMzYgcHkzaworNTgzOTMgYzk0ZGE4NDc2NWVlMzAyNTJhYjg2ZjhhMDg4MDMzOTI3ZTliNjFhMiBjdHlwZXMtYnJhbmNoCis1ODM5NCBmYTkzZGQ0ZTM0YmMyMzA0NjdiMTkwMGNiYzY5NjMyZmVmODkxZWIwIGxlZ2FjeS10cnVuaworNTgzOTUgYmMyNWJhZmEzM2IxZmM0NmY4ZDgxYTM3MGU4YTJiZTJmOTg3N2QxOCBweTNrCis1ODM5NiAzN2Q4MjcwYWM4ZDk2MWI0ODNiODU5ZjhhMDAxZDg4MTQ0OTNhNWZjIGxlZ2FjeS10cnVuaworNTgzOTcgMzQwZTZmZDVkNzVmMDU1NTUyODg0NmM0NjhkZjcwOGMwOTM1Y2FkMyBweTNrCis1ODM5OCA0MTViMWJhY2ZlZDdhZjAwY2QzNTU2NWMwZTMzZDAwZjYwNjNiY2RiIHB5M2sKKzU4Mzk5IDhjNWU2MGRkYWE4MjdiNWYwMTczNTE1YTNiMTExOGZkZDFkZGFmMjIgbGVnYWN5LXRydW5rCis1ODQwMCA4ZDQwYzUzNDhjYTlkOTNkMDJkODgwYWI3NjgxZDQxYzYyZmU0ZDU2IHB5M2sKKzU4NDAxIGRhNTJiNGM3NzZhNDU0ZmExYTBkOTBhNTYzMGEzYmRjNzUxMmIyNDYgbGVnYWN5LXRydW5rCis1ODQwMiAwNmJhNDJjMmMwZDA3NDZhNTZkNWY2YzNmZDE5MzM2MTVmMmFkZjk1IHB5M2sKKzU4NDAzIGU1ZDY4OTNkYmIzNmVmNDRlOTAyOGJiNmZjMzM1YjYxZTNhMWQzOWUgbGVnYWN5LXRydW5rCis1ODQwNCAxZDUyZTc4Mzg0MmRhMWE4MDY3MTA4MWE5ZTgzN2M5NTlkMDFhOGI0IGxlZ2FjeS10cnVuaworNTg0MDUgOWY3ZGUxODQzMWZlOTUwZDUzOTFlNTc3NGVlZDFjZDA0NTgxMDk5OSBjdHlwZXMtYnJhbmNoCis1ODQwNiBmZmVjNDlkM2QyMTU0NzFmYmRmZWFkN2IxMWRlNmEyY2NmOGZiYmM1IGN0eXBlcy1icmFuY2gKKzU4NDA3IDRmOWVjZWE4MTc3Y2JlZDk3YjlhNmMxOGY1MjEyZmFkOGJkYTBjODYgcHkzaworNTg0MDggYjRkOGY3MTQ1OWU5NDliY2QwNTcyNTMyMTNhY2Q0MDk3YTZkZmU2YSBweTNrCis1ODQwOSA0YzE4OWM3MTQ0Yjc5NGI0NjdiMzRhYWM4Y2U0NWU2ZDMxOGYwNzMyIHB5M2sKKzU4NDEwIDJmMzBiZmI3YzczODVmMzhkMDQ3N2RiZDhlODVjZGZhNDU5YTA4MzEgcHkzaworNTg0MTEgYjlkMTlkNTFkZTM2OTc1YTVlN2M0NTcwNWQ5NjU1NjBkNDMxMWMxMyBweTNrCis1ODQxMiA2ZTYwZjY1ZmYzNjQ3YzlmMTcwOGM1YjU0YWY2NmNlMTY3NjM1OTAyIHB5M2sKKzU4NDEzIDJiNzQ2ZjI4YjM5OWE3MTA2OTdkOGEzMTBhYzIwY2FhZDZlOTJkOGQgcHkzaworNTg0MTQgOTkzNzFiZDJjYThmODdkOWI1YmJjNGNlNDBlZWM1YzgzMTdiODc2NSBweTNrCis1ODQxNSAwMjcxMGI4OTcwMWUwODM3NTMxNzE1YzY0ZDkwMTUyODhmN2U5ZjY2IGxlZ2FjeS10cnVuaworNTg0MTYgMzljOWI1NjEyNDUxYTI3MjczODQ2M2E4MTBhZDBjMjU2Y2MwZTQ5NSBweTNrLWltcG9ydGxpYgorNTg0MTcgMzljYjVkOTZjZTc3MDA0ZTk3Mjc0YTQxZWYwOTA2YTZiMmZiZWJlMCBweTNrLWltcG9ydGxpYgorNTg0MTggOGM1YTQzM2E5ZDkwZTdkYTM1MWVjNTU0MTMyY2Y0NzYxY2U0ODgzZCBweTNrCis1ODQxOSBiZjEwMTQ0NDhjNDE3ZDk0ODU2ZWIzYzEzN2RjYzJjM2NkNDllNGJhIGxlZ2FjeS10cnVuaworNTg0MjAgYjYzNzhmYTZlMTY0OTBhNzJhNGY2ZmQ1NmZkY2M0YzBkYjcwMTM3YSBsZWdhY3ktdHJ1bmsKKzU4NDIxIGNhOWIwOGU3ZGMyM2RhMDEwYjBmMWQxYTdlZmZhMjRkNWFkMTQ4OGEgbGVnYWN5LXRydW5rCis1ODQyMiBlNDlhZTk5ODA4MDgyMmUzNDcxYTlkNGFjYWI3Yjk1MGY4NjZhNmQzIGxlZ2FjeS10cnVuaworNTg0MjMgMTZkNGI5MDQ4NTFmZTBhMWIxNzQ2MjQ2ZTdmMjM2ZTY2N2U0ZTYxYSBsZWdhY3ktdHJ1bmsKKzU4NDI0IGNkYTBiNjI1Mjc1YTYxYjFhNmIxZGNlMjRhNGU4YzI2ZmFlYzI2NTEgbGVnYWN5LXRydW5rCis1ODQyNSA5YjZhNDczY2ZhMjI4YjJkNzJlNjRmZDZjOWJjMGViMDYzMTNmYTA5IGxlZ2FjeS10cnVuaworNTg0MjYgYTQ0ZTRjYzMzZjVlMDNkY2VlNTljZDI0YzMxY2FjZGQ1ZTkyNjFmZSByZWxlYXNlMjUtbWFpbnQKKzU4NDI3IGEyNjIxNzhjMWMwYWY0NTJjYzcxOWZmM2Y4ZWYyNTA5MmVkM2UyZTggcmVsZWFzZTI1LW1haW50Cis1ODQyOSBhM2ZkNmU1OWJhODM2ZWNmNDcxMzgwODA2NmMyZTc4YzY5ODU3Yzc5IHB5M2staW1wb3J0bGliCis1ODQzMCA4MWY1OThhNzZmNTlmYTM0MjgwZTY2YTA0OTZjMTA4Yzg1ZDc1OGExIGxlZ2FjeS10cnVuaworNTg0MzEgZmMwNDhiNzJiZjNkMDhhYmE0Njg0OTY1YmJkNzMyZWU0NzlkOWY5NyByZWxlYXNlMjUtbWFpbnQKKzU4NDMyIGQwYmEzOWRlN2FiN2U1MGM4MTAwMzBhZjY4ZGIyMGRiNGRmMzEyOWQgcmVsZWFzZTI1LW1haW50Cis1ODQzMyBmYjMxMGI4NjIwZWNlMWQxNjVjNTc2MDU1MGE5YWNkMjZlMjVkMGVkIGxlZ2FjeS10cnVuaworNTg0MzQgOTYwMzIyMWJiYTkwMmFiMDMyZDBlYjQ2MGMyMmM2N2YyMDAwZGJmYiBsZWdhY3ktdHJ1bmsKKzU4NDM1IDEwNGQyZjI5Zjg4NmI4YzkyZWI3NTUzMjI0ZWE1ZjUxZjMyZWJiZjUgcmVsZWFzZTI1LW1haW50Cis1ODQzOCA2YTk3ZjcyNjBjYWQwOTg1ZjM4ZjBkZTRiMmJlMWNmZGI3NmZlYjdmIHB5M2sKKzU4NDM5IDgzM2IwZTc4MTUwNmRhZDBhMjkyNDVjYzNhYTY3MWJlZDFmZGMzODUgcHkzaworNTg0NDEgZmI5ZDUzMDZmNGM3MjI0MGJjZmQ0ZDI0M2M0MjMzMjZjZWNhMTdlOSBweTNrCis1ODQ0MiA5OTNlMjRjNzI0YjhjN2QzMmJjYjkzZDE1ZWFjYjE4ZmU1NTQ0MTRiIHB5M2sKKzU4NDQzIDRlYTk0NWNiYmI2ZDQ5ZDFlNDEzNTEzMjhjYmU5NDljZThmMGUwNTkgcHkzaworNTg0NDQgNDgzY2I0MWE1NjkxYmI1NTZhZjUyMjlkNzdkYzU5NTdkZDJkZjYwMyByZWxlYXNlMjUtbWFpbnQKKzU4NDQ1IDM1ODY2MzFkOGQyMWM1OTM2NzU4M2Q3ZjI3OGE2YWFhNDU4Nzc4OTAgbGVnYWN5LXRydW5rCis1ODQ0NiA5ZjAzNjYyNjBjZmJiNDg3MzcwOGVmMWEwNWUyNDMzNGQwMzFmYjEyIHB5M2sKKzU4NDQ3IDY0NGUyOGVhOWIyMmE0NjBmZmMwYzU3MmNiNDY3M2IzOWJhMzhmNjkgcHkzaworNTg0NDggOGU3MmRhY2Y3ZjNhNTI3YjEyNWE2ODk4OTVhYTA3ZWNhYjg2MWIwZSBweTNrCis1ODQ1MCAwMmEzM2RjYTQwMDFhNThmYzlkNWFlZjI3ODBkNDZiZmY3MWNmODY2IGxlZ2FjeS10cnVuaworNTg0NTEgYzNhMjU4MjBmNTEyMzVjZDRiZTdkNDI2MWQ5YTViYWNlNzM3ZjkxZCByZWxlYXNlMjUtbWFpbnQKKzU4NDUyIDk5MjVjZTFmZDdiZTdkZmI0Njc5ODQ3MTMwMjNlMWFmYTEzZjY0ODIgcHkzaworNTg0NTMgMzA2ZDUzOTVkZmEyOTk4MDk5ZTQ5NTNkNWExZjVkOGNmNjdlOWY5ZCBsZWdhY3ktdHJ1bmsKKzU4NDU1IGFjNjJlYjI2NzIwNmUxNWQzOTk0NGI2NjNhNzdiNjA5ZTk4ZDYwMmEgcHkzaworNTg0NTYgMDAxNTU3MmQxMWJjZjk4NjNmMTEwNjI2OGQyMWEyZWFiYWM3ODIwNiBweTNrCis1ODQ1NyA5ZmJmNzMzYTA2MzliZWE3N2Q5MTA1YmVjMWE4N2RkYjk3YWVjMmVjIHB5M2sKKzU4NDU5IDRlMDVjMjRlMjZmOGE1MzRiNjRiNjlmZWExYTM0ZGEzMDA3ZThjYTMgbGVnYWN5LXRydW5rCis1ODQ2MCA3ZTI3ZDUwYzg2NzIxZTYxZmZmZmU5NzA0YmQ2NjNhZTgzNjdiN2NjIGxlZ2FjeS10cnVuaworNTg0NjEgYjQwMzVkMzY2NWJiODMwMjIwYjFjMzVkNTdkZmZkNTZjYmVmNjJmNyBweTNrCis1ODQ2MyAxMjZkMmZiNzM1YjVhMjY0YzA2YTVmODE1MzZhNjMzMTIzZDIwYWU4IHB5M2sKKzU4NDY0IDVhZDU3OGFlOTg3M2U2MTc0Njc4MDgzZDNlYTMwMzM3M2IyMjdlMTAgcHkzaworNTg0NjUgOTAyOTRkODBhM2M1YmNmZGU2YTIzOTkwNDUyMjE1MmMyY2I5ODZlYSBweTNrCis1ODQ2NiAxOTMxOWU3MGZjM2VkYmI0NWIyZDAwNzE2MWMxYjNhMWRlMDk0MTgxIHB5M2sKKzU4NDY4IGE1YTRiNzg2YmIyMTViNmIwYThiYTk0MGI4NDZjMTFlMTRjZjRkNjcgbGVnYWN5LXRydW5rCis1ODQ3MCAyMTk1ZDFmMTc5NTgzYWY2ZjBjM2VlODVmZjU5N2NlNmZiZGVkZDY3IHB5M2sKKzU4NDcxIDY5NzQwMGZjZTdjNWMwNGI1YjE3ZGU4ZWM3MGRlN2RjMjI4YzM1ZWEgbGVnYWN5LXRydW5rCis1ODQ3MiA1MDU5OWJiYjBjNjcyMzk5MmNlNzQyNDdhZmY2ZmJlODkwOTg4NDk0IHB5M2sKKzU4NDgxIDE2ZTIzN2VjZTI3ZDM5ZDQ3ODE1NGVjOGVhMGIwNTYwMjE0NGNkZWQgcHkzay1pbXBvcnRsaWIKKzU4NDg1IGM5ZTYxZDY2ZmY2NTE4MjgxZWM2NDBkM2UzMzcwZDZkZGZhYzVjNTQgcHkzay1pbXBvcnRsaWIKKzU4NDg2IDZjYjYzOTdkMjIxYWYyYThhMzczZDdmNmViM2EwM2MxOTI5MzJiM2MgcHkzaworNTg0ODggZDcxMzg0Y2I1NjA0NGRhMTk5MWFmZWZmM2I3ZTc2YTE2YzQ3ZWI0YyBweTNrLWltcG9ydGxpYgorNTg0OTEgZTcyYWQ0ZDI1NmU4NDBiYjdkOTg0NTA1NTA3M2YwYjM4MDBjOTc3YyBweTNrCis1ODQ5MyA2OTdjYzMxYTgzZjY1ZTkyMGQyZjIyM2VjZGNkZGI5MjY4OGVkMjdkIHB5M2sKKzU4NDk1IGFjZTQ1YjM2MWU4NzNlMGUxN2Q4MjIwOTZiYmEzMzQ2NTkxNGE1MWIgcHkzaworNTg1MDAgNDA2MDA0N2IzZjFkM2IyMGNmMDE0ODcyZGExMTFiNDFjNmYzOTU0NSBsZWdhY3ktdHJ1bmsKKzU4NTA2IDA0NmVkYWExNTY2YTdiODg1ZDY4YjU4NGFjZWNjZGM4MWM2MmMyMGEgbGVnYWN5LXRydW5rCis1ODUwNyA3Y2EwYmMwYWQ5NjAzNWJjY2QwNTFhYjI0YjI0NDdlOTMyY2Y4NTQxIGxlZ2FjeS10cnVuaworNTg1MDggMDE2ZGE4ZTJmOTRiOGNjMzgzYzBkOTQ0NjE2MTdmMTVmOTJiYzc0MyBsZWdhY3ktdHJ1bmsKKzU4NTA5IGM4ZWUyNjA3MzA1MDNlOTkxZjIxYWFmNGUwMGNmZWExNzk2YjcyN2MgbGVnYWN5LXRydW5rCis1ODUyMiA2MTU3ZTBkMjdlZWY2MTM5NGFmZGQ2YzgzYWQ0ZWQxYzg5MGYxMDRkIGxlZ2FjeS10cnVuaworNTg1MzAgZGE0NDMzNGViZWEyNDUyY2IyMzAyYjgzOGVhZjhjZTA2MTZlMTdkZCBsZWdhY3ktdHJ1bmsKKzU4NTMxIGYxZjcwMWMyMjRjMWMwYjllNGJkZDY5ZTRiNWViNjAwMjFmYjBiNzIgbGVnYWN5LXRydW5rCis1ODUzMiAyN2E0ZDIyNGVhMWI5MDlhYWNiOGFjZjg5ODBhOWM5OTZlYmE3OWFiIGxlZ2FjeS10cnVuaworNTg1MzMgYjgzMzQ2ZjNiZmFmZGE0YzNmMTcxOTJhMzFmN2UxMTZiM2ZmZWRlMSBsZWdhY3ktdHJ1bmsKKzU4NTM0IDE0M2FjYmJmYWZkN2M3MDZlY2NmODc5Yzk5NjA0YTI4MjY4NjVlYTEgbGVnYWN5LXRydW5rCis1ODUzNSA2ZGI3YmJlOGYyN2NlNjcyNDJlOTZmMDJiNjdhMGViYjU0YWFlYzEzIHB5M2sKKzU4NTM2IGQyMTY1ZGMxYjA4ZGZjMDY1MTk2ZGY0ZjhkMGQyNzZkYjJhYjI5ZjggcmVsZWFzZTI1LW1haW50Cis1ODUzNyBjYzE1ODM2YjY4MDhiOTk4ZmJlZDk0MTk2ZjY3OTBlYjI4N2ExYzBhIGxlZ2FjeS10cnVuaworNTg1MzggZTlhZjcwNjM4ODg4ZGZkMGZkMDljMWJmMWU3NTE4MzhmMzhiN2QzYSBsZWdhY3ktdHJ1bmsKKzU4NTM5IGYyNjc3ODQzMDQ3MDA0ZGU2MzYwMzQyYmU2ZGQ5YjY3N2Y4MmIxNDIgbGVnYWN5LXRydW5rCis1ODU0MCA0NDUwN2M0ZGVjMmI1ZjI4NDQ4N2NlZDMwNjE0ODE1ZjgzNDcwYmY1IHB5M2sKKzU4NTQxIGQzN2MwMDUxNDA2ZTY2ZTQ4M2Y5NTJiYWM4MmE5YzY0NGViM2YwOTQgcmVsZWFzZTI1LW1haW50Cis1ODU0MiA1NDhkMDZlOThmNTY0NWNmNzA2NDUwNTQyNWVmNTA0OWFkMjQyYzhiIGxlZ2FjeS10cnVuaworNTg1NDMgYmI1Y2I4OWVmZTE4YWU4YzBlNDU1NGRiZTdkMzEwNjFmYjYwMjk2ZSByZWxlYXNlMjUtbWFpbnQKKzU4NTQ0IDk2YWY0MWU1MGU1NjExN2NkNmVhYzdlN2UyNjk5NzNmYzE2M2Y0YjAgbGVnYWN5LXRydW5rCis1ODU0NSBiZGQ5MjQyNTE4MGY0YmRmMzNiYWMyYTQyMGYyZTc1OTA1ZGE1NWEyIGxlZ2FjeS10cnVuaworNTg1NDYgMjMyMGNkNGY2OGI1OGJhN2ZlYjEyNjg5NzExM2NhMTliYTJmODY3NCByZWxlYXNlMjUtbWFpbnQKKzU4NTQ4IDhhMDE2NzQxNjIyMzIwNTkyNWRmNWM1NDYwYmI0MmU5MTUzNjY2MzYgbGVnYWN5LXRydW5rCis1ODU1MCA4MDc0NGM4ZDM0ZDhiMTRjYzUyY2YyMTk0MDYyMGZlMTU0M2Y3ODZkIGxlZ2FjeS10cnVuaworNTg1NTEgZGQwM2FhNzQxZjU2ODg5YzUxMjYyOGY2MjZmNTFmMTJmZmJlY2EzZCBweTNrCis1ODU1MiBiMThmNjA5MmY2ZTAxNzdlZDI3ZWQ4ZWY2Y2YyMzY4YmQ5MzVlODhmIHB5M2sKKzU4NTUzIGEyYmI3NmQxMWQ2NmIzMTNlNGE5NThmZGU1MDI4MTk3Y2ZjNzgxNDkgcHkzaworNTg1NTQgNTdmM2YxMjZmM2Y3MDEyY2IyY2VlMTQyNzg1ZTRjNTczNGI1MzczYSBweTNrCis1ODU1NSA3NTkzNDM2MDU4ZGQ1MzEwMTQyZmY0NTJjMGU0YmI5YmZmYTM0ZWQyIHB5M2sKKzU4NTU2IGYwYmNjMTFjYTk2NTY1OWQ0MzFjOTI4YzJhN2JlYWI3ODg4MWZiMjUgcHkzaworNTg1NTcgZDM3OGFjZGMzMGVlZDIyY2U4ZDY4YjViZjc4ZmE1ZjM5NzZkNGJlZiBweTNrCis1ODU1OSA2NWZlMTk1NTE4Y2IyZmQwYmZmYTQ4MTkzNzc1NzJmYmJhMzIxOGYyIGxlZ2FjeS10cnVuaworNTg1NjEgY2I5NGViZDlhZmE3YTFhY2Y2Zjk1NWQ0ZmZmYWFlMDdlYzAwZmY2MSBsZWdhY3ktdHJ1bmsKKzU4NTYyIGEyMTQwZWI1ZmM2YWNlZjE0ZThkZGM5Nzk3NzQxYWYxNGE3NzU3YjAgbGVnYWN5LXRydW5rCis1ODU2NCAzY2I2Nzg2MjhhZjM4ZTg1NmNlZTNkMzZiODA2YzgzZGQxMGJlNGM3IGxlZ2FjeS10cnVuaworNTg1NjcgMjUyYjlkMjJjYTU1NWM3MGMyYjhmMjBjMDQ0YmJkNjlkNzQwZTA0NiBsZWdhY3ktdHJ1bmsKKzU4NTY4IGQ3Mjc5YzMyMWJiN2NjOGUyNGRjM2NhNWZmYTUwYjc5MzA3YWRkNTEgbGVnYWN5LXRydW5rCis1ODU2OSAyMDFkZDA5NDk5OTkwZWYxMjlhYTBlZTViNDhjNjZkNWE4Y2IyMjY3IGxlZ2FjeS10cnVuaworNTg1NzAgYzRjYzNjMjQ4OWEwNDgyOTUwYjk4MWQxZjE3ODk4YzcyZGM4YWE1YSBsZWdhY3ktdHJ1bmsKKzU4NTcxIDg4OTk3ZjA4MjE3NDlhZDBmZTE1NmM3MTUxYjIwZjM3YWQ3NzA2NWQgbGVnYWN5LXRydW5rCis1ODU3MiA1ZTQyMTE3ZjljYmNjMDEwNTM1MGIxNGIyOTkzNDdkMGViNTA0OTRkIGxlZ2FjeS10cnVuaworNTg1NzMgMjUyOTZlYzAyYjE5YzUxZmQyZDFmNDZlZTRjNTc2MGFiMWYyNGUwOCBsZWdhY3ktdHJ1bmsKKzU4NTc0IDVjYmExNGE1NjRmZGRmYWVkODAwMTZkNzU2MWViZDMwMWQ0ZTIzYjEgbGVnYWN5LXRydW5rCis1ODU3NSA4ZmUyMjY5MzFlZTcyMWFlM2RjYTExNWFkNGM4N2E2ZjI2YzdkNmY4IHB5M2sKKzU4NTc2IDdjMzVhNTkzMTc1NWZkNjVkMDBmODA5MDk0YzYxM2IxMjVhOTBhNTEgbGVnYWN5LXRydW5rCis1ODU3NyAxYmY0NzYyMzlmMzk1OWUyMGJjMGQwNTk1ZDUzNzMzOTM0MjYyNTY5IGxlZ2FjeS10cnVuaworNTg1NzggYTU3NjM1MTAwZGMzOTQ2YjE2NmQyYWU3ZDgwY2ViNThhZDRmYjZlZiBsZWdhY3ktdHJ1bmsKKzU4NTc5IDQ4MjIwZDY0NGM4ZTEwOWEyYzAxM2E0MDJmOWU3NzNmYzFiOTQ3MDggbGVnYWN5LXRydW5rCis1ODU4MCBmYWY1ZGU2OWU5NzcxZTY3NjZhMDg0MGFmNTIzMTA2NzhhYTkyMDkyIGxlZ2FjeS10cnVuaworNTg1ODEgYzVjOTdkN2FlOTBjZThmNGY1ZTdlNDhlN2U2NzFhMjVmY2Y4YjM5NiBsZWdhY3ktdHJ1bmsKKzU4NTgyIDRmNjYyYmEwOWYxZmJlMzg2MWZjZDVhZTg1YzBjMzUyNmRlMWJlMzMgbGVnYWN5LXRydW5rCis1ODU4MyA2ZGY5ODU3NDRkOTY3OGZhOGIwOGYyOWE5ZGM5Zjg2YTQ3MmE2OTg5IGxlZ2FjeS10cnVuaworNTg1ODQgMDMwNTYzNjVhMWI2NjJjYWYyODc2YzQzYWQzZmU1ZThiZTczOGIyMiBsZWdhY3ktdHJ1bmsKKzU4NTg3IDAwNjdhNmFiNDg1NGU3MTY1N2E1YmI5MmI3MmFlMjcxN2YyNmEyNmQgcHkzaworNTg1ODggOTAyMTI1YjU5NGNjODk5Zjg4ZTcwNTc5NzllZTlkOTQ1MDVhNTU1ZCBsZWdhY3ktdHJ1bmsKKzU4NTkwIDE3ODI1ODNmMTE1OGJmMzU5MDM1OTdmOTRiZmUyOGRiZWVkZTI1MDEgcHkzaworNTg1OTIgYTU4ZjMxOTM3ZGFmOWNkY2RhN2RjOTNlZmViNDFhNzJlYWZmNmNkMSBweTNrCis1ODU5MyBlODJkOWE4OGVkOWU0Mjg1MmM1YWRlZjFkNGMzNWFlN2E3OGEwYTM3IHB5M2sKKzU4NTk0IGI2YTI5YTBlYTMwN2QzOTM5ZGU3ODRlMDllYjIwYjk1N2JhOGI5ZjIgbGVnYWN5LXRydW5rCis1ODU5NiBiMTA1NDQ4MjdhZjcwYjM1NzAzYzJhNGZmM2ZiNDM5M2EzYmE4Nzc2IHB5M2sKKzU4NTk3IGEzMmU3ZWM5MzM5NGUxNTI1ZGVjY2ZhYjIxZTk2OWZiMWM5YzIyN2UgcHkzaworNTg1OTggMDQwODhhYmY0ZTRmZDAzZTc4ODU0NTZmZTM4ZDE3ZmMzZjg0NGI2YyBsZWdhY3ktdHJ1bmsKKzU4NTk5IDUzZWU4OTQzZDE2NThkYWFjM2E4MGZmODE5NzE3NTAyODhiYWY0ZmIgcmVsZWFzZTI1LW1haW50Cis1ODYwMCBkYzgxYmNmYzM1MWFlMDFiYTM3ZTNmM2I2Nzc3NDQwODdmYTc3YzY5IHJlbGVhc2UyNS1tYWludAorNTg2MDEgZWI5MDhhMTljMDVhMjRlMDgwMzA2NmI4NjVjNzUzOGM4YjNkYTE1MCBsZWdhY3ktdHJ1bmsKKzU4NjAyIDk1ZDhjOTEzZThiZjM2MTEyZWM3N2JhNjM2YzcxMWJiMWRkMTQxM2QgcHkzaworNTg2MDMgOTk1MjZjNDAxNDdiMTQ1YjRiYzIwYTAxNzlkYWJkZGJiNmNhYmFhMCBweTNrCis1ODYwNyBjZDViMzgzYTM5N2U2ZTIxMmRmNmZmYjVkMzI2YmRkMmEyY2FjYjI2IHB5M2sKKzU4NjA5IDQ0MWQ2MDlkMDk2YjVkZjY2MDNlMTRmNzQ4Y2JhNDc5NjI4NjI0OWQgbGVnYWN5LXRydW5rCis1ODYxMCA2MzRjM2Q0MDQ4ZTdkN2Q3MGU2NTE5NjNiMWM1ZDhhZWRlODFjOWM5IHB5M2sKKzU4NjExIGY5Yjc5NTRkNzg4ZDYwY2QwNGQ1MjRlZjIyNmY2ZmRhZGE4NzRiMWIgY3R5cGVzLWJyYW5jaAorNTg2MTIgZGE4MjMwZmFmMmFlYmJmYTMxODBiNDg4YWFjNTM4OWJiMmYyYWU2MyBweTNrCis1ODYxMyBjOWYyODY5N2UxOTk1YjkzMDBkMjA2NmRiNTVlYWJlNzRlMzM5NGI3IHB5M2sKKzU4NjE0IDc5OTA0ZTg0MWRmMzgwYzYwZGJhYzcwZjg5ODZiNGMxYmEzZTRmMDAgY3R5cGVzLWJyYW5jaAorNTg2MTUgMzQ3OTJiOWU0YjQyOGRlYjE0ZDY2OTlhZmMxYjdhNGZkODQ1NGYzNyBjdHlwZXMtYnJhbmNoCis1ODYxNyAwMDNkMzUyMTVlZjJhYzYyNjdlZmQxY2E0YzVjYTVkNzFmZjlkM2VlIHB5M2sKKzU4NjE4IDBjYTFkMjliODNjMmI2ZGE5ZGFhZTlkMmIxNzBiOGRhOThkZWZjZmEgbGVnYWN5LXRydW5rCis1ODYxOSAwYzc2ZTUzYzFkNjUyZTEzNzg4M2QxOWE3NWY1MWM3OTY4ZGJkNDhlIHB5M2sKKzU4NjIwIGEwOTgzZjU1Yzk1NzVjZWNmZmUwZDA0Zjk1NmFlZWU0MWMzMmJlYjMgbGVnYWN5LXRydW5rCis1ODYyMSBhNzYwYzFhMDdkMjZmMGE4ZjExNTY1ZjdiYTNlN2NlODJjMTczYjdjIGxlZ2FjeS10cnVuaworNTg2MjIgMzZiMmFhZjQ1N2I0YWUyYjg0MmNkZjFlZWQxODQ3ODNhYjU2MmFjMyBsZWdhY3ktdHJ1bmsKKzU4NjIzIDA4ZWUyNTZhOWJkMTE5MTY0MjMwMzI2ZmMyNTZhOTlmNzdmYWJmZTcgbGVnYWN5LXRydW5rCis1ODYyNCA3NDA4ZTFhZTk4YzRhMDc1YmNhOGFiZWNhN2E3ODZhMTc1YjRhMDNiIGxlZ2FjeS10cnVuaworNTg2MjUgOTc0ZTY0Y2MwODNkY2E5MjZjZDQzMWMzNTA1NDY0OTUyNjkwZTFmYiByZWxlYXNlMjUtbWFpbnQKKzU4NjI4IDNhMTRjOTA0ZGEyMzI3YzA0MTBkZDIwYTQ3YmZhMzliNDIyYTMxMmIgbGVnYWN5LXRydW5rCis1ODYyOSA3MzIyNzVjNDAyNmI1MjBiYTRlMTY0ZTZjZGM5MGNkNTIzMDJlODAwIHJlbGVhc2UyNS1tYWludAorNTg2MzAgZTUzZDk1YzNjMGM0ZGIxNGU5OWViYTNhY2MxNjk5ZjJiNjU2NGUzZSByZWxlYXNlMjQtbWFpbnQKKzU4NjM5IDNkZjVjNzQ2MTYwM2NmYTlhNTViZWM3OWRkMGYxNTdjYjc0ZTU4MTcgcHkzaworNTg2NDAgMzNlZmJmYzI4ZDJiMzc5YjUzYzUyZDI3N2NjMmU2YjQ3Y2VmZWU5ZCBweTNrCis1ODY0MSA1OTBhMWJlZWVmODlkMWRhYzFkY2IxMjRiZWYzM2NhYzdkNmEzN2M4IGxlZ2FjeS10cnVuaworNTg2NDIgN2M3YjQyZjY0ZjQxZDQxOGQ4MzU4NGQ4N2U2NGIyYmM3YWM5NTJjNiBweTNrCis1ODY0MyBiYWMzNDNhZGZmZDlkMjczMmY3YmE0MWVjNmRmMTJmM2JjMzI0MzA3IGxlZ2FjeS10cnVuaworNTg2NDUgM2U2MzQ4YmM5YTI4Mzc0OTEwNDllYmM2OWE3YmIxOGQ4NTI5MjExOSBsZWdhY3ktdHJ1bmsKKzU4NjQ2IDhkZWE1OTk3OWJhMmU5ODhiYWVkNTJlZTVhMjNmZGI3NDlhOTQzZWEgcHkzaworNTg2NDcgNTdjMGQwODg0MzA2NDg1OWVlMWRmY2I2YTdlMWNjZWRiYTg3YmIyYiByZWxlYXNlMjUtbWFpbnQKKzU4NjQ4IDUxYmExMmUwYTFkNTBlMjczMzExZTc0NmUxMmU2MmUxZThkODUwZTEgcHkzaworNTg2NDkgOGZlMjRlNWVlZWZmYjk5ZDNiYWNjNDk1YjliMDYwN2M5NzhlM2MzZSBweTNrCis1ODY1MCBkNjYwMThlZDNkZWQ1OTBiYTFmNmM2NjcwNWVjM2FiMDA0MDM3ZGVjIHB5M2sKKzU4NjUxIDkwMGVmMGViM2Y5NGI1MDEyNTAxZjQwMjhmOWFlZGYxMTU5NjAwOTUgbGVnYWN5LXRydW5rCis1ODY1MiAzNWRhOTE1YWRlZGNhY2MxYTAzMmE4YTg0YjVjMTdlNzU4N2VmMTVmIGxlZ2FjeS10cnVuaworNTg2NTMgODIzNzcyZjFkMmJlOTA4YjVjNTQ5MmUwYjc0YjM4YmJkYjk5MmI5ZSBsZWdhY3ktdHJ1bmsKKzU4NjU0IGZlZDY0MzE0ZDk0NDk4M2ZiM2ZmYjgzMzgwOTQ5OWI3YmE3MjJiODUgcmVsZWFzZTI1LW1haW50Cis1ODY1NSA1MzA1NzNjZDRmN2E3NzgxNjhiZDA2MWRmYWNhOGEyMDBmZTk4MjdkIGxlZ2FjeS10cnVuaworNTg2NTYgNTA5YTczNmViZGI5NzA2MjA2NmExZGE1NzIwYjRmZTliMjkzMGY2NSBsZWdhY3ktdHJ1bmsKKzU4NjU3IGE4ODE4ZmZlMjRkMTFmMTAxNDVjMzUxZTRjNjhhOTVjNzU4MDg5MjQgcHkzaworNTg2NTggNzA3NWQ0NjRkOTM4NDUzZmIzODY0Mjk0Njc2NWZhZjUxZGJlM2M5ZSBweTNrCis1ODY1OSAwNmJkYjg0MzllMjk4NGMyNzY0NzYwODI5NTAwMzllOWM4ZTMxN2FiIHB5M2sKKzU4NjYwIGQzYmYwMDlmYmJhOThkM2I3YzMyMmRjZjFlY2VhZGU2M2I4NjhmN2YgbGVnYWN5LXRydW5rCis1ODY2MiA0YmI2YTBjMzUzYWI2ODZlNzY1NzEyZjI1YjE2NGVkOGFlMWQxOWRmIHB5M2sKKzU4NjYzIDViMTJiMGJkODE4ODBlOThmMDBlOWM5NzM2MmFmZGI1N2UzNWQ0YTEgcHkzaworNTg2NjQgMTk5OGVlMGVmZjJjMTI2NmE5MDc1ZjgwYzJmZDIxNDFhMzU3N2M0OCBweTNrCis1ODY2NSA2YWI2NGY2YjRjMDMxN2U3MTBhYmE3OWUwNWMxYzhhNmZhM2VlMzcwIHB5M2sKKzU4NjczIDA2NTMxODQ4YTM5NDZlYWU4OTkzYTRjNGVkYWMwODkxMTBiZDBhOTAgcHkzaworNTg2NzQgNjRjZTNiZjNhNmE5ZDM4ZGM4NTBjNjFhMWQyNjdlM2MyNGJlZTYzZSBweTNrCis1ODY3NSBmYzZiYTA4OGJkNzdjYWIxOGQwOTI4YTcyOTg3MmQ5MjkxOTJkNGVlIGxlZ2FjeS10cnVuaworNTg2NzYgNWE0ZThiZGFkYjg1MDRjYjdhMTdhZDExNzJhZTBiY2VkMTU2NDk3OSBweTNrCis1ODY3NyA1MGEzNDc1ZGI0NjZiN2Q5ZDNiYTFkZGNhNzI3MWE2MDM2NWQ4ZTMwIHB5M2sKKzU4Njc4IDA1MDJhOGM2NGVmMjBlZmY4YmI4OWM1NTU3OWNjZDZhNzQ5NDEyNmIgcHkzaworNTg2NzkgN2ZiODY4MDIzZDc1YWVmODVmYjIxZTFlMzQyMGFlODJhZWVjMjQ3NiBweTNrLXBlcDMxMzcKKzU4NjgwIDE3MjZhNGM5MTZmMDEzMTQzZGIwYzgwOWVjNmJlZGY4Yzk3YWE5Y2QgcHkzay1wZXAzMTM3Cis1ODY4MSBmYTdjZDhlYWIyZDJjM2UwN2ViYWFkMDNkM2FhMjljN2ZlNmExYmEwIHB5M2stcGVwMzEzNworNTg2ODIgYjEwMmI4MzYxZDVlOTNjZWY1NDFmNzk5ZWFlMzNkYTNjOWZkMTEwYSBweTNrCis1ODY4MyAwNDBmNTIyZmVlMTEyMzhmMjA2YzhhMDYxYjBkZWE3YWY2ZDBmNTRmIHB5M2sKKzU4Njg0IDIzZTZlYzFiNWYzNTBkNmY1NjU0Y2E3OTZkZWJmMzNlMTQ3YzFiMGQgcHkzaworNTg2ODUgZmZhYTZjZTRiZmI0Nzg5YmVjZmI5ZjZmNzk2N2ZhNmIzMzVkMDkyNiBweTNrCis1ODY4NiBkNDZhMzFmNWM1ZGYyNmIwOTEzZDYyZTNhZDhlMzNlNmIwNmIyOTMwIHB5M2sKKzU4Njg3IGZkNGQxMGU5OTNiNzljNDM4ZWIxYjJjNjcwZWE3ZDU4NWE2NTdiNjkgcHkzaworNTg2ODggOTdlMmU4OWM2NTkxMmYyZDYyMmE1NTkwMzM5Y2QzM2FhNDUwZWE3OSBweTNrLXBlcDMxMzcKKzU4Njg5IGUxODlkMzJiMzcxOTA2OGJhZjZiZjI3ZWRiNjQ3MDI2NmQ0YTAyN2MgcHkzay1wZXAzMTM3Cis1ODY5MCA2MWJjODJkZjM1ZmY5MDZhNzM0ZGQyYjNmN2E1YzgzNWNhMDg0NTAyIHB5M2stcGVwMzEzNworNTg2OTEgNWQwYmU5N2YxNzA0MGNmM2U0YmRjNzBkMTQwN2I1NDg5NzI0NDhjOCBweTNrLXBlcDMxMzcKKzU4NjkyIDJlOWVkY2RkZGQ0NDNhNTNjZDhmZDVhNzUzNjVkYTY1ZjM5ZmMwM2MgcHkzay1wZXAzMTM3Cis1ODY5MyBkYWNjNzMwYzcyOThkNTkwMjYxOTE4M2MxMjdhYjY2YjdkZGI4ODFkIHB5M2stcGVwMzEzNworNTg2OTQgOGZkM2RiNjUzMzE4ZWJlZGQ4MDY4N2JmMGRjNjQ0YWY0YWYyNmQzOSBweTNrCis1ODY5NSBkYzk4MTYyZWY4NDRmMGE2ZjFkMmRlMDY5MDEyMjY1MTU1YTAwODkwIHB5M2stcGVwMzEzNworNTg2OTYgZjViYzk0ODFmODgzZmNhNjRiOTVlM2FmMjdkZjY4MTNlMjNlZDcxMCBsZWdhY3ktdHJ1bmsKKzU4Njk3IDYwOGVlNGI4MjBhZmE3MjBjZGEzODEzYmVlOGZjYmEwMjFkYTQ3MjMgbGVnYWN5LXRydW5rCis1ODY5OCAzNjU5MTNkN2FmN2Q2NWQ0OGJkZjQ4ZjY3ZTEzMTI2ODVmYWI3YjA3IGxlZ2FjeS10cnVuaworNTg2OTkgOTFmZDY1MDQ1ZWVlNjhhZGJmODRlZmYzZDY2MDZkNjQxOTc3YzAwYSBweTNrLXBlcDMxMzcKKzU4NzAwIDczNjBjMTJiZDgxZDQ5ZWQ4YmFjNTFkMGY3NzU5M2MyMjQ2MDhlNDEgbGVnYWN5LXRydW5rCis1ODcwMSA1MWE3Mzc0MTA1YWM0YzNmNWNiNTMxODcwMjhmYmIwZjY5YmNlZTE3IHB5M2sKKzU4NzAyIDNmNDY3YWNjZWNkMmU0NjJiMGQ3YjViZGY4ZWE1YjZkZmNhODk1NDIgcHkzaworNTg3MDMgMTJkMjBmZGZlYTYyZjUxOTc0YzUwNWM5OWIyMjUzYjI5NjZjNWZmNSBweTNrLXBlcDMxMzcKKzU4NzA0IGQ4Zjc0NDJiOGNhZTg2NmZhOGZhNTEyZjk3MzAwODgxOTQ4ZjUxN2YgcHkzaworNTg3MDUgYzM0NzIwNzc3Y2I2NmZmMzRhYTRiZGU4ZWRiMDdhZGM3NDY5NzBkYiBweTNrCis1ODcwNiA0MGUzYTJkYjVkOWUzMDNkZDdhOWVlMDU0MTgwYzE4MDljMjMzNTRlIGxlZ2FjeS10cnVuaworNTg3MDcgMzIzNTQ4NzBkZmIyYmI4ZmY2MTI2YTZjYzFlMzVhNWRmNDM3M2U3MyBweTNrLXBlcDMxMzcKKzU4NzA4IDc2YTU1ZjdiNTA2MDA3NTJhMWEyN2E1MWZiZDg3NTNhNjczMTZmMmIgcHkzay1wZXAzMTM3Cis1ODcwOSAxMjRjYmYxYTBlM2VhNDgwNTE5MmU5ZTg3YzVjZThiZTdjNWI0NDdlIGxlZ2FjeS10cnVuaworNTg3MTAgYTVkZDI3OGIwYzFmYmE0MGRkNzlmNGNjNDc4ZTQ2MDQ4OTU0ZWJhYSBsZWdhY3ktdHJ1bmsKKzU4NzExIDAwYjEzNmI3ZGE4NDRkMzJkZTg4ZDJlYWE1ZDkyMWEyZmE5M2RhOGQgcHkzaworNTg3MTIgNDdjNTUzZWI3NWQ5MWQyNmJhMjYyNzU0NjNkYTk5MWYwMjRiNDI0ZiBjdHlwZXMtYnJhbmNoCis1ODcxMyA4ZjdmNmM4NTBkYmQyNjJiNjljMmI1M2M4NGYyMDljZTJlOWM2ZDY1IHB5M2stcGVwMzEzNworNTg3MTQgMjZmZTcwODlmMTRhZjFlYmQyMzdkYmZlNzFkZGJkMzVkMDIzY2RkOCBweTNrCis1ODcxNSAzMzQ4MDc2NWY2NjkzMDFmYjQyMWZiNTBhMWQ3ZDMwYzAzM2ZkMTE4IGxlZ2FjeS10cnVuaworNTg3MTYgZTJmZTU4NjA0Y2IxY2ViZjc4ZWI0NjRhMDBiNzkxZjQyNTEyYmY4ZCBsZWdhY3ktdHJ1bmsKKzU4NzE3IDhlZGViNTE2OGJmNTE2NjQxNDY3M2ZkOGI3YWI3ODkzYzVkNWIxMGUgcHkzaworNTg3MTggYzEyMTRiZDZlZDE2MDUyZTk5ZWUxZWNlMDE1NDY5ODU0Mzg4ZDJmYSBweTNrCis1ODcxOSBlNTEwYjcxNmJkODBiN2E3NjljZmQ1YjliYzEzNDY2YWE2YTg4OTI0IHB5M2sKKzU4NzIwIDA0NjgyNjg3ODE3ZWI5NDRhZjA5OTQ4YjU3YjFjZjFkY2E4NzY1ZjUgcHkzaworNTg3MjEgZTkxNTA2YjRiODVmOGFiZDAzZWY4Zjc1M2JhNDRiY2U4MDMwNGU2NSBweTNrLXBlcDMxMzcKKzU4NzI4IDc4YThhZWE2Y2IwYWU1MWUzMmQ1ZmMyNjJhMDlkNjNmNTA1NGQyZjQgbGVnYWN5LXRydW5rCis1ODcyOSBlMjM0ZDk3NmI1ZDQ3YjcwMDE3YzliNDNmNzJmNzdkNTk2M2U2NGI5IGN0eXBlcy1icmFuY2gKKzU4NzMwIGUzYTAxZjQ5M2U5NGYzNTgzODA4YTljZGI1YjQ2MGMwNDcyY2U1ODIgcHkzay1wZXAzMTM3Cis1ODczMSA0MzFjNWExYTYyOTAxMTBkMTBlZTlhMzBjZGJkMDAwYjU0ZDFhZGIyIGxlZ2FjeS10cnVuaworNTg3MzIgYmNmNjI5ZTQzMDgyNzgzYjI1MmVlMGIzNTAxMWFiOGZlMTMxOGQ2OCBweTNrCis1ODczMyA1MjUzMWI0ZjUzNWQzYjk0OTY5ZWMwNzRmOTA5ZTA5MmEzOWExMTI2IHB5M2sKKzU4NzM0IGVlYjM3MjgxODk1OTU1N2YzZmZkNGNlODgzMDAwMWQ4MzZmN2Y0YWUgcHkzaworNTg3MzUgZmU1NzBjZDViMThmMWYyZDY2NzBkNTdiOTVjOGFkNDUzYjEyMDYyYyBweTNrLXBlcDMxMzcKKzU4NzM2IGQ0N2EwNGEyZTBiYjQ1ZTVlOTE2NzkxNWE1NDViNmQyYTljNmJiNTIgcHkzaworNTg3MzcgZWE2NTAxMTM0Mjg2OGM0MjJiOWU3MjhlOTk1OTk2NTFiNzA0YzQxMCBsZWdhY3ktdHJ1bmsKKzU4NzM4IDYwZDk2MTIwNDYwYjFjNDcyZWE5ZGY0MzI4ZjAwZTVhZTc3NDg5YzAgcmVsZWFzZTI1LW1haW50Cis1ODczOSBlNDIwYWE3ZjUwY2I1MGRiMzU0NTQ4YzkyZjkwMGU5NTBkOGI4ZjQzIGxlZ2FjeS10cnVuaworNTg3NDAgM2U3MzhlNTJhM2NlYjExYmJlYTQ1NzM0MjVmNTc3NzAyYTY2MDZmYiByZWxlYXNlMjUtbWFpbnQKKzU4NzQxIGJlZjg4ZGE4MjFhNGMyYzcyNjY5YTBlNGNkNTM2ZmQ1ZjNmNmUzZTcgcHkzay1wZXAzMTM3Cis1ODc0MiBhMmY5ZTZjZWYwMmY3OGE3YTZlNDg3MGZmNTg1NWIzMjNkYmRlOWIyIHB5M2stcGVwMzEzNworNTg3NDQgZmJjNmZjNmRjNGZmZTFiMmMyNzQ3YzcyNTBhYjU1ODE3YTc1OThhOCBweTNrLXBlcDMxMzcKKzU4NzQ1IDQzMWJjOTA5NDAxOTU1YTIxMDNjZDBjZDZkYWUzYTZhMzkzYjE5MDYgbGVnYWN5LXRydW5rCis1ODc0NiAwMjFjZWUxODlmOWUxYWJlNWI3YzIwMDA3MjIxOWMwNTAwM2MwZmE1IHJlbGVhc2UyNS1tYWludAorNTg3NDcgZmQ2ODVkN2U4NTlhYTEwZGJkNGQ2ZTM5NDVjODQ4Yjc3OTIyYTk2OSBweTNrCis1ODc0OCBmODdkYzZhMDRjZWFiYTMwN2MyMDhiZjJjMWIwMmNiYTA4NTg4ODllIHB5M2sKKzU4NzQ5IDNlNWVkZjE5ZDVmMDVkMmZmYTFkMDIxZGE3ODE2MTVmZDJkODVmMDQgcHkzaworNTg3NTAgYmQyZjhiYjExYmNjMzYyNTFiMWYwYzQ0MGI1NTY4ODYxNzk5NjcxNyBsZWdhY3ktdHJ1bmsKKzU4NzUxIGU4ZDAwM2IzODcwZjAzZTE2ZDUyOWY4ZTNlMGZmZjg2ZDQyNWY5ODIgbGVnYWN5LXRydW5rCis1ODc1MiAzZDg2NjU3OTExN2RhNzA4OTc4ZGQ3OWE3ZDJiZWE1OWUwYTk4MzYxIHB5M2sKKzU4NzUzIDc5ZjVjYTllZTE1NDljMTVmNTU4OGNhM2U3ZDNhMDExM2I0Y2Q5ZjYgbGVnYWN5LXRydW5rCis1ODc1NCAwZjc0MWM4OWQ4MDNhYTM4ZTI3N2FhZmQ1NGQ5YTM2YWRiZDNjM2Q5IHB5M2sKKzU4NzU1IGMwMGRjNzU4NjcxNDNlNzk4OTAzZGI5MmY1YzYxNWQ3NWQ4OWQ2MmIgcHkzaworNTg3NTYgMmI3YWFkYmNlYTM0ZjY1ZTQ4MzUzYWU2OWU5ZDhjODYyOTFmZWJmMCBweTNrCis1ODc1NyAxNTdiYjAyODkyYmM5NGY3MDliNDZhZWUwZDhlM2U3NzNkZWFhNDhmIGxlZ2FjeS10cnVuaworNTg3NTggNWExY2QzY2EwYjM5MWNiN2U0NWU0MWQ2ZjU1OWE1NWI1MWYyMmEyMSBsZWdhY3ktdHJ1bmsKKzU4NzU5IGMxOWI2ODQ5NDExYzAzMjQwODc2MzllNGMwODc5NWI1YmI5ZjU0MzcgbGVnYWN5LXRydW5rCis1ODc2MCBlZDNjMmFhYTAwMmEyYTdiMDliMTQxZjBkYjc1NjFiZjM4MjllMmJhIHJlbGVhc2UyNS1tYWludAorNTg3NjEgOTlmZjlkY2YzNzYwZTEyOGQ5ODlmOTdkM2I0Yjk5ZmUyODA3NDI2NCBweTNrCis1ODc2MiBlNWViOTNhMGEyMGUwNTIzMWU4MjhhNWE1MmE1NTk0ZjgwZjViOTkyIHB5M2sKKzU4NzYzIDMyNzY3YjRiNzkyMWE5YzllOWM2YzJiOWM0MzJjNWFmNjNlM2JkYzIgcHkzay1wZXAzMTM3Cis1ODc2NCA4YWMyODRiNjVlMzdlMDY4Yjk4MmE3MjJlMmM0NDUyNTBkZTAxY2FlIHB5M2stcGVwMzEzNworNTg3NjUgOGE0MGI4MzFhYjY4OTljNTA0OTM5NDQ3NTk3ZjU3OTZiOGVjMjc5OSBsZWdhY3ktdHJ1bmsKKzU4NzY2IGM0NjI0ZGMwZDQxYjEwN2JiYWFlMDhkOTM4MDQwOGJkYjdiMDM1ZjkgbGVnYWN5LXRydW5rCis1ODc2NyA1ODkwZDUxMGFhNmY3NDY1MTg5MWU0NmQ5NWVmMTEwZTlmOGFjZmIxIHB5M2stcGVwMzEzNworNTg3NjggODk0OGY4ODFlNDAzZmIyZDUxZTVhOGNiNDA3ZDI5ZDU2NzEzN2NlMiBweTNrLXBlcDMxMzcKKzU4NzY5IDI3NDg2YTAyYWU2NGZkNWE4OTUzNzUwMmU4MTI5YTdjMDk2NWM0ZmIgcHkzay1wZXAzMTM3Cis1ODc3MCA4NzBmNzA1NjBjOGYyODkxYjM0MGU5MThlZDA3OTQ4NGRmYWMzZWYxIHB5M2stcGVwMzEzNworNTg3NzEgYjZjOGE2NjljNzljYTM2NjA4ZjA4MWY0MGZlYTI4MzgzNTRjYmRjNyBweTNrLXBlcDMxMzcKKzU4NzcyIDA0YmU4OWZhNzQ5N2MyOWUyYTNiMDUxY2ZmNjgxMmIyNjMwOTEwNDIgcHkzay1wZXAzMTM3Cis1ODc3MyBkN2FiNWFmM2M5OGVhOTY1ZTU2ZjBlZjAxNDg5MjQwYmQ4OTk2MWQwIHB5M2stcGVwMzEzNworNTg3NzQgYjRlOGU1MjNiODgyZWUyNmQ2ZTE3NGYwNDVjM2E2NWUyY2YxODgyNyBweTNrCis1ODc3NSA1YjNiZTRhYjJmZTFkMTFlMzNhZGMxZTUwMzRkMWU0MDlkMWNkMTk1IHB5M2stcGVwMzEzNworNTg3NzcgZWUxYmM4MzRkOGM2ZmNkNjUwNTM1NmM4ZjgwZjZmNmQwNzgzZWRmNyBjdHlwZXMtYnJhbmNoCis1ODc3OCBjNTBlNmY5MjQxOWYzYTAyZjBkMTc2OWMxMDRlZDA3NzJlNmY2N2U4IGN0eXBlcy1icmFuY2gKKzU4Nzc5IDExYzJmZGU3OGQ1NzcxYjczYzJhZDkzZmFjYTQ3ODllZDBkNzc5YWEgcHkzay1wZXAzMTM3Cis1ODc4MCA4OTA0YTBiY2JmNGZmOTIyNmFjOWM2ODFlM2U0OTc2MzM0YjIzMGZjIHB5M2stcGVwMzEzNworNTg3ODEgMmE5Mzk0ZmI1MGFjMTZjNzk2N2I2MDljNTFkNDUxYWQ4ZThjOTkwZSBweTNrLXBlcDMxMzcKKzU4NzgzIDhjN2RhYWMwZDRiMGIzZjQ0NmJjNzJkNmE4M2RiMjViMzNkOTE2OGIgcHkzay1wZXAzMTM3Cis1ODc4NCA1ZmNiNjYwMmM0OWE5YzVkYzExNGRjOGYyZWI2N2EwMWE2NDRjNTA1IGxlZ2FjeS10cnVuaworNTg3ODUgYTdmOTVlMmI5MzU4MjRjYjFiYmNmYjI3YzRjMjllZTIyMGJkZDc0ZiBsZWdhY3ktdHJ1bmsKKzU4Nzg2IGI2MTA4Mzc3NGMwOGM0MDU0Y2MzY2M4YTY0ZGFiMjY3OGMyYzA4NjAgcHkzay1wZXAzMTM3Cis1ODc4NyAwNjA0NmQxNzkwYjkzMGI5NGQ1Mjk5ZTlhOWIyODdkNmQ0Mzg5MTkyIHB5M2stcGVwMzEzNworNTg3ODggOTBkNWQ4NGNhMjdkODFmNGJiYTg5ZmZkNDkzN2FmYjMwNmRhMGNjMiBweTNrLXBlcDMxMzcKKzU4Nzg5IGE5ODIzNDQ1MTY2OWU4NTIzMjFlMGRmMzE3OGY2YTJmZGY5ZjQ0YjUgcHkzay1wZXAzMTM3Cis1ODc5MCA2ZGE5MGE1YWU5ZmFhMDM4YmFmMTk1MjYzZWYwZTA5MmM1NWFmM2ZmIHB5M2stcGVwMzEzNworNTg3OTEgNDI2NGEwN2EzOWQxM2Y2OTQ2NTlkYjI2ODM4NWE1MjI3ZWIwODJkNiBweTNrLXBlcDMxMzcKKzU4Nzk0IGEwMzBlY2VhNGMyNGI3NWNhYWY4ZWRjMzE4ZTlhMTdlNTI0YjRhZGIgcHkzay1wZXAzMTM3Cis1ODc5NSAyODAzZTk2Y2M2NGFmOGM0MTcwY2QzZDAwZjA0YTc2MGJmZmE0YTBlIHB5M2stcGVwMzEzNworNTg3OTYgNGIzNjIzNTY4ZTZjZjg0Yzg5YjUzNjg1ZDIwOTVhNzU1M2I1YTI2YiBsZWdhY3ktdHJ1bmsKKzU4ODAwIDg0NGFjMmNkZjdhOGUwNTkxMWRjNGE2OWQyZDg5MTVlYzM4MmEzMmIgcHkzay1wZXAzMTM3Cis1ODgwMSA3YzQzZjRkY2M3YzdjMGI4NjA5ZTQyYWI0Y2E4N2I5OWQ1MmI3ZWE3IHB5M2stcGVwMzEzNworNTg4MDIgNmQ0NmZlYjE2NGI2YmRmNjdjYjgzNWNmMGIwYzFkNDBjNTMzNDMwMiBweTNrLXBlcDMxMzcKKzU4ODAzIDAwYzk4NDY2NjE1YjIzYWY1NjgzZTZmMDliMzE5ZWYzMzNiOTI0MzIgcHkzay1wZXAzMTM3Cis1ODgwNCA4YmIzZTc3NjhjYTY4ZmYyMzhmZmRmZGYzNmZlNzMzOTMyNTAxZGIwIHB5M2stcGVwMzEzNworNTg4MDUgYWQ4YzNmOWVjMWIyOTc4NjJhNjQzZjkwMjlmNzk0NTMxYTdjYmQ1NCBweTNrLXBlcDMxMzcKKzU4ODA2IDdlZGJmMjU4Y2FkMDAxMTkzMjM5NTgyNmMwY2E1MmY2ZjFkNjg5NTUgcHkzay1wZXAzMTM3Cis1ODgwNyAxMTlmODQxYmI4MTY0YWRmYjdjMGRlYzk5NzllNDEzMzU4ZTczMDkzIHB5M2stcGVwMzEzNworNTg4MDggMDExMzVkZGQ3MjZkY2E5ZTE5ZmZiNjRjYWIxYmQ1OTIxMzg4ZDg0OSBweTNrLXBlcDMxMzcKKzU4ODA5IDM1NzUyODQ4NTc0MzUzMjgyY2VmMmZiMWQxYjNiYjY2MzhhNGRiNzIgcHkzay1wZXAzMTM3Cis1ODgxMCBiNDliMzEwN2U0MjAzMGNiZGY3YmZlYjgwOTRhNTk3OGMxYWRiYTMyIHB5M2stcGVwMzEzNworNTg4MTEgYThlN2NiOWUzN2M5NDVkMTJmMDM4MDRlNGQ5YTE3NGRlMDBlNGZlZSBweTNrLXBlcDMxMzcKKzU4ODEyIDE0MmYyNjk0N2FiYTdkODQyMTE5YjA3YzQ2NjFkNWI3YzFhNjVkYjcgcHkzay1wZXAzMTM3Cis1ODgxMyBkMjQ5NTQ1YmE3OTIyNGE0Y2IyNjhmZDcyZGU0ZjU5NDk4YjE3MGQ1IHB5M2stcGVwMzEzNworNTg4MTQgY2ZjZmFkODdlYjdkMGY0ZTEyNzZiMWRiN2I4MDQ0ZDEzZWU3Y2Y3YSByZWxlYXNlMjUtbWFpbnQKKzU4ODE1IDcwNGU2NzExZTUwZGNlNWU2MWEyNzUwMGRkNzI0MzVlYTc4MDRlZTggcHkzaworNTg4MTYgZDJiYTJiZjRlNzZiYWRhNTg0YTVmNTE4Njk1MzkzMDI3MDE2NDM5YSBweTNrLXBlcDMxMzcKKzU4ODE3IDMxN2JhNTNjZDQ1YzhlNmViMGJhNWY3NDI0MDllNjgyNzkwZjczZDUgcHkzaworNTg4MTggNTIyYmJiOTAwNWE0MTdkY2QxN2VkYTljNjI3NGRmMTVlNjEzNGY0NyBweTNrLXBlcDMxMzcKKzU4ODE5IDJmZjBlODFlNjhmY2EyMzA2ZTUwYjdhM2M3NTdhMTAzMTdmNTM4NTIgcHkzaworNTg4MjAgYTQxNDBhMjhjM2U3NjFjYjIzZjdlYzE1ZDFlZTViOTQ2NmJlOWUzZCBweTNrLXBlcDMxMzcKKzU4ODIxIDg3ZDM4ZjQyZDE2MzQ0MGNhNDJjNDZiZjY4ZDVjZjBmNWQzYTVjNWYgcHkzay1wZXAzMTM3Cis1ODgyMiA2ZTQ5MWQxMjc2NWM1ZjdiNGNmMjUxYjIxYjUzNGY0OWFkNjNmOWZjIGxlZ2FjeS10cnVuaworNTg4MjMgNDQ5MGYzMzViYmNkMzhiYjcyMGY2OTgyODQ5Yjc1NGUyYzhhM2EwNyBweTNrLXBlcDMxMzcKKzU4ODI0IDZhZGM5OWE2ODg4ZmRlZDBkMjdjMzU1MGM5ZmRhZmRmOGZkZWE5MDYgcHkzaworNTg4MjUgOGZkNjk0ZDBmOTAyYjg2NDdiNGNjMGUwMzRkNTI5YjNiNDQ0OGUxMyBweTNrLXBlcDMxMzcKKzU4ODI2IDBjNTE3MTc5Y2I4YzQwNWM1NjgwMWM2YjhhYmJmYWZjM2VjYWMyYTggcHkzay1wZXAzMTM3Cis1ODgyNyA5MjFhZjdmMjc2MDBmN2M0OTQzOWNlNmEwNTJlNzQ4ZDFjNzZhMjU5IHB5M2stcGVwMzEzNworNTg4MjggOWRlMDcyNzViMDA4N2E2NmVlNjYyM2E5MWY5Yzc3OGU3NmI4YTQ3YiBweTNrLXBlcDMxMzcKKzU4ODI5IGZkMWMxMGQyMWM5ZWU0MzNkNTFlODI1ODU5NzA5NzUzNjU5OWQxYzEgcHkzay1wZXAzMTM3Cis1ODgzMCAzY2JjNzhjM2E0MDM1NDk1ZTRiMmYwNDczODdkYjhkNzdkNDk0MzFhIHB5M2stcGVwMzEzNworNTg4MzEgZjYxYTBlZTc0NzZmYWM2MTIzNGJlYTA3MzBjYzg2YjRiNjc2NzRkYiBweTNrLXBlcDMxMzcKKzU4ODMyIDQ4ZTc3OTIyNDExZDljNWE1OGNjZGM1YTM0MzNjYjlhNDYwZTQyNjYgcHkzay1wZXAzMTM3Cis1ODgzMyBiM2Y4NmM0MWQwYTNhMDcyNWM4OGMyNDMxODM1N2QzNmFlYjFjMDRmIHB5M2stcGVwMzEzNworNTg4MzQgZjdiNDUyOWQwOTg0MmEzZDZkYTkxODMzN2RmNDAxYWJjNWExNjM3ZSBweTNrLXBlcDMxMzcKKzU4ODM1IDE0ZGZlMmYxMzU4MjMyOTllNzg5MGEzNTYyYzhjYWRiMDYyNDMxMzggcHkzay1wZXAzMTM3Cis1ODgzNiBlOTAwNjVlMTcyMTIwMjA3ODZiMjUxZDM2YzRhZTQxMGJmNGIyZDc2IHB5M2sKKzU4ODM3IDY1OGNkMzRhOGM1ZGJlMTk2OGNjOGU3YWNhYmZjOTIwNTdkNjIzODcgcHkzaworNTg4MzggZGUzYjYzZjhiMTdiNmNkZTY0YTFmMTAxNzQxNWViMTkyYTljZWM5YyBweTNrCis1ODgzOSAwM2MzYTU0MDcyZDkxZWY0MzFiYmM1NzgxMjY0MDMyNTQ5ZTI4YTdmIHB5M2stcGVwMzEzNworNTg4NDAgMTg5MTI1N2RmZDExM2RhNjgyMjQxNzNiZjM3YjY3MTk1ODFlM2E1NyBsZWdhY3ktdHJ1bmsKKzU4ODQxIDA5ZjkyMmM0Zjg4NzI1ZTZhZDdlOTU5MTRmOGY2YWFhNGRlN2I2YjggcmVsZWFzZTI1LW1haW50Cis1ODg0MiBlZjFkM2U4NzI5NmYzNjU4OTEwNTk3N2NlZjI0ZTdkZTlkZjg3MTUwIHB5M2stcGVwMzEzNworNTg4NDMgZjFmZGQ2YjcwMTVmMDA1YzUyYWYxMWYyMmNlODkzMjJmMjgwYTJlOCBweTNrLXBlcDMxMzcKKzU4ODQ0IDU4NWFkNzcxM2VmZWZlZTQyMGEyNjUyMTc5NTcwNDg5MWI4NzBiOTAgbGVnYWN5LXRydW5rCis1ODg0NSA0NDdkMmE0NTAxY2I3MmE2NWMxZTc4ZjQ3NjhiZGI2ODljNmMxYWQzIHB5M2stcGVwMzEzNworNTg4NDYgNTA0MjNmNDRlNmRjZmZjNWQyMWIxNzA2N2I3ODRkNmQ5YjIyZDAzZCBweTNrLXBlcDMxMzcKKzU4ODQ3IDcxZjg0MzU3NTFiYWE1YzcxZmUwODNlY2QzM2Q5NTg3YjI5ODU5YjAgcHkzay1wZXAzMTM3Cis1ODg0OCAxNTNjMGM3NDQxYWFmNmZlMTE0MDgxYjk2NmE4OGMwNmNkNGRmOTQyIHB5M2stcGVwMzEzNworNTg4NDkgNWFjZDlkZjI3MTA4NTI4M2Y3YzI4NzkwNTM1NGQ5ZTY1Njg5YmQwNyBweTNrLXBlcDMxMzcKKzU4ODUwIDUxYTBkZTliYWIzNzQ2YWYxYTVkN2Y5NjMxY2I2ZWU4YTVkNjgyNzYgbGVnYWN5LXRydW5rCis1ODg1MSA4ZDRlOWM0ZjAzNTBhMWUwYjRjYTFjMzY3ODAzNDMxZTg2ZTlkZTRhIGxlZ2FjeS10cnVuaworNTg4NTIgMzc0MjNjNzZlMjA4NTg2OGE5NmRkOGFiMDA1YWMzZjZjMzYxNGE2ZSBsZWdhY3ktdHJ1bmsKKzU4ODUzIDBmZDFjYWE4NTIyNWZhY2EyNTlmZTM4ODAxNmUzNmQ2ZTA2MDA0ZGYgbGVnYWN5LXRydW5rCis1ODg1NCAzNzE1Njk0NWNhMzUxNmU1YjdiOGE2NTU5YzczOGVkZDA5YTZkODc4IGxlZ2FjeS10cnVuaworNTg4NTUgMDFlNjMzM2YzYjZjZWYyMzg3OGJmY2QwMTAwODQ4M2YzYzg3Yjg0ZiBweTNrLXBlcDMxMzcKKzU4ODU2IDE5ODdkYmU3ZWI2ZTdkNzE3YzcwODRhNGIwMTA1Yzk1YzA5MmU5NmYgcHkzay1wZXAzMTM3Cis1ODg1NyAwOGVlM2M3M2I2YmVjYWMxNjI1NTA1ZDZiODZmODhmMTZkYzk5NzMzIGxlZ2FjeS10cnVuaworNTg4NTggNzBlZjBiNmE4MzQ1ZjEyMmE5NTk4NTBiMTY5ZTI1NzBmNmM1MGRlMiBweTNrLXBlcDMxMzcKKzU4ODU5IGZlOWMyMjMzY2QwNGY4MzI4ZjkxOTQ2ZjdiNzgyOTZjZmUwNGRkYzggcHkzay1wZXAzMTM3Cis1ODg2MCAzMDc4ODE0NmYwYTZjMDdhYjEzODI2ZGEwNDQxNzgyOTA3N2EyZjFkIHB5M2stcGVwMzEzNworNTg4NjEgNzc4ODIzYzBmZmI2Mzk5YjNhYzc4YWViMDZjNTBlMjFkOTI4MjNmYSBweTNrLXBlcDMxMzcKKzU4ODYyIGYzYzMzN2U5ZDFlNTk3YzNhZDRhMzkzYTFiM2VjN2ViMTE0YTg2YWIgcHkzaworNTg4NjMgZjlkNDAxZjFlMWVmMGIwYzdiZmM1OWFkOTNhYjE4YmQxMmUyZTdmZSBweTNrLXBlcDMxMzcKKzU4ODY0IGM0OTBhZTA4ZDYwOGIwMTYwODM4YmI2MzM5NzYwZTgxNzcxYTFkZDUgcHkzay1wZXAzMTM3Cis1ODg2NSBjMTU1ZjFkZWRhNjVkODQ3YWFkZmMyMmY1YjhlOWNhMDBmY2Q1ODlmIHB5M2stcGVwMzEzNworNTg4NjYgNzlmZTdkMDYyMDZjMThmNDQwYzRlNTgxYWRhZTFiZWRkMmQzNzQxZSBweTNrLXBlcDMxMzcKKzU4ODY3IDUzYWYwNDZjYzJjNTJlMmU4M2U3NDkyYTc1ZDI3ZDVmZjc1YjQ1NjAgcHkzay1wZXAzMTM3Cis1ODg2OCBkN2RiNDY3Y2Q5NDA3YWEwOTY0MDQ3YTRiMmQ1YjNkZWE2NGU5ZDM5IGxlZ2FjeS10cnVuaworNTg4NjkgYTQ5NGE5MTUxMmVjOWVlNDU4MmVhNmM2YTVmZGYxODZmZWQ3MGU3ZCBweTNrLXBlcDMxMzcKKzU4ODcwIDhkMzFhMzZmMGNhYWU1MDg5ZGUwY2Y5MzQ4YzE0ZWFkNGFhNWNiZTQgcmVsZWFzZTI1LW1haW50Cis1ODg3MSBkMjQ4NTJiODZkNzBiYzI2NGU5MWM5NzQwYjZhNzcyZGExMTI2MzRlIHB5M2stcGVwMzEzNworNTg4NzIgMjlhNTk4ZTY5MzgyNjBmODY3MDkxN2I5YzIxYzEyMGE1MzMwMTUxNCBweTNrLXBlcDMxMzcKKzU4ODczIDg3MTc4ZjM1ZDcwMDc0OTU3OTZhOGM1YjE1MWIyZDkzNjljNWU5YWYgcHkzay1wZXAzMTM3Cis1ODg3NCA1NTMxMzg0ODA5MTg1MzY1ZjYxYWY4YjZhZjkwZWFiYWVhYTcyMDYzIHB5M2stcGVwMzEzNworNTg4NzUgY2M2NWI2NDAxOTg5NDZlNGJmYmEzMjc1YTAwMTI5MTZmZTgwOGVlZCBweTNrCis1ODg3NiAwYjIwNjc5MGZlYjY0M2VjZTNjZjhlMTBkYjUzYWZlZDkyNjcwMzA2IHB5M2stcGVwMzEzNworNTg4NzcgZDgyNGMzMTVmY2FjMjhlNDVkYWY0YmIzNmE2NTc1NjU5YWI4YzExOSBweTNrLXBlcDMxMzcKKzU4ODc4IGRlOTczOTI2YTM1Y2ZkMjUzMjM4OGY4ZWQ5NGQyZDU1NWEzNDE4ZWUgcHkzay1wZXAzMTM3Cis1ODg3OSBjOTNhZDZjNDE3ZGYyNTFiZmFhNmIyM2RjMjlhZDlhNDc1ZGY1YmQ0IHB5M2stcGVwMzEzNworNTg4ODAgOTFiYTE2OThhMDExODZjMmQ2YjdjNWFhOTVkMmQ5YTIyZTgyMGExOSBweTNrLXBlcDMxMzcKKzU4ODgxIDZkYjM4MDg1MmY2M2ZlMWNlZjJiYTZiMmQ1MjVjZjU4N2JmMTFiYjggcHkzay1wZXAzMTM3Cis1ODg4MiA5MzBjNjBmOGFhZmZhNzI4OThmMDk0MjAxMjQ3MTU4YWNmMjE4NmMxIHB5M2stcGVwMzEzNworNTg4ODMgZmMzYmVjMjBlYzE1Mzg4OGIxNmQ2MDQ1YTBlZGE0OGQyOGNjZWJhMyBweTNrLXBlcDMxMzcKKzU4ODg0IDAyMjU3ZWM1NGQ3OTEzY2Y3ODJhZjQxNjgwYzY0NDAyMjMzYzBmNmUgcHkzay1wZXAzMTM3Cis1ODg4NSBjYjhlZjI1NTFkMGQwZTM0ZmM5M2M4ZWU1NDBmZmNjNmUyZjRiNTg1IHB5M2stcGVwMzEzNworNTg4ODYgYjMxMGZkMmIwMTg0N2EwYzkxZDA3YThmYWIwNzg1YzI3MmUxZDBlYyBweTNrCis1ODg4NyA5MGQwYzM3NjZlOTI4YTMyYjYwYmNhNjNmZWFkZjNhM2E5NWIzYjk1IHB5M2stcGVwMzEzNworNTg4ODggMGQ0NjJkNzg5YjE4ZWM2YTU5ZWJlMjExNjY4OGQ1YjY5ODVjMjE1ZCBweTNrCis1ODg5MCBjZmU4ZmNlZDhhMTIyNmFmZjBmMTQ0YjBmOWI5NGYyM2Y4NzQ1MDI4IHB5M2sKKzU4ODkxIGM1ZjcwOGJjNGNiN2ZjMDI5YTc2MjkzNzMwMTFhNDNkOWZkNTgxZTQgcHkzaworNTg4OTIgNzM0N2Y3NWI5YzM0NDJiZDYzM2FkYWU1MzI2OThmMjRjMmEyYmUwNyBsZWdhY3ktdHJ1bmsKKzU4ODkzIGRhNThjZjliY2IwMWI1YTcyNmJjMzY2NWUxY2E0MDM1NjQ3Yjg5YjEgbGVnYWN5LXRydW5rCis1ODg5NCAwNmJiODEwNzQ3ZTFkMzYwNzFmZWVhMmRiZGIxZDlkNGI4YjllYzBlIHJlbGVhc2UyNS1tYWludAorNTg4OTUgOWYxN2E5YTViNWFlZWQ3NGIyYmUxZWYwYmI2YjgxZDllOGI2YTkxMyBsZWdhY3ktdHJ1bmsKKzU4ODk2IDhmY2MzZjQ2YzY5ZGUxNzNmMjg3MzdiZTU3OTM4NTNhZTAwYzNmZTcgbGVnYWN5LXRydW5rCis1ODg5NyBmYTgyZWM5YzgwY2Q2Nzg2N2ZmZWQyMjM5NTU3MmE5OWI1ZGJmNGU2IHJlbGVhc2UyNS1tYWludAorNTg5MDAgZGU2M2VmMTg2YzFlYzUwMDE4ODE1ZjQzMWZlNmZmMWNkMmQ0M2E0MCBsZWdhY3ktdHJ1bmsKKzU4OTAxIGY0NzRkZTk3MzQwNDc4ZWFjNzExNzhhOTI3NmFjYmVkMWFiMTA5OTEgcmVsZWFzZTI1LW1haW50Cis1ODkwMiA3YmQ3MmM1NmY2YTQwZDJkNDM0MWJmMTgyYzhjYzk5NDFmNGMwOGNjIHB5M2sKKzU4OTAzIDEyNDdkMjRiMjg3YjhjNmRkMjBlMzVmMzg5YTRkYWY0ZDIyNTFjNDEgcHkzaworNTg5MDQgZGJhMjQ5MWNmNzE3NjI1YjFhZDY5ZmM1ZDlhMDllODliOTRjYTRmOCBweTNrCis1ODkwNSBkZmI0NjAwMDRjZmUyZGY3MDM5ODZhYTEzYmY4YWMzZDkwODNmNWQ5IGxlZ2FjeS10cnVuaworNTg5MDYgMmYwNGFiZDEzMzk0NGRlMzEzN2YwMGQ2YjZhZDQwYmExZjViMjE5NSBsZWdhY3ktdHJ1bmsKKzU4OTA3IDJkOGQ2ODU1YTYwMjQxOWVhOWE5OTZlNzZkODNmZTJjYzdmZWU1OGEgcHkzaworNTg5MDggMmIzYWJlM2QzYWU2ZWEzM2QyYjM5ZjI5ODM0ODgwY2I1MDg0MjFlZCBsZWdhY3ktdHJ1bmsKKzU4OTA5IDY2ZDI3NWYyOWFjNTUwZWFmNWI3ZjJhNjFmY2JhODhlZDQ4MjNjYTMgcHkzaworNTg5MTAgNzAyMmFmZmQ3YmQwOWNmMTE1NTNjMjJmOGUwYWZkNDM3YTNlZGNmYyBweTNrCis1ODkxMiA2YWM2MTg4MmY5MzcwY2ZmZmJkYWZiNGZjZjhjZTYyODJiYzQ0ODNkIHB5M2sKKzU4OTEzIDZkMzQ3Nzc5NTIxYjViMjUyMjcxZWVhMDc1ZjljODFjODRlYjU5OWUgcHkzaworNTg5MTQgMzYwZGY2NDEyNDRkOWU4MTFlZmQ4OWFkMDYyMmFkNDZiYTY2ZmVmZiBweTNrCis1ODkxNSBiMjJmMjdlMDcwMTE0OGViNjNiMjFlZjJjMzkxNTRjMDNmZWMxNWIyIGxlZ2FjeS10cnVuaworNTg5MTYgMmY3YzQwMWNiNjJlMDQ5NzMxZGIzNmI5ZTViMDEyZTVjOTI1OWFkNCBweTNrCis1ODkxNyAzYzFmODU5M2ExNGU0YzU1ZTdjMDA2NDgwYzM2ZWQ0MWFiNzg0Zjk2IHB5M2sKKzU4OTE4IGFkZTU2NjNlODg4NjhhMzFjMDQ0NWNiOTk1ZjVhNzA0MjhkZGVlZTMgcHkzaworNTg5MTkgZDVjMjViZjI2OTJlZWFjZmU5Y2Q5YjFkYmIxMDBmZjAzOWE2YjdiNSBweTNrCis1ODkyMCA4M2MwNWQyZTEwZGVjZDA2MzMwNGVlNTdlZTllN2NjNDg1ZWRhY2E3IGxlZ2FjeS10cnVuaworNTg5MjEgODFlMzNiZGU2ZWUyMGFjNDRhMDE2OTYxYWE4MTZlOWM5MGZiOGRhZiBsZWdhY3ktdHJ1bmsKKzU4OTIyIGRkYzdkMTRiZTFlOTkzOTQxOGIzNDMyNzgzOWI0ODE2OTYzNDgyNmYgcmVsZWFzZTI1LW1haW50Cis1ODkyMyBjMWY4ODMxMTU1ZGUwZTU4YjgyMzNiYjE1ZjQ4OWVmNzM1ZGI2ZDlmIGxlZ2FjeS10cnVuaworNTg5MjQgYWFlZWU1MGEwNjQwMTY3MWJmNWEwNzkzMzYyMjk2MzFhNmRhNWFmOCBsZWdhY3ktdHJ1bmsKKzU4OTI1IGFjMTJhYzg4YWVlYTkzYTEwNmJiNjhlNzU4ZmIxOWJjZmMxY2VjNGMgbGVnYWN5LXRydW5rCis1ODkyNiAyMGRjNjc4NmY5YWNmZTlmZjA3ZDMzNDRjMmFjOGVhZWFiYzE5MzBhIHB5M2sKKzU4OTI3IGY4MmEyMGRkYTQ2NWVmMjBkODE5NzFjOWYxMDA3ZjE3NTM2MWUxYWIgbGVnYWN5LXRydW5rCis1ODkyOCAxNTYxNzYzY2RhNzJkZWM2Y2MyMTkzNjk0NWFjNGFhNDgxMjhmYzEyIHB5M2sKKzU4OTI5IDE5N2ZmYjk5NmZiODg5NTk5YjdiZjJlNWJiM2JkZjkzMTcwMjBkNTAgbGVnYWN5LXRydW5rCis1ODkzMCA4NWNmMzM0YjMyYzNhYzIxZWJjNDFjNTE1NjFkNmUzYjdmNmNiMTIxIHB5M2sKKzU4OTMxIDQ4N2YzNzM3ZWFlZmQwMjEzYjBlMTkxMTAzYmU5NjMzNjkwNDlmZDIgbGVnYWN5LXRydW5rCis1ODkzMiAxYWRmMDY2ZjE4NzlhNGI5MzdhYTg5ZjFlMWE0ZTQ2MjhhZWVjYjEwIGxlZ2FjeS10cnVuaworNTg5MzMgNWExNjlkZTM2ZGU3OGNiYjc1OWY1Y2VkYmFmNTJjNjhiZmRjOGM1YiBweTNrCis1ODkzNCAwNjg2NTUwNTRiMGQwZDEzNjJhYTcyYjFjMGNkN2RkYzNjZmUyNjBiIHB5M2sKKzU4OTM1IGQyZjllMjAxMjBmOWU5MzU3NDllZWU4NzkxNTg1MGMzYTY0MmFkMTcgbGVnYWN5LXRydW5rCis1ODkzNiAwMWE1YmRjMjgyMGEwMTFmYTdjNjA4OTM4OGM3OTY0OGI4ZmU3M2RkIGxlZ2FjeS10cnVuaworNTg5MzcgYzRlMjkzNmQxMzA3NTIzMjQ2NTA5YzAzZjFkYTZjZTZkMzdjMWI4MSByZWxlYXNlMjUtbWFpbnQKKzU4OTM4IDU1Y2JkMGM3YWFjZmMzODc0MjBiZjI5MzU3ZTQ2MjFjNmFmM2ZkMTMgbGVnYWN5LXRydW5rCis1ODkzOSA0ZWQxNmNhNGQ5ODAwOGRhMTAwN2FhYjczZTg1ZjE2MGE0NGYzMjJhIHB5M2sKKzU4OTQwIDI5YmVjZTE0Nzg5MzkxZGYxYjM0ODQzMTBmYzhlZTUzOWQyN2ZhOWYgbGVnYWN5LXRydW5rCis1ODk0MSBhZGU1OGViN2M4Yzc1YzViZWNjM2I1YTEyOWNkODM4NTRkNjhhOGQzIGxlZ2FjeS10cnVuaworNTg5NDIgYWYzNDI4ZmFlMTVmZDgzMzkwOGVhYTA5MjY2N2VkYTA1NWQwZWQ1NCBsZWdhY3ktdHJ1bmsKKzU4OTQzIDAwZTYxNjVmNDQ4MjlkZWFiZjA3NWYzYmZlZTVlZjlkYzU4MzljMDkgcmVsZWFzZTI1LW1haW50Cis1ODk0NyA3YmM0Y2M5NzJiMGIzYzYxZWU0NDZhYzBkZWYwMGJiNDUxNmI0ZWZmIHB5M2sKKzU4OTQ4IDhlZDNhOTVjYTExNGZiMWMyZDI0MDIwNTc2ZmVhYTljNWU0YzNlN2QgcHkzaworNTg5NDkgMTY0YTZhYzk0ZDNjODFmNDIyNzc4ZmFlZmFkMGYzY2VlMDQ3N2M4MyBweTNrCis1ODk1MCA1OTEyYjY2Y2NjMmQ1ZmY3NWI2YWRiY2E3YTIwOTQ4MzllYWVmNGRhIHJlbGVhc2UyNS1tYWludAorNTg5NTEgY2U3N2Q5MWVhMWQwYmJkZmZhMWJmY2Q0NmE0MzBmMGM5M2E2NmY4NyBweTNrCis1ODk1MiBkN2U5YmVjMWZlYWE5YTVkNjA3NTMxNTRkZWYwYmRlZGJlODY0MjEzIGxlZ2FjeS10cnVuaworNTg5NTMgYTIyMTMwNjBkOWRkYjA0OGQxZGEyMTc5OTJjZjE0YzYxYjJkOWRlNyBweTNrCis1ODk1NCAxZDZkYjlkZDNlNzdhN2NjOGQ4OWZjOGY4NGVhMDg3YzRiYWZkY2ZkIHB5M2sKKzU4OTU1IGIzMWY2MWQ3ZjhiMGVlMDE0ZWJiMDlhYzdlYjY0YjJhODY4MDE4NGQgcmVsZWFzZTI1LW1haW50Cis1ODk1NiAxZTBlYTFmMDMwNThiNWEyNTFkZjEzZmQzOGFmMTdmMjRjM2FiMDQ3IGxlZ2FjeS10cnVuaworNTg5NTcgMDgxMTE4MmE5Y2U5YWMxZGQyYTA5ZWVmYTRkZDgyNzU5MzgzNDhjYyBweTNrCis1ODk1OCA3M2M4ZTI3ZWI5Y2VmNDAyZmFjZjhhOWNjMzFlZjkzMWY4ZmRhMDRlIHB5M2sKKzU4OTU5IGNjY2VhZWMxMTQ0MmY5NGE4OTMwMzMzYzNhNmU5OTg2MTBiMGQ2MDkgcHkzaworNTg5NjAgMjQxMjgxMTIzZmQ4MzUxZDEwZTAyMThkMzIzOWE1YmYxZjEwZWZmMyBweTNrCis1ODk2MSBhMDYwYjNjYzJjNjJiMTI5NmUxYzVjZTkxNTU0NmJhMmEwNjc2OTliIHJlbGVhc2UyNS1tYWludAorNTg5NjIgMmM5N2UyNGIxNmNmY2E5MzM0OGE4ODUyMDMxYjQ4OWE1YzhmZjA0YyBweTNrCis1ODk2MyA3Njg0NGEwYTU3OWY5OTJlMmIwNDhiYTg3Y2JiM2Q2M2Y0MmQwZGQ1IGxlZ2FjeS10cnVuaworNTg5NjQgZDVmYzZlOTYwOTFmYjZmZWQyMzdhNDkyNDNmODIzMDA5OWYzZGM2MyByZWxlYXNlMjUtbWFpbnQKKzU4OTY1IDAzNzdiYTliYzM1OTE3NTJiNzcxM2JmNDhiNDdhMzczMWU5YjkwYTUgcHkzaworNTg5NjYgZTE2MmU4ODFlYTVmNGUzZGE1YzQxZDIzOTJjYjJkYWMxN2E0MDFkMiBweTNrCis1ODk2OCAyNGM4NGQ1OGNiODAxMGIxOGU2MjNlNzkzZGE3MmZiZGExODdhN2ZlIGxlZ2FjeS10cnVuaworNTg5NjkgNTNmYzBmNDFmNjhkN2YxNjY2YzA2OTE5NmNlOTM2NTYxMGY5NDYzOSBweTNrCis1ODk3MCA5YTEyODEzOTFjNDZlOWM1MzEzNjc2NmFiZGUwMzYwYWZlZmVhMWZiIHB5M2sKKzU4OTcxIDg5OTk4OTNhNmUyMjE1MGM4OTg5N2FlNDFiMzg2ZmM1YjI5ZjIyYzAgbGVnYWN5LXRydW5rCis1ODk3MiAwM2FkMWRiN2M4MGU0NWQ2ZGU2Njk1ZWE4MWJkMGM2NTI3Zjg4ZGExIGxlZ2FjeS10cnVuaworNTg5NzMgM2MyOWQ3M2M3NzY5NGU2YzczNTc0Y2U2MDcyYzhmYjZlMjI1ZTE4NyBweTNrCis1ODk3NCBlZTA4MTYwOWNlZThjZDM0NTMxOTEyNDI3NjNiZDJlMzQxY2U4YTI3IHB5M2sKKzU4OTc1IDk4Nzk1NzM4YjRjMjc5M2YwY2Q4Y2Q4YTgyMTk1ZmMxYzQ5NWRhNjUgbGVnYWN5LXRydW5rCis1ODk3NiAwYWU5MDc4Nzg2YjQwMmUzZjJiZDdmNjE5NzQ2YzVhMGQ5MTBkNzI5IGxlZ2FjeS10cnVuaworNTg5NzcgMDE5ODI5ODAzODQ4ZTZmMTFlZmUwMThjM2ZmODM0YTZhNjBhOTY5YiBsZWdhY3ktdHJ1bmsKKzU4OTc4IGRkM2M0ZGQzZWNmZDE0Y2RkYTg3YjRmOGNkYzkyYWViMjQ0ZDc4YjEgbGVnYWN5LXRydW5rCis1ODk4NSAxNzkxODY1YTY2OGI5ZjJkYjRhMGQ4YzdjZjg5YzFhYzY1MWZiYzE4IHB5M2sKKzU4OTg2IGZhNmNkZjU1ZGU1OGYzNmEyNzQyMGFhNjkwOTBkYTkzMzE3MjRhZGYgcHkzaworNTg5ODcgZDRmOTcwNmNiNDZiM2MyYjEyMWUzZTQzODczMWNhMGZjZTViMTFjOCBweTNrCis1ODk4OSA1MTYwNDFkNTI2NTZkNDgxYjE1NzVlMWU5NDFhYTIyMmI2ODI1YmE4IHB5M2sKKzU4OTkwIGY0YTNiNGUxNTVjMjU5Mzc0YzlkYzk1ZDNjMDk1ZmQ0YmE0YjdmZDkgcHkzaworNTg5OTEgOWEzNWU5MjY2Mzc5YmNhYTk1YjM2MjU2ZGI1NTBiZTBmNzc2NTVjYiByZWxlYXNlMjUtbWFpbnQKKzU4OTkyIDhlZDAyODBjMmFiNjc0ODUzZWExN2UwYjJlMmFlYmJiYmMzMTE0NDQgcHkzaworNTg5OTMgZjQ0NGUyNTkzNDFhOTZlMzljNTQ3ODFjNmQzNGUzZDNhNmQ3NjNiYyBweTNrCis1ODk5NiBkZTZiMTI2YThkMzc0OTViNjlhMjkzOGZiMjgyODI4NzY4MDVlYTUzIHB5M2sKKzU4OTk3IGI1OTgyNWQ5ZGI4Zjk5ZTY2MGFlYTFiYTU3YThiYzU4ZDkzNTNhYjMgcHkzaworNTg5OTggYzc4ZGI0OTM4NDgyYzdiNmJjMGNiODYzYjE2NmExNjE2MjU1ODA0YiBsZWdhY3ktdHJ1bmsKKzU4OTk5IDU5MDkzMGUxN2UwYzk4Zjg3ZWJkNTA1N2NjZWQzZDQyNzVhMDg1YzUgcHkzaworNTkwMDAgZDQxOTMzMzBkMWJlZWFmOTJiMjAxYjI2Mjg3ZGJlOTUzODZhMDBjYSBsZWdhY3ktdHJ1bmsKKzU5MDAxIDE3Mzk4NjljYmM2ZTdlMzU0MGE2NDU0MTdiNzhmY2JjZTM2YzhmOWYgcHkzaworNTkwMDIgNmIwMTJmMDFhODg5MDkzMjlhN2YwNWZmZTU0Mzk3ODI5MTY2YThiYyBweTNrCis1OTAwMyBlMjAyMDNkMDMzMWNjMjk4ZjE1MmIxYjRkYjQxNmU5ZDAwYjkxMjU0IHB5M2sKKzU5MDA0IDE3YWFmOTVhZjkwOWExNjJlM2FhYjJlNDU2OWNlZjBiYzNiNTc3ODUgbGVnYWN5LXRydW5rCis1OTAwNSAxMTY1ZDI2MWZiMDVkYjU3M2Y4MmNlY2RjZmZhMDk4YTBjZDgxZGI0IHB5M2sKKzU5MDA2IGMzMTU5NGZiMWVkNDRmMDM2YWE4ZDQ1Zjk4M2JmYmM2MzMzMjkzNjkgcHkzaworNTkwMDcgNTU5MDE1N2Y0ZmM2MTc1NDk3ZmRlYjQwNDY2NjE2OTViMThiY2RmMCBweTNrCis1OTAwOCA0YTZhN2FlYTU3ZjRmZDg4NjRlODI2YjYzNTM2NjQyODQ3ZTQ4YmU4IHB5M2sKKzU5MDA5IDcwY2ZjN2I1MDRjMjg2MzYyNDQxMDIyMzU0YzFhMGYzNzY4MmQ0MGYgcHkzaworNTkwMTAgZjZjY2E0YjIyNjBjYWJmYzgyYTEzMDA3YjVmNzc0Y2M5MzlhM2U4ZiBweTNrCis1OTAxMSBkYzIyNTZlMzAxYTkyMzkyYzljNTVmYjMzMDg0ZWI4NmI5YWJiNTYwIHB5M2sKKzU5MDEyIDcxZTc0NTYyZmI2NDEyODU4ZWVkM2I0YjA1NmQwZTMwNTVmNDUyYmEgcHkzaworNTkwMTYgYTk5ZGE4OTNmMjBjMWVhZGZhMDJiMzdlN2YzMzQzMmUyOGM0YjkyNiBweTNrCis1OTAyMCAyNWE1ZjZhMzAyOTI1ZDU3NDkyMWQ2NTMyMWMzMjg4ZTA2NDY3ZWQxIGxlZ2FjeS10cnVuaworNTkwMjEgMmRmNTNmMDUzOTJjYzFhZTc4NGM4ZWQ1MzY1MzA5NTg1M2ZkMjhiZCBsZWdhY3ktdHJ1bmsKKzU5MDIyIDFmYjM1Mzc3NmRmYjRlODYwOGJmMDk2NjdjNWFiMGRjMDM4ZDFiOTggbGVnYWN5LXRydW5rCis1OTAyNCAxNDk0YmRlNTEwZmY5NGVkOTZhZDUwY2EyYzQyM2YwMDRkZGFlYTM5IGxlZ2FjeS10cnVuaworNTkwMzMgOTk1ZDI1YWFjMTZhYWE5MmJjOTUzYjc2MDdmMjNjOWJlNTU2YjEyYiBsZWdhY3ktdHJ1bmsKKzU5MDM1IDM4ZjYzNDE5YWJkNjQ3M2E0NGU5Yzg4YjdmM2EyNzFkODRhOTE3NTMgcHkzaworNTkwMzYgZDUwYzcwOTlkNGFhNGMwY2Q0NGY3YmFkZjY2ZjFhNmE2Y2U2NTAxNCBweTNrCis1OTAzNyA0ODNlOTU4ZDEzYzc2YjY2NGRlMTZiMzc2NDJiNTk1NGViNmFhMzI0IHB5M2sKKzU5MDM4IDEzMzI0NTBiYzk1MjFkMDM4ZTc0ZTM2ZDI5Y2FhYzdlZjlhMGVjNjMgcHkzaworNTkwMzkgNGNlYzBjNjM5MmMxM2FkNWJhNjg5YTA2ZWEwNTc0ODBiYTFiZDc2OSBsZWdhY3ktdHJ1bmsKKzU5MDQwIDUyMGUyZWQ5NGJjYzUzMGQ1ZGQ0ZDI3MDkyMGZhNTUzNWVjYWFmOWMgcHkzaworNTkwNDEgNDFmN2MxM2VmMTYxMWM1YmQyMDExZGZlYzlhNjVhY2U1ZTI4NDMyMiBweTNrCis1OTA0MiBiOTFmZDc0ZjMyZDhlOWM0Y2MxOGNmYzZhYTVkNmRhYTc3NTBhMzE4IHB5M2sKKzU5MDQzIGZjZDc2MzM5ZmUxZmU2Zjc0ZjlhOTI0MzdjYWJiYWQ1MDA0NTg1ZDAgcHkzaworNTkwNDQgM2E3MzBmNDkwOGUzZjJkYjNlOGYzZTkwM2ZhOWQ2YmM0ZWNkZTc1ZCBsZWdhY3ktdHJ1bmsKKzU5MDQ1IDcwZGRiZTY3ZDNjNDYwYTFjOGU0NWFiY2IwMzg1YjEwMGEzMWY1MjUgcHkzaworNTkwNDYgMTlmOTk2NTUzMTg0ODA2YjljNzk2YzZjMzc4MDY4MDE3M2VhYjRlOSBweTNrCis1OTA0NyA2YWE4ZTEzNWQ5Zjg0ZGY0MDFkMjIxOWNjNzk2ZmYyOTI1YzNlNjcyIGxlZ2FjeS10cnVuaworNTkwNDggNDk2ODFkNDM2ZGY5MjM2YTYzNGRkNjAyODZkMTA0MzU1MTU2MTVlOCByZWxlYXNlMjUtbWFpbnQKKzU5MDQ5IDBlODk3OTA1ZWU5NDNkOTQyMjQyYWIwOWM4YTI0OGI1YzBlZDJkNjAgbGVnYWN5LXRydW5rCis1OTA1MCBlNWQ0OGZiZTE2NDYyYzQwZGMyMmY3MGYwZWJmYWI0NDU1YjFmOTIyIHJlbGVhc2UyNS1tYWludAorNTkwNTEgNzgwYzcyODQwNmU2NzVmMmI0ZmM5OWVjNmVkMmVkOWVjYjMyMTcxYSBsZWdhY3ktdHJ1bmsKKzU5MDUyIGRhOGRjZDVjZjVhMDFhMzQzMDU3MDgxOWQ1YTc0ZTM5NjVkZjNkMGIgcHkzaworNTkwNTMgMWFlOTIyNGY0ZWU3ZjAxYTVhNDA3Y2ZkYTQ0ZThmNTgwNjBhMjQ0ZSBsZWdhY3ktdHJ1bmsKKzU5MDU0IDU0Yjk3M2YwZjU1YjViNWQ2YzA1NmEyY2UzMzI4ZTE3NmYzNjRhMGYgbGVnYWN5LXRydW5rCis1OTA1NSBiNmY1NzgxZjVjM2YwZjU1Y2Y3NTIxNWY5NmVjNmMwYjhlZjYxNWNlIGxlZ2FjeS10cnVuaworNTkwNTYgNDc0N2VmOTY0MGFlOGIxMzc1MjE3MDIzNDgwMmM0NjA0Y2Q3NjIwYSBweTNrCis1OTA1NyA2MWVmOTBhMWIzNWUyNTdjYjFhMDc0ZTVlODg3ZTE0Y2QzNGMxMDk5IHB5M2sKKzU5MDU4IDQwZGZjNDg1YjBiZTM3ZWJhYTMxYzZlODkxMDY5ZTg3MDViNWFhNTAgcHkzaworNTkwNTkgNjk2OTljZmRkMjZlZDBlNTNiY2YwMzVlZjhkNDFlNmY0NTNhYmUxZiByZWxlYXNlMjUtbWFpbnQKKzU5MDYwIGIxYmNkNTk5NjcxZjA1MTgxZGM5NTE1NjI0MGI0YTc0NDhkMGZhNmEgcHkzaworNTkwNjEgYTkxNWYyYjEzNWMwOTVkZmU5NDkyOWY4M2I2YWQzMjBhNDk5MzM5YSBweTNrCis1OTA2MiAxNDZiYTk3ZmZlMWFiMmM5YWY0MzZiMDIzYzYzZmI5ODM4NjFmZWIxIHB5M2sKKzU5MDYzIDhlYTdmNTlkZmY2YmM2M2FjOGZjNTBiMmU2NzAzMTlhZjc2YjAxYmMgcHkzaworNTkwNjQgZmRmMTQxNzAzMzdhZDc4YzVkZGM0M2U4MGIxMDU0MGRlODNiMTdkZSBsZWdhY3ktdHJ1bmsKKzU5MDY1IDJhM2Q3MzQ5NWYxODRkY2IxZmQyNmVjNmE2OGJjZDc2MjRiMjQyMGQgcHkzaworNTkwNjYgMzJkNDU3YTc4ODViZGYzODI2YmViZGRlYTQ5OTQxNGU5NGMwNjFjZCBsZWdhY3ktdHJ1bmsKKzU5MDY3IGQzY2IxNmIzMjFkNTVjM2ZiZmQ3YTg1MjRmYTRmOWFkNmM2ODgxMWYgcHkzaworNTkwNjggNzRmMjI5NTRmMTg5OWRiNGM0OWQwY2Y5NmRkYWQyNWMxNjg5OWM3YSBsZWdhY3ktdHJ1bmsKKzU5MDY5IDZjYTAwNDQ3NWFhMGZjODQzNzhiMDQ4Mjg0YzAyOGJkNmNiZGU2MjggcHkzaworNTkwNzAgMmRlN2QwMGZiZjE5MmFjM2E2ZmZjMTk4M2ZhMjg1Yzg1YzEzNGU0ZiBweTNrCis1OTA3MSA1NTc2MTRjNGZmMDBmMzA5ODdiNjY3OTAwM2FjZDQwZTczNjg0MjY1IHB5M2sKKzU5MDcyIDI5YjBmNDk3NWQ5ZjMxZTJkMTA2ZWJiNGYzNTY0ZjEyNDk4OTc5NTggcHkzaworNTkwNzMgN2FiNDkwNjRkNDMwYWE1YzkzMDQ2MzU4YTExMTBhYjJkNDMyZDhhZiBsZWdhY3ktdHJ1bmsKKzU5MDc0IGY1NGVjZjQ5NGNiNzExMDUwMjYwODJlODM5OTQ5YzhmNzM0MDgzZDEgcHkzaworNTkwNzUgOGI3ZDQzMTNlYmMwNTY5Y2FjOTJmZTM3NDBkMzM3YjVhZGQzMjE1ZSBweTNrCis1OTA3NiBlOGFjMWFlNDUwM2NkN2E4MjgwNzIyODI5NWQ0NTU5ZTdhMGUyMWE0IGxlZ2FjeS10cnVuaworNTkwNzcgOWM0YmYxOGU1ZDMwZTYzMzRjYzM0NDU4NGIwZmViZWMzODgwMGQwNCBweTNrCis1OTA3OCA3MWExN2Q0ZDNhZmEwZGE0MTY4ODY3MWUwY2M0MGUxYmVlODE5NTE1IGxlZ2FjeS10cnVuaworNTkwNzkgMmJhNWFiMzg2OGM5MGZiMWY0N2Q5NDZlZDVjZjRhMjlkOTFmZmQ2YiBweTNrCis1OTA4MCAzOGIxZGViNGU0ZWJkZjgzOWY3YzkxNmY4NjlhNGI5NzYyY2NjOTBmIHJlbGVhc2UyNS1tYWludAorNTkwODEgODgzODg0ZmRhYWU4ZTExNDNjZmEyOThjOTUzMDBhYTE2OTJhMTVmNSBsZWdhY3ktdHJ1bmsKKzU5MDgyIDg2MzZkY2I4MDFjZTA2MDNlNDdhNjVmYmQ0NmY0OTYzOTZjOGVmYTQgbGVnYWN5LXRydW5rCis1OTA4MyAyNWQ5Y2UyODNiMzk0ZjFhZWQ2OWY3OTNmZjNjNWRkMDQzNjkyNDdhIHB5M2sKKzU5MDg0IDNmYjdlZDVjMjNkZDY5MGQ0NDQwYmRkNjZkNzk1MTRlYzQxMTYyZWEgbGVnYWN5LXRydW5rCis1OTA4NSAzYjA0ODk0MTE2ZmUyMjJmODIxNDM1NWRmYmQ2ZWM2YWZlZjU0NThkIHJlbGVhc2UyNS1tYWludAorNTkwODggNzgyY2I0MDM3OGY0NGY4N2ExNGM2YWJhNTE3YWQwNGZhNDVjZTcyMiBsZWdhY3ktdHJ1bmsKKzU5MDg5IDJkYmNkMzkwYjZmMTUzNzg4M2MxOWQzYzQxZGNkNGM4YTg3ZDJiNWYgbGVnYWN5LXRydW5rCis1OTA5MCBiMDk5ZDM5YzM0ODJkOTVjYWZmNzJlZjJlODRjZjIzM2EyYzFkMWRlIHB5M2sKKzU5MDkxIDJmZDdjOTExMTYzMmEyNTAwYTEwZjgyNjY3ZjNkZjM1NTcxYmQ5ZTUgbGVnYWN5LXRydW5rCis1OTA5MiA2Yzk2N2MyNjg0MWE5MTQ1NTJiZDA2ZTFmNWM3ZTk2M2FjZjljNmVmIHB5M2sKKzU5MDk0IGNiYzhiM2JkMzE1NzgxZTUzYWZiODkwMjZlNTRkMDFmYzA2ZDEzM2IgcHkzaworNTkwOTYgOGUwYzRjNzEwMzc1ZjJkYzkxOGIyNDM2ZmIyNjQ1ZWNmMDgxZTc3YSBweTNrCis1OTA5NyBlYTk4ODRmMTQ1NDU5ODg1YmI1MTRmMWNlMDg1ZDc5MTliMjk4MTI1IHB5M2sKKzU5MDk4IDJhM2NhOTAwMDhmZmZlYzFlY2MzMDFjZGE3YTQ4YWY2YTU5MjhkNjkgcHkzaworNTkwOTkgMzJiZmY3ZjI5NzVkODEwYTk5ZDY5ZDliM2RhYjllMTVkOGRhNjdhMSBweTNrCis1OTEwMCA2ZjE0OTUyNmU4NjRjNDEwNDZlNGRkZWEzYjUzZjJlNTdjNDVhMmMwIHB5M2sKKzU5MTAxIGRkYmM1ZTJjNjg5YTdhNDExMTAyZDhhNTkwNjJhOTFjOTQzMDFkZjYgcHkzaworNTkxMDIgMDkyYjUzMDY5ODNmNzIwYmJlMDFlYjNlMWJlZjk3NzIyMTk1ODhjZCBweTNrCis1OTEwMyA3NTM2NDM2NDQwOGI2OTMxZDgzZDg5YmM1MDVmMWQyZTUyZmVkYjQ1IHB5M2sKKzU5MTA0IGZlNWIyZWRmZmFlNzY5YWNjYTUwNWIyOGYzM2E4MDdkZWFiNDQ1NjYgcHkzaworNTkxMDUgMjNiZWZlNTQwZDBkNTQ2ZGQxNjllN2I1NTRiZDliYzYwNjgwZDY3OCBweTNrCis1OTEwNiAxMDNiN2Y5NTUwMzZlYTM2ZjVmZWM1ZDNiZDY2ODBhNTZjYmVjN2IyIGxlZ2FjeS10cnVuaworNTkxMDcgMTIwOTk3MDYxMmRmZTE4MTE2MDYwMTRkMWVhNzM4NGRjZTRmYTk1YyBweTNrCis1OTEwOCA5OGI0OTY2NjQ5ZDUxYjA5M2UxOTE5N2UxYzkyYTZkYmE0YzEyMzJhIHB5M2sKKzU5MTA5IGIyMzFiZGE2NTNhNGY5YjM1ZjYxZGNkMjY1M2RlYWQ4YWRhZDY4YmYgcHkzaworNTkxMTAgMjU5ZThhMmQ2ZjhjMjcwNTk0NTBlODJkZDc4ZWYyZmFiNjNlOGJiZiBweTNrCis1OTExMSAxNGM0YmIzYzY1YTdjN2VlZjdlYmJmMTkwMWUxZjhjOTI5OWZjYTcwIHB5M2sKKzU5MTEyIDI2NTVkMTEzMTIzMmMxY2ZkMjVjYjIwOTM1NDkzNjkzMmMxYzMxY2YgcmVsZWFzZTI1LW1haW50Cis1OTExMyA0MWIyZjI2YzdiM2RiYzUwODg2MWJlYzQxNDNhMTk1ZTZiMDYxNzAzIHB5M2sKKzU5MTE0IGQyMzgyOWE5ZGIyMTE5M2M2ZTRmMTVjNGI5NmMzYjE0ZTRhYTNhNWEgcHkzaworNTkxMTUgOGQxZWVmMzkxOWYwNTFlNzlkNTc5YjY5OGE2NjBhNzcyN2MyZjBmMCBweTNrCis1OTExNiBkOWJjZDk0ZTU5MzVlNmI1ZjkxYTRiMjFhZGFjOGYxNDE2ZmJhNjMyIHJlbGVhc2UyNS1tYWludAorNTkxMTcgOGJjYmYzMjJjMmI1YzI3OTBlN2MwOWZjNWY1NTcwOGUzYjdiNzNlNiBweTNrCis1OTExOCA0YTc1NTNiMTc2YjZhMWEzY2Q0YzMwMWEyNjVkMmNhZjRjZjI0OTI0IHB5M2sKKzU5MTE5IDcyOTYyYWJkOTBhMTZhYjg1NmJhNjllMjNlZjBmMmVkYmY1YzdmYzQgcHkzaworNTkxMjAgYThkZDg4NzRmZjJkNTFlYmI3NDBhMzQzOTE1YzAwYzg1ZjAwMzFlMiBsZWdhY3ktdHJ1bmsKKzU5MTIxIGY2MzI3MjBkODEwMjdjZTg5ZjI0NjFhNDUwNzI1M2NkNmUyNDFhODQgcHkzaworNTkxMjMgZGE0Nzg0NzFmMWI2Yjg2ODU3N2ZjODZkMzk3YWFhNDc4YmRlNmJiMCBweTNrCis1OTEyNCA2ZDZiNjA5ZTQ1N2M4MDc1MmFjNWRlMDU3MWM1MzFjZTFmNzAwYjc4IHB5M2sKKzU5MTI1IDg3NDRlNDFkYWY1NDVjZDE4NmMxMjVlNWNjMTJjODBlNWFjM2I4NzggcHkzaworNTkxMjYgM2M3MjVhNDNhYzhjZDhlNjczMTJhNDY0ZWFjYTgwNmVlNjQyNTY0NiBsZWdhY3ktdHJ1bmsKKzU5MTI3IDkzNTBlNDI1ZTVmM2JiN2U1YjY0ZmZmMGZiZDhhOTVhNGI0MjA1ZmYgcmVsZWFzZTI1LW1haW50Cis1OTEyOCA0OWNlZmVjY2Y5M2ViZjVhYjUyZmVhYTFlNmQ3OGQwNjdmNWQzNjM5IHB5M2sKKzU5MTMwIDZmZjY4NTA1MTk5YWUxODUxZmQ2YmI2N2FkYWE0ZmU5MzZlZmNlYjggcHkzaworNTkxMzEgNjJjZjA4YTY0YmMyMzE0MDQxOTNlN2Q4MGI3NDIyMzQ3YTM0MTViYyBsZWdhY3ktdHJ1bmsKKzU5MTMyIDVmNmE4ZTJiOWU5Y2E2ZGQ0NDYyNzJlOWJiOWUxYzUyNjFmMzYxOGMgbGVnYWN5LXRydW5rCis1OTEzMyBlNzI1MTY2YzhjODE4NGY4MGZmZDZmZGVjZWM5NDY3NTBjZDQxZTExIGxlZ2FjeS10cnVuaworNTkxMzQgYWYzNjAzODBhYTE2ZmYzN2U2NjBlZjFmNWE0MjIzNTNjOWVmY2I4MSBsZWdhY3ktdHJ1bmsKKzU5MTM1IDIyMzBmMTZlNDAyYjEwNTEzM2Q0YjhkMTdhOGY2YWRiNWQ1NWI1NzggbGVnYWN5LXRydW5rCis1OTEzNiBlZDI5YjkxNjJhZTllOWE3MzhiYWFmMzA3MTNlMTc3MWFlMjJlMDU2IGxlZ2FjeS10cnVuaworNTkxMzcgYjQ4MWFkYjA0Njk5YWMzZDYyN2U1OTgyZTRmZWZiNTc4MzA0YzBiNSBsZWdhY3ktdHJ1bmsKKzU5MTM4IDRkMGZlN2RhNGNkNWY2ZjIwZjRkZDExMjhiZTdjMmJiOWU1N2JhNjcgcmVsZWFzZTI1LW1haW50Cis1OTEzOSAzNTg2YTY2MzQ4YmY4NGNhMGRjOTA2YjczNzA1NGFlZjJhYjc0NTQ2IGxlZ2FjeS10cnVuaworNTkxNDAgNGUxYTE5YmEzZDRhNjM4ZjVhZGNkMzQ4ZTA2Y2Q2ZmRmM2MxMjRjNCByZWxlYXNlMjUtbWFpbnQKKzU5MTQyIDY4Y2FhNDdmNWUxNTNlMzU1NzMwOGIzMzc2NjFhYmY1ZjQ4MDI2MDUgcHkzaworNTkxNDMgMTFlM2UyYWUyMzY0M2QyMjFjNjAxMzI2ZjQ5ZTc5MDFjYzBmMTFlZiBweTNrCis1OTE0NCBhNGExNDA0ODY2OTEwM2RmMmNhYmViM2IzNzkzMDA2MTFmNjg0NjMzIGxlZ2FjeS10cnVuaworNTkxNDYgNTVmYWZiNDZmYTQ1NWY1YmNhNmUwYWFjMGQ0NjcwODVlNzMxZDQ3ZSBsZWdhY3ktdHJ1bmsKKzU5MTU0IGE5Y2Y3ODBmNjM5NmE3MmU5Y2ZmODA3ZmE5NWIzZjg2NDg1ZTFmN2YgcHkzaworNTkxNTUgYjg2ZTZiZjc0MzhmODhmMzM5Y2JjNWI3ZTQ3YTE5ZTg4NjU2YzMzZCBweTNrCis1OTE1NiAxNzQ3OWEwOWVjN2NjZDU1MTkwNTcyYTg0Y2U3MjI5ZTgyZDVkYmViIGxlZ2FjeS10cnVuaworNTkxNTcgYmIxZTE1YmI3YjU5ZWM4NTliOTQ1NjkzMjhkYTUzOTg2ZjFlOTE2YiBweTNrCis1OTE1OCBiOWI5NDc4NWIyYzcyZmM1YzhiYzc0YTkwODJmOTI2MmI4Y2IxMmUwIGxlZ2FjeS10cnVuaworNTkxNTkgMTU1ZTk3MjVkYTJmOTM0NzU5NTUyZmNkMWRiYjIwZWFkY2JkNzk3YiBsZWdhY3ktdHJ1bmsKKzU5MTYwIGNmNjAzOGRmOWQ1MjY5YzhlMWVkYTc3NGM5ZTEyODgzNjk5MDU2NDUgcmVsZWFzZTI1LW1haW50Cis1OTE2MSA0OWE3YzdkYmE4Y2FmZjRkYTlmMDcwM2I4ZjQ5MmE0NTk4MDgxZjdmIHJlbGVhc2UyNS1tYWludAorNTkxNjIgMGI1MzU3Y2M0MTZiOGYzNTgyNGJmMzM0MTEyMGYyZmUxMmY4N2YzOSBsZWdhY3ktdHJ1bmsKKzU5MTYzIDJiZWQ4NDE1ODVhOWNhNjViMGI3NGI3NzI2ZTQ3NGRkYmJmOTU5NGUgcHkzaworNTkxNjQgZDNiZTZlNjE1ZjhjNDZkYWE2NWFmODI4N2ZjMjY1OGVmNjY3N2Q5NSBsZWdhY3ktdHJ1bmsKKzU5MTY1IGVkYjc1YzA5OGE0YjA1OWQ4NDIwNzY5NDg1NzM1NGVkNjEyNjEyYzMgbGVnYWN5LXRydW5rCis1OTE2NiA2ZDYxNGI4YzUxMjUzMmVjZjgwNzExMDMxNGM3M2RmMjBmZGQwYjBhIGxlZ2FjeS10cnVuaworNTkxNjggY2YyMjA1OTYwY2JiYWFkNmU0NWNkNzM1NGE1YmZkOGFkNTYyOGI1NiBweTNrCis1OTE2OSAyMDY4YmY3Nzg5MWQwYjQyNDA5MjRjYzhjODQ1NzVkMTMxYmRlODgxIGxlZ2FjeS10cnVuaworNTkxNzAgMjE4M2Q3MmFiZmFhY2ZjZGU1Y2EzZmY5ZjM0ZDg1YTZlMjBjNTNhYSBsZWdhY3ktdHJ1bmsKKzU5MTcxIDRjZjliYjljZWY5MWY1MDNmYzYxOWRhYzcwMjM3NDk1MjgwMTZhMjYgcmVsZWFzZTI1LW1haW50Cis1OTE3MiBkNTYwMWViZTE1YTk0NzBkMWRkMzNlODVkNzM1MjdjNTYzNGQzYTA2IGxlZ2FjeS10cnVuaworNTkxNzMgMTRhYTNlNGU3Mzc1OWI3YTY2N2JjN2JlZmYxNjNmMjNmZmM1N2IxMCBsZWdhY3ktdHJ1bmsKKzU5MTc0IGUwNDY1YmEwZTk1ZDY4YmYxNjI5NTFmZmQ0MmJiNmEzNGE0ZWFlNWQgcmVsZWFzZTI1LW1haW50Cis1OTE3NiA3ZGQ3OTYxZTBlZmYzZmY0YzdmYzIyZmVkNjNjZDE5YjYwNDlhODE2IGxlZ2FjeS10cnVuaworNTkxNzggMjJlMDk5MDVlNDAwMGFlN2NmZjQ4NmNiZmM2NzUyMWJlYzQyOWZkNiBweTNrCis1OTE3OSA3YjRlOTRhN2I5MmU5ZWUwMWFhZjc3OWU0NWRkODc4ODBlYzMyN2M4IHB5M2sKKzU5MTgwIGE3YzE4YjkyNDIzNmEwN2U5YTYzZjUxODNkMWQ4MjhhYjUxYzJhZWMgcHkzaworNTkxODEgN2IzMDExMTI0N2Y2NzIwMDdjMjZlYzdlMzQyOTk0ZGYzMzA4OWNlYSBweTNrCis1OTE4MiBlNjE2NWUzODljNTAyMmI0Njg3M2E1ZjI5ZGU4Mjc5MTA4MDJhYTVlIHB5M2sKKzU5MTgzIGZmNWRmMWZjMGZjYzRhNmRmMzM4YThjZWM1ZjE4NGQwOTk0ZTcwOWMgcHkzaworNTkxODQgNTJiYmUzMzY1YzcyYzI3MGY3NWQxNzNjMGM2OThlYjRjZTYwMTYwNCByZWxlYXNlMjUtbWFpbnQKKzU5MTg1IDczZjgzODk5ZWI5ZDllYzAwZTYyMmNkYjAwZTE3ZDgyNjViOTc2YzggcHkzaworNTkxODYgZTRiMWUwNWNlMjYzNTI3NTVjMDJkMzNkOTExOWY3YTRlZjMxNTE1NiBsZWdhY3ktdHJ1bmsKKzU5MTg3IGViYzczODkyOTdkNjkxYzZlMTU5YzU5OTk5ZTdlMDI4NWYwZDU2NmQgcHkzaworNTkxODkgNDhhZjYzNzUyMDdlNzA4ZGI0MWMxOWI2MDM3M2JjNjFkZjAzZmViMCBweTNrCis1OTE5MCBmNDhkMmVmNzJlN2UzOTQyNGIwNGFhMjU1OGI5YmY2MGJhMDliY2EyIGxlZ2FjeS10cnVuaworNTkxOTEgMDQ3NjQ1N2ZmYjM5MWZkMmYwNDY4YzcyMmU3YmM1ZTYzNzU0MTU2MCBweTNrCis1OTE5MiBlN2ZlZDdhNTk1NzY4ZGNlMjkzZTVkMDYzZTYwZGY4YzgyMGJjYTE4IHB5M2sKKzU5MTkzIGI0ZGE3MWE4OGZjMDE1ZWQ0MjhhN2ZlZWNkYTE4MzhmMDk1NTk5Y2MgcHkzaworNTkxOTUgZjJlMjQ3OWFmZGYwYjMzMDhmMjc1YmE2OGZmZTc2ODU2MWY0MzkyNiBsZWdhY3ktdHJ1bmsKKzU5MTk4IDhmOTJiNGVlNmZjNGNmNTk1NDg5YmJjNWI4YjkyYjJkNWQxZjJhMTAgcHkzaworNTkxOTkgYmEzMDU2MTE5YjI4M2MwZDM5NDM4ZDJlNTkzMTA2MzRmMTRjMzY1NSBsZWdhY3ktdHJ1bmsKKzU5MjAwIDVkMTA0OWQ0YzNjNjU4NDcwZGUwMzcxM2JkYzJlNmJjOWZkZDEzZGUgbGVnYWN5LXRydW5rCis1OTIwMSBiZmUwMzdlM2ZkNTVmZjJmYjg3ZGI2MDVmZmY5ZTZhODMxNTRmYmIwIGxlZ2FjeS10cnVuaworNTkyMDIgNDVjZWQ2YWIwNjZkNWJjNjEzZDE4ZWZlOTcwMWMwZmVmNjQwZTQ4YSBweTNrCis1OTIwMyA2MGU2ZWFhMzc4ZDlmOTFiZTJiNDk4ZDY2MmE1NmQ1ZWNhYmRhMTk3IGxlZ2FjeS10cnVuaworNTkyMDQgZDQ0ZmZmZGEyY2QwODc1N2RlZDU5YjczYWM0Mjk3YjM4NTE3MTZhMiBsZWdhY3ktdHJ1bmsKKzU5MjA1IDEyZTcyODAzNWUyYzZjZjJiZmQxMzMzODY2ZmY0OWQ2MzFiMGE2YTMgcHkzaworNTkyMDYgNzFmNDdmODY0NjkxZTg0NGYzNmM0ODFiZTNiZTc2MWIwYWY3Y2YzYSBsZWdhY3ktdHJ1bmsKKzU5MjA4IDdlOGU4Nzk3ZjlkMGE4NTE4YjU2YjEzMjg5YjE1MzZhZmVmZDhkMWYgbGVnYWN5LXRydW5rCis1OTIxMCA5MThiYmVlM2E1NDU4ODAwZjJiZTFlZjFiZmIzOGY2NzYwMTU5Yjg1IHB5M2sKKzU5MjExIDFmMDI0YTk1ZTlkOTE2YTM5NDUzZTNkNjM5ZmUwN2VjNTUwNTk4MGUgcHkzaworNTkyMTIgNTNiMDhmZDg4YmY0NzViYjRmNjc5OTkxZTExNGRjMDRjMjExYzBhYiBweTNrCis1OTIxMyA1MzBmYjk4NTJjNTA0M2ZlYzBiZDM3M2JiM2QyZTI1ZWUxMzVkZDkyIHB5M2sKKzU5MjE0IDRjMzkwMjllM2ZiMDMwYTY3Zjc1NWY3YzYxOGZjM2NlOTA4ODIxNGIgcHkzaworNTkyMTUgNDI5Y2FkYmM1YjEwOTNjZDgwN2VjODgxNjVkNThhN2MxY2Q5YzE1YiBweTNrCis1OTIxNiA0MWI3ZjgwMjY1ZGIxOWIzOTg0ODU3NTQzZmIzYzFhNmNiYmE2NDU5IHB5M2sKKzU5MjE3IDE1NjQ5YWVmMmRiNTVlMTI3MDA5NDFhM2NhM2YwMTU3ZTM5ZWU5M2EgcHkzaworNTkyMTggZWNjYjE5NzA0NGRkNDk1ZDdkNjEwNGYwNzY3NTdmNmQ2OGIyOGU4OCBsZWdhY3ktdHJ1bmsKKzU5MjE5IGMwMjRiODk0ZDkyOWNlZDRjYjZlYzUzOTBmODg0Yjg5NDNhNmE3YzMgbGVnYWN5LXRydW5rCis1OTIyMCBlNmNhOTJiMThjZjRkYTQyZWM1OTA3ZGViZDQzNjVjY2ZlMWU3NWIxIHB5M2sKKzU5MjIxIGYyMzg1ZDk4MjgyYWJhMGQ5MTBkMDA5OWI3OWFlY2FiNjFjYjVkMDYgcHkzaworNTkyMjIgYzRhNmQzZWM0MmMxMjQ5MjY3MWM3ODc3OWE5ZjA2NGMzMGQ3NTY4MiByZWxlYXNlMjUtbWFpbnQKKzU5MjIzIDZlZDc3ZmRhOGI5MTQ4MGFiOWJmNTE5YWM2Njk0MzAxMWIyNWQ0YzYgbGVnYWN5LXRydW5rCis1OTIyNCBiNmI1YjZjZGQyMDJhOTBlZDVkZTMyMDFjNzllYmE2YTAzYmE0MzVhIGxlZ2FjeS10cnVuaworNTkyMjUgOWVmODU3MjRmNGIxZjUyMzdhMzMyYTRlM2VlMTM1N2Q0MWM4Y2EyMyByZWxlYXNlMjUtbWFpbnQKKzU5MjI2IDQ5YWM1ODdlMjJlOTFmMDE3ZWIxZDAyMzAwYTRiMzhlN2ZkZTVhZTggcHkzaworNTkyMjcgMjk1Y2YwNWZkZDJjMzI4Yzc1MDFjNDNjMDY1NjFlNTk0Yzc2ODhmOSBweTNrCis1OTIyOCBkNjM5NDU4YzdlMDI0NWNiM2MwNGMxMGJhMzBjMTNkZDNlOTFkZmNiIGxlZ2FjeS10cnVuaworNTkyMjkgMGNjNTUyYWI3NmJkMzljM2YwNWMzMzI4MjA0NDRjYzUwMTlhN2JhNyBweTNrCis1OTIzMCA4OTRmZWUyNzlkYmNlZjE2MWJjMTFlN2VhNGZlZTE2NzI5ODQyMTdmIGxlZ2FjeS10cnVuaworNTkyMzEgNDQxN2FiNWIzNTFlNmNkODRjZGQwM2ZiZTdlMGI1Y2I5NTI5ODcwMiBsZWdhY3ktdHJ1bmsKKzU5MjMyIDAwMDQ4ZmVkYmFhMGUyMmUzZmY1NmI4YjljMjBhNDcyNWI5ZmZhYzcgcHkzaworNTkyMzMgM2VmNmRiYzQzNTMxYTFjYmYyODRhNmVjZWRiZjA4Y2U0Yzc0ZTM2NyBweTNrCis1OTIzNCAyOGM4MDI4MzcyNTIzM2QxZjQ1NjQ2Y2VjNzExN2M0NGM3MjUzN2FiIHB5M2sKKzU5MjM2IDNjZWJkZTQ3OGNjNGRmZTMzNzc1Yzk0MTM0MzZkZTE0NWE5NGI5YTIgcHkzaworNTkyMzcgNTMxMTMxMDZmZWJiNTk1NWE0MTE1Yjk5YzMwNjY5NmZiYWQxMzIwZiBsZWdhY3ktdHJ1bmsKKzU5MjM4IDNhYTExMGY2ODBhYjNlMGEwODE3Mjk4NGUwODhhZDU3ZjZkZmFhY2QgbGVnYWN5LXRydW5rCis1OTIzOSBmNTY0NDA1YzgxMDQxZGZiOGU2YjA1NThiNmY4ZWJhMzU0NzhkMDk4IHB5M2sKKzU5MjQwIGI0NDA1OWUwZjA3NTllZDEyY2FhZTUzNTllMWMzYWY4NTY0MGNiYTcgbGVnYWN5LXRydW5rCis1OTI0MSAyZjQ3YjIyOGJhMDY1NGEwYTBjMTViNThhMTAyZWI1ZWI2NWEzYzA0IGxlZ2FjeS10cnVuaworNTkyNDIgNzU3N2I5OWVjNTNiNTkyYmNiZTliZjQ1OTFkNGI3MWI3YzJjNDlhOSBsZWdhY3ktdHJ1bmsKKzU5MjQzIGM1ZjJjOTc4OTMxMzVmYmY4NzNhMDZkOTI5NGJkYjQ3NDAzOGZjMjEgcHkzaworNTkyNDQgZjRlN2M3MjliM2EyNGVjMmI4NWJlZmZjYjRlNTc4ZGViNjYzMGM5MyByZWxlYXNlMjUtbWFpbnQKKzU5MjQ1IDE2NWU1MjdjMzk5YWVlNTI4NjUwNGYwZTMyZGVlMmUyMjliNjExZjQgbGVnYWN5LXRydW5rCis1OTI0NiA1MWMxZWFlYjg3ODZhNjkyZDUzNjQ2YmMzY2JjOTg1N2VmYWM3ZjgyIHB5M2sKKzU5MjQ3IDY2NGIwYmM5MmI5NmZkZTllNzVlNjA4NzlhMGIxN2Y5ZGFmOWE1NjEgcHkzaworNTkyNDggZGNjNGJjNThhZjUyYjdlYzZmMDUwNTEyYTQ2YmM0M2VhM2UzNjU5OSBweTNrCis1OTI0OSA4MGI0MmRiMmVhYzkyYmU4OWVkMTQwYjY5ZTQyM2Y3NDFiMTBmNmVhIGxlZ2FjeS10cnVuaworNTkyNTAgMmJhYWJlZTQwNzAyZjg0NjBjMWJlNzFlZmEyOWQwMzU0MDg5ZjM3ZCBweTNrCis1OTI1MSA0Y2I5NWZjNDEyOWUwZTEzNTg0MWYwNzJmNDRlNTUxMGY2MGJmMzk2IHB5M2sKKzU5MjUyIDM1MWI3YmQ3ODZlNGFlZWQzM2Q5NmZmYWE0ZDYwZGJlZWNlM2U5NjMgcHkzaworNTkyNTMgMmIyMWYxNThhYjlmZjMxNTA4NjM4ZTgyYWJiYzE4ODMxNDViMzAyOCBsZWdhY3ktdHJ1bmsKKzU5MjU0IGMyMThkMWFjOTE2ZTVmZTQzYmRkM2Q1YTVhZDU4ZTM2MjBlMmIyNDcgbGVnYWN5LXRydW5rCis1OTI1NSAxMTBmZjYxNGVjMjhhZGRlZjYzZjFmY2JmNjBkYzY1OGQ2MGQwNTA5IHB5M2sKKzU5MjU2IDk0NGFlMzQ1ZTlmZmI0MWE5YTE4YWVmMjE4YWM5MjA3NjM1MGRlZDkgbGVnYWN5LXRydW5rCis1OTI1NyA4NmE3MzViNDJhOGZjZWQ5ZmJiZTBjNWJiNWY2MzVkZTczZDE5NTliIHB5M2sKKzU5MjU4IDIxMzIxZGNmMGFiNWQ5Zjc2ZjA2MWNjY2ZlMDBlZTNmNzg5ZDdkMTggbGVnYWN5LXRydW5rCis1OTI1OSA2ZDdmZDk1ZWYxNGFlOTdkMjYzMTc4NTVmMWEyOTdlYzNmMWExZjVlIHB5M2sKKzU5MjYwIGU2MzQ1MTFiNGFmNWRhOGNmZTY4N2MyMjNlODhmYzVmMmUzNDljOGYgbGVnYWN5LXRydW5rCis1OTI2MSBiMjFiMWM0ZjA0Mzk1YjliMmExYTUwYTA1OTVjZTYzNjBjYmUzNTljIHJlbGVhc2UyNS1tYWludAorNTkyNjIgNGYxYjIwZWQ5OGU1ZmE3NTc4MDgwMGQ0NjgzNzkwMGNjZThjM2IxMCBsZWdhY3ktdHJ1bmsKKzU5MjYzIDYyMjRkY2FjODA3ZDg3MzAwYzliN2M5OGE2YWRkNzk2YTIyYTNkZTcgbGVnYWN5LXRydW5rCis1OTI2NCBiZmRlYTY1Mzg4YzMxYTY1YmFiYmYzZGU4MTlmMWQwNDI5NTQzOTcxIGxlZ2FjeS10cnVuaworNTkyNjUgMTk5ZGZmODUzMGFkOWRiOTZiM2UwMDdmNTBjZTBkMzhlNzRhNzkwYyBsZWdhY3ktdHJ1bmsKKzU5MjY2IDgyMzE0MWFkYjA4MDFhYTQzZWVhYmZjMjNjZDE5MWI4NzZjMWVhOGMgbGVnYWN5LXRydW5rCis1OTI2OCAwODg5ZGFmNmQwZDk0YjVmOTY3YWQ2OTcwZTJiOWQ1MTdhYWE2YTZhIHB5M2sKKzU5MjcwIGYzMjQ2MzE0NjJhMjdjNmQyYTY4NGYzYmI1NzA5MTg1ZmY2YjhmMmEgcHkzaworNTkyNzEgMWFjN2JhYWViY2U3NzU0OWE2YzU3YjQyMjVmYzZlMWY3Y2Q3N2UxZCBsZWdhY3ktdHJ1bmsKKzU5MjcyIGFiYTNkMDk0OWExZDU1MmRkN2VlZmExOWRkYzRhNjhkYTc2MDZlZTEgbGVnYWN5LXRydW5rCis1OTI3MyBlN2JjYWM4NTYyNDUyYzY5YTQ4MjBjMmM1ZTM4OWU3M2YwYWUwY2U3IHB5M2sKKzU5Mjc0IDFlMjY2MDE1Y2Y1YmFlY2ZkNDMwNzgwNGIwYTRkZWM2OTZmNTI3N2UgbGVnYWN5LXRydW5rCis1OTI3NSBmZjE3NjZlYjJmY2VlZjMzZTU5YTY0NTM5NDcwOWJiZTBhMjE3YTlkIHB5M2sKKzU5Mjc2IDI3ZmRjYTNhYTdkNDY4ZDBjYWQxMDk4YzljMGIyOGYxZWYyZGViZTAgcHkzaworNTkyNzcgNDBmY2FhZGZiMTY2M2ZkOWRmYmFkYThmNWM1MzI1ZDBiYzllYjZmYSBweTNrCis1OTI3OCA0ZTFkNjQ5MTM2N2M3NThkMzA2ZDIyN2I2ZTdkZmUwNzc3NzYxZjNhIHB5M2sKKzU5Mjc5IGNlZGI3YWRjODdjNWY3YzNhMzdlYWJmMTBlMjc1Y2E5NGQzZTkxODUgbGVnYWN5LXRydW5rCis1OTI4MCAxNjlhODM2NDUzNjcxNzA5OWFkNDViNDFjMTU1YTY1NmMxNzUxNjY4IHB5M2sKKzU5MjgxIDU3ODFlMTkyOGJjYTY1NjMzYmQyZWM1YzNlZmFjMTM4NjkzZWUyMDkgbGVnYWN5LXRydW5rCis1OTI4MiA3ZjBlNDg1MzZhMjdiMzVjMDI5YWNjOTNmOWQ0N2MzZDdhOGU0NjQ4IHB5M2sKKzU5MjgzIGExYzNiZDM4Mjc3MWNlNDliYWU4ZmZmYzAwMDg1OTNmNDZjZDdkOGUgcHkzaworNTkyODQgOTFkMTE0ZDFiNTg1MTM0ODFhODM0Y2ZiMjdhMjlhMmU1MzIzOTAwYyBweTNrCis1OTI4NSA0ODZkYzRkZjM3ODk2ODcxMGI4MDY5ODk2Yjk0ZTM3OWZmZjIzYWM1IHB5M2sKKzU5Mjg2IDIwYWM0Nzc3YzBjYTEwM2U5MmY0ZTI5NzdlYWI4YzUyODUyYjdlZTMgcHkzaworNTkyODggODAzZWRmOWIxZGQ5MTQzMzI2ZWNjMmU2YWZhYzc1YmNmNjM4YjRkNiBsZWdhY3ktdHJ1bmsKKzU5MjkwIGVhZDBkNDdiMDEyYjU5MmI3YWJjZDExOWUwMjM2MTRmODNhMmNhZDMgbGVnYWN5LXRydW5rCis1OTI5MSA3ZWFiMTdiZThjYjQ5NzgwYjhkMDM2N2UwNDcxYmE1OTUzNjA3NDQzIGxlZ2FjeS10cnVuaworNTkyOTIgNjQ1ODIwODNjYjlhZmE0M2MwNzQ1MDkwMDEzYTdjN2NhYmE0MmIwZSBsZWdhY3ktdHJ1bmsKKzU5MjkzIGZlNmJlZGFmYjQ2YTY0NjBlYjAwY2VkMDhhYTJiODE0ZDllNzg2MjIgbGVnYWN5LXRydW5rCis1OTI5NCAzMGY1NDk3NzgyOGIzMzc1MGIzNWI2Y2M2NWQzODY5YTBlZDk1YTAzIGxlZ2FjeS10cnVuaworNTkyOTUgOTcyMTBkODYzZDEyMzRjNmU0YjYzZDc5MmQ3ZTljMDc4ODM1NDNiNyBsZWdhY3ktdHJ1bmsKKzU5Mjk2IDRkMTZlZTM5MzAxZjljMjFlOWQ5MmNkZjY5YjhhM2IyN2E2NDRkYjkgcHkzaworNTkyOTcgOTczMjY4NWVlZTE3MmFhNzY2NTllY2JjYTZmZjJlOTY1ZDE4NDdkZCBsZWdhY3ktdHJ1bmsKKzU5Mjk4IDhhY2Q4ZjVjNjA4MTc1MmEyYzhhNTYxOTkxZWExNmU4ZDlhNDJiMjAgcHkzaworNTkyOTkgN2U4OWY1Y2Y2YjIxNGY0YmJmNTc3MmQ4NjcyMGVhNzBkOGM5NjI4OSBsZWdhY3ktdHJ1bmsKKzU5MzAwIGFhNjAxN2EyZThmOTI2ZmQxMTk0MmQ0ZDcwMWMyNTM3ZDQ0Y2IzODkgbGVnYWN5LXRydW5rCis1OTMwMiBiZTdhODVjMzRhNGM0Zjg3Mzg2ZThjM2RlODA1MmUwMDM3YTM2OGUwIGxlZ2FjeS10cnVuaworNTkzMDQgYjYzNzM0OTMzNmZkOWQxMjI3YWYwNzM1MzBmOTUwNTM2Yzc3OGVhNCBweTNrCis1OTMwNSBlYWQ3YTA1M2Y1YjQzNGZiOWMzNmI5NjMyYzAzMWE0NTgzYmQzN2UwIHB5M2sKKzU5MzA2IDQ0ZDBjNzFkYzNjM2IzODlkZmVkY2YzMjg3N2ZlNTAxYjcwYzA3ODQgbGVnYWN5LXRydW5rCis1OTMwNyBhZWVmYjg5NzM4NGZiNDBkYTlmMGVkNmQzZjU2MWVmY2JiZjhkZTMwIGxlZ2FjeS10cnVuaworNTkzMTAgMGJmZWM2MDk4MzdlYzUwMWFiYzgxNjY1ODU3NjYwYmFiMTZiNDUwMSByZWxlYXNlMjUtbWFpbnQKKzU5MzExIGUwOGIxMmMzYjkxMzY0M2IwYWQ3OGM2NzI0NjBjNWVjZWJhNzhlYjkgcHkzaworNTkzMTIgZDc1MjEwYmJjYTk3YWY4NzllNjQ2MTEzODc0ZTFkNjY3NjQ3ZDMwYyBsZWdhY3ktdHJ1bmsKKzU5MzEzIDJhNDM1MDdjZDk1MzJlYjA0MWJmNTg0MTcxMGRjNGM4YjdhYjMxY2IgcHkzaworNTkzMTQgODI1Y2ZmZDZjMGNkYTc0ODY1MjQ4MTJkMDMyNmJkNzQ0N2MwNjQ5NyBweTNrCis1OTMxNSA4ZTc0YWYxOTdlNmMwMzI0ZDlhOTVhZjgzNDVkYmJkMGM3OWRmZmY1IHB5M2sKKzU5MzE2IDg0MmIzZDQ1YmZlNGMzY2Y3YjI2MjQyYmZjMjJlODI1Y2YzYjNhMjQgcHkzaworNTkzMTcgMDQ1MDVjOTg4YWJjZjdjM2JlZGEyNmM0ODU2NDdkOWJhNDRlN2JlZSBsZWdhY3ktdHJ1bmsKKzU5MzE4IGVjZTY1YzY5YjFkMzE0ZTBhMWI0NTY5NzFhNjk4NGUxODkzZDJiY2YgbGVnYWN5LXRydW5rCis1OTMxOSBjOGIzMzljZmVmMWZlNWI0NjJkYmNkOTdkMDk4YTNhYzg3NzQyMDI2IHB5M2sKKzU5MzIwIDMxYTNjZTM4YjU2YzM1ZDlhMDQ4YzJhMjhkYTZhNjYzZjJkMjNjNWIgbGVnYWN5LXRydW5rCis1OTMyMSBjOWZjNGIxZjliYzY5MmY1ZWQ5NzNjMDMwNDJhODE0NmI2M2VjMWFkIHB5M2sKKzU5MzIyIDBjZTYxMjIxYzYzZjg0ZjI3NWFkZjI1NDliOWUxNWY1ZWY1NDdmYTUgbGVnYWN5LXRydW5rCis1OTMyMyA2MGVmOWM0ZTQwMTI0ZGMzMzNjOWNhYjAyZmJiN2RhMjgyOGJjYjUyIHB5M2sKKzU5MzI0IDdlNTA0MmVlOTQyNDRmZGVlZGVhMmEzYWE3OGViMjJhOTdmODg2NjQgbGVnYWN5LXRydW5rCis1OTMyNSA1MzMyMGQ1NDRiYzdhZDkyYjlkMjhhYmI5YzQwZDZkMmM2ZDFhNTliIGxlZ2FjeS10cnVuaworNTkzMjYgZjBiMzMxOWI3MjY2YjhmMmNhYWUyNTFlZWUxYmFiM2NiNDE2NDk4MiBsZWdhY3ktdHJ1bmsKKzU5MzI3IDJmZmE0Zjc5OTRhM2U5Yzg0NWZhN2MxMjY0NDFkMDRlZjZmZWZmNmYgbGVnYWN5LXRydW5rCis1OTMyOSAxNmJhMDAxNjhjNmFlZGE0NmRlODE5NWZlMTA4YzhmNDQzNTFlMTg4IGxlZ2FjeS10cnVuaworNTkzMzAgMWU3MjZhZWFiNmE1MjlhY2NjNWI0OGFhYzM2MTJjNzY1Mjg2OTZkMiBweTNrCis1OTMzMSA4OGY4NjQ0NWJlNzczZTg1YTAxYmVlMDNkYTc0MzEzYjk2ODI5YjM4IHB5M2sKKzU5MzMyIDgyOTkxZmY3NWM1YTZlNGI3ZmYxZDk3ZjY1ODI4Njg0NzA0MjYzYzggbGVnYWN5LXRydW5rCis1OTMzMyAxYTJhNmRmMGZiZTAxNzBjODFiM2UzZjEzNzE5M2M2YjI0N2M4M2E5IHB5M2sKKzU5MzM0IGZiODRiZDk1MDBhNDBlYTZhZGI0OTYxMDhiNGE1OTMyM2Y0MTNmYTYgcHkzaworNTkzMzUgNTY1MDEyZDExMjNkZjJlMmE3Y2JiOWVjYjA2ZGRiMDNkOTFjMzJkZCBweTNrCis1OTMzNiA4MWUwYzBlMmE4YzEzODQ0YzM3OTcwZGNiOWI1YjE1OTFkZWNlYTdhIHB5M2sKKzU5MzM3IGFmODZiODljZTc4NDcwYTliOWZiZGYwNWI3MjZmM2YyYjI3MWViMGQgcHkzaworNTkzMzggOWQxNTI1MzA5MTBhNjUwZDNjYWQ0YWYzMDc0OTVhMDJmZGMwMWMwZiBweTNrCis1OTM0MCAxYTdkZmI2MWI0ZDhlMTZiN2U0NjUyMTU1ZmM5OWI5YzFlNGU1YTMxIHB5M2sKKzU5MzQxIGVmNTM5OWIzNTNjOTVkYTcwZTdlNzdiMmYyZjNiMzI4YTk1ZjQxNjAgcHkzaworNTkzNDIgNTY0OWY3Y2UzMDYyODU2MWNkZmE2NzhjYTMxNGFiYTUwNjdkMTIzNSBweTNrCis1OTM0MyAzMzQxNjFmNzRiOGU1ZmRmZWExMDI3MWZkMDFkM2UxMTU2YzQ4MTYxIGxlZ2FjeS10cnVuaworNTkzNDQgNjEyZDhkZWE3ZjZjZTMyMzkxMjM1ODRkODc1ZjUzMDU1N2FjMDdmYyBweTNrCis1OTM0NSBlNGMyMjUwNWYwMTFjZjA2NzBmN2VlMzQ4NjgwYzUxNTU0ZTYyM2ViIHB5M2sKKzU5MzQ2IDYzZTYxYzc3MGE5MzJjODQ4N2M1YTc4NThjMWRhYmE1MTA5MTI0NDUgcHkzaworNTkzNDcgYzI3ODc4MjgxYzhmNzgxYjY4YzExODA0NTRmZjYzNDk1OTUzYzEzMCBsZWdhY3ktdHJ1bmsKKzU5MzQ4IDVkOTkxMDgwZDg4ZTVmYTFiMTQ3NDA5N2Y0OGIxNDdiZGFiODI5ODQgbGVnYWN5LXRydW5rCis1OTM0OSAyNmE0Mzc4NjM5NWI0ZDJiMjJjZTQxYjM5NzFkNTgxOWVkOTRlMzA5IHB5M2sKKzU5MzUwIDE3YjQzOTAxYmI0MTVmYmEyOGFlZTkwOWNjZTY4ZDY3OTU3NzVjZDMgbGVnYWN5LXRydW5rCis1OTM1MSAyNzg1ZTIxNjBmYTZiMjcyNDIxOGNhNmZjY2M5N2NjODlkNGUxN2EwIHJlbGVhc2UyNS1tYWludAorNTkzNTIgMjUwYzRmZDRjYTU0MmQyNDhjNzgyMDkzNGVmMjFhMzNlMGExODE2ZSBsZWdhY3ktdHJ1bmsKKzU5MzUzIDg2NzE2MTM0ZWQ4NzZmM2I5ZjQxMjI4NDQxZDExZjY1OGQ0NmIxZDcgcHkzaworNTkzNTQgMTM0OWVhNDQxZTQxYmJjYTNmZjZiZWNjYmRmYmU2Y2E1ZjE0MGY1MCBsZWdhY3ktdHJ1bmsKKzU5MzU2IDQwZmM4NDA1MTdmYzAxMmJhMTQ3MWM1NTJmMGZjZDBmNjA5ZDMzMzUgbGVnYWN5LXRydW5rCis1OTM1NyBkYWQ5ZWQzMzliYzM0NThkNjBkOTVjNGM3ZTVlNTJlYmJlMjk2ZmNmIHB5M2sKKzU5MzU4IDkzNDA2OThhZTQyMTM5MDg2ZTIzN2JmYjgyODA2NDdmZDViOGFlYzQgbGVnYWN5LXRydW5rCis1OTM1OSA3OWFmYTRjNTUyMTFkZmFiNThhZGY0ZTAwNGVkNDllZDdkNGQ2MDg4IGxlZ2FjeS10cnVuaworNTkzNjAgNjIwMGE0NDdkYWExNjY3Nzk1MDE1MGY2N2MyODAwMjdlODFmMzM1MCBweTNrCis1OTM2NSAzMjBmN2VjNjNmMGJkZmQyN2UyZGRiOTFjMDY1YjI2ZDU1NDA5ODhkIHB5M2sKKzU5MzY2IDU5MGExNDQ3NjAxOWEzYzJiNjJjMDI2ZDAyZTZjOTkzY2NmZjk3NzMgbGVnYWN5LXRydW5rCis1OTM2NyBkMzNmOGNjNzA3Y2JmZTNiOTFkZTNkYzRlNDk4MDg5YTI3ZWUyODNkIGxlZ2FjeS10cnVuaworNTkzNjggODYwY2U5NzU1ZDE1YmQ3ODUxMDcxM2RiMzQyM2UxZjI4YWQ0NzIxYiBsZWdhY3ktdHJ1bmsKKzU5MzY5IDU1YzA1MDQyMzAzYjM5ZjA1NGM0NzIxM2Y1NjFiMGJmNTk3ZWM0YWEgbGVnYWN5LXRydW5rCis1OTM3MCBhMWJjNjU5NTRhOWNiYzFlMTdlY2E4NWI3MGJiZTcwNzc4ZTk4YWE3IGxlZ2FjeS10cnVuaworNTkzNzEgMDVkYTQ5ZWIxMmMxNGYwMzQ4YTVlYzNjMzMzYTkzMTQxODA2MmRjYyBweTNrCis1OTM3MiAxZjcyMmIwODU0MDI3YzVlYzJkNzBjMjQ4OWNjYjRjNDBiNDY5YTYxIHJlbGVhc2UyNS1tYWludAorNTkzNzQgNTM4NDc2YjZkN2UwNTJiNTBhODJmZGIxYTgyNGJmMDQxZTNlODZiNSBsZWdhY3ktdHJ1bmsKKzU5Mzc1IDE3YzE3ODA3YTYxMTc4YWQ2ODhhZTgxYjQxMTU3NmYyOTQ4NWY1YmMgbGVnYWN5LXRydW5rCis1OTM3NiBkNjRiZWI4ZmFkMDY2MTc3ZjkxZWU5MWU3ZmY3NmFjMGM5MzdiMjg3IHB5M2sKKzU5Mzc3IDg1ZTRiZmYzN2JiZGNiNmQ1NmYwMmVkZjg1MzIzYjA1YTE5MjZjNGEgbGVnYWN5LXRydW5rCis1OTM3OCA0NGMwOTBjNzQyMDI2MDIzY2EwZjBiNzMxNTI2YjNjNTc1YWQxZTdjIGxlZ2FjeS10cnVuaworNTkzNzkgMWQ5OGZjMjY1Zjk5MmU1NjZjY2JiZjAyZDNmYmZhMjhhNTM3NDgwZSBweTNrCis1OTM4MCA5YWQ0YWVkZjM0OWJlOTJhMjg0ZDMzN2ZkM2RkMjhiYTBhZTExMDE0IGxlZ2FjeS10cnVuaworNTkzODIgNmVmOGI1YjhlNWQ2ZmZlOGIwNGY2NzY4ZTViZjNkMDFmMGE2Mjg5MyBweTNrCis1OTM4MyBhZmQyOTk2ZjIwMjEyNDc0OTYyMDg4OWI2MjM5OGZmYjZmNDRlMTc2IGxlZ2FjeS10cnVuaworNTkzODYgYTUzZWY3Nzg1OTBlYmIzZDBkNjZlMDJmMjBmZjkxMWZmMjJmZjAzYSBsZWdhY3ktdHJ1bmsKKzU5Mzg3IGJjYzE3M2MzYWQ3MDkyYjNiNjcwZTIwYzkxYTNmYmMwOWJmMTFlYTEgbGVnYWN5LXRydW5rCis1OTM4OCBmMTFkZDRkMzE1ZGQwZGE2N2I3MGRiYTA0ZmE1YTExYmRhY2Y5YWJiIHB5M2sKKzU5Mzg5IDc0YmRkNTBmMDdlNWRjM2M0OGE2ZjQyMmM5OWU2ZmI5YmQyMTM5NTcgbGVnYWN5LXRydW5rCis1OTM5MCA3MWFkNWUyYmVkZGEyN2QwOWM1MTlhMTlkNjM3NjFmNjFiMGRjMDM0IHB5M2sKKzU5MzkyIDkzOWU4MTJjYzA5Y2U3YjAwOWI0M2FiOTIzMGNmMDcxMWJjNTk1MTcgcHkzaworNTkzOTMgNTBiMDNhZmEwYmJlNzkzMzdhZmQxMjhlNzAxMzIyMmE2YTdkYTk5ZSBweTNrCis1OTM5NCBjMjMyODM2Y2U1Yzk0MzY0NTQwMDUxOGYzYWZiZGQ5OGNlMzBkYzFlIHB5M2sKKzU5Mzk1IGNlMjgwYTA0ZjU1ZTBmZTg3YjVlOWNhMWVjNjBkNmExMWVhNjVkNWIgcHkzaworNTkzOTUgNjVlODIxNDBlMjgxYmYyNmYyZTIyZWRhMDVhN2Y5OTU2YzQyMGY4YiBweTNrCis1OTM5OSAyZmNlOTg5ZGEwMjEzY2FkNDg2NDUxM2MwMzRlZGY1MDcyODc3OGE3IGxlZ2FjeS10cnVuaworNTk0MDAgMzM1NmFkNjJjMmEzNjk5NzFlZWI3NWY3ZjJiMWU2ODU4ZTU0MjJjZSBsZWdhY3ktdHJ1bmsKKzU5NDAxIDU4MmQyYTgzODYzY2M0MzkwMzUwYzE2M2I5MTI4M2U0MmYyZjBmMDQgcHkzaworNTk0MDIgODA4ODQ2NDNhNmY5ZTdkMTM2Yzk2MjdkMTI3MTQ0N2UwNzgzY2I5ZSBsZWdhY3ktdHJ1bmsKKzU5NDAzIGM2ZmIzOTNiNmM4MTU4YjIwNTlmYzUwYjIxODY4OWZkMjQ0ZWM0ZTYgcHkzaworNTk0MDUgNzBjYzdmNzQwZDM0NzI2MGEwYmU2MjkwN2I0YjY2ODAxY2ZhNGRiYyBweTNrCis1OTQwNiAyMmUzZjViZDE0MDc4NjMzOGFmNDZlNGIyZTFjYmZhOGVmY2Y5YjY4IGxlZ2FjeS10cnVuaworNTk0MDcgNGRlNTk0NzQwYTg4Zjk5NmI3MDEwNjNjMjY5YTk3Y2E2ZjllNjFiMiBsZWdhY3ktdHJ1bmsKKzU5NDEwIGE3MWE3MWNhYjYwODI1YWMxNzI2ZTUzMGNjOWVlNjJjYWE1NDQ0NWYgbGVnYWN5LXRydW5rCis1OTQxMSAwYmIxMDhhM2MwYzk3Y2U4YjRjY2U1OTM3YTVhZTliZWFmYTczN2JiIGxlZ2FjeS10cnVuaworNTk0MTMgNzdjYjhmZjM0OTEyYWNkMDdkM2IxOWVmNTFhNGMzOTAxYzI4YjYxMSBsZWdhY3ktdHJ1bmsKKzU5NDE0IGE5ODc3YjdlZTg1ZGVjOGM4Y2Q0ZTk3YjliZTY3ZjY3ZWZiODI5ZDggbGVnYWN5LXRydW5rCis1OTQxNSA2MjRmNTExY2U5ZjI0OGQzOGFkMDhhMDI3M2M5ZDI0ZTBkNDRjODAzIGxlZ2FjeS10cnVuaworNTk0MTYgMDM5NDVhMWQ0ZmIzY2Y1OWY4MjEyZmZkN2I0NjE1MDI0NjI2N2QzOCBsZWdhY3ktdHJ1bmsKKzU5NDE3IDlhOTc2YTZlZTkzNjY5MWVmOWE0M2VmMGM0YWFmOTM4NWJhNzEyM2UgbGVnYWN5LXRydW5rCis1OTQxOCAxMThlNmQ2OGI0NGExMjg4YWI3NmU4NDk4MzE0MzExN2Q0MWY0NzI4IGxlZ2FjeS10cnVuaworNTk0MTkgZjJmNzM4YTQzN2Y4NzljNjQzZGQ0NjQ2NGQ1YjlhNGM3OGFjZTNhMCBsZWdhY3ktdHJ1bmsKKzU5NDIwIGFkOGI4MDQ2MDY0NGYxZjhmYTYzNTQ4NTdjMjM2NDNmOTA0NmM5MmEgbGVnYWN5LXRydW5rCis1OTQyMSBhYWQ2NWEyNDI0ZTM4ZDhhNzJhN2MwYTI2NTZkZjAzOWQxMDQwMzg4IHB5M2sKKzU5NDIyIDRlZTc0MzEwZWNmOTg4Nzc0YjM0YWJhNWRmYjgyYTU4ZDAyYjUwZTkgcHkzaworNTk0MjMgMTc0NDhlNWU5NjcxZGE0Yjk2MTk2MzA4ZjUxM2Y2MDIyZDg1OGQwMSBweTNrCis1OTQyNCA2OTlmY2RmNWJiZDc0YjAxMDg0NGZkNDFhMTdjYWE2ZWE5Y2ZjYjczIHB5M2sKKzU5NDI1IDZiNTE3YWMxMGU4ZWY4ZTIzN2FkMWI2YmNhZWJiMTYzYzQ1NDg3YjcgcHkzaworNTk0MjYgOTFjY2NlNzQxZDExNDFkOTZkM2EzZjMwM2MyNTQxMTY0NWRkNzA5YiBweTNrCis1OTQyNyA2ZDVmMDg2MDFmNGE5NWI0MjE1ZmM1YzlhZjQ3YmYxZGZhYzIxNDJhIGxlZ2FjeS10cnVuaworNTk0MjggNTBhNTBlNzUyMTQyM2EyNzE1MzgzOTM0NjUzMjkwYTVhODcwY2FmMCBweTNrCis1OTQyOSBhNWM0NzM5MTIxZTE0ZmQzZGExNzQ5YTViMGRlYzYyZTk0ZWZjOThiIHB5M2sKKzU5NDMwIDYxZGY1ZjUzNzk2OWU2YWFlY2I0ODJkMzY1NDIwMWFmOTQ2ZjI1ODkgcHkzaworNTk0MzEgZjY3ZWM0ZWI0NzhhODkwOGM5MDIzMWFhMjBmMDU4ZTZlOWMwZWRjYyBweTNrCis1OTQzMiA0NGEyNGI1OWIxNmQwMjEwNjgyZGRiMDJhYWZiYWRiMWM1ZWM1NjRjIHB5M2sKKzU5NDMzIGJlM2I2NjAxZjk4OWE2OGU1YTAxOWNkODM4NjU0NzBmYWQ5ZDFiZTQgcHkzaworNTk0MzQgMzY5YTRlMDZmZDMwMTE2MmI4N2ZiZjgwODkzMzUyYmRmYzA0ZjhlYiBweTNrCis1OTQzNSA2Y2U2ZTJmM2RjYjJkNjg3Zjk1YWQ0NTE2MmMxN2QzM2QxNjQwMzQyIGxlZ2FjeS10cnVuaworNTk0MzYgNWFjODc0ZDA5NTU2MzZkNTM5Y2RjZDE5OTYyYTBmYzhkYjJmODJkMiBsZWdhY3ktdHJ1bmsKKzU5NDM3IDY2ZGJlMTJkZGYzMWQ3NmM0OGE2MDNiZDkwZWYwMzQzMWZlYzI2MTYgbGVnYWN5LXRydW5rCis1OTQzOCA0MGJmZDZmMWNjMTY5MDMzMjJhMTZjMmI3MGQyZDA5MjBlZjk1MTE4IHB5M2sKKzU5NDQxIGQ3N2ZkMWI4YzBjNTQ3MzIwOTNmMTQ3MTIzYTBjNDhmZTNjMjVhMzIgcHkzaworNTk0NDIgNWFiZmQwN2U5N2Q0ODlmMjVjNWRlMjAyZWY2ZjM0ZWMwNDRiYjJiYyBsZWdhY3ktdHJ1bmsKKzU5NDQzIGFhYzMzZWUxYThmYzczMjc3ZGUwMTJmZGQxYjViNzMxYWIwNzY4ZDQgcHkzaworNTk0NDQgODg5YTY0MjFmMTM1YjU5ZWMyNDJkNTQ1MDcyYTBlOGY5YjcxMDhjYiBsZWdhY3ktdHJ1bmsKKzU5NDQ1IDljZjJiZjk0NjFjNDEwZDg1OGVhY2MxZDZhZWJhOWVjZjU0Mjg0M2IgbGVnYWN5LXRydW5rCis1OTQ0NiAzM2ZmNDBlNmUxMzc1ODk1NmUxZmU0NmZhM2VlZmM0ZGNjMmM2OGI1IHB5M2sKKzU5NDQ3IDU5ZTY0ZmEzYWQxZDljYTJlNzc1OTk5MzBiZTc1ZjNiYjI5MzFmNDIgbGVnYWN5LXRydW5rCis1OTQ0OCAyMDI4ZmViOTRiNTc1NTIwNDlhZTU4N2M0NzQ1NzdjN2UxYWNhMjBmIGxlZ2FjeS10cnVuaworNTk0NDkgNDQ0ZGEwOGY3OGE0ZGE3OWY2YzcxN2IxN2ViYTIwN2VmNjBkMTVhZSBweTNrCis1OTQ1MCA2MGE3NDBmNWE1N2EzYTE3ZTlkYTYyZDQ3NjZkZmJlYjgwMzRiMzRjIHB5M2sKKzU5NDUxIGEzODZlZjI4YjAwODcyODgzNmFhOTQzNGQ4ZTRkZWZiNzkyZDlmOTUgcHkzaworNTk0NTIgMTJjZjlmZmY5ZDBhZWQzNmQ2YTJjNmZlN2I0NDY3Zjg5ODdhZTViNSBweTNrCis1OTQ1MyA2YjM1ZGY0MGJjYWNhZmQ2ZDJkNWNhZWJkOTM2OTBmMDYwNjUyODFiIHB5M2sKKzU5NDU0IDc2Y2U1OTdjNzJlZTBlMTA1NWU1Yzc5MDdhOGNmNTg0MmRlNzE4OWEgcHkzaworNTk0NTUgNDc4OTVjYTZmMGNiYThmYjFhOGY3NTkwMjcxNWU4YTUwM2UxMDdmNSBsZWdhY3ktdHJ1bmsKKzU5NDU2IDFiMGNlOWZmYTk3MjZkNTM5NGM0OGI5YjU4ZDkxMzNiMzVmYzA1MzIgcHkzaworNTk0NTcgNjgyZDk3ODhhMDM4ZTcyZmJhYmIxMDAzNDY3M2MxYzZmZDAwNDIzMyBweTNrCis1OTQ1OCA2NmNlMzMxNGMxOTgyMGE3MWFiOTRhODZiMjkwZDk4ZjI3MjdlYzhkIHB5M2sKKzU5NDU5IDI0NzQ5YTM4MDQwOTM0MDFkZTgwMzE0MDdmNzgwY2U2NmFiMGRjY2QgbGVnYWN5LXRydW5rCis1OTQ2MCBlYjY1ZTEwNWU0YjhjZGFkYTIwMGE5NTJiZGZhOTRhNDgyNThiNTdiIGxlZ2FjeS10cnVuaworNTk0NjEgYTRhYWI3MmMyY2MwYmM0OTQzMTlkMjExMDVlNTdhNWRlODQ3OGVmMyByZWxlYXNlMjUtbWFpbnQKKzU5NDYyIDJjNmZlMmRjYzg4ZWExZDgxYmM1YzIxODk2NDM1ZDZmOWM1MTJlM2YgcHkzaworNTk0NjMgZTY1ZTljNjQ5Y2ZkYWZiMzhjMzRhODg0M2ExOWE4MzI5ZjJiYzRhZSBsZWdhY3ktdHJ1bmsKKzU5NDY0IGY5MDk4NzI5MTdiOTVkOWIzY2RkOWZmYWU4NTQ1MDk1M2NiYjU3NTIgbGVnYWN5LXRydW5rCis1OTQ2NSA3YWU2MDRiMzUzM2I1MzYzNTRkYTMxYTNjM2UzN2Y4YjUwOTY3YjdlIHB5M2sKKzU5NDY2IGI1MjM5Y2NmOTRiNWJhNzM5OGE3YzcxN2M0NjE0ODNiZDgwYzAyZDAgcHkzaworNTk0NjcgNzI3YWYxNjFjYTQ2NGFiZDI3MTMwNDRhY2RmNWY1MTM0YTY4MDNhMCBsZWdhY3ktdHJ1bmsKKzU5NDY4IDJlMTljM2U1MTFiZjU5MzlmNjNmNDZlYjY0M2RlMGU3MTI3YjBkMTYgbGVnYWN5LXRydW5rCis1OTQ2OSAzZTA4NjdhMDc3NjU3ZTQxNDg3NTUwNDRlMWJkODM2MjQ4ZDExYTIxIHB5M2sKKzU5NDcwIGViMjI2MGRjYjM2NWZkZTY1MTFmNDFhZmM0ZDgyNGE0ZjI5Mjg5ZWIgcHkzaworNTk0NzEgYTZkMTA1OWYyMmUyY2QxNDA0YmEwYTAyY2YyMjhkNTI0N2I0NGQ5YSBsZWdhY3ktdHJ1bmsKKzU5NDcyIDRlYmJhOWIyNjg4ZjQwNzJjMTdmNTllYjRhOTRkNDAzMGJiNTU4ZTMgcHkzaworNTk0NzMgNjZkNDc5NmVlOTJjYmZjNDY4ZGY4ZGY3NmMzZjIxYzczZDg5ZTFmOCBweTNrCis1OTQ3NCA5YTA5ZDQ0MmJjZTI3YjJkNzM3NmZkMzliYjExYmIwYzhlMWY3OTc0IHB5M2sKKzU5NDc1IDk5Mjk3ODJmNWNiNDhkMDdiNDQ1MTA2YzIzNWRiMjI2MjgxYmNlODEgbGVnYWN5LXRydW5rCis1OTQ3NiAwMTcwNzE0ZWIwNDQyMTU4YzMxMGEyNGZkYjQ4N2ZkYWExMTcxZTI5IHB5M2sKKzU5NDc3IGUxNzZiNGFlYTljNTBmNWExOWQyYWM1YjQzZDQ4NmI2Y2MxNGZlNWUgcHkzaworNTk0NzggYzJlNzJmZWI1M2IzNmViYzE1MGE5NjgxYjQxOGU5NTU3MDg5MmIzMCBsZWdhY3ktdHJ1bmsKKzU5NDc5IDU0MTA1MmIwNDRmMDllMzEwOTZkZGQ5N2U2MjljYmViOGI3YzQwNWYgcHkzaworNTk0ODAgN2E4YzhjNTY4NWZjY2IxNGZmY2I2ZjZmN2NhNjBiODk3ZDkzOWY2YSBsZWdhY3ktdHJ1bmsKKzU5NDgxIDZhZTk0YTJiYTVkZmFmYTAxYTBlNDM5ZDE3NTk1MWRhOWFiN2Q2NDAgcmVsZWFzZTI1LW1haW50Cis1OTQ4MiAyMjZhMDYyYWI0M2VmNzc3OTc3OTRiYWM4NWQxZTE4NWY1NjJiZTVmIGxlZ2FjeS10cnVuaworNTk0ODMgZDhlMDY1NDNjZGQ4MGUzNDVlZGUxNmM2ZTJhMjdmMDQ5ZTdkNWFjNSByZWxlYXNlMjUtbWFpbnQKKzU5NDg0IDU4OTI2MmQ4MWUyOThmZWVjNzA4NjMyZmRjOGI3ODljMTY1YjYyN2YgbGVnYWN5LXRydW5rCis1OTQ4NSBmMDRjMDM2NWM5YWFmYmIzOWU4YjYxZGFjNmNkNjJlYTUxNDAxOGRlIGxlZ2FjeS10cnVuaworNTk0ODYgMzA5NmIwMTI3MzNlMTlhNGI5YmNhMzczMDUwMTk4MjA2ZjAwZjlhNiBsZWdhY3ktdHJ1bmsKKzU5NDg3IDY2ZWQ2ZTAzZWJiZGE5ZWZhMzIxMjlhZDc3NjIzOTFkMTJmZGVkZmYgbGVnYWN5LXRydW5rCis1OTQ4OCA3MTYyMzg3ODA1N2IyZTRmZGJkYmEyYWI0ZjU4ODAxMDg3ODBjOTg2IHB5M2sKKzU5NDg5IDQ0YzQxOGIyYmY3ZjY2MDllZjcyMTBiMDMzMmRjODA0ZmYwZjU1YzQgbGVnYWN5LXRydW5rCis1OTQ5MCA3YTYyYzZkOTEwN2RmOTgyZGYxZjc1YmRhMzU1NWVjMzIzNDNkZTkxIGxlZ2FjeS10cnVuaworNTk0OTEgMjk0YjFhNzlmMjAxOWFiYzAyZDY4YjE5NWIyZTliNjkwZmY5YmIzOCBsZWdhY3ktdHJ1bmsKKzU5NDkyIDYzNWEyMzI4MDExMjYzZDI5NTdjYWFmZTYzZDRiOWM1NjJkMjIyYWYgbGVnYWN5LXRydW5rCis1OTQ5MyBhMzI3ZjNlMjYxNTYxMWJjNTQ4MzY4M2EwZTA5YjNhNDEwMmZiZGU2IGxlZ2FjeS10cnVuaworNTk0OTQgM2M4YjcwMmU1ZjIwNzBlZWNmMTA0NzFmNGNmNTA1YTc5NzIxNjM1ZSByZWxlYXNlMjUtbWFpbnQKKzU5NDk5IDk2MWU4OWNjNzkxMWMwYTZjMDM5NzA4YzMxNTU1NjczMTQwMTRlODEgcHkzaworNTk1MDAgOTA1YTk2OTk3YjdjODBlYjJkYTMzMzdiYWM5NWI4NzhkY2Q5YmM3YSBsZWdhY3ktdHJ1bmsKKzU5NTAxIGRjYTk1OTU2NzMwZmMzZjYxOTcwYTZlZmEzYzdiOWQwNmIxZWFkNTggbGVnYWN5LXRydW5rCis1OTUwMiA3ZGE5NDc1N2VjNWJkM2Y3OGY4NmZiNjlmY2QxZTE4ZThmMTk1YzA4IHB5M2sKKzU5NTAzIDIwZWQxZDQxNTQwOWVhYzBhOTFjZTcwZTcwZDJiNDg2OTIwY2E1OGIgbGVnYWN5LXRydW5rCis1OTUwNCAxYmI5YjA3YTAxZGRhMWViOTNjZTQ4NDYyOGM5M2UxZjZhZWQ3YmRhIGxlZ2FjeS10cnVuaworNTk1MDUgNDVjNzhlNTBjYmQ1ZTBlNWU3ZGFkZWU3NzgyMmI0YmJhNjZkM2RjZCBsZWdhY3ktdHJ1bmsKKzU5NTA2IDE5Zjg5NGFlODY0YWYxZGEyYTNjMjRlMzRiODdjMTEyNjI1ZjljNzUgcHkzaworNTk1MDcgMTRjNWQyNzVkZGYxNDAzYTZlMmRlYzcwNmU1YzVjM2VlNmVmZTNmOCBsZWdhY3ktdHJ1bmsKKzU5NTEwIDExNTcwNjg0NjJiNTM4ZWM4YmEwNjRiMzk3ZTI3NzI0M2ZjNWYwY2YgbGVnYWN5LXRydW5rCis1OTUxMSAwNmQxMjJiNGJmZmQ3YWVkOGJhZTQ2ZWNlNTc4YTU4Yjc0OWQ0MDM3IGxlZ2FjeS10cnVuaworNTk1MTMgMmNlNTBhMjYwZjUzZDQyM2I5NjMxYmU0ZjE2YzRiMjg2MGI5MGM1MiBsZWdhY3ktdHJ1bmsKKzU5NTE3IGU3MGFjYmYyNmNkYTg4MGUzMGM4ZmEyMTg4ZDZiNjZiMGNiYzg5M2MgcHkzaworNTk1MTggMzAzNzI3YzU4YjUxZTAxNGE2MzY5ZGY3MTVlYjAxMjYzZTRjMjQxOCBweTNrCis1OTUxOSAwNDNjYTliNjZmNzk3MjIwMDkzNTlkYzc5Y2U5YzI1ZTQ2ODlmNDExIGxlZ2FjeS10cnVuaworNTk1MjAgNjE4Y2UyODFhNTVmODQ1MjFmNmIyYTRkOTVkOWU5ZTljM2YyYjg2NCBsZWdhY3ktdHJ1bmsKKzU5NTIxIDRjMGViNTg3NDgyZjYwY2EyMTFkY2Q4MmM2ZTI0MDkwNDRiZGMyODcgcmVsZWFzZTI1LW1haW50Cis1OTUyMiBhYWQ5MGViYmZiNTA0YmQ1ODM2M2U3NmI4N2I5NTY4ODhhZWIxOTBkIGxlZ2FjeS10cnVuaworNTk1MjMgYTY0OWFhNTJiMDc5OTA1MDAxM2FiMjA0MWZjNmIzNDBkOTk2Yzk5YyBweTNrCis1OTUyNCBlZTExNzQ2MjEyYjJiZDI1ZTVmYjg4NWIxNmY2MDZkN2IxYWQwMGRkIGxlZ2FjeS10cnVuaworNTk1MjUgNWE1MGE1YjU3MGIwMmU2ZjM2MmJiNmUyMzlkMDY0ZmQ3ZjA4MWQ0MyBsZWdhY3ktdHJ1bmsKKzU5NTI3IDliNDBhZDA1N2Q1OWUyMDdjYWY1MTdiMjAyOWMxMDA4NzI5NWNkZmMgbGVnYWN5LXRydW5rCis1OTUyOCAyMTFhYmNmYjQ5MjhiMmMxNzFkNWUyOGJjOTAxOTVlYTI2MjczMTEzIGxlZ2FjeS10cnVuaworNTk1MjkgYTQ2Mzc0MmZhNDExYjg5OGIyMmU4ZDlkNGM3MDA4Mzk4Yzk0ZWFiOCBsZWdhY3ktdHJ1bmsKKzU5NTMwIDc3OTFhNWVhMTVjMzg0ZWUyZTUzNzFmNjYyYWYyNTQwNmYzOWUyMmYgbGVnYWN5LXRydW5rCis1OTUzMiBlOTdmMTA1ZDFjODM0MGZjYWJhZmIyYjExYWVjZWQzNWY1ZGFmMjQ4IGxlZ2FjeS10cnVuaworNTk1MzMgYTE0NDg5ZjZkYjZmOTJiODc2M2Y3OTAxNjdiN2MwYzM4MjE3YWM0YSBsZWdhY3ktdHJ1bmsKKzU5NTM2IGEyZDBjNmE4ODkwOTgwMTA5NTY0MTJhMTYyNmQ1YjY4YzFkMTc1MWIgbGVnYWN5LXRydW5rCis1OTUzNyAwYTU0NDUyOGRjOWY1ZDc3NzY1ZjZjYzEzNDA2N2MwMjc4OWYwZGU4IGxlZ2FjeS10cnVuaworNTk1MzkgMDVjNTAxYTk1MzA4NzUxMWYxNWJhYTBlMWQ5Y2VmN2M4Y2VjMTQ1MiBsZWdhY3ktdHJ1bmsKKzU5NTQwIDA5Zjc0MzE2ZDVmYjU1ODBhOWY2Yjc4MGE1Y2QyN2NjZTFkMDgwNjMgbGVnYWN5LXRydW5rCis1OTU0MyA3NWM2YmZkM2IxZjMyZWMyMTdjYTczMWU1YzU1NGY5ZmYzMTBmYWJhIHB5M2sKKzU5NTQ0IDRhNmMwNmE3N2RlYjE2YTA3OGM0MzYyZWZjNGVkNjc5OTRiMmViZjkgbGVnYWN5LXRydW5rCis1OTU0NSBjMGYyY2Y0Mzg5YzUwMjg4ODAxYjdkOGMxNWYyY2ViNGYyMzYyMDViIGxlZ2FjeS10cnVuaworNTk1NDYgMTFiNmY1YjY4YWQxYTcyOWUwN2M5YTA4MzlkYjc3OWY2NmRkZDAzNCBsZWdhY3ktdHJ1bmsKKzU5NTQ3IDU2ZjM0MmM4NGU4NzA3NWZmNmM5NmE2Nzc1NmE5ZWY4N2MzMjFkNjkgbGVnYWN5LXRydW5rCis1OTU0OCAwN2FhMTkxNzBhNjczZGE2YjNlOGM0YzY2YmZkODY4YjJmOTBjMGU0IGxlZ2FjeS10cnVuaworNTk1NDkgYjViMzA4MGIzNjBmZGVhZTQzYWVhODA3ZGM5MGE2M2M1YjI3ZDI1NCBsZWdhY3ktdHJ1bmsKKzU5NTUwIGVhYjAwMmI4ZTE3ZThlMmU4NDg3NjkxZDdiZjgwOTE0MDczNmUwYmQgcmVsZWFzZTI1LW1haW50Cis1OTU1MSBiNTljMzI4YmZhNjIzZTBmOTY2NGE5NjI3Yjk1MDY1YTkyYWYzMTczIGxlZ2FjeS10cnVuaworNTk1NTIgYTk5MTI4ZjZjOTdkZjM5MzBmYzM4OTk2YjA3YTI5NzA5ZDBkM2E1YiByZWxlYXNlMjUtbWFpbnQKKzU5NTUzIDdhYzExN2IzYmUzN2ViN2FlMzI5NzA3ODdlNjMxYjIyYWJhMDQ5OTQgbGVnYWN5LXRydW5rCis1OTU1NCAxNWZiZTdjNzkyODQ5NzM5MTc3MTE2MzE1MGZkMGU4OWRiNjMxOTZiIGxlZ2FjeS10cnVuaworNTk1NTUgOTU4NTgxMDk4MTUxYWI3NjFiNjFmZmM5OTE3ZTYyNjEwOTUwODI4MyByZWxlYXNlMjUtbWFpbnQKKzU5NTU2IGRjODg0YjYwNTBkNDVmYjUzMDZiNTE3YTRjMzkxNTNkMDgwOTgwNzAgcmVsZWFzZTI1LW1haW50Cis1OTU1NyBmOGQwZmFmZmNlODg3NmY1NTRiZjZlMTg1Y2QyOWU3MDNiZGE2MWZkIGxlZ2FjeS10cnVuaworNTk1NTggMWQ2OWFhYmY2ZjdmMjI3NDZiNGM3MjAzYWY1YzliMDE5ZDIyZTMyZSBsZWdhY3ktdHJ1bmsKKzU5NTU5IGQ1MWIzOWMyMTYwYTNiODU1ZjRmMjY1YzQyMGM0NjQwZDdmNTc0ZGEgbGVnYWN5LXRydW5rCis1OTU2MCBhMjhhYzliNjdiZWRiNTZhYTFlMjQ3MzgxOGNmYzEyOThmZTFlMWQ4IGxlZ2FjeS10cnVuaworNTk1NjEgNjE2ZmVjMGViNTE0YjY1MTA2MGM0MDlhMzkyOGQ0YTliMDVmOTZiMiBsZWdhY3ktdHJ1bmsKKzU5NTYyIGUyZWZmZWM5ZDVhZDdjZjA5NmZkYzQwYzZiZDM1YWE1Y2IxZWZlM2YgbGVnYWN5LXRydW5rCis1OTU2MyA0ZGMwMTQwMmQ3OGFmZTJjOWI0YTRiZDgwMDRlYjA4ZTI2NDczMzVkIHB5M2sKKzU5NTY0IDI2Mzg0YjgxODBjN2E1NWNkNmEyZWQ0NDEwN2NmNGUzMzkwMjVlYzYgbGVnYWN5LXRydW5rCis1OTU2NSA4NmEyNjc5ZGNhNDY0YTI4NGZkMDJiODE2NDZmMjY5MjA0OWEyY2U4IHB5M2sKKzU5NTY4IGY3YmM3OTExMmJjZmE4OWJiZWFiMDM1ZDhiY2VhNDNlODJmZTg5ZDkgbGVnYWN5LXRydW5rCis1OTU3MiA2MzE0YjlmOGE3ZTAzZjBjNTdlOTk1NDM4YTQ5ZDg5MWNmYWQwZDMyIHJlbGVhc2UyNS1tYWludAorNTk1NzMgYjEzNDdjNjhkNDU2ODVhZTJjODNmNTJjMjA5Mjg5NDY2ODFlZjM5NCBsZWdhY3ktdHJ1bmsKKzU5NTc0IGI4OWIwMzM0MzcyYmE4M2FiZjRkMmZjMjQ0YWMxNmJlM2RmOTcyODAgbGVnYWN5LXRydW5rCis1OTU3NSA1MWMxNzVjODZmMzZiYjNiZWQxMzNhMWIwYTE0OGYzZTI4MTllNWNlIGxlZ2FjeS10cnVuaworNTk1NzYgMTc0ZTBiY2IyYzNjMTMyYTI2YzlmMDRkM2NkNjBmZDlmN2RmMWNmYSBsZWdhY3ktdHJ1bmsKKzU5NTc3IDBhZDEyYzc5YWYxODVkZjgzOGYyMTZmNzc2ZTc0NDNlMWMyMzkxNzIgbGVnYWN5LXRydW5rCis1OTU3OCBiYjcxNmViY2IwODJhMWU3OTQ0MmU2MjU4MTNmYTE2M2JjNDY4ZDFhIGxlZ2FjeS10cnVuaworNTk1NzkgOGQ0ZDMzNTM2OTk1MGMxMjAyYjMzZmU5YTU4ZDU2ZGUxNWRjYTYyMiBweTNrCis1OTU4MCBiYWQ1NWE1ODU5NTliMTFmOTM0MWM5NmY2MTRlYWIxYTc1NTQ1ZWMyIHB5M2sKKzU5NTgxIDU1ZGFkYzhiNjhmYzE5NDJmY2UzNmJkNzNlNDg1MmZiNmQ4OWNhMDggcHkzaworNTk1ODIgMjEwYzUwN2RhYzk5NjE4NDgyMTc4MWNiMTNhYjhmZWViOWM5MzJmMyBsZWdhY3ktdHJ1bmsKKzU5NTgzIDZlYTBlMTVjZTU3MzZkZjc2ZGE1MWIyNWFlY2Q0M2ZmZjdjMzFkNjQgcHkzaworNTk1ODQgOGRlYWQ2ZjgxYmFlMDFiZTRjZDM0YmM5YjVjOTRjNWJkM2M4ZjA0YiBsZWdhY3ktdHJ1bmsKKzU5NTg1IDgzY2VkNDE3N2VhY2M0OTNlYjVkNTZlNGUwZDBjMjQ3MWRkODA0MGMgcHkzaworNTk1ODYgZWFlZmI5M2I1ZWQ0NDM4NDA2ZmM3ZjgwYTEwYWMwMzUyY2JmNWFlZiBsZWdhY3ktdHJ1bmsKKzU5NTg3IDMyZGQ5Yjc3NzNjM2MyMWQxZjUxNmVhZWE4ZmY5ODJkYzYwNDFiNjIgcHkzaworNTk1ODggNDQ1NDEwNzQ0ZmQ2MzczNTk3MTNkMGQyMzE3NmQ4YWI0OTViYmIzNiBweTNrCis1OTU4OSBiY2U3MGE0NzdmMWRhM2RhMzQ5M2JlYjRjZGNkNWZjN2UzOWNlMGZmIHB5M2sKKzU5NTkwIDJiMDNjYWNjMWI2YTRlMWFiNTgxMjliZWJmMGM0NTUyYzkxOGJhMjQgcHkzaworNTk1OTEgOTU3YmFhMzdjZTBkNGY0YjE1ZjI3YmQwYjQzMDQxZmZlZTVmMDhkNiBsZWdhY3ktdHJ1bmsKKzU5NTkzIGM4ZDMxMjc5ZmNkY2I2YTcxMmE5YTM1NjA2ZjZmMmM1YmYzMWM1ZjEgYWxleC1weTNrCis1OTU5NSAyNzUwZDUzMWZkYzAyM2RiZGI0MDJkYjYyZmIxOWNjODNmNGRhNzMzIHB5M2sKKzU5NTk2IDg2MzY5MmRjNDExZWYwMWYwYzY0MjAyYjViMTVhNDAzOGFkNmM4MzggbGVnYWN5LXRydW5rCis1OTU5NyA1ZjU5MTIzZTc4MWZmNjRjNTgxYTNmZWVhZWRjYWE4Y2VjODc3Yzk2IHJlbGVhc2UyNS1tYWludAorNTk1OTggMWRiNjI0M2U5M2YyOWJkMmMwMTU5ODllY2Q5ZmYxMmEzMzU4MDg0YyBsZWdhY3ktdHJ1bmsKKzU5NTk5IGRiNjc1MjExYzJmNzUzMTE2MmZkNzg1Y2UyZjljMDlmODY1ZDE5YWYgbGVnYWN5LXRydW5rCis1OTYwMCBiOWJlMTE3YjI4MmMzN2JiMzVjYTkyMDIyNWI5NWNhODNhNjk0NTgxIGxlZ2FjeS10cnVuaworNTk2MDIgZWRiNmFhNjI3NTNiYzc5MDdmZWYzY2U0ZjMzNjYxMjk1OTkxM2JlMiBweTNrCis1OTYwMyAwODQ2OGEyNjNhOTU4MThmOWIwYmY3YTk2NmZmMzJkYjA1ZmM2N2UzIHB5M2sKKzU5NjA0IGViNjk1YzU5MWU3MDRiYTQ5NzMxYmE5NzE2N2I1NmRlZDZmMzZjZWIgbGVnYWN5LXRydW5rCis1OTYwNSA3MWJiNzBmNjA5N2I4MjAwNGNkMTY4N2QwZDVkNDU1YTc2NTIzMzg3IHB5M2sKKzU5NjA2IDM2MjUyMzRiZjNkMmVkMzY4MDFjYTBjNjRlZDQ4NTRmMDUzNDI0YWUgbGVnYWN5LXRydW5rCis1OTYwNyBkYTJiMTA1YjBjNTIzZjRmYTM5MmFhY2JjMzgzZTEwM2E5MGE2NWViIHB5M2sKKzU5NjA5IDU2NzAxMDRhY2QzOTU0OTUxY2FlMmYzMmE5OWQxOTk4OTI2YTQxYTIgcHkzaworNTk2MTAgN2QyZGExY2Q4MGExMWJiNmY1NDhjNjRmMjZhZjZlNDUwZDAzMDQzYSByZWxlYXNlMjUtbWFpbnQKKzU5NjExIGYyOTIyNzM1ZmI3YWIyOWUzMDJiNDk5M2E5YzY5Yjg4YTUyNDI0MDYgbGVnYWN5LXRydW5rCis1OTYxMiBhZTBmMmVhMDQwOWY0NDAwZGQwNTMxMTAzOGEyMDk4NGE3Yzk0Yjc4IGxlZ2FjeS10cnVuaworNTk2MTMgMWZjZjFlNmQ4YmIxZGVkOTVhYmY1N2NjZjM5ZTBiYjg1ZDllYWJiNyBsZWdhY3ktdHJ1bmsKKzU5NjE0IDg2MzU4YjQzYzhiYjI1YzFiOTJhMWZhMWRmODVmYjk2MzkyMmM4YjcgcHkzaworNTk2MjAgOTVjZjNkNTNjYWUwMDFiZTZiY2Q4NDMzNjUyNDNlNTBlNDBkZjhmNiBsZWdhY3ktdHJ1bmsKKzU5NjIxIDgzYTEzOGZkZmRmYTk4MThhNTRiYmUyMjI4NTY5NmYwMzE2ZmVmYzcgbGVnYWN5LXRydW5rCis1OTYyMiA3NDJkNjU5NjFiMWZhNmNjNGIzOTkyYTcxZGQzOTU2ZGY3ZmZkOWMwIGxlZ2FjeS10cnVuaworNTk2MjMgMzcxNWYwMzc0ZjZhZTdkYzE4OWUyYTFhNTkzYjBlMzQ5M2E4OGNhOCBsZWdhY3ktdHJ1bmsKKzU5NjI0IGE2MzE5YWI0OWUwYTNmYmU0MjhmN2FlZDNjZmE3OWFkMmQ5NDRlY2IgbGVnYWN5LXRydW5rCis1OTYyNSA2NTU2ZjNmMjJjMTlmMWJiZWUzOTViNTUwOTEwYmQ4NDgzN2ZjMDFhIHB5M2sKKzU5NjI2IGYwNWFjMTQ1MTFmZjYyZjE1OTA1MmE3MTA3OWQ2YmU2NzBmMmUyZjEgcHkzaworNTk2MjcgMWViNDk4MjM3YmE1YjU4ZDFhYmJhMTMwNzBmMjI0NjY0Zjk3MzFmYSBsZWdhY3ktdHJ1bmsKKzU5NjI4IDQ0NmU4YjYwN2JkM2EwMGYzY2Y5NmFjMzE3NzJiYTJhOTE1YmQ4ODcgcHkzaworNTk2MjkgNDFiZmJmYzM2Y2Y3MjYzYTEzOTMwMTMzNDY3NzcwMTc0MDEyZjBhYSBweTNrCis1OTYzMCA4MWIzYWM1OTA4OWMxOGE0MWJkOTA1ZDdhYjFlNDY4ODFmYThiY2FmIHB5M2sKKzU5NjMxIGFjYjZhNGIyYzA3ZjMxZWI2ZTAwODgyNTllOTc5Mjg5OWE2Mzg3ODkgbGVnYWN5LXRydW5rCis1OTYzMiA0MjUxODUzZmE5YjkzNDhiMmJlZjk3MmVlYmJjZjQ2YmM0MTlhMzViIGxlZ2FjeS10cnVuaworNTk2MzMgM2VlNWRlMTc2ZTc4NTJlZDZiZTg3NDJiMDYxNTRmYmE5NTBhNzI4OSBsZWdhY3ktdHJ1bmsKKzU5NjM0IDdhODZiMjBjNWI0YjFkM2M0MzMxNTE3YTE4OTU5ZThlMDgxNTA1ZWIgbGVnYWN5LXRydW5rCis1OTYzNSBlYjEyMDc1MTNlZTdkZWU5YTU3YzU3ZTVmMDFlYzFiYmQxMjY5NDI3IGxlZ2FjeS10cnVuaworNTk2MzYgZGRhMjllNzEyODE1MDZmMWQyMjE4YTZlZWYyNDc3Y2UyYjA0ZjFhMCBweTNrCis1OTYzNyA0NmQ1NDAxMWUxZTU2M2M0YzM4NzhlYzgzYzFjZDFiZTA3OTdlMjU1IGxlZ2FjeS10cnVuaworNTk2MzggZTM2NmM0NDk0OGEzMTQxYzhjYjM1NmY0NGNlODU3ZDBiZTliZTY4MCBsZWdhY3ktdHJ1bmsKKzU5NjM5IDYwN2U2OGNiMDk0OGQ3MDdhYmM4ZjkzNmE3YjdiNzQwM2VjNmYyMjYgbGVnYWN5LXRydW5rCis1OTY0MCA5MzgwZDVkYTc3MTY4ZTBlOTdhZjI2MjBjNzIyODQ3ZjkxZDliOTIwIGxlZ2FjeS10cnVuaworNTk2NDEgOTAxZjcwZGIzYjM0MDQwMDhlODI0MDhhZDAwNTM5MjI1ZGFjNWI4NyBsZWdhY3ktdHJ1bmsKKzU5NjQyIGVlZTFiNzZhOTRlMDExOGEwNmJjY2U2NmUwYjMzMzcyM2MwMzRkZWIgcHkzaworNTk2NDYgNjUyZjdhYjU5MThiMmY3ZDljYWRhZjBmNGMyY2U0NGRmYjEzN2RkOSBweTNrCis1OTY0NyAzZmY3NzhhMzU0MTA0OGJmZTg4MDkwMTY4MTczMjc3ZDA3ZDFjZmMyIHB5M2stZ3JhbmRyZW5hbWluZworNTk2NDggOWIyZTI1NTFhZmJlMzc4NDNhZDlkN2U2MTc1YTJmNGI2ZGYwODNjNSBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjQ5IDk0YTI5MzczNDkzYmQxMDA0ZmNlZmY1MGM0MGFlOTdiMTBhZjVmZTIgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY1MCBmNjdiMmU4M2IzNDc1ZGRkZjlhYmVhMmIxNDZhODZkNThlYmY5NWY0IHB5M2stZ3JhbmRyZW5hbWluZworNTk2NTEgZGIwYzhiNDFkZGIwZDVlNGMyOWQ5N2IwMGY4ZTY0ZTBkOTFjYzQwOSBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjUyIGI5ODhlNGQzNWVmM2NkMGQ2NWNhYWRkZTVmMDRlYzJlM2Y1M2Q5YmQgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY1MyBhMWZmMmZhZWRjNmJlOGZiZWQ2NmNhNzk3OGFlNjVkMWQ0YTZiYjk5IGxlZ2FjeS10cnVuaworNTk2NTQgZDlhNGE1ZjAxMjFlMThiMWRlOGUzZmM2NDQxMDE4MzkyNGFiYjEyNyBsZWdhY3ktdHJ1bmsKKzU5NjU1IDZjMGM1M2I5ZjM3YjRmOTk0NzFlNjI5Y2M0OTM2Yjc5MjFlNzk0YTMgbGVnYWN5LXRydW5rCis1OTY1NiAxYTU0OGE2NTRjMWEzZTY5ZTBlNTA1NTQ0MTYwYWY3MWRlNzU4ZjI1IGxlZ2FjeS10cnVuaworNTk2NTcgOWFiMzFmYTM2ZmI1MmZjMTMyYzU3YjlmNDYzMDcwYWI0MjM5MTYwMiBsZWdhY3ktdHJ1bmsKKzU5NjU4IGY2NDVlMDdkODcwYWY1OTZhZjFjZTBlZjcxY2JjYjc3MGFkMDk0MjggbGVnYWN5LXRydW5rCis1OTY1OSBmMGU5YzNkMTY3NjZkMjQ2YWY4NTAwMDBjZmNmNTRkNWIwNWU4YjBjIHB5M2sKKzU5NjYwIGRhMzA4NzdmOTc3OTk5NDIwZGQ4ZjM4Y2UzNDExMmZkYzc4OTE5M2QgcHkzaworNTk2NjEgMDk5YTE3ZTJkMmJkNDlmMzRiYWZhZjE2NDA2Y2RiOWI5YWNkOGQzNSBsZWdhY3ktdHJ1bmsKKzU5NjYyIDY2YmVhOTEzMjRjZDkzMzcwZmQwYzY0YWRjNTFlOTQyZDViOGE5NWMgbGVnYWN5LXRydW5rCis1OTY2MyAxZTZmMjdiNjk3M2NjNWEwNjcyZTNiZTljZDhjNTk1ZDhiMTQ4NDc2IHB5M2stZ3JhbmRyZW5hbWluZworNTk2NjQgODk5ZmVhZDllYWUyMWI2YTBmOTk4ZWYwNDNiZGEzOGZlMDI5YWMxZiBweTNrCis1OTY2NSBlOTA3ZjgxNGQ5YTMwNzE5YzhiN2I2YzdjMGFjMWRiYjZiNTVlYmRjIGxlZ2FjeS10cnVuaworNTk2NjYgNjZkYTM3N2JhODEwNzg5MzMyYzBhZGQyYjBjNDI2YWFhYWE3ZWMzMCBsZWdhY3ktdHJ1bmsKKzU5NjY3IDZlOTNkMmQ2ZWIyODAxZGJiZDFmNDkwYmU3YmI5YzI3MWZlNTMyZjIgcHkzaworNTk2NjggZTlmNDgwYjRjMTMzY2Y2ZTljZTVkYjhiODg3YTJiM2ZjODhlYWQyZiByZWxlYXNlMjUtbWFpbnQKKzU5NjY5IDVjZDI4ZjAxMGZjNzFiYTBhYzk3MDIzYzI2MmQ5Mjk3NjY5OTcwM2IgbGVnYWN5LXRydW5rCis1OTY3MCA0YWUzMDA3ZWIwZjQ3MTYwNGU1ZTNjYzRkNjE2NzM3NjYxYTRkNGNmIHB5M2sKKzU5NjcxIDRmOTcyM2Q5Y2EzMjBhZjY3ZTlmNjBhMmMxOTdkYTJlNmZkZmQzMGUgbGVnYWN5LXRydW5rCis1OTY3MiA4Mzg2ZWVkYTIxYzhlMzU4ZjlhNGU0YWIwM2VkZWJhYTZiMWQxOTkwIGxlZ2FjeS10cnVuaworNTk2NzMgYTNmMTg2NzkwZmY2ZTA5YWE0MDJjOGM0ZWIxOGExOWFlOTRlN2ZmNyByZWxlYXNlMjUtbWFpbnQKKzU5Njc0IDE4YTFiYzQ5YTY5NmUwNWRkNGU2MzViOTU2OTUxMjUzNjI2MzUxNTAgcmVsZWFzZTI1LW1haW50Cis1OTY3NSA0YzA1NmMwYTBiOWY1NjY5OWE3OTYzNTM2NzEzN2M1ODU2ZTkyZWNlIGxlZ2FjeS10cnVuaworNTk2NzYgOTY4YmRhODFlNmM4MGJhNWZmZmYxNWRhYzc3ODhhYmI4NmI3YjE5ZiBsZWdhY3ktdHJ1bmsKKzU5Njc3IDI3ZTRlNTMwY2YyZjZmMDY5NTdhNWU1MjljY2VmNWM2YzdjNjc2NjIgbGVnYWN5LXRydW5rCis1OTY3OCAwY2JlOTRiZWEyYzdlZjYxMGRlYTdiMDVkMWJhYjlmMDRhZjlhZjQ0IGxlZ2FjeS10cnVuaworNTk2NzkgNjIwOGIxN2QwZGJlZGYwZGU4MmQ5MGQwZDlkMDQ1ODQxN2QwZGQ5MSBsZWdhY3ktdHJ1bmsKKzU5NjgwIGI5MWNhODdlNmYzMjcyMTQ3Zjk0YWI2NWNlYTc2OGIyNDk0MjAzMDcgcHkzaworNTk2ODEgZmEyZjcxODNiMWFmYzU1M2MxN2I3ZTZhZTVkMzM4MjVhOGEwMWZjNCBweTNrCis1OTY4MiBjNzMyMTBlYTYxYzg2NTE2ZWVmMDIyYWJhODhjNzhkMWEwZmIyOTc2IHB5M2sKKzU5Njg1IDAzNmIwMGRjOTc2N2Y3NWUyMzAwNWY0M2E1NzhlZDI1NDk0NjA5MWMgcmVsZWFzZTI1LW1haW50Cis1OTY4NiA1M2FjM2ZjNjliNzhiMWZkZTA4MjVmZjM2YjhjNDY4NGI3MWI0ZGQ3IGxlZ2FjeS10cnVuaworNTk2ODcgOGQ2OWVkZDNkMjkwMjg3ZTlmZGU1YjdlOWI5YTUxYTQwNmVmMWUxZiBsZWdhY3ktdHJ1bmsKKzU5Njg4IDE3MzU5YzlhNGE3ZDI3YTE4YTIzNmNhNjQ1M2Y0MzlkZGIzMzliNjMgbGVnYWN5LXRydW5rCis1OTY4OSA1ZTAxNzBkM2M0ZGE1NDRjOWExN2YxYTZkZDNiYTZjZjI3NTEzZDUxIGxlZ2FjeS10cnVuaworNTk2OTAgOTQ2MjljOTU5NjVhMTE4NGYzM2MwODJjODFlMWUxYTNlNDVlMzgzNiBweTNrCis1OTY5MSBjZjI2NjdlMmJhMmY1ZTJlNDE3N2NjYTAxYjVlY2I1ZDllMzAxNWQ4IGxlZ2FjeS10cnVuaworNTk2OTIgNTE3MWI1YWU2ODhhMjE3YjllYzhjY2I3YTNkMDVlNjg4ZGEyMWQ1NyBsZWdhY3ktdHJ1bmsKKzU5NjkzIGQxYTM2ZGRiYWE0OTJlOTI2Nzk5YzU0N2NiYjk1OTgwZTgyNWMyM2IgcHkzaworNTk2OTQgY2JhOWZmNzYwNDMwNDhlYzJkYzdiMzIwNGMwZjVlMTQ0YjMxYWM1MyBsZWdhY3ktdHJ1bmsKKzU5Njk1IDI5ODZiYjQzMjIyMjE3MjFhYmU0YmE0ODY5ZmZlMGU3MGFkODcwNmIgbGVnYWN5LXRydW5rCis1OTY5NiBkZTAwYWYwM2JiNGQ1Njk1NTRhZGY5ZGNiZDMzMzBjYjU4YjA5N2ViIGxlZ2FjeS10cnVuaworNTk2OTggZGNkZDFiYTA5NjQxMGU5N2MxMDk0NTgyNzMxYmJmYzcyYWY0MmVhZSBsZWdhY3ktdHJ1bmsKKzU5Njk5IDc0MmNhZjUzNTU1NzZmZTZlZGYzNjM5MWU0NDY3MzQ4ZjAxYmRkOWUgbGVnYWN5LXRydW5rCis1OTcwMCBhZDJiY2JlODNmZGMyZmQxNGI3NTlkMTVjZWFjZGM3ZmQ2YmVlNjExIGxlZ2FjeS10cnVuaworNTk3MDEgNzY0M2E0M2YyNWExZTY5N2YxNmIyM2YyYWNmOGYwYzZkYmZhMTc3MiBsZWdhY3ktdHJ1bmsKKzU5NzAyIDEzYWFiYzIzY2YyZTJjMGUyMjU5YzliNTA2Njg5NDU4MTg4OTc0MzggcHkzaworNTk3MDMgNjFjMTY0ZjI1NDM1NjQyYzMzYWE2NjYyZjlmNjkzZWQ0MTViOTRjNyBweTNrCis1OTcwNCA3NmE4OWRkNGE1MTIzNzI3N2JlNTU1ODE0NDA1MjUzZTM1MDJlNTUzIGxlZ2FjeS10cnVuaworNTk3MDUgZDJjMWJhMDk5MjkwODNjODI1NjY0ZTBiZDhhMGQ0YTE2OWY5ZDk5YiBweTNrCis1OTcwNiAzOThiNjI0Njc1OWZjMmQyZTNjYjRkMDNhZjVlMThhMTllYTI5NTgzIGxlZ2FjeS10cnVuaworNTk3MDcgNzdjMzdlMzJmZTM1YjVjMDcyNTQzZWVjOTgwMTM4MGY2YTI2NDJhZiBsZWdhY3ktdHJ1bmsKKzU5NzA4IDEyN2NjMmZlYTlmYjlkMTVlYzA2NjZkZmJjYTE3MzI0ZWQzMTE3MWUgcHkzaworNTk3MDkgZGNlMjU5NDg5MThkMGQ5OGEwMzMwZGQwMTgyYjk1NzI3ZjQ2MmJmNCBsZWdhY3ktdHJ1bmsKKzU5NzEwIDgxNjY5ZmJjODQ1ZjEyNDk3YzY0ZjY3OTUyYTQzYTdiM2JiZDNmZmQgcmVsZWFzZTI1LW1haW50Cis1OTcxMSA1ZDdkMmFmNTlhZmUxY2FiNTIxYTY2ZGU3YWRmMTEyYmY5ZDc0MWYxIHB5M2sKKzU5NzEyIGJkMDI1OGRmMzMwZWM1ZGFlOWIxNmQyZGZjYjgyZWY4ZjE3MjA1YTQgbGVnYWN5LXRydW5rCis1OTcxMyAyOTJjNWU1MWEwZTU5NjE4ZWY4YThiNDhlMDAzOGI3OTIxYzQ2MDExIHJlbGVhc2UyNS1tYWludAorNTk3MTQgOTAxOTA4NmZkMjBhNGRiNzUyZjI3YmE2N2EzM2Y4ZjkwMmY5ZDI1ZiBsZWdhY3ktdHJ1bmsKKzU5NzE1IGQwNzdiMGM4OTNiYzY1NjE5YWI3MzA0MjY2NjZlNTc3ZTg4YTI4NTIgcmVsZWFzZTI1LW1haW50Cis1OTcxNiBiZmVkNzAyNzdhYjNiNjg2NTM3OWY3YTM4NTg5MzU3YjVlZjZmNGMzIGxlZ2FjeS10cnVuaworNTk3MTcgNjEzNDE3NzViYzQyMTcyMzE1ZTE4ZWIxNDRmN2E3NDUxN2RlNmVjZSBsZWdhY3ktdHJ1bmsKKzU5NzE5IDgzY2E3MzVhMzk5NWE3MjE1NWY2YTBmZWZjNjA2MmIyYWJiYjE0OWYgbGVnYWN5LXRydW5rCis1OTcyMCA2NDZjZmYwOTYwMzliYWZhNWU5Y2YwMGJiN2UwYmZjODM1ODJlOTJjIHB5M2sKKzU5NzIxIDczYmMwMDIyNTJiZmQ1ODNiZjZmZTVjMmRkMmUxZDI0ZTIwMzJhN2MgbGVnYWN5LXRydW5rCis1OTcyMiAzNGM5MWRmNjA1MzI5OTkwNjQxOGM5YzVjOWEzZTNmYWQ5NDEyNmUzIGxlZ2FjeS10cnVuaworNTk3MjMgNTdjN2Q0MmY2Y2RlYjE4YTdhZTIzOTZkZDJiNzU2ZGQ1ZDkwMDVkYiBsZWdhY3ktdHJ1bmsKKzU5NzI0IDIwMzdmNGNhYmIwN2NjZGE2M2RlM2YyMWU4MWM2MzUxZDU2ZmJhOGIgcmVsZWFzZTI1LW1haW50Cis1OTcyNSAzZmNhZjZjYzMwNmQxZTRlNmFhOWZjZjIwZmFlNzYwZjE3ZWNhNGUzIGxlZ2FjeS10cnVuaworNTk3MjYgMmUyZmEyOTE5MTRjNTNjZDRkNGRiYTZiZTIxODZhMDJjOWVmOTFjZiBsZWdhY3ktdHJ1bmsKKzU5NzI3IGRjYzdjODY1Yzc3YjEwMTdkYTkyMDM4ZjEzYTIyNGVmMGRmNzc1NGUgbGVnYWN5LXRydW5rCis1OTcyOCA3YmI5MWIzYmEwZWNjMjg1MzUwMmYwZTJlODQwNGJjMTVjOGM4OWUyIGxlZ2FjeS10cnVuaworNTk3MjkgNWEwY2JlMzZhNjAzNzc5NWUzYTBkNWYxZjJiZDBhYTlkZmVmYzg0YyBweTNrCis1OTczMCAzM2EwYWU3MDY3MGY0MzY5MjM0ZDg4OTg1NTMwZTY5MDBkMjRlZWI2IGxlZ2FjeS10cnVuaworNTk3MzEgOTRlZWFlZWIzY2U5M2RmOGQyYjNhNzExZTc2MDc2NWQyNmYzZDA4OCBsZWdhY3ktdHJ1bmsKKzU5NzM2IGU0OGI0NjlkMWQ4NjZiNzdlNWI2N2JiMjAwYWM0ZGYyM2QzYmVhNmEgbGVnYWN5LXRydW5rCis1OTczNyA3Nzc0MjlhMjMwMjY2N2YxZDU2MzNjZDg0NDJlOGQyZDlmM2M4NGFlIHB5M2sKKzU5NzM4IGMwYzIzNjlmOTQyNjdlYTE1MGNlMmUyZTJmZWM2MzdlNzRmMThkOGEgbGVnYWN5LXRydW5rCis1OTczOSA5Y2FmOGE3YjExYTZiODljMTc5M2JjNmY0ZDRjMDhjYjg1YzlkNGQ0IGxlZ2FjeS10cnVuaworNTk3NDAgYmJjOWU4YzA4Y2Q1ZWVlMzdjMDM1ZTkxMWUxMDRjMTY3YzQwNTZhYyBweTNrCis1OTc0MSBmYzgxODZiNTAxNDViOWQyYjdmMmQwMTRkNWU5ZDk4NWUwODZjNDU1IHB5M2sKKzU5NzQyIDBjMGFlYmM2NjU2Zjk0ZDI1MzM0NGNlNGExMmEwMzNmMzg5NzZiMzcgbGVnYWN5LXRydW5rCis1OTc0MyAzYzZmNzU0M2JkZDZiNGFhZDk3ODg5MDYzY2Y0Y2I3ZDk1NjE4YjUxIGxlZ2FjeS10cnVuaworNTk3NDQgMDFkNWI4ZTdkMTIxMjA1ZWM3YjIxYThhZjBkNzNhNDhlY2JjNDg4YyBsZWdhY3ktdHJ1bmsKKzU5NzQ2IDE0MjZjZDEzNjczOWZiZGVlMjdmZDA2NzRlY2I5NDY4M2UxNGIzNjYgcHkzaworNTk3NDcgMzFlMjk0ZDA4Y2UxYzlkZjNmMjg2YzUyMzI4Njc5ZmMxNWIxNmFiZiBweTNrCis1OTc0OCBiZDg1ODc5ZWZmYTY5ZGFjZGM5OTUxYzg3NWVlZjQ0NjVmMjQ3NjNhIHB5M2sKKzU5NzQ5IGQwMGRlMGNmMDRlMjc0ZjAyM2EyZDI0MWVkYWUzODU5OGU2OWFiNjYgbGVnYWN5LXRydW5rCis1OTc1MCAwZjFjOGJhYjg5OGRiZDliY2QzOWM0NjYzMjIxZGNkMzdiODUwNjdiIGxlZ2FjeS10cnVuaworNTk3NTEgOWQ4Yjk1M2Q0YWY1MmVjYWJkMDZkNDA0ZWM2ZmIyOWY0MGQ0ZDRjNyBweTNrCis1OTc1MiBlZGJhMGExYjdlYmUxMDhjNmI3MjE1MmJkNDg5Nzk1NTU0ZDBlNmVkIGxlZ2FjeS10cnVuaworNTk3NTMgMjQ0YmIzMWMwMzZiZDU0ZDczMWVlYmI4MDAyODFjN2UyODc3YTAzOCBsZWdhY3ktdHJ1bmsKKzU5NzU0IDExNWRhMjI2OGNkOTU4MTEyM2I0OTk3YTgwN2QwNzgyZDRkZGU3YzUgbGVnYWN5LXRydW5rCis1OTc1NSA5OGNjMWNjNTc1NzNjYzA2YzJhN2U0ZDc5YTUwYmMzODgwOGNlYjA2IHB5M2sKKzU5NzU2IDA4MTM4YmMzYzA2MGVjNmYzNDZiMjkxNmZjNDE4OWU3Mjk4ZjdkYTYgcHkzaworNTk3NTcgNGU3NGMyNzY3OGJhMTVjZTk4NjRkZTk5MmYzMDdkNWIyNjc3ODdkMSBsZWdhY3ktdHJ1bmsKKzU5NzU4IDY1ZmU2ZTU2ZDRmOGQ1YzlhMjkwMmJlZTlkYjg1M2RjZTg2NGI0M2IgbGVnYWN5LXRydW5rCis1OTc1OSBhZmIxMzM3OTA2YWU4YTUyZThlYmRhYjc0YjVjZjFjNjRkY2Y2Njg4IGxlZ2FjeS10cnVuaworNTk3NjAgMjgxYzk0NzkxNDJhM2U0YWJhMDZiMjYwMGU4NGI3YmIzNGY3NzY5MiByZWxlYXNlMjUtbWFpbnQKKzU5NzYxIDhiZjZhOWEzYTYzMjliZTM5Y2QwMGJlODA2NTA0ODlkZDg1ZjE4YjAgcHkzaworNTk3NjIgNTZiYTc5MWQ4YjM1OTIzNTQ3YmYyY2FhMzdjMzlkOGFiNDk3ZjdmMSBweTNrCis1OTc2MyAyODQ4ZmZiOWQxN2E2YzNjOWIzOTI2NmFhNzA4MjI2ZjlkYTViNzBmIHB5M2sKKzU5NzY0IDMyNjgxYWU2YzVjMTQ4ODU1ZmI3NDZkNDJjMTExYzRiODE1Yjg2NDMgcmVsZWFzZTI1LW1haW50Cis1OTc2NSA3YTIwNjViNWJlNzViMzIzNWY1OTI4ODViZDFhYWU3MGVlNmZhYTBhIGxlZ2FjeS10cnVuaworNTk3NjYgYmVkZDhiZmQzZmQyNjgwNDc5MDQ0NjU0ZWVlZTJmODE5MzBkNTA2MiBsZWdhY3ktdHJ1bmsKKzU5NzY3IGZhYjJhYTZiODA3MzYzMzJkY2YxMzAxODkwYWE4NDdjNDU2MTZlMDUgbGVnYWN5LXRydW5rCis1OTc2OCBlNWJmNjY5NmUyZTM2YTc0Y2M3MWEwYzg0ZDQxMTBlZTg3MDgzNzA5IGxlZ2FjeS10cnVuaworNTk3NjkgM2JjMDQwNWRlNDkxNWQ0ODdjNDVkZWNhM2Y1YmJkZjlmNWJjYmIwMSBsZWdhY3ktdHJ1bmsKKzU5NzcwIDQzMjFhNWFiZDZjZTJlMmQ3ZDY2MmQxNWZmZmYwZjNhNGJhZGEwNTcgbGVnYWN5LXRydW5rCis1OTc3MSAxNTVmNWMzNmZmOTI5NTYxZmYyYjU0NzkyMmQ1YjVkYWZhZjhhYjYwIGxlZ2FjeS10cnVuaworNTk3NzIgNzlhMzQyNDhhMjYyZmJhOWE0MjdlYWU4NjRiZjJmMzZiYzU4MzZhNSBsZWdhY3ktdHJ1bmsKKzU5NzczIDY2MTk3ZjhkMGZkZjBmODcyNzAzMDYzMTVjOWI2YjRjNzM4YzZkNDAgbGVnYWN5LXRydW5rCis1OTc3NCA1MDdlNzZkN2ZjZGQ1YzViZjY4NWJhNWI0NWJiNWNjZjlkYTgzYzAyIGxlZ2FjeS10cnVuaworNTk3NzUgNjQ3OTRiYTllMjVhZDVjMWM5MmVkMzE0YWRjZjY4NWJjN2E4ZWUzMiBsZWdhY3ktdHJ1bmsKKzU5Nzc2IDk5ZjYzNzBjNmNkMDU4NGE3NTIwMjMzYzAxYjBhZTdlNGRkZGNkMGUgbGVnYWN5LXRydW5rCis1OTc3NyBkODk3OWU2NDI5ZTVmZjhhYmNjZDJkMDQ4N2UxNjNiOWU2NTdhMjk3IGxlZ2FjeS10cnVuaworNTk3NzggNmIzYWFlNWM2OWJmMjA0NGUyNTkzZjBjMjJmMjAzMTkwZDU4YTUxYSBsZWdhY3ktdHJ1bmsKKzU5Nzc5IGVkNzU4ZjZhOTdiYjEwY2FjNTM5YzVhYjA5ZDg3ZTc5NGIzMjgyZGQgbGVnYWN5LXRydW5rCis1OTc4MCAwOTAwODNhMjMzZjhlMzY2ZGU4Y2M5ZTZkNmUyZmYyOWYxMTdhOTBhIGxlZ2FjeS10cnVuaworNTk3ODEgYjI0ODg4Y2I5NTUzMzM1ODRjOGM1ODk0MGY3NDA4NjBiYjg5Y2Q1OSBsZWdhY3ktdHJ1bmsKKzU5NzgyIDJhY2M2NTJlNThhMTljNmMzZDYwODE3ODQ1YmJiOTI2ZWVjYWViMjcgbGVnYWN5LXRydW5rCis1OTc4MyA0MjBmZTZkN2Q1ZjQ1ZTVmOWZlZTRhMjRmY2ViZmZlMmE2ZDQyNmRkIHB5M2sKKzU5Nzg0IGFjN2RlYjFjMWQzY2UwM2FlNzEwN2QzZjNkMzRlOGJjMDE1ZmFmYjQgcHkzaworNTk3ODUgOGViOTYzNjNmMWQ1OWMyYjc1ZWM1MTRjZDlmYjU0ZWNlYjlkNjA5NiBsZWdhY3ktdHJ1bmsKKzU5Nzg3IDE4MTFlYjAzYmEwMGM4ZjkzNzFlMDVhY2VlM2Y5MTFkMzJlNDcwZWYgcHkzaworNTk3ODkgZmEyNTBhNTgwOTlmYzRhYWE3OGE1NmVlMWZiZWMyN2FmMDcxNWEyMCBweTNrCis1OTc5MCA3Y2JhY2FhNWY4ODU4ZjQ5NDc1YmQ1MzI0ZGIxODllYWE0NDViYjk0IHB5M2sKKzU5NzkyIDBjNGQyNThhNWIyNWVhMGZkYTU5YzY1NmZkZDJiYzJmMzRjODdjMzggbGVnYWN5LXRydW5rCis1OTc5MyBkMDQ2NWU3ODJiMDE5MTAzYzhhODQ1YmI1NzE5ZjI5ZjMwMDM2MGQwIHB5M2sKKzU5Nzk0IDY3NGM5Yjg5ZDEyNDE0MDFjZTJmYjVjMzBjN2UzODA0YmNjZDI4ZGIgcHkzaworNTk3OTUgYjhlMzRiY2RiYTQ1NDgzNzU0YzRjZWEzMDRlODQ0MGI4MmU4MWY3NCBweTNrCis1OTc5NiAxM2I3Y2EwNGJkNzBlMTQ2NDJlZDZkOTdiMTBlODVmNTRjMzk5YjBlIGxlZ2FjeS10cnVuaworNTk3OTcgOTc0ZjAzMjBkNmIzY2Q5MzIxZDJhOTJiNmM2MDRjOGMwNTIyNmI1NCBsZWdhY3ktdHJ1bmsKKzU5ODAzIDQyNjQ2YTg3Mjc3MmVmYWRhMDYyMDkyY2MzY2ZmMTQxNDVjM2EwMmUgbGVnYWN5LXRydW5rCis1OTgwNiAwNWJjYjc5MGVmNjMyNGJlOGI3ZDZmMmEwMDY0MmQ2YjVjYzNjMGQwIHB5M2sKKzU5ODA3IGE4Njk3YWZiZjE3ZWY1YzcyYzA1ZTM5Y2RmNWNlMjRmYmM0YTBiOWQgbGVnYWN5LXRydW5rCis1OTgwOCA0NTUzNmQ1NTg3ZDQ3NzAzMjUwMWExYzUzNjQ1OGY5YjRlNGIzZWQyIGxlZ2FjeS10cnVuaworNTk4MDkgZjljOTUwZThmMmUwYWU2ZmFiMjkzN2VjYzNkNzIyYWJkYWExZWNmNiBsZWdhY3ktdHJ1bmsKKzU5ODEwIGI2ZWE1Mjk5M2NhZTUwYWU2NTYwNDNmZGU3MDUwMWRmNTY5MTA1YzQgbGVnYWN5LXRydW5rCis1OTgxMSBmMjcwNzRkMTQ3ZjRlMTk4YTdiMzA4NzkyYjFiNWJjOGQ0NTRiZDY4IGxlZ2FjeS10cnVuaworNTk4MTIgNmM0YjBjYzlmNmM5MDBiYjI1YjQ5MjFlMjFmYjc5NWJkNmY4MTIyNSBweTNrCis1OTgxMyA3ZWEyMzE1NzhiMDJkZmEwM2M3ODYzNmU4M2U2MGUyYThmNGY1ZWRjIGxlZ2FjeS10cnVuaworNTk4MTQgM2E5NDQ5MzVjNjEwZGE0ZmNjMDJiNGIxOTgyOWNmNTU3YzA4NzY4OCBweTNrCis1OTgxNSA4NjRlNjc5YTBlODUwODA0YmJmMjNlYmQzNGVmMDY4Yjk2NmMxNzBkIGxlZ2FjeS10cnVuaworNTk4MTYgNGQyM2Y1YTdkNGM5NjA5YzMwMzRmZWMzOTRjMDM4YTFjYjc0MGU3ZSBweTNrCis1OTgxNyAxOWNlOWVmMzRiNjIzM2NiMzgzNTU4Y2JiNzdiMjRiYzY5Y2QyNmU0IHB5M2sKKzU5ODE4IGI5ODk3N2YwYWJhMWM2NTdjNDAwZWIxZGFhZDU1OTIyMmNiOGVmMmMgbGVnYWN5LXRydW5rCis1OTgxOSBhYzUxY2ZlNWM1YzZiOTgyODRjMzY3NDQ0MTg2ZjdjY2FiNTU3MzkwIGxlZ2FjeS10cnVuaworNTk4MjAgZjNjMWY5YzhjZTlmMTA2ZWNjYmYxZjQzNzZjMmIwMDIwNDVhNmE2MSBsZWdhY3ktdHJ1bmsKKzU5ODIxIDc2ZmNlYjU4YmNmNTFkMWU3OTkzMjY0ZTdiMWM1YWZkNDZmZjFiMDEgbGVnYWN5LXRydW5rCis1OTgyMiAwNmQxNWRhMWYxMjU4YzQ0NTQ1NDQwMzAyYmVmYmY4YzE1YWUxYTc3IGxlZ2FjeS10cnVuaworNTk4MjMgMmNkYjY2MTY3NWY5YzAzZDlhOTYyZDY4YTcxMjFlM2NjZDc3ZjQ0OSByZWxlYXNlMjUtbWFpbnQKKzU5ODI0IDU5OWYyMmEzNDlhMjRmZTNhOTkwZWExY2I1Mzg3NTcyMDBjMTVkY2IgbGVnYWN5LXRydW5rCis1OTgyNSBjZGMyODViZDBlZmI0NGU3YTQ5MDZjMWRiM2UxMTFhODkyMjIxOGRlIHB5M2sKKzU5ODI2IDMwNWQ3ZDJjZTA0NzAxYjQxY2UwOTRlNTA4M2UwMDZlNzVkYTUyMDYgcHkzaworNTk4MjcgMTMyZDkwODQ3MWM4MzhiOTEwNTVjZjMwMDQxNDE0ZjUwMjZiMzM1YiBsZWdhY3ktdHJ1bmsKKzU5ODI4IDBhYWUxNDk1MGUwYmMyYmQzN2YwZjQ2MWEyNDc4ZGM1NzE2ZDU5MGQgcHkzaworNTk4MjkgM2IzYWI5MjViMjYxZTczNGI2NGUzZDFmMDU4ODE0MzY5NjNjZTk0OSBweTNrCis1OTgzMCBkYjVlMDFjMzNlYjc2MzNjMDEzYTUxNGQyNzlhZjMyNDc5ODg5YjU3IGxlZ2FjeS10cnVuaworNTk4MzEgZmQ1MzJhOWIyODEwNjM4MzM5MTg4NjRjZWFkNzk1Y2ZlNjRjNmU1MiBsZWdhY3ktdHJ1bmsKKzU5ODMyIDZiNzE1ZWE4MDQzNzc0NjhmZDk2ZTE1NGY4YTM4YjViYTM0YzdhNDkgcHkzaworNTk4MzMgY2YzNmUwMWU4M2YyMGU3NDBlOTEzNWI5YjM2YmY0OGQwMGRhMGNhZiBsZWdhY3ktdHJ1bmsKKzU5ODM0IGFkZGMxODU5NmExNTc1MzVlMGFlZGE4MDM1MmFmNTIxOTUyM2U2YjcgbGVnYWN5LXRydW5rCis1OTgzNSBjYTE0MTVjNjEwNWY3ZmQwZGU3YmUxY2ZkZjBmNTczM2NkNmViMGY3IGxlZ2FjeS10cnVuaworNTk4MzYgMTllMWZhNzhkMzMwNTQ5ZjQyYWNkMjRmMjQyY2E0NWQ1NTFkYzdkNyBsZWdhY3ktdHJ1bmsKKzU5ODM3IDVlMDI0ZTkxZWUwNjdkNzUxYTk0MjkwODJjYmU5YTZmMTM2N2YwZDMgbGVnYWN5LXRydW5rCis1OTgzOCBlOTc1NjI2NmUwYjkzODE0MDM4NDg0MTliMTcwZWUyMjk2ZjJhYzM0IGxlZ2FjeS10cnVuaworNTk4MzkgNmQ1MjE2MDNlMDdkZTdmYjc4OGVkYTVlOGY4Yzk1NDI5MmQ5NmM0ZCBsZWdhY3ktdHJ1bmsKKzU5ODQwIGM3NWQzNjBhYjg3YjM4NzY2M2ExODMyYzQyYTA1NGFiN2FjM2JjYmMgbGVnYWN5LXRydW5rCis1OTg0MSA3M2UxYmYxNzlhMDFhZDc4MjRmZjVhYTJiMjljZTA2OGE0NTdjZDY3IHB5M2sKKzU5ODQyIDIzNmU3NTI2YWJlYWY1OGYwNWRmZTk3ZWQ1Y2NlMmYyZTlhYWE4OTAgbGVnYWN5LXRydW5rCis1OTg0NCA0MmNmNTljY2NlNjYyYjc1MDBmNzc0YTk0YTYxZmRiZTNkNTdjNWVmIGxlZ2FjeS10cnVuaworNTk4NDUgYTI5MzhjNTUyMDBjZTRhNmRjMWNkMGQ1MTBhODljZWYyNDFkZTNlYiBweTNrCis1OTg0NiBmYjVhNjMzMGY3MWIzOThmY2ViMGU0MDUyMDJhODg4MDViYTFjYzE0IHB5M2sKKzU5ODQ3IGNjODY4ZmNmNTA1YWViNTllNDEzYzI5ODE5MWEzM2NhODY5YWQ5OWEgbGVnYWN5LXRydW5rCis1OTg0OCBhNWI3ZjJkODc2MWQ1YTFkMmFiMjZlMjFmMzYwN2EzYWVmNjkyYTc5IHJlbGVhc2UyNS1tYWludAorNTk4NDkgNjBiNTQ4MDFiNjQ2MzJlODBkYTQxMTQxNTRhZDljNDA0NzRhMTEyOCBsZWdhY3ktdHJ1bmsKKzU5ODUwIGExZGRlNjgwZTY5NDIwZjdiZDJiODEwZjI5YTc2ODgxZmE3MzVlYmIgbGVnYWN5LXRydW5rCis1OTg1MSBjYjIyZjg3NDhkYTdjZjQ1NmI4NmViMmY3MGY0YmMzMWU5MmI0NThmIGxlZ2FjeS10cnVuaworNTk4NTIgMDU3ZGU0NmVhMTdlMjFhNjBjNGI2OTAyMmUzMTg5NDk4ODIzOTI4MiBsZWdhY3ktdHJ1bmsKKzU5ODUzIDg4ZDc2YjkyMDZlNjY3MzI2YTNjZjgxZGYyOGViYzZmMjVkNTYxMTEgbGVnYWN5LXRydW5rCis1OTg1NCBkMWExYmE1MDI1NzllOWUyMjI1NWE3OGQ3YjZmOGUzMGM4MzY3MjQzIGxlZ2FjeS10cnVuaworNTk4NTUgNzZjNzY1YTc0ZmI4Y2I0Mzg1ZjkwMjcwNWZhZmI2NjRkZTNlZmNhYiByZWxlYXNlMjUtbWFpbnQKKzU5ODU2IDVmYjliMmY2YmFjYjdjNmJlODg5YjAwMDRmOWM2ZDdhMTFjY2FiZTEgbGVnYWN5LXRydW5rCis1OTg1NyAwODhiNTA3N2M5MDBjOGQ0ODczZGRiNWU5Nzk5ODg3Mjc2ZGQ2MDI2IGxlZ2FjeS10cnVuaworNTk4NTggZjQ1ZWFlZGI5MjBlMjA1NWVmMzdlMTJmYjFkM2JlZDRlYTQwNjJjMCBsZWdhY3ktdHJ1bmsKKzU5ODU5IDlhNjBiZDhmMDBkNmFmYTkwNDJmYzI4MjFmZTBhMjhiNjEzZDJjMDEgcmVsZWFzZTI1LW1haW50Cis1OTg2MCA3NmNhYjg2Nzg5MTZlNGQ0YTgwYjAyYWUzZDE4ZjE0OGY4ZDRhNTkzIGxlZ2FjeS10cnVuaworNTk4NjIgNDdlNzhjMmQxNmRlMGQ0MzAwZTZhN2MyNzIyZjUzNmU4OWVhNTMyNiBsZWdhY3ktdHJ1bmsKKzU5ODYzIGI3ZDFiNjI3YTdkNTFlNGQyYjIyZTAwOTE3MGVkYTUzOWQ5MjZiOWQgcmVsZWFzZTI1LW1haW50Cis1OTg2NCA5NGFiNTcyZWQ2ZGRmMzYwODAwNjAyNzlkOWI3MWYwZmQwM2UyN2U3IHB5M2sKKzU5ODY1IDMzNDQwOTE5OTYxMjQzMjE0Mzk2ZmQyOTUyNzk2YzhjMDlmNjkzNWUgcmVsZWFzZTI1LW1haW50Cis1OTg2NiBiZjdiYmQ4ZGIxYTgyZDc4MjU5ZmY5MjU0YzBmNGNiYTIzMzIyODhiIGxlZ2FjeS10cnVuaworNTk4NjcgNWY2NDBmOGY5MmY0OGQ0ZGJkMmI4OTMzMDI5MjFlZGQwZDE5M2M5NiBsZWdhY3ktdHJ1bmsKKzU5ODY4IDFkNzRkZDgyMjhkYjBjYzk1YmM3MDAyM2VjM2U5MmE3Y2JjZTlkM2MgbGVnYWN5LXRydW5rCis1OTg2OSAxMGViZDAyN2MyNDM5NDI1ZGMxMjViMzQyZjFhYzFjMTU0MTk2ZDNhIGxlZ2FjeS10cnVuaworNTk4NzAgNTA4NjllNzQ3ZTc2ZTllNDBhOTY4Mzk1MDRmN2RiNWI4YzYxNzE2OCBsZWdhY3ktdHJ1bmsKKzU5ODcxIDlmNmFhNDk4NDk4ZDI4NWMxYTFhY2RkNzdkZmU2OTQxYTI1NTUwMzUgcmVsZWFzZTI1LW1haW50Cis1OTg3MyBhNjBmOTJiYTBkMWVkNTYzMTU1NWIyYzI5YWEwNTcwN2YzYjEzMDk5IGxlZ2FjeS10cnVuaworNTk4NzQgNjc3NmQ2ZWYyMDFhMTAzNzU4YjRiZmMxMjdlOTM5ZDU2Y2ZiOWNlNyByZWxlYXNlMjUtbWFpbnQKKzU5ODc2IGRjOWQ5NWI3MTdjNTdlM2U2MWY0ZGIyOWVkZjkwZDk2NTdlZTU4ZWUgbGVnYWN5LXRydW5rCis1OTg3OSA5YTk3OTA4YjRjOTdlZjkxYjFkMmRiNTEyMzY0ZTE3MWY1MmQ3OWJkIGxlZ2FjeS10cnVuaworNTk4ODAgYzliNmJlNDgxNjU3ZGQ5NjI4MWNkMDI2ODdhNDUxNjMyNzA2YWViNyBsZWdhY3ktdHJ1bmsKKzU5ODgzIGEyOWFkYzNiMGYyNjZiNjM2Yzk2MmU0MjljMTQwYTBiYmIzYzE4OTcgcHkzaworNTk4ODQgZmFlOWNlZGI5MTQ2YmRmMTYyYmI4ODdiYzM4MzlkNzFmNzU1YTE0NyBweTNrLWltcG9ydGhvb2sKKzU5ODg1IGZiMjg3NDE1YWNhMGU2ZmE1ZDJhMzI5ZTI4YTM2MDRjMmYwMTM0MzMgcHkzay1pbXBvcnRob29rCis1OTg4NiBhOTNlMGU4MGMxOGEwMTcxMDgwMTQ4N2IzMWRkZTljMGM5YTU5MzQ0IHB5M2staW1wb3J0aG9vaworNTk4ODcgNzZhNDYxZGUxNTQ0NDQxMGZlMTkwNWQ2YWU3YTdhNzMxMmI3MmQxYiBsZWdhY3ktdHJ1bmsKKzU5ODg4IDQyNjc2YTQ4NDBiNWE3MTEwYWNjYzY4MmM3NmVjNDJjNjMxNzg5NzcgbGVnYWN5LXRydW5rCis1OTg4OSBiNDQ2Y2Q2MTM4OGYwNWI1ZmRkNWU2NTdkZDFiYWExZjI3Yjg1ZDAwIHB5M2sKKzU5ODkwIGQ4ZDdhNzhjNjQyM2MxYTQxNjIyYzViNjcwNjliNTZmMDgyMTA1NWUgcHkzay1pbXBvcnRob29rCis1OTg5MSA4OTY5ZDc0ZDBkMjJmMzE5YzdjNDVlNjQyNTlhZDc0Nzc1NjE4NzUxIGxlZ2FjeS10cnVuaworNTk4OTIgYzMxMTM5MTRlNjZlOWUwZDY2OTM5YWMzZTFhN2ZjOGFjZmQyMjQzMSBsZWdhY3ktdHJ1bmsKKzU5ODkzIGFmNmYzNDU2NTdiNGI3OTQxZjMxZmQ0Y2U2MzkzMjQ4ZmFjZTZlNDUgcHkzay1pbXBvcnRob29rCis1OTg5NCAyMDU3OGRiMDc2MjlhMjA0NjZmNTRmNjdiYjgzNDBmOGI4MmJiMjEzIHB5M2staW1wb3J0aG9vaworNTk4OTUgZGJhZmNkODI3OTc5ZTA5N2UwOWZmZWExNzYzNDFmYjZkNTJiOTdkNCBsZWdhY3ktdHJ1bmsKKzU5ODk2IGU3NTNlMzFhMGM4ZjE3OTQzOGExOWZmNzQ2OTBjZWUwNzQwM2ViNDcgbGVnYWN5LXRydW5rCis1OTg5NyBkZjg1NmUwZTFiMmEwODljOTQxZGY0YzJhMzE3MzBkNzU1NTVkODUyIHB5M2staW1wb3J0aG9vaworNTk4OTggNjlmNDk1MDgyNDEyNjcyNzM0ODkxZjY2ZTIyOGE2MjlkZTZlMDU3ZCBsZWdhY3ktdHJ1bmsKKzU5ODk5IDYwMTI2YWEzYjgxNjk3NzBkNzk4NDg1YjJmNzViZmU5ZTFiOGU1ZWQgcHkzaworNTk5MDAgNzg1MWU3NWY1NDM4Y2E0NTk4ZDMwNWM2Yzk5ZmI5NDQwZmRjMGQ3YSBsZWdhY3ktdHJ1bmsKKzU5OTAxIDQwM2NmY2E5ODYzZmQyZTMwOGIwNDVlMmFmMThjMGY2ZDJhZmNhNDggcHkzaworNTk5MDIgNWRlYzRhZGU4ZmE5NTI4NGIwNjBlMGM1NDNmMzA0MzZhMTBkMDA3YiBweTNrLWltcG9ydGhvb2sKKzU5OTAzIDgwNThlMTY4MjBlZjg2MGU0YzkwYzQ3ZTA3MGFiM2JmNzZmODkwMzggbGVnYWN5LXRydW5rCis1OTkwNCAzNTRiZTBkYWZlNTRiMjIyYWYyNWE5M2RjOTg1ZWZiYzI4N2M5YjU3IGxlZ2FjeS10cnVuaworNTk5MDUgM2NkOWI4NzdlYWUwOWEzNWI5Y2NkNzk1ZGU3NWQ4Mzk3MjlhNDg3ZiBsZWdhY3ktdHJ1bmsKKzU5OTA2IDc4NTIzN2ZhNWY0MDE0NDRjMzFkNjE3ZGRjMDZlMDEwYTM5ZThmYTYgbGVnYWN5LXRydW5rCis1OTkwNyA2YjBiNWVkZmIxYjc4NWMxNjkxYzdjZjY5ZDU5ODI3MTFjNDk5ZGVjIGxlZ2FjeS10cnVuaworNTk5MDggMDZmOWY1MWFiOGMwM2RkY2JiMWQyOWE2OTNkMjYwYzgxNDM2YTIwNCBweTNrCis1OTkwOSBiZTA0ZWU0YzRmZDczNDU4NjljOTgwM2Q1ZDEwYjgxZGZhMTkyYmEyIGxlZ2FjeS10cnVuaworNTk5MTAgMmFkM2UzNWM1ODI1YzM3ZjI4Yjc4ODJiYWJkYTMzMzc1MzVjODE3MSBsZWdhY3ktdHJ1bmsKKzU5OTExIGFmM2EwY2ExYWI0YTAyYmUyYTU5MzE4NmE0MzA0NjNkY2JmMzdiOTEgbGVnYWN5LXRydW5rCis1OTkxMiA2MmY2ZDc4MGExMWRlMDM3MzQ2Mzc1YWY4ZjVmY2I5NjYyZDhiYWNlIGxlZ2FjeS10cnVuaworNTk5MTMgM2NjM2E1NWQxMjMzNDUxM2ZhNzM2YTUwNDU3M2U3YjYyMThhZWRhYSBsZWdhY3ktdHJ1bmsKKzU5OTE0IDk0MjYxZjMwMjdhNTkzZGVmNDRhMzU4NmQxMzBiOGQ2MTQ4ZGI5ZmUgcHkzaworNTk5MTkgNTlhODJjZGZhMTM3ZTg4YjhjYzM2ZDY1NTAzNWNhN2Y0ZTliNzA5MyBsZWdhY3ktdHJ1bmsKKzU5OTIwIGFhZGNkYTdhNGJmN2FmNGVlM2EwOWI1MDEyZTRmNGEyZDU1Njg5NjEgbGVnYWN5LXRydW5rCis1OTkyMSBkOGU0MzQyYzE0NWU2YjVhODhhMTQ5MWM1NGYxZjFmMTlkYzY5NTJhIHB5M2sKKzU5OTIyIGU3YjgyMTAxYjk3MGY4ZWM1YjEwZTU1ZTlkOWQ5MTgyZDQyZTMyOWIgcHkzay1pbXBvcnRob29rCis1OTkyMyA3OTU3OWZhOGQ3NTJmMmJmYTk0NDM0ODRmNGE2NzYwMWI3N2VhNjUwIGxlZ2FjeS10cnVuaworNTk5MjQgZjBiOTMzZjEyOTgyNjdkOGU2Y2EzNTUxMzYyODE3OWM3MGJlYjRlNyBsZWdhY3ktdHJ1bmsKKzU5OTI1IGEyMjAyMTFmODMzMTMxNjAyOTFiZGY1ZmE3NjY1NmUyMzBmMzkwNTIgbGVnYWN5LXRydW5rCis1OTkyNiBkNTgyNGZkZDlhMTVmMGZkNzY2OWNjNzhjYjFjMmNkMTE5YTViZTVhIHJlbGVhc2UyNS1tYWludAorNTk5MjcgNzc2YjRlMDU5ZjgzNmExZmMxMjQxY2FkNzNiZGRlNmIxYjgzNmZjNSBsZWdhY3ktdHJ1bmsKKzU5OTI4IDNhZjNmZDM4ODdlZTIzZTQ5NWMyMjI1NDBmYjExMGVjYmQ4YWJjYjkgbGVnYWN5LXRydW5rCis1OTkyOSA3Yjc5ODU0OGE0YWRlNGQwMjZmNWU5ZDhkOWM4YjI2MDNiYzIzOWY2IGxlZ2FjeS10cnVuaworNTk5MzAgN2RiYzNmNDI3OGViZDM0ZmI3MWYwNDgwZTI2N2M5YThmMDg3ZGM4NSBsZWdhY3ktdHJ1bmsKKzU5OTMxIDI3M2QzN2JmMjNkM2JlMmQzMmFjMjg4Y2E5OGIyZWNkMGI2OTMyNjEgbGVnYWN5LXRydW5rCis1OTkzMiBhNTRjYzQ3NzJlNzM3MzgzNWI5NmNlNjg2YzI4OWZjYWI0MDJkOGEwIGxlZ2FjeS10cnVuaworNTk5MzMgNWE3MWRjYzcxZWZmNzYzOTRkMzU5OTkyNzcyYTBkOWEwZDkyYTc5NCBweTNrCis1OTkzNCA1MzUxMTA1ZmY4MDhhMzE3MGE2M2M2ZWY3ZTdjOGQ4MDk1YWJiY2UzIHB5M2sKKzU5OTM1IDRjYThhY2M5YmVkNzE1NDg5MjdlYTgyNzVmZTljYTAwYjRlZGVhNTggbGVnYWN5LXRydW5rCis1OTkzNiAzZjY1YmNjODk2NmYyOWQ4OTA4ZTBlY2FlMTU2ZWU5ZGMyNTg4YjIxIGxlZ2FjeS10cnVuaworNTk5MzcgYjY3MmMwMTVjMmRiODRmZjQ2Nzk2MzEzNjcwNTI4ZDMwN2QwNGU2OCBsZWdhY3ktdHJ1bmsKKzU5OTM4IDk0NjhlNjA2MzYxNzM0ZTE1Y2NmYTBhYzBjZTk1OGU0YjliOTM1NGEgbGVnYWN5LXRydW5rCis1OTkzOSBjNzM3NjhkOTc3YTlmOTJiYjljZGI5MDQ3OGQ1NzFjYWQxOTkwZDJiIGxlZ2FjeS10cnVuaworNTk5NDAgODk0ZDJhZDQ1MDI2OWU3ZTA1ZDg5OTg3ZjNkZDY3ZTE4MDhkYTA5NyBsZWdhY3ktdHJ1bmsKKzU5OTQxIGYyZDgyMGI1YWUyYWU2NDM3MDYwYmYzODQwOTI2MDFhOTU5NGZjZjEgcHkzay1pbXBvcnRob29rCis1OTk0MiBjMjU3NjBjMjEzOTdhMWU0MjM5MGUzMzY0YWVlYzljYWFiNWE1NWVlIHB5M2sKKzU5OTQzIDQyOTNhMDZhZmQ3MjdmNzUzNjAxNWY3ZGYzZDJhMWMyNzJlYzliOTAgbGVnYWN5LXRydW5rCis1OTk0NCAzODdkNDhjM2EwYjNlN2MyNzQxODcxYjE5YTExYjdiMjdjNmZhOGEzIGxlZ2FjeS10cnVuaworNTk5NDUgOTE5MjhkOTllYmIwOTI3MDdiNDYyZDZjZThhNTQ5YWY4MWI2NTNhMSBweTNrCis1OTk0NiA0MjZmZWY4YmFkZTJkZDdhODZjOGE2OGQwMGI0MDk1MTY2OGFjN2I4IGxlZ2FjeS10cnVuaworNTk5NDcgYjQwOTk0MWM3YTUxZTEwMDlkYjE0MThjMTAyMzM1ODI3M2QzZGJjZSBsZWdhY3ktdHJ1bmsKKzU5OTQ4IDdlNDFlMWM0NmI1N2IwZWE2YTI4ZWYyYWM5NmVjYzA5YWUwYzA3MjUgbGVnYWN5LXRydW5rCis1OTk0OSA5YjZkMzQ4Y2VjODdlNGJhNGMzMGUzYTdkOGZkNzNkNDE2MjI4YzNjIGxlZ2FjeS10cnVuaworNTk5NTAgZDY2ZTU4MzdhYTU3YzMyMmUxZGZlNjAxMzA1YzFmNWU5NDZlNmE0ZCBsZWdhY3ktdHJ1bmsKKzU5OTUxIDMzZjY3MDkwNzVlODNjOGE3ZTVjMmU2M2EwZjAxMmIyOGJkNGZmZTggbGVnYWN5LXRydW5rCis1OTk1MiAzMjJjMjM4YTY0ZTUyNzM4NWEzNTk2N2Y1ZmNkYzdlOTg4M2IyZDM3IGxlZ2FjeS10cnVuaworNTk5NTMgNjJlYWNlNjc4MGY2NThjZGU1MWE2NWExZTVhMGNlOWI1OGQyY2Q3NyBsZWdhY3ktdHJ1bmsKKzU5OTU0IDExNTQxNThhMTk5Zjc3OTRmMjU4NTVkOWVmNzIxYzQ3NzFjNjViZTUgcHkzaworNTk5NTggNjI3ZjJlMjI3M2I5NGZlOThiYjkxZDczZTE5OWE3NGRkOTMwYTE2NyBweTNrCis1OTk1OSAwMDUwMjFiZjVhY2VjNzNjMzIzZWRjNDdkYTg5OWUzNjYzMWJlMDY1IGxlZ2FjeS10cnVuaworNTk5NjAgODI3ZjA0NTE3MzRmZDk2NjQ3N2FmM2JiY2Q1ZWVmNTVhN2E3NzU0ZSByZWxlYXNlMjUtbWFpbnQKKzU5OTYxIDVkZmRlZDlhZDhhMGNjNmRmZWJhNzY4NTNjYTllM2NkOWQ3NzQ4MWUgbGVnYWN5LXRydW5rCis1OTk2MiA2YWYxOTRjNDk0Y2MyZmRmM2Y3MjM0MmMwNDllNWRjNTc3OWFhY2Y5IGxlZ2FjeS10cnVuaworNTk5NjMgNzc0YTk1OTcyMjhlMGFkYjdmOGUxYjlhNWI2OTNiN2Q2NDllNjVhNSBsZWdhY3ktdHJ1bmsKKzU5OTY0IGNhYjg0MTI5ZGNjYjU0NTY0MDYzZjE2Mzk2MTg1NjVmZjM4N2U4YzAgbGVnYWN5LXRydW5rCis1OTk2NSBmMDM0ZWI1ZDhjZGY0OWFjNTExMzkzZmM5Zjk2YzZkNmE0YzdiYzQ2IHB5M2sKKzU5OTY2IDM1N2IzNjU1NjBmNGI3OTIzOGU5MGY4NDkzZTQ0ZWJjOWQ3OWZlYzYgcHkzaworNTk5NjcgYTAwZDkwMDA0YTI1MTk2YWRhNmNmY2EyMDc3NjEyZTdkZDg0Y2ZjMyBsZWdhY3ktdHJ1bmsKKzU5OTY4IGU1MTFjY2YyZmZiZTY3YTEyZTIxNDIzOTBhNjgzNmNkNTc2YjJlMDUgbGVnYWN5LXRydW5rCis1OTk2OSBkMDIwOGQ2NWRjMjJjNTAxMDhhNjczOWU4YTM1YTk3OTM5OWVhZTViIGxlZ2FjeS10cnVuaworNTk5NzAgODY4OWY0NmQyNWQ2YWY1NWM4Y2JlNGQ1ZjE3NWRmOGMxNWZmNzljNCBsZWdhY3ktdHJ1bmsKKzU5OTcxIDE0ODU0YzdjNmEyNDg3MGFkYjU4OGQyYTYxNWE3NTU3MmIzZmZhNjkgbGVnYWN5LXRydW5rCis1OTk3MiA1YzdiN2ZiZWE2ODFiMTVkODRlNDMxMjk5ODBmODNjZWI1OTk4ODRlIGxlZ2FjeS10cnVuaworNTk5NzMgMGJiNmNmNzdjODVhZjg1MzRkMGZlZWVjYmE0NDRhZWFmMTkxYTMxOCBsZWdhY3ktdHJ1bmsKKzU5OTc0IDQ2ZTczMWJiNmE4NWYxY2VkYzc2NDg3NGM5ZmFiMTJkNjRiZTUyZmEgbGVnYWN5LXRydW5rCis1OTk3OCA1OWYyOWIwMTM2ZmI1ZjYxODQ5N2YwOWY4YTQ1MmE1MDY0YjQwYjNhIGxlZ2FjeS10cnVuaworNTk5NzkgYmZhOGQyMjU3ODIzMjIzZGI3YzRhM2RkY2U2NjE0NDQ0MWFlMWY3OCBweTNrCis1OTk4NCAyOGM4MWMyNzM4OWUyNTQzMzlhOTBjMzEwYWI1Nzc0N2FlMzIzMjMxIGxlZ2FjeS10cnVuaworNTk5ODYgNmU1Njc1Y2EyNTU5YzZhNzM3ZWYxYjQ2YjgxMTQ5Zjc3MWE3ZDQ3YSBweTNrCis1OTk4NyBjNzkwNTg3ZjI5OTI1YzE1MTQ1MTA0MGQzOTQzNzJhZTY4N2Q2NjlhIGxlZ2FjeS10cnVuaworNTk5ODggY2I5MDQwNGE0NmFkMThhMTIyYmYxODJhZDI0MTdlOWNmNGZhNWE1MCBsZWdhY3ktdHJ1bmsKKzU5OTg5IGYzMDJjZjk5OTYzM2ViN2M2ZDJiMGUwZjI2ODRmNGRlZmJjOTAwYTUgbGVnYWN5LXRydW5rCis1OTk5MCA2ZjA0OWNhNTVlMDZiMmMxMDhlYzBkOGQwZTg0YmIwYjgyM2RjMzg1IHB5M2sKKzU5OTkxIDk5MmE2MTFiMmUzMTQ2NmMxNzA0YmE3ZWU2YzE5NmJiODRiNGYwMWMgcHkzaworNTk5OTIgMmYxMWY3ZDliZGM4NGUwZDZiYmEyZWZlM2NlNWE0OWZjMGNlOWZhNSBsZWdhY3ktdHJ1bmsKKzU5OTkzIDcxYzc5OWViMjRiMjQ4MGFkZmI3N2Y0M2RkMjc1ZmZhNGUyMWE4ODAgbGVnYWN5LXRydW5rCis1OTk5NCA3ZjJmMjFhYTM2OTA2YTlkZDFlNzg1N2M4OWU3OWU5NDFhODE4YmE4IHB5M2staW1wb3J0aG9vaworNTk5OTUgYjIzYjQ3N2Q3ODk5YTY2OGY2ODQzNDk0YTY3MTM1OTQ1ODkyNDM4MyBweTNrLWltcG9ydGhvb2sKKzU5OTk4IGM0MzgzZDc2NWNhNzE3ODM3NDg0YTNjMmFjNWQzNzFhODAwNjY0OTggbGVnYWN5LXRydW5rCis1OTk5OSBhNGEwMjQzMmU3MzMzZTk5ZWYwOWVjNTdiMzlhMjllYWEwZTc1YjhjIGxlZ2FjeS10cnVuaworNjAwMDAgNDFmMWIzY2IwYmIxMDM1NWIyNDk1ZjkxM2VlYjQ5NmYzOTc0MzE0YyByZWxlYXNlMjUtbWFpbnQKKzYwMDAxIDJmN2YzZjVlNzNkM2M1ZWFhMTQwMmM5MWFmZTBlNGNlMThhYjI3MjQgbGVnYWN5LXRydW5rCis2MDAwMiAzZDcwNDI4OTNjYzUwNDZjZWQ3YTE5NmQ1OGI2ZDIwYTFmNTllOWU3IHJlbGVhc2UyNS1tYWludAorNjAwMDMgY2FmNThjODMxNDk5Y2M3ZDU5NDUzNTkxODk2ZDAzMTBlZDk1ZmQyNyBsZWdhY3ktdHJ1bmsKKzYwMDA0IGEyZjNkNDk5Y2UxMmVmNGNlMjFiNTZiY2IxZTA5YmEzYzU2MjI2OWUgbGVnYWN5LXRydW5rCis2MDAwNiAyN2Q1OTY3NWI5MmM2ZjdhMGQwMDVlYmE4OWNhYTg1ZDVkZTA0YmIwIGxlZ2FjeS10cnVuaworNjAwMDcgZjEyOGU2ZWJmOTBmODFkMGZkMmEzMDU4YmM3ZmEzY2FiNjZiMzBmMyBsZWdhY3ktdHJ1bmsKKzYwMDA4IDJjOWJjNjFkNGY3M2YzNzZlMzU4OTVmZmRkNzBmZDkxMWIzMTA2MzAgbGVnYWN5LXRydW5rCis2MDAwOSBjNzg0ZjIwYzk2N2U4NDRiZWRiYjJmZDM3NDFkMjliY2NhZTkyYThkIGxlZ2FjeS10cnVuaworNjAwMTAgYWE1Y2Y2Mzk0NjQxZGMxZDNhMmJmMGQ2Mzc0ZGI2YWM0ZWU4MDViYyBsZWdhY3ktdHJ1bmsKKzYwMDExIDk5MDAwZWEyMWZmMjc4YWJiODk0OWRhZWM3MGE3MTU3NGVjZGRkNzMgbGVnYWN5LXRydW5rCis2MDAxMiBiNDY5ZTkwMjczZWIwNzJkZjdmMDRkZWVlMzJjNDc5MTU5MjlkM2I1IHB5M2sKKzYwMDEzIGQwZjc5NjNjZjhiMDMzNDhjYmNjNDUzMDg2NzIwNTg2NTQwM2EwODQgbGVnYWN5LXRydW5rCis2MDAxNCAyNmI2MWE1ZGYxMWI2MTJkMzExMTY2Mjc0YTcyYWU2MjQ5ZDMxNTlmIHB5M2sKKzYwMDE1IGNiMGRjZDZlM2IxMTQ3ZjNhY2EzYjJlMjcwNWY2YjFiOTBhODg0NjYgbGVnYWN5LXRydW5rCis2MDAxNiAzYjM4NTZiMzYyMWIyMDg5NWRhZTRmMzRhMzIxMmQ1ODgxNWQ4NGFjIHB5M2staW1wb3J0aG9vaworNjAwMTcgZGY3MWZjZGRiNzVlYWIxN2EwNWZlMjYxZTQwMjMzMDJhMmVkNjg5ZCByZWxlYXNlMjUtbWFpbnQKKzYwMDE4IGEzODAyODUzYzMxNzYyNjZjZjdiMjYwZDAwZDJlNDkwOWMxODJkODUgbGVnYWN5LXRydW5rCis2MDAxOSAxNzBjYjI3MzlhMzkwZTI3ODMyMjk0NDYyNWVmMWI5NWI4Y2VjMjJlIGxlZ2FjeS10cnVuaworNjAwMjAgMDc2NmVmZDJhNmQ2M2U2M2EzYjNkZGI1MzNkZGYyY2FhZTg3YTYwMCBsZWdhY3ktdHJ1bmsKKzYwMDIxIGQ4MTZiYzBjNDBiNjc1OTZlMjUzNWUwNDc0NTZhYjVhMTZiN2M3NzYgbGVnYWN5LXRydW5rCis2MDAyMiA3MTcyNjVlZDIwNDFiMzE5N2MyNWU2MWNmNWIyZTE2MjE4ODI1ZThjIGxlZ2FjeS10cnVuaworNjAwMjMgM2I0YmM0YzcwNGMxNGY2OTBiZjQyYTBhZGRmNjVkZmI4NWNlNzQ2ZiBweTNrCis2MDAyNCAyMjJiOTE4Y2UwOTI0Y2VkNmVlN2RiMTljZDNhNGJlNWYwYWMyZTY2IGxlZ2FjeS10cnVuaworNjAwMjUgMjllNGM4NmQ1MDcxYTZjOGU1YmEyODEyMDFlMTgxYjIyMzU5MDdjOSBsZWdhY3ktdHJ1bmsKKzYwMDI2IDA3NmM4YWJiZDU0Zjc4OTlkODIwNDU5NTU2NTJhMGM5MTZhYmVkZWEgbGVnYWN5LXRydW5rCis2MDAyOCA4YjQ5NTQwM2JhMjM1YmRhOGUzZTgzYmIwYWE3MDczY2E0ODQ3ZWQyIGxlZ2FjeS10cnVuaworNjAwMjkgNDI4ZGQ4NTFiYjhhZTgwZmQzYjEzYjIyNzgzOGI0ZDNmYzI1N2RkMSBsZWdhY3ktdHJ1bmsKKzYwMDMwIGJiMzNiMzJkZTNhMGI5MzcyMTU0MjkzZGJiMTk2YzJhNGUwN2I1NGQgbGVnYWN5LXRydW5rCis2MDAzMSA4NWNmMjIwZjE2ZDg1ZWU0MDQ2NjgxOTc0NjMyMmI4ZWQzNTliZTgzIGxlZ2FjeS10cnVuaworNjAwMzMgYTBkZDA5MmJiNmMzNmU3YzZkM2I1OGI0Njk3OTkzNTQ0NzQwNDU5OSBsZWdhY3ktdHJ1bmsKKzYwMDM0IDRkNjFjODg3NjI0ZDM1YmI2Y2M2MzAyMWI3NmIyOTc1ZTkzYmY2MjggbGVnYWN5LXRydW5rCis2MDAzNSAyNmE4NmMyOWFkNjAwYTY4OGU0YTQ5NGM5YTRhZWVkNDgyODZiNGUzIGxlZ2FjeS10cnVuaworNjAwMzYgODQwZTg3ZTE4MzA2OTQwYjgwYzcwNWIzOTJjMzRkODYzZWY1NWU0ZiBsZWdhY3ktdHJ1bmsKKzYwMDM4IGI0MDAzYjZjNmQxMzdlZjk1NGM0NzMzNmRjY2M1Zjk2ZTNmNTNhNzIgbGVnYWN5LXRydW5rCis2MDA0MSBhM2JmMGUyNGI5MWU2OTRlZjk0YzQ4NTY3ZjA5MWZiMzkwNmJkZTQ3IGxlZ2FjeS10cnVuaworNjAwNDIgNzliYWJiNGNjZWM4NTJmZmZkOTNiOTYxMzE3ODZlN2QzNDEwZWM5YyBsZWdhY3ktdHJ1bmsKKzYwMDQzIGJiZjQ4NDU4MTA0MzdkNjZiNjE2ODdmZTczYjc4NzU0Yzg5YjAyYjUgbGVnYWN5LXRydW5rCis2MDA0NCAxNGQ0MTA0OTc2ZmNjN2Q0MWM4Nzk3YjAxMDZhNzA0NWZkNjg4OGE2IHB5M2sKKzYwMDQ4IDI5NDYwMjA1NjBlNzNmOTU5M2M0MDEwZjRmZDk3NjM2MTI4ODFlYjQgbGVnYWN5LXRydW5rCis2MDA0OSBkOTgzM2QyYmY0Njk1ZmZjNjVhNzgyYTljODllMmM3MzYyYTI3ZmY2IGxlZ2FjeS10cnVuaworNjAwNTAgZGJmMDg1Njc3NmRkN2MzYzJiZjlmNmVkN2U0ZjI1NGRlNjcxNTdkMCBsZWdhY3ktdHJ1bmsKKzYwMDUxIDk3YTdjMTI2ZDA0ZWJmNjY1NTEyYTUwMGEzYmU1OGQ4NjViYTY4M2EgbGVnYWN5LXRydW5rCis2MDA1MiA4ZGE5ZWJmNzMwMjY0N2VjYWI1Mzk0OTE0NTcyM2M3ZjRjMzYyOTk4IGxlZ2FjeS10cnVuaworNjAwNTMgNGE2NzY3M2UzNDgxZGMxMDRlNWU2ODdlNWJmM2IzN2NiY2YwMDc2MiBweTNrCis2MDA1NCA1NWRkYjE2NmYxZDFhYTMyYjQxNDBlZmY2MTgwYzBlY2IwMWRiNGQ5IGxlZ2FjeS10cnVuaworNjAwNTUgM2Y0MGFkM2MxM2RkN2VjMmI0Y2ViMjQ3OTE0ZjQ5NjEyZWJkOWEzZiBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDA1NiA3NjVlNTdjMDAxYjFhMTFlYmJmZTMwZTc2MzgzNzJlYTllOTA4MzkzIHJlbGVhc2UyNS1tYWludAorNjAwNTcgNTgzMDNlZDcyYmExYTdiZjEyNWVmNjYwOTY0MjhkNDM3MGM4ZDZmMyBsZWdhY3ktdHJ1bmsKKzYwMDU4IDEzZjc0Yzg1NDRjYzhhOTIxZGU2YjRmYzYzMTY0MDRhYjNjOTkwMmQgbGVnYWN5LXRydW5rCis2MDA1OSBlYjhlZjk2OWVkNjhhNWY3ODZmYTQyOWFlMzQwNzBmZDNhY2EzMmI2IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMDYwIGQ3YTg3YzdmMTRkOWVlOTc2ZjQ1NmU3Zjk5ZWUxMjVmYzczNTE3YTcgcmVsZWFzZTI1LW1haW50Cis2MDA2MyBhNTA3MmJhMzVmMGEwZjNhZDE1Njk0NTEwOGY0NjcyY2Y4YmZjZTdiIGxlZ2FjeS10cnVuaworNjAwNjQgMjE3OTgzM2M5YzlhNTkwOGYzOWMxMDYyMWRkN2RkMjQzMTNlNDc1MSByZWxlYXNlMjUtbWFpbnQKKzYwMDY3IDBiN2I2MmRkNGRjYmQyODNmNzZmMTEyMzVhMjAxZDAyZjE1ODk1NTUgcHkzaworNjAwNjggYzQ3MDliODFhYmRlYjZjN2MxNmNjYjYwYWFhMTk3ZWM3OTVlZDQ0NCBsZWdhY3ktdHJ1bmsKKzYwMDY5IGZlYmRlM2NhZjI5MTI2YzUzYjJjY2Y1MDQ3NzMxNGFmOWMzY2FmMmEgbGVnYWN5LXRydW5rCis2MDA3MCBmMjc5N2UwNzA5ZTM4Y2UxNGRmM2NiNDQ1NGQ5OTNlZmYzOTcyNDY1IGxlZ2FjeS10cnVuaworNjAwNzEgM2Q3MmY1MjA5ZTY3ZDU0OTgyNTNhMTg2NTRlMmM4NzZiNzA5OTYwNyBsZWdhY3ktdHJ1bmsKKzYwMDcyIGY5Nzc1NDM4MzY5YWI2MTE2MWJhYTQ1NTBiZjNmNjZlZjlkZjY1NTYgcHkzay1jdHlwZXMtcGVwMzExOAorNjAwNzMgY2UzMjZhZmRmMDk4OWZjYjYwZDdkMThkODk1YTVhOWIzNjY1YTlmMCBsZWdhY3ktdHJ1bmsKKzYwMDc0IGNjMGEyOTYxMTk1ZWYzODFhY2FkYjUyNTVhZjgxMTRhYTI5MTllZjkgbGVnYWN5LXRydW5rCis2MDA3NSA3M2I1ZTkzOWUwNTgwZGRiZTgxMDUwMWI4OTJhMGJjOWM1Y2QyNWY4IGxlZ2FjeS10cnVuaworNjAwNzYgNTJlODIxNDE4YTc5OWI1MjRhZDgzNTgxMTU5OWE2NTdiNDQwYmIwMyBsZWdhY3ktdHJ1bmsKKzYwMDc3IDhlZGJlMDI1YWVkNTcxMjhmMTM4NzViZTU1NDU4Y2MxNTc5Y2M3ODcgbGVnYWN5LXRydW5rCis2MDA3OCBjN2NiNTgwMDYwNmUyZjZkZTAzYmI5MmJkZWQ3YWViYTExMmQwNDg4IGxlZ2FjeS10cnVuaworNjAwNzkgYTZmOWEyYmE4OTYyYTQ2Mjk0M2I2YTM0MzVkNDQ2MTFlZjE1Yjc0MyBweTNrCis2MDA4MCBjZGU0MWJkMDhlNWUyNGNkOTM4ZDYyMjc1NThkMDQ3ZjVhMGNiOTllIGxlZ2FjeS10cnVuaworNjAwODEgZTNmZGJjODA5OTk5ODA4OGJkMDdhYmU0ZDAyYjEyYzQ3NjQ0ZmM0ZiBsZWdhY3ktdHJ1bmsKKzYwMDgyIDg1OWJmODVhNTU2YTk4YjgyMGIwMDE2ODJkMzhhZmUwNDk1MGMxYTAgbGVnYWN5LXRydW5rCis2MDA4MyAwZmU5MzZiNzcxMTQyMzUxNGFjZTA3OGM1ZTViZmI0NDY3YjA3ZWNhIGxlZ2FjeS10cnVuaworNjAwODQgYWZhMGVmMzc5MTg2NWQxOGNlYjcxMzhkNjM1MTgxZjFiY2UzMmRiYyBsZWdhY3ktdHJ1bmsKKzYwMDg1IGEyNjViYWE3OTEwMDM0M2JhMTViODVkMDU4NzU0M2UzM2RmMmMzNjYgbGVnYWN5LXRydW5rCis2MDA4NiA4MDM2NjYyMWM1MDIyOTgxYjcyM2E4NjhiYTI0YTVlMzMyNjAyMjVmIGxlZ2FjeS10cnVuaworNjAwODcgOWMwYTkxM2FkY2Q0YjhhOTZlNmI5ZjkxY2U5MjU0MjFhNWU4MjJlZiBsZWdhY3ktdHJ1bmsKKzYwMDg4IGU0ZTZmYzljOTc3NWQ4MjAyNDM4MjliMTk0NjM3MWUxZmJmMTVmOGIgbGVnYWN5LXRydW5rCis2MDA4OSA4YjU1MzIxMTYxMTUyYmIwZmMyZmIwMjg0ZmEyMzdiOWRiNTgzYWFlIGxlZ2FjeS10cnVuaworNjAwOTAgMzYyNWVlZDRmMGNkOWJlOGM4M2I1NjhmZjQ3ZTNhMWExZGZhNDA1OCBweTNrCis2MDA5MSA4NzdiNDY3OWI5ZmU2OWI0MDViZTU4M2VkMDhmNjYxMmRjNDYxOGFhIGxlZ2FjeS10cnVuaworNjAwOTIgNjFhMTFjYzk1NjMyZTg0MTUwNWYyZmFlMTMzNWM2Y2Y4MDhiMTk0NiBsZWdhY3ktdHJ1bmsKKzYwMDkzIDE3MDA5ZDYyMTFiODM2YTY2MDE0NmRmMzcwYjM3ZWJmZjUyY2RmZDggbGVnYWN5LXRydW5rCis2MDA5NCBjYTI2ODNhNjc5NDMxM2EzZmVjMTc1ZDc0MDU4N2M1MzczOWUyMzhjIHB5M2sKKzYwMDk1IDRhN2FmZmY1MmVhNzFmNDg3YTIxZWQxOTY4NWJhYWE5N2NiY2QxZWUgbGVnYWN5LXRydW5rCis2MDA5NiBiMzEwMjAwNmRkN2VjOWZjZWNlMzgyMjhlZjEyN2Q3YzEwZGFhNzM5IHJlbGVhc2UyNS1tYWludAorNjAwOTcgYjUyMGQzM2JlZTA2MTU0Zjk3YzVhZWVmMmUwNzc5NmE3NWRkOThlNiBsZWdhY3ktdHJ1bmsKKzYwMDk4IDRhYzQ4NDI0OWJkMWUxZmRjNjIxMWI2MTZiMWM2Y2Y5MWFmMGFhZjUgcmVsZWFzZTI1LW1haW50Cis2MDA5OSA0ZjM1MTE4ZWVkM2I4ZjIxNjI1YzdmYjUwM2Q2Y2M1ZTc2NDUyYzc3IGxlZ2FjeS10cnVuaworNjAxMDAgODhmOGYxNTJhMGIzMzJjMmQwYjkxNDdkMDIxOTFiYWY4YTVhNDU1NCBweTNrCis2MDEwMSAzYzljY2MzMmRhOWFmZTY0NDk3MGE3N2ZmYjQ4YTNiZGJlMTFiZmQzIGxlZ2FjeS10cnVuaworNjAxMDIgMjEwMzIzZTJhOTI3MjZkNGJjYmU1M2JjNmZiZTE5NzJkN2IxNGQ0NCBsZWdhY3ktdHJ1bmsKKzYwMTAzIDE1NTM2ODY1MTk4YWIyMTk2NTBjNTBiOTg3ZGY3ODYxZDI3NzA5YjYgbGVnYWN5LXRydW5rCis2MDEwNCBiNGQwM2E5MmJkZGY5Y2JjYjdjYzA1Y2Q3Mjc2MTg0MzQwY2YxNjViIGxlZ2FjeS10cnVuaworNjAxMDUgM2QxMzFjODM4ZjA5YjhhMzAxMWU0MzA4ZGM5M2JlMmI0Y2JiMWQ3NyBsZWdhY3ktdHJ1bmsKKzYwMTA2IGQ4YzEzZWNiNmU4NTlmZWU2ZGMxOWRmOGZkNGNiZjMxZTBhZGFkOTEgbGVnYWN5LXRydW5rCis2MDEwNyBiZGE0OWViNDYwNzQ5Zjg0MzA3OTVmMjRlZjJmZDZjM2FmMzg2ZTQ3IHJlbGVhc2UyNS1tYWludAorNjAxMDggMTdmODQ1MzMyNzc4NDE1NDVhZmMxNzQ5YmY4OWExM2VlMjM2OTEzNSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDEwOSAxM2RjNjVmZTg1OTlmMDhhOGQ0YWU1ZGY0NTYwMGVjZTdmMDcyMzZiIGxlZ2FjeS10cnVuaworNjAxMTAgZWMwMmRiZTZiMDUxMDFiNjEzYWFlNTM2ZTExMDQ1NmIxMTlhNTQ0ZSBsZWdhY3ktdHJ1bmsKKzYwMTExIDVlNjYwMzBmMWE2N2E0Njk1NDg0NzViYjhmMGEwOGY4ODA2MjE0MmMgbGVnYWN5LXRydW5rCis2MDExMiBhYzJlYTk1NTIyOTMwYjJjMjFjNmRiZGVlODZlNzc3MTQxNzJjZWYzIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMTEzIDBhY2U3NDc2NzQ3OGNmNjdlNmIwNzQyZWQxZjkwNGEwY2M1MzM3OWMgcmVsZWFzZTI1LW1haW50Cis2MDExNCA0Nzk2NTg4ZDlmOWFjYjc1MTM3NTI2NzczMzZjM2NmNmJhMjdlYzhiIHJlbGVhc2UyNC1tYWludAorNjAxMTUgYzIzODkyZjVhNjlmMTZmODFiMTFkZjdjODBiMDBjNmQ2Zjk5NTYzNiBsZWdhY3ktdHJ1bmsKKzYwMTE2IDExNDgzYTY3M2E0NWVlZDRjYjQ0MjU1MjVkMGRjY2NkZDlmNzNmMWYgbGVnYWN5LXRydW5rCis2MDExNyA2OGY1Y2M5NWI3MGE1ZTZmOWMwNDljOWE4MTZhNGMzZDE5ZGY2YTRjIHJlbGVhc2UyNS1tYWludAorNjAxMTggNzY0NzE1MmY3NDI0NWI3ZWU1Mjk5YjFkODg4NmNlZTc5YTI0NDUyNyByZWxlYXNlMjUtbWFpbnQKKzYwMTE5IDFlNTYxNDU2N2E2ZWQ5NjljZjk0Mjc3NDViZWRiODdiMDJjOTk3M2QgbGVnYWN5LXRydW5rCis2MDEyMCA4MTZhN2JkYmY2OWU4ZmMxOGM4OWY4Zjk3ZTBlNmIxYjQ4NDZjZjRjIGxlZ2FjeS10cnVuaworNjAxMjEgMTEyMGIzZDYwNmYyOGMxYzVhZDkwNTJkNDY0ODRhNTM4Nzk1NDYzMCBsZWdhY3ktdHJ1bmsKKzYwMTIyIDZkNDNmY2NkYTkwYzNhMTQyY2I0ZTAyMWVlM2MwMWNkYWIwMGVkNjYgbGVnYWN5LXRydW5rCis2MDEyMyAzZTBmNGE0YjlmNTVhZTYxMjI0YTdlMjI1YmI1NWU2OTgxZWU4ZDc2IGxlZ2FjeS10cnVuaworNjAxMjQgZmE2Y2VlMTRkY2JhNDhkMGFiZDVkMDFiNGQ5MDc5MTg5N2I4MDBjMCBweTNrCis2MDEyNSA1NTM0OWQ0ZDlmODMzOWU1MGM1ZWQ2ODljZTgzNWZiZmRiYzg0N2RhIHB5M2sKKzYwMTI2IDFlOGI5ZTdjMzRjZWM1NWQwNjE3YWRiM2RmMDEyMTQwZTNhYzgyOTIgcHkzaworNjAxMjggMDJhMjEyMGU1ZGIyM2I1ZmI0ZDRkNDZmM2Y5MDFmOTVmODQzNjhmMSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDEyOSA5NDFjZjJiZjIwMGU0MzkyYTNmOGJkODZmMzZmNjUxOTViYTVlMGUwIHB5M2sKKzYwMTMwIGI5OWY5Mjk1ZmQ5Y2Y4ODZkZWViY2RjNjQ2YjI5NTQ4NjZhOTc1YWEgcHkzaworNjAxMzEgOTQyZTRiNDJkYTE0ZDU2ODVjZTJhNjdkZDczYjNmNWExN2QxOTFiNSBsZWdhY3ktdHJ1bmsKKzYwMTMyIDE1MGNiNDhlZGIwN2UxYmE4NjEwZGZjM2MxMDAyMjc2OGM2ZWVkMTYgcHkzaworNjAxMzMgM2YzNGQzYjAzNTBkMTM1YjlkNjFmY2VmNTA0YzU2YTM1MGFlOWZjOSBsZWdhY3ktdHJ1bmsKKzYwMTM0IGUzNjQ2OWU2ZDhiNjc4MDljNzM0YmFiYmYxODFhODljMmFlYzdiYjUgbGVnYWN5LXRydW5rCis2MDEzNSBhYmNiNzkyM2Q4OThmZGEzZGVkMmI1YzYxMzQ1NDM3N2M3MjY3ZDFjIGxlZ2FjeS10cnVuaworNjAxMzYgMTQ1YjNlNjA1Mzc4NDM1MjY2ZTU0M2EwMDQwOGY4YzI1ZDk2ZjU2OSBsZWdhY3ktdHJ1bmsKKzYwMTM3IGIyOGZkZWYyZjBkNzFiMThkNjg0NDdkZmRiMjdiYTk5MjliZDA4MjggbGVnYWN5LXRydW5rCis2MDEzOCA0MjRjY2NmZDJiYWFhNzIxOGE5Y2I0ZGFmMzliZDIwOGU2NThiM2M0IGxlZ2FjeS10cnVuaworNjAxMzkgZWFjYTIzNjdlY2M5OTI3OGIyMDk2NjVhYjYxYWRkMDg5NDFhMjQ1MyBsZWdhY3ktdHJ1bmsKKzYwMTQwIDg0ZjFhNjU4YjIzMTkyMzcwNWNlOTI4OTliMDBjNTA3YTYyNzViYTYgbGVnYWN5LXRydW5rCis2MDE0MSBlZjg1OWNkNzU0YTc2ZmE3N2UwODRhODU4ZTM0YzJlOGY1MmEwNjNiIGxlZ2FjeS10cnVuaworNjAxNDIgZWEzODlhMjY4YjU0NDk4MDcyN2NlMzg1OTdkMzRmYTk4ZjhiOTliNCBsZWdhY3ktdHJ1bmsKKzYwMTQzIGVhYjAwZGI4MGMyNzk1OWYwMjJmNGFkOWM2ZDBmMzg0Y2RkNzNiMTQgbGVnYWN5LXRydW5rCis2MDE0NCBlZjdkNzJkOTg0ODViZjQxNGE4NjIxNjdiMGVmMjc1OGJmOWUxMzJjIHB5M2sKKzYwMTQ1IGFjOTcwZjg4MzE4NzU2Y2UyYWRiZDZiZDZiYTNjOTBiNmE2YjY0NmEgbGVnYWN5LXRydW5rCis2MDE0NiAwZjA3MmVkYjMzNDM3MzI2MTc5NDVjNzViZDAzZTk1ZTk2ZjllZTYxIGxlZ2FjeS10cnVuaworNjAxNDcgYzNiZjhmOWJlYWE3MjcxMjllNGUwN2U3NjNjMTY3OWU1YjQ5Y2VkMSBsZWdhY3ktdHJ1bmsKKzYwMTQ4IGViMmVhZmRhMjliNzZkZDliMWIyZWRiNjI3NzRmZjU5NGU4MWFmYzMgbGVnYWN5LXRydW5rCis2MDE0OSA4OWIxM2I2OTM4NjQ1NDA2NWYwNWI2NmU2NWE4OTQ2NjgxMDMxMDVmIGxlZ2FjeS10cnVuaworNjAxNTAgZWQzM2RhMmU3NGU3MGUzZTE0ZmE5OWZjZjg4MDI5NzRlMmQ2MzU0MSBweTNrCis2MDE1MSA5NDExYjFiOTEyMTgxMmI3YmVmNmU3ODgzYjkzNWI0NGVlMTIyOTUwIGxlZ2FjeS10cnVuaworNjAxNTIgZmFiYzY4OGEwOGM2OGZmYmI1ZDE2YTUzNDRmZDA5NmViNjMwMWZkNyBsZWdhY3ktdHJ1bmsKKzYwMTUzIGFkNmE5ZGIxZmY0NWM1NDI3OTJhYTNiZDk1MGJjNmU1YThiM2E0NjMgbGVnYWN5LXRydW5rCis2MDE1NCBmNmQ0YTJjNDk1MzE1MGU4YzYzYzBlODAyZWIyNGI0OWNkN2RmZGE2IGxlZ2FjeS10cnVuaworNjAxNTUgOGYxNWY4ZGU0MjE4NWFhYzRhYTFkZmFlYTkyYTQwZGY1YzE4NGZmMyBsZWdhY3ktdHJ1bmsKKzYwMTU2IDhhYmQzNmYzYWI3YTNhZGM4MjlmOTQ1NzE4OGRiNGU3ODUyMzk2MjcgbGVnYWN5LXRydW5rCis2MDE1NyAwYWU1OWY2MDhiNDRmOWMxMWU4YzAzNjEwZWNmZWI2NTYzZDUxZWM4IGxlZ2FjeS10cnVuaworNjAxNTggMTk5MGZhNmI5ZTgyODdkODEyYTcwYWQ4YzE5ZjY1NzQwNjE0M2MxZCBsZWdhY3ktdHJ1bmsKKzYwMTU5IDc5ZjE1MDUzNzUxZWQ4NzZkYzI2NGI0OGY4NTNkZWI5YTYwNjJjNjMgbGVnYWN5LXRydW5rCis2MDE2MCBkZmZmMDQxNzUzYWExOGUwNjA1OTQ2NzhmMDQ1ODEyYTRmOGM2NmUxIHJlbGVhc2UyNS1tYWludAorNjAxNjEgMjdkYWMxNjU0MWQ5MDkwODY0MjQyZTQ1ZDA1NTE3YzY2Y2UxZDA5ZSBsZWdhY3ktdHJ1bmsKKzYwMTYyIGQ5NjIxNDA1NDA2YmRlZDU1OTRmZmI5NmE3M2IyYjRkZjBlMzk4NmEgbGVnYWN5LXRydW5rCis2MDE2MyBhNmIxOTBiMGNmMDY4ZTdkMjRjYzczZGRiMTczODVlOTdjOWI4MGIxIGxlZ2FjeS10cnVuaworNjAxNjQgNDMyYzRhZTBmZDA0NmZlOTNmNDUzYTExMTk4YWMwMzFiZTg5M2ZlOCBsZWdhY3ktdHJ1bmsKKzYwMTY1IDMyNDEyZmNlYjFiMzRhZDYzNDJhZjcxMTVkZmU1MWJmNWYwYjQ2YWYgbGVnYWN5LXRydW5rCis2MDE2NiA3Mjk0OTVmN2IyMjFhNDVlMDhlZTg2ZDExMTI2NDRlMmJlYWYyN2QzIGxlZ2FjeS10cnVuaworNjAxNjcgYzY5YTdiNTVhZDZiZmZhNTlmZGYxNzJkNmQ1ZjlhODhlZjcwMzlmNSBsZWdhY3ktdHJ1bmsKKzYwMTY4IDhhOWIzYjBiZTU3MzlhYWU5NjJkODJkNTBjMjAzZmNmY2NhYzAwZmYgbGVnYWN5LXRydW5rCis2MDE2OSAxYmU0YmJkODM0YTE0Y2QyZmFiNWEwNjBkYzYzMTFiNDEyMzNkMDkyIHJlbGVhc2UyNS1tYWludAorNjAxNzAgN2M1NGY0YTJkNDM4NGVjZGEyMjRmZDFlMDMxMTBlNTJkZGM2ZTc2OSBsZWdhY3ktdHJ1bmsKKzYwMTcxIDBiNDFhOTFjZDI2MWEzNTI3YjhmOGUxZjU0MTJkNWVhMDY2NTNiY2IgcmVsZWFzZTI1LW1haW50Cis2MDE3MiBkZjIyZTYxODBlNjdhYzkzNTg4YmY2NGE4MTVhNTQzN2MzZjYyMmM1IGxlZ2FjeS10cnVuaworNjAxNzMgMjk2NDNmYmUxMTUwNzA2YTQ5MmEzY2E5ZTg2YjU3MDA1MDgxOWQ3YiBsZWdhY3ktdHJ1bmsKKzYwMTc1IGI3NmM3OGNkYTNhYmZlMWQ3Mjc1YjBiYzdjYTRlNmUyMjIyNDE3ZTcgbGVnYWN5LXRydW5rCis2MDE3NiBmZWJhNWQ1Y2FjMjIxZjBiZDkxM2ZkOTZlZDMyODUyNTc5NjVhMjI0IHB5M2sKKzYwMTc4IGMzZDllNTdlNzFmMmMyMzQwMTkzZDYyZDBiNWE1YTA0ODU4M2RjY2UgbGVnYWN5LXRydW5rCis2MDE3OSA1YmVhNDU5MmNkN2ExYjcwZTA3ZDg5NWQ4ZDhjMGEyM2Y2ODRlNDUxIGxlZ2FjeS10cnVuaworNjAxODAgMTAxZDg2YTFhZjg1ODhmZGI0YWE0Njg4MWZkMTM3YjJjM2VkMmE2MyBsZWdhY3ktdHJ1bmsKKzYwMTgxIGViNGI1MGY3MzlmNmUxYTVkOWE0ZWQ0MmE4ZjA2NGFmNmEzOGJhZmIgbGVnYWN5LXRydW5rCis2MDE4MiAzMTA3ZmRiOTA4MWU1ODRlZTY3YjVhNWExZjhmOWFmZDkzNTNjNTBjIGxlZ2FjeS10cnVuaworNjAxODMgODEwM2YwMTk4OTY3Yzk2NTM3NjgxM2RiMTM4NmE2ZmM4ZjE2ZjU0ZCByZWxlYXNlMjUtbWFpbnQKKzYwMTg2IDcxMWFlMGU5OWMwMjdkNWU3Zjg1ZDJkOWYzOGI3MWY1OGUzMjg4YTcgcmVsZWFzZTI1LW1haW50Cis2MDE4NyBlYTYxZTllZGQ5Nzk5YjhhNTYzZGI5ZGViOTg5NmZjODlkZDdlZjUzIGxlZ2FjeS10cnVuaworNjAxODggN2YyYjUyNWY5ZGY0OGM3ZTgwNzUzZTkyMjExODA4MDliNmIxYmJjZSBsZWdhY3ktdHJ1bmsKKzYwMTg5IGI1ZTgwOWY5MjZkZTE4N2VjMWZhODQ5OTllNTFjZjY0OWU5ZjhiNDEgbGVnYWN5LXRydW5rCis2MDE5MCBmZTdkNDIzNDc0ZGVhZDliNmQzMmY3OTVlYTY4ZjliNWZjZWZiYTczIGxlZ2FjeS10cnVuaworNjAxOTEgZmZhY2I0NDY3M2VhYjc2ZDkzYTliMzJlOGQ0YWMyODY0ZWViMjAxNiByZWxlYXNlMjUtbWFpbnQKKzYwMTkzIDEyYjY5MTAxMTVlMGZmMjg3NGU5ZDkwMGI3NDc2MjU2YWZmYzRlM2YgbGVnYWN5LXRydW5rCis2MDE5NCA5ZDhjODc3ODg5YzNhZDBiNWZhZDM4ZjhlNDYwYTYxNmIxZDdjNmI0IHJlbGVhc2UyNS1tYWludAorNjAxOTUgMDBhNjg1OTZlNTA2NTBkNDFkODM0M2UwNzJlOWY3MDRlMmQyZmRkMSB0cnVuay1tYXRoCis2MDE5NiBlMDUwNGExYzVmOWQ3MmQ3MTQ0YjJiNTdmNDk3ZGI3YTU1NmFiMmRiIHRydW5rLW1hdGgKKzYwMTk3IGU0M2MyYWI2YTU3Yzc2OTVlODhhNzRiNTk1NzA1MTcxZWMxYTMwYjMgdHJ1bmstbWF0aAorNjAxOTggMDkxODA2MzgxY2Y4ZDZjMTUxMmJiODA4YTdhZDA1MDQ4ZmFiYzYyNiBsZWdhY3ktdHJ1bmsKKzYwMTk5IGMzY2U1NmM3ZWNkMTFiYWQxNTVlN2MyYWE5MzA1M2Y3ZjQxMWY5Y2EgbGVnYWN5LXRydW5rCis2MDIwMSA3Y2EwN2ZlMDI5NThkMTM4YjU3MzEwMzdmYmE3OWI5MGIzMTkyOTYwIGxlZ2FjeS10cnVuaworNjAyMDIgYmI3ZWUzZDg5YzJmNjA3NjgzOTA0YTU1M2UzZDljYmQ4Y2JiNWY4ZiBsZWdhY3ktdHJ1bmsKKzYwMjAzIDU2ZjBmYmFlYjY3ZmRmYzhlNGI2NzBhMTdjMTRmMWI4YzAxNGZiYmEgbGVnYWN5LXRydW5rCis2MDIwNCA4NjdjMGFhZDc5YzE2YTcxZWViMTU3MjJmNzBhZDU2YTI0NzZhNDA5IGxlZ2FjeS10cnVuaworNjAyMDUgYzNlZDZkYTdhMTQ2ODQ2YzAzY2NhNWY1ODczMzQ5NWZiODFkYWFlNSBsZWdhY3ktdHJ1bmsKKzYwMjA2IDUyOThhYmJkZDkxY2NlYzY4MzY3YzY2YjRhZmU3YmMwODA0ODA0OTQgcHkzaworNjAyMDcgNmJkNDg0OWI1NDU4ZGU1NTAwZDMwNTJhZDRiZjlmNGYwMzgxMjI2NiBsZWdhY3ktdHJ1bmsKKzYwMjA4IGRmODBjNmI2MDZhNDg2Y2U1MGQ5ODZmNjY3NGE3MTdiYThkODgyZDkgbGVnYWN5LXRydW5rCis2MDIwOSBkNjJjMTI2ZmU1NmEyZDY0MzE3YjY3NTMwOWYyZDNhY2U3MDhmMmVlIHJlbGVhc2UyNS1tYWludAorNjAyMTAgZmVmYWEwZTY2ZmRkMGUzNTEyMTNmYmFiMDkyOTE0MWVlOGIxODhkNyBweTNrCis2MDIxMSBlYjU5MTAwOTJmNTliYmI3NWRiNmYzODExNTQxMWNiYWYzY2I4ZWIxIHRydW5rLW1hdGgKKzYwMjEyIGM0Yjk4YmMxMGJlN2UxMTYwZTUxYjk2NmRjOTlmOGUwZTYxZTI2YzUgdHJ1bmstbWF0aAorNjAyMTMgMmUxNTEzNzY5NDFmOGI1YmI2OTY1YmJiODc0NWRmOTY4Yzc2ZTZlNiBsZWdhY3ktdHJ1bmsKKzYwMjE0IGRmZDIxNzkzYTViNTc1MTE2OWVmZTg2YzIwZGJlOWNhOGNlMjE2YTkgbGVnYWN5LXRydW5rCis2MDIxNSBkZmI2ZjM2N2E0MDZiYmFlOWU0ZThmNjY2OTQzMDYwNmJlMGI1NGM0IHJlbGVhc2UyNS1tYWludAorNjAyMTYgOWExMjExYzc3ZTAyOGIzYWJjYjM4MzBhOGJkMjJkNWZiZDIwYmU4NSBsZWdhY3ktdHJ1bmsKKzYwMjE3IDY5NTgyYmIxMTE0YzM2YmRmZTQzNDMyMTY3MzcxZmNjYzYzNDgzNjMgdHJ1bmstbWF0aAorNjAyMTggYTQwMjI5YWRmYTJjY2Q4ZDUzMTU5N2I4ODlkOGRiMTYwYWZmN2I1ZiB0cnVuay1tYXRoCis2MDIxOSBiMjg1NGU5NzRjYTk2NzBmNjBiY2RhMWRhMGE4ZjZiNmExZDAyMzM4IHRydW5rLW1hdGgKKzYwMjIwIGJjY2M3NjgyYzZkNGJhNGE1MmQyZDY0ZGZhOTBkZDI3ZmYxN2JiYWMgcHkzaworNjAyMjEgMDA1OTIxZmNmZjQzYWRiYzg5M2JjZTc3Nzc1ZjZjYjI1ZGNkZGQxNyBsZWdhY3ktdHJ1bmsKKzYwMjIyIDE0OGM4N2E2NjdjMjAxZDA2ZjFiNzkyMjJmMDYxNjE3ZDU5ZDFhNmYgcmVsZWFzZTI1LW1haW50Cis2MDIyMyBmZGQ3NGJkZWVlMTViZDQ3YzM3NzliYzg1OTVjZDRjOWVmYzU3NmQ0IHJlbGVhc2UyNS1tYWludAorNjAyMjQgNGM4MzA4YWMyMGNkZDlkZGMzMWFmYjFkZDliZTI3MzJmNjBjYjhkNyBsZWdhY3ktdHJ1bmsKKzYwMjI1IGI5MzRkMmVlNjNmNjM5YmRjNWJjYjllNjE2MmU2NmZlNzllOWNjMGMgbGVnYWN5LXRydW5rCis2MDIyNiA3MzMzMzViMjJmOGZkNzhhMzBmYTI0YjUzNzhjOTY2ZGQyMzA3ZGJjIGxlZ2FjeS10cnVuaworNjAyMjcgZDlhNjA3NTI1NThlZjdkODRkMjkyNDBlMTIwZTk5MTE0Mzk1NDY3NyBsZWdhY3ktdHJ1bmsKKzYwMjI4IDk1YTQ4NzM1MTc0MDgwYWU1NzgyMjdhNWY3MDA3ZTQ2YThhNjA5ZmQgbGVnYWN5LXRydW5rCis2MDIyOSBjZGM0YWVjZWRkNGM4NWNlZjY4NGUwMWUyODFkZWIzYWUwNGNmZmQ1IGxlZ2FjeS10cnVuaworNjAyMzAgY2M3M2E4ZDE5MzhiNDJlYzRiOWZlNzFkZDJkZDBhNThmOWIzMjIwZCBsZWdhY3ktdHJ1bmsKKzYwMjMxIDAxMmY1MTZkNGQyMmYzOGViZTAyOWUzOWVlMjE2MDUxOGU4NjZkMWQgbGVnYWN5LXRydW5rCis2MDIzMiBmZWQ4YzM2ZDg3MTUwYzM3MDEyZDNjZTMwMjQyNTBjY2Y5YWE5ZjJjIGxlZ2FjeS10cnVuaworNjAyMzMgMjJhOWQ5NzU3YTE2OTdiNzkyM2NlMzc5ODUzYTE4MDk0MzE4OTI1OSBsZWdhY3ktdHJ1bmsKKzYwMjM0IDA2M2VkMzc3ZmQzZDYyZjRmMTM1NzE0MGFjMDA2MTQzYWU3NWRmYjYgbGVnYWN5LXRydW5rCis2MDIzNSBjMGYwNDgzNTZjMzZjODkwMmUxYTI4NjJmZDU1NjM5Y2M0OGQ0YjQwIHB5M2sKKzYwMjM2IGUyMmE5MmVlYzY2MjAwNjc3NWNiY2Y5YWNlNjkyMGRmODU0ODIzM2IgcHkzaworNjAyMzcgZjNhOWFkNDQ4Y2NhZDE5ZWIzNzI1ZjBkOTJhMjc0NDE1ZjU2ZDM1NiBsZWdhY3ktdHJ1bmsKKzYwMjM4IDQzNzE3MjA5M2EyM2EyNDIxMDZhMzA4YWIzYWFhZmQzZGQ1N2RiODUgbGVnYWN5LXRydW5rCis2MDIzOSBjYmEzMDg0YjI3ZTcyNjkwNjQ5NDNjN2FkMmM5NzdjYzQ1ZWUxYjhhIGxlZ2FjeS10cnVuaworNjAyNDAgOTk5YTVlZTljZDJjM2ExZjc1MTAxNTlmNTQ5ZmUyY2I4NmU3OGMxZSBsZWdhY3ktdHJ1bmsKKzYwMjQxIDk0OGJiYTBlMjQ3Yjg5NTkyOWFjMmNkYTViM2RjM2IyYTQyYmU1M2QgcmVsZWFzZTI1LW1haW50Cis2MDI0MiBkOGFiMzI4MjBiMTdkYjViYWMxNjYxMWU2NGFkY2M3YTVlYmI3YmQyIHJlbGVhc2UyNS1tYWludAorNjAyNDMgZjJkYTdmY2YzYTI0NGEyMDkwZGZjOTM0OThhZGEzNGRkZGNmNWQ5MiBsZWdhY3ktdHJ1bmsKKzYwMjQ0IDdmYTNhZTliYTAzMWRhZjY4OWEyNjJhNDQ5MjA1ZTA5NjAxOWI1MTYgdHJ1bmstbWF0aAorNjAyNDUgYzMzZjI3NzlhOTM4NjA0YzI5MWZjY2MzMTAyNGQyMGIyMGM1NTEyYSBweTNrCis2MDI0NiBlYmJiN2JiMDAzM2JjMzRjODdkMjZjMjdhODVmMGJmNTg4ZjQyOTM0IGxlZ2FjeS10cnVuaworNjAyNDcgZGI2MjRiMWJhMDZkZTliNWM4OTdhZjU2MjAzNGI1NDk4ZTU2NjFjZCByZWxlYXNlMjUtbWFpbnQKKzYwMjQ4IDI5ZmY5MDY2ZGQwYzgzZGRmNDUwYjdiNGYwNjI2ZTBhY2Q3NGRhZjEgbGVnYWN5LXRydW5rCis2MDI0OSA2ODVlOTZkMjA4ODFiYWQ2ZGIzNDRlNWExNGYwMTQ3MDY2Y2VhOGU1IGxlZ2FjeS10cnVuaworNjAyNTAgOGJkNWYwZGI3ZjVkMTA3MGEyZDRjMDA0YzA0OGJkMTQ2MDc3YmU5OSBsZWdhY3ktdHJ1bmsKKzYwMjUxIGE4Yjc1MDIxMGI3OTkwOTFlOGIzMjgwMzBiNjkxNmE2YTI0ZDI4ODUgcmVsZWFzZTI1LW1haW50Cis2MDI1MiA2ZWYzYmU0N2E0NGU3ZTQ2YzFmYTFmMGNmMzJjN2YwMTgzYjI3MmRjIGxlZ2FjeS10cnVuaworNjAyNTMgZDE2ZGU2MjUyZjdmYTQzOGVmNGY2NGFmNzhmM2RiNWY4NDcxZjJiYiBsZWdhY3ktdHJ1bmsKKzYwMjU0IGU4ZWZhNjJlZWMxNTdkMGYyNWQ4N2ZiYjU2ZWRkMTMzNmJjYmFhZjYgbGVnYWN5LXRydW5rCis2MDI1NSBhOGM3NDEyNTM3NmQ2NTE5NDQ2ZjU5NDcxMmVkYTQ1MTM3MDE3ZTU2IGxlZ2FjeS10cnVuaworNjAyNTYgZjRhNmMzMjM1MDBiZWUwNTUyMDZkYTAxM2ZkYTY1MWYyY2VlMWVkOCBsZWdhY3ktdHJ1bmsKKzYwMjYxIGE2ZjBlNGJmYzJkZDcwZmViNDJiOGM4YjI1ZjAxYTA4NzlkNTkyMzMgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyNjIgN2UzYWZlOTA2NDQ5NWIyYjBmZWI4YWE1ZTRlNWE3Y2YyMzJmMDJjMSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI2MyAzZjYxYjY2NDNiN2VlYTFkZGE1N2E3Nzc1MzdkMzVhNjNmMWFmMjZmIGxlZ2FjeS10cnVuaworNjAyNjQgNzU3YTdmMzFlNDYwOTJjMDhjNDZkZGQ4NzA0MjY4ZjA3NGUyYmVkZiBsZWdhY3ktdHJ1bmsKKzYwMjY1IDY5YzU3MDNkMjBmYjQxMDkzNGExZTMwZDljYjYzZmViYzNkYTYwMjUgbGVnYWN5LXRydW5rCis2MDI2NiBlYmRiZThkZjYyYjAzOTg1MzRlOTM1NTFjYjU4NzEwYWY2N2U1N2FlIGxlZ2FjeS10cnVuaworNjAyNjcgNDI2OGI3N2Y4ZTU2N2QwYzAzNmIzMzU4NTBmNDQwMTE4NDY0NmZiZiBweTNrCis2MDI2OCA3NDJhMjY0Y2NlNGZhYjM3ODJmNzExMzg5ODk3MDRkYjg3N2ZkZTA5IHJlbGVhc2UyNS1tYWludAorNjAyNjkgY2UxNTlkMDFlZTMyMmE3NzFhYzczNTZmYzEzMTBlMGJkNDc0NGIyYyBsZWdhY3ktdHJ1bmsKKzYwMjcwIDZkYTBlZWEzNjc4M2E5MzA4OTFlM2JhYzc4YjE0NGVmZDQ0NGI5ZmUgbGVnYWN5LXRydW5rCis2MDI3MSAzYmQxOWM4YWYyYjExZDFmMTNjZDEwNTA1M2YyMGRiZjZlYjQyODFjIGxlZ2FjeS10cnVuaworNjAyNzIgZmFlNTQ1OTFjMDM1NjU4NjExNzU2NmZjMjY2MTRlNzJlNjJlYTU1ZSBsZWdhY3ktdHJ1bmsKKzYwMjczIDg0NDIwMzIwOWZiMDZlY2JlODUzNGFlNTlhYzJhYzFiODE1NDBjZGQgbGVnYWN5LXRydW5rCis2MDI3NCA1NDU1OGUwMjljMmRhNDIwYzVjYTZmMmQxY2ZiY2Q5Y2RjMDIxM2UyIGxlZ2FjeS10cnVuaworNjAyNzUgOTM0YTU5ZDUyNTQzMTRkMzczZmRjYzNjYTI4OWM2N2I3ZWYxODYxMSByZWxlYXNlMjUtbWFpbnQKKzYwMjc2IDk5NzJjY2NmNmEzM2Y0NDlhNTk4OTI1ZDc3ODMzN2I3MTI1YTM4NGIgbGVnYWN5LXRydW5rCis2MDI3NyAxMjA5OTE0MzcyNGYzNGNjY2Q5YTYyYWYwY2Y4YTIxNWIxZGZiMWY0IGxlZ2FjeS10cnVuaworNjAyNzggMDhlYjFjNDExMTEzOTFkYmIxY2RmMWY2M2UzYmY3N2YxYzhhMTU4YSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI3OSA1M2U3YmNmYjU0YTQ1ZjVmZDFjYjE2ZTI1M2FmNDM1YzI3YmViYTMyIHB5M2sKKzYwMjgwIGFhODM4OTU4ZTU0YWIxMzg4ZTRkOWNkODczOTk2NzQ4NTIzY2QxNGEgcHkzaworNjAyODEgNjU0N2JlMTFmNDQzODVmYzgwZjMwZjlmMzE3YzJjNjY3NDRlNDU3OCBweTNrCis2MDI4MiA4YmNhOGViMzZlMzdmNTE4OWQwOTUzNzFiZTdlYWZkZDkzMTJmMWE4IHB5M2sKKzYwMjgzIGJiYzcxOWE4YjU4YmY2ZDljNGI3YTFmZTMzZGNhMDU4MGNlNGNjMDkgbGVnYWN5LXRydW5rCis2MDI4NCAwNWYwMWRkNzU4YTFiZGZmZDlmYzMwN2E4OWM0NjQ5ZWI1OWI2MzcyIHB5M2sKKzYwMjg1IDNhNDQyYTAwOWE4M2U1ODY4NjhkNDZhMGI5YzA5MGU5M2ZjMzk3NzggcHkzay1jdHlwZXMtcGVwMzExOAorNjAyODYgOGU0MzViZGQ0YmM4OTY2YWEzOWFlZWQxOWEwNjc0YjY1ZTAwNzgzOSBsZWdhY3ktdHJ1bmsKKzYwMjg3IDFiZTkzZGQxNzlkZjdhOTAyYzQ5YjQ2YzQzOGE5MTY0NGU1ODQ1NTIgbGVnYWN5LXRydW5rCis2MDI4OCBkY2NlYWVmYTY3ZmQ4ZTU4MmU1Y2UxNGU5NmFkZDQxMDVlZTA1ZDBlIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjg5IDI3ZDIyN2E4N2E3MzdiYmQxMTJmNWVmOThmMWFmNDNjMTU4YWEwZWIgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyOTAgZWY0MmJkN2ZjYmM4M2UzOTAyZDgzYTFkMGQwMGU0YmNjZWM3NTIxOCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5MSBkZGIxZTQ5OWEwMWY4MTYzZGUxMzNhZWY5NzcyNmI5ODhlMGM4MmJhIGxlZ2FjeS10cnVuaworNjAyOTIgM2M1N2E1MWY3Mzk0Zjg3NTMyOGQzOTcwZTA5MzQ5OTM2NzE1ZTJiOCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5MyBkOGU4ODM1OGY2YzI0MDgyOGI5NmNjNmMzMjUxMzg2MTY2YjBmNjllIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjk0IDQyNDQ5ZjY4Mjg4NWJhMDZlZjdmNWEwZmQzY2NiZDg2OTVkNGQ4MjcgcmVsZWFzZTI1LW1haW50Cis2MDI5NSA1OTUwZDhkZTgxMzRiNTQ5ZWY4MmFhNjkxMWUzMGY3OWRjMzlkZDBjIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjk2IGI1NDc0NmUyYTg4MGJkMzU4YWJkZDQwOTQ1ZjQ1Zjc0OTY1MzMzMGYgbGVnYWN5LXRydW5rCis2MDI5NyA5NDY3ZWEyMDA0NmMzMWQ4Y2Q3Yjc1MDVlMTQxYTQwYTg0NTA1MDkxIHJlbGVhc2UyNS1tYWludAorNjAyOTggMWY0YjFiYWJiOWUwN2IxYzNkYTVmZTdiMjI2NmEyNGFmMDgwNjg1ZSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5OSBlYTFkNDdjN2E0Njc0N2IxNWEzYzA2NzU5Y2FlZDU3YjYyMDkxZmZmIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMzAwIDg5MTA1MGE2YTVjOTAxNzI3NzRmZWMzZTNiZWNlYmM5N2M5MjdlNzQgcmVsZWFzZTI1LW1haW50Cis2MDMwMSBmYjY4ZTQ0NTg3ZWEyNTlkNTIyMDIwYWVmMTRmYzM2OTNhODhiMTdmIGxlZ2FjeS10cnVuaworNjAzMDIgOTZmNWRjYjQ4MGE2MDJmOWRlNTNjZDlkMjNlZTM3ZjY0ODBlNjFlOSBweTNrCis2MDMwMyA4NTEwMzAxNjJkNzI4MzRmMDhhZWI5MzBiNWJhNDRhODk3ZTI2MzRkIGxlZ2FjeS10cnVuaworNjAzMDUgNjY2Y2ViNjc5OWE3ODE1NzFlNWRkMzk4OTY5MmMwZGNhZjJlNGViOSBsZWdhY3ktdHJ1bmsKKzYwMzA2IDZhZTIyMDMwZTE1MjU3NmVmNjhjNmEwYTJiMTM5YjQzYWY5ODViM2EgbGVnYWN5LXRydW5rCis2MDMwNyBkMzQ3YzFmOWMzOGFkNjU4YjlhN2FjYzdjMmM3ZGY4MDk1NzA3Y2Q3IGxlZ2FjeS10cnVuaworNjAzMDggYzZlNWM2MDRlYTYxZGVlMmNhMmE2ZWFjMmIzYzdjY2U3MmU2MmNkYSBsZWdhY3ktdHJ1bmsKKzYwMzA5IGJlNDRmYWVkNTQyZDdmZDA4ZjYxZTQ4ZTJlNGE0MzU3MjViM2U3YjUgbGVnYWN5LXRydW5rCis2MDMxMCAwZjA5M2U4YjJmNTMxYjRiMTRmZWM5YjU0YzQxYjhjYTkyOTBjNGVlIGxlZ2FjeS10cnVuaworNjAzMTEgMzA3ZDQxMDllMjNlYTVmZGVhMGFjMmI0MzNhZDU4OTRhY2M2NjI2ZCBsZWdhY3ktdHJ1bmsKKzYwMzEyIDMxMjRjYzViOTczZjE3YzQ4OTcwN2Y5MDgzOTkxZjFkNWNiNjIwODMgbGVnYWN5LXRydW5rCis2MDMxMyBiNzA0ODUwMTEyMTQ1MzhmM2U4YzEzNzBhODRhN2M4ZWQ2YTQyZTQwIHB5M2sKKzYwMzE0IDM3ZDc2Mjk3NWE5NTNkZTFjYzZlNThlMGU3MTkxYTgwODlhMTE2YzAgbGVnYWN5LXRydW5rCis2MDMxNSAyMjFkZWMwM2UyNjEyNTdiYjQ3NjdiMzczMzZlOTIxMWFjZjhhZWExIHB5M2sKKzYwMzE2IGFlZGI3YWMyNjI3ZWU0MjUxZjNmZDZhYmI4MTUwNmMwMDg0ODlhZDcgbGVnYWN5LXRydW5rCis2MDMxNyA0N2JiMzFkMDY1NzcyZDEwMDdhNTRhYjVhMWQ2Y2NlZmRkNjFmNjY1IGxlZ2FjeS10cnVuaworNjAzMTggNjRkMTNmNDU2ZDA2YmFjZjNlOTAzNDA5ZWU0MjE0N2RhYTIyMjdhZSBweTNrCis2MDMxOSA4NDMxNjE3ZjIwZTJhOTVhYmQ2MTg5OTNmOGRmMjQ1ZTI4OGNmMzRjIGxlZ2FjeS10cnVuaworNjAzMjAgYWFiNWM4ZThmMzhkYzAzMzlkMjMwOGFlYjU1YWJmZTBlMTY4NjliYiBsZWdhY3ktdHJ1bmsKKzYwMzIxIGFhYTVhNzk0Zjg4N2UyMWQxY2ZiNjRhZjc5YTM5ZDUyMTc0NTIxZGUgbGVnYWN5LXRydW5rCis2MDMyMiA1ZTBiNDYwZjI5NGE1YzdjYzFlMWFkYzgxYWQ3NDcyZTQxNWEyY2EwIGxlZ2FjeS10cnVuaworNjAzMjMgYTc1MGEyNmI1ZmFkYTYyZTZhMGVkOTlhOTZiYmRlMjA0M2Y5MjJlMyByZWxlYXNlMjUtbWFpbnQKKzYwMzI0IDUxYmI3YjFhZTc2NTkxMDU4ODM2ZjE2ODdiYjAzZjlmZWRiMDQ2OWYgbGVnYWN5LXRydW5rCis2MDMyNSBkZjIzZDUyNDk1NTBkN2Y3ODg4N2ZlYjA3NmU2Mjc1ZjBmNmRkN2E5IGxlZ2FjeS10cnVuaworNjAzMjYgNjk5YjM3MTcwY2FkYzZiMDE5NGNmYTRjMzYzZmY1ZjU5ZDE2MDBjYiBsZWdhY3ktdHJ1bmsKKzYwMzI3IGNiNTgzOWQxMzIyNjE2YTAxNDk3ODgzNzhhMmQ4NmU0ZmZjYzU5MjcgbGVnYWN5LXRydW5rCis2MDMyOCA4Y2JjYTkxZTMxNTQ5NzBiYjQ3NTZkMjhmMjVhZWU4ZDQxOWE5NmJkIHB5M2sKKzYwMzI5IGZiYjlhZTlhNTE0ZmViYTkwY2FjNzI5YmIzY2Q5OTI3ZDU0ZDIzMzIgbGVnYWN5LXRydW5rCis2MDMzMCA1ZDc4MmM4ZDQwMTY2OGNiOTNkNjE5YzRkODQ2OTcxNjdkNDUwMzFhIGxlZ2FjeS10cnVuaworNjAzMzEgZGNhM2Y2NDZlOGExZmI1OWZmMjhhYzY2NzhiNDE5NDJhZmVmMDRmOSBsZWdhY3ktdHJ1bmsKKzYwMzMyIGYzYjU4NDg0M2Y5ZmJkYzljNTRhYjUxNDU2ZTZmYzdlMDc0ZGEwZmMgcHkzaworNjAzMzMgOTYyYzQ5MWUxN2Q2Y2E4YzY4MDNiMDJkMGEyNzFkMDdkZWFiOTI0MCBweTNrCis2MDMzNCA1Zjk4NDQ2ZTBmMWJiN2I3NTYyNGJjNTcwMjk1ZTViZjFmYTRkYzAwIGxlZ2FjeS10cnVuaworNjAzMzUgNTBmMmQ3YmRhYmM5YTQ2YzcwOWMxMTg2YjExYmNjYjEzNzgzNTZjNSBsZWdhY3ktdHJ1bmsKKzYwMzM2IDkwOTM5MDhhMGNmNWQ0YzJjZjY3ZDYzZjlhMjZhOTlhOWQ4NTg5OTIgcmVsZWFzZTI1LW1haW50Cis2MDMzNyBlMzM2MjU4OTU1NTAyNjE3YjU4MzI5YzdmYTA3MGI0ZTc3OTIxNWQwIHJlbGVhc2UyNS1tYWludAorNjAzMzggNWIxN2I0NGJlMWJmODc4ZDY5MWVlY2Y5ZjMyYzk2ZThlNDJiY2RiNSBsZWdhY3ktdHJ1bmsKKzYwMzM5IDYzNWE3NTYzNjBmMThjOWExMTVjY2JlMjU2NGE3NjM2ZGNjNjEyNDQgdHJ1bmstbWF0aAorNjAzNDAgNzJhNjcyN2JlZDljOWUxNGYzZTU1NDYwM2FkYTc0MjI5MGNlODhhZSB0cnVuay1tYXRoCis2MDM0MSA2YWRiZDYyYjlhYmZhMGUzMGI1OTdkN2NlMTEwZDllMTI0M2I2YmVhIHRydW5rLW1hdGgKKzYwMzQyIDJjYTJiMDg0MGIzNWQzODQ1ZDgwYmQ3Nzg2MzVhMDY1ZDM2NmE2NDkgbGVnYWN5LXRydW5rCis2MDM0MyAyMGJmOTQyODVlZWZlODY4NjVjMTQ0OTJmYzBkZmYwNzdjMGYzNTFlIHJlbGVhc2UyNS1tYWludAorNjAzNDQgNGRkMGZjZjNkYWY3M2UyNmYwM2MyYjhiN2VkMTE4OGUxNjkxMTU4MSBsZWdhY3ktdHJ1bmsKKzYwMzQ1IGZmNThiMzBhOGQ1Mjg3MWQ2Y2YwNTQyY2Y3ZWExYTcwNGQ4YTE0ZWIgbGVnYWN5LXRydW5rCis2MDM0NiA2YmJmNmZkYzE1MmI5ZTQyZWRiZjExYTYwNWMyMTYyMzE5OTgxZTYyIGxlZ2FjeS10cnVuaworNjAzNDcgNDY3YzcxZjM2NWZkZWI0ZjY5OGVjNDcyMTM0YWI4NGI3MTk4NGZjZCBsZWdhY3ktdHJ1bmsKKzYwMzQ4IGYwMTgxM2IzM2NhNGJjZGZiNGNlMTM1NWU3ZDNiMWVhMDk4OGVhMDggbGVnYWN5LXRydW5rCis2MDM0OSA2MmYwYmE3NDUzNTdmMDU5YmVjNmRkZDNhNDI1N2IyODI4ZmFjN2NiIGxlZ2FjeS10cnVuaworNjAzNTAgN2MwMjE4MmUyOTc5YTIyZWU3NThjYTAyZjI1Zjg4MmIyYjg0MGQ0OCBweTNrCis2MDM1MSA5Yjc0YzljOGI5MmM3OWZiZjkwNGY0Njc2ZTczY2RhOGRjMzZmMGQ3IHB5M2sKKzYwMzUyIGY1ZTUyYTUzZmNkMTQ4MzRmNjM3MmI2Y2UxYjZlYWQ5ODkxM2IyMDggcHkzaworNjAzNTMgZWUyNDNjYTY1ZjVmNTQ2OGJkMDk2MzljODA3MDQyZmYzZWNkZjYyZSBweTNrCis2MDM1NCBmMTVkM2JmNGNhNTZhMTJkMWIwNmM2MjYxYjUzMGZmMTgwNDU3YjRjIHB5M2sKKzYwMzU1IGUyMjRhZDRiOGI4Y2FlMzE2ZmRhMDRhMjU5NzUzYWVhMmU2YTA1NTYgbGVnYWN5LXRydW5rCis2MDM1NiA3MDdkZDlmMzg0ZjM4OTYyNGIyMGYyMTBiYWI5YjliNDc1MTA2ODdjIGxlZ2FjeS10cnVuaworNjAzNTcgZmNmYTEzMTk5ZWNiZGEyOWVkOTU5MWQ1MmFkNzU4OGM4YmIzYTE3NiBsZWdhY3ktdHJ1bmsKKzYwMzU4IDFkNzFiZjQ3NWE4NWYzYWM2NjdlZjdlMzA1M2RlYmFlNTExZDg1YmQgbGVnYWN5LXRydW5rCis2MDM1OSAyZTRkZDM5YmY2OTA1NjMyNjlmNTE1ZTc3NDA2MTQ1ZTI0ZjlhOWMwIGxlZ2FjeS10cnVuaworNjAzNjAgNjA0YWFjNDMzN2E1YzViMTM0YWE5NWM1MWM2YmJiMzczNDdlNTE0YSBsZWdhY3ktdHJ1bmsKKzYwMzYxIGMzMTViNjcyNDVmN2Q1NGIwMzBhNTNlMjRkMDUwNGQ0N2RkY2NmNGQgbGVnYWN5LXRydW5rCis2MDM2MiBhM2Q1NzAwYjFkNWEzZTA2MDcwNzdiNWNmZTQxNjUyMmJlM2Y2NGIyIGxlZ2FjeS10cnVuaworNjAzNjMgMWZmMmJiNTE4N2RmZjkyYTU0MjNmZmM5MTNjYjlhMmQ1NzU5MjQxNiBsZWdhY3ktdHJ1bmsKKzYwMzY0IDg1Y2NjN2MxNTQyNWRlODI3OGFkNDMzMjlmMmYyYmY0MDk5MTQ5MDcgbGVnYWN5LXRydW5rCis2MDM2NSBiMDY0ZTI1ZmI4NDIzNDE5Zjc3OTllM2VjYWUzNWQ5NTRmOGI2MGNjIGxlZ2FjeS10cnVuaworNjAzNjYgNTYxYzA2NWUzZjJkNWZlOGVmYTNjNTY0OTJlMzVhZjFjZWU1N2Y4ZSBweTNrCis2MDM2NyAwYTcwZjViMzBiOGFjMTg3YTQ3OTc5NDY1ZmU0MmY0MmJhMTMyZTgwIGxlZ2FjeS10cnVuaworNjAzNjggMjI5NDVkYmNkMDMwMWY4Njc3YmY0MGUxMjg5MTk3MzZiMGYxMTZjMyB0cnVuay1tYXRoCis2MDM2OSA0NzI1Yzg0YjA0MjI3OWI5NTY5MmQzMmQxNjE2Y2VmZjIwZjViOWJkIHB5M2sKKzYwMzcwIGY3ZDIzNjBlOTUzZGU3Y2U5ZDczOWNlODI2YzdmYmMzNDkwMWJmZjkgbGVnYWN5LXRydW5rCis2MDM3MSBhZmE1OTkzMjI0ZTU1NjMwNjRlYWFjYzEzZjAyZjliNjhlYjc2NjJmIHJlbGVhc2UyNS1tYWludAorNjAzNzIgYmUzMTQwZWM2N2M4ZjYzMDhmNDg3YTBiM2U2Y2IzNGY1ODYxOWE0NSBsZWdhY3ktdHJ1bmsKKzYwMzczIDc5ZjQzOWQ5OWY4YzNiOGIxOTA2NzU3ZWRiYzMxM2Q1M2VjNWQ0OWQgcmVsZWFzZTI1LW1haW50Cis2MDM3NSA2OTVlNWJmM2FmOWMwNTY5MjE0ZmNjZDM3YWUyNWY2NzAwZGZjYmVmIGxlZ2FjeS10cnVuaworNjAzNzYgNzI3Y2M4MTBkNjkwYmNlODg0NjY0MzcyMWQ2Yzg3ZjExMWVkNWE2MSBweTNrCis2MDM3NyBmMDYyZGRhNTQ4OTRmMjQwZjk4YTA0ODU0ZjA3NjAzNGQzMjY0ZGUxIGxlZ2FjeS10cnVuaworNjAzNzggZWEzZmUzMDJkMzkyMDY0MGZjNjI4ODc1MDZiNWE5YTYzZmFmMWRkNCBsZWdhY3ktdHJ1bmsKKzYwMzc5IGViZmJhYTEwNTFlMmQwZDc4ZDZjZGQyMTliNTU5MDExNTViNzhiODkgcHkzaworNjAzODAgNTIzMmYwN2Q5YzhlM2RiMzg5MjQ4NGIyN2YxZmVjZTI3ZTdhYjRhYiByZWxlYXNlMjUtbWFpbnQKKzYwMzgxIDFjOWFjMDBjNDc1ODc5NjE1YmM3MWMxZTNjMDE3Yzc5Mzc4NzZlZDIgbGVnYWN5LXRydW5rCis2MDM4MiA0M2NhZjgxOGNmZjA3MjkxYzI4NTM3ZjZkNDFjN2RmZWFmNDk3YmU4IHRydW5rLW1hdGgKKzYwMzgzIGVmMmQzYmY4MzgzZGNiYjI1NmU3YTdhODZhNDcyNzc2MGQyNGYyNTMgcHkzaworNjAzODQgZjA3ZTZmMzI5NzU1M2U3YzU4NGE4M2M3ZmU3NDA1ZmQ1NTgxMzk1ZSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDM4NSBlNjE0ZDI0OGJkZDEwMTU3YmZmNzdlNGI1MGRjNWNkMzg5NTY1YjdlIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMzg3IDU4M2FjZTEyYzVjZjEzMWMwZTQ2OWFhZmYxZjQxZjM3YWM5ZmNhOTUgcmVsZWFzZTI1LW1haW50Cis2MDM4OCAxNWY1YjczMWUwMGIzODE1YTM2YTJiYmQ4MWVkNmRmNTM2NDBlZGYwIGxlZ2FjeS10cnVuaworNjAzOTAgYTI4ZDBiMTRiNzdkZWVmNDVjM2E3YjhhMGY1NGZkZmMzZGIwOWViMSBweTNrCis2MDM5MSAyYzNkNDk3ZWJmZDZkYmFhZmMyNzgwNjRhZGEzZjY2Y2Y1YjhmYjU2IHRydW5rLW1hdGgKKzYwMzkyIDk0ZjE4YzJkZWFhNWRhYWJlMmIyMjFkYWY1ZmUyNzZiNThiMzY5YjEgdHJ1bmstbWF0aAorNjAzOTMgMGRhMmVmOWZlZGMwMzJmMDk3YmFlNmFmMDQ1ZDA2ZmI4NzEyYmNjMCB0cnVuay1tYXRoCis2MDM5NCA2YWM3ZDJlOWEzYmM0MDI1MDcxMjg4YjJmNjcyZGNiYzA2MDYzZTVlIHB5M2sKKzYwMzk2IGFiNjcyNjA3MzdiMWM4NmUxMzFkYWU1M2E2ZTcwZDY3MjdlOTRmM2IgcHkzaworNjAzOTcgMTVlOGIzNDI1NGVjZmI1Zjc4ODUxYzNkNmQ0M2Q0YjdmNTAxY2EyMiBsZWdhY3ktdHJ1bmsKKzYwMzk4IDFlNTgzZWI3MWIzZmIzNjE5Nzk4OThiYzY3ODk0MGI1MmExZWNmMDQgbGVnYWN5LXRydW5rCis2MDM5OSA3N2QwNTJjZTFmNGM3YzVkMzUwNGM3YzE5OWU0YmVmZTVkMTJiMmZmIGxlZ2FjeS10cnVuaworNjA0MDAgNzU2NDEzYzBmZjFkOWFhODdlNDUxMTkxY2E2M2MxZGU4M2JhYjVhNyBsZWdhY3ktdHJ1bmsKKzYwNDAxIDdhNmE4MGU4NGE4YTAwNmU0Njk3ZjNlMjMwMjg0NTY4MWU4NTYxOTYgbGVnYWN5LXRydW5rCis2MDQwMiBkYzQ2YTY3YTdiN2I3MGQwMTE3YjNmNTNmMjkxMjM5M2IwNmY0Y2NkIHRydW5rLW1hdGgKKzYwNDAzIGJkMjQ2ZjMzNjg3Zjc1NzVjNDlkNmUwMzNkZDE3YzIyMGFiYThlMWMgbGVnYWN5LXRydW5rCis2MDQwNCA1NDY3M2Y3MjQxMDZlYjFmZTZlMWZkODMwODQ1MWNkMmYyMDkxZjE0IHRydW5rLW1hdGgKKzYwNDA1IGVmZWE0MjE3YTk1NDMzY2UzMGNkYTNkYzRhODJhMTU1NDk0YzYxMTAgbGVnYWN5LXRydW5rCis2MDQwNiA0MThhZDE1OWZlODQzZWU0NzcxMGNlMTU2NTA1MzRhNGQ0N2Y5MjJjIGxlZ2FjeS10cnVuaworNjA0MDcgY2MyMmQzZjEyYjEzN2Y3MjgzZjlkZjcwYzljNTcyNTI4MGE0NTQwMiBsZWdhY3ktdHJ1bmsKKzYwNDA4IGMzYjM4YTg1OTg5ZmM3NjUyMzIyZjE0M2ViZTM5MDBhYzZlMzdiMTIgcHkzaworNjA0MDkgODYwOTRjNDY3ZWFmYjE0ODBjZWEzMThmYTA3ZmJhZjgxYjI1ZmM2ZiB0cnVuay1tYXRoCis2MDQxNCBlOWQzZDU2MWRiZDFhZjI5OWVjZDUwYmU5MmRlN2ZlNWZjMTBiMmJiIHRydW5rLW1hdGgKKzYwNDE1IDNmOWZlMjcxNTUzZjE2ZDYxMTZjOWUzYmEzMTgwZTYzNmFhNDUxNGIgdHJ1bmstbWF0aAorNjA0MTYgMzAzY2VmMDYzYzM1MjBlYTZkNTVmNGUyNGVjMDVjNTYzZTFiZDkyYyB0cnVuay1tYXRoCis2MDQxNyBiOWJkYzZhOThiZWEyMjg4YjRkM2FiYzAzYTgzMzc3ZDQ0MjJiNjljIHRydW5rLW1hdGgKKzYwNDE4IGVkZDM2N2MyMmM4ZmNjNDQ5Mzg2NjEyOGFjZjg0MTY1N2I3YjMwNTYgdHJ1bmstbWF0aAorNjA0MTkgM2ViYWFlMzQxYzFiMTIzZTVkOWU1NDNkNTY5ZjFkNGVhYTE0MDRhNSB0cnVuay1tYXRoCis2MDQyMCAzYjRmMGM1ZWNmNTNmZDYyYzgyMTc1YmY4OTM2YWFjZDE0NzE2MThlIHRydW5rLW1hdGgKKzYwNDIxIDI5ZDYxNWRkMWQ5NzA1NWY5ZGE1MmNlNDA1MGVkNGVlNzRiYzExMWIgdHJ1bmstbWF0aAorNjA0MjIgYjM3MmMzNTRhMjhjMTc0NzUyZTA2MTRiMGFjMzI4MmJmNWNhNDBjNCB0cnVuay1tYXRoCis2MDQyMyA1MDljZGY2ZDY0Nzk1ZWRmZDk0OTUwNDRjNmQ1MWUyNjNmN2Q0ZWQzIHRydW5rLW1hdGgKKzYwNDI0IDkyNzczZDdlNjUzZTRjMWZlNDk3ODgzOGUxM2I1ZjRmMDExMzYzMWIgdHJ1bmstbWF0aAorNjA0MjUgZTc5MWJiMGFkY2RlODI5MDcxN2I0YWQ3MzM4NTkzMGZlNzU2YWRmMiBsZWdhY3ktdHJ1bmsKKzYwNDI3IDdhYzdlMDg5YTA2ZmM5YWQ0Y2UxYWNhYzEyNjM3ZTU4YmVlMDc4YjAgdHJ1bmstbWF0aAorNjA0MjggNzE2NmVkNDk4YzZkM2NiZGU1ZDE4NTFjYmNlOWZlMzJmZjIyMzM2ZCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDQyOSBjZDY1YmEyM2E1MGU3NjEwZTQwMTAzZjM0MzVlNWRhMTc2YmIwY2RkIHRydW5rLW1hdGgKKzYwNDMxIDk2ZDAyNDkxNjRmYzY1MjZmY2ZjMmI3ZDMwMGE0ZWE5MGFhZjZlYTYgbGVnYWN5LXRydW5rCis2MDQzMiBiN2FhOGJkZTdiY2Y3MGY0OGM4OGRmYTA0NjI2Y2VhNzZiNTVlMDE3IGxlZ2FjeS10cnVuaworNjA0MzMgMjUwZjI5YmFiNjFiMTJjMzY2YWIzMzA2ZjUyYmU0OWNmZGZiMzUwMSBsZWdhY3ktdHJ1bmsKKzYwNDM0IDkwZTg2ZWUzNjg0YjNjMWI1OGQ2ZTNlZWMwMmIwMGI5YjZkYzE2N2UgcHkzaworNjA0MzcgZTk3NjRhNjk1ODA5N2EwNGQ4OTNjMjRmNTlkZmNhZjBlZTBjMTgzMyBweTNrCis2MDQzOCA2MjkwOWQyZTU3M2I5NzRmNzBkOTY5OGFhYTZlMWE1MjMzZjEzYWFmIHB5M2sKKzYwNDM5IGU0MzIzODc2MGMzODczOTZlMDc5ZDZlNzNjMGUxMjlmNjE5ZDA1MzcgcHkzaworNjA0NDAgMjYyNzg3OTZkNGRhMTMxOWYzOTM4MzcwMGY1NDdjY2Q2OTlhOGRlNyBsZWdhY3ktdHJ1bmsKKzYwNDQxIDUzYjkwZjMxZWZkNmU2NmEyODBhNjkwZTYzMDhkNDg0ZWViMDg5NmQgbGVnYWN5LXRydW5rCis2MDQ0MiA1MTBhNDgyODlkMWQ2ODhkNTE4MWNiZmQ4M2Q0YTllYjhmYmQ5NTM4IHB5M2sKKzYwNDQzIGM4ZmNhOWI1Y2QzYzMwZGNjYjVkNGRkNzJmZmFkNDFlMzVmMjlhNWYgcHkzaworNjA0NDQgNzYzOGQ0YWUzMTBjMjFmOTgwMDg5NjIwMTVlNDRkZTA0ODAxODkwMyBweTNrCis2MDQ0NSBiZDhkMjM2OWYxNDExYjM1MDZiNjRlYzhlMjUyZTBlMWY4MDczMjc0IHRydW5rLW1hdGgKKzYwNDQ2IDVhYjIzN2M5NjY5NWRmN2EwYjdiZThlNjc3ZjM0ZjBmZTMzMDY0NjAgdHJ1bmstbWF0aAorNjA0NDcgYWZkMGNiMjVjNzNlMjEzMTgwN2IwMTMwMWQwYzY1ZWQzN2QwZWNhZiBweTNrCis2MDQ0OCA5NjM5YTczYWZhNDc3NjE0YzBlZDM2ZDJhODk4OWM3NDVhNTM5ZWRjIGxlZ2FjeS10cnVuaworNjA0NTAgYzA1ZWU3N2IzOWYyZGMxMDZkZDdhYWU5MWI5MTI5ZTNhODIwZjg2NCBsZWdhY3ktdHJ1bmsKKzYwNDUzIGI5ZWUzMWEyNmYzODVkM2NmYTk0YzViZjkyNGZjODQ2ZTI1MGJmODkgcHkzaworNjA0NjMgYmUwNmIzMzk1NzY4NGM0NGIwOTU1Y2Q0ZjlkNmU3ZDg4MmM3YjQ1ZiBsZWdhY3ktdHJ1bmsKKzYwNDY0IDdkMGRmNWVjM2QyZjRiZTdlYjM2NGFmZTNiZDk1MmQxOTAxMjUwNWQgbGVnYWN5LXRydW5rCis2MDQ2NSBlODQ3NmFlZjg1N2MyMWMxMGU5MTU0M2U3OTk5MGQwYTNlNjI1MzI0IHJlbGVhc2UyNS1tYWludAorNjA0NjYgNzE5ODM2MDNlYTk5OTkwNDI3MjQ1MWJhMzMwMjYxN2MyNGE2ZDE4YyBweTNrCis2MDQ2NyAzZjI0OTZkYzkxZGIzZjY3OGM3ODIyMTc2Nzc4NWEzN2NmYmE5ZGY1IHB5M2sKKzYwNDY4IDg5MzBmZjIzMGVlOWU0NjNjZjRmNGQwMTBkNjVmM2RkNzhmZjlmODggcHkzaworNjA0NjkgZGU3YzMwOTdiMmMxMDY1MmUxN2E4NmJmZGEyZjgwNGE4NDVkMGQ3MyBsZWdhY3ktdHJ1bmsKKzYwNDcwIGU3N2I4MmFlZDFhODMxMzFmZjQzNTM5MTUwMDVmOGI1MTJlMjE5NTIgbGVnYWN5LXRydW5rCis2MDQ3MSAwM2U0YTM2YTU2YmJhNDk1ZTEzMTVjZjJmZTBhOTBlNzYxMjJhMDA4IGxlZ2FjeS10cnVuaworNjA0NzYgZjM4MGQ5OTEzOTBlMDlmMjNkMTI4NDcwOWVlMmI0OTY5MThiOWY3YiBweTNrCis2MDQ3NyBmMTgzZjExODk4MjQ4ZTc1NGVmYmJlNDM5MzEyMTMwMTcwMmIyMTQ0IHB5M2sKKzYwNDc5IGQ2MzVmMjllNTVmODI5NDcwZjVhMmRmMWEyOGNlODk1M2M2N2VmMTAgdHJ1bmstbWF0aAorNjA0ODAgYTc3YzhkY2JjZWQ5MTBmZmQzZTJmOTNkMTJiODJjMGE1YWM3NmY0OCBsZWdhY3ktdHJ1bmsKKzYwNDgxIDNhYTRiOGRmYmM0YTRjYjU0MmNlOTRmOGU0MjA2YTgyODBmZTg3MjkgcHkzaworNjA0ODIgODY1OWU1MjYxNGRhZGQ2OWUxMWJhNmUzNzE1ZjU3Y2NjODhkYTczYyBsZWdhY3ktdHJ1bmsKKzYwNDgzIDNmMTZhYzkxNTIxNGVkMzllNTZmZTc0YmZiNzljZTIzZGMxNjg2NDMgbGVnYWN5LXRydW5rCis2MDQ4NCBmMGU2YmI5YjI0ZjY4YjFlZjNkY2JiNGFhZjMwZTI1ODljM2E1OTQ3IGxlZ2FjeS10cnVuaworNjA0ODUgYTRiODQyNTdjN2Y4NTdmNTI3NmQ1ZDUwMTU2N2NiZGI5MjZiM2NiZSBweTNrCis2MDQ4NiA0OTJiMzAyYWRlZDY4OTQ4NzJmYzNhZjI1YWRmYjk2NjQ1MGJkMjIzIGxlZ2FjeS10cnVuaworNjA0ODcgNjc4NTA5ZjlhMDNmNzJhMWVlYjQwNGI1NWJkYjNkZjc4OWFmY2UzOSBsZWdhY3ktdHJ1bmsKKzYwNDg4IDMxNjRiNGFlMjdjM2MxZGYyNTFhZWM3MmM0MDBiNzIxMjE3ZmExZTMgbGVnYWN5LXRydW5rCis2MDQ4OSBkNzU0MDAzMWI5NTkyMTczOTYxZWViNzk5NzM2ZWE2YWE1Mjk3MDlkIHB5M2sKKzYwNDkxIGM2NmRhNTdiOTQ4ODk4MGU1NDA1NWZhOTYxYzEzNWQ0MzBjNjFhNzMgcHkzaworNjA0OTIgMzg2MDRmYTJhNDhmMWZlZTE1Yjk3ZmU0N2I2ZmFkMmUxN2JiYzA3OCBweTNrCis2MDQ5MyBhMjgxZTMzMTk4YzBhZTM0ZDFiYjE1NThmM2U3ZTZhZGI1Y2NmZWYwIGxlZ2FjeS10cnVuaworNjA0OTUgN2NiNmU1NjE3ZGEwOWQ4OWYzZTljZjMxODhhNTNhNzg5YjhiNTEzYSBweTNrCis2MDQ5NyA5OWVmMjQ4ZmIzMTUzZmQwOTg5NTYwYTA1Yzg1NTFjZTMyMjI5NzRhIGxlZ2FjeS10cnVuaworNjA0OTggMmI2MzY5MGQ1MTI4NTk3YzcwMWNkZDM5ZjJiNmIzYmJhNWEzNzhhNyBweTNrCis2MDUwMCAzM2JiZGM3NmFmYjYyZTE0NWVmZDYyYWFlY2UyZDkyNWQ2YmIwY2ZkIGxlZ2FjeS10cnVuaworNjA1MDQgMzk3OWFlMWVlYTE3YTcxOTgwOTRiNjllMGU5ZjBkMmIyNGRhNWY5NiBsZWdhY3ktdHJ1bmsKKzYwNTA3IDY0OTJhNzhlOTNiNGMxY2NjMWI5MzdmN2M3NzY3MzlkODlmZmFjYmUgbGVnYWN5LXRydW5rCis2MDUwOCBmYWE4OGZmNGNjZTRkMjU5ZmFiMTM3OTI3OWI5MWIxMWQ2OGY3MTNhIHB5M2sKKzYwNTEwIGJkYjcwMjk1MjQ4YmNmYzM1Yzc4MzNjMDQwM2FlZjI4Yjg0NWExMzMgbGVnYWN5LXRydW5rCis2MDUxMSBiZWVhNzNjYTJiODhlN2Q2OGNhYWZkMjM0N2JkN2M3M2JjMmE2MDg2IGxlZ2FjeS10cnVuaworNjA1MTIgNWNiODI4ODM2MGU3MzhjM2IyMWEwNjg3YzJjOTQzNjEwNjNhZjcwYyBsZWdhY3ktdHJ1bmsKKzYwNTEzIGQxMmM5N2NjNzQ2NzEzZDQ3YTI2NzMyZTRlYzRiNTZhM2QwMTEyOGYgbGVnYWN5LXRydW5rCis2MDUxNCBmNGI0OWVmY2VkYzBlZTI5ZTRkNGZjZTIyNjUxYmY0ZTdlOWFjMGQ4IGxlZ2FjeS10cnVuaworNjA1MTUgZGY1ZTUyZTA1MjQ2ZmNhMGU5NTNmNDg0MWU5Y2YxNWRiZTVhMGMzMSBsZWdhY3ktdHJ1bmsKKzYwNTE2IGQwYjMxZjI0Njk0ZGJlNzFiOWE3M2ZmNDIzYmJkZjIyOTVmN2JiOTYgbGVnYWN5LXRydW5rCis2MDUxNyAwYjRlOGFmZWQ2NjMxMjRkMDViNzdiMGY2ZDNhZDdlNDA0Mjc4MDg5IGxlZ2FjeS10cnVuaworNjA1MTggZjVlMThjOWJkZTcwMTc1MjM4MGNjZDY5MmQ4N2M2NzJiNTcwYmVjMyBsZWdhY3ktdHJ1bmsKKzYwNTE5IGNlOTgxNmY1MzY5MDliNTlkZWE2OTk3YjQ0NTUxNjJiZDAwMWRlYmQgbGVnYWN5LXRydW5rCis2MDUyMCA0YzU5YThmNzllNDI4MWVjMjU1ZTk5NDljOGQ2NmZkYmIxZDdmOWMzIGxlZ2FjeS10cnVuaworNjA1MjEgZTJhOGI2NzY1YWIzZmIwYzhjNWJjNmRkMTRkNWQwMTZjY2E0MzU5YiBsZWdhY3ktdHJ1bmsKKzYwNTIyIGQ1NGQxMzNjNmE4ZGI3Zjc2Zjc4MDkwODZjZjI3ZDZmYzRlNTFhZTYgbGVnYWN5LXRydW5rCis2MDUyMyA3ZTJlNjAzZjRjYmVjZTA4NTI4ZmE2YjA1NTk3MDY1NGRiMmE5ZTg1IHB5M2sKKzYwNTI0IGEzZTZmNzQ1MzNkNjBjZDBjYmYzYjE0ZGNhMGI1NGM2MDIyZjJkZjQgcHkzaworNjA1MjUgNjQwOTEyNDNjMDdiY2VjOTU5MmQwNDIwZGViOWQxMjcyYzU2OTlmYiBsZWdhY3ktdHJ1bmsKKzYwNTI2IGE4MWVmNjNhMTAwOWEyOTk0Y2NiZTAxZDI3Y2JhYTQwOTI2MWMyYjQgbGVnYWN5LXRydW5rCis2MDUyNyBkOTgwZjE3NWM4ODYzNGJkYWIwMDA5NTM1Yjc4MWNlZTY3YTMxYTYwIGxlZ2FjeS10cnVuaworNjA1MjggNmQ3NWJlMmMzZDNlNDEyYjM1M2Y4NjY5NzkyNzA1NTAzZjQzMGM4ZiBsZWdhY3ktdHJ1bmsKKzYwNTI5IDY2MGQyOTg5YjE2MWNkNTQwYWM5OTdjZmY2MzNkYzRkNjc4Njg4ODIgbGVnYWN5LXRydW5rCis2MDUzMCAwNDY1M2Y5MjY2NGYzMWQyMTYxMjJjZmFiZDk0MWY5MmExZGUwYjZkIGxlZ2FjeS10cnVuaworNjA1MzEgNjViMTI1MmMxYmMxOTBhYWY2MDJjNzk5NmY5NTYwZGQ3MTVjODBiZSBsZWdhY3ktdHJ1bmsKKzYwNTMzIGYwM2FmNjAxMjI1YjFkZTllMGFjOWQyYjUzMWU2M2Q2ZjJiNzRlNWIgbGVnYWN5LXRydW5rCis2MDUzNCBiMmRlOTdlYjFmNjdjNzQzMDU3MmJhOTY2ZmQ4NWVlZDU0NjEyYjQ1IGxlZ2FjeS10cnVuaworNjA1MzUgOTViYmY1NjEzYjE4ZjQ5ZGU1MmM0MjJiNjhkNmNjYWUyYjBlYWE2YyBsZWdhY3ktdHJ1bmsKKzYwNTM2IGFlZmRjYjUyNDA2ZGQ3MWZlYjdmMTQ1NTk3MDJkNDdiZjhjODQ4MWUgbGVnYWN5LXRydW5rCis2MDUzNyA1OWQ4OWQ2MWMzYTBiMzBjZTkwZWVmM2NmYjg1NWE3YzU3NDExMDIyIGxlZ2FjeS10cnVuaworNjA1MzggYzJkY2Y1NGU5MWZkMTg4ZTYxZTA2ZTg3ZWMxYjk2NjI0MTcyN2NiMiBsZWdhY3ktdHJ1bmsKKzYwNTM5IDI0OTY5NDA1ZTFhYWQ3ZjRkZDA4MGI1NjljMzgxOTU4YTc4M2EwYjYgbGVnYWN5LXRydW5rCis2MDU0MCBlNWUwMjg5OGI2YzQyYzExN2FmNjhjODc4OTVjMTRhZjZjM2Q0ZjZkIGxlZ2FjeS10cnVuaworNjA1NDEgMzk0MDkxZmQxZDUzMzU4MDYxNDViZGM3ZTNhZmVlMTY1YjU4MjI1ZCBsZWdhY3ktdHJ1bmsKKzYwNTQyIDIxNTk0YzVhMDYxYTUwZTA1ODA1MjJiMzhhOTRlYmRhYzI3N2M5ZjggbGVnYWN5LXRydW5rCis2MDU0MyBmMmNkZWQwYzFmZDc3YTZiNDVlOWJmNmMyZmI2NDE1YjI2MzEzMGQxIHJlbGVhc2UyNS1tYWludAorNjA1NDQgM2FjNDhjYjM0MDI3MzRjNjI5ZmFlNzc1NjU3YWVkNTE5Y2FlY2RiOCBsZWdhY3ktdHJ1bmsKKzYwNTQ1IDI3Y2E0NzAwYmM2ZGYwZmY3OGI0NTg0YjVhNjI2OThiMjE3ZDEyYjYgcmVsZWFzZTI1LW1haW50Cis2MDU0NiA0MDNhN2VlNWE1M2VjZWI2YTE1OGRlY2ZmMTUxNDlmMDIxMzk5Njg0IGxlZ2FjeS10cnVuaworNjA1NDcgNmM4YzZkZTQ0ZmY3NTg2N2MwMmI1ODIyMzEwYWZlZTFmZjNkOGRiNCByZWxlYXNlMjUtbWFpbnQKKzYwNTQ4IDZlMTM0YWE3Mzg3OTY5NTI2OThiMDcyM2ExMTIzNTlkOWVjNzRhYTQgcmVsZWFzZTI1LW1haW50Cis2MDU0OSBiNjZhYmYwZmQ1OTEyOTZlNTQ2ODY4NTdmNzJlOTIzMDc5MGMxMGE0IGxlZ2FjeS10cnVuaworNjA1NTAgNWJkYzhiNTk5MjIyYmExNGY3ZmJhZGJkY2UzNTQ3NWJlNzEyNTQ4NSBsZWdhY3ktdHJ1bmsKKzYwNTUxIDRhZDA5NTY1NTc5ZDdiY2Y3MjA5YWQ2YmNjZmFlNWVmZTZkNWMxZWQgbGVnYWN5LXRydW5rCis2MDU1MiBiZGNmNDBkMWIzOGViNGY0NzczZmMzZjNjMzQ4NjI1M2EyYzY2MjMyIHB5M2sKKzYwNTUzIDViYzU4N2Y5MDE2NGM1YjA3YWNkZGJjNjY3MWMyYzg4OTE0ZWRkYTcgbGVnYWN5LXRydW5rCis2MDU1NCBlYjk3ZTgzMDJmYTMxMDZjNDg0MzZjY2UwNDVkYTkxZGU4YjVkMTYxIHB5M2sKKzYwNTU1IDRhYTYzODMxMzI5ODBiM2U0MmMxZmQwMWI4NWE4N2RhMzgzZWRjYzkgbGVnYWN5LXRydW5rCis2MDU2MCA0ZjZmNDRiYzUxOTU3ZTMwMmEzMjRhNGYzODVhNzM5ZjM0MWZmZDIyIGxlZ2FjeS10cnVuaworNjA1NjMgNzUwMzlkMzExOGFlZWFkNjVlMzdhMTIzZDI3MjVmYzU2ZjVlMmM5NCBsZWdhY3ktdHJ1bmsKKzYwNTY0IGEzZmU3NDg1ZjVjNTU2YjNmZWVjNWVjYmZjOGM5NjNkYzJmMzE4NjkgbGVnYWN5LXRydW5rCis2MDU2NSAzODUwZDEzYmY5NmI3NTM5YjVlODI4YWNlYWJkZGYyZWM5MjFkNTY4IGxlZ2FjeS10cnVuaworNjA1NjYgZjAzOTU1ZmFmZmI0NzRiNjEwZGExZjU1YTViZGI3ZmI0YjgzN2E1NCBsZWdhY3ktdHJ1bmsKKzYwNTY3IDhmZGQ2ZDYyZWE1NWFiNzRjMmJlOWE2N2U5YzAwYjU3ZGU5YzE2MGUgbGVnYWN5LXRydW5rCis2MDU2OCBjYzMxOWE1ZjUwM2U3NDA2ZTFkZDA5ODU5ZTZkODNlYTBkYzA4OTYwIGxlZ2FjeS10cnVuaworNjA1NjkgM2Q3Yjg0ZGFhMzRhNGQ0Y2JhNTlmNDJmMTc0MzVmNDk2M2ExZjI0YSBweTNrCis2MDU3MCAzYmU0ZmFmZDljYzBkZjM3N2U4ZWY3OTZhMmNmMGRmNzI1NDkwNjU2IGxlZ2FjeS10cnVuaworNjA1NzEgMWJlYjdkMjkzZjU1MmM4MGNiNTVjZDI3YjRiZTBhNDE3NTg5ZDBjMSBweTNrCis2MDU3MiAzOGRlMGU0MWQyNTRkNzQ2OTQwZDhiYmRkMjM5NWQ4YjU4MzBkZDgyIHB5M2sKKzYwNTczIGY2OWRhM2Y1NzIxNzY2ZTFmYjFkZmE2NzI5NjY4YzQ1YWE2YmVhMmEgbGVnYWN5LXRydW5rCis2MDU3NCA5YjY3ZDI1OTVhMjMxYjZmODkyZDc1OTQ5YzY4ZTM4MWQyMDFkOTU3IHB5M2sKKzYwNTc1IDY0M2MxMzk3Zjk1NDBmMDJlYzhiYjQyMWUyZGJkMTUyZTFmNTY1OWEgbGVnYWN5LXRydW5rCis2MDU3NiA5Njg2YzRiNDYyNDNkYTg1YzJlNTNhMDdmNmQ3ZGQ2YTZjOWM2ZGJjIHJlbGVhc2UyNS1tYWludAorNjA1NzcgZTYxMTM1ZjdmOWJiZmFiN2M1YjE2NjAyYjFjNjAzNDgxNjZkODU0YyBweTNrCis2MDU3OCBjYjFlNWMzN2QzZDAyNDBlOGM1OTc1ZmViNjJhYTNkMGEzMzdjOGVmIHB5M2sKKzYwNTc5IDg2NjAyYjYwMzQ2MmM4MTZhODY2MjJiMzFiNGNkYzRhNjFkYTM4MDUgcmVsZWFzZTI1LW1haW50Cis2MDU4MCAxZjg3ZWM5OTFlNTlkZWFmNDVhZTYxNzZiNzUzMjFkZTQ4ZjIwMDVjIHB5M2sKKzYwNTgxIGU4N2JkOGRkZDAxYjBhMDkxMWU5ZDYwZDZhZmQ3MDY1NTFkYTJmMjEgcmVsZWFzZTI1LW1haW50Cis2MDU4MiAwZGZhYTkyYmQ1MzQ4ZGI0OGMxZWExNmIwNjE1NWExOGJhNjEyNWZhIHJlbGVhc2UyNS1tYWludAorNjA1ODMgZTYwNjliMjQwMzFlYWU0YTBlN2E1N2ZhMGRhMDU3YjUyZWEwOTU2NCBweTNrCis2MDU4NCAzZjhmODY0OTNkYWFlODI5NzBiNGI5OTg2NjU4OTRiNGNlMDlmZmU4IGxlZ2FjeS10cnVuaworNjA1ODUgYmRmNzQ4Njg5M2JhYWEyYzcxZjU5NjQ3YTkyYmNiNjA2NzlkNTNhMyBweTNrCis2MDU4NiA2NDYzNDc0NDRmYWE1MmNjMTA1ZGEyNTZhNWM4YTY2OWRmMDE0Y2U0IHB5M2sKKzYwNTg3IDViZGE0Zjc2YWQ5MmM2NzUxYTQzYTQwNDUzYjE2MWE1OWVjNGM5NGYgbGVnYWN5LXRydW5rCis2MDU4OCA5NGQ5ODA5NjYwNTZmZTNlZTkwNTllZTRkMTZlM2E2ZTdmNmM4YTViIGxlZ2FjeS10cnVuaworNjA1ODkgZjJmOTkxNjM0NzgxNDg0YTQzYjNiMGRhNzA2Y2ZjZGI5YTk5MmI5ZCByZWxlYXNlMjUtbWFpbnQKKzYwNTkwIDhkODkwMzdkNWZjMWFjMjBhMTE3NTZlMGQwY2U0MmZhZTU4NGE4NTIgbGVnYWN5LXRydW5rCis2MDU5MSAwNjBmMDM5ZDJmYWI1NDU3NThjMGJjYmY5N2Q1YWEyYTRjOTc2Y2Q4IHB5M2sKKzYwNTkyIGNmYTI4MDQyNGI2NTBmODc5ZWUzMDg3ZGMwNzVlZTcyYzhhYjhkZGIgbGVnYWN5LXRydW5rCis2MDU5MyBiMDExMzY2MTAyZGJhYjc3OWQ3YmM1NzI1YzdiOWJhOWYwNTk0Y2NkIGxlZ2FjeS10cnVuaworNjA1OTQgNGQ1OGMwZmE2ZTM0MzIwN2I1YjE4OTBiYTUwZTQxYjljYWU0OTVmYiByZWxlYXNlMjUtbWFpbnQKKzYwNTk1IGRhYzQyMTdlOTk2NWEwZWE5ZTIzY2E4NjY4OTAyY2NlNzYwMDNlYjYgcmVsZWFzZTI1LW1haW50Cis2MDU5NiBkMmI0OWE2OGU2ZjdiYjBlYWQyNmIyZWQwNzExOWY5OTg4ZTExYzdiIGxlZ2FjeS10cnVuaworNjA1OTcgNWZlNTU3Yzc2MGEyMDBkNjc4NmYwYmRkYzc5N2QyZTNiYmJlMDkwYyBweTNrCis2MDU5OCA2ODc0MzdmN2I3ODQ5MTY5MmZhY2Q3MTBjZjAwZTZlMjczNTAyOTM1IHB5M2sKKzYwNTk5IDFjMmEyNjY4NmU1NDQwMWJkZjFkYzEwM2VjY2NkM2E0OWZkOWNjNzEgbGVnYWN5LXRydW5rCis2MDYwMCA4M2I1ZDZiMmFhNzBmM2NiMzVjZDljZWUzZTBhODEyYTc2ZWM5MmYzIHB5M2sKKzYwNjAxIDAxZDFhNGZmZDViMzVmOTk4MWQ0N2FhZGNjOTdkN2RjMTVhOWVlOTggcHkzaworNjA2MDIgNjg2MzZlYTg5MTUzMTE5MzUwZjVmZjhmYmZmNzlmZGYxZmM3MzdjYyBsZWdhY3ktdHJ1bmsKKzYwNjAzIDhiYzFmZGM2MzM3MGQxNGZiM2QyYWFmMDZkZjM5MmNjOWZjOTI3YTggbGVnYWN5LXRydW5rCis2MDYwNCBmNGMwZTUzYzM1NjFhMzZiOWQ2YTViMTI3NGJmZWNiNzlkZjEwOWY5IGxlZ2FjeS10cnVuaworNjA2MDUgNzdiMzcxYzY5NThjZWRlZGQwNTdkM2VjNjRmMTljYmJmYjJhZGNjNyBsZWdhY3ktdHJ1bmsKKzYwNjA3IDhmZWM1MGEzODU5ZjRkMWRmMmE0YzdlZmYyYjk3ODVmMDg1MzA2MWIgcHkzaworNjA2MDggMTExY2IyYWQ3YWY0OGQ2NTFmMjE0NTdmYmU5NGFjZWJlZmU3Y2VjYiBweTNrCis2MDYwOSAzZWNkNTI2YzM1YzU2NzFlNWQxZDFlY2RiNzJjZTZjMmE3ZjY3ZDJjIHB5M2sKKzYwNjEwIDhlZjNjN2MwMDQ3MDE1OWFmMGJlMDc4MDc3OThkM2EzYzc4MjgxMzEgcHkzaworNjA2MTEgYjY1Zjc5ZTM1YjA4ZWNlNGI4OGJkYmUzM2U4NzY3ZWE4NTNiYWRjNyBweTNrCis2MDYxMiBmZGQ5OTI5MWNjNDU5MTZlOWVjMjNhYWYyNzIzYTIxMTU2NGEyMWVhIHB5M2sKKzYwNjEzIDE2NTNmNWZmM2MwMDE0YWFmODMyOTE2NGJlNDE0MzdiOWM3NTBiOTkgbGVnYWN5LXRydW5rCis2MDYxNCBhNGM4N2M4ODk2NDgzMWQzODNmNzg4NWRjMzgwYTYzMWM2ODQ4NTY4IGxlZ2FjeS10cnVuaworNjA2MTUgNzM3ODI3YjRjNWQ3NWY1MjU5MmI5NzA4M2ZlMmJiNTBjNmRlYzRkNiBweTNrCis2MDYxNiA5MjBhNzYzM2FlMDg5MjI1MWRlYzEyZmM4MjIyZDFjZjRhNzZmZjE2IGxlZ2FjeS10cnVuaworNjA2MTcgMTQyYTExYjMwNTdlOWFmODdmMjYzZGQwNzI2OTg3OTZmN2Y0YjE3YSBweTNrCis2MDYxOCBiODQ3YTk4MjNiMmZmZmFhMjU0NGE2MDM2NjY4Y2Q1NjViNWMzMzg4IGxlZ2FjeS10cnVuaworNjA2MTkgMzNiNzhhYWZiYmIyMjIyYzk5MDE5MGVhYmM4OTRkYWMyNjkxMWVhMSByZWxlYXNlMjUtbWFpbnQKKzYwNjIyIDY1ZmIyMTc1MDk0MjVjOWU3MWU3ZjEyMWI1ZTEwZmFlOTFjMmE3MmMgbGVnYWN5LXRydW5rCis2MDYyMyAwNTcxYmM0YWI2YzI4MjFiYTk4YzI2Y2FmYTU3OWIyOWE4ZjE3MmIzIHB5M2sKKzYwNjI0IDgxOTAwYTkxNDIyYmY3MTIxOGQ0ZGY0MWU5NGQwMzY1NTkwNmY0NjEgcmVsZWFzZTI1LW1haW50Cis2MDYyNiAwZjdjMzE3YmJlN2Y4Y2RjNmZkYThmZjRlNjQ1YjA4OTY3YzM0NTYyIGxlZ2FjeS10cnVuaworNjA2MjcgMGJhMzFjZWE2ZTAzYjJjOTIzNzk4ZTdhODkzYjNhYjc3MTgxYjZlYiBweTNrCis2MDYyOCBkYmUzYTEzM2I3MTgzNDJhYmI5MWFmMmZkOWZmOGZkYjUwNjM0MWQ1IHB5M2sKKzYwNjMwIGY1NWE0ZjExOTE0MTk1YTNmZTgwN2FjNDJhMTE0NTA1ZDdiOTUyYmMgbGVnYWN5LXRydW5rCis2MDYzMSBhMjEyNmVkYjIwN2IxMjg0MGNlMDRjYWUzODU4YTE0Njk3MDUzMjkyIHB5M2sKKzYwNjMyIDM0NjYyNWJhNTkwMzJjYjc0NGM2NTIyYjcxZjdiMGQ2NTI3YzM1NWMgbGVnYWN5LXRydW5rCis2MDYzMyBmZmUyZDBmNTdlZmQ3MWNmY2U2YzU3MTQ5NjAwYjliYTMxZTAzM2RlIHB5M2sKKzYwNjM0IGQzOWUxYTBlMDk2NTQ4MjM1MzUzYTA4YzM1MjhjNDIxMDgzODQzYzggbGVnYWN5LXRydW5rCis2MDYzNSAwNjNkMDIyYWMwMTFiODVlZTg2ZjAwZDIzNDk2M2QwYjI0Y2MxYjFiIHB5M2sKKzYwNjM2IDNmMTI0OTc1ZTA5OTU5NDVkNDY4NGFlM2MwZDZjNGQwYTJiMGYxZGMgbGVnYWN5LXRydW5rCis2MDYzNyAzYmIzYzc0M2YxMDVmNzEwYWE4YzczMzM0MTcyOTBhNTk3ODkzMTA4IGxlZ2FjeS10cnVuaworNjA2MzggOTM4YmE2MjJhY2EwM2NmMmRlNmU0OGQ4Mzc4NjNlZTc3OGZkZWRlZSBsZWdhY3ktdHJ1bmsKKzYwNjM5IDA5NThjYzQ2YjMzZjM0OWZjYzMxZjIwNTBmNjE2Y2Q2YTIzZjZiYjMgbGVnYWN5LXRydW5rCis2MDY0MCA4Y2JiOGFhNDViYTlhOWFkYjVjNjk1OTUxYjhmYWQyODdlNGU0ZmI5IGxlZ2FjeS10cnVuaworNjA2NDEgZmViNmRkMzZkNTNmMzNlOTY2MzAyYTdmYjQxNGY5ZDUwMmNiZjVhYiBsZWdhY3ktdHJ1bmsKKzYwNjQyIGM3M2EyODAyYjczODY2MGQxMmEzOTQxNDIwOGVmOTFmMDUyMTEzYzIgbGVnYWN5LXRydW5rCis2MDY0MyBlODJhYjI0MjNhYWI3MDljNmFjOTdhNjQ4ZjMyNmI4MWJiNmQxMTJjIGxlZ2FjeS10cnVuaworNjA2NDQgNDRlMmQ5ODk5MTE1ZDcyOGE0YTlhMWNmMTg3YTE4MmIyYjc3YjFmYSBsZWdhY3ktdHJ1bmsKKzYwNjQ1IDdkYzlkZWUwOTllODgwZGE3ZjFiOTAxMTgxNTNhMDE3MmVkOTIyNWQgbGVnYWN5LXRydW5rCis2MDY0NiA1YWM2MDVjMGYyN2NhOGQ4NGJhOThlZGQ4NDQ5Zjk2NTgwZjJhMTJmIGxlZ2FjeS10cnVuaworNjA2NDggMjE5ZjdmMjEzNGQ0OGVmOWYwMTViNzUyZmRjM2QyZGNmZGRhMzg4YSBsZWdhY3ktdHJ1bmsKKzYwNjQ5IGRlYjQ4NzNmYTBmMDRjNTdiYWRlZWYyNjYyMmE4ODMwOTUwM2ZmNzEgbGVnYWN5LXRydW5rCis2MDY1MCA3ZmE0NzI1Y2NlODc5ZGFlZGExOTExMGFkYmNiYTkzNWI1Y2RiYjY3IHJlbGVhc2UyNS1tYWludAorNjA2NTEgMmM2M2YxNTIyYmJlNGU3NmVjZDNhOTNmMmU1MWNlYTgwN2FlOGIzNiBsZWdhY3ktdHJ1bmsKKzYwNjUyIGNkZDJlYTA4MGUyMzY1ZGRhZWQ2NjIyN2YwYTcwOThkMTY0ZjVjNDAgcmVsZWFzZTI1LW1haW50Cis2MDY1MyA0ZTMzZmM4MmU3ZjMxODhmNTkxNThhNWEzNTkxNGI5NWFlMmY4YTRhIGxlZ2FjeS10cnVuaworNjA2NTQgNDAzZjcwNWQ1OGM5MmY2YWE0MjVlOTRlOGMxZDFmODViMWFkM2U5NSByZWxlYXNlMjUtbWFpbnQKKzYwNjU1IDM4MWY0YTI5MzNiNTg5NzAxNGExZTg4YmI1ZjkyYjhjNTAwM2U5MjMgbGVnYWN5LXRydW5rCis2MDY1NiA1ZDhmZWNhMzMzMTVkZTk3YjdkM2FkYjE5OWNmM2NkYzIyNDVlMTJjIHB5M2sKKzYwNjU3IDU5YTY0ODViYWMwMjMxZDFjZjYyZWEyNTE5YzMzNmUxYzM2OWNiMGEgbGVnYWN5LXRydW5rCis2MDY2MCA0ZTQzNzIyZmQ1MDNlMTYyN2MxMDY3NDI3YjQxYjUzYjIyZDU4MjJlIGxlZ2FjeS10cnVuaworNjA2NjEgMjYyMjYzNzM3YmNlMmRjZmYyYmFhMzI0ZDNjNjg4YTk5YmM5MDEzZiBsZWdhY3ktdHJ1bmsKKzYwNjYyIDFjMzI2ZGVhNDk0YzJjOWViODcwMGNhOGIzOWM4MGY5N2U0YmY0ODEgbGVnYWN5LXRydW5rCis2MDY2MyBlOTRhZjBjN2FhMTJiYTI4NzJmYjY1M2VmMjQzMWVkNWZjYjkzZjQ2IGxlZ2FjeS10cnVuaworNjA2NjQgNDE2Njk0NWEwY2M0ZmZiNzZiODZiMzgxYWM2NGNkY2MzZjliMDMwZSByZWxlYXNlMjUtbWFpbnQKKzYwNjY1IDA0NjNmODAxZDdkYzUwOTczODUyZDIwMjY3NGUzNjAzNzJlYzQ4NmMgdHJ1bmstbWF0aAorNjA2NjcgNTRkY2Y4MDZkZWQ2M2MxODdkODcwYTM5MmU3MDAwNWU2YTExMDg3OCBsZWdhY3ktdHJ1bmsKKzYwNjY5IDQyNDIyY2YwMjA4YjBhZGVkNmNhZmY2ZDVkNzg2YjAyOTgyMmY1MTUgcHkzaworNjA2NzEgZWNhOTBiOGFhN2ZkYjhlMjk3OWRjMDk0ZjhlNmZkN2FhNDAzNWE5YiBsZWdhY3ktdHJ1bmsKKzYwNjcyIDNmYTdmYjMyOGQ5YWEyOTBiZjc4ODQ3Y2Q1Nzk1OWI1MjZkNzI3ZGEgdHJ1bmstbWF0aAorNjA2NzMgMTk4MGQ3MDU4NjI3MjU3MDczZDIyYzQ4NzA0NDA4NTAwMDQ2ZGU0YyBsZWdhY3ktdHJ1bmsKKzYwNjc0IDgyZDQ0MjgwYzEzNTZlYWQwNTQwNTYxZTFiMjIwZTU5NGEyOWE3MTAgbGVnYWN5LXRydW5rCis2MDY3NSA3N2M1NzkxYjdjMjEwMTc3ODFjNzY2M2I0MjUzOTQyZjY3YmY4ZTNkIGxlZ2FjeS10cnVuaworNjA2NzYgMTViYzhlODMyNDIwN2MyN2UzMTFiZmIyMjY2NDdhNDI5ZWY4YTBlNSBweTNrCis2MDY3NyA2OGQzMWE5MWZkZjMyOTIyOTYzNTVmZGVlZDM1NDM3NmQ4OTcxMDJjIGxlZ2FjeS10cnVuaworNjA2NzggNTk1MGM0OWYyMjVhZGVhNDIxNjAzNTE4NGFkMDk2OWM0ZDJlNjZjOCBweTNrCis2MDY3OSA5N2I0MjBiMmQ4ZDEwZTBjYzUyMjM2OGRlNzk0Mzc2MGZkNmQyM2ZlIGxlZ2FjeS10cnVuaworNjA2ODAgNWJhNWM0YzlhMDE2OTY2MWY3ZDFiZDdiNGU0YTM5MGVjMzA0NTFlOCBweTNrCis2MDY4MSAyYTgyMWUwMDFhMmI0NmQzZGE4MTA0YmY4ZTk3MjkzZmMxMTg0YWNjIHB5M2sKKzYwNjgyIDg1MjdlZDc1NjNkMGI0YmNmMzg5NzhjNWM2OWUzNmNhODU5NmJiOTQgcHkzaworNjA2ODMgMGYzZDU4ZjljZDM1MjZkY2I2ZjJiN2M4MTg0YWZkYjNhNmEwZGViZiBweTNrCis2MDY4NCA2NDU5MzhlMGViNTJiMjUwNmJiYWM3NTlkZGViODc0OThhYzU2MjFhIGxlZ2FjeS10cnVuaworNjA2ODUgMjQ5MDZiNzkyNTQyNDM3ZWYwMGY2YTMxN2FhOWQ5ZDhkMDMyOWY0NyBweTNrCis2MDY4NiBhZWJkOWM0ZDE5ZWRmYzFkNDkxMGY0YzQ1NzdjYTk3ZGNmZDkyZmI2IHB5M2sKKzYwNjg3IDAxNTllNjJiOTdjNTVjNjA0OTdmZjEzNmI0YTQ3MzI5ODFhNDFlZDQgbGVnYWN5LXRydW5rCis2MDY4OSBhODIxNTdmNTM0YTdlMjk5NDU1MDQ5Y2Q0NjJhZWMyMTU0NmNhMmY4IGxlZ2FjeS10cnVuaworNjA2OTAgYTJiZjJhNTk0MDRhOTBlZjYzYTRjOTJiNWVhZmI5MzI5Y2Q5Yzc0ZCBweTNrCis2MDY5MSA0Y2QxZDA0NzRhMTM0ZTVhODAwM2M1ZjI5MzkzZDY2OGQ4MzVlNTM3IGxlZ2FjeS10cnVuaworNjA2OTUgODM4MjFlMGYzOTViNGQ3YzUxZGY1NDEwMTZlNTFjMGQyYjlkYjNkMSBsZWdhY3ktdHJ1bmsKKzYwNjk2IDMyOWM2YjJlMTEwNTE3OTRiYWU4NmNjM2I1MDljMjk1MjI3NzY2MzQgbGVnYWN5LXRydW5rCis2MDY5OCBiYzYyODU0ZWU5YzIxMTQ4OWMzYjhkODVlN2QzMzAxNDc5YjEzYmQzIHB5M2sKKzYwNjk5IDYyNjBkYjIyZmY3NTJmNDVjNDhjMGI4ZTdjMGNmZTRiNmE4MmQyM2EgcHkzaworNjA3MDAgNTg1YWVhOTA0ZjBkYjRkZGE4MjZhNzMxNjMzYTU1NTQxNWQyY2ExOCB0cnVuay1tYXRoCis2MDcwMSA4NzI4ZjgxNmNhNzUyMDNlNDQ5YmVhNTNiOWY4YjA0NGNlOTk2MGI3IGxlZ2FjeS10cnVuaworNjA3MDIgODY4OWI2NzI2NWJmYmYzNmYyNjUxYzc5NDU0MWJjMzYzMjJkMjVjZiBsZWdhY3ktdHJ1bmsKKzYwNzAzIDYxZWJhODMzMmMxNDVlMDI1Y2NlZGMyMGE2ZjRkODEzYTBmNWU5ZjMgbGVnYWN5LXRydW5rCis2MDcwNCA3NDUyODBkNzE0MjU1Y2VjNDcwOTQ3ZmM5YmExOTliZjdkNTdiNzU3IGxlZ2FjeS10cnVuaworNjA3MDcgODY5MDZhNWNlY2E2MzQ4ODI1NjYyYzRkMzlmZjAwYzg3NDU4YjRjMiBsZWdhY3ktdHJ1bmsKKzYwNzA4IDJkNmY2NDBmNzA4MTM5YzgxMGRkNDQwYWQ4ZGU3MTRiZWVjODMyYjUgcHkzaworNjA3MDkgODUzYzczYjAyOWUzZTI5ZTc2ODU1MDI1Y2FlZTEwMzNlYjVmNzQxNSBsZWdhY3ktdHJ1bmsKKzYwNzEwIDdmNGNlZjA0MTg2ZjFjYmJmNWMxMzQwNjI3NTVjZmZkNjBkY2JjYTEgbGVnYWN5LXRydW5rCis2MDcxMiA0YWUwMzk3ZWYxYzVmMTRkOWM0MjdlZWQ1N2I5ZjA2MDE2ZGZjYzY2IGxlZ2FjeS10cnVuaworNjA3MTMgNmViZTg5MzI4YjVlNzNlOTYyMWRlMjFjNzRiN2ZhOWE5ZTU5NjEzZCBsZWdhY3ktdHJ1bmsKKzYwNzE0IDFkYzcxZjA4ZWE3YzdjOGI5ZGYwODA1NDQ2NTI3ZDg2ODJkYTU3YzIgcHkzaworNjA3MTUgZmI1NTFjOTM4YTU5OGU5M2U0MTQyNDI4MzFiNDFkYjAyODFkMTI2ZCBsZWdhY3ktdHJ1bmsKKzYwNzE2IDAxM2U2NmNiMzZjMGZlNWIyYWI0NGRhNzJiOWMwYjkwYzA0NjM0ZGQgbGVnYWN5LXRydW5rCis2MDcxNyBmZDc3ODlhMWJmY2RhMmE2NWRkMzQyNDJjMjlmZTMwZmRhNGRiNThlIGxlZ2FjeS10cnVuaworNjA3MTggZjhlZTA2YTUxYzBiMmYyMDM0ZGVlNjM2MDQ2OTFiZjUyNGJlNGE0YiBsZWdhY3ktdHJ1bmsKKzYwNzE5IGM3ZjlmOWZkY2Y4MjcxYzMxMjExMjUyMzMxOTQ3M2Q3MzJhZDRlZGQgbGVnYWN5LXRydW5rCis2MDcyMCBhOGNhOWUwNjVkOWRlZTE1ZTk1ZDM0MWE3N2U5OWViOGI5ODZkZTE1IHB5M2sKKzYwNzIxIGE1MGMxZmI3ZDkyMGE4MWIxOWFhZDg3ZTBmMDJiMjVkMzI0ZDNlMWUgbGVnYWN5LXRydW5rCis2MDcyMiA5ZjFhMmM5OTI1NWZmNDFjMTEyZjQ3ODVlNjM4ZGEzY2MxYTc4MjUyIGxlZ2FjeS10cnVuaworNjA3MjMgMWRjNWNhMTE0NDhjZDA3MzA4N2M5Zjc2NTIzMWI3NmZhZmRjZWU4ZCBsZWdhY3ktdHJ1bmsKKzYwNzI0IGRjNTBkZWU3ZjhlNTJlMzFmZmQwM2ViZGM2NzcwMTZjYjZkZDY5NDcgdHJ1bmstbWF0aAorNjA3MjUgZTY3MDUwZDYyYWRmYTQ2ZWRhZWFiZjYwZDNiMTlmYzIxMWIwNWY1NiBweTNrCis2MDcyNiAzZTVhNzkwZTBjZDY1ZDllNzhhNThiYzA4Y2JmMzZjOTE4OGYyZWRlIHRydW5rLW1hdGgKKzYwNzI3IGVlZWYzOWE2ZjRkZDk5NWFmNmIzMzBhNzI0NDljZGY5NTY3NWYxYTQgcmVsZWFzZTI1LW1haW50Cis2MDcyOCA0YWZiY2RlMzQzZWRiYzNkMjgxYTk0MmQzODVjMzMxN2E0NDMzYjJjIHJlbGVhc2UyNS1tYWludAorNjA3MjkgNDU2NWM2OTQyMGI4Y2IzNGE5ZjEzOWU0ZTQwMzEzYjRmY2Y0YTZkMiBweTNrCis2MDczMCA3OTA1NTRhZTJiMDRhY2IzMGFkYzcyNjcxMGIwN2I5MWQ3MGRjMGZhIHJlbGVhc2UyNS1tYWludAorNjA3MzEgYzBhYTZkOGY1Y2RiNDIwZTI4OGUyN2M2NjlmODc5MWU2N2QxMWU1NyBsZWdhY3ktdHJ1bmsKKzYwNzMyIGMyZmMzMThjNGZhMzMzZDZlODBiNWM3YjRmODA3NDliOTRhODI1ZDIgcHkzaworNjA3MzMgY2EwODUzNjIyZjFhMWY5YjlhYzE5MWI4ZTIxNGQ4Yjc5MTQ0NGRiZiBsZWdhY3ktdHJ1bmsKKzYwNzM0IGY4NWI2M2Y1NjcwNjA0MThhNzk3YjUzNWNkYmE1YzI5NjFkZDZkYzcgbGVnYWN5LXRydW5rCis2MDczNSA4MDhmODRjNTY2ZjBlZGFkNmFiYjY5NzQ1OWUyNzhjM2ZkZDBlMmFkIGxlZ2FjeS10cnVuaworNjA3MzYgODViNjhkN2Q2ZjQxMWVjY2VjYWIxZmUyNDhjYmM5ZjIzZGFmZWIwYSBweTNrCis2MDczNyBhMzlmYjg5OGJlYjFhZDNkYTNmNjExMTJhY2ZmOTRjN2RlMzlmZTgwIGxlZ2FjeS10cnVuaworNjA3MzggOTJiZDIxZTZhODJjNGQyYzc0ZjViMmNlZTUxMmRiYWQxMWE2OGJiMyBsZWdhY3ktdHJ1bmsKKzYwNzM5IDUwNzYyYjE5NGEwMGFkNmIxNWFhMWQ2NzVkYTFjZWU1NWU2NzBlYTUgbGVnYWN5LXRydW5rCis2MDc0MCBlZWI3MmNmMzdhZWI0Y2I0ODE1NmU0ZDFjYzRmZGZiNGIxMWY1ZmQ5IGxlZ2FjeS10cnVuaworNjA3NDEgNGNhNzA2NjNhNzlkMDlhN2Y1MDhkMGE4ODFiNDA1MjIyZWMzMzM0MCBsZWdhY3ktdHJ1bmsKKzYwNzQyIGYwZThiNTQxZjExMzIxNTg0ZjFlNGY2MjE5NTg0ZWQ5MzVhN2E1MDkgdHJ1bmstbWF0aAorNjA3NDMgMjc1ZWQ4NTkzZWM2MWQxNjBmZjZhZWQyMmQ1OWNiY2UxM2MyZmU2MiBsZWdhY3ktdHJ1bmsKKzYwNzQ0IGJhMTdiMjFhYjkzZTY2NDc4NjlmNmE4ZWU3MDU1NTVhY2U0MjM0NGQgcmVsZWFzZTI1LW1haW50Cis2MDc0NSA3ODlhYTY3ZGNlNmQ4MmIyMWZiZjY3ZWQ1NzM5MDBhZTg3MDcyMDMyIGxlZ2FjeS10cnVuaworNjA3NDYgNWY1YjQ2NDVkOTEzMmI0YmE5OGU2OGVkYmQ0YWI4NmNhN2I2MGM0MyBweTNrCis2MDc0NyA4ZWI4ZTlhMzI2MGQ2ZWU5ZDBiYmQ1YmMwYzYyNmY4MjkzNmFlNTk0IGxlZ2FjeS10cnVuaworNjA3NDggYWU1NWU3MTRkNzQ0ZDJhMDI2NTNhMGQxNjJhODc3NDBmNTAxOTdjNSByZWxlYXNlMjUtbWFpbnQKKzYwNzQ5IGE0N2Y1ZmZjMDgyMzUzN2Y3MjVhNTI4OTdkZTllMmYyOTBhZjJiNmYgbGVnYWN5LXRydW5rCis2MDc1MCAyN2Y4ODU5N2QwMmI4YzExMThlNTA1YjY5MDE1OTkzZmJkZWQzZDYzIHB5M2sKKzYwNzUxIGIxY2I2YjQ0Yjc5ODczMzM3NmRiYTg5Mjk1ODExZTAwNmE2ZmI2MDQgcHkzaworNjA3NTIgZDY3M2QwMDNiNmNhODFlMTRkNzY2ZTY3OGVmNjk5N2IzODIyYzVmMyBsZWdhY3ktdHJ1bmsKKzYwNzUzIDk1YzAwMDI2NTQwMDkwNzA1NzU2MjQxNGMyYWQ1NDllYmRlZDI5YjYgcHkzaworNjA3NTQgZDMxOWY0MGNkMDAwZmI4NGVlNDg3NTc5OGNiYTYxMmIzOTU4NzgxOSBsZWdhY3ktdHJ1bmsKKzYwNzU1IDhmOGFkZWM5M2NmMmNiY2Q2ZGNkMDJjNTk1MzYxZmI0MTQ0MWY2YWUgbGVnYWN5LXRydW5rCis2MDc1NiBmMTIwNTEyMWU4NDhhNjIzM2NkOGRmNDU0ODc3N2MzNmM5ZmU0YzU3IHB5M2sKKzYwNzU4IGNlZWUwOTgxZjE0MWQ0MDIxY2M1NTMyYTc3MTg4Zjk3NzJkMTM4MTEgbGVnYWN5LXRydW5rCis2MDc2MSAxMTRkYzIxNTgzNjlkODc2MDAyZTNkOWVkZDk1YjdlYmJlYjFjNDYwIHB5M2sKKzYwNzYyIGM1MjA1NTg3YjJhYmMwNjdmN2YyODk1YjNlZTAwMmQ0ZTEzZjZkZGMgbGVnYWN5LXRydW5rCis2MDc2MyBhZTllY2VkYjRmOTFjNjM4ZDUxNmI4NTlhOGM1MmQ5ZTQyNzI4M2Q4IHB5M2sKKzYwNzY0IDE4Yzc2YWY0ZjM2NDg4NTQ1NzU2NWMxYWEyNTY1MTY2MzNhMTQ2YzIgcmVsZWFzZTI1LW1haW50Cis2MDc2NSA2ZWI2NDJlMGFkZDgwY2Q1ZjdhODc2NjBkMzg2MmE1NzVlMGFlYjE5IGxlZ2FjeS10cnVuaworNjA3NjYgN2VkZjcyMjViMDVmOGIyYjU3NjE3YmJlYmQ1MTM2ZWE5Nzk0ZjE1NiByZWxlYXNlMjUtbWFpbnQKKzYwNzY3IGJlZWEzNWIwZWQ1MGFkNWExZjU1OTYwY2U1MGIyZDlmODA3MmQ3Y2YgbGVnYWN5LXRydW5rCis2MDc2OCBiMGYzODBhOGI0NDdiNGIzZmZhNGJkNWY1ZDIzNGY3ZTYxMzQzNDI0IGxlZ2FjeS10cnVuaworNjA3NjkgZjkwM2E2NDNhODhiMWI1MWE0NjgzNzM4NGY5NDk3OTRmMTFkN2M4NyBweTNrCis2MDc3MCA1ZjJlYTk2NWY4NTNlY2UxODgwYmUwNDg5ZmYzZjg5OTJjODUwYjNkIHJlbGVhc2UyNS1tYWludAorNjA3NzEgMzBiNTZiZWJkZTU0YWRjOWQ3OGNhOTUzMjBiYWJkYTVhZWMyZDNlOCBsZWdhY3ktdHJ1bmsKKzYwNzcyIDczNzIzMDhlYjYyZjlmNjRkMGQ1YWFjZjU4M2IwMGY4MTFlNzM3OGEgbGVnYWN5LXRydW5rCis2MDc3MyAzMzEyMmZmODM0MDUxNThlYmY2YjhlYzE3YWNhOTdkZmM5ZGEwZWNmIGxlZ2FjeS10cnVuaworNjA3NzQgN2QyZmJiNGU1NzY4NmE0ZmU4YjczN2IyOGVmMTdiODM2YWEzYmFkZCBweTNrCis2MDc3NSA2MDhiZDEwMTRmYmVhNmZjZDNkZjlmMTZjNDFjYjFkMjJiM2MwNWIwIHRydW5rLW1hdGgKKzYwNzc2IDU4NGZjMTVkNDdhYzJhNzBhZGI2YmI4OTU2MTIyODk2MTJiZmRjNzkgcmVsZWFzZTI1LW1haW50Cis2MDc3NyA0NDBlNzE1YmIzZDJlZGFjNjBmMzVjMDk0OGE1MzNmYzNhNWJlMWFkIHRydW5rLW1hdGgKKzYwNzc4IGQ2ZWY5Y2I1NDNhZjVhODE3YmEwNDNjYWJjNTllMTMyNDUyM2IwNzIgcmVsZWFzZTI1LW1haW50Cis2MDc3OSA2ODVjZWUxNDEwZjhlMzQzZjg5MjhkZDk1MTAwM2ViOTVmYTllMGQ1IHJlbGVhc2UyNS1tYWludAorNjA3ODAgZjhmYjI3MTA2ZWNjMDE4NGYyYjZlNTYyYWE5MjdkNmI1ZjU0ZDAzZSByZWxlYXNlMjUtbWFpbnQKKzYwNzgxIDA4M2JmNmUwYWU1MDUxY2I1NWQ2YmQ3NDJjOGQzNGJmYjE3ODA0YTEgcmVsZWFzZTI1LW1haW50Cis2MDc4MiA3NmIyZGU5YzliMGI3ZTUyM2RhNWQzZTk3OWI3MzBkMzRjOTc1OTA5IHJlbGVhc2UyNS1tYWludAorNjA3ODMgMWUwZWUzMjRjNTEzNjY4NDM0Yzg4MjJjZDkyZWJkOGMxZWIwZTY2YiByZWxlYXNlMjUtbWFpbnQKKzYwNzg0IDU2Nzg2YTJkZWVjNDNiODczNmFjNWZlYjQ0ZDFiNzFjY2EzOGQ4NzAgcmVsZWFzZTI1LW1haW50Cis2MDc4NSBjN2U2ODNkNTJiM2IzZTExMjg4ZDIyM2RiNjJkNjZkNjE1OThlNmRiIGxlZ2FjeS10cnVuaworNjA3ODYgNGZjYjcwMDExNWQ4MDNhOWRiMzRjMzhmZTlkZTA4YzExYTU5YjE1ZiBsZWdhY3ktdHJ1bmsKKzYwNzg3IGU3MGY1NmNmNjk3MjJlMjAxNjkyYzUxMDQ3Y2U2ZDdhNmFiYmQ0ODYgcHkzaworNjA3ODggNjgwMTZhMDg4OGI5NjgzNzVjMGFjOWQyMTUzMDY2ODJkMTIxMmQ3MiB0cnVuay1tYXRoCis2MDc4OSAwOTVjYTlmZjBkOGVjYTljMzFjOTU2ODhiYjY3NTg0ZWE1ZmExZTI3IHRydW5rLW1hdGgKKzYwNzkwIGU1MThlMzlmNGE5ZTk1OTE3NmQ1YjBlMTAyYzE1YWY3MTQ5YTZhNzMgbGVnYWN5LXRydW5rCis2MDc5MSBlZjc1NDgxNzNlNjE3MWU5OTU0OTVjZDdiODMwNzkzNTgwMTFmZGUyIGxlZ2FjeS10cnVuaworNjA3OTIgMGRkMDVlZWQ2M2RlOTg2Nzc5Zjk1MjIwNDBlOTZjMGYwN2JiNWU1YSBsZWdhY3ktdHJ1bmsKKzYwNzkzIDhjYmUwYmQ5M2MyOGIwMTMyM2EzODkzMjFiMTI5NTkxMjBlZGVjYTEgcmVsZWFzZTI1LW1haW50Cis2MDc5NCAxOTBkNTUzNzNlNTA1N2QzYzhhNzRhNjRmMmFkNTkyM2ExZTY4MjJiIGxlZ2FjeS10cnVuaworNjA3OTUgNWFkOGFlNGQ3ODRlNmFjYjg2YmQ3ODVjMjA3ZDczM2VjNDZiNDI2MyBsZWdhY3ktdHJ1bmsKKzYwNzk2IGUyMmJjOGI5NjU0NzNmNTgxNzY5M2NkNTljYjkzNjY1NGRjYmFiYjMgcmVsZWFzZTI1LW1haW50Cis2MDc5NyA2NWFlNjhjN2FjYTM4MTYyYmEwNDg4ZTM2ZjhkYTA5OGJjMWNhMjFlIGxlZ2FjeS10cnVuaworNjA3OTggNWMxZGE3YjFiNGE2YjgyOGRiZWIwMDg1ZThjZTVmMTljYzZlMWUxZCBsZWdhY3ktdHJ1bmsKKzYwODAwIDBhOGFhZTU3NWNkZGRiZjNkMTMzZmNiNGVlZDkxMDgwZTNmZTQxZjMgcmVsZWFzZTI1LW1haW50Cis2MDgwMSAxZGMzMjJhZGJiNjc2NDAyZTUyZjUyNjhkNjZlMzRlMTA3NWY4ZTZhIHJlbGVhc2UyNS1tYWludAorNjA4MDIgODllYzQyYjI5ODYzMGU4OGIxYjk2OGI1MzMwN2I5YzA1NDY1MTRlNCBweTNrCis2MDgwMyAxNjdhOWZjODI4NDQ5MWNiNWNlYmUxMjVhMWQ5OWEyYTFjZWZkNDM2IHB5M2sKKzYwODA0IDgzZDJjNzA0NDNmYjcyYjJkNjA3MGVjYTQ0NDQ1MTI2Njg0ZWNmN2EgcHkzaworNjA4MDEgYTAzMzYxNzc5MmQxOWRlYzRiMWRkMGE2NzlkNzU0YTI4MTUyMjMzZSByZWxlYXNlMjUtbWFpbnQKKzYwODA2IGYxOTlkZTM4YWQwMTAxMzc3YWE0MGZhODI3MjIyZDAwOTAxYmVjN2MgcHkzaworNjA4MDEgOTU3MDIwZWQzYWZhZTllZTQ2NzVlMzQ4NWJhNjFjN2MxYmRmZGEzOSByZWxlYXNlMjUtbWFpbnQKKzYwODAxIDcyMWE1OTEwZmJmMGQ5OTBhNGNiMjM1YTg4NjI5OTk5ZTNhZmQwYjAgcmVsZWFzZTI1LW1haW50Cis2MDgwOSAxY2ViMmE2YzYwZWVhZTlkMTU4YjVkNGI2YzQ2NjdjNzNiOWQwMWQzIHB5M2sKKzYwODEwIDJkOWVjYTBiNDZmZDNmMDhiYmJkZGViNDQ0YWZmZmQ4MjBmNmMyZTMgbGVnYWN5LXRydW5rCis2MDgxMSAyMTgzNmUwYjllYjAzMTk3MWQ2ZGFkZmQwMWU5YWZhZWI4MjJjMWY3IGxlZ2FjeS10cnVuaworNjA4MTQgNzQ2YThlMWE3ODVhNTkwNWY4MDNjYmE3MjU5MjE4MzRhOTBkY2M1ZiBsZWdhY3ktdHJ1bmsKKzYwODE2IGUxOGNiMjFmNWY1ZmYwNzRjNGMyYWY0NjM3ZjYwYzkwM2I1NjU2MzYgdHJ1bmstbWF0aAorNjA4MTkgNDFkYzM2ODY4ODkwOGMzZjBkMTM5MjM3MGJjNjU5Yjg4ODE3OWQ2NSB0cnVuay1tYXRoCis2MDgyMiBlZWM2N2FmNGQ3ZGZmMTE1YjhkZGU3MWVmMjUxMTg2OGI0ZmFmNGE4IGxlZ2FjeS10cnVuaworNjA4MjQgMTBiMjYzYTIwMmNhZDM3ODYzZjcxMDczNzE4MDczNDU1YTA3NmE0NiB0cnVuay1tYXRoCis2MDgyNSBjZjVhNWQ3MzJlM2NjYjI5MjhiZjllYjJhYWIwY2VjNzAwNjBjMmY0IHRydW5rLW1hdGgKKzYwODI2IGY0ODM3NGI4YzFjM2Q4ZDM1NjFhMzliMTJmNTRiMmNjOTRlYmMzMDggdHJ1bmstbWF0aAorNjA4MjcgYTIzNTY3M2I5ZjhlYTI0YmE4MTc2MjYwNGEzZDRkMjBmOTRmYWE5ZSBsZWdhY3ktdHJ1bmsKKzYwODI4IDg5MWZiNWMzYmMxODJhMzE3NDVlNmNiOGZiYjFiNjdmNTAyNTRmYWMgdHJ1bmstbWF0aAorNjA4MjkgYjJmM2ZkOWE0YzY1NzE0OGQyMmQ2YWMwZjQ1ZjU3MDc2YjRjMTg1MyB0cnVuay1tYXRoCis2MDgzMCBhOTc2ODliM2U3NDI1ZTdkMzhlMTM5ZTZmYzA5ZmRlNjc3YWM0NDk5IGxlZ2FjeS10cnVuaworNjA4MzEgYjI3ZGUyOWEyMzI3YTYyMDg3NjlmZTFmMmVmY2IwN2VjNzU1OWUwNyB0cnVuay1tYXRoCis2MDgzMiAzMzIyMWFkYzBjMjA2ZTMyZmYxNDFhYTI4NTk5ZTIwNzVkMjU4ZDAwIHRydW5rLW1hdGgKKzYwODMzIDRiNDMyMTQ2MWE5ZjAyODdjYTdiZGMwMGU1NGVhYmMwM2UzMzViOGYgdHJ1bmstbWF0aAorNjA4MzQgYTU3MzkyNWM5MWU0MmVhMGNhN2I3YTFhYTZiNjE4MmE4MDFkYmQ5OSB0cnVuay1tYXRoCis2MDgzNSAzYTU1YzBmZDgyMmZiMzA1YTljOTgxOTM3ZjBiNDQ0ZmNiNGRiZmFlIGxlZ2FjeS10cnVuaworNjA4MzYgN2EzNTViNmIyMWFjOGQ2NGE2YzE1NzNjNDc2NWY5NGI2YzNhYzE4MCB0cnVuay1tYXRoCis2MDgzNyBkZjUxYmFkODY3MTAwNTQ2YWMxNzAyM2NmYjI4YjE1MmE5YjJkNDJhIGxlZ2FjeS10cnVuaworNjA4MzggNDUwNGRmY2MxOTI0ZGQ1ZjMwM2UyMmI1ZDUyZmY2MDk1YTNmMDFjNiByZWxlYXNlMjUtbWFpbnQKKzYwODM5IDNjNGQ1OTNlMTUzODY1YjdjZjZlZGJmMzZjYzY5ODNkZDZiYjQ2MjggcmVsZWFzZTI1LW1haW50Cis2MDg0MCA5MTVmZGFjZjcwMmRhM2FiNGUxYWY1NjliMmM5MWMzOWQ1ZjY4YWRiIGxlZ2FjeS10cnVuaworNjA4NDEgNTU3MjM2ZDc1MmUyZDk3OWVlMmZlMjJjZDliOGYzM2JjMGYyOTZjYSBsZWdhY3ktdHJ1bmsKKzYwODQyIDBlMmFhYTdiOWIxZmM5YmI5ZTVkOWFiYTVkYWJhYmNhMjExNjQzMjggbGVnYWN5LXRydW5rCis2MDg0MyBkOGYxMmJhZTM3OGFkMDdlNTk5MDM1MThlYzgxZGQ3ZTcyNmM2Y2E1IGxlZ2FjeS10cnVuaworNjA4NDQgMTY2ZTNiYTdkZTI0Mzc3NWVkODk1MTg4M2RiNWFlMGNiMTUyMzJhNSBsZWdhY3ktdHJ1bmsKKzYwODQ1IGM0NDc1MmQ5MGZkMmNjZTQwZDliNTZkZDJmNGZiZTE4YTI1ZDU0NzUgbGVnYWN5LXRydW5rCis2MDg1MCA2MmRmMWUzMzk4MzJiNmY2OGY0MjEzZDg0Nzk4OGM0NDJjYWM3MTkzIGxlZ2FjeS10cnVuaworNjA4NTEgNzExMzliNjkyNDM5YmRlZDgxODJiMzg2ZWRkMDEyZDI2NWRiZDFjNiBsZWdhY3ktdHJ1bmsKKzYwODUyIDlhY2ViOTA1NGIzZjlmZjJhNzA5OWQ2MjIyMTBhOTBmNWMxNWY1YzMgdHJ1bmstbWF0aAorNjA4NTMgN2M0YzQ2MzQyMTM3M2I1MmU0ZTc1NzVlZjE2ZjU3OTQwMDI4ZDBiNiBweTNrCis2MDg1NCBkMzc4NTlmMjllNTExYTEyYzQ3Y2NjODEwNTkwMzA4MTY1Yzc3ZjY1IHRydW5rLW1hdGgKKzYwODU1IDhjNjhkYjg2ZmY4N2E0MTNiYmRhZDBkNTY1NWRmZDYyZGQwYjEwYjUgbGVnYWN5LXRydW5rCis2MDg1NiAxYTg5ZTkxMzMzNzM5NTA3ZTI2ZTk2ZGFhYWJlMGM1ODYzMzhiMjA2IHRydW5rLW1hdGgKKzYwODU3IDMxOGNhNmJjODlhM2Q1ZGYzYzZkZjVmYTdkOGZiNTc4ODlkMjg5NWMgdHJ1bmstbWF0aAorNjA4NjAgZjM3OGVkZDIxZGYyNmY2MjI5MzM3ZTEwMDg2YTRkZGM0MzdkMzFmNCBsZWdhY3ktdHJ1bmsKKzYwODYxIGFjMDk1Yjc3NGUxOTNiZjRmODc5YjU2NmIxMjg0YWM4YjZmNWIyNTkgdHJ1bmstbWF0aAorNjA4NzEgMjcwZmNkMmU5NzgyNjhhNDQzMjg2MzQzYjRhZWY2ZmM0MTFmMTdlYiBsZWdhY3ktdHJ1bmsKKzYwODcyIDY1NTA2NTlkYmM5ZGI2NmUwNTk4ZmNmZDJlZWE4Mjc0ODdkM2NlZTYgbGVnYWN5LXRydW5rCis2MDg3MyA2MjEyMzY3MzkwZTMyNGFjNzFiNzE5YTg5NzQ5YmM4ZjhjOGI0M2ZhIGxlZ2FjeS10cnVuaworNjA4NzQgMTg3MmJkNmNmNGI0NWI1OGFkYTllMjk4ZDM5YmMzZmE4ODI5YTUyNiBweTNrCis2MDg3NSAxMmZmMTQ2ZjU5YTcwNzFhZDhkMDg1NzUzNzFlYjdhMWUxYjUyM2Y0IHRydW5rLW1hdGgKKzYwODc2IDkzYjYxNTc0MTA3NDBjODNiNmI4MjE0ODEzZTQwZTA0MWUwYzVmYjkgbGVnYWN5LXRydW5rCis2MDg3NyAwOGNiNWFiZmI1YjZhMjRiMThkZjJmMzI2Y2VjMTQxOTliYmMzNWJiIGxlZ2FjeS10cnVuaworNjA4NzggY2MwMjMyZGUwNjZjMzNkZTY1OTJhNWI1MDczODJhMTE3NzZiNWMwMCBsZWdhY3ktdHJ1bmsKKzYwODc5IGI3MjMxYmY2YmZiNzk1OWUyYzdhZGQ5MjM2ODQzNDE2OTdiODBmYTEgbGVnYWN5LXRydW5rCis2MDg4MCA3YWY5NTU4NDM5Mjk2MjlmNmNmMzlhMDcwY2Q5OGRjNTJiZTM2YjM3IHB5M2sKKzYwODgxIDIxZWIxZTZlZGFmYWYzOWU3MTQzOTBhM2UyYzdjYjdlMzM1MjczMmYgcHkzaworNjA4ODIgOWNjN2E4NjczN2M5NjUyZmYzYTUzMTg2NzIwZWNiMGY0YjllNzA2MyBsZWdhY3ktdHJ1bmsKKzYwODgzIDNkMmZmMDE0NjU3NDkwY2IwZDFiYWQ3NWM1OGI0ZTc1OGUyN2FhZjQgbGVnYWN5LXRydW5rCis2MDg4NCAxYmM5MjNhMTA3ZDk1NmU2OWU4YWNiMTc0MDFhNzZjZDBlMWE4YzYxIGxlZ2FjeS10cnVuaworNjA4ODUgMGU5MmVmNTdjMGQ0YTllZDNmMzI2Y2NlMzAzZjFiMTU0MTI0NDA0MCBsZWdhY3ktdHJ1bmsKKzYwODg2IGQ0YjBmMTI3Y2ZjYjFlOTBiNWEwNWY4YWIzMzAzNzJjOGYzM2JlNjIgdHJ1bmstbWF0aAorNjA4ODcgNTA4NzQxNTA1NGYxOTM3ODZlYmQ5YTNkNjljZDc1N2IzNDE1NWM1ZSBsZWdhY3ktdHJ1bmsKKzYwODkxIDJlZmNkN2Y2MDZmOGNkNTFiMmFkZjNiMjFjYTIzYWJiN2E2YWUxMjAgbGVnYWN5LXRydW5rCis2MDg5MiBiZjZiMjY4ZTc3ZjNjNDJmMGRjODUzNTVhOTM3ZWQ0NTc3ODljNGU3IHJlbGVhc2UyNS1tYWludAorNjA4OTMgM2ZjNTg2MzA3ZDY2OTNjNGQzZTI4YjU0NmVkNzQ2Y2RmZWI3MWZkMCBsZWdhY3ktdHJ1bmsKKzYwODk0IDhlY2U1Y2E0YTc4NWUwNzRkZjEzOWU5NzVmM2RjOTFlMGM3NThjZTAgcHkzaworNjA4OTUgNjA2ZDRjYzVjZGIzMGJiYWQxNmNkMzYxNTc1MjhiMzE4ZjhjYTI2YiBweTNrCis2MDg5NiAyN2JlYWUyMWE4MmM5Njk0M2Q2YWQxZGQ4NGU3ZDdlY2Y3M2EyN2ZiIHJlbGVhc2UyNS1tYWludAorNjA4OTcgYmM3MGU4Yjg5YTFjMDU2YzY0NTQxMTFlZTU5YWMwZTYxMmIwMjhlYiBweTNrCis2MDg5OCBiMGNjN2E2ZGExZTAzMmUyYmQ1MWMyZTEzNDQ3NTM2ZTg5YjViNzg3IHRydW5rLW1hdGgKKzYwODk5IDNlZTc3OTU5ODU3YWYzYWExZjg1YWZiY2E5NDljNGQ2NDFmNmI5NzkgbGVnYWN5LXRydW5rCis2MDkwMCAyOTVmMzdmYzYyMWI5NTNjMTdlYjVmNmI3OTAxOTQ1MDNiYTQ5MjY5IHB5M2sKKzYwOTAxIGY5ZjQ3OWNlNTBkMGJhNGRmMDdlZDNiOTg3YzQxNWVmOTc1NGQ4ZDAgbGVnYWN5LXRydW5rCis2MDkwMiAxNWQ1Nzc2ZjI3MDNjYzA4Nzg4YTVkODU1ZmRlNjYxMDVjYTFiNjE3IHB5M2sKKzYwOTAzIDllMjZjMGIyMzk4N2Y1ZjYzMWMzNDg2Njk2NWM3ZWRiYWVmMjRhOWUgcmVsZWFzZTI1LW1haW50Cis2MDkwNCBjNDc0YzkyN2UwMzYwZmUyMmU4ZWViYjUyYjY2NmY2YjkwYjI2ZDFlIHRydW5rLW1hdGgKKzYwOTA2IDI5YTY2ZTYyMWRiZTNmMmQ3OWMzNTMzNjI4NjAyNjk1MDNjZDg5MjkgcHkzaworNjA5MDcgMmZmNTFjNDEyZTU3N2I1NDVhOWJmZGUzMmEyYTQ2MWQxNzY5YzNmNCBsZWdhY3ktdHJ1bmsKKzYwOTA5IDBlYTIzNmE3MWQ3NzczYzZmMTIyODE5MmFmOTBlZjA0YzgxYjMwM2YgbGVnYWN5LXRydW5rCis2MDkxMCA1ZDcyNmRhMjFkNzU0MzEwNWZiZWZiNDdmOGJhY2M1ZmJjMDMwNTc4IGxlZ2FjeS10cnVuaworNjA5MTEgMDliMTY3YTQwMThiNmRhNjhlMjA4MTJlYmYxYTA1MzU3ZTBiNjIyNCByZWxlYXNlMjUtbWFpbnQKKzYwOTEyIDE1MWU3ZmZjN2U4OTM2OGEwNjBmNWFiMDdkMjQxYjllYTdkY2UyZjMgcmVsZWFzZTI1LW1haW50Cis2MDkxMyBkMTIxOTlkNjAyZDNjYTlhYjNkZjg5ZmQ0MGRiYWRlOTI4MTBmMzg1IHJlbGVhc2UyNS1tYWludAorNjA5MTQgMWQ1MDhiYmJkYjQ5YTJiMTE2MjllZTE4NmE2MzkyODI5MWIwODY5NCByZWxlYXNlMjUtbWFpbnQKKzYwOTE1IDlmNDI4YTVlNjJiMzE0MjdjYzVmYWYwN2I3NzRkMzlkMzQ0NmQ5MGQgcmVsZWFzZTI1LW1haW50Cis2MDkxNSA5NDU1MDE2NWQ2MjY4MjJhMGJkNTFkM2VkMmI2MDNkZjE4YWFlOTRkIHJlbGVhc2UyNS1tYWludAorNjA5MTggODBlY2Y2NzM0N2U5NTQxZjEzNjRhMjQ4OTQ1NGFiYWVmMzljN2MwZCBsZWdhY3ktdHJ1bmsKKzYwOTIwIDFjOTU4ZmU3MThlM2UwODkwMjIzYTA0MDgyOTQ3Nzc0YTEyMmJkNTEgbGliZmZpMy1icmFuY2gKKzYwOTIxIGI1MjY1YWNiZWU3NWNkZmU0OWYyZGE1Nzg3YzE2Y2M0OTQ0MmVhNzggbGVnYWN5LXRydW5rCis2MDkyMiBmNmVlZWEwMTljMWY0Y2U1ZDU3YjlmM2NiZGJkZGRkY2EwYzEzMzA1IGxpYmZmaTMtYnJhbmNoCis2MDkyMyA4YTE4N2Y1NjI5NTk0OTI1YzE1ZjQ0NzE1NDk3MjgyNTY0ZjgwYWI5IGxlZ2FjeS10cnVuaworNjA5MjQgZjgyYmQ5ZWY3ZDc4ODNjNDBjN2E4NDYyNjRkMzhlNzY2ZmYyMjgxNiBsZWdhY3ktdHJ1bmsKKzYwOTI1IDAwYmRkOTZkZGVkYTMxYTMyMzU3M2JiNzg2M2VjNmI0OWU0NDQ5MTkgbGVnYWN5LXRydW5rCis2MDkyNiA5MDQ4Y2U5ZTM3YzhlZmZiMTBiZmRiNzJlNWRjZTAyOWNkYTE0OGQ4IGxpYmZmaTMtYnJhbmNoCis2MDkyNyBmOWUyNTU2MmIyZDFiOTllM2ZhNDUwYTYzN2FlMTdhY2E3MDNkYTdmIGxlZ2FjeS10cnVuaworNjA5MjggZTliYzRmYmRhMTkxMjVkZTczMTY0YTJiMzk1NGU3ZTMyZGM5NTM2MSBsZWdhY3ktdHJ1bmsKKzYwOTI5IDU5NTNmNmZjMDIwNDQ5NTFjMDljOTBhMmJkY2IxYWY5N2YxNjg4ZWMgbGliZmZpMy1icmFuY2gKKzYwOTMwIDMzNzgyY2E5ZjZkY2QzMzMxYjM5NDdmN2RiNzc3M2ExNzc4ZGM3MjkgbGliZmZpMy1icmFuY2gKKzYwOTMxIDE4NGQxYjIyNzVkYzg3NmFiNWU5NWUzZTUyMDk0MjQ0OWVkNTZiZjQgcHkzaworNjA5MzIgN2QyNjIzMGJiNzYzMDJiMjZlZTFlMWNkOWU4OTYxNThkZGQ0ZGZmZiBsZWdhY3ktdHJ1bmsKKzYwOTMzIGVjMGE4NTdlODk2ZGRhYWExYmI5N2E4Nzk0YTU2NjFiOTllNmUwYTMgbGliZmZpMy1icmFuY2gKKzYwOTM0IDdiZTIwZjQ4ZmY2NzBmYTg2MDA4ZWZhNTA1NDU2N2QzNmM2MzBhODcgcHkzaworNjA5MzUgZDg5ZDRkZjk2N2U2MGM5Nzk5MTg4NmE0YTFlY2VjYTZmMDQ2MWVhNSBsaWJmZmkzLWJyYW5jaAorNjA5MzYgMzRhZmU2Y2IwMmExNThjMTc0ZTA1YmQ0Nzg1MjA5ZDVjMmQ3MWIzMyBsZWdhY3ktdHJ1bmsKKzYwOTM3IDkzMDA1M2M5ZGIxZGMzOTY1ZDgwNjUzMmZjYjYwZDY5MGE4YTg2NDEgcmVsZWFzZTI1LW1haW50Cis2MDkzOCBjNTlmZDgyYTU2YjAzMzNlZjYwMDg0Yjg2NGJmYWJlMGUxM2NmNjkyIGxlZ2FjeS10cnVuaworNjA5NDAgZTI4ODdkYzViZGI1YTZhYjgwZGFmOWNlZTRjNGZkYmVhZDQ0ZDQwYSBsaWJmZmkzLWJyYW5jaAorNjA5NDEgYTllMWZkYWY0MTNkOWZmMjZiMjhkZmQ1OTIzNDUwNzFjYzJiOThiZSBweTNrCis2MDk0MiAzY2M1N2ZkODdkMGUwZTk2MDlkOGVjM2M3YTkyMzZmM2JlOTQ2ZmFhIGxlZ2FjeS10cnVuaworNjA5NDMgMDJkNGY5OGE3ZTEzMmVlZWU3YjNkOGRlZTk1YTUwN2YyMjQ1MWNmYSBsaWJmZmkzLWJyYW5jaAorNjA5NDQgM2JiZjk2ZDk2NjM5MTI0NzI0YzJjOGYyNDRkMjdkNGYxOTI4NTNlZiBsaWJmZmkzLWJyYW5jaAorNjA5NDUgNmVhNmM4N2E3NTAxMjdlYWMwYTJiYzQ1YzVhM2E4NTg4ZmJkOGM2YyBsaWJmZmkzLWJyYW5jaAorNjA5NDYgOTJkYjY5ZGM4ZDRiMDY1OTc0MmRkZDI1ZTFkZjZhODk4ZWUzOTNiOCBsaWJmZmkzLWJyYW5jaAorNjA5NDcgOGVlZjU2ZTA5ODZjZjAxMjE1MmE0MWI4NzQ1OTcyYWFlMTY3Yjg2MCBsaWJmZmkzLWJyYW5jaAorNjA5NDggOThjM2Y5YTFkMzY2MzAwZjVjODQ1YmZlYzhmZTcyYjA0N2JhNjQzNCBsaWJmZmkzLWJyYW5jaAorNjA5NDkgODVjNjMwMzZjYTAxOTEyNWQxYjRiOGUwODI4YzdlMjBjMjUzNDc1ZCBsaWJmZmkzLWJyYW5jaAorNjA5NTAgZjBmOGIyMDAxNTE1ZTA1ZDkzNTljYTM4MGVlNmFjN2NhYTYxODdmYiBsaWJmZmkzLWJyYW5jaAorNjA5NTEgYTdmMzUwYjNlZDI0OTA2M2MzNmJmODAzMDdhZjFiY2QxYTJjYTYwYiBsaWJmZmkzLWJyYW5jaAorNjA5NTIgMWI0Y2ZhMDA2YmUxNTkwOTEwYzM3ZTI2ZWYwNDEzYTcwMTIyODNlYyBsaWJmZmkzLWJyYW5jaAorNjA5NTMgMzczMDllMzNjNDJjNDUyZGFmNjBmNDJmMzVmZTZhZDBiZGZiZThmZSByZWxlYXNlMjUtbWFpbnQKKzYwOTUzIDQ1NDY2ODEzZGVmNzdjYjJiYmY1NTQ4NWUwNzYyNGIxYzVmNzhlMGYgcmVsZWFzZTI1LW1haW50Cis2MDk1NSBiODg3ZGJhMmI1ZTFjMTQyODEwM2QyNTIzNzIzMjNjZWQwYjMzMzNhIGxlZ2FjeS10cnVuaworNjA5NTYgODUzYWY1YmJiNDk3YjIzMDM3MTY1ZjU1NDk1OWFhZWQ0NzJiNjI2OSBsZWdhY3ktdHJ1bmsKKzYwOTU3IGJjOWZkODRhZmRlY2NlYjNjOTZhY2UyOGI2N2FiNjJhMTc0NDQyM2YgbGVnYWN5LXRydW5rCis2MDk1OCBhYjM4ZDc3MWY1NmRhOTk2YWRmNDUzZTFjZjVlYWVjZjQwMzRmZWJiIGxlZ2FjeS10cnVuaworNjA5NTkgZDQ2NjI3NzMwYTJhMzAzZWVhOWYwZmRmZWZhYzdjNjhiZGU0YTdmOCBweTNrCis2MDk2MCA0MjdiNTRjN2VlMjUyZDY0NDYyNWFjMjhjNDBmZTZlNTY5Y2IzNjkzIGxpYmZmaTMtYnJhbmNoCis2MDk2MSA2ZDZhMjkzZmJhZjNiNTEwOGQ1ZjhkYzA3ZjNkZWRhNjgzYmUyN2I0IGxpYmZmaTMtYnJhbmNoCis2MDk2MiA0YTk1MjJmZDc1YTZlMmFiNTc2NWFjNmI4MjJkYWUyYzY5NjAxNTkzIGxlZ2FjeS10cnVuaworNjA5NjMgMDkxYjI3ODc2YTFiODY0ZTFmOTA0MDQ4MGIyOTBmMzYwZTNlZDI0MCBweTNrCis2MDk2NCA0MmIzYjExNzM5MWRjYjUyY2I2YmQxMDJiYmNlNGRiZGIwNzdlYWZjIHB5M2sKKzYwOTY1IDY3YTlkMzM4NTg1MTM4MGUwZGU5M2I3MzE4NTM0OWYyMDk0MTU4YzEgbGVnYWN5LXRydW5rCis2MDk2NiA3YzUxZTFkMTRjOGM1OWQ5YzYwNTZlYTAwMTNkMTgyYWM1ODY2NTIxIGxpYmZmaTMtYnJhbmNoCis2MDk2NyA2YTZjYTVlNTc5ZjY2ZTNlNzQwMDMxYzA2OTk3NWRkNGM5MDI0MTI1IGxpYmZmaTMtYnJhbmNoCis2MDk2OCAwNzllMjFmNTkzMTkzYWQ3ODNkZTViMTUwYmIzMjM0MTJmYTc5N2UzIGxlZ2FjeS10cnVuaworNjA5NjkgMTFhNzNmYmJmODZmMmRmMzk4MDU3OGJkNjQyNDM2ZmIzNTVhNDMwZSBsZWdhY3ktdHJ1bmsKKzYwOTcwIDhlYjU5ODMzMTIzMTU3MDg1YThiMzBhMjE0NGZkZGViNzdlMzBjNDYgbGVnYWN5LXRydW5rCis2MDk3MSAxYzcyYTczODIxMzM2YjFkNmQzM2ZhZGE0YWYwM2FkMWJlZTk0MGI0IHB5M2sKKzYwOTcyIDE0N2I0OGIzYmMyMzRlNjgwNjlmNWIzZWMxZTQ3YmFjM2M1YmVlNWUgbGVnYWN5LXRydW5rCis2MDk3MyA5MDAzNDdmNzAyNTg0YmI2MjczNTE2MTRjY2UyYmZlNjBiOWE2ZTI3IGxlZ2FjeS10cnVuaworNjA5NzQgY2E1ZjJmOTYwNjE3NGMzNjUxOTM2NDIxOWQxZmFkMDY1NThlNzVhMSBsZWdhY3ktdHJ1bmsKKzYwOTc1IDk2YTM0ZWVmODlhM2QxZGJmZTI0NTE0NTE4OGI4MDgwYWI5Y2M3N2UgbGVnYWN5LXRydW5rCis2MDk3NiBkZGE5MmEwOTdlOGM2ZjZkMjI2MGJmZWRlMjNkNWM0NTYyMDFkZGM5IGxlZ2FjeS10cnVuaworNjA5NzcgNWUwNzcyZWQyMGQxZDY4YTk1NjUwMjE1MmM2MGFiOTMyZmRkNDlkYSBweTNrCis2MDk3OCAzOTM4MjJmMmVmOTAxYzM2NTVkODRiMmJmODQwNWUzZWFiNGM4NWViIGxlZ2FjeS10cnVuaworNjA5NzkgZjFiNTBhYTVkNWFmNDgzYWEyNjNhYTk3ZGNhMWE5M2NlNzEzZWNlOCBweTNrCis2MDk4MCA3MzRmYzBhMTk2NTdkNWYwZjJhODRiYWQ5MTViMDUzMTY2Njk0ZTJiIGxlZ2FjeS10cnVuaworNjA5ODEgN2E4ZGUyYTdiMWE1NmJkZjIyMmZlNmYxNDY2MDczYTFlYjE0ZWU3YiBweTNrCis2MDk4MiA4Zjk5NGQ2OTc3NDc1NTBkMTI2YTVlZWYyYmE4N2I5YzY0MzFkODA3IGxlZ2FjeS10cnVuaworNjA5ODMgMzY1N2MyN2VhMmZkMmI5YTU3NDczZmVkNTkyNzNmNjJjYjM3OTZmMSBsZWdhY3ktdHJ1bmsKKzYwOTg0IDkzMGIyODAyYzAzN2I5MzU1NDllM2EzN2YwODA3MjI1ZjFiNjc5YjIgbGVnYWN5LXRydW5rCis2MDk4NSBkN2UyMzJlOWYxYTFlZTE1YzJiM2Y4NTkyZjdiN2M1MTI0OTZmYzI3IGxlZ2FjeS10cnVuaworNjA5ODcgMWIxOWE1NzE0NWE1YjJmNWE2NmY2YzM4NWU0YTQ3OGEwNzMwZjJmZSBsZWdhY3ktdHJ1bmsKKzYwOTg4IDk3NzEzOTU2YzFiMGRmM2FlZDc4OGFlMjE0ZThlODNjYzRiMDFhMjMgbGVnYWN5LXRydW5rCis2MDk4OSBiYTM1OWI2YzMzYzM4MTU2NDFlYTkxYjAyNzk2ZDVjZDU1MmQ3MDk5IGxlZ2FjeS10cnVuaworNjA5OTAgOWYwMzc4ODc2M2UwOWEwOTAxMzcwYzcyNWEzYjM1NzEwZjc0NWViNCBsZWdhY3ktdHJ1bmsKKzYwOTkxIDFjYzQ3ZTEyOWZmNDdmNGVhNmQ0ZDY0ZjJiZDU4MGJmZTY0YzhkZTggbGVnYWN5LXRydW5rCis2MDk5MiA1OGMzZjM0Mzk2NzA4YWRmMzQxN2NkZjZkYmQyZjc1NTg5NmI1ZWQ0IHB5M2sKKzYwOTkzIDJjNWQ5MTZiZDExYzlhOWUxMTQ2NWNiOTViN2RkMGMwMGM3M2M4MzIgcHkzaworNjA5OTQgNDI5ODVlYmJmYzQ1MzA5YjY5NDA0ZjQzMmUyY2FhZDgyOTc0ODk4NyBsZWdhY3ktdHJ1bmsKKzYwOTk1IGU4NGFkMmEyNThhNDY5NDk0MmY5MTQ3MWQ4Y2JiZmE0MTNkZWMwMjEgbGVnYWN5LXRydW5rCis2MDk5NiA5NzRjZmYzZTAwMjE2MjFhZTRhYjQ4Y2YwZWE3OWU5MGVjZmZmNmNmIHJlbGVhc2UyNS1tYWludAorNjA5OTcgMTMwZmJmYjE2MDM2YWY0Njg4MDEyZDZiZjViODk4YTQxNGY2MjBlMSByZWxlYXNlMjUtbWFpbnQKKzYwOTk4IDc0OGFmMGI4MzY3NGNjMWMxZmUwZmM1ZWZjOWQ5NWU5ZDFjNmI2ZDIgcmVsZWFzZTI1LW1haW50Cis2MDk5OSBlYzdmMDg3M2I2NjRkZjQ2MzZlZDMxYjdiZWRlMGUwMzFhMDA2NDhlIHJlbGVhc2UyNS1tYWludAorNjEwMDAgMWQ4NGJmNWY5NDc4NmE4NDZjMDgwMjhmOTliNmMzYjgyN2FjZjQ2MyBsZWdhY3ktdHJ1bmsKKzYxMDAxIDQ3YTU4Y2EzZTEwZWI3MDI3ZDBjYzk5NGUzYjFhZGQ2NTdmYjk0YmUgbGVnYWN5LXRydW5rCis2MTAwMiAzOTE1ZDVmNjUwZmE5ZGUwN2FiYjcxZDI2MTJjODYxYzEyYTZlNDZmIGxlZ2FjeS10cnVuaworNjEwMDMgN2RkMmMxNzQ2MjY3ZDJlY2UxNzkyODE1MzVhYjBmZWFhOWFkNjQyMCBweTNrCis2MTAwNCA2YmE1MzA4ZjdiYTQxNjViOGZlMjBkOTllZTliYjUzZTMwMjI2MjMwIGxlZ2FjeS10cnVuaworNjEwMDYgZWVjNGMxZTllOWNjODhmZWQ2MTIzOGNjZjRlM2ZlYjE2YWViNTY3MSBsZWdhY3ktdHJ1bmsKKzYxMDA3IDZhMTNmZWNhZjJkZmIyNmM0YjEwMDY1MTQwZWMxMDhiNGMwNzc2NzAgcmVsZWFzZTI1LW1haW50Cis2MTAwOCA0ZWI1YTY2N2M4ODJiNWE0ZTI3NDE4MDhlN2Y2YzA0MGY2ZjViYTY0IGxlZ2FjeS10cnVuaworNjEwMDkgODBlMGEyOTMwYzZkNTk4NWU1NDg0N2YyYWM0YjczMmUwZTQxYTM2MiByZWxlYXNlMjUtbWFpbnQKKzYxMDExIDI0MWNmODFhMDUwODc5N2ZjYzVkOWI1YjAxYWNjYzQ3ODhhYjM1M2EgbGVnYWN5LXRydW5rCis2MTAxMyA5ZjE4M2FlMzQ1OGJmYjhhOTMxNzNjM2Y0MjY3N2Y3OWM0ZDk2MmYyIGxlZ2FjeS10cnVuaworNjEwMTYgNDBkMjY5ZDZkYTljNTgzMDdjM2FhNDc3YTUyNDA4OTZhNzk1ZWQyMyByZWxlYXNlMjUtbWFpbnQKKzYxMDE3IGEwMTIxM2E1NDI1ZDFjNDA1MWVjYTJlZDc4OWRkNjQ0YjUzMjgzM2EgbGVnYWN5LXRydW5rCis2MTAxOCA2NjkzMDQzZDI3ZmQzMjk3Y2E5ZmQ5MWU5YzNmZThiNjJmN2ZmMzYxIGxlZ2FjeS10cnVuaworNjEwMTkgODEwYmQ2NzczODYzNmVjODU5YzZmNTAyOTMxN2Q2NzlmMTBiMDRmOSBsZWdhY3ktdHJ1bmsKKzYxMDIwIDE5ZDg1Mjk0MmRkZGQyMmMxMDlmYzY4NmY0OGQyZGIyMWFlNWVhY2YgbGVnYWN5LXRydW5rCis2MTAyMSA4NTMxZjg4YjU3OGUyMGE0Mjk3NmUzMzU2YWUxZWJmYjA3MDQ3OGRmIGxlZ2FjeS10cnVuaworNjEwMjQgMzA1NzhlMDRkMzVjZGMwYzg2MTVhODc3N2JmNjE0YzZiYjBjNThkMiBsZWdhY3ktdHJ1bmsKKzYxMDI1IDI3YmFiMzk4OWY2MzUzY2Q3MmIzZDdmM2UwMzJjMDg5NDM0Njk4ODcgbGVnYWN5LXRydW5rCis2MTAyNyA4MTNjMTQ2ODU4Zjc4ZTEyOGIxMTQxZjgxYjY0NTgwYzE2MjNlYjFlIGxlZ2FjeS10cnVuaworNjEwMjggYzEyNmJkOWI1MDViZjg2YjgxZWFiZTQ3OWNlZjZjYjIxMDdkMmJhZSBsZWdhY3ktdHJ1bmsKKzYxMDI5IDZhOTkyYjY2ODBiMWI3NjQ1NWNlMGUyMTEzY2U0MDM5YmQ4YTc0ZGIgbGVnYWN5LXRydW5rCis2MTAzMCAxYjBlYjc2ZWY3MmFiZDkwODJhMDk1MTRlODc5MTg3ZmNhYTg1Y2EwIHJlbGVhc2UyNS1tYWludAorNjEwMzIgOWIxMTVjNWU5MTE1MmIwNzIzZmZkZTk1YjliNTgxMmIxOGMwMmJhNSBsZWdhY3ktdHJ1bmsKKzYxMDMzIDk3YTE5NzJiNjcyZTdiNWI1MzVhYjAzZmVmODgyZjFmMWY4Mzc2NmQgbGVnYWN5LXRydW5rCis2MTAzNCAyMWE1ZTlhNTQ4M2E1MjI0MGI1MWI2MmJkZjkxYjU2NDEyZjM1YWMwIGxlZ2FjeS10cnVuaworNjEwMzUgN2VmYTRkMWJjZWQzOGMzMGM1Nzk5ZDU3MTI2ZmM0ZWJmNTgzMmFlNiBsZWdhY3ktdHJ1bmsKKzYxMDM2IDQ4NDg4ZmE1MDcyOWU0ZjBiYTAwNWE1ZTJiMzM2MDAzNzk2ODAyOGMgcHkzaworNjEwMzcgMDAyYTVhYzc5MmIxZTZhN2Y5OTY3Y2ExMDIzNGY4MmQ2MmQ5ZDY3NyBsZWdhY3ktdHJ1bmsKKzYxMDM4IGVhYThjMTkzOTEwOGUwMWQxNGRmZTAwMjdhZTViZjBkM2UzZmE3OTAgcHkzaworNjEwMzkgOGM3YmEwZWQ4NDQzYjUxMzcyZjljNzliZTlkM2Q1MmVkZDBkYTk2NiBsZWdhY3ktdHJ1bmsKKzYxMDQwIDE4ZmVkMTRiMDZiNjA2NjRmYzJmZDIwZmMzMTVhYmU2OWI0ZmFhNzcgbGVnYWN5LXRydW5rCis2MTA0MSBjMDNhZmY2ZDA3ZjUzYjEwNmM2MmM2Mjk1ZjkwY2U1YjU2YmUxODM3IGxlZ2FjeS10cnVuaworNjEwNDYgZDg5ZmUxZDJmYWRkODJhMGNjODM2MTI4YzFhOTAzNGQ0MGM5ODg0YiBsZWdhY3ktdHJ1bmsKKzYxMDQ4IGFkZTdhYzg4ZDJkMDllMjBlNjIxYjYyMTE5ZDhhNzFkMDZkNThlNTEgbGVnYWN5LXRydW5rCis2MTA0OSBhZjkyOGZmMGM1YzY5ZDFjNTgzYTFkNjllODMxNGMwYjhmN2Q0NTdiIGxlZ2FjeS10cnVuaworNjEwNTAgMWI2ZmI1Njk5NjM0NTc4NDBhZTk3ODM3ZjAzM2FjNDFhZDE4MDJjNyBweTNrCis2MTA1MSBiZjhlZTU5M2NiYWQwM2M3MjRlNWU0OTZhMGRlZGRmN2RjMzE1Yjc3IGxlZ2FjeS10cnVuaworNjEwNTIgNTVlZWZiNDNlZjZmM2FkMWEwMTE3N2VkYWQwMmMzMTY1NmY0NTc3NSBsZWdhY3ktdHJ1bmsKKzYxMDU0IGE3N2UxY2Y3ZWQyNTI2MmE5Y2YzNTM0N2ZkODZjMzAyNzM4Y2Q0NjAgbGVnYWN5LXRydW5rCis2MTA1NSBiMGZkZTkzNjYxY2U4NzUxZWRmYzZiYjM5Y2NmYzNhNGI1ZmQ3OGY2IHB5M2sKKzYxMDU2IDA5YzljZWVjZGQ1NmQwNGJmMjM3MTkxY2QxNDg2ZDQ3NmQ2OGMzYWIgcHkzaworNjEwNTcgNzEyOTM3MmY1MzNmNDFiMzc0MTUyNmFmODI2NDk5NWE4Yzg5NTRlOCBsZWdhY3ktdHJ1bmsKKzYxMDU4IGRjNWIwMTA3Mjk0YzBkYzRmN2Q2ODk1M2ZlNTI3MTExMDFkNWFjODkgbGVnYWN5LXRydW5rCis2MTA1OSBlNTdmZmEyYjVkMDdmMDEyNWQ2Yzc4OWY0YjUxNGRmOTU4ZmJmNmVhIGxlZ2FjeS10cnVuaworNjEwNjAgYjI5OGNiNDk3NWQyZGZkYzAxMGViZGVhMDhjN2MzZThmMGVjMjZhNCBsZWdhY3ktdHJ1bmsKKzYxMDYxIGZjZTVhZjVjZTE2YTZkNzBmMDEwNjU1OTlhZDNjYjZiYTgyMzQ1MWYgcHkzaworNjEwNjIgOGI1MmZmNDFlMGUyNzk2MzMwZGI0ZTZjM2RlMmJhODc5MGI0OTdlZCBweTNrCis2MTA2MyBmODhiZWJlZWI2NzNlOTg2MDg0ODBlZjE5Mjk2Yzc3MWZmNDM1ZDA2IGxlZ2FjeS10cnVuaworNjEwNjQgM2E2Y2E4OWVmNzZkNDc0MjVhZGQzZDQ5NTFkNGM5OTIzYWZhMTY2ZCBsZWdhY3ktdHJ1bmsKKzYxMDY1IDE3YzhlYzg4OWZmNDJiMGNmMjQyMWI1NWU1NTcxZjU5ZDJhMzc4YjMgbGVnYWN5LXRydW5rCis2MTA2NiBjNWU3N2UwZjJmMzJmZmFmNDJjNzVhNzRkZGNhMWU3NGYzZTAxMTcyIHB5M2sKKzYxMDY3IDE0NGU4NDY3MmVmOTM2ZDk3MDgwMTVmZDcyNTIzNDMzMmFhY2RmZTAgbGVnYWN5LXRydW5rCis2MTA2OSA0Mjg5YzQxMDQyNzkwMzZlZmI4NjJkMjI0OTIwODBjNjgzZGFmNDJmIGxlZ2FjeS10cnVuaworNjEwNzEgZjZkYzA4YWQ1NjRiMWM2OTZlNjdhM2ZiNDIzMGMzOWI2Yjg3Y2M5YyBsZWdhY3ktdHJ1bmsKKzYxMDcyIDRmNjM5YWY1OGExOTBjMDk4YjY2NWEzN2IxZGUwNWJiNDZkODkwZjMgbGVnYWN5LXRydW5rCis2MTA3MyBlODFlNDVmODAwMmU4YzA5YTNjZjEwNzEyNzZjYTA3NjJlMDM3N2Y0IGxlZ2FjeS10cnVuaworNjEwNzQgNDVmYzNlY2IzMDIzZWQ4MGM5NzU5MDE4YjJiOTJlZmU3YTEwMWQzZCBsZWdhY3ktdHJ1bmsKKzYxMDc1IDliMzgxZWQxZGIxNDMzMmU0MTRmOTc5NDIyNmIyMjU0YjY2YWE0ZjAgbGVnYWN5LXRydW5rCis2MTA3NiA2MjRhZTg3ZjFjOTYxZmQ5MWY1YTE1NWZiYTY4OWMzZDY0ZWZkMTI1IGxlZ2FjeS10cnVuaworNjEwNzcgMDg4ZGZjMGY3MWI0OTgwY2I4ZTI5NTMwNjVhMGVhNDc3Zjg5ODlkMCBsZWdhY3ktdHJ1bmsKKzYxMDc4IDRhZTQzMzE0Yjc0NjI4ZjlmOWNiZWM3MzdhN2VmOTQxNjY2YjMwYzQgbGVnYWN5LXRydW5rCis2MTA3OSBiZjFhYjNiZjc5OWM4NjM2ODM4OGMyOWE4Y2IxMmY0Yjc4ZGQ2OTQ2IGxlZ2FjeS10cnVuaworNjEwODAgY2FjZDdiYTExYjc3NThjMTg5Mjk2MDJmZjJlMGNmYjZiY2YzY2YzNyBsZWdhY3ktdHJ1bmsKKzYxMDgxIDJiMzY3MjUwYjBjZDMzNTkxN2IzMjAyNTRlZTk4ODUzNjM0YWNiZTMgbGVnYWN5LXRydW5rCis2MTA4MiBmZTczOTRiYzc5ZDYzZTIzNTIzOThmMTI0MDk0MDQ0MjE5OTZhYWZhIGxlZ2FjeS10cnVuaworNjEwODMgN2FmZWY4ZjQzZTRhNTJlMDgwMThkNmM5Y2MwMTQyMjg4MDM3MTAxNSBweTNrCis2MTA4NCBjNTdjYjJmOGMzNTA1MmM1NDY0NjI4ODBjNmE3OTMwZTVhMjI5OTExIGxlZ2FjeS10cnVuaworNjEwODUgZDEzMjNmY2YzYWExNzk1M2RjMDI0YzY1MmZiMjBiNmU3YzA5NDBkNCBweTNrCis2MTA4NiBmMzNmNjZhMjA4MmZiZjMyNmZmNzRlNjJmNGJmMjQ0ZTAwMTczMDk4IGxlZ2FjeS10cnVuaworNjEwODcgZmZkZDMxZjFjZDIwOTRkMjZiOGIwYzBhYjRmODZiNTUwOWU2NzM5MSBsZWdhY3ktdHJ1bmsKKzYxMDg4IGNhNDVlYjcxZjJkMmJhMzFlY2QyYWZiMmIyZmY1ZGViYmYxMzVlMGMgbGVnYWN5LXRydW5rCis2MTA4OSBlNDI1ZGRhNGY2MzAwNjBkZjZhZTgyYWFmZTk1MTYwMmQxNTMyNmMxIGxlZ2FjeS10cnVuaworNjEwOTAgZjJmMzNkYjU4OTIwMGJlYzNiZDNiNzk2OTI4MDkwNTRjN2UxMjkyZiBsZWdhY3ktdHJ1bmsKKzYxMDkxIDdkNzM0N2RkOTRlODc3ZDc2OTlkNjdkZTdjOTJlNWZkMmU2ZjRmYWIgbGVnYWN5LXRydW5rCis2MTA5MyBmNzg4NDE2NGYwODg5YmViNjEyMGMxZTI2NjZmYjUzYTY3ZTQ0NjdiIGxpYmZmaTMtYnJhbmNoCis2MTA5NCAyYzkzMTgzYjhhM2MyNjk0NDZjNTM0ZjA1YWJjMjk5NDk0NWU5MDJiIGxpYmZmaTMtYnJhbmNoCis2MTA5NSA2YzQ2MTIyNTVmNjA1MmMyYWFhNDljODE3ZDJhNzg2MDAyZjdjNjYwIGxpYmZmaTMtYnJhbmNoCis2MTA5NiBiNzhjM2E0MzcxZDUxMTEwYTM3NTQ2OGQ3MDRlNjBkMmI1MTY0OGUwIGxpYmZmaTMtYnJhbmNoCis2MTA5NyBkMTc2OTBjNTA3NjY2ODM4YzZjYjlmN2IzYTNjNjQyODA1MGE5YTIwIGxpYmZmaTMtYnJhbmNoCis2MTA5OCA2NTkyZTVhOTBjMmNkODRmMjEwZmQ5ZjY2ZGEyYTc0OGY0ODRiNTFlIGxlZ2FjeS10cnVuaworNjEwOTkgOGFhZjE0OTVkYTM5NTljZDg0NGNiNWE2ZGQxNmYzZTI5YTM2MzAxNCBsZWdhY3ktdHJ1bmsKKzYxMTAwIDNlNDM1YTIxMTM1Njk2OGQ3ZTQwZWIyMzFiOWU2YjVhNWViMTMzYTMgbGVnYWN5LXRydW5rCis2MTEwMSBkNDQzNGYwM2I5NzAyMmIyNzVmMDQ1NmJhMDM2NjJhZjAzYWU4NGRiIGxlZ2FjeS10cnVuaworNjExMDIgOTZkNWExNTczMTZlMzUxODA5Mjc3ZDgzZTQ2MjkzZmQ0ZTc4YjU4ZSBsZWdhY3ktdHJ1bmsKKzYxMTAzIDhjM2M1YjRlZWY1NTU3MTkzOTg1NmIzMzE3YTIwNjI1MTFiNjgxOWQgcHkzaworNjExMDQgOGRkMzBmZTExYTRiMzRkMTA3N2JlODA4ZjJlMGYxNGFkYjg0MzQ0YiBweTNrCis2MTEwNSAxMTg4ZWRlMTU3MzViOWI4Njk5MTBjYzQ2Zjg3ZDU3YzE5N2VjNmY1IGxlZ2FjeS10cnVuaworNjExMDYgY2MyMjA3NDVlNGU1OTNlNmMzNmI2ZjZkZjJmNzRhNTQwY2Q4MmUzZSBsZWdhY3ktdHJ1bmsKKzYxMTA3IDUwNGI0MzU3YmRkZDM4ZTczYTNjZWVhNjI2ZDI5OTAzMDA0MTJlMzMgbGVnYWN5LXRydW5rCis2MTEwOCAyZDJiMGUxNTVmMTk4ZmJjNmY2MDdmMWM4MjkzYjhlOGE2MDk4NTY3IGxlZ2FjeS10cnVuaworNjExMDkgYmYzZmEzN2ZlNzljZDAzOGMyZWQzZmI2NDJjYjU2NDQ2Y2M3OTQ5OSBsZWdhY3ktdHJ1bmsKKzYxMTEwIDBjYjQ4MTk1NjQ1MmZjNWY1YzEwMWVlM2YyNDA4Yzk5NjU1YWFhOGQgcHkzaworNjExMTEgMjQyNTQ0MzBlODlhMGM4ZTA1ZDc1ZDk4ZjgwZDZiZTMyNmJhNmU2NiB0cnVuay1tYXRoCis2MTExMiAwMTI4Y2U3NzM1NGY2MDUyNmRiOGRjODdlZTUwNzY5MzRiM2JhNGMyIHB5M2sKKzYxMTEzIDcxMGQ1MjViMDU0YzgxZWIyY2U3YjYyZWFjNDlhMjE2ZjRkZjA4OGYgbGVnYWN5LXRydW5rCis2MTExNCBjMzhkY2I3ZDk0YTZkYTliZGZjYWI4ZjQ3Zjk0M2U1MzcyOGQyNWY1IHB5M2sKKzYxMTE1IGU0ZmZlNjQ5OTU0ODFhOTcxMDViOTMwMGI4OWVmZDdjY2VjNmY1YjkgcHkzaworNjExMTYgNTk3NjJkNjcxNGEzMTNiOTVkOTJkNWIzZGY2N2E2MzVhMmIwMGUxYSBsZWdhY3ktdHJ1bmsKKzYxMTE3IDk3MmZjN2Q3Y2I3MjY5NzhjMjg1NTAyNmM0NDI4YjcxZTc0MTUxMDEgcHkzaworNjExMTggNDNlMDg0ODQ3ZTUzMzIzNDAxZThjZjdjMmQwMjhjMjY4Y2NmODAyOCBsZWdhY3ktdHJ1bmsKKzYxMTE5IDdkYTM2YjQ5YzllNWFhZTJmODUwNWQzZWMwNmIzNmI2MTBkYWFkYTIgbGVnYWN5LXRydW5rCis2MTEyMCBjNTQ2NTIzNjY3NzI4Yzk1NzA3ZGQzODVjZTBhYjI3ODA2YjVlMzEzIHB5M2sKKzYxMTIxIGRiZjFkZGM1ZjQ3OTUzNzk0NzQ1ZjZmYzlmZGUyZTU0MjlkYWUwZjMgcHkzaworNjExMjMgYmNlNGM0MGRmN2RmNzRlZmQ4N2ZlZTI5MjA5ZWIxY2UzMzZmMTk0MyBsZWdhY3ktdHJ1bmsKKzYxMTI0IDEwOTYyYjNmNzdhOWIzODFiNjMxODE2YWNiMTZhOGZjNDljZDY1OTUgbGVnYWN5LXRydW5rCis2MTEyNSBmYWNmMDFmMTViMTUzNTU1OWMyYmEwNWM0ZjVhYTcyMDQ2Yjg4ZjFjIGxlZ2FjeS10cnVuaworNjExMjYgOTM3YTNjNWFmNjkxOTJiOGVkMThmNGU3YWVmNmMxZTU5ZWNkMGRiOCBweTNrCis2MTEyNyA4Y2Q5ODRjMTdkZWM4NWFjMDczOTE4NWQwZWNjZTdkMGU0OWZjNThjIHB5M2sKKzYxMTI4IGIyNjljMmQwM2ZkMmQ2YTI3MDhlY2Y2NjMwYjdmZWEyMTkyNWJhOTggbGVnYWN5LXRydW5rCis2MTEzMiAwOTQwNzEzYjY3MjZjYTI2ZjNiZDllNmZmNDVjMGU4N2JmNWQwZjdlIGxlZ2FjeS10cnVuaworNjExMzMgMDVjMzk2MTkxZTQzMjkxZjc2MGJjMjAyOTM3OTNmNmE5NGZlM2I1NyBsZWdhY3ktdHJ1bmsKKzYxMTM1IDRhOTU4OGIxZTRiOTVkZjEzYmQ1MTA4ZWJhMzQ3YzA2MWVmZTIzMTQgbGVnYWN5LXRydW5rCis2MTEzNiA4OWNmYjM4YTRiOTg2MjNjYTA1NTI2ZDZhYjkyMjYwN2VkMDhlZTBmIGxlZ2FjeS10cnVuaworNjExMzcgMjA3Y2EwYThhZmQwMDIzMGFiYjVlY2UyNDc3ZDY4ZmI3MzBiMmE0MCBweTNrCis2MTEzOCBjYTExY2YyNGViODU1ZjVjODZjYzFjNDBmMDQ3YjQ2NWNiZTdlNDhhIGxlZ2FjeS10cnVuaworNjExMzkgNjdkNDA0ODY2ODQ2MjA5NGVkZjNlY2U3NTZmNDAyOWE2MmZkNTA3NSBsZWdhY3ktdHJ1bmsKKzYxMTQwIDAyYTAxZTU3OGQ2YzVhMGJlMzQzNzgzMDY2NjBjM2ZjYzRkNTljNjMgcHkzaworNjExNDEgYjdlZTkwNzRjYTBlYjNiNzdlZmZkMmIyMzFiMzA5MTY3OTE2MGVhMCBsZWdhY3ktdHJ1bmsKKzYxMTQyIGZjNmY5MDU0NWNiNDhlNWNlZjVmNmVjYmIxMGZlNmVjY2RjZDc5N2MgcHkzaworNjExNDMgMDAyM2MwNDIyOGU2YjM1MzMwNWQ1Y2FkYWE4ZmU2NTkxODMxODEwNiBsZWdhY3ktdHJ1bmsKKzYxMTQ0IDg5NDZlMjdhNDU2M2JjMmQzZGIyOWU0NjBmOThjMTgxYWRlNzVkZjIgbGVnYWN5LXRydW5rCis2MTE0NSA5YjhmYzQwNWY5YjA0ZmM1MTFhNmMyMzgxMTE5OTRlODEyMjg1YzQ0IHB5M2sKKzYxMTQ2IDlhZDU0MmVhMDViYTFkYTliMDA2MWUyZWU5MmU4Yzk1MDdmNDA2NjMgbGVnYWN5LXRydW5rCis2MTE0NyA0NGQxMGQzOTA5MmM2NWVjMmZlYmNjYWU3MjZjODYyZmY0Yjg3NTQ3IGxlZ2FjeS10cnVuaworNjExNDggNmEwNGRiYjBkMTRiNDlkMTVmMzBkYTNmNzdkMzlmNWY2NGEwOWU2NiBsZWdhY3ktdHJ1bmsKKzYxMTQ5IDMxMjc5NTZmM2IzM2U3ZDFkZmEyZjVlMjcyMTU1ODY4OGM5NTViYjIgbGVnYWN5LXRydW5rCis2MTE1MCBhOGZiZDkyNzE0YTlhOWM0NzIyN2I4ZjI2ZTg3NmY0NGVlODI2MDdkIGxlZ2FjeS10cnVuaworNjExNTEgMmQwYmQwOTVjNDIwYjA3MTEwMDBkOWJlNjY4NDhmNmNmZDk3MmIzYiBsZWdhY3ktdHJ1bmsKKzYxMTUyIDBhZGZiYThhZTk1NzEzYzRlMGQ3MmYxNWQwODk2ZGFmYmZhNmI4ZDQgbGVnYWN5LXRydW5rCis2MTE1MyA4MmMzYjBiNWFhOTI1OGQ4OGUxN2Y5N2QxNWYwOGYwNzJmNDhlN2UzIHB5M2sKKzYxMTU0IGMwOWRiNzhiZDA2NmNjYjEyZDE1ODc4OWRiZGYzNDk4YTYxMzg5M2EgcHkzaworNjExNTUgY2M1NTQzYjU2MTBiMmQwNjUyODQ0NDY2ODQ5NjlkZWQ5ZWY2NWY0MyBweTNrCis2MTE1NiAwZTAxNjliMGVhY2M2ZGRmODA2OGQ1YzdjZDE4NDczYTdjMzBiOWQ5IHB5M2sKKzYxMTU3IDViYTA2NjkwYzE4NDc5OWIwNWM1ZGI2MDExMGUyM2ZhOGM3MGE1MzggbGVnYWN5LXRydW5rCis2MTE1OCBkZjE1ODI3ZjM0ODgxYjlhZjA5MzYzNTA4MTNjZWQ1YzEyM2M4MjMwIHB5M2sKKzYxMTU5IDM2MmE0NmU3YzMzYTJhNmFmNjdhNzk3NDMwZmQ2NGZiOTA1NzY2NmEgcHkzaworNjExNjEgMjBhNDI2NzRiMTExMDRhYjk4NTg2OWExZGJlNzRkMTYwZTVmNTRkMyBweTNrCis2MTE2MyBjZDE1YTVlOWMxZGU1OWJiZWZkYTdmNmZmODVmNDYxMjAwNTZkM2Y0IHRydW5rLW1hdGgKKzYxMTY0IGMxMjVjNjFlMDZhODYwNjczMjBiNTI2ZDgwMWZhOWY3Y2ViY2RmNTUgdHJ1bmstbWF0aAorNjExNjUgNzBjNDFiZDY4MGI1ZTdjYjAxYTQyNTZiZWNlOWIzMjRlYTY0ZDA4MCBsZWdhY3ktdHJ1bmsKKzYxMTY2IDM0MzlmYTIxNWZhZWMwYWUxOGNiMjg0Mzk0ZjFjYzUwNDU5NWRiZWEgbGVnYWN5LXRydW5rCis2MTE2NyA1YjcwNzhlY2NlZTgzNjk3ZjU0NDE3NDJkZjhlOWFkYzU0ZTdjYzgyIGxlZ2FjeS10cnVuaworNjExNjggYTYyZjk1YTRhZGZjNWUyYWQyNjM2ZTA3NjQ5YmJjNzdhNDA3NTUwMSBsZWdhY3ktdHJ1bmsKKzYxMTcwIDQwNjBkYjEyNmVjZjM2YzUwNTQyOGMyNGRjNmRiNTRmMWQ1N2FjNTkgbGVnYWN5LXRydW5rCis2MTE3MSA4YmJlNTMxZmNkM2M4Y2E3MWY1YjQxZDEyNmIzOGRlMWM3Y2FlZTRkIGxlZ2FjeS10cnVuaworNjExNzIgZjcyYjJkZTk5N2I5OTI3ODg1YTk0YzczOWM5YWM5NzgxYjI4N2ZiZCBsZWdhY3ktdHJ1bmsKKzYxMTczIDk2Y2E4YzdjZWRjNGQwMzFlYmIyMDhlNWFkYTkzMThlNjA4Y2E2MjggbGVnYWN5LXRydW5rCis2MTE3NCA3NjI4Y2I0MDNjNTNlMWEzNmFlM2QyZjk0OGIxNzE1NTk2YTY2MzY1IGxlZ2FjeS10cnVuaworNjExNzUgYmJkZjA2YTg2YTI0MzI5OGIyMTA3NGU5YWU1M2NhY2NhYzA4NGMzMSBsZWdhY3ktdHJ1bmsKKzYxMTc2IDBhOGVlY2FjNWFkMWRjOTM0N2RlNGNhYjQ3MjViODE2MTFmMDVmZWEgbGVnYWN5LXRydW5rCis2MTE3NyBmNjUzYzBiODkxNmI4ZTU2NWI3MDc2NmQ5MWEzZjIyNTBkNGU2Njg4IGxlZ2FjeS10cnVuaworNjExNzggNDczMjhkNzZlOGFiYmQxNzYzMWVkNjY4MDViNzUyZThmYzE1YTNiOCByZWxlYXNlMjMtbWFpbnQKKzYxMTc5IDU0ZjFjYjhhODFmNjYwMjVjN2VmMTI2ZThlN2U0NGViNDAzNTZkMzIgcmVsZWFzZTI0LW1haW50Cis2MTE4MCAwNTY1MTMwZDdkOWY2NGMwZGY0NDBlNWMyMTVmMmE0ZGU4MzQ2MGNjIHJlbGVhc2UyNC1tYWludAorNjExODEgMWY3ZDYyOGM3MGE5YWVmZTc2MmMyYzMyMjEwODc2ZmFmOGQ2NGM3OCByZWxlYXNlMjQtbWFpbnQKKzYxMTgyIDdhMWZjNjFkNWMzZTQ1ZjNhMjIxNWQ0MmNhODU2ODYxYTE4MGQxMTkgcmVsZWFzZTI0LW1haW50Cis2MTE4MyA1Y2NiNmViMjAyZmYyMWMwMTgwMDQ3NTU1ZWNhNjY5YmI5MjZjZTE3IGxlZ2FjeS10cnVuaworNjExODQgODhjMWUxN2NlZmZjZjM1OTNmYjFiNWIwZDYxNzQ2YWVjMGFlOTgxYyByZWxlYXNlMjMtbWFpbnQKKzYxMTg1IDg5M2M3YmQ0YTkyYmQ4ODlhODVlNjkxZjQ5MTg4YzM3YjBhNzIzNTcgcmVsZWFzZTIzLW1haW50Cis2MTE4NiA1NjY4MWQ1YmVlNzA5MzBiYzRjZDgxYzI4OTFmY2U0YzMwZWE2NzBhIHJlbGVhc2UyMy1tYWludAorNjExODcgNGQ3MTMwMWE2ZDRiN2ZhOTc4ZTBkZTJjZjBhYjI3MWExNGVhZTI2YiBweTNrCis2MTE4OCBhMzFiNjUwNTE1Y2I5Y2E0MWM1N2MxNWQ0YmRiNzNiYzEzOGVkY2YwIHB5M2sKKzYxMTg5IGNmM2E4MGYxZGE3ZDA3YTAzNGZlNDcxM2YwNDhmMzc5OGU2YTQ5ZTEgbGVnYWN5LXRydW5rCis2MTE5MCA2MDY4Yjc1ZWMyN2EwZjE5YzcyMDJjODBlMDgwZGU3ZmUzZDlmNGEyIGxlZ2FjeS10cnVuaworNjExOTEgNDRhZDc4ZmUzNWZhYjEzMTdjZmNkMDMxODdmNDc2ODUxMWFmMWU2OCBweTNrCis2MTE5MiBiOTMyZjAzNWZiM2VmNDM2ZGFiMDA2MjFiNTNlN2YzMTNmZDAwZmUyIGxlZ2FjeS10cnVuaworNjExOTMgMjRmNDIzMGJhZWJlN2RmYzZjYjM3NjlmZTk3OWIzMWRhNjkxNzZhNyBweTNrCis2MTE5NCBjNmQ5YTM0ZjAyNGZkYmE0NjZhOTIyNzllM2YxMTU2YzI5MTdkZTIyIGxlZ2FjeS10cnVuaworNjExOTUgMmM3M2M1ODMzZjIwMDVhZTlmNTZkY2NiYzVmOWQyMDlhMzIwNWYyYiBsZWdhY3ktdHJ1bmsKKzYxMTk2IDdlNGI3NTNhZmVjNmUxNzk0ZTM3YWM4ZWRjNjQzMjUxZTQzNWQyYTEgcHkzaworNjExOTggYTU1MTM2Yzc4YjYwNDFkM2VlNmY1MDVmZTExZDVlOWFiNDU1YmZmZiBsZWdhY3ktdHJ1bmsKKzYxMTk5IGExOGE0MjRjMmJkMzRlNzg3ZjkyMzM4NzE2ZDgyZDdkNDhlOTA3MDUgbGVnYWN5LXRydW5rCis2MTIwMyA0MWE3MDc3NDRiYzg5OGRjYTNkZmIwZDRiNTc3MmY1MjIzMTUxZmYxIGxlZ2FjeS10cnVuaworNjEyMDQgNjI4MmRmZDVkYzQ5NGY0MDkxYmEzMjg1Mjk1YjY5YTNiZWI0NzMyYyBsZWdhY3ktdHJ1bmsKKzYxMjA1IDg4MmViYTE0NTExOThkNWEwZmZkODFiZjIxNzhmZjE3YWRmODdiMzMgcHkzaworNjEyMDYgMjU0MDZiM2ZmOTdhNmZkMjVkZDU1MTFkZDUwNWUzMTliMjhlNGE4OSBweTNrCis2MTIwNyA2NWVmNjA4ZGQ2NmNiMDQzMjBiNWMyNzFjZjU3MDVjZDk5YjBlNDNmIGxlZ2FjeS10cnVuaworNjEyMDggZTk5ZTFkOGI4MDc3NzBlZThiZTZiMWFiMzUxNjQ1MDMwZDI3MGQ5MyBweTNrCis2MTIwOSBjNTE4ZjM5NDczZmQwYjkwMDNkODM4MDE1MjIzNjViZWZiYzUyYmFjIGxlZ2FjeS10cnVuaworNjEyMTAgYTE1NGYxOTgyNTkyOGNiYWYxZjJmYzQzMjc4OWJkZTNmMmU3YTQwZSBsZWdhY3ktdHJ1bmsKKzYxMjExIDA3MjM5MmVkNGVhNjkxMzkxNzcxZjQwOTVkMzk3ODZmZDA4NzU1OWUgbGVnYWN5LXRydW5rCis2MTIxMiA4NDAxMzhlMjQ5ODBjODk5NzQ2M2MzZDg2NjQzMTQwMDAwYmQwYWMxIGxlZ2FjeS10cnVuaworNjEyMTMgMmQ1NTFkMDQ2MDIyZTFiNzQ4NjZhNjU1NDIzNzliZTkyZmJkM2JiNyBsZWdhY3ktdHJ1bmsKKzYxMjE0IDRkMzYxZjAxNjQxY2I2MTFhYjNmYTkwM2MwZWYzNDhjYzZmYTM5NDQgbGVnYWN5LXRydW5rCis2MTIxNyA5MWQ3NTcyZTM1YTFjZDAxMGVhMDE0YmQzOGQ0NjdhN2MwMjI4Yzc5IGxlZ2FjeS10cnVuaworNjEyMTggZDdlNGM2M2ViY2FkMDdiZTZiMmJjMThlMDNjMjVlZDFjMzI2NGEyNCBsZWdhY3ktdHJ1bmsKKzYxMjE5IDU0ODlhZjY4NjQwOGMxZWMwNzJiYTBiODk2YmYzMzFiMTJlZDJkZTEgbGVnYWN5LXRydW5rCis2MTIyMCAzZmMwOWNjZjAxNDE4NWQyY2I0Y2VmMWM1YWUzNTA5NjE5NjUwZjg3IGxlZ2FjeS10cnVuaworNjEyMjEgMGUyMjRhYTIxOWEyMWI3ZmEyMjVkYTEzYjE1ZTcxMDE0YzA5NDAyOCBsZWdhY3ktdHJ1bmsKKzYxMjIyIGYzZWI0NTdlOTZhNzVjM2Y5NzdlNTcwYjI1ZTMxYmQ4MTJkZTVmMGUgbGVnYWN5LXRydW5rCis2MTIyNCBlNDRjNzQ1YmVjMGJhZGI3OTAxNmVhY2QwY2E2YjJmM2NmZTgxMGFmIGxlZ2FjeS10cnVuaworNjEyMjUgNGVhMzZjMDEyYTJkZTUyMjc0MjEyMWQ0OTMyNjUyOWM5OGMwZmIxOSBsZWdhY3ktdHJ1bmsKKzYxMjI2IGRkMDE2YTZkZGNjNWE5MDI4ZjA1YmE1MTdhZGQzNzc5NDc5NGJhOWYgbGVnYWN5LXRydW5rCis2MTIzMCA5N2JlYTM5MjM2YTkzYjY5YzQ0ZjkxYmRhOTQyNjcxMzYyNjJjZTU4IGxpYmZmaTMtYnJhbmNoCis2MTIzMSAyZDQyNTMwMTVmNTg0MGExNGNiNGRhYWRkNzcwNzkwOGJhNTkyYzMwIGxpYmZmaTMtYnJhbmNoCis2MTIzMiA5NmFhNmQwMjdlMmU3NjkxODE2ZTQ5YjMwNGQ5NzU4MjgxNDIxY2IzIGxpYmZmaTMtYnJhbmNoCis2MTIzMyA1NTQ2ZGM0YTQyNmFhYTY2OTliNGM3N2JkMjFhY2RlNjdiYmM1MzdmIGxlZ2FjeS10cnVuaworNjEyMzQgZDM4N2IwMWRiYzFjOWRhYWY5MDY2YjExNjgyZTdjOTVmNTMzMzNiMCBsZWdhY3ktdHJ1bmsKKzYxMjM1IDkxY2E5NTQ5OTA2YWNhYmM5YWE2NTdlNDFmNmMyNWUwMjVkYzQ3YmUgbGVnYWN5LXRydW5rCis2MTIzNiA0OTU3MDBlZTMzNDU2Zjc2NGNlYzFjMTQ1Mjk1MjY4ZjEzNjgyYjU0IGxlZ2FjeS10cnVuaworNjEyMzcgOGE1Yzc1ZWZhZTRjMjBiZTlhNzQxOWI4ZGIxMGFlMWVjMjU2NmYwZiBsZWdhY3ktdHJ1bmsKKzYxMjM4IGRkMzE4YzNmNmNiNzlhNzQ5NTliZjZhMmY1MzUxYWMyZjRmMTQ0ZGQgcHkzaworNjEyMzkgMDBjYjBhMzVmYjQ5YjJmYzk3ZjZjNzRjYmYzYzc0Y2EyNTE2ZGFkNSBsZWdhY3ktdHJ1bmsKKzYxMjQwIGZmM2U5YWVhYTY5MjM1Yjg5MjU5MjA1ZWVhMzE2NmU3YzFlNjMxMzggbGVnYWN5LXRydW5rCis2MTI0MSAzMGZhNjc3NzA5NmYyMTAyZWQ3ZDRjY2M4NzYyYWRkYjM2NGVhNjQ1IGxlZ2FjeS10cnVuaworNjEyNDIgMTFlOWUzNjY3YjM2NWNkZWQ3N2U4YzE3NmVjMjlhOTIxY2IwODJjNyBsZWdhY3ktdHJ1bmsKKzYxMjQzIGJlYWI5ZTEwYTE4YmRlOTc4ZjQyNmY5MGM4Zjg5YThlMDkwODJiNjIgbGVnYWN5LXRydW5rCis2MTI0NCA5OTYwZmQyZjVlYTk0MDg1YWVlNjk5YmNhZDk4MGM1MDQ1NWFmOWVmIGxlZ2FjeS10cnVuaworNjEyNDUgMWE2OGVjZTE1NDdhYjQ3ZjcyOTdjZGZiZTg2M2FmZDZkY2RhYjVhNSBsZWdhY3ktdHJ1bmsKKzYxMjQ2IDIzNDQwMWFkZDI5OThmYmZhNTQ1Nzg0OGM1ZjQ5ODUyYjMyM2U0ZmIgbGVnYWN5LXRydW5rCis2MTI0NyBjOWQ2NmJkYmNjY2Q0NGEzNTljNWJiODM4M2I0ZTJhZGI1YzgxZGU1IGxlZ2FjeS10cnVuaworNjEyNDggNDM2MTA1MTI1NDQ1OTFmNzhlODdlMWQwNzBmZWI3MjM3NTM2YWYzMCBsZWdhY3ktdHJ1bmsKKzYxMjQ5IGY1MjQ2OTExYzkwM2YwYzNmZWUxZjU0ZmE4ZTkxMGJlMTM1ZjBiOWYgbGVnYWN5LXRydW5rCis2MTI1MiAwY2Q0YWQxYzkxNTNlYThhMTQxNjU4YjUxNTI3YzU0ODEzYzIzYmIxIGxlZ2FjeS10cnVuaworNjEyNTMgZDQxYTQyMDY0MDVjMTM1ZmYwZDVkMjkxZWFiNmZlNGUxNjk0NjdkZiBsZWdhY3ktdHJ1bmsKKzYxMjU0IDIyMTZiMTAwYjJkMmVkZWZkMjNmZWFkYWY1NmMxZWVmYjhlYTZiMDggbGVnYWN5LXRydW5rCis2MTI1NSA0Mjg4OWIxYTdkYzI1NWRkODA1MGNmOTMwODBkYjg2YmRhZGYxNTE4IGxlZ2FjeS10cnVuaworNjEyNTYgYzE5N2UxODQ0OWI0MDRmOTUzYTU2OTc1NWM4MGFkMWQwOTYyZmE2MSBsZWdhY3ktdHJ1bmsKKzYxMjU3IGVlZmM2MDRhZDkzNWFiODQzMDYxMTZkOTk2ZTU4ODYzMTQ1ZDQ3NjcgbGVnYWN5LXRydW5rCis2MTI2MCBkMGJlMmMzNmNiZjhkNzk5MjIwZWY5MDBlNThkZjk3NWViZTExNDIxIGxlZ2FjeS10cnVuaworNjEyNjEgNzM5NWVkMGYwZjdmNzc0Mzk2OWJiOTdmYTYyNzQ4NTQ5OThlYWI2NyBsZWdhY3ktdHJ1bmsKKzYxMjYyIDliMDQ5NDE2NzNmMTczZjIxNGM3NDkyMzIyNTc2OTgxMzg3ZDljMmEgbGVnYWN5LXRydW5rCis2MTI2MyBlZjg5MzM5MDQ4N2JhZmQwMWU4OGFmYzhlM2RlYTQ4Y2Q0ZWM3OWYwIGxlZ2FjeS10cnVuaworNjEyNjQgNjFkMjI3MDFhNWU1ZWI2MjZhZDdkZDA5ZmYwNjEwYTQ1Y2ZmZGJlNiBsZWdhY3ktdHJ1bmsKKzYxMjY1IGIyNjJiZWNlMTMyM2NjM2U5MTFjZDAxYzE5ZmRlNDFmMjBhMDQ4NGUgcmVsZWFzZTI1LW1haW50Cis2MTI2NiBiOGVmNzFiMDE0NDYxMDc2OGE1ODRjZDE0ODYxNDMwZDliZTk1MzMwIHJlbGVhc2UyNS1tYWludAorNjEyNjcgNGM0Nzk5M2FmYjFiMTIzMGRjYWY5ZDMwNzUzYjZlYjE2YjhlZTMxNyBweTNrCis2MTI2OCAwYjhiM2U2NjNlM2ExNWM3NjQ3ZWMxODM3YjFhNzZmNTE0YmJiZDFkIHJlbGVhc2UyNS1tYWludAorNjEyNjkgMDY1YzRhNzZhYzAxZjE1Y2E0ZjNiYjM0MzAxOGMwM2IyNDBiMmJhYSBsZWdhY3ktdHJ1bmsKKzYxMjcwIDE1NzQ2YmY0YTBhNjNjNDk5MDkzODMyNzZhOWFhMWNmNGU5NDYzNzEgbGVnYWN5LXRydW5rCis2MTI3MSBhNGMyNjU1NjVjYjZiNjc3NDZjNmM0ZGQyMjUzMTZlNzc0OWJkNjQxIGxlZ2FjeS10cnVuaworNjEyNzIgMzk4MDMxM2Q5YjhiMjdjMGUyMjM3MGNmMjFjOGI0NjAzNzE1MjJkZCBsZWdhY3ktdHJ1bmsKKzYxMjczIDM2ZmVmOTlhZjE4ZDEyMTQzZDM2OGNkYThlMTgxMDExNGE2OTgwMTYgbGVnYWN5LXRydW5rCis2MTI3NCBlOWJlNmFlYjRkZjA2MjFmYjI5MjE4ZTUzNDRlZTY4YjFjZjc3YmQ1IGxlZ2FjeS10cnVuaworNjEyNzUgODk4ZGMwZjhhYjYzNWFmN2U4NmZhMjI5ZmNjMTgxMzMxZTdiY2RhMCBsZWdhY3ktdHJ1bmsKKzYxMjc2IDE3YjJlYTBhZmE2MTE4ODgyODFhMGYyNDliMGM2ZWIxMDEzNWM4ZTYgcmVsZWFzZTI1LW1haW50Cis2MTI3OCBhZjI2N2U1NGJmMWRkZThkOGI2N2RmMDI5ZjA3OTllYWQwN2U4NDgzIGxlZ2FjeS10cnVuaworNjEyNzkgYmJhYjhmNjRmOGQ2MmM1NjljNmQzYzgwMWYxOGM5MzNiZDQwODcyZSBsZWdhY3ktdHJ1bmsKKzYxMjgwIDllY2IwM2VmMWM2MjQxOTdiNTIzOTZjNzZjNWYxMTZkYzU4NTAzMzUgcHkzaworNjEyODEgNDg1YjIxOTU0NzQ2MDk3YjI1MDUyMjI0Y2U0OWUxNjE4ZWUwZDE1NSBweTNrCis2MTI4NSA0NGFhNTlmODU5MWRhYTZlNzc0ZGE4YzZhZmJjNTI4NmQyY2U1Yjk2IGxlZ2FjeS10cnVuaworNjEyODYgMGJlOWIxY2YxYjE2MjExNjdiZGFhMmY3ODU3MGQ4Y2JhZTQ1YmQ4MiBsZWdhY3ktdHJ1bmsKKzYxMjg3IDcxMjJmYTY1Njk3YjhhNzNlNjEwZGI0ODY4MTNhMDNlOTZhMzJhZDggcmVsZWFzZTI1LW1haW50Cis2MTI4OCA1ZjQ5YjU2OWRlZGYxMTRjNWZlY2JhYjVjZDYwMmY5ZTJhODU5YThiIGxlZ2FjeS10cnVuaworNjEyODkgYTg3NTRjMGRiNTNmNTAzMTNmNWRmYzQxNzhlZTZlMjdmNDk0N2ZkZiBsZWdhY3ktdHJ1bmsKKzYxMjkwIDM0MzU5N2M3ZDY4MmIzNTUyNTgwMzUyZGVkZGQwY2RiMzY5NzhhMDQgbGVnYWN5LXRydW5rCis2MTI5MyA5YmJlNTVmOTg2N2VlOTQ4NTRlMzQ1ZjlhZjc4N2ZjZGU5MTQ0NWY3IHJlbGVhc2UyNS1tYWludAorNjEyOTggMzkxZGUxNDMyMjZmZDdiMzc3OTZiYzk3OGZmM2Y3OGYwNWIwODkxOSBsZWdhY3ktdHJ1bmsKKzYxMjk5IGY4NmZhNWZlYWYzMTRkZmE5N2IwNjBiMDFiYTIzNjc0MjMzNzg0NzcgcmVsZWFzZTI1LW1haW50Cis2MTMwMyA5Y2Y3MDcyOWMyM2YyMDg4YmI1MDMwYjA5MDkzOWIzNWJkMjJkZWFlIGxlZ2FjeS10cnVuaworNjEzMDQgMzdhYTQxNmI0YzQ3YjRlZjVmOWYwOTNhYzg2ODc1NzQyMzBhMTRiYSBsZWdhY3ktdHJ1bmsKKzYxMzA1IGU1YWFkYzA1ZjZmNTFlY2Q1YmQwNmY3NjJhZmIxNmUwMTM3MjFmOTAgbGVnYWN5LXRydW5rCis2MTMwNiA0NTA1MGQzNzZkNTdmYjg2ZjgwNDI0NWZiZmMwNjhlZjZmZjkxNDljIHB5M2sKKzYxMzA3IGMyN2FhYmFlMDZmZGM3NWIyMjhmNjhkM2Q5M2YxMDRmZDNhMjMyZDAgcHkzaworNjEzMDggOWE3MjdjOWY5YmFhMjU3ODY0ZDUzYTY3ZTJkM2EwMDIxYTk5N2JjYSBweTNrCis2MTMwOSBhZjQ0Y2VmMWNkZjVhNTVjOTNmZDlmMTc5MmRiMGE5YmE4OTJlNWI3IHB5M2sKKzYxMzEwIGM4MzA2MTZiZDJmYzkzMTA1M2M0MTc5NDNmMTRlOTRmNGYyNTM2ZDkgcHkzaworNjEzMTEgOTQwNTNiMjdhMzUyNTkwYWMyMGQ2NmJmNWQ4ZTZlZWQ0MTExNThjMSBweTNrCis2MTMxMiA1MDY1NDc4MjJiOGQwMTAyMmRhNjU1MDBlNGI2MWNhN2ZlOTZkNTJiIGxlZ2FjeS10cnVuaworNjEzMTMgMTU4NDIwOTRiMDg5YTJjNzhiNTAyNWM2YzdlZDhkOGNkOWFhYjYyZSBsZWdhY3ktdHJ1bmsKKzYxMzE0IDhiYWI0MThjYzg3OTNiOGMwMDg2YTAwMjdhYTgxOGU1YTgyNzI0OGEgbGVnYWN5LXRydW5rCis2MTMxNyA1YjQyMzljMWY4ZjgyZjYwOWY4ODgwYTQzNGMxMzljMWQ1OTYyZTIzIGxlZ2FjeS10cnVuaworNjEzMjkgN2YyM2I4MDRlOTRjMDRhYzRmYjc1ZTE2NTcyOWM0ZGYzNjczNmVmYiBsZWdhY3ktdHJ1bmsKKzYxMzMwIDY2MDcwZmRiZjBiOTMwNzczMGM3NWQxOWI3YzEyYjU5OTExZTU4OWEgbGVnYWN5LXRydW5rCis2MTMzMiA2ZjE5NTc1NWYxNDRlODAyZGMxZDhmNzI1MTZkZDBhYTFlYjg5NzJmIGxlZ2FjeS10cnVuaworNjEzMzkgNDU2Y2VlYzY1MzU3YzE2NjU3YjBhZGJiYmNmZTI3MjBhZjA3YWIwNSBweTNrCis2MTM0MCBhZWFhMzAzMTQ3ZWViMjNmNGMwYjQ4MDMxNmVjMzY0ZTQxMjY4OWE2IHB5M2sKKzYxMzQ0IGI5ZDZmODcwYmZiMTY4YzVmYzM2Y2RlY2M3MGExOTU4MzA3MmM1NTkgbGVnYWN5LXRydW5rCis2MTM0NSBkOGRmNGFhMDYyNjFkZTVlNGMwYWEwNTFlNDQ4Njk3ZDQ3OTFlNDM3IHJlbGVhc2UyNC1tYWludAorNjEzNDYgMjAyMjk0M2FkNDUwYzQxZDY0NzA4ZmI1Y2FjYTJkMjY3MmI1YjhmOCByZWxlYXNlMjMtbWFpbnQKKzYxMzQ3IDVkNzY0ZDUxOGY2NWViYjkxMDg1Njk3MjdhN2M4OGIzMjBjMjdlYjggcmVsZWFzZTIzLW1haW50Cis2MTM0OCBlODU3MmQ5YWM4NWVmM2QzZTRjMDBjNGVkOGYxY2E3YTZhZWQ5OWRlIHJlbGVhc2UyNC1tYWludAorNjEzNDkgZjdjMzY1OGM3MWMzZDZjMzIwMzk4MjUwNzMyNzVmNWQ3ODNhYTQwMyByZWxlYXNlMjUtbWFpbnQKKzYxMzUwIDE2MmM2OTUyZWEzNGQ0ZTcxZjVmOTk5N2ZkODBhMWI2ODgzOWEyZmQgbGVnYWN5LXRydW5rCis2MTM1MSBjZTVmNmZkNTc5MTMyZjRiOTUwYjA5NTVhZGNmNGViODE4NDA3YmU5IGxlZ2FjeS10cnVuaworNjEzNTIgN2Y0ZTYwMjFiYzlmNjA5NGZlMmEwZDZhNzUwYjBhNmVhN2MwZWUwNCBweTNrCis2MTM1NiBlMDliYzFjNTI5NWJjMTk4NDVhMGYzNTRkYTJlODMwNjZmZWI4ZWU2IHB5M2sKKzYxMzU3IDdhZGFhYjY0ZWI3MmU0N2U1N2ZiYjRjY2JhZjg3MDNkMGMyZjU4MTIgcHkzaworNjEzNTggNzc1MmE1N2Y5YzQ5MGQzMWYwZjNhZjhjNjEyMTU1MzY4ZTM5ZGJkMSBweTNrCis2MTM1OSBlNDQ2OTEwYzlkNDM3ZjRkNGEwMzBhYjAxNDRhZGJkMTFhZmEyNGJhIHB5M2sKKzYxMzYwIDc0MGI1ODA4YzU3YWU3YjNkNGM3OTNiYWRlNTExY2ZhZjlmNTJmZWQgcHkzaworNjEzNjEgNDJhNmFhZDM5ZTVjZTliZDQ1ZmJkYTNmN2Y2OTkxOGI3ZDY4MzUzNiBweTNrCis2MTM2MiA3Yjk1YzU3YjU4MjFiZmFjMjdlZTZiMTVlNDYxNmFlMzkwYzFlM2NiIHB5M2sKKzYxMzYzIDk4NjMzOGViMGMwZGU1Mjg2MjVkNDViOWZhNTFjM2VmYzhiOTA3YTMgbGVnYWN5LXRydW5rCis2MTM2NCA3NDMxZjNmYWEzNTY4YTQyZTFlZDQ0M2ZhNmQzNWI3OWE5YWE5NDFiIGxlZ2FjeS10cnVuaworNjEzNjUgOTM5NWEyMmE5NjZhOTRjYTA4OGI1YzRhN2Q1OTEyNDRmNGIyNmQ1MCBsZWdhY3ktdHJ1bmsKKzYxMzY2IDAxMWQ3OWFmMDVlYTkxM2ZjYmY3MzNkNWUxZWYyNGQ2YmYyYWY5ZWMgbGVnYWN5LXRydW5rCis2MTM2NyBkNTAyNGVlOWU4OGEzMWIxYjZjNzQ0NDg0MjFlMTNhZDY4MDIzNDNiIGxlZ2FjeS10cnVuaworNjEzNjggZDcyZDUyN2RlNzExOTY1NjVhZjczNWYyYTg0N2Y0ODg5NzU0N2E3ZCBsZWdhY3ktdHJ1bmsKKzYxMzY5IGNiYjllMmY0YjIwMjgzYWNhMzM1NGE4OWNkZjg0NmZiMjcxNjUxYWEgbGVnYWN5LXRydW5rCis2MTM3MCBkYjViMzIxZWRjYmIyYzFmOTNlYTBlYzE0MWY4YjU2NzYzZmM2ZGQ3IGxlZ2FjeS10cnVuaworNjEzNzEgNmEzM2Q0ZjZmMTZmNzgyN2U2ZTJmMWVmNGU3MDczM2FhYjYxNGRhOSBsZWdhY3ktdHJ1bmsKKzYxMzcyIDU0M2U4ZGRlMzYxZjhhNjFjMjE2ZTc3NGFjNGZmZTc0NmM3NTFjYmMgbGVnYWN5LXRydW5rCis2MTM3MyA0OWRjOWFmOTBiM2QxZjI5ZGVkYjViYWVjMzg3NGQzNjI2OTZiYTRjIGxlZ2FjeS10cnVuaworNjEzNzQgNjYzNDFiZWQ4MmIzMDUzZmZlNjZjZTgxYTRmMTkyNThlMDRjMGY5YSBsZWdhY3ktdHJ1bmsKKzYxMzc1IGQ5N2JiYWQ5YTM1ZWVlZTIwMzcxYzI0MWM2NGNmZDhkZGZiMTA4YWEgbGVnYWN5LXRydW5rCis2MTM3NiBiYzgxMzI2NWUyYzY1MzNjNTUwY2NlZmJmZTczMjZmMWVmOGVhMzU1IGxlZ2FjeS10cnVuaworNjEzNzcgZTJlNTQyZmRhY2QwOWRlYjhhZGEzNWY2M2Y3N2JmZmE3NDhmODA3YiBweTNrCis2MTM3OCBmNmIzY2YyZjMzMzExZmNlNzE1MWI2MWY3YzZkOGQxZGI3MTNlOTI0IGxlZ2FjeS10cnVuaworNjEzNzkgN2M3OGVhNzA3MjE5ZWU0ZDAwZTY0NjM1Y2NkYTFhZDI3MTlmYjRkOCBsZWdhY3ktdHJ1bmsKKzYxMzgwIGU3YWE5YjVmMjFiNTBkMjhkODVkMDY3NGFiYzg1NzM0YzhiMGY1ZWYgdHJ1bmstbWF0aAorNjEzODEgNTM3Mzc1MWFkNGI0MTBiODI3N2Y1MTRjZjI0YzJmNTM3ZmNmZTJjMyB0cnVuay1tYXRoCis2MTM4MiAwZTBjMTQ5OGJlMWE4MGY4NmI5OTQ3NGI1Y2UyYWJmZDMzZGViM2JkIGxlZ2FjeS10cnVuaworNjEzODMgMzU0ZTM3N2M5NTkwMjQ0YWJlMDdhOTc5MmE4YWEwMmM3YzZjMWE2MyBsZWdhY3ktdHJ1bmsKKzYxMzg2IDE2NTgwZGMxNDI5NGU5MjIzOTg0ZWE5MTI0MGM4OWMxNTI1OGY4ZTggcHkzaworNjEzODcgMDA1M2ZjOWY1YTFmNmU3MDU4NjQ0OGM4ZTkyZTU0ZGY5ZDBjNTc1ZiBsZWdhY3ktdHJ1bmsKKzYxMzg4IDljODkwOWVlNTcxZjRjNTA1ZjUxMWQ1ZDFhMzdiNmZkYTU1M2Y1YjkgbGVnYWN5LXRydW5rCis2MTM5MiBiOTQwYjFhZDlhM2FhMjE5YTIxYTk0OGIxMjE3ZjFkZDBlMDYwZmFlIGxlZ2FjeS10cnVuaworNjEzOTUgYzA3YzVjN2E5MTRlZTMxZjlkNzBjNDRiYTBlZmY2NDAxNDJjMGEzMCBsZWdhY3ktdHJ1bmsKKzYxMzk2IDgyM2UxMWViZjY2ODI5YmFmNTUwYjkxNjAxM2I1MzRmZDc0NWY3MDkgbGVnYWN5LXRydW5rCis2MTM5NyBhNWM5MzkyMjlmZjI3ZmI0NjQ2ZDFlZWNiMWExZWRkYWJiOGZlZDhiIHB5M2sKKzYxNDAyIDIxMmU5YzhhZDA4N2ViMTZjODk0ZTAwZWM5ODUyMDE4NDU1OWYyY2IgbGVnYWN5LXRydW5rCis2MTQwMyA1OWViNWFmNjFjZDczNjg1MTczOTg4N2E3MDUyYjY2ZWUyYzk5YmVhIGxlZ2FjeS10cnVuaworNjE0MDQgNTMxZTYyNDE2ZWViNjdkNWU5Mjk3ZTA3ODgxM2MyMjhmZDU5OGRlMCBsZWdhY3ktdHJ1bmsKKzYxNDA1IDBkMTBmMTkzYjliZTI1YTZmZWM4OTlhYzQzZmY2MjBmMTExZGI1M2YgbGVnYWN5LXRydW5rCis2MTQwNiA0ZTM1OGVkN2Y1MTU2MTdmZmM3YmE1MmIwMWU1M2VjNDk4MzE4YjEwIGxlZ2FjeS10cnVuaworNjE0MDcgZmVhN2JhODkxMGE5NjBiZjcwZGQ5MmU0ZTc3ZDc3MDE2MTVjZGI5MSBsZWdhY3ktdHJ1bmsKKzYxNDA4IDgzMmM4MjBlOWQxNDRjYjc2Yzg3NzhhZDZmY2ZmZTIzMmIxZjVjNDYgcHkzaworNjE0MDkgMDU4ZmJmYjk4NWFlOGEwYjY1ZDcwNDE1YTYxOTkxNWU4YzVkYWQ0MCBweTNrCis2MTQxMCA3MDI2NTdlZmFiOWJlOTEzOTNkOWNlYjRjOTI3MDYzNjBkOTU5NGM2IHB5M2sKKzYxNDExIGFlMjFhOGQ3MDMwMjZlMTgyMjIzMGM0NmVmYjZkMWFmNmYxNTY1NGYgcHkzaworNjE0MTIgZDBjNjc3ZGRkNmI4OWMwMTRkNjVmOTE3NDg3MjA1N2Y4YjI2OTZiZCBweTNrCis2MTQxMyAyZTBlMTQwMjk1OWQzZGU3MDdjNTFmOWVlMTI2MWIwNDIxNDdmYWE0IGxlZ2FjeS10cnVuaworNjE0MTQgMzlmYjJjNzg4NDFlYTI1ODI0YmIxYWIwNjk2YTJhOTdkYjViOWEwMSBsZWdhY3ktdHJ1bmsKKzYxNDI2IDM3OTczMTI1YjJjMGNjMGFmOTU3OGZiZDNiNTYzYjgyNzU0MjVhNmQgcHkzaworNjE0MjcgZDcwZmFiOTdlYmI1ZWE5NzMxMDc1ZTM5N2I5MTgzMWIzMTQ1MGU0ZiBweTNrCis2MTQzMCAxZjBlN2UyZGJlMTVjYmFlOWU1NjQ1YzYxMzRmY2U4MjYyYmYzYzJkIHJlbGVhc2UyNS1tYWludAorNjE0MzEgNzlkZWE2NTMzMmY4NmYzN2Y5YzY1M2RlMjQwYzE4ZWVmOTZhZmVkNCBsZWdhY3ktdHJ1bmsKKzYxNDMzIDJmZjNlNDMyMTdiN2U1NDRhMzllNTQ1ODNlNTBlZmQ5NjQ3NWExOWIgbGVnYWN5LXRydW5rCis2MTQzNCA0ZDI5MTI3ZjNmYTBkN2JjYTcyOWNkYzUwMWQ2MGQyMjA5MjY3MThjIGxlZ2FjeS10cnVuaworNjE0MzUgMTY3MzJkYjAwODIyZWE5ZGFlMTdlMWE0YTMzY2ViOTM0ZTdmM2ExZCBsZWdhY3ktdHJ1bmsKKzYxNDM2IGM0NDAyZWM2MGMzYTRhMTUyZWU2MjVlN2QxN2MyNWY2ZDM1NWM1OWMgbGVnYWN5LXRydW5rCis2MTQzOCA0ZDM5ZDRhNmE5ZGJhNWE4ZDg5ZmYxY2M1ZWI1ZGYzZjQzZjg3YTY4IGxlZ2FjeS10cnVuaworNjE0MzkgMjJhNGExMTFkNTk4YWUxM2JhNzBmYjcyMTMyYjAwMmM1MjNkOGFkNyBsZWdhY3ktdHJ1bmsKKzYxNDQwIDQ4MjQ3YTRiMzhlZGYwOTczZDE3YTU2NDU0NGVlYTBjN2M5MjIyYjQgcHkzaworNjE0NDIgNjJlZjBlYTAzNGY0ZTk2OTA3OWUxNjRjODA1OGYyNTE2ZDA5NzdlYSBsZWdhY3ktdHJ1bmsKKzYxNDQzIGJiNTQzYTgwOWZlMjRjOGM1MjUxZWIyNThiZjJlOWQ2MGY4NTBmMTUgcHkzaworNjE0NDQgZjExYzAwMjQ2ZmI1MjVkMTdjMzRmMjZlNmE0ZmI2Y2I2NWM2NDMyZSBsZWdhY3ktdHJ1bmsKKzYxNDQ1IGFjYmY5Y2Y1OTRmOGJkODUyNjRkNmE0NGY1ZWZjNDY4NjY0YWEwZDYgcHkzaworNjE0NDYgMzZmM2M2YmYyYzk3YmZhZmVkNjk4MWFmMjMyOWNiNDMxYTE1NzRhMyBweTNrCis2MTQ0NyAwZGI3ZmExNGM3OTQ4YmYxNDM2OGY2NWMwZGRmZjY4YjNkM2UzMDYxIHB5M2sKKzYxNDQ4IGNiMzYwZmM4ODkxMjI3NzNlM2JiMjNlNDc2ODgzMGUyMjZmZGYwZjcgcHkzaworNjE0NDkgNzEwNDc4YTE5NzdhY2ZjYzQ1YzM5ZTg2NjMzZGZiYjcyMDdlNjFhOSBsZWdhY3ktdHJ1bmsKKzYxNDUwIDgwMThmNTA2NTY2MWJhYTMyYTA0Y2QyYjg2MjdjMzlkNTgxZjA3YzYgbGVnYWN5LXRydW5rCis2MTQ1MyA3ZThjZWIzOTQ0N2VjYmJhNjZjMGVlZDc2MTg4YzE5ZjExOGRmNTlhIGxlZ2FjeS10cnVuaworNjE0NTQgYjVjYjdhNjc4ZjM4OTFmYzQ5NjdlYWE3NTMyYTg4NzA5OGNjM2EzNyBsZWdhY3ktdHJ1bmsKKzYxNDU1IGRlNmIyODM0YjhhZjk5MGQxMWEwZDczM2M1NzcyNDg5ODU3NjVmNjYgcHkzaworNjE0NTcgNDMxODI1ZWFjNGFlMzczNjNlNGU5ZmQwNGE2NzBkMjg5NTNmYjViNCBweTNrCis2MTQ1OCBkMzNjYWRiNTk1ZjY1ZGRhZjhiMDNhZjllMGU2YjdjNDkzNDNmNmE4IGxlZ2FjeS10cnVuaworNjE0NTkgNmE3ZmE4NDIxOTAyYTk1NGRlYzc3OWZlOWE3ZjRhNDYxOGIxYTk0MiBweTNrCis2MTQ2MCAyYzI2MGJlMTI0MmQ5YWZkMjczMTg0N2Q0NzJlMzdmNWViNDg4NjY2IHB5M2sKKzYxNDYxIDM0ZjRkNDdlYzQzYTRmMzZjMWI3ZDA3OGM0MTg2ZWRhYjQ4MDQzYmYgcHkzaworNjE0NjIgOWQ5YTM4YjhlYjFiMTFhMDI4MjVlYjA0NTkwYzlmMjVlMWE4ZDlmOSBweTNrCis2MTQ2MyBhMjAwYzM4N2U4YjI2NTEzNWRlMTZiNmQ5ZTk3ZjY4Y2U0NWI4YTMwIHB5M2sKKzYxNDY0IDE2YjQ0NzY0OTQ0ZWI4YTNlYTgyZGM2M2Q5MDhlMzY5OWE5NjZmNGEgcHkzaworNjE0NjUgNmMzOTNkY2Q0NWM0OGYwNzA3MzJiMWE4ZDhlOGJmZjhiYWE0OWVhOSBsZWdhY3ktdHJ1bmsKKzYxNDY3IDMyMjY5M2JmMTBjYWM2Y2QzYzA4N2UwMDFlNmE5NGMxMDIyZTQxMWQgcHkzaworNjE0NjggOTczYTIzY2Y2ZjBiN2EwOTU5ZWQ2YWI2MmNlNzliMGRlMjdiMTBlOCBsZWdhY3ktdHJ1bmsKKzYxNDcxIDdmMTNkNjkwNGUxNGE0OTRhZWVjODg5OWRhYmQ3OGMyNGVjOWQ0Y2QgbGVnYWN5LXRydW5rCis2MTQ3MiA4YTNmYTg2YzMwYTZlMmM3MmQ1YzdiYmZjMjM4YTk1ZWJmM2Y2MjJkIGxlZ2FjeS10cnVuaworNjE0NzMgMzc0NWZkYjk5MzJmMDdjNDg0ZTlmMzE1NTdiYjI4YjZhZmM1MjliMSBsZWdhY3ktdHJ1bmsKKzYxNDc0IDhkZWZhMWQ1ZjA2NmQ5MzAxOGQ4YjdjN2Q5ZjU3ZGUwZDRjMzc2ZTUgbGVnYWN5LXRydW5rCis2MTQ3NSBmZjBhYjdiMjhmNDkxN2NkODYzNzQwNzRkMmVmNDlhOTgxNWIxMmVjIGxlZ2FjeS10cnVuaworNjE0NzYgZTMxZDMxNzgxYTc1M2UwZGNhNDFkMjQ2Njk3MjllMzhlZjkxM2NjNCBweTNrCis2MTQ3OCA3OWZkYzg4ZmY5ZWNkZGU1Zjk3MjRhYjBlOWE4YzYyNDdmYTdiM2FhIGxlZ2FjeS10cnVuaworNjE0ODAgNGRhYmQ5MDcxODdlYTczOTFhNTRiNTMxZGE3MmY0MzQ2ZGQyZTE5NSBsZWdhY3ktdHJ1bmsKKzYxNDgxIDk2NmZmMTY4YjU2Njk2YzEwNWMzMDQ0ZTY2MmQxN2FhZjM3ODkwY2MgcmVsZWFzZTI1LW1haW50Cis2MTQ4MiA3YzQ4NTRmZmNkY2Q4OGNjNTcyYmVkZDgxOTRmZjVkMGZjNjA3MDBlIHB5M2sKKzYxNDgzIGMwZjE2NWUxZGJjMDVkY2U1MzM3ODMwZmE0MzNlOWRhMGI0NTgzZjIgbGVnYWN5LXRydW5rCis2MTQ4NCBhN2JiMDA0ZTdmMDZhOTNjZDg4NTczYzJjNzhiZjQ3ZjYwNzY2Yzk5IGxlZ2FjeS10cnVuaworNjE0ODUgM2RlYjcwZTQxODJhMDdhMmE3OTI5ODA1YjIxNjExNmFmY2MzZmU5YyByZWxlYXNlMjUtbWFpbnQKKzYxNDg2IDI3ZTdkYzJlNjI5MDVlOTIyOGY5ZTBhYjFiNjllNGFiMjUyZjdiOGIgbGVnYWN5LXRydW5rCis2MTQ4NyBhYTMzZmI5MGVhYTUyYTliOWJhNzllYzBhZTI3NmUxOTBhMmY5ZTQ3IHB5M2sKKzYxNDg4IDA0NDg3YWQzZDFiZWY0MTUzNTBmZDNjY2E4Y2I0ZGY2ZDc0OTU2OWYgbGVnYWN5LXRydW5rCis2MTQ4OSAzYmIwZjFhMTkzOWQ5Mzg3OGI0ZDY0OWJlYWU4ZTcxZWQ1OTE5ZDFkIGxlZ2FjeS10cnVuaworNjE0OTAgYjM1OTQ4MGNhODg2NDYwZWNmZWY4NTE2MDg5MTlhZjVhMGEzMzJiMCBweTNrCis2MTQ5MSA1YzBiNWNhYmVlYzk2NmQ3ZmVjODM2NDI5OWUxYWI4MjcyOTZkMTMxIGxlZ2FjeS10cnVuaworNjE0OTIgZWRjYjM1NDIxNzZhNTNkMTQ4MmVmYzVkMmQ4NDliNTU5ZWQ5M2IxNyBsZWdhY3ktdHJ1bmsKKzYxNDkzIDEzNzI5YzcwYzhkOGMyOTQ5OTZmMDc5ODk5MWE0YWRkOWRlNjZiMDIgcHkzaworNjE0OTQgMDQwNTAzNzNkNzk5ZGMwZDUzOTMwYzY5MTU4NWZjMjgyZTA1NzQ4YyBweTNrCis2MTQ5NSAyNTQ2MzEzYThiMjdhZDRmYWM4YWM5MmYyZjJiMzhjOWM4MDFiYTA1IGxlZ2FjeS10cnVuaworNjE0OTYgYzUyNDEwNjlmZmZkYWE5ZTdmMTM1ZmNmYTRiYzFhZjY4MDIyNmRkMCBsZWdhY3ktdHJ1bmsKKzYxNDk4IDUyNjgyYmQ3MzhhNzVjZjRjYjcxMmU2YjE4YjQzY2YzMjI5YmFjYWYgbGVnYWN5LXRydW5rCis2MTUwMyBlMjI3ZWQyY2E5ZDE1YWJiYjYxMzMxNDFiMzkxYTAyNTRiYTM5ZjJhIGxlZ2FjeS10cnVuaworNjE1MDQgZDRiYmY5YjQ3MTBmNDdkOGY3YzZjMGZkMDY5M2IwMzI0Yjk0MmY0MCBsZWdhY3ktdHJ1bmsKKzYxNTA3IDZmYzZhODA2Nzg0Zjk1ZjA2MGZlZWVmNDRiZjUzNWI2YjA0OTYyNmMgbGVnYWN5LXRydW5rCis2MTUwOCA4NjczNjQwMWQzOTQ0NDdhY2FmZTljNDU2NjQ0ZDQwMmM2MzdlOGVlIHB5M2sKKzYxNTA5IDk3MzYxZDkxN2QyMmQ0MDFhMzZjZTg2ZGZmNmFkMDliZjJlZGEyMzQgbGVnYWN5LXRydW5rCis2MTUxMCA0NjM0MjQzMTc5NTUwYWY1NTgyZGE0MGMzN2EzZDgzZWRmYTcyMDE1IGxlZ2FjeS10cnVuaworNjE1MTAgMTE3YmJkNDRhZGFlNjQ2YWViNjU0Y2NlZGJjOWMzYWU2MjY2NWNjMiByZWxlYXNlMjUtbWFpbnQKKzYxNTE1IDhmMDBhMDk0OGYwMGUyZTU3ZTc5MjA2NWFiMTczNmFkYjVhYjM1NDEgbGVnYWN5LXRydW5rCis2MTUxNiA2YzE3ZGFjNzA1NzE3Y2ZjZDQyNDBhMzg3MTNhN2Y4ZjQ3ZWY1NmVlIGxlZ2FjeS10cnVuaworNjE1MTcgOTYzOGQyZWEyZjU3YmFhMzY0NzVhODU4MjNkN2Q3MzAwNjNmNWFlOSBsZWdhY3ktdHJ1bmsKKzYxNTE4IDNiMzliN2JiMmMwN2MyNjhmOWE3MTg4NDhiMWU3ZTYzNTg1OGEyYmUgbGVnYWN5LXRydW5rCis2MTUxOSBlMTQ4Mjg1YmQ1MTE4Mzg5MGQxNTk1NmZhMzBhOTAyYzA5YzE5ZmMzIHB5M2sKKzYxNTIwIDk2NjAxZjhmMzM5MTQ0NWQ5MmIyYTU3NzJiMjYwMTY1NTkxOTUwYWYgbGVnYWN5LXRydW5rCis2MTUyMSAzMGM0ZTFjYTg0MjEyMzY2OTg5ZGY4MzNhZTIxNzcwMjVmMTc0NzdhIHB5M2sKKzYxNTIyIDliOGM0YjUxMDdmMGY1NWNiNzNjMjA3NWY2YTNjMTJmYTEyY2YyMmUgcHkzaworNjE1MjMgMjExMzllYTU5YjZiYTI1NjVmYjZiOTQ3NjU4ODAzY2I4MjVkMWUwNSBsZWdhY3ktdHJ1bmsKKzYxNTI0IDc4Y2E4YzI1NjFkYjhlNzk2NjhkMTU3NWRmOGYxZTdmOWIwODMxNWQgbGVnYWN5LXRydW5rCis2MTUyNSA2ZjBlZGEzZTkyYjM2MWIyMTg3N2U2NjQwNWI1NWY2OGIwZDdkNjY2IGxlZ2FjeS10cnVuaworNjE1MjYgNTgxYzNlNWIzNDliMTIwZDI5NjUwYWRkNjZkMTQ4ZGQwZDhlYWE5OSBsZWdhY3ktdHJ1bmsKKzYxNTI3IDkyMzM4MGFjZDFjZGQ4MDU1Yzk4YmM2NzczNWQwZDRiOTg2ODhlZTQgbGVnYWN5LXRydW5rCis2MTUyOCBjNDI0MDk5YjRjZTRiNGRlNGJhYWE4M2Y2MDBmMTJjMDRkY2ZhZDhjIGxlZ2FjeS10cnVuaworNjE1MjkgNTA3NzFhM2ZhZDJjYWFhODhmOTQwZWEzOWVmYjAwODI0YzYwYjhhMiBsZWdhY3ktdHJ1bmsKKzYxNTMwIGYzMDJiZWY4YTAwNGFhZWYxMjcxMzNiMTQyNGM1ZDU1ODIwNWZkMzEgcHkzaworNjE1MzEgMWNkOTMwYjgzNWE2MzkyOGQxNzE4MWJmZTczMThmNmI2YmMxNDgxNCBweTNrCis2MTUzMiBlYTkxOTE0YmNiOTc3NGY1ODU0OWJkYTkwMzViNWY5NzQyY2Y4YjZlIGxlZ2FjeS10cnVuaworNjE1MzMgYTYyOGVmODJlYjdlMGM5ZTM5NWM1YzhiMDQ2OWZjN2VlNzdkOTA4MSBweTNrCis2MTUzNSBlMGU4YmVmMGQ1ZWNjYjI3MjRlMTQ3Mzk5NjdmM2VlZTA3YjhlYjZhIHB5M2sKKzYxNTM4IGNjNzU4ZThkZGM5ZDc5NDA1MmFhMGFkMDg2NTc5YTIxYzQ3NzlhYmMgbGVnYWN5LXRydW5rCis2MTUzOSA5NGE2MDgyYTc3MGZhMzBmY2Y4NWQwYmQyMWJkNzI0OTk1ZjEzODZhIGxlZ2FjeS10cnVuaworNjE1NDAgM2E3MmNiY2MxYmI4MDZjMmI2OWM2YzVhZjI1NzVmZDQxNjg5YzJiNyBsZWdhY3ktdHJ1bmsKKzYxNTQyIGViNmQwMDc0NTNiYzJjMjc5ZDA5NjE2MTNlMjA3OGRmZWEzNTAyMGMgcmVsZWFzZTI1LW1haW50Cis2MTU0NCBkYzRkNjhhZTlkM2RiZjA0MTU5NzY4N2RiZmQxNmIwNDQzM2Q1OTcyIHJlbGVhc2UyNS1tYWludAorNjE1NTMgMGQ3NjU5YzJiOTk4NTI3NGI2NjMxYzZhMWIwNzI2NWJmNmY1NjczMCBweTNrCis2MTU1NiA1MTU2MzM2MTU3MzVhZjA2YWI4MzZmOWQxYWQ2Nzg0NWIxNDcxYjRiIGxlZ2FjeS10cnVuaworNjE1NTcgYmNlNjlkYjcyZTAwNDNjNTgxMmI3OTBhNzU0MzhhNWM2NmU4NTZjOSBweTNrCis2MTU1OCA4M2M1NWFjZmI5NTk4OWFlODkxYjdmYzA3N2MwMzk0MDk2OGRlMzUzIHB5M2sKKzYxNTU5IDFiYjY3ZTUwM2RmZmNhNDM2NGRmNjRiNTNiZmNlNjVhMmJmYjdjZmMgbGVnYWN5LXRydW5rCis2MTU2MCAwMDVkYjkzNGVlMjVlZjk5MGJkYWI1ZWE1NmZkZWQ1YjZjZWZlZGZjIGxlZ2FjeS10cnVuaworNjE1NjEgMGU3OTc5M2ZmZTg3MDVlMWQ1ZTgxMTUwZGZmMWU0ZWI4NWI4NjYxOSBweTNrCis2MTU2MiAxNmM1NzZkZWU5ZDNiYWMxODRiNDE0OTM2ZmRjZGRhZWExMjZkMTUwIHB5M2sKKzYxNTYzIDJmNjQwZjBmMDY5NzZiMmVhZDkwMzkzM2Y2NjBhMjAzMTBiMjExODAgbGVnYWN5LXRydW5rCis2MTU2NCBlZTBkZmNjZjhjZWU2ZWNlODg3YmQ1MzkyNjc4Nzg3MjhiNjU5YWMyIGxlZ2FjeS10cnVuaworNjE1NjUgYjBkMDE5NjliYmM4N2RlNDVkYzE3Yzc3NmY1YjE4YWQ2NjEyNWZmOCBsZWdhY3ktdHJ1bmsKKzYxNTY2IGYzYmUxMjIyMGZkN2UwMWJiYjJhODA2NWNiZjFhZDZmNGM2ZTgwNjAgcHkzaworNjE1NjcgZmE3MGU2YWU4MzFhZTFkZWFkMWI5YWRiYWZlMGZlNWY1NjJhMWU2MSBweTNrCis2MTU2OCAwNWFjM2MxOWI3YTgwMzY0MzI1NmFhYWM5NzYyMWFjYjA1ZmEzOGQ1IHB5M2sKKzYxNTcwIDg2MGUyM2E2MWU1NTEwZmJjMzNlMzhhZjNkNTY1MTEwZGM4N2I3MmEgbGVnYWN5LXRydW5rCis2MTU3MSAyODkzYzAxMjlmZTVjMzYwMmE2NTM5MzY4ZjNhY2RhNGQ3M2IxOGFlIGxlZ2FjeS10cnVuaworNjE1NzIgYzhjNTQ3YzUxZjlhNmYwYWU1NTAzZjA5NWUwYjkxZDBiZGM3N2E0YyBweTNrCis2MTU3MyA1MWUyNDUxMmUzMDUyODU1NmMyYmI3MWE0YzY4MDI2MTA4Nzk3NzJiIHB5M2sKKzYxNTc1IDIzODVlMTZhY2I0Mjc5ZDUxZmM3MWFjMDkxZjFiYTI2MDlhZmM2YmMgbGVnYWN5LXRydW5rCis2MTU3NiA5NmJkOTcyMmUzMWQzMDA5MjVhNmE2MzFlZmNkY2U0YmE4Nzc2MzczIGxlZ2FjeS10cnVuaworNjE1NzcgNzI3Zjc0M2NmNjMwYjFkMTllMGUyMjZhMTg3MjY1MDJkZjczOTM4ZiBsZWdhY3ktdHJ1bmsKKzYxNTc4IGY3YTZmMzM5NDMxMDY3NDAyMjE0ODdmYWM4YjA2YzhkOTM0YWQxMzAgcHkzaworNjE1NzkgZjA5NmVmOWM0MTE0Zjc1N2ZmZTNhNzAyZjkyZTY4NWNlYjQzOWVjZCBweTNrCis2MTU4MCBkODdkN2ZjMmMyYmYzM2FkNTAyZWZlMjA5ZjdjM2FiOTI4NGVjMmEwIGxlZ2FjeS10cnVuaworNjE1ODEgMTlkNGI2OTdmYmY5YWQ1M2MwMDQ1NjJjMzdiN2FmOGM1OTdjZGU5ZiBsZWdhY3ktdHJ1bmsKKzYxNTgyIDczM2MzZWUxOTg5OTY2N2Q1ZjY4Y2RkMWNiNzllOTFlYjE4MDI3MTcgbGVnYWN5LXRydW5rCis2MTU4NSBjNzdlMzExOWUyNjc1ZTA4NjEyYjk2OGVkZWY2NzgwODg4NjY0NGRlIGxlZ2FjeS10cnVuaworNjE1ODYgMWRmYjlhZTc4YTM3MjdjZjgzZTQ1MGQ2YmYyOGJmZGQxNjE4ODljYSBsZWdhY3ktdHJ1bmsKKzYxNTg3IDRjYTcxMTlkMTcwMDVkZjYxNTExYTVhMDQ0ZTE2ZDhhOGM0NjQzOTkgbGVnYWN5LXRydW5rCis2MTU4OCBiODRlMGUyM2NhYmQ4OTA0NzVhNTc4MTYxMGU4NzYzY2JmMTRmYTQxIHB5M2sKKzYxNTkwIDdmNzc3MDcxOWU4NDg2OTljOTE0MTg0NjJhMmE4NTMwMDE2NjA2NjAgbGVnYWN5LXRydW5rCis2MTU5MSBkNGUxZGI4Nzk3ZjZkYzgwY2FmYzEzZWQ4ZWFmNWQzZmEyZDJlNjNiIGxlZ2FjeS10cnVuaworNjE1OTIgODE5MTE2OTUwMDk5MDg3YmVhZmFlYjhkYzIzOGM4MDNlNzc4OTVkZSBweTNrCis2MTU5MyBkNWNmZjdmOWExNDJiZTcyMDYyNGNhYmU4NjkwMDQzMTRhMjQ2MWEzIGxlZ2FjeS10cnVuaworNjE1OTUgMmEwMTA3NWNkOTAyMTQyNzI3YWU2NWE1ZjU4Yzk4ZDUwODVlMDkzMCBsZWdhY3ktdHJ1bmsKKzYxNTk2IDMwMjYyNWZhNmEyYTY5YWRjOGQ3OTI0MjllZDhlODg0NjdmODBkMmUgbGVnYWN5LXRydW5rCis2MTU5NyA0NTk3MGIwNGNlODNlMmQ1MzQzNzQyOGM2ZWIwNDJhYjY0MjM5OTk0IGxlZ2FjeS10cnVuaworNjE2MDAgOTYzZDY3ZGYzNzIzN2U1ZGM4YTExNDZmNWJiY2ViNmNiY2M3ZmM2NyBweTNrCis2MTYwMiBhOTg1NWRiNDBmZmIzM2Y0YWIwYjRjOTM4NjM4ZGRkYjVmYmNlMmU1IGxlZ2FjeS10cnVuaworNjE2MDMgMWRhMjQ5OTY4M2I0M2MzZTBkMTc2ZTk2MTAyYmE3Yjc4ZTc3Nzg1MyBweTNrCis2MTYwNCAzYjMyM2ZmOTMwNGM1ZjA1NzYyMmJmZmNjYWJjOWU0ZWI2OWI4ZmVmIHB5M2sKKzYxNjA1IDQyMmI0OWRmZDE1YjUzYzNlNzU1MGE1YmM1ZTM1ZTRiYjU0ZTQ1YjYgbGVnYWN5LXRydW5rCis2MTYwNiBlMGM5YjllZjA0NjYwZjlmYjgwZWMwNDU2OGIxYzQzZDNmMjJkNWM0IGxlZ2FjeS10cnVuaworNjE2MDcgNDI4NDcxOGZiNjMxZmFkZDMyMjI2ZjQ1OWZjZTk0OTY0ZjA5ZjlkNCBweTNrCis2MTYxMyBhZDFkNjA0YmM4ZWQzNTMwMTRiYjJlNGQ0MzJiOGQ5YzU0YTcwNWIyIGxlZ2FjeS10cnVuaworNjE2MTQgYWRiYzkzNGJmMWZkNTEwMjc1NTczMjg0MGI3OGM3NjU3NzAwODUzNCBsZWdhY3ktdHJ1bmsKKzYxNjE1IDIxNDc3YjFiYTU4MTdjNWM4ZTJiOGE5ZGY3MzVkNzk4NjYyYjRiZDMgbGVnYWN5LXRydW5rCis2MTYxNiA1Y2MwNGEyMDQ3NjZmMmU3ZTU0MzBhMjI0NjQxMGI4YmI3OGJiNGFiIGxlZ2FjeS10cnVuaworNjE2MTggODU1YzQyOTBkZmQ3YWEzNGRiMDllM2ZmZGJiZGM3ODJlMWQ0ZjAzNSBsZWdhY3ktdHJ1bmsKKzYxNjIxIDc0YWI4YmQ5NmM1ZGViM2EyZTBmMDRiMmU1ZWM0M2ZmZWRhN2YyNjkgbGVnYWN5LXRydW5rCis2MTYyMiBiMGI2MDhlNTc5Y2Q1YWUzNjBkNzBhMWNlYTUyNDNhNjA3MjYwMTA0IGxlZ2FjeS10cnVuaworNjE2MjMgZWJjMTMwYTRhMjczODI4ZjY2YWQ2ZmJjNzM2NzA0YmYxYjY0MTU3YSBsZWdhY3ktdHJ1bmsKKzYxNjI0IDkzZjk3MDdiNjY0Y2U0YWNkOTQ2OWIxODBiNmI1MGM3NjM4NmNiNjIgcHkzaworNjE2MjUgMzMwZjU3NGM1OGY3YzNkYmVkNWVkNGQwMzdjYjZmNTNhNmIwYTM5NCBsZWdhY3ktdHJ1bmsKKzYxNjI3IDg4MTdhOGUxMmE1NTllY2E4NzMyMGNmZjExMjAxZmRjMDZlNGYwY2UgbGVnYWN5LXRydW5rCis2MTYzMSAzYmYxOWMzMWM5NTZmMTQxMjRkM2FjZjViZjJkYzFhYmRmY2IyYjZmIGxlZ2FjeS10cnVuaworNjE2MzIgZGM1YmUwYjNjM2JlN2RhNDI2NDZkNDYzMmU2OTgwMGQ3ZjhhOTFhNyBsZWdhY3ktdHJ1bmsKKzYxNjMzIGU2NjVhMGIxNmRhMGU4N2IwYzNhMDM2YjNiNTQ5MjZiODM0YzBlOWYgbGVnYWN5LXRydW5rCis2MTYzNCAyNDI3NTU1MmM5NzMxNzE0MjE5ZTEzNWVmMmVmODU5NDUyZGE2NDcyIGxlZ2FjeS10cnVuaworNjE2MzkgNDQwYjA4YTMyZTBiM2Q1MDRmNTMyNWVjYmJlMGJlNTIyYjBiZGUyYyBsZWdhY3ktdHJ1bmsKKzYxNjQzIDE2NTdmMGFjY2E3ODIwMjEwNWQ3NzM2MDIwNzg1M2RmNWNhMDVmMjAgcHkzaworNjE2NDQgYWUzYWQwNjU3N2M3ZDdhNWQwZmRjZTY5YzgyNzRmYTZjN2Q1NmIxNyBsZWdhY3ktdHJ1bmsKKzYxNjQ2IDJkYTBiZjJlMmY1Y2MxZjNhYzQ2OTg3NGE2Y2RjYzk3ZjM3MjZlMDMgbGVnYWN5LXRydW5rCis2MTY0NyA2NWYzNjEwNGZjYWQ3MmNhODkyMDRlNmVjNDMyMTZiYjhiMWM1NTRmIGxlZ2FjeS10cnVuaworNjE2NDggMzk4OWZjNjFlNzg5Yzg5NDUzNjhkMzYwYWY1ZWY4MjFmYTgwNTZiNCBweTNrCis2MTY0OSAzYWE1ZWIxODI5MTMxNTAxOTA3ZjMwMDVkYmI2YzgxYzFhYzE4MWEwIGxlZ2FjeS10cnVuaworNjE2NTAgMjkzYzYxMDZmYmUzNDk3OTgyYzk1NGRjNjBlMjUzZDE3MjIyMGE3NCBsZWdhY3ktdHJ1bmsKKzYxNjUxIDY1MDllZjhiZmU5YzM2M2RjN2ZiNTQ3NjY3ZTllZjY2NDNkNjE4YWYgbGVnYWN5LXRydW5rCis2MTY1MiBjYmFkMWY1Y2FiYjE1MTFkY2ExNjA0NWViN2FiNTA2NGUzNTNiZTNiIGxlZ2FjeS10cnVuaworNjE2NTMgZTg2MjgyMTk5NDY1MTk3YjFhMTY0MTE3MWRjNGE5M2IwMGEwZjdkOCBweTNrCis2MTY1NSBmYzkzYmY1ZmVjZTFkNjQyYmI4YmRlNThjNTM5ZGU0ZjFjOGZjNjhlIHB5M2sKKzYxNjU2IDhiMGI4OTAyNWQ5ODI4YjNhODBiODIyMWExYjRkZGJkNzEzNjVjMGQgbGVnYWN5LXRydW5rCis2MTY1NyA1YmQyYmRiMzllOWNkZWY1ZjM0OTBkZTIyYWQwNDdiZWQ3OWE5OWM2IGxlZ2FjeS10cnVuaworNjE2NTggZDAwYTlmNzVkMjIzZDkzNGUwY2VjYjZjYWMyZjNmOWEzZWZlYjJiZiBsZWdhY3ktdHJ1bmsKKzYxNjU5IDBmZGIzNjE2Mzg0MWQ4YjY5NmE5OTAyYjBkYjhjMDZlOWMyOGJlMDkgcHkzaworNjE2NjAgZTAyMDNjNjU4Yjg2NTAxZDlmNTEyYWEwYTY4OWMyNWE1ZmRmOGZkYSBweTNrCis2MTY2MSA5YTQ3NzA5YTI4Yjc5ZjRiYzZjMTUzZDg4MjRkYjI5ZTBjMjMyNTM4IHB5M2sKKzYxNjYyIGZjMjEwNjczZWVmMDE1NDQ0Mjg2MmI4OTQ1NTc0OGMwNTc4M2ZlYzAgcHkzaworNjE2NjMgNjBkYjlhNjc4NTUxZDE3NTA3MGIxZGYxN2Y4YjVlOGZmNDdlMTBkMCBsZWdhY3ktdHJ1bmsKKzYxNjY1IDZhM2VmM2M5MDk1YzA1OGY3YWRiZmQwZjBiNGViYzkwMTNiMzg2NmUgbGVnYWN5LXRydW5rCis2MTY2NiAxMzJjZjNhNzkxMjYxZjRjMmI1MDJhYjhmODVmZDM5OTgyNjQ5NjY3IHB5M2sKKzYxNjY3IDA2ZTY0MWNiM2EyMDA3M2ZhOTA2YmIxMzgxY2JhYjc0MzQzZGI1ZTEgbGVnYWN5LXRydW5rCis2MTY2OCAzOWE0ZjQzOTNlZjE5ODI0MDQzNjk1MjRmYzgzZDRlNjRlN2Q1MzVmIHB5M2sKKzYxNjY5IDhlNWVjNjliNzZhNzRjNTBkYzEyYjUxMjE3NjM2MjMxZmZlOGYwNDIgcHkzaworNjE2NzAgMzZlMjk2ZTY2ZDIxNmFjOTdjZThhOGM3MzQ0YTVmMjM4YjhhNzYxNyBweTNrCis2MTY3MSAxMzM0OThiOTFmMWM0MDNjZjU2NjFmZDg5N2Y4NWQ5NWNmZjExZmRlIHB5M2sKKzYxNjcyIGM5NTY2M2M2ODRjYWY5YTFlNDIxZjk0NWFiYTU5NTk0NDEyYzMwOTEgbGVnYWN5LXRydW5rCis2MTY3NCBkOWVjMDY4YjA4ZjMwOTQ3ZTg5NWVjZmNhMzlmZWJmMjExMzA2ZTZmIGxlZ2FjeS10cnVuaworNjE2NzUgN2QyZTFhYzgzNGI4NWY3OGM5OTU3ZDU2MzBkYjA5NmI3OTNmZmQzNCByZWxlYXNlMjUtbWFpbnQKKzYxNjc2IGQxNGE5ZTVmODBhZThmYzIzNDlhNTM0MWZlZmY0MDJjYTA3NzRlZTMgbGVnYWN5LXRydW5rCis2MTY3NyAxYzdjMDhkMjlmZWVlNWQ3MWExNTg1MWZkZDllYjkxMWUyYWZlZmEzIGxlZ2FjeS10cnVuaworNjE2NzggZDUxMWUzMjE3NDNhOTExYTViOTEyNDliOTY0NTMxZmI1MGZiZTg1ZiBsZWdhY3ktdHJ1bmsKKzYxNjgwIDI5MTMxODkyNjExYzU1Y2Q0NGUxNWU4NzY4NmUyNDY3NzJhMTI3MDAgcHkzaworNjE2ODEgN2NhNTdlMjJhNTIwNzg5NDBkODhmMjcxNWRhODNmMWM5YWJlNTRiMCBsZWdhY3ktdHJ1bmsKKzYxNjgyIDkxYWM4MDQ5ZTcwOTM0MjJlYjgxYWI3MTUxODk4YjEwZDZjNmViYjkgcHkzaworNjE2ODMgZTgzNjBiNWQ1YTEwNzQ4NDQ0YTE2Mjc1Njk5MmFhZGNmYTM5NGE4YyBsZWdhY3ktdHJ1bmsKKzYxNjg0IDY5NjIyNWI1ZDU1NTU5YWIxZDc2OTI3NjU4MDcxMTZjYjZiODA0YjUgbGVnYWN5LXRydW5rCis2MTY4NSBmM2Q4MzhkYWI0MGVkYmQ1OTY5YTEwZWUwZmZhODYwZjRlNTNiNGI1IHB5M2sKKzYxNjg2IDI4NzMzYWRhNGQwMzFkZTE4OTg3NzVlZmU4NzdiMGQzZmVjZTA2YmMgcHkzaworNjE2ODcgN2M2NjY3YmI4Zjg1MzQ3NGU1ZTc5MDE5MDU2ZDc3ODU5ZWNjZGU0YyBsZWdhY3ktdHJ1bmsKKzYxNjg4IGFhOWRhNGEzYzk3Y2UwNTZkN2I3M2M4NDdmMTc2ZGNjNzY5YmI4YWQgbGVnYWN5LXRydW5rCis2MTY5NiBjNDVhNDU2NjkwMTdiOTI1MGVmYzZmMzVhZGI1MTM2NDUxOTBjODgyIGxlZ2FjeS10cnVuaworNjE3MDAgOGY4YjAzYzJiYmZmMDE3MmM5NjU5Y2JjYWY4NmNkNTRiNmRhMjg5NiBsZWdhY3ktdHJ1bmsKKzYxNzA0IDk0NGQ4N2E5YmJkMGFjZGQ0ZDFhZjgyM2QyN2M2ZjY0Y2U3YWJmYjEgbGVnYWN5LXRydW5rCis2MTcwNSA4ZWYwNWFjZWVmMmI0YTllNzQ3MDZlYTE2ZTg0MjUzZTQwMDI4N2I2IGxlZ2FjeS10cnVuaworNjE3MDcgNzA0YTg2NGVjYjAxNGM1MDc2OWI1YTY3NzM4N2JhNDdmOWQ2ZGNiNSBsZWdhY3ktdHJ1bmsKKzYxNzA4IGFkYjVjYWIzMDFhNmVlNTVmYWU4NWZhYzk0MWE4YTA5YmFmMDRkYzUgbGVnYWN5LXRydW5rCis2MTcwOSA1NDRhNDZkZjAyMjJkYzkyNjk4NTNiOTMwZTA1NDVjMTg5NWMyY2E4IGxlZ2FjeS10cnVuaworNjE3MTAgZjBlNGQ5YjQ1ZTdmMzYzYTJhYTMyOWNkYjhkMWJiYWM4MmFiMjNlYyBweTNrCis2MTcxMSA3ZjAzNTU5MmQ2ZTFiZjUwYjQ1ZmRjMjdlMTJmODhmNGExYTAzN2Q5IGxlZ2FjeS10cnVuaworNjE3MTIgODVmYmQxZDI2NWEyOTUxMzliNDAzYzFlNjlmMzM5NWU2Mjg0NWM5NiBsZWdhY3ktdHJ1bmsKKzYxNzEzIDQ0MTUyN2JmYzc5Y2M3M2QwNWQxYzRiOTU3N2Y0MDNjYmVlNTRjYmEgcmVsZWFzZTI1LW1haW50Cis2MTcxNCA5OTM1NWJhYTc0OGRjZDRlNjE2M2I2MWFlNGQxNTdiMGQ2OTJhZjA1IGxlZ2FjeS10cnVuaworNjE3MTUgMjI3NTYxMmMxNmE5ZmMxNzM4ZDFjMGU0NGI4MTc4Yzg0MjM5MDJiMyBsZWdhY3ktdHJ1bmsKKzYxNzE2IGJmMDdiYWQxZDcyZjYzZmM4OTA1M2UwODhmMDczOGM3YWNkNDMyMGIgbGVnYWN5LXRydW5rCis2MTcxNyA3MmRjMTZlODAxNzkwZTIzZjE0YjAyMDU0NmQyZmQ2MjcxZDNkMGNlIHB5M2sKKzYxNzE4IGQ2NzkzZWNlMzI1NDRkZTY4MzIxNjIzYWEyZTZhOTMxYTEzOGFjNDMgbGVnYWN5LXRydW5rCis2MTcxOSBhMDI1MzcxODQ5OWUzYjZhYTVhZDk0NDZhZjhmZWI1YTdmNTRjYmMwIGxlZ2FjeS10cnVuaworNjE3MjAgMWY4YmE1ZThhMmZhOTNiZGJlNzA0NzhmN2EwNmVlMTFlODIwMjU0YiBsZWdhY3ktdHJ1bmsKKzYxNzIxIDJlM2Y4NmU3M2ZhMjc2MWU0ZjU2NzdhNzM0YjY5ZjcxZjc5NzhiMmMgbGVnYWN5LXRydW5rCis2MTcyMiA3MjhkYzEzMzI3YjJmYjk0Y2NiOTFjM2U2ODFiYjJhODMyYTE3ODA3IGxlZ2FjeS10cnVuaworNjE3MjQgZTQ3YzNjN2JiZGRjN2I3YmJmNzY3NDRmNjkwMGZkYWQ5ZTRhNDZiZCBsZWdhY3ktdHJ1bmsKKzYxNzI1IGE3Mzc2ZDE5MmE2ZDc4YWIyMDQ2MGVlZTE0YTM5OGViNTM4ZjI3NTggbGVnYWN5LXRydW5rCis2MTcyNiA3YWE1MmViOTA3NGY5ZDJhOTkzN2QzZGQ3MjA3NGY5MjdhYzNkN2E0IHB5M2sKKzYxNzI3IDhjMWZmOGU1NDczOTcxMWE1ZWVhYWY4MjIyYzc2ZTdkZGZkNWFjZGYgcHkzaworNjE3MjggMzc2YjVjYjhhMDE0MzU5OWZiYzM2MmU4ZTNkYzVkNDQ0YTZmOTAxNCBweTNrCis2MTcyOSA3ZjZiY2E3OGMzNjQ4NTc4OTQ1YjA2ODEzMzg3NDY3MmEzNmM3M2ZmIHB5M2sKKzYxNzMxIGNkZWJhMjBjY2Q2YTAxZDRlZjNkNmJlYTljOWE0NjlhNzA5OTI3YWUgbGVnYWN5LXRydW5rCis2MTczMiA3MjY0YzA1MWEzOWNiYjQ0MGYyNTgwZDRkODQwMzVhY2ZlMjViODRlIGxlZ2FjeS10cnVuaworNjE3MzMgNjFmNWM2NjNiNDlkOGJhZGU0N2ZiNDA2MDhmYzIwNzNkNTIwNDJlMyBsZWdhY3ktdHJ1bmsKKzYxNzM0IGE5OWNhMWU1NzVlZDk3NTgxYjQ3NWQ1MWI0ZDgyZDQ5ZGRjM2QwNmYgbGVnYWN5LXRydW5rCis2MTczNSAyNDA4MzMwNWQxYzcwNDY2MTVhOWM1YjVmYmFiMDBmOTE4NzlmYjlkIGxlZ2FjeS10cnVuaworNjE3MzcgMTFmYmM4YWZlMzA1ZmUzMzllYmFiM2NjMjRhNTIzMDJiZWY5NTVjYyBsZWdhY3ktdHJ1bmsKKzYxNzM5IDA0YzIxNDg1NjRlNDU5Y2ZkOWI0ODQzYzNmMzk1MTRlZjRkZjFkNzAgbGVnYWN5LXRydW5rCis2MTc0MSBlZWViNmI5NTJkMmY4OWVhZTQ2YmQzZjI2N2MxYWJkODIzYzJlNDlkIGxlZ2FjeS10cnVuaworNjE3NDMgZjk3Nzg1YzdkZTliNjIwMWUwY2IyZjk4ZjQ0MTAyMzNkNWVmNjBjZSBsZWdhY3ktdHJ1bmsKKzYxNzQ0IDIyNjdjYTE0ZDU0YmFhNjk0MGZiM2M5NjExODk1MDJjYTE0MzRkY2IgbGVnYWN5LXRydW5rCis2MTc0NyBiNDk3NTRlYTk0ZGI5MjZkMTU3ZTAwYTRlYzJjZjBjNDIzZTg0M2QxIHB5M2sKKzYxNzQ4IGIwYTQzYmQ1YzI4MTgyYmFmYzI2YTA3NTUzZTIzMmNlYTU0MjIwMDUgdHJ1bmstYnl0ZWFycmF5Cis2MTc0OSA3MDgzNGMwZTQ5MWJkOGJmMTRkOGI0YmNjYTE4NDE4ZDgxZDMxYmE1IHRydW5rLWJ5dGVhcnJheQorNjE3NTAgNDM1NjQzYjc4MGM3MTlhNzAyMWVjOGQ0Zjk5YzdjNjExNTc0YjEyZiB0cnVuay1ieXRlYXJyYXkKKzYxNzUyIGM2MzJmOWUxZWE1ZGJkNGE3ZjkxODYxMDk3NTUzNjcwNmM4ZjU0NjkgdHJ1bmstYnl0ZWFycmF5Cis2MTc1MyBkNGJhNWJkMTE1ODBhODc3OTBiNjEyZmI5YzYzNGVjMWI5NWE2ODM1IGxlZ2FjeS10cnVuaworNjE3NTQgZGZhMGEwMTFhMjQzNWE2MzcxNDRjOTVmZWQ5NjhiMDJmYThkY2Y0YiB0cnVuay1ieXRlYXJyYXkKKzYxNzU2IDY2NjcwMDg4OTRlMGRiMjZlMWNlOTI4MWU2M2FlMjRmMmEzZDRlYWQgdHJ1bmstYnl0ZWFycmF5Cis2MTc2MCAyNDhmOTI3YmE1N2ViMjYzYzBkZDZjOGM0OTkxZDM0ODczOGMyODIyIHRydW5rLWJ5dGVhcnJheQorNjE3NjEgNzUxZGU2MTZlMDgwMTdmYzBiMThkMWE2Y2Q1NzI2MzVkY2YzMmFkMCBsZWdhY3ktdHJ1bmsKKzYxNzYzIDAxMjJiNDZjZTRlMGJkZDRmNWE4NDRmMzNiNDUyMGY2NjQxZDg0MGEgdHJ1bmstYnl0ZWFycmF5Cis2MTc2NSBmMmFiNTBkMGZhOTA4ZWJlNzlhMTJlZGE4ZGRiMWVmMjg5MmYxNGUzIGxlZ2FjeS10cnVuaworNjE3NjYgMmU1YWIzNWNjYWYxYWRkYjIzY2E3NTkwM2E5ODA0MDM0OWQ2ZDZhOSBsZWdhY3ktdHJ1bmsKKzYxNzY3IGQ2ZjBlM2U1NTZhNDUwOWUzN2FkYjA3ZWUyYTI5YWFkMTE4NWUzZjQgbGVnYWN5LXRydW5rCis2MTc2OCBlNjdmNDIxYTIwYjBiMWJkYmVhNWQzYjYxZjZjNTUzY2ZiYzJiODE2IHRydW5rLWJ5dGVhcnJheQorNjE3NjkgMzFjZjM4YmRhYWMwY2IwM2U3NGM3ZTFiMWQ1ZWZkMmE2NjIzM2Y0NCBsZWdhY3ktdHJ1bmsKKzYxNzcwIDEwYjBkODFhMjE0NWRiZGUwYzRiMjRjODhjMzM4ZGMzNTUyZTUxYmIgcHkzaworNjE3NzEgOTU3Y2JhNzU1MzE1YjQ2NTE1MjQzMmMzNDdjMjdjYjk1ZmYwMWU3YiBweTNrCis2MTc3MiBmYjFkMzVjZmI4ZDJkZGE4MmZiNzQ5MmRhNzQ4OWFlNzIwYzU2NGFjIHRydW5rLWJ5dGVhcnJheQorNjE3NzMgZmE0MThjZGYzYmZlOWYwNDBlZWY5YmIyYmNkM2FkYWQ2Y2U4ZWNhOSBsZWdhY3ktdHJ1bmsKKzYxNzc0IDI5NmY5YmM0MmI5NjNlZmQxMzc4YjU3MmJlY2E4ZDljOGUwZGExODIgcHkzaworNjE3NzUgM2YwZTNmYjI3MmE2MjFlNmQzMmUxNTI3NGU4MjAxZTc0ZjU1MWY0MyB0cnVuay1ieXRlYXJyYXkKKzYxNzc2IGY0YzUwYTUxZDI0ZjBiZjMwMDEyNGFmZjhlMTFkYjNkMjYzZGNkMGEgbGVnYWN5LXRydW5rCis2MTc3NyA3MjJiZWY2ODM1Yjk0NGZmYTMwMTdmMTgwNTcwYzJmYjUyNGYzMjlhIGxlZ2FjeS10cnVuaworNjE3NzggYWY4ZmI1M2E1NGZkM2Q0NGEwODYyNzg0ZDViYWJkZGFkMzEyZmVmOSBsZWdhY3ktdHJ1bmsKKzYxNzc5IGE4ZjU0YjZhOGMxODU1ZDQ1ZjI0NWEwZTRlMDgyN2NhNmNmZGY0YjEgbGVnYWN5LXRydW5rCis2MTc4MCBjNjRjN2I3MjdjNjI1OGU0MzQwOTllZGRiOTNkYzAwZjgxNDEwYzBhIGxlZ2FjeS10cnVuaworNjE3ODEgN2RhNWI2ODk3MWE1YTlmMGZkNzhkZmQ0YTM3ODA2NDE3NzhlNGE3NCBsZWdhY3ktdHJ1bmsKKzYxNzgyIDk2MzRjMTdlOGZlNTYyMDUwOWMxZjFjNDgyNTRjOGNkZTA3MWQwMTYgbGVnYWN5LXRydW5rCis2MTc4MyBmMWVjYjNlOTc4ZGI0OWQ1N2E1YTgzMmFkNjUzZmQ2ZDQ0ZDU4NThkIGxlZ2FjeS10cnVuaworNjE3ODggNzU2M2Y0ZDJmMzZlYTQ2OGRiY2UzMjcyOGNlMjA2MjgzZDUxNTBmYyBsZWdhY3ktdHJ1bmsKKzYxNzkzIDg3MTBiYTdmYmEyYmVhN2Q0Y2ZiY2RhYzRkZTE4N2I3ZjA0MDU2NGQgbGVnYWN5LXRydW5rCis2MTc5NiBmMWU1MTc4NTk0N2Y1YjVmMTVkMzJkZjQzZTQwZDYyNzZlZmQ0Njc5IGxlZ2FjeS10cnVuaworNjE4MDUgNzI5NmNjYmI4NThjMmI4OWVmNTBmOTg1NzMyNjA5NjhlYTBlNGY5MSB0cnVuay1ieXRlYXJyYXkKKzYxODA3IDFkNWExMTYxOWVjYTg4Y2U3Nzk0NTkyNDczZDhlM2UxODA5ZTg3ZDEgbGVnYWN5LXRydW5rCis2MTgwOSBkZjVjOGI5N2NiMmExZmExZmY2NDVkZmVjNjUzM2EwMWI5ODMzMTgyIHRydW5rLWJ5dGVhcnJheQorNjE4MTAgYzFmYzZlMGE5NGI5YjdjMDQ4Y2Y0NDAzZTQ5NGVjYzM4OThmYzQxOCBsZWdhY3ktdHJ1bmsKKzYxODExIGFmMWIwZjk4ZGFkZjlkMWJkZDA2N2ZjZTQ1ZTJhNWY5OGJiNTUzMTggcHkzaworNjE4MTIgMzlkYzk4NWM2ZmM2MDY0NDA5NmY3ZTc4ZjY1NGVlM2JjNTg2MGQyMCB0cnVuay1ieXRlYXJyYXkKKzYxODEzIDQ2N2MxNmE1MDM5MmNjMGI1ZjRlMzc0MzYzMzdhZDZhMDQ4OWZmMDIgbGVnYWN5LXRydW5rCis2MTgxOCAwYTQ4NTU5M2FlMWNlNWQzOGViNzAxOWI1YzE4ODQxZWY2YjA4MDQzIHB5M2sKKzYxODE5IGQwYjkxYTkwYmFjYzk1M2Q3NDQ3NjZhNzAxNjdmMTIxYjVmZjhkYTggdHJ1bmstYnl0ZWFycmF5Cis2MTgyMCA1ZTkxNjg1ZDljMDY4NTJkZWI5NzdmYzBhZTFhZTM0NmE3NmMyMWRjIGxlZ2FjeS10cnVuaworNjE4MjEgZjViMWZhMTIxNGYwYTE1NGY4MDFiZTI1NTE1YzAxOWMxYjQ5OTVlNiBsZWdhY3ktdHJ1bmsKKzYxODIyIDdjYWFhYjA0YTRkOGRhMzI4MGYwOTVmZDAyNmM5YjQxZDZhMjcwMmQgbGVnYWN5LXRydW5rCis2MTgyMyA1Y2E5Mjg0MDJlNTQzNjVjZGRlM2IwYjNmNDE5ZDBhNTFhMjc4ZDI4IGxlZ2FjeS10cnVuaworNjE4MjUgYTM5Y2YzMzUzMTJlNzdjYjU5MmU2M2NmNTJkNDc3Zjk1Mzc2NWRjOCBsZWdhY3ktdHJ1bmsKKzYxODI2IGJmZWU4NzNlZGYzZmY2ZjdiMDZkYWE2NTgyYzAzNDE4Yzk5YzI0Y2UgcHkzaworNjE4MjcgNjgwNTFmOGM2NjE4ZWRiOGZlOWYwMTlmNjk0MGVjNTg1NjM5ZTAyNyBweTNrCis2MTgyOSA0YTZiMDkzYjMxOWJiZmM4ODA3MjEwMjZhOWJkZmI4ZWVjNjc3NzMzIHB5M2sKKzYxODMxIDM3MDhmMDkwNmVmNWU2ZjIzYzFhZDZhMGI2YWZmYzUyYzU5NTJmNjkgcHkzaworNjE4MzIgNWYwNGUwMmJiNDBjNWQ1NmRjOTRjYmFlMTAzMTRlY2M5ZmZiMjU5OSBweTNrCis2MTgzMyAyY2NlOTE3ZDc5OTYzZDhkNmJhYjBhM2U4ZjFkNWYyNTVmZjA4YmE2IHB5M2sKKzYxODM0IDhjMjYwNGZlNTg4NjhhNTVmOGNiMTIwZDM5M2FkMTYyYzM0NDFjMjQgbGVnYWN5LXRydW5rCis2MTgzNSBkZjkwNzc0ZjkyYjA2OWQ5MGQ3OWRlNDcwMmY0NDFmOWQ5YzVkZmIxIHB5M2sKKzYxODM2IDMwZWY1MTEyODEzMjY4NTM3M2UwMWI0OTgwYmRkZmZmOWVlNzk3YjEgcHkzaworNjE4MzcgODU5ZmY1YzdjNjBhOGMwYzZkNTE1NTJlZWJmZWM3MjVhYzFhNjk5MCBweTNrCis2MTg0MSAyNTQzMWZmNmNlNjlkZjY1Y2M4OWE2ODYwNWIyYzdjMTA1NjE1N2ZkIGxlZ2FjeS10cnVuaworNjE4NDIgMzhkZTBkMjAyMzM4Njc4MTk4YjZlZWY4Njg0NjgxNTAyMGI0Mzc2OCBsZWdhY3ktdHJ1bmsKKzYxODQ2IDJkMGUwODkxN2EyZTM2MGY5NTllMTRlMDBiYjhmNjkxNTRmN2M4MjkgbGVnYWN5LXRydW5rCis2MTg0NyA0NjFmZjQzZTc0ZDAyMmFiOTc5MzBmMTI4NzBjZjIwZmI5NTY3YmVjIGxlZ2FjeS10cnVuaworNjE4NDggNDFlZTlhNDAwYWQxMTQwMjY2NDBjMDc1MGI1YjQ0ODJiYjBlOGUwYiBweTNrCis2MTg0OSAwMmFlMzExMjU2YTc3YTFhOTRiNDVkMDc1OGRiMGE1NDU0ZjM3ZDA3IGxlZ2FjeS10cnVuaworNjE4NTAgYjJmM2U0NmU3OGEyOWE5NDMxN2M2YzRlM2Q1ZjFjYTJiNjVjMjkwNyBweTNrCis2MTg1MSBiZmNkYTU1MjQ5MmU2NWY1NjdiNmQyYzQyNWI3ZWMyMWI4ZTYxY2IwIGxlZ2FjeS10cnVuaworNjE4NTIgYzg2ZTlkZDE2YjhkMTRkNWZiOWMyYTc3ZDA0NDdhMGIzYTY5NDBlNyBsZWdhY3ktdHJ1bmsKKzYxODUzIGM5MjMwMDkzMDc3MmQ2NjY5ZmNmOTc4YmI1MmJjMjUzOWVjOGNhMWIgbGVnYWN5LXRydW5rCis2MTg1NCA0MjI4NWQ2Mzc1NWFjMzhmMGM0MGI2MTc3OWE1MTExZjk1OTI2YzU4IHJlbGVhc2UyNS1tYWludAorNjE4NjMgZjNlNjQ4ZmVlNGMxOWFkNWJlOGQ2NDEzM2Y4OTI2ZDBkNzFlN2FjNyBsZWdhY3ktdHJ1bmsKKzYxODY0IDA5YWRmZjNkNjY5MTU0Y2Y1MWM4NDM5Zjg0YWI0Y2MxOTI1NjkzNzEgbGVnYWN5LXRydW5rCis2MTg2NyBjZTQ1ZmQzYTdhM2ZiZTYyZGJjYmFhOThjOTY5OWY0ODE3NDFkNjY0IGxlZ2FjeS10cnVuaworNjE4NjggZGU4M2VkY2ZlYjNkMzA5MDVjZDgwYjE2YmZmMjIwM2MwMWY1MDcyMyBweTNrCis2MTg2OSBkZTU0NDk1YTQxNGE3YjkzNzRjODM3MGY2NjM2MjA5MDlhYjU3MTFiIGxlZ2FjeS10cnVuaworNjE4NzAgMmJmZjVhNzI5MDM2OWRiNTVhOGUxNzU3NjQyMzg4YWFlNzJhZWNhYSBsZWdhY3ktdHJ1bmsKKzYxODcxIDk1OGNmMGMyN2RhOTM5MzY3MWVhMGU3MDJiNDIyMzUzZTUyY2Y4YzUgbGVnYWN5LXRydW5rCis2MTg3MiAzOGEwYTczN2NjZDQyNTMyODZiMjlkY2QxZTc2MjQ2N2NkMGM3YmQ4IHB5M2sKKzYxODczIDE0N2YzNWY2ZTZlNTg2YWYzOTcxNmNiNThmMjczZGViOWQ5NzcxMzMgcHkzaworNjE4NzQgNGY5Y2E4MjdhN2Q4N2U5N2NkZTQ5ZmM4YTdkMWU3ZjE5OGNlOTJhOCBsZWdhY3ktdHJ1bmsKKzYxODc1IDBkZDQ0MWNhOGViMGMzOWM3ZTNjZjc1NGU2MWYxNjA4YTE2NjNhNGEgbGVnYWN5LXRydW5rCis2MTg3NiBhYmJkODFmMmNjNjhlNmIxNzk3ZDMwZGU0Mjc4MTU4NDUxMmZjMGFlIHB5M2sKKzYxODc3IDA0MWU4ZDdjYzY4NDA5MzBjZGViNDA4YjI1MTdhMWFiNjEyZDM3ZDEgcHkzaworNjE4NzggOWIzZjBmYTVkOGNhMDc2MDI0MGQwMmU1MzFiZjM3Y2YxMzg2ODRhYyBsZWdhY3ktdHJ1bmsKKzYxODc5IDg0YmI3NzAxZWZiYWQ4MjJhMDQyNTgyNDBkZjhkOGVhNzM2OGRjMjQgbGVnYWN5LXRydW5rCis2MTg4MCAyYTFmNDgwMWQ0OTRmY2E0NWQwMDc1OTJlN2UyNzFhZDIxNjk4ZmVmIGxlZ2FjeS10cnVuaworNjE4ODEgYWU2NTlmZjA1MjhiYzE3YjYxZjFhZGFiMTQwYjI5ZjUxNWIzN2MwZCBsZWdhY3ktdHJ1bmsKKzYxODgyIDQ3YzJmZmMzOGQxZDEwM2NlYjRlNWQ3ODI3MDUzZDQyZGE0ZWZiZTQgbGVnYWN5LXRydW5rCis2MTg4MyAxYTJjOTY0NWY3MWRmM2MwNmI3ZmNlODEzOWY3MzMzOGRjMzk1N2UzIHB5M2sKKzYxODg5IDJhODY2ZWE2NjUwOWI2Mzc4ZDNhNmU4MWFlY2VlMmFhOTcyOTAzN2EgbGVnYWN5LXRydW5rCis2MTg5MSBhN2NiZmNiYWE2YjA2MTU2N2E1OTYxOGI5NzY5ZTFjMGQ0MTk2MzUyIHB5M2sKKzYxODkyIDIyYmQwMjI5M2VmYTVkNWQ0MDUxMWIzMWYyMjEyZDFlZWU2OGVjZWEgbGVnYWN5LXRydW5rCis2MTg5MyAwYjYzOTk5MTU4YjA3MjY0YzhlZDdlOTkyYmEyNzM4ZGFmMWU1ZDgzIHJlbGVhc2UyNS1tYWludAorNjE4OTQgNmJlYTJmMTM1MWIxZjVmM2E0ZDdkNWM2Mzk2MjkzMmI1MTBiYWI0NCBweTNrCis2MTg5NiAyNTZmOTM5NGQ5M2RiNWYzMjJmZGZmNDM5ODYyNGJjM2YyZmQ2NGYzIHB5M2sKKzYxOTAwIDcyY2M0MDBkODA1MzZkMWUxNTQ1NmVmNWUzNTc0MDM5NWU2NmQxNTMgbGVnYWN5LXRydW5rCis2MTkwNCBlODFjYWM3M2RhZjJmMDgxNDk5YmE4YzBlNzhiOTdkOWQ1NDA3OTM0IGxlZ2FjeS10cnVuaworNjE5MDUgN2QzYTZkYzQ3MWNkOTEyMzdmZDAzZjFmY2JiYTJjYjNhMDQxNzJhNSBweTNrCis2MTkwNiAxODk5ZTA4ZmE0MjExNjRmNGNmMjUyZjJjZTBkNDU1ZTEzM2Y5Yzg4IHJlbGVhc2UyNS1tYWludAorNjE5MTMgNWRmNzJiOTg4N2ZhNjg5ZTk5NDlkMzQyNjE0NzM2OTY5YmQ5Mzg3YyBsZWdhY3ktdHJ1bmsKKzYxOTE0IDQ2Zjg5ZjQ4MGJkNGM1MGNkMjAxM2Q3ZDAwZjFjYWQ5ZjI4NTQwMGEgcHkzaworNjE5MTUgNjIyZDNiMTE2OGFhMjk0ZDI1ODg5MjhiOWI4ZTAyYzAwOWVhMmU0NiBsZWdhY3ktdHJ1bmsKKzYxOTE2IGY5NGFjOGY5Y2Y5NmQ0ZWZjNDQwMWRjMGFlNWY2ZDJjZWM1MzllMDEgbGVnYWN5LXRydW5rCis2MTkxNyA2NzkwOTUwOGUwNDE1YTQwZTA1ODBhMGU1OGE0YzZiMWRmNjIyYjhmIHRydW5rLWJ5dGVhcnJheQorNjE5MTggYjUxZTRiNTBlZDMwZWMyOGQ1ZmE2OWE4MTY3ZmM5MTdjMzY1ZWZhMyBsZWdhY3ktdHJ1bmsKKzYxOTE5IDE1MTE4NTY2Zjk4NzI3YmMyYWFkMDFkOGI0NjRmMTI0ODJhYjY2NzggbGVnYWN5LXRydW5rCis2MTkyMCAxNWRhMDk4YjNjZDg1YzE0N2I3Nzc4ODJmYmM3YjA4ZDBiMzViNjMxIHRydW5rLWJ5dGVhcnJheQorNjE5MjEgNGVhNmYxMmJiZThjNjliZTY3YzRiMzlhYmJhY2ZiMjY3YjM1M2Q2OSBweTNrCis2MTkyMiA1NGI5MGQ3ZWRkYjc4MWEwYTVjYThkZmNjNzFjOGRlNDM1OWY1ODBkIGxlZ2FjeS10cnVuaworNjE5MjMgMjk2YzIxOGYzNWNmNmMzNzJhZDZmZTEzYjY3NTk1NWFlMTI3ZGY4YSBsZWdhY3ktdHJ1bmsKKzYxOTI0IDhmNmNjZDA3NWEyNGQ4MzY2OGE0ZDM3NGU4NmI4ZGUxNWI3M2MwMTEgbGVnYWN5LXRydW5rCis2MTkyNSA3ZGE4OTE4MTAyZmVlMTU0YzE4ZTBlY2I1MGRhNWJmZmE0MzVmMTUxIGxlZ2FjeS10cnVuaworNjE5MjYgY2RkYjI5N2MyNDY1M2I2ODZjYjQzMTQ4NmRjNzMxODRmYWI5NGMyYyBsZWdhY3ktdHJ1bmsKKzYxOTI3IDg1YWNjNDA4MTFiM2Q2NDRjZjUyZTI1NjA5MzE5MjlkMzliZjVkZTUgcHkzaworNjE5MjggMWFiNWNjMjUzNDFhZDE4MTdjOGZmYWFlMjlkZjRhMzhkYjMzZjNhMSBsZWdhY3ktdHJ1bmsKKzYxOTI5IDFkZDAwMDE2YTY5Y2VkOGViNzNkMzY2ZjhlYTVkYmRjMDMwYTQwMTQgbGVnYWN5LXRydW5rCis2MTkzMCBkNTc4NGZjMTllN2FjNzA2OWIyODdmMjllOGU3MTlmZDMzY2EwOTEyIHRydW5rLWJ5dGVhcnJheQorNjE5MzEgNmVhNDFkNTIzOWUwN2U2ZWY2NTU5ZTE4ZmI5ODI2MzU4NGE4Njk4ZiBsZWdhY3ktdHJ1bmsKKzYxOTMzIDFjN2ZhNGFjZWNiM2FkMjU2N2EwZDc3NDQ0MDhjNmY0M2VkYjFkOWUgdHJ1bmstYnl0ZWFycmF5Cis2MTkzNCA5ZmNjY2Q1OGQ2NWRiZjkzNjc3Mjc4MjA3MTFiMTdhYzJiMzFkMGQ3IHRydW5rLWJ5dGVhcnJheQorNjE5MzUgMjBmYzQxYzE3Y2M3YzYwN2Y5ZTlmMzc0ZjE4NjIxYWFjMDI1MTdjYyBsZWdhY3ktdHJ1bmsKKzYxOTM2IDUzNDFiMzBiMTgxMjViZjE5MjVjMGQ0NGYwYzQ3MjM4OThiNTEyOGEgbGVnYWN5LXRydW5rCis2MTkzNyBjYzBkMTk3N2Y4MjBjNzk4MjBlNmQ2NDg2ZTc4NGIxY2M0NzhhNWUxIGxlZ2FjeS10cnVuaworNjE5MzggMmU3ZmYzOGUwYTE4M2VhODhjNGUyYTVjOTg1ZTIxOGQzY2E4MjE1YiBsZWdhY3ktdHJ1bmsKKzYxOTQwIGNjZWVhOThjY2YzNWY3NzRlODJlNDU5YTQzMDQ5NjFmYjRhMTRmMzAgbGVnYWN5LXRydW5rCis2MTk0MSAyYmNiZDM4ODJlZWVkNmNmNzA4NWFhMzNhZDhlMjMyZDQ2NTU2NzM4IHB5M2sKKzYxOTQyIDRkMTk4OTIwNDA2MjBhNDc0MThhZjA3YTliNGNmNTc5ZDdhZGUxNTYgcHkzaworNjE5NDMgOGQ2ZmRlMTZlNDkzY2IyNGM3NWQxNTJkMzgyZDAxMzBmNGI0ZDgxNiBsZWdhY3ktdHJ1bmsKKzYxOTQ0IDY0YmQ5NmZmOTRmMTQ5NDE4MzEzNGIyNjhkNTZlMjc5Y2JiZjdiNTIgcHkzaworNjE5NDggMWI2YzBmZjEzNGZhNGExZDhhN2E4ZjNjMDA3YTZmOTg0OTc0NTc5NiBweTNrCis2MTk1MSA5OTVjOTk2MGY3ZmYzODM0YTkxZDZjM2ZmMTc1NGU5MGI4N2M0YzM4IHB5M2sKKzYxOTUyIGRjZTlkMmQ5MmM4ODE0NzJhMDdjMjhkYjA1Y2MxZWZjMzY4Y2VmZDUgbGVnYWN5LXRydW5rCis2MTk1MyBjNzhkMzU4NmM0NzRmNjY0MDY5NTM5N2JjMmQ3Y2E1Y2Y4ODI2OGVlIGxlZ2FjeS10cnVuaworNjE5NTQgZGFhNmFjZWFiZGZjNTg0OTBmOGE4ZGEyMjZlOTQxOTQyNzAzZTYwZCBsZWdhY3ktdHJ1bmsKKzYxOTU1IDc4NTA0ZDYwNGI0NDhjOGI1Y2Q4ZGU1MWEyODA2ZjE1ZThlODRhNzYgcHkzaworNjE5NTYgZDAwZGVkOGIyNjc3MWQ0OGMwODk4M2ZiMjY5NGU3NTZjMzE1NGRmNiBsZWdhY3ktdHJ1bmsKKzYxOTU3IGE5MzVjNTBjYjUxYWE0NWVlYjFlNDI3YjM0ODA1MWFlZTRkMjI3ZTEgbGVnYWN5LXRydW5rCis2MTk1OCAyNDg2NzY5ODhjNTQ4ZmNjY2Y5YjA1NTlmMmFiNzYyNDZjYzQxNDM3IGxlZ2FjeS10cnVuaworNjE5NTkgMzhmZTY0ZTNiMTMxNzNhZmM5MzM5ZWFlNDNiZGNmMzc4NzRhZjY5OCBsZWdhY3ktdHJ1bmsKKzYxOTYwIDM2ZDgyOGQyN2MzNjQwOTExZTg2Y2Q2YTZmYWUyMDI4NDkyNWY3ODcgcHkzaworNjE5NjEgYjA2YTE1ZWZkYzZkMWY0MmNmODY5MmE4OGVmOTg3YjU1MDgxZmRlZiBweTNrCis2MTk2MiBhZTI4MzE1NDI1NTgxNjdlODQzZGE3MjY3ZjhhMjY4NDdhNTU3NWVkIHB5M2staW1wb3J0bGliCis2MTk2MyA1YzI3MWVmNmNiMzI2MzgzYWY3MDRjNTBmZDk0ZDhlOTM2MjI0YWZkIHB5M2staW1wb3J0bGliCis2MTk2NCBiNDVlN2I1N2EwZDgyYWFkNThkZTc5Y2I4MTVmYTk3MjQ2Yjk3OGZiIGxlZ2FjeS10cnVuaworNjE5NjUgZWY0MGVjMzJjNWU0ZDc3MzliMmEyNTA1ZDcwMjRkNTI4YmIwYzIxZSBsZWdhY3ktdHJ1bmsKKzYxOTY2IDg0NzkzYmY1YTRiZmMwZDI2MDljYzhhMGYyM2MxNjU5ZmMzZTVjMmEgbGVnYWN5LXRydW5rCis2MTk2NyA2MTkyZDViMTJiNmFlMTdiNTNhMmRhZjhjNmEzOWE2NzY5OWM1MWI2IGxlZ2FjeS10cnVuaworNjE5NjggZDc0MGM3MWYwMmZmMjdhYjlkOTUxOGQ4MzMyYzY4MGViY2UxNzEzNyBsZWdhY3ktdHJ1bmsKKzYxOTY5IDUwNzhiN2VlMTZkYzE3MWQ2OTdiYTMxNTM5OGE0ZDA1YzFlYzkyYWQgbGVnYWN5LXRydW5rCis2MTk3MCBiMzUwOTYwYWRlNmQ2Njk2NzczYjcxZmUwMzk2YjZmNjM3Nzc1YjVjIGxlZ2FjeS10cnVuaworNjE5NzEgMzEzZjM4MWZjMGE3MTcwY2MxZTgxYTk3NGE3N2FjMDZkNDUxY2U3ZCBsZWdhY3ktdHJ1bmsKKzYxOTcyIDZmMTMxZDJjMzYyODIwOWJlZmZkNTg5NWNkZDUyMzMxNTM5Y2RmYWEgbGVnYWN5LXRydW5rCis2MTk3MyBlYWM0MWY5MDI5NmM2OWM2ZDA3ZDI5ZjFmZWI0NTNhNGMwZTQwMGQxIGxlZ2FjeS10cnVuaworNjE5NzQgNjIxMzhhMGY0MjMyNmJiMDM0MGJlZTcwZmQ0N2IxMTE0ZjJiMzE5NCBsZWdhY3ktdHJ1bmsKKzYxOTc1IGEwZWEzYTBlZmM3MTA5MzRhZDY2ZTM5MDcyMTEyMzBmZjIyN2Q2YTEgbGVnYWN5LXRydW5rCis2MTk3NiBmMWFlYzdkZWMwNWNhMjFlYjgzNjc0MDZkZWM5OGViMDZjZmE2ZmQ4IGxlZ2FjeS10cnVuaworNjE5NzcgZTM5ZjY5YmY1NjEwZWFkMzk4NTE3NzQ0NTkwOWE3YmFmOTRmOGExZiBsZWdhY3ktdHJ1bmsKKzYxOTc4IDU2NDQyZGI2MGEzNjJiZmI2MmU5MDQ2M2Y2ZGEzMTQ5MzZiMmRkOWUgbGVnYWN5LXRydW5rCis2MTk3OSAzMWJhM2ZhMTU4NWIwOWRiMGM4MDI3N2RlMjE4MGVhY2MxNjA0OGQzIGxlZ2FjeS10cnVuaworNjE5ODAgY2I1NjMzMGQ3YWRjOGNkMTAzOWJlNDA0ZWVjZmY5MWI1NWJhMmE3ZSByZWxlYXNlMjUtbWFpbnQKKzYxOTgxIDZhNjZkMzI2N2QwY2Q0ZGNhNjNmNTYxZjE2YjY3MGE2NTkzOTY1NjIgbGVnYWN5LXRydW5rCis2MTk4MiBkYTU1OTdhNWMxOTU4MmE4ZTM3ZDU0MDU4ZjQxNzViNWZhZDE4NzJhIHB5M2sKKzYxOTg0IDEwYTM5YTY2MmU2OWNhNGRkZmZjMmJiZmViN2I1MDgwMWFkNDlmYjUgbGVnYWN5LXRydW5rCis2MTk4NSAxOGUxOWFjOThkMzRjMDE5MzMxMjlkYzdiYTc2MTRiNDE5NjIyMGMzIGxlZ2FjeS10cnVuaworNjE5ODYgNTlkMDgyNTkxZjU2ODA0MWEwYzYzZjRhNGU5YzJkYWY2ZTJjOTQyOCBsZWdhY3ktdHJ1bmsKKzYxOTg3IDdmZGZmMDJlNmY0NWVhOTg0NTFhN2I5YmIzMDcwMThlOGQ4NjM1N2EgbGVnYWN5LXRydW5rCis2MTk4OCA0YmY2MWZjY2M0ZTY4ODI0NzdmY2YzYTk0ZjU5NDVhYjk3NTI2YmY3IGxlZ2FjeS10cnVuaworNjE5ODkgNmU3YjI4MDhiOWE2OWU3N2E5YjVhZjFjOGVkYjJjMmFiMTdhMDM1YSBsZWdhY3ktdHJ1bmsKKzYxOTkwIDFkNTA3NDdlNTNkMzY4YjBkODFkYTkyMDZmMGZkMjM5Y2E2YzA4ODkgbGVnYWN5LXRydW5rCis2MTk5MSA3MjMyMjU5YTA1MjllNjk2MDI5ZjM0NTg0MmE0NmVjMWQxYjlmMDg3IHB5M2sKKzYxOTkyIDFlMTBiMzBmNzQ5OGMzZDcyZGI5ZGUzYTNjYmU3NjEwOTY2YjZkNmIgbGVnYWN5LXRydW5rCis2MTk5MyAzMTAzZWEzZGY0OWQ5NGM3ZTcxYzVhMDFiYTdkNmY2ZGJkZGM0OTAyIGxlZ2FjeS10cnVuaworNjE5OTcgYmJmY2JhZmVhZTg0M2QwMGE5NGIxYWQzYjMwYmZjOTQyODFiZjUxYyBsZWdhY3ktdHJ1bmsKKzYxOTk4IDY0ZjJlYjQxNzBmMTk2MGEyOTU2ODBmN2ZlMWU4MzU2YjYxYWJhNjAgbGVnYWN5LXRydW5rCis2MTk5OSA2OWQwMDkwNzQwODgzZWI4ZDNmMmI1ZWY5ODgyODYwZDZhZDJhMjRiIGxlZ2FjeS10cnVuaworNjIwMDAgZjlhNjI5ZjQxNjU2ZGE3MjBhNTRmZGZhZmIzMzRmMzliYWY0NGRkZiBsZWdhY3ktdHJ1bmsKKzYyMDAyIDIzNjVjNDdmZTY0ZGRjMzRlZjBjY2E2M2I1N2NhZmMwNDg1N2UwYjEgcHkzaworNjIwMDMgODQ4MTYwZDEwNzgwNjFjY2JiNWQ2N2NlNzJiMjI0NWUzNjllNTUyZCBweTNrCis2MjAwNCBjYTM4ZjdhNGI0Yzk1OTY4Yjg0YTI3NDFmNDFhZTMyYWMyNDAzYmM2IGxlZ2FjeS10cnVuaworNjIwMDUgYTQzYmUwNzQzMjRkMmYzZjFiZTk5ZjZlNGRkNTJjNmRmODBlMzE4NSBsZWdhY3ktdHJ1bmsKKzYyMDA2IDA5ZmE4Y2IyYmZlOGY0ZjJhYTc1MDAxNDMxYmU1MzY3YmJhNzA3ZWMgbGVnYWN5LXRydW5rCis2MjAwNyBhYWNmOGJlNTFmOTAzMDc4NzcwOWJjNWNkNDRhZWNhZGZlMzhhNzAzIGxlZ2FjeS10cnVuaworNjIwMTEgYTIxODU0ZTUxMGI0N2JjY2NlZGUyZGVmYTg3M2Q3YjAyNGYxMDJkOSBsZWdhY3ktdHJ1bmsKKzYyMDEyIDY1NGFkNzRhZGUxMzEyMDE2ZDdmNWJlZTU3NTQ2NGQ5ODUxYTNhYmEgbGVnYWN5LXRydW5rCis2MjAxMyAxYjViNmFiYjFmMmVkZTliMTQ1YWE4NDYyN2JhYmNmZjA5NDBjZjdjIGxlZ2FjeS10cnVuaworNjIwMTQgYzNlNjc0Y2JkNzJlOWQ5YWI0NTE3ZjkwNjc2YjAwZDY5Nzg4ZjUyNSBsZWdhY3ktdHJ1bmsKKzYyMDE1IDNiOTk0Zjc0YjEwMDQ4MjEzZWZkMjhiN2U1NWFhODA5OTQ1ZTZmNzIgbGVnYWN5LXRydW5rCis2MjAxNiBjNzdjYzIzZTM5NGYxNDQ4MTYxMmMwOTE0ZGY0ZThkMjUwNjA2NTM1IHJlbGVhc2UyNS1tYWludAorNjIwMTggOTczNGE0MmNmYTE1ZTAxNWVjZGRiOWYzZWQzYjJiOTE0ZjI1ZGJhMSBsZWdhY3ktdHJ1bmsKKzYyMDE5IGM0ZWQ2NjRhMWRhMWMwYjAxYjA5YTk2ZWYzZWVhNmUzNWMyMTE5NGMgbGVnYWN5LXRydW5rCis2MjAyMCAzZWEzZTUxZDFlZTNmYThmNjdiYzQ3M2IyNTQ4NTRkMjc4NmFlOWYyIGxlZ2FjeS10cnVuaworNjIwMjEgZWZlZjRlM2ZlZDE3ZGFjZjJmM2JjN2M0MDI3ODQ1ZGY3ZGQ1ZTQ1YiBsZWdhY3ktdHJ1bmsKKzYyMDIyIDg3MmFiZWQ3ZDA2OTRkODliNGZkNTQ5NzI5YTc2ZjNmZDhiMmE1MDggcHkzaworNjIwMjMgN2NlMWE4ZmQ4YTcxY2E5N2U2YzI2ZDhmY2VlZWVlMTFhMGFkMTE1ZiBsZWdhY3ktdHJ1bmsKKzYyMDI0IGUwNmUwOGU4ZmRjZWRlYzZiYWRhM2IxZGEyODc2YTlmOGNjMGEwNzIgcHkzaworNjIwMjUgZDFlMWI3NDBmNjg0Mzg5YzFlZWIyYTg2MzNiYTJhNTZkOTI2MDgyZiBsZWdhY3ktdHJ1bmsKKzYyMDI2IDBlYTVjMDU1YWI1NGY0NmI2ZjNkYzI5YzM5MjVmYjg0YzgyMmY5NWIgbGVnYWN5LXRydW5rCis2MjAyNyAwOTA1M2E3YzFjZGZkODE4ZjA5MmY2YThjNGM3MDQ3ODQ0MDNlYWMwIHB5M2sKKzYyMDI4IGZlNTNkMWEzNmVmNjNiOTRkMWU1OTVmYmY0ZTVmZGYzNTMwNjAyMmUgbGVnYWN5LXRydW5rCis2MjAyOSBjNDQwYTU3MzcxNDlhNzEyZGI5YmQ0NWFiZDg0NmY1NzY3ZWMzNmQzIGxlZ2FjeS10cnVuaworNjIwMzAgNmIzYWM4OWUwZGQ0OTI0OWExMDhkOWRjNWY4NWY4NTVjMDk5Mzg0YiBsZWdhY3ktdHJ1bmsKKzYyMDMxIDk1OGNmN2VjY2FlMjQ5NjJkNzk1MGJhYjIyNzU2NWI5MzliYjUyMDAgcmVsZWFzZTI1LW1haW50Cis2MjAzMiAwYTRkYTM5N2UxZGI0N2IwODZjZmRiMDBkZGJmODliM2FlYTQzNTM3IHB5M2sKKzYyMDMzIGYxODQzMzM3YTY2YzE1ZTUzM2M2MDIwZTkwYmI3YWVlNmZlNDQ2ZmQgcHkzaworNjIwMzQgNDYzNDhkZTYzZjYxYTBlYmE3YTFmMzRjNGQzYTRhNWU4ZWQ5OTcwYiBweTNrCis2MjAzNSA1MTEwY2YwZTVmOGZlYWYyNDFjYjkwZGZmMmZmNzUwMDA1ZTRkZWM3IGxlZ2FjeS10cnVuaworNjIwMzYgMTY3MzZlYjQwMTUwYWE3ZDc4ODQwNzhmYmIxMDY3NWIyYWJjZjdkNCBsZWdhY3ktdHJ1bmsKKzYyMDM3IDIzZTQyNTc3MjI2YTdmODVmYjhhYjI3MjFmZmQ3ODM0ODA4OWM1YWUgbGVnYWN5LXRydW5rCis2MjAzOCA2ZTAyZmYwYmQ2Zjg5NDRiNzEyMjlhYjE3MTA4MjA4OTg3ZjAyYWVmIGxlZ2FjeS10cnVuaworNjIwMzkgYjBiZjA2ZDQ5NjQ3ZGQyNWQxYzNkMzY2Yzg0MWE0NjI5MDhmODc2MyBsZWdhY3ktdHJ1bmsKKzYyMDQwIDRjNjc4ZTljN2EzMDUwYzI0MTJiMzYxNzRhMTAwNWE3YzNmZDNiYjggbGVnYWN5LXRydW5rCis2MjA0MSA1MWVmZjJmZDk1MjcxMzY2Y2U4NzgxZDE3ZjJhMGNkNjBlYjAwMDJlIHB5M2sKKzYyMDQyIDBjMjFmOWI0YTgzMWE0NjE2YTg2ZDI2MmFlYWI2N2VmNjFlZmNjMzAgbGVnYWN5LXRydW5rCis2MjA0MyAwMWE3ZTY2NTI1YzI2MjRjYzdjMjgxZDMzNmEzODMyOTBlZjBlMjAxIGxlZ2FjeS10cnVuaworNjIwNDQgZTQ0ODZjMzQzZjdmYTY4ZDlhMDcxYjAxNzlkNjc1YTUxZTFkOGQ5YyBsZWdhY3ktdHJ1bmsKKzYyMDQ1IGVkODhmNGRlNDk2ZjE5ODA2YjM2NmE3MGVmMjlkNzcyYmNhMTZjZGYgcHkzaworNjIwNDcgMmZmODhhZTk4NTBjNTJlNWNlN2FkOWM1YTEyZWUxNTNhNjIxNGM4MSBsZWdhY3ktdHJ1bmsKKzYyMDQ4IGUzNzBkOWNkMTQ5ZWEyNjA0YmI3OGY1MWExNzE1NTYxOWU1NDVjZWUgbGVnYWN5LXRydW5rCis2MjA0OSA0MmM1ZDI4N2E4NTJlNmYyODk4OGNkNmIyNTkzMjNkYWMwMDc3YWViIGxlZ2FjeS10cnVuaworNjIwNTAgZjA1MWU3YTgwYWNjNzZiNDAyOWVlNTg2NjIxNDk1ODFmMmIwNmUxOSBsZWdhY3ktdHJ1bmsKKzYyMDUxIDI5ZWE1MDdmZDk5ODIyMzM3NDM4NzQxMDIxNjgyZjAzMWM4MjMwYzMgbGVnYWN5LXRydW5rCis2MjA1MiBjMTEyMjE5MDYxNzExYTQ1MDFlODc2ZTBkMDZlNzNlNzExZTk4MDBmIGxlZ2FjeS10cnVuaworNjIwNTMgMDdmNzVkNTUxOWI0N2I0YzBiMTc1ZDNjM2YyNWFhZmJlMWI2ODk5MiBsZWdhY3ktdHJ1bmsKKzYyMDU0IDU5ZDQyZTZkMTg4NTNiYTBmYWQ5OGY5YmZmZTUxNTQwNDhkNWFjMmEgbGVnYWN5LXRydW5rCis2MjA1NSBlYTc1YjEyZmU4ZTc2ZjliZmU4MzEzZjY4NjA0YzhkMDE0ZjMyOGJjIHB5M2sKKzYyMDU2IDk4Mjc2YmU2NDU3OWZjM2MwYzYxMzFmZjJlMmYxNTFlNTcwNTc4M2QgcHkzaworNjIwNTcgMWM5NzIzMmQ5M2ZmM2U5YWUyMGU0YTE2MTg1YzRhYjNhMDYxYzQ4NSBweTNrCis2MjA1OCBlODk5OGU4MGVhZjJiZjhiNTk5MDE4NTg0NzhjY2Y3Y2Y2Zjk1YmRlIHB5M2sKKzYyMDU5IGJlMThkZjYzNDQwNTg1OTM5NTYwNTBjODc4NzdhNWY4NjczYTMxMTQgbGVnYWN5LXRydW5rCis2MjA2MCAzMmVhNzY1NGZmOWM0ZWYzNWZkM2M5OGM3YTAyZDgwNzJhNDE2ZWE2IHB5M2sKKzYyMDYxIDRjN2JiNDA5ZGFkNmQwMGQ5MGQ2ZGFjNDNmODM0OTcyMmQ1ZDEwNTYgcHkzaworNjIwNjIgYTdmYjRkODdjYmRlMzk3ZGE0ZmVmMzVmNmY3OGU5OTBiZDZlMjllYyBweTNrCis2MjA2MyAyYmMxZDVhYTcyOWVlNDk2YzZlOTJmZmM4MGVlNDRlNGM5MmI0OTY2IHB5M2sKKzYyMDY0IDYwNDI5MTRlODI4Njc3Y2IyOWU2ZGE5MmYzOGE1ZWVkODhiMGIxYmEgcHkzaworNjIwNjUgYzViMTQ5YWQzMDBmOGMwOGMxZWMzOGViMzJhOTFiMDYyNDc0N2MxYyBweTNrCis2MjA2NiA1N2JiYWM1MzE5MTk4MjliMzNmZGZkM2QzMTg2Y2U1NGI4NzA0YWQ4IHB5M2sKKzYyMDY3IDYwMGYyZmY4YWE5ZTkxNzBjYzYwOTdiNTczNTE2ZTY5MzZmM2YxY2EgbGVnYWN5LXRydW5rCis2MjA2OCBmZmJlNmM3OTA1MjNjZDI4OGYxODkxZjkxNzFlMmRlYTA2NTliMzcxIHB5M2sKKzYyMDY5IGFlZDY5OGM4NjQ3Yjk5MTRmMDE1N2JhN2EzYTE5MjkxMTJjZTgxNzkgcHkzaworNjIwNzAgZjBmYTYwNWIyYTc4YTYwOGI3ZjczMjkyZWRjYWUzZGEzNzNiMzEzYiBweTNrCis2MjA3MSAzOGY4ZGZlY2U5OGU1YmQ4M2E3M2M2YmZkMDc1MzIzNjMyOTE5Yjk4IHB5M2sKKzYyMDcyIDg2NDU3NGE5Y2QyNmVhNmQ1ZjU2YTk3ZWM4ZTRiOTkwOTgwOTc2NTcgcHkzaworNjIwNzMgZTkwMzJmNWRkNTM5YjNhNjQ5MjYxNjcxNWNiMmU5NDAzMWUwN2U5MCBweTNrCis2MjA3NCBiMmQ5M2E5NjBiOTg5MGY2ZDgzMTYzNWU4OGM5ZmIzYWZmNzhiOTA2IHB5M2sKKzYyMDc1IGUzZGM4NjdiNjE4MmVlMTI4YzI1YjAwMTVlZjA4MmZhYTJhNWJjMDQgbGVnYWN5LXRydW5rCis2MjA3NiAwN2IzNmQyYjc1MzRjNWM4YmI0OTZhNzJhOTFmODBjYzExZmNjMzcyIHB5M2sKKzYyMDc3IGU0NzQ4MTc2NGU1NzMwODQ4OGExOWUxY2IzOTIzNDFjMWQ2NDE5NDMgcHkzaworNjIwNzggODFlZTI3MGE2ZWI1NGYwMDM3MjAwNzEzN2JmZmM0ODJkZjM1MzMyNyBweTNrCis2MjA4MCBjM2VlMGYwZmJlZTFjZWY2MjRiMjA0Y2I4YjNlYWVmZjZlNDlhMmFmIGxlZ2FjeS10cnVuaworNjIwODEgNjFjOTI5MjNjZjdmY2ViM2U5MmYwZjViYzc3M2I3Yjk4ODRlZDlhMyBweTNrCis2MjA4MiA0MTUxNTZkNGNiZDIwYzhjNjJlYTkxODc0ODkxNmUxMGNhMTY3M2UxIHB5M2sKKzYyMDg0IGM3MDE1ZTM1N2EyYzk3OWM0MjQyYjZmMjI1OGQwMDg1ODYzNzQ4ZGYgbGVnYWN5LXRydW5rCis2MjA4NSAxNzg4MWY5NmVhMDFlMzA0MGYxYTZmOTJiMzNhNGQyMDA5NmYzYWVjIGxlZ2FjeS10cnVuaworNjIwODYgNmRlY2ZlMzhhODA5MTk5ZjEyNTg4NTAyMTg4NDhjMDY5Yzk1ZDBkYyBweTNrCis2MjA4NyBkODZiMzMzYzcyZTc0MWI5YzZhMjA3N2IwYjZmODhjZmY2MDhkYTliIHB5M2sKKzYyMDg4IDMwZGQ2MDY5ODY3MWYxYjg2NjY1NWQ4YzdmODAxOGFjZjIyNjAyNTkgcHkzaworNjIwODkgNWExN2QxNTdkZjAwMTY0N2I2MjMyNGQ4OTk4NTIyYzc3ZTQwYjU1ZCBweTNrCis2MjA5MCA3ZGZmNWU0MWZhN2FlMWJiMDI3NDU3ZmMwMWJlODAwZmYxYTQwNTVmIGxlZ2FjeS10cnVuaworNjIwOTEgNGM1MDY1ZGRiOWJkNjM4ODMzMDAyZjIzOGZlNjQ1MzY0MjcyZjhlOCBsZWdhY3ktdHJ1bmsKKzYyMDkzIGFiNGY4YzQ2YzNkOWI2ZGM2OTY2YTk4MzUwOWVhNTg3NmJjYmQ4ODYgcHkzaworNjIwOTUgNDc3OWUzNDk2YWUxYWZiYmZiODEyZWI2ZTU1MjMyZGViMzYxMjRjNSBsZWdhY3ktdHJ1bmsKKzYyMDk2IDA3MzBmM2Q1MGNkY2ExYjE2ZDNkZDJhZmU0OGNjNThhYzVlMThmNzAgbGVnYWN5LXRydW5rCis2MjA5NyAxYzc4ZDhlODc2NTNhNWRmYjI3OTE4MTVhM2NiNzVjZjYwMzU2NzFkIGxlZ2FjeS10cnVuaworNjIwOTggMGIzNzQ3NzI1NGY2NDE4MDgyNzY4N2UyNGRjZDJkMzllYmIyMzg5MSByZWxlYXNlMjUtbWFpbnQKKzYyMDk5IDU5Mzk5MDBkOThkMjE0OTkxOGExY2Y0ZjliNDFhZTg3NzZkMGQ4MTggbGVnYWN5LXRydW5rCis2MjEwMCBkNmUxMzMzZTYwNzVjZjQxY2YyZDFjYjc1NjZkZjllYjY3MDhhN2IwIGxlZ2FjeS10cnVuaworNjIxMDEgYzdjMjUyMDQ4NTU1Mzc2OGU0OTlhODNmZmRmYWM0MjY5OTNiMDc1YSBweTNrCis2MjEwMiBmNzUzOTE4YWJlNjUyODM4YjFiMTNmMjgzNTE4ZmExYzc2Mzk4MTJjIGxlZ2FjeS10cnVuaworNjIxMDMgMGIyYTRhMTI0NWEzYzk2NjcxNjc2YWVjZTg3NjI0Mzk0ZDY4MTRhYiBsZWdhY3ktdHJ1bmsKKzYyMTA0IGJiNGE1NDc0MzBmODVjZTAzNWM4ODE0ZmQwZGMwMzAwZTk0OGJhZjYgcHkzaworNjIxMDUgMDNlZDAxMThlNzMzNzYwMzhjZGFjZjkyMDk5ZDQ1OTcxZGM3Yzk5NiBsZWdhY3ktdHJ1bmsKKzYyMTA2IDhlNmE0Y2M3ZGZjMDRkYTY5NGI5ZGMzNDlmZGY0NDI0NjZkYzhhZjYgcHkzaworNjIxMTAgODExNzkwNmI3YmE3NWU2ZTJiNDk4ZjAyNjFkYWFhMDU4NTZmNGE1ZSBsZWdhY3ktdHJ1bmsKKzYyMTExIGExNzJjMmUzOGFjOWUyZWE2MmVkOWU4YjVlYmExYjY2NjhlMTZiNjAgbGVnYWN5LXRydW5rCis2MjExMiBhOTQ0NjljNzRiOWViNGJiMzJkOGViMDZiODRkNmMyNDljYjA4NDdhIGxlZ2FjeS10cnVuaworNjIxMTMgMGE1Yzg2MzUwYTg5Mjc2MTNmYTQ1MjQ5YTAwOTNjYzMwYTMxOTYzYyBsZWdhY3ktdHJ1bmsKKzYyMTE0IDJiMGVjYzdmZDdlZWEyODJkZGIxMmY0ZWIzNjcwYzUxZGE0NGNmYWIgbGVnYWN5LXRydW5rCis2MjExNSAyMDVkN2ZkNTBkMzVhOTZjYWI2MzY5OWVmMjYyZmQyM2FmZTY4OTUyIHB5M2sKKzYyMTE2IGY1NDdlYmYwMjg0MzI4OWI5NDgxZDE5ZThmNTk2Mjg3NzFmYWQ2MjUgcHkzaworNjIxMTcgODc5MWFjOWNiY2NkNWJmMWYyYTI1NzgxZTZkNDgyY2I4M2I0NWRhZSBweTNrCis2MjExOCA5NzViZDIxNjA1MjcwYTA3ZDkyNTdjOTQ2YTc5NWI0ODg4YzZhOTExIHB5M2sKKzYyMTE5IDE1Zjc3M2Y3MzAwZTM3MmM1NmEyMWQ1OWZlNDljYTI2OTU1YTY0NzcgcHkzaworNjIxMjEgZWNhYjAzNzY2Y2FjY2YzNDE3YmY0ZmY5ZDc1YTNkOWE3NzVhNDk1NCBweTNrCis2MjEyMyBlZWMxNDQ5MTdhMTg5YmUxMWVkNWVmYTM1YzY2MDRkMDNiYzYyYmNjIGxlZ2FjeS10cnVuaworNjIxMjQgNzZhODFlZjliMzc5MWU5NGMzNmE1MDJhOWI2MjA1YjA0NzY1Y2FjYiBsZWdhY3ktdHJ1bmsKKzYyMTI1IGFhOWJhYmI5YTQ4ZWQ5Y2MyOWI5MmQ4YmZiYjZhZDY2MTQyZGEzOTEgcHkzaworNjIxMjYgMTYxN2JiMDVhNzhhZDgxODNjMmRhMjYzODcyMTAxODk3YjM2YTE2ZCBsZWdhY3ktdHJ1bmsKKzYyMTI3IDRkODNiOGQwMzI5OWY1YWExZmE0ZTczNDEzYWYyNGVlNDRkMDA2ZmQgbGVnYWN5LXRydW5rCis2MjEyOCAyODQ4YzY1N2FmMGFlNzRmNjMwYmYzN2UxMjEzYzk4Zjc5NTNkZDNlIHB5M2sKKzYyMTI5IDlkY2RhNTZiODcxZTFjZWEwYjFlOTQ4ZDdjZDRjNjFiYzk4YzViMzMgbGVnYWN5LXRydW5rCis2MjEzMCA4MTQyMmYxZGU4OTA5ZGEzZGQzNzJhNGNjZTMzNDUyMjlhYmMyMDExIHB5M2sKKzYyMTMxIDk3MzZjMjBkMjZlYjZmNjQ4YWQzMWY0ZDI2M2U3NjgzMDRmZDk0MTQgbGVnYWN5LXRydW5rCis2MjEzMiBkZGZlOTQ3NDBlZGVhNTdlOGJiZWRiMDE5OWQxNzVhMzdiNzAwYzU4IHB5M2sKKzYyMTMzIGE3MmU5MTc0OTFhNDg2ODQyNDM4ZjczOGY4MzY5MDBlYjI3ZWQ5YWUgbGVnYWN5LXRydW5rCis2MjEzNCA2N2YxYzQ2NTI3OWNiYzFkNGUxZjhiNzYyOTYyNGUyZmRmM2M5OWI4IHB5M2sKKzYyMTM1IGNjMzMzM2I3YmQ5MzY2NjhjMTY3ODBkODBmMDNkZDNjZjZmOWU5M2IgcHkzaworNjIxMzYgNzZmNTc3YTllYzAzM2ZkYTA4MTQwYWFkNzhmNjU5NWEwNThjZTViNSBsZWdhY3ktdHJ1bmsKKzYyMTM4IDAzYjI2ZjkxYmY2ZDA1MDNhMzQyMmJkZDU3OTQ0NTEwOTk5MmMyNDYgbGVnYWN5LXRydW5rCis2MjEzOSA0YmE2ODE5NWE1MTE2MzI2M2NlOTM0MzA2OWEwZmMwOGNmNDBmMTNiIHB5M2sKKzYyMTQwIDdjMDgxYzBiMGY1NTg4ZGJjMWIwMzQ4ZWNlOWRiZDFhNDNiOWU5MGIgcHkzaworNjIxNDEgYWM1ZTRkNTRiMjNlOWQ1NmUyZTE3MzQ4NzkwM2IzMzZmZTE2YjM5NCBsZWdhY3ktdHJ1bmsKKzYyMTQyIGZiM2M5YmI3NmIyOTQ1OGZiMzM4NzUzMzk0OTcxMDljNDYxODE5OTAgbGVnYWN5LXRydW5rCis2MjE0MyBkODE4ZjZkMjkzODQ3YTdmMGIxMTE5YzUyMGMyMmQ3YTRiYzRlMWExIGxlZ2FjeS10cnVuaworNjIxNDQgY2NkZGM1NmJkNWIwNzBmYjhmZjY4ZTIzNGEyY2NkMjRkNTBmNjNjNyBweTNrCis2MjE0NSBiMjhhMmQyNWZkOTJkYzA1NmZkNTZlMWU1NzQxZjNjODg4MDZiODVhIGxlZ2FjeS10cnVuaworNjIxNDYgM2QwMzUyYTU0MWNlNTY2MmI2OWFlNGM3NDI2Yzg3NDc0YmExNTlhZiBweTNrCis2MjE0NyA0YTExMzMwM2YzMTY1NDJkYzdkMzNmM2EyMTk5MWY3MGE1ZTY5YmI3IGxlZ2FjeS10cnVuaworNjIxNDggMzk5ZTc0YmIxMmM3ZGQwZjkwMTczZjBkZjZkOTg3NjZlNjM3ZThmMCBsZWdhY3ktdHJ1bmsKKzYyMTQ5IDgyNzMxNzY4OTg2ZDQ3NDlhMGFlMzhiNzE4MTFiY2ZmYzcwOTkwZmQgbGVnYWN5LXRydW5rCis2MjE1MCBjM2E3NzI1ODhkYjc2ZWJkZWM1ZWU4NmU4MGZhYzRkOGMzNmMxMTA1IGxlZ2FjeS10cnVuaworNjIxNTIgNmFiZTI1Yjk5MjRiYWM5ZjNhZGNkY2M4MTRiNmU1MzdhN2JiNDE4OCBsZWdhY3ktdHJ1bmsKKzYyMTUzIDYxYTBjNzZlY2Y4NzZlZTVjNzJkNzU5OGU0ODA1ZWQwYTU1YzMxOWQgbGVnYWN5LXRydW5rCis2MjE1NCBhMTllYzRmMTcyNzc5NzJhM2Q1ZWVkNzZmOWRmZTM2MzVjZjgxOWE1IGxlZ2FjeS10cnVuaworNjIxNTUgZjgwNmZkOTk0MWRhNjhjNDU1ZDZjMGJiNmNkYTJiNTQyYzBjYjZlNyBweTNrCis2MjE1NiAwY2U3YTIzNTJhNTNlYTA3ODAwZmJlYTcyZDEzM2YxNWYwYTc5ODE2IGxlZ2FjeS10cnVuaworNjIxNTcgZTg5MTZjNjRkZjRjNWZiNTAwZmQyNmM0MDgyMDk2YzAxZDg4ODdmZSBweTNrCis2MjE1OCA0OTAxZTc1Zjc3NWFlMWFjMDI1MmFkMzUyNzRmNjU3ODIzN2I5NTFmIGxlZ2FjeS10cnVuaworNjIxNTkgMzcyNmRlOGNiOGUxZDNjMDA0MzBhZTdhMWM4ZmExMTVkMDdjZjU4YSBsZWdhY3ktdHJ1bmsKKzYyMTYwIGY0YmYzZTdiY2JlODBhZTI0YTcxZDE4MmMxMmUzMmVjMTgwNDcxMjAgbGVnYWN5LXRydW5rCis2MjE2MSBkZTc3OTczZDdlMWEwYzRkMmZjNTk0YzhlNGE0ZTEwMDg2OTFhNjNmIGxlZ2FjeS10cnVuaworNjIxNjIgMzQ0MmU5ZTZiMmNmMThkZmE2NTA3YjUyMjI3NzNhNGFjNTVjZDdjZiBweTNrCis2MjE2MyA5YzkyNmIwYTY0OGY0MjQ4ZGRkODU0Yzc5ODM5MDdhM2I2OWIyOTllIHB5M2sKKzYyMTY1IGIxMDI5MmVhZmIwNzM3MTgyNzVkZTZkNTRjOTMzZmRmYzFmYWE2MDggcHkzaworNjIxNjYgYzNkY2MwYzdiZmQ5NTdlMTI2MzhkMWNlMDdiNDkxZTRhYzM5YTkzOSBweTNrCis2MjE2NyBhMWE1MThiZTU0N2RkOTJjOWJiYTdhZDZhODc0YmYwZWM2MjBiYzFkIGxlZ2FjeS10cnVuaworNjIxNjggMTA1NWYzNjliMWZjZWUwNzlhMmNkOThhZmQ5ZDVlYzczNTU3NjFmYyBsZWdhY3ktdHJ1bmsKKzYyMTY5IDYyNTNhNzIxZDhhNmEyYjNlNjliMzU5YTJmNDkyYmI3ZWIxMDFjZDEgbGVnYWN5LXRydW5rCis2MjE3MCBlM2Y3ZGNmYWEwMzBjYmU4NGY1YmRhMzRmZmJhNDlhZmNhZTdhMTIwIGxlZ2FjeS10cnVuaworNjIxNzIgODUzMmQ1NjkxODUwOWFiOGUxMTJjMzEzNWNjMTBiNDA5MWM0YWU0OSBweTNrCis2MjE3MyAxMGQ5NGM4Yzg0MTRhYjY3MmUyMjc4MGIwMmJiZWRkYmQ3YmE0NzYzIGxlZ2FjeS10cnVuaworNjIxNzQgZjg0Y2RmYzIyMWQxMzVlMGUyZTEzZTViZDkyNWQxMTI5ZGYxNjQ2YiBsZWdhY3ktdHJ1bmsKKzYyMTc1IGJjNzAwYWQwMjk2MjMxODUyNjRlOGM1ZDJkMjE2YmVmMTEyYmFmMmMgcHkzaworNjIxNzYgNDM1MmQ0MWFmZmIwMWIyNWYwZjE2MjhiZjNjYmFlOTkxOWUxNjk5NyBweTNrCis2MjE3NyA4NjRhNTY3MWM3YTQzY2E3NzFjNDZiYzY3NmVhNTI2ZDUyOTkwMjZhIGxlZ2FjeS10cnVuaworNjIxNzggMjJhNzRlYWY2YjIyNTNmYzEyNWIwNzkxYzJlNzEyOTdiOTFjZDlhMiBweTNrCis2MjE3OSA0MmE3NThmOTYxYTE3OTMzY2VlMmJhMzZjMTg2OWY4MDMwMmFkNWQzIGxlZ2FjeS10cnVuaworNjIxODAgMDEyZDk3YmJlZWFmNmY2YzE4ZWVmZDQ1NDEwZDM0MmVhNGFiMjNlNSBsZWdhY3ktdHJ1bmsKKzYyMTgxIGU1M2YyY2NjZGYxZDcxYjI3OTcwMTc5YzRmNmNkNmJmMjExNDZjMzQgcHkzaworNjIxODMgZmI1ZWFhNGJlNzAwOTFhNmVlYzQ1ZGY3MmY1Y2VlMmY2MWQ4NDllZSByZWxlYXNlMjUtbWFpbnQKKzYyMTg1IGY0NmNkMjQwZTEwNTg1Yzk0OTA1NTJmNjI3ZDc4MDc3MjE1M2M5ZjUgcHkzaworNjIxODcgMDM1Mjg5ZTZmZTIzNWRkMzA0YWU0OGQ2YzhiMTU1NTRhNjBhNmEwMSBsZWdhY3ktdHJ1bmsKKzYyMTkwIGM3ZGEzMWMyYzQ1ZmY3YmRhMGJhMjdjMmJlYzMzMmUyMjg1MzE2OTIgcHkzaworNjIxOTIgOWM2NDc1NDI3NjA1MjE0MzJmNzc4OWZjNWZhYzhhZGNmNmZhMDdhNCBweTNrCis2MjE5MyBlMjhlZDg1Y2M5NjJkZDc0MWM4MWY5MjE4ODk5MjVmODI2OTEyYjRhIGxlZ2FjeS10cnVuaworNjIxOTQgMjdkMzI0MzYwYTYzZTMxNGUyMmFhMmE4MTAwY2NiYTNmZjIzOTA0MSBsZWdhY3ktdHJ1bmsKKzYyMTk1IDg2ZGE5Mjk4YjkwOGI4Yzk3NmI4MWRhMDkyMTEzYmI5YzQyNWJlMmIgbGVnYWN5LXRydW5rCis2MjE5NiBkZjc2MTk1Mzk2MzFhMjY4YzJlMDY5YTAyMGNlOGRhNGViMjg4ZmZhIHB5M2sKKzYyMTk3IGE5M2QyOTE5ZWE1OWJkZDlhMGExMGQ2NDQ2MDdjYjliZjFiMjAwOTcgbGVnYWN5LXRydW5rCis2MjE5OCA0YmRiZWY3MDk1MTU1YWJjZjhiMmY5NjA0YWY4NzVjMzk5NzNmZDBlIGxlZ2FjeS10cnVuaworNjIxOTkgNGU3MjQ4OWYxNmQwNTBhZmI1NDczNDc1ZDczZTg5MThhZDQ3ZjFjMSBsZWdhY3ktdHJ1bmsKKzYyMjAwIDNhYjU0NzRiZGU0NTdmODRlZjUwN2MzN2E4ZDI2NDQxYWJmZjE5NDkgcHkzaworNjIyMDEgM2Q5YWQyN2Q5MzBiMDc4ZTAxMGQxODBmYTczNWM5YWIyOWVlYjMwMyBweTNrCis2MjIwMyA1NmU0OTk1MmQxYTRmNjNiYzUzOTQ5MmEwZDdiM2JkMjA0YmQ3ZWNmIHB5M2sKKzYyMjA0IDJkOTVmN2E5ODNkODJkODBmZDhjYmFiNGRiMTk5N2NkNDFjYjIyZmIgbGVnYWN5LXRydW5rCis2MjIwNSAyN2RmM2I4MTM1MTgyOGQzNzRkN2M5MTBmMTY5NDljMGQxM2Y1MjM0IGxlZ2FjeS10cnVuaworNjIyMDcgYzI2NjcwZjFlNTIwZmVmNGYxODAyMWFiYTJhZGM2OTE0YzcwZmNmYyBsZWdhY3ktdHJ1bmsKKzYyMjA4IDIzYjY1ZjJkNzYyMTlkMjk5YmYwYTU2YTBlMTBkNjYzOWVjNGQwNGYgbGVnYWN5LXRydW5rCis2MjIwOSAwYmU0MDBjYmQ1YjhhMDJjNmNhOWUzYzYzNDY2YTIwNDFjZmU4ZDNiIGxlZ2FjeS10cnVuaworNjIyMTAgZDc2ZTU5ZmJmMDZkNDE3Yzc1MjJlOGM1OWJkOTExNjNmNmY4NjUwOCBsZWdhY3ktdHJ1bmsKKzYyMjExIGZkNDdhOTAwOTA1YzJkNmZmN2JjNmNmYmZlZmFjMzE0YWNjMzVjOGIgcHkzaworNjIyMTMgNjBjZGI2NzAzZGYzM2U4YmJiNmI4M2NiNmYyNjJiZWMwMTI4MDdiNSBweTNrCis2MjIxNCAwOWYzNmQ1N2M5ZDYxM2E5M2Q0MGVhNDBhYjQ2NzFhYmYzOTQ2Zjk4IGxlZ2FjeS10cnVuaworNjIyMTUgZjljNjFjOTZhNzY5NWIwYTg1MWEwYTgwOTFjNGIwNDg4MjdlZDJiNiByZWxlYXNlMjUtbWFpbnQKKzYyMjE2IGNkMDgxODQ2MzdjNThiZWYyNGEwYzgwZjljODJkZmUzN2M0ZjkyMjIgcHkzaworNjIyMTcgODlkZDE2MmYxNTViZmNhOWUzZDkyMjEzZDNjODMxOGUzNWEzODQwNCBweTNrCis2MjIxOCA0NTg5ZDgzMWFhODBiYmU1MTZiODE4ODBhNDY1ZjIxMmEwOTE2Njk4IHB5M2sKKzYyMjE5IDIxOGYyZDU1ZGU0ODgxYWMxZDU4YWI3N2Y1MGQ3MDYzOTU2MDAzNzkgbGVnYWN5LXRydW5rCis2MjIyMCA0MzQ4MzQzMjE5MjQ4OWQ5YzkzYTJmY2M1ZDU2MzhkMzdhMWUxOWQ3IGxlZ2FjeS10cnVuaworNjIyMjEgNjNhMGQzM2M0Y2QzNTQ5ODYzNjc2NDM2ZTMyYTQyOGVhNzQwMTI0MyBsZWdhY3ktdHJ1bmsKKzYyMjIyIDI3MGQ3OWY5MDA3MTFlYmQ0NjRiMTE1ZDcyZDEyMmYxMmFhMDRmMTcgcHkzaworNjIyMjMgZTAyNGI3NTUyNzk1ZWNiOWVkNjY3YjM5MmVhOWZhYTg1MWU1YWU1YSBsZWdhY3ktdHJ1bmsKKzYyMjI0IDYzZjlhODUyNjA5ZTMxODg2ZjEyZmY1MGNkOWExMmRkYzY3N2U3MGEgcHkzaworNjIyMjUgYWU2NGZhMWJjOWNiYjRiOWU0MmYxMGM0YzJlOGYzOGNiMzRhOTkyNCBweTNrCis2MjIyNyA1MGY1MTg0ZWVlZDhkOGFmMTFjZjFjODE4MmQ2MjYyNDBkMDkxYzAxIGxlZ2FjeS10cnVuaworNjIyMjkgMzgyZDVlYTE3ZDc4YTQ4ZDJjYWVhYTAyNjMzN2E1M2FkMTRiM2RkMyBsZWdhY3ktdHJ1bmsKKzYyMjMwIDg1NDNmOGM4MWRhMDg4YWQyN2QyYWVmYmViYjIzYmYxMWRmNzUxMzYgbGVnYWN5LXRydW5rCis2MjIzMSAxZjE1NDYzYWY5OGMzOTRhMzE3YTNmYTc2NzMzZDQxYTE2ZDg2ZWMzIGxlZ2FjeS10cnVuaworNjIyMzMgN2ViZTgxYjFlNDIzMmE1YTZmZGVlYjY2NmFiMzhjNGUyMjJlNjgwZiBsZWdhY3ktdHJ1bmsKKzYyMjM0IGQ5MTdkYTJiMTk0NmUxMmM0NmY1MjMyNmE4ZTY3YTNmNWE1MTkwMzMgbGVnYWN5LXRydW5rCis2MjIzNSAyN2M3MTM5YTk4ZWY3ZTllNmQxMWM0NDc0OThiZTE5MzI4NDQ3OGE5IGxlZ2FjeS10cnVuaworNjIyMzYgMDQ5OGViYjZjNDFiODMwOTgyNjE4MTYzOWFjYjliZTlkYjM3MTQyYiByZWxlYXNlMjUtbWFpbnQKKzYyMjM3IDdmZDI3NGE1OGQ1YzFlMGVjNWViODdlNzFjMWU5Y2UyYzk3YWIzNWIgbGVnYWN5LXRydW5rCis2MjIzOCBhYmRjODFlMWNiNWJhNjU1YmRiYzJkNDEyZWRiYzllMGJhZWEyYTVjIGxlZ2FjeS10cnVuaworNjIyMzkgYWY0YzQ2YmYzZDA5NzJiNzQ1NzAwZWQwNDNmMTc1NGE3MmM0MzQ5OSBsZWdhY3ktdHJ1bmsKKzYyMjQwIDYwODg1ZjhlODU3NWNlNmU0ZjZkYTYwOTMwMDQ1NGUyNDg5OWYzMGYgcHkzaworNjIyNDEgYWZjNjIxYTFiYzQxOTAzOThmZGQ0NGJiMDhmNmU3ZWE1ZjA2YzIyNCBweTNrCis2MjI0MiAyZTkxN2IwYzhmNmU4OTJiYzRkYjhhMWZkYTVlNmZiZmJjZGNmMjRhIHB5M2sKKzYyMjQ2IGIzY2QwMzM5Y2E3N2U5NzkxODk4Y2YxNmMyZDg3OWRhZGJmNTM5OGQgbGVnYWN5LXRydW5rCis2MjI0NyAyYzQ1NTNmNjU5MjQzNTE2Yjg3MTBjMDJkOTMwYjNiZTEwMDdkODU0IGxlZ2FjeS10cnVuaworNjIyNDggYmU3YjBlYjU5OTBjNmI2MWE5NjQyOGExNzg0ZTY0YzI5NjIxY2FkZiByZWxlYXNlMjUtbWFpbnQKKzYyMjQ5IGFmZjM4MzlkMDM5NDFhZDQ1YWQ3YzFjNDllZDhlMzE0YmExOGFkYWYgbGVnYWN5LXRydW5rCis2MjI1MSA1YTU2OTJlM2M5YmUyMjk1NDcxYTY2ZTg0YjRmY2E0ODhiZDVlYmZlIHB5M2sKKzYyMjUyIGZmMzRlZjBhODA5NjQ4Y2RjM2UwOWI1NDY5NzcwZTlhYTk5MzA1NTMgcHkzaworNjIyNTMgMThkYjhjNGQ0NDg3YWU2OWEzZGVlZTBhZmM2NWZjNTg0MjEyNzc2NyBweTNrCis2MjI1NCBlZmE5Y2MzYmQ3ZjNlYmE2OGZhNzhlNDlkYzJiMTFiNmFlMDU5NWU4IHB5M2sKKzYyMjU1IDExYjE4ZGQxNTkwM2ViOWMzYmE2NzMyMDE1MzhmNzUxMTk4MmM3ZWUgbGVnYWN5LXRydW5rCis2MjI1OCBkOGI3NzFiZTIxZGY0NDk5YTI0YjA5ZTVhNmIzNWQ1YmJlNmNmNzRjIHB5M2sKKzYyMjU5IDM2MDMyNjc2NzI4ODBhNDFjNWE4OTdmYTAzYjllZDJkNzU0Mzc3NDIgbGVnYWN5LXRydW5rCis2MjI2MCBjZTMxODc0NjIwMTFmNjgzODZjYjUwZWI5OTk0ZWY3ZDVkM2RmMjdkIGxlZ2FjeS10cnVuaworNjIyNjEgMGI1NTg3NWMxYzljMWQ2NjBmNzMxYTMyOTU5YTkxNmU5ZTM1ZjczMCBsZWdhY3ktdHJ1bmsKKzYyMjYyIGNkNGIxZjNmZDFhOTc0MDc1MDI2NDNiMzA0ZjFlYThmZjVmYTgyYzcgcmVsZWFzZTI1LW1haW50Cis2MjI2MyA4NDJhNmMyYzliY2QyYTczMGNjYzQ1N2YyMWY2YjJjZjVmNGNkNDViIGxlZ2FjeS10cnVuaworNjIyNjQgMjI4N2E0YWIyNGQ4NzYxMTk4OGY1MTZiNGFjNWYyNWMxZmU4MGY1YSBweTNrCis2MjI2NSAzY2U3Yzc5NmJjYTEyNDk1YmNhMDdiN2ZjY2JlYTYwZGE0YmMwYWExIHB5M2sKKzYyMjY2IDhkNTU1ODUwZjczZDk2OGZkNjdjYjJiYTZjYTE1ZjkyNzE3NGU3YjIgbGVnYWN5LXRydW5rCis2MjI2OSA3Yzk5Y2VkYzNlNTRhNWVmYmY4ZGIzYTQwMzQ0OTU3MTNjODI3NmFhIHB5M2sKKzYyMjcwIDVlNTVkNDI3NWEwOTQxMGQyOTZiNzcxYjA2ZmM5NDY2ZTlmYTVmMGMgcHkzaworNjIyNzEgMWFhYWIzMjE4M2YyMjc0NTg1OTZhZTAzZjlhZDljYmM2ZmZjYzBmNyBsZWdhY3ktdHJ1bmsKKzYyMjcyIDA0MTBmZjgxOGVjNzhlZjFiMjI0MGIzYTI3ZTAwOTJlY2RiZDU4OTEgcmVsZWFzZTI1LW1haW50Cis2MjI3MyA2NDVjNTM1ZjgyMjMyNmViNzcwMTg2NzYzZjA3N2RkMmM2OTYzODIxIHB5M2sKKzYyMjc1IDg0MTZjZGQxMWMxMTcyMTgwMmU5ZDI3NTY3MTU0NzQxODRiY2FkZTQgcHkzaworNjIyNzYgNjE5NjUyOWFmZDczODQ3NWY1OWJmMGI3N2RhZjUxMjE1ZDdhMzI5MSBweTNrCis2MjI3NyAyOWE3YmVjNjEwY2JmMjM5Y2U5ZDg1ZTIwNDRmM2I5MWFjNDRiNzU2IGxlZ2FjeS10cnVuaworNjIyNzggNDVmZGFlNGNkYjU1N2YyYTZjODUwZGU4OTUyMTI3NTZmOTkyOTc5OCBsZWdhY3ktdHJ1bmsKKzYyMjc5IGRkY2U3Yzk0MjFkMmU5NmZkNTVhNmU5Y2RlYTIyNTUwZjljZTVhMDMgbGVnYWN5LXRydW5rCis2MjI4MCBhZmFjM2ZmNjBjNmM1YzEwODgxNDczY2EzNjM1YzMyM2Y2MTlkZWJjIHB5M2sKKzYyMjgxIDA5NGE5Y2U0YjliZDRmZGRmM2FiZjk0NmYzODQ3ZTQ1YjJiN2IwNGIgcmVsZWFzZTI1LW1haW50Cis2MjI4NCA5Nzk3NGQ5NjcxMjcwYjc4N2U5YWMyNDg2YzE1NmQ4NGFiZjQ1NjFkIHJlbGVhc2UyNS1tYWludAorNjIyODkgYmMzMzc3MGNhMTE0OGM2MDI5YjI3NDk0NGY4MDRiYThjZGU3NmRiYSBsZWdhY3ktdHJ1bmsKKzYyMjkwIGEyNDg1NmJhNzdmZWQzNGNhZDUyNTk4YTEzOTNjMzM1ZjNhZTcwNzIgbGVnYWN5LXRydW5rCis2MjI5MSAzMzYxYjk4ZmY0ZmY4Y2U4Zjc5ZmQ3MmUzYjk1ODFmOGUyNDFlN2FjIHB5M2sKKzYyMjkyIDM2NTNmYmRkNDQ4MzliYmExMDg2MDc2MGRmYzI0NDM5YmFjYmQ5NjggcHkzaworNjIyOTMgYzFmYTJlNzU4ZTA1YjVhNGIwN2JiNjY0NWZkMjZjMjU0YjY2MWY0NCBsZWdhY3ktdHJ1bmsKKzYyMjk0IDk0NzgyYmU4ZjFlNzdiNThiZjhjOTVlZGE0ZTVhZGM2ZDM3ZTkwZmMgbGVnYWN5LXRydW5rCis2MjI5NSBmZTI3NTFhY2FkM2UxM2E1Y2JhZmMwNDNmZjQ1MDMyMWIxYWU5ZTQ5IGxlZ2FjeS10cnVuaworNjIyOTYgY2EyMzNiZTY0NTk4OWNhZGZmNDQ2NmQxMjU2MTE0NTY1ZTYxOWQ5NCBsZWdhY3ktdHJ1bmsKKzYyMjk3IGQ0NmY2ZWIwOWViY2ZiODY2NGFkYjg5YTcwOTYzMTlhMGE2YzY5ZTIgbGVnYWN5LXRydW5rCis2MjI5OCA3NjRhYWIwZThiOWIxZTQ2YTM0ZTI5MWI3M2JiYjg3MDAxYTFkNjgzIGxlZ2FjeS10cnVuaworNjIzMDEgOGI5MTRmY2U5ZDg0YzA4NGRhNDk5NmUwNDg0OThhYTJjMDk1M2MyNSBweTNrCis2MjMwMiAyYTk4NTgyNTVkZTEwODczZTg5OGIzOTA4NzNlODQwM2Y4YmU4NmYxIGxlZ2FjeS10cnVuaworNjIzMDMgODQwMDY0ODAyOTUyYjM3OGU4MWY0NjI3YTAxNzVjNmY4MmRjZWE2NyBsZWdhY3ktdHJ1bmsKKzYyMzA0IGY3ODFjYTE0Mzk1YjA2NTdmMmFhZTYxOWU1NjE2ZjJjYWRiNTI4ZjcgbGVnYWN5LXRydW5rCis2MjMwNSAzOWVhMmZjNDUwM2QxMjMxNzk1YTdjY2E1ZDc0YWViMTM0OTUzYjIzIGxlZ2FjeS10cnVuaworNjIzMDYgODNlNjk3NWMzMTk5ODQ0MTdhYjFmMmNlZTE4MzNhYjJjYTI3YzNkMCBsZWdhY3ktdHJ1bmsKKzYyMzA3IDMzMDdhNTQ1MGMzNzlhNjkxYTJlODlhNmQxZWFhOTllMzM0NjhjNzIgcHkzaworNjIzMDggMzZkMGExZTBjMDI0YmE5ZDAwNzZiNThkMWMxYjcyM2Y5MjUyODhkNCBsZWdhY3ktdHJ1bmsKKzYyMzA5IGI1NDRiYjYxYmNhOWNhYmQwMzM3OGY4Y2M3YjU3MjJkNWE4MWJiNjIgbGVnYWN5LXRydW5rCis2MjMxMCA5YWQzMGNjY2U0OWMxODFjZGUzOWJjMWY1MzAyZmE4MjFjZWU2ZWQ5IGxlZ2FjeS10cnVuaworNjIzMTEgMDIzNDNlY2FmMGJiMDA4OTc5ZGZlYWEyNTQ0YTMwMzFmYjA5MDc3MyBsZWdhY3ktdHJ1bmsKKzYyMzEyIGUwYzNhY2IxMTZhNTU0YzEwZTYyOTdlYzIyODllZTA3YTY4YTg4MmQgcHkzaworNjIzMTMgOGYyYjY1ZWM3YmJhYjc4YjlkNDBlNDg0YTJmZGI1OGI4M2JhZGMyNCBsZWdhY3ktdHJ1bmsKKzYyMzE0IDI5MjMxYTk3MzU4MGVhODRkM2VlMWJmZGYwZWU5Mjg4YzU2ZWFkMTcgbGVnYWN5LXRydW5rCis2MjMxNSBmYzMzZTc1YjkyNTcwZGMzZjEyZjQxM2M0NjRjNzMwMDhiMTlkNzJkIGxlZ2FjeS10cnVuaworNjIzMTkgN2E1YTU4MGJhNmVhMjNiYTk4MDYwMGM0NzFhMTVkMDE4MTcxZGUzZiBsZWdhY3ktdHJ1bmsKKzYyMzIwIDA1MjgyNzkwMDc4MjZkN2Y4ODQyYmY2N2RkZjZlZWUyNGE1MTViYTggbGVnYWN5LXRydW5rCis2MjMyMSA4NWYwZTFhYzBiYzliMmIxMDZiMDQ1NzMwOGEwNTA4MzdiMmU1NjljIGxlZ2FjeS10cnVuaworNjIzMjIgNDdkOWJiZTEwODk3MjBjZDFlM2QzNzA3NGVhNTNiZmNjMDllMmUxMyBweTNrCis2MjMyMyAwMjhkODYyNTQwOWIyMjJkYWQ3Y2RiNjlhMDJmZDY5ZjdhNjVmYWQ4IGxlZ2FjeS10cnVuaworNjIzMjQgNGFmZGM2OGVhNTJlYTU4YzY1N2Y1ZDQ1MGU3NzQ3MGE1OWE5YjMzNCBsZWdhY3ktdHJ1bmsKKzYyMzI5IDY5NTJlNzE4MWZmYzg4ZjhiZjkxNmQ5NzIzOWY1YThkNzQyNDFmN2MgbGVnYWN5LXRydW5rCis2MjMzMCBiNDIwZWFiZjk4MzU0NTk3NDMwYWQ4N2JjZDg3MjlkNTcwMGM0MmYwIGxlZ2FjeS10cnVuaworNjIzMzEgN2MyMWNjMTRiOTRmNWE2NGQyODZhM2RjYzVhYjc0ODQyZmUxNGYxMSBsZWdhY3ktdHJ1bmsKKzYyMzMyIDAzZDljNjY0YTdiYzg3MDVmZDVjZTZmZmE4YmZlZTVhMDQ0YzMyY2MgbGVnYWN5LXRydW5rCis2MjMzMyA0MGZkZDVjZDJlZjUxZDYxNjhkMDc2MjgyNWYyN2ZlY2QyYjRhMGNjIHB5M2sKKzYyMzM0IGZiMDgxMDI1YjIyMzBiZDdkNDhmMWUxMzM5NGUwMjVjN2U0ZDViNTYgbGVnYWN5LXRydW5rCis2MjMzNSA0Njg3OWU3ZmM0ZDMzNTRiZWYxZGQ2MDg5ZDQwYTI3YzQ3ODQzNjAzIHB5M2sKKzYyMzM2IGM3NDQyMzUxMDM2MTgwNzFkNjA4OGJmM2I3ZDRjNTIyODlmYmE3NjUgcHkzaworNjIzMzcgNzJhNzY0ODY5OWQwODM4OTlkMjM2OTJmMWI2ZTQ1OWIxNDc2MjI4ZiBweTNrCis2MjMzOCBiM2RjYThmNTUzNWVjMjIxZjUwZjhiMTM4NzBkODdlNzMxZDkyZWNiIGxlZ2FjeS10cnVuaworNjIzMzkgNjE0ODdiZTZmNDQyOTJkZDM4ZDVjZWIyMzM0MzA3ZGY5OWQ3NjBjYSBweTNrCis2MjM0MCA4ZGQyNDc0MWI2YWFmMGI2MjQzYmI2N2M4ODAxMzIyNDgxYmVlOTI2IGxlZ2FjeS10cnVuaworNjIzNDEgNmU0Y2E5ZjcyYmJhNmRkYjJkMDZlOGQ3ODBhNWFjOTgyOGVmZTczMiBsZWdhY3ktdHJ1bmsKKzYyMzQyIDBmZWRlNGQxYjE0YmEyYTUzYjEyNzIxOWFmY2YyZmVkYTNkZDU4ZmQgcHkzaworNjIzNDMgYWQxNzBhMzM1OTY3YmFiMjE3YWQwM2I1MDk4NWJlYzBjMGFiMGQwMiBweTNrCis2MjM0NCA1OTc1M2JkY2UwODk4NDljZTFjZDdjYTliYmU3OGU4ZDg5MWUwMjMzIHB5M2sKKzYyMzQ1IDI0MjA1YjFmOTU0ZWY3NWU2MjMyZDdiNjg2MmFhNzk0NzNiZmNhMzggbGVnYWN5LXRydW5rCis2MjM0NiA5OWJmYjhkZTM0YjFmNmQwMTYxMzZhZWJlMDg4ZDc3ZTRjYWY5MWEwIHB5M2sKKzYyMzQ3IGVhYjE1Mzk4ZWVmMDBhY2I2OWU4MGIzZWUxNTJkZDFjMTFjZGM2OTEgbGVnYWN5LXRydW5rCis2MjM0OCA5MWIwOTlhN2YzZTIyYjgzZWE4MjAzNGY4NGYyZjZlNmEyOGQ2NDBlIGxlZ2FjeS10cnVuaworNjIzNDkgOTgxZGYxM2FhYjIwMDhjMTE0ZjQ1MTg1NzRlZmJiYzM4NmZmNWRkYiBweTNrCis2MjM1MCAxODQxZjkyZTMwZGVmMGE1YjMxMjdmNWFhMWZiMGEwM2QzZTcyZjM0IGxlZ2FjeS10cnVuaworNjIzNTEgZWYwNmVkODA0OTE4YTFhNDAzMjFjYWRmYmQzMzljODlkYmVlOTgzMCBsZWdhY3ktdHJ1bmsKKzYyMzUyIGNlNTU5N2FmOTljN2Q5NWNiZjViMTlhY2Y1ZDAwNzM0YWMyOWI2OTIgbGVnYWN5LXRydW5rCis2MjM1MyAzZTA5NWFiNzVmYzg5YWVkMDJmMGM0ZDVjNzljZjg3OGE0N2UwNjYyIGxlZ2FjeS10cnVuaworNjIzNTQgMTlmZDQ2M2VhNzI4ZTQwZTg2ZjY4NzhiY2MyNTVmMGQwNmQwOTRkNSBsZWdhY3ktdHJ1bmsKKzYyMzU1IDM4YzgzMWI0N2RjNWJiNDMxY2MwODJlNDk1NDAzZDczNTk0YmNmNWQgbGVnYWN5LXRydW5rCis2MjM1NiBiMDRmMjA1MmU4MTI2Mjk2MWQyYjNkN2Y3ZTUxNTAxOTkwODZiMDZiIHB5M2sKKzYyMzU4IGI3MjMxMDY5MDFlMGNmMGYzYzQ0M2IxZTFiZWYzYWE4ZTcyZDUwNzUgbGVnYWN5LXRydW5rCis2MjM1OSA5ZjNjYTE5MTYyYTczOGE2MjBjNjAyNzYxYTYxY2JmMDFkMmVhMmY2IGxlZ2FjeS10cnVuaworNjIzNjAgNDgyODk2NDVjZGVmNzdmZmRlYjU2Y2JiYjNlYjBiY2JmYjY2MTVhYSBweTNrCis2MjM2NCAxYzliYTQwMTFmNWRkODViZGRlYTNjZjc4NWQ4NGM2YjMxYTY5Y2FmIGxlZ2FjeS10cnVuaworNjIzNjUgMDdkN2U1Y2RjMWEwMTBjZjkxYTI0MTcwODk4MDg3NTE1NDQ1NjUxZSBsZWdhY3ktdHJ1bmsKKzYyMzcwIGJjOTZiYWM1ODZiNGMyMWZjMmIxMmUyYmYyYmNjZjAxNjgzMWVmZDcgbGVnYWN5LXRydW5rCis2MjM3MiAxZmVmMjZmODliY2VhMTg2YTU0MzIyMDJkOWYwZjZlNzRkMjE5N2E1IGxlZ2FjeS10cnVuaworNjIzNzMgN2NkMzYzZGY3YTg0NmNkMTgyNTA0YWZkZTgwYjU4ODgzMmI1ODIxZiBsZWdhY3ktdHJ1bmsKKzYyMzc0IDUwMjRiMTJhMDM5ZDFjN2RlMWEwYjIzZTc4YjE0N2I0ODE4YjA0MDkgbGVnYWN5LXRydW5rCis2MjM3NSA4OTE4YzUxZGUwMTA4YWNlYzcxMTNjNjU4MTlhMzkxYzY0M2IwZWQ3IGxlZ2FjeS10cnVuaworNjIzNzggNGY4MjYxYjkyZmM1NjBkZWQ0MzA2ZWFhZWU2NTFjY2E1NmRlODFiOSBsZWdhY3ktdHJ1bmsKKzYyMzc5IGZiOGQzZTFmNjE2MTJkNDRlZmYxM2RiMDYwMTI3MzAxNWIxMTQ2MDUgbGVnYWN5LXRydW5rCis2MjM4MCA1YmM3YjIwZGMwNGE5ZDI0OWE4MjMzOTQ1NzY0MTVkYTdmZTg4YTkwIGxlZ2FjeS10cnVuaworNjIzODEgNWM0MzE1OWY1YWQwYjA2NTk5YjZiN2EzOWJlY2M5ZWJjMDBjNmJjZCBsZWdhY3ktdHJ1bmsKKzYyMzgyIDc3OWNhYTFlMGZmYjJlMGM4MmUxZTczY2U3ZjE0NGQyOWMyM2MyMjEgbGVnYWN5LXRydW5rCis2MjM4MyBhMTk5NzM5OWY4NzI0YzRhYTMzNTQ1NTg1ZDBlZDczMTdlMDkzYmEzIGxlZ2FjeS10cnVuaworNjIzODQgYjY5ZjQ0M2VmNDgwNzE3OWNiMTFiNmI1MmViMzY1MzM5ODk4ZjI4MiBweTNrCis2MjM4NSBiZWI3YWJjZDZjMDFhNTQzZGFkZjZmODI1OGRmZjVmYjdiZGUyZTY4IHB5M2sKKzYyMzg2IGUxNjU5M2RhNDg5ODljNzAzZGFlNjczNmE4MGZlZDU4ZTJmYTAwZDQgbGVnYWN5LXRydW5rCis2MjM4NyBlMDI5ZDdjN2RlODExNDQxMzNmZThhODk5MDUwOWFjNzdkYjY0Yzg3IGxlZ2FjeS10cnVuaworNjIzODkgOTdjMjE0MTdhZjQwYWQ3YjI3NjY3ZTU0Mjk4MjMwYmU0ZmEwYjcwNSBsZWdhY3ktdHJ1bmsKKzYyMzkwIGIxYzcwYzg5YzNkYTZjMzljMTEzMmVlMTMwNmQ2ODg0N2IyNzI0NDIgbGVnYWN5LXRydW5rCis2MjM5MSAzNzQ4MzNkZTU3MGMyNDFiZTA2MzRmZTE0YmU0OTJmNTAyZjYyOTUwIGxlZ2FjeS10cnVuaworNjIzOTIgMTBkYTI3OThlNThkODM2NDFjYjAzMjJjNTdlMDM4ODNlMTA3ZjJhZCBsZWdhY3ktdHJ1bmsKKzYyMzkzIDRmNzE4MDYxZjQ1YTQ0MTg3YzUyMGIyYzYwNmI0NmZhZjFjNDE1NmUgbGVnYWN5LXRydW5rCis2MjM5NiA4MmQ4NWEwNTkyM2JmMzk4NDZhNDUxNmIxNjAyMGYwZDBlNTc1MGI3IGxlZ2FjeS10cnVuaworNjIzOTcgZDBmYTQ1ZTYzN2EwNTAwMTkwY2QzZGZiM2U4N2VlZGJkNTQ4OGZkNCBweTNrCis2MjM5OCBjMzY1OWNlODkzZTdlOGJiZWJiOTI3ZmJhZmIwODcyNzkwNmI4Yzk4IGxlZ2FjeS10cnVuaworNjIzOTkgNjQ0YTY3ODMwMDYxYmEzNWI0ZjhhZmZiOGEyYjY0NTIxMmZlNGYxZiBweTNrCis2MjQwMCA2NDhiNGQwMWNjY2Y1OTU1ODE1NTU2NWIzYjNjNGZiOWFjZGViY2NhIGxlZ2FjeS10cnVuaworNjI0MDEgMTAyMzZkMWQwODYwNzY3YTQ5YThlZTE0YjFjYTUyOTRiM2M5ZWJlYyBsZWdhY3ktdHJ1bmsKKzYyNDAyIGRhNGE4N2Q2M2IwZWUzMDBiMjAxZGEwMmZlMTQwYWUxMmZjOGQ1OGUgbGVnYWN5LXRydW5rCis2MjQwNSAzODVlMjE4ZDBmNmM1YWU1YjNmZjdjYzczYjgwNDMxNzY1M2ZhM2JkIHB5M2sKKzYyNDA3IGZmNThjYjVhYTc2ZGE2MDA5Y2NkOGUyMWU2YTI2OTNmMGY0Mzk2ZGIgbGVnYWN5LXRydW5rCis2MjQwOSBmNjQxZTUwNWZmZjQ2ZTE3NjVhNmQxMGYyMzUwMjEzM2NhZDQxZDc0IGxlZ2FjeS10cnVuaworNjI0MTAgMzViZjgwMTJhMzc2ZTYzZDE1YTkxM2U2MzgyOWUwN2FiZjAwOTAxMSBsZWdhY3ktdHJ1bmsKKzYyNDExIGQxNjYyNTFkODAxNDQ5MTY3Nzc3Mjk4OWVjZWM2N2U3OTY4M2ZhMjQgcHkzaworNjI0MTIgMzFmZjU5ZDk4NGJkZTJjOGU3ZjgzZmY1NjcyMGY2NTQzN2EyMDEwMSBsZWdhY3ktdHJ1bmsKKzYyNDEzIDgwYjE2NTk1ZTQ2MjZjYzg0YjkyNzdmMDBhNzBkMGZjZDkyZWQ4YTggbGVnYWN5LXRydW5rCis2MjQxNCBhMjBkZWYwMTAxZGUyNjllMWFkYWRkNDllMWJlZDAxMDNjNDIxNmEyIGxlZ2FjeS10cnVuaworNjI0MTggZjNjZjEyYmQxMTEyODQ2ZDBhYTQxNTEyZDA4OWJlMzA3NDBlMTA3YSBsZWdhY3ktdHJ1bmsKKzYyNDE5IDczNzMyZDY2ZDBkNWY3YjU3MzUzMjU2ZmFmOTdhOWUwYmE3NDI3MDcgbGVnYWN5LXRydW5rCis2MjQyMCBjNzhjZmUyMTI2ZGExODQ2MTM2ODZjMTZlNWQ3MjA0ZGFkNTkxOTU2IGxlZ2FjeS10cnVuaworNjI0MjEgNjBmNDQ1NmZhMzM4M2UwNzgzYzE0MTQ1MWUyZjM2YjcwNmIzMWUzNCBsZWdhY3ktdHJ1bmsKKzYyNDIyIDYzOTY1MzI3YjNlZjY1ZjFiYzc5ZjE5ZDE4NDE3YzkyMDc5Mzk3MjAgcHkzaworNjI0MjMgNjMyM2JkYzJkNjcxMWZiZjJhZDVjY2Q3MWNmZWVjOTRlZDFiNzdlZSBsZWdhY3ktdHJ1bmsKKzYyNDI0IDAyMjI5NjAzMmQ4ZjY5NjRhMGZkNWMyMTM2NmU3OWQxZGNkY2IyMGIgbGVnYWN5LXRydW5rCis2MjQyNSBmZGQ1YTAxOTg3NjlkMzA3NWE5MzZlOGU4M2E3MjEyYzljYzYzZmMzIGxlZ2FjeS10cnVuaworNjI0MjYgMDUyZmQ4ZjFjYTM3MWM2ODczMzgxMDFlNjU5ODQ1Y2FiOGNhZTZmNCBsZWdhY3ktdHJ1bmsKKzYyNDI3IDQwNmVjYTJkZGJiYzRmODlmNmZhYWMzYjM0NDdkMjdhZDM4OWMwYTkgbGVnYWN5LXRydW5rCis2MjQyOCBkZjEzY2NhYTVhZTk3YzAxZDg2Nzk3NTQ4ODUxOWRkODg0MDYwMmNlIGxlZ2FjeS10cnVuaworNjI0MjkgNjA3NzYwNjMzOWJiOWZkMDIyMDk5NzBlYWRlZTg2YTY0Y2U4MzUyOCBsZWdhY3ktdHJ1bmsKKzYyNDMwIGQzYWY5ZmQxY2ZhZmY2NzY4NjVlYjhjNmE0NTU3YTNhZDhkMmM4YjUgcHkzaworNjI0MzEgZDBiOGE5MGNhMjcwOWY1ZmU5M2IwODhhOTg0OTJmMmZiZDZkZGI4MyBsZWdhY3ktdHJ1bmsKKzYyNDMyIGJiMGY1OGFkYzkxY2UwNzIwZjA5MzZkNTljZWJlM2FhMWQwOTVjMjIgcHkzaworNjI0MzMgZWM0ODQ5MGI5NjlhYmRlYjM4YjA2ZTI0OTkyZDExZTY1ZjFkNGVhYyBweTNrCis2MjQzNCAzODc0OWMwOWM1NTYzNTAxZDA1MTE4ZmZkMzUxYmFjZDczMmIyOWMzIGxlZ2FjeS10cnVuaworNjI0MzUgYWU1NTRlNWQ2ZTA2ZGIzMGZhNTY5M2FiYzdiYjRkOTczNDMwMTMyNCBsZWdhY3ktdHJ1bmsKKzYyNDM2IGY1MTk1M2NjZTZhYjE5YzYzMjM2MDc0YmM0YTI4MzkzZWU1YjJhMjAgbGVnYWN5LXRydW5rCis2MjQzNyA5OGUwNzJmMjJjNGYzZDYyOGYxMTY0OGMwYjczZTQ5MzgwYzM1M2RkIHB5M2sKKzYyNDQxIDFhY2QwMGYyYTM4MDdjYmE2MDFkODViNzg5YmU1ZmUyY2QxYjQ2MzEgbGVnYWN5LXRydW5rCis2MjQ0NCBiN2RmMzBhYzViNWEyNjA4ODc1ZjE0MzU5NzgyOWNkMDM0MTRmMDAzIGxlZ2FjeS10cnVuaworNjI0NDYgMDQ5Mjg0NzBhZDg2MDlhOTg0NzNkMjEyZGFiODlhYWZhZGY0Mjg0NiBsZWdhY3ktdHJ1bmsKKzYyNDQ3IGJhZTJmNGZlZWZjY2NhY2FhZGExNTlkMGEyOTY5NWYxZjZlMDAxNWUgbGVnYWN5LXRydW5rCis2MjQ0OCBjNDRiOGNhM2Y0ZDI5NThjYTg2YmYyM2JhNzI3ZDBiNWY5YzNmZmEwIGxlZ2FjeS10cnVuaworNjI0NDkgYjEyNTgzNjQzMTI4ZWFjZjg1NDc0ODdhMzUzM2IzMzlkMGMzZjIzMCByZWxlYXNlMjUtbWFpbnQKKzYyNDUwIDQzNGJjY2VjYTdkZjA4OTBlNDJlMmM3NjJiMTE4MDlhYjgxNGYxMGYgbGVnYWN5LXRydW5rCis2MjQ1MSAxMDhmZTU3YjlhNjhlMWU5NzhmOGRmYTc2MTk5YWIyYzA0YjgwZGVkIGxlZ2FjeS10cnVuaworNjI0NTIgMmYwMDY1NDQ4ODgzYWJjNTlmNWEyZmZlNTkyNDQ3N2NhOTg4ZTUzZCBsZWdhY3ktdHJ1bmsKKzYyNDUzIDA5NDFkNzllYTdkNmVmYjYzZTBkZDI1NzdjNTJhY2NlYWRmN2U4MzcgbGVnYWN5LXRydW5rCis2MjQ1NCA4OGE4ZGVmNTgwMDc3N2FlMWQ3N2UwYjIzNGEzNzliNDY3ZjIzNGNiIGxlZ2FjeS10cnVuaworNjI0NTUgNjQyZDU3MTIwOTNiODBiMDhlNGJkMjA4ZmFhZThmMmIxOTA0ODQ1NiBsZWdhY3ktdHJ1bmsKKzYyNDU2IDY2Yjc5OTMwNjhiZGEzMWVlNzIzOTEyY2NiNjNmNzg2MjgzZDk4NzIgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDU3IGZiM2NiMDQxOTVlMGY4MjJiMDczZGY3NTVjYWJjZDY5MmQ0ODFiZTYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDU4IDE0NDAzYTU0MjU4ZmM0ZTg5NTk1ZjZjM2RlMWFhYzE4MDIwZTlhZDEgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDU5IDBjNTgyNGIwMDI2MzNiYTQ2MTU4MDMyNjI3NWU0ZDNiOWM0NmI4YmQgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDYwIGQ3ZmVmYjM1ZTk5M2ZmYzk0NzQyYjA5ZDlhN2U4NzYzMWU3YjAwZTEgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDYyIGMwY2RhY2YwN2Y1NDBkOTJjOGVjMDNkYjI5OGQ5OWJlYzJiZTlhN2QgcHkzaworNjI0NjMgZmVkNzJmYTk2N2JmNWE0YTMxZDY3MjZhMDhmYTg0NWYzMzRmM2RmMyBsZWdhY3ktdHJ1bmsKKzYyNDY0IGE3NDY1NDM1MjM2NmVmMzg0ZjgxMTgzMjQxNTQwNGJiNTg0Njg5NzIgcmVsZWFzZTI1LW1haW50Cis2MjQ2NSA5OGRjYWQ5MDkyYTg4OWVmNDdhOTE0ZjNkNTkyNDRkZmE2MmVhMjM3IGxlZ2FjeS10cnVuaworNjI0NjYgYzlkZTY3MDViZDExMjk3NWE1YTJhYjI0YTliODllMzhlZWQ4YzMxMSBsZWdhY3ktdHJ1bmsKKzYyNDY3IDJlMWVhNjFjOTRjYzdmMTcyOGU4OWUyYWJmM2YxN2M3OGJjYTU5MmUgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDY4IGVkMjY3YzY5ODliNmNjYjQ2YzU1ODhjYWE3NTI3MjY5NzI5OTA3ZWMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDY5IDNjNmEyNWU0ZGJiNWYwZjk2M2JiMWE2OTg4Y2ZhMmM1MjJmNmI3OTYgbGVnYWN5LXRydW5rCis2MjQ3MSAwN2NmMjg0ODBhZDFlYzgzNjJhYzUwMmQ5OWQwZDEwZTM3MTg2YTZlIHB5M2sKKzYyNDcyIDNlOWI0ZmE5M2U1YzQyOTFjNmYyODViZTBiZDFlNzA0ZTExNmJkNGYgcHkzaworNjI0NzQgNjIxYTJlYWNjMjdjNDg5OTNjNjIyODNkMGFjNjNlNzBmZWExZDcyZCBsZWdhY3ktdHJ1bmsKKzYyNDc2IDVlNjM2YzlkNjFhZTU3NWNkNmE0NWU4MTUzNDQ0NzMzY2Q4MTVhZjQgbGVnYWN5LXRydW5rCis2MjQ3NyBhMDIyNTYwMGJmZjE0OTY4OGE1YjBlMmI1MmY3OWY1NDMxNTZlNTNmIGxlZ2FjeS10cnVuaworNjI0NzggM2U4YTAzYTY0OTdlMTcxNDFkM2Q2YmJmMTY0NjkxNWFlZTYxZTg5MiBsZWdhY3ktdHJ1bmsKKzYyNDgwIDQ1OTA4M2M2YmUxNTNlYmI1ZmRhNmEwMzZmY2I2ZWJjNDU3MDg5OTAgbGVnYWN5LXRydW5rCis2MjQ4MSA0ZmY4ZGZhZWMzZmM2ZGI5NDNjNzljZTYzY2I0ZjRmOGFiNzJmZDZhIGxlZ2FjeS10cnVuaworNjI0ODIgYTUxYjMyOTI0NWIxNDRkYWJmOGFkODEzZGE2OTRhYzIxNTlmYTYwNCBweTNrCis2MjQ4MyA4NWQ0NjcxNTY1Yzg3NDljZDViZmQzOGI1Y2VkNjhiN2YwYjVjYmM1IHB5M2sKKzYyNDg0IDkwZTIxNDZjYjhhMzA4YTMwMTJlNzM4MDE1N2NhYzExODI5NGFhMzUgcHkzaworNjI0ODUgOTU5NDdmZGY0MGFlNDhhZWQwZmVmYTM4ZDRhZmE0ZTBkZTgyNTJmZSBsZWdhY3ktdHJ1bmsKKzYyNDg2IGQxZmI0OWFlYzc2NTEwNDRjOWU4MGU2MjAwYzQ0MDU4M2JiNTRiZmUgbGVnYWN5LXRydW5rCis2MjQ4NyA4ODY0ZGZhOTljNzYwMmNlOGYyOTkxYWE1NWE1MDUyMGQ1ODFjMTM5IGxlZ2FjeS10cnVuaworNjI0ODggMzUxMTliMDM2ODZkMmQ0OWYzMWM0NDIzMzhiMTljZDA4MWE5NzE4NiBweTNrCis2MjQ4OSAxY2YzYjM0ZGY2YzYwZWMwZDA0MDgxODdhNjY4MTJmMGQyOGQ4OTNhIHB5M2sKKzYyNDkwIDY2YzhiZDFiZWRmMzIzMmRmMGU0YTJkMmI5ZjAwZTEzYzg0ZDA2NTMgbGVnYWN5LXRydW5rCis2MjQ5MSA4YjcxOGZjMTVmM2Q2YjUyMzE2MmFkMmU4MDVmNDIxYzJhMDUzOWRiIHB5M2sKKzYyNDkyIDViYTZjYmJjYWVlNzM2NDUzYzlhYmUxYjlhMDljYzhiYzJkNDg2MDcgbGVnYWN5LXRydW5rCis2MjQ5NyAwNGJkNzZlOTIwNjU0MzJmZTNmOTdmMzM0OTI4MWU1NzNjOTFkZWViIGxlZ2FjeS10cnVuaworNjI0OTggNjg5ODYzNTUyMzgwNzMxZmY0N2JhOTMyYmQyODI2NTEyY2IwZjIzNyBsZWdhY3ktdHJ1bmsKKzYyNDk5IGNlNjIwY2M5YTZhODY5NDlkMjNkODViMmM5NTA4MmI2NGYxM2E2ZTkgbGVnYWN5LXRydW5rCis2MjUwMCA5ZTA1ZjE1ZjkyMWIwMTBjZGY1MDljZDA0Y2Y3NWM5ZWJiNDZhNzE2IGxlZ2FjeS10cnVuaworNjI1MDQgMGM3Y2E0NzFmYjhkNzc4YmNiMzU3YjkxZGNiMjU1M2RmM2NiY2Y3OCByZWxlYXNlMjUtbWFpbnQKKzYyNTA1IGM3MzgyODA2MjAzMTMwYmE0MTEzNDQ1MzgwNzkyM2YyYTc3ZTViYTcgcHkzaworNjI1MDYgMmEzMWJjMjhjMTBmZmYwYWQ4MzYzM2Q2NmZmM2I3MWM1ZTYwYmNiNyBweTNrCis2MjUwNyAwZTExODViZmEzMTM0Y2QyNDAxZTUwOTYwNjVmMDRmZDEzOTc4MDdmIGxlZ2FjeS10cnVuaworNjI1MDggMGNmYzg0NWI4NTJkODI0YTFkZTllM2YwZTBmODVhMWM2NmJhM2JlOSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI1MTEgNTIzODMyN2Y0NWJkNDA0MmM3NmI1ZDRiOGNkY2NhZjhkZmY5NDExNSBsZWdhY3ktdHJ1bmsKKzYyNTEyIGZmZWVjYmViZjNjYTdjZTc2YjBmODhhNWQ3NjAwOTJmZGZjZjNiMzMgcHkzaworNjI1MTMgZWIyNzQ2ZThiOTgzMzBkZTFiMTAyZjFmYWYxMzg1M2I5NWVmZGFjOCBsZWdhY3ktdHJ1bmsKKzYyNTE0IGFkMzQxNzUwMzYzNmNmN2VlNTcxMDkyYjNiZmJlYWM0NDhkODkzNjkgbGVnYWN5LXRydW5rCis2MjUxNSAzNjFkNzc2ZDM4MGViOTQyNzNjNGY0M2VmNTk1Y2E2Yjc1NDA5OWJlIHB5M2sKKzYyNTE2IDQ3MjMzYTE3ZTk3MDc5NzRlYWVmNDg4MzRjMDFkMzI2NTgxYmI5NzkgbGVnYWN5LXRydW5rCis2MjUxNyBkNThlYzM4ZTZkYjFhOTU4YjI4YTUzZmZjZmMzMmEwMWU5YmIzNTUxIGxlZ2FjeS10cnVuaworNjI1MTggYWVmMzUwMWQ4ZTc3NmU2OTA3ODQyZDA0MjA5NTFhYTJjYjgzZTEzZCBsZWdhY3ktdHJ1bmsKKzYyNTE5IDA2ZTY3Y2IyMjE1ODA4NmEwNGI5NDM0ZTA3MDY4N2VkN2EyNjk5NWQgcHkzaworNjI1MjEgZGFkODhjYjZlZjFmZGQ1OTUzYmU5NmJmODE3MzIwYTU2NDNkZGJmNSBsZWdhY3ktdHJ1bmsKKzYyNTIzIGVkYjNjM2Q2NjAwNjdlYWU1OTI4MjAzMjZiYjcwYjQ2OWY3ODgyOTUgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNTI1IGM1ODk1Yjk4MWQ4ZjBmNGRiYjBjYmM3Y2MyNGQ2NGNiNzlkM2E5OGYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNTMxIDZiN2M5MWQ5ZGM1MTFiZjE1OGIxNWM5ODQyMjNmYjZhNzM2NjVmMDIgbGVnYWN5LXRydW5rCis2MjUzNSBmMzY1YTAxOGFmNWI2OTQ2OTUwNjcyNTgxNTI0NjVmNWUyYmRkYzMxIGxlZ2FjeS10cnVuaworNjI1MzYgNzY3MDAwNWRhOGM1NjhiZWIzYmU0NjE0ZDE3YTRmYjg5MjRkZGIxNCBsZWdhY3ktdHJ1bmsKKzYyNTM3IGQ3ZDU2NzJmNWQ1ZTA1MGJiYzNkZTZlYTBmNmY2MDYxMzhhNWQzZTcgcHkzaworNjI1NDAgMDZhYTgwMmJmY2IxOGM1YjAxOWUyZjY1MTQzOTFiNjU0ODQ1MTc1MCBsZWdhY3ktdHJ1bmsKKzYyNTQ1IDNkOWRkY2UyZGE4NTIwNDc3MGNhYjc1N2Y5ZmEzMjY0NzIzNmM1MTYgbGVnYWN5LXRydW5rCis2MjU0NiBlYmM0MGU1MDA4Njk4YTU2ZDE3MTM0Yjg0NTY0ZDIzMTc2YjUzMjU0IGxlZ2FjeS10cnVuaworNjI1NDggMThlOWEzNzJhN2EzYTBjYzc5NTBmMDEyNjc5NWI4YTg4ZTQ0ODZjOCBsZWdhY3ktdHJ1bmsKKzYyNTQ5IDg0ZGYwODJkZDIxNjc4MzU4MTU4YTFkY2QwNWY5YjZkZWVjZWExYjAgbGVnYWN5LXRydW5rCis2MjU1MCA1OWRiNTc1YWUzNzQ2MjU2NWY0N2Q2YTQ1YTI1MDMzNTVhMGEzNTFmIGxlZ2FjeS10cnVuaworNjI1NTEgYzVkYzA1Y2QzODU4OWJjMzBhN2JkZmNhNmVkYWRjZDM3YjZkMTczZSBsZWdhY3ktdHJ1bmsKKzYyNTUzIDU3NmZhMjQ0MGEwYzhkOGY4ODlkM2FmYTU3NmZmMDc1Yjc0NjJiMDQgbGVnYWN5LXRydW5rCis2MjU1NCBkMmJiNWYxMzE4NzM4YjAwNjQ3NWZhN2RmMTNiYzgzYTU2ZWE5MjJjIGxlZ2FjeS10cnVuaworNjI1NTUgMDdhNGUxNzEwMjYyOTljZjI3YThmMGEyMzRkOWE1MWM3YThkYmQwMiBsZWdhY3ktdHJ1bmsKKzYyNTU2IGE1MTdlY2NjNzgzYjllMGM4MWEwNGU5ODA3OTlkZGQwZWRkMThkYTYgbGVnYWN5LXRydW5rCis2MjU1NyAxZWE0ZDFiMThhZWQ1OGQ0YjViM2RhOGQwNzA1Mjg0YTQzZGVjMDNjIGxlZ2FjeS10cnVuaworNjI1NTggNGU0NzU0OGVkZDM2NmQyYjExNmJmM2YxYmRkZmE5MWEwNGY1MjM0YiBsZWdhY3ktdHJ1bmsKKzYyNTU5IGZlZjZkNmJhNzhhNDAxN2E4ZDA3ZmUzNDk3NGMzOGMzNjBmOTFkN2IgbGVnYWN5LXRydW5rCis2MjU2OCBjMzRmMGU2MDlmYTZhZTQzMGRkMWM2ZDM2NDFlMzU2OGI0OTc0ZTc2IHB5M2sKKzYyNTY5IDhkM2FkOGFmNjkyYjVhMzRlZmZjODEzNzQwNzg1YTEwNzdiMTFlY2YgbGVnYWN5LXRydW5rCis2MjU3NCA2ZmVhZDRjZjc5MTExZGIwZmRmY2M3YmYzNGYyYWMzZjdjNjBiN2U4IGxlZ2FjeS10cnVuaworNjI1NzcgN2Y2MGIzMzdiMDQ5MmQ0ZmU3ZTE3Yjg5YjcxZjMwNmE2MjIwNWU3MyBsZWdhY3ktdHJ1bmsKKzYyNTgwIDAxNTRkZjI1MGVmNmI1MDk0YTU1ZWYyMGQ1YTNmMWNjM2ZjZjdkZTYgcHkzaworNjI1ODMgZTQyZDM5Nzc4ZWFkOWNjYjQ1ODc1YmIzNmYzOGZkMGRhYzc2NDgzOSBweTNrCis2MjU4NiAzN2Q2NDViMDE1MjMxNmU0MWIxMTg0MDI5ZDM2YmE2ZWY2YjNiYjAwIGxlZ2FjeS10cnVuaworNjI1ODcgN2I0MDgxYmVjNzgzNzg5Zjg2NzA3N2NhNzZhODlhY2M3ZWFiOTdiYSBweTNrCis2MjU4OSBjYmEyODFiMTZhODI0NWUxNTZmYzFmOWIzODEzYjdiNDg5ODJiNmQ3IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYyNTkwIGVmNDIxYTM2NWExZDRjNzAzMTIxZTdjNTFiODE5ZTA1Njc0MzU2ZTAgcHkzay1jdHlwZXMtcGVwMzExOAorNjI1OTIgZDZjNmYzNjZiMjIwNjJmZDNkZWYyYjQyYzFmMTU0NzE3YWNjMTY0NiBweTNrCis2MjU5MyA4ZjVjNzU5ZTAxOWM2NmNiZDBhMzQ1NzllN2Q2OGUwMDcyNjU3ZjRjIGxlZ2FjeS10cnVuaworNjI1OTUgM2QwZDNhNjgwODk2Y2RjZTc2NzkxNjFkNDIxY2IyMWZjODMxZDQ1MSBsZWdhY3ktdHJ1bmsKKzYyNTk3IDk0OGJlYTk2ZGQyMDFiMzIwYjZhOGViYjdmYjA2NGYwOGIzZDc0NDEgcHkzaworNjI1OTggYWYwZWYwNDQwMWJiMmU3OWI2NGY5Mjk1OTkyNjhmNWE2ZmY5MmIzMCBweTNrCis2MjU5OSA3YTZkNzQ3NGNlNmUwOGIwN2NiNmE1M2FkOGY3M2VjYjczMDE1MDdlIGxlZ2FjeS10cnVuaworNjI2MDAgYjEwMTU1NmI5OGVhZTYwOTllOTZkYTMzYWJhOGViZjk3NDNhZDIxZCBweTNrCis2MjYwMiAwMWJlMWM4ZjAwNmJkZDU2MzcxYWIwODk1NGQ5MDlhZTIzNWExNTE0IGxlZ2FjeS10cnVuaworNjI2MDMgMDE0NTM1NzE5NjY4ODVjM2Y0ZjdlZDY3M2JhMWFkY2ExZGY0NWJhNSBweTNrCis2MjYwNCAzMDM2ZTIxYWM2NjFkZGEwMTNlNjc3NzJkOWEzOWQ5N2EwMjg2MDE0IGxlZ2FjeS10cnVuaworNjI2MDUgMTQyMzgzNGI3MmQ4ZDhkMjZlMTczM2I4Nzc2YzEzMmYyZmJhNjIzMyBsZWdhY3ktdHJ1bmsKKzYyNjA2IDY4Y2ZjNTFlNDMzMWVmZTFiNzdlYmI1YjUxMThhOTJmNzQ3NjExYWYgbGVnYWN5LXRydW5rCis2MjYwOCA2NWFjYzU1ZjFhNjkwZmE0MDZmNzBkNzZmNzM2YjkwMjIzNDkzODQ2IGxlZ2FjeS10cnVuaworNjI2MTAgYTQwZDdlNjA1ZjllMTE3YTY2MTc4ZmY0N2E5N2FjMmI1YzhkNmQ2NCBweTNrCis2MjYxMSAzZjIxMTdkMzI3MWY3YzBmNjBkNDVkNzEyYWEzODljZjM5MzFjZWEzIHB5M2sKKzYyNjEyIGU0MmZlMTliYTZmZGYzN2U4ZjI2ZmE5OGQzMzQ0YTJiZmQzZDUzMDkgcHkzaworNjI2MTUgODdkMzEzN2MzMWQ0MzYxMDJkZjc2ZDBjYTMyYTNjZTlhNTIzMTQ3MSBweTNrCis2MjYxNiAzMzE1ZjZiNDQ0MDMwYjg3ODdiY2VhNDNkNjY1MDZjNDk5ODI1ZTIyIGxlZ2FjeS10cnVuaworNjI2MjAgNTZmODFlYTljYjc5NTBkNGU2MmQ1ZTc5NzllNmY5MThiODk4MjgzOCBweTNrCis2MjYyNCA4MGJkNGJhYTYzOTgxOTIwMzY1YTcyNTQ1NzMzNzQ0MDllNDk2NDVmIHB5M2sKKzYyNjI2IGVhMWE5Y2Y3MzVhNTY5NDU0MzM2OGQ4NDE3YzUyMTk4YTc3YTgwMDkgbGVnYWN5LXRydW5rCis2MjYyNyA1NDYwNmVhOWY0YzdiOTMzODQyZWJkNzBkMDUwZGMzZTNjZGEwYTRkIGxlZ2FjeS10cnVuaworNjI2MzYgMGJhMTJjMzJlMmI1Njk1OTAwODVlMjAxMGM5ZWUyZWQwYTYwNDZlNCBsZWdhY3ktdHJ1bmsKKzYyNjM4IGM0ZDkwZmE5MzVlYWE0MTMwNWYxOTQxYjU0ZmZiYjVlMDRhYzc4ZjQgbGVnYWN5LXRydW5rCis2MjY0NCBhMWM2ZjJhYjU5N2UwMzc5NjIxNDVhYjA4ZGQyMTVjNmZjMGRjYjVkIGxlZ2FjeS10cnVuaworNjI2NDUgMjBiNzA3ODY2NDU5YWRhNzRhMDYzOTA4YjhiY2FkOTZiZGRmMGQ0ZiBsZWdhY3ktdHJ1bmsKKzYyNjQ3IDFmZmVjMmE2ODdlOTU5NmY0OGFiYWEzOGYzMDM0YzllYzY3MzFiOTkgbGVnYWN5LXRydW5rCis2MjY0OCAzZjg0ZTZhZTM2ZGFkMjllMDkwYTRiNDc0NmEwM2JkNDhjYjI2NjdlIGxlZ2FjeS10cnVuaworNjI2NDkgYjU1YzU1NjdjYzc2NzMzZjQxZGMxMTk2ZWI1NTUxZjVlZTlkYmQxMCByZWxlYXNlMjUtbWFpbnQKKzYyNjUwIGViOWRhYjk1NmE2ZWI4YjgwZTVhZDRhZmRjMjMzODYzZTFkNmQ5YTQgcmVsZWFzZTI1LW1haW50Cis2MjY1MSA4MDYzNTQ4OWU4ZDgzMTQ0YjRjMDlkN2Y5NDRkMjQyZTQ3MWMyNTVhIGxlZ2FjeS10cnVuaworNjI2NTIgNmQ5NDk3NTk3YzRmM2ZlZmI0YzE4YTZjNTEzYjc3MjkyNWMyYjQ4NiBsZWdhY3ktdHJ1bmsKKzYyNjUzIGNjNjYwMjlkMmVmZTU5MzlhYmMyNjQ0OTQxNTU3YmMzYmU4NzIyZDcgbGVnYWN5LXRydW5rCis2MjY1NCBmZDI3YWM1ZmNjODE4MDhlOWFmZDkxZTZhZDc2NmIzZGRlNjgxYWRlIHB5M2sKKzYyNjU1IDAzMmEwYTBkM2ZhOTYwNmNmZTE4NzFkOWJmZjZhMjEyZTZhZGJjNTQgcHkzaworNjI2NTYgYTg1OWY4MzVlZjUzZGE4YTI2MWY3MjgwMTcxNzJlZGY4NWFkMDE5OSBsZWdhY3ktdHJ1bmsKKzYyNjU3IDBmZGVmMTQ5ODFhOGUzYmIwYTFjMmQwNDg3ZjUyYzdiM2I3NWE1ZTUgcHkzaworNjI2NTggYmQ5MTAwMGM4ZTczZGM3NzZhZjhiNmM2NzRkZjJjOGE5ZGY3NWY3MyBweTNrCis2MjY1OSAzZDQzNzc1MjE3MGI1MmRjMDQxNzgxMTkzODc2Y2UwZTRkYjFhYTZlIHJlbGVhc2UyNS1tYWludAorNjI2NjEgYmZhODJiNDkzMzM1NDA5NzFlNjg5ZjRmZDI3OWZhMjMyMTc5MDBiNSBsZWdhY3ktdHJ1bmsKKzYyNjYzIDBkZWI0YWIwNDI2ZTI4N2Q5NmUwOGMwMjM5NTVhNDgyOTk2Mjc0NDQgbGVnYWN5LXRydW5rCis2MjY2NiBlYzA5YWQ1YmVkMWFjY2ExMGMyY2Q2MWZkNGJiYmFmOTFhZjYyMWY2IGxlZ2FjeS10cnVuaworNjI2NjcgZWE1OTQzMDZlYTg1NDJiOThiZTA2ODYzN2IwNzEyYTc4MzJhMTcyMSBweTNrCis2MjY2OCA2OGIxZDQ0YjVmNzRhNzlmMDM2MDI1N2QzZGM4NzYxNTExYjZhZDQ0IHB5M2sKKzYyNjY5IGVhMzBmMDNiMjRmNDFmODIxNTM3YjZmM2MyZGIwYTA0YzAwZWU1MGMgcHkzaworNjI2NzEgOTQxOGRjNGE3Yjk4NWQ1Y2ZiYmRjYjlkMTVjYmI4ODAyMDY1ZWE3MCBsZWdhY3ktdHJ1bmsKKzYyNjc5IDViYjk0MDY1YjA3OTk5Y2UyZTM0Nzk2NTllN2UzNzA2MTZmNzBhYzIgcHkzaworNjI2ODAgODNjYzA5NjgyMDgxZGMwNDkzZTkyMjNiODUyNzEyZmZjOGE2ZTkzMiBsZWdhY3ktdHJ1bmsKKzYyNjgzIDMzOTBlYjc1OTFmNjEyOGIzZmQ2NjQ4ODY3MjRmNzE5MjljODAwNjYgcHkzaworNjI2ODQgYzk3ZTM2YWJjZGQ1OTU2ZjViMzc4MWRjNjkzM2ZmMzBkNzVjMDVhZiBsZWdhY3ktdHJ1bmsKKzYyNjg1IGFjYjJhOTM5NDI5NmE0NTc1MTQ0MTYxYTMzNWY4NThlYjI0YTlhYjcgcHkzaworNjI2ODYgMTg3MmUxZGMwMzVmYzMyOWI5ZThiOTlmMjNjM2YwN2ViMDRmZGU3ZCBsZWdhY3ktdHJ1bmsKKzYyNjg3IGI3YzY2ZDNlMmUyOGRiMDJkNmNjN2E3NzhlYmQ2NzNjYjJjZDYxZTIgbGVnYWN5LXRydW5rCis2MjY5NiBhOTRiOWRiOTIyM2ZjZDIwZDA0OTBlNTc1ZDNmNDE1ZTM3NzQ3YzQzIGxlZ2FjeS10cnVuaworNjI2OTggYWFhMGFiNDkwMTI2ZTAyZjE4NDA1NWNmYzI4MDQ3ZDA3M2IzNmMzNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI2OTkgZGU3NmJlMDJkYjQyNWIzZTZhNGY2MGI3MWY4NjE5ZmViYTliYmM4ZSBsZWdhY3ktdHJ1bmsKKzYyNzAwIDZkYjM5MmFjOWY0ZWIxNDJiNGI3ZGU3NDY0ZjQxZWRmNDYxMDMyODAgbGVnYWN5LXRydW5rCis2MjcwMSBiOTNhMDQxY2MyMjEzZTU4OWQ0MmE0ZTRhNzcyMmRhNGVhYWZkYjE5IGxlZ2FjeS10cnVuaworNjI3MDIgMjhiMDk5YWM0Y2Q4ZjdiOGM3NTFlNmQ0MzRiZDRjZjM4MjI3M2IzNiBsZWdhY3ktdHJ1bmsKKzYyNzAzIDZjNGVmZTUyZDU5NGQzZmY0ZmEwMWZhYmQyODc2OTgxZGQ1MWFmMDMgbGVnYWN5LXRydW5rCis2MjcwNiBjMDdmMTlhZjU1NGE5ZjYzMGQ3ZWJmYzE5NTAyZDlmNjRhYmQxZTMzIHRsZWUtYXN0LW9wdGltaXplCis2MjcwNyAyZTQ2MzQ0MmU1NzA2MDRjOTVkYThjYjQzZjY5OTk3MDQ5MDQ2YTBjIHRsZWUtYXN0LW9wdGltaXplCis2MjcxMSBmZTMwMGE5NzJmYjhkZjI4NzUwNDc1Njk1OGQwMjliNWFlZjhlODYzIGxlZ2FjeS10cnVuaworNjI3MTMgNzE3MmUxMWU5ZmM4YzY3NmRjZjYzZmZkOTk1NWY1ZDIwMjU5OWI1YSBsZWdhY3ktdHJ1bmsKKzYyNzE1IDY0MzQxNWY5MWE1MGM5MmZmOTM1Nzg5OTJmYThhNjg1MTlkN2U5MGQgbGVnYWN5LXRydW5rCis2MjcxNiAwMzFkZmU0NTU1ODVjY2RkMDc4OTdiOGU2ZDAwNGY3OWNhNDI2NzlhIHB5M2sKKzYyNzE3IGM3YzI1Y2M5OTYzZGQzMzI3ODM4YTUzOTU1ZWE4OWYyNDJlZDUzNzcgcHkzaworNjI3MTggMDVhODE3ZTI1ZjIwZDQyY2M3MGFhNmJlNmNkNzQ2NTJkMmUzNzVhMyBweTNrCis2MjcyMCBkOTA3MWZhODI0NGFmMzQzMzY2OWE3YzcwOTBlNmE1NzY2MDdhZWJmIGxlZ2FjeS10cnVuaworNjI3MjEgOGE5YjhiM2NlMmUxMjIyNTAzNzExMGMwNjk1ZGEwMTQxN2M4MWE1ZiBweTNrCis2MjcyMiA5YjEwYmY2NGYxMjQzMjE2YjYzMDcxMWM1YTgyOGMzOWMwODU4MDRhIGxlZ2FjeS10cnVuaworNjI3MjMgNGM5MGJlOGE0ZDM4MjdkZTRhNDMyNWE0ZGZhOWYxNDhlMmNmMTczYyBweTNrCis2MjcyNCA4ZTMzZjMxNmNlMTQwZGE5NzU4NjNlYTRlOTVkY2Q4YTBiNTQyMWZlIGxlZ2FjeS10cnVuaworNjI3MjUgMTVmMWQyMzJlYWU5MTM4NTdiODI0ZTg3MWExZDNlOTc2MmRiZTJkYyBweTNrCis2MjcyNiAxMGU4ZWY5NWIxMWY5ZGI2MTg0ZTU1NDA5MWZiOGVmNTM5NzFmY2MxIGxlZ2FjeS10cnVuaworNjI3MjcgODZmNzM4MzhhNGJiNzE1MDFmMDM4ZTM5NDRjNWVhNzM2OWI4ODU5OCBweTNrCis2MjcyOCA1NWJmOGQ2OTBlNjdhZjQ2MGJjYThlNWU1M2E0NjU3NGIyODliNzdhIGxlZ2FjeS10cnVuaworNjI3MzQgNGRlZDM1NzU0Y2I3MjFmNDk2MTIyMDhhMGViODg1MTkwMWZhZGQzMCBsZWdhY3ktdHJ1bmsKKzYyNzM2IDM0YTUzODBlZTI3NWFlMGNhMTcxNzE1YTY3ZmZhZTBmZTA1YWQyZmYgbGVnYWN5LXRydW5rCis2MjczNyA4OGEwOTgwNGJiYTM5NDMxNWZlOGEzNTNiNDA3MDVjZTc3ZjljODNiIGxlZ2FjeS10cnVuaworNjI3MzggYjc0YTNmOTQ2YTVlNjc4MTJlOWIwMmY0OTIzODAyODBkMTAwZjk3YSBweTNrCis2MjczOSBkYWMyMTg0M2NmNTM1MTRjNTdmODRlOTlmZmJiODNkZGVlNmYzZDcyIHB5M2sKKzYyNzQwIGUxOWY4N2E5ODc4YzI4OGQzZThjOWUyZDgxMDM3N2MxMzY2MWM4MDggbGVnYWN5LXRydW5rCis2Mjc0MSA5MWQ1ZjA4NDE3MDAwNjgxOTI2NWIxZDEyYTBlMjZlNjNkMGQwNDkwIHB5M2sKKzYyNzQyIGYyYTRkOGQ0ZjA2MzRjZGIyYzY5OGY1ZWE3NDc3N2RjZjhhYzcwODcgcHkzaworNjI3NDQgMjcyOWU5NzdmZGQ5ZWE3ZTNlZGFjNTMzMWI2OGYzZjc4MjYxYjU1NSBsZWdhY3ktdHJ1bmsKKzYyNzQ4IDcxMDZjYTg3MWJmZDFiNjc1Y2Y2ZWJjMjFjYWMwMDA5NTI0NjJiNzMgbGVnYWN5LXRydW5rCis2Mjc0OSAyZjM1MWZhNTNhNmIzZjBlYWZlODg4NmI5NGUwZGQ3MzY4YTQ1ZTQ2IGxlZ2FjeS10cnVuaworNjI3NTYgNWFlOGQ1NGQwOTUyOGY2NTU2MTgxZDVlYmZhYWM3MTE3N2YyMDJlZSBsZWdhY3ktdHJ1bmsKKzYyNzU3IDExZWQ0MDVkOTljYjg2ZjNiNWExNzg1ODVlNjlmMzJlOTQ0NWJhNzAgcmVsZWFzZTI1LW1haW50Cis2Mjc2NCAxZThiOGRmNGRmODMxNTNkZGFiMjc4NzY5OWNlYjZhOTZlYjBmMThjIHB5M2sKKzYyNzY1IGM4MmY2M2VmYmM0MDgzMWI0OWNiYmZiYzgzMjFhYmVkMTY3Nzc3ODUgcHkzaworNjI3NjkgYjBmYjU1ZWNlODlmYzNlY2NjYzU0YmNjZTU3NDQwMGY1YTI4MWFlOSBsZWdhY3ktdHJ1bmsKKzYyNzc0IGY4NDY4YmZkNDM1NzYwNGNmNDk5OGI5ODhjNDM0MGViN2NmNzVlNGQgbGVnYWN5LXRydW5rCis2Mjc3NSBkZGQ1ZjQyMzMyYjk4NTYzMjU3NmM3ODJlYmI1MmU2ZTRmM2U4ZjM1IGxlZ2FjeS10cnVuaworNjI3NzggY2RhODE2YzNhMWU0NmJlM2FmMmViN2Q4Y2UyOTJkZTgyOGQxZjM0ZCBweTNrCis2Mjc3OSAwMmE4MTQyZDgzZGIyODM3MzdmNTFmN2Y5OTUyNzA5NDE3OTUxZjU4IHB5M2sKKzYyNzg1IDkxMzBiNDhhNzEzMGUxNWE0OWM0ZTEyODQyNmJmZjE2MTRkZWJkOTQgbGVnYWN5LXRydW5rCis2Mjc4NyA0YjE5YjQxZWY2MDY0YzUzMDVjYWNiNzdhNWNiYWRmOGJjOGJmNmFiIGxlZ2FjeS10cnVuaworNjI3ODggMWEyZGJjODRiZGZjZjBhOGM0YzZkZTBiMDdkYjQ0ZWI2YmY3ZTMxZSBsZWdhY3ktdHJ1bmsKKzYyNzkwIGY0MDY0YjVjOGM1ZDJkZjRhMGRhNmYyZjUwNDJiNmVmOTFhYzE4ZmYgcHkzaworNjI3OTEgOTExYzg3ZjhlZDVlNTczYTZlMGY4NTRiMzczNzkzZDE1YmIwNjBiYSBweTNrCis2Mjc5MiAwYzJlNGI1NWY4MGI5N2I1NmQ3MWQwMzRkMTMyOTExZDAyNDE2NmMyIGxlZ2FjeS10cnVuaworNjI3OTMgZmZkYjVmNDEzOWZlN2E4NzJiMmQ3YzBiOGQzZmNmMjFlNmNiMDlkOSBsZWdhY3ktdHJ1bmsKKzYyNzk0IDEwYjEzOWQ4Nzg2MDIxYzA5NWFiMzU5NTNmYjg4YTA1NmNhN2I0ODYgcHkzaworNjI3OTcgY2VlYTQwZGFhODQ5MDc5YjUxNWVmODAyNGY0NDYwNDA4MGFjMTZjYSBsZWdhY3ktdHJ1bmsKKzYyNzk4IDdjODBiYWM3ZDc3NjU2Y2I3MWQ5Y2E2MWNlMTVmYjdlZmM4NDc0ZDIgcHkzaworNjI3OTkgYzhhYTIyMGM2Y2VlZjk1OGFkNWQ4ZDUzMjMxZWYwZTVmNzJhOTY5YSBsZWdhY3ktdHJ1bmsKKzYyODAwIDczN2ExOGIyZGVkMzY1ZjBiYmZjOTEwY2ExOGZkYzI0NmRjNzQ1ZjEgbGVnYWN5LXRydW5rCis2MjgwMSA3NGI5Yzg1MzYxZjg4ZTI1M2I5ZjdiYjQ5ZGZhZTA0NjYxOWI5YWQ3IHB5M2sKKzYyODAyIDc0ODZjMjlmOTNhM2VkZDExMjA2MThjNTQ5ZjZiMDM0YzRlM2Q2NmQgcHkzaworNjI4MDMgMGU1YTk2ZmM5NDIyYjRlMTM4NTUzNzFhNDJiMzkwMjg3M2RkOWZjMSBweTNrCis2MjgwNSA3N2RmOTkxZWE2Mzc5OGY1Yzk1YzM5MWY3ZTRhZDcxNDAyMzg4ZTIwIGxlZ2FjeS10cnVuaworNjI4MDYgZDE5NjUwODhiODVkZDczNzZmMGI3ODY4YWFlY2FmOGJkNDU0MWVjMSBweTNrCis2MjgwNyA4YjkzMWE3OTgyN2E5YjY1ZTAxMzBiN2ZjOWEwNTRjN2Q3NjAwYTZhIHB5M2sKKzYyODA4IDVmYmQ5N2YxYmMzNWUzYzk2ZTNhZmIwYzUyYWJmNGRkZDVjYmExM2EgcHkzaworNjI4MDkgMzhiOTRjMDk3YTU1MjZmNWFiYWMwMTRmNzRiNWY5MGZhZGZjN2UxNCBweTNrCis2MjgxMCBkN2UyMDI5YjNjYTRiZjExMzBjYTM5MWI0NmRhZWI4ZDg3MjYxNjFkIHB5M2sKKzYyODExIGI2MzU0NjJhNTc5OGYwM2U1NTJmMWNjMTAxNTZhYTUzZTAzYTA0MmUgbGVnYWN5LXRydW5rCis2MjgxMiA4MTU0NjQ5YzU1MTY2MjAxZTA5ZDBiNzA0YjRjYWQyZTdlMzk1MTc1IHB5M2sKKzYyODE1IGE5YWNmMThhOGU1NzUxMWM3YmVhODg2NGNhMzllMTg3Y2MwMzUwOTMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODE2IDQzMDdlZWQxZjczYmU5YzRiN2ZiOWM1ZDdkZTMyOTUzODc1ODAzOGYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODE4IGI5YTNhYmY1OWE0NTQ2ZjAwMmQ2NmU0MTgyODAxMTNjNTY5NzkwZTAgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODE5IGE2NGY0MGI2MjE2OTYzMGM2N2ZhZjRjYmNhYmY2NDdlMWM2OTNiMDggdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIwIGJiOTU2ZjRlMzI2ZWM0NjE1NWYxOGY1Y2ViMjA2NWQzMDI2ZmE2MDIgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIxIGM1MzgxNTI2NjM2MGYwNWZmNWExZWEwNjU1YzUzYmI4MWRiYWI0YjYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIyIDRiMDM5ZWRmZWU2YmVlNDkyNjgxZTdkODUyZjUwMzhjMjJkNTdlN2QgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIzIDk3NDdkMTEzNzA4M2NhNTNiNzU2YWZkMGEyMTBjNjY5NjljZGJkNWMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODI1IDY3YmE5M2FkMDBmZGYxYjkxMzU0ZGJhMTE4MzJiMzZjNGJmNjlmMTcgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODI2IDJjNDU1OGRmZjUzZDkwNjRhNzdhMTJiNzIwMDI4OGZiMmY2YWY4OWMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODI3IDQxZThlNzJhYTllZGIxYjBiOTZkMDliODE2ZGQzMjdmYTAyOWZmNDEgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODQxIGVmNDdkZjI1NDIzYzc2YWFjYTQ0MjU0ZGFiMDliNmJiN2M5YWU1ZTQgbGVnYWN5LXRydW5rCis2Mjg0MiA5NTcwYmMxMjgzMTQ0NGEzYjgzMzU0ZjdlOGQ3Nzg1Y2JjMGExZmUwIGxlZ2FjeS10cnVuaworNjI4NDMgYWQ3NzUxYTk1ODA5OGQ3MTNkNmVlODJjZmMxNDA4NmExODEyZjMwMiBweTNrCis2Mjg0NCA4MzFhMzBjZDIzYTI4MjA1MmQ5YjExMmU5NzI4MDg1NWU5NTc5NTExIHB5M2sKKzYyODQ1IGUzNDU5YWQwMTM2ODZjYmVjZTczNjYxZWJmNDhjNjRiNWJkMDM3YTMgcHkzaworNjI4NDYgNmVjNTYwOGI2NjNjMmNmMjgwMzBhNGI3MGNjNDAyZGYzMTMwMjgxMiBweTNrCis2Mjg0NyBhY2Q2ODI3N2M0ZGQwMTI3YTc5ODIxMDM1ODQwM2RmZjViYmQ1NTVlIHB5M2sKKzYyODQ4IDJlZjFjMzgxMTM4ZDU3M2NmZDk0YmZlZTk0YTVmNmIxMWVlZjcyNzcgbGVnYWN5LXRydW5rCis2Mjg0OSAwZTc2YThmMzQ3Njk1YTM3NTBmYjY4MTFkNTVkNmRiYmQ3NzhjYmQ2IGxlZ2FjeS10cnVuaworNjI4NTMgYjEyNGUzMTYxNGVkOTY5MzM2Zjc1ZTFlMjc2YWE1OTM2MDc5MGZiOSBsZWdhY3ktdHJ1bmsKKzYyODU0IGM1NjI0MDJjMWMwODI5OTI2OWJlZjM2ODc1NmM4MjFiOGIxY2JhMWYgbGVnYWN5LXRydW5rCis2Mjg1NSBjNjdjMDk1NTRkMjMwMjA0M2ZiMzc4MDkxY2QwMzI1M2MzM2I3ZTkzIHJlbGVhc2UyNS1tYWludAorNjI4NTYgZTM1OTM1NDc1MTUzMzc3ZDY3MjdkNjRlNmM1MmY3MmMzYjg0MDE1YiBweTNrCis2Mjg1NyA4MTQ4MDY5MjYzYWExZjAyMTBjZGQwZDU4ZjE1OTNmYmFkNGU2ZWY2IHB5M2sKKzYyODU5IGFlZDA0MjM5YTNmYzI1ODUyMDUyZGM0NmYzOTE2ZDYwNWJmZTM2NTEgcHkzaworNjI4NjAgY2VmNWFhM2VkNzEzMzU0OTA0NzI4NjYxODdiNjM5ZmI1YTY2N2ZhOCBweTNrCis2Mjg2MSA0OGU5ZmIwYTcyMTc5OTg3N2YyNmVkYWVmMDFhYzZlNjAyOWI2ODEyIGxlZ2FjeS10cnVuaworNjI4NjIgNmI3OTcwYWEwZGRhMzI3ZjI1YTgzMTUxOTUxZDhhN2I5NjZlYWJjYyBsZWdhY3ktdHJ1bmsKKzYyODYzIDlmNDU5Nzk1NThhOWJjZDgyMTk2ZjIyYzcwMDlkMTVlZWNjMzQ0NGUgcHkzaworNjI4NjQgZDlkNGNlZjQyMWEyZGM0NGFjNDJhYjhkYzhiMWZhMDhiNGYzZGUwNSBweTNrCis2Mjg2NSBkNDQzMGU5MDIxYzIyM2U4ZmU1MDYwMjkyNmI3YzIxYjU5Y2ZkYTlkIGxlZ2FjeS10cnVuaworNjI4NjYgNzJiZTEzOTBhZTVmNDdiZjc4OWI0YTczZDE1ZmFlZDM3MTg0ZWZkYSBweTNrCis2Mjg2NiBlNjlmODRlZTRmM2E1NTAyMmUyZjI1MmVjZTJiYWQ5NDA3ZDIxNTVmIHB5M2sKKzYyODcxIDk4MWNhZjI0ZGQ4YTZhYWQ4YzM5MjlmZjBhZGFmZmIzZGI5NWRiMDQgcHkzaworNjI4NzIgMTZkZGRmZTBhOGNkYzQ2NjIzZTNjN2QwNTk3OTY0MTIxZjEwZTY1MyBweTNrCis2Mjg3MyBjOGI0OWQ4YzM5NjdlN2FlZGE0YWU3OTgwMzA2MTYzYWJlMTk0ZTAyIGxlZ2FjeS10cnVuaworNjI4NzQgZjJkNzcxZjM3MGJkOGUwYmEzNTg5ZmExNmUxZGNlMmE0YmI5NmU1NyBweTNrCis2Mjg3NiBjYTQxMDI0MTRhMzQ1Y2VlYzgwOWJmYTZiNTI5MGVkNjNiNjgzZDI4IHB5M2sKKzYyODc3IDExNDA3YzFmNjhjYTQ4NGMyOGIxZDk0NjkxZGI1ODg1N2FmM2ExZmEgcHkzaworNjI4NzggZWFhYzU2MTlhMjFmZmMwNTQ5Y2RmM2UzMmIyNjdmM2IzN2I4MWQxZCBweTNrCis2Mjg3OSAyMDI4ZmEyZmMxZGRmY2M5NGFlMmUxM2YxY2ZhYzY3MzIzZDZjYTdjIGxlZ2FjeS10cnVuaworNjI4ODAgZTk1ZGQyNWRmYjBjYmUwODA1ZWU5MzgzMmE2NTBlMGYzNTUwZDYzMCBweTNrCis2Mjg4MyA1YzViMzYzZDJmMTlhODFhOWVhYzVmMzgwMTUwNDZiZjk5MDhjYmE4IHB5M2sKKzYyODg0IDlmYmMyZGE1NGUyOTNkZTkxMzFjNTBjYzU0MThlYTEyNmFiNDdkMzkgbGVnYWN5LXRydW5rCis2Mjg4NSAwNDdkYTNmNmZkN2ZkOTRhMmVhZDc3MTUwNjQ0YjhmZjg5YTI2YzJjIHB5M2sKKzYyODg3IGNhYzZhMWEzMzRlMDRjYjA2Yzg3N2M5YmU1NmQ0NWI4Njk4ZTYzMDcgbGVnYWN5LXRydW5rCis2Mjg4OCBiNzEwOWEwY2QwZjlmNTdhNTFmZjViNDkyNWQwY2Q0YTNjMDVjZTdiIGxlZ2FjeS10cnVuaworNjI4ODkgYTc2NzBhZmI1YzA5MmQ5OTYxMzMyMTQ4OTQxNjBhN2U5M2E5NzE4NiBweTNrCis2Mjg5MiA2YWRhMTVkNzk5MGY3MjY4OTk3N2Y0M2E0OWMxNDg3NTIzMWUwMDZlIGxlZ2FjeS10cnVuaworNjI4OTMgYjVhNjc3Mjc4YjVmYTg1ODQ2N2MwYWVkZjAyNzQzNzk1YWFmMGU3OSBsZWdhY3ktdHJ1bmsKKzYyODk0IGI4ZTdhMTYxNjExYzE0ZjMyZGJiYmQ4Mzc1MzdjZDNjMGU0OTZmN2MgbGVnYWN5LXRydW5rCis2Mjg5NSAxZmIyNDZjYjI5YWU0MTFlZThmY2E4MmY1ZDE4MTBkNWU1NjY3MDI2IGxlZ2FjeS10cnVuaworNjI4OTYgZGZiMGJiNWZhYTZiYzlmNjM0YjA0MTIzNzVkYmZiYjk4YWEzNzYxNCBsZWdhY3ktdHJ1bmsKKzYyODk3IDZiZTY0NzE5YTUwOWFjY2JmNDBjNWZkNzNiZDkxMTg4MzVjM2EzYTEgcHkzaworNjI4OTggMmExNzNhOGIzYjEzZjhhZTE0NWI3YWQ0ODg4MTlkNzI3YmU1NjNmNSBweTNrCis2MjkwMCBmYjE5ODRmYjE4MmQzYjk2MTEwZTJjMTcxZjA2ZWExMWI4NGU4NzE5IGxlZ2FjeS10cnVuaworNjI5MDEgMjI0Y2FkODIzNTkwNWYwMWQxOGZhNTVmZTY0YjMzOGM2NDBiOWIyMiBweTNrCis2MjkwMyA1ZTRiZDgyNDk4NDYyNGViMjk5ZWJiZmZkMjJmYWRlZTg2ZjJjOGFiIHB5M2sKKzYyOTA0IGRjNTczZWUwZDkwNDE3Yjc5ZTI2ZTU4MWNhYTAzMmNhOTkxZjNhZDYgbGVnYWN5LXRydW5rCis2MjkwNSBhMTMwY2Y0OGFkNjdjYWVmMWIxMTMzOTRlZTkwODM2YzgxMDUyNDMzIHB5M2sKKzYyOTA2IDVkMTVhOGJjYzQ0NTY2MjU3YTczYWM1M2JlMWZlN2VkNTUyNGYyN2UgcHkzaworNjI5MDkgOGJmZTJiMDY1MjdkYWQwMzRkMzg4MmJkZGEyOGNlNTkyODVmNzExZCBweTNrCis2MjkxMiBiOTMwMDU3MTJlMzk5ZmYwYzJlZWRhZmNhM2ViNzIzYzUyZGIyNDJhIGxlZ2FjeS10cnVuaworNjI5MTMgNWI2ZWE0ZGJhNDRjOWNjZmUxZWJjYjA4NGMwNWY4YjFkZjNkMjA3YiBweTNrCis2MjkxNCA0ZDAwN2EzMWI0NjQ1M2Q3M2NiNzVkNDEzYzNjNDA3NDkyYzM1NmU4IGxlZ2FjeS10cnVuaworNjI5MTUgMzc2NzVmMGMzMzhhNjYwNWYxZTU5OTMwOTM0Y2M2MjFhNzIxNDRmNCBsZWdhY3ktdHJ1bmsKKzYyOTE3IDgxNmMyMWM3NjJjODUzZjk2NjA5ZGY3ODJlMWIyM2NiNDg0MzAxYzQgbGVnYWN5LXRydW5rCis2MjkxOCBlYmM5ZjY2ZmU5OTAyOTI4NjM0OWEzNDhiNGM2OTFlOWNmNjQ0MGVjIHB5M2sKKzYyOTIwIDk0NmZiYWU0YmFhYjU2NmI0OTVlZWM4YmY5OGUzODFiNjM1NzkzYWQgbGVnYWN5LXRydW5rCis2MjkyMSA0YmQ5ODk3ZGNlMDdjZmExMWI4YjQ1Y2NmNTZmNDVmZTI4NDdhNjU4IHB5M2sKKzYyOTIzIGE4OWJlMjUwNzJlM2RlN2YzZTgxZDUzMzYzZGIyN2FkZjFkMjQyYWMgbGVnYWN5LXRydW5rCis2MjkyNCA1ZmI4YTUwNGZhOTZmMTExNWI3NWRkNTgzMWY0YmUxM2Y4ZjAxMTliIHB5M2sKKzYyOTI3IDE1YzcyMjAyODYxNTVjMWI3Yjc5YmI3MzQwZjhkNjRlZDRiYzdmM2MgbGVnYWN5LXRydW5rCis2MjkyOCA1NGU2MjJlZjM1MDBlMjdmYjdkOWM5ZmNkYWQ3OTVhYmExMzhlMmNmIGxlZ2FjeS10cnVuaworNjI5MjkgODRhZjBjZmE3YjgxZDk0MzRlNzRhYWI5ZmMyMjc5NTkzOWE4MjBmYSBsZWdhY3ktdHJ1bmsKKzYyOTMwIGNkNmM2ZGViN2Y4NGU0ZWM0NDMzMTJjZjczNzk4ZGQ0OGY4ZTE0NDAgbGVnYWN5LXRydW5rCis2MjkzMSBjMjQ0MzhlOWFiNTRmYmEzNmVhMjBlY2Q1MWMxNTNlMGQwZGUwZmNhIGxlZ2FjeS10cnVuaworNjI5MzIgY2NjMzM3YjQ1YjJlMzFhMDBjZjQwMTNlOThjNjQ1ODdhMjdjMWVmZSBsZWdhY3ktdHJ1bmsKKzYyOTMzIGVmYjk3OWE0OTQ3ZDAwMzhjOWRmMGNmM2IwYWEwODU3ODMzYWJlMjUgbGVnYWN5LXRydW5rCis2MjkzNCBmM2Y2YTg5NWE1NTVkZjM2OTVjYzllZGZmZGZjZWZjZWViMDAwZTIwIGxlZ2FjeS10cnVuaworNjI5MzggMzk1NWM1MDJjZmEzNzIyZmEwOTk0MjE3ZjUyMjg0NDBkNWYxNmVlNSBweTNrCis2MjkzOSAxN2NkNjEyYjA2ZGExZjg0ZjJjMTM2NWUxMDA2ZDhiZWMwODkzNGU3IHB5M2sKKzYyOTQwIDhiNjc2ODVhOGJjM2VlNjc5MjNhMWI3ODgxYTAzN2M3ZjFlODFhZDUgcHkzaworNjI5NDMgOGJhZWJhMTNhZTkzZDQzZjBlNjM2OTI2YmUyOTJkNjkxZTllNWVmMSBsZWdhY3ktdHJ1bmsKKzYyOTQ0IDUxYmFiZTczYzBjYTM1ZjZhMzQ4Y2YxMjBiMDQwNmQ1YWVjYThmYTcgcHkzaworNjI5NDUgYTQ0NDk4NWE2NzVhZTRlYWU0NjBkMjk3NmJiNjk5ODJmOTdlYjIwYyBweTNrCis2Mjk0NiBiNDMyNTA2ZWZjZTdmZDk2ZWU4YWY2ODMxNDZkOGZhYTFiMjJiNjg4IGxlZ2FjeS10cnVuaworNjI5NDcgZTBjYTc0YjM2NGU0OWI1NTYxOGE4MjNkMmJkOWVlYjQxNTY0ZDkxMSBweTNrCis2Mjk0OCBmZDBiODk0YmM5MGM1MmE0NGY1NmVmMjY4NzA3NjQ3ZTU5ZjRkMWVkIGxlZ2FjeS10cnVuaworNjI5NDkgYmQyOTU0YzQ5MTY5OGMxNDJiYWY1MzZhZDNkMWFjOTkxNDQzODVjZiBsZWdhY3ktdHJ1bmsKKzYyOTUyIDQ0OTU0ZDY1YTczYTQ1ZGQ1MjVhMzFiNGRlYzVhYzQ0OTZjMWNkYTUgcHkzaworNjI5NTMgODdkODU0YmMxZTQ1ZTcxZjA5NzRhODY4MmQxMDllOWMwMDYyYTNiNiBweTNrCis2Mjk1NCBkZWM1MzFjMGFjZjliNjJmOWY4NTM0OTYwOTE5YzQ3ZWRiNzNmOTc1IGxlZ2FjeS10cnVuaworNjI5NTYgMzdiMjdhMjVhODQ3MDRhOGFiMDgyYTVkNGY4ZTkwN2JkMWM0MDYxMSBweTNrCis2Mjk1NyA4MDI1MTlmMDQ3NTQ1ZDQwMTEyOTcyMWQ3NDAzZTM2YmY3M2QzZDQxIGxlZ2FjeS10cnVuaworNjI5NTggZmU5Yjk3ZGJkMjMyZDJjZGFkZjg3OWFiN2Y2NmNhZmEzYTUyMjQzMyBsZWdhY3ktdHJ1bmsKKzYyOTYwIDRjNWVlMWIzODA0NTAxN2U4NjU3YjMzZmFkNWVhMWNmNjUzM2E1NjQgbGVnYWN5LXRydW5rCis2Mjk2MSA5MWZmZDlmM2NjZWM5MDEyMDZkYTI3OWViMWZhYTQwYmRkNTQwZmY0IHB5M2sKKzYyOTYyIGM1NmU4M2QwOGQwYjA1ODM1MzRhYjk0MGVhMDAyYWI3ZTlhOTViMTkgbGVnYWN5LXRydW5rCis2Mjk2MyAwN2EzNWM5YTVkM2ZiOGNmZGNmNDhlZjFiNmEzMTc5ZDBiOWMzODUxIGxlZ2FjeS10cnVuaworNjI5NjQgNDk5ODc1Y2I2YmEyYzQwZDI2MDQyZmJkMDRjNmQ5NWIzMTNlNTk3YyBweTNrCis2Mjk2NyA0MzkyNjk0ODU1Njk5MDk3MTQ3MDc2ZmI3ZjdhN2Y5OGM3Zjg3ZjM0IGxlZ2FjeS10cnVuaworNjI5NjggNTY3OWNlNjZlNzRiODgzOGQ1ZGI3N2Y3YzkyYWJhZWM4ZDY0YTAxNyBsZWdhY3ktdHJ1bmsKKzYyOTcwIDhkZTUxZGFhNTA2ZmQ4NTQ5NmZmYTkyMGZjYjFkYzUwMTA2NDI3NWQgcHkzaworNjI5NzEgYWE5MjUwZTZjNDA5MzRlMDU4MDVjMThmMmZjNjAyZDMyOWVkZjIzYyBsZWdhY3ktdHJ1bmsKKzYyOTcyIDc2ZWM2NzVlMjBiOGNiZmQxNTM2ZjlhOWRhM2U2M2RlNjAzZTU3YTYgcHkzaworNjI5NzQgMjNlYzMzZjY2NzM2MGU0YTE1MDllMDFhMDgwYTkxMGM0MjgwMGVlNCBsZWdhY3ktdHJ1bmsKKzYyOTc1IDg4NGY4NDI2Y2NjZjc4OTEwY2I5M2JkYzA1ODkwYTBkZmNjMDMyYzAgbGVnYWN5LXRydW5rCis2Mjk3NiBkMGY0YzI0NjY4ZjIzN2RhNjYzYzJmNDU4YTI1ODVkZDIwMjRjMDJkIGxlZ2FjeS10cnVuaworNjI5NzcgYmU4YzQzYTNmZDYyZmY2Mjk3NDc3YTZhMjY1ZmNkNGY0NWRjNjJiZiBsZWdhY3ktdHJ1bmsKKzYyOTc4IDM4OTM4YjcxNDAxODI0MDY4MjQ4N2JjMGY0MDZlY2VkZDcyN2VmYTYgcHkzaworNjI5NzkgZTNkNGRlOTM1MGZiNGRkYWRmODliNmZmNWRkYmJkNzdkMGY5YmFhMSBweTNrCis2Mjk4MiAyZWNmYzcwMTNlYjVjMzM2Y2QxMGIyMzljZWJiYTdiYmZmNTg0NTk1IGxlZ2FjeS10cnVuaworNjI5ODMgYTFmNDU4YjAxNDlmMDkwMjNhN2E3MGY2ZTQ0NjRhMjJiN2NmOGIxMyBsZWdhY3ktdHJ1bmsKKzYyOTg0IGFkN2QzMTlhZGY3NjdhYzZhNTc3NTBhNTMxNmIzMGRmN2NhOTE1YTUgcHkzaworNjI5ODUgNDFhOTc2NDlkZTYxNzU3YTVhNzA2OTgxMGNkMjg0NDQ0NzVhNDRiMiBsZWdhY3ktdHJ1bmsKKzYyOTg2IDEzMmY4MmQyNDAyOGVkN2Y3ODY1ZTc3MDc2OWE1YWM0MTU1ZTQwNDEgbGVnYWN5LXRydW5rCis2Mjk4NyA0NTE2NzRmODZkNzU0NGVhMjM1MGYwNjQ2NTZjNzNjOThkODNjOWI2IHB5M2sKKzYyOTg4IDc2NTRlYjVkMGE2NzAxZDIzYjQyMjE5MmFhNTc5MDA5MjUwNTJjZDYgcHkzaworNjI5OTIgYmM4YjIyNjYxMWRkNDNmYmJiOGMzMzI4MjJhMmZjNGZlYTU4ZGU0NSBsZWdhY3ktdHJ1bmsKKzYyOTkzIGIzOGVkN2MxY2FiMWMxOWU3MmRjMzYwN2RhNzlhMmFhYTIyZTEwYzAgbGVnYWN5LXRydW5rCis2Mjk5NCAyZDFlZjk0ODdjMzE1MzgzMmU5NzA4NzRiMTlkODg2ZTg2MDgxODljIGxlZ2FjeS10cnVuaworNjI5OTUgYmUzYzlmODg2NmU3YjcyYzkzYTlhNDMwMTNiMzRjN2YwZGZiN2YxNSBsZWdhY3ktdHJ1bmsKKzYyOTk2IGFhYzdhMjJiZWY4NDVlMmE1ZDMzNDhjZDI1MDNhOTY1MjFkNWZlMWEgbGVnYWN5LXRydW5rCis2Mjk5OCAyNzBmNTRlODJkMjA4MWIwMGFiY2RiMTUyMGQ1YmJlMzViOWZjYjBmIGxlZ2FjeS10cnVuaworNjMwMDAgNzYzZDcyZDAwMDI1N2EyODU3NGFjZDZkZWI5NDNiNzc5ODM3MmFmNiBsZWdhY3ktdHJ1bmsKKzYzMDAxIDM0MThmMmViY2U4NzIzMmYzMGM2NmViMDliODJiMDBlM2RkOGYzNTkgcHkzaworNjMwMDIgNmI0YmZmMjhjN2JhMmI1YmVhODQ1MGM0OGY1Mzc2NDY2YWFmYWViNSBsZWdhY3ktdHJ1bmsKKzYzMDAzIDg3ZGU3NThkYmQ2NDY1NWI2Yjc5NjI2OTBkY2ZmMmMzOTJiYWM1YTYgcHkzaworNjMwMDQgMzNkNGUwM2IyM2JhZGU4MTUwNTljNTgzZWIzMmQzOTkzNzdmYmNmMiBsZWdhY3ktdHJ1bmsKKzYzMDA1IDExYTBiMjIxZjM3MjY0MzA3NDdkODMxMTI3NDY5NjRkMmYwMGU2MTUgcHkzaworNjMwMDcgYjZiMmNlYTVkMzA2ZjdiOTcxNGFlOTMwMjg3YTI0MjRiY2FjZmZhYSBsZWdhY3ktdHJ1bmsKKzYzMDA4IDQyOGI2NmMwNGQzYTkxMWIyMzk0ODhmMzM1M2RmOGFhMWU3MGQ0M2UgbGVnYWN5LXRydW5rCis2MzAwOSA2MGIxOGIzOWEzYTJlODM5ZjZkNWYyZWYzMmU3YTYxYmE2NGNjMDJlIHB5M2sKKzYzMDExIDJkMDRlNTYwMTJlZGM2ZmRkODc2ZDhhMDFiY2UwMjQwZThkMDdhZTUgcHkzaworNjMwMTIgNmVkYWFhNzdhZjI3Njg2ZTI4MzczYjZjMWQyNGU1NzhmZTkzZWJhMSBweTNrCis2MzAxMyAwYzAyZTE1YTdjMWZjZDIwNTRhYTA0ZGQ3ZGE1N2ZlM2RlMTZiNDMzIGxlZ2FjeS10cnVuaworNjMwMTQgMmNhN2EyNzk4MTYxYzQwYzZhODAxMTQxMWY4YzNmN2E2NzZjMzJhNCBsZWdhY3ktdHJ1bmsKKzYzMDE1IGJlMWVkNjJkOGI4MGM3ZDA3MDhkOGY3Y2E0OWIwY2NiYWFlYzliZGMgcHkzaworNjMwMTcgYzdkNTMwZThiN2Y1M2JjZDNlYzEzY2JiMDQ1NTQ0YjJiYzI0NmU4YSBweTNrCis2MzAxOCBmMmE2M2VjNTA1NWU2YzI0N2U4MDBlNDFjYTVmMWJjN2JmNzljYTZhIGxlZ2FjeS10cnVuaworNjMwMTkgOTFmYWFlNDljYmViYWE1YzgyOTlkMzczYzAwZDNhNzRmZmM5MjM4NCBweTNrCis2MzAyMSAxZTQyN2JjMGY4MTg5NGZjNTFiZDAwODBkYmFmM2ExODY0YjcxMWVkIGxlZ2FjeS10cnVuaworNjMwMjIgYzBjNTdiZTk4ZWVkNmM0NGEzNDEzYjBjN2MxMGNmZGQzZTgzOWQzNiBweTNrCis2MzAyNSBjMTVjZjAxNDE1ZjkyNTY1ZWE0YWI2OTY2ZWUzYzFmNjJjMGEwYTAxIGxlZ2FjeS10cnVuaworNjMwMjYgZDhlMDAwZWM3Nzk2YmZjNjFlNjE1MTk3ZDNmMGY5NzM5ZjI4ZjY2OCBweTNrCis2MzAyNyA4OTJmOWIyOTU5YzlkMTY1NjFjNWU4MDAxNGQ0MDM3ZWRjYzY2YTg5IGxlZ2FjeS10cnVuaworNjMwMjggMzg0OTY4ZDRkNjU1ODZlMGVjMjdhY2ZiYWJjNGQyMjgzMTlmNTJiZSBsZWdhY3ktdHJ1bmsKKzYzMDI5IGFhYWU0ODliOWQ4MWMxYjQ4NDJjNDE0M2VhNTI2YTc2OTllMWYzMTggcHkzaworNjMwMzAgMmNhYzMxZmMxN2MyMWZhYWVmMzlmYTRiMTEzZTIwM2UxNGJiYmQ4MCBsZWdhY3ktdHJ1bmsKKzYzMDMxIGQyMzQ1MTE5YTJkYWJkYjE5ZjA1NmJkMWE3Yjg3MTQ5MTAzNDNlMTIgcHkzaworNjMwMzcgZmIxNGZmMDU3YzA5Njc2NmZkZDY2ZGRlNTU4NjlkZDcxYzQyOWFhNiBsZWdhY3ktdHJ1bmsKKzYzMDM4IDE2ZjE2ZmNlNTMwMjVmNjJjMTg2YmY4MGY5N2I5ZTAyM2I5ZDVlNTUgbGVnYWN5LXRydW5rCis2MzAzOSBmNjM4OGRjMDE5Y2M4MmY2Y2JjODUxYzRmNTg4MDVjNWM0OGYzMzYxIGxlZ2FjeS10cnVuaworNjMwNDAgMjI0ZTA3YjY1ODYxYzI1NmJlYzBmMDgzZjMxY2QwYWJlOWFhN2UwYSBsZWdhY3ktdHJ1bmsKKzYzMDQxIDljMThiYWE3NjBhZDBkMGRkOTE4ZWNhNzRiZTRmODNiZWY5MmVmMjMgbGVnYWN5LXRydW5rCis2MzA0MiBiNDA4MjdlYjRiODBiNzZlYzNhMDgxZDUyOTVmNDRjZTVjMDAxZDVjIGxlZ2FjeS10cnVuaworNjMwNDMgZmRlZjcxNzk3ZTgzMjMxYmNjMjM5NDljYWJlZDc1Mjc0ODAzY2Q1NSBsZWdhY3ktdHJ1bmsKKzYzMDQ0IGRkNTUxM2I0NzJkYzk3ZjkwOWE2ZGEzMjVhZDk4ZmJiNTVkMWZlMGIgcHkzaworNjMwNDUgNTI1NjZiNDQ1ZmM3NTU3MDMwMTVjOWFjODU2ZDI2NDI3NjMzMmU1NyBweTNrCis2MzA0NiBlNWFlYjNkZjE3NGU0OTdlZjVjZjM1NDgzZTJmOWFjMzExYzQzOTUzIGxlZ2FjeS10cnVuaworNjMwNDkgZDg4NTA3NTg4NzkwNDg5ZTViNzlkZmJiYmEwYjBkNGU4ODI1Y2FhMyBsZWdhY3ktdHJ1bmsKKzYzMDUwIDg3Nzc4MzMzM2VhZWRmZTUxYTMwMWYzZmY2YmZmYTU0OGUwYzc2NGIgbGVnYWN5LXRydW5rCis2MzA1MSA2YmQ2NjYwNzVlMTRjOGQ3ZTY4Yjk5NDdkMGUzM2IwYmRhOGE5ZjNmIGxlZ2FjeS10cnVuaworNjMwNTIgNWRiYmM0NDlmMDJiZTIyNWY5MDY4ZjBkMDk1MTI1ODU5YzYzOTA4YSBsZWdhY3ktdHJ1bmsKKzYzMDUzIGM3ZDFhMTcwYzk0YzM1Y2QwMTY1ZGU2NWZjODA0YWRmZTI1ZmQwMTIgbGVnYWN5LXRydW5rCis2MzA1NCBjMjEzNmMxNGRjZDc5NDA5ZDhlMTAyZmQ4YzM5YjU3ZDZhYWRhZDdkIHB5M2sKKzYzMDU1IGY0ZTYxZGNkYjZmODVhNGQ3MzU5NzlhY2IxOGMzZDM1ZmM1YjViOTIgbGVnYWN5LXRydW5rCis2MzA1NiBiMjliNDZhNDM5ZDlmMGM4ZTU1YmU0MDNiOTIxMDZiODBmNjY0ZDE3IHB5M2sKKzYzMDU3IDljNzY1ZjRlZDUxMjM0NTAyZjQ2MWEyYjFlNWFkZjFmM2RjMWJlMjAgbGVnYWN5LXRydW5rCis2MzA1OCBhZmFlZWRhZGJkYjM2YjM4YzFjYTY1YTc1YjM3OWI0ZmJhMDdlYmUzIGxlZ2FjeS10cnVuaworNjMwNTkgNGZiNmMwYzE2OWZmMGI1Y2MyNDIzOThlNzY2MmEwMjU3YmFiNDA0YyBsZWdhY3ktdHJ1bmsKKzYzMDYwIDBkZjYxNjE5M2I5ODgwNmI0NTlkZDljNmQ5N2M4OWExMWI4MWEwYzYgbGVnYWN5LXRydW5rCis2MzA2MSBhNzNlODdmMTVmZmE3NDllZTI4N2E3OTAzMmY0MjU2NTgwNDM2NzBhIGxlZ2FjeS10cnVuaworNjMwNjIgMDgxZjJhNjYyNjM0NjViNTk1N2RhMjI3MTJhZGIxNDI5YTUwYjYzNCBsZWdhY3ktdHJ1bmsKKzYzMDYzIDdmNzdkYjk1MGNiNDRlZmQ3NmE3ZGFlZGQ0NWNmZTZjNzYwMGQ3MjYgcHkzaworNjMwNjQgODE4Y2FlYmUzNzMzMTFlMTk0ODFjODE4ODc1YWM1NTRlODQ1ODdlMiBweTNrCis2MzA2NSAwNzU3MmE4MjU0MGZkZGU3MTcwZDMzZjc5YzE2ZDNlNTU5OGFhNDBjIHB5M2sKKzYzMDY2IGJlODdiNzcyNjg2NjBiNWQ4NThjNWU2MTFmMGFiY2M2MDg1MWUwMDcgbGVnYWN5LXRydW5rCis2MzA2NyBkZWRjZTdjYjdhNWRmZjdjYTIyMGViNTBkNjYxZjU0ZDQyNjMwZGU3IGxlZ2FjeS10cnVuaworNjMwNjggMWZkZmIyOWY0ZmI4MzYwOWNmNmRjOTJiMDQwZGNmNmU4YzRmZWE5ZiBsZWdhY3ktdHJ1bmsKKzYzMDY5IDVjY2QxNjVmMzBhNDUxMjMyOWJhZTE2MmY0ODNjMThhNmQxY2NjM2EgbGVnYWN5LXRydW5rCis2MzA3MCBiMTdiMjllNjBlOWJiZDhkYmU1MDgyOGFjODI4YTgyNTUzMzNjMGI1IGxlZ2FjeS10cnVuaworNjMwNzEgNDlmZjFmYzAwYzZjNTM0ZTFmNDFhZmNlYTIyYjY0NjYyNjIzOGQxZCByZWxlYXNlMjUtbWFpbnQKKzYzMDcyIDY3ZTQzNjNlYTJlMDY3NGU3ZmQ0NjIzZTk4ODVjODMwYTc3MjQ5NWMgcHkzaworNjMwNzMgYWIxOTBmNzFiOTE3Njk1NjA1MWExOGZlYzg0OWUwYjllNmQ3ZGRjZiBsZWdhY3ktdHJ1bmsKKzYzMDc0IGUzNDAxZjMxNmEzYjk0Yjg2ZGU0NWQzMTZmZGFlNjQ4NmJmOTg0ZTUgcHkzaworNjMwNzYgMjFhZTJiNjViYmJiMzY5N2UxNjg1YTQ1MDk1MzQzZmRlM2I1NzQ0NyBsZWdhY3ktdHJ1bmsKKzYzMDc3IDc2NjgxYTYzMDZhODA3MGUwMTY1MjNjY2QxMzczYWVkMDg4OTA4MmEgbGVnYWN5LXRydW5rCis2MzA3OCAyMDY3MDBkNzQ5ZjBmMzIzOWQwM2UyYWMzODY2MTdmNDdjN2Q0MmYzIGxlZ2FjeS10cnVuaworNjMwNzkgYmQyYzk1YzE2NWVhNGMwZDNkZWVkZTMyMjUwYTkzYmMwMmY1YzdlZCBweTNrCis2MzA4MCBhOTQ5NWEzZmUyZTBiNzgzZGFkNTFhZTBhMGZmMGRlODdkNDI1Nzg1IGxlZ2FjeS10cnVuaworNjMwODIgZTAzZDhkM2U2NzU0NGY3N2Q3MzkwZWNhY2Q4YzAyNjM4Mjk0N2MwNiBweTNrCis2MzA4MyBiNzFmY2ZkOTg2NmJhZWViMGRlZGY4YzI4OWM0OGU5MzQzMDFjMGFiIGxlZ2FjeS10cnVuaworNjMwODQgYWJlM2YzMDVmNmM5NjAxZGIyOTgwODUxODg5Y2ZjODMyYTdjY2U4MSBweTNrCis2MzA4NiA3ZTQ2OWUzY2ViZGE2ZTA5ODM3MTI5MjBkZmNjNTk3MWRkN2U4NzgwIGxlZ2FjeS10cnVuaworNjMwODcgYjcxMGQ3MTlhMDgyYWQ1OTU1YTY1ODgwYWNmYjZmYWVlMGU1ZGM0MSBweTNrCis2MzA4OCA4MTEzMTA0NmQxYjA5MjkwZmNiYzBjNDk1NWYyYjI5YmNlNDM5YjJjIHB5M2sKKzYzMDkxIDZjMTVkYjZjZTVkYWY2NGJjM2NjYmZlMzcxZTgxMzJlMThiNGU5MWYgcHkzaworNjMwOTIgZWQyYzE4ODhlMTQzMDE0MWY5YmUzMGU0ZGYzODBiYjg3ODZjOGI4OSBsZWdhY3ktdHJ1bmsKKzYzMDkzIGVmNGVjOTY4ZmRiNjY4MGVmMzM4ZjAzNmM2MjIxM2IzMDdmZDlmYmMgcHkzaworNjMwOTQgNzQxYjI2NjdhYzBiNzE0ZjZhZmRjMTEyMmIzNzk5MGNkODAzZDcwNiBsZWdhY3ktdHJ1bmsKKzYzMDk1IGYzZDBlYzBiNzM3ZWI5YzJiZmFlNzk4MjI1MzY0ZWI3YWM5MTBhYTggbGVnYWN5LXRydW5rCis2MzA5NiBjY2M2NjNhYTRhNzY0NGM3ZTFiNWUxYTFjNTQzYTE1OTFhYTI4NTA3IHB5M2sKKzYzMDk3IDZhMTliOWJlYTE4ZTdiZDJlMThmMGJlYWYwNGY1ZjI4Zjg5NGRlNDYgbGVnYWN5LXRydW5rCis2MzA5OCA4ZWE4ZmIxNGRmNzE1M2RjNzExYzA2MjdkOWUwZWVhZTdlNzExNmZiIGxlZ2FjeS10cnVuaworNjMwOTkgZTk0NTc0NDU1ZDlkZDA3NzNhOGVkOWQ4ZDUzYmJjMmZlZjM2NzJkZSBweTNrCis2MzEwMCBjOGI3NzAwN2ExYzE0NDMzZWNmZmVkMzg2YjlmOWQxZjBjMTcwNzZiIGxlZ2FjeS10cnVuaworNjMxMDIgMjJjZGI2ZWMzZTU2OTJhMjVkMjVhZmM4YjYzMTMwMWEzMDBmODQzMyBweTNrCis2MzEwNCBhNDI3N2MxYzk4YTg1NDEyZjg5MWUwNjMzZDMwMWU4ZWU0YTgzYWUyIGxlZ2FjeS10cnVuaworNjMxMDUgZDdjMjA3YjgwYzQwYWEyNmY2YTAxYTRjMTU4OTkwYzgxZTk0ZjAzMyBsZWdhY3ktdHJ1bmsKKzYzMTA2IDkwNjg2MDQ1ZmJhOGQxMmY1YmIwY2Q3NGYwYjJhY2ZhZGM2ZTczZTMgcHkzaworNjMxMDggYTlmZjcyODkwODJiMjBmYzkyYTA3MWQxZDA3ZTBhYjZjYWEzYzFhMSBsZWdhY3ktdHJ1bmsKKzYzMTA5IDBkNDk1NzU0MGM5NmU5Zjk3ZDE4ZWIzM2ZmNDE0YjM4YjQzYWFiYjIgcHkzaworNjMxMTQgYzJhYjdhMDZlZDI0YmVhZDRlYzYzNmVjNWEyNDk1ZDQzMmNhNTgwNCBsZWdhY3ktdHJ1bmsKKzYzMTE1IDUyNmQ4Y2Y3YTkyMDZlM2Y2NDQyMmYzMWFiM2U3NzNmN2Y0NGY5YzEgcHkzaworNjMxMTkgNGM4Mzc1NTc0YWE5ZTc0NjEwYTg5NjI5ODQ1ZDgxZWMzNmMxMjk1ZCBsZWdhY3ktdHJ1bmsKKzYzMTIyIDYyMmEyNTk2NzIyOGQ5YTA4MWI3ODNjODJhY2Y3MTU0NzI4ZmM5MmIgbGVnYWN5LXRydW5rCis2MzEyNCBmMGEyODVmYzIwMWQwMDVlNTAzYjQ2ZDgwMDE5MjM2YzM4MjZhYzIyIHB5M2sKKzYzMTI5IGJkZTM4YTdiMjMxODM5OTJlODEyODljM2RjYmU2NGNmMGFkYjI0YTggbGVnYWN5LXRydW5rCis2MzEzMiBhMzc1YjEzNDZlYjM3ZTMyNDZlZWY1OTZjOGQzODIwZjYxYTA2YmE4IGxlZ2FjeS10cnVuaworNjMxMzQgZGFmZGUyZWVlM2QwZDhhMTNlOTY5MmExNTQ0MTBiYmM4YjdjOTViNSBsZWdhY3ktdHJ1bmsKKzYzMTM2IGM5ZTVmYWE0ODJlOGJhZjFkZTliZTI1ZTBlYzYyOWU3ZmE2YmZjNDEgcHkzaworNjMxMzcgYjMwNWE5NmE0YmUyZTQ0YWExMTZlZGUwZDQxZjMxNWViZGVlOGRlNyBweTNrCis2MzE0MCBhY2E1YzFkMWM1Njk0YTNlYzA1NmYxMDIzYjFhNTk5OGE3MjE3MmNiIHB5M2sKKzYzMTQ0IGE5YWEzNDJhMzY3YTkyMmQyMzlmY2ViYjU0OTQ5YmRiNGMxYzI4MGQgcHkzaworNjMxNDUgMmYxNDUxOGYzMDBiOGZjMzNhOWVjNjYxOGY2NjQzZjRlYmFmYjMyZSBsZWdhY3ktdHJ1bmsKKzYzMTQ5IDc5OTMyMWU3ZTdiYjQzMjkxNzZiYTM3MWQ3MWFiMWI1ZTUyMWM5ZDIgbGVnYWN5LXRydW5rCis2MzE1MCBjMWE2OGY1NDBkNWJjM2IzYzU4NzNlN2QyMGE4MzZlNTAzNzY0ZmE2IGxlZ2FjeS10cnVuaworNjMxNTIgODM3ZGUyNGFjMWY3YTVmYmY1NzdkYTg0Yjc5MmU0YmFmOWZlY2FiYSBweTNrCis2MzE1MyA0YWM5Y2MxZDc3OTg0YmM5YzNlY2UzMzEwYzAwNTFkOWUxZDk3YzUxIGxlZ2FjeS10cnVuaworNjMxNTQgNjRkMTlmMjg1MWUxYmRmMjEzMzIyMGQ1MTY0NDNiNTE5MDc3YjgzZiBsZWdhY3ktdHJ1bmsKKzYzMTU2IDEyODBiOGVjOWRhMzg1MWY2YmFjOWQwYzI4YTEyYjI5M2NlNTZlMjQgcHkzaworNjMxNTggNWE3Y2NkNjVlNTliM2QyZWFmNzljNTNkOGM1N2Y5YzExMmYwMjc4ZCBsZWdhY3ktdHJ1bmsKKzYzMTU5IDA4OWM4ZDBkZjc3NDQ0ZDE1OTY0ZTgyOGE0MjE0ODUyNWRkZTE1ODAgbGVnYWN5LXRydW5rCis2MzE2MSBiYTIzZmMxNTc2MThiMzk5NzAzMGExNzZiM2NlNzRmY2NiODkzNTQ1IHB5M2sKKzYzMTYyIDM5ZjZmN2YxNzJjYThlNTQ3YzI4ODdmYmM0NGIwNmFmNmZhNGNmOGUgbGVnYWN5LXRydW5rCis2MzE2MyBmZDIzZTZkMTc3ZTlkYTZkN2I1MzRhNTU4NWM4NjMzYmRkOGExMmM3IHB5M2sKKzYzMTY0IDA3YTUzYmI4MmJhYTA1YmRiMTdjODM2NGJmZGM1N2IwZDZkYThlNDIgbGVnYWN5LXRydW5rCis2MzE2NSBkZjExYWZmMDkyY2Q4NGU5NWFhOGFhZjg1ZjU0NWFjMjZmY2ZjOWVjIHB5M2sKKzYzMTY2IDZhNzc4YzBhNTE3ZTYwZWJkODM3NjY0NGNjZTk0NzZjZDk5ZjQzZGQgbGVnYWN5LXRydW5rCis2MzE2OCBiM2VhYzNhN2ZkYzNjNzUxODQ5NThmMTVmNTZkNjBhNTk5ZTVmNjVkIHB5M2sKKzYzMTY5IGU5OTczOTAzNjYwNjlhNDk3NGY5NTlkYWU1NzIyZjhkNjQwMTVhNGEgcHkzaworNjMxNzAgZDI4MTBiOGFlZDZkMWZjMDc5MTY3MzA3ZGRiYWUzYTZjNTRjY2YyNiBsZWdhY3ktdHJ1bmsKKzYzMTcxIGZmOWIyMDU3NzIyY2I1MDZhOTQ4ZmEwOWFiMGI2ZWQ0ZGUzMjBiM2IgcHkzaworNjMxNzMgOTA5MTYzN2UzMmIxZTNiN2QyODExYTZkNTc0MWY4ZTM4YTNjN2FjNyBsZWdhY3ktdHJ1bmsKKzYzMTc0IDk5ZjUwYWY2OTJkMDI4YzEwNDE3YTA5NGFkNTY4ZTgzMjkzNDY0ZDkgbGVnYWN5LXRydW5rCis2MzE3NSA5MmQwMGY1ZjNjMGQwNDAxOTVlN2E5YjM4Nzk0MzlkZTM3MDE3ZDA2IGxlZ2FjeS10cnVuaworNjMxNzYgOWQ0NmMyODlkMTY2MDUxYWRjNjQ2ZGMyNzlkMmZhMDk1MmE4YWU1ZSBweTNrCis2MzE3NyBlNjQwMzliYmZlMjY4NjdlOTVkNGNkZWJlN2VhMTFlZTJiZjM2ZWExIGxlZ2FjeS10cnVuaworNjMxNzggMWU1NzNjMmNkOWJlNjFhMTgwMzU5NDgyMWYxZTBkNjkyMjk4YTA4OCBsZWdhY3ktdHJ1bmsKKzYzMTc5IDJlYmUyNzI3ZmM5MmFlNDA3YzY3NDgzNWYwMWM4ODkxNjA5NTE2NWQgbGVnYWN5LXRydW5rCis2MzE4MCA4YTQ5ZjhlZjdmODk0MjMzYThhMTBlZGVhN2NiOGJlNzBhOTIzYjRhIGxlZ2FjeS10cnVuaworNjMxODEgODk0MTQ0YjE3M2M5ZjYyZTE1MGQwZDk5MjU5ZjNiZjY2OWI1OGE1NiBweTNrCis2MzE4MiAwM2IxMjMzYmY1ZmUwMGM4NmZkZTkxZTU5ZDExYTViODYwZDYzMGM4IHB5M2sKKzYzMTgzIDgyNmFmZjk1Y2YwYmQxYjJiNDhjODQyODU0OGZmMDkzZTExN2Y5M2IgcHkzaworNjMxODQgNjViNzVmNzgzOGYzYjczMGVjNTdjYTNiODI5ODFkOTI1NjYyOTBlOSBweTNrCis2MzE4NiA1MWFmZDU2NmRiMmJkNDI2M2E0ODg3YjFhOWQ3YjEwYzhmMTY0NzVlIGxlZ2FjeS10cnVuaworNjMxODcgNmRmMDM5NGFiYmYxYmRhMmIwZDdlNTVmZDQ3NjVlNmJmYWEyYWNiYSBsZWdhY3ktdHJ1bmsKKzYzMTg4IDI4NDUxYjVlODE2ZmRiYTAyYmViYjZiNmI4NTM3MjI1ZWQ1YWQ4MWYgcHkzaworNjMxODkgNjI2NThiMGFjYTA4MjJlNGM5Njg1N2MxZTNjYTI5OTlkYzBiZWI0ZiBsZWdhY3ktdHJ1bmsKKzYzMTkwIGVlYWQwOGI4ZTFmZDA2M2UxZDNlYjQ4NTUzMjZlZjhlN2Q4ZWU1MTEgcHkzaworNjMxOTEgYTU5NjRlZTY2MTkzYTRiMDJhZGQwOTJhODk2ODk1MDk1NWEyODhkMiBsZWdhY3ktdHJ1bmsKKzYzMTkyIGRhNmVmMTEwYzM3MzUyNDJkNzE0MjZjYWMxYjRlYjQyMmRlZTQ2MDQgcHkzaworNjMxOTQgZThmNzQ4NDcyNzMwYzdiZGEwOTc5NTFmOGQ2MmM2OTJjOGY5NmI1NyBweTNrCis2MzE5NSA5MTFhN2JjZGMxN2U1OTEwY2QzZmU4ODgwNDI5MWNmODllZmY2Yzg5IGxlZ2FjeS10cnVuaworNjMxOTcgNzU1NjhjZGRhOTQ0NzA5ZmIxNjc0NjlmZjc1NTIwN2E0YjNiMzlmYyBweTNrCis2MzE5OCAzODRjNTRmYWRhYTJmYmQzZDQ2NjZkMmNlZjlmOWI3NzUzNDZiOWFkIHB5M2sKKzYzMTk5IGE5NTk0YTVjZGY3ZmI4NjJiNDQ5YmY3ODY4YzJjNWZkYzc0MjZkNmEgcHkzaworNjMyMDAgNTVkOGMzNTMyMmE3MGRiM2FlOTlhODFkYmVmMjU1ODgzZDYwMzdiMyBweTNrCis2MzIwMyBjMjZjMDJhNDIwMDgyNGJmZjI1ZWIxZDI4ODM3MDE2OTcyY2Q1MDA5IHB5M2sKKzYzMjA1IGVjZGVlZmE4YmI2YTg0MTYwOTVhYzg3ZGFmMmU0NzcxYmExNzNkMTYgcHkzaworNjMyMDcgNjlkYTdhNGYyZjhlMmQzMDliNGU3Y2NkNjE2ZmU0ZjE4M2YwZWYxNCBsZWdhY3ktdHJ1bmsKKzYzMjA4IDQ3NjkyZjZjODE1ZWRkYmE0ODRlMjJhMWQ3YTdkZDMyNDE2ZTZiZjEgbGVnYWN5LXRydW5rCis2MzIwOSA3YzhhY2FhMjdlYWUxZDQ1NWRjYWVlYTFiOGZkNDk1NTYwMmJjYzg0IGxlZ2FjeS10cnVuaworNjMyMTAgZTRlM2IzZWJhMjI2ZmQ4OWI2NzMwMjExOWZjNDE3N2JhMmM0ZDFiMyBsZWdhY3ktdHJ1bmsKKzYzMjExIGQyYzFlZDQwOGExZDc2YTY1NzAxNWY1MjNiNTJmZTg3NTFhMzRjMGUgbGVnYWN5LXRydW5rCis2MzIxMiA3NjQ3N2I5Nzg4NTA5YjQ5YTQ5MjZhODk4NDA0OTA4YzFiMTI5YWQyIGxlZ2FjeS10cnVuaworNjMyMTMgZjIyZWQ4MDI4OWQzMDE0Nzk2NzlmMjg1ZTFhYTY2ODlmMjliYWZiNSBsZWdhY3ktdHJ1bmsKKzYzMjE0IDQ5MDM4ZWUwZTViNWI1MzAwMzdiYzRhOWVhNGZkZTNjMjZjODVhMWUgbGVnYWN5LXRydW5rCis2MzIxNSA4MTIyYTMyNGI3YTU1MTlkZGFhNGI4NDk1ZDRlNTczOWRlYjIxMGRkIHB5M2sKKzYzMjE4IDYwM2E5MzVlYWFkYTk4NWFiNTJiMWY0MDBlODJiMWFkZWY2Yzc2N2QgbGVnYWN5LXRydW5rCis2MzIxOSBhMTc1ODVhNDVlZTdlYTBmMGM4NDkzOWU2Nzg5MTcyZThhMjg1NDgzIGxlZ2FjeS10cnVuaworNjMyMjAgN2I2ZTIyMmVhZGE3MGFiNjJlYjgwMjgxMGRjZjE3ZTAwNTQ1NmU5YiBsZWdhY3ktdHJ1bmsKKzYzMjIxIDVkZDZjNTFhZWVkZWE0ODhjM2QyODcwYjBkYThlOTAzNmExNWFkNTggbGVnYWN5LXRydW5rCis2MzIyMiA4YjIyM2QzNTFiMDk1OTJiMDNjZTc5NDAzNWFiMjRiYWEyM2RhOTgwIGxlZ2FjeS10cnVuaworNjMyMjUgNTYxZTVmNTAyNmViMGE0NGIzOGI1MGYzODRlZDdiYTJhNjRjOWE3OCBsZWdhY3ktdHJ1bmsKKzYzMjI2IDg3NjA5MTJhOWU5ZmUwNTkwNDU0N2YwODIyMzQzODI1MmFmYWYzMjcgcHkzaworNjMyMjggMDNkNjg3NWJkZTBlYmIxOTE3YjE4MDQ0NTA2ZWM4MzgwNTUxNWY4MiBsZWdhY3ktdHJ1bmsKKzYzMjMwIGU1MzZjNjUwMTQwMmMxMTdkMGVhNGZmODM5MGZlZDQ4YzlmMWI2MjUgcHkzaworNjMyMzEgOGZiOWJkNTk2MmU0NmZhMmZjNWRmZTAyNWRlZmNkMzkzYjA3MDA3ZSBweTNrCis2MzIzMyBmMmM0YWI3NGNjNjViY2ZmZDM3N2JmZjhjMTYwNmU2MmJmMDcyZDQ4IGxlZ2FjeS10cnVuaworNjMyMzUgOTA1YjYyNzFlZjExOGFjM2QyMDQwMGI4ZjdhZDhmNWE1MDgwZGM0NCBweTNrCis2MzIzNiA3MWFhOTAzZWI3YWMyMjQ2ZTliZTZjMzZlMGY1MjA5M2UwY2UzYmIzIGxlZ2FjeS10cnVuaworNjMyMzggODNlOTUwZjI5ZDQ0MzM2NmUyNWViY2QwNzZiZGZkZmYyNWJhNmM3ZCBweTNrCis2MzI0MCBhM2I0ZjFlNjVjYmVhZTU2NGZmZDRjOWUxMmMxMWYzMTQwMGYwYmNlIGxlZ2FjeS10cnVuaworNjMyNDEgNDJmYzkyMjEyMGQ5NmU4YzFlODE3OTBiZmE3YjEwY2FiZWY0ZjlkOSBweTNrCis2MzI0MiA5OTNkMGJjMDdlMDAyYTliOTU5ZGJlOWYyNWYyMDViZmFmNGUzNjFiIGxlZ2FjeS10cnVuaworNjMyNDMgYzU0NmM0MGZjZWNlMGE2NzdjMmYwMTdkM2RhNGJhMDQ3NTRkOGZkNCBweTNrCis2MzI0NCA5NTgyODZiMTVkZTA1MGQ5Y2NhMmE0NDg2NzgwNGYzNGIwMjdlMmYxIHRsZWUtYXN0LW9wdGltaXplCis2MzI0NiBmMjhiNzA2NDE1OTVmMmQxNmZkZjhmMDZlMDU1MGY3MzIyYzdmYTcyIHRsZWUtYXN0LW9wdGltaXplCis2MzI0NyAxNzk1NmRiYWQwZTQxZTFhNGVkZjYyNTkxYWQ0MjYzZmZhNzk4YWU0IGxlZ2FjeS10cnVuaworNjMyNDggNzA4MjE0ZjM1MWZlN2Q4YmRlNGE5ZDIyMTA1NDRjMzBmZTE3MmQ3OCBsZWdhY3ktdHJ1bmsKKzYzMjQ5IDdlMThkNjU5MzgyNDNhNTA3NWY2YzE3ZmE2ZDg4OWEwOTViNDE4NjIgbGVnYWN5LXRydW5rCis2MzI1MCBjMjI5ZTc1ZmMyMjQ5ZTZhZGU0M2IwNjVkMWRlZjY2OTNlMzEyNmQ0IHB5M2sKKzYzMjUxIDM1YTg4OTkyNTZjMmNhN2IyOTM5M2RiMjgxOTFkODFlMjMzZGRjNzMgcHkzaworNjMyNTUgNGViNTlkOGJhYzRkNjRjOGIzOGE5MDIxNjc2MjA3YjBkNmY2MTU4MSBsZWdhY3ktdHJ1bmsKKzYzMjU2IDA2NjNmMmZhYjkzNDUyYzdjMzkxNGM5NzQ4YWNlMmY4M2JkZDRkYmEgbGVnYWN5LXRydW5rCis2MzI1OCA0MTYyOGYzOGM1YTI4ODc0ZmQ2MGE4NjgxNDVmNWQyMDljN2UzYmM0IHB5M2sKKzYzMjU5IDZmMjU5YTljY2M4NDgxODg1MzQyN2IzNDZlMGZjYzFjZGJlYTBlZDggcHkzaworNjMyNjAgZjBhNDcwOTFjOGQ4NmRkMmYzYmVkYzlhOGI2MWFlYzFmODIzNWZkMiBsZWdhY3ktdHJ1bmsKKzYzMjYxIDFkZjQ2NjcwMmRlMmE4YWQyY2IzY2E3N2ExMDBiMmE0Y2U1YTFjN2QgcHkzaworNjMyNjIgYWFiOGI4ZDRiNmE1MDg1NWNmM2E5MTc4NWU0YTQ3ZWMzMmFmZWQ4ZSBsZWdhY3ktdHJ1bmsKKzYzMjYzIGQ1ZWFhN2RhZWMyZjQ3MzA1YzE1Yjg4ZjhhNjBkY2FkYWM0NTc1ZGUgcHkzaworNjMyNjUgMDU0ZmY0MTI4Zjc0NGVlZGMxZGUyZmQxOGI0ODUwZGEwYTFjMzIzYSBsZWdhY3ktdHJ1bmsKKzYzMjY3IDI3ZDY5ZGM3Mjc5MzIxZDBkOTQ0ZmQ0ZjIzMzU3MDY0NTZmMDhiMDMgcHkzaworNjMyNjggNWU4OTMyOTkxYWRmZDEyMWMzZTU1MzJhYmY1NzNlOGFmYTRhZGRjOCBsZWdhY3ktdHJ1bmsKKzYzMjcwIDNhYmE0NDI1NjI2NTc5ZWZlMDY5OGU2OTYyOGE2MjhmNGZlNjMxM2IgcHkzaworNjMyNzEgNjJkOWVjOWM5ZWZkMTAyYTc1NDI2NmQyMjBlNzZmNGQ5OTI4ZTNjYyBsZWdhY3ktdHJ1bmsKKzYzMjczIGY1MTNiYjdiOGQ5N2U1NWI4MWYzYjE0NWE1Yjg5ZjNmZWRkOGVhYmQgcHkzaworNjMyNzQgYTA5MmRjZTZlOWQ0YTk2MTAyODQzM2RkZTNiODRkMGZlM2E5ZGI2YiBsZWdhY3ktdHJ1bmsKKzYzMjc2IDNjYzBiZjdmMDRiNmY1NTEwZGZjNTI4YzUyOGJhZDY2N2FhYzExYjIgcHkzaworNjMyNzcgODc2ZDJmMGU5MmU0ZTNhMTU0MDhhNWZmOWQ2M2RhNGMwNGVkYzQyOCBsZWdhY3ktdHJ1bmsKKzYzMjc5IGU0YmI2ZjE3NGIwMDQ0NDdjZmUzNjUwMDhiYzg0Zjc5YmY3MmJkMmQgbGVnYWN5LXRydW5rCis2MzI4MCA2ZGM5MWIzNjZkOWZmZTcyYmEwMjQwNWI1OTBkYzc0ZDNlMjRmMDI0IHB5M2sKKzYzMjgyIDU3Y2YwMDFhYTJhMjRlODZjYmY4YTM0N2RlODg0NzI0MDlmMmZkMmUgbGVnYWN5LXRydW5rCis2MzI4NCBmY2Y1ZGFjNTEzOTRiOGJiNGZmN2UxM2NlMjQ4OGQ3MTBmMTFlY2IxIHB5M2sKKzYzMjg1IGJhZGEwZTg3MWFjMWNmMTllZjM5NzU5YzBjZWVjYTEwNTRlMjJlMDEgbGVnYWN5LXRydW5rCis2MzI4NyA1YWYzOGI5NWExN2ZhZTI5OWUzYTU5ZGE2NWRiYjNkNmFmMzMyNmQwIHB5M2sKKzYzMjg4IDk2YTg3NmFmOTMwYTQ3ODc3NzViM2ZmMzhkNGZmNmM3YzY1ODgzZjcgbGVnYWN5LXRydW5rCis2MzI5MCA4YTEwYTQxMTlmYzI3NTczYWZlYWNmOTU3MjZlMGIyNGI2Mjg4NDM4IHB5M2sKKzYzMjkxIDFiNDRlZDFhOTA0NjVlZTRhZGM0MDRhZmEzMTE1YTQxNjJiOGJlZTMgbGVnYWN5LXRydW5rCis2MzI5MyBkYzQwOThjYTgyM2UyODc5YmVmMzViZTcyZmFiMjBkNDkwZTZjZjgzIHB5M2sKKzYzMjk0IGQ0Yjc0M2JkZWJiMTZjNWM5MWFjNWU5NmJhM2I3OWU5M2MyZGFkYTMgbGVnYWN5LXRydW5rCis2MzI5NiBjZmE4YzYxOGVkMzUzNzA5YWEyMGJlNDAzM2ZkNzQxM2U0N2FiY2Y4IHB5M2sKKzYzMjk3IDgwNDM1YmM3YWFjNDgzOGY4OGI1YmZhNTQwYzIyOWEyMTgwYjBiYzkgbGVnYWN5LXRydW5rCis2MzI5OCAxZTU1YjJkMWM5M2VmMzU4N2NkYzI2YzcxZWYxM2MxZDFhZWI4N2IzIHB5M2sKKzYzMzAwIDU5YmNkZmQyNzUwMWZlYTRjZDEzMjUxZWY1YTAyNmQxYTcxNDQyZjkgbGVnYWN5LXRydW5rCis2MzMwMiA1Mjk4NzM5ZjBhNGRmYzE3ZjRiMWRiNDkxZWRhODI1MTEyZGI3OGUyIHB5M2sKKzYzMzAzIGQ0YWNlZDMzZDU3YTU5MjRjMzI4N2E5NWRjODk3ZDkxY2ExZTNmZmMgbGVnYWN5LXRydW5rCis2MzMwNSBlMTE2Y2EyNmQ4ZjFjYTZiYmMwMGM2OWEwOGNjYTJlOTlkMWE0N2NlIHB5M2sKKzYzMzA2IGVkNTMyY2E3YWU3NWNmZDY5YWU2YWI4MGUxNzA4N2NlMDU0NjkwYjYgbGVnYWN5LXRydW5rCis2MzMwOCBhN2MxYjMxNzAxMTM4MzJhZmE2ZWEwNDAxMTUxZGNmZmIwNWU0OTY1IGxlZ2FjeS10cnVuaworNjMzMTAgNWE0NjA4MjcyYzUwNmE2YzA0MjhkYTIzZTE2OTgzZmNlNmY2NTIyNyBweTNrCis2MzMxMSBmZGE0ZDQxYTA3NzM4Nzk1Njk3ODgwYzdmOWVjYTMwMjY1NWIwYTdlIGxlZ2FjeS10cnVuaworNjMzMTMgMWQ2MmQzMjYxMmQ2ZGNmYjJkMjY0NjJiNWVlZWM5YTM5MGY5YWQwMiBsZWdhY3ktdHJ1bmsKKzYzMzE1IGE4YTU3ZmY2ZjU2OGJjNGU5ZDM2ZDBlYTZjMGJjMTIyNmE1MjA1ZmMgbGVnYWN5LXRydW5rCis2MzMxNyAxMzU2YTQxODgzMGIzNGNjMThmZjM3MzVmYzBlY2U2NmI1NGM4NzA2IHB5M2sKKzYzMzE4IDYyOGRkNWVjNGRkMmU4YTc4NGEyMGEyYjNiOGFhZDA5MzE0ZmQ1YWUgcHkzaworNjMzMjAgMTU3M2M3NzZkZjgyZWM1NTVlOGJmNzg3OGZjY2NmOTI4MjFlNzRmNyBsZWdhY3ktdHJ1bmsKKzYzMzIzIGQ1OTI5Y2Y4NjhjYmJiNTIzMWIxOTE0M2U5YjM5YmMwOWY2M2E1NWEgbGVnYWN5LXRydW5rCis2MzMyNCA5MTg5NjIyNzI3MmE2OTJiNTFkNTBhMGI1MTNjMmM5MGU4YzkxNzcwIGxlZ2FjeS10cnVuaworNjMzMjUgOGUwMDE3OTg2ZjUwZWU2NGExN2U4N2Y4Y2NhMGE0ZDc4ZWMyMGZkMyBweTNrCis2MzMyNiAzOTE5NzlhZjY2MmJjNDhkYWQ2NzQ0NGU0YWVmMjZlZjlmOWNmNjkxIGxlZ2FjeS10cnVuaworNjMzMjcgZTY4ZTYxMDg2MmJlYjVmOWE1NzEyY2RkYjMzMmE5MzU5NWUyY2VmMCBsZWdhY3ktdHJ1bmsKKzYzMzMwIDg3YTc5MzUyMzQyYzYyMTVlYWNlMGY2Y2NlNDM2NjE3NTU1NjZjOGYgcHkzaworNjMzMzEgMDgxYzE1ODA2ZTI4N2MwMzY2MTZhNTA4MmNmN2E0YmViOTE1MDY5NyBweTNrCis2MzMzMiAwZDU0YzcwNTY0NjhiMzJhNjhhNTc3ZjM5MjM2NGIzZGQ5NmE1YWUzIGxlZ2FjeS10cnVuaworNjMzMzMgMzk3ZjI5ZGQ4MmJkYzVkYzRlZjNmZjViNzA2NjA1NTM0YWVjNzMxNyBsZWdhY3ktdHJ1bmsKKzYzMzM0IDMxY2M4ZTFhOGZkZjVmMjM3ZjVlOWE5Njk4OTM5OWZmOTJjMWY2YjUgcHkzaworNjMzMzUgOTYwYWRlODU2MDc4ZDY1NzEyYWQ2N2Y0MDY2ZWM0NjdkMDgyMmU3NiBweTNrCis2MzMzNiBhZTE2ZTk0YmIwM2FlOGVkZmQ3MDM2NDhlZTVjNDA1OGU2ZmQzZWU0IGxlZ2FjeS10cnVuaworNjMzMzcgMmI4Zjc0NGRiNzliNzIxNTg3YWMwNmRjYmE1NWQ3OGIzMjY1Mjg0ZCBweTNrCis2MzMzOCA2NzgwZjAxNTk4YTIzNDRmNzllNzNmMWQyNTYxN2QzZmI1M2UyOGE5IHB5M2sKKzYzMzM5IDhkOGUwNmY0YmUxZmY0YmY2ZTQyNTJkYWU0NTcwYTQzYmNhODI2ZGEgbGVnYWN5LXRydW5rCis2MzM0MCAwYzcxNDJjNTZkN2VkOWVmNTc1NThiOTgzMmMwYTY5NGNjZmM1YjIwIHB5M2sKKzYzMzQxIGE4YWUyYWEwOGU3ZmY1MzA1Zjg3NWVjOTJjNDk0NjAxMzM3NjBhN2QgcHkzaworNjMzNDIgM2MwM2U5YjQ2Njk4NDE3NWFmOGY4NjcwOGVhZGVkYzBlNzYxYzlkMyBweTNrCis2MzM0MyA1OTNiNjQ5OTA0Yjg2NjM2MDQwZWJiY2RiMWI0MWQxNjFjMzgzYTVjIGxlZ2FjeS10cnVuaworNjMzNDQgMzY1Njg3Mzk4NTE4N2M4ODEyZTNiZjY5MjYwZDdjZjI5NGQxYmY4YiBweTNrCis2MzM0NiAyZTJjNzEyZmUyNmQ2OTdkZDY2YzljZGEwMzVhNjIwZmJkN2M4YWY4IHB5M2sKKzYzMzQ3IDU3ZjYxZGFkN2IzYjRmM2YzOGI0ZTY4ZTZhZWQxZDczOTEyYzMwODEgbGVnYWN5LXRydW5rCis2MzM0OCAzNDA3YmY5ZGFjMzg3YTRjNGFiN2NkZjBiYWZkYWE2YTg4MWJjZTliIGxlZ2FjeS10cnVuaworNjMzNDkgNThhMGQ1NTI0ZjlhM2JhOTUwNjE1M2QxYmYwMmFmNDhkYWQ4NzhkZCBweTNrCis2MzM1MCA5OGY2ODcyNmRhMDJkNTBhNmI1OWNjNDhiMDEyMWJkNTcwN2Y4MDMxIHB5M2sKKzYzMzUyIGI2MzA3Mjk1NzFlNjY4ZjRlNGUwNzI2ODZhN2EyZmZhOGMwZmM5ZmQgcHkzaworNjMzNTQgOWFjMTEwNDNiMzk1MzYzZTE4ZWYwM2RmYWM5NmM3N2I3NjA3ZWFkOSBsZWdhY3ktdHJ1bmsKKzYzMzU1IDk0N2NhZWUyMzk5ZWYxZjg5MWQxNDIzOTA1NDFlYjcyZmQ4ZGU5ZTEgcHkzaworNjMzNTcgM2RmMDkwZWQ0ODEwM2Q2MjI5MjA5NDVmZTdmMDNlNzQ2YzljMmY0YiBsZWdhY3ktdHJ1bmsKKzYzMzU4IGQ2ZmU1MDIzMzYyNjBmNjAxMzQxODJkZTJiYzlkOWRlNjE3MjQwMzUgbGVnYWN5LXRydW5rCis2MzM1OSA0ZWE5OTMwOWU1MjU0YzhiNTZhMjMyZDhmNjUwNDgwYzE1ZDE4YmU1IHB5M2sKKzYzMzYwIDRmMWEwNzlkZjQyN2NiZDllODNhYThmZWFhOTAxYjliMWUzYWJhYTYgcHkzaworNjMzNjEgYjBiMzI3MzJmNjZlYjdiZTI2MGI3Y2QxNDRiZTNmOTk0MjM1NDQxNCBsZWdhY3ktdHJ1bmsKKzYzMzY0IGVkMTMwNDBhYzJlNmU1Zjc4NDc5OGZhZmYxOWRkYmQxZGQ1M2I5YWUgbGVnYWN5LXRydW5rCis2MzM2NSBmZjJkYzAyYmE0MWFhM2QxMTEzMzhhMzc0ZmFlZWY3MzBjZmQ0MzVjIGxlZ2FjeS10cnVuaworNjMzNjYgNDU2NTBjMjVhMDI4NjUyNjZmMzY3MzZmMjRjNTQ0YzMzYTQ5N2RlZiBsZWdhY3ktdHJ1bmsKKzYzMzY3IDU0ZmQwNDU4NTUwYzZhNzUwMzYyMTVkZmRhNTUwZDQ5MjgzNmViMjMgbGVnYWN5LXRydW5rCis2MzM2OCBhYThlMTMyNzliNWIxYWMxY2M1NWU1ZmY3NDdmZDRmMDYyMWM5OTg2IGxlZ2FjeS10cnVuaworNjMzNjkgYTJjZWY5ZTg5YjdjMmU2OTgzZTIzZDVkMDlmYTUyNWU3MDAyNDQ5YiBsZWdhY3ktdHJ1bmsKKzYzMzcwIDVkMWFmZjQ2Y2MwZGYxZTM4M2IzYmFmMWYwYTIyYTE1ZGI1NjJlMzYgbGVnYWN5LXRydW5rCis2MzM3MSBiMjQwM2Q0NzBiNjlkZDdjOGJmYmYwNjg1N2U3ZDkxNmFiNjE4ZDJlIHB5M2sKKzYzMzczIGRkMGJjYzIxNmZlMzU5MjBhZjQ0NmUyODU3MzU0Yzc5YzNlM2Y0MWQgbGVnYWN5LXRydW5rCis2MzM3NCAzYjgyN2YzNjQ3Y2IxODQ2OGFiNjQwNjhhNTk4MmE5ZjZlMzdiZjNhIGxlZ2FjeS10cnVuaworNjMzNzUgODkzYTRkYzE3YTkxYzVlYmExMzczNTM3MjViZTY2NmM1ZWE1ZTc1YiBweTNrCis2MzM3NiA4OGJiOWRmMzg1ZGMwZDc1MDYwMGVmMzZmODRjODViN2EzM2U0NGEwIGxlZ2FjeS10cnVuaworNjMzNzcgMGYxNTczNWMxODMxZjU0ZWEwZmFkNWMwYTFmZGIyN2RjNzc4NjhiMiBweTNrCis2MzM3OCA2Mzc0MWM3NTIxYWEwYzIyMzNjZmE4YWM0MWFlNTg0NTg5NGNkNmJmIHB5M2sKKzYzMzc5IDBlNjdlMjFhNDExMzIwYzc3MjJmYmFmM2M1NGQ3Y2Q1YjgxMzJhZTQgcHkzaworNjMzODAgNTMwNDA0NmJiMzU4ZDU2MDE1Y2I2OTc1MDVkZjMyYTczOWZiOTYxNiBsZWdhY3ktdHJ1bmsKKzYzMzgxIGFiZTM1YTg3YjAxZGEzMDMxMWI4OTczNWNlOTZlZGQ5MDc0MTRiZDcgbGVnYWN5LXRydW5rCis2MzM4MiA2MGI4NTkyNGVjNmQwMjhlNmEyZmI4N2M3NmI1YjQ0MGNlMTk3Y2Y0IGxlZ2FjeS10cnVuaworNjMzODQgY2U3YWE4OGI2NjllYTEwZGMxY2M3OTVhYzBiNGUwZjIyMDRlMjY3YyBsZWdhY3ktdHJ1bmsKKzYzMzg1IGEwMmJjMmE4NGQxOWNjZDBiODAyYjg0OGQyODQ3NmQ2MjAwMGYzNDMgcHkzaworNjMzODYgODgwZmU4ODc3ZGY5NzhiOWVjZTA5MjdkMjIyNzZhZTRiOTE3ZTZlNCBweTNrCis2MzM5MiBhYjgwYmJmYTZmMGMwODkyNTRjNWU1NmE5ZGZiMzFkNjFhZGVkZmRhIGxlZ2FjeS10cnVuaworNjMzOTMgYmU1ODFhY2VhNGU3Mzk5NmIzNzQ4Nzc3OTRlMWYxNDdkOTQ5ZDU5NCBweTNrCis2MzM5NSA2YWY2NDUxMjI5NGFkMDlkNzI3YjFmMGRiMTMwNGQwZDU1NjcyZDI2IGxlZ2FjeS10cnVuaworNjMzOTYgNDJiNzhlMGU2ODQ4MDczNDk2MjE1MDQyNDljNjVkMThiOGEzMDJjNyBsZWdhY3ktdHJ1bmsKKzYzMzk3IDg0YmI3MmQ5MGJjNzI1Mjk2MzgxNTNhN2ZkNWE4NWQ2ZDNmYmVkZjYgbGVnYWN5LXRydW5rCis2MzQwMSAwNjgwNzk3YWU0NTQ2MjllMDU3ZmYyMjNlMjZkYjMxMjMwMTE4ZWEzIHRsZWUtYXN0LW9wdGltaXplCis2MzQwMiAyMTQ0YzlmMzY1YzhmYWFmZjMxM2ZlNWQyYTUxMWY5YWI0MmVkYTFkIGxlZ2FjeS10cnVuaworNjM0MDMgMWNhOTY3NTY2ODgwZTgwNjQyMDNiYjIzYTc4MGY4N2I3Mjg1YzZkMiBsZWdhY3ktdHJ1bmsKKzYzNDA0IDZmYmQwNmRiNzA3NzYwMTZkMDM1ZTJjNTc1ODNiYjNiY2IwNTI3YTYgcmVsZWFzZTI1LW1haW50Cis2MzQwNSA2Yjc5NzczMTRjMDJmZDYxYjdmZWUyYWNkNzRjZmJlNTYyOGRiNDdiIGxlZ2FjeS10cnVuaworNjM0MDggM2JiZjQ0ZDMyMzYxMjJhY2I5MDc4MDE3YTQ5MzZiZmY4ZTMxZTdhYiBsZWdhY3ktdHJ1bmsKKzYzNDA5IGYyYzAzZDcxNTk3ZDQ4YjJjNGI5NjNiNjRkMGMyNjdmYWJhOTA4ZWUgbGVnYWN5LXRydW5rCis2MzQxMCA2OTRkMzZmYjZmNGRmYTI2NjgwYzQxNjIzY2U3MWQ4MDAwNjVkMDZlIGxlZ2FjeS10cnVuaworNjM0MTEgYTk3ZWIxNzdmM2E3NzljZDlhNGE5MGJiZjZjZjVhNTJiN2IxMmMwYSBsZWdhY3ktdHJ1bmsKKzYzNDEyIGFjOTNlZGMzOTZhNjRmOTRiMDI3ZjY0ZDM0MDM5MmE2YjhkYTI1ZGYgbGVnYWN5LXRydW5rCis2MzQxMyBiNjYwNTBkYjg0MWYwNWJhYjI4MjNmMTQ1ZjVlNTFjNDJmNDVkMTc2IGxlZ2FjeS10cnVuaworNjM0MTQgNjgzNmU4ZjFkZWRiY2Q0NmYwM2Q5Zjc5OTlkMjE4ZmYyNTkyMWQzMyBsZWdhY3ktdHJ1bmsKKzYzNDE1IDc0NjA0MTVkYThmZWM3NjkxMDI4NmI3ZTkzM2RiYzhkOWFhNTMzZmMgbGVnYWN5LXRydW5rCis2MzQxNiBmM2RkYTlkMzY2OGZkMzMyM2I3OTk4ZWRlMTdjNTIxZTZmZGNjNjYyIHB5M2sKKzYzNDE3IGQ2MzM0NGJhMTg3ODg4YjY3OTJiYTgzNjJhMGRkMDllMDZlZDJmOWEgcHkzaworNjM0MTggZWY0Y2NhMmQ2MTcxM2QzM2MyYTUwMjUyMzVkNDAzMGUzNjk1ZDAyYyBweTNrCis2MzQxOSAyNDk2MTg4OGFkOTU2YWNlODA3Mjc1NjJlNzU1N2M2YTI3ODlmNzgxIHB5M2sKKzYzNDIwIDhhNzQ2MTJmM2QyYmFlMWRjMjJiZjU2MDRmYzhjZDQxMmRlMDU2NzQgcHkzaworNjM0MjEgZDZlMWVhMjFjOTQ4ZWMyODg1MWY4N2VlMTFmNTIyOWE5ZTNhZWZiNyBsZWdhY3ktdHJ1bmsKKzYzNDIyIDkyNDBhNTlhMjVlOWRkYzQyMmMzNTg0ODMwN2ExM2IwNTdiYWE3MmYgbGVnYWN5LXRydW5rCis2MzQyMyBjY2UxYjI0M2MxMWQxMzYzZDgxNzEyMDRmZWY4ZWYzZGRkMTdiN2I1IHB5M2sKKzYzNDI1IDcxMThmYWRlNTc1YjllYzFlZDI5ODEwZGMzYmMzZjg2MmFmNjQyZGYgbGVnYWN5LXRydW5rCis2MzQyNiA2NGYzODczNDM4YjFjYjI2NDVkMTg3YmY0ZGRkYTRlZGZjZjU4MWFjIGxlZ2FjeS10cnVuaworNjM0MjcgNWNlOTA0YzkwZTYxOGM3NWIxNDJlM2QwYjQ0MWY1NWE2YmU0YjQ1ZSBweTNrCis2MzQyOCBkOTUzZWE1OGNjOGJjYTM1ZTQyYTk3ZmRmYWRmYmI2ZTA4NzFkZjkyIGxlZ2FjeS10cnVuaworNjM0MjkgN2ExZGMzZTdjNzliNTI0Mzk5ZWJhM2ZkODA5ZDMwMTBhNzBiMDUxNSBweTNrCis2MzQzMCA4MDFhMDlkZDBlYjhhYmRmOWIyZmViNzU5NWNkYTQ2MGFlYzE3MDVhIGxlZ2FjeS10cnVuaworNjM0MzEgYWM1OWZkZDgwZTQ1OWU2ODIwMGQyNmRhMGFhMWM0NmZkNzI5YWNiOSBweTNrCis2MzQzMiAwYWExYmRlOWQxOTRhOTdkNjI1N2Y0NDFlZGI0NjMxNWFhMzgwZDc1IGxlZ2FjeS10cnVuaworNjM0MzQgMzNjN2ZlODVlMzVkZmY2MDAyZDlmOWZkMmI5YzJlZTA3ZTk2NTE1YiBsZWdhY3ktdHJ1bmsKKzYzNDM1IDEyYzIyOWQwMjFjYzJjNjBhNDY2OWMyMjRlYWM3ODEyMzQyY2ZkNTQgcHkzaworNjM0MzggZjg2MmRmYWY5YTRiZTNhMzA1ZmI1ZWJkOWQ3NGU0MDcxODAyOTcxMSBsZWdhY3ktdHJ1bmsKKzYzNDM5IDcyOTZhMmZiNDc4NmRkYTkwN2I0NmVjZDg2MTljMThjZGY3NGY0N2UgcHkzaworNjM0NDAgM2Q1Y2RkYzZlNWU3ZmM1MDAzNjhiNTJjYTZjNmYwNDhkMjMxOTJkZSBsZWdhY3ktdHJ1bmsKKzYzNDQxIDU4NWY3Y2EzOGE4NWFmODA5NzEzNWM5MzcyZjUwNzI0N2E5Y2RjNzEgcHkzaworNjM0NDMgYmJkMzBjNDkyYTk5OGMzZWQ2ZTE3MDgwNzQyZWIyYjI2ZDVmYmNhMCBweTNrCis2MzQ0NCBjZGI3NWFmMjM4NWEzMWZkYTY5M2QxNjM5ZWZiODYxNjQ1OWVjYTRlIHB5M2sKKzYzNDQ1IDlmMzU0MDAxZWEyNTI3MTE1ZGE1ZjkyY2JjNTY1NDhkYmQ0NTY5NzMgbGVnYWN5LXRydW5rCis2MzQ0NiBlZmUyMmVlZjI2YmUzZTI3NWU3YjA4ZTUxZWVjNmY0NGU4MGVmMDQ4IGxlZ2FjeS10cnVuaworNjM0NDcgMjBiMWM1YzRlMzA0NDVmMmI2YTg3YzY4Y2YxMmFmMmM5ZWY2YjdiOCBsZWdhY3ktdHJ1bmsKKzYzNDQ4IGE5Mzg1MjlmNGQ2ZGQzYTIxODkxMzI3MjgwNzkwYmQ3MjBjMjgyMzQgcHkzaworNjM0NDkgMmU5ZjU3MmI3MzIyN2E4NTlhNDljZDIwZDQxNWZjZDFlYWM2MmI5NCBsZWdhY3ktdHJ1bmsKKzYzNDUwIGI4NmIyOWUwY2YzMjlkMTBjMTg2MzJmZGE0ODk3NzVhZDZlMjFhNWYgbGVnYWN5LXRydW5rCis2MzQ1MiAzMGY2MzJiMzY4NjhlOWQ3MGVhZDIzMTNkNTYxNWI0MTkyNWE5NDA5IGxlZ2FjeS10cnVuaworNjM0NTMgMzc0OTkyODdmNzU4YTcyZGIyZDJhOWIzOTAzZjBmZmFiMTg2MWNiYiBweTNrCis2MzQ1NCA2MWE2NzViYTc5MDYwMjU5YzdhOTkyMWQwMWQ5NDkzMWJhOGZiYWY3IGxlZ2FjeS10cnVuaworNjM0NTUgMzZjNzFkM2E2ZWY4YzFlODhmZGEyMTBkZWMzODRkZWFiY2Y1NjRhOCBweTNrCis2MzQ1NyAzMDcxYTMzN2Q5MjFmM2ViYWVlOTQyMjQ2NzdjNzdmNjRjZTgwYmQ2IGxlZ2FjeS10cnVuaworNjM0NTggNmE2Y2I5ZDRiZjk0NTAyZDM5ODhmM2ZmYWZkODA1YWExOTc4N2ViYiBsZWdhY3ktdHJ1bmsKKzYzNDU5IDc5NmNiOTNjOTcwN2Y3YmZjZjg5MjNiMTY3Yjk4ZWQ1YjM0YmNkNWUgbGVnYWN5LXRydW5rCis2MzQ2MCBjZDkxZGFmMDMyN2M2ZWQxZTI1MmNkNjIwOTEyMWMzNWVkYmZiYjQ0IGxlZ2FjeS10cnVuaworNjM0NjIgMTJjYTFlODIwMjgyYmY0OWM1ZDk3ZWVmZDk3NzI3YWExYzE5MDUyMyBweTNrCis2MzQ2MyA0ZWNjZThmZWQ2ZTFkYjY0M2ZhY2NkYWU2OTA4M2I2NzQyZmRjMDcxIGxlZ2FjeS10cnVuaworNjM0NjQgOTVjYjAwOTM2NmRjYjkzMDk1ZTU4NTJiMjkyM2U4YjU5YjQwYjliOSBsZWdhY3ktdHJ1bmsKKzYzNDY1IDhiNjI4Y2EyMThmM2Q2YzM2MjliZWVjYTU5MDc3YzE0M2FkZDk1MTMgbGVnYWN5LXRydW5rCis2MzQ2NiBhMWY3MDQzNWQ4ZTM3M2Y5NjBiOTgyM2VlMmZjNzJiNjNmZTk0YWU2IHB5M2sKKzYzNDY3IGNhOGQ4YzhmMjk2MDMyNTM2ZWVjMDg5OGZkZmYxNTBlOGY3ZjRiZjIgbGVnYWN5LXRydW5rCis2MzQ2OCA4NTMyNmZiNzU1ZTI5OTBhMWRjMGIwYTQ4ZDMyMWFkNjNmZDFkZjQ0IGxlZ2FjeS10cnVuaworNjM0NjkgZTgwODUwMDU1YjkzMTcyYzE0MGJhMjEyYWNjYTNhMWU3Y2IwYzllZiBsZWdhY3ktdHJ1bmsKKzYzNDcwIGI4M2Q3ZDAyOWUwZTE3NWViNDk1MTYyMDQ0ODcyNDkxNzEyMmRlZjEgbGVnYWN5LXRydW5rCis2MzQ3OSA2M2RkZDNlZTRhMmQxZDc4MjhhYWM5MDA1MGM0NzA0OWZjNzQyNGYwIHB5M2sKKzYzNDgwIDg1YmEwODdjMGNjNzRiMmNmNzVlMGRhMDAxMDc4ZmQ4NDBkMTAyODEgbGVnYWN5LXRydW5rCis2MzQ4MSA0NTRkMzhjMWY0N2U5MWE4MDI0ZTZhZmFjZGM0NjM2YzUxYjU1M2Y1IGxlZ2FjeS10cnVuaworNjM0ODIgZWFhYTE5ZTk0OTk4M2M3MTZiYjA1NmEwN2M3NjlhYjdlODM3MjgzOSBweTNrCis2MzQ4MyBkMTdmYWM4OTZhMGJjNmJmZmNmMDllYjE3NGNhOTBmMWNmYmE1MDFhIGxlZ2FjeS10cnVuaworNjM0ODQgNzc1NTcyMTZiYTMyMWExNjE2MThkN2I5NzMzODlmZWFhOTc1ZDcwMSBsZWdhY3ktdHJ1bmsKKzYzNDg1IGQ1ZGQ4YTg1Mjk3MDU2YWVjZDdhZmMxMWUxMWM1ZTNjOThmZjVmOGUgbGVnYWN5LXRydW5rCis2MzQ4NiA1Y2VjNDM2ZDY0YTI4MTJhZjc1MmEwYjlmMjVmNTYxNTkwMGQ4OWM3IGxlZ2FjeS10cnVuaworNjM0ODcgYjUzNjA0ZmFkNTRiMGU2NjI5MDFhN2JhNWI0MTFhNzdhNDBmMWE3MSBsZWdhY3ktdHJ1bmsKKzYzNDg4IGFlMTkxMjAyMzJiNGE4ZTMzOTA1NjY0ZTE1MzJlM2U4YjU4YTgzZDcgbGVnYWN5LXRydW5rCis2MzQ4OSA3ZmM5NmQ3ZWNmMmVkNzFjYzFmMTc2ZDJiOGZmY2JlMWI4NTBmNzRkIGxlZ2FjeS10cnVuaworNjM0OTAgNTFlMzI0YjU3M2IwOTk0NmI3ZjEyYTc1YmZkNWQ1YjcyMDA4NGU3NSBsZWdhY3ktdHJ1bmsKKzYzNDkxIGE4ZjE1ODNiNzhmNmZlZTcxNzZmN2NlMmQwOGYzMGNjMGNiMDg1OTAgbGVnYWN5LXRydW5rCis2MzQ5MiA0YWQ0YmVmOTFlOGU3ZjQ0ODllOTcxZTE2ODI5MDYwYzI0YTk0YmFjIHB5M2sKKzYzNDkzIGY0MTliMmU5NmE5ODdjMWQzNmM3OGI4Nzg5YTI2YzM4Y2VhYmQwNTEgbGVnYWN5LXRydW5rCis2MzQ5NCAxNzNlNWU4YjNlNTllZDJhNGEwYmFhMTBiOTkwNDE1YjA5NjI2NmNlIGxlZ2FjeS10cnVuaworNjM0OTUgMDkxMjUxMWI5ODk3NjJiZDQ5OWRkZTAyNTA3MzljMDcxMDhjYTFhZiBsZWdhY3ktdHJ1bmsKKzYzNDk2IDMyYmQxODcwOWRmZGYwMDRlYWMzOWEwZWEwZmYwYjc2NTM4YzM5MzQgbGVnYWN5LXRydW5rCis2MzQ5NyAxNGViODA0YjNmYzdkZjFjMzIzNmZjY2ZjMTk1M2RiMDBlMDQ0NTMyIGxlZ2FjeS10cnVuaworNjM0OTggNTlhYjJjZjAwMmZhOGI1YWQ2ODc4MmNhMWM1ODdlOWMzMmI2OGNhMiBsZWdhY3ktdHJ1bmsKKzYzNDk5IDUyYTY2MzczNDM3ZDMyMzdjNGY5YjJmMmVhZGNjNmIyYjgyNmY0YjQgbGVnYWN5LXRydW5rCis2MzUwMCAxMmM1NmQyZWI0ZDk3OTk1OTQwMzQwNTdhMTAxNjE1YjZjZTdmYmRiIGxlZ2FjeS10cnVuaworNjM1MDEgZGUxMWJmODQ0OTFkNmNlNDE5NTIxY2RhNmE0MjNmODBiYjIyMGFjZCBsZWdhY3ktdHJ1bmsKKzYzNTA3IDQ2YmQ4Y2ZhNzU0YzU4OWEzNjVmZjgxM2ZkNzEyZWExODIyM2UzYzQgbGVnYWN5LXRydW5rCis2MzUwOCAzMjkxY2U0OTI4YmM0NDYyNmM2ZjIwY2VlM2E2OTI1MThkNTMxMjdjIGxlZ2FjeS10cnVuaworNjM1MTEgMjJkMmZiNzYxYWMxZDM0OTI5OTdjMzNkMjFlYjEzMzVkNThkN2M3MyBsZWdhY3ktdHJ1bmsKKzYzNTEyIDljOTMwYTMyY2ViYjI1NzhlZDMxNDhjMjU1ZDZiN2ViZDBiZjkzMTMgcHkzaworNjM1MTMgNTM4ZTQxMGMwMDg4MzE3ZjBlYzI1ZmYzM2Y1ZWM0NzRlMDFlMGU2ZSBsZWdhY3ktdHJ1bmsKKzYzNTE0IDU1YTUwZDM5MWJhOWE4MzkyN2FlZjA2NmExM2E4MjRjZWJhMGZiZTcgcHkzaworNjM1MTYgMmQ3ZmE4NGM4NzhkYjU5MmJhNTk1ZmZhYzg3ZGZkNzA4YzJjZWU1NiBsZWdhY3ktdHJ1bmsKKzYzNTE3IGQyOTAwNTBlZDhiMjJhMmM2MTcyMDkyZTJhZWMxZTg0M2MyOTAwMWQgdGxlZS1hc3Qtb3B0aW1pemUKKzYzNTE4IDdhYTlhZDY1ODAxNGE0M2JjNDYwNTU0ODY3ODgxZTZjMDRmOTlmMzMgcHkzaworNjM1MTkgOWRiY2EyNzU0YjQwNmMzYzIyZTY2MjJmYWExMDI5ZjdmOWU5MGJkNSBva2tvdG8tc2l6ZW9mCis2MzUyMCAxZDIyNzIzYTU3ODUyNDZkNmYyNzRiYmVmYjkwODc2NjViNmQ1NWE1IG9ra290by1zaXplb2YKKzYzNTIxIDM2MDc3NzY1ZTFjZjQ1OGEwYzcwOTg1NDY2MmUwMTQ4Mzg0Y2Q0YWMgb2trb3RvLXNpemVvZgorNjM1MjIgNzc5OGJjODZhYmEzMmExNWU3NjgyZTg5MjA3ZmUzNjYyNTBiMjAxNSBsZWdhY3ktdHJ1bmsKKzYzNTIzIDhjODFmYWEyMTBjMWRkZWYyMjAwZGYxNGQzZjZlOGQyODEzOTY3YzUgbGVnYWN5LXRydW5rCis2MzUyOCA1YmUyZDgyYWM1YWNkNTk1Nzg3N2Q4NzM3YmU1Y2NkNjJkYjAzMjU0IGxlZ2FjeS10cnVuaworNjM1MjkgY2RkMDAwMDYzMWNjNzg1YWUzODA4MTFmYzQ3YmFjODhlMGE2MzI0ZiBweTNrCis2MzUzMCAyYzM0ZjE5ZTM5MjJhNmFkMTQ4OTdiZmI3MzI4YzRiYTFmMjkyNjQ1IGxlZ2FjeS10cnVuaworNjM1MzEgYzZkYmM0MzIzYTIyZDI1ZTUwNTI5OGRlOTUyYjI1ZTI0YmE2Y2I1NyBsZWdhY3ktdHJ1bmsKKzYzNTM0IDgxYzNhNmY5ZDg1ZjBhM2RjMmE2M2M5NzZhZTg0ZjgwOWQ2ZDRiNjkgbGVnYWN5LXRydW5rCis2MzUzNyA0ZjZlYTVjNTlhYjMxYmE1ZjA1Yjk3OWRiOThjZTQwNmE1NjA4OTMxIGxlZ2FjeS10cnVuaworNjM1MzkgMzhhOTdkY2MyYzljNWE5M2VlOTBkYjQwMDYwY2ZhYzhjMDNhMmQ5NyBva2tvdG8tc2l6ZW9mCis2MzU0MCA3MTE0ZTFlZmUzZjk2NzRlOTJjZTlkMzY0Yjc0YzRmM2ZhOTQyMWZmIGxlZ2FjeS10cnVuaworNjM1NDEgYzUzNGI2OWFiODcxZDVhMTI4NjFiNGIyYWZiZDRhMGU2ZGM5NGU4MSBsZWdhY3ktdHJ1bmsKKzYzNTQyIDJmZmZkZWRiMTBmOGM0ODI1NTVjNTQxM2UyYzk5ZjZmMmU3NTc5Y2MgbGVnYWN5LXRydW5rCis2MzU0MyBlMTg1MjNmODQyZDdkMTM5NTBkZDk5OGEyMTViZTVmYTRmMDllMzBiIGxlZ2FjeS10cnVuaworNjM1NDQgNWEyOTU1MjQxMmZhMmJjNmVlOGEyMDJiNmI4NWIyNzcwNTgxNjcyMCBsZWdhY3ktdHJ1bmsKKzYzNTQ1IGJiMDQzMzJjN2YwMTc4MmJmYWYyOWIzMmRkYjE2MTU2YjdjOWYwOTkgbGVnYWN5LXRydW5rCis2MzU0NiA3MWRlZWU2Yjk0MWU5M2I4OTVjMWU0Y2RiYTY1NzZkOTA4OWZlMTJiIGxlZ2FjeS10cnVuaworNjM1NDcgOWZiYzQxYWJkZDRiZWUwYjhmNGU0NDE2MjQzYzk1ZjRmNDY1M2I0MiBsZWdhY3ktdHJ1bmsKKzYzNTQ4IDM0MmZiZGNjYjdkOTY5ZmZkZjcyZWE5YmMwYmU3MmMxZDViOTk0YzEgcHkzaworNjM1NDkgOTkxNzZiOWQ5MGIzN2ZmNmZkNzFiZDE0ZTAzNWY1ZmE3NTk1M2E1MiBsZWdhY3ktdHJ1bmsKKzYzNTUwIGUyYmVmNDRmNDU3ZGRjMjM3NDQwNjcwMmZhM2I1ZjM4ZmY2NDY3ODUgcHkzaworNjM1NTMgNTk0ODI4ZWEwM2ExMDVhZDQzZWNmNmEyNmEzMDE3YTIzNjQxN2I4OCBsZWdhY3ktdHJ1bmsKKzYzNTYxIGEzMGZlZGU4NzY0M2Q1YmIwMTZkYWVjNDZjYTI3N2ZiODUyZjA2ZjEgcmVsZWFzZTI1LW1haW50Cis2MzU2MiA1ZWM5NTI4YzkzZGVhYTU2ZGY5ODI1NzkyYTNkN2IzNzAxYzQ4NDBiIGxlZ2FjeS10cnVuaworNjM1NjMgNWQxOTI5OWVlMzQ2M2VkN2QzNzk4NDRlZjQyOGU5Y2I3OTE3OWQ1YiBsZWdhY3ktdHJ1bmsKKzYzNTY0IGM1YTg1ZTRmOWU4NjY2YjNkYWJmYTZjN2YzNjAyNzg5OWRhNDMzYjAgbGVnYWN5LXRydW5rCis2MzU2NSBhMjE4ZDVjYjI1OGIyMDgzMTMyODIzYTA5ZGRmOTJkOTU1OGIwYjFkIHB5M2sKKzYzNTY3IDQ2YzZiOTc4OWRkZWNjMzA2ODIwZjI2ZjBhNjkxZTk2YzU1NWEyYjUgbGVnYWN5LXRydW5rCis2MzU2OCAwMzRkNmM5ZTI2NzFmOWU1ZDMzYjM4YzUwYjgzNDBkODA2ZDMwZGM0IGxlZ2FjeS10cnVuaworNjM1NjkgMjdjMGQ3MzUxZWE4ZGZhYzRhZDMyNjdiM2JkNmQxMWM1ZmViZTQ3YSBsZWdhY3ktdHJ1bmsKKzYzNTcwIDcyN2ZkYjkwNjE5MTNlMjYyYjgzN2MyNDcxZjJjYTU2MzQ2YTljMzMgbGVnYWN5LXRydW5rCis2MzU3MiA1NTY4MDA1ZDIyMTczMjI1YjcwNjQxZWVlZDNmMmNjZmMxMmYwYmY3IHB5M2sKKzYzNTc1IDBkMGQ5NjQxZjliZDk3N2E1NTc5NTA1YTcwNWRjODVmYmNlNDkzM2QgbGVnYWN5LXRydW5rCis2MzU3NiA0NWZmNzM3NjcxZjYzMzlkYTljNTVhNGRmZTQ3ZjQ5YmNhZjQ0MjkwIGxlZ2FjeS10cnVuaworNjM1NzcgNmFiYzYzYzYxNTI2NWY5MWUyYTkwNmNhMTYyZmI2NGJhZmE3MDViNiBva2tvdG8tc2l6ZW9mCis2MzU3OCA5MDkxMmIxMGFlNzJmMzhjYWMzZDEyOWRhYjBmY2Y1MmI3NWVhYWJjIG9ra290by1zaXplb2YKKzYzNTc5IGZkMWEyZjQ5OTZlZjE2OTBjNTNmYjM4N2YwYjI1YWMyNjkwMzZjMmQgb2trb3RvLXNpemVvZgorNjM1ODYgMjhjZjk5YzE5M2M3ZDU2ZjIwMTM4ZDQ0NjU1YTdkZWQ1YjdmMjRhMSBsZWdhY3ktdHJ1bmsKKzYzNTg3IDBmNWYzMmJjZGM4ZmNmZGQxNTExNTBlZGZiMmQyYzVmMTU3MTE1NjEgbGVnYWN5LXRydW5rCis2MzU4OCAwNWFhMjFkNmRiZWJlNjI5OWZiZjk2NTRmN2YxOTkwZWM3M2Q2N2I0IGxlZ2FjeS10cnVuaworNjM1ODkgYmExZmE1MTFiNzJkMWZjNGIxNzU1NTAyZTk1NGY3ZjRmNDFmNWU5NSBsZWdhY3ktdHJ1bmsKKzYzNTkzIDIxOGExMDg2NzI4YWI2ODc3MDA3YzQxNGE0Njk0ZTMyYzJhZWZkY2Ygb2trb3RvLXNpemVvZgorNjM1OTQgODdiMTQ0MTg4OWE1MzMyZjE2OTY4Y2ZkYTkzYTE2MTMzYjZjNDZiZSBva2tvdG8tc2l6ZW9mCis2MzU5NSBmNWIwMjkwMjBlMDIzZmZkZmNlNWExNmI2ZDFjMzUyODVhNzE2YzVmIG9ra290by1zaXplb2YKKzYzNTk2IDY4MGJiOWRkNTgwNzQ0ZDFiN2Y0M2VjMmQxZTg5NWI0OTE4YTA4YjAgb2trb3RvLXNpemVvZgorNjM1OTcgMGZlY2QzODY3OTNlNjIwYThkMTFiNTE5OWQwNjhjYmY1MDA1NzFkNSBsZWdhY3ktdHJ1bmsKKzYzNTk4IDMzOWUxNzE4MzE1Y2Q4NjM0ZDc4YjViYzVmYzE5YWQ2NTc3NDI3MDQgbGVnYWN5LXRydW5rCis2MzU5OSAzNzY3YTVhYTk1NjAyNWI4ZjllYjBjMGViMDM3MjE4ZDgyZDEzNjM5IGxlZ2FjeS10cnVuaworNjM2MDAgY2IxYzg5YTQ0ZWRiNjUzNDQyYmNlOTNhMTlkMzY2NTk4MjEwMDQzYyBsZWdhY3ktdHJ1bmsKKzYzNjAxIDcxZmRiY2Q3YmFhOWE2YTc3NTMyYTRlY2NmYmY2ODkzNWMxMDBhZDIgbGVnYWN5LXRydW5rCis2MzYwMiAyNjBiNjJhYWZjYjQ5N2JkOTgwZGMzYzk1MmNiZDlkMjYyM2MxM2EyIHB5M2sKKzYzNjAzIDlhY2IzMTRiOTA3Mjc4ZjA0NjFiYTBlMGNhZTQ1YzUzNDM4NjgyNmUgbGVnYWN5LXRydW5rCis2MzYwNCA3M2IyNDEyN2Y3YjYzZGY5NzcyODM5NDkyZGE1ODJhMjI1MTQ3MzNmIGxlZ2FjeS10cnVuaworNjM2MDUgY2FmM2FjZGZlNWU0MzhkNjBjNjgyNzUyNWRhNTkxNjNjMzJkOWYyNCBsZWdhY3ktdHJ1bmsKKzYzNjA2IGFmZTE0OGE0YWQyN2RmYzUxNmI5NWFmNmFjZDg4MzZjYzU5NmExOGQgbGVnYWN5LXRydW5rCis2MzYwNyBlNTM0ZWUwYTRjZDA0NDFhNzAxY2MzOTE1NjM1YjYwOTMxMDZkNDU1IGxlZ2FjeS10cnVuaworNjM2MDkgODA2NTliOWE0Y2Q3ZDNiNjMxZDE2NmYyODQ2YWZhMTMyMTc3NzcxMyBweTNrCis2MzYxMCAxNTQ2YzFmYjhmODI4MzQ2NmM4Yjk3NWNjMDI1ZjgxMTI0YTFhMzJmIHB5M2sKKzYzNjExIGQxMjU5ZmZiMTAzYzI4Y2U1NWI5MjEzZTdmZDIxMGI4OGM2ZjVlY2EgbGVnYWN5LXRydW5rCis2MzYxNCBkNTU5MWMxNmI5OTdiMWEwM2ZlMTJlMjI5MDY5MGViYzFmMzcyMjdhIGxlZ2FjeS10cnVuaworNjM2MTUgNjBkZjhmNjU4NTc1YWNiZDFmMDI0ODhkODU0NDFmZWRkOWQzNzViYiBva2tvdG8tc2l6ZW9mCis2MzYxNiA4OTU3MDhiMDU2YjdiZDQyMTBkZjZmZWIxNTQxMmM1YWI0NWFhMjllIG9ra290by1zaXplb2YKKzYzNjE3IDk2NzAyNjI1Nzk2MTFmMWY5YTY2YmQzZDNkNjc2NDBiMjk3MDI2MjggbGVnYWN5LXRydW5rCis2MzYxOCAwMDkxMTllYjRkMmQ4MDAxOWU2OGNkNTI1OGQ0MWI3ODA0YTRkNjFlIGxlZ2FjeS10cnVuaworNjM2MTkgZDY4OGYzZjdjOGRmZDJlMGUzYzFlNWI2NDMwMTljZjBlYmY5YTcyNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM2MjAgNzcwZTRlMTMyNzc1YWEwYzVkYWE1NzUxMzc5ZGM3YjI5YWIxYWY3ZiBweTNrCis2MzYyMSA0OTkwNmQ0MzJiNDdiYWIwM2U0MTJkZTg4Y2Y2NWEzZGViYmI1ZDc1IHB5M2sKKzYzNjIyIDU2MGM5NzM5OGI4ZTUzNGVmNmQyZDEyMGViNWM4MWQ3NjBmODAzYjEgcHkzaworNjM2MjQgMzhiMWEwMTdkYmY2MDA3MWNhZmRmYzA0ODUwNDRlYTQ0YmI1ZTBkZCBweTNrCis2MzYyNSA4MTNlMGY4YTc0MWQ1OWJkNWNhN2I2NTA1NzY1NWViOWRkNzQyNTE3IGxlZ2FjeS10cnVuaworNjM2MjYgMjZiMzU5ZTIzN2I1NGQ5YTZkYjgwNTMyZTY0ODM0NGUwODJhNDFmNyByZWxlYXNlMjUtbWFpbnQKKzYzNjMwIDQ2ZjM1MWVlOWQ1ZWQ0MTMwMzRmMmU5ZjM3NTM0ZmY0MWEyODFkY2QgbGVnYWN5LXRydW5rCis2MzYzMSA3ZmUzYTg2NDhjZTI0MmY1YjJkNmNiZjE3MDNiZWU4YzRlYjk0NjdiIHB5M2sKKzYzNjM0IDZlZGM4MGQ0MjAyMTE0N2M1MmFiZjdmOTI1N2JlNDIzMWIyYmIyNTIgbGVnYWN5LXRydW5rCis2MzYzNSA5MzgyNmIzNWZhY2NlNjZiZGZlMWFjZTRhMGI3OWQxY2VjMDI2ZWZmIHB5M2sKKzYzNjM2IDgyNzI1NDM4NDUzYmE5Y2U2N2E2NjdjZmQwNWYxYzQ4YTJiNWU5ZWUgcHkzaworNjM2MzggMzE2NjExZmIxMjY4MmY3MGI0ZDU3NjE3MDA0N2Q4YTk4ZGE2OTgwZCBsZWdhY3ktdHJ1bmsKKzYzNjM5IDUxMTliYzc3YmQ2ZGRlMzMyNTg0NmM5MzFlNzBkYjRiMjYwMDAwNTggcHkzaworNjM2NDAgNDBhMTYzMGVmMmNmODQ2MWExZDE2ZjRhNzk2Y2FiYmRlNzk0MmQyMiBweTNrCis2MzY0MSA3ZGY0YmE0ODQwNThmZGNmMTExOWEyNGEwYTAxN2U3NTQ1MjYxZTU5IHB5M2sKKzYzNjQyIDFjNTFhYmViOTI1ZmU2ODQ1YWMyYmI0YzEwNjg2NjE2NWIzMzBmOGYgcHkzaworNjM2NDQgYWUwMTg2OWY2MmJlOGJlZjVlNjYyYmQ4MjAyZWJlNDI5OWZlYTFkYiBsZWdhY3ktdHJ1bmsKKzYzNjQ1IGQ3YmYyNjY5ZmU2NjA4OGE0NGY4ZjIyZGI2YWY4Zjc4ZWZiZjIxZDcgcHkzaworNjM2NDYgMDhjZTE5MmYyNGIwNDIzNTJiMzljYjA2MDQxNzExNmM2ZGJiNDAyNCBweTNrCis2MzY0NyBmNzYyYTlhYjY5ZGQxOGJlOTQwMmYyODMwZGQzNWE3NWE5YzhlM2Y3IHB5M2sKKzYzNjQ4IGM5ZDcxN2I1YjdhMjQ2YzRhMjZjMzYwMzBmMDIzZTk0MDk5MDAwYzMgcHkzaworNjM2NDkgNjU5NTNhZTk4MTIyNzkzZGY4NzMxMjFiNTY2NTM4NGM2NTZhM2M5YSBsZWdhY3ktdHJ1bmsKKzYzNjUyIDhjMmY1YWFjYzFiYzk4M2MwYzc0MTQ4Njc0MTRkMDkyY2RkZmI4ZjUgcHkzaworNjM2NTUgNzBmOWE1ZGIyNzljMjBmMjNlMThmNTFjYjYwNDdjY2IxYjE0NWFjNSBsZWdhY3ktdHJ1bmsKKzYzNjU2IGYyOGNiYWIxMWFjZDc0Y2IwMTc0ZjgxYmI3OTZkMTkxNjEzMWQ3MWIgcHkzaworNjM2NTggZTI0MjAyNjFkNGEzMDBjNTU4MTFjYTZhZDcwNjU5ZmY0ZmI1NDVjOSBva2tvdG8tc2l6ZW9mCis2MzY1OSA1NDExYjZhMjI2ZTVhYjE5NTI4NzU3MGVhN2FhZDM5NTljMmQ0ZGZjIG9ra290by1zaXplb2YKKzYzNjYwIDBmZDU1M2FkNTNmNjQ2NDE0MTZmOTQ2NDZlYzBmNjY4MDRmNGE0MzEgbGVnYWN5LXRydW5rCis2MzY2MiBhZmJkZTM2MGRkMWE5NWRhZmZjNjQ4YzBkNmJlMWUzZTM5Mjc3Nzg0IHB5M2sKKzYzNjYzIDZkM2UxMzMwYTNhYTg0YWQ3NDY1MzNlYmEyNDMyZTM0ODg5OGJiZjUgcHkzaworNjM2NjUgZTcyNWZmMTgzNDJiMTNmY2FjMGFmODZmYjdiNzFhNzk4OTQ3MDcxMiBsZWdhY3ktdHJ1bmsKKzYzNjY3IDM0NmE5OWRmNTg4OWFiYTRkYzk0ZDViZTQzM2RjOWU4YjVhYzZiZGUgcHkzaworNjM2NjkgMGE0NTUwODE0MzIwN2RkODJhZDYyOTdkNmRjNmFkZDdlODA4ZmZjYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM2NzAgMGI5NzQyNThlMTViODMyZjVhNmIwOWYxNmNiOGI4ZjA3MDYyYWZhZCBsZWdhY3ktdHJ1bmsKKzYzNjcxIGI5ZWFiNzQ5YmE2NjAwNzVmYjMzNWI5OTIxZjFjYzNiOGRjZGFlYmYgcHkzaworNjM2NzIgMDRiZDM2OTBmYjFmZTVhMzgxNTY0ZjY1ZmZkMzE0Nzg2YThmZWM5YiBsZWdhY3ktdHJ1bmsKKzYzNjczIGFiYWZjY2ZlNzUwMWMyMzFjZDg2YmIzZTQ0YjQxMWNiNjYzMjI1NjUgbGVnYWN5LXRydW5rCis2MzY3NCAzMjY0YWFmN2NmMzAzZjA1YmE3MjJmZDIzY2QyMmUyYjE5ZjUxYjVlIHB5M2sKKzYzNjc1IDRmZTE5MmQ0ODk2MDMyZjM1NjA2MDA1Y2RkZjFhMTFjNTNjZDgzZDggbGVnYWN5LXRydW5rCis2MzY3NiA2NTNkMDRmMzA0Mjg3NzFkNmFkYTU0YmJhNjRkZDgyOWNjNTMwYWU2IHB5M2sKKzYzNjc3IGU5MjM5YWQ3YjhjMDcwMjdjZGFiOWRlNTAzOGI0ZmY2MDk4ODZmNzcgbGVnYWN5LXRydW5rCis2MzY3OCA0ZDk4ZWJhZWQyNzgzNmY3NzJhN2NjMjljN2IwNzZjNGVjMWE2Yzg3IGxlZ2FjeS10cnVuaworNjM2NzkgMTk0YmJmMDRiMDE1NDQyNWMxNTNlZDkzNzNiMjk0ZGU3NGU2OWRiZiBsZWdhY3ktdHJ1bmsKKzYzNjgwIDJjY2IzNGQ1MzdkYjY0ZTY1MGVjMWUwM2EzODU2NjI1ZTRiMjljYjQgcHkzaworNjM2ODEgOTZiMzQyNjNlNDQ4ZDRjYjM3ZjVmYWEyZWEyMjkzMTY0MjQ3ZDgwZiBweTNrCis2MzY4MiAyM2FiNTg2YzQyN2EzN2UyMWY2MWRlMjc2ZjAzMmEyZTJkODIwNTg2IHB5M2sKKzYzNjgzIDgxMWE4MDY1MTIzMmU4ZDA4NTRlZjgyNjI4YzY1NmYwYTcwNjJmNTQgcHkzaworNjM2ODQgOGNjM2FkOGJmN2M0ZTY3YWQzOTZlNzEwNzM4NWVmMWUyYWI3NzE0NyBweTNrCis2MzY4NSBlM2UwYzFhNjUyMDQ5ZmU5ZmVjNzVmZmE3NWQxNzAzZDVjMGNiMzZjIGxlZ2FjeS10cnVuaworNjM2ODYgNzA4YTU2MTI3OWNhYjQ2MTFjMDBkMWMzZjQ5NzQwYzMwN2M5ZDAzMCBsZWdhY3ktdHJ1bmsKKzYzNjg3IDlhMGQ0ZGMwN2M4OTU0Y2FiZTQ4NzkzZDYwM2IxOWM1Y2Y0ZTY1MzcgcHkzaworNjM2ODggMzRlNDFmNGU5NjJmMTRjMWRhNTVkNDk0YjUzNDYxNjA5NWIzNzVhZCBsZWdhY3ktdHJ1bmsKKzYzNjg5IDRhYjNlN2FjOGJmNGFhMzY2MDQyMDgxN2RjNjU1NDQyYWQ4NjY4MmYgcHkzaworNjM2OTAgMTdiOGY0NDVkMDQzMWVkMGZjOTE2ZDE4MDI2NWMwNzhkZjJiMGJiZiBsZWdhY3ktdHJ1bmsKKzYzNjkxIDY2MmQxNWFmNTJkZjY2NjU0ZWI1NDZlYWM4ZGJiOGJmYjdlYjViODMgbGVnYWN5LXRydW5rCis2MzY5MiBhOTQ2YmY3NjY2NTQ0MDg2NWQwMmY4ZDQxNGVkMjU3ZTQ3NjI3OThlIHB5M2sKKzYzNjkzIGNlOWNkY2ViYWVmMDI0N2JiOGJhYzhmNmExYTYwOGIxNWUyZjA4ZGQgcHkzaworNjM2OTQgYTZkNjE3NzA4NjY1YWY2N2RlYzkwYTY5MTUxMjcyODgxMmFlNjhiYyBweTNrCis2MzY5NiA3MDEwNGEzZTFkOWQzOTk5MzI0MmM3YWQ4YmI1ZDY3YjNjMDg3OTVkIGxlZ2FjeS10cnVuaworNjM2OTcgYmRhMTU4NTlmNjU4ZjIyMTBmYTU4Y2U5ZGI1OTcxNjEyYWM3MzQ0NyBweTNrCis2MzY5OCBjNTYwNGJlN2FjZGZlMGEzNzc5YjJhZmM1MDRmZDljOGU1ODcxNmU2IGxlZ2FjeS10cnVuaworNjM2OTkgYmE4MDE1ZTIzNDg3MjA1NDQzYzJiNTY0YjFiOGM2ZTUyNmU0M2RhNiBweTNrCis2MzcwMCBlMWZjYzM4ODFjYjY4NzViNGRmNzFjMTMxMGUxNjRjM2RmYWY1YTcxIHB5M2sKKzYzNzAyIGUwMTdlMWZkZTM2OTJlMjllYWIwMDlmNTg0YWQ0NmRhOTAwYjRhNWUgcHkzaworNjM3MDMgMzk3NWVjMmIwZGUyYWYyNDI1NzVhOTkzOTQwOWZjYTM4NmY2ZjY2NiBweTNrCis2MzcwNCBmY2Q0NTZhZTUxNWJhODgxODZkMjE2OWY3MjgwYmU2MWEyY2Q3ZTBmIGxlZ2FjeS10cnVuaworNjM3MDUgMDI3Yzg4N2U5ZGE5MjM2ODdmYTY3YTg0NzllNDY4NDI5MGJiMWZiMiBweTNrCis2MzcwNiBiYzRkZjUxYzAxZDUyNTUxNzFlZDYyZmU5NGNiNTQ4YzJlOGIxNjQ3IHB5M2sKKzYzNzA3IDdjNWI1ZjBlYjMwZDk1MGI4ZjBlNTEyZjliZTA1ZjNiNzdkMDYyOWIgcHkzaworNjM3MDggZGJkOWFkNTJiNGQwZTlmY2YxMDcxOWIyYjVjNGNmZDM3M2EzMzc5MiBweTNrCis2MzcwOSA3OWM3ZTg0OGVhMTdjYzkxYzUyNjVmYzVlZWJkNjNmZTAxNGQ2MGYwIHB5M2sKKzYzNzEwIDZiOTczZDkzNmIwNzk3MTYwY2MxNmI1ZTQ3MTU2OGY1NmVlOGFlYmYgcHkzaworNjM3MTIgYzJhMGE3MDg0NjJlYmEyN2ExYjM1MDMwZWQzZjU0NjBlZWI3ODg0NSBweTNrCis2MzcxMyAwNjE5M2UzZGY0MTZmNWIyNzJjOTg1ZGY1NTM1MDNjZWYxOWZlM2Y3IHB5M2sKKzYzNzE0IDhmZjBiOTI1ZWE2NDg4NTk5NTZkOTliNjFhZGZjYzY5NjRhOTBhOWUgbGVnYWN5LXRydW5rCis2MzcxNSAwNTI1Y2Q1YjI1ODI5MDA2OGY3ZmRjY2RiYmUzNGI3YmNhY2MyY2NmIHB5M2sKKzYzNzE3IDZmMWE2MzJjYjJlNTMyYjgzZjljYjViN2FmOTc4ZmQyY2UxMmI2YzYgcHkzaworNjM3MTggM2M3MGQ2OGJlYjMwOTU3YTk3NjljN2YwYTNmZWZlMGM4MDI5MThmZCBsZWdhY3ktdHJ1bmsKKzYzNzE5IGY2MWI2YzMxMDAxY2I1ZmM2MjBlNTBmYTAzMWIzMDI2MjMwN2VkMjEgbGVnYWN5LXRydW5rCis2MzcyMCA3ODllMGYxNWMzN2I2ZjYyN2FhNTg1OGNjYmZjMzlhMTVjYTUxNDQzIHB5M2sKKzYzNzIxIDJmOTMxOTE2OWZlYzljNjMwZDgzMzhmMTk0YjE1MmU2ZTZjZmM2OWUgbGVnYWN5LXRydW5rCis2MzcyMiA1OTdkOGZkNTY5M2U0Mzk2MTcwYTU1MmFkZDM2YzAwY2FhYjgyNTRhIHB5M2sKKzYzNzI0IDI3M2U4ZGUzNDYwM2RjYTI3ZGVjNDU1MjZjMjMyMmFmMjA1ZmMyYzggbGVnYWN5LXRydW5rCis2MzcyNSBjNGE0NThlY2QyZWQ3ZjAwMmUxZGMwYWRiYzIyMTljZWI2MjA3OTI0IGxlZ2FjeS10cnVuaworNjM3MjYgZjZjODhmMTcyYmJlYzY4YzgyNTY5OGM4YWY2ZjAxNTRhNWZlMzg5MyBsZWdhY3ktdHJ1bmsKKzYzNzI3IGM5MWIzN2RiYmEzZjE4YmRjMzYwNDc2MzI5ODAwNmY5ZmIzMzc1MzYgcHkzaworNjM3MjggYThjYzhlNmYwYzFhNjkwMGI0OWQ2MTVlY2MxNzFkNWY1NjRjMmIwZiBsZWdhY3ktdHJ1bmsKKzYzNzMxIDYxYTU2OTdhNzYyNjUxZmZlZWJkMWI2NDgwMmI3YzI0MDA3NjdlNmIgcHkzaworNjM3MzIgMTQ3NGYyNTEyOGM0NGVjYTgwM2EzZTk1MGJkZDI2MTc4N2I4MTFhNiBsZWdhY3ktdHJ1bmsKKzYzNzM0IGUxYTRiZjkxYjJhZWRjNDBlNGQwYmI1NDMwYTU2NmExYTRjNGRiZTAgbGVnYWN5LXRydW5rCis2MzczNSAyMzM3OTY5NWI0ZGIyODBjNDdkY2JlNTMxMjQ5ZGI2OTQ0YmM1MGUyIHB5M2sKKzYzNzM2IDM0M2FhYWE4MDJlODEwNDJlNWVjOWQ1NzEwYTY1ZWNmYThjOTkzYzQgbGVnYWN5LXRydW5rCis2MzczNyBkYzI3YjNiNDZmMGRmYzIwYzk1ZmE4NjYyNDEzMTYxNjJmZjhlMzdjIHB5M2sKKzYzNzM4IGU0MTA0NTk3YzJhM2VmNzYyZDk2MjFiYjU5OTI0ZDU3NWViZDRkOTAgbGVnYWN5LXRydW5rCis2MzczOSA1MWM2M2I3ZWMxYThiY2VhODQzYzk2NWE3ZDQzYTZiZmZiMTU1YTMyIHB5M2sKKzYzNzQyIDUwMmU3MmYyOGU5ZWM3ZDU1MjQwZTUxZGMzYTIxODU0ZTg5YWNiMzUgbGVnYWN5LXRydW5rCis2Mzc0MyBmOTRhY2FiNzhhYTk5ZDdiZTM1M2RmNDEwYmY2Mjg4NDIzYzY2NzJhIG9ra290by1zaXplb2YKKzYzNzQ0IDNlYWE3MjM2NzEzZmExNzY1ZmZlMzYyZmFjMGQ2MGQ5NWE0ZGFjMzIgbGVnYWN5LXRydW5rCis2Mzc0NSA0YTdmMzQ4MGY0NTRkYjc2N2RlMjQyNGY5MDRjN2IwZTczOThmOWRlIGxlZ2FjeS10cnVuaworNjM3NDYgNGQzZTk1MzczZDllMjQwZjE1ZDYzY2I2YjVhODM2YjRhNDY5ZmE1ZCBva2tvdG8tc2l6ZW9mCis2Mzc0NyA0MzRmMWQ1YWNmZTRjZTg1ZWMzZDhmYzNjMjdlMGRkNDBkNjNjMjQ4IG9ra290by1zaXplb2YKKzYzNzQ4IDg0OTQ2ZjQ1NTNmMTM5OWZmNWE3YmY1ODgwMzJjYTY1MjQ0ZTM1MzMgb2trb3RvLXNpemVvZgorNjM3NDkgNDkzYjMyYzdkMTIxMjI3N2NjZjkwZDEzNTdkMmVlYjBjNDFmN2Q4NyBva2tvdG8tc2l6ZW9mCis2Mzc1MyA0ZWUyOWZmZDI4NTY4NjVhNTRhMWU1NGYyZThhZjEzZWNkMDgxOTZkIHB5M2sKKzYzNzU0IDc3ZjhhZThmYzcwYjRhMDliNTViYzljMzU3NzhkMDA3MDBmOWJkYzYgbGVnYWN5LXRydW5rCis2Mzc1NSA2N2Y0Yjc3NjdhMGFiMTFhYWQzYTY2OTY5NjU0MTU3OTljMTMxYmI3IGxlZ2FjeS10cnVuaworNjM3NTYgYjk3ZGQ1ODg5MjQ2OTlmYjNiNWUyMWRiNTQ4YmNkOTM5MGY0ZjUxOSBweTNrCis2Mzc1NyA5M2ZlOTEzZmFlNTU0N2ExOWMyMTNmNjAyYzcyYmYzMzk3N2E0NzAyIGxlZ2FjeS10cnVuaworNjM3NTggMDkwNjViMDEwYzk1MDhhNzc5YzBjM2YxMGEwMWU4ZDNjYzFhM2YzYyBsZWdhY3ktdHJ1bmsKKzYzNzYwIDdhZTc5ZTk2ZmM0MmY4ZjNlZmEwOWE4MGRjODZhZDI1NWQ5NWFjZmUgbGVnYWN5LXRydW5rCis2Mzc2MSAxMjUyNDdlY2U1NjI1MmE2ODFmNWQyNWIxMmNiMzYzNWMwMzliN2JkIG9ra290by1zaXplb2YKKzYzNzYyIGExY2I1NDMwOWI0ZDRmNDM2MGE4ZGEyYjE1MDk0ZDA1OWRmOWVmZTggcHkzaworNjM3NjMgZGNkNmJmYjBkYjQzOWM5ZDE2N2E3YWE0MjQyZDZlYjVlMTgwZDA1MSBva2tvdG8tc2l6ZW9mCis2Mzc2NCAyM2I5OGY3ZWY0NTQ3Njc4N2IxMzIxMGRmYThlOGI4ZGVhMDJjODliIG9ra290by1zaXplb2YKKzYzNzY1IDc5ZjMxMjdmMWQ3MjcwZGViMDYxMDg0ZWQ3Y2Y4ZDI4OTVhN2FlNDUgb2trb3RvLXNpemVvZgorNjM3NjYgMDcyYmZiYjY1NDg0ODVlNDNhYjNmYjM4OWE4MGMwMzhlMDEzNDE0NiBva2tvdG8tc2l6ZW9mCis2Mzc2NyAxNTY3NDZhNjNhNWM4ZjMzMjdjOGJlY2M3OGZmMjUyNTM3ZTQzY2YzIGxlZ2FjeS10cnVuaworNjM3NjggNzY1MjkzNmZhZDM5ZjhiN2UwZjZiZWQzM2VlMDJlNDczZGZjNTNhMSBweTNrCis2Mzc3NSA1ZTIzYjBmY2M3OGVlNmE0M2RjN2UzMjdlZjNkYTM4ZTkxOGVhNmNhIGxlZ2FjeS10cnVuaworNjM3NzYgMjljOTUzNmMwNGFkNDg3NjllZDk3MzZiYTI3N2E0Mjc0YjYwNmJmYyBsZWdhY3ktdHJ1bmsKKzYzNzc3IGI2Y2JlYzQ5OTc1NjIyZDY5NzI3YmMzOWU0NTUxYTc3M2M1NWIzMzMgcHkzaworNjM3NzkgYjE0YzRiNWJhYjA4ZDM2ZmZiOTI1Mjk2MGZhZDMwZjBjZDQ1MTE0ZCBweTNrCis2Mzc4MSAwMDE1NDU2N2Q1OTM1YjI4NGNhYzI1NzMyYmU4OTg4ZTAzNzMyMTdhIGxlZ2FjeS10cnVuaworNjM3ODIgZWY1MWZjZGEzNDhiZjkyM2RkOTgyZWE3MmJiMjM2NjdjMDYwMTIyMyBsZWdhY3ktdHJ1bmsKKzYzNzgzIDYzYjQ3NDU1NjFjMzQzNmVmNWQ3MjAzYWJkZDM2ZjljNTlmZmM4NjMgb2trb3RvLXNpemVvZgorNjM3ODQgOWU2ZTZiODE3ZjMyMDJlMzBkYmNjODg0OTVhZmE2NjVmZTMxMDQ0YiBsZWdhY3ktdHJ1bmsKKzYzNzg1IGZiMmQ5YjBiNDQ3MDMyYTFmN2RhZjM4MWY1ZWZkOTI5OTc5ZTBkNGMgb2trb3RvLXNpemVvZgorNjM3ODcgZTgxZDAyZDA5Njk3NGYxMzA1ZTUyNDE0MjEzOTgyMDlkNzAxYTg2OSBsZWdhY3ktdHJ1bmsKKzYzNzg4IGUyYzVhZTMwY2ZmZWFjZDQ4YTBlZmQ1NjFkM2QyMTY3NTExZTA2NjcgbGVnYWN5LXRydW5rCis2Mzc5MSBjNTk1ZGEwNTVmZDA5MjIxMmZhYTZjZDU2MzgxMWU2Y2UzNWU2NzAyIGxlZ2FjeS10cnVuaworNjM3OTIgYzkwY2RkODM1OTYwNmU0MzcxN2JhMGQ5ODAxOGYwYjE4MzdkYjM5MyBsZWdhY3ktdHJ1bmsKKzYzNzkzIDM5ODY5ODAzYmZhZWVkZDA2MDQzY2U0NzM4NDk1NmY4MDM5NTA5MWEgcHkzaworNjM3OTUgYWVhM2M1NTQzZDQzZjJiOWQ1MWMzNzg1Njc4M2JkY2QyOWI0ZTk1MCBweTNrCis2Mzc5NiAzNjZhNDM1NTExZGQ1ZDRhYzQwNTk0MjJkMDI0OGVkNDk5YTA4ZDM1IHB5M2sKKzYzNzk4IDFkMjliZmEyNzM2ODFiOTQyYWQ4OGVjODEyZTVhMmY0NGNmNTg0MDUgcHkzaworNjM3OTkgOTIyZTVhMjRjYzgyZTllZmRhNDg4Njc4MzI5NjZmZTdlZTcwNTllYSBsZWdhY3ktdHJ1bmsKKzYzODAwIDIzOTFkYTZjNDJlZjA4YTE2YzcxY2Q2YTZiOGRjMTJjNjQzNjlkNDYgbGVnYWN5LXRydW5rCis2MzgwMSAyNjNmZDZmYmFjYWM1ODQ1ZTk0NjI0NDEzMTFkYjFjMDJiODNiYmI3IHB5M2sKKzYzODAyIDg4MmFhMTQ2NjVlNDdmMWZkODgwNzc4MmQwNjQ0OTE4YTUwMzk1NTIgbGVnYWN5LXRydW5rCis2MzgwMyAwMTlkM2IxMTBhNmVlZTlhNGEzZDY2NTY0OTQ1NTIzMWZhOWY2ZTJlIHB5M2sKKzYzODA0IGNmNWYyNzMxZmM1NjA3MThjMWYzOTFiYjNiOWYxYjIzYzg1YmMyMDMgcHkzaworNjM4MDUgMWUxZGY4OTIwOTVhNzE0MTU0MTA0NWE0NmE2NmU2MGI2NWRiOGFkOCBsZWdhY3ktdHJ1bmsKKzYzODA2IGVhMjczYzhlM2VhYTMwNTQ0MGVkZjFlMTBlZDM2MDRmZmI2YjBjNTcgbGVnYWN5LXRydW5rCis2MzgwNyAzMzg2NWJiNTgzOTYyZjI1MzA1NjlhN2E0M2JmNWRhNzM5N2JhMDA2IGxlZ2FjeS10cnVuaworNjM4MDggZDY2MzljZDk1NzVmZjIwYWVlYzI5ZDBjOGEwZGRlNzcwNjM1YTE4YiBsZWdhY3ktdHJ1bmsKKzYzODA5IDZjZTQ0MzVmMTVhZDRlOGVkY2Y5ZjI4NzY1Y2YyYTA4MDBkYzRhYzcgcHkzaworNjM4MTAgMGU5MTY5MGRhZTJmNjM5NmNhZjQyMThjZTI0MTdjYzVlOTQ0MmQxOSBweTNrCis2MzgxMSBlY2E4ODI3MzExOTRjZGFjNDE1MTNlNzYwOTQzOTljOWYwOGQ2YTM3IHB5M2sKKzYzODE0IDQ3ZWY5YTgwNmNlOTdiZTc2OWE0MzExNTQyNWU4NDg3YjEwNjk3NjYgbGVnYWN5LXRydW5rCis2MzgxNSAwZGEyN2ZkZjAxOTIwNTc0OGZjNjY4MDdjN2U2YjBlYjk1MjA4MDJiIHB5M2sKKzYzODE2IGM0MWMzOTU0NThlYjAyOGMxZjg0NDk3MmIwOGY4NDE0OWE4NzA5MjQgcHkzaworNjM4MTcgYmJhMjlmNDYyYmNjNjkwNDk3M2JkZWQxN2M4MGVjZjhkNGFkZGIzYyBsZWdhY3ktdHJ1bmsKKzYzODE4IDEwNWFkNjEzMjVhYzFjMjJhMGM1MDg4MTQyOTYzZGI5ODI4N2FmOWIgbGVnYWN5LXRydW5rCis2MzgxOSAyMTUxMGNjMGMyZTQyYjdiZjBiNTc3ZjBjMjhmM2Q1Y2NhZWZjYWY5IGxlZ2FjeS10cnVuaworNjM4MjMgMGIyN2NlM2M2YjIxYzljYWY3OGY3NDY1NGUxZDcxYjg1YTk1N2UwZCBsZWdhY3ktdHJ1bmsKKzYzODI0IDNkY2Q3MDAwNDY5NmZkZjg3MzMwNDExOTA1ZDhjMGIxYjBiNjkwZTIgbGVnYWN5LXRydW5rCis2MzgyNSBhMmU3MmVjZGJlMDJiZTg3ZTA4ODdmNDcwNzkzNGU5OGQ5M2JjMDc5IHB5M2sKKzYzODI2IGMwNGFhNGFhYmUxN2ViZDk1YzhjOGRlMzcxMjI2ZWZhNWIxOTE0MjkgcHkzaworNjM4MjcgMmU4NzY5ZDVhNzg2Yjk1NDRjMmZiOTQ4NmQyZDBiZDFlYTliNWYyMSBsZWdhY3ktdHJ1bmsKKzYzODI4IGZmNmNjOWQ0ZmZkMzVhZTUxYWMxZjk2YTAzZDQzYTZkZjFhNTYwMzIgbGVnYWN5LXRydW5rCis2MzgyOSAwM2FmZTY5ODVlNWRmNzgwMjA2YjE5MDU4OGM2NDQ0NmU0ZTIwOTBjIGxlZ2FjeS10cnVuaworNjM4MjkgODJhNDdkNzhkMjc4Yjk3NjM1YjUxM2ViYjg5YThhZjUxZmJlYTM0OCBweTNrCis2MzgzMCBhZjM2ODVmYTljYTkxNDgyNTY1MmE0ZTViZGZkNjhkYWI3NTc3ZDg1IGxlZ2FjeS10cnVuaworNjM4MzEgNTFhODY1MzEyOGUzYWQ1ZjM5ZDU2NjNlYWRkMTU2OWEyYmYzZDU5NCBsZWdhY3ktdHJ1bmsKKzYzODM3IGJlZTI3MWU3NmEzZTUzMTFiNzEyYWU4ZDE3ZDIyY2VkZmUzZTIyYTEgYmVuamFtaW5wLXRlc3RpbmcKKzYzODM4IDA3NWM2YmQyMGYwNzgwNGRiNmZmOWZlOGUzY2E0MmQ4NGY5NDg2M2YgcmVsZWFzZTI1LW1haW50Cis2MzgzOSAwMTU2YzMzNmU2YjNkNTFlYWJmNmJhNTUyNjYzZmNlNzU5ZGQ1NTQ3IGxlZ2FjeS10cnVuaworNjM4NDMgMWJkZjA3NDA5NDAzYjRiNTU3ODI4NzFlNmRhMWFhYWU2ZDM2MmI2MiBweTNrCis2Mzg0NCAyZjVlZGUwMGZhOWVlMTdhYWY0NGNhMTFkNGYxNTQyZjE4MWJkMzEyIHB5M2sKKzYzODQ1IGM0ZTJlZjA5YTJmMDRiMjk3NDE0YzhhNmNmMzQyMTZjZjYwMjM2Y2QgcHkzaworNjM4NDYgMTA2MmI3ZGVjOTViN2E2N2EwZWRjOTg5ZmIxZDk2NGVjMjYxYzZlMSBsZWdhY3ktdHJ1bmsKKzYzODQ3IGQyMzYyZjk5YTQwMzY4Yzg5N2I1MzM0MjZkMjAyYzliODg4MGMwZTAgcHkzaworNjM4NDggNjIyY2FiYmFmMmJjZTk5N2Y1OWJkY2FmMWFlMzJlZGI4ZGMwMTljMSBsZWdhY3ktdHJ1bmsKKzYzODQ5IDJhNjNhYjM1OTVhMTllMjkzMWQzYjRkOWI4MjE0NWRmYjBlYThmMzEgbGVnYWN5LXRydW5rCis2Mzg1MCBlY2YyZWQwOTU4ODE1NTdlNmIyOGE3OTRiMDllMDNkNTQzN2RmMTc5IHB5M2sKKzYzODUxIGIxMzA0NGQ1NTRhZmRiMzEyMDgxZGUxYzQ4OGEwYzllMzI0ODA4ZGIgcHkzaworNjM4NTMgODNhMTAwMDJmZWRiZGE4NDk0MTYwMzI5NDhkM2I1NWE2MDg3NTE1OSB0bGVlLWFzdC1vcHRpbWl6ZQorNjM4NTQgNjUzMDI2NDE0Mzc2YzgzYTZjZDhlODM2OGQxMDU1NzkxMmUwNDUyNCB0bGVlLWFzdC1vcHRpbWl6ZQorNjM4NTYgODhiZDA3YzBhODQ3ZDAzNDExNzRlMjVlOGU2ODQ2YTBiZjI0YTczNiBsZWdhY3ktdHJ1bmsKKzYzODU3IGJlYTNjMWY1MmUwNWI4ODc0ZWIwMjAxMTNiMzdkY2E5YTg3N2MyYjggdGxlZS1hc3Qtb3B0aW1pemUKKzYzODU4IGU4Nzk3ZTZlMDdhNzQwNWVjNTA1Mzg1ODY0MGYxY2ZlM2VkZDhlYjIgbGVnYWN5LXRydW5rCis2Mzg1OSBhNjVmMDk1YjI3ZjNjYzQwODU2YzUxNzZhNTQxNWJiZjkwYmJlNjEyIGxlZ2FjeS10cnVuaworNjM4NjAgMzcwMjcyOWEyNDcwNzNhMDUyODgwODViNTQ2OWQ5OTM0NTUzMGY0NCBsZWdhY3ktdHJ1bmsKKzYzODYxIGZjZjlkOTVlZjUwZDc4YjMzMWY0Yzg2M2ExNDEyMjNiZmRhZTdjMjIgbGVnYWN5LXRydW5rCis2Mzg2MiBjZmI1NDkxMDAxZDAyYWU0YjgxNWYzYTRhYmQzNzlmZjUyZWEzY2VlIHB5M2sKKzYzODYzIGU3ZjBmZDgzNThmNWFlZjc0MTc5ODNkYWIzMDVmZDFjYTljYmM0ZWIgbGVnYWN5LXRydW5rCis2Mzg2NCA0ZGVkZWY0YzBkZmQyOTA5MjU5MDUxMzJkNjY2YzBjYjUxNWQ0MTczIHB5M2sKKzYzODY1IGMwZmU1NGEwMjhlMzY1OTIwMTNhZmZjZTg0ZDVmZGViNTNkNWE1NTcgbGVnYWN5LXRydW5rCis2Mzg2NiAzMTQ3NmRiOTlhYzMxZmYyYTg0MmM4ZDA1YTk4OWZkZWRjNzZhZDQ3IHB5M2sKKzYzODY3IDA2ZDc4NTZjYTlmNDZhOGZlYjk0YTJjYTExOTcyYzIzODQ0YmQyMjMgcHkzaworNjM4NjkgODIzYmU0YTI3NWUyYjk5ZTEyZTE4MmNmYWFiMmQ5NDg5MjY2MWVkMyBweTNrCis2Mzg3MSBjMGQ2MTZmMGFkODYzOWQyYzYwOWY4ODhmN2M2ZmYwOWNiYzM1ZTBmIGxlZ2FjeS10cnVuaworNjM4NzIgMzFkMmZmODY5NmJkYzhlYzIwYzkzN2Y0MjJlMThlOGM5ZmZkMDY0YiBweTNrCis2Mzg3MyAwYmYwOGRlMzM5YTBkMjEwM2FmMjE0OWIwYTM0NjE3YzI4OTZhZmFjIGxlZ2FjeS10cnVuaworNjM4NzQgZjE1MDE3N2ZmMWZmNzk0ZDI5ZGQzY2M0NjQxMTAyZWE1ZDZkOTQ1YiBweTNrCis2Mzg3NiBlYmJmODk1MDU2ZWE4YWNmMTFlNTdjNzhjOTU2YTc0NTAwZDM2OTAxIHB5M2sKKzYzODc5IGI2ZGQ0OWVlMDM1YjVkM2Q2YThmOGMwNDBjODE0ZTBhYmQ1YzVmMWQgbGVnYWN5LXRydW5rCis2Mzg4MSA2NDA0NDQ2ZTVhYTM2YjIxMGI3OGZhYjQ5Zjg1ZjdjZTZiMjIyOTI0IHJlbGVhc2UyNS1tYWludAorNjM4ODIgN2VhYWFkMDliNmNkZDRiN2Q5ODZiZmI5ZWYyNThkNzY1YWVmNjkyMyBsZWdhY3ktdHJ1bmsKKzYzODgzIDdkNjYxMTA0NjQwNDliMTAyYTBlZTlmOTYzM2U0YmE4MDk0MjQ4MjYgcmVsZWFzZTI1LW1haW50Cis2Mzg4NyAxMDBlMzI1MDliNTc3NjUzNmNhNmRjYWJmYjIyNjRkMDQ0MjFjZjU3IGxlZ2FjeS10cnVuaworNjM4ODggMDU4MDUzMWMzNzU1NWFkZTgzMWVmNzEyNmE4NzRlMGFhNzAyMmJjOSBsZWdhY3ktdHJ1bmsKKzYzODg5IDViYzdkYTY1MDNiMDVlYjc3NmUxNjE0YTM5ZDYyYjk4ZDk2MWMxOWEgcHkzaworNjM4OTAgNzkzNzNlMDcwZDQ4NjAwOWVmYWQ5MmQxMTg1YzZjZTQ1YWE2OTFhZCBweTNrCis2Mzg5MSBiYjJjNGJkYzNjNjgzYjQ4ZmE5ZTk1YmQ4MjgzZmQ5NDA0OGMyNGJkIHB5M2sKKzYzODkyIDFmMmYxNTc3YWU3ODE5Y2RiMDRmNDExYjkzYWYyNmJmNThhYjVlNTggcHkzaworNjM4OTMgYjZiNTM0YjgyOGIzMzliYmQ2ZWY3YmEwMjI1ZmM4ZWJiOTExMmMwMyBweTNrCis2Mzg5NCA2NWE2MDYwOGFiNWE1OWIwMjg0OTNjZjc1ODg0ZTE5NWU0NWFiOWUwIHRsZWUtYXN0LW9wdGltaXplCis2Mzg5NSBmOWViYWNhY2UzNWQzY2I1N2M2OWVhZmM1ZTA0N2NlYTFiOWFkOTlmIHB5M2sKKzYzODk2IGUwY2EwMjE4ZmYzM2MwMjRiNTFjMjE0YjUwMTZlMmM5Yzk0MDI5NjAgcHkzaworNjM4OTcgNDQ0MDI0N2I4YTQ0ODFkZmU2ZTRmM2YwMDUxMDQ0OGYzZjFkMGU0OSBsZWdhY3ktdHJ1bmsKKzYzODk4IDc3MDg4ZDQxYzc5MDFmY2QwYTAxYjQ0MjU5NWE2ZjFkY2ExMTdmYTggbGVnYWN5LXRydW5rCis2Mzg5OSBlZDQ3MWE4MDA5YTYzMTkxZjRkY2E5YjM1N2Q4MWJkZDM0M2M4NjE5IGxlZ2FjeS10cnVuaworNjM5MTAgNDdmZjI0YmM2MTE2NWQyZjMyNjc4MTk0MzJiMTU5MDQ2OTE5OGI2YyBsZWdhY3ktdHJ1bmsKKzYzOTExIGMyM2U2ZDUzMDBhMGEyNGM0YTUxMTFhMjQ1NDg4OGFhNTEzMTJhODQgcHkzaworNjM5MTIgMzk5OTE5ZTYxZDIzOGMyMjIwYzNjZmY4ZjAwMzMxZTJjMTMwZDYzYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM5MTMgZjczZTZmNmQ5YmE2OTdjYTkyN2UzZGNiMzQ5ZGI4ZmIyODgwYTczNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM5MTQgNTM1M2I1NTBjOTY5MmNlODg3ZDI2MGFkYTlkMDA0NTVjOWNkNWJkYyBsZWdhY3ktdHJ1bmsKKzYzOTE1IGE3NmU0OWIyMTlhMmNhMmM3NTRlNTU0NzU5NjYyOTVlMWRlNjY2NDggcHkzaworNjM5MTYgODZlZDk3OWRlODk4N2ZiMGRjMzE4ZDJlMDk3ZWU0NjkxMDRjYTNjZSByZWxlYXNlMjUtbWFpbnQKKzYzOTE3IDMyNThiYmZjNDU2ZTY3NGMxYTQ4ODRhMDQwOGRjZDc5YTcwNTJmODEgcHkzaworNjM5MTggZTRhMTg2NDM3NDQwNDJiNjMxNTgzY2VlODg2YTE4MmY0Y2E3NzE4NSBweTNrCis2MzkyOSBlZjBjY2NkZThjMjQ1Y2I1NTZmNDIxZjMyMGY5YTY4Y2JiYmY0MmM3IGxlZ2FjeS10cnVuaworNjM5MzAgNTcyZDgxZWNmMDBkNjBlM2Q2ZmQ5ZTVkMjhmNGExZGZmOTAxNzRiMCBva2tvdG8tc2l6ZW9mCis2MzkzMSBmODIxMTY2MDBjMGYxODFiY2I1MzlmYjg1NjQ2OTQ2ZTg5MDM2ZDdiIG9ra290by1zaXplb2YKKzYzOTMyIDJhMWM2OTc4ZGM1NzYxMGUwNWY3NmI5ZjUxZjQ3MjVmNWQyYzE0MGQgbGVnYWN5LXRydW5rCis2MzkzMyAyMWJlYjBkNWUzMjk5NTI0YjFhNDlmMmQ5Njg3NTczYTk2YmVmOWEzIHB5M2sKKzYzOTM0IGQ1N2FhNzUyYTQwMTE4Mjc3ZjYwYTFkMzk2NTI3YTliMjE4ODJlMjAgcHkzaworNjM5MzUgZDBmNzgzYmE3NjY5YTMwYzExYmFlMWYxMzVhYTgwYWJiZWNlMzBkOCBweTNrCis2MzkzNiBhNjU2MTlhZDU5ZjI4NzM4YmM1ZmM2OTg3MTQwYTE0YTBhNzcxZWQ0IHB5M2sKKzYzOTM3IDhmY2M5ZWMxODgyNDYzYWJmZTE5YWM5MWJkZWJiYjk0MGRjODU1YjEgcHkzaworNjM5NDAgNThmNGI2MDc3M2ZlNjA3Y2JlYzhjZmI3NTViZTQ4NGM3NTMyYWQ0MSBweTNrCis2Mzk0MiA4YWQ0ZWJkYmQzNzNhYTczOTM0MjgyYzUyMDM5ZTQ2ZGIxMTA2MzUyIGxlZ2FjeS10cnVuaworNjM5NDMgMTBmYjJkZWMzNjY1YjRiNTg3MzM2MWM0ZWVjNTBjMjEwZjE1MWY1NCBsZWdhY3ktdHJ1bmsKKzYzOTQ1IGIwZDQ3OTliMGRiODQ0ZTdkNzFhNDhkNjU1M2U4ZTk0M2Y0NzA5ZGMgbGVnYWN5LXRydW5rCis2Mzk0NyA4NDgwZjU0ZmNkNmRmNGMzMjRhMmZkNGViMWViMDQyMjE5MWVkYmUxIHB5M2sKKzYzOTQ4IDcxYmVkMjA4ZmU1MDQyNDJkZjczOTgzNGE1ZmM3NDNiNzdkYTU2NjYgbGVnYWN5LXRydW5rCis2Mzk1MCBlOTVjMTViYjk5NTAyYjdjMTc4NGU4ZjZiMjViYmJmMGEyMzgwZGFmIHB5M2sKKzYzOTU1IGMzNGUzNDA1NzcxNGEwMTFhYjk3ODc3NjA3OGI3ZjZhMWZmNTg4NmYgbGVnYWN5LXRydW5rCis2Mzk1NiA0NTRjN2IwYjY4YTg3YmM5NzgxYjMxYTU5YTA3NGRjYTI4ZWU1ZTJhIHRsZWUtYXN0LW9wdGltaXplCis2Mzk1NyBmMDRiMDU5ZTZjOTgyMTE1NWZkYzY3NTg5Mzg0NDQ4YTllYTU4ZjJiIHRsZWUtYXN0LW9wdGltaXplCis2Mzk2MSA3MzUyNTQzY2JhMDNjNDMxZWE3ZDE2NTJkYjBiYjAyNTJlMzAzZTBmIGxlZ2FjeS10cnVuaworNjM5NjIgYmJjZTE4ZDAwZDg3NTI1YWNhZjdiNzQyM2ExMDU4ZGE4MDAyMjAyMiBsZWdhY3ktdHJ1bmsKKzYzOTYzIDFkMGE4Y2FjMTVlZjA0ZTc1NmM2ZTdmYjI0OGQzMzNkOTIzODYwOWMgbGVnYWN5LXRydW5rCis2Mzk2NCA4ZTBiYzFmYzA5NWU1MGZjNDY3MmY5NDY3NmUyMmEyODllMDg1MGM0IHB5M2sKKzYzOTY1IGFkMTNjYjllOTRmMWI3NGY5ZGEwNDQ3ZmJjNmZmZjdlODk0Nzk2ZmMgbGVnYWN5LXRydW5rCis2Mzk2NiBmZDZmMzA2YzA0ZTAwYWYyYTgzYzRhMTI4MmI3YWQxOWQ4NTNmZmM5IHB5M2sKKzYzOTY3IDJhNDk2ZjFlYjlmMTY0Zjg1OGMyNmJkYzU3NzNjYjVkZGI0ODUyNDMgbGVnYWN5LXRydW5rCis2Mzk2OCAwZDdjY2I1MDAwN2NlMmMyMGY4MzdhNGRhYjkwMjI3NjcyNTZjMDdmIHB5M2sKKzYzOTcwIGI1NTMwOWVmNTRjNzczODdmZTNkZjdmOWZjNTJmZDViNjAxNmNhYTggbGVnYWN5LXRydW5rCis2Mzk3MSA5NDVkYTE3MjZjZjFhMDhkZjJhZTRlZjg0MTZkZWJmZjkzOTJjY2IzIGxlZ2FjeS10cnVuaworNjM5NzIgOWUyNzFjYjI1ZTU5Zjg5ZjI5NmZkNzEyMmNjN2I0MTM5Y2RhYTJhMiBsZWdhY3ktdHJ1bmsKKzYzOTczIGY3NDUzYjBiMzM5ZTA1ZTY3MGI1N2EzZTE0NzY5YTYxMDVlOTZhMDMgcHkzaworNjM5NzUgYjM4MmJlYjdiZTM2ZjI1MjZlYTRmNzI0ZTQwOGZkN2ViMDZhMzRkOSBsZWdhY3ktdHJ1bmsKKzYzOTc2IDc4ODBhNDI3NzE1ODJiY2U1Zjc1MTFlNjZmNDg1NmNjYWZjZTY0MzAgbGVnYWN5LXRydW5rCis2Mzk3NyA0ZjVlNmFhZjVhNmE4MGE2NTM5MDk1NWViZTRkYmI4OWYxMTgyNmRiIGxlZ2FjeS10cnVuaworNjM5NzggN2ExZDRlODIzM2Y4OTAzMTI4Mzg0YzU3MTI3NDY1OTRkN2Q5NjZjNSBweTNrCis2Mzk3OSAzMjU1ZjFmMTYwYWRlZGMxMDQxZTllYmFlNGRmNDM1MDQ4NDk2MjJkIHB5M2sKKzYzOTgwIDEzMGNlODZkNjFiNjc5MmU4MmExMGUzMmZhNDdkZGZlODZhYjI0YzYgcHkzaworNjM5ODEgZWJiZjAxMTU1MGNkNmE5NDRmOTAzYzg3YTkyYzBlMzY5MmNjZTE3YiBweTNrCis2Mzk4MiBhZjY4MGZkM2ZmZGM3NjM0ODgxY2ExZWMxMzQ4OTg1NTMwZTczYTJlIGxlZ2FjeS10cnVuaworNjM5ODMgOWVhMTA0ZjFlNWNkMjYzYzU2MTBiZDI5YzI3Yzg0OTljZjNmNWNjNyBweTNrCis2Mzk4NSBjYWE5MGNmNmJlOWEzZDU3ZDQ5ZjlmNzQxNWQxYWRhOWNkYmRkNTdhIHB5M2sKKzYzOTg2IDIyODRmYTg5YWIwOGQ1NTc3MTBmNDcxNTA4NWY4MTI1NTA3MmY1OTAgcHkzaworNjM5ODggMjIxMGY0MmU3Yzg5OGIzZGEyMzAwZTRjYjk2NjA1YTg1MDk0ZDg2ZCBsZWdhY3ktdHJ1bmsKKzYzOTg5IDI0OTU0ZWI4MGI5YjYxN2IzNDI1YjYyM2JlNTU1MmNhMGEyMjk0NzAgbGVnYWN5LXRydW5rCis2Mzk5MSBmMDg4NTA4ZjZkOTlkYWVmMmVjMjcxYmEwN2M3Y2U0MmFiMzA4YzZhIGxlZ2FjeS10cnVuaworNjM5OTQgYTAxOTNiMDhmMGViOGY3NTZmYmFlNzdkNmMxZDg5NzdhNzUyZTQxMyBweTNrCis2Mzk5NyBjOWE1ZjJlYjcyMGNjNTViNTQ5NGEyZDBiYjkyZDAwY2RjOTc4NzAwIGxlZ2FjeS10cnVuaworNjM5OTggYzg5NDM0Y2I5MTRkOGNjOTc0MTAwNDdlY2UwYTkyZmZmMzllZTk1ZSBsZWdhY3ktdHJ1bmsKKzY0MDAyIDNhZWJhYzdmMjcyNTJlNDQzNzcwZWRkNzM0ZjVmMzhhMzAxZmRlMDMgbGVnYWN5LXRydW5rCis2NDAwMyBiZjE0M2JlYjA4ZThlNjIxYTUyZDFhZGM5YWI5YmRjODg4OTU0NjhiIGxlZ2FjeS10cnVuaworNjQwMTIgOWZkYTA5MGMwNDVmNmUzMTQ0YTIzZDMzYTFjYWNiYTNjZThkMmRjNiBsZWdhY3ktdHJ1bmsKKzY0MDE0IGViZjZmNjM5ZTExNzg1ZGI0NWZhYjBjZjlkNzllYjU3MjJlMzNiZWQgbGVnYWN5LXRydW5rCis2NDAxNSA5YmVjZTU3Y2RjZTMxYjgwOTEyZGNmNjRlNTk2ZGU3MmM4YWU5YTlkIGxlZ2FjeS10cnVuaworNjQwMTYgYjMyZDdiODMyOThhOThlNDBiMzE3NzJmZDBiMTQ3NTRlZjM2NjU5OCBsZWdhY3ktdHJ1bmsKKzY0MDE4IDcyMDFjMDE5M2FkZWQ4M2JkZmM3Y2Y2ODNkNjI1ODNlNTVmM2JjMzIgbGVnYWN5LXRydW5rCis2NDAxOSA0MGYyZDVhNGZhZGNjMzNiZTIwOTAyMmIwODFiNDBhMDhiMjI5N2RhIGxlZ2FjeS10cnVuaworNjQwMjAgNjc3NTY0YTI3MDdhYWM3MWJiNDIxYWRiZjIwZTk5MjE3NDczZDA2ZiBweTNrCis2NDAyMSA1ZjY1YzgzM2RjODcwNmEyZDVkZGFlYWVlNmRhYmUzNTY5OGVlYTAxIGxlZ2FjeS10cnVuaworNjQwMjIgNGY3MGE5ZGUyODY1MTk2MDdlMmNjMTVmMGY0NGZiMmIzYzBlZGFmOCBsZWdhY3ktdHJ1bmsKKzY0MDIzIDdkMzYxM2RjM2YxY2NkZTUwY2ZhNjZlYjgzODEzNGRkOTA4NGVmNDggcHkzaworNjQwMjggNzhkM2QzNTk1NTVlYTViYWY1NzMxYzk5ZDg5MWYwY2JlOTZiYzE5ZiBsZWdhY3ktdHJ1bmsKKzY0MDMxIGYzZGY1MWI2MGRjMjYyM2I1NTY1NmJjY2RmNjFlOWQ4Zjg3NWRmYzUgbGVnYWN5LXRydW5rCis2NDAzMiAyMmNmY2ViMzMzOGU2OGFmODQ5MjEyZDE4OTg3MTdiMzk2ZDAxN2I2IHB5M2sKKzY0MDMzIGE3YjE2MjIyNzRiMzc1MmRmMGQ2YmFkNGI2YzA5MTljMTBkZDY5ZjQgcHkzaworNjQwMzQgNWQyNzQyZTM2ODg2ZjAxZGUwMzJhNWUzNTI1MzU0NmZhNWZjZjMwYiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwMzUgMWZmZTZhYjg0YTFiOGVkYzI0ODkzOWZjNmQxMWRjYjhmZjZlM2M0MyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwMzYgMWMwMzA5MGIyYTBhMmZiZTYxNGM4ZTM0MmE2OGRkYWY1OWQ4OWYwOSBsZWdhY3ktdHJ1bmsKKzY0MDM3IDI0ZGYzNDM0Y2NmN2JjMjg0NWVlN2QyYzZjZTMyNTNkZTExNTlhY2EgbGVnYWN5LXRydW5rCis2NDAzOCBjOGUyOTU5ZThiMGYxOTJhNGIzMjE4YmZmOWE2MzFiNmI3ZDg0YmE2IHRsZWUtYXN0LW9wdGltaXplCis2NDA0MCAzMWFlZTY3MDE5YTJhZDRiNThjMDliMjgzMDY0MzZiZGI1MzMzMWJlIGxlZ2FjeS10cnVuaworNjQwNDEgMDI2NTEzYmUzOGRhYTc3YmQwYzg4MjRmOTk5N2E1OTE4ZDIxNzNjYSBweTNrCis2NDA0NCBkNTY0NTBkYjYwYTIzZjM0MzRkNmJkMDIwNzRlMWJmMzViYzcwNjRhIGxlZ2FjeS10cnVuaworNjQwNDUgNTMyNTNmMzYwMTRlMDAxZjFjZjEzY2FjMTllYWI3ZGE1YmMwMmUyMiBsZWdhY3ktdHJ1bmsKKzY0MDQ2IDk0ZTM2MzBkYWNhNzMwZmM4NWY0OGY1NzE0MzY5ZWM0ZGQyN2RiZDggcHkzaworNjQwNDcgMjQ2YTgwMjYzN2FkZjdlZDhjNjBiMzA3OWFhZWZjNjc5MmI5N2Y0YiBsZWdhY3ktdHJ1bmsKKzY0MDQ4IDUyMjk0YWY0YjY2M2NhZGE4ZTFmZDk4ODc5ZWRjNDkxOTk1NDZjNzQgbGVnYWN5LXRydW5rCis2NDA0OSA3YWNiN2U3YTVmMjgwOTA1MDRkOTYwMGIyYWVkZWViNjBmNGI1ODk1IHB5M2sKKzY0MDUwIDY0MjhjNGYxYWUwOTdhNDI1YzFiY2U0ZWZjMzJlZTkzMmQzMDcwMGUgbGVnYWN5LXRydW5rCis2NDA1MSBkNGNkNzIyM2FmM2JmMjljM2NhN2NkNWM3NjlhNzMxOWQ0MWYxZWZhIGxlZ2FjeS10cnVuaworNjQwNTIgNzcxZjdhODA0ODc0ZmQ3ZGEwYjNmY2VmODk1YzJmMDI1MzJhYjEzZiBsZWdhY3ktdHJ1bmsKKzY0MDUzIDAyMDU5MjY4YzgyNWZhMzYwZjEyMzVhMjE4NjY5OTM5OGFkMTA3Y2MgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDU0IDZjZmEyOTdjNjU1NTBjOWMyZjQyMjYzMDU4M2MyY2Q3YzlkOTU4NzMgbGVnYWN5LXRydW5rCis2NDA1NSAxMDU3N2UyNWY3OGY2YzJhMDVhMzIzNGMyNjNiN2ZhYWQ3ODQ5YzUyIGxlZ2FjeS10cnVuaworNjQwNTYgMmQ1ZjFkOTU2ZWY2YmNmNDJjYjdlYTU3NTBhZGY5N2Q5MTg3YjYwZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwNTcgZGY5YjMzN2JhMzExMjQ4OWQyNWYzZmFkOTIyYjdiNDA1ZGFiMWJlZSBsZWdhY3ktdHJ1bmsKKzY0MDU4IDM5MzlmZjg5ODM0Y2Y2MGMzZjJlNTAzMjhkNmUwMzcwODA0NmFmYmIgbGVnYWN5LXRydW5rCis2NDA1OSAzMzQ5MmMyNDFkYWI1Y2E4MTJjOTBmZjRiY2U2YzVjN2Q1ZDVjN2EzIHB5M2sKKzY0MDYwIDEzOWVjZGJmNGYxOTZhMmU3M2JlNjBlM2E4ZDc5YzJiM2FjNjU2ZGUgcHkzaworNjQwNjEgYzFhZWI2Yzk0YWYxMGZiN2E4MTE5MjQ4NWM0MGQ4YmIwMWIzMjg3OSBweTNrCis2NDA2MiA1M2M2MGM3Y2NjZDk4MzRiYTkxYzc0Y2I0ODI2NDliY2Q0NDRlYmRhIGxlZ2FjeS10cnVuaworNjQwNjMgNDkyZjhlMTMwNWNmNjJlMDYxMmRjZDUzMjU5YjZjNTU4OTgxZDJiMCBsZWdhY3ktdHJ1bmsKKzY0MDY0IGVkNTcyZDI2MGZhNzE3MmIzMTY0OTE3YjAxM2U2OTY4MGQ2Mjc1YTAgbGVnYWN5LXRydW5rCis2NDA2NSA4OTU4N2VhMThlZDdlMTg3NGYxMWJhMzMyOWNlZWI2NTdiYjIzNWI0IGxlZ2FjeS10cnVuaworNjQwNjYgMjk2YWIxMDM4YjdmNzg4MDJlYjk3NDExOWQ4YzUyODY2Y2I3NDdhMSBsZWdhY3ktdHJ1bmsKKzY0MDY3IGY0OTg5NTE2YjRkNmEyODY3MTRmMGQ2ZDJmY2MwOGVjYTQ1MzI3NDUgbGVnYWN5LXRydW5rCis2NDA2OCBkYzlmNGQ2Y2QzZjE3MjY4M2VlMTkxYzI4OTM3NGNjNGM1NWJkMDkwIGxlZ2FjeS10cnVuaworNjQwNjkgY2Q1ZDI1ZGQ2MTMxMTJmN2JjOTVjMmRhYWNkMmU0MDgwZDk2YzZkMCBsZWdhY3ktdHJ1bmsKKzY0MDcwIDgxM2I4N2IxNmRjNTA5MDJmMzc4YjhkMTdjNmJkNWNlNGM1NjljYmIgbGVnYWN5LXRydW5rCis2NDA3MSBjMDA1NzZlMjAyZGFkY2ZkZjEzYTQ0OWRkMzM5NDI3ZTY5NWFhNjM3IGxlZ2FjeS10cnVuaworNjQwNzIgNzUyMTJiNDA4ZDdiYWJhMmMyYzJmMWRkYzQ1NWU5YzRhMWVhZDJmYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwNzMgZDVjYzNjNWNjMTg4ZWMzMjllNTEzMGMzYTI0YjViMzQ5YjFkYzMzZSBweTNrCis2NDA3NCBkZmMzOGU1YWYxMmQyNjUyMDVmNmJmY2VkOWFjNWRhMWJkMDJiZGJmIHRsZWUtYXN0LW9wdGltaXplCis2NDA3NSA0MDg0YTg0ZTRkM2I3NDAwM2FkOGJlOTYzNjgyNTY4MTAyZGFmYWIxIHB5M2sKKzY0MDc2IGVlNzNhNmIyN2MzYWE0YTZiZjM1ZTFhOWJmYjBlODBhYzQzMWUzM2EgcHkzaworNjQwNzcgMDM2N2E5Mzc4OGRiYWExMmZjZmNjOWI4MTkzYzFkZWQxODY3ZWQ5OSBweTNrCis2NDA3OCA5MzBkOTMwOGIzMmFhNTY1YzhmY2NmMTk2NTBmYjQzYmYzMzVhOTc5IHRsZWUtYXN0LW9wdGltaXplCis2NDA3OSAwOWViOGQ2MjYyNmEwMjYzNDk5ZWNjMzZjN2YxZTEzYzYyYWE4YWQzIHB5M2sKKzY0MDgwIGJiZTIwNzdhNDAxYmM0OWIzNjgyMzFiODIwNjY0ZTM5YzdjMzIxNzcgbGVnYWN5LXRydW5rCis2NDA4MSA3ZDgyNGZkMTMxYWQ5OTMzOWJhZWU1OTczM2YyODIxZTY4ZTZkNjY4IHB5M2sKKzY0MDgyIDI2YTcyODNmN2YxNzljNGYxNDdiNTczZGMzNDI0N2YxYjI4OGZjNzcgcHkzaworNjQwODMgOTg4MjdhMjFlMzUyOWViNDU3NmJiODI2MTRhYzcxOGRkMmNmN2IwOCBweTNrCis2NDA4NCA5MWViMjQyMDRlMDhhNmMwZWNlOTFiZjFhYjhmNGNiMGE1YjMxN2EwIHB5M2sKKzY0MDg1IDI5MjViNTY4YWFjY2E2MDhmZjk3OTdmNmMzNjNkOWQ0OThmMWYyZmMgcHkzaworNjQwODYgYWNkYTQzMjUyNzEwMDE3YmE3OGYxNTUyNzc0YzExZjlmMmM4M2ViMiBsZWdhY3ktdHJ1bmsKKzY0MDg3IDJlYWUzMWEzZWY4OTMwMGFiYjEyY2RiMGE2ODVlMDg4OTNkZmJjYmIgcHkzaworNjQwODggYmQ1ODRmMTIxYzRiNTAyMjQ1MDJmYzhlNjNkOTU0YzAyMDk2MmUwNCBweTNrCis2NDA4OSBmZmM2YTJlZjc2ZThhZDcyNGMxNTQ0NmZkNzQxMjg5MDgyMzhkMjM3IGxlZ2FjeS10cnVuaworNjQwOTAgNmRkZTM5MWJlOTdkODhiN2MxYTNjZDNlZTU4MjUzMTgxMWRhOTUyYiBsZWdhY3ktdHJ1bmsKKzY0MDkxIGY1MjliZjJkZjQzNjhjYTg4ZmMyY2M5MmFhNjg5NzA3MmQ3YjcyYTUgcHkzaworNjQwOTIgYWZkM2I4ZWVlMmZiOTg4M2ExY2VmYTc5OTEzYzFhNDZkZjY0YzA3NSBweTNrCis2NDA5MyBlN2E5ZWFiMzYzYWRhYTU3MmI3NTExNzE3OTcwOWUxZTc3ZTdhNjMxIGxlZ2FjeS10cnVuaworNjQwOTQgODI0OGNjZmViNTM0MjliZDYyMjliZmQ2N2U5NzE2MTg4ZjIwMjc4ZCBweTNrCis2NDA5NSBlYzgyN2Y2ZTRjYzZiNjY4ZTgwOTRjNzQ5NGU0M2NkMDlhYmE2MWVmIGxlZ2FjeS10cnVuaworNjQwOTYgMGNhMjQxOGM3NzAyNTdmNWRjNzAwOGNkOTc2ODE4YzIwZmRmOTJmNSBweTNrCis2NDA5NyAyNzE4NDVmMzIzYmU0MzMyZmQ3MWY3MWFiODIxYzNlNDNiNjA4ZTYxIGxlZ2FjeS10cnVuaworNjQwOTggMDEzYmU2MzIwYjgyODZlNDg4YjAzMWQzYzk5ZjJiYjY5MWY4ZjY3MCBsZWdhY3ktdHJ1bmsKKzY0MTAwIDFlYWM4ZmYwMWQ3YjA2MDdlZGNkMjNkMDRlMzZlNTcwN2RlMzAzY2IgbGVnYWN5LXRydW5rCis2NDEwMSA3ZDcwYjU5ZWVhZjJkZDkwZDQ2ZGZjYmI5YWQyZWQyMzk0YTQwNWYwIGxlZ2FjeS10cnVuaworNjQxMDIgZGEzMDdiZWVlYmI5MjAyMDRiNGM3MDM0ODYxNWY0NmI4Yjg2OGYwYyBsZWdhY3ktdHJ1bmsKKzY0MTAzIDJhN2I2ZTk5Y2M1NGNlZWI0OGNlOWM3Y2YzNzU0NmFkYjkxM2ZlYWQgcHkzaworNjQxMDQgNDUxMWVjZDI1NjM0M2M2YjI0MDI4MmMzY2I4NTAzYmQyYWRiZjljZSBsZWdhY3ktdHJ1bmsKKzY0MTA1IGFjZGRiMDBiMWRlNWYwNDUxM2RkYmY2ZjBmZDE1NmRkYTIzZDBiMzkgbGVnYWN5LXRydW5rCis2NDEwNiBlODFkZWNjYjE3YzZiNjY3MmY2NzA5ZDhiYmEzMmU4NjAwZDg1NTUwIHB5M2sKKzY0MTA3IDk0ZjY0ZjExZmRkMDA5OGU0YWQ1YTNkNmY3YTAwNmYyZTVkYjAwYjkgcHkzaworNjQxMDggMjUxMTQzMTUxOWEyMjFiYzE4NjRkODBiMTg0MTlhMTIwYmNkZmM5ZiBweTNrCis2NDEwOSA4OGE0MmRiMzc3N2MyM2I5NDdjZWZiY2ExMjM0ZTgyNmRjY2VhODAxIHB5M2sKKzY0MTEwIGI4MmUwNTQ1ZDExMTU0YTllYzIwODE1MTEyNjE5MmI0YWI2ZWQ2MjcgcHkzaworNjQxMTEgYjgzM2E0MDA5OGMwMGY3OTk3NjY2ODZlNTU1YWUzMGUyNGJlYTU4YyBweTNrCis2NDExMiBiMGVmMDAxODdhN2VjMTY3YjgxNTE4YTBiMGFlM2U5NmNhN2Y2ZWNkIHB5M2sKKzY0MTEzIDI1NDNjNGM3OTU0MzNhNjMxNGQwMjE5ZTJjNGZmYmZlMDZhYWQ1M2YgbGVnYWN5LXRydW5rCis2NDExNCAxYzk2NGVkMzVlZjlmYjI3OWI2Y2MyZGNhMzlhZTBlZWY3Y2MxMjU1IGxlZ2FjeS10cnVuaworNjQxMTUgOGZlNDdiMmM4YmZlMzdhNDA3ZGNkMzJmYzJmMmY3OGMzZjA2NzY4OCBsZWdhY3ktdHJ1bmsKKzY0MTE2IGNiODQ5NGNlMTMzN2M4M2ZiNDM2NThkYTA4MTAxZmZhMmFlNGRmODMgbGVnYWN5LXRydW5rCis2NDExNyAwZjU1NjRmZDA0MGE5NGEzZWU5OTgxZTBjMTg0ZDBhMTFhMjM0Zjc1IGxlZ2FjeS10cnVuaworNjQxMTggMjQ1ZGNhMjY3MTJmNzYzMTIyNjI1YjM5NDIxMGViY2JmOTY5NDQ4MyBsZWdhY3ktdHJ1bmsKKzY0MTE5IDUxN2UxNDE3ZjdlMmNkOWU5OWEwZTgzNjEwMjg5MGQ5ZDQ5OTgyZTggbGVnYWN5LXRydW5rCis2NDEyMCBjZWY5ZjI3YTRjYzMzYTFmZjg1Zjg3MjFlMjhlNTQ4NDA4MDM4ZTQ1IGxlZ2FjeS10cnVuaworNjQxMjEgMjEyYTFmZWU2YmY5M2Y4Yjc0ZjgxZGQzNTY3YmY5NjRlNjI3ZWEyMCBweTNrCis2NDEyMiA1YzZjZGZjZDZlYWU0OWVmYTVjN2ExNTJiZjgyMDVmMGZhYTdmYzUzIHB5M2sKKzY0MTIzIDU3YzlhYmFiNDgzMmM4YjYyNGU3Y2JjYzhmY2ZlNzY2NzkyYzRkM2EgbGVnYWN5LXRydW5rCis2NDEyNCA0ZGQxMDAzNzA4OGMyODJkMTc2YjQ4MTY2ZDhkODg4YjdjMTdiODI2IHB5M2sKKzY0MTI1IGMzNDlmOWZiYzcwNDQ0YTdiMzg1YmJlNDliYzI3ZTA5ZGJjZTQ2YTEgbGVnYWN5LXRydW5rCis2NDEyNiBlMmViNzAyMzUzOTJmYjBkYmMxNDNlZjRjM2FlZTgyNGNkMTg1ZjFmIHB5M2sKKzY0MTI3IGI3NzJiZWUzYTEwZWYwYzA1MjJmMTU3MzAxYTgxY2QwYzgxZDliMDIgcHkzaworNjQxMjggOGRjNDMxMmEyZjc1Nzg1MGE0M2ZlNWZmOThkOTlkODc4NGE5ZGU3YiBsZWdhY3ktdHJ1bmsKKzY0MTI5IDkxMjFjNWNjNGYwNTQxMGZmZDIwYjgyNWU1ZjZiMjJiMzA4M2VlNzIgbGVnYWN5LXRydW5rCis2NDEzMCA3MmI0OTQ2YzQ0M2FlNDUyNjNkZmU5YTM1YmUxZjNjYmJlYWMwNzEyIGxlZ2FjeS10cnVuaworNjQxMzEgZTZiZWE3MmU5NDM3MDNlZWI4NjE1OWFjZTcxMDI3NGM4MmVjYTUzMSBsZWdhY3ktdHJ1bmsKKzY0MTMyIGU5MzU5OGJkN2Y0Mjg5Mjk2ZDAyNDMxNmJjMmM2ZTJjZDJjN2Q5ZjEgbGVnYWN5LXRydW5rCis2NDEzMyA2OTYzNDRlZjhiYzA0ODgxNWEwZGZkM2YyNDA2YmQwZWRjNGFlYjFhIGxlZ2FjeS10cnVuaworNjQxMzQgNmRkM2ViNDExNzBhNThkYWI1NzlkMTAyMTk2MzM2MmUzOGNiMDk3NyBweTNrCis2NDEzNSAyODIwMTA5YzhkNTUyOGY3ZDM3ZmNiYmM0NmVjYjM4MWNkNDE4YTZiIGxlZ2FjeS10cnVuaworNjQxMzYgY2M3MmY0MWZmMDE0MWE0N2FhNmNjOGNkMzc0YzE4ODBjYzE3MzRlZSBweTNrCis2NDEzNyAxNzdmMWFhZTNiYjQ0OTFjMDI2ZTNmZGNlN2Y0MWY4NjZiZDg1NTFjIHB5M2sKKzY0MTM4IGRhNDdlN2UxMzVhZTlmMzE2ODNhNGEyYjM2NTQwYmQ2N2ZiNjY0OTEgcHkzaworNjQxMzkgNmYzYzEzNTdhN2ZiZGU3ZmEyYzZjNzQ1MDk1MzM0NjMzZDk2NzllOSBsZWdhY3ktdHJ1bmsKKzY0MTQyIDY3MzUzMmFhMzc4YjFmOGZlYTYzMGVhYWQzYmExNWFkYmQ2YTIxOGQgbGVnYWN5LXRydW5rCis2NDE0MyA0NDVjZDZlYmEzMzFlOWQ1NmJlODBlZWU1MjBkYWU3MmYyZTZmMWI1IGxlZ2FjeS10cnVuaworNjQxNDQgMDQ1ZjgzYTFiODY0MWMyNGY2ZjQ0ZmY2OTI1YWI1ZjJhMTdkNjQzNSBweTNrCis2NDE0NSBkM2UyYThlN2JmNDU5MTIyZjIxM2QzMWQzZTM4YmYzYmE0N2FlOWExIHB5M2sKKzY0MTQ2IDMyZmVmNjMxZjc4OTM0YzA2YjlkYTEwY2E0ZmQ4NTUxOWE4ZDE4MzUgbGVnYWN5LXRydW5rCis2NDE0NyA3YTViYjU1M2RhMmIxNzJiYjNhY2UwZDRlMTUwYmY3MTZlYWYwNjc0IGxlZ2FjeS10cnVuaworNjQxNDggNGM2YjhiOTM5NzE4MTk3ZTI0ZDhmYmRlYmFlOTM5ODAyZjc1ZWE0OSBweTNrCis2NDE0OSA2YTdlYjBiNzAxOTgwOTlhODNjODBmZWJmMmQxODQ5MjlmYjlmMDBlIHB5M2sKKzY0MTUwIGI0NWE5NTM5MDYyMGFlNjcwNjM5ZGFkNzZkMzdmZThkNDUzY2JkMzMgbGVnYWN5LXRydW5rCis2NDE1MSBmNzUxZGFiNzEzMDI0ZDk0ZWFjYmQyZTZhNmIwYzU1MTYwMjI0ZmI4IHB5M2sKKzY0MTUyIGFmZGQ0OWM0NzU5OWQ4YmFmNTZmYjg1NzFhYzhhZDZjMzE1YjQ0ODMgcHkzaworNjQxNTMgOGIwZTJjOTZjZTgwZTA1Y2NlNzdlMzE5YjkyZDAyN2NmYjE5ZTM5NSBweTNrCis2NDE1NCAxYmZlYTk1NmQwZDcwOTlhZDliNTkzYWI5MTgxZDVlYzgyMDMwNGE3IHB5M2sKKzY0MTU1IGJmYjgyNzRlMzkzOWE5NDliNGMwYTM3OTk3N2MxYmY4YWY1OTc5ZDAgcHkzaworNjQxNTYgN2IzYTAyN2FiNzg1Yjg0NTBhMzFkZmVjYmFiZjIzZDQ1M2NkZWM0YSBweTNrCis2NDE1NyBkMTVkODY4MGEwMGE2MGNkMTlkYjhlNDVhMDM5ZTFlYzBmNDFiMTRhIHB5M2sKKzY0MTU4IGY1MjgxM2Y0MzE4OWQyM2MwODRhMDYzZDdlYjJhYjRjOWIyODZhYzcgcHkzaworNjQxNTkgYTAyMWZmMTE3MThiNmE5NWE4ZTFmMTc5NjlhYzU3NzM4M2ZmNzc2YiBweTNrCis2NDE2MCAzOGQxNzZlYmIyZmFiOTYzZmIzZWI1ZDZmZjEwMzUzMThlNTk5NTcwIHB5M2sKKzY0MTYxIDE4ZWFhMWQ1ZjM5NDI5ODE4ZTg0ZWU4ZmVlYzJmZTk4ZTFmMjYwYWEgcHkzaworNjQxNjIgNWFmMTUwODlhMTAwNjQ4YjY2ZjFkNjQxYjI2ZWFiOWJmYmNlMjUxYSBweTNrCis2NDE2MyA4MDk3NWU2MWY4YzhjZGU1YjUyOTlhYjlhNWRkZGNlMjVjNWQ1OGYxIHB5M2sKKzY0MTY0IGYzMWUzMmEyMDEzY2Y0MGE0OThiNzFhZjQyMzE3OTdmYmQ1ZTA3NjAgcHkzaworNjQxNjUgZjZhZWE4MDhiMzU3OTk5MzNkZTJmMDI1ZDU0ODljMzdhYWJhMTRkMyBsZWdhY3ktdHJ1bmsKKzY0MTY2IDUyNThkNGQ3ZGU3N2I0OTg2NWUwNTNkNzc1ZjE4NDhmYjA0NmMwMWIgcHkzaworNjQxNjcgNWY0YTUxZjYzOWYxZDVmZTczYTk4MDlkZDUxNjk2OTNhZGMwYTc2YiBweTNrCis2NDE2OCA5MWE4ODIwMGZkZjBkZDg5MzQ4Mzg4YjM1ZmRiNTIxZDFiMjQ5NjUyIHB5M2sKKzY0MTY5IDQ0MDE5ZTM3YWM5MjVlNTVlNDg5OWJmMjM1MTgyNDU3NGYxMzUzYjcgbGVnYWN5LXRydW5rCis2NDE3MSA2NTBiM2Y2ODQ1ZjkzMWU4YmMzMWU0ZGU4NzBiOGMxZGVhM2JmODk3IHB5M2sKKzY0MTc2IDVhOWNmZjdmZDA4ZjViNzkxN2Y3MDc2MGViZTBmMzc1ZDFiOTg3MTIgcHkzaworNjQxNzcgNTg3MGViZTI1ZGQwOTFhNWJkNThiYjUxYWQ3ZjM4ZWFlZDE0YmYxNiBweTNrCis2NDE3OSAzYTNlMjMxYjg2NmZiZTJhZmRmMzkwMWQwN2YxNjc4ZTA0MTVmMzVlIHB5M2sKKzY0MTgwIDBhZTUwYWE3ZDk3YzUyNzdlN2JmOGVmODVkOWJiYzhhNWFlYTlhNzggcHkzaworNjQxODQgYjM3NjliNmJhZTBmMGFkNzg3M2I2MDZmMWFjNjM0YmY1M2ZjNTNlYyBweTNrCis2NDE4NSAzZDY4NjllMmM5MmFjOTk2OWFjZThhNjhkMmQzOThjMjNkYjc1ZmRjIGxlZ2FjeS10cnVuaworNjQxODkgZTg2ZjM4NThkZjIwY2E5M2Q2ZWFjMDRiMDMzYzk1N2VhNzUxMWU5ZSBsZWdhY3ktdHJ1bmsKKzY0MTkwIDUwM2ZiM2M1ZTA4MTRjMTA1ZjJlNTk4ZTFhNzE2MTc0YzhhMTA1NjggcHkzaworNjQxOTEgMzAxN2U3OTRiYmI5YWMzNWQ0YThlZmNlNzhkMTkxMThmYWVkMmUxYyBsZWdhY3ktdHJ1bmsKKzY0MTk0IDQxNDE0OTNkZDNhMDU1NmFiYjIzNzBiZjBjY2I2ZjZjNTk5MDNmYjEgbGVnYWN5LXRydW5rCis2NDE5NSA0MTQ4NGQxODM5MGNmYzMwNjJkOTEyMzBhMGVkZDJkZDU4YzAwZDJkIGxlZ2FjeS10cnVuaworNjQxOTYgZjRmZjU4ZTM0NmVlNDkzZWJhNDJjZTM2MGQ4NDI1ODRhYjJkYTRhYyBsZWdhY3ktdHJ1bmsKKzY0MTk3IDk3Y2Q5NTM2N2Q2MGZmYjVkNzQxNjg4ZTgyNmMwNWU5ZDUwNjQ2NzkgbGVnYWN5LXRydW5rCis2NDIwMiBlMjRmMjZjM2NjZTQ2NDhlNzY3MTE4N2I4MzhiNzI4YzE4MWQxMTVmIGxlZ2FjeS10cnVuaworNjQyMDMgZDQwN2Y5NThjMTM3NGVjOWQ2NGY2NDExZmJhZGQyNGFhMzBkMWI2YSBweTNrCis2NDIwNCAxMDllOTc0OGM3ZjQzNTFiZjZmMmFkM2IzM2VjMmVkMTIyZDI1ZGZkIHB5M2sKKzY0MjA1IGZjZGY4MTRjOWIxMTI4YTIxOTNiOTQ3ZDRjZjJhYjZmYWQ1YzliY2IgcHkzaworNjQyMDYgNjU4NWZkMWQ5YWQ3MTIzZDZjYWE4Yzc0NGExZWNjYzRmYjZmMzQwNCBsZWdhY3ktdHJ1bmsKKzY0MjA3IDRiODY4MmVhMzdjMWY0MjQ4ZGQ2YzY5ZjlmZTU4ODU2ZTYxN2I4OGMgcHkzaworNjQyMDggZmQ3ZWIyNzQxMDEyMWM5NWQ4MDI4ZTU2N2FlZDE3OTI1ZDcyZmQyMSBweTNrCis2NDIwOSA1NzI2ZTkxNTdiZjAyZmI1ZDg3ZGQzN2YxYjQ2NDdiYzkzZmM2N2M3IHB5M2sKKzY0MjEwIDkyYjc5YjZkMWEzYjliYmQwZTE4YThhZmU1YWRhZDQ5OGIzZTAyNmEgcHkzaworNjQyMTIgZGI5OWY4NzUyNzEwNmNiNzNiZTZhN2QxNmI2ZjE0MTgzNmUyNjQ5NiBsZWdhY3ktdHJ1bmsKKzY0MjEzIDcxY2I3ZWE0ZjExMDM2NzUyNGZiM2IxYWI4ZGQzZTEzOGYwY2ZhODEgcHkzaworNjQyMTQgZmNmZTEwZjNkYzE0NmNmNTA1YWNlZmJmYmM5YmRmODZlN2M4M2Q3MSBsZWdhY3ktdHJ1bmsKKzY0MjE1IGIxZjRlYTRlYjU1NTYzOTkzNDFjZDZmZmVlNWQ0NmE0NzM5Mjg0MDQgcHkzaworNjQyMTYgOWM3OWVlNDlhMmQ5NTJiOGVhZmY5ODM2ZjAyY2Y5ZWYxZTcwODYxNSBweTNrCis2NDIxNyAzMTk4OGI0MDE1MzU3OTU0NmE1ZTIxM2U3NzdkOTU4YmQwOTMwMDY3IHB5M2sKKzY0MjE4IDEzMDcxYWRkOGY0OGFlNThjYTQ1YmJmMzhiNzcwZDM3NmZiYWMxNzAgcHkzaworNjQyMTkgZTMwYWYzMjY0YTBmNTczYWMxMDI4OWM3OGVjOTAyZTI2ZTE1ZjIxZiBsZWdhY3ktdHJ1bmsKKzY0MjIwIDVlYmNkZWIwY2IyNmM2N2E4NTFkODQzMTM1ZmRhMTZhNTY2MmJkMzggbGVnYWN5LXRydW5rCis2NDIyMSAxNDY0MzQ1YTE5NjgzYjc0YjVhZmRmYWEwMTBlMTFhNjA5ZjJhYWEzIGxlZ2FjeS10cnVuaworNjQyMjIgOGY2MWFlMDExMzBmODg5MzlkYTUzYzQwMjY2ZTI3MWU2ZTAzZjZjYSBweTNrCis2NDIyMyBkNWFhMjViZjkzNjAzZWI0ZTFhODI4MmZhNTU4NTY5ZjY3NzkxMWYyIGxlZ2FjeS10cnVuaworNjQyMjQgMzhkMDQ2N2Y1ZWM3NjlkNGQ0Y2NjODU4OWY3MzdlYmY0NDljNTQxYyBsZWdhY3ktdHJ1bmsKKzY0MjI1IDdhOGVlMDVjNjk3ZjUwZjEyMmRjMTBiMTE0NGY1YjI5M2RlNzI3ZDUgcHkzaworNjQyMjYgYTM1ZGE5NGUwNWZjNWE1OGVlYTdlNmMyODg1MDUzMTM0NGFiYWVlZSBsZWdhY3ktdHJ1bmsKKzY0MjI3IDhjNjA2OGYxNGVlOGNlZjEwMTNlMGUwY2JjMTRkNWJmYjE4ZTAyMDMgcHkzaworNjQyMjggYjVlMDI3NzVmZmZjYjNmYzRiOTlmNTE4MTgwOGY4YzdiMTM0Y2EyNiBweTNrCis2NDIyOSA2NDM0ZGQ3MDRkNjBlYTYwODAwMzgzYWViNjQwYjRlMTJmZTg4MGQ3IGxlZ2FjeS10cnVuaworNjQyMzAgMmRmYWEwNjgzYmU4YjY2M2QwNjAzODQ5NzJiMDJkMDNkYzE2ZjM4NyBsZWdhY3ktdHJ1bmsKKzY0MjMxIDRkYThiN2E4Y2YyZTk0YmJkYzU2NWU5MDI1OGZmYzAxYzlmMmRlZDIgcHkzaworNjQyMzIgYTEwNjg4YWRjZGQ2MjUzNmZiZDk1ZWMzYWNlOWQ5MWQ4ODM1NjBiOCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyMzMgMTY4YzllOTY3NzJjNTc5NzJiZmE3OWJmYjg4Y2Q0NmUyYWFhY2UxMSBsZWdhY3ktdHJ1bmsKKzY0MjM0IDdmZDllOWNiZDcyMTUzYWQ4ZDVlZGY1ODU5YmViMjQ5ODRjN2EyZDMgcHkzaworNjQyMzUgYTMzM2M4NzcwZTMyMTMyNzM5ZGRiNTA0ZmM2MjU2YzhmN2Y1YzQwOSBsZWdhY3ktdHJ1bmsKKzY0MjM5IGZhYTdjYTUyNDI3MTg4NDIyZWQxMTdhZDczNjg3MWNiYzJkMGE3NzUgbGVnYWN5LXRydW5rCis2NDI0MCBjZGJmMTI5MTJkNGI4MmE0NDhlN2Y4NjdmNzM2MmJhNzAxMzgyMTZkIHB5M2sKKzY0MjQzIGY1MjU0OWZiNzRhMjY1MTkxMWE2ZDg5YjEyMTkxZGZlYmE4ZTgyYTUgbGVnYWN5LXRydW5rCis2NDI0NCBiOTA1Y2IyNzkzY2M5YWFmM2FkNWRiNDUzNDMzMjY0ZmQ4NDdiNzJlIGxlZ2FjeS10cnVuaworNjQyNDUgYmI4MTdhNWQ2OGI3YzMwODNkMjBmNzQ5NjRhNzBhYmY2ODlkNWJjOSBweTNrCis2NDI0NiBhNDUwZGEyNDAwODk2ZDI0MzNmMDNlZmNjYzU4ODRkMmI3NzczMDM2IGxlZ2FjeS10cnVuaworNjQyNDcgODcxNDdkYjgyZWIxZTMzMjI2M2YzYTk0ZWNmNWNjZjQ5MjQxNjU3ZCBweTNrCis2NDI0OCBhZjg4NzNkZjAzMjI1ZWMxMGZjZGE2NGY5ZDg4ZWNlYzFhMjYxZDMwIGxlZ2FjeS10cnVuaworNjQyNDkgOWI4ZmY3M2QwMTg4NTkzNzZjOTBmNjUyYjZmZDBiZmJjNjY3ZGIwZCBweTNrCis2NDI1MCBkMDExNjVmYWU5OGU5MDA0ZTNmODM1OWI5M2E2NjdkMTQ4YWM3ZTBhIGxlZ2FjeS10cnVuaworNjQyNTEgNDZlNTg0NjE1MGQ1ZTk1ZjhhMmExMjA0YmZlZGU5OGQ0MmJiMWZiZiBweTNrCis2NDI1MiA2ZDFkYzc2MWFiNGUwODg5ODlkNzU0NGI0ZTFkMmI3OWJkZjA0ZGU5IHB5M2sKKzY0MjUzIDEwNjk1NzgzNzlhMDEyY2QxYzlmOGMyNGE1MzlmMjBjOTQ3ZTNjODAgbGVnYWN5LXRydW5rCis2NDI1NCA0NDZkNWMyOTkwOGFhOTg1MmU4MzRiM2Y5ZjI5NGE2NjFlZThiZmVlIGxlZ2FjeS10cnVuaworNjQyNTUgMmYxNmNlYTIyNGY1Y2M0ODUyNDE5MjIzY2RmMGRiNjc0Y2NkZTFiNCBweTNrCis2NDI1NiBkZmY3NjJhZGY5ZDYxMTIyYTRlYjY2NWMwYTNhZWQ0YTYxZWIxNGQyIHB5M2sKKzY0MjU3IGYzNmYwOTJkYmU5Nzg0NmMyMjZlMTA5ODM2ZTI3YzViYzNlYzFjNWUgbGVnYWN5LXRydW5rCis2NDI1OCBhYmE1OGYyOGUxNjZiM2Y3YWU3Njk1Yjg1NWVlM2VmNDI4Nzc0YjE5IHB5M2sKKzY0MjU5IGYyZTJkNWI5NjRkZTM4YzFkNGEyOTkxMDg1N2VjOGYyNjVkMGM3M2UgcHkzaworNjQyNjAgMzdjZjVhMWU2MzllOTBlZmNjZGRjM2Y3YjFkNmFjYWUyOTVjNTQwYiBsZWdhY3ktdHJ1bmsKKzY0MjYxIDU3YWE4NzNkOTZmY2E4YjkyMDQwNzRmYzhmNDQzNTFjMmEzYTJiZWMgcHkzaworNjQyNjIgMDk1Yjg1ZDdhMDE0MWUzZjdlZmFkOTE1NmRiZmYyOTZiZDE4ODM0NCBsZWdhY3ktdHJ1bmsKKzY0MjYzIGU4ZGY5ZTQ4NzNiNDc4MDEzZmUyOTk3ZDU4NTllY2Q1ZGZkNjJkZTMgcHkzaworNjQyNjQgMTBhOGNlOGRiNmJmYjRmN2M2MTEwMmMzMWM1ZjAyYzdjYzI4ZjU1ZiBweTNrCis2NDI2NSA2ZjBmZTA2NmE4NGJiNTA0ZTRkYjQ3MWViZjVkZDVkOWZjNWVlYTJhIGxlZ2FjeS10cnVuaworNjQyNjYgNjFlNTI4NmQ5MzdjOGFjZWQ2OTFhYTFlMzZmMjMzNjA2NDBlOTgzYSBweTNrCis2NDI2NyBhYTI1MDMxODhiZjM0ZDg5MjhkNzExNTk1YWY0NDFiZDc2NWFmOTljIGxlZ2FjeS10cnVuaworNjQyNjggYzhmOGE1NzhjMDFiOThhZGRjYTIwZGM2ZjE2ZGQzOTUxMWI3ZDI2YyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyNjkgZTljOTM1Y2Q3ODg4YWViZjkwZTA1NzllMjQ3ODEyMDZmYjYyYzAyYyBsZWdhY3ktdHJ1bmsKKzY0MjcwIDE4OTg2N2FhYmFmYTM3Nzg4M2ZmYjU4NTAzZjc4YjIzNTliZjJkNDEgbGVnYWN5LXRydW5rCis2NDI3MSBiNWJmMTY3OTBlM2M2OWQxZjU1ZDRhZGRhOThkNDkxZjEyYzAxMzczIGxlZ2FjeS10cnVuaworNjQyNzIgNTE2YzE5ZDg1OTFhOWI0NjAzNWQ4NTI1NWExMzJjMGIzZjk0MTAyMyBsZWdhY3ktdHJ1bmsKKzY0MjczIDk2YmZmN2UxMzdmYmQxMjMwZDNkNTg0NDZmMjgyNmQ3NzU4NTg3YzAgcHkzaworNjQyNzQgNGIxZTAxNTA1ZDRkMzdlOTlmMTdlYTJlYzQ0MTBjMGU2NzFmOGI0MiBweTNrCis2NDI3OCA5YWQ2OTEyN2U2YWE2NTRhMzZmNzdiZjQ4YmE2YTA1NGFmODg1NGE2IGxlZ2FjeS10cnVuaworNjQyODAgOTE1NWZmNzhmZDA2NGQ2ODBmNzMwOGYzZGZhYTc5MTE4Y2VhNjMwNSBsZWdhY3ktdHJ1bmsKKzY0MjgxIDdiYTc5MDFkYWQ3ZjhjNmI1YTBhMmNjNGY0MDY5M2MwNmFjZjI2YjUgcHkzaworNjQyODMgMjVmYTNkZDAyMWY1MmFiZTFhMjY5OTYwYzY5ZWQ0ZTM2YjhjMWY0ZiBweTNrCis2NDI4NCBiMzNlODMzNGY4MmY3OWUzMzc3YTA3ODc1NWE2N2U5NGUyNDczOWJlIHB5M2sKKzY0Mjg1IDVjYjUwZTdhOThhMjg1OGE5MTM3NDI4MDEyMTk4ZDUxOGQ5ZTgwYjUgdGxlZS1hc3Qtb3B0aW1pemUKKzY0Mjg2IDk5MWNhYWQ4MWEyZGE2ZjU1ZmMwMTY4MGU1OGU4NzcxMmU1NDdiZGIgbGVnYWN5LXRydW5rCis2NDI4NyA0ZTMwNGFkZWQ3YTg1MGI0YmY2NzFmZjg2Y2MwNzU2NmQwYWM4ODA0IHB5M2sKKzY0Mjg4IDYxM2RhZjdmOGU0ODZiNDcxMTY0MTEyYThiZTdiYjA2NTdiZjY1NWYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MjkxIDE0MzUwZTc1ZDAyYTRiZTJkYjJlZDFmZTdjZjQ4MTBhNDUzYWEyY2UgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MjkyIDM4NmE3Mjk4NGFmNWRjZjM1ZDBiMDQyMzBiOWJjOWIxZTBmMzY0MzQgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MjkzIGY3N2Y4ZTc5OTcxNDk0ZmJmZmFkYWY0ZDc3Y2EwODY1ZWNkNDVjNTUgdGxlZS1hc3Qtb3B0aW1pemUKKzY0Mjk0IDI2ZTljODcxZDIzZmExMjgwZDEzM2VhOTkzZTZhM2YwOTIzZjI1OWIgdGxlZS1hc3Qtb3B0aW1pemUKKzY0Mjk2IDQwZDYwMWRlMjhkYzA4MTc2Njc1ZDEyMzY2ZjYxYTRhZmU2YjE3OTQgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MzAwIDZmNmZlZDRmMDYyNmI0NzdhZWRiYmY4NGQ4MGMzZGNjNzczZmZlODQgcmVsZWFzZTI1LW1haW50Cis2NDMwMSBhNmQ3YmZjZDc0NTY5MWUwYTRkZGMwMWIyMmE5ZDA5NjNiNTI4MGZlIGxlZ2FjeS10cnVuaworNjQzMDIgZWUyODIzZTFmMjNiNjVmOGJkNDBmZTc4YmZjMDgwZGRiOWMyMTBiOCBweTNrCis2NDMwMyA0NjUwZWVmYjU4MzhlOWM5NjA0YjgxYmY2MDY3OTdiMTNiZmUxYzc3IGxlZ2FjeS10cnVuaworNjQzMDQgMzg0MzI4NjBiM2I0NjhjODY3NmVmMTRkMzU4NDAzNTlkMGE2OTFmZCByZWxlYXNlMjUtbWFpbnQKKzY0MzA5IGI4ZTljYzI4MDIyYzU0ZjQ3MTAwMjg0ZWJhNDA2MjBlMWU2NmIwMzcgbGVnYWN5LXRydW5rCis2NDMxMCA0ZWQxNjU5NDBiZGQwMTkyNTFkYjNhODhjNDcyNTI2MDAxNzExZTY3IHJlbGVhc2UyNS1tYWludAorNjQzMTEgNWM4NWQ1NWM0ZmIyYmRhNDk1ZWMzZDcwNGM4NTIxMTE4YmVmODUzZCBweTNrCis2NDMxMiA1NjZjNzEzN2FhOGRhZWM1NGI4YmVlMWZiMjgzOTU1MDk3ZDlmZDdmIHB5M2sKKzY0MzEzIDJlMTNmZmFiMTk5ZmZiYzJjODk2OGJmNTQ5MjBhNzZkYzM3NzRhZGQgbGVnYWN5LXRydW5rCis2NDMxNCA2MDliMDlhOWZlZWI0MWY3ZjIzMzUyZmZlOThkZTgxZDQyOGFlYWE2IHB5M2sKKzY0MzE2IDg0NTkwYTY0ZjNhMjI2NDMzNjg0MGJlOTBkMjlmYmRkNzg0OGY4NWIgcHkzaworNjQzMTcgZjhhODg5NGRhNzdhNGI3Mjc2NWI4ZmVjOThjMTc1M2M4ZDk0ZjkzNCBsZWdhY3ktdHJ1bmsKKzY0MzE4IGEyOWJmNjlmYjM0NDY0N2M2ZmYwMTczNmY1NzlmODJiMmYwMmE0MjcgcHkzaworNjQzMTkgMzAyYTZkNzYzMzc4NDA2NWUyMzFlZThkYTMwMGZmNzA2MTgyYTk1YyBweTNrCis2NDMyMCBjMDc0MThkZTNjZDMzMjhlYzk1MzU2NmZjYjExMDhkNzU5NWI1ODZhIGxlZ2FjeS10cnVuaworNjQzMjYgYjhjOWEzNTQzMzgxM2IyODM1ODlmNWFlNjk2ODBjYzBjYzQwOWU1ZSBsZWdhY3ktdHJ1bmsKKzY0MzI4IDk4ZDAxMmE4ZTQ0NWYwOGJjMjBkMThiZGQ4ODUzZjRiM2RjZTdiNTUgbGVnYWN5LXRydW5rCis2NDMzOCA4ZTg1YzQ2Y2Y2NzNjMjY3ZWFmZjJkMzEwOTA5NDVhNWVmMjc2Zjk1IGxlZ2FjeS10cnVuaworNjQzMzkgMjhhYmMyMDJjNzcxMDU5NzEyZTk3OWQyMjliZDg4NmQ5ZGE1Mzc3YyBsZWdhY3ktdHJ1bmsKKzY0MzQwIDBiMWMwMWVlYzc4ODUyOWZkZjI2MDM0ZTY4OTY0ODA3MDFkMDA0M2EgcHkzaworNjQzNDEgMDM2MzliMDljMzc2MDMyOGFhNmYxMWM0OTAxNGQ5MTlkZTg4MmNmMyBweTNrCis2NDM0MiA0MGE3NTkxM2YwNGE2NGI0ZmY4MWQwNGEyNmI2ZjdmM2Q1N2QxYTM5IGxlZ2FjeS10cnVuaworNjQzNDMgZjY0OTk2NzYwOTg0NzI4Mzk3ZTc2YjM4NWFiYTZmNDE4ZTE0YmNhMSBweTNrCis2NDM0NCA2ZjI3ZDUyZThkOTU2ZTMyMzc5NTY4NmFmYTE4OWZiMThiMTk4ZGQyIHB5M2sKKzY0MzQ1IDY4ZDg3YmMwNmZhMzcwZDI1YzAwZTk4ZTUwMGVkNWU5MmJiYzI1MTkgcHkzay11cmxsaWIKKzY0MzQ2IDg3MDAxMTg5OTk1YzFhZTA4YWQ2M2E2MTUwOTEzYmY0MjM5YmE0ZjggcHkzay11cmxsaWIKKzY0MzQ4IGY2NzI2ZjMyZWY3MDQ3N2JmM2EzOGRjYzg2MTdiY2E0NTQxOWY1YjcgcHkzaworNjQzNDkgY2EwNzQyMzJiODc5NzY3YTI4MWM3NmQ4YTIxZjNjMTRmMDc1MzA1MCBsZWdhY3ktdHJ1bmsKKzY0MzUxIGUzOWM4MTBhN2ViMjc3OTE4MDA1N2NhZmE5ZGQ5ODY4OTkyZThjYjAgcHkzaworNjQzNTIgZWY4ODNmYjRjMDc2ZGQ2Zjg3NWJjNTljOGE0ZWMyZWE3MTM0ZTgzYiBweTNrCis2NDM1MyA3MGQ3MmE3NWNjZjFlNmYwNmQ0MjAxZDczZDM5Zjg3Y2Y1ZjRhNzk5IHB5M2sKKzY0MzU0IDVmOTQzNTMxN2RlMTcwNTUyOTI5OWI0ZGIzMTg5NmU4OTdjN2Q3MDUgcHkzaworNjQzNTUgYTA1MjNjN2MxYzRmNzg0NWViNjU2M2U1ZWM1NDc5ZGQ4NTYwZGVlMCBweTNrCis2NDM1NiBhMTc0MTYxN2YwNmY0ZDU0Y2YxZjBjMzQ2YTVmMjNjMGRjM2JjODhhIGxlZ2FjeS10cnVuaworNjQzNTcgZGY1YmIwYTY1OTRiYjdiMTE3OTk2ZmYzNDU4NGY3NTBjNzhlMTY2ZCBweTNrCis2NDM1OCBhNGI4ZGJlMWI2MzM2ZjFiY2JhNzUwNzNjMzE0ZWM1NjEyNzE5MzQ4IGxlZ2FjeS10cnVuaworNjQzNTkgMTg3YTgxZGRhZjJiZGY4Y2VhMjVkOWExNmUxNjY0NWNiNmI1OTlkMCBweTNrCis2NDM2MCAwM2E5YTlkMzA4MWVkYWI2ODFmNTE4NzI2OTdhNTA1MjQ2ZTM2ZTAzIGxlZ2FjeS10cnVuaworNjQzNjEgYTQwOGEwNWQwZTI1MWI4YjYwOTY2N2Q2Yzk5NzU5MjJlN2Q3ODQxZSBsZWdhY3ktdHJ1bmsKKzY0MzYyIGQ1MmE3M2Q4ZDIwZjAzMmI5M2Q3NTg2ZjhlMGJkMGQwMjJlYzc5NWQgcHkzaworNjQzNjMgNjZjOGY3NmNhYzQ0NmQxYTQzZjdjNGQxNzgwOTMxMTMxZDRmMjQ2MyBweTNrLXVybGxpYgorNjQzNjQgYWM4NTRjZGUzMTM1ZTU3ZWMxZjRmYzk1YWU1ZDc0NDk1MGYzYzUzMSBweTNrCis2NDM2NSA1NjRjMjlhMGZhYjFhMDRmYTk0MmQyM2FjYzk0ZTRiMmJmZGZlZDg1IGxlZ2FjeS10cnVuaworNjQzNjYgMGIxNDlmYzQwMTg2ODZmYTI1NzRmMmFiZGVhNDViMGRjZWM2NDg5NCBweTNrLXVybGxpYgorNjQzNjcgMjhmNTY3YTQxM2Y0MTRiY2MwZTI0ZDBmOGU1OGJiY2Y3NDFmMGVlMyBweTNrLXVybGxpYgorNjQzNzAgYWIxMmUzYWQyZTY2NWYyZTJjNWFhZTliYjMxNjNkZjY1NDY0ZDFkYyBsZWdhY3ktdHJ1bmsKKzY0MzcxIGI0ZDgyMzQ4MzQyMWViNDA0YTcwNjVjOTI4MDkwNTQxZmYwZDQ0NDcgbGVnYWN5LXRydW5rCis2NDM3MiBhNjUwM2FlM2UxOWMxZmZjZjcxZTlkNWI5MjgzMjc1YmZhMTljMGIwIHB5M2sKKzY0Mzc1IDZiN2RkYzBmZGE5Mzc4Mjk1Zjc3ZjdiZTA4M2NkZGQ2MjFiNTkwMmMgbGVnYWN5LXRydW5rCis2NDM3NiA1NzAyZWRlNDIyN2E0MWJmZWNjMzI1MWJlNTZiZmRiZTY3YTRjNTEzIHB5M2sKKzY0Mzc3IDk1NDA1OTc5MTBiOTY5NWMxZmM2OWRmZjM3OTBkZDUwYzQwNTY4NGEgcHkzay11cmxsaWIKKzY0Mzc4IDRkYTc3MTU4OGJhMzEwMDY4OGQ1ZWE2MTY4MTc5NGMyNDJkNDgyYzEgbGVnYWN5LXRydW5rCis2NDM3OSAxNTg4ZTJmYTNlN2U3NGIyYmEyZjEyMzRiYzBiOTdjMTQwMzhkZTE2IHB5M2sKKzY0Mzg0IDZhZmRkNmZlNTUxMmRmNGRhMTUwNGMxM2IwMzI2YjE0M2JiMGMzNzkgcHkzay11cmxsaWIKKzY0Mzg1IDVhNDE2YTY0MTdkMzg5Y2NiZTI0Njg3ODU1YmY5N2JlZWNiM2QwNDEgcHkzaworNjQzODYgNzQ0ZjljODA5ZjMwM2Y0MDcxNWJiZjJkYWRiNmFlNjg1OTM0ZmFkYiBsZWdhY3ktdHJ1bmsKKzY0Mzg3IDAzMjI4MDhjMjBmZWU2ODU2MzA3ZDAzZjFjMjhjNWM4ZTFiMzBiZjUgbGVnYWN5LXRydW5rCis2NDM4OSA2OTA0MDA5MmI4ZjgzMTc2Yzk5M2U5MzI4MWQ5ZDBlN2U3MDIxOTE4IHB5M2sKKzY0MzkwIDJjMTA2ODMyOGI1YmE0NzZiMTcyODkxMzk5ODZmZjI2OWU4ZmE2NzQgcHkzaworNjQzOTEgMDdmOTQ3MjYwMTc4M2UxMmMyOGM4NzhhZjhjNDMwODRhNmRlNzM3NyBweTNrCis2NDM5MiBlYTE5NGM5YTZjMmY5ZGU0NDNhMTViZjI2OTIyMjk0ZGFlMzkwMGM3IGxlZ2FjeS10cnVuaworNjQzOTMgMmRkZDg2ZTM3MDBjMjBlZGNhZGIyODUyNmIzN2VlY2JlZGU5MzNlMSBweTNrCis2NDM5NCA1YmQ0M2ViOWU1MjBjMjc2Mjc5YzNmNzZhODEyODhhOTFlNWE1OWQwIHB5M2sKKzY0Mzk1IGEzMzVjNGQ2NDNiMWNmZTE0MTk3YTllZjE5NWM5YjI4MDRmNjA4ZmMgcHkzaworNjQzOTYgYjFlZDJiMDA1ZTNkYmVhZGRmNTQ2NGM1MDU1MjFjM2ZhNTk0MGMzMiBweTNrCis2NDM5NyAwNzMwMjI0ZWNmNWZlZTFiMDdjYTgzZGQ4YWIwMjY3YTE5MjU1MDlkIHB5M2sKKzY0Mzk4IDJmMmYzMmFmOGM0ZWU4ZjY1OThmNjMyZGM4MzcwMWEyMDcyNmQxMGEgbGVnYWN5LXRydW5rCis2NDM5OSAyNTgxZWUxZjI2ZjllNGI4ZGQzNjcyOWFkYmFjNzFmYjFiYTA2ZmI0IGxlZ2FjeS10cnVuaworNjQ0MDAgZWNmZjFhMWEwN2I1NTVmODVlODYxODc2ZjY2ZjJiNWQ1NGU5MzNlMSBsZWdhY3ktdHJ1bmsKKzY0NDA1IGIzNGJjNjM4YjhhN2M3OGIxOTBlM2Q5Zjg2YTU2OTM4MDcyMzEwY2MgcHkzaworNjQ0MDYgYmUwN2YzNzlkODdhZGYwZGQ2NGU2OGM2ZTY5ZjdkMDdjNWM5NmRmZSBsZWdhY3ktdHJ1bmsKKzY0NDA3IGE0YmU0YjE3NDc3MTFkZTE0ZTFiOWNhNTQ3ZWJkYjNjZDZiZTE4NGYgbGVnYWN5LXRydW5rCis2NDQwOCBlMTA3MDYyYWE5Y2Q3Nzg2ODdmN2FhMzk1YzgxZjViMzJhZTU4OWMzIGxlZ2FjeS10cnVuaworNjQ0MDkgOWFmMGQ2NWJjM2IyNzg0NjA2MDMzZTBmZjc1ZWUyYjU2MzY0Y2FlMiBsZWdhY3ktdHJ1bmsKKzY0NDExIDI3Yzc4Y2JmYTdjNjgxYjhhMzdiMjIzMTBkNTIxOGNlZDllMzU3YmQgcHkzaworNjQ0MTIgMGFlZWIyYjQ4MzQxYzc3Mjg0ZGQwZTJjNThlNTFlNDFhMWI5NzgzMyBsZWdhY3ktdHJ1bmsKKzY0NDEzIGRiNjJjNDQ4YTM0OWUyZjE1YzRjMmNjZWU4OTY5MWFmMjY3ODU5ZGEgbGVnYWN5LXRydW5rCis2NDQxNCBjYjg3MWY3MzZiZTAyNGE3NWY0YWU3OTM1YjhhNDhlNjRjNmM5MmU5IHB5M2sKKzY0NDE1IDJiZjQxMTJjZDY4MTVjNzAzZTM2NTUyNWU5YThhYjQzODk3Yzg5NjIgcHkzaworNjQ0MTYgYjQxOGRkMzlmNzk4YmVmODQ3MWZjMTljOGNkMDBkYzI3MTVmZGUzZSBsZWdhY3ktdHJ1bmsKKzY0NDE3IDU4ZjQzYWNlMjk1ZTVjMzk4MTk3YTMyZDNmMGQxYzc4OWQxMmM5YmMgbGVnYWN5LXRydW5rCis2NDQxOCA2YjRiMjkyYzNhMmRhOGRhYmQ3NjIxMWM3YTlkNjE0MWUxZDA3NGZlIHB5M2sKKzY0NDE5IDI1ZDZiMmQwZWU0MmVlOGE3ZjVhODViM2MwM2M1OTkzMTEyNDVkNmYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NDIwIDA3ZGNmMGVhNzg4MGY0MGY5MTE5NzM3NGZkOTUyZDI1NmJkNzU0ODEgbGVnYWN5LXRydW5rCis2NDQyMSBjMzkyNjNlOTRjMzMwNzRkNGI2ZmU1YWM0ZGVmNGUwNGI2MWRmMTBjIGxlZ2FjeS10cnVuaworNjQ0MjIgN2I5NmZhZTQwMGQ2MTg5ZTllMDY1MjUwNjVmYTFiNzU4OWVlZjVlZSBsZWdhY3ktdHJ1bmsKKzY0NDIzIDFiZmQ1ZTcxMmI5NGNhMTVlZGI5NDM2N2MwMmE0MzhmY2Q4MDg2MGMgcHkzaworNjQ0MjQgZWRjNzAxZDAwYjYyMjQxMjAyZDUyNWRlNzE1ODk5NTY2NjIyMWM3MSBsZWdhY3ktdHJ1bmsKKzY0NDI1IDcxN2U4YWVlNGE5ZDA3ZDdjZGE5ZjU4M2YzYTczODhjZWNmOWRjZDIgbGVnYWN5LXRydW5rCis2NDQyNiBkMWE0NjM1MGIwNDc2YzRmY2MzMzljMDQzMjA0ZDI5ODczMGY2MjRlIGxlZ2FjeS10cnVuaworNjQ0MjcgYmZkYTM5OGM5MTdlNWRhMjUwYTljNjA5Y2M2ODhmMmRjODk2YWZiOSBsZWdhY3ktdHJ1bmsKKzY0NDI4IGE3MTg2ZmVlNzU5NmI2NjNmNTM0NWM0YTRiMDk2NTZlMWU2OTdjNGQgbGVnYWN5LXRydW5rCis2NDQyOSA2MjllZWRjYmIyNjU4NTM1Mjg0NzliNDkwODI5YzFmYTA5Y2M5OGNmIGxlZ2FjeS10cnVuaworNjQ0MzEgZDhkYzZiMzdmZDc4OWVmNGY5Zjg5NTQ4MTljYmU3NWFkNjVmNjNhYyBsZWdhY3ktdHJ1bmsKKzY0NDMyIDVlYmVmZjgwNDI1YzU0OTliNGMzMmFjYjI5MmU2NWZjZWY5NzU5NmMgcHkzaworNjQ0MzMgNGUxY2FkYjc4NzFlZWNlMTQzOGE3ZTY2YWMwOTFhYzI3NmM2ZTE2NCBweTNrCis2NDQzNCBhMTA3YmMyZDhmMzQyN2Q5OTc2YjY5NGIwYzU1YjcwNjgzYzI1MWYzIGxlZ2FjeS10cnVuaworNjQ0MzUgYjMyMTAxYzE5YmY4NDg1NjMyMGNkZDM4MDEwZjM2YjczMTJlZmJhZSBsZWdhY3ktdHJ1bmsKKzY0NDM2IDRmZmE5YmJhN2M1ZjAwYjhjYWI3ZDQ4ZDFiZTlhMjVjYTkwZGI4NGIgbGVnYWN5LXRydW5rCis2NDQzNyAyNDUyMGU4MjQxMDcyZTc0MDE3OTFhNWQ2NTlmYjIyNmMwMDA0OGQwIGxlZ2FjeS10cnVuaworNjQ0MzggNDI2N2FkYWNkZDUyNzhhZDk3YWM1ODVmZjYxNGQxZTYzMDkyZjg3MyBsZWdhY3ktdHJ1bmsKKzY0NDM5IGEwNjdkYzA0MzhkNTMyYzU1MjM2ZjM0YTkwZWNmZTVkNTZmYTAwNDcgbGVnYWN5LXRydW5rCis2NDQ0MCA3NWI2YjI3MzdlYTcxOTM2OGI3ZjZhOGE2OGNlZmIzYTcyY2NmOGI3IGxlZ2FjeS10cnVuaworNjQ0NDEgYWM2ZWFiMjQ3M2M1YjZmMWUzMDIyZjQ0MmMzYWNjNzQ2NjU5OTM5MyBsZWdhY3ktdHJ1bmsKKzY0NDQyIDE2YjdjNTAwYjc1M2EzYzk2ZTYwNDhkMzM2M2U4OTQwMGI0ODZkMjUgbGVnYWN5LXRydW5rCis2NDQ0MyA5YzY3ZDNkY2U5MjVkOTRmZjU5NTdjMzM2MGYwNTc5NzA2OTUwY2Q0IGxlZ2FjeS10cnVuaworNjQ0NDQgYWVhZDBjNzgxY2JlZjYxMjZhMTFmOTUwZWQxMjI5MTljMGQ2ZmYzYyBweTNrCis2NDQ0NSA1NTZlNGY2ZWM5YTA4Y2FjZWFiNzhkNDY1ZWFlMTUzNjY2YTY3Y2M1IGxlZ2FjeS10cnVuaworNjQ0NDYgMDE2MTY2YjdiOTc2ZTMzZjBiYzY0MGE4YTQ3MmRjMzFmZDRhNjdkOCBsZWdhY3ktdHJ1bmsKKzY0NDQ3IDVlOGE3ZjlkOTUyMzkzMjFmODJlOTcyYmMxNmI2NmE1NDgyOGU4NTMgbGVnYWN5LXRydW5rCis2NDQ0OCA5NjgxNTI3MTk2M2Q1Y2FiMmFjM2MwY2I2NzUwOWRjMTE1MWY2MTUyIGxlZ2FjeS10cnVuaworNjQ0NDkgZTE3YjgxYTk1YWVkMmU4YTk4NTgyMzUwZjEzNDE1YTEyZmE0OGYyYiBweTNrCis2NDQ1MCA3MGUxYTM4Yzk4MDViNmE2YzE3YTQ5MmZjY2NlNGUyZjcyZWNmOTQ0IGxlZ2FjeS10cnVuaworNjQ0NTEgYzU3ZDFlOTU0ZDkzNDU3YzMxMzZkYWJmNWYxNmQ0YzI0ZjViMzgwOCBweTNrCis2NDQ1MiA5NmFkZjk2ZDg2MWE0NGQxYjI5ZTkxOWFmODBmZjA0MTk1YTM3M2M0IGxlZ2FjeS10cnVuaworNjQ0NTMgN2NkYmUwMWE0NTc2NGIyZTM4NDNiNTE4ODgzZjI2MjAwZTA0NmI3YSBsZWdhY3ktdHJ1bmsKKzY0NDU0IGFjMTU4Y2E2ODZjYjUxOWEzODAxMjJiOTI5YTRjYWZhM2UzOWFhZTYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NDU1IDhiNmMyODU2ZGJlNTEwMzdjMmZkNmVhMzVjMDQzY2FiOGYxMmM1MTUgbGVnYWN5LXRydW5rCis2NDQ1NiBlYjlmYWUyZmEzZjk2NjQyZWJiZjVhYzcxY2E1ZDcyNmI5MThiM2JhIGxlZ2FjeS10cnVuaworNjQ0NjEgNjVjMjM2NjNkMGJkNjk4MTMyZWM3OWYwMGI1MTRmMjM0NTExZTg4OCBsZWdhY3ktdHJ1bmsKKzY0NDYyIGRhNjg5M2UyMDA0ZjRjYTcwOTFkOTljNDNjY2Q3NGRkNjg1NGNkNTggbGVnYWN5LXRydW5rCis2NDQ2MyA2OGNmM2NiYjIxZDI1OGQ4ZTAyMjE2ZDRjY2UzYzdiOGQ2OWQ4ZTBkIHJlbGVhc2UyNS1tYWludAorNjQ0NjQgN2I1MWVhOGNjNTU4ZGJiMzRiNGM0MDI3MWFmZjJmMDJlMTVkYjk5ZCBsZWdhY3ktdHJ1bmsKKzY0NDY2IGIxMWIwOWMxZWZlZjJiZWIyMzU3ODNmM2Q2N2M0NTFlNDBlYTZkNjMgbGVnYWN5LXRydW5rCis2NDQ2OCA4OGJkOGVhYTUxNTJlZGM1Nzk3MjRjOWU1MzkwNjM1ZmM1YzMwNmEwIGxlZ2FjeS10cnVuaworNjQ0NzEgYTlhZDk5ZDBjNzIyNGJlMThhZGUyMzdlYTg0Y2IzNDczNDViOWNjYSBsZWdhY3ktdHJ1bmsKKzY0NDcyIGUwZjFlMWM1NjZkOWQ2NzU0MzJhMTZmNTUxODNjYzNjMTIxMTRhN2UgcHkzay11cmxsaWIKKzY0NDczIGY4NDY5MWY0ODljMzhjNjA4MzdhZDA1ZjEwMGE4Njk4YjRjNDRiZDYgcHkzay11cmxsaWIKKzY0NDc0IGRkOTA3ZDZhN2E4NWQxNjNjN2UxMjFjNWNlM2QwZmYzYzdmM2RjZDIgcHkzay11cmxsaWIKKzY0NDc1IGYwMDI3YmZkZjliYzQ0NTI1NmY0Nzk0ZTdhY2YyOTA5ZTc3NTM1ZGEgbGVnYWN5LXRydW5rCis2NDQ3NiAxZjY3MWM4NWRmMDQ3YzViNzUwMjZjMzQ2NDcyMjAxNTkyZDhkMmY2IHB5M2sKKzY0NDc3IDFkYmQ3YTUyMmEyMzY5ZjNiNTI5MDU2OWU2NjYxOGE4YjQ4ZDFkNTEgcHkzaworNjQ0NzggNmMwNGQxNDk5NGQwODgwMTNjNGI4MTZiYzhmZWM1NDdkYTVhNjFiZSBweTNrCis2NDQ3OSA5Njc2ODg0Nzk4ODMwZDgwMTY3NGFlZTVjOWM2Yjc0YzU2M2VlNWMxIHB5M2sKKzY0NDg5IDZlMDZkNGE4NmUzZDAzMjhkOGQyMDg0MDAzODY1YmE2MmFiYmZiN2QgbGVnYWN5LXRydW5rCis2NDQ5MCBiMDE1NjkzMTE0ZjY3OTdhYzRiMGYxYjFlMmUxZjMxYzYzM2M4YTk2IGxlZ2FjeS10cnVuaworNjQ0OTEgNzUyZTFhYmFmMTVhNTZiNWIzZmFlODQxZDcwYTk1MmJkY2I1MGQ5ZiBsZWdhY3ktdHJ1bmsKKzY0NDkyIDA5ODE3M2U4NDRkMTUyODUzYzUyOTYyN2FmOGZhNzM2YWQzZWI3ZWIgcHkzaworNjQ0OTUgNWQ1ZjcyODVmNWM1OWI0ZjUxNTY2NjI0YmU5NTc4YWNhNjcxYjBlZSBsZWdhY3ktdHJ1bmsKKzY0NDk2IGM4M2VlZjA3OGZkOWYwZWNhODhlZTU4NzNlOTA2NWMxNDU5ZTE2NjYgbGVnYWN5LXRydW5rCis2NDQ5NyBiMWJkY2JjOTdhMTRjMDk0YWIwNGU4MmIyMTY5ZjA4NmMyNmYxZjdlIHB5M2sKKzY0NDk4IDY4ZmQzYWI4NDg0ZWViN2QwYjVmMzYzMzcyNzhmZjZjZmViNGE4YjUgbGVnYWN5LXRydW5rCis2NDQ5OSAxMmJlNDRjNmE3MDJlOGIzYjdjYWFjOWY3N2YwYzQxMWQ4ZTgwNDkxIGxlZ2FjeS10cnVuaworNjQ1MDAgN2U3NDdkZTIzMWIzODI3MzdmNjMxOGYzYjIwNTBkM2Y1NjFmMGQ2MyBweTNrCis2NDUwMyAyMmZiZGRmMThkNDg4YTEwMDE4MzJlNzQ3NWE4YzU3ZTkyZDU1NWRiIHB5M2sKKzY0NTA2IDI3MGZmNmY0ZDk5ZjNmZDBkZjkyZmY3MjI3MDY5ZjI1ZTJiNTE0NGIgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NTA3IGQ4YWZhNDFjNjk2YWJiZGViMDNkMmRkY2M0NzcxZWM2YWNiMDkwN2YgcHkzaworNjQ1MDggM2I2ZmZjZmUyOTcxZTFmZDM5OWUwMmUxY2JmZmFiNmE0NmYxZWU3NyBsZWdhY3ktdHJ1bmsKKzY0NTA5IDk1NzRmZWQ5MzY4ODM2YTViZmY3NzkyZjJhN2Y5MzFlMjZmODBiN2MgcHkzaworNjQ1MTEgMGFmNmYwMzAwZWFmZjQ0M2Q2ODZiMmE1OGY3YmJmZTRiN2RlN2I4YyBsZWdhY3ktdHJ1bmsKKzY0NTE1IDc3ODhlOTg5M2I4NWJiOTFjNzczYzcxZDBhMzUzYTQ1ZDBlZDEyOWQgcHkzaworNjQ1MTYgM2FkYTQ2ZjIzMjFkYzI0NDY4MGI0NzJkYjBlMGIwYWIwMzgzYmYxYiBsZWdhY3ktdHJ1bmsKKzY0NTE3IDNjOGQzYjk4Y2ZkNzNjZDIyMzQ2YmFlZDdmN2Q1ZWExMmVhMTAwOGYgbGVnYWN5LXRydW5rCis2NDUxOCAzODBhYTJkMTYxZDM5Mjk3MjM4MDA4Y2U0ZGU4MWEwMWMwZmI5ZmQzIGxlZ2FjeS10cnVuaworNjQ1MTkgMGI1MmJkYzRjZDg5Mzk5OTFiOGE0YWFlOTc1MmE2MzBmMDE5MzEzNCBsZWdhY3ktdHJ1bmsKKzY0NTIwIDY0YWJiNjFlOWQ0ZjdmMDQ3M2Y3YjdmYTRjODgxMzYzMGZiNWMyZmMgbGVnYWN5LXRydW5rCis2NDUyMSA1N2M4MmNiMGZhZmZjZTliZmQyY2QxZDg5YmFmZTcxNjk0MzQyZjBiIHB5M2sKKzY0NTIyIDM3YTIxZDA5N2QzNGQzNTE0NWU2OGM2NWY5NjU3ZWMyMGM4MmI1ZjIgcHkzaworNjQ1MjMgZTVhNTFlZDllNjM0MjcwZTI0ZTMxMTNhMmIzYzMxNjRjZTYzNzhhYiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ1MjQgZDFlODY0YTVjNjBjOGI0ZjJlMDc4ODgzZjM4N2NkN2UwNTQzNWMwNyBweTNrCis2NDUyNSBmZmJkNGUzMzNlMmY5YmQwZTNmMDg4MTViYWFmNjAxOTNhZGQ3NTE4IHRsZWUtYXN0LW9wdGltaXplCis2NDUyNiA3ZGUwMzg1NTA1MjNkYzJiMzg4ZjZkNDVkNTQyN2YzNzBkZWU0NjVkIGxlZ2FjeS10cnVuaworNjQ1MjcgYmRlMmFiOTQzNTkzYzNhOWFjMTgzN2U1YzRiOTBkZGYzMDJhZWNiNSBsZWdhY3ktdHJ1bmsKKzY0NTMyIGIyNjExNjQyNWIxMTQzNjAwNjUxZTdmNDgzNjUzM2JmZTRmYWY4MGUgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NTMzIDdlYjM3Mzc2NTdkMTJlZmM4MGMwMDJmM2FhOTZlYWJkMjY2ZDYzNTkgbGVnYWN5LXRydW5rCis2NDUzNSA4ODIxYjQwNWUwZTZjZjllODZhNDlhNTZhMDQ1N2ZmMzVkZGY0MjllIGxlZ2FjeS10cnVuaworNjQ1MzYgMDY0YjBiNzViYWQ1M2I1YmE3MzY3ZDFhOTJlNWVmNGQ2MTI3YjYzYSBweTNrCis2NDU0NCA4YzkyOWNlMGZiNDFjMDg2NTFlNWFiZDM1ZTg1N2Q4MjQ5MzA0YTVmIGxlZ2FjeS10cnVuaworNjQ1NDUgNzIzYzBmZjY5OGI3ZjU2ZjgzNWU0ZTUxZjEwNTRlNjkxMTdlYmYzNyBsZWdhY3ktdHJ1bmsKKzY0NTQ2IDdmYmMzNzRjOTU5ZDJkNzc5ZjVjZTY2NGYzNWVmNGZjMDgwNmY3ZTUgbGVnYWN5LXRydW5rCis2NDU0NyA1OGRjMzY3ZGMxZWEwMGJkM2NjODM1M2RjNGIyNjUyYjFjNDM5OTlkIGxlZ2FjeS10cnVuaworNjQ1NDggYzRiNzY2YWZhYzZmNjQ2ZTg3MWExMzE0ZDU0M2Y2NjFmZGFkMmEzZiBweTNrCis2NDU0OSBkYzQyZWZkNzI4ZWViODIyZDU2MzQyZTM2MzNiZThjN2M1MzI2MWFjIGxlZ2FjeS10cnVuaworNjQ1NTAgZWRkNDhiMDg0OTRkYTg5NmNiZmU1OGRkMzBiYWJjODRiNTM2NjEzMCBsZWdhY3ktdHJ1bmsKKzY0NTUxIGJmYWYxNDI5NTc5NDllMDQzYmQ4Y2ZlNmM3Y2RkOGU5ZmRmZmRjZjUgcHkzaworNjQ1NTIgNjA1YWI2ZjkyODM4OGFmNWYxZGZhYTkyMmM4OTVhNDlmZDA3OTE5MSBweTNrCis2NDU1MyBjNzEyYmNkMzIwM2I0Y2U5ODA0Y2FlZmEwMTc4YzhmNjdlMGIwYzgzIHB5M2sKKzY0NTU0IGM1NjA3MmVhYWNjMjYxOGExMzM5ZDhjYTI3ODAwZDkzMzE0Y2M4NDMgbGVnYWN5LXRydW5rCis2NDU1NSBhNjliZDNhYjlmOTk3Y2RiYWExOTYzNTdjYjVmMjcxMTZjNWQzMjQ2IGxlZ2FjeS10cnVuaworNjQ1NTYgNzI0MzQwMTNiMDMwZmRjOGQwNWEwZTI1ZmE4MmQ1MWNjMGVmMjU1YyBweTNrCis2NDU1NyA0M2Y2YmIwZWFjYjJmNDA4M2I5NjhiZmQ0YjdiNzE4NmMyOGFmYTI1IGxlZ2FjeS10cnVuaworNjQ1NTggNWI0Yzg3MDk5MDNkMDdhNTI1M2VlMTE0NjM0NjQ0YjM2ZmU0NjQ2MSBsZWdhY3ktdHJ1bmsKKzY0NTYxIDg4MzkyMDIxOTQyYTZkZmRjZWU4NmEzMTg2NGQ4NzZlYWEyNzc3ZjggbGVnYWN5LXRydW5rCis2NDU2MiBlZDVkYzEzYjg5OWJhMmQ2YjU0NWJmOGFhMTc5NGE4NWMxMjg3YmQzIHB5M2sKKzY0NTY1IDFjNGJkNTAyZGU2MjliMjkwZGM4NzFkMWZiMmIyMTI5NmE3NTliODUgbGVnYWN5LXRydW5rCis2NDU2NiA1MDg1OWFlNGFlYmJhNGJkNjJhMzY1YzhkOTk3NmZmMjEwOWYzMGNmIHB5M2sKKzY0NTY3IDg0MWFlMTc2N2I0YzU0ODM4YmUwNGJmMjUwN2VmOTY5ZDkwYTQ0N2YgbGVnYWN5LXRydW5rCis2NDU2OCAyNDhiOGFkZmNjOTdhMzhmNWYzODNlMGEwYjhiYTllMTVlMzhmOTExIGxlZ2FjeS10cnVuaworNjQ1NjkgOTAzYjZlMmEzMDRmYjBiMzA3Y2NlNGM5YTVmZGY3M2RmNjk4NjRmNiBweTNrCis2NDU3MCBiODU3NzA0NTk1OTFiODhiNjgyYjAyNjIyZjcwYzNmMzk1NWEzYzA1IGxlZ2FjeS10cnVuaworNjQ1NzEgMmM4ZTNjY2VhYzRlYjRlMDQwMWU0YTg1ZDFhOGFmYmE2MzJkYmEzOCBweTNrCis2NDU3MiBhZmNkNjhhODdlZWNhZDIxMTBlMWY4OTg1OGRmNTc5OTYxN2I0ZTA1IGxlZ2FjeS10cnVuaworNjQ1NzMgYmRiYjY2YmMzN2RjZTFiM2ZjYWNjZTI5ZDY3N2E1ODRhMTAyYjQyZSBweTNrCis2NDU3NiBhZmJkNTBhZDRmMzQ4NDA1ZDZiZDM1Yjk4MjdkNTMzNzJkY2FjOTE1IHB5M2sKKzY0NTc3IDFkZDEwYjA0ZGI0NzQxYjlmYzkzZDQyMjg1OWIyMGY0Nzc3ZGZkMzggbGVnYWN5LXRydW5rCis2NDU3OCA4YTI4MWJmYzA1OGQ3ZjBkMWVhOGY1MmQ5YjZjZDEyZjJjNTVlNmU4IGxlZ2FjeS10cnVuaworNjQ1ODAgMGZjNzg2MWVjZTVmNmNmMGU2MjNhYjc1NjdmOGZhZTczYWE1N2Q4MyBsZWdhY3ktdHJ1bmsKKzY0NTgxIDU1YWM2YzdjZWI1OTgzYzI1ZjFmYTk2ZDZmNWMyNDU5ZjYyNmZhZTEgcHkzaworNjQ1ODIgM2M0OWFmMmQ1YmYwYWZlNjVkMGE4MTEwNDNmMTdlZTUzZjNlNjY2YyBsZWdhY3ktdHJ1bmsKKzY0NTgzIGFkOWJlYjQxYWFjMTA1MDBmNzY1OTU3NTJkMTYxZTFiY2QwZDcxZDEgbGVnYWN5LXRydW5rCis2NDU4NCBlMTdhZGZhZjRmNjRjOWM0YTQxN2FiMDdhNjllY2IwODU5NGE2YjU0IHB5M2sKKzY0NTg1IGQ5NGZhNGNiNTJlNzM0OWE5ZDA5MGMzNzJiMTcyOTBhZjJkMWRjZDIgbGVnYWN5LXRydW5rCis2NDU4NiBlZjkyNzAzNzQ4NDQ0Y2NlOTE4ZTFjMjM2MzcxNmYxZDlmOWRjNGJhIHB5M2sKKzY0NTg3IGY1ZjcwZjIwYjY3OGY5NjZmNjZhNDFiZmZkN2MwMDllNTQyMTc3MDYgcHkzaworNjQ1ODggNGQyZDBhMjFkNDk0OGRhOWMyYzdiMWNmMjdmYjRkNDdmNGQ0NWE2MyBweTNrCis2NDU5MCBiZTU1YjdjMmM4ZTY5MjVjYmJlNjhmNThjMTVlMGU3OTQ2NTZmY2YwIGxlZ2FjeS10cnVuaworNjQ1OTIgNzNjYmNkZTc1ZTA1OGMzODc0NmVhY2VmZmU0MDkyZDkwNDQ1OWE2ZiBsZWdhY3ktdHJ1bmsKKzY0NTkzIDI5N2UxMjE4ZWZlNTA5ZjkzN2JmODE4NjgxNzk0M2RkNjMxMTZlMGYgbGVnYWN5LXRydW5rCis2NDU5NSBlMTQ3MzljNTg0MDEzNjkzNDc1YjYxODQzM2EyZjM4OGIzYjlhOTgwIGxlZ2FjeS10cnVuaworNjQ1OTYgMjU0MTJjNmQyNzc2MzU2NTgwZjgyNzAxNjU3OGU2N2Y4ZjIyZWI0NSBweTNrCis2NDU5NyA4MmM0NjgxY2Q5YmQwN2EzYWQ3ZWQ1YzFlNjFlZDQzYWEzMmQ2ODY3IGxlZ2FjeS10cnVuaworNjQ1OTggNzYwNDUxNWE4MTk4NWFiNzA3MjdjM2U0YWZjYmU3NWNmMDhjOGI4NSBsZWdhY3ktdHJ1bmsKKzY0NTk5IGE5MDBiYjFkZWQ5ZDliNmU3ZTk2ZmVkNWE5MDU1YWM5YjNhYWI4YWMgcHkzaworNjQ2MDAgYjlkMmZmNWUzZGNmYzBhZTllYWRlOTU1MTY3NjA1MWM0ZmQwZmM3MCBweTNrCis2NDYwMSA4Y2NiMzU3MzlhOTZmMjBiMmFkNzY2MGJjZDJlZTAzOTc4MjM2Y2FlIGxlZ2FjeS10cnVuaworNjQ2MDIgZTI5YjRjZTY0MWY5NDMxOTVmODUxYTgxNGIxYjRjNmJjNmZkYWI1MiBweTNrCis2NDYwNCBmZDc5YzRkOTc3NDVhZDFlY2RmYjc5OGUyNWI4MmEwNGJjNGUyOWU4IHB5M2stdXJsbGliCis2NDYwNSA4Y2ZiODliNjFjMmU1MWI3OTJiMWViZjM5ZmY2MGQyOTc2ZTI4MmU5IHB5M2stdXJsbGliCis2NDYwNiBiNmFkNjY0Y2FlNDk5ODgyNzJkYjhmZDNhMmE5NzRlNDYyYjU5N2YxIHB5M2stdXJsbGliCis2NDYwNyA3YjJmMjE4OTUzOTIzYzkwZTQxMWU5YjM2NjY2MTM2MWQ3MmNjYzA0IHB5M2stdXJsbGliCis2NDYwOCA3MzljYzlmZGVmZTVkNGFlYjY0MTcwOGI1ZTkwNjg1ZGRiYWY5MGQxIHB5M2stdXJsbGliCis2NDYwOSBhZDlmYjlmMWQ2ZDNiZGJhZjUzMTcwNDQ1MWQ2ZWVjYWFiYTJlZmQ3IHB5M2stdXJsbGliCis2NDYxMCA0MTZhNTZlYjI0ZjMzYWFkYmZjYzM4YzIxZmIxOTdmNDhhMzU0MjI0IHB5M2stdXJsbGliCis2NDYxMSA0NDZlM2RhYzBjMzFiZDQ5ZmIzNjY3OTgxODc3ZTY5MzZjNjNjZWYzIHRsZWUtYXN0LW9wdGltaXplCis2NDYxMiAzN2M3ZDE3NzQwY2NhNjg5NDI2MzU3MzE3ZGNlYWZkODNkMDFmNzA5IHRsZWUtYXN0LW9wdGltaXplCis2NDYxNSBlMjcxOTc2YWMzNzI0ZWEwYjE0MzM3ODY3ZTJlZjhkYTc5M2YxM2JkIHB5M2sKKzY0NjE2IDVmNzQ2OGFjMTRjZDg3YTVhMjEyMzJjNTljOWMxMTdlZDQwZWQxNjIgcHkzaworNjQ2MTcgOTEzYWEyNzRlZDc3YjU3ZDFjMzFmYjA5N2UxZTQ0ZjczY2M4ZDVlZSBweTNrCis2NDYxOCBhY2RmZmI1YjQzNTIyMTEzZGZkYjVkZDA1YmM4ZmJkOTZkM2M5ZWY0IHB5M2sKKzY0NjE5IGVlZDUzMTdhYzgzN2UyNjNkMzBlYTkwMDQ4ZjNmYmJlYzdjNGVhNzggcHkzaworNjQ2MjAgZjkyYzgwMDk1YzE0YzlkOTFiNDVjNWRkZWE1MTM0OWU1MTQxOTUxOSBweTNrCis2NDYyMSBiYjY1ZjliNzZjMWZhNTFhMDJkYzU4M2RkMDUxN2Y1MzhmN2UxZDlmIHB5M2sKKzY0NjIyIDgwMTA5ZDQwNDRjZGE0ZmU5MWU0YzRhNjdiNDkwMWRkMTQ5NGFlN2YgbGVnYWN5LXRydW5rCis2NDYyMyBlMTBlMjU3Y2JmNjE1ZWJiNjcxMGVkYmI2MGI2NDhlYmFlMzJlMDQ2IGxlZ2FjeS10cnVuaworNjQ2MjQgN2QxNTMwZmFjMWY2Njg0MTc2OTJjYzk0NDcxMmQ3MTg2YzYzYTcyZCBweTNrCis2NDYyNSBlNjhmZTkwZjE1YWIwMGUwMzIxODZmODU5MGVkMGNlNGViYmJkZDlkIGxlZ2FjeS10cnVuaworNjQ2MjYgNDIzMDk0MzdmMWNhMjVjMDE2MTM4NzQ5OGQyYjM2MTJmMjQxYzBkYiBweTNrCis2NDYyNyA3ZTI5OWFiMzVkOTVlMTk5ODk5OTc5MGRjNmQzOWQ4ZWJiNGEyMmZhIHB5M2sKKzY0NjMwIGNhMTM1M2JmZDQ4YTMyMzIzMDFkZWQ4MTc5ZDBmNTQ0Y2FhMjBhMzEgbGVnYWN5LXRydW5rCis2NDYzMSA3MDM1NzgxMTc3ODYyN2MxYTIwMTUxNTMzMDNkNmE2ZWJlZjA3M2RiIHB5M2sKKzY0NjMyIGQ2NjQwNDllY2FjYWQ4YmUxOTg5OTgyYjUwZTFjNGY5OTFjOGEzMjIgcHkzaworNjQ2MzMgN2RiZDZiNjA3NzA2YTM2M2JhYTZkOGYxMDg3OGFiZTVlNDZlNjUxOSBsZWdhY3ktdHJ1bmsKKzY0NjM0IDcwYTRlYzQxMjg4MjJhY2NiNDc1NGQ1NzUwZWZmNzI0NTc4MTVjN2UgcHkzaworNjQ2MzUgY2RhNTU2ZDIzOTI0NDdiOTkwNDAxNjk4YWZjOGFhNWVkMTM2OTZkYSBsZWdhY3ktdHJ1bmsKKzY0NjM2IDJkNDg3N2Y3NTAwZWZhYzM4MTIzZDRmOGJjNGNhMjUzNTNiOTE4MzUgcHkzaworNjQ2MzcgNmMzODYwOTE0MjkyYzZiZTgzMDZhZWM2MzY2Y2RjMDUyYjJkMzc4NiBweTNrCis2NDYzOCBhMDZhMGUxMTMyZWUwMmZiYWQxMWY4MjRjNzcyNTJhZGQ5ZmRhOTgyIGxlZ2FjeS10cnVuaworNjQ2MzkgNjBmZDA4ODY4MTFjNzVkNTk2MDcwZTY2ODJkMmQ4ZWE1N2M5OWE5NyByZWxlYXNlMjUtbWFpbnQKKzY0NjQwIDRhODMyOTUzNTIzNGQ3NWI1ZDc2YzRkYjg3ODIwMTEwZjNhYzY2ZDAgbGVnYWN5LXRydW5rCis2NDY0MSBlOGJlZTMwOTdkNDQwZTUzYmJmM2Y1ZTg5NjA1ODVlZWQ1YTRiNjQzIHJlbGVhc2UyNS1tYWludAorNjQ2NDcgNmNkM2NiZTA3MDM1ZTk0ZmRiYTg4M2RkYTQ3YWY5M2QwNWFkZjI5YiBsZWdhY3ktdHJ1bmsKKzY0NjQ5IDgwMTc1NDIwMWIxMTQxMjg2MmIzNTliMGUzOWI4MjJhYjY5OTJmYjAgbGVnYWN5LXRydW5rCis2NDY1MCAyZDAzNmI3OGRmYTQwYmQ2MTI1ZDJkNjFmOGUwNjFjNDRiNDkxZThjIHB5M2sKKzY0NjU0IGI3ZjNkOTcwZTQ0ZjAzMTcwZjM0NmNjOGFkYjg4NjQ1YmJjNzJmZjAgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NjU1IDY1YWY1NDRkYTEyMWQ0ODUxNTE5NGQyZWQ4MTY5YTQxNjBjOTU3MzUgbGVnYWN5LXRydW5rCis2NDY1NiA1ZDhmNDcwMDViNzNlYjBjODU5NzBkNmFkMGIyYWMxOWY4NmEwMzljIGxlZ2FjeS10cnVuaworNjQ2NTggZjkyNzI0MGRlZjFiNzNjN2VkMTlkYjhiOTAwMmYyNTZlMTM4M2ZlMSBweTNrCis2NDY1OSBiMzljZWVjODFjMTc0ZjgxZGRlMTJkOWM4ODE5MGU2MTFmYTY3ZDlkIHB5M2sKKzY0NjYwIGUyMmRlYWViNmMxYjAyZjIxN2I3NDQyOTg5ODExZGFmOGVhY2MyMzIgcHkzaworNjQ2NjEgYWRmNDhmMmZhZGZjYmJlOTU3NGJiMzA2ZWVlNjkyMDA1OWQyYTQ0YiBweTNrCis2NDY2MiBkYWY5ZmFkN2M1NTE5MTM2ZTIyODljYTg5YTM3MWFhNDgwYWZhZTc2IHB5M2sKKzY0NjYzIDgzMmFlNTEzZDM0NDQ1MDE2NmE3ZjYwNWNlNDU3MmJmMmZjYjM3NmIgbGVnYWN5LXRydW5rCis2NDY2NCBlNGJiYjFkM2RkMTQ1YzhjODZjZmFjMDY1MTZhNTZlMjRkMDhkNTQxIGxlZ2FjeS10cnVuaworNjQ2NjUgMzA5NTQyZmQ3ZmU4ZDMzODA2NzViZjNjZjE0YTdjMTEzMzZkMWY2NyBsZWdhY3ktdHJ1bmsKKzY0NjY2IDgxZmQ4YThiYWE5YTczM2NiNTE5Y2EyZTgxMWQ5YTU4ZWI0NTM3NTAgcHkzaworNjQ2NzAgMTg5OWJlMzEyMmMyMjBlYzlmZDdiYzk5ODE4ODc2N2JkM2UwZTI5OCBweTNrCis2NDY3MSA1ZjRhODk4MGMxYWNiZjY5OTdjMGQ3ZjYzOGZmYTQwZDg1YzYyNTI2IHB5M2sKKzY0NjcyIDdlNTYwMTZhNjU2NTllMGQyZmUwYTBhMDY4OTljOTdjMjUyMTc4MzkgcHkzaworNjQ2NzMgNzBlMWQyYmJiYzMyZmFkMTU4ZDliMzJhNDIwMTM0YmIyNTdkYzExMiBsZWdhY3ktdHJ1bmsKKzY0Njc0IDQwMjVmNjM4OTExZmExOTYxZTExM2RiOWQwODgxN2YxOTEwM2Q2YjYgcHkzaworNjQ2NzYgYmQyMzM0MTIwYTMwZTdjNDcxYjQ3NTQzZjE3NjliNGJlZjRmMmY2YyBweTNrCis2NDY3NyA2OTAxZDVmZjBmN2FiNmE5MzAwZGM1NWVmYzY1NzFhY2RmMTAwMTNmIGxlZ2FjeS10cnVuaworNjQ2NzggZmIwMmZlZGZlNjQ3ZjJjODgyZjM0NGE2NzdlYjczNTZjNzUyOWQzYSBweTNrCis2NDY3OSAxZjhiZTI2ZDA5OGFjYTZiZWU2YmQxYjM3YTBlZGZhOThmNjhmOWFlIHB5M2sKKzY0NjgwIDk4ODYwY2ZhMTlmZDM4YmNmYmM4MDJkZGE0MjhiMjg2YjU3NmIxNGYgcmVsZWFzZTI1LW1haW50Cis2NDY4MSBhYTFmYmUzMjFhY2YxZjBhMmY0ZTQ0MGY5ZTQ5OTRlZTA3OTUxMDhjIHB5M2sKKzY0NjgyIDM1MGEyODliMGVkNDVjNDRlNDdlOGZiOWU5YTQxNDgxYzBiOTI5NjUgcHkzaworNjQ2ODMgZWY4ZDc0ODdhMDc3NzNjM2Y4MzI0MzU1NWI1MTMxNWNkZDdmYmJjNiBweTNrCis2NDY4NCBhNTcyM2E4MzY3ZTc2YTE4OTY2MzQ5ZDVjOThkMzIwYTU0YTBkYTI4IHB5M2sKKzY0Njg1IDQyMjRmZjc3YTFkZGNmZWYyNTBlMTlmNmE4YjhhMTI0ZmFlMjc2OTcgbGVnYWN5LXRydW5rCis2NDY4NiA4OTNkOTBiNzczMWJkMDE1ZjA2MWNjODc4MzNhZmYyZTlmNzgwNjQzIHB5M2sKKzY0Njg3IDdkMWU2MTQ5MmM3ZGZkNzhiMjFkNDExOTYzMjVmMWUxOTJmNDU2MzAgbGVnYWN5LXRydW5rCis2NDY4OCBhY2ZhZDg2NDBlMjFmZjliY2U0ZmViM2UzNWY0ZGRlZTJhYjM4MWMyIGxlZ2FjeS10cnVuaworNjQ2ODkgZTUwMjA0NjY2OGIxMDBjOGY2OTZmOTVhMDUwMmY0NjcyNzg4OTc5OSBsZWdhY3ktdHJ1bmsKKzY0NjkwIDgwN2Q2OTk1YmFmZDNlZWQyNjc0ZDllYTAwODY5MmQzMzM1MjNiOTggbGVnYWN5LXRydW5rCis2NDY5MSBjZGFhYzc5YTcyMzc2OGQ5MjgzMDEzNDYzZmI3NDQ3Njc5ZDI4N2NmIHB5M2sKKzY0NjkyIDJkMGMzNjQzMjIzZjY5MjY4NTA4NjMyMjM3YTI3NzMyNDYwOGY0ZmIgcHkzaworNjQ2OTYgNDBlY2I5MTMzOTllNjczMTM0YjY2NzRjZGZiMTJmOTIzYzQwYjhlYSBweTNrCis2NDcwMCBiMWIzYWY4MmFkZDZmYWQzYjI0MzM4MDZiNTk3ZjAwNjE2MmJhZjZmIHB5M2sKKzY0NzAxIDRlNjg1OWM2ZDM4YzhhMmNhYTkzNmE3MmRlMWIyMjM4MDZkNWYzMjEgcHkzaworNjQ3MDIgMTNjOTg1MmRlODFhM2QwMWEyOGY5MmY2MjIzZWZjOGUwOWE5ZTI2OSBsZWdhY3ktdHJ1bmsKKzY0NzA5IGVhN2NjMThjOWFjODZmMjMyY2NiZmE1YTkxZDI4YTA0OGFjODIyN2EgcHkzaworNjQ3MTYgZGM5YjNmMjg5MmI4YjBjNDllMzJiNDY4OGJlZDhiMmM1YzU4ZWEwMiBweTNrCis2NDcxNyAwNDgxNzc5M2I5NjI1YjI0NjA4ZGFhMTdhYjMyZTkxM2E5MTdlNzNhIHB5M2sKKzY0NzE4IGYyNzIwNjEwMWZmOTQzYzJhMDJlYjRiODUzYTQ0ZDY3ZGJhMjJmZDUgcHkzaworNjQ3MTkgYzkzNTk2ZWMxZDNkZTY2NWQzNjEwYzJjYmEzZDE4NGVkNTNjOTVkZCBsZWdhY3ktdHJ1bmsKKzY0NzIxIDZmMTMyYTI2YjIyZjc3Y2U0NGZmMTI4NmFmZjUyZDM1YWQ2Y2RlODYgbGVnYWN5LXRydW5rCis2NDcyMiBkNzUyNjY3MGZmMGFkZWVkZTgyZDhkMzJmMzI3ZjBmODFmM2EyODNhIGxlZ2FjeS10cnVuaworNjQ3MjcgM2IwMGU5ZjlkNjkyNTlmMmM1MzJmNWRhYzkxMWMxMmJjYjM4YTEzNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ3MjggOGYxMzQ2NTAyMjM0NWRkYjMwZmMxNjU0OTlmNjdmZjVlYmY4MDE4MyBweTNrCis2NDcyOSA0YmY4NDAzNWNiNWY1ODQxZWI3MDk3OGU2YjA1YjQzZjExODhmMmYwIGxlZ2FjeS10cnVuaworNjQ3MzUgZjc3MjQ3NmFkOTBkZjhlOTI3NjQwNGM5ZTA2N2I3OWEzOTM1MTZiZiBsZWdhY3ktdHJ1bmsKKzY0NzM2IDIyNzlkZDRhMmY3MzJiNzUzODc4OWRlZTQyNDdjMTRmNzg5M2ZkZDkgbGVnYWN5LXRydW5rCis2NDczNyA0NzIxZjI3ZWQ2YzI3ZTg3NTNkM2FhYzYwODkzYTAzYTQ5MDlmZDE0IGxlZ2FjeS10cnVuaworNjQ3MzggZmIyNzkyNDJmOTcxMDJkMGRhNzY1MjAwMzNhNmJkYTc5YmExYTJhYyBweTNrCis2NDc0MiA0ODAwZGQyMmY0NTU4MzhmMmQyMGI1ZTYwZDU0ZGE3YjdlN2YxMWJlIGxlZ2FjeS10cnVuaworNjQ3NDQgZDY2NTc5ZjkyNWM0NmY4NWI4YjFlOGRhNDFjZWI0YTM1NjEzMGI2MyBsZWdhY3ktdHJ1bmsKKzY0NzQ1IDI0NzYzNzNmNTU0ZDE1MzkxZjhiYjJiYTQ4M2Q4MGZhMjNkNzFhNjcgbGVnYWN5LXRydW5rCis2NDc0NiA0NWI2NzIzNjdiMWY3ZDUyMmMzY2RmMDVmNTBhMWY3OWI0OGFkMzlhIGxlZ2FjeS10cnVuaworNjQ3NDcgNGJhM2QwN2I4NzFmODczNDM3NDkzYmE2ZTM0YWU4MjlhY2FhYjY1MSBweTNrCis2NDc0OCA0YTcyYmUxZDVjMjE4MTFjODUzZjhmMGY5MGQ0YWZlZDE3YTIzZjlkIHB5M2sKKzY0NzQ5IDZhZTcxZjUyMmIyZjBhYmZlNmQwMDk1MmQ2ZWQxNWZhZmVlMjhhM2QgcHkzaworNjQ3NTEgZmEzNDA4ODM4MGY5YmYzMDljZDgxMDcyNjViZDYyMGFkYTQ4MGMxZCBweTNrCis2NDc1MiBhMDg4MmJmYWY1NGQ4ZDdkYTJmOWJlMzAxMjllYTAxZjc2NDI5OTlkIHB5M2sKKzY0NzUzIDA3MzgxMTljMWVmOGZkOTVhODgxMzIyZjljNWFlYTU2ZTJiODA5Y2QgbGVnYWN5LXRydW5rCis2NDc1NCBhMzEyZTAzYTA2MzMyNTFkMWZlM2QyNWQ3YTg2ZjZkYTY4NzFhM2Q3IHJlbGVhc2UyNS1tYWludAorNjQ3NTYgYzMxOTNiNzE1NmJiNjY1MDQxMzRmMjFhMGZmOTZmZjFkMWE4NjMzMCBsZWdhY3ktdHJ1bmsKKzY0NzU3IGMzYmMwNTIzNzI3MmVkZWUwMjE4NjJjYzc3NGJjZTQ2YzE4MGQwYTkgbGVnYWN5LXRydW5rCis2NDc1OCAyYjllMTMwZTIxYmM1NDYyOTc4OGI5NzVjOGNlYWMyMzJkOTQ3N2VjIGxlZ2FjeS10cnVuaworNjQ3NTkgNmM5YWYxNGQ3YjgxMzQ3NmUyMTk4MmI5NTZjMDVkMjE5MTdjOTdiZiBsZWdhY3ktdHJ1bmsKKzY0NzYwIDcxZDMxYWI3MzUwNzMxZmFjYjRmYzcwODgzNmM2ZTU2NThlOTNiOGQgbGVnYWN5LXRydW5rCis2NDc2MSAzYWU5MjljMGVlN2EyODVlYmJlNTZiOTdkNDRmYjMwOGY5YmFlMmZmIGxlZ2FjeS10cnVuaworNjQ3NjIgMGM2MmEyNzllNGRhZmQyMGEyMmU1MjE0YWMxMWY2NmMyMGZiN2M5OCBsZWdhY3ktdHJ1bmsKKzY0NzYzIDM5NDdiZmRkYTc2ZDI3Y2UyMmFjYmY1ZmY0ODczYWI0ZTk3ZjFjZDAgcHkzaworNjQ3NjQgNjQwYWY1NDRhODYxZjcwNGEzNjNhYWEzM2UxMjY4ODE3MzYzNDNkYyBweTNrCis2NDc2NSAyMjMxYTVjZWUzZjU2ZWM4MzEwMDg3MzhhMjkyZWZmMmM0NTkwOGIzIHB5M2sKKzY0NzY2IDQ2MTRhYzMxMmNjZWU5ODAyNmMyYTAyN2JlZmUxMmY2MDkwNGY0MDEgcHkzaworNjQ3NjcgMzBmYmY4ZTQ1NTQ5ZDAyOTY5NDAxNjg3MDczM2VlOWVjNTZkZDBjNCBsZWdhY3ktdHJ1bmsKKzY0NzY4IGQ3ZmQzMmNlMDdhYTYyYWY1ZWZlOTc2OTBiZTQ2NDg4N2E0YmNiYTYgbGVnYWN5LXRydW5rCis2NDc2OSBhMjQ0ZDZiMTQ1MDE4ZTgwZGRhNjMyZjg3NjQzNzBmNWQxZTNkZWY4IGxlZ2FjeS10cnVuaworNjQ3NzAgNWIyZjAzYmViZTNiYWY2YmI1OGMxOWIyN2U2NmQ1YTJmNmM1YzU5YSBweTNrCis2NDc3MSAwOGM1YzhjMTE0YjI5YThlODI5MDNiYzFmNzNlNjQxOTc2YzZjODc0IGxlZ2FjeS10cnVuaworNjQ3NzIgMjY3OTk4NjFkMzE4Y2UwN2E0NjNiN2E5NGFiOTZkNGQwOTVkN2FmOCBsZWdhY3ktdHJ1bmsKKzY0Nzc0IDY1ZjY5Y2JhZjRmMGQ1YjNiNmY4MGFhNjlhZjdjNjhiNjBhNTg2YTQgbGVnYWN5LXRydW5rCis2NDc3NSBiYzk0M2JiZmRiMWVjYjMzM2VlOGJhY2JhMmNlNDQ4MzhiOWFmODk5IGxlZ2FjeS10cnVuaworNjQ3ODEgODNmNGI3NzdkOTRjNWUzNTIzZTliZDZiNTAzNWM5ZmM5ZjFjZTYwZiBweTNrCis2NDc4OCBmOGI3NDM2MzI1OTNhYTQxMzdhM2RjMGEwZmFlMWNmNmEwOThjMDI0IGxlZ2FjeS10cnVuaworNjQ3OTEgMWJjNTQzOTQ0ZGFhMjhkZDBkYWNkZGQ5YTA2YmVmYzQyNzE3ZmIwMSBsZWdhY3ktdHJ1bmsKKzY0NzkyIDRjMDFkNzhlYzU5ZmZmNGYwMWU2MTM1NTYwNWRkNGQyMTgwNzA4NGEgcHkzaworNjQ3OTMgMzYxODg1NDRjNTYxMDI2ZjZmODNkNmVmYWZkOWI4NGFmNjdlOGJmNiBsZWdhY3ktdHJ1bmsKKzY0ODM1IGJlZDNkZmQ5OTI4MWU0MWU3NThjMTQ3YzcwMzgzNDU5NzY0ZDlmZWMgbGVnYWN5LXRydW5rCis2NDgzNiBjMzJlOTE2NTBjMTQ0YjkyN2RiYzIyMjU3OTdiMzE5MWJiYWJlMDMzIGxlZ2FjeS10cnVuaworNjQ4NDIgNjhjNzk2NGQyNTM0N2QyN2QxYmFhYzhkOTc4ZDA3MTNjYTI5NjJiOSBsZWdhY3ktdHJ1bmsKKzY0ODQ1IDhlNzM4M2NiZTU2ZTQ5YTdlZGQyNTI3ODI0ZmM2ZDRjMTY1NzYwMTEgbGVnYWN5LXRydW5rCis2NDg0NiBiZDQzNWU4YjJlMjgwMDZkZWVjNjQwMDdjMjQ3ZTVhNDg3NGI5ZTU2IGxlZ2FjeS10cnVuaworNjQ4NDkgMDVmZWQ5YmY0ODlkNzgzZTFjNDY2NjRmM2YxYjc5OTA1MTNmYzZiMiBsZWdhY3ktdHJ1bmsKKzY0ODUzIDdjZmMyOGFjMDcxNTIwMWM5MzZkN2E4NDI5OGU5YTVlMjY0YThlMjMgbGVnYWN5LXRydW5rCis2NDg1NCAxMjc0MjExYTM4OGY5YWQxZjg2NjY4OGQ5MDc4NTMzYjVlZjAyZTkyIGxlZ2FjeS10cnVuaworNjQ4NTUgMzI4ZjMzYmFmZmEzODI3ZDY4MTkzNDc2ZjdkYmI0YjAyNDlmMDk5YyBsZWdhY3ktdHJ1bmsKKzY0ODU2IGZkMDU0ZTczZTJmMjM5ZTMzNWY1NGZkZjQ2ZmI0NDM3ZjkyZTAxMjQgbGVnYWN5LXRydW5rCis2NDg1OCAxZDQ0ZTAwNGM5MWY4YTJlOTg1NWE3YjgxNWNiNWFjNTRkZTNkYTA4IGxlZ2FjeS10cnVuaworNjQ4NTkgNzYzMjVjMTlhZjg0MDg0ZDNmNDA4YzhkMGViN2ZiM2EyNjVlNWFkZiBsZWdhY3ktdHJ1bmsKKzY0ODYwIDFjZDRkNjI0NDRiNjE0MTQxNzI1M2YyYmViZWVmNjQ2NjNlOWU4OWMgcHkzaworNjQ4NjEgZTE2Mzg0ZTNlZTIyYTY2NDY2ZWZiNDk5OGRmNmUxMzZhYzhkZGU3MiBsZWdhY3ktdHJ1bmsKKzY0ODYyIDU0NWU0NDIzNmYyODZkNTZkYjJiOWU3Y2JkMTUzZmNiMzc4NGM2YjUgcHkzaworNjQ4NjUgYzAzYjIyM2MyYjY5MGI1YjUyMDA4ZTZhNjdjZjZmZTBkYWRhMWNhMSBsZWdhY3ktdHJ1bmsKKzY0ODY2IDM4MWFlMmFkODEwYjc2MzI3ZTNkOTJmOTMyYzNmYThjOTU3NWJiMDAgbGVnYWN5LXRydW5rCis2NDg2NyA1M2I1MWMyMTNiM2RiMDE4Yzc3MTA3N2ZhZTNiN2YxOTZiNjljODIzIHB5M2sKKzY0ODcxIGUyODZiZDBmNGUxYmRmNjAxMWVhNGM0OWY4NmQ3NWUxNzJhNGJlZDUgbGVnYWN5LXRydW5rCis2NDg4MCAxM2U1MjVkOTc0YjE1OGJmNmRhYTQyZThlM2Q5MjM0N2E4MWEzODU2IGxlZ2FjeS10cnVuaworNjQ4ODEgNGY4MDRlZTc3MmViMmZjYmNmZjJkMWQwZGI1YjFjODk2MTRjZTUzMyBsZWdhY3ktdHJ1bmsKKzY0ODgyIGZhZWE2ZTlkYTYzOWFmMWQwMWQyYTZiNDIzMjEzZWVjNjZlOTJhYTkgbGVnYWN5LXRydW5rCis2NDg4MyBjNjU5YjUzOGY3YmFjNTZhN2E3Yzk1MDVlOWVkZDVhZDBhN2Q0NTIwIHB5M2sKKzY0ODg0IGNkNzc2M2IwNTQ0NmYwMzg4NDRkYzMzZjMwZGFjZGRiNGU5NjhhNDcgcHkzaworNjQ4ODUgOGRhNWQzOGRkY2EzYjhkY2QxNGJlYTBlNmM0NzBkN2UyZjg2YmZiMCBsZWdhY3ktdHJ1bmsKKzY0ODg3IDkwYjZkMTlmMDZjMWQ5ZmYyOGVmNjgxMjhjZjA5NjRjZDU0YmNlM2QgdGxlZS1hc3Qtb3B0aW1pemUKKzY0ODg4IGE3NDdjZDA2NmYzMjExZjkwZGEwYjAwZmE0NDJiOWM1MjZlODc0OWUgbGVnYWN5LXRydW5rCis2NDg5NiBhZDMwOTEyMjc4NGNlZmY1NmJjNjY5NGUyN2UwZTAxMTc4MjgyNDQ3IHB5M2sKKzY0ODk3IDM4ZDNhNTBkZWZlYzk3ZjQ2NzllNzkxYmI0ZTJlNzE4ODIxNDM0MzggbGVnYWN5LXRydW5rCis2NDg5OSBkNmRmZmRiMzBiZGRkOGFkYmU4NDVmYTY3MGQ1ZTJkZGRkNjE0YTFmIHB5M2sKKzY0OTAwIGJjMjdjODk2N2NhYzFmYWZhYjViOTBmODM1MmFkYTJiZGI5MDMxYjggbGVnYWN5LXRydW5rCis2NDkwMSAyYzlkMGE3ZTNiYzRkM2RkM2ZmMDQ3OTA1ZDBjNDkxZmQ3NTJhYzRkIGxlZ2FjeS10cnVuaworNjQ5MDMgYmViMGZmNWEyYTBmNThjNTZiYmQ5ODk1NjY0NWQ2YWJiY2ViMzUxYyBsZWdhY3ktdHJ1bmsKKzY0OTA0IDVmMjQzMWRlNjNkMGE1MTQ4ZGQyZjNjYzQ2M2MzZjkyNjc1ZTliNjUgcHkzaworNjQ5MDUgMmVhODI5ZGQ2YjVhMWRlNzE1ZGQ3NDQzMzIyZmY0MzcxMDMxOTliMSByZWxlYXNlMjUtbWFpbnQKKzY0OTA2IDE5Y2RhYWQ3ODhiOTBmMGEzMDEwM2YyM2MyMjgxNmQ4ZjUyZDMyMzUgcHkzaworNjQ5MDcgNWVlMzNiOWRkZWNjNjkzNGY4N2Y2MTliMmI2MDc2YjNmNDdmZTFiNCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MDggYTcwZDkwNWU1MDQxOGIxMTk0MmEwODhhNjIwMzA3NzhiMDc0MTNlNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MDkgZTIyOTZiNTAwNjNkZjNlN2I5ZDRmYTcxMzk4N2IyYzYzZWU1MTc5MSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MTAgYjM1YzhiMTk0MGFmNTIxMDBlOWUzYWU5NzkzM2Y2YTliZjM0NGIyNCBsZWdhY3ktdHJ1bmsKKzY0OTExIGI1Y2YwY2IwYzdjZTU4YjczMDM1ZDA1MGI5ZTZhYWJkMjhlODE3ZTQgcHkzaworNjQ5MTIgODY4NjU2MzI4MTUzOTU4NWJkYWI1NzhiZDE5YTliMDI0ZWU1NjYyYSBweTNrCis2NDkxMyA1YWFmYTIzY2JmZmM5OTY5MTYyY2IzMThhNDU5YzcyY2I1ZmMyMmRiIGxlZ2FjeS10cnVuaworNjQ5MTQgMjMyMTA0MGVjOTBiZTY3NGIzYjgyYmJjMjc1NjNkNTJlYzQ1MTcwYyBweTNrCis2NDkxNSBiOTA3NTJjNWU4YzE1M2M2OWE4ZTc3ZjI3YjAxYWZiMTIxMjBmYWU5IGxlZ2FjeS10cnVuaworNjQ5MTYgOGNmY2Y3OTMyNzI0NWNjNzAzMjNmMzc3MzliODU5YzM2ZGJhNDAxYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MTcgYWIyY2ZkN2MzYmU4NzYyN2E2ZDI5NjlkY2FkZGI4N2ZmZmNhYTZmZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MTggZTUzZTRhNzFmNTZmZDE4NmJkZTgzNjlkYTYzYTQzZWU5MGMzMDJkYSBweTNrCis2NDkyMCBkNjExYjAwOTFkNWY2NGVlYWZlYzU2NmZhNjQwMTU5YzE1ZTFiN2ZmIGxlZ2FjeS10cnVuaworNjQ5MjEgNWQ2MWFkMjE0YjljMDY5Yzg4YjFhMTk4ZjE3MjRhMjQ1MjcwZTMxOSBweTNrCis2NDkyMiAwNDE1NTA3MzgyMDFmZGZlNDQ2MWU3OTdlNzUzY2RkNWUwOGMyNjZkIGxlZ2FjeS10cnVuaworNjQ5MjMgOGQwYTk3NjgxNmYyZjlkZTc4MDM4ZWFmYWU0MGI4ZmFjNGRkZjJhNyBweTNrCis2NDkyNCAxOGJmMmFhYTg3YjVmMjRlN2IzMTQzZTAyNmRiNDc0MmY5ZjM5YTBhIHB5M2sKKzY0OTI1IGM1NzEwZjBkZWJhZTI3NTE1YTdkOGEzMDlkMTFkY2UxNDY3MGU5MGIgcHkzaworNjQ5MjYgZTVlMTJkMzEwNTdlZDUwNWJlYTc1MDI1YzhjNmZkZjBmMzM1ODYwMCBsZWdhY3ktdHJ1bmsKKzY0OTI3IDVhYzI2YjFmMjVkOTFlZWM0YmFiYTQ4OWIyMmFlZDBmYzJiYmRiMzQgbGVnYWN5LXRydW5rCis2NDkyOCA2YzEyMzdjYjVhYWE2NmJkY2U4ODVkMDkyMTFhN2RmNjU2Y2NmYTdlIGxlZ2FjeS10cnVuaworNjQ5MjkgOGJhY2UyMTRhZTU0YTIwYzkwYmFjYzk2MmFiOGZiNDk1NmQ1ZmE2NiBsZWdhY3ktdHJ1bmsKKzY0OTMwIGFmZThkNTE1YmZlMmU5Yzk5YWI3MmZhYjM3NjFjMTgxNWFkN2ZmYmMgbGVnYWN5LXRydW5rCis2NDkzMSA4MWUzNGQ3ZTRiYTBhN2ZhNjMxYmQzYTQxODBhMDczOWMyMzlhYjljIHB5M2sKKzY0OTMzIDZmZDhhMWQ4NDQ4YmNkMTY2ZmUzNzBjNDNjMmRjNGNjZmU2NGE4OGIgcHkzaworNjQ5MzQgYmUzZDMxMDZkYTZmMjQ1MWFiZWE2ZGIxZmM2N2U3Yzk5M2U1NDA4MyBweTNrCis2NDkzNSBhZmRkNjRlZGYxODllNWY5Njc5MzcyMTA2MjkyZDVkNDYzMTMxYmM4IHB5M2sKKzY0OTM4IDkyYjFjYWZhMzI2N2I2Njg4MDM5YTNjZDdiODI2ZjNhNTk5M2Q2MzMgbGVnYWN5LXRydW5rCis2NDkzOSA3YTMwYjNjNWNiNTdhN2JjOTZlYWI2YmMzYjQzMzM3ODQwZGNlY2NkIGxlZ2FjeS10cnVuaworNjQ5NDAgYzNiYzQzODg4MmNiODJmNGUyZTlkYzg0Mjg5YzI4M2NkY2RmMDQ3OSBsZWdhY3ktdHJ1bmsKKzY0OTQxIGFlMzRiOTUxYjMzNzc2MjZhYjRkN2ViMTc1MjkzNDc1NGY5OTI5YWIgbGVnYWN5LXRydW5rCis2NDk0NCAyYWQ3NDlkNTdlNjJjMDUwNTg0NzUyMGYxZjYxYzE3NmYzMTRhODJkIGxlZ2FjeS10cnVuaworNjQ5NDUgMmNjNGUxYzQ3NWY4MTNjMTRjYTAwMTA3ODY4N2MyYWI1YjhmMmRiYSBsZWdhY3ktdHJ1bmsKKzY0OTQ2IGMwYzA2ZmZhZWE4MzEwOTEzZTAzNGFjODRmMjcyZWFlYjE5ZDQ4NWUgcHkzaworNjQ5NDcgMTkzNjljN2Y1NzkxNGE1Y2Q0MmI2MDA4M2RkZWM1OTcwYjFhNzgxMiBweTNrCis2NDk1MyBlN2E2YTQ1MTVhYjBiMzliNTViMjQxYWRmMjE2ODVhY2E1MzM3YTg5IGxlZ2FjeS10cnVuaworNjQ5NTQgOTk4NjgyMDcyM2UwY2ZjNzI3MmRlODk5ZDgwYTFiNDAwZDVjOWE5NSBweTNrCis2NDk1NiAzZDg2ODI1NGZmN2VlZmQ2ZTNhMWZhYmMzNzE3Mzk3YTM3YzkxNzU1IHB5M2sKKzY0OTU4IGMyYjExNGQwZTFjZjRkNzM3ZDU5MDM1ODc0YjEzNWVlYzNmMmIxMGMgbGVnYWN5LXRydW5rCis2NDk1OSA3NDE5NTQ5OWU5MDkzY2E3NWVjMTFmMWE0YjRkYjUzZWE5MjE0MzZjIHB5M2sKKzY0OTYwIGQ0ZTQ3MzI5MWExN2NmYjM2Nzk4NjljZDRkNjYxOTQ4ZTdmY2E1YWYgcHkzaworNjQ5NjEgMmZiZTI4ZGVjYTJhMjg0Y2Q4NDMxMTVlNDJkMTJjYjhlNTc2Y2IzYSBsZWdhY3ktdHJ1bmsKKzY0OTYyIGY5YjgwYTgyMGEyNTY5Y2FiZDU4MmZjOThhNDFkOWRkOTQ0NjRmZDggbGVnYWN5LXRydW5rCis2NDk2MyA3ZDU3MGRmNWU5MGE0MTNiZTE3ODg3MDI3OWE0ZWU4ZmJhNDQyYjYzIHB5M2sKKzY0OTY1IDJlZTA5YWZlZTEyNjAyNTBmZDc4ZDAyNzViNzdlZWRlYTViZmYzYWIgcHkzaworNjQ5NjYgZGVkMjE3MDQzNzA3YzJmNWQ0MzY1YmQ4ZDg3OTI3OTRhMGU0NGMwNCBsZWdhY3ktdHJ1bmsKKzY0OTY3IGY0ZTdlZjQzMjlhOTU3ZTkyYWZiMTFhNGYwZWZjODJkYzZlZTZmZDkgcHkzaworNjQ5NjggMWZkYmEwOTc5MzJhZjg2ZmE0MTZlODMzYTcyZDZjYmQ5MjE1MThmMSBsZWdhY3ktdHJ1bmsKKzY0OTY5IGY4NzIzZWIxMDVhY2Q1ZmFkZTBkNmU2YmFmNTMyMjQzMjEzYjdmOTUgcHkzaworNjQ5NzAgZTI2YzcyNGQ1ZTIzZTM3NDhmODZlZTU3NTQwYzg2MmU0NGJhY2I0OCBweTNrCis2NDk3MSA5MTZkMzNlYzdiNWFmZWNjMGI0M2RkM2M1YzQ0ODM4NGYxMjU4MjE5IGxlZ2FjeS10cnVuaworNjQ5NzIgNDMyZDI3ODA4YmQxZWU2MzkzYTY5YWZkYjhiOTZjZjU0ZDNjOTA1ZSBweTNrCis2NDk3MyAxZjI0Y2VjMGYyZTFkNjhkMjY3ZDE3ODE4NmVhZjFjY2IxMzhjY2Y0IGxlZ2FjeS10cnVuaworNjQ5NzQgOTdiYTkzNmU4ZGY4NGNhNDdiMGM5NjFmZjIxZjVlNjA4YjRhNTc1MCBsZWdhY3ktdHJ1bmsKKzY0OTc1IGQwNDBhM2I2M2RmNDI1ODg2N2ExNmFlMDliZDNjZDEzZDljODY4OTYgcHkzaworNjQ5NzYgODc1YmViNGFkODg5MTUwYTYwNTgyMGY0M2Q0NmU0MTVkMTU0ZmQ0NyBsZWdhY3ktdHJ1bmsKKzY0OTc3IDM1MDA0ZDliZmQxNTYwNDA0NTMxYWZmMjJkYjk1OTM1NDQzYjk3NWYgbGVnYWN5LXRydW5rCis2NDk3OCBkYTJkMzYzMzc5ZjI2ZTRlNDRiZDE0ZGFkODVjMTAwZjIwNDRlNGFhIHB5M2sKKzY0OTc5IGE0NDgyYTFhMzBjNmQ5M2NjMzIzNDNjOGIxMjg2ZWQ4Mjc1ZWU3YjYgbGVnYWN5LXRydW5rCis2NDk4MCAxZTAwOTE3MDg4NzVhNzg1MTJmNDEzNzM1NDM4MjgxMGVhOGM5ZTMwIHB5M2sKKzY0OTgxIDljYjI4YWQ1YTQxYzAwMTI2OTBlNTk3MTU5NGIyNWJlNTYwYzExYTEgbGVnYWN5LXRydW5rCis2NDk4MiAwMWZiZTNmYzg4M2UwYWViMWVkZTMxNDM4MmJhOTNiNDM2NDY3NjkxIGxlZ2FjeS10cnVuaworNjQ5ODMgNTFjMGQzYTA3MWFkMDA3ODA2ZmM3ZDVkZmRmY2EyMmFjM2E4YzE4OCBsZWdhY3ktdHJ1bmsKKzY0OTg0IDNmYTQ0ZTVlNGUyYjFmMmNkNmQ4ZDQyNTgwZDQ1Zjc0OWUzODllMGIgbGVnYWN5LXRydW5rCis2NDk4NSBjNjYyZThjZmZkZGY2MWQ1YjZlNGM1ZGFhNjk5MmU5NDRiZjBmYjc1IHB5M2sKKzY0OTg2IGVmZjlkMTFjNDc2MjZhYmNlMDcyNjdhYjIyY2VmZThlNTczNDZlNGUgbGVnYWN5LXRydW5rCis2NDk4NyAzYTNhNWE0OTIxNDcxYzM0ODAxNDFmZGRiNDU3ZjcxY2E1YjJiNDExIHB5M2sKKzY0OTg4IDNiYjFmOGJiYTMzNjc2YTM1OTc3YTkzNjRkYzNjZmM5MTk2MmEyNmEgcmVsZWFzZTI1LW1haW50Cis2NDk4OSBiYmQwYzkwMDI3YmZiNzdiNDY4Y2VlZjMxNWZiMWY2MmIyNTdiN2M2IHB5M2sKKzY0OTkwIGJkNDg0MTA2OWM2ODQ4NThiMjcyZDIyNDhhYTU1ZjNlNjNmYzEwNDQgcHkzaworNjQ5OTEgZDE0ZDBiMTVlMThlNzBmN2U3NDg2OTUzODA1ZmU0Mjg1MDliOWQ3MyBweTNrCis2NDk5MiAzOGQ3MTliZWRkYmRkODYzNjUxYzkwYzFkMjYxZjFhNjQzODY2M2QzIHB5M2sKKzY0OTkzIGVhMjNlN2M1NjE1NDU2Y2NjNTlkM2IzZDdlMDFlNmY3MjFmMmVkYjggcHkzaworNjQ5OTQgZmNlZmY5NTRmMzgwNGM2MmIxY2U2NTVlMjRkYzkxMzRjMjMxZGNkYiBweTNrCis2NDk5NSA4ZTllNjUzODNhZmI2NTAyZTM5ZGU3NGQxNTA3NTBlOWIwNWVhMTI4IHB5M2sKKzY0OTk2IDY1ZTljMDEwMmVmOWM0YjA5NDdiOTBlZDIxNTgzOGFmMWI3MjNhOTUgcHkzaworNjQ5OTcgOTI2YjJhMTk2MDgzMTUyNzg1MDhiMTA1ZjA3N2NlZTRhMGJlMWU5ZCBweTNrCis2NDk5OCA5ZWJkM2YzODU1NzU5ZDU4YWVlNGViOGI5N2NlZjM3YmRhYjgyMzRlIHB5M2sKKzY0OTk5IGFjYTViMmU2YTY2ZjMyNGI3NDU0NmViODBmNTRmMjE4YzczNTUxMGQgcHkzaworNjUwMDAgZjU4ZTNhMGVhOTlhMTdiNzZjNWUwODZkZjg5NTg4Y2Q1MzgzMWNlMiBweTNrCis2NTAwNCA5YWEwNzgxNjE1ZmIxYzdhNzYwYWRiNmRkNWQ1MjY4MWRhMDJkYjg0IGxlZ2FjeS10cnVuaworNjUwMDUgYzBhYjJiYWZiMjY0NDBiNTlmOTg0OTA1YzY0MWEwNzY0NzRhNDY1NSBsZWdhY3ktdHJ1bmsKKzY1MDA2IGNlYTA2NmRlZGZkZmIyMDg4MjU5NmVhMzM5MzI3NjcxYjJhYzU2ZTEgcHkzaworNjUwMDcgY2EwZDYyMGNkNjNiMmE1ZmJkYWVkNDFiZTg2Njc3NTdmZDFmZGNhZiByZWxlYXNlMjUtbWFpbnQKKzY1MDA4IDJiYjg2NmQyODJiYWQ1NWRmZTY1ZTcxMzliMTI5MzNiZjgyYTliZjcgcHkzaworNjUwMDkgMTc3MzAyZmVhYjM2ODk1NWVlZDAzMjVlZTk1MThkYWY1YWE4OWI0NyBweTNrCis2NTAxMCBkZTBiZjYwZjEyNDVhYzczZTQ0YmIyNWUyYzU4ZWFlNmU1ZDA4MmFlIHB5M2sKKzY1MDExIDRmNmVkZWE0YjU1ODU2MTFjMTU0ZjVhMjBmYjBkMjc5N2NkMjc3NWMgcHkzaworNjUwMTIgYTUxOTFkN2VhNDA1NDBjMzE2MWU1YWNkNDk3MDJhNzAxMzRiOGM4NiBsZWdhY3ktdHJ1bmsKKzY1MDE2IDVmNmRjMmY4NmE4ODQ0MTc1YjJiOWIzYWRjMzc3ZjkxYjdlYWJlNmEgbGVnYWN5LXRydW5rCis2NTAxOSBlYzM4ZmJiYjhjY2ViZTFmMjY3MDkwN2U2ODkyNjgxNThmOGFmYmYxIGxlZ2FjeS10cnVuaworNjUwMjAgYjY0NWFhMmJjYTljYzcxMjE5YmMyMzM0OGNiMTA0MGI0ZTZjMWExOCBsZWdhY3ktdHJ1bmsKKzY1MDIxIDJlOTBmZWYyMjZlYTZjMjAyZGE3MDFkYjZhMjBlZGFkNzA4Y2Y2YTQgcHkzaworNjUwMjMgYTA5NjNlNDZmNDNlNWU3N2U5MjM1NWI1NTQ4N2YxZjQ3NmQ1ZTM2NiBsZWdhY3ktdHJ1bmsKKzY1MDI0IDY1NGZmNTc1NTQzNmFkNTNhNmRhMWMwZDEyYjE0YjU1NzRiYjJjM2MgcHkzaworNjUwMjYgNjU1MjI3Yzk4OGE3OGQ2ZDIyODNjMTRjOGY4YzFhYjc2MmE3OTg5YyBsZWdhY3ktdHJ1bmsKKzY1MDI3IGFjYWNhMTFkODBkYmM4NGQzMTA5YWQ4NmJkOTEwMzQ1NzYwMjc2NjYgcHkzaworNjUwMzAgNTlhYzVhZWYzYjJkMWZmM2MzYTZjNzZjOTQ0NTkyZGUxNWIyZTU2YyBweTNrCis2NTAzMSBiMmYzZGUzNThhZjQwODAzMjRkN2FmODQ1YWI4MjE1ZWY2Yjk4MDE2IHB5M2sKKzY1MDMyIDA5YmViOTZiYTIwZDQ3YzYzNDE3MjdlMWZlYzZmZDBjMTA2ZDRjODkgbGVnYWN5LXRydW5rCis2NTAzMyBlYzg1YjU4YWQyYmE0YTA4MGE2MDFiYjExYjg0NzZiOTY5OGU1MmVjIGxlZ2FjeS10cnVuaworNjUwMzQgNmM4YmFjOTEzYWFiZmNjMDhjNWZkNDdmNWNlNGU0YTRkNmRjYjhlNyBweTNrCis2NTAzNSBlYmU5MzIzMjkyNDY5OTdkNTM4MTIwYTM4YWVmN2E1NmVlMmMzODM2IGxlZ2FjeS10cnVuaworNjUwMzYgNjA0ZmViZDIwNGNiMmQzZTYzZjI5ZjE0YjkxZTdkNjk0ZjkyYWE0ZiBweTNrCis2NTAzNyBlYzk3YjdhYWQyMzFiZWNjZjdhMjc4M2U0YjQwMjg4OThjYWE5MzY2IGxlZ2FjeS10cnVuaworNjUwMzggZWZlNzA2YWFiMzJiOTFhZTI4M2FlZjFhZWZjYjY5NzM0MjZmMmRjYSBsZWdhY3ktdHJ1bmsKKzY1MDM5IDAxODA2Y2RlZGRkZTM2MDhiZjA0MTQ5NDBiZWU4MTk5ZGMxNTJhMWYgbGVnYWN5LXRydW5rCis2NTA0MCAwOTFkZjRjMDhkOTlhNGRlNTM1N2M5OTk4Zjg0ZTU2OTA5YThiYjk5IGxlZ2FjeS10cnVuaworNjUwNDEgZmJmMTY1YTc4OTUzNzNjYWQzMGNjNjBmMWYzNjVmMmIyMzdkNWY5YiBsZWdhY3ktdHJ1bmsKKzY1MDQyIDdlMDMwYjYyODI5NGRiMjI5YjhlMDcyNDE0YjU1YzcxNTdiNzExZDEgbGVnYWN5LXRydW5rCis2NTA0MyBiOTgyOGIyYTUxYzBmZjM1MWYxY2I2ZjM1MjJlNzVjODRmZTYxMzM2IHB5M2sKKzY1MDQ0IDkyMWM0YTgwOTkyMzgzMTdkNWRmOGYzZTI3NmZiYjk2NmFjNThjMTkgbGVnYWN5LXRydW5rCis2NTA0NSBkODdjZDVlNzM2NWFhODJhYzc3MTc1MzQzZmY4OTdjMmU5OTE3YjFhIHB5M2sKKzY1MDQ2IDc2OGJjZmY0YzBkYWVkYTY0N2RiZDI3NDQxMGQ4ZGY3MDEzZmVjZjUgbGVnYWN5LXRydW5rCis2NTA0NyBmMmM3Mjc5MjU4YzEyZGM0NjY5NmM0M2M1ZDkzNDRhZjMxMWRiMDBkIHB5M2sKKzY1MDQ4IGQzMWQ2MWY0NjQ5OGQxNDIxNzNmYmIyNTEyNmJhZGRjZjRlM2UzOGIgbGVnYWN5LXRydW5rCis2NTA1NSAzMGZkZDBjM2I2ZGUxYjgyMzVlNzVhYjU4MDA5MDZmOWM3YzQ0M2Y5IGxlZ2FjeS10cnVuaworNjUwNTYgOWM1NmNkOTdmZjRkZWUzMDk0NjhjMzUyMzBkYmI5ODU4NWE1ZjQ2ZCBweTNrCis2NTA1NyAyN2JjYTdmYWMzNjJkNzE1OTBkZDYzYmU4ZWE2MTUyNTRmNmM5MTc4IGxlZ2FjeS10cnVuaworNjUwNTggYzU5MTFhN2I1ZmEwMGJjMjc1ZjZjZDdmYjZkNzI5YThiNGU1ZWQ3YSBweTNrCis2NTA1OSA0NTIzM2Q0YzE4ZDIzYjA2MGFlZGUzYmI1ZjIzNmYzZWJhZWMyZmI1IGxlZ2FjeS10cnVuaworNjUwNjEgYTI5Yzg2Y2U3NjY4NzExMTNiZTI3NmM0Mjg2YjJhMWVmZjQyMTU4MSBsZWdhY3ktdHJ1bmsKKzY1MDYyIDFiZTViNmJlNDNjYjY5ODU0MmM4MzkyMTk2NzUyNDhkYjgyYWM1OWYgcHkzaworNjUwNjMgNzlmODRiYzJiMTQ5MjA4NWY3ZmQ2YzNkN2U2YWI2NTVlOWE0YjU2YSBweTNrCis2NTA2NCBkYmMyYjdhZDBjMjIxN2MwODBlZGMwMWM0Nzk3NjFhY2RlNGZiYjI5IHB5M2sKKzY1MDY1IGVlZmI5ODM3OTY0NGQ5YmY4NGM1ZTJmZWIzYTI1OWExNWEzNWI1MGQgcHkzaworNjUwNjYgNzhhMjlhMDUyMDc5ODJkMjZlNzNiYTAwNmIzZTQ0OWFhZmNiNzc2NSBweTNrCis2NTA2NyA5OTFjYWRkNDdkOTczMmYzMTEyMTFlZWJkZTkwZmE4ZTllN2Q5YTM0IHB5M2sKKzY1MDY4IDIwNjg3MTBiMzJjMzUxM2MyNDM2MmIwOGI1MTU5MzE2Mzk0NjRhYzUgcHkzaworNjUwNjkgZjI4M2UzYjVmOTE3YWIyNmI1MzhmNGU4YTA0NGZiMDdiNzg2OWFkYSBsZWdhY3ktdHJ1bmsKKzY1MDcwIDU2MDM4OGNkYTE2M2Q5M2RkOGM4NGY5YjA4YTIyZmViNDViZGEyZTEgbGVnYWN5LXRydW5rCis2NTA3MSA3YzZlYzdhODAxNmFkZmE3MzRmYjk3MjJjZTEwZGJhNjZjOWE4MWMxIHB5M2sKKzY1MDcyIGJhMzliNDBlYmYyZDkzMzljYWJjN2Q1ZjA0M2EwYWZiMDc5Nzc0NDcgcHkzaworNjUwNzMgODNkMGQ0Y2I3YTY2MWM5N2NmNTk4NDhiYzY2MTc2Zjk4OGU4OTJhNyBweTNrCis2NTA3NCAzZDUyNjUyNWIzZTgxZDk0YWE0ZjJlNGM2NzA4MWE1NjgzNDk4ZjVlIHB5M2sKKzY1MDc1IDVjMzMwMDk5OTRiNDYzNThkNmVmOTgzNTM3NGQ4Y2UzOGQyNWIzZmIgbGVnYWN5LXRydW5rCis2NTA3NyA2ZGQ1MjBlMWJjMGRiMzYxZmFhMWNkNjNlYWU0MTZjOTRjZjNlYWRmIGxlZ2FjeS10cnVuaworNjUwNzggNGRlYWRjOGY5ZTBhMzkzZWE2MWFhZGY4ZDlmZDk0ZTNlNmIyMDE4NiBweTNrCis2NTA3OSAwMzFiNWFkNTQ3ZTQyN2I0Mzc3OTRiODE4MWYyOTI0OTA2MmIwODNmIHB5M2sKKzY1MDgwIDE2ZWM0YmIxNGE2OGVhNDI4YWNmMDllYmYwYzkyOTgxZGEyNjQ2ZjMgcHkzaworNjUwODEgYTk2ODAyOWI2M2RiMTIxZjAwN2E3ZGM5MGFmODhhYzU4MmRkNDdlMSBweTNrCis2NTA4MiA4MWVjODI2M2JkNmUyNWM5YTg4NTVjZDBjZTlhZTg4MTczMjk3MmJlIGxlZ2FjeS10cnVuaworNjUwODMgNThkNGJmMzE3MjhmZjhiNDI5NjExYjNmNGIwZTQ5MjFiMDhhMWFjNiBsZWdhY3ktdHJ1bmsKKzY1MDg1IDE5ZTc3OWQwMjA1MzUzZmM4Y2UxOTAzNTczNGUzNzgyOGQyZDQzZDYgbGVnYWN5LXRydW5rCis2NTA4NiBiNzRlOWQwOWIxODA2OTNkMDBjYzViMzM0NmMxMDE0ZDE0NmMxNTcyIHB5M2sKKzY1MDkwIDc4ZWU2YmEyMDk5ZWU3ZDJjNmQ4YjViMjIzZmI5ZTExOWIzN2Q4NWEgdGxlZS1hc3Qtb3B0aW1pemUKKzY1MDkxIDY0NGNhNDQ4Nzg4MWU4NzllMDEwZWY1M2ZmOTk0NjhmOWE4MzQwNWMgbGVnYWN5LXRydW5rCis2NTA5MiAwZWFlOWIyNWEyZWQwYmRlMDU5NTFiOWEwMGU1Yzk4MjcyYWQyOGQ2IGxlZ2FjeS10cnVuaworNjUwOTMgOGVjMTgzMGQ1NzE5OTczZTcwNzNhODFiODk4YjNhMTEwMzdjMWExMCBsZWdhY3ktdHJ1bmsKKzY1MDk0IDFhY2ZlNDI4ZThmMTliOTc5MGY0NTdkODJmY2RiNGMyZTRlYzNhZjYgbGVnYWN5LXRydW5rCis2NTA5NSBjZWM3MDRiNzliZGYxZjU1MDEzNjlmMTZkOWZkNzUyNzcwMDU5NTdiIGxlZ2FjeS10cnVuaworNjUwOTYgMjkyNTEzNWNhMDUwYTY0NDc1ZGRmMzJhYjBjMzc1NGU3OTRlNjA2NyBweTNrCis2NTA5NyA0ZWM1YTBlYzYzMWEwNTUzYzU1NjhkMzQ4YmI4M2FiOWQyY2UxYjUzIGxlZ2FjeS10cnVuaworNjUwOTggZTg1ZDU2OTBjMjk2ZWY2ZjMwZjVlOTczMGFhNjFiMGZkYTdjYTAyZSBsZWdhY3ktdHJ1bmsKKzY1MDk5IGFjMWNkNDZiZjdkNTdlOWI0ZDc0ZjJjZjBiNWIzMTEzNWNkZTFjNmQgbGVnYWN5LXRydW5rCis2NTEwMiAxYjIwYWZhNDhkNThhZTUxMjU0OTNmYzIzMzllMjk4ZjcwZmMyZTRkIGxlZ2FjeS10cnVuaworNjUxMDMgYzQzMjMwN2VjMDBkZDZkNjg4MWFiMDExZDQxNGE5MWU0ODYxMTFkNyBweTNrCis2NTEwNCA5NTc2YmI3MWEwMWI0OGMwY2Q0MDkzMGRlNjk3OGU2OGM1MTllMzEzIGxlZ2FjeS10cnVuaworNjUxMDYgZTdkNjRlODI5MDM1MjJiMzM2NzAzZmRmMWE4YzFjM2VkMmE2ZTJkOCBweTNrCis2NTEwOCA5YmRiNzQwNGVmZTc4ODlkYjhiZTc0M2ViODIzYzNmNjZlN2RkMTcxIHB5M2sKKzY1MTA5IDQ5NzI2ZGNhMTZkODExYzMxOGRjMzNmYTUyZWNhMjdhNTQ1ODU3OGUgbGVnYWN5LXRydW5rCis2NTExMSBiOTMxYTAyMjY0NjY1NmJmMTljZDU0ODJmMjBlMTJkNDhlNjU0Y2IwIGxlZ2FjeS10cnVuaworNjUxMTIgZjkwNDBkMTA3ZDY2NDdkZWY3OWRmZTM0OTI4ZTQxMzhlMDQ4MGY2NyBsZWdhY3ktdHJ1bmsKKzY1MTEzIDI5Nzk1MTMwNjQwMDUyMWI3ZDc4NDBiMmMxYjAwNzUwYjBlNWRmYmYgcHkzaworNjUxMTUgNmU3NzE2YTNiZGVjMTA2MGI4ZWI1M2FjNmE3N2MzOTJmMDU2ZjYyMSBweTNrCis2NTExOCBkZWNlMTdlZGJlZDA4YWI2OWM5MjIxZjg2OGJkMGQ0NTU2Y2Y2NzlkIHB5M2sKKzY1MTIwIGZlZmZlYzI2YzU2Y2I5NmRiY2VjMzJlN2Q5NmU1YmM5MTBmMjEyOWIgcHkzaworNjUxMjUgNDBkYjQ1YmZjMGYyY2RiY2NkZWZhNjVmYTY1NTkzOGQxN2I3N2JjZSBsZWdhY3ktdHJ1bmsKKzY1MTI2IDQ4ZTgzZTY2OTM1YTlhNmMzMzhhNTc5YTk1ZjAxMmY1NDFhNzk1NTcgcHkzaworNjUxMjcgYTVmZmUzNGM3MmM0ODk5ZGMwY2FlNzgzOWQyZmZjNmNmYTIzODc4NSBsZWdhY3ktdHJ1bmsKKzY1MTI4IGNhY2EzMzgzMmExYTUxMjdjMjI3ZmFiZjk5ZDk4MzU4MWY1ZjllZTEgbGVnYWN5LXRydW5rCis2NTEyOSBlNmJhNmY0MTQ2OWJmMzBiZWQ0YmVjYmJlMjUyZmFmNjRlYmY5MGViIHB5M2sKKzY1MTMwIDZjNWNkZGIyNjdmZTI0ZDU5ZDViMzFlYWUwZDBiMmMyZDU5NGRkYTQgcHkzaworNjUxMzEgN2FkNmU0Y2Q3NzEzNjZkOTQ1NTgzNzdhZTA4NmJjMDBjNmUxMTUxNSBsZWdhY3ktdHJ1bmsKKzY1MTMyIDQwYjBlMzMxOGE4YmJhZGQxNzQ0N2E2ODRkYzUyOTA4NDAxOTRhMGMgcHkzaworNjUxMzMgMzNjNmFmNjlhZTBmMTc1MzFkMmFlYTgzNDc2ODg3NDZkMGZhNTI3MCBsZWdhY3ktdHJ1bmsKKzY1MTM0IGU5MDdkYTgyNTE2OTE5MjllOGZlNTVmOGMyYmQzZjI0MjkxOTk1MGQgbGVnYWN5LXRydW5rCis2NTEzNSA0OWJlODgxMmQ0MzMwYWVkZTUwMGQwOGE5NjIyYThhYmIzNWZjNmRiIGxlZ2FjeS10cnVuaworNjUxMzYgOTZlYWZhYjQ4OTAxMmVkZjJkOTgxM2JmZWQxMDBiZWE0NmFjNDI2OCBsZWdhY3ktdHJ1bmsKKzY1MTM5IDdmNTQyMmQwNDA5Zjk0NDQ3ZTdlMTRlNmQxNGJmZmM4MzNhYjY2ODEgbGVnYWN5LXRydW5rCis2NTE0MCBkZmMzNzU4M2YyMDQ3NjdlY2FlNjllNDY1Y2VlMTYzZWMwOTlmYjc5IHB5M2sKKzY1MTQxIDk0OGU1YjMyMzMyOTFiZTE1MjU2Y2YxMDY4OWI1NjdmMzc1MTZmMGYgbGVnYWN5LXRydW5rCis2NTE0MiA0MDdlYjAwNDAwNDE0MWNhOGVmNjJhYzc4N2I5MTc0MzcyMDEzZmJjIHB5M2sKKzY1MTQ0IDg5ZjVjZmVjMDU3M2M1ZWEzMzEyYjc5OWM1MDBmZGYzMTFjOGJlYWEgcHkzaworNjUxNDcgN2MxNDdhNzZhMGIyNzI0Njc1ZDQ5MDQwMmJiNDRmOWY2ZjYwZTViMCBsZWdhY3ktdHJ1bmsKKzY1MTQ4IDhjZGIxODFhYTlhZmM2NzU4MDhlOTJjZjY2NmFmMTExM2YyMmUzYWYgcHkzaworNjUxNDkgNzBiZTY5YzkzZTMzYWE1M2U4ZWMyNWMxZDBhZjAyODgxMGY4ZmY3OCBsZWdhY3ktdHJ1bmsKKzY1MTUwIDQzYzY5MzQ1MTRkN2NjMzQyZTYzYTI0MjgwMmY5MmU3YzdjYjZiMGQgbGVnYWN5LXRydW5rCis2NTE1MSA4OTg5MjEzZjM4NmIyNmJlNDRkYmJjOGU0Y2QyYjFhY2FjZWU0NGZlIGxlZ2FjeS10cnVuaworNjUxNTIgNjQ0ZmE3YTI0MGM4Yjc5NjFkNmU3YWIyNGNjMmIwOTMzYWEwZTFiOCBsZWdhY3ktdHJ1bmsKKzY1MTUzIGJiMjYzNjg4MjUwM2RkMjZkZjJlZDc0ZjkwNGZlYmJiMmE2ZjBlZjMgcHkzaworNjUxNTUgZDI3ZTI4MDIwNzA5MmQ4NTA2YjI1ODM3NGJhNjdjZTM4YjZiODhmNCBsZWdhY3ktdHJ1bmsKKzY1MTU2IDFkNGNiMjZlYzg5ZmE2OWRhYzcxMTM5MzEzOGJhNWU1ZmQ5NjYzNTcgdGxlZS1hc3Qtb3B0aW1pemUKKzY1MTU3IDU3OGE0YjBhNTIyZDI2MGZkMTAwODU1MzRhMjY0MzkyODAyYzk1ODAgdGxlZS1hc3Qtb3B0aW1pemUKKzY1MTU4IDFlZDY5NGE3YWI2MDE0NzM5NDE0MDljOWUwNjNjZTNhOGZmYWRiYjMgbGVnYWN5LXRydW5rCis2NTE1OSBhOTdmZDVhM2IwOTBiNjljNjljY2U0MWUyZDFhZmE2MTU2OGEyNWJjIGxlZ2FjeS10cnVuaworNjUxNjAgNjA1MzUyNTBhNjJjNmE0MGY2ZGRjNTM0N2NhM2YxZWZkNTc3ZWY3MSBweTNrCis2NTE2MSA2MjgyM2VjYTg4MWJlNGE4N2VjNjBkYTBlYmUyYmI5MzAwMTNmOTc3IHB5M2sKKzY1MTYyIDdjY2NlMmE3Mzk0YTAyODJiZTQwYWJiNGU1Y2RmMTA5OGQ1ZTA5YjMgcHkzaworNjUxNjMgMzY0MTA2Nzk2YjIxMDQ3MmVhMjlkZjY4MjQ1MjAxOWY0N2JlNTIxZiBsZWdhY3ktdHJ1bmsKKzY1MTY0IGVjYzZiZTM4MGM1YmM4YTQ4MjBjZDI0MzM0OTIzZjAxYzg2NGE4NDQgcHkzaworNjUxNjggMDY4YzAwYmY1YTI0YWZmZjM2OTUxNDBiMjYzYTAyZDk1ZTZjYWU5NSBsZWdhY3ktdHJ1bmsKKzY1MTcxIDBhNzQxYzEzZmM4MWM2ZWMyOGVmOWJmYmRmZmUwYmZjMGI1NmE1OTMgcHkzaworNjUxNzIgM2Y2ZDQzZDU3NTVjYjliYWYzNDA4YTQ0MzA4NDcyYTJkNTk4MzIxYiBsZWdhY3ktdHJ1bmsKKzY1MTczIDkyMWI2NzU5Y2JkZTcwOWRiNjYyZmNlNWMxYmQwMGE5MzQwMWMzOWQgcHkzaworNjUxNzQgYTlkZmEwODUxYjA3MzhjNDEzZjYzNWVjYzI1Njc3NjBmYTYyZTcxMyBsZWdhY3ktdHJ1bmsKKzY1MTc1IDk3NWJiZGNjYzU1ZWQ1ODI5NTBiZTBhNTU2NDBjZDQ1MTNiZjRjYzggcHkzaworNjUxNzYgODMzMWJjNGU4Mjc4YzgzYmZjMTljZjhjNmVkZTNkNDhkMmE2MTZjNyBsZWdhY3ktdHJ1bmsKKzY1MTc3IGI4MzZiZjI1ZjE3NmEyOWYzYjYxYjliNzg3Y2IxZGE2ZDAzNDJjMTYgbGVnYWN5LXRydW5rCis2NTE3OCBiYTI3NjdiZDQ2MjA1Mjk5OTA2MDc2ZDNjZTNlMDM5OWEwM2NlMjQxIGxlZ2FjeS10cnVuaworNjUxNzkgZDg3OThkNWVjNGI5M2E1N2VhZGE3ZTZjZTYwZjkzYmQ3OWI1ZDg4MCBweTNrCis2NTE4MiA1ZDM4MzNlNmFhZTMwZWExYTlmNGJiYTkxODNiZWUzYzMzMTQyNDg2IGxlZ2FjeS10cnVuaworNjUxODMgM2I1YzI2MTNlZDA1ZGM5OTAxZTM0ZDk0NDgwMDgzNGNjZTA5YzViNyBsZWdhY3ktdHJ1bmsKKzY1MTg0IDk2YTllYmZlZTJjZDJjNzY0NWNmZjljYTlkZjgzM2E0YTQ1NDFkMDEgbGVnYWN5LXRydW5rCis2NTE4NSAxYTJmOGRkZTgxZWNjNDI4ZmU0ZmM2YzQ2MmI3MTNlYWU2ODQ2ZGRlIHB5M2sKKzY1MTg2IDczOWJiMDcyOGVmZTUyOTliYjNiYTcxYzgwMGRjODA0YjE3NjkyOTAgcHkzaworNjUxODcgZWE1M2VlOGE4MzMzMjFkOGU3MGZjNWJkZTEyNzc5YmEwMDU1OGQ2ZSBsZWdhY3ktdHJ1bmsKKzY1MTg4IDkwZmJiYmNlNzU3YWY4NzE1MWExN2Q3N2YyY2NhZGRmM2I5M2FjZjQgbGVnYWN5LXRydW5rCis2NTE4OSA5NTYxYWFlZGZiNzM4ZjA5ZmJhYzhhMmEyNTc3OWMxYzUzNjMxZjc1IGxlZ2FjeS10cnVuaworNjUxOTAgZGQzMTQ5MGQzZWI2ZGU4MjA1ZDg2ZGUwMDZjYWFkMDA1YzFmOTBmYyBsZWdhY3ktdHJ1bmsKKzY1MTkxIDgyMWU3M2Q3YmNjNTRhNGI4NWNiOGVkZDM5ZTczMDE1YmVhZjBiNjMgcHkzaworNjUxOTIgNjc5ZTNjMjcyZWMyNjJlMmRiZjFkODM5Nzc5OWEzMWY5MjJlYzIzNyBsZWdhY3ktdHJ1bmsKKzY1MTkzIDEwZjQxYWRjMGQyNGU2MDIyM2M1MWExZGM5ZGJkZDZiNmMyOWIzOGUgbGVnYWN5LXRydW5rCis2NTE5NCA3NjFkY2FhYWEwOWUyMTA1OTkwY2RmOGI4ZjZkMmRjZjJiYTQ5ZmQyIGxlZ2FjeS10cnVuaworNjUxOTUgNmNhOGFmNjQ3NDdiNTA4YzY1YzgwOTE0MTUzOWE2OWI3NmJmYTliMSBweTNrCis2NTE5NiAyMGI0YjgzYTU0YWVmZjEyMDE0NWFkZDVlOWQ5OTE5YzcxZGMyM2M4IHRsZWUtYXN0LW9wdGltaXplCis2NTE5NyBmY2JkOWY0ZjA5NWM0ZjAwZTA4NDg1YWEyY2QxZThmMTcwYTdhNWU0IHB5M2sKKzY1MTk4IDA0NDFkMzBkNjcyYmUwNjU3ZGQyZTVmMmY4NGZjZDM2M2ZhZjM1MDIgbGVnYWN5LXRydW5rCis2NTE5OSA4Mzc1YjNmNjQ3MGY2MGI5NDFkMWZiMGJjMGNkNzQzYjdhYzRmMmQ2IGxlZ2FjeS10cnVuaworNjUyMDEgMGQzN2FiMDBmNmQ2YzQ2ZDQ5YjQwNmQ2OGU2ZjhlZWYwZTg0MTQyOCBweTNrCis2NTIwMiBiZGRjMWExNzI0N2UzZjk1NzY2YTE0MzE1N2EwODVjZDgzZGNmY2JmIHB5M2sKKzY1MjAzIGFiMjIxNzdlYjZkYzQ5NTY2M2ExNGQ1NjQ1YTcxOGY2YThhNmY5MzggcHkzaworNjUyMDQgNDVmODhkN2JmMDU3NmMzNGRjNGEzZGU2NDhiYWM4ZjY2NGFiYmNlOSBweTNrCis2NTIwNSAxNzlhN2Y0MTYyNDBhZjVmNjJmN2NmOWRlOWNmY2Q2MDY5Zjc2NTU3IGxlZ2FjeS10cnVuaworNjUyMDYgYjUxY2Q1ZDM3OTVjZmI1MThjZTU1MDFlNmQxYjY3YWJjZGExZWVkMiBweTNrCis2NTIwNyAzZWZhMjA5MTZhOTA0M2Y5Y2RiMmM0ZmQyOGIxNDVmZTFjMDkwMjY3IHB5M2sKKzY1MjA4IDg4N2VlNmJkOTI4NGZiOWI2ZWFlNDFmYmMyM2VhYjQ3MzI5ZWU3ZWYgcHkzaworNjUyMDkgYjY4NzA0NDU3ZWZlZjEwZjI3Nzc1NmQwYmI3ZGFhNjkyNDk0OTZiZiBsZWdhY3ktdHJ1bmsKKzY1MjEwIDc1OWE3MzIzNTkxZWJkOTQwZDM3OGY4MTI3ZGFlN2YyNTQ1YjE1NmUgbGVnYWN5LXRydW5rCis2NTIxMSAzODUzODU2ZjdjNTA1NWQ3YTQzODM3ZjAyZDUzNGU2MzdkNzVhZmEwIGxlZ2FjeS10cnVuaworNjUyMTIgMDhkZGNhZDg1MTM0OGViNGY3MTFhNDQ5YWMyMGRmNDZhMTA0Y2UyMiBsZWdhY3ktdHJ1bmsKKzY1MjEzIDFiMWUxZjg3MmUwOTgzMWRhOTIzYTljYmRlYTc4OGY0ZjdmZDQ3ZTcgbGVnYWN5LXRydW5rCis2NTIxNCAwN2I4OTY1MzE0NWUwMzJhOGI0ODQwMjc2YTJkMGI2NTc0ZjU4YzdkIGxlZ2FjeS10cnVuaworNjUyMTUgNDIwM2I3ZjA4N2MxMDIzNjRiYTk4MzFkNGQxNWY0ZTUyMjY4OTFlNyBsZWdhY3ktdHJ1bmsKKzY1MjE2IDc0ZmIwZGYyOWE0ODc2YTM3NTUyYjI5OTU3ZWI2ODg4NDVkYjgyYzcgbGVnYWN5LXRydW5rCis2NTIxNyAyOTAwNzhlOWI2YTIwMmVkYzUyM2I1NWI5ZjQ4MTQ2OGQ1YTdlYjhhIGxlZ2FjeS10cnVuaworNjUyMTggMWM3OGFhN2VhMzM2MGYzOTJjNGY2ZjY4N2RmZGNjNzU3ZGVhNDgzZiBweTNrCis2NTIyMCAxY2U3ZTVjNWE3NjE3ZTk2NmJiNzQxMTFjODkxNGU0Y2FmMzc2NGFmIHB5M2sKKzY1MjIxIGQ5ZDQ5ZjY3Mzg5ZjYzOTlkYjA4ODQxNzY1ZGYxMjg1NTc4NjY5NGUgcHkzaworNjUyMjUgMTAxYmIxOGMxMGQ1NzVkY2MzMGEyMjQ0MWYzOTQzNWE1NTNmZjg1MSBsZWdhY3ktdHJ1bmsKKzY1MjI2IDc4MTYzMGUyNTU0MGEzNTYyOGM2YTY2Yjk2ZjI3ZTgzNmE1ZjQzY2UgbGVnYWN5LXRydW5rCis2NTIyNyAzNWE0NjJmZjk4NzMxNzNmZmI3NDJjMmY2ZjJiMmEwMjRhOTJlNGEwIGxlZ2FjeS10cnVuaworNjUyMjggYTAyOGMwYjJhY2VlNzg5NjAxMmNkMTg1ZTNmYjFhZDkwMWE5NjIxMyBweTNrCis2NTIzMCA4NjJjMGVhYjFjNTA5YjUwZTBhZmNkMTIxOGRiNDZiYjQxOGRlMWE0IHB5M2sKKzY1MjMxIDhmZjI1ZGIwMTA3ODI5MjFiMjk2N2QyMjJhMmU5MmY0NTM3ODY2NDEgcHkzaworNjUyMzMgMTgyZmNhMDI1Y2EwNGQ1NWNjNGFjZjdmOWIxODMzODNhNjBkMDE4NSBsZWdhY3ktdHJ1bmsKKzY1MjM0IGI3MWQ3NmJmNDUwNjZiZDg2OTI3MWJhMjIzNTBmZjU0NDU2NWQ0ZjQgcmVsZWFzZTI1LW1haW50Cis2NTIzNSA5NzJmNDg5YWUzNTZmNzVmZGJhMDY0MzE4MWQzMjg5MjA4N2MwODI5IGxlZ2FjeS10cnVuaworNjUyMzYgNTU2NDAxNTFlMGZjYzBlZDg0NGI1N2M5ODQzMDI1ZGU2NzBhODQzZSBweTNrCis2NTIzNyBiZTA3YzMwODNjZWFlMjkwYjkwMzhhYWI5MWFmNTYwZDZjNjk3NjhmIGxlZ2FjeS10cnVuaworNjUyMzggNzRlZWY4NWI0YjJjZGRlNzY0ZmFkMTYwZDQyNGQxMGFiNGJkNDJhNyBweTNrCis2NTIzOSAzMDBkZjZiMWU0YjBkNzdmNDIzNDRhNmM4Zjc0ZWMwMzRkNjc1NjJiIGxlZ2FjeS10cnVuaworNjUyNDAgOWE2ZjhmYjE3NWUwNTdiMTIxZjgyNmVhZmE0ZjcyN2ZmNDI2YjA0OSBsZWdhY3ktdHJ1bmsKKzY1MjQxIDMwNDg1YmMxNzI2ODA2MTVhMWVjOTdhMjAyMjRhZWYyNGVmYzRlZmEgbGVnYWN5LXRydW5rCis2NTI0MiA0OTdkMjI0MGUxZjBlOTZjOTE0ZTU2NDRlMzk0ZTZiYmQwN2UwNTU2IGxlZ2FjeS10cnVuaworNjUyNDMgZDNkNTg2MDE5YWZmZjBlNzU4OThmODAyNTE5YmYyNjNkNjZmOTljZSBweTNrCis2NTI0NCBiMjExN2IxODA0OWM0MmEwYzY3ODIzN2RiMGY1MTFmYTA3YmRhYmQ5IGxlZ2FjeS10cnVuaworNjUyNDUgNjEzYjI0MDE0YWZiYTFjYTc5NTVhYmNiODBlZTUyZjAwZTRlYjRjOCBsZWdhY3ktdHJ1bmsKKzY1MjQ2IDc2N2NjODllM2ZkZWM1OTM2YzQ2YzliNzA5MmI2MzUzYjA2OTZiZjAgbGVnYWN5LXRydW5rCis2NTI0NyA0YTQ2MjFhNjg3YTc4N2ViM2Y4M2I2ODdlNjAwNDE4OWYzM2FkODU3IGxlZ2FjeS10cnVuaworNjUyNDggMmQwZTA0MDAxZTgxYzM2YjY0ZTkwNzM2NGJhOTdkNWZmYWVhYjBlYSBsZWdhY3ktdHJ1bmsKKzY1MjUwIDJmYjU1ZmYwNjI3NWU2NWM3MDgyM2Y1OTVlMDRmMjkyNGUyNzg3NjUgcHkzaworNjUyNTEgN2IwODQ0ODEzMzg5M2JlOWIzMjRhYjEwYWNkZDNhNjg5MTZlMDRlMSBweTNrCis2NTI1MiA3MTUzMmFkN2YzZWRmNjA4ZDlhMWUxNDQ5M2E4Njc2MDY0NGQ3YjFjIHB5M2sKKzY1MjUzIDBjMTJhMzdkNWU1ZDNkNDY0OTNjZWFjOTFmNzIyN2NhM2RmZmYzNWYgbGVnYWN5LXRydW5rCis2NTI1NCBiOGQ0ZGJiMjkzOGE1OWExZjkzMGM2YzE0MmJhZjM0NDI3NDk5NDZlIHB5M2sKKzY1MjU1IDlmOWU1ZmU2M2VjMmNkNzQ1OTJiYTdiZGQzYzZkMzA1ODhjN2JhMjAgbGVnYWN5LXRydW5rCis2NTI1NiAzMTExYjY1NDNkZDllOGFlOGU0MGY2YmIzNWQxMTExY2JjZThkMTU4IGxlZ2FjeS10cnVuaworNjUyNTcgZjNiZjJlOWJiODY4YzZlNTBjZjA5YjYyNTgyZWEyYWVlNjA3NDA5NSBsZWdhY3ktdHJ1bmsKKzY1MjU4IGIwMWUyMGQzNzMwNDI1ODYyNjlmZTM1YTk4YWNlMmMzMTVkYzYzNjMgbGVnYWN5LXRydW5rCis2NTI1OSBlM2RhODY5ZGU5OGVhYjE1ZTRlZjBjZDJiNzZmMmFhMTVkM2MxZjYyIGxlZ2FjeS10cnVuaworNjUyNjEgMmRhNDJkY2JiOGNlYmIwNGVkYzUwMmQ0MjI2NzE1ZjYzZDBlYjk2MCByZWxlYXNlMjUtbWFpbnQKKzY1MjYyIGNjODRlZTY2NjdiNzBlNTg3ZDUxZTdlNGEyMjViYTA3NzM2N2RhZWMgcmVsZWFzZTI0LW1haW50Cis2NTI2MyA5NWRmMTE4ZjQyYzZmMjFiMDA3YWE1ZTgxMDFiYWE5M2I3Yjc2Yjg2IGxlZ2FjeS10cnVuaworNjUyNjQgMTUxYzFjZDk0YTQwMmJjMGU0ZTNmM2UwZmE4MzM0MTUxN2U0NGFiZSBweTNrCis2NTI2NiA4YWZjNGUyYzRjMDIzNmRkNTlmZjY2NWY2ZWQ1YTRjYzAzYjk1OWViIGxlZ2FjeS10cnVuaworNjUyNjcgNDBhNTczZjAxZmM0YTJkMTcxZmZhMTViYjVhODFlOGQ3ZTZhYjQ5NyBweTNrCis2NTI4NCBjY2JjODc3NGQ4MmI1NWM0MWZjNzAxMjI0YTY4Y2MxMWI2NmZiNzE0IGxlZ2FjeS10cnVuaworNjUyODUgNzkxYTYzMWEyYzdjODI4MTkyNzgxMWFmZjk2NjJlNjhlN2NiYTA5NyBweTNrCis2NTI4NiAyNjJkMmVhOGFiNTBkYTViZjRiMjYyNjI1M2I5NGRlZWQxNzRjNGE3IHB5M2sKKzY1Mjg3IDNhMjY3ZmU3MzgzYzQ4MTEyNjYwNzI4ZGVlMzE4NzlkODk0MjVlZTUgcHkzaworNjUyODkgNTAyMjhkMmIzMmMxNDExNGRmMmEyYWViZTllYWZkMjRjZWQ0MDdmMyBsZWdhY3ktdHJ1bmsKKzY1MjkyIDIxZWFjOTEzODI0OTViYmJlMDA4NDgxMTc0M2Q5OTkyYzZhZDY2ZTAgbGVnYWN5LXRydW5rCis2NTI5MyAwYzdmYWIwYjA1YzAzNjM3NmIzZTRjNzkxODVjZjdkN2UxOGM1MDFmIGxlZ2FjeS10cnVuaworNjUyOTYgNjg5YjVlOGFlNjlkNGIxNTM1YTFmNmE4NGE4ZTQzZDNjOTc2MDQzMCBsZWdhY3ktdHJ1bmsKKzY1Mjk3IDAwODM0MjUxOWU4NjU2Nzc3YzMyMzkzY2YzZTgxYjhjNzA4ZDg5ZDUgcHkzaworNjUyOTggZmQzMDhmMDM4YWZiYTc5N2I5Y2I1MGFlNGFjOTBmNDBkMDUxNjNiZSBweTNrCis2NTI5OSBiNDBlMTNiY2I5ZWE1ZTg2NTM4Y2Y3NDhiNWVkZmJkM2ZkYmQ3MTE4IGxlZ2FjeS10cnVuaworNjUzMDcgNDBlOTQ5YTY4MzQ0NjVhNDFjZGY3NjQ2OGRkYmE5OWNmNjQ2NjkzYSBsZWdhY3ktdHJ1bmsKKzY1MzA4IDhkMDVkZGE3MzVmODc5Yzk5NDBkYTdlNTNlYzg2NWQwMmY4NWI0ZGYgbGVnYWN5LXRydW5rCis2NTMwOSBiMzVjZTk1NGEzOTIxMGFiOTY0NGY5YWQ2MTA5ZjJmNWQyNjE3ODI3IGxlZ2FjeS10cnVuaworNjUzMTAgOGYzNjIwZjVkNjhhYWJkNTk5MGQwOWZjOTc5MGU2MzE5YjFiMGEwYyBsZWdhY3ktdHJ1bmsKKzY1MzExIDkwYzI1YjM2ZTBhZDY5NTc1Y2FjODg4NDYwY2M1YmQzZThjMmI5ZTMgcHkzaworNjUzMTIgODNjN2E4ZmFlYjc4ZTY5YjdkNWVmNjg0MTQyYjIxNTgxZWM1NTJiMyBsZWdhY3ktdHJ1bmsKKzY1MzEzIDEyZTNjMzhkMzE2ZTM4ZGMxM2MxNjdmZjIwYmM3Y2YzODIxNDBjNTMgcHkzaworNjUzMTQgN2Y4MjJiNWQzNjcwMTQ3ZjljMzE0ZmNmODYzMGExZWYxMjY0MDdlZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjUzMTUgNjdkMTc3YWFiOGE3YzVkYjAzYTJhZTA1NWU4MzIwYzk5MTA5YjMwMSBsZWdhY3ktdHJ1bmsKKzY1MzE4IDhhMTMzNjYzZWJkZTA5ZjY5ZmI1M2QyZjRjMzgwNTY5YTAyODEwMWUgbGVnYWN5LXRydW5rCis2NTMxOSA5MTU0NTUzZjg3NmJjN2MyNTYwNzUzMzMwMTBlNDA4NjA5MmY3N2QzIHB5M2sKKzY1MzIwIDBmYmRkYzA0YWVlMTU5YTRmY2UyMTYyYmRkYjIxNWNhNjYyMTZiZDggbGVnYWN5LXRydW5rCis2NTMyMSA1ZGI0MzI4NGVhN2FhYzI2YTE0N2M3MzhlNWEwODA5ODczNjAwMDIzIGxlZ2FjeS10cnVuaworNjUzMjIgMWVjMzhiNzA3Y2Q2YjE0OWU1Nzk4N2YyY2Q4M2MzOGJhODJkNGQ2NCBweTNrCis2NTMyMyA2ZjIzMmZjZmI2NTc2YzU1ZDRmYWQ3NTRjNThmMDlhODdiYjcwNmZmIGxlZ2FjeS10cnVuaworNjUzMjQgYmU3NTIxYWY4NDVhMGU4NGM2YzUwODk0MTdlNWIwMzZmYzUyOWM1OCBweTNrCis2NTMyNiAzNDc2MDNmNzk0ZDExYjU0YjA5OTMzYjNkN2U5NzZkMzZkNmMxMzFkIGxlZ2FjeS10cnVuaworNjUzMjcgMWRlNzE4YTMxMDA0ZTE5NjdlNWNkNTEzMmNkNGVkNmJkNjU2NGRlMSBweTNrCis2NTMyOCA0Y2ViYjVjODRkN2NmYmE4NmY4MWY2MDQ3Njg0YjhlOWY2ZTgwNGNjIGxlZ2FjeS10cnVuaworNjUzMjkgMDM3ODE4Y2FmYzM5MzU5OTYwNmVhMGY5YzE1ZWY1OTYwOTlmNDhhNSBweTNrCis2NTMzMCA0YzExZmMzYjMzYTIzM2ZiNGMyNmZmMzIzZjI2YzdlNWNkOTE5NDVhIHB5M2sKKzY1MzMxIDM1YjFhMjA0NzBkYjA3OWMwNDU3YzZhNGFiN2Q5NzM2NzJlNjllMTAgcHkzaworNjUzMzIgYjM5MDFjNTY2MGY3MWQwYTcyYzBmMTQ1NTcwN2IxNGIwMjQ1OTE0YiBweTNrCis2NTMzMyAxODczODhjMTE1MDUwYzk5MTA0MDgxNzVkMmY1ZjIyNGE5MTYwYmIzIHJlbGVhc2UyNC1tYWludAorNjUzMzQgMGFhZmQxYWU1MTIwOGExYjZjYzMxMjBiZWFhYjNhZGRmNTdjNDIzYiByZWxlYXNlMjUtbWFpbnQKKzY1MzM1IGM0ZDI0ZmM4YmE4YTJlYzY1YjJhNDNkODhhM2I1MmQ1MDBkYzQyMjMgbGVnYWN5LXRydW5rCis2NTMzNyAxM2IyZTExZjNjZjViZDc0MDZkYWZhNDhkZjFmY2JjMzdkMGQwZDIyIHB5M2sKKzY1MzM4IGZlYzk4NWNiZjUzZmFiMDU4Mzc5OTUzNzAwMTI0NjRkOTcwNjk4NDcgcHkzaworNjUzMzkgNDU1MDE0NGIxNTYwNjZmZmZjOGZhNmRlODg0ODBjMzE1NTQ5NmYwMCBsZWdhY3ktdHJ1bmsKKzY1MzQwIDU0MjhmN2ZhMTcxY2YxYmE5NjJjOGQ5YjY0ZDIyNGYzYWI5MzYxOTcgbGVnYWN5LXRydW5rCis2NTM0MSBkZTc1ZTcyODBiN2FhNjE4Y2NhNWRiZjcxYmVjMmUyZjk4MDVmN2JmIHB5M2sKKzY1MzQyIGE5NGYxMzZiNTI4MzgyYzM5NDI4Mzg1MTMyM2M4NTc4YzMwMDI5MGQgbGVnYWN5LXRydW5rCis2NTM0MyA2MzFjZDlhZTVjOGUyMmUyM2I3YWUyZmY2ZWU1MmZhZTU0ZDJmMTk2IHB5M2sKKzY1MzQ0IDRmZWNjOWI5OWQ5ODUyMmRmMmRmNTYzOTg3Zjc3MTVjOTJhZmM5YzUgcHkzaworNjUzNDUgYTQ3NmVmNWVlYmFkYmU0Mjk3NmUzM2VkODhkNWE1NThlMDZkOWNhMyBweTNrCis2NTM0NiBjNTllOTBkOGQxYzcwODIxY2UxMjI0ZTVmMjVhNzVhYzI0ZGI0OWI2IGxlZ2FjeS10cnVuaworNjUzNDcgM2MxNTVkNzgxM2NjMTc1Y2I5MTc5YTFiMmY0YmQxNDM3OWVkMmQ4NCBweTNrCis2NTM0OSBjMmI1YTBhYjMwNzA2Mzg2YjlmM2M5M2E4M2RlOTQ3NGVlNDYyNmI2IGxlZ2FjeS10cnVuaworNjUzNTAgNzBkNDBmOWFkMWQ3YWNkMjc4NGUzNjc1NmM0Yjg2OWRiN2NjMzM4MSBweTNrCis2NTM1MSAwZDJkMjZmZmUyMGViMjQ4YWMzNmUwMjgwMTQ5YjQ5MzEwZjdmNzljIGxlZ2FjeS10cnVuaworNjUzNTIgMTQ4MDIwYjVjNTMxMmUzOTgwM2EwMWZiYTE2N2M0NTQ4ZGY0ZDMwYyBweTNrCis2NTM1MyAxMTQwNzc0ZjY5YTU3MmM5NWE0MjAxYjFjYTk0MzhmYjlkYzQ1ZjhjIGxlZ2FjeS10cnVuaworNjUzNTQgZjFmYzdkOTM1MDlkM2ZlZDIxOTAxMWFmNTQ5YTg0YTBmZTVjM2I1YiBweTNrCis2NTM1NSA1ZDJjZDk2YTE5NmJmZDIyYTQzODNjMDU2OGNhYzJjMzFiNzcxODUzIGxlZ2FjeS10cnVuaworNjUzNjUgZjEyMWE5NjNhYjY5NGRiYmYzNzU4Y2JkYWZmNDZhYjJlYzMxMDQ5OCBweTNrCis2NTM2NiBlZmY0Yzk0YzAyY2QxZTEyZjg4YjA1MWI0NWQ3MzgwZDA2ODM5ZjJmIGxlZ2FjeS10cnVuaworNjUzNjcgYzBkZjFjNjQ3N2JiOTI3N2FmMzQ5Mjk4ODI2YTI5MjVhNmE0MDk5NSBweTNrCis2NTM2OCA5NWJjMGNmMzEyMDNjZjg3NzJiNzM3ZDIwMWVjZjhkMTg0MTFiMzkzIGxlZ2FjeS10cnVuaworNjUzNjkgY2MzNzE1NzBlMTQxMzIzZmEwNDdkMzhlNzJlMjc2NTA0MjE2YzZlMSBweTNrCis2NTM3MCAxMzgxNzc0MmE3ODEwYmExNDM2ZDljODAzYzc2NDNlNjhjODU5YTExIHB5M2sKKzY1MzcxIDE5YjZjNjM1ZjVjMWQzMzAwZTY5MTM4MzU3YTk4ZmFiMzZhZjhmNDAgcHkzaworNjUzNzYgMTUyMmYzZDViZTZlN2E5NDY5NzM0M2E1MTJlZjhiM2M3NDAxM2RjYiBsZWdhY3ktdHJ1bmsKKzY1Mzc4IGI4YThkMTEzMDc2ZmI5NDU4NGY5MTlhOTUxYzVkMzNlNzQ4YmExMDYgbGVnYWN5LXRydW5rCis2NTM3OSA0YjcyYzdmNjMwNzc0NWY3ODg2YmNmM2VmY2E5OWQ4ODc3MzIyMjk4IGxlZ2FjeS10cnVuaworNjUzODEgMTNlYmI0YjVkODlhYTg5YTA2NjE4NmNiZDE0Yzc3ZGQ1NTE3ZDkyZiBweTNrCis2NTM4MiA0NWJjZDk2ZTU2ZDFkNDIxZmFlNzZjNmM0YTMyN2M3ZDg2OGU0MDJjIGxlZ2FjeS10cnVuaworNjUzODMgMGFmZjNiZjBhMzQyNmYxMjQ0MTliODQwN2NhYzg4NjRmYmExYjUzNCBsZWdhY3ktdHJ1bmsKKzY1Mzg0IDY5MjJmODRhNzE1OGY5ZmM5MTU4YzRkNzRkMmY0YjJhN2RmNzEzM2QgcHkzaworNjUzODUgNmI3YzYxMDI3ZWIwNGZhMzcxOGU4N2RiNjc5Y2FlNTlmZGVkMTM3OCBsZWdhY3ktdHJ1bmsKKzY1Mzg2IDUyNzlkNzk2MTA5MzdhNWI0YzQ3NTAxMTk3ODEzYmU5NDNmN2QzYmIgbGVnYWN5LXRydW5rCis2NTM4NyA0YjFiYTUwZDNiZGY3YWRlMjU1YmM0ZGY3OTI1NTI3OTI5MTFhMjM0IGxlZ2FjeS10cnVuaworNjUzODggMTY2MGIzMzUzODIxMDJkYzZjYjM5MDUxNzIxNTBhYTRlNTcyNzgwMyBweTNrCis2NTM4OSBmOGQyYTMxODVkOWFhZmYzYzJmYTEyYjg3OTdkYjI0YzcyOWJiNGM3IHB5M2sKKzY1MzkwIDRmNDZmM2Y3MjMxYmZmODljMzk4MjlkOGQ3Y2Q1OTM0Mzk5NmUyZDcgcHkzaworNjUzOTEgZDIxYzBhMmI2YjExYTRlOWY2OWI0MzJkOGM1YmJlZmQ5ODMxM2VlNCBsZWdhY3ktdHJ1bmsKKzY1MzkyIDAwMThiMThmNWY0NjQwYTcyODc1NWU3NTc3NTUzZTlmZTE0MDBlZWIgcHkzaworNjUzOTMgZjBiZDM3ZWE2OTQwNWNiNDM1ZWUxY2ExYmJlZWUzM2RjYTE2NGVlYiBsZWdhY3ktdHJ1bmsKKzY1Mzk0IGI4OTQ1ZDhmMDBlYTI1MzAzZjg3YWRhYjRkYmYzY2Y0NjRhZTcwMTMgcHkzaworNjUzOTUgYTdiZjUwM2M4NTdlOWM3ZWYyM2FmZDhiNzFjNTFkMTdkYzYyN2M0NSBsZWdhY3ktdHJ1bmsKKzY1Mzk2IGU4Nzk2YjU1ZjgxYjA4ZDA1ZjJmNzJjNjE0ZjgxYmEyNWY0OGMwMzcgcHkzaworNjUzOTkgYmE4NGMxZTNkZDYwY2VmYjNjYTc2MWYyYjFiMWM4NzcwZDY3ODJhOCBsZWdhY3ktdHJ1bmsKKzY1NDAwIDRhNGMyMGEyMTY3YmIxODNlNTdhODRlNjFjNTkxYzUwOWM5OWI4NmQgcmVsZWFzZTI1LW1haW50Cis2NTQwMSBkNTg3YWE1ZTgyNGQ2NTE5YmNkYTViM2FjYzRmMDlmZGIwYjVhZWYzIHB5M2sKKzY1NDAyIGZlZGRhZjIxYzJhNDlmN2RmOTQ3NzVlNmZlY2VkY2YzN2QwYTc3ZDMgbGVnYWN5LXRydW5rCis2NTQwMyA3NDc1YjBmY2M1ZmYyYmMzZGUzMGU1Mzc3YzcyNWYwYmFiNTRlMjczIHB5M2sKKzY1NDA0IDY1NDQyNTQ2MTczZWE0MjgyMDI0MTdlODRkYzY2OWIxZTQyY2RjZDAgcHkzaworNjU0MTIgNzYzZmYxYmE5MWM3ZjJkM2U1OWIzMzE5ZGQ4YjA3Yzk3MTdjNzI4ZiBweTNrCis2NTQyMCBiZjUwMDg1ZmJjZDMyZDFjNDJkNDNlNmVjMzc2OTA2MzFlMDQwYWMzIHB5M2sKKzY1NDIyIDk3NjA3ZmNiN2IyNjE5NjFlYjY3OTM2MWNjNTcxOTk1NWVjZjBhNGEgbGVnYWN5LXRydW5rCis2NTQyMyBjYzQzYjk5OGY1YjUxODNjYjFiMTIyODRiNWM4YWRhNWMxMzQ1NzFkIGxlZ2FjeS10cnVuaworNjU0MjQgNDM3ZGRiYmNkZDI5NGI3MzVlNjkwYTQ1MDJmNDNjY2EyMGY0OTBjOCBweTNrCis2NTQyNSA0ZTZhMGFlMWE4ZTdhYWU5Njg0NzQ0ZjZhMmIyNDEwMDkwM2FhY2QwIGxlZ2FjeS10cnVuaworNjU0MjYgNzRjYzkzMmFkOGRiNjg2YjdiMGQwOGE3YTNlYjliMWU2MzRkMjI3YSBweTNrCis2NTQzMCA4ZjMyYjEzMjY5YjRiMWFlOTQ3ZGZlODA1NmU5ZmJlMDJkOGQ4ZjlkIGxlZ2FjeS10cnVuaworNjU0MzEgYmQ1MWNmNzE3NjI0NWIwZWViZjZkZGQ2ODE4ZjZmNTNiYjAzZDk0NyBweTNrCis2NTQzMiBlMDA3YWY3OWY2N2M2YTUxNzBhNWIyNmY5OTE2ODZkOWY1Y2UzOWJlIHB5M2sKKzY1NDMzIDFkYjQ4Mzk0ODEwNjc4OTM2MzgxY2FjYWYzMmEzMzhlMTZkNDM1YTIgcHkzaworNjU0MzcgM2U0NGRlYmMyYmM5MGE3NmIxZjYxODNkZmU5MjQxZmMxOTUxOGIyZCBsZWdhY3ktdHJ1bmsKKzY1NDM4IGRmNWIzOTRkMWUyNDM5Mjk1YTYyMDkwZTY5MjM2NTk0ZjU2ZTEyMDEgbGVnYWN5LXRydW5rCis2NTQzOSBlOTM0OTU2ZGRjZTM3MmMxZTIxZDc1N2NjNDBkZDA2MGIwMTgzZDE4IHB5M2sKKzY1NDQwIDRlNDVkMGNmYWY3MWI1MmJkMTM5MWM2MjkwZGUxM2NmZmZiYWIzMjYgbGVnYWN5LXRydW5rCis2NTQ0MSA4YzQ5YTNlOTBmNDBhODRmYjgzNDkzZGMzNWQxOTg2ZTI5YjZhMjY4IHB5M2sKKzY1NDQyIDE4MDNkZTVhZTBkYzM3MGRmMjM3MjI3NmQ1YjhmZmM0NmEwNzdlNDYgbGVnYWN5LXRydW5rCis2NTQ0MyAzM2RhYWU2MzM5ZWUzYTI3MGEyOTJkYjY3YzUxNjcyM2MwMzNhMWVmIHB5M2sKKzY1NDQ0IDk4NmNiZGFmMTU0ZmMyNzNiMzcyYmU5ODZjNDkxYTQ2N2Y0MTM2NDEgbGVnYWN5LXRydW5rCis2NTQ0NSA1ZjNlZjY0MDBhOTY3NjJlNjBjMjdlZDUxYTA1NWU2ZDc5MTFkYzdmIHB5M2sKKzY1NDQ2IDI1MTI4MjU4MDA0MWEyODA2ODcyODdkODRhOTliZmZjM2YyM2ZiMzQgbGVnYWN5LXRydW5rCis2NTQ0NyAwYzZiNmJkODVhY2FkMzczNzFiOTlmYWEzYzgxZmNlZDk3ODQ4NzVmIHB5M2sKKzY1NDQ5IDFmMjJkZTkzZGFmOGUzM2NmZDAwYzdhZTBlNTMzMDU3YWY3OGU4ZjggbGVnYWN5LXRydW5rCis2NTQ1MCA4MmQ0ZDZkZWUwMzQ3NWUzZTZhZmFhNGIwMzg3YjgzNWNkZjYxZWRlIHB5M2sKKzY1NDUxIGQ0ZGI1ZGVkNzZjZTFmYzE4YzRkY2MxNDY2MTY0ZDhhNDQ5MDMxZjUgbGVnYWN5LXRydW5rCis2NTQ1MiBkN2JhZTdiZDM5ZDZmMjMwNjIxNTAwZDcyZDRlODZhNzliMzQ4MDQ1IHB5M2sKKzY1NDUzIDJlOGNkZWUzNGQ5NzdlZWFiOGEzOWEzYTgyOWI1MGEyZjBkMjhiZTMgbGVnYWN5LXRydW5rCis2NTQ1NCBlMzYyMGI3M2E3ZDE0ZjczM2FjNTJjNDYxOThiNzUyMjgzZDVlZjRhIHB5M2sKKzY1NDU1IDM1ZTdkYzk3N2E2M2MzNjQ0NzNmMmM0MWE4NjdmODBjZTIxZGQ3ODYgbGVnYWN5LXRydW5rCis2NTQ1NiA4OTcyY2U1NjI0YjRkOTE2MDdjYWZlYjIwMjM1Mjc5ZGYwOTY5N2M3IHB5M2sKKzY1NDU3IGM3N2FjOGJkZDNmZWI0YzdjZGE5NDZlNDkxMzYzNTdjMGE0MWYyNDEgbGVnYWN5LXRydW5rCis2NTQ1OCA0MzIyYWYxYjZkM2Q2YmQ1ZWViMDE2NmU2YmQ1ODNkZDE3ZmNlNjA0IHB5M2sKKzY1NDU5IDI4OGNhMWM3Mjg4ODA5NGI1OTMyYmZiMjc3Mzc0ODQ5NzViZjE1YTkgbGVnYWN5LXRydW5rCis2NTQ2MCBkYzg1MGRhMDRiZDU0NzIxNmUzMTQ3M2Y2ODUwMWZhZTIxMmM2MmVmIHJlbGVhc2UyNS1tYWludAorNjU0NjEgMTUwOGNlYTJjNmI1NmU1ODAyMjJmODI5ZmI1NjQzMDgzNDIxNDAzNiByZWxlYXNlMjUtbWFpbnQKKzY1NDYyIDU2YjNiMmNjZmQ2ODhkOGE1NGU1MTI5OGQwYWNiYTVmNjAyZWE1NGEgbGVnYWN5LXRydW5rCis2NTQ2MyA1NWUzMjU4MDk0ZjAzMmQzYTYwMGI1YjRjYjcwZGIwMjAzYjg5OGU3IHB5M2sKKzY1NDY0IGZkZjNiNmY0OTlkYWUxZWE5NDAxOTk0OTAxOWUzNjFhNzA4MmEwMmIgbGVnYWN5LXRydW5rCis2NTQ2NSBkYWRhOTRhNTMyOWYyZjgyOGQzZTc5NmMzODljMWNiNTUyNTY0YzI0IHB5M2sKKzY1NDY2IDFjMjRhMDlhY2I5N2M5NDA4Zjk3NjZjNzA4ZTg1ZmMyZjExODQyOGQgcmVsZWFzZTI1LW1haW50Cis2NTQ2NyAyMWYxNDYzODdhNjNjZmI1YzkyODhkN2JiNWM4YjMyMmJkYmUwY2VjIGxlZ2FjeS10cnVuaworNjU0NjggOWRjYjFkMjhlZmJiOGYzOWYzYTU0ZDI0NjExMDI4YTc1ZjY5MjA3YyBweTNrCis2NTQ2OSA4YmQ1NjUwMTkzYzYwODRlMzM2ODUwMGFmNDQxYzg3ODMyMzc5YTdjIGxlZ2FjeS10cnVuaworNjU0NzIgNDBiZTM3ZTY5MTU4ZjZmY2Y2ZjkyOGJmODg0M2U1ZDI3YWQzZDk1NyBsZWdhY3ktdHJ1bmsKKzY1NDc1IDY0MWVkZWU0ZmNiMTRmMWQ2M2NlM2JlM2NkYmYyMWYxNmMxMTJhZDcgcmVsZWFzZTI1LW1haW50Cis2NTQ3NiBjMjM1YmE3MGU1OTRiMTQwNjc4YjU1ZDQ5MzhmYjQxOGFjNDM1ODlhIGxlZ2FjeS10cnVuaworNjU0NzcgZGYwYWMwNmNkZGNjM2U4YjVjMTBhNmRkYzBhZjlhYzIxMjFiMjhmZCBsZWdhY3ktdHJ1bmsKKzY1NDc4IDUxMzQwNmEzN2UzODUzNmZlZmY1ZGU0Mzk2NjQ2NGY0N2MxZjM0MTcgcHkzaworNjU0NzkgYmNmNDBjODE4OTFlMTBmOWQwZTM4MTU2YWE3YzdmODJmZWRmYmU2YyBweTNrCis2NTQ4MCBhYjRjOWMzODRkMzE4ODAyMzc0ZjA5MDFkYTIxNDVjYTQ3Y2ZjZGFkIGxlZ2FjeS10cnVuaworNjU0ODEgYThhODIzMmNiNTQxOWEyYmJkZDU4NTMwNGEzNzAzMWZiYjY3MTg5YiBsZWdhY3ktdHJ1bmsKKzY1NDgyIDU5ZjRmOTk0NzMwZmE3OWE4MTliODcyMDg1NWZkM2M3NGFjMGJhZTEgcHkzaworNjU0ODcgNDk0MTFkN2RjMjU3NDczYjA4ZGQ2MDQzNzVlODg4Y2RmNDIwMTFiNSBsZWdhY3ktdHJ1bmsKKzY1NDg4IGVhODNmZWU1NzQyMjMwYjk2NjQwYWNmMGJiMGI4ZWExN2RmZTdhZDMgbGVnYWN5LXRydW5rCis2NTQ5MCA2Yzg4ZGUzYzRkNGRkODUyYTZjNGE1NzIwNjA4OTQyZGUwZTUzNTdkIHB5M2sKKzY1NTAyIDIxNzQ1NTYzZTY4MGUwZDRjZmYxZGEzYzlmNWMzMzU2MTk5YjkyNzMgbGVnYWN5LXRydW5rCis2NTUwNiA2YmMzY2ZlMDk4Y2U0NTc4ZmIwZTcyMmQyNDlkZTliZTc2M2IwNjYyIGxlZ2FjeS10cnVuaworNjU1MDcgNTFmNWM4ZTg4NWNhOGM0OTgzZjEzYjA0NTljMzhhZTgxNDM2NDI5MCBweTNrCis2NTUwOCA5M2JjYzkyMDFlZTA3ZjczNzI0ZDU3MGJkMWMzNjM2ODlmMmQxODk1IGxlZ2FjeS10cnVuaworNjU1MDkgZmFjZDgxOTcyNTIzYjk2MzhlOWMzODkzYzJkZjA3Nzg2MzI3NWM3YyBweTNrCis2NTUxMCA0ZDg0MjdkMjVmODRlMWNjOTdkNjAzMGU0YjY1YmE5YjQ2ZWU2NjcxIGxlZ2FjeS10cnVuaworNjU1MTEgY2ZmODJiOTkwYTIyOThhMjkyY2U1MDEwNzgzZTY0Mjg3NDgzNDI0NyBweTNrCis2NTUxMiA0N2NkNDUxNjg2M2VlYTdiYmRkNjRhZmZmZDZlNDJjN2FjZDc4MjNlIGxlZ2FjeS10cnVuaworNjU1MTMgZTliNmU0NDg4ODcxZTlkMmQxY2M1NGFjMDQyZTVmZDA2OWI0MmVhOCBweTNrCis2NTUxNCA5NzlmMGE4OTkwM2YyOTM1ODJiM2VjZWU4YzYzZjI3MjJiMWI3MWY4IGxlZ2FjeS10cnVuaworNjU1MTUgNTdiOGM3NzhkYTA3MzRjMzE5MGRhYmY4MzIyMDkxNDMwMzc4N2U0ZCBweTNrCis2NTUxNiBmNzg0NmE3MWUzOGEyMTEwODYyODYzNjE0MzAyOGI4ZjI2M2MyNGEzIGxlZ2FjeS10cnVuaworNjU1MTcgM2QwODNlNjkyNjVlZjBjYzI3NTBhMmY3NzcxMjlhY2RjNjVlMzE3MSBweTNrCis2NTUxOCA2YzZhMDMwNTY3ZGQwNjMxMmFiZTQ2ZGNmY2NlMWQzM2M5NDdjOTI3IGxlZ2FjeS10cnVuaworNjU1MTkgY2YzMzFmZWYzMjkzYzcyMDBlOTdhZmE2ODUwOTZhZmU5MGFkZDBhNSBsZWdhY3ktdHJ1bmsKKzY1NTIwIDU5NGM5OWMwZjA3ODRhMmY2MDQwMDJlZjFlYTMyMTZlMGZhMzE0OTAgcHkzaworNjU1MjIgZGYyNzdlNjQyZTU4MDBiMzk0ZTI2ODhjZDZmN2QyZGI4OWUzMTkyOSBsZWdhY3ktdHJ1bmsKKzY1NTIzIDBkYTMwMmY3ZmU5NDMyYzczM2Q5MWZiMDhhMDRhMzkzN2Y1ZmRlMDkgcHkzaworNjU1MjQgMzgxYTcxZGYwNjBlNGY1OTMxOTM1NmVhN2M2ZDdmNjgxN2E3N2UyMCBsZWdhY3ktdHJ1bmsKKzY1NTI1IGZmYzFkOGY4YzVhZDAyNWI2ZTI5ZDBkYjhmZDg2Y2MyMGYyYzAyNmUgcHkzaworNjU1MjggOWZhYTg3OTAyMTE0MzRmNDU0NjU0YzBiYjY2YzkxMGUwNzY2ZTJjMyBsZWdhY3ktdHJ1bmsKKzY1NTM2IDY4ZGY4NDJkNjMzMDg0ZmRkNWM5ZTZiZmNlNTVjMmYyMTczZTU4NGIgbGVnYWN5LXRydW5rCis2NTUzOSA1Yjc3NGZlMDRjN2UxNzdlM2Q4YjNiMjMxNWUwYzgyMGNkMjgwYmIxIGxlZ2FjeS10cnVuaworNjU1NDMgYjY1NGQxNGNiOWQ5ZWUwZDQ3Y2YyM2U2YzE2NGM4ZjBjZWFlOTg3MiBsZWdhY3ktdHJ1bmsKKzY1NTQ0IGU1ZmMzZTE5OGRkYWMxYzdjNzljNTdhZTk5YTA3ZWFjOGMzY2IyYmQgbGVnYWN5LXRydW5rCis2NTU0NSAxNjM1ODkxYjE4ZTgxYWQ2ZmM5MTdjNmE0NDBlMGI2YWVkYzdkMjQ4IHB5M2sKKzY1NTU4IDIzNjYzNzM5MDQ1N2U2YjMxODFlYTZiNjJiNzY1ZjQ4YWE5MmM4M2EgbGVnYWN5LXRydW5rCis2NTU1OSA3OWVhMzQwZDFhNTlkYWZlMGM1ZDY0MTlkYWUwZGUxZGU5NWI4MWU3IHB5M2sKKzY1NTYwIDgzYTcyMTkzNjRiMTM2NzE4ODNkM2VmOTRhMDJjN2EwYTVlMTE4MDYgcHkzaworNjU1NjEgNTQ5MTA4ZTlhMGEzMjIzMTdiNTI4OTJkMzQyOWEwMGNmNWEwNTQ4NSBsZWdhY3ktdHJ1bmsKKzY1NTYyIDljY2MxNjgyZTE5Yjg3ODlmNDAyZDc3YWIxZmViNjA4MDVlM2Q0ODIgbGVnYWN5LXRydW5rCis2NTU2MyA1M2FkZTllNjhiNTYyZTMzYjRlNThlMzc1MzJkYWRkYjRkN2ExNmRkIGxlZ2FjeS10cnVuaworNjU1NjQgMTIzNzNmYTY4MDRlNGI5ZjYxZTBjMzU2NWU5N2ZhMWM4ZWIyNDMxOCBweTNrCis2NTU2NSAwM2RhZTAzN2IyYjcyNzU1NWQyOGRjMGQ2Zjc2Y2ZhOTY5MzNjMzEwIGxlZ2FjeS10cnVuaworNjU1NzggZjFmYzk0NzcyMmYyOWE0M2NiMjk3ZDQ5MTg2MTNjMmZlN2U2ZDkyYiBsZWdhY3ktdHJ1bmsKKzY1NTgwIDA0MmQxNmEwNTAxNjkxMWJmMDliY2M4ODE3YzhiMmFjZTkxY2ZhN2IgcHkzaworNjU1ODEgYzhjOWU3OGZjMDgyMzgwMWE3MzdiZjJjYjBjMDNkNTIwMDE5MzE4ZiBsZWdhY3ktdHJ1bmsKKzY1NTgyIDg1YjY3ZmI1NjcyYjk5ZjMxMjlkZTAzM2YwYzYwMWZlYjZkNjVmYTcgcHkzaworNjU1ODMgY2ZhZDNmN2Y1ZTYzOGVjMWRkODQ3MTY0ZjFiNzk1MDdjNjMwN2U3ZiBweTNrCis2NTU4NCAwYmY2YzQyYWI0ZTQyMzg1NmI4OTQ2MzhlYWM5MzE3OGNkM2E5NzZjIGxlZ2FjeS10cnVuaworNjU1ODUgMmIzZDQyZWZmZTViZTE2OWE3OWQ5MTU5YmY2NzQwYjE0NWQyYTY4ZiBweTNrCis2NTU4NiA2NDE2ZTYwNDRhMzAxNjc2ZjAyYTZhNWI5MmVmZGI4OWYyNjk4ZmYyIGxlZ2FjeS10cnVuaworNjU1ODcgYTZkNmMyZmFkMjIwMGVjZjlmMjY4NDM3ODUwMjM4OTdlMTIyMDUyNCBweTNrCis2NTU4OCA2NTkwMWZmZmZjNmFiZTVhMzBiZGQxY2QwMzEwOGU5YTc1YmM0MzBkIGxlZ2FjeS10cnVuaworNjU1ODkgNDg3ZTBkOWEzODFhODAwMDA2YWY3Njc0MjgxMGMxOTY0MWRlZTg0NCBweTNrCis2NTU5MSBlNmZlODNjMmUyNjIwNmY0YWFlNjJjMjMzNmU1OWZkZDg0Y2U0ZDk2IGxlZ2FjeS10cnVuaworNjU1OTIgYjJjNTA1ZDRhMjAzZDgyZDgwMmU1ZDg0NzRlZDYyZTMzM2Q5MzQ0MyBweTNrCis2NTU5MyBmZDdiOTNhMDFjMDRiN2U0ZWQxZDk3MzVkZTRhZjFmNzc2OGExOTY5IHB5M2sKKzY1NTk0IDk0OWI5YTJiOTg2NzYxMDk2MjcwZTEwZjVlNmFhMDJkNDM1YjM3ODYgcHkzaworNjU1OTUgZTJjNzA2Zjk5MDZjMzg1Yjk3OTM2ZWEwNTk2Yzg1MjY5MmZhMjhmZSBweTNrCis2NTYwMSA3MjI0ZmZmOTg4MjNiYzk4MzAwNzk5YjNjZjljNzY2ZTc2ZDY1NjVkIGxlZ2FjeS10cnVuaworNjU2MDUgNDc5Njc2OTBiNTg1NWVjOWNhMzMxYWViMjMxZWNlNDE4YTc1YTEzZSBsZWdhY3ktdHJ1bmsKKzY1NjA2IGFhZDU4MDlmYzQxOTU1YjE0MTFkYTc3NzBkOGY2NzgwYjY1Zjg1ZTcgbGVnYWN5LXRydW5rCis2NTYwNyBlZTBhNTJjOTgyZTVmNmFhNDVkZWYwOGEzY2NlOGJiNjBmMGZlMmZmIHB5M2sKKzY1NjA4IDYzYWVhOTljOTcxYTY3ZDhlYzBiZDljZjlkOWRmNjdjNzEwMmJkZmMgbGVnYWN5LXRydW5rCis2NTYwOSBkNjE1YWE5ZmRmMzYxMDQ4ZGUyZGIxNGZmMzAzMjk3YjBkMmQ3YTdjIGxlZ2FjeS10cnVuaworNjU2MTAgNmQ4ZDkyMGNkOTMyNDBhNDdjZDBiMjI2ZGI4MjE0NzczZGJjOGU2YSBsZWdhY3ktdHJ1bmsKKzY1NjExIDFhMTE3MTdhMTU0YjRkZjIzMDVkYzNiNGY5YmJlYjQ0ZWYzYThiNTIgcHkzaworNjU2MTIgZDM1Mjk2NDRjNjgyM2VjNGZhYzdkMWI4YTE3NDkwZTI4ODc4NjYwZSBweTNrCis2NTYxMyAzODhhNGJlN2Q2NzlhMTVmMWYyNTg2ZDgwMWNmODMxNjUyYTlmMWVkIGxlZ2FjeS10cnVuaworNjU2MTQgOTlmOWJlYTkwOWI1NTlhNzJmNDRjZTQ5MTE3NGRiZDg1ZjE0MDZhZSBweTNrCis2NTYxNSBiM2FiZmYxN2UyZGQxNzRkNDdmNTA5YTM4NTVjNTgxMDVkYWMwMTExIGxlZ2FjeS10cnVuaworNjU2MTYgYWNiOThkYmIxYjA0ZmVlMzUwOGQzMWJkMGM2NWJjMzIxMTA2ZGNiZSBweTNrCis2NTYxNyBiYzZhMzU3MmJjODk2ZDNiMTdmZTRjOWVlYjY0NzY3MTQ5Njc2OTczIGxlZ2FjeS10cnVuaworNjU2MTggOWY4NDMzOTZkZjg5OGRhZWIzNjAxMmIyMjk4YTllZWVlMjRkMGI3NCBweTNrCis2NTYxOSAzMDEzNWI2ZTM4ZmRhZjczMjIyMmUwOTI0YjIzOThhMDRiNWI3ZTU2IGxlZ2FjeS10cnVuaworNjU2MjAgMzNjZDZjNWQxYTA0YjFmOGQzODE5MTJkNGExY2RlODZkOTAzYWFkOSBweTNrCis2NTYyMiA1YTE1YTcwNDRlN2Q4ZDZiYThjMmE5YzMwM2EwNzE2MjhjYWY0ZjFmIGxlZ2FjeS10cnVuaworNjU2MjQgYWM4MTAzMzQxYjgwZTkwMjA1Y2RmYjRiMDZjZGQxYWI5NTc3ODQxYyByZWxlYXNlMjUtbWFpbnQKKzY1NjI2IDA1NGRjMTExYjFkOWMxMWE3MGQ3M2JlNjNkNzYzZDZmMzdhODFhY2YgcHkzaworNjU2MjcgNmU0ZjQ3YTY5ZWZhNzU0MjI3NGVlYWI2NDJhY2JjOTdhZWE0YTAwOCBweTNrCis2NTYzNyA2OTQ4MTRkN2IxMDQzYzEzNTBlYjQ4ZTNjYTNlZWIxNzFiNjAxYmY3IGxlZ2FjeS10cnVuaworNjU2MzggMGI2NzFiY2U2OTRlNDg5NzgyOTY0MWFlZWQ2MGU0OGZlZTRlNzBkZCByZWxlYXNlMjUtbWFpbnQKKzY1NjM5IGNlNTlkYWMzZmNhMjRjYjZhM2RlYmM4ODNkMmE3YTRjNWJkMzUwYTUgbGVnYWN5LXRydW5rCis2NTY0MSBjZjY5ODVjYjZkMTU2ZGRiYWNiMDE4ZDlhMDdlYjc4ZTFkNGMwMjgxIGxlZ2FjeS10cnVuaworNjU2NDIgNzUyN2RhMmIwNWU4YTk4ODM2ZDM5YjcwMjk5MTc4NzQyZTg5NjNjYyBsZWdhY3ktdHJ1bmsKKzY1NjQzIGQyMWQ4Y2JlNmJkNGRkNzQwYWUzNjkyY2I3NWFiYzVjNTZiNmYzMTUgcHkzaworNjU2NDQgMGFhZTcyZjhkZGE5MDQ5OTNkN2U4YmZjYzE2NDE2M2UyZWI0OGJiZSBsZWdhY3ktdHJ1bmsKKzY1NjQ1IDI5ZDkzNmE0Zjg4NTg4NmZkMDc1ZTA0NjZhNjkzOTAxM2FkZWQ3ODMgbGVnYWN5LXRydW5rCis2NTY0NyBlYmVhYTY1MzZkMzI4YTMxODgzZTQzMzc5NWNmMzc3ZGVhNjc1ZmM0IHB5M2sKKzY1NjQ4IDc3NzlhZjM4OGFlYzFhM2UwMDIzMjI1MjM3ZDllMGQxY2Y1NWJlYjQgcHkzaworNjU2NDkgZWY0MWRhZTMwZjM1ZDM2ZWQ0N2U5MmRmZGU4OTNmMzExNDMwNDNjZiByZWxlYXNlMjUtbWFpbnQKKzY1NjUwIGVlZmU0NDUwZjc3M2YyY2ZhMWY0NWQ0OTQzOTQxNzIyNzJhNzZhZjYgcmVsZWFzZTI1LW1haW50Cis2NTY1MSBkZDdlMmQ2OGI2ZGRkZjE2MDg5OTY3NDI5OGFlODA3Y2I5YTI0M2IxIHJlbGVhc2UyNS1tYWludAorNjU2NTIgYTMzOTNlNTgxYjE1Yjg0ZjkxOWNlMjhlZjFhYjE4Yjc3NTg3NDBiNyBsZWdhY3ktdHJ1bmsKKzY1NjUzIGIyMTlkNTU0MDRlNzZhYTY2NGUyYjk4NzM3MDU4MTMxZjBjYzgwZmUgbGVnYWN5LXRydW5rCis2NTY1NCBiOGM0YmYzOTM3OTRlOWIxZTc3Mzc4OGIwN2I5NDNhOTQ3YTk2NzVmIGxlZ2FjeS10cnVuaworNjU2NTUgNzlmYTNlMGMwOTg4OWFhY2JhYTAwODJiNjJkNzY0NGY3OWMyZGU4MSBsZWdhY3ktdHJ1bmsKKzY1NjU2IDNjOGVmMzQ2NjkyMzcxMjM4ZDEwMDI1NTZhYjUyMDlmYmI0YmNmNjMgcHkzaworNjU2NTcgNzAxNTE2NTU1MzkzNzM2ZjljNjk5ZWMzZTZjZTgyMzhlZGE5ZTdhZSBweTNrCis2NTY1OCBmMDQ3MjUzM2JmYzk4OTA2MzVmODkyODQ0Nzc3ZDczYjg3MmI1MmYzIGxlZ2FjeS10cnVuaworNjU2NTkgNzljMjkxNmZlNThlNDFlNzFjMjk3ODU2ODVjNmE5ZDhhNWNkMWYzMiBsZWdhY3ktdHJ1bmsKKzY1NjYxIGNkM2IwYjdmZDhlMWI3ZTJlM2NiM2VmMWNmZWM3MDJhNGRmMmQ2ZjQgcHkzaworNjU2NjIgMTMxZjg1YmI2OTMwMGM0OGU2ZDlmNmRhMjc1N2MyMjE0ZjhhMGM5NSByZWxlYXNlMjUtbWFpbnQKKzY1NjYzIGVjY2Q5NDI5NzAyZTRmNTczYmRmNDQyYjZmYmJiYThlOWM0ZTk0YTUgbGVnYWN5LXRydW5rCis2NTY2NCBkNzhlMjRiMTJmNjMzNmI4N2E1MTZiNTJkYjAzZGQwNDJiZDBmZWU4IHB5M2sKKzY1NjY1IDUwZmZmYzgwMDg0NTdhOWJlMGVjZWY4NjdhYWUxMjE0M2Y0MWU1MTkgbGVnYWN5LXRydW5rCis2NTY2NiA5ZDc4ZmQ2MGJmMmE1ZWFjZDc0NWFlMzRhZmM4NDYxNjhjYThjYTYyIHB5M2sKKzY1NjY3IDA2MDBmY2U2NzgzNTIyODhjZGI3Nzg3NjQzNzI4NDZlNGRlNzI1MTUgbGVnYWN5LXRydW5rCis2NTY2OCA0ZjFmZThmMTZlZjkzZDYzZjhmMzgxN2EyZTY5Y2U1ZmEwNWFmYmEzIGxlZ2FjeS10cnVuaworNjU2NjkgMDQ1NTZlMmE3OTg0Zjk0MTgxNjlkYTE1NmM0OTgxZDRiNmY5NTdmOCBweTNrCis2NTY3MCBmNjAyNmEzNzk4ZDQ0MDEzY2MwNzRmYmQ0YjExZTAyMzFkYjdlZDM1IHB5M2sKKzY1NjcxIDZiMTkwOGVhNmI1MzU0NGY2M2Q5ZWExZDVlYTBjOGRiYzUyYTRhOWUgcHkzaworNjU2NzIgNzBmMjc5NWQ2OTAyODI2MTUyZTkwYjhmYjU5ZWFlNTI5NzczYWM5YSBsZWdhY3ktdHJ1bmsKKzY1NjczIDYxZDUwZGE1ODE2YTM4NzIwYWI0NDkyZTAyNzAyY2VhNDE0OWFjZjAgcHkzaworNjU2NzQgZjEyNjBmNDMxMWVlNzhjODUxMzI5M2MyY2FkNDMxYzJjMzg1NDY2NSBweTNrCis2NTY3NiBhZGUzM2UxM2VjNjkzMDY2YzZkZDY3ZjkxYTUyZDUxZWU5NzhmNGNhIHB5M2sKKzY1Njc3IGU4NTA5YWM1MDFmMzI0ZDg1Nzc1ZTQwNGYwMWJkMmNmNDIzMWFlYjcgbGVnYWN5LXRydW5rCis2NTY3OCBiNzU2MjFhNDIwZWNiMjhlOTIzOTAwYTQwNzFlMDRkMTk5NmJmNzkwIGxlZ2FjeS10cnVuaworNjU2NzkgYWY3Mzg4YWQzMTY0ZWI3NGRkZGQ5ODUxMGMzMDBlMDUxZDQ0NWVjOCBsZWdhY3ktdHJ1bmsKKzY1NjgwIDI5M2RmODE1M2Y2MTg1OGVhY2JjYjlhMmM4YzgwNTA1M2VkOGM2ODMgcHkzaworNjU2ODEgZjhhMzQ2ZmNkMDQxOTYzMjFhYzZiMzczN2NjOWZiNzg3NzE4OWE1ZSBsZWdhY3ktdHJ1bmsKKzY1NjgyIDYzM2ZiMDI2MGFiMzIyNTQ0M2ZkZWUyZWNhY2Y2ZjgwODlhMTE0ZTMgbGVnYWN5LXRydW5rCis2NTY4MyAzNjUwYjFjZTRiZDg0NjQxMGRhNjhiZjRjZDQyYmExN2M0YzNmMWYwIGxlZ2FjeS10cnVuaworNjU2ODQgNjBlMGUwOTc2M2FiNjBkNDQwNmMwYmE5NWVjYzU3MzZjYjYxNmE2OCBsZWdhY3ktdHJ1bmsKKzY1Njg1IDEzNmY2MWI3NGU4ZmU5ZDFiNjJmZjJmNWE0Nzk0NjMxYzg5MGMyYjAgcHkzaworNjU2ODYgNjc5Mzg1NzVhZmM2Y2M2Y2U2ODU3ZmM1ZDU4NTYyMWQ3NWJjNzkxMCBsZWdhY3ktdHJ1bmsKKzY1Njg3IDU0YTJkYjhmZGM2MjZkZTk0ZTM0YWNlNGM0MGM3ODUwY2UwYzFhYmUgcHkzaworNjU2ODggMGE0MzM3NmJhYTZiZjJhOTA3ZjAyZDY5N2NmZTVjODBhOTVkMTY3NCBweTNrCis2NTY4OSBlOTYxY2MwMTQ2MTkxNDFkMjk2MjM4ZWI1MGFiNTRhNGJhODQwMzdlIHB5M2sKKzY1NjkwIGM2ZjBkZTVmMmM2ODUyM2Q2YjIyMmRiNjhjZjFjNzRmNWJjZDdjNjggcHkzaworNjU2OTEgOTIzMzI4NmM3ZWQwZGM1ZTcyYjgzOGNiY2U2NDA0MGJmYWZmYmNkZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjU2OTIgMWQ4MTcxZDY0NDYzZWQwMjRlYmMzYjYxZDRkZjg4YTZkNzQ2OWQ5ZiBweTNrCis2NTY5MyBjZGQ4OTg0MzNkNTg4ZTMwZGY1Yjk4NmFhMzQ1MjdmNjQ1YmEyODMzIGxlZ2FjeS10cnVuaworNjU2OTQgYzA1Nzk4OWU4N2ViOWRkZWExODE1MTlmZjk5M2E4ODkzODg3YzI1MCBweTNrCis2NTcwMCAxODAwNjJlMzM5NTY5ODBkNTViNjBmNDNiY2JkMDlmMTkyMzE0MzkwIGxlZ2FjeS10cnVuaworNjU3MDIgODE2M2RhZWU3ODVkNDBhM2Q3ZmI1NWFkMGQ5ZmRiMTQwZjEyYTc3ZSBsZWdhY3ktdHJ1bmsKKzY1NzAzIGY2MjdmODAyMDFkMzlmZTE1ZWY5YjJlZjZkZjEzZGJiYjA5ZWE2NGYgbGVnYWN5LXRydW5rCis2NTcwNCBlNjFkZWI2OTBlNzA4NDAyZDQ1MmVhNmNmZTU3ZTE0Y2MxMWVlMTQxIHB5M2sKKzY1NzA1IGEzZjk1MGQxNWMwODNmNTZhZGQxYWYzZGEwMmRjMTQyOWYwOGU4ODYgcHkzaworNjU3MDYgYzM3ZjRiMDM2MzdmMjI2NTgzOTM0OTMyZDg5NDAyZTA0ODA5ZDZkNCBsZWdhY3ktdHJ1bmsKKzY1NzA3IDcxMDE0Njg1ZTBlNWY1Yjk5ZTNjNzFkNzg4MjlmYTk0NjE2ZGMwM2MgbGVnYWN5LXRydW5rCis2NTcwOSA3ODBlMTcwMzg5MDI5OWFiYWFlMTA0MzZhYjIwOWQ1MjBlZWIwNWUzIHB5M2sKKzY1NzEwIDE3MDI4NzNmMjQ5MmYyMzA1MjVhN2Y5MDYxZGFhYjA0ZmZiYTg5MDEgbGVnYWN5LXRydW5rCis2NTcxMSBjNmQ3OGY4Njk0MDVkNzUxNGQ0Y2E3MmIxMzk4Nzk5NGQ1ZGM5YzQwIHB5M2sKKzY1NzEyIDFlZDg2Y2UwYmViMjY2YTI3ZDlmY2NlMmY1MjE1NmFiOTU5ZTg0ZGUgcHkzaworNjU3MTMgZWFkMzU4Y2U0ZDhhYjA5ZmYyNzM4YmZhOGZhYzIwMjZlODVjZjZiZCBsZWdhY3ktdHJ1bmsKKzY1NzE0IDg3ODg2MTUxNWIxNjBjOWFiYjY3ZmZiMzZiNzk0MDQyYTQ5YWM4ZWMgcHkzaworNjU3MTUgOWZiMTBmM2QwZjg3MzA5ZTk1NDhjZTE0NDZlZGE5ZmE1NTdmOWE4OSBsZWdhY3ktdHJ1bmsKKzY1NzE2IDg5NGI0YWNmZmZlNDBkMGJiNWNlZDY3NGZhMGE1OGM4NDRmNWNiOTEgbGVnYWN5LXRydW5rCis2NTcxNyA4YzBmODUxOTZlMzdjMmUxMWRkZmMzNjc5MjVkYmVmNGYzOWMwMzZkIHB5M2sKKzY1NzE5IDkxOGE5MThhOTk5NmM2MDkwNzBlZDA5ZDQzYTkyYTdmZWUxM2FmZDEgbGVnYWN5LXRydW5rCis2NTcyMCBiOTczZmNjZDAyYTViOTA3ODFlYzI3MzQ0OGJlNjA5YjMzMGE3NjQyIHB5M2sKKzY1NzIxIGNhNGM1MTM1ODYyOTc4OGMxN2RhMTUwYTg4MmNmMjBjOTQyOTdkODIgbGVnYWN5LXRydW5rCis2NTcyMiAxZDY1YzhmNWMwOGUxMzgzNTdkZGExYzI0OWYwYWEwYTMyNjRhYzA3IHB5M2sKKzY1NzIzIDVkZjU2Y2Q1NTE5YTU2OTQ3ZDA0Y2Y4ZWJkMjc1NzAyYWM5MDJhODUgcHkzaworNjU3MjQgMmQ3NmFmN2Y3NzAyNjhhOTJkYjQ0NDA3OGE4MmI5ZjYxZWMzYTM5MyBsZWdhY3ktdHJ1bmsKKzY1NzI2IGI2MGUwOTI4ZGIzZWM3YTEwNTI0MDNiYjI4MjA1ZGZiNGI1MWFmZTUgbGVnYWN5LXRydW5rCis2NTczMSBlMGM2NTkyMmI4Nzg3ZGY4YTQyOWU1MDcwZTkwZDYwYjc3OWM5NDlmIHB5M2sKKzY1NzMyIDlkZTY4YWQ4NjA3OGMzNjFhYjMwYTE4YjJjNzY3NmM5ZDU3Y2JhYjMgbGVnYWN5LXRydW5rCis2NTczMyBhZWZiOGU5ZDM4NDRmMWU1ZWE4YWQzNmNkYzljMTZkMzMwMGU3M2U3IGxlZ2FjeS10cnVuaworNjU3MzQgMzFjMzlhNjJkM2Y5NjU1YTcyZjgwODAwNDcxYmM1ZjU3MDUzYzA5MyBweTNrCis2NTczNSBlYmE3NDU3ZjRiYjY5M2I5MGMxMTI2YTcwNWI3NzY2MTI1NWNlNDYxIHB5M2sKKzY1NzM2IDE1M2U5ZTY3ODY0NjRhMTg0MzczZTllYzlhMGZlMDA3ZDlhNDBmYmYgbGVnYWN5LXRydW5rCis2NTczNyBmZjg1NjUzNTQ1ZjVjYTcwZjRmMGVmMmIyZDM0N2U3Y2Q1YWM3YmExIGxlZ2FjeS10cnVuaworNjU3MzggZWIxZTY0ZTUzNWU2YTE3MTI2ZWZkYjRlOTAyOGMwOTU3ZGU3NzZjNSBsZWdhY3ktdHJ1bmsKKzY1NzM5IDVhMzVjOTYzZTc3MTIyZWE2YzM0OWFjOWU1ODZkNjU2MTk5MTUzZDQgbGVnYWN5LXRydW5rCis2NTc0MCBkOTlmZTU2ZjlmZjhkNjQxYzE2MDNlNzYxYTY4YmQwZDlmZDhkZmQxIHB5M2sKKzY1NzQxIGFmNGU0MGY4OTNiZDk1MGQwNDcxMzFmY2YyNTAzZWY5MDEzYTIwYWUgbGVnYWN5LXRydW5rCis2NTc0MiAyYmUxN2QzNjhhOWM1YjhmZTYwOGJmZjg1ZTc2NGJiNzViYjYyNjc3IGxlZ2FjeS10cnVuaworNjU3NDMgZjI0ZjI2YTEyMTg2NzVlZTA3NDIxZjhjMzM3ZTZjNTljYTgxOGQwMCBweTNrCis2NTc0NCA0OGRkZGZkMmZiZjNiYzAwMzQ3MWEyYmRhYjNlOGFjYjUwYzI3MmJlIHB5M2sKKzY1NzQ1IGFhZWYwOGFhMmE3ZWZmYmFjMjliMTM4N2VmMzg5NTNhYTY2YzY3MjAgbGVnYWN5LXRydW5rCis2NTc0NiA2MTJiMGMwZTVhMGYzM2Q4YjkyZDRhZjFmNTQyMjExYWEwNTY1MTIxIHB5M2sKKzY1NzQ3IGQ5ZDUxOGNkNDkzYzMyZWZhZmM4YTNiYzUyNTEyNDgyMjFmODRjNzIgcmVsZWFzZTI1LW1haW50Cis2NTc0OCBjNzQ4MWM3M2MxNjNhMTk3YTdmOTgyYTNlYjE4NmI2YmVkYjEwYmQxIGxlZ2FjeS10cnVuaworNjU3NDkgNDM1ZDY0ZmQxM2E5Y2Q5ZDRkMzA2ZTQzNjE0ZmE0ZmY1ZDlkOTM1OCByZWxlYXNlMjUtbWFpbnQKKzY1NzUwIGY0YzJlYWFkMDlmODQ1ZTEzODMwYzQ5ZWE4N2JmYTM1YTRmOWM0MDcgcHkzaworNjU3NTEgNDU1Njk4OTVmN2I1NjE0YWFkNTNmY2VjODNiOGRiM2E0ZDIxYjEzMiBweTNrCis2NTc1MiBkZGM2NWNkMmYwYmJiYWMzNWYxZGY0YzAxYTU2Mzk2OTI0NTJhNjk1IHRsZWUtYXN0LW9wdGltaXplCis2NTc1MyA5MGQwNDk5ODNmNWIzZGZlNmM3NzM2OTkwMjdkYjFmOGQ5OWQ0NTg0IHRsZWUtYXN0LW9wdGltaXplCis2NTc1NCAwNzQwOWU5ODVjMzljOWFhMTcxY2ZlYjhkZjE3NjE1NDc4MzIxNjEzIHRsZWUtYXN0LW9wdGltaXplCis2NTc1NSA5YzQ5ODkwNzIxOGZkN2U4MGIyZjMyMTkxMjU2OGYzMmQ0OWQ1OWQ2IHRsZWUtYXN0LW9wdGltaXplCis2NTc1NiBmYzFhMGFjZmNlZjgwOGJmM2NmNDM4MThhNTU0ODYzMTllZTE4MTVjIHRsZWUtYXN0LW9wdGltaXplCis2NTc1NyBkYTU4MzMzZWM3ZGE3NjFjNTExMmY3NzhlNTVhYmZmMDZjMTAxZmJhIHRsZWUtYXN0LW9wdGltaXplCis2NTc1OCA1MDQ5M2Y5ZGQ4YzcxYTRhNDcxYmNlZmNiNTliNGNmOGIxMTQ5OWQwIHRsZWUtYXN0LW9wdGltaXplCis2NTc1OSAxNmI5ZWUxZWVlMzFmYTI1OTQyODg1YTE4NDJlYjAyODA5MzVkNzc1IHRsZWUtYXN0LW9wdGltaXplCis2NTc2MCA5M2FiOWZkYTgwYWIwYzRhMGQ1MzYyOWY3NzZkYTA5ZTQ4NThjMTBmIHB5M2sKKzY1NzYxIGY0ODI4NzVlMmEwMzFhYWI2YzM0Njk4NWZhMDMyZjM5MmJhZTk2MDAgbGVnYWN5LXRydW5rCis2NTc2MiBmNGMyMjZjNjFiNzFjOGY2YjNlOGM2NGFiNzNhZTRjYmViMmJhMTE1IGxlZ2FjeS10cnVuaworNjU3NjMgMmY3ZTU3ZmMxZjNhNjY2YjU3MmNlYTM4ZmIzMTRkMzE4NDA4NmUxYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjQgYThmM2U2M2I0N2U0MjQyZDM5Mjc4M2U5YjAxNDdjNWFiNTIwMzk3OCB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjUgM2RlNjllNmIyY2IyNTIxZDhmYjZiNWI1NmQ5YThiMGI3NGIwNDM0OSB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjYgYzUwNTliMTJkZGM2ZDE4NDZiMzA1MDA1Mzg1OGRlM2I3M2VlNjM1OCB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjcgOWI5ODU2N2Q1ZGRlNTA3MDRhZThhNTZkM2FiZTA5YTE5NGU4Y2UxZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjggN2EwMzgwMjBjOGRkNjNlNmRiYWQyNmM2MzFjODRkNGExZjc0ZDhlNyBsZWdhY3ktdHJ1bmsKKzY1NzY5IGNhYmY5N2I4MjMzMDg2MWU1YjY1MTBiNGYyNjE0YmJjZWQyYjZlOGYgcHkzaworNjU3NzAgYjM3N2MxNDczMjNlYmY5ZTA4NjcyYjIxNGQ2NDAxZmUwZTM1ZmZiNCBweTNrCis2NTc3MSBlNGM5OGQ2MTU3YzcwMTk3YmI0YWM2YTRiNDJjZjVkZGNiZGFjOWM1IHB5M2sKKzY1NzcyIDcxYjUzZDZlYTdhNDVmZGI1ZTBkYjY1YWVhMTUzMjJjNDk0ODEyMDkgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzczIGQ3ZDcxMzlkNTg0MDZiNjU1Y2E5YmMxODJiYzQ5MzFmNzJlMTEzZjUgbGVnYWN5LXRydW5rCis2NTc3NCAxZDg4YWQ1ZjRkZWYzMzYzZjI0ODUxN2VkMzk1MDgxYTBkZGI4MzFiIHB5M2sKKzY1Nzc1IGMzNmNjZjJhNzFlMTZlNjE5NWZiNzczNGQ2YzMyMWRmY2FlOTJlZWQgbGVnYWN5LXRydW5rCis2NTc3NiBiMjlkZjM2NDJiOTdkM2I2ZmM1YmUxNTAwMDA3N2RjN2Q4MTRlMGI3IHB5M2sKKzY1Nzc3IDQwYzA3YTYxZTFjMjZjMWZmYTA0ZGQxOTUyYjk0NTU3MjE3ZjQ0ODggcHkzaworNjU3NzggMTJjM2EwMzM4OWU3ZjNlMjBhN2VjODJiNWM2NTIyYWVkZmUyYTljNCBweTNrCis2NTc3OSA0OTIxM2Q0MjljNjgxYTAxZGFlMGIzN2RhOWFlOThiOTlmMTdmOTEyIHB5M2sKKzY1NzgwIDJiZWJjMGE2ZDA0MjgwZDBjNzMyNjdmNWRkYmY0NzkyNDcwZTc5NmMgbGVnYWN5LXRydW5rCis2NTc4MSAwNjg5MWFlYzQxZGU2ZTY5YjcxYzU1NWViYmMzMmU4MjMxZDUxMjBhIHB5M2sKKzY1NzgyIDE5NWRhNmQwYzc3YzEwNjhlMjhhZDI5ODg5M2Q5OGM5ZDMyZTk3NDkgbGVnYWN5LXRydW5rCis2NTc4MyA4MGE5ZmY1OWViMDIwMmIyYzJjN2UzYjUyNTE2OTY3YTQ4Y2MxODY2IHB5M2sKKzY1Nzg1IDUzMGI0Y2IxOTQ0MjVhMjNhNDZhYzI4YzIxNGJmNTFkZGY5YzI5NjEgbGVnYWN5LXRydW5rCis2NTc4NyA3NTY1ODU0M2I5MTliZjUzNTQyODMzYzBiMjFiOTdiODc0MTBlMTM4IGxlZ2FjeS10cnVuaworNjU3ODggMjJhZDg4ZTVjMDAzYTQ2ZDM0ODFlZjFlNGQ2MzMwM2UyM2M0MmE0ZCBweTNrCis2NTc4OSA0M2ZhNTBiOWViMTI4ZmQ1ZjcwMmM1Mjc0MDg3OTNkMTc5Y2E2NjFlIHJlbGVhc2UyNS1tYWludAorNjU3OTAgNTUyOTUzMzA2ZDM0MmM1OGU2ODFjNzZkODc1MDc4NzA1N2U4YzUzOCByZWxlYXNlMjUtbWFpbnQKKzY1NzkxIDhkOTlkMDNhMDZlNDRhNzc0N2MxZDFjMGY1MjU5ZjhhNTk4MTE0YTAgbGVnYWN5LXRydW5rCis2NTc5MiBiMGM0YWI4MjMzZmE5YjVjZmJmY2JkODA1ODA5ZTk3ZjRlMmJkOTg5IHB5M2sKKzY1NzkzIGQ3ZmJlNzNmZTdmNzQ0NzhlZTcyNzUzMTVlNTFhNjRiNWNiYTMyMjYgbGVnYWN5LXRydW5rCis2NTc5NCBkZDk5MmI2NDAzZjRjZmRiODAzNWE0OGFmZGQzMzU2ODM0ODQ0YzhhIHB5M2sKKzY1Nzk1IDYyYzY5ZDg4ZTk4NWQ3Yzk3YTcwYzdiYTkzZmVlYjFlNTZkMGEwYWIgbGVnYWN5LXRydW5rCis2NTc5NiBlZGI1YTg1OTM3NDllNmNlYzlhZjgyNmIyMGMwODliMGM0MzAyZmM0IHB5M2sKKzY1Nzk3IDg5NTM4ZDVmYjgxYWRiMmZiMjA0MDM2YWJkMzdiYTJjMTQ0N2YzMjEgcHkzaworNjU3OTggOTlhMmVlNGUzYTA1NzNjMGY0YzUyZTRhNzA1Y2E4N2JiZjUxMjc1YSBsZWdhY3ktdHJ1bmsKKzY1Nzk5IDk1ZjFjN2RiODkyM2Y0OGJmNDRjNDc5NmE5YTc4Y2Y5N2E1NjdlMzQgcHkzaworNjU4MDAgMzUxYWQ2ODQwN2U3ZmYxZjQ1MTVkYTM5MzgwNjBmNTE2N2NiMThlOCBweTNrCis2NTgwMSBmMjg3YmViMzUyZmUxNjM5MzkwZmVjOWFhMzA0NzY0MTVmYmRmNTdhIHB5M2sKKzY1ODAyIDU1MDg4NjJhMWRlNTA1YzgwZDNiMzZmMmYwM2Y5MmY3MzRhY2FiNDYgbGVnYWN5LXRydW5rCis2NTgwMyA1YTg3YjBkMWNlOTFlMThhMzA1NzhkZmY3NjlkY2ViNDc0MTQ5MTFhIGxlZ2FjeS10cnVuaworNjU4MDQgNjAxOTRhYjJiNzU2MjViNGQzMjlhZTc3MWZiMDFjMDBmMWUxODNlZSBweTNrCis2NTgwNSAzMTk1YmQ2YjZkZDdjZGFlZmJlOGRmMTQ1NGQ4ZDg2NGMxNjlmMzM0IHB5M2sKKzY1ODA2IGZjOTBiNTgxNTE2ZWJkOGExOTIzMTgwZDRkZTQ3ZWQ5ZTQ3NzUyMDAgbGVnYWN5LXRydW5rCis2NTgwOCAxYTQxZDQ1NmQ4MDJiZmU0MTQ3NTRlNjJmNzBhMWY0MmIxNjI5ZDg1IHB5M2sKKzY1ODA5IDIxMTkyNzE0N2M2MDZlMmQ3ZDg1MDcyNzQ5NDc3MzlhNGUzYzY5M2MgbGVnYWN5LXRydW5rCis2NTgxMCAyMjU0YWE4MjRkNGRhM2JmZTNlMDk1MWM0NjFmOTNiZWIzZTViYzI2IGxlZ2FjeS10cnVuaworNjU4MTEgNzUxN2JkY2M3NjlhMWUxNzUwMGFlYTdiMmMxMjc4NTMzNjliYzhmNyBweTNrCis2NTgxMiA0MjA3MjE5YWNjN2E4MDM5YzNkZTQ1OWM1ZjczMzJjYWUxOWYyMjFlIGxlZ2FjeS10cnVuaworNjU4MTQgNGI0NTY0YmViNmRhMmUwYjEzNGY5M2FmMDFiNGYxMTNiZDU3ODRiNiBsZWdhY3ktdHJ1bmsKKzY1ODE3IDE3ZjAxMDUxN2IzMzUwNjA1MmU2YWNjMjg1NzkzNjc2N2E3MmZlODUgcHkzaworNjU4MTggMWQyOWU1M2NlMmFmNjY3ZjYxMGE1NWRlYjZlYWFlYjc3OWJkMTc1MCBsZWdhY3ktdHJ1bmsKKzY1ODE5IDc2NjIwMDEwZDc4Mjk4NjM3ZmJkNjNkMmRkYjQ0NWNiYWRhNTMzMjIgcHkzaworNjU4MjAgNWMwZTVmMmNiYzdkODljMGNiMGYwMDJlNzA4NzdiZWQ2ZDZmN2RlNyBweTNrCis2NTgyMSAyNjE0ZDUwMWRlOWFlZmMxN2VlNzg1MGNmM2M0ODU1Mjg4YWU0ZWUwIHB5M2sKKzY1ODIyIGUxNDNhOGYzNTI0MTdjZjA0OWNjOTBhZDE1MjBkMjFmNmViOGJiZmIgbGVnYWN5LXRydW5rCis2NTgyMyA0NzFhNGE4OGY1MWM2NGMwMzIzMTBhNzlmMTE4MmE4YjkzNzQ1ZjMzIHB5M2sKKzY1ODI0IDAyNGIyYjk4NDg2Njc2Y2M0MWI0ZTdjNzYzMjc4NzNhODdlN2M1M2MgbGVnYWN5LXRydW5rCis2NTgyNSAxZmRmYTM4MmFlMTMyZTEwM2I4NDk5YzdkODY1YTc2Mjk0NGVkMDg3IHB5M2sKKzY1ODI2IDlkMTg1NmFiYTlmMjQ5M2RhODE5NzVjOTYzOWQ3ODcwNjUzZDFmM2EgbGVnYWN5LXRydW5rCis2NTgyNyBkNjUzN2EzZTFiNzNjMDM5YmMzZGZjYzM2MTAxZTQ0MDhmNWMwZTMyIHB5M2sKKzY1ODI4IDI4ZDkzYzljM2EwMzAzNWNiMWQzYjUxMDZjNmFkYTZhMTUyMjlkY2UgbGVnYWN5LXRydW5rCis2NTgyOSBkYjU4OTI0MWU2Zjc0Yzg5NTVmNTYwNjZmNjhmODA2M2NjZjEyYzkzIGxlZ2FjeS10cnVuaworNjU4MzAgNmRkYTAxNjQzMTA2Y2ZiMmQyNzBiMGI1ODk5YWM4N2Y2OTQ0ZmZjMSBweTNrCis2NTgzMSA1OWQ5N2EzZWUyMTllNDYxNWM2MGEzOTljZTdkMTMxNTlmN2JlZWQ4IHB5M2sKKzY1ODMyIDkyZjRiYjM2NjM3YzM0ZTgyOTkzNmRhYmM5NWYyYzUwZDAxNGQxYzIgcHkzaworNjU4MzMgOGQ4ODM1MDU1M2MzZjVhNjc0OTUyOTIxM2E0NWRhM2JlMjQ3NWU0YyBweTNrCis2NTgzNCA4YTdhMjU0NTljNmYwMjE5YTIzOWVkMTIyMDU5YTBlNzdjYTUxMDk4IGxlZ2FjeS10cnVuaworNjU4MzUgZTEwNzEzYjJkNTQzMzhkOTg3OTEzNGE4OWZkZjkzOTEzOWQyMzhhMCByZWxlYXNlMjUtbWFpbnQKKzY1ODM2IDMyOTE0OTA0OGI5MGNjOTU2NThlMTMyMWNmMDJmM2I3ZjNlMTMyN2YgcHkzaworNjU4MzcgMmJhYzBkNDIxOTI5ZTQ1NjllOWFiYWUzNTI3NTY5ZDE1MDNhNDNjZCBweTNrCis2NTgzOCA0MjhkMzg0ZWQ2MjYzNDk5NmRlNWJkNzQ0OTQxMDIyZmMzYWU5ZjcyIHB5M2sKKzY1ODM5IDVjMTA1ZjlhNzhlOGUxZjk5OWNlZTExMmQzMmRiYmMzYTU3NzhmMmIgbGVnYWN5LXRydW5rCis2NTg0MCA5YTg5ZmI1ODA5OGI2YmE1Y2ZlMmQyZjNjNTE4YjU5ZjZkY2Q0YTJlIHB5M2sKKzY1ODQxIDU0MTM4ZWUyMGU1N2MyZTlhZDJkZmJjNDE4NjU1MWM3NTJkYjE4NzIgcHkzaworNjU4NDIgMDI3NWQ4MWUzMWQwOWNiZTM3YWM5YjJmNTE5ZjVkYmJjNzg2ZDVmYSBsZWdhY3ktdHJ1bmsKKzY1ODQzIDI5MWE2ZjIyMDM2MDcwYzVhMDMwNDFlMTk5MjExMmM5MGMzOTQwN2MgcHkzaworNjU4NDQgODNmNzc5ODUyNGYxYzcwMTlhYzEwOTkxMzEyNGY1YjA4NzlhNjE2YyBweTNrCis2NTg0NSBiMGUzYWM4NmNkZDgwMmEzMWY1ZTZmMjUzYTA3MTFkMzAwMjZhN2YxIHB5M2sKKzY1ODQ2IDdkNjQ4MDZmZWIxNTYwOGQ2YWYyZWVhOTgwMDc4MTc3MGQ1YjQ2YmYgbGVnYWN5LXRydW5rCis2NTg0NyA1ZTNmYWFlNmVmYzY3MTlkNDRiYzBlZGIzYjI3YmMzMjEzOGRmNTVjIHB5M2sKKzY1ODQ4IDE0ZjJhNGNiNTdkZTA0MzU3NmI4NzhiMjZmZDUwYTE4NmUyZTg0NGEgcHkzaworNjU4NDkgN2M4MWQ1YWE1ZjQxN2QwODU3NzY4NTJjMjJmY2QzYmQ3OTYyNGM2YiBweTNrCis2NTg1MCAxOGFhOTE5ZGYyNDVhYjlmZWYxMTg2MjllODFmYzJmZjRmY2EyZWU0IHB5M2sKKzY1ODUxIDk0YTdmYjMzYWZlYTUyOTAwODg3ZjcxMDg1NzA0ODZlNDg1YWQ1MGIgcHkzaworNjU4NTIgNDNhODg1ODQ0YWQ4ZDRlMTUxNmYwZGIyYWFkZWExMGQ0ZjQ0ZjhjMSBweTNrCis2NTg1NSA0ZGYxMjJhZGE3NmZhZjQ2ZGEzMGExODJkZTJiN2VlZmE2YjVlNThmIGxlZ2FjeS10cnVuaworNjU4NTYgODNlYjJhYWE1ZmFhYTQ0NTljYTY4MzA3YTI2M2QzNmNkNzBkOTMxNSBweTNrCis2NTg1NyAxNGU4MTliZWVlYWI4YzA0YWM2NGNlNjE1YzdkYTNkZDI2ZTEyNTFhIHB5M2sKKzY1ODU4IDIwOWE0NTgxYmQ5MTlhMDM1NDZiZmM5ZDAzN2ZmMGRmZjg2MDZjZTEgcmVsZWFzZTI1LW1haW50Cis2NTg1OSA3ZjAzOGE0NzAwYjFjMDgwNGVjMzk5NmVhYmM1Y2JmYjQxOTk5YzU5IGxlZ2FjeS10cnVuaworNjU4NjAgODNiMmQwN2I0NzViNTAzMDdiNDhmNmFmNTczOWUxNmJhYjY4NThiZiBweTNrCis2NTg2MSAyNDgwNjIyOTY1ZTYwMDhiNzhkNTA3NGMwODcyZGQ5NWVmZWY5OTU3IGxlZ2FjeS10cnVuaworNjU4NjIgNzUxMWYzZTY3MmEyOWYzNzI5NWRlNTNkODFlZDUwY2ZkNDEzNjIzYyBweTNrCis2NTg2MyBlYTNkMTNjZDdjMWU2YjZmNWU0ZGU2NzM3ZjY3MmMzNGU2MDU5YzFkIHB5M2sKKzY1ODY0IDdlYTgwNWQ4NzllMWFiNTdjYjI4NjIxODhhMjRkMTE4OTFkZTM0NTggbGVnYWN5LXRydW5rCis2NTg2NSAxYTA1OWFhZmU0OWYwZTRiOTk0ZWMxODQ0NzQ4ZWRlNGUzOTQ0ZDU4IGxlZ2FjeS10cnVuaworNjU4NjYgYWE2MTMyMDkzMzJkNTFhYjZlYzYyOWI4MmFlZjBkNzFiY2FjOTJlOCBweTNrCis2NTg2NyAyNWYwNmE3MDNmODlhOWU4OTZmNTUwODc0ZGFkMWNkM2U3NDMyZGM4IHB5M2sKKzY1ODY4IGJkMzdhMTg2NjM4ZjI4M2Q0M2RjYzVkNDNmYWMzNzRkNTllNjBjYzAgbGVnYWN5LXRydW5rCis2NTg2OSBmMDRiNzAzZjJkZGRhMWIxMTdhMTk1NTZiMDI5ZGU0Zjc2OTQxZmY3IGxlZ2FjeS10cnVuaworNjU4NzAgOTdhMjRjNjA5YzJlZTg4MDQwMDk4YTRjOGYzYjljYWJhMDJhYTVmOSBsZWdhY3ktdHJ1bmsKKzY1ODcxIDZkMjJlZThjNzNjYTM0OGMxMTRhNmZiNzkzMjJmZmI0ZDZiY2NlZTEgcHkzaworNjU4NzIgNDlmNTJlMjg1YTY0MDJiY2Q1ZjlkMGU1NTgwMDlkZDQ1YjdhZjJlYSBsZWdhY3ktdHJ1bmsKKzY1ODczIDJiODI5ZmZhNDgxYjU3NDFkMGUwNDgxZjMwNGMwNTk1YzNmODE2MWEgcHkzaworNjU4NzQgOTZhNGNkYTY1YzU1MmZmYWQ4M2MzYzhiNWNiNDkzYzhkMTlmZjQ1ZCBsZWdhY3ktdHJ1bmsKKzY1ODc1IDUxMDkxOTA3MzExOWY5MTllMjYyMzhkZWYxNTkyOTg5ZjA3YWVjZDAgcHkzaworNjU4NzcgNmFiYWRhMDVjMzEzMTM1OTEyNDZiMmFmNzhhMGJlNDdlYzY1ZDMyZiBweTNrCis2NTg3OCBmNDlkOTMxNGQ0MzkxMTFhMWZjMGIyNzVjMzc0OGJkMmU2MGJlZWU3IHJlbGVhc2UyNS1tYWludAorNjU4NzkgZWYxOTU1ODQ1NTA5NGZjMWFhYjgzYzBiZmYwNGI4ZDFhZTNjOTNlMSBweTNrCis2NTg4MCA0Yjg4MDY0NTYwNzg3MWMwMDVmOTA5YWFmZTIxMGVhYzhkMGZkYjY3IGxlZ2FjeS10cnVuaworNjU4ODEgYzc4MjNiMzUxZmJjYjc1NjQwMjkwYjk5ZWI5MDBmYTJhZTllMWI2MiBweTNrCis2NTg4MiA4MmM2OTZmMDQyNGE0N2U0NmE4YTNhOGI0MGM4ODUxNThlMGQ4NTFlIGxlZ2FjeS10cnVuaworNjU4ODMgOTllNzgzZWM3NzgxNTg3MWM2N2FjYjIxNjdjNjdkOWQ2NDFjMjJjMiBweTNrCis2NTg4NCBjMWE3ZmRiMjQ2MjhmMjQzZTFjZjMyZWIwMTc0MTg4OWMzMmYzMTU0IHB5M2sKKzY1ODg1IDUwNGU2ZDAzMGU4NGM3ZGZjNDU5ZjRlYjYyNmFiYmE2YjRlZjJlNTMgbGVnYWN5LXRydW5rCis2NTg4NiA1MDEyNTZjNTRjODRhNjQ4NTFlOGY2N2U2YzkwMTFjM2U1ZDg1MjU2IHB5M2sKKzY1ODg4IGY3YTYzOTZiNDk2ZjAyMmFjOTk1Njg2YWM1ZDE5YjU3M2RiM2VmMmYgcHkzaworNjU4OTAgZTc4MDI0YWYwY2YwM2E0N2ZkOTc1ODVmOTE0NDM2ZjhmMjIyOWYzMCBweTNrCis2NTg5MSBhOGY5OGE3MjczNzEyMTIyYWI5ZTc0Y2M3Mzg2ZTViYzczYjA3Nzg3IGxlZ2FjeS10cnVuaworNjU4OTIgYmVlNDAwMzM2ZmQ1YzdhMDQzNDA3ZDc5NTQwMmRkZThhZDhhYTIyNCBsZWdhY3ktdHJ1bmsKKzY1ODkzIGFiZGU0ZGIzMDdhNTljNTYxMTgzZGU3ZmVmY2QwMzY0OWMyNDkzM2EgbGVnYWN5LXRydW5rCis2NTg5NCAxYWYyMTEyMzY5MDQzMGRlMDcwMTJkYmQwODE1ZjI5YTk1YWM3MjNiIGxlZ2FjeS10cnVuaworNjU4OTUgOGYyMTU2YjE1YmI4ZTY5MGNiNDM2MjA2NzkxZTFmNmY2MzkxNTZlNiBweTNrCis2NTg5NiA2Y2Q3YjE4YmI3NDJhMzZhMmM1NGZjZTE1ZTg1Zjc3YzcwMTE0NmY5IHB5M2sKKzY1ODk3IDNhMTFlNzliOTQ3MTVkZGQ3MTAzNjVhMzk4ZWY2MTI3NTIwOGZjN2UgcHkzaworNjU4OTggMGZlNmNiMGMzMTBkNzI5ZGFkNTBiMzY1Y2I0MWFkNjFlOGUxOGRhMCBsZWdhY3ktdHJ1bmsKKzY1ODk5IDZkNmQzZTAzNzU1MDNjZDI1YmU3MjczNmM1YzZlNTg1ZjAwYWI5MWQgcHkzaworNjU5MDAgZDQyNjI5MTg1MzgyZWIzZDdjZmRhMWE3MGFmMzhhYjM0YTY2MmU1OSBsZWdhY3ktdHJ1bmsKKzY1OTAxIGMxMjVlNzVkMjFhMDQ4Nzc0ZjY1YzVhN2M4NGU2MzkxNzM2MzZhYzAgcHkzaworNjU5MDIgYTM2YjZjMWNlYzU2NzgyMjY5NjcxODQ2ZGY2NDcwY2Y3NDM0MDgwYSByZWxlYXNlMjUtbWFpbnQKKzY1OTAzIGU4OTQyMDRhZGZiZGFhYTI3ZDA1MzllYWQxNTkzNjhiYmMyNTA1NjQgcHkzaworNjU5MDQgYWU1YjczYzUyMDk3ZTZhMzQ2NmZkNWUwZWZlNDhiMTkwZTdhZDcxNSBweTNrCis2NTkwNSA1MWYyZjhmZWU1YzQ1MGQyMWZmNmFjODgwMTVlNzU3NjgzODJmMDExIHB5M2sKKzY1OTA2IDZjYzg5YzYwZjc0ZDZiOTc2NWY3NmU5NTRhNzUzMzMwNzc3Yzk3Y2IgcHkzaworNjU5MDcgNGY1MDIyODIzMTk5MGVhMWRlYjliODkzNzZjMGEwODU2MGYyNGJhMCBweTNrCis2NTkwOCA2N2NiMzM4ODAzNzdiYzNhZGUxYTU4Yzg5NjJkNmFlMjNlZmU1MDU2IGxlZ2FjeS10cnVuaworNjU5MDkgMTFlNzJlYmY5MDZhZWZlYmE2ZDgxM2Y1Mjc2NjhlY2Q5ZjdjYjMzMyBweTNrCis2NTkxMCAxYmU3ODkwY2Q3NTk3ODAxNmVmZDc1ODllYzY0Y2VkZmMxM2MwOGQ0IGxlZ2FjeS10cnVuaworNjU5MTEgYzAzMDI0ZGI4MDFmOTZhZDY1OTQwMTcwODA4MjhkM2I3NDBjNDA1NCByZWxlYXNlMjUtbWFpbnQKKzY1OTEyIDA0MGQ5NTgwNTAwY2RiNjcyMzk5Njk4NjBhMzhhOWU3MDFkMTRkODIgbGVnYWN5LXRydW5rCis2NTkxMyBlOTk2MTRjYTAyMDRiN2U2MDMxYmZjMjI3Zjg4MjY0ZDcwYWVlYmJjIHB5M2sKKzY1OTE0IDFjYjkwOGEwNDNiM2YwZjkzODM5NzdlNTk3Y2Y0YTZlZWI1YzAxNDEgbGVnYWN5LXRydW5rCis2NTkxNSA3NjA4YWZlMTFmYjk2MDQ5ZTdlNDE2ZmMwY2JmZjRiYWQ3MjExYjFjIHB5M2sKKzY1OTE2IDgxMzNmYmI3NDU4NzU0YTcyNWU2NzI1MDM2MDNiYjJlZDQ4MTgxZTggcmVsZWFzZTI1LW1haW50Cis2NTkxNyBiMTk5ZjM0MTllNjU4MDJiOWRkNjcyYmRmZDc5OGYxNmI2MGRhZjcwIGxlZ2FjeS10cnVuaworNjU5MTggYTE5ZDY3ZDc3YjIyZjc4N2JlMTY1YzUyMDk3OGUyYjZiOTlkYTYyOSBweTNrCis2NTkxOSA4OGNhNTE3NTQ2ZmQwMjM1N2NmNzIzM2RjOTQ3YmUwY2YzYjQ1MTU3IHB5M2sKKzY1OTIwIDAzM2Q2M2JmNzA4ZWEyYWQ0MWM1MmQ0Yjg0MTQ2ZGEyMzFmYTljNjggcHkzaworNjU5MjEgMDEzZDRkODQwN2NiOWY2OGU3NjU2ZDExZjYyYjc5MThhOTUyMWU0NSBweTNrCis2NTkyMiBjNjI4NjJkNzNmOWVjNjRkNjU1NDk0Y2YxZjYxNDQzNDQ2ZjJkZWEyIGxlZ2FjeS10cnVuaworNjU5MjMgNzMxNjQ1NjViOTIwZTIwNTk2ZDMzYTk5M2I5OWVkN2E3OTM3ZTc2NSBsZWdhY3ktdHJ1bmsKKzY1OTI2IDI3ZDE5YjY2NTAzNTc5ZDhiM2E0MWU1MmFjYWI5MDc5OWYyYmIzZGYgbGVnYWN5LXRydW5rCis2NTkyNyA1MDllMzBhNzk2OGUwMWJlMzI5ZWMxMjE1NDBiM2U3NTVmYzRlNTY2IHB5M2sKKzY1OTI4IGM0MTFjZjY5NDI4OTZjYzIxNjA4OWE2OTUwNjQ2ODQ0MzIyZjJlYTQgcHkzaworNjU5MjkgMDFiOWUxOGQ2OWFjNDQ5ZWU5NTlhYjU4YTFhMWE5ZmRjZjhiMWI0OSBweTNrCis2NTkzMiBhMGFiYWZmOTdlMDAxYTRiOTBlNDZkZjM2N2Q3ZjEyYWM1MGRiOWVlIHB5M2sKKzY1OTMzIDk1OWQxYWE4YjU4YWViZTMyNjMwZWYwMmJkNDJhZWFmZWYxOTYzM2IgcHkzaworNjU5NTggNTdhODczNTY0N2NmODc0NWQwYjYzMjY1MGFiNDg0NDMwMGNlNjQ4MyBsZWdhY3ktdHJ1bmsKKzY1OTU5IGE3NzAyMmRjM2Y2MWQyMjFkMTU4ZmE5ODE3ZjQwZjI1MjdhY2ZlMzAgcHkzaworNjU5NjQgZTM5ZDQ0YWRiNjE4MDZjOTY5MmMzYzBlMGEyMzI0NTY4N2E3NTM0ZCBsZWdhY3ktdHJ1bmsKKzY1OTY1IGE4ZDY5YzFhM2Y0ZWZkMzg3NjhhMzc5Mzg2M2JkZWUzZWNkNzI2NmEgcHkzaworNjU5NjkgNGZhYWJiMTg1NjJjNjNkNzI2ZDU2YTdjMGUwY2Q1NDVkOWYwOTYwNyBweTNrCis2NTk3MSA0YjFmMjYyY2ViZGY0MDAzMjcxOWYyNTM3ZjllOGIwZjEwZWZmNzM0IGxlZ2FjeS10cnVuaworNjU5NzIgMmRjNjQ2OWZjNGM0ZDRiM2M2YzczOGY4OTQ3NTFjMzRjODNmMTJjYyByZWxlYXNlMjUtbWFpbnQKKzY1OTczIDE5NDRkMzEwNDBlMzA2NjFiM2JjNmRjYzliYzAzOGIwNGNjMzNhNWYgcHkzaworNjU5NzUgYWZiZmQ4ZjIxNGRkMTMzN2Q2ZDE3NWM4Y2ZmYWZhZDJlN2E1MDFmMSBsZWdhY3ktdHJ1bmsKKzY1OTc2IDJhYTc5YWQ0ZWI4NTJkZGRkNmE3YWE1YTA1Mjc3ZTg5ZjA3YTc5MDggcHkzaworNjU5NzcgYmNlMDNmODdmNjVkYjFhMTA0NGExNGM5ODdhYzhhMGMwOTBmNTMxNiBsZWdhY3ktdHJ1bmsKKzY1OTc4IDQ2YzFiY2M0YzFkMzAzNzQwNTUzYWI2ODY0YmMwYWY1MmQ4NjMxNWUgbGVnYWN5LXRydW5rCis2NTk3OSBkOTUyZTc1M2M2MTFmNzVhYWNkZjU3NTJjNWMzNGU1NjUwMzQ5MjNmIHB5M2sKKzY1OTgwIDc0ODk5ZTZjODdhNWM1ZGE2YWViOWMzZTVlODE4MjU5N2FiZDA0ZjMgbGVnYWN5LXRydW5rCis2NTk4MiBmOTcwYTRmNzU2MGZmYTIwZTk0YjU1YTU4OTY3ZGRkNGZhYTg5ZjY4IGxlZ2FjeS10cnVuaworNjU5ODMgZTNlNTA3MzUwZWQ0ZDRkZTg4ZjFkYTE0M2RhMDE2MjQzODZmYjFmMyBweTNrCis2NTk4NCAyMDQ0MzFkNDRjZGM0OTI4NGMxYzNjZGQ4MTViZTdlZGNmNGY1OTk2IGxlZ2FjeS10cnVuaworNjU5ODUgY2ZkNzlhNGMxNjA0MzNkZDU0ODU2YzQyOGVmZDM0MWQ5NzVjZDExOCBweTNrCis2NTk4NiA3NWY2NGZkMWYxMTM3ODhiZWM0ZmU3ZWNlYTdkZmRiOGViYWFkZjFiIGxlZ2FjeS10cnVuaworNjU5ODggNjViMmRkNDZlMTcxMTg5N2I5MzEzY2JjODg0MWU5NzMxMjVkOGUyYSBweTNrCis2NTk5NCBiNTIxMzgzYjgxYTcxNTcxNWVhZjc4OTU3M2Q5OWE3NTNlZWE2YjhjIHB5M2sKKzY1OTk1IDk2OWVkYzNiNzA3ZjNiZmE4NDNiMTU3OTYyZWIyYzQ5OTQ4YWZjNmIgbGVnYWN5LXRydW5rCis2NTk5NiBlN2I4NTg5MGU5YjEwNzM1MDRkMTVkYzEzMGIyNTE5OWU3YmY2ZGM3IHB5M2sKKzY1OTk4IDU4N2NkNGY2NmMyZGNkOTVmYmM5NTE0MWNmYzY1ZjcxZjViODUyYWIgcHkzaworNjU5OTkgZGZlNTQ2YjY2ZWVmZDc1ODNhZDUxNmNkNjcyYTA3MTRkYmVjNjFjNiBweTNrCis2NjAwMCA3NmU3MWNlY2M0ZDMxM2NiYzBhNmYzZTI1MzMyODgxNTllODc2MDEzIGxlZ2FjeS10cnVuaworNjYwMDEgMDdlYzcyY2YxOWM3ZDYxYzhhMmQyNjgwZWYwMjk1OTlkZGRiYmViNyBweTNrCis2NjAwMiA3YmIxYzYwZWFmNjRmNTllNWJjZWM4NWY2MjY2ZjQyZjZmNzI3NmFmIHB5M2sKKzY2MDAzIDg1YzA4Y2YwOGIyYjVlZWY3NTNkNGVkZWMzYmYxOTc4ZDQwN2RlMmIgcmVsZWFzZTI1LW1haW50Cis2NjAwNCBlMTQ1NTJiNzMxN2JjYzk1NTk0M2JhYmRmMzU5MjMwNmU0YjJlMDE4IGxlZ2FjeS10cnVuaworNjYwMDUgNjgyZTlhNDJjMTVkNTNiNDBmMDJiZjM0YjJiY2M3Nzk5NjNlOTE0NCBweTNrCis2NjAwNiBiMTY4MmM2OTNiOWExNWQ4NzlkNjc1NTIxZjYxZDVkZDNkOTdhNzQzIGxlZ2FjeS10cnVuaworNjYwMDcgNWM3NWEzM2VmNWIyNzYzNjM3ZDg4ODNjNWQxY2E2YzU5MjdjZTRlMiBweTNrCis2NjAwOCBkMmJhMzZhN2E3MTI3NDVjYjhjNTcwMTM3NGVmYTI2ZjdlYThhOTYxIHB5M2sKKzY2MDA5IGFmYjk4MDhiMGYzMGZhMjViMzY2OGM3NDg1ZGNiMjFiMDEwZTA0NDEgcHkzaworNjYwMTAgYTI3MjAzNTNmMGQzNDlkNzQxZTliNThhYzIzZDJjMWMyYWU5YzVmNCBweTNrCis2NjAxMSA5ODRlMWM2MDI5NzkyYzlmMjk0NTc0YWE2ZDNjNTY2ODIzYTE2MWZlIGxlZ2FjeS10cnVuaworNjYwMTIgMmE2YWU3ZThjN2MzNmUwMzNmMjBiYWYzNTk2YTZmNmI2YjMxMmQyYSBsZWdhY3ktdHJ1bmsKKzY2MDEzIDZlYTFhNzIwYjA1N2VlMWJjOGVmMTY5ZTA1NDNiYzI3NjFiMzM4ZDIgbGVnYWN5LXRydW5rCis2NjAxNCA3MGVkYWM4OTBmMmI2ZGY2MmRjOTMwOGY3ZTA1MTRhOGRiM2NiODdhIGxlZ2FjeS10cnVuaworNjYwMTUgYzAwMTlkNDU1NTFkYzc1MGM3NjY2ZjIzMDk4MzdiMWQ1Yzc4YmU1MSBweTNrCis2NjAxNiBjOTVmMzg3ZWQxZjQyNmNlNjUyMWMwOGI2NTlmNmIxOGFmMzIzZDdkIHB5M2sKKzY2MDE3IDU4ZDI5NWU3ODAwZjdhNGYyZmI3YTJmMjFmNWNhMWY5OGUzMGEyNWYgbGVnYWN5LXRydW5rCis2NjAxOCBkZTk1NGRkNjc5N2I2ZTY3OTQ1ZGFlNzE5OWM3YjEyMTU3NGFmZmY5IGxlZ2FjeS10cnVuaworNjYwMTkgODgxMTk4M2RmY2FmOGIyMjZmNDM2NzNkM2Q4NjQ1MDU2MWRhZGM2NSBweTNrCis2NjAyMCAxYTQ5MjJmYTUxNjA2NTkyMWFjZDA3NDg3ZmNlYTIyZmM3NTNiOWIyIGxlZ2FjeS10cnVuaworNjYwMjEgNjc4YTBmMGU2MWJjNWQ2YmM1MjYxZWM3M2I3YTU1MTQyNmJjYTQ2OCBweTNrCis2NjAyMiAyYTQ3YjNiYjExZmQ4YmQ5ZWE5OGYyZTY3MTU3MDNkOTIwMjlmYjZiIHB5M2sKKzY2MDIzIGRmNjI0ZGY2ZWZhM2NkYTA0MWVhNGM0YTMwYmZiOTVmYjRkOGE1NGIgbGVnYWN5LXRydW5rCis2NjAyNCAzZGM0ZGZhM2ViYTE2OGNmYmE0MDE2ZjliZjdlMDM5ZDhjMzQyMzY3IHB5M2sKKzY2MDI2IDZmYWM2MzYxMzNmMDEwNmVlNGEyOWUxNDg2MjVhMjVhMDU5YjYxODUgbGVnYWN5LXRydW5rCis2NjAyNyA0ZmI3ZTdiMmM5NjJhYzA4NjliOWFkNGRkMjViYWYwYmM1ODY2OGQxIHB5M2sKKzY2MDI4IDllYjBjZDMwMzI2ZDhiNjU0NGJkYjBiYmZiYjk1YWNiZGI4NWZmZDIgbGVnYWN5LXRydW5rCis2NjAyOSBkZDE3N2Y1NzZiZThhOTVlNmUxYzhhOGExZWU5YTlkYTAzYjA1MjdiIHB5M2sKKzY2MDMwIDVhMjA1OTNhODE4ZmMyMzJhYmNmNjIzNTMxMjJmODY4NGY0MTA5ZTcgdGxlZS1hc3Qtb3B0aW1pemUKKzY2MDM0IDgyZjczYjBiNWEzMDhlOTgyYzUwMzIyZjlmY2RhMzk3M2I5ZjI4NDIgcHkzaworNjYwMzggNTQ4ZGNjYzQwMDhlZDkzNGJhZmFkNWY3YjcxMGNhNDJkYmJiMjFhYiBweTNrCis2NjAzOSBlZGQyY2E4OTRhNjdkYzZiNGY5Y2M5MmQ2OGZhNDVhNzc1OTUwMzM2IGxlZ2FjeS10cnVuaworNjYwNDAgMDNjMjNjNTA2NTRlNWUzYTYyYThmZWM2ZjRhN2ZiNGQxYjIxY2Y2YyBweTNrCis2NjA0MSA0ZGIxZjUwOTgxNzVhYmNjNTZlYWQ2ZjA1ZDg5MjFiNWMzZTRiYjJjIHB5M2sKKzY2MDQyIGQ2ZTg2YTk2ZjliMzUwODljYjJhOTc0NjA3M2QwNWM4YzBhYzZlMDUgcHkzaworNjYwNDMgZDAxYzFkNzY4ODQxNTM0MGUzMmI2YjczMTdmYzFmOTZhNzg4MDVkZCBsZWdhY3ktdHJ1bmsKKzY2MDQ0IDEyZDI3NjIwNzZiYWE2MTFmNzY5YmJlODA2ZmVkZDI1ODc2MDVmZWUgcHkzaworNjYwNDUgYzQyYmY5OGIyNjBmMzUyMDQ2ODQzODcyNTYyNDc0NDVlMDI1MzYwNSBsZWdhY3ktdHJ1bmsKKzY2MDQ2IGQ5ZmUyOWU5NWQ2MDE1Yjc4Mzc1NGM0MmRhYjc3MzcxMWE4NjUzYjcgcHkzaworNjYwNDcgZGU2ZmI5ZjM0NTEzMjc1ZDYzNmY1MDEyODQ3YzM2YTM2YzVjYTE5ZCBweTNrCis2NjA0OCA0N2E4MDFjMjlmMTNkNDhlNmMwZmNlNzRmZjk5ZDIzNDdiZGJlMjRhIGxlZ2FjeS10cnVuaworNjYwNDkgYWEzYzkwY2UxOTMyYmFlNzdjYTlhNjQ4ZDgxMWM4MTMxZjk3M2ZjMCBsZWdhY3ktdHJ1bmsKKzY2MDUwIGZkZDFlZTIwYWI4NmIwOTgwN2QxOWE0NDc4MTBkZGE2ZjA2MzlmNmUgdGxlZS1hc3Qtb3B0aW1pemUKKzY2MDUxIGYyN2NjZmRlYTgzNDAxMjAzOGNiYTA4MjdiMzZkNzQ3YjU5OTRmN2YgcHkzaworNjYwNTMgZWZjNDk4NjNjZDhmZjliYjM5ZDEzNmFlYjVlOGJkMjM5ZDAxZTI3YSBsZWdhY3ktdHJ1bmsKKzY2MDU0IDQ3MTkyZDBiNzMxZjEwNDk2ZjNlNjIzMmQ5OWI2NWE1MGNkNmM5MzcgcHkzaworNjYwNTUgNmNlYjdjODllNzc2YmE5MjQ0OTk3NjljNjk2OWI1ZTNiMDY3YTAxOSBweTNrCis2NjA1NiBjNTYyYzhkYWU0OWE2MDU4NzBlNmU4YWE2ZmE3YjhlMmVlOTE3Y2FlIHB5M2sKKzY2MDU3IDI3ZTE0MmQ5OWE3MTczOTM2YTY1OGZkYjAzY2VmODhjMTI2N2RiODYgcHkzaworNjYwNTggYmJmZmUwOTE0YzU2ZTYxMGYxMThlMTNiZWFhMDc5YjE5MThiZTE5MiBsZWdhY3ktdHJ1bmsKKzY2MDU5IDBjNjVjODAyNzUyYTJiODIwZDNlYjNiZGJmMGNjNjU3NjY2MjFiY2UgcHkzaworNjYwNjAgYThjNTM1ODBjNWVjNDcyMjVjMThmNGM1MWJhZmUxYzNkYjRhYjEzYSBsZWdhY3ktdHJ1bmsKKzY2MDYyIDMwODM0YjlhYTE5MzdmMWZmODJkNDg3NzQxMzEzZGE4NTA1MmEwYTggbGVnYWN5LXRydW5rCis2NjA2MyAwMTMxMzhjZGI4NzNiMmVjYzE3ZmE2YjQxNGNmMzRmNGE3MzRlZjhjIGxlZ2FjeS10cnVuaworNjYwNjQgMDNlMjE2ZGM4ZmVjY2I5MWE0MTI3NDI2MDM4ZGRjNzQwYjE3MDU4OCBweTNrCis2NjA2NSA1NmVkNDQ1ZmE2MWU2MDM0ZDQzYjI5Y2Q3MjUxOTU0NmYxOGIzYmY0IGxlZ2FjeS10cnVuaworNjYwNjcgOTZiYzU4OTZhMjQwNTUxY2RiNzY0MzZiZmNmN2I0OTc0MWI0NTFhMCBsZWdhY3ktdHJ1bmsKKzY2MDcxIGEyZjIwMjhiNzNlZDNhYmU1NjhhYjY5MGI0NmEwYzRiZTlhNDhlMGYgbGVnYWN5LXRydW5rCis2NjA3MiA4NGJkZDUzZTM5MDY0ODZkZWIxYzE2ZmYxZmUzODU3MzI0ZWYxN2MzIGxlZ2FjeS10cnVuaworNjYwNzMgOTYwNTg5ZDJhMTJkOWFkNDM3OGU1NzdjNzFmYWQ4Y2JkNmRlOGIwOSBsZWdhY3ktdHJ1bmsKKzY2MDc0IGZhN2I2MWQyYmIzZDdjYzdjYjc4MWU2MGZiYTkxNzJkNDJlNGQ0ZjUgbGVnYWN5LXRydW5rCis2NjA3NiAxMWQ4ZmEzYzg4ZDhlODM2ODFkYzNhZWM0MWJjNjFmZGY4MWJhMDdmIGxlZ2FjeS10cnVuaworNjYwNzcgNDhjNWViNTEzMzcwZDhmYThkNGUyZTQ5ZDljNTdhNWE0NDc2NjBiNyBweTNrCis2NjA3OCBiNTE1NjkwYjM3OWQ3ZGRlYWI1MjgzZWEzZTA1NzFjMzMwMGEyZGEzIHB5M2sKKzY2MDgwIGY2Nzk2M2NkNDM5NTNjYzFkOWVlMDUwYTFiMTVhYzhjNDI3OGVmOWMgbGVnYWN5LXRydW5rCis2NjA4MiBhMWQ5ZTgzYmM3NmRhM2FlZTI3ZGE0Zjk3ZGRlMmRhOTBmODY5MGE0IGxlZ2FjeS10cnVuaworNjYwODMgZWIxMzRlZWUzMjMyMjYwMDM3M2Y1NDhmNjg2YjM1YmY5MGRjMDc4NCBsZWdhY3ktdHJ1bmsKKzY2MDg0IDM2YWQ1ZTdlMzliNGZiZDk2Y2MxOTgxNGVkYzdlNzA2YTIyNWFhMTMgcHkzaworNjYwODUgOWMxNzVmODg2MGUyM2RmMzZlMThhMGQzMTgyZGEwZWVhNDhkMDhmZSBsZWdhY3ktdHJ1bmsKKzY2MDg2IDIyMWRlMTM5NDY4MTEzY2Y1ODkxMTFkODQ3MzI2NGMyYmIxM2Y4NDMgcHkzaworNjYwODggODFhMWExNTQ1MTcyMmI4MTk1ZjU3NzRhNmRjOTRkYzU1M2FkZmMzMSBsZWdhY3ktdHJ1bmsKKzY2MDg5IDVkYTZmMjFjZjgwNTk0MjFkMWQyNDY0ODRjZWRjYzRmOGRkNTViZmQgcHkzaworNjYwOTAgZmMxMWE5MDRmNmNkMTc5MGFmOTIwZTg0NjEyMzk4MTM0NWUzYjlkNyBsZWdhY3ktdHJ1bmsKKzY2MDkxIGJlZTZlYjc2Nzc0MjdmODNkYTk1NjZhYjY0YTRjYTcwZWM4MGUzYTEgbGVnYWN5LXRydW5rCis2NjA5MiA2MjRiNDRiN2NkZjI5MjE4NGZmNzQwMWI4MGQ2NzU1NGJkZDkxNWVkIGxlZ2FjeS10cnVuaworNjYwOTMgYmU2M2VjNzQ4ZWUwNjRhMjA2ZjNhY2NjMDJhYmIxYzE0N2EyZmJjMCBsZWdhY3ktdHJ1bmsKKzY2MDk0IDdlMTk0YjljYzBhMmI0ZDFmMjRkMGY0OWNlZGZmNWNmYjA5ZmJiYWUgcHkzaworNjYwOTUgYjRjMTRiNzBmZTBmODE5OWFjNGJmZDEyOTY5ZmJkNjYzYzA0YjNlMSByZWxlYXNlMjUtbWFpbnQKKzY2MDk3IDdiMzk1MDFiMGE3NjI0N2MwOTIwNmQ3MGViMzkzZTliMDgzZmViYTcgbGVnYWN5LXRydW5rCis2NjA5OCAxM2ZkZjk4ZWEyOTAwMTMwNzJlNzZhMWUwOTcyODgzYzQyMGM4NmFhIGxlZ2FjeS10cnVuaworNjYwOTkgMTc2YzQwOWZkNzQ3ZTgxMmEwNjcyZGRhYThkYWMwMDAxYWYwNTZlNyBsZWdhY3ktdHJ1bmsKKzY2MTAwIDhjZGE2MTVlZjIyYmI3NDhlMGVlMzU5NDQ4MTRlZDlhZjk4M2FmM2QgbGVnYWN5LXRydW5rCis2NjEwMiA1ZmEwZDMxYTY3MWI3ODEyYjBjZWY0ZTM5Mzc2MmE2M2ZiZjFjZTYwIHB5M2sKKzY2MTAzIDU3NjQ0MTUyN2Q0ZjdjYzNkYjcwNjkyZDM0NDZhMTlhMjJiMTE4OTEgbGVnYWN5LXRydW5rCis2NjEwNCBlZDU5ZjNiNjdiM2FlM2MxMTg3NGI4NzVlYjRjMmUzOWU2ODQzZjdiIGxlZ2FjeS10cnVuaworNjYxMDUgOWRiM2ZlNzgwYmZjNmExMDIwZTg0NmNlYWY1YTgwYzAyODhkMmVmMCBsZWdhY3ktdHJ1bmsKKzY2MTA2IDkyNTE1MzIyNTU3MGMzYjhlMjJjZTU4OTFkY2M5YjcxZjQ0NjkzYjggcHkzaworNjYxMTAgNTE5ZTA0NzU5OTFmNzZiODFkNTMwMTU4NDc1NjMxMDM5NTlhNmY5NSBsZWdhY3ktdHJ1bmsKKzY2MTExIDY5NmY1ZDg0MTlmMjA5Mzk1YjNmNjIxNzIzNDc5ZWQ2NTA5YzRlYjAgcHkzaworNjYxMTMgN2VjZWMxYjMwYzNmNDA1MzE3MTA1ZmQ4MzVkNThmMDE0MmM0YjNlMiBweTNrCis2NjExNCA5ODg2NjFmZmQxMDI5Y2IwMzdmNjI0ZmUyNDQ4YzEwOGNmODViOWJhIGxlZ2FjeS10cnVuaworNjYxMTUgNTFmNzk1Yzk1MzBlYzBiY2I0NDE2ZTlhOWM2YzBhYmQzMDU1YTFjYSBsZWdhY3ktdHJ1bmsKKzY2MTE2IGE1YTA3MWM4MGYyZDI1Mjk0ZTFiNDcyMzQxOTUwMmM5ODFiNTc0MjkgcHkzaworNjYxMTcgMTJmYjM2MjZlZTU5ZjE4ZGVmODI3ZTA1Mjk0ZDEyMTYzNGIxODRmMyBsZWdhY3ktdHJ1bmsKKzY2MTE4IDM3YTlmNjkwYTk0YTlhY2IzOTIzMjc1MTZlNDMyMzA1OTYzODU0NWEgbGVnYWN5LXRydW5rCis2NjExOSBiNTM2NWYzNDY0MGYyYzY2NGMxOTIyOTRlYjYwMzU1MjkxZmNlN2FjIGxlZ2FjeS10cnVuaworNjYxMjAgNjZlMWFmZDMzNDVmZGIwYmI0YzFmOTdhOWQxNGQwYzFjMGM4MThkNCBweTNrCis2NjEyMSAxNmMwM2Y3Y2JjMjIxZjk0MDVjMTM1OWJiMmE3M2ZmZDQ0ZjIyODkyIHJlbGVhc2UyNS1tYWludAorNjYxMjIgMzJjZTQwMmE3ZTNkZjIwYzBmNWNlNTBlOTM1NDg3NGIyNDBkYmNlYiBweTNrCis2NjEyMyBlNjAyMWFhZDJkZTJkNWVjOTk0ZjY3NjYxMDJkMWU1YjEyOGVlNWUwIGxlZ2FjeS10cnVuaworNjYxMjQgNjgwYjA3NmQwYzEzYTAzZjMzNGE2NzQ5ZmE0NDYzYTVlM2IxMTUxOSBweTNrCis2NjEyNiA0ZmM0ODBiZTFlNGQyYzY3OGEzOTJkNDNhMzlhNDg3NjJmMTlmOTM0IHB5M2sKKzY2MTI3IGJjNTg1YjRkNDYwNmI1MmMzYzdlNTFkOTYyZTVmZjE3OGY4YzhiNmIgbGVnYWN5LXRydW5rCis2NjEyOSA5ZWQzMjg3YmVlZjE4YTRiN2JhYmEwNDEwMWRiYzIyZGMzYWZkZjhmIHB5M2sKKzY2MTMwIGFiYTg1OThjNzg1Y2E1M2UzMzYyMWQwYThhYTRiYTM2NDE0OWNmMjAgcHkzaworNjYxMzEgMjM2ZmNmMjkzOWM3ZDUyMzg5MzRjNmUwZDgzMDA1YmQyZDFmNWQxNCBweTNrCis2NjEzMiAzYjk2MDgxMThmOGQ4N2I4ODExYjM3YTQ2YTA3NDkwOTUyNDkxZmY4IHB5M2sKKzY2MTM0IDhhMTA4ZDU0ZWYwM2NhYTFiOGQ3YmE4MjA3NjJkZjBhZWIzNTRiMDUgbGVnYWN5LXRydW5rCis2NjEzNSBkNTYzNjIxZDc2ZGI0Zjk0ZTc0NWViYzYyYjkyMTc4ZWEzM2RiMmNiIGxlZ2FjeS10cnVuaworNjYxMzYgY2QxODYzMDZmMzg1YWM4Y2ZiZTYxODc5ZjQ4NGNiMTFiZmYwOWQ1NCBsZWdhY3ktdHJ1bmsKKzY2MTM3IDhjNGY3NTA2NjFlYzM5NDQwNDlmMGJlNTA1MjBmNGQwNzE4OTgxZjkgbGVnYWN5LXRydW5rCis2NjEzOCA0YzE3NzBhNTVhODVlNWRhMzMzZTdlNGVkZTBhZTEzMDRjYjU4OGNjIHB5M2sKKzY2MTM5IGNhYTQxZTE2MWIwNDExZjQwNmM3M2UxOGU4OGNkODdmMTc1OTNiNDkgcHkzaworNjYxNDAgM2JkYzQ2ZmFlZjRkYThiMDZkMDcyOTVjY2ZhZDhjMDcyYzZjMTI3YyBweTNrCis2NjE0MSA0YjI4YmY1ZWUzOTNiNDNiYTQ5YmI4ZTg1NWM5ZDE2MDkwZDY1N2Q1IGxlZ2FjeS10cnVuaworNjYxNDIgOTllZTNiNzdiYzBkYjJmMmFlMmEzYTg3YjEwNTg0M2YwMDUwMTU5MCBsZWdhY3ktdHJ1bmsKKzY2MTQzIDE4OTc3NDNiMzE1ZGUyYWY1NGJiY2E3MDhjMmJhMjE3NTAxMGVlYzIgbGVnYWN5LXRydW5rCis2NjE0NCA0ZGE0Zjk2Nzk2NzI1NzQ0ZmMyZDQ4N2QyZjUyNWVjMzQzNDRiZmFlIGxlZ2FjeS10cnVuaworNjYxNDUgMzc3OWZjOWRmZTVmNzM4OTBhYWE0NmUzYzdlZjEyZTRlMDZmZDkwMCBsZWdhY3ktdHJ1bmsKKzY2MTQ2IDM4ODg5Y2I0NTE4ODEwNWQ3MWY4MzljNTM2YjU2Y2Y0MzFhZjU2N2EgcHkzaworNjYxNDcgN2E2ZTZhMDRlMjhkMTQ5MmJhMTFjMDc5M2NkODhlNDlkNTk4YTliNyBweTNrCis2NjE0OSBkODNjZTRiNTgxZTYxNTZkM2E3YmFlYTAxNjFkYjRhOWI0ZmU5ODI4IHB5M2sKKzY2MTUwIGQwZDUzZGU5ZDgyZTJmMWU5NzhjMDU1MWM0NzY1ZTM3MjcyNmY1ODQgbGVnYWN5LXRydW5rCis2NjE1NCAzODE3Yzk2ZmQ1NDA4YTBiM2Y0MTZlN2Q2MzJlZmY2OGE2ZDY4NzllIGxlZ2FjeS10cnVuaworNjYxNTUgMWMxNGNlMDg1NDE1MWVhMDRlMTYzMWI2NmMxOTRhYWE2YWYzNWYwMCBsZWdhY3ktdHJ1bmsKKzY2MTYwIGJhNWM0Y2UxMmJiZGYxNmQ1OTRlMDI2ODRiMmZhYzE5MWNjNjEyOGUgcHkzaworNjYxNjEgNzUwZGEyZDE4MDg5MmVhOThiMmUwZGFmZmUwZTNhYWViMzc2N2EyYyBweTNrCis2NjE2MiBjN2ZkMGU4ODFjNDUzMDNhZDlhNDEyOTAzY2E2MTEwODJhZWY0MTYzIGxlZ2FjeS10cnVuaworNjYxNjMgODhjOTNhOWI0MTM3M2FkMWNlMmE2ODkxMWU4M2Y2NDcxYTcyYmMzZSBweTNrCis2NjE2NiAzYjc0ZDE0NjJlM2EwZjdkNGQ2MzJhNTA5MjJhMDgzODY1MjYzMjNkIGxlZ2FjeS10cnVuaworNjYxNjcgZjFhZTY5Y2RkNGZmZGJmYWI2N2FjNjA4YzMzY2NmYTQ5MDdmYWE2ZCBsZWdhY3ktdHJ1bmsKKzY2MTY5IGQ4MjZhNzU1NzFiYzk3OWY5ZDA1OTc5ODcxODg3ZDIyMjJlNWQ5OTkgcHkzaworNjYxNzAgNzg0ZDI0YTVjZTdiYWNjZjk3YzQzOGIzOTRlNjE5ZWUwYmQxYzkxNiBweTNrCis2NjE3MSAyZDgwZDAwYjFlZjM2MDMzMGE3Y2UzNDg0NzhlMDYyNmY4MzlhMzdjIGxlZ2FjeS10cnVuaworNjYxNzIgM2JkOTAwMmU3NDFmZmMzMDY2MmIzZTgwYjk0ZjlhNzExN2NjMjE5MyBweTNrCis2NjE3NCBlMmVkYzFjMTFlNTA3NzQ0Mjk1MjUyZjAyODU3YTMyY2VkNjRhMjhmIGxlZ2FjeS10cnVuaworNjYxNzUgNjM1NmE1NDE0ZDAxOWNmYTk5YzQ0M2Q0YzM0N2JiOTg0ZmQyMzAxOCBsZWdhY3ktdHJ1bmsKKzY2MTc3IGJmMDQzZDBkYjdkZmM5ZmE5N2FhYmI1NWQyNDk4MjIzZDc4ZmZkNjUgbGVnYWN5LXRydW5rCis2NjE3OCA3NWM1YTJjOTM3NmU5YjQ1ZDY0MWM3NzExMzg3MjU3MGUwZGY0ODQ2IHB5M2sKKzY2MTc5IDJhNjBmN2I0MjMyOGRiMTRhMmU5N2I0ODk1MGNlY2I4YzVkNGZhNTMgbGVnYWN5LXRydW5rCis2NjE4MCA1ZmQzOWI4NGZjMjkyYzllNTA2ZmJmMGY0MDA5MTI0NGYyNDM2MzEzIGxlZ2FjeS10cnVuaworNjYxODEgNGM2ODNlYzQ0MTViM2M0YmZiYzdmZTdhODM2Yjk0OWNiN2JlZWEwMyBsZWdhY3ktdHJ1bmsKKzY2MTgyIGI5ZWQxNGViOWU4N2JmYzZhZjdkMzYxOWE1YjU2NzQwODRjMGE5MmYgbGVnYWN5LXRydW5rCis2NjE4MyAwZjY5MzBhNDMzNjI4YzdiNTVlMWEzNGQ4MzM2ZGVmZWY0ZDdhNzBlIHB5M2sKKzY2MTg0IDMzODMwOGM5Y2NjYmNhZjcwYjJjMzA1ZmEwZWJmYWQwYWI2YzEwYzAgbGVnYWN5LXRydW5rCis2NjE4NSAwNmY1NGUxMWEwOGI0YWI1MDFhMTA5N2RiN2Q2MTc3NDY1ODM0YTE5IHB5M2sKKzY2MTg2IDIyYWIxMDZlMzE4NmI1ODQ5NDYwZDFmZjNmOTY5YjI0ZjcwMzNlMTQgcHkzaworNjYxODcgZjgzZGNjZjQxN2YwZGE2ZDNkMDY3NWEyNWRmN2M5NDI0NzczNTUxOCBweTNrCis2NjE4OCA5MmEwMWZlMjRhZTA2NDFhZmVkMWE5ZTQyZWY4M2ZkMWU4MTEzZGMwIHB5M2sKKzY2MTg5IDYxNTQ1MTZiZTQ5Y2RjOTRmYjNiYTkzMzFhMjgyNzcwYTAxMzFmOGUgcHkzaworNjYxOTAgMTRmYzE2OTI2YzAzZmM4NTg5MjA5NzY2YmU2MmVkYmU5ODE3Y2ViMSBsZWdhY3ktdHJ1bmsKKzY2MTkyIDAxZjJkY2UwNmY3ZDEwMmZiOWQ0MzI2MzNhNzM1YTk1ZTYzMTdhZmEgbGVnYWN5LXRydW5rCis2NjE5MyBlNmM3YjZmYTA3NzFlNDBiODdiMDczYzI3ZjllMmIzZTY3MjkxN2U1IHB5M2sKKzY2MTk0IGE1Mzg2MTAxODY1Yjk3ZTBlMzg3Mzk4NmJiNDY5YmZlNjMxNmYxYmUgcHkzaworNjYxOTUgMTc3ZThhNjFhZjQ1YzUxNDBkZTA2Yjc2MjMzNWI2MDE4YjVjZWRlNCBweTNrCis2NjE5NiAyYjg1NWE5NDdmMGY1ZjYwNDQ4YzE2YmM0OTViYjg3NGY3MTFlOWIxIGxlZ2FjeS10cnVuaworNjYxOTcgZTBhYjViMjg2MTI0NTZjZTc4ZjkzYTZkNGQ0OWE4M2U4NjU2NDZlMyBsZWdhY3ktdHJ1bmsKKzY2MTk4IGU3YmNmZDcyMDg5OGFiYTQyNTc5ZDJhZDk1NzIxNDg0NjRlNzA5OTQgcHkzaworNjYxOTkgNjVlMjM2ODNjMDEwYzNkYTQ3MTljMTU5MDM1YjJlNjhkMjExN2NiYyBweTNrCis2NjIwMCBlMzg0N2U3YzI0ZTAzMmU0YTE0Nzc3YThjOGZlZmRlMTczNmM5ZDU1IHB5M2sKKzY2MjAxIDk5NTdhMzZmYzE2N2VjY2QzNzNjYzZkOTA5MWNhYWJlY2U2YzkyNTYgcHkzaworNjYyMDIgNWI3ODQ1ZWY0ZWZkMGQ5YWJjNGFjYTVmZjlmN2ZiNTMzNTY5NDA1MyBweTNrCis2NjIwMyBjNTMyMzRmZjYxYjAwZjRkZmVhMDlhYWVjMDAzZTU5NDQ4MzllNTcwIHB5M2sKKzY2MjA0IDgxMmVhMTA1YjFiMGVkMGI5ZjExMzA1ODJhYzZkOTcwZDJlYmQ5ZTYgcHkzaworNjYyMDUgZjcxYTg5MjhjMWI3Yjk2M2E3NjhiNDMxMDk0YWI3ZThkZTY4NzVjYiBweTNrCis2NjIwNyAxNDI0OWJjYjkzZDBjYTY1ZDlhOGE0YjZkY2IxMDk0M2I0MTdhNjFjIHB5M2sKKzY2MjA4IGM1YmU5NDg0YjE0YmQwN2FmNGU4ZDQ2M2FiOGE3YmEzODAxMGU5OGIgcHkzaworNjYyMDkgNDVjNDM4MDg5NzllOTU3NjM2ZWQzZDkwZjE0MjFhOTA5MjAyMGVhNyBweTNrCis2NjIxMCBkYzc3NGNlMDFjMWZhMmI1OTMyMjY1ZWNlYmVmOWIwOWQ0N2Q5MWYzIHB5M2sKKzY2MjExIDgzM2QzZWNmYmJmMDkxMDk0MzdiMDM2YjQ2ODQ4MjA1NTg2MjQ1NTAgbGVnYWN5LXRydW5rCis2NjIxMiBiMjY2NTg0NzZkNTU1OWYwMzFiOTQzYjgyYmMwOWY5Yjk2MGQ2YjVmIHB5M2sKKzY2MjEzIDMxNjkyMzY3NzNmMWI3NWIzMWRmY2VjMjg1MDc2ZTRlOTExYTA1ZDMgbGVnYWN5LXRydW5rCis2NjIxNCAyYzJiZWY4ZmZjYTEzOGZkZDNiMWIxZjMxNzkwYjAxNTJmYWUwNWFiIHJlbGVhc2UyNS1tYWludAorNjYyMTUgNWMxMGFmOGQzM2Y1Y2QyZGUzMmRjMTUwYzAyZTFkMTUwOTljNWUwOCBweTNrCis2NjIxNiA5NGNjMTFlYzdlYzIwMmUzMzY0Nzk1ZTcyOGFhZGI2OTUzY2MwZjFlIHB5M2sKKzY2MjE3IDViNzZhM2U0NWFiM2UwMWI3OWFjZWZmNGMwZDBjM2ExMmM3NjI2Y2YgbGVnYWN5LXRydW5rCis2NjIxOCBhZTJjMWIyNzVmZWIzYWFkYjJlMjQ0NTcyMzdiMzVlOGRmNzkyYTIyIHB5M2sKKzY2MjE5IDQ0NTJmZjFmYmM5ZDUxMzQyYzJkNWNmM2U1MWQxOTk5YzhmNmZmZDMgbGVnYWN5LXRydW5rCis2NjIyMCBiNzU3M2VmMjRjNzE5ZWMxNWJmYTM1MTIzMjJkNDMwMjk0NmQxYWEwIHJlbGVhc2UyNS1tYWludAorNjYyMjMgN2Y4ZWY5ODI5NGJjMTFjMzc1Y2U2MmJjZmUzNGJlYjk2ZjhjY2Y4OSBweTNrCis2NjIyNCAzZmEwNjZkMmEzOTdkYzcwODU0YWEzMmQ4MTcyM2U1N2E2MGMyMjRkIHB5M2sKKzY2MjI1IDZiMDRiYzQyYmFhNWJhN2E4ZDc2ZTNlMjVhZGY5NzlmNTEwMzlkY2UgcHkzaworNjYyMjYgYzYxODNhODk4ODBlNjI4MTNiNGQ0Y2RiNmJmN2U3YzVkNzM5NzQyMSBsZWdhY3ktdHJ1bmsKKzY2MjI3IGZkZDkzYmZhNmMxYmE1ZTc1Yjg5MGY5OGZlMDc3YzliYjQxYTBlOTQgcHkzaworNjYyMjggYTY2MjAzNDNlM2RiNDdmOGJlNmYyNjI0MGYxODVkZjI4ZDA0ZWRkMCBweTNrCis2NjIyOSA4YWZhNzcyM2FmYTc2YWQwN2EzODE0ODY4ZjQ4ZGVlN2UwZjdiNTYzIGxlZ2FjeS10cnVuaworNjYyMzAgYjQ4NjY0OWNhOGJjZTIwMTdhMmEzMjg0OWViYWE3YjNmYmUwNTI0MCBweTNrCis2NjIzMSA4OWE5YmMxODU4NmExNzMyZjFhZDIxNDhkZTUwNzY0MmQxNmVhMjQ5IGxlZ2FjeS10cnVuaworNjYyMzIgYjQ1ODY4ZmU0ODljYjIzOTNmZGEwZTE0NTMwYTBjODE2NDk4NjY0MCBsZWdhY3ktdHJ1bmsKKzY2MjMzIGU3ZTcwZTg4MTE2MGJhYjMzOTQ4Y2VlZTBkN2FlOWE0MTM2OWNmZDUgcHkzaworNjYyMzQgYTY3N2Q2OGU4MTA1YzlhZmRkOGE0MmUzZDIyMmJmMzMyOWZjYmIxZSBweTNrCis2NjIzNSA0MzMyMjBhNjBhOGQwMzUwZjQwNmUxYjE1ZjA3MTJkOWI3YjZjMTUxIGxlZ2FjeS10cnVuaworNjYyMzYgOTdiOWYwYmU5Mzg1MjQ5ZjMyYjY2NjJiZmVmZjM1YWY0ZGFhMjY0ZSBweTNrCis2NjIzNyBlNzQwOTY5NzM4ZWYxZjhhZjVmYmY4ZWM4NTQwOTE0OTQyNTI1NWQwIGxlZ2FjeS10cnVuaworNjYyMzggZWNkN2Y1OTBlMTQyNDc5YzE2ZWVhYWVkN2I1Zjc1YzhjMjM5OTM3ZSBweTNrCis2NjIzOSBkYWI3YWJiNzdlOGY4NTUzMmIyN2I2YzRjZjM2N2JlN2M3NjdlZDBlIHB5M2sKKzY2MjQwIGYzMjUxN2Y4NzZiNjdjMWM1ZjFjOGYyMTQxOGQ5YTQ0Y2YxZWJhYjQgbGVnYWN5LXRydW5rCis2NjI0MSAyNmJkZDk0YTQyOTM3NzZhMDc3ZGIxNDEwNTgwODk1ZDgwNDFhYzFlIHB5M2sKKzY2MjQyIGMzYjgxMTIxNGNlOGZhYWQwMTg2ODMzM2YyY2I0YjBhOWJjYTZhOTAgcHkzaworNjYyNDMgMjM4YTA4OWQ0MmJkNjJlMDg3NmU5YzNiMDVkZDAzYWQyOTRhYTExMiBweTNrCis2NjI0NCBkYzA3MDlhMmI0MmY1NzcyMzRhODYyODBmNTdmNWM0ZTI0OTAxNmVmIGxlZ2FjeS10cnVuaworNjYyNDYgNDg4MmU0YzQxY2UzZWZlYjViYzJmMzUzYWE4ZTdkNTkzNDA3MzYyNCBsZWdhY3ktdHJ1bmsKKzY2MjQ4IDE5MzM4MjQ3OTI1ZmM0Y2Y5Y2UzMTUzYzI2NzI2MWQzZTJlYWRkNDAgcHkzaworNjYyNDkgNzUxZjFiNTY5OWJhZGU0ZTgwNjU3YTgxMThhOGQxZThhMDkxNmI5NCBsZWdhY3ktdHJ1bmsKKzY2MjUwIDEyZWY3YTkyZTU5YmJiMjQ1ZDhjOTMzNzUwMDIxOGQ0NDYwZGU3MjUgbGVnYWN5LXRydW5rCis2NjI1NSA2NjIzMzZkNTY3YTllY2U2ZTFiMzhhZjQxNTVjN2MxM2E2MjRiZTA3IHB5M2sKKzY2MjYwIDZlNzFiMzk4YjZjY2RmZjY4M2FjMTIwMDEwMjRmMDBlZmJlNjRhOTYgcHkzaworNjYyNjEgZjgzNjgxNDJmOGQzYjQyOWYxMWM4NGFjOTkzOTJkMTAzYzMzOGVhZSBweTNrCis2NjI2MiAxNWRmMjk3MDVlMTgyYTEyNzYyOWY2NDZjZWNlMmY0ZDAyYzljODYwIGxlZ2FjeS10cnVuaworNjYyNjMgNGRkNTk4OTE0MzgzNDdjNTg0NDM2Zjg1OGRhNDVlNDEwMWI0OGYxMiBweTNrCis2NjI2NCA2NzAyOGY1YjMzMjFjYzNlOTUyM2QxNTcwZTNjMTdmNWU5YTdjMDIwIGxlZ2FjeS10cnVuaworNjYyNjYgYzFhOGY2YjY0OGVhNTFmMWNhOWEyZTU3ZDYyNTFhZjNhZTlmYjkzMCBweTNrCis2NjI2OCBiYjBmNzQyOGExNTA3ZGViYTcyMmYxYWNhOTllYzJiMjA5MGNlM2YwIGxlZ2FjeS10cnVuaworNjYyNjkgNjc0NmM2YmVlMjg2MDkzYzMxZWRiODkwZmRiZjIzNTk1NTU1OTMwYyBweTNrCis2NjI3MCBlMjdjZjdlZTI5NjhiM2ZhZTkwYTNlZDFkYWRmNGVjZmNlMmE1OTE0IGxlZ2FjeS10cnVuaworNjYyNzEgY2ExYThhYzQ3ZDA0NjFkMTMyYTczNGMzMTI1ZmJmYmIwYjY5MWQ0NSBweTNrCis2NjI3MiA0NDVjZTY1NzUxNjJlYmQzZjk5NGFmN2IxNjAwN2UwMmM4ZmEyOWM1IGxlZ2FjeS10cnVuaworNjYyNzMgOGZmZWMzNzIwNDBlNDdhOWIyNjA3MDIxOTE3NzQ1ZWU3NGJhNjhkNyBweTNrCis2NjI3NCAxNzlmOGQ4OWFkMTlhNmJhNGY0NGE2ZWRjOWZiNWZlMWU4N2ZhYTQ0IHB5M2sKKzY2Mjc1IGZkYTY4OTk3MGIzZjgyOGE2ZGEyMjUzYTRiY2JhYzJiNjM2MDA2NDcgbGVnYWN5LXRydW5rCis2NjI3NiAwMjYyN2I5MjVhNDNjNzE5NGI1ODI0YjFiMTBhZGY5YmUxYzhjODgxIHB5M2sKKzY2Mjc3IGZkYzA5NDhjOTVjZjE5NzliMDUwMjZiOTA5NmFjNDgyMTliYTY5ZmYgbGVnYWN5LXRydW5rCis2NjI3OCAxMzk1NWJjZDA4YmUxYTVhYWMyNTc1ODIwYmFmOTg2YTJmZTBiZjYxIHB5M2sKKzY2Mjc5IDc3ZTFiOTVmMTQxOGIxMzFkNDNiMWJmM2I2ZTNiZWI1ZGFjYjFmYWYgcmVsZWFzZTI1LW1haW50Cis2NjI4MSBjNmIwMmY3OWIyYmMzYTM1NjA5Y2JhZjhiMjA2MTM0Y2EyYmI4NDBhIGxlZ2FjeS10cnVuaworNjYyODIgMmVjYjU2ZTZlMGE2Y2QxMzJhYTkxMTQwYTQyNzUyZDc1NjU5N2U3NyBsZWdhY3ktdHJ1bmsKKzY2MjgzIDc1MTBkODczYjg4YzMwMzBlMTQ5OTI5Y2UyOGYzZDY5ZGVkNjExNTggbGVnYWN5LXRydW5rCis2NjI4NCAzZjJjNGNlMzJiYTQ3YTJkMzhhNDEyMmY5Yzg2MGVjNzg5NzEyYmFiIGxlZ2FjeS10cnVuaworNjYyODUgOTBjZmM2YjkyNmM2ZjU0NGI0ZGQ2NDI5ZjY3YTAyYmZhNmRmZmIwYSBweTNrCis2NjI4NiA0NzMzZDg0ZjM0ODhiNGRlMTFmZTUwYjkxNGQzM2IyMDY1NWU2NTM5IHB5M2sKKzY2Mjg3IDczNTM2YTU4YWI0MjYxZDJiNWI3NzZjZmYyOGZiZjU5MDY5NTc5NGYgcHkzaworNjYyODggOGNmYmIyZTI3NWQ5YzkxNTRhYTBlYzJiMWQ1MjU0NThlNTgzNDdjOCByZWxlYXNlMjUtbWFpbnQKKzY2Mjg5IDk4N2RiN2FmMDcwMDJhMTJjMDNlYmVmOWIyYTAxZDRlOWJlMmM2MTggcmVsZWFzZTI1LW1haW50Cis2NjI5MyA1MjNkNmQ3ZTU4MjVjMjdhYzA2M2E3MzkzYjllMTE0MWQzNDc2MmE3IHRsZWUtYXN0LW9wdGltaXplCis2NjI5NCAzYWY2YTcwMjA3MGI0M2E0ZWE0ZDQ1NWJjZjZlNTNiNjRkNDNkZTM0IGxlZ2FjeS10cnVuaworNjYyOTUgYTFjYWU5NTU1ZjVkZjgyODU5YzdkZGI2NWNkNzMzYjQzNDE5ZDIyNiBsZWdhY3ktdHJ1bmsKKzY2Mjk2IDJhYjA1MjkyMzdjYjFhNTAwMDhhOGMwNDU4MDU2Yjg0YjkyZDM5NmYgbGVnYWN5LXRydW5rCis2NjI5NyAyNjExZThhZTIzOGZkNmYxY2U2MzQ1OGJjYmExM2E1ZDAyNTJiM2E2IHB5M2sKKzY2Mjk4IGQ3OTQyMzgxNTBkMjJmYzRhYWYxMDNmZTY3MjRiNTc5ZGM0Yzk0ZDAgcHkzaworNjYyOTkgMDVlMjVkN2EwN2UxOTg3ZjU1YzE0NzZkOGQwODU1YTFkMzg5NTIyNCByZWxlYXNlMjUtbWFpbnQKKzY2MzAwIGE5MzQ3Y2I4YWMzODA2NzJkYWIyNjA0ODhjNmMxODRlYTg0OGE3ZDUgcmVsZWFzZTI1LW1haW50Cis2NjMwMSA3YjFmOGVkZTliNTM0M2U4Y2Y0NjliNmZiZDYwOTUxMmY4YzI2ZjBkIGxlZ2FjeS10cnVuaworNjYzMDIgZjA4NWYzOWE2ZjRkMTIyMzFlNmQ2NjlmYjg3MmNkZTBmNDk2YzE1NSBweTNrCis2NjMwMyAyNzFkY2UwOTE3YzEwNTc1NGMwMjYxMGIzNTljMzAwMjViZWI4MTE5IHB5M2sKKzY2MzA0IGFhMGVmNWRlMzQ1YTc4OGY3Y2NhZmQyNDBlM2JiZjE0NjE4YWM3MTcgbGVnYWN5LXRydW5rCis2NjMwNSA1NjhhYjU4MzcxOTRkODk5ZTExZmVkMDFjMjcwNWNiYzFhOTg4YTViIGxlZ2FjeS10cnVuaworNjYzMDYgZmU1MzYyZDkzNTQyNThlMTkxOWM5MGQwNjY4ZTA0MzUwZTY4NTgyNSBsZWdhY3ktdHJ1bmsKKzY2MzA3IGQ2MWI5NTZiMGJmNjQ0YzMwOWYwZGYyODU2NzhhY2NlMjk5OWQ0YWEgbGVnYWN5LXRydW5rCis2NjMwOCBkZTZlZWYzMWFhNWY3Mjk4ZTFhYTdjODNkYjY2MTllZGFhYWVlMmJkIHB5M2sKKzY2MzA5IDUwOTQxYmVmZjAzMjhiNGY2YjI2NWEwMzFkYWM3ZTc4NzI2NWM2ZDYgcHkzaworNjYzMTAgMzdiNzBjZDRhMGYwZDEwZmY5ODhhMDdmMDUyZGFiNWI0YjA4YWZlNiBsZWdhY3ktdHJ1bmsKKzY2MzExIGFjM2I2NzA0MzM2MWVhNjI5MjEzZWNmMjg1MzY2NGJhZTdmNGJmNDUgcHkzaworNjYzMTMgYmY0YmM5NzNlMmFhZmIzMzhmZjcwN2EyY2I5ZWUwZDYxODJiMDViOSBweTNrCis2NjMxNCA0NDcwMmUyNzM3NTA2YzUyN2JkYzNiMWM1MGEyOTg5M2YwZGE1MDNmIHB5M2sKKzY2MzE1IGM4NzEzZmIwNWY5ZTRlODM0MzE4ZTU0YTVkMGQ2NTkxNGJjMzcxMDcgcHkzaworNjYzMTYgOTczYmRiMmRiNmFjOTZlMjcwZmM1MzJjNzYxOThkM2RiZDdiZjNhOSBsZWdhY3ktdHJ1bmsKKzY2MzE3IDRkMTQ4YmI4NGEwNzdiMmE5ZmEzNzM0ZmY0ZDNlMzZhZjJlNjY1ODAgcHkzaworNjYzMTggODZhNDJlOWY3M2RjMjE5MzAxNjkyYTI3ZGU1ZmZjMzdkYTI4OGQyZiByZWxlYXNlMjUtbWFpbnQKKzY2MzE5IDIzYjQ1MmFjMWE1MGE0OWZjNDljNzIwMWZlNzVmOWMwM2NlZThmMmMgbGVnYWN5LXRydW5rCis2NjMyMCA5NjRkYjg3OWYxOTBlOWRjY2IxZDZmNWRjZTcxMDdjNWQxNTQ0MTYyIHB5M2sKKzY2MzIxIGZmOTZhMzEzY2QxYzgzOWJhMzFiMzU0MjMxZWNlZGFkZjQyMDc1YTggbGVnYWN5LXRydW5rCis2NjMyMiAzZTZlNTY1ZWUzMGFkY2I1ZWMwM2E1ODBlN2ZhMTk4YTI0ZGE5N2UyIHB5M2sKKzY2MzI2IGM0NmJjY2NmMmFmMmU0NzcyNTc0OTVkOWFkNWE2YjM3OTcwOTE0M2MgcHkzaworNjYzMzAgYjUyOGNiZWE2MGUxYzUxNWYwODAyNjlkNGEzOTNlNDA4YTY4NzE0ZCBweTNrCis2NjMzMSBmNzEyM2Q0NWQwYzQzZTlhZTBlODE2YTYwNzhkMmQwZDE1M2IzNTFmIHB5M2sKKzY2MzMyIDk3NDA0MGM4ZjM2OTYxMTA3NDlmOTAzNDk2NjcyZTM5NTcxOTBhZDYgbGVnYWN5LXRydW5rCis2NjMzMyBmNjY1MGYyNDc1OThlMmQ5ODZmODYyMGZiZDQzYTE3YzRjMzZlMzFmIHB5M2sKKzY2MzM0IDcwODdlYTgyOGRkYTJmYjU5MjcwNDJjNTQ5MTk2NjJhZmQ1MDY0ZjIgcHkzaworNjYzMzUgMGY0NDU3Y2YyNWIyY2ViYTA5OGY1NGJiOGM3MzlhMzZhZDJlOTg3OCBweTNrCis2NjMzNiA3NTY2MzdhM2FjNGJhMjYxMDE0MGExZTQzZGYwNDMwODNlZTM3M2IwIHB5M2sKKzY2MzM3IDM2YjJkNjc0ZmM4YzUzZmQ0MzAzYzNjNGY0YTdhMTU1YzVkYzViNTcgbGVnYWN5LXRydW5rCis2NjMzOCBjZDYxZDU0ZmM4YzA2NGQ3MzY3MTgxNmE5NjE0NzNjNmEyOWI2MmQyIHB5M2sKKzY2MzM5IDI5MDk0ODQyYjM3NzZhOWY4YmU5Yzk4NjYzYmI0ZDYwZDYwZDY5ZjkgcHkzaworNjYzNDAgYTkwYjI4NTQ1OGFiMDE3ZTFmZTI3NGYzNDQ5YjY5MzMzMDdkY2IxZSBweTNrCis2NjM0MiAxMzlmNmJhZWY2YzIzMDgzMTNhMTQyZjc1YTYzYTFkMjRjODNlNmNlIHB5M2sKKzY2MzQ0IDQyNDllNTgzOTdlZjAxYzFmMmUyYTdjMjgwZDJhMWZlYzZlMTlhYTAgcHkzaworNjYzNDcgNmYwODI3OGJmOGIxZjVlYTk4N2FlNTU5MWE5OGJiZGMyZWFmNjlhNCBsZWdhY3ktdHJ1bmsKKzY2MzQ4IGRjMGNhZTFlNmFkYjE1NjE5NDBkZDBiNjg3OTY4MzkxMzNhNWQwMmMgcHkzaworNjYzNDkgNDlhOTNjMDJhNmQyMTMxN2ZhNTI2MWY1ZDM0NWI3OWQ2N2UyODRmZCBweTNrCis2NjM1MCA3NTNhNzZiM2VlYTkxZGQxOWNhODliNjIxY2JiZTZkYzQ2OTUxZGExIGxlZ2FjeS10cnVuaworNjYzNTEgNWMwMzg4MWMyMDc1NTE1MjU1MmY2YTI4YmE1NTJmZGVkMzUyNGJjMyBweTNrCis2NjM1MiA3M2NjN2I2MzU1YjgxNzZhOTViNTU5MTg1ODliZTRlZmQ2YmUzZmMxIGxlZ2FjeS10cnVuaworNjYzNTcgZGMxOWExYjdjNWE2MzQ0ODA1MzU3Yzc2OGJmNWQ1YmFmZmMzOTdhMSBweTNrCis2NjM1OCAyYzJlM2E1NmM3YmNjODY3MjNjMTRkYThhOTQxOGFkM2U0NmJmNGMxIGxlZ2FjeS10cnVuaworNjYzNTkgZTkwYTNmMGE5OTI4YWQzZWI0ZWU3ZWFjOTYyMGU1Njc3ZDc3OTRjYSBweTNrCis2NjM2MiBjMzdjN2RiZDc4ODBkYjAzNDVjYTdlOTdhMjI2YjExY2JmNGM4NWNkIGxlZ2FjeS10cnVuaworNjYzNjMgZGM2MDI5M2IyOWQ1MTE5YmY2NzcyOTk2YWU3NTRkMTBkYjJjOWE5ZSBweTNrCis2NjM2NCA5NWFjNjk4MzU4YWJiMzRkODAzNGU0ZGY3YmVjNGYwN2U0YjVkODkyIGxlZ2FjeS10cnVuaworNjYzNjUgNzc1NjViZTFiOTU3NzBkMWYyNjQ0Nzc3ZTg4ZGE0YjM4NjlhZjRkZiBweTNrCis2NjM2NiA1MTMyNjZhNzVlYzMxZTExZTMzNzVkZTM2MzdjMjhmZTUwNzM2Mjc1IHB5M2sKKzY2MzY3IGYxMDBlZmNhMTQ4NzFiYjgyMWEzMWFlYzhkZDlkMWIwMjViZGRmZmQgbGVnYWN5LXRydW5rCis2NjM2OCAyNWYxNDEyOGE5N2MxOGU0NGJmZGY0MTg0YmQ5NzE4YTg1Nzk2MmNiIHB5M2sKKzY2MzY5IDJhYjg1YzM5MmE4ZGFlMDBhNWUxNzFkOGM2YmEwOTY5ZTI0N2E1MGEgbGVnYWN5LXRydW5rCis2NjM3MCBkZDk2MTQ0ZTZlODFmYTRlNmNjNThhYWUwNzAzNWE4OTRjY2IxZDM0IHB5M2sKKzY2MzcxIGY5Nzc3OTI2MmJhYzFiMzVlZGEzMDBiNmU3ZmUyNzBhYzA3MmUxNmYgcHkzaworNjYzNzIgYWY0MDIzOGE2OGI5NWNhMDgzYTdiYmM1N2Q0Nzg5MDQ2MjFmOTdmZSBweTNrCis2NjM3MyA1ODkwNzNjZWUwYWU0N2E2NmExMGI5YzVhZDAxMWUyMWU3YTIwM2ZiIHB5M2sKKzY2Mzc0IDM0OGEzMzA0OGViZjQ4ZmI1MDcyNTYzZjg2YmU3NDQyZjYzYzc0MjcgcHkzaworNjYzNzYgMTc0NzVlYjU1MDY3YWMxZDE5NTYwODFkZjJjZWRmNjE1MDE0NDFmZiBweTNrCis2NjM3NyAxNDU0NDkxMDlhMzFjYTE2YjM0Yjc5ZTI5ODUwOGJhYmI0MzYxZTBiIGxlZ2FjeS10cnVuaworNjYzNzggNmFlMmQ0YjUwN2EyNTJmNjFkNDMyNDA4MmRjYzIwOWRkYjZjZDI2OSBweTNrCis2NjM3OSBhNGRmNDkwM2IzNTU1NjRmMmE0N2U1MjE5YzQ1ODdlM2Q3NTQ1ODg3IGxlZ2FjeS10cnVuaworNjYzODAgZDI3ZGYwODNkNGU2NzRkOTcyZTk1NGM0NGQ3OGY2M2Q3NmNlMjViNSBweTNrCis2NjM4MSA1MWZmOTM0NTYyYzIzZWNhNmRjZjIxZWNlYWZiOTdiNWJiM2RiODE5IHB5M2sKKzY2MzgyIDg3NTMxMzAxYmE0OGM4N2UyOGNkYmRlYjEwNWJiZjFmZWU0N2RjOTMgcHkzaworNjYzODMgM2RjMzE4MDk2MzFmZTE3OTE1YzU2NmI0MTIyNmU4MmRjNmJjM2M5YiBsZWdhY3ktdHJ1bmsKKzY2Mzg0IDk2ZDYyNzZkODBlMjMyNDZiYTAxMjQzMWQwNzAzMDYwNTQ4MmI1YWQgcHkzaworNjYzODYgZjI4Yjk5OWE2OWY4M2I2NTAzNzFmNTdjZTQzMTlmYjM3NGVlNzc4YSBsZWdhY3ktdHJ1bmsKKzY2Mzg3IDg5YzJhNjk3Zjc3MmYwZmI2NWZlZmVjNDAzMWMxZGUwM2E0YjZlZTYgcHkzaworNjYzOTAgMGVmN2NiMzViMjE2NzI0Njc2NjRmY2JjMzIzNGVhMWRlMmRlNDY2YSBsZWdhY3ktdHJ1bmsKKzY2MzkxIDRjZDk3ZjhkZTY5ZTIwYTllNjQ1ZmNlOGIzNmU0Mjk5YTNkYzkyN2MgcHkzaworNjYzOTIgYzA1ZjVhYmVmNzhhZDUyNTJlMmJlZGE4ZTBkMTNlOTdlZDkwYjdlOCBweTNrCis2NjM5MyAyODAzNDdkMmY3NjUwMWUyMzk0NDVkZTZmMTVjY2JhYjU3ZmI0NDNlIHB5M2sKKzY2Mzk0IDBmY2Q0ZGIyM2RmZmViMzljNTRjNmEyYzE2NTIxNzM3OTdjYjIwMWEgbGVnYWN5LXRydW5rCis2NjQwNCBmZjE1ZTYyYTM0OWI3OGJkNzg5ZWFlNWIxN2JlNTk3NzAxNGM1OWFiIGxlZ2FjeS10cnVuaworNjY0MTIgNGM3N2QxMDE2ZjYwYWY0NTI2YzMzY2JkZDM5M2FlZDdlYWRlNTQzZCBsZWdhY3ktdHJ1bmsKKzY2NDE0IDc2YmM3NTc3MjczNmYzMmU5ZDM0MThhNWYxZjMxNTc1ZGE4MGYzYWEgbGVnYWN5LXRydW5rCis2NjQxNSAzODFlY2Y0NmRmYWU0NGI4M2UzYjhkYjRmMTBjZGI0YTBmZmY0MWZhIGxlZ2FjeS10cnVuaworNjY0MTYgMWViYjJhOGNjMDZjOTQ0NzFkNzJiNTQ3NmMyMDUwYzRkMTE1YTFhYSBsZWdhY3ktdHJ1bmsKKzY2NDE5IDRmN2RlMWNhOTJmZjgwNjcxZWEyMmE1ODNiMGI5YTljZTI2MTQ4MzUgbGVnYWN5LXRydW5rCis2NjQyMiA3MzhiYTgzMTlmNDkyMDRlNDk2MTljYjVlYzlhNTczZjdiNjE1ZjUxIGxlZ2FjeS10cnVuaworNjY0MjQgYzhkNDQ2ZWE5NmRhYmQzYmI0ZGQ3NjY1N2U2ZDkyYWUxMDI5Y2ViNiBsZWdhY3ktdHJ1bmsKKzY2NDI1IDA5MzJiOWJhYTdhNDU4ZjM1Y2Q3MWZmN2VmNzBhZjljZjk4MWMxNzMgbGVnYWN5LXRydW5rCis2NjQyNiBiYjNkMWJkMWUyOTMzZTdlMTFlYmRkYjljOWIxZmJiMjAzZjk3MGE0IGxlZ2FjeS10cnVuaworNjY0MjcgZTdjMjgwMGIyM2JmODJiNTY5MzljM2NiZGQ5ZjczYTEwYWUyMTMwNCBsZWdhY3ktdHJ1bmsKKzY2NDI4IDQxNTI0ZjllMmEyZjlmYjg1OWM5N2EzYzFkZDEzYTU1OTI4MGY2ZDIgbGVnYWN5LXRydW5rCis2NjQyOSA1Y2UwMTQzOGJhYWE1OTVjZjkxNTIxOTJiZWRkZDYwNTU3MGYwNmEwIGxlZ2FjeS10cnVuaworNjY0MzAgNTk2YTFhZDhmZWI2MWIyNTIzN2M5ZjdkMjI2Yjc4NjFjYTJlOTAzYSBsZWdhY3ktdHJ1bmsKKzY2NDMxIDc0MjY3MWM1ZDdjOTVjNjVhYmQzYTBlM2NkMjJiN2E3Y2M0ZTIwOGQgbGVnYWN5LXRydW5rCis2NjQzMiBjMGRhN2YyMzYxZWNkYzM4NWY5ZmIyZDIxZDk1OTUzN2Q0NzcxNzBkIGxlZ2FjeS10cnVuaworNjY0MzMgMDUxMzYyOTNmMGM4YmZkNWNkMjgzNTQ2MjlkZTVjMmNmN2VhMjIxYyBsZWdhY3ktdHJ1bmsKKzY2NDM0IGMzZjBmOTc4MzllMzgyNzdlZjVjOTUxMmJiOWZjYjBmMWFkNTZiMDkgbGVnYWN5LXRydW5rCis2NjQzNSA1MmVmOTViZGQ4MDFlNDRiZTRmZmJhMmI1NTA3YWFlYzdlYTQ3YzI1IGxlZ2FjeS10cnVuaworNjY0MzYgMDZmMzIzYWE3MmM0OTUwNzgwYmUxNjRjYzhkYzg1YzllYjUwOGE0NCBsZWdhY3ktdHJ1bmsKKzY2NDM3IDY3MDlmZjgyODdkOTg3ODRhYTQxYmQ5NjY2YmJiZjFkODVlMDE2ODAgcHkzaworNjY0MzkgNjY2NWViZmY2NGYxZjJjMjA2NjEyYzA4ODYxZjU3ZGYyZGM4N2IzOCBsZWdhY3ktdHJ1bmsKKzY2NDQwIDFlYWRkZDIzODhjYzI3NDcxZmI0MDIzZGIwN2YxOGMzNzQwM2NmMzkgcHkzaworNjY0NDEgMWFmMTY5NzBkYWMzZmQ0NTY1ZGVmYTIzMjg5MTFjODJiNzZhNTRiYyBsZWdhY3ktdHJ1bmsKKzY2NDQyIGQ0MDY5ODNlZDkyNzljY2M2NTljODZmYjJjYTFkMGIwZjQ3ODY2MGEgcHkzaworNjY0NDYgOGY4ODZhY2FhMTQyY2NhYTlkOWI2MjI4ODYyMGNiMWZiYjQ1OWQ4NyBweTNrCis2NjQ0NyBmZWI3YmRlMWE0ZDkzMDExNzA4NmEyODU2YmZjMGZhOTY2MmRmN2Y5IGxlZ2FjeS10cnVuaworNjY0NDggYzg3Yjg0ZGIyNDRjZjYzMGUzMDM3MDk3MzZjZDhkZmYxN2EyYTUyMSBweTNrCis2NjQ0OSAwOTVkZTViOTI5ZGRiYjU2NGRmOTU1NDk3NWUxMDJmOTliYTBlOWM2IHB5M2sKKzY2NDUwIDc1YjBkY2JjM2NjNzE4MTU4ODkwMzMyZWFlNGNlNzM0NTRkZWYyMTcgbGVnYWN5LXRydW5rCis2NjQ1MSAzYjA0OGUzMWRkOWU3N2FiZGY2YmQ1OTg5MmRkMTE4N2QyNWM2NzUxIHB5M2sKKzY2NDUyIDU5ZGI0YjNhMDZiMDFiNTJmNzhjNGU3NDliZjgyMzdhYzQ3ZGVkNGQgbGVnYWN5LXRydW5rCis2NjQ1MyA1NmQ1YzAzYjkyYjZjZWYxNTllYWY3ZmUzZTQwODJlYTQ5MmFhNjhmIGxlZ2FjeS10cnVuaworNjY0NTQgNDdkYjYyYmY2YWE3MGQ4ZThmNWFiZjllMGRhNWFhOWQ2ZTk5OTdiYyBweTNrCis2NjQ1NiA2MjcwMGJiN2Y3YjU5MDllYTc4Y2IwNzI5ZjU5NjY0YTI5MjU1MjIxIHB5M2sKKzY2NDU3IDJjNWJiNDYzNGQyZDllYzZhNzc3NjUyNmUxZDVmNTlhNDBiNTBjYzIgbGVnYWN5LXRydW5rCis2NjQ1OCBmOTk4MDAxNjZjMmI3M2UzM2I3MjJiZmQzNWFmZDc4NWUwMDMzNTFkIGxlZ2FjeS10cnVuaworNjY0NTkgY2RkZjVkNjQ3NmNmMTI3Yjg5NmY0MjM2NTQ2NjhhYmZhOTNlMDc4MSBsZWdhY3ktdHJ1bmsKKzY2NDYwIGU5NjkyMzIwNTRhMmMzOGI3MjVmZmNiYWIyYjQ4ZmMwNDJmY2VlOTMgbGVnYWN5LXRydW5rCis2NjQ2MSA2OTI5Yjc0MjcyYzQwZWY1MzIzY2I1NjgxMzBlMmJmZWMyM2NhYTBlIGxlZ2FjeS10cnVuaworNjY0NjIgNjJlNWY3M2QwNWI0OWY0MjdkNmJiZjVhODUxOGJmYTQ1NjkzMmQwNCBweTNrCis2NjQ2MyA2NGJlOWY5MDg2NGUxNGIzMzViNjRmZDFlMGQ1YzUzMzk1MTQ0MzkxIGxlZ2FjeS10cnVuaworNjY0NjQgMjYwNTQ2NWJiYTNjMThhMWFiMzBlNmJiYTZhZmVmYzNlMzE0NzA3NiBweTNrCis2NjQ2NSBhM2YwZDY2N2UyY2U1NTdiNzgzZTA3ODA4MTdkYjk3NmZhMDViMTMxIGxlZ2FjeS10cnVuaworNjY0NjYgM2E4MmU1MDI0NzQzMjgwMDVhNGRiNjY0ZWNhOThlYTFmMTFhZDVhNiBsZWdhY3ktdHJ1bmsKKzY2NDY3IGFhZWJkYzRjNDY5MDNiMzBmMjU4NTc4NmYzNzljNjgwNmQzMGZjNDUgbGVnYWN5LXRydW5rCis2NjQ2OCAwMmE2Y2M1ZDdhMjI3NmUxOTIzOTAwNTI4MmM0YmQ4NjllMTk2ZDViIGxlZ2FjeS10cnVuaworNjY0NjkgYmRiNjYwZGNhNzRkNmFmNGMyNmY2Mjc5N2YzNDI1ZDJkNjAyMjEzYSBweTNrCis2NjQ3MiBmOTc0ZTBmYTU0Y2FhNzdkMzYxMjllNWE0ZmJhN2JhOTJlMWQ4ZDM4IHB5M2sKKzY2NDczIDExNjdhZTY0NWU4YzAyNzU0M2FhMTliNGRkODY2OTVmNWU2YjY0YjAgbGVnYWN5LXRydW5rCis2NjQ3NCAyMGRmMDZlMWIyNjY5ZjU5MjhlZDZmNWI3MGUyOGY4OGExNTUwODk2IHB5M2sKKzY2NDc1IDY3MDQzZmI4YWVhNWMwZTgxMDUwNWZhY2YyMzNhYjRmNmM5ZTg1NDggcHkzaworNjY0NzYgMzMwMjA0NWJhZTk3ODk2MTFiZTA0NWEwNzc3YmY2ODE0NTdkNjliOCBweTNrCis2NjQ4MCBiYjJhMGEzN2ZhYTk3YmRiZWNiZGVmOTIxMjJjZDE0YzUwMjlhMTZiIHB5M2sKKzY2NDgzIGQxN2NjNGQxNzY2Y2ExM2FmNTRlMmE2ODQzYzQ4ZjBhYTVmNDI3MGQgbGVnYWN5LXRydW5rCis2NjQ4NCA0NDUzZTJjNmFhN2ZkMmU1NGE5NjZkOGI4NTg3ODIxYzE5ZDIzYjUzIGxlZ2FjeS10cnVuaworNjY0ODUgOTdmMjhkZmExNTQ5YjNjMWQwOTZhM2UwMDYwM2UyZjhiYzY3MmViZCBsZWdhY3ktdHJ1bmsKKzY2NDg3IGExYzE5ZjI2M2Y3OTU1ZmYxZjdhMGRlMjE4ZGVkNTY1MmI0NGU5MmQgbGVnYWN5LXRydW5rCis2NjQ4OCA1ZDJmMTYxMTk0NTk0YjFhYTg1NzMxMDNlNDE1Mzc2NmZiZTk4YjU3IGxlZ2FjeS10cnVuaworNjY0ODkgMmY5YjA2Zjk1YzlhNmE3ZDFmZTA5NTY5NTc0MDMwZDk2ZGExNzEwNSBsZWdhY3ktdHJ1bmsKKzY2NDkwIDdiMTY4NjAyZjQ0ZGIyYWZjNGJkY2I4ZDEyYmQ2ZWUwZWRlZmNiYmQgbGVnYWN5LXRydW5rCis2NjQ5MSBlMjQyOWUyMzI1NzZhNjY2ZmQyZjU0M2Q5NTZmZGQyOTk5YzA5NjczIGxlZ2FjeS10cnVuaworNjY0OTMgMzBlZjIyYTgwMjY3YzNkNjk4MjUzMGFiNmZlODgyMWNjMTIwNGM1YiBweTNrCis2NjQ5NCBhZjRjNGNmM2UwMWUwOTMyZTY0NDBhMjk1ZmNkMGU1YTljN2EzYmNjIHB5M2sKKzY2NDk2IDI2MDZkOWEwMGM3YjYyMjAwZjQ0MDY1YWVkNDA5Y2MwYTJiNzZmM2YgbGVnYWN5LXRydW5rCis2NjQ5NyA1ODgxODg0NjM2M2JiNWUwYzgxYWQ2MmQ2YWY0NjllNTVkYWM1YTMxIHJlbGVhc2UyNS1tYWludAorNjY0OTggZmUzNTViZDA1YzQ3NDM4MjU0NmNmODQ3YWI1Nzg2OGVjNWU5YzdiYSBsZWdhY3ktdHJ1bmsKKzY2NDk5IDUwN2VkZTljN2Y3ZjQ3NWRmYWZiZDRhNTJjMjJkNzY3ZDEwYTJiYzAgcHkzaworNjY1MDAgNWQ2MWM2NTQ4NDk3OTUwMTdkY2E0YzA5NjVjZjkwODdhNjg5NGMxMCBweTNrCis2NjUwMSA0MjhiMDUzYmIwOTgzOTM5MzMwMThiNzIxNTk0MTNkMGZiMGFlMzhjIHB5M2sKKzY2NTAyIGM2NzAzZjQ5ODliMzczMGY0Mzk1ZmE4MGI3MjUxMDA0N2UwYWFjMzggbGVnYWN5LXRydW5rCis2NjUwMyAwYWQ4Y2VhNjBiZmEwYjYwNDM4MjVhNmJlMzM5NzZmNGY4NTRjZGFhIHB5M2sKKzY2NTA0IDUyNTc5MjA5N2M2MzA4YTc4YTc2YjdiNWY1NmJiZDhhMjRjMjZhY2YgbGVnYWN5LXRydW5rCis2NjUwNSA1NTQ5YjVkZjhiY2JkZWE3MjFlZDFlOWNlNzE5NTRjMjYwM2Y2NmNjIGxlZ2FjeS10cnVuaworNjY1MDYgMGVlYzM0NzU1MDQxNGVlZmEzYjVmNTJhMGUxYjUzN2RmOWZjMzc0OSBsZWdhY3ktdHJ1bmsKKzY2NTAzIDQ5YjliOTk2NWYzMTJiYTE1ZmE3YTkyYmQ0ZGY1YzJjN2MzODM4N2QgcHkzaworNjY1MDggNzYzZTRiODQ4ODFjYzFiOTIwNzhiYjgwMjJiODJlYTFjNjUwZDczMSBsZWdhY3ktdHJ1bmsKKzY2NTA5IDY3MDBmZDgxMjViYTVlMGQxYzk2ODE0MWI1MTJiYTVkNGViYmI1NTAgcHkzaworNjY1MTAgOWZlNDY3ZmYwYzA4NjM0YjNjZGYyMWM5YTk2NjI0Y2E5NDc2ZWEyNSBsZWdhY3ktdHJ1bmsKKzY2NTEyIDVhNzFhNjA2OGUzMDM1ODQ2MjdiNzY1Y2FmZTJlNDJiYWNiZmJjZDcgbGVnYWN5LXRydW5rCis2NjUxMyBjNDVhNjk2NWJjNDY3NzdlNDAxN2I5NzUyMmNkZTdjZGIxNGU5YjNjIGxlZ2FjeS10cnVuaworNjY1MTQgNjI2MDMyNTk3NzEyMDMxMDEyNTBmZWFiZTNhYmI5ZjViYTgxM2NmYSBsZWdhY3ktdHJ1bmsKKzY2NTE1IDE1YWM0OTYwMmEwNjQ4YjFiNTZmOTEyMjFjNWYyNmRlYzdhY2Y3MmEgcHkzaworNjY1MTYgNTc4YWQ0OTFkNGE0ODZiZDAwMTdkNTg2ZDFmMDVjMzg2NTA5OTIyZSBsZWdhY3ktdHJ1bmsKKzY2NTE3IGMxMzcyOTMyYWU4N2NjOTU1NTcwZTI0OTcwODJjZjY2YzExYTA2YjYgcHkzaworNjY1MTggZjNlNWE4NTM0MjA2MjkzNjMwOTllNzM2YjVjYjIxMDUzNGM3NTdjYyBweTNrCis2NjUyMCBiNmE4MDMxODg0NTRkNzYzMmVjMjNhMjRiN2Y3MDNlYmE4NDJhYTViIHB5M2sKKzY2NTIxIGNjOWQ5ZDk2NmIxYTRmZjUwMmVmNGY2OGFlMGY4MGRmZWU1MDEzNTIgdGxlZS1hc3Qtb3B0aW1pemUKKzY2NTIyIGQ2YjhkNDZhMzQzMWJhYzRiYTQ2MGMzNGI4ZGZkNzZhNmZiMTk2OTQgcHkzaworNjY1MjMgNTBiMWU1NTc1NmE1MDdjNTFhZGUwZThhYmIzNmFmNzg3ZGU2NzBlZCBsZWdhY3ktdHJ1bmsKKzY2NTI0IDRmOWE5NzE0MGYwZWZiOWFlYzhhMzQzZjk3YjVlYjQ0NzZhNTAwODYgbGVnYWN5LXRydW5rCis2NjUyNSA2MWM2OGUyYzU3MWIwN2RjZTVhNjYwNDM2NWI3M2QzZmYwOGIzZTg3IGxlZ2FjeS10cnVuaworNjY1MjYgODViNDgwZWYyNjM1YzY3YTkyNDI0MDk3MjM2NWUxMTUyMGFkNmEyOCBsZWdhY3ktdHJ1bmsKKzY2NTI3IDhiMTdmOTJiYmM0ZGI2NjQzNTYyNGNkMGQ1Y2VkNTFjN2Y3NWE0ZjYgcHkzaworNjY1MjggNmI5ZjJjZTVmZTkyMmU4NmMwMjA2NDZhNTY4NGQzMThmZjFiZWQ4NSBweTNrCis2NjUyOSA3MDFkYjVlOTY3YjVkYjEyZjIwODMzNDYyYjMyZGVkZjMzM2FkNjZkIGxlZ2FjeS10cnVuaworNjY1MzAgYjg0MTU1MmE5YTczYjk0MWU0MWEwMGYzMTJhNDBhMmMzOTA3ZjhmYSBsZWdhY3ktdHJ1bmsKKzY2NTMxIGY3MWY2NGFlNjUxOTY2ZTUwNGUyYmY1ZDAzNjg3YTc4YmYyM2Y1YTYgcHkzaworNjY1MzIgZTUyYTM1OTVkZmRiYzUwNmU3YmRhMzc0OGQzZTcwMjJhZjAyYTBlOSBsZWdhY3ktdHJ1bmsKKzY2NTMzIDE3Nzc2ZGY2ZmRhMmNjMzA0MTYyMzNmM2QzZmUzOTNiYTdiMzEyOTQgcHkzaworNjY1MzQgYzJlMmU5MjYyYjk5YjIwOGNmYjZlOWM5YjU0MjdhMWY2MTQ3ZWY1OSBweTNrCis2NjUzNSA5MjNmYjQ1OGJkMGM2OWVmOWIxMTc4NjlhZDZlNGViNTJlMDVhMGEwIGxlZ2FjeS10cnVuaworNjY1MzggMzg2YTAzZWMxZmYwMTRkZjdiM2VkY2NjZmVkMzRmNDhmZjNiMzg4MiBsZWdhY3ktdHJ1bmsKKzY2NTM5IDU1Y2IzZTExYmRmNzRlNjYyN2ZjOGVjYjg5Yjk3NmE5ODI3NmNlNTEgbGVnYWN5LXRydW5rCis2NjU0MCBjMjAwNWMxY2Y2Y2RlOGE1NWY1NmExNGJlOWQyNTJmNTRiZmFjZDhmIHB5M2sKKzY2NTQxIDQ5OTJmZDQ5YTk4NWQ2NzhjYzRlMGI4MWE5OTA1M2VlZmM2ODk4NDQgcHkzaworNjY1NDIgMjVmODA5MTIzZGY2MDYzZjY2NWM1NjFiYmM2NjU0YzUyNTBiYWU5ZiBsZWdhY3ktdHJ1bmsKKzY2NTQzIGQxYWI4M2FkNWUyYjkzNGYzNDA0NTQ0NzdlZDg3NWU2YzI2ZTE5ZDIgcHkzaworNjY1NDQgNmI2NzljYTI0MzY5ZmExZDIzNGQyMWExMmM3NjE5OTcyYzEyY2IzYSBsZWdhY3ktdHJ1bmsKKzY2NTQ1IGYwYzI1ZTZiYmFkNTgwYjdjYWY2MDVlOTM5Yzc5ZTA4OGI1YTdlY2YgcHkzaworNjY1NDYgMzlhOTQ3MTk1NDU0ZGMyMDhiYzEyYTkzMmU4MjRhN2ZlNDNiNWM3NyBsZWdhY3ktdHJ1bmsKKzY2NTQ3IGMxNzc3MDA3NGE0YmU5NTQ5MTc5YWVjMjYzMGU4YzFiNGY0ZDRlMDkgcmVsZWFzZTI1LW1haW50Cis2NjU1MCA1NDYxM2JhMWRjYWRmNTAzN2E3NjM0N2VjMDM0MDNhMzg5MGVmNzBiIHB5M2sKKzY2NTUxIDZhZTI4YTUwM2M5ZDE2YTdkYjJkY2I5OWVlNDMwZjdlNDRmYzI0ZmIgcHkzaworNjY1NTIgZjNkYTU2ZTNmY2U0YjE0MmYyMzYxYThhZmI5N2IxYzRiYmMyZDMwZSBsZWdhY3ktdHJ1bmsKKzY2NTUzIDkyMmI5ZTAzYjI2MGVjNTkyZjE2NGY5MDA3NmZmNzM4NmRmMWE0MDEgbGVnYWN5LXRydW5rCis2NjU1NCBmZTY2MGU4YzYzYmE2OTBjZDU4YjkxNTM3MWQzMDM1YmEzZGU4ZTIyIGxlZ2FjeS10cnVuaworNjY1NTUgMDZjZjM1ZTZlMzA4ZWFiZmFlYTgzY2ExMzA1ZTRhMjdjOTMyYTZlNSBweTNrCis2NjU1NiBlODZlZDExMzUzNWNlZjBhOGI4OGI0ODdiY2IxMWEwNzQzNjgwZGVmIHB5M2sKKzY2NTU3IGVmNzVlYjNkYzQ4ZTgyMDJkZTkzOTIzNmM1YmU1ZjIxMjNmYjg3N2IgbGVnYWN5LXRydW5rCis2NjU1OCAyN2MxYmE3MTg2ZDhmNzI5YzQ3ZmM2YTZjMDRjOGFhYzcyMzQxMjBlIHB5M2sKKzY2NTU5IGRlOTBhNzJlM2UyMzQzOGE5YWVlM2I2NmRmMWZlNDc4OWY2YmU2MjMgcHkzaworNjY1NjAgMWQ1YzNiY2YzNWFkMzk4NmMwOGJiY2Y1YmY5Y2RlYjE0ZWUxZDQ2ZiBweTNrCis2NjU2MSAwMThiY2Q2NGMzM2U0ZjY4YzcwMmM0YjU3OWNkN2VlZmZlZTk3YTVhIGxlZ2FjeS10cnVuaworNjY1NjIgMGRlNWEzODhhMjYxODA0ZTc3ZmEwNjdkNThmYTNhZDkzMThmMjc5ZiBweTNrCis2NjU2MyA2NDYxNmU1ZDgwYjRiMjY0YjlhOWNmOTA4MzVkMjhmMThiMjk5NWRhIHB5M2sKKzY2NTY0IGY2ZGY1NjdjY2Q2Mjg5YTRkNjA1ZWM5MmRmYTEzYzg0ZTI3ZmY3ZGQgbGVnYWN5LXRydW5rCis2NjU2NSBiZTg5ZDJhMzRiMmY4OWEzMTdiYWZjZTA0ZjZiNDg0NTM4MDc2YjFmIHB5M2sKKzY2NTY2IGE1ZjI2YjNhMjZmZDllZThlNTRjYWMxNTNiMzcyOGE1MDUxM2QwYWIgbGVnYWN5LXRydW5rCis2NjU2NyBlZGY4YTZjNjkwMjhiNzc1ODk1YTFhZWE4ZTdhNzdmYTNkODg5YTY3IHB5M2sKKzY2NTY4IGYzZWIwMDA0ODdiOTM2MmMyZmNmNTQzZTM5OTk2N2Q0N2E4NWM0ODMgbGVnYWN5LXRydW5rCis2NjU2OSBmODQzMGI2ODc2ZmIzNmNmYTkwY2FlNmJhYmM0MjQ3NjdlZmUyZTJkIGxlZ2FjeS10cnVuaworNjY1NzAgYmJlMmUzNTg1MmNkNGQ4YTAyYzdjYTcyMmZmNWJkOTM4NTI3ZWVlMyBweTNrCis2NjU3NyBiM2MyOWRhOTM0ZjVlZGY4OGY2ZGUwYWRmZDM5MGY2NjM3M2ExMGI1IHB5M2sKKzY2NTgwIDI1ZGEwN2ZlMzYzMGMwMWI4OTkxOGYxMGM3Mzc5M2U4OTBhNzk4NDAgbGVnYWN5LXRydW5rCis2NjYxMCBkYjk5OWViMmJiZGM3NTlkMmI0OTcyN2NiNzUxYjAzMjQzODUxOTlmIGxlZ2FjeS10cnVuaworNjY2MTEgNjA2YWIyNWRkZWYxYjBiZTJmZGVlMzFkNThjNjkwZTNlYzI5OGZkYSBsZWdhY3ktdHJ1bmsKKzY2NjEyIDAxZmMwODNlMWRkZDM1MTAxYzJlMjM2MDU2MzQ2ZGI2ZWEyN2Y1ZTUgcmVsZWFzZTI1LW1haW50Cis2NjYxMyBhODcwYzNjNmE5YWQyNDEzNTg5MmM3N2U5ZmE1ODA3M2VmNmM3NTk0IHB5M2sKKzY2NjE0IDEyMGI0YmNmMDlmZjcyMGU2MzJmNGVkZTVkNzkxZTk0ZjllZTU4YmMgbGVnYWN5LXRydW5rCis2NjYxNSBhMDA2MjZmMmQ3MDU3OTIzNWFkMDEwNDJmMTM4MTA5MTQ5MmIxMzhhIHB5M2sKKzY2NjE2IDlkMWM1MzExNjhjYWQ3YTFlODk1ZjY3MGI4ODJhOTIxYzhjNjI2ODQgbGVnYWN5LXRydW5rCis2NjYxNyAwOTFhNmM1MjI3YTk0NzViYTNhZTZhM2YyMTEzM2Q0OGYwNmIzZjU5IHB5M2sKKzY2NjE4IGE5MWU3OGFiNGQ3ZDIwMzEzNmY4NmU4ZjBjOWFlYzMzZjhlMDBkMGIgbGVnYWN5LXRydW5rCis2NjYxOSAzZmViY2JmZDM2MDFjNDIzYTMxYjI3MDc0NWFmZTJhZTJkY2I2MTk5IHJlbGVhc2UyNS1tYWludAorNjY2MjAgNWU1YjE1YjY5MmUxNDE3ZjZhOThjZmIyOTAwYzFlZjg1MGY2MTM5NCBsZWdhY3ktdHJ1bmsKKzY2NjIxIGFjYzQ0YjdmYWRlMDlhNmZlNzJjMDk0MTRmNTgxZTQ0MTA3YTA4YmQgcHkzaworNjY2MjIgZGJhZWMyNDlkNTZmMTJiNWY4OTY5YTRlMzRiY2I1ZjgzZGIxZmQ1MyBweTNrCis2NjYyMyA3OGEyMWIyNzhlMWI5Yjc0YTgyZGVmNDFiZjVhNTNjNDQwNmRjMmUwIHB5M2sKKzY2NjI0IGYzMjNmYTRlNDhkNzlhMjg3MTQxMjZmZjc0MzhkMjg3ODgwMmU5MDAgbGVnYWN5LXRydW5rCis2NjYyNSBiNTUwZGU0Mjg1MWE4NWMxMDY2YzBkYzdmN2ZmYTQxNWEyNDIzNDVlIGxlZ2FjeS10cnVuaworNjY2MjYgYjIzMmUyZTllNzkzN2UzNDU3MzIyOTM2ZjkxOWUxZDBmYTYzZGM2MiByZWxlYXNlMjUtbWFpbnQKKzY2NjI3IDA2ZWJmMTJiZmE2MmNhNWI5ZWNhMmU3YWQ3MGQ2NTgyOGE5YzNlMmQgcmVsZWFzZTI1LW1haW50Cis2NjYyOCA0ZWVkZTVlNDhhZTY4NWFjN2JkOTU5MTJkMjdiNjdhNGExMzBhNWNmIGxlZ2FjeS10cnVuaworNjY2MjkgZTEzYzAzZTBjZTBiYjRjOTIzZDI2ZmQ3M2Y1NjY3MjUwMGZkMjFiNyBsZWdhY3ktdHJ1bmsKKzY2NjMwIGJiYWRiOTYwZmQ1YzFhOTc2OGYwOWQ5YmI3MWU3MDI3YjE2YzI1NTAgcHkzaworNjY2MzEgMzA0YmVhODczMWQyMWE0ZTA4ZWJkY2NmNjA1YWVmZmNiYjUyMzExYyBsZWdhY3ktdHJ1bmsKKzY2NjMyIGUwYzA2Y2FlZmJmZjMzZmE0NzA2Y2NlNTVlMzgwZjE1MDJhZjZjMGEgcmVsZWFzZTI1LW1haW50Cis2NjYzMyA2NDAzZjFlZGVjYzE5ZDI0YzRlYmFlYjYxNzVjNDllMTIxYTkyZDNlIHB5M2sKKzY2NjM0IGViMzVmY2JhNjU4ZWUyNWIzMTBiYTRhZDkyNDQzZWM2NjkwYjM3YjkgbGVnYWN5LXRydW5rCis2NjY0MyAwNzUwNDJjNzcyNGM3NGE0OWI2YjNlMDRmZDE0NDVhYzg3NGRkZmMzIGxlZ2FjeS10cnVuaworNjY2NDUgZGU3NWZiNGU4MDBjZWY5M2I5MjM0NTMzNmUwMDY4YWVmNTFkMGMxYyBsZWdhY3ktdHJ1bmsKKzY2NjUzIGNkYzdmNjM2Nzc4YjY5MjNkMGZmNzFlOTVmMzI2MDA2ZWZlMWQ2YjUgbGVnYWN5LXRydW5rCis2NjY1NCA4YTFkYmU1YzJiNzQ1YzE4NTViYTQwMTYzOGQ4ZGJmYjVmMjRmOTE0IGxlZ2FjeS10cnVuaworNjY2NTUgNTI4NDc2OGMyNjRjNTlkNTUwMzRhYzUxMWE2ZDBiYzg2NzNkN2Y3YSBweTNrCis2NjY1NiBkNzBiY2YzYjYyOGQ3YTJlZDYxOWJmOTNmNGViOTM5MDVjMGJiMDFlIHB5M2sKKzY2NjU3IDA2OTlhNzEyYTNkYmRkOGM1MmYxOGRhZDMwNjkxMjYxMzIxMmEwMGYgbGVnYWN5LXRydW5rCis2NjY1OCA3NjUxYjk0MTNjODU0Y2I2MGQwYzEwM2UzMWQ3MzRhOTEyMWExYmMyIHB5M2sKKzY2NjU5IDdhM2Y3NTJhZGYxY2Y4OTQ1MmI4ODM5YzY0MzFkZDkyNTE3YjBhYmMgcHkzaworNjY2NjAgNTMwYzgxNDE4YzI4MzhjYzgyMmE5OTBhMmEzZTNlYWJjMzNmOWM3MyBsZWdhY3ktdHJ1bmsKKzY2NjYxIDJjYTQxNTliYmU2NTQwNjYxNzNhOTI1MDFmOWUyNWQ0NmM5M2I3NDAgbGVnYWN5LXRydW5rCis2NjY2MiBjZTJmY2E0OGFjZTQzMjY2ODE4NTQ2MzEzYzlhMWQ1M2ZhODZmMzQxIGxlZ2FjeS10cnVuaworNjY2NjMgNzU1ZjM0YWI0MzhiMTkxNjdjMzcxMGQ1YjI0OGE2ZTM0YzI1NTljMiBsZWdhY3ktdHJ1bmsKKzY2NjY0IDIzMWYzYTI1Y2NmNWIyZGU4OGVkYTkwZjI0ZTYwOWRiOTA0MzAyZGIgbGVnYWN5LXRydW5rCis2NjY2NSBkYTA3MzQ4NGY1YWMzMDZjNThiY2M4MTk1ZDRkMDY3ZmY0YjQ3ZTNhIGxlZ2FjeS10cnVuaworNjY2NjYgNDg0NGNhYzA4NjUyNWQyYTk4NWY5NjkwMmE3YjgyYTZhZTk4ZjdjMSBweTNrCis2NjY2NyA2Y2M1YWNlOWY1MTNlMDA4MDBlMTAxYTc4MjU2ZTdkZTkyNWIwMWVjIGxlZ2FjeS10cnVuaworNjY2NjggZWM0MmY3OThmNTk3MzY0NDBhMDMxZmU2MmYyZDMzNzJkNTgyYmU2NyBweTNrCis2NjY2OSA1NmEzZmE0NDljNmM2YzEzNTY5ZjhjNGFkM2I5OWQzMDY3ZDAxN2E3IHB5M2sKKzY2NjcwIDUzYWNlMzk3YjljNWJiNWJmNTIzYzI4ZDkyYjMxMGVhZDc4NmQ5MzAgbGVnYWN5LXRydW5rCis2NjY3MSBkYmM2ZWRiYTcwYTdiNzY0YWE3NDY5YzIyMjM2Yzg1NmRhZGRiMWVkIGZpeC10ZXN0LWZ0cGxpYgorNjY2NzIgY2M2OWI5MzFhNjA4MmQ5ZDI0Mjc0OTI5YmVlMjQxOTAwMDFhOTczNiBmaXgtdGVzdC1mdHBsaWIKKzY2NjczIDVhOWE4M2NhZThmMWIyYWI5ZmY3MzUyNGM1NzY3Y2VhMWM2YTk0NmUgbGVnYWN5LXRydW5rCis2NjY3NSBjNWY1ZDZhMzEzZTk5NzNkZDRmMDk0Y2ZjZTkxNDcwOTAzZGNlNzc0IHB5M2sKKzY2Njc2IDY0YmE1MjQwYWYzMWE5MmJkODBhOTQxZjAzMmNmNzk2MGJkNGVjYmQgbGVnYWN5LXRydW5rCis2NjY3NyA3NGU3Zjk3ZGFkN2RlZGQxMDVhMTdhMmZjOGFiMGQ4MDNjYTBhMzcwIGxlZ2FjeS10cnVuaworNjY2NzggYTk1MDMwZjkzOWVkMDhkZWI5MzQzN2QwNmIyNjJkYTg1ZWUxMzcwZCByZWxlYXNlMjUtbWFpbnQKKzY2Njc5IDAyNDE3YjU2ZTRiMjFhOThjZDlkODZmYWQ2YzE5MzgwYzk1ZGQ0ZTUgcHkzaworNjY2ODAgZDU4NjE4NWE3YTUxNjdhZWUyYmRlOGRiOTk3NWM4OTdjOTAyZjQ1YSBweTNrCis2NjY4MSBjYWQxZDJhOGE5ZDNiOWIwZTA2NmQ4NDhhODZjYTM2MWNhOTI0NGU4IGxlZ2FjeS10cnVuaworNjY2ODIgNDA1MzZkZGMyNmExOWI4ZmVlMjUwZjQzNzMwNWNmMjU2NjM4MzdhNCBsZWdhY3ktdHJ1bmsKKzY2NjgzIDViMzUyOTQ4NTQyMThhOGNhZjE2MTZiMWY3ZWJkMmZhNjFkOGJmNDIgbGVnYWN5LXRydW5rCis2NjY4NCA2OWUxODRiOTkwZGM3N2IyZTU4YzIyZmZmM2FlOGJmM2YwNDdkNzdlIHB5M2sKKzY2Njg1IGVkYjVlZWNmM2JiOGJkZWI2ODU4OTZmNzI5ODc5MmM4NThiNTA4NzEgcmVsZWFzZTI1LW1haW50Cis2NjY4NiBkODhmMWYyZjAyMTM1ZjZlNDU3ZjQ3YjM4OTA2MTk3OTM5MzIwYjMzIGxlZ2FjeS10cnVuaworNjY2ODcgYWIzNGE2NDdlMjJmY2ViNTA0NTE0ZmZiYmUxZjA1ZWEzZTkyYjhmOCBweTNrCis2NjY4OCBiNDk2NGRmNjQzODQwZTQzYjFiYWQzNmI0M2I2YTExMDA4YThhNWI4IGxlZ2FjeS10cnVuaworNjY2ODkgZjRhZWIxMTNjOWVmYWRjZTY5NWI2ZGQ3ZDE4NjgzYzYyZmE0ZmEwMyBsZWdhY3ktdHJ1bmsKKzY2NjkwIDQxNTY1NTVmMzkxMTgxYmMwZDhmY2FjZTczNTNlNzA2MjczZmFjODYgcmVsZWFzZTI1LW1haW50Cis2NjY5MSAzNzYzMjdjYjY4MjEzYzRkMTQwMjE0MWQ1MmUwMDU2ZTRhMDBkZDBiIHB5M2sKKzY2NjkyIDdjNTY2MjQ1NDhmZDQ4MmY1YmFmZmRjZDA3ZTZhNTE5ZjU0YWM2YmUgcHkzaworNjY2OTMgNmE3MzEzNGY5NjAzMmVmMTE2MmU1ZmYyNzU5YjAyZWNlYzhkODY1NiBsZWdhY3ktdHJ1bmsKKzY2Njk0IGIyODAxYWNhOWQ2YjVmYmUxYTFhMGU4ZTg0ZDM0MzIxYmIyYmMxMzMgcHkzaworNjY2OTUgNTk4ZDE5OTM2MTg2YTM4MDQ0OGVlMzkxZmU0MGU1ODVhM2ZlNTg2YiBweTNrCis2NjY5NiBhZjZmZTlhZGIzOWMzZjNhZDUzOGI5NjMyODY3NDlhNTc5NzhiOGE5IGxlZ2FjeS10cnVuaworNjY2OTcgNmNlYWNkMDE1ZDY3OGE1M2MzMWVhY2FlOWM2OGU0M2UzYzlkOTE1MSBsZWdhY3ktdHJ1bmsKKzY2Njk4IGE0ZWQ1NGQ1NzY0YzkwNjMxYzBiN2I1NTAzNWYxYzBiNGExZjI2MzcgbGVnYWN5LXRydW5rCis2NjY5OSA2NzY1OTQ2ZTFhYzQ5ZmZiMzU0YmFiYTg1ZmZjMzgyMGJmMzA5MTAxIGxlZ2FjeS10cnVuaworNjY3MDAgN2YxZjllMThjZGZhMzI1YWU5NTY1MjU0NzBlMjIwNTc1OTU2ZDA3NyBsZWdhY3ktdHJ1bmsKKzY2NzAxIDg2MDQ1ZTFlZTU5NTBjNGEwMDA2MzFmZDZhZTY0ZDZhYTI3NGZiMWQgcmVsZWFzZTI1LW1haW50Cis2NjcwMiAxZjRlYTAyMjllYzY2OGNjMDU5MGJiOTVlNjIxOTYyZmEwOWEyOTIxIHB5M2sKKzY2NzAzIGVlZDRkNTMzMzMyZjBmZDkwMWFiMzBkMjkyZDVmYWY2YWFlOGI5MzYgbGVnYWN5LXRydW5rCis2NjcwNiBkMzE4MjM0YTAwZDc1ODZiOTVmZGQzNjkzNDRkMWY2YTIwMjcxNWE0IHRsZWUtYXN0LW9wdGltaXplCis2NjcwOCBlYTUzMTYzYjA2ZGUzMmE2ZmJiMzkwY2JiYjE0OTAxMzAxMWFiMTdjIGxlZ2FjeS10cnVuaworNjY3MTAgYjVmYjliMDAyZWMzMTczY2E5YTIzZDU2MGYyNDZiYWM4MDk0YWE4ZiBsZWdhY3ktdHJ1bmsKKzY2NzExIGFkYTZkN2Y3MWI1ZGYwNzZkOWUwYjM2ZWY3ZjBlZDIzZjY3ODg2NmQgcHkzaworNjY3MTQgNThhOTg4NGQyYmMzZDMzZjlkZjg1NTI4NTc3MDlkZmU5OWQxODM4NCBsZWdhY3ktdHJ1bmsKKzY2NzE1IDk1ZmZmNWE2YTI3NjUyMGIyZTdlMGY3NWZlMzAzZjQ5Mzc2NTY3YTUgbGVnYWN5LXRydW5rCis2NjcxNiBiYzRjYTgwYmI1ZmQ0YzkxYThiN2U3MDczZTdjNGQxY2MxYjQ3NzBkIGxlZ2FjeS10cnVuaworNjY3MTcgNTRjZDFjYzcwYTQ3OGQ4NTNlZjhjMzY0YTJlMDI3YjZmYTYwMjQ4MiByZWxlYXNlMjYtbWFpbnQKKzY2NzE4IDcyOTI4OTNmYzJjNWY4Yjg1MDgyN2NmMjQ4MjMyOTYwMTlkYmZlNWYgcmVsZWFzZTI2LW1haW50Cis2NjcyMSA3NDhlYzliMmFlZjEwMjdiZDkzM2RlNmY3ODliYWI4YmNhODgwZTYxIGxlZ2FjeS10cnVuaworNjY3MjIgOWQyZjI4MTgyODNkNWU4OWM0MTJkZDZmOTI5ZDU2ZGMwZGVhMDUxNSBsZWdhY3ktdHJ1bmsKKzY2NzIzIGE1ZjMwZDA2NDkzY2JkNGM5NWQ5YThkNmU0NmQ4MjE1MzZkNjZmYWUgcHkzaworNjY3MjQgODhlNjE4M2NkYjM4YzZiY2FmY2M2NDgxZTc1MDdiNjg5M2Q5MDVkZCByZWxlYXNlMjYtbWFpbnQKKzY2NzI1IDAzM2JiNWNhY2QwYTM0MTdiZTZmNGQ0NWMyMjc2MGJkMWYzMTUyMDQgZW1wdHkKKzY2NzI4IDZkZDg3ZGU4NTAzZDU2NTI2Y2NmOGUxNWQ3YmYzMTlkNjIxNjJmMmYgZW1wdHkKKzY2NzM2IDU2ZDE3ODg3NDgyMTMzZDliN2U1ZGQyODdhYjIyZmQxY2VhYTRmYjggcmVsZWFzZTI2LW1haW50Cis2NjczNyBlZWI1ZmEzZWY4ODlhMjIxOTBjNjU1OGMyYWRjZThmYzM0MDA4OWQ2IHB5M2sKKzY2NzM5IDljOTcxZDUyYTNjMzVmYWIyYWE2N2UzMzk3YTUzZTY3MTQ2MGViZDQgbGVnYWN5LXRydW5rCis2Njc0MCA4NzNkMWUzNjk3OWRhZTY3ZDk0ZTQ1NWI1OWUyODI1NGUyODE3YjUyIHJlbGVhc2UyNi1tYWludAorNjY3NDEgZjlmMDE0ODRlNDhiMDJjMWQxYzg4NjFjOTRmYWM4OGJhMmM3YzA0ZSBweTNrCis2Njc0MiAwNjhkOWI2MTRlN2JmZmFiNjhkZDI4MTEyYmIwZmYxMzhlOGY0MjAzIHJlbGVhc2UyNi1tYWludAorNjY3NDMgOGE3YzkzMGFiYWI2YTJjMjZlYWI2OTg5MWY0OWQ4YmU0OWFmZTVkZSBweTNrCis2Njc0NCBiOWFmYTdjOWNjMzVlMTVmYjY4YTlkNDAxYTZjMTJmM2Y2MTAxZDFjIGxlZ2FjeS10cnVuaworNjY3NDUgNzQyNmQ4ZDdjZTFiNGE1ZGFkZjU5ZGY3YTY2Y2NmOGVkNTQ3OWZiYSBsZWdhY3ktdHJ1bmsKKzY2NzQ2IDI4MWIyMWNhMDNmNjM2MzA0Zjk3ZTkzOGY2YmQ2MzgxNzAzZGI3OGIgcHkzaworNjY3NDcgMDEzODk1MjZiYTI1NTc5ZTM4NTU2YTJjMjgwMTA0YzFlZTI3ZTA2NSByZWxlYXNlMjYtbWFpbnQKKzY2NzQ4IDI3ZDdlZmEzZTFhYzAwNTUxOTJhOGJkNzQxMGQ0MmFkMzM2ODljZjYgbGVnYWN5LXRydW5rCis2Njc0OSA2NDJmMjBiMjI1Nzc5NTYyOGU2MzhhNzI0YmIwZjExZmM1MTE5NzQwIHJlbGVhc2UyNi1tYWludAorNjY3NTEgODY4OTNhMzk3ZGQwNTFkNGIxNTIzNWE5OGVjZTJkOGIyOGEzNGMxNiBweTNrCis2Njc1MiBmODEyYmMyYjZhN2JmZGY4NzJiZTE3ODU0MmU0YjIxOGQwMzJmYzliIGxlZ2FjeS10cnVuaworNjY3NTMgOTgxMzA2ZjRiNDA1MDExZTJlYzIwNWFmZGMwZTBjNWIyNjExZTFmYSBweTNrCis2Njc1NCAzYWVhYzRhNmEyY2ZjYjVhZTc3YmJhNzUyMGI5ODI5Yzg5MWJlMWY1IHB5M2sKKzY2NzU1IDQxOWU3MjFiM2NhOWUyMDMwNTI2OTIzODRhZTY5YmU5YzFkMGE2YjMgcHkzaworNjY3NTYgMjAwZGQxZDgyMGZjZjQ4NTkzZmU4M2I0YjI2NjA5NjkzMGUwYmRiMiBsZWdhY3ktdHJ1bmsKKzY2NzU3IDU3YjJkOWEyMjU5NGExNWQ1NzkwMmViY2JjOWY4MWQ4OGM5MWQyMTEgcHkzaworNjY3NTggNGY3NzIwMDRhODVkY2FjNTI2M2ZlOWVkYmM1NDI2NjdlNTY5MzY3NyBweTNrCis2Njc2MSA1NWY5MTRhZTkwZWQ2NGNhMDMwNTJlYzQ4MmFjZDBkNGUxNWVmZjljIHJlbGVhc2UyNi1tYWludAorNjY3NjIgMDM5MTBiODkyNjc5MWNkNjZkY2U0NWZmMjk1ZDEwZTcwZTIxMGI1MyByZWxlYXNlMjYtbWFpbnQKKzY2NzYzIDIyMjM2NTY4MmMxYmUyMDYyMzNhMTg5NzJjYWM0ZWQ3YTU4ZjM4ZjkgbGVnYWN5LXRydW5rCis2Njc2NCAxMDkxMDA4ZjJjYmQwN2Q0YTY3NDgzNDU0ODMxN2YwMzM0ZWMzZmI0IGxlZ2FjeS10cnVuaworNjY3NjUgMjgzZTU0MjY0YzBkNjdmZTRkZmJhZDI2MTgwOGYwMDBiNGY3Mjg5ZSBsZWdhY3ktdHJ1bmsKKzY2NzY2IGZhMDQwZDMwY2ZjYWE4YTYzMjc2NTk4ZWVlYWI3ZTJmYjJmZjA3ZjcgbGVnYWN5LXRydW5rCis2Njc2NyBlOGUxOTYzOTdmNDU3MWI0YjFkNjFmMWFmZDYxNjEyYjE5OTlmMjcwIGxlZ2FjeS10cnVuaworNjY3NjggNzQ5ODFkYzgzOWZkMjJmZmZhNjkwNmU4Zjg3YTlmOTgzMDY2NGViZSBsZWdhY3ktdHJ1bmsKKzY2NzY5IGU4MjI5OTJjZjZjZWNjY2ZkZjhhMjRiODEyMjUwMDI4MTlhMmZjNGMgcHkzaworNjY3NzAgOGVjODQ5NzYwNGM3N2U3ZjU1NDFkOThmNDZmZDE3OWYyMDlhZDIwZCBweTNrCis2Njc3MSBhOGY5NTk1YjlmNTUzNmRkOTc4YTA5OTdkNTY4MmI3ZDg5ZWQ1MzhkIGxlZ2FjeS10cnVuaworNjY3NzIgMDhjNDhlYTA1MDQ1YmIwM2ZhZDA2NWU0NTkwNjM0YjZhZWY2ZTExZSBsZWdhY3ktdHJ1bmsKKzY2NzczIGJmODFjYjg4OTJmNTFjZTczNjNlOTg5MzQyNzQ3M2QwMmU5YWI1NjggcHkzaworNjY3NzQgYjVmMzljOGE0NDIzOWU0Y2MwZmMzNzQ0ZDdlNWMwNDNkODFiYWE0OSBsZWdhY3ktdHJ1bmsKKzY2Nzc2IGY1YjljNmY0YzU5Yzc5MDVkMDA1YzEwZmMxNzc1MTU5ZGE5YmZmMGMgbGVnYWN5LXRydW5rCis2Njc3NyBlZjRiYjRkNWRmZGU5N2E2NWNhOGM0NzJmYWQ4ODI2NzY1MmNmYTU0IHB5M2sKKzY2Nzc4IDBiMWRiMjQyZDIzMmU0N2Y3ZTk1ZWM1MTk0YzY5OTg2NjEwYzM4YTAgcHkzaworNjY3NzkgODRjY2Y5MWEwNmNjNTQ1MmE1ZjhjNzM3NGNhNTkxZjk0YzVjMjAyOCBweTNrCis2Njc4MCA4YTg5MmNmMjVlN2FhNmIzNWY1YTMyNTIxY2MyYjMwZWM4ZTdhOTQxIHB5M2sKKzY2NzgxIDE2YTE5NGRhNzdkZTk2ZTU3N2MyN2Y3MTQ2Y2UxZTEwY2JlNzY5MzMgcHkzaworNjY3ODMgODQ0MmYxMzcyMGE0ZGMwZTY5NjViZDE0ZTRlNzA3NDBiNjYyY2UyMyBsZWdhY3ktdHJ1bmsKKzY2Nzg0IGJlMmY4NWJlNTY2ZTUxNjMyM2ZiNGM3ZTI2MTNkMmU1NjYwZDcyNjMgbGVnYWN5LXRydW5rCis2Njc4NSBjNTZmYmI3YzE2ODljYThiMGQ5YTQ3ZmRhYWI3YmNlMjg4YTZmZDY1IGxlZ2FjeS10cnVuaworNjY3ODYgODg1ZmRmNTk3MGNjNTYzYTVjMGFhYTY4NDM5ZGI4MGM1MmMxMTcyYSBsZWdhY3ktdHJ1bmsKKzY2Nzg3IGIyMWRlMDQyMTM5NWQ1MDgzMjQ3MjZmOTAyOWRjODdhZTg5NTJiMTUgbGVnYWN5LXRydW5rCis2Njc4OCA1ODA4YTdhZTAzYWNkOTA3ZjA5MDBiZGQyMjE1YjU4YWNiMGJlYzhkIHJlbGVhc2UyNi1tYWludAorNjY3ODkgMzU2ZTg4ZDRhZjMwMjNjN2JlYjE2Yjk3ZjRjMjQ2Y2Q2NzIyNTBmOSByZWxlYXNlMjYtbWFpbnQKKzY2NzkwIGU1OTFlNzVlODNhMmYxZjAyNzAyYzZhYjM2OWJhZTI5YmY2NTNhM2MgbGVnYWN5LXRydW5rCis2Njc5MSBmMjFhM2Q4NTg1YzY1NTQ0OWZkZGNjYTIxMmQxYWU0NDQ1OTM4Yjk1IGxlZ2FjeS10cnVuaworNjY3OTIgYWY3YTM5OWZjMjcyMjJjMjA2NzNhMTYyYjA3MmNkYzUyN2Y2MzBhZSBsZWdhY3ktdHJ1bmsKKzY2NzkzIDk4NGE4YmM2ZDk1NmYzNTUxNDQ2MDc5MmQ4MzViMjczYzQ2N2I5N2YgbGVnYWN5LXRydW5rCis2Njc5NCBmNzMxZjA5ZWE4Mzk0YzRlNDhjMzU5YTZkOTkxYmQ5OGIyNzhmMmQxIHB5M2sKKzY2Nzk1IGFjMzE2ZjI1MjI5YzkyMDRlMjY3Y2ZhMjJiOTZmOGRhZmY4NzY3OWQgcHkzaworNjY3OTcgNzNjZTNhMTEwNDZmYmRjMDA4YmNiMzRlZTgxYzQ5Mzg4ZGQyYzU3MSBsZWdhY3ktdHJ1bmsKKzY2Nzk4IGZmNWMzZGQ2OGQwN2MzODhhYWQyZjA5YmFkMGJjNjY1MzJmZTI0NTMgcHkzaworNjY3OTkgMDU2MDQ1NTViOGQ0MDBkYmJiMTcyZjg0ZjBmMmM1ODQ5NGJmZjcxZiByZWxlYXNlMjYtbWFpbnQKKzY2ODAwIDJlNzk0NzU3YmRjODRhYjc4YWQzNjQ2N2Y2OTEwZjIzMjcxOTU1YmQgcmVsZWFzZTI2LW1haW50Cis2NjgwMSBlMDk2YzUyY2Q1Y2E5YTEzZTUxOTRmY2QxZTJjZmQyNWQ3ZTIwMDQxIGxlZ2FjeS10cnVuaworNjY4MDIgOGY1YThlYTViYTc2ZWFhM2Y1ZmI2OTIxZjM3OGMyOGIxMWIyMDQ5NiBweTNrCis2NjgwMyBkYTk1NWMzMzk2NWI0OTIwMzI1MGRmM2E1ZDZiYTMzYmE1M2JiY2YxIGxlZ2FjeS10cnVuaworNjY4MDQgMzU2YTFmNmVmMzRmZDI4NzdhZWQ4YzdhZjc4MmM5ODVlOWNhZDljNCBsZWdhY3ktdHJ1bmsKKzY2ODA2IGM1YjI3ZGY3OWQ3ZDZkOWJmNmIyNTc2MjAxMGJiYTQzMGU2YzJjY2EgcHkzaworNjY4MDcgYzA0Nzg2NTE0NjBmY2FmZDdhOGUxOWIzZTQwMWUyNmE1OGFjMzdlMiBweTNrCis2NjgwOCA5ZTQxYzVlN2UzNjAxOTk2OWIwYjJlZDIzZDRkNWE2NmI5NGI5MjlmIHB5M2sKKzY2ODA5IDUyNGFjNzQ0YWUwNDM5NjY2NDAwOTMwOWYxMGFmYTI2OGJjMGU0NTQgbGVnYWN5LXRydW5rCis2NjgxMCBkYzk1ZTQ2ZjFmM2U4OWE5YmQ2MjBkMzQyN2U2Mjg1MDMzMjA5MjU0IGxlZ2FjeS10cnVuaworNjY4MTEgYzJkMDE5NmVhNThiZDQ2YmVlMzkwODQ3MmNmMjk4ZTZhMTk5ZDc1MCBweTNrCis2NjgxMiAwMmRkNWRiNjI5MGY0NWJlMmVlYTFlYmQ1NzNhZTlmY2I4OTFlNDU1IHB5M2sKKzY2ODEzIGM5MzNjODQ2N2JkZGFhZWViZjRhZmMyZjIzYjlmYTY0OGU1NzIzZWQgbGVnYWN5LXRydW5rCis2NjgxNCBjOWM3OGUwMGRmNjczZTY0MzU3M2U1YmM1YjAzNGZiNDUyM2YzODI2IGxlZ2FjeS10cnVuaworNjY4MTUgYzVhZTkzMmY2M2M5ZGEzNDhiNmFkNTI5Zjk1OTZjOWNmOTg2MTJkYSByZWxlYXNlMjYtbWFpbnQKKzY2ODE2IGY1MTE1YzEzMmQ0YWE2YjRkOTE3MDUwZDgwNTI0YzNjNmU1NDdmNzggcHkzaworNjY4MTcgZGZlMzEwYTQwMjQ1OGQxMTY2YjZiMGIxNGY4YmJmOTFjOTQxNGExZSBweTNrCis2NjgxOCA3YWVjMDAwMTVhOWUxNTg5NGRiZGU0OWNmZDIyYTgzYjU2ZTM3NzkyIHB5M2sKKzY2ODE5IGQ4YjRhNjFhYmYyNWY3MTVhZTNhNjY5NjAzMTQ4NTZlYTFkNjE0NmUgbGVnYWN5LXRydW5rCis2NjgyMCBkYmQyYjE4MTdhNzVkNDI4ZjA0MjFmNjhmZDNjNjIyMzkzMmI2YmYxIHJlbGVhc2UyNi1tYWludAorNjY4MjEgMTI1OTg0YjcxYTc2OGUyMDA1NTVlODRhMjM1ZGU2YmRiMjNiN2Y5ZSBweTNrCis2NjgyMiBlOTkxNTM4YjlhODc2Yzc3NGU2MDkwODg3MWJkYzgwODY4NmE4MDk5IGxlZ2FjeS10cnVuaworNjY4MjMgOWM3ZWQ3MGFhMmMzZmU0ZjhjZjRiOTQwYmUwMTQxMjI2MzIzNzhkYSBsZWdhY3ktdHJ1bmsKKzY2ODI0IDdlZmRkYWU1MGQyNTUwMzkxNTIxZWMzNjMyOTkwMzJhYjBlOGU1NDYgcmVsZWFzZTI2LW1haW50Cis2NjgyNSA2Njc5YzMyNTJmOWIwZWIyNWRkODMyY2IzOGQxMDY1NzRmMTY3OWJiIHJlbGVhc2UyNi1tYWludAorNjY4MjYgZGQ5N2RjNzlhZTBhMDVmMTRiN2RkYzE4MzgwZTRjNTlkZTRlZGRlMCBweTNrCis2NjgyNyA5MTU4NzgxOGFkYjgzODA0YTBkZWFkYWQ4YzY1N2IxODM0MzBmYjBlIHB5M2sKKzY2ODI4IGQyMTQwZGU3NjQ3OTRlN2U0ZjJhYjA0NTg4ODI1YTM5NGYyMjY4YTcgcHkzaworNjY4MjkgMWM5ODA1NTRiNTRiMmMxMGQ0YmI3ZWE4MDViZDRmOTU4OTJkM2ZiNCBweTNrCis2NjgzMCAwYjJmNzY1YmE0Zjc3NWNmNTljZDVlNDhhNWM1N2U5MmMzYzg2NDUzIHB5M2sKKzY2ODMxIDgyMDkxZGY2NTFiZTdhOTE3Njc3NzE5MzE5MzcxZmM1ZmYxMzExZjggcHkzaworNjY4MzIgY2I3ODhlMDg0NGU3ZjlkMDgyODU0YTIzZmQ1NDMzMzA3MzQzZmEwNCBsZWdhY3ktdHJ1bmsKKzY2ODMzIGNlN2I4YzMxN2RhMjBmOGE3NDVhNTJmOTM2NDE1MDI3N2VkY2U3MGUgcmVsZWFzZTI2LW1haW50Cis2NjgzNSBkZWVmMjg0ODIyZjc1ZDA3YTkyOGMxYTUyNWU4NjM3NjU2MTY4YjE0IGxlZ2FjeS10cnVuaworNjY4MzYgMjEwNjBhNTZkZWZjODgxZTY3N2ExMWQxMTM5M2ExZDA4YjQyMTc1ZCBsZWdhY3ktdHJ1bmsKKzY2ODM3IDZlN2I4NTNlODYxNjA5MzM0MjcyNzhkYjI3M2E1NWZkMGZlMDhkN2YgcmVsZWFzZTI2LW1haW50Cis2NjgzOCAxZTViMjA1MGVjNmFjZDQ4MmY4OTkzYTYxNTI0ZGM0NGYyZWY2OGY3IHB5M2sKKzY2ODM5IDU5ZGFhN2NmOGNhMDk3OTUyZDA5ZGI4NTMzYThiZDgzN2IzMDU4YmYgcHkzaworNjY4NDMgNjllYTEyZGI5YjI4YjU5ODMyMmQxYzY1N2FmNjY1YjlmMjczZGU2MiByZWxlYXNlMjUtbWFpbnQKKzY2ODQ0IDg2MGY2Mjg0OGFmMDJmYmQ4Mzg1NTdkMjgwNWUyYzM2ZWYzMjExOTcgdGxlZS1hc3Qtb3B0aW1pemUKKzY2ODUxIDAyMDVjZjBiMWFkYjlmYmUzY2I3ZGVmYWRlMzI4ZGU1ZTEyMWJlNjQgcmVsZWFzZTI2LW1haW50Cis2Njg1MiA5NGQxN2NmM2Q4YmJiZTAyNDJkMjJlNDg0OTMwMjUwZTlmYmVmODNmIGxlZ2FjeS10cnVuaworNjY4NTMgYjRmY2IyZjQ3MTAxY2JiZGUxMzNjZjUwYWIxNGI3YjY4NmQyNGM4NCBweTNrCis2Njg1NCA0ODQ1ODEwZjU4OGVhMjhmMDQ3MDMwMzNkMDg0YzllZTNhNzViMzkyIGxlZ2FjeS10cnVuaworNjY4NTUgNTc1ZjY1ZjAwYzZjMDkyM2MwYjI2ZWE5M2YwYzMxYzE0OGU0YWYwYSBsZWdhY3ktdHJ1bmsKKzY2ODU2IGQ0YjYxM2RhMzhkY2NmNjg5YjUxODU2MDI0NzVhYTE5YmJiZjE2YjQgbGVnYWN5LXRydW5rCis2Njg1NyAyYmYxYzFiZDhkOTZlYjBlYWYyOGM2NWZiNjhjYzExZWI5OTNjZWNlIGxlZ2FjeS10cnVuaworNjY4NTggOWMwZWQ0YWVjZmJkOTFkM2JjODI4ZjRhYmJhZTRlNjE5YTFmYzMxZiByZWxlYXNlMjYtbWFpbnQKKzY2ODU5IDUxODc2YTQwM2MwZGY5YmM1Njk3MDVjN2I5YjJlZTdjODY3YWM3MGUgcmVsZWFzZTI2LW1haW50Cis2Njg2MSBjZTY0Y2JhNTFjMmI3ZDllM2MwNmM1NTkyYjVmMDRkYTVjMTg4ZmFmIGxlZ2FjeS10cnVuaworNjY4NjIgMGRhM2MzMGZlOWI1MjNhYWYxN2M0MzBiMThiNjBlYjcwOWE5NzhhNyBsZWdhY3ktdHJ1bmsKKzY2ODYzIDU1MGQ3NTE2MGNjNGY3MzgxYjliNTFmMjVkZmUwNTU2YmQ0MzE0MzAgbGVnYWN5LXRydW5rCis2Njg2NSBhMDI1OGJhZWQwMDU3YzA2NTM1NDQxNzFmOWI3ZTYxNTExOWQwZDc3IHJlbGVhc2UyNi1tYWludAorNjY4NjYgMGUzNTlhZmMwNjQ2ODEyNTNkMDFkMDRjYTRmMGQ2NzMyMTgwNzM2NSBsZWdhY3ktdHJ1bmsKKzY2ODY3IDBiN2UwMjM4MDNmYjM3MmUwNDUyNTFkM2JmMTg1NmMwNDQ1YWU2MDcgcHkzaworNjY4NjggMmEyY2RiMjg1NjU2ZGUyZjNmNjkzM2Y1OTgzNjNiMjVlZGMxOGE5NSBsZWdhY3ktdHJ1bmsKKzY2ODY5IDY2NWZhMDU2MzJmN2FiNjgzY2M0ZmM1NDdiZDY3OTdhYWE4NzM4OGYgcmVsZWFzZTI2LW1haW50Cis2Njg3MCAwOGQ2ZGQ2ODRhNmIzMTBmM2Q0ZTFiODM5NzlmY2IzYTc2NmRjZDcxIGxlZ2FjeS10cnVuaworNjY4NzEgM2RkMTY1MWFmMzVkZDRiY2IyNThlZjI4YmRkMzRmZmMwNDA2YjVkZCBsZWdhY3ktdHJ1bmsKKzY2ODcyIDM0MmY3MDE4OWVhOWU1YjU4ZmM5Nzg1MDlmZTMxOTViYzJhYjNlM2IgbGVnYWN5LXRydW5rCis2Njg3MyBjMGFjNDc5ODRiMTEwNGRkYmMwYTA3NDBmZWQ0NzI3MmJjNjlmZjQ3IHB5M2sKKzY2ODc0IDc5NmIxYmI5NTU0Y2I3ZWE2MjUyNTYxMTBiZDRjNWExZmRjNTg5ZTkgbGVnYWN5LXRydW5rCis2Njg3NSA1YTA5MjEwMWYwNjk2M2UyNTBlNWJmMTRiODg5ZDk1NjVhZTc5YWNiIHB5M2sKKzY2ODc2IGJkZjRkYTVkMDRhZDliZTUzNThjMGY0YTJhZDU1ZWRiYzdiMWM0MTkgcHkzaworNjY4NzcgZDNkZTA4MmNhMDMxNGE5ZWE0YjE5Yzk0ZGJlYTIzM2ZlY2JkZDRlNiBweTNrCis2Njg3OCBlNjcwMmMxYTA3ZDc1MmIzZWU1OTQ3YjgxZjMwNzA2NDMzNmY2ODM1IGxlZ2FjeS10cnVuaworNjY4NzkgMTg3MDA0ZGY1NzljYjAyMTBkNzcxODhhM2YwNWYyOWYwZTU2ZWVlMiB0bGVlLWFzdC1vcHRpbWl6ZQorNjY4ODAgOTljNzhkNjBiZTEyNWUzZTM4ZTA0MDg1OTU4NTYxMzIyMGMyNWMzZiBweTNrCis2Njg4MSAyZjBkNzM4NGNjMWMwYTgzM2QxYmUxZThhZjdhMmM2MmZkYjdmY2ZiIGxlZ2FjeS10cnVuaworNjY4ODIgMDhhM2U2OGYxZmNiYjExY2I1YTA0Njg5NDFjZDZjMmNiMGIwNmRjZCByZWxlYXNlMjYtbWFpbnQKKzY2ODgzIDcxZmE3ZDNjYzRjNTlkYmVmNzY3MzRlOTg2YjE2ODYxZTk0YmEyZmEgcHkzaworNjY4ODcgOWZkZjhkOGRlMjg3NWE3ZDU1NmM5NTQwZmNiMzdiMjk5NmMzZmEyZCBsZWdhY3ktdHJ1bmsKKzY2ODkxIDYyYzI0ZDRhMWY4ZjYyMDlhMDJjYmRkYWYxYTAwMDU3YzczMzc4ZTYgbGVnYWN5LXRydW5rCis2Njg5MiBlMWE4OGU4Yjk2NDliZmFlN2VmYmY3OTBmYWZmOTY3NmEwYWM1NjI1IHJlbGVhc2UyNi1tYWludAorNjY4OTQgYjA5ZTcwNTNiNDcyYzM5NWUwNWE0YWI5YjRlZjVjOWM4Mzk5YWFlZCBsZWdhY3ktdHJ1bmsKKzY2ODk1IDVlNjY2MzI4NmFiYzU3YzliOGNhMjU1NTBiMTJjNTYwY2E1NDY5MjkgcHkzaworNjY4OTYgYWM4NmU5NTM1NThmNDQ2Y2Q0ZmY2NmI0MTI4MmYzM2ZiYzYzODllNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjY4OTcgMGYwYzIyODM1ODNlZWI4NzEwMmMxNzAxY2I2N2UzMjEyNzllMjE3ZiBweTNrCis2Njg5OCAyMzJhMjJjZmRlYThmYTk5M2ZiYTQ1N2Y4ODYxYmVkNjE5MjA1ZTQ5IHRsZWUtYXN0LW9wdGltaXplCis2Njg5OSA4NGYwMTc0MjBiOWI4ZTFiNmE5MTQxOTAxMDlmNzVkZjkxNjU1N2IwIHRsZWUtYXN0LW9wdGltaXplCis2NjkwMCBiYjUxMTU5ZTcxZGZjMzE1MmUwM2EyYjAwMjYyYTYxMDNlODRhMmNhIHRsZWUtYXN0LW9wdGltaXplCis2NjkwMSBkMTdjZmVlNGYyM2RlZmJlYTUzNmU2MDUwYWYwNDk0Mzk3MGNlZTgzIHB5M2sKKzY2OTAyIGZkY2M4YTMxMzUzNzQ0OGY0NjBjMjRiZWM1OWNhYmQ5MzdiODljZjkgbGVnYWN5LXRydW5rCis2NjkwMyA0MDlkYWI4YjFkMzQ0OTY5OTFmNTkyYWVhMDhmMmQwMmMyODNiYjQ1IGxlZ2FjeS10cnVuaworNjY5MDQgNDgxOTRkN2FmMzJmMDI2ODFhNzc2ZjBlY2U3NjcyN2Q1N2IyZTc4NyBweTNrCis2NjkwNSAwYWRmNmJkYjE3MGY5NzNjYTU3YWU4MDdmZGMzOTE4NjZkNjgxOGY0IGxlZ2FjeS10cnVuaworNjY5MDYgNDczN2U1ZGY1MGY0ZDdmZTllYTgyYjYzMDcwZjFjYWU3NjM5ZDYxMSBsZWdhY3ktdHJ1bmsKKzY2OTA4IDJhMTA5NmI0ODE3YTJmNmZlMmM0ZDBmMDNlN2U3MWRkZjZkNTc0M2YgcmVsZWFzZTI2LW1haW50Cis2NjkwOSA1YWZjOWZmYTgwYmI3OWVmNmIyYmMxM2MwYjA0MmM2MzhhMmQ4ZGE2IHB5M2sKKzY2OTExIDAxMTExYzQwNjE2ZjU5MGI5MWYyOWIyOWJhMDJjYWQ4OGU3ZGQzMTMgbGVnYWN5LXRydW5rCis2NjkxMiA5MmQwODkwMzM1YzI0OTQ4Y2EzMGNlMWNiMzVhZTZiZjFlYTg1ZmJmIGxlZ2FjeS10cnVuaworNjY5MTMgYjhmYzc5MGEyN2FlYzhiNjhiMzhiODAyMGFiNGZiZmI0MzdiM2I2YSBsZWdhY3ktdHJ1bmsKKzY2OTE0IDhkMmE2OTcxMWE5N2NlZDViYjA0M2FiZTQ5OWMxN2M5M2MzMWI4NWQgcmVsZWFzZTI1LW1haW50Cis2NjkyMCBkMDYxOWUyMTBhYzQyZmUwOTdjYzAyNTBjOGJjY2QwYjRlZWEzYzM3IHB5M2sKKzY2OTIyIDY5MzgyMTlkYzVhNjQ2NDg3YmZlYzgyOTYwOWYzYjE3NTdlY2YwYzQgbGVnYWN5LXRydW5rCis2NjkyNCBkN2E3Mjg0MjBiMDNhN2IzN2U4MTViM2Q4ZTQ1ZDc3YTMxY2M2OTA4IHJlbGVhc2UyNi1tYWludAorNjY5MjcgMTk5MjhlNDVkMThiMjE3YmVhZDk0MzVhNTQ3MDlkZWZlNzE0YWNiMyBsZWdhY3ktdHJ1bmsKKzY2OTI4IDlkZWRmYjhlNTY1YzQ0NWQ1MzRlMTcyYzBhOTQ4ZmEyYzgyYjVkYWMgbGVnYWN5LXRydW5rCis2NjkzMiAzYzNhYmQ1ZmM4MzM5MjM3MjQ3MmQzZDJkY2EwMzViYWNmMDgyNzUxIGxlZ2FjeS10cnVuaworNjY5MzQgMDBlNDY3ZGI2MTgyNTQzNmJkMGMwNTg1OTk5OWEwYmE5MjMxMjA0OCBweTNrCis2NjkzNiBhNTc4MTQ3YmI1YzEzMDU1OTRmMmVjYjBmNGM5ODVmZDU0OTczMDUwIGxlZ2FjeS10cnVuaworNjY5MzggNDYyMjUyMTFlNTAzYTE5NTRiYzgwNjFiYWMxMmVmNDMxNzI3MTQ2OSBsZWdhY3ktdHJ1bmsKKzY2OTM5IDI0MWUwMzM3MWM3ZTQyNjMyZTI3ZWYzMjIyMWNlNTdkMTg3YjAyZGIgbGVnYWN5LXRydW5rCis2Njk0MCA2MDI0ZTBjYWJhNjQ4MDJhZDkzMmJmY2NmMWU5NTdmYTBmNGZlOTY1IGxlZ2FjeS10cnVuaworNjY5NDEgNGUyZTY4ODRmZDI4ODc2MjJhYWViZjk1OWI2MTJmMjQ3ZGNkNWEyMiByZWxlYXNlMjYtbWFpbnQKKzY2OTQyIDhhODkxMzJiODU5ZjFlYjRjMjVkMmQ4NDdiNWUzMmIxMjMyMTZjODggbGVnYWN5LXRydW5rCis2Njk0MyBhNTNiYjgzMzBhNjRjNTFiY2MwYTQ4ZDY4YTI0NmNkZTQwNjM1M2VhIHB5M2sKKzY2OTQ0IDUwYzg4NmRhZWRmMGQ4MTVkNjQ5OTU4MjY1ZmMyZmFiMjY5ZDIzZGMgcHkzaworNjY5NDUgY2E3MjI3MWM2MjRjMmRmYmViYzBiNjAzMmYwMWI5MjQxM2MxNGMwNCBweTNrCis2Njk0NiAyYTM5MTBhOGRjMzc3YWZhZGMyMWIxZWM0MWJhYzVmMTYyOGZlOTNjIHB5M2sKKzY2OTQ3IDQ5MWVkODBhOGNjMTUxMDMxMGZjMzEyZTI2YjMyZmU4M2Y3ODk0NmMgcHkzaworNjY5NDggY2JjM2FmYzFlNDBhMjA5ZDhkNDcwMmZmZDRmZWQwYTI0NDdkMDU3ZSBweTNrCis2Njk0OSAyYzNhNmM5ZGZmNjJkNWM5NjAwNjc5Mjc0Yzk2Nzg4MGExNWJiMzdlIHB5M2sKKzY2OTUwIDY0NWZlNTZjMTE3YWE2M2Y5MWYwYzM0OTE5NzdhMDVkODFkOTMwNzAgcHkzaworNjY5NTEgNDgxYWQzZDlmZmQxYjY4ZGY4ZGE4NTc4ZTI1Nzk4MTk2MjNiNmYwZSBweTNrCis2Njk1NyBmNjdkZTYxYzJjZmE5MjM4ODNlYzQyZTE3M2NkMTdmNzcxOGRjYzNlIHB5M2sKKzY2OTU4IGI1NTVkNGQ5NTc1YzQ1OGU5N2MwNWU5NWI4Y2MzNmEyNzYzZjg1ODcgbGVnYWN5LXRydW5rCis2Njk1OSA2NmM1NDVmNzk2MjY5MzJjMWFiYTNiYmZjZTJiYTNmODExMTEzNjA2IHJlbGVhc2UyNi1tYWludAorNjY5NjAgZGZjZTYyYWIwN2JhMGExZjZjZTQ3MjlkMDYyMDdjYWFkMGVkMzQ0ZCBweTNrCis2Njk2MSA4M2QwOTQ1ZWVhNDIyODQwOTI2Nzc1Yjg1ZWRkZjMzZTYxNGU3NjI4IHB5M2sKKzY2OTYyIDAxMjFkZjNjZjVhMDEyYzJiODA2MGRlZWFjN2Y4MzM0ZmNlMTVlZWEgbGVnYWN5LXRydW5rCis2Njk2MyBiYzFmNDMyNTJjOTIyMGY5MmE2MDJlZTVkNzEzNjUwOTQwMWZjMjM2IHB5M2sKKzY2OTY0IDk2ZTc4NTRkN2M2ZTFhMTJiMmFlYzVlYjQ4ZDNjNmNlMzcwYzc0OTAgbGVnYWN5LXRydW5rCis2Njk3MCA2ODRiZjc5OTAwOTRiY2ZmMWQzODU0ZDIzZDVmZTQwOGRhY2NjODk2IHB5M2sKKzY2OTcxIGU4ODQxYzM0NjY1MTk0NzBkNDUwYTNmNDhhY2QwMGRlZDM2NDRhYjYgcHkzaworNjY5NzIgNTdlMmI1YzQ1Nzk1YTgwNTBlNzQ1MDMzNTMwNDA3YzFkMzlhNDA5MyByZWxlYXNlMjUtbWFpbnQKKzY2OTczIGRiZDU0YmFjMGI2ZjdjZWI1YTlhMWUxNGQzOWZkZjMyYTcxNWZhYWIgbGVnYWN5LXRydW5rCis2Njk3NCAyZTM4Y2E3MDliMWQyOTZjN2ZmYTgyMWZiMDJlYmU3MzIyNmE2OWNjIGxlZ2FjeS10cnVuaworNjY5NzUgM2ZmN2JiODMwNTE5YzI3ZGUxNWYwZDdhYTE4NTE4MDEyZjllY2ZhYiBweTNrCis2Njk3NiAyNmJjMGNkMDEwOGI0NWI2ZGVmMDk0YzkxMzY5M2Q1ZGY5NDY0NTJkIHB5M2sKKzY2OTc3IDZjZGUyYTA1MWIyNzlkMjEwYzU2NjBiYmUwY2QyNmE4M2I4OGJlNzYgbGVnYWN5LXRydW5rCis2Njk3OCA4OWJhMDFiNjE0ZWVkMzE4MDY5ODBiZDIyOTAxYmU3YTQwN2YyNmIyIHB5M2sKKzY2OTgzIDg3ZWY4OTYwODIzYTE4NDgxNmNlZjY1ZTUxNTI1NTJiYTU2MzU5NjIgcHkzaworNjY5ODQgODQ5NmY1NDAzYTgyMjUxMDcwNjZiMTdkMjU5NzZjMTc4NjY3OTMxNiBsZWdhY3ktdHJ1bmsKKzY2OTg2IDQxNTEzN2QwZTIwYTUyN2ZlMzFiY2ZiNGNjYzIzYmZiN2MyMTNkZWQgcmVsZWFzZTI2LW1haW50Cis2Njk4OSBjMjA4ZjVjMWU0ZmU3YjczMmIyNDU2ZTAyOWViODM3ZTdhYjMyZTZjIGxlZ2FjeS10cnVuaworNjY5OTAgYzFkY2ZmNzU5NzZlMDU0NmJmNzY0ZDgxMTkzMzA1ZGE1OTRiYzFlMCByZWxlYXNlMjYtbWFpbnQKKzY2OTkxIDFlYjE3MTIyYjRjY2I3ZGZjNWIxNmRjMWYyYzY0OGYwYjM5ZWMyYjEgcmVsZWFzZTI2LW1haW50Cis2Njk5MiA4MGQyZDQ2N2YyMzg4NmQ3ZDRmNzVmZWU4NDBlMzc5Nzg5MDg0NjhkIGxlZ2FjeS10cnVuaworNjY5OTMgZGRkMGY4Y2NlNTVjZDIwODJhNTViOWI2MmJhYzc4ZjAzODc4NzE2MCBweTNrCis2Njk5NCAwYWZhNzNkNGJmOTk0NzgxMzM5MWQxNTM3YTIzNzZjNjQyYWRkOTdjIGxlZ2FjeS10cnVuaworNjY5OTUgMTI0OTg0MGE0MmIyZGFlYTJhNWQ3NjkwNTdkNzZlMWI3NGJmMjliNSBsZWdhY3ktdHJ1bmsKKzY2OTk2IDE5Njg3ODMwMzM4ZmJiMGRhNjk3ZTE2N2Q2MTU3NTcwZjlmOTRjYTAgbGVnYWN5LXRydW5rCis2Njk5NyBkZjc0MjI0NjA2NjA2ODkxYjYxMmIxNmMxOWIwZDE3M2Q4NWY2ODFiIHJlbGVhc2UyNi1tYWludAorNjY5OTggNTQ3OWE4NzdiYTI4MjZhMGQwMGI5NWMwMWE5ZmI5ZTBkYzJkYjBjZSBsZWdhY3ktdHJ1bmsKKzY2OTk5IGQ4NDdjNGZiN2IzOTkzYjZiYzQ5NmI2NjllYjQzYWEzZTAzY2EzNTYgbGVnYWN5LXRydW5rCis2NzAwMCA3MTI4NGU5MTU3MDYzYmE3ZTk0MWM5ZGMwNzdiM2YwOGE4ZWMwMTYzIGxlZ2FjeS10cnVuaworNjcwMDEgYzZjMzI4NDJlNzFkYzQ3OTQyNWI0ODM2N2UzNDViNDI3ZmViNTFmMCByZWxlYXNlMjYtbWFpbnQKKzY3MDAyIDcxNGQzYzE0NDNhNzQ2ZDhmYWUzMTg0MWJlMmRjNjc5NDhhMDgwMGUgbGVnYWN5LXRydW5rCis2NzAwMyBiYmFiMTFjZGIxNzU2MTAwNjlkMWYzMTA5OGRlMjJjM2M5NzA4OTA1IHB5M2sKKzY3MDA0IDA1NzE1ZjBjZDdlNzc5NDM0YzM3ZTQyZmQ5MjY0MzhkNDg1MjdkOGYgcHkzaworNjcwMDUgODlhZTlkN2QxOGQ3YmNkZWY2MmE5ZjE4OGNmYWFkMTI2MDMzZTc3MyBsZWdhY3ktdHJ1bmsKKzY3MDA2IDJhODVlNWM5ZTFlMmE3N2Y3OGI3M2U3Y2ZjZmI0YmY3NGY2NWQwYjEgcHkzaworNjcwMDcgNjNmM2YwNDVmZTQ4YTBjNjRhMTI4MjlhZWM3YjRlMTdjMmY3ZTc3OCBsZWdhY3ktdHJ1bmsKKzY3MDA4IDBiYzJjZDJkOTU5ODJiMzI1OWFiMTcwNGU4YjM0MGUzMmRlOWY2MGEgcHkzaworNjcwMDkgOGI2NWQxM2MxNzdjNmJkYThjMDRjZTQ2YTI0ZWRiMzg5M2MxNmQ0NCByZWxlYXNlMjYtbWFpbnQKKzY3MDEwIDMxYTY5ZWQwOWZiYjQwZTE0ZjEyYTUzZjExOGQ5ZDFkMDk1ZTViNDYgcHkzaworNjcwMTEgODQyMGFmNmMzM2VkZDkzM2RhYTk5Y2FmZjliOGFkYzVjMDRhYjk4MiBweTNrCis2NzAxMiAyYTM4NzcxY2VjZGQ1YWQzNzQyMTVkNjg2ZTBiMWQ0N2FjNjQ4ZWE2IHB5M2sKKzY3MDEzIDY2MzQ1MzBhMDRlMDM0NTIxYTJmZDAwMTA2NTliNjk1NzgzYWI3ZGQgbGVnYWN5LXRydW5rCis2NzAxNCAxYTQ4N2FiMGQ2NWI3NDI5ZjVmMTcwMTE3OTkxZGMyMDU5M2E5YjMwIHB5M2sKKzY3MDE1IGJiZTM3MzIyMTJkNjRlNmYzYjAwMDY1YzQxMWMwNGMyMjczM2I3ZDIgbGVnYWN5LXRydW5rCis2NzAxOCBmNjY2ODhlNjlmNjZiZjVlYjI1ZGMzNmEzYTczMzJjYTM5OGU1NWFjIHB5M2sKKzY3MDI2IDRhNzQ1OTBmMzhkYTViMjBkNGQ1N2JiMDExOWIzYzI4NjNlYzA1ZjEgcHkzaworNjcwMjcgZGYyYmJkZTk2ODgwMmQ5Y2JhYjYzZjEzN2FlOGE1YWRjNDdjMzNhYyBweTNrCis2NzAyOCAxOTVjZDdlYmY2MmNkYmMxNTU2ZjllYThmNTdlMGNkMTY2YTkwZjkyIGxlZ2FjeS10cnVuaworNjcwMjkgODYwNzM3Yzk2ZTk3ODJhMjFkYzQwZGM5MzUwMTRkN2Y1YTBhYjM5NCBweTNrCis2NzAzMCBhNTc2OGJkNjI5MzhiOWRmOWM4NWEyYTBiMGYyM2NiNDY3ZjFlNGE3IGxlZ2FjeS10cnVuaworNjcwMzEgMGExODhhMmQ1MDQ4ODJhYTI5YmRlMDQ5YzM0YjI1NzhhNDdlYTM0NCBsZWdhY3ktdHJ1bmsKKzY3MDMyIDMwYzBiMjY2YWYwNjJjMTdjNjgxMDY3MjcyNjViYzM1ZmZlNmQ5MWIgcHkzaworNjcwMzMgZTgwZDllNmUyNmJiZDFmNjE3MWE3ZTE3ZWZlYTY3ZjM1Nzc2ZDk3YSByZWxlYXNlMjYtbWFpbnQKKzY3MDQwIDQwZmQ2ZWYwZWFhOGYzM2JjZWNlMzIwMzJkMjA5MGNjYzYyNjM1OWIgbGVnYWN5LXRydW5rCis2NzA0MSA4YmRlOGY1MWFkZTE0ZGU0OWNhY2EzMmI5MDhlYzlkMjZkZDYyODM2IGxlZ2FjeS10cnVuaworNjcwNDIgNDBkOGZiMTI5MzA2YWQ0ZjM4YzgxYjNiYTcxNDM5M2NiMzU5ZWYzYSBweTNrCis2NzA0MyA0YjcyNjUwMGE5Njk5Y2ZkMTk1MzkzNmQxZjNmMWIyMjUwODNiZTk1IHB5M2sKKzY3MDQ0IDgwNGU2MzY1ODE3YzRiMTJjYzFhZjRiZjc3ZGFhMDZlOThlMzAwNmUgbGVnYWN5LXRydW5rCis2NzA0NSAyYWE2OWI5ZDEyNzM4ZGYyMGYwOGJjNDBkZGQwNjlmZTEwYzgwMzI1IHB5M2sKKzY3MDQ2IDAyMWJjOWY4ODEwMzQ5ZGM4YmZlNjZhODQyZjhmMjMyOTAzY2U2NTEgbGVnYWN5LXRydW5rCis2NzA0NyAzNDg1ZDk1OTU3YzFkMmM1ODFlMDFmMTNiMmQ0OWJiZTY1MmEyZjRhIHJlbGVhc2UyNi1tYWludAorNjcwNDggNzExMzkwZDRhYzIxMzkwYjBjNmQxZGUyOTgzNzJlZjAzNDM0OWQyNiBweTNrCis2NzA0OSAyNGY2NWUzMDkwZTgwYTIyYWZkZTZhODkxNzQ5MTk4NDFlMzViOTEyIGxlZ2FjeS10cnVuaworNjcwNTAgYmIxMDljNGJlZDI3NmEzM2VhYWNjNmMwOTQwMTZjYWVmMWZlOWFjMiBweTNrCis2NzA1MSBjMGFmYzRlZWJhN2Q2YTg0MzM1NzU3OWM1MmI3NTk0MTIyNWM4ZTliIHB5M2sKKzY3MDUyIDZhMjBlOGMxNzQ1YTk4ODhmZjhhODAwNzIwYjFlZTFkOTc4YWYwMWQgbGVnYWN5LXRydW5rCis2NzA1MyBiM2RmNThmNzZlNDlkODdlMGNmM2Q5NzM0N2M4ZDI3NjcyYTk4ZGI2IHJlbGVhc2UyNi1tYWludAorNjcwNTQgZDJlYzZkNWIyZGI5NzAxYmEwNjI5NTMyNWU4NjU5MzlhNjlkMDcwYiBweTNrCis2NzA1NSA5ZmM1NzNmYmFmNWUzNGJkYWNkZjI0ZTQzMDlhZjhhYTJmYzc1ZmNhIHB5M2sKKzY3MDU2IGU4YzBhNWE2NDZjYTZjY2RhMDMxZWJmYWQwOTE1MTNhMjhiZWU5ZTEgcmVsZWFzZTI1LW1haW50Cis2NzA1NyBlZmVmNWZjNDVhOWE0NzcyNTBiZWZjZDdkZWZlYjRlZTA1MmJmOGY2IHB5M2sKKzY3MDU4IGMzMjMxMDI3MzdiYzIzY2I4ZmZlNDkxZmE5YWUzYTc5NjdlZWEyNGUgcmVsZWFzZTI2LW1haW50Cis2NzA1OSBhNWNhODk1MWJlZjE3MjliN2Y1ZDRkYjc2MzIyZmZhYTllNDAwYWEyIHB5M2sKKzY3MDYwIGIwY2NjYjU1OTQxYzQxNzBlMTk1YzJkMDhmNjUyNDBhM2NiZDVmYWEgbGVnYWN5LXRydW5rCis2NzA2MSA4MDQ1ZDU1OTZiMWM4YjkzMzQwNTcwNzRlMTljODI0NjkwZmM3MzU1IGxlZ2FjeS10cnVuaworNjcwNjIgOWM5N2JjODYxMjJhMGY3Yzc4MzIyNTg0YWE3YTZiZThlNTE4ZGM1YiBweTNrCis2NzA2MyAwNmNmMmNlYTM4N2I3ZTQ1MDNmYWJjOTZkNWRmOGQ1MTYwYjg0NjAxIHJlbGVhc2UyNi1tYWludAorNjcwNjQgM2UyZGU0ODRjZTM0MjE3YzZkYTQ3ZWJhYzE0OGNiMTBkYWQyZTAwMyBweTNrCis2NzA2NSA5NjQxOGY4MTJmMDY4MDBlMDc3OTZjNzkzMzZlNmIyYTM5NWQ0NDE5IGxlZ2FjeS10cnVuaworNjcwNjYgN2U0MDI2M2RiZmQzNDU0OTkyODVmYmM5MmY4MjRmMmY2NGI2ZjFjMCBsZWdhY3ktdHJ1bmsKKzY3MDY3IDZjYWMyZTMwNzdhMzRkNzJhM2UxODE5ZmI0YmJhYjUwNDJjZjY4ZjEgcmVsZWFzZTI2LW1haW50Cis2NzA2OCBmMzIzNGU0M2UxZmU4MGEyOTRhODUxNTg4MWJhNjk4MDE4Y2Y0MjkzIHB5M2sKKzY3MDY5IDk5MDZmNjk2Yjk0MTk1YWZhZjA1NjhkMWE4ZGY5Yjk1NjAyOWY1NDUgcHkzaworNjcwNzAgMGRmZGI1MmFiZGY5Zjk1ODdiMTA3ZmEyMzhmYTk4OGE3MjYyOWRkYiBsZWdhY3ktdHJ1bmsKKzY3MDc2IDU3OGFhNDNkYzQwMDQzMDc1MDE4ZTc3ZjkyYjZjMzIxYmNmYjMxM2UgdGxlZS1hc3Qtb3B0aW1pemUKKzY3MDc3IDkxYWI0MzU0NDQwZWZjODE0NGM1MjRhMzJjZDZjMjMzMGQ0ZDBjMzUgbGVnYWN5LXRydW5rCis2NzA3OCAyZWQzZjg5MjZiYjg5MWM5OWE4NGQxYzEwYzkwNzRiMGIxMWQxNWQzIHJlbGVhc2UyNi1tYWludAorNjcwNzkgNDVhYzUxOTZmYTY3OWRmYWUxOTk0ZTA4N2QxNjlmMTU3MzVhMjVhOCByZWxlYXNlMjUtbWFpbnQKKzY3MDgyIDExODRhYmM1Zjk2Yzk2ZDYxMmYzZTk2ZDEwNDFhY2YyNTA1NmQ5NzggbGVnYWN5LXRydW5rCis2NzA4MyAwMGU3MWNkODkxMjg0YTU3Y2VmMGE5NjU4NTdkMmU2Mzk0Nzk1ZGRjIHJlbGVhc2UyNi1tYWludAorNjcwODQgNDUwNDZmMDcyMjdhZDNhZjI3MWQ1MTdhZjI4YWJlNWIxOTY2OGM0OCByZWxlYXNlMjUtbWFpbnQKKzY3MDg4IGJkMGU5YTljZDI4M2E1NTQwYWVjZjlmMWEwYjg3NWI4NjExOWU1NmQgcHkzaworNjcwODkgMGRlYzU0YWE1M2VlNzVlMzdhZjZhMTgyYjU5YmUwMjEyYTlmNmRhNiBsZWdhY3ktdHJ1bmsKKzY3MDkwIGY4NDljNTliYmZkNzY0ZjAyNTNmNDk1OWNkMTM2YTA4OTRkMWVkMTIgcHkzaworNjcwOTEgMGM4ZmFmNmM4ZWIyOTYwZDRhYjczODAxYmIxYTgzMmQ2NzhkYzNiZiBsZWdhY3ktdHJ1bmsKKzY3MDkyIDVmODAxYWRkMjBmYmJjMzJjNjk5ZTQ1ZjllZjRhMTFiNjhjMTM0NGIgcHkzaworNjcwOTMgZjJiYjEzM2VmNTE3ZDQ1MGQwMmZhNmNmZmJiZjVlZWFhM2ZlZWRjMSBweTNrCis2NzA5NSBmNjdiMmM4ZmE5M2FkMjMyMmRkMjY5ZTdjMWE5ZDQ2YTYzM2ZlN2Y4IHB5M2sKKzY3MDk4IGU2OGU0MmIxN2U1ZTM0MTQ0OTAzZTkzYTRjNTkwNWE0NmJkZDA1ZWIgbGVnYWN5LXRydW5rCis2NzA5OSBhNTI5ZTNkYzY5NWE4YjZlZGRlNDhiYzFkZjg4ZmEwMjEyOTM0M2I4IHJlbGVhc2UyNi1tYWludAorNjcxMDAgYzA4OWViNjRlZTU3NmU1N2JkYWYzMmVjMzBlOGI2ZTMwMjBkOTA0NSBweTNrCis2NzEwMSA5NzJiNDA1NDZkNzk1NTRmM2E4OTcxZjBmMTZlZjI5MzgwMDdmYzI2IGxlZ2FjeS10cnVuaworNjcxMDIgNTBlNzgyMmM5NTg1ZmVmNTZlZDY2NjExZmFjNGI4NTQyYWRlM2U5MyByZWxlYXNlMjYtbWFpbnQKKzY3MTA2IDIzZDljYjc3N2Q5YTgxNmEyNTYyZGU4Yjc3ZmFlYzQ1YzNkNDgxMDUgcHkzaworNjcxMDcgOThmMzE3NTY0NjIwM2VmNGVhMzkwZDQzNDU0YmJkZTdlYWJmMzZmYyBweTNrCis2NzEwOCA0MDBmYmM4MDUyYWRlY2MxNzY5MjY4NWRiMzUzMzhiM2NiOTE1MTlhIHB5M2sKKzY3MTA5IDFiYzNkMWIzOWE0Yjc5NWUyNjY1M2Y3YzY2OWVkMDJhYzYxODNiMmYgcHkzaworNjcxMTAgZTJhNDcyZjNiNzdmNmMxMGVhNDU1MTdmMzkxOGM4ZWMxOTE5MDhmZCBweTNrCis2NzExMSA1YjRjYjhjZDUwNTFmN2EwMTM5NzliNDY0N2FiMWE4YjQ4YzAyZjVkIHB5M2sKKzY3MTEyIGFhNmU2NDk1OTlhZDA5MGRmOTEyZGE2NzE0ZDY4OGRjMzJiY2M3NDcgcHkzaworNjcxMTMgM2E5NDc2OGEyYThiZTVkMDkyODA2ZGM2OGE1YWIxYWVjYjE3MmEwZCBweTNrCis2NzExNCBkNzE5NmZiOTRmMjVmYzhkYTVjOTkzNDgwZDVlMDU1MTQxNDczYmU0IHB5M2sKKzY3MTE1IDZlMGEzNjEwNzhlNTIxNjhhYTVlYzkyYTc3YzM4OWI2NGIyMWNhOTMgcHkzaworNjcxMTcgMWMyM2U3MDAxNTA2NzQwNDRhMDZlYzcwN2MyYWQxZjI5MWNmNjI2NCBsZWdhY3ktdHJ1bmsKKzY3MTE4IDc5YzlhYjY0OThmZGZiOWRmZmEzMzI0NjRmZTQ4NzVhNzQxNGRmYWIgbGVnYWN5LXRydW5rCis2NzExOSA5YTNlOTI0M2M1MTg5YmU2NDU2MDI5M2ZiMzAyNzYzZTU1NWNmMTdlIGxlZ2FjeS10cnVuaworNjcxMjAgMjZmMDFlZWFmNTRlODBlOWNkYmJlYzBiODljOGYzZWFiOGFhODczZiBsZWdhY3ktdHJ1bmsKKzY3MTIxIGYzZjY1MGM3ZDNhYWM2M2NiYmY2NmJmMDVmNTZhZGVlN2Q3MjI4M2UgcmVsZWFzZTI2LW1haW50Cis2NzEyMiBmNzg2N2I3N2RjNTU3ODE4MWQxOTZiMmZmNGRhM2ZiNWYwMmU2NWQ3IHB5M2sKKzY3MTIzIDgzNzBlOWVmN2YwZmRjOTY3ZDk5YTZiOTJiNmI3YTJlMzcxZTBmNmUgbGVnYWN5LXRydW5rCis2NzEyNCA3ZTYzZmViMzBlYTVkZGM2OTA1OTkzMDE5YmVkMDk1YmQzMzNmMDZlIGxlZ2FjeS10cnVuaworNjcxMjUgMjEwYzU4NWY5NWJlZTZmNDU5ZDExMzQ2NGNmYmIyYzg3NjQ4OWY1ZCBsZWdhY3ktdHJ1bmsKKzY3MTI2IDEwNDUzN2E1NDE5NjUwZDM3OThmNWFmZDkwNzdlOGFlODgzYjNjMjkgcmVsZWFzZTI2LW1haW50Cis2NzEyNyAzMjU2MTg3OTI1ZDFlOTFlZjFlMzE4YjE5ZDJiM2VkZWY5ZmVkNzhlIHB5M2sKKzY3MTMyIDE0ZDQ0MTJkMmJmODQ4MTMwZWI5ZDZiNTFhZTAyYWE4ZDkwZTBjZWEgcHkzaworNjcxMzMgODI4MDk0ODU5MmJiMmNkZGQ4YTA1NDU1ODk2OTZkOTBjZmMwOTQ0MyBweTNrCis2NzEzNCA5NzRjYWYxNjdmZjA0NTI5NjJjMGI1MzJhNjBiY2RkYTg1NTc3N2Y2IHB5M2sKKzY3MTM2IDUzNGJlODA2NmMzNmE2YWZjMjYxYjViZmM3Yzc2MjAwZDU0ZGExYjggcHkzaworNjcxMzcgOGZhZTQ2NWEzOTYyN2I1OTAzODU0NjJlNjA5NWViNjNhZjQ1MjQwYSBweTNrCis2NzEzOCBhYzQyZGM5YTAyMDNlZmIzN2U2NWY3NzczN2ZkMTk0NGE5MTgwMzA5IHB5M2sKKzY3MTM5IDkyYmExMmY5MzI4MjM4NGEyMzhjMGZiMDU2OWU3Y2Y0OTFmMDMyZGUgcHkzaworNjcxNDEgZDJmNzMyM2ZiNzA5NjViZTYyMmFmZDRjYzdhNTQyMTg1MDU3OWM0YyBweTNrCis2NzE0MyBjOTgzZmE2OGQ2ZmYyNTVjZmM3YjJhNTkwNTE4OWMzYTU1NzNjM2U1IGxlZ2FjeS10cnVuaworNjcxNDQgNjIzOGI2Y2Y3N2YxMDU3Y2VhYzUxYTRkNjYxN2Y1OWI0MTgwZGZiZCByZWxlYXNlMjYtbWFpbnQKKzY3MTQ1IGVhODdlODgxNDM1OWIzOGU3NzE4YmIwMDhjNTA5OWNlMWE4OGNkN2MgcmVsZWFzZTI2LW1haW50Cis2NzE0NiA4MmNjYzdlNzdlYzU1NzNkNTY4ZDJmNTE1NmQ1ZmQ1YzkwZDNmZjEwIHJlbGVhc2UyNi1tYWludAorNjcxNDcgNDc5ZGFkOWRjOTZjMWU4ZGNmNjA0NmRjYzVjYmU5ZTE3ODI4ZjY0YiByZWxlYXNlMjYtbWFpbnQKKzY3MTQ4IDFmN2Y0MWYyMGFjNTk2NjZkODc3ZGZkYzkyNmJjMmQxNTEzMGIxMGUgcHkzaworNjcxNDkgOWRhNTI5YTNmZDVhZTc0MmQyOGFlZTVlZjNmODE3MTgyODc5OWNiMyBsZWdhY3ktdHJ1bmsKKzY3MTUwIGZhY2NiOThkOTQ3NGUzYzM1MDQwODNmMzQ3YzkxYTA3MmNiODJkNjcgcmVsZWFzZTI2LW1haW50Cis2NzE1MSBhY2I3OGVjZTU2YTllMTAyZmM5ZTY3NjI1YjJlNzRkOWNhYzU1MWNlIHB5M2sKKzY3MTU0IDMxNzM3MTdhODlmMzE3Y2E3MTM4ODI5MTExMjM4MjgyOGQwMjI2ZTAgbGVnYWN5LXRydW5rCis2NzE1NyA1NzE5MzgwNTQ3MjFkYjNmZmYzZTliMDkzYTllNTNiMWE5NzBkNGFhIGxlZ2FjeS10cnVuaworNjcxNTggMDA4YWNiMGNiYmZjMjllZThjOTRlMmQwMGVjNWVjMmQwMDg5YjI4ZSBsZWdhY3ktdHJ1bmsKKzY3MTU5IDU4MjM1YjlkYzNhZTI0Yzg5N2RiMWY3ZGY5NzlhNDg1NTZlMDMyZWUgbGVnYWN5LXRydW5rCis2NzE2MCA2ZjA2NTcxYThhZWZhZmU5NjcwOTI1N2I3ZjE3OWE0MWJmOGJmZjY5IHB5M2sKKzY3MTYxIGQwYWExMGZmMjhjNjU3MDA2NTcwYjM1YzgyOTVkNWE1NDBlYTU4ZmIgcHkzaworNjcxNjIgMjBhNDA4OTQ1MzlhNDhhMWE3YTFmZTZhYjQyYzVlZGI1ZjA3NGRlYyBsZWdhY3ktdHJ1bmsKKzY3MTYzIGQzNGNjYjAzNDFlYTUzYWE4NmJjMzcwZGFkMTY0NGQwZjEwOTYwZWQgbGVnYWN5LXRydW5rCis2NzE2NCBlZjg4MGUyY2M1NjhjY2NmOThiOGM5NDUzMmUwMzZjNTdlMmNiNzZjIHB5M2sKKzY3MTY1IDcxZjUzZDNkMTU1MTIxY2YwM2E4ZWI3NzA4OTBjM2YyMWMwNTkyMjQgcHkzaworNjcxNjYgYmM0Zjc0MmUyYzFkNTM4NDQ1MWNjNWRjZWQ1YjI5NTJmY2UyNTExZCBsZWdhY3ktdHJ1bmsKKzY3MTY3IGYwN2I4MmEzMjFmZTE5MDU1Mzc5ODQ3ZDU1N2U3YjhlNWRhOTk5MzAgcHkzaworNjcxNjggNzY4MzJjMDlkMmZkYzFiMDY5ZWJmMGY2MWEyNmM3NWE0NWZkMjM2ZSBweTNrCis2NzE3MSAyZTA4NTdiMGZjNjc1Nzg0NGE5ZTBkZGI1NjdiYTQ1Y2RmNzA5ZTI2IGxlZ2FjeS10cnVuaworNjcxNzIgY2RkZDkxODBiOGM4ODA2MjI3MDZhZDdiNDg4OWFiZWFkNTVkODU5MSBweTNrCis2NzE3NCAyMTExNTFmZGM5MjQ0NDJjY2MzY2FjZTVlYzBmY2E4YmQ0MWEzMGU3IHB5M2sKKzY3MTc1IDJiYjEyY2EyZmY0NGUxMWI4YzNkY2JhODQyNDY1N2FmOWViMzk2N2MgbGVnYWN5LXRydW5rCis2NzE3NiBjMmE3NWJhNDZmMTRkOWZjMjZkNGFlYzdlNmM5NGU1NTdiZDZjMDQ4IGxlZ2FjeS10cnVuaworNjcxODAgYWU4M2Q0YWEzZTBlZDk3NDNjYzAzZmIzYWM4YTk2NDViYTg2MDZiOCBsZWdhY3ktdHJ1bmsKKzY3MTgxIDJiMzM0MGI1Y2EzODZiNTI0NjdhNWJlZWIzZmFmNTc5MDBjYjkwOWYgcmVsZWFzZTI2LW1haW50Cis2NzE4MiBiMjQ4MWExNTM3NjM0OGZmODFiY2YxY2QwMDUxN2YzOWY0N2JlOWRkIHB5M2sKKzY3MTg0IGFjZjY5ZTA3OWI4NDZiNWMzZDg0ZTQwZTc5YTk0ZWMxYmE4ZmFlMzkgdGxlZS1hc3Qtb3B0aW1pemUKKzY3MTg1IDU0Y2I1MDFmNjIxNWFiZGNjZjllNDExNTUyYTBhZmUzMzY0YmEyNzMgcHkzaworNjcxODcgMjE4YTk4OTgxMTgzZDJhM2M3ZjNkMTU4NzllMGZhMTFjMDkyODQ4OCBweTNrCis2NzE4OCA2M2VhMjJiNThkNTQyNTkyMTk2NmRmMDU5Y2YyMmIzZWZmOGMxOWU0IHB5M2sKKzY3MTg5IDc0NDBhMzBhMmYxMzQwM2E0MjdlMTIwY2M2ZjFmNzg4MGJhZTJkNWQgbGVnYWN5LXRydW5rCis2NzE5MCBmYjcyNTM2NmY5YWM4YmVkNGUzMmQ2NmQ3ZWI5MjNhNTU1YzY4MjhhIHB5M2sKKzY3MTkyIGIwNzEzZmJjNTA2MWJhYTI1MmE0NDBiMjg4NjU3NGU5MmNlMDk4N2MgcHkzaworNjcxOTMgODExOTBjYjFjYWUyOTMwNmEyMjgyZDJlMTZhYzQ1MGQ2NWFkNjJlNCBweTNrCis2NzE5NCBmMmI0M2QyODI1MWRjZGMwMjBiOGZlZjYzODNlZDJjYTljNmQ4NjZjIHB5M2sKKzY3MTk1IDAzZTc0ZGQ5Y2M4M2Y1OTBmODVkOTAyNWEyOTY5MzY2ZDZjNTc3MzcgcmVsZWFzZTI0LW1haW50Cis2NzE5NiA4ZDZlMjQ5OTcyNmE1MjgxM2ExMzAxOWEwNmIyNzg5ODk3MWE1MGM5IHJlbGVhc2UyNC1tYWludAorNjcxOTcgNjFhMzMwNTA0NDNkMjBmMGQyNGFmOTIyNzkxMjgwNTZmOWU5YThiNiByZWxlYXNlMjQtbWFpbnQKKzY3MTk4IDk3ODFlZWYzMTkyYzZhYjJjY2IyNWNmOGJmMTE4NTZlMDllMGZlMjMgcmVsZWFzZTI0LW1haW50Cis2NzE5OSAyMDBjOGFhYjE5MTc2ZmJmNzE4NjBkNDcwMjZiZGJkYTY0YTc4NjEyIHJlbGVhc2UyNC1tYWludAorNjcyMDAgY2U3MjI0Y2Y4N2JhMjBmNDhjMGZlMGM4Zjk4NzMxYTk1ZWM5NjVmYyByZWxlYXNlMjQtbWFpbnQKKzY3MjAxIDIzMjg1ZmYxMGMwNGQ3OTFiNGU3MDFhNGRhNzIxMTU4ZDJkMGQ0ZDQgcHkzaworNjcyMDIgOWExM2U5NjY4ODljYjQ0Yzg3ZjZmODE0OGY2ZDFlMjE3MDBhMTk2MSBweTNrCis2NzIwMyBjZDA4YjAwYWNkNmExY2E1MzliMDI3MDBjMTQ1Njc1ODg5YjkwYzg2IHB5M2sKKzY3MjA0IDk4NjI4ZGM3MzBkYWU3NzBmNDE4MTA0Zjg3YjRiMzFjOWE0MGQ3MGYgcHkzaworNjcyMTYgNDk0YmI5NjcxMzkxNzkwNWVjY2VkNGQ0Mzk2YmQ5YmIxMzQ0NmZjNyByZWxlYXNlMjUtbWFpbnQKKzY3MjE3IDA1OWYxMTZhMjgxOTRmODgzNmJkMTlkOWNiNzdjYzIyNGU2YmQyYTcgcmVsZWFzZTI1LW1haW50Cis2NzIyNCBjMjc3MmNiZmUxODFlMWYzYTliNjJhYmJlNGE3YzMyNzI0NDc0NmI1IGxlZ2FjeS10cnVuaworNjcyMjUgMTY2MDBjYWNlMzE1ZGMyYzFkNzJmMzQwYjg3NDkxYjEwZTA2MzRmNCBsZWdhY3ktdHJ1bmsKKzY3MjI2IDBhZDA3MDc4NDMzYTM4NzljNTAwNjMwNmEyNWVkNzY1OTZhYmJmYzcgbGVnYWN5LXRydW5rCis2NzIyNyA0YzQ2MzIzYWZhYjZmOTljYmU5ZjM5Mjg2ZDhjOTVhOTM2NTcwN2JkIGxlZ2FjeS10cnVuaworNjcyMjggZGJlNGIxNmY4MDRiYTdiZDExMTUzYTkxYTRiNTZlYjA3MTU1MTU5YyByZWxlYXNlMjUtbWFpbnQKKzY3MjI5IDQyMGE1ZTgzZTAyZTdiNGMxNzVlYTc2NjhkNjIzZDQ5ZmFjZTllNDMgcmVsZWFzZTI2LW1haW50Cis2NzIzMiBjNzA3ZGEzNDM1NTc4Y2RiYTUwMjZiNTMwMWNkMzVjYTRhM2U4OGI4IHB5M2sKKzY3MjM0IGU3NGRkNTQxOGEzM2ZiMDAwYjkzMzhhOWEzNWM0ZGQ2ZTAwMmRiMzQgbGVnYWN5LXRydW5rCis2NzIzNSBiNDI4ZThmNmIxNDM0NjIzZjZlMWRmZmU4NDM0NDRhZDQwMjI1MGUxIHJlbGVhc2UyNi1tYWludAorNjcyMzYgN2RlMWIyYWQzODA0ODVkMGU5NzI5OGM2Y2I0OWMyMmNhODJhNDc4ZCByZWxlYXNlMjUtbWFpbnQKKzY3MjM3IGIwZmNiMTdmN2VmYTgxNTI2ZDY4NzAwZDRhNzRkY2FhODllZDk0MWQgcHkzaworNjcyNDEgMWU0NGVhNTE2ZTBlNzBjNWNhNTJkM2MzYjUxOGM1MDI4ZmI2ZjgzZSBweTNrCis2NzI0MiA2MjBhMzRkYzEwZjkwNjYzN2NlYzUwNmNmY2E5MGI4NWQ1ZmYxNWNhIHB5M2sKKzY3MjQzIDc1NTlhMzJjYzMwZWY5NjA1NGUwYWNkZDg5ODIyYjA2OWQ3OTUyNzcgbGVnYWN5LXRydW5rCis2NzI0NCA2NzRlZjRhN2NkNzMwMTc1ZjU4M2I3YzM3MDQ4NmMxMWUwZWZlZDJkIHB5M2sKKzY3MjQ1IDRiMzIxOTlhOGFmZWM1Nzg1ZGQ2YzllYjdiOTYwZDJjMzgwZGU3ZTMgbGVnYWN5LXRydW5rCis2NzI0NiAwODEzNWExZjNmNWQ4ODUwZGM1NWQ4M2UzNmY3OTc5ZGNjYjJkYTY2IGxlZ2FjeS10cnVuaworNjcyNDcgNzNiOWZlMWM1Mzk3M2QzZWZmMzdhNjg4ZGI5MjFhNDA0NTQ2MGQ5OCByZWxlYXNlMjYtbWFpbnQKKzY3MjQ4IDM1NmMzZTE4ZGE1ZTg0OGE5Zjk5MjJiNjcwN2Q3M2RmN2Q2M2RkNGIgcHkzaworNjcyNDkgYTVlNDFhNzk0OTU0NDM3OWFmZTdiMTMyZTUxOWM5YjE4Y2U5YzYxNyBweTNrCis2NzI1MCBmYzQ2YWJmMTcwZmRkOGQ3NWNkOWM2Yjk5NjM0MWIxYmQ1ZjNiMGRlIHJlbGVhc2UyNC1tYWludAorNjcyNTEgOTM2YTZlNjBmM2ViN2EzYmU0N2ZiYWMyNjk1YmE0NmZjMGQ1MGU1MSByZWxlYXNlMjUtbWFpbnQKKzY3MjUyIGYzOWFjZWJjZTYyOGJlMWY5OGM5MTA4YjM2MmE3ZTE2ZjEzNzRjZTkgcmVsZWFzZTI0LW1haW50Cis2NzI1MyBlZDBkYWMyNmIzOTZkYTNmYjc3NjQ0OWEwZTU2ZWNjYzQzZTQ5ODcxIHB5M2sKKzY3MjU2IGUyZDJhN2E2ZTgzMTVkYzgyNjdiMzZjNDhlZjcxYzBkZTQyZWJhNWYgcHkzaworNjcyNjYgZWE2ZWUyODIwNzUzYmNlZmVlNTJkYjc5MDYwMWYwOGU2ZjM5NWNiYiBsZWdhY3ktdHJ1bmsKKzY3MjY3IGQ2ZTY3OTg5ZmY1MTQ5NzM2MmZlM2ZkYjdkZThkYWY5YjBmN2JiMGMgcmVsZWFzZTI2LW1haW50Cis2NzI2OCBjNmQxNmIyYThlZmE0ZDU2MjZhZGFlOGUxNjE0OTE2MmU3OTJlYTBmIHJlbGVhc2UyNS1tYWludAorNjcyNjkgY2U2OTIzNTQ1ZTVlYzNhNjM5MGQ2NjI0YWRkODRhNjA0MGE5N2FmNiBweTNrCis2NzI3MCA2ZDZlMzhjZmYyNDQwZTJmOWZmZDQ2ZTFlZTI1NTAxZDYwOTI4NjAyIHJlbGVhc2UyNC1tYWludAorNjcyNzEgMGMwYmIxMDRlYzRiN2E3ZjZiZGI5OTkyYzU3ODYzYmJlOGQ2YTBmZSBweTNrCis2NzI3NyAyZDliMTczZGMzYTJlYjdhODA2ZTUxYjMzYzljYTk1Y2ZhZTgzN2IyIGxlZ2FjeS10cnVuaworNjcyNzggMTUzZmVkN2M3YjYwYjkwZDVlOTQ2NjM4OTJjOWVmZWZjYzgxMDQxMCBsZWdhY3ktdHJ1bmsKKzY3Mjc5IDcxYTUwZTY3NWZhMWU0NDhhZWY4YjZkZjJlNWI0MzU0MGExZTc5YzAgbGVnYWN5LXRydW5rCis2NzI4MCA3YmIyMDQ2MTJmYzY3NmJiYzdlZmUwZWE2MzRhYTQ5ODU5YWIwNWE2IHJlbGVhc2UyNi1tYWludAorNjcyODEgOGI5YmRhNWI4ZDRhOWQxYmEzYTdhMjliYTNlZmY3YmJkNTA0OGRlYiBweTNrCis2NzI4MiA3MjM4OTUwZDVjNjA0MDA3N2RhNzE1ZDgxZDViNzQxYzYzYzJjNzM4IHJlbGVhc2UyNi1tYWludAorNjcyODMgYmY2YTViZTgyN2I0YzJlNmQwY2E5Y2I2NzA5ZTcwODA1ODJlNDg2YSBsZWdhY3ktdHJ1bmsKKzY3Mjg0IDFmN2I2YzQwYzk5MDg5YTY2NWIxOWYxNzkzNmQzN2JjY2IwOTk4YzIgcmVsZWFzZTI2LW1haW50Cis2NzI4NSBhOTM3NmFkYzI4NGNlNzkwYzEwMzI4YjM2YTcwNGVkNmNhYzk2OTIyIHB5M2sKKzY3Mjg2IDA3MjJkNzFhZmEyZjI4NmVlNDUxZjQyOTEzNzlkMjEwMzkzZDJhOTQgcHkzaworNjcyODcgYTQ0Y2U1NTU2YTdmYzYzMDI3OTM0OTFhYTFhZGZmYWU5MzNiNGVhNiBsZWdhY3ktdHJ1bmsKKzY3Mjg4IGYwNGRmMTBlMjA1MDExZThiY2I0Y2I2MTI1ZWE4ZDQ1NjI5MDgwNzMgcmVsZWFzZTI2LW1haW50Cis2NzI4OSBmZmFlNTgzNzg1MWNiNGFhYjJiYzRjN2QyOGQwNDI5MzAxZGZlMjRkIGxlZ2FjeS10cnVuaworNjcyOTAgMWU3ZDMyMjI3NGM4M2VjNzdjOWY0MzgxNmVlMmQwOGNlMWY1ODU0MSBweTNrCis2NzI5MSA3YjE4Nzk5ZTk1MTk0NTgyOTRiOTdhNGViMTZjZjgxZGU1OGI3MmQ5IGxlZ2FjeS10cnVuaworNjcyOTIgZmRjOTMzOTUxOTY0NmY1Y2IzYWFiOTAwYWFiMzI3ZDg0M2ZhYmUzMSBweTNrCis2NzI5MyBjYWNjMDE4ZmEzNDFhYjVjNTc5NmQ1ZWZmNjJiZmRkOTJhZDAwYjZmIHJlbGVhc2UyNi1tYWludAorNjcyOTQgMDg4ZmRhZGY5NjA5ZDE5M2ViMTBmOGE0MGYwOWI1MGRmOTAxZmY5YyBweTNrCis2NzI5NSBhMjkwYTUxZmY4ZTI3ZDcyYjhkMWYxZmIzMGI5YWVjNzYyNjM5YjJmIGxlZ2FjeS10cnVuaworNjcyOTggMmRhM2ZjZDQ5MzVmMTU0Zjk0MTg2YjM1YzFlOTE4MDIzZTEzYmZlMCBweTNrCis2NzI5OSAyY2E5NjRkNzI0ZDVmZjlhMTY3NDY3NDUxOWIzNDM2ZDM4MDFjMWZiIHB5M2sKKzY3MzAwIDg0MTM2OWYzNzMzNDg2MWU5MDNmZmYzN2FjZTlmMWJjMTdiODE1OWYgcHkzaworNjczMDEgY2I4MDM5ZDgyYWYzZjE0MGY5NmNhMTMyMTljMGE2ZjFjZjJhYjhmYSBsZWdhY3ktdHJ1bmsKKzY3MzAyIDI0NjQ1ODcwNzc5YWI4Y2NhMzdlYWI5NjhhZDQxMTI0NWU3MmMzZWIgbGVnYWN5LXRydW5rCis2NzMwMyBmNDFjYjIwNmQwNjFlZDEzNTg2NzhlNDAwYzE5OGZjNjk5ZjIwZmQxIGxlZ2FjeS10cnVuaworNjczMDQgODhmZjQ1ZTU4ZTk0YjZiYTY1NTJkODhkZjI3NjFjYzY2ZTI0ZWFmNyBweTNrCis2NzMwNSBkYzFkYjQ2ZDBhNDRiOWI5YTNmNjhiNDYwMGRjMDFmN2NhYjUzNzlmIHB5M2sKKzY3MzA2IDVmZmQ2N2RmOGM5ZjA4MTk4NjBjYTBiNWYyMzhlZmQ1ZTY5MGRiNDYgcHkzaworNjczMDcgZWFkZTQ3ZGZjMWU0NzA0Nzg2NWQ1Y2FlMWM0YjVmODg0Mzc3MWQ3MCBsZWdhY3ktdHJ1bmsKKzY3MzA4IGY5NWZmOTZmZDc5MmYyZjFkZTMxZThiNDlkNzcxODY1YzgwN2E4NjYgcHkzaworNjczMDkgYmFjMDQwYjVlZjIyYTQyNDQ1ZTY0OGQ4ZTk2NjE0Y2RmMmFlMzYwMiBweTNrCis2NzMxMCA1NGU1ZDg1M2IwZGVjN2U3NGVmMzEyNjgzYWZjMWYwNTA3NTY0ZjZiIHB5M2sKKzY3MzExIDE1OWExMWIxZDI0NDUwYTRhNTFhNDFlODc4OTM2NDY5MjY1NWQyMzcgcHkzaworNjczMTIgZTgzYTYwYzY5ZDUzZjU1NTFhMzA2ZTc3YTZkMzhlOWIxMTQ4NTQ5NiBweTNrCis2NzMxMyAzNGZiNjY2ZmY1MmY0MTM0ZjMyZWVhNjg1OTVhZTZkNmJjMzhiMDBjIHB5M2sKKzY3MzE0IDdhYWEzYWZmZWNjMTUzMmUxMTA0YmMxN2YxZDg1OWI5NTE1NzNhYmIgcHkzaworNjczMTYgMzRiYzIyNzlkYzU2ZGZkYWIxZGEzMjc2YTUzYzI2MWY5OGE1YTIwNCBweTNrCis2NzMxNyBlZGE0NjdkNjViNjVlZmIyMTFjM2U0NDc1MzhjMTE4MjYxYjFlNTk2IHB5M2sKKzY3MzE4IDIzMjdkZDY4NDIxY2NmZmMwMDUzOGI3ZGY3ZjA3ZDg3ZGM3NmY4ODIgbGVnYWN5LXRydW5rCis2NzMxOSAzMjUwZmI3MWE5ZTA4YzA2YTg2ZWFiZjJiMTUwYWFiOWQzYmRhNTI5IHJlbGVhc2UyNi1tYWludAorNjczMjAgYjY0ZDA1M2FmZDg0ZGE5MTQwMjkzY2E4NTY3OWQwMWM4MjZkOGFjNCBsZWdhY3ktdHJ1bmsKKzY3MzIxIDBiY2FmYTY0ZWNjYjQ0MzU3ZGFjYWIzNTdlNTU0YWFjN2E5Yjc4ZDAgcmVsZWFzZTI2LW1haW50Cis2NzMyMiBmNDAzZDk0MTU3YjIxMGRjZDkzOGQyYzYzM2VhNDRjMTFkZjZiNjA2IHB5M2sKKzY3MzIzIDc4NDZmZTQ5NTIxMjkwMGQ2MTM0YTg3ZWE0NGJiOGMxZDFmZDYxN2MgcHkzaworNjczMjQgMGViNWFkZDMxNjBhMjQ5MDkwMTM3ZWNiMjFjYWNjZDhhZjEzMGFjMSBweTNrCis2NzMyNSA2YWVmMjhlYmJkNmMxMTc0Yjg2ZmQ4NTBhN2UyZDYyYjc3YzY5ZmQ5IHB5M2sKKzY3MzI2IGRjNGFjZjc1MzI5NjJkM2M5Yjg5ZWM0MDllZWRmOWMyMjY3ZjYzZjkgbGVnYWN5LXRydW5rCis2NzMyNyBiMTgwYjI3MWE3YjJiNDRmZDc2ZjQyZGMwZWUxYTY0ZWRmYTFmYjUwIHB5M2sKKzY3MzI4IDMxZDg4ZmZmYjk4YTEwNGE0ODM0OTgyMzYzOWJjMWMzYmYyODMxMmYgcHkzaworNjczMjkgOGYwYTE3NWYwNGJlYWFkNWQ0MDk5MDI2Njc1M2ZkNjM5Y2YwNzA1NSBweTNrCis2NzMzMCAzZjJkZGIzZGQxNDdhNWIzMjcyNjY2MDlmOGE4YTJjODQ0ZmQwOGRkIGxlZ2FjeS10cnVuaworNjczMzEgMmQ4YzFlYTdmOGI3ZWM0NWQ4YjkyODEyMmNiMTBhMzA4MWUwMWFkZSBweTNrCis2NzMzMiA1ZTIwMDdmYTNjZjgyYzZjNGM0ZDBkNDk0ZmEyYjIyNjNmOWQwYjMyIGxlZ2FjeS10cnVuaworNjczMzMgYTBmNGQ0NWZkNDRjZjZmMTg3OWM5NTIyMTg4YjkyNTg3YTJkMzg0MSBweTNrCis2NzMzNCBhNDIyMGM5MmY3Y2NmNDMzMDE2NmNlNmFlMDUzN2VjMDA4MzIwMTk3IHB5M2sKKzY3MzM1IDJkOTcwNjkwMTI0MTcxNzVhMzA4MTViNTFlZjAwN2M3NzlmYjY4ZGIgcHkzaworNjczMzYgNzg5YTNhYjBhZTllYTdmOTc5NGFkODEwZTc4NDE1MzM1MzkyZjRmNCBsZWdhY3ktdHJ1bmsKKzY3MzM3IGMwMDlmMDBhNDUwZmRhNzc0YjE5ODJiNWQyNzZkMTAzMzVkNjIzOTEgcHkzaworNjczMzggYjZhODI0NTk5MjBjZWYwYTIwMjkyN2MzMTVkNWUyZWNjNmE2NTllNiBweTNrCis2NzM0MCAxMzMyMWNiMmQ3NTIwMzEyZjhkNTIyMzgxZTA5N2E3MGExMjA4MjY5IHB5M2sKKzY3MzQxIDAzMGExNTM2OWVhYzc3Y2IzYmMyNjhjOGJhZTFhZDNjMGU2Mzc2NmQgcHkzaworNjczNDIgNWY3MDcwNmE4ZTY3MThmMWMyMjJlMGIyNGQxMDk3MmYzOWI2MzIyYiBsZWdhY3ktdHJ1bmsKKzY3MzQzIDVmZWNkMWU5NTMyNDk3OTBkM2JjOTYzMmU2OGYwMTJmNzI2NTg5ZTEgbGVnYWN5LXRydW5rCis2NzM0NCA1ZDliZTY1ZTc4OTFmNzIwNDUzOWQ0NTA2NjZhNTNiY2I1NjYzZDBhIHJlbGVhc2UyNi1tYWludAorNjczNDUgNjMwYzE3NGI0NjVlOTgxNjljNDI4ZTlmZTM1OWU2NTg3YjcwNTRlNCBweTNrCis2NzM0NiA3YzJiMWI1MmYxMzQyOGY5NTYxY2QxZTE1NjYxMDZhZGFmZGFmYmQ3IHB5M2sKKzY3MzQ3IDkzZDJkZDY0MWI3MDE5NDM0YzljYjFmMmMxMDhlNGFiY2I3OWE0YTAgcHkzaworNjczNDggOGEzZWFjN2Y5Y2Q2NDk3ZWIzNWRlNzdiMzRmNjk0YmExNjBkNWZlNiBsZWdhY3ktdHJ1bmsKKzY3MzQ5IDUzYTEyN2FlYTU2ZTkzNTk3MzE2ZWRkYWNmNzZmYTgzM2M1ZTMxMzMgbGVnYWN5LXRydW5rCis2NzM1MCBjOWQwZDRkYTlhYzk3ZGM2OTdlY2Q1ZjAzZmZiODIzMWNlZjI2Y2QwIHB5M2sKKzY3MzUxIDdiYmNhMjdkMzU1OWUyN2VkODZkNTgwZWI4NTlhNWQwNGYyZmNmNzcgcmVsZWFzZTI2LW1haW50Cis2NzM1MiA3NWU5OTIwMzUxZjI1ZTEzZDFhMjU2ODAyNmM3ZTVkOTYzZTIxMTJmIHJlbGVhc2UyNi1tYWludAorNjczNTMgZTcwNGVlZGQ3N2RjZGU3YTMzMTRjNWRmNWViZmJjYThmZGNiMjQ5ZiBsZWdhY3ktdHJ1bmsKKzY3MzU0IGQ3MzAzYWJjZjA2OTI4MmJmMjRlZWY3NDE3YzQyNzliMzYwZWYyODYgcHkzaworNjczNTUgY2E2NzNiYmRlMWEzZDgxYTViNDRhMmQwZjk3ZTA1YzNjZWMxZWM0YyBsZWdhY3ktdHJ1bmsKKzY3MzU5IDI0MTY1MDNhMzA3OGI1ZGYxY2ZlODE2MDJlYTcwODVhMTY1MTZlMTkgbGVnYWN5LXRydW5rCis2NzM2MSBmMWJiMjQxYmFkMjRiYmYwNjI2Mjg3ODZmNTJhZGRhZGIzNjcyN2YyIHB5M2sKKzY3MzYyIDRlYWIzNDAxNjBlMGEyMmNmZmFmMzkxMjU0YmRlYWFiOGMyNzg1OWQgbGVnYWN5LXRydW5rCis2NzM2MyAxZTkxOWQzNGM5ODI1MTYxYjg0OTEwMmI0NzNkOGMwMDc2ZWMyNDQwIHJlbGVhc2UyNi1tYWludAorNjczNjQgOWZlYWE2YTFiZjJjMjJiYWUzMWE3NGVmODZmNjJkMzE2OGRhNGVjMSBsZWdhY3ktdHJ1bmsKKzY3MzY1IDc1MWE4ZWZjNWQ0NjYyYWE5MmY3MzMxODI5NjEzNmQ0MzdkYTkwN2EgbGVnYWN5LXRydW5rCis2NzM2NiA5OTU5OGE2MWNjMzVmZDdhZjIyZTgyNDE1ZTlkYWU1ZjRmYjg2N2U2IHJlbGVhc2UyNi1tYWludAorNjczNjcgYzNmNDlhZGFjMmZlNjdlMTZiMGNmZTZmNDE5MmFlMDA0ZjM5ZmFiMyBsZWdhY3ktdHJ1bmsKKzY3MzY4IDA2ZmI2NDNmNjU1M2M0ZjRiMzZmMzhkOGYzNzMxMWQ0ODU2ZWQ4Y2MgbGVnYWN5LXRydW5rCis2NzM2OSBlNDk3NjA5MDlkMmJhNTA2YmQ5MzBiNzQwNjE5Nzc3YWVkNzlhYzY5IHB5M2sKKzY3MzcwIGI3MWNjMDAzZWY5ZjhhNTE1MGJlODZiOGNjM2I4NmQzNjdkMWI3ZjkgbGVnYWN5LXRydW5rCis2NzM3MiBkNjY2ODZlYjExZjYzMWE3ZjRkNDUxNmUyZGI4NTQ0MjUxMmVmMWU2IHB5M2sKKzY3MzczIGZmYWQ2YzBmMjUyZWIyMDgwYjJhZjY2MTQxYTgwNDg1MWQxODMwMWMgbGVnYWN5LXRydW5rCis2NzM3NCA5NmYzOGUzNTcxOTRlYzY4N2ZhNDRmMGMyZTg1MTA2MDFkOWRkMzAxIHJlbGVhc2UyNi1tYWludAorNjczNzUgNDBiNzI3N2U2NjVmMDE0NTJlOWJjZTk2OTY3NmM0MDcyZDRlZDY4ZSBweTNrCis2NzM3NiAwZDEwZDVhYjI4NDQwYTk0YjQxOGQ1MjM3OTBlY2Y3YTFkZTNkMDA4IGxlZ2FjeS10cnVuaworNjczNzcgZjM3YmY1NWRiNDE2Y2EzY2MwZGU4MTM5ZDk2YmRlMmY4YzE3NDkxNCBweTNrCis2NzM3OCA2YzA4NzFmMGM3YTY5ZDU0MmZmNTExMDJkZDE5MWNlZjVjYzc2MjVhIHB5M2sKKzY3MzgwIGRmZWRhMGQzZDYzNmQ0MDE3M2E3MWNkYTNjMDIzMzA1NTg0NjAwNjcgcHkzaworNjczODEgNGNmMDNlMTQyMDBjODlkMDU0ZDI4NWJjZTk1OGZlYWYyNjg1NWExMyBweTNrCis2NzM4MiBlZmI0OWRmMGQ4OTlkZjlkMmEyOWY2NjA1MWNhYmM3Y2U1MDZjODM5IHB5M2sKKzY3MzgzIDM1MjhiNWMxNjkzODc5OWI4OTVjMzM3YjIzNmRhODdiZTg1OGJjZjIgcHkzaworNjczODUgMzBkMDFhNWY1MTdlZDdiZTUxMjkzNzdjMjJlNjM5ZWY4ZTBmZTk5ZCBweTNrCis2NzM4OCAyZDNmMWQwYzJhMTBlY2Q1N2FhODgzODEzZTU3ZTI0Mzk0MWMzYmI5IHJlbGVhc2UyNS1tYWludAorNjczOTEgZDM3YjRmZTUxMzI4NzU0MWRlNWI4OTc1Y2E4OTc2N2E5NDE4NWU5ZiBweTNrCis2NzM5MyA5ZmQ5Y2Q4NTI2MzFhZDZmMzEzNzc3M2FjMTI3YTY2OWZiMmQ1ZDI5IHB5M2sKKzY3Mzk0IDY4ZjNiZWI3ZWVhZGYxYjAwMTk1OTFmNDIxZTg0ZTNkMzFmNzhlYTcgcHkzaworNjczOTUgNzM4OTVlYWRhOGJkMWIyMjMyNmY3YTkyMDc1M2U5NGRiNmMwMTBjNyBweTNrCis2NzM5NiBhMGNiZTQwZGFjOGYzZjQ3NWNiN2NlYTkwZjY5NDQyMzhhMzI3Mzk1IGxlZ2FjeS10cnVuaworNjczOTcgNTY4NGNlOTZlNjM5ZjdlZTA5OGYzM2MwZWQ0ZmZlZjQ2YmRjMmRhOSByZWxlYXNlMjYtbWFpbnQKKzY3Mzk4IDg1YjFkZTg1NWExM2ZhNGFmZjIwNTYyYWQ4NjAxOTk1YWNhNjk0MjEgbGVnYWN5LXRydW5rCis2NzQwMSBkZWIzMDY2OWMzNTVjMjhhMWE1YjhhYTU2NjdiZTc4ODliODI0YTNlIHB5M2sKKzY3NDAyIDc5N2JkMzMzZWY2YmEyMmU5ZjNhZThmMDllZmNiMWU4MzIxNjk0ZDggcHkzaworNjc0MDYgYTNhNWY2NDA0YWQ1YmEzY2UxM2NmNmYzZGNmYTUyNDk0NGQ5NDg2OSBweTNrCis2NzQwNyA1Y2JjM2RkNDQ5MTYxMDg1M2QzMTg5MTkzYzI2OTM2NWI1NzU5YTU1IGxlZ2FjeS10cnVuaworNjc0MDggMGE5OTRiMzJkZTlmZTUxNjIwYjQ3MWFkNDdmZDg2NTdiYmFjNGYxZiByZWxlYXNlMjYtbWFpbnQKKzY3NDA5IGY4MDQ0YjhmZjZlZWViYmFmYmNlZDA1Nzk1ODk4ZjU1NjFjMTFhYmUgcHkzaworNjc0MTAgOGIxNGZjNWU1ZjNmNWQzOWMzNDcyZmQxYjJhOWI0ODhhMzZjMmY5ZiBweTNrCis2NzQxMSAzOTdmYmQ2YzM0NzFhMzEwMDJjZTEwMjIwOGExYTc4NmMzMGQ0OWQ5IGxlZ2FjeS10cnVuaworNjc0MTIgYzU0NjQ5N2I0MjFhMWEyYzU2MzRlMTE1ZmY4NmZiZDhlYmU1MzAwNyByZWxlYXNlMjYtbWFpbnQKKzY3NDEzIGI1OGE0MzUwMDJjMTExZDkzODFlODQ4ZmIyYmQwNDE4ZjVmNmJkYzMgcmVsZWFzZTI2LW1haW50Cis2NzQxNCBmY2FlMTRiY2VhNzMyMzc4NWJlYzMxMDc2MGIwMzRiMWM5ZmY4NzUwIGxlZ2FjeS10cnVuaworNjc0MTUgMzgxYzYyODE5ZjJlYzgyOTc4YWNjOTEyYjAzNTY5MDc4NmY2MWI3ZCByZWxlYXNlMjYtbWFpbnQKKzY3NDE2IGM1MTI2MmFkNTYwM2RlOTcyYWRkNzlkNWJlYjkzNWUxYTAxNDU5OTQgcHkzaworNjc0MTcgMzgwM2I2YzRmZjhmMzIwMTA1MDY3ZDI1NGY4OTM4ZjA5MzQ5N2IyMCBweTNrCis2NzQxOCAwNmU2YzM5YWQ4MDI0Zjg3ZjlhOGE2NDQyYmY4ZDYzMmMzM2RkMGQ1IHB5M2sKKzY3NDE5IGNjOWVmYjlmOGU1N2Q4NGQwNzA5ZWI1NDE5MzhjODNhZjBjNDFjNjMgbGVnYWN5LXRydW5rCis2NzQyMCBiZjJkMTkyOTNkYjc3Y2EzYTBhYWEwZmMyYzExN2E1YjBkN2UyNjdiIHJlbGVhc2UyNi1tYWludAorNjc0MjEgYTkwMzUyZTU5Y2U2MWQzMmY0MzJkNGU5Yzg0NDgzMmM0NmYzNWY5NCBweTNrCis2NzQyMiAxOGFhNzI4ZTk1MmQ1MTFmOTJiMTE2N2E5NzllZDIyMzAwZTRhNDA1IHB5M2sKKzY3NDIzIDBiM2I0NGI4Yzc4MjYyNTdhMjc4MWZiYjk1NjhlZGJkYmU4ZjczYzUgbGVnYWN5LXRydW5rCis2NzQyNCA0NmI1Y2YzY2FkZTRhZjc1YzY1ZWNmZTEyMWMwN2U0ZWI3ZDhhODczIGxlZ2FjeS10cnVuaworNjc0MjUgMGZjZmUxOGZmOGY2ZDU3MDY4YWE0YjczZWQ4OWJiZTFlMTcxOWI4OCBweTNrCis2NzQyOCBjOGFlZDlhMzZlY2I3Zjk4YzQ4MDc4OWQzOGYzNzVlM2FkZGU0YjAwIGxlZ2FjeS10cnVuaworNjc0MjkgOGQzMjlkMmEzNjRhYjUyNWNiOWNmMmM5MTEyMGM2MDE0MjI5NjBkOSBweTNrCis2NzQzMCAwNjA3Yzk3YTgxMjRiNGUzODUxZjhmNGE0OTEyMTY0ZDc3MjYyY2M0IHJlbGVhc2UyNi1tYWludAorNjc0MzIgMjNiNDM0OGZkZjUyZmY2ZWNlMDU5ZWM3ZDFiMGQwZjU4Y2RkYjU4MyBsZWdhY3ktdHJ1bmsKKzY3NDM2IDU2MGIyZjUyOTUyYzg3YzRjODJkN2MxOTJmYzJiZjM1ODM4NjIyMmIgcHkzaworNjc0NDAgMDVjMTJmNmQxNDA0MDljMTA5OTgxZDc3ZDk4ZGU4ODJkZWQ1ZGNjMCBsZWdhY3ktdHJ1bmsKKzY3NDQxIGNjMjk0ZmM5MGY2YzRkY2VkOTE5YmRhNGRjYmUyMjY0YjU3MzgxZGQgbGVnYWN5LXRydW5rCis2NzQ0MiBlZjBjNWNhNDU0NDEyMzQ0Yzk2YTZjMjAyOGIwNzViMmMzZTUwMDEyIGxlZ2FjeS10cnVuaworNjc0NDMgODAzN2ZhN2FjZTllZWMzYzkwYjgyOGMxNTA2ZGQxZTg1OGRhNmViNCBweTNrCis2NzQ0NCBlMjlmNjZmZGI0MmMyMGY5YTdlM2QzMjY0NjFlNjhhM2JkNTI5OTVhIGxlZ2FjeS10cnVuaworNjc0NDUgZjlhYTg3ZWIzMzRjMWVkYzQ2M2E5ZWNiN2ExNTMxMjNhOGI3NzBkOCBsZWdhY3ktdHJ1bmsKKzY3NDQ2IDM1NjlmN2IwOTAyNTZlMGFhMGVjZjdlM2ExNDg5OTY3NGQxOGEyOWEgcHkzaworNjc0NDcgMjc3YThmMjk0NGI0MjM1YWVlY2Q0ZDcxNWZjMzI0YjlhMDgwOWFjOSB0bGVlLWFzdC1vcHRpbWl6ZQorNjc0NDggYmVmM2M4NWE5MDhkNGNkZGQwYjFhZmQ2MTA2NTU2YjgyMjY4NWI3NyBweTNrCis2NzQ0OSBhMWRlOTFhZDkyODgyZGRiN2IyOWRlNGJjOGViM2RhOWZkYTRlY2RlIGxlZ2FjeS10cnVuaworNjc0NTAgN2ZkZjkzNmIzMGJmNmYyY2FkY2JlM2M1ZjQyMTU4MjI2ZDMxMjJlOSByZWxlYXNlMjYtbWFpbnQKKzY3NDUxIDNiZjE4YmU3Y2U1YTViNDg0MjdhZTY0ZTFiOThlOTQ0MjgyZDI0MWMgcHkzaworNjc0NTIgZjFlYmJjMTg2YzExMjc2M2RlZWExNjEyN2RmN2NlZDcwOTkyNGU5ZSByZWxlYXNlMjUtbWFpbnQKKzY3NDUzIDk0MmI0YTJjMmMxM2JlOWFmNTk2NjlmODhmN2JhNDVlZjQxNDAxZmQgcmVsZWFzZTI0LW1haW50Cis2NzQ1NCAzOWE1NmQzNTUzNzZhYWZmNDkyZTVmMTlmZjYzNWNmNDE1NjVjNzBhIGxlZ2FjeS10cnVuaworNjc0NTUgMzcxMmQxZjZiZmQ1NWI1YTU5OThiYzA0OWVlNjBkMzIyNzBiN2JhOCBsZWdhY3ktdHJ1bmsKKzY3NDU2IGI5NjJkMDRiYjdmMDMzNGFlZDFkZjhhNmNjZTFjYjZjNGI3NGU5ZmQgcmVsZWFzZTI2LW1haW50Cis2NzQ1NyA3ZWQzOGFhMTBkZTZhNTJlNjg2NDY4MWIzMzRlZGEzM2I3MDRmNmM5IGxlZ2FjeS10cnVuaworNjc0NTggMTg5ZGVmMDYyNTNjNmE3YTk3Mjg1YmQ0N2U5NTc0N2I1YTc0YWQyZCBsZWdhY3ktdHJ1bmsKKzY3NDU5IDAxZjZlYTdmN2E3NTgxZjRhNDk0ZmM5ZjZhZTg4ZGE4NDUyYjAzZmMgcmVsZWFzZTI2LW1haW50Cis2NzQ2MCA3NWE4Y2FhMjQxODY1OTU5ZTViNjVmZjM3ZTJkNWE5NmYzOTFlYTI4IHB5M2sKKzY3NDYxIGVkOGFkZmVmMjZjNjViM2E4ODZjODNiMGJkMzRhNjI2Nzg4ODFmNjcgcHkzaworNjc0NjIgNmU4OTEzNTNjZTk2NThlYmViZDNmNjdlNzkwYzI5YWM0MzJmYWIwZiBweTNrCis2NzQ2MyA2ODE3MzNiNDlmYTIzOThhZjhmYjgxZjk4Y2IzZTE2MWViNmI1NGMxIGxlZ2FjeS10cnVuaworNjc0NjQgNjBlNzc1ZWFhYWVlZThhOGVlYzZmMWM1YzY5NzIzMWNiZTBmOTEyYiBweTNrCis2NzQ2NSAzZTU5OTVmNmFiOGY2YTZjNDRlZThlYjRiYTg3MjkwMTE2NjY5ZGYzIHB5M2sKKzY3NDY2IGFiMTJkNzE2YTdhODFlZDRhMDRiYTY3MDMwMzkzYzc3Mzc0MDBjNWIgcmVsZWFzZTI2LW1haW50Cis2NzQ2NyA3ZjhmNzFkYzg2Yzc0MDk1YzZhOTFhNDFlM2Y3NjIzZjNmMThlODc3IGxlZ2FjeS10cnVuaworNjc0NjggMDczMmQxM2VkMDY3OGFkODU2NWI4ZTkwNDAwMjk0MmRiODAzNDFiOCBweTNrCis2NzQ2OSAwZjc3MjVlMTliYzNiOTNmMzI4MTg2NDI1MGZiZjU2MjgwODEwMTkwIHB5M2sKKzY3NDcwIDQ0NjFmMThmMjY0M2M4ZmM5OWYxMDJiNDFlMTc5MDcxOGQ5NTExOGUgcHkzaworNjc0NzEgYjFkMmFmNTJkODAxNTM0YThiZDgyYmU5NzQ0YmRkYWUzNDRmZGZmZCBweTNrCis2NzQ3MiBlZDg0NzZkN2Y2NGE1ZDYxNjUxODEwNjQyZDdhNGIzNDRlY2EzNmNkIHB5M2sKKzY3NDczIDA5YzJkMTVlNGQxZGI2MmM5OWZhMTM1NTFmZDU3ZTcwYmM0MTdmZmEgcmVsZWFzZTI2LW1haW50Cis2NzQ3NCBjMTgyZTNiOWU5ZmMzYWJkZmQ1MGRhNWI2ZmM1YmE3ZjdkZGNkNjhhIHB5M2sKKzY3NDc1IDQwZWM2ZDI4OTU1MmU3ZjMzOWNkZjA3N2Y1OTczMzVlNzI3MGQ3MDYgcHkzaworNjc0NzYgNmExMjFmMDRiYzdkZjZhMjQ5ZmE5OTkzNjAzOGIxZTdiZjBhNTEyZiBweTNrCis2NzQ3NyBkMTcyZGQ4ZDllMDllYmQ4OGY1MTQ4MWVjN2Q4NTkwM2FiNzc5ZWY3IHB5M2sKKzY3NDc4IDg2ZWUyZTBkNGQ0MTU0OTU1MDcwM2ZiNGM3ZjAyYWI2N2U0MTFlNTMgcHkzaworNjc0NzkgNzhiMGM4ZGUzYTk4ODM4MjEzMzgxZTA2NTQ2YjA0Y2ExNDljMzg4NCBweTNrCis2NzQ4MCA5YzgxYzNiNzExMTk1MmYxNGVhMjhlYjMyMTA2MWUyYTQyNGQ5OWY1IHB5M2sKKzY3NDgxIGNkZGEyMDkzZjZmNTMwOGI2MmJkMjk2MzQ5NWQxMmI2OTkxNTM1MjQgcHkzaworNjc0ODIgY2M1YTk1ZjBmNTZhNTM0ZjVmYjQzMGU5MDgwYjcyN2ZkNzM0MjVkNSBweTNrCis2NzQ4MyBjODI2ZTQ2MmZhNTFmNTNmMjE1ZGZiZjY2MTVhMmVlYjdkYjgwYTNmIHJlbGVhc2UyNi1tYWludAorNjc0ODQgNWQ0ZGZlZWRkNTEyYjMxOTQ0MzA4ZGNjNjlmZmY0MTQxMjMwMDVlMSBsZWdhY3ktdHJ1bmsKKzY3NDg1IDA0NTI2YTIyMmNhZjI0M2IzNTRhNTUwZDEzZDEwOGY2OThlNTM4OTkgcHkzaworNjc0ODcgY2Y0N2Y3YzdkZGIzMjZlMDY4YTk0NjhiYzRhNzE4N2EwNmNmYjg1NyBweTNrCis2NzQ4OCBkMWRlMzAyZTZlZmM1Mzg2MTY4MTE2NzIxZjVlY2IzZDFlY2RhMjk4IHB5M2sKKzY3NDg5IDgxY2E3YmI4ODA0ZjAyYzU4Y2I5OWUzYzYxOTIxNDNjMzlhYTA4ZmMgcHkzaworNjc0OTAgMTM3YjUwZWU5NmQ1YzFhZDE4MGFlNjQwNjk3YTljZDRhM2Q0YmFmYiBweTNrCis2NzQ5MSA1NGZlYWMzZDExNjkwNjQ5NzQzNmM1N2M3Yjg4NzgyMzQ1NjY3ZTk4IHB5M2sKKzY3NDkyIGY0NDdhMWRlMmZhZTliMDMzMmY5NzAzNTU0ZDJkYjMwNDczMjk0MmUgcHkzaworNjc0OTMgODQ1MzA1YTNkYTM2M2ViYmQ4ZmZjMzNhMjI0OTdjZWExNmU2YTMxZiBweTNrCis2NzQ5NCAzMzQ0ODA0ZjMyN2Q2ZTViNWUxZTJlZmEzZWUwNzk2MWE4YTA2YjZiIGxlZ2FjeS10cnVuaworNjc0OTUgNmE0Y2M2YmExYzE2YWVjYmIyZTlmZWUxM2ZkMWY4YTNhODk0MWZjMiBweTNrCis2NzQ5NiBhM2QwMjk5YjRiMWRhZmJhYTg5Zjc1OGZjZDM0YzU0ODVlYjQ3ZTVmIHB5M2sKKzY3NDk3IGM2YTRhMmNjNTYxMjZhMzk3NDVlZTdkZjgwNzJhZTA5MTI3ZjRhNGYgcHkzaworNjc0OTggNTg4YTk1ZWY3OTcxNzZhNTU3OGNjMzQxMzI5ZGFiZDdhYjQxY2U0ZSBsZWdhY3ktdHJ1bmsKKzY3NDk5IDEwN2Q0NTMxNzliZTJlZGU3ZTc4ZjdhYTg2NzhjMjJjNjIwNWJkNDMgcmVsZWFzZTMwLW1haW50Cis2NzUwMCA1MjM1ZGNkYTkwNzZmMjVhOWNkY2M3MjZhOWIzYWMzOTQ3OTFhYmRiIHB5M2sKKzY3NTAxIDJhNWVjMDYwYmI5OTgxOWI2ZDVkNWU1MWI2MGQ4ZGJhOTdiNGE2MWMgcmVsZWFzZTMwLW1haW50Cis2NzUwMiA1OWFkZmU0MzY5OGRjODQ4ZDgzMTE1MjdjMGRlMzQ0NGJlNmZkYTkwIHJlbGVhc2UzMC1tYWludAorNjc1MDMgYTY1MzIxNDYwMjcwN2JkZTBlNTEwNjRkN2M3Nzg5Y2UyOTVlNDQzMiByZWxlYXNlMzAtbWFpbnQKKzY3NTA0IDk4MDdiNzlhMTYyZTZmZmIwYmE0MmUyYzY5NTg0ODQ3YTZhN2UzYzIgcmVsZWFzZTMwLW1haW50Cis2NzUwNSA1ODljODhiMjBiNWI3ZTAwNzc5MTAxYzE3ZDE0OTFhMzNhOGZiOWM1IHJlbGVhc2UzMC1tYWludAorNjc1MDYgNjhhNmUzYWM0MWMxOGM4YTE5MGFkYTNhYTE3NjQ0YjYxMGRlMmM1NyByZWxlYXNlMzAtbWFpbnQKKzY3NTA3IDlhMmIwNjM4NzBhMzA5MWYyMzAxOWY3YmNjYzlkNDVhNjQxM2RiNDYgcHkzaworNjc1MDggNzViOGVlMDYyYjBkNGZjOTE3YjEzNzM5M2EyODlhMGY1NDhjMWNkNiBweTNrCis2NzUxMSA4NzhkNDA0NjhjNGU3ZDJkMTI5M2ZhYjZhNjk2NWFmMjFiMTRmOTI5IGxlZ2FjeS10cnVuaworNjc1MTIgZTA3YTMyMmVmNTkzNGNlMzViNDk2OTllMzkzOGUyMWZkMzEyNjMxMyByZWxlYXNlMzAtbWFpbnQKKzY3NTE1IGNhYmYzMDNlNzg3YWE1Y2Q3MjA5YjQwZTNiMmNhYmEzZWU3NWM1YTUgcmVsZWFzZTI2LW1haW50Cis2NzUxNiBjOWRhODVjMTk3MTliOTU0NmRhN2JmNmU2M2NhZjFjMDVjZDY0OTFlIHJlbGVhc2UyNi1tYWludAorNjc1MTcgNTMxNDU3Y2ZhM2UyNDNlMWZkMzA4NTQ5NTZlNTU2NGE1ODE1NTZiYiBweTNrCis2NzUxOCA3MWFjYTg1M2IyNDQyMTA2NmZkNDk0NzAzN2EwYmYzNTE4MGNhM2FmIHJlbGVhc2UzMC1tYWludAorNjc1MTkgZTc5M2ZjM2M4YWJlOTVlMzE5OGY4NDkxYzU0OWNiZWJmZTUxNGVjOSBweTNrCis2NzUyMSBmM2M0ODVlMmI0NTEzNjY1NzgzZGI5MTliOTk0YjE4ZWEzYzBiZDNkIGxlZ2FjeS10cnVuaworNjc1MjIgNDhmMjlkODk0YjNjYzdhZmJhZWI0YWY1MTEzMDgxYTc2NGJlMjMyOSBweTNrCis2NzUyMyA0MjU2MDM3NGFiMjUxYWJhZDM0NzNlM2QwZDI4NTIxODNlMzc3MzQ4IHB5M2sKKzY3NTI0IDA3ZWZjZTEwN2FhZWYyZTlkNGVjYjkxZWQyMjA2YzE4Njk0OGI1OGMgcmVsZWFzZTMwLW1haW50Cis2NzUyNSA4NTZmYzNlYTJkZGI4NzM5N2JjYzRhMzg4NmZjMjAxMzhjODU5ZjAzIHB5M2sKKzY3NTI2IDc1MjA3YTBhOWUxNTg0NTBlMDU5OTc1YjAxMmJiN2ZkMmY2MzFiMWYgcHkzaworNjc1MjcgNDU4ZDdiYzEyOTUwOTE5NzlhZGI2ODI4NGVhMTFhZjYxNTg1OWUxYiBweTNrCis2NzUyOCBlOGFiMjc1ODJiMTg0M2YxODJhMDQ3YTQ1NmUyZTFjOTljZjY0M2MxIGxlZ2FjeS10cnVuaworNjc1MjkgM2U2NTAwMzJhNWQxY2JiMTIyMTQ0MmI5Y2ZkMTJhNzI4ZDQ5YzBhYyBweTNrCis2NzUzMCBjMTE1YWQ1OGVhZGZlOWEwZmJkOGI2OTYzOGMyZTEzMmM5MDEwMmZlIHB5M2sKKzY3NTMxIGY2ZTUzYzMwYWU5NmM1YmMxZDM0YTA5NDA1ZjA0ZmM5MGEzOTYyNjAgbGVnYWN5LXRydW5rCis2NzUzMiAyMzE2ODAyNDRjMTdiMzIzMGM1YzBhOTM4Y2Q3ZTdjNjNlYmEzZTEyIGxlZ2FjeS10cnVuaworNjc1MzMgNzRiZmViMzY0YTIzYjM3ZmRiMzlkNjEwYjFhMDY1YWM5OTg2ZmEwMiByZWxlYXNlMjYtbWFpbnQKKzY3NTM0IDEwM2M2OGNjMjllNWUyZjY0YmIyOWY1NTQ5OWE4N2NhY2JlNDQxYWQgcHkzaworNjc1MzUgODllNzM4Yzc5MmMwYmM4ZGMxNjFlZmRjYzk2ZDhjYjY1M2RmMTZhYyByZWxlYXNlMzAtbWFpbnQKKzY3NTM2IDQ3OTBiMzFkOTI1Nzc3ZjJmMWM2NjgzZjU2NGIzYjFhOTU0MWI3NjIgbGVnYWN5LXRydW5rCis2NzUzNyA5ZjhlNTFmZGNlYTBmYmM2NmJjYjhkODFkYmQxODUxYjBkOTgyNzY1IGxlZ2FjeS10cnVuaworNjc1MzggY2Q1ZjU2YTgxY2NlMWQxNjVlM2RmYmM1YjhhNjBjODA5MGQwYTk2NCBsZWdhY3ktdHJ1bmsKKzY3NTM5IDNlY2E1YTczNjUxNjEwYWE5MzFlM2FkZThiN2E3M2RmNzdlYjBiMjUgcHkzaworNjc1NDAgMjdiYTA5OTU3NzUxNDNlYmE5MTQ1YWQ4NTc3YjJmMTkxNDJlMGZjNyByZWxlYXNlMzAtbWFpbnQKKzY3NTQxIDY5Mjk1NjNkYWQwMDNkNjUxZjYwZTNlYTFjOTY4Mjc0YzRkNmNhM2YgcHkzaworNjc1NDIgNjc4NjA3Y2UxMjJmYTg3NzdjMDRjZDI1ZjA4Nzc4NWUzOTEwNzJiZCByZWxlYXNlMzAtbWFpbnQKKzY3NTQzIDU4OWNkZTYxNGI1YmZlNGJjNjFkNmIwNTVjNmM1MjE0YzdlYmM2NjEgbGVnYWN5LXRydW5rCis2NzU0NCBkZWQ5OWU0ZjZiM2RiYzEwNTI1ZTg2MDMxN2JmOGUwMDRjMGQyNTgwIHB5M2sKKzY3NTQ1IGE5ZDAwNjdjYmVhNDYzNzVjZjIzMmZiYjZiYzYwZWVmOTljZWI0MzEgcHkzaworNjc1NDcgNTRjMTlhMWJiYWJkOWU1ZWM5OTVlMDgzNzA3ZDJjNWQzY2E5Mjk0MSByZWxlYXNlMjYtbWFpbnQKKzY3NTQ4IDRlMTNiMzdiMzcyM2I5MjE3M2Q4MDg4YzQ4MzM4ZTc3MWNkN2E3MzIgcHkzaworNjc1NDkgOWJiODZmN2ZiOTQ0Nzk1YWY5ZjkzZmMxMTA1YjhiOGI4ZWM3OTc3YiBweTNrCis2NzU1MCA4ZGQzNTZiMTRiMGQ3ZDU2ZTEyODMzNzcxNzQwMTM3OWJjOWI5ZDk5IHB5M2sKKzY3NTUxIDcyOWRiOTQ2NGVmNjg4YWEzM2JhMmM3OWNkNmIxOTI4ZWE1NzI4Y2EgcHkzaworNjc1NTIgYmRiMDJlYWQ3NTliOTc4M2M2YWYyZGJjZTBlNjUyODg5ZmM2NmZlNCBweTNrCis2NzU1MyA4NTE5MGZmMjI0ZTBjNDcxYTZhMTYyYmFkYzkzYzc1NjFkMDBkYmFkIGxlZ2FjeS10cnVuaworNjc1NTQgYzMxOWQyNDc0ZjU3ZTBmY2M4ZmU1OGJhZjAyMTJmNDNlM2MzMTE3MCBsZWdhY3ktdHJ1bmsKKzY3NTU1IDI3OTQ2ZjFlYjhmYTU3N2ViZTI4ZjQ3NmQ0Y2JlMDE5NDZmYTViNjAgcHkzaworNjc1NTYgYTBjZWEwMWVjZTUzY2U2ZWFmZjYzYTkxNzM1NWUwNTYyZTQwNDhiOSBsZWdhY3ktdHJ1bmsKKzY3NTU3IDc2NTk4NDFkMjcxNGRlZDBkY2ZmZjkyYTUzOTI2N2U0YzQ3MjQwMjIgbGVnYWN5LXRydW5rCis2NzU1OSA4NmQ4YTUyMmY0NDA3M2QxMjExMzY0MjJhNDY0ZThkNjRlOGRkZDNlIHB5M2sKKzY3NTYwIGI0N2I3ZDljNTkzNjA2YTdhMGExY2U2MDg1MDczN2U3MTYxYzBmMTIgcmVsZWFzZTMwLW1haW50Cis2NzU2MSA4OWJjMzFlMDY0ODkwYmY4YTVjOWVhNTg1YjI4NTVjNmMxYjRmMDQyIHJlbGVhc2UyNi1tYWludAorNjc1NjIgMDEzNzE4OTdjYjE5MDAzNWQ1NmJiZjRlNjNkMjFiN2JjZTUwYzc0YyByZWxlYXNlMjYtbWFpbnQKKzY3NTYzIDVlZjhiNWE3NGVmYTIxY2RiOWRhNTg3YTVhMDQ3NTBjYTEyZTk0M2QgcmVsZWFzZTI2LW1haW50Cis2NzU2NCA4NTlmNTUwYjQwMDNhY2ExZDI2ZmQ0ZTdiODdiYTQwOGMwZGU0ZmM2IHJlbGVhc2UyNi1tYWludAorNjc1NjUgM2M3ZWVmMTg3YmVhMzRkYWFkMWZmYTMzZDFlYzM4YjQxNTgyYmExYSByZWxlYXNlMjYtbWFpbnQKKzY3NTY2IGYwOGQxNDQ4YjkwZmY1ZDZjMDg1MzBmZTkwZTk4YzhmYjYzZWE4NmYgcmVsZWFzZTI2LW1haW50Cis2NzU2NyA2ZTUxZmUxYjdlZDllYTU0MmZhMmNlNmFlNmIzOTEwNGJjMzg4NmVjIHJlbGVhc2UyNi1tYWludAorNjc1NjggYTE3MmVhYTRkNWVjMTA0OTUzZDBjMWQzZGJhMGFkY2UzNzYyMjUxYSByZWxlYXNlMjYtbWFpbnQKKzY3NTY5IDExYmY1OWZlMTBiOTI0MTA3YjdkYTUyZWNmNTI2MjgzMGE0M2UxOTkgcmVsZWFzZTI2LW1haW50Cis2NzU3MCAyZTI2ZTgyMTlhYTQyMGM1NGViNWIwNDBmMTEwM2FmNWQ3ZDc2ZmMzIHJlbGVhc2UyNi1tYWludAorNjc1NzEgMzYzNmZlOTU3MzJjMTM3YTMxNGI5N2ZmZjFhNmUyZmJjOTllMjA1OSBsZWdhY3ktdHJ1bmsKKzY3NTcyIDIwYWIyMjYwZGM5M2JjMDcyZGI0N2RhYTk0MjY5NzA1MTM5MWFlMzIgbGVnYWN5LXRydW5rCis2NzU3MyBjNDM0Yjc3MTQ3N2JmYTFiNjQ3OGYxYjM5NGNjNDUzOGI1NDEzNGYzIHJlbGVhc2UyNi1tYWludAorNjc1NzQgYjM4ZWFiOGM5OTA0ZGE3ZjJiZGY3MTZiY2IwMTRiNTJmNzg0Y2Y3ZiBsZWdhY3ktdHJ1bmsKKzY3NTc1IDIwY2Q4Y2Y2MTM3M2Q5MzU3ZDNlZWY5ZDM2NGQ4ZTc3M2Y1MGVjODQgbGVnYWN5LXRydW5rCis2NzU3NiBjNDlkNmQ3YzE4MWUxZjJmNGI5Y2Q2ZWViYjlkNGQ3ZjczYjU1ODljIGxlZ2FjeS10cnVuaworNjc1NzggMTAwZTQxNjBhZGZiYTI5ZjNiYzAyOTJiNDA2MGZjZTAxY2JjZDdkOSBweTNrCis2NzU3OSA5NGI0Zjg4ZTVmNmJlNDQ0NWI1ZTRjZGQwODQxMGM3NjY1MDRjMWU0IGxlZ2FjeS10cnVuaworNjc1ODAgMDA3OTY0ODA5ODAzZmYzY2Q3ZWYwZmE1ZTkyOGQxNjdiMDMyMTlmMSBsZWdhY3ktdHJ1bmsKKzY3NTgxIDkyY2I2ZTVlYjQzY2U2MWYyNThhMGUwM2M5ODI2NzA3OWRmYzNkZTAgbGVnYWN5LXRydW5rCis2NzU4MyBhM2FiOTUzNDViNTJiMjRjMmE5NzVlZGQzMGI1ODI0NjE1Njg3MjliIGxlZ2FjeS10cnVuaworNjc1ODQgMDU1MDQ1ODJjZWQ2N2VkM2YyODAyNGQ5YjY2YzY5YmJmMjU0Y2ZjZiBsZWdhY3ktdHJ1bmsKKzY3NTg1IGMwNjE4M2IyZDA2ZjQ5MDQzNGRlZWRkOTcyNTE3YWU0YmEzM2M2ZjYgcHkzaworNjc1ODYgMDk4ZGJkOTczMTQ3N2M1YzY0NmIxZjkyZTVjNmQ3YjgzZTcwZDkwNSBweTNrCis2NzU4NyBmZjIyNjNkZTBkNmY0YWI1YmJjOTU2YWNhYTgxZDZhZTZhNTFlMzA4IGxlZ2FjeS10cnVuaworNjc1ODggN2E5MmExNjRmYzEyZjNjNGRkMDAwNzc3NDI1MmI2ZWFjNmY0MjU5ZCBweTNrCis2NzU4OSBkZTMwOTRiYjE0MjFkN2Q2N2I3ZjFlMDRjYmMwZjQ5N2ZmODBlMDQ0IHJlbGVhc2UzMC1tYWludAorNjc1OTAgNTdiNWM0NjM5YTVkMjNmNGVjZjVlYzE0M2Y0N2RiODZlYzdmNjFhZCBsZWdhY3ktdHJ1bmsKKzY3NTkxIGMwMzAxYjU0MzBkNTI0YjMzYzM0NDQzMjhmNzVmODMwZTYzMzFhZTMgbGVnYWN5LXRydW5rCis2NzU5MiAyMGExY2NhZGRjYWVlZTc3NjA4YWY2YmE1MGYwMjhhYzdmY2QxMTRmIHJlbGVhc2UyNi1tYWludAorNjc1OTMgYmJiMTAxYTVmOGNjZGU1ZGVjNTdkNTM5MDJiOWJmYzg0OWUxOWJkOSBweTNrCis2NzU5NCA2NTFkZmIzNDA1ZDIxOGY0YmMxNjA0MGIyZDA2ZDlmMTNkY2EwZmY1IHB5M2sKKzY3NTk1IDYyNGI5ZWFlZGI4MGYwOWFhY2JiZmFhODczODkwNjQyZDE1NmJkOWYgcHkzaworNjc1OTYgMjVmMjIyYmVmZWM0YmRhZWViM2E1YmM5NWY1MGE4OWZjNGFiY2Q1OCBweTNrCis2NzU5NyA3ZjA4MjBkNzMyOTkzN2E1MDQzOTczMTYzZDVhZWU3NjIyNDk4ZmU4IGxlZ2FjeS10cnVuaworNjc2MDAgNGM5ODQ0Y2YyYTNmNzg0ZTAzYmEyMWE1NjIxNTIzZGVjMzNjNTczOSByZWxlYXNlMzAtbWFpbnQKKzY3NjAxIDFmMmEzYjEzZTg2ZDdjNGJhODcwNzNlMDE4ZTYwY2ZkNDc1M2ZiMmUgbGVnYWN5LXRydW5rCis2NzYwMiBhYmEyY2UxNjNiNzE4ZDExYWEzY2M3OGIwNzYyYzA4NjUzNTQyYzkyIHJlbGVhc2UzMC1tYWludAorNjc2MDMgYjAxZGEyNmM0YmY5NDAwZDdlMTEwMTQ0ZWYxNzhiZjk2OGZhNjY1OCBweTNrCis2NzYwNSA4MzIzZjJkZjU2MTc0NzQ2ZGE0YTU0Y2M2YWM2NTMzYmJlMzE4YTc3IHB5M2sKKzY3NjA2IDJjNzhmODE1ZTE5MmFiZmY2ZTE0MjM1N2YwNDMzYTg3YjE2MDZhNGMgcHkzaworNjc2MDcgYWM0MmE4Zjc1ZjkyNWI3NmI5N2Y5YmUwYjVhYjc3NGJiYmY4MGU3MiBweTNrCis2NzYwOCBhOTA2ODIwM2FmZDVjMDAzYTQwZTU1NDgxODYyYzgwMjgwODZmMDdlIGxlZ2FjeS10cnVuaworNjc2MDkgN2MzYWYzMjAwZTM0YjcyNTc3MWJhYzc1MDUzNDYzNTQ0YjY1OTRjMyBweTNrCis2NzYxMCA2N2NlNzQ1YTc0N2E4ODQ0MTY0NGQ2NjNjYTk2Zjg4ODg5ZTNlNDRjIHB5M2sKKzY3NjExIGJhOGZlM2E0MGE1YmY3M2Q0NTMyNDY0MmJkM2Y1NTZjNjhhZjcxMDAgcHkzaworNjc2MTIgNjE5NjM1NDFjYmY1YmQ5ZmJmNzUyYTI2NjE4OTVmODFmYzQxNzBiMSBweTNrCis2NzYxMyBlMDA3M2I3NjUwY2MzY2FlOWI3MTFjY2ExYzA1NWEzZjRjYzU2ZWVkIHJlbGVhc2UyNi1tYWludAorNjc2MTQgZGQ1ZTFhMDQyZGJhNGZiYTNjOTQwZjc1NWFhMmY3YWY5MzY2YmE5NiBsZWdhY3ktdHJ1bmsKKzY3NjE1IDBiZTEwMzkxMzQ3YjljZGQwZWZlYzU3MmFkYWY2NmQ5NDE5NmM2ZDIgcmVsZWFzZTMwLW1haW50Cis2NzYxNiBiMTJkNmY2MDY2MThhYmZlZmRhNDU3YmNjY2RmOWVmN2M2OWI5NDU5IHB5M2sKKzY3NjE3IGNlMzYzODg3MjdhNzhiNzQ0ZTIzZGM3MzU1ZTMxM2U3ZWU5YzNkZGMgcHkzaworNjc2MTggNTJhZDhhNzI0NzJlODQ2NmNjMzZlNTcxNzVjYjE1ZWRkN2Q2ZDQyNiBweTNrCis2NzYxOSAxMzQ4ZGMyNDRjYTM0YjdiNjUxYjc5MTJmZDY2ZGEzMjUxMDg2MzU4IGxlZ2FjeS10cnVuaworNjc2MjAgM2RlNzIwY2QxNzY2YTUyZTNhY2NiMGJhZWZhMmRiMzFjMDBiNmFmMCBweTNrCis2NzYyMiA2ZGFiMjU4NzUyYzE4YjA0YTg3YzYyYjViODhjOWVkOWZmMTcxOGJjIHJlbGVhc2UyNi1tYWludAorNjc2MjMgMTY5M2ZkOTRkODI5ZDFmMTA3NzcxYzM0ZDg5M2IxMTFmOGI4NWY2MSByZWxlYXNlMzAtbWFpbnQKKzY3NjI0IDRiOWFkM2U3NDgzZTM1ZDAxOGI2YzM1MWFiM2MzNDc1NzM1YWYyNTAgcmVsZWFzZTMwLW1haW50Cis2NzYyNSBlZmY0YWFiOTU4NDc5NWExMTBiMjJkOTIyMGM4Nzc0MjRiY2Q3N2I3IHJlbGVhc2UzMC1tYWludAorNjc2MjYgZTlmOTNlMmY4ZmJjYThmZjk4NTRmMjA2NzdjYzE3OTQ3M2NiNzhmZCByZWxlYXNlMzAtbWFpbnQKKzY3NjI3IGIxNGY1ODdmNTEwZTY5ODIwMWFkMDAwMTUzMjIzOWJjODMyZWRhYmUgcmVsZWFzZTMwLW1haW50Cis2NzYyOCAwZmU0OWFlYzI1N2NiYTRlYjU0YmQwMzYxNzhmYTIwNTkxMGMyNTZmIGxlZ2FjeS10cnVuaworNjc2MjkgNmFhMDk4NWFiYmE4YzY4NGVjNjA5NTExMzljODU5ODNjYjM0ZGExMiByZWxlYXNlMjYtbWFpbnQKKzY3NjMxIDc4NzQzNzcxNDJmNjRjMWFkM2I0ZjA3NTQ0OTAyN2NiNTk0MGJhZWUgbGVnYWN5LXRydW5rCis2NzYzMiA1ZDBlOTNmMDM5OGEzY2Y0YzBmYWQ0ZjkzMmRkMzI3ZWQ0OWY0YmNkIHB5M2sKKzY3NjMzIGFlOTg2ODEwNThiMjQ3Y2EzMGI1YjRhNDVkNTQzZmY2OGUxNzU2ZmYgcmVsZWFzZTI2LW1haW50Cis2NzYzNCBlZWM5MjUyYjNkNDU0ODAxOGJhYmQxOTI3MzIwYTY2OTU0MmIwZGI0IHJlbGVhc2UyNi1tYWludAorNjc2MzUgZGFiZWQ2OWQ4YTJhYjJjZDI4YTcyOGE4ZGFkNDE3NmFhYWJmOTVmZSBweTNrCis2NzYzNiAxNzBhOTc2OGU3YWVlZjk0ZmU4MzhkYmE1ZGI4OWI4ZWQ1MjcyOWFkIHB5M2sKKzY3NjM3IDE1ODA3ZTI2MmViZjBmYTU4ZDM5YTEwMDE0N2U2NmNlYTI3ZjBjZmUgcHkzaworNjc2MzggYjhiZTlkMWYwZDQ1NWQzOGE2OGI3MmY2OWQ5NWY1ODI4ZTFjMThmNyBweTNrCis2NzYzOSAyMWE3ZThjMTE3MDcyNjJkMTEyYzg1ZmNiMDhiMWY2MTg0ZmRlYzFhIHB5M2sKKzY3NjQwIDBkM2RlYmNiOGQ0NDkxNDcwNGQzM2NkZDRlN2E4ZWUyZmYwZDhhMDMgcHkzaworNjc2NDEgNjBlZTkwMWI3MzUyOThlODJhYWI4MzJkM2QyODBkZDE2ZTAyOWI0ZCBweTNrCis2NzY0MiAwMjRhOTg5N2M2NTEwYWNkNjZmMDNiZWE4M2Q1YWI2ZTY5MDdmYjIzIHB5M2sKKzY3NjQzIDkyYzczNDgzYzFmN2E1YzIwOGY2MmMzYjViNGI1ZjBiM2RlYjMyMzcgcmVsZWFzZTMwLW1haW50Cis2NzY0NCBjN2FiZmFiNGRjZGI5ODllYzUyNWVjZDNjYThmZTJmZWJkYTZiOTA4IHJlbGVhc2UzMC1tYWludAorNjc2NDUgOTE3MDBkMjEyMWM4MmQzYTg1NTIxMGQ3M2ViZTk0ZGI3OTFjNTgyNiByZWxlYXNlMzAtbWFpbnQKKzY3NjQ2IDYzZWU2YTBmNzM1ODk5NTRjNzBlYzkxYjA2ZWJmOWE0MzVmOGI3YzQgcmVsZWFzZTMwLW1haW50Cis2NzY0NyBhODZjZGY0OWI4MjE0NDYyM2QzYzRlZGMwNTI5OGZkNzg1ZmYzOTQ5IHJlbGVhc2UzMC1tYWludAorNjc2NDggMDA5YjQ2NmNjNmNhOTQ1MmE4ZTRmNmY3MjUxNGRiNzA3OTlhN2Q1ZiByZWxlYXNlMzAtbWFpbnQKKzY3NjQ5IGUwN2JjMzc5ODk4MTI1ZWYwYTUyM2JhYWUwNGE0NjQwNWVkY2MyYTAgcmVsZWFzZTMwLW1haW50Cis2NzY1MCA4MjBjMTEyY2MyYTg2NWY3ZmJjYzY5MzU5YjJjMTFmOGMwZjQ3Y2RlIHB5M2sKKzY3NjUxIDcyNTE5MmM2NGMyODQ5Mjk3MDhhNDg4ZTU5MjdhMWJlNTFkYzQ4NWYgcmVsZWFzZTMwLW1haW50Cis2NzY1MyBjOGFhMzE1NGRiMGUzNjJjODQzZWI4ZTYyOGE1NGMxNmYzNGJlZTAwIHB5M2sKKzY3NjU0IGE5ZTMwMjUwZWQyMDY3ZmZlOWEyYjczNjRlMjM1OGVlMzU3YWM4NTkgbGVnYWN5LXRydW5rCis2NzY1NSA5ZTExYzkyZGE0NzZjZWQ1Yzg3MzlmM2EyMTA4YzNhYzMxNWE3OTNiIHB5M2sKKzY3NjU4IGY0YjE2YzAyZDFmNTllNjNkZTU4NmNlMGZlOGI5OTNhMGE5OGU4ZGMgbGVnYWN5LXRydW5rCis2NzY1OSBkY2E1N2NiMGMyMDAxYjBlM2U5MzA1Y2ZlMTc4ZGViZmZhYmEwZTQ5IGxlZ2FjeS10cnVuaworNjc2NjAgOTlkZDBkMDA3MjVhNTk1ZjlkZGU1ZDJjOTYzMWY2ZmM3NGNmOTg3NiByZWxlYXNlMjYtbWFpbnQKKzY3NjYxIGRjYWM4ODVkMDBmMWRhOWFmODJiMGM3YjY4OTA2NTNjYWE2YjhkMzggcHkzaworNjc2NjIgNDYzYmZhMDczMDgxMDBhMTk4NjYxMWRmOTQzNDA5ZTQyNjkwZmI0ZiBweTNrCis2NzY2MyA4YjlkMDhkYzg1MDA0OGIzMTY3NDUyZWQ1ZDgyZjRhMDMwNDBjNGY1IHB5M2staXNzdWUxNzE3Cis2NzY2NCAyNmEwOWQzODY2NGEwMWNmNTc2NWFlZDJjZjQwMjk1ODg5MmI1MjAxIHB5M2staXNzdWUxNzE3Cis2NzY2NSBkMDQwYzQzNWFkZThjOThkZGY0YzVmNDJkYzJkOGU5ODA5NGY1YjMxIHB5M2staXNzdWUxNzE3Cis2NzY2NiBkYzY5NmRlYjJjZjI2ZGEyNDA5OGQ5NjQwZWM3ZTljZDc5ZGFmYzU3IGxlZ2FjeS10cnVuaworNjc2NjcgODNkNjQyYTM0MzliM2U5OWQ3ZmQyODkyNTM0ZjcwMzI4NTkxZjQwZCByZWxlYXNlMzAtbWFpbnQKKzY3NjY4IDNkYWM5OTI4MTk0YjdhYjQyZDEzMWYxNTQ1YjIzNDU2YjVmZmRlNmEgcHkzay1pc3N1ZTE3MTcKKzY3NjY5IDA5M2U0ZmE1MGQ4NGI2NGQ3MmIyOGJkNzYxZTQ5ODA4N2JjYmFlYmQgcHkzay1pc3N1ZTE3MTcKKzY3NjcwIDA1Y2FmNDQwY2U4ZjAwYjE5N2Y5MDNhY2FjMDlkYTI4Zjg3YzFkNjUgcHkzay1pc3N1ZTE3MTcKKzY3NjcxIDM4ZTYxMTY4NDU0YjI1NmFmYWU4ZmZmMWY5N2FmOTdlZTMyZDAzNjcgcHkzay1pc3N1ZTE3MTcKKzY3NjcyIGI3OWQxZDc2ZjE5NWE3MWRiZjM2M2EzNjRkZDU4N2IyMThiNTU3MmQgcHkzay1pc3N1ZTE3MTcKKzY3Njc2IDYxY2I2YzRhYjIwZGI3NDZkMzcxNDcxZDQ4OTNlYjJiZmRlODgxYmQgbGVnYWN5LXRydW5rCis2NzY3NyBhZDY0NzcxNjY5NmM0ODhkZTRiOWYyMWEzNTQ3ZTQ5MTg2NTQ1OWU2IGxlZ2FjeS10cnVuaworNjc2ODAgZDQ3MGI5YTdlOWUxODk2ZGMxOWQ0NmJmMGMxMGQ0ZTMyYTdhOGQ3MCBweTNrLWlzc3VlMTcxNworNjc2ODEgOWZhMGE2NWVjZTIzYTI5MWVjZTA5MDE5N2Y1MDY1YWZlMzIwOThmNCBsZWdhY3ktdHJ1bmsKKzY3NjgyIDQwZjc1NjYxNTU0ZGI4MDc0MDY1ZTkxYzljNGVkYzFhY2JkNmJhMTQgcHkzaworNjc2ODMgZDllODI4ZTgzZDEyNWRlZjc2MjM1YzNkOThkNWY3M2FiZWY4ZGY2NiBweTNrCis2NzY4NCA2OTRkMDRlZDJiNDNkYWM2NTdhYmY1Y2NlODE3ZmYzNWYwMzg3YTlmIHJlbGVhc2UyNS1tYWludAorNjc2ODUgNjJjODljYmZiNTExYjg3MjUxNjliMzVlNDFmNGFjMGNmZDliMzc1ZSBsZWdhY3ktdHJ1bmsKKzY3Njg2IDk4YWJlOWNkZTdjZTc3NzFiNTZmMTk1YTJlNGQ3OWQxZGU4YTYxZjUgcmVsZWFzZTI1LW1haW50Cis2NzY4NyBhNmRkZDk0OTgzZWEzZDM4YTFjMTY0M2JiMTI5ZDA3YTU5NjdkYmQyIHJlbGVhc2UyNS1tYWludAorNjc2ODggOWExMGQ0NDA0YmQwMDJjZjUzNGFhMWY5NGNiNzI5Nzk1ZWYyZWRiMSBsZWdhY3ktdHJ1bmsKKzY3Njg5IDQ4MjM5ZjYyMDliMDY0ZGJlOWUwMGJmYjk5MGIzMGJkNzU4MDc1NTggcHkzaworNjc2OTAgMjY1MThkNDFhMTg2OGM0OTVjNDczYmE1MTExZDQ1NjAzNmQ0OThkZCByZWxlYXNlMzAtbWFpbnQKKzY3NjkxIDU5NjcwYjdiNzdhNmI1MzA3NzVkZGM3ZDQzMGM4ZTlhNmM0YjQ2MGEgcmVsZWFzZTI2LW1haW50Cis2NzY5MiA0YWY1ZTJhNjA5YWIzNThmYzkwMDg4NWJlMjE0OTRjYzkwYTA1ZDVlIGxlZ2FjeS10cnVuaworNjc2OTMgYjA4OWE1Nzc3ZDgwNmU3MTczOTI4ZDI1YTNlYzI4MWVhZmQ1ZmJhMyByZWxlYXNlMjUtbWFpbnQKKzY3Njk0IGFlODE5NzUxMDNiMDg5YzJhMDFlYzgwNjBmOGQ0ZDJhZGI2ZGNhNmIgbGVnYWN5LXRydW5rCis2NzY5NSAyMmFhN2RkMGVhODFiOTE4YTZkZjY3ZTc0ZDZiZjBlNTVjOGEwZmQ4IHB5M2sKKzY3Njk2IDJmOGMzMTdkZmYxN2U3ZjZhOTJhODEzMmJlYjQxNzA1YWVmYzYxN2EgcmVsZWFzZTI2LW1haW50Cis2NzY5NyBhYmY4MTViODBiNWQ1NTdhMDUzMzYwYjAzMmU0M2RkMTBhZmZiNGU3IHB5M2sKKzY3Njk4IGZiMjQ1NmEzNmE4M2E4ODUzZTJlMjc0YThmNWQ3M2ViYmU2ODA5ZTIgcmVsZWFzZTMwLW1haW50Cis2NzY5OSBlMzU0NjhiYzRkZjQxMWRkZDNiOGQ3ZjJlMzc1YmE4ZjMwYjJmOWUxIHJlbGVhc2UyNS1tYWludAorNjc3MDAgMjFkZTdhOTE0NmY3NGEwYzc4YTMzZWNlMGE4Y2M5YzA1MGI0ZDEwYSByZWxlYXNlMzAtbWFpbnQKKzY3NzAxIDAxYzAyM2Q5MjE4ZWJkOTkzNmRjMjZhNDliNTc0ZDQ1ZmQwYjUxZTEgcmVsZWFzZTI2LW1haW50Cis2NzcwMiA3MTY3OTc1NjQ2OWU5MDE5ZDJlYTUxNmQ2NzI0ZmQ5YTI5OTEzODQwIHB5M2sKKzY3NzAzIDljMzFhOTg3NDQ3ODhiZjZmZWEzYTYzNTgxN2Q4Nzg3ZjIxNTEzODcgcHkzaworNjc3MDQgZTRlMGZmN2RkYzg1ZWMxZTE1NjE5NzZiOTc4OGViNWMxNWExZmZlYSByZWxlYXNlMzAtbWFpbnQKKzY3NzA3IDBkZjBmZGZjOGUxYjJjMDNiMTBlMGUxYzgzZmI5OWM2MGZiYzkwODIgbGVnYWN5LXRydW5rCis2NzcwOCBhMjUyNTE1NGU0NGYyNDBlOTAzNTZhYjJhMzEzZmI2YmZhMWQxNjg1IHB5M2sKKzY3NzA5IDc3NmE2Y2FmYzIxYTM0ODE5NTkzMTMxOGU1NzdjY2MyNmY5NTE5NDIgcmVsZWFzZTI2LW1haW50Cis2NzcxMCAyMGE4NGUwNjMwNTI1NzIzMmZmNzg2ZWY5MjRiYjAzZTAxZmFlMzA4IHJlbGVhc2UzMC1tYWludAorNjc3MTEgZDkxZTYyODYyNzY0NTFiZDdiMmJjNGM5YmFmZmI4ZTZhNTYzNzEzNCBweTNrCis2NzcxMiAyNmU3ODk0MjE2NWUxMGZhNjY2MjkwMDNhYjdjZDBlYWEwYjhiZGU5IHJlbGVhc2UzMC1tYWludAorNjc3MTMgM2UxYzQ0OWQxMWUwZWFlMDAyYTJlMWVhNGNiMzBhM2IxODkxN2YwZiBweTNrCis2NzcxNCBkZjY2NDk5NTE0MTBlYzgzZDhlY2QyNjk5MGFjMThhMmU0MzNmNDM5IHJlbGVhc2UzMC1tYWludAorNjc3MTUgMzAwYjk1ZmE3YjRkM2Y5YjFkNDcxNzQwYjQ3M2UxOGM2MTRhZjhjMSBweTNrCis2NzcxNyBiNDU1MmUyZmZkNWE0MTg0NTJkMmMxMGMyNTg4ZDg2NjdkZjRmMTRmIGxlZ2FjeS10cnVuaworNjc3MTggZjliOTUyOTRhYzg1NzdhODQ2MWE5ZGUxYTYyNTYxZWVkZTU4MjliNCByZWxlYXNlMjYtbWFpbnQKKzY3NzE5IDU4NTVlM2UwZTg1YjE0OWM2YTgxMWZmNWEzZjY5ODljZGNkYjgwOGYgcHkzaworNjc3MjAgZmRlYzU3NjYxMWJkZmE2Mzc1YzI1MmMyM2UwN2Q5Nzk5ZGJiMTNmNCByZWxlYXNlMzAtbWFpbnQKKzY3NzIxIDMzYTFlMTAwOGU1NDBmYmU2NjU5ODA4OWViOTgxOGNlNzcxODJkMmUgcmVsZWFzZTMwLW1haW50Cis2NzcyMiBlZWVmNzFkZDNjY2UwMmY4YzY2OTU4OWYxZmQ0OTkwM2YzNDZmOWE3IHJlbGVhc2UyNi1tYWludAorNjc3MjQgNDY0NmMzMzUzMWRiMzAzZjliYmExMTM5MGFjZGU2NDY0YmYwZjZjNyBweTNrCis2NzcyNSAyNDVlNzg3YjkwZmMxMGVhOGZlZDgwZTM4OTUyOTMwNmRmMzFlYzBmIGxlZ2FjeS10cnVuaworNjc3MjYgNjFkMDY0MDlhNjYwNjkzYjQ3OGE2NTE2MzQ4OGFhZTBjMmIxMTgwNCByZWxlYXNlMjQtbWFpbnQKKzY3NzI3IDMzY2QwNjQ5MTg1ODUzZWVmN2MwYWFmMWVjMTg3ZThkYTk4YzAwNWIgcmVsZWFzZTI0LW1haW50Cis2NzcyOCBhNmMzYzcxNWUyYjcwNzQwYzRiNmI0ZjdkYzZmNDdiMTZhN2U1OTA1IHJlbGVhc2UyNC1tYWludAorNjc3MjkgZmI1ZjhhZmYyM2ZkMWNjYzFlNjEyZmZhNjMxOGE1ODRkYzMzNmZiNiByZWxlYXNlMjQtbWFpbnQKKzY3NzMxIDBiN2RjZGI1Y2EzYWFjODllMDUzYjY3OTJhNDFiYTk1MjYzOWQ2MGIgcmVsZWFzZTI1LW1haW50Cis2NzczMiAyZTIxY2VhNDM2NzA3MWMyNjQ5MjUwMzdjNmExMzc5MmY4YmI1YjhiIHJlbGVhc2UyNS1tYWludAorNjc3MzMgNGQyNDIyOTg5OTgxYWViY2ZjNjAxNWE2NzEyMWMwM2E3NjM2NTQzNSByZWxlYXNlMjUtbWFpbnQKKzY3NzM0IDljYWExZTVkZDgyYmRkMDJlNTk1NmNlMmUzNTA5NWQxOGMyMTQ0M2EgcmVsZWFzZTI1LW1haW50Cis2NzczNSAxZjFhMTE3NzY3NzQwMzMxZThiMTgwZTUzMDMxZTQzZThlMzNlNmI0IHJlbGVhc2UyNS1tYWludAorNjc3MzYgOGQ5MDJjNTEzYmEwZjg1OWY1NzQyYTJlZTRhYWVkYmNlYjMyMGVjOCByZWxlYXNlMjUtbWFpbnQKKzY3NzM3IDc2ZjE4OWVhNTUwOWYxYjI0OTdhNWQ1ZDg2NzcxZTg1MGUwMTE3NWQgcmVsZWFzZTI1LW1haW50Cis2NzczOCAzYTMzMmJmMDZkYTA2OWVmYTc4N2RlNDdiYThjZWZhZGQwMjVmYTA0IHJlbGVhc2UyNS1tYWludAorNjc3MzkgZTZkYmFkYWIwMWQ4YTg1MDFmODViMDMyY2FmMzYzZDMwYjQyYzM0ZiByZWxlYXNlMjUtbWFpbnQKKzY3NzQwIDVmNGY2YjdkYThjYmNhNTc0ZmViYWQ5M2Q0MzU4ZmRkYmExZWNhYjMgcmVsZWFzZTI1LW1haW50Cis2Nzc0MSAxMmRkMmNmNWUwYzgwMDI2NTA1YTgzZDgxNjczMDE1NTc0MTQ3MzQwIHJlbGVhc2UyNS1tYWludAorNjc3NDIgOTUzMGQzMzRkMjYyNDIxOWU3ZWUxYWVjYWYzMzUzMmU5MTAyNjZiYyByZWxlYXNlMjUtbWFpbnQKKzY3NzQzIDU4NDY4ZmNkZTA2ZTliZjUzYmE1OGQ1YzRmNDJlODllNzliOWEzNTEgcmVsZWFzZTI1LW1haW50Cis2Nzc0NCA4OGMwOGE2M2NiNzQxNTcwY2MyNTA5NmNlZTkxNDQxZjlhYjYzZjAzIHJlbGVhc2UyNC1tYWludAorNjc3NDUgNmU4MGVjNDEzMDk3M2RlNTVmNTA4NzM4YTA5YWM5ZmNiMzBkMDA0YyByZWxlYXNlMjUtbWFpbnQKKzY3NzQ2IGJiMWQ5YWU4MDJjMzE1MmQwZTMwYjBkZjNmODMwOTUwNzU4ZjFmMGMgbGVnYWN5LXRydW5rCis2Nzc0NyA3NDBjZTlhNTIzZmZjNGFjYzkxMTIwMDJiYzk5MjM0ZDg2Y2Q0M2UzIHB5M2sKKzY3NzQ4IGEwOTBhYWI1NzVjNmVmNmMzMjJkNDk0NzY3MDRlMjhkZDQ1ZWY4ZWIgbGVnYWN5LXRydW5rCis2Nzc0OSA5YzQyOGRjM2Q2ZmI3NzgyZTE4MDU3NGFiYjNiMzY1N2YyMjgzYWM0IHB5M2sKKzY3NzUwIGI1ZWZjYTMwNGQyYWY5MWUxY2QwZTZlNmZhOWUxMTBiMGUwNzAwMGQgbGVnYWN5LXRydW5rCis2Nzc1MSBmMjBlYjgwOTUzNWU5MWMwYjE0NDE2Y2M1NDQ3MzU3Y2ZjYmJlOTVjIGxlZ2FjeS10cnVuaworNjc3NTIgNDI2NGNmMDBhNzVjMGZlMjA2MmVkODQ2MjdmMDRlNDZmMzg3ODE4ZiByZWxlYXNlMjYtbWFpbnQKKzY3NzUzIGRkMWI4ZGEwMWQwMmQxOGJkM2RmN2MzY2VlMjI3NTYyODg3Yzg4M2IgcHkzaworNjc3NTQgMjUyOTI3YTJmMzJkNmZlMGZkMGNjZjM5YzVjNzM5MmE3ODE3YjUyMyByZWxlYXNlMzAtbWFpbnQKKzY3NzU1IGNjNzI3MjM5ZTUxYjE2NDcyMGZlZTYyNDNkMzE2NTZmNmRiZjFlZTQgcHkzaworNjc3NTkgZWIwNzAwOWM4NjYwNTgxMWU2OTM1YWJiZmU5ODE4OTA4NjBhNzRkMyBweTNrCis2Nzc2MCAxOGY5NmY2ODgzYWY1ZDUwOTI3ZTZiOTdkNDYzMzI3ZWYwMDI4NThhIHJlbGVhc2UzMC1tYWludAorNjc3NjEgNzAzM2IyODY4NWExM2JmNDU1NDQ1YTQxOGM5YjBjNWI5NjQwMDVhYyBsZWdhY3ktdHJ1bmsKKzY3NzYyIGIwOTUxNzhjMDQ5MjhhMzQ2YzAyYjhhNDc0MDQ3MDRiNzgyYmI2NzEgbGVnYWN5LXRydW5rCis2Nzc2MyAxOGJjZTJmMmE3YzU2YmFkNGNiMzY0ZjZmMWIwZGM2N2NjNzYxZGE5IHB5M2sKKzY3NzY0IGQxNTc0NmFiZjZjNzgzYzYyMmFmZTRiZDIzOTkwMDJkYzUzODdjMjQgcmVsZWFzZTI2LW1haW50Cis2Nzc3NyA1NzVmOTczZmYyNDQzM2UxNTJlODhhNDM0YzRjOGE2NzQ1MjRkMjUwIGxlZ2FjeS10cnVuaworNjc3NzkgNzJhN2FjMjE4ZWEzMjgzY2QxZDRiMTNiOGVmZDMyZjliYWZhYjJkNyBsZWdhY3ktdHJ1bmsKKzY3NzgwIDk2YWIwOGVkOTVhNDAyYWQ3ZjlmYmQ2YWRhMWM0MjE3YjA5ODE2MWQgcHkzaworNjc3ODEgNGRiNjZjMjBjYTY4ZTVhMThhMjY2NmQ1ZGZhNmQ2OWQ4NzUwYmE2YiBweTNrCis2Nzc4MiBlYTljNjAyNmFlN2VhMjQ2MmNmM2FmY2VlYmI1NTg1NzY5MWI4MDAxIHB5M2sKKzY3NzgzIGFkOTgyYzI2YzNkZDVmNGQ3NzlhNjU5MWE5ZTc0NmI3YzVjZTg2NDcgcHkzaworNjc3ODQgZTM2YmUxZWM3Mjk2NWMwMGU2YjBhNmZhMDdkMzA4YzdhYTNmZmU0ZiBsZWdhY3ktdHJ1bmsKKzY3Nzg1IDllOWZjYTk0ZDI4NjIxNjhmMTQwNjk4ZmE3Y2I3MjQxMDdkNjc2YWQgbGVnYWN5LXRydW5rCis2Nzc4NiAzMzM2ZTRiNzdhMDQxMmVhZTg3YWEzMmZhM2YwZmM0MjBmZWFmNThhIHB5M2sKKzY3Nzg3IGRjNmY5NzRmYjdkNGY4MzI0MzVkMDYxOWMzNTc3NGY4N2YyNzU1ZTAgbGVnYWN5LXRydW5rCis2Nzc4OCAxYWYyYjhiMGFkODhjYjk0NzljYjQ3ZGFiY2FkYjVmNTI2YzcyOGI2IGxlZ2FjeS10cnVuaworNjc3ODkgZGFjYWExZjQ0MTlkNzAzYzY4NjU4NmMyYWQ5ZTc2N2U4ZTJlNzY1MyBweTNrCis2Nzc5MCBhYjUxYzE1MDliYzA0YTQ2YmY5YTU0MzI5Y2ExY2JkYWEyOThiY2YxIGxlZ2FjeS10cnVuaworNjc3OTEgZWRkNzI0MzdjZWMzZjM1N2IyMGViYTBmNDAwMTNmN2U3ZTkxNmQyYiByZWxlYXNlMjYtbWFpbnQKKzY3NzkyIDdkYWI4ODA3MGJjN2RmYWQwODk1MDcwNGUyOTJkN2QyMTVhNzU4NWIgcHkzaworNjc3OTMgZWIyODc2YWUwNDc2OTYwZmU0NzY1NGUyZTkwZjMyYjIzMjE3YjU5MyByZWxlYXNlMzAtbWFpbnQKKzY3Nzk0IDIwZjE1YzBmMjFmODhhOWFmODg1YjdjMDVjMmYwODBiZTczMDk0YjcgcHkzaworNjc3OTUgNDgwNTc0NWQ1NTk5Mzc3YmY4YjljMzViNjM0NWMwY2JjYzU0YThiYyByZWxlYXNlMzAtbWFpbnQKKzY3Nzk2IDI5OTY4Mzk1ZjkyMDUzNjg5NTgwZGJhNjliZGRhZWNhYmZkNzVjN2EgcmVsZWFzZTI2LW1haW50Cis2Nzc5NyAxNGNkNTg4NTQ0ZmExYjFjOWEzNTk1YjMyYjgxYTE4ZTNmYWE2MWRlIGxlZ2FjeS10cnVuaworNjc3OTggZDUwZGFkMmIyNzUwNDJhZGVhZjMwOWE5NTZiM2FlOGIyNDcwMDEyNCBweTNrCis2NzgwMSA5NTQxYTJlY2M0ZmJiY2VlNGZjOGU2Mjg2N2U0ZjhlODBhZmFkMDZmIHJlbGVhc2UyNi1tYWludAorNjc4MDIgYjdkOWFkYzRjMzQzNzk2YmFlM2M4NzgwYWFiODI4ZWM4Mzc0YjFlNyBsZWdhY3ktdHJ1bmsKKzY3ODAzIDIyZmY5YTQ2Mjk4NzU1ZGU1ODdiNTk2YTlhNGM3Y2UzMzQxYmE5OTYgcHkzaworNjc4MDQgYTE3NWIxOWI0YmYyY2U5ODQxMGU2MWYyNzk5ZjJkZWFhN2Y0N2Y2OSByZWxlYXNlMzAtbWFpbnQKKzY3ODA2IDhjNDI0ZjExNmZiOGQwZWQ3NWQ3YTliMmU0YzI2ZWI3ZmJjNzhjODkgbGVnYWN5LXRydW5rCis2NzgwNyAyMWQzMzU3ZGNiZWM0MWZjNmZlMDBjMDQ5ODUxMThhYzg5MGZiMTM2IHJlbGVhc2UyNi1tYWludAorNjc4MTAgYTQzYTZkZjE4YmE0YmM2ODljMjIxOGRkMDQ2MDAxNzFhMmM4Yzc2YyBweTNrCis2NzgxMSBhZWYwNzMwZGY5YmEzMjdhOGUxNWQzNzJhZTczN2RmYjZlYzQyZTZmIHJlbGVhc2UzMC1tYWludAorNjc4MTMgNjg5ODdlOTMxMTkzZmFmNjlkMmJhYmQxMDQwNTcwNjg3NTQyOGIzZiByZWxlYXNlMjQtbWFpbnQKKzY3ODE0IDA3NDA3ZGUxODM5NDg4M2U0ZmRkNDZjYzljZjRkOWQxNmRjYWY0NTEgcHkzaworNjc4MTUgZDA2YjA0YzU3YjUzNjE4MDE4ZjcxYmJlYWQ5NTA5Y2JlMGMzNTUwOCByZWxlYXNlMzAtbWFpbnQKKzY3ODE4IDk0ZTc5ZDc4ZGZmMGRmYjVjNTNmNDk4NDJjN2RmNjVhZDViNzllNjYgbGVnYWN5LXRydW5rCis2NzgyMiBmMGRiMDZmNDlhNGUzMGU0OTY2NjI1MWY2NDhjZTk1ZTcwOWUxNTY5IGxlZ2FjeS10cnVuaworNjc4MjMgMzM2Njg2NDgxNDQ2NjAwMGY3OGFkOTc1YjhjN2RlYmI4YTIzOGU2NyBweTNrCis2NzgyNCA5MmUyMTY1MmYyZjRkMzJkYmJjZjZjNWFiMzlkZDRiYzAxMjZkYzI3IHB5M2sKKzY3ODI1IGNiYmUyNTg4NjY0ODdhNDA2MGVkZmE1MmM4ZDM5NjBhMWFjNjU0MmQgcmVsZWFzZTI1LW1haW50Cis2NzgzMiBmYzk3MjljODBiNzkxYTdjYmNlN2E2YjljNDY5YWFjYTUyMjhhODg0IGxlZ2FjeS10cnVuaworNjc4MzQgMTg5YjQ2MmVlOWQ0ZjI1YmZjMmQwMzBiNjkxODRhMDkwOGQ3NzIyNCBweTNrCis2NzgzOSAyZWU0NjUzOTI3ZjcyZjliYjNmZjE0YjMwODNkNGEyMDNkNjg0ZGZjIHB5M2sKKzY3ODQwIGRhZjZkM2FmNDBjNGI5MzlkZDFkY2YxNWE3Nzc5NWZjZjY3MzZmN2MgcHkzaworNjc4NDEgMDAxYTI1MTVkNTdiMDE4OGE0YWM0NWJlOWE4YzZmNGM3ZWFmMjRmZSBweTNrCis2Nzg0MiBhZWJmNzEyNGRkMzIyYThmYjU1OTRkNDZlOWE2NTFkYmU1YjZhOTFmIHJlbGVhc2UzMC1tYWludAorNjc4NDMgODJlNmZlMzcwNzgyOWY2NmY0ZDRmZDBjOGEzNWEwM2RjNTMwZGNiYSBweTNrCis2Nzg0NCAyNGI4MGI3OTc4ZWMyMTk0YzRmYzdlMTEwMGFhNDBiMWFmZTExZjczIGxlZ2FjeS10cnVuaworNjc4NDUgNTZiN2ViZjEyZWEzYWRmZDkwMzI0NjA2ZTBkYjE3Y2NmNjk0ODM1OCByZWxlYXNlMjYtbWFpbnQKKzY3ODQ2IDQ3ZWNiZTJkM2VlZmJjNTNjNzViYmMxYTZlZGU3M2RjZTM0OTRkOTYgcHkzaworNjc4NDcgYmYyMGMzODRiZTU2MzlhZWEwNTBlODAyYWNlODQxM2MwYzhjYmIzZSByZWxlYXNlMzAtbWFpbnQKKzY3ODQ4IDZmYTVmOTY5ZWZlNjQ3YTIzZjhmMmExYjQ2MjJmZDU1YzMyZWI4ZmMgbGVnYWN5LXRydW5rCis2Nzg0OSA1ZTgzOTI5ZjdlZWI2MWQ2ZTAwOWJiMWY0Njc5NjIzODFlZWQ1ZWZhIGxlZ2FjeS10cnVuaworNjc4NTAgOWExODkwOTgyNDg5ZTU0Njk5NzI0MDBjNjM3OWY0YjI5MTk5MTlmNCBsZWdhY3ktdHJ1bmsKKzY3ODUxIDBkYjkwN2E3MDcyMzYwOWFiMWE4NzA1ZGE3ZjBiNzM5ZjYxNmRlMDcgcHkzaworNjc4NTIgZjNmMWYxNDYyYzgyNTM2YmIyMzc5NmU3MGM4NTUyMjE0NGVlMjRkYiByZWxlYXNlMjQtbWFpbnQKKzY3ODUzIDQ4ZjI3MzczMzc5NTZlZTE1ZTM5MTBkNzgzZjJlZjc0MjQ5YjA2MzkgcmVsZWFzZTI0LW1haW50Cis2Nzg1NCA2MDg4NTZhN2U1NjhiODZlNTE2M2VhNmE4N2ViMDE2NzI4OGJjNjY4IHJlbGVhc2UyNS1tYWludAorNjc4NTUgM2NjMDU2ZDIxYzJmNDQzNWE1MzRkMjMzNDViYWQ5YzBhOWQ5YjNjYiByZWxlYXNlMjUtbWFpbnQKKzY3ODU2IGI1NjIzMTIyNDcyOGFiZjJjYjNlYWEzYjQ3YWZkNzgwOWY4NWRiOTMgcmVsZWFzZTI1LW1haW50Cis2Nzg1NyA0OTZkZmY0N2JjN2VmNmZjMWE2ZTE3NDIyNDc1OTlmMmM5ZDhkYmIzIGxlZ2FjeS10cnVuaworNjc4NTggOWJkZWIwYmUxZGFkNGRjOGIwZjE5ZDYxYzY2ZGY4OTllNjNlOWRmZCBweTNrCis2Nzg1OSAxYzk0ZTc5OGM4NWIxYTYxMzk0ODgyN2EwMDljNmFiYmMzMGNmNGY4IGxlZ2FjeS10cnVuaworNjc4NjAgNDI4ZjZjNGU4NDQ2MjEwZGMxMzk1YTZmMDFhY2NlNWQ4YjY1NjhlNyBweTNrCis2Nzg2MSBkMDI4MmEyOTJiMGFhOGMyNTI1MWNjZTQwYzlkNzg3ZDI4ZjYwY2IzIHJlbGVhc2UzMC1tYWludAorNjc4NjIgOWZiMmEyM2VhYzQzNWEyYmQwZDZmMjk0YTViZjA1YjlkNDhhNjNkNyBsZWdhY3ktdHJ1bmsKKzY3ODYzIDA2NDc5NDhiZTg0MGVmZDNiZTg5YWUwODhkYWEyNWE1NWU0OWExYmIgbGVnYWN5LXRydW5rCis2Nzg2NCA2NzAyMDRjZjIzZTIyNTZkMmJkY2Q0MjIyMWY3YTBhYzRmY2I1NmJmIGxlZ2FjeS10cnVuaworNjc4NjUgYTc2NTYxOGM3ZTk0NGYzZTA3MGE2NTI0ZGZmYWM4ZWU2YTQzYTJlMyBweTNrCis2Nzg2NiA0NjI3OWNlYmVhOWNmMTQzY2NiOTBjNDkzNzMzNjVjZWFlMGE3NzFmIHJlbGVhc2UyNC1tYWludAorNjc4NjcgNzczYWYxODYwOGUzYTYyYTQwOWU5MzNkYjQ4MDhmMDNiYWUwZDFlZSByZWxlYXNlMjUtbWFpbnQKKzY3ODY4IGVkYjJlZWZiNjg1NmY2ZmIwZjMxMTlkNThiZDkyNDQ4OWUwMTE0MTQgcmVsZWFzZTI2LW1haW50Cis2Nzg2OSA3OGZjMDk2ZTUwODUyOThmZDAxMWE1MzFkNjUyZGU0OTdiOWYyMzI1IHB5M2staXNzdWUxNzE3Cis2Nzg3MCA3ZmU3MmFlMTlhYjI5MGEzNGM0ODMxM2RiMGUxMGVhZmExZWU2Mzg2IHB5M2staXNzdWUxNzE3Cis2Nzg3MSA0NWJlYTU4NDY5NGUzNTBjZjJiOTEyNDE1YmRjNjgxYTVhZDIyMTYyIHB5M2sKKzY3ODcyIGVlOWM5Y2MwMjhjZTE1OTE5NTdlN2M4ZDcxMDE2ZTNkMmJmZmVlZjUgcHkzay1pc3N1ZTE3MTcKKzY3ODczIGFkMjQ2Y2I0ZjY2MmUyMTFjNDcwMWZlM2I5ZmRjYjYzOWM5OTQwODAgcmVsZWFzZTMwLW1haW50Cis2Nzg3NCA2ZTNlNTgyZmUzZjM4OGVkOGIwMjdjYWI1ZTZjY2I0ZDZlNTcyYWE3IHB5M2staXNzdWUxNzE3Cis2Nzg3NSAwYzBiOWFiYjU4NDI2ZGQ4YTY3ZDgwZDQ2YzU5N2ZiZDRmZjcxYmM4IHB5M2staXNzdWUxNzE3Cis2Nzg3NiA4YmI5YTg1NDYzOWI2OTA1ZTAzOWRlZjgzYTNiYTVhNzJkYWQxMTFiIHB5M2staXNzdWUxNzE3Cis2Nzg3NyBmYjk5M2YwOTNjYmY0M2JkZDFjMmJiYzRkNjE3NTM0MzhhYmNmYmM3IHB5M2staXNzdWUxNzE3Cis2Nzg3OCBhNjU0ZjFlMWJlMjMxZmQzM2I4OTA5MTVlYTUzNjg4NWJkN2M3Y2EwIHB5M2staXNzdWUxNzE3Cis2Nzg3OSAwZGNhMmI0NTc3NzVkNDcyNWRkNDgyMDJmNWY1ZjY3ZGE4OGY3MDlkIHB5M2staXNzdWUxNzE3Cis2Nzg4MCA1ODllZGY2MTVhZGI3MjYyZGY5Y2EzYmE3M2ZhZTVkMzE3MzE4YTY2IGxlZ2FjeS10cnVuaworNjc4ODEgYTdiMzU3ZjllOGE0OGVhZDYyZWQ2MWFmOWE4YzU4YzZjZjllNzI5NyBweTNrCis2Nzg4MiBjNGZmZmEwOTcyZTM2OGUwZDczOTk1YmZjODY5OGNmNmE5Y2IzM2Q4IGxlZ2FjeS10cnVuaworNjc4ODQgMWQ5NjFmZTU0YTZmOWQzYzE5NDEwNjdhMTMyNzI2YmZmNTVlMWRjMyBweTNrCis2Nzg4NSBmMzNkY2Y3ZTZlMWMzZWQ5NDVlYmI5YjliYjJjODNmODE3NzI2OGEyIGxlZ2FjeS10cnVuaworNjc4ODYgMDFiODA3NTM3OTE1NjUxYmMxNDNiZDEwMzIzNzE1NDAxYzA4YThlOCBweTNrCis2Nzg4NyBlODdhMjU2MTE4OGI1MzM1MjMxZmQ2ZWJhYmM3YjMyYTFiZmY5YjEwIHB5M2sKKzY3ODg4IDFhZGZhYmNiZTA3MzE3ZmFkNWRmZmRhZGVlYjU2MGIwYWQ2YmI4MTQgcmVsZWFzZTMwLW1haW50Cis2Nzg4OSAzYWIxMDJkOWNmNTYwNmE3NDk2ODMzNmMxOTNiMTExYjI2N2FiMGMzIGxlZ2FjeS10cnVuaworNjc4OTAgYWY1NmUzZjE0ZWI3NGIzMGQzOTczZDViZGNlMTIyMDdlYjE0ODdhMSBsZWdhY3ktdHJ1bmsKKzY3ODkxIDUyOTRiMjE0ZTFiZTk4ZTc5NzliYmRmOTgxMzUzNDYwYzZmNjliZGYgbGVnYWN5LXRydW5rCis2Nzg5MiA0ZmRhNGY1NDVmNzkwNjkwMTMzMjUxMzU2YWQ5MmQ4MmI4NTM0YmJjIGxlZ2FjeS10cnVuaworNjc4OTMgMTE2Njc2MTBlOWY1NmE3M2U4YjY4N2YwOTlkZWUxNjdhNjcxZjk5OCByZWxlYXNlMjYtbWFpbnQKKzY3ODk0IDUwMmY2MWQxZmJhZjRiNTFlYzAzZGVlYjc5ODVjNWY4ZjE1M2U5MjggcHkzay1pc3N1ZTE3MTcKKzY3ODk1IDFiZjcyN2UyYjA4ZmRlNGUwY2FiODY1MzgwMTY2MzQ4MTliMjBiZjMgbGVnYWN5LXRydW5rCis2Nzg5NiBlNDY3NTExM2QxMGVmYTczOWM1ZDhhYzMyZTMyYjRlZGJhNTNlMDNmIHJlbGVhc2UyNi1tYWludAorNjc4OTggZGU3YmJjNGQwYjFkMTcyNWYyMjkyMTIwZTQzNzk3ZTQ0ZTY5MzI2MCBsZWdhY3ktdHJ1bmsKKzY3OTAyIGQ3OWZkZDg0MjBmMzZlYzg1ZGJmNjQyZmFiNzBkOWFhMGQyMzljYTEgbGVnYWN5LXRydW5rCis2NzkwMyBjM2I5NzU5OWQ3YTE5NzRkMWYyODg1ZTk3ZDYxNDgxNWRhMDM3YjE4IHB5M2sKKzY3OTA0IDAzNzk5YmI0NDc3MjI4M2Q4MTBlNjIxZTM5ZWVlZWI5ZTM4YzA3YTIgbGVnYWN5LXRydW5rCis2NzkwNSBiZDNjNWRlNGNjNTQxYmYwOWRiNTEzOWE2N2U0Nzc1N2I1MGUyYzJiIGxlZ2FjeS10cnVuaworNjc5MDYgMjQxMDI3YjI0YjQ1ZDk0MzBhYzFlODE5MTQxMzE1NDQ0M2I5ZDlmNSBsZWdhY3ktdHJ1bmsKKzY3OTA3IDk0YzA1NDY2MzA2ZTIxZjMyMDYyM2IwMWQwYmYyOWYyM2FlOTVhZTcgbGVnYWN5LXRydW5rCis2NzkwOCA0YmRlY2FhNGVjYWIyYjZjNDU2MWRjNGU2NjU2MzY1OTc2ZDc0M2MxIGxlZ2FjeS10cnVuaworNjc5MDkgM2EyNTlhMWUxZDljNWUwOTE5ODdhMWVmOTQ2M2U5ZDZjZTUwNTgzZiByZWxlYXNlMjYtbWFpbnQKKzY3OTEwIGFjODhiMzQzMjA2NjBiMGQ5NWUwODgyNzcwN2E3MjgwMWU1OTE1ZmUgcHkzaworNjc5MTEgMzk2NTMxNGJiOTIyYzI3NjVjNTdiYzUxMDEwMDA5ZGU5N2EyYjYzZCByZWxlYXNlMzAtbWFpbnQKKzY3OTEyIDMxMzJlZDEyZWMxMDA2YzM3YmJjMjNlZGNmNTJiYmY3ODRjNWM1ZTMgbGVnYWN5LXRydW5rCis2NzkxMyAwNWUwMTA1MTVjNGJjNTcxMDIzMGRjNDY0Mjc1OTU0ODNhNmNiNTJlIHJlbGVhc2UyNS1tYWludAorNjc5MTQgMGY5YTdlZGI4ZTU4Yzg4MWUzZDU2NTAyMjQ1MDM5OTRlNjhkMjkxYyByZWxlYXNlMjUtbWFpbnQKKzY3OTE1IGFhNDVhMTc3M2Y2ZTBjZTRhNDc4N2RmNWUyZTVmODQ2ZmRiMTQ0ZWUgcmVsZWFzZTI1LW1haW50Cis2NzkxNiBhMGE2ZDk5MDkzMTJhZDljMWQ4NDRhZjY2ZTljOTE5MzFiOTM4NTJhIHJlbGVhc2UyNS1tYWludAorNjc5MTcgYzc0ZmQ3NTE4N2Q5MDQ4OTFlMjA0N2Y3N2I1NDMyOWVjZWNmMzUxYSByZWxlYXNlMjUtbWFpbnQKKzY3OTE4IDc5Mjk1NjQxZmNmMGJlNWQ3YzUyNmYyZmZmYzIzOGY2YWZkMWU0NWQgbGVnYWN5LXRydW5rCis2NzkyMCA4NzUxMjg4ZGRkOTYxYzYzODhhYmZiMTQ1MTllM2JiYjRjNGM3NzQ5IGxlZ2FjeS10cnVuaworNjc5MjEgMTAwOTdiZDY1NTY0ZjBkYmRjZDBmZDE2OGU2ZGVlZTJkNjk3MzNlMyBsZWdhY3ktdHJ1bmsKKzY3OTIzIDA2OWQ5NWRlZWE5MTU0ZTJhMzIwNTEwZTk0YmI3ZjcxNGM2NjI0NjggbGVnYWN5LXRydW5rCis2NzkyNCBlZmQ0MDAzZWU4ZWE1YWEzNDUwMjc2MGE3ZWEyOTYwNDcxMDI5NDk4IGxlZ2FjeS10cnVuaworNjc5MjUgNTAyNzkyNjM4MDFiNWNmZDI0ZGU4YjllYTg0Mjk0NzBlMzhhZWY1OCBweTNrCis2NzkyNiBmNmNkMWE3YTMxYmI4NjQ3NzViYTQ4M2U5NjRkZmQ0YzM3ZTA4NzQwIGxlZ2FjeS10cnVuaworNjc5MjcgMTEyYmEzZGY4NTFkMmZmNjM5MGVhMmU0YTgxYzE4MTU4OGVlYTRlMiBsZWdhY3ktdHJ1bmsKKzY3OTI5IDBjODUyYzExNmUyMzVkZjA1ZTFiZGNiZGFlMjUwNWI1ODQ4YmMyNGUgcHkzaworNjc5MzAgOTJiYzE0ZThiMzdlNmFjM2Q0NWUwOGE0YjBjOWE1NmJiNDdlZGFiZCBsZWdhY3ktdHJ1bmsKKzY3OTMxIGMzYjQzY2I2NzAzYzYyZjY2NzBjZmJlNTZlOGMxNjk3NDk0Y2YxZGQgcHkzaworNjc5MzIgZjg1OWQ4MjQzNjllYTlmYjA1ZWZlZGIyODc5MmMyMjMwOGE3OGYxYSBsZWdhY3ktdHJ1bmsKKzY3OTMzIGFkYjliNTQ3YzdmZTgzYTU4ZjU3NmFlNDU3MzIxODQ2MDhjODllN2YgcHkzaworNjc5MzQgZjZhZTdjYzllMmU4NWQ3NzZhMTQ0NzVlYjEwYThiNzVhNDRkOTA3MiBsZWdhY3ktdHJ1bmsKKzY3OTM1IDY5OWZkZDgyMTdmM2JhODJkMjkyYWRhMDIxZGIyMWRkZWQ2MjhkZDAgbGVnYWN5LXRydW5rCis2NzkzNiBkMjcwMjQ3NTU1OTNiOGY3OTIxMGMzYjliYzMxNjVlYTg2ZWY2Zjk1IHJlbGVhc2UyNi1tYWludAorNjc5MzcgMzAzYWQ0NWE5NjdmYzUxZWU3NjUxNDA5ZWQ0YTE2NzZiZGQ2ZTM3MiBweTNrCis2NzkzOCA2NjVjNGFjNDcwNzNlNzNmODlkZDgzMjAxZmQ5ZDY4YmJhYzNjM2M4IHB5M2sKKzY3OTM5IGRiNTBkYzAwNjFlZGViM2I1YzA2MmQwMWNlMTczOWM3NGE5ZTJjMmYgcHkzaworNjc5NDAgMmU1MzI2MmM1NWVhNjdlY2FlYTJkZTNhYmQyN2E2NzM4ZDdlNzVmOCBweTNrCis2Nzk0MSAxMTM3NTFhODk5MGM5NDg3MmQ5YjdkYTc1YjFmYTQ3OGYxNDk5Y2M0IHB5M2sKKzY3OTQyIDQwOGE5ZmY0ZjhiMmM4MWUzNmI2ZTM5MzM1MTJiZDhmZDdjOWVjNDggcHkzaworNjc5NDMgN2IxZDBjZWE5ODcwNjQ4MjUwN2RkMDMwN2E2YjgyZTE5NWVmM2JlZSBsZWdhY3ktdHJ1bmsKKzY3OTQ0IGZiMTUwZmNmMTY1ZDBmYTYzYTJmMzRlMTdmYzYxZjhhNGI2YjY1YTggcmVsZWFzZTI2LW1haW50Cis2Nzk0NSA0YmRmOWUzNDIyOTFhNjRlNWRmOWU3OGYzZDM5Mzk0MDVhYzYyNWNhIHB5M2sKKzY3OTQ2IDk0Zjk5NmJjNjRiM2JmODQ4NmYyYjU2NzEzYTI0OWY4N2JhYjBlZmMgbGVnYWN5LXRydW5rCis2Nzk0NyBmZWM3MmM5YjI3MWQ4OTY0NTI1NGNiNmIwNWU1MjkxMGRlOTQxYTc5IHB5M2sKKzY3OTQ4IGFkNzQ0N2ExNjViYmZhYjVjMDI2MmZhZmQxM2I3OTUwNjU5MjMwYTAgcHkzaworNjc5NDkgMWUxMjE0NDEwMzc1YWFkZWUxY2U2MzBkNGE5Yjk2Y2ZmNWUwOWNiMyBweTNrCis2Nzk1MCBkMjgxZWJmOGVhMzBmNDY5NTRjMTJhOGM4YmM2YTRlYTc3Nzk3NjcwIHB5M2sKKzY3OTUxIGU2NzM2MzJlMTg4NTY1M2MwZmU2YTRlMTFjZTU2MWVjZDM3ZThlOWQgcmVsZWFzZTI2LW1haW50Cis2Nzk1MiA0MWQ3ZDhmMDg1MmIyODQ3OWNkNWJlYTRkZGRkMTQ4ODk4ZTg3ZjJjIGxlZ2FjeS10cnVuaworNjc5NTMgZTJiYmJjMDZkOTJjODI2MWZmM2FjN2JhNWE5ZjU1MGFlNjYyNDdiYyBsZWdhY3ktdHJ1bmsKKzY3OTU0IDkzZGE5ZjE0ZTViNThiZGE1ZjIyOTMzMzMyNzQzNDBjNWRlNjVjYWIgbGVnYWN5LXRydW5rCis2Nzk1NSBhZmY2ZTlkZGRkOWY4MjlkNjVlNGViZjNiYWM5NjNkMTAyMWU3MWJhIGxlZ2FjeS10cnVuaworNjc5NTYgMzk5MWYzN2ViY2EzMWNjYzc3MTNkNjIwNmViOGVkMWMwOTg1ODRlMSBweTNrCis2Nzk1NyA3NWI0ZTMyMzQwYThhYjEwYjFiY2I2MDVmNTU0N2M0OTJmZGVjZTBlIGxlZ2FjeS10cnVuaworNjc5NTggMWI4ODkzMmRlZmRiMjhiNGQ3OTliMmU3OGI3YzlmMWU0ZDMxZWJmMSBsZWdhY3ktdHJ1bmsKKzY3OTU5IGJjZGZkYzM2OTU3MDg1MGEyM2E3ZmIxMTRmYTVjNDFjNzg2NDU1ZjMgcHkzaworNjc5NjAgYTI4ZjllNzUwYjY0ODMzZWZjOTNlYmY2OTlkZjYyZTE2MjhkMzVmYSBsZWdhY3ktdHJ1bmsKKzY3OTYxIGU5YTBkZTQ4Yjc0Nzg0ZDA1MDM3MTQ4MTE1ODY2MTBkOTA5Y2I5MzUgbGVnYWN5LXRydW5rCis2Nzk2MiAwMjQzMGU0NGQ1MGVjZGVlYmQxZmFlMDlkYWFlZDkwMTU5MTk4N2ZiIHB5M2sKKzY3OTYzIGZiZmExZDY3MjRkZThjMjFhMDIwMGQ2ZTBjZjM2YjgwOWVjZjM1YTYgbGVnYWN5LXRydW5rCis2Nzk2NCAxZWZhMTMwNGRmYjMyNTA5NWFmMjUxNDU0ZGFlM2IzYjYzZTczNGI2IHB5M2sKKzY3OTY1IGE5ZTVhYzRmMDkxY2Q1ZGMzZjY3YThhZTBhMDRkMmNkOTA1YjE4MDcgbGVnYWN5LXRydW5rCis2Nzk2NiBhNjQ5ODg0Yzc5YTgxNDY4YTZiYjNiY2M1NDI0MzBhMGFiYTI0MDZmIHB5M2sKKzY3OTY3IGNiMzUyNGI2NDA3ZjZlMzhjZWY1OTU3MjU4ZGFkNzBiOGU3OTJjNDIgbGVnYWN5LXRydW5rCis2Nzk2OCBlYTg3Y2MwNjhjNTZmNDhhMDk1OTU5Y2Y4NDVkZjViOWIxNGRjNTIxIHB5M2sKKzY3OTY5IDhiZmI0NjY0MTRhYzliNTc0Njc3NDAxZWM1ZjI4MTE0MTIzYTk4MDMgcHkzaworNjc5NzAgMDI3YTZmM2FjODc0NzdjNWVjOTQzNjY0MjE0MTk3NDFjZGYwNjNhZiBsZWdhY3ktdHJ1bmsKKzY3OTcxIDVlYzNlM2Q1NGFhNjVhZjI2MzgwNGZlNTIxNTU3ODI3NTQ5NTA4YTIgbGVnYWN5LXRydW5rCis2Nzk3MiBhNGE4OWQzZTQxYWY1OWM0YjU0Y2VhMTg3YTc4YjI5NmNjNzJlMDM5IHB5M2sKKzY3OTczIGRiMGRkY2UyOGQwZjgyNzM0ZmE2ZDY4OTQwZmRlYjdmZWQzNTlhYzMgbGVnYWN5LXRydW5rCis2Nzk3NCA3YTAxMTY4MGUxNTFiYTJlMjNlMjE3ZjFjMDMxMjg5NDdlMmExM2Q1IHB5M2sKKzY3OTc1IDQ0MjA3OGYwNzlhYTAyNTExYTdjMjRhODhjZTE2ZTljNWIzZGZiYTEgcmVsZWFzZTMwLW1haW50Cis2Nzk3NiA5ZGIzZDNkMzljYzNlNzU3NWE5MmJhYzE0MTVkZTk1ODgyMDI0ZDUwIGxlZ2FjeS10cnVuaworNjc5NzcgMWUwZDIwNWZlOGQ3MGU1ZjlmMWQ2MTMwZWM2MzBhYmFmYTc5NTI3MSByZWxlYXNlMjYtbWFpbnQKKzY3OTc4IDZhMDU2NmE1MTIxODRiZDU1NzlmYzQzY2UwZGZkMDE4NzBiYmQzOTEgbGVnYWN5LXRydW5rCis2Nzk3OSAzNDFiZjc2ZWI2ZWI3MmI1Mjg2NWQ0MzRhZmNjNmYyMDI1ZTJkMjZiIGxlZ2FjeS10cnVuaworNjc5ODAgMGVhNGJkNTlhNDBkNjZjNzEzNTE2OWI0ZTBiMDY2OGZmNzc3MWM1YyBsZWdhY3ktdHJ1bmsKKzY3OTgxIGU3NzIwNjEyYTc5Njk4NTkwOTJmMzM1YzVjNDc0N2Y0NTgzMzM2OGIgcHkzaworNjc5ODIgNjQxZDI3OTAzYmM1NzQ5YWUwZjdiMjcxZmI5NTdiZmY5NDlmNDllOCBsZWdhY3ktdHJ1bmsKKzY3OTgzIGJkZWQ1YmQ2MGU5NTRkYTY1MzVjYjJhMjY1NDRjOTViMTRlNjI1OTggcHkzaworNjc5ODUgN2M3NjI0YTMzZjhiMzIzMzQ0YjkxMDRhYWJhOTM5Mjc4YTQwNmUyOCBsZWdhY3ktdHJ1bmsKKzY3OTg2IDM3NTU0M2I5ODI0NDYwMjllZDNjNzRkOWRmOTlhM2YyNTY2MGYzMDUgcHkzay1pc3N1ZTE3MTcKKzY3OTg3IDczZGNiOGI0MjFmODBkMTk1YzZhMjc4MzMwMGFjZTljZDUxZWNlNDMgcmVsZWFzZTI2LW1haW50Cis2Nzk4OCAyZjE1ZDU5ZGZiODA0ODgwMThhYmU5YjNkZTMxMjM3Y2NkNzA4MDkyIGxlZ2FjeS10cnVuaworNjc5ODkgNDU3ZWM4ODRhZjA0NWMzNWU5ZDY5ZTkxYzQwNzZlZmM4OTczMDk4YiByZWxlYXNlMjYtbWFpbnQKKzY3OTkwIGUyZWJhYzA2MjQzMjIxM2NlNDJmODUxMmNiNzVjOWIzN2Y0MTJmZTUgbGVnYWN5LXRydW5rCis2Nzk5NSA2ZmI3ZDhmNDI3M2YyYjA3NTAyMTFhMjdkYjJhMGZjNTRiYmMwYzdmIGxlZ2FjeS10cnVuaworNjgwMDYgMmFkNjhkZDBhYzkwZjdhNDI5NzRiNmQyNDVlOTgxY2Q1YmJkNTFkYSBsZWdhY3ktdHJ1bmsKKzY4MDA3IDg3ZjU0MzJiOWVkYzhkOWE1MWU3MjAwZWU2YTdkZGYxYTM5MWNjNmQgcmVsZWFzZTI2LW1haW50Cis2ODAwOCBiOTVkZGU5NTk5NmE5YjNhMTQ3ZGJiZGNhYzI0YjQ1ZWVmY2IwYjU0IHB5M2sKKzY4MDA5IDg3Zjg2Y2NlNDNiMTUzNWJmYmFkYWExOTJiY2NlYjMyNTM4NmRmZjUgcmVsZWFzZTMwLW1haW50Cis2ODAxMCAzODM1N2UxZDIxZTZhYjk4MjllYTExNDFlNTgxYzhjZGEyYzE2MjJmIGxlZ2FjeS10cnVuaworNjgwMTEgYjllZmRkOGY4YjMwOTFlZmM4NzQyMzdkNGVjNTczMzY4YmM3ODQyZiByZWxlYXNlMjYtbWFpbnQKKzY4MDEyIDlmODM2MzA4ODUzNmE3Mjc4MTU2ZjA1OTc5ODI4MTAzNjcxMmYzMzggcHkzaworNjgwMTMgYTFhYmZlMDI3MDc0Yzk5NGU2ZTRjNjYyMTM4ZjZjNzhmMjg2MzIwMCByZWxlYXNlMzAtbWFpbnQKKzY4MDE0IDg5YTNmNWM5YjUwMzIyNGNlYTcxMDUwOGNjMmU5MTU0NTVmZDkxNTEgbGVnYWN5LXRydW5rCis2ODAxNSA3MWU3MzJjOTMyMzQ0NWEyMGQzMzMzNGNmMDYxYjRhYTdjYzg2YjExIHB5M2sKKzY4MDE2IDcwZGUyZTA5MWU1ODI2YzBkZjliMWI2YmJiZDJjODVlOTQ4NjJmY2UgbGVnYWN5LXRydW5rCis2ODAxNyAxOGQ4MTdhN2EzOWZhOWY4YWRlM2Q0MDI0OWUyMzExN2QzMGQ1NWYwIHB5M2sKKzY4MDE4IDM0YzczYTQ2M2IzNTVhOGIxMjE2MWNhYmVhMzQ3MmNjNGEwMjBjMDEgbGVnYWN5LXRydW5rCis2ODAxOSAyOTMyYjM3ZjFmMDQ0MjA1Y2VkYWNmM2Y0ZjdhOTk4YjcyMWJkZGE5IHJlbGVhc2UyNi1tYWludAorNjgwMjAgNDRlYTllYWM4YzViNTI1MjJjNGIwZGU4MDQ0YTdjZjdlNjAxMmEyYiBweTNrCis2ODAyMSA3ZjVhYTdlNTRhZDVhMTI0MjczYWZjYTg2MDc2NzI1OWNiYzJkNjQ5IHJlbGVhc2UzMC1tYWludAorNjgwMjIgZjdhM2YxNDE2MWUxNzU3N2NmZTUyMTY3ZGE5MTQ3MWEzMWY5ZmM1ZSBweTNrCis2ODAyMyBhZTFlMTE0MjM3Mjk1ZDlmZjFjMTUyN2I0MGYyNWM3NmUyYTBlY2Q0IHJlbGVhc2UzMC1tYWludAorNjgwMjcgMWFlYTgzZTBhZTlmMDJlYmM5Mzc1ZWZhMGQ3NjkwZGFiZDJiODQxYyBweTNrCis2ODAzMCBiYzFiMzc0Mzk1ZjQwMDAxYTkyZDhhYWQ0MTQ4NjEzYmI5NDA0MWZhIGxlZ2FjeS10cnVuaworNjgwMzEgM2Q0NDdiN2IxMzYzNGZmMzRjMGI5YzdkZTM0MWNhOWU4NWFlM2NkYiByZWxlYXNlMzAtbWFpbnQKKzY4MDMzIGYxNDYyZDkyNGE5YzIxZWU5ODA0ZGE2YjBhMjk3ODFjMDM2NDg1NDAgbGVnYWN5LXRydW5rCis2ODAzNSBhZDIwYjY5YjE4YjcwYjE4MjcxNTY2YThlYmI1MzQ1MTMzOWM4MzliIHJlbGVhc2UyNi1tYWludAorNjgwMzYgOWMwNmZiN2QxMjYwMmVjN2Q2Y2RlYjY4MDFhNjYwYmI0ZThkZTZmNyBweTNrCis2ODAzNyA4ZmE2MTFiYmIwNzdmZjcxMDkyNzU5YmQ1OGM2M2YxODE5OTgxNGFkIHJlbGVhc2UzMC1tYWludAorNjgwNTEgN2FhZWY0ZDVmODgwZTc4NjNmZDYwNjJlMmUzMWZlZGNkNGUxZTRmNCBsZWdhY3ktdHJ1bmsKKzY4MDUyIGU3ODJmOTcxMTZkYzFjZjEyODIxNDVlYWJkYmUyZWI1ZDQ1OTQ0ZjEgcmVsZWFzZTI2LW1haW50Cis2ODA1NyBmNzNmYzQ0MTc0NGYwNjU3ZDgwNzMzOGRiMTFlOWVlODYzYjQ2OGRhIGxlZ2FjeS10cnVuaworNjgwNTggNjE4ZDMzOTdmODg4Y2U1NDMyNTFmODI4Y2YyYjY0YmU0YTY0MWNlNSBweTNrCis2ODA1OSAyOGFlY2JmMWU4MzJiMDVmNjc5NGRhYzdlMWM1ZTlhNmM0M2ZhMmUxIHB5M2sKKzY4MDYwIDQzYWFjYmU2NDdjYjNmNDlhNTdlMDUyMWVmNjQ3YWJkMTc2MTBhMTcgcmVsZWFzZTMwLW1haW50Cis2ODA2MSA3Mjk5OTk5MjllZjRiNWJkNmFiMWQxNTMwNGNhMTRmMzU1NzNiZTI3IGxlZ2FjeS10cnVuaworNjgwNjIgMTE1NGQwMjQ1YjY2MTM4YjRkM2QzNzVkNTFmY2RhN2RmMjQ5ZTU3MyBweTNrCis2ODA2NCBhZmFiMzE5MjUyZTc5MjNkZjQxOGQwYjlmM2FjYTFhZGFjNDBjYWNhIHB5M2sKKzY4MDc0IGZhNmZjNTUyNmY3MWYxMjM0MTY0Njk2MDYzZGMzNDU4Y2Q1OTAyYWMgcHkzaworNjgwNzUgMmM4NDRjZmMzNzVhMzFjMjI4NmUzODIyOWU5YWIzYWQ2OGNiY2YyNSBweTNrCis2ODA3NiBjMzM4YmVlMjExNzM5NzA1NjcwNmUwZWI3OGM5ZGI0YzU2YTA0MTJmIHJlbGVhc2UzMC1tYWludAorNjgwODAgNzQzMTYzOGU3ZGQ4ZmFjYzQ1ZjliM2NkY2ZiNWNkNTY2YzY4YTEyNCByZWxlYXNlMzAtbWFpbnQKKzY4MDgxIDhhNDgzNDM5Y2I1NWZlYjNmZTkzY2YzZjA1NzI1OTNjNTJjOWIxMjUgbGVnYWN5LXRydW5rCis2ODA4MiBkODk3NWYyNGFmOGI1OGRmOWNlZGVmN2RmNDNmNmJiODljZGM3OWE1IHJlbGVhc2UyNi1tYWludAorNjgwODMgN2Q1NTBjYjUzNjllMDVhZTZjN2ExNzQ2N2I4YTBkOGUyOGM4ZTFlMiBweTNrCis2ODA4NCAzZTE4YjQ1OWQ0Yzg4NDFkZTc5MDM4OTc1MTE5MDQ3ZGU2YzA4NjVjIHJlbGVhc2UzMC1tYWludAorNjgwODkgYjc1ZDc2OTE1MWJhYThmMGExMTQ5ZGFhOGM0MzFjNzQ3NjNkMmVlMiBsZWdhY3ktdHJ1bmsKKzY4MDkwIDAyZmNkOWM1ZmVmYmY5ODBmYzAxNjhiYmVhNmM2ODE0YWIxNDU3YmUgcHkzaworNjgwOTEgZWY2NDljZTliNzgzOWEwNzQ3YzQxMDg3NzYzOWU1N2NhOTI2NzA1NSBweTNrCis2ODA5MiAwNmY0YzM3ZDY1Zjk2ODlhYTVjMjM4MGY5MGUyZmU2NTRjYzJiZWJkIGxlZ2FjeS10cnVuaworNjgwOTMgMTVhNjYyNjA4NWY0YTUxM2VlNDI0Yzc4ZTVjODJhZWEzYzUxMmNiMyBweTNrCis2ODA5NCA2ZDE2M2MyYWVmNTZiOGRhYWEyNGVkNDhkYWViNmY3YmE1ZjAzZDU5IHB5M2sKKzY4MDk1IDM4NTNjMTU1MzJjNGVkZTMzZGQ2OWE3NTdmMjFjNWYyMGM4Y2QzMDcgcmVsZWFzZTI2LW1haW50Cis2ODA5NiAwMjJkOTk5YzRkMWE5NGIxN2I0YWM4MWYwZWRmNzdiOTZlZTMwZjRiIHJlbGVhc2UzMC1tYWludAorNjgwOTcgOWMyYWM3ODY2NmQ0NTc4MzI1MGZmNjNiY2ZjMDAwY2JjNzg1NzM2OCBsZWdhY3ktdHJ1bmsKKzY4MDk4IGRjYmU5OWIwY2U4MzIyNzcxMzZjYTUyNTI0Njg5MDI4MDQzMThhZGQgcmVsZWFzZTI2LW1haW50Cis2ODA5OSAxYzVkOTQyMTI4YjY4ODA1N2ZmOTVmNTM0ZjhhZTc5OGJkNzMwNjUxIGxlZ2FjeS10cnVuaworNjgxMDAgYzQzMjI2ODc1YmQ0MTA3OWIyNTk4MGI2NGQ2YTNjZjNjZmEzYTFiNiByZWxlYXNlMjYtbWFpbnQKKzY4MTAxIDdlMWE5NWIyNmE1Y2E2Y2JkNDI5N2I2NWZhNDk5MDIzZDY0OWNiODQgcHkzaworNjgxMDIgNWNjMDczZDY2MWY3YjZkMzNiMmMzZWM1NDA2ZDY4OGEyNTFmZGZlYSByZWxlYXNlMzAtbWFpbnQKKzY4MTAzIDUwNzQ4MzBlOWI5OTQ2NDFmMTU1ZmE4OTViZWY5YWNjYWIxZDFjM2UgcHkzaworNjgxMDQgNzIzOWZiY2RjZDRmYmE2NWIxY2EzNGNhMzllNjk3MzExZDJlZTVjZSByZWxlYXNlMzAtbWFpbnQKKzY4MTEyIDEzZGFmOTlkYjAzNTc3MGE0Mjk4NzFjNDMzNjcwZjk0ZGZlYzI2NmQgbGVnYWN5LXRydW5rCis2ODExMyBiZjZmMmRmYzMxMGJhMTRkOTkzNTZhMTBhYzcxOTRiMjI4NTFjODFmIHB5M2sKKzY4MTE0IGQzMmE2NjlmOTZkYTk5M2UwOTNlNTg4ZDJkZTNiYTBlNTUwMGUxNjIgcmVsZWFzZTMwLW1haW50Cis2ODExNSA5MmFkOTY1NDQyNTI1ODA0YTdkYzY3NzdjNTAwNTZkMTExZTg3OTc0IGxlZ2FjeS10cnVuaworNjgxMTYgNTlmM2JmMmEzMjhkNDQ4NDJjNmMyOTkzZjA2ODk3MWU3NTFjNjNlOSBsZWdhY3ktdHJ1bmsKKzY4MTE3IDkyN2Y1ZDkwODdmNWExNWU1YTQ5NGFjOWRhZjM4NmNmYzY5NWZlOWUgbGVnYWN5LXRydW5rCis2ODExOCAzOTRlMzg5ZTg5ZjA5YTZlZjM4YTBiNGE1ODYyMzA2NGNiNDJhMTE1IGxlZ2FjeS10cnVuaworNjgxMTkgMjBlZGI3ZTUxNTlmNGRjMmY5MzUxZGFmZDBjMGJkOTBkNzMzMDE5MSBsZWdhY3ktdHJ1bmsKKzY4MTIwIGQxZTUzNmM2ZmEyY2IyMDVmNGFkZTNhNzA4MDFhMzFmZjJmMzU2MDEgbGVnYWN5LXRydW5rCis2ODEyMSA2ODNiM2Y4YjEyYjQ0YTIzNzg5ZjJjNGI3MTg0OWJiOTU0N2I4OGM1IGxlZ2FjeS10cnVuaworNjgxMjMgZjM1NDAzYTAxMWI5NGM1OGE5Y2I2NThjMDFhM2U2NzZkYTE4ZTc0MSBsZWdhY3ktdHJ1bmsKKzY4MTI0IDFjNGU2NzhhMWQzYjFlZGZiMTM3MmIxY2NhOWQxZWM5NWNjYTgxYTEgbGVnYWN5LXRydW5rCis2ODEyNSAxYjgyZjJiODJmZDkyMTFhZDUyNmYzZjhlOGZhOTM3NTQ0YjI4OWMyIGxlZ2FjeS10cnVuaworNjgxMjYgZTVkYmYzOGIxZGFjMWE3MWM4OWVkZmE0MTFkNGE0MWM5NDQ3MDJhZCBsZWdhY3ktdHJ1bmsKKzY4MTI3IDM2ZTk3OTNlYmI1ZDQ4M2M0ODBlMjMzYzk1OGQ5Nzg4OTlhM2Q5OTEgbGVnYWN5LXRydW5rCis2ODEyOCAwOTliNDhmZTkyMmEwZGYyNjdkMzk4NDQ4ZmM4Y2Y0YzZmY2RjNmZiIGxlZ2FjeS10cnVuaworNjgxMjkgY2FiODUwMWY4YWU2YjMzYjI5NWQyZmMwYjlkNGUwY2U5MTY1YzY5NyBweTNrCis2ODEzMCA4NDYzZmY4NjFhMjZkODRkNzI5OWNmZGEwNjAyMmMzZTUzNDkxYjgyIHJlbGVhc2UzMC1tYWludAorNjgxMzEgNDM2ZTYzMTdjN2I0YjkxMzQwMzNkMWMyNTA1MDkzZjcwOTgyNDBmYyByZWxlYXNlMjYtbWFpbnQKKzY4MTMyIDRmYmY1MmM5OWI2ZWQ0MzRkYjI0MGM3YTA5NTQ4MDU3YzIzOTg0MzUgcHkzaworNjgxMzMgYzdhNDVjYmEwNzg1ZDZjYTU2YjMzMjEyMzY5MGFmMzE2ZWEyNjYwYSBsZWdhY3ktdHJ1bmsKKzY4MTM0IDBlNWIyNGFkZTRhMjE3NmNlMGM1MTVjNGJlYzU4NjA0MzYyZmMzZGUgbGVnYWN5LXRydW5rCis2ODEzNSBkZjM5MjNjMzZlYzU5ZjdkMjM4ZjdhYzg4NGUwOGU5ZDJiYTA4ZmUwIHJlbGVhc2UyNi1tYWludAorNjgxMzYgMDZlMWY3ZDlkYTgzZGU1NDJhZDk0YTQ2NmJkZDg2ODczMjc3OGFjOCBweTNrCis2ODEzNyA5ZGQyZTI1N2FjN2MyMmU1ZjRiNDczMjc4MzhiMmUwMDk1OGYwMDhhIHB5M2sKKzY4MTM4IGJiMzEyMjNhYmZhYThjNWFkNjJkMjk1ODRiYThhZTlkMGY5MmQ3Y2UgcHkzaworNjgxMzkgOWY2MDRkMzNhNDJmNzBiZThlMDRhNDE2ZTQyZTA5Y2I0YTQ3MTE1YSBweTNrCis2ODE0MCAyYjEzZDIwMmE0N2Q3Mzg2YWNhNDQwMjQ0NDM4OGM3MDA2OWUyZTEzIHB5M2sKKzY4MTQxIGFkNGU1MmQxNTRmNGEyOTg4MzZkNzU3ZWY0MjAwZjcxNjdhZDJiODcgbGVnYWN5LXRydW5rCis2ODE0MiA1YzZmZWQ3M2I2YTkxODJhOTg1OGExYTg5N2NiZDdkNWExODE0ZTkwIGxlZ2FjeS10cnVuaworNjgxNDMgMmRlYmJlNjQ0NWUwZmQ5MWJjYTIyZmU0NjMwZTgzNzQxZjE5MDQ3MiBweTNrCis2ODE0NCA0ODAxOTY5ZGFkZWUzY2ZkN2YyZGU2NGFjZTMxYWRkZTFjNTVjOTg3IHJlbGVhc2UzMC1tYWludAorNjgxNDUgNjA5N2Y5N2IwZDIyMDczYmEwZTMyMDllNjgzYzhkNTA0YTQxYjcyMyBsZWdhY3ktdHJ1bmsKKzY4MTQ2IDQwZmE4Njg5ODFjY2Q4ZjdlNmYwYmUzOTg3ZTEzNTVjNmIyZDEwNTggbGVnYWN5LXRydW5rCis2ODE0NyBjYjM0NzljYTgxYWNjYWVhODQ4ZjRkZGY3M2ZiYjE5NWI1NmI2M2I2IHJlbGVhc2UyNi1tYWludAorNjgxNDggYmYxNzM0YzZiNmVkMjIzY2YxZDFjOTIxMmZkNWQzZTNhZTE0OTMyMiBsZWdhY3ktdHJ1bmsKKzY4MTQ5IDg0Y2IwMWM1NjQ4YjE3NGQwN2RiMzU2YjViZDAwNGQ4MzI5ODIwMTMgbGVnYWN5LXRydW5rCis2ODE1MCAyNTNlMWM3M2ZkZTY5Y2FlYjc4NDIwYTIxOTc4ZDQyNTUwYzRkYTJhIGxlZ2FjeS10cnVuaworNjgxNTEgNWM0ZjYzOWM5MjAwODk4NjJjMmYxZjBjNjU1MjBiOGFmNDcxNTUwYSByZWxlYXNlMjYtbWFpbnQKKzY4MTUyIDA4ZGJhN2Y5NzAzMDE5YTg5MDJlN2VjYTE4ZmQ1MTVlZDFmYmQ3MTIgcHkzaworNjgxNTMgMmYwMWY5OTVmNzA0MTJiNzAyM2Q1YjE5MTNkMGIyODg1OTM4ODM4OSBsZWdhY3ktdHJ1bmsKKzY4MTU0IDM0ZDUxYzMwYTRmNGJmMWM5MjM0ZGVlYWMyZmM0Zjc1MDNmMzgyNjIgcmVsZWFzZTI2LW1haW50Cis2ODE1NSA5NGNmYmY5M2Q3MWI0YzYxMjVhNjE4ZjY4YjEzZGVmMTI0YmZlZjk4IHB5M2sKKzY4MTU2IDFkY2IxOTIxNmI2NGQ2MjBhODBhYzRlYzBiM2I4MDVlMjcyOWQ0ZTEgbGVnYWN5LXRydW5rCis2ODE1NyBlN2FlZTdjOTlkM2I3N2MwYTdiMThlNGM3YTgxMWVkNzIyMGYwMDg1IHB5M2staXNzdWUxNzE3Cis2ODE1OCA3NTM5NTRkMTZlZDIxNjAxMmM0OWQzMDdiM2E5YzBmNzY2YTEyMzg4IGxlZ2FjeS10cnVuaworNjgxNTkgMjY5NmEzOWJjZjBiMDU3OThjMmQyNjVmNTcyMTdhNTVhZjRmZjllNyBsZWdhY3ktdHJ1bmsKKzY4MTYwIGM1MGIxMThlYWYzNDc3OTRiNGYyNGY5ZTk0MjA1ZDVkNjA1MjIzNDYgbGVnYWN5LXRydW5rCis2ODE2MSAzNTViYzEyMmMxNDU2NWNlMjBjZGM5ODk1ZGQwNDAzNjI2NjZkMGIxIGxlZ2FjeS10cnVuaworNjgxNjIgZGU3ZDE2N2I5ZmYxMGRhZjJiZWYzMGE3NzQ1NmY3ZjczYTk4ZTY0NyBsZWdhY3ktdHJ1bmsKKzY4MTYzIDY5YTI0MGU1ZjAxZGNmZjZmMzg0YjUzZGIyYzBjOTlhMjViOGVmYWYgbGVnYWN5LXRydW5rCis2ODE2NCBlMGM2NmJiYjQ4ZGE4M2VjNzUxNDc4MWJmYzJiMWZkZDZhN2MxYjFkIHJlbGVhc2UzMC1tYWludAorNjgxNjUgNDAwY2ZjYWE4ZDQ2ZWU4NWMxMWNiNjFiMDhhNWNlYjA2NmM5OGU0ZiBweTNrCis2ODE2NiBjYTg2YWJlMTU5MjYzOWE3NmUwYmE1ZTliNDczZDVlMmFjODA2MWM2IGxlZ2FjeS10cnVuaworNjgxNjcgZmYxMDY0NTMyNTRhMWRkOWZlOTA1YjU4NTQwYjM2YWYyMzJlMDJkNyBsZWdhY3ktdHJ1bmsKKzY4MTY4IGE1NDljOTI3MDc3NjczZWFkZTk1NGU3OTE4MmVkYjdhN2M5ZjJhNmMgcHkzaworNjgxNjkgYWJiY2U0OGI5YWU0MGE2OWFjYzZlNDI0MWJjOTRkMGEyMjQ0MzYzZiBweTNrCis2ODE3MCBiY2Y0NmYzM2JkOTA1MTZkNzNhYTdhNDliMDAxNGQ4MmU4ZDUwNzYzIHB5M2sKKzY4MTcxIDhlZGRkNjY1ZTliOWZiNmFmZWRkYzRiYjExYmU2YTgzYjJjZjg5MjAgbGVnYWN5LXRydW5rCis2ODE3MiA2MzZhMGFjOTYwN2I3YTNhNDBjYTBmY2JmMzA0NDFiYzEwZTYwMjgwIGxlZ2FjeS10cnVuaworNjgxNzMgMTI5N2JiNzFkYzY0YjE2YzIwODJlNmI3Y2FlMDBhM2E5ZGE5MTdiYSBsZWdhY3ktdHJ1bmsKKzY4MTc0IDY4YzlmOGI2NTg0ZDRiMWVlMWUyZmYwMWEwZjhhN2UxNGMyMGZmYTUgbGVnYWN5LXRydW5rCis2ODE3NSAyMDM4NGViZmM3MTZmMmUwYTlmNGE5MGI2YzdmZWZkMzNkY2U0NGZjIHB5M2sKKzY4MTc2IDA1ODhhOTg3OTNjZDA4NzVmMGU0NWQxZjhlMzBhZjg2YmVhM2FlNjQgbGVnYWN5LXRydW5rCis2ODE3NyBlYjM1OGRhZTBjY2FkOGE1YTU3ZWM3ZGUzNmM4YmYxM2U5NGQ4ZGNmIHJlbGVhc2UyNi1tYWludAorNjgxNzggMGM5NzI4MzcyZDA5OGFmNGNlNGY4OTkxOGIxMzkyMjk2NjkzYzNiNSBweTNrCis2ODE3OSAwMDUyZDIzZDM5ZjYxNWM3NjNlNzM1YzRlNjJhODI4MzQ1NjdkZmI1IGxlZ2FjeS10cnVuaworNjgxODAgMGUzOGM3MGI5Nzc2ZWE3YWMxZGJhZGM1Njk1NTgzMTRmNzdiNTY1ZSByZWxlYXNlMzAtbWFpbnQKKzY4MTgxIDkzMDEzMzk3OWQ3YTI5MWFkMDFjNTIzZTQ4ZmU0MTNlZTAwMDY1ZDQgcHkzaworNjgxODIgYWQ5MjEwNGQ1MDYwN2U3YTczM2M5NWNmZTU2NGVkZTIyYzAxOTRjZiBsZWdhY3ktdHJ1bmsKKzY4MTgzIDk0ZmYzZGUxZTFhNDViZWJmZmI1YzU3OGRkNzBlZDU4MTQ0OTJlMDggcmVsZWFzZTI2LW1haW50Cis2ODE4NCA1ZTE2NDk4OGJkNTFhZWFlZWQzODAxN2E3NTA2OTEyYTQ1M2ZjMzFhIHB5M2sKKzY4MTg1IGQzNjdiZTU0M2Y2Y2U4YWY0MDc2NGIxOWRlNzU2YmM4N2E2MWNkMDQgcmVsZWFzZTMwLW1haW50Cis2ODE4NiA0NDBhZGQ1MTZjZjFlMWI3MTNmZTgwNjk4YmZlZGUyODdkY2NjMTUxIHJlbGVhc2UyNi1tYWludAorNjgxODcgMzZkMDI3MDM3ODEyMzMzMjc4OGZiYjIyM2Q2ZDU4YWMzYWU5MDQ2NSByZWxlYXNlMjYtbWFpbnQKKzY4MTg4IGM0NWZlZDAzZjc0NzVjMmQyYmFjNWNlNDY2YTFlYjMxOGZkY2Q0MjMgcmVsZWFzZTI2LW1haW50Cis2ODE4OSBmYzk0YzljNDJjNmM4MDAwNjM1YTU1ZmM0NmFhNzIwZDhhNDVhMWZiIHJlbGVhc2UzMC1tYWludAorNjgxOTAgZmE1NWZhNDU1NmYwOTkxNGNkYTQxZWM0NjczN2IwZGVkMWIxM2YyOSByZWxlYXNlMjYtbWFpbnQKKzY4MTkxIGMyNzJmY2FjMjRhNGEyNWI1Y2E3NTRkOGZmNzQyNzIwMTViMDc1YjYgbGVnYWN5LXRydW5rCis2ODE5MiBmMmE1ZDc4MjhiODNlNzIwMGI2NDY4MjJhNDYzNjhlOTZhNTkwZjc1IHJlbGVhc2UyNi1tYWludAorNjgxOTMgNzM4ODY2MDkyNmFhMTQ5ZWJhYjFiYWUyYzdjOWNiZjRjNTcwY2U2OCBweTNrCis2ODE5NCAxMzRkMTczYjkzNTBiMmZlNDUzZDE4M2JhZjJmNzVmNGY2NzQwYjY4IHJlbGVhc2UzMC1tYWludAorNjgxOTUgNDI3ZDhiNzY1YTZhMDBiMDA2NzY3NzgwOTA3OTU3YTRjMjJkNTFkYiBsZWdhY3ktdHJ1bmsKKzY4MTk2IGE3ODhkNGYxMGI5NzgzY2U5M2JhZmIyZjVlYTM5YmE0NjJhZmU4MTYgbGVnYWN5LXRydW5rCis2ODE5NyBiOTkxZmU1ZjYzN2E4NWZlYWI4YWEwMDdlNDE5ZTA4ZDUwOTllYzAzIGxlZ2FjeS10cnVuaworNjgxOTggOGU3NzI4Njc2ZjdlODVhYWViYjFkODQ4MjNhMDQ1YmRiODgyNGEwMiBweTNrCis2ODE5OSBhOTJmNzFkNDZkYzRjMWMzMjkwNmMzYjEwNDkyOWU0ZjkxYjYwMmZkIHJlbGVhc2UyNi1tYWludAorNjgyMDAgMjlmNjQwNzdjNDJmODhkMWIwZDU0NWRhOTQ5NTk3ODlhYzE5NzhhNCBweTNrCis2ODIwMSA3OTM0NzIzZjdkYzRmYmRhMTUyNTUzOGJmOTY4Njg5YjhlODZhMTZlIHJlbGVhc2UzMC1tYWludAorNjgyMDIgMjYwNDVlZDBjMjZlMmNjZTFkNmY1YjFjNWZkYjI5MjcwOGY2OTFjZSByZWxlYXNlMzAtbWFpbnQKKzY4MjAzIGVjZjFiYjdiYWViMWVjNzZmODk4ODA1NTA1NjQ4ZmMwMzM4ODQ1YTEgbGVnYWN5LXRydW5rCis2ODIwNCA0ZDFhNjhiZDgwNzZjMGM2ZTM0NjVmNjI3ZTMyOWYxZjk2OWVlOGQxIHB5M2sKKzY4MjA1IDI1M2Y5ZTZlOWUwNzk5NzU0NGE5NTQxNTBhMDJkYWQ0Y2NlMDc0ODMgcHkzaworNjgyMDYgMTBjYzUzZTcxYjIxMjNkNTQ3OWQ4ZjBjZDM2ZmM3NjRjZTBiZWU1YiBweTNrCis2ODIwNyA5YTQyNWViMGY3ZWE1NGFiNGU0ODBjZGQzYzIzN2Y5M2IwNjE0ZjVmIHJlbGVhc2UzMC1tYWludAorNjgyMDggN2E2ZTNiYzYwYmE2ZGUxMjdiY2VlOTQ0YjEzMTYzZjgzOTQwNjYzOCBsZWdhY3ktdHJ1bmsKKzY4MjA5IGU3OGRjZDg3ZDczM2Y2ZjdiMjRhYjFhNjU5ZTY1MDk0NGViY2VmZGYgbGVnYWN5LXRydW5rCis2ODIxMCBhYTQ2Nzg3YjkzY2M2NTFhOGRmMjM3MjdhYjEwYzRlMWM3YTM0YzRmIGxlZ2FjeS10cnVuaworNjgyMTEgMTA0MDA1ZDA3ZWE1MTkwZTNkMjIwNmUyNjc2ZTBkNzUyYWEyZTc1MSBweTNrCis2ODIxMiA4NDVmYTdkMzY2NDIwOTBjMjQxOTBkNDQyZWI4N2U5MmExZWQzMDg1IHB5M2sKKzY4MjEzIGRlMjc3MTA3MGQ4NTJiMmM4M2MzNmZkOGU3OWQ2ZGY1M2YwYTg2NjUgcmVsZWFzZTMwLW1haW50Cis2ODIxNCA2ZTRkNmQzOTA1YTc5ZGYxYWU3M2Y3MmRiZDUyMTM1YjEwZmZiZDlmIGxlZ2FjeS10cnVuaworNjgyMTUgNjA4NTRiZGJjZjFlNWFmNzkwYzg4YTMxYjM2Yzk1MzU5ZjEzZjU1NSBsZWdhY3ktdHJ1bmsKKzY4MjE2IGIwNjZmYmI2YThiYzI5ZmFiZDFlZjhiNzY2OWY3NzVjZGY5NTk4Y2IgcHkzaworNjgyMTcgYzc1NzIwYzNlMTZlZTAyODNlYjFkNTgyYTQzMWQyMjMwYWNjNjJhMCBsZWdhY3ktdHJ1bmsKKzY4MjE4IDZlZmMxZGUzNDVmNWM5MTc3ZTQwNWRhYzdmNjc1YjFlYjc5ZTFkMjMgbGVnYWN5LXRydW5rCis2ODIxOSBmYjA5ODJjMzIxN2U0NTgwNDc3MmFjNmJkZjMzZmFmMDVmODNmYjNkIGxlZ2FjeS10cnVuaworNjgyMjAgYzUyMTc3ZjM2ODUyNzY0MGU3ZjIyOTliY2NkNTk4NDEwZGYyNjE5YyBsZWdhY3ktdHJ1bmsKKzY4MjIxIDdmYjQzMWZhNDk0NjAxODViOTQ3YjVkODVmZmMwMDc0NzY3MDcwYzIgbGVnYWN5LXRydW5rCis2ODIyMiA5ODkzMTRkN2NjNWVmYjJkZmNlZmI1NmMyY2VjMjRiYjk0Y2FiNTM5IGxlZ2FjeS10cnVuaworNjgyMjMgYzkxODRmNTA3MzRmYmI5NzRiZTM4MmYxMmM5MmFkYjgxNDU4MWNlMSBweTNrCis2ODIyNCA1YWIzMDYzY2FmNGMwODg3ODg0NDc2Zjg3YWRjZTJmNDIzMzExOTI2IHB5M2sKKzY4MjI1IDVmMjQ3NWZlNTIzOTk1MzNjZTBkZTRiYzIzOWYzZWVlNmMyMjM0NDYgcHkzaworNjgyMjYgYzNkM2I3NjBkOGJmYjBlZjUzMWEzNjRhY2Q2NzE3ZGQyODhiM2UxYiBweTNrCis2ODIyNyAwZTA1YjZjYTZhZmQzYmE3YzU5MWZhNDQ0ODBmODQ0NTY3MTdmZGNkIHB5M2sKKzY4MjI4IGU0NzliODZkYTExZGU2NGFlZDhlYzg5NGQxZmQ4OTAzNjMyZWYzMzggcHkzaworNjgyMjkgODNlZmMyNDY3ZmFmMzQ3Yjc2NmIzOTNjMWYxNDg5MjYzMmViZTk4YSBweTNrCis2ODIzMCAwNzJkZWRlZTc3ZmE2ZGQ0ODQ1Njk2N2FmNTcwZjY5YWE5OGM5YjI5IHJlbGVhc2UzMC1tYWludAorNjgyMzEgY2RkNWZhMDVjMTRkMDA5NTM2NzBlZmQ4YjYyNGU0MGJkZTg5OTlhZiBsZWdhY3ktdHJ1bmsKKzY4MjMyIDI0YTA5MzdkNzYyNDM0YmIzY2VkYjA4NDFiZjE5MWIwZDNiODk1NzcgbGVnYWN5LXRydW5rCis2ODIzMyBhZWU1NWNhMDRjOGZhMzAxZjgyZTVjZmE1ZjI0MTQyOTdlYTk1YWNmIHB5M2sKKzY4MjM0IGVlOWNlZDkyODQzYTdhNTk5MjI3ZGQ4ZTZiMDEzYTMwYWMzYTExNjkgcmVsZWFzZTI2LW1haW50Cis2ODIzNSA3MTNhM2EzOGY5NzVjYTFjNDM5ZDcyYTk1YjUxODY1ZWRiMDI3MGI1IHJlbGVhc2UyNi1tYWludAorNjgyMzYgZjg4NWM3NmYxZTk1NTEyMjZkODJlZDkyMzU0OTc2OWI3NzJkYzJkNSByZWxlYXNlMjYtbWFpbnQKKzY4MjM3IGRkYjczYTRkZmMyMDRkNTM5YjQwZGQ4YjZiOWRjZDE5MWY1OWM4ZmYgcHkzaworNjgyMzggNmRmM2QwOGI4OWU0NTBkYWQxNGE5YTIwODk5N2JlZWZiZmZmY2I2MSBsZWdhY3ktdHJ1bmsKKzY4MjM5IDIxZDdlOWU4NzU5MWM3Mjk1MzVmYjcxNWQyMDY5NmZhZGYxZDE3OGYgcmVsZWFzZTMwLW1haW50Cis2ODI0MCBiNTYzOWQyNDVhZDUzNTQ3OWQ3MTVhMjMzYmIwM2Q2MGE5ZTA0NGVmIGxlZ2FjeS10cnVuaworNjgyNDEgNzNkZWQ5NGZiOGJlYWIzOTg4MTg3ZGQ4MWEzMTM2YzY3Y2M5Yzc1NCBweTNrCis2ODI0MiA5MWNmOWVkNDZiNzIzMmUzNTVlMGNkOTk1YjhlMzk0NzA1Y2Y4Nzg5IHB5M2sKKzY4MjQzIGQzYzdlOWQ5YWRhN2MwNzIzYjNiMDBjODI2NTM1NjY3ZTQzMmQxZDcgbGVnYWN5LXRydW5rCis2ODI0NCA2YzhlZDY2NzQzMjg5MmYyNzNjNzhlODY1NWUzZjY3YWIxYWY4MTNkIHJlbGVhc2UzMC1tYWludAorNjgyNDUgYWYyMGRkMTljYzBkOTk4MDdmM2JhZjBlYjM0NWY5YWViOTUyYWEwZSBweTNrCis2ODI0NiA5MWE5MjMzOTczNDc4MzhlOWYyYTAwZDFiOTBjZTcxNThhOGEwZjZmIHB5M2sKKzY4MjQ3IGQwOTE0MzAwZTEyZWJjNWE4ZWUwZjRkZDRhNzVjZGJjNWE2YWYyZjkgcHkzaworNjgyNDggOGFhMTk1MzBmOWYyMjhmOWU4M2RiMjU2MzM5MmRiY2NhMjhkODI3NCBweTNrCis2ODI0OSA0NTBlY2JiNTZjN2I1MGViOTJhOGNlNmY5YzYyNTFlNzI3YjY4MzA0IHB5M2sKKzY4MjUwIDI4MzIxZGJkZmRjMGMwNmJkMzhlM2ExYjM4YTBkNjQ0NjAyMzQwZjkgcmVsZWFzZTMwLW1haW50Cis2ODI1MSA5NjE4ODAzMWIxYjU5NzZiYjdlYTBlNjg5ZTY0YzAzZjk0YmY3MmYxIHJlbGVhc2UzMC1tYWludAorNjgyNTIgNDIyOWE0YjE0ZjFkODkzYzM0YjdhMWQxOTY3NDI0NGM2MjhjMzkwOCByZWxlYXNlMzAtbWFpbnQKKzY4MjUzIDc4MjU3OGM5MmUxZDNhYmMxMjEwY2Y2ZTdkZjAzZTA5NWY2NmEzOTIgcmVsZWFzZTMwLW1haW50Cis2ODI1NCA1ZWJmODI2ODlkMzZiNGU1ZTkzNDg5ZThhNjY1NzE4M2Y2OWJjOTdjIHJlbGVhc2UzMC1tYWludAorNjgyNTUgZmQ0ZGE4NTVkNjAzZjVmN2Y1ODU0MzNlMWQ1NDMxYTI5MmU4NTJmMCByZWxlYXNlMzAtbWFpbnQKKzY4MjU2IGM5ZTVjMWZhMjg1ZTgzYWQ1Yzk1ZGU2YjBjYmI2NTgyODczNGY0MDYgcmVsZWFzZTMwLW1haW50Cis2ODI1NyBlODBjODA2Y2UwMmI0NjQ0MGZiMzJjYzAxMzI5NDgzOWIxODVlMDMzIHJlbGVhc2UzMC1tYWludAorNjgyNTggNDQzODdmMWEyOGEyMGI0NjY5ZTA1ZjIwZmYzNzg4ZWRkNzRiNzVjYyByZWxlYXNlMzAtbWFpbnQKKzY4MjU5IDkxZjJmYmEwMmE1MDIyMjg5ZjdkZTk2YjJhNjJlMWQyMjg0ODBmZDEgcmVsZWFzZTMwLW1haW50Cis2ODI2MCA4MWM0OWJhN2JjY2Y3Nzc5NjYyMmQxOTM1OTc0MjJjZWUyMmM0ZTU0IHJlbGVhc2UzMC1tYWludAorNjgyNjEgZmFkZjc4ZjVmOGFkMzZlZGU2MzVlNmJhNTRmYzQ4OWU5MTM1ZTI4OSByZWxlYXNlMzAtbWFpbnQKKzY4MjYyIGRiNDY0NDI2YTM2NTM3MjE3OWZiZDc4YmQwY2M5ZWNkN2I4ZDI2ZTMgcmVsZWFzZTMwLW1haW50Cis2ODI2MyAyNGIxOGU4N2Q2NjQ4OTE5MDg1MjQxNWExNzczMDNhMjUxNDU2MThkIHJlbGVhc2UzMC1tYWludAorNjgyNjQgMTU0ODM2MWJmZDJmM2JiNmY4NWVlZjVjNzY0MzdmZDFkOGNmMDUzZSByZWxlYXNlMzAtbWFpbnQKKzY4MjY1IGJhZGI0NzFkYmFlYmUwMWE4NWNjNDAwZDdjM2Q0MDQ5MjRlMWRmMzAgcmVsZWFzZTMwLW1haW50Cis2ODI2NiAyNzlhNTEwMDY4ODUwMGVkYjcyZGViOTdlMjcyODg2MTcxNzMxNTljIHJlbGVhc2UzMC1tYWludAorNjgyNjcgMDQ3ZGYwYTVmMTc0MzYwNGM2NjVmMjRhMjUxOTM2MGE1YWZjYmE5NyByZWxlYXNlMzAtbWFpbnQKKzY4MjY4IDVhNWIwYjJkMDFiOTNlYzlmYmE1NTFlMGYwNzViYzE1MjE5NjY2NDYgcmVsZWFzZTMwLW1haW50Cis2ODI2OSBiZDBlMzYxYmQ2NDIxNTFiN2IyMTIyYTVjY2MzMzgzOTVkOTc2YTMyIHJlbGVhc2UzMC1tYWludAorNjgyNzAgZmJmN2Y1M2Y0ODg4ZDI5MmY4YjFlZTQxMTEyY2I3Y2VjNzFhYTg1MSByZWxlYXNlMzAtbWFpbnQKKzY4MjcxIDZmMzBiOTcxNDhiNjU5YzA2ZGUzNDFhNDYwNGU4ZDE3NzI0MTNlM2UgcmVsZWFzZTMwLW1haW50Cis2ODI3MiA4NTFjMmYwNGY5NWQ1YWViYTQ5MGY3MGRjYTM5YzBjN2FmZmFiYWZhIHJlbGVhc2UzMC1tYWludAorNjgyNzMgYjk2ZDYxNjg4Yjg3Y2YwM2U0MDRmMDNlYTU0MTJlYjVlOGQ3ZGFmNSByZWxlYXNlMzAtbWFpbnQKKzY4Mjc0IGE2ZWUyZmY0ZGU0ZDg3M2ZmMjVmODE1NzFhMjZjMmRmNzA4YmYwZWYgcmVsZWFzZTMwLW1haW50Cis2ODI3NSA5M2NmM2E2ZWFkNjM5OGNlYWNkNDU1M2Q5NzUyNjk3NGVlMmFlMWQ1IHJlbGVhc2UzMC1tYWludAorNjgyNzYgMDViZjcwMDJlYzk0MjY1MTIwNzNhNTgzNDFhYzhlNzE2ZWIyNWVmOSBsZWdhY3ktdHJ1bmsKKzY4Mjc3IGFmYWMwY2FiYzNhZDIwNzIzNTA2YjFiYzE2MTZmOWI1ODFkOTNmYjMgcmVsZWFzZTMwLW1haW50Cis2ODI3OCBlYTdlMzA3ZGRkNTFhZjM1NGYxODUzY2JiMmE0MThjNzEwZGQzM2QyIHJlbGVhc2UzMC1tYWludAorNjgyNzkgN2FjMWY2YmU4YWQ1NTUyYjM1Nzc2MzVlNjhhNTc4OWQxYTVlMzZkNyByZWxlYXNlMjYtbWFpbnQKKzY4MjgwIGZiOTA1ODkwZDA0OWFhMzNhNDVlZWRjYzQ2NjkzMzQ1ODNkZjI3ZWQgcmVsZWFzZTMwLW1haW50Cis2ODI4MSA4YjJjMWEwYTlhMmI4MTM4ZTQwNWUxNmRlNTlhNWJhZjg4NzdmOTc1IHJlbGVhc2UzMC1tYWludAorNjgyODIgMjJiMTFjMjJjZWY4NDU5Nzk5ZGQyYjY2YTExZjA1M2YzYzc0N2RkZCByZWxlYXNlMzAtbWFpbnQKKzY4MjgzIDNiMDg2NzRiOWI0ODNmNzdjMjcwNjkyNGU2ZmY3ZjllMjk5ZGU0ZjggcmVsZWFzZTMwLW1haW50Cis2ODI4NCAxZWE1MDEzZDlkYWUwZjEyMTU0MzkyYzUzN2VkODFjNzAzM2E3MTQxIHJlbGVhc2UzMC1tYWludAorNjgyODUgOWVjOTlmZGY4MDRmMTgzNDc4MTViZGNkODA2YjAyNGNmNmRmNDY5NyBweTNrCis2ODI4NiA5NDAzZGVmYjY5ZmIxOWJmOWJkYjQyNTFmNTVmMTFlM2FmZjRmZmNkIHJlbGVhc2UzMC1tYWludAorNjgyODcgMWNhOGM2ODU5YTA3ODU0ODM1ZDlhYjdjY2U0NmNiMTU3NDVhNTQxYSByZWxlYXNlMzAtbWFpbnQKKzY4Mjg4IGJhZWRiMDY5ZTQyNTZiYWIzNDk2M2I5ZDdkNDc0NjQyZWQwYjRhZWMgbGVnYWN5LXRydW5rCis2ODI4OSA1MzY3OTg1OThhZjA4OGQzYTQwOTAzMDQ5ZmU5ZjI1ZTFlZGM4ZDlkIGxlZ2FjeS10cnVuaworNjgyOTAgZDQxYTg2ODc1MzMyYTc2YTQwYTNjZTBiNTBmZDdiNjIwY2Q4Yzc1NyBsZWdhY3ktdHJ1bmsKKzY4MjkxIDU0YTVhZmZiNmFmMDE4NTg2ODQ1ZWI3NjNlNWVmMzU0ZWEzY2M1OGIgbGVnYWN5LXRydW5rCis2ODI5MiBmNGVlMDAwNmVlMzkyZjRlZTY1MGNjZTM4ZDNiMjc1NzU3M2Y3NGYwIGxlZ2FjeS10cnVuaworNjgyOTMgZGEzNGYwMjY2NGVkYzlkNTIxODIwYzdmODVkNzc2MDlhYzBlOTJhNSBsZWdhY3ktdHJ1bmsKKzY4Mjk0IDA1N2NiNDZkZGFhZDdhOWU3MjM5Njg5NDk1OTM1Yjc0ZDc2ODkwZjQgcmVsZWFzZTI2LW1haW50Cis2ODI5NiBmODU0MzczYTY2ZTU1YmZkM2EyMjVhMzQ5MDdlYTc3NDI5NzYyZTliIGxlZ2FjeS10cnVuaworNjgyOTkgM2E1NDBlZDc5NWQzYjA2OGY4NDYyZjA1NzBhOTBjYTkyNWM0ZTEwOSBsZWdhY3ktdHJ1bmsKKzY4MzAwIGZhYzkzNTBiNDM3ZGM5ZGQxYzhmZTc1OWUxM2MzZjQ2ZWVlZTFhODYgcHkzaworNjgzMDEgMTE0NmI3YjBkNTE4YjNjNzllNTYzMWNjNmYxNWYyY2JlMmY2ZWFhMCBweTNrCis2ODMwMiA1ODRiMjYzYjk4ZGE2NGE0Yjc3YmI5NjNkNTY4NjlmNTRkNDgzYTQzIGxlZ2FjeS10cnVuaworNjgzMDMgOWQ1MDYzYjQxMWU4Nzk1NmI0M2Y3M2U2MzAxMzhkMGU5ZTUwY2NmYyBweTNrCis2ODMwNCBlMThmMzIyYjkzMWU3OTA2NDIxNTFiYjQ0ZTRhYzMwOTY4YzFmOTNjIGxlZ2FjeS10cnVuaworNjgzMDUgNmU0ZGRlMmU5NWY3ZDNjNDBkMTk3ZjllMGVmZjE0MWVjOGI0ZWZlMyBweTNrCis2ODMwOSAxM2YxODU3ZGQ5YmY1ZGE4ZTRlZmVmYmE4YTFmYzRmODM1MjhkYTU0IHB5M2sKKzY4MzEwIGMyNWU1YjYyMGE0Y2YyNDgxNzczZjhlMjc2NWExMDcxYTU4ZjRmOWIgcmVsZWFzZTMwLW1haW50Cis2ODMxMSA5MmNkMzU1MWZhMTMxYjc5OWM3YTFmNGY4NTYyMzdjNDU3Y2IzYjBkIGxlZ2FjeS10cnVuaworNjgzMTIgYmM5ZjgwZGRiYmUyNWY1MmY4YTc4Y2QwZmE3MDc1Yjc3OWU0NWUxMyBsZWdhY3ktdHJ1bmsKKzY4MzE0IDJjYWZlOTg5MTE3YTMzZGU3OTJkOTM2MjA2YzE4NzE0ZTg2MjZiNWQgbGVnYWN5LXRydW5rCis2ODMxNSA0NzQ3NDViN2ExMmE2Y2E5ZWU2NTJlNzlhMDIwYzNmY2VlMjhmMzg4IHB5M2sKKzY4MzE2IDQwYmEyYTEyNTNmYTRiZDRlMTQ2YjA1MGRmYTRmZDAwMzFjMGRlOTMgcHkzaworNjgzMTcgMDlhNDk4ZWIxODIwNTVkZWM2YjRmODZmNDNlYmJhNWRiNWIzNWI5NyBsZWdhY3ktdHJ1bmsKKzY4MzE4IGZkMGJiNjhhZDVjOGJjMWNmODUyMzg4ZjMzYzM4ODQ5MTdiYzNkOTggbGVnYWN5LXRydW5rCis2ODMxOSA5ZGUyMWU2MTU1NzdlOGZjNGIwZmI4YjA2NDJjOGFmNTMzOTE0OGQzIGxlZ2FjeS10cnVuaworNjgzMjAgMmJlNDkwYWJmMzMzM2MyMDEzOTUzZTQzNGU0NTY3MWE1N2U1NDdiZiByZWxlYXNlMjYtbWFpbnQKKzY4MzIxIDU0MzZlNTM0ZGE2ZTRhMzc4ZjljOGE3M2FkZmQyMzlkNjIxMjBkNzMgcHkzaworNjgzMjIgZGRhZWM0N2U2ZGQ5OWE2ZTFiNWZlMzQyYTA0ZWY1ZjEwYzhlOTljZSByZWxlYXNlMzAtbWFpbnQKKzY4MzIzIDZhNmYxMzhkNDE2MmNmMDBiZDQ3MmU1MjIwNTkzOGZkNzc2YmFiZjUgcHkzaworNjgzMjUgMTVjNGM5ZTMzMGU5MjBmYjZiMjUwMTMwMDRhODA5M2QzN2NjOWVlOSBsZWdhY3ktdHJ1bmsKKzY4MzI2IDg2ODVlNTg1NWE0Nzk3Mzk4ODY2MDM1NzA5MDIxNWM3OTk3ZGY3ODcgbGVnYWN5LXRydW5rCis2ODMyNyBlMTcxY2Q1M2FjNGI2ZWQ3NTc4Nzc3ZDQ2ZTFiOTliZGUwZTNjNzExIHB5M2sKKzY4MzM4IDc1OGQ4ZmI3YmQ5OTA4OTc1Mjg5NDM1OTFmOTUzY2MyYzZmYTNmMTAgbGVnYWN5LXRydW5rCis2ODMzOSA5MTc0ODk1OTcyY2IwOTFjMTMwOGRlNTQ1YWJkZjg2YzAxNjUyMmY0IHJlbGVhc2UyNi1tYWludAorNjgzNDEgNmQ5YjAzMzFkMDczYTNlZWY1NmViNTE1YjE5NmMwODQ2MjAwMGRlOSBweTNrCis2ODM0MiAyNTVlNjRhMTM3NTUxZGI1YWI2ODYwNmVhZmI1YTMyYjRhNWQ2ZTVkIHB5M2sKKzY4MzQzIDY0ZjkxZmYyNGZlNmMyNDgwMWM5MWRmMTM1ZjlmYjY5Y2NkMGMxNDAgcmVsZWFzZTI2LW1haW50Cis2ODM0NCA3MjdlZTE2NjUyMTlkZGM3ZGYyNmZlM2RhOTkxYTA0YTEyYzhmZmZkIGxlZ2FjeS10cnVuaworNjgzNDUgZTRhY2YwNzliNTA4ZGMwMTI1MWY0ZGM0NDlkOWI4ZmMyNjZhZWNhYiByZWxlYXNlMzAtbWFpbnQKKzY4MzU5IDQ1YWVmNTNmNWM3MWFjNGIzY2I4OTBkNDFjMWI5NzQ3MGNhODkyODAgcHkzaworNjgzNjAgZmMwMDAwNjgyYmZlN2MwZWQ0ZGZjMzAzN2U4MDBiMjBjMWU1YjAyYSBsZWdhY3ktdHJ1bmsKKzY4MzYxIGJlOWIxNWJmNjgyODMxY2FmYzM5NWFiMzgyNmJiNmQ0MTA5MWM2ZjcgbGVnYWN5LXRydW5rCis2ODM2MiA2MTcxOTk3NjliZDM4NGI1MTg0YmM0NmEyODY0ZTcxOGY5OGEyM2Y2IHJlbGVhc2UyNi1tYWludAorNjgzNjMgMmZmOTkxMGYxNTI2Yzg5MzQ3MjA0ZGJkOTcyMzliYWUwZTYxY2QyZCBweTNrCis2ODM2NCBlOTg3ZTBkZjhmNDhmNDEwMDU5MmE2NjdhNDIzMjJlZWI2ZmU2NDU1IHJlbGVhc2UzMC1tYWludAorNjgzNzMgODkzM2RlYmI5MzA4ZWI3MDQ4ZDc1NzVjZjRjMzQwNjAyYmNlOGQ2ZCBsZWdhY3ktdHJ1bmsKKzY4Mzc0IGE0YWY1ZTZmNmIxN2MzOTI0NmE3OWU2ZDRmZTQwZWUxM2U3OGZlNjkgcmVsZWFzZTI2LW1haW50Cis2ODM3NSA4MWQyMzY4NGY2OTRkZTExMTQzYWNmMmFmYjkxMjI3ODEzOWZlZTU0IHB5M2sKKzY4Mzc2IDAyNzZiOGZkZGRhN2Q1ZDU5NGZiMjBjNjdhYzgzY2RhNWE0OTBiODYgcmVsZWFzZTMwLW1haW50Cis2ODM3OCA4YTVhOTU5MTEwMGRlNzE3NGZhYTc4ZjM0MzcxNmU1Nzg1Y2Y0MjVjIGxlZ2FjeS10cnVuaworNjgzNzkgZmVkMmFlMWU1MGMyZmQ1NWY5NzMzMTQ5ZjVmOTE5YmFhNjgxNTk0MiBweTNrCis2ODM4MSBmMGUwYzM1MzZlMjI3MjUyYTA0M2U5MTlkOTMzZDJmNTY3MDIzMTFhIGxlZ2FjeS10cnVuaworNjgzODggNDRmMTRmZDRkOWMyNzMxMzkyZmI4ZDJlNTJjYWNlMmI1NmU4MGQ0OCBsZWdhY3ktdHJ1bmsKKzY4MzkzIDVhYzhmMGI1YTU5YmZjYzU3ZGU5ZDNlYTk0NmFjOTdlM2FmMGNhZTAgbGVnYWN5LXRydW5rCis2ODM5NCAwYjhkMmNmM2Y1NWI0MmIzYjg4NjY0OThlZDQ5YjM5NDhjZDJmYWRmIHJlbGVhc2UyNi1tYWludAorNjgzOTUgNzZmYTFkZTI3NDJhOThhMTI3ZjEyNjM4ZmE3M2YxOTI2YWM5YmE4NiBsZWdhY3ktdHJ1bmsKKzY4NDAxIGEyMjljYTNhMTJhZTJjNDZkYThkYWQxNzk0ZWI3ZTVjODMxYmVmOTMgcHkzaworNjg0MDIgZTZhMjk3OTBkNzVhZTBiYTdjZWZlMzdkZTM2Nzg0YWYzYTVkZGRjMiByZWxlYXNlMzAtbWFpbnQKKzY4NDA5IGFkYzQzMGMxNmI1N2I2YTc2YjdkY2NjOTc3NTE5ZGQ1Zjk2YTVhYWQgcHkzaworNjg0MTAgZmZmZDEwYzEyYTFiNzcyMzlmYjZiZTJlNzZlMmZkNzFkMWRjMmUxMyByZWxlYXNlMzAtbWFpbnQKKzY4NDExIGY5ZjVkOTA0N2EwNTQxZmExNmZmYjVlYzM2NDA1ZjBhZGE1NzhhYzcgcHkzaworNjg0MTUgYTNmMzI5ZjIzYjIzNmUzMzE1MzE4NjRkNTkxYWQzMjZiZmM3OTg2NCBsZWdhY3ktdHJ1bmsKKzY4NDE2IGVhNDMxOTQzYThkZTUyNjE3YmM1YTU1YTU3NjJlZDdhMDlmODNkNDUgcmVsZWFzZTI2LW1haW50Cis2ODQxNyA1ODlmNjg0NGQ4ZTBlYzNhYWVmMTlkMmM5YjYyNjlkMjJiMTI2NDQzIHB5M2sKKzY4NDE4IDM2OGRmMDA2MDc0MGM3MjYwMTcyMzI4Y2IzMjI2MDA4Y2MyNmY5OWQgcmVsZWFzZTMwLW1haW50Cis2ODQyMyBlZDNmZGJmMTA3NzU1NmYyZDAyZWRmZmM1ZmE1NTE1ZjE0Y2FkODA3IGxlZ2FjeS10cnVuaworNjg0MjQgZWRlYjkwMzhjNDA1YjExNDcwNGMzNWE0ODExNDk5M2QxNmZmMzQxYiBsZWdhY3ktdHJ1bmsKKzY4NDI1IGQ5N2FhOTQzYmViYjU1ZDM1OGNiMmFjMDYyOWFlOWM5MjgzMmYyZTMgbGVnYWN5LXRydW5rCis2ODQyNiBkOGI2NGM2NzZiY2IxZGU1ZjYyNTRmZDNjMWEzNjUzOGJjNzAyZWRiIGxlZ2FjeS10cnVuaworNjg0MjcgNWYyOTJkZWJkMjRjMzU0ZDI1Yjg2M2U4Nzk3YTExNzEwMTQ1OTVkYiBweTNrCis2ODQyOCBlNDk2ZmRiOTI3ZmE2MmQwNDgzYTMzOTVkZTFlZTU3OGY3YzA3NWI1IHJlbGVhc2UyNi1tYWludAorNjg0MjkgNWM2MjQ0ZDIxN2ZmMTFiOTczZGM4ZDViNGQwYmIwOGU3ZDljZWQ0OCBsZWdhY3ktdHJ1bmsKKzY4NDMwIDY5YTJhNGRiZDliNGY0ZGE0ZjQwNmQ1YWFkYzQ2NjZkYmMyMmFmZGUgbGVnYWN5LXRydW5rCis2ODQzMSA3MmZlNTFkNmY4MDBiY2U3N2NjNmM0NGM4OTFmMzcwMTBiYjNjMWJhIHJlbGVhc2UzMC1tYWludAorNjg0MzIgZWYzYTFlY2Q0NjYzZmU2NTRlMjkyZWEwMzFlMWY3NmY4YTU4OGVhYyBsZWdhY3ktdHJ1bmsKKzY4NDMzIGUzYzIxMjc5OTcwNmU2NmZhYzczYzc5YmEwZjRhM2VkMzAxNjBjZjkgcHkzaworNjg0MzQgNDgwZmNkZDgyMDE2MjA5ZGQ3Mjk5YWY1MzBlNGMzZGZlYjRmYWFjMyBweTNrCis2ODQzNSAzNjY4NmQ0ZDdlNzI3NWJjMjQ2MWYxMDE5ZjU2MjEyMDYyYWIzZDMyIGxlZ2FjeS10cnVuaworNjg0MzYgM2I5MzM1ODU1NDcxOTZhZWMwNDAxMDY2MTBhOGQ1ODE2NmMxMzAyZiBweTNrCis2ODQzNyAwYTY2ZTFkYzMwZjIyMzU2OTgzN2E3ZDFlZTlhMjhhNzQyZmQ1MjY4IHJlbGVhc2UyNi1tYWludAorNjg0MzggYzdjMzQ0YjYzZWNjZWJmNjMyNzNmYzhlMmFhN2I1YTgxZDkxZWVkOSBweTNrCis2ODQzOSA3Yjg2ZDZjYWMyYjE4NWUxYzU2MDFlNzdkYWUxZTA4MTZiMDc0MTRhIGxlZ2FjeS10cnVuaworNjg0NDAgZjEyN2JjYjBhYTcxMjI1ZmZiNGM1YWJkNzZhODNmZjhjZGYyNDVmNyBweTNrCis2ODQ0MSA5ZjA0MWJhM2U0YzkxZmMzM2YzY2EzOTJmN2YxMjcyYTA4OGRjNTYyIHJlbGVhc2UyNi1tYWludAorNjg0NDIgOWQwOTNlZjg5YzU2MDc1YmVmMGRjMGJkNTJmMGM2Yjg4N2U4ZDM1YiByZWxlYXNlMzAtbWFpbnQKKzY4NDQzIGNlMzczMzEzOWZhYzgwM2VmYTg0YTQ0ZGJlYjMzYjIzM2I2MTRhOWMgcHkzaworNjg0NDQgYzk0ZjAyNzlmZWRlOTc3YjI0Nzk1NjNkY2Q3MDk2Njc3MTU0NTFhNCByZWxlYXNlMzAtbWFpbnQKKzY4NDQ1IGNjZDk1YjFhYWRlOWQ0Yzk4ZGFjOTA1YzczM2E1OGYyZTRlYmFjMDkgcHkzaworNjg0NTAgYjczYmQ1YTc0YTI3ODgzN2JjMmEwMjI5N2NmODQyM2VmMTM0M2EzOSBsZWdhY3ktdHJ1bmsKKzY4NDUxIGJjMzBlMzk1YWExNGFkZWYwMDIzZDEwMjAzZTE1MzZkMzIwY2VjZGUgcHkzaworNjg0NTIgYjk4ZmU4ZGM4YWNkNmExMDQ1MGJkOWQzYWY4NjQxZDNlYWNmMDQyMSByZWxlYXNlMzAtbWFpbnQKKzY4NDUzIDM4ODZlNGM4OGZhNTk2ZDkwZTI0ODBiM2UxMjg1ZTMyYTAwNWJlZTAgcHkzaworNjg0NTQgOGM0OWZmMGNlMTdhZjM2ZWU4ZDBiODk0YTAyMjJkMjg0ODI0M2YxMSBweTNrCis2ODQ1NSBmZGNjYTg3OTNlYjlmN2UyNTExODEwZmIyZTEwMGNlZTYwNDE3OTg1IGxlZ2FjeS10cnVuaworNjg0NTYgOWIyNzZjZTM1Njk3YjI1NmE5Y2JlM2FmOWY5MTUwYThhNGVjNTFhNiByZWxlYXNlMzAtbWFpbnQKKzY4NDU3IGNhMDk4ZmMxOGVjNjA5ODAzNGJlMmU0ZjE0ZTRmMjc4NzhkOWJlNmEgbGVnYWN5LXRydW5rCis2ODQ1OCAwN2JiYzJlMjBhYTRiNTAyZmExZDc2NjQ1YTJlZTNmZTJkODkzMmE1IGxlZ2FjeS10cnVuaworNjg0NTkgZjFjYTVkZDU5YWNhODI2NGViOGJjNmI5NWUyMDk5NzE4MWMzOWI2MCBsZWdhY3ktdHJ1bmsKKzY4NDYwIGM4Zjc5M2UxNTliYmJiZTk3NWU3ZDBkYTQ2ZDliODg4YTAwNDliZTQgbGVnYWN5LXRydW5rCis2ODQ2MSBlNmY1NWM5ZWMzZDAxNGFmZTk0YzA4Yjc3NzgxNjNkNmRmMjRlZDdlIGxlZ2FjeS10cnVuaworNjg0NjIgNzkyNzYzMTZiOTRiMzhmM2RlZWFhOGIwMzcwMTNiOTNjYjYwYTVlYiBsZWdhY3ktdHJ1bmsKKzY4NDYzIDYyY2EyY2NjZGI2ZmMyMGVhMzMzYWY1ODc0ZGJmZmM4Yzg1MDY5MGUgcHkzaworNjg0NjQgOWMyYmQ2NDdiNjQ2NGViNjY1ZGRjMDIyOGU1NzAxMTFhNjU1N2I1OCByZWxlYXNlMzAtbWFpbnQKKzY4NDY1IDVkMGVhYzAxYTI4NWQ5OGVhMzgyZGE5NzAyNWI2NjVhYWYzYzMwM2QgcHkzaworNjg0NjYgYmM2NzBhOGRmNDRiYjJhMzhhMjQxYTQyM2U5ZjJiMTcyMzZkZDk2YiByZWxlYXNlMzAtbWFpbnQKKzY4NDY3IDkxZTM4NTFjOGNjN2NhMjI0M2E5NDU4NTFkYzVlNTZhYjM2NmEwYTEgcHkzaworNjg0NjggZTAwYjMyNDc0OWIwNGUyOTYzNWNiYjFjYWY2ZjAyNDkxMjJmMGM0NCBsZWdhY3ktdHJ1bmsKKzY4NDY5IDhhZjUxY2ZkZDVlOTBjMTA1MTEzMWM1MGExMmRkNTU3YzdkZjJhNDUgbGVnYWN5LXRydW5rCis2ODQ3MCAxZTA3MGI4M2NmYTk0YjcwYTUzZTRjMmIwMWI5NzkwNjc5MWQ5ZTU5IGxlZ2FjeS10cnVuaworNjg0NzEgOTM3ZjUwMGUwZjA2ZDA4MDdmZTRlMDVlMWQwYjdlM2YyYTdjZGFiZSByZWxlYXNlMjYtbWFpbnQKKzY4NDcyIGQ0NDgzZmVjZDY4NzNjMGVjYzQwNzRkNDMwZGYzNmVkOGY0YWZmYWIgcmVsZWFzZTI2LW1haW50Cis2ODQ3MyBjMzRkNzIxYzJkYzcyNDYyOWIyYWI1MWJmMTA1NTIzM2Q2NTAyNDU2IHJlbGVhc2UyNi1tYWludAorNjg0NzQgNjM4ZTMwOWVjYzk4YWU4MWEwYWRiN2Q1NzY1MGJkMDM5MGU4NWM2ZSBweTNrCis2ODQ3NSBhMGZmOTAwN2MyYWEzZTc4OGJjOTM0MDJkNTU0ODhlZWUwNmJmYzU5IHB5M2sKKzY4NDc2IDUzMDJmODA2NTM3YTdiYmMxZjZkZmJiZDE1MWMxNmYzMDA3NzQzZTEgbGVnYWN5LXRydW5rCis2ODQ3NyBkMzI2YTY3M2NiNjYwNWRmNGVhZmMxZDFmNDg4ZWMzNGFmZWFkMGExIHB5M2sKKzY4NDc4IDVjNmNiYjdhNjJiMDc2YmViNTFmZDUyNTgzMmYxNWE5N2I5YmI5ZGEgcmVsZWFzZTMwLW1haW50Cis2ODQ3OSBmYTkyMjk4NWFmNzMyMTdlYjhhZDgxZmRkOTA2NGEyYWYzN2UxM2NmIHB5M2sKKzY4NDgwIGRiZTM5ZWJkMzAyNTRmZWYzNTEyMmQzOGY5MGI0YzZhYWU1MmU4ZGUgbGVnYWN5LXRydW5rCis2ODQ4MSBjZGMyZmUxYmU4YTVlMjBkODkzZDZlZTA2NmZlMjM1ZmIyYjEzMTg2IGxlZ2FjeS10cnVuaworNjg0ODIgMmQ0NzFmZDg4YWZmYjI5NDg5MjhkZGRhYTIxZDE3YTBhNTE3NDM3OSBweTNrCis2ODQ4MyA4ZTYyM2I3OGFjYmY2YzBkNjYxZTQ2MzBhNWZiODcwMjUwY2IxMjhjIHB5M2sKKzY4NDg0IDVkNWQ5MDc0ZjRjYWQ0NTcwMmY0YTZmYmQ1MGJhZWM0NWJjZTYyODggbGVnYWN5LXRydW5rCis2ODQ4NSA5OWM0NDE2NDBmNzBjNzEwNGY3ODQ0MGY3OWVmMmY5NDQyNGZkOGQ1IGxlZ2FjeS10cnVuaworNjg0ODYgMTVhMDU2ZTBmODlmZWYyNjRhYjIwOWFhMWIwZTdlNWJiMGMyZDUwMSBweTNrCis2ODQ4NyA3NDQ0ZjU2NGUyN2QxZTlmNjU5YjNmOGE0NGYwNTdjN2Y0NjYxN2MyIGxlZ2FjeS10cnVuaworNjg0ODggOGRjYWIyNDM5N2E4ZDJmMDA3MDdlMGY0Y2VlNzcyZWZlYjg2MmVkMiBweTNrCis2ODQ4OSAyOTNhYzQ0ZDdmZjBkZjY2ZTRhNDAxZDExNjM3MGIyMDkwMGMyMGE4IHB5M2sKKzY4NDkwIDNiNWJlMGVlMzJlYWM5Nzk5MWI2N2FjNTY4NzliNDViYWZlYjQ5OGYgcmVsZWFzZTI2LW1haW50Cis2ODQ5MSBlOTVjM2FlYjRjODU4MzhkYTJhYTIwOWY2ZGM3MDI1MTg0M2E1YzFmIHB5M2sKKzY4NDkyIGVmNGJkNzcwOGFkN2IzZGMyODljNzMzZTIzYTVmYTYzZTY2NzE0ODAgcmVsZWFzZTMwLW1haW50Cis2ODQ5MyA0MGNhOGIyMTIyMDgxZGU1M2Y1MjM1YjZmNTEyMTQ1Y2ZiMzZlZDBiIGxlZ2FjeS10cnVuaworNjg0OTUgMTI4ZTIwZGE4OWViNDFmY2Y0YjZlNjEyYzkwODkyNGJlZWMwZWJlNSBsZWdhY3ktdHJ1bmsKKzY4NDk2IDU4NjFmNmUxMDg2MDc1M2QwZTc5OWEyNDU3NzdmODEzOGUwZjIyMDAgbGVnYWN5LXRydW5rCis2ODQ5NyA5NTU3NmQ4YWY3OTg5ZTM0MzViZjk1MDMwN2Q4MmNiODlmMjk0MzAzIHB5M2sKKzY4NDk4IDAyNDQ4Y2NmNDFlMDFhNTkwMzg2MGQwNGJhNWU3Nzg4OTc1MzExNDYgbGVnYWN5LXRydW5rCis2ODQ5OSA4ZTAzZGFhYWZjNzQxZGI4OTg4NmI4MTk0MTA0NzRhODQ2ZDM3YmEyIGxlZ2FjeS10cnVuaworNjg1MDAgZDg3Y2JmYzZjNWM2NzcxNDMxNWRjOTcwZDNmNzhlZDkzZjA3MDQzZiBweTNrCis2ODUwMSBiYmY0NjQyMTA5ODQwNDViYTE1MTlhMjJhZTZlMDc1OGNiOTY1ZGYwIGxlZ2FjeS10cnVuaworNjg1MDIgZWFmN2NlYjhhYjQ1NGEzZjAzYmY1MTM2N2U4ZGE0ZTQzY2QwOTgyZSBweTNrCis2ODUwOCA5ZTE4MWVlZGM5NWNhMmJiOWE1MDQ0YTE1NzY4NjAwNzcyMjBlMjEzIHB5M2sKKzY4NTA5IDA0OTY5NjNmY2ZlOWZiNjRjOTQ1OGMyMWQzNTYzNTkzMjIzNjFkMTEgcmVsZWFzZTMwLW1haW50Cis2ODUxMSA0ZDM1MGYyYjFmMmU4MzgwY2M1ZTg1ZGQ3YWI2NzI1ZjRhM2FkMDM4IHB5M2sKKzY4NTEyIDE5ZGZmZGVjNTU0N2FiOTQyZDRjY2RjYzA5ZDE1YjZhZWQ2ZDY4NGQgbGVnYWN5LXRydW5rCis2ODUxMyAwZjFlNGFiOTU2NTUxNzFmZjYxMGFmYjNjODZkMmVmNWVjZmMzNDE4IHJlbGVhc2UzMC1tYWludAorNjg1MTQgNDRlMGM2OWE1MzA0ODFkN2M3ODJjNmEwZjI1NzgxM2Q1Mjg0ZDAwZiBsZWdhY3ktdHJ1bmsKKzY4NTE1IDQzZWRjNjU4MWU0NGRmYzQ4MmNhYjQxOGUzYWRkY2U0YWU5Zjk4YzEgbGVnYWN5LXRydW5rCis2ODUxNiA5M2IyYTkxM2Q4YWNmZDA3M2JlNmE1ZjhkNjk0MDE3N2QyNmMyMmJkIHB5M2sKKzY4NTIxIGFiMDg2YWZkY2YwY2Y3ZTBmNDQ1ZjZmMjQ4OGRiOGQzZjg2NDRmYmIgbGVnYWN5LXRydW5rCis2ODUyMiAyZDg5NzcyY2MyNTY4OGE2ZmZjZDQyMjU4YTE2YmIwNmIyMTE0OTY1IHJlbGVhc2UyNi1tYWludAorNjg1MjMgMjkzNWNlZGU1OTRlMzc3ZmVjMWJmYWRmNjg3MTQyODA1N2Y4NjkxOCBsZWdhY3ktdHJ1bmsKKzY4NTI0IDc1NjYxYmY4Y2IyYzY3M2MzNjcxMzk3MGM4ODJiOWYwMWQ4ZDE3NjIgcmVsZWFzZTI2LW1haW50Cis2ODUyNSA5NWE0ZjUzMDhiZTI0Y2RlYWExOGI5NjgzNGQ3M2E2ZjQyNzc5ZWI4IHB5M2sKKzY4NTI2IGRjNDJhZGY4ODdiNTc1ZjA0MjJlM2UwZTVjMWZmZmVhMjFlZjc0YTQgcmVsZWFzZTMwLW1haW50Cis2ODUyNyBkODQxZmY2N2NjNjFiOGEyNTU4ZmE3NWEzZTBjZTA0Mjg0MWIzNjgzIGxlZ2FjeS10cnVuaworNjg1MjggNzA0NDNhZTc2YjEwNWM4MTljMDU3NGE4NWQ5ZmU4Mzk1NTUxMDFlYiBweTNrCis2ODUyOSA5MmJkMDE0MTU5MDY5N2I1OTMyMWMzN2I2YjQxMDU3ZjI4NDA1NjY0IHB5M2sKKzY4NTMwIDJmZmRmOGRkM2U4YjUwNjRhMjk1ZTQyNTlmMjU5NDhkMjI0ZjAxZGUgcmVsZWFzZTMwLW1haW50Cis2ODUzMiBkMDlkNmZlMzFiNjE5OTg3Zjc5ZmE5NDI0M2M5MDMzNGVmMmQxZTVlIGxlZ2FjeS10cnVuaworNjg1MzMgMjdkYjgyYTVjZGE5MTlkY2NhMjFmNGNmYzZkNDc5NmE5YTVlNjI4NyBweTNrCis2ODUzNCBiN2ZiZTM3ZWI4OTA0ZGY5Y2JmOTk4NWE1ZGNkYjNlMmIyODI0ZWJlIGxlZ2FjeS10cnVuaworNjg1MzUgNDkxZWM0MTFlNWM4ZmYzNmZkMTgxNDBiMmUzZmEwZGY0NjMwODEyZiBsZWdhY3ktdHJ1bmsKKzY4NTM2IDc1NDNmMTI4MjA3MzY5NGE0NjQ0ZDE1NzRiYmY5MDU0OWMzODEwMDcgbGVnYWN5LXRydW5rCis2ODUzNyAwZjFiM2YzMTFhZTAxMDJkMmY5NDg2YmI1MmQ5ZGUzMjg1OWZlYjg2IHB5M2sKKzY4NTM4IDZlZWE4MGJkY2JmNWU4ZjYxNjg4MDRmMmIwZDJmMGFiMmIwYjE3MDcgcHkzaworNjg1MzkgNWY0YzJkZTk1MDkxYjUyYzA2Y2NlZmQ5MjVkZDEzOGJjM2NiYTMzNSBweTNrCis2ODU0MCBhZDk2OTEzNTBjOTMxZGY2MTQ3OTVlMDEyMDVlODQ5YjJmNzg0OTJlIGxlZ2FjeS10cnVuaworNjg1NDEgZTgxNTRiZDMyMmNiNTY2MTJjMjQxZjgyYzY0N2U1MTk5ZWI3YmRkYyBweTNrCis2ODU0MiA4NTQwMjY4MDQwZmYwNDNmMDA4MmY0NzJhNmIyZWUwZmUzYzBiMzI0IGxlZ2FjeS10cnVuaworNjg1NDMgMmIyNzA3ZmY4YmI3YTlmMjVjNWNjMGZmODQwNWM2ZTlkNTUzOGZjOCBweTNrCis2ODU0NCBlNDBjZThmZmU2MzJkMTZjNmY2M2I3NGJhNjI1MjhjMjc3NWFlZTM0IGxlZ2FjeS10cnVuaworNjg1NDUgMzhlMThhODg0ZjNmZWU2NWQxMjA5Y2M3YjBmZTk4NjU3ZDllMjlmNiBsZWdhY3ktdHJ1bmsKKzY4NTQ2IDg3YWRjY2U0OGRlZmU2NGY1NGY4ZWI0MGUxYTRjZTAxODY3ZjU2YjkgbGVnYWN5LXRydW5rCis2ODU0NyBiYmNkNDYzNGFlNzMzYjJkODQxZDE3YWE4ZWY0NzQyMmQ3MDEyNzE1IGxlZ2FjeS10cnVuaworNjg1NTIgYmM5MmJiMjA4MTlmYzljYjU1NmNhYmI3NTdmN2ViYWYwODhjODAwMyBsZWdhY3ktdHJ1bmsKKzY4NTUzIGY1NWI4NTUzMjM5MjdiZDVlNTAyOWVmOTZkYTIwZjc2YWU2MDYwOWUgcHkzaworNjg1NTYgODcxYTFmZjQ2ZmE2OWMzZGQ2ZWE1NDgzMzIxNTI4M2VhNDQ2N2Q4YiByZWxlYXNlMzAtbWFpbnQKKzY4NTU5IDU5MzQ2MTJkNTA3MDViMDQ5YThiOWIzNzk3MDFhNjM3NThmNWVhZmEgbGVnYWN5LXRydW5rCis2ODU2MCBlOTc0OGRiNDc2MzU3Y2M2MTQyZmI5YzFkMDI2MzFiZTI4M2Q5YWZkIGxlZ2FjeS10cnVuaworNjg1NjEgYzk5Y2UwMTY0Njk5YzNkNGY2YjU4ZGQwYWEyYTdhNTUxYzE4MmRkOSBweTNrCis2ODU2MiBmNDU5OTdkOWFjNTU1NjE4YWRkMWMwYzY2Y2E5ZTc5MTkxYTdjMzQ5IGxlZ2FjeS10cnVuaworNjg1NjMgMTJhNzg3YjQ0ZGI1NDQ5ZjAwZjAxMzU1MWM2MzM3NmY4YjdjMzMzZSBsZWdhY3ktdHJ1bmsKKzY4NTY0IDJjMDNjNzU4MGFhMzhiZDM2ZjMyNmMwNDgwODBhZDZiNDczZjhjNjkgcHkzaworNjg1NjUgYmExNTIxZjI0NzQ5MDQzNDYyNTVjNTM4MmNlNmZjYmUyMTExNTQ0OCBsZWdhY3ktdHJ1bmsKKzY4NTY2IGUzMDExNDFlOTFiMTA0NjdlZDFlMDdkYzRiMzQzMDYyMTRkMWU2MjcgbGVnYWN5LXRydW5rCis2ODU2NyBlNWY5OTZjZGEzMjE2ZTRiMDExZGI1ZTAyM2QyZWMxYTdiYjE4MzMyIGxlZ2FjeS10cnVuaworNjg1NjggYTE5ZDU5NmQzNTAwY2ZhNjA1NTM0YzQxYWIxYWNjNTYzNGU5MzQ4NSBsZWdhY3ktdHJ1bmsKKzY4NTY5IDJhODJiZDI5ZWMxODg4NThkOWU4ZjZhYTk1ZWQyYmFjYTRkNTI0ZGIgbGVnYWN5LXRydW5rCis2ODU3MCA0NTRiNjk2YzFkNzMwZTJjNjZlMjU3ZGNjN2Q0ZmIyMGMxMWVlNDFlIGxlZ2FjeS10cnVuaworNjg1NzEgYzc3NmI2ZDgxNGMyM2U4YmFiYzdhMmVmMjYxMjEyZTkxYmRlYzE0YiBsZWdhY3ktdHJ1bmsKKzY4NTcyIDU5YjEyMTJhNGRiZjNmZTAxMzIyZjJlYzg2OWFjZjA3YWZkMmY2MDMgbGVnYWN5LXRydW5rCis2ODU3NSBiZThlOTU4ZGVlOTRjZWQ0YWU2YzU0NzAwNjk0ZTQ5ZjQ3NjdlOGQ2IGxlZ2FjeS10cnVuaworNjg1NzkgMDhhYzQ0MDQwOGM5ZDMyYTZlZjQzZDNiMGFmMDJkMmNhY2NkYWEwNiBsZWdhY3ktdHJ1bmsKKzY4NTgwIDlhNWQxNDVmMTlhNTEyYjZiNTgzZWRlYzg5NjBlNDJjYzA1ZjU4OTQgbGVnYWN5LXRydW5rCis2ODU4MSA0Mzk5ZTNmMTBiMTliMGExNzBhOGNiMmMxM2FjNGM2NTJjYTI2YjM2IHB5M2sKKzY4NTgyIDZlMzNhZWFlZTc3ZGQzOTY4MDU3YTg4ODUwODA3OTkzYzVkZGQ2NGYgbGVnYWN5LXRydW5rCis2ODU4MyBmNTcxODQ0YmVmNWM5YThlODA3NzBkYjM0YWE2NjI2NmQ0ODUzOTNiIHJlbGVhc2UzMC1tYWludAorNjg1ODQgYTM0OTRhNWIwNDk1NjQ2Y2VjOTdiNTE2OTVjZWRjMWUzY2YyYzRhYiBsZWdhY3ktdHJ1bmsKKzY4NTg1IDAyYWIxNjE0MjNhNTg2ZDI0ZDBmMGQ2MzZkYjM4ZmZjYzEyY2Q5MDIgcHkzaworNjg1ODYgNDEzY2NhM2ViZTgyZTAyMTdlYjI5NWI4YmZiY2Q1MzczNTYyN2RiMCBweTNrCis2ODU4NyAwMjI5MDU1YzhiZTA2ZjEwMWQzZGRhNzNhMDhlN2JkYjBmOWFiZTY1IHB5M2sKKzY4NTg4IDA5NDMzNDRhNTI2MWJjNzYwODM3YmZiODZlMmJhNmViZjE1OGY1YTMgcmVsZWFzZTMwLW1haW50Cis2ODU4OSAwOGYzZmU2OTE1MWFjNmQwNDQ5MzY4MTJjN2I1NzBkNDhkZTk5ZTRlIGxlZ2FjeS10cnVuaworNjg1OTAgZmFiNTAxMjc3YmMyYzNjMzI5YzBjNjRmMzJjODc1YjA2YTI1ODQ4ZiBweTNrCis2ODU5MSBkZGEzMTA3ZjZiYzdhN2JiNjAwMDE0NjM4MGIyMGExNDJkM2IyMzQzIHB5M2sKKzY4NTkyIGE4NThiNjFkYjMyNGQ3ZWQzYzZlZjQ5YjcxOGQ3ZGMzNzkyOGRhODAgbGVnYWN5LXRydW5rCis2ODU5MyBlNDZhMDZhMjY0YjMyZGRiNGE2ZWIxMjY4OTIyNTIxZWMyYzM0MGEzIHB5M2sKKzY4NTk0IDBmZGNlMzk5ZGNkZTBhMjNjODE3OTFjZTY3YTM4MWRhMWIzMzRhMDIgcmVsZWFzZTI2LW1haW50Cis2ODU5NiA2NWMxOTM4ZmI5ZmZmMjc4YWNjNGNlNjUyYTFkNTQ4YWI1MTZmOTk4IGxlZ2FjeS10cnVuaworNjg1OTcgYmNmNjY2M2M1YzA0OGJhOWExN2FjNGViN2IzZWQyNjcxZjEwMGM0NyBsZWdhY3ktdHJ1bmsKKzY4NTk5IDJkNDUzYjIyMWJlY2Q3ZTRlYWFkMGVlM2MyZmJiMTc4NzU4Nzc4MWEgcmVsZWFzZTI2LW1haW50Cis2ODYwMCAwZWYxZTY2NGE0YTQ1YTI5MGRhYTI5ZmI4ZDhlYzYxNzI1OTJiOWE5IHJlbGVhc2UyNi1tYWludAorNjg2MDEgZTExYzk5ZTFlNmU3ZWM4MDE2MmNjODgxMGZkNzgwM2ZlNzM4ZmM1MSByZWxlYXNlMjYtbWFpbnQKKzY4NjAyIDJkNWE5YzdlOWI0ZTMwYjlkYjE5MWE2MzRjOTc5YmJkZjY1ZGUxYTcgcmVsZWFzZTI2LW1haW50Cis2ODYwMyA0ODMyYTBiMTI4N2I3YzZiNzljNDY2MzkwNWIxNjM3NTE1YTk5N2MzIGxlZ2FjeS10cnVuaworNjg2MDQgZDJjYzI2YmRhNmE5MzVlODhhNzMxZjI0NjQ5ZjI5NmQ5ZmYwNDNlYyBsZWdhY3ktdHJ1bmsKKzY4NjA1IDA0MTMxYzcwMmQxNzI2MDY2ZDQ2MTFjMmY0N2I3YjdhNWEzMmZkNjYgbGVnYWN5LXRydW5rCis2ODYwNiAwZTA1ZTA3OGJjZWQzMzI2YWNhOTc3MDg4ZGQ5MzlhZGIwYjEyNzhlIHB5M2sKKzY4NjA3IDhkZjgxOTQxZGUwNWNkNTliOTY4NzM5MDFlZjhkZmEyYjBiMTEzMGEgbGVnYWN5LXRydW5rCis2ODYwOSBjZmY0ZmM1MmM3MDhmZDNjMDEzMDI1OGY2YTQ1ZTExM2JmNDFkYWQxIHRsZWUtYXN0LW9wdGltaXplCis2ODYxMCA2NmI4MWFjYWNiYzA1MjgzZjJmZTYxMjFjMGVlNGY4ZTI2OGI3MGI4IGxlZ2FjeS10cnVuaworNjg2MTEgMzM3OGVhZmQyN2RmNTlhNTcwZmFhNWVhZjMyYzE0ZjIwMWM2NDJlZSBsZWdhY3ktdHJ1bmsKKzY4NjEyIGFlNWVkMTU3NzRiNGY1N2FkOWE3MmEyYTFmMWJjNzRhYzczMDYwNTggbGVnYWN5LXRydW5rCis2ODYxMyBlYmZlOTE3ZDBlZWEyZDc1ZmJkNmQ0Mzg1ZTNjMTJjYjkzODAzNTk5IGxlZ2FjeS10cnVuaworNjg2MTQgZDAwODZjMTc2ZTgyNGUxZDNlYjM5OGFiYjg2OWVkODAxMjI0ZmM2YSByZWxlYXNlMjYtbWFpbnQKKzY4NjE1IGIxN2VjNGM0YTdjMzg1MDBhZWJkYTkzMDdiZDY5NmMwYjFmMjM4OTMgcHkzaworNjg2MTYgYmI4NmYyZWQxOGFhYjBlMmMyNDBiMzE1YjU0ZjM4Mjg2NmE0MjMyOSByZWxlYXNlMzAtbWFpbnQKKzY4NjE4IGJlNTlhMjNiN2MwNDE1YWVjMWQ4NDAzNGY2ZWZkMjQyYjE1NjUxYjggbGVnYWN5LXRydW5rCis2ODYxOSBlODNhYjk1ZTljODdiZGI5Mzg4MjhlMjU5OWY3ODIzZjE3ODU3ZTBkIHB5M2sKKzY4NjIwIDQyN2U0M2QwZTAzMWNmNWMwYmNjNWU2NDM5ZTQ0ZDAwNTgzNTFmZTIgcmVsZWFzZTMwLW1haW50Cis2ODYyMSA2ZGRlMGRmM2JiNGVjYjdjYzJhYzk1YzUwYWQyZWVlZGYxMjZlODFkIGxlZ2FjeS10cnVuaworNjg2MjIgNjViZWJlNGExYWEzZjkxZjUxM2VjN2M1ZmJiOWQ2NmYyNDcxYmRiZCBsZWdhY3ktdHJ1bmsKKzY4NjIzIDg4NGNkM2YxOWIyMGVjNmY5NTNmNTI5MzYyNDRjMTcxMDZmZmRhNGQgbGVnYWN5LXRydW5rCis2ODYyNCAyNjgwYTRiZWFlYTE4NjlhMDQ2OTdlYTIwMWI1MGJjMmMyMzdmMDkxIGxlZ2FjeS10cnVuaworNjg2MjggYWRiMjM2OWViN2JiZDA2MmY0MTllOTMyMWMwNWRiMTcwNGU1OTVhOSBsZWdhY3ktdHJ1bmsKKzY4NjI5IDEyYTViNjdkNTY3ZDIyMWU5ZDQ1MTM4MzVmOWZhNjhmN2JiYzkwZTEgcHkzaworNjg2MzAgYzY5OTVkYWU5OGE2OWM4M2YzZjQ4MWY0OTYwNmZiYTE3M2NkMmE4NSBweTNrCis2ODYzMSBhMDRiMWM3MTY3YmFkZGRmYTgyZTkyNzZmMjFlYjcyNzMzZmNmNjQ0IHJlbGVhc2UzMC1tYWludAorNjg2MzMgOGJlMTU5ZDZmZDQwNDNjYzZmNjFjYWRmYzZhMzRkMWRiMTFiYzllYiBsZWdhY3ktdHJ1bmsKKzY4NjM4IDJjYzQyZWZkZDNmZWRlNTFjYmRmNzE5NjE0N2IzMjdkNGJmNzY1MzggcHkzaworNjg2MzkgYzEwZjZmMTE2YWYwYzFhOGZkMTM2NjQ2YWIwNTAzYjA1OGQ1MjRhZSByZWxlYXNlMzAtbWFpbnQKKzY4NjQzIDc0OWE2Yjg1MzM3NmI2OTVkNjZkYWYyNTE5YTIzMTE0OTUxN2U2ZDYgcHkzaworNjg2NDcgMGIxYThmNTYxMTdhYzc5ZjgxMTlkMTIwODJlZDRmZmQwMmUxMDJmMyBweTNrCis2ODY0OCBjYjI5MDQ4MmExYTdmOTg5ZDRkOWUzZDIyZjk4NGQ0ZWNkZjA3YzZiIGxlZ2FjeS10cnVuaworNjg2NDkgMWUyZDdmMDc1MzI2YThhYmYzMzcwZGJlZjk0NzY3NjUwNjU2MDc2MiBsZWdhY3ktdHJ1bmsKKzY4NjUwIDFiODE3NzJjZDU5ZDc4OTk3MzMxNDIzMGU4ZmZlMGQ1Y2MxNTMxNzkgcHkzaworNjg2NTEgZGYzZmE0MGZkYmVkYTNhOTc5ZWYwMDJlZWNjM2M3MTUwYmVjMTk1OSBweTNrCis2ODY1MiA3YmM4ZTJlZWQ2OTBiYzA0NzFkYTE4ZTA2YjA3NjllM2MyMDRmODY5IHB5M2sKKzY4NjUzIDU3ZWRmODM1ZGVhMzY2MTMzNmI0YjQ3OWQ5N2Q0OGZlZjJkYWNjODYgcHkzaworNjg2NjEgZGMzMWJlNTBjNDA1MzRjNDhhMDI3N2YzMjNkOGM5NzIyZGI5MTdkNSBsZWdhY3ktdHJ1bmsKKzY4NjYyIDFhYWQ3ZDJlODk0NTk0ODU4Mzk1ZWI5NmY5ZjcxMjdjZTU5ZWQxZWMgcHkzaworNjg2NjMgNDg2ZTI1NzljOTc4YjlkMjgwOTRiNjc3OTllYmYzM2NmMTQ4YmI3NiByZWxlYXNlMjYtbWFpbnQKKzY4NjY0IDhkZmUzYzRhYmQ1YjExNjYwZTA1NmY5MGI2N2MyN2ZjYmEyODVkNzMgcmVsZWFzZTMwLW1haW50Cis2ODY2NSAyN2JhODAzYmRlYTkwNTcxYmVmMWI3YjNhMGI4YzQ3MmRmOGNkYmM3IGxlZ2FjeS10cnVuaworNjg2NjYgYWYwMmI2ZTQyMTQyYjM0NmEyMDY5NjIxMWM5MWI1ZTg2MmNlNjg3ZSByZWxlYXNlMzAtbWFpbnQKKzY4NjY3IGUxNThjNzA1MTFmZWFkYjlmZTU1MzdhN2ZkZjdhNDMzZTIwOTc1ZjMgbGVnYWN5LXRydW5rCis2ODY2OSBlNTZjNWYzYjZlMThmYTY5NjE4YjMxMTIyNzNhOGVjMjQyM2VkODlmIHB5M2sKKzY4NjcyIDQzZTBiMWVlMWMxYjkyN2RmZmQ3MDI3ODg3NGY5MTJmYWVlOTdiY2MgcmVsZWFzZTMwLW1haW50Cis2ODY3NSBhNjBiODZhNzNlMjA0MjZiZDI4MGZmYmRhZTcyYjA5N2FiNTcwNjdlIHB5M2sKKzY4Njc2IDM1YmY4ZjdhOGVkY2MyZDQ5MWNlZWU1OGRiODFiZWQ0ODIwZGFkOWQgbGVnYWN5LXRydW5rCis2ODY3NyBkYjIxZDEyMWJhNTNmNWQzMzJiODYzNWMzNjYwNzc4MGQ2ZGE3MTYxIHB5M2sKKzY4Njc4IGJiOWM2NTI0ZmRjYTQ1OTE5MTViMWQ5N2NhODNmNmM0NTgxMGMwOTYgbGVnYWN5LXRydW5rCis2ODY3OSA1NjIwNTJhMDM0NzZmOTc3YjI3NjA4NTU0ODQ5ZGQ0MmFlNTkzYzYyIGlvLWMKKzY4NjgwIGEwMjljNTc5MGU0MWZjMmM3YzBiMTEwNDcyZWFjNTdkM2E0NjlkMGQgaW8tYworNjg2ODEgZDcyMjBmZWI3ZDBiODgwYjU0MWI0NGVjZjhhYzYyNDlmNTljZDVkYSByZWxlYXNlMzAtbWFpbnQKKzY4NjgyIGYzOTY5ZjRmNDllMzY3YTc0ZmJlMmQ4NmYxMDNmNTIzMTYwNzljNjUgaW8tYworNjg2ODMgYjNjMTliNjc2ZjU4NjgzYmY0NDIyOGRiYWE4MGU5NDI4ZjVlZTU5ZCBpby1jCis2ODY4NCA2MjY4MjQ4NzIwZDY2NGNhMWQ2NDQ3ODlkZjZmZjRkNDVkMTkxNTllIGlvLWMKKzY4Njg1IDNjNTU1MWE5NGM3Yzk5ODhhOTJiNTM0Yzg1NzY3NWJhZDczZWU3ZmUgaW8tYworNjg2ODYgZDk2ZjUzZjY3N2RiZWQwYzdlMGZhMTRlOWRkNjc0OWZhNWFkMTAzOSBweTNrCis2ODY4NyA4YWI3MGVjMmFmNWJjMzA4YWQ3NmRjZjliNWFkMDRhM2UzZTgxM2FhIGlvLWMKKzY4Njg4IDBkZGMyMWRmOTc5OWI5YzYzYWFkM2Q0YzVlNDdkYTVhOGRkM2JmNWYgaW8tYworNjg2ODkgYWVkMGM3OTgwOWU0OWYwZmJjN2VmZDljZjMxYTBkM2U4OTVhODJiNiBpby1jCis2ODY5MCA3NTAwOWQ0ODYzYzlkMzQzNDVjNzE3NDE5MjE3NjUxY2NmYWExYTA4IHB5M2sKKzY4NjkxIDI5ZWRmMjZiOWMyM2VmZGRmMGQzZjBhN2FlMTBmYjQzZDcyOWU1YWMgcHkzaworNjg2OTIgOTlmM2MzNGQ3MzI4ZTJjMWFhMmQzZTRlMmM3ZWM4ZGI5ZGRlYTAyYyByZWxlYXNlMzAtbWFpbnQKKzY4NjkzIDhlYTE3ZjI3ZGE2N2QyNDFjMGRhNGZiMmRhZDRkYTA4YTU3MTAzZTEgaW8tYworNjg2OTUgNTA3ODc0ZjY1NWFjYmE0MjdmMTRhYzkxYzIwNWFjMDgxZjJhODViMCBweTNrCis2ODY5NiAzM2M0ZjQyM2FlYmYyMTI3N2M3MzdhNjEyZDJiZTA4YzM3OWYyYjI3IHB5M2sKKzY4Njk3IGZhNjUxYTFjMzRjYzY4YTg2MTg2ZjkxMmI0ODJkNzUzY2NmYmU1NDEgcmVsZWFzZTMwLW1haW50Cis2ODY5OCBhYWM1MWI3MGM3NGNiMmIwZjA4ZDU0OGY0MTFiMTIzNjZlNzQ4ZGY3IHB5M2sKKzY4Njk5IGUzNTA0MzM1ZjQ4MGE3MWMzYjhhYzNlYzU1MmQ3MWE0ZTMwYTE4NjggcmVsZWFzZTMwLW1haW50Cis2ODcwMCA0Mjg4NTQ2YTQyMzhjMmU0OGRkYmRiNGRmMzVlZjMzMmJiNmUxMWJlIHB5M2sKKzY4NzAxIDZlOTdkNzFkNjFjMjVjYjFiMzk4ZTViYmY1NWNkM2IxYTc0ODI0NGQgcHkzaworNjg3MDIgMWNlMWJmYmU3MDUxZGUxN2NkY2M3MjYyMDA5MmM2YjU1NmZlYTU1NyBweTNrCis2ODcwMyA5YzdmMTk4ZjliMjUyMGY5MDU0NGVmYmZmMjRiNjYzNmI3YWM1ZGMzIHJlbGVhc2UzMC1tYWludAorNjg3MDQgMjBiZDExNzhmYzY0MmQ2OTU2MGI0NTdhYzAyOTZiN2NlNmI3MWExZiBpby1jCis2ODcwNSBiOWNiMzY0NjVkZDJhMDdkMWYwOTdkN2MzNzczNGJmMjdhM2I2MTgxIGxlZ2FjeS10cnVuaworNjg3MDYgMTBjMzhiYzY3MzdkZWI0ZTJkYjg0NGM5M2Y4ODkxNjVmZDA3ZDZkMyBsZWdhY3ktdHJ1bmsKKzY4NzA3IGU1NTRiOGJiZGVlYWE5MjJkMDA0ZDM0MTE1Y2YzZWQ3YmVmNTdhODggcHkzaworNjg3MDggYjRiYWE3MjUyODRhNmQyOGI5ZTRjMDBlMGQyMDdhNWIwZjRiZGVkOSBsZWdhY3ktdHJ1bmsKKzY4NzA5IDA5OTYyNzFlMjFkOGM0YzkzZTIwODQwMzg5YzM4YjFlZWY3NjNjNGQgcHkzaworNjg3MTAgOWUyYWQ0NDAxOTZiZjI0NDBhMDQ3Y2QzZGVhZjkxYjhiOTI0NDhjZiByZWxlYXNlMzAtbWFpbnQKKzY4NzExIGU5MWY2NGY1ZDk1NTgyMWE4ZjE5NWYxYTUwYzU0NzAxZWRlN2VjZDUgcmVsZWFzZTI2LW1haW50Cis2ODcxMiBjODYzNDdhYzY2NjM1MjIxYmM1ODI2ZjFiY2UyODk2ZDUyMzE3MTk5IHB5M2sKKzY4NzE2IDQwOGM4ZGNmMDI0OGExNjkxN2VkODViZjY2MTA1YzgyMGI3YzE2MDIgcHkzaworNjg3MTcgNDQ0MjQ5NTdlYWRmNjcwNTM3NDJiZGNkZjY4MmY3ZDdhMTNmZjVkOSBweTNrCis2ODcxOCAxODlkNTA4MzAyOTcwNTUyNWJiNGY5YjhlZmVjMjMwNzMwMzA4YTFmIGxlZ2FjeS10cnVuaworNjg3MTkgOGYzMmJhNTJiMjBkODkzNTk4YmJkY2I4NDA5MGU4Y2QwODdjODM2YyBweTNrCis2ODcyMCBkMmRjNmQwNDNjMjFkYTk3MDhhMDk3N2VjYjNjZTczODAxZTRiYzhmIGxlZ2FjeS10cnVuaworNjg3MjEgYmJkYTMxZGQ5Nzk3NWJkZDM1YzMxNGM4MWNiNDM4YTIzN2NiZmYwMyBsZWdhY3ktdHJ1bmsKKzY4NzIyIDliYmI5YWMwNjFjMGQ0OGZkNDg5YTEzYjNjNzhjYTY2NjVhMzcxZjUgbGVnYWN5LXRydW5rCis2ODcyMyA4MzI1ZWIwNDE5MjEwYzJiNjc3ZTA3YzZkOTlkNWYxZGM5ZDczMzNlIHJlbGVhc2UzMC1tYWludAorNjg3MjQgZjZhZWZiYmQ3MDQ1ZTlkY2JiODU0NDY5MmRiZmExNDc4ODUyNTVlZiBsZWdhY3ktdHJ1bmsKKzY4NzI1IDExY2JmMzljMzE2ZjdmNzQ1YjI2YTAwYjZlYzkzMDBmNjNkYmFjNWUgbGVnYWN5LXRydW5rCis2ODcyNiBkNzE1ODM4NjA2MzQ2NzBiODNjMzMzMzhmNjUyZTJjYWNhMGM3MGFkIGxlZ2FjeS10cnVuaworNjg3MjcgZTdkNmU1ZjUxOWVmMjU4MTFiOWEwODZlMmMxYTdjMTExNTc4NDhjZSBsZWdhY3ktdHJ1bmsKKzY4NzI4IDhkYzQ3OWI2M2UwMzY3M2IyODQyNjVkMDZjMjc3MzMzNDVhNzE1OWEgcHkzaworNjg3MjkgYTgxOTkyN2MyYTEzOThjOGRmMTAwMzdmOTM1ZGU2OTdkNjFhOTUyOSBweTNrCis2ODczMCBmM2JhNWY5OWRhNTBkMGIzNjNkNzlhMGI3ZmUyNTFhZjk4NGY3MGQ1IHB5M2sKKzY4NzMxIGI5MmU2OTVkNTYxZTVhODEwNzgzOGExZmNjZjIyYjk4MTM5MTAyNzMgcmVsZWFzZTMwLW1haW50Cis2ODczMiA3NTg3Nzk5Y2FlMWNiMGQzMTg1MTBhOTg4ZTkzOTllNzFhOWI3NjNiIHB5M2sKKzY4NzMzIDdlNWNmYmE1NGUzNDgwMWNmZmYxZmNkNjY3YmVjZGY2MmM4MDRkMDIgcmVsZWFzZTMwLW1haW50Cis2ODczNCA2YTc2YWJkNjE2ZGVkYjE2NDE5OTAwZTk2Y2M1MWNlOTY5NDM0NTY3IHJlbGVhc2UyNi1tYWludAorNjg3MzUgYWUzYTEwNjMwNmE4MDhiMzg0ZWJjNjI2MjM5ODIyMGM5NzBmNjEzYyByZWxlYXNlMzAtbWFpbnQKKzY4NzM2IDUwZjVjMjlmY2UyNmQzMWNiODRkNmI0N2FhYTZhNGY1Y2Y0YTE3YjMgcHkzaworNjg3MzcgYzFjNDRhMGFiNDM4ZTZhYjI3ODc3OTRlNzhiYTRmMWU5OThjOTc5YSBsZWdhY3ktdHJ1bmsKKzY4NzM4IGM1MTNjNjkxMThkY2E2MTQ0MjFmMTkzYmNjYTExYTc5YTgwOGY4MDkgcmVsZWFzZTMwLW1haW50Cis2ODczOSA1YjQ4ZDYwMDA5MTY3NjI2ODE2ZTk1OTRkNGM1NjMxNWRiNTE3ZmNkIGxlZ2FjeS10cnVuaworNjg3NDAgOWVjYmQ5YTEwMWQ4MzdkMTU3MzE0MjZmYzhiMTFkODg5N2RiOWMwOCBweTNrCis2ODc0MSA0OWQ5NzA4ZDdlYTM5YWVhMTY2NzcwZTZkYzMzZGExZTNhZWJhODQzIGlvLWMKKzY4NzQyIGM5ZTVjMmNhNjJjM2UyYzNlOWNmODQxMDU0YTQwNDM0ODI0NzdjYjkgaW8tYworNjg3NDMgOWY2Mjc0ZmQ3YTlkZjdjMzdhODIwYmJmMjZiNGUyNTBhZWQxNTJiMyBpby1jCis2ODc0NCBlMTRlYzZkMThhYjgxZjUyM2VhZjNkMzVhZmY5OGU2MjhjMDMyYWJjIHB5M2sKKzY4NzQ1IDFlYzM1YmVlZDJkMDE0ZGNmNjExYWNjMDA2MmM3NDg1ZTU4N2ExNGMgaW8tYworNjg3NDYgOWY0NWZhMjdiODM4YWUwYjY5ZjcwMjU4MjQyNTI1YWE3NDk0ZDkyZiBweTNrCis2ODc0NyBiYWQzNmY0OTIwODFlN2RkMWIzOTNkZGViYmUzYzZhZGIwNzNmY2RiIGlvLWMKKzY4NzQ4IDU4MWQ4NjAyZjNmNzQyZjQwMzEyODM2MDU4NzBhZTgyMmJlOTczYTIgcmVsZWFzZTMwLW1haW50Cis2ODc0OSAxYjIyOWU3ZDgxOGJkNTI3NDc5NDAxNTdjZjA3MWMzNmRlOGI5ODcxIHB5M2sKKzY4NzUwIDA3ODhkNDViZjdhNDdlOTQ3MGQyN2JhMWM1MDNlYmM5ZWJiNzYwZDUgbGVnYWN5LXRydW5rCis2ODc1MSBmYjdmMjMxY2NkM2VjNzc3MWNlZjExZWRkZGNkZDNkNGYyYTRjNDlhIHB5M2sKKzY4NzUyIDU5ZGUwNjU0NzIzMmE0OTI4YzNiZGJmNTY4MTU3MGQwYjE3MWUwNzcgaW8tYworNjg3NTMgNTllZjMxNWJmMDBlZmNmYTUyNGQ0MjVlMDhiMDBmM2Q3MDQ4YWY0MSBpby1jCis2ODc1NCA2NTgxOGNmZDQ4MjY1ZmQyMjEzZDExZWM5NzczNzc0MmJlZDQxZGNlIGlvLWMKKzY4NzU1IGE5OTFiZTZhMTExZDg2ODRmZmVjZDliYzRmNTI2N2IwODhjMWZkMzcgbGVnYWN5LXRydW5rCis2ODc1NiAxYzE2ZWRhMzEwOWU1NDU0ZjQzYzA0NGI0ZTM5NTNmMTgzYjUzYzBmIGlvLWMKKzY4NzU3IDFmYWVkN2NlZDI0MjQ1OGU3ZjZkNWFhYjc3YjdjMWQ5YmUzOTY3M2MgaW8tYworNjg3NTggNjVlZjQ2MjkyMWY3MzkyNmRiNzM5ZmZjZmUxZWQ1MGU0Mzc5ZjU1YiBpby1jCis2ODc1OSBlMTA4Yzk4MDZjYzNmMjEwMmVmMzg4YTVmNGU2YmY1OGYzOGJjYTg5IHJlbGVhc2UzMC1tYWludAorNjg3NjAgYTY2MTE2MTVjNzZiYWZmNWM5MTBhYmIwZWJjN2FkMzYxOWQ1ODIyYiBsZWdhY3ktdHJ1bmsKKzY4NzYxIDYxMTQ2MWE4Yzc4NTFiZDA1NTBiMjg4Y2U5YWIwODM1Zjc0ODM5NWQgcHkzaworNjg3NjIgMWMxN2Q1Y2IxNWRkNTk4YWM2Y2E0OWE5YzRkM2ZjYWFmMzFlMDFhYSBweTNrCis2ODc2MyAzOTE4N2IzZTEyZTA1MTI5YjM3OGY1MTJiNDIyNDBlODU0NDJiNDFkIGxlZ2FjeS10cnVuaworNjg3NjQgMDYxYzUxMjk1ZDMyNmRkYTQ1ZWQ5MDdiMjRjYWRlMDZjZTVjYjA0MyBsZWdhY3ktdHJ1bmsKKzY4NzY1IDE4NDQxYjhmNzAwMGMwNTFkOTNjMDM5ZjI0Yzc1ZGE3MjExMDcxNzEgcmVsZWFzZTI2LW1haW50Cis2ODc2NiBlN2MxMDBhZjgxZWMyOGJlZmE1MzI0NDc4MGJhY2RkYjc3ZTc2MTc1IGxlZ2FjeS10cnVuaworNjg3NjcgMzUyZjI5ZGI1ZWJmNjBiODc4MDY4ZDZkODkxYmZjYzIzYjhiMWFkNiBweTNrCis2ODc2OCA5NWU4ZDg1NTk0YmM5MmQwZjQ4NmNhZDYwMmQwNDEyYzdiMTQ1NDdlIGxlZ2FjeS10cnVuaworNjg3NjkgZmFlOTZiYzkxOTY4NDc5NWU5YTEwYzFlY2IwNWE3OTUzZDg3MTEyMCBweTNrCis2ODc3MCBiYTM0ZGVhNWQxOGMzZjNhMGNlNjI5YzdmZGJiZGVkMWQ1YjU4OGQwIHB5M2sKKzY4NzcxIDQ4OGU4ZTZmMWNkYzYzM2QyMTFiYWYwY2JiMzkxZjY3MDcwODU1NjUgcmVsZWFzZTMwLW1haW50Cis2ODc3MiA2ZWRkMjlhMzQzNTQ4ZjIyZDE2ZjkyOGJkN2QwNjk1YTIzMzhkYWZkIGxlZ2FjeS10cnVuaworNjg3NzMgN2NmYjU5ZTM5NzgyNjA5MDQyYTUyODU3NzQ3YjdjNjg5MTBlMDQyYyBsZWdhY3ktdHJ1bmsKKzY4Nzc0IGFlYjJiZGUyMDNhYWNkOWYwMzllY2I3M2YzMzg0YWZhMmYxZjc2MzcgcmVsZWFzZTI2LW1haW50Cis2ODc3NiBhYWY5NmVmYzYxZTU0MmRiMzI2YTJmNjZiZDZiZGM4MjBmY2RiOWJkIGxlZ2FjeS10cnVuaworNjg3NzcgMDE1ZWE3YjIxOTUwYTM4M2M5YTM2MDdhMThlMTUxMzQ3MTUwNmZkYyBsZWdhY3ktdHJ1bmsKKzY4Nzc4IGEyZjU4MjA0ZTY4MGI4N2FlMzRmOTI4YjFhNDBlMzAzMDIwNDlhNWMgcHkzaworNjg3NzkgZmExMmM4ZTVhZThhY2JhODY2ZWU3NjU4ZDEyYmY3ZTY1ZjA5NDhmNCBsZWdhY3ktdHJ1bmsKKzY4NzgwIDc1YmNlYzAxMWVlZjZkMmRhNWE2NmI2OTU0MjRiYjNiMjdjNDE5YzIgcHkzaworNjg3ODEgNjExZDk1NzBiNGNhYjI0ZjZlMWQ5OTViMmU2MDA1MzIyY2IwYTNiMiByZWxlYXNlMzAtbWFpbnQKKzY4NzgyIDE5ZmE2ZjlhYjViNTAwNzNhYjMyZGY2ZjM1MmI2YWQ2MTJhYTZkMTUgcHkzaworNjg3ODMgY2FhNzlkMjM4OTE3MmFlYWY0ODkwMzRiZjA3NjQ4MTJhMGQ0MGMxNSByZWxlYXNlMjYtbWFpbnQKKzY4Nzg0IGFmMzZiYTEyM2MxZDJhY2ZhMjQ3NDhiNTE5OTQ2N2JiYzA2ZTRkOGEgcmVsZWFzZTMwLW1haW50Cis2ODc4NSBjM2EwZWU1MWQ4Njc4MTMwYzUwOTA2NGNkZmVlN2MzMDEwYzgzZjEwIGxlZ2FjeS10cnVuaworNjg3ODYgMmY1NGVlZmQwMDczYTE3YTM2ZDljNDc4MTcxMzM0MGY1OGRkNzk0MSBweTNrCis2ODc4NyA2MDY3YTFlNjI4OWExMzU3YzdmOTkxM2JkZWJjYTFlM2Y4ZWRjZmRlIGxlZ2FjeS10cnVuaworNjg3ODggNTM3ZThkNzI4NDI0Njk0OWM1OWQ4YTAxNzQ4ZTc2NTU5MDgwZmMwMyBweTNrCis2ODc4OSAxOTFiN2IzZGRmNGZhNGNkYmE1YTMzMWI3Y2QzYTUxYTYwMDhkY2MwIGxlZ2FjeS10cnVuaworNjg3OTAgMzgwMjFiOGUxNGFhYjEyNzZmMDcyYzEwZWQ5YzIyNzA3YWM5MWI4OSBweTNrCis2ODc5MSBhNjNmN2NmMzc5M2FiZmUwYWM2N2EzMzBiNzVmNjBiMzg5NzA3Y2Q3IHB5M2sKKzY4NzkyIDM5MDY2OGUyMDYyOGU0MGM4MzJkNGMyNWZhZmIzNjA2YTQ1OTJhYTYgbGVnYWN5LXRydW5rCis2ODc5MyA4ZDY2YjgyYTEwYTMwODhjNjBhZGY4NDY0MDlmYTdhZjYzNTY1ZWVlIGxlZ2FjeS10cnVuaworNjg3OTQgNmE2YjU5MDkxMmZlNmYzMjI3NjczOWExNTgyNGMxNzBjYjIwNWJjNiBweTNrCis2ODc5NSA1ZGQ4Nzk4NjdjZGUyMDI2MGYzOTBiYmU5ODMyZTMxZGM2MjM4YmZmIHB5M2sKKzY4Nzk2IDVjM2JmMzFkMDRmZDZhOGQ3MTk2OTNmMWY4MmZmNzViMjY1YmE2YmMgcmVsZWFzZTMwLW1haW50Cis2ODc5NyBmZTI4NzFhYWI5ZDk4ODQ4ZDNlMjA2OTk5NGQzMWFiMGE4MjFkMmE2IGxlZ2FjeS10cnVuaworNjg3OTggMjM0NGNlZjdmZjQ0NDc0NTRkOTYxYTg1NDhiYzE3YjY4NWRjYWUwMiBweTNrCis2ODc5OSA1YTA0MWQ5YTUxY2Q2NmZiZWM1MjM0NTM1YmM5NDUxZGQxYWFkODI4IHB5M2sKKzY4ODAwIGNjOWRlMTk3ZGY3ZTExOTFkMTZmNjFkMzlhOTg4MDkxNjY0YzViMjIgcmVsZWFzZTMwLW1haW50Cis2ODgwMSBjYzA3OGE1NzVlZWQzMDdjZDg5MDMzYzczMTE5YjZkNzMyYmMxZDNjIGxlZ2FjeS10cnVuaworNjg4MDIgMWE2NGQyZjU2Yjc5OGZmNjAzOTZhNjEyM2RhYTI4MDI4NTIyOTM1MCBweTNrCis2ODgwMyBhODMyNjdhZDJmZDI3MjA1NGMxYWZkNGY5ZjBjMmNmZGJjZTEwYWMzIGxlZ2FjeS10cnVuaworNjg4MDQgZmI3MWMxNTYyMGVlNmY5OTlkOTViMzJjMDhkNjgzNDk4NjU2ODA5MyBweTNrCis2ODgwNSBkYmMxNGFjZGRlMzdmMTg4OTdhYjEzMmI4NzFjOWM2NGU4NGMwZTRmIGxlZ2FjeS10cnVuaworNjg4MDYgMWYxNDg0MjQ4OGYwOGZhYjhmY2I4NDVhMjRkZDdhMWYxNjc3YzQ5ZCBweTNrCis2ODgwNyA2MWYxY2IxNmU3YjQyZTc5NmVmYTMwY2MzMDk2NjdjMjRiYzU2Y2Q4IGxlZ2FjeS10cnVuaworNjg4MDggMzZlMjY2YjJlNDYwOThlYmMzMWQwYzg0OTI4YjYwNjExZDYwZmZkOCBweTNrCis2ODgwOSBjN2JiMzMyMDc0OTVhOGNiMWM3MmJmYzdiYmFiMTAwNDA1YTNjY2Q2IHB5M2sKKzY4ODEwIGRkNTYyNDQzOWJlNTA4ZmQ0NDJlYTQ0NTY0ZTc2ZThjMGMxNGNmNmUgcHkzaworNjg4MTEgNzMzMzg4YWNmMGI2NWNiNzliZmNhNjQyYzkzYWMyNmI3MmRjN2NiMiBsZWdhY3ktdHJ1bmsKKzY4ODEyIGYxMzUyNzQ4NGJhM2FiNDRmNmExYzM0NTIwZTI2ZjFkYzFlMzgzYzMgaW8tYworNjg4MTMgNDI0YTUwOWJlYmZlYTIwMzBmOGU1NmIwYzM5MmQ2MDg5MmEzNWQxMiBsZWdhY3ktdHJ1bmsKKzY4ODE0IGQxZGUwNzc0NDdhYTRmMzRhMzFjZGNmMDAxOTM0MTc2OTI5M2JhMmYgcHkzaworNjg4MTUgMzJhMjJmYTEzYjk5Yzc5NjAzMGU1ODIxMGVmYTE0M2Q0NDMwNjllZCBweTNrCis2ODgxNiBiMjBlMjE4ZDZmMDBmNzg4YmNhNGQ1YTg1NGI2ZjQzOWRmNjUwNjAyIGlvLWMKKzY4ODE3IDVhODgwYmRhNmE2Yjc4NWY0NTUyNGRhN2IwNjdmMzQxYTVmODJkMWMgaW8tYworNjg4MTggYTU3ZDEwZDZiYzg5MzFmMDAwMjA2MTc2ZDUwNWFhMGYyY2ExOWVhNSByZWxlYXNlMzAtbWFpbnQKKzY4ODE5IGFiMGIzODVhZWZjM2U5YjYwNDEyMmMzYzVkOTgxODY4M2MxYmJmMDUgcHkzaworNjg4MjAgOWYyOTRlYjM4MTkwZTY0MzRkNTUzNTUxMjk0NGVjNGFkMmQ2NTAzNiBpby1jCis2ODgyMSBjNzc1MjA3Y2VkYWQ3OTQwNTYwOTU2NDlhNmYwYjcyMDA0YzFjNGU2IGlvLWMKKzY4ODIyIDUzOTAxZTY2OTFjMzgyNDhmMTFkNGNiNWNlOTkyYTVkZDRlMzJlYWQgaW8tYworNjg4MjMgMGU3OWQ1YTM3MjMzODIwMzYzZjZhYjkzM2Y3NzQxYzdlOGM0ZTE1MyBpby1jCis2ODgyNCBjOTRmOThjNTc1M2Y5NzBiNWYxMTI2ZTg2M2M4OGIyNDAzNjRlMWNjIGlvLWMKKzY4ODI1IDdlZDliZWVkODcxNTUzMzE5MjVjYTA5YWY3NmYzMzVhYzA5MmVjMzcgaW8tYworNjg4MjYgNzY2ZGU0OTZhNDJkN2YwZDFhNzQyYThiODg0NjA5ZjdlNGExNGQ0ZCBsZWdhY3ktdHJ1bmsKKzY4ODI3IDdjMzBhYjAxMzRhMWZlNjM0NmZhYmZhMWM3MGY3Y2QzNzgzZjFiYWQgcmVsZWFzZTI2LW1haW50Cis2ODgyOCAyYjNlY2RlMTc2ZmU1MDE3OTNjNTUwNTAyODA1YWQ3NDM2OTU4ZWVhIGlvLWMKKzY4ODI5IDI1MmY4MjRiYjgwYjNhYzIxNzA5ZmM5ZDc1ZTk1OWZkYjBjZDY1MTEgbGVnYWN5LXRydW5rCis2ODgzMCBjYzViNDYwZmYxYWIxMjRmMjJjM2UyZDhhZTY4YjMxNTE0MmU0OWYyIHJlbGVhc2UyNi1tYWludAorNjg4MzEgMTJlOWM1ZjcyNjU5MDQ5ZWJmMDMyNjAyZTMwNDhjOTlhMjJiMWQxNSBsZWdhY3ktdHJ1bmsKKzY4ODMyIDM1ZmI0YTI2MGEyNTNkOGY3NTA4ZmE2MDZiMzM4MmI3ZDM5M2I1MjUgcHkzaworNjg4MzMgNjY5MjhkYWQ4MWNhMTQ5YjUxMGYxM2Y0Y2NjNTg2MGIyZjAxZDVlZiBweTNrCis2ODgzNCA3MTA2ZmY1NmU5ZDhiZGY2OTZkNmExOGRkODg4Y2Y4MTczOGMxMzZkIHJlbGVhc2UzMC1tYWludAorNjg4MzUgYjg4Y2M3ZTJiZmI0YzMxM2Q1MGJiYWJlMjk0MGEwOGI3NGU2MDg3ZCBsZWdhY3ktdHJ1bmsKKzY4ODM2IDBhZDhjNTZhN2E3MGQwY2IwOTE0MDVmYmQyZjM1ODZhYTRhN2FiMjQgcHkzaworNjg4MzcgNzYyZjlmMTg5ZTJlODYyNzg4NDViNTEyZjJhM2VhMmQ0YzE4MjA1YyByZWxlYXNlMjYtbWFpbnQKKzY4ODM4IGYwYzk1NTM3OGNhM2M1MWVmZmNhYWU1MzEwNzc1NTI5ODNkMzcyMjMgcmVsZWFzZTMwLW1haW50Cis2ODgzOSBkMjc0MDYyODE2ZmY2NThjOGQyYTM0NzYzMGRmMmM0ZTczZWY0ZjE4IGxlZ2FjeS10cnVuaworNjg4NDAgMGVjMzU0NzAzZDAxY2FhNGJmZDgxMmZjZjQ0ODMxNDQ0YWYxZGFjNyBsZWdhY3ktdHJ1bmsKKzY4ODQxIGE5OWRlY2VkZjcyZDIyMGE1NjBmMmQ4Mjc0MWJlMDU1Y2FhYWU0N2EgcHkzaworNjg4NDIgODc2M2NmMmY3ZTBjNTVmZmQ4MDE1MzIyZjhjMjIyMTUzMjY1NDZjMCBsZWdhY3ktdHJ1bmsKKzY4ODQzIDhiZjIwNGFmOTY5MTBlNjRiODdlOWUxOGNmZTY1NmJkODExMWZlOWQgbGVnYWN5LXRydW5rCis2ODg0NCA3MzAwZDZmYmQ5MTRkYmQ3NGRhZGQ1ODBlNjZmMzAxNjQxNzNkYzQzIHB5M2sKKzY4ODQ1IGNiZTU0NjUxZTNiOTg1Mzc4NGU5ZWEzNGY0Y2Q0NjQwMmZlMGU1OGUgbGVnYWN5LXRydW5rCis2ODg0NiAzZjYxZjgwZTkxMzBkMTc1MzhhNmYyYTdjYTIzMGI2NjhhY2M0ODFkIHB5M2sKKzY4ODQ3IDQwOTJhNDAyZWQzZTc1NWEyMDQ5OTcyY2I0NzJlNGY4OThjNmMxOGUgcHkzaworNjg4NDggZWM3MGIzOTNlMTczZjg0ZGQwZTllMTQ4NjdiZWI3ZDc5YjYzMjNlNCBweTNrCis2ODg1MCAzYzVhOGEzNDc5OTA3ZjBkMzgzMDA0N2E4ZmZmZTIzYTA1OThlYTFmIGxlZ2FjeS10cnVuaworNjg4NTEgMDUzZjNlODI2NjAxNmVjOWEwZjQyZjczMmVhMmQyYmI5OTY3NWM3NyBweTNrCis2ODg1MyAzZjEzYzY1YWVjMDU2YjNmZTU0NjYxMDQwZDQ0MzY0MTM1MGRlYzdiIGxlZ2FjeS10cnVuaworNjg4NTQgZjVkN2QwNjA5MTFhZTE5MzgzMzQyYzY1OGJlNzUwNDk1MmQ3ZTI4ZSBweTNrCis2ODg1NSBiNDBlNGI1MjlmNjliYWQ4OTlkZmJmNDkwMTBhN2JiNTk1MjgyMjllIHB5M2sKKzY4ODU2IGVjNmYyOTYwOGJmMDlmZDQ0OWRlNmViZTE0NDczMzhiMWQwMWE4NWYgcmVsZWFzZTMwLW1haW50Cis2ODg1NyA4YWVkNzg4YmZjYzgzYzc1MWRiYWZjZDY0MjcxMGU4YWIzNmYzYmFjIHB5M2sKKzY4ODU4IDFmMGEzYWM4YmY4NWRlNDQwNGZmNGRiYjgwNzgyMTgwOGNjNjNmNzEgcmVsZWFzZTMwLW1haW50Cis2ODg1OSBkZTJkYzA5ZTFmN2U2NjExZGY0MmE4NjNmZTU4NDljMzQyYWRjYTZjIGxlZ2FjeS10cnVuaworNjg4NjAgMjczNWZhYzZiMGQ0ZDNmZjJlMDBmMmUyZmNlMjE3YTJmMTlhZmRiZCBweTNrCis2ODg2MSBlNGM4NmRjMTgxZTlhMjA0NGUwNDUwZjYyNDA3M2U4MzY5MzhlOTQzIHB5M2sKKzY4ODYyIGIwYjYyMWYyYWY1ZGRmYzUyZmFkMzllYjAwYjhiNDIwOTdjZWE3YjkgbGVnYWN5LXRydW5rCis2ODg2MyA3MmJjZjBhMGNiMzFkNDFhMzdiM2E5NzRlNDBlZTNmOGQ1MDRkZDg5IHB5M2sKKzY4ODY0IDA5NDBhNGYyNTA2ZTc3ODI0NjA2MGNiODNkZmJjOTQwNDdhZDQ5ZjkgcHkzaworNjg4NjUgZGQ2MzhiN2U3NDdlM2ZhNTVlNmE1YTZiZWE1YTdhZTg4ZTRhZTcxNiBweTNrCis2ODg2NiAwOWMxNzEyN2E0Yzk5MjAxZmM1N2JiZmRlY2ZiYTQ4MzZjNzhmMTU5IHB5M2sKKzY4ODY3IGM5NTQ0NTBmN2FiZmNjMjUxY2Q5MDJiMmE0ZjQ0NDNjMjM5YWY4YzAgcHkzaworNjg4NjggMDRjOTVmYzM3NjVmZWQ3YzU4YThmNDMyOTc1NTU5NjczY2NiMTdjNiBweTNrCis2ODg2OSBhY2U3NWIwNmE2Zjc0ZGM1OTZjYThmNGFlNDYzYTJkZTkzOWZjMGZjIHB5M2sKKzY4ODcwIGFlYWEyMzdlYmFkN2Y3OTViNzJjYjBjODg5ZmY5ZjdlOTJmYTUwYTkgcHkzaworNjg4NzIgM2JmNzdlYTFkYjNlMjNkZWI5NDMwMzA3MTRjNjk0ZWM1OTFmNTZkYyBweTNrCis2ODg3MyBhODIzYzlmM2E0NTJiYzIxOTE4NGZkNmI5YjUwYWIzZjRlNTJiZjhkIHB5M2sKKzY4ODc0IGIwZDU5M2Q0MTIxMjBjN2FmMTU4OTU1YmZlMjBkYmI3MmYwMGU2YzUgbGVnYWN5LXRydW5rCis2ODg3NSA4NTdkNjYzNDFmZjk0MDgyOTM4ZjFkOThiZjJkODNmZDMyYzFmMzA3IHB5M2sKKzY4ODc2IDA4ZTliZWQ2YTFmODVmOWU1NjQ2NWRkODY2YTNiMTYyZjIzNzA5NmIgaW8tYworNjg4NzcgMWFmNGZhMThiY2MyMDY1YWU0MWM4ZjNkNzA1YzcyMTU4NmRjNzFjYSBpby1jCis2ODg3OCA1MmZmMDU3OWE0MWYxOWFmNDhhYTQ0MmIzN2ZmNDBiOTdmZjY2M2FmIHB5M2sKKzY4ODgxIGE0ZjI1YzM4MGY5NmI3ZjNmZjIwNjk1MjhkZDhlODRmZTJjYzE4ZDYgbGVnYWN5LXRydW5rCis2ODg4MiA1YzczMTJjZTVkYmQwNjJlODgyMDYyNTI1MTI0YWEwMzk4MjcyMTQ0IHB5M2sKKzY4ODgzIDA0OGViNWE4MzQzYmUwOWNhNzQzYWJmYzRmYzI1N2JjOTdkNTQ5MmYgcHkzaworNjg4ODQgYmQ3NGU4NjZmOWNhZjgxN2M3ZWRhMDk5OWFhNmM0MTE0YzIwYzNjOCBsZWdhY3ktdHJ1bmsKKzY4ODg1IGZjMzhmMmVjZDJhYzI3NzNkZjhmNjZlYTA3MzAzNDMxZjQ3ODU3YTcgbGVnYWN5LXRydW5rCis2ODg4NiA2Zjc2MWU1NzE0ZTA5MTlkNGEyNzY3YWQ5MDZjNTkxNDJiNDE2ZWE2IHJlbGVhc2UyNi1tYWludAorNjg4ODcgY2VmMGZjYzkxNTU5ZWJiNWQxNjBlYzkxOTFkY2I5ZTkwMjZjMWI1ZCBweTNrCis2ODg4OCBjOWI5YTUwNDFlZjUyMWY1NmIxZGQ0ZDdjMzg5NzNhNDZmZTY0ZTFiIHJlbGVhc2UzMC1tYWludAorNjg4ODkgNTQwNjExYWU2MWI4NmZhZGFhMzM5NDRiZmE4MmQ3NzEzMzBjOGZlYiBweTNrCis2ODg5MCA0ZWFjOTk0MTUzOGM1YmRlYzhkMjk4ODU2ODIwZGYxNGJlMjNmYzJhIGxlZ2FjeS10cnVuaworNjg4OTEgZGIwZmZlZWU2ZTUwNzAzNjk4NWM2MmJmZDA4OTIzZjI4Y2E5MjQ5ZCByZWxlYXNlMjYtbWFpbnQKKzY4ODkyIDI1MDM0YzgzMjhjN2NmN2FkNTFhNGU4MTI1MTE2MjBhY2JhNDE3ZWYgbGVnYWN5LXRydW5rCis2ODg5MyBmMWFmNDA4MDRhZGU5M2I5YjNiNWEyZDE1YzAwYjM3MTBkMDI4ODNmIGxlZ2FjeS10cnVuaworNjg4OTQgNTEzMmExM2YxNjlhMzQxNGJlZjc1Y2Y0NTBhZWEzM2IyOTI3MmIyNCByZWxlYXNlMjYtbWFpbnQKKzY4ODk1IDI3ZDJmYTE5MDg0YTU4MmU0Njg2M2U2N2YwZTI3MWRjYTJjM2U1MmEgcHkzaworNjg4OTYgN2VlNmZhMDYwMmJlOTI3MTJiMDRkZTJkZjNmMmFjMzJkZGMzZWQ3ZCByZWxlYXNlMzAtbWFpbnQKKzY4ODk3IGExYTUyODczZjlmY2YwNjVjYjgzOGI0ZWMxOGYyMmQ1NmY5MTVjZDMgbGVnYWN5LXRydW5rCis2ODg5OCBmZWI0YTA5MmI4NzFjNjdlY2RmNGMzZmQwNjg4MjBkNTk5ZjFjNmEzIHB5M2sKKzY4ODk5IGE2YTYzNjljZmJjY2RhZGY4YTZlNTk0ZjVlM2Q1YWE4NzRmZmQ3NmQgcmVsZWFzZTI2LW1haW50Cis2ODkwMCA5OWYwYjAyNjU1MTZiMjQzOTZkMzM2NDZmZDk1YTIxMWIzZjQwMzZkIHB5M2sKKzY4OTAxIDU5ZDVlNzBmMzQ5NDIzMGRiZDAxNzFjNzVhMzYwODM5ZTY5Nzc5NTMgcmVsZWFzZTMwLW1haW50Cis2ODkwMiA1NzhkZDc4ZmI1NTczNTJkYTg5ODQyODI0Y2Y5YWExNmYzMjQ1YWE0IHJlbGVhc2UzMC1tYWludAorNjg5MDMgNmQ1NTE3OTc1ZmQyNDU3MzRhZTVmMmZmOTk1ZTM5NzM5ZWEzOTk4YSBsZWdhY3ktdHJ1bmsKKzY4OTA0IDg0M2MxNzg2OGI1MmI0ZjQ4ZWFmZTQ4NTZiOGEzYTdlMDQyNWZhZTcgcmVsZWFzZTMwLW1haW50Cis2ODkwNiA4NjNjZTZjMDM2MTc5ZjRjNzRmYTlmNzBiY2I4ZTcxODU2NWI5MGEyIGxlZ2FjeS10cnVuaworNjg5MDcgMDEzOTY0ODUyNmQ5YThmY2Y3YzEzODMwOGM3YjBlMjQzMDBiZWY0NSByZWxlYXNlMjYtbWFpbnQKKzY4OTA4IDlhNDVlMmNhZDZhMWYzZjFiNGZlMzIwYmQ1ODlkYmIzYThmMmUzNzcgcHkzaworNjg5MDkgZjdmM2Q4NDFkYTJjNmMxZmE2ZTAwMTdkNTkyNTcyMDZjYmY1MDk2NCByZWxlYXNlMzAtbWFpbnQKKzY4OTE1IGY1YmU2Y2FlYWQwM2Q4OTBjYjUxYmRkZjlkMjJhYWMyNDNlNmRlMGQgbGVnYWN5LXRydW5rCis2ODkxNiA0ZThmMjhiM2VhMGE4ZWZhMDM1NzMwNzNlMDc0ZGM1ODVhNTM4MTA2IHB5M2sKKzY4OTE4IGVhNTc2N2ViZDkwMzJhZDhhOGJiNDhhZTkxNThkOTgwMDU3ZWViMDYgcHkzaworNjg5MTkgYzI2ZjFhZjI2YmZjMjJhZjlhMDk1MzNiOWU5MWNiOTMzZWZkZjcxZiBweTNrCis2ODkyMCBjNGM0ZTRiMWRjMWFlNjMxZWY5ODU5MWE4ZjIxNTJjMDU1MGI1Y2YwIGxlZ2FjeS10cnVuaworNjg5MjEgOTljMTBkNjQ3ZjMyNmY2MzYxOGIyZDhjOTFlMTljZmJhN2M5MTE2MCByZWxlYXNlMjYtbWFpbnQKKzY4OTIyIGZkOGFmNDZkMzYxNTQzYzc0ZjU2NzU4ZWY2ZDAxMmRlYTMyYzY0NTMgcHkzaworNjg5MjMgMmM3ZDM1Njk4ODJkZTM1Y2VlYTM1ZGFhOTZlYjA4NGE5YTMyNWExMiByZWxlYXNlMzAtbWFpbnQKKzY4OTI0IGQ4NmUyMzMxOGI0MTVkZmFkZDNiMjEzY2M4OTY5NTI4Nzc4OWFlZTggcHkzaworNjg5MjUgNTUxMjU3YzgwNThhZjAzYTc0NmIwYzA1MWY3NDliMzE4MzU1MzZiMyBsZWdhY3ktdHJ1bmsKKzY4OTI2IGUzY2VlYjdlYjkwMTBlZTdmZGRlNGExMzU5NGFiZTlkMmVlODkwMDEgcHkzaworNjg5MjcgMjFjZjk2Y2MyMjE2M2E5NTY5MzhjNjEwNmNiODVlYmJkNDM2M2E2MyBsZWdhY3ktdHJ1bmsKKzY4OTI4IDI4MTlhNDcwNmM4MTEyZjRiYTZjNjJhN2UzNzMxMzFmYTkyZGFhOGIgcHkzaworNjg5MjkgN2Q1ZmE1MjM0MWUyMzIzMDBjYjdiOTMwODU3YjA5OTcyZTI1ZjkwYSBsZWdhY3ktdHJ1bmsKKzY4OTMwIDc1ZDBmNjE4ZTFkZWM1YWY4ZGQ4ODJkOTdmYWI3NzkzYTJhYTg0OGMgcmVsZWFzZTI2LW1haW50Cis2ODkzMSA1MGY0MGYyYzM3ZGRhNTdmNGMzODRhMWI4YmRlMDk2YTlhYmUwOGQ1IHB5M2sKKzY4OTMyIGNjODEzMGFmYjAzOTEyMmI5NDEzNTExMzRkNDRjODdkNjFhMzI1ZjMgcmVsZWFzZTMwLW1haW50Cis2ODkzMyA3YTU3NTllODU2Mzk0ZmQ0NzNiZGY5YzVhODQwZjVjNzMxODIyODM4IGxlZ2FjeS10cnVuaworNjg5MzQgNDcxYmUyYzY0NTdlZWEzNTI1MjgwOGI5MTI4NTYxYTFkMmRjNDYxOSByZWxlYXNlMjYtbWFpbnQKKzY4OTM1IDAxMTMyMTk1ZjU2MjUxNThlNzhmMjZhMWM3N2FmYjkxZGIxYjM4YmYgcHkzaworNjg5MzYgMzM2OWE1YWNhZjc5ODM2NWFmNGM3ODExODU3NjFhNDU1MTk1ZWZhMiByZWxlYXNlMzAtbWFpbnQKKzY4OTM3IGM5ZmVhMzViODczZWExYTc4MzYyM2MxZWM2MzljYThhMWRiNjAzMGUgcHkzaworNjg5MzggMTBmNGExNjA0Mzg4OTFjZmQwZTUzZmQ1Y2FlMzY1OTc3NzE4MjljZSBweTNrLWlzc3VlMTcxNworNjg5NDAgZTBkOWM2NTlmN2E2YzBlMjc4OTEzNjRiOWQwZjM3MTRlOTNkMmI1NSBweTNrLWlzc3VlMTcxNworNjg5NDEgMTRhY2UyMDU0NDdiYmUyMzhlYWQ2NDU4YTMzMDE4YWZlZjg0ZWNiMiBsZWdhY3ktdHJ1bmsKKzY4OTQyIGU0NzA1ZmY2MjZmMDhiNDk0ZGQ4MmMwZjcxNGVmODg1OGI1Y2E4MDQgbGVnYWN5LXRydW5rCis2ODk0MyBhNTIyOTIzN2ViNTBjYmYzNjhmOTAwNjJmOTA3ZjY3ZTU4ZWNmZjRkIGxlZ2FjeS10cnVuaworNjg5NDUgNGU4MmZiMWFlYjAyMjJhMGY4YzQ4MGM1MmY4ODg5ODc5MjI3NDgxMyBsZWdhY3ktdHJ1bmsKKzY4OTQ2IDZhOTFiM2FkY2FkNmU2MDcyYTQxN2FhMDBlNzJjOTQ3Nzg0NjA3YjIgcmVsZWFzZTI2LW1haW50Cis2ODk0NyBjODUxZWQwY2Y2NWZiYzZlYjM4ZWRhMjA5NWRjOGNmODczOWMwNDFlIGxlZ2FjeS10cnVuaworNjg5NDggMDk2YjQ4ODQzOGU5MjRlYzg5ZTdjMjg0NzVjNDVlMzAyMDJmZmU1ZCByZWxlYXNlMjYtbWFpbnQKKzY4OTQ5IGMxNTVjYjM4Zjc2ZDBlNjgwNTU4ZjhjZDAxMDhjZjdmNTg4ZDY1YmIgcHkzaworNjg5NTAgNDVhNTI3NmU1ZGNjNjVlYmUyZDdkNmQzNDhjYzJlZjg5OWVmNDU2MCByZWxlYXNlMzAtbWFpbnQKKzY4OTUxIDIxZmIxMDE0Mjk0Y2M2N2UyNjczY2FkYWRjNmI2Y2JmNmIwOTIzODUgbGVnYWN5LXRydW5rCis2ODk1MyBiNGFjZTJiNmMyOGYwZjQyMTUxMjhjNzZmNWFiOTcxNDVjYTEwZDNiIGxlZ2FjeS10cnVuaworNjg5NTQgZmI5ZDJkMmE0MzU5NTY3MjBiNjc4MGRkNGE5ZGUyNzMxYzM3Y2E5MiBweTNrCis2ODk1NSBkZmFjZWM4YmE2ZGI0ZTk2MTIyNDhlZDhlZmVmNzg3Njk1ZGNhZTY1IHJlbGVhc2UyNi1tYWludAorNjg5NTYgYjk0ZTllZDM1NTljMjczNDEzM2RkOGMwZjE0OGQyMzVhYmMxNmFjMiBweTNrCis2ODk1NyBjNGQzMWY5Nzk5MGU5NWMyOTAwOGQ1NThiNjViMGU1NDYwNDc5YzA5IHB5M2sKKzY4OTU4IDA0YTMzYzQ3YWJiNWYxMTc3M2IwYjkwZTkzODIyZWIxNWU3NjkyMmYgcmVsZWFzZTI2LW1haW50Cis2ODk1OSA1MjAzNzk0YzdlYTIxNDcyZGY2Y2RmMTE2ZDkxMThkNTViNTgwNGFlIHJlbGVhc2UzMC1tYWludAorNjg5NjAgMzVjNjkzN2MwMTI3NWMxZTAyMjZhZjZmOGFjNmNlZmYwYjdjNDFmYSBweTNrCis2ODk2MSBhZDFkYjBhZTk4YzZhODc5YTllYjhhYTNhZWI1MDY4MzcxMzFhMTdhIHB5M2sKKzY4OTYyIDFjNTBhMTdjMGYyMWM5NjI3OTE1YjE2NTkzZDIyNDcyYTk5ZGIxYTYgcmVsZWFzZTMwLW1haW50Cis2ODk2MyA2OTYwNTIzZmFkYzFlNGJmYjQ0YTY2NzdhZDNkMGViYWExYThmMTNlIHB5M2sKKzY4OTY0IGQ1MTMwMjRmNTE3NzViYWE1ZTgwMjg3OGE5M2MwMzY1MDg4ZjI4N2QgbGVnYWN5LXRydW5rCis2ODk2NSBiODg1MDYwNmQ5MjFhMGFlODM4OWRkNzYxYTBhZWY2MzM4MDMwNzIxIHB5M2sKKzY4OTY2IDAyZTFjNWNlNmE2OWY5NmVjMTgxM2RmMDJjYjBjZDUxMmFkYTVjY2EgcmVsZWFzZTMwLW1haW50Cis2ODk2NyAzNmZiYWY3NTM4Y2VjMjViZGE4MGMzOGUwNzE2YTM4MmYyNmZhMDAyIHJlbGVhc2UyNi1tYWludAorNjg5NjggZDQyMzc0ZDBhYTU4NGJhOWZhOTQwNjhjNTRlZmQ0MjIyNzM4Y2I4ZSByZWxlYXNlMjYtbWFpbnQKKzY4OTY5IGQzNjJkYTk4ZDBkZTg1NmE2NGEwNmJmY2MxYmY3MGFmNmMxNzJhYzAgcHkzaworNjg5NzAgYjA0ODk2Y2FhMjliZTliYmVlYjg3NDAzYTIwMDk2Y2M5MTkzNTRlMSByZWxlYXNlMzAtbWFpbnQKKzY4OTczIGM5NGEyMzdiZjQ5NzAwMGM3OWYzMWM4OTAxYWYxMzQ0NzkwMDA5N2QgbGVnYWN5LXRydW5rCis2ODk3NCAyMDA4MjkyNTVhNmE3ZmE3YWI1MmQwMzdlMjQ3MThiNmRjZGM3MWFiIGxlZ2FjeS10cnVuaworNjg5NzUgMmVhNzVmNjBkOWU1ZDFkYTRlYTk3YzA3NTdhZDI0ZWJkMWMyY2QyNiBsZWdhY3ktdHJ1bmsKKzY4OTc2IGNhOGVhNTJiNDVjMzM4YWZlNzg5ZGUwNTIyODkxNDExZTg3YjQzNjQgcmVsZWFzZTI2LW1haW50Cis2ODk3NyA5OGYyMjNlY2U4ZjI3Mjk3MGY1OTlhZjU1OGIxNjM2OGE5ZTVhNTlkIHB5M2sKKzY4OTc4IDA2ODdkNDQ3ZGU2MWZmOGRhYzk2Yjk2NWY2YjRjNmM3MWZiMzQwZjQgbGVnYWN5LXRydW5rCis2ODk3OSBlMTk4ODA3YzU1ODY3YjI3NDRkY2I2Y2UzMWE4ZjYzZmQzNGE4YTMxIHJlbGVhc2UyNi1tYWludAorNjg5ODAgODU3ZGY2YzA5ZTEyZjljYzE1NThhOGYzN2IzYmNkNjk0MjBlNmEzMCBweTNrCis2ODk4MSA5NGMyZGM1ZjQ0NmQ2NzZhY2VlNTRmOWYzMThlZDdiZGQ2YmY1YTljIHB5M2sKKzY4OTgyIDE0YzNhYjliZDcwNjFmNjEwYzIwYmI4ZDRkYzEyOTMwNTdhMWQxODIgcmVsZWFzZTMwLW1haW50Cis2ODk4MyBjMjNlNDBkMWFiYmM4ZDkxZWM0NmExYTRiOGY5YzQ3ZjI5Njk4MzRmIHJlbGVhc2UzMC1tYWludAorNjg5ODQgODAyNTA2NjQ1NjY2NGRkYzQ5OWM4ZDY4ZGJhOWQyZjQzMTBlYWJjNyByZWxlYXNlMjYtbWFpbnQKKzY4OTg1IDJjYjBjNTJkNzc5ZmMyM2JlMGZjMmJhZGY0MjljNjdmZDUzYzlhMDkgbGVnYWN5LXRydW5rCis2ODk4NiBmNTcyOTE3MTgzZmEyZWNjMmFmNGU3NzdhMjZlOTFjZmU1OTVmYzJhIHB5M2sKKzY4OTg3IGYxMzhmYmUyOTQ1ZTU1ODliMGEyZDQyZGY4MjUwNzUxNWZkZTIzMjEgcmVsZWFzZTMwLW1haW50Cis2ODk5MSBmMDg1YWFhNDZkODc0OGZkNThkZWVkMDc2Y2JkOTMwNzA1ZTFlMTYzIHB5M2sKKzY4OTkyIGZmZTczMmRhZGIwZDhkOTg0MWQ4OTdiOWM3MmExZTA3YTNlMjU5YmIgcHkzaworNjg5OTMgMjU5ZmE4ZjY0YTk3ZTYyNDQ3ZDZlODE4MzRlOWY1MWNhYzJiMzA5ZSBweTNrCis2ODk5NSA0NDUxMjMxMWYyYmM4MjAwNzBiODA1ZDYyZDQ0YjgwOWUxMmQ4YTdhIHB5M2sKKzY4OTk2IDk2ZDI5NmM3OGZiYTg2NmFhOWY2OGU3NzdlZjY4ZDJkNzhhNmIzN2QgcHkzaworNjg5OTcgNTY3OWJiOWI1MTkwYzkxYWMxYWIxMjgxZDFiNTQ0MGMxOTExNmZlNiBweTNrCis2ODk5OCA2YzBiYjU0OGE5NDZjN2I3ZTk1ZWJiNzhjMWQ1YTgyNmY3NTBiNDQ3IGxlZ2FjeS10cnVuaworNjg5OTkgNzcyMGUzNjNjMWM4Y2VkNzc4ZjAzZjZkMzYyMGY3M2MzNjFmMDM5NCBweTNrCis2OTAwMCA4NGQ2NDhjZGRjMzM0NjBhZDdlMmI2MjIwMzI5MTdhYzBiNGNkMjAxIHB5M2sKKzY5MDAxIGI3Y2U2NzVmZWJiOTAzY2FhYTBhMDU3OGQ5OWUyNDMxN2QxY2FmNDMgbGVnYWN5LXRydW5rCis2OTAwMiBmMTFhNDEwOTU3MjZmOTkzNWFkZTQ3NzljOWE5NDA3ZmZlOGUwYjZlIHB5M2sKKzY5MDAzIDMzMjkxZTFlODdlYzc0M2Y4NWJiN2ExZjU2YWUxNDI0ZjE4ZjI2OWQgbGVnYWN5LXRydW5rCis2OTAwNCA0MDA1MDExZDNhMDllY2E5OWUxMTI4NTE5MTEyMmVjYzU1ZjEyNWFiIHB5M2sKKzY5MDA1IDdlODMzY2RlYjI0MTc0NTg2YTUxZDA5ZDE3MzAwZDg2NDhhMjRhODIgcHkzaworNjkwMDYgNGI4N2YzMTk3OGI3ZTIxNzZjNjhkYjY4ZDk1ZWMwNWNlNDdhMDkyOSByZWxlYXNlMzAtbWFpbnQKKzY5MDA3IDQ4YjcwMzdmZjIwZTg1YjY4OGUwYmI3NDVhN2UwYjkwZGRkNGU0MjkgcHkzaworNjkwMDggN2YwZTRlNDI3ZWEzZDcwYWU4ZGFkNGNmZDc4NjU1ZjdjYjUyMzUxMCByZWxlYXNlMzAtbWFpbnQKKzY5MDA5IDk4YTg1NWM5N2ZmMjE0ZmFhYmEwY2NjMzAyODk0ODZhMzg0MjcwN2IgcmVsZWFzZTI2LW1haW50Cis2OTAxMCBkMTcwZmRmNGJkZmI0NTIyYTY0NDMzZDM4Zjk5ZTQ4NDY1NGIxMmUyIGxlZ2FjeS10cnVuaworNjkwMTEgMTQ2MzFjNjI3ZTAzNzQyZDhlOWQ4MWU2MjE3NjA4YmVmMTc4MjJjOCBweTNrCis2OTAxMiAzZTRjODcyZDAyNDY3YTU3MTZhNWZiNGQyYmQ5Yjk3NmRiZTkwMTFlIGxlZ2FjeS10cnVuaworNjkwMTMgMzQwMjdlOGQwNDRmMDNjODg5YWNkOThkOTM1OWM4OGYyNGQzM2E3NyBweTNrCis2OTAxNCBhMjg3NjVmZDMyZjAwYTU4N2Y4MmE2YmJjNWRiYTUwYWIwYTc5Nzk1IGxlZ2FjeS10cnVuaworNjkwMTUgN2VkOWNjYzBiNTE5N2U3MzFiODk4MzBkNTRlMjAwYTczMjJhZDEzNSBweTNrCis2OTAxNiA4Y2QzY2VkMWVkMjk5OWRlNjBjOWM5NjczYThkMWQwOWM3YzI3NzU0IHJlbGVhc2UzMC1tYWludAorNjkwMTcgZTcxOGQyOTg3NGQ3NWM3ZjY1N2E2ODZjOWY3ZjkyYzkzNzhiZWFiZSByZWxlYXNlMjYtbWFpbnQKKzY5MDE4IDIyNTRjZDMyMDBmMDYwMmRhMWY2NzZhYTQ2ZDQ5ODljYmMzYzliM2UgbGVnYWN5LXRydW5rCis2OTAxOSA1MzI0NGM0ZWVmMjIzZTFlZTkxMmQ1MGZjYjZmNDM2OTE5ZDM4YzgxIHB5M2sKKzY5MDIwIDU0N2I3YTE3YzM3OTllNzcyMDVlMTEzOWMyMGM0MDJkMDY1Mjc4N2QgcHkzaworNjkwMjEgYTZiMDI1MjNiOTAzNWY1Y2MxNDkwNmRjZjVkNGVkNDRiYTE1OWEwYyByZWxlYXNlMzAtbWFpbnQKKzY5MDIyIDFiMzIwZmZjMGRiOGNhZTgzMDg4Yjk5NTRmM2Y3NjQ2MmI5Yzc4NjUgcHkzaworNjkwMjMgOWE0ZmRiY2YyZDlmMmFjNzViYmE4ZDRkOTkzMDdkM2QzZjM4ODY5ZCBsZWdhY3ktdHJ1bmsKKzY5MDI0IGZjNTEwMjZhYmRlNmM2ZDY1YWVjMDVhN2Y4ZGE4ZTc5ZTA3NmNkMzUgcHkzaworNjkwMjUgNzRhYTQzZGQ4NzVkZDllNWQ3OThjNDYwZDRiNGE0OGMwZjU1MTE5NSBweTNrCis2OTAyNiBhZGJkNzdhOTBiZGViNWFjMWRjYTNkMDA3YzhkZmQ1NDg2ZTk3Njk3IHJlbGVhc2UzMC1tYWludAorNjkwMzEgYzVhNTJhZWMyZGRmOTFlMTNlMGU3ZjMwOTEwMmYyOWUxZDBiMzBmNSBweTNrLWlzc3VlMTcxNworNjkwMzIgYjZkZTY5MTJmZTE0NmJhNmJlZDIwNThkZjU2ZWM1NThmOTBlYWM2YSBweTNrCis2OTAzMyBkMmMwNjdmOWY5OGI5NWQyMTljZjQ0ODBmY2U1MzNhNzA1Y2M1MGFkIHJlbGVhc2UzMC1tYWludAorNjkwMzQgNWZlYjk3NmIxOGFhYzhjZTkxZjZlYmFhOTAxNDM5NjRmOTQwMTkwYyBweTNrLWlzc3VlMTcxNworNjkwMzUgYmVhNmI3YTBiOWEyMmY4OTUxOTRkMjYzODRhNDY3NmNkMjlmOTQ4OSBweTNrCis2OTAzNiAyYTZlMGJjNGJjMDMxOWFmYTRlNjg3MWE1MTk0YmRjYmU1M2RmMzdmIGlvLWMKKzY5MDM3IDIzMWM0ZTQ5MGIxZjU5Zjc0ZGE1ZTkzODRhOGMwYWY0ZTFlNGIyNmIgaW8tYworNjkwMzggNjJjYTgxZGQyYWU4ODcyOTZkZWM1NzEzYWQzZTBjNTAxZjM3YjQ1NSBsZWdhY3ktdHJ1bmsKKzY5MDM5IGI2NzQ3MDZmM2IxMGVkZTJjNmU1NDJkNDQyOTJhZDhjZWQ5ODgwYTUgbGVnYWN5LXRydW5rCis2OTA0MCAxNDM0ZDFiYzY2N2Y3MjgyOTZkNjYzNzVhMmUxNzU2ZjEwNDFiNTdmIHJlbGVhc2UyNi1tYWludAorNjkwNDEgYWIxMTQ2NTUxMjU1MjMxYWFhODc2Yzg0NmFhZGZlZmUzODJiMmVjNiBweTNrCis2OTA0MyAwNTIyY2ZlZTg3OWExMWQzM2Q0YzFkOWYwZjAzYjI3MTQ4NDkyZWVkIHJlbGVhc2UzMC1tYWludAorNjkwNDQgODQwMDI4MjI2ZWQ1M2ViNmYzYjU0ZTRmZDFiNTBkODA5MGI3NWM1ZSBpby1jCis2OTA0NSAwNGNhNTdiYjcxMDgzOTM5Mzk0ZDMzMGQzMzhjNjUxYjBmMmZiMDU4IHB5M2staXNzdWUxNzE3Cis2OTA0NiA0YWI1MDhhNWNkN2VkMGEzNTIxODM1Njk2ZmYyYjU5NjMwNWI2YjAwIHB5M2staXNzdWUxNzE3Cis2OTA1MCBjMTAxZjc4YWVkOGI1MWIzODUyNGE4OGY3NDljM2U4ODIzN2FiYjNkIGxlZ2FjeS10cnVuaworNjkwNTEgYzkwOTNkNDE1OTBlZWEyMjQzYzliMGVjOTQzMjU4YmRmNDg4OWY0OCBweTNrCis2OTA1MyBmMDZkOTAwMjcyOTk0ODY0YjI1ZmE1NzdiMzc2ODczZGNkYzEyMjQzIGxlZ2FjeS10cnVuaworNjkwNTUgZDY5MDEyOWQ3ZGFjMjU1NjJlOWNkZWY5ZDVmYTkwODE2ZWEzNWYxYiBweTNrCis2OTA1NiBmZDRiZWJmOWRkZGVlN2FjOTc3NzdlYWU3ODFmODBkYWQ5YmNjZDg4IHJlbGVhc2UyNi1tYWludAorNjkwNTcgMzk3NTcyNWE4NWI1MTg0YWI3MjU1ZmVmN2IzZDFjZmE4MmU3ZGIzYSByZWxlYXNlMzAtbWFpbnQKKzY5MDU4IDhkNjAzZTQ5Mzg0NmY4N2IwYWMwMjY2MWM3MjJlZjRhYjdjYThlYTIgcHkzay1pc3N1ZTE3MTcKKzY5MDU5IGJmZjk5YTgxODI0YTcwOTY0ZDJkMWVkMjc0YTkyNWFiZGQ4MWNhZWQgcHkzay1pc3N1ZTE3MTcKKzY5MDYwIGNhNGRiZTRhZTYyOWY0MzE0MjU5Y2U4OGM0MThjMDlhODUxZDcyYjMgbGVnYWN5LXRydW5rCis2OTA2MSA5NDYzNDBmYjExNGI1MzBmMzRlMWU0ZGY4NDFhMTI5OGE4MzM4MjExIGxlZ2FjeS10cnVuaworNjkwNjIgMTg4NGQwODhlMGFjY2VjZjhiMTNiYTM4Mzc1Yjk5MWU2ZjQ0NzlkMiBsZWdhY3ktdHJ1bmsKKzY5MDYzIDBhOGE3YzQ1N2YxYmJmOWJlYzk2Yjk5ODhkY2NiMTBjZDgwNTBjMjQgbGVnYWN5LXRydW5rCis2OTA2NCA1ZmM2MDdiNmU0MmQ3Yjc5YTc2ZjM3ZTE3OWM2MWY0MDk2MjI3OTA3IHB5M2sKKzY5MDY1IDczYmEwZjRkYjBkNTkxMGRjZjIyODYxZGZhMDExYjc3Y2NiNGM2Y2UgcmVsZWFzZTMwLW1haW50Cis2OTA2NiBkOGM1MjJkNjAwZTRlM2U0OTYwNmE2MTQ2MmE4OTUyOTA1MzdiMWNlIHJlbGVhc2UyNi1tYWludAorNjkwNjcgNDQ0N2JjMWY1YTUxMjE0ZjYwZjY4OTYzYTllOWY4OWNlOGFjN2U1YSByZWxlYXNlMzAtbWFpbnQKKzY5MDY4IDk3NDJlOGE0ZGNhMWYwY2MzOWI2NTA4MzAzOWQxNWE0MjE1YTM5MGIgcHkzaworNjkwNjkgOWMxZjA2YjI3M2Y3MmM1NjIzZTkxZjA5NDE3ZjFlMmNlMGQ5YmQ1MyByZWxlYXNlMzAtbWFpbnQKKzY5MDcwIDk0NDA0NjgwODM1OTNjNTIyZGI5ODRlOTlhZDJmZjEwOTQ4NGMwZjEgbGVnYWN5LXRydW5rCis2OTA3MSA5YzVhZWY5ZjFmYTcyN2U3OWEyYmIyMjU0NGE2NGNkMDAwYzQ3NjI2IHJlbGVhc2UyNi1tYWludAorNjkwNzIgZjBhMWJmMjQ5MDEwNWVkZDg4NjVhYjNhZWQxNDU1ODgwMzdlOWE3YiBweTNrCis2OTA3MyAwMWI5YzVkOTllYmUyMzQ0MjFkNmRhMDA2ODFkZmJmMDZlMDFiNDg0IHJlbGVhc2UzMC1tYWludAorNjkwNzQgNTE5YjIxZjg5MWViZDVhYThiOTliZDI2YjAxZDE2NzY4MzM4ZGM4OSBsZWdhY3ktdHJ1bmsKKzY5MDc1IGJiNjM5MTU4Mjk2ZTc2NTYyNmEyODFjNWViMzc5MDY2NDIzMzc1ZTcgcHkzaworNjkwNzYgZDg3N2RiZmQ0YmY5MzllMTI5NTZlZmNjODAwNDI5MjBjNGQ1ZWQ3YSByZWxlYXNlMjYtbWFpbnQKKzY5MDc3IGJlZGM2ODQ2ODQ0ZGJmMGY1OTE0YTQ0Mjg1YzliZmE3ZTY1NDYzY2MgcmVsZWFzZTMwLW1haW50Cis2OTA3OCAyMzg0YzA0ZWRiYjYwYmI2Y2RkMjllNzM3NDMxYWM5ZjMyNmJiMGU5IGxlZ2FjeS10cnVuaworNjkwNzkgYTMzMDQxOTBkOGFhYWE5MTUwODdjYzViNGZjYTY5MWEyNTcyNmU2OCBsZWdhY3ktdHJ1bmsKKzY5MDgwIDlhOWQyNmU4NDJiMzMxNWE2N2IxNzczNjEyYjYwZDM5YzE0NDkwNGIgbGVnYWN5LXRydW5rCis2OTA4MSAzMjI4OTI5ZWNiNmQ4NDgzMzc5ZDI5ZjZkMGQyMjY5ZTQ3YzdjMDI3IHB5M2sKKzY5MDgyIGQ2NmUxYWJiM2E5OGNmZDZjN2JiODYwNTk0NjU5N2ZiMjNhN2JkOGIgcHkzaworNjkwODMgN2FkOTk2ZWUzMzM0MWRmMDY4MWYzNDk5MDNlYzAxMzNlNmFiYjA1YSBsZWdhY3ktdHJ1bmsKKzY5MDg0IDcyNWIyMDg3MzBhNTkzNDkxNGY5N2FkNzM5NzAwMGQ0MzY0MTYzNDggcmVsZWFzZTI2LW1haW50Cis2OTA4NSAwN2ZmMjgxYmUwMmM1NTc2YWFjNDBkNjA0NDFmMDI1ZGE3ZjgxMjNkIGxlZ2FjeS10cnVuaworNjkwODYgNGY2MDdjM2FlOGUyZDE3M2YyYWE4M2FiMDgzOTYwMDY0MDFhYjhhNCBweTNrCis2OTA4NyA3Y2IzNTFjOWNmNDAyNDdlMjY5MzcyZTdhYTg5NDEwNTRmNTAxZDkwIGxlZ2FjeS10cnVuaworNjkwODggNGI4OTc2ZWE2OTY2MGE4YjI0NDQ1ZTc3NTBkNTQwZTc5NjdmODA4NiBweTNrCis2OTA4OSA5ZWI4NGZjNDM2ZmMxYjNhNWE0YzZhYmJiNDNlMGY2Y2YwMzRmOGJkIHB5M2sKKzY5MDkwIDRhYmNmOWQxYjkzODBmYmEwMTZlODhhNDkwNDhkOGE3NjRlNmNkMGQgcmVsZWFzZTI2LW1haW50Cis2OTA5MSAxNGU1YjZlODM2ODAwZjgyYTk5NzdlNDExZWIxZjA1OGQ3Y2UwYWE0IHJlbGVhc2UzMC1tYWludAorNjkwOTIgMGI2NjdlMzkzZWIzNDg3MDFmYmMxYWFmNjEwNzU1NzI1ZjRiOTZjYSBweTNrCis2OTA5MyA5NjkzNDZkYmYzMWUyMDRjNjE2ZGY2Y2YwNzYwZGY2MjBiNjhiNWE0IHJlbGVhc2UzMC1tYWludAorNjkwOTQgZGFhZThjMzI0YmUxYjkxOTEzZjU0Y2ZkY2FlNjk3YzQ1M2VlZTI3MiBsZWdhY3ktdHJ1bmsKKzY5MDk1IGQxNjI5YTk1OWNiODUwNDY5ZjZiY2QxY2RjM2M5YmEzM2E2NWE2NmUgcmVsZWFzZTI2LW1haW50Cis2OTA5NiA0NjNmNmMxMmYxZDRjMjUxMTNmNjBlM2I3MDljOWRmMzgxODM1Mjc0IHB5M2sKKzY5MDk3IGQ4NTcxNDU3NGM4YTUwMzViMGQ5NDBiNGVjNjU4OTRhZTc3NWRiMmIgcmVsZWFzZTMwLW1haW50Cis2OTA5OCBiY2I2YWQxY2I1NWRmYTMyYTQyNDJkNmUzOGM5YWM1Y2RlYzJmMWVjIHB5M2sKKzY5MDk5IGFmOTRlZjM4YjVjMGYyN2JjZTk1ZDA5MTA0NTQ4NTgwNjYwMzhmNWQgcmVsZWFzZTMwLW1haW50Cis2OTEwMCAzYzI5MGJjMjFkMmMzZGFiOTVmY2E2YTk5Y2U3OWRjZDJmMDQzNDc4IGxlZ2FjeS10cnVuaworNjkxMDEgZTQ4YzU5MTRkYTgxOGZjOTExNzY3YWU3YmE2NGRiODFhOTZhMzQxNiBweTNrCis2OTEwMiBlMmRjYWQ1NmU0MGUwMzE3NDllN2QzODAwOGQ3YmM3Y2M1Mjk2YTAxIHJlbGVhc2UyNi1tYWludAorNjkxMDMgNWQwZWFlYjQxMzRkN2VjOWQzNzg3YmJhM2U5MjdkM2Q4OGVjNjZjMyByZWxlYXNlMzAtbWFpbnQKKzY5MTA0IDRhNGE3NDM3YzVlMWNmNjZhZDRmZjI1NjZlZTg1ODcxM2Y3YzMzOTQgaW8tYworNjkxMDUgOTFlZDNlY2UwYzc2YTJiMjQ1YjA3NGNmNjFmYmM2NWQ1ODZhNzhiOSBweTNrCis2OTEwNiBmYzU4NmIzODE5ODczZTYzZjk3NWYzYTYyMmI1NDNkZDQyYmYzMTk3IGxlZ2FjeS10cnVuaworNjkxMDcgYzI2MjhiZmU2YTY4NDhmMjg3ZTFjOTJjNjQyYTY4NjcxM2ZmMWE2ZCByZWxlYXNlMjYtbWFpbnQKKzY5MTA4IGMzNzhjNGY0YTc5NjllMWZkMDU1OTc3YWY5Y2MzYjc4N2E0MTdkNGIgcHkzaworNjkxMDkgMjBmNGFmY2QzYjI3ZWU2MzAwYzhmZjkxOTIwYzBkZTJiNjBmMWIyYyByZWxlYXNlMzAtbWFpbnQKKzY5MTEwIGI4OGQzNzcwMTFmNTBkYTlkMzRiOTg3Y2Y0MzZmZDc0OTliNWJkNGQgcHkzaworNjkxMTEgYjQ4YjVkZGFkYTg5NDhlOGM5NTMyNTk2Yzg3ZTBiZmNiNWJhOGMyMCBweTNrCis2OTExMiA2YTI4OTZkOTIzZTNhMmMyNmI5MjZlOTNjODI2MDY1NjYzZjllOTJjIGxlZ2FjeS10cnVuaworNjkxMTMgNGFiMzgxYWVhNjU4MDIwYmYyZDQ2YzQ1NGYyYTdiODUzNjY3N2VkZSBsZWdhY3ktdHJ1bmsKKzY5MTE0IGUyMjcwNTRkNDk2ZGZlODRlYzc0M2IxYmU5ZTJhYjg5OTZhMDI3MGQgcHkzaworNjkxMTUgYTAzOGU4ZmI2N2MyMTBlY2UxOGNhYmE2NzIzYjc4N2IzMTQwZjI4YyBpby1jCis2OTExNiA3Yjc5Njg4NjI2ZTRlZjBkYmM5MWQ2MmNhZTQyNmRhNjVkNThjZmE2IHB5M2sKKzY5MTE3IDk4NjdjODQ5NTMwYmJiZjI2N2JjODA5ZmViMzE2M2IwNThjMDExZTcgcHkzaworNjkxMTggOGMyYzcyY2YyYTBjZmI2MmZiMzAzY2E2M2Y1ZWVmYTVjNmZmOTcxZiBweTNrCis2OTExOSA2MTc4NzUzMzM5NWMwZGFhZGFhYWQ1NTdiZWI0ZjIwNzhmZThhYTYxIHJlbGVhc2UzMC1tYWludAorNjkxMjAgZTY3ZGM0ZGI5NjRjODlhNjc2NGQ0ODNiYWE0NzRmNWVkNDQzMzMxZiBweTNrCis2OTEyMSAzYzJiMzVhMTA1OTNiZDY4Y2Y4ZmY3OWRkNmYzMWY1YTcyYTQzZjFlIHJlbGVhc2UzMC1tYWludAorNjkxMjQgMzU5Mzk0YjYzYTIzODhhYzI3YzA5OGNlZWYyZjQ4YmVhMjA2MTUzMiByZWxlYXNlMzAtbWFpbnQKKzY5MTI1IDdmYzBhZDExYjBhZjA3NGIwNTRhMTFjMDZjMzZjZGExYWFjMmM5ODggcHkzay1pc3N1ZTE3MTcKKzY5MTI2IDM3OGJjMThkMjM1MDliYmYxOWM4ZjdhNWI1YWU4MWM4NTI1YWUzYTggcHkzay1pc3N1ZTE3MTcKKzY5MTI3IDIzOTQ0ZjFkNTNmZGZiOWNkMDAwZGJhOGFiNzI2YzNhYzQyZmY4OTIgcHkzay1pc3N1ZTE3MTcKKzY5MTI5IDRjOWVhNjQ3ZWFmNDIxZGU1NzY5MmQwZWYzNjE3ZDNlZTIwOTJkNjggbGVnYWN5LXRydW5rCis2OTEzMCBjNWUyODI4NWI3NGQwMTIzMjFiNTZjN2I3YTNmOWVmYmQzYzZlYzdiIGxlZ2FjeS10cnVuaworNjkxMzEgNzU0MDMxNGZmMjY3YjRkNWVlMDNjZDUzOWYyYTAyZWJkZGMwNjdhNSBsZWdhY3ktdHJ1bmsKKzY5MTMyIDAyYTkwZGMwYzI5YThhZjY1YjBiMmI5MTE2ZTZjNDBiNGJhNjQ2NWEgcHkzaworNjkxMzMgZGYwOTA1OTdhZmFhZjBmNzc4YjVjM2I2MWE3NTFmZDJmNzk1MWZjNyBweTNrCis2OTEzNCBiZTU3MzU0ZGRiMTE0NDYyMzBhY2JiNGIxOWFmZTU3MTI5MWFlNDE1IGxlZ2FjeS10cnVuaworNjkxMzUgZGNmZDQzNjU2N2NlZjk0ODdkZDkwYTU0N2E3ZWJhM2YxZmRhNDY5ZCByZWxlYXNlMjYtbWFpbnQKKzY5MTM2IDQzMTcxZjU1N2FmODBmZWEwYzhlMGEyYTM2OWQxZDdkMGJkODUxMzcgcHkzaworNjkxMzcgYzA2ZmFhODE5NmIzYTA3ZTY2YTcwZjdkOGUyYmUxMDcxODFiMTRlZCByZWxlYXNlMzAtbWFpbnQKKzY5MTM4IDFjMGE1YTk4MjdmYTk3ZjZlMWI5NTFmNjA2MDc1OWY5YzRhYWI5NjQgcHkzaworNjkxMzkgNWY2ZDIyNWUzYzFkYWMwOWFiYjczZWY1ODhlNjM0OGE4ZjQxNDIyNiBsZWdhY3ktdHJ1bmsKKzY5MTQwIDk0MjZlZWI3ZjRlNmE1MWNjZGMwZDBkMzYwZjI4MjhlYjc4ZDk2NTIgbGVnYWN5LXRydW5rCis2OTE0MSA5ZDNjMmNlODZmNDI4ZTIxZmM0ZWIxODNhYTIzOGJlZTI2NzA5Mzc2IGxlZ2FjeS10cnVuaworNjkxNDMgMGNhYTAwMmY1ZjNkMjU4ZTRkNWQ0MmExZDhiNzE4NDNmOWU0NzBjZSBsZWdhY3ktdHJ1bmsKKzY5MTQ2IDEwZGFlZTNhMzYwOTc4YjkzOTM2MGM4MTMxNWU0YjhjZDc2NWY2NjIgbGVnYWN5LXRydW5rCis2OTE0OSBjZDVkYjQzZGJiNjViOTE3MDIxMjAxYjM2OTRiMWE3ZmNmNzQ2MjQzIGxlZ2FjeS10cnVuaworNjkxNTAgMTdkNDAxYWQ2YTIxNTlmZjhjMGE3NGI4ZjY4YWQ2NzlmZGI1ZTI3ZCBweTNrCis2OTE1MSBiYzJkOTRmZDkxMGMwYzgzNTA4OTMxZjdlODRlYTY1ZDEyZGI2OWE2IHB5M2sKKzY5MTUyIDFmMjkyMmJhNWEyYTEwMTg5NWYyOTVhOTMzOTQ0ZTUyNzk4NzMzZWUgcmVsZWFzZTI2LW1haW50Cis2OTE1MyA0YzIwNTgzNTA4MzM4Y2Y5MGE0OTVkNGVjOTFlMzc4MmY0MzRhODk2IHJlbGVhc2UzMC1tYWludAorNjkxNTQgYWEwN2ExMjMxOTRhMGI3ODljNjNjYjQ3Zjc4ODY2YmZjMmFhMTdlMyBsZWdhY3ktdHJ1bmsKKzY5MTU1IDczOTgxYmNkYTVhMmJiY2FhNThhZjRiNGRiNzAwZWY1ZGM4NTY1MzEgbGVnYWN5LXRydW5rCis2OTE1NiBlYjI2MDdhNjUxNmU2N2JjYTQ1MDhhMmRhZWQ2MzgxZjdiNjcxMjVkIGxlZ2FjeS10cnVuaworNjkxNTcgYmM5MmQ4M2U1NTA4Mjg3N2RmZmU1MjAyMzg2NDJhMmRlNDViMmJiMCBsZWdhY3ktdHJ1bmsKKzY5MTU4IDg2NzJiMGY2NTc1ZDNiMWNjNmFlY2YxMDM4Yjg5OTljNzNlNjY0MTYgbGVnYWN5LXRydW5rCis2OTE1OSA5YTI0NGFmYTFhOWExODJmNGE4N2Q5NTdiNDA4M2ZkZDcyNzk1MTc5IGxlZ2FjeS10cnVuaworNjkxNjAgYjQ3Nzk1OGRmOTc4ZWQxYWNjZDQxZWMyMTNiNjJkNjExOTVlN2E0MyByZWxlYXNlMjYtbWFpbnQKKzY5MTYxIGZlYjk5MzQzMDdiOWI3ODk1ZWJmNDFhNDI3ZjA2NDVkYmYyZjc4NGQgbGVnYWN5LXRydW5rCis2OTE2MiAxNDg0MjE3MmIxNTIyZjliYTBiZmQ0ZGE1MWEyOTBiYTM3NzUzN2VlIHJlbGVhc2UyNi1tYWludAorNjkxNjMgYjhjZTk3OWNkZGNlMjA2YzcxYzA2ODdmNDdlZDc3MmFjMjU3MTAzNSByZWxlYXNlMzAtbWFpbnQKKzY5MTY0IDM5NTRjOWI5MGI1MjdhMTEwMmVkZTdlNmU4M2M1ZmFjNWU2MjU4MjMgcHkzaworNjkxNjUgMDZiYmNiNzkyZjA0ZTBhMzRkNzI1NDFiYTUyN2IwMjIyMmMzZmVkNyBweTNrCis2OTE2NiA4ZDNmN2RkOWI2Y2NlMDUzZGJlYTAwNmRjYTA4NDQzZjcxMTEyNGE3IHB5M2sKKzY5MTY3IDUwYmQyYzE4ZWZmMDY1Mjk1YzA5YjhkNDQ5OWRjNTVlZGE2ODc4YTQgcHkzaworNjkxNjggODE1NTg5ZDYyYTlhZTIwMWE5MDQ1NGRjNjhiMTI5MTU0NjgzMDI5ZiBweTNrCis2OTE2OSBkMjZkOTc4ZDAwNjY0ODY4YzBjY2I4ZmU5NmVjMDU0MzgxYzA0NmQ0IGxlZ2FjeS10cnVuaworNjkxNzAgNGIzMjQ2YzgzZTNmMmNjYWM3NDE1NjFjYmE1YTQ3ZGYyMmQ5ZGY2MCBweTNrCis2OTE3MSA0MjdmNGE3NGY1MzhhYmY0NjczMWNkODVlOGFkZDlmZWZkNGQyNzRiIHB5M2sKKzY5MTcyIGQ4NWVmMjZlZmQxMDM3NmJiMjEzNWUxZTE4YTdjZjA2YmRmMGY3MmQgcHkzaworNjkxNzMgMTM0ZmJjZTExMWU5YjljMmQ4MWVlMDQ4ZDg4YTMxOWY4Mjg1OWEwZCBweTNrCis2OTE3NCBkZWVkZGRjN2UwYjRkOTFlM2U5ZDYxMTU4YmUyOTA5NDg0NTJlODMwIHB5M2sKKzY5MTc2IDM4NmViNGI1Y2JiM2FjNjFmYjVlOGI3MDdjM2RlZmU2MWRmNzVlYzMgcHkzaworNjkxNzcgZmJiMTdjYWI1NzE2ZTM5MzdkMzUwZmQ0NzJiNjc0MjFiOTMwYzRhZiBweTNrCis2OTE3OCA2YmNmODRkNjM3OTc1MmJlODZkMWY5YjM0OTkzOGU3ZDdmNWMwZDE1IHB5M2sKKzY5MTc5IDc2NjQwNWMwNGJkYzI5NDQ1MzNjNGRhNjgyMDg2YjFmNjBmNmNkYWYgcHkzaworNjkxODEgN2M5MWY0NzliZDBkOTEwYmY5ZDRjMzQ0OTNkMGE0MWUwOGI4OGZjNiBweTNrCis2OTE4MiBlOTY3NWQ3MmUzZTNiOTQwM2RlNDBjMmQxMTEzZjE1MTBkZDIxNmZjIHJlbGVhc2UzMC1tYWludAorNjkxODMgZTY2MzA3NWZkMWFlNGE5OTgwMGU2NzUwNzhjYWYyYmE2Zjc5MDM3NiBweTNrLWlzc3VlMTcxNworNjkxODQgOWNhMzRjMThlMWJkM2ExZWYxYTMxODU0NjM1OTliODE3ZWMyOGU3OSBweTNrCis2OTE4NSAwMTYyY2Q0ZjU1YmUzMWQxYmVkMmFmZjVhN2RjNjkzZGQ5ZjlhMDg4IHJlbGVhc2UzMC1tYWludAorNjkxODYgZjAwODk0MTNjMTJmZDQzZTgyYzU1ZTlhOTUxMmMxNmFiYzM5YjllZiBweTNrLWlzc3VlMTcxNworNjkxODggYmE5NGQ3YzA5NWU4MGY4OWJlMjliMjIzM2RiZjMzYWM4NWI5Nzg3OCBweTNrCis2OTE4OSA0MTBkZmQ0MjNlZjEyYjNjMzQ3ZjRkZTljZTczYTVmNThhNmY4MjBlIHJlbGVhc2UzMC1tYWludAorNjkxOTAgZTJkYjE1MTk2YTU0YjUzOTAyOTQ2MjgwNjMxZDk5ZjVmM2E1NjYwZSBweTNrCis2OTE5MSAyMzU4Mjk5NTY0ZWE4MDQ5ZjhiY2ExYWExNTZmMWUwZDQ2YWE1ZjYzIHJlbGVhc2UzMC1tYWludAorNjkxOTIgZTk0NTc4MjQ3Nzc0MGM4ZmMxOWE5ZGZkMDA4NWNlMzNjYjFkOTBiOCBweTNrCis2OTE5MyBmZGFlNGU3NDlkMmIzODA5ZjA1Nzk4NDFmYTU5NzAzNjE3YWJjN2Q3IHJlbGVhc2UzMC1tYWludAorNjkxOTQgNTdkN2Q2YzJiMTFiY2M1NDk1ZjdlODljOWRjNTRmYTNlMmRjZmIwOSBpby1jCis2OTE5NSA0N2Q3NDcxMjRhM2UwYzRiYzcwODliZDcwNmViMmU1MWQ0N2JlMmVkIGxlZ2FjeS10cnVuaworNjkxOTYgYWVmMjlhOWVkNDkxODQ3MmNmMmI0NzNlMGY5M2QxOGYyMDZiYWE4NyByZWxlYXNlMjYtbWFpbnQKKzY5MTk3IDhjNDQxMGQwNjdlZTdhMTljN2I2YzY3Zjg4YjM4YWUxYWIzMjkzYzMgcHkzaworNjkxOTggYWUwMjZkMjU5ZDQxMTEzOGU1MGYwNzE0NzcxOWNjYjE5YTk2YWUzZiBweTNrCis2OTIwMCA5MjM2MzUxYjUyOWE0Y2JkYmE4Yjg1NmI3YTZkNTI4ZDFmYWI1YWVmIGxlZ2FjeS10cnVuaworNjkyMDEgYzA4M2MyNzRmOWFmZWNjYWQ4MmI4YjQ3YjMwNjczMDJiOTdiYmM1MiByZWxlYXNlMjYtbWFpbnQKKzY5MjAyIDJjMTkyNzJkOGU1NjU4NmUxOTdhMmIxNDRlNzBhOTlhOGI5MTU5MTEgcHkzaworNjkyMDMgNmU1Y2E5OGEzMGFjMzg1MzEwNWRkMWViNzA1NWIzOTYyNjY4YzY2MCByZWxlYXNlMzAtbWFpbnQKKzY5MjA1IDAxYjNhY2QxMDlkYmI1NjI0ODI3NGY3NTE0ZmMyMDBhYmFlNzAzZjAgbGVnYWN5LXRydW5rCis2OTIwNiAyYWRmOWVkNmJhN2U4OTc0ZTc3MjhlYTE5OWE4MjliOTE0MTU3Y2FlIHJlbGVhc2UyNi1tYWludAorNjkyMDcgZmY2ODNhOTI4NDE5MzQwZDVhMDMxODNlNTY3MWI3YzUzNTE0MGI2NiBweTNrCis2OTIwOCA4N2E5ODVhMWI1YzlkMGRjMjZhMTdmZDJkZGJmOThlNmJmZTEwYTg0IHJlbGVhc2UzMC1tYWludAorNjkyMDkgMDUwNzRjODgzNzM4NDdhM2JlYzRmM2RlMDhlMjNjZTA3YWMzNTE2NSBweTNrCis2OTIxMCA2MzM4NmFlNzdmNzkzZjgxZjcwYTc1ODk4ZWJkNzZhMTI2NzcxMzI1IHB5M2sKKzY5MjExIGZhNzlmMTIyYTFiMjVmM2U0MzIxMzdjY2UxYmY0MmU4YjE3ODg0MTkgbGVnYWN5LXRydW5rCis2OTIxMiA3YjdhNjM5Yjk2MGY1YzJkM2NiODM3MDIxOTg1ZjU2NjRjOGQ2NmViIGxlZ2FjeS10cnVuaworNjkyMTMgMGMzMjBmOGU3ZTIwMzQ1ODczMjJmOGM5YmZmNmUzZDMzNWRkYWUwMiBweTNrCis2OTIxNCBkZWJkMTRjNDg5YjkyMTlhNTQ4ZmMzMjAwMmY0YTRlZTgzZDJhNDFkIHB5M2sKKzY5MjE1IDg3ZmJiZjIyYWRmMzdiYTc4Y2Y4Y2ViMTI0MzcyNzI3ZWIyZjExNGUgcmVsZWFzZTMwLW1haW50Cis2OTIxNiA1YzcwMmE3ZDRjNDA5YWZjYzIzMWQ5M2FkZTQ5ZmRlNzUyMTYyMDhhIHB5M2staXNzdWUxNzE3Cis2OTIxNyA0MGZmODNlMDIzOTUzMWVjMzhmNmViZDE5NGQ4ZDdmNjI1ZDZlOWY0IGxlZ2FjeS10cnVuaworNjkyMTggOTA4MjFjN2FkODc0Zjg5MzM0NzlkOTkyOTZjNDg0NTQxNGZkNjgxMSBweTNrCis2OTIxOSA5OTEzYzQ3MTUyNjEwNjc0MjY1MGM2OGI5OWY0ZGFhZjRhYmIwZjQyIGxlZ2FjeS10cnVuaworNjkyMjAgZmFlMTc1OGEyMzQ2NTE4NzAyZTFmOTY2YzhkNTM2OGE2YTUwNjlkNCByZWxlYXNlMjYtbWFpbnQKKzY5MjIxIDYzMGE0MzQ1MWQwNGFhMGE0ZGExNDVhN2ViYzgxNDJjZTYyNjEzMGEgcmVsZWFzZTMwLW1haW50Cis2OTIyMiBhOTUzNDM5MWZmZjlmMWNiZTAxNWJiZWRkZDk3ODk0YjAzNjNjODRjIHB5M2sKKzY5MjIzIDM2MmQ5NmRiZTkyYzU0MTAyZjEyZjA2ZDI5ZDNlMWEyYTZiY2UxYzUgcmVsZWFzZTMwLW1haW50Cis2OTIyNCA3ODZjMTI3ODU3MmNjNmYzNzhiNThlZTEwZGIwMTJiZmQ5NThmMDEwIHB5M2sKKzY5MjI1IGMyMWQ4Y2RjY2FlMTBlNzJjNjFlMWU3ZTU5Mjk5YWYwM2FiZTMyZjMgcmVsZWFzZTMwLW1haW50Cis2OTIyNiAxNDc5ZGIyZWY5Y2Q1M2I1ZWYxOTAxNDRjNGU0NzJlMTVkOWFhYjViIHB5M2staXNzdWUxNzE3Cis2OTIyNyA2YzhlZGRmMjQwMzVkMzRjYzljMmQ2YzlmMmIxN2UxNGZiMjg5MjhiIGxlZ2FjeS10cnVuaworNjkyMjggY2E3MWE0NGQ1NDMyMjI5Yjg3MDNmZTJjODJjMjEzMDE3NTZkMjVjZiByZWxlYXNlMjYtbWFpbnQKKzY5MjI5IDYyNTFiOWQzMjFhZjhkOTVmYjQyMmE3ZjdkNzQ1ZTY1YTcyYjA5NTcgcHkzaworNjkyMzAgNzQ0MzhmYzExZDA1ZGNkYTk3YTA5YzEyZjYwYTJkOTU5ZjgzNjkzNyByZWxlYXNlMzAtbWFpbnQKKzY5MjMzIGY1ZDE0MzRmNGQzZjk3ZTNjMzY4MmE1YzU3MTJmZDE1YTFlNjZjZjYgcHkzaworNjkyMzQgOThmNGM5MDY4Nzc1MDcxMGZiNGUxYTZjOTYyYzA0MjVhNzE0MTBiZCBweTNrCis2OTIzNiBjODIwNzI1MjY1YWIxOTA5MGJjYWQxNjE3YTliZThhYjY4YzJlY2RmIHJlbGVhc2UzMC1tYWludAorNjkyMzcgZDNlNmYyNjAyMzAwY2FlYTc2NWQ0YTA1MTMzNzhmNjJkMmQzYjZhYSBsZWdhY3ktdHJ1bmsKKzY5MjM4IDM4ODBhMTU5MjEzN2U2OGI4OTFjODQ4MTc2YTE5ZTE2NjRmMmUyYTYgcmVsZWFzZTI2LW1haW50Cis2OTIzOSA2NzY1NDEwNmVlNzk1NzRhNmY0YTg4ZDhjNWI0ZTZhZmUzYmNkOGNiIHB5M2sKKzY5MjQwIDczNTRmMWFmYWVjYjQ1YjE0MWEwNDA5Mjk4ZTc5NmZmMjZkYjExMGEgbGVnYWN5LXRydW5rCis2OTI0MSA3YmE0MWMwOTE3ZmY3YjEwNDA2ZWY0YmM5OGE2NGIwOTYwZTgxYjk1IHJlbGVhc2UyNi1tYWludAorNjkyNDIgNWMyNTQ3OTVhYTA3YTcyNzE4Y2MwNmM4NmY2MTE2OGZiMTZkNTEzNyBsZWdhY3ktdHJ1bmsKKzY5MjQzIGFlYTkwZjVmMzk4YmRlYzBjM2NhMzZlMTc2MDEyM2MyYmJhNDJiOWQgcmVsZWFzZTI2LW1haW50Cis2OTI0NCBhMWE3MWQ1MTVkZDJmZDlmOWI1MGQ5YTJkZmNmNDMwNWM4MmRjOTljIHJlbGVhc2UyNi1tYWludAorNjkyNDUgMGYzYWFiYWU0Y2M2NDY1OTkyMjljZGE5YjVmZGQ2MTg0ZjNiMDI3NyByZWxlYXNlMzAtbWFpbnQKKzY5MjQ2IDViNzEzMDQ1ZWE5MDZlMGZlMjFiYmYxYTE2NGUzMTg5MzlhMDcyMWYgcHkzaworNjkyNDcgZjM3NzI3NzQ4MmFiNTg2MDgwMjcyMzUwNGM5NjQxYzhjYzY2YmJhNSBweTNrCis2OTI0OCBmMzUxZmI3ZWExNzk2YWMwOTRhYWVhYjQ2YjBjODdhMDU2ZjA5MWRjIHJlbGVhc2UzMC1tYWludAorNjkyNDkgODU3YTNmOWRhOTE1MzE1OWU1MjE2ZmZlYmE1M2ZkN2IxYmYxZDEyNyBweTNrCis2OTI1MSBjNTEzZTcyOGUyNGNiZjU2NjhkOGQ4YmEwMTYxYWRjMDNlODJjMTdlIHB5M2sKKzY5MjUyIGUyMGY1YTY4NGFlZmE1ODhiNDUwYjMzMGE0YjZhMWEyY2I2NWViYjkgbGVnYWN5LXRydW5rCis2OTI1MyBlYzY5ZGIyNGRlMTkwYTdlOTIyNDNkMDc2ZDAxODAzNWI4Y2YyYmE0IGxlZ2FjeS10cnVuaworNjkyNTQgOGIwODgyYzY3YjZjZmUxZjA4NTJjNjJlMGExYzJkYmE0ZmE0MThjMCBweTNrCis2OTI1NSBlNWFiYWZhZTM2MDQ1YzVlYmJjZjQyNzE3ZTNhN2EwMTYyNDBhMWU5IHJlbGVhc2UyNi1tYWludAorNjkyNTcgNzU1MjFjMTIzNjEzYWNhYmI3ZWRmMmNjNGM0ZjYyOTM2NTI1ZmJiZiBsZWdhY3ktdHJ1bmsKKzY5MjU5IDVmMzM1NGM1MmU4YjhhYWFlNGExNzQ0NDQyZWJiMzA1OWVhMjQ3MDcgcHkzaworNjkyNjAgZTk3MDdjYzM2ODlkMzhkYmFhZDAwZTQ5NDdlMzFjYjU5MmQzZWFhZSBsZWdhY3ktdHJ1bmsKKzY5MjYxIDhjMDE5ODc3NGVkNmRhYmVmM2ZlNWFjYWMzMjlhOWQ1YTQ1OTM5OGUgcHkzaworNjkyNjIgMWU3YTA2YTdmNWU3OGIwNzUxY2Q5NDU2MzkzNWQ1ZDc1NjhiNzk2MyBsZWdhY3ktdHJ1bmsKKzY5MjY4IGI1ODZjYTNhMzA2MjI1MmFhOThhNjI0NTcxZmI3MGVhODg5MGYwNjggbGVnYWN5LXRydW5rCis2OTI3MSA0ODQ1YWJmNTcyZjE0NmI4NGZiYTYyMTNhMTQxMWNlZGY5NzY1MzEzIGxlZ2FjeS10cnVuaworNjkyNzIgZWM2MzRlNTdiYzU4NjIzNjdjMGY4YmU4OTIxMDRiNzkyNzQ5MGI1NyBsZWdhY3ktdHJ1bmsKKzY5MjczIGY3NDUyODc3NmMxMTVmNDNlYTEzZWYwMmRmM2E0ZWIyMzZjMmRlMTYgbGVnYWN5LXRydW5rCis2OTI3NCAyNDU2NmU0OTk3YWUyZjY3NWU2YmM4ZmE1MDA0MTI2OGFhODFkN2U2IHB5M2sKKzY5Mjc1IGNlMDRlMzZmMmE1NTk5Mjk2YjQ3NGNkYmE3MTJiOWYyNmQyZDg5ODUgcmVsZWFzZTI2LW1haW50Cis2OTI3NiAyYjYwM2Y3MjMyNjA1ZGYzNTdmZjAwNTVhN2U1MzAzNTU0MGE1MjlhIGxlZ2FjeS10cnVuaworNjkyNzcgNDczZWIzNzBkZTJjZmQ2NmFiZmJmZjYxZmY1NzdjZjBmY2NjNzYxNiByZWxlYXNlMjYtbWFpbnQKKzY5Mjc4IGM5MWI3NmQ4ZWMwYTk3MTY1ZTU4Yzk2MGQ2YTc5YjkxZWU5MzNjZmIgcmVsZWFzZTMwLW1haW50Cis2OTI3OSBhYTJlYjBmMjQyZmZkOTU4OGJjYzQ3MTI4MjYzMjA4YzdlZGU2NDNmIHB5M2sKKzY5MjgwIDhlMTVkZjM3MjZlMTIwOWEwMWIxM2YxMmVmZThiYjM5NTdlN2JlOWQgcHkzaworNjkyODEgNTNkNjQ0NWM2YzVhOGQ5ODYwM2U3YzNkMzMzODg5ZTlhYWY1NGE5MSBweTNrCis2OTI4MiBiNDYxODVkN2U5NWE3YTBjMzMxZjI3NjgzNGZmNWNiNTZjMDIwNjUwIHB5M2sKKzY5MjgzIDM3OGFiYjI4MWUzMTVjZDA4NDAwZGJmMjRmNWYyOTZjNTEyZTRkN2IgcHkzaworNjkyODQgOGIxOGIzODkwZTMxNjA5NGNkZDAxYmFjNzIwMjE5NTQyNzQ1YTRjOSBweTNrCis2OTI4NSBlMjE0YmRkNTUyZmMyNmY0ZjZiMmMwY2FjNjM0Zjg4MmI2ODhkNjEwIGxlZ2FjeS10cnVuaworNjkyODYgNWE5NDI0ODkzYjVmZDFkNmVjNTg5NDNkZDIxZjVhYzQ2OGI0ZDhkMyByZWxlYXNlMjYtbWFpbnQKKzY5Mjg3IDIzMzNhNTdmZWI5ODUwMmRlMGIwYWJmMjBiYmQxM2UzZTAxZDkwMzUgcHkzaworNjkyODggMWIyMzNjODNmMmE5YjgxYWNmMGVmMmZkNDgyOWY2NDNmNWU4MzllOSBsZWdhY3ktdHJ1bmsKKzY5Mjg5IGNhNDIzMDA4ZmE0YWU2NTBmYzJkZDBiM2EzNTVlODdjNzZiYTM2NGEgbGVnYWN5LXRydW5rCis2OTI5MCA5MjE3YjNhNDc1Mjg2MjgwZjA2MWE3YWYxOWY0NjdkNzQ5YTIwZDQ2IHB5M2sKKzY5MjkxIDQ0NTJlYjA1N2NjNGNkYWVkNGY5ZTgxNTZiNzQxYjE3MmY1ODBmYjcgcHkzaworNjkyOTIgM2YyNzdiNTY1Zjc2ZWM2OGQyN2ZjZGU4YTc4NjdkNjhmOGQzNDBkZSBweTNrCis2OTI5MyA4YWE3MWMxOWRjYjgwOGNhODFjNmMyYzNkMWI0YTE3NTQ4ZmQ5YmY1IGxlZ2FjeS10cnVuaworNjkyOTQgMThkMzcyOWUyYmFjMDEyYzI3ZmI3YjMxZWE3NTcwMWNhOTZlODIwMyBweTNrCis2OTI5NSBiMTI2Y2U3MDdhMzQ2ZTgwM2Y3MzdkY2JjYjg0ODc0Nzg1OWI5ZGVlIGxlZ2FjeS10cnVuaworNjkyOTYgNTJmNzhiYjI2YmY1MGYzNGU2YzJiYmYwMDVlYjM0NWJkZTBlNzQ2OSBweTNrCis2OTI5NyBlZWFhMjU5MDY5YTMzYmY5MjA1YmNiMGUyM2NkMDlhYTllMThjZmI1IGxlZ2FjeS10cnVuaworNjkyOTggOGY4OTEwZjNiNjUxYzI4M2VkYTQ3OWZhZWZhMzk2ZmRiYTE2M2NmNSBsZWdhY3ktdHJ1bmsKKzY5Mjk5IDhjODgwYmJiZTY4NWMyMjAxNjNkMTZiZDFkMjBkZjNiODI0ODkyOTggbGVnYWN5LXRydW5rCis2OTMwMCAwYzlkNTk5ODM0YjhiNGNjNGNlZWExYzA1NGVmYWQxOTE2ODZhZjg3IGxlZ2FjeS10cnVuaworNjkzMDEgNDU3OTU3YTdkNmJhOWJhZjlhY2IyMDhjYWEwZTIyNjc0YTNkYTUxYyBsZWdhY3ktdHJ1bmsKKzY5MzAyIGY0MDEyZTc4MjYwYzVkOTA0NGYwMTg3OWM4NzU4OTZkNzFlZDhiYjAgbGVnYWN5LXRydW5rCis2OTMwMyBiZjNiOGUzMDIxM2Y2YWZlZTQwMDc1OTliNjAwYTg4NGRmNWY5YTU4IGxlZ2FjeS10cnVuaworNjkzMDQgZjBlNWY4NTg5YTBjM2Q0NjYzY2YyNTE5YjUwYmFkZTRjZThmN2Y3NSBsZWdhY3ktdHJ1bmsKKzY5MzA1IDkwYTRjNjY2Zjc3YTg1NzMyOTE1M2UwNzgzYWJlMTE1ZWJkNzRiODAgbGVnYWN5LXRydW5rCis2OTMwNiA0MWM3MWFkNDdmODkzZDMyZGYwMGYyMDZiOGQyYjE1NDEwNDg1ZjBhIHB5M2sKKzY5MzA3IDMyMWYyN2E0MTRlODU0YWRlZjUwZjRlZDhmYzA0NGNjZDYwYmY1MTIgcHkzaworNjkzMDggNzYyMzk3OThhNjA4NDlkOWVjMzdiYjVlM2VlNTYyMTVhM2FiMGJmZSBweTNrCis2OTMxMyAzZmMyNWFlMTg5ZTk2OGE1MDc2ZmI5YWYxMjFjODM1NmY1ZmM2ODNhIHB5M2sKKzY5MzE1IGUwNWM2YmU2YWYxMDBhODk3YjkzYjc0YTM3M2YwNzBjZTViNjc3ZGMgbGVnYWN5LXRydW5rCis2OTMxNiA0NjZlYjk3ODRlOGJhOTA4YWE0YjYyZTlkNTA0MDE5NzM4NTlmOTdhIGxlZ2FjeS10cnVuaworNjkzMTcgZWYzYzZkOWI0ZmVjYTY3N2I5NDZkNDUzODNkZjMzNGVjY2ZhMzA3ZCByZWxlYXNlMjYtbWFpbnQKKzY5MzE4IDk5N2IyNjMyYzliNzVhMWNiNjgyMGRlMmE4ZDEyNmMxOWI4YTNjNWQgcHkzaworNjkzMTkgZmRlMDNlNzViYzEwMGFkZGJhM2Q4ZTg5MjU1MTE1YjZlNDRjNTYwNCByZWxlYXNlMzAtbWFpbnQKKzY5MzIwIGRjODVjYTQxMjA3OWY3ODNhZGFiMjMzNWQ4MWQzZDQ4MGViYTcyNjAgcHkzaworNjkzMjEgZTU0MjVhZjYwZjMwNDE2MTUwNzIwMzNhOTJkMzUzMGZmMjAxYjcwMiBweTNrCis2OTMyMiBhMTg5M2M2OTE4Nzk0ZDBmNGIyNzFlZDllMmJmZmM3OTYxNjA5ZmFkIGxlZ2FjeS10cnVuaworNjkzMjMgZTZhMTQ2ODg1ODBlZjRkZDYyN2VjYmE2YjQwNzY1MjQxOTRkNmEzNSBweTNrCis2OTMyNCA1MGQ4OTQzNmFlYWI3M2RlZWIwYmEzN2ZkZGY2MDBiNGM2NGJiODYzIGxlZ2FjeS10cnVuaworNjkzMjUgMTY3MTAwNDgzOWY4YmZmZTI5ZWIwN2ViOGUxZjExY2UyMWViOThlNiByZWxlYXNlMjYtbWFpbnQKKzY5MzI2IDdlMWEzODU4NDdhOThkYjhmNTM1ZGVmMjg2MDY0ODliZTU2NWU2MTYgcHkzaworNjkzMjggMzc0MzFjZDEyYmYyNzRhZGM2OThiYWVlM2ZlNzAxY2JhOWViNGM3NCByZWxlYXNlMzAtbWFpbnQKKzY5MzMwIDIxYzNlMzUzMTUwNDYzNjFhMDBjN2NlM2ZkNTMyOTJmYmEwZmE1MDEgbGVnYWN5LXRydW5rCis2OTMzMSBlMjM5ZTk3N2JiMzJhMmQzYTYxNjIwZjYwNTI0NWJkNWQyN2I5OWMxIGxlZ2FjeS10cnVuaworNjkzMzIgYTNlYTY1YmZlMzcwNmE0NmU4NTg5YjM1MWJhMDQzOWU5MWNlNWEwZiBsZWdhY3ktdHJ1bmsKKzY5MzMzIGY3OGQ3ZWJiOTZkYTg0YzYyODUxYzVjYjI4YzEwZmEzMWQ2MjY3YmUgcmVsZWFzZTI2LW1haW50Cis2OTMzNCBjNTAyMmIxMDY0ZWE2NmVlMzUwN2VlMGE2YWIxYTMwOTVmYzlkODY3IHJlbGVhc2UyNi1tYWludAorNjkzMzUgZTQzOWY5NzIyYTczNDlkZmZlNWNmYjA3MjgyYjE4Y2FjNDg4ZTIyOSBweTNrCis2OTMzNiA1NDBmYmU1YzgxNjNmNDk4ZjY4MDk0MmVhNmQ2ZmVhNmUyY2QwODdiIHB5M2sKKzY5MzM3IDdiOGZhMjY1Mjg2NjkxMDdkMWJmMzQzMTNjYzZhYjg1OTg2ZDkzODQgcmVsZWFzZTI2LW1haW50Cis2OTMzOCBkYjhlZmM5NDAxNmY0ZGRjYzNjMjA5NjcyZTIwZWU1OTFlYzZhZGEzIHJlbGVhc2UzMC1tYWludAorNjkzMzkgZDE4NTUwMjk4YWY4NzczMDBmMzQ1MTEzZmQ2ZmEyYTM0Y2U3NDk4OCByZWxlYXNlMzAtbWFpbnQKKzY5MzQyIGZkZWNiOTE4MjYwNDBkZmE3Njk3Y2M2MmVmZGE3MWU2NjhlMDBjMmYgbGVnYWN5LXRydW5rCis2OTM0MyAxM2YxMzUyYTNmODc0M2UzOWM2MmEwYmRiNmQxNTBkNTA4ZDRkMDg3IHJlbGVhc2UyNi1tYWludAorNjkzNDQgMjA3MDk3NjkxOTcyNzRhYjAyMmRhNTgwNzE5NzY3ZTY5Y2RkMTRiNSBweTNrCis2OTM0NSA5YzQ2ZDEwOTAwN2U2YzhmMmQ5OTc5NjIxZDg5ZGQ2NTEzNzk1MmE2IHJlbGVhc2UzMC1tYWludAorNjkzNDYgNGNjNDlkOTc4ZWMyM2FhNTVmYmFhMzBhYWZmODNlZWVmMzRkNzQ0MCBweTNrCis2OTM0NyBiYmMxYzY4MTUzYWJkZWIyZTk3NGNjMGRmMjc4M2QwYTkwNThkYWIzIHJlbGVhc2UzMC1tYWludAorNjkzNDggMGY3NTExNTMzMDdmNDY5ZTNkYzBhODIwOWY2ZmE0Y2I1YzJmMzA4ZiBsZWdhY3ktdHJ1bmsKKzY5MzQ5IGM0YzYxMmQ5NWE5YjZkOTYzNjA0OTI2N2VkMTVmYzZjOTZhY2U3ZjIgcHkzaworNjkzNTAgN2UyOGEyYjBjMWIxZjE5YjUzZTgzNGY4YzcyM2IxMzhjMWJlNjZlZCBweTNrCis2OTM1MiBhMDBlNWRjZWExNmM4ZTA0ODg0NWY5MWMzOTI5NzkyMDM3Y2MwNzE4IHB5M2sKKzY5MzUzIDdhMDUyNTYxMzY0NDdlMGU1ZWMxMjU4MTQzZDY5MjMxYmRiZGMyNWQgcmVsZWFzZTMwLW1haW50Cis2OTM1NCBmOTgxZTA1NTdjMzUwN2NiNDZmNWM5OTlhODY2OGYzZGZmMGM5YTYyIHB5M2sKKzY5MzU1IDA1ZDFjYjA1M2Q0N2U0ZmNhZDgxMDI1NDcxMWU5OWVmMWY4MTMyZWQgcmVsZWFzZTMwLW1haW50Cis2OTM1NiBjYzgyNTMxMTYyNzU4MGIxMDE0YTMwYmRiODVmN2NlOWVjNmY3ZjE0IGxlZ2FjeS10cnVuaworNjkzNTcgZjM4NzgzNGNlNWRjZDM0ZTcxMzE2MjZkNjNlMjVhYjRhODY5NWJmZCByZWxlYXNlMjYtbWFpbnQKKzY5MzU4IDU0ZTQwOWMyZjQ4ZDZhMTI2MGIxNDg1YWRkOTBlYTg3MDk1ZTg1MDMgcHkzaworNjkzNTkgZmI0NTExMWYyNDRlYjVlOWFjNjIzOGUyMDQ2NGQ4M2U4YjdhNmQ3NSByZWxlYXNlMzAtbWFpbnQKKzY5MzYwIDE4M2E2YzI5YmY5YzE4ZGY1OWJiODEyZTg3NjZiYWU5YjI4ZTYwMGUgbGVnYWN5LXRydW5rCis2OTM2MSA2ZjQwNzY4ZDA5MDlkNjlhNDYyZTU0ZTQ2MWUzYWE4ZTQ5ZDdkNTUyIHJlbGVhc2UyNi1tYWludAorNjkzNjIgYjQ4MjBmY2VkYTI0MWIyNWQ3ZjkxNjBmMjlkZmRmMjU1MGYwODEzMyBweTNrCis2OTM2MyBkYjQ2ZjgyZDBhMWQxZGU0MzZkMmYxYjA0ZjJmMGI2Y2U0NWQ5ZTdiIHJlbGVhc2UzMC1tYWludAorNjkzNjQgNDMyN2RmYTY4MTE4Zjk5YjFiOTc4MDM3MjBjZDk0OTJhNTA0N2JjMCBsZWdhY3ktdHJ1bmsKKzY5MzY1IDE4MjEwYWZkMDA1YTcxMDg0NWJiNDY1MDM4MjI4NWJlNzYwMjc3MjMgbGVnYWN5LXRydW5rCis2OTM2NiBjOWFmZmJhMDY5ZWFlNTk1NDM2NWVlNDE5NjU0NWZkODA5YmQ5ZDZmIGxlZ2FjeS10cnVuaworNjkzNjcgMjhlNDMwZjE0YzBkY2Y0MzM3NjIxYmFjN2EyOGZkM2U0MTJmMWI3MSByZWxlYXNlMjYtbWFpbnQKKzY5MzY4IDE5ZGIzNzliYWNmODMzNzcyODJiMjE0N2IyN2Q4MjM3MzY3ZTRiMjUgcHkzaworNjkzNjkgZjJkZjEwYmE2MDU0ODVmM2QwNjI4ZDI1NDQ0MDJmYzM0YTE3YjE5YSByZWxlYXNlMzAtbWFpbnQKKzY5MzcwIDk2ZmU0NWRlN2YyNmZlZmE2NWQ1OGVkYzEyODJkYjNjNWE0ZWY1NzkgcHkzaworNjkzNzEgMWNlMDM2Yjg4MDkzNjQwMWVhMTU5YmFlZGZjMjkyM2JlNTE2NzYzOCByZWxlYXNlMzAtbWFpbnQKKzY5MzcyIGQxZTU0MDdkNTUwOWJhZDhjZjE3NjU3M2Y5NTk4MTM4YzA5OTljZDQgcHkzaworNjkzNzMgNDJmYWE4MDU0YzNkY2JhMmIxNjk4ZDFhYThhNjVhYjcwMzBlNjgyNSBsZWdhY3ktdHJ1bmsKKzY5Mzc0IGJhYTg4ZTllOTc2NmNhOGQ5MjQ2NWExMzA4MGQ0NWQ1YzVkYmNiNzggbGVnYWN5LXRydW5rCis2OTM3NSAyYTQwZDk4MWM2NTJhMmMzY2VmYTdiODRhOGJlMzdjOTBmYWQ5OWMwIHB5M2sKKzY5Mzc2IGQ0NjEzZTk3MDQ5OGE0YWI1ZTZjYTZhNDhiNjU2MTUzNWFiNWIwNjkgbGVnYWN5LXRydW5rCis2OTM3NyA5ODU2YzRmYWFjMDQ4MWJkNzA0ZmUzMjYxMGRhZDk4MDczMjRmM2VhIGxlZ2FjeS10cnVuaworNjkzNzggYjRlMTU0YzhhMzhhNTViN2M5MjI3Nzg2ODVkMmYwZDRiNTc3NThjZiByZWxlYXNlMjYtbWFpbnQKKzY5Mzc5IGQyZGU1ZGEwZjU2MzRmYjgzZmQ4NjgwODViOGM1MzM5MzIzNTdkYTAgcHkzaworNjkzODAgNThiN2RjOWM5NTU3YjdiZDkyZDQ5N2RmMTAxNjU4NWFmODFlZDM5YiBweTNrCis2OTM4MSBjMDI4OTVhM2VkNmQ1N2YzZjg2YjQ0YzA2YmU3MGJlMjdjNmY0ODI2IHJlbGVhc2UzMC1tYWludAorNjkzODIgZTE3YjM3YzM1YzdiYjI0MDUxZGM5NWI1YjQ5Y2MyYzY2MzBjOWRiMCByZWxlYXNlMzAtbWFpbnQKKzY5MzgzIDAzYWRkZDE0ZTZmMmMzMWNlN2Y5NWM4MzIzOGIyZTQ0ZDVkYTc0OTQgcmVsZWFzZTMwLW1haW50Cis2OTM4NCA4MTk3MTY2YWExOWI3ZGMzM2U0N2M5MGMzODBlNjYyYzk2NGY0YmVlIHJlbGVhc2UyNi1tYWludAorNjkzODUgYTcxMzJkYjY5MDkyMThmMDIxZTAzZjAxNDU5MmI2YjY3NTNlMWEzNSBsZWdhY3ktdHJ1bmsKKzY5Mzg2IDdhZDFhYjk5MDZlZTVhYWQ4ZGZmODQ4ZWZlOWJlMTcyMjI3YWVkOTQgcmVsZWFzZTI2LW1haW50Cis2OTM4NyBiMDkxYmY4MzQyMjZhMzlhMDI5MmRkMGQ0ZWNjNWFlOTJiNDNmOTQ0IHB5M2sKKzY5Mzg4IDZlOTNkZDU3OGNiODY2MGZmZTBhMThiYzEzYjA4OGRhNzlmMGVlNzAgcmVsZWFzZTMwLW1haW50Cis2OTM4OSAwMTUxYzUxNGRmNTY5ZWYxYjE4NTJkNGZkYTdlMTNjNzNjYjQ4NWFkIGxlZ2FjeS10cnVuaworNjkzOTAgMjA3ZDBlYTk1M2RmMTg1NTBjZmQ3MGRhMDA4YmE1NTFlNDg4MjlmYyByZWxlYXNlMjYtbWFpbnQKKzY5MzkxIDBiMzgxYjQyM2NkZjcyMzljYzFiMTg3NzEzNDU0M2IzZmRjMzFhZjUgcmVsZWFzZTMwLW1haW50Cis2OTM5MiA2NmVjYTEzZWRlMTgzYzJlMjgwZGQ4YWE2YmJlZDM4ODI2MzZmOTJhIHB5M2sKKzY5MzkzIDgxMTU0Njc3MGQyMGY2MGNkNDRmODI3OTFiNDUzOTgyNTYwYTM0MDAgcmVsZWFzZTMwLW1haW50Cis2OTM5NCA0ODA5YWZhODVhOWI2YmU5YmE2MzAyOTI0ZGUwNWI5ZTdhZGZlZmJkIGxlZ2FjeS10cnVuaworNjkzOTUgN2ExMzU2ZDJhZWVmMzNiODYxYmZiNjcwMmNjMTFhODgyZTVkMGM2MiBweTNrCis2OTM5NiBhYjYwYmRjNzA3MTA2Yjk4ZTFiNTZiNzU1OGQ5ZTM3YjNkOGRiMTVlIHB5M2sKKzY5Mzk3IDY2ZGE1MjgzMzM0ZjA2MWIxZDM4MDVhNmRkN2EyMjIzMzk0ZWQyM2IgcHkzaworNjkzOTggMzg5NjEzM2M5NWNiYThmY2QwMGI0ODEyZDk0NzU4MzM4N2VhNDNhNiBweTNrCis2OTM5OSA1Y2RjNWYwYzEzNGM4ZTY0NTdmNDQ4MDE5MDZjNDI3MWNiOTY1MGE4IHB5M2sKKzY5NDAwIDMyOTU3OTBhNjViZTdmY2E3OWE4OThkYmJkOTY5MDA1M2M4MTE1OGEgcHkzaworNjk0MDEgYmM1OGE2MWY4MTdiZjkyOGZiODY3YWRhMTI3NmExOWMzMzY1OGFiNSBweTNrCis2OTQwMiA0M2QzYTk1ZWQ2NjIxOTcyMDAxZmRiMDNjNWY3ZTk2NGI4MmJiMWE1IHB5M2sKKzY5NDAzIGVlZjM5YjQzOTZmZmU0NjFmNjU2ZTM0YTE3ODFmODFkOTUyOWM0MWYgcHkzaworNjk0MDQgMmYxZWZmZjA2NmIzODgyZDcwMzFjMDdlMTZjOTY1NjRjOWJmODIxZSBsZWdhY3ktdHJ1bmsKKzY5NDA1IDAyNTA3ODgyN2I1NDA4NmM3MTRlOGI3MmRiM2JjZGYzMmRiZThlMzUgcmVsZWFzZTI2LW1haW50Cis2OTQwNiA4Y2Q4ZTIzNjg4MjIxMWU0YmE4NjM5Njk4YjExNzkwZWQxMTRiNGE5IHB5M2sKKzY5NDA3IDkyZmEzOWI5YWYxM2M4MzYxZDUyNDc5YmUyNjlmOTQ2ZmJlYjU3NGQgcHkzaworNjk0MDggODczMTdhODg5ZGIwNDRhNjQxNjZmOGY2NGZhMjM5ZmI2NmFjMTg3NyByZWxlYXNlMzAtbWFpbnQKKzY5NDA5IDY5YjI2ZTk5MGViODYxMGZkMGFlZjkwNWI0YTg2NTE4YTBiYTZkOWMgbGVnYWN5LXRydW5rCis2OTQxMCA5OWUyNjRmZTIzODMwYjNjNmEyMzVlY2FkNmI1YzQ4NmI4ZGZlODczIGxlZ2FjeS10cnVuaworNjk0MTEgYzIxZmI1ZWZjNjM4ZGEyNWVmNDE4NmVhMWRiZTQ1NWFhMmE5NDEzMCBweTNrCis2OTQxMiA5MDFjYjIwN2IxZDMxN2U2OGUxODE4NTI3N2MzZTgzMzNlOGE1MTc1IHJlbGVhc2UzMC1tYWludAorNjk0MTMgNDk0ZGEyYzcxOTAyZDNiNmEyOTJmNGU5OTUzODA3ZmRmNWQ1Mjg3MCBsZWdhY3ktdHJ1bmsKKzY5NDE0IDk4OTlhZmUwZmY4YzE4Y2ZkOTNlY2RkZmMxMjBhODZmODA5ZTE1ZDAgbGVnYWN5LXRydW5rCis2OTQxNSAwYWIzNjc5NmRkNzk1ODkwYzhiYzY0MDY3MzgyZmI1M2Y0M2NkODM5IGxlZ2FjeS10cnVuaworNjk0MTYgMzIwY2Q3MWUyYzU2MmNhZDczYTdkOWNjMGRiZmVmZTA0NTRlYjUzMSBweTNrCis2OTQxNyAxMDBhZTZhOGJjMmRiMzk2N2NlNjhjNTNkYzllOWYxODgwNGQwY2IzIGxlZ2FjeS10cnVuaworNjk0MTggY2NjNzE4OGZkZDI4ZmMzZDIyMDc3Y2UwYjA0YTY3NWQ5ZDk0NjFjYiBweTNrCis2OTQxOSA1Y2NlOTlhYTFmNThhYzdiOTIxM2UzZjUyMjUyZWQ2Yjg0OGRkZjQyIGxlZ2FjeS10cnVuaworNjk0MjAgNTcwOGExZTAxNjQ1OTBlNjA5NDFjNDAzYmFiMjEzNjEyY2U3YjI2YyBsZWdhY3ktdHJ1bmsKKzY5NDIxIDJkMzU0ZjRkNzdiY2JjNmM3NWE3NDBkOGZiNTBmOGM4N2U3NGI2ZjQgcHkzaworNjk0MjIgMTc1OGRlZDQ0YjRlMGZiYjQ3MWU2MTNmNzY5MGEyZWM2ZjMxOGU3NSByZWxlYXNlMjYtbWFpbnQKKzY5NDIzIGY4NWVjZDc1NjQxMTRhMjAyMDE0YTlmNDVhYTQ4MjgyNDI2N2VhM2EgcmVsZWFzZTMwLW1haW50Cis2OTQyNSAxMTdlMTUyZTUxM2E2NTBjZGIxODQyNDk1ZWQzYmQ3YzJiYTYyN2E4IGxlZ2FjeS10cnVuaworNjk0MjYgNzRkMTk2YzU0MmY3OGFiOGE5NDljZTZmODc2MmMwMTgyZmEzNzVjYyBweTNrCis2OTQyNyAxY2M2MWM3OWI5Y2VhZmFmMmIwZTNlNzM5YzRkNjcxZjMyZjNkOGEyIHJlbGVhc2UyNi1tYWludAorNjk0MjggZThmYTEwYzY2ZDE4M2UwZTliN2I3YjYzZGI2Yjk0YzYyNjQ1MTI1MiByZWxlYXNlMzAtbWFpbnQKKzY5NDI5IDUwMWIxZjAzNWYyOTkwYjgyYzZmYjZmODVmNjJhODc5MGUyYWNmMDIgcHkzaworNjk0MzEgMGVkMjJmMWFlZDA0NjM5NDA4MGU5ZWFhZWI1NmVkOGUxZWEzMTY4ZCBweTNrCis2OTQzMiA3YmZhNjQ0OTJkMDAxNjBhNGUwZjc3MjI3MjY2NzViYmMxMWNlYzg0IHJlbGVhc2UzMC1tYWludAorNjk0MzMgYzU5MzVjNzQ5N2ZiNjMxZjQxZDY1NjZkMDNkZDgwZjliMmRhZTY3MCBsZWdhY3ktdHJ1bmsKKzY5NDM0IDRjN2VkNDBkYjgxZWFiYWZhOTMwZDQ2ZDYzZGY3NzFjNDg1ODYyZDQgcHkzaworNjk0MzUgMGViNDA1ZDAxZTA4M2QzZTA2NmU4ODFlZmUzMzFlOWNjMDg3NWY5MyBsZWdhY3ktdHJ1bmsKKzY5NDM2IGJiYjgzNTBkZGJkMjU5ZDE2ZmM3ZWJhMDY5YTdlNDg1MGFhMGRhMDcgbGVnYWN5LXRydW5rCis2OTQzNyA1ODQ5YTRmOTA0YTJhMDMyNThmZDhjYmZjMmVkNGI0YmQ0MzRiODFjIHJlbGVhc2UyNi1tYWludAorNjk0MzggOTQ1Y2I5NWIzNWJmNTVjYWI1ZWJiMDRhOGZlOWY2YTIzNDU4ZWUwNCBweTNrCis2OTQzOSA0MzEzYjRkNGJkYzczZDE2YmZlNTk5MjgzZjIxNGI0YjdmMzJkOTY0IHJlbGVhc2UzMC1tYWludAorNjk0NDAgMjI0ZDBlZmNiZjZjOTQ4ZDI3MTJjOWM5NDBmMmViNmEzNDA0YmIyNSBweTNrCis2OTQ0MSBmZDc0YjBjMDY5MjdjOTA0OTIzMjIyMWI3ZTc5NzlhYzY0MGQzZDY3IHJlbGVhc2UzMC1tYWludAorNjk0NDIgYzMzMmY3YjQ1NjQ3MjNjYTAzMWM4YzRlMzRhMGU3ZmNiYjUwNjcwNyBsZWdhY3ktdHJ1bmsKKzY5NDQzIDk5NGZlNGRmNGFmNzBmNTdhMjA4YzE4MTg1MDIzMjc1NDQyODQ1OTggbGVnYWN5LXRydW5rCis2OTQ0NCA2NTUwZGI0OTJmMjg4YTc3MmNhNmIyNTk0NmUzMjE3YWJiZGNmYzIxIHB5M2sKKzY5NDQ3IGU0OTAxM2YxZDgzMTQzYjFhMmIyMTQxYWY0NmVkMTdlYWY1OWU3MzYgbGVnYWN5LXRydW5rCis2OTQ0OCBjMTdmOTI4MWE4NTZiMWRhOTk1MWU0YWI0ODVmYTgyODEyNDk1NDI2IHJlbGVhc2UyNi1tYWludAorNjk0NDkgNGVhMTIyOTczOTE0M2U4NTI2MWRjNzE1MjA3MjFhZDkxMTJkYjE3OCByZWxlYXNlMjYtbWFpbnQKKzY5NDUwIDM2YmM4ZDBlMDFiZjczNTExNDY2NDIzMTU5N2Y4NmM0NjdkNzM4YzYgaW8tYworNjk0NTEgOGNmYTEwOGU3YmRjM2I5YzU0MGFjNDY5MGY5Y2JhMGYyODA4NjQ1ZCBweTNrCis2OTQ1MiBkYTAwNzBjZjQ2NTQ0ZjJkOGZkZWNjNmM3NDA5ZjE2NjA5MmQ0YTQxIHJlbGVhc2UzMC1tYWludAorNjk0NTkgZTQyM2QwN2YwOGFmMGE3YzUzYTFhOTcyYjhhNmU0NDNkMDY0YWZlMCBsZWdhY3ktdHJ1bmsKKzY5NDYwIGRjZmZjNzIzODFlNzM0ZjNkYTdlNGYxMzllYzc5ZTI4OWQ3MjIyYzIgbGVnYWN5LXRydW5rCis2OTQ2MSA3YmJkY2U1YzkyNTA1MjYxNTM2ZjExY2M3OTEwMWJlMmVlMTYzMmRjIGxlZ2FjeS10cnVuaworNjk0NjIgZTQ1NTI1MTk1MzE3ZDM5OTRlYjJiNjYxM2NkODZkY2RhZGRjYjg0YSByZWxlYXNlMjYtbWFpbnQKKzY5NDYzIDQ3MjQ1YWUzMjExYmE2OWVkNGRmZGM5ZTdjMTcwZmMyNzc3ZDVhMmIgcHkzaworNjk0NjQgNjYzY2U3NGQ1MTc1N2Q0NjM1YjE0OGU2NDllYzQ3YTcxZDRhZDcyOCByZWxlYXNlMzAtbWFpbnQKKzY5NDY1IGY5ZjJlZDc5YjAwZmMyYmYxNTgzMDJmNmNjMjQ5NTA4NTA0NTIxMDEgcHkzaworNjk0NjYgMTU0ZTdjNDc0YWFkMDQ3YzliZGM1YWNhZjllNTVkZGZlNzVkNDFjYiBsZWdhY3ktdHJ1bmsKKzY5NDY3IDY3NDViZGFhOWI0OWI1OTM2ZGRkODQzMDEwOGFhMmRkNzAxMjhlZjQgbGVnYWN5LXRydW5rCis2OTQ2OSBhYzYyNDMyZmIzNDFkN2VjZmQwOTdkMmFmZTllYjFkNmRiMDQ4NDhkIHJlbGVhc2UyNi1tYWludAorNjk0NzAgYmRkZTQ0YWY5NzQ0MDZmMzRlNmIxNTBkMmQxMTA4YTY0MTNhNzJkYSBsZWdhY3ktdHJ1bmsKKzY5NDcxIDFhN2RkOWQyZTdlYzNlMTA5ZDE1NDUzZDNhNTRkNjQyNGQ4ZWE4YzcgcHkzaworNjk0NzIgNjJhMWVkNmU2MzZhYzFlNTZhMDUzY2YwMjhjZjA5ZTU1YmY2Mzc4OCByZWxlYXNlMzAtbWFpbnQKKzY5NDczIGZiYmJjMjU5YjVjZTg4ZGEyOTIzMGMwZWVjOTUwMzY5NTk3YzdlODAgbGVnYWN5LXRydW5rCis2OTQ3NCBkN2M0ZDA3MWRhZmFmMTlhYzVjMmIzMWY1YTYzMzQ5YjY5ZDYzNjYzIGxlZ2FjeS10cnVuaworNjk0NzUgMjk4ODA2ZjY0ZGZhMzY0NmQ5MzEwNTZiZTA1ZDI3YTI3NzQ4ODkzYSBweTNrCis2OTQ3NiA0ZTdiYTY3Y2ZhMDUzNzM5ZjdjNmUwMmM5MTZlNjVlMDhhYjM2NzM5IHB5M2sKKzY5NDc3IDg3MjFjMjEzYjZmNDRkMGU0OTczNzBlN2Q0ZjcyZTIyNDI1Y2I0MmIgcHkzaworNjk0NzggODc4MjBmYzY1ZDdjOTg5OTA3ZGQ1ZGJkM2U0M2Y5NmQwZjk3NzYyNyByZWxlYXNlMzAtbWFpbnQKKzY5NDc5IGE5MGM5Mjk4ZGJiNDg4YzljYzBhYTMyZGNkZTg4NGJhMDUzODdiZmIgcmVsZWFzZTI2LW1haW50Cis2OTQ4MCBiZWVmODgxOGE2NmMyMWJlNTgxMjc4YWM2MTNhZjEyMTRmODFlZTJiIGxlZ2FjeS10cnVuaworNjk0ODEgNTg0YzQ3ZDhjOTNmMWE3NTRmYWNkMjc2YjM5YTEwODA3MWQyZTA0YSBsZWdhY3ktdHJ1bmsKKzY5NDgyIDVlN2Q3ZmQxZGE1YTdmYWViNWU0YmVhYzJhYmFlZjE2NGYyNmEwMDggcHkzaworNjk0ODMgYWM5ZWY3NDMxYzhmMTM0YzIwNzJiZDVmZmU3NDVjOTE3OGVkMDIyNSBweTNrCis2OTQ4NCBlNzU5ZGE5M2RmNjQ3ZjI1MmZjNDVjMjExNDI2NTQ5N2RhNjAyZmM5IHB5M2sKKzY5NDg1IGM2MWYyNGZmMDU1ZTQwZDEzMzNjYzkzOGI4YzBhYzdiMDRkZTRkMjAgbGVnYWN5LXRydW5rCis2OTQ4NiAxMzA3YTY2YTM4ZjhkNDg3ZjE2NGMyYWE3N2ZmMjZiOWFkNTkwMjJhIHJlbGVhc2UyNi1tYWludAorNjk0ODcgOGEyOGQ5OWY3ODRkNzdhYzQxZmM3MWUzYjhhMmE0YjllMzU0YzZhMSBweTNrCis2OTQ4OCAzNDIzZjY0N2I1NGE2NWMyY2MxY2RjODc4MDI5NTQzZTZhYWI3ZTYzIHJlbGVhc2UzMC1tYWludAorNjk0ODkgZGFiODA2MzUwMzZlODgyMjgyNzc1NWI3YTJjMWZkNjMyZTMwOGYzNiBsZWdhY3ktdHJ1bmsKKzY5NDkwIDJhZTc3MGVlNjI4NDE3MDE4YzQ3MDhjY2FjOGNjYTY0NjJkMjM2N2QgbGVnYWN5LXRydW5rCis2OTQ5MSAzODY0MjM4NWIxZTBhZjE0MzBhODAxY2VjMTBmNzM1ZWE4M2E0YzlhIHB5M2sKKzY5NDkyIDYzMTZmMzc2YjgxNGJiMWRlM2UxMjJlMGUxZWFkNDFjMTEwM2JjZDYgcmVsZWFzZTMwLW1haW50Cis2OTQ5MyBiZGIxY2E5YWJjZTM2MmQ4OGY4OWJiMTU0Zjg0YmYyOWFiZGU5ZTFkIHJlbGVhc2UyNi1tYWludAorNjk0OTQgMWZlYzBiYjUwOWEyYjVlNDgyYmQ4NzE0MTgyZWI2NWFmODFlODFiYiBsZWdhY3ktdHJ1bmsKKzY5NDk1IDA0MTU0MTdjZmQ0ODNiOTlmZGQ0MGJmMTY5NjQ0YjY1ZjM4M2I2ZDUgbGVnYWN5LXRydW5rCis2OTQ5NiBmMGM3NDAyY2MwMDA2OTNhN2NkMjM0OTYzOTNiZjVmMmVmNGE5OGFlIHJlbGVhc2UyNi1tYWludAorNjk0OTcgMDhlMGYwM2JhODE3MjhjMWU4YzVlM2RhMmUzZDI0NGNjZTYyNGU5NSBweTNrCis2OTQ5OCAyMDYwOWZjMTNhMTM1NzU0YmJjODExNDk3ZDRhM2YzN2RlZmIyNjQ2IGxlZ2FjeS10cnVuaworNjk0OTkgYTAwNzQ1NDgwMTIwZGY5MDc3NzAwMWI0NzVkOGRkNGE2ZDBjMGRkMiBweTNrCis2OTUwMCAwNThkY2E3M2VlMzAyOTUxZmUwZmQyYTE4ODliYWZkODQwNmMyOTUwIGxlZ2FjeS10cnVuaworNjk1MDEgOTRkOWQ1MjU0MDFjMTYzZWZkZTA4OWM2NWVjNGNmNzI4NTgyMzE5MCBweTNrCis2OTUwMiA3ZDZjZGYzMzVhNTcwMjkwYWIwOGMzMjBjMjRmMTg5NTg4NzRiOGMzIHJlbGVhc2UyNi1tYWludAorNjk1MDMgZmZiOWNmOTRjOWYxMzk5ZmI2ODJhMjJjM2VkN2ZmMDkwNjljOGZlMSByZWxlYXNlMzAtbWFpbnQKKzY5NTA0IGYzNThiYTNkMWU1MzYzNzI3ZGNmNWUyNTc2MTIwOGY2MmUxZTM5ODcgcmVsZWFzZTMwLW1haW50Cis2OTUwNSA5NWJiNzczOWUzODZjYmI4OTI1NWIzYzE0YTlmZmMzOTY4MWY4N2YyIGxlZ2FjeS10cnVuaworNjk1MDYgZDNlODhmNzc4Y2RjMTY1YWRlNzdkYWMwNjE5NWQ1YzZiZTg3OGQyYSByZWxlYXNlMjYtbWFpbnQKKzY5NTA3IDZkYmUzZjlhMDQwY2I4ZTRlNGQ2MDM1MDc5YTNkZjVkZTBiYTE5MzEgcHkzaworNjk1MDggOTcyZTg2MTdkZmRhNmQ4NWE4MjcyN2E3NjQxZjAxMzJkMWVjZWMyYSByZWxlYXNlMzAtbWFpbnQKKzY5NTA5IDgzNTE1YmQyODYyNmQ0Mjk1ZmNhMzNmZjI0MDMwZTA4OGRlNDc4MzQgbGVnYWN5LXRydW5rCis2OTUxMCA3MmVlNDJjYzk1MzBmM2Y2ZjZmZGRjYzBjMWU0ZTAzZWVhYWVmMTYxIHJlbGVhc2UyNi1tYWludAorNjk1MTEgNTE5NmVhZmNiZDcyYzYyZWZiMjEzYjRiZmIzZjE2MWNmZjQ4OGVjNyByZWxlYXNlMzAtbWFpbnQKKzY5NTEyIDI4YmY0NTdmYjM0ZDBiOWMyNzI1ZGQzMWZjY2RlODNkMjdkZmM0MDcgcHkzaworNjk1MTMgYWY0NjlkYzE1ZmE3YmJkOTRkYzE1Zjc3Yzg2ZWFjM2E1NTkzN2QxNiBweTNrCis2OTUxNCA3YmIzZDUxNWI2NzdlYWYyZGZkMmJmNjIxNzUwMGNlMmFmMGRlNWQ4IHJlbGVhc2UzMC1tYWludAorNjk1MTUgOWMwYTRmYmI1NmI5MGFkMzc0Mzc0MTA0MGFkMDBjZDg1MTA0MDhmZiBweTNrCis2OTUxNiBkYmRkOTRjZDA3ZmI0NmFjMDUyNTJiNjUxYWJjMTlkYmUzMzIyZjQ0IGxlZ2FjeS10cnVuaworNjk1MTcgN2Q4OTcwNjRhNmVmYjZkNjcyM2Y5ZTk1YjI0NTBiNjNmY2U1MWI1YiBweTNrCis2OTUxOCA0ZDliNTJmY2I1ZGY5ZDk5ZDE0MmQ0NDUxYzk5OWMyOTQwZWY2OTQwIHJlbGVhc2UzMC1tYWludAorNjk1MTkgZWRjZjk5NmYwN2U5OGZmYTE4NjQ2YmM5MTAyZGQzNDNlZTcxM2UyOCBsZWdhY3ktdHJ1bmsKKzY5NTIwIDI5YTllODVmMzBiZjdmODcxODU5Y2Q4NTNkZTdiNjAzNDgxMzk5ZGIgbGVnYWN5LXRydW5rCis2OTUyMSBkNjk3NjliNGZkMjBhNDU4MjI0OTc3MjM1NDRlOWI4OTZlMjcxYmIzIGxlZ2FjeS10cnVuaworNjk1MjIgY2JkNTNmZjQ5NTU3MGI4YTY1YTM4YTU3NTg2ZDBlODMyMjdkNGQ5OCBsZWdhY3ktdHJ1bmsKKzY5NTIzIGIwZGIxMDkwODljOTY4ZWRiNjg3YjQ2YjgzZTQ0NWE5ZGFiOGFhNzQgcHkzaworNjk1MjQgMmFjMDJkYWVmMmVlMzhlOThmMWE4MDk4Mjk4YmY4Mzc0MDQ3ZDM5NSBweTNrCis2OTUyNSA0MzU4NWRiZjYxZDU3YTE4OWU4NzMwY2M0ZDFiNWVkMWNhNmYwYzUzIGxlZ2FjeS10cnVuaworNjk1MjYgY2I4MTkwYTFiZmFiOWM1MzlmOGVmYzkzMjM4ZjI5NjBkMGFhNmMyOCBweTNrCis2OTUyNyAyYmY1ZWQ2NzFkMDJjMTE2MmI2OGQ2ZmRiYzU5Y2E3M2JkMTg0NTlmIHJlbGVhc2UyNi1tYWludAorNjk1MjggZGY2OWJjY2RkMzYzYmYyNzQyMDQxZWI1OTRlMDdhNjU0NmYyN2I5MCBsZWdhY3ktdHJ1bmsKKzY5NTI5IDdkMjljNmU4YmEwNTU4MDc1MTM5ZGY4YThkZjJkYjA1YWNkNWQyOWQgcHkzaworNjk1MzAgMDk5ZTk2MDY3NmI5ZjA2NGQxOWYwNDYxYTg0MTUzYjM5ZjBkMmJjMyBsZWdhY3ktdHJ1bmsKKzY5NTMxIDFhZTM0YTQ4YjczOTIwMDhjNzdkZWVjNDg5ZDgzMzEyZTAxYTk2MDYgcHkzaworNjk1MzIgOTY3N2RkMGIwOWU2YjYyN2Y3YTQ2NzgwMDJmNzk2N2NhM2U1NjBlYyBweTNrCis2OTUzMyA3ZmE4YjdhMmY1MGEyMTVlNDc2MTZmMmRkODVjZDdhNDE2OGMyZDVlIHJlbGVhc2UzMC1tYWludAorNjk1MzQgMjE3NDI1ZWEyNzY5YzI4MTU1YzA4ZjVlZjMwMGMwMmFiNDNmNzdiZiBweTNrCis2OTUzNSA5MmRkYmE1Nzc5Zjk0OTQ4YWIzNDQ0YjE0YjgyMTg1NjE2YzU3YjgwIHJlbGVhc2UzMC1tYWludAorNjk1MzYgODYxMDA4ZGVlZDk3YTNmZDg3OGMxM2ViYjk3MWI3MDVlNDZkZDVkYyBweTNrCis2OTUzNyA1YjUwMTE5NmZjMzgzZmMzMjNhZjQwZmY4MDg2ZWQ5YzU3MmY5YmY2IHJlbGVhc2UzMC1tYWludAorNjk1MzggNjU5ZDg4OTA0ZjVmYjMzZTcwNjNlODFlMTdmOTgzNzcwZmJhNTA1YyBweTNrCis2OTUzOSAwOGNjNTc0YWY0ZjYwOWVjMjI3NDljOWQyY2IyOTYyNzVlMjUyMTkyIHJlbGVhc2UzMC1tYWludAorNjk1NDAgMTg5Njk2YzQ2YzBlN2Y0ZmEyNTEwMWY0NjcxZTQ3Y2QyMzc0MzAxMCBweTNrCis2OTU0MSBjYWI0ZTJlNDg0YTJiZTYwOGFlMmEzNmM3YjlhMWQzYmJlYWE4M2VlIHJlbGVhc2UzMC1tYWludAorNjk1NDIgODNiZDJkMTc0Y2M4ZDAyZTcyNWYwNzE2ZmI1MzQxZjEzZmEyM2YxOCBweTNrCis2OTU0MyAyN2M1ODlmMDlhMjE3NGZmOTJjNmFjNTY1N2NhYzc0MjYzODhlMmE2IHJlbGVhc2UzMC1tYWludAorNjk1NDQgOTcxYmI0N2ZmNzBiNjExMjE5MjMxMGZhNWI4ZWVlM2FmOTQ0M2U3YSBweTNrCis2OTU0NSBhY2RiMzIzNDFkODdhMzE3OTc5ZmM2OTM4Mjk4MDdlNjlhM2M2MDdlIHJlbGVhc2UzMC1tYWludAorNjk1NDYgYTBkOGM2MTZmMzQwNWNiOTQxMmE5MmY5NzdjMjM4MmUxZjY3MzVhYiBsZWdhY3ktdHJ1bmsKKzY5NTQ3IGMwOWI1MDE1MTZiZDBjYzc2MjBhZmMyMGNjZjY0OGU1NzEwN2Q1ZDkgcHkzaworNjk1NDggNWQyODQwNTA4MGVkZmYzOTJjNzU0MjNhNWZiZDYzZTE4NmQ0ODQzNCByZWxlYXNlMzAtbWFpbnQKKzY5NTQ5IDMxNjQ1ZWFkNGMzNWJiNDNiZWUyYzFhZDBiYTk2Y2UzMDcwMTI5NGMgcmVsZWFzZTI2LW1haW50Cis2OTU1MCA5YTkzMmY5MmYzOTQ5OTdhYjM1ZDhiZjkyZmZjOTAwNGQ2ZjU3ZjM0IHJlbGVhc2UzMC1tYWludAorNjk1NTEgNjY0MWQ4MjhkNzYyZDY1MWM1ZjljYTJiYmExNzI4ZmRkY2U1ZDU2ZiBsZWdhY3ktdHJ1bmsKKzY5NTUyIDEzMzI4ZjExYWQyOTU2NjFiODk0OTZmNWFkY2Q1MWJlZTM1NzhkY2EgcmVsZWFzZTI2LW1haW50Cis2OTU1MyAzZWY1YTBjNWU2YjU3ZmQ5NTkzY2M1OGIzYjZhNTBhYzBhYmMwNGZhIHB5M2sKKzY5NTU0IGUzNzUwNzFmOTUwZWM3NTdlYzk5OWRmN2RjOTU1YzFkYzI2OTM0YTUgcmVsZWFzZTMwLW1haW50Cis2OTU1NSBjZTI5ZmFlZDdmNjllMjBkM2JjMWUyYTk4NDE3ZTc2NzA3NWViY2E3IHJlbGVhc2UzMC1tYWludAorNjk1NTYgZTUwMmUyYmYzNWU4NmRiZmEzYjU4OGVmMjg4OGViZWFhMDAzN2U3MCByZWxlYXNlMzAtbWFpbnQKKzY5NTU3IGNkNDJlODVjYWZlN2VkNmM1YzJkYjY1ODI2NzZjMTVhNjhlOWM3YmYgcmVsZWFzZTMwLW1haW50Cis2OTU1OCAwN2Y5ZTAwNDhiMGJkZGYxMjg2YThmMWFjODhjMmI5MzJjZjZjNTBkIHJlbGVhc2UzMC1tYWludAorNjk1NTkgZTJlYTBmODNmMDM5NDJiZDhkMTNmOGQ0YTI5YjM1N2M4NGY1YzRjNSBweTNrCis2OTU2MCA2NDhlMDdkZDA4MjU4ZjYwZjBhNTkzNTU2NmZjMWM0YmRlNDkxNTA2IHB5M2sKKzY5NTYxIDFlN2FjMTRlNDkzODdlYjY0NDIxMWMwNTc3M2YxYjczMDg4YjAzY2EgbGVnYWN5LXRydW5rCis2OTU2MiBlNmE4YTE2NDIzM2E0M2I1OWQ0NTU5NTM3YjFiOWU4MDgxNGY4M2Q4IGxlZ2FjeS10cnVuaworNjk1NjMgOGQzNmFiMDkzZDQ1NmMyNGQxOGVkYTNiY2QwMzJlYzUzZjJlOWEzZSByZWxlYXNlMjYtbWFpbnQKKzY5NTY0IDQ3YTc5ZDdlZWVkYzkwNmRmZjMwYTQwNzA4YmM0ZDljZmYxYTFlZmMgcmVsZWFzZTI2LW1haW50Cis2OTU2NSAzYmQ0YWUyNmIzNjQ5N2VmOGE5YmEwNDNiY2M5MTljYjcxZTM2MzMyIHB5M2sKKzY5NTY2IGJkMmI3NzlmNWYzMTIzNDI3NzZjMDhmMDE5MTA1MDdiODQzNDVlNDEgbGVnYWN5LXRydW5rCis2OTU2NyAyMTAyNzc0ZTdhMmQ5M2EwM2I3ODE1NThkYWJjNDg1MTYwNDcwM2U4IHJlbGVhc2UyNi1tYWludAorNjk1NjggYjhmMTBjNmZhZDUyODU0MTQ4ZjJhZjc1Y2Y0YmVjYzRhMjY1NmM2YyBweTNrCis2OTU2OSA3MmY2ZjE3MDFlZTFhYTRiMDM5ZmNjMTNkMTY3ZDgxOTlmZjgzMTYzIHJlbGVhc2UzMC1tYWludAorNjk1NzAgN2Y0YTExNWFhZTZkOTU0ZGEwYjQ1OGQ3NGNiYjc0NTNlNWJlMzVmMCBsZWdhY3ktdHJ1bmsKKzY5NTcxIGE0MWU4ZmY2NTE4YzIwMzU5ZGJkYTJmNDEyMmQ3OWZmMDk5NTEwMTMgcHkzaworNjk1NzIgNTI4NTFiOWQ5NzU5MDExZGVmODU5OTVlNDY4NDY5YTE0OTAwODE3NyBweTNrCis2OTU3MyAwOTQ2Y2ZkNjg1Nzk5OTk4N2E2YjM4YTc1ZjBmNjU0YTI2YzYzYWNjIGxlZ2FjeS10cnVuaworNjk1NzQgNjhiOGFmNDk0YmUyODBmZTBjYjQ1NzYwZWQ3ODhkMDYyNjhjYTVjYSBweTNrCis2OTU3NSBjYTFkOTlkOWQ2OTFlZGRiMzRmNmRlZTU3MWVhOTA2NTZhZWNkNzk0IHB5M2sKKzY5NTc2IGMwMTRhM2IxYWQzMTU1YjEyZTNhMWRkZjZlYjVhYjc1MTcxOWJjZGMgbGVnYWN5LXRydW5rCis2OTU3NyBhODNmMTBlZGI2ZmYxNTkyOGFmZjYzZmM5M2NkN2E1MmQ1YzQ5ZGM0IHB5M2sKKzY5NTc4IGJmNDE5Y2ZkN2IwYWI5NGIwODk4ZjFkODk3YjNlYjkxYjM2NDJmNzAgbGVnYWN5LXRydW5rCis2OTU3OSA1MTJjNWE1ZGUwMGI4MGIyODk2MDAwNDEyNjQ2MjNkZWI1Yzg5NGJmIGxlZ2FjeS10cnVuaworNjk1ODAgNjlmZGY4ODhmMTEzYTc2Y2NiMzRkNjcyYjU5ZmRlNTUzMWY5ZGI2MyBsZWdhY3ktdHJ1bmsKKzY5NTgxIGVjMzBiMWZjYzFiM2RmZjg3YmM3MzM3Y2Q1N2Y5NGVkODM4OWI2ZjEgcHkzaworNjk1ODIgNWE3MmVlZDFlYjFhNzk1Zjk5ZDM5ZmU5NmQzOTlkNDFhNmNjMTUzNCBsZWdhY3ktdHJ1bmsKKzY5NTgzIDA4ZGY0ZjU1ODNmZjUyYzI4NGE3YmNkYTFkMTg2MmExM2IxZmFiYjkgbGVnYWN5LXRydW5rCis2OTU4NCBmZjA5NmQ2YTkyMjJiY2I5MjNkMGJkZGQwYmM0ZjE5YWFmYjIxM2NlIHB5M2sKKzY5NTg1IGM2ZmY0N2IzZWI5OWZiZDJiMjQyYjA2Y2JlYjY3NGJjYjM2Y2M5ODIgbGVnYWN5LXRydW5rCis2OTU4NiBhOTNiMTlhMmY4ZDkzNDkxOGE5ZDY1ODBmY2Y3NDBhNjNiYWJkNDZkIHJlbGVhc2UyNi1tYWludAorNjk1ODcgNDI4MzhiNGQ2YWExYjc2NDJhNTAzMjRjOTVlNTI5ODNjMDdhMDVhOCBweTNrCis2OTU4OCBhZTE2ZTJiODZmZWI1MjIzY2E3MDhhZDNmY2E1NzI1MThmZmRmOTIwIHJlbGVhc2UzMC1tYWludAorNjk1ODkgMDJjM2ViMWNhMGQ1ZjBkNGVjZjA3MmQxN2IyZjM1N2Y0YzJiYTk3MSBsZWdhY3ktdHJ1bmsKKzY5NTkxIDA1OTBjMGI3NmU2NDYxZTViY2E2NjM2OGMyYmY3M2FmNzFhNzdiY2MgbGVnYWN5LXRydW5rCis2OTU5MiA4N2FiNmJjMjEzNDViYWQwODU2NjBhOGQwY2NhMThjNGJlMjk0NTQ2IHB5M2sKKzY5NTkzIGRmY2Y2OTBhNjdjOGU5MDk5NTc1YjU5OTc2MDlhNzc4YjA2ZjJiODUgbGVnYWN5LXRydW5rCis2OTU5NCBkMzY2M2YwOWQ3NjQ1YTNjMzYwZWRhZGY3MDgxNzcxMjYzYTc3ZmExIGxlZ2FjeS10cnVuaworNjk1OTUgNTEyMDcwZGE3NDMzZGQzNzhiZTIyZmRjYmY4Y2ZjZDJlOTg5ZWY0OSByZWxlYXNlMjYtbWFpbnQKKzY5NTk2IDYxMzVmZjcyNDNkZDc5NmUyM2NjMzU1YTViY2E4ODEyNTFiMTQzMTcgcHkzaworNjk1OTcgOGNiOGVjY2Q2NjMzOWM5NjNlYTY0NmNlNmVmMWU4MTY1ODEwNGFmZCByZWxlYXNlMzAtbWFpbnQKKzY5NTk4IDhkYzI4YTEyNmIyYzgwMWVlYTAwY2YzOGM3YzAxZjgzNmZlN2JlMmUgbGVnYWN5LXRydW5rCis2OTU5OSA5Yzc1ODA2YmVjNjRhZjkxZTZlOGFiOTYyZDM3NmJlZDRkNzk2ZGZjIHJlbGVhc2UyNi1tYWludAorNjk2MDAgNDBlZDU3ODNlMjRhMmRhNWY1NGEwNTQ4MWYyZDY4MTAwMjQwZjJhMiBweTNrCis2OTYwMSA2MTYxMzhlZWYyMjRiY2QwNmM4MzM0OGEyOWI1YjY4MGNlYWEyMmEyIHJlbGVhc2UzMC1tYWludAorNjk2MDIgZTVjYTBiZGIzOTBmZDc4MTUzMmYyMTdlNGMyMDdiYzUxYWQ0M2E1MiBsZWdhY3ktdHJ1bmsKKzY5NjAzIGU5MWIwNGRiNmQxOTY4MGIyZWJlNjg1ZTQxMGE2ZmU0YmQyYzI5MjEgcHkzaworNjk2MDQgYzU2MDdjZjc2ODAxMjc1ZDU0YjA0Njg0M2QwNGM3ZTQ2Y2M5ZjQ2ZSBsZWdhY3ktdHJ1bmsKKzY5NjA2IDljYzc2NzU4ZWUwOWMwNzUxMzNjYjRjYjQ5ODY0YmIyNjM1Mzg0MDAgcmVsZWFzZTMwLW1haW50Cis2OTYwNyAyYTI2M2Q2NmQ2NTk3ODAwMTVmMWUzNTNiZDE2MDEzN2Q5NzcyZWU4IHB5M2sKKzY5NjA4IGY0M2Y4NjdkNWViNjBhNGQzMjNlM2MyZWFjZDBmZjA3YWMyYjZmNGIgcmVsZWFzZTMwLW1haW50Cis2OTYwOSBlNTUyMjg3NWI5OGMyNmE2MjVmNzU1MzkwYzZmNzIzZDYzZjMwMDFmIGxlZ2FjeS10cnVuaworNjk2MTAgOTQ5OGU3ZDViMjY1OTlmZTZhZjZlMmVkNzA3MWU0OTI5MGFlMmIwNCBsZWdhY3ktdHJ1bmsKKzY5NjExIDZhN2EwZTFlMjdiYzA0NDhkZTM4OWExOGUxYTc3MzExMDhkZGEyZWIgcmVsZWFzZTI2LW1haW50Cis2OTYxMiA3MWE2OGRjY2EwNDRlMzJlZmVkZTBjMmEwYTE4Y2ZkZmVmNWQ0YWYwIHJlbGVhc2UyNi1tYWludAorNjk2MTMgZTEzZWQ0ODQ0MjJlODE1NWZiMjY1YjljYzhmYjBmOWQ3Y2YwZjc2ZiBweTNrCis2OTYxNCBiYjk5ZWRhMzhjMWI4MmVlYmM3YTJjYzI0NmE5ZjkwMGQyNTkyZmJmIHB5M2sKKzY5NjE1IDNjZWE0MDUxZGNkYjZjMGU2Y2I0ZTNlZTdiZGYxYTdjOGE4OGY1MTEgcmVsZWFzZTMwLW1haW50Cis2OTYxNyBkNDA4MzhjNWE0MjA2ZmU5YjNkNTc4YjhiZGJjNDZhMWI1MzU2NDdlIGxlZ2FjeS10cnVuaworNjk2MTggOTY5Mzc4ZWE0Yzc3NzFjN2Y1MTEzMWRjYTI4ZmZiMDUxM2IzODE4MSBweTNrCis2OTYxOSA5ZDdhMTMxZGNiNzg5NWEwMmYwYzM3Njk3NDU5ZmRhYmM3YzQzYTI5IGxlZ2FjeS10cnVuaworNjk2MjAgNTU2OTkwYmI0ZjBhY2FjN2RjOTllZmM5ODc5NGZlYWMwMzNlZjI1MyBsZWdhY3ktdHJ1bmsKKzY5NjIxIDE1ZDhiMmRiMmJlNDU3YTQ2NmQ3MTlkNjE1YTdhYTI2NzI4ZjBlNDYgcmVsZWFzZTI2LW1haW50Cis2OTYyNSBmNjdiNDhhMTUxM2ViYmFhZjZiN2M2YTE1NjY2MDlkZDA0OTc0YWQ2IGlvLWMKKzY5NjI2IDhhZTViMGM1YzI0ZDJhZTdlMmFhNWI4MzUzYzA4NTU3YzY0NmU0MWUgaW8tYworNjk2MjcgYzE3Y2Q5YmVjM2Q4NTBlNDA3OTM5YzMyODZkMDJhNDllODYyMjcxOSBpby1jCis2OTYyOCBhZGU0NTUxMWI1NjViMWViYzk1MzYzZjNjOTYwOWQ0NmVjOTZhMDA0IGlvLWMKKzY5NjI5IDc3MzA2YWQ5MzBhMzM0ZWJjM2U3ZWU0ZTc4NGM3N2MxNDYzOTlhNWQgaW8tYworNjk2MzAgNWZkM2FkNTQ5OTE3Y2I0MzkyNmQ5N2ExYTc2MzE3MjUzMjg0YjEyMyBweTNrCis2OTYzMSBlZjJjYmE4MGM5NzViYjVkOTkxMWM5YjliYmQ1ODE5ODZkNjE0MTdjIHB5M2sKKzY5NjMzIDNmN2UwNzNkYWQ3YjVmNDdkMTNhNWNlMDFlYjBhODZjYmI3NGE2ZDQgbGVnYWN5LXRydW5rCis2OTYzNCBiNTVhM2I1ZDcwMDg4Mjk5ZGEwOWM5Y2NlZjQyZGYxYmFmNzk4ZDFlIGxlZ2FjeS10cnVuaworNjk2MzUgYjhjNDY2NGE2NTM5MTZlMjE2NDk3YmNjYTZhZDQ5MGE0MWU3ZjEzMSBweTNrCis2OTYzNiA1ZjIyNTdiNzdhYjA5OTFkZDgwN2IyOWE2N2ZlYjk3NGJhYTQ0ZjBlIGlvLWMKKzY5NjM3IDc5YzIzMTFmMzNjYzFlMmZhMWRlZDQ5ZWNjMjA4ZTk3YTNkNTcyM2QgcHkzaworNjk2MzggM2Y0NzU3NDVhM2MzMDU4OTg5ZWRiZjZhNWNhMjUyNjliYzE4ZmFiNCBpby1jCis2OTYzOSBhZjdkNzgwZjdhMGJlNGJhMDRiYzdmNTUzODRhZDY1NjU5MGE2MmE0IGxlZ2FjeS10cnVuaworNjk2NDAgNjVlMDc1NWU5YmJjOWQ3ZmQ0MDAwOTQwZmNhNGYwZWViMWE2ZmIwOSBweTNrCis2OTY0MSBhYWRlZjIxODhjZWI2ZmI2YmEwNGViOTU3NGFkNzdmZDA4OGY3MmQzIGlvLWMKKzY5NjQyIDJjNGEzMzFjZDMyYThkNzdiM2Q2YTJjNjQyZjE0YzE0ZGIzMGQwNDkgaW8tYworNjk2NDMgOTQ4Nzk0YWM1YTUyYmUyNzBmY2FkNDhhZDRiYmViMDY4ZDI0MmIyZCBweTNrCis2OTY0NCA4YzZkNjg4ZTRmMTYxMDliYzVjYmE2OTk3YzUwOTk5MDAxNTI2MTM2IGlvLWMKKzY5NjQ1IDk1ZDc3NWQ5YWI0N2M3N2VkZGI4YjEwOTEzOWI3NTZlNDExYWIxNzcgaW8tYworNjk2NDYgNGZlMjg4NWQwNjU0OTNiNTFjNTBlYjVlZTA1YjAzZGQxNzYxN2NkNSBpby1jCis2OTY0NyA0MGM5NTQxZTYxZmM4OTY1ZmYxOTAyZmNiY2ZjMTc4ODhkYjNkNjJkIGlvLWMKKzY5NjQ4IDk4ZGQyMDU3ZTA4OGJiNGYyMjBlYjRjZGRlMzU4Y2QwMmExMGNjOWQgaW8tYworNjk2NDkgOTFhM2NjZTY4ZTliNDYxMGVlYzA5YjU3ZmNkYTBiZDYyYjRmZDZlMiBpby1jCis2OTY1MCBkOWMxZDliMTMzNzQ4MzBkYTliMTc5MTgxYjYwZGRhZTAzYjgxMzAzIGlvLWMKKzY5NjUxIGRiM2NhZTEyOGQ5MWVhZTVlNGYxOGMxY2ViMWEzZmI1YTU2YWVlM2UgaW8tYworNjk2NTIgMTkyMDE0ODc3OWQ0NDZiYjhlOTZhYzQ4OTYyNzNmZWFiODNjMjZlMCBpby1jCis2OTY1MyA5ZjUzOWQ4Y2Q5MDQyYTNjMzk5OTZhY2E1M2EwYjczNmRhOTllZjA0IGlvLWMKKzY5NjU0IDI4Y2ExZGY1NDVlMjM2NjczZTVmYTU2MzdlNmEzNzVmY2NlMWVhM2IgaW8tYworNjk2NTYgMjQwNmM3ZGQ5ODg0MTA4NjU4MmQ5NGIxOTY1YzZjMGIxZTAwNTFiNCBpby1jCis2OTY1NyBhMjZkYjMxNDRhZTcxMzA0NTIzODE4NDQzM2E2ZWRkNWJmMzljNDhkIGlvLWMKKzY5NjU4IDRiMTIxYmJjYzkyYWZhMDE4ZWQwODRkZTdhYjE0ZDIxYjlhZTExZGMgaW8tYworNjk2NTkgZjNhZjQ5OTJiODBiODNkOWEwZDk0ZjFkYzYzZTQ0YjVkZTE3MjBjNSBpby1jCis2OTY2MCA2ZGEzMGUzYWJjMGRkMDBkOWNlYWQ5MjM2YzE1ZWVmYTllZjNiOWVmIGlvLWMKKzY5NjYxIDJjNzE5MDJiMzc3NDdkNjk3NTgzMGQ5M2RlY2JjY2MzNmZmMzc4YzAgaW8tYworNjk2NjIgZjRjNDljZjYwMWEyY2RjNmUxNDNjZDUwZTcwZjM0MTljZDhhMmIzZiBweTNrCis2OTY2NCBhNDUwYzg2ZmMyYmMwNDY4NTViODYyYTg5ZDQ2NTFjZTM2ZjY5MDI3IHB5M2sKKzY5NjY1IGM1NzI1NGE5YzFhMzIzMDIzNTFjNTQxNGQ5MGU5ZGNjMDk3YjU2YWYgcmVsZWFzZTMwLW1haW50Cis2OTY2NiAwNzZjNDc5MTMxMzQ5ZDQ3NWFkN2Y5NTRmZTA1MWNiNWNhZDNjMTc4IGxlZ2FjeS10cnVuaworNjk2NjcgOTg1NzVmOWE0ZWQzODU4MjA2Zjg2MWE3YWQ1YzA0OTQwMjk2MDQ5YiBweTNrCis2OTY2OCBhNWM2MjE1YTQ1YWYwOWUxNzg4MjZmMTljYTFiYTVmMzQ3MzAyZTVmIHJlbGVhc2UyNi1tYWludAorNjk2NjkgMGU1NWFjZDFhNDI2NjlkMmRhYTIwZmNiNmNiNzRiODMwZGY5MDkwOCByZWxlYXNlMzAtbWFpbnQKKzY5NjcxIGU4NzNmODA4NDY0YTMzNjM3NjljNzEzYTVmNjAwZmQ5MGE2ODY5OTIgaW8tYworNjk2NzIgNmExMThjYzRmM2I3OGUxOTkzMDU4YTY2MWIxNjI0ZjUwNjQyMjBiNiBsZWdhY3ktdHJ1bmsKKzY5Njc0IDUxZGIxODA4NGVjYmFhZDUwODQ3YTY5YjZiN2JlZjhjM2E1NTk2OTkgcHkzaworNjk2NzUgYjM5ZDU0MDU4YTJiYmY3OTUxN2I5ODY0MGM0Y2ZhZjNmYWY0NDY1MiBweTNrCis2OTY3NiA2MjdkYjU5MDMxYmViMDEyNjJlNzEyNWI5NjZlZmQ3OWZhODIyOGE2IHB5M2sKKzY5Njc3IDRkNjFmYmJiNDVkNzQxNzRhZTZiNGUxY2RkYTIwMGJmZjlmMDA4ZDkgaW8tYworNjk2ODIgZGY3YzZiZDFiNjA5MmI4NTY2YjFlYzFkMTEwMDNiMWZlZjg5M2IyNCBweTNrCis2OTY4MyA1ZGNhYTJlMWJjODY5YTZkNjc4YjZlODIzY2VjODZiNzM1OWU0ZDllIHJlbGVhc2UzMC1tYWludAorNjk2ODUgMGViYmNmNTk4OGRiYzE4M2ViZWE3YzBjZDMyM2RiMzc0NjFhM2ViOSBsZWdhY3ktdHJ1bmsKKzY5Njg2IDAwM2UwMDc5N2U5MTAwYjE1MGRhYTYwODRkNGJkMjYzNDRjMGM5NGYgcHkzaworNjk2ODcgODZiNjBkMDUwNjJiYThkYmUzMDQxZGQwNzcxOWZlZTY4ZTMxYWJkMiBweTNrCis2OTY4OCAyN2Q0M2Q2NmJkMDljZWVjMWVjYmIzMWM1NjY0OGViZWE0ZWExNmVmIGxlZ2FjeS10cnVuaworNjk2ODkgMTU0OTQ4ZTJmZDFjNTdmMTk0MjY3NWY0YTJiYjllYWMyZjk0ZWViZSBsZWdhY3ktdHJ1bmsKKzY5NjkwIDA5MjM1ODg5YzU0ZDE0ZTZhNjY4YzY5YTdlNjU1ZmIxMTQ0Y2Y5NDMgbGVnYWN5LXRydW5rCis2OTY5MSBmMzA4OTUzYzcwMWZjNGY2MTg5OWNmZWU5ODUyN2RhZGNkMGUxODZhIHB5M2sKKzY5NjkyIDk4MmY5ZTI5MjVhNDVjNTQwNjQ4ZGQxYjg5YjVlYjkyNDY4OTk0ZGIgbGVnYWN5LXRydW5rCis2OTY5MyBhYjRkYTJlZGIyODhkZWE1ODBkYmU3OTljMTNhMjhhZDlmZDZiOWNlIGxlZ2FjeS10cnVuaworNjk2OTQgZTc4YmE4ODAwZTJjZTAxZWFjNDA4NGU5YWVkNDY1NDVmMWEyOWZjOCByZWxlYXNlMjYtbWFpbnQKKzY5Njk1IDUyMjdmOGM0MTgzZWY1MWViNGZjNGQ1NGQxYTAxNjFmNGExMjk4ZDAgcmVsZWFzZTI2LW1haW50Cis2OTY5NiA1NGNmNjhmYzczMTI3ZWUxMzdmMDFiZGYyMTliY2M0MDMzZjI1YWI5IHB5M2sKKzY5Njk3IDI5YjE0OWJjMzEzMDE2MjllODY5MTZhYTk2NzAyNzk1Y2YyZjFhYjIgcHkzaworNjk2OTggMjczMjY4NTIyZTVlZTkyODcwODE1OWI2MTEwMzQwNTA4YzllZTFkMiByZWxlYXNlMzAtbWFpbnQKKzY5Njk5IDBjODc0Nzk5YTE5MGQ1MDRkMWQwMzNmYzY4OTYyYmQ0NzE2YmZjZTMgcmVsZWFzZTMwLW1haW50Cis2OTcwMCA3MTAxNzcyZWFlODA1ZmVmOTExMjA5Y2I3ZTI5MDAwNDVjNzRhNGE0IGxlZ2FjeS10cnVuaworNjk3MDEgZjUwNWViYTcyNmM4NjUzYzdmNzU0NzZkYzc3NmFiNWMxOWFmOTdmYSByZWxlYXNlMjYtbWFpbnQKKzY5NzAyIGRiYTJmYWYwOTkwNjQ5NTVkZDdlNWE4ZWFjM2Y5NjE3YzZlN2I5MzggcHkzaworNjk3MDMgMDFkM2I2ODYzMzg3ZGJiNTk2ZWFmMGZhZTRmYTU0N2Y4NTcxY2I5YiBsZWdhY3ktdHJ1bmsKKzY5NzA0IDA3ZmFkMzAxMDI1ZjAxOWVlMzI2MTc0NWRmY2JkNTY5MDg3Y2VlZjMgbGVnYWN5LXRydW5rCis2OTcwNiBkZDIyMTBiMmRjMjJjYmVkNGEwMzJmMGVlYjRjZTVmMjgyYjZiNmUxIHB5M2sKKzY5NzA3IDE0N2ZjZWJhY2I1YmIwZDE4OTBiNjE5ZmRhMWVmN2UzYTdlMWMzMDkgcHkzaworNjk3MDggMTllNzY4NWQ5Yjk0NmYyNTg0N2IwOGE4Y2E5MTQ3YWE2YjI4YzBjOSBweTNrCis2OTcwOSA0NGZkMmNjOWU5Y2M3NDY3OWIyYzY1YjMxNDI2NDMyODRmZjY2NTU0IGxlZ2FjeS10cnVuaworNjk3MTAgMjcyNjhlZjA0NzA4ZDhlM2MzMGE0ZDY2ZmM3MWE2MWU1YmYwMjRlNSBsZWdhY3ktdHJ1bmsKKzY5NzExIGQ3NzI2NzgyNTM2ZDk1MDE2YTZhNzViNmUxNWI4MDA0YzBjM2Y4ZjggcmVsZWFzZTI2LW1haW50Cis2OTcxMiAyNTdjOThmYTU1ZDc2Y2VhOWJhYWIzMTQ4YjE5NTZkYmMyNGQyZjg4IHB5M2sKKzY5NzEzIGU1NDhkZjM2MTg4ZWY3MzUyODQ4YzFkY2NhZjhhZjI2NDNiODZmYzcgcmVsZWFzZTMwLW1haW50Cis2OTcxNCAwYzZjMDU3MmMyNDczYzBkMjY3Y2ZiM2Q0OWJmNTZkYzA1YTg1M2JmIGxlZ2FjeS10cnVuaworNjk3MTUgZDk4MmI5NWJlM2UyMTgwZDU1NWZhOGY5YmZiYmY2YTE2YWY5MDhiZiBsZWdhY3ktdHJ1bmsKKzY5NzE2IDc5OGExNmFiZjU0NjA4ODYxMGZlNTBiOWQ0ZDMwYTIxZTkwM2FkZGMgbGVnYWN5LXRydW5rCis2OTcxNyBkNjc0MGE5NmE3MGFkYWMxNmE3NjNlMDdhNjc1NmI0ZTg5YjZlZGE4IGxlZ2FjeS10cnVuaworNjk3MTggOWFkNjYyYTQzZWIzNTBlNDdhN2NhNmVmYTY3NWFiNzkwMDdkZTkzNyBsZWdhY3ktdHJ1bmsKKzY5NzIxIDg1NDA3ZDA0Nzc4MjA5ODI2MzA1YWRmNTI2NmU5ZDg2MmQ5ZGJmM2IgcmVsZWFzZTI2LW1haW50Cis2OTcyMiAwOWU2MzIxNGYwYmY4NjUwNmY5Y2JmNTI3Y2I2MzY0ODYwMDhhNDFhIHB5M2sKKzY5NzIzIGZiODYwNmUwODZlYTg0NDVmNjlmZDY2MjA3ZDgzZGU4YmE5NjgwYjEgcHkzaworNjk3MjQgOTJlNDJiMWIwYTZlZWMwZjExNzc2ODliM2MwMTZhZTA4YmQwM2QwYSBsZWdhY3ktdHJ1bmsKKzY5NzI1IGQ3ODYwYmIwYjE1YTBiZmQxMzUyYWI2NmM5ZWEzZDhlYzIwOWViZmQgcmVsZWFzZTI2LW1haW50Cis2OTcyNiA2MDVmZmMwNTJiNDE5NWUzMzQwMTljNjBmYTVkNTg1YWUyMzA0MjkxIHB5M2sKKzY5NzI3IDIwNWEyYjRjMWZhNTQ2NTU4NDQxYTE4MzgzNzAwOGRlNzc0YTJiY2QgcmVsZWFzZTMwLW1haW50Cis2OTcyOCAxZmY0YjQxYTU3YzEyNmQwZjk0NjZjMDA0NDNhYzQ4ZTJjOWI2NWViIGxlZ2FjeS10cnVuaworNjk3MjkgZTdlNTQ0Y2QyYzJiOTQ2MmE5MjRkMWFhMjFkOGU3ZDQ4ZGNmMzdiYiBsZWdhY3ktdHJ1bmsKKzY5NzMwIDZlYTdkMzcxNGJkZjc4ZjI4NDU0MzlkNWZkNWRhZTUyOTc0MzI4ZTMgbGVnYWN5LXRydW5rCis2OTczMSA1NTE5YjlkY2M5YjZiNjQ0N2FmMDIwM2RhZjAyM2Y0OTZkMDBjODNhIGxlZ2FjeS10cnVuaworNjk3MzQgMzlmMDljOWVkNWE1YjNlZDZjM2YxMTk1NTNmODk4YjI3M2FjYjZkZiByZWxlYXNlMjYtbWFpbnQKKzY5NzM2IDI4NzhiZjgxNWRhMWU4YmFjOGJjZDc0NzRlNTM4NDVjNTU2OTc2M2QgcHkzaworNjk3MzcgY2IwYWRlMzM1NTUxNTYwYzE1Njg5ZTI4MDI4Yzg4MTFjZDE1MDM5ZSByZWxlYXNlMzAtbWFpbnQKKzY5NzM5IDcyZDEzZWNmNGZjYTc1ZmIyNTZhYjcyM2QyM2QyNjQ3MGY5MzM5NTggbGVnYWN5LXRydW5rCis2OTc0MCA3NmQ3N2FlOTdiMzhmZjYwNzNlZWNlZWFhZGRhM2VjOWFiNjNlYmI0IHB5M2sKKzY5NzQxIDc1NTlhMDNjYmQzMGFiNzUxYjc0ZmRjN2VkNDk4OGZmNzUxMTk2ZTkgcmVsZWFzZTI2LW1haW50Cis2OTc0MyA5YmZmMTMwZDc5MmRlYTQ3MWYyZWE5Y2YxZTYwYWQ3MjllYzFlMzk1IGxlZ2FjeS10cnVuaworNjk3NDQgZWU3MDExODYzOTQzMjY3ZGZjNTBlZDU1NWFmNmJmMmVmMGI0YTljNCByZWxlYXNlMjYtbWFpbnQKKzY5NzQ1IDhhMjkyNTQzZTg3MTk5NzQxMDZiNDFiNzkwNzI0NWE2ZmZhYTc1NjAgcHkzaworNjk3NDYgYjJmZjIxYmJiOWM1NDA0NDc2NmIzZjhjMzg0Zjg0ZjJmMGQ5MThjNyByZWxlYXNlMjYtbWFpbnQKKzY5NzQ3IDdjN2I4MDVkMGQwYThkYWY3ZmY0ZjY1OGRlMGM3YTIxNWY5ZmRhYmIgcHkzaworNjk3NDggNzQ4ZGZlOWJiODU3ZmMxZWZhNzAyMTVhMDg1OTQzMjg3ZTJiNjVjMCBsZWdhY3ktdHJ1bmsKKzY5NzQ5IDg1ZmU4ODc2MTRjZTQ0MjBlOTAxY2YxMTZmNjg5ZDgxNjMxNmNjMzIgcHkzaworNjk3NTAgZTI2MGQ2ZGFmNzg0OGQ4NDAwZDdkMzk1ZWQ2ZjA1MTkxNTBmMTdlNCBweTNrCis2OTc1MSBkMjVmYzAyMDkyOTU1MDM2YTcwMzZmYjE1N2M5ZWM4YzYxOTZlNTk2IGxlZ2FjeS10cnVuaworNjk3NTIgM2RiZGJjNWU2ZDg1YWQ1ZWExM2E1MTA0ZWU1YWEyYWNhMDQ0N2JiMyBweTNrCis2OTc1MyAwM2YwN2Q4ZjA2ZTQ2YzAzYWJmMmRiOThjZDg3NThlYjM1Y2ZkMDZlIHB5M2sKKzY5NzU0IDMzZDVkN2RhYThjNzQ2OWYxM2NjOTJlZTBmZGM1ZDI3Yzg2ODk0YTYgcHkzaworNjk3NTUgNDk3ZWFiNzliMWJlOGU5MTcyNWEzZTMxY2Q0N2E1OTAxODRmNGI5YyBweTNrCis2OTc1NiBhOTc3NGI2MWU1MmQzZDhkNmFjNTM5MjE4NTVlNzE3ZDFhOTQwNWJkIHJlbGVhc2UzMC1tYWludAorNjk3NTcgMzAyMjYzZTNjOGYxZDJjNTVjN2QxYTIxZTRjNjhhZmU0OWQ1NzMxMiBsZWdhY3ktdHJ1bmsKKzY5NzU4IGQ0N2MyNThhMWUxY2VmYmViNWQ1YzM5OWZkOTY4NjdiZDJhN2U0Y2UgcmVsZWFzZTI2LW1haW50Cis2OTc1OSBhYjQwYzc2MTM5YWI0ZDc3YzkyMGVmOTllNTE2YjBlN2JlNjdlMGQwIHB5M2sKKzY5NzYwIDJmNTI1NzQ5NGEyZTBmZWIyNmEyMjQyYTViNTcxZTMzYWY4YTlkYzEgcmVsZWFzZTMwLW1haW50Cis2OTc2MSA1NTllNGZjMzFjOGE3M2I1ZjY0ZjMyZDA4M2Y1Y2RmOWE5YTM1ZTUwIGxlZ2FjeS10cnVuaworNjk3NjIgZWE0N2NlZjY3ODM3YjBlZWQ1YzU5YjQ3OWIzZDk2YTljNjAxYzlmYiByZWxlYXNlMjYtbWFpbnQKKzY5NzYzIDkwMDFkOWM4ZjcxZTA1MTdhM2VlM2MzMjExMjM0ZWQ4ZmQ5N2EzOTMgcHkzaworNjk3NjQgZDY3M2RhOTE1OTE0ZDdjNTkxMzQ0YzkzMzhhZDliYmRkNDcyYTIyZiByZWxlYXNlMzAtbWFpbnQKKzY5NzY1IDk4MDBhYjIzNmMwOWQ0NTVjZDYyYWNiNzFhMDM4MjA0ZTNhZGQ3ZTUgbGVnYWN5LXRydW5rCis2OTc2NiBmMGVhYzQ1MmE2Y2FmZDE4ZmEwODkxMmIyN2M4MWYyZDU4NjUzOWI0IHJlbGVhc2UyNi1tYWludAorNjk3NjcgYmQ0NjcxNzkyZDUwMTZlNWU4MTQ3NjhhZmI1NzM1NmE2ZGY3MDQzNiByZWxlYXNlMzAtbWFpbnQKKzY5NzY4IDQzNDJjMGEyZjJkYzljYWQ0NDhiMTZkNWQ5Mjg1ZmFiMGUxNzMyMjIgcHkzaworNjk3NjkgODQ2OGI1MmY1ZWUyYzM3N2NkYmUyNzMxNWIxZjA5NTExYjZhYTc1NiBsZWdhY3ktdHJ1bmsKKzY5NzcwIDAwZjdiZTAyYWUxZjFjMmQwMDkzYmQzY2YzM2NiYjBlNDliNTQzZjUgbGVnYWN5LXRydW5rCis2OTc3MSA3OGUzMTFmMjc3YTcwMjdlMWRiNTAyZjkyMTY2ZjRmNWQ0YWUyMTIyIHB5M2sKKzY5NzcyIDhjMTNmNDMwZTE2MDZhMDg1NGU2YzNlZjRhMWM1ZDAzMGJkY2FiNTQgbGVnYWN5LXRydW5rCis2OTc3MyA4MzNkZGZlYzBiYzQ1NmJlMDQ4OGE1ZTlmYzFjNjgwNTU4NmEwZjk1IHB5M2sKKzY5Nzc2IGMwMmMyYTkwOGNiMDk4ZjFmOGZkZDNmYzgwMzNmNWI4MGE3MjFmYmUgbGVnYWN5LXRydW5rCis2OTc3NyA0Mzg1OTI4OTBlMmI3ZWY1OTI5YTAxZWVhMDkwZDkxZWMzZWNjNDZkIGxlZ2FjeS10cnVuaworNjk3OTMgMjc5MzM3NTNhMzg3ZjkxYTgyYzk0ZWNmZmIzNDg1YTkxMjllNDhmYyBweTNrCis2OTc5NCA2N2VlZDgxYmE3NGZhNmEzMGE4MDZlNDQ1NmQ3Zjc1YjJjMGZlZjZlIHB5M2sKKzY5Nzk1IDk4MTVkYTQzYTFjZWZhNDZkMGExZDgxMTcwOTdiYjgzOTg5NjZmYWYgbGVnYWN5LXRydW5rCis2OTc5NiBjMWJmMDM3ZmVlZmUwNmIxZWNlOTAwOTgxMWM1YzQwNWM5YTJjMzFlIHJlbGVhc2UzMC1tYWludAorNjk3OTcgNjI0YjU1ZDBkNmI3MmRiMTEzZjQwNTA2Yzc2MjdkMjM1ZGQwNjdhMiBweTNrCis2OTc5OCAyZjNhZmFjZjlmMGI3MmNjZDYwODdiODI4OThiMWY1ZTdhNDI4OTJhIHB5M2sKKzY5Nzk5IDE0MDhmZWVjMDA4NDlhZWUwNTg2ZjlhZmQyYjEwZGQyOTE2NjQxNjQgcmVsZWFzZTMwLW1haW50Cis2OTgwMCBkYjhkYjMxZmRiNGM0N2MwMWZlMGY0ZGQ3NWI2YTA5NGFkZmYzOGM1IHB5M2sKKzY5ODAxIDBiOThlMzc5MWI5ZWM4NzIwY2E3ODJiZDVhY2M0NTUwNTBjNTIxNmQgcmVsZWFzZTMwLW1haW50Cis2OTgwMyA1YTE3ODg4YzUxNTEzZTk1ZGE4MTE2YTA3ZTJjZmJkNzFkNzBiN2QxIGxlZ2FjeS10cnVuaworNjk4MDQgZWYxOWNhMDEzZTE2ZWUxNTFkODM5YTkyZjRiODMxZjEyOWY0NTc3NCBsZWdhY3ktdHJ1bmsKKzY5ODA1IDA4MjQwOTMxNGIwMDdhODhiM2UwN2E2ZGQxNzY0OTJiOGVjM2Y0NzQgbGVnYWN5LXRydW5rCis2OTgwNiA2NWEzZjU1NWZhYjczZGE0ZTc0ZWI0NWJmNjEyYjBhN2M2NDViZTI1IGxlZ2FjeS10cnVuaworNjk4MDcgMTY0YmE3ZmZhMGVlZTU0NGI0YzNlMTM0NzY4YmMyODEwMWM4NmZjMyByZWxlYXNlMjYtbWFpbnQKKzY5ODA4IDkyNTBjOGM2MWE5MTA5NWE5NWVmNTZkM2NjMjE2OGY1ZGU2ZTRhOWQgcHkzaworNjk4MDkgNGQzYmFhYzJlMWEyMGRiNTJiMTc3OWJhNWYxY2YzOGQ1NjA4YWM2ZCByZWxlYXNlMzAtbWFpbnQKKzY5ODExIDA4NDhlYmI4ZjljODhjOTI3MGRlNjcyZmExNTZhNDZiNGU2Y2RkZDggbGVnYWN5LXRydW5rCis2OTgxMiBjNmVkNWJmZTM5NjlhMzhiNGMwN2Y3MTgzY2FmMzBhYmRmZjdmYjU2IGlvLWMKKzY5ODEzIGUwOGU0MDk4YTRlNzliNDE3YzU1ZWUzZDEzNzNjZGNiYmI3NTEzNTEgaW8tYworNjk4MTQgNDA4MmVkYThiNDY2M2IxNDUxNmNlNjk2MGMwNTIzOTJjNmE5NzllNyBpby1jCis2OTgxNSA3ZjgzYWZmNjhjMTY2Y2Q4NGUzMmVlYzE2ZjYyZGU5NWI3YmU1MTc3IGlvLWMKKzY5ODE2IDFhYWM3NTIwNDM3YTZmZDRhNzU3NDk5MDdlNjdmNzdmNmI2Mjk5MTYgbGVnYWN5LXRydW5rCis2OTgxNyBjMDVjMzBmYzExOGJlMTAwOWVlZmFiYmY0NDU0Mjc4NDY2YjJhNjJhIGlvLWMKKzY5ODE4IDZjZTk2Y2U0ZDlhZmU0MTU2ZDYxMDIwNDE4M2QyMTgzZDJiZmQ2ZDYgcmVsZWFzZTI2LW1haW50Cis2OTgxOSA1ZjU5NWFjOGFlZmMzOTYyZjllYzAyNWYzMDRlOTA4ZGIzYjcxMjhlIHB5M2sKKzY5ODIwIGUwODE1ZmVlMjRmNmUzODBiMjYyM2VmNjUxZjFkNDc1ZmFhNzhlMjAgcmVsZWFzZTMwLW1haW50Cis2OTgyMSA2N2JjZmYyOTNhMjFhZDVmZWI1NzUxYzM4N2EwNzg1NzQ0MmE5ZGZlIHB5M2sKKzY5ODIyIDM3ZTRkZjlmZGFhNmQ0MDAwNTdiZWVmZTAyYWEzMGJiM2YyODBlYTQgcmVsZWFzZTMwLW1haW50Cis2OTgyNyBhZGIxMTMzZDg5MmFiNmZjMmY0MmM3YzlmNmMwOThmYTQ3ZWE2NGNkIGlvLWMKKzY5ODI4IGM2MTgyY2M3ZTZkNzBlMDMzMWM0MTExNWEyYjAxZjNjZWRjYjU0Y2YgaW8tYworNjk4MjkgNzAyYzNiOTgwM2U4Yzc1M2Q3MWZiNzJjNzBjODA0OTIxOWUwMGM0YiBpby1jCis2OTgzMCA2ZmQ4OTBiMjBkNjNmYzdhZDhiMGQ1YzkwMzcxNWVmYzM0YzU5NzBhIGlvLWMKKzY5ODMxIGRjYzE2MWUxYWY3ZWNlMjdhZDUzM2NjNGNlZjYyZjk0ZTk2ZDI0MGYgcHkzaworNjk4MzIgNDFlMzhhNjFiYzRiNDkxNjdmMmQ1OWJmMWE1NjdlYWQ4ZGZiNjAwNCBweTNrCis2OTgzMyBhMWZhZmY3NGZmODllMmRhYWMwNDg4OTAxNTRmMThkYmJhYWVjOTg5IHB5M2sKKzY5ODM0IDcxNDliN2VlZjE1M2Q3YjM3ZTJlNDVhZDUzMDExMDJlNTJlMGYyMTYgcHkzaworNjk4MzUgNzRhMmZmNDA1MThhZTY2NTNiMTg4NmNiNzNhNDcxOWFhZGI2MTc3OSBweTNrCis2OTgzNiBlZTcwMjk3MTBjMDUwZGIyMjZkM2JmODQ0MjBhOWMzOWM5NjkzNGQ2IHB5M2sKKzY5ODM3IDNlMjdkNjA2ZDYyNWY4ZTkxN2ZjNWUxZjU2NTliMGJkZWNlN2VlN2IgbGVnYWN5LXRydW5rCis2OTgzOCAzMjZmNmZhY2MxYWE0ZjQzNmI3M2Q4Y2MwZDMxYmM2ODgwZGEyMTgwIGxlZ2FjeS10cnVuaworNjk4MzkgYTViYTljMTdmOGI5ZDUwZTA5YzBmMTRhZDA2NjBhZGZjNGE1ZjZlMSBpby1jCis2OTg0MCA5ZTZmYmE1YWNjZTQ2YmY4NDcxMWJmZGZhZWZiYjc3YTFhNWQ0ZTQzIGxlZ2FjeS10cnVuaworNjk4NDEgYzI3MmUzMTVkZDg3MjA2YTlkOTc2YzEwNGJmMTYxZDc2YzE3ZjIyYyBpby1jCis2OTg0MiA5NTU3NmJmM2FkNzM1ODk2OTM4NDk5YTVmNmFhMDZiMmM2MDYwNDA3IGlvLWMKKzY5ODQzIDM3NmQ4MDhlMWMwNWZhYWFkOWU1MDAyZWU1YWYwMjllNDNmYmE5NWMgaW8tYworNjk4NDQgNTE0NDViMDQwOTg2MTc2MjY0ZDUwZmZiNjc4MmZmN2FlMzQzMDQwYSBpby1jCis2OTg0NSAzZjAyM2ZiODNmMmI5YjlhMWI0YTg0ODllNWQ2Y2UwNzA0ZTFlNDIwIGlvLWMKKzY5ODQ2IGFmOWI2YzQzODA0ZTFlOWM0OTMzMmNhNjYzNDM2M2QwOGFlMmYyYWMgbGVnYWN5LXRydW5rCis2OTg0NyBkMDZhM2ViZjMwNmZhOTQ1ZTQzZjU5ZGYwNjM3MDVhM2Y0YzNkY2NkIHB5M2sKKzY5ODQ4IDZiYTU1ODhlZjY0NTg3ZjIyYTRlNDFjOGU2M2Q4YzE5MGIwNDg2YWQgaW8tYworNjk4NDkgZWM0OTA5MzJkOTFjYjUyZGIxMmNlMzYzM2Q3MzQ3MTg5ODczMjEyNiBweTNrCis2OTg1MCBjMjk1MmMyYjVhNGFlNjhlNzMzMjc5YzZhZmI4NGZjNDJjYWU5Nzk0IGlvLWMKKzY5ODUxIGFhMjlkMDk2NzEwNTg5ZTY3NmVhODIxZTEwY2FiZjJkNmQ3OTc2MDkgcHkzaworNjk4NTIgOTk4OGU5ZjAwNDA4ZjY1OTIyNzlhZTZkNjc0MjE4ODMxYzQyOGJkOSBpby1jCis2OTg1MyA4YTgyNWExN2NiMjczNTgyYmZmZjk0YzA1Y2RjNWVlOTM4ODdkZTYwIHB5M2sKKzY5ODU0IDdhZThhODcyODQyMWZlNWYzMjQ4MGMxMWU4NGNjZWM4YjYwNTE4NzkgaW8tYworNjk4NTUgOTZhYmI0MzllMmQwN2QwY2JhYTg3YWQ3YjViNmIxNWFjYzAzN2M2NyBsZWdhY3ktdHJ1bmsKKzY5ODU2IDZhNWJlZTE4OTNhZDgzNmMxMTIwNDA4YTI5ZWE1ZTc0MWIwMmRkOTEgcHkzaworNjk4NTcgOTE4MjY0ZmYwMmUxYzA5ZWFjNDk0NDdjMzRjNzVlZmExZGY2MmI0YyBweTNrCis2OTg1OCA1YmUyNGE1NmYwOTE4YWRkYzZmZTUyMjIyODU4MjlmZWY3Mjg5MzMyIHB5M2sKKzY5ODU5IDc2NTcxOTg2YTJmNDIwODI2NjM3NmJmMGViMjRhMjkxY2FmZWMwNDUgcmVsZWFzZTMwLW1haW50Cis2OTg2MCA4ZTdhNGE3NzQxMzg0MjZkZDdkMDRkMzJkODdhMTUxYmFkZjI4NmE1IGlvLWMKKzY5ODYxIGVjZDhlZjRlNzllNmI3MWIxMWJjYjIzNGEzYTM2NmVjZTdjYWQ2MGIgbGVnYWN5LXRydW5rCis2OTg2MiBjMzMwNGE0YjY0ZWExYTdlNTU4YzIyZWQzMWRjZWZlNWM1ZWM5Mzc5IHJlbGVhc2UyNi1tYWludAorNjk4NjMgODQ2MGU1ZWUwNmMzOTE1ZGU3ODI1ODEyMzFhZmU3NjUzNDU4MWM3YiBweTNrCis2OTg2NCAzY2ExZmI2MjJmNWE0YjhhNzU3ZjA4OTE1M2MwOThkMTk0YTY0NjQzIHJlbGVhc2UzMC1tYWludAorNjk4NjUgMDAyZGFjYTY2ZjlmNmJkZmI5ZDE5NzJmY2E3ZWQ5OGM0YmM3Y2Q2ZiBpby1jCis2OTg2NiBlZDVjZDkwNGYyMDA3YzVjZWU1Njk5MzY2NDM1YjE1YjUyMTM1ZWYxIGlvLWMKKzY5ODY4IDVmZmQ5MzI4MGE3MWI0MDdhYzg1NDllMTczNzc3NDRmMWQyZDQxY2MgaW8tYworNjk4NjkgYTBlZGExZTIyOGI4ZjhmMzU0YTQwZGZmNzc3ODIyNTE5Nzc0YTVjYSBweTNrCis2OTg3MCAwYWI4YmVmNjcxYTNkZjU5OGEwMDg5NTg0Y2VjYTExNDhjZTc4OGFiIGxlZ2FjeS10cnVuaworNjk4NzEgYzIwMWM4Y2YzY2I0MGMyNjZiOGNkNjY0YjQ3MTViYTRmOGYwYmJhYyBsZWdhY3ktdHJ1bmsKKzY5ODcyIDViNWRjY2M1MGUxMmM0NjRiMTkwNGMyOTQ0MzZlZDlkMDQ0MGU4MWYgaW8tYworNjk4NzMgNDk5MTRiM2UzYWE4MTAwZjUxMDVhNzU2MDA0MjFmYzRkMWNiYTZlNiBpby1jCis2OTg3NCBiMzUxNWVkMjgxMzUwNDE2MGM2YTczM2QwNTg2MTA4NTE0OGE3Yzk2IGxlZ2FjeS10cnVuaworNjk4NzUgZDM2Mjk2NjczOTc0YTAyMmRhNzk2MTc3MzcyOTg2YTIyNDY0ZDE4NiByZWxlYXNlMjYtbWFpbnQKKzY5ODc2IGU4OWM3ZWQxY2ZmZjQ4MGZlNWQ0MzQxMjFkOWQ1M2RlYzdkNjYwNDcgcHkzaworNjk4NzcgYWEzMDIxNjk5YzU5YWI4MGE5YTlkY2QwNTcyNjU5MGM4YmMwNjdiZCByZWxlYXNlMzAtbWFpbnQKKzY5ODc4IGNkMmVlODE5MDk1N2M5NDcwMGY5MzU3ZmU4YWViOWU2NWFiYTE2MWQgbGVnYWN5LXRydW5rCis2OTg3OSAzMzlmNWMxZWYwZWRmNDMzMmFhZDlkYjExYmVmZjYzNTg0M2ZmNzgxIHJlbGVhc2UyNi1tYWludAorNjk4ODAgMGE1YzI2ZDBiZTU0MGRjYzAyZDM5NmU4NzQ1MThjYzNiYTExODU4NyBweTNrCis2OTg4MSA2MjBlNzQyY2RmNjhhNzQ1YjA2MDE4NzViZWVhZjdmNmViMTIwMjkxIGxlZ2FjeS10cnVuaworNjk4ODIgMGVmZmRhNTQ4MTllMmM0NjdiZDliMjZiY2Q2OTBhYTFkYmQ1ZWNlOCByZWxlYXNlMjYtbWFpbnQKKzY5ODgzIGU1ZTVjYTA0OTFiODQwODI1YTAyZmQ2ZWZjZDMwODAzNmI5ZGIzNjAgcHkzaworNjk4ODQgMTNhMWNiZjExYTIxZWFkMTdmZjI0ZWE4YjFlNmEzNDkwMDlmNTlhYSByZWxlYXNlMzAtbWFpbnQKKzY5ODg1IGQyMmQ2ZTlmNzkxYzJjZjczNjY4N2M1MDlhMzhiMTA3OTFiNWY1NzYgaW8tYworNjk4ODggY2UwYTk1YWY2YjFkNDFiYmMyOTA3ZDNhNDhkMTc5MTA1ZjcxYmMxNSBpby1jCis2OTg4OSAyNzJhYzY1NGZkMWFmMjAwNzRlOGM3ZTgwNzRlODA5YzY4NWU0NWFmIGxlZ2FjeS10cnVuaworNjk4OTAgZmI3YmU0NWE5NDQxOGVmNjFjYTcwMzY4ZGM1ZDA5NzdhMmQ0NGNlYyBweTNrCis2OTg5MSAzZGY4YmUwMzYzMjQzZTBhOGVlZWU4ZmQ5YTAxYjMwZDU0YzY5Yjk4IGlvLWMKKzY5ODkyIDlmNmNiMDQzN2JlODIzNDNlZmNiZjk4Njg1YzRhN2E1ZjMzODkyNzIgaW8tYworNjk4OTMgNDQ0OTZjZDBiYzc4MDNlNDg1MThjMzU2Yzk5YWExZTc4ZDU1ZDYzNSBpby1jCis2OTg5NCBkYjE0ZWNhMDE2MzUwNmRjZmFmYWIzMWJkYTg3NTIwNGRiYzA5YjZjIHB5M2sKKzY5ODk1IGI2MWYzM2FmMzc0YmNhNzJiOGI0ZmVlZjBjNTExODFlNWQ1YmRmNmIgcHkzaworNjk4OTYgOGE0ZGMwMDg4ZTg2MjZiNTZjZGY5ZmQ3NWRhMDIzYTZlZmM4NDE2YyBsZWdhY3ktdHJ1bmsKKzY5ODk3IDMyMTliMzRhMzMyMDYxMjg5NGZhYTRjOWYyOTVjMTY3NzI2Nzg2NTEgcHkzaworNjk4OTggYTM2NjY4OGE4ZjBkM2M5ZTJkZTQ3MTZiMDA4MGYzMjI0NzFiNzI2ZCByZWxlYXNlMjYtbWFpbnQKKzY5ODk5IGM4ZDA2ZGZkNGMzOWY1Yzk2ZTBkYTc4OTkxNjg5MDliZTYyMzg5NWMgcmVsZWFzZTMwLW1haW50Cis2OTkwMCA1YmRiOWM2NDJjY2NkMTYyZThmMzk3MWRlNDJmODdiYTZmZWMxNjQ2IHJlbGVhc2UyNi1tYWludAorNjk5MDEgM2U3NzMzY2YyNzllMzRkYTVmYWM5MzBiNGE4YzAwMWUyYTQzNGVkZCBsZWdhY3ktdHJ1bmsKKzY5OTAyIDJiZjEzMzdjM2E2MDVkY2EwNDBmOTE2ZWUzZjQzZTY1ODcyZTJlMTQgbGVnYWN5LXRydW5rCis2OTkwMyAxZjFlMjJlZjU1NjA5YWUxNTg3OTk3NjU4ODY2NWY3ZDI4MDE4YjEwIHJlbGVhc2UyNi1tYWludAorNjk5MDQgNWM4NTlhZWE0NmI5YzdkY2E1NWQ0MWNhMTRlZTAwMTc1N2E1ODcxOSBweTNrCis2OTkwNSAwYTU5OGRiZWQ2NzkyNjZmNjNmMTk2ZDkzMGJiOTkxZjMwYjE2NmY5IGxlZ2FjeS10cnVuaworNjk5MDYgMDE3NGI5MzY2OWNkNDg4OWU1NzdjMWMwYWY4YjkyMzQ2MGRjYjA5OCByZWxlYXNlMjYtbWFpbnQKKzY5OTA3IDE2Y2NhMzBjZjNlYjgzYjFlMjYwNWYzMjk0ZDE2ZjJlNzcyNjAzOGQgbGVnYWN5LXRydW5rCis2OTkwOCBhMGZlY2JlNzM2MTZmNjI4M2UzZGUwZjY5OTkyYmI3OGMzY2I0M2M2IGxlZ2FjeS10cnVuaworNjk5MDkgMDUwNDA4N2EyNzIzNmIzNzg1MDIwOTAyNTdjNjYzYTZkMDIyYjc4NiBweTNrCis2OTkxMCBjMWYwMjZlMDg3NWUwNDliMDhjMjc1ZGU5NTVkZjY2NmY2N2E4ZWNiIHJlbGVhc2UzMC1tYWludAorNjk5MTEgOWZlNTMxNTY1NDNjZjUyZjgyYjE2ZmQzNzlhMjcwNzU5NGY1ZjM3MyBpby1jCis2OTkxMiBmOWVhZDJlMWEwM2NmZDhjMjNjODhlYWM0Y2M1ZTQxM2JjNTg2NDAzIHJlbGVhc2UyNi1tYWludAorNjk5MTMgYmMzYjA3M2FkMTQ2ZDU5MTU5Y2Q0NzczNGY2NDFiNjhmNjIzNjk1NyBpby1jCis2OTkxNCBhNTJlMTQ1NDU1NjE0ZTdmY2I2NzMxODE4OTY4OWZhOTNlZTRjZWJmIGlvLWMKKzY5OTE1IDY2Y2U4MGU4ZTUzNzk4ZTgxOTk2NjAyNjNjOWM2YzQ4ZTBmNzhkY2UgaW8tYworNjk5MTYgZWYzYTZjMTY4Mzc0YzQ4ZGMwMTNhOGM0MTBkY2ZmZTQ4ZDYzZmExMiBpby1jCis2OTkxNyA4MzY2NGU3ZjcwOGFiMzk3Y2RkYmI5NmQ3NWZlYWUxZTA2ZTk5MzZmIHJlbGVhc2UzMC1tYWludAorNjk5MTggOTQ5NDFiMDU5ODAwZTM0NmIxNTcxYmNjMTQ5YTQ4ZWNlZGQxMzFkZCByZWxlYXNlMjYtbWFpbnQKKzY5OTI0IGZhNzQ3NjYwZDRkNDE2OGNkNWIyM2JiYzcwOThiMDUzZWRiNWIxOGUgbGVnYWN5LXRydW5rCis2OTkyNiAwNGYzY2YzMmFhNzdmODM2MDkwNmUxMjE1NmRiN2Y0ZjBkNmQ4MTgzIHB5M2sKKzY5OTI3IDVjNzRlNDBkMTkyNmU1YTZlODQ4Mzc5MDgzMzllOTNhODM0MGM2ODEgbGVnYWN5LXRydW5rCis2OTkyOSBiMWU2MGI0N2UxNjAxN2E2YTFmYzJiMGY3ODZkMTM3MDk2OTFmZWI2IHJlbGVhc2UzMC1tYWludAorNjk5MzAgNTYxNzQ3MTAzN2JjN2FmNWNjYmE2YjY5OGI2ZjcwNDcwYmVjYzcwNCBweTNrCis2OTkzMSA4M2ZhMjc0ODNmZGM5MzkxYmM0MGM3ZDNjNmY1ZTY0NzlkZjI0MWZhIHJlbGVhc2UzMC1tYWludAorNjk5MzIgNTk1MmQ0MTE4OWFkMWFmMTExMTNmYzg4MDBhZTc2MmQ5MjU2MjNiYyByZWxlYXNlMjYtbWFpbnQKKzY5OTMzIDkwNDEyZGZkYWJhMzA2YTI0OTRkYmEwNDRjNjNlMWJmNzRmZWRhODQgcmVsZWFzZTMwLW1haW50Cis2OTkzNCAxMmM2OWVmNDNkZGU4MzJhYzBkN2YyMmJjMzEzNjg4Nzg4ODBiYWRiIHB5M2sKKzY5OTM1IGMwYjliYzI1Y2ViYmUzOTk3YWIzYjg1NDVjNTllMDAxMTI5ZTI2ZmEgcHkzaworNjk5MzYgYmM3MGVjOTdlMzlmYWY1NzY2OWZkMDFjZjdjOTNjNzFiNzU4ZWFmNyByZWxlYXNlMzAtbWFpbnQKKzY5OTM3IDljMjVhMDc5MDAyMmMwNjE3NWJhNmY1YmRiODA3ZWNhNDZiZTI5ZDYgbGVnYWN5LXRydW5rCis2OTkzOCBmYWY5NjgyMTJmMzFkNmEwN2FiZmY3ZmQ3NGQzZTcwMGNjMzE3OTgxIHJlbGVhc2UyNi1tYWludAorNjk5MzkgNTc0ZmVmNTNhN2UzZGU0OWUyOTE4OTU3NzEyNThkMTcxMDhlY2FkZSByZWxlYXNlMzAtbWFpbnQKKzY5OTQ2IDQ1YjQ0YmQzMmY0MTY1ZDE2OWMzMWJlOTYyNmJjNjliYThjNGY0NzMgbGVnYWN5LXRydW5rCis2OTk0NyBhOGJiODJmNWZkNjQ3YWQ3MGMzYjAyODY1MGY5YjZjODhjODhlMGFkIGxlZ2FjeS10cnVuaworNjk5NDggMmY2YjM0ZjY3ZWYwMjAxNjU5ZWZkYWQ1N2Y3OTFiZjEzYjMwMDI4MCBweTNrCis2OTk0OSAyZTI1NzcxZDcyMDIxNjFmMjU0MGY5MzFiZjA1ODEwOGZlODU2NTIxIHB5M2sKKzY5OTUxIDYwZDA5YTcxNjU1NjgwYmQ3NmMyMTUxYzhhYTFjMzgwYzY1MGEzMjYgcHkzaworNjk5NTIgMWQyNDczOTUxMWM5YzkyOWZlZmJjZjAyNmE5YmFiODhjYzY1N2E4MiBsZWdhY3ktdHJ1bmsKKzY5OTUzIGI4YzRhMzc5M2QwZjUxMmE3ZjBkOWEyOGNjMDEyZmVjYmFlZGI5MTkgbGVnYWN5LXRydW5rCis2OTk1NCBhN2ZkZjY5Y2FlMTM1YzBhYzQ5Y2ZiY2ExMDcwMDdkZmMwYWQxODViIHJlbGVhc2UyNi1tYWludAorNjk5NTUgNDZjYmU2N2I5NjYxZjcxMTlkYzY4OWIwYjRhMzFiMjdkMzA5YjFhZSBsZWdhY3ktdHJ1bmsKKzY5OTU2IGRjMzE1ZGY3ZTgwODYzMjc5NWM4MTgyZWRjNDliMjg5ZDQ4MDMzMTQgcmVsZWFzZTI2LW1haW50Cis2OTk1NyA2NTc2MmEwNmI4OGYzY2YzMDMxMzU4YWIxZTAzZDZkMTNjYzc4YjYyIHB5M2sKKzY5OTU4IDMzN2JkNTA5NDU1YTE5NzE4NzAzNzVhNTk1ZTUwMzIxNjQ1YWJmNmQgcmVsZWFzZTMwLW1haW50Cis2OTk1OSAxNzdiYTEyMmJiMWIwMmMzYTMzMmIzMTVkOWI1OWJlNTU1NjFkNzllIGxlZ2FjeS10cnVuaworNjk5NjAgMjliMTJhODliMmEwNmM4MDViMTU3MjU1ODA4MDgzOTc4ZjE0OTAwNyByZWxlYXNlMjYtbWFpbnQKKzY5OTYxIDY0M2Q4ZDRmYzhlYmNjNjkxNTVkMzQxNjM1N2FhZGNhOWMwNTMzODggcHkzaworNjk5NjIgMDhhMjk2YTg4YzNlMGIzNGIxNjFlOWI5NTA4NmExODE3OTVhZWZmYiBpby1jCis2OTk2MyA4ZTBjZWI5ZjVjMmE3M2YzNGZkMjU5NjM3YTJmODdlYjgyYzkyNjRhIGlvLWMKKzY5OTc0IDQyMWEwMzY5ZjIzOTRhNGE0NzYzYWMyNWI1MjRmN2JhMGViZTg2NWMgbGVnYWN5LXRydW5rCis2OTk3NSBhYzI2NzY1ZmIxYmI4YjA0NjFlZjViNThhOGU0NDBkYzhkNTIxMjFhIHB5M2sKKzY5OTc2IDcwMmYxODk5MTYxZTE5NDFkMzUwNDVhMGM3ZjQxYWQzYmVmZGQwN2QgbGVnYWN5LXRydW5rCis2OTk3NyA2OTJjOGE5ODgwMjY0YjJlNmZjZjEwMjJhN2VkYWUyMjIwZTA0NzA0IHB5M2sKKzY5OTc4IDAyZWVjZGIxNzM1ODA3OWNlMDczNmYyZWVkZTczNGMyZGFmZWFhNWEgcmVsZWFzZTMwLW1haW50Cis2OTk3OSBmN2IwMzAxMDE2MmM0MTE3ZDdkN2NjYWVlZmY0ZTVkMzFmYzRmY2EwIHJlbGVhc2UyNi1tYWludAorNjk5ODEgMGVlM2I5YTdmMjA5N2U5ZGE3NzY3ZjlkNzVlNGJlZTM3N2FhNzQ0NiBsZWdhY3ktdHJ1bmsKKzY5OTgyIGQ3OGIyOGEzNTI0YzVhYWU2YWE1YmUzZDViZThhODgxMzM5MGIxNzQgcHkzaworNjk5ODMgYzA3ZDdmZDI3NDY5OTBlMDI3NzliZGJlNDg2ZTRjMDk5NjU2OGZlNyBsZWdhY3ktdHJ1bmsKKzY5OTg0IDg4NzM4NTRiYjVmOTA3MmU1YjczYjYzNzg3NDQ4ZDQwY2U2NzI5ZGEgcmVsZWFzZTI2LW1haW50Cis2OTk4NSBjODAwNDgyMTVkZTU4MDBiMDZkMzRmYmZmMjM2YTlkOWQwOTAwMDc5IHJlbGVhc2UzMC1tYWludAorNjk5ODYgMDUyZmI1MWY4ZGNmM2I3OTI1ODlmOWQ4MGM2NzU2YjljNjFkNzA1ZCBweTNrCis2OTk4NyAzZWNkNDg0NzU2YjAyM2IzZmE4MDI0Nzg0MGM3YjM4NTMzMGE2NGFiIGxlZ2FjeS10cnVuaworNjk5ODkgZTg3MmY1ODdmMTkwMWE3NDI4ZTllYWViOWJmOTI1NTdkOGU2ZTMzZSBweTNrCis2OTk5MCBlOTliNTZkYTQzMmFmNmQxZDU2YjMyMTc3ODRlOTBiN2QyYThhZmFlIHB5M2sKKzY5OTkxIDMyM2E1YThkMTBmYzg2MDAyYjkzMTFmNWFlNzhlMzg5MWUwZTM0YTUgcmVsZWFzZTMwLW1haW50Cis2OTk5NCA2OTgxNzVmZThiM2RlOTkwZDNiNmI3MmNjYzVlYTAyNDkyNjY2NGNkIGxlZ2FjeS10cnVuaworNjk5OTUgM2Y3M2I3YWYxMzFjMTVkMjk3YmQyNjMxZDA0NmU1NzI5MzYzM2ZjYSBweTNrCis2OTk5NiAzNzIyY2U0NTgzMTg5NDdhOWYyNWJkODg5OWJlYjIwNmNkZGU2NTZiIHB5M2sKKzY5OTk3IGExYjNkMDIxNjgyMGE5ZDYyODE4NzA1MDQ2Yzc4MmE4MWJmYmY2ODggcmVsZWFzZTMwLW1haW50Cis2OTk5OCA2MzI2NjY2OTFkM2Q0ODA4MzA1M2M2ZDhjMDdhOTE1MWU0ODJlYjkxIGxlZ2FjeS10cnVuaworNjk5OTkgNThiYmViMzNmNTgzMzMxYzY2MDhhZmZhNjMyYTczMWQxYTliZjA4OCBsZWdhY3ktdHJ1bmsKKzcwMDAwIDcxMmFhNWJiN2I0OGQ1ZDdjZWMzYTBjOTQwN2ZlMjdlZDNmZWZmZWMgbGVnYWN5LXRydW5rCis3MDAwMSA4NjIyODk0N2I2NWQxZjkwNmY4OGQyMzNmM2YwYjU4ZGEyZjdlODRhIHB5M2sKKzcwMDAyIDE0OWRjNGJjOGVjYTAzMTIzMDg3NjAxY2UwYmZjYTg1OGRkOTUyMWUgbGVnYWN5LXRydW5rCis3MDAwMyA4YjRkYTFmNDkzODQ1Y2EwNzgyMzEwMjJhOTFjYmM5MWY1Y2E5YzkwIGxlZ2FjeS10cnVuaworNzAwMDQgZjE3MDcyOWUzMDM4MmQ5YzAyNTllZmI3MTE3ZTUxYmZjNmVmNzM3ZiByZWxlYXNlMjYtbWFpbnQKKzcwMDA1IGYyZTZhNWVhMTBmZTBhMDk2OGFiYjA4ODI1ODk3YjQ3NTJjZGM1ZTMgcHkzaworNzAwMDYgMzY5NWNhZmVmNThkOTM0NGVhMjljYTU2OTdkYWVlMGMwOTA3NWRhMSByZWxlYXNlMzAtbWFpbnQKKzcwMDA3IGI3YjIzODg3ZmJkZTY4MTUwZTc1NGQ4N2E2MjY0Yzk1NGU2Y2EyMGUgbGVnYWN5LXRydW5rCis3MDAwOCBlYzFmOGViNGRhNTk0ZjVlZDk0MDc5NGI0ODE2N2VkMzYwNTJjZmE2IHJlbGVhc2UyNi1tYWludAorNzAwMDkgZTlkMDNmNmIwZDU5MDU2ZmE5NTQ2YTFlMjc1NWEyMTIyNTdmZmFjYSBweTNrCis3MDAxMCAyMjhmODlhZTU1YjEwMDgyN2JjMDkwNTliZmQzNjY2MDY1NDEyNGVhIHJlbGVhc2UzMC1tYWludAorNzAwMTEgMmI2MGI0NjUxM2QyNjNmOTIwNWZiZjRjZjk4ODU2N2Q3ZThlODJjMSBsZWdhY3ktdHJ1bmsKKzcwMDE1IGM0ZjI3ZTU0NmNmNTE3NWU1MmRjMzY1N2JmZGM1ZmYyZjcxMzkyMGMgcHkzaworNzAwMTYgMTA1YTUzMTdlNjhlMTI5MDk5ZmY5ZTk0MWUyMGRlMmZmMzkyZjZkZSBsZWdhY3ktdHJ1bmsKKzcwMDE3IDhiNjg5Njg4NzljNzBkZjEwYTAyZTAyZTNiYTY2OTNjY2QzMzg2ZDIgbGVnYWN5LXRydW5rCis3MDAxOCAxNjczZDk1NzMxMWEwYmI0YTkzM2Q2YmE0YWNmYmIxYjk5MGVkZmEyIHJlbGVhc2UyNi1tYWludAorNzAwMTkgNGZkODBlNjZiMTA3MjJmM2Q0MGYzNzc0NTNhMmYxNjRkNzYxYWM0ZSBweTNrCis3MDAyMCBkYjFkYmYwNTcxNDdhNGE5OTY0OTljN2IxYjA3M2Y5MTgzMWZmOWQ4IHJlbGVhc2UzMC1tYWludAorNzAwMjIgODY2Zjc0N2MxOTZmMTM3NGQ5ZGZmMDU1ZWQ4ZGZkYjMxZTI5M2QxYSBsZWdhY3ktdHJ1bmsKKzcwMDIzIDgwMDNhMmZiNjI1YmExMDM4N2RjOTExZTU5YTBmNjNhMjk3NjdmY2MgbGVnYWN5LXRydW5rCis3MDAyNCA1ZGFjMDgxZTczMGQwODA1Y2E1NDhkOTVkODA4ODQ5ZjYzYzVkMDgwIHB5M2sKKzcwMDI1IGViMDNlNWFlNzEwOWE2OTc0Y2MyMThhZGQ3ZmI1N2EyYTJkN2ZhODggbGVnYWN5LXRydW5rCis3MDAyNiA4Mzk5ODM1OTUzMzgyOTJhMzQwZDQ2MDM2YjQ1ODllZTBmNzlkZWVjIGxlZ2FjeS10cnVuaworNzAwMjcgMWY4NDcwNmU4MTZjMmU3MGVjZjYwMjZiODZkNzU0YjE2ZDgyOTMyNyBweTNrCis3MDAyOCAxZjBkZTQ5NGJjMTMxMDc2ZDQ1NGUzMWUzY2Y0N2ViMjYzYjcyMjI4IHB5M2sKKzcwMDI5IDliNjJjYjY1Mzg5MjI3NjVhODI0YzljYjQ1YzcxOWFmZTU5N2JmNDUgcHkzaworNzAwMzAgYTVmMDM3MTg1MGZmNTRmNDVmMmEyNzllNjIwNWQzZGI1ZTI1Y2YxOCByZWxlYXNlMzAtbWFpbnQKKzcwMDMzIGIzMDZjNzJmZmQ3MDEwZWQxYTZjNzY3ZjlmNGQxZThiNDRjNzRlMDAgaW8tYworNzAwMzUgZDE1NTZiODE5NWYyOGFkNDU3MjM2ZTk5OTMwNWI4MDIzN2Y3ZDIwZCBpby1jCis3MDAzNyBlMDk0MmM2NzUzNzI4Yjc0YmY2Y2NhYTlmMWZlZDBlOTBjMzIxOTUxIHB5M2sKKzcwMDM4IGI3MWRmNDRkNWJiZjBhNmFiY2ExMjA4Y2JjYWJmY2ViMzg4MDFhMDUgaW8tYworNzAwNDEgZmM4M2NhMWFjMTEwODgxM2UxYWZlYzRkYjAyZGMyMzEyOWM2Zjk4MyBpby1jCis3MDA0MiAzNWMxZDUyNjA3Yzg0ZjlmNzIxNjY5ZTYzMTFmYTRjODhlNmM4ZjEyIGlvLWMKKzcwMDQzIGQyNDUzM2ZiM2Y0N2ExOWZkMDRkY2FiMzZmNmIyMTlmMDJlMDA3M2EgaW8tYworNzAwNDQgZjc1ZmI5ZjQ3MWQwOWIyNWNkZGIwYzU4NWQ2NWUyZWYzZWYwY2E3NiBpby1jCis3MDA0NSAzMTQ3YjNiNzhkY2Y3ZWIzMDU2MjY4NDlmZDNiMjU1OWY1ODU1OWU4IGlvLWMKKzcwMDQ2IGEyNjVmNTk5NjFmNjZhM2RlYmM0MzNkMTRlNTMyOWFiMTA1M2JlZDkgaW8tYworNzAwNDcgYzg0ZGNhYzdlNjlhMTg1MGU4NWZkYzZmN2RmYzAxMzlkNzYwYmMwMCBpby1jCis3MDA0OCBmMzM5ZGE4Mzg1OGQ5OTEwNDQ0NGMwMDdhYzljZjM3ZmU3Y2QxMWRmIGlvLWMKKzcwMDQ5IDc4OWZmOGJkMTkwYTViODAxNWQ1MTcyMjU5Yjg2ZTBhMTEzZDliZGUgbGVnYWN5LXRydW5rCis3MDA1MCBiZTVhOWM4NGY2YmNjYTdlYzQ5YWQ2ZDMyODBlYTI1MWQwNTE5OGMyIHJlbGVhc2UyNi1tYWludAorNzAwNTEgMjA2MDM4MTIxYWRlYzk3NTUzNTdiMzUwZmJmODAyM2FiM2NjOGM5NyBweTNrCis3MDA1MiA5ZGU1ZDYyYWQ0MDIyOGVmNjJlMjdlY2FlOGFlNzRhNDJkNDMxYzZlIGxlZ2FjeS10cnVuaworNzAwNTMgYmE2YzMwNmNmMmNlZTc3MWZjYzE0Mjk1NDFlY2ZiNTA3NjQ2YzhhYyBweTNrCis3MDA1NCA5MDAzN2Y5N2Q4NzA3YmNmZGRmODA4M2VlNTEyYzUwZWNlZDA2YTg1IHJlbGVhc2UyNi1tYWludAorNzAwNTUgNzU5ZGJhY2U1MWQyZWQxYmVkYjY0MDU0YWZlMmNiYTZhMWNjYzAyNCByZWxlYXNlMzAtbWFpbnQKKzcwMDU2IDI5ZDY1MmUzZjJkMzJhYjljZjgzYmJlNDRlNmFiZmI5OWYyMDI4NmEgbGVnYWN5LXRydW5rCis3MDA1NyAwZTZmYWYyN2I1MzFmMjczZTE3MjI2Yzc4ZTg0MDM2YmFiYjUyOWY4IHB5M2sKKzcwMDU4IGM2NGQ0YThhZTJiMmVjYjgwOWFjNmQ4NWY0ZTVjMzg2YTE3ZWEzMTIgcmVsZWFzZTMwLW1haW50Cis3MDA1OSAyYTBmODRhYzQ5ZjA5MDNjMzFkZDU1OWFhZTA0NWY4NDNjNjJlZjNhIHJlbGVhc2UyNi1tYWludAorNzAwNjEgNjcyNDI1YmUzODhhNjkyMWRjOGE3NmFiZjgzZDQxOTJjYTFmNjVkOCBsZWdhY3ktdHJ1bmsKKzcwMDYyIDRlMTU1NjAxMjU4NDU4M2ExODY4OWJjNWI3ODcwNmIyNjY3YzNmY2UgbGVnYWN5LXRydW5rCis3MDA2MyA3OWU2NmMxMWRjODBjYTJhMGFkODBiMDVlYTc1NDkzZTE5MjZkZGUyIHB5M2sKKzcwMDY0IGFlMjI2MzFhNzg3YzQ5YjlmNDllMTUyZDg5ZWFmYmY1YWVlMDhlNzEgcmVsZWFzZTMwLW1haW50Cis3MDA2NSA2NzY1NjdlMmE3MTE5MjEyNmYwMzQyZGNhNWZjYTdiYjg3MDYwNjY2IHJlbGVhc2UyNi1tYWludAorNzAwNjcgZDFhMzE0ZTBlZmY3MjAwMzVmYmQ0NTIyMGNkZjlhOGU3ZGEzNTdhYSBpby1jCis3MDA2OCA2MDExYzA5MmUyMTM0NmVlN2IzNWI2NjRmYzUzMzdiNjE5NzZmODUxIGlvLWMKKzcwMDY5IDdmYWNhNjk1OGRhYzAyZGFiOTAzODNjYzcwZDQ3NjlhZjc3ZDQzNjAgaW8tYworNzAwNzAgMGFkM2RlMjE2ZTgzZTQzZmZlYTVmYTdlNjMwZmM2Y2M3MjQ2NWFjOCBpby1jCis3MDA3MSBlZjhmZTkwODg2OTY4YjFlYjQ2OGNiOTFlYmFlMTAzZjc3M2ZhMTdmIGxlZ2FjeS10cnVuaworNzAwNzIgNzVmZjY2OWJmOTk2ZGVhOWYwZTNiY2I4NmE1NDQzNmRiY2YzZjJkZiBweTNrCis3MDA3MyBiNDIxNDQxZWU2NzljNWU4YzNiMTI3NGU1ZjEyMTFjNjhjNjUxNDU2IHJlbGVhc2UzMC1tYWludAorNzAwNzQgZTQyODdkOGM5NzQxN2FlNTI2MGJjYzkyNWJhYWE0NzAzYmQ3YTU1YiBpby1jCis3MDA3NSA5ZjMwMDM2MTI0ZjY3OGEwMzZlMGEwMWMwMzhhN2QxOGRiZDdkZWZjIGlvLWMKKzcwMDc2IGUxY2U2NjZkNzQwNWE2MzdlNDA4NWExMTc0ZGIxMmY3NzE2MGNmMWMgcHkzaworNzAwNzcgZmMyYTZmNmQzNmFjYTUxZTVjMjYyNWFjZTUyOTM4NmY0MWU5OTg4YyBweTNrCis3MDA3OCBkNzA3NzNjOWFkYWQyZDFhNzkwYTJiNDQzMDRkMTU1Y2I1NjQwNzcwIGxlZ2FjeS10cnVuaworNzAwNzkgNWRmNjZkZmE2ZjY0YWM2NmIyM2E5N2IyZDEyZmNlOWVmN2IxYWIxNyBweTNrCis3MDA4MCAyYTQ1ODEwNmFmYmZlMzViOTZmMzgwYTEzMDJkMDBkZTAwNTFhMDcyIHJlbGVhc2UyNi1tYWludAorNzAwODEgMmM1OTAzYTAyYjM2M2EzOGUzYzgwNDk4ZTZiOThjMjAyOWJhMTU3OSBsZWdhY3ktdHJ1bmsKKzcwMDgyIDYxMmZjNmVlNjhmNzQ1MTg1OTk5ZWY3YWMwMzczNDNlOGFkZTVlMmQgcmVsZWFzZTI2LW1haW50Cis3MDA4MyBiNzYzMmRmMTEyMWZiNzIzNWZmYjMzZDRlMGExODZkMWE2NTQ3YzZiIHJlbGVhc2UzMC1tYWludAorNzAwODQgNmZkMjMxOTE3ZWY3YzIzMWUzOGI0YjM0YWU2NGZjNGU0YmUzZWRkYSBweTNrCis3MDA4NiBhNmMyNGFhY2U4Y2JkNzQxMzJlNmRjNTM1OGVmNjU3MjhmMmZiZWM2IGxlZ2FjeS10cnVuaworNzAwODcgMmNlYjJhNzY4ODBkNWZmMzE0MGI5NWZjMTEyMGNhNjk4NjU3NzQ4NiByZWxlYXNlMjYtbWFpbnQKKzcwMDg4IGFkYzliYjQ0ZWM0NzEwMWRmMTk4ZGFhYzdlMGIzMmQxNDRhYmNlOTcgbGVnYWN5LXRydW5rCis3MDA4OSA5OTE5YzFmNDc5NWVmODUxOWNiNzRiYTk4ZTU3ZDYzYTAyMThmNzE3IHB5M2sKKzcwMDkwIDhmNWQ4ZjI3YzZmY2RjOWRiNTA1MDkyNzc3NzAxNmNmNWQ0ZWExMmMgbGVnYWN5LXRydW5rCis3MDA5MSBkY2QzYmMyZTIzNzczYzAwZDhkY2RiNDdmYzY1Yjk4ODMzZTViYWM1IHB5M2sKKzcwMDkyIDYwZmNmZDEzN2E3MjkyY2YyZmViZGI2NjY1ZmE1ZDQzN2U1YzM4MmYgcmVsZWFzZTI2LW1haW50Cis3MDA5MyAwOGE0YTNmOWM1MGU5YzAxNTVkOTg2YjRmNWYwZDdmOWM0YTM0Yjg3IHJlbGVhc2UzMC1tYWludAorNzAwOTQgMGI5N2ZmYjgxMWEwMTIxMmE3NTQ4NDQwYmU5YzMyNTk0ODQxYjA5NSBsZWdhY3ktdHJ1bmsKKzcwMDk1IDE5YzFhMWNlYjEyOTU1OWVjMzY0YTRmNTg2ODg5MjBkOWVmYTlmMzggcmVsZWFzZTI2LW1haW50Cis3MDA5NiBjMmE4YTUyYjgxMWRjOGM1ZDk4OGI3YWM2NzZkOTFiYmM0MjI1MWM0IHB5M2sKKzcwMDk3IGRlMTEzYjZkMjZkMzI3NDAxYzM4NzgyY2NjYzhhNTNmOGVjOGY0MWIgcmVsZWFzZTMwLW1haW50Cis3MDA5OCBkNWYxMzRhM2E4MTZjNzA5MzFmMTU2YzI3MDc5YjcwYTMyZmFiOTZmIHB5M2sKKzcwMDk5IDhlMDNiZmU3ZWYzMzFhOWEzOTQ0MjhjN2YzYjg0MjgzMDNhMzA3NWIgcHkzaworNzAxMDEgYzkxMGY2ZTNiYjI4NzE5ODFjYmEzOGI0MjU5MDI5NDY3MWQ4MGMyMyBweTNrCis3MDEwMiBjYTg3YzQ3MDdiZmRkZDg3MzkwZWExODBlYzNiZDIwNzYwYmM5YWE1IHB5M2sKKzcwMTA0IDg1YWNhNDNkYWJjNDkzMDMyY2M5NDI0NTU2MjRjZDRiOGI3ZjJhMzkgcHkzaworNzAxMDUgZDUxM2NlMjkxZmJkMjJmYTg2YmIxYThiMWU4NjkxMzVlNTI3OGJjOCBweTNrCis3MDEwNiBkYjI5YTNmYmNiYTBmZGZmZDk1YWVhOTg0ZmFjYjAyNDk2MWVlNjJjIHB5M2sKKzcwMTA3IDg3MTE1YzcyNzEwMmI0MjA1NjJjZGJlOGE4NzRhZGMwNGM2MTU1YmYgbGVnYWN5LXRydW5rCis3MDEwOCAyZDY5ZDBkM2E5Y2E1ZTNmMDY0OTE1ODY1MDRiYjE4MDcyOTgyMTFhIHJlbGVhc2UyNi1tYWludAorNzAxMDkgOWM1NmViMTdmMzM0ZmNmOTU4ZjQ2ZjBhZDZjNDk2ZTEzZTMzZThhMSBweTNrCis3MDExMCA0ZGE1ZjBkZWQzNjIyZTEyZTE2YjlhYjhmYTY0YWM5ODAwY2M2OWM1IHJlbGVhc2UzMC1tYWludAorNzAxMTEgMTE2ZDkwZWYzMTY0OTQ5NDk5NDI1YmI4YzM1NjA3MTQ1ZTJmNzJhNSBweTNrCis3MDExMiAzNzRhOWFlNWRkMGY0MmE0YzQ0NmNjZjVkMjk5Yjg4ODMyYmY2OTM2IGlvLWMKKzcwMTEzIDhmZTI5ODhjZjU1MDkyYzgzMmE4MGRlYmJmY2VlZDgwYzlmMzhhNjUgcHkzaworNzAxMTQgN2IxNzQxZDY4MDllODk2M2I1YTg4ODhhNzI4Y2ExYmZlZjY5OWMzNCBweTNrCis3MDExNSAwNDU4NzMwZWIwMzhiOTdmZjYyOGNjNjVkYzY0MWE1YzcyNmIwNTA0IGlvLWMKKzcwMTE2IDE3ZWExOGRmY2FhNTVkMmZhNmNlNDU4MDA5NzZhYjEzMzMxMWQwOTcgcHkzaworNzAxMTcgZDM0MmE3MjViMmQ1ODk4YmUzNWI3NTU0OGVmYzkxMDFiN2M1ZWZmZiBweTNrCis3MDExOCAwMzgzMjM1NmMwOTY3NDQ4ZTE4OTgxNjI4OTgyNjhlMTA5NWY4NzUzIHB5M2sKKzcwMTE5IDZjMDhiZmU3OGZmZmViMmI2NTQ3YWY0ODU5MmEzYzAzZThjYWNhZjAgbGVnYWN5LXRydW5rCis3MDEyMCA0YTRkYTk2OGRlMmE5OGM4NzU2ZjllYTJhOTQ5ZmQzNWYwMzNmN2ZmIGxlZ2FjeS10cnVuaworNzAxMjEgMGM2MzU1NzRiMTM5ZTBjY2RhMjgzMjkzODkyOTA3ZjUxYWZiODE2NCBsZWdhY3ktdHJ1bmsKKzcwMTIyIDZiMWIyZTdhMDZlOTdkNTlmNGNlM2ViNmVlMjZkNGZhYTI4ODVmZDggbGVnYWN5LXRydW5rCis3MDEyMyBiMzczYjk5NjJjMzVhYzJkNDA0NTFiMzg4NGFjMmEyYTdjM2E0YTk3IGxlZ2FjeS10cnVuaworNzAxMjQgNGQwNzhkNTIyZjI1OTc1MmQ3YTYxNzI3YWM4Y2NjODBiOWQ4NzJkZCBweTNrCis3MDEyNSBmZDA4ZTk0NDlhNDM4ODNkNGQ0ZDBjNjUwMDczYmM2NmJhYmQ0NThmIHB5M2sKKzcwMTI2IDhmN2JlNDg3N2E2MDZmMDBhOTVhNWZkNTM5MTU5ZjMxYzIzOTdkMzYgbGVnYWN5LXRydW5rCis3MDEyNyBlOGFmNGUyNGYwOGY4ZDRkNmY1ZmNhZmEyMjdjYmU3N2ViNTNkNTU4IHB5M2sKKzcwMTI4IDI1OTZkZGRiZDA1N2I3ZGYwMmY1ZjA3MzkyODVlMDI2NzQ4ODExMTAgcHkzaworNzAxMjkgNWFkODhiOTE5MzE4YTU0NTM1MzhmN2JmOWJiN2UyZGY4NjIzZGE1OSBweTNrCis3MDEzMCAwYTYwOWJhNTRmNWM2NTk0NWM0Zjk5Zjg2NGU3YmZlOTExMTkzYTFjIHB5M2sKKzcwMTMxIDk4MjUwMjgyNmY3ODk4NzY2ZTI5ZGRlNjA1Y2UzNDFiMzkxMDViOTUgbGVnYWN5LXRydW5rCis3MDEzMiBhZTcxZGY5Mzk0ZGFjOGJjZDAyMTVlMDYwNGU2NjBhN2ZhNTRlZDM2IGxlZ2FjeS10cnVuaworNzAxMzMgMTE3NzI1ODZiYzQzOTdlZDY4NWVmNGNlYWVhYmNlOGU2ZjIyMThkMCBpby1jCis3MDEzNCA3MzhmYWQzOGE0YmZlNWI2MmNhYzgxODc5MTM5YzBhZjg5YTM5OWI2IHB5M2sKKzcwMTM1IDViNGU4ZjRlOWNiZDYyZTk4ZDVjZGQ0ZGNmZDZmODE5NGQ1NzFmMWUgaW8tYworNzAxMzYgNjFkMjBlOTE5YTllNjZmOTUzMzUyYjRhZjJlYjZmMjJlNmMyNTVjMiBsZWdhY3ktdHJ1bmsKKzcwMTM3IDgwMjMzZGYyNGY4Y2FkNWFiMmVlYmVkNDI0YTIxZGU1OTQ2NGFhZTIgbGVnYWN5LXRydW5rCis3MDEzOCA5MjBhNDFkNTgxYjU5ZWVmMzQzNzZkMGJhNzVhN2VkYmRiZjU4ZjViIHB5M2sKKzcwMTM5IGU2NzNmOTM5MjQwMmQ3NTU0Nzc2N2JlNDJiYjZiNzU0ZTU5N2Q0YjYgcHkzaworNzAxNDAgYzk2ZTFhYjRkYWIzYWEwNTM4N2M1Yjk5ODc3ZWZjNzlkYjg1MzkzMiBpby1jCis3MDE0MSAzOGFhNmYzNmNlNGZjMTAxYzFjMDljNzg2YmZjZWUyMDM4NjQwZTM2IHB5M2sKKzcwMTQyIGQ3NzE3MmViNmZlNzg5ZDMzYjkxNWMzZWEyZGZkZTM4ODEwYTliOGUgcHkzaworNzAxNDMgM2I4ODViOTJhZjZjZGNkNDE4MjRmOTY1OTJhMDU3OWQ4OWZiZjM5OCBweTNrCis3MDE0NCA3N2VmYmIzYzMxMTBjMDI5Nzc0ZjdmZDdjZWNlZjNjZjk4ZDdhMjdkIHB5M2sKKzcwMTQ1IDAxZjgzYmI0YTFjNGQyYmY5NzZjZTEyNjRlNWY4ZTNjNTVkNTZkYTUgbGVnYWN5LXRydW5rCis3MDE0NiBmNjMyYTRlNmVlMzE0MmNmZGFiNzIwYWI1OGUzNjJjYWY0M2Q0YzVkIHJlbGVhc2UzMC1tYWludAorNzAxNDcgNzExMTg0NWMyZjVlM2EyMmU1MTkwZDI4NGY2MDhmYmNlNWQ1MjNiNyByZWxlYXNlMjYtbWFpbnQKKzcwMTQ4IDdkNjkwNzBhM2Q3ODNkZWIwZjEyNDAxZTBlNThjYjYwMmVhZjhlMWYgcHkzaworNzAxNDkgNzc4NTk5Y2U4MWExNGM2OGE2YzdkYmQ5NWJiMGU3OGY2YTM4Yzc4OSBsZWdhY3ktdHJ1bmsKKzcwMTUwIDhhM2RhZGNjZDIwNzUzYWFhNDg1N2RlZjIzNjMzODNmMjJkZGY5MTAgcHkzaworNzAxNTEgNzFkYWUyMmUxODFkOTgzZTI5NGNhY2Y4YjI4Yzc5YmI2MGRiOTA0MyBweTNrCis3MDE1MiAzMDQ5YWMxN2UyNTZiYjMwYjc5ZjExMzRhMzdiNjU3ZTMwZDNiNzhiIHB5M2sKKzcwMTUzIDU4ZGI0ZGViN2FiMTZkNzdkYTA5YjIwNTQ0MjViMWVlYjg0MWRkYTkgbGVnYWN5LXRydW5rCis3MDE1NCBlYmUxMDgxMGViZWRlY2JmZmVjNzk2OGNlZWY5MWVkZmM5NjY4NTMxIHB5M2sKKzcwMTU1IDAxNTlhYzJiYzc4N2M0OTk4MzVkZDc4NDMwZDM3NjI2MDA3NzJiYzUgcHkzaworNzAxNTYgZTM3YmIzMDI1NWYzMTE3MzYwMzk5Y2M0MGJhYmNhN2Y3MmE3ZTNlYyBweTNrCis3MDE1NyA0NTYzZTYxMjA1NDRjMDc4MWY4ZWY0OWI2ZjAxNDhjMjViNTY4NTIzIHB5M2sKKzcwMTU4IDE5NGZkNDAxOTIyZTYwN2RiOTExNzhjNzY5NjM2OTcwYjlkMjZmYTMgcmVsZWFzZTMwLW1haW50Cis3MDE1OSBmODY3MGE3ZGEyMjk2YjAwYmU5YTVkN2E3OTY4NTkxMjEyY2RhOGJlIHB5M2sKKzcwMTYwIDc2OGFlZWEyYmMwZmRiYTM3M2QwNTFlM2Y0OTY5M2UyMGNmYmRjZjEgcHkzaworNzAxNjEgNTVmM2I4ODFjZWQyNjM3MWM2OTVmZTBjNTU5NzZiZTJkYjAzYmVkOCBweTNrCis3MDE2MiAwYTUzM2RjMWRlYjIyNzcyNDllMWFjYjRiYzQxMzRhYTdmNWI4NDg0IHB5M2sKKzcwMTYzIDc2YTU3OWI2YmFkZTk1ZDFlYTE5NGQ0ZjU4YTgyODIwN2ZmYmRlOTUgcHkzaworNzAxNjYgMGMwMjg2ODViNDRjM2JiNGExMGIxNjEyZWMwYjA4OTA2MDVmYmM5YyBsZWdhY3ktdHJ1bmsKKzcwMTY3IDI0MDIzMWFjNzljZmQwMTcxZDA4NzU4MjZmMDZjMjcyZjdjMWMwZGQgbGVnYWN5LXRydW5rCis3MDE2OCBlYjJjMzVkZDIyNWFiMzQ0Mzk4MmQ5MjY3ZWM4MDZiOTQ4NTdlYmEwIHJlbGVhc2UyNi1tYWludAorNzAxNjkgZmE5Y2M0ZDQxODVmN2ZkMmM5ZDEyNDlkZjA3ZjNkZWJhYTM1YzFiZCBsZWdhY3ktdHJ1bmsKKzcwMTcwIGNlMmI3NTlkYzdmMzVmMTZmYjZkMjRlODM0N2ExYTlhZmJiYzI3NmEgcmVsZWFzZTI2LW1haW50Cis3MDE3MSA0ZDBkNjE1ZDM3ODRjMmQxODQ3YzQzNWQ0MjIxNzhjNzNhMDRjOTZhIGxlZ2FjeS10cnVuaworNzAxNzIgMjYyOWM0N2ZhNmJjZTRmNDg3Y2MzODc4MDdhZmFhYTEyOGIwYjFkOSBsZWdhY3ktdHJ1bmsKKzcwMTczIGM4YThlYzg3ZmYxZjJmM2UzMjcyMmMxMDBlNDM1NzNkYTQzYmE3MzEgcmVsZWFzZTI2LW1haW50Cis3MDE3NCA0MWU0MDcyODY2MTA1ZDc5NDk5MGZiODUzOTYzZTQ0NTExOTE4YzI3IHB5M2sKKzcwMTc1IDMwZWVhZGM0NjUyMGZiZTQ2NmFmNjRmZjM3YzE1NjIzYjNiZjVjYjEgcmVsZWFzZTMwLW1haW50Cis3MDE3NiAzOWU5YTIwYjdkN2Y1MDU0ZWJlZDljYjI0NDlhNjFmNWFiZjZkZWVlIGxlZ2FjeS10cnVuaworNzAxNzcgZGMzZDI0ODI0YjYwMjdhN2NmMzc1N2EyZjZiODk5ZjJlNGI0YmYzMyByZWxlYXNlMjYtbWFpbnQKKzcwMTc4IDI3NjI0NGZmY2FlZWUxY2ZhNDYyYWE1MGZlZmRkZmY1ZjY2YmU4OGYgbGVnYWN5LXRydW5rCis3MDE3OSA1ZjI0NWM3MDBiYmIxNTBhNWFhYjUyY2E0YmZkYmUxNmI1Y2Q2YWNlIHB5M2sKKzcwMTgwIDRiNTQzMWZiMmU5MjAyMWRiOGQ0Mjg2NGUyMTA5YjA2MjlhMzE3OTQgcmVsZWFzZTMwLW1haW50Cis3MDE4MSBmYmM3NzU5NzYzYjJjOGMwYmQ2NzM3YTFkMzRjYTFiMTA5NzBlYzFlIHB5M2sKKzcwMTgyIGVlYWE4N2ZjM2JmZDBjYjc1Yzc3ZTlmZTMyNjE1MDRmYjEyNmY5MDAgcmVsZWFzZTMwLW1haW50Cis3MDE4MyA3NTc5MjkyOGZjZTg5YmNhMWU4YzUwMWRjYTc3MzcwYTRlZjlhMWYxIGxlZ2FjeS10cnVuaworNzAxODQgMzNlOWExNDVmZDM4MzU3ZWQ0MmE1MmViZjUwY2IyZTk5YTYzZDg2MCBweTNrCis3MDE4NSA5OWI2OGQ3ZDdhODkyZjI5OWEyMDY0MWJkYzczNDdiMDI4NzM4NDk4IHB5M2sKKzcwMTg2IGZkZGVlNTQ1NjAxM2FjMDFlNWZmNTlmYjZlZjVlZjkwOTFlYWU5OTggcHkzaworNzAxODcgMWZjMWM0MWQxMzZmNGJjZDg5NmZhMGNhYzViMjMzNzc1ZWVjNmQ1ZCBweTNrCis3MDE4OCBmNDhhZjc3ZWU4NGUyMDgyOGJkNTNiNjZhMmFiMGY1N2NmNGQxZmYzIGxlZ2FjeS10cnVuaworNzAxODkgNzllYTA2Njc2MDRiMzcyMmYyZDJjZDE2YTBmMDk5NjFmZjc4MDJkOCBsZWdhY3ktdHJ1bmsKKzcwMTkwIGNkZDNmNjBkOTk3NGY0NDc2OWNmNzlkYzU5NzRhOThiYWQzMTZkYWMgcmVsZWFzZTI2LW1haW50Cis3MDE5MSAyNzViYmVlMTQ2YWIwNWJmNDg3ZjA5YjRhY2IzNDE5YzZhZjMzNzkxIHB5M2sKKzcwMTkyIGE4YjlhYTAyODg5OWJlOTU5MGJhMGIwZjgzN2UyMTRmYmM0YTkwNjEgcmVsZWFzZTMwLW1haW50Cis3MDE5MyA5Y2QzNTVhNzk4NDU2ZjgwODM3YmQ4NGI0MzMyODg0ZmUzZmQ1ZjgyIGxlZ2FjeS10cnVuaworNzAxOTQgZDAxZGM4NDdiNTg2MjFjMmU1NDVkOWNjNzQ0MzIxOWY5OGQxNjg2MyByZWxlYXNlMjYtbWFpbnQKKzcwMTk1IDdiMjc5Njc4YTZhMWRiNDRhMDc4YTgzYjQ0NWY5ZGYzMTcyMDQ3NTQgcHkzaworNzAxOTYgMjY5ODQ0NTBjN2U5YTgxODlhOGJlZjA3MTBlOTc5NTRkMDBjMDljNCByZWxlYXNlMzAtbWFpbnQKKzcwMTk3IGFmZWZiNzcxNjRhZDNiZjJkYzE3NGUwN2Y2ZDBhOWUxOTRiNzA3ODIgbGVnYWN5LXRydW5rCis3MDE5OCA3NzU4MjljZjAwZDJhYmVjNGI0Y2RiNTYxOTUyMzE0NzIwZGM0Y2E4IHB5M2sKKzcwMTk5IDhkYmQxYjk2ZmE2YjY5MGZkN2RjMzkxNWQxMGJlMmI1Zjc5MTc1ZDkgcmVsZWFzZTI1LW1haW50Cis3MDIwMCBjNzcyMzYyNmU0ZTEwNjgwODM3YTYzY2UyNGMwODBkZjJlM2Y0NGM1IHJlbGVhc2UyNS1tYWludAorNzAyMDEgMWY5ZGU1Mzk4M2MxNTUxMzE4MGUxMzQ2NzU3MmU0NjVhMWUzYmQ2OCBweTNrCis3MDIwMiBiZWJjNGVlZjllODkzYzQwMTkyYzhhZWEyZWRjODk2NmExNzlkMWQ1IHB5M2sKKzcwMjAzIDlmYTc5NDk2NDFkMzAwOWJiNjE5ODVhYmVjZmU5MmIzYWI0N2YwNjcgcHkzaworNzAyMDQgNGEzYjQ0YzIxYjRmM2RhN2M4MmQ1YjUzMjFmYTU2YTMxODZmYThkZiByZWxlYXNlMzAtbWFpbnQKKzcwMjA1IDNiOWY1ZmE4YmNjZDkxZDJkM2QyMWE0YzdlMTYzYmMwM2NhNTgwNDkgcHkzaworNzAyMDcgY2FiYjBkZGNiODhlNGE3ZTMxMGVmYTQ2ZTQ3ZGQxMjIzNTMyYWQ2NyByZWxlYXNlMzAtbWFpbnQKKzcwMjA4IDBmNmY3ODdmMTAzYjI4YjQzMjM1ODZkMTczNDQ2MTQzNjI4MzExMzYgcHkzaworNzAyMDkgYWVmNWNmZTczMzU4ZDQ4ZmZkYWQ5MjJiMzFiMDBjMGFmODcyODZlNyBweTNrCis3MDIxMCBmNWI4MWJlNTkxNTk0NmUzZjkyMjRkNmQ5YmI2YWJhYzk1ZWRmN2FlIHB5M2sKKzcwMjExIDkwYTY2OTE1Y2E5MTk3MDBhMjQ5OTVhNjYwYzY2MDllZjc2ZjJmZWMgcHkzaworNzAyMTIgNDY1MGVjZGZjZmI2NDIzN2QyOWMyMjkyNDM4MzJkNGJlODEyOWRkMyBsZWdhY3ktdHJ1bmsKKzcwMjEzIDJiMmI1MWYzMDQwNzk5NzdmYTE4OTVlNzIzMGM4YjdkYzBiMDIxMzYgcmVsZWFzZTI2LW1haW50Cis3MDIxNCBmY2M2MjExZTBkNzEwNWUzZjdiYjkzY2E3YTE2ZjE5NzdhYjQxNWE4IHB5M2sKKzcwMjE1IDZmMGQyMTEzZGQyMjI2MDBlZjkwZmU0NDU4ZWRjMmZkZjhjMDFmOTUgcmVsZWFzZTMwLW1haW50Cis3MDIxNiBhOTlmYTc2NzEzZmM2Njg5Y2VjMDY1NDU2OTIzMmNkNWMyOTlkYjNmIHB5M2sKKzcwMjE3IGJiYmM5NzQ2YzcwZGM0MDZiOWUwOGVlM2E3MDU1MmY4Y2NkMWQ4YzIgcmVsZWFzZTMwLW1haW50Cis3MDIxOCA0MzNlMTE2YzMzNWRiYjJlY2M4NjMwNTA1OWE5NjhjODkyNjIwNGQxIGxlZ2FjeS10cnVuaworNzAyMTkgMTE0ODUwZjczZTNhNWViZTcxNWUyNWZmMmUxYTE1N2E5NTY1ZGI1ZiBsZWdhY3ktdHJ1bmsKKzcwMjIwIDRlNzQ0OTM0OGMxYTRkNWRlMTEzNmQ4NGJkMThiNWM1MjdlZTkyOWQgcmVsZWFzZTI2LW1haW50Cis3MDIyMSAwM2M4MGUwNzQyYzM0NDA4YjAxZjUxOTVjMzRlOTI2Nzk3OGI0YmUzIHB5M2sKKzcwMjIyIDEwNjY3NzZlMjgyMDM2MjRjYzE5MmQxMzcyOTk3OWI4YmUyNjVjYTQgcmVsZWFzZTMwLW1haW50Cis3MDIyMyBjNzllYzYzZTZjMDhlZDNlOTQ2YTM0MmRiZTEyNjk0OGQ1MDMwMzY0IGxlZ2FjeS10cnVuaworNzAyMjQgYjljZDY5MzkyNjY2N2QxODY0ZDllMmU3N2JjYmQxMDM5N2VkNmMyYSByZWxlYXNlMjYtbWFpbnQKKzcwMjI1IDZkYmIyYzFjMDkwMDlkNjYyMjBlZTZkMjAzOTIwYWM2MzBkN2RiMGUgcHkzaworNzAyMjYgZjUxNDVhYmQ0YmEyNmIxMGE5OGNkNjIxMzg2OGY0ZDNlZTNmYTUyNiByZWxlYXNlMzAtbWFpbnQKKzcwMjI3IGU5ZTQ2YWRlNjFjNzg2ODQ5N2QzZmYyODdmNTA0Y2FlMzc2ZjAxZDIgcHkzaworNzAyMjggYTVlMzJjMDZlMTRiMTI4N2M4ZWM2OTI0NmE1OTdkNWE2ZmFhZmFjZiByZWxlYXNlMzAtbWFpbnQKKzcwMjI5IGE4OWZkYmIyM2E0YTc4NTZjN2M2ZDIyM2Y4OGJmZjBhZjlhMWEzZDAgcHkzaworNzAyMzAgYmMxY2UzNjg5ODZlNDViMWZhZjk2ZjkzOTk1ZGY0NmJjZDc1ZTdiOCBweTNrCis3MDIzMSAzNmQ3ZmFhNWZmOTYxNGU2MjdkZjBiZGQ1YzY3YzhkYmYxNzU4MDQ1IHB5M2sKKzcwMjMyIGFiYTQ0MDRmNWQ5ZmY1MTllZWQ5YmYzMGEwZTcxNmYxNjEwOTUyYjUgcHkzaworNzAyMzMgYmZjMmZhNGM4NDQ0OWI2MWQ5ZGIxYTM3ZmI2Yjc3NDNiYTU4NzMwNCBweTNrCis3MDIzNCBmN2IwNmE5NjU5Yjg1MzA1YTgxYWIzMDU4YmRkZmJlZGQ1NGQ4ZmM5IHB5M2sKKzcwMjM1IDQzNzA0NGU2MmQzZDNiZDQ5NDY1MjQzMGE1MGY2OTk3YWMwODlhMWMgbGVnYWN5LXRydW5rCis3MDI0NCA5ZjJmODZkZjViMjY0OGNhNjlhMWI3NTlhZmQ3OGY5YzlkNjI4ODYyIGxlZ2FjeS10cnVuaworNzAyNDUgNTY5ODNjZmRmNWQ0ZTJlOGQ5OGRhZTJhMDhjYTE1ZGMzNjg3M2RkNiBweTNrCis3MDI0NiBkY2UyOGM2YjllODVhMjhkOGRhMmM5ZTBhOGQ2YTk3MDBiMDkxMDM5IHB5M2sKKzcwMjQ3IDIwMzNkNDVhNWI5OTY4MWUxNDBkZmEzYzQxNGE0OTQxMDQyYWNhOGUgcHkzaworNzAyNDggODk1ZjY4ZWNiMDU1YzNmMTU2NjU2MDBhNTMxOTQ1YzA3YzU0Y2VmZCBweTNrCis3MDI0OSA4MzZlNGRhZGY2ZDJjYzY1YjhkMGY0NTZlOTQyYjExNTEzNDkyZmIxIHB5M2sKKzcwMjUxIDEwNDVmZDYzZmE3MzM1ZmY5MTVjNTZkYjg1NDVhNmM4ZTQzZWIyMWQgcHkzaworNzAyNTIgY2YwOTNhNzYzMDUzM2NmYmRhNDc4Y2ZlZTc1MmIxZWU1MzYxZTI2YiBweTNrCis3MDI1MyA2NTM3MWRmNDFhY2E2MjQxZWU4ODEzMDU0YjBiN2U2YzQ1OTg3MWZjIHB5M2sKKzcwMjU0IDU1NDA3NDlhMjliYjg3MzA2YWM1ZjkzZjg4Yzk2NGFhZTMyMTUwMmUgcHkzaworNzAyNTUgNzBkZWNiNTgwZGQ5MWYwY2E3M2RmMTJhNmUwNDY5NmVjNGE0MjY1ZiBweTNrCis3MDI1NiBjMDZmMDJhNWU5NjI3YjE5MDg1ZjY2M2U1MTg5ODg0ZjUwNTc1MjQ2IHB5M2sKKzcwMjU5IGJjMDJkZTI3ODc0OTAzYWJkOTMwYTQ0MTZjZWYwMDZlMmMzOWIxMWEgcHkzaworNzAyNjAgYjliZDJlM2Y3OWJhOGE2NTg1Mjk5NjYyYTU0N2QwNTZmZWVhNmIwZiBweTNrCis3MDI2MSA1OTgyNTNkYjFmNWQxMTJjMzgyM2U4NGUwYmRkMzI1YmFhNWFiZDYyIGxlZ2FjeS10cnVuaworNzAyNjIgNGQ3ZjYzYWM5ZDI0NjU4ODhhZWRlYzQ2MDllNjY5MDdmYTVlMjFiMiBweTNrCis3MDI2MyBiMWVjZmY1ZTI3MDQwNDIyYzM2YTY5OTgyMjU3MDQ2OTJlOTFiYWRmIHJlbGVhc2UyNi1tYWludAorNzAyNjQgNTAzOTc2Y2UzMzczZTU4OWJjMTBiY2EwMzgyNjBlN2M0OTFkMTQyMSByZWxlYXNlMzAtbWFpbnQKKzcwMjY1IGY0NjdkNDdmNmRlNTJhZGY2M2ZkNGQxZDIxNWFiMmFhYmY2ZWM2NGYgcHkzaworNzAyNjYgN2ZjYjc4NWVjMGY1MjdkNDhiMjBkY2IxOGRhNWVhOTFkMmNlZjUwZiByZWxlYXNlMzAtbWFpbnQKKzcwMjY3IDk3YWM4M2U0NTI3MDYxYjkxY2EwYzdkZmRhNzY1NjA0OGQzNzJhMzAgbGVnYWN5LXRydW5rCis3MDI2OCA1NDU3ZTQ2ZDlkZmQ0NjI5YTY4MTU1N2QwNjljM2FhYTM2NzFkMTg1IHJlbGVhc2UyNi1tYWludAorNzAyNjkgYzE1NDIzZjlmYWMzNTBmMzkyOGExNjliOGYwMDVlNzM1MGM0MTkyMCBweTNrCis3MDI3MCAzZTY3NmJmMjgzMTAzZWUwMTZmN2M5ODE4MzdlNjliNmRhZTQyMzU3IHJlbGVhc2UzMC1tYWludAorNzAyNzEgNjM0NTZkMmJmNWEwODkxN2M5MTFjMzk2MWE0NjE1NmU3MjliNjEwZCBsZWdhY3ktdHJ1bmsKKzcwMjcyIDVjOTFhNmUxODU2NGYwNGYzMzRkNmIxNmU3MGRhZjdmMzk2MjYzMjggcmVsZWFzZTI2LW1haW50Cis3MDI3MyBiY2ZiN2Q2NzkxNjE1OWJjZmE0NTc1MmE0NGY2ZWJjYTNjMTA3ZjE1IGxlZ2FjeS10cnVuaworNzAyNzQgN2Y3MDc0OTI4YzY4MTQyZDgwNTI2NzQ1YjlhNTVmN2I1NzkwZWQ4MyBweTNrCis3MDI3NSAxYTgzOTFjYzRiNDRjZDY2ZWE5ODQyNTVhMWIwYmExYTUzMWQ5M2E4IGxlZ2FjeS10cnVuaworNzAyODAgNzlmZTA3ZTEzMzg4ZWM3YTg0OGNhMjJlNDNmNTVlNTI3OWU2YjNhZCBweTNrCis3MDI4MSA0MjU1M2UzNWY4ZTRiNDk2NjViOWIwNGUxZWU4Njg0ZWU5MDczZTBlIGxlZ2FjeS10cnVuaworNzAyODIgM2I0MzU3N2UxOTcxYzhjMTM4MGFmMGNiMmExN2IzOWFkZjljN2E0MiBweTNrCis3MDI4MyA3Y2JkNDRjMjAzY2Y5NWNhYTc2MDRiZmZjNTQ1YzJlZWI5YjcxMDdhIHB5M2sKKzcwMjg0IDhlZDNjYmFjMTZiZjU2NTNmYTQyYzMyMjhiNzlhYTljNGQ3ZGE5ZmMgcmVsZWFzZTMwLW1haW50Cis3MDI4NSBkYWI0NTk3MWM1Njg4NDFkMjM4NTA4NzZhZjQxZjQxMGU4ODIwYzBlIHJlbGVhc2UzMC1tYWludAorNzAyODYgZjgwNGI4YTI1MTE1ZTdiMjFlYTMxNDAzZjNmYTAzNjkwYWY3YTQzYiBsZWdhY3ktdHJ1bmsKKzcwMjg3IGFlMzAwNmM3ZDViMDE5OWM1NmY4MGU2NGU0NmU3MWFiN2Q1ZGNiZmQgcHkzaworNzAyODggODlkOGFmMjU5MzUzMjc0ZTc3MDEwMTliZGE5NTEwNmNmMTk2MTAzOCByZWxlYXNlMzAtbWFpbnQKKzcwMjg5IDU2M2I0Zjg4M2VkODhiMTY2Mjc4N2NiOTEwNWQwYzQyMzdhZWRjOWQgcmVsZWFzZTI2LW1haW50Cis3MDI5MCA1NGNmYWNhYzZkMGExNTVkMThlZDhmYzYzYWU4NDdjNDNkNzc0MTNmIGxlZ2FjeS10cnVuaworNzAyOTEgMDMwODBmYTA4ZGZlN2NjZGYxNWJjZTE1YjRjNzBiZGMxNDZkZmMzMCBweTNrCis3MDI5MiA1YmM5ZjZjYzU2MWUwNDE3YTQzMzg0OWY0NTBhZWEzZDg3ODU3OWMzIGxlZ2FjeS10cnVuaworNzAyOTMgNGZkZGNkNGU4ZWI1MTk4NjNjYTBhNjRhMzM0ZDM1MTEyYjJlYjU2NyBsZWdhY3ktdHJ1bmsKKzcwMjk0IGFmZDcxMThjOGNjZmI0MGNhNTZlN2QzZjExNWIwYjRjYWRiYzQ2MWUgcHkzaworNzAyOTUgZGNiZmZlOTE4YTZmOGVjNmVkN2ZhMTU4YWQ5Y2JjMjRhYjVhZTBmMiBsZWdhY3ktdHJ1bmsKKzcwMjk2IGFiN2E3MjE1ZTQ2MzY5NTBmMGFjZDg5OTlhM2M3NTk1M2ZiMTgxZmUgbGVnYWN5LXRydW5rCis3MDI5NyBjNWUyM2I5Y2VkY2M5OTc0MDM3NjgwNDNmNGRiNmY1NDkwYTQxNzU2IHB5M2sKKzcwMjk4IGIwOTExYjVhMDAyZWQ4NDFiNmNmMjVjZDgwNGU5ZTg0MmEwNThjMGUgbGVnYWN5LXRydW5rCis3MDI5OSAyMTg1MGQ2ZDViNGQ0MGE5NmVjMjg4ODYwNGFjZDM5OTgxYjhmZWU4IHB5M2sKKzcwMzAwIDAzODI5MDFjNmViZDI3OTQ2MTE3MzZhZmVjZjhhN2ExMzhjZjU5MWQgbGVnYWN5LXRydW5rCis3MDMwMSAzYzA0ZDM0YzA0OTcxN2NlOGJjZGU5YzNiNjdkOTM1NTVkYzQzNDM5IHJlbGVhc2UyNi1tYWludAorNzAzMDIgNDMyMmU2ZGQyYTZjOWVkNjQ4MmUxOTljNGFjMzM2ODBlM2Q4MzcwNiByZWxlYXNlMjYtbWFpbnQKKzcwMzAzIDBjN2RhYzdlMmZiMDgxMTJjMzcwMTc1ZDFmNzkzMGE1ZTI4MmRkNjIgcHkzaworNzAzMDUgYTYwZmFjYzlmN2NmNTU1YjI1NGMwY2Y3NTgyZmM1MDg5ZDMwNTczZiBsZWdhY3ktdHJ1bmsKKzcwMzA2IGY1MWEyOGIxMDQyNjUxNDUxMGUzM2U1YmRmYzUwMmFiMGJlZjM2OWQgcHkzaworNzAzMDcgY2JjYjIxNDFhZWU1OWU4NGI5N2RmOWZhOGVkYWY5ODM1MWM3MDNkMSBweTNrCis3MDMwOCAzZWNmNmMzY2M4MWUwZWI3ZmRmNDVmNDU2NTk3YTNkZmMzZDNiMzdlIGxlZ2FjeS10cnVuaworNzAzMDkgOGIwYjllZTU4ZjY3YjgxYWFiZWRjYWUzMTJkZjY1ODkxNjk4ODVhMiByZWxlYXNlMjYtbWFpbnQKKzcwMzEwIDQ4ZmU2MjMxNzFhNDBkNTNjNmYyNjE2NDVkMTUxZjdmNTQ3OTM1ZTIgcHkzaworNzAzMTEgODc1ODgxZmY2OWE0ZDU0OGFjYzk2Y2NlNzFkZGFiM2M4NTBmMmZlOCByZWxlYXNlMzAtbWFpbnQKKzcwMzE1IGJlYjc4ODI5MWM3YTE2YTZmMzc5ZWQ4ZWEyMDAwYzA4ZWU4NjJlYjUgbGVnYWN5LXRydW5rCis3MDMxNiA1ZGZjNDViZGE5NmQwOTUwY2UyNGQ5ZTZjYTk4NjIxNTUxMTJhZWRkIHB5M2sKKzcwMzE3IDM0MDBjYjEwZDljZjdkNDYxZWVmM2QxYThhZjA4ZmFiZjY3ZTdkZTMgcHkzaworNzAzMTggMWViNTdiZGRmYjM4YmU5ZDY5OThmZWUwYzk5NWU0NzIwZGJmOTgzYyByZWxlYXNlMzAtbWFpbnQKKzcwMzE5IDFkOGU0YmNlY2YyYWFhOTQxM2E2MzBhZDU3MTA5M2EwYmIzODRlYjQgbGVnYWN5LXRydW5rCis3MDMyMCBiZjY3ZTVhODkzZjhlYzBiNTQ2ZGEyNzExNTEwYTg2MDMyNTVmYTZjIHJlbGVhc2UyNi1tYWludAorNzAzMzEgNmIwMjRmZjViNThmNmIyZDJmNDcwZTFiZGIyZjc1NWJhMGE0Y2ZkNyBweTNrCis3MDMzMiAyZThlODk3YTEyNDQ3ZjFjMmFmNDNiZmU0NmE5MmMwMDdlMThlNmE5IHB5M2sKKzcwMzMzIDFhOGJiYzVmYjNlZmMyNWNjYmVhNzg0MDcyOTE0ZmEzNmFlYThkMmMgcHkzaworNzAzMzUgZjE4OGRkNjg2MjBlNmE0YWRiMTg1YWQ3MWFlMWEwMzJhNjhjZTI5OCBweTNrCis3MDMzNiAwNGE1YjY0Mzg1MjY0ZTk2MzhjM2UzYjQ0M2U5YzBjOGZiNzBhOTQ1IHB5M2sKKzcwMzQyIDBlODg1ODJhYTNjZTcwNGEyMDdkMjYzMjM4YTdlZTY3YzY3OWY5MzggbGVnYWN5LXRydW5rCis3MDM0MyBlNWU2NGEwYzRhYTJjMzFlNTM3ZmQxMzlmOWVmZGFmYmFlYWFlOGM4IHB5M2sKKzcwMzQ0IGIzNjNlMjk3NTZmZjI1ODYzYzk4OTcxZDliYmY1YTBiZTk2Mjg5OWUgcHkzaworNzAzNDYgNDgwNDgzYzNkOTNlMzEzOGY3MWUwN2E1YWNlYTc4YjlkZjg0NGUyMyByZWxlYXNlMjYtbWFpbnQKKzcwMzQ3IDIyNzQ3ZTg3NGY0NmI5MDUwNmM2ZGJkNjNmN2RjNTZkZWY2MzEzMWYgcmVsZWFzZTMwLW1haW50Cis3MDM0OCA2MzJhYTU2ODQ3NGM5ODRmMTI2ZjkwYzkzZGUwMzlhY2U0ZGQ4OGE5IHJlbGVhc2UyNi1tYWludAorNzAzNDkgOGIxMjhlMDVlYzc0NTU5ZDgyMTUwYTY4NWRhZTdhNThiMTQ4MDg1MSBweTNrCis3MDM1MCA3OTBjYjk4ZjhiNGZiZjA1ZDg4MmY1MzRkZjIwMDJjNDllZDZlNjI5IHJlbGVhc2UzMC1tYWludAorNzAzNTIgYTU5OTQ3NWI2OWMzMDA4MDFiYjlhMTgyZTFmNGNlYmRiZGM4YzgxNyBweTNrCis3MDM1MyAxZjhkMTFjZDQ2ODQyMDE5YTkyYjRlZTE5NDI5ZmE4MmNhNjhiMWM4IHJlbGVhc2UzMC1tYWludAorNzAzNTYgODYxY2Q0NmVlYWVlN2Y1MzZhNDI3NjM5YmRhZDIwN2RmZDg1MmFmYyBsZWdhY3ktdHJ1bmsKKzcwMzU3IGE0YzliMGIwYThlNGJkNzQ3Mjg4ZmZhMTY2NmM4YTdlY2E2MmFmYTYgcHkzaworNzAzNTggMzE2NTlmOTM3NjEzY2Y2NjNlYWZjMDcyMTBhMjY4YjA0NjVkODNjMyByZWxlYXNlMjYtbWFpbnQKKzcwMzU5IGYyN2NhYWNiNzQyNjc5ZTUwZGQ5MDY3OWJhN2Y3N2Y2OWRjMWYwNjAgcmVsZWFzZTMwLW1haW50Cis3MDM2NCAzZjE4ZDYwOWFjMWJkODcyMTlkZWZhNDhmZWJiZjhhZjE1ODVkNzI2IGxlZ2FjeS10cnVuaworNzAzNjUgYzVmZWIwNThmZmM0YTYxZDU5N2I4ZWUwOGYzNTk5YmEyMjQxMTRkNyByZWxlYXNlMjYtbWFpbnQKKzcwMzY2IDFjMGEwZjdiNGY3NmY5ZDU4ZDE2NzQ1ZjI0YWVmZjZiMDkyZDNiNTQgcHkzaworNzAzNjcgNzM3N2E0ZDk1YTQ0Y2ExMzgwYzM3NWU0YjljZmQ0NzUxNmNmNTFjNSByZWxlYXNlMzAtbWFpbnQKKzcwMzY4IDFmOTZkNzMzYTc0MzkwZTYxNjJjM2QzZGJjYWEwYmJmMTk3MzIwYjUgbGVnYWN5LXRydW5rCis3MDM2OSA0ZTFhMTU3NmYxZTVjZjU2OGMwYTMwNjJhOTQ4MjI5ZDRlOWE0MWM1IHJlbGVhc2UyNi1tYWludAorNzAzNzAgYzFkYzg3YmQ4ODNjOWU3ZWI5NzZlMDJhNmY4Mjc0MWYxOTUxZTdlOSBweTNrCis3MDM3MiAwYjE5YmEzMTgwNzFiMWRlMWQ1YTJhYWZiZTc0ZjY4NjcyNjNmMjIyIHB5M2sKKzcwMzczIDYyZjlkYWQ2MjhkZWZjMTkzMjRiMjA3MGIzNmQ1MzJkY2Q4M2YzOGUgcHkzaworNzAzNzUgNjljZDYxNWI3NmZiZDQ2NmQ2Nzc0ZmRmNjYwN2Y0YThjZWEzZWM4MCBweTNrCis3MDM3NiBlOGZkNzk3NjNiY2NjZWI4YzJmNjdkNjdjMTdkZmM1ZjIwNzcxZjc2IHB5M2sKKzcwMzc3IDcwZjVmOTExM2FlMTFlYzgwZGMzM2Q4ODkzNDdjYzk3NzBhMDYzYzggcHkzaworNzAzNzggYmVhZjAwYzk4YjcxZTYzMTNjNmM1Y2QwMzExZjRiZGU1OGUwNDYzOCBsZWdhY3ktdHJ1bmsKKzcwMzc5IDM3ZDc2YjVhODI3YmEzYTI1Y2I2MjczNTQxNjQzNWU2MzRlYTQzNTEgcmVsZWFzZTI2LW1haW50Cis3MDM4MCA0ZTkyN2ZhZjMwZWFlZWMxYTRiYzJhYWIwZDA2NDhkM2Q1NDIwZjNmIHB5M2sKKzcwMzgxIGVmN2U0N2ViMmI2OTc1ZDViNWMyZmFiN2M3YzAyMzY5NWZjNzNiMzggcmVsZWFzZTMwLW1haW50Cis3MDM4NSA0NDJiZGZlOTNiMjkyMWE5Y2E5YmE1MWNiNDliZTk2NWMyYzBhN2FhIGxlZ2FjeS10cnVuaworNzAzODYgMjNhMzk2OTdmZDY3ZTg1ODQxNzcyZGFkYjE2YzJlYjIyMjJmMzg3ZiBsZWdhY3ktdHJ1bmsKKzcwMzg3IDFiZTA5YzVjNjhlOThiNGY3YzhmODljODk5MmU5ZTRhMDA1NDBiNjQgbGVnYWN5LXRydW5rCis3MDM4OSBkZTdlNDcxNmQ5Y2JhOTdlYmFhNTYyN2VlN2NjNGFhMzM2Yjc2ODI3IGxlZ2FjeS10cnVuaworNzAzOTAgNjg1NTFiMmE1ZmFhMjgwM2U0M2ZjM2NkY2IxOWQ2ZDI2ZmQ0ZWRjYiBsZWdhY3ktdHJ1bmsKKzcwMzkyIDJmZTViYWY4OTU2OTU4MWQ4NWQyM2EwNTY4YmJiNGVhNmE1NmUxNGMgbGVnYWN5LXRydW5rCis3MDM5MyAwZDE5ZTExNjgzZmZlYjc1ZTRlZDk1YTM5NGQwODM4OGNkMjljZjkxIGxlZ2FjeS10cnVuaworNzAzOTUgNGU5NGVhYjZjN2EyZDBkZWQxMDYwMWZjYTY2NjUzMzg4YWJhMmM0MSBsZWdhY3ktdHJ1bmsKKzcwMzk3IDEyZWJkYThmYjZiMzAwYWYyN2E2YjRlOGU3MTJjZDczYzhkMjgxOWUgbGVnYWN5LXRydW5rCis3MDM5OCAwYmUxYzFmMTI3ZTA0MDc3OWNmM2JlNDhhZTlkNzc2Y2VhN2JkZTQ3IHB5M2sKKzcwNDAwIDZiZjBmM2FiMDI3OWFjMTM3MWUwMGQ2NzBkOTkwZmY3MTU3YmQwOGEgbGVnYWN5LXRydW5rCis3MDQwNSBlNGQ5ODQ0YWJhMjUwMWE5Yjc4ZWU0NDRjMTRmMDBjNjAwNDgyOWE4IGxlZ2FjeS10cnVuaworNzA0MDYgY2JhNjA5MzgzMDc4MWNiOWFiZDFlYzYwYWUyZDM4M2JmZDNkNGVmYSBsZWdhY3ktdHJ1bmsKKzcwNDE4IGNjZWRlZjI4ZmUwNDIwMjM3MmU5NDY1NjlkYmIxYWI0NmM4OGJhZmEgbGVnYWN5LXRydW5rCis3MDQyNCBhMzE5M2MwNDE0OTZkZWNkZmI2ZDkyMjk3YjMyNzUwZjg4NGQwODY3IHB5M2sKKzcwNDMwIDZiNzM4YjZmN2ZjNjc4YjU0MTI3YzhjMGIyYWVlZGFjZGQ1YjU0YmYgbGVnYWN5LXRydW5rCis3MDQzMSBmZDRjODM5MjgwODA5YWNhYTVkOWI5ZjljZTQyODEwZTI1NmJlOWE0IHJlbGVhc2UyNi1tYWludAorNzA0MzIgMzlmNGZhNTFhY2ZiODA3Yjg5ZTM0NDJlYzFiYTk4OGRiMzI3Njc4NyBweTNrCis3MDQzMyBjMzU3ZDc5MjY0ZjhjYmY0ZjVkNzAyYjA5ZWQ5M2I0NDgzYWFjOTk3IHJlbGVhc2UzMC1tYWludAorNzA0MzQgN2MzZmUxYTRhMmNlMzQ4OGJlZGFmNTBhMDBlMjU2Mzg0MmI1N2Q5ZiBweTNrCis3MDQzNSAxNTcyNDdlYjc5M2RiYmU2NzU2YWYwM2FiM2I5MDc1NjE3OWZlMmZhIHJlbGVhc2UzMC1tYWludAorNzA0MzggMTcxZWQ2ZmZjODZjNjRjOTY5NmU3YWNmODA5MWU5MzY2NzkwMDExNiBsZWdhY3ktdHJ1bmsKKzcwNDM5IDVkZWU5M2E5NzU1OGUxODFlN2UyOGE2ZmJhOWNmYWVmMjgyNzdmZDAgbGVnYWN5LXRydW5rCis3MDQ0MCAxMmUxNGU2ZjFmMmRiMWVkNzVjNWUzNDg0ZmIxZjYyYzk4MGIyZDMyIHB5M2sKKzcwNDQxIGFkNGE3MmIwOGQzZTQxMGU3ZTUzYmJkNWVhYmZmYjE1MzQ3Y2I5MTggcmVsZWFzZTMwLW1haW50Cis3MDQ0MiBjYWMyMDczNzNhMzRmNzRjNmRkMTZlODA4ZTFmYjAyNTY1NjI4MzAyIHJlbGVhc2UyNi1tYWludAorNzA0NDMgZDk1ZTVhZGQzY2E0Y2NlMzI5MDhmYjcwMWZkOGRkYzBjYTNjODdjNiBsZWdhY3ktdHJ1bmsKKzcwNDQ0IDJkOTRjOGZlZDM3NmY3NmI4ZmU5NmUyODc0ODZmMDExMDg4MzgwYmIgbGVnYWN5LXRydW5rCis3MDQ0NSBmY2RmZmQ4NWE4YmQzZWJlMGVhOGI5YmMwODE0MGQ1MzM0ZGUzNGU4IHB5M2sKKzcwNDQ2IDIwN2E0YzI3YTkxNmFkOWQwYTJiNGEyNDI4ZGVmYWY2Y2JlZDhkOWQgcmVsZWFzZTI2LW1haW50Cis3MDQ0NyBhNTI3NDA1YTljMTA2MTA4MzI0OTJmNmE5ZWI4OWM3MzgyMDM2MDEyIHJlbGVhc2UzMC1tYWludAorNzA0NDggYzM0MGUzZjQ5YmYzNjQ5ZTc3YWNhNjJiZjZiZmVhMDIxZjIwMWQxMCBsZWdhY3ktdHJ1bmsKKzcwNDQ5IDU4YjI4NmUxNWViY2U0Y2RmOTljZDQwMmRjNTcxMDg4YmM3OTg1MjcgcmVsZWFzZTI2LW1haW50Cis3MDQ1MCA1OTM4MGIzOTBjNDA2MjQ5YTA0ODY0OWNiMmM2ZjBiNGU0MDFiMTM4IHB5M2sKKzcwNDUxIDZmZTY0MDFkYTUxZjljYWNiYWYwNjZmYjI1OGFmNjZhM2I1NDQ4ZTggcmVsZWFzZTMwLW1haW50Cis3MDQ1MiA3OTY0MmI1ODgxZTBhNmIyMjJkNzk2ZDE2MDQyZWY0YjhkOTQ0OTJkIHB5M2sKKzcwNDUzIGRhNDg0MGIyYmEwNjEyZjc0YzAyZTNkMjUyNmM0YzczNDFhNGMyOWUgcmVsZWFzZTMwLW1haW50Cis3MDQ1NCBjNzNkZDI1YzAxYzEyMDQxMDcwZTExMDJiZDczMGU5NzkwNDFjN2JiIGxlZ2FjeS10cnVuaworNzA0NTUgNmJhNWVlNWEyMjA5NDNhMzA3MjM3NzZiMDYyZTZmN2Q2MmU2OTg2OCByZWxlYXNlMjYtbWFpbnQKKzcwNDU2IDdkOGZkNzk1NWQxNTU3NDA3YjE0ZjQ2ZWYxMjQ1MzMxZjU4MmY3YzQgcHkzaworNzA0NTcgM2VlMjU5NDY5YmE4MjgwNDY4ZDczNjc3OTY2MmE3NDRhZDgwMTZjZSBsZWdhY3ktdHJ1bmsKKzcwNDU4IDdiNTM2MGZhM2UxOWYyOTA2YmY0ZWQwMzVmYzJhOGIzNjBkYmFkMTUgcmVsZWFzZTI2LW1haW50Cis3MDQ1OSBiYjVkZTI0YTM0M2Y2OTcxNWIyNGY5OTQxYTgwZWVkOWU4NDJlODhjIHB5M2sKKzcwNDYwIDlmNDYyOGI0NjU1YjBiZTk4MjAxNWQ2ZmVmZGJjMDdkMDlhNjBiN2IgcmVsZWFzZTMwLW1haW50Cis3MDQ2MSBmZmU0YjlhMTAzNWNkMzY4OTE0NmE0OTEwYzNjMmNhMmMyNWU3NzJmIHB5M2sKKzcwNDYyIDM3MDMxN2ZiOTUxNTU2MTgzOGRlNWQ2NTBkOTQ3Nzc0MzJmNzMzNWYgcmVsZWFzZTMwLW1haW50Cis3MDQ2MyBkMmI3ODg3ZjhjOWFlYzEwMWNiOWZhYzE3NmNiZjZiN2RkNjY0YzY5IGxlZ2FjeS10cnVuaworNzA0NjQgOTJmZWZjZGRiZmU4NDAxNTFhOWRlMWE1MjkyZDgwZjUwNjM4MGE1MSBsZWdhY3ktdHJ1bmsKKzcwNDY1IGZiODBiMjgxZTA1YWEwYWFmZWI0ZjBmODQ0NWFkNzAyM2YxMWRhNjMgcmVsZWFzZTI2LW1haW50Cis3MDQ2NiA3Y2ZiYmYyZDI5NGU1MTJhMzdjYTE3NTE5NDRmOWRlY2EzYWZhNTdmIGxlZ2FjeS10cnVuaworNzA0NjggZTJjMWNiZGEyYTk1NzI1YTExMmNhYTQzOWI0OTY4MGYxYTUzOGI4YyBsZWdhY3ktdHJ1bmsKKzcwNDcwIDFmNzNlMDk4NGQ1NTllN2RhNzI5NWRjMzBjMjc3NjNiZWM4OGMxYzQgbGVnYWN5LXRydW5rCis3MDQ3MSBhMTFhNjc2ZmU2YzA1YWFiZTI5NTQyYzAwMjE5YmJiZWVlYWQ5MGZjIGxlZ2FjeS10cnVuaworNzA0NzIgZWFkM2RlNDhhYWRkNzk2ZmNiNWQzZmY2YjcwMzM5NWQzMDMyYzFlMSBsZWdhY3ktdHJ1bmsKKzcwNDczIDhmZDE3MjFjMzJjNDc1YzM0YjE5NmIyYzAyODE5Y2RjODFkNmQyNTUgbGVnYWN5LXRydW5rCis3MDQ3NCAxMTAwYTUwNmVkY2YwNTEwNjkyNjhmYmE3MzhlMGM2ODJkMmVmZDM1IHB5M2sKKzcwNDc1IDI5MGM3NTEzZTEyNTM3NWFlMzk2OGY4OTQ2ZWFjYmIxZTJmMjViMWQgbGVnYWN5LXRydW5rCis3MDQ3NiA0MjJlMmU2NzYzZTlhMTdlZjZhMGMyMzg2M2Y0OTg4OGY4OGM4NjBjIHB5M2sKKzcwNDc3IDRmZGIxMGRiYzczNjc2YzYwYmI4ZDJhMDIxNDEzMWNmOGFkNTRkNTYgbGVnYWN5LXRydW5rCis3MDQ3OCA2NjQ2OWI2NWQ1NDg0NDRjYmY4YzE5ZTVlNGNkNDI2YTYzNmE0OTViIHB5M2sKKzcwNDc5IDliMzU4ZWFlNTMyYTYyMWY1MjQ1NTY4ZTJiYzljZmJmYTYyMDMxN2UgbGVnYWN5LXRydW5rCis3MDQ4MCBkMWMwZjU1MDQwYmFkNTI0YjE2ZjYxNjgwYTJlMDZhNTc3ZTA2YWEwIHB5M2sKKzcwNDgxIGU3Y2Y0NjlkMGUxMjgzYjcyYmZjM2Y3NjY2ZjdhNTM1MDJjYTU5NDAgcmVsZWFzZTI2LW1haW50Cis3MDQ4MiA1YTAyZjBjZjNjMzgxZWQ1Y2NkMThhOGRkOGNlZDZiOGM4ZjgwYjg4IHB5M2sKKzcwNDgzIDM5NTlkNTA0YjU0YzM1Mzg4ZGU4ZWYyNTJhOTZmOGU1ZDhhYTBjYTggcmVsZWFzZTMwLW1haW50Cis3MDQ4NSA3ODdmMjViMTI3ZWU2MWQwYTdhN2Y1ZGRmYTlmZWU4ZWMxYzBlZWU1IGxlZ2FjeS10cnVuaworNzA0ODYgNzNmZGMwNzY4MWUzN2YwYjk0OThhYTc1MDkzZWJiMmJkMzRiZWNmMyByZWxlYXNlMjYtbWFpbnQKKzcwNDg3IDUwNTc3YWUyYzBjMGM1MzkzMzFjZDU3ZTNkMGExYWNkMjBjNTVhZWIgcmVsZWFzZTMwLW1haW50Cis3MDQ4OCAyMjczN2U5NWY2Zjc1NTQ0MmE1MDE5NjVhMzMyN2E4YzA3MDdmN2FhIHB5M2sKKzcwNDg5IDZjMGMxNWEyZWQyZDNmZTk0OGE0NjZkZjE0MDY4ODA2ODVjOTQzNTcgbGVnYWN5LXRydW5rCis3MDQ5MCBhNDcwZDBhMDI1NmU3NDJmMmM5ZjdhNzUyOTU5MDEyN2RkZWNmZmEwIHJlbGVhc2UyNi1tYWludAorNzA0OTEgZDkyYTZkZWM4YmZlZDc1MjE5ZTY1ZWVlNjNjN2YxOWUzOTgwNGMwZiBweTNrCis3MDQ5MiBiYzY4MWU1M2Y5NGUwNmFkZDAyZGEwZjQyNmEyODYzZTZhOWRhNTRhIHJlbGVhc2UzMC1tYWludAorNzA0OTMgYzViNzk1OGY0MjkyMDZlMDk1ZWU4YzE2MDM4ZGY5Yjc5N2E4YTY4ZSByZWxlYXNlMjYtbWFpbnQKKzcwNDk0IDJhM2FmMjExZjBlMTFmYTc0Mzc1ZjI0OTFkNmQ5YTcwNDM4ZTExNzIgcHkzaworNzA0OTUgYzdiMmNjODM1OGY2NjU2ZTJjN2ViNTAyOGM4NDQ0NWMzYWIzMjkxZiBweTNrCis3MDQ5NyA1Y2FjZTc1YmNiMDU2Y2M2MjcyNmYwMWY0Njc2YmVlNDFkNzUxMDA2IHB5M2sKKzcwNDk4IDVhYTYzZGRkMTUxMzQ1NGE3N2Y0MTQ2MWVlZTAwMTQ4N2QyZjhjZjkgcmVsZWFzZTMwLW1haW50Cis3MDQ5OSBiODQ2ZDcwOWNiNzYzMjcwMWIwMTUyZDU4YzFhNGI4NjhlYTE0NjYzIGxlZ2FjeS10cnVuaworNzA1MDAgMDI5MjgxMjEzMzhkOTMxZTQwMjE1OTczYWRjZDYzNjhiZWJmZTZlNiBweTNrCis3MDUwMSA1YzU4MjM2NjdkZGQ1Y2VlZGU5NDM1ZjIwOTk4MWI5NTE2MjJmMDkyIHJlbGVhc2UzMC1tYWludAorNzA1MDIgYjg5MzRkZDkyNjdkZTAzYmQ3NmY5OTE4NmI4ZDc1YTFkNmY2Mzg5NyByZWxlYXNlMjYtbWFpbnQKKzcwNTAzIDJkNmZmNWNkMjYwMDEyNDZhMThmNTY3NWJlYTYwZmU2ZTdmMmU2YWQgcHkzaworNzA1MDQgZjI3NzdlYTk1NGNhMjViZWYxYzJlOTE0ZjhmYjEzYmI5YWQ0N2M2MSByZWxlYXNlMzAtbWFpbnQKKzcwNTA2IDViMWYwMmRjNjlhMzkxOTA1ZTcwYjAzNzc3Yjg1YjNmODg1ODUyNDIgcHkzaworNzA1MDcgM2FiMmU1MmQ4ZDE5NjljMTQzYWYwMGYxNmIxYzBjMmJjMDRkZDYxNiBweTNrCis3MDUwOCBlNDFmNWE4OWY1YzA2ZTk5YmY2NDZmNjI3NjdiZWEwMDE2ZDQ2Mjc4IHB5M2sKKzcwNTA5IGM2Njg4ZTkxNTZiNTkxN2VlZDg2NTUzMTY3ZmFiZDBkMjAyYmU1NWQgcmVsZWFzZTMwLW1haW50Cis3MDUxMCAxOGQ2NTY1MTIzNWU0ODkxMzJkMWI4NDg2MmU1ZmQxNTE3NWJhYjA5IHB5M2sKKzcwNTE4IGZiMjFlYWJhOTRmNjg5ZWVkMjdjOTljZGFhOTFiOTMwMDdhOTE5OTcgbGVnYWN5LXRydW5rCis3MDUxOSBkMWIwYmQ0OGJhMTU2MzgxYjc5ZjlmMWU0NGNkMzg2Y2Q0N2JhYTgwIHJlbGVhc2UyNi1tYWludAorNzA1MjAgYzg3ZTU4MjYyZDViY2IzZWQyMzU0MjllMTM3MmEwNjA1MTM1Y2YzMSBweTNrCis3MDUyMSBlZmQxN2NiNTgyM2E5OGZlYTYwMTY5MTI2NWQ5N2E0M2MxNDE0ODUxIGxlZ2FjeS10cnVuaworNzA1MjIgNzUyZjJlM2U0NzU3N2ZiMDMwM2VmMDA4OTZmNTg0N2YxZTIyZjhhNCByZWxlYXNlMjYtbWFpbnQKKzcwNTIzIDQ0NWQ0MDQyNzBlYWFiZjE4YmY2MzBmOWIxMGQzMjExNzUxNjUzN2QgbGVnYWN5LXRydW5rCis3MDUyNCA4NTZlZDQxODc2OGMxOTA2OGFhNzFhMjA0MDAwOWQxMmE4ZjM1NDFkIHJlbGVhc2UyNi1tYWludAorNzA1MjUgMDk1ZDg3NGEzMDU0OWZhYmZlZGZlYTJlZDEyNjliNDU1NDZmY2QzZiBweTNrCis3MDUyNiA0MzViOGJhMWE5MDIzNDRhNTFlNGMwZTM4YmQzMzY1YWVjOWJhZGQ1IHJlbGVhc2UzMC1tYWludAorNzA1MjcgZGQ5ZmRkYjA3MjBkYWY5YjJjYjk1NzkyYmQ3ZDdkNjQ1OGQ4MzE3ZiByZWxlYXNlMjUtbWFpbnQKKzcwNTI4IDZjYjg0MzA3NWU2OTExZjJkY2JhODZmMTAxMmU4MzEwNjM4MWZhNTAgcmVsZWFzZTI2LW1haW50Cis3MDUyOSA1ZjhjOGM5MThmOWIwMjliNGU5N2M3MmFjZTYzMzQ0MjJjMmRiYmYzIHJlbGVhc2UzMC1tYWludAorNzA1MzAgYWIzODk4NzdmMTUyZjRjODliZTIwNWI4ZDQxZmE3ZDI1NGRkYWEwOCByZWxlYXNlMjUtbWFpbnQKKzcwNTMxIDFmNzJhYzkwOTQwOGRjNDE0MjA2MTdlMTRkMWU5ZTJhMTcxN2Y2OTcgbGVnYWN5LXRydW5rCis3MDUzMiA0NDI2ZTQ5MjI2NGYwN2FkYTUxNmU1NzM4NzA3MGRhZmYwZTYxYzEzIHB5M2sKKzcwNTMzIDExOWUzZmM2Y2RmMzU4MWQ4OTVmM2I4YjI1ZjQ2M2E1Yjg2MTZiNTMgbGVnYWN5LXRydW5rCis3MDUzNCBiMTYyN2U3ZTY3OGQ3ZDk1OTZkNWNkYjU0YTVhOTlkOWE3YTM2MzEyIHB5M2sKKzcwNTM1IDg4OTc0Y2E1MDAzZmY5ZGFjZjYxMGJhZjliNDMwNzhmMjgyY2I1NmQgcHkzaworNzA1MzYgMDVhZTljY2ZmNTE0NGM3NTg1MDVjMDgzNjNmMTA0NjYyMTQ5MWFjNCBweTNrCis3MDUzNyA4N2NiOTUwNTkxYmVlMWI4YWNjNGYyZDZkMjZlOGM4ZDE1YzU1OTA4IHJlbGVhc2UzMC1tYWludAorNzA1MzggNjg3ZTc1MWMyODhlNmZhNTRmOGNkMDMzYTg3MjAxY2NkYjc1ZWQ3MCBsZWdhY3ktdHJ1bmsKKzcwNTM5IDEzZjg4N2U1ZmEwZDc1MDI1NWZlZmE2YzUxZjVhYjJmM2E3M2I0ODggcHkzaworNzA1NDIgYTU0ZWYxOGFiMGQ4OWRjZDFmODczNGY1NGJlNDQ5NmJkMWUyZWRmYSBsZWdhY3ktdHJ1bmsKKzcwNTQzIGVkZDQzMDJjY2VhZmVlZThiM2MwZTFhMTIzYWMwY2JkMTRmYzczMDAgcmVsZWFzZTI2LW1haW50Cis3MDU0NCBhMWRkYjRkZTg1YTUzNjgxOTU4YjcwNzIyYzJkM2E5MjZiMDFhM2RjIGxlZ2FjeS10cnVuaworNzA1NDUgNjBkMDZjOThhNjA1YjExMDI1OWQwNTU2MjRkYzJiNjJkM2VlODYxMiBweTNrCis3MDU0NiAwZTQ5OGE5ZmRlM2MyMjkzZjg4YjllMWNlOTczZDZiN2ZhN2ZhM2RmIGxlZ2FjeS10cnVuaworNzA1NDcgYTFkMTZkOThhYTQwZGFmMGVhYzQ0OWVkMTM5ZDU5ZTBmNjAzOGNkMiBweTNrCis3MDU0OCBjNzA5MTBhYzQ5MmQ3OTg0NjJiNjgzYWI5NjY1Nzc5YjY4ZGYxMTBkIHJlbGVhc2UzMC1tYWludAorNzA1NDkgOTRiZDA2NjZmZmE3OTMzZjUxZjljMjBkZTFiODZhODM0NTI3MTU0YSBweTNrCis3MDU1MCBiMzc5MTMwOWU2OTA0YzczYjkwYzUwNDI0MzA4MjUxNjRjMTcyNzJiIGxlZ2FjeS10cnVuaworNzA1NTEgNjdmYjkwMzJkNDNhNDdiZGFmOTljNjM4ZTkxNjI2MDBkODI4Y2QzNSBweTNrCis3MDU1MiBmNmVkYzY4NmJkZTc1MzNhOTAwMzE4M2UyN2U0OTFhNDJmOGFhNWFjIGxlZ2FjeS10cnVuaworNzA1NTMgN2VkZDE0M2NkNGU0MmYzOTg1MTNmYmU5ZDI3NGJlZDcwYjVmMTYxNiBsZWdhY3ktdHJ1bmsKKzcwNTU0IGRjYTNkNjcyNzU4ZTNjZGM1M2Q0ZWViYjFjOTE2YTY1ODcxZGZhY2QgbGVnYWN5LXRydW5rCis3MDU1NSBlNGFhNTMwZTU3NjBiOGFjZmI4NDBjNzJmODk3MzgzZWY2ODE4YmE4IGxlZ2FjeS10cnVuaworNzA1NTYgMTA4NDVlMTVlZDliMWI2MDE4MTFmYmJjNmI2N2Y3MWE4YjMwMjYzZCBweTNrCis3MDU1NyBkNzQ3NjEyZjhhMmZlZTk4YTM1NTQyNjg3MmQwMTJhMjgxMGEzNmYwIHB5M2sKKzcwNTU4IDY4YWMyNTUyZjQ0ZTE5ZjVmNTg2MDUwZmUwOTA5OWNjZmI0MDkwNGQgbGVnYWN5LXRydW5rCis3MDU1OSA2ZDVjOGE1MDY5YjBmZmZjOWYyYzA5MWU4NjQ3Y2Y5NWM5MDY4NDg4IHB5M2sKKzcwNTYwIGFlZGE5MmYxYWI5YjU3MDNiYmMyNzZlOTc0ZTM0OThiNGIwNzQwY2QgcmVsZWFzZTMwLW1haW50Cis3MDU2MSA1NWYxNTA5YzQ1YjY3ZjBjYzVjODU4ZGM1NjVlYzEzM2EwMjE2ZGVkIGxlZ2FjeS10cnVuaworNzA1NjIgNTg2OTRjNzZkNzZkODE1ZjhhNGI2ZjhhNmIyMDg4NTNmMDFkYTk1OCBsZWdhY3ktdHJ1bmsKKzcwNTYzIDAwMjdjMDgzYTBkNGI0MDRjZWM3NThlYzhjZmJmNDIzYzBiMThkYWUgbGVnYWN5LXRydW5rCis3MDU2NCBlYzNlMjlmMTYwZGZkMTAxMjZlYTE4YmQ0ZTk5ZTc0ZDUyM2RiYWUwIGxlZ2FjeS10cnVuaworNzA1NjUgNzAxZjY4ZjhiN2NmNzUzZjk0NjAxNDEyM2IxNzUzOTYwZTQ1Yzc1ZSByZWxlYXNlMjYtbWFpbnQKKzcwNTY2IGEyZjZiMmIzODJiNGMxMWNkMWFmMDhhMmY4YjhhODFmY2UxYTU2MzcgcHkzaworNzA1NjcgOTg2YWNjZTI2NjQxMGJkYWI3YmFlMzY3YWY5ZTUyZWE0YTUwY2U5NiByZWxlYXNlMzAtbWFpbnQKKzcwNTY4IGYwYTUwNzQxNGU4Y2M3ODY3NzdiNmJhY2E0ZmMwZWEyZGZjYjZlYzYgbGVnYWN5LXRydW5rCis3MDU2OSAyM2MxMmFjN2YzMTczNmM2Njc0ZDIxYjg0YzFkMzM4ZjE0M2FmNjkwIGxlZ2FjeS10cnVuaworNzA1NzAgNmVkYjc0MjE2MzhjMGIyMWNiMGFhZDVjNTAzOTJjNjc0MDRkYzFlNiBsZWdhY3ktdHJ1bmsKKzcwNTcxIDEyYWRiODE5NzY0NzljNDAzMTY0NzUzMjkwZWFhMWE4ZTNjNTdiMjEgbGVnYWN5LXRydW5rCis3MDU3MiBhOGE4Y2Y5YjI4MTgzZDQ0ZDcwMzcyOGM4YWQ0Mzc0MDY0OTY4NmQzIHB5M2sKKzcwNTczIDliNTk5YjYwMTJmYTU0ZGY3MmE4ZjE4MzRkZDViNWEyMDc1OTFjYTggcHkzaworNzA1NzQgZDIxMzQxMzNiZjBjOTk1MjQ4MzY5OWQwZDI3N2ExMWY5NDljY2YzNSBsZWdhY3ktdHJ1bmsKKzcwNTc1IDgyMGYzNDc1YjA4ZDdmMmM3NDEyMjYzNjllZjc5ODIxOGE0MTk3ZWYgcHkzaworNzA1NzYgMTFkNTRjN2UwODliODg1MTA4YWEyYjllYjljOTU5MzU5ODAyODNiOCByZWxlYXNlMzAtbWFpbnQKKzcwNTc3IGE4ZGE4YWNkYTEyODY3ZDQ3NGFlOTQzMjk0MGQ1MzQ0OGUwNmM2NWUgcHkzaworNzA1NzggYTk1MTVmMjliMzhjODczMmZkM2I1NjY5ZWFmMTY2ZDljZWQzZTE5NCBsZWdhY3ktdHJ1bmsKKzcwNTc5IDI0OTRmZmQ2MGVhZTk5ZDBlNTZiNjEwOTc4MmM2YjI3MDE3YzZiNTAgcHkzaworNzA1ODAgNjBiOTdmYzhmMDZkYTM2YTQ5MTY3NGNhNDhiMzg3OTUyMjMyNDJjMyBweTNrCis3MDU4MSAwMDZjODFmOWIwZTgwZWQ2MGUxZDA5MjdhZTVmODQxZjNlNzk5NGE3IHB5M2sKKzcwNTgyIDJjYzkwMGJkNmJiMDE2MmNkMGYyYjkzNjcwZDY3ZmM1YjBiYjkzNjMgcHkzaworNzA1ODMgYmE0MjQwMTZkYjc0Njk2MDNkNTdmZTEzNWM5N2M3MGI4OGI5MWZiNyBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTg0IDc5MmE3ZjkzOWZkZGVhYzFhMWNlZGMxNmVhZjgxNWEzMDBiYTMyNjcgbXVsdGlwcm9jZXNzaW5nLWF1dG9jb25mCis3MDU4NSAzYWRiMzk3NGU3NzdjMDkwNzI0NDlkMWYzNmYwOWVhMjY0ZGIwYWY2IG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1ODYgOGFkMjUxZGE0NzQyNzRmMTdhYjA5M2JkZjU1OGEyYTkzMzM0MTc2YyBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTg3IGZkYzgwNmM3N2NkNmU0MjE1ZjVmNmQxMGJmNWZmNWQzYmRiOWYxMWEgcHkzaworNzA1ODggM2RmN2YxMThlNTA0MjJmNmEzOGQ0ODFlZGNiMjU0Y2FiZjAyZTExZSBsZWdhY3ktdHJ1bmsKKzcwNTg5IGVmZmZjN2VhYWQ2ZDMzZTc0ZTU3M2RjNzcxNWE2MTg0MjZhZGQ5NDIgbGVnYWN5LXRydW5rCis3MDU5MCA1ZDZjMGZjODdhNzE4ZWIzNjQzZmZmMTczYmRlNzNiMmRlY2Y2NjNiIGxlZ2FjeS10cnVuaworNzA1OTEgMDYwZWE5NzVkNTk3MTI5NzYxNDBiNDcyZWIwNzUxNjM3NWE0ZDczNiBweTNrCis3MDU5MiA0MWUzNDRlNTcxYTE2MDIzNjEzYWYxMDMzOWE0YWMyNzJiMDQ1MzcxIG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1OTMgNzNmNGU4YWRmZWJmZDhkMjVkYTAxZGQ3ZGYzY2I0NDE0NDQxMDBlYSBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTk0IDdkMGUzYThjMmU5ZTFiMTZjZDAzYjY4ODBhMzZiNTFjNTljOWI4MmYgbGVnYWN5LXRydW5rCis3MDU5NSA5Zjg5NzY1NjVmODI2ZWUwZTlhN2UyNGQ4ZDk1ZjY4MTRkN2I0MWU2IGxlZ2FjeS10cnVuaworNzA1OTYgOGNkNjE3YzNlNzRiMDI4ZWQzNzIxNzIxZTkxOGUyMzBiNzg1MDhkMSByZWxlYXNlMjYtbWFpbnQKKzcwNTk4IGVlMGY3NTFiODAyMDAzYzUzYWQ1N2EwYWQ1NjdiOTVkOGUyY2Y5YTEgbGVnYWN5LXRydW5rCis3MDU5OSAxZmJlYzI5Zjg5ZThkMDJjNTE1ZmM0NWYyN2U5MDNkODBmYzgzNDE3IGxlZ2FjeS10cnVuaworNzA2MDAgYTY3NmQzNmMwN2RkNTM5OWRiMGExYmNhZGVhMTc4OTcwNTZmMDg4ZiBweTNrCis3MDYwMSBmNWQ2NzBmY2RiZTk2YmM3ZjQyMWI4YjQyOGEyOWU3Zjk3YzJjYjNhIGxlZ2FjeS10cnVuaworNzA2MDIgZjI3NzA0ZjQ1ZDRhZjMzMTM0MzNjMmZkOGQzYzFiZTk0ZGVkYTFhMCBweTNrCis3MDYwMyA4YjVhODBmNTMzMTdmODk5ZTc5OTEyZGQxMGQ0MzcxYTZhMGY5NzI5IHB5M2sKKzcwNjA0IGI2Zjg2MTMyMWI0NWNmMGZkYWE0ZGE1ZWEwZDBkNzQwMTRmN2Y5MGIgcHkzaworNzA2MDUgM2ZkYzRhYTM2ZDc2NzA3OGFkOGQyYjM2ZWMwMWNlYjM2MGE2MzAzNiBsZWdhY3ktdHJ1bmsKKzcwNjA2IDYxZWY2NTlhYjc5OWRmNjIzN2RlMjcwOThjNWZmZGNjZTY4ZjM4NjkgcHkzaworNzA2MDcgMzM4MjljNzkxYmY2MjI3MGM2ZTgyYmYyM2U0ZGMzZDRmYzkyODFkNSBweTNrCis3MDYwOCBhMTBkOTk1MTNmOWU5ZWUzYTA1N2VmMjhjZjRmODhiMWRkMjQ3ODQ0IHB5M2sKKzcwNjA5IGNjMTNjYzIyNGZmNTY4YmUxMWI2Y2Y2YTZiM2RiMWFhNTZlMGViYTcgcHkzaworNzA2MTAgMDdiNmZjZGY3Zjk0OTk0ZTllYWU2YjRhYzhiODVmN2QwNTY2MDkzNiBweTNrCis3MDYxMSAxZTIzMzU5NjJiYWQ4NTQ2YTFlMTFmZjlkZDhmYTBjMDYxMTRkNGMxIGxlZ2FjeS10cnVuaworNzA2MTIgNzhmZWRjMzQyYTZiMTA3ZGJjMWI3MjIwODJjZjc5ZmFkNzBmMmU4OSBsZWdhY3ktdHJ1bmsKKzcwNjEzIDBhMDUyYTI4NzNiMjQxOWRmNjlkODg3Mjg0NjkwNDg2ZjE4N2Q5NmEgbGVnYWN5LXRydW5rCis3MDYxNCAwMDdlOWM4NmZiNTViNWUwODg0YjZjYTVhMTgzZDI3NTg1NmMxYTVlIGxlZ2FjeS10cnVuaworNzA2MTUgNGZlNzYyNDlhOTA5MDcwZWRkMWU5ZjVkMjM4MmU1MDgxYWMyMDE1NiBsZWdhY3ktdHJ1bmsKKzcwNjE2IDU1NzI5MGZmYTc4NDc2OGU3YTk0M2U3OTVhODRhNWJjNmQ1MjFhY2IgbGVnYWN5LXRydW5rCis3MDYxNyA5Y2NmODJlNjUzMzI4ZjFkODM5NDQzZjhjZmNmZjhmOWRiMDAyZDBjIGxlZ2FjeS10cnVuaworNzA2MTggZTYwMDliOWNkOTA4NGZmY2FmZTBiMjUzOGI2OTMwZTM2OTlmZWFhNiBsZWdhY3ktdHJ1bmsKKzcwNjE5IDE0Y2M5MmFlOTRjOTA0ZDBhY2UzMTNhOWRjOTNiODAwMzc1ZTA1NTkgbGVnYWN5LXRydW5rCis3MDYyMCAyMjhjZmI2ZTI5MDBjMTQ0NmNhMDYyZjU4ODJmMTBlMGNmNGFlYzAxIGxlZ2FjeS10cnVuaworNzA2MjEgNzZiZjM0MWFjMjAyMzdiMjQ4OWVkNjJmYmY3MTdhZGQ1M2JkN2FkOCBsZWdhY3ktdHJ1bmsKKzcwNjIyIDUwMjM4NDk0ZjBmMDVkZWQ1MzJiNTM1OTJjZGQ4NmRlOGY5MTM3ZDMgcHkzaworNzA2MjMgNzA1NTQ1ZWMzMjQzZDQyNzI1NGNmZTE3Y2FhNzIyOGZjNmY2OGZjZiBsZWdhY3ktdHJ1bmsKKzcwNjI0IGYyNmMxY2Q2Yzk4NTAwNWZlZDE1OWQ3ZTE0NjFlYjEzZTBhYzA4ODkgbGVnYWN5LXRydW5rCis3MDYyNSBlZGY2MjcyNjFjN2I1NThiMGY5YzFmMWRjNTU2ZDlkMDgyZjVjNjZiIHB5M2sKKzcwNjI2IGRhZGJlMDE0YmRhNGUyNzUwZTJlZGYyNWRiMTAyNDFkYjg1YTRlZTQgbGVnYWN5LXRydW5rCis3MDYyNyBkMjI3NTg0YzFjN2Q4ZTcwNjQ3Yjk2ODhiZDQzMDdlNzJmNDFlOGI4IGxlZ2FjeS10cnVuaworNzA2MjggZGFmNjYxZDA1NDQyYTdhZGQ4OGEzMzZlYzViNmFmNzBkODA5MDcwMSBweTNrCis3MDYyOSBjYTAyYmQ4Yzk2ZjI5OGJmOWEyYTcwYzg1MzJiZDQ2OGQwMzc1YThiIHJlbGVhc2UzMC1tYWludAorNzA2MzAgNDc1ODA4Njk4ZWFmYWFiNjBkNzU5MGUyODA4YjdlMDM3Zjg5M2NjYSByZWxlYXNlMzAtbWFpbnQKKzcwNjMxIDc1ZTNmZTNjMDcyNjcwZDA2YjhhMWI4NDY4NDE3ZDgyMDJmYTZmOGQgcHkzaworNzA2MzMgZWU0YTAwNmQwMTcxZWMxNDRhZThhNjk0MTBlYTg4NGI4ZDg4MDZmNSBweTNrCis3MDYzNCAxMGE4NGM2MzhlZGExMjk1NjhlNjI2Y2JjNWZlMGJmZTE3YjdkODY4IHB5M2sKKzcwNjM1IDhkNjkxOGFmMjMyYmFmN2U4ZThkMjAyMTg2YWIzZmJjNzVlYjgyNTYgcHkzaworNzA2MzggOGI2OTE2OTBiYWJkNzA4MDc2NGU0YWYzNmQ2YzZhOTE5MzZmOTgyNiBweTNrCis3MDYzOSA5YWI3NTQxMTA0MzE1ZmFlYWM5OTVkMzQ4NTQzZTQ3MTk1MzE3ZDAyIHB5M2sKKzcwNjQwIDQyNjVkNmM3YzA3NDNjZDI5OTNmYjdhOTYxZGE1ZjM4Nzk0MDA3MDkgcHkzaworNzA2NDEgZmJhZDQyYzQ1YzljYjZjNDFmOTBkNWU1YjViZTM5ZDdkYzZmNTc4OCBsZWdhY3ktdHJ1bmsKKzcwNjQyIDdhZmY4YTc2NmUyNTA2ZGE3NmFhMzY3NDVmZWY5YWYwYzRjYjgxODcgbGVnYWN5LXRydW5rCis3MDY0MyBhNzI2Zjc5Mjg1NjE4NTQyZGJhNmQ3ZDQ2MGE5YTJmYTFiZTE4OTliIHB5M2sKKzcwNjQ3IDlkZjVkMDY5NDkyMWE2MmQ4MGIxODM1YjExMzFjZDUxNWIwM2Y0YzYgbGVnYWN5LXRydW5rCis3MDY0OCBiNzNjZGFjNmEwYzM4Yzg1YTg2NDY0YTJhYmU5MGY3MDA4MjdiOWRmIGxlZ2FjeS10cnVuaworNzA2NDkgYmI5MGVjNjdmMzE0ODU3MjY3ZmU1NDY5MTIwMmRiMDA1YzQxMDVlYyBweTNrCis3MDY1MCBkYTQ1NmY0MmViZTdlN2E4ZWE5MTEyNGU3OTVlOGFmNWViOWNlYjAwIGxlZ2FjeS10cnVuaworNzA2NTEgM2FkZDQwMGU0MTlmZjAzMjFlZTk4NWY4MzM0YWZiZDkxYzRkNGQzYSBsZWdhY3ktdHJ1bmsKKzcwNjUyIDFmNWRiOTQzN2RiODhjNWVjZDdmZmZjMmQ3ZDc2MmRjYmJlNTdhMDMgbGVnYWN5LXRydW5rCis3MDY1MyA0OTgzZmQxOTUwMzY2YmNhOWVjOTM2NWJjZmM2MmY0YjVhZTFiMzU3IHB5M2sKKzcwNjU0IGJkZmM0YjNhOTM0NzE5NTFjODExMzI4MDUzMjg4ZWRiODM2MzRkN2UgcmVsZWFzZTI2LW1haW50Cis3MDY1NSAzOTE4NzFmNmMxNjQyYmQ2OGFkNDgxZDdmMzhkNDJhZjBhZDRkZGNjIHB5M2sKKzcwNjU2IDVlZjFjMWQ3NGM1MTIyN2FkNzYwYjkzZjE2Y2E1YTZmYjIzNzk4NzggbGVnYWN5LXRydW5rCis3MDY1OCA5NzZiMDc5OTk1ODk5Yjc5YjA1NWJlNGQxODY4OGEwYWU0YzY0NDhlIHB5M2sKKzcwNjYwIDM3NDliODhkYmI2MTI3NWY1YjRlYjM4ODVkNDRjMmQ4M2ZmYmQ1M2EgbGVnYWN5LXRydW5rCis3MDY2MSA1NWQ1NDIzYmE5ODdjZWNlNjQyNjQ2NTM4NTExZmQyZWI2MDk0NmU4IGxlZ2FjeS10cnVuaworNzA2NjIgZDRlNzQ3MGJkNjYwNDJjMmFiOTRjYzE1ZWEzOTRlZjNmNDYzMGIwMiBweTNrCis3MDY2MyAxNTBmNTY4ZDFiYTJkMDBiNDQ2YmIyYzRhM2NjNzliODdlMmUxMDZjIHB5M2sKKzcwNjY0IDNhNmQyN2Q4MDgyMjk1ZTJlNTAxODY3YzMxMmUzMzZhZjBjMTMxMTIgcHkzaworNzA2NjUgMWI3MjczYWVkMzZjZWQwYmY3YTZiMDc4YzkxMTY3NzhhZjZjNWQ1MyByZWxlYXNlMzAtbWFpbnQKKzcwNjY2IGQwNTkzOTI2M2EwZTUxNWEwMDJlZTNkZDk0ZmRiOWYxMzI0MDc1OWMgcHkzaworNzA2NjcgYjc5NDMxOWMxMjVlYjQ1Y2FkMDMwZGVhYmMyOWE5NzY1NGFmNjAzZCByZWxlYXNlMzAtbWFpbnQKKzcwNjY4IGQ1NWUwNWIwNmU0YTJiMGU3ZmQwZmU2M2I3ODllYWY0YjI2NjQ5YmQgbGVnYWN5LXRydW5rCis3MDY2OSA3YWRkNDIzYWY5NzEwOThmMzk2ZTNhOWI4MzQ2M2NmMmFjMDIwY2U0IGxlZ2FjeS10cnVuaworNzA2NzEgMzZiMzU5MmYzMDIzYjg3NDIxNWMxMGQ1NmZkM2ZlMWNhNDQ4YWI4MyBsZWdhY3ktdHJ1bmsKKzcwNjcyIDkxMzRhMjA5MTAxM2M1ZmEzOTk2MzVhNDY2YmMzNzA2OTRhNzdjNTkgbGVnYWN5LXRydW5rCis3MDY3MyBlMzE0Yjk2ZmI1YWQzNjI5MmZjYWQ5YzZhNTc2N2NhMDA3MzNjMjZhIHB5M2sKKzcwNjc0IGU5ODkxNTk4YTQzMzQ2NGMyNzQ5MmJjYzcwMGE0NjEzMGI2YzY5MjcgbGVnYWN5LXRydW5rCis3MDY3NSBlZjYxMmJlNzcxZWRjZWZiNWVmNDlkYTg0OGNlYTIxZTA0ZTcwYzhmIHB5M2sKKzcwNjc2IDAwMTI4OGE2OGU4YjA3NDg0YmI0ZjVlMWEzN2FlMzAxZjQ2ZjE2YzMgcHkzaworNzA2NzcgNDZhNDVlY2NjOWY3MDFmYWNhYjYzMGUzNzc2NjJlZTRkNjFlZmRjNyByZWxlYXNlMzAtbWFpbnQKKzcwNjc4IDAxOTgxNWJjMzdlYWYxMmQ5ZDhhNDc4MmM0NjE1NzdiMzIwZDA1MTIgbGVnYWN5LXRydW5rCis3MDY3OSA0MjNjOTQ3N2Q2ZWZlNmVjODA3OGM5NTIzZmExYjk5MDVmMDM1MGQ3IHJlbGVhc2UyNi1tYWludAorNzA2ODAgMDJmMjk0YTI4MjA2ZmIwY2Y3OWU3MTdhZmQ1MmQyZmUwMDZhMjEzMSBweTNrCis3MDY4MSBmNDlhOTdhOTc5ZWIwOTA4ZTAzYTgyMzc5OGMxMWU2M2Y3ZTAyMTY5IHJlbGVhc2UzMC1tYWludAorNzA2ODIgMWFmYjM2NWYyNDQ4MjIyN2U5YjNmYzg1MzA2NTgyMWNjNTI1YzAxYSBsZWdhY3ktdHJ1bmsKKzcwNjgzIDZlNTkxZDRkYzZjOTZmYjRmMDU0MGM5OThjNzgzOTk2NmYzODU4N2EgcmVsZWFzZTI2LW1haW50Cis3MDY4NCBmMDViNmQ5YWRiZTY0Nzc1NzY0YWI4NjQ5ODg4ZmZkMWZmNTQ2OWRhIGxlZ2FjeS10cnVuaworNzA2ODUgYmFmYWQ2MWNmMzAyNjJkNzcyZGQ2NTEwMzUwNDE4NTE5Y2JmMmE5ZCByZWxlYXNlMjYtbWFpbnQKKzcwNjg2IGU1MDg0ZDUxNDgwOWVmMDFjNjJkNDI5Zjc0N2MzODIxM2NjOWJkNDAgcHkzaworNzA2ODcgYjBjNWRmOGM4NGEzNDQwNGQ1MTM0NmQ5NGI1NTNiZTE4OTFhYTcxNSByZWxlYXNlMzAtbWFpbnQKKzcwNjg4IGYxNzFiYWM5Zjk2MWQxZDcxMzdmZDRlMGZmY2E0ZDMxYWI2YzAwYzYgcHkzaworNzA2ODkgOTgwN2MyNmNiYzk5ZmExZTAxNTVkZjk1ODIwN2Y4NjkzZWQ0MjM4OSByZWxlYXNlMzAtbWFpbnQKKzcwNjkwIGEzYjhkMTkxZWM2ODEyZWViNWJkMmY2OTY5MmNmNTgyZWZhMzE2ZDkgcHkzaworNzA2OTEgMDUwN2FhYjVmYjExOWY1OTBlMjkwMGEzNDYzZjI3NjQ4YzAxZWFlNSBsZWdhY3ktdHJ1bmsKKzcwNjkyIGJhZWU5MDUyMTExMGRhMjU1YjhhY2UwMmU4ZjM3ZjlkM2Y1MzkwNDAgcHkzaworNzA2OTMgYmVmMDBjYTQzZWZhZTZkOWJkYzJiYzhlM2YyNDVmYjQ3MzA5ZjNjMyByZWxlYXNlMzAtbWFpbnQKKzcwNjk0IDkyYmMxZGRiYzU3MjRmNGUxZmVkYWIwZmNhMWM5NmU0ZWEwOWYxMTQgcHkzaworNzA2OTUgOTc1YjIwMzk5YzhkMDI5Y2JlZGJiZTE3YjJlYmQ5NWJmMmU0Zjk1NSBweTNrCis3MDY5NiA3YjVmYmJlN2IwMDljNGYyYmRkZmM4YjBkODQ2YTM2YWE2N2RkYWQyIHB5M2sKKzcwNjk3IDZlMWM0YTI5NjNlNGM0MWQ2MzJmMjY0OTM3MGVhMmE2N2I1MjY3ZjEgbGVnYWN5LXRydW5rCis3MDY5OCA5YzIzYzU0ZTZiMTU5Njc0NmJhMzhhNTZlNTdmNzRlNTI5NzE4OWY4IGxlZ2FjeS10cnVuaworNzA3MDAgNmFkOWIwMWY5NWY5OTkxYTZlNDA0MTFiZjk4NGU1NTk3NzY5Y2UyOSBsZWdhY3ktdHJ1bmsKKzcwNzAxIDcxYjY5YTg3M2QyMTMxNjcwODJjMTNkNDVlMmRmOWE2ZWY1YzRjNDUgbGVnYWN5LXRydW5rCis3MDcwMiA2ODVmMTc5MWZiYzU5YTk3NDE1OTc4OWIzZWU5ZTI4YzM5ZjEwYTA1IGxlZ2FjeS10cnVuaworNzA3MDMgYTdhZTczYTM3ODA1OTRmMzM3YTE1MjE5OGQ0OWMwZmJmOWRiZjFjMSBsZWdhY3ktdHJ1bmsKKzcwNzA0IDJkODM2NDlhOTRiNzVhYzY0NTRmNTIxZjQwNWIxZTBkOTRiMGQ2MDQgbGVnYWN5LXRydW5rCis3MDcwNiBmY2U4ZjIzODQ1MmUxY2FkOWY1ODBjNGU5N2RjMTUxMTk4YTAxYjYxIGxlZ2FjeS10cnVuaworNzA3MDcgMTFjMzM1YTk2ZjYwZjFkOWNkYzJhYjhmMjYwMWQwYjQxM2FmODkzNCBweTNrCis3MDcwOCA5ZTRiYjk0MWExZWE1NWM1MGEwZmRiN2Y5NDljODE4NzA5OWFkZGZiIHJlbGVhc2UzMC1tYWludAorNzA3MDkgMDA1NzEzOTQxYTE5M2EwNjkyODkxNmEwNDZmNzVkMTU1ZDc5ZjYwNSBweTNrCis3MDcxMCBjYzAyYzljMjkwYTk0ODRiYjkyNjlhZWZhOTcxNDI5ZTUxMjQ0YThiIHJlbGVhc2UyNi1tYWludAorNzA3MTEgYjlkNmZkZjBmYmIzNjFmOThhOTNhMjA3NDk5MTg5NTIxZTdmODMxNSBsZWdhY3ktdHJ1bmsKKzcwNzEyIDg0ZTk5ZWZjNjdiMmIxYTBmYWNiZmNjYmJiM2Y5ZDAzODYyY2YwNzcgbGVnYWN5LXRydW5rCis3MDcxMyBmNWMyYmNiMDk0N2I4YWE1NmY5NjM5NmY2ZTFjOGJmMGE0MGNiM2I0IGxlZ2FjeS10cnVuaworNzA3MTQgMTRjYWUxMTYwNjlkM2NmNWRjNzg3YjliMGYyZDZhNTJlNzg5OWQyZSBsZWdhY3ktdHJ1bmsKKzcwNzE1IDFiN2NjY2EzNGYyZmE2OGZjOWM1ZWM4MzVmZjUyZjkwYjU0MDlmMTMgcmVsZWFzZTI2LW1haW50Cis3MDcxNiBhYWFmMzI2OTQ4NzZhNzY5YjA5MDgxZThiNDU3OTAzNzBkNzFhMTI3IGxlZ2FjeS10cnVuaworNzA3MTcgOTY1MjMwYjMzNzlmMWI4MjVjMmYwMDlhNjA3ODE0MDc4YmRjODYzYSBsZWdhY3ktdHJ1bmsKKzcwNzE4IGI5YzQ5OWU5Zjc0ZGE5NWI5ZDgzMWU0OTFkOGE4MDlhNWJhM2EyY2YgcHkzaworNzA3MTkgYjRhNGY0YjYwOGFiYjFkMGRmMDVhYTc4NzBmNDM3MjU4YzAyOTk0MCBsZWdhY3ktdHJ1bmsKKzcwNzIwIGFjMTY0YjU0YzhhOGEzYzE2YzQzNTUyNzU1NTA2YTQ0ZGViMzU4MDQgcmVsZWFzZTI2LW1haW50Cis3MDcyMSBiNGFkNTk0OGUxOTdiMjZiNDk2NGE4YzE1MWVmZWVkYzUyZTJiNGFiIHJlbGVhc2UyNi1tYWludAorNzA3MjIgMTAxNGYwYWJkYjU3MjEwM2NmNzk3ZTIzMTZlNmJkMDVmY2I4N2U3MCByZWxlYXNlMjYtbWFpbnQKKzcwNzIzIDQyZTg3ZmY5ZjY1ZGJkMjY3NGU5ZjcyOWIwMGJlYjE1OTNiNjQxMWUgbGVnYWN5LXRydW5rCis3MDcyNCBlYjU1MmE1OTA5ZmI4ZDIxNzZkYzU5ZGIyZWI0ZWI2N2U1YTZlM2E5IHB5M2sKKzcwNzI1IDM5YjYyYjJjYjJjNzYwMjNlMGQzOTAwYmFlNWVmNTY0ZjM3MjUwYjAgcHkzaworNzA3MjcgOGRmNGUwYzA2ZTk0MDI2M2EyODRlZjlmODhlNGJmZDJiZDk1Yjg1ZCBsZWdhY3ktdHJ1bmsKKzcwNzI4IDJkMzhkZTAwMmJiZWJiZjA5N2I5NjViYWMzYWY2OTg5Y2U1ZDFjMWEgcmVsZWFzZTI2LW1haW50Cis3MDcyOSAwOGJmMzE4NDhhNDIyYWMxOTE2YzYwZTQxMjY0OWI1N2IxNjMxM2Q3IHB5M2sKKzcwNzMwIDJiZmY5MTIxYmUwZjY0YzllNDc4YzYzYmU4NDhmZjUzNWVmYzFiZDUgbGVnYWN5LXRydW5rCis3MDczMSAxNzViYTc2ZTljMmI3NGIyOGNkMGMyOTA2OGEyMzhlOTNjMzNjY2UxIHJlbGVhc2UyNi1tYWludAorNzA3MzIgOTg2NTU5ZGE1NGRlMTQxMDRhNGFlMGQxYzA3ODQzNzRjMzgxMmVmZCBweTNrCis3MDczMyA4MWFhNDBhYjM0NmQ5NjE2YjAyODM1OGYyZmRlNzg5NDA2ZWZlYTRkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3MzQgZjJjOTBmZDA1ZDY2ZGM5Yzc4ZDExYzA2MDk0ZDJhN2Q3Y2NjOWU2ZSBsZWdhY3ktdHJ1bmsKKzcwNzM1IDE0ZTI3NTBlMjUwNmU1NjZiNTMyMjkzN2M3ZWU1N2MyZGIyZGNiYTMgbGVnYWN5LXRydW5rCis3MDczNiAzOTUyMzQ2MWVmN2UyNDcwMzVlOGYzZWIwMzg4ZTA0YzhiNGY1MTAzIHB5M2sKKzcwNzM3IDk3NGMyYmVmMjgwMGYwYWRlNGE1OGQyZWNiYTkwNTZiNjhlZjA4ZDUgbGVnYWN5LXRydW5rCis3MDczOCA1NzMwODUwMTVhYTg5MzQ2NzQ5ZDI0NTZmMzk4MWJlOWUzMjM1OGJkIHJlbGVhc2UyNi1tYWludAorNzA3MzkgODU3YmU1ZDk1MTIwOGNhZTBhMTA3ZDlhZDFiMGMwNjgyODkzNGU0NCBweTNrCis3MDc0MCAzNzZiODIxZGI0MjhiOGY3NWQ1ZTJjNDFhZTlkYTk3MDZmMDk1NjczIHB5M2sKKzcwNzQxIGRkOTdkM2MzZmM2NjE4ZjQzZmJhYTc5MjUwNzRhOWY1MzkzOThiZGYgbGVnYWN5LXRydW5rCis3MDc0MiAzYjViY2I5M2JkMTE5ZGI4NmQzN2YxZmQ0ZjIwZGU5MmMyMTViODIwIHB5M2sKKzcwNzQzIDBlMzhiOTQxZDllNDkwYmViNmEzMDJmMmQ2NzJmZGUyYzU4YTJkM2QgcmVsZWFzZTI2LW1haW50Cis3MDc0NCA1NGExMDc2MzgzODk1NTgzYjlkMWQxOTAyOTVkYTFjZmM0ZTc0NjI5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NDUgMmU1ZTAwMWQ3ZDM2YWQzYjQ1MjE0Yzk1NTRmM2RhNDU2NjEzNzExNiBweTNrCis3MDc0NiA5OTgyOWM5MDgwNTgxMjc4M2VkM2I4MTg4ZGU3YjQyMDEwZTQwYTA4IGxlZ2FjeS10cnVuaworNzA3NDcgMTBhNjNiOTMwY2JhZTE0ZjAwMzQ0OTRiMGQxZDMyMzFlMjI4M2E1MiBsZWdhY3ktdHJ1bmsKKzcwNzQ4IDI2OGI4ZWIzMWY0OTM2ZTJlZmFkYzQ4NzEwZmU5MmUwY2M4MmIxOWMgcmVsZWFzZTI2LW1haW50Cis3MDc0OSA1MmMzNmU0NTBhNDhhYzVjYTY1YjYzODdkNWQ5MjVjYWFmMTdiZjZkIHB5M2sKKzcwNzUwIDc1NzFhYWMzZTBjMjBhMzczYTI1ZmJmNTZjNTRmNTc1NDE2NmU4ZjEgcHkzaworNzA3NTEgYjhlODdlZGYyZjY2Mjg3MmZiNTZlMzA2YTI0MTg1YWI1ZTA3OTU5MCBweTNrCis3MDc1MiBlY2E5MzkwMjJiODMyZTM3YjdkNjhmMGQ2MzYxNDMxOTAwNDg3YjdkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NTMgYzM3MWMwOTI0ZjM1M2M5YTkxNjY0NDJmZWIzOTBmODg4NjU3ZDdjOSBweTNrCis3MDc1NCBkZTYzY2JjNTYxYjY4ZTZhYzhiYTZmYTk1NjQzYWFmMzBkMGIzYjY0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NTUgNDVhNzE3NDUwOTYxYzY4Yzk4ZGE4MTU3YTM5OWNmOGQwZWQxNWVlNSBweTNrCis3MDc1NiA3ODBkNjQwMWVlZDZkNWZmYWE1MDkwYWNhZmZlZDhmNjE0MzM2ODAxIHJlbGVhc2UzMC1tYWludAorNzA3NTcgMmZmODlmMGYxZDE5MDJiODE3MTI2NWJkNjBlNGIwYTZjNTIwMDdjZSBsZWdhY3ktdHJ1bmsKKzcwNzU4IGZjZmMyYzk5NGE0YWEwZTc0ZDk0MGQ4YWEwMGU1NTg1NGNkZTVlMTYgbGVnYWN5LXRydW5rCis3MDc1OSA4MzRhM2E5NmQzYWI0ODNiYWFhYjFhOTVkMGUyYzllZmU4NjJjOTZmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NjAgZTlmZjBlZmNmZmE5MDhhZDhjZjA3Y2IzNWQ3YjU5ODk5M2RhYzBhMCBweTNrCis3MDc2MSAxZTc4YjNkY2NhNDJhZjNjZmQ3ZmUxZGUzZDI1YTEyNzhhNjJiMWM1IHJlbGVhc2UyNi1tYWludAorNzA3NjIgODAyNzFjZTA5YTY2ZmJkOTliODMzZjc1OGIwMWE2YmQ0YzU3MzdkOSBweTNrCis3MDc2MyA5NGJhMmZhZDkzNzhhNjQzYTRhYzYzZTAxMDdiM2E0NjEyNjNmZmUwIHJlbGVhc2UzMC1tYWludAorNzA3NjQgODBlYzUwZDEzODU3ZjI4OTQyNmUzN2M2Yzk1NDhiZjI4YzJkMGM3ZSBsZWdhY3ktdHJ1bmsKKzcwNzY1IDQyMzlmYTU2MjczNWFiMTE1NGI4OGJlZjc3ZTkwODc4NmYyMzBmNTEgbGVnYWN5LXRydW5rCis3MDc2NiA1NmEwOWRkMGUwZjMzMDE0N2UzZjE5YTM0Y2M2ZjU1OGM4ZDEzYjg5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NjcgZjZiMDUwNWEyMmIzOWQ5NjQ3MjJkMzYxZjhmZTdjNDZmNjEwNjU0ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzY4IDQzZWJhNzg5MTU4ZmRjYTM5YjExZjMyMmVkMTc3ZDhlODM1YzU2YTEgbGVnYWN5LXRydW5rCis3MDc2OSAyZjIyMjcxY2Y5MjQ5OGI4MmJkZmU1MmY5YzIzMTYzYjNlMTlkNGI3IGxlZ2FjeS10cnVuaworNzA3NzAgYTI4ODcxMDlmMzQwNjhlZDBmYzA2YTU0ZDVlODBlOWQxZmI1ZjNkYyBsZWdhY3ktdHJ1bmsKKzcwNzcxIDBhZmI1ZDg5NDY2MTY0ZmRkOGU5YWI2MDczNWY2ZTA5ODg5Yjg0NGEgbGVnYWN5LXRydW5rCis3MDc3MiA1ZGViMjcwNDJlNWE3OWUyNDdlM2FkYzkxY2M2MGI2YjM0ZWIwMDc2IGxlZ2FjeS10cnVuaworNzA3NzMgM2Y4MWQ5OTQ1ZTgyYTBlOTgxYmJhMTM5YmJmYmYyM2NlM2RjOTJiMiBsZWdhY3ktdHJ1bmsKKzcwNzc0IDlkMTc4Y2I1NDY2YTBkNzQyY2E4YTY2MTc1ZWZmMThiMmMzY2Q1YTQgcHkzaworNzA3NzUgZjRjNWUzYTY0YmUyM2E0ZWNhZmRiY2Q4ZjZjNzhhMDczNjkyMzNmOCBsZWdhY3ktdHJ1bmsKKzcwNzc2IDVlY2UwNzg1ZGY4MTNkNTVjY2FhYWRhNDc4ODQ1YjVmMTVkNGZhOTIgbGVnYWN5LXRydW5rCis3MDc3NyBlMDEyNGY1NDBlZTU2NDhlYTkwMzIzY2M3MTQ0YWNhOTExZjE4NWFlIGxlZ2FjeS10cnVuaworNzA3NzggODk3NmVjMmNkZmU1ZGI3ZTg1YjQ2ZTIwYTc2ZmU4NjIxMDZmOWI5NiBsZWdhY3ktdHJ1bmsKKzcwNzc5IGU0ZWZjYjI5OTBlMjVlYjVlYzBlMzk3MTdkY2I1ZTQ2YWVkNTE4ZjUgbGVnYWN5LXRydW5rCis3MDc4MCA5NzA0OTZkYjE0YmNkYjkxN2JjMjk2MzE4ODBlMjY0NTExYWE5NjJhIHB5M2sKKzcwNzgxIGRjYWMwNDU5MjMwMjg0ODQzZGFmMjNiYmU1YWRiNTg5YTVlNTBmYzYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc4MiAwZDYyY2M1YjQ4ZDVjZWNlNDk3NDZmNjE3YTkyODhlNmY1ZmQ0NzFkIHB5M2sKKzcwNzgzIGVhNGM1YzNiYzdhYmI4YzMwYzUyNDllOGZjMDE0YjRkNzEyZjU1MzkgbGVnYWN5LXRydW5rCis3MDc4NCAxMWE0NTY0NzdlODI1ODczM2YzMjU4OWY3YTJiNGZlZGM2Y2ZiOGNmIHJlbGVhc2UyNi1tYWludAorNzA3ODUgODAzZDAyNzNjYmY3YzA5MDU2OTBlNjViMTI2NTNjZGM1ZjRkYjJmMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzg2IDc1ZWMxMmIyNDQ0OGUyYjRkYzFjZDU1ZGY0YmIwNjExNTYyMDI2M2YgcHkzaworNzA3ODcgODlkZWEzZGY0Y2I1NzUwYmFmN2VmYTUxZDNkZjc3NjhhYzBiZWYxNiBweTNrCis3MDc4OCBjNjk5NTQ3MDUzYTk4YzE5N2I5YTMxNjBkMTEzYjBjMTVlYzMxMGNmIGxlZ2FjeS10cnVuaworNzA3ODkgMTA0Y2NkMDY0NjFhODg5YTM2ZTRiNDMwOWFhOGMzNDY2MDU1ZTBkNyBsZWdhY3ktdHJ1bmsKKzcwNzkwIGYyOGU2Zjc4MjFiMzFiNzQ2ZTJmNmNiM2ZkOTdjZDI4MmY0MjRkZTggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc5MSBjMWEzY2VjMGFjZDQyN2YzMThhMWZkMzAyNTIzYzUxMGI2YzkyOGRlIHB5M2sKKzcwNzkyIDcyYmJiMGY4YjA5YTcyMTRiZmQwMTE5YjFjMzllNDJmNWJkNDJjODAgbGVnYWN5LXRydW5rCis3MDc5MyAyNmIxYWQwOWQxYTcyMzdmMmEwZGI1MmIyYWZiOWZjOGIzNTk0ZjcyIHJlbGVhc2UyNi1tYWludAorNzA3OTQgZWUyMjJjNGQxMjlhMmY2ODViOGI5MjY0ZjJhNGZhMjlkMzA2MGVhYiBweTNrCis3MDc5NSA1MjE5NWZjYWIxOTNkNjk0N2UzYmNlZDIxOWYzZmZlOTEzNDQwZTM5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3OTYgMzgwOTNjYmVkNmE2ZGM2Mzc4ZDRjNmQ2NjgxZDU0ZTI3MDAyNTkzYyBweTNrCis3MDc5NyBkMTJiMDJhYmU2ZGNiNDdhYjJhMTk0YzE2N2VkMjE2NWE4ZWJjY2FiIHB5M2sKKzcwNzk4IDIzMWQ2MWM0M2U5Y2RmZGQ3NjQ1ZWE0M2ZlNTVlMDJlYmFlNjIyZTIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc5OSAzZGE5ZGMwYzY1YzZiMWYwYWQ0MmYwNmViODI2NzcwMWFlNDYyMzQ3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MDAgYTkxY2YwZGVmYmQ2NzY2OGU0YzM3ZjZlYzE4NGJmMDFiYmUyNjRkOSBsZWdhY3ktdHJ1bmsKKzcwODAxIGQ0Zjg2NjczOWJiMjRjMzQxMmVkNzRkMzUxYWUyYTZhYjFjMTQwMzAgbGVnYWN5LXRydW5rCis3MDgwMiA5NjJlYmE2MjI5OWZiODg4ODdlZDA4ZmE3NGExNDY4OTRlMDBlOTVkIGxlZ2FjeS10cnVuaworNzA4MDMgMjM1NjIyNjE3NDk3MWViODFmN2FlMDYzMmU4YTkwMjJmZWZiZTYyZSByZWxlYXNlMjYtbWFpbnQKKzcwODA0IGVjZjg0MjRkNzQyMjBiNDAwNjlmYjk1YmNmOTk3YmFiN2JkN2QxZDMgcmVsZWFzZTI2LW1haW50Cis3MDgwNSBkMjQ3NWQ4MDY5YWNkYzZmODcyN2NlM2Y4NTYwYTZjYjdiODBkYmY4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MDYgZTQ3NzhlYThlNGIyOGQ1NDZjOTM3Y2UwMjExNjIyOTUyY2JkNDcyZCBweTNrCis3MDgwNyA2ZjQ2MGI3YWNmOGY0YmNhNzEwYTkwODU4N2FjMzdlMjA4NDZjMjY1IGxlZ2FjeS10cnVuaworNzA4MDggYzk4YTcxZTk5MTYyYWNjODZhMmU0MGEyYjAzOGM4MTRiZWJiY2Q0MCBweTNrCis3MDgwOSAwN2Q2NTE3MWE4MDA2OTExYzc5NzM0NWEzNTIxZDE1NzUzOWVlNDliIGxlZ2FjeS10cnVuaworNzA4MTAgNGFkYWI3MjQzMzM5OTViYTE3YjM1N2JkNjVmZmFkODc0YzhlMjEwMCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODExIGVlZDRjN2ZhM2UwNTg3NDJkYjE4MWM5YzE2MWQwMzE2MzM4ZmFkMzcgcmVsZWFzZTMwLW1haW50Cis3MDgxMiA4OTlhYTJkMTg5ODQ3YjdmNWM5NThhOGFlMWM5N2IyZGQ0YjIzM2EzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MTMgNjkxMDc5MmZjZDRiNjQ1OWUzZmMyNGVmMTMzYzZkMzM4ZTllNjE5ZiByZWxlYXNlMjYtbWFpbnQKKzcwODE0IDRlZWIxNGE5YzVkMmQ3MWM1MTJkM2M3ZmQyYWYwZDgxZGI5M2QyMDQgcmVsZWFzZTI2LW1haW50Cis3MDgxNSA5ZWNlYjYxODI3NGE1MjFmYzU1YzBiNWQxZmM4ZTExMWI5MWJmNmQ2IHB5M2sKKzcwODE2IDkzMmExZTUxNGMxNjIzNGZjY2I0MjNkZjdhYjNjMmYxYTAzMDhkMDQgcHkzaworNzA4MTcgMjFjMTU5NGFjMzY5ZmEwOWFiN2VmOWQzOGNmMzJmODc5MmE4MGY5NSBweTNrCis3MDgxOCBjMmIwMTRiNTViYWMyNDFlMWY4MjkyNjI0NjJlYjA0ZDFkMGI1NzE5IHB5M2sKKzcwODE5IDIyNDJjMmU2YzczYWM2ZDY5MTA0NmNjY2U3ZTAzYjBlNjhmZmM2MzEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgyMCAwNWY5MGNlY2IyYTI5ZTBkZTA1NGNkOWM2ODQ0ZDZmNmNlNjgxNGNlIHJlbGVhc2UyNi1tYWludAorNzA4MjEgNjY5NGYzYTFiNmU3Mjc5ZWU4YmM2NzQ0ZmMwM2E5MWQ3MjRkODk3YSBsZWdhY3ktdHJ1bmsKKzcwODIyIDIzNDUxYjA5ZjE1YjkyM2E4MWRhYjhkMDhhOGQ2YTZhYjliYjFlZjkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgyMyAyYjQzNjMxMGZjOGJiMDU4OTljNmY0NGE0ZmNkOWMyY2YwOTIxNTRkIHB5M2sKKzcwODI0IDQ0MzYzOTFkMmE5ZjI0YmU4MjEwN2U3MjEyMmQwMmI4Yzg0MzE0NjggbGVnYWN5LXRydW5rCis3MDgyNSBhYTdjZjMyODNkNmUwNjI2ZDBlOWYwOGRlYWYzOTZkZTA5YzgyZWJmIGxlZ2FjeS10cnVuaworNzA4MjYgNDg1N2NjYTQ1YWE1NDMwODA4MDc0NmUxN2MwMzYwZjZkN2Y5OTBjZSBweTNrCis3MDgyNyAzOThlYzk0MDI3N2Y2NDc2Y2RiYzJlMmEzZTY2MGM3ODQ0MzBkNzYwIHB5M2sKKzcwODI4IGUxMjk0NDZkZmJmOWExYzJkM2FjOTIyNTc3ODE5MGE4MjBkZjNhYjcgbGVnYWN5LXRydW5rCis3MDgyOSA1MTQyOWExOTZjNzVhZTIzYTMyODgzYmRlYjEzYzk2YWM3OTE5ZWEyIHB5M2sKKzcwODMwIGFlNjBlNGMyMGFlMzNmODQ2NDYyZWQ1MmJiM2M0OWVmM2U4NGMwMjAgbGVnYWN5LXRydW5rCis3MDgzMSBkOGNlYjI2YzY2YzQ4YzJkZmRkNTE4M2YwMjlmM2U2OTVmZjcyMTdjIHJlbGVhc2UzMC1tYWludAorNzA4MzIgZGFmZDk4MmRmY2Y0YTBlMjNhZDU3MzZmM2I2MDBiZjU5NzFiMjg4YyBsZWdhY3ktdHJ1bmsKKzcwODMzIDUzNGZhZjkxODdlODQwMGEwYWE1M2UwYWM2YmEzZjEwODBhNGVhMTcgcHkzaworNzA4MzQgMzc1Mjg3MzI3Y2U5ZWZjNzAzMzEzYTA2ZWVjYzlmNDcwMTA1NTE0OCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODM1IGQxODZkMzUzY2M4MTcwZmFlMWFlNzAyMzYxNWRjYjk1MzY1ZGRiNzMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgzNiBiOTg1MjNiZTBhMTU3MDlmYWI5MzEwNzBmNWJjMGVkNjQxNjVlZjRiIGxlZ2FjeS10cnVuaworNzA4MzcgMTFkNmU1MzhhMjc5YjRhMjg3ODRkYThlZDJhY2Q1ZTBhZWM2MjViYyBsZWdhY3ktdHJ1bmsKKzcwODM4IGEzYjJhOTcwNmZjMzZlMjJjMTg1NDJhMTgyMGZkYjViY2RiZmMwZTMgbGVnYWN5LXRydW5rCis3MDgzOSA2YTZkZDhhYjNmMjI4N2VkNjcwMTliNjJiY2JhMGYzYjEyNTIwN2U1IHB5M2sKKzcwODQwIGEzOThhMmY3NWQ0NDRmZjVkMTM0ZGNhYTJiNjhmOGU0OWIyOWQ1ZGYgcHkzaworNzA4NDEgMWQxZWIxNDliMzIzNzFiMTEyZWNjOGQyZDI5N2RlYzM0ZTA1YjQwNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODQyIDcwNzI5ZTczNTNkYjAzNTQ4NGYxZmU5ZDViNTA3ZGM4Mjc1ZTYyNWMgbGVnYWN5LXRydW5rCis3MDg0MyAyZDgwYzI3OTc1MDEyZGYyOTkwYmRiZjE3OWE1MDZlYmI2NTdkZjI5IHB5M2sKKzcwODQ0IGRiNTAxODdiNGMwY2I5MTViNmU1M2ZiMDQzMGY1YWIwNjY2NjRhNmYgbGVnYWN5LXRydW5rCis3MDg0NSA2MjU5ZjgwZGMyNGQ2MDg0NGI2NzJhOThlNWQxMjA4ZTZjMDJlNDk2IHB5M2sKKzcwODQ2IDg0MDAzMmQ5ZWZkNjJjYWI3ZjhmMjU1OWE1N2VjOTQyOTgyN2Y2YjUgcHkzaworNzA4NDkgODcxNzEyODNkMDJmOGRkZjMxNjc0NGYwZGU5M2UyN2U1Zjg2MTlkMCBsZWdhY3ktdHJ1bmsKKzcwODUwIDZkZGJkZmRiN2E4NmQ5YWQ4MGU4ZmU1Zjg1ODkwMTgwNzgxYTU1NTEgcmVsZWFzZTI2LW1haW50Cis3MDg1MSBkNDk1YTExYzc2ZTk4ODVlYWI0ZDhiMzg3NjE3YzU5ZTE0M2VlMDI3IGxlZ2FjeS10cnVuaworNzA4NTIgNzY2M2M0OWM5YmY2ZGNjN2FmMzk5Nzk4MzhlMzkxNGJiYTBiZDQ2YiBsZWdhY3ktdHJ1bmsKKzcwODUzIDA4Yzg2ZjQ1YWM5MTU1YzVjZWQ3N2VjY2U3YTY2OTAzMzRlY2I2MzEgcHkzaworNzA4NTQgZmVhNzRkOWIyYTVmMzI2MTdmOTkwNzJhMDc0NTE1MmNkMjA4ZjZjNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODU1IDYxNTQ4YjNlNGNhODNlZjE3YzgzYmEyYTIzYThjZjRkNTRhMDFiNDAgbGVnYWN5LXRydW5rCis3MDg1NiA3NjQxYTNmMGIyZWMzNWVjYjg3MGJiZGE2NWRlZjIyZDlmODMyOTVjIGxlZ2FjeS10cnVuaworNzA4NTcgZTVkOGYwYzBkNjM0MDYxMzI1ZDE1NGFhZjhlMTdlZjBmMmQzYzllYSBsZWdhY3ktdHJ1bmsKKzcwODU4IGEwMjBlNjk4MzhiYTcyYWU4ODU3MTNkMzJjMDUyNzM2NGE1NDNiNWEgbGVnYWN5LXRydW5rCis3MDg1OSBkMDI3NTU3NGM3Y2ZlM2FlN2RkZjk1NGJjNDNkMGRmY2FjYTdiNzliIHJlbGVhc2UyNi1tYWludAorNzA4NjAgM2Q1OTgxNzUwNjhjYmIyYzhhNDAzZWIwNGE2MTYzNjc2ODNiMDZjYyBweTNrCis3MDg2MSBlZjI4MTZjNTZhYzJlZTY3MjkxMTJmZDliNWQ3NzUxYmRiYzk1Nzk3IHB5M2sKKzcwODYyIDhmNTFkZDA5ZjNmMjNjN2ZhZGU5OGQyNmRkMmQ5YWE2OWRiMDBjOTUgcHkzaworNzA4NjMgMTUxNmZhMjIzZmMxNGI0MjkyZjA2MWQ4MjQ4NGZiN2U1OWViMTY1NiBweTNrCis3MDg2NCA1MTBlZDA1N2I5NWZhODZjNjA1ZjQ4YTg1OGI2NmFmODM1MTg5ZGYyIGxlZ2FjeS10cnVuaworNzA4NjUgNTQ2YzUwMjFmMDI3OGUzMzBkZDU2M2M0ODZlNWVhNzNiMTBiMjA5NiBweTNrCis3MDg2NiBlMTYwN2Y2ZDliZTg3NTc5OGEyNTdhMDJhZDE0MTNhYzQ1MDQwNmRhIGxlZ2FjeS10cnVuaworNzA4NjcgZTcwYTZjNDZiM2FiNDBmMzNiZWUzOWVhNzA4YmU2MmEwYzZlY2Q3YiBsZWdhY3ktdHJ1bmsKKzcwODY4IGY0YjkwMDE1ZWYwMDk5MjI2OGE2OWU0YzljMTQ2YjFmMGJjMzhlYjUgbGVnYWN5LXRydW5rCis3MDg2OSBkM2UzMWJkNTQzMGFiNjlhYWVkNjU0Mzg2YzFkNDFlZjRkNTRiZTQ3IGxlZ2FjeS10cnVuaworNzA4NzAgMDJkYjJkMzQwMTMzNGIzNWNlYjk3MjQ4YzFjMWRiYWNmYTE5NzhmYyBsZWdhY3ktdHJ1bmsKKzcwODcxIDUzYzFiNWY2Njk2NTJmZmQxNTI4MGQ5NWYwMjJmNzBjYTAwYjcyMTYgbGVnYWN5LXRydW5rCis3MDg3MiBlNmIzZTY5NmRiY2U4ZDQ0YzNmNThmOTFhOTI1NWJiYjQyMTAxNjg3IGxlZ2FjeS10cnVuaworNzA4NzMgNjA5NmVhODFkZTBiN2E5MzhmNDI2MGEyMTlhZTBiNDJiOTE5OGU2OSBsZWdhY3ktdHJ1bmsKKzcwODc0IDY4YjdlODIxN2M3ZTUwNDYxOTNhMTFlNzQ2NTFkZTg2NTJiOGMzNTYgbGVnYWN5LXRydW5rCis3MDg3NSA0NWJhNDc1ZDRlOThjNzI1NjY3MGYwMWM1N2U0NmI5M2VkZDc3ZDM3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4NzYgYjJhZGI3ZWJkYjU0ZjI3OTBiMGQwNzI0MTRiMTg2Yzk4OTMyMDEyOCBsZWdhY3ktdHJ1bmsKKzcwODc3IDExMjY2OWRmZjA0YWJhZjM1MWYyNTIyNWIwZjJjNTE3NjNmMDQxOWYgbGVnYWN5LXRydW5rCis3MDg3OCBhYjliN2Q1ZGI5MzU4ZmIzZGRiN2E2ZGZiMmE2ZDRkMGFjZjM1NTgyIGxlZ2FjeS10cnVuaworNzA4NzkgM2FlYTc1YTM0MzM3M2ZkOTY5MDJlZTc2NzM0YWUzMjZkZTBlNjM0OCBsZWdhY3ktdHJ1bmsKKzcwODgwIDBjMTdmN2JlZTJhMDY5MGRlNjVkODlkOTk0OWVhNWFjZGFjNjJiMmIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDg4MSBkOWM4ZDFhNWRkZWUyMzU1ODk1NzU5ZTcyMTJhMGViMTc1ZTNkZDgwIHJlbGVhc2UyNi1tYWludAorNzA4ODIgOWY4ZDZkZTg5MDM1MjFhYjY5MmQxNGZhZDA0MTBiNTdkZGRmMzE4ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODgzIGI1YWE4YWE3OGMwZjFjMTE0MzA2NDcwNjQyOGMxYmViNTBkNWQ1OWQgbGVnYWN5LXRydW5rCis3MDg4NCBhNTMwMWVkYWE3MDRjYjMwY2I2NjIzNjZkNmJlMzc1ZWFkMDlhODg3IHB5M2sKKzcwODg1IDFkN2E3NzJiM2IxODM3YmU5MGJkMDczZDExMWJjMjAxM2M4ZjA2ZDUgbGVnYWN5LXRydW5rCis3MDg4NiAyYjljOTE2Njg3Nzc0ZjZhMzNlNzZlYjJlYWZjYzExNjVmY2E5NTE5IGxlZ2FjeS10cnVuaworNzA4ODcgMDliNzBkNTg4OGJmYjRhMjE1MGUzNmM4YmU0ZGU5MDU0NWFlMTFmZiByZWxlYXNlMzAtbWFpbnQKKzcwODg4IGVmYWE2N2JiM2YwNmZhOGU0MTZhNjNjZjU1NzdiMjlhODNjMjcwYjMgbGVnYWN5LXRydW5rCis3MDg4OSBjYjA5NjkwNzFmMmFkOTRjOWY1ODQ3YzcwMDkwN2NhZmYyNzU2ZDcwIGxlZ2FjeS10cnVuaworNzA4OTAgOTYwOWVkN2RlYWY4OTA1MzA3MThhMGVhN2FiZGMwMTZmYjY3MTFmZSBsZWdhY3ktdHJ1bmsKKzcwODkxIDA3YzVjMGQ5ZTcwMDBhY2QxZmU0MTk4ODRjYmUyNDFjNmEzZGEzNzIgbGVnYWN5LXRydW5rCis3MDg5MiAyMWIyN2UxMTVkZDI1MDBiNjM2YzRjOGNlNDI2MjFjOTViNmQ3Zjg5IGxlZ2FjeS10cnVuaworNzA4OTMgZmJkNDA1NDgxMzBkZTdjYjYwYzI2MjAyOTNlMWExZjkxZTRiMDdkNCBsZWdhY3ktdHJ1bmsKKzcwODk0IDU3NDQ0NjhlNjA5YmRiZjU4ZGYxNjY2MmYxNGI5NDYwNjIzMGQyYjYgbGVnYWN5LXRydW5rCis3MDg5NSA4MGZmODVkODdmNjc1YmRjYTZjYjg5NWUzMTEyMTZhNTEyNTg5MWNlIHJlbGVhc2UyNi1tYWludAorNzA4OTYgZjZkOWMyMDg5MTcwNzQxNzIyYWNjOWIzNjdlOTM3MWNjNGUyNzRiYyBsZWdhY3ktdHJ1bmsKKzcwODk3IDU4N2ZjZmJlMDhiNjM4OTg3YTlhMGZhZjhlNDA3MDlmMWQwMDM1MmMgbGVnYWN5LXRydW5rCis3MDg5OCA2NjQwOTk2ZjA0ZTc0NzFiZjRkNjdmOGU5YzdmMmRiMDZjZDVlMWQzIHB5M2sKKzcwODk5IDNiZjlhZTQzNzYwNmM0YTJjNmIzMmNhNmU5OTNmMzcwNDdlZWI2NjMgcmVsZWFzZTMwLW1haW50Cis3MDkwMCAyMWJhMGIzZmU4MTlmZDZjMzdlNzgyMTI2OTgwYTQ0M2M4ZTMzYTBhIHJlbGVhc2UyNi1tYWludAorNzA5MDEgMGQwODNmYjA2NjVkZjk3YjAzMjExYzQ0OGE2OTk2Yjk0N2RhMTVmYSBsZWdhY3ktdHJ1bmsKKzcwOTAyIGZhOTI0M2JmNTI1Njg2NjIyYjNkNjI5NjEyMWJlYmJmMWM1MDJjYjIgbGVnYWN5LXRydW5rCis3MDkwMyBlNTI4NmJlMjRlZDUxMDZhY2M4NGEzNWY2NmVkNjllNjRkODgwNmRkIGxlZ2FjeS10cnVuaworNzA5MDQgN2RmMjQ0MTEwZGQ1ZmExNzk1ZThiM2FhNjg3YTEyZDdhMjU1Y2ZjZiBsZWdhY3ktdHJ1bmsKKzcwOTA1IGI2NTc5NzhkNTZhZDZlMjEzYzc4YzQ3Mzg0Yzk5ZWM0MWUwMmZkMWQgbGVnYWN5LXRydW5rCis3MDkwNiA1ZjNmZTFmMjZiMzZkMDlkOGYwZDM4MzYxZjc2Y2U4OTZkMjQ0NGQzIGxlZ2FjeS10cnVuaworNzA5MDcgMTgzOWI4NTUzYTJkYmRjYWU5ZWFlYjgwOWMxNGUwOGU5YTUwNmFjMiBsZWdhY3ktdHJ1bmsKKzcwOTA4IDVjZjc0MTM3YzBmODYwOGNkYTk4ODRiMzE0MjQ5OTBhYjAyNzQ1NDQgbGVnYWN5LXRydW5rCis3MDkwOSBlMjgxOGI5Zjk2NGJlODJhOGU2NTc2NmVjZTM1ODBlMzU3MDQ1YTZmIHJlbGVhc2UyNi1tYWludAorNzA5MTAgNTg1NmZhZTAwOWU4NmQ1NjNjYTM1MTBiZjQ1YWVlNjFlOTQyMTBlNCBsZWdhY3ktdHJ1bmsKKzcwOTExIDFlMDUzNDMxOWEzZWU3ZTY3NTE0ZjRkYjhkNzUzODUwYzAxYzc3OGEgcmVsZWFzZTI2LW1haW50Cis3MDkxMiA5Yjk2YmQwOTA5MDhhNjc5MzhiMTc1N2FiMmVmNTlhZWFiZTM0ZWZiIGxlZ2FjeS10cnVuaworNzA5MTMgMTExMzUyMTEyYWZhOGVmMmI4YjgyMmNhNzYzYzFjNjAwODhjNmZjYiBweTNrCis3MDkxNCBmN2IxMWJmMDFhMTI2NGQyMjIzNjcyMTg5YmJkYTUxYjY5MzAyZmUxIHB5M2sKKzcwOTE1IDY5NjQ2ZjljZDcwYjUxMTg1Zjc1MmY3M2NhNWNiYWQ4NGZlZTYyOTggbGVnYWN5LXRydW5rCis3MDkxNiBmYTNiMmVkMjBkODU3MjhmMjNjZDA3MWNjMWMyYmY4OWY3ZmVkYzZlIHJlbGVhc2UzMC1tYWludAorNzA5MTcgOTE0YTVkZWQxYmUzYzlmNmY2MGVmYjY4N2VmYjBjYzA1ZWZlYmQyNyBweTNrCis3MDkxOCBmZmExM2FmZjI5ZGIxZGMwMDc2M2Q4YzYwMjc4OWE0ZDI5MjVmOWRhIGxlZ2FjeS10cnVuaworNzA5MTkgODg0M2E4NDI3YThjODJhZjExODY5Yjc1ZWE1ZjdjZjgxNjAwMzc0OSByZWxlYXNlMzAtbWFpbnQKKzcwOTIwIDgyYWRlZGZkMjMyNGY0YjM5MGQ5NTNiMmU5NzQ0ZjlhOGY0ZWZkZDUgbGVnYWN5LXRydW5rCis3MDkyMSBmNzU4ZGQyYTg5Njg5YmMyMDA2NGFjYmE2NzdjM2EwNjBhM2QwMWUzIHB5M2sKKzcwOTIyIDk4MWE5YjNkOTdmM2FmZTJkNzJhZjY4OWE5MGE2M2VlNmM1YzdlMjkgbGVnYWN5LXRydW5rCis3MDkyMyBkM2Y1YTlmMDQxZDg0MGNmZjE0ODE0ZDVlNTIxZTNjOTU5ZDVjMWQ3IHJlbGVhc2UyNi1tYWludAorNzA5MjQgMzBkODc0YjFjNGE3MjM0M2VmNjQ3OGViYTExNmZjMTRkMDkyNDhkMyBweTNrCis3MDkyNSAwMDJmYTkyMDVhYWUxYWJkODQzNWQxM2YyYTQ3M2ZiN2E4MjgyMTE5IHB5M2sKKzcwOTI2IDdhNzdlNGJlYWU2NjVkODA3MzNiYmE3MjNkZGU1NWI4NWE3YWJhNDIgcmVsZWFzZTMwLW1haW50Cis3MDkyNyA3NjU1MTQyZjUyMjQxNGFiOTI5ZTkxZDM5YzI1MDZkZmQ4MTVkNzRjIGxlZ2FjeS10cnVuaworNzA5MjggYjQwMjZhYzc4MTE0NjUzNTc1MmFhOGY3OTczYzQwYjE0N2Q5YTI2YSBweTNrCis3MDkyOSBmODQzNDA4ODY5MzZjYjJlODVjY2Y5ZjRmZTZiMmQ1YTg4MGVlZTcwIHB5M2sKKzcwOTMwIDU3MDQ0YTM2NTJkOGI0MmUwODJlYTlhMGJmNTE0MzBlYTI1OWMyYWUgbGVnYWN5LXRydW5rCis3MDkzMSAxODRjYTYyOTMyMThmOTZmNDJhNjcyOTE0OTY3MDMxNGJhMDE4YTkyIGxlZ2FjeS10cnVuaworNzA5MzIgMDRkNDE4OGZiNDExNjA1ZTk1YmE0MGVmZWExMWNjZDg0NTRkZDYzNSBweTNrCis3MDkzMyAxYWMxMTkzYTYxZDJmNWY3ZDI4NGFlOWMwMDk5ODFjNDgzZDc1MDZlIGxlZ2FjeS10cnVuaworNzA5MzQgZTU1NWZkOGM0YjZlZTc5ZWYwMzQyYTE2NjU1NTdjZTA0MzdiZDRjYiBsZWdhY3ktdHJ1bmsKKzcwOTM1IGQ4NTA5MGE0ODBiYTRhYjBiYTRhZmE0NWNjNWRmYmJjM2UwYzdiZGUgcHkzaworNzA5MzYgNTEzZDk2YmYwZDcwMzUyNmQyMWM1MjYxYjRmMjQyMDA1NWFjMjYyMyBsZWdhY3ktdHJ1bmsKKzcwOTM3IDFiYTY1YTkxZTU2YmU5Y2JmYjE2NGY0NmM3MzkzMWZhN2NkOGQzMWIgcHkzaworNzA5MzggNzlhNDIwNjE3NjQxM2NkYWY4ZGMxYTMxZjI1NWZmN2NmZmM5YmRjMyBweTNrCis3MDkzOSBjYzJjNzEzM2RhNGY1ZjQ3NjJiODJiNTY1YWIzOGJkN2MyODZmZDQ0IGxlZ2FjeS10cnVuaworNzA5NDAgNzYyMzU1ODBhYTNkNDdjMDQ0YjdjOWMyM2ZlN2Y0NzU4Mzg3NDhlMSBsZWdhY3ktdHJ1bmsKKzcwOTQxIGZmYTgxYmQyZWM3MmQ2N2RjNjMxMzk1NTdkNWNjNTkwNTczY2M4MDYgcHkzaworNzA5NDIgYWNmYzE4Y2RjZGZiNzcyYmU0NmZkN2M3NjdhZWM3MmI4OTQyYTRmZSBweTNrCis3MDk0MyAwODJiMjUwZDVlZTUwZmRiOTE0ZTk5MTk0ZDcxN2QzMWIwZTk5NTFlIHB5M2sKKzcwOTQ0IGZhN2MzNzY1ZDEwZmY0YzNlZmNhOTFhYjIxZjdiOGQwYTBmZTk0NWEgbGVnYWN5LXRydW5rCis3MDk0NSAwNTMwYWFkZmY2OTZkMWI2NmM2NjdjYmQxOWIxMGQyY2MyNTkwZWM1IHB5M2sKKzcwOTQ4IDczNDdkOTE2ZjEzYWU0Y2UxOTIzNDY0MWNmMWNjNGQ1MzNkNTE0MmIgcHkzaworNzA5NTAgZGE3NDQ4ZWJjZThiMTE4NjU3NzgyOGIyMTQ1OWZhY2Y0NGU1OWEyNSByZWxlYXNlMjYtbWFpbnQKKzcwOTUxIGRjNTNmMzcwY2E5ZDc0NzUzYTk1MDA1NTdlOGRjM2JlMDJmNWViYzUgbGVnYWN5LXRydW5rCis3MDk1MiAxOTE5MGUwNThkNTk0MzA1ZjA5MTQ0MGRjZjQ3YjEzZTU5YzFmZGU2IHB5M2sKKzcwOTUzIDk3ZmQwZDc2YWU5Y2U3YjFmNTRlYmM4ZWM0ODZmNzc2N2U4YzI1MTMgbGVnYWN5LXRydW5rCis3MDk1NCAwMjdhM2FkYzBkOGY1NjIwMDBmMjQ2YTA3NGJjYzE4ZDZjMTM4YjNlIGxlZ2FjeS10cnVuaworNzA5NTUgYWJmNmRhZDdkNjRmZTI4Mzg1MjdhMGY0NjI4Zjg3NGZlOWU4MjdhZCBweTNrCis3MDk1NiA3NmQ2MWMxMjYyM2NmOTFlNzg1NWQ2YzA3YWNjZTFjZDFjMjc4MzA3IGxlZ2FjeS10cnVuaworNzA5NTcgNDZmMWNlNzYxOTllYjQ1MTk5ZmRlMTM0ODkxMjY1MDI1Y2FjYjc2MiBweTNrCis3MDk1OCBkZjVjYjM4MzZiMjgyYWViMmUyYWUzNjExMWRiZjhlNGNkZTlkYjczIGxlZ2FjeS10cnVuaworNzA5NTkgY2UwZTI4ZGNjYmMyMjhhYmI5ZThhMTc0NjI2MDZmM2E3N2JlNjIxNyBweTNrCis3MDk2MCA4YjUxZDk2MzYwYjAzYzVjNjUyMWI1MGJlMGRjOWNhNDk0YTdkNWE4IGxlZ2FjeS10cnVuaworNzA5NjEgYzNmMDdiNjc3YWZhNjc0OTM2ZDFlYTM0OGE2OTExMWIxYzA2ZGQxOCByZWxlYXNlMjYtbWFpbnQKKzcwOTYyIGU5ZmM1MjJhYWU5YTczOWM1MzczMWMyMmJiOWJkZGQzZTAzYmIzZmIgbGVnYWN5LXRydW5rCis3MDk2MyAzNDU2NjcxYTcyYmMxNjZiNTExODIzM2U3MDA2NDE2ZThhMGE5M2MwIGxlZ2FjeS10cnVuaworNzA5NjQgMThiZDNjZjUyODdmZjAwODlkZGM3NmE5OGNkNDI4NTdhMmUwNTQ4MSBsZWdhY3ktdHJ1bmsKKzcwOTY1IGI1ZDIzZmE5YjhhNDg0N2YyMzliN2FiNDljZTE2MzQ5ZTc0MTA3ZmEgbGVnYWN5LXRydW5rCis3MDk2NiAyODdkZjNhMDlmMzUzMGUzNTViN2M2ZTcyZDU0NTEzYWQ3ZDdkZTMxIHB5M2sKKzcwOTY4IGU4ZWYxM2M5ODU5NzA5YzVkNWI2MzI3M2JlODI2OWMzYTBkN2MzYTEgbGVnYWN5LXRydW5rCis3MDk2OSAyZTRkYmIzOTU0MTdjYjZkNDAzZDQ1ZWI3ZWU0ODA0MmZhN2IxYjczIGxlZ2FjeS10cnVuaworNzA5NzAgYzMzN2YyMDI4ZDhjNzdlMDc2ZWU3MGY1MjU5YTQxYTAzZWNjNDQ1YSByZWxlYXNlMjYtbWFpbnQKKzcwOTcxIDE2YzE0NDI2MjM3NDYyMjJiMDMwZmE4YmEwNmFkY2Q2YTNiNmUxZDQgcmVsZWFzZTI2LW1haW50Cis3MDk3MyBjZTNiNWNhZjQ1MjJjOGExOTgwMmFmMWUxZGY1MTZiZTc4ZDY4OWIwIHJlbGVhc2UzMC1tYWludAorNzA5NzQgOGRmZjQwNjQwM2JlMmZmN2U0MGJjNjJjZTdjYjJlNTU2ZDc0NWYxMiBweTNrCis3MDk3NSBiODE0YjBjMzUzNDcxY2ZiNGI3NDcyMDgzMmE0NWZlNTZhZjMwYjljIGxlZ2FjeS10cnVuaworNzA5NzYgMmQ5NWMwMTQxMjE0Zjg0ZTQ4NWIwMmM4ZWNmYzRlZjlhNmY3OTBiMCBweTNrCis3MDk3OCBjZWY4YjgyNTlhYzk4ZWI5NzlmZjBjYmEyMTYxNTY0Y2Q0OTEwMTY2IHB5M2sKKzcwOTc5IDdlMmJiYjRkYmY4NzU5ZTE1NDFkNzVjM2I0MDM4OGE4MjUxMzgzNjMgbGVnYWN5LXRydW5rCis3MDk4MCBhNzMzNzNjY2NjYzIxZTBkZjI1M2FlZWRjMzU0MTNkMjg3MzU5ZDFiIGxlZ2FjeS10cnVuaworNzA5ODEgNDJkYTcxNTRiMjcwYmJkOTc5MjliMzFkYWE5NzQzNzRkZDNiN2UwZCBsZWdhY3ktdHJ1bmsKKzcwOTgyIDY3NTQxNWM1YjkxMjU3OTM4ZGFlMGVlMmNhYzY5Yzc4YjNhNGEyMGYgcHkzaworNzA5ODMgNmI2YWM2YWM1NTY2YTg0NTc0YzU4Mjc2MzUwZDkyYzVhZGYxYjQ3NiBweTNrCis3MDk4NCBkN2Y0NzhjNjgxYjllMzA1ZThmZmEzMjhkZjY4YTg0ZDZhYzBjMDk0IHB5M2sKKzcwOTg1IGY4YWE4ZDNkNjYwNzhlOWJhMDAwYjkzYTNhZWJiYTg5NzU5MzdmM2YgcmVsZWFzZTI2LW1haW50Cis3MDk4NiBlOWU4N2QxYTM4OWM1M2QwYmI3NTE4YWM5NzQyMzdjOGEwOWRmMGRlIGxlZ2FjeS10cnVuaworNzA5ODcgZjE1ZTdhOTMxMzM0ZDUwMGU1N2NkNTM0ODJkMWUwMWIxMDU3MDJmNyBweTNrCis3MDk4OCBhZmZjZjA3MDU0MzlhNWI2ZDZiYmIzMjQ5NzlmYTc3NjM4YWZiY2ExIHB5M2sKKzcwOTg5IGY5NDI4OTNmYTRkOGQ5MmI2NGI2ZTFmYTg3NjcxNTZjNDRiM2QzOWUgcmVsZWFzZTI2LW1haW50Cis3MDk5MCBkYTJjNmRkMjZlODhkYWQwMjI0NWNhYjYyMTcwOTRkOTc1ZWU0ZDRiIHJlbGVhc2UzMC1tYWludAorNzA5OTIgOWU1NzliYWI3NmYxYzU3MmE1MjA2MWFhZTcwZTIwNDZhNzUyY2RhMiBsZWdhY3ktdHJ1bmsKKzcwOTkzIDUxMDJiYmY0YWI3NDk1YzU5MThiMjczZjFjZmEwMWRhNGI2NmViZjAgbGVnYWN5LXRydW5rCis3MDk5NCA5ODU2YjViZTI2YzRjYWJkOTFjM2ExN2VmZTNlYmMyODBjMGE2NzU0IGxlZ2FjeS10cnVuaworNzA5OTUgM2IzNGM5Mzc0OTU1MmIwMzIzMzEwZjVlMWRhM2E3NzVmNGU5YWUyYSBsZWdhY3ktdHJ1bmsKKzcwOTk2IDllZDlkMjA0MTMwNjY1NDQxYzhmZWUzYTdmNGUwYWFhMGE0MDI1OTUgcHkzaworNzA5OTcgODNmOWUzZDEwZWRjNDg4ZmM3OGUxMWVkNjEyMjM1ZWY4MWU5ZTc3YyBsZWdhY3ktdHJ1bmsKKzcwOTk4IGUzYTE5NjlmZGJlNWUwYWZlOTkwYmE4NDE0MGFjNGY2NGEzNzAzODYgbGVnYWN5LXRydW5rCis3MTAwMCAxZTFkYWRiYmRkMDFiOTc5MzkyNDYzN2M0ZDJiYjM4ZmE5NjllNTNhIHB5M2sKKzcxMDAxIGNmNzNmYjVjYzNhYzlkODNiZWNkYTRjZmUzOWIyZDM3ZWIyZTczMmQgbGVnYWN5LXRydW5rCis3MTAwMiBiNDNmMTRjMTAzYmJjM2FhZDE4MzMzMzVkMWFhYTI3NDc2YzRhMWUzIHB5M2sKKzcxMDA0IDJkZmMzMzcxNzQ5MzhmODU1YjViMzA4NTQ1YzM3NjFmM2FjYTc3MWIgbGVnYWN5LXRydW5rCis3MTAwNSA3NTViYjFmOWIwZTU4NmZmZjE0NzU4MTBmMTNhZjc1NGZkNDk4Nzk0IHB5M2sKKzcxMDA2IDFiOGQ2OGRhZTU3MjEyNTUzMzM5ZDVmOTc4ZTNkNGQzOGJkOTJjNDEgbGVnYWN5LXRydW5rCis3MTAwNyBlYjYyMjE3YmJiNTM3MzdiZTc0YzcwYWI3MzEzYjIzYzE4ZDBhN2Q3IHB5M2sKKzcxMDA4IDg1MDNhM2QwMjU0ZDhmNjQ3MGJlYTM3MjA0MGJmZmM4OWRlOThkZWUgbGVnYWN5LXRydW5rCis3MTAwOSBkMzQzZTgwMmIyNzYwYWE3MDBjZjJmZjdmMTdjYWMzNmNlNTQwNDc3IGxlZ2FjeS10cnVuaworNzEwMTAgMDgwZmRmYzQzZjk0MTg2ODY0N2QzOTI3MGQwMTA5NjUwZDRiYmE0OCBsZWdhY3ktdHJ1bmsKKzcxMDExIDM2ZjI1YmZiM2ExYmNjZGQ0NDNkNzI4ZjMyYTU3NTdmYTc3YmYwZTIgbGVnYWN5LXRydW5rCis3MTAxMiBjNWE3ZWJlYzU5ODQ3YWZkNTZkNDY5YjQ2NzJmZTQ2NzU0NjM1ZDllIHB5M2sKKzcxMDEzIGE3M2Q3MzI2MzExZGQ4Yzk1MDcxNTY2YmFhMTM1NjA1ODgwODRlMDMgcHkzaworNzEwMTQgZjM5MDQ2NDYzOWZiZTg1ODAxMWIwYzY2MGIzYjYwNzU0MGQxMzk2NiBsZWdhY3ktdHJ1bmsKKzcxMDE1IDQ3NWJhNDNjY2NiMWU1MjJkM2I5NTU2OGYxNDE1OTA3MzdjOWI0ZGYgcHkzaworNzEwMTYgYzAxMzhiMmQ0ZWVkYzk5MDUwMGJiYmZlMWNmZTRkNTRkY2E4NTFlOCBweTNrCis3MTAxNyA5MjZmZDIxN2UyZGNhMTI1MzEwNGEwMTZlMDUxODliNTk2YjRlYjU5IHB5M2sKKzcxMDE4IDMzZWIxNjk3YzM4MmRlODU4M2E5YmVmZjYxMGQzY2I1NTFiOGE5ZjEgcHkzaworNzEwMTkgMzVjM2UxZDdjZmRmNjE0NzE3MzExOGM0NDBhZjViODJkYzZhOWUyYyBsZWdhY3ktdHJ1bmsKKzcxMDIwIGJjMTViNDgzZDM4NDZkYTBkOWVhMzA2Yjc0YjdiYzFkOGQ4ZTg5N2QgcHkzaworNzEwMjEgYTBlMjExYjA0YjJlMGM4NGQwMjU0NmMxZDU5NDUxY2MxZjJkYTRhYSBweTNrCis3MTAyMiAxMDg2ZDdlZThiMGIzZmVmZDcwNzhlMjVkMzVmOWJhYTIxNGM5ZDc4IGxlZ2FjeS10cnVuaworNzEwMjMgYjk4NDQ1NjE5NmFmMjY5ZDEzZjVhOTQ3ZTM4MjhiNGYwMjg3NWZmMiBsZWdhY3ktdHJ1bmsKKzcxMDI0IDdlODZmYTI1NWZjMjI1Y2Q3MjBiMTZmOGFiNjJlZDI0YjIyMDJiYzIgbGVnYWN5LXRydW5rCis3MTAyNSA5MDY5MGViODUzODBiZDNiOGMyMTMwNGY4MGJjMzYyNDkzNTVkZTI5IHJlbGVhc2UzMC1tYWludAorNzEwMjYgZjYzNGM1NDU1YjRmM2FiNTA1MWIyNjNkNTYzMjJlYzBlMzJlMjA5YSBsZWdhY3ktdHJ1bmsKKzcxMDI3IDNlMWE4MDUyNWYxOGEwMTExZWE4MTY0YzU2M2Q0NTcyYWMzNzZjZmMgcHkzaworNzEwMjggOTUzNTUzYWU4Yjg0ZmYwZWY5ODNkOGMyMGZiZDAyYWM4OTFlOGE2YyByZWxlYXNlMjYtbWFpbnQKKzcxMDI5IGMzMzk1OTM5Mjk1M2IwMWFmZTYyMTkzM2NiOTlhZjFlZTA0ZjlkMGQgbGVnYWN5LXRydW5rCis3MTAzMCAzN2ZmZWFjM2ExYTY4ZDZmZjU3Yjc2ZDAzMTVhYTgwYTc4Yzc2NTk4IHB5M2sKKzcxMDMxIDFlZjNkYTZjNDM0Y2ZiMjI5N2IyZDJhYTI3MzBhNTk2OGRmZTc5MzggbGVnYWN5LXRydW5rCis3MTAzMiAxYjUwZjc4Y2RkY2JiODcxYTQzMjgyOTkzYjQzZTZiMzJiZmE0OWRhIGxlZ2FjeS10cnVuaworNzEwMzMgZmQ1ZWUzZDBmNTUyOGY2NTZkNjg2YTY5NjUxNDhhZjg5YmU5NzIyYSBsZWdhY3ktdHJ1bmsKKzcxMDM0IDU0ZTA5M2JkODg3ZWE3NGQzMDNhNWI3MTI2NTZjZWI2ZWU4N2U2ZDQgcHkzaworNzEwMzYgMjNhMmUxNTg0YzAyYWYyZWY0ZjkyMzNlOTdiNDUzOTdhMTUyMDA4ZiBsZWdhY3ktdHJ1bmsKKzcxMDM3IDhkODRmMjIwZmYyNzcwOGUwNzU3Yzk1ZDllOTUyNDA0MDc3NzQ4MzQgbGVnYWN5LXRydW5rCis3MTAzOCA1ZjE3OWY2ZjA3ZTBmZjgzNDg1NDgwODdhYWExYjBmZTU1MDVmZjc1IHB5M2sKKzcxMDM5IGZjYmUxYWQyNGQ0MTBlZDdkODMxZGU0OGRkOWJmMjBkZWM1ZjhmMjcgcmVsZWFzZTI2LW1haW50Cis3MTA0MCAwYmM2MmQ3ZGJmNTQ5MmY0MjA0ZDY2MmU2MGMwZDBjNjZhNGQ2MjQ2IHJlbGVhc2UzMC1tYWludAorNzEwNDEgNzFmNjEyOWRkYWQ0NjZmOTYzZGE4YzBkNDI5ZTMwODYwYWUyNmE0MiBsZWdhY3ktdHJ1bmsKKzcxMDQyIDUzOTE2YWFjY2YyY2MyM2M4NjU3NDkyMDFiMmIwOTEzNjVhODVjYmUgcHkzaworNzEwNDMgMWFiZjllMzBjMTlmOWYyMmVlMjhmZTIxZWI1MzVjNTNhNGMyM2M0ZSBsZWdhY3ktdHJ1bmsKKzcxMDQ1IGFjZGQxMWUzOWYwYjAyMjU3NDFhZTAyZmQyNDFhNGQ5YjlkNmYwNDkgcHkzaworNzEwNDYgYzU4OTQ4M2E3MmFjYTU1NGNkYWU5Y2YyNTQ5OWNjMjAyYjRlNTBjZCBsZWdhY3ktdHJ1bmsKKzcxMDQ3IDM1ODBkM2MwNzJhZTUwMzJiMTNhZGEzODRlNjlhOWRiYWZmMzUyMzAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTA0OCBhMzNiYzgxODNlNGMxNzY4MjY5YjU0YTI1ZTVlNjYzOTE0OTZjZjI5IHJlbGVhc2UyNi1tYWludAorNzEwNDkgMmUyMjM4Njg4MzJhODFmZmY5ZjczYjBkMzFlNDNlMWU4MGUyNmU3ZiByZWxlYXNlMjYtbWFpbnQKKzcxMDUzIDc1OWY0M2M5Nzg4NzhhZjkxNTA3NTZiODZlMjRkM2FhYjNmODhiODggcHkzaworNzEwNTQgOTQ4OWE5ZTdhZmQ0MzgzMjY0NGI2NTExNDA1NjhhYjAzNjM2MDYzYiBweTNrCis3MTA1NiBjODAxYTY3Y2UyOTJlNmNiYjg0Yjg2ODhhOGFjZTZhOWRkZDJjMzNkIGxlZ2FjeS10cnVuaworNzEwNTcgZjgxNDI0OTcyYWQxMTg3N2NkMTJjNzQ3MTUwZDUzNzgyZGRlODNjYSBweTNrCis3MTA1OCA1NGIyY2QyMWFiNDZjZTRlZGIxYjY3OWE1MmZiYWYyYjMzNGZiYjQzIGxlZ2FjeS10cnVuaworNzEwNTkgN2ZhMGY4MWQ2MDdlNzFhZTZmZjJiOTkwZjgwMmU2ZDdhMzVjZmYwZiBsZWdhY3ktdHJ1bmsKKzcxMDYwIGNkZDU0NzE0NzU2NjdmYzA5ODVjZTM1MjljMTBjNThhNzRjYTBhNjMgcmVsZWFzZTI2LW1haW50Cis3MTA2MSBkMWM1MzY3ZDU3ZDY1NTYxOGMwMTAxZTJjZGVkNTBlOWIzMmM1N2I0IHB5M2sKKzcxMDYyIGUwMmM1YjRlNGU5MmVkYzkwYTAzNjFmOTI4NDBiNDFiZTI2NjMxYTYgcmVsZWFzZTMwLW1haW50Cis3MTA2MyA5OGMzNDQ5ZGEzNjkzYmQyZmJlMjJjYmFkZWNhZWE5YTRhNzI5NmE3IHB5M2sKKzcxMDY0IDFiNDgzOTExYjJlNjY4ZTA0MGMzMzQxNGNmOWMxM2U4NGEzMmE5YTMgcHkzaworNzEwNjUgYmVkNTI0ZWMwODUwY2ViNmQ0NzdmYzgxYjI3ZjcxMjM3YmYxOGRjOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMDY2IDY2NDY0ZGIzODJiMTRkNWJjMDQ2ZDEwZjhlMzQ3ZDQ0ZTdmNzJmYTEgcHkzaworNzEwNjcgOWI1MzVjZTk5ZDJkYWE3YmQyMWEzYTliNTMwMTJkYjRkMzExN2M4ZCBweTNrCis3MTA2OCBkMjhlYTJlZTcwNzBkMzYwNTA1MDU4MDEzMThjOTk5ZDhlYzE5MTJiIHJlbGVhc2UzMC1tYWludAorNzEwNjkgNjcyZmQ3YTQxZDM1ZjJiZDhhOGYxYTE4MmJiZWM4ZTA2YjQzZmExMCByZWxlYXNlMzAtbWFpbnQKKzcxMDcwIDc1ZWZkNzU3NDM0Yjg1Zjg1YzVlN2YyMjVmZTBjZjFhYzM3YWJmNjMgbGVnYWN5LXRydW5rCis3MTA3MSBiM2Q1ZjY4NWQyN2FjY2E1ZWE2Njk4NDIyOTkyMTc2NzlhNDYwNjExIHB5M2sKKzcxMDcyIGNiZTE5MTMwYjJlYjYzMTEzNjY2ZTg3YjY1NDY1NTllMTQzODFkZTUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTA3MyAyMGU3YWE0MmQ2ZmU0ZDk4MTczYzE5NzM1YzIyNTQ5OWFkNmNkNWIyIGxlZ2FjeS10cnVuaworNzEwNzQgZjEzZWU4YWM2ZDU0NTI3NzUxZDI4MWIzOThhMWI1OTg1ZGM0MTdlOCBweTNrCis3MTA3NSBmM2M0ZmYyMTRiMTFlYzZmMTIzOWNmYjZkMDE1NTQwYmMwOWRmOGNjIGxlZ2FjeS10cnVuaworNzEwNzYgNWMzN2FiMDdhN2RjMzQxOTg4MjZlY2ZmMzVhNzRhZTkzODQwZGYyMyBweTNrCis3MTA3NyA5YmUyZTE2YTcxZGY1YjY1NTg0MzQ0ZmIxMWExMmM1YzE4NjhkZDI1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEwNzggMzliZTlhYzg5YmU5OGZmY2MyOWY4ZTJiZWJjMWQ0YTUxNTRkNmNlNiBsZWdhY3ktdHJ1bmsKKzcxMDc5IGY2MjAyYjNlZjhlYTk4ZTRlMGJlMmJiYWZlYmYxNDNkODM5MDRkNWQgcHkzaworNzEwODAgMTgzZDYwNzJlMWU1ZGY5M2Y4Y2ZmMzkwYjFmODQ3YjNkNjlhMDhhNiByZWxlYXNlMjYtbWFpbnQKKzcxMDgxIDFiZjY3MTIxN2FiZjNjZjc5ZjdlZWJhMmMxNjJiZTRlYzU4YzgzNjUgcmVsZWFzZTMwLW1haW50Cis3MTA4MiBkY2IzNjhmYjZhZGJmYWU1YWU4YzljMzMxOGEyNmRlNWU1Y2YyOWJkIGxlZ2FjeS10cnVuaworNzEwODMgOTg2ODZmMzA3ZGU0MjZjNjA5ZmNkZTBkOTE4ZjMzMzE1MmRiMzZkMiByZWxlYXNlMjYtbWFpbnQKKzcxMDg0IGNiZmJmZjIzM2VmNWMxN2NmNmRlYTllNDhiMTRiZGNjNjlmNDU1ODAgcHkzaworNzEwODUgMmEyN2Y5YWRhOGUzM2U0Nzk0ODExZjFjNzI3NDM5NjZhMjgyNDA4OCByZWxlYXNlMjYtbWFpbnQKKzcxMDg2IGNhYzIwOWNmNWU0Y2M3MzkwMjMzOWU4NzAzMTdjNTlmOTU1ODIwOTUgcmVsZWFzZTMwLW1haW50Cis3MTA4NyBhZTQ4MmU1MmExNmJjMDg5ZTkxNWVlYzBiMGIzMTk0ZDVmYjNjNGNmIHB5M2sKKzcxMDg4IDRlNWZlOGI2ZDEwMWM4ZjM2MWQ2NGI3MDE4ZDE1ZDZkMDdmNzFkMWEgcHkzaworNzEwODkgYjQxYzI5ZGViZGY2OWE3OTA5MjZjZDI5OWMzMDc1NjNmYTUyMzNkZCBweTNrCis3MTA5MCA2OTY2MmJjM2E5ZjZiNmQzMjA4NzFiZTljOTA2ZmY2NDNlMmJmNWI4IHB5M2sKKzcxMDkxIDY0M2Y0NGFkMzg3ZmI0NjQzMGIwNjVhZmE4NjY1ZTY5NjBlZTI2MDEgcHkzaworNzEwOTIgOGEyNmY5NjIwYjIxMThkN2JiMjQyZTAwZTEwODc1NTc3OWJmYzdhYiBweTNrCis3MTA5MyA0NzU3ZGRhYTg5N2RlYzkzZjJmNWEzZDFiODk5ZGQxN2MyMDU0MTBmIHB5M2sKKzcxMDk0IDY4OTQzNDQ1NGNiOGU1MzEyODhjNTJlODgzOGFlNGQ0YmVhYmVlNjUgbGVnYWN5LXRydW5rCis3MTA5NSBhOTgwOTEwNjZlMDFiMjA2Mzg4MTQ3ZmM1ZmNlMDZlNDVjYjlhMDJlIHB5M2sKKzcxMDk2IDI4MDk2ZWQ3MzE1M2VkNjk2ODcwYmFkZWNiMGQ4MjllMGRkNzRjODYgcHkzaworNzEwOTcgYzJmOWUxMzU0MmFiMmFjMmY5NWQwZjBkYTY5YjM1MDFmZmI4N2YzMyByZWxlYXNlMzAtbWFpbnQKKzcxMTAxIDE1YzhlOWRkMTk5NjdmZDAxMTE3MTdmY2NjNjhmYTIyMzU1ZDM3MTcgbGVnYWN5LXRydW5rCis3MTEwMiA1ZjU1ODdmM2M0ZDU1YWJjMjNkMWVkYzZhMmU0ZjlkMDJlZWEwZTk5IGxlZ2FjeS10cnVuaworNzExMDMgNDQ5NTRlNmExMzUzMjNiNDQwMTcwMWY0Y2FmNGFkY2FhOTJhMTU0NiBsZWdhY3ktdHJ1bmsKKzcxMTA0IGZhYTM0NzNlNDUzNDQ4NGJjMjNmZGJlMDIxNjE5OTM5YjE3Y2E1YTcgcmVsZWFzZTI2LW1haW50Cis3MTEwNSBjM2M2YjczNzRiZGEyZWQ4ZDcxY2E5Y2YzMzJiODg0ZTc5ZGFkNWIyIHJlbGVhc2UyNi1tYWludAorNzExMDYgZDE5ZDg5MDEzOGYxZWNiMWY4NDkyY2YzNjljMDVhNWE3ZjEzODcyOSBsZWdhY3ktdHJ1bmsKKzcxMTA3IDJkZjE1MTdkODY4YzlhZjA3MGE4NTU1MjkyZTgyNDY1NTE5MGJiNjkgcHkzaworNzExMDggN2JmNjBkN2IwOWU5YTIwNjJkMjU1NjA4NzlhZGI3NWI1Yzg4Y2IzZSBweTNrCis3MTEwOSBiNGYxNTdmOGU0YTdiOThiNTAyOTVkZjUwYmZiNjk5YTI3YTBiZWU0IHB5M2sKKzcxMTEwIDFmZGI1NjU5ZWUwODk2ODJjMWRkNWZmZDM4NGNiM2QyYWFjNGM2NjIgcHkzaworNzExMTIgMDU1YjMwMjdkNTY4Yjk2Mzk0MTMyMTZjNzI2NjE4MDRkN2RiNmIyNCBweTNrCis3MTExMyA2Y2YxNmVhOGExNmRlNmI3MzQ3ZTNlYjVkN2I2NDFkZWU1ZDNmMDgwIHB5M2sKKzcxMTE0IGI0ZGVmZGQ3ZjQzMWI1MTY5YzA2NmQzNTk3NWRiMzUwY2VkMTNhZmUgcHkzaworNzExMTUgZmEyYWFjNDM0ZDA2MzY1NmM3N2U5YTUzYTE2NTcyOTYwNzcyMGFmOSBweTNrCis3MTExNiBmYjdiNzcyN2E3MzFhYzYwOWQ4MzRiZmQ0MjJmNTE1NWYyZDdiYTBhIHB5M2sKKzcxMTE3IDUxNzRjY2ZiMDFiODIxMzk1Mjk0ODdiMDZhMDY4NDkwMGRjMTljNmUgcmVsZWFzZTMwLW1haW50Cis3MTExOCA0OTI1MTk2YTJmZDhiZDUyMmMwZDA5NWI0MTFlNTdlMDM5MDY1YzRmIHB5M2sKKzcxMTE5IGYxMjFiZDk1NmFlMDUxMDlmMzVmN2JlMzNhMzhmYzI5NjY2ZjY1ZjkgbGVnYWN5LXRydW5rCis3MTEyMCA5MDQxOWUxYjQ2NTZiNThmYmQ2OWNkMjQ3Zjk1ODA1N2ZlMGNjYTA1IHJlbGVhc2UzMC1tYWludAorNzExMjEgOGI1M2I5NjliNjI4MWQ4MDE3YzQwOGQzYzYzOTYwZWFiMTZkNjA4MiByZWxlYXNlMjYtbWFpbnQKKzcxMTIyIDU0N2EyMzhhMmFjNDkyNTgxZDM5NTcwMzZmMzIzZGZmOTc5OTBjMjYgcHkzaworNzExMjMgMTQ2YThmZGRiYmEyNzc4Nzc5NDBmNWEzOTNkMTg2NzY2ZGRhYmM0OCBsZWdhY3ktdHJ1bmsKKzcxMTI0IGIzODdjYTdkMGZlNjJjZmVkYmE1NDhjMzQzOTUxOGIwZWY1NzliMjEgcmVsZWFzZTI2LW1haW50Cis3MTEyNSBhMWJlYjE2Y2YyMzY5NGQ4ZTJkMGY0YzNkMGRlZjQ4Y2Y3ZjAxMjdiIHB5M2sKKzcxMTI2IGJjMDg0YTk3MzE4YjkzMzQzNzFmM2ZjYzg4ODY5NThlNWFlOWUwNmYgbGVnYWN5LXRydW5rCis3MTEyNyA1ZjY2ZGVhZDExNzVhMDhkODRiY2RjYzc2YWM0YzEzZjdlOWQyNTYyIGxlZ2FjeS10cnVuaworNzExMjggYzRjYWNiYzliM2ZkMjQ0MjNmZTljNjY5OTczYjRjMjE4ZTc1OWM0OSBweTNrCis3MTEyOSBhODBlMmVhMzg5ZTMwYjNmMDc3MzMyYjJiYzRkMDdiY2QxZDRlMDE5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzAgNTQ0N2UxZjdkYmZmNGNiNjg2NTlkMGY4ZTI5ZjIwYTQzNGU2Nzg5MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTMxIDI0NzRmYTljMzg1NTkzMjE2MmNhZjMyZjQzZTNkZjFkYzE0MWMwZTMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzMiA3ZDg3ZTdjMDZiNTlkMDQ0MDlhY2FhMjA4N2FmOWU0MDIxZGFkZjAxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzMgNDhhMDJkNWY1ZDQyOGQyZGI5ZGJlMDg1Y2YxZGExMmYzZjQ1MTk2ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTM0IDI0ZjFhOTg5MmQ0OWNiZTk1OTE3ZTc1YzE1NDlhMTc1MzU5MmU3NTggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzNSA0MjIyNDhlNmI3M2I5MGQzZjc1ZGI2NjM4NGQyOWYyOWU3NmJlMTFiIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzYgODE3NWJjMDMxMzRlMzJiOGFiMDNkZjg0NzQ1ZjU4OWE0ZWQyYWM1MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTM3IDY2MWJkNTU4MzYzMjEwYzFkZjM4ZWQwYjAzMzFhY2FmZDkxZThkYmQgcHkzaworNzExMzggZTI1NDJhN2Q0YWNmY2Y3NmZkNmQ1YTk0NjRlOGRjYTAzOTQ1OTZiZSBweTNrCis3MTEzOSBjOWU0OGUwMDhiYjUzNmE0NmE3Zjk2NDYxNjAwZmYyNTAxMzIyNjJjIHB5M2sKKzcxMTQwIDY4MzAwZGExMmRmZTBkYzhiZGExOWIwZGRiMDU2NmFlN2NkOWQyOTAgcHkzaworNzExNDEgOTQxNTAxNzUxOTY5MTJkYTc4MTRkZmFhMDYxNTQ2ZTAxOTUzZGVjZSBweTNrCis3MTE0MiA2MDE5ZmIxZGE5ZTExMzUwYjViOGY2OGI2NWM2ZWJjODc0YTlhMTBjIHB5M2sKKzcxMTQzIGNhOGNlYmE3MzcxNDdmY2RmMzBiMDI2NTY3NWM5OWVlNDNhMTRlMWIgcHkzaworNzExNDQgZDYzOGVjZGUzNTcyNTk0NGJkZTU3OTIzOTdiYjgyMTQ4OTFmNjc3OCBweTNrCis3MTE0NSA3NGNmMjBhNjFiZWNiNjcyNjBjM2EzOWZhMGFlMzdlYTVkYzIxMGM2IHJlbGVhc2UyNi1tYWludAorNzExNDYgNzE2YWNjZDRiNjAzZTkyNjQ4MzMwYzZmOWM0MWUwMzRmZjJhZTRlZiBweTNrCis3MTE0NyA5M2U5MjQwOWNiNDY4ZTk2ZDM5ZTg4YzVhYmRiNTAxOWJmN2ExYjBiIHB5M2sKKzcxMTQ4IGQzNmFmZDA1OGQ4YmI2Y2U1MGQ0MjU3ZmM4ZWZiMTczOTc2M2FhNTYgcHkzaworNzExNDkgZjY1ZjAxMTgzMzFjMjkxODA1NTc3MTA2MzUyZTNmNTNkNzgxNzZjZiBsZWdhY3ktdHJ1bmsKKzcxMTUwIGU3NDVjZWY4ZjQwNzViYzkzNzIzNzdmYzFmMWFjOWZlYmJlMmQyNGEgbGVnYWN5LXRydW5rCis3MTE1MSA2MWI1MTFkMDVlZTk0NzIyNDdjNjIzNDc1NWY5Mjk4ZjNmNmYxNmFjIHB5M2sKKzcxMTUyIDYzNDUwMmJlOGRjY2JkZTU0YTQ1N2U4YzkyNmU2NmUzNDQxODdmMDMgbGVnYWN5LXRydW5rCis3MTE1MyBjYjU4Yzk3Mzk4NWM5YzJlZDFiOWE1MDRkYTYxZjlmNGQwOWNjNTVjIHJlbGVhc2UyNi1tYWludAorNzExNTQgNzNhN2U2YWJhN2IyMTJmMGU5MTAzNWNmMWRlYjNiNTRmMzdmZjk2ZCBweTNrCis3MTE1NSAzNzM0NmRmMmI4ODRmZGVmMzc3NzQ0ZmU4NTY0NGMwZTdhY2JlNjgzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNTYgOGM3YzVhMzU4ZGI5NWU0MWVlMWYwYmE2NmJiMTU5YjNlY2M5ZTNjZSBweTNrCis3MTE1NyAxNzc4NDE4NWFkOTM1MjUxZmVmNjNkYzYyODZkMDUyN2Y0NWE0MDY3IHB5M2sKKzcxMTU4IGU2NTY4YjNjMmFlNzViNjc0NDU1MjEwOGYyN2M0MTQ4MDA1MjgwNDkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE1OSAyZjUyYTNkMTg1YTMwZDdmZjljZjJhYWUxZWM1ZjQwYjJiNDdmZGM3IGxlZ2FjeS10cnVuaworNzExNjAgM2VmOTc1NmZmZGFjZGEyMTU0Y2Y0MGUxNTY2MDI5NmQ2MjUxNDkzYiByZWxlYXNlMjYtbWFpbnQKKzcxMTYxIGJkNzRjNGVkMDNhNDZlZTEzNmY0NWE0ZTU5YWU0YjU5MjQzZjZhMDIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE2MiAxZGYzN2YwOTc0N2M0YTljNzc3ZTEzOTk3YmVkM2QzNWI3ZTFjZWJmIHB5M2sKKzcxMTYzIDcxMzU1ZGRmMzczZWQ5ZDdjOWYzMzJhZjMzOGU4ODNmNTRlM2Y1OTAgbGVnYWN5LXRydW5rCis3MTE2NCBhOGYxN2NkODJkODlmMDIxMjQ5OTM2ZjgxNjk5MGIyMjRmZTJkNjJlIHJlbGVhc2UyNi1tYWludAorNzExNjUgYWE4OTMwNjcyYWE0ZDgyM2EyNWZmNzgzMjcxMTgzODU4ODQyMDE5NiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTY2IDFmODA3OWVjZDM3MDBjODY1YWIyMDFlNDcyMWIzZGJiMmMzZDMwNjEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE2NyA3M2IwMTZlYzViOGZhNzhhYzU4NjEzOTJiYTAzZGIyMTZhYmFiZWJjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNjggMzQ3NmFkNzU5MGI3ODBjOGM1YzE2MTQ0NDc1YzA4MTQzNmE4MDBiYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTY5IGM1MGMwNzliMDllYjY3MTY2MTkzNTIxZDk5MjBjNDkxMDhjZGNlMDUgcHkzaworNzExNzAgMjhlMzBhNWM2MzlkN2YwZGNlNjE2MGEyZjdkYWZhNWNjZTRhNjM4YiBweTNrCis3MTE3MSBhZGJkZTVjM2I1ZmU0ZGY0MGM3ZjlmZjYzZDE3ZjExMzgzYjNlZjY2IHB5M2sKKzcxMTcyIDQ1OGViZTRmNWE1ODhmNjg2MWQyNDI4ZmMyZGI5M2Q2ODBhZDhhZjQgcHkzaworNzExNzMgN2VlMWNlZmE2ZDYyYjkyOWExYzVlNGFiMzZkZjk5ZDVlYjkxM2NkMiBweTNrCis3MTE3NCA1OGE3YzUwOTQ1MjMwOTdmNjI3MDdjMmRkODc3NzBlY2RkYzBhOTA0IHB5M2sKKzcxMTc1IGEzYmJkZDkzYjM4OWE2NjUyNDBjNTJjMGY4M2M3NGZkOGYwOTM1OWQgbGVnYWN5LXRydW5rCis3MTE3NiBkN2M5NzU1YjYxNzczMzAwNDBhMjY1MTNiMGZmYjM0Yjg4MzdhYjFhIHB5M2sKKzcxMTc3IGNiNDc4MTUyNDcwNDk2ZGViY2I5NTNkZmQ3ODgxZjUzOGU3N2M4NTggcHkzaworNzExNzggMmFhZGMxYWZjOWExOTRkMGEwY2Y3MTE1ZDEwZDExYjdkM2RhYmM5NyBweTNrCis3MTE3OSA1MzQ3NzQwZDRkNWRkNGViMzE5OGZmZjI3NjI3ZDI2NmZjMzFlYWY4IGxlZ2FjeS10cnVuaworNzExODAgZDJlMTU2MjlmYzI5N2EwMDcxN2ZiZjg0YzI3M2JlMjExYjA4ZmYxYiBweTNrCis3MTE4MSA3YzJhMDRlMjE4ZjIxYjkzZDBjN2Q1NzZjZTZlMjZmZTc1YmE2NGIzIHJlbGVhc2UyNi1tYWludAorNzExODIgNDZiNmI4NDE1ZGVlNzZjZmFhYzE1MzZiMzNkYjdiOWU1YzdkYTliNiByZWxlYXNlMzAtbWFpbnQKKzcxMTgzIGIxNGU5ZWM5ZDk5ZjVlY2MxYjYxYTMyY2M3YmNjOWViNjQ0OWQ1NDggcHkzaworNzExODQgOWE5MTJhNTcxNjRmNjViYjUxM2FiZTllMjM4YTUzNDQ1NGU4ZWUwNiBweTNrCis3MTE4NSA2OGE5ZTZlMzhhZmE4ZGQ5MmFhNTFiYzRjNzBjZWNjNTcwMTBkZDdlIHB5M2sKKzcxMTg2IGMxN2VmMTRiZGY0MWNhYTNlYWQ0NmM5NjI5NmIwMDc3YTI3OWM3NWQgcHkzaworNzExODcgMzU2MzBjM2VkZDMzYzgwOTBiNTQ3N2E3OWMyODgzYjk5ZTI3M2ZhNCBweTNrCis3MTE4OCBmZjc5MzNmNDRjNDE2MmY1OTQ0YTA4ZGU3YWU3OTJjNTE5ZmVhODNhIHB5M2sKKzcxMTg5IGFhY2Y1MDk0YTFiNTgwZmVjZWNlNGE2MTRlNzQzNWMwNjFjZDM4OTcgcHkzaworNzExOTAgMWQ3OTNlZTE1YjZmNmU4ZDhkMTM5MjRlOTFhODdhZTM4NTE1ZWRlYyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTkxIDQ5YWVmNDE0MWI5M2YyODc1M2Y3Y2FhNTVlOGI0ZWY4NzI5ZDU1NzAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE5MiA1YmM4Y2YzZDkwYjM1NTMxMjgzMzU3YWIwNjJhZGFiN2ZhYjBkZTVhIHB5M2sKKzcxMTkzIGEwMTRkYzQ3YjU1MmViN2UzNzJiNzQxZmU4ZGViZWVkNTUxYTVjOWIgcHkzaworNzExOTQgZWU0MzBlNTA3NWRiMmFkZjgxMjRlNmI5NDkxNmE4OWNhNDFkMzE3MSBweTNrCis3MTE5NSA5ZWY3YmY0ZDg1OTA4NjM5OTI4YmIxNWY4ODdhNGIxMjM4YWEzOTcxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExOTYgNmRlODYzNmNkODE3MzFlOTQzNTA5MzhkZjZhNjY5YzAxNzQwM2NmOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTk3IGI0ZWY1MDJmY2NhMDI4N2VjYzc5NDVkMjI5NTRjY2RjMTIyNjYwNmYgcHkzaworNzExOTkgYmRjNTc0NzgyOTE5ZDc4YzExNTIwZDQzNzc0NDI1NjFiMDNiNTc4MyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjAwIGUwMmJkZDYwODVmZmJlYjViNmQyOTkwNmNmYTQ2Njc4NmI5MjZiY2YgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIwMSA3NjEwNDhhMGE4ZDk5Yjk2NzBkZWJkNTg2M2I0Y2ZmM2UyZDE3ZDM2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMDIgMzI3MjYzZmQyZTY2NjNhMTFjZjZiMzRlZTQ2YzFhYWJjN2Q0ZjRiNiBweTNrCis3MTIwMyAxOWIwZGIxMzU0ZjcwZTc2YjlhNTdjOTBiYzA2ZTc3MTlhZTQ3MDUwIGxlZ2FjeS10cnVuaworNzEyMDQgZDkwMDI0NjIwNTY4N2U5MWQxNDE1MzE3YmNkOWQyZDIzZDA0NjA0OCByZWxlYXNlMjYtbWFpbnQKKzcxMjA1IGZkY2ZjYTcxNWJmM2RhZDBkZThiYjQ2NDQ2Mzk5MDk0NTlmNzI4ZmIgcHkzaworNzEyMDYgZTZlNWEwZTQzNTQzNDZiNTNkOTdiN2ZhODgzODU3NDI4ZDVhZTU2ZiBsZWdhY3ktdHJ1bmsKKzcxMjA3IDBmZTM4YmJkOTczY2RmMWIzY2E1YjNkMGQzNWI3MzM2MzI5ZjkwNDQgcHkzaworNzEyMDggZGU1ZjE4NjM5YTZjZTFmYzM5ZjM2NmIwZmI3NTY1NTY3YmFiNDcwNyBsZWdhY3ktdHJ1bmsKKzcxMjA5IDc4ZjMxMGI5NjFjMDJmY2JjNzIzYjBkYjA2NjM4ZjFkNTJhMmY1OWUgcHkzaworNzEyMTAgOTM4NGI0M2Q0MjZmZWU1ZmE0ZDU1ZGU1NmU1MjVkMzhmZDhhOTQ3MCBsZWdhY3ktdHJ1bmsKKzcxMjExIGFkZGQ3NTNiYTRkOTZiNzM2NmJkMzhiYTU5NzVkZmJiOTM3ZmRiZmEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIxMiAxOGYxYzU2Y2E2ZmRiZjBkMzBlOGE0YjQ4YWMzNDRkOWNjMjAzYTUxIGxlZ2FjeS10cnVuaworNzEyMTMgMGY3NzA4YjAxMjhjMDdhZWE0NDU1Nzc5NDNkMjNjMzdhMzUyNWRmZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjE0IDFlZjAyZWY0OGM0MjRiZmM4OWYzNTRjYzhmODk1OTIyOTJmZTAwYTUgbGVnYWN5LXRydW5rCis3MTIxNSA1ZThkZTZjM2UwMDI3NTI2MjMyNjY1ZDNiNGIxMGQxZTJkNDExNWQ0IGxlZ2FjeS10cnVuaworNzEyMTYgZTQyMWE5MmIyNTIwNzhkYTdmYTYwYWY1MGQ2OTgzY2ZhYWRlOTE4MyBsZWdhY3ktdHJ1bmsKKzcxMjE3IDAwMDZiMmFkYzdlNDA3ODM5Yjg2NmRjZDgyY2FmZjg2MTM0ODdlOTUgbGVnYWN5LXRydW5rCis3MTIxOCA1ODdhMmFlZDM5ZjJlZDNkYTQxMDQ2YmRmMzM4NjViN2RiNzM2ZTkyIHJlbGVhc2UyNi1tYWludAorNzEyMTkgZWI4NDUzMDU3N2E1M2EyOTljZWU2YTc0YTUwOWM2MzI2ZWNmZmFjZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjIwIGY1Y2IzYjMzYjc5NDFhNzA0YTI5ZjFmYzYyNTUzMTdmMWYxNTIzMjIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIyMSBmNTUwZTI0NjMwNjI5OTNhZTljYmFiZDVlOGY1NmM1NmNjMjgzZDJiIGxlZ2FjeS10cnVuaworNzEyMjIgMmJiYjYwYzAwZWI3MjU3ODIyNDBjMzgwZGQyZjY5N2MxNWIzMzIxYSBsZWdhY3ktdHJ1bmsKKzcxMjIzIDAxZjRlODgwM2VjZGUwMDYxNDBmNDc2ODA3Njc0NmQyZGE4MWEwNDMgcHkzaworNzEyMjQgOThmNDIzOTI4MzViNjlhZWQ1ZmJmODAzZjdiOWYzNTMyODMyMjkwMiBweTNrCis3MTIyNSBhN2M3NGUwOWRlM2RmMGFlMDAxNmM1ZDJmY2I3YzI2MTZlMDcwZDA3IGxlZ2FjeS10cnVuaworNzEyMjYgMTUyZTA4ZGZjMWFmNWU1N2E0ZTMyMmM0OGE0OTQ4YzRlNzA1MTk4OSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjI3IDU4ZDE3MTc4MGZkODk1NDUzOWNiNTYxZjQyMGNiMTkxYTc4NWNlOWEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIyOCA1Y2JkYjUxNTdmYTc2YzUwMDdiNGY2ZTczNWFjN2NmNmE0MDZlMDZjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMjkgYmZmYTc3Njk2OTI2ZGNmNTkxYzFmZTM3MmUwMDlmYmYyODkxZGJiMiBsZWdhY3ktdHJ1bmsKKzcxMjMwIGViMzJhMTUzN2RkN2Y4YjllZmQzN2Q2M2RlY2UzNDJmZjk0MTI5MjYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIzMSBmMWNlYzM3Njk4ZmU4ZDA0MTk0NTVhYjFkNDEwMGMxMDA0MTg4NTI5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMzIgNjYzNTRiZGRkY2Y3NmRkNGYzMTg4YjI0ZTEwNDA0ZjhlNzJiNjUwNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjMzIDFjYmVhYmY4ODhhMTQ2NDJjMWMxMGQ2ODI4YTMxYzc5OTgzNzY1ZDYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIzNCBlYjk0NTE3ZGZiZDZkN2FmYjBlYmI5ODJiZmMxMzQ0OGFkMTdkMDhjIGxlZ2FjeS10cnVuaworNzEyMzUgODVjNWNlNmQ3ZjljN2NiMDliNjIxNGY0MDQ4ZDk2NzM2YWZmMTI3NCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjM2IGVkNzgzM2Q0ODJjODFmMmU3N2ZmOGM0ZTlkNWQ5MmViYjAyNDJkOTkgcmVsZWFzZTMwLW1haW50Cis3MTIzNyA5NzZiMzA1YWFkZDI5ZTBlMmZmOTAyZjllMzdlZDU0ODA0NTE3YzRhIGxlZ2FjeS10cnVuaworNzEyMzggNmVhZjk3NzIxZDNkOGFkMWYxMTBjZjljNWMxZWQxMTgwMmI4N2Y1YiBsZWdhY3ktdHJ1bmsKKzcxMjM5IDM3ZDZhZjZmODVhYWM0ZGQ4ZDQ0N2Q5ZWUxZTE0MmU4N2EwZWQ5M2YgcHkzaworNzEyNDAgOGM2MWU3Y2FhMDZjZjc4MGE0NTg3NTI2NzgyOTllZDM3ZmRhNTNiYSBsZWdhY3ktdHJ1bmsKKzcxMjQxIGRhMWU1NDgzYWNhMDEzNmE1YjVkOGRkZWI5MDkxN2FlNGY4Zjk0MWUgbGVnYWN5LXRydW5rCis3MTI0MiAzYmJjNjg0NDlmOTRlN2ViYzJhMTFiYzA4ZjQ2YTM0MDEyNzAxYThjIHB5M2sKKzcxMjQzIDEzZWYxMTkwZWRhOWQ2NGUxNWJkZTgxYjI5N2YzNzUxMjc5Y2I3ZDcgbGVnYWN5LXRydW5rCis3MTI0NCAyNGVkNWQ4NTE3MjBjZWUwZTAyYWQ1YTJhZDc2N2EzMTRlY2E3YmExIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNDUgOGNlOWVkYzg4OTY5YjhkOGUxZmQzMTgzNjc3NTU0NzM1MWI5YjdkMiByZWxlYXNlMzAtbWFpbnQKKzcxMjQ2IGI5MDg3YjY0NWNlZmJjNDNiYzM5YzdjMjBhMDM3ODY2YWNmYjVhYTAgcmVsZWFzZTMwLW1haW50Cis3MTI0NyA3NjEyYWE4OWJmMDYwZWNkMmNiNWM3Y2M2NGFhN2QyN2M4YmY2NmEwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNDggYTdlNWI5ZDkwYjEyNWZjZTZlZDdkMGMwYjNiM2RjZWQ0YzdlMDhjMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjQ5IDhkMjI4NzNlOWIyNmQxZDU5Y2YwZDM3NTgxZmI1YjE1YjY4MjBlZTEgbGVnYWN5LXRydW5rCis3MTI1MCA0M2M4ODlmZWRhNDBiMTE3NjIzOTk3NzExZDYzYTFmMmZlY2E4YmM0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNTEgYmQxMzM2YTNhNjg2M2FlMjc1MWNhMjY0NzdjYTNhZGY2M2RkMjgyOCBsZWdhY3ktdHJ1bmsKKzcxMjUzIGIyYzY4ZGY5NDQ2MzlkZDQzNGFkM2IzOGMzNDRjYWI4MTE4YzkyNTYgbGVnYWN5LXRydW5rCis3MTI1NCBlNzQwODMzMDFhMzZlMDg3NTVjNDlhZWM4YWYxNmZiZTA1NWI4N2U1IHB5M2sKKzcxMjU1IGExNmEwNDU2OTc4ZjdlZjdlOThiMzJjYTc2NzJmNjk3ZTI4YzVhMWIgbGVnYWN5LXRydW5rCis3MTI1NiBjZmQ3MTM2OTQxYTA5OTkyM2Y4OTBjMmIxODVmZWYzZGE5ODgwN2Q1IHJlbGVhc2UyNi1tYWludAorNzEyNTcgZWNiMjEwM2JhMDI3OWZmNTdjZjQyYWQzNDI0N2YyNzYxODIwNWU5MyByZWxlYXNlMzAtbWFpbnQKKzcxMjU5IDdiNGVmMGI4N2RkY2ZmOTMxMzVjYzEwMzQ0MTQ3NTA5OGQ1NWUxMDAgcHkzaworNzEyNjEgNzkyYmI4ODUwMjlmYmZiMjg1ZmM5ZDM5NjU5ZjNkMmU5YmE4OTcyOSBweTNrCis3MTI2MiA0ZDk3NjExZDFjY2E0OGExNGZmYTFiNjkzODk1NjY0MzJjODM5ZjllIHB5M2sKKzcxMjYzIDY3MmIwYzA0MWJhNjM4NGFkODRiM2JjM2M2NjliZDM4OWEyZGU0ZTIgbGVnYWN5LXRydW5rCis3MTI2NCBjOWVjZDQ1YTVlYTJmMTAzYTM0ZTQ4Y2RlYTA5MThjMWU5YmFiODg3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNjUgMTRlMDBmMGY3OGI3NGNmNDEwNGY3NWM5ZmEwYzIwMWZmNzk1ZDZiMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjY2IDJkMDBmZjNkMmY1YTNjNWNjYTgzNThmZDUxYmIzYjUwMWVmZThmZGQgbGVnYWN5LXRydW5rCis3MTI2NyBhMTRkZWI5NDgwZjRkMzIwZGFkMmM2MjMzYWNmZDQ0Nzg0ZGVjNjRlIHB5M2sKKzcxMjY4IGY4YzU3NmZhYTlhZDEzZTlhYTY2MDYzYjhiOGRmOTBjZTViODUzOWMgbGVnYWN5LXRydW5rCis3MTI2OSA1NGQ1ZjI5ODZhZjQyY2RkNzhiYjcyNmFmMGZjMDc5NzgxNzY5YWRmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNzAgZmIyZWE4YmIzYTMzZGM3NmZkODU0MTQyZGY4ODE3NDA2YjQ2M2U0MiByZWxlYXNlMjYtbWFpbnQKKzcxMjcxIGIwNDI5YzdmYTcxYWFlZDVjYzkzMjY5NmUwOTNkNWE1MjQ2YzEyODEgbGVnYWN5LXRydW5rCis3MTI3MiA0YWNiYmIzZTY1ZTJiMDU4MjFkNDM2ODllZTNhZjViYTU3MzA0MzQxIHJlbGVhc2UyNi1tYWludAorNzEyNzMgMjUxYmZkMmQ5OTZhMmRmZjhjYzEzMjY0YWE4NWJmYWU1OGIxODQ2MiByZWxlYXNlMjYtbWFpbnQKKzcxMjc0IGQzODg3ZGZlNjYxZjkzNjJjM2UyY2ZjMTM0MzI0MjJlNjBlMTQ1OTcgcHkzaworNzEyNzUgMzg4OWQ5NTI4NjAxZTNiZTE4YTYyYjg0ODYzNmE2MGIyZDQ1MGM1OCByZWxlYXNlMjYtbWFpbnQKKzcxMjc2IDk2OWFkMTBhOGE3MjU3MGI4MWM1ODRhNWE0YTEzYmJjNGE5MGUyMmUgcmVsZWFzZTI2LW1haW50Cis3MTI3NyBkMDg4NDM2YWMzNmIxMGE5ZjMzY2VlOTE4ZjgxOGQxN2QwY2M0OWIxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNzggODIzN2RlNjMyZDZmNjgxNWEzNjg4MmY5NjQ1M2U0YTliZTJkODFhMCByZWxlYXNlMjYtbWFpbnQKKzcxMjc5IDhiNTMxNTAxMzRmNWRiMTRkMjIzZGUwYTIzYjlmZGYwNWE3NTY1MmYgcmVsZWFzZTI2LW1haW50Cis3MTI4MCA5YTRiMTkzMzBhYTkzMWFiZDM1ODYxZmNmZWU2MjRmZjRlMGM0NDEyIGxlZ2FjeS10cnVuaworNzEyODEgN2U3ODEzYWRhMmQxODFjNDcyNDliNzlhOTNmZGVmMzNmOGZhMGQwYiByZWxlYXNlMjYtbWFpbnQKKzcxMjgyIGYzYjI2YTcyOWU4MmY4ZmZmYjE3NGQ0OTNjNjljNmU5OWFiODkwNTggcmVsZWFzZTI2LW1haW50Cis3MTI4MyBmNjdhNGYxZjIzMGQ3NDBmZGVjYmE1M2IzNTk0ZjhmZGY5MzI0MDlmIHJlbGVhc2UyNi1tYWludAorNzEyODQgOTM0ZDljM2NiYTQxODRiNzQwMjY5MzhlNjdmNGU3ODk3YzY2MjdiYyBweTNrCis3MTI4NSBiNjkzNDlkNGI5ZTg4MzE2Yjc1ZGM4Mjg2NDc1NjRkNDlmNDZiNzA1IHJlbGVhc2UzMC1tYWludAorNzEyODYgZDZkZTY4NDRmZDcxNDFiMzZjNjQ2ZDA2MGI4OTc3NTU2NjhjZjJmNyBsZWdhY3ktdHJ1bmsKKzcxMjg3IDI0ZmE3ZGRkNGRjY2U0OGIxZGVkZjEwZDY3ZWFkMzBjNWQ5YzNmY2UgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI4OCAxZDhjYjc2ZTcxOWI3ZTA1MDg0MjkxYjJjOGQyY2MyMTVjOTFiZTQ5IHJlbGVhc2UyNi1tYWludAorNzEyODkgYjM2YjAwYWUyOWZmYmY2ZTU1M2JjNjQ0MjcwZTNhNzJmNmM4NWNlYSBweTNrCis3MTI5MCBiMzNiZGQyNDE0MDIzNTg5YzZlZmNhZGE1ZWUyMjU0MDUzYzFmNTFiIHJlbGVhc2UyNi1tYWludAorNzEyOTEgNDMzZGUzZDU5NjA3OGQxYWU1NWFkMjU5NzRmMDg3YWIwODJiNWE5MCBsZWdhY3ktdHJ1bmsKKzcxMjkyIDBjNmIxNmEyZjkxYjc1ZWYyMTcwYTM2YmQ1OWYyYTdmODYyNWU2ZGUgcmVsZWFzZTI2LW1haW50Cis3MTI5MyA1NDhjYTM0MzU3Y2RhZTVjN2YxOTU1MmIxYTZjZjJiYzdjOWFkZGQ3IHB5M2sKKzcxMjk0IGRhMGMxZjc0Y2EyMDBiYzhhMWZiYWYwMWEyZWQ0YjI2MGRiYzI5OTggcmVsZWFzZTMwLW1haW50Cis3MTI5NSA0Yjg4MWI0YTkwZTk1ZWVkN2ZkNDUyNmM5OWFmYjFmYjIxNTEwZTkzIGxlZ2FjeS10cnVuaworNzEyOTYgMzY0YmQwMDJiN2Y4Njc5ZmVjMTNiYjUxZjEyODMwMmRjMGIwYjFmNSByZWxlYXNlMjYtbWFpbnQKKzcxMjk3IDVhN2EzM2M5NGQwMDFjOGJkYzdjODg2NmZiZDJhNTM1OTY0NDY3MmYgcHkzaworNzEyOTggZWMyZTRiNWEwZTkwZGM0ZDYwZGMwMjQxZjA5MTJlZWQyMzExODQ1MyByZWxlYXNlMzAtbWFpbnQKKzcxMjk5IGQzNmE0ZjkyMDM3ODNmYTk5YWRmOGVjMzk3M2E1YjZkMGJhYTRiYjIgbGVnYWN5LXRydW5rCis3MTMwMCA0MTRhMzExODFlOWRjMzgwMWNiNzNmYTcwZTE3NzZkZGMxMDAyZjEzIGxlZ2FjeS10cnVuaworNzEzMDEgNzM2MDA1MTU5OTliY2EwZjFkZTA0OTY0MzkyNTA2ZDY1OWE1M2JhNyByZWxlYXNlMjYtbWFpbnQKKzcxMzAyIGUzNjM5NThmY2Q3MGE0M2FkMDdiMzlkZjk5OTU1MmQwZmExY2VmYzEgbGVnYWN5LXRydW5rCis3MTMwMyBjNmM0Mzk4MjkzYmQ2ODJiMzU1ZjEwNTBiYjE2YmIzZTE4YzhiNDBmIGxlZ2FjeS10cnVuaworNzEzMDQgOTg2MjAxYWNhNjhiNDM0NGJmYmEzOWRmOGNmOTQxNDc0NDhmZTNlNyByZWxlYXNlMjYtbWFpbnQKKzcxMzA1IDIwNzllZGQ1Mjg1ODc0MmNhZDkxYjE5MzE5Y2NmMjFkNmI4Nzc0OTUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMwNiBlZmM3ZTEzYTc1NDIzMjViYjNmNzMwOWZiZWJiMjRlYzU0ODdkNzU3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMDcgYjQ4ODFmOGVjNzA2ZjgxMjEzYmZiY2VjMWQ4ZmQ3MWIzYjA0NDA1YyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzA4IDg1OTI2NzdlYjM1MmNmODVjNjA1NWI5ZGJmZDkwNTdlN2ViNjdmYjAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMwOSAwNjZmYTBiYTgyOTAwZmJjMjQ5ODcyZjJhZTc0YTE5ZGRiOTdmZmQ0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTAgN2MwZmYwZGU2Mjk1NmYxNzc3ZWM3MzE2NjU2MjhkNDM2MTg0MjdmMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzExIDk5Njg3ZDUxYmUwYTE0MjcxZmE2MmE5Y2Y3MmRkNzVmMjkxMWZkYjggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxMiBlMDEyOTg2YmU0ZjRlNTJmOWFjMTY4ZGFmZWY1ZDg0NTQ5YWVkYTQxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTMgNTI2ZGIyOGYxMDBkMjEyNWJiODM1NTUzNGU1OGIyNmFiZWE3MzI1ZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzE0IDMwYjUwY2JlNWM1ZTVmYzhmOWU5ZjBlZDBhMmExMTA2Y2MxZDAyNjMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxNSBmN2Y3MDEzOWVmNTcwZGZiM2M2NDk3YjYxMzZhMWY5ZWI5NWQ5YjA0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTYgY2VlMWE4NmM2OWMxNWU2NDljMWQ3NTU5YjkzNDAyNTlmNjQyZjliYyBweTNrCis3MTMxNyAwMjYzNTQ2MDI2MWU5YWYxYTkzN2M5ZjYwY2YwZDViYWU4YmIxZWJhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTggOTg2NDUyYjUyNmExZGY2Y2UwYTgzM2Y0MDMxNWNiMDFlMGQ2YzMwMyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzE5IDA2ZmE4N2YzZWMzNjI3MWZkMDQ3NDBmMzE4OWEwMDllZmRhOWM4NWEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyMCA1NTYwYTA2OGMwNTc5NWZhMDUwMDUyMTdiZmIzODk1ZmU3MWE4ZmMzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjEgZTRlZWIwZGFmNjI1NDZjZmQzNzY3Mzc3ZWI2MmFjNzFkMGVlZjMwNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzIyIDQ1ZmQyMjcwYWUxYjhjMWQwODk0OTlhMmFkOTIxMWM1NjdmMjg4MWMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyMyBjNWUwYzZmNjU2ZTYzNjg1ZTFhOTg2MGM2YmVlMWU2YzA5MjYzOTJmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjQgMDc2YzcyMjExNTYxMTE5NjU5NjQwYTAyNjdlNjYxOWRlM2Y2ZWMwMSByZWxlYXNlMzAtbWFpbnQKKzcxMzI1IGI5ODQ5ZWZiMjc1NDVjNjgzZDQyNGRiZDg2NDZlMDQyZmViOGNiODcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyNiA4ZDY5NzYzYTIzMTdiNTQwNjE4ZmNmYjBhYTBjYjdjYjVmZGVmNDY4IHB5M2sKKzcxMzI3IGQzNDcwYmM2ZDE5MThkYTk3ODU3NmY5ZjVkOGVlMTg3ZDQ3OWU5NTIgcmVsZWFzZTMwLW1haW50Cis3MTMyOCA0YTY3ZDY5MTQ3MjU4NTE1MDczNDU4MGI5Yjg2NWU1ZDBhNzE3ZTdjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjkgZDgxOTg1MTgyYTM2ZDYwODYwYWQ0ZWU2NDMyZDRjNzYzYjQwNDgzMCBsZWdhY3ktdHJ1bmsKKzcxMzMwIDkyMGIwNzkwOTYwMDNkNGY3NGQ2ZTczMWVkOGU5ZDNlN2FlOTFmYWYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMzMSA1YjAxZmU1MTNmOTI4NjRmZjViZDY5MTdlOGYwODA2Mzg4MDI3ZjRlIHJlbGVhc2UyNi1tYWludAorNzEzMzIgNTU0OWU4ZmYyOGQyY2VjN2EzYjI3YmUxNjU1MjNhY2QzZTcxY2QwNCBweTNrCis3MTMzMyBmNjY0MDZmMjYwNDQxZjMwZjg2YWM2YTNmMmQyNGRjMmYwMGRiYWRmIHB5M2sKKzcxMzM0IGEwZWRkOTFlOWM2ZjMxMjYyYmIzZmExMjQyNGEwNTg4NjM0ZDE4NzUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMzNSBmODI0ZGM2MDEwNmYxMDhmMmM2NTliMmQwZWRkY2EwODVlZGM5MDk1IGxlZ2FjeS10cnVuaworNzEzMzYgNjA5M2ZkYzVlZTk2MmRlMGNlZTlmYmIyNjZiMmQ4NjVmOWJhYjhhOSBweTNrCis3MTMzNyA3YTM5ZjdlNDJiZDk3Y2ZmMjZiYzkxMzM1MzU5YTU0NzBhZTRlNzIwIHB5M2sKKzcxMzM5IGYzOTFkZjkzYzlhYmQ0OWY3ZDAyMGRkNTJkNDE3MzVjYjUyMjQ1ZWQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM0MSAzNzQ0ZWZhNDU2NjgxZWE4NDdkODNjM2U3NTY2NWM4N2RjOTk5YzUzIHB5M2sKKzcxMzQyIDk3NjhkYTg2Y2Y4ZTMyYWY2MTc5NWYyYjc0ODIzZDUwZjE5N2FhNTYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM0MyAyOGJhZTVjYTUyMThkMDRiMmFjNDg1MmY4YjM4NjY0YzMzMTA4M2MwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzNDUgNjkxMTRhMzU2Y2YwZGE3MmViZjQzZDQ1NWMxNTgxZDI0OWI4YjZmYyByZWxlYXNlMjYtbWFpbnQKKzcxMzQ2IDhmYmI5OTM2ZDRkYTJiMTc4MjkzOTc4MDA4NjZiN2RmOWVhY2ZiZjkgcmVsZWFzZTI2LW1haW50Cis3MTM0NyA2ZmNkMTBlYTk5OGE5MjZkNTM3YzA2NDU2MGViMGQ0NGY2ZTc5Mzk3IHB5M2sKKzcxMzQ4IGRhNzNjNDNlNjkxZWRmODc1ZDFhNzIyM2Y5MWFhZDdlODFjYjRlMjkgcHkzaworNzEzNDkgNzE2ZjU5NThiNWYwZGEwYTYxZmQyNzE4MDAzMmZmY2VlYjY5ODU4MCBweTNrCis3MTM1MCA2ZjRhMDg4ZDM1OWQ2Y2U2Zjk3OTg5Zjg0MzYwNzE5NjAxYzBlYzdjIHB5M2sKKzcxMzUxIGMzN2JiMWI3YTQ3YTg0M2UyMGQ4MGZjZTZlODY3N2EzNGFkZWUzMDggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM1MiA0OWIyNDkyMmViMmRkZjU3ZjkzMzIxZmE1NzE0NDk4MGEzMjVkYTcyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzNTMgNjc0YjIwMDAyMjRjYzg5ZTdjYmMxYWU0ZDEwZWQ1ODkyNjMyYjMyOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzU0IDMxNTgyNDg1ZmJmY2QxNTM0NzFmMGQ4OTJkOWZmYWQyYzM1NTAzNzMgcHkzaworNzEzNTUgMTUzOTE3YzAwMWJlZmFmZDI2YWQzN2VjMjUxMTlhNzA3ZTExOThiMCBweTNrCis3MTM1NiBmOTI1MzM5MjVlYTY2MjcwNWFiYTBiMDdiZDY1MzJjMDgxN2Y0MzBhIHB5M2sKKzcxMzU3IDk0ODMyNDU1ZTM3ZDU5MGNjYWQ3ODQwMTlkYmU4MWE2YzI0NDRiMzggcHkzaworNzEzNTggNzVkZWY3ZWQ5ZDVmYzYzZjkwNWFiYjJkZDgwMzlhN2FiYzRiNTc4NyByZWxlYXNlMjYtbWFpbnQKKzcxMzU5IGMzOWMxYzI5NzhmOTRmNWI0Zjg0MmM5NmFhNDUzOGUxMTQyMzU5ZWUgcmVsZWFzZTMwLW1haW50Cis3MTM2MCAyYjA4MzE0NmFjZjVjMjY2ODg0NmQ1NmY3YTRhYmZmMzJmMDM5YjE3IHJlbGVhc2UzMC1tYWludAorNzEzNjEgYjUwZjExYjhjYWQ3ZjQxZWFlY2RlMTM0OTE0NGEwNGQ0MjQ4OTQ4OSBsZWdhY3ktdHJ1bmsKKzcxMzYyIDkwZDMyMzgxYTM0MGZiZTQyNWNlMGQ3MTliZmM0ZDI5MjJlYjliZTQgcmVsZWFzZTI2LW1haW50Cis3MTM2MyAwMWYxYWU4MzYzMWFlODJiZDg1OThhMTFjMTdlM2Y5YjNmNTZjMzhhIHJlbGVhc2UyNi1tYWludAorNzEzNjQgMjc1YzBiYTc0ODU4OWU4YTY3ZjFkNmExYTJiMjc1YTM2YmEzM2UzZiByZWxlYXNlMjYtbWFpbnQKKzcxMzY1IDVlOGMzZTc0NTFmZmI3OWNlMTE4ZmMyOTdkODZlYzNkYzAxMGNmOTkgbGVnYWN5LXRydW5rCis3MTM2NiA5YWI1MjQxNzBmNjgyZjMzMmJhMGJiYTgxNTY1YTgyYTFlODAxYWQ4IHJlbGVhc2UyNi1tYWludAorNzEzNjcgZmNlM2FkNGIyM2Q2MGMzNWVmZmQ1YmFiZTlmYzJkNGE3ZmNlNzU5MCBsZWdhY3ktdHJ1bmsKKzcxMzY4IDVjZTIzY2ZiOThjN2Y1ZmJkZjYyMDcwNzZlZGU2YjFjMTNkZTY3ZDEgcHkzaworNzEzNjkgYzg0MjAxMTg5Mzg3M2VhZjBiODc3NzgyZDQ0ODUxOTFmNzQyNTE1NiByZWxlYXNlMzAtbWFpbnQKKzcxMzcwIGUyMzI1MmE4ZmY1OTI2ZmNmYzFkZWY4Nzk0OWRjZGU2ZWE0MTU4ZTQgbGVnYWN5LXRydW5rCis3MTM3MSA1YTQ5NDYyM2NmM2E4MTRiOWUyZTBiYjc2NjgzNWI0YWViM2Q4NDI1IHJlbGVhc2UyNi1tYWludAorNzEzNzIgNmM0NmQ2ZGIyZmQ2YTlmYjFiNTc4MGQzNDczMjdjZTQxZmMxN2NiYSBweTNrCis3MTM3MyBkMTZjYWRhOTYzNzAxOTA3MzgwNTFmYzU3MzJiZjkzY2FhMjFiYmVmIHJlbGVhc2UyNi1tYWludAorNzEzNzQgYmEzYTllYmNlODFlN2MyY2FhZjJhYmZlNjExYjdjOTlmMGQ0NWMzMiBweTNrCis3MTM3NSAzNzk5NzAzMDk0NzU1NjRmOWE2ZDg5MzFhZWU3ZjkwZTZiNTE1NzA1IHJlbGVhc2UzMC1tYWludAorNzEzNzYgYmM3OWJlZjU1YWE4MDZlODMxNTRkNjQ5YTIyZGY4MWQwMGIwZTk4MCBweTNrCis3MTM3NyA0MWU3MjAyZTlmOTMwNDZkZmQ1M2ZiM2NiZGE3NTdkYTZiZDY5N2RjIGxlZ2FjeS10cnVuaworNzEzNzggMjQ4YWRmY2JiNzE1NDRjNmE1NzM1MGZlNzhhNmNjMWZlYTU3ZDBjNiBweTNrCis3MTM3OSBkYjE4ZTc4YjkyZDg2YTAzMWYwYmIwY2YxOTBiODhmOTg2YWM4MTJlIHB5M2sKKzcxMzgwIDBhMWNkYTFlN2MxYzc5Njg3MzFjY2ZiZDIxODlmMDNkMWVmMjg4ZTIgbGVnYWN5LXRydW5rCis3MTM4MSBkMDQ0OTBiZWUyZWQ0OGQyYjlkYjY3OTljODQyNThkMDJjMDFlMWZhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzODIgMDkxNzA2ZTE0MDU2MDdhNzYzM2M4NzE3MGY4ODAxOWU5NGZlNGY1NyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzgzIGFlNWY1MTU2Yjg4MjY2YWRlNGFhODM4ODRkNDkwNGJkMmZjMGQ1MTYgcHkzaworNzEzODQgZjcxMDU1NTA1M2JmMmY4ZjYyZTAzNjA1Y2JlMDgyMGFhODExOWZjNiBweTNrCis3MTM4NSAxMDk5NDEwMTU3MDMzMDc0YjdlYmFiOWU1YTg0MDAyM2E3Nzc3OWQ3IGxlZ2FjeS10cnVuaworNzEzODYgMjUxZWY5OWRmYjRjNDAxYTg0ZTg5MGM5OTBjZDIwMWJmZGMzYTQ4OSBweTNrCis3MTM4NyA3NGQ5Zjc1ZDlkYzFmY2ZkMGY0NGZkZGRjNzU4NDYwNzRiNmFhMmRhIHB5M2sKKzcxMzg4IDE5ZjdkM2FiZTdjZGUyN2ZmYTE0NjJiOTg1MjI5NzdhYjI0MDg4NGQgcHkzaworNzEzODkgZGYwZWQ5ZWI3OWMzNjU0NWYxY2YxMzJiMTJjMDFkZDI1NmJjZTQ3NSBsZWdhY3ktdHJ1bmsKKzcxMzkwIGZkMTgwYmY0NzIyN2ZkNmE2ZTM0NWI0ZmFhY2JhNDVlMTJkN2MyNGUgcHkzaworNzEzOTEgYTk4YzUwOTA4NGViMzU2MmNjNjZjZmJkNjNmZTgyNWFlYTQ4NWE3YyBweTNrCis3MTM5MiA3Yjg5NjJmNjU5MThiM2U0OTU5N2MyMzc2YjRjYmYzMTYyMjhmMjc0IGxlZ2FjeS10cnVuaworNzEzOTMgNjFlMzdlZmZhZTNhZWFmMzBlODc4NDYxNTRkMThjNWI1ZmQxYzk5NiBweTNrCis3MTM5NCBmZDE2ZTU3OTA5NmUzYTM5MGZkZmZhMDFkNjA3NjE4NTM3YzMwMGIyIHB5M2sKKzcxMzk1IDBiYzA1MjRkMTdjZWJjMjIxYTkwOWM1ZjM2NzQwMDdiZmRmYmQwMmYgbGVnYWN5LXRydW5rCis3MTM5NiAwMjIyNGNiMjFkN2NiOTVlYjQ1MWMzMzI1Y2RlYjYzYzhmZGE2NGY2IGxlZ2FjeS10cnVuaworNzEzOTcgYjE0MDRhODY4ZDhmNDhlZDU3ZWJjNTk3ODJhYTVhNDFiZDVmOTc3NCBsZWdhY3ktdHJ1bmsKKzcxMzk4IDVhOGViYWJhMWEwOWVmZGZlNjQzMmRkYzhmYzcyNTE3ZDkwODFhYmMgbGVnYWN5LXRydW5rCis3MTM5OSBhZmYyYjE1Y2NjNjg0OWFkMWM2MzZkYTAxM2ZmYjg4NTUxODNlMjlkIHB5M2sKKzcxNDAwIDY3ZDlkNjE2MGMxMzRjZGQ4ZmQ4ZWQ3MmMxY2ZmYmVlODQ5ZDllMTAgcHkzaworNzE0MDEgZDM1YzY0ODZhZDk0YTY4NTk2MDM3NzZmZTZmYzM1OGM0MjExMmNlZSBweTNrCis3MTQwMiA2M2I1NzUxM2IxYmRkNDAxMjBhMzM0OWFmMzdlYmI1ZjlhMmJjNzEwIHB5M2sKKzcxNDAzIGQ5MDg4ZWZkNTU4YmQwYjM1OGRiMTdjZjU5ZWFkOTc1ZTQ3N2I3NDkgcHkzaworNzE0MDQgMTgwNTNjZjYxMTVhNTJhNzcwMDRiNTE1OGQ1MTEwOGQ4OTJmM2M2OSBweTNrCis3MTQwNSBjMjMzNjk1N2M1MzU0ZGMwYjIzODYwZmU1MWMzNWI4MjQwYjMxZDEwIGxlZ2FjeS10cnVuaworNzE0MDYgMzA4NjQyN2IwNzA5MjJkYzRhZmY5YWVhMDY4N2RjNWRjYmQ2MzdmMiBsZWdhY3ktdHJ1bmsKKzcxNDA3IDFjYzk0OTk3Y2ZhN2VkYzVmYTk5MTQ1OGY4MWE0ODEwMGIyNzlhZjEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQwOCA5YTczMTdjZTZkYjk5NGFhZTIwYWJlYThlNmNhODVhOTNlYjcyNzUxIGxlZ2FjeS10cnVuaworNzE0MDkgNTM2NzYxYzJiNmE0YTIwZDU0NzkzYWUxNTAzMjZjMGYyYTdhMmE1MyBsZWdhY3ktdHJ1bmsKKzcxNDEzIDQwZWZmM2IxODJlNGQyZmY5MWJjMzBmYmQ0MTk1Yzg4NjAyNjI1ZTAgbGVnYWN5LXRydW5rCis3MTQxNCBkZmE5MWRmZWQwYjA1NDk2YzIxNmQzODIwYzBlMmFlMzBiNDQ2ZjgxIGxlZ2FjeS10cnVuaworNzE0MTUgYTc4OGZhY2VlNmVmNGQ3ODM3ZDAyZDBiYWQ3N2Y1ZGFhZTY2OTNlMiBweTNrCis3MTQxNiA1YWQyMDQzMTJiY2MzMDZiNDgxMmRhOWY1ODdlMzc2ODFkMjJiMDg0IHB5M2sKKzcxNDE3IDJiYTMzYzM0ZGMxYTc5NjQ2YTcyNmQ2M2IxMTM4NjAyMTI1MmUxNjMgcmVsZWFzZTMwLW1haW50Cis3MTQxOCAwN2MzYWMzMGRhODcwNDQxOWJkNTZhMGZhMzA1ZTU4ZGQ3MjU2YWRlIHJlbGVhc2UyNi1tYWludAorNzE0MTkgYWRlNWMyNzE5OGRiZWYwYzk2MjkyYTcwNTdmNmZhYjk0NzU4YTdhNyBsZWdhY3ktdHJ1bmsKKzcxNDIwIGJjOTRiODMyM2IzOWIyOWJkMzc1MzY1ZWIyNWI3ODliODY0ZGE0Y2IgcHkzaworNzE0MjEgZjcwYjNiNWY1MzgwY2U1NDU4NDlkZTVhZmIwNDdlMTIyNGM0YmQzNiBweTNrCis3MTQyMiA3OWU1N2M4NjZiNWY0ZTJmYzFkZTgwYzQ1YTdmYWEwY2ZjOThmMmQ3IHJlbGVhc2UyNi1tYWludAorNzE0MjMgYjRiMjUxMWUwM2M3NTMwYTlhMzRkNTA1NTY2NTBkZmU3MjNmZTQxZSByZWxlYXNlMzAtbWFpbnQKKzcxNDI0IGQzNjEwZTMzOTJjZjQ5YTM1YjI0MTdlN2Y3OGJmMGY1MGZjMmVhYjYgbGVnYWN5LXRydW5rCis3MTQyNSAwOTUwM2NlNjZmZjEyM2FjZjAyZTczMjkzNDc3MGY3YmY1ZGI0Zjk0IGxlZ2FjeS10cnVuaworNzE0MjggOGE0NTYzZDNiNWU4ODk1Yjk4Y2IxZDc4NGRjZWIyZjVlZWE0NTA1ZSBsZWdhY3ktdHJ1bmsKKzcxNDI5IGEyMWM4NDhhZDYxZWM0NDg2OTQ4NzY1ZmU4Nzc2ZTA5ZWE2YWVmYzYgbGVnYWN5LXRydW5rCis3MTQzMCA0MGViOTllODkzNWM2NGRlNGY3ZDU5MDc5ZjU3Yzg0MDUxMGE2NmFkIGxlZ2FjeS10cnVuaworNzE0MzEgYTZmZjE3YTQyYWQzMWM3YTk3ZjU3ZjAwNGYzYzI1YjgyOWNjMjIwOCBweTNrCis3MTQzMiAxMDYzNDgxYTM2ZjhhMmEyYTJhNDVkMTRhOTQxNTEyMmI4ZjUwZjI1IHJlbGVhc2UyNi1tYWludAorNzE0MzMgYTRiYzgwZjVkNmEwZjZiY2M1MTliZjJiZTBkZjA4MTFjNWFjZWEyOCByZWxlYXNlMzAtbWFpbnQKKzcxNDM0IGNiYWExYmMzNTBiYTIwNTk4YmVkM2M5YWRjMzkxYmEyZTBjMjJkMmEgcHkzaworNzE0MzUgNWYzNWM1M2EzYWQ3YjhlMTBlZjFkM2E4MWU3YzM4OWE0N2IzOGNmMiBsZWdhY3ktdHJ1bmsKKzcxNDM2IGY5Njg5ZDE1MGJiOWZkODJjMzMyMTZiNjNiODQ2NjVjMjk4MmQwZjcgcHkzaworNzE0MzcgMGI5ZTY4OTcxYTFlMmY5MjBhMDk1Nzg4Yjg0ZGM1ODJhNjJhZGQ4ZSBweTNrCis3MTQzOCA5ZWE5NTc0ZGFhNWJmNjk0Y2E1NzcxNDY1N2FiZmM0NjlkMTE0NTgyIHJlbGVhc2UzMC1tYWludAorNzE0MzkgNGE3ZGI0MTJmZGQyYWY4ZTJmMDE5YWY1MGE2YzNjYjE5ZmZlOTAxOSByZWxlYXNlMjYtbWFpbnQKKzcxNDQwIGFhOWIwYTZkN2FkZGQ2YTExMDU3OWU1NGZhZGY5OWI3NWMwNmI3NzMgcmVsZWFzZTI2LW1haW50Cis3MTQ0MSAwODljNzIxMDdkN2IxYzYxMjUyYTgzMDEyYzMwOTRiMGYwYTgxMWRlIGxlZ2FjeS10cnVuaworNzE0NDIgOTE2OTQzY2Y1MjQzNmY3NzQzY2UzOTAwNDhiY2IwYTI0ZGMxNWUzYyBweTNrCis3MTQ0MyBkYmI5YjcxNzZlZWYwYzZlMDY1NTVhYWZlYWZiYTMwZmJkZWExNzRkIGxlZ2FjeS10cnVuaworNzE0NDQgOWQ5MmVlYmI3YzMwNTAzZGMwMDZiNzk4NGViYTIzYjA4Njc2ZTRkOCBweTNrCis3MTQ0NSBiNjE0YTUxZjQ0MjM2YTZmOGFkZmYwOTcwNmZkNTEwMWYzMTZlMjNhIHB5M2sKKzcxNDQ2IDZiZjQyNmU1NTFkNTcyZTBjMmNlNTFmYTljZjJhYjk5NDE5ZmYwODQgcHkzaworNzE0NDcgMDMyNzUwNGE0ZjZhMWFlNDc0MTAzMThjNDg2MTliYTRjNzg0NTA3ZCByZWxlYXNlMjYtbWFpbnQKKzcxNDQ4IDRjZGRlZjE0NDQyODI0NGNmMGY4ZTBlMmNlNGNmNDZmYzY4NzA5YjQgbGVnYWN5LXRydW5rCis3MTQ0OSAzMjM2NmIzZTBjYTk5MDcyNTI2NzlkYTc2OTc1MTk0YzNmOGYyYmI4IHJlbGVhc2UyNi1tYWludAorNzE0NTAgMGMxMWMzNDE4ZDg5ZDQ4NmQzZWQxOThjODBlMjkwNjc2MDY0MzNiNCByZWxlYXNlMjYtbWFpbnQKKzcxNDUxIDlhODk5OTk3NzM2Mzk5NGUzYTk4NjhkMzRhYjEzMjg2MWVkZWFhNTMgcHkzaworNzE0NTIgYjkxMjUxNWZlOWNlMjJlYTdhYjkwY2Y5ZDg3YjVmOTBkNjcyZTc2MCByZWxlYXNlMzAtbWFpbnQKKzcxNDUzIDI3OTdlNWU2MDA4ZjBmZTRiYWMyM2FkZTdiNmM0ZmU2ZWU4MTQwZDIgcmVsZWFzZTMwLW1haW50Cis3MTQ1NCAxNWQ2MDc1YzA4NWIxZTAzYjI4M2YwNzdkODc1NmQ4NTMyMzNiYjgwIHB5M2sKKzcxNDU1IGM5NTAyNmMyZjJiYTBjM2UxZTBkNjU2ZGIwN2NhMjJkNjA3NTkyYjQgcmVsZWFzZTMwLW1haW50Cis3MTQ1NiBmMGY2MDg5MmNiYTFjOTM4MDJjNzE1MDVmMTA0YjBlNDI1NTQ4OGMzIHJlbGVhc2UyNi1tYWludAorNzE0NTcgMDZiNjQxNzhhMzBkMGZjYjA4NjRjYWU0ZGRkZjVmYTYyMzQ5N2Y3MiBweTNrCis3MTQ1OCAwYmU2M2M3NTA0MWFkZjdjNDY0NzU0MTlmNTgzMDFiZDFmNjI2MDNmIHJlbGVhc2UzMC1tYWludAorNzE0NTkgMWE4YmRlMThkMzUzNTM5OTNkZjdhMmE1Y2I1Y2VmZDM0ZDhkZWM3NSByZWxlYXNlMjYtbWFpbnQKKzcxNDYwIDc4YTk3MzlkYWZhNDEzZmMyM2NiOGUzZGY1NDJiNjRlZTM5YWRjN2YgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ2MSBmNzI0OTc0YjhkODliMzM1YTk0YjQ2Yzg3ZmNlODIzZGIwMzIzZmQ3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0NjIgN2UyMjljYTBiOTJhNWU4NjJiNDY3MDcyNjViYjFhYTIxYWU1NzdjYyBsZWdhY3ktdHJ1bmsKKzcxNDYzIGQ5MzkyMGEyNWRhNGM4YzZjMmU1NzVjYzk4MWY5ZjM1MDM2YjFhYjUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ2NCA4ZjEzYTQxNGQ4NDMyOTU4ZTVkNzE2YjMxMjkyNGI3YWJiNzViODg5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0NjUgZmI0MWZlNjdlMDYxYTI5YzQ0ODA5ZWVlN2U2ODdjY2U2ZGY4OWRmZSBsZWdhY3ktdHJ1bmsKKzcxNDY2IDFjNTJiMTQ1NGYxZTIwMmZhYTFjZmRjYTgxZWMyZmU3ZTNmZjUzYzYgcmVsZWFzZTI2LW1haW50Cis3MTQ2NyA0NDExMjI0Y2I4MDY4OGI0MWJlZjdmMDUyNWM4YjYzZjNmNjVkNjViIGxlZ2FjeS10cnVuaworNzE0NjggMmEwM2NkMDRkOGY0MDg2MWIyMGM2Y2M3MmZhYjcyODljZDQyOTE2MCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDY5IGY2NTJmZTE2NDllZDhmMzg1YmI0NjY3NzUyMGM2Y2I4MzI5NTZlZjIgcHkzaworNzE0NzAgZjM5ZDMzNzUyNTgyMTU1YzZjYTcxYWUyM2IxZTE0NDI5ZGNjZjNmZCByZWxlYXNlMjYtbWFpbnQKKzcxNDcxIDhiMmNkZmQ1YWFiNmZjMzNlMGEwYTQ2ODIyMTVlZDMxZDM2NTIzNDcgcHkzaworNzE0NzIgZWYzNTkyZTllMDFlNWQ1OWZlZTYwZTJjM2Q5ODU5OTYzYWUyY2U5OSByZWxlYXNlMzAtbWFpbnQKKzcxNDczIGVjMjM5Y2ZhM2U2MTc4NTgwNGVlNDY0NTg1OTNiZjFmZTBmODQ1NDEgbGVnYWN5LXRydW5rCis3MTQ3NCBiZjJlZWQ4NjVhOGE0YzM1OTIwYjY2NzYwMjg0NTllMDkyODIzYzExIHJlbGVhc2UyNi1tYWludAorNzE0NzUgNGEzNWM4YTViZTQ2ZmU5Y2NhNTYyZjIwMTc0ZmRmYjk2MTBjZDViYiBweTNrCis3MTQ3NiAwMDAzYjViNGYwYzAzNDljNDU1NTA1ZmViOTBmZDk4MjI1YjEzNmFmIHJlbGVhc2UzMC1tYWludAorNzE0NzcgNjMyODliODJjODQ5MDMwMTBhODMwOTUxN2ZkNzg3ZWFkNjdhMDRlZSByZWxlYXNlMzAtbWFpbnQKKzcxNDc4IDkwMzU2OWIxMzJjMjQ3ODgwNWFmMDQxMTYzNWJjY2JiMjVkZWU5ZDggbGVnYWN5LXRydW5rCis3MTQ3OSAyZTM4YzYxN2ZkM2VjY2ViYzFlYjM0NzI1YzdmYmFjOTI4OGE3ZGU3IHJlbGVhc2UyNi1tYWludAorNzE0ODAgMzQ1NWZkNzg0NjdlNjU4MzdiNzNhOGQ4YTUwMDYxYmRiMDE3MThkYyBweTNrCis3MTQ4MSAzNzMyN2QxOTEyYTgxNDY4NjMxODBiNDg0NDk5NzkwNDczZjA2MzM3IHJlbGVhc2UzMC1tYWludAorNzE0ODIgNTI4MmM2NmQ4OTcyNWJkNDc2NWIzNWZiYWZmMmQxYjA5MzRhYmQyMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDgzIDJmOWM3YjkwYTc5NTgwYThlNGIxNGU3YzFhOWZkNjA5NGFhYWVjNTYgcHkzaworNzE0ODQgZjM3NmEzY2ExN2QzN2Y5YTMyYTVhNjhjYjJmZmVmNDdmZDA4ZmI5NSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDg1IDJkMzcyMDk4ODVlMjdlYjlkNDk3ZWQzZTljMzRlY2NkZWUzYTc5N2YgbGVnYWN5LXRydW5rCis3MTQ4NiA4ODYxMjk4NTg2YzEwZjFjNWJlNTk0NjA5YmJlN2E5MTA5OTc3Zjk4IGxlZ2FjeS10cnVuaworNzE0ODcgZDBiNzQ0MzAzYjg0ZTMyNTRiYjA1OWU0ODliMDcyMzM3NDU5ZmUzNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDg4IGM5NDlkZGM0OTRlYjg2NmFlZDY4MjZjNzQ4NWRkZWY4MWQzMDhiZTkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ4OSAyOTcwNTBhYjdhY2E0NzY5Njk1YTJmM2VmMmNkNDZlN2IzNWU2NTc0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0OTAgZjM0MjgxZGI0N2U2MWFiYmE5ZGEzMzljNmRiMTUyZTcwNmQ3ZDMzOCBsZWdhY3ktdHJ1bmsKKzcxNDkxIDM2Mjk5ODI4NjYzNWQwNGZhN2YzZmY1YTkxMDk3YWU1YjZiZDQzYmIgcHkzaworNzE0OTIgNGFmMzExNDBkZTI5ZGFhZmE0ZTkxMWE5ZDQ4MGNlM2JmYWRmY2IwOSBsZWdhY3ktdHJ1bmsKKzcxNDkzIDE5ODkzNDkzNzliNWFjNWQ3YzM1OWY2OTA3ZDg1ZDBiYzE2YThmYWIgcHkzaworNzE0OTQgZDVkZGQzNDIxYzlhZTY4YzRiMjMxNDkzY2YxN2YzNDIyMmUyZDAzMSBsZWdhY3ktdHJ1bmsKKzcxNDk1IDdlOTc4Y2E0MjkzMGE5MDZiMGNjYmYzYzIzN2Q3OGQ2ZTYzODE0ZWUgcHkzaworNzE0OTYgM2IxYjYxNDI2OTBhYTNiMzNkNWIwZTIyZjU0NTY5YjNjN2YxNGU0MSBweTNrCis3MTQ5NyAwMzdmNWY3ZTdhYjFlNmRhMDZmMzNiZTJmODIwOWFmYzMyNjVlMjdmIHB5M2sKKzcxNDk4IGZlNWQwN2JlYjVkMzdmODc3ZDc0YmIxZTQ3ZDIwNzMzOTkzM2M1ZmIgbGVnYWN5LXRydW5rCis3MTQ5OSBiYjgxNjRkYjFiZGE2N2Y2YzRjNGJjMzdjMjFlM2Y4OGE4OWVhMmU2IHJlbGVhc2UyNi1tYWludAorNzE1MDAgNDg0ODU2MDRlZDQ4N2IxZGQ0M2FkMDMwODI1NzZjZTVhMzUyYTk3ZSBweTNrCis3MTUwMSBjYWRmOTU1YmMxOGJkMTVlMjg1OTdjYWY3OWM2MDY0MmRjYzdjNjkyIHB5M2sKKzcxNTAyIGYyMjFmY2UzZDZiYTM4Y2ZkOGM4OGYwNDI2OGU4YTQ2YmFlMWQ3Y2IgcHkzaworNzE1MDMgMDIxZDhjODJmMjg0NDdmZTQ3OGQ0MjEwODUxZjMwM2I5ODZmZTFiMiBsZWdhY3ktdHJ1bmsKKzcxNTA0IDkzZDRmOTgyNjE1ZjI2NGUwZGY5NjMxNGU1NTRiMTUxMWY2MGYzMWEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUwNSBkMjNlODRlNDE4Y2U4ZDczYTExYTE4M2VkYmY5ZDEwY2NmY2ZiMzIxIHB5M2sKKzcxNTA2IDRlMDhiMThlMzhmYmUxNGZkMzRiMWRmOGU1ODAxY2Y0ZGI1NzkyNzcgcHkzaworNzE1MDcgYWQzZjNkMzA0OTYzY2RmYjIyOGQxZGZjNzIxYTVhMGZkNDA2NmJjNiBsZWdhY3ktdHJ1bmsKKzcxNTA4IDIxZWY0NzU4Y2FjZDQzMGZhZThhMjBlNTQ1ZTk2MmYxY2ZiZmVjNmQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUwOSBhODI0NDMxMjUyZTBmMjYxZDUyMzkxYTQ4MDIxYjAwNzVhMzM1MTBiIGxlZ2FjeS10cnVuaworNzE1MTAgMjkzZGM1ZjA4ZTk5MGUzZDM2NWI5ZTI1MTY4ZWEzZjdkODhhMDQ5NSByZWxlYXNlMjYtbWFpbnQKKzcxNTExIGUwNzIzY2NlZTc0ZGYxMWRiNzk2N2M4ZWE1YmQyZTY1MWE4OTIxYTggcHkzaworNzE1MTIgYTQ4ZmNlYjBmMGIzZmZkMGJmYjllZGE4ZDVmMzc3ZjU3YzIxMDFhOCByZWxlYXNlMzAtbWFpbnQKKzcxNTEzIDc1NGEzZjczZmYwN2ZhNTZkZWYzMGU5NWVlYmRkOTdiOWNmYmQyYTkgbGVnYWN5LXRydW5rCis3MTUxNCAzYjI1OTExYzZhNGVhNmE4ZTA2YWU2YWYzNmU5MDdkY2EwMDIyY2VmIHJlbGVhc2UyNi1tYWludAorNzE1MTUgMTY4NDgyZWFmYjU2MWRiODc5NzQ1ZWU5YjRlOTk3NTVjMmViY2Y2MCBweTNrCis3MTUxNiBlMmI5YjJiYzcwYjBlY2ZmMGIyNjlkYjI5MGViM2E0Y2Q4MDU5OTM5IHJlbGVhc2UzMC1tYWludAorNzE1MTcgNzEzZWY2OGU3ZmZkMDBhNTI2ZWU3MGZiMDQwZGU2MjZlNjgxOGFlZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTE4IDRjYTE0NzFiZDFjZDM2ODYwOTk1MzJkNTExYzdmMjViMTZlNWQ0NjMgcHkzaworNzE1MTkgZjRkNTUzZWM5ZGRjOTdlNzIzMzk4MjdiZDE4NzI2ZjdjNGQ4ZTg4MCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTIwIGQ3YzU3ZTE2YjczYzVmM2RmZmY2M2VhODg3NDljMWQ4ZGExNzJiYTIgcHkzaworNzE1MjEgNDQwN2U0ZDA3MDg0MjFkZTgzYTZmMGI0NmE1MGM4N2MyNzFiNTZjZSBweTNrCis3MTUyMiAxY2IzYmNjZTgzMTY3Y2RkMmVhMGJkMTFiNjg1MTcwYzJlNzFlYjBjIHJlbGVhc2UzMC1tYWludAorNzE1MjMgMjYwNjlkM2I2ODkxOWFkZDk1MTE5NDNkYzYzYTdjNGNiY2U3YjI2ZSBsZWdhY3ktdHJ1bmsKKzcxNTI0IDQ2MTY3YWQzYWI5M2ZhODQ3MDUwNWFkZjExYzMyYjMyYjZiYTEyODIgcmVsZWFzZTI2LW1haW50Cis3MTUyNSBjOTE2Zjg1NGZhZWIyYjg1ZTNiZmY4ZGI5MTFmYzNlM2ZiYTk4YzdkIHB5M2sKKzcxNTI2IDg4NjdhNWI2MGE5MTMzNDZhOWFiOTBhYTE0NGUyOTU4NTU5MmMwYzEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUyNyA2NTA2Y2MzM2ViYWRjMTk0YmE4N2Y5Y2RlNGZmYzRlZTNhMTFlYTE0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1MjggNTM2ZjE4MGY2NmE3NzYxYzU1ZmU4NTcyOTU0YjkwOTcxOGQ0YTEwYSBsZWdhY3ktdHJ1bmsKKzcxNTI5IDE0MDkyOGM2Y2Y1MWYwMTNmODBhODZiNjk2ZmY3MGFiYjg0MjBjNmQgcmVsZWFzZTI2LW1haW50Cis3MTUzMCA4YzgyYjdjNTFiZGRlMzBhNWFmNGM0ZDAwNWUxZGI5MmZjYTAwOTFiIHB5M2sKKzcxNTMxIDQyNzI5ZWRkYmI2YzBiMDMyZTlmYmRlYjE2MmFhYzZmNzNiNjU4YWUgcmVsZWFzZTMwLW1haW50Cis3MTUzMiBkMGE3M2NmNDYxODBkNDEyYTc1NDU3NmMwYmIxZmNkMWMwMzg5ZGIxIHJlbGVhc2UzMC1tYWludAorNzE1MzMgMDk4ODg1YzZiMTAxZDA4NTc4YWZlZWFmMjQzMDhhYmMyYzgzN2I1ZSBsZWdhY3ktdHJ1bmsKKzcxNTM0IGJiYjYzYzcxYTk4MzE5MTQzNDE2MDU1NmVlNzJmZjgxZjM5NTNkODAgcmVsZWFzZTI2LW1haW50Cis3MTUzNSA5M2EyZDgwY2QzNGQwMzgwMTRkMmE3YmZlMzBmYWQzODQ4OGFjMzBkIHB5M2sKKzcxNTM2IDY2ZGE1MTRlM2ZhMzk1MjkwMGE5ZmI4OTZkNjRhZDZmYWE2NDQxODUgcmVsZWFzZTMwLW1haW50Cis3MTUzNyBhMjQ5MmI0ZTUwNWRmM2ZjMzM3YWQyNWZmNjhjOTI4NzgzMjc2YzVjIGxlZ2FjeS10cnVuaworNzE1MzggODMyMjhiYmU1OTA2Nzg4MTRlNGU0NGZmMjQxMzU0Zjk2MDI4Nzg3ZiByZWxlYXNlMjYtbWFpbnQKKzcxNTM5IDdlMzE5ZWVmYWI4YzhlZjg0ZTU0ZDI0ZTkwNzg2YmNhMWUwYTExZjkgbGVnYWN5LXRydW5rCis3MTU0MCA0ODBmN2VjM2I4Njk2MDhmZmRiODgyMmNkY2NlZTVhMmI1Y2EzOTVkIGxlZ2FjeS10cnVuaworNzE1NDEgMmVlYzU3YWJjNTIzOGYzOTdiMmU3ZjczZmFlMzhlMzhkMzlkMTdhOCBweTNrCis3MTU0MiBlOWUyYWUzYmZiYzE0MDQzMzBjMWM0NTMyOTg2NmJmZjE1OTM0N2Y4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NDMgOGJjNGJjODdjODg1OWU1ODkxN2QzNzk4YjA0Njk1NTg2NzhhZGYwYyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTQ0IGFlNzQxNDIwODlkMmJiZmYyNjkzZTRiMGJlNWRkMGIyMTUzNjU3ODUgbGVnYWN5LXRydW5rCis3MTU0NSBkYTBmN2ZjNzg3ZDgyNmQ4Y2RmN2ZjMjNmNzYyZDQ3YWVkNTY3ZTRiIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NDYgYmM1YzVkN2EyYTE0NzlhMDU3NmQzNzk4ODk5MjZjZmFmNGNhYzEwMSBsZWdhY3ktdHJ1bmsKKzcxNTQ3IDdkNDQ5OTcxMWE3ZDVhZGIyYzM5NjdlMDUzZmIyYzI5MjNmY2JiYjAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU0OCA2MjJhYmY2YWM5N2ZhYjM5MGQzMmEzMTg5OTFhMmIxOWViNDUzODNkIGxlZ2FjeS10cnVuaworNzE1NDkgMTJhOGQxOTQ3MTY3OTE0YWQwMzliNGUxZjQwOGUxMGEyNWRjNjE1YiByZWxlYXNlMjYtbWFpbnQKKzcxNTUwIDU0NzI3ODk2NTFlMTYxMTAyMjhlZTYxZGNjZDljZDBlOTQwZDFhNWEgcHkzaworNzE1NTEgYzc0MGZlZmFlMWJhYjBlOTFkMWYwYmJlNTcyMzI0NGM2N2NjZGQ3YSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTUyIDQ2MDdmNTRlNzY5MzZiODdkYWM3ODhiNGM3YmVmOGIxOTA5MzJiNmQgcmVsZWFzZTMwLW1haW50Cis3MTU1MyBhYjc1ZGEyNjZlNTdjNTVlNzc3MDI0ZmJiODRhNmEzMDA4ZGM0ODM1IGxlZ2FjeS10cnVuaworNzE1NTQgMzc3MDY1MmViMGU1MDk4YmYxYzQyNjA0MTE5MTBjNGM5M2ViNTMyMSBsZWdhY3ktdHJ1bmsKKzcxNTU1IDllM2M5NzZkYTVmNDA1MjdkMzllNzE0ZDIxY2VjYjdlY2UyYzJkYTEgbGVnYWN5LXRydW5rCis3MTU1NiA1ZWYxOGYwZjQzMTA5MWQwNWMyYjRiMjYxZTA5YTE4MDU5ZDg1ZmUwIHB5M2sKKzcxNTU3IDZmOGZjNmIxNjdlYThiMDEwODE0ODU5NDMzOGI2NzY0OWIwOTRhZjIgcmVsZWFzZTMwLW1haW50Cis3MTU1OCBlNDljZDRmNDdmNzYyMGIwMjdlOTZiYzI4MDJhNjY4YjA2NzU3ZmIyIHJlbGVhc2UyNi1tYWludAorNzE1NTkgOTUxMzJjYzIyZWU1YWI3YjhkYWVjNjE2MmViMzJkODI2MzJkMzA4NyBweTNrCis3MTU2MCBmYmMzN2ZiZDk0MTVmZjVkNDRlNzJjNWYxMWY1OGMxNGQ4ZWQ1NDEzIGxlZ2FjeS10cnVuaworNzE1NjIgMGU0NjlkYTY3ZDYzYTVmNDhiNWZlMWY0YzBjOTZhNjU0YzFmZTZhZSByZWxlYXNlMjYtbWFpbnQKKzcxNTYzIDk5MGYyNTc5ZWFmZWM5NTA1ZWIwMzNhYjMxYjlmOGIzNDMxMmNlMzggbGVnYWN5LXRydW5rCis3MTU2NCAxZGM1M2UwYTE0N2E3MDQzNmJkOTYzNmY2MWFjZThlODY0YzYyOGZkIGxlZ2FjeS10cnVuaworNzE1NjUgNTMwOThmMjcwYmJkYTAzZjcyZWJhMDhlNjU2N2VlM2Y1MTc3OWY2ZiBweTNrCis3MTU2NiA5M2QyYmVmY2EwYTU0ZmVlNzZhOTkwNzczNTE2OTBhZTdkMTg1N2NlIHJlbGVhc2UyNi1tYWludAorNzE1NjcgYWFjNzBhM2JhMjUwZjNhNDZhMmM5MTJkOTA4Y2ZmOWNjNGUzZWM2NCByZWxlYXNlMzAtbWFpbnQKKzcxNTY4IDc0YTRhMjdlYTI5MWNiMWZlNjljZWFlYTAwNjNiNmI3MzA0YWVmZjcgcHkzaworNzE1NjkgOGExNzMwNTdkOTAzMWM1MmY4ZTE2ZDgyNTVmNzhiNjI1MmNmN2E4YiBsZWdhY3ktdHJ1bmsKKzcxNTcwIDNiYTY1ZWU0MWZlN2VhOGRmZGQzOTM4NTNjZDkzOTI0OTgxYzI3MjAgcmVsZWFzZTI2LW1haW50Cis3MTU3MSA4ZWVlOTRjNzRlOWM5ODdjOTJlMjc4YzBmMmIwZWVkYWY2ZTBhNGU5IHB5M2sKKzcxNTcyIDU2YWMzZDUwOTUyYzg3N2QwMWEwNWYzNzQ0MWNhZmNmOTUyMDliODAgbGVnYWN5LXRydW5rCis3MTU3MyA3NzRmN2JjYWQyMmM2OWY2N2QzMWU1MzA1MTk1MzMxMTE5YjFhMjllIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NzUgOWZkNjZhMjFhYmQxOTY3ZDNmMDg0MTRkMTk5YTY4NWM5YWEwNDA0ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTc2IDI4ZWE1NGE2YmI2NDYyNTllYTYzZGZhY2UzNWY5MTIxZWNkZWY4NTggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU3NyBjNjZkNGUzMDZmYjY4NTIxMjQyOTcxNTJhMmNkYTdlMzNmYmIwNGYyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NzggYTRjYzQ2Y2FiNmE3NDMxMmJhY2E3MjA4ZDdmNDhkY2I2NTQ5ODUyNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTc5IGM4ZmIzOThlY2EyMzczMzY0N2RkZmNlNDBlNmFmNDg4NGFjMmJjOGIgbGVnYWN5LXRydW5rCis3MTU4MCA1N2I4ZGM0YTg4ODhmZjkxMzM2YTMzNzZhZTlhZGNjOTNhMTk1YzhkIHB5M2sKKzcxNTgxIGNjZjBlNjQwOTUzNmQ4YzJjODZiNmQwNTEwODMzMWM1MDY5MmE5N2MgcHkzaworNzE1ODIgNThiNzQ5NjdhNTQyNWNiNzFkMTFlNDY2MjE4ZDFiNDEwZDliYzg2OCByZWxlYXNlMzAtbWFpbnQKKzcxNTgzIGM5N2U0NWU5MDU5OWU2NWE4NWUwOGZiMzQ4NDk5ZDg0NDgzNjIzODAgcmVsZWFzZTMwLW1haW50Cis3MTU4NCAxNzdlMTA3MzA1MmM4NTliZWUxN2VkMjVkNDQ1NjMwNzA3MTE5ODM5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1ODUgNDcwMzk2NWRhMmNlYTlmZjg0M2MyMGYxNzUxZTMzZGM3ZmJjNGFkZSBsZWdhY3ktdHJ1bmsKKzcxNTg2IGUwOWE2NzFhNTkwYjdiYTVlMjc2NDY0MDc5ZjJiZmJhM2Y0MTljNDYgcmVsZWFzZTI2LW1haW50Cis3MTU4NyBlMDNiYTVmNmY0OTQwNjAzZTA3NTlhZjM2ZmUxMmQxOThhNGYzMzUyIHB5M2sKKzcxNTg4IDg1YmMyNTM3ZTgzZTNkOTYyNDVmOTZkYmU2YmQ3MWE3ZDc3ZDNlNDMgcmVsZWFzZTMwLW1haW50Cis3MTU4OSA3YmFhNjhkNjZjOGZjNzk5ODQzMzUwZmQwMDg0YjUzM2VlZDM2NDAwIGxlZ2FjeS10cnVuaworNzE1OTAgNzFmNDhhZGFkODkyM2U3ZDllNzkxZDZiMzZkZjFjMzVkNmIzN2UzZSBweTNrCis3MTU5MSA2MDUxMzgwODU3N2YzMjM5NGYyOTdlOGNjMmVhM2M3Y2M2ZDM1OTBhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1OTUgMDk2NzY3YjE4NDUwMTg2NThmNGEzZmRkM2VmMzQ2MjY1Nzc1MjM5MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTk2IGU3ZGJmZDAyM2ZmNTIxZWVmOTNjZDMzZTYxMzRkYjY5ZjA2MzYxNDYgcmVsZWFzZTMwLW1haW50Cis3MTU5NyA3OTQ1MjVlZDY0ZmQ0MjNiYzVjYTEzMWU3MGJhMTRjYTkxMGFiYTg1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1OTggZGFkM2QyYjlhODc1M2Y0NWYxOTZiNzAwNjQ0Y2Y5ZWZjMjZiY2Q4ZSBweTNrCis3MTU5OSBjMTdjNWJhOWJiNmNjN2JmNzZhMjUzMzQwY2RhZWRmZGE0ZGIwMzNhIHB5M2sKKzcxNjAwIDRmZWJhMDlhODI2YmE5OWU1YjQ4MjcwN2IzZDk2NDNlYmEzNDE1NmYgcmVsZWFzZTI2LW1haW50Cis3MTYwMSA2OThmYTAyNGU3ZDIzOWYzYWRiN2EwM2Y3N2UzNTc4N2U2ZjA0OTkzIHJlbGVhc2UyNi1tYWludAorNzE2MDIgNmQ5NWQ5NzkzZmNmNTAwMDIwNzM5NDVlNGFlYjBkM2VmMTUwZmE1ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjAzIDJmZDA4ODMwYTkzZjEzMjgxOTA1MDVkZDhjMTk2NzM1MzJkNTBiN2EgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYwNCA1NDI4M2I0YTE2NTdmY2ZiNmZkNDdhZDQzZWQ3M2QwNWZkM2Q3ZGI5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MDUgYWQzYWNjZGUwZWU3YTdiYzVlMDg5Mjc3ZGRlOTcxOGQ4MTFlNjg1NCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjA2IDBiN2U0MTQxODM0MzMyNjZiZTdlNjliZDM2NDcyOWY0NTMyYWY4YWYgcHkzaworNzE2MDcgZmQ3ZjM2ZWFkMGM4MTcwYmZlYTYzZDlmNTcwMWVmYmMxZmYyZWQxMCBsZWdhY3ktdHJ1bmsKKzcxNjA4IDlkZjVkZGMxOThhODAwYmVhMjRhMjA2YTk2Zjc0MWVhMDRkMjAwNmUgcHkzaworNzE2MTEgMTY3MDRiMTVkZjNlYmU3ZDUzZDVkYTA2MmVkMWI0M2VlMDAyMWEwMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjEyIGMyNDNiMTBhYjczMDU1MjVlNTBmODUzMWEyYzlhOGQxZmIxYWZhOTIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxMyAyOTcyOWI5MDhhODIwZGNhYzMwZjhjMGYwNjQ0Mjk5NWZjNTUzMGNmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTQgYjhmNDFkYjhmNmFkYTA4YTU3ZTFmMzc3MjJkZjg4MmFjZDAxM2U5OCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjE1IGFiZWZjYTJmZDkyZTIxZDNjMzc2NWE2ZDdhMmFhOGI5Njk5YjE1ZWMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxNiBhNzRlMTAxOTE4NTRkMjFhMDYxNThmMzQ2NjQxNGYzNjFjMmRmMjBiIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTggNDA4NzYxY2EzZDk2NjNiNmVhZDU4ZDc3Yjk0Zjk3Y2QwMGRlYjk5OSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjE5IDYxOWRjYWM4ZDM4OTA5NjViNDQ3NzJkY2Y3N2E3YzUyM2NiNGQxOGUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyMCAyY2EyMDlmM2FhYTI5NDE1MWJiMzdjZTdmZmM4NTA3ODBmNWM5OTk0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjEgMTJiZGIzOTcyZTJhN2FhNWNmYzJjYWQzNjI3YzI2OGJiNzQ3MjY1MiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjIyIGQ4ODFiMDZkY2EzODhhZmJlZWQ5MTgxN2Y5YTE1NTUzODhhZjhjYjQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyMyA2NzM0MGZkNmFjOGEzYmE4ODg0MWVmMzllZWQwOTM1MTQwNzUzNjYyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjQgMmQ2MTE2ZWVmMmIzNjdiM2Y5MmI4Nzg4OTE4OWQ3OGI2ZWE4Yjc1ZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjI1IGNlNjdlNzgzYTZlZDIzZDg2MzYyZjU4ZDQ2Nzk0NjMzMzVlNDRkOTMgcmVsZWFzZTI2LW1haW50Cis3MTYyNiAwN2QyMzllZWFhNjJlZjkxYjU5NGJhNTRjYTlhZjRmNzkwYzg1Y2UzIHB5M2sKKzcxNjI3IDViMTA4ZWJiZmMwODNlN2ZkMzFmNzMxNjM1OTQyNzgxOWQ4ZDhiZDkgbGVnYWN5LXRydW5rCis3MTYyOCA0NDE5ZTA2MjE5Y2FiODkyY2Q1NjkxMDM0M2MwZjJlNjkyNDBjMzU0IHB5M2sKKzcxNjI5IGRmMjYzOGI5YmVlMmVkYzBmNjM2ZjRlMzFlMDUzNjkwMDE5MjQzNGEgcmVsZWFzZTMwLW1haW50Cis3MTYzMCA2YmNkYzEzMWY1M2NiZTMxMDg3NjEwOGY5OTg2YzU2NTRkOTE4ZTBhIHJlbGVhc2UyNi1tYWludAorNzE2MzEgNDYyODIxN2IwMTNjNDA0ZmZmMGY2ZmIyNGRlYmJjMDFkOTZlZWM0MiBsZWdhY3ktdHJ1bmsKKzcxNjMyIDdhNjlmZmM0ZjRhZTM2NmM1ZTI1MzA2NjlhZGVmNjJmMzU3YTgyMmQgcmVsZWFzZTI2LW1haW50Cis3MTYzMyAyMGNmN2Y4YTU0MDUyZmEwMmEyYzdlYTliY2RiZTEwNDFhMjI3MTNkIHB5M2sKKzcxNjM0IGYzMjVlZGZlMGMzYWNiYzBiYjlmZDM0MGFhNTAwYzBiZDFiMDdmZmIgcmVsZWFzZTMwLW1haW50Cis3MTYzNSBjNTRiNzg0YTU2ZDU1YWRkYjk0ZWMyZGZmNTAyZDU3MTk0YTIxMWU0IHJlbGVhc2UyNi1tYWludAorNzE2MzYgNWZmOTAzMzJmOTEwZTNiN2Q2YjI4MDY5NjEwODIwZTdiMTcxNGM3ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjM3IGVlYmU1ZjdkYWYxZTc4YjA0OWYzNmFjYWM3MGU1MjMwNDMyNmNlYjEgcmVsZWFzZTI2LW1haW50Cis3MTYzOCA0M2VmNzRiZmM1Njk2MTlhOTJlODFjMDBlOTFhM2RiYWI0NTdmMTJkIHB5M2sKKzcxNjM5IGFjOTNjM2Q4ZTE5MjA1Yjg3ZDhjNzdhNjg2ZTIyNDY3OTBkYWFmZGMgcmVsZWFzZTI2LW1haW50Cis3MTY0MCA0OGI1ZmFkOWNlMWIyODRiYTc1ZjJlMWQ2NWI4MGRjNzMwNjRmZTIzIGxlZ2FjeS10cnVuaworNzE2NDEgNzdmOTA5YWMzZTEwMjI5NjhkNjA1MWFkZmE3NGEzZDhhZDM5MDJmNCBsZWdhY3ktdHJ1bmsKKzcxNjQyIGQzZjAyMDQwMGZmMjdlZmEzM2FlYzY4MmE5OTc2ZjdkZDA1N2FiMjUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0MyBjNTI0YmZlZTcwM2FlNTJjOGE3NDMyMDVlMmI2NzRmZGU2MjdkYzI1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDQgM2ExMWEyYWQ4ZjdiODA4ZTYwYzg2OGEzYzZkNmJiMmUyYmU1ZjQ0YyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ1IGE2NzkwYTNiODBjM2EyNDBiM2NhOWNhZTMyZGJiYTUwNmVkZDFlNGQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0NiBjZTRmN2Y0ODliZDM2MWFjODk2NjRlOWY1OTk3MWE4YjY3YzRhZGUyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDcgNDUwMGFkYzMxYmUzYjhhZWMwNWQzYTEwNTBjMWMxOTE3NmUxNGViNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ4IGVkZWJjODkzYjAyY2UwZmIyNzE0M2IxMDFkYjRjMWU0ZmZkN2U3ODMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0OSBkYjczMDRiZmJmN2RjM2NmNzA2MmQ2NWQyMjY1ZjI5OTE5OWIxZWQ3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NTAgYTI4YWY1NWM2ZTU4ZjAyYThkZDFkZmRmYzczMTYyZWFmYjUzY2FjYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjUxIDVkNDcyOWM0NzAzMzU4ZDRmZGE3NjgxYjQ0MjJmZjIxOThiNDgyYmYgbGVnYWN5LXRydW5rCis3MTY1MiA3M2JiNDk0NTE4ZGQ2ZDM5MDVjODM1NjhiYTFiOWJmM2ZhODc3MTk0IHB5M2sKKzcxNjUzIDFmNWY5OTI4MDFmOWY2OWMyYWY5MDZhOWMyYjkyYmEzZjY2YzE3NTQgbGVnYWN5LXRydW5rCis3MTY1NCA4ZjY1MzU2NzI5MWYwYmJiYTNmYjM3ZTI0YTRkZmUwYWNjOWNiZTk3IHJlbGVhc2UzMC1tYWludAorNzE2NTUgZjBhMTZlMWRlZWExM2Q4OGJiYWUxOGFmZjQ4MzdjYzFjZTdjZjFmOSByZWxlYXNlMjYtbWFpbnQKKzcxNjU2IDk3NWJlMWViM2ViZjM3ZGI1YzFjMGFhNDNkMTkxMGEyODI2NjRmODYgcHkzaworNzE2NTcgNzNiZmNiMzk4ODg2MmFiODNiZjUwN2QxNWY3NTJmODkyOWZhN2QwZSBsZWdhY3ktdHJ1bmsKKzcxNjU4IGNmMTkwZmYyYTcyYzRjNDc2MmZmNzgzNjA2YjE3NGI4NWU5YjA3ZDEgcmVsZWFzZTI2LW1haW50Cis3MTY1OSBhNjNiNDZhZGUyYjdiNjFjN2QwNjE1MWM3MzdkNGU4N2NhMWY0OTFhIHJlbGVhc2UzMC1tYWludAorNzE2NjAgOTJmN2E0NjBmZjgyOGRkYWJlZTc4MDMzOWQ0MTZhZDkzYzdhNDQ2NyByZWxlYXNlMjYtbWFpbnQKKzcxNjYxIGYwMjIyOGQxZjkwODBjMmJlZjlmY2Q1YTdiZGU3NGUxNDJkNDQzYWUgcmVsZWFzZTI2LW1haW50Cis3MTY2MiA4OWRlYjZiYzgyZTRiZjg1MDRhOWJjMTNmOWU2ZDc2NTE3YmZmN2MyIGxlZ2FjeS10cnVuaworNzE2NjMgOTdhZTdhNzA5YzFkNDExYTUxMjc2ZmM3OGE3ZjE5ZjJhZTk5MmU0ZiBweTNrCis3MTY2NCA4NjZhOGJlZWMwNjU1MDllMTY2YjRiMGNkNjE0YzRkMDIzMzA2OWE2IHJlbGVhc2UzMC1tYWludAorNzE2NjUgYjY1M2VhYjEzYjczMjg2ZTk3NWRhZDkyYTliZTc2OGIxYTQzZWE3NSBweTNrCis3MTY2NiAwN2M2YjA4ODk2OGIyMDU5ZGMyZGM4ZDZlODNjYzhiNjNlZGNmNzFmIHJlbGVhc2UzMC1tYWludAorNzE2NjcgMDdjMTExNDY5NWU5OWYyZjViMWIxZWU1OTI0Njc2M2YxOTI3NDI0YyBweTNrCis3MTY2OCBkODRhZDk3M2NkZTI1ZjY2NWMzZjI2YjZhNjZmN2M1NTJkMjJlZGY3IHB5M2sKKzcxNjY5IGNjNTU2NTQxNWFkYTQxN2RjYTM3NzI0NzJhNGM5NjIwNDlmMGRkM2UgcHkzaworNzE2NzAgOTczZjRkN2FhODdjZmZkYWE2OGEyOGNjZjZjMTEwNmY3NTIzZGY3MyBweTNrCis3MTY3MSAwY2Y3Nzk5ZmExOTAyYTdjMDIwMTY1Yjk2MTIyNjE5ZTVhYjgwYTVhIHB5M2sKKzcxNjcyIDAwZTA1NzEzNmZjNjc3ZDU0M2ZlYzA2OTkxNjM0ZjIyOGM5YWFiMWYgcHkzaworNzE2NzMgMGVmNWNlZGRiMWMzZGJhNDFiZDMyYjU2NGQ4MGNlZjJlYjYyY2ZmZiBweTNrCis3MTY3NCBjNjBjMWQzOWE5NTE2NTFjMGJhMGMyYTUwZTQyZWE2NzhmNWU1ZjI4IGxlZ2FjeS10cnVuaworNzE2NzUgOThhNTBhNDlkYzg2NTBiYzk1N2RmMjIwMjg3OTBjYzMyMjdjZDdiOSByZWxlYXNlMjYtbWFpbnQKKzcxNjc2IDIxMjQ5NWIwNDEwYzMzZWZlNGUxMDM2MmE3MGEzNjlkOTEyOWY2ZWMgcmVsZWFzZTI2LW1haW50Cis3MTY3NyA5ZWFiMDU3M2Q4NDU0ODE3YjZlMzIyNjJhZjNlNmFjMTI3ZWQ1ODE5IHB5M2sKKzcxNjc4IDhlNTFmYWU5YmI3NTQyOWQ0ZDQzMjU2MmI1OTdkMmUzOTJhMGNiMGQgcmVsZWFzZTMwLW1haW50Cis3MTY3OSA4MmEyZWY1OTYzZTBmMDk1Y2ZjYzNiNjk4MDM4MzFkMTg2YTY4YTQyIHJlbGVhc2UzMC1tYWludAorNzE2ODAgZGIyOTJlYmE3ZWMxYWFiMTZmNTRjNDVmMTAwZjc0NTJhY2Y2YWYyYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjgxIGM3NDI5MjBjNDVmNzcxYzRiNzZhMmM3ZTM0OWE5MjYwNDlmNDgzZWUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY4MiA2ODc0ZDcwNTQ2MDQzMjU3YmJjZjEzMjY1ODE2M2E5MjdkN2VkYWU0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2ODMgOTA4YzYzOTgwZWVjZTA2Y2IzYjY0MzE5ZTQ5NjE4MTRlZjFkY2UwYiByZWxlYXNlMzAtbWFpbnQKKzcxNjg0IGFiMDZhMzhiNTkwY2M0OTc4ZDdkMTIzOTcxYzQxNTQ2MjgxZGQxOWEgcHkzaworNzE2ODUgYTcwOWJiNWRmYWY1MTE2NTUwMGVlZWY2YjE1YmNjNzEyMjUwODAxMiByZWxlYXNlMzAtbWFpbnQKKzcxNjg3IDk4NjJkNTI3MmQ4NTdhYTc4NDQwMTJiMjg4ZTFkZmQyOWEwZjAyM2YgcHkzaworNzE2ODggNjZmZGNmYTk0MDBiMDFlY2RkNDM3M2ZkOTY3ZTNlZDMwMzU4YzRjZiBweTNrCis3MTY4OSBmZTk5YTU2MmI3MDg1YjI4NDM2Yjg1OWFjOTE5YjU0ZTIwYTQyZDQxIHB5M2sKKzcxNjkwIDI2OTUxZTU5NTg5MzFiOGQyOTMyZTA4ZTZkNzVlOTk4MmIyYWE5MWUgcHkzaworNzE2OTEgOGQ4ZjJmOThhNzUyYTc2NWRkYjA1YTU3ZTQ0MzhlNDdjZDRhZjk0OSBweTNrCis3MTY5MiAxMzkxNmJiMmVmZjA3Y2M0MzdlN2RjNzA1NDA1MTBmOGQ5YmVmY2QwIHB5M2sKKzcxNjkzIDNlMzE4YzRhZjk2MWMzYTA5NjkzZDdkOTc3ZmMzMTY0N2NiOTM0OTEgcHkzaworNzE2OTQgMjQ5ZDUwMGE3NzlhODdjODhhM2NmNzkyZDdkYzY1MzA1Yjk4OTc1NSByZWxlYXNlMzAtbWFpbnQKKzcxNjk2IDAyY2I0MjBkODYyZTY5YWUyMGQ4NjBkMzJmZDY5YTMyMzU2YmE5ODAgbGVnYWN5LXRydW5rCis3MTY5NyA4NThiOWQwOGUzNGI0ZWRlZTRhOGUzNjlmMjgwNjYzMGZjODlhMDVjIHB5M2sKKzcxNjk4IGM4NGM3NTUyNWJiMzVhZWYyZjBkZWYyZThiNzlkMGMwMjc2ZTA5MGUgcHkzaworNzE2OTkgZDg5NWE0MmRmYzk4OTJkYTZiMDQ4ZjBjZjI0OGQyNmI4YjNkMjE2ZSByZWxlYXNlMzAtbWFpbnQKKzcxNzAwIGQ2ZGE2NDYzNTRkMjFlNzFkZDY1YTQ5ZTBmYmNlNzYwOGFkMGRlYWIgcmVsZWFzZTMwLW1haW50Cis3MTcwMSBkNDNkNjQyNTJkMzYxMWQ5NjdiYTc5YzcwODNiZjA2NDQyOTQ3ZWFmIHB5M2sKKzcxNzAyIDJlZDBkN2UxZDE3NzM1Nzg4YjQ0NmNhMTk1ZTcxOGM1ODNmODY3NGEgcmVsZWFzZTMwLW1haW50Cis3MTcwMyBmZTE1NTI2ZWJlOGJmNjg3OTg1ZGViMzIwZjNiMjlmOWFjZDUwYTgyIHB5M2sKKzcxNzA0IGM1Yzg2ODBlZTBiMWMxZmE0Y2ZlNzRhNWVhNGQwMWVjZTFmODE0ODYgcHkzaworNzE3MDUgYWQ1YzdlYWNjZWExMTI1MmVmODQyZTc5MDc1ZmQ0ODVkMTE0MGYyNSBsZWdhY3ktdHJ1bmsKKzcxNzA2IDgyMDliNmMzMmU2MTJiYzQ1N2RkNjJmZjU1YjE4YjI2MmU2MGJiYWIgcHkzaworNzE3MDcgOGE4ZGM3Zjg1NDNlODdjZjY2MWY4NzA1ODI4YmZkY2JmNjAyNjMzOCByZWxlYXNlMjYtbWFpbnQKKzcxNzA4IDM0MTIxNTZmYjhlZjZhNzFmYzQzYTgyYWYxYzBlMWQ2NTZlZjQwY2IgcmVsZWFzZTMwLW1haW50Cis3MTcwOSA3OWE2YzYzYWM1YjBkMjBlY2U5YWI5ZWMwOGQ5YmNiZjc3YzJmNGEyIHJlbGVhc2UzMC1tYWludAorNzE3MTAgOTZkODJmYWNkODkwZTlmNmQ4ZTgyMjk3M2E5ZTMzN2RjZmFjODc0ZiBsZWdhY3ktdHJ1bmsKKzcxNzExIDZhN2ZhMDRkODExMWU0ODEzYjM0NzViOTE3MTRlOGIwZjVjNTg3NzEgcHkzaworNzE3MTIgNTY4ODdhMmE5MGFlZjYzOTMwMTVmYTMzMmNkODFkNDlhZGQzN2IwOCByZWxlYXNlMjYtbWFpbnQKKzcxNzEzIGZiMDhmNjBhYjUxMTE3YzhkNDZiOWNiN2E5MmJlYzI0NGE0ZTI4YTYgcHkzaworNzE3MTQgNGZhNDc2ODZjMGQ3MGZkZWMzMDEyNzQwOTQ0ODU4OTgxNmU1MmJkYiBweTNrCis3MTcxNSA5MzIyMzYwM2M5OTIyMDZiOGZkOTgyNTdhMjc1NWYwYWZmZDM1ZmE5IGxlZ2FjeS10cnVuaworNzE3MTYgNGQ5OTgyMDdjZmMzZTljYzMyODFlMGExZWY5OTJlYjQ5OTYyYmEwNCByZWxlYXNlMjYtbWFpbnQKKzcxNzE3IDcyYTcwMDBhODYwOTQyYzUwOTZjZmE4ZTVkZGQxZjNkMDdjMGNlMDUgcHkzaworNzE3MTggYTRmMTE3ZTkyMGZkYTYwZTBmZWM2ZjhiMzcyM2RmNjhiMGZlMGEwZiBweTNrCis3MTcxOSBjNGU5YTg3NWM5YTU0ZmI3MmNjYjlhNjMwZmUzN2MxNDVjYTY3N2U3IGxlZ2FjeS10cnVuaworNzE3MjAgZGRhMTRhZmExMmI4NWIwZDdhMGM1NmQwOWM5NDRlZTI4M2IyZjYwZSBweTNrCis3MTcyMSA5NzU1ZDhkZDMzNjZhY2NkMjQ2MjFmNDk0NzNkN2EzNjFhMGJiZmE3IGxlZ2FjeS10cnVuaworNzE3MjIgNzc5MGI4NWU3MDA5YmU3YWQyMWExNWNmOWY4ZTQ3ZTQ4NWZjN2M4YyBsZWdhY3ktdHJ1bmsKKzcxNzIzIDI4NjQ1YTk2MTAwNDI0MDZhNjVlOTU5YzlmNTAwOTE0ZWU4ZjZlNzcgcHkzaworNzE3MjQgYzI3N2NmNDE5M2QxMWM3Njk5OTRmZDJmZDY4NWFjZWUwOGRkNjBlNSBweTNrCis3MTcyNSAzZThkYzU5ZDY0ZGU0NDQwMzY0NWMyZWRjNDRkNjZlNzk2Mjk2ZmY2IGxlZ2FjeS10cnVuaworNzE3MjYgMzI5Y2IwMmYxOGU2ZjIyZTRlN2VkNTAzZmNmODRjN2JiNDYwNzQyYiByZWxlYXNlMjYtbWFpbnQKKzcxNzI3IDZlYzNkZjM3NWY1YTgyNjY3NjNmNDc5NjJhODMwMDEzMzNkMWI3M2UgcHkzaworNzE3MjggY2YyMWU5ZDI5MDYyZjE2YTc1ODJmMDExYTk3NGYyZmU1YmIzYmEzMiByZWxlYXNlMzAtbWFpbnQKKzcxNzI5IDcyZmY0NGMwNTI5NWI5NTVjNDYzY2VhMmUyYTRlMmE1ODNkY2IzOGMgbGVnYWN5LXRydW5rCis3MTczMCBhNmQzMjQxMzZlMDE0NWIyOTU4ZjlhYWNlMjE1NTg2N2JhMmQxNzdmIHJlbGVhc2UzMC1tYWludAorNzE3MzEgYTgyYjUzZGJjNjU2NTVkYWFlMTVkNTJjNGRlYjdjNWM5MDY3ODI5MCBweTNrCis3MTczMiAxYmNkNTVkYjM1ZGVkNjE4OWZlYjhjNWE1ODdiOWE5OTA3OWYxYjVmIHJlbGVhc2UzMC1tYWludAorNzE3MzMgY2Y2MjIyY2EwYmNjMDZkNjNjNTU2OWZjZjIyMzFhZTA0M2JkNzc5NCBweTNrCis3MTczNCA1ODkxNWZjNTc2YWFjZTNlY2EzZjAzMWFlYzg1OTg0MTYyNmY4ZjBhIGxlZ2FjeS10cnVuaworNzE3MzUgYWRjNzdhNWQ2YTk2MjZlNjk0MjkwZTdmOGEwZmU0MDVhODVlNzIxMyByZWxlYXNlMjYtbWFpbnQKKzcxNzM2IGQ3NGI5YThlNjZmNjAzNmMxNmI0NGQzY2YzNzM2ZDlhNDNjMDJmYjUgcHkzaworNzE3MzcgZDk5NTAzYjZmMjM4YWVjMjYyODM5NmVmYWU1YzQ5NmEzMzRmNDNjZiBweTNrCis3MTczOCA3NTU3NzE2YjZiMWNiOTRiZTk3NDliMGFhYzdhNGUwZTIwM2UxYjllIGxlZ2FjeS10cnVuaworNzE3MzkgNDhiZjQyYzJmZjdhODAzOGFiOTAzNGQ0ZjFkZTNiZDM1YjhiMGIxNyBsZWdhY3ktdHJ1bmsKKzcxNzQwIDdkMmM4MjIyNjljNzRjZjQ0ODRlMDFiNjYxMTkzZjE1YWE4YTdjZmUgbGVnYWN5LXRydW5rCis3MTc0MSA0MWE3NWRkOWRmNzhmNDU3ZGVhOGZmZDQyMDIxZmFjNzdlMTEwNjAwIHB5M2sKKzcxNzQyIGI3YjhmYmQwMTBjYTliMDI1MDZlNjUyMTgzZjY3OGIzYmUzODM2ZTQgcHkzaworNzE3NDMgZDUwZDRmMDljZGY3ZDc1MmQ3NGYwYjg2ZmZhMWIzMmFiZDU3NWYzMiBsZWdhY3ktdHJ1bmsKKzcxNzQ0IGI3YzQxMmQxYTVjYzQ2YjhlNjkzN2UxN2UzYTJmMDVjMTk0OTBhOWUgcmVsZWFzZTI2LW1haW50Cis3MTc0NSA2MDcyOWVlODQ4MjI1ODQ2MjdlZGNmM2VmOGIxYTY0N2MwMDIyZWYxIHB5M2sKKzcxNzQ2IGUyYzc4NWZmMGE1MGZmMDU1YWYyZWRlZDA4MWUyOTc3OWM3MTY4ZDggcmVsZWFzZTMwLW1haW50Cis3MTc0NyA0NGVmOGE3M2E4YjdiY2NjMjkyODIyN2NlMjNjYzY1MmQ2MmEzN2ZmIHB5M2sKKzcxNzQ4IDE3MzdhYTE1MTMxMDg2NzgzZjc4MzRlYjlmYjBlYjJkMTBlYTc3YzAgcmVsZWFzZTMwLW1haW50Cis3MTc0OSAzZjI5MjBhYTkxMGNiMzk0MzBlODNmZWU0NjFlMmFkNTMxMzQwZDY1IHJlbGVhc2UzMC1tYWludAorNzE3NTAgMTM4MDc3MDNhZmQwZjU4MzQ5ZTM4MjM4YzgyNDJmMDg0YjdjZDNhZCBsZWdhY3ktdHJ1bmsKKzcxNzUxIDAzOTc2YTEwODcwMDgzZGM5NWM5NzllN2M2MTVhYWJkYTQ0NjJiMmYgcmVsZWFzZTI2LW1haW50Cis3MTc1MiAwYjNiOGVkMzYyMjQ2NDA5NWU1Y2M0N2UyMjU1MTFjNzZkMzQ1ZGQ3IHB5M2sKKzcxNzUzIDJiMTdjOTk2ODk4MWIyMWNmZGY2MTA0ZTQ1NTJkMTQwZDVmN2U0ODggcmVsZWFzZTMwLW1haW50Cis3MTc1NCA0NTI3YzE1MmRhYTkzOWMyZWU1ZTRhNmIxZTUwNWQ1MDBmY2Y5NzViIHB5M2sKKzcxNzU1IDIyNzk2N2ZlNDRhNDI2Yzk0NDQyMTU1OGM5MWIwN2RmMzU4NWQzZTQgcmVsZWFzZTMwLW1haW50Cis3MTc1NiA0MmJmNTZlMzQ4MjU5NmJhNTA3MmIxZTViNjU2YzA4ODk3N2JhNmY2IHJlbGVhc2UyNi1tYWludAorNzE3NTcgODUzM2NmYzI0MjBhZGMxMzY2YTk0MDQyMGMxN2ZkZGE3NzQ3MzYzMSBweTNrCis3MTc1OCAwNGZmZTZiNjE3MDkxMDY3MmYwNWZkYTJjMTNlZmRhNWQ2MjRjMGUwIGxlZ2FjeS10cnVuaworNzE3NTkgY2RiNjAxNDQxZDA0NTUyMWQ4ZWQwYTIyOTZiNzI3MTNmNzk1YWRkYiBsZWdhY3ktdHJ1bmsKKzcxNzYwIGEyZDQyMzEwMTQyYmU4MTM4ZWE2MjJkZGFmZjM0ZTgwZDI1Zjk1YmUgcmVsZWFzZTI2LW1haW50Cis3MTc2MSBlNDIwMjBhNTIyMGFlOTliNGFmZmUwZWViNTZmNjM1NTljMTEwYTdhIHB5M2sKKzcxNzYyIDA1Mzc1YzJlMDc0MjQwMDZhNTVmMTljNTNmYWEwZGUwZjVhN2IxODYgcHkzaworNzE3NjMgODA5MWUwNTY2ZmUzMjBmMmM1ZjgxMzQxNjVjMjBjNThjZGM4M2JhYiByZWxlYXNlMzAtbWFpbnQKKzcxNzY0IDM3MDkzZTk0YWZjNzc4YzkwYjRiYTc1MDNiOGIwY2E3ZWZmY2E2ZjYgcmVsZWFzZTMwLW1haW50Cis3MTc2NSA5NmVlZDczODdjZWEzODkwZWI1OWI2YzUxMWNkMTc2ZDY1ODdlMzRlIHJlbGVhc2UyNi1tYWludAorNzE3NjYgODdmYjcyMTMyZDZiZGZhMTE1NzE5NjdhYmI0YjcyODlkMzYwMDNlMSBsZWdhY3ktdHJ1bmsKKzcxNzY3IDEzNzgxYjBmNzQ1YTYxODkwZTRkMDllNmIyNGVhMmY5N2I4N2Q1N2QgcmVsZWFzZTI2LW1haW50Cis3MTc2OCBhYTU0NGE1NDc1M2JhOGY2ODIwZTc3MjEzNDhhNjY2ZDdkMzkxNTgzIHB5M2sKKzcxNzY5IGJkMTg4ZmYzNDJhNGM2ODkxZTJjMGU3Mjk3ZTJlM2Y0NzIxZWQzODIgcmVsZWFzZTMwLW1haW50Cis3MTc3MCA3M2FhMzc1NmMwYjI2YjAxMTM5MjY1ODI0NGI3NGY1YzEzNDFmZThlIHJlbGVhc2UyNi1tYWludAorNzE3NzEgNDU1ZjQwZDE3MzhlOGMwNjkyNmE5YjdhZTQ5NzYyY2E1MDA1ZjkzYyBsZWdhY3ktdHJ1bmsKKzcxNzcyIDhmMjhjZTdiOGU2OWExNDE1MTk1YjRjMDViZWYzOWY0Y2Y4ZDVmMDkgbGVnYWN5LXRydW5rCis3MTc3MyA0MTI5M2ZhNmYwZGQ0M2E2OGY4OTg2NTY5ZGFhNDVmY2Q5M2UxNWFmIHB5M2sKKzcxNzc0IGQwYjEzMzYzYWEyMTQ1NmFlMDBhNzc4MGRlMzViZDRmZGRhYTFmYTUgcmVsZWFzZTI2LW1haW50Cis3MTc3NSAyN2FjOGM4NzQxY2Q1OTJiOTBkZWZlYjhhMDk3MTBjZTZmZDRhODU3IHJlbGVhc2UzMC1tYWludAorNzE3NzYgY2VlMWZjMDc2MzQ0M2I0ZTg3YmYxYTczYTM0OGE4MmM3NmJmODNmNiBsZWdhY3ktdHJ1bmsKKzcxNzc3IDljZWFlMjhhYjI3MDQwMTFhMWU5MGI4Mzg2NTQ2N2M5YmI2MTc1NzEgcmVsZWFzZTI2LW1haW50Cis3MTc3OCBkZWQ0NjczNTI1NTM3OWFkOGE0NGZhNGM4Y2JmZjllM2VmMGQwMTk0IHB5M2sKKzcxNzc5IDkzYzkyOWEyZmFjN2Q3MjI5ZWZjMmFlNzQ3YWQwYjc1MTcxOTJlOGIgcHkzaworNzE3ODAgYzhhNzU3MTBhYjI1MDE3MzBkY2EzMDNlN2EyNGY0Zjg4MzBkZmY3MSBsZWdhY3ktdHJ1bmsKKzcxNzgxIDcyYzk4YjRiZjBiNTY4MTkyYzM3YjUwZjVmNDlkODJiNzczYzk3NjYgcHkzaworNzE3ODIgNjk2ZGQyMjgxODQxNTYxZWZmNGVjMDcyZDdhMTdmY2NkM2NmNmNkNyBweTNrCis3MTc4MyBlZDNmNTFmMmFiZmJiNzI5Y2FjNjExMmI0YWMwNTNiMTAwNmRhY2FjIHB5M2sKKzcxNzg0IGE2OGUyZGM1ZjUxNDRkMjJkODg5ZGFiNzNiNDA5NjM4NTRmOTZhOWQgcmVsZWFzZTMwLW1haW50Cis3MTc4NSBkZTYzYjdlODUwMGRjMmY5MDg1NGNkMzU5MzM0NjgwMTVjODFiOWYxIGxlZ2FjeS10cnVuaworNzE3ODYgZjQ0ZDQyYTExYjliNDNhM2NkODkwNGMyOTcyZDk5MWIwMmE4YWZmNyBsZWdhY3ktdHJ1bmsKKzcxNzg3IDc3MzM2ZDgyYWI5NTBiNjhiOWU1YzJhOGY4NTljMTEwMDc0NmFmMjIgbGVnYWN5LXRydW5rCis3MTc4OCBjMzA2ODFjNjZiM2ZlZjI2NTRiNTI0ZGMyNzY2M2Y0MjUzOThjODBhIGxlZ2FjeS10cnVuaworNzE3ODkgYzJlNGE3YWQwNWYyYjQ3NTk2ODVkN2JmZmZmMDZmNDJlNDJlN2E1NiByZWxlYXNlMjYtbWFpbnQKKzcxNzkwIDQxNGJhOGVmYzgwNDZhZTRhZWVlNTE2MDY3YmE4Nzk4OGY1MjQ0MjIgcHkzaworNzE3OTEgMmIwNTdkMmI5OGViMDc0ZjJjMTFmMmMxZTM3ZTg2ZDk1MGQ1MGM1YSByZWxlYXNlMzAtbWFpbnQKKzcxNzkyIGIwZmVhM2FlM2I2ZWY1NjIwZDk2ODMyNDc5ODBmYzRlOWIzNmNkNGQgcHkzaworNzE3OTQgZjlmMjNmMzZjMzZjYThmNDFkMGVjNWU3N2E5ZDlkNDVmYjFjYTZlNSBsZWdhY3ktdHJ1bmsKKzcxNzk1IDc4YmZkNDQ4MTc2MzMxYzhiMjNmM2Y3Zjk5ZmEwMWQyOTUxMmMyNjMgcmVsZWFzZTI2LW1haW50Cis3MTc5NiBjNWUwZDliZWViZjkyMzA4NTMwNjcwMTVhYzkxNzE1NzIxYzgxOWE5IGxlZ2FjeS10cnVuaworNzE3OTcgNjE4ZDJlM2FjYTYyZWJkYTFmZTgyNmMzOTI0NWM5ZjZmYzE0ODhlNiByZWxlYXNlMjYtbWFpbnQKKzcxNzk4IDYxMTUxOGQ2ODBkZWMyNGFiZDJiZGZlZDZhZjQwNDcyYmI0MjdhZjkgcHkzaworNzE3OTkgZTk1OTVjYjVjNzg2MGJhZWJhMDNiNTUyMGRiYjY4MTk3MDgxMTY1ZSBsZWdhY3ktdHJ1bmsKKzcxODAwIDMzMGRiOTU0ZTU5MzRlMDliMmJiNjQ5Mjc2ZDY1NzdmYTVlNTZkMjAgcmVsZWFzZTI2LW1haW50Cis3MTgwMSBiNWRmMDk0ZDg5NDFkMmRhNDg5NmVjOWU4MDg2ZjRhOTliNjAzNGE5IHB5M2sKKzcxODAyIDQ0YThhNTI1ZWNlYjgwNjdmODQyMTFlYzA4ZjRlNzM0ODY1OThlYWIgbGVnYWN5LXRydW5rCis3MTgwMyA2ZjQyZGU3MmMyZGNlODhjYTEwZDYzYTU4NDA2OTY2YmRkMWVjYzJjIHJlbGVhc2UzMC1tYWludAorNzE4MDQgNTEzZGM2ZmE2MWMwYjcwYTZiNWRmMWZjNjUwYWM1ZTg3MjNmYWUyMiBweTNrCis3MTgwNSBjNmU4YzY1NzE1ODg3NmY3ZjIxMzk4YjJjYjQ1M2E1N2QyNTFkZTA0IHJlbGVhc2UzMC1tYWludAorNzE4MDYgOWJmNGIzZWIwNDQ3MjY5OTEzNTM4ZTY3ZDRjZTEzMTAzZmQ0M2Q2OCBweTNrCis3MTgwNyAyNGQ4MWZjYjBlMzMzNWYyZTJhNGUyZWE0MmQ1ODk0MGUxZDUxNzYxIHJlbGVhc2UzMC1tYWludAorNzE4MDggODU1OTdlNTU2NjhjZDBjOTM4YjJlNmJmNDkxYTMxMzE0M2U4Yzg5NSBsZWdhY3ktdHJ1bmsKKzcxODA5IDFmMWVjYTY4MTY3NWEzOWU1YTEzMjIwYmVmM2ZjMDM1YzIzYzcwOTQgcmVsZWFzZTI2LW1haW50Cis3MTgxMCAxYTEyOTEzODQ5Mjg5MzJkZjUzYjcyMmRlMDZhMGIwNTQzMjM2YmQyIHB5M2sKKzcxODEyIDJkMDliY2Y3MDM5NTU1ODQ1ZTQ0MmE1YzU4ODE1YzNiYmI3ZjJkYTMgbGVnYWN5LXRydW5rCis3MTgxNCAxNzAwNTVkN2I0OTQyYjIzYjY5YmIyZjgzNmE3ZTk2ZjI5M2Y1ZWQ2IGxlZ2FjeS10cnVuaworNzE4MTUgZmY5ZWRjYjM2ODc4ZWU4NjFlOTNjYWQ3YmFjZTlmZjZhZTJjYTUzZSBsZWdhY3ktdHJ1bmsKKzcxODE2IDYyOTJiZDI2MzJlMmJkZDdkNThkZWYwN2FmOWI3YzI0ZTE1NjE5YTAgbGVnYWN5LXRydW5rCis3MTgxNyA0MWJjMzNlZTE3MzA0ZmE2YjFlYmI2M2E0MmIxNWM4YzY1MWY3ZGVlIGxlZ2FjeS10cnVuaworNzE4MTggMzMwMTE1MTM3NDE0NzVjZGQ3MjA2ZGQzYjViZjg5OWRlYzE5NjQ3MiBweTNrCis3MTgxOSBkMjk1MjU0ZDg0YjdmNjVmZTdmNjFhN2E3ZDViYmE1ZTEwN2E5ZDVmIHJlbGVhc2UzMC1tYWludAorNzE4MjAgNWJiZDJlNmQ2MTI2MjBlNGZlZWUzMTIwZTFkMDdlNTkwNWM2MzczOSBweTNrCis3MTgyMSBhN2M0YTM3YzlkZjA3NzE2OGQ3M2VhY2FlNjhkY2IxYTg1MGI1MDQxIHJlbGVhc2UzMC1tYWludAorNzE4MjIgODI5NWI3YjI5NGJkNjJkYmJlZGQzZmMxZDJkYTMzMzlkY2ZjZTM4OSBweTNrCis3MTgyMyA4MzAwYjI3NGZkZDNjY2Y4ZDIxODExNTdjMmE4ODA3OWFjMTQ5ZWQ5IHB5M2sKKzcxODI0IDMzMzEyYjkxMDc3MzQwMWRkNTM1NGJkOWNkZTc2OGI1Mjc4MjA4YjUgbGVnYWN5LXRydW5rCis3MTgyNSBmZGUwMTVhMmM4YjNlYmUyNDk2YjQ1NmExZGJmMTk4Y2Y1ZTA1OTA4IHJlbGVhc2UyNi1tYWludAorNzE4MjYgMzJiMjQ3MzAwZmY5ZDMyMzkxOTFjMThjM2U1NDkwZDlkMWJhNDZmNyBweTNrCis3MTgyNyAwNzYxZWUyOGI2ZWQ2MjQwMmFmMGViZjU2YjVmNTY2YjMxYjVhNTBmIGxlZ2FjeS10cnVuaworNzE4MjggZDU1NzMyMGRlODU2Y2JiMjEzOTRkN2VjYTUxM2JhY2U1ZjMyNmRkNSByZWxlYXNlMjYtbWFpbnQKKzcxODI5IDA2ZGIxZDlkMjU1ZmY3YzdkNDVkNDYzYTViNjM2ZjA3YmI4YTZhMjIgcHkzaworNzE4MzAgMWZjOWI2NTA4NzIzMjI5MjUzNjQ0MDNkOTJjNjQ4ZjA5MmFlZTBhNiBweTNrCis3MTgzMSBlYzg0MmNjNjEwZTZmMTRmM2UxMmEyNWQyZjBkNDkzY2VjNGY3ZTI4IHJlbGVhc2UzMC1tYWludAorNzE4MzIgMTE0MDU5YzI2Nzk0ZjFhZDdjNDJlMWMxNTk2NmU5ODU5N2E0NjZmOCBsZWdhY3ktdHJ1bmsKKzcxODMzIGExYTZmNWQyYjNkY2I1ZTUyMzlhOGU0NGVhNGNhMWI3MzQyZDA2MzIgcmVsZWFzZTI2LW1haW50Cis3MTgzNCA1OWExZmI5Mzk1Nzc0Y2ViM2I3OGEzZjBhYTVlNTk2OWU4Mzc5NzNiIHB5M2sKKzcxODM1IDQ2YTMyZDQ0NjNjODNhNmZiZDAyN2ViNTQzMmViMmNlYmY3NDQ4NTggcmVsZWFzZTMwLW1haW50Cis3MTgzNyAxMzNjNjYwMjdmMzNlNGMyZjYzMTEzODk1ZGNiODlmMWQ5ZjM4MGRkIGxlZ2FjeS10cnVuaworNzE4MzggMzIyMjY3NzZmODY2MTM0NjgyODkyMjhjZDAyMDEyZjExYzUwMTFlYiBsZWdhY3ktdHJ1bmsKKzcxODM5IDU0YjQ0ODlmMWMyODRkNjEyNzU3MGNkN2M2YzI3NzcyOTNkOWNiZDQgcHkzaworNzE4NDAgZmE0ZjE4ZWRlMjYwYmE3OTIzOWZmZGZjZjM1ZGIwNDM4ZDdkYTg2YSByZWxlYXNlMjYtbWFpbnQKKzcxODQxIGE2NWUzYzA3MjYwZTllYjA3ODFkNTVhZGRkMTQ4NzAyOGM5Y2IxMTkgcmVsZWFzZTMwLW1haW50Cis3MTg0MiAxMTY3ODdmOWI5ZmNkYmY4MTIxNzM5OGMxMWE1NGE1ODI1MDZlMmE3IGxlZ2FjeS10cnVuaworNzE4NDMgNjNjYjVjOTFjZTIxNDhjNWQwNWZjZGEyYTcyNzY4YWUzZGI4NmE5MCBweTNrCis3MTg0NCBmZjdiNGU1ODJjNDkwODNmNzFiNDJiOWQ3MTQ2ZGJhMjI1MmNiMDExIHB5M2sKKzcxODQ1IGQ4ODAyYjA1NTQ3NDMwMjllMTU0ODY2MWFjY2MzOTJkMGEzNzJkZDkgcmVsZWFzZTMwLW1haW50Cis3MTg0NiA0M2U0NmU0ZTAyZjAzNjBiMzNkNzNmMGE4NjAxOTA0ZTM4YTU1YWViIHB5M2sKKzcxODQ3IGZiYjFkZjI1NDFjMzZhMDljZTliZTU3N2NhYjYwOTM0MmFkMzM2ZjAgbGVnYWN5LXRydW5rCis3MTg0OCA5NjkxZTczNDU5NjRkYTE5ZGY1MmZhODg5Mjc2MmYwZmMzYWNhM2Q2IHB5M2sKKzcxODQ5IDA5Njg5MjEyYjNlYjI4MTk0YWE4MTE4NjljNzg2MDAwYmYyMDQ1ZmMgcmVsZWFzZTMwLW1haW50Cis3MTg1MCAyZWY1NGU4YTQ0ZGQ0ODk5ZWQ5MWRhNWVlNmRiZTNkMDk0M2UwOTc1IHB5M2sKKzcxODUxIDAwYTkyNzgxNWRjZDYyZDQ2OTQ4YmM0OGMzZmRhMjNmNWEwYTQxOTggcmVsZWFzZTI2LW1haW50Cis3MTg1MyBkNTFlNGY2MmJjOGMwNDU1OGQyMDhhZjljZDQzMDQ1MTkzZTI4ZGJhIGxlZ2FjeS10cnVuaworNzE4NTQgMDJmM2Y4NWUzOTM2YjhjMDAwOGVhZGUzMzM2YzcxMGJjNGU2MTZlZiBweTNrCis3MTg1NSBjNjJjYzJhNTc2NGI2MzQyMmViNWQyNmIzNDVlZjkxMDE5NmUxZDM0IHB5M2sKKzcxODU2IGI1ZTJiY2JiZmE3NDAyYzI2OTQ4NGRlNzg2N2Q5MDljMWRkOWFjNzMgcmVsZWFzZTMwLW1haW50Cis3MTg1NyAwZjU1ZTA5YzE2YjU2ODA2MGFjMWIyYmEwMzY1Y2ZlNTVmZmNlZmQzIHB5M2sKKzcxODU4IDI5OGYyOGFmZjE4ZDIzOTQwYjk5Y2ZiODA4MjZhMjMxZDI0MDE3ZGMgcHkzaworNzE4NTkgYjJmY2IzZjIyNGRlMmZlM2FmMDdiMmM0N2E1OTZhZDAzYmNlZmIzNCByZWxlYXNlMzAtbWFpbnQKKzcxODYwIDMxODk1MTg5MGFiYjU3YzM5NTMwNDYyOWJkNTFiMjE1MTYyNmJiZmUgbGVnYWN5LXRydW5rCis3MTg2MSA2NDI5MTBhMDFkN2YzOTAwZjAwZDRjM2Q0YzIyZmIzZmZmZmU3MTQ5IHJlbGVhc2UyNi1tYWludAorNzE4NjIgMmUzNzE5MGY4ZWE3ZDQ5Y2FjYjg5NmE4N2QyNzdlYjdhN2MzYmU4YiBweTNrCis3MTg2MyBmZGIyYmU0NzFhM2ZkYmQwMzY4ZDBjMDA2NGUyNGRjMzg5NWFhNTBhIHJlbGVhc2UzMC1tYWludAorNzE4NjkgNWZkMGRhMmE5Nzc4ZTE2OGZmNWM3NGNiNDlmNWU1N2NlZWE5NGM2NyBsZWdhY3ktdHJ1bmsKKzcxODcwIGEzNGQ5NDVjMDdlZGIzZWNiZThmN2YwMDUwYzhhNGUzZGU0MDM3YmQgcHkzaworNzE4NzEgODBkYTUyNDY2ZmU4N2RlNWI2MzMzNTk1MTUwYzQ1MDU5ZjMzOGMyYyByZWxlYXNlMjYtbWFpbnQKKzcxODcyIGE1ZWM1N2U4NWY2NWMxOGNjMzAzNjViZTIzMGY2NDM1NjIzMmE0YTEgcmVsZWFzZTMwLW1haW50Cis3MTg3MyA5Zjk0MTIxOTI0MDJkOWY1OTE3NzNkNjg0N2E1ZjU5OTA4M2RkYzBkIGxlZ2FjeS10cnVuaworNzE4NzQgOTU1NmU5M2YyYWJiNDk5YjZmMzgzOWVmZWZhZjFlZTg3Mzg2Y2FhNiBsZWdhY3ktdHJ1bmsKKzcxODc1IDVhNDZhODIyMDZlN2JiZjM5ODQ1YWY1MjllZTM1YzBkZTE5NjgwYzcgbGVnYWN5LXRydW5rCis3MTg3NiBiMzY2YTQ5NmQ0OTllYjE5MTc3MGJiZWQ2Y2NkMDE5Mzc4NWIwYjdhIHJlbGVhc2UyNi1tYWludAorNzE4NzggODhhNzg4N2Q3ZmQ0YWY5NmMzODhiMzIzMTczYWRjOTM4Yjk3YTgwMCBsZWdhY3ktdHJ1bmsKKzcxODc5IGNlNDdkZWUxYjU0NDIzY2FjYTJiODQ1MDU5MDAwMDJmYTczOTlhZWMgcHkzaworNzE4ODAgYzU3MTA4ZGVmM2UzYmU5OTdiNDY0ZDU1MDc0ZTJjMmI2NGM4YzExMiByZWxlYXNlMjYtbWFpbnQKKzcxODgxIGQzNTMzN2Y2NTAxNTk5OWNjYzMzMTkwYjM5YmI1NWY2NDU1ZTE4MmUgcHkzaworNzE4ODIgYWQwYzI2OTcyYjIyMjE3NTlkMjdjMTUyM2QzMDlkZGJiMDY5ZTZmZSBsZWdhY3ktdHJ1bmsKKzcxODg0IGFkMDNiYjVkMGY3ZGJiYzVjZmM1NTQ4M2ExMDdiMjQ3YjUyNmY2YmEgbGVnYWN5LXRydW5rCis3MTg4NSA2ZGM5ODA1Y2IwZmE5Nzc5YWRhOWJmNmZmZTU1YWZlMGQwZGZjMDgzIHJlbGVhc2UzMC1tYWludAorNzE4ODYgM2NjNWZjMzMzMmY2YWJjY2I5OTMxMWI1MTk3MzM1ZmU4ZTczZmQyZiBweTNrCis3MTg4NyA4MDZiYzQ2NTFiOWRlMzVlZTYwZmU2NmM0MzQxYmEzYmQxZjY2YmNiIHJlbGVhc2UyNi1tYWludAorNzE4ODggY2FkYjY5ZTFkYzlhNjJmY2I0NzRjMzE1NmYzOGZhODcxNDc1MzkyYSByZWxlYXNlMzAtbWFpbnQKKzcxODg5IDE4MzdlOGUyMjkyNzc3MTExNTNjNGFlMDJlMGFkNGQzMzdhYmIwODIgcmVsZWFzZTMwLW1haW50Cis3MTg5MCAwNWRlODY0MDc3YmE5YjgzZTg5Y2Y5NTg3M2VkZTc1MTc1NDk2N2UwIGxlZ2FjeS10cnVuaworNzE4OTEgNTg3YzhlMzkxN2M2YTgyNWYyOTA4ZjU5Zjg1ODY1MzA3NjcyYTJhZiByZWxlYXNlMjYtbWFpbnQKKzcxODkyIGQzZmU2ZTk2NDg0Yzk3Y2Q0ZTAwNzQxYTM3N2YyNWM0MmI2ZDU1NmMgcmVsZWFzZTMwLW1haW50Cis3MTg5MyBlYWJlNmNmOTczNGM4MzJiMjk2YWY4ZDMzYTk2MmU3ZGE3YjQ2MTY2IGxlZ2FjeS10cnVuaworNzE4OTQgYTJlZjRkZDU1Y2YyNTYxOTRiZjhjZGY0Y2Y1OTlhYWUzNDYyZmQ2ZiBsZWdhY3ktdHJ1bmsKKzcxODk1IGYwOGY3NzYwODJlY2NiM2E3ZTNjMTM4ZDBkZmEwMWZjNWJmYzM2MjcgcmVsZWFzZTI2LW1haW50Cis3MTg5NiBmZjI5ZTk2NmFiYjY1YTkyMDYyYjg5ZTI2OGY0NzU2ODY0MDgyZjBjIHB5M2sKKzcxODk3IDJmOGU1MzVmOWE5YmZhNDQxYTczMWIzOGNhNjA0NTMzYzU5MjcwZGEgcmVsZWFzZTMwLW1haW50Cis3MTg5OCBiYjg3NmExMzNiZGYzYTdhOWRkNThjMjdmOGQ3NzI2MDM4ODFmYWE0IGxlZ2FjeS10cnVuaworNzE4OTkgNjc2ZGFhMWVmMjIzNzEyOWUzNjgwZTA0MjYyMmJhZmZlMjBkMmMzMSBsZWdhY3ktdHJ1bmsKKzcxOTAwIDMwNWZmYWRmODMxNWIzYjU4ZDMzNjAxYTU4Y2QzYmE3ZDM2YTdlNGUgbGVnYWN5LXRydW5rCis3MTkwMSBkZGNjMmE2ZmRlM2FlM2I5NzM2MTM0NGUyNTBiOTllNWU4YWZiZTA0IGxlZ2FjeS10cnVuaworNzE5MDIgYzc1NmYzMGJjNDJhN2U2NGMwNGM1NmY4N2I3ODA1MWRlNDcwOWU0ZCBsZWdhY3ktdHJ1bmsKKzcxOTAzIDg1MjQ2ZTRlMTQyODNlNmUxOWYzNDJjMDVkMDhhY2UwODJiYTMwMzcgbGVnYWN5LXRydW5rCis3MTkwNCAxNDY3Y2JjMjIzZTYwMDc5OTI0ZTcyMWFjZWQ4NjM3OWEyZWI5MmIyIGxlZ2FjeS10cnVuaworNzE5MDYgMjQ4MGVhNzUwNjhmYTIxZTRkMTFhM2IzYjFlZjljNmUxNmIyNGRiNiBsZWdhY3ktdHJ1bmsKKzcxOTA3IDcxYjdiNDkyMTUxMjFmNThkMDkxY2VlNmU1NzBmZTAxNTA1YTY0YWUgcHkzaworNzE5MDggNGFmMDZiMmJjM2NjMjVlYTZkM2ZiYjJmN2FlYmRiMDVhMGJkZDhjMyByZWxlYXNlMjYtbWFpbnQKKzcxOTA5IGM2YmY1MmUxNTNiNGEzZDIzYTEyZTUxNjA5MjYyNzUyMGY0ZDZjODEgcmVsZWFzZTI2LW1haW50Cis3MTkxMCA4NWNjOTUxMmI2MGM1Mzc4MTY5YTEzMjNkZDU5MWQ5NTE4MzU4NDYxIGxlZ2FjeS10cnVuaworNzE5MTEgN2NkMjNiMmVhYTkzYmVkZTI1OGU2NGFiZTc3Yzg4ZjIyNjgxOWY5YSByZWxlYXNlMjYtbWFpbnQKKzcxOTEyIDA4M2NlYTBmMjdhMmMyMTNhNzQ1MTNlMzlkYzIxZjllMzVhZTQ4YWYgcHkzaworNzE5MTMgMDA2YTQwYjVlMGMzYjVmOWVmMmVhZjRkYjk4MTczYzE0MDEzYjBhNCByZWxlYXNlMzAtbWFpbnQKKzcxOTE0IDE3OWY0NTkzYmQzZWQwODFmYjNlNzcwYzMzMjdhNDFiNDM4ZWNiMjUgbGVnYWN5LXRydW5rCis3MTkxNSAzZDA3YzliMjM5NTE0MmIwMmE1NDI0NzkxMzkwZmNjNDgwOGRjMmY1IGxlZ2FjeS10cnVuaworNzE5MTYgZjg4MzA2YzgyNjVlM2RkYzBiMjk4ZWJhMjVhNTU0ODE1Mzc2ZGFkYSBsZWdhY3ktdHJ1bmsKKzcxOTE3IDYyYjMxODUzNTllMzY1YTM3OGNmYmQ2OWE4YzY3ZThjZWFlMWE0ZDUgbGVnYWN5LXRydW5rCis3MTkxOCAzYjQ5ZDMwY2E1NDEzYmMwOWM3MzhhYTdjZjY4NDMwMTNmNmRjMDc3IGxlZ2FjeS10cnVuaworNzE5MTkgMmUyOTdiMWVjOTM1NjBmMTMyMGFjZGRlOTdmYTIwYjgzN2RiZmIyMSBsZWdhY3ktdHJ1bmsKKzcxOTIwIDY5NGRhZjhjZGY5OTM4YmYyYmVhOGMwYjM3ODc2ZDJhYzIzMjExYmYgbGVnYWN5LXRydW5rCis3MTkyMSA2MjU1YTcyYTRjMWU5ZWFiYjliMGU0ZWEzMGI5NzlkMDU1NGFhYjc1IGxlZ2FjeS10cnVuaworNzE5MjIgOGZiYTI1ODRmMzhiZWEyMzM1ZmRhMDhkZGYxNDYyYzIyZTJiZmZiNiBsZWdhY3ktdHJ1bmsKKzcxOTIzIDYzMjg2MjQyZGQ5ZGIxNDQ1ZTRmOTIzMDUyOTlhYjQ3MDIxZTY2ZWIgbGVnYWN5LXRydW5rCis3MTkyNCBjYTJmMWUzNGY1NjJkMWIyOTE2Y2E1YjBiYWE3YzFiZmFhNTk0ZjI0IHB5M2sKKzcxOTI1IDdiYjFhNGNkNWVlNWI4NmM2Y2ZkMmZkZTE1Yzk3N2I2YzRiMzg5OTEgbGVnYWN5LXRydW5rCis3MTkyNiBlZGQ4ZjBkNTJiMzhlMmU1MGNkNjAyMzAxOWExZDVkNWM2N2ZiNmJlIGxlZ2FjeS10cnVuaworNzE5MjcgNDU2YjJhMDZkMDE3MDBmNzA2NWRiYTE4NTUwNDlkOGY2YzBjNmUyYSBsZWdhY3ktdHJ1bmsKKzcxOTI4IGM3ZWE4MjZmYWQ3NzM0N2VlODUyZWU5NGYzMmE3MDhlZGNjODI2ZjUgbGVnYWN5LXRydW5rCis3MTkyOSAyNWMyMGE3N2YzNzMzZDk0MDBkOTFiMzVjMDc4ZDBmMDk4OGJhMzdhIGxlZ2FjeS10cnVuaworNzE5MzAgMGFkNDE1MDk0YTA1MDYxOGQ4NTgzNzlkMjYzZWRkNmQzODM1NzYxZCBweTNrCis3MTkzMSAxMjc5MTgxMjc4OGRmZTllYTVjNTNmNGIwMjE4MzUyYzQ4YTIzNzJjIGxlZ2FjeS10cnVuaworNzE5MzIgZWNhY2E3MTc3ZjY2OTYxYzY5NDEyZTUwZmE5MzA4YWU2YmI0Y2U0MiBsZWdhY3ktdHJ1bmsKKzcxOTMzIDRlNWFkNTY2YmZiYjVhOTM5YjI0ZWIzMjQwYmM0MDBkYTMyMzk3ZjYgbGVnYWN5LXRydW5rCis3MTkzNCBhMDdhOWI3NTlmMjdjMjU2ZmYzYzM1YzVjM2IwOGJjOTRmNGNkZDM5IGxlZ2FjeS10cnVuaworNzE5MzUgOWM5ODYwNTA3MjY1MDQ4M2U4MjRiZmM2ODBmMzg1MzI0Y2NlZmM5NiBweTNrCis3MTkzNiBmMTE0MmRlNDNlN2RlYThmZGYzNzJlZmJjMGViMTc5MDMxNzdhZWIzIHB5M2sKKzcxOTM3IDgxYWViOGJjNjU5ZDU3MGY2MzYxN2QxYjgwYWEyN2VlMjlhZWUyMDggbGVnYWN5LXRydW5rCis3MTkzOCA2OTQ3YmMzZGQ0MzMyMTY0MmZjMjhhNTVjY2U3MWQ0ZjhlNjMyYzk2IGxlZ2FjeS10cnVuaworNzE5MzkgMzBiMDNlMWRlYThiYjcxMjA4NzgxYzIwYzJhZTQ2MWExZjQ1MjI3NCByZWxlYXNlMjYtbWFpbnQKKzcxOTQwIDJjZGRhZjhkM2MzZTBjOTkzMTA3ZTM5NDU2NzBhYjkzZTU1NGZjMDEgcHkzaworNzE5NDEgYTNkNDhiMmU5NTdkZTk3MWMwOTU1ZjllYjMxMTg0MjUyNTFmODBiMSByZWxlYXNlMzAtbWFpbnQKKzcxOTQyIGVmMGFjNDI2OTkzNDBiNWQ4ODcxNWJlZjY5MTU2ZTQ1ZjM0NGFhYzEgcmVsZWFzZTMwLW1haW50Cis3MTk0MyA5MzMyOTdlYmFjN2JhYzIwZjlhYTYyZjlhMjNjYmMwMjBiOGI3MDkzIHB5M2sKKzcxOTQ0IDc1MDEwY2FlMDQ3OTAwNzY4ODJhZjI3OWI4YjQ0NWZiOTNjMzM3ODAgcmVsZWFzZTMwLW1haW50Cis3MTk0NyA3MmJkNDUwZDUzOWYxNTdlNjdlYjZlMWI3ZGRlMWVmNjNlM2I0OGE4IGxlZ2FjeS10cnVuaworNzE5NDggYzkyZTkzYTU0Mjk4YTgzMDRmMWVjZTE1NGY0ZDE1OWE2YWMyYzVjYSByZWxlYXNlMjYtbWFpbnQKKzcxOTQ5IDhmZGNkZjBiNTA4MGVhOTJlNWFlZDk1ZDgzZmJhMWQyMDlkYmMzZjIgcHkzaworNzE5NTAgOTEyNDM4NjU1ZjkzMDQwNDhiZjhjYjhjZWQ5MzNhZjVkMjNjNzZjYSByZWxlYXNlMzAtbWFpbnQKKzcxOTUyIGEzYTI0NmRhMTQ0YjdkMzZiYjJiYjdlY2ZjYWE2NDIwMmU4MTMwMzggcHkzaworNzE5NTMgOWRhMWNmY2QyYWNmN2Y2N2QyOTEwMjk0NjdkODE4NTUzZTJiMjI4OCByZWxlYXNlMzAtbWFpbnQKKzcxOTU0IDEzMzgxOWFlODBmYThhY2UxODE1NjNhOWEyZmMxM2I3OGMxMmJhYzQgcHkzaworNzE5NTUgMWMyZDExYTdlYjIzZjQxMjM0ZWYxNDIzMmE3NWQ1MGJlZjM0YWI3MiBsZWdhY3ktdHJ1bmsKKzcxOTU2IDE3MjkxM2UxNzAxOWVkMjk2MDE1Nzg0ZmI2N2ZmY2Q3ODYzY2Q0MjcgbGVnYWN5LXRydW5rCis3MTk1NyA3M2I1MDJmNTc2OTA1OWMwOTQ1ZGUzOGUwMjA0ODgyYjIyOGQzZWQ4IGxlZ2FjeS10cnVuaworNzE5NTggMDA2OTRlMGMyZTZiMmViMzFjYmZiMTVjZWI0NTc0MWQyMmUzNGU1MyBsZWdhY3ktdHJ1bmsKKzcxOTU5IDU5YzQxMTQzNzliMzRhN2I5Y2VjZmFjZDYwODkzOGFhODI2N2U3MGQgbGVnYWN5LXRydW5rCis3MTk2MCA2NDExMGMwYWQ1MzA1ZTdiNzI1ZmI5YjdhZjMwMmY5ZGFlZGE3ZWY3IGxlZ2FjeS10cnVuaworNzE5NjEgZGIwMzAxNmJmNjUzOWY0NmRkMDQ2NTRiNjdmNmU5ZDRhMzE4MTMzMCBsZWdhY3ktdHJ1bmsKKzcxOTYyIGExNWMyOGJmYmIzOGM4NmJiYjY3YWYzM2RlNjNlNjU2NTY0MjFhODcgbGVnYWN5LXRydW5rCis3MTk2MyA3NTk2MzM3MmI3MTQ5ZDk2NjE0YWVmMDk0NjY5ZmZhNDBjYWM2Y2ExIGxlZ2FjeS10cnVuaworNzE5NjQgNTlhMWIwMmRlOTA2NzEyMGYyZDQ0MDRhYjkxNDE2ZjlhYWQxMDhlNyByZWxlYXNlMjYtbWFpbnQKKzcxOTY1IDc4MzVhZGEzY2RhMmM2YWJkNmI4ZjUwYmViNWQxMTRmMDM1ODdkMzggcHkzaworNzE5NjYgMWE1ZDFkMWM5NDc4YTk0ZDM5ODg3NDg5ZDdjOGNiZTIxYjhhNzVjZSByZWxlYXNlMzAtbWFpbnQKKzcxOTY3IGY3NjU3MjEwOGRkN2E0NTI4MDZlYzUxYmZiMTc3Y2U0Y2JjNjkzYmIgcHkzaworNzE5NjggYjQ1YTMyMzU1ZDM3OGNjYzg4NDE0ZWY3NjNiYzBlZjFhZmRlYTU5ZCByZWxlYXNlMzAtbWFpbnQKKzcxOTY5IDAxYzMzNjNhMzU3ZjlmZjcxNjhiMWRjNjIzZGNjMjc2ZDliMTRlMGUgbGVnYWN5LXRydW5rCis3MTk3MCA0NjMzZjg1MzdiYjc3YzdmNTFjNGUzZGQ2NDVkMjE4NjdiMmZiZmVkIHJlbGVhc2UyNi1tYWludAorNzE5NzEgMzkxMjBjYzdlMzIxZWU4MDg2MDlkNTE4NDI1N2ZmZTZkZDA4YmExNyBweTNrCis3MTk3MiBmYjRiYjBhMzg1NmUxYjA0OTIyMDZhZDkxNDA5OTI0NDg3ZDEyZmJhIGxlZ2FjeS10cnVuaworNzE5NzMgMzU1YmViMGJkMDJiZWEzODdkY2IzOTcyYTA3ODZkZWQ1NmE0NzU2YSByZWxlYXNlMjYtbWFpbnQKKzcxOTc0IDcyMzc3MzA0MjVmYjM3M2ZkMmJkZWFjNTQ3OTFhY2YwY2QzYTExNTUgcHkzaworNzE5NzUgOTUxYTYyYjg2ZGU4Yjk5Y2U0NmRlZmI2NzkwNzcxYTQ1Y2ExNGEyYiByZWxlYXNlMzAtbWFpbnQKKzcxOTc2IGJmYjQ3YmMxZDA1MTE0NDE4YWQ3YWQ4YTYwNmFlYWI3OGRmM2E4ZjEgbGVnYWN5LXRydW5rCis3MTk3NyBmN2VjY2Y3NjljMWFlMmRmOWY1OGYwZWVlMjg4MzJhYzY4M2E5NTYxIHJlbGVhc2UyNi1tYWludAorNzE5NzggNzg1ZWEyOTlmZTIzNmRiNjEzM2Y0OTg3MzVjYzM4MjQ4OGQyZmJlNCBweTNrCis3MTk3OSAzMTYyZWIwOWMyYzNkZGE3ZGUyZTI0MTZmMDI5Y2YzMmYxYzYzZTE3IHB5M2sKKzcxOTgwIDAyMWMzOWEzN2VkZjc2MTVkYWNmNGRhNDAyMjQxYTNlNDJhODVkY2YgcmVsZWFzZTMwLW1haW50Cis3MTk4MSA1NGVlNmZkMTgxZjJjYTczMzU1NTIzYTVmZTY1NDhmYWZhYzhjNDUxIHB5M2sKKzcxOTgzIDlmNjBlZGJhNWFlYWJmZmI3MDM1ZjkxZTI4ZTNhYWIyNDIxYjQ4ZGIgcHkzaworNzE5ODQgYWJkYzE3NjRkOGU1YTFhZDAxYzdlYzgzMmU3ZGE4MDM0NTI1YmMwYyBsZWdhY3ktdHJ1bmsKKzcxOTg1IDA2ODhlOGIyNDYzMjZhMDY4MDYxZTIxNjM1YTZkOTZkMmY5MGVkNTMgcmVsZWFzZTI2LW1haW50Cis3MTk4NiAwYjE2NzRmMjdiNzBmYTA0Yzg1MTNjNjgyYWU0NzQ3NmNkODY5YjE4IHB5M2sKKzcxOTg3IDVkNGZjMTY2YTNkNDYxNDA2ODMwMGJlYTE0YTQ0ZWU3MDI5YjE4YzcgcHkzaworNzE5ODggNDU2ZTU4NDMwMjAyMDZjN2Q3ZjUzYTc2ODcyMjU4M2NjMjc1ZmJkZCByZWxlYXNlMzAtbWFpbnQKKzcxOTg5IGRlMWQwZjcxZTIwOWI1MmIwZDI2NTI0ZWE4ZjI3Yjg0NDE5ZjQ1OGQgcHkzaworNzE5OTAgZWNjM2ViMTU2NDg4OGM4NGE2ZTI1MTQ4NjdkYWU0NTVmNjQ1NjI0MiByZWxlYXNlMzAtbWFpbnQKKzcxOTkxIDM4M2UzMmFiNjA3YzRhYzFiZTM3NmY5Y2MzMDM0YmI1Mzg4YTNlNzkgcHkzaworNzE5OTIgZTBkNDVkMzJmYjgyNDQyNjg4ZjczODlmNDY3ZjQwYmEzNGFmNzJhMCBweTNrCis3MTk5MyAzNWQ3M2E5ODgwMzlmZDEzMzZlZjA3OTZlZmRkOGI4NzdhZGVlYzEwIHJlbGVhc2UzMC1tYWludAorNzE5OTQgY2FmMmI5MWVmMDZhNTljZjg0NGE5ZGYyNWZhNGUxMGNkMzNjZTZiNiBweTNrCis3MTk5NSBkMmNmZDNkM2JjNTQ4ZjRmOTVhZjc5ZWQzMTI5MTZmOTBjZmY3NDAxIGxlZ2FjeS10cnVuaworNzE5OTYgYzQyYjdkZDE1NTA1Y2U5ODE2MWM5ZWQzZGZjYmRmMDVkMGE5YThjOCBweTNrCis3MTk5OCBkMzFiZThjOWM4YTI5YmY5MWNlNzQzYjYzMjFhNTI0NDdkOGUyNmZkIHB5M2sKKzcxOTk5IDFmY2ExYzkzMjY5NjI1MTczZWYzOTYyNmZjYjE4YzUyYjU4Y2YwYTggcHkzaworNzIwMDAgZmI4OTk4MzM1M2FkM2MzY2Y4ZmRhMWFjMjA0YjRjOWVmOWY3NDRkZSBweTNrCis3MjAwMSBkMDU5NGU3YTQ1ZDYzNjkzNzJkOWU1YmI4YTViYjNhOTRhN2E3M2MwIHB5M2sKKzcyMDAyIDk4YWE2MzFkYWMyYmNkMDFkYzZkMjJmZmNlMDdlMTM2ZTdhN2M3NWIgcHkzaworNzIwMDMgNTUzY2FmNmJhZTQ3ZTEwYWRhOTQ1ZjU0ODU3OGRjYzA4MjJmZWYwMCBweTNrCis3MjAwNCA5NzNkMjRmNDRiMDdmNjA4ODYxZmE2NTQ1MzM1ZGU0NDNhMTA3NzI4IGxlZ2FjeS10cnVuaworNzIwMDUgMjkzYWRhMWRiZmRhZGUyNDUzZGFhZjIwNjE3YmU3MWY1YTA3YjQ2YSByZWxlYXNlMjYtbWFpbnQKKzcyMDA2IDE3NTQwYTE2NDc5Nzk5NTY1ODYwNWQwZTA0NDAxYmRkZWJiY2Q2MDIgcHkzaworNzIwMDcgZDA1MTM0YTRmMDJjZTU5Mjg4ZTk2NjFiNDM4ZDc2NmVlMThhMjdkNCBsZWdhY3ktdHJ1bmsKKzcyMDA4IGY1MjE1OWY4NzMzMmJiYmYyMThmMWE0YzdmYjAxZjA3NDg5ZTMyOTQgbGVnYWN5LXRydW5rCis3MjAwOSA1NzgxMjk0NGM5NjFiNzg5NDQ1YTZkZWY1MmYzMmE4MzliNzRiZDQ1IGxlZ2FjeS10cnVuaworNzIwMTAgY2MwZGZmMmJmMWMyZTZkNTNmYzQ2ZTYwMTZmZjIxMzQ5ZDgxYTUwOCBsZWdhY3ktdHJ1bmsKKzcyMDExIGJmN2YzNDA3MzQxOGJlZGEzNmY3Y2Y1YjEyNjI3ZGFiYTNlZWQ4M2IgcHkzaworNzIwMTIgMTFhNTQ1MmUzMzA1ZTYwNzRjNWRmMmJjYzJmYzcyODMwZWJhYzhkMSBweTNrCis3MjAxMyA5YjQ1MWZhNTg1MDNhNTM0MGI5N2E5NDgxYjVlYjgyYjU5ZTMxZTMyIHB5M2sKKzcyMDE0IGQzN2E0YzVkNmQyYjUzOGIxZjEzNDZkNjgxOGY3MjRjNjUyYzNhZGEgcHkzaworNzIwMTUgMzYyYjRhZTIxMjlhNGYyMmIwYzE5YTdjYmViNjhlNGQ3NzMyOTdiOSBweTNrCis3MjAxNiA4MDY4YWI1MTYzMmQ2MTMxZTYzM2RlNWJmYzRiNmU3YzQzMmI2OWI5IHB5M2sKKzcyMDE3IDc0MzIxMWI2MGM5NDY3ZjE4YTQ0YmQwYzk1YmExOTU2N2ZhZDM3NWEgcHkzaworNzIwMTggY2U3YzM1M2ExZTk2YmRhMDhjMGE5MTQxM2E2ZjBiNzhmNjJkYTExNyBweTNrCis3MjAxOSA3ZmFhOGE3Zjg2M2UxY2ZkZTFiOTBlNzExNzNmZTI3ZDMxYmJmZWI1IHB5M2sKKzcyMDIwIDk4ODg5ZWYxNTc5NTg4NGY0MmQ2OGI0YjBmYTBiNWI0Y2E3YmJmNDAgcHkzaworNzIwMjEgZTQ4Zjg2MGE1Y2FjMjBiNThlOTgxOGE0ZmM4YTVmMjhjMWJkOTE1ZCBweTNrCis3MjAyMiA2YmJkYTE4NTE3MzJlMTU1MGNlNjJkNzFhMTcxMDJmZmIxNTE4NjQ5IHB5M2sKKzcyMDIzIDIxODAwMDhkMDJlZWEyYzNhNzQ1ZjBlZjQwYWNiYTQ5OTYxODI2Y2YgcHkzaworNzIwMjQgZWE0ZTE5MmQ5NDE0N2I0OGE1MTdmNTQ2MzBlYWQ4NTFhODAwNzM5NiBweTNrCis3MjAyNSA0YWJjNGNhNDQ2MWZkYmVkMDE0MTFhOWNjZmU2Y2ZlY2Y3MTg3ZTcyIHB5M2sKKzcyMDI2IGQ1ODAxNzU5OTdjZDUwOWNhODIwMThkOWNhMWRkMGY4OWZmMTAzNTcgcHkzaworNzIwMjcgZjk0M2Q4MjRjOGMzNWRkNzYyZGMzYTMwOTBiMTJlYzY3MzBmYWE0YiBweTNrCis3MjAyOCBmMmQ3MTBlNDc5ZTJlZGE3MjFmMzE2ODc0YjMwZmY2MDczYWQ4MDg5IHB5M2sKKzcyMDI5IDcxYTJhYWQ1YmFkNjU1ZmU0ZTE2YmJmOTczNjUzNjdjODg1MzFjZmYgcHkzaworNzIwMzAgMjkzNTRjNDk1MGU0OTQ2ODNjN2E4NDc3ODM1NjcwMGE4MmY0MmQ4MyBweTNrCis3MjAzMSAwMWQwYmQ5NTBjY2QxMzQ0NTNkZTFkMThhY2ZmOWNhNjQ4OGY1NTI4IHB5M2sKKzcyMDMyIDQxZmExYTEwNjM3M2FkYjI1ZDM4OGQ4MTllNWIxOGJjOGE5MGExNjggcHkzaworNzIwMzMgYzI1ZTVhOTU1NGY1MzA5MDY2YWFmZWJiNWVmNDhmZTI3YzNlYjM2MiBweTNrCis3MjAzNCA5NzUwNjY3MmFmZTNmYjUyNDJjNTg4M2E4ODQ2NjEwNmJiNGRiYTkyIHB5M2sKKzcyMDM1IDJjZTI2YzQ2NzljYjk3NTgzYjIzZmUzMmMyYjI5MmU2ZWQ4NjBjYTMgcHkzaworNzIwMzYgYzZjNGMwNjNkODc0MGVmMjUyMDFmYTkzYTg1MjJlODIzY2U5OTE0MSBsZWdhY3ktdHJ1bmsKKzcyMDM3IDllMDk3ODNjZTIyODhkZWZhZDEwMmZkNDIyMjJhY2QzZjg4ZDVjZmIgbGVnYWN5LXRydW5rCis3MjAzOCA1ZDc1MjAzYzg3MTM5MmNlZmI2YTMzZmEwMDUyMjY5MTljYTFmZjgzIGxlZ2FjeS10cnVuaworNzIwMzkgYjRlYmIzMDBlNjExOWMwZmJmYzcxY2M2NjdiMWVkZTM4N2Y2NThiMCBweTNrCis3MjA0MCA0YmRkODQ3YjU3YzI3YTI1YTJlZGQ2N2RmNGRhNjRjNDJlNGIwZGRhIGxlZ2FjeS10cnVuaworNzIwNDEgMWY5NWJhNGQxZWNiMTg1OTg2MjE1YzE4ZmJmZmQ4Y2FjMThkNWNlNiByZWxlYXNlMjYtbWFpbnQKKzcyMDQyIDFhNDUxZmY2NTgzYzU0OGY4YjA2NjQ3MTM1MmU0NDUxNjY3YjQ1ZGUgcHkzaworNzIwNDMgNzhkZmJhZjYzYjE3YzkzOThhMTQyMmMyMWMyOThkM2E4NDI0NWUwYyByZWxlYXNlMzAtbWFpbnQKKzcyMDQ0IDRiNGI1OWYyNzhiZjMzOGNiMjUzMjI2ZGQ0YmQ4MGUyZWQ0YjJiNzIgcHkzaworNzIwNDUgYjBjY2YyYWNmYTFlNjkwODA4OWVmZGI5Y2IwNjIxNmIyOTU0N2E1ZiBsZWdhY3ktdHJ1bmsKKzcyMDQ2IDU0Mjc5MTYzMzg5ZDQ1ZjQ3ZWM1YjkyN2FhNjllYzc4OTYzYzRkOGEgcHkzaworNzIwNDcgODQ1MzdkZWY0NTUwNTAxOTYxMWRmOTNkNWE1OTdlOGZmYjRjNjcxYiByZWxlYXNlMzAtbWFpbnQKKzcyMDQ4IDdjMzk1NzRhZDAzNzU0MTZhMmFhYWFhNDI2NGFlNTBkODRlMGFlZjAgcmVsZWFzZTI2LW1haW50Cis3MjA0OSA3OGZkMTVlMDUyNTg0MDcwY2EyY2UyZDJkMWI5ZTA5OTQwZjU3OWYxIHB5M2sKKzcyMDUwIGU1NmZkYmE2MWU5NzVmMTE4NDkzMTY4MGI3OGYyMmNhOWQ3MTZjZmYgcHkzaworNzIwNTEgMzg1MjJlYTJhZGQwYTg3NjI2ZTMxN2Q5Y2MyY2QzNjg0ZGE1YmI3YSByZWxlYXNlMzAtbWFpbnQKKzcyMDUyIDFjMDYwZDVjNDdjZjBhZWRhYzdjN2U0ZjJhYTUwZDdkZWE0NTg4YTUgbGVnYWN5LXRydW5rCis3MjA1MyAyYjM5NDVkNzU1YTdmZTYxYjc4ZjVkZTJlMDkzYjYyOWU3ZWQwNTNjIGxlZ2FjeS10cnVuaworNzIwNTQgMDE5MjQ0ZjRiMGQwZDBlNWQ5MzJmNmU1NDAxYjExZTRkYzgxM2M2ZCBsZWdhY3ktdHJ1bmsKKzcyMDU1IDQyM2Y4ZjliMDdiMTRhODU0NGM1ZmYzMzA5YTZkMjg5ZGNkYTI4NGEgcHkzaworNzIwNTYgZDliOTQyMmI0MDljODk4NDAxZjk4MGZkYzhmMzRiYzkxOGIxYThmOCBsZWdhY3ktdHJ1bmsKKzcyMDU3IDk3Y2ZmNTkzYTI1N2U5ZDViYTU4MWY1OWRlNGExNmZkN2IyZmE5MzkgcmVsZWFzZTI2LW1haW50Cis3MjA1OCA2ZjE1ODhmYjc1OTVlMWIyMGZlNmQ2ZjVjNzg1NmU1NDgxMGIzODUyIHB5M2sKKzcyMDU5IGIwYWU5ZmZjNzc3OWZkNzUwM2RjNGZiZDQyMTE1ZThjMzA2OTNmNWUgcmVsZWFzZTMwLW1haW50Cis3MjA2MCAzMjQ2MGIwNGU3YjZlMGQ1MDc3MjkyYTc2NWNlYTViODk1MTNhZDFkIGxlZ2FjeS10cnVuaworNzIwNjIgN2IyMDZlMmMwMDkyYzRiMmJiODFmZjM5ODQxM2Q0NDg5MDliOGZkMyBweTNrCis3MjA2MyA0YWYyYmRjOWIxYjczNTU3OTVmNjk3NzJkYTRjYjgzMGNmYmRlMjJjIHJlbGVhc2UyNi1tYWludAorNzIwNjQgY2FiY2VmN2U2ZjI1NmNkMTgyNThhNTFiNTUwNmYyNDk5YTg2MTk2OCByZWxlYXNlMzAtbWFpbnQKKzcyMDY1IDFlYzRiZjNkZGRhNmY1ZWQyOTNhOWI5YmRkZDkzZjU3NjljZjRlZWQgcmVsZWFzZTI2LW1haW50Cis3MjA2NiBkY2JjMjIwM2JkZjM2Mjc2YjJjOGQwNzE2OTUyOWRlZWZkNzA3ODIzIHJlbGVhc2UyNi1tYWludAorNzIwNjcgZDY1ZGIxNjllM2FkNzE1MTZlMDRhOGVlYzdiYmZlM2NlNmJiN2YyZiByZWxlYXNlMjYtbWFpbnQKKzcyMDY4IDNmMTVhMDZkMDA0NzNhYzk0NjMyYTM4ZjEyNDRlYjRiZjlmYjRkZmQgcmVsZWFzZTI2LW1haW50Cis3MjA2OSBiZjA1MjIyYzA3NDAwZTIxYjYyZGU5MTBlYzZhYThhZGViNmNmZGU4IHJlbGVhc2UyNi1tYWludAorNzIwNzAgZjdhMzllNjE5ZTBhMWY2MmY4NTUwYzUzMDQ0NmYyNmJiNTU2NTAyMiByZWxlYXNlMjYtbWFpbnQKKzcyMDcxIDAyZDZmM2E2OTc3Zjc4YjU4ODVlMWUyZDQ0OTgxMTAxYzA3NWZmY2QgcmVsZWFzZTI2LW1haW50Cis3MjA3MiBmMjQ2NzE1Mjg5ODBlN2MzNDMyNzA4ZTE1MjgxYzIzYjkzYmRmYzdlIHJlbGVhc2UyNi1tYWludAorNzIwNzMgNzE0Zjk1ZWE2YjhmNmM4Yzc4ZWU0Yjg5N2JkOTBlMjBlMGI2M2Y3YiByZWxlYXNlMjYtbWFpbnQKKzcyMDc0IDM2ZWI1MzdhYmIxNzkzNjJmNGFmZTNiNGUxNjhjZWFiNzBjNTc3ODMgcmVsZWFzZTI2LW1haW50Cis3MjA3NSA1MDNmMGY0MWYzNWY5MWFmNDI1NGEwYTRhODg5OGJkZWEwZWJkYmZjIHJlbGVhc2UyNi1tYWludAorNzIwNzYgYjI4ZGRlYmJkODM1NTc1OTg5Y2U0NTM1MzIxZjQxMWIyMDJjNGJhMSByZWxlYXNlMjYtbWFpbnQKKzcyMDc3IDZmMTBkNTI1ZTNiODRiNTMwMmE0N2I1YWFiNzQwNjk2NzNjN2JjYjggcmVsZWFzZTI2LW1haW50Cis3MjA3OCAzMTY2ZGVkNmJjNGEyNmMyZDE5YTA4OTQ2ODkxMTFjMjc1M2E4ODM2IHJlbGVhc2UyNi1tYWludAorNzIwNzkgOWRjMzRlZjIyNzM1MzgyN2E0MzdhYjE0NGE5Y2FlOTk3YWFlOTJkNSBsZWdhY3ktdHJ1bmsKKzcyMDgwIDkwMDBmOTY2Y2NiYmJmMDM1ODVmYmQ0ZTQzMmJjOWNkYjAwMDMyNmIgcmVsZWFzZTI2LW1haW50Cis3MjA4MSBlMjg0M2I2NDE3NWVjZDY5NGYwZGU3OGYxZTE4ZDI0M2UxY2FlZjg1IGxlZ2FjeS10cnVuaworNzIwODIgYzhmOTQwMDdiMWM0NmUwZTE5ZTNlMDNhMjM3NWNjZGExNTZmZTM0ZiBweTNrCis3MjA4MyAyMzJkMjI1MGQ3MDM1NWRmZDMwMzFkZTUwOGQxOGM4N2ZiNzE5MDJiIHJlbGVhc2UyNi1tYWludAorNzIwODQgMDI1YmExMmM3ZGE1NDE4ODA4ZjA0ZjdmZjdkNGNiNzQzMGIwYzMxZCByZWxlYXNlMzAtbWFpbnQKKzcyMDg1IDc0NTkwMjNmZjg2MWFlNWZhY2ZhNTYyMWM2OTBkNWQ0MGExODAxZjAgbGVnYWN5LXRydW5rCis3MjA4NiA3ZmRhNWFmMmFmN2QxMGM2NmRkNjY0ZDg2OWE2YmEzMmFmMzJmMmQ2IHB5M2sKKzcyMDg3IGEzOGQ2Y2Q5YWE2MzY5Y2ZmZTMyZjBmMzJjMjY3N2ExZDVhYTYxNTEgcHkzaworNzIwODkgMTQ2OWZiMWFlYTkyNGRkY2ZjOGY2ZDcyOWIwNDNhM2NjZmZmNmJjOSBweTNrCis3MjA5MSAzYjRjZWE0M2Y5ZTYzOTkyYzIxZGQ5MWZmOGE5MjAwMWIzNjJhNzZhIHJlbGVhc2UzMC1tYWludAorNzIwOTMgODE3ZDhiMjhjZDZiM2UyNjMzNjZkNmY1MmNjNmFiNDRhNjE5MzI2MyByZWxlYXNlMjYtbWFpbnQKKzcyMDk0IDljMmFjMWVmM2E2ZmU0ZDdmMzdhMzI1MTZjNmZmMmU4MGE5ZmExNzUgbGVnYWN5LXRydW5rCis3MjA5NSBiNDA4OTQyZmI0MzUzOThlOWEyMWIyNjgyZDEzMzQ3NDBhOTBkZDUwIHJlbGVhc2UyNi1tYWludAorNzIwOTYgNjliZWEyNmVjODdiOTkzN2U1NjU4N2Y0NTE2ZGFhNWQ1MTE4MTBiMSBweTNrCis3MjA5NyBjZWE2NDFmZjQ1MzRjMzkwZGJhNDMyOTAyYmNhM2I0YzQ2ZmMyZDZlIHJlbGVhc2UzMC1tYWludAorNzIwOTggM2RmYmFjNzk5Y2Y1MWM5MWJhMDlkNjJhMGI4NzM3NGU0ODEyMWI3YiBweTNrCis3MjA5OSAwMjA2ODg3N2MxOTBiM2Q3NzlhYWM2ZjNiNGQwNTIwZDY2NDUzZTI1IHJlbGVhc2UzMC1tYWludAorNzIxMDAgNGVmN2Y5M2Q2MWExYThkNzA1ZjZlODhiYjVlZTVkYzNjZGEwNzE5NSBsZWdhY3ktdHJ1bmsKKzcyMTAxIDg2MTdlODEwMTZiNmIwYzFjODlkYzk0M2NiYzdmMDQ2NzM4ODc2YjEgbGVnYWN5LXRydW5rCis3MjEwMiA1ZjgxYzQ1YmRmNmQxMDE4MDgwNmE0M2I2MWM5NTM4NDY2NThmMjU0IHB5M2sKKzcyMTAzIGJhNjM4ZDNhNDlkMTVmNWRmNjk4YTVkY2ZlNGE4MTExYWIxNjczMzYgcmVsZWFzZTI2LW1haW50Cis3MjEwNCBlOTVjODc4YWM3OWFlN2Q3OTk5NjM1N2Q0N2UxN2EwNGZlYTg1Y2NhIHB5M2sKKzcyMTA1IDczNzAyYWJlMWNiOTcxODQ4M2I1MDMzYzRhMzdmZjVhZjFkODdmMTYgcmVsZWFzZTMwLW1haW50Cis3MjEwNiBiODYzM2M3ODkzZmVmNDAyZWQ0NjY5YmUzNTdjNDg0MzJiMDEzZDg1IHJlbGVhc2UzMC1tYWludAorNzIxMDcgMmVmMmNiNTc3M2ZlMmU0ZWFlYWRjZGI0MThiZWRkODY1Njk5ZTUyMCBsZWdhY3ktdHJ1bmsKKzcyMTA5IDM3NTk4MzliOWZhNTQ4YmNlMGQ0MDBiY2VhMmVmOTFmYWI4MTAwZGUgcHkzaworNzIxMTAgMjE4MDMwNzViNDExMTU3ODA2ZDc1N2ZmNDllZDkzOGMwZDFiODMyNCByZWxlYXNlMzAtbWFpbnQKKzcyMTExIGFlN2Y4MmJiZjE2YzhlNmRmM2FkMzAzMmY4MDQ3ZWJkMThkYmE1MDYgbGVnYWN5LXRydW5rCis3MjExNCBhMzgxNGRjOTliODBkMWMyM2Q5Y2RlYzhjZDVmMDk3YzYxZjM4NDg5IGxlZ2FjeS10cnVuaworNzIxMTUgM2Q2YmM0MjY0NmI1MWUwYzJmM2JkMzIyMDA4ZjA2ODA1NWNjMjRlNyBsZWdhY3ktdHJ1bmsKKzcyMTE2IGM4NTVkZjdjNmJiNTkxMDUwYmM4YTAyMzE4M2U1NzVhNTM1YWQ0NTkgcmVsZWFzZTI2LW1haW50Cis3MjExNyBjY2Y3ODUzYjA3OTMyNDRiZmZjNTQyZjhkNGVhMjc2NmMzNTMyY2MzIGxlZ2FjeS10cnVuaworNzIxMTggNjQ3YTA0MGRmNGQxMWNkNDcxOTk5OTBkM2EyYjJjMmEzMWNmNmQ2ZiBweTNrCis3MjExOSBhM2ZjY2NlZTg5NTdhMGU2YTFhNGQ1N2JiYWIzNzc0YzUzOTEzMjdkIGxlZ2FjeS10cnVuaworNzIxMjAgNDJlZjc2ZjU0NGZiZjIxYjZlNjM0MDMwNTllNjMyMDA1NDNmM2RmOSByZWxlYXNlMjYtbWFpbnQKKzcyMTIxIGZlMDYyMTg3NjI0Y2JlNzNjMzE3N2Q2ZDAzMWQ2ODI3ZTAwZmUyOTggcHkzaworNzIxMjIgNzYxN2ZhNzE2NGRlNmRjNzE0MGFiOWU5YWQ4YjBjMTg2YzE2MzFiMCByZWxlYXNlMzAtbWFpbnQKKzcyMTIzIGNjZWJiYWQ1ZjhkZmZlOWZkOGRiZjFjNjk1OWUyMjhhYzZhZmNjMzEgcHkzaworNzIxMjQgOTNmZTYxMWNiZDNhYTEyZjFmZGZlMGUyMTNjNTI1MzI4MmNmNTA0MSByZWxlYXNlMzAtbWFpbnQKKzcyMTI1IGIzOWNiMjkyMTk0NTczZDFiYjQwYTM4ZjFjZmY2NzJmMWQ0ZjgxNTYgcHkzaworNzIxMjYgNDc2MjM5NGZjMjZjNTJjMTliOTMwMGY4MDQ4OGQyMzZiMTVlZmVhYSBsZWdhY3ktdHJ1bmsKKzcyMTI3IDVkOTc3MWQ3Y2M0NmM3ZjI4YjQ2MGMxNmNlZDAxZWM0ODJkYmQ3YjEgbGVnYWN5LXRydW5rCis3MjEyOCA4YTg1OWFjN2U1YjgxZTE5YmVjY2FlMDZkZDRmYzk1ZjM0NTU5ZDIyIHJlbGVhc2UyNi1tYWludAorNzIxMjkgZTI3NDQ5ZGU2MWRiNjQ4YzU0NzcwYTZjODgwYzAzMjY0YWMwYWM3MiBweTNrCis3MjEzMCBlODk0NDMzYzY0NjQwZjE5Nzg3YzA2ZGNhNWE3YTk2MTY0MDFkMjJkIHB5M2sKKzcyMTMxIDI3YzZiNjNkMWRiMzU1ZjY4NzcxNzVkM2RjMTc2YzkwYTdkZjQwMWYgbGVnYWN5LXRydW5rCis3MjEzMiA0MTEzNzRjNWFhNDIyNzhkMzBmMTZhMDcyMTFiYWRhZWI1ZjVmMjI1IGxlZ2FjeS10cnVuaworNzIxMzMgOTRjZGZkMDdkNGY0OGQ3Mjg1MjQ4YzdjMDNiZTBlNDhkNWY0YmE3MyBsZWdhY3ktdHJ1bmsKKzcyMTM0IDc5ZGM4ZDU4OGViMzA2NmMyOThiZjQ3OWU5MDdhODU3YWFlYzU5NjYgbGVnYWN5LXRydW5rCis3MjEzNSBkNjgyYzkzNDY4NDgwODgzMjgyNTg0MjQ2MzY0NGMyYzkyYjZmMGEyIGxlZ2FjeS10cnVuaworNzIxMzYgMGYyYjMzNTY2OGVlYmM4ZmRhOWEzYjEyMDg2MGJhMDMxNThlODgzMiBweTNrCis3MjEzNyAzNGU3YzFiMTQ0OTUwMWExODNlMWQ4YjFhMThkZGU4NWJiOThmODU5IGxlZ2FjeS10cnVuaworNzIxMzggYTFlZmFmMDE1MTAwMTc0NzBiZmNkYWVhODE0MWNjMTRjZWY1OGZiYSByZWxlYXNlMjYtbWFpbnQKKzcyMTM5IDQwZDM0MzFkYjI0MDg1NWM0M2ZiNWFiZGE4ZTFmMjg3NzZiMTFiYjQgcHkzaworNzIxNDAgMmNkZTBkMDAzZmZjMDNlODAxMGExYTZkYTFmZWZkNzE0MGNmZDhkZSBweTNrCis3MjE0MSBkNjY4OGVkMDQwY2YzNmI0Y2MyMTZmNjRjMzU4MTc3NWFjYmM2ODhhIHJlbGVhc2UzMC1tYWludAorNzIxNDQgYzRhMWM0ODg0MDU2ZDQ5YjhkODFlYWFlYTg1ZGVmNzk4NGQzYWUyZiBweTNrCis3MjE0OSBhYmM4MGY4YjBkZmRjMWZmZGQ1YzhkMWZmMDBkMjc0ZmQzNzVhYjQxIGxlZ2FjeS10cnVuaworNzIxNTMgZWQ4YzEzOTVkMDMzMGNkZjc0NmEyYjVlZWYyNjFjNDdhNWI3YzBmNCBwZXAtMDM4MworNzIxNTUgMjk2NTZhMDNjY2UyZmE0YzEwNGQ4MDgyOWYxZGNiZGE4NGYwMjk0NCBsZWdhY3ktdHJ1bmsKKzcyMTU2IGJjNjBkZTIzMjIwMzFjZWQ1YjQ3ODk5MWY3YjJhMDU3MzNlMjczZTMgcHkzaworNzIxNTcgNGI4NmU1M2Y5MDA2ZjYxNzJhOWI5Y2QyNmQyNDQ2Yzc5MzQ4MWNmNiBwZXAtMDM4MworNzIxNTggYmRhYjdjY2RjN2I0ODY0MTFjZDQ4NDY4YjJmZWFlYjlhMTlmMTM4OCBwZXAtMDM4MworNzIxNTkgZTdhOWUyZmQ3MTNmMDI0MTcwYTg0NTE2ZDM2YTk1NTI1Y2RkNmQ2NCBsZWdhY3ktdHJ1bmsKKzcyMTYwIDA5MzVlMjRjODFjMDhkNWRkYjc2MjczNDAzMzMyZDkwNjFiM2QyNjAgcHkzaworNzIxNjEgZTA4ZTgwZTc2OGMxMWYwOTRmMWI0MDcwNzM5NTM0MjFiZjZhMTg3MyBweTNrCis3MjE2MiBhODBiM2JiNGQxYjBkYjI2NTY4NzZiMWUzZjAzNGNlMTEwMzQyMWYzIHJlbGVhc2UzMC1tYWludAorNzIxNjQgNTRjN2JhM2RkZmM2NTZlZjFkZDM5YmVmYTQ3M2JiMzQ3ODE2MWRlNiBwZXAtMDM4MworNzIxNjUgNjBkMGYzNzNhODk0NmEyMGEwZDAyOGI4MDRkYmNlNGQ1ZDI1YmZmOSBweTNrCis3MjE2NiBhZWI5MTQxOTNiNDVhNjBhMWQ3ZGQ0ZjFhYTMxN2QxODI4OTQyZTU5IHJlbGVhc2UzMC1tYWludAorNzIxNjcgODU1NDI3MTVhMjQ5MGJkNjFiNGU1ZDYwMzE4YzRmNjE0NDVlNDZjNyBsZWdhY3ktdHJ1bmsKKzcyMTY4IDYzNDgwYjkyYTVlMTI1ZjhkOWJmMDMxNjdkOTNhNWEyODhjMTA2YjIgcmVsZWFzZTI2LW1haW50Cis3MjE3MCA5NmMwNGU2YTZkODgyZDM2YzUyMDc1NGExN2FmZDFiZGY4OWI0YzE2IHBlcC0wMzgzCis3MjE3MSBjYzY5ZDNkZmY4N2EyMjJhYTc1ZWE0NDlmNGNkYzJlNGJlZDUzODZhIHBlcC0wMzgzCis3MjE3MiA1YzU1YjljODA4NDZhNGQxZmEzMTQ2ZWVkMjZlOTEyYjI0ZDJhZDUxIHB5M2sKKzcyMTczIDk2M2YwZjUxOTcwOTU1ZWM3NDQyMzAxZjlhMGM5OWMwNzk5ODkyNjcgbGVnYWN5LXRydW5rCis3MjE3NCA5ODY1MWU0ZjY1ZmU1OWFhMDc1OWNkNTlhMDgwNmI1NDc5NjY5NjViIHJlbGVhc2UzMC1tYWludAorNzIxNzUgYmMwNGNlYmNhN2U2YjQyOTgzY2U3ZjhkMDFlODg3NmQ5MmFjYjExYiBweTNrCis3MjE3NiA4OWQ1ZWY4MmMwMDY3NzBjZjNiZjY4YWYyNGNkZDQ1MmZlZjE3OGFiIHB5M2sKKzcyMTc3IDAxYWVkNDgxOTZiMDI4ZWI5MWE4ZDc4Nzg4MDUwZThjYWFiYTI3ZGYgcHkzaworNzIxNzggNDA5NDQ4ZDQ1NWUzZTQyNjBlYWZjOWM3MTExYzZjZTVjMWVlODQ2NiBsZWdhY3ktdHJ1bmsKKzcyMTc5IDk2MGVmMDBkNTIxNDE3NzlkODI0OWRmYWRiYjM2N2UyZjk4YWNhOWQgcHkzaworNzIxODAgYjE4YmQxYTQ5NGM3MWYwNTU5NjI1NDQxZDY5YjA0NjM5ZTgyMWJhNSBsZWdhY3ktdHJ1bmsKKzcyMTgxIDIyODAzNjVlYWE3MmMxMDc0NmQ3NDNiZjcxZDBiODQ2NGUxNTZlODUgcHkzaworNzIxODIgOTUwNjFkYTA2Y2I4NDViNzkwM2Y0YmI1OTRjNmFkZDhmMDA1ZmI0MyByZWxlYXNlMjYtbWFpbnQKKzcyMTgzIDg5NjNjZDg1OGFkNjEwNmE2M2M1MzA3ZmVlMDM5ZWE0M2IxM2Q5ZDkgbGVnYWN5LXRydW5rCis3MjE4NCA4ZmIxOWNhNjJlNzBkZmM1Zjk2NzllZWM3Yjc1M2VkNjkxNzkxOWFiIGxlZ2FjeS10cnVuaworNzIxODUgMTM1NWRhYzIzOGZlY2FlYjgyNzMxYzE2ZjI3MWEyYTAzMTMwMzY4ZSBweTNrCis3MjE4NiAwZDgxN2U4ZWQzZWJmOWRmN2FiYWZmYTA5MmFiYWI1NTQyMTRiZjg3IHB5M2sKKzcyMTg3IDQyZDI4ZTVkYzdjYjE0Yzk0NTBjMmY2MmExZGI2YjVmNDExMDc3NWMgcHkzaworNzIxODggZWI4MTE1YWJmZjVlNTUyMTU0ZmRmMGZhMTA2NjFiODUzNTA1MWZjZSBwZXAtMDM4MworNzIxODkgMjNiYzRiMzkxYzEwMjI5YjY5NDE4YTE0MGM2ZjQzZjE4OTQxNTZmNiBsZWdhY3ktdHJ1bmsKKzcyMTkwIDBjOGJmZGRiZmNhMjY2Njc1ZjNiZTFjZDQzN2MwMWMyYmJlYWRmMTkgcmVsZWFzZTI2LW1haW50Cis3MjE5MSA5ZDg0MGE1OGEwZDVkMWI2YWJjOGZlMmM1YTYyMGI4N2IzYzMxZmM2IGxlZ2FjeS10cnVuaworNzIxOTIgNTExYTM3ZWYxYTQxMGZmNGQyNWY3NDgxOTRkZGIzYmM2MjNlYmUwZCBweTNrCis3MjE5MyAwNTEwMTlmMGRkOWZlMzlhNWFkOGMzNDFmOGYxMzM0OGFkMTgxMDQ1IHJlbGVhc2UzMC1tYWludAorNzIxOTQgZjY4NmFjZWQwMmEzZTRkNDNjMzQ4YzYzYWQ2ZDI3ODMyY2JjNWRmNyBweTNrCis3MjE5NSBlMTljYzNlYmI1OGEwYmU2MjQ0YTQzN2FkNDA4NGNjZGZjMjQ2MWQ2IHB5M2sKKzcyMTk2IDIwNmNjZjlhYTAyNWYwMTY0NWZjMWJmOTFkN2FjYjcyZWM3NzcwYzggcHkzaworNzIxOTcgZTYyYmM1N2E2MmVhYmEwYWFiZTg2NDJjNzNhOGVmYmQwMmQ1OTVkNiBsZWdhY3ktdHJ1bmsKKzcyMTk4IDAyYjYxNTM4OWQzZWY1MDZhY2Q1MDM5ZTBiNzcyODZhZWFiMDc5NTcgbGVnYWN5LXRydW5rCis3MjE5OSBkN2I1MWViZjZkZTQyNDM2OWZmNWQ1NjM2YTE1YjQ5Y2U5MTY2MGFhIGxlZ2FjeS10cnVuaworNzIyMDAgMWI3MWE1NzBmNTRlYWNmZDg2MDJiNDE2OTQxZGI0OWQwMTY3NjI2MiBsZWdhY3ktdHJ1bmsKKzcyMjAxIDFhODQ5ZWU1ZjA4Y2M4NjQxNjgyMWI4Y2JhMTcyOTMwYWU1ODRiODggcHkzaworNzIyMDIgNWFhZjI0ZWM0M2RjMTBhZmE0YWU3NTZjNTY5OTA2YTA1N2M1ZDIxZSBsZWdhY3ktdHJ1bmsKKzcyMjAzIDkwM2U4MGYzZTgxMThlZjI3YzgxYWNiNGU4OTU2YjA2MTQ0ODRhODkgcHkzaworNzIyMDQgMTFiMWZjOTkyMWJkMGUwM2QxMTQ3ZjZlZThiZGM3MGIzZTI4NDYwZSBweTNrCis3MjIwNSBmMjc3YTg0MDcxZjE0ZWUyODU3YjRmYTFhNDFmOGY0ZTFhYzEyMTk4IHJlbGVhc2UyNi1tYWludAorNzIyMDYgMjFiZGE2MTFmMGU0MDBkNzUwZTU5ZmQ4NmY2ZDMyYTBiYjM0ODg3YSByZWxlYXNlMzAtbWFpbnQKKzcyMjA3IGVjM2ZjNjQ2MzFkOTllZWZhMWVmMDE5NGRlZjE4ZTg1NDY5NGM3NDYgcHkzaworNzIyMDggNTJhNzdlZjA2OWNkYmEzYTEyZmU3NzYzZTM3OTQwN2UzOGU5ZGIzMyBweTNrCis3MjIwOSA2NjIwMGE3NmRlMjY2MmI0NzE1NjVjODM1Zjk2OTYxY2VlMzg3YzMwIHJlbGVhc2UzMC1tYWludAorNzIyMTAgOWI1NWU5Yjk5YTQzNmJkYTM1N2RjYzkyMmY5ODViNGQ0NmM1YWM2ZiBsZWdhY3ktdHJ1bmsKKzcyMjExIDVmZTkwNGZmYzZiODIzYzRmOWIyMTZiOGE4ZjA3NTM3ZTMxMTU5NTAgcHkzaworNzIyMTIgYmUzYzA3YWRkZTk1ZGE0MzVlZmJkNmI0MTI3YjQ4YjQ5OTM2NWE0NSBweTNrCis3MjIxMyBlMGNlZGU3ZjUyMWI0MzlmZTk4MTA4NWI2YmMyMDgyMDNjODgxNzhjIGxlZ2FjeS10cnVuaworNzIyMTQgYTg5MzE5NDE1NWEyMjUyM2ZiNzRjODY5ODRiMjY1ZjZhZWMxNmFkMSBwZXAtMDM4MworNzIyMTUgNGY2NWVlMWY0ODQ4ZjY5YmY0ZTdjOTI2NDY0YzNkMzEzMTM0OTM4OCBwZXAtMDM4MworNzIyMTYgNTg3MDUwODJlN2M4NWNiNzVmNjRkNmFlYzFlYTkyZjk4ZGRkNDEwZSBwZXAtMDM4MworNzIyMTcgNTJhODlkNzIzYjZiYzEyZDgzNzNmZjE3ZjI1Y2U1MjliMWU2MzUxZiBweTNrCis3MjIxOCAwZWNjNWI5MDY0Nzc5NTIzNWQ2ZGY5ZTc0ZjM4YTkwM2NkMTNlMjE1IHB5M2sKKzcyMjE5IDdiY2UwNTJmMGU3YjcxZTRlZjYzYzJiZDQ4YWRlNzY2MzMxZTdmNjQgbGVnYWN5LXRydW5rCis3MjIyMCBjNWYxNGRiZWE0M2ZiY2NjZmFiN2NkYjc5MTk5NGQxMjA0MjIwNTExIHB5M2sKKzcyMjIxIGIwNmYxMWYzYjY1YjBkODg1OWVkZThjZWNhMDRmZjI2ZGNlZmEwMTIgbGVnYWN5LXRydW5rCis3MjIyMiBiYTQ1ZTEyNjU3NGRhMWQ2YmY2MWQ0YmU3MTA5YzlhZjQzOTM3YjhjIHB5M2sKKzcyMjIzIGU1NDE0MWQ2M2UwMTg3NGJhMmI4OTAwMjVkODIwZGFiZTBiN2YyNzEgbGVnYWN5LXRydW5rCis3MjIyNCA2NGQ5YTllN2Y2OGVjZDQyMGEyOTRhOTJmOWZmZTI1MWE2ZGExNGZmIHB5M2sKKzcyMjI1IDMwM2I3ZWU4ZTdmZWYyYmFmM2VhYzFiZmM0YzgyYjI0NzQ1NDExZWUgbGVnYWN5LXRydW5rCis3MjIyNiAwMDFhYzU5YzFlNjcyY2UzZGE2NGJjMWM4NGUzY2FkMzRiYmUyZmNhIGxlZ2FjeS10cnVuaworNzIyMjcgOWZlZjFmMTY1N2M4YTc1NTE0YzNkMjhjZDM2MWFmNDA1ZWQ0MWY4NiBsZWdhY3ktdHJ1bmsKKzcyMjI4IDM1OGFiMWZmYWE4MDg0ZWE3NzNiMWFhOTFjM2E4ZDczODkwZTc4NjkgcHkzaworNzIyMjkgYWVlMmIxMGRiYWI5MzhlYzJhYTU0ZDE4MDcxYmRjNmFkMDhkYmU0NiBweTNrCis3MjIzMCA3ZmZkOTYyNWM5MWNmZDc5ODQzNjUxZDVhMmIwOTkzNDBlZWFmMzc1IHBlcC0wMzgzCis3MjIzMSAwMDA2M2FkZjA1NTg0NTY1OGI3ZGIyMDFlNDZiYWUzMjI5YzJjOWUyIHBlcC0wMzgzCis3MjIzMiAwNzA5YzZkMzY5ZGU2NzA3Y2M2OWE4N2I1M2RkMzk5YWFjNGYzOTUxIHBlcC0wMzgzCis3MjIzNSA3NjRlYWU1MjA4ODA4ZjVmMDRhMzI2YWUwYjA3NjEwMjBiM2JmZWY0IHBlcC0wMzgzCis3MjIzNiA5YjEwN2E3OTdkZjg5ZTA4NjNkN2QzZjc3ZGQxOWQ2MGY2ZGU2NTAzIHBlcC0wMzgzCis3MjIzNyBkNmIzYjc0YmRhMGU1YWVjYmYzZjY0NThlNDk1OGMyM2EzMmYzZjA4IGxlZ2FjeS10cnVuaworNzIyMzggNTI2YjBkYzA5MTM4MjFjZDcwNzgxNGQwZTc2NGM5ZmU2ZjMwYTAzOSBweTNrCis3MjIzOSBmNzgwMTY5OTgxNWMxMjQzZmY5OWVhODE3ZDYzZWE0MjZkNWMwNmFjIHB5M2sKKzcyMjQwIDY4NzdhMWY0YTA5MjdmZWM2NWUxYmEzZWQ4ZTYzMTU4NjViODZiNjIgcGVwLTAzODMKKzcyMjQxIGFlMjRkZTQ4YWRjNDFkMTE5NmU4YmExYjRiMjQyZjMxZTJlYWYyMTYgbGVnYWN5LXRydW5rCis3MjI0MiBiZDZkMjU3YTkxMzBmNzg2Y2M1YzZmMmY3MmI1YTI3Mjg1MmQ5N2E1IHB5M2sKKzcyMjQzIDg3ZmMxMTYyZDlmNGI2OTQwOWM5YjJjOTUxNDc2ODNhMzg2ZjljM2EgcGVwLTAzODMKKzcyMjQ0IGFiZjU3NGU5ZjFkM2Q1OWQ3OTc1ZTFlZjVmNWY0Yjk0NmFmMzQwMDMgcGVwLTAzODMKKzcyMjQ1IDM5NDQ2MmVhYjY1ZGIwNTI3NGE2ZjY2NDQ1YWM4MTgyODZhZjlhOTkgcmVsZWFzZTMwLW1haW50Cis3MjI0NiBhNjc3ODNkODEyZjZlNmNkMzc3NGZiMTRiYzFiMWY2ZTcwZTQ0N2M2IGxlZ2FjeS10cnVuaworNzIyNDcgMzMyNzBhZDZhZGVmODJmNjA1M2JjM2JjOGU4OTlmNTk1ZjY3NWZkYSBwZXAtMDM4MworNzIyNDggMTNhODJhNzEwZjE5YjQzOTgwMGE4YzllNDk5Zjk0MWE3ZmRmNThiYyBweTNrCis3MjI0OSBmNzBlOTFmNWZjOWNmZjI0OGI2YzJlMTZhYmY5Yjk0ZTQ0ZjdmYzE4IHJlbGVhc2UzMC1tYWludAorNzIyNTAgNjNkZGNlOWZhZjRhOTg3ZWI0YThmODkyODFlMmQwZTdmOTViNzFjNyBsZWdhY3ktdHJ1bmsKKzcyMjUxIDRhNzZkNmQyOTdjZWJlNWUzYjA5YTEyOWE1YTM5ODc5ZjA4NGQ3MjIgcmVsZWFzZTI2LW1haW50Cis3MjI1MiBmYjUyMWY5OTZkZTEzYmRhNzUxZGQ4YTllNzEyYzc2YjVjMjY0MTQyIHB5M2sKKzcyMjUzIDFmMDBiYzFkMTE1YTBiZjQwZmEwMmQ5YjUwNjA4ODMwMDczMTFhNjUgbGVnYWN5LXRydW5rCis3MjI1NCA1YjI4ZGViYTFjZDZiN2EwMTNiNjVlYWFhOGEzYjllZDczYzc1ZTQxIHJlbGVhc2UyNi1tYWludAorNzIyNTUgZTJiNTUzZDcyMDVmMzliZWIxMDVkZGZkODdmMGQyZDNmODRiM2MxNCBweTNrCis3MjI1NiBhOGI1YTViOWE0OWFhZDIxODM5MWJhMmFjMzhiYWFjMWZhMzE0ODBlIHJlbGVhc2UzMC1tYWludAorNzIyNTcgNGY4NjdmMTQ5NGQ1NWU5YzFmMDA5MTgwMzUwNzRkN2E1NjdiNGMyYSBsZWdhY3ktdHJ1bmsKKzcyMjU4IGM2Zjk5ZDRjODEyMmUxMmNiNGNiN2M4NmU2NmVlZjg5NWQ0ZmJhNjQgcmVsZWFzZTI2LW1haW50Cis3MjI1OSAwYjdlZWZlN2I2ZDE3ZDhmNGNhMmE4MWUxZjJmMDk4ZGFhY2M3ZDUxIHB5M2sKKzcyMjYwIDFjMjdlY2JlZDhjNDFhNzEyOWViNGEzYTg4Mjk1NzM5NDg1ODZmN2MgbGVnYWN5LXRydW5rCis3MjI2MSBjZTk0NzIwMGI3Njg4YTkzODRkM2ZlOWM0NzE1NGEwZTdjMjQwNGI4IHJlbGVhc2UzMC1tYWludAorNzIyNjIgMThhNWFlOTZhZTVjOWEzZmRlMWRmYmY2ODBiM2I1MTkzMzE4MjE3OSByZWxlYXNlMjYtbWFpbnQKKzcyMjYzIGU0YWY5NzFiOTE4NDU2MDk4MTJmOTExNjNmOGQ0MGJmMDdhMmFiNDkgbGVnYWN5LXRydW5rCis3MjI2NCA1YWRlMGRlNzRiNWE5MTNhMGE3MThkNGIxYjJiNDUyNmJiOWFlNzU4IHJlbGVhc2UyNi1tYWludAorNzIyNjUgZDdiYmRlOTM2ZDYyOTA1YWRhNzI5NTZhOWQ5NmU3MDBhYzRmNWJmNSBweTNrCis3MjI2NiA4MzQ2ZDNjN2M0ZTIzYjg5ZThjYTc4MzIwYjVjNGFjMWJlYWE4YjFiIHJlbGVhc2UzMC1tYWludAorNzIyNjcgZTRmZjQyNzM0OTNiZDA0OGJlMGRjOWY3OWI4OTYzODNiOGQ4YTg1NiBsZWdhY3ktdHJ1bmsKKzcyMjY4IDRjZDQzN2RmYWNlODk4MzJiZThhMjEyYmU4NjUzY2QxMDBlMmNlNWIgcHkzaworNzIyNjkgNjZmNzUwMDhjM2E4NzI1MDI5MzY4MmQ4ZWIyMmY5ZDFlOWU5MmU1NSBsZWdhY3ktdHJ1bmsKKzcyMjcwIGQ4ZDY3YWE3NTUyNTIwMWQ4Yzg5YWM5NjAwZmJhNWI4NDM1M2Y2MjggcHkzaworNzIyNzEgZTY4Njg1Y2YzNjUxZDk5ODc2NmNjNDFhMWZmMDZlYmY1N2EyMTZmYSBwZXAtMDM4MworNzIyNzIgZGIyODM5MGNhNjE3MjYwNjUxZjk2ZDgzNDJhMjdiMGQwMzljMzJlYiBwZXAtMDM4MworNzIyNzMgZDZjYmFlYTk3NTY5OGViZjc5NTg0ZTZkNmE4YjU5ZTBhYjU4MTZhZCBsZWdhY3ktdHJ1bmsKKzcyMjc0IDJjZDlhZWU2ZjYyNDYwMzI4ODVmNTU0NjEyMzc0YjY5ZjAyMjY2OGYgcHkzaworNzIyNzUgYmMxZDE5NjgzNmE0ZmJhOGJjMTE2ZWRlM2UxMGE5MTI3NDg2NmJmNyByZWxlYXNlMjYtbWFpbnQKKzcyMjc2IDNjYjViN2Q1NjMwOTgxY2YyNDY3OTFiMzFmZDA1ZjRlNjhmYjAzMDkgcmVsZWFzZTMwLW1haW50Cis3MjI3NyA2OTIzMWNlZmQ4MGQzZmFmZWIyZDU0Yjg1MmZkMjNiOTdjNmFlNjZhIHJlbGVhc2UzMC1tYWludAorNzIyNzggYWQxMmQ4ZjQxNGM3MzYxYTk4NWUyZjE4MDQwMWNlOWYxZWI1NDc2ZCBsZWdhY3ktdHJ1bmsKKzcyMjc5IDMwODhkMmViZjdiZTVlYTNkMTMwZDhhZjgxMjM0N2Q2ZTQzNzZjNWIgcmVsZWFzZTI2LW1haW50Cis3MjI4MCBmZTU0ZjM5NDU5OWMyNTM1ODgxOTBkOTYxODYxMDczY2NhYjVkODYyIHB5M2sKKzcyMjgxIDczYWY5MDIwNmNiZTMyNGI5OTYzYWU1Njg4OGNjZGZkYTI5MWI3ODAgcmVsZWFzZTMwLW1haW50Cis3MjI4MiA1Y2I4NWVmZjhjMDM1YWVhYTA0MDlmM2M1OTEzNzc4MmZlMmZiOGQwIHB5M2sKKzcyMjgzIDEyZDhmZDQ5OTcyMmMyZGNlNGJiYjFiNzk0Njk5YzAxYzE3MDc1MTcgbGVnYWN5LXRydW5rCis3MjI4NCA1MzhhN2Q1ODMwNjQ1ZDBhNzYxNGI0ZjBjNmQ0YzcwOWY2OTQ4NTMyIGxlZ2FjeS10cnVuaworNzIyODUgOWI5NTkwMDA3ZTgyNDk4MWI1ZGE0OGE5MGM1ODg3MjY1YmVmNGIxZCBweTNrCis3MjI4NiAxMDAzODFjNWU3M2FiYjdmMGNiODc2OWFjNDJkNzFhM2QwYzgxYWZmIHB5M2sKKzcyMjg3IDQ3OTEyMTZiZmMxZWJkYjllODY5NTNjOTcxNTQ3NWVhNGM1ZjJkMzcgcHkzaworNzIyODggNzVkNDFmNDYwODUyMTA5MTdiYzNhNGVmMDg4YmIzYTM2NjJjNTQwOSBsZWdhY3ktdHJ1bmsKKzcyMjg5IDgyZmZkZmJjNDJlNTY5NjQ5ZGNkNGNhOWM4NzJiZjcyNjUxYjhjZDcgcHkzaworNzIyOTAgZjcyMjg5MmI2MGFlM2JlYWZkYzdmNjEwNGE4MmVlNGViN2RjMGI4NyBsZWdhY3ktdHJ1bmsKKzcyMjkxIGJkNDkxYjVhODgwODY5OGI2NTg1ZWYxZjI3NTQwYTdhNjE2ZGRjMTMgcHkzaworNzIyOTIgNWNjZWM0YjM2NjQ2ZDExN2FmYjdiZTZlMzg5NzUyODI2NDU4MjM4MyBsZWdhY3ktdHJ1bmsKKzcyMjkzIDMxMGRhYTk5ZDYwNzNkMzNmY2YwN2IxNGNkMjE3NzFlOThiYzMyNzIgcHkzaworNzIyOTQgYzJkMTA3ZTA3ODM5NzQ1MmNlODZlNWUxNDAxNGU0MmY4MzllYWMzMSBweTNrCis3MjI5NSA1Mzk5YmU3YTM5YmEzNzE3YmQ4MDFkNWM2YTQ5NzgyZDU4Yzk3OTVhIGxlZ2FjeS10cnVuaworNzIyOTYgNzU3NDNhYWVlNTA0MGMwYjNiYmQyMTZlYmZlODc3OGMyNTgyNDMzMCBweTNrCis3MjI5NyBkMzc0N2IwYTJmMzYxYWE0ZDcwYzQwZjhkYjgxOGIwYWZlNTZhYzZlIHJlbGVhc2UyNi1tYWludAorNzIyOTggM2IwOWYzMzJmMWZhM2I0MjFiMWYzZTIxN2JjNzgzZTFlNmM0NWEyYyBweTNrCis3MjI5OSBiMzMxOWMwODRkMjU3MWMzMDM4MzEwMTc1ZWQzOWNjNWNjZTk3NWFhIGxlZ2FjeS10cnVuaworNzIzMDAgZGQ5MzhhMmNjMmYwYzc0YTcwN2JmZjU5M2VmYmJhYjMzYzM1YjNhMiBweTNrCis3MjMwMSA1YmVjYzg2NTQ4MTIyMDgyYzFjOTE5M2UyYTg2ZWY4NTAyZmM1MDNiIHB5M2sKKzcyMzAyIGJiYTdlZTlkYWVlMDY0NTg5Yzk3MzE1NjgzNzdjNDFhZGM3YWJkNTYgcmVsZWFzZTI2LW1haW50Cis3MjMwMyA2MzlhNzlmYTZhMjM4YTY1MmM5NDhmMTQwMDY3MzI5MDc5MTE3MTRjIGxlZ2FjeS10cnVuaworNzIzMDQgYWViNDA1MGNkNDMxODUyNjJmYzg5ZWI3Y2NmNjllMmFiOTYxYWE5YyByZWxlYXNlMzAtbWFpbnQKKzcyMzA1IDRmY2ZjNTNmY2M3NGJkNmNlOTk1ZmNkZWM1MzkwNWQwODE4NmMyZWYgcmVsZWFzZTI2LW1haW50Cis3MjMwNiAyNDE2ZjE2NmRlNGIwMGUyYWI3YjAwYmJlZjY1MTE0OTdmNmU5MzRmIGxlZ2FjeS10cnVuaworNzIzMDcgYjFlYTVmNzMxM2ZkZTU0ZDMxZjUzODVmMWVhNjcxZDExZWZiOTkwOCBweTNrCis3MjMwOCAwYmY1YmIyZjNjMDg5ODZkYzA2MGQwYWE0ZmI3MDgzM2IxYmVhOTYxIHJlbGVhc2UzMC1tYWludAorNzIzMDkgNjY2ODJmYzE3MmU5MGU5OGU4YTE0NzRhZTE1ZjBmMWVkZmVlNzU1YSBweTNrCis3MjMxMCA3MzIxZDQ1MTBiNDFiYWJjZTNmOWMyYTQ3NDg4NjhiZDJiZTRkNDAyIHBlcC0wMzgzCis3MjMxMSA0ZGQ1YTZhOTNlNzA4OGMwM2IyYWMxNjA3ZGI5YjM1NmJiOTQ1MTY3IHBlcC0wMzgzCis3MjMxMiA2ZTEwYjcwYTQxMTAzNzYwMjk0ZDEzMDBjOWViYmUyODEwNjg1NmQ0IHBlcC0wMzgzCis3MjMxMyBhYzIwOWYxMzJiMTdiMjg0MDE0ZDRhMTBjZjk3YmE3N2RlOGI3Y2I3IHB5M2sKKzcyMzE0IDRlNTgzNGIzMjJjMTBhMmNmMDEwZjNkNDRlNGJlZDg2YzRlNTkwYjMgbGVnYWN5LXRydW5rCis3MjMxNSAyZTA0NGM5ZjRiNDA1Zjc5NjI4MDhiZTA5MzMxMTU1ZWJjZTc5ZTIwIHB5M2sKKzcyMzE2IGIwMGNlNmYwZmEzYTljZmI5MzdjNmFkYTFkYmE2OGUyYjQ2ZmYxN2EgcHkzaworNzIzMTcgMWU4MmJlZjY4ZjRkZmU4N2Q2ZWQyODkwYzdlMTEyZGE1ZWMwNWFhNiBweTNrCis3MjMxOCA1ZGZkMjI5MDYzNDExZmY2MWMzNzFkNjZhM2NkYjhiZjNlZmYxYjY0IHB5M2sKKzcyMzE5IGRkNDg5ZjQ3NTdiZTgyNjliZTk2ZWJhY2EzNmViMDMxNDVmYjdlMGUgbGVnYWN5LXRydW5rCis3MjMyMCBhZjhmODQzMjU3OTczZjE4Yjk4ODA0NDIxNWU0NzQ2ZmVkMWY3ZGFmIGxlZ2FjeS10cnVuaworNzIzMjEgYjEyYTQ0ZWVmNDBiNmM1OTI3MDZlYzNmNWI2NjM3MDkyZTc2YzkzNSBweTNrCis3MjMyMiBjNDliYzMzMDMyN2NmMjllY2U1YTEwZGVhYWMyNTJiZmMxNmM1NjE2IGxlZ2FjeS10cnVuaworNzIzMjMgNTg1NzQyODhhNWJmZWE5ZGVhYzYxMDdlMzNiMjdkNzJhNjYyZGNjYyBweTNrCis3MjMyNCA0YzYzNjcwNjM5ZWM3MGI1YWE2YjY0ZTVkYmJmYmU5YmFlY2Y0M2EzIGxlZ2FjeS10cnVuaworNzIzMjUgNThhYTBhZDc3MjUzZDc3NTRjNjhlOWE5NjEwMGYzYjc3YjFmZWU1ZSBweTNrCis3MjMyNiA1ODc4Y2E3ODRhODQ5NmU0ZDVmNGNkNWJmZmMwODgyOGEwOGY4NTRjIGxlZ2FjeS10cnVuaworNzIzMjcgMzNiYmRkM2VlYTQzZDlmY2VjZTVlZjRjN2RmN2UzOWNmN2U5MDRlYyBweTNrCis3MjMyOCA5Zjg1MzJhMGYxYWJjYzQ2MWI2MDAwOWZiMTU1MWZkN2QyODJlZjgxIGxlZ2FjeS10cnVuaworNzIzMjkgZWM1ZjAzZDFlODE5ODkzMTNmMGFjMTc3YzJmYmNhZDEyNDRmYjViOCBweTNrCis3MjMzMCBmNmJmZmI5ZTgzNGY5OWU2MDgwNjY4ZDE5ZTcwMTU5OGUwNDkxYTJkIHB5M2sKKzcyMzMxIDE2N2NkMzc4YjViZDhiMzdlNjc2NmIzZGE1ZGMwZDgyOWFjMzg2M2EgcHkzaworNzIzMzIgMmNjMTE2OTNhMTgwZWQ3NDE3ODQzMDlkZGVhNzY0YTQ5NDRjOWUzNSByZWxlYXNlMzAtbWFpbnQKKzcyMzMzIGM2Mzc2ZDNmYTk2ODc4MTdiMmE0MWJmNTY5ZWRjMDU0OWNlNmJhOTIgcHkzaworNzIzMzQgZDE3Y2M3MmZmZTgwNzY3MWQ0OTYwZDUxYmFlMDUyMWZjZGEwYzhkMyByZWxlYXNlMzAtbWFpbnQKKzcyMzM1IDlmNmI4Y2UyMDIzZjBjMjQ0ZmIxYTEyMWZkZDU3NDNmN2ExMGM0ZjggbGVnYWN5LXRydW5rCis3MjMzNiAyMTViN2I2NmU2MmRmMjg1ZTE1ZDkxN2FiMmRmMjk4YzRiZDM3N2Q2IHB5M2sKKzcyMzM3IDRmM2VkYjZhZjhjMWJiZDNiMzg1NTI1YzZkMDBjZDUzODQ3NWQ0Y2EgcmVsZWFzZTI2LW1haW50Cis3MjMzOCA5NzYwMzUzNjYwNjU3YWFhMjFkMmNkMzdjYzliMWYwNTAwYTFiNjgyIHJlbGVhc2UzMC1tYWludAorNzIzMzkgY2E0NTBiMjgyN2VmMzgwOWIzNDk3ZmVhYzE4YzAyZmFkNDhiZjQzZSBweTNrCis3MjM0MCBkODYwMWU4YjNhYmU5MWViYTA3ZDMyNWYxNzM0Nzc0N2NkMjk5ZDk1IHB5M2sKKzcyMzQxIGE3Yzk5ZTM0ZTIzOWUyMTcyYTY3YzgwNzUyNzcxZmJkNzBjOTZmZWEgcHkzaworNzIzNDIgOGU4Yjk1OTA5MTdhZDk0YzViODJjNjM5NTczOGExNDcwN2ExMzJlZiByZWxlYXNlMzAtbWFpbnQKKzcyMzQzIDdlYTc4NzBkZDk2NmQyMjE2ZDUxNDRkNzNiYWQ1MTVkYzAzZjQwOWIgbGVnYWN5LXRydW5rCis3MjM0NCBlYTJhOTAwODJjODM3NTI4MzkyNTExMGRkOWI5ZmNmMTQ1NjNmZjUxIGxlZ2FjeS10cnVuaworNzIzNDUgNmQ2NGNkNjlmMzg0NGE1NWVkYjczNGIzYmFjNWJlZTBjZmFjY2Y3ZiByZWxlYXNlMjYtbWFpbnQKKzcyMzQ2IDk4NzQyMWQzZjhhZTQwYjZkOTA1ZmNjYjJmNzdmYzVmZTU1ZDk2NzQgcHkzaworNzIzNDcgYjAzNzU1NjdmYWU4MGE0NmNhYzhjMTI1ZmQ1ODk2YzM0MjI4N2Y0NSByZWxlYXNlMzAtbWFpbnQKKzcyMzQ4IDFkOGYyNGQ0MGMyYzY4ZmI5YjNlYzQ0MWNiMTc1MDQ2YzljODAyMWEgbGVnYWN5LXRydW5rCis3MjM0OSA0ZDVmMDY2NTc1ZWQ1MGQ5MDE5NjFhMzMxM2EzOGIwZjlkN2FiMDA5IHJlbGVhc2UyNi1tYWludAorNzIzNTAgYjk3N2FmMTljNmYwMTM3ZmU0N2E3NTYxYTNiYzIxMWNhYzhmOGRlNyBweTNrCis3MjM1MSBiYmUyYWE0MzE2OTIzMjM2MDVmZGUxYWJlNGMyMzQ5NzVlZDNjY2U3IHB5M2sKKzcyMzUyIDU4MWI1NjRkOGZjM2IyZmU2N2NjZDNhZTBjMjU1MjIwNDA4MWVjODAgbGVnYWN5LXRydW5rCis3MjM1MyBhODVlNjc1NmRlZDJjZmU3ZTJiMThjZGRjZDQ5OGM5YzE2ZDZlZTY4IHJlbGVhc2UyNi1tYWludAorNzIzNTQgZTAxNzlmMDhkMzRmMjIwMzE0M2U5NDI5ZTZmYmFjNTJjNjZiNjc4ZCBweTNrCis3MjM1NSBkM2ZmYjM3MDJjM2FmNjNmYTUwZWEwNmZhNTMyNjQyMmEzZWM2YmNkIHJlbGVhc2UzMC1tYWludAorNzIzNTcgOGY3Y2Y1Y2IyMWJiNTgzYWI0ZTVhZWRiMmY0MjMwNGIwZWI0ZmM0MiBsZWdhY3ktdHJ1bmsKKzcyMzU4IDAyNmQzOTBlZWNjMTk2YWQwNTE0Y2MxODcxMGY1ODc1MmQwMmU5YjkgcHkzaworNzIzNTkgMTVkM2JkZTcwZDg3YjAwMGVjY2U5NDk3YzM1ODlkNGVjZTczN2U0NyBweTNrCis3MjM2MCBmMGZiNGRkZmYxYWJkYWFhMzM1NmZkNmQzM2FjYTM5MDA3M2U5ZGVhIHJlbGVhc2UzMC1tYWludAorNzIzNjEgYWU2ODUwODY5ZDUyZjRmNmVjNzgyYWIzNGNjODA4ZjVlNjgyMjZlYSBsZWdhY3ktdHJ1bmsKKzcyMzYyIDI1OTJjNmE5ZGRkNmM0NGVjZDk1OWVmZDZjMjc5NTJlZWU5M2Q2NTYgcHkzaworNzIzNjMgOTExZGY4MmJjMjVkZmI2MmZhZWY2ZWExYjlkMGNmNzA0MTdiYjk3YyBweTNrCis3MjM2NCA1YjkwMjFjMTk1MTJiYjJlM2EzYmQwMTMyNTJkMjhmOTI4ZjgzNTMzIHB5M2sKKzcyMzY1IDU0ZGM1Nzc3YmRmYmZlNjM2OWQ4M2Y3Mjc4YjI4NDZjMzhhODg2YjkgcHkzaworNzIzNjYgN2JhZjRjYzEzYmNmZjY4YmI1YjRmYjk4ODJkMmRmYmVkZjc1ZGQ3OSBweTNrCis3MjM2NyAzYjVjNDAwYzlkY2Q0NTEwMzVkODdjNDIzMDY4NmJiYmZkZTVkZDY1IGxlZ2FjeS10cnVuaworNzIzNjggZmIxMGI4OGFmZDQwMWU4MTIxMmE1Y2FjZTRiMTY4ZTE4NjcxM2I3MyBsZWdhY3ktdHJ1bmsKKzcyMzY5IDViNGIwOWU4ZjMyYmE5Y2JlNWUxYWI3N2I3NzQ1ODE4Njc2Mjc0NDQgcHkzaworNzIzNzAgYTIzMDNhNzRhNzYxMGM4ZTJjNmE2M2RkMjE5ZWViYjg2YmYyYTJmZCBweTNrCis3MjM3MSBiNjY2ZTcyZjYwMmZhODUyOGQ4MzAwYWRiNGEwODE1OTY3ZDM5YWZkIHB5M2sKKzcyMzcyIDk4OTU0ODNlOTYwMTNhNTJjZmYyZDgxOTdmYzU0ZTg4Njk3YTlhZDggcHkzaworNzIzNzMgOWM0ZDkyOWY0MDU5OTQxNzE5MWMzZjQ1YzVjMzNiYmJlNmM4ZDdlMCBweTNrCis3MjM3NCA0YjFhOWFmZmUzNGNkNGY5MjEyZGU3YjUyM2FkN2EwYTkzODgyMmJlIHB5M2sKKzcyMzc1IGViM2FmYmQ2YWFhOTZlZjY3NjAyYmJjMDBlOTYxNmVlZGU0ODAwMDggbGVnYWN5LXRydW5rCis3MjM3NiA0ZjE3Mzg0YWU4Y2JmZTQ2OGMwMTEyZWQ3ZTgyNGE5ZjZmODlhYzUxIHB5M2sKKzcyMzc3IDBmNmE3ODVjZjI4NmUzZDFkODNhNWU3YzQyNGYyNzlhZmIxZTY4ODIgbGVnYWN5LXRydW5rCis3MjM3OCA1NTZkMTEzMTRhZDVjZjkxMzgyYzRmZjkyYWIxZGJkNWNkYmE2MDBmIHJlbGVhc2UyNi1tYWludAorNzIzNzkgNTdlOWIxYjA4MzhlNTJkZTk0MGNkMDQ3MTM0ZWE4NDQ3MGM1YmQyZCBweTNrCis3MjM4MCBhODE1YWNjZDg5ZTQwYjM0MWE1ZDYwZjVkMDIwMTkzYWE4MWI0Yzg0IHJlbGVhc2UzMC1tYWludAorNzIzODEgODU3NzVkMTAwYTMyYzU5ZjJjYmQyYTEyY2VmMzZjMGI0MTBlNGZlNyByZWxlYXNlMjYtbWFpbnQKKzcyMzgyIGU2MjA3MDFhM2VjODY0MGFmYzZhNDMyMzBhNTU4MWViMTNjMjQ0MzcgbGVnYWN5LXRydW5rCis3MjM4MyBhZWM2MmU5Y2M2ZThlZWZhNmExZTFiY2NkYjMzNDZjN2ZhNWFjMGQyIHJlbGVhc2UyNi1tYWludAorNzIzODUgYmNiYjk0ZDY5MmVmZDcxMjk2MmQ0ZWE5YmMyMjQ1YTJlZDJjYzcwOCBweTNrCis3MjM4NyAyOTAyNWI1MzAwNDY2ODUwMGQwODliZGE1OWY4ODkyYzY0NDQ2YjA4IHB5M2sKKzcyMzg4IGNhYzJhNWY0YjlmYWUxMjg0Yjk5Y2ZkZTQwOWVhODdjZDc5ZmYzZGYgbGVnYWN5LXRydW5rCis3MjM4OSBjNmVmZTU4ZWVmNjY1N2VlNGI5ZjI4OTk0OWVmZTFjNjZjYmQ4YmQ4IHJlbGVhc2UyNi1tYWludAorNzIzOTAgZjFhM2RlOWRmNDI1ZGI0YzNmMWI2NzkxMzEwNDg0N2NhOWI4ZDdjMyBweTNrCis3MjM5MSBmYjdkMTIxOTZjMzVjMmI1ZjVkYWFiY2NkNDI5Y2VlY2U5NTFjNjcyIHJlbGVhc2UzMC1tYWludAorNzIzOTIgMzU1OTdkM2RiZDA4MjAyY2M4ODcxZDFlYzEzZDE4MDQ3YmFlNDU4MCBsZWdhY3ktdHJ1bmsKKzcyMzkzIDAzODhhNDI3MjU5OGUzODY0ZTk1NTllOTExYjZhYWYwMDcwMzAxZGEgcmVsZWFzZTI2LW1haW50Cis3MjM5NCAwYzUyNmQxODk1MjcyYjlhNTI1N2Y4MmExYzE0Yjg3MzcyMTFmNTNjIHB5M2sKKzcyMzk1IGFkYzhlYzdmN2QyMzAxOWYwMjlhNzc1ZjIxNDI2YjUzYmUwZWVlYmQgcmVsZWFzZTMwLW1haW50Cis3MjM5NiBkZjNmNWRiNTI4ZjAwYjM3MWY3MTYxYTViZGMwZDZmYWM4MTkzZjhkIHB5M2sKKzcyMzk3IDdjYjZkZjAwNjk5ZjRiMzRkNzE5YmY2YzhmY2I0MjNmZDc4ODQ0MjkgcHkzaworNzIzOTggMDRiZGM5NDQ3MThhZjllZWZmMTc5OGJkZDVkMTY3NGVjYzlhMTQzYyBweTNrCis3MjM5OSA5YzY1NDA0MDQwMGRlZmE0YzI5YmJlNjNlMDQ3MGY1MzdjZTFkYzRjIGxlZ2FjeS10cnVuaworNzI0MDAgMGI5ZDdjY2VkOTM3MWQ3ZmI0Yzg1M2Y1ZGEzMzJmNjRiODExMGEyNSBweTNrCis3MjQwMSAwMzRlMGZjZDY5NGU4ODFhNThhZTRmMWNhYzk5ZWRmYTc0MDExYjY4IHJlbGVhc2UyNi1tYWludAorNzI0MDIgZWNlN2U3YTgwMDQzYzE1ODI1MTE0YjQzYTg4MzY0M2Y3YzBmYTcxNCByZWxlYXNlMzAtbWFpbnQKKzcyNDAzIGM1MmU1NTVjOTE4ZDliYmM0ZmE2MDJhZjk1NzM3YTMwYjE5NjA5NzYgcmVsZWFzZTMwLW1haW50Cis3MjQwNCA3ZGNhMjUwMzQzZWE0MWM5NjM5OGViNjhhZWU0ZmNiZDVhZDhmN2Y2IGxlZ2FjeS10cnVuaworNzI0MDUgNGE4NDcwMDY2NGQ5MjYyMWFmZThiNDFkOGEzMWZmOGUwNTZhMmYzOSByZWxlYXNlMjYtbWFpbnQKKzcyNDA2IDQ2MzQyZmZhMjk2MzUzZjM1MDdlZTc5NDAxZjdjMTA3ODkyNjRlMmYgbGVnYWN5LXRydW5rCis3MjQwNyBjMGFkMjNhZTJhM2UxY2NlNDU5MjAwNmQ5YTBiNjZhODZjOWFlMzc3IHJlbGVhc2UyNi1tYWludAorNzI0MDggNjNiMjNiZDM5MDRkZTcxNjljNjJjZjBlYmEzNzc5MzU3NWU4OGY2OSBweTNrCis3MjQwOSBjYTU1N2Y4NTBlZWU2NGNkM2YyZmIxMTBhMDhiNTg0Yzg2NGEyOGZjIHJlbGVhc2UzMC1tYWludAorNzI0MTAgN2E2N2I2NDdiOWU3Nzc3OWVjZWIyMGEzNDgxOTIyZTllMDk4M2FkYyBweTNrCis3MjQxMiBiNjMwMjA3OTdmOTY3OGFkYWY0ZDJjM2UyNjU3NGE5ZWVmMmVmMDI4IHB5M2sKKzcyNDE0IGE2Mjk5MjQxZmJkOWJjYzYwNTk3ZDU0NmMwNmQ0NDNmYzY2MjcyZTYgcHkzaworNzI0MTUgM2FhYWJiMzEwMmU4ZTc1OWE4OTk3MTk4MTNlZGE1OTkzNjk4MTY5NSBsZWdhY3ktdHJ1bmsKKzcyNDE2IDM3NmZlMTU4NjI3NjAwMDdiMDc0Y2Q0ZWMzY2Y2ZTdlNTVkMTQzOGQgcmVsZWFzZTI2LW1haW50Cis3MjQxNyAyMDU4NjkwYTUzZTEyY2UyZTJjNzEwMzA1YzNiYjQwZWFhYmIzMTg5IHB5M2sKKzcyNDE4IDY1ZDhkYjViZWIyMDEyMjE5Y2JmZjE3MzllNDQ3MTdkZWM5MTQ0YjYgbGVnYWN5LXRydW5rCis3MjQxOSAyYTBmYWNhM2RlZWU1OTgzYTUwZGUxNDExMjZmZDMzM2MxOWJhZTEyIGxlZ2FjeS10cnVuaworNzI0MjEgNzcxNDI5ODVjNjQxMGE1MzUwNGRmNzc0MjFiNjVjYWQxZjYwMTFlMCBweTNrCis3MjQyMiBhN2NhZjI5ZDE0MDYzM2M0NTNjYTc4Mjc4MmNmOTgzMDcyYTU0NWZmIGxlZ2FjeS10cnVuaworNzI0MjMgZmFjNTFhMDIyYmY1MDkzMDQwM2VmOWE2ZjFmYWNiMmM5ODRiMDg0MCBweTNrCis3MjQyNSA4NWI5ZGY1MjVlMTA3MGY2MzhhZTU0MGQ4OWM4MTVlMDVkMmEwZTk3IGxlZ2FjeS10cnVuaworNzI0MjYgMjM4Y2FmY2MyNTE1ZjVkYjAzZDBhNTE2OGViZTBlNzZmYWY0MWE2NyBsZWdhY3ktdHJ1bmsKKzcyNDI3IDYyYmU1YWM5ODlmNGY4NmMwNGIyNDg5ZmI5NGE3OWJmYzY1M2Y4NTYgcHkzaworNzI0MjggYTgxOTBlODgxZmRmZjJhZjYzY2UyM2NjOTA5NTA0MDEyNzU2MDU1NCByZWxlYXNlMzAtbWFpbnQKKzcyNDI5IDdhM2JkMTc5YjE4MGRjYzE4OTVkMjg5N2UyYWUxM2I5ZjE0NDUyNDEgcmVsZWFzZTI2LW1haW50Cis3MjQzNCA2YzhiMzgwZGI3MjdmYzIyMWMyMjY4N2UzYmJkMWRmMzQ4YTc2NGNjIGxlZ2FjeS10cnVuaworNzI0MzUgZTdmZTIxN2NlMDE1N2RkODE0NGVhYWY3ZjYzMzJlZDA3MDI1MTU3NSBweTNrCis3MjQzNiBmODc1ODM1M2M2YzIwMmI2YzU2YjZlZTdjMDRkMzVkODIzYTQwZmFiIHJlbGVhc2UyNi1tYWludAorNzI0MzcgNTcwZDNlNThlZWE5NThiMjFhMDNmMzg4NGMyN2U3NDJhMGFhYTAyOSByZWxlYXNlMzAtbWFpbnQKKzcyNDM4IDBlZjI0MmYyN2Q3Njk5NzdhMjZjZjEyN2Y4OTFmMTNlODFlYjI0NmQgcHkzaworNzI0MzkgZDc4MDM3YzE2MjI1MDA3MjhmMTRjNGM5ZjQ2NDRiYzEwNjhiOTM4OSBsZWdhY3ktdHJ1bmsKKzcyNDQwIDU1MDJmZjJmYmRkNjNkMjdmZWE2OTJhZGIwMDJkMTI2ZWQ5NWZmM2YgcmVsZWFzZTI2LW1haW50Cis3MjQ0MSBjNjkzMDAzYjE1ZTIxZDA0NTBmNzZlMzMxMzMwZWUyYzA0N2RhNjFmIHB5M2sKKzcyNDQyIGFhYzQwNTVkMDY2YTAzZTM5NGZkMzE1Mjc0ZmMyMmIxNzhkNDhmZjQgcmVsZWFzZTMwLW1haW50Cis3MjQ0MyA0YzNhODRlNTRkMDgyNjgxNmE5MDNlYjMzN2NiMzAwNzkzZDFkOGQ4IGxlZ2FjeS10cnVuaworNzI0NDQgMGQ1ZTJhOTI4NmEyYTRiODUzZWNlMzUxMzNiMmMzM2IzNzQ1MTVhNiBweTNrCis3MjQ0NSA5MTQzZDIwZDhiMjYzOWQzODZjMWZmNjg4NjhhMTI2NjM1OTA1NjI0IGxlZ2FjeS10cnVuaworNzI0NDYgMTk4YjY4YWUyYzJkZjUzNzNhMDc3ZGYyZWEwNmFhNzAxYjIzOGI2ZCBweTNrCis3MjQ0NyBmNWY1MDdiNTVkNDY1Nzk1MTVlNGU1MDVjY2RjYzUzMjJhZmQ2NzNkIHJlbGVhc2UzMC1tYWludAorNzI0NDggOGYzZGE3MTM0Y2E1ZjA3YTM2NWNiMDJlNjVmODczM2I2MTZkYmQ5YiByZWxlYXNlMjYtbWFpbnQKKzcyNDQ5IGU1NjcxMmUxODZmOWRmOGM1YjYxZWRiMDRjNmMwNDdhMWFkZmMxODggcmVsZWFzZTI2LW1haW50Cis3MjQ1MCAyZGYyZDFmMDlkNTg1ZDcyZjQyZGNmYjE2ZGE4Mzg1OWZhMTVmM2MzIHB5M2sKKzcyNDUxIDZhNzE1NzI3ZjE5Zjc1NWMzYjQ1Mzg4NjAwODhjOWFjN2ZhYjBjMGUgbGVnYWN5LXRydW5rCis3MjQ1MiA0N2IzZmVlYTRlMWE1MWMyMDE5ZDk2ZjlhMmIyNTUyMTA3MWFkNTI3IHJlbGVhc2UyNi1tYWludAorNzI0NTMgYzE0MmU0NTM4OTQxZTYzZGQwYjI0N2JjOGZjMzdhYTYwZjk3OGY3OSByZWxlYXNlMzAtbWFpbnQKKzcyNDU0IDExYWQ2NTQ1ODA5YWM3YmZjNTE5MWFmYzdjOTU0NTE3YWQ0NGVmNjYgbGVnYWN5LXRydW5rCis3MjQ1NSBiM2IxNTU1ODNlMDU1ZDM5ODE3ZGRiODhmZDc5NTMwNTI1ODg0N2RmIHB5M2sKKzcyNDU2IDE3Zjc3NzRmNzRkZGViNmI0NDBiZTE0Mzk5NWIwNWJjZTBkYzg5YmYgcmVsZWFzZTI2LW1haW50Cis3MjQ1NyAxY2QxYjIxNDUyZDM5NTI2Njg1OWY2YzVlZGVjN2Q2NmE4ZDIyNjFiIHJlbGVhc2UzMC1tYWludAorNzI0NTggYTAxNWEyOTg1NDNkZGViMThjMjdlODczNTZkNDM3YmYwYTJlZTZiMCBsZWdhY3ktdHJ1bmsKKzcyNDU5IDA0NmJkMmE0MTMyMmZhZWFkYTdkOGZjN2NjOWRmZGQzYmZiYjM4ZDMgcHkzaworNzI0NjAgYTM2ZmEyY2U2MWIxZjNjYjY4NDZmNTcyZjU0NzllM2Y1YTlmMDk0MCByZWxlYXNlMjYtbWFpbnQKKzcyNDYxIDFlY2RjYTExZWI5ZWMyODY0MDM2MzQ0Yzg1YTliNTY2ZmI4ZmVjMzkgbGVnYWN5LXRydW5rCis3MjQ2MiAyOTkzZjA0OWUyYzk1MzMzZTZkNzI5MjIyNDYzNjBlNzQyNzIwN2YyIHB5M2sKKzcyNDYzIDU0MjBkYWUzNTVmNzNjNjM1MDFjZjlhNzI2NWNlYTc2ZGI4MWQxYmUgcHkzaworNzI0NjQgMzc0OTdhNzc5M2IyZmY3M2IwODFhYzYwNmM5ZmRiMTM1MjA5MWRmNiBsZWdhY3ktdHJ1bmsKKzcyNDY1IGYxZmY4N2I5YjQzNzNiMmI0YzhjZDQwYTgyMjBmM2QyNzRmZWJiYjcgcHkzaworNzI0NjYgMjM4NTAyNDYwNzk1YmM2MGZlNzk3MzRjMDFhNTEzMzI4ZDBhMjY5ZCBweTNrCis3MjQ2NyA2NmVjYzg5NmI3ZTczYTA1NGIxNjYzYThhZjE5MmFkNmYzMDJjOWU0IGxlZ2FjeS10cnVuaworNzI0NjggOWM3YmNiN2U3NDhjMTYyNDdkZTQ5NGU3MjFiYTQyZTFlNzkzZTcyZiBsZWdhY3ktdHJ1bmsKKzcyNDY5IGE2ZTZhNTdjY2NjMjlhNGU1NWU5MzkyNGRmZjg0NDM4MGU5YWMyYzkgbGVnYWN5LXRydW5rCis3MjQ3MCA1MjgwZjc1NWI0OGExNGI0MWEyODRhNjczYTFiN2ZkNzA4NmNlMzZiIHB5M2sKKzcyNDcxIDY5NGVlMjBjOGM3NDNiZWI2OWFhMTcxNGU1YmY2MzFkOGRmOGJkYzEgcHkzaworNzI0NzIgYmE0ZTZhM2FmNTY0ZWQ3MGZlYmU4N2M5Zjc2NTNiNWVjOTE2Y2NjZCByZWxlYXNlMzAtbWFpbnQKKzcyNDczIDVlYTU0NjM1NzIyNmRkYWRmNDE1ZGUzNWFjZDI3ZmQ2M2M0NWU5MmEgcmVsZWFzZTMwLW1haW50Cis3MjQ3NCAxNzEyNTIzZjkzNmM1MGNlNTBjYTdiZDcyNzhlYzNjN2JkNjVhZmIwIGxlZ2FjeS10cnVuaworNzI0NzUgNWYyMTU3NDc5NzQ5NWQ1NjA2YmE1ODkwZjMwMzJkMjM3MmQ0MDViZCBweTNrCis3MjQ3NiBkNGVmYzczMzg3MDZiYzRiYWU5NzU0NjdjNWRiMjI5NjQxMDcyMzAzIGxlZ2FjeS10cnVuaworNzI0NzcgN2E5ZTA4MWVjZTRjM2RhMWM0NjBhNDc4OGYyY2U4OTk2OGQ4N2FkOSBweTNrCis3MjQ3OCBjYjdiZTYzYjkxZDg1ZWE4YWVmZWUxNjVlOTdmZGZlNGU4NzNjNmE4IHB5M2sKKzcyNDc5IDBkYWU3ZmVmZWQ0NDA1Yzg0MmU0ZDFkMzJlZGY0MmMxNTNiNzQ2MjUgbGVnYWN5LXRydW5rCis3MjQ4MCA4Yjk4OTdkMTVjZmM4MGNlZTZlODAxNjBmZDU0YTJkM2VkYTU4N2ExIHB5M2sKKzcyNDgxIDIwODY5ZDk3OGI4YjQzMDlhOTJiMjdiYTc5YjY3M2Y4ZDg2YjExZTQgcmVsZWFzZTI2LW1haW50Cis3MjQ4MiBiODY3Y2UzNzVlOThjZDBkMjMzZDY3NDVkNjgxZmYyOTJkYWRkNWY4IHB5M2sKKzcyNDgzIGY0OTUwMDk2ZTdkN2I0Nzc4ODk2NDBiYmZhYmIwZDQ0YmM5ZTA2M2QgcmVsZWFzZTMwLW1haW50Cis3MjQ4NCAwNjdhNjM5ZDVmNzY1OTIyYjNjNGFmOGQ0Mjc4ZjFmMzAwMjFlN2EwIHB5M2sKKzcyNDg1IDA3MjJmMjA0ZDI2ZTA0NWJlZWZlZGI5NjBkZTBiOWU1NTc3NDVmNWYgcHkzaworNzI0ODYgZjkxN2FhZTc0MWQ1ZTYxZmZmZGUxZTk2ZGIyMjlhYTRhYjFiOTI3ZCByZWxlYXNlMzAtbWFpbnQKKzcyNDg3IGExNzEwNDhkYWY3NmY0MjU3NzcwODBhM2I2OWUyMmZmZDBiMDY1NjUgbGVnYWN5LXRydW5rCis3MjQ4OCA5ZWY2ODNkNDFjOWIyMjI5N2JjYzRiMDVjOTY1ZDZmYWJjM2U3MzJiIGxlZ2FjeS10cnVuaworNzI0ODkgNTEwZmZjNWRiMjMyNTg5Yzc2OTNhNGVhYzg4MjFkMzVmY2ZkYmNjZiBsZWdhY3ktdHJ1bmsKKzcyNDkwIDQ0NmExNWExYmVlOGZkMDY5NDQwOGNmYzQ0NmMxMGE2N2Q1MGQwMWYgcHkzaworNzI0OTQgMTE5ZTQzMjM0MDBkMDFjODIyZWIxZTBjNzVmYTVlZjBlNmJjYjYxNSBsZWdhY3ktdHJ1bmsKKzcyNDk1IDczOTg2YTljYTFkNjNkZmI1OTU0ZjY5ODllOGZjZTY2YzViMGUzOGYgbGVnYWN5LXRydW5rCis3MjQ5NiAxZDc5NDhjYjU0MzAwMGFmM2QxZmYxNDYwNjM3YWE2MzZiNTQzYTg4IHB5M2sKKzcyNDk3IGNjZmRhMTRkMTU1NDgxZjRlNDg3MGVlYjJhZTc1ZmY0NzY2MjMwZDggbGVnYWN5LXRydW5rCis3MjQ5OCBkNjY2MDNkZDNiMmQ3MThhYmUxZjc2Njc3MzdjZTBiNjViODZhMzIxIHJlbGVhc2UyNi1tYWludAorNzI1MDAgZjlkOWVlYzZiZTY3MDE3ODQ3ZmQ3ZDdjMjc3ZmM0ZDM4YmFmNzIwZCBsZWdhY3ktdHJ1bmsKKzcyNTAxIDlmNzEzZjYwNWY2MGVmZDVmNDRiNWJjNWYxZDM3MDk4YzYyMDk2Y2UgcmVsZWFzZTI2LW1haW50Cis3MjUwMiAzNmZjMDc5ODQxN2YxNGU2ZDZjM2M0MzU0NTcxN2E5ODVkNDk5MzViIHB5M2sKKzcyNTAzIDk5ZGQyOWUyNGJkZTNkNGVlNWQwNjlmMGRjOTY2NGNhYzc0N2MzYzUgcmVsZWFzZTMwLW1haW50Cis3MjUwNCA5NjJiNGZmNzZjY2EyMTM0NTc1MzNjOGFkNzYxNTRiYmFjMDU2YjRkIHB5M2sKKzcyNTA1IDkyMDdkNDI5MjAzYTFjNWE5NjUyZDgzOTk4OWE1NDQwZmI2ZThjNmUgcmVsZWFzZTMwLW1haW50Cis3MjUwNiAwNzJhOGE3Y2U5NzNjZGRlNDY0ZTg5NTBmNDE0ZGI1MzIwNWQ4MjUzIGxlZ2FjeS10cnVuaworNzI1MDcgZWI2ZWI0OWRiYWU5ZWM3ZGNmMjIxZTQ2YjdlODI3ZTBkNmQ4YzJjNSByZWxlYXNlMjYtbWFpbnQKKzcyNTA4IGY5MGIzZWVjN2MzMjc4YzVmOTBkYWFmMzg4NjMyYzE1MmIwYmMxYzYgbGVnYWN5LXRydW5rCis3MjUwOSA1ZGQzYjM4YTA5Nzc4YTY2NzNjYmZjNmUwOGY3Yjg2ZTUxNGIyYzFiIGxlZ2FjeS10cnVuaworNzI1MTAgYjc5MjBlMTgzNDIyOGY1ZWY3ODRiYmIyYTZmY2QzMjQyYTJlMWI5NSBsZWdhY3ktdHJ1bmsKKzcyNTExIGFmZDYyZWIxNjkyZWYxYWNiYWJlYjFjOWEwNTlmMWNkNjMwYzkxOGEgcHkzaworNzI1MTIgMzBlZGQ3ZjYxMDFiZDlhN2Y2ZGE5M2YyYmFkMDg3MjM5OGYzYTc5NyBsZWdhY3ktdHJ1bmsKKzcyNTEzIDMyN2UyM2E2YTYxMDIwYWUwZTFhZjY4NWNlODc3MzU3YmJkN2M2NDEgcHkzaworNzI1MTQgMjYxZjU5NDAxNGM2MjI1YTNlOTVjNjUxNTcwYzY2ZWI2OGZhMTY0YSBweTNrCis3MjUxNSAxYjE1YTU3ZTFmMDJmNGJiZTAxMzVhMjVhOGJkZTIxMTVmYTkxZTIyIHB5M2sKKzcyNTE2IGQyYjE3NjE2MWFiZjBiMzY2Y2VmYzZlMzc2ZjVmNDIyNDJkODhjNGEgbGVnYWN5LXRydW5rCis3MjUxNyA3MmE1MDM5NGMyZGRlODM5YjczNmNjMDk0ZjBkZWQ1MjQxZmJjOTZhIGxlZ2FjeS10cnVuaworNzI1MTggYWE0MWM4Yzk2MDU1MDA2ZjA3M2ZiZmI3OTUxOWFlOTgwOWVhZDRhNCBsZWdhY3ktdHJ1bmsKKzcyNTE5IDJiNDA2NTM4ODY2ZDkwOTE3NmRmMmU5OTYwNmFmZjQ5ODBkMDgxZTMgcHkzaworNzI1MjAgMjliNTE4ZjI5NmRlMDNlOGU0NzI3OGM5NDY0MjU0MjI5Zjg0YTFhOCBweTNrCis3MjUyMSAwNTZhYTc2OWRhODkxYTEwZjJlNzY0NWRmZDMwMDI2NjkyN2I2NjMwIHB5M2sKKzcyNTIyIDU3MDJkMmRhZDBmOWVjOGVlMGU3NWJlMGQyNDc0YTIzODRkNmFiMGIgcHkzaworNzI1MjQgMTMxMTc3MjhkMDg2ZGE0MjU5ZDQ1ZjM5MTY0ZDk4MzU0NmFjZGJjZCBweTNrCis3MjUyNSBhN2M1M2ZhZDEzYmMzNmQyMjAyY2I2MTEyYzAwYmYzY2I4OTM4Y2VjIGxlZ2FjeS10cnVuaworNzI1MjYgM2U4NGQ2MDEyNmI3ZTAyOWMwODJkMDkxZDhjYzQ5Nzc0YzhkNzk5NyBsZWdhY3ktdHJ1bmsKKzcyNTI4IGZiY2RhZTNlMGNhMWJlYzEwZjRkZWRkOTliMzUyYzRiM2JjYmVmZjggcHkzaworNzI1MjkgN2MyOWJmYmZkMzUyNDRkMDRjNDM5NDU4NTE1MWMwMTk3ODM3NDhjMSBweTNrCis3MjUzMCA0MWMwOWUxNDJiZDAwNmUyMDlmZmYxNDQ5MGI1MTNhMTc3ZWZmOTBiIHB5M2sKKzcyNTMxIGU5MWE3N2E0ODJlYmU0ZTFkYTk1ZTVkZDU0ZDlkZTk4NGM3OTIwYWQgbGVnYWN5LXRydW5rCis3MjUzMiAzNWU5ODAzYTJmNGU0NWU0NGRlOThhNWYzOTcwMmI3ZWNlYjM0MDIyIHJlbGVhc2UyNi1tYWludAorNzI1MzMgMDUwNzQyYmI2MGQ1YjE3Mzc0YTE5ZDVhYWRkMmNhYzAxMmQzMWEwNyBweTNrCis3MjUzNCA5ZTY3YzJmOTk5YzljY2M2M2Q3NzE0ZTY3MjBmYjViZTcxNTNiMzdjIHJlbGVhc2UzMC1tYWludAorNzI1MzUgYzYwY2RhMzQxOGI1NGY2NTA4Y2FmMjE3Y2JhMzZhNTg1NTU2NmU4ZSBsZWdhY3ktdHJ1bmsKKzcyNTM2IDhhMDQ3NzdiNTljYmQwYWU4NTNiMWY2ZDA2MmNmMzY5YmJkN2UyMGMgcmVsZWFzZTI2LW1haW50Cis3MjUzNyA1MjI0YTI1OGQ1YmIwNGUyMDc5YjMzMDNiMWQ1MmQ0ZmMzZWVmNDYzIHB5M2sKKzcyNTM4IDlhNmY1ZTA1MzFhNjMxODYzMDRkMmEyZmM2OTFiMzc1ZjMzZTlmYjcgcmVsZWFzZTMwLW1haW50Cis3MjUzOSAxYmVjNjRiOGRkMTc2YWE5NTM2ZmNmNTFjYTNmYTY1NWJmMmFhOWVhIGxlZ2FjeS10cnVuaworNzI1NDAgYWM0ODk0NjkzNDExZDQxN2VlYTJlNTM2ZGNjYjZjNzg1MWJjMGYzMSByZWxlYXNlMjYtbWFpbnQKKzcyNTQxIDg4OGRhYTAwM2ZjM2NlMzU4YmZmN2QyZjZlOGU1NjE3Nzg1NTU5NTQgcHkzaworNzI1NDIgODZhM2M5YTljNmRlNDFhYWI3YjgxZGRhZjg0NmQ2OWQzNDg3MDc5OCByZWxlYXNlMzAtbWFpbnQKKzcyNTQzIDE3YzUzZmEzNzg5MDE2NzEwZGNhMWRjMjIzNzJjZDJjZTAwODkwYzIgbGVnYWN5LXRydW5rCis3MjU0NCA4ODAzYWUwZGYzZjNhNTU2ZTQyOTdmNTE2NmMxYTY3NmQ3NDI0ODQyIHJlbGVhc2UyNi1tYWludAorNzI1NDUgMjQxZGFhMjU5YWY5NmMzZTkyMTc3NjZkMTJmN2QyOGQ1N2IyYjM1ZSBweTNrCis3MjU0NiAyODFkMmUyM2JkYjJkM2ZjMjU5NzFmZjkwNzU0OGYwNGY3YzRlYWRmIHJlbGVhc2UzMC1tYWludAorNzI1NDcgMTkyN2U4ZDc5MTQ3Nzk1N2QxOTk3OWE1MjBlNTQ5ZTEyZTMxNjkwNCBsZWdhY3ktdHJ1bmsKKzcyNTQ4IDRhZTAxYTI0MTY1MGQ1NjQ4ZjgzZGU4ZjE0NzBlM2Y3NWRiYjljNzAgcmVsZWFzZTI2LW1haW50Cis3MjU0OSBmOTgyMjg5ZjkzY2ZiOGUzNDgwYjc1MmFlMjY5OWJhZWI5OGRlNzllIHB5M2sKKzcyNTUwIGJkY2QwNWE4MWFjYmEwZWUzODhiZTgwZTM1MjZhN2Q0NzcyZDllOWMgcmVsZWFzZTMwLW1haW50Cis3MjU1MSA2MzBlNjgxMTAwZTA4ZTQ5MmE4NTAyOWNjYTg3YWRjYmIwZDlhNmMyIGxlZ2FjeS10cnVuaworNzI1NTIgZDY1ZDcxODlkZTMyY2QzZWE1NjNlNDYzNTViZTE0YjI4NzVkMWVlZiBsZWdhY3ktdHJ1bmsKKzcyNTUzIGM3NDcxYzkxMWFkMjRlZTNkYWYxZTY5OWEzMjc0Mjk2YWQyMWI0NDcgcHkzaworNzI1NTQgZWEyZTQyNWQxZjYwMGNiMWJmYTdlYjUzNjY0MDMxODQzNjEwNzJhOSByZWxlYXNlMjYtbWFpbnQKKzcyNTU1IGQwMmIwZTcwNzM3N2QzZWM2NjFhNjkzNzQzY2M0YTRkODJjZDA5ZjUgcmVsZWFzZTMwLW1haW50Cis3MjU1NiA2ZTdjN2Y0MjQ0MzZiNjc4ODJiNzRiOTM5YzhjYjBmZTllZGYyMTQzIHB5M2sKKzcyNTU3IDM0MTY3MjE0ODBiMjFjNWY5NjJhMzZiYzk5MjIxMWE3MmVkYjFiNmYgcHkzaworNzI1NTggNGViY2QwMTRmM2QwNmEwNzFkZjYxNDQ0OGU3NzU5ZmJmYTQ1MzE2NCBsZWdhY3ktdHJ1bmsKKzcyNTU5IDA0OTViYzQ3Y2QwODZhOTdiY2RjODg0MzVlNjM2MDYyOTgyZWU2OGUgcHkzaworNzI1NjAgNGI0MTc0M2Y2NTI3Y2JjOGYzMTQ0ZmI4NTUzYTM4MzI5MzkzYjU0OSBsZWdhY3ktdHJ1bmsKKzcyNTYxIDYxYzViZGIyOTRmOTUxODVhOWRlZmNlNWE1ZDBmM2I2ODg1NjYyOTggcmVsZWFzZTI2LW1haW50Cis3MjU2MiBmMjAwOTM3MTljMGVmZjEwNTZjODY1MmJjMjA2OWU1N2JmNGVlZDk3IHB5M2sKKzcyNTY0IDExOWY0MjMyYWY0NjE4MGE2NDg2OTczYzY5YmNhYjZlZDQzMmQxNDAgbGVnYWN5LXRydW5rCis3MjU2NSA5NDE0YzJiMTkyM2VkZWE4ZDM1Y2M3OTUwYzQzNWU0ZGY0NjMyYWU2IHB5M2sKKzcyNTY2IDM1YzZkNDA3ZDNjOWVkNDBiMDIzZGUwYTQzYThiOGYzZTViNTJhM2EgcmVsZWFzZTI2LW1haW50Cis3MjU2NyBlOWVkY2FmNDI1NDczZDlmMWFhNjNkODQzZjU1ZDgyNzFkMDg1ZTIwIHJlbGVhc2UzMC1tYWludAorNzI1NjggYzJlMmI0N2E4N2MxNDdiNDRiYjdjNWNjYzAyNWQ5NmIyNzU1Yjc4NyBweTNrCis3MjU2OSA4YTdlODRhZTQ2YzVkZDg1NmYzOTE5YTdlNDcxZmRjNjNhYzgyNjFiIHJlbGVhc2UzMC1tYWludAorNzI1NzAgY2NmY2EyNTg3ODg1M2U5MTdjZjMxNzNkNWQzYzFhMDUwNDk2ZjJhMSBsZWdhY3ktdHJ1bmsKKzcyNTcxIDIyMjc3ZGZmYzU3MWNhZTdmYmQ4MWE1MzU4NTQzYjQxYzBkY2I5NDEgbGVnYWN5LXRydW5rCis3MjU3MiA4OTMwNTQ4YWY3MzRlMDI2ZjI2YmQ0YzBhMTI4YTRkYmY4Zjg2OGM2IGxlZ2FjeS10cnVuaworNzI1NzMgODQ2MTZlYmYyYjRmYzA4N2I4ODc2ZDA4ZjU0ZmQ4ZGE4NGExODNhNCByZWxlYXNlMjYtbWFpbnQKKzcyNTc0IDVkMGY1YzU3MTM1Nzk3ZTk3ODViYWJkZDQwYjFmYzgzZWNkNWY0MjMgcHkzaworNzI1NzUgYTI2YWY4NWFiODk1MGI1ZjJjNzEwODRlNmZjZTFjZWQ0MTJjOWQwYSByZWxlYXNlMzAtbWFpbnQKKzcyNTc2IDU5Y2I5YzA3NGUwOTdhYzdjMmI3ZWI0NGMyMmYyNzFlM2IyYTg1NDYgcHkzaworNzI1NzcgOTQyZjJkNmQ1YzVjYzNjNmQyZDJlYzVjMDcxYjViMTg0OWNjMzM5MyBsZWdhY3ktdHJ1bmsKKzcyNTc4IGJkODBmYjgzNmI5ZTlmZDg1OGFkNWJiZDUwYTRlZTczOTliNWQ0YmIgcmVsZWFzZTI2LW1haW50Cis3MjU3OSA1NDYwNDY4OGIzZTk3YmQzMGYzMDZlN2QzYTcyOWNiMDk0OTQyNWUxIHB5M2sKKzcyNTgwIDEzNTczMDM0MTE0ODdjNTlkYzQ2NWJhZGVkYjZhZDdiZmM1YzFiN2EgcmVsZWFzZTMwLW1haW50Cis3MjU4MSAyNTgyMTk2NDZlM2FkYjlkZWMyMDBiNGE3ODNkMzdjMjc4YThmZDgxIHJlbGVhc2UzMC1tYWludAorNzI1ODIgZGZlNTg2NWU1Zjk4MDljYzVlNGJhZjcxMzc1MDVlNjQxYTk2Mzk1YyBsZWdhY3ktdHJ1bmsKKzcyNTgzIGJlYWMwYjQxY2ZiMTRmZWMxMDI2NDgxM2JkZmVhNGE2MGE1ZDI5OTIgbGVnYWN5LXRydW5rCis3MjU4NCBlZmUxMmFhOGVmMTljZDE1MWE2MDBkMWI0M2I2MTQzZWI1MzA5NDE5IHB5M2sKKzcyNTg1IGU4MjA5YWI0OTY5MTRlMjgzODA0NTI0NmIwMDliNDlmYzBkNzliYjIgbGVnYWN5LXRydW5rCis3MjU4NiAxNWE4ZjRmMmJjODQ4NDVlMjM5ZTMwZTVmMTFiNmFlNzg0MmRmN2UxIHJlbGVhc2UyNi1tYWludAorNzI1ODcgOTI0ZGJiN2ZjNmM1N2ZiMDYxYjhhYTY0NzUyMWI1NTk1NTdkYTJhOCBweTNrCis3MjU4OCBiNjM4NTcwMzcwM2UxY2M3ODFkMzVjZGVlNDg5NzhjMWU0YWIwOWJmIHJlbGVhc2UzMC1tYWludAorNzI1ODkgNWZjZTE0ZTFkNzAzMmMyY2VlMzMwM2U5NWIxOGI3OTljMGU5ZDJlOSBweTNrCis3MjU5MCA3OGZiN2Y4Y2QzNDkyMmRmMTU3MWUyYWU5MDVjNjRhYTdhYjY1ZTJlIHB5M2sKKzcyNTkxIGMyYzhkMGRkZjE4NzdhOWJhZTRlNzI1YjFlNzU1ZjJjMzllNTljYWYgcmVsZWFzZTMwLW1haW50Cis3MjU5MiBkODViZDQ5OWYzZjRlY2U3YTBkMmMwNzAzY2I5YTZkYTc1ODg5ZWY1IHB5M2sKKzcyNTkzIGQyMjEyNGM2NDRmZmE0Yjg0NTAzYzg2NmFjMDQ0NGZlN2NhZTgwYmEgbGVnYWN5LXRydW5rCis3MjU5NCA3MzVlZDE3OGRmYWU1MjViZWMxOTQ5MjE4ZWQyODRhOGRlNzEyZmM4IHJlbGVhc2UyNi1tYWludAorNzI1OTUgMmMxZDhmMmQzODM5OGZmMjk1YTY4MmI3ZmZkNjU5OGQ2YzUwOGZkZiBweTNrCis3MjU5NiAwNTQ2ODA1YjMwMjJhMDY1ZjgyNTE3MGUzMzg3ZmY5NzI5ZWU0NmU4IHJlbGVhc2UzMC1tYWludAorNzI1OTcgNjQxOTgyOGVmNjVhYzQ4MTNjYzEwNTkwNzk3MmVkODQwN2FjNDM4MCBsZWdhY3ktdHJ1bmsKKzcyNTk4IDRlYmU2YjI2MGM1NWJiYzAzNDI0ZjY3NGRmM2FmYjM1ZDYxYWM0OWUgcmVsZWFzZTI2LW1haW50Cis3MjU5OSAxOWU5NTk2MjYxMDlmMzI0NTgzYTdiMmZjNTdhOTg1YmFlZDI0N2Q4IHB5M2sKKzcyNjAwIDJkNmZmNGE5NDk1M2NmOTQzNWNjY2RkNjZkNTdkZTgxOThkMGNiZTAgcmVsZWFzZTMwLW1haW50Cis3MjYwMSBiYmI5MTFmN2MwYzI5ZjNjYWMyN2ZiMjNmMzBkZDJkZDUwNzk0NWIyIGxlZ2FjeS10cnVuaworNzI2MDIgZjUwZWRkNGJiNDhmODNiODgyOGY4ZWRlN2M4NjBhODg4YTRhZTliMyByZWxlYXNlMjYtbWFpbnQKKzcyNjAzIDY4OGQ5NGU4NmNhMjg4ZGQ0NWJhZDM0OTY0NTVmMjg3ZGI4ZDgzNjEgcHkzaworNzI2MDQgMzViYTY1ZjFjYzgxNzk2MzVkZjA2MDA1N2UyNDUzNDJlN2MyMDBiMyByZWxlYXNlMzAtbWFpbnQKKzcyNjA1IDM0N2U1OWVhMWE3MWRhNjgxZGJmZTZiNDM4OWUyMTc1NDY3MjM2ZjUgbGVnYWN5LXRydW5rCis3MjYwNiAzMTk1MjQ1MjQ4NWJmYTJiNDYwYTQ1Y2RkMjdhNGU5YmI2ZGMzMjE4IHJlbGVhc2UyNi1tYWludAorNzI2MDcgZTlhN2FlZThlODAwNDFlMTBkMjQ2MTM4NTBkZjBkNjFmYzhhZWQ2OCBweTNrCis3MjYwOCBiZDJmN2UxM2ZkNzNlZGZkMDRlZDdmNWNmNWUzMDYyMzEwNGE1MzUyIHJlbGVhc2UzMC1tYWludAorNzI2MDkgMDIzMTg3NmYzMTA0M2QxODg2MTM4MDJhYjY1NmZmZWZiNDJiYTUyMSBweTNrCis3MjYxMCBjNTE4MDgyNjkyMTRkMjIzMDgwZGI2NGQ1YmVhZGVhNjFlNDVhMTE5IGxlZ2FjeS10cnVuaworNzI2MTEgOTEzNzdkYTU0ZWRlOTU4NGFlYzA0YzE5NTU5YmY2ZGNiMTMyYmFjMSByZWxlYXNlMjYtbWFpbnQKKzcyNjEyIDg4MmQ5Nzk1NDUyNjBhYjU2MDg0ZjdhMDc3YWE1YmJkZWZmZGJmMDcgbGVnYWN5LXRydW5rCis3MjYxMyA4ZjZlOTEyMzcwMjc0MjI4MDNhZGI3ZDVkOWRiODkwZmY1OTM5NGQ3IHJlbGVhc2UyNi1tYWludAorNzI2MTQgMzIzZTFkODQ4YjVmZmZhZjcyMTdjNzU1NTA2ODE4Y2FjNWQwOGNiYiBweTNrCis3MjYxNSA4YzdjYzE2ZGM3OWM0OGVkNzVjYjdmYmYyNGEzOWZlMGM1ODNiMzE3IHJlbGVhc2UzMC1tYWludAorNzI2MTYgYTZjNGNkZmRhOWQ2ZDUwNzk1NmQ3MmMxMjVlZjBkMjdkNDZjYjFiYSBsZWdhY3ktdHJ1bmsKKzcyNjE4IGJmNjk5MDI2NDU4ZTQ5MDI0YTk4YTA2ZjIwYzg2MjBjZTU1YWIzOTAgbGVnYWN5LXRydW5rCis3MjYxOSBkZGVlNGQwNWZhMTdlYTFkYTcxY2MxNjg2Y2EzNjFhNmM0OTFjN2VjIHJlbGVhc2UyNi1tYWludAorNzI2MjAgNzgxNGJlNjk2N2I4YmEwODg1ODFmZGNhMDllOGU4YTFjMDk2NjM1MSBweTNrCis3MjYyMSBiZWNhNmQ3Y2NjOTA3NzFlY2RlOTk2MTc1NzVjODgzMDY2M2E4ODhiIHJlbGVhc2UzMC1tYWludAorNzI2MjIgM2E1ZjZiNjMzNDk5MzQ5NDY5NjAyN2I3NzRlZTk4YTgzNjAwYmUzYSBweTNrCis3MjYyMyBhNjllN2NjMDQ5YmI1ZWM5OWU3ODRlOTM5OTZkZWYxNGUyODMxOWY0IHJlbGVhc2UzMC1tYWludAorNzI2MjQgNjdiYWYyYzE3MzY5Zjg0ZjZlNmMzODU5ZDk0MzkxMDI3ODI5MjhlZCBsZWdhY3ktdHJ1bmsKKzcyNjI1IGIwNWQ0NzlkMWNiMGFkZmFiYTg5ZTg1MTE4YWZlMTYzMGFlYTk1NjkgcmVsZWFzZTI2LW1haW50Cis3MjYyNiAzOTFkYjgwZDFhZjRjZjI2Y2JiYjNhOWM4YjQzMDYwMWI3NWY1ODAwIHB5M2sKKzcyNjI3IDM3ZjkwZjJmNDAzNDlhOGNmMGVmZmI2YWU4MGQxMjRjYTJmZDg0YjEgcmVsZWFzZTMwLW1haW50Cis3MjYyOCAxZDA0OGM5ZjQzZGM2NmEwMmI2MmM4N2M3MjJjOThkODUwYjhmOTUyIHB5M2sKKzcyNjI5IGFhNzdmZDg2MjZiYTk3NzcxMGM3MjM2Njg2NzI1ZGY5NDU3NzY1NTIgcHkzaworNzI2MzAgZTk2MjEyOTY2NWQ4MDQ0NzViMmJmMTE2NTY5YTM5ZTUzZjNmOGQzYiBsZWdhY3ktdHJ1bmsKKzcyNjMxIDkwYTgxMDJkN2VmYmQ2OTAwZGQxM2FiODA2ZjY5NmI1Y2M3ZmFlMDcgcHkzaworNzI2MzIgYzcyZDRmY2UzMDAwNTk3ZGMxMjU5MTIzMDVkZmFhNjEzODAxZGRmMiByZWxlYXNlMjYtbWFpbnQKKzcyNjMzIDZkNjkxNDE3N2Y2MDI2NmI1ZGEwNDQ3MzM5OGQ2YzA3NTRhZGI5Y2EgcHkzaworNzI2MzQgOTEwMzA5Mjc2Mzc2NzRkZjViMTMyMTk3Yzg2ZWMwYWE2ZjRmZjRlYSByZWxlYXNlMzAtbWFpbnQKKzcyNjM1IDA3YjVmMjBkMDI1YTg3Zjc5M2I2YTMxMmY5NDcwN2RmYWQ3MWE4YWIgcHkzaworNzI2MzYgMzhlMzU0NjA5Y2YyZDU2NjJmZmM4OGMwNTkyNWNiYjc1MTJkMjA0NiBsZWdhY3ktdHJ1bmsKKzcyNjM3IDJhN2NlMTNjZWEyNTA4M2Y5OTYyZWFlMWJhNzUwOWRmZDc1MGJlZWUgcmVsZWFzZTI2LW1haW50Cis3MjYzOCBlNjkxMjBiZTY1YzQ1Mjc5MDlkOWExZjAyOTEwNDk3ZjFkMTQwN2MyIHB5M2sKKzcyNjM5IDBmY2YyYWNkZTQ3MzZkMmFkZTA4ZjY3ZjJkZTM0M2Y2OWFhOWE3MjggcmVsZWFzZTMwLW1haW50Cis3MjY0MCBlNGQ5MzdmNzg5YTExMzE0ZmUxYmQyZThiMGVhZGZjMzE0YjAzYjdkIGxlZ2FjeS10cnVuaworNzI2NDEgNzNkOWI5NzM1NDI0OGE5MGE4ODJmNTQxZmY3MjExNjVjMDgxMWE0NCByZWxlYXNlMjYtbWFpbnQKKzcyNjQyIDNjNGIxYjQ1MDFjMWI0ZDg3MjMyYjRiNGE4N2I0NWE1MTE3NWQ1MWIgcmVsZWFzZTI2LW1haW50Cis3MjY0MyA2YmU1ODU0ZTVkZjdhYWJhZDYyNDg1YTczMTdhNzkxMDkwYzI5MTQ3IHB5M2sKKzcyNjQ0IDdlM2Q3YjUyMjRiMWVhYjZhZWFkMjIzZTAyNDE5ODkyM2EzYzRlOTUgcHkzaworNzI2NDUgOTFlYThmY2Q0NTdlNWMxNDIzNGI5Njg4ZDg5NmM0NDFkYzExMDEwZiBsZWdhY3ktdHJ1bmsKKzcyNjQ2IGFiMzBiMjM3YjYwMDA5YjcyN2Y4Y2FiYzhjYjIzYjU0ZjkyZjA4Y2MgcmVsZWFzZTMwLW1haW50Cis3MjY0OCAxN2QxOTQ2NTQwZDQ3ODcxOTYwMmVhNTRiYjY4OGZhZjAxNTRjMjhlIHB5M2sKKzcyNjQ5IGVlMjE1NjQ5ZmFlMDYwOGNjNGU5MjVmMzNhNDkyOGZkZWYxYzJiNDAgcHkzaworNzI2NTQgZmIwMTk3MTk0OWE1NTQ1NTAyMGQ0ZWEwMzcwZjI0NjA5ZDc4ZGYxMyBsZWdhY3ktdHJ1bmsKKzcyNjU1IGU0NTE4NmVkYWM5MTlhZGJhYTc2NDk5ODdjZjMzZWEwMTFjYjMxYTggbGVnYWN5LXRydW5rCis3MjY1NiBmNzZmMjNhZjIyOTVhZTUzNjg1OGZjYjVhNDM1ZjQ1MDY3MzIzMTk2IHB5M2sKKzcyNjU3IDlkNTAzNzA3NDQ0ZTQxODc4YjVmNmI4MzNjZTYzNjQyNzg1NzU3NmMgcHkzaworNzI2NTggYjYwMGU1MTAzYzYzZTIzZWJkNmI4NjliNjk4NTU4ZjRlMDViMDNlNCBsZWdhY3ktdHJ1bmsKKzcyNjU5IGIzM2I0MjQ5YjE4NTg1MjIwOGNkODVhMTFmOTYxNTg4NWY4ZDZlNjMgcHkzaworNzI2NjAgZTNkZmNkMWZlMjEwZDY1NWU2OTZlYzgxZjNhNDhkNDZlMGNmYTU1OSBweTNrCis3MjY2MSBhN2MzNGY3MjhmMGU4YWQxMzlhYWY1MzVhNTI2ZDlmMDFmMGZjMDY3IGxlZ2FjeS10cnVuaworNzI2NjIgOTNlZDY4Yjk5OWU3NTdjZWU5ODI4MjU1MzM2YWU0ZDVkZDJjZWVmMSBsZWdhY3ktdHJ1bmsKKzcyNjYzIDg4ZDk2NWJlODYxNzI1ZGZmMjE1MzYyYjBiMDAyOGEwYmRhZTk5MGMgcmVsZWFzZTI2LW1haW50Cis3MjY2NCBkOTAyZjM0OTQ0OTk2MDhjMmVjMDQzNDZkYzQ2NmY3MjEwZTQ2MWVjIHB5M2sKKzcyNjY1IGRkOTE1OGZiMDg2NzgzZjQ4ZjkxZGM5MTY5YjQyYWM4MTllNTc0M2QgcHkzaworNzI2NjYgOWJiMmExMzcxZGRjNDAwNTE4ZjIwZGE2NzFlNTc4Njc3NTIzNDMxYiBweTNrCis3MjY2NyBlNWYyODg3NmFlNmM5M2JhZTllODcwZWI0ZDY4MTNiNDQ3YjVhZThkIHB5M2sKKzcyNjY4IDBkOGRiODFhNzg2YzY4YWNmMWFmZTM3YTFlZDhkYTc3Y2Q4Nzc3NzMgcHkzaworNzI2NjkgYzQwZjE4N2FmNmRkYmNmNzk4YTE3NGEyYzM4Y2I2NGRjNjA3MThmZSBsZWdhY3ktdHJ1bmsKKzcyNjcwIDg1ZmI0YzIyOWE5Y2VjMjFjODEzNTQ2ZTI5ODY2NjJkNjk5MGU0ZTIgcHkzaworNzI2NzEgYjQyNjFkYTRlYTUwYzM3NmY0MDg0NmZlNWVlOTYyNjEwOGI5OGYwYSBsZWdhY3ktdHJ1bmsKKzcyNjcyIGNkNGE3ODI3ZWRiNjhhNTY5ZDBkYzZhNWU2MjYzNGZmNmFlODVmNWIgcHkzaworNzI2NzMgMThiMmYyY2QwNzQxZjRhMjNkM2QwZTkyM2FmZDlhNDY2MzU0YjYzYiBweTNrCis3MjY3NCA5NjEwOTQ3MDUzNzAyOTBjYzVmZDc4Mzg5ZjgyNTYwMTBkOWExYzMxIHB5M2sKKzcyNjc1IDkwZTJiZmU0ZjYwZTdhMjUyNDJkMmI1YjI4MTdhODhiOTI3NTk4NjUgbGVnYWN5LXRydW5rCis3MjY3NiAzNGI2MGI3MzZhZDMzZDU0ODM2NjVlOWQwMzlkN2IxNTZjMjEyMjgzIGxlZ2FjeS10cnVuaworNzI2NzcgMmNhMTE4Y2FhZTcxNmE3Yzc2ZDlmMGI4ZGFlZjhhNjVlMDE3M2ZkYSBsZWdhY3ktdHJ1bmsKKzcyNjc4IDc5MDk5MmJlZGQ2MWQxZTdhZmMxMmZkY2VjODViNjRiZmUwZDViOWQgbGVnYWN5LXRydW5rCis3MjY3OSA4ZThlODdjMWVjYjdlYzU3ZGUxNTAzYzFkNGUwODExOTk3ZDcyZmM2IGxlZ2FjeS10cnVuaworNzI2ODEgZDUxNGE4YjdhZTc4YWUyYWJhYzUwZDdlMjMzN2VmN2ZhNmEyZDJkZCBsZWdhY3ktdHJ1bmsKKzcyNjgyIDQzZmM0NWQzY2IyMTZiNWU1NDg2NTgxM2U5OTVlYWFhMTljMTdhOWIgcmVsZWFzZTI2LW1haW50Cis3MjY4MyBhYzY2MGVhMzVmNTI1ZGEzNjJjMWJiNjBmZjJjNTBjNTUxYTljNGQyIHB5M2sKKzcyNjg0IGMzZDRkOTNjODllMjU3ZWU2Y2EwMzk2YWIxN2U4ZGYzOTg1ZDhhNDkgcmVsZWFzZTMwLW1haW50Cis3MjY4NiBmMWJmNTM4Nzg2YjdjOWViYjVjMjFhNTE3ZTBkY2RlYmM4OWNkOWZiIGxlZ2FjeS10cnVuaworNzI2ODcgOTg4Y2E5OGQ5MTk2MmJmYjAyZmViYTY0YWE2MWIwNDNjYjkxYzc4OCByZWxlYXNlMjYtbWFpbnQKKzcyNjg4IGNhNzg0N2QzYzQ1MTk0ZjBiODk0Y2Y0NDU0YjNmZjNlYmM0YjU5OWYgcHkzaworNzI2ODkgMWY4YWNjZDFmNDJhZDAwNGVmYmMyZDI1Y2E4NWY0OGU3ODJiYTcwZiBsZWdhY3ktdHJ1bmsKKzcyNjkwIGFlMDA2Mzg2ZWMzOTNiMjYzNGYzYTY2ZmY2MzRlMDJkYjc2OWM1MzIgbGVnYWN5LXRydW5rCis3MjY5MSBmOWY5OTdjMWZkODEzYzc1MzBhNTU2YWY2NjBjMTY3N2Y3ZTdkZmY3IHB5M2sKKzcyNjkyIDY5NTY3YTA1ZDVlNjU3MzZkYzMwNGJiNzk1N2Q5OTM4NGRjYTM5ZmIgbGVnYWN5LXRydW5rCis3MjY5MyAzYWE2YTg2M2ZmMDY5MWU1OGNkYjI1OTJiMmM0MDUyMmU5OWRlYjg3IGxlZ2FjeS10cnVuaworNzI2OTQgMWNiODA0YTJlMDM4Nzk2OTdhMmQ0YWE4OTkyYjBkZjQyZWRiZGU2OCBsZWdhY3ktdHJ1bmsKKzcyNjk1IGExOThlOGQzNmVjM2I1NzgwMWNmMjkzMjJlMzYzNTA0N2Q1ZTVmZjkgcHkzaworNzI2OTYgYTUzNTk2MDk0NDQ0MTM4NmU0NDQ3ZDgwZTg3ZTFlNjQ5MjRlMDMyMSBsZWdhY3ktdHJ1bmsKKzcyNjk3IDgzZGQyYjI1MmEyNzY0NmM4YWExNTZjOTQ4YjExNmI5NGYzMjgyOTYgcHkzaworNzI2OTggZDY0ZDQ3ZWU1NGExODE2OGZkOTJmMmViNDEzMzhlYzJjMDBiZTZhYyBsZWdhY3ktdHJ1bmsKKzcyNjk5IGRjZGE0NDhjYTY2ZTg3MjZiNjY4ZjZlZTQwNmNiNGU3Y2NmMjFiZDMgbGVnYWN5LXRydW5rCis3MjcwMCAwZTNhY2U5Zjc1MTZkYjRmZjVkZjkzYjkwM2Y2MWRkMjgzMTFmNThjIHJlbGVhc2UyNi1tYWludAorNzI3MDEgNzdjZmVmNTk2ZDMzNTBiNTk3MDJkZjFkNDUzMmUzYmQ3MTAyYzU5MyBweTNrCis3MjcwMiA5MDFiNGZmZmVhMWY4MGRlY2FiNzI0ZTM0MzI2ODlmYzc1MjY3ZjEwIHJlbGVhc2UzMC1tYWludAorNzI3MDMgOWI5MmQyYjg2YmFhZWYyMTE0ZTA4Zjg4MGU1ZGU5NDdhOTI3ODAyMSBsZWdhY3ktdHJ1bmsKKzcyNzA0IGQyNzMyZWE5OWJhMDg4ODNmNThjYzJiNGNjYjViNjlhYzc2M2M1MjAgcHkzaworNzI3MDUgZThmMWEwMDc3NzFhYTkwYjhmMDkyYzk1MTIwMzJjNGVmMDIxNTA1MCBweTNrCis3MjcwNiBiMjJiMmRhYWViNDRmMzllOWIzMjc0Y2NmMDlhMTFlOWRlM2RiMDA0IHB5M2sKKzcyNzA3IGQ4NDFmOTcyNDNiNTc0YWQ4NTMzZTY5NDA4NzkwOTg4ZTJiNmFmYzAgcHkzaworNzI3MDggYjUyYjkyZjMxZmE4ODljMWE1NDhhZWVlMWJjZjBjNzZhZDhhZWEzZCBsZWdhY3ktdHJ1bmsKKzcyNzA5IGY0M2ZjMTE5M2MyYWIzODg0NzU2OWRlYTU5ZDY3MDA5MGU5MTRkNTkgcHkzaworNzI3MTAgZTljMDhmZmE5ODk1MTM1YThlMWQ5MzIxMDM3YTYxNTNhNjk1MDJlMSBsZWdhY3ktdHJ1bmsKKzcyNzExIDEwY2ExMWU1OThlNjkzY2YzNzI2ODI0Y2M3MDgyM2NiMGIwNjgyYzYgcHkzaworNzI3MTIgYzViOTgyYWYyMDlkN2JjMzhiMzZjOTAyZDc4YWIzY2M5MGIyMmIwZSBsZWdhY3ktdHJ1bmsKKzcyNzEzIGZlOGQzZmQ2NmQyNjRlYzIwOTIzYWY5ZGJkODhjZjZmZDliYWM3MDggbGVnYWN5LXRydW5rCis3MjcxNCBiNmI0NTRiMDZhN2IzNWNhMTFhMGEyNjUxNjc4NmI2YjUzOWRmNzFlIHJlbGVhc2UyNi1tYWludAorNzI3MTUgZmM3OTM1ZGU4ZThhZGE4YzZjOTRkMzUzOTY4ZTVhNzVhYmQ2MTUxNSBweTNrCis3MjcxNiBkNDA3Mjk3NTVlZGZjYzI3MmVlY2FkM2YwMTkwMDIzNDg4ZmEzOGQ4IHJlbGVhc2UzMC1tYWludAorNzI3MTcgMzViY2U4MGEyNWY4OTk4NmFlYmNhMTQ3ODJmMjRmMzU1Yjk1NDc1NyByZWxlYXNlMzAtbWFpbnQKKzcyNzE4IDk5YjQwMDg2MTU0M2VhNDQyMTY3Y2Y5NmY5MmUyYzhmYzJlYTlhNDIgbGVnYWN5LXRydW5rCis3MjcxOSBhZGJjNjYyZmY0YzFkMjhhYmJkMDUyMWRiNTcyYTBmYzFiYTE3ZjVlIHB5M2sKKzcyNzIwIDBlOGM4YjBkODY2OWU0OWQ1ODFiNTg0MjBiM2UyOGNhYmNkNzAzYzQgcmVsZWFzZTMwLW1haW50Cis3MjcyMSBmMjUzODE4M2QyNjIxZmEwMDlhZTJjZGQ3MmQyODExYjMzM2U5MWQ1IGxlZ2FjeS10cnVuaworNzI3MjIgOWQ4MWUyYzQzOGRiOTcxYjVjYjA5YTkwNWVlYjFhZjNhMTZhOGZlOCByZWxlYXNlMjYtbWFpbnQKKzcyNzIzIGUyMjE3MzYxZWIzN2E3YmM4NGYxNzEyNmVkYzhmNmVmYWQ4MmMwZWQgcHkzaworNzI3MjQgMTA4ZTkwYjg5MjNlYTJlYTk1Y2UwY2IxODg4Y2JlYzlkMTMyNmU1ZSByZWxlYXNlMjYtbWFpbnQKKzcyNzI1IDgwNmVmM2ExZjg1OGQxNDI2YmRjMzBiNDkzZDI0OWRkOWE2YjRjMjkgcHkzaworNzI3MjYgMzY3OGIyZDM2MGM2OTg1NDg5ZDUwNjExOTY5YjNiYzgxNTYxMTA4OCByZWxlYXNlMzAtbWFpbnQKKzcyNzI3IGRmMzgyNjQ3MmUzYmY5MWNkZWQ3Yjk0MGVkMmM1YjhlODZkYjI5YWIgbGVnYWN5LXRydW5rCis3MjcyOCBmMGIwOWQwNTM5YzA5OTU3NGY4NTQyNTk1YmQxOTE5MGNkYWViMDlhIHJlbGVhc2UyNi1tYWludAorNzI3MjkgNTZhZGY4NjRmMzgwOGRkMjI4YmNhODRhOWE5ODlkZjk2ZTYxZGY2MSBweTNrCis3MjczMCA4ZmZlYWY2NDk5NzA4ZWQ2Zjc2Y2IwMzRjZGEzOGMyMjNmNDAyOTU1IGxlZ2FjeS10cnVuaworNzI3MzEgYzAwOWIyYjM0ODFmOWNmYzVlZDYyMTk5YTU5ZTAwNDQ0YmMzY2YyZCByZWxlYXNlMjYtbWFpbnQKKzcyNzMyIDg3ODMwNDYxYWI0Mjk3MmM4MWYzNmUyNmU5MGFkYjZhZGVlOTJkNGUgcHkzaworNzI3MzMgNzZhOWY5Y2I0MzhmNTA5M2YzZWIwNjFhZDZiY2QzYmRjYWYwOWM2MyByZWxlYXNlMzAtbWFpbnQKKzcyNzM0IDcxMTZkZTNkYmU5ODNhNmRmMzk1MjdjMGViMjJiNTAxYzY0YzMwZTcgcmVsZWFzZTMwLW1haW50Cis3MjczNSBmNjVkZTM2ZjE4NWM1Y2Q1MDNmZDYwMjRkMzE0NzVjZmE4Nzc5ZjI4IHB5M2sKKzcyNzM2IDE3OGY3MGZjNDc4ZDc5NmI2YTlhOWVlMjdjOGNjY2EzMzIxMzFjZTkgbGVnYWN5LXRydW5rCis3MjczNyAzYmZkYjhkNzI1NjBmY2ZiMmRjN2EwYTIzOTU5MzQ0YTA0MTZlOGE5IHJlbGVhc2UyNi1tYWludAorNzI3MzggZmI1OWE1MjY0YWUyNWM5NTA4OGI1NWIzNDc2ODhhZmViYmEzODdkMCBweTNrCis3MjczOSA4MWM1NzkwMGExODI1YTgwM2E4ZmQ4YmEwNTNmMDZiOGVlMzhiZDI4IHJlbGVhc2UzMC1tYWludAorNzI3NDAgZmJiMzMzOTBiMjU0OWIyZjRlMDUwOTVjNjZlOGIxZTg4N2YxN2JmYyBweTNrCis3Mjc0MSA5MDRhMWJkMzVlMDA4OTJiNTRjODcwZjQ0ZWUyMmE5ZTVmZjAyNTQwIHB5M2sKKzcyNzQyIGQxNDNlYjYyNGNmNWUyZmJmYjljMmQzZmJlMmZmMDIxNGNhMzFjMTQgcHkzaworNzI3NDMgNzRiNjc0OGI2M2Y1ZmNhYjFmMzBkYjc3ZmM2ZmQwNDU2M2E5ZmIyMiBweTNrCis3Mjc0NCBkMDk5NGE0MmI1OTc1YjI2MGU3NWI4MDEzMDQ4N2E4YTdjMWE2NTEwIHB5M2sKKzcyNzQ1IDQxYTY5MjYyN2VlYjNjNTMzODA0N2YxNDdhMTljZjc2OTdhYWZkZWYgbGVnYWN5LXRydW5rCis3Mjc0NiA3Y2IwYTQ1NDdmMGEwZjgzMmJmNjZlNzM2YzNlOGViNmEzMmM3ZTNlIGxlZ2FjeS10cnVuaworNzI3NDcgMGZmYzk1NTg3ZDdjNDU2MDM0MDVhYmJjODk3MDQ1MWM5ZjE1YmM0OCByZWxlYXNlMjYtbWFpbnQKKzcyNzQ4IDE3ZDA3OGM1ZDY1YjUyMjk5ZjExYmNjODZmNTQwNmE5NTRhNGViOTUgcHkzaworNzI3NTAgNThkM2M0NTRiYzM3MjQzOGI3YTI4MTY1NmI3MzY3ZmJhYTE2OGQ2MyBsZWdhY3ktdHJ1bmsKKzcyNzUxIGY5MzViOTU5ODAzOThkMGQxYWY0MjVmMTIxZmViZTExZmNkYmFhZWEgcHkzaworNzI3NTUgYTdhZDE2OTY4NjZiNGRkOTY5MmYxZDQ1MTFiOGQwNjc5Y2JjYzA3ZiByZWxlYXNlMzAtbWFpbnQKKzcyNzU3IDJiN2NiNDJkZGUxMTY3ZjA1Nzc1NzA1ODg0NTk4YzRmMDY5NmJmMGYgcHkzaworNzI3NTggZTNiYjZiNjJiZDBmNTA3NWQ1N2M5ZTMxYzE0ZTJiZjRiZjYxYjYzNSBsZWdhY3ktdHJ1bmsKKzcyNzU5IGQ0NzNmYmE0ZWM2NzU3YjA4NTQwMzgyNGFmMWQwYzZmOTA0NzYxNzMgcmVsZWFzZTI2LW1haW50Cis3Mjc2MCA5NGQyODNkM2QwMGJmNzRiNzE3NTA3NDBhMjlkNWZjMzQ0NjEwOTEyIHB5M2sKKzcyNzYxIDZhMzU5ZmQyNDY2OTNmNDlhZjY0MGIwYzNhMjNkNjY1MWFjNzUxNWUgcmVsZWFzZTI2LW1haW50Cis3Mjc2MiAxNzBkZGY5NjBmZGRkOGQ5MzkyMDU3OTQxODk5Nzk1ZjU2ODc0NzI5IHJlbGVhc2UzMC1tYWludAorNzI3NjMgNzFlYzRmYzY4M2FmOTI2MzRiYzMwOTcwODM5MGJhOTE4Y2Q2MDkzOCByZWxlYXNlMzAtbWFpbnQKKzcyNzY0IDE0M2FlY2M4MGI2YjZkNWIwMzQzNTZjOWQ3YWQ2ZjAwZjI1ZmMyM2QgbGVnYWN5LXRydW5rCis3Mjc2NSAyZDA2YTMyYTEyZTM3MDZmZTBiNWQzMWMwNjVjYTE0MTI0OTBlMzM4IHJlbGVhc2UyNi1tYWludAorNzI3NjYgNzM3YjNkNGFjYmI5ZmI3MDE3YWU0MmZlOGMwNjNmN2EyZGZkOWVmNCBweTNrCis3Mjc2NyA2OGRjZTY1NTA2ZDlmYWFiMDI2ZDNkNGQ2ZGY5NTU4OGIzZTg5MmQxIHJlbGVhc2UzMC1tYWludAorNzI3NjggOGQyNjFiNzZkYTQ2YmY5NGI2MGVmMWYzMGUxMjMwZWVhZjEzMThhMiBsZWdhY3ktdHJ1bmsKKzcyNzY5IGNlZTgwZDA2ZjdjZTljNDYzOGFkZmIxYWVmNWI4Y2UxYzA5NmI4ZGYgcmVsZWFzZTI2LW1haW50Cis3Mjc3MCA5YTA3ZTlkNjA5M2FkYTQyZTExZDQ4ZDAyN2M2MDk2OWRlY2I3MWNlIHB5M2sKKzcyNzcxIDdmZjdiZWYzMjkxMTY5NDQzMWMxNzcwYjVmYjdkNjU5NzRhNWI1ZjUgcmVsZWFzZTMwLW1haW50Cis3Mjc3MiAwMGViYmYxY2U5MzYwMjY4MDI5YTJhZjI3OTlmNmJhMTNlZWU2ZjJlIHB5M2sKKzcyNzczIGFlMjBmMWViZWMyMWNjZWEzODkzOGE2YmY2ODE1ZTAwYjBiMmNlNTMgcmVsZWFzZTMwLW1haW50Cis3Mjc3NCBkYWNhZDQyODM2ZGQ2MDBjNzg5NGMwZjQ4YWE1MGQwMmNmMjU3OTgxIGxlZ2FjeS10cnVuaworNzI3NzUgYzEzNjg4N2RiN2VmZjRjYjAxZmMzZTFlMzRkYzVlOTlkODY1YjdjOSByZWxlYXNlMjYtbWFpbnQKKzcyNzc2IGQ4MzUwZDA0NGNmMjI4Y2Q2ZjlmN2NkYjc2NzIzMWQzMTIzMzE0MTEgbGVnYWN5LXRydW5rCis3Mjc3NyA2Mzk1MzQ3YzAyNzYyNmFkM2ZkN2I1ZDM1MDc3OWU5NTg3MjUxMmU4IGxlZ2FjeS10cnVuaworNzI3NzggOTQ1YzY1NzQ0N2QyMWU2Njc4ZDg0NTY1MGMwOWUxY2VmZGQxYzIyNCBweTNrCis3Mjc3OSA4ZjE3MzYzYjkzZTZlZDFjNGE3Y2IyNmYxYjY2M2QyMmRhMjkxZjlmIHB5M2sKKzcyNzgxIDg4M2FjZTdlYTQ0NjY2NDBlYTFlN2Y2ZTYzNDFlYjZhZGVlOTU2MzIgbGVnYWN5LXRydW5rCis3Mjc4MiAyOTAxYjEzZmJkN2U2MmU0ZjZiMjI4YmY4Y2EyYTJiODM4NDJjNWQ5IHJlbGVhc2UyNi1tYWludAorNzI3ODMgOTM5NGE4MmQ4ZGUxNjk1ZjJlMTk4YjRjYTAzMzYyMzA5N2Q4YzRmNSBweTNrCis3Mjc4NCA2OWU5NDM0ZTQ1MGFkZWJkY2EyYTc5MTYyZWY0MzUxMzIyOTc0NzI1IHJlbGVhc2UzMC1tYWludAorNzI3ODUgZjc2NTBhMGU5MGFkYjVmNmM4NGZmNDJhMTBjNGEyMWRiYzRhMThiNyBweTNrCis3Mjc4NiA3NGJkYjBlNTIxMmJkZjIyMTZkNTE0YTM3N2ViNjQ2ODU5MTFlZjlhIGxlZ2FjeS10cnVuaworNzI3ODcgNzZjNDQxNGQxMGE2YzFjMTYyZTQ1NDVhM2MwZTVjNGM1MjE4MTE2MyBsZWdhY3ktdHJ1bmsKKzcyNzg4IDZmZDAwOWVjMjI0YTczOWY4ZmQxZGRjYzE1NTlhYzEwZmFmNTBjNDEgcHkzaworNzI3ODkgYWIyM2ZmMjA0N2FhMGQ4YTlhOTVkNjQ3NDRkNjg2ZTIwMWRiMTE3YSBsZWdhY3ktdHJ1bmsKKzcyNzkwIGM3ZmQ3NDFjNzJlYmViZGY0YzJhNDdjOWM3ZWQxZjBhMzYyZTU1NzkgcHkzaworNzI3OTEgMDU2MjgzYTVjNWRhMDAyZWRkYTFmYjZmZjZkYjBlMDZhYzczZTVmZSBsZWdhY3ktdHJ1bmsKKzcyNzkyIGYyNzVkNmEwYTFkMTc3OTczZTQxNDBhYmEwMzExOTQwNmM4ZjExZTkgbGVnYWN5LXRydW5rCis3Mjc5MyA2ZmFiOGJkMTVkNzEwZDg1MTc3ZmY3ZjFiZTJhODNmNWJjMDI4Y2YzIHB5M2sKKzcyNzk0IGE1MmNlY2FiZmZkNGMzMjgwMDEwNDNlNTk0YjgzMWMzNGJhNDQ0Y2UgbGVnYWN5LXRydW5rCis3Mjc5NSBiZGRmMTFlNjIyMDAwMmE5MmY2NTYwMDcwYjk3ODU3ZGVkYjY4MzRjIHB5M2sKKzcyNzk2IDRjZWVlZmI4NTU1ZTYzOWFhOWY4ODdlNDFjMTRlYzBmMjFjMmM2YmYgbGVnYWN5LXRydW5rCis3Mjc5NyBhZDc3MjI2MTExYjI2MzBhZGIzNjU1YjNkNWUxNjMxNDBiMTcyNjJiIHJlbGVhc2UyNi1tYWludAorNzI3OTggMDgzYmEyNDkwNWFkOTE5NzgyOGYyNGE1NjFmZGRmNjMxY2NkMGZiNSByZWxlYXNlMzAtbWFpbnQKKzcyNzk5IDRmYTRjYTQ1MDNjOGRmNjFlNzliZTA0ZDM1MGJhZDM5NjkyODZmNmYgbGVnYWN5LXRydW5rCis3MjgwMCA3ZTJhNmMxZGM5ZDIyMzYzZjkxYjkyY2FlYTRmM2RkNThiZGNlOTYwIHB5M2sKKzcyODAxIDZlNDBhZGQzZWUwMmE3YWVjYzMwNzYxZWE4NTc2NDllZTk3ODM3ZDAgbGVnYWN5LXRydW5rCis3MjgwMiAwMjNhMzQyOGYxYWVmNjhkNDdmYWM3MjFkMmE5ODU0MGI5ODc5ZTgyIGxlZ2FjeS10cnVuaworNzI4MDMgNjcwZmEwYzBmZjlhZjJlNjcxMWZmZGY3ZGUzYzgwNzI2MWFkZTg0NCBweTNrCis3MjgwNCA4OTIxMzA0YjVmOTIyYTQxNWJkYjdhMGRkMjRiMGI5NzAyYTg2ZGMxIHJlbGVhc2UzMC1tYWludAorNzI4MDUgZDJjY2Q4OWU4ZTZiOTUxM2QyZThjNjQ5ZWQ2NmU5MmE4YjgwMjY5YiBsZWdhY3ktdHJ1bmsKKzcyODA2IDM3OWU2M2JjYmQwNDQ4ZjZhMjA2NzFlYzY5ZTM4MjRkZDRlZjhhZWIgcHkzaworNzI4MDcgOTNmNGE5YWQyNmY2OGQzM2JmODFiODJhMDkzNGY2NDExOGZjMTRiZiByZWxlYXNlMjYtbWFpbnQKKzcyODA4IGIzMzI2ZmU2MzJlNWE3OTNlMTk2ZDkxNGVkMzgwYzJhNmI1NDYwNjAgcmVsZWFzZTI2LW1haW50Cis3MjgwOSAyZDZmZmY5ZmU4YWI3MzZmZjIxYTU4YWFmOWU2ZmU1OWJlMGE4ZDRjIHB5M2sKKzcyODEwIDQ1MDFiNjM4ZmMzZjI5NDBkMzJiZWI2YWY2NjE1ZmIxYjc3NzhmYTcgcHkzaworNzI4MTEgOWQ2NDU3ZjNhM2VkZjQ1YTBlMmM5NDllZmIwZmQ0OGRmNTM2NWVkYyByZWxlYXNlMzAtbWFpbnQKKzcyODEyIGViOWIxYWMzZDlkODcwNDZmZWZjZTU2NjhjZjMwYTE5YWUyM2UxZDggbGVnYWN5LXRydW5rCis3MjgxMyBjYzA1NTczNTYwMTRiZDVlYmQ3ZjJhNzUxZDczZTlmNjljMTI1NGViIGxlZ2FjeS10cnVuaworNzI4MTQgZDYxYWIwNDRmZGY0ZDE4MGI1NGU0MThkNzQ5OTcxYjg0MWUwMTBlYSBweTNrCis3MjgxNSA2MDQ0NDQ1MDJlYTAyNzdmMzg4MDM1ODQyMDVlNWQ5OGY1MjdkYzFkIHJlbGVhc2UzMC1tYWludAorNzI4MTYgMmMzNWI4MTZhYzBkYWFkYWI5YzBjMDgyMGFlYjYxZGE0MWQ5NTA3NSByZWxlYXNlMjYtbWFpbnQKKzcyODE3IDFiNjJiZmZkMmVmMmUwZDVmZTJiZmE0MjhjY2U4YmQ2ODY4M2U5YzIgbGVnYWN5LXRydW5rCis3MjgxOCA0MmRiYmVlNjZjMzIyYWM2NDU5MGY1MWMyNGQ2Y2Y4ZDk5YjJjNDQ2IHJlbGVhc2UyNi1tYWludAorNzI4MTkgNGZiY2U2ZDNmZTg2MWRlN2NkNWE3NjBjOTUwNzRiMTljOGI3YmJmYyBweTNrCis3MjgyMCBmYWUzYTc3ZDIwMzIxOTE5N2MwYzZlOTJjOTU5NjRlYzhiNGZkMGFkIGxlZ2FjeS10cnVuaworNzI4MjEgYjY2ZGFmYjQwNjQ5NDMzNWU4YjMzZWU1YjEyNGM1MjAwNjliM2ZkZSBweTNrCis3MjgyMiA2MDc0ZmI0MTE2MjE2ZDEyM2U3YWVlOTY3ODY4NjY4NTNjMGIxZTY4IGxlZ2FjeS10cnVuaworNzI4MjMgYzgzYTE3MmVlOTMxZTU3OWMzNzJjOGI5NjkwYTJmMGY3MDdmMmEyMiBsZWdhY3ktdHJ1bmsKKzcyODI0IGRmZTg4ZDIwMjE4MGVkZDlmZjU5YjQ1M2Y1YmZlZTEzZGY2MjQ3ZmUgbGVnYWN5LXRydW5rCis3MjgyNSBhYWIxMTdlNmJiMTZjMjdhMmIxMDFhNThhMGYyZWU3MWIzYzI3YWEwIHJlbGVhc2UyNi1tYWludAorNzI4MjYgYzQwODA3NDczYTM3OWQ0MWIzYjM1ZmIzYTk5MDY5NjQ4NjYwYWJiZiBsZWdhY3ktdHJ1bmsKKzcyODI3IDg0MGEwOWRlNjhjM2QxNDU4ZGRmZTU0OTI0MTZmZTVlNWIxNWE3MzIgbGVnYWN5LXRydW5rCis3MjgyOCBmMjI3ZmYzNGUzM2Q0OGYyMzQxZTUzZGQxNTM5OWI5Yzc3Y2E5OTJlIGxlZ2FjeS10cnVuaworNzI4MjkgMzU0MDQ1YmI3MzI2MTU4OWJkZTM1M2QxNzNmMDJjYjk0MzQ4MjYwZSBweTNrCis3MjgzMCA3M2RjNzI4NDk4NTNkMTRhMTU2MDdhNGJiZGMzZjE5Y2FjZDQ4YjZkIGxlZ2FjeS10cnVuaworNzI4MzEgZGM0N2Y3YzY1ZDMwOGFkOTRhMDc4ZTg1NjZmMzFiMTM0OTAwODA1MiBweTNrCis3MjgzMiA2MzY0ZTkxMWU0Y2IzNjFmZWQ1NDQ5YmE0MjljY2FiOGJmNzM1ODY1IHB5M2sKKzcyODMzIDI1OWM4NjU1YzU5MjMwM2E1NGUwMjdiMDEyOGQ2NWIzNTYxZDc3OTcgbGVnYWN5LXRydW5rCis3MjgzNSA5ODdiYjczNGUzNzZjMTg3ZDgxYjUxMGY0OTcyYzU2MzNkOTk1YWJjIGxlZ2FjeS10cnVuaworNzI4MzYgZTVkZDI0MjlhY2IzM2VhYTBkYmY2YzE5YWFiZjNhYjY4NDc4NWYzZSBweTNrCis3MjgzNyA4YmVkNmU2YmI5ODQyYjFkMzYyZDRlZmFmMDI2YjIxNDc1ZThlZTliIHJlbGVhc2UyNi1tYWludAorNzI4MzggZDBlYTc4ZTkyNGE2OTFhYTQ4OGQxODVlZmY0NzA4M2YyMTAxODQwZiBsZWdhY3ktdHJ1bmsKKzcyODM5IDA0YTRiN2RmMmQ0ZDMwZjY5MTZlM2YwZjZmMzA4MzFjMzFkNTJkZGIgbGVnYWN5LXRydW5rCis3Mjg0MCBjOGUxZDdmMjI1MmM0ZjBjNDg4NGEyNDU3MDk5ZDU5MjZmM2M0MGQyIHJlbGVhc2UyNi1tYWludAorNzI4NDEgZjI0NTRkNzEyOThhY2Q1OWYzY2EyNDliMDU0ZWZjNmU1ZDBhYWU4NCBweTNrCis3Mjg0MiBhYjFiNWFjMzQ0ZDc5OGM4MTQyMzZiNDQwNjk5ZTMwOTViNzU0MjhjIHJlbGVhc2UzMC1tYWludAorNzI4NDMgZWIyMGM5NTAwNmM3NjNjM2ZhMmVjOWM3N2E1Y2E5ZjIyNzdkZmE3ZiByZWxlYXNlMzAtbWFpbnQKKzcyODQ0IDI1M2VjYWU2NDc4YTRjNTc5NWFiZGU1ZjhiOTUyMTkxYTNhZDg3MTcgcHkzaworNzI4NDUgNDM1YmNhMDc4MWUzZGJiODA2NTY0MzM2NjlhZjk4NDNjMTU0ZmM0YSByZWxlYXNlMzAtbWFpbnQKKzcyODQ4IDczZjYyNzMxYjFlNmU0ZTlkNDVjYzczNzNiMGJjNjRkYTg3YWJmZDEgbGVnYWN5LXRydW5rCis3Mjg0OSBkMmQwMjhmNjVjN2M2MjE0ZjRiM2VkNWZkYWUyN2M0MDIzMDE3MWNiIHJlbGVhc2UyNi1tYWludAorNzI4NTAgMmJjYWMwOGNmYzZkYmQ5NjZkNjY5OWM3NDRlMDI4ZmQ1ZWI4OTQ4ZiBweTNrCis3Mjg1MSBlOTY1NzNlN2M1MTg3ZGU4YTdmODM0MWQwNjk1ZjMyYzBhNWI0ZjUxIHJlbGVhc2UzMC1tYWludAorNzI4NTIgYzA4YmJiODQwNjJlMDE1NWQ0NTJjOGQ3MGJmMzM3NzU1NzkxYzhjYyBsZWdhY3ktdHJ1bmsKKzcyODUzIDNlN2JjNzQ5MzRhMWM3MDc2NjYyNDg3NzI4MzRkODFlM2I2ODI4YTYgcmVsZWFzZTI2LW1haW50Cis3Mjg1NCBkNWM1ODJmNDZiYzk0YzhjNDcwMjUwMTJhMGUxMzlmZTE2YjA5MDYwIHB5M2sKKzcyODU1IDdjYzBmYjA3Njg0NzFhODRjNjk1ODQ1NWY3YTA4ZjU2YzM0ZTQ4N2MgbGVnYWN5LXRydW5rCis3Mjg1NiAxYjY4OWQ1Nzg4OGQ1NWU1MTE0YmY0YjQ2MzAyNmYwMWRiNjNmMWNiIHB5M2sKKzcyODU3IGUwNjQ1NGMyY2MwYmZmYWVjYjQyMWU4MzJmYzFiYTg4MzViMDUwN2IgcHkzaworNzI4NTggYjFlMzUxY2M1OWI3NDc1YTI2ZDBhOWUxMTcxOWVhNDRkMDA5ZGM5YyByZWxlYXNlMjYtbWFpbnQKKzcyODU5IDU0YmJmZDQxYmU2NjhkZmMyM2MwODM1MTAyMTFhY2NkYTdlNTQxMzMgbGVnYWN5LXRydW5rCis3Mjg2MCA5ZmQxZDU0ZjYxN2NmMGY3ZGMwNDUwODM2OTZiMzdiNTExYzkyMDU3IHJlbGVhc2UyNi1tYWludAorNzI4NjEgZGRjOWExNmZiZWE4ZGI5YWZkYTUyZDg1ZjU3YWYwYWZkMzUzZGU0ZSBweTNrCis3Mjg2MiBlNzhlMGJkYmJhYzQ4MTc2OGRhMDI1OGFjYzE4ZTczNGJjNGQyYTFlIHB5M2sKKzcyODYzIDBhNzhlZmZiNWUwYjUyMDQzZjJiNDc4YjUyY2I5NThlOTM4NDEwMDggcHkzaworNzI4NjQgYmYyODQzMDg4NTY3MTdkYjA0ZDlkZTVkZmE0NDJjMWZiNDBmOWRiZSBweTNrCis3Mjg2NSBmOWQyNjA4ZTI0ZThhMzdiNGI3ZmNmYjdlNjgyZTQ2MGRmMWU2N2JjIHB5M2sKKzcyODY2IDk5N2VmNjhiZmExNTE3OTBkN2UxODNmYmNlN2Y0MWE5MTkwMjk2ZDQgcHkzaworNzI4NjggMzNhN2NiMjBmNTU4Y2E1M2M1MDgxMGY1NDEwYWI5Y2Q5OWZjNDVjYSBweTNrCis3Mjg2OSAyNTJkODFhNGY2OWQyZWNiNjRhYWY5ZTJjY2EzMmY4MTYxNTdkMjI2IHB5M2sKKzcyODcwIDg0NjI3N2E0MjI0OTEwNDU1ODNkMTc1YzRlZmQ4OTBlNGU1MmI0NzEgcHkzaworNzI4NzEgMTUwOTg2YWIzZGIyODRjZmQzOGQ2N2ExYWNlMmYwNGMyNzgwYmFlNCBsZWdhY3ktdHJ1bmsKKzcyODcyIGIyNzhiNGJkZmYxZTIyMzk1YzUwZWRhNGYzZTQ3ODY3NTU5NTA3NjkgbGVnYWN5LXRydW5rCis3Mjg3MyBlMTdjMThhNmNhZWM0NzVkYzYzOGU5MTQ2NTM4ZTFjNzRlZTgwNGYyIHJlbGVhc2UyNi1tYWludAorNzI4NzQgODk2MzFmNjI3ODEwZThkNjIyMWU3N2JmY2NkNTM1MDU1NmVlZmQ5OSBweTNrCis3Mjg3NSBiZDJmYjFiZTEzMGVmNGZiZjM2Yjg3ZThiNDkwNmY4NGUwNTE2MDMxIHJlbGVhc2UzMC1tYWludAorNzI4NzYgZGJhNzY3YmMzMTU1ZmQyYmE0MzY4N2ZmY2Q3NDZlOWU5NmRiYmNmYyBsZWdhY3ktdHJ1bmsKKzcyODc3IGY5OWYzZDhjNTFkNThmYmYwZjRjMGQzMTE4ZTM1NmRhZWViM2UxZWIgcmVsZWFzZTMwLW1haW50Cis3Mjg3OCBkOWNlM2U3NDA2NzY1NTY5OGJhMDY3Nzk1ZTZhYTc5YmNkN2E2NTUxIGxlZ2FjeS10cnVuaworNzI4NzkgZGRkZjQyNGJkNjY5NjhjMDU5NWQ0MmVmNDQ0ZmM1ZjY0ZDViZTEzZCBsZWdhY3ktdHJ1bmsKKzcyODgwIGU3YjRhNDQzZjc2NGFlZmJkZTFmMWFiZjM0YWZhZGRlZmM2MmNkZjMgbGVnYWN5LXRydW5rCis3Mjg4MSA2MWJiZTVjOTA1MWJmZWYyYzM5YWM4MjM5Yjc0MTUwMTI1ZTI3NzBjIHB5M2sKKzcyODgyIGE1ODBhMmVlMzEyODQzODY3ZTQ2ZDI0OTA0ZDNmMmZkYjk5MDkzMTggbGVnYWN5LXRydW5rCis3Mjg4MyA2MjVhMDA2YTI1M2I4ZjE2NDFkZTg4MDY3MTQ1NmQ5MjZhODQzMWY3IHJlbGVhc2UyNi1tYWludAorNzI4ODQgOTg5NzhlNGZkNjBmYTFjYzc2MjE0OTU4ODEyN2MzOWZhNmY5NDRlOCBweTNrCis3Mjg4NSA4MzNlNDZjMTQ5OWJkNzgxMmExM2EzNjYzNjZkNTljMWU3NDljODExIHB5M2sKKzcyODg2IDQ4Yjc1ZWIwMjQzNGNhNjMxNDY4ZTExMzdmYmFhZGM0OTE2ZDE5MGMgcmVsZWFzZTI2LW1haW50Cis3Mjg4NyAzNDI4YWNkMzFlNDU2NDI1NzA2Y2VkOGNiZGVkYzdhMTQ4MTA5NTg0IGxlZ2FjeS10cnVuaworNzI4ODggMWUyYzNlN2ZlNjNjZjQ3YjQyZGE4ZDk0YzczMjkxYzgzMjdhZjcxNCByZWxlYXNlMjYtbWFpbnQKKzcyODg5IDNkMzA1ZGVjZTU2NzRkYzZkZDM0Mjk1MThkM2I1OTMwZGMyMTllZTAgcHkzaworNzI4OTAgNWRjMzNmNDY3ZmY0NmYyZjYzMDdkYTVlM2EyNjEwYzRjY2I3ZmI3NiBsZWdhY3ktdHJ1bmsKKzcyODkxIDljNzQ0ZGZjZjRkZTc2NWU3NzIzYjc1NWJmOTJiNTM3YjBkMGQxZTcgbGVnYWN5LXRydW5rCis3Mjg5MiBiNWUwMDBkMDNiMmM0ZjkyNmZjODJiYmQxYTA0ZWZjOWFlNDAzYWRiIHB5M2sKKzcyODkzIDNiZTM3ZWM0M2MxYmIzODVmYTViZmQ2MDI4NzUxNGNlYzYxNzFiNDMgbGVnYWN5LXRydW5rCis3Mjg5NCBlNjdiMWQwNzFlZDYxZjVmZGZiODAzNmNmNzBhM2JhMzQ5ZDBlMmEwIHJlbGVhc2UyNi1tYWludAorNzI4OTUgNTM4ZjRlNzc0YzE4ZTI3ZjY1ZWMyMjExYTQ2NjJkM2NlMTRmNGQ5ZCBweTNrCis3Mjg5NiAxZjQzNzU2MTljOWMzZDljMjI0NzU0NzMyN2M1Yzc0Nzk3ODgxYjE3IHJlbGVhc2UzMC1tYWludAorNzI4OTcgYjA1Zjg0YWQ4ZWNiMGMzZTBkOWVmZjFlM2IwN2ExMDU5MzA2OGUxYyByZWxlYXNlMjYtbWFpbnQKKzcyODk4IGY4Y2FkZmI0YTFhMjM3MzgzZTI2NDFjNjU2MTg4MmFhM2U3MGJkYjEgbGVnYWN5LXRydW5rCis3Mjg5OSA4MDI0MTc1ZTNjYzY5OTliMWFiNmFhOWZhMmIwNjIzMTJmYzBkOTJmIHB5M2sKKzcyOTAwIGJmZTQwMjg1OTNlMTExOGUxNWQ3YWNlNWNjMzBmOGJhMTU2N2FlMDAgbGVnYWN5LXRydW5rCis3MjkwMSAwNDY4OGFhNTY0Yzg1ZWYyYmI2NTBlY2I0NWQ5MmU3YTY2MDc1MDNlIHB5M2sKKzcyOTAyIDU2NTQxM2VlOWMxYjM2ZDY3ZmY2M2I2ZmY2ZDhmMTE1ZjZmZTQ4YmEgcHkzaworNzI5MDMgZDc1MDc5ZGUyZTQ2ZTQwMGIyMjhlZTk5OGZlMzliOGYzY2NhMTNlYSBsZWdhY3ktdHJ1bmsKKzcyOTA0IDczOTFkODhiM2Q4MmNkMTgyN2E4NDU0ODExNjUwNDM1YzcyNjU5MWIgcHkzaworNzI5MDUgYjljNzhmYjZkNzFkYmQxNjYyYjEyZGMxNWU0NjEyZDFkMDZlZWZhMCBsZWdhY3ktdHJ1bmsKKzcyOTA2IGViMGNkODNjODRhYmZmMzQ3NDQ3YjZhZGNiZjE1MzUzMGU5NjExMjEgcHkzaworNzI5MDcgMGM2MTdiN2E3MjdhZTBhYWFhYzllZGU2YjI5MmI2MWYxZWE1MzU0NSBsZWdhY3ktdHJ1bmsKKzcyOTA4IGRiMjEyODY5ZDgxNDZjZGFiOTBhY2VhMDBlOWZlYjQ4ZWMyMDMxNmUgcHkzaworNzI5MDkgYzc0OTY3ZmViMDIxYWE3YTk4ZjkyYWE2ZmFmMjRmMGQzYjUzMWQyMSBsZWdhY3ktdHJ1bmsKKzcyOTEwIDVhYjJmNmNhNjVhYWZhMDA4Yjc2NWVjMTQ2ZjdlNDViYjdkMjhkMDkgcHkzaworNzI5MTIgMTQ1Mzc2ZGYzYWQ3MjhmNzA1MmZkZDhiNmViYTYwMGE4MzE3ZmVjZSBsZWdhY3ktdHJ1bmsKKzcyOTEzIGYyOWJlNzEwYzE3NGQxYzM0Mzc3NzFkMTY5ODY1MTkxODcwMjljY2UgcHkzaworNzI5MTggMzlkM2E3NWZhODIxODQxMDJmMzQ2ODVkNWI2MzljOGRmN2ExNGUxZSBweTNrCis3MjkxOSA1YWVhNjAzYjIzMDg5M2UyY2E4Nzg3MTYzZDQzNTdkMTA5M2JjMmFjIHB5M2sKKzcyOTIwIDBkNzQ2MWMwNjNlNzllZGJiYmJjMzgxYWJiMmRjNzE4NjQ4NzdmMjggbGVnYWN5LXRydW5rCis3MjkyMSAxNDgwZmEzZmNhYjQwMTE0NTFlNTk5ZWQ2MmY3MTI1MzY1NmIyMDBkIGxlZ2FjeS10cnVuaworNzI5MjIgNWRkMWY2YjE0OTM5MWZhN2ZjM2ExZmFmZDMzYmUwOTJmZjYyZTU0YyBweTNrCis3MjkyMyBkYWRkODk3MGIzMDM3NTZiYzczNzZmNjM1MTYzY2I0NDQ5NDc2ZTc1IGxlZ2FjeS10cnVuaworNzI5MjQgMTY3NTlmNjJlYjIyNmNkNzAxZTAxY2ExZDc1YTUwZjQ2YjU3YjdiNyBsZWdhY3ktdHJ1bmsKKzcyOTI1IDI4N2NlMzBkMDhiNTQ0MDg0NmU2MTM2OTBlZWE1ZmVkOTQyOTVkNGMgcHkzaworNzI5MjYgNjk5ZGE2YzQ2N2RjMzhjNzdiMzI1YWMxMjBkYmRmMDU0M2YyZDJkNiBweTNrCis3MjkyNyAzNTU0MDRlYTExNDNmZWE3OTNjZjUyOThiZGE1NjlmZDQxY2IxYjRmIHB5M2sKKzcyOTI4IDRkNjc0NTI5MjJmOTNmZTdiZTRkZWE5MTE5MGI4NWU4YjdiNjUyODIgcHkzaworNzI5MjkgODRhNjBlNzEwNTUzMDgzY2I0NGE2ZDg5MTExMTRkMTU5MGE5NGU5OSBweTNrCis3MjkzMCBhYWMyNmRlOGI1ZDBlNGQ2ZTFmMmE2MTU0ZmMyZTk4NzE5MDBkYmQyIGxlZ2FjeS10cnVuaworNzI5MzEgZDNkYWFkMGU3ZjZmNTc4N2NmN2ZlYzg0YTZjZDAyNjBiMWUyMzljMyByZWxlYXNlMjYtbWFpbnQKKzcyOTMyIGNkZmQwMTdjZWU5MDhjOGZjMzUzOTFmZGZhZTY4NjE2N2Q5OGZlZTEgbGVnYWN5LXRydW5rCis3MjkzMyAzYjYxMjU2OWQ1MzYxZjcxN2MxODM5MWU4MGYyZTZhMGU5NzliYmY3IHJlbGVhc2UyNi1tYWludAorNzI5MzQgOTgzZDI1NjkxYjY4ZDgwZjg4NWM5MTdhNGRlYWFlOWFhNDI0N2QyNiBweTNrCis3MjkzNSBhMjdhNzM5Y2VmN2Y4NzlhYmU4YWQxMjYzZjk5MmI4M2E1YWM5ZDk2IHJlbGVhc2UyNi1tYWludAorNzI5MzYgMDI1ODM1MWRmYTYwNDQ5MmY0NWExNzc4NTcyZjQ3ZGIwYTQzYzI2ZCByZWxlYXNlMjYtbWFpbnQKKzcyOTM3IGFjYzA3ODY2YjIzMzAzZmRlZTY1ZThkZjBjYjRkZWEzNzU0NTcxY2UgcmVsZWFzZTI2LW1haW50Cis3MjkzOCAzNDI1N2E3NzNlYzBkY2QzNjlkYmIzM2EyZDZmMTM2N2U0MzM3MjFkIHJlbGVhc2UyNi1tYWludAorNzI5MzkgNjU2NDYzODJlNGUwM2RlOWVmMTViZThjOGEwNTc1ODYzM2I3YTkwZCByZWxlYXNlMjYtbWFpbnQKKzcyOTQwIGJhMzA1ZmU4ZTgzMTIwMzQ3NDQ5ZmIzNTk0NDQ1MTAyZWJlYmU5MjUgbGVnYWN5LXRydW5rCis3Mjk0MSAxY2NiNmQ2MjU3MTczMDUzYzMxZjg2MWI4M2ZiYjIzODI5YmMyNjcwIHB5M2sKKzcyOTQyIDkwMTJmZjdkNzVhMjE2NWQxYmU4MWYxNjIxZmU5NmEyYzFmYjg2ZmMgcHkzaworNzI5NDMgMjcyMWJlN2JlMzY1N2E0MjdlMThmYWY4YjgwNTBmNzY1MTljNzI1MyBweTNrCis3Mjk0NSAyOWU1YzAxNjVlMTM1MTZhYTI5NzMzY2FmOTA2M2FkMDA1Y2YyMDQ4IHB5M2sKKzcyOTQ2IDg4MzA1ZDczOWFlNTI2ZTNjNzlhODViMjhiYTJhOWVkY2ViMjYwYWUgbGVnYWN5LXRydW5rCis3Mjk0NyBkNzFmYTZjNDY4Y2M4YjFkODdjMTI2YzRiNGM2ZGExMTRjNDAwOWVlIHB5M2sKKzcyOTQ4IGZkZjNlYjc4MjJlNDU2YmQ1MjE0NWQ5NWVmZmMzNTYzOTc2OThhMTAgcHkzaworNzI5NDkgYTRkZDkyMTdlYTEzMWNmMWYzNzY1YjQwZTQ0M2JhOGQ2M2M1YzIxNSBweTNrCis3Mjk1MiA0N2RkMjkwZDJkNzQ1YjQ0MzY0NjZkNWM5ZGQ0YTkyM2I0ZmM2ZThjIHB5M2sKKzcyOTUzIDBlNzYxMDJmNDc4YjU3NzVkNDRkZjlhNjUwZThhMWU5NmQ3YzRjMzcgcHkzaworNzI5NTQgZjEzYmNkOTIyZjc2MDI5Y2Q1NjI3ZTg3ZWM3MzFjOTJmOTgzMTlmZSByZWxlYXNlMzAtbWFpbnQKKzcyOTU1IDNmNzllY2FiNWU1Mjk3NDI0OTA0OWU0YWNjNzAwNGY5ZmQ1NTJlM2EgcmVsZWFzZTI2LW1haW50Cis3Mjk1NiAyM2EzNzNjOGVjMWIzODhiNzAzNzYxZmY0OTJjZDRjZWU3NjE0ODJiIGxlZ2FjeS10cnVuaworNzI5NTcgYmE2Mzc2ZGZmNmM0ZjgxMTViMjliYzQ3MzNkYTkxMzI2Y2JjYmE1YyBsZWdhY3ktdHJ1bmsKKzcyOTU4IDdiNGI5MjFmMzMzNTY3NzM2NDEzNTEzMGQ5ZGU1MGRlZjRmMTdiZGMgbGVnYWN5LXRydW5rCis3Mjk1OSA2YWI5MzQ3MDAxMWJiOTRmZGQ1ZWYwZTc0MWE1NjcwOGVlNGMwZjBiIHB5M2sKKzcyOTYwIDQ4NjBmNzQ5M2I5MTQ3OWY2NDNlNWE3ODY1MzdiZjU3OTc4MDg2YzggcHkzaworNzI5NjEgMWMwNzhiYmNhMjMzZDc2MTA2NDgyYjM3NGYwYmVjMjQwNjY2NGM4MiBweTNrCis3Mjk2MiAxZDA5NmQxYjk4ZmQxM2UwMjdlZGI1ZjliYmIwYzY3NzdjMjFmNzQxIHB5M2sKKzcyOTYzIDIyZmQ5Njc1MThlZWMwMzFmM2JjN2M3N2I3NGE0Mjc4ZWM3ZWM5ZjQgcHkzaworNzI5NjQgYjYxZTZhZDVhZTcwZTlmNTJjNDY0ZTc5NzA4Y2U0MTI0MTk2MDY1NiBweTNrCis3Mjk2NSA4Y2IzNDk4NzNjZGFlMmJkNzhkYmEzYzc5MzgyMjM4Y2Q0Yjk1MjZjIHB5M2sKKzcyOTY2IDE1NGNhMzc3ZjUzYzdiNTBlNWM2NzkyMWM0NDI1Yzg4YTZlNDMzMzkgbGVnYWN5LXRydW5rCis3Mjk2NyA5YjhiNjBiYzBmNWI3MzE4MmYzYzY2NjBiZmFmOTJhZDM3M2ViZDY3IHJlbGVhc2UyNi1tYWludAorNzI5NjggYWY0ZmQyMzY1NGNlYjNmNDE5ZWNlNmYwM2E5ZmI5ZDU2ZGQwNGU3NiBweTNrCis3Mjk2OSA0Yzc3ZjllMWExOWRjZTgxOTZmZDgxMDNjMmFjMGQ1YjVlYmZlOWNiIHB5M2sKKzcyOTcwIDgzN2FkYjc2YTBlMWFjMGJjMjE0N2QyMDdkYTUzN2RkMTlkNzVjMjcgcmVsZWFzZTMwLW1haW50Cis3Mjk3MSAxMzkyMWY1MjY4NDgzMGEzYjgxNGE2OWY5OTgxMWIwNTlkYzhjYTA5IGxlZ2FjeS10cnVuaworNzI5NzIgZTZlM2EwZTkxYmVhYzNkMTI3YjVlZjIxZjE0ZjAwNGI0YmU3NTEzMiBsZWdhY3ktdHJ1bmsKKzcyOTczIDgyMWY3ZDQyYmY3NDIyYTBmZGU2ODNiZTdiZWFiYmY3ODY3YjJjNjAgbGVnYWN5LXRydW5rCis3Mjk3NCBmYzRlMjQ0M2Y1MDk2NGU5NjQ2MjZjNzY5Y2FkMzA4YzNmZTM3NmM0IHJlbGVhc2UyNi1tYWludAorNzI5NzUgNjAzODcwMjI4ZGFjNTRlMWE5NmM0OWRlM2Q1YmMwNzVlODIwOTk0NSBweTNrCis3Mjk3NiA2MGQ0OWIzZmQzYmZkMmI3NjM0NDMwNmExMGI3MTkwNTJmYzJhMDU4IHJlbGVhc2UyNi1tYWludAorNzI5NzcgMTAyOWQ5YWFkNDkxYzhmODI2Yzk2Njc3ODFkMTI2MmVhM2NmNWYyZCBweTNrCis3Mjk3OCAxZDNiMWJlNmE4YjI2YmYyNDk5ZDJjZTY0NDdkMjQ2YzFkNDM3ZWRlIHJlbGVhc2UzMC1tYWludAorNzI5NzkgNzBmYjg0ODg3MGFjZDQxNGFjYzU3YzE4ZjRhODVlZjQ5ZGMzN2RiZSBsZWdhY3ktdHJ1bmsKKzcyOTgwIGE2YjczZDgwZmJlMjc1YTlmNjNhN2Q3ZmNlN2MwMDc3MGYzOTZlYzggcHkzaworNzI5ODEgMTFhNTRkYWJmYjFjZDVkMzM3OGM0M2ZjNzk4NGRiNWEwMDZkZWE1MiBsZWdhY3ktdHJ1bmsKKzcyOTgyIDhiMjk5NjUyYjFlODVmN2QxMmU4NGVhMWYzMGI4MjliZjBhMjE1OTMgcmVsZWFzZTI2LW1haW50Cis3Mjk4MyA5ZGRmYTZlMDVmYjBkYTExOTk0MzQyMWExMmI5ZGMyODkwYTg1MzkwIHB5M2sKKzcyOTg0IGFjMGI4NWY2ODI5N2JkMzBmMWU1MGUyOWU3YWJlYmJkMzU2YWQ3ZjYgcHkzaworNzI5ODUgNWIyMTAwZTQ2ZDNiNDhhMDJmMDRjMGRkYjFhZjc0ODUyZDNlMjRhNCByZWxlYXNlMzAtbWFpbnQKKzcyOTg2IDYwNTZjOTZjMmQzMjc1NTg3MGE2ODVkZTliNzExZjE3NGFjMjgxNDEgbGVnYWN5LXRydW5rCis3Mjk4NyBlZDBhOWQ2ODQwMjI2OWE4OTJjMDQxNzcxMjM2YjRmZjZjNDI3Njg5IHJlbGVhc2UyNi1tYWludAorNzI5ODggOTk2NzM3OTI3MGEwOTQxM2EzNWI4ZWIyZmI5ZmIyNGJkMWU4NDg3MyBweTNrCis3Mjk4OSBjZTk5ZThlMjJiMWVhYzA5NjA3M2ZkMzcxNzU5NTI3NTdlNmMwNTM5IHJlbGVhc2UzMC1tYWludAorNzI5OTAgYjAwNDA0OTRiNGE2OWFhYzk2Y2E5MTY5ZDJjMGZlNzVjODI0YjE2OCBweTNrCis3Mjk5MSBmNTVkOGRlZDJkMDVlNWFjZWNiZjYxYWM0M2QyMzk0OTlhYWI4NzgzIHJlbGVhc2UzMC1tYWludAorNzI5OTIgYjcyNmZmZDQ5NTI0NTBkMjJiZjk4Yjk0ZjVkNWYxMjJjNTc1ZTU3OCBsZWdhY3ktdHJ1bmsKKzcyOTkzIGU5MGIwNjdkODNmMjUxNjRhYjY0ZTk1NjVmOTJlNDczYTFkYWVhYTQgcmVsZWFzZTI2LW1haW50Cis3Mjk5NSAzZWI1MjJkYzMzMzdkZWEyMWYyNzRlZDNkOWZiM2Y4MmMzMTg0ZWFmIHB5M2sKKzcyOTk2IDQwMzUzODMzOTRlY2ZhYTZhNzI1MGNmZTg2ZDZiMmI1ZDQxODIzY2IgcHkzaworNzI5OTcgYmMyNTE2ODEwY2M0MTEzYzEwZDgyZjI4MzdjYTNjYzU2ZDcxNWYwMCBweTNrCis3Mjk5OCBhMGEyNWRlZWNkYjIzNmUzNTUxYTdiOTc2NmNjY2FjZWFhMjE5MDQzIHB5M2sKKzcyOTk5IDYxOGU0NmE2OWYyNzhmMDQyMDM2OWRhZGQ4YjdjNDk1YWExMTUxYzggcHkzaworNzMwMDAgMmQzYzJjZjFiNTFlMzRjYzg3NzJkNzFiZDcxOTYyMzA3ODMyMWNjMSBweTNrCis3MzAwMSA4OGJkODc2MGIzNDJlYzg3YjdhYmYwODUwNDgzMTM3NDIzOTY1YmFjIGxlZ2FjeS10cnVuaworNzMwMDIgMjYwYzhlZDNmNWRmOTdhNjUzNWY3NDVmZDE2ZTQ4ZDZmNmE5MjBiZiBsZWdhY3ktdHJ1bmsKKzczMDA0IDFkOGYyNGJmNDM5OTYzMzYwZmNjMTM2ODkzMmVmYjljMTc5ZjA0ZTggbGVnYWN5LXRydW5rCis3MzAwNSBmM2M4NzFiZGVhNTcxZDZkNjljZDhkNDM3NWMxODY1NmZjNzQ0ZmMwIHB5M2sKKzczMDA2IGQ3NWFiMTY0MTNkYTQyYzE0N2JlYThhMjQ3NWVjNDM3NWNiNGY1YWEgbGVnYWN5LXRydW5rCis3MzAwOCAxZmExMzc5NDIwODVkZmQxZjIxM2NhZjVkYzAwMDk4M2U3OGI0ZjZjIGxlZ2FjeS10cnVuaworNzMwMDkgNzdiOTEyNGYxYzhjMTRkOGU3NmMyOGI5YWRiYTFkYTdhZWQ3ZDJjOCByZWxlYXNlMjYtbWFpbnQKKzczMDEwIGQzOWMxOTAzMTZlNzY5ZDljZmQ2MDUwNWYwNjRjZDA4MmI1NmJmZTYgcHkzaworNzMwMTEgNDljMGIwY2E1MTEzYjkzMzgzMTg2MTNmNjgxMjIxNjYwOWViZTRjYiByZWxlYXNlMzAtbWFpbnQKKzczMDEyIGM1ZDM0OTU4MmU5Y2FlN2IwM2Y1NDE2OTY3ZWI4ZmU3NjFkMzU0N2MgcmVsZWFzZTI2LW1haW50Cis3MzAxMyBiNjdhYmQ1MWIyNzA0YzBhY2JiMGY3Mjg0MmU5ZDk1MzIyZTZlMDFhIHJlbGVhc2UzMC1tYWludAorNzMwMTQgMTFkZTM1ZGEyODFjMTc1NWVlOTczOWExZjhhYTljN2ZkNDhlYzcwYyBweTNrCis3MzAxNSAyOGQ2NDE5MmFiNWEyY2Y3MmE5YmQ2YmQ5MTM5MDA3NTE4Y2RjMjQ3IHB5M2sKKzczMDE2IDljMTdlMzY2OTMzNmFjYTcwZWU1YjlmODk1Y2RjNmFlNmUyNmE4ODEgbGVnYWN5LXRydW5rCis3MzAxNyA3NmYxYmU5ZDI4MTgyYmY0OWIzMWUyODQ2ZWRhMmQxZTUyMTYxNTJlIHJlbGVhc2UyNi1tYWludAorNzMwMTggMTM0ZDEyYzJlNzQ1MDBlOGZhMmJkYmI0YmY1MDA4ZDU2MGJmNWJjMSBweTNrCis3MzAxOSAyMzU2ZTk4NWVjZTgzNWYxYmRlM2ZjODdlNDJkMDk4MmMzNmQ2ZWRjIHJlbGVhc2UzMC1tYWludAorNzMwMjAgZWM1ZDIyOGE4M2VmY2EyMWY1N2FkNzU1ZTFmMDQzZmRiMDRkNzNmYSBweTNrCis3MzAyMSBhNWE4OWM2MGQzMmU0ZWVmZjQ2NjkwNjhlNDQzYWJhNTA2ZGEyY2JlIHB5M2sKKzczMDIyIDY0NzUwMDY1ZWNkNGQxYzI5M2JlMTIyYTJlZTE1MDQ2MTE0ODU0YzUgbGVnYWN5LXRydW5rCis3MzAyMyAyNWEzMTU1ZGFjNzZjNTE2Mzk3NGM5ZWFmOWM2Yjc2MWJjY2Q1NjViIHJlbGVhc2UyNi1tYWludAorNzMwMjQgOWE0Y2UxZTcxYWQ4MTY1MTYyMTA5ZmJkMWIyNzY4OTk1Njg4OTNiMiBweTNrCis3MzAyNSA0ZWQyZWUwYjIyOTBhMDY0NmFkODE5ZmQ4Y2I4ZTgxMzNjZjI4ZTU2IHJlbGVhc2UzMC1tYWludAorNzMwMjYgZTQ3NDU4MzhmNjU1YjVmOTUxYjM1NGVhMTNiNDcwOTBiOWY0ZGJhNiBsZWdhY3ktdHJ1bmsKKzczMDI3IDdhMTM0NzFmNGU5YmQxZGNlNTJjYWY4NTU1NjJmZDc4ZGIwN2E2Y2QgbGVnYWN5LXRydW5rCis3MzAyOCAxNDZhMzliMjU4NDU4NWY3YjkyNGFhZWU5MGZmZjFkYTRiNzk4OWM5IHB5M2sKKzczMDI5IGM4ZmUzMDNjZWRhNDUxNThjNzFmZTc5ZGM0ZTkzYTdhZGU2MTI1NjUgbGVnYWN5LXRydW5rCis3MzAzMCA2ZTJhOGJkYWE1NDAyMDhjZDM5MDZiZTg4ZGQzYjc4NTMyNDQwMzdhIHJlbGVhc2UzMC1tYWludAorNzMwMzEgYjJlY2QyYmRmMTk1MmI5MTQxODVkODNmOGNkYjMwMTdhZGQxNGEzYyBsZWdhY3ktdHJ1bmsKKzczMDMyIDZkNGM0N2ZlYzQ0OWRhYmQ1ZmYyMzEwN2JlZjhlMjNjYWM3ZDYyZGYgcHkzaworNzMwMzUgMWE1MjFjMDZhNzBkYjUxNmEyNWQ2MmJmZGNlZDI3NzE2MWUxNjMwOSBweTNrCis3MzA0MiA2ZDZiNGQzNzgxZjI3NTg0YzUwNTIyNmMwOGJiYWZhMmMyMmQ0NWU2IGxlZ2FjeS10cnVuaworNzMwNDMgNjljZDgwZjhlMTMzYTI0MDIyMDNmZjYzZDYyYWJkNWIxYjNhMWZhMCBweTNrCis3MzA0NCBmNWQzZmYwM2RkNWJjZGQ1NTBmMWEyZjVkYTcyMjA1MjJkMjUxNjkyIHB5M2sKKzczMDQ1IDViYjVlOTM0MzViMDRlMTE4MTEwODAwZTg3ZGY2NTA1Nzc2NWY1OGMgbGVnYWN5LXRydW5rCis3MzA0NiA0MzFjYTUzOTlhMjQ0ODZjMGZmOGM4ZDQ1Njk4NDAzZjRiN2Q3YTdiIGxlZ2FjeS10cnVuaworNzMwNDcgYzYyYjY1MjI1MWQ4OTljMTM4N2Q1NTQ2ODVlNjdmZDdhYmE2YjgxZSBsZWdhY3ktdHJ1bmsKKzczMDQ4IDhkMmYzOWMyMWU5ZTUyZjJjNTAzYzRkZmQwODVkZjFhMmI2NGNiMTAgbGVnYWN5LXRydW5rCis3MzA0OSBiMDFhZWZmNzJiNjUyYTdmMTk5ODcxNjE5YmQ0YzAzYjE1NjViMzgxIGxlZ2FjeS10cnVuaworNzMwNTMgNTUzYzgxNTFjOWM2ZTAyNWE2NzJkNTNmYmM0MTQ2NGYwYTM2Y2JlZSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwNTQgNDk1Y2YzYzI1ZWIxNDNiMDIyZjZmMjk5Mzg5NTIwMzllOTk5YjY1MCBweTNrCis3MzA1NSAyMzQ2MmIzODE3MWQ2OWVjZmEwOWNiMDUxZWE2NTUzYjVkMjQ1NGZkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA1NiA0MzUzZmQwODQzY2IzMWIzNTZhZGM1MGY5M2QyMjBlMmU3MjU1ZWYyIHB5M2sKKzczMDU3IDNmZmJhNmFkMzE5YzJlYWVmNTJlYTk0MjIwNDBmNTgwNjdmZDFmNDcgcHkzaworNzMwNTggY2E5YmU4ZmMwMjVkYzI3NzNjZGM0M2M1ZmUyNDU4YmMyNjQzY2M5NSBweTNrCis3MzA2MCBlNDc1Y2M3MWYxODhhNGE1OWZiNDEwYmI1ZjI5NGFhMzkwOGVkMzM0IGxlZ2FjeS10cnVuaworNzMwNjEgOTE2MmNkZjM0ZGZiZjQ1NjJiY2FlYjU5ZGIzODgxNTQ2NjcxYjQxZiBweTNrCis3MzA2MiBiNDA0MzA3OTIyYzZlOGM1MDhkZDA3NDY5MTkwYjhmNWExNTAxZDVmIHB5M2sKKzczMDYzIDQ5NDg1Zjk4YTMwODNiYzFjMTgyNDZkMjYyYWU1NTc0NzRkYmIyZDQgcHkzaworNzMwNjQgYTI1M2ZlYTg1YWYxNWNhOTllMDMzYTAwNTRhM2QxOWU2OWQ5MjQ5YSBsZWdhY3ktdHJ1bmsKKzczMDY1IGZhMmY5MTc5MDZlNzNiN2QxZGQ2Nzg0ZGNhNmZmZDk1YTFiODJmZjkgbGVnYWN5LXRydW5rCis3MzA2NiA0ZTk2ZDdkYWY3OWY0YzViNDQ2MmVmN2JmNGQ0ZjZlZTcyNzgzZWFiIHB5M2sKKzczMDY3IDExNDM1NGIxZTBlNTdkOGRjNjQyOTdlNzAwMDc2Yjc2MjA2NjkxODAgcmVsZWFzZTI2LW1haW50Cis3MzA2OCA3NTY2MjE4MTlmNWE1MWY0MTQ2YWM3YzVmOGUwMDRkOGZkZDNiYWQ4IGxlZ2FjeS10cnVuaworNzMwNjkgNWRlYzcyNDdiMjQ5NmViODVjOGFlMDliYmE5OTkyZTkwOGY4MjYwOSBsZWdhY3ktdHJ1bmsKKzczMDcwIGJmMGJkNmVhMWM3MmU1NTBlODA5NGJiOTUzMGQxYTJmNjFlMDZhODcgcHkzaworNzMwNzEgMWI0M2U2ZjJkMzI4YTk3MWY4MDk0ZGIzMmNlOTg5NWI0ZmJlYjc0MSBsZWdhY3ktdHJ1bmsKKzczMDcyIGQ3NGI4ZWRkN2E4Y2YwNDA2MDQ3ZjhmZmYwYTE1MjkzNDE1MzViODkgbGVnYWN5LXRydW5rCis3MzA3MyBlZjA3ODVjZmE2YWY1MWI2MmM0NzZmMmI5N2FhYjcxZjUzYTNhMTE2IGxlZ2FjeS10cnVuaworNzMwNzQgYmJiMGI0ZjhiNWUxMWFmNTE2NzY3YThmOTAyNTBlNzQyMTI5YjEzZiBsZWdhY3ktdHJ1bmsKKzczMDc1IDgxYmFmNzZkMDc5NzczZDY3NDdjZTUwODNiYmRmNzJlNzQ0MDRhZmYgcHkzaworNzMwNzYgNTE5ZjgwYjFmNWUzYTY0M2Q0M2VlYzE1MTdlZmQwYjI2YzA1YTJlNyBsZWdhY3ktdHJ1bmsKKzczMDc3IDA3MDUzMGU5ZjE4ZjI5ODQyMjRmNTM3NDJkNTQ0OGQ4YjRiZDFhOTAgbGVnYWN5LXRydW5rCis3MzA3OCBjM2EyNjU1NmRkMTRhZDJiNTk0ODE3YWM0OWJkNjlmZmUxOWQyNDAxIHJlbGVhc2UyNi1tYWludAorNzMwNzkgZjE0YjUwNWQzOWY0YWU4YTliNTUwOTIzZTAxNzgyZjJkOTU2NzBhNyBweTNrCis3MzA4MCBmNTFlYWFlZDZjNzFhNjBkNjEzZmZiY2M3YTFmMzVlMTBiN2E4Yzk5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA4MSAyYWZmNzAwZTBjYTkxOGMwZDNiNGFiZTY3NmZiMTg4ZjljYWQxNmViIHJlbGVhc2UzMC1tYWludAorNzMwODIgYTZhNzRiOWE3Y2QzNzJiMDMyMzgxNmEzNjEyNTc3YmI0MDc2OGRlZiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwODMgNWRiMDU1NmVkMTIyMzViYmZlMWRlYTM0ZmU0ZmNkMTQ2YmU1MTg4YyBsZWdhY3ktdHJ1bmsKKzczMDg0IDdiNzcyZWQ1MzZjNzY5Y2U5Y2UwMjEyNjZiNTVjNjA3OTI2ZGViZTYgcHkzaworNzMwODUgNzVlMTJjNWU0ZWFmYmExYTM0YjI0ZjA3ZTdlMDNiNjRkNjQzMWM3MyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwODYgNTJkMjU4ZWIwMTc2ZmFmNDFkZjY2NzNiZGU1MjY1OWZjYTJhYzViZSBweTNrCis3MzA4NyBiNGRkNDI4M2ZmODIwZGRhMjNkZmQxNGM3N2U2M2UwNWQzYzY5MzgyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA4OCAxZTJjMDM3MWNlNTczN2RhNDZkYjBiNDdiMWViZmY5OGJhYzMxMjExIHB5M2sKKzczMDg5IGY1MTdmMmU0ZmIzYmI1NmNiNjc0OTk3ZDljZDRjYTg4ZTFlYWQ3MzAgbGVnYWN5LXRydW5rCis3MzA5MCA1MGYzMTMwOGI1MGFlZDY1MTRmNjUwZGYyNGFkNDIxNzI5YWE5ZDYzIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5NCA0MjExODEwZGM3OWNlN2FkN2UxOTRlNzBhODkwNzM1YmVmM2QxZDg1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5NSA1N2EyZDI3MTNmMTk1M2EwY2E1NDI4OTI3ZTFiYzQ3Y2QyNjZjNjRjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5NyA1MjhjMDkzYWI5ODZkMjA3Zjg0ZWY2OTBhNzU3YzQ4YTVmNDcwMzRjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5OCA3NTdhN2MwZjY3OWUzYmFmMzk1ZTA2OTVhOTg1NmEyZTI3OWE1MDhiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzEwMSA2MDAxNjlhZTU2ODFkM2E5NThhOTkwNmViNjFhYWE3Y2NkZmFiZTJkIGxlZ2FjeS10cnVuaworNzMxMDIgZmI3OWVlNDU3NzU0MjgwOWEwNzgxOGU0MjA1OGZiYWU3YmYyZmMzNyBweTNrCis3MzEwMyA3YzQ0NDA1MzhhYmIyNDJmOTViMDQ0MzY0MzhkOTBlZTgzMjdkMjVjIHB5M2sKKzczMTA0IDg1NjdkZjNhNDNiNjEyMzBmMGU4MGY4YzBmMGUwOTc0Zjc5NWU1YzAgcmVsZWFzZTI2LW1haW50Cis3MzEwNSBjMDUxYmE2MTdmMDQ2MTk5MGFjYWUyMmQwMTZiNjM3ZDIwN2ZmNGY0IHJlbGVhc2UzMC1tYWludAorNzMxMDYgNjg0NmY5NWY4ZTA3N2E5YWQ0NTg3NWUzYWZmOTQ3ODEyZmNiYTljMCBweTNrCis3MzEwNyAxOGIzZDViMzdkODNmYmU2MjZhMTVmYTMyMzI1NTgzMmMyOWI1NTBkIHB5M2sKKzczMTA4IGM2Nzg1NGYxY2Y3OTMxNWU3MjQ4ODQwMWIxMjI0YTVkZDgxNzZhNzggcHkzaworNzMxMDkgNDQyNzg1OWQ4MTdhNzJjMzMyYzRlMDgwODc4ODY0YWI3ZjVkNmY0OSBsZWdhY3ktdHJ1bmsKKzczMTEwIDhjMTMwNjcxYzg0MjUzMjdmYmViY2FmMzYwZTAyOTE5ODdiM2ViMTEgcHkzaworNzMxMTEgOTM4Y2MxNmU3ZjhkZWJkOWU3OTM0OWYxY2E2NTVlNjY5NTJmZTBjOSBweTNrCis3MzExMiAzNTIyYzJiMGQ1MWQ0N2RlM2NmNmQ2NWQ5YTUxZjYwZDcwOTRmYmNhIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzExMyBiYmY4ZjI1ZWIzNzdiMjAxNTIxMmIyMDMyOGM1YTJkOWM1OTczM2M1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzExNCBjMzdhZTU2MmVmODIyZGQ1NTYwYWZmMTQzMzFkMjhiMDk1Y2JkMDEzIGxlZ2FjeS10cnVuaworNzMxMTUgMWRmY2M1M2U4MzZhMGU2MDI5MDQyYjFjZDFjMTRhM2U4ZTk2NTQ4NiBweTNrCis3MzExNiBkMGU5NjA3OWI2YWNhOWE5YjViYTU5YjQ4Y2YwZmE3MmZlZWUwNDM3IHB5M2sKKzczMTE3IGE4ZDljYzkzMjY3NTYxN2E1NDA1YzVkMGFhYWE5YTM0NTU2MTg1MjIgcHkzaworNzMxMTggNTIyOTVlYmNjYTMxMjQ0ZDAxZDQ1ZjYwZjI3ZTY0Nzc2N2JjZTBkMiByZWxlYXNlMjYtbWFpbnQKKzczMTE5IGE1NjNiY2YxYTYyZDJmNjljNDhkMjliMzk0N2Y0NWU1NTViYzUzMTYgcmVsZWFzZTI2LW1haW50Cis3MzEyMCBlMjVmYzM3NzY3MDQ3MDIyM2Q2NjA3ZGNhYWIyMzM0OWJiZDdkMWMwIHJlbGVhc2UzMC1tYWludAorNzMxMjEgZDUwNzFkOWY3NDA4YmRiODhkNTdiYzVlYzcyZDc2YjIxMDRmMzYyOCBsZWdhY3ktdHJ1bmsKKzczMTIyIDVmOGRlYzg0NmY0NmRlOWI4MTQ3Yjk5MTNmMDlmN2FkMmZiM2E2ZWUgcmVsZWFzZTI2LW1haW50Cis3MzEyMyA1NDI5NTI3ZTNhMjg4ZmQyMWE1ZDYxZWM0ZWE0ZTZhZjU1NzY2OTdiIHB5M2sKKzczMTI0IDQ5OTNlMTEwZmQ3Nzg1ODQ4YjhhMzZhYjQ1MWZkMTc5N2QwNmEyMTcgcmVsZWFzZTMwLW1haW50Cis3MzEyNSBjZWQzODBiNDAwMDQzNjJhN2E5YWM1MzgwYmY0OTAwY2QwM2FhNmMzIHB5M2sKKzczMTI2IGJmNGNmZTUxYjRiNTIxNzQ1MjUxZjZkZWU3MWI3N2Q2N2UwNGUwMmQgcHkzaworNzMxMjcgNjI1NDJiYjg4NzNhMWIzN2Y3YThiMGY0OGMwNDU3MTFkOTI2MTU2YiBweTNrCis3MzEyOCAyYzAwYmRhYWQ3YTlmZmZlMWE3Zjk1NzNiZWFkZWRkM2UxNmMzYmU1IHB5M2sKKzczMTI5IDhjODUwNDcxNWI4YTM4NzlkNTRiMDNkNDRiZjc5NjJiNzc0MDQxOGUgbGVnYWN5LXRydW5rCis3MzEzMCBkYjg4YTY3ZTM4ZWVhMWEzMWZiM2UwODllZDhkZWQwZTVjMGYzODJjIHJlbGVhc2UyNi1tYWludAorNzMxMzEgMjk5MDQ0MGEyMGY0MmExMDdkMDRjYjMyMTkxOTQ2YzQxNzlkYzg1ZiBweTNrCis3MzEzMiA3ZmE4MzI5MjdiOTFjODY0MTQ0NjFkODk0YzQ5ZmFiYmIyODM5ODVlIHJlbGVhc2UzMC1tYWludAorNzMxMzMgN2Q0Nzc1NTY4MGQ3ODQzM2I3MjcxODc5MTZiNjk0MGMwNWE2OWI5ZCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxMzQgZTEzYTRmNjJiNmNhY2NkYWRhYmE2OTlmZGZiNjNiNWY5ODRhYjUzZSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxMzUgMTI4MTQ3ZGNiYzFkNTExMzc5NTNiNjQ1ODNiZjczMTZjODE2Yjg1NyBsZWdhY3ktdHJ1bmsKKzczMTM2IDNkMTJmYjljZWQ5MjZjYWU3NWRhNjRhY2ViZTNlYzk1MzU5MTU0YzAgcHkzaworNzMxMzcgZjhiNWExNTMyYmVjNTYwNDRjOWVlMTU4ZGIwODYzMWJkN2ZiZDM1ZSBweTNrCis3MzEzOCBmMGY4NGFmMTU5NTdiYzgzYzZlM2U1YjgxMjc1MzE5NmIwNDIyYWUyIGxlZ2FjeS10cnVuaworNzMxMzkgYmE4MjIyODM5OTM4ZGIwNjk0MmYwNDE5YjBmYmQ2NzRjZmYxNDA5YyByZWxlYXNlMjYtbWFpbnQKKzczMTQwIDcyMzRhODNhOGIxOWZkOGYxNTUwZWQwNWEwN2MxZDIwODQxMDkyNjggcHkzaworNzMxNDEgMDQ0OWNiZTlhYzlkNmI1OTU1MDFjM2FlN2MxYjVlOTMxZjIzZDc0OSByZWxlYXNlMzAtbWFpbnQKKzczMTQyIDFlNzJhNTQwYzFhYTY3ODczNjVkMGFkYjYzY2E5ZjBkOTE2YWQ1NGEgcHkzaworNzMxNDMgNjIxYTU5YmIzNDA0NWJhYmIyZGYyOTMzMDA4MzI3YWU1YWZhNzBiMiBweTNrCis3MzE0NCA4ODViMGE5MmI1MDYyNjJmYzdkOThiOTYzYzBkODA3MDMyN2JkNWEwIHJlbGVhc2UzMC1tYWludAorNzMxNDUgZTgwZTI1ZTZhMTg3YjRjNWQ1YzQ1YWU0ZjAzM2I3MmVjYTM0YTQ1ZCBsZWdhY3ktdHJ1bmsKKzczMTQ2IDkwNDg5ZjI2N2IzMDBkYTRkOTVkZjRiNWE3MWVlOTRiZjkyMjgyZWMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTQ3IDQyODNiYzhjOTMwNjUxY2EzMTI4MDE4MzE0YmVmZWY1NmIzNjI5OTcgbGVnYWN5LXRydW5rCis3MzE0OCBiMmY5NjIzODU5NjlhMjA4YzJjMWNjY2YwYjVmODRlZDc5MmZmZjdjIHJlbGVhc2UyNi1tYWludAorNzMxNDkgNWU0ZDA3MDU2NWU3MjhjOTMyNGU2MzhlMjljNzY1YzY3YTBlZTFiOCBweTNrCis3MzE1MCBmNjMyZTAyYzI2NDJlOGExN2ZmYjFiNWI5OTg2MDAwYTVlMDQ5N2Y4IHJlbGVhc2UzMC1tYWludAorNzMxNTEgYjdiNzM1Mjk5NGM4ODQwNTBlYjU3MTc2MWFkM2M2ZGZlYTI2YmIyYiBsZWdhY3ktdHJ1bmsKKzczMTUyIGNmZTU3N2FhMTU2YWNjNGVkMDQ5NmFmMTEzMmJkMDg5NzRiMTFhYmIgcmVsZWFzZTI2LW1haW50Cis3MzE1NyAyZjdkOWFiZDY1NWJhYjlkMjJiNGFmZmYxYTAzOWFlYWU0NjA0MThiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzE1OSAzMmE0OWQxMDgwMWVkMWVjYmQ1MGEzNTMxN2M5NjUzZDdkMzQwNjQ1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzE2MCBjZjE5Y2MwNmIwOTMwOGRkMDZmNmIzMDEwYTQyOTVmZWU5OWFlNmE4IHB5M2sKKzczMTYxIDMzYThiYTkyNWM5MjA5Zjg1YzAwMGE2MGY5NDE1NGE4MTg1ZmE2YjMgcHkzaworNzMxNjIgNTFmZWNiYjdmYzg3MjY1ZmUwYzJjN2Q3MjU0MDM1OTM5YWQ2M2RmNCBweTNrCis3MzE2MyA0YTI3NzFmNmI5ZGQ3ODUwNDYzZmRkMTJlNWI4MjNlZTI2NDVlNGM1IGxlZ2FjeS10cnVuaworNzMxNjQgMmZiYzcwMzkzODJkMWM1OGYyODA2NmNmOGJlNmNmMzNiMjc0MTYyYiBweTNrCis3MzE2NSAyZDUwMGQ3YjIwYmU2ODZjNjJiZGM4YWYxZWMwOWIwNGU3MmIzYzg3IHB5M2sKKzczMTY2IDk4ZDhiOGI3NDlmNDc0NjVlMGRjMzJiMWRhMWVlMWI5MzE2MzkyNDAgbGVnYWN5LXRydW5rCis3MzE2NyAxNmU0NWQ4Yjc5NTdlN2VlMDAzMzQ1NGYzMGUyZDFjNTgyMzhhNzM3IHJlbGVhc2UyNi1tYWludAorNzMxNjggZmNiMjU4MGMxYWIzZThiMzI5YWE5NGQ2YTRjODE5NjFjZWZmOTZjZSBweTNrCis3MzE2OSBlMWE0NjYwMmI5ZDcyYWIwNjY1MjU4ZDIyMzYzYzViNjU1YjAxYjI3IHJlbGVhc2UzMC1tYWludAorNzMxNzAgMWEwMjliN2M5NzcwNTI3N2Q3ODlmN2NlMzhiNzg2NGVmNDM5MjJjMSBsZWdhY3ktdHJ1bmsKKzczMTcxIDY1ZjU2MWEzZTI5MWI4MGU3YWQzMTgxODRjMzI3MGVkMDU5MmY0MDMgcmVsZWFzZTI2LW1haW50Cis3MzE3MiBhZTU4NWNkNWNhNTRiM2ZiNDdhODU2YmIxNjIzZDMxOWQyZWUxNTZiIHB5M2sKKzczMTczIDYyNTQ0Yzk0NmVkYTJhZjFkNDM4NGE1MGY0MjcwMzFkNDYyOGJmZDQgcmVsZWFzZTMwLW1haW50Cis3MzE3NCBiOGIzMmZkY2MyOGQ0MWUzODM0ZWViM2EyZDQwMmI0ZDczYzY3MWI4IGxlZ2FjeS10cnVuaworNzMxNzUgOWMyZTA3YThkMjMwMmQzZjY5ZWUwMzY0NjZjYTQ4OTA3ZTQ4ZjdiNiByZWxlYXNlMjYtbWFpbnQKKzczMTc2IDdjMGU3OWU3MWNjZGM1YjNkYjdhMDFjZTZjOTQ2ZGIzMjBkMDk3MjggcHkzaworNzMxNzcgMDMwYTNmZTRiNjA0NTIxZTBlYTAxMDFmZmQ5NjUzMWM5MTIzY2Y3MSBweTNrCis3MzE3OCBiMDFjY2FjMzA0NzM1MDllMGMwMmFlNDBhMTBiYTZjNzRiYzkyMzY1IHB5M2sKKzczMTgyIGU4NmJjY2ViYzA3NTg2ZTg0ZjhjOTY4MGMzMTIzYjA5YzQyZDUxNmMgbGVnYWN5LXRydW5rCis3MzE4MyBiZmFhZjJmNGIyZTViZDViMDcxOTkxYzgxMjQzZjFlZjdkNzFiNDY3IHB5M2sKKzczMTg0IGJjNzRiMmY2MTE1OTU4OTBjMWM0ZDAyODJlNmJkN2MwOGFiZjMzNDAgbGVnYWN5LXRydW5rCis3MzE4NSBhMjk4NDJlNWUxMzhjMzc1MWI3YjVjYWNhZmQ5MTA5NjI4MWI1M2QzIHB5M2sKKzczMTg2IDVhMzJmM2QwNjE1OGMzZTRlMDIzOGE3NmU1MTZjYWRiM2Y1ODkzYTYgbGVnYWN5LXRydW5rCis3MzE4NyAxNGE0YjZmYjAwZmViYTgxODk5OGE5YTI5YzNiN2MzMWY2MjMwMTIxIHB5M2sKKzczMTg4IGFiZDEzYWNmZjVkYmUyYmE5NGZjMDNkYjlhODlhYjZhZTQzOTU0NDUgcmVsZWFzZTMwLW1haW50Cis3MzE5MCA0NDM5YjIyY2Y2ZWFmZGU3OTNjMTNjZjk4OGQxYjg2MDlmOGViNjI4IGxlZ2FjeS10cnVuaworNzMxOTEgMjg3ODg3MTk4ZTJmYTcyNGZmNDZjOGEyYjY2NTYyYzM4OWE1MmRiOSBweTNrCis3MzE5NCAwYzk0YzVjYTU1ZDU3ZjUzMTcyNWZhZmQzMzBlMWExZGRmNjQ4MDQyIHB5M2sKKzczMTk1IGY0OGEwNTIxNDI4MWMwODMzMTliMDBjNzllZmM1MjQ3MzM3ZWI4OWMgcHkzaworNzMxOTYgZDA0Mzc4ZjlmZGI0NTZiNzEwNDJiNmQ2OWY1YmM4MTQ0NDNlNGI0NiBsZWdhY3ktdHJ1bmsKKzczMTk3IDdkZjI5MjlhM2QwNmZjNDg1MmE1NTI0NzcwYWUxMzcxMTFiZmNlZDEgbGVnYWN5LXRydW5rCis3MzE5OCBiNzgyZmQwNWE4MDY0MjUyZTVlNjA4YWIwNzE3OGE4MDU3YTIyMjQ1IHJlbGVhc2UyNi1tYWludAorNzMxOTkgMGQ4ZWQ5ZTU1OGYyOGUzMmI4NThkYzQ2ZTgxMWVhMmUxZDMyYjJhMSBweTNrCis3MzIwMCBhZmY5N2U1MGEyMDYwYTc3YjRlZWIwODk2NjM4MTMwZjUzMzE5ZWVmIHJlbGVhc2UzMC1tYWludAorNzMyMDEgOTdhMGE4NTg5MDE0ZDdlZDJhNjIwMWZiMDBhOTU3ZDM4OThkMjViNyBsZWdhY3ktdHJ1bmsKKzczMjAyIDAwZDU3NzJjODY4NjYyNTI0NmMyYTM5ZmE0NjNmMGY3ZDlhNzQ4MzQgcHkzaworNzMyMDMgNWVjZGI4Mjk0MzRmOTg2M2I5YWRiM2MzOTg2ZTBlMGIxNGE0Y2VkZSBweTNrCis3MzIwNCAxOGQ4MjNlOGI2MDJjZWRlNjdlMjg2MmY0M2IxZmQ5ZGQ4ZDNiMWExIHB5M2sKKzczMjA2IGQ1YmYwOGM4NjFhNjQyNWU4ZjBkYWJjMDI2MTQyNDIyOWY3ZmUzOGYgbGVnYWN5LXRydW5rCis3MzIwOCAzZjYyMTE0MGVmYzRhMmUyM2U5YWI1MGE1ZjBhMGFmYmQ5MjgyMjdmIHB5M2sKKzczMjEwIDhmYTRjY2E5YTIyY2U0OTMwNjNkZmIxNzQxMDcxNDY5YmM3YmNmYzAgcHkzaworNzMyMTEgMDMxYjk2M2YyYmMyNzZkNWZlMDA1MjRkZjlkNDQ4ZWI4N2YyNDM4YiBweTNrCis3MzIxMiA4NDMxNzhjZjA4OTlkN2M5ZmU2ZTg0Y2Y5ODhhMDg2MDI4OTc0ZTczIGxlZ2FjeS10cnVuaworNzMyMTMgMGUwNTRjNjU3MDYyNDAyZDM3OGFiNDVkZDBkOTU1NGVmMjI3NmI0NyBsZWdhY3ktdHJ1bmsKKzczMjE0IGU5YjBkYjU1M2QwMWZhODBmMzk0NGY4MzYzMDVhNTU2OTY1ZjBjYTEgcHkzaworNzMyMTUgM2M0MTU3MzQ5MGNiODVjNzdhMmU5ZDg5YTY5MWFkOGJiMzI1YjU3OSBsZWdhY3ktdHJ1bmsKKzczMjE2IDUwYmVhNTMzOWYxODIyYzlkZjllOGExZjNmNzdlZTM3OTA0OWRhNWIgcHkzaworNzMyMTcgNzQyNDYxMjliZDIyMzNhY2FhZGU5MjNkOTFkNjU1ZmM0YTAwM2VlZSBsZWdhY3ktdHJ1bmsKKzczMjE4IGRkYjUwYzNiODZmMmUzZDFiZWMzZDU1MmIyNGMyMjdkNGFmNGU1NmUgcHkzaworNzMyMjMgMGIwNzUzMTY3M2FjZDJiNDVhZDVkMWE3MDlhNGEzMTVlNjA2YzE5MCBweTNrCis3MzIyNCBhMDdlYTgyYTViYjBjYzgxOTM4ZWQ4NTg0MjE4ZjJiZjg1MDY5NGRhIGxlZ2FjeS10cnVuaworNzMyMjcgMzljYjAxYjBmYzY0OGYzMWZhZTExNTNiY2NhYjY0MmQwOTQ1OWFhZSByZWxlYXNlMjYtbWFpbnQKKzczMjI4IDY4NmMxNWI4Njc0ODk4Y2NlOTkyNTBmNzc1YzIwZmY5ZjEyYmRlYTEgcHkzaworNzMyMjkgZWVmNWQxY2U2ZjRiNzBkOWJjZjIzNDM4ZmZjZDljOTY5ZjcxOTgzYiByZWxlYXNlMzAtbWFpbnQKKzczMjMwIGQ0NTI2OTk1NmVmZmUyMmRhY2Q1ZWNkZjFkNDZhMDVlNTEwZGM3NjUgcHkzaworNzMyMzIgZWQ2ZWQzYzgzOWY1YmM5M2FhYWQzZWMwNDdkMGY0YmQxNGQ3NDljMyBsZWdhY3ktdHJ1bmsKKzczMjMzIDNhNzg0YjIxNzIyMDlmM2M5MjQ0MDZiMWFjZDk0MWU3YzMxNGUyM2YgcHkzaworNzMyMzYgMDgwNWVhMjExMTIyMGU0MGJlNDFkOTYyNjg4YTJjMjYwOWJmNmY4MiBweTNrCis3MzIzNyBkOTkyMjgyOWMyMDQzNDgyNmM5YjAyMzI5NWE1ZDEwMDQ1ZTUxMzE3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzIzOCAwM2JlYWQ3Mjk0N2VmOWI1YWZkYzU0ZjE4M2FmYjE2ZGUxYzQ2ZWU2IGxlZ2FjeS10cnVuaworNzMyNDAgODEwYzI1ZjE5Y2Q5NGIyYjkwMzAzNDUzZGRjZmNlNGZjNThjYjZjOSBsZWdhY3ktdHJ1bmsKKzczMjQxIGViZWI0ZDY3ZGJhZTk2Njk3MDdkYjMyOGZjODdlMDIzMTFiOGRjNDEgcHkzaworNzMyNDIgYzJjZWM1NmQwYjhhMTE1YWMyM2Q0NTY4ODIxNjhiZjIxNmEzOTY1OCByZWxlYXNlMjYtbWFpbnQKKzczMjQzIGNlZWYwYTc4YmY4NzlmMzAxNzQ0ZWI1YmYyNDQ3ZTNjMzU5NGJkNDEgbGVnYWN5LXRydW5rCis3MzI0NSAwOTRmZDMzNWE0NzEwMjA0NWIwZDc3ZGNhMDI5OWY2NzJhMjBjYjc2IHJlbGVhc2UyNi1tYWludAorNzMyNDYgZWY3NDMxMmQ3MjE1NWY3MTgwZDI4ZWIwMTMzNjAxODgzMmRjNDllYyBweTNrCis3MzI0NyBlNGE3YzQ4ZGU2MDNiZGQwZTAwYzEwMjgzMDdiZTRkM2MyMGE1YzhkIGxlZ2FjeS10cnVuaworNzMyNDggYWU5YjVkNGYxMjI5YWQ2YzJlNDJmMDc2NTRlZjU4YjBhOGQ5NmE3MSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNTAgNjAyNTU5ZmE1Mjk3ZDUxOTFjMjQ2MjdmMDExY2IzNjc4MDFjYWRmMSBsZWdhY3ktdHJ1bmsKKzczMjUxIGRhMzNiZWQ1ZDhjNDg2MjlkMjBlNzAwY2M3NzIyMWQ1ZTJjZjM0ZjIgcHkzaworNzMyNTIgMTEyZTFiYjU3ZTdiMmRmYTU3ZjAxNjU3MzI2NDEzZWUxMzA5ZmZiZCBsZWdhY3ktdHJ1bmsKKzczMjUzIDljMDkxNTQ0ZTFkZjI3OGVlYTc0ZGVlOGYxNDk4NmQ2NDU1MmUyMTQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjU0IDU3OGJhZjdkMzExNDczMjAxYjkyNGNjYjYwMzI2MWQ3Mzc4MDkyZjYgcHkzaworNzMyNTcgODFhNWIxZWM5MTA1YWFiN2JjYzNjYTA2MGI2YTExMDVhODEyMWMzMSBsZWdhY3ktdHJ1bmsKKzczMjU4IDEyODUzZGIzZWVhMzdjZWQ1NjIwMWI4ZGYwYWI2ZGUyOWExNjFlNzIgbGVnYWN5LXRydW5rCis3MzI1OSAxZjhkOTg3MjBhY2NjOTk5ZDAxOWQ3YTNkNzAxNjFiNDk5YjAyZWYyIHB5M2sKKzczMjYwIDg4ODhhNmZlOWRkN2YyOTBkOTNmNmU4NzhhOTBmYjQ4MmQ0ZTI4ODAgbGVnYWN5LXRydW5rCis3MzI2MSA5NTQ3ZjRiYmQ1YTQ1Zjg1OTgxMGM5ZTkwMTI2M2ZjOWIzOTU4YjkyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI2MiAzMmUzNDQ4M2U2ZGI3MjMzZWU0ZTQxODM3NGNlNDQ1ODRkYzRiZGMyIHB5M2sKKzczMjYzIGNlODk1OTJhOTNhNDM2ZTJhMWE1ZTg3YWVkZjE5N2ZmODg0Y2U3OWUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY0IDMxN2ExNzU4NDA1ODAzN2M4YmY1NjNhMDdjZGM2ZjIzY2I4ZjFmNzYgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY1IDc4N2YyN2VkNzJjMjhkM2M3YjUxNTg4NGMxZjNjNGY0NTUwZDk4ZDcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY2IDE5ZDhhM2E0ZTE0OTYwMmU1ZDlmZjYyMTdlMTRhMjMwYWRhZWFkMTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY3IDdlZTU3OTlhN2I1MTk1NjEyZTJlNjNlNDdkNTE0MDZmM2ZlZmI3YmQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY4IDNkODM1N2NjZjU4MzFlZmQ5ZjYzNTk0ZGE5ZDQwZjhmNTMzYWEyYjUgcHkzaworNzMyNjkgZmFmYjk5MWJlYTZiMWIwNzk3ZTU4M2UyYWFiZDViMmI2MWRmYTA2NyBweTNrCis3MzI3MCA3ODNkNDA0NGRjMmRmOTI5YTU4Y2Q4NDA2MWUxNjQzMTUyYzQ4Y2FjIGxlZ2FjeS10cnVuaworNzMyNzEgMGViZTg4OWYxMDZmZTlkZmUwNzIxNTk2NDM0NGU2ZTUyNzVhNGI5MCBweTNrCis3MzI3MiBkYTY4NzFiOWQ4ODRjNGU4N2EyODcwNWI2YmU0N2RmYWE1NWU2MDY4IGxlZ2FjeS10cnVuaworNzMyNzMgNjZhNWJiM2Q4YThkODJkOGY5MWRjMDRhMGMxZjY3MjY0ZTk3YTMxOSBweTNrCis3MzI3NCBkNjc5YjYwOTA3Zjc2OThiMGMwYTljMTNjMzg5YjlkYWFjMjUwY2ExIHB5M2sKKzczMjc1IDNlMmI4ZGU0YjE2Y2M4MmRhYTcwOWMyMTFlNDRiMjdlZWJhMDNkYjMgbGVnYWN5LXRydW5rCis3MzI3NiAwNmY1ZjQyNmI4NDkxMTg2ZDVlODQyZjgxZGY2ODc1NjVlYTI4ZGRkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI3NyA4ODliNWZkOGRhMzA5YTU1Y2RhZDI2NTZhZjQ3MWJmYTY4YzVmZDgxIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI3OCA4NTE2MzZiNjJhZDk1YWI3Y2NlZGJmNDU2NDE4ZWNmNzQ5Y2E0YWI0IGxlZ2FjeS10cnVuaworNzMyNzkgZDk0NWU2ZGU1MjI3YjZiYmIyYmY3YWU0NzAxMDEwN2I4YmU2NGViNiBsZWdhY3ktdHJ1bmsKKzczMjgwIGQ3OWZkZTEwNDFiZGMwYWY3NGY5MDhhNzQ4NjgxZmE5MTA2OTJlODIgbGVnYWN5LXRydW5rCis3MzI4MSAwNTRlYTQ3ZDZjYzczODM2ZDM3ZWU5NzQ1N2Q1YWYwNzFiODkzNTY5IGxlZ2FjeS10cnVuaworNzMyODIgMGFiZjU2MmIxZTZjZjZlODhlZmVlOGRhODE3MWNiY2EzNDFjMTZhOCBsZWdhY3ktdHJ1bmsKKzczMjgzIGY3YzllNzM0MjA4NDAwODJkMjc2ZjM3ZWY2MDQwYThkMDMwNWE5YjEgcHkzaworNzMyODQgNmJmYjU5NTIxMTM2NDdkMzY1M2Q4ZDMyZjIwMWFmYzBjNTAxOWU4NyBweTNrCis3MzI4NSBmMDAxOWZmNmIzZTViMzM0YmVkMGQwMTc4Yjk3OWIyNmM4NTBlODEyIHB5M2sKKzczMjg2IDFlZjE0MjFhNjEyMjU1MzBiNDI3ZWQ1MTY3YTFhYWM1YTYzZDdjNzggbGVnYWN5LXRydW5rCis3MzI4NyBlZjY1Y2M0MDJjOTIzMTYyYWI1NDJmN2EzMDgxMjQyOTI1YjBjZWU2IHB5M2sKKzczMjg4IGNmOGZmYWI0OTAwMzM1YTc3ZWFkNTI5ZDZhZjY2MWVkZTQ1ZjE1ZTQgcHkzaworNzMyODkgOTg1NTIxMzFmNjQxYmMzYjMxNDRlZmM4NzlhNDc5MjhkYTg0Y2U2NyBweTNrCis3MzI5MCA1NWRkOWVkMjNlZWFlY2YyODBhYWI1Zjk1ZDBhYzMyYmYwNmY2ZjgwIHB5M2sKKzczMjkxIDhmOTI4NzkyNTQ3Y2FmNGU2MDNiYjhmYTkxODM3MjU2ZjVmODIwN2YgcHkzaworNzMyOTMgMjdlMDg5Y2FiNzI5YTFkZmY0OTE3NGUyYTg5N2I4ZTE3ZTI5MDAyZiBweTNrCis3MzI5NCBiNTA0ZDZkMzRmY2Q3MDgwZjE2N2Q5Mzg0ZTQyMGEyY2U5N2Q1M2VhIGxlZ2FjeS10cnVuaworNzMyOTUgN2FkMmYyMmYxM2U2YTAwYzQ4ZGI3MGY1YzdjNTk1OTcyNDYwMDkyNiBweTNrCis3MzI5NiA2OTg1NTdjYzVkYzUwN2Y4YjIyNTgyNzNiZjU2M2Y3YTNmZmNmOTJhIGxlZ2FjeS10cnVuaworNzMyOTcgYzAxN2QxOTE2NzMxNDE3MzZiNWM3MDdiNGRjYmFkNjE3ZTdkM2M2YyBweTNrCis3MzI5OSBjYTUxOTk2MDk5ZmRkMjQ3NDQ4ZjYzYjc1YTNiYzk2NGRkODMzMzYzIGxlZ2FjeS10cnVuaworNzMzMDAgMjc5NWQ2ZmIyMWUyNjJkOWM3MDJmNDMyMjQ5ZjkyYmEwODU2ZTZhZiBweTNrCis3MzMwMSA1NDE4OWQ1YTY2NzQ3OTc0NDVkN2NjNTkxNzIwYjFjODk2ZDJlOTI2IHB5M2sKKzczMzAyIDI1NWRiNzBiYjMxNmFjMGUyZmVhZDM5MTNjYzE0MDBhY2YxZTExNmUgcHkzaworNzMzMDMgY2ViMjYyZDQ0ZDc0NjQxNDZkNjNiODRiZTQ0NGFjMmUyNjU5MzUxYSBsZWdhY3ktdHJ1bmsKKzczMzA0IDcxY2I2MDI5ZTg5Mjc5NTBlNzVkNGZhYzA3MGFhODgwZjU5N2Y2NGEgcHkzaworNzMzMDUgMWM3ZWI1YjYyMjlkZGY1MjkxMmQ3MWNjNDkyYTc2NWEyNmY0MmFhMSBsZWdhY3ktdHJ1bmsKKzczMzA2IDM1YzVjMWUwN2E0NGNmMzA3NWQzNjIyNjlmYjkwNjU4MDU3NTI5YTAgcmVsZWFzZTI2LW1haW50Cis3MzMwNyBmZDBhZDExNWUyMzgyOWFiOTZjOGMyZTZmMTlhNTZjNTk5NzYzN2JhIHB5M2sKKzczMzA4IDg2YjMyZTFmZDk5ZjBjN2Y4MWU5NTUzNjIzOTlmOTE2MzI3NDAwZDUgbGVnYWN5LXRydW5rCis3MzMxMiAxYjg2MDJjMzhmZDBjN2FhYTc4Njk0Yjc4YmQxYmI5YWQ5NTIzZDhhIGxlZ2FjeS10cnVuaworNzMzMTMgYzRhODFjZTNjODkzMjcwMjBjNzZiM2FkNTE3ZThmZmFmZWNhOWFmNSBsZWdhY3ktdHJ1bmsKKzczMzE0IGVhMzBhYWNiMzE4MTYzN2U4ZjllMDA5Y2NhZDI1NDRlMGE0ZjQ5ZDEgbGVnYWN5LXRydW5rCis3MzMxNSA4NzUzNGJmZDFiZThiN2JkZDIwYzkwYzgyMWZhY2FhNmI4OTA3ZWFmIHJlbGVhc2UyNi1tYWludAorNzMzMTYgZDJkNTRkYzhlNDAwZmFhNjE0MGJiZDBlMTY1NjNmNWE3YTRkM2JmNSBweTNrCis3MzMxNyA1MTc3YjY3ODBjYjc0MmYwMjMxZDUwYWJhZjhjYzFiZjkwMWVhNjBiIGxlZ2FjeS10cnVuaworNzMzMTggYjk2YzlkOGQ1Zjk4NWRiNmUzOGJiNjllYWNiNTZhZjZmZmI4Yjc3YyBsZWdhY3ktdHJ1bmsKKzczMzE5IDc2MGE4ODY2YWVmZmEyNDEwYTczNGYyMzA1OTY2ZDIxY2Q4N2VkZTEgcHkzaworNzMzMjAgYWIzYTIxMzM2YTg0ZDZiNzg4ZDU0ZDUxZGU0YjAxYmI3ODY5NGIxZSBweTNrCis3MzMyMSA0NDYwMzBmMzEwYTk1MTVjN2ExNmQ4OWY2MjJjMmQ4YjNmNzZhMTUzIGxlZ2FjeS10cnVuaworNzMzMjIgOTFkNGM1MTRlNzhjMDI5OTFlNWNmZWI2ZGU4YjUzOTQxNmFlMjY0NiBweTNrCis3MzMyMyBmNTgyODc0MmI0NmZlZDI0NzhkMWJjNGM4NGIwNDEzZWE3NjM2NGMwIHJlbGVhc2UzMC1tYWludAorNzMzMjQgZDQ5ZDQ4ZjMzNWM5MDA5YmFiZDBjYzZkNzc5YzFlZThlMTE0OGQwMyBsZWdhY3ktdHJ1bmsKKzczMzI1IDkxNDVmNThmNzQ5OTlhNzMzMGIxYjA1OWM3Y2IzNDEwNjY4NjFkZTYgbGVnYWN5LXRydW5rCis3MzMyNiBmYTY3YmY2NzRhZjM2M2U0NDY0NTVmOGRhNGRiNDJhNjVlYzViY2MyIGxlZ2FjeS10cnVuaworNzMzMjcgZWM4NDVjNGUzZDczNmI2YTkwZGM2NWNkZmQyNzc3YTljNGYzZGQxZSBweTNrCis3MzMyOCBiOGQxNjBhZDFjOTI1NjM2NTQ4MGY0Mzk2YTUwYzU4MWQ2ZWUxZWI3IGxlZ2FjeS10cnVuaworNzMzMjkgNjYyOTdhMDc0ZDhiZTljMDQ1MTc3OTJiOWRlZjFkYzAxNmZmZDQ4ZSByZWxlYXNlMzAtbWFpbnQKKzczMzMwIDA0ODA3MDA1NTNhYjIzZmNlZTg1ZjYzNzlmNTA1YjBmMGM5ZDcxMmEgcHkzaworNzMzMzEgNzQ0ZTk4NGYxODQxYWEwNWY1MDk0Y2ZmMDI2MTc4MjZhYWVhMmZiOSBsZWdhY3ktdHJ1bmsKKzczMzMyIDRmZDNhNGFlZWU0NzNlNzEwNzM4MjdiNGJiNGU0YThlMzRiMDA0YzkgcHkzaworNzMzMzMgMTNhOTg3NGQ4ZjQ3NmE0MmRiM2Y1NWYwMGI3M2YyN2I2ZTdkOWRiOCBweTNrCis3MzMzNCBiNjA5NWRjOGYzNWMwNzBjNDdlODIyMThiMWQzYWY3M2QzMGMyNTY1IGxlZ2FjeS10cnVuaworNzMzMzUgNGFjZDkzNmNmNmI2Zjk3MjcyNjBiYTViNDUyYjE3MzdkZjcwNTdhYSBsZWdhY3ktdHJ1bmsKKzczMzM2IGVkZjNkZGFhMzQ2YmZkMTJiMDU2NmY4YmZiODQ3ZTA3OTIyODJiZTkgbGVnYWN5LXRydW5rCis3MzMzNyAwM2QzOGEyYWJjNDZhOThiYjJlYzM0NmI5NWZkYjk5NjU3Njg1ZGUxIHJlbGVhc2UyNi1tYWludAorNzMzMzggNjU3YThhZTBiYmM5NDY3ODg0ZTQ5MDY1YWI0NzEyMzIzOTJjOTg0MyBweTNrCis3MzMzOSBmNDFiMjg1ZjJiNTlhY2ZlOGM2ZWE2MTAzY2Q1MDI2NzI0YmZjMTU5IHJlbGVhc2UzMC1tYWludAorNzMzNDAgMjcxOWE4OGMyMjk0ZjQwNGQxZGMyYjIwNmY0YWEyMGIxYTcxODIwYSBsZWdhY3ktdHJ1bmsKKzczMzQxIDY1NzkzYWNjMDA5NTAwMmZhMGY2MjJhYzFkOTIyYjVjY2FmZDYxZGQgbGVnYWN5LXRydW5rCis3MzM0MiAwYWRmMGZhNzk5M2JjZWE0MGIxYzRkZjVmNTY2MDA5ODJmZmQwMGFmIHJlbGVhc2UyNi1tYWludAorNzMzNDMgOGIzYWUzYTM4MjUwNzYxNDg3ZTlkNmI5MWU5MTZiYWU4NGUwNDAwZSBweTNrCis3MzM0NCBmNjMxNDc1YTI2NDJiM2IzOGI0NzVkZGM1YjMxNTViZTEzNmZjODNiIHJlbGVhc2UzMC1tYWludAorNzMzNDUgYjQ2MzVkYTMxMDk5OTIyODg5Mzc0NjQwYTZkNTFhZjNmMWM4YjdhMSBsZWdhY3ktdHJ1bmsKKzczMzQ2IDgwZWYzYjdhNGUwZGY0NWExZGUyMGM0ODY1YWY1ZjI1ZDZjYmFhYWEgcmVsZWFzZTI2LW1haW50Cis3MzM0NyA0NzU1Zjg5OGI5ZmUwZDQ5YzFkNjU2NWNkNmY1NDA2ZmIxMWFmOWI1IHB5M2sKKzczMzQ4IDBkZTY2ZmNlZjBmYTg5NzJlOTQzZjFkNzBlZDE0ZTM4ZjFkMjkxOWYgbGVnYWN5LXRydW5rCis3MzM0OSBlYzU5MTdmNzdhYzBlNjg4ZmYyNjM5OTY5ZmY4YTIyMjQ1ODBmMTZjIHJlbGVhc2UyNi1tYWludAorNzMzNTAgYTJmMjM3NmUxZDIwMWEyODhkNjUxOTc2NGM5MjZkNjUwNGIwOGEyZiBsZWdhY3ktdHJ1bmsKKzczMzUxIDYwMDM2ZTUwY2QxODY3NTU0N2Q5NWE4MzAyZTc3MmQ4MzVmYTU2MzAgcHkzaworNzMzNTIgMDAzMWJhMjEzOTBhMWIzYWVmOGM5OTk0MmI4ZGI0YmY5OTAzYjUzMSByZWxlYXNlMzAtbWFpbnQKKzczMzUzIDExMjg4MjM5NzlkZGU5NDMyNWJjMzJhMjVjYjYxYjc3OGEzYmE4NjAgbGVnYWN5LXRydW5rCis3MzM1NCAwZDliZDkxZWI4NWNiNWM0ZTQ0YTE4ZjI5YzJmMmI2NWYzOGY3YmFkIGxlZ2FjeS10cnVuaworNzMzNTUgMjA5YTUzOWViZmY4MDZjMjljNjMyNzllMDZiY2FjMDhhZmYwMTdjOSByZWxlYXNlMjYtbWFpbnQKKzczMzU2IDMyNDRmYzQ3NzNmNTc3MjVlZjNkYWVmMGRkYmQ3OTA5MjBiNjQ3NjUgcHkzaworNzMzNTcgYmI2M2ZkOTc5ZmNkMGE4MTQ0N2E2NzBlZjFlZDUyMDkxOWU4MDJiMCByZWxlYXNlMjYtbWFpbnQKKzczMzU4IDVhMzk4NWU1ZGFlM2I1NzMwMzZlOWVhNWVhM2UzNzUyYjJkOTExMjMgcmVsZWFzZTMwLW1haW50Cis3MzM1OSAxNDAxODJhY2NkMWY1ODE3ZWExOTZkZTk0MjcwMGViMjBkMWViOTI3IHB5M2sKKzczMzYwIDQxNzlhM2U2NjEyMzFmOTNjYzU1MDI3NmU1MWQ5ZTkwODU0NGEwZDggcHkzaworNzMzNjEgOTZhMGMzZjZlZjhiZWEyNzI4OTU1YzllNWYwYTdiNTM2Nzg4ZjBiYyBsZWdhY3ktdHJ1bmsKKzczMzYyIDAyNzQ0NDgxMGUzZjM5Y2IzNThlNjExNDQ4MTRjNTA5NWY1NDAzMTIgbGVnYWN5LXRydW5rCis3MzM2MyBhMWUwNjgxYWNiMzZmMWI3YTc4NzNhNDM0MDhlNjI5Yzg3YzdmYzk2IGxlZ2FjeS10cnVuaworNzMzNjQgNDFlNmNmNjg1ZWQxNmIyOWRlNzg5YTg2MWJkZWNjODg1ODM3MWM5NSBweTNrCis3MzM2NiAyMDE3MGJkMGFmMjU0ZGVkOTdhMWZkNzMzZWFjZTFlMDUyYjVkOGYyIHJlbGVhc2UzMC1tYWludAorNzMzNjcgNzI4ODlhMGI4ZjMyMmE3MzhmMTZkZWY4ODU2YzVmZGM2NWNiN2RmNSBsZWdhY3ktdHJ1bmsKKzczMzY4IDllZTllN2FhOGFiYzI0NDI1ODVkOWQ3YTlmYTI5OGJkMjA3NmUxNzYgcmVsZWFzZTI2LW1haW50Cis3MzM2OSBlMjA0MWM1YzYwMDYzZjkzZGVkMGMxNzdiMzAxOTQ2OWJhNzMxNDVjIHB5M2sKKzczMzcwIDc3MDA0MDhmNjVmYzQxZmZmNjM1NjE2MTgwZDc1NDJiMTc0YTg5NzkgbGVnYWN5LXRydW5rCis3MzM3MSBkNjZjYWZkNmJjMjFiMDk4ZDhmNzIwZGVmZjQ3MTViZDY1NDM4NTVmIHJlbGVhc2UzMC1tYWludAorNzMzNzIgNWVhODUwN2Q5YmUxMmEwZjY1Njc0YWY2YmIwYzE4ODIyMDk0ZDZlZCBsZWdhY3ktdHJ1bmsKKzczMzczIDYwYTBhZjMyYTY2M2UyYWQyNjU4NzY2MGRiNDI4YTI1Nzc5NTI3MTkgcmVsZWFzZTI2LW1haW50Cis3MzM3NCAxMmJmODdjZDI3NDMwZTBhZGY3MzY4ZmZiOTY1NjcyOTVkYjY0ZWQ1IHB5M2sKKzczMzc1IDRmOGE0NGI1MWQwYzFlYWQ0ZGM1M2ZlODUwYThiOTI1MTA5ZDc4ZWYgcHkzaworNzMzNzYgNTMwNmI4NGQ0ZmNlZWM2OWZhNzY4MTgwM2U1MzAwZGJkZTg4Zjc1MCBsZWdhY3ktdHJ1bmsKKzczMzc3IDYzNzBkNzFlM2NhMzI3MTg2MmE1OTI2MzA4N2ZjZGNlYWJjYzdiZTUgcHkzaworNzMzNzggNTVkMjJiMDI0NDY0ZGIyNWE1Y2M1MGQ2NGQxMTVmZDI2OGM3NWMxNiBweTNrCis3MzM4MCAwZTFiM2MyNGQzZTI3YTY2ZjJlOGQ3OGVlNzU0NTE1YzM1ZjEzNDVjIHB5M2sKKzczMzgxIDlmM2EyNTc0M2YwM2ZiNTBhOWYxMGI0ZGY2ZjJlMTcyZmVhZTIzMjYgcmVsZWFzZTMwLW1haW50Cis3MzM4MiBiYTEwMjU0MGVhMzczODhhYzA5NTVlOWQ4YTUyZDhmZWUwOGZmYTdmIGxlZ2FjeS10cnVuaworNzMzODMgN2NmODllZDkwZjlkMDY0YWU0YTFkMmM4OTg0ZDIwOTgwZDRmODNhOSByZWxlYXNlMjYtbWFpbnQKKzczMzg0IGRhZTliZTYzNzliM2U1ODQxODdkYTg2ZGVlMjY3OTAzYmE1YzRlMTMgcHkzaworNzMzODUgZmNiY2Q5MzEzMzhiODkzOWU5MjVkNjFmMmRlZTU5ZjhiZDBhMWQ0OSBweTNrCis3MzM4NyBjOTQ5NGM4ODc4OGY1Yjg1MmJkMmVmOWY3MThlY2FjNmFhYzI4MmY1IHB5M2sKKzczMzg5IGY1NzY4MDc0OGVjYmQ2OTU1Yzc2OTUxMGQ3ZDc0OGFlN2I4NDNkNmIgcHkzaworNzMzOTAgNjUyNTUxYWU0NzY3MDJmMzZhZjI1ZDY5ZjNkZjY4YWYxNjI2MDRhNiBsZWdhY3ktdHJ1bmsKKzczMzkxIDA3ZTJlZTJmZDM2ZDMyZmJjNGY1ZGJlZjQwYzM3M2NkNWVjMjk0M2MgcHkzaworNzMzOTIgNjQ5MmI2ZWNlNTk4N2FiZTRjMWY0MDY2ZmJhNzc0ZDZhMzAyYmY4MSBweTNrCis3MzM5MyBmMzQ3NTRhNzQ1YWUyYTJhODQ1Nzg5MzA3NTczNmUwZTE3OTZiNGU1IGxlZ2FjeS10cnVuaworNzMzOTQgNzYwYTcxMGViNmMxNTY1NGE5OWE1MjgyY2E5OGFiOWE3M2JjN2JhOSBsZWdhY3ktdHJ1bmsKKzczMzk1IDAxN2I0YjY0NGZhZjI0NTMxM2E0YTU3NzhjODU0ZTFhN2YyYjg5YTYgbGVnYWN5LXRydW5rCis3MzM5NiBjZGYyNTJjODc0MzM2YjA1YzFhYTQ1OWY0ODc5NWIyNDZlOGQ0NWUzIGxlZ2FjeS10cnVuaworNzMzOTcgMjRjOGQxYWFiYWRlMzE5OTM1YmQzYjdmMDVkNjQ1Y2I4OTBmZTgwMSBsZWdhY3ktdHJ1bmsKKzczMzk4IDkyMWU1NjlkMTIxNTc3ZjViMDM3NDY3YzkyNDQ0ZjQ4NWZmOTZjYTQgbGVnYWN5LXRydW5rCis3MzM5OSBkODMzOGE5YTFlM2E4ODEwMGRlNDMzMzZmOGZjNmQ0NTkzYTI2MWQyIHJlbGVhc2UyNi1tYWludAorNzM0MDAgZWI2MWNjYTVmNTRkZTNhYWFkYzQ4MjY1ZmYyZDQ5OTg4YzY2YjYxNSBsZWdhY3ktdHJ1bmsKKzczNDAxIGJlZTQ2ZmYwZTU3ODM1YWYzNDhmMTMxZjYyNjlmNmJiMjMwMWQ5YjUgbGVnYWN5LXRydW5rCis3MzQwMiA0NTNmZTQ4ODQyZDBiMTA4NDVhY2IzNWZlNTkwM2VkNzVjOTU4ZTE0IGxlZ2FjeS10cnVuaworNzM0MDMgNzVjNGQzYmM2Y2M4ODQwMzc3Zjk4ZDEzMGM2MWYwZDQ4Zjg1MWFhZCByZWxlYXNlMzAtbWFpbnQKKzczNDA0IDBjMzU3ZTNmYzNkMDE3YzY2YTk0MDE3Y2RhNzVkZTM2ODZjYzQzOWMgbGVnYWN5LXRydW5rCis3MzQwNSA3ODhlMTM5N2NlNzc3NDU4ZmIwZGM4ZjNhMGU5NmI1OGJlNGE4Y2YwIGxlZ2FjeS10cnVuaworNzM0MDYgYjQzMzk4ZWE1NDlkZTQ0MGU2Mjg1M2M1OGUwYjg4M2U2M2VkOTNiZCByZWxlYXNlMjYtbWFpbnQKKzczNDA3IDQ3ZTMzNjVlMjE3N2U4OGEwYTk5ZGUxMmEzMmY0NDU5NWFiYzVjM2MgcmVsZWFzZTMwLW1haW50Cis3MzQwOCAwMzJjMmU1ZTA2MTRmMzcwZTgwZjk2YTUzMDQ0NjliNDY1ZDE0OTJlIHB5M2sKKzczNDA5IDA0Y2NlYzA0NDFiMmE2Mzk0YWI5NGQ2YTY0MDUyNGQwMTQxZWM5NmIgbGVnYWN5LXRydW5rCis3MzQxMCAwM2E4NDhkMWNiNjgyNzZhODhhMDZmYjc2NzNiYzFhZGQ0YTUzYjA5IHB5M2sKKzczNDExIDI1ZWRjNWY3MmE3MmVhM2M5M2Q2NjNjZWY3NWZiOTg1MDQ0ZWZlOWMgcHkzaworNzM0MTIgMGI4N2U0MzhlMWI1M2UzZjgxMmNhZDk2M2E3ZmRiNjVkMTk4YmEyZiBweTNrCis3MzQxMyAxOWU1ZGZjZTBmYmIwMjk1YmQ5MDVkYzU3NDRiY2FjNTBmNmVlZDg0IHB5M2sKKzczNDE1IDI2ZjhhZTZmMDM3ZDZiNWUyM2MyMGU0NWViNzY2YTkxYWRkMWZlODYgbGVnYWN5LXRydW5rCis3MzQxNiBhNzY0ZGI2NDAyODQyYmM3NjE4NGExZmVjYTMyNzgyNjhhZjA1MmQ5IHB5M2sKKzczNDE3IDkxMjQyMzEzNTQ4MzgxNjA2ZWNiZDc3YzZlYjhkNTQxNmY1ODBjZjQgbGVnYWN5LXRydW5rCis3MzQxOCAyMjEyNzQwZjQ1NDQ2OWJlODExODc1Yjk1MjcxNWVkYTJmMjg0MzgxIGxlZ2FjeS10cnVuaworNzM0MTkgY2I2NjQ3M2NiYmY4OGQ5ZjAxODU3MWFiYWViMTdiYTllNjQ4MGVhMCBsZWdhY3ktdHJ1bmsKKzczNDIwIDNlYjg1MTA4MDhjOWQwZTQzMzBiNDRlNDdhYTliMWI1MzRmNzhlYTAgbGVnYWN5LXRydW5rCis3MzQyMSA0MGM4YzM1NDkyZjE0YTI4OTc2NTRmZWFkNzQxNGQzY2MxNzM4OTM1IGxlZ2FjeS10cnVuaworNzM0MjIgMjQ3ZjhkMjY4ZDU4YzQxYTI0NDYyYjNkZDc3M2E2NjQyNDhjYjVjNSBsZWdhY3ktdHJ1bmsKKzczNDIzIGYxMThhYWI2NTBkZDNlOWMyNGZhZmNjMzIzMjMyMDBlN2UxNWIwNjUgbGVnYWN5LXRydW5rCis3MzQyNCAwYmUzNzdlNjA4MDFiNmFmZWIzMjlmMmY0NzAwOWJlZjBhNjNkMGNiIHB5M2sKKzczNDI1IDAxNTEwMjlkZTFkOTE3NDBjNGUxNWZlNzE3NDdkYTJjMGZmZDMwM2YgbGVnYWN5LXRydW5rCis3MzQyNiAzYzhmNGY3ZTRhNjJlYjFkMGUwYTNhOTE4MTYxMTgxZWJjYzA5MDk4IHJlbGVhc2UyNi1tYWludAorNzM0MjcgZTQxMTljOTBiZjI5NTM4ZDAwMmJhZjlkZTlmZGFkNTczZDgxZDQ3YiBweTNrCis3MzQyOCA5MDNlZmJmNTExYjRmZWUxNzk0OWFiMjRmZGY0ZWI5ODFlOThmZmQyIHJlbGVhc2UzMC1tYWludAorNzM0MjkgOTAwMGEwODExNTk5NDFiZmU3YWZlZjI1ZjJhNGVkYTVmZTEyYWMwMSBweTNrCis3MzQzMCA0NjU4ZmNhYWZjNzMyODgzZmE5NzM3MDgyNDEwNTI4Zjc5ZmNlZjVkIHB5M2sKKzczNDMxIGI2MzRkMGVjOGQzNTE1ODMwN2U4MGI3MTNlNzVlZDBiZGQ4OWYyYmYgcHkzaworNzM0MzIgMzExMTA3NDQzY2MxMzZiMGMzYjUwZTU3ZmIxN2UxNTJjNmQyNWJlMyBsZWdhY3ktdHJ1bmsKKzczNDMzIGQ4YWE0ODU0ODVhNmNmOGFhMGM0NzNkNTEwMDBiNmZlNWNjNmE3M2IgbGVnYWN5LXRydW5rCis3MzQzNCBlMTgzMThmOTg1ZWQyZTFjZWQ2NmYwYTYyMGU3OWY3ZDIzMDM0ZDBmIHB5M2sKKzczNDM1IDFiM2ExOTAzN2Y3NjQxMzVkMTRiODIxY2FlMTc4ZjBhNDU0M2JlNzIgbGVnYWN5LXRydW5rCis3MzQzNiA0MzczZjBlNGViMjEzMmI5MWRlOTc5YTVkMDFjNzk2MWRkNjk1OTRiIGxlZ2FjeS10cnVuaworNzM0MzcgYzdhYzcwYTk0NGI1MDFkOTFmMDdmN2Q0ODkyZGYwMjNkMGNkMzIxNyByZWxlYXNlMjYtbWFpbnQKKzczNDM5IDRhNTBmMGJkYzgwNjNhN2E2OTk2YTUwNjJiOTQxYzRmNjE0MTJlYTAgbGVnYWN5LXRydW5rCis3MzQ0MSAyMDM0M2FhMmEzZWI3OTNkMTRmZDE0YjhmODAwYjljZjNjODBjZmI3IGxlZ2FjeS10cnVuaworNzM0NDIgY2I1YWU0NDAxZWJmZGM2OTMyOTIxYzc5YTc3N2JiOWUzMmEzODg4OSByZWxlYXNlMjYtbWFpbnQKKzczNDQzIDk4MTRkN2Y2NTlhMDBlZGZhNzcxYjkyN2I5YjliMWM2NjIxNTRkYTAgcHkzaworNzM0NDQgMjc3ZmQwNjRiNTMwMWE2MGE2ZTA4YmMyNGI1NzUzNzg3MDU3NzQ0YSByZWxlYXNlMzAtbWFpbnQKKzczNDQ1IDA3NmRiNGRlMDM3YWIxMDFlZDBlN2JmMWZmN2QyOGVmMWRiY2IzYzEgbGVnYWN5LXRydW5rCis3MzQ0NiBhZDJhNTk2MDEyNmRhMjFlZDY3ZDE4NWQ0NmU5ZDBlYTBhZWJhY2VkIHJlbGVhc2UyNi1tYWludAorNzM0NDcgNDVjMDVmZGQ5YjMyYThmNjVkODhmN2U1NmEwODZhZmFlMzIzYmZhOCBsZWdhY3ktdHJ1bmsKKzczNDQ4IDMzZmVmZGU3OTNiMGNjNGVmYWIyMjY2YmJkYjczNmNkYzg2OGYxOTUgbGVnYWN5LXRydW5rCis3MzQ0OSBlZWE0ZDIzN2MxNmQ3NTExMTM5Y2IxMmFlZWQ2NWE3NWViMWUyYTA0IHB5M2sKKzczNDUwIDg2NTUwNmYzNmU1ODhkZGU1MzAyNTUyMGM2OGVhNTZmOTVlMzU4OTYgcHkzaworNzM0NTEgOTgyZjdiYTBlMTRhMjdmNmEwZmZjYmJhZWYwY2RjMDlmN2VkYWFjMSBsZWdhY3ktdHJ1bmsKKzczNDUyIDM5MDJlNGY3NGVlMjgxN2EyMWI2ZDAzZTk5Nzg3MGU0YjczZmU1NWUgcmVsZWFzZTI2LW1haW50Cis3MzQ1MyBmMDE5NWRhYWRmZmJiMjU4ZjY5NGFkODdiM2U1NTlkN2I2YTVhZjljIHB5M2sKKzczNDU0IDA5ZTVmODhjOWJkYmVkNDZhZWM0ZTk0YzAzZmU0NGRjYWNlZWQwZmEgcHkzaworNzM0NTUgYzU2ODJjZTIzNDY3NTliOGNhMDNhM2MwMTVkZWEyYzRkMjUxMjI3MiByZWxlYXNlMzAtbWFpbnQKKzczNDU2IDZiNjcwMWJhMTIxMWVhNWY4ODJmNzZjZTExYTEzMDJkYTA4YWUwZTIgcHkzaworNzM0NTcgNGM2Y2RiYTFiMGJiM2NhMDM0Yzc1NzgwMzBiZTBhYjlkMDE5OTlmMSBsZWdhY3ktdHJ1bmsKKzczNDU4IGMzODdkYTgzN2M0YTIzZmZiZTc3YWE1YWNjMTJkYmQ4N2U1NzlhNmYgcHkzaworNzM0NTkgYzE5ODZiYjQzMDBiNzIyYmZhYmFhYmY4MGI1MzVkOWYxZTA0ODk2ZSBsZWdhY3ktdHJ1bmsKKzczNDYwIDZmMzA1NGFmYTFhMGQ4YWIxMGY5YjYwZTRjMWI2OTc2MTJlNjEyODggbGVnYWN5LXRydW5rCis3MzQ2MSBhNWYzMWIzMGM3YzNjY2QyOWNiZWI1MDAwY2Q4OWQyZDI4MDk0YmRjIGxlZ2FjeS10cnVuaworNzM0NjIgYjBjYjNjYmRmYzQ3YWI5YjRhYTgyMDg2YjYzYzFiZjRlNGU2MzdkNyBsZWdhY3ktdHJ1bmsKKzczNDYzIDIyYzc5MzQxZTU4MGNhMmMzYzViMGM0NmVkMjc2YmQxZTk4MDA3ZTYgbGVnYWN5LXRydW5rCis3MzQ2NCBkMTFkYmNmODQzZGY4YzA0Y2RkZTg0YzJlOThhNDVkYzE0OGRlN2RhIHB5M2sKKzczNDY1IDMzNDg5MTE3ZGE5YzU2MDljNmQ4NTA2ODA1Njk5OTcyYzYyODY3OTYgbGVnYWN5LXRydW5rCis3MzQ2NiBkNGM2NmZmMTI5YzJjODMzMDU4NzI1YjBhYmI2MjYyYjU0MzQ4MzllIHB5M2sKKzczNDY3IGFkNmY2YzI2MTg3Zjk0NGE4OTNhZTAwZWJmMWQwOGIxNTFlNmMxOTUgcmVsZWFzZTI2LW1haW50Cis3MzQ2OCA3ZWRjMzc4ODNlOGExZDZkM2UxNWM5NmM2OTM1OGFjNTE2Njk1NzVmIHJlbGVhc2UzMC1tYWludAorNzM0NjkgMzE1ZDdhZTQyZWE3MDI1MzUyNzU2MmMxOWFkMjMzZWNjNTEyZjRhMSBweTNrCis3MzQ3MCBhNzVlMThkODE2NmFjMmFmZmExMWYzZDU2ZDE0MzQwYWE0ZTI4MjUxIHB5M2sKKzczNDcxIGEyMzBmOGQ5YjQxOTI4YzUyY2Y4YjIzZWY2ZTBiYmEyNDc4NjU0ZWEgbGVnYWN5LXRydW5rCis3MzQ3MiAzNzIyM2VmNGQ0NzBkNDcxN2QwNDQwZjk0NzFkZjdjNWYzZGI0NjM2IGxlZ2FjeS10cnVuaworNzM0NzMgOThhNjZmYTAxZTBhNGQwYTg2MDUxYjUyMGE0ZTc1YzhhNjlkMDEyNiBweTNrCis3MzQ3NCBiODE4OTNkMzdlN2E5ZTk1OTAwYzgyNGM5ZGU3YmIwYjM5NjY1YjkwIHB5M2sKKzczNDgwIGRjYzk2MmI0ZDhmZjkzMGRlMGEzNTQ4OWQzNGJjZGRhNGRkNjI0ZDIgbGVnYWN5LXRydW5rCis3MzQ4MSBlMjVhNGQyN2MzOGI2MDY2MDZmN2NmZjEyMDFkNDUzMzQ0MmJlYTBjIHJlbGVhc2UyNi1tYWludAorNzM0ODIgNWZhZmNiMzJmMDYyMjdjZDlmNTc4M2FlODZlNjU5YjJhNzlkNDRiNyBweTNrCis3MzQ4NSBlN2QzOGM0MDgzNjE5YjNjZGUzZTBiNmI3YzFlMDM5NTMyMDlmZjJjIGxlZ2FjeS10cnVuaworNzM0ODYgNmRkNTA3Yjk1MmNmOTA0NWU1ZTA0YmZlZTM4NzQ0NzQwZTRmZjI1OSBsZWdhY3ktdHJ1bmsKKzczNDg3IDA3MjQ5ODg5YTc3M2YxODQ0ZTM3MGRjMTI4NzAwM2Y4ZjA3OGRhMzUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczNDg4IGUxYzIzMGYwMmZlYjlmZGVjZTc4YzBkOTAzODJkMDdkZjcxMWI1NTYgbGVnYWN5LXRydW5rCis3MzQ4OSA5MTNjOWJmOThkNjA5MDE2YTAxZWM2NzA3ZWQ3M2Q0N2U4ZGI2M2M4IGxlZ2FjeS10cnVuaworNzM0OTAgN2QyNDVhNDIzZTk2YzY3YzZjYjQwYTk5MjQ4NjkzODQ1OTE4YThiMSBsZWdhY3ktdHJ1bmsKKzczNDkxIDAxZDEwNzA1YTcxYjFhMjE0ZjMyY2Y3ZDA0YTViMmE0NjgxYzE0ZjUgcmVsZWFzZTI2LW1haW50Cis3MzQ5MiAzZTQ1NDBiN2ZlYzlmMWFlNGYwYTU4MjJlNzUxYTY2NjE2NmZlODFiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzQ5MyBmMzIzYzI4MGRmNTg2YTQ5MmRjNTM3NTI2N2Q2MzUyNmE0N2RiYTE1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzQ5NSBkNjYyMjc4OWFkMjc1NjIwZmFkY2UwMzY1ZWI5ODFmNWE2MTdlZGIyIGxlZ2FjeS10cnVuaworNzM0OTYgNDBhZmI2NTUzNmRhMjZiMTdjYzllODZmMDdmMWZmZDBiMmJhNDdiZCBsZWdhY3ktdHJ1bmsKKzczNDk3IGE5NTBhNDQzNGY4YmJmYTc1ODA1NWQwMGJlNDg0NzZlMTUwNDJhZDYgcHkzaworNzM0OTggZDNiNDRjZTU0M2FlNDQ1MTVlYjRmMWQ5NWVlODlmMGVlMzU2NTEyNyBweTNrCis3MzQ5OSAxMWMxNmJlNGQyMWMyMTNjZTIyY2I1NjI5NTllM2NmZDk1YmJkMjU3IGxlZ2FjeS10cnVuaworNzM1MDAgZTQ4YmE5Y2U4ODM2MjQ1ZWI2NWJkN2Y2OTFmMmU4MmUzYTczMGEzOCBweTNrCis3MzUwMSA4NzAwMDg5ZWNjZDRkM2UyYzgxMTc0YzU3NTM2MTBhNjE1MDMzMmUzIGxlZ2FjeS10cnVuaworNzM1MDIgOTE3NDk3ZTI1MDljZDY2ZmJiNmRhMThjYmI0Mzg3NGIxMGM2NmE2YyBsZWdhY3ktdHJ1bmsKKzczNTAzIGM0ZmIwNzEyMTQ3ZmQyZTVhZDk3ODE5YzRiMmY3ZGFkMWE5ODg1MTQgcHkzaworNzM1MDUgYWNjNThiNTkzYmJjMWJiYmViYzI5ODBkZjk3NDY4NDJmOTMyZGY1ZCBweTNrCis3MzUwNiBiYzYxZDIzMWE2NTI2YmM5NjdjNWZmM2I3ZTM5ZDUyYzEzMDAzZWVmIHB5M2sKKzczNTA5IGUzM2I2NTYyNzE4OGJmYzBiMzI3MzQxMTk1MmVlZGMxMTU3MzU3Y2YgbGVnYWN5LXRydW5rCis3MzUxMCA1Y2I0ZTUxYTQ0MDg1MTI3Y2FhYmIxOTRjMWE0NDRiNWMxNzRlNDg2IHB5M2sKKzczNTExIDhhZDdmYzgwOWY2ODRmOWI3ZjFjNTQ1NGZiZTM1ZWE2YThkOWQ2NWMgbGVnYWN5LXRydW5rCis3MzUxMyAzODY5MjJiNjI5YzM5MDU0ZTA5MmRlMmYxNTdhMmYwZTFjYzQ4YzhlIGxlZ2FjeS10cnVuaworNzM1MTQgNTE0ZmM5MzY2ZjJkYmJmMjQyZTg5ZjFiNWRhNzY4MWIwNzg1ZWI5ZCBsZWdhY3ktdHJ1bmsKKzczNTE1IDE3MzJhNTRhMDI3MjU4ODJiMmVlZjBkMjZiMmE3ZGI5YjU4ZDk5ODUgcHkzaworNzM1MTggZGMzODE3YThmNTUyZWI2OGY0YWQ2MGIyNmEzYTk3OTc0YTRjZjA3NSBsZWdhY3ktdHJ1bmsKKzczNTE5IDgwZDBmMjAyYjllZjJhNjNmMWI0NGMxMTQ3NmRhYmEyMzk5Y2I0ZjAgbGVnYWN5LXRydW5rCis3MzUyMCA0NTUwNmJlNDQ1MTQ2NjIxOWYxYzgyMTYyNTQ5MjkwYjZmZDUyNGM3IHB5M2sKKzczNTI0IGRmZDliOWU3MWIyZWIyYjZkODQxYWM4MjMxODZjYzA5OWEzYzMzNDMgcmVsZWFzZTI2LW1haW50Cis3MzUyNiBkYmZlMGFiY2Q4OTNhMjYzYTEyN2YzZTI5NjI1ODA0M2ZmODhlZjgyIHJlbGVhc2UzMC1tYWludAorNzM1MjkgYzk0NTk0ZTZlZGI3MzI4MzlmMWU1MmJlODc5MmI2NzAyNzc2YjVmYiBsZWdhY3ktdHJ1bmsKKzczNTMwIGU3MzcxMzUzYTMwMjBlZDE3YzQ1ZDMzMWVkMzliMWJiYTEzYzYwMzIgcmVsZWFzZTI2LW1haW50Cis3MzUzMSBiNGQwYzAyMGUzNTc3MGZlOTQxMDc2NjMwMTdlMDViOGRjZmFiZmI0IHB5M2sKKzczNTMyIGY2NWFkYWQzOTg4ZDRhYTczMDdjYjQyNDk3MGY4OWIxMGE1NTk3MjkgbGVnYWN5LXRydW5rCis3MzUzMyBhNmExYTYxZjcyYmY4M2U5ZTQ0OTY4ZWEwMGViMWNlZTA2MGViMmY0IHB5M2sKKzczNTM0IDA3ZjcxMWQ4N2ZmZGJhYmMxZWJmNzgwOTJkNGY3NmUwMjUxMzgwZTEgbGVnYWN5LXRydW5rCis3MzUzNSBkMTYyOTQ2OTc2NThlY2NhOGExNGNhN2I4N2ZiZWJkYzdkOGJiZjBkIHB5M2sKKzczNTM2IGFkNjA3Mzc4YTRlZmRkMzI4NTk5YzU5ZjRiODFiMmYyYThlYzIwZjggbGVnYWN5LXRydW5rCis3MzUzNyA5NWU1NzkxZmMzYzkyZDdkYjc1NGQ0ZmYzMTM1N2M5Mjg5NTc0MjhlIGxlZ2FjeS10cnVuaworNzM1MzggN2ExMzE1YTk5MmYwYjZlYzBhMmFkNDVjYTc2MDc5OGE3ZmZkYzlmNyBweTNrCis3MzUzOSBjYjNkMzIzNDM4ZDkyMjVlMzczODAwMGNjYTRmN2Y2MjQ1YTkyNjhiIHB5M2sKKzczNTQwIGJkYzk3NTk0ZTUwOThhOGY2ZDkxYjlmNTQzNDE0NWVmMThmMmVkOTMgbGVnYWN5LXRydW5rCis3MzU0MSBiOTJiODkyYzQzNjAzNzUyNGQ5MzlhZjgxZGNhNmZhMGRmN2IzYTI1IHB5M2sKKzczNTQyIDZhMzFjNGUwZGZjMTJhOWFhYTg4MzlkNWI1NzU3MTZjYzg0OGM3ZmMgcHkzaworNzM1NDQgMmFlZWQ0ZWNhZDViODdkODU0ZTUxNDFlNzBmOTFlNDU2Nzc2OTgwMiBsZWdhY3ktdHJ1bmsKKzczNTQ1IGY2Y2IyOTMyMDIyY2FmNGRjZDY5ZDVkMjBkYTIwOWU4Mjg0MWUxZTkgcHkzaworNzM1NDYgYTIwYTM3N2NjMzI3YTgyZGU3OTMwMGY4YzA0Mzc5ZDNiYTkxMGM1ZSBsZWdhY3ktdHJ1bmsKKzczNTQ3IDhhOTc2Y2Q1N2NhNjUxMTQyYzJiNTM3ZmI5Y2I1YzdjY2M5MDI0YjEgcHkzaworNzM1NDggZjMxOGFkZmUyMjY0YWU2YWEyZjZhYWY2ZWY0MDczMzk3OGFhMWJhMCBweTNrCis3MzU0OSBmNGQ4NGM0ZjI4OWJkYTlkYzVlZjQyZDNjNmJlNWIxYTE5NTRkMDcyIHJlbGVhc2UzMC1tYWludAorNzM1NTEgNzlhNjMwZGE4ZjAwZTA2NTk5ZjZhMWIxYjhjMzdjY2JhMDY2MjJhNiBweTNrCis3MzU1MiA1NWIzMDNkNWRkNTUxNWUxOGM5MmY2ZmQzN2ZhZDA4YmZhMGFhN2NjIHB5M2sKKzczNTU0IDNmZTJkMWQzN2NmMWYwNjM0MjNlODM2ZDJiZGUyMGZmMWE0OWI5ODkgbGVnYWN5LXRydW5rCis3MzU1NSA0NDg2OTkxNTZkZmVhMzVjOTY3ZWM4MzlhZWU0MDRhOTZlZDE5NTIxIHB5M2sKKzczNTU2IGExYTZlNmRiZGQ2YTcyZjA2NmE3MjBlOGZmMjgyOTlkY2ZhYTY3MmMgcHkzaworNzM1NTcgMjczNTg5M2MzODc0NzQ0MzQ3NmQzOTkzYzk0MjUwOWVmMmE3ZGY2YSBsZWdhY3ktdHJ1bmsKKzczNTU4IGE5MzdmMDQwOTU5MjgxZWJhYWIzNDM3NThmNWNlOGI0NWE2YjJiZjggcHkzaworNzM1NTkgNTJjODY4NzM2ODNlYWU5Y2U5OWI0ZWFhYjc2ZWM4ZDFhN2RlY2NkOCByZWxlYXNlMjYtbWFpbnQKKzczNTYwIGU2OTBiNzM2YWY0NzgxMzc2Yzk5ZTVlMWJjNWFmYjc0NTFhZWVjOTMgcHkzaworNzM1NjEgYTU3OTkyYTYzY2FhMDdlODgxY2MyYzdmYWY3MWQxYjk4YjY2NWJhOCByZWxlYXNlMjYtbWFpbnQKKzczNTYyIGNmOWNlYjZmNWEzYTdhZjY1YmQ0N2E0MjhkNGFiZTU3YTE2YzViMzAgcHkzaworNzM1NjMgODg4MmY4ZmU4MjNjNjRiMzU3NDQ4YzIyOWEyYmYwNGI5MmQ5MjlmOSBsZWdhY3ktdHJ1bmsKKzczNTY0IGE2NjYxMzRlNmMwYzIzNGIwOTZmMjljNGNjZmMwZmY3OTRjY2I1MTIgbGVnYWN5LXRydW5rCis3MzU2NSAwZmYwYTM5NmZkYTgzN2IzMWEyMDU0YWE4MzA0MmJiMDFlYmUwNGZiIGxlZ2FjeS10cnVuaworNzM1NjYgMDE3MGM5NjFmMjkwNTRhZjUzYjg3ZTg5MjYxOWYyNDI3YTdkM2UwMCBweTNrCis3MzU2NyAyNTNkYzdiZTVkMWFiYjRjMTc5NWNlYzg0NWExNmMyODI3ODE4NDNjIHJlbGVhc2UzMC1tYWludAorNzM1NjggZDA0ODc3MzkxZTgwN2NmZjY2OGZlOWU2ZjQ4YjRjOTExMDhjMjNlYyByZWxlYXNlMjYtbWFpbnQKKzczNTcxIDE1MGUzZmViZGYxNzg1ZTQ4ZGRlNDEwZmQ2N2UwM2ExZGJlZWQzZmEgcHkzaworNzM1NzIgMTJlOTYwY2MzN2Q2MWVkNmQwNzcxNGI1ZmJhMGNkOGZhZTUzMzVmMyBweTNrCis3MzU3MyBhNjlhMDMxYWMxNDAyZGVkZThiMWVmODAwOTY0MzZiY2E2ZDM3MWYzIHB5M2sKKzczNTc0IDdjOWUxYzllYzVkZmY4MjBhM2UyNjFjZjkyYzRiOTVlNTY4N2RkMjQgcHkzaworNzM1NzUgNGFjY2M4YTNmOWFmZTg2ZmNkNDY2YzI2OWQwZjJlYzEwNTE2NTU2NCBsZWdhY3ktdHJ1bmsKKzczNTc2IDgzMWJlZWUyMmE5ZmNhY2ExOWUzODlhZDEwNTk3MzZlYzM5ZDIyMTYgbGVnYWN5LXRydW5rCis3MzU3NyA5ZDAwZmQwMDg3ZmY5MTY1ZGQ5ZmY5ZmRkNmY5ZDE2OWE2YjdiMTE2IGxlZ2FjeS10cnVuaworNzM1NzggYzNkNWQzYzhlNDliYThiMmQ5OTM0N2UxZWZiM2Q4N2RiMTUyNjA0MyByZWxlYXNlMjYtbWFpbnQKKzczNTc5IDI1ZDg1ZTQ0ODZhY2YxMDMzMWQ0MzY1ZGZjNDg0MmM5M2NmNTE4MzQgcmVsZWFzZTMxLW1haW50Cis3MzU4MCBhMjRmMDk2MDZiODMyNjk4ZTI2YWZiMzNkNjQzOTc1NTFmZDE3NjkzIHB5M2sKKzczNTgxIDc3ZmI3ZDNjNmRkZTdhNGY1N2M3MDRiZGZmMmIxMGE1NTE5MzZhYjkgcHkzaworNzM1ODIgOTYwMzM0NDM1ODU1OGNjNjVmNzM4NmI4Njg0YjBmM2FmOTk1YzhhZSBweTNrCis3MzU4MyA1ZjQ5ZWE4ZjU5MDhjZmRjZTQ4YjFiMzQxY2Y0ZjgxMjZkZDJmNTc2IHJlbGVhc2UzMS1tYWludAorNzM1ODQgYjY3NjE1OTQ1NjgxNTQ3NmU3OWJhOTI3M2IyNGRlYzkwNzk1YTJmNiByZWxlYXNlMzEtbWFpbnQKKzczNTg1IDRkNDc2ZjZmMWJlM2IyMTVkYjFkMWQyMDg3NDM4ZmQ4YTEyNjgxMTcgcHkzaworNzM1ODYgNmRjODg0YjJkZWE3YWFjMjM4NjA4NDI1Y2NjNTc5NzA1NWYzYTE5OSByZWxlYXNlMzEtbWFpbnQKKzczNTg3IDQ2Y2YyZTVhNTdkNGY3YjA5MGI2ZTg3YWJkNGJjYTdlNmMxNDg5ODAgcmVsZWFzZTMxLW1haW50Cis3MzU4OCBkYzc0NTYzOTc4ZGY0OTU0YzNhNmU2OTVlMzBiZTcyMjUxODA3OTIwIHJlbGVhc2UzMS1tYWludAorNzM1ODkgMTY1MWUyZjM2YWYxMmFlYWVkZjIyOGUzM2YzZDlkYTNiMjZiMjc3MSByZWxlYXNlMzEtbWFpbnQKKzczNTkwIDA3MGUxZTE1YzUxNjFlYjg4M2I2ZjMxZGQ4YmY0ZmExMTg4NTFkOGUgcHkzaworNzM1OTEgMmRhMDVmODBkMzY1YWU5ZjU1Zjc1MzE3ZWZmM2NlNThkNDk1MjEyZiByZWxlYXNlMzEtbWFpbnQKKzczNTkyIDFkM2JkZGZhODUwOTBjYzU2MGM0Zjk4N2EyMzg2NWEzODZmMWI1NGUgcHkzaworNzM1OTMgNThmMmIyN2M5MWExNGNiOTc1YzkwMDcyMTNhN2MzZDVkMmU3M2VhZiBweTNrCis3MzU5NCBlMjUyMmU0ZDJkYzhiZjJmODI0NTJhODVlODJmMzI4MmJlMmNhNjY3IHB5M2sKKzczNTk1IDViM2QwYmZjOGQyODkxYmM0MTBkZDJhMTY5ZjI0ZGFjZDkzMjZlOTEgbGVnYWN5LXRydW5rCis3MzU5NiAxZjYwNTgzYjYyODdjZjFjYWNlMjBkYTQ5OGVlMWE1Nzk3NGFiYjA5IGxlZ2FjeS10cnVuaworNzM1OTcgM2FhZjJlMDY1ZGIwNTQwMTgwMzcwNWVkNGJmYTNmZDJmOTAzMGRmOCBweTNrCis3MzU5OCBmNGVlYTBkMjE2NWRhZGNmMWU4YTExNGUzMmEyYTc3MjcxYzI1MzM4IGxlZ2FjeS10cnVuaworNzM1OTkgMWY0ZjRkOWVjNzkzMDdhZGExYWVkM2YxNGUwY2NjZmE4MGRiN2I4NiByZWxlYXNlMjYtbWFpbnQKKzczNjAwIGM1MzU3ODM2YzA3OWQ3NmZlZjhiODIwN2I1MTUwZDQzNDJkMWIyNTggcHkzaworNzM2MDEgYWM3OGVlZWI0NmMyOTVmMGI2NWI5Y2I4NzYzZThjZDRmNjBiNTQ0YyByZWxlYXNlMzAtbWFpbnQKKzczNjAyIDEwYTIyOWM4YmVhZGI5NzZlZjFjMWI3MTg3ZTkwY2YwMjBlOWQ3MTMgcmVsZWFzZTMxLW1haW50Cis3MzYwMyA1NThlZDcyZDRkMzNiYmMzODYwMTY1OWFiNjMwYmE1M2I0YmVhZTI2IGxlZ2FjeS10cnVuaworNzM2MDQgYzQxZmUxMzNkODg3MzMwNTJlYWU2OWI3MTliOWY2MTEzYmVjZjhiNiBweTNrCis3MzYwNSAwOGQwNTg1NjIxNGEzNTgxY2I3YWU2ZTEzMjY1NWUxZGZkMTlhZTZhIGxlZ2FjeS10cnVuaworNzM2MDYgMTE3ZTg1Y2JmMTY5YjRiODA0YjFjMDRiNWQ4MDA0OWQwOWQxOGQ4OSBsZWdhY3ktdHJ1bmsKKzczNjA3IDU0ZWQyNzkxYmIxNWI4YzcyZTA1MzE5OWUxNWUwMDFkMDhjYzBkNzggcHkzaworNzM2MDggZWUyNTNlYjZmMDhjMDQ5MjBmYjIyNWM2ZmI5MmQ2N2I3YjIzYjczMSByZWxlYXNlMzEtbWFpbnQKKzczNjA5IDZlOGQ2MzM0NGQzZTMwZDk3YzgxMGE2YWQzM2NlOTJiMGRlMTk2YjIgcHkzaworNzM2MTAgNGEyMjVkZTg5MjMzNjI3Yzg1MWUyMzIyMzNiMDcyMzc3N2E2ZTQwZiByZWxlYXNlMzEtbWFpbnQKKzczNjExIDU0NGM1YmFkMTYwNzdmYWRkZTA5ZmJlNWMwNTNhNzBkYjY1MjY5ZTEgcHkzaworNzM2MTIgMjYwMmI1NmFkMDJkYzY4MjA3MjkxNTc4OTQ4MjU0OTllMDkyOGRjOSBweTNrCis3MzYxMyBiNTVhNzhiMzliZDVlZDZmYmM5ZTIzNDZjNmFlMGZmNjZiNzQxMDAwIHB5M2sKKzczNjE0IGRlODY2ZjQ3ZDM4YTg1N2Q3ODQyZGJhMGVhYWI2ZTFjY2JmODk2ZmEgbGVnYWN5LXRydW5rCis3MzYxNSAzNjg0Nzg4NTlmZTNhYWY5YzI2MzMzZGYzMzk4ZTM4ZWFiY2ZmYjUzIGxlZ2FjeS10cnVuaworNzM2MTYgYWE5NTBmNzk2MmZkYzZhNTM2ZmUzMmQ3MTgxMmI0YjM4MjJkMThkZSBweTNrCis3MzYxNyAwYzMxOWUwM2Q5YTEwYTllZWNhZDJhM2M2OGRjMWUwM2U2MGFjMTU1IHB5M2sKKzczNjE4IGM5ZTY1ZTQ5MzY1ZGMzOGJkNjc4OTA0NGU1MTU2NTBhMmY1Njk3YmUgcHkzaworNzM2MTkgY2I2MDBlMDM0MzdkNjQwZTFlMTg4NTNkNGZmMmQ3NjYwMmNiZjU5OSByZWxlYXNlMzEtbWFpbnQKKzczNjIwIDY1NDQwNzc0NmJlMGE4ZjM3YTc4ZmIwOTE3NjE4YWRhOTYxZjk0MTcgcHkzaworNzM2MjEgOTEwOWI0MjJjMTM4ZmM0YmVjMjIyMGZkMzNlMmZiMmZhNmEyYmJjYSBweTNrCis3MzYyMiAyMjI4OTE2YWI0Nzg4ZjlhZTllYmJkMjk3NTA2MzUyZDFmMjk2ZDdjIHB5M2sKKzczNjIzIDFlNTU4OWExN2NmMDdlZDk1ZTk0M2RiOTQ3ZDM0ZjMzNTVlNmQ3MzggcHkzaworNzM2MjQgN2MyODdkMzAwMjNjMzU1OTAwYTIyYzc4MDBhM2E5Njk0YmRkYTExMiBweTNrCis3MzYyNSBmOTRjMDlhYTQ0NDQzYmFmZGVhMTk5NjAzZWFjMjA5NDY3MTkzMDliIHJlbGVhc2UzMS1tYWludAorNzM2MjYgMDcwNGYxNWI0NjgyNzFiNjA5Y2E0YTRhMDAxYzI0Mzc1NzUwMjkxNCBweTNrCis3MzYyNyA0MTE4ODRkMDFmOGIwZjk2YWQ0ZDgxMTE4OWE0ZmJhM2FlZjQyYWRmIGxlZ2FjeS10cnVuaworNzM2MjggNGRiNGFmMGNmODJjNWI4YTA2Y2ZiNTYyY2ZmMGQwOTg2YTczOWUyNCBweTNrCis3MzYyOSA1YzcwMmE0ZDc1ZTQ0NWQ1MmY2ZDdjZjMwOGY2Y2NmMDYyOGRiMzkxIHB5M2sKKzczNjMyIDY3NmU3NGMyMGM2ZWEzZDY1ODZiNDdiNGUxZGY0ZDZjYTFiZDM3OTMgcHkzaworNzM2MzMgMGNjMjFjOTc1MWYxNDc1ZDU0ZTA4ZTdlOTE2MDM0OGM2MDViODQxMiByZWxlYXNlMzEtbWFpbnQKKzczNjM0IGRiOTFhMDQ1MzA1MGMyOGQxNTRkNDZkZDU2ZTI2NWQxYmRlMjZjODMgcmVsZWFzZTMwLW1haW50Cis3MzYzNSBiMzJkMTM2ZjNlMjAwNGU3OWU0ZDZkYWJiYTIxZmZlZGQwNWVjMGYzIHB5M2sKKzczNjM2IDFhOTg0NzIzNDBmYTBkODhhZTMxMThjMGIxY2NhYjdiMmNlYTk0YTggcHkzaworNzM2MzcgZTMwMjVhNGMwYWQ3ODUzM2ZhNTI1OThjYmNkZGZiNjM0ZWE3MTA4ZSByZWxlYXNlMzEtbWFpbnQKKzczNjM4IGZmZDdjZjVjNzI4NWY4OWQzYTBmMmZmZGRiMGE2YWZjZmJiNzAzNzAgbGVnYWN5LXRydW5rCis3MzYzOSA1MmM0OGRlZGU1Zjc3ZjViNjA1ODg4ZmQ4OGMzNDU5NDZiMjRjNmY4IHB5M2sKKzczNjQwIGFiOTFmYTVkMGM1Y2MyMjI1NTllNTUyYjY3MzhlYTMyNGIxYzhlNmUgcHkzaworNzM2NDEgZDk0YjNlZDVkNTM2NWM0NzQzMTg5NmY4Mzc5NDY0NjFlNGM5YzMzNyByZWxlYXNlMzEtbWFpbnQKKzczNjQyIGE1MTFmZTUxNjZmZDc3OGRhYjY2NzAwMjA5NDc5YzRlYjllMzlkN2IgcHkzaworNzM2NDMgZDc0OTZjYzEwZGZlZWVhMDcxOWQwNjE5ZTQwOTU1YzhiZjIxNzg2YyByZWxlYXNlMzEtbWFpbnQKKzczNjQ0IDBmN2RjNTcwNGM1OTA2NTk0ZWE2ZWRiODkxNWRjYjUxN2FiZDgwZTMgcmVsZWFzZTMwLW1haW50Cis3MzY0NSBmNDdjZTExZTA3MmI2MTU1Nzg1ZmEyNzg4MTI3MGIwOWZmNzhlMzJhIHB5M2sKKzczNjQ2IDY2Y2M1MDg5MDg5NGMxM2ViMTk2OWU3NjUwOGY0MTVmNDE1NGI1NDAgcHkzaworNzM2NDcgNTYzY2M0ZGNjNzAzMjkwYjcwYTkyYWQwZTRmNDg0MGQyYzRiMTdmZCBweTNrCis3MzY0OCA1Mjg0MGJlNDI1MzBmNzYzMDdkYzQyOGNkOWI1YjM5MmY2NzlmYzgwIHB5M2sKKzczNjQ5IGEzN2JiNTlkNGI1M2E5Mjg2ZWM3ZjQ2M2FlM2MyZjBmYmQ3ZDFmYWIgcHkzaworNzM2NTAgMDljNDRjOTMzOTQyYjQ0ODhhNjA5MzQwYmRhN2QxM2MyODJiNWViZiBweTNrCis3MzY1MSA0MzY5ODIyNDE0YzNhYmJjMDczMDQ0ZGRhYzQ0NzlhYjc2N2JiMjhmIHB5M2sKKzczNjUyIDAwODAwMjhmNWNhMDAxMjNlZjEyNDAyMTkwNzVkMzJiMjFjMjU0ZGIgcmVsZWFzZTMwLW1haW50Cis3MzY1MyBhOTI1MmI4ODQ3ZjA3ZDc2NjMxZDE1NDYxN2EwMGFiMjJhMjIyNjg0IGxlZ2FjeS10cnVuaworNzM2NTQgZGNmNzEyMWVkYjJlODVkMDBkZTAxNjI4OTRkMmNhYmU1ZmFiM2U4NCByZWxlYXNlMjYtbWFpbnQKKzczNjU1IGZkYzIxMGE4YTMyOGUyNWNlYTE0MTNmOGQ1MTAxNDI1YzMyZTg1NzIgcHkzaworNzM2NTYgM2Y0NjY4YjQ5ZjExZTM5YmRjYTliMzdlZjVhNjgzZmYyYWQ1MWRiNiBweTNrCis3MzY1NyA1MjBmMTMxMGFlNjEzOTAyNDhkM2VjZmRiNjAxZDY4N2YyZmE3NzVlIHB5M2sKKzczNjU4IDUyN2JhZGUzMDQzYjIzYTc3YjdkNjEwNTNkMTFmZWQ4MzUyZTI5MDUgcHkzaworNzM2NTkgZDUxMDE3ZGNiYTI0N2Y4OTUxZmFiYTM2OTA4MGQ0NWQ0OGJkMjc3ZSByZWxlYXNlMzEtbWFpbnQKKzczNjYwIGYzZGFmZmQ0Y2IyOGM2MjhlMmY5ZjU4NWZjN2UxNzQxYWIzNGI2ZDEgbGVnYWN5LXRydW5rCis3MzY2MSA5ODI5YjQyMzk5ZTU2ZDliMmFkNDA0YzNhN2VkNTRmMjg5YmYzN2VlIHB5M2sKKzczNjYyIDUwODgwNjRkNjE3MDY1ODZmNjhhYzUxY2ZjMDk5MmQ2Y2M0NWFkMzMgcmVsZWFzZTMxLW1haW50Cis3MzY2MyA3MDQ4OTQ4NjQ2YjA4N2VmMDNiYTQ1MWVhZGFlMjlhODk4NmUzOWYxIHB5M2sKKzczNjY0IGM0NWUzMzEyMzhhZTc5NmFlYjBhZjhmMzcwZGM2YmRiMDMyNzVjNTAgcHkzaworNzM2NjUgMTY0ZDY0YjM5YWMwNmMwMTg3YmY5NmI3YzMxYzkwODY0MjUwYTk4NSBsZWdhY3ktdHJ1bmsKKzczNjY2IDdlY2MwNzVkMTcxZjdhMjFjNWQ0MjA2MzViMjAxNjQ5YWE2YzIxNjkgcHkzaworNzM2NjcgMzgwYWY5ZTgwYzJlOGVmZDhiZjZiOTliOGM2YmRhZmVmZmE5YWIzZiByZWxlYXNlMzEtbWFpbnQKKzczNjY5IGE2NjRhNDQ0M2EzOTQ4NDUwYWRiNGVkNGY2MDU2MTNiMTk2MmEzNzYgbGVnYWN5LXRydW5rCis3MzY3MCA2NWFkYmE5NWQ3ZTBlNzNmMmM3ZWU3ZjM5NjVkZTY4YWJjYzQ5NTZkIHJlbGVhc2UyNi1tYWludAorNzM2NzEgMGQwNTVhMDYyY2NlMWUwMjE4MzczNzVmZjVkNTY4ZDE4YTQyNjNjNCBweTNrCis3MzY3MiAyOTdmZGVhZjU4MjIyNTAwOTMwMjkzMDY0MDgxZTdjZjUzZGFiODM1IHJlbGVhc2UzMS1tYWludAorNzM2NzMgZGI2ZDJjZTM4MzBhZjZkNmE0NWNiNjQwNDMxOWY4MDIzOTY2ZjQ1MiBweTNrCis3MzY3NCA5NDYzYTEwMjUxNWYzZDM5OTJjM2RmZmQ5MDQ5MmY2NGE1NTczMTViIHJlbGVhc2UzMS1tYWludAorNzM2NzUgNGUzNTU2NDUzZmJjY2I2OGRmMDk4OTgwN2I5YTkzMTk2ZTc5NDcyZCBsZWdhY3ktdHJ1bmsKKzczNjc2IGE3OWY3NGQ2ZjViMzk1MDg2Y2EzMjM5YzZlODUxNTIzMDNlZThlYTcgcHkzaworNzM2NzcgNmU3YTE2YTY0NDJmNmM4NDNiNmVhOTlmMDQ0OGUxYzE3OTNlNmRmOCBsZWdhY3ktdHJ1bmsKKzczNjc4IDhmMjNiZDEwOTJmYzI0ZjAzNmI5MTgyYzJmNTliNjdhNWE4Nzk2ODkgcHkzaworNzM2NzkgMWI4YTAxZGM3ZjQ1YTRjOGQyNDA1MmUxNWUwODRhOWIyZTk1NzE3NiBsZWdhY3ktdHJ1bmsKKzczNjgwIDYyOTY3NDQ0OGQ4NGZiYmYyZDljMjQyMDE1MDFhODRjNWEyZjlhOTkgcHkzaworNzM2ODEgMjEwYTUxZWZkYzgyNjcwZDkwZGU0YzY4NWNhNmZlODU2NWY2NTUzMyBsZWdhY3ktdHJ1bmsKKzczNjgyIGEyNzU4M2M4MzZiMjI4ZjMzMmQ0MzRhNDZlNzFlOTMxY2U0ZTE4M2MgcmVsZWFzZTI2LW1haW50Cis3MzY4MyBlMGQyN2I3NmEyZThkMTQ0ZTMxODNhYzQ5MDQ3NWQ1NDMzMDA5ZjY1IGxlZ2FjeS10cnVuaworNzM2ODQgNzljMmVkNjFhMDI1M2QzOTk0ZDE4OTYyYTYwNzk0OGQ3MTI4NmM3YiBweTNrCis3MzY4NSA1MTM5ZThiMGYyMWM3MzIzODFkODg5OWFlZGU2Y2IxOTBiYmZmZmIwIHJlbGVhc2UzMS1tYWludAorNzM2ODYgNzBlZGEwMmM3YTk4ZTMxYmQ4MzRjNDdlZDhjNDU3ZWFjYjQ2MzA4ZSBsZWdhY3ktdHJ1bmsKKzczNjg3IGU3OGI5OWIwNDhiYWE4N2M3OGNjZjJmZDYyODYzNjQ5MDU0MWJlNGUgcHkzaworNzM2ODggM2RjYzhmYzQzNTRlZmJlOTI1NjkyNmJmNjg0Yjc4YThhZjcyNjhkZCBsZWdhY3ktdHJ1bmsKKzczNjg5IDM5MTVkZWQyZDYwZjFmYTZmNzlmMTU4MDc0YTg2ZGUxZmU2NzQzN2IgcHkzaworNzM2OTAgNjgxMDJlN2UxZWI3ZDMzNjdiZDhkOWQxNzI1NjE3N2VjNjY2NGU0MyByZWxlYXNlMjYtbWFpbnQKKzczNjkxIDQ4N2Q2ZjAxODQyYTkzZmRjMzFiZGFlNzBjYmE5Y2QxNTA5YTRmYjQgcmVsZWFzZTMwLW1haW50Cis3MzY5MiA1MTRjYWU2MmNjZGE1ZjA3MzZlNDU0OTUxYTkwZmU4N2M0NjMwZmNlIHJlbGVhc2UzMS1tYWludAorNzM2OTMgNTkxNzg1Y2VkY2M4YTVlN2NkMmZlMzFlYTU5MWIyNzUzMTI3OTU2ZiBsZWdhY3ktdHJ1bmsKKzczNjk0IDNkNTRjYmZkMzgwOTllZDQ4ZmNjNmQ1MGI0ZmM5YTM4YzlkNzIxNjggbGVnYWN5LXRydW5rCis3MzY5NSA3ZTM5MjAyOGEwOWVkYTAyZmNhODY5OWU1NDNkYzliYWFkNGU2NDY3IHB5M2sKKzczNjk2IDkzMjAzM2MzMDRlZjcyMDU0OTc3OTIwODdlYTM2OWMzMWFkYmUzYTIgcmVsZWFzZTMxLW1haW50Cis3MzY5NyBkMmIxZjVlZjJhZTNkMmRlYTAzYmE2ODYyOTVkNDMzYzg5M2Y2ZjE0IGxlZ2FjeS10cnVuaworNzM2OTggMDFlMTI1ZDMxOWQ0ODE4MDNkMDZjNzcwMzE5NDQ4NmRlZmQxNDYxNyBweTNrCis3MzY5OSAyOWZhYzg4NDg0ODlmZDY2YmJkNzdkMDI5NDFiM2U0ZjM4MGNkNmEzIHJlbGVhc2UzMS1tYWludAorNzM3MDAgZDNkNmNjYzlhYmI0MTM3ODRlZTRhNDNlN2RkYWQ4NWVlNDA4Y2EzMyBweTNrCis3MzcwMSBjMDY1ZjMzZDljOWNmOWI2YWEwNzAxNDRmMTExMmZjOTViNmViNjg2IGxlZ2FjeS10cnVuaworNzM3MDIgNWI2NjM5MDc1YzQ3OWNlOGZjMGM1YzRhNWJmY2UyYTFmZTkyYjIxMCBweTNrCis3MzcwMyAzMmY3MTEyMGVhNTUwNDRmODMyMWVmZjBiMzc4NTJmNzFhMjU4MjY3IHJlbGVhc2UzMS1tYWludAorNzM3MDQgMGFlMTIwMmU1MzYyMGU1OTRjODQ3ZjY5NTM0NzI4YzVlYWI5YmI3ZiBsZWdhY3ktdHJ1bmsKKzczNzA1IDQzZmVjYzM5NDM3YjMyY2UzMWMyY2I0YzUwZTQ2ZTkyNzA5N2U1ODMgbGVnYWN5LXRydW5rCis3MzcwNiAwOGI3NjI5MzQ0ODhhMjU4NWNmMWE4OGE5NjZiMTkzYzE1ZThiZDllIGxlZ2FjeS10cnVuaworNzM3MDcgODQ4Yzg2ZjRiZWQ2MDYwYmVlZTFhYmQyNGIwYjcyYWVlZjQwZGVmNCBsZWdhY3ktdHJ1bmsKKzczNzA4IDcwYWRmMGY2OGZiY2ExY2U3NzhmM2RjMDEwMWQ5ZGUzZGQ2M2M4ZDcgbGVnYWN5LXRydW5rCis3MzcxMCAyZmFmMmZhMmE0MjM1NTczYTVhMjY5YWYyZWVkOTVlOTA1MzQ0Njg5IGxlZ2FjeS10cnVuaworNzM3MTEgOTlkNTJkOGFkMDI2NmVmNmE0MGNhMTMwNTMxMjVlY2EyNzJjZjgyZiBweTNrCis3MzcxMiA0ZjkwZGRjNmMzYjY0YWM4MTg4MDdiM2I4YmQ2NTM4MGQzNDdkMzcxIGxlZ2FjeS10cnVuaworNzM3MTMgMzgzNjk5ODQ1Yzk5YjFiOTM3MTcwNjMyMTZmYzkyN2Y0Y2QxYzlmNSBsZWdhY3ktdHJ1bmsKKzczNzE0IDY3NjhiMjM1MGM1NzZhNjZkMjJkMzdiYTI4YTlkZjIyNmZlNzNhOTQgbGVnYWN5LXRydW5rCis3MzcxNSBhZGY2NmI1MjAyMmRhZDU4NWE1NGJkNmY0MWY1YzA2MWMwODYxZGMyIHB5M2sKKzczNzE2IDNlMDAxZWViODM4MWI5MzYxYTM0NTYwZTIwY2Y2NDU0ZDMzNTE0YzEgcHkzaworNzM3MTcgZTg4Y2Q0MmZmMjgyZGJjNmNlYjJlMmE4ZTE1M2FjNTJlMjI2ZWE4YSBsZWdhY3ktdHJ1bmsKKzczNzE4IGM0MGQ2ZmVkNmI2YmE1NWUyY2ZmYzlhNTkyYjU5ZjkyODhlZDMxNmMgcHkzaworNzM3MTkgZGQ0NzBiNzEyOTAxNDczNTZlNjBhMmE5MzM3M2Y4OTJiMDY1NDE5MyBweTNrCis3MzcyMCA2ZDUwNzVlY2MxNGMwYTMzOTY1ZjY3NzUzOTQ2MWJkMWFlNTNlNTVkIGxlZ2FjeS10cnVuaworNzM3MjEgMWM3NjkyZDI1MDlmYTAxMGQ1ZTE0ZDA3ZDNmMGJkNzNlZTYyZjhmZiBweTNrCis3MzcyMyBmMmI2NWJkNjdkZjI1ZGE5N2EyYTM0YzQwZjIwZDY5NWE3NzE3YTc3IHB5M2sKKzczNzI0IGVkMmEzMzYyMDRkNmFjM2FhMTdmZTkwNmU4YmZiODUwMmZhODhkYWYgcHkzaworNzM3MjUgNTUwMmYyNTVjMjdjZWE1NDEzMzYxMGE5YThmNjkyMzI2MDBlMjYzZCBsZWdhY3ktdHJ1bmsKKzczNzI2IDc2NTRmYTg1N2IwM2MyYWI2N2I5ZDQ5OTZjNDQ4MDIwMjQ4ZDRiZjkgcmVsZWFzZTMxLW1haW50Cis3MzcyNyA5MjMwYzNhODBkY2FkMzhlNWIyY2M2NWU3ZjA3YWY2N2Q4NTMwNDY1IHB5M2sKKzczNzI4IDcyYWQxMTk3ZjBmZjk3YTgzZmM0NzVlNjM3N2Y2ZWYwMTYyNmIzYmYgcmVsZWFzZTMxLW1haW50Cis3MzcyOSA0YjYyNzk2MWI0NDczNjM5Zjk0ZmZhMmIzNmNiMGFlOGRmZmU3ZjI5IHB5M2sKKzczNzMwIGEwN2ZkNDdkZjc2YjMyNjVlYWVjYzk4Y2I5NGZiMDNiMGVmNzQ4MGYgcHkzaworNzM3MzEgZTNmYTJkZGJiM2EzMTUwOTAxMGNmMzU2OWJjYTUzNWY4ZjJhODc3NCBweTNrCis3MzczMiA3ZTQyODMzNjJkMjc3ZmFhYzNlMDZlZDVlYTA5OTllMjdkZjBjNTA3IHB5M2sKKzczNzMzIGU4MDg1OTQ2MWRlOGNkMGM0YWI5NGVmZmRmNmNjZjNjMTgyMjNkMzkgcHkzaworNzM3MzQgYjE2OGRjY2VlNjAyNjQ0YWEyNzY2NzA4OGY3MDllYjBmNzRiZDVkZCBweTNrCis3MzczNSBjMjQyNzBmNTQ1YjhmYTZmYjZlYTcwZTYxODRlNjBhMzYyYjM0MThkIHB5M2sKKzczNzM2IDQzZjIyNWM3Yjc3ZWM0NzM1ODUwZmE5MTdiZGFkYzIzMTVjNjgxMjMgcHkzaworNzM3MzcgOWNkNzlkZWU1YmNlNGJlZmU5MTNhYzlmODA4YzVjYjE4YzA3YzdmZSBweTNrCis3MzczOCBlMGVkNjI3ZWE2Nzk0ODU0NjMzNTJhMGYwNjk4YWM2OTUwMzExNzE5IGxlZ2FjeS10cnVuaworNzM3MzkgZjBlZWFkZGFmODNhNGE4ZmEwYWQ1NWI4YTQ3YmI4ZTQzMTg5MTkxNCBweTNrCis3Mzc0MCAxNTFiN2Q1MzZiNWM0NWJiMjM0NWZkNzlmZmU3OGQyYWQ4Nzc1MzQxIHB5M2sKKzczNzQyIDM2NmM4YTRlNWE0NmEwYTFjNzFiMmRlOTRmMjA5MjQzOTUzNWUxZGIgcHkzaworNzM3NDQgNzRmYzQ3NmZlNzI4MzNkMGYxNTQ4ZjljNmFkZWY3ZTk1ZGI4MmJmZiBsZWdhY3ktdHJ1bmsKKzczNzQ2IGYyYTUyNmNjM2YyYWYyNjc1MDc0MTExOGZlNTg3ZWU5Nzk0YTc3M2EgcHkzaworNzM3NDcgNjUxODExNGZiMDYzODFmOTU3MmIwY2M4ZTcyNjBhMjRlYzBkZTA4ZSBweTNrCis3Mzc0OCAwYzZmZDU1NjE0OWRiMmY2NzY3ODZkNDYzMDk4MTBhNzY1NDMwN2UwIHJlbGVhc2UzMS1tYWludAorNzM3NDkgY2M0M2U5MjNlZjk2MTdkZWM1YTEwYzdjYmQwZTMxZTdmYmNiNjYxOCBweTNrCis3Mzc1MCA2MjEwZGVkZDJjZjc5NTQ5M2FjMmUyMjg5OTY1YWY2YjhkZDczMGU5IGxlZ2FjeS10cnVuaworNzM3NTYgOWJkZGJhNmU3NjRlNmQ0NTVjMTU1N2JjN2MzZTMzNGI1NmM5MzRlNiBsZWdhY3ktdHJ1bmsKKzczNzU3IDQ2NjMxNjNlNjQ0OTQyZTJiOTQ2OWZlYTUwODNiMjE2YTEzNjQ5MWYgbGVnYWN5LXRydW5rCis3Mzc1OCA1Yzg5YjkyNzNlNjExMmZlN2ZjZmI3NmM0ODE2ZmUyMzUxNDI0NDdlIHJlbGVhc2UyNi1tYWludAorNzM3NTkgY2E1M2Y4NmZlNjdkYjJjOGUyMWQxMDk4MGVhYTM3YzMyNjM3OWNiZCBweTNrCis3Mzc2MCA2Y2MxODVmNDJiZjY2YWI1N2NmNDFiYzM4NzZmZjY3OTQ0N2FjMzhlIHJlbGVhc2UzMC1tYWludAorNzM3NjEgM2JkZTgxZTdjOWY0MDNjZTg2MWEwYWMxYjU0NTEwMTIxOTU3OTJlMSByZWxlYXNlMzEtbWFpbnQKKzczNzYyIDVkNzQ5YmRkYTk3OWNhZDNhNzA3MTM3OTA3YTA5ZmE0ZmUxOWY2YmMgbGVnYWN5LXRydW5rCis3Mzc2MyAyYThkYWZjODQ1MjhjNzhlNzBlMjI1MzlhYTdlM2Y1NWU4ZTBjMjA3IHJlbGVhc2UyNi1tYWludAorNzM3NjQgN2Q1MTQ5MTU1MTVlNWM2ZDAzZWUyMmMwMDA3NzY1NGMxYzYyZDIyNCBweTNrCis3Mzc2NSBkYTY5ODA3OTk2Mzk5MDhmNGFkZTEyMGRhODU5OTc3NGU5YWQ0N2RlIHJlbGVhc2UzMC1tYWludAorNzM3NjYgMWQ0OGM3MDFmMDdjNjE0NmZmY2U3MTg3M2I5Y2U2Y2JkNmM5MzUwNiByZWxlYXNlMzEtbWFpbnQKKzczNzY3IGVkY2ZlM2I4ZjczNjE2NzE5NDUzNzY3M2MyMjdmYTQ0Nzk2YzkzYjkgbGVnYWN5LXRydW5rCis3Mzc2OCBmMTQ5ZjU3Zjc3ZDZmZTgwMDc4MjMxOTAwZjMxYjI1MDc2NzE0NGE4IHB5M2sKKzczNzY5IGU1YzgyOTBjNzk0OWJkNjAwYmZmNjI2MTE4NjZiYzQ4YTRmODdlMjQgcmVsZWFzZTMxLW1haW50Cis3Mzc3MCA3NGMwYTc4MTE0YWU0ZTIzMGRhMmU4YjRmMmEzZTE3MDhhYWNkMTM4IHJlbGVhc2UyNi1tYWludAorNzM3NzMgNTZjNjY0YjkxNTQ1YjgxODEzZmJiNWM4NTA1YTljZDRmOThmMjczMyBsZWdhY3ktdHJ1bmsKKzczNzc0IGZlYTU3MTY0YmQ3OTFjZWQ0NTJlNWYzMjc0YjA1ZDcxMTBiNmQwOGIgbGVnYWN5LXRydW5rCis3Mzc3NSA3ZGMwZDJjNGI1MjAyMzA2YjJlYjFjYWJhY2Q5MjhkZWE4ZTQ1MTBkIHJlbGVhc2UyNi1tYWludAorNzM3NzYgMDY1M2MxYTBjYjFlMTI2NGQ1ZTM4Zjk1YzFmMDczMjgwMTM2OGQ4MyBsZWdhY3ktdHJ1bmsKKzczNzc3IDE3ODM4ODNlNzZkNzc5OTMyYWZmN2YwNDkxY2QzNmUxZDQ3MjYwOTcgcHkzaworNzM3NzggZWE0NGExNjViOWNlNTQ2ZDIxYTlkY2VjOTYzZWU2NmIyYzc5N2NlZiBsZWdhY3ktdHJ1bmsKKzczNzc5IGY2NWQ2MjQ3MzQ2NWIxNTRjNTcwMTM2YjQ2OGFhM2ZjMTJmYjZmMGUgcmVsZWFzZTI2LW1haW50Cis3Mzc4MCA0NjZhNzFmYzYyNWMxZTZkMzE4MmU0MTIzN2I4MjAzYzk0ZDdlMDc3IHB5M2sKKzczNzgxIGZiNTQyZWQ5MWU3ZjU1YjgwN2ZhZTYxZTM2NmZlZmNkMWU0YjQwMzkgbGVnYWN5LXRydW5rCis3Mzc4MiAyNjI1NWYyOWE3ZTQ5ZDM3NzI5ZDc5ZTFhZWNjMTI4YjY2ZDI1ZDRmIHB5M2sKKzczNzgzIGNjNmI5MWMzZDcxOWI2OWNiNzdiMGY0MDQ5MDZjYzRjY2U2Y2E0MDIgcHkzaworNzM3ODQgZWE5MzNjMjRhZDEwMzNkODYxMzQ3MzBjNzljOTMwMjhhOGE3ZjI4NiBweTNrCis3Mzc4NSA2NWU0MWJjYmMyNWQ0ZDA2YzQwMGYzNDNmZTFkYTMxMzAyYzc5N2Y2IHJlbGVhc2UzMS1tYWludAorNzM3ODYgN2I3NThmODA4MzMwNWIzMzAyNzg2MmI0YTBhMTE3M2I5ZjgwMzIxYiBsZWdhY3ktdHJ1bmsKKzczNzg4IDUyMmFkOWVlZDU1OGU3OGFiZjBlY2MyODFjNGJhYTA0NDVhYzQ4YjQgcHkzaworNzM3ODkgNTZhMjc2Mzk2ZTE1ZjljNzk1M2EzM2NjYTMxMzhmMGE1NzAwNTEyZiByZWxlYXNlMzEtbWFpbnQKKzczNzkwIDg1Njc3YTJjNzg1NWQyMjE0MzRkNGIwYTUzMDFiYmNlODc1MmJhNDMgbGVnYWN5LXRydW5rCis3Mzc5MSBlZWViMzVmMjg4MTJjZTVlODRjMGI5ODZiOGJhODJkZWRkMmRjYjQ0IHJlbGVhc2UyNi1tYWludAorNzM3OTIgODk2ODY3NzNhNjE5YTc3MGNkOGYxZTA0MDE4NjdkMGRmMzg3YjBhNCBweTNrCis3Mzc5MyBkOGM4M2NjMGQzZmQ4YzU0YzdjNTcyN2FkYzgyYTA2Mjg3NzMwZjY1IHJlbGVhc2UzMS1tYWludAorNzM4MDEgYTUwMTU3M2MyM2YyYTU3ODY2MTg3Y2I3MWFmNjExNjk0OTBjNzc1MyBsZWdhY3ktdHJ1bmsKKzczODAyIDQyN2ZiNjMzYzRjY2VhZjY2NjMxOTdmNDVmZjE3ODQ3MDRlMTg2Y2IgcmVsZWFzZTI2LW1haW50Cis3MzgwMyA0NmE5YjE4YTFhMTc2ZTExMzIxM2VhYzRiMTQxZGE4NDE5NmIxODlmIHB5M2sKKzczODA0IDg3NzYzYzk3ZjY4ZWEzZjA0YTA5MDg5NzBhNGE0NmY2NGMwNTFiZDYgcmVsZWFzZTMxLW1haW50Cis3MzgwNSA4NTRjMDk0OGIwOGQwNDE4ZDZlMWU2NzY4ZWQ0ODFmNTBmZGYzN2ZhIHB5M2sKKzczODA3IDU5YzY2YWRlM2MyNjgyMmFhODhmOWYwMmQxNWRkMGZlNTgwOTg1M2EgcHkzaworNzM4MDggZmM2YWRmZmY5YTllZmQ1MjcxMTNhZWY5OWEwMmM2NTQ0NTAzMzBiMSByZWxlYXNlMzEtbWFpbnQKKzczODA5IDFjNTI5MjE4YmE5NjQ0NDAwMjM4Zjk2M2YxYTA4NDQ3Y2Y4YWJiYTIgcHkzaworNzM4MTAgM2EyMTQ2MjJjOTQzY2E0YThkMDBkMDQ3MzhiMTkyOTU3OTg5MTdmNCByZWxlYXNlMzEtbWFpbnQKKzczODEyIGY2ZmE1ZmIwMTBiZjdmY2FkNjliMTYyNGY1MmE4NzdmMjViNzgyYjMgbGVnYWN5LXRydW5rCis3MzgxMyAwYTQ2ZTBlM2ZjMDc0ODUzZDgyYzVlNTA2NGE0MjdkYWI5YjQ0ZDlhIHJlbGVhc2UyNi1tYWludAorNzM4MTQgN2IwZTc5N2Y2YjJjODZlYzMwZDNlNmI2MTcxODE0NTBmN2M4NmMyZCBsZWdhY3ktdHJ1bmsKKzczODE1IGIyYzc3Njg1N2RjNGM4NzNmZjU5ZWZjN2ZjODllNTM5OTJkMmJkNTMgbGVnYWN5LXRydW5rCis3MzgxNiA4ODQyZjRlMmZiMWI3NGRiMDY4ZGYwN2ZlNTk4NGY3N2NhZjY0ZWNiIHJlbGVhc2UyNi1tYWludAorNzM4MTcgZGZiOTg1YThkZTZmNjVjOTYzZWU0YzU3YTFjMGU5ZmY3MDZlOGJhZiBweTNrCis3MzgxOCA5YzlmZTlhYWZiYTZkNmQwOGRkZmZkMDRlNzdlN2Q0Y2NjOWRkYTM2IGxlZ2FjeS10cnVuaworNzM4MTkgMDFhZjdiNTJlMGRiNTllMzUyZjFjOGUwZDVkN2VlZGJjZDMxNDU4MyBsZWdhY3ktdHJ1bmsKKzczODIwIGM3ZGEwZGM2ZWIwYzZjNDQwYjJhMjFhNWQxOWQyNTk3MGI3NDNmZTIgcHkzaworNzM4MjEgOGE3YzIwNjZhOWIyZTYxNGQ1MjMzOTQ2M2E0MDU4ZWVlOTg0OTg5ZSBsZWdhY3ktdHJ1bmsKKzczODIyIDQ2MTc4ODNhYzFmMzNmY2VjNDBmYjdhOGRiNzJmNWI5ZTZjZTYwMzYgbGVnYWN5LXRydW5rCis3MzgyMyBjMmY0MjcwYmUzNjI5MmQ1NGY3ZTUzOWQ2Yzk1YjUxYzc5NDMyMmRiIHB5M2sKKzczODI0IDBlMzkxYmYzZWI5ZGY5Y2FiOGE4NjYyNTVhOTExMGU0ZGEwYmJhOTEgbGVnYWN5LXRydW5rCis3MzgyNSA5ODA4ZTM4ZmRlNzJiNmIzMmJiYmU2MWFmNDZkNTQwNTdjNjQ1YjI3IGxlZ2FjeS10cnVuaworNzM4MjYgNTQwZmQ0NjE2M2QxYzliZTRjNWIwMWJjMDQ3M2RhYjVhNTNiZTllMSBsZWdhY3ktdHJ1bmsKKzczODI3IDUyYWFhNzdhNWRiZmM3ZmNhNDkxZmFiZDg5MWUwYWY5ZDE5M2RjMzkgbGVnYWN5LXRydW5rCis3MzgyOCAwOGI1OGNiZWNlNzllZWRmOTY4YjNkMGI1MzAwZmQxNDY2YjVjYWJjIHB5M2sKKzczODI5IDA0OTEyMjdlNTQwZWNlNTlmNmZiY2U4MDcyMTMwNzhjYjU3YzU5MTggcmVsZWFzZTMxLW1haW50Cis3MzgzMCA4M2NlMzMyYTI4MzRmOWJmODQ3ZGQ3NDNlNmNjODhhNGIxZTVlOGZjIHJlbGVhc2UzMS1tYWludAorNzM4MzEgZjg4MjY5NmZkMTM0Zjc3MTc3NGJiMzNiYjMzODdhZmZkNGFiNmY5OSByZWxlYXNlMjYtbWFpbnQKKzczODMyIDA2YjM2MGEzM2Q1NzExZTMxMGYxOTI2ZDRhNjViMTUwYmE0ZDIyYzkgcHkzaworNzM4MzMgN2I5YWQ5YWFhOTAyNGMxNGY2ZjViNDQzNDU5Y2IxMWEyNzIxZGFmYyBweTNrCis3MzgzNCBkMTFkODk5YWFiMWQ4MGU0YWIyNzU4ZmVmZDVhYjkzNjBhODM2NmU1IGxlZ2FjeS10cnVuaworNzM4MzUgN2RkOGRiZDI3MDMzMzgzZWExYjcyNGIxODBjODk0NDE1M2Q0ZWE3MSBweTNrCis3MzgzNiA4NjhmZjM3ZjVhODAxMjQ3Njc4MWU5YjUwNGFmOGRjZmU3MTAyYjdlIHJlbGVhc2UzMS1tYWludAorNzM4MzcgMWRlYTdlZDY4NjdkN2M3ZDA4NTAyY2EyMDljZmUxNjRmNGVhMjA3OCByZWxlYXNlMjYtbWFpbnQKKzczODM4IDc4OTg3YmNmMWFiZmIwODM1NGMyNDI4OGFiZjFjMzgwMWE2MDk2ZjYgcHkzaworNzM4MzkgN2ZmMTQwNWNjYjY0YmI1MWM0ZTE5YzE5ODIzNzI1NTIyYTg0MWVlNCBsZWdhY3ktdHJ1bmsKKzczODQxIDQ0ZmNkYmI2MjAzOGIxMTVmM2U5NzFmZmU5ZjY0Y2VlZTAwNGMxMmYgbGVnYWN5LXRydW5rCis3Mzg0MyBmNzQyYzA4NzUyODg3ZDM4OGQwMDMwNTQ0NDQ5NDRiZTRlZjcwMzY4IHB5M2sKKzczODQ0IDRmZjRhYThkNjU4MzI5OTIwNzY4MzA4M2RkNjE2MmQ0MGU4MmZiNGUgcHkzaworNzM4NDUgYzIzMzYxNWIzNGFhYjhlNTA1N2EyZTg4Y2RkY2I0MDAxN2JiNTM2MiBweTNrCis3Mzg0NiA0NjZjYTk2YmUxODI0MDA5YTBkNGI3YTMzYTBmYWRhN2E4YmZkMTEwIGxlZ2FjeS10cnVuaworNzM4NDcgNzdlYmVhY2MxMDdhODA2MGU5ZjEyMmI1MmVhZTljMDM5YTgxNDZhZSBsZWdhY3ktdHJ1bmsKKzczODUwIDhlODE1NzQ0NWE1NTY1NzI0ZjI3NjYxZTFlNGVkMmIzNTE5NzJkYzYgcHkzaworNzM4NTEgYWI0MzRmMGRjYjE1ZDk4NGU5ZTYzMzNlMzY5OTk4ZDgxZmQ5MzUzZSBweTNrCis3Mzg1MiBhNzZiMzRjZmM4OTdjMTAyNmY3YmYwMGNmOTI0M2IxMTc1YTRkYTMwIHB5M2sKKzczODUzIGE0MGEyMjY2MWU1MDQ4N2QyYTczODc5OTM1NDBlYmFjMDg0YTYwZDcgcHkzaworNzM4NTQgYzZmMTM5MzRmNGM2NjliNDAzZTQ4MmQzYzNhYmMzNTcwYTQ5MDMyMyBsZWdhY3ktdHJ1bmsKKzczODU1IDEwYTZjYTJjMGNjYjI3MjdhMjU4NmZhOGY0NzFlM2FkNjM3OTE4NDkgcHkzaworNzM4NTYgMjZmNjBmZDQ3YWQzZmE0ZDQyNDgyN2EyM2QwMjNmYTBhMzE0ZTZmZCBweTNrCis3Mzg1NyA4NWRiNmE1NDNiM2U0NGJhZjBlNjE2OGMyM2NmMTZhOGU1Mzk2ZjczIHB5M2sKKzczODU4IDFmYzM3ZmVjYWY4ZjMzZjc3NzMwZWI4OGEzOTIyMjBmMjFmNDI3YWIgbGVnYWN5LXRydW5rCis3Mzg1OSAyNDQ0NmRjODdmNzNlN2RmMDdlMmZkYjY1N2ExZTEzMDUxYWE2ODhlIHJlbGVhc2UyNi1tYWludAorNzM4NjAgMDUyMmU1NzFjZTc0OTRmYTdmNzViMGI2ZDZhYmI3MzQzMzY0ZWM5ZSBweTNrCis3Mzg2MiA3YmI3NzU4ZTZkNjRiOGY5MGZmMjU3Y2I3NjhmNzNlM2M1YTU3MmNhIHB5M2sKKzczODYzIDQyNjM5NGRiYmNlZTIyZjg3MTFkZTY5YmRiM2U2ZDNiZDM5Y2FlZmIgbGVnYWN5LXRydW5rCis3Mzg2NCBiNDZhYmMyZjJhMWZiYWNhZWMwM2U5Mjk5OWM2ZmMxMDZhMDY5YzQ1IGxlZ2FjeS10cnVuaworNzM4NjUgZDFlZGE3MGIzODNlOWVlYmQzOWEwZTIxOGJlMGExNDI0YTcxZGEzZiByZWxlYXNlMjYtbWFpbnQKKzczODY2IGMyM2E4ZjFjZmFiOGZhY2ExYmMxMDYzZThiNDgxMDE5YWMwYTkwMDYgcHkzaworNzM4NjcgNDlmZjIzNDIwOTE5YjQxZWMwYjg3OTQwMjQ2ZmIwOWU4Mzk4NDIyNSByZWxlYXNlMzEtbWFpbnQKKzczODY4IDc0OWNmMDZjZDA3MDk5YTYwZTNmYjUwMDI4ZDBjZDE4YzM1YTA0YTUgcHkzaworNzM4NjkgNTljZjVmODA4YzI0YTk5OWUzNzUwYzhkY2FiNjg5NDMxYWIxN2RiZSByZWxlYXNlMzEtbWFpbnQKKzczODcwIGU5ZmM4OTQ3YzQ5YTU1NjM4YTllYTRjM2UzMjZjOWNkZDRhZmQwZWMgbGVnYWN5LXRydW5rCis3Mzg3MSAzOGQ2ZTRlNTFhZjA4OTUxYjBlOTZmODk2MDc5ZTUwZGNkNmJhZDY4IGxlZ2FjeS10cnVuaworNzM4NzIgMWNlZjdlNzE2MjQ3OGI4Zjg2ZmRmZWY5YWNkZGM0YTA3NWZhZmU3MSBweTNrCis3Mzg3MyAzMDYzNzE0ZmY5ZjMxYzBmYWI2YTE4MTdhMmY4NjBkYTZkMDhmYzAwIGxlZ2FjeS10cnVuaworNzM4NzQgNjM4ZWExMzRhYTgyZDcyYTJhYzIwYmFmMjE4ZTBmNGY5ZTgyMGJmZSBweTNrCis3Mzg3NSBkZTU4ZjYxMzg2YzNiNDllNTVmYzNkYzlhYTRlOGIyMjc2MjUwNTNmIHJlbGVhc2UyNi1tYWludAorNzM4NzYgNDE2ODEzOGMzNzFlNWQzNTEwNGY3Yjc1NjA1NzUyNGYwZDk0ZjBiZCByZWxlYXNlMzEtbWFpbnQKKzczODc3IDRlYTgxMzBlZTA5ZTg0YjQ0NDE2OTE3ZGExMmMxZDZjMTUwMjg1OTUgbGVnYWN5LXRydW5rCis3Mzg3OCA4MTAwMmM3NjAwYmQ1ZDMyMDE5ZWM4NjEyOTkwOGI1M2M4MWYzOTg3IHB5M2sKKzczODc5IGFkZmQ2YjczZDM2NDc0MWI0ZDg5NzlhMTA2NGY0MzhhM2Y0MWRlYmQgbGVnYWN5LXRydW5rCis3Mzg4MCA4ODBiNTBiY2ExYjE5MjJmN2QyYjRlMWViNDUzMDliODZkYjNiOWY0IGxlZ2FjeS10cnVuaworNzM4ODEgOTllMzBhZjQxMTY5ZjA1YTc1NjE1MmJmOTMwYWZmOGQ2Y2I2NWU4ZiByZWxlYXNlMjYtbWFpbnQKKzczODgyIGVlMTU2ZWM1ZWZiZjk2ZDAwZDU0NjBlZmE5N2NhMDAwOWFiZjRlZTUgcHkzaworNzM4ODMgMWY0OGNiZDQzMjI2ZDI2ZWQ1NjFmNzQ4MTViMTgxYWI4NTU5YmRlZCByZWxlYXNlMzEtbWFpbnQKKzczODg0IDdmYTIxYmRjMzQ4YjRmNmExYjdhODIyZjU3YjUxNDc4MzNhNTliOTQgbGVnYWN5LXRydW5rCis3Mzg4NSAxZmQ4MzliODMzMGExYjY0NTJhMDdjODRmMDE2ZjNhNTA2MWQyYWE1IHJlbGVhc2UyNi1tYWludAorNzM4ODYgZGU2YzQ4ZDczYjcxNmVlYWYzYmNhN2NjMGE1MzIxOWEzYjdkNTFmNSBweTNrCis3Mzg4NyBmYTA4MGM0ZjUzOWE5ZWE5OGI5ZWE0MDY0Zjc5OTc5NmI5ZDI3ZDk1IHJlbGVhc2UyNi1tYWludAorNzM4ODggODk3YmRlZDgwMDIwNmE2ZjU1MjNkMjE5MGM1YWMxYmYwMDBhM2Q4MCBsZWdhY3ktdHJ1bmsKKzczODg5IDhhODQ0YTViMTZkYmJmOTkzMjM0NDBiYzgzMzM2YmUzZGYxNGM5MzIgcmVsZWFzZTI2LW1haW50Cis3Mzg5MCA4NjBhMDY5ZDEyNmM5YmFmNjBhYTEwNWYxYzU5NWU0ZmMwYWQxZjkzIHB5M2sKKzczODkxIGIzZmI1ZTZiN2U4MmQ2M2ZiYzY3YTdlMWMyODlkZjJjMDY2ZDM0NmQgbGVnYWN5LXRydW5rCis3Mzg5MiBmMDJlNDcxMjE4Yjc3OTFkNDA5ZDUzZDcxYmFjMzBlZjU0ZjU3YzU0IHJlbGVhc2UyNi1tYWludAorNzM4OTMgOGJlZjNhMjY3ZTFlZTg0ZjNmN2E2ZTNjN2U0YjhhNmVlMmRjN2FiZiBweTNrCis3Mzg5NCBkOWIxOWIzN2Y4MWFlY2I4MzFhZjBmOTgzMTU0YWM0OWU4Nzg1OWIxIHB5M2sKKzczODk1IDI3YjUxNjI2MzI2OTE2ZTc0NzZhMTQyYWNmODBjMDdjNmE5YWQzYmIgbGVnYWN5LXRydW5rCis3Mzg5NiBkNjFjNGRjZjYxODk4ZGJiNzI1ZDkxMjYwNWEwMTAwOWM3ZWE5YTM3IHB5M2sKKzczODk3IGQ1OTkyNTRjMjAzYmM2OTdiNmJhYmNiMDJjZWRlN2RjNTBlZGU5NGIgcmVsZWFzZTMxLW1haW50Cis3Mzg5OCBiYTA0NTlmMmMwY2I0MDA1Y2RkYjA0MDZkODI0MDQ5ZGRlMmU1ZjljIHJlbGVhc2UyNi1tYWludAorNzM4OTkgYmU3MzZiNDkwYWIyYzhiY2Q1OTJhYWNiMzJmMmNjMjdiOWRlNTc3ZiBsZWdhY3ktdHJ1bmsKKzczOTAwIDQ2OGE0MGFkZjU2ZjVlM2Y0NTUwNzFkZjJjYjFlN2UzYTc5YWEwNDMgbGVnYWN5LXRydW5rCis3MzkwMSBjOTJiOTM3NzU1NjkwYjk0NGU4NjlhMTYyMTA3YWIyZTZiNDMxZjc2IGxlZ2FjeS10cnVuaworNzM5MDIgOWFmZWFlMGJhYmY5YzRmNjU4ZmIzZTNiNzIyZDU0ZjI0OTQxYjE3MCByZWxlYXNlMjYtbWFpbnQKKzczOTAzIDEzYzVjZjQ4OTc5N2M0NWI2YmFkODhiNmE0ZDM1MDUyZDJjMmQ4NWEgcHkzaworNzM5MDQgODI5MDUxOTE5OWVjMmZiN2EwOWVjN2Q4YTg2YzE4MDI0ZDEwMzE4YyByZWxlYXNlMzEtbWFpbnQKKzczOTA1IDRmMWIyYTQ1N2U4M2NlMTM0YTM2MGVlNmNjNjA5MjgyYmFmOGQ4NjUgbGVnYWN5LXRydW5rCis3MzkwNiAwZjA2NWI0OGFjZjk1MTI5ZDI3NzdlMmQyYTdhYzE3NzI3MzM0MDljIGxlZ2FjeS10cnVuaworNzM5MDcgNWY0NTM1MjI1ODE5YmVlMTQ5NTMzNzk5MDNlZjU1NTA4ZTI3NjNmNiBsZWdhY3ktdHJ1bmsKKzczOTA4IDVkOWIzMjMwMTgxNTQyMzg4ZjBjNjA1NjdlZTI4NDk2YmJmMmIzNzggbGVnYWN5LXRydW5rCis3MzkwOSBkYTJjMTQ3ZTkyOWQwYTFkMGIxYjA2ODEzODAxODMyOWUyNmY5Yzg3IHB5M2sKKzczOTEwIDVhMjhhOTVkZWMxOTMwNWU3ZWIwZmY2MTRiY2Q5OTAwZDZmNzdhYWUgcmVsZWFzZTI2LW1haW50Cis3MzkxMSA4YTc3ZWRlNGUxNzVhOGM2NGQyZjdlMDVjMWU0ZjgxZjAzMmU3Mjk0IHB5M2sKKzczOTEyIDRhZTFlOTZlOTM3NzRjMDdlZTQ0MWVhNTRjYWEyYmYzYjc5OTcyM2QgcmVsZWFzZTI2LW1haW50Cis3MzkxMyBjNDdlZjRlMTA3ZGY5MDhjNzE4ZTliNTE0ZmJkMWFkYTMwNmY2ODk3IHB5M2sKKzczOTE0IGI1M2U0MmU1MGM0MTUzMmM4YzkwNDMwYWE4Nzk2ZGQ4OTQxYjQxZDcgcmVsZWFzZTI2LW1haW50Cis3MzkxNSAzODk4ZDUyMGYxMDdmZjQwMWQ3ZDBiYmRlMzQ0Njk4MzY0ZTcwMzMzIHJlbGVhc2UzMS1tYWludAorNzM5MTYgNTYwOTM1MmZlYTEyMGU1OWQyMThlNTBmNjU0YjRmNWEyZTNhZmRiOCBsZWdhY3ktdHJ1bmsKKzczOTE3IGU4OWZhYWFmYTNlZWEyNDk5ZTJjN2QwMjFkM2FhZmU4YzRmZGYwNTkgcHkzaworNzM5MTggMGIyYWJhN2FjMWZhZjYwMDRkOGE5NWI3ZGMyMWIxZTkzMDY1YTQwMyBweTNrCis3MzkxOSBhZWRjMjIwY2M5YmY4OTExMjI5YmZlYWQ0NzJhMTQxM2NjYzhkNWZlIHB5M2sKKzczOTIwIDAxMTM3ZTNiOWViZThmOGQ1YWNkMDU5YTIxNzBlYzhhYWFiYzM2MmMgcmVsZWFzZTMxLW1haW50Cis3MzkyMSA4NzdiZDdkNTBkODk3ZjRlNmZmYTgyYjBmOWI4M2JiYmE3NzNjZmY0IGxlZ2FjeS10cnVuaworNzM5MjIgNmYwZTU5ZmFiNjJjZmYyNTdlYTc3YWY1MjI2NTc1MzE1ODE0NjkyZCByZWxlYXNlMjYtbWFpbnQKKzczOTIzIDYyNjQxMzI3MjQ2NDliYTQ2NTY0MzI2ODhlNWQ3YzIyYWFhYmQ3M2UgcHkzaworNzM5MjQgZDBiM2FmNTY1ZWFhNWE5MGVhZDRiOTVkNGE1MzRmZWI1Njg2ZGYyYyByZWxlYXNlMzEtbWFpbnQKKzczOTI1IGU1M2QwMzFlNTRkNDc1YzQwNjcwZTA0MTc4N2Y4YTMzMjMxOGMzMjUgbGVnYWN5LXRydW5rCis3MzkyNiAwM2I4NjYwNmNlMGEyYTc4YmM1ZTU5MWUwOWUzMWYzNjM5ZmFlYWYyIGxlZ2FjeS10cnVuaworNzM5MjcgOWI1ZDI4MThlMmQwZTcwMjc3OWM4NDFmODQ1YmFjNWU2MmFhMTA4MiByZWxlYXNlMjYtbWFpbnQKKzczOTI4IDEzOTM0N2IwMGMxOGY3OWMwMTY5NjllZDFjZjgzNjhmYzc0Y2VkYTIgcHkzaworNzM5MjkgMmZkNzRjNTAyNjAwMzY5MTExZGZlMDJiMWEzNjlmYTJkZDc4Y2U4ZCByZWxlYXNlMzEtbWFpbnQKKzczOTMwIDE0Y2QxOWZlYWYyMGQ4NTkwZTVkNmQ3Y2JlMmFkZGE5N2FhMzAzMWQgbGVnYWN5LXRydW5rCis3MzkzMSBjZGRkNTE2NGRiMDNjYTc0ZTBiM2FkYTA0MmM2Mjc1MzZmZjRhM2FiIGxlZ2FjeS10cnVuaworNzM5MzIgYjFjNjM3MmE4MDkyYzNlYjg3MWM3OTVhYTI2YTBlMjM1MTc3NGY4MSBsZWdhY3ktdHJ1bmsKKzczOTMzIDIyMTcxOGU3NTdiYWZhZDA1YmZlZTUyYmQzOWYzNzlkOGU2MDkyMTggbGVnYWN5LXRydW5rCis3MzkzNCBmZWFhYTdjYzAyZDEyMmNmMDBiZTE5YjljOTRhNzI3ZTc5OTVhNjU1IHB5M2sKKzczOTM1IGU1MzZhM2IzYThkMGU1YjBhNzMxMjVmMmFmMzY2MTFjNGQxMmRiZTcgcmVsZWFzZTMxLW1haW50Cis3MzkzNiBlMjAwZWU5Y2NjNGJlZDYxMjZiZjJkZDZjZTYzYTNhNWRiOGM1OTJkIHB5M2sKKzczOTM3IGFjYWEwYzg3ZDQwMWYzNTkzYzNjN2QxMDM5OTAxNGFjNzM4OWNhYTkgbGVnYWN5LXRydW5rCis3MzkzOCA3YjI0Njk0NWZjOGNiMGRiNTZmNjJkMGU2ZjRmNDg3MmMyZGFmNTQ5IGxlZ2FjeS10cnVuaworNzM5MzkgYjI4ZGFkZDIwZDliN2I0OWVkMDZjNjk4MGQ5YWM2MGFhMjRkMmY1YiBsZWdhY3ktdHJ1bmsKKzczOTQwIDU5YzM0YTkxYzU0ZDlmZDBjNDk4N2JiNTEzZWUzNDZkMWUyYjVkNDcgbGVnYWN5LXRydW5rCis3Mzk0MSA4NDFhMWU2OGI0ZWRjY2NiMjE4NGZiY2IyMWM1ZjNmYzM5OGUwOTcxIHB5M2sKKzczOTQyIDY3ZjVlMDFkNWE2YTcxZTI1Nzg3NmRmZTA1YzViMTY4NWM2N2VkODQgcHkzaworNzM5NDMgODA2NjE2MDhkNGUyMDU3Y2NkYzQ3NDdkMTIxOGJkMTM1ZTUwMWQ5YyBweTNrCis3Mzk0NCA0YzVlMDc1ZjU0NzNkYTU2M2NkOWVhNDY1NjcyMmFmN2RiYjk5MmU1IGxlZ2FjeS10cnVuaworNzM5NDUgZjNiZjA4MzI5ZjA3OTY2YjVjZTA5ZjQyZmYyMDU2MDJkZjZiZmE3NyBsZWdhY3ktdHJ1bmsKKzczOTQ2IDgyMmEwMmI3MWJiZWIyYzM3YjdiOWM4YjQ2MTQwODVhN2ZiMjM4ZDEgbGVnYWN5LXRydW5rCis3Mzk0NyBjNjRmOWRjM2M2YTQ5ODViMzk0NWQ0Nzk3NDAyM2QzNGE0MzdiNDc0IHJlbGVhc2UyNi1tYWludAorNzM5NDggNTdiMzU5MWYwY2IyMzJhNDdmMjU4N2E5NzBmMzE3MTVkZjZlZGQ5ZSBweTNrCis3Mzk0OSA1NmNjZWYzNDIwZTc4MTMzMzYwOWI5MTU2MzBmODczYThiNzE4ZTQ0IHJlbGVhc2UzMS1tYWludAorNzM5NTAgZDI3ZmRjNzAzNzljMjZhMTA5YWM2NmVlZmZlYjYzMWY2OTRmMGJkZSBweTNrCis3Mzk1MSAwYjUwZTY4NDFhODFiZGJlOGU4OTZhNWM0OWJhMDc1ZDkwMDEwNWM0IGxlZ2FjeS10cnVuaworNzM5NTIgODY4MjAyMjVhNGQ1YWZiNzYyZGU5YWZkMDM2Mjk5ZDgwMDg1MDI2NiBsZWdhY3ktdHJ1bmsKKzczOTUzIGExYjc5Nzc4ZjIyZTNlMjRjYTMyYzU1OWM4ZjFhMDJmNWE3MjAxN2EgcmVsZWFzZTI2LW1haW50Cis3Mzk1NCAzZGFkZjM0NTNkMDU1MDlkNjhjNGUzNTg0MDYyNmQxNGRhNzcwZGI4IGxlZ2FjeS10cnVuaworNzM5NTUgOTNiNDhhYjkwZWFkMGU1YzVmNmFhNmJjNzYyZjMxYzJmY2Y4YjJlZCByZWxlYXNlMjYtbWFpbnQKKzczOTU2IDEwMjhhOTkxYjY4ZWMzZTZjNmNkYWYzODIwOTdlMDQ1ZjFiYTQ5NTkgcHkzaworNzM5NjEgMGM4MTI4NzBhOTc1ZWMwYjg2OTY3ZjFlOWQ0ZGU0NWE5MWQ3NGMwMSBweTNrCis3Mzk2MiAyNjMwYzA3NWI1N2NiMzU3Y2FhMzkyNGMwMDg4ZTQwYjYyMTg5NGU5IGxlZ2FjeS10cnVuaworNzM5NjMgNDkzYzdmOTUwYTJiOWI1YmE4MTVkZDU5NWZjMzVjYTM5MmNmZTAxNSBsZWdhY3ktdHJ1bmsKKzczOTcwIDg0OGE1YWM5MjRiOWI1MDA4YjAwNWY0ODhjNTEzNTJiY2U4NmFiYzkgbGVnYWN5LXRydW5rCis3Mzk3MSAyYTM5OGVkZWIwOGQ5NTNjNDM2MjQ2NzZmOTAzMjdiMGVhMTVlMGVlIHJlbGVhc2UyNi1tYWludAorNzM5NzUgZDBmMjI1ODY1YmU2NTYzY2I4MzBiMGQyYTA0NGQ0ZGE2NzI1MDYyMyBweTNrCis3Mzk3NiAzMTg3NjNlY2M0YjMwNDNhNjExOTZlMTgyN2I3ZTk3ZWNlYzczNjE1IHJlbGVhc2UzMS1tYWludAorNzM5NzggNTdlOWYyZDM2N2E4MWQzNWJkN2IyZDBhNjBhMjYxYWZhZTkzMjQwZiBweTNrCis3Mzk3OSBhY2RhNjkyYTg0N2ZjZTllOTUyNzc2NWI2MTAzYWJjNTlkNDU0MTRjIGxlZ2FjeS10cnVuaworNzM5ODAgZjNiOWM1MGE3YWFkNWMwMGYwZDViMzI0NzQ4YjFjMDQ1YzA5OTJmNSBweTNrCis3Mzk4MiA4OGFjYzEwY2FhNmUxMWZiY2U5YWY3ZjQ5NWMxNDVmZWY4ZjJhYjYzIHJlbGVhc2UzMS1tYWludAorNzM5ODMgNWJlMDRlMjMxN2U4ZDEyYThiZTI4MjU3MmVlNzdkMjBhYTBkZWEwZiBweTNrCis3Mzk4NSAwMTBhNDhlOTQyMjM3MjI3ZjA3MzMzMTVlMjExMzE2N2RiYTU3MTJhIGxlZ2FjeS10cnVuaworNzM5ODYgZDA3NmU2NWE5MGQ2YzE5Mzg1YTk1ZmU3OWNlZDg1YjNlNTRlODkyYSBsZWdhY3ktdHJ1bmsKKzczOTg3IDJiNjdjYjkyNWJiMTllODY5OWY0OTZlNDA4ZmFjZDQxMjhiY2E1MWQgcHkzaworNzM5ODggOTUwN2U0YjliOTg4NTg4NTI5ZDc1Mzk2YjkyMGNhNjBhY2QzYTM3NSBsZWdhY3ktdHJ1bmsKKzczOTg5IGI3NGUzOTI2MjgxNTEzYTIwOTIwMTZkZDRlZjY2YTZmMzY0OTBmOTAgbGVnYWN5LXRydW5rCis3Mzk5MCBiMWQzNGRmZmZlMmRlMDFlYzgwZDUxNDM1ZjUwNTgzNTk4ZWQ0N2E5IGxlZ2FjeS10cnVuaworNzM5OTEgZTE3MmE4ODY1MGNmOWFlNTcxNmRkYmQxZTdmZWI2NGZiZTUzOTViYiBsZWdhY3ktdHJ1bmsKKzczOTkyIGJkNzRlMmM5NzM0ODlhODZmMWRkODdjNDM3NGUwNDIyMDgxMTA5N2QgcHkzaworNzM5OTMgNGQyYjUzMjVlZTQ4ZTg1ZGMyMmI5MjhkYzQ1ZGFmODMzNzNlNzE5YyBweTNrCis3Mzk5NCBkYWFiY2JmMjQxNWRkMGEzODkzOWUxMmY0YzFlYjFmOGQ3ZTJlYzU0IGxlZ2FjeS10cnVuaworNzM5OTUgMzJkNDg2NjJhYTVmMzYzMDUyODZlMzRiYjVjMzRkNjI3ZThhNTUwMyBsZWdhY3ktdHJ1bmsKKzczOTk2IDhlYmI5MGRjM2IwNDUwYjM5YmQ4YTliZDBiMjg1ZWZiMGFlMDk5MWEgcHkzaworNzM5OTcgN2JlYzZiNDA3NGY1ODQ3MWUzNDE3ZWFkZTU1MmNkOTU5NDNlMTVhMyByZWxlYXNlMjYtbWFpbnQKKzczOTk4IDczN2E2YjMzNzUwNTYzYzAyZjc1MDYxMzBlMmUwNWE0NmQxM2U5YWYgbGVnYWN5LXRydW5rCis3Mzk5OSA2ZDk2MjVkZDkyZTdlYmM1YWNmNTk0MTQ5MmNmNTFmMWMwYjg1N2I0IHB5M2sKKzc0MDAwIDQxZWIxMTI5MDE0MmU3NjM1NjJmMjg1MzRjMzQ5YjE5ZTU1Yzc1MTQgbGVnYWN5LXRydW5rCis3NDAwMSBhYTIyZTdmMzI1MTc4MmE3Y2U2ZjYwZjQ1NDYwOWE4ODc3ZmY1N2JmIGxlZ2FjeS10cnVuaworNzQwMDIgNzJjNWUxNzNhYWM1YTY4MWM5NTc3MGNmZjg3OTIzMDJjM2JjMzVjNCBsZWdhY3ktdHJ1bmsKKzc0MDAzIGVmMWIxMTk4MzM4YmZhZDcwNDg3OGYwNWU5NDI3Y2ZjNzVlN2QzMWEgcHkzaworNzQwMDQgMTI0MzlhMDMzOTg4YTRlZTIxODExYjQ2NGM3NzM4ZDFjZmY5MDc4NCBweTNrCis3NDAwNSAyOWU3YTRkZDQxN2NhMjU1ZmZkODk3Nzc0MDEyOGEwZmU1ODNlNTdhIGxlZ2FjeS10cnVuaworNzQwMDYgMGVkNDA1YzA1Y2MzMDRiZmY1N2Q4NGZlN2E1ZjQyYjgzZmQyMmY5OCBsZWdhY3ktdHJ1bmsKKzc0MDA3IDk4YmJiOTYzNDY3MmE1ODFkZmM5OTBmN2NjZDEyY2MwN2E5ZWYxYzUgbGVnYWN5LXRydW5rCis3NDAwOCAyMDczYTk4OWMwMTkyNmIxMzNmZjIyMjZhODBkZWYxNzRlNDJlOTVmIGxlZ2FjeS10cnVuaworNzQwMDkgOGM2NjA2YjMyY2IxYzkwZjM1MGU2NWIzODEwMzQ2MGFkMWQ1YmQ4NCBweTNrCis3NDAxMCA4N2IzMTIxY2U1ODBlZjIxM2RjYWEyYmMyY2VjOTQxOTk4MDg4ZmFlIHB5M2sKKzc0MDExIDkzOTA2YjM5ZmZlY2M0YjE1MDZmZmM3OGZlZDYzOGQwYWQ1ZDg3NzYgbGVnYWN5LXRydW5rCis3NDAxMiBhNTBlYjU5NmE2ZDNkMWMyZTc0MDM2ZmM0Y2FiZDU4ZjQ3MWI2ZjY0IHB5M2sKKzc0MDEzIGVkYzcxNGZmZTZjY2MzYTMzYjg5NGVjZmI1ZGM5NDU0NzAwZmNjMWIgcHkzaworNzQwMTQgM2EzMTYyNDNiZDZjNmY1ZjYzNTExNGFmMDkxYTU3MmFkOGQ4ZGRiNiBsZWdhY3ktdHJ1bmsKKzc0MDE1IGE4OTIyNzIzYTkyZDAwMWYyNDNjNDZhOWNhYjg4ZGU3MTU3NjMwZDEgcHkzaworNzQwMTYgNzNkY2QxODNmYWUyZDZkNjg4YTQ1OTM2NzE1MmEyNmIwMTFiYmM3MCBweTNrCis3NDAxNyBkMTM0MGE1MGExYjMwNzZhNWQ1YTkyMDVhNmY2MDdjYzAzYmVmYzdiIHB5M2sKKzc0MDE4IGJkNDMxYTBlNjgyNzQ5ZjQyZDhlOTlhZTQ1YzBlNDY4OWY0MjAwZWQgcHkzaworNzQwMTkgMWZkMGY1Njk3YjQwZGJjMWJmZTJlNDExNjVmMzNiNWI0MzI0NWVkZCBsZWdhY3ktdHJ1bmsKKzc0MDIwIDY5YTA0ZGJkNWYwYTI3ZDk1MDY4ZDFjZDZlY2I4MjczMTE1ZTU1NDkgbGVnYWN5LXRydW5rCis3NDAyMSBkYzA4NGY0MDAzYmJiZjY4MGJjN2Y4NDA4ODczMWE3ODRjMTM2MjE5IGxlZ2FjeS10cnVuaworNzQwMjIgOTgyNzE0NjhhYjA3YTE4OWY2NzgzOTRiZDM5YmI4ZGZmMjRlNDUwMCBsZWdhY3ktdHJ1bmsKKzc0MDIzIDMzNzBkNjA4ZTVhYTQ4NTYzOGNlOWMyMGI4YjgxYTlkYzc1ODhjYjkgbGVnYWN5LXRydW5rCis3NDAyNCAzODY0NTJiMmQ5ZDU3MzM3ODQ2NDlhOTc4MzZjZjA0MTM2NWQzOTE5IGxlZ2FjeS10cnVuaworNzQwMjUgMDc3NTBjNTVmZDU1ZmI4MDUxNDYxMzg3YjI2YmUzNTMwMDBjYTY3MCByZWxlYXNlMjYtbWFpbnQKKzc0MDI2IDliMTdkNTQ2OTgyMWIzZjhlMWUxZDMyZWViNjZiOGIxZGMxNjljYmUgcHkzaworNzQwMjcgZjk3OGRkZGI5YjcxZmQ4OGJkY2NlMGRlNjhmOWNhZDY3OTQwZThlYyByZWxlYXNlMzEtbWFpbnQKKzc0MDI4IGFiNjNhMjYyYTExM2I5NTRlYjE5YzdjZTI5MjU5MzQ3ZGQxODI2NTcgbGVnYWN5LXRydW5rCis3NDAyOSA3ZjE1NDdmNjZjY2YzMGMxZTFiZjAwZTc3ZWE4OGQ0MDIwZGRjZGQwIGxlZ2FjeS10cnVuaworNzQwMzAgZmM4ZmI4ZWZmMjBlYzg2MzgwOGU3YzY2ZTZkNjM0MzIwZGEzMWZkOSBweTNrCis3NDAzMSBlODMwZTgzZjBmNWFlNGJiODY5OTg4YzQyZjhiOWNiNWU0YzEwM2U0IGxlZ2FjeS10cnVuaworNzQwMzIgMGNhODBhMmM3N2ZmZGU4ODU0MzY3MjI4OTg3MWIzZTg0MDc0YTA1ZiBsZWdhY3ktdHJ1bmsKKzc0MDMzIGNmYTAwNGMxZmQ5NWQ3NjJhMDMxOGI1MTRjNGIyMjkzNjdhZDQxNTEgbGVnYWN5LXRydW5rCis3NDAzNCBiMTZhZTY5ZDY0ODRhNzA1MjNiNjE5YmJiZDI0ZTY2MzIwZjFjNjBhIHB5M2sKKzc0MDM1IGU2MjFlM2UzMTk2ZWE0MWZkYzMxYjNiMjBiMThjYzhhNzIxZjcxOTAgcHkzaworNzQwMzYgY2IzYWE4YmNkN2IwMmQ4YTAxZTc2YmQ2OWE1ZjRkMjRlMWI0YjdmYSBweTNrCis3NDAzNyBkY2U0N2MxMGQzZmFlMWZlZjJmYzJmZjUwODA0ODI3NTUzNjFiNTgwIHB5M2sKKzc0MDM4IGQyMDc5ZDVhZGNmYWE0NGExZWY1MWRiNWQ2NzJmZTMwNmQxZjZiNzMgbGVnYWN5LXRydW5rCis3NDAzOSA3ZjZkMDNiNTk4NjVjMzE3MGIzMTA4ZmYzYjNhNGYyNmQ5Y2UyN2RiIGxlZ2FjeS10cnVuaworNzQwNDAgMmRhYjhkNjNlYjU1NTY4M2ViZDQ5YzE4MGEyY2MzYWZiNzg5YjE4NSBsZWdhY3ktdHJ1bmsKKzc0MDQxIDllNzUyOWVmNDRkNDM1ZDE5OGRkYzI2Mjc5ODZkNTM1MzBlZmQ5ZTQgcHkzaworNzQwNDIgMTJhMTNlNTM4YTExZDk5NGY4ZmQ1NmRjZjJkMTdiYzQ2ZmIyZjMyMSBsZWdhY3ktdHJ1bmsKKzc0MDQzIDEzMGYxOTExZDE0NjViNDYwNDRlOWI5MDE2NjFiYzMyZGRlNTdlZDMgcmVsZWFzZTI2LW1haW50Cis3NDA0NCAyN2U3MGQ4MWFkNTc1ZWJlMjMxYTc2NGJkYmUxZDRiZjNjODljMWYxIGxlZ2FjeS10cnVuaworNzQwNDUgYjdiODI2ZjY1ZTc1ZGJlY2Y1YTQ0N2M4ZDk2MmNlNWVhMTM4MzM0YiBweTNrCis3NDA0NiA5MDZlZDExOWNiMTliNDJjYWQyNDdlNDU3MjQ4OTRhNWVjNmRkODZiIHB5M2sKKzc0MDQ3IDg1MTFjN2MwZDNlZmZiY2JmZWIzZjZjZDA5Y2VjY2M4YWU2OWM1ZmIgcmVsZWFzZTMxLW1haW50Cis3NDA0OCAwMWFiY2QzNzMwMTQ1ZjkzZGYzYjJmZDE4ZGRlMTM0N2U0ODk4NDliIGxlZ2FjeS10cnVuaworNzQwNDkgMTA3ZTRmYjkzNjA1ZmQ4OTAxNTE3NmZlZjU3ZjBjZTUxY2JkNzRmMSBweTNrCis3NDA1MCAxZWM1YzI2NmQzOTBkZjYxZmE4OTIwMWNhNDFhY2VlYTZiYzBiNmEyIHB5M2sKKzc0MDUxIGEyOWJhYmI1NDg4NGI1MTZkYWU2MTYxOGFjNGM0YzVhMzZkMjdkNTggbGVnYWN5LXRydW5rCis3NDA1MiA1ZDdkODUyNDA0MjYzMmQzZDkxNmFiMzVlZTQzZDYxMTAzZjlmYzJiIGxlZ2FjeS10cnVuaworNzQwNTMgNTkzOTIxODBiZjQ0NWVjZTFiOGUzYWJhZWU3NGU0YmIwMWQ4NzYxZSBweTNrCis3NDA1NCBiNDI4N2ZmMTY0ZTViYzkzOTE0OTk2NDgzNzVhMzU0ZWJkNzI5MzQyIHB5M2sKKzc0MDU1IDcyNGRmZWFiM2U5YjkxNTkwYWFkZTE4Y2U4NzliMzgwMzdkNzQxN2UgcHkzaworNzQwNTYgMmZjZGY5Njc3OTdkZTY1NDY5ZTlhYmZiOGMyNDdkYjU5NzI4MmIzOCBweTNrCis3NDA1NyAxYzU3ZGViZjk3YmMyNzRkMTZmYTIyZWU5ZmY5ODNmYmQ5MmEwMDIzIHB5M2sKKzc0MDU4IGMwNzViOTc0YzM1Y2E0ZDEyZmM5MThmNGJkMmZkY2E0MDc2N2U4MDAgcHkzaworNzQwNTkgYTA2MTY5YTg3MmIzNDg5Y2JjNGI1ZGFhMDEwZTU0M2ZlNWUzZjQ5YiBweTNrCis3NDA2MCAxZGI5N2NlNGE4NTBhMGNlMWMyZGQ0NTczZDhkZGU1ZWNlN2U4ZGRhIHB5M2sKKzc0MDYxIDIwY2MwZWFhODkyNjQ2N2ViYWJmN2RkN2UzYmQ0ZGZjMTU1MmNmNzcgcHkzaworNzQwNjIgNzYzZTUxMjk2NWZhNzgwMjRhY2I5MWM5N2NjOGJhNzczOTBkNjRiMCBweTNrCis3NDA2MyBlYThmZjhkNjI5MjhhM2NiYzQ0NmQwZTI0MmZmY2FlODM1OWQ5ZWY1IHB5M2sKKzc0MDY0IDhhYTgwYjcxNWM1MWM3NmU3NGY5MzNmNGFhOTAzNWI2MmNiNzc2YjkgcHkzaworNzQwNjYgMzZhN2U5NmU5MGZiM2EyNjUyMDVhNTM3ZTY3NmQ2YzA1YjkyZjU4ZSBweTNrCis3NDA2NyBkYjViM2QzMTg2NDkzM2I5YWMzYzVkZjIzM2UwYzg2N2Q4MzM1MGEzIGxlZ2FjeS10cnVuaworNzQwNjggZmUyYjAyNmRkZjIxY2QxZTVlN2Q2ZmE4NGUyZTEyM2FhOTlmODExMiBweTNrCis3NDA2OSBlMjM5MWQzNjBhYzI0NzkxOWM0NTc1M2I5MWYzOWM1ODEzNzhiYzRiIGxlZ2FjeS10cnVuaworNzQwNzAgYmNkYjdiMTg3ZmFhMDU0M2NjNGRhMTZlNzk4ODQ1ZGYzNTc2ZmFhZiBweTNrCis3NDA3MSBhYjI0ZmY2NDZkYTg4ZjU1YzQzYmU1YzQ1M2RlZDhkN2U3OGIzNGE0IHB5M2sKKzc0MDcyIDZlMDc1ZWU0OGQ0YmFlYTIyZmViZjFjYTI3NDcyMGUyYTRjODgxYWQgbGVnYWN5LXRydW5rCis3NDA3MyBiYTczOGFmMTRkZmNkNDFiMzJkNTdjNTI2NjNkYzUyNjcwMDhiYWE3IHB5M2sKKzc0MDc0IDU4YjUxMmVkZmRiYjQxYWQwZmFiZjdlZWY4YzZlYTgwOGJhYTA3M2QgbGVnYWN5LXRydW5rCis3NDA3NSAyNTkxMzhhOTg4YTUyNzBhMWQ4NzE4ZGM5MjFmOGE1ZmY0YTZlNGNlIGxlZ2FjeS10cnVuaworNzQwNzYgNWVlMmU5NjVkYTZlZGUxMzNjMjEwMTE1NTIwOWVjMDMxZmMwN2EyOSBweTNrCis3NDA3NyAwYWE1MzIxMTdhNGJiNjlmMDdjNjNhZTQ3YzVlYTQzMDNjYTNiNzgxIGxlZ2FjeS10cnVuaworNzQwNzggYjA1MTA1NWI1OWYxOTQyY2NhM2I2MTU2NDcyZDgxMDdkNzc5MzIzMiBweTNrCis3NDA3OSBhMTllYjk2MzdmZjdlZGZmYTE1YTZkZDY5MDZhOGI0NmQzZmZmYTI0IHJlbGVhc2UzMS1tYWludAorNzQwODAgOWRjNWFhNjJiZTcyZmY4N2JmOGY5OTkzNTZlMjJlNWUxYjkxOTBmMCBsZWdhY3ktdHJ1bmsKKzc0MDgxIDY2YmFiZTYzMTAzN2Y3NDY3NzcxYWU5NGZiNDdiMTQwNjIyZjc2MGIgcmVsZWFzZTI2LW1haW50Cis3NDA4MiBkZTFkNTIwNjlkMmRmY2I3MjZjOTg1MmRhNzc0YWE2NTcxMGRkYzY5IHB5M2sKKzc0MDgzIDM3NTU2M2M2ZDMyNDRhMTlkNzg5Y2MwNmI5NWU1MzhjZWQyNzViN2MgbGVnYWN5LXRydW5rCis3NDA4NCA1NGIxZjgwMjRiYzgzYzM2MzQ4MDRkZGY1YTg5MGQ5MjU2ZTU5MmRkIHB5M2sKKzc0MDg1IGYyMDcwNTg3NWU4MDY1MDk3NTJhNmU1MzJjNGQ3MWE0NzVjNDJkYTUgcmVsZWFzZTI2LW1haW50Cis3NDA4NiBjNzA0MjEyNzE5NmE1MTVmYWVmMjllMmUwNGNjZWQyNzUyOWRjNmM4IHJlbGVhc2UzMS1tYWludAorNzQwODcgNGYxNzhlNTk1ODEzMTJlNzhkZTE3ZTQ3NjEwZjI4NGM5ZjJmNmJiNiBweTNrCis3NDA4OCBlZTBiOWE5MzFjOTRhNDk2NDQ3YTdlMzc4YjA5ZGE4ZWJmOWQ0YTA4IHJlbGVhc2UzMS1tYWludAorNzQwODkgYzMzNmIzMDM4ZDA1NDY0MmFlNDc3YTI2MzcxM2U0MWUzMzNiOGNiMCBsZWdhY3ktdHJ1bmsKKzc0MDkwIDQ2MTJhMmFjZGYyZjYwN2Q3NDMyYjNkZWVjMjkzN2RiNTUwMGRmNzMgcHkzaworNzQwOTEgNjIzNmFkYjM2NjE4MWQ2MjViYTNkYzZiNjU2ZjQ5MGEzMDkxOTg0MSByZWxlYXNlMjYtbWFpbnQKKzc0MDkyIGQ2MGI1NTllZWFkOWYyOTc0ODc5ZGY1OTRkYzE4OWM3YjU4ZDZjYzYgcmVsZWFzZTMxLW1haW50Cis3NDA5MyAzNjYzNmZhNTRmMzMzMzlhY2I3NjViYTY4MGU2MzViMDFkNjRiZDY2IHJlbGVhc2UyNi1tYWludAorNzQwOTQgNmFkMjU2MTI0MDgwNDNhMGRhYmU5Y2ZkN2M5NjgwZTczYjdkMGQzOSBweTNrCis3NDA5NSBmMzExMzk1NDg3Yzk3MGYyZWE4NTJhYTlhZTcwNTFiYTAwODYwMzkyIGxlZ2FjeS10cnVuaworNzQwOTYgZWMxZjMyYjcyYWJlODEzMjY3OTQ4NTMwMzQ3YmY3NzI5MTM3ZWZiYSBweTNrCis3NDA5NyBhZjk3N2U5NGUyZmRkNGUzYzc0ZWU1M2YyZWRlNjRjMjk5NmZhZWQ3IHB5M2sKKzc0MDk4IDNhNjEzZTAwZjY2ZDM0OGJjM2NhZTIyYWIyYjY1ODFiMTlmODQ5MjggbGVnYWN5LXRydW5rCis3NDA5OSBlNjI5NTdhMGVlMTQyMzdkMDM5ZmNhNjIyODAxMTY3NGNmY2UyNjViIHB5M2sKKzc0MTAwIGVlYWQ3ODA3ZGY3Y2MwNzhmY2VhOTljNWZiZTljMWU2YTE4NGVjZWYgbGVnYWN5LXRydW5rCis3NDEwMSBjMGFjYWUxOWI0ODc2NzZhNzYxNzcwODgwYjdhMzk2YmRjZGRhYzNmIHB5M2sKKzc0MTAyIGVhZjRhMDA0ODRiZGJkODNlZDAyMTJkMGU0YTQ3Y2ZmZTdhNGFmYTIgcHkzaworNzQxMDMgYWUyYzA1NmM0NmQzNDQ3MDNlMmQ5YmQ1M2JlZjI1MGExZDhiODRlNSBweTNrCis3NDEwNCA4MWM4YjMwNDE2M2UzYWRhZDhmNWNkMjhlOGFkNjI4N2Q4ZGJhZGE0IHJlbGVhc2UzMS1tYWludAorNzQxMDUgMGFmOTQwN2M4OGQyZTZlZjFiNDExNTA3Y2YzMjQ3N2VkODlmOGJkMyByZWxlYXNlMzEtbWFpbnQKKzc0MTA2IDVjZjY4ZDNiNjUzMjQ4OTlmNWZjNDBkMGZmNDkzYTQ5MjBkZDU0N2IgcHkzaworNzQxMDcgYTY0MGJiM2I5YzJiYjZiZDJiNzBhZGQ3NjhlZDNkZTJmMjFjMzMxMyBweTNrCis3NDEwOCBmNTAyOTA3OTdmYjUwYTUzMGQ4N2JjZGRkNzI3OTY4ZWY2NzEwNDdlIHJlbGVhc2UzMS1tYWludAorNzQxMDkgZmU3OTg4YTU3MGRmZjIxM2UwMDdkNTI2ODM0MzFkYmQ1OTk5MWFkYSByZWxlYXNlMzEtbWFpbnQKKzc0MTEwIGRmYWY2ZGUyYzhjZTdhMzQ0ZWE4N2Y4OGVmNzFhMmRiOTBjZWU2NWUgcHkzaworNzQxMTEgZDgyNmEwY2MyYzBlMGU2MWY3OWFiMzJlMTY2MWUxMjNkZmJjZjJlYSBsZWdhY3ktdHJ1bmsKKzc0MTEyIGQxZDgyNTRjNGVkNWM2Zjg4OWNjZDQ5NGVmZTU1NGMyYTczMGFjMjQgcmVsZWFzZTI2LW1haW50Cis3NDExNCA3MzJmNzJjYmFmN2Q4NGNjY2Y2MTNkNWFlOTA4ZWViMTFkY2VmMzMzIGxlZ2FjeS10cnVuaworNzQxMTUgMGFjZjI0OTAxNWNhNGNiM2QwOTU4MTMzZjkyY2JkNTlkN2M5NTBkZCBweTNrCis3NDExNyAwMWI3NjNjZWI0MDg3M2U4OTM0Zjc3ZDgzOWRmNWUzOWU2NTQxNGJjIGxlZ2FjeS10cnVuaworNzQxMTggYWFjZGM3MzVmMTliMTg1YzJmZDIxMTcwMWMxYTQ2M2Q2N2U3Y2ZiMSBweTNrCis3NDExOSA3YmY4ZmMyMDAzN2ExY2IyMWIwM2QxZGYwODg2MzUyYTg5ZWIyMWI5IGxlZ2FjeS10cnVuaworNzQxMjAgODYwZTcxMmUzMmUwZGZmOGJmMzBkZmVkMmRhM2ZhYmI2NjlhYmI5NCBweTNrCis3NDEyMyAwMWUyZTlhZGQwNzBmYjQyMjM1YmE4ZmZiYWZkMjgxNDJlNTFjYTVkIGxlZ2FjeS10cnVuaworNzQxMjQgMzgzMmNmMDM2ODdiYjM5NTBhNWMyNWFmOTFlM2E5MDYzMGU4MmU0NyBweTNrCis3NDEyNSBjYzlmZWZjZGQ1MzNjNGI3M2E3ZjM0MmE4MGJhZTYyM2Y1ZjQ1ZjJkIHB5M2sKKzc0MTI2IGNmYWIxMWRkM2U3M2U1ODZmMDE0MzkzNGIyMjA0MzQ5OWU3ZjQyZmUgcHkzaworNzQxMjggNjNmZDE3YmE5ODc1MzA2Mjk3OGJhMTFjNTlhZWU5YzEyMmI3MDY5NSBweTNrCis3NDEyOSAyY2Y5ZDE4ZDNkZjU0YzlmYzdiMTg4NzI4ZGJkMWQzMThjODk1NDFmIHB5M2sKKzc0MTMwIDBiMWYxZDdiMmU2ZGZkMDU5NmNlNDQyOWE4MWY3NjJjNmM3ZTI1NjkgcHkzaworNzQxMzEgM2M0NDkwYWQwMWNmMDc2ZGEwNDk2MmYyOTI2ODFjYjQ0M2NiMGY4MyBweTNrCis3NDEzMiA3OTcxOGVlMDM5ODYyOWFjNDFjMDMyZDdjMDlkODAzZDc4ZTE2NGUxIHB5M2sKKzc0MTMzIGViYzk4NTZhOWJkYjI2MDFmNDMxZDYzYWE5ODhlMmM2OTdiY2MxYjcgcHkzaworNzQxMzQgNTYxMzY0YTM0YjBjNDZkMTM0NGZlMjlmODBhZDJiY2VmYmYwNmIwMiBsZWdhY3ktdHJ1bmsKKzc0MTM1IDBhMjBlZGYzZjdkYjg5ZWI4ZGVmNjc2OGZhOTUzMzg4NjYyMDFiMTYgcHkzaworNzQxMzYgNmY4NzM2NzM3OTk0ZGMxMTlhOTgzNDVlOTZkNmUyZWYwYWViZTA0MCByZWxlYXNlMzEtbWFpbnQKKzc0MTM3IDlmZjViZDE2MDE2YjQwN2M2Nzk3NGJhMjZlYTAwZTA4NWQzOTBhZTAgcmVsZWFzZTMxLW1haW50Cis3NDEzOCAyMWU1ODMxY2JhZThhYmJjMzM5YWUyOGQxNTZiYWE5Y2I0NGNjN2VmIHJlbGVhc2UzMS1tYWludAorNzQxMzkgMzgxNWFiZWQ5Mjc5YjhkODExYzg0YmM0ZjVlOGFiMTk5YTZiNjVlNCBsZWdhY3ktdHJ1bmsKKzc0MTQwIGMyOGU2MWM1YmRmODI5ZmMwZmQ0N2E0Y2RiYThlZTk3YjY5ODZlYTcgcHkzaworNzQxNDEgOTQ5OWMyMzJlZGI3M2ZiNzAyNjlmOTU3MjEwNmI0NGI5ZjQ1ZjU4NyByZWxlYXNlMzEtbWFpbnQKKzc0MTQyIDRkZjcwNTAwZGJlMzRkNTc4YjgwY2MxNTYwODRmMzExNDVmZjVkZGIgcmVsZWFzZTI2LW1haW50Cis3NDE0MyAwM2Y1YzY3ZGYxOGUyYjZjNTRkODI1MjFiOGZjNjVmNjJmYzNjMzA2IHJlbGVhc2UzMS1tYWludAorNzQxNDQgOGQ2ZWFkMmFjY2EwMDRmNTcwNTdhMDE1MjA2NzE3MTI1NThhNjMxZSByZWxlYXNlMjYtbWFpbnQKKzc0MTQ1IGZkYTkwNjJlYmZhNGM4NzFlOWNhN2M3OGY1MGMwMTVlNDIyMWU5ZGYgcmVsZWFzZTI2LW1haW50Cis3NDE0NiBjZGM3NDlkOWMwMjFiOTdlYzY3ZWM3NDE5MGZkMWUwZjVlZTc2MjhkIHJlbGVhc2UyNi1tYWludAorNzQxNDcgN2RjZTQwNGZjOGViNWIzM2MzMDZiNTg1OTczMWFjOTU2NGNmMjg1MyBsZWdhY3ktdHJ1bmsKKzc0MTQ4IDM2MTJhNGVjYTVkNTFjY2FiMWVmYzc4ZjJmNmIwYjM3ODJkZmZlYmEgbGVnYWN5LXRydW5rCis3NDE0OSBiNDBlZWI4ZjY5Y2E3YmI2NDU5MmM2OWZhZmZkZWIxMmJlMDdjNmMwIHB5M2sKKzc0MTUwIGMzMGZhOGM1ZTMyNDZmOTZjMDlhYzllODBlZDNlM2ExMTEyNzcyNmIgbGVnYWN5LXRydW5rCis3NDE1MSBlNDA1MDZlZGNiM2UxNTdhMDllZTcyMGQwMjc0NzE1MzEwNzQ4MzdlIHB5M2sKKzc0MTUyIDZiYjAxODg3ZjQ3NTY3Njc2MTFmMjgxMzllNWY2ODI0NGU5MzM3MWUgbGVnYWN5LXRydW5rCis3NDE1MyAyNGEyYWNmMTI5MWM5NDEzNzIyZjMxYTNhNTY1MTdkYjAwMWY3YmQzIHB5M2sKKzc0MTU0IGFiZmQ1Zjc4ZjQ2NmFlMTcwMzAwODU4ZDZkMzdkOWI2YWQ5ZDA1YzkgcHkzaworNzQxNTUgZDc0N2Q1MmY5YTY2OTA2ZTUyYzE3Y2UzMzQ5NTFkMThlZTE2MTk1YyBweTNrCis3NDE1NiBmNzkwNDMzNjk2MjVmZjlmNmYyOGIyNGQzMTYwNWJiZmE0OGQ0ZTFkIHB5M2sKKzc0MTU3IGQ2ODJjYTg4OGUyNzk0YjE3YTU2ZjE5YWVhMmVmM2NlNDA3NjljNDYgcHkzaworNzQxNTggNTM4ODUwYjM4OTMxMDkwNzFjNTE0ODBhODQ4OGM1MjI5MDFjMjdiNCBweTNrCis3NDE1OSBiN2FhYmJhODRlZTFhMGE5OWFkYjAyODNkZDZjNzllMDIxYjdmNGU5IHB5M2sKKzc0MTYwIDU5ZTVmMjk5ZGFhMDIwYzVjYmVlZTI0NTg0MjdlYzQ2M2E5MmRjMDAgcHkzaworNzQxNjEgZWM4NWE1MWRlOWNmNDhlOTAyOGU5NTIxNzllNGU4MDM5NjUyODk0NCBweTNrCis3NDE2MiBkZjVhNzA4NjA3ODEwYmYwOTYzODUzNzE5OThjYjk0Zjg1ZWU5MmRjIHB5M2sKKzc0MTYzIGNjOWExYTNlM2ZiODFlNDMyODZjNGMzY2I4MGJjOGZkOTNkNjVhY2MgbGVnYWN5LXRydW5rCis3NDE2NCAxZWNiMDdlMTFhMmRjYzYxZmUzZTUyMzFjNDIzM2NmYzlmODJjYWExIHB5M2sKKzc0MTY1IDljMjExMWNmZDk3NDM2ZGIyYTIyNGZmMzFkYjgwMGEzYmI5YzZlNjQgcmVsZWFzZTMxLW1haW50Cis3NDE2NiAwNzYzNDYwYjBiMzgxZGZlZDYxZGYyYzA3ODBkNTg2OGU3ZjQxZTQwIHJlbGVhc2UyNi1tYWludAorNzQxNjcgMTQ4MGZhZTNiNzAzZmNkN2QwMDRkNmU5ODJiYWMzYjA4MGQwMTAwNyBsZWdhY3ktdHJ1bmsKKzc0MTY4IDc0YWFlYjljMzVmYmQxMTRlYTIxYjNhYmRiZTk5YWZjZjM2MWFhNmMgcmVsZWFzZTI2LW1haW50Cis3NDE2OSBjYjQ2YTBkNzg5YzY3MGY1NGE4ZDkwZjQwMWMyODFhNDE0ODYzYmUxIHB5M2sKKzc0MTcwIDI1Y2Y3NzVhNzE1MTlmZmY2MDYwYjk1N2U1OWIyMWJkNTk4OGE1YTYgcmVsZWFzZTMxLW1haW50Cis3NDE3MSAwM2NmNGNiNGExNTAxZDVhMzY5YmNmYjJkYzQ0OTI4ZGU0NGZmMWVhIHB5M2sKKzc0MTcyIDkwOGIzOTc2NGM3MzhkNzE1YzlhYmNmYWYwYmY2OGU0M2Y4YjdmODkgcmVsZWFzZTMxLW1haW50Cis3NDE3MyAxMzI3YWY1NmVhNDlhYjg1YjFiMjM1Mjk1MGE4NjMxOGM1ZWZjZmMxIGxlZ2FjeS10cnVuaworNzQxNzQgZTY1MGE5ZDY0YWI1YzZlMjhiZGY4ZTQ2OWI4ZWZlNGUwYTAwOWZmMiBweTNrCis3NDE3NSA5NGZjNDMzYzQzNzM0NmFiNjI4MDQyMWZkZmIzZWM4YjVlYTUwNGYyIGxlZ2FjeS10cnVuaworNzQxNzYgYTBlYWNiNWY5ZDhhYTM1MmE2ZTYyZWJhMjY3OGVlZTQyYjgzNDBlMiByZWxlYXNlMjYtbWFpbnQKKzc0MTc3IGRmMTc0NDMxOTQ2NmM4Y2JmODc0ZThlYzliZDdiZTNjNjUzZDUwMWMgcHkzaworNzQxNzggMjYwZmI0MjFhYzA3YTE0MDg5NTA4MGUzNjIwYjVkZjhjOGZmZjNkNiByZWxlYXNlMzEtbWFpbnQKKzc0MTc5IDlkZGEwMmFmYThlZDAwN2M3YTEzODcyNjQwZjQyODc3YzVjNGY4MTEgbGVnYWN5LXRydW5rCis3NDE4MCAwMjVhNjQyOGE3NjRmNWU0NTA5MTkyYjc4MjdjMmUxYjg1MjM5MTJiIHB5M2sKKzc0MTgxIGI5NjQwNjU1MTJiMTU1N2FkZGFmYTJiNWY0Yjk5OWJiZTg4ZjdkMGQgcHkzaworNzQxODIgYjExYTc1MjRlNTU4ZjFjYTNmMjJkODBkZjlhM2M1NGZkZTUzZjQ0MyBweTNrCis3NDE4MyAyMDc1NDFjOTg3NDQyZDZiYmJmOWY2ZGY0ZjhkMDU2NDk4MWYwM2E1IHB5M2sKKzc0MTg0IDc0MjJkNzg5ZmRjYTliMmU5MWJjMGM1ODlmY2JjYTgxYWI4YzA0MDQgbGVnYWN5LXRydW5rCis3NDE4NSA5Nzc2MDJiM2UxNDBkY2JkYTM5MTkxOTZiN2NhMWUxZTE2NTNlMzdiIGxlZ2FjeS10cnVuaworNzQxODYgZWNhMDIwN2JiNzdmMDkxYTk5NDU4NDZjODk2YWI0MjYyN2I0YjZhNSBweTNrCis3NDE4NyAyZTk0NzI0NTk1OGIwMWM5ZTMyYmJlMmJmNGM5ZjExOWM2OTk4MjkwIGxlZ2FjeS10cnVuaworNzQxODggNjA1MjM0MThmOGM4ZTk1NTE3OTJmM2VlMWM0NzQ1NmVlMTRhMzRmMCBsZWdhY3ktdHJ1bmsKKzc0MTg5IDJmYjEwNTc3YzYyMWUyOWZmYjk1ZTQ1MmJjNWIyNTgyMTQyZTk3NTIgbGVnYWN5LXRydW5rCis3NDE5MCA4NjhiNGU2MzliNWFiMWI4ZTcxYTZhZDgyYzMyYzBmNWM2YTg3OWU1IHJlbGVhc2UyNi1tYWludAorNzQxOTEgYjc3YmI1MzIxMTA4ODkxZWYyNjQ3NzQ4MzFjODg0NmIyMTZjMjQ1OCBweTNrCis3NDE5MiBjMDBiMDg4NDJkN2ZkNGJkMzEzOGI0OTdlNjkyMDEyZDk3ODUyMjQyIGxlZ2FjeS10cnVuaworNzQxOTMgZTk5MDEzYTlkMmY5Y2E0ZTBjMzYzZGMwYWRmNDA2YWU1NmFjNDJiMSBsZWdhY3ktdHJ1bmsKKzc0MTk0IGQ5OGI4YTZlYzJiODRjNWI3ODAxMTczNDYwNGVhNTZjNGRkNGYxNjggbGVnYWN5LXRydW5rCis3NDE5NSA2MWEwNjViMzAwMWQ4N2Q1NmIzOWJjMDdhZWRjMmQxNzliYzE5YjM5IHB5M2sKKzc0MTk2IDc1OTYyMmQwYWUyODQ3NTZhNGFkZmU4YTIzYzQ5ZWZiOGVhMDUwM2UgcHkzaworNzQxOTcgY2ZmYjFlOTYzZGQ4YTA3NzIyMTFjMDc1NGRiYWRmNzcyMDFmNmYyZSBsZWdhY3ktdHJ1bmsKKzc0MTk4IGQxZWM5NWFlMGFjMjg0NmJkOGM5NmUyYzU4YzZjZjNjNTg1OGRlOTUgcHkzaworNzQxOTkgYTE0YzA4ZjhlNzdiNWY4ZDlmZDEzZWQ4YWU2NWU3NDM0YmQzODkwNCBweTNrCis3NDIwMCA3ZDQ2MDgwMDZjZmFjMzdjYzkwODQ5YTEyYWU1ZTg0OWZlMjRiNjFlIGxlZ2FjeS10cnVuaworNzQyMDEgNmM3YjRiNDcwODI3NzVhYjdiZDc2ZTQ5YzE0MTNmNGM3MGMzOTg1NyBsZWdhY3ktdHJ1bmsKKzc0MjAyIDRiMTIxNmY0ZmNiNWIwYzIyMTEwNjA3ODhiYWU5ZTFhOTRkNzAxYTEgcHkzaworNzQyMDMgMGY1N2IzMGExNTJmNDYxOTFkYTZjMjhmOWViNjYzMWRlZjc3ZjgwZCByZWxlYXNlMjYtbWFpbnQKKzc0MjA0IDUxMTJhNTZkZjk3N2ExYzFmOWY5ODQ0MGIzMjU5NThkYmNiNGRjYzMgcmVsZWFzZTMxLW1haW50Cis3NDIwNSA3MjRhMTAxMWU4OTdhN2I5ZjMyYWUyN2Q0MTAxYTg5NzhlNWQzMTYyIGxlZ2FjeS10cnVuaworNzQyMDYgMGI4OTNjNmVhZDRjNzM2ZmU5ZDhjMjg3MmJjNjM5YmYwMTJjZGIwMyByZWxlYXNlMzEtbWFpbnQKKzc0MjA3IDFiZGU4NDU1MjIyYzM0ODlhNmYzYjI4YTRhZDk3ZmE4Y2YwMzVmNDIgbGVnYWN5LXRydW5rCis3NDIwOCBhNTU2MzRjZTgxMTgzOGRlODBjZWY0MTFhYzA4NjhiZTk0ZTgxMzAyIHJlbGVhc2UzMC1tYWludAorNzQyMDkgYmJkMWQ5MGQxNThhYmRkZDU1MTkwM2FlNzQ3OGE1N2M5ZjdhODRiMiBsZWdhY3ktdHJ1bmsKKzc0MjEwIDQyZGIxY2YzOWFmZGJhYzUwYzI4NTFjNTI1M2JhMjI3YzIzZDIzNDcgbGVnYWN5LXRydW5rCis3NDIxMSA2Nzg5ZDg0MDYyMWY0ZDBkY2M2ZTU1NGQ5OTZjZWU5ZDFkNzU4YmQ5IHB5M2sKKzc0MjEyIDJmOGEzNjJlMzczZDk1MGNjOWI4MGVmMDQ1ZjUwYWRjMWUxZjFmNTAgcHkzaworNzQyMTMgMTViNjFmMzI3ZDUwOTVkYmE4YjVjYjJkYmUwYzE1Y2Y5MmYzZTQ4ZCBweTNrCis3NDIxNCA5YmYyMDY4NTdkN2U3OWNlMmQ5ZjUwYjEyMTBkMjM1NTI3ODEyNDMwIHB5M2sKKzc0MjE1IGMxMDc3M2JiYWZhMDM1OTNlNmI2MDJkNTVlMWI1MWVjNGNjMDY5MDkgcmVsZWFzZTI2LW1haW50Cis3NDIxNiBiNzFlZWI5MDcwOTM3YjU2MmYyNzIzM2VlZDUzZTgwNjU2MjQ4OTllIGxlZ2FjeS10cnVuaworNzQyMTcgMGYwMTYzZjhjNWI1NmNmZDJmZmY1YTlmOWJjODM3NGUyZTM2NWI5OSBweTNrCis3NDIxOCA4OWViZTQzMjQ0YWViZjZiYzNjYmYxZTc3MzE1NzUyYWZjMGI3YWZiIHJlbGVhc2UyNi1tYWludAorNzQyMTkgMGQyMDNjYTNhYzc4ZWRmMDQ1OWVjYjRjYjU1MjI5MGJmYjc4OTU5OSBsZWdhY3ktdHJ1bmsKKzc0MjIwIGE5YjUwN2VjZGE0YzlkMjcyYjMzMzg3MThjZjM2MjFkY2U0ZmE0ZDAgcmVsZWFzZTI2LW1haW50Cis3NDIyMSA4YzIxZmZmYjA2YzQ2MTRhY2FiYjc5MTFlN2E2MGQ0ZDk3OWVhZDc5IHB5M2sKKzc0MjIyIGZjNDY5YWY2ZWI3MDI2YmU4ZGFjOGM3YTJjYzE5MjU0MzZjY2ZjMjIgcHkzaworNzQyMjMgMDZiODZhNmUyOGYxYTE0MzU3ZWQ0NzU4YTcxY2RlNDFhZDNiZTkwOSByZWxlYXNlMzEtbWFpbnQKKzc0MjI0IDc0ZGM3YmI0ZjQ2NDNiM2Q2ZmU4MDIyN2E1OWFmMmY2OWIyMmRjYmMgcHkzaworNzQyMjUgNjA3Y2QxMTlmZTRiOTc4YTNkOWY1MWY1Mjg3ZTMyMDE0NTI4YmNhNyBsZWdhY3ktdHJ1bmsKKzc0MjI2IDEzMjZlZjg2ZjNlNDBkMzI2ZjZjY2Y1ZTJmMjc3Y2M1YWZkOWI0ZjkgcHkzaworNzQyMjcgYjM0Y2FlNzg2Y2IwM2U0NjcyNDJiZjU0OGNlYmZkYzQ2MGViNzVjMSByZWxlYXNlMzEtbWFpbnQKKzc0MjI4IGM4NTNhM2QyYTE5ZDM1OTJkZjIyOTEwMjNjOTkxOWZjYWE4ZmU4MGMgbGVnYWN5LXRydW5rCis3NDIyOSA3MjEyZTNlMGNkMTc1MDcwNzUyMjRmZjAwNWI2OTI3M2IzNWZiOWJhIHJlbGVhc2UyNi1tYWludAorNzQyMzAgMGY4YjU2ZWYwZjdmNGRlMTk3MGViNGQwODc4OGExYTIzZGRkYThmMSBsZWdhY3ktdHJ1bmsKKzc0MjMxIDdmZDlhZGM4MTI4MDBjMTM1ZGYwZDI2YjQ1MzNjYTg4N2E0NzUxMzYgcmVsZWFzZTI2LW1haW50Cis3NDIzMiA0NDMxODIxMGIwM2M3MGFiZWQyZWQ3NjUxMTY3OGYzODk0YjY1MjVhIHB5M2sKKzc0MjMzIDAxZjg0OGVhMTEwYWUzZDU5MGM0YjJmMzBmYWZmZDMxZjkzNWUwZWIgcmVsZWFzZTMxLW1haW50Cis3NDIzNCBkYTk4Y2JlYmRhY2JhMjlkMDY2NDhlOWIzYTdhZjQzZjViNWI1MTg1IGxlZ2FjeS10cnVuaworNzQyMzUgYmIwYjdkMGU1NTBkODBhODc5ODI3NmRkY2RmMDllMWI0MTU1ZTNhZSByZWxlYXNlMjYtbWFpbnQKKzc0MjM2IDA3ZGJkZjAzZThmNTAzMDcyOThhMmYxNTEwY2EyYzc3MWRlYzBiOWUgcHkzaworNzQyMzcgM2Q0NTM2N2NjNjJhYTdmZmI5OTIyYTQ2OTBiNTJhZGEzNjY4YWExMyBweTNrCis3NDIzOCBhZGY0ODRkZjY3OTQ4ZTQ4YjE2MjU2YmUxZWQ3ZTdkNDE4ZjBhZTU3IHJlbGVhc2UzMS1tYWludAorNzQyMzkgYWE5ZmY0N2JkMWM4ZWU1NjU0OWIxNWU3YWViOGY1MGE5ZmI5ZmQxMiBsZWdhY3ktdHJ1bmsKKzc0MjQwIDU2YjJkYTkzYWQ5YzgyMzJkZTVhYTBiOTVlYjMyZjI3MWUzOTA1ODUgbGVnYWN5LXRydW5rCis3NDI0MSA4OWFkMjBhMzJhMjYwMzEwNzg2MzVlYjY3ZGYwYTQ3M2QxZjQzZDQ1IHJlbGVhc2UyNi1tYWludAorNzQyNDIgYmNkMzllZmZkMzFlMzc4NmZkYjZiMzY1ODdlYTIxZmEyMDJiOTZjMSBweTNrCis3NDI0MyA4ODk4ZjI4ZTZkMmMxYTk1NGE2NWE2YjBmMDQ0NGE3NmExYzk1NWY0IGxlZ2FjeS10cnVuaworNzQyNDQgNTcyYzE4N2RmNjEyZTI3NmEyNzNmNjdjOTVmODgwM2ZkYTMwZDI5YiBweTNrCis3NDI0NSAxZGZkNmY0MDczMzZjYTAyNzMzYWU0NTI5MjI4YjkzYWRhZmIwYzhkIGxlZ2FjeS10cnVuaworNzQyNDYgNWUwNTg4OTA5NmNkMDgwZTcxMjIwMjM2ZmYzNTcwODhhMWMwY2FlNSBweTNrCis3NDI0NyA4YTAxN2QzY2I5MjhhZTcyZWEwMTBiOTNhNjQyOTA4YTQxOWYzN2UwIHB5M2sKKzc0MjQ4IDlmZmZkM2VkYjY2ODlmZGFkMjU1NDQyNzkyYmZiMGM4ZmJkMjUwMTQgcmVsZWFzZTI2LW1haW50Cis3NDI0OSBhNWQwMjVhZDIxYzhlYTE0ZmFkMzgwYWQwMmI5MzJlMzIyOWFlOGU0IHB5M2sKKzc0MjUwIGYzNTdlMjYwM2Q5M2JlYjE1ZmFjYzU3YTNmN2ZjYmZiNDQ0ZDNjYjggcmVsZWFzZTMxLW1haW50Cis3NDI1MSA2MGIzMWYwZGIwMTYzODQ2YWUyYTJhNmY2NzllNTZhYjI5MmVlNGI2IHJlbGVhc2UzMS1tYWludAorNzQyNTIgZWUyNTQ1OWU5YjkxZmFjYWM0NzZkNDdkMWI2Y2IyNjVjMTJkNDJiZiBsZWdhY3ktdHJ1bmsKKzc0MjUzIDNlZDE1OTNkZDE3NDcyMDI3NmJhNzEyNThjMTAzYmNjNTVkNmQxMmYgbGVnYWN5LXRydW5rCis3NDI1NCAxNTY4M2MwZWFmMjg2MzJkNjI3ZWEwYTUyMGJmZjYxZWE4Yjc4MjhhIHB5M2sKKzc0MjU1IDY0YWY0MTYwY2YxZWI5ZjkzZGRhYzg3NjczY2EwMDQ1ZWViZTgxMTYgcmVsZWFzZTMwLW1haW50Cis3NDI1NiBmYTE0ZjgxMzIyY2UwNzE4NzhmM2Q2Y2QyNWI2MDA0MzNmMGM3ZTU2IGxlZ2FjeS10cnVuaworNzQyNTcgMWRmMjgxYzllMTgyMWZjOWM1MGRlYzg3ZjhmMWM3MzlhNzc4NWVkZiBweTNrCis3NDI1OCAxMzc1OTlhY2I4YmFhMzE4MDA3NjJjN2ZkNTFmYzdjNDBiY2M0M2YzIGxlZ2FjeS10cnVuaworNzQyNTkgOTM4ODNmMzc4N2I1NzliOTc4MTE0MjE4MjBiODM5YmM5MjhiNWZlYiBsZWdhY3ktdHJ1bmsKKzc0MjYwIDRmZTU4MDFiZjcxMjE3YmE0NzY4ODQxNmUyMWY4ODhkY2I3MWEzYTMgbGVnYWN5LXRydW5rCis3NDI2MSA1YmU0YzA5ZTRhNjY2MjhlNDk4Y2EzYTUzOGRkNmVhMTc3YTY5MDUzIGxlZ2FjeS10cnVuaworNzQyNjIgN2FhMGQ2ZmE2MzU5ZjE3OGEzNGY2MTNmN2QzNDI1NTdmN2E3NzZkMyBweTNrCis3NDI2MyBkMjlkMWQ4ZTJjZDYzNjlmMTIxNGNiNjA2ZjFmNjJmZjNkYWE2MTllIHB5M2sKKzc0MjY0IDNlMGNlOTRjMmUxZTBmMTA0MTc5NDBkZmUzYzhhMTIzZDViNzU4MzcgcHkzaworNzQyNjUgYmQwM2Q2ZDJlZmIwOTUwZGMzNzc3OWFjMzc2YTlkZDM0MzFhNzcxNyBsZWdhY3ktdHJ1bmsKKzc0MjY2IDRkNDRmMmEzOGU1MWVmMjA4MjE0ODdmZjgxNzk3MTQ1NmZjN2Q5ZGMgcmVsZWFzZTI2LW1haW50Cis3NDI2NyAwNTM1NzQxYjU3YmIyMGI2ZDY0NzViM2RkZDVjZTI4ZmZhMzg4ZGRiIHB5M2sKKzc0MjY4IDY1MDUwZTgyNmE5NmRiNTYwNWVkN2RiMzJiMzQwNjA3YjE4YzJmNWUgcmVsZWFzZTMxLW1haW50Cis3NDI2OSAxNmZhNTcwNjI5ZTNmNDRjY2NiNzkwZDJmMDczY2JkY2M0ZWE0OThhIGxlZ2FjeS10cnVuaworNzQyNzAgMTk2MTFhMjljOGRlN2U4MTEyMTAyNzQ0YzE0ZjM3YmRiMWNhNjMyZCByZWxlYXNlMjYtbWFpbnQKKzc0MjcxIDU1ZTAyZmE3YTExYzBlYTk5YTA0ZGQ2MDNhMzc0NjE1NjcyMWRlZGIgcHkzaworNzQyNzIgMDQxMjE2MTU5NTVhMjhjMDUzNmRlOGNkNDcwYjJlN2VkN2U5NDFiZSByZWxlYXNlMzEtbWFpbnQKKzc0MjczIDJjN2UwNzZiNGNhOWQ4MjhlM2EzMTU3ZTVhZmNjNWZhM2QxNjRjNDkgcmVsZWFzZTI2LW1haW50Cis3NDI3NyAzYWYzZmIxNjg2MzgzYWYxZWFmMTRiNGYxNjAxZjA5NmRlNjhhMTYwIGxlZ2FjeS10cnVuaworNzQyNzggODNiNDZhNTk4OGIwZWI1MTBkZTQyMzg4OTdkNDk4ZTc3MWUxNjgxMyBweTNrCis3NDI3OSA3NDZhODE4YmRkMzUyYjZhOTQ4NTkzMzI1NzVhMTBlMmI0MTZiNGExIHB5M2sKKzc0MjgwIDg4MjU1Y2I0NTM0ZGFkNWU0ZTY1YmUyOTg5ODA4ZGUwNDAxOWY0NzIgcmVsZWFzZTMxLW1haW50Cis3NDI4MSA3YzIzZjBiY2NhODVjZWM1ODMwMTYxNDI5ZmRmYmM1YTM1YmFkM2M1IGxlZ2FjeS10cnVuaworNzQyODIgOGI0OGIyODJlYmE5Mzk2MGMwNGNiYzRhNWVkZjYwMjRlYTFlNzlhNiByZWxlYXNlMjYtbWFpbnQKKzc0MjgzIDRhZTA0ZTBmNjg1MDM4ZTRkNjlkZDk2YzJmNjE5NzM4OTFhZTMxZmMgcHkzaworNzQyODQgNzk3ODllODlmZjc4NDg1YTNmZDdjNWY4YTYwYWM2NjNmYTE5ZGVmOCByZWxlYXNlMzEtbWFpbnQKKzc0Mjg1IGQyNTM3MzI2NjcyOTc2Mzc2OGMyNTJkYTk5MTdjM2FmMmQ5MDU2MzcgbGVnYWN5LXRydW5rCis3NDI4NiBmNDJlMDdhYjMyNmVjNWFkODk2OWJmNTQ3Yzk4Nzk1NGY3Zjk1YmU1IHJlbGVhc2UyNi1tYWludAorNzQyODcgNDZmOWJlMjUwOTEyZjYxMzVkMGUwNzQ4YjA5OTg3ZTMwZjYxMzE4MSBweTNrCis3NDI4OCBjZmJlZmRjYzI2ZGIyZjUyZjI5ODcwZDA2YzlhMzAwZjJkZjBhMmM2IHJlbGVhc2UzMS1tYWludAorNzQyODkgZTFhYzU0YmIwOGVkMjljMjkzMzUxZWU1NjVkZTBmZTNlMDk4NDFkNyBweTNrCis3NDI5MCAwOGVjYTZlOGIwYmVmYmIxYzhkZDM5MDAzNGM0MGZiZGYyNTYzYzQ1IHJlbGVhc2UzMS1tYWludAorNzQyOTEgNDZlNDZhMGU2MjJlNjAyZjBlMjk0Y2U1ZjU2YTU1YjQyYmE0YzdiMSBsZWdhY3ktdHJ1bmsKKzc0MjkyIDAwMjk0NmI1MmZjM2U3ZTc2MzI0MDY2ZDY1NTBmZGViNDA0YmQyZjEgcmVsZWFzZTI2LW1haW50Cis3NDI5MyBkOTljYWRmMGU1ZjBjOTYxNDcyOTEyMDNmOTBlYTQ0N2M4NmIzYmQ3IHB5M2sKKzc0Mjk0IGNmYTdlOTQzZmZjM2ZmMDE5NGY0NzlkZTMwZTBhNzE2MTdkYWRhNjMgcmVsZWFzZTMxLW1haW50Cis3NDI5NyA1MDJjZTI4ZmViYWFiNzRjZDI2NDU1YTlkYTI1NWM2ZTFiNDQyNTAyIHB5M2sKKzc0Mjk4IGZhNmZkMWVkNzM3ODgzYTk3YzJiODZlNWY0YzBhZTM0NjYxYjVhMzkgcmVsZWFzZTMxLW1haW50Cis3NDI5OSBkZDRkYTc1ZWJjOTcxNWRiOTMzOTIzY2Y1ODc5NGZjZTVlZmJlZTkwIHJlbGVhc2UyNi1tYWludAorNzQzMDAgMjcxZDM4MmRjYWJkZmZjMmVlZjI0YzNiNWZjOWZlNWE5ODBhNTVkNyBsZWdhY3ktdHJ1bmsKKzc0MzAxIDY1OGRlODQzODFkN2YzN2M0ZjJlN2RhNTZlMWNkMDJjNDNjN2ZkNmQgcmVsZWFzZTMxLW1haW50Cis3NDMwMiA1MzQ1ZTNiYzllNDE2MmJmZjVkZDhhNTIwODVkM2NlMTFhNDA3ZmE2IHB5M2sKKzc0MzAzIGEwZTFkNjI3YjcxODM1NTUwZGI0MjI4NTM5Zjk2MjBjMDE4MmYwZTkgbGVnYWN5LXRydW5rCis3NDMwNCAzNDI3N2RhMzhlMzg4Yjc5ZDg4NDE3YjFiODk3YzFmNWZiZGRmNTkxIHJlbGVhc2UyNi1tYWludAorNzQzMDUgY2Q5ZmE4MWVhNDgwMTM4OTkxODBjOWRkYWIxY2I2YzhhYWE0YzMyNiBweTNrCis3NDMwNiA4ODQ4YzQ5ZWQ1ZjU3NzQ3NDg5YTQwZTQzZjNlMDEyNDdlNGMyZTI2IHJlbGVhc2UzMS1tYWludAorNzQzMDcgMmZhZTgwOTQ1MGNkMTFmNzEwYTZmN2E1ZTFkZDk2MmE1ZWYyNWQ0YSBsZWdhY3ktdHJ1bmsKKzc0MzA4IDZhMDVlYzQ5M2NlOWUzZjE4YzY5ZWRjMjMwNGM3MzUyNWI5NjViNWEgcmVsZWFzZTI2LW1haW50Cis3NDMwOSBlODAyNWI4NWFiMTgyN2M2NTAzNGM5ZmNmNThhNGI3NGZiZjY5OGU1IHB5M2sKKzc0MzEwIDNmZjE3MjVmODM3ZWFlMTY2ZTBkOWM0N2MzNDI1YTI2ZGJlMzMwNTggcmVsZWFzZTMxLW1haW50Cis3NDMxMSA1ZGUxOWM1MDExY2E5MzY3NDEwOTM2NjU4OWY3OGJhNzllYWQyNDEwIHB5M2sKKzc0MzEyIDVkODc1ZmFkZjYzZjUzNThjNzNjNjlhOWM1M2Q2ZWI4OTI2MzEzMWQgbGVnYWN5LXRydW5rCis3NDMxMyBiMTc3NTE4N2FhMzBlNzM3MmUxODM3NDY3OWNhNDBiOGE5MTZjYWQzIHB5M2sKKzc0MzE0IDA4Mzg2Yzc5ZTM0ZjBmY2RjMjc0MzljYmUzMTlkMGMzMzhiNGM3ODQgcmVsZWFzZTI2LW1haW50Cis3NDMxNSBlYjIyNDQyMTk0MTk5OTI1ZWU3ZjYwNmUzOTk0YzgzZGU5OGI1NmExIHJlbGVhc2UzMS1tYWludAorNzQzMTYgOWE0M2ZhYzg3NjBjMmY5M2Y5NzJjMDM0YzRlMTBkOTQxODZlMmRhMyBweTNrCis3NDMxNyBjOGY0YzEzMmQ2ZGIwNGU5YTQzZTgxNzRjOTVjMzc3ZGU4OTE5ZjU3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMxOCA2NDI0ODVkYmZmYmFhMTAzMGYzYjE5OThiYzhjNjBmN2MwNjcxZmJmIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMxOSBiZDFiY2NkOGUzNDRiOWZkZDQzY2UxMzY2YTU2MmQwODI2M2JkYTczIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMyMCBiYTgwMmMwYjUzOGE3OTY5MjM3NjZiM2VhYTg5M2E2ZGMxMjg4NjRjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMyMSBmY2VhN2JhNGIwMzRkY2IyNDQwODE0ZWZiOWI4ZDBiZjhjYjgxYmUzIGxlZ2FjeS10cnVuaworNzQzMjIgNzU5NDJiYzc0ZjcxMjMxMzMyZmNlNmI2ZjIzMmU1MjQ0ZWY1NzAwMCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzMjMgMGM0ZWU2MmRmMGUxOTBiZTZlMGYyOGVjMTg1MzBhOTFkOTM3MTU5ZiBsZWdhY3ktdHJ1bmsKKzc0MzI0IDE5MmUzNDQ0Yjg4OGZhNDUzMWY0ZjA4OWU5MzFhMTg0M2U3Y2Q5OWEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzI1IGU1NzMzZDU4ZmRiMTVhNzgwNGFjNjlhNGUxMTlhOWExZTQzNzU2YTkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzI2IDVhMTMwYjc1ODViMWNlNWM1MTUyNTFkMzg2YmVmZTUwNzAxNDc1YmMgbGVnYWN5LXRydW5rCis3NDMyNyA2NWQxNjgyZGNkNWUwZTU4YjBkYWIyYzE1MWYzOWE0YmE0ZDM0M2Q3IHJlbGVhc2UyNi1tYWludAorNzQzMjggMWJlM2Q0MjdhY2EyNDQ2NmEwYmIxMGFiY2Y1MmM1OWVkYWMyZWQ0NSBsZWdhY3ktdHJ1bmsKKzc0MzI5IDA2Y2U5ZDg0NjhjMmYwNjY5ZTllNmIwYjE4NGY4NTFhYzY1ZGUzNWMgcmVsZWFzZTI2LW1haW50Cis3NDMzMCA3ZjNmNmI1NWU0N2EyOGM3ZmNlNGRmMTU5Zjk4NTZjYjIwZTRhOGEyIHB5M2sKKzc0MzMxIDlmZGYxODJmMTlhOTEzZDEzOTM1OGI3YjJiZmNiZjE3NGU5YmI2ZGIgcmVsZWFzZTMxLW1haW50Cis3NDMzMiA5M2E5NmQ2ZGZmYjVlOTMyZGFlMGM1NTA2YjA5ZDg4NzA5M2M1NjRmIGxlZ2FjeS10cnVuaworNzQzMzMgN2I2NmNkMDJkNjBiYTgwMWE1MDk4NzhiZmRjMjRiNjU3ZTQ2MTY0ZSBsZWdhY3ktdHJ1bmsKKzc0MzM0IDMxNTk3MjZkMGU2NTljYzY4NWJjZjhmZWFmOTJkZjRlYjJiOTI4ZjMgcHkzaworNzQzMzUgNGYyMDRlYjc2ZTA3YTI2YTY2N2Y5MzAyY2Q0M2Y0YmUwMzMwNDBhNSBweTNrCis3NDMzNiAyZjY0MWUzMzdjOWY5NmE5MjlkNDNiODU1OTQ0MmZlZjFkNGU4YTIzIGxlZ2FjeS10cnVuaworNzQzMzcgMDBmZDYyOTdlYmU3YjBkZjhlMWEwOGI2ZmI5MDhiNjcyZjUyZmM5MCByZWxlYXNlMjYtbWFpbnQKKzc0MzM4IGYxMzYwMmE4NGRhYWFmZDZmMmMyMTgwNjQwNzU4ZTNkNTFlNTU1YjQgcHkzaworNzQzMzkgMzA4ODc5ZWM5MDIzNGRlMzVjNWNiZjAxMDg0YTAwODQ5ODU4NTEwMSByZWxlYXNlMzEtbWFpbnQKKzc0MzQwIDE5ZTdjOTk2ZTY3YWViZTQ4M2ZjNDIxNmU1NDU5OGZhOTRhNDcyMzcgcHkzaworNzQzNDEgZWZhODgxMWIyNTBhM2M2NTlmNWFhNTYwZDkzYzRhNTczYTJmNDgyMCByZWxlYXNlMzEtbWFpbnQKKzc0MzQ4IDg1YzBkOGQ4M2NiZmZiNjJhYjgzODYyNTIwMjliNmU5OTAzNDUyZjkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzQ5IGIwMDJlOTJhMzZmNzc0NjhmOGY2NjhiZTEwY2YwM2U1NGEwMGVlZTggdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUwIDQxMmE4NWNlNTg0NGFkOGQ2ZTkwMmI3YzBhMjJiMTYxODBlNmM1MGUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUxIDk0ZDhjMzQxZmI0MmYyMjQwZWM5MTI2MGNlYTg1YTg3M2E5OGQ0NjIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUyIGNkMjBhOWVkODRlNWEzYmYxMGRmYjQ2ODIyMTJjNDMwODc1MzVmZTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUzIDExMjg2YjQ1M2ZjZmZiMzk1NTczNDIxM2NhNDE4YTZiM2Q5YjAyMTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzU0IGU0YTY3NDRjZTRhOWQ3YWY5NTczNjYwNzA1NzE4NTEwNTgwNjBiMjcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzU1IGNhNmU5MDQ3MGQ5NmZkM2FjYzI2ZjI1ZWQxODVkMGFjMTMzNGQxYWEgbGVnYWN5LXRydW5rCis3NDM1NiAzNjFhMDNhZDNjMzczYmM1Yzc1N2Y2ZmVjMjFmOTJmMWVhNWQyNTU1IHB5M2sKKzc0MzU3IGJiZWE5ODE0OGUxMjY2MTA0NTFlMTNiNTQ0YTY0YmI5NDQzZjQzYjMgcHkzaworNzQzNTggNWM4YjIyMzhhMmY1MjRjOGQ3NDQ3MTUxNWUxZTJkYjM4YzAwNjdkMyByZWxlYXNlMzEtbWFpbnQKKzc0MzYwIGU1YWViZDAzOGYwYzJhZDI1ZTVkNmQxNTkwZDZkYTgzODYwYzMzMmIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzYxIDJjNjRlOWJmYjFiNjY2NWU2YmViZjRhYjQyNmY0MTg0NWUyNWNkZDIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzYyIGIwMTNiM2M4YzljN2Y1ZDllZTMwZjViN2FkMWZiNzJmMThhZGY3M2IgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzYzIGMxOWU3OTBkOTQyZjc5MDlkNjZhY2JhOGUyOTYwNjdjMzJjZTAwOTAgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzY0IDAwMjVlMDcyZmU5N2FkNzkyYjdlNWRjMWQ3MWNhNmUzZDBiZjdkMDEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzY1IDEyM2M5NWZlMDRiNjA4MzA1M2Q2MTg2YjRhMzU4OWIzZTU0ZTcwYmEgbGVnYWN5LXRydW5rCis3NDM2NiBlZjU2NTM1ZjUzNTYxODA4ZTUzMTgxZTQzZDc5YzcwMGRlMTkyZmMyIHB5M2sKKzc0MzY3IDRhMWFiMmQ3MDM4NTlhNGI4Yzk4MDgyNWQ0NTEyMjM5MGE1YmQwOTEgcmVsZWFzZTMxLW1haW50Cis3NDM2OCA5ODQ5ODVlYTI0YzRkY2UyOTQ5NmQ0NDkzODgwMTg1ZTg2OGFiNTkyIHB5M2sKKzc0MzY5IDRhOWI4NTkxNjQ5ZmJkNmU0NDQxZWVkY2IwYjY4YzJiNGFjNDYxNzUgcmVsZWFzZTMxLW1haW50Cis3NDM3MCBlMDBiNTBhM2Q0OTlkNWUxZDRhMDRkMDNiMGM1MjM5MDgzZGZmYTJmIHJlbGVhc2UzMS1tYWludAorNzQzNzEgN2I0OTVjOGYyYTI0MGVhODA3NTA0YzU4ZGNkZTE3Mjg4MzQxODFlNSByZWxlYXNlMzEtbWFpbnQKKzc0MzcyIDFhY2QwMjc3ZDIyNTMwZTVjMTJiOTk5MjVlZmQwOWE0Y2Q3ZjI4YjYgcmVsZWFzZTMxLW1haW50Cis3NDM3MyBhNDkyYjJiYzk1MWI0MzRlNTc1OTkxODkzMWU4ZWM2Nzg3MjU4MDgwIHJlbGVhc2UzMS1tYWludAorNzQzNzQgNTA5NWE1Mjc2ZDhjMjY2NzBjYjEwZTM2NTdhODRlZmUyMDI0YWEzNyByZWxlYXNlMzEtbWFpbnQKKzc0Mzc1IDVmYmFjMDljMGU5MWRiMmZhYjY0NGM5ZTBlYjg1N2FhZGI4M2Y1YzMgcmVsZWFzZTMxLW1haW50Cis3NDM3NiA1OGMxMGNmMDQ2MTY3ZTEwMDFhYTVlOGUwM2NkMDgxOTdkOTMyZWJjIHJlbGVhc2UzMS1tYWludAorNzQzNzcgZGFkMGE1NGY1YTU4M2ViOTNkOTM0YTNkODYzY2UwZmQ5Y2I0ZTQwZiByZWxlYXNlMzEtbWFpbnQKKzc0Mzc4IDU5YjZiODU1N2EzMzI5ZjBjNjIyMGI1ZmU5ZTJmZmMyYmUzMGFkZjEgcmVsZWFzZTMxLW1haW50Cis3NDM3OSAxN2U3MTQ4NTI4N2Y3MWYxNmIwZTUyNDVhNjUwMTlhZWFjZDQ0NWY5IHJlbGVhc2UzMS1tYWludAorNzQzODAgNTQ2YWExMzRkNzczN2EzMDcxZWM0YWFiNTZmYjUxMzliMjZiNTIzZCByZWxlYXNlMzEtbWFpbnQKKzc0MzgxIDc3MGE5M2M3YWJmZjc3YTc3NDA0NzNkOGJiNDJlNTBmZWIzYmJkMzAgcmVsZWFzZTMxLW1haW50Cis3NDM4MiBjNGQ2Yjc3YzM0NjgxNTRmNmNmMTQ2OTAxNTk4Y2YzN2YxNzNjMjgyIHJlbGVhc2UzMS1tYWludAorNzQzODMgMTA5NDBiY2VkYzk5ZTQ3ODU1ZjNjYjNlNTkzZTY5NDFkOWViNWE2YSByZWxlYXNlMzEtbWFpbnQKKzc0Mzg0IDBiYjIzMjA3OGI4Y2I4MTVmMDk4MzkwYzFjMTE3NDU5ZDc4MjY3NjEgcmVsZWFzZTMxLW1haW50Cis3NDM4NSBkN2YzY2RmMmIwN2Y3ODlhMWFjYTY3ZGI2NTNiYTljY2Y4NTQ2YzAwIHJlbGVhc2UzMS1tYWludAorNzQzODYgMGY3YTZlYjE4MjIzMTc0ZDY0NjY0M2I1NmI4YjE2NjgyOWQ5MTk1MiByZWxlYXNlMzEtbWFpbnQKKzc0Mzg3IDdlZTdmZGNlYTBkNzE2ZmE5YWJmM2QxODk1NWM1MWNhODE0YmUwMTUgcmVsZWFzZTMxLW1haW50Cis3NDM4OCBlZmU4MDhhNWY1OWU4ODk3YjU1NjM5Yjg4NWVkYWU4OWY5OTgzM2FlIHJlbGVhc2UzMS1tYWludAorNzQzODkgNzQzZmEyODJkNzQ4MTM4NDk5MDA0NDhmYWYwNmNlN2QzZjdhMjQ1YiByZWxlYXNlMzEtbWFpbnQKKzc0MzkwIGNlNjY0MjIxOGZmZWMxYThjYzY5MTRjMzAzZTY3ZDQ3NDlhNzk2MzUgcmVsZWFzZTMxLW1haW50Cis3NDM5MSAzNGVhNTg4YWMzYzU4ODNjYTYxM2Y0NjNmZjk1ZWJmMWZlODhjZjFhIHJlbGVhc2UzMS1tYWludAorNzQzOTIgOTRjMjhiYTY1NmJlMDdkNDNlM2EwNmQzYzQzOGU1MDM4ZDViNmE3NCByZWxlYXNlMzEtbWFpbnQKKzc0MzkzIDY4MGFkOGVlZDMzYjI3ZDkwYTE2MzQyMmVjNzQzMzA2NThkNjIxMzggcmVsZWFzZTMxLW1haW50Cis3NDM5NCAxMmZlYzczY2I4ZTUzZDk2MDkxYTNjMzRiZGZiMTIxYWZiNDhmMTcxIHJlbGVhc2UzMS1tYWludAorNzQzOTUgNmUyYmEyMzc2ODMzYjZiZjFjODViZmE2ZDQ3Y2JhZWRkNDM4NDgzMiByZWxlYXNlMzEtbWFpbnQKKzc0Mzk2IDdlNTE0MTcwNDZhYjg3MTBiODAwZjJjMWI3YzlmMzIwNmVkOTNmZjUgcmVsZWFzZTMxLW1haW50Cis3NDM5NyBmZjZlZWEwMTdhN2Y0NjQxODQyYjFmZjI4OWU1ZWU5MzI2NjU1YWMwIHJlbGVhc2UzMS1tYWludAorNzQzOTggNTQxNGZmNzM4OWVlOTgxZWQ3MmU4MDQ4MzE2NWJiNGUwYzNmZDVjYyBweTNrCis3NDM5OSA4N2ZkZjI3OTVhN2NkNDQzNjg0M2FlMWRkNDA3MzI2NGMwM2FiMjUxIHJlbGVhc2UzMS1tYWludAorNzQ0MDAgOWQ0MDU4NmE2YWZjZGUwMWVmY2ZiNmZhOTU2MzRjYzAwZGFjY2VmNSByZWxlYXNlMzEtbWFpbnQKKzc0NDAxIGY3MjQzMTk5ZDBiMWNjYjEyZGVhZjY1OGQ1ZGUxYjE1Y2YzNzkyMjIgcmVsZWFzZTMxLW1haW50Cis3NDQwMiA0ZDM4ZTUxZTdjZGM5YTk3OTQzZjY3ODUzZmMyOWUxMTBkMTkzYjdkIHJlbGVhc2UzMS1tYWludAorNzQ0MDMgMDA1MGI1NzExZmFhNmI3YjhlYmFlZWVjN2Q3NjFkZjVkM2NhNDgyZCBweTNrCis3NDQwNCBlMDUzMjJlZmNhODU3YTlmNTFjMGE0YzU4MWU2YTBjMjhmZGI2MzM4IGxlZ2FjeS10cnVuaworNzQ0MDUgYmUzNDUzMWM2ZDBiNzQ5Zjg1OTlmODVlZDAzNGRlOGVjZDBhMzI5NCBweTNrCis3NDQwNiA1NmU4YzIyZGY3MWYzMTY2OTc2NWQyMmM0MzkyZDBlZGVjNjhlNjY2IHJlbGVhc2UzMS1tYWludAorNzQ0MDcgOTFlNDBlYjQxOTU2YTA0NWQxMDIxMjcxZmU1Y2YyNGY1MjE3ZDE3ZiByZWxlYXNlMzEtbWFpbnQKKzc0NDA4IGEyNjdjNjA0NDY1ZjM3NGQ2Mzg5NGI5NTc4NTE5MzY0YjQyMmM1OGUgcmVsZWFzZTMxLW1haW50Cis3NDQwOSAwMTQ4NDE3ZTEzMDFkODkzZDhkNDUxM2U1MTcwYzJlMzI5NGQ5ZGJkIHJlbGVhc2UzMS1tYWludAorNzQ0MTAgYmUzNDNhZjQ5MDk5OTUzNTUyMjUwNmVjM2Q0M2U0MmY5YmRlOTYxMyByZWxlYXNlMzEtbWFpbnQKKzc0NDExIGFmMTEwYTQ4ZDE1NDdmYWE2ZTRkZTI1MGU1YTY4MTlkYTY4NzA0YmUgbGVnYWN5LXRydW5rCis3NDQxMiA3ODVlYzM0NDc2YmFmYTU4NTY2ZTc3Njc0M2U4YTk5ZmYxNDc4N2FjIHB5M2sKKzc0NDEzIGUzZDUxMzE5YjlkMGVjODM3Y2MxMzc2ZGM1NzE5ODBmY2Q3NGE2ODAgcmVsZWFzZTMxLW1haW50Cis3NDQxNCAxMjI0YWEzZmI2YTBkNDY3NjgxYWNiMGFiN2RkNzBkZjczY2QyM2I2IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQxNSA3YzhmNDgxMTYwYzIyZTA3MTJiNWVjYTMxZmU4ZjE5ODBkYzViNTVkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQxNyBmMmExMmY1MjU5ZTdlZGQyMjNjNzUwZTA1ZWY1NjE2MmQ2YTUzNDVlIHJlbGVhc2UzMS1tYWludAorNzQ0MTggZjhkYjQ5M2RkODRmYjgzMGQ5YWNiNDBjYjM0NGFlNjBmZjI5ZTNiOSByZWxlYXNlMzEtbWFpbnQKKzc0NDIwIGZhZjhhMTAwOTkwZDY2Y2Q1MTAxZDQ4N2JiZjlhZTgwN2QwMmUyM2IgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDIxIDNhMzVlMzNiMDcxYmQ0ZWQyNzZhMWEwZDlkMDA1NjAyZjNhMmI0MWQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDIyIDliYzk1ODhlYjY0YzE5MTA2ODIzYWZhNWY3ZjI2NjlhYmNhYzViOGIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDIzIDM4MWM2ZjliNzRhZWFlNmNjM2ZhNWRmYWE5YjY4YzA5M2NlZTQ1ZjAgcmVsZWFzZTMxLW1haW50Cis3NDQyNCA0OTYyOTEwMzc1ODIwOTY2MmViMzk2Mzc4NGMxY2MwNDU1ZWY4MTg0IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQyNSBmYjU4NTdmOTAzZmU5Mzc1YWJkYTMzYWMwNTQ3NzlkMWNhODNlZTRjIHJlbGVhc2UzMS1tYWludAorNzQ0MjYgZmJmOGI3OTFjZTgxMWI0OTAzYzQyMGI1NWY4OGNkNTA5NDI2MmY4MiBsZWdhY3ktdHJ1bmsKKzc0NDI3IDM1ZWZiMTA1NGVjNmNlY2E3MjAxN2E1ODcyNjNjYjZhOTI1NzM0MGIgcmVsZWFzZTMxLW1haW50Cis3NDQyOCBhMWFkMTkyZjhkZjU2NDM3MzkwYzJhZDg4Y2QxMzJkOTYwYjA2MjBkIHJlbGVhc2UzMS1tYWludAorNzQ0MjkgOTc1MjJlMjdiMDVkMGM4MjM4ZGQ3NGY1NTdmOTRjMzVhNmIyNmNkNSBsZWdhY3ktdHJ1bmsKKzc0NDMwIDlhNmJlYjFhOTM5NzU3M2RkZjlkOGQ5OGJkMTY0YWM1Y2MyNDg4NjEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDMxIGVlYWZkODcxNjQxMGE2YzRkYzNiNzk4YTMzZTNkNTc0YTM2N2UwNDUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDMyIDZhYzE0NzhkOWIwZTY2MTk4ZjlmYzY3OTc1MjBiOWFmOTU1OTJmZGIgcmVsZWFzZTI2LW1haW50Cis3NDQzMyA1MTUyYjUzNjYxMmU0ODc4ZmQwMGQ1NzY3YTVhNzIxYTQ3NzhjMzE3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzNCAwMWRiNDEwZjJmMjA3ZmYwMDVlNTlhN2I5M2QzYmIxMDIzOGQxYTdmIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzNSA4OTkyN2Y1ZTgzZDZmNzk0NTEyNjkyNTZhMzVjNWQxOWMyOTc4Y2E5IHB5M2sKKzc0NDM2IGQ1YTYyZGQ5MDc4OTg4NzgwM2I5NTAxNzBjZGQzNjc4NDY4NjVjMmYgcmVsZWFzZTMxLW1haW50Cis3NDQzNyBhNWU2ZjNmZjJlMmY2NDc5OWY4YzA2YzBkYjhmMTdlMjdmYjQ5ZDAwIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzOCA0OWE0Mjg2Njk3ODhkNjc4ZDUyNmM2NjdmNmZmMzlhNjY2MTZiNjYyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzOSA0Mjc1OWE2ZWU5OGFjNWQzNmFjMjA2ZDEwOGM1MTAzMjkzZDM4YWY3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ0MCAxZmM4OTAxNGJkODNkYjA4YjVlNWE5YmU4ZDcwODVjYmIxYjAwMWM5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ0MSBmZTI4NjQ1YTYxMjI2ZjgwNTUyMTgzN2Y1ODI0YjhjZjJkNzQ2ZTY3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ0MiBiZWIxMmJiNzc5MWJmNzc5MzNhMjc3ZjI3NGRlNzQ3ODkzZDk2ZTU5IHJlbGVhc2UyNi1tYWludAorNzQ0NDMgMWZiN2UyZjdmMGJiNGUyNGNiZWE4YTNkNjM3NTMwN2JlOTY2ODVhZCBweTNrCis3NDQ0NCA1ZWEzZDQ2NzU2NGE1MmExZTkxODNiNmVjZGIyOGI2YzUwMmJkMDA2IHJlbGVhc2UzMS1tYWludAorNzQ0NDUgNTFlNWE0MTRiM2MyNDdmMmY3NWE1MzgwZGExZmJjODkwMmExNWNjNSBsZWdhY3ktdHJ1bmsKKzc0NDQ2IGEwZjgwZGMwOWRmZTIyODlmOGM0NTIxNjNkNjdhZjI4YTJkNzkxN2UgbGVnYWN5LXRydW5rCis3NDQ0NyBjNmQzMjc2NmU5NGM4MGI0NmEyYzY4M2Q2NmYyNjY0ZGY3ZjE2Yzg5IGxlZ2FjeS10cnVuaworNzQ0NDggYjdhNTcxZDRhYWE3ZTFmNGE0YmI2ZjdhNTA3ODI4ZGFmYTc5OTNmMSBsZWdhY3ktdHJ1bmsKKzc0NDQ5IGFlODE3ZmE0ZTYwNTY2ZWFjYjQyODY3Zjk0MmY5YmJjZTI3MTNhMWUgbGVnYWN5LXRydW5rCis3NDQ1MCBlNGE4M2U5MTUyMWEzNjlkYzhkODI3NjNiMzViNDg4OGMxMzgwMDE3IHB5M2sKKzc0NDUxIGQ3MjRjYThjNTgyMzQ3YjNhMTA0MDdmZDQ2YzUyZWYyYjdkZGIzMTQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDUyIDQxYjAxYmI5MDZlMzk2OWNkZmFhYzY1MjBlYTU4YTRhZWQ0YmRlZjggdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDUzIGQ3MTQwYmJjNjQ3M2JlNDliN2I2Mjk4MTZlNmY5OWE2NzgyM2E1NDkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDU0IGQ0NGUzYWE0MmE1YmM3ODE3MjYzN2ZhYzY4NTYwYjQ2ODMwODk1ZTAgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDU1IDAwMjA4NzE4N2IyZmY2NzBmYzA3MTM2NzYwYWIwZDkzN2E0ZDQ4MzQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDU2IGY5MWMxZDI4ODM0MzQ4OTU2NmRhYTdkN2FkZTVkMmQyNmNlZTY4MmIgcmVsZWFzZTI2LW1haW50Cis3NDQ1NyAxMTNjMGI4NmZkNzQ5YTdmY2JmODZhYzk5YzYwNjE4YzY0ZmU5ZjRlIGxlZ2FjeS10cnVuaworNzQ0NTggYmMxYzQwMzA1NGUxYzc3ZmE3MjBlYTc4OTZjZDk3YTM3ODQ1NzJmOSByZWxlYXNlMjYtbWFpbnQKKzc0NDU5IDMwOTYzY2ZiNjlmZDgyMGJiODBkNmQzZTVmOGI0NDRkMjc4NTJlZTkgcHkzaworNzQ0NjAgNGM1MWM0YmZmYjIxYTcwZjkxZTdmOTEwZTMxOWRiMGI3MzY4YWZhMCByZWxlYXNlMzEtbWFpbnQKKzc0NDYxIDY0M2M2Yzc2ODRiMTY1YzhmMjY4OThhMGIyMjQxMWRhMzhkYzEzMjYgcHkzaworNzQ0NjIgMjI3N2ViY2VkYTQzYTZjMTg1YTNlZGE5ODEwMTdmYjhmZTcwNTQ0OSByZWxlYXNlMjYtbWFpbnQKKzc0NDYzIDEzNzdhOGMyNjc5MjI1NzY0MTFlM2ViOWVhMzNkOTY5M2Q0OTUxMWUgbGVnYWN5LXRydW5rCis3NDQ2NCAxZTI4NzcwMjY0MzVlYmRiM2FlYzJkY2JhZmNmZDljN2Y2ZWYwMjQzIGxlZ2FjeS10cnVuaworNzQ0NjUgMDA1MzAyODdiZGI1MTEzMWU5NTY2ZTZlNjBkOWRlYWNhMmI1YmQ3OCBsZWdhY3ktdHJ1bmsKKzc0NDY2IDM4NDMzNGQ4Yjk4NzViZTYyODEyOTBjOTRiMjVmZDNiMDE5ZTEwZjIgcHkzaworNzQ0NjcgMGZjZjQwYTE0MGU1ZWRiYzA5NzY1NTZkMzIwYjg0ZjZjNTk3MjZiYyBsZWdhY3ktdHJ1bmsKKzc0NDY4IDE5ZmMwZDA1ZmE3YTQ5YmQ1ZDNkZWU5ODdjNDBmYzJhZGE3YWUyZGYgcHkzaworNzQ0NjkgZmI3ZDVlZTkwOGE1MDJhOTY1MGJiZmQ3ZTRlZmNlZGQ5MzE2ZDMzNiBweTNrCis3NDQ3MCA2YWMyYTY0ZTgyNmJlNDU0NDg2MmYyMzkxYmYzMTk0ZGVjNmVlMGEwIHJlbGVhc2UzMS1tYWludAorNzQ0NzEgMTIyN2U3Y2MxZDliMThjZGU4ODIyYjQyNTVmZTI1NzgxZmM0NWEwOCBsZWdhY3ktdHJ1bmsKKzc0NDcyIGM2MzBiZjA1Y2UzOGRmZTJlNzIwOTA1NjRhNGI2NTMzNDQyOGM2OWMgbGVnYWN5LXRydW5rCis3NDQ3MyBiZWMzNDA1ZTA3M2YzNDJmOTg4MTJiZjA3NjNkODA1MTdlN2RmY2E1IHB5M2sKKzc0NDc0IDZhZmE1YmJkYzM3NTRiNjQ2NWY4NDgyN2U4ZjM5ZjRkMDE4YjVjZDQgcHkzaworNzQ0NzUgZDdlMWQzOTc4ZGQ2MDA1M2JlOGYwNzUzMjUwNjk1MGJmZWYyOWQ5ZSBsZWdhY3ktdHJ1bmsKKzc0NDc2IGU1MjAwOWUyMjAxN2Q1MWE0MGNkZThlYjgwMTg1NjA3YzM3YTc4MzggcHkzaworNzQ0NzcgNmRhNmVkZmE2Mjk2YzJiZDBhOWZjZTIzNzVmMjA0NGFiZjVlY2JmOSBsZWdhY3ktdHJ1bmsKKzc0NDc4IDQ5NWVlZmYzYjlmZjBkYmJmOWM0ZjQwOWMxOGE1MzljYzNmMTg3ZjkgcHkzaworNzQ0NzkgNzQ2ZjEwZTA2MjRlOWYzZTQ3OTI5ODkxZWJkODY1OWM0ODM0ODUzZSBsZWdhY3ktdHJ1bmsKKzc0NDgwIDhiOWMwZjU3M2FiMjljNDFjNmM1ZmRjY2E4MmExZmUwZmY1MzU1YWYgcmVsZWFzZTMxLW1haW50Cis3NDQ4MSA1ZWY2YmMwMDUyMGFiMDE4ZDg3YWE5N2IzZTcwMzcwMTM0MmJmODE5IHJlbGVhc2UzMS1tYWludAorNzQ0ODIgZGEyMWI0ODBmZjA1MjM1NTZiYzc4ZTk5ZWY3OTIxMzFkZTU3NTE2MSBweTNrCis3NDQ4MyBkZWZmZTZhYTQzZDExNGU4YmY1ZWUxMzkwZjhkOGU5MjFkMzRjODIyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NCAzNGM2ZjZkMjY5NzZkM2E2OWZlNDZmYmE5Y2UxZTc0ZDM0MDQ1Y2QzIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NSA0Mjg2MzJhNTkwYWRhY2UzYjg3YTQ3MGFlYjVlMzM2MWI4NmNlYTZiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NiA3ODc1ZGVhYzQxMGM5YzNiZjQwNDFkZTdkOWRmY2JhZjg3ZWQwNGE2IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NyBmNmUxN2FlYjkyYWJjODhlMGQ1NGJjZTM4ZDE2Yzg2NTBiOWQ5MzA1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4OCA0MmIyNTY3OTRlNmM1MTIxOWJmZmRmMWYxMDRiMjBkZGFkYmNlNTlkIGxlZ2FjeS10cnVuaworNzQ0ODkgNGQwODgxOGI2YzRhMWQ4ODczYjBkODNhZDZiY2IzZjI0YTE1MWU1OSBweTNrCis3NDQ5MCAyMTdiY2I4NjAzYWFkMTVjOTM3NTQ4ZjVmNzhkNDFjYjYxNWUyNzFiIGxlZ2FjeS10cnVuaworNzQ0OTEgMGIwN2MwM2E1ZjNjMzY4NDQwMTUwNzUwNDFmMGEwYjRkMTBhMWFkYyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0OTIgNGVhYzEzMmZhYzk0Yjg0ZjJiYjQxMzM3YWJhMmZiOWJlZjQ3YjRlNSBsZWdhY3ktdHJ1bmsKKzc0NDkzIDM4NGY5NjVlMTJjZGYxZDg4OWFhZjBlOTgyNDIwN2I1MDlhMzM4YTggbGVnYWN5LXRydW5rCis3NDQ5NCA2YjA4OGRjZjI1ZjhjODliYWE4OGQ5MDE2YjhkZThlZmQ1MTk1NDM5IHB5M2sKKzc0NDk1IDJhYWY3ZDE0MWJkMGZlZDk2ZjlhMjdiZDk3ODRiNjk4NzA4NjQ2MzEgbGVnYWN5LXRydW5rCis3NDQ5NiAyODIxZTVlNzZlODI5MWMyNzhmYThkOWQwNWY5Y2Q2ZGUxOGZhZTkwIHB5M2sKKzc0NDk3IGI1NjNhYjAxNzFkOTIzOGIxZGM4ZTViZDk1MzhhYTAzMjViY2M5MmUgcmVsZWFzZTI2LW1haW50Cis3NDQ5OCBlM2EwZDRiMGQ3YWEwMjA5MmMzN2MyOTQ0Mzc1NGVkYjk5OWE3NWU3IHJlbGVhc2UyNi1tYWludAorNzQ0OTkgYzg3YWFjY2M3MGI2MTgwMDAyN2YyOWZhZWYzYWI4YjkwNTQzMzkwMiByZWxlYXNlMzEtbWFpbnQKKzc0NTAwIGQ0MjhiYzE4NGUxZmJkYzA5YWM4NDhhYzAyNzljMGZkNzc0MmUwMTQgcmVsZWFzZTMxLW1haW50Cis3NDUwMSBlYjEwMDk5MzY2ZWE1MjI2MDQwYTY0MGFkOWE0YWVjYmFiNGVlMjI2IGxlZ2FjeS10cnVuaworNzQ1MDIgMjRjOTUzZjNmOGRhZjJjOTU5NDdiYjgwMzdkYmJiMDQ0YWMzMGMyMyByZWxlYXNlMjYtbWFpbnQKKzc0NTAzIGFlMmY3NWFhM2ZhYTk0NDQxYWY5MmE2OGY5YzM2MmM2YWRjMDZjZDggbGVnYWN5LXRydW5rCis3NDUwNCA5NTE2NjNjMDMwYjQ4YzhjYWJlMjc1Y2JmZjA5MTliNjM1OGExODMxIHB5M2sKKzc0NTA1IDNiZjAzYWQ0YTZhMDZmODVmNDY2NzUyMzk2ZDcwZmRjNmExYWVlOWEgcmVsZWFzZTI2LW1haW50Cis3NDUwNiBkODc0MDY0NmEwMzFjY2NkYWM2YjM0ZGMzNzkwMzM2MmY4MjA3MjI2IHJlbGVhc2UzMS1tYWludAorNzQ1MDcgNzNmNDMyY2Q4MmRlOGM3MGU4ZTk3ODM2NDNhMzg3MzQyYTFjZDdkNiBsZWdhY3ktdHJ1bmsKKzc0NTA4IGFkOTMwMDY3YzEyNGZiY2NjYzkyZjQzYzQ1NWFjMTNjZmU4YWI3NjAgbGVnYWN5LXRydW5rCis3NDUwOSAzN2YyZjM2N2FkOGJiYzU3NWM1NTY2NzBmYjI3MWQzMjhlNDM0ZTgwIGxlZ2FjeS10cnVuaworNzQ1MTAgY2QxODFhNmY0ZGQ3Mzc1MTFhMjgwODE5NmRjYWNmNGFlNDM2MWIwOSBsZWdhY3ktdHJ1bmsKKzc0NTExIGY4MDEyZmRkYTZkM2RlMGU1MTEzMjk5Y2Q5YWZkZGYyNGRlY2NkNjkgbGVnYWN5LXRydW5rCis3NDUxMiBmNzQ2NmFjMWRkNzI1ZjdmODViM2ZiNDgzYmUzYzExMGExOTQzNzZiIHB5M2sKKzc0NTEzIDJjZmJkZThjYmY4ODYxODczNTA3MWE1NDdlZDZiZmM1YmQwNGNlMWUgbGVnYWN5LXRydW5rCis3NDUxNCAwMzFlNDMxNjRiNzY4ZDE5ZTc1Njg0ZjRlMjhjZTliYzljYjM1OGZhIHJlbGVhc2UyNi1tYWludAorNzQ1MTUgZTAxYTE5OTA3MTcxMTE4NzVjNDYzMTkwMzYwNzc5MDMzMThmYmQ0OCByZWxlYXNlMzAtbWFpbnQKKzc0NTE2IGY1ZTcwMTFmYmZmMTIwNWY5YjQ1ZWI4NzU1Njg3MTcxM2U4MWU2NTAgcmVsZWFzZTMxLW1haW50Cis3NDUxNyA2NTBkZjBlYzBjMTJmNmYxOGI1YTIwYjlmM2E5Yjk2YjFjOTg3NDllIGxlZ2FjeS10cnVuaworNzQ1MTggM2FiYmQ3MjA5YmU4NTAwNWRiYzNjZWE0NzIxMjVjZTgwNGQ1ZWU5ZSBweTNrCis3NDUxOSBjZDBjOGFjOWNiNDk0MzE3ZjYyMGJjMTdlYzZhNGU5ZDNmZjBkNmM5IGxlZ2FjeS10cnVuaworNzQ1MjEgZmVmZDllYjdhODIyZGNmZTI4YmM2MTY1ZGJiOWEwYThlZWY0OGViZSBweTNrCis3NDUyMiBjN2NkMjdmNjY1ZDFkZGM3NzJkYzBkNDNiMThhY2ViOGYwYTE4NDE3IGxlZ2FjeS10cnVuaworNzQ1MjMgZTQ3MWQ2ZDMyNzI0YWE2ZTIzMDUxZmY5NTYxNjMwY2IyOGNhNGFhNCBsZWdhY3ktdHJ1bmsKKzc0NTI0IGUyMWM0YzUyN2U2NjFlYTFhOTRiMDMwZWU4M2IyZjA1NmM3MDk1ZGUgbGVnYWN5LXRydW5rCis3NDUyNiA5NzQ1NTNmYjU5ZGNiMzNjYjUyODBmNjRmYzhhZjYyMjBmNTY5Mjk4IGxlZ2FjeS10cnVuaworNzQ1MjcgMDJkNDA4OWYzMWRkY2NjNzdlMWI5ZTI1MDQwYmU0NDgyYmI2ZGE4MCByZWxlYXNlMjYtbWFpbnQKKzc0NTI4IDM4Yjk3YzNlOThiZGFhNTZhYTg3YmQ1MGQxNzVlY2M4ZjQ1MTI2MDUgcHkzaworNzQ1MjkgODZlZjc0YzRhZDk3N2IzMzA1MjI2NzNmYmIzYTg5NGI1ZTQxNDZkZiBweTNrCis3NDUzMCAwZTU1ZmNjYjE5ZWM1NWQzMDNkZjQyZGY0ZjQ2ZmJiMDFhYjg2MzM2IHJlbGVhc2UzMS1tYWludAorNzQ1MzEgNDg3MWY4MWQ3MTMyMDA0YzNmOGQzMzhhMWNhMGJlM2QwYzg1ODE1NiBsZWdhY3ktdHJ1bmsKKzc0NTMyIDU5NGUxOTdlZDYzZDUyZWZjOTlhZDY3Y2NiYzhhOGRlNmM0ZTdiOGQgcHkzaworNzQ1MzMgZjM0MDg3NjBkNDZlNWM1YWE2OTJlOGNmZDkzZWEwZjk0NjM3M2MxZCBsZWdhY3ktdHJ1bmsKKzc0NTM0IGJjMTY3MDkyYzk4Y2I4ZWMxMTU5ODhlYzBhYWI3YjA4YjEyZjNmNmMgcmVsZWFzZTI2LW1haW50Cis3NDUzNSAxM2YxOWZiOTNmOGVjZDdhYmNlMjI2MGMwMWZhNTY1MzdiZDI4MzBkIHB5M2sKKzc0NTM2IGE4ODk0MWUyYmYyNzNkMjljZjg0NGEwZDI5NjJjZGFiZjFmOWI4YzYgcmVsZWFzZTMxLW1haW50Cis3NDUzNyAxNTQ1Y2Y3MzcyYWY5NjgxNzUzOTIwZDFhYzUyZGZlNzhmNzlmZGZjIGxlZ2FjeS10cnVuaworNzQ1MzggNWQ3ZjYwYmZmZThmYzVjNjQ3YjA0ZWU1NGViZGNmZWQ0YWQzOTAyYiByZWxlYXNlMjYtbWFpbnQKKzc0NTM5IGM0ZDU4MWU3MDljYTU0YWYzNTEyNmJhMGEzZTdlYTExZDkzMzRkNzkgcmVsZWFzZTI2LW1haW50Cis3NDU0MCBjZmE3YWU3MTdhOTBiNmM5ZjFmNWVhYTliMmI1NjdjZTM1YzM2NzVlIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDU0MSBjNDAzYjY2ZDkyYjBmYTIzYmE5MjkzOWM2NDE5OWE3NzI0Y2JiODIyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDU0MiA5YTA5NjliNmY4ZTVlNjMyNmQyYjVkZDM0M2NiNjVkNWRjNmQyNzNhIGxlZ2FjeS10cnVuaworNzQ1NDMgYzRkOGNiYWZkOGM4OTA2MWZiOTI0Y2Y4Y2FjNzk5ZTFhNTA3ZGJlNiBsZWdhY3ktdHJ1bmsKKzc0NTQ0IDY3NWEzYzE4MjRmNDA1OTEwOGExMDRlOTVmZmM2MDFlMmQxNmQ2Y2QgbGVnYWN5LXRydW5rCis3NDU0NSAwOTE4MzEyYTJkN2I5YWIxODJhMWI0NDViOTk1M2U4YzQ5MzA1MmI4IGxlZ2FjeS10cnVuaworNzQ1NDYgZmZjZmM5OTBlNGNhMTljYTc4N2Q0ZTQ2NDQyYWI2ZGM1M2JjNmY5YyBsZWdhY3ktdHJ1bmsKKzc0NTQ3IDkyZTM4NThjY2E3MGFlNmNhNGE2NTdhMDQyZWFjYzVhNGU2NWI0ZDIgbGVnYWN5LXRydW5rCis3NDU0OCBlYzhkMjVlMDUwMGE4OGM3ODJkNmUwMDRhMjBmZjYxZDA1YThkNWEwIGxlZ2FjeS10cnVuaworNzQ1NDkgZGI4NmQzY2MxZTZiOTE1ZjI4ZDdhMTUxOTA2MTYyYjQ5ZDkxZjBjMyBsZWdhY3ktdHJ1bmsKKzc0NTUwIGI2MDEzNGVlNWViNDVjM2ZiZTY1MTIzYTQyYTJkNmUwZjNlZDAyMDAgbGVnYWN5LXRydW5rCis3NDU1MSBmNzVmMjc5YmNkMzQwNDlkNDJjNTExNDMyMjUxYWQ5MzQ0ODUxODBjIHB5M2sKKzc0NTUyIGQ5MWFmZjIwNmRmZGUwMzBiZTk2YTVjYWQ3NDc1ZmQxNWQwNTkyMWQgcmVsZWFzZTMxLW1haW50Cis3NDU1MyBkMDNlNTI4ZWY5NDZhYTdjNGU5MzQ3YTJmYTM2Y2QwOWNiMWMxYzQ1IGxlZ2FjeS10cnVuaworNzQ1NTQgNDhkZjQwN2I2MDY4Mjc3MDVkYjJjODZlMTcwYTA3MjAxNGI2OWY2MiBsZWdhY3ktdHJ1bmsKKzc0NTU1IDE0YzVmYWIzZWNiZjQ2NmM0ZTY0YzFkOGU5NmMzMDNmMmQ5MGUyMDUgbGVnYWN5LXRydW5rCis3NDU1NiA4MDA1OGRmZTQ2OWQ5Yzc3ZWJiMmEwM2FhNTVlNWQwZDE2N2MyYjQyIGxlZ2FjeS10cnVuaworNzQ1NTggYWUwMGEzYTgwNDczOTMzODg2OTUyMWNjYjE0ZTljOTRhMGQ3ZDk4YyBsZWdhY3ktdHJ1bmsKKzc0NTU5IDBkOWI1NTZhNDM3ODA2OWI4MjRjNGZkODRhNDViMDFkNzMzNmViMjQgcHkzaworNzQ1NjAgNzM1MzIyYWE3MWQxYWU2ZTI1MWEwOWFjYmM2MTkyMTM4YjBhYjZkNiBweTNrCis3NDU2MSBiNjVlYmVkMDZlYjA0NTlkYTE3NGQ1NzJmMzEwZDc0YmFlYWRhNzExIHB5M2sKKzc0NTYyIGI4OWY1ODJlZTc4YThiODBhNDU2NWQ1MmYyM2VmYTE2N2M5OTFiYWYgcHkzaworNzQ1NjMgZTIxMzAzY2FjMTIwNWM0NTkzZDI2OWU4MjA1Mjk5NWZmN2RkNDhiMCBweTNrCis3NDU2NCBmMjliNTlhNDkyNDYxZTMxZTFjNzM0MDJmNjg1MTQzMTIzMjFhYTMwIGxlZ2FjeS10cnVuaworNzQ1NjUgMWYxYjRjMDNlODkyYWEwNDU4OGRiNWFiOTA1ZjNiOTJiNjc1MjQ2ZSByZWxlYXNlMjYtbWFpbnQKKzc0NTY2IGQyMTA3N2U2MzlmZGQxYmQ0ZWFmMDViYTAzYTUzOTlhNzE4Y2NiYTIgcHkzaworNzQ1NjcgMDk0YTZmMTU4NjQxNzQyMDFhYWE3Mzc4NDRjMTliYjhmYWYyOTdkMiByZWxlYXNlMzEtbWFpbnQKKzc0NTY5IGI2YmYyYTVmNDlkZGRkMGI3N2VmOWQzZDAzMTAyNmQyM2NmZTdhNWEgbGVnYWN5LXRydW5rCis3NDU3MCAwMjk1MGQ1ODA4MDhiYTFlZWM1NTZlNTAzNDEwMjY5ZDRkMDkzMWU0IGxlZ2FjeS10cnVuaworNzQ1NzEgNWY5ZTEzMDY2ZDM2Njc0YTIzNjI2Mjg2MThiMzAxMzA3NzI5NjFkZiBsZWdhY3ktdHJ1bmsKKzc0NTcyIDMzY2U0YzViYzJlNTYwY2NiYTQ0NmUyZjVhMWFlODRhZjI1NzMxMjEgcmVsZWFzZTI2LW1haW50Cis3NDU3MyA5YTc4ZTNkOTA2MTcxYzcyMThhMWExNmRmOTcyYTMwNTM2YjgzZmIzIHB5M2sKKzc0NTc0IDQ3NGE4ZTA2ZTk2NjFhMDJhNTJkOWI3ODA0ODQ0YzcxMGRjMGUzNDcgcmVsZWFzZTMxLW1haW50Cis3NDU3NSA2MDZlOTdjYWViNzczNmY1YmFhZWRjZjVkZjFmYWNlMTI3MzJkOTg1IGxlZ2FjeS10cnVuaworNzQ1NzYgYmZiMjMzNzQ1MWU5YWM1YmVkMWQ3NmJiNjc4Zjk2MzYxMWE1Mjk0NSByZWxlYXNlMjYtbWFpbnQKKzc0NTc3IDZkZWNhNzNiZDUxMmRmY2MzOGMxNDViNDYxYTYzOWNkYjNhOTMxNmUgcHkzaworNzQ1NzggMDQ4YTkxMzgxYmQ4MGFlMWMwYzlhMWRmZmQxMzIzOTkxY2U3MjMyZiBsZWdhY3ktdHJ1bmsKKzc0NTc5IDdkZTIwN2RkNDczOTkyNjQ5MTQ2MjU3NzQ2ODExYjE3YzcyMjdmODEgcmVsZWFzZTI2LW1haW50Cis3NDU4MCBhNGViYWI4NDVmNzI0MWVmNDIzYzc0MzQ1MjY0NTU3MjFhMDlhNWU4IHB5M2sKKzc0NTgxIGQ0MDM3ZmI4NTZkMjEwOGFhZTg5ZjlmNDAyZjg2MWU0M2RjYThmZWQgbGVnYWN5LXRydW5rCis3NDU4MiAxYjkxMjc4NzE3MjMyMDU4OTUwYTdmYWFhMWIxODY3MDQxMGQ3OGY4IHB5M2sKKzc0NTgzIGU5YmFhMmRlOGJiNGVjZGJiMDA1NWMzZTUwM2Q5ZDFiOGJlMjE3ZmUgcmVsZWFzZTMxLW1haW50Cis3NDU4NCBlNGMyY2JkM2JmOTM4MzNjZjA3Y2JlMTE5ZWMyMjZkM2RmNmQ3NDkzIHB5M2sKKzc0NTg1IDY4YzkyZWQ4ZDk2MDRkMzBhNTMyMDcxY2FmMTc4ZjJmODZkZTM3YzkgcHkzaworNzQ1ODYgZDgyODAzNjRjNTgxNGY4NDE1ZTVhMzRhNWRhYzdiYjcwZTBlNzM4ZSByZWxlYXNlMzEtbWFpbnQKKzc0NTg3IDFmNzcyZjhmZWM5MjJiZjU0N2M2YjlkZjVmOWUzNjQ5ZDMwOTA3NTYgcHkzaworNzQ1ODggNmZhOGE4MTE4ZGYwYzNmZGJjZGQ3ZjRiNmIxYzAyMDA5MTllNTk3ZiBsZWdhY3ktdHJ1bmsKKzc0NTg5IGFlZGM0ZWMyZmUyNDAwNzc3NzFiMTFhMWZjYTdhMzIwY2NiY2ZmYjAgcHkzaworNzQ1OTAgYjRmYzhjYmZlMWVlOTFmMGM0ZWY4ODU3MjZiN2ExYjg2NDk5MGRhZSBsZWdhY3ktdHJ1bmsKKzc0NTkxIDA4MDkwYjVlOTZjMmZjZTc3MjBlNzYzZGU2MjQzOGE1YWJiMWUxZDYgcHkzaworNzQ1OTIgNjk2MTZlMjI4NzI4ZTNkOWNhNWVhNzI4NjdjYjU3MzFlZmY2Y2YzOCBweTNrCis3NDU5MyA1OGU2MzE5N2Q0ZWFiMzExOGRmYjg5ZDNkNTE2OGNiNTAyNzg0MjI5IHB5M2sKKzc0NTk0IDM2OGJmYzE4YTdhMTM5YWI5NWQ2NmFlMmZkMDVjNWZiYTU1NGFlOGMgcHkzaworNzQ1OTUgYmY1MDBkODg1Nzk2NmFhZjU4N2IzYTJjNTNkNjdiY2NhNzg0NmJlOSBweTNrCis3NDU5NiA1NjAwMDhkMDk4ZGRjNzE5ZTIwMzMxYzRlZDYzYTI5NDE0MjFiNzI3IHB5M2sKKzc0NTk3IDg2ZmE0M2M2ZDU3YzY2MWZiOGM0MGVhNTY0OWZjYWI2N2M0Mzc3ODEgcHkzaworNzQ1OTggODAxYWE1MmIxMjE3MDU5OGY3ODhmYzRlYzMwMDgyNGZhYjUxMWNiMyBweTNrCis3NDU5OSA5OWRjMjJlZjFkZjA0ODgwYjhiZmYzYWE1NjkxNDA1N2I3ZjMwNjViIHB5M2sKKzc0NjAwIDM5YmNiZjMxNmRiYTY3Yjc5MDA3ZjNkNDI3MWRhMTQ3YzY4ZjNhNzQgcmVsZWFzZTI2LW1haW50Cis3NDYwMSA5NDI0OWQxNDI1YTNmZGI2NzRjYTFkYzNlZGMyNTYzNzBmOWMyMjI0IHB5M2sKKzc0NjAyIDAyNzAwN2I0M2YxNjU2MGRmMmI4NDMxMWRhNzkzYjBjNzc0NTlhNDUgcHkzaworNzQ2MDMgNzhiODZmOGJmNWM0NTljMTc1ZGVhZjg1ZmM0ZTYzZDNmZmEyYTkwMCBsZWdhY3ktdHJ1bmsKKzc0NjA0IDQzYTY2Njc2OGY0NzRiNTYxZmM2NGJmYWY3MmViY2VmMzM2ODU5YjAgbGVnYWN5LXRydW5rCis3NDYwNSAzNWExNjIzYzEwMjM5MDg4YjAyNmM5NTE2MTk5YTA0YmQyMDI2MzA1IHB5M2sKKzc0NjA2IGU4MTQ1M2JiMDc4OTNmN2U2NGE2NDk2NGYxODUyNTAzYmYzYTA5ZjMgcmVsZWFzZTMxLW1haW50Cis3NDYwNyAwNWFkOWVjNjMwODc3NDkzNjM5OTY4OGRmYTEyMjNkMTYxODc1ZDYzIHJlbGVhc2UyNi1tYWludAorNzQ2MDggYWNmMjE1YmJlNzAyZTA1NTcwZDRjYzJjYzNkNDg3OGRlM2Y3NzIwOSBsZWdhY3ktdHJ1bmsKKzc0NjA5IDExYjQ1NTM1YTFiM2U2MTljZTZkYjdmYWFmMjY5OGQ5ZjIzYjg1ZDIgcHkzaworNzQ2MTEgODQ5OTI4ZDc1ZDZlMzk4OGUxYzg1YzlhYjZiNDY3NzQ5Y2U0ZGQzNiBweTNrCis3NDYxMyAwN2MyMzgwNmNjYzZjMmVkYmUwNmNiNDI5M2Y3ZjFlOTU1NmM4N2FlIHB5M2sKKzc0NjE0IGJhNWIyNjgzYzA2NDBjNjAxMzJiNTg5ZjRlMTUwZGQ4NzQwOWFjM2YgbGVnYWN5LXRydW5rCis3NDYxNSBlNWI0NjNhNjFlZTI2OWVhOGNmMDk0MzY0NzIyMGQ5MzZhOTc2MTBmIHB5M2sKKzc0NjE2IGVkN2RiYzkyMmQwNWM5ZjQ1ZTE3ZjcwOTc4NzgzMWE2NzM4MzdiNzkgbGVnYWN5LXRydW5rCis3NDYxNyBlMTU3Y2ViNTRhNDM4YjExNjU5OGU5NGZkYTQxNGFjYmNkMjhhNDNiIGxlZ2FjeS10cnVuaworNzQ2MTggYjc0YTdhM2U0MWM1NzJkZjM5ODA3MmY1ZmY0OWU1ODFjNjEyNzgxMSBsZWdhY3ktdHJ1bmsKKzc0NjE5IGQ1MTJjYmI4NWFlMDAxZDM5NmM4ZDlkZDQ2NTFiYWM3NjYzNzI4ZWMgcHkzaworNzQ2MjAgODE4YmE4OTg1MjgxMDQzNWUxNjgzNTkyNDFkMjFmYmNlMzMxZTAyNSBweTNrCis3NDYyMSA2NmY0OGJjOTQ4MTQ4NzUxYmFhNzgzNTVmYTc2MjAwMzhlMmExODM4IGxlZ2FjeS10cnVuaworNzQ2MjIgYWM3NTVjNTY2MTM2ZDUxMzA3NjEzMmZjYjMwOGFkZTVhNjk4YzU2YiBweTNrCis3NDYyMyAwMDg4ODQ0ZDAxMDlhNGY3YjczZjdlNzI5YmFjOTRiN2JkZWZjY2NhIHB5M2sKKzc0NjI0IGFmYmIyYjJmZjZmNzgxMGQ5NWVhNzQ0OGFkZjEyZDc4YTU5OTE1OGEgcmVsZWFzZTMxLW1haW50Cis3NDYyNSA1ZDJiNjZlMDE5NjhhM2ZhYWUzZjFhMjQ1Yjc0MzdmMjBmYzE4YzdhIGxlZ2FjeS10cnVuaworNzQ2MjcgZmQ4YTU4OTAwOGFjMjBlNDUxODc1ZTE1OGU5OTg4NzMzNTg0NjRkNSBweTNrCis3NDYyOCBhNDdhYTExMGZjYWNmODRhZWQ0NGQyODlmZjIyNjVhMzc5OTZjNDM3IHB5M2sKKzc0NjI5IDZiODJiYTMwNGE3ZWRlODc2YTBiNzdlYTdmZWMzZTIwZGExYjNhYzUgcHkzaworNzQ2MzAgMTA2ZWU0ZWI1OTcwNWRjZWZmM2ZiNGJjNGUyMmU5NWFiZWFhODk5MiBweTNrCis3NDYzMSA5ZmZhOGY4ODc3NTA5NDg3ZWUyNThhMmRjY2RlMmVmOTRiZjRkOTdhIGxlZ2FjeS10cnVuaworNzQ2MzIgZTBjZWYwMjMzMDIwM2U0NmIyMTgxOTYwNWZkNjFiNDYzYWJkYjBmMiBsZWdhY3ktdHJ1bmsKKzc0NjMzIGJiOTAwNTFiNDM0YzAzZWU3MzNiZmJiYjk2ZGYwOGY2ODVhNWE5ZWEgbGVnYWN5LXRydW5rCis3NDYzNCA2MzcxZTJkMGRlYTAwOTE2ZjhhZjg1ZGExZDY3NGViODI5ZjIwOGNlIHB5M2sKKzc0NjM1IGQ1NWM5YTA2MzI1OGFlNzkzYjY0Njc4MzcxZDI0NDQ1ZWUyYTMxZGYgbGVnYWN5LXRydW5rCis3NDYzNiBlYjY3M2E0MDFiOWQ1NTA4NjFiNTAyYWY0MmE5MWM2MDQ1NmZmYjUyIGxlZ2FjeS10cnVuaworNzQ2MzcgOTVlNTczOGNiMzA5ODE4MThhNWJjODNmYmRlN2M1NDhhOGMwNDdkNiBsZWdhY3ktdHJ1bmsKKzc0NjM4IDc2YWViYzVlYTQ1Y2JhZDM2MTVkZjVmZDAwYTFmZGQ0NDNlYWM3ZjMgcHkzaworNzQ2MzkgM2I5ZTc1MzExZTQzMGEzNjZmOTliODBmN2I5ZjliZDJkOTZiZDQzOCBweTNrCis3NDY0MCBjZTdlMDAzODk5NmY0YjRmODM5ZDljNWI0OTA4MGY2YjlkODU1Y2JmIGxlZ2FjeS10cnVuaworNzQ2NDEgMWYwM2YyOTIwYzYxNzFlODc1NTg5MTU1ZTRjMTFhMmFlOWI3OWE0ZiBweTNrCis3NDY0MiA3N2FiOTNjYTA2NWUzNjdhZjFmMTQ5MTk1ZTdjOTY4MDY5NDFkYThmIHJlbGVhc2UzMS1tYWludAorNzQ2NDMgN2QzOWUyMTNiNzU2MzY3ZjhhMWM4MmFkMjc3MGMzNzBmN2U1NjNiMyBsZWdhY3ktdHJ1bmsKKzc0NjQ0IDYxZGJjMWQxYjgwNGQ2Mjg0ZjZmYjQyM2UxMWMyNTdmMDMxNzBkMDUgbGVnYWN5LXRydW5rCis3NDY0NSBhMDdmMzBkN2QwZjFjZWYwODU1MTNhYTRjMjE4NjJkOWYzODdkMDIyIHB5M2sKKzc0NjQ2IDI1YjEzZjc4MmZmZTg0OGExZDNlMDIxMzU5NGYzOTdjMTIyMzc0OTkgcHkzaworNzQ2NDcgYzUxNzIxZDY0NDUxYTQ5MmIyZmI4Y2Q4OTRkNjU3MWZmYjhhYmQxYSBsZWdhY3ktdHJ1bmsKKzc0NjQ4IDYzYjZhOTFhZDlkOTdkYzg4OGVkOTBkYWU2NGY2NTBhMzk0OWQ1ZDUgcHkzaworNzQ2NDkgMTdlODNmMDE2OWU4MWZmMWRhZTMwODlhYzFjZWVlZjliMDlhZGMzMSBweTNrCis3NDY1MCA2NzU4YmYyMDAyZGFiN2MxNjdiNGE3NzkyYjhiMGQ5OTE3Y2MzOTBkIGxlZ2FjeS10cnVuaworNzQ2NTEgOGE4ZTNjMTY2OGEwOTk3NDQxZTMxYWRjNzFjYzdmZDM4ODczZDk4MSBweTNrCis3NDY1MiAxNTAxYTEzNjBjZTRlNDg1NzViZTQ3YzRmMDVmN2ZhZGZlMWJlMDA4IGxlZ2FjeS10cnVuaworNzQ2NTMgMjBiZmMxZDM1OTg5YzA0NTA5NzU2NjlkNmYxOGMzMDBmMTk0NmMxNyBsZWdhY3ktdHJ1bmsKKzc0NjU0IGMyMTY1YmUwMDE3MWE2ODM5NDNiNWE0ZWFmZmY1MzA3YzFlOGFmNjggcHkzaworNzQ2NTUgNzdkYjI1Yzc1MjZhMTI5ZTRjMmNlMDQ5NzBkOWU2YWU2YmM1NThhOCBsZWdhY3ktdHJ1bmsKKzc0NjU2IGU4NDQxODUwNzkwZjg2ZGQ4MTJmNGEzMjBkNzRjYTYxZGI5YzViOGQgbGVnYWN5LXRydW5rCis3NDY1NyA3NTgzN2NmZTlmZmJmOWFmYWRjZTY5NjUzOTQwNDNmNmUzMTUyN2VhIHJlbGVhc2UyNi1tYWludAorNzQ2NTggZDU2N2Q5NjNjYjM3MDRhOGMzOGQ3ODlmMTUzMDMzNjVkNzdhMDJhMCBweTNrCis3NDY1OSAwZjZkYzJlNmYwOTFlNDEyMjcxZDU5NDA1MmUyNzA2NDIwZWQzMmI1IHB5M2sKKzc0NjYwIDNiMGIzNzAxNGFhZWIxNzljNzFiNmU3YmNiZmUxYjEzNTY4NmIzM2MgcmVsZWFzZTI2LW1haW50Cis3NDY2MSA0ZGRjMDU5OGRmNzlmNjMwNWE3MjVhMzAzYTk4YTQyZTRmM2M0ZDc5IHB5M2sKKzc0NjYyIDI2NmQ3ZGMzZDY1NTEwM2NhNGE2YjZmMDQwNzViYThhZDk0MTZmZTEgcmVsZWFzZTMxLW1haW50Cis3NDY2MyBmZmJiOGZmZjM1MjBlZjhhMGIxZjEzODEzZTQ1MGIxMzI3Y2E3MTYxIHJlbGVhc2UzMS1tYWludAorNzQ2NjQgNmY3ZTcxOTJmZWJiMGZkMTlhODE2MjFlMzhkNGUwMTdhZThjOGM0YSBweTNrCis3NDY2NSA3ODM3MDViMDQyNTgwZTMxMDA1ODhkZjVlM2JlYmIxOTZkMWEzYzY5IHJlbGVhc2UzMS1tYWludAorNzQ2NjYgZDE5MTE0NDkyMjg2MDBiYTZmOWRjMzhiMGMyODI1YWFhMTE3YjUwMiBsZWdhY3ktdHJ1bmsKKzc0NjY3IDFkNDM4MTJhYWRiNjE4ODcxNzAxMjBjMGViNjg1OWM4ZjZjMmI0ZGUgbGVnYWN5LXRydW5rCis3NDY2OCAzYzdjOWI4MWUzNjE0NDQ1MWRhZTQ3NDJjZjdhN2I3ZDRiYjE3MzdjIHJlbGVhc2UyNi1tYWludAorNzQ2NjkgNjIzMTQ3YTJiNWIxYWI0Mzc3Y2MxN2NlM2IxODRkY2JjMWQyYzBiNyBweTNrCis3NDY3MCBkYzYyZGQzMzI2ZWQwYmUyM2YyMDY3OTBhNjRjZGMzMjNmOWQ1Mjk3IHJlbGVhc2UzMS1tYWludAorNzQ2NzEgOTA2NDkwYWI2YWZmYjRlZWRkYzM5Yzk1MmQ1MzNmNzNmN2Q4ODRlZSBsZWdhY3ktdHJ1bmsKKzc0NjcyIDM0NDk2YmVkOTM2NWY1ZGQ1YmI5Nzk5ZWNkMDkwNzJkOTMzNTVlYjUgbGVnYWN5LXRydW5rCis3NDY3MyA1ZDk3NjFlNDQ1NTU4N2Y1YTczMTgxMWEyNmY4OGE4ZmQzN2U4MWI2IGxlZ2FjeS10cnVuaworNzQ2NzQgZDYyN2IwZmYxZDE3ZTVlZTRiODY3YWE2NjczNGI5Mjk5NmU1Mzk2MiByZWxlYXNlMjYtbWFpbnQKKzc0Njc1IDE5N2MyYWU1MWNjNjEyYTk1NmQzYTRjZWQ3ZmVkNTQ1MGNjMjI3NjggcHkzaworNzQ2NzYgMWY0ZjM0MmJmZTJlODFkZTc4YTkzOWQzMzQ3Zjk4MGVlNDc4YWIyYyByZWxlYXNlMzEtbWFpbnQKKzc0Njc3IDIwYjlhZjFmMDBjODc1M2NhODhlYmI3MmIwMzJiNGMyOGNlOWRhZDEgbGVnYWN5LXRydW5rCis3NDY3OCA5NTkwMGRiZDVkZDMzZjUyMTI2MWE1NWRhNmVjNWM3ZGExOTcyMWI3IHJlbGVhc2UyNi1tYWludAorNzQ2NzkgYTE1MmNjY2E1Mzg5NjJlZWU0ODI1NWY1NzdiYmMyZjQ5MTM2YWYxNCBweTNrCis3NDY4MCA0ZjA5ODgwYmViYmJhNmNiM2QyMzEyYTM3MWU4YWM1MTg4YWU4ZDFkIHJlbGVhc2UzMS1tYWludAorNzQ2ODEgODk5YmJjYmFmOWE2ZWE4NTE1YzhiZmIxMmEwMWQ2MDg5Y2RmOTkzMCByZWxlYXNlMjYtbWFpbnQKKzc0NjgyIGRiMTVjN2FmMDE0ZmEwODcyNTU2MzYzOWZmZjJhMTgxNGY3YWIxMWUgcHkzaworNzQ2ODMgMGM0OTRlNTc4N2RmNmJkMGQwOTcxNTM1ZDZiMmY0ZGZjY2VjNWNkMSByZWxlYXNlMzEtbWFpbnQKKzc0Njg0IDM0YTdhOTE1ODM3MjNiNThmOTM5MjIzMGFkNmZjMTY5NTc0YmViNDYgbGVnYWN5LXRydW5rCis3NDY4NSA3ZTc2OWZkZGU0MzlmZmM4MDVkNDEzY2VjYmE1OWU4YmViZGYyY2U2IHJlbGVhc2UyNi1tYWludAorNzQ2ODYgOWU3Yjc4MzJmZDQ1MTI3OGE3ZWZjOTcyMjg4YjFlYzUxMjFhYjMwMiByZWxlYXNlMjYtbWFpbnQKKzc0Njg3IDkyZjE2Yzg3ODg5ZGEwZjQyZGUzZWFiYTY2ZmJmM2QwZmUyMWNjNzkgcHkzaworNzQ2ODggNjU3MmQyZWZjOGIyOWFhYWYyODBkODRjZDM1YWMyN2RlNDQwYTYwNCByZWxlYXNlMzEtbWFpbnQKKzc0Njg5IGM2NjQ1NWE0MTZlYzdiZmQ5MzQwMTAyYzgxNzFmZjE3ZmZiYmU4ZmQgbGVnYWN5LXRydW5rCis3NDY5MCA1M2M0ZWZkMTcwYzA1MTdmMTYxYTViMDc4Mzg2Zjc5MzAzMTI2YmVmIHJlbGVhc2UyNi1tYWludAorNzQ2OTEgNzUwMDA5NmJmMWEwN2ViMDY0YzU4OGQ4N2MyNGNmYjBmZjU2OTg0NCBweTNrCis3NDY5MiA4NjkwMWNhZTZiNjQ4M2Y5YTJkNTZlYTNlZTM0MDZhNzViMzI3OTQ1IHJlbGVhc2UzMS1tYWludAorNzQ2OTMgZDMwYTNkNTc3MTY0ZWJjZGE4MmFkMmJhZjg2OTMwNTAwODhhNWY2ZCBsZWdhY3ktdHJ1bmsKKzc0Njk0IGE3MGU3MmVmYzJhZDY5Y2RiOThhMzZmZGNlMjMzODAzNzEwMTEzNmEgcmVsZWFzZTI2LW1haW50Cis3NDY5NSA1ZTExMDg1NDVlNzg3NGE0OWMxNzc0M2RlM2RhNDc0YmQyYzVmODhjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDY5NiBlZDJjNWUwMDc0MTFkMDk2ZDkzODM0YTFlYWVkYzYxMTZiYjJhZTI1IHB5M2sKKzc0Njk3IDQ4MDNlNzZmMjBjNTZmZTllOTljOWI1YmI0Mjk4OGFlNTUyNzBiZmYgcmVsZWFzZTMxLW1haW50Cis3NDY5OCA3OTBjMDE5ZjY0MDM4ODczMDMwOTA4MmJmZjU1ZGM3NzM1ZDJhZjQ5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDY5OSBkYzcyMTdjYjczYjdiM2JmMjcwY2ZmM2E4MGNjNDRiZmY3ZjdiN2JhIGxlZ2FjeS10cnVuaworNzQ3MDEgZjY0NTcwZDBmNzFkOWRiZDcwMDUwNjRhMzQ2NDQ3ODU2NGUwYzY1ZiBsZWdhY3ktdHJ1bmsKKzc0NzAyIDM3ZjVkMTc4NWJiM2ZlOGMyNzM5NjVlZmIzMDNjOGI3NjI2YmNmYzkgbGVnYWN5LXRydW5rCis3NDcwMyAzMDBkYTNjY2Y5ZmMzZjcxNGYxZDU5ODE1YWZiNjQxYjE4NjQzMjlhIHB5M2sKKzc0NzA0IDBmNzMzM2FjYTQ1NTMyMzEwYzZmNTc4MzQyMzBkMDQzZWRhMmNlZDcgbGVnYWN5LXRydW5rCis3NDcwNSBlODk1ZWY4MmMwODZjY2I4M2JkMTY1NDM0YmRjZTRjOTA2MDI1MDgwIHJlbGVhc2UyNi1tYWludAorNzQ3MDYgOGE4ZDQ2N2M4OWNjZWEwNGIxN2Q4MjdlZDg4ZGEyNjhkOTM4YjRmMSBweTNrCis3NDcwNyAwZGQwYjBkZTVlMzFmMDFiNjQ3Yzk3MjQyYTk5Mjk5YmYzZjJlMTdhIHJlbGVhc2UzMS1tYWludAorNzQ3MDggZDQxMDI0NTkzOTMxZjY5YWE3NjczNDhjYmI1NGU5YWM1ZTQ1YjdhYyBsZWdhY3ktdHJ1bmsKKzc0NzA5IDVmNWVhNzQ3ZTMxYTFhZmQ5ZGVlYjVmM2Q0YTZiY2RhNmMyNGY2ZGQgcHkzaworNzQ3MTAgY2ViNzU4MTk1Mzc3MTZjNWFhN2U1M2VjOTdhNDhkMDRkN2VmM2FjMyByZWxlYXNlMzEtbWFpbnQKKzc0NzExIDY2YTJkZTBkNDI4ZTY1ZGI0ZTY1NzhkMDg0NGYwMTQ5YWE0YjhlOGYgcmVsZWFzZTI2LW1haW50Cis3NDcxMiA2ZmU5ZGZiMTM5YzMxYzc1NDI4MGExMzAxMTBmYzRmYzYzYzEzZmQ1IHJlbGVhc2UyNi1tYWludAorNzQ3MTMgMWQxZDJkYjQ1NmQ4NmUyNjdjMDU0MGUyZGQ4ZjZkNTJhYTA4YWEyYiBweTNrCis3NDcxNCBkZTYyN2NmZWVkMTQ2NmM3YzkyMWViMjRjMjY0N2Q5NzhjOTZhOWUzIHJlbGVhc2UzMS1tYWludAorNzQ3MTUgZmQzNGZmYzhmODA0MmYzZTc2YjhkMjkxODA0MzA4ZGZmNTJiODI3YyBsZWdhY3ktdHJ1bmsKKzc0NzE3IDkxZGM2MzIyNzIyZGY4YjJhYzhjYzJkNTQ4MTVjOTBmOWQ4YTc5OWUgcmVsZWFzZTI2LW1haW50Cis3NDcxOCBmYzlhMDA3OTk3OTVjNGQwNDNiYWZkZDgzMDAzNTEyODFmYjMwZDQ2IHJlbGVhc2UyNi1tYWludAorNzQ3MTkgZTJmYTA2MDUwOGRhMDUzYzU3NDNlMmQ1MTc3MmMzOWZhNTY5MDIyNyByZWxlYXNlMzEtbWFpbnQKKzc0NzIwIGRkNmE5YmMzOTk0NjNmMDYyZWRjODA3MTE5ZWYwMDRkZDRkZTM0NDEgcmVsZWFzZTMxLW1haW50Cis3NDcyMSBlMDQwOWYwMzgyMmZiMzBmN2RmYTg1OTgzNDk5NGExOTI4MTA3ZGIwIGxlZ2FjeS10cnVuaworNzQ3MjMgNDBmZDhmZDk2ZDk2Y2RhMWNlN2M4MjY1ZDA3NTk2ZmYzMDg4NjQ2NSBsZWdhY3ktdHJ1bmsKKzc0NzI0IDMyZTg1ZDUwYzUyZGJjYjQzYTk3MWJmZGQ4N2JhM2NmNTkzNTUzNmIgcmVsZWFzZTI2LW1haW50Cis3NDcyNSAwYmM3NTlmNmRlZDVjOGZiZWFhNGU5MDA5YTFlYjIxM2ZmYjhkOGI1IHB5M2sKKzc0NzI2IGUwMTc4YjhhZWFmMDc5OGZiNmM0MzY0YmFiZjVmMzNjMzRiOGFhMTYgcmVsZWFzZTMxLW1haW50Cis3NDcyNyA5MzFhZjY2MTFhZTljZTQ1NGU3MWM1ZmUyYmY1YWM2ZDMwMTVlNDEwIGxlZ2FjeS10cnVuaworNzQ3MjggNjdkZTQyY2EwYTI2YTcwNDFiZjQyNmZhZGE3NjZkNjcxOWZiOWRmOSBsZWdhY3ktdHJ1bmsKKzc0NzI5IDRiNjM5ZjViN2QzZWJlZTBhMGFlZTQxYWM4MmRkZjQ1YzBkNjA3NGEgcmVsZWFzZTI2LW1haW50Cis3NDczMCA2ZmE5NDZkMDc1ZjRhYzM0NzA5ODdiZDAxMThiMjdiYzZhMzAyODJjIHB5M2sKKzc0NzMxIGQ1ZmM1MTg5MTk5N2RhZWY5OGMzMDUwYWQ2NWU1ZjMzNTEyYjVlZDIgcmVsZWFzZTMxLW1haW50Cis3NDczMiBlMWVmY2E2MWVlNGVkOWY5MzU2OTIxNTZkYWUzNGQzYmQ1N2FmNzQ2IHJlbGVhc2UyNi1tYWludAorNzQ3MzMgNWRlYzhhMTJlNDU1YWU5OGU3MDJhMWQ5MTM5ZDM3MmY3YTEzMjY2ZiBsZWdhY3ktdHJ1bmsKKzc0NzM0IDhmNmNmMzljOTZkZDYyMzYwMzAxMGQzODVkYzM2MzU2ODg0N2QxMzggbGVnYWN5LXRydW5rCis3NDczNSAwMGQ2Y2I2MjU2NjdmMzcxNGI0YWRiNzRhYThiZmUyYjkxMmMwODU4IHJlbGVhc2UyNi1tYWludAorNzQ3MzcgYWI3ZmQ0YmMzODI4ZjhjZTA3Njk1ODcxMzk4MmFhZWM4YjY2ZDdlNSBsZWdhY3ktdHJ1bmsKKzc0NzM4IDI1YTYxN2NhODNlMjM5MjU0NzQwNzQ5NDM2MzkxNGIxNjRkODQyMGUgcHkzaworNzQ3MzkgNWQxNTI5NmEyYTRlMWM3NWJkNWVjN2M5Y2ZkNTQ2OGFjMDZiMWU4YyBsZWdhY3ktdHJ1bmsKKzc0NzQwIDgzNWZjODU3N2RjNzkwZTJlZTQ1ZWM1Mjk4YTMzZjJlOGMxOTRlYjIgcHkzaworNzQ3NDEgN2YyYTg3OTQzOTlhMWU2MGM0MDlmMzc0NWU0NWM1YmMyZjNhMzk5NCBweTNrCis3NDc0MiAwZjZkYjAwMmIzYTFmZWM5OTg5MzJkMDZlZGE1NzZmMTRlNmM3ZDJkIHJlbGVhc2UzMS1tYWludAorNzQ3NDMgOTU4MGJiYmI1NTJlMTNhMDExMGQyYzhiNmQxYjUyZTUxZGI2MWZhNyBweTNrCis3NDc0NCA2YWZmZDZkZGEyMjlkMTQ2Yzg2MjM4NzFhZDRmNDk4Y2M5MmQ0NTY5IHB5M2sKKzc0NzQ1IDdlNmY2MTRhNmFkMThjMmNmMmFjYTFiZDk1YTc0Y2ExNjc3MmU2YjMgcHkzaworNzQ3NDYgZDRlM2FmMzQzZTMyMGE5Mjk5OTlmMTM2ZGZlZTM2OTgxOTFhYjk1OSBweTNrCis3NDc0NyAzZmIxYzFmYmUyNmNhZWY0ZDRkNTQ0ZDQyM2FjOTYzMzcwM2FhZDU0IHJlbGVhc2UzMS1tYWludAorNzQ3NDggNjIyNTAyMWJkYzM2YjE4MDljNGE4ZTQyZjA1MTNkMzczYTkyMTc4NyBweTNrCis3NDc0OSA5MmRhYTljNDFkNTYxZGQwMWRkZTY0NjZjMDI1ZGNmZGE4NWRiOGFhIHB5M2sKKzc0NzUwIGVjZDIyODUwZDIwMWNhNGJmMjc3NDEyZDY3ZDExNTljYzkyYTAxMTcgbGVnYWN5LXRydW5rCis3NDc1MSA1MWJhYWQyOGZlN2ExNDFlZDRkODAxNGZhYjEyYTM5MWQ5Y2NjZDM1IHB5M2sKKzc0NzUyIDZiZjI1MzlkM2JhYTQyMWUxOWI2ODQwMWU2ZGM2NjJiNDcwZDJkNDIgcmVsZWFzZTI2LW1haW50Cis3NDc1MyBkOWE2NjkwNWYwM2U5NWMyMDg4MmI3ZWM0ZjhhMjExNTU0ZDRlYTEwIHJlbGVhc2UzMS1tYWludAorNzQ3NTQgMzliZTNlZjgyZDIzMzZlMzI3M2YwZDUyZDA2M2MzMGYxZDc3NTg0NyBsZWdhY3ktdHJ1bmsKKzc0NzU1IDUxMTFkMzI5OTc0MTYwYzlkYzM1ZGI1YWRiYTJkZTA2YjQ0MTk4NzkgcHkzaworNzQ3NTYgM2RmOTkxNGVmYzg0ZTM5MzhjMjg0YzFhYWFjOGRjOTM1MDgyYWM1NiByZWxlYXNlMzEtbWFpbnQKKzc0NzU3IDJjOWVjNGU3ZDhjMjEwYjc3Mjc2YTU4YTZhOGZiODM2MzRmMGMyZWEgbGVnYWN5LXRydW5rCis3NDc1OCBmYWQwMjUxMzI0ZDdhYTE0NzMwOGRlNGY0ODEzODVkYzA1ZTMzZTRjIHJlbGVhc2UyNi1tYWludAorNzQ3NTkgZmZmNTliMGFkZDk4YTU2MTU3NGU3NjQwZjMzMTA3ZDgxZWYzMzFkZCBweTNrCis3NDc2MCAwNzgxYWNmZGM5NDVkOTFlYmNkM2EwOTI3ZDdjODQ4MzYzNjQ5NTRmIHB5M2sKKzc0NzYxIDhiYzRjOGNhYzdkNzIyZmJiNmRkMWQ5OWVlNWMzMzllNDIzNTQ5NzQgcmVsZWFzZTMxLW1haW50Cis3NDc2MiA3ZDljYzRiY2Q3NzYwZTU0MWZlNGJjYzg0MDliOTFmYTY4MmFkOTFmIHB5M2sKKzc0NzYzIGQwYmRiMTkzMGQ0OWU0ZTJhOTM4Mzk1MDkzZWE4MDRmODBiMDJjNzIgcHkzaworNzQ3NjQgZGQwMjc5MTY2NmUwNWI4MDRkNDdmY2E0MTdhMDY4ZDE0ODU2OGU4OCBweTNrCis3NDc2NSAyMjkzMGFmNGRkZjczNGZjOWJhNWJlZjgxM2E2NDU3YWNiNWFlY2QxIHB5M2sKKzc0NzY2IDkxMTk0NjdhYTg0ZTgyOGUzNDk3NmJhYTcxY2RkZTU1NDczOTBmNGYgcmVsZWFzZTMxLW1haW50Cis3NDc2NyBmM2EzMDA4M2ZkOTY0ZmMyNTI3YWQ0YzBlZDUxNTkzYzJjY2E1YzZmIHJlbGVhc2UzMS1tYWludAorNzQ3NjggM2M1N2QyNmI0MGM0NjdiYTY2ZGFlNjIwNzAxMTkyMGFjZTJiNzg0YiByZWxlYXNlMzEtbWFpbnQKKzc0NzY5IDY1OTQwNjZlNTA0MTY5NDE4Mzc1ZGQ5MDgyMTE3YzQ1OWQ2Yzg0NzIgbGVnYWN5LXRydW5rCis3NDc3MCBmNDRmNDZmZThkYTUyZTM4MGNiMTA5YTgzZmM1Y2RlY2M1N2E3MDgxIHJlbGVhc2UyNi1tYWludAorNzQ3NzEgZDdhZThiMDczOWU0N2FlNjRkODc1MjE3MzM4YjFkOGQzYWEwYWVmNSBweTNrCis3NDc3MiAzMTY5MjFjYzkwNGE1ZGIyZTU1OWE3MzY0ZDdkMzBkNTQzNjY4MzI5IHJlbGVhc2UzMS1tYWludAorNzQ3NzMgMGMwYTZjZmQ0YmUyMjBjODUwOGFkMTljOWVjNGNiNmVjOGRiMGI4MyBsZWdhY3ktdHJ1bmsKKzc0Nzc0IGFhYTZiNzI0YTRmY2U0NjEyZWM4MjhiM2Q0ZDA1OTllNjI3ZWUyM2IgcmVsZWFzZTI2LW1haW50Cis3NDc3NSA0M2RhNTNlNTAyZTE1ZGM0NGFkYTNlM2RmODdiODY0YTNkNDM1M2M4IHB5M2sKKzc0Nzc2IDgzOTNhOTAyMTZiMzg2YzQzZGY0MjIxMGNlNWI3MWNkYWQ5MDk0ZDcgcmVsZWFzZTMxLW1haW50Cis3NDc3NyBiYjVmYzE1YjAzNGNlM2E5NDFiYTljOGY2NWQ3Mjg2OGEyMDdhZDAzIHJlbGVhc2UzMS1tYWludAorNzQ3NzggMWEzOWE0ZGQyNzdjNDk3NDdiMDAwNGNkYjQxMDJmZGY1MGRkZTcxMyByZWxlYXNlMjYtbWFpbnQKKzc0Nzc5IDlhY2U4NjI5OWJiOGJmNGJlMTU5NzJiNDVmNDFkOTNlYWJhZjkyMzkgbGVnYWN5LXRydW5rCis3NDc4MCBlOGQ2ODFjNDQ4ZDcyZGRhNjRhMmY3OThkMjJlZmU0ZDgxYTRiZWFmIGxlZ2FjeS10cnVuaworNzQ3ODEgYWVmZjMzMTljNDE4YjQwN2JkNmM5NzRkMmEzMDZhYWZjOTQxMjcxZSBsZWdhY3ktdHJ1bmsKKzc0NzgyIDcxNWU2OTcyNTNmMjRhYzViYjZlNTg5YjhjZWY2NDg2ZTc2Mjc1ZWQgbGVnYWN5LXRydW5rCis3NDc4MyA5ZjFkNmQxZGJiMDA4MGM2ZTU1YzczNGQ4YTg0MGNiZWY5Y2RjY2NiIGxlZ2FjeS10cnVuaworNzQ3ODQgMWExYWY5ZmJkODMxNzk5YjE2MzY3YWUwZTRlMGIxNjc3MjA0MWFmNiBsZWdhY3ktdHJ1bmsKKzc0Nzg1IDI1MTNhZmY0NDVjMmM5ZWMxNTYzNDgwZmQxZGI3MWE0ODE4ZTZhYTQgbGVnYWN5LXRydW5rCis3NDc4NiA3NjQzZTI3MzA0Mzc2NGU2ZTA2NDUwNDNhMWZhNmRlOTY1OWM5NzdkIGxlZ2FjeS10cnVuaworNzQ3ODcgOTU4NGI4ZTIyZjc2ZmJhODJjZjFlZjgzMTA0MGE2MjU0YzY1Y2NlNyBsZWdhY3ktdHJ1bmsKKzc0Nzg4IDZkNDVmYmM4NWJkZjNmZGI0MjBkZTU1YTAxM2Q1OGJhNzVjMDQwZmIgcHkzaworNzQ3ODkgOWIyYTQyZmJkMDRiNDJkYWVhNWFiZGJjMDlmYTA0ZDI4YTViNjI1ZSByZWxlYXNlMzEtbWFpbnQKKzc0NzkwIGMwNGE3YzM2NTVmYzBkYjdjZTQ4OWE2YmM3YTMyNzUxNjkwYmFkOGMgcmVsZWFzZTI2LW1haW50Cis3NDc5MSA2ODU1OTUxYWZmMTk5ZTI4ZDg1MDA1YTZiYjgwZmYwNzI3NDlmM2FiIGxlZ2FjeS10cnVuaworNzQ3OTIgY2Y0ZTA4MTU4NDZjNTg0YzkwOWE2NGZmZmYwN2Y0NmY3NDVjYTM3YSBweTNrCis3NDc5MyAzYWZmNTk3OTEwYzQxYjlmMmFmMGJlYTU4MjBmMDFhODRlNDE2MDU5IGxlZ2FjeS10cnVuaworNzQ3OTQgOGM3NzcxZGNlMDQ3NGE4N2YyZTZiN2E0NTIxNTJjYTUyMmMyZDU3OCBweTNrCis3NDc5NSBkOWI1YjdkZDgyYTIyMjRiZGI1MmNhYWE0YzM4YTkxNzBjOTEwNTY5IGxlZ2FjeS10cnVuaworNzQ3OTYgMWYxZjZiZmQ0ZGZiMDQ0NDdiZmE5ZTRjNTUxMmQzNDRkZGJiN2IyZSByZWxlYXNlMzEtbWFpbnQKKzc0Nzk3IDRhYjNiNWVhZTg5Nzk4MjI4NGVlYjhmMjc2NGFhOWJmZDczNzEwZTcgcmVsZWFzZTI2LW1haW50Cis3NDc5OCA5YWQ2ZDcyYmNkYTViNTQ3YmZiNTJiNWZlMTFjODc1YWNmMWU4ZTRlIGxlZ2FjeS10cnVuaworNzQ3OTkgMjFlOTA3YTM4MzZmM2M5ZTM3NGUxYzNhYjE0ZjJhYWZhNzU1MjIxYSBsZWdhY3ktdHJ1bmsKKzc0ODAwIDc4NDdiNDA5Yjc5YzFjYjc0NWMyYmMzN2E0ODQ0MjZlN2NjODZiMTIgcmVsZWFzZTI2LW1haW50Cis3NDgwMSA0Y2NjZjNjZTE1YTA5YzYyN2RhNmQ0M2E1MDc5MWI1ZWY0OTJkMzkwIHJlbGVhc2UyNi1tYWludAorNzQ4MDIgZGE4NTNlOTgzZjA4MjRmM2ZiNWM3Yzk2ZjFlM2IwMTNhM2I5OTIzZSBweTNrCis3NDgwMyAyZDU3NWYxNmJjZWNkOWY2ZTA4Mzc4NGIzMzdiYzIzYWQyZGUzNzE1IHJlbGVhc2UzMS1tYWludAorNzQ4MDQgODUwZGFmZDRhMjQ1M2Q1MjQ2MTAxODMxNzdlOTZiZmJkN2ViNDNiYiBweTNrCis3NDgwNSA0ZTdmNmJjODEwYjM2MGQ5ZTg1NzQ4M2U4NDNjYzJkYTM0YmM4ZTg3IHJlbGVhc2UzMS1tYWludAorNzQ4MDYgYmQ0MjAzODhlNmIxZGExODk4NWE4NzQzNjA2OGYzOGIyZGRhNmI3MCBsZWdhY3ktdHJ1bmsKKzc0ODA3IGE2ZGYwNzRkMmUwOTNmYmIwYjJhNWIyM2I4YjU2Y2ZhMjZiYmVlODUgcmVsZWFzZTI2LW1haW50Cis3NDgwOCA5NDYyNDA0ZGY0ZTEwY2ZkYTFlYmZkZmM2YWZhYzY4MDRlNDM3Nzc5IHB5M2sKKzc0ODA5IGFiNGE4N2ZlZjFhZTZlNGE4NGU3ZDgwNGNjZjkxZDJjY2MzZGNiYTkgcmVsZWFzZTMxLW1haW50Cis3NDgxMCBhMzNmOTZiNDNmMjRhY2IyMTYzYzZjNWNmNjM1YTViNzQyOTVkNDI3IHB5M2sKKzc0ODExIDQxMDJiNWYyYTJmMWUzY2U2NGZkMGJjNjU3ZjgwN2JiZmJjMGFiZmUgbGVnYWN5LXRydW5rCis3NDgxMiA4NTE5ZTI4YjI4NGY3OTRhYjZmNjIwNmRiN2FhYzExZDdkMzZjNDEwIGxlZ2FjeS10cnVuaworNzQ4MTMgYTJiYWIyZDIzNzQ2YjU1MmM5ZjhmOGJjMmNlNzUwOGEyNTcyYTE1MSBweTNrCis3NDgxNCA1NjBjMDU0YTAxYWEyZmZlMTJmZmNmYmI3YTMzZGQwNzNmNDc0ODEzIHJlbGVhc2UzMS1tYWludAorNzQ4MTUgN2Q0YzNjMDgzZjM2MTk3ZjJmMzhkZTM0NjFlZGE1OGJhZWNhMDA2MiBweTNrCis3NDgxNiA4ODVkYTE0NmZlYTVhM2RmYTM1ZDliODUyZWI0Njk3Njk1ZmI3YzMwIHJlbGVhc2UzMS1tYWludAorNzQ4MTcgNTA3YmE5N2EyZWVlZjMzOTQ1NWNiZWM2OTdjODA2Yjk2YjdiOGU3MiBsZWdhY3ktdHJ1bmsKKzc0ODE4IGJiNmFkZTUxYTBiNjIzOGQxMzVjNGE2MGJiNjJiYjI0YjE1MTJhZDUgbGVnYWN5LXRydW5rCis3NDgxOSAyZWJlOGM4MWFmZjA2OTI4YzdiZWEzODQ3YTNhNzRkM2MwZjk5MmVlIGxlZ2FjeS10cnVuaworNzQ4MjAgYzJkZTMyODY2ZDBlM2Q2NDBhYmU5MmIzNDdjYTg1NDExMzkxZDQ3YyBsZWdhY3ktdHJ1bmsKKzc0ODIxIGMwMTdhNDUwZjRhNTc2OGZiNTA2MzFhNTE5NDEwMzNjMjQ0MmYxNWQgcHkzaworNzQ4MjIgZDRjMjdkYTQ2ZGNhMGY3OTliYTQ1ZTRjMGU4ZmI0ZjU2MTZjZmYxYyBsZWdhY3ktdHJ1bmsKKzc0ODIzIDc0MmNlNThhMzE3MWJjMTJlZTQ2MDM1MDZhZTllZGMxNmU5ZDQ3MzkgbGVnYWN5LXRydW5rCis3NDgyNCAzZTE5M2QwYjFhYmE4OWQ0YmRhYWQ0YzM2MjBmODcyNDU2Zjg3OTczIGxlZ2FjeS10cnVuaworNzQ4MjUgMzM4NWU2MTgyMTEyOTQ5YTcyZDRiNDk1YWJiMDdiNzBmYmE0ZDA0ZSBsZWdhY3ktdHJ1bmsKKzc0ODI2IDRlNjFkN2JkMWIzNjQ2YmEzZmEyOTA5ZTRjMTYyZTE5MzM5ZGRjNmYgcHkzaworNzQ4MjcgOTZiNjQ1NzUyYzMzNDc1YjM5NjZkYzUyNTEyYmVkZjgzMmI2YTYwZSByZWxlYXNlMjYtbWFpbnQKKzc0ODI4IDI2ZGYwYjg1NmJjYmM0ODAzZjZhMDU3ZDMxOGQyNGFmNDUwNzM3YzYgcHkzaworNzQ4MjkgNGNiZGFiNjAxYjg3ZmYzOGI0ZWZkMmJjMzhlNjAyNDQwZDRlZDg0MyBweTNrCis3NDgzMCA0YjY0ZGIzNmYwOWI4ZmRkYzI2MjY2ZjA3YTc1NDg5NzY3NDljOGMwIHB5M2sKKzc0ODMxIDMxYzIzNmM1M2IwMjQ1N2U0ZjljYTE3ZmI4ZGVkZDRkNWJiMzliNzUgcHkzaworNzQ4MzIgZjEzOTE0NDJiZDBiNWQ4ODMzN2EwZDVmZDAxNjUwYjJmZDA3YmRiMCBsZWdhY3ktdHJ1bmsKKzc0ODMzIDliMDAzYmJjYTVkYmY1YzgyYzU1NWFkNWIyZTk5YzIwNmY1MmM5MWEgcHkzaworNzQ4MzQgZDgwNzIyMDZmZGM2MWVhNjkyOWI2NTMwZjk5MWUzNWUzMDFlYmUwNiBweTNrCis3NDgzNSBiNmUzOWVlYTFiYmY2ZWYzZmIzMTU1Y2YwYTRkNTEzY2Q3YzdlOWEwIHB5M2sKKzc0ODM2IGZhOTEyNzBiNjA4N2IwZmRmMzkzY2MwODViZThkYzhlNjA5OWI3MGYgcmVsZWFzZTMxLW1haW50Cis3NDgzNyBiZTRkNDIwMDlmN2U1YmNiN2JlZWViMzQwMjNlNjZjMDMzMDU0ODgwIHJlbGVhc2UzMS1tYWludAorNzQ4MzggMzI0NDhmOGE2YzYzNmYzOWE2MTc5ODVkMTM3YTU2YWRiOWFjMzQ3OCBsZWdhY3ktdHJ1bmsKKzc0ODM5IDdhM2VkMWI0MzQxMDk3NTNhNTdkZTgyZDdhOWMzM2IyN2U2OTRkNzggbGVnYWN5LXRydW5rCis3NDg0MCAzMzRjNjBmNTEyNTk0YzgzNzZmYzMwZjUyOWUwMzk3YTE4ODBlNmQyIHB5M2sKKzc0ODQxIGIwZDAzZmEwNzNlYzVkMTY3YTAxNjQ3ZmZmMzYyNTM5NjJkMTc4NGYgbGVnYWN5LXRydW5rCis3NDg0MiAxYWQ5ZjJiZGEyMGEyNmM3NDMyNjFlM2FhMDJlZWVhYjA3NTgzYjc1IHJlbGVhc2UyNi1tYWludAorNzQ4NDMgM2FjZDMxZWFkYmI4ODA3MDQ1Y2RhMDk2YjdmNDE0MTY0YzZhM2QxMSBsZWdhY3ktdHJ1bmsKKzc0ODQ0IDY2MWM4YTkzODkyZmY3YzEwZGRlMDFmMGQ4YTVlYjYxZWNjZmVjNDAgcmVsZWFzZTI2LW1haW50Cis3NDg0NSAwZjA5ZDM4Zjg1MmU4NDdhODZhNTdiZDFjMmViZjg0Mjk5ODQyNjMzIGxlZ2FjeS10cnVuaworNzQ4NDYgNzhmZjlhNzRjYjRlOWI3ZGFhMTYxMTZlZDA2NjA2NjFiYzMwOGFjMCBweTNrCis3NDg0NyAxYjE4OTY3ZmJkNDA4MTA2OTFlYTU4MjhjOGUwMTdkMTk0NDJiYTA0IHJlbGVhc2UzMS1tYWludAorNzQ4NDggOGFiMzA0MDM0MDIxYTU3NzBmNzMwZjExN2U4ZjZlODU3NWZhMGZmNSByZWxlYXNlMjYtbWFpbnQKKzc0ODQ5IGZhYjk5ZThkMjhjMzI3NWJlZDI1MzAwZDZiYmY5ZDNkOGI0ZGMzOGQgbGVnYWN5LXRydW5rCis3NDg1MCBhZTFiMWNmNDdjMGNhMWYzMzVlYzdhYzM4NjNlZDBmMDk4MTJmZjY5IHJlbGVhc2UyNi1tYWludAorNzQ4NTEgMWUwOWRjNjhjOGYzNjM4YmY2Y2JkODMxNTY1ZmYyMGJhZDRkNGViYyBweTNrCis3NDg1MiAyZTk4NThjMGQzNjRkMWNlNGJkZjAwMjhiYTRlYTY4NjFkYzk0ZmUxIHJlbGVhc2UzMS1tYWludAorNzQ4NTMgYTJjYmI5NDIxYTExNDNhYzVhZjAzMjc4NTI1ZDdkMTYzYTg3Y2Q1MiBsZWdhY3ktdHJ1bmsKKzc0ODU0IDkwNjllNTJjMGJlZGMyNTMzMmYwMjI5OTUzYzg1YzUwYWQzNjNkMTIgcmVsZWFzZTI2LW1haW50Cis3NDg1NSBjOGNiOWVmMGNkMGEwNGQ5YmQwMGQwMTBjNmE5NGJmODk2MjgxNTE3IHB5M2sKKzc0ODU2IDQ2NjI1YmNhMGNmYjU2ZjQ5ZWZlY2JkYjg5ZTkzNjFhNDQxM2M4NWYgcHkzaworNzQ4NTcgNzZlMDhiOTFkOThlMGFkYjc0MDg3YzZmN2U1ZGE5MGUyZmZmMThiNCByZWxlYXNlMzEtbWFpbnQKKzc0ODU4IGNkYWViMjUxZDQ4OGJlMzY0NTE0M2Q0NzZmZTkzMGEwMDMzNjkxZTAgcHkzaworNzQ4NTkgMTczYmVkMGUwNGM0ODk2NTJlNTcyZmE5ZTAzZWNkYmVkNGI4MjY0NyByZWxlYXNlMzEtbWFpbnQKKzc0ODYwIDc3Yjk2YTU0MjRhMmM2NTJmNzVkZmEzZTM3YjY3NDczYjg4MmQzMTggbGVnYWN5LXRydW5rCis3NDg2MSA3YzRkNTI4NjAxMzFiNmRhOWNiZTQ5ZTFiMWRiOThmZjcxYWMwYmNlIGxlZ2FjeS10cnVuaworNzQ4NjIgOWExMDk3MTQwM2E1YWQwZDQ5YzE3ZmM3MTEzZjI0OTVmYzhjN2NmOCBsZWdhY3ktdHJ1bmsKKzc0ODYzIDdmNzI2MTE1YmEyOWEwZTYwNDYxNDgzMDI4YTI1NWYxMmEwNjhlMDggbGVnYWN5LXRydW5rCis3NDg2NCAxNzJiMmQzNmRhNzdjZDI4MzEzNjgyZTZmMmZkOWQxY2U4NGRmY2RhIHB5M2sKKzc0ODY1IDQyZjg4MDgzZGRiZGYzZTE4ZjUxYjMwNGYwMWJlOTM2OGYzODhmNjkgbGVnYWN5LXRydW5rCis3NDg2OCA1ZmVkNWU4ZWE5Y2MzMzMyNjdmYzdkNjg4MmJiNDc1ZWQ5NDlmMmE4IGxlZ2FjeS10cnVuaworNzQ4NjkgMzhhNTJiNjcyNDI5MjYwMzBkMGJkNDkxNDM4NzkwNGQ3NTA3NTVjMiBsZWdhY3ktdHJ1bmsKKzc0ODcwIDBmZjM3ZTIwMDI5MmM5MzZiZjY5NDRhNGFjOWJjZDA1ZDk0ZjNkNTggcmVsZWFzZTI2LW1haW50Cis3NDg3MSAxMmYxNDVkNzU1MTNlYjk4NmFhNzhmMDQ5MzYxMzdiZTc2NjlkODM3IHB5M2sKKzc0ODcyIGE5ODA5ZjNiMTY0ZmZhNmYwZDhlZjMwZmNhNjE4ZDIwMjgzYzI1YjEgcmVsZWFzZTMxLW1haW50Cis3NDg3MyA4YzNiMmRkYTQ3MDM2MGU1MjI1MWQzNjVmZTE3NGI2MzBlOGI5YmY0IGxlZ2FjeS10cnVuaworNzQ4NzQgZGM5MjJhODljY2YxMGMzOGZkNmRhNWEwZGJhZDdiNDAwMjk0ZWIzZSByZWxlYXNlMjYtbWFpbnQKKzc0ODc1IDBhNTgwZGM3YWYxMzc2NDA0NTUzZmY3NTNmMTYwYTVhNzc2NTE1NWUgcHkzaworNzQ4NzYgNmY0Yjg1MmI4MmYxNzUwN2M1OWFlYWFkZDI5OTdiNTZjZTQ3OWY4NSBsZWdhY3ktdHJ1bmsKKzc0ODc3IDlhY2I4ZWI3MmE5MmZhNWY1MzE4N2I2MmY5YTMyOTlhZGViMWUwYjIgbGVnYWN5LXRydW5rCis3NDg3OCBjYTkyMGMxNmIyMDU3ZThlNDU1MjExMTAyMzk2YjI5M2RkYWQyMmUwIGxlZ2FjeS10cnVuaworNzQ4NzkgZTBkNWMwYzM4MDhjZTE4ZDBmOTEyZGExM2VkMDdmNzIxNGZkZTczMCBweTNrCis3NDg4MCBhMjdhYmQzNTNlZDFjYTEzNGM4OTczY2M2ZTRkNGFjMGRhOTViMGNlIHJlbGVhc2UzMS1tYWludAorNzQ4ODEgYjFiNjE1YTkxMWYwMzFmMGJhNGQzY2Q5OTk4YjM2OGZmNjE4YmQ1NiBweTNrCis3NDg4MiBlNDk3NGU5NWZhNjQ5ZWVmNjg1ZmUyODAyNWNkYWZlNzhmOTE4M2E3IHB5M2sKKzc0ODgzIGIzOThhZmVmZDM2OTY3YTJiZmIxZjhjZTkxYjliZTgwMWQ2NjdjN2QgcHkzaworNzQ4ODQgYmEyMjhlNWMzZGFmNzk2Yzg2Nzg4MDlkNjFmYmUxYzM2NmU2ZjZiZSBweTNrCis3NDg4NSA5Y2VlYjYwMmRkYTNiOWI2ZTI2NDY5OTZhZDZjNzEyMWRlYTAxYTEyIHB5M2sKKzc0ODg2IDBlNDRkY2MwYjIwZDM5ZDcxOTNjNjUzYWYyMDg0MTVjZTEzN2RmNmMgbGVnYWN5LXRydW5rCis3NDg4NyAyZWExZmMyNjg1NDI1MmM3Y2QyMjNhOTdhMzhhMzFkNjY0MGE5ZWVkIHJlbGVhc2UyNi1tYWludAorNzQ4ODggZDNlZTczOGZkY2RiMTdjZmMzNmQ0YjI5NGVjOWNiZDEwODVmODBkYiBweTNrCis3NDg4OSAwNzJlM2UzMGI1MGNjMjFkYjIyY2YzNTkyNzdlNzNmMTgyNzI5ZTI1IHB5M2sKKzc0ODkwIDU0N2Q0MWIxZGU5NzM4MWJlNTMxMmZmMmNjNjJiNmFlYmZkYzljOTIgcmVsZWFzZTMxLW1haW50Cis3NDg5MSAxYzU0NmNmM2ViMTBkNmQ2ZWNjNDMyMTNkNmE0ZDgyNDZhNzIxMjIzIHB5M2sKKzc0ODkyIGQ2MDFmZTM3ZmM1NGNlMDE4ZjM3NmI0M2JjODdhMmY2MGI0MDhmMmMgcHkzaworNzQ4OTMgZmQyZjRhZTkzZDAxMjdlZGZjNTkzNjk5ODgwMTdmMWRkNzU3MzIxZiBweTNrCis3NDg5NCBiNjNjNzE4MDYxOGUzNDhhNDI3Y2RjNTIyZWE5OWE5NDZhZTczZWNkIHB5M2sKKzc0ODk1IDk5M2VlMzllOGJjZmVmYTlkYTVlMDk1YzdkYmRjNmI1ODRhZDI0ZWEgcHkzaworNzQ4OTYgYmFlOWY0ODIzYjhlMTFiNTQ2NDg0NzcyZTc1ZWJlM2RmNTNjOWVmOSBsZWdhY3ktdHJ1bmsKKzc0ODk3IDVhMWU4Nzk4MzJmZTMzYzc3MTY1NmFiNjEwMjlmYjAwZmUwMDQzMGYgcHkzaworNzQ4OTggOTgxNzkxNWViZGViYzUxYTgxOWM5NGI1NzAwZGM0MTU3NDJiOTZjYSByZWxlYXNlMzEtbWFpbnQKKzc0ODk5IGRlMzM1N2MyNjBiNjA3Y2FjZjM2ZTc5NTVlNTFmMDM1YWFlYjRkNGYgcmVsZWFzZTMxLW1haW50Cis3NDkwMCBkYTA0YjE1MmE2ZmUzZjY2ZmI5NDUzOGNmOGY1NDRhYjliN2NiZjZmIHB5M2sKKzc0OTAxIGIzMjZlN2Q2NjQxMzRhODNlZGZhZTBkN2M2ZDQ0ZTQwMjJkZTVhNTggbGVnYWN5LXRydW5rCis3NDkwMiA3YTVjMTE5Yjg2NjkwMmY2MjA2MmNmYTMyMzA2ZjZjOWZmZGUyN2Q3IHJlbGVhc2UyNi1tYWludAorNzQ5MDMgODRmMWM5NWI0ZTk3NDhmOWE1NDk5M2NhNjY5ZWYyZWU1N2Q4OGEyMyBsZWdhY3ktdHJ1bmsKKzc0OTA0IDZmY2EzNTM1MmY3Yjc4MTY0YmYyYjMzOGMyMTYxZDVmNTZjOGU2OWMgcmVsZWFzZTI2LW1haW50Cis3NDkwNSA0ZjE1YTEzMWFiMDcxOTVjY2NjODM1Mzg3M2NkNjk3YzYyYzBhMDAwIHB5M2sKKzc0OTA2IGM3NmY4NDM4MzhhNWZhMDU3NWRkZmI0ODE3OWM4YjQyZDNiM2E2MjggcHkzaworNzQ5MDcgMzI4OWZmYzA1Y2M3ODQ0OTQ1MTNlMmVlN2U2MGFmYTA1MjE1OTNhMyBweTNrCis3NDkwOCBiMzVkZDFiNjI0OGUzOTM5Njg1OWI5MDQwOTk0YWIyZDI1NGViYjBhIGxlZ2FjeS10cnVuaworNzQ5MDkgYTQ0MmMyNTA0YTU3ZTFiNWI3MTdiNzg4NTYxZjBiMjY5ZjM5ZWZhYSByZWxlYXNlMzEtbWFpbnQKKzc0OTEwIDM3ZTk2MjQ2YmRhMWM2NDkyNjkyMWJlMjMyNTIyNTA2ZjJiNmM0ODcgcHkzaworNzQ5MTEgZGE4MTg2MTY4NGU4OTNhNjQ0ZjczYzcxNTA5MmQ4MDgwNzhmOTJjMyByZWxlYXNlMzEtbWFpbnQKKzc0OTEyIDFkMmU2YzQ0MWE1M2YwMTVmODY5MTJiM2QyMDRkNDk2MGJhOGY1YTEgbGVnYWN5LXRydW5rCis3NDkxMyA3N2UwN2FmNmY4N2EzYzg0NTU4MTQyODQwMDRiNTVjYjJiYzM4N2Y1IGxlZ2FjeS10cnVuaworNzQ5MTQgZDRlMDM2YzZjNjBkNGE0MDBkZjY4NjJiZTBiMWZmZTJlNGUzMzFjNiBweTNrCis3NDkxNSA4NWVmMWMwNGQ4ZGRmNWNlYThhYTk2Zjc3MGMxMjBkNTNmN2VkNzVjIHJlbGVhc2UyNi1tYWludAorNzQ5MTYgNTE3NDhkZmNiNDQ0YzcwMDQ0ZTU0YjkxMGY5Y2IzMTU4YjQ3MjZkMyByZWxlYXNlMzEtbWFpbnQKKzc0OTE3IDk5MzFlMTc3ZGE4MTM4ZWIwOWI4MjhiYjliNGRhOGRhNTAxYmU1ODQgbGVnYWN5LXRydW5rCis3NDkxOCAzNzUzOGI1NTBmNjg1YWYzODFjMzRhZTM2OTVmMGFiYjBhNmM0MDY0IHB5M2sKKzc0OTE5IGZkMTg3NzQ1MzA2MDYyNTI3MzdkMzk0YmM1N2IyNTBmYmExZGMxNmMgcmVsZWFzZTI2LW1haW50Cis3NDkyMCBkMWQzYTA3YTBlZDdmNDlmMGY2MTEzZTAyZTZmZjNkMDhjNDIwODExIHJlbGVhc2UzMS1tYWludAorNzQ5MjEgM2M4M2EzY2FjZDc3OTg1YmU4MzU1ZDNjYmVlYWZkZGRjMDAwMTVhZSBsZWdhY3ktdHJ1bmsKKzc0OTIyIDA0M2ZkZGE3MDZhMzc2ZmNmYzMyNTM4NTkyODMyOTIwOWQ4ZDQyMjIgcHkzaworNzQ5MjMgODIyYTI5Zjc2NjBiNTE3ZmVkNjdkYzA0YjVhMGQ4N2JlNjg0MzY3ZCByZWxlYXNlMzEtbWFpbnQKKzc0OTI0IGI0Y2E1OTQ4NDkxNDNkNjU2M2VjNzE1YjNkOTljNTRiMTY0ZmVjYTUgcmVsZWFzZTI2LW1haW50Cis3NDkyNSBmMjU1NWFkNWZlMDllYTAwMGM2MGFhYzI5ZGI1YjQzMjJjNmFhZTJlIGxlZ2FjeS10cnVuaworNzQ5MjYgMjIxMWFkM2U3YmJlZDRiOTM4NjhiODVkN2JhZmFmODQ1N2U3ZDcyYyByZWxlYXNlMjYtbWFpbnQKKzc0OTI3IGIwZTUxMDVmZjk3YmI5Y2M0ZjJhYjlhMjlmNmZmNTE0NGVhYTlkODYgcHkzaworNzQ5MjggN2IyYmQzOWIyMWNkMWM2YmFkNTlkMjA0YjE2OWZiZGIyYTkyYjY0YSByZWxlYXNlMzEtbWFpbnQKKzc0OTI5IGY2NGMwZWI4Y2M2MjA5ZjRjMjRiZmY1YzMzZmJhZDIwZDc4MzY5NDIgbGVnYWN5LXRydW5rCis3NDkzMCBmZGEyOTJmMzE2MzI0MjJjNjVkZGMxZWU3MjU0MjMzNGY2NDNiZjQzIGxlZ2FjeS10cnVuaworNzQ5MzEgZjEyY2U3YWRiZDMwMDA5MGQ0MmI4YTMyMTNmYzY0ZWYwNDg1NjdhYiBweTNrCis3NDkzMiA2MTZhNjY5YzkwMjNmZTc0NzNhNzViMDk3OTNjMjc1OWU2YTlkNGI5IHB5M2sKKzc0OTMzIGI0YmI0YmI4Njg5Mjg5OTY1M2M5YzE2Mjc1MDIyMWQ4Yzk4N2E5ZjggbGVnYWN5LXRydW5rCis3NDkzNCBkZTY1OTA4OTczZDAyNDM5MWVkOWMxZWRjZWZmOWQ0MzczMmI2YjcxIHB5M2sKKzc0OTM1IDFiN2JkYWUwMjE3OTQ3MGVlYjIyYjE4NzQxZWY2NTM3ZjJhZDMzN2QgcHkzaworNzQ5MzYgY2MzMjliYjE5ZGE1ZjFhOWZjMzg1MzYyOGNmY2ExZTQ2M2VhZWExNSBsZWdhY3ktdHJ1bmsKKzc0OTM3IDI0M2ZhZjBmNWY1ZTQzMTAzNWViNDMyNGQ0ZWI2ZDIwYmM4MmNjNjUgbGVnYWN5LXRydW5rCis3NDkzOCBhMmIyY2MwZmE3YWQ0ZDBmNDk0YTQwMGVmZDFmMWJlNjg3NDRhMjA0IHB5M2sKKzc0OTM5IGNmNzVjMGQyZTNjNzZiMTJkODkzYzY5NGY5YmYxYTE1MDlhYmFjZDEgcHkzaworNzQ5NDAgYzViMTUwMDE3MmY4OWNmNzU1YTIxMzNhMjIzODA2NDAwNTEzZjAxYyBweTNrCis3NDk0MSA4MzE1MjVmMTVjNTcwMjkxMjJhMTJhYTNjZDY0Y2IxZDI0YmZkOTVhIHB5M2sKKzc0OTQyIDA3NTIxMzlmM2RhMWQzYWNlNzI3ZjEwYzkxOWRmNGYxZDcwMDQwMmIgcHkzaworNzQ5NDMgNmEyNzhlNGQ5ZjYxOGRiMmQyYmI1NzQ4ZWQ1NjUxMzMyNzA0MWNhZiBsZWdhY3ktdHJ1bmsKKzc0OTQ0IDMwY2M0ZjA3MzI5MmVlYTI2ZDFmMTMxNWZiMTE0MzYxNDFlZGI1YmMgcHkzaworNzQ5NDUgNThiYTg1YzBkNGIwYjBmZTlhMGY4MmE4MGM5ZjU4NmRjN2JiOWI1MCByZWxlYXNlMjYtbWFpbnQKKzc0OTQ2IDQ1MTQ1YWViNjMzMTBiMjMyMjNmM2RjMjI0NGU1YmNlYWI1ZWY2MjkgbGVnYWN5LXRydW5rCis3NDk0NyAwMDA3MDI0ZTllMjM0OGU3ODM1N2Y5ZjhlNTY3OGU0NmU1NmMxYTNlIHJlbGVhc2UyNi1tYWludAorNzQ5NDggNGM3MzQ5YjlkMTU5YTdhZGEzNTAxZWJjMTkxYTg4MWQ2ZGM0YTNlZSBsZWdhY3ktdHJ1bmsKKzc0OTQ5IDFlYjQyNDI1NzM0NWNkYjc2YmViYzE0OTM2ZDM0MTc3ZDFkOTVmNmMgcHkzaworNzQ5NTAgMWIxODM2Y2ZjZjI2MmE5MDgxODlhZDRjNTI5ZWE2YTQ2NzE3YmM5NiByZWxlYXNlMjYtbWFpbnQKKzc0OTUxIDgwYTM4Zjg5M2I3ZjNmMDhlNjQ5MjczOThkZjVlMmRlZDQ5YTdmYmIgcmVsZWFzZTMxLW1haW50Cis3NDk1MiBhMDlkYTU2ZTQ3OTY5ZWZhZTEzYmFkZTk4M2VkMDU5ODQxYmY0ZTM5IGxlZ2FjeS10cnVuaworNzQ5NTMgMzliNDYzMDc5N2ZhY2U3ZjRjMDRhYWE3OGQ3MGRiYWMyM2NhYWZiNSBsZWdhY3ktdHJ1bmsKKzc0OTU0IDY3OTFjMmIxYTdkYzk4OGRmMTYwYTA4MjZmOGNiM2M2MDQ2ZDQzZDMgbGVnYWN5LXRydW5rCis3NDk1NSA0MTZiNjQ1NTA3ZDBhODQzOTg5ZGZhNjUyYmJhZDhkYmExZGQxNjI3IGxlZ2FjeS10cnVuaworNzQ5NTYgOGNjYzIzYWZlYTNkMTg5Njk5OGYyYzIzZDkyYTU4MDYyZDFiNGQwYSBweTNrCis3NDk1NyBlYTY5N2NkZTY4ODIzNGY3YjJiYzVlMGZkNTIwZDcwMmE3MmVlMDNkIHJlbGVhc2UzMS1tYWludAorNzQ5NTggZjU0ZDMxZTVmZDRkNmYwMGJkOTU5YzFhNGRjYjdiZjY0ZWYyNDI2NCBsZWdhY3ktdHJ1bmsKKzc0OTU5IDJjNWE3NzUwYjcxZDgyMWQwOTAxNGUzOWNmZjIyYWVjMDYxMWU3ZmYgcmVsZWFzZTI2LW1haW50Cis3NDk2MCBiZDg0ZjQyYzM2MzM5NThiOWQ1MmNhMTNhMzJmNTNjZWFmOGExNWVlIHB5M2sKKzc0OTYxIDUyMmJlMzZiMjljZDIxNDgxYjhkYjI1NjVjNjA0YzlmNWI5NDVkZTMgcmVsZWFzZTMxLW1haW50Cis3NDk2MiAyZGRkZGM2NDFhOTg3M2YwMmZhOWY4M2YxZTZmYTIyZjdlZDJlMGNiIGxlZ2FjeS10cnVuaworNzQ5NjMgMjcxN2Q4NWFiYTJlNmJjM2U3MzA5MTU2ZWEzMzMxMGM2YTBkMTU4MyByZWxlYXNlMjYtbWFpbnQKKzc0OTY0IGU1NjFmMTBjN2IzMTE5MjhiZTc2MDkxYmFlMjZlMDNjYmNlNWMyNTcgbGVnYWN5LXRydW5rCis3NDk2NSBkMTMxOTU2NTMzYmYxY2Q5Y2E4ODM3ZTE2ZjFmZTU0MWI0ZTEzMmU1IHJlbGVhc2UyNi1tYWludAorNzQ5NjYgNjllZTE1MDFiMTAyNjljM2Y3ZWQzMWEwMzkyY2IxODM5YTdhZmY4NSBsZWdhY3ktdHJ1bmsKKzc0OTY3IDQzNmNhNzc1ZjI2Y2FhODg0OWU0ZjliZGY3YjkyMDMzYTcxYWZkOGIgcmVsZWFzZTI2LW1haW50Cis3NDk2OCAyMjU0OGM3ZWFmMzc1YmQ3NmUzYzcwNWYxMGEwZDNlMTRjOWVkOTgwIHB5M2sKKzc0OTY5IGIzZDI1ZTZmNjZmMTJkZTU2NDk3NDU2YzVjYTIzYmFkNDMxOWM5YmYgcmVsZWFzZTMxLW1haW50Cis3NDk3MCBiMGEyZmJhMDA0NTg2MTE5MDhhOGRiYmM2YTgyZDMxZjBkYjcyMTJhIGxlZ2FjeS10cnVuaworNzQ5NzEgMWM1MGRjMjEzMzEyZGM2NDU3MzM3OTM1ZDI3OTVkOWZkZjNiNmFkYyBweTNrCis3NDk3MiBkOGMyNDhhNTkzMTA1MGExZjk3NWMzZmY5Yjc2NDk4MmY3NDMwODlkIGxlZ2FjeS10cnVuaworNzQ5NzMgOTgxMDRhYjg1OWZhOTY3YjVhYjRiNWFjOWRlNGQ5MGI4MWE5OGI1ZCByZWxlYXNlMjYtbWFpbnQKKzc0OTc0IDgwNmM2MzYzODVmY2NkYmFiYjU4Njg4MTRkMWFkMjI4NGJjM2UxNzQgcHkzaworNzQ5NzUgN2UzOTg1ZmFmOWE4YWNmZTAyN2IwZDhiODkzZWFhNzgwYTM5MWI3ZiByZWxlYXNlMzEtbWFpbnQKKzc0OTc2IDdhM2ZkZDkzYjU2NjRkYTI1MTRmZmIzYTQ5NWM1ZDEwMWQ5ZDIyYjMgcmVsZWFzZTI2LW1haW50Cis3NDk3NyAxZGI2ZWU5ZDdiZTdhMWQ2YzUzM2FhMDdiYTI1YjA5ODVjNmU3ZjVjIHJlbGVhc2UyNi1tYWludAorNzQ5NzggZGI5N2MwNDJjYzFlZDViOTVkYTg4NDRhMzk1MDdlNGNjZTEzMjhkYiBsZWdhY3ktdHJ1bmsKKzc0OTc5IGNiMzQyOGIxZjRhZjI5YjI1YjQ4ZDI5NzY1NWFlMmVhODQwYmNiN2EgcHkzaworNzQ5ODAgMzM5M2ZmYzBkZTQ0ZTZhM2NiY2JiZDJjYTczZDc5NGI1ZmEzZjVjNiByZWxlYXNlMzEtbWFpbnQKKzc0OTgxIDkyMzQzMDVkMzc0MDM4N2E3MzI2ZDM0OWE0N2UzNTYxMDg5MDcyMjkgbGVnYWN5LXRydW5rCis3NDk4MiA2ZDhiNTRiMjFiODc3ZWZmY2NiMmIxNTU0Mjk0ODRiMWMzOTJkN2U1IHJlbGVhc2UyNi1tYWludAorNzQ5ODMgMjczYzIzNDgwMGMxODQxZDMwYmJlN2I2NDg1MWI3ZDBiN2I4YzEwYSByZWxlYXNlMjYtbWFpbnQKKzc0OTg0IGNjM2Q4YWZmNDU5NTYwY2E0NGY4ODU1MzFlM2U3NWEyMzdkZTBhNjMgbGVnYWN5LXRydW5rCis3NDk4NSBjNTk0OWUxMmM2OTI5ZWQ4ZGI2MWI0ZjUwYWVkZDZlYzQ3ZTJjOGQ0IHJlbGVhc2UyNi1tYWludAorNzQ5ODYgOWM5MTY1YmQyOTNhZTI0OTg2NjFiYzcwNTY5ZmNhMGEyNTYxOTk3ZCBweTNrCis3NDk4NyBjNjNmODkyM2UyNGY2OGI2ZWYzYmVhMmQ1ZTU4MDIxMTdmNGJmOTkyIHJlbGVhc2UzMS1tYWludAorNzQ5ODggMmRmOGJlZGVjNmQzMzM4YzM3ZGY3NjMwYzU1Yjk4N2ZlM2VmM2Q5YyBsZWdhY3ktdHJ1bmsKKzc0OTg5IGE5Y2UxNTg5ZDY5NGQyOTg2NTU5YjViZGRlOTc1NzUwODljZjZiNGIgcmVsZWFzZTI2LW1haW50Cis3NDk5MCA3YzQzNDY4N2I0MjkzOTZlMTdhYTVlMjExZGMyYmI5Mzc2ZDE2MmIzIHB5M2sKKzc0OTkxIDQwMDhhMDEzN2RlN2IwZDY4MDIxYWFlODg0NjdiZTgxZTcyNWVhMDkgcmVsZWFzZTMxLW1haW50Cis3NDk5MiBkNjI3YzU4OTJmZDU0OGVmNDYzYmY1MTAzMWEzYzc1ZTEyNTMwY2FmIGxlZ2FjeS10cnVuaworNzQ5OTMgNWM4NzAwY2M5ZDE2ZWQyNmI5NGM0ZmFlNWJmMTNkOTcwMGU0NjJhNCByZWxlYXNlMjYtbWFpbnQKKzc0OTk0IDdhNzY0MmFiMTFiMzkyN2NkMjJhNDdlZjllMzIyZjkzYWNjOWY3NGEgbGVnYWN5LXRydW5rCis3NDk5NSA2MjdiMzQ5ZGYwZThlMjc5MTdlYzRmZTdlMTM0NTA5N2MwNjI0MWYzIHJlbGVhc2UyNi1tYWludAorNzQ5OTYgMDE4ZjJlYWUyNTI2ZmUyNGRkZDQ5ZDNkNDBmMWI2Zjg3YjYxZWIxNCBweTNrCis3NDk5NyBmOGU2OTZlNGNmZjFkODA0YjRjZTZhMDY1Mjc5N2NjMzBkZWRiYjc1IGxlZ2FjeS10cnVuaworNzQ5OTggYWY3YTEyMDBmYjNmMzVmMDFkNDIwZmFmNzViM2Y1YjM2ZTUwMjEzZCByZWxlYXNlMjYtbWFpbnQKKzc0OTk5IDRiODNlYTZmYzViZGUyMTYyNzMzZTE1OTc1N2QwNDRjY2RhNzJlMWIgcHkzaworNzUwMDAgM2EzZTE0NWQ1NTJjNWM5YjAyOTNhMmE3ZjFlYTM4MzA3ZGRmMzA1NSByZWxlYXNlMzEtbWFpbnQKKzc1MDAxIDFmZmU2ZmIxOWExOGRkMDk4OWJhY2E4NTU3NWEyNTljNTQ1YWZjMzAgcmVsZWFzZTMxLW1haW50Cis3NTAwMiA3NDM1ZDU5MWEzMjU4M2FlMTI2MWFiOWRlZGUxYTQ0ZDUyM2Y4MWYyIHJlbGVhc2UzMS1tYWludAorNzUwMDMgYjc3N2UwZjBiNTdjYTIxMTkwOGQzNDM2MzA4MmU3ZTQ1MzFkNTgyNCBsZWdhY3ktdHJ1bmsKKzc1MDA0IDVmNjNiNTE0MjcyNTIwZmI5NzAwYzYyZmU1YjI4NjE5OGZjMjUwNmUgcmVsZWFzZTI2LW1haW50Cis3NTAwNSBiNzM0ZDZiNTE4NTI5NGM1Yzg0MzBlMmJlMjlhZGUzYjVkNWQ5OTUzIHB5M2sKKzc1MDA2IDM1N2M3NWQ1OWNlOTk0YmQ2NjQ0ODBmMDMxNDdjNjY1NTgyMTE3NjYgcmVsZWFzZTMxLW1haW50Cis3NTAwNyBmNzNjZGFlMTk3YzRkMWUyYTA4YTRiMzMzNWJhY2VhYTY0NDIzNmIzIGxlZ2FjeS10cnVuaworNzUwMDggNzhlMDBlYjQ1ZGJiNDBkOGFmNGVhOGVlZDkwZDMzNmRkODM1ZTlkOSByZWxlYXNlMjYtbWFpbnQKKzc1MDA5IDFmNWY3ODgxOGM1MWU4MzRkMjhiZTA0ODdjOWFhZjMwZjAyNDExNjMgcHkzaworNzUwMTAgODJkNzk3ZmY5YWEzYzM4YmY3ZjI5NjhhMzliNjFjZjVhMTJmMGFiNSByZWxlYXNlMzEtbWFpbnQKKzc1MDExIDRjZTRkYTg0N2Q5M2YwNTAzZDI5MDRkMjM3Njk1NWQxN2Y0MzZhN2QgbGVnYWN5LXRydW5rCis3NTAxMiBjMjM5MmE3OTcxNWQ2MWQ2YTIxMGFjNjJhOTRjZGY5YzkxYWMzMGU3IHB5M2sKKzc1MDEzIDU3NGE1MzJmYjQwYjE4NmU4ZTdiYTNmYTU3NjZmYmY1OWI4MWIyYmIgcHkzaworNzUwMTQgYWZkYTA4Nzc2M2FmMWVkZWQ5ZTEyNzg0MGMxNzQ0NTgyOTQ4NTIxMCByZWxlYXNlMzEtbWFpbnQKKzc1MDE1IDc3MTkxZjNhMWQyN2RkYzcwMTQ5NTliN2MyYzE3N2MwYTcxN2JhNWQgbGVnYWN5LXRydW5rCis3NTAxNiA1YjhiMThiMDBkNGNmZjA1ZWNmM2UwODQyMWM0ZjMzODUwNmE1ZmM4IHB5M2sKKzc1MDE3IDU1NTdiYzhjYmY2NWY5OTRjZTYxNTIzOGM5MGQ1NGFjN2U2ZjM2YzUgbGVnYWN5LXRydW5rCis3NTAxOCAwNmNlMjdhODJlOTllN2ZlM2VkODRjNDU2MTMxMmQ0ZTZjNTFiMTkzIHJlbGVhc2UyNi1tYWludAorNzUwMTkgY2FkYmZjNzNhM2IwZDY2MmYxYTY0MGRkMTI5YzgyM2FiYmNiMjM3NiBsZWdhY3ktdHJ1bmsKKzc1MDIwIDljNmE5ODNjZjZhOTNlNWNlN2ZmZTlhNTNmZjFlNDVhOGVjMzJjZmIgbGVnYWN5LXRydW5rCis3NTAyMSAyYWU5M2VhYzQyMGUyYWI5YTljNmNmOTRjYzljNmI1ZmM4YzY3YmUyIHB5M2sKKzc1MDIyIDRjYTExNWYzM2I2YjhmOTY4MzNhZGMzOTlhMTRiOWUwY2Q0MzIyNzIgbGVnYWN5LXRydW5rCis3NTAyMyA0YWE3ZGU2NjEzN2ZjYzNmMzZkYjFkMDVlODc3ZmU0ODUwZmYwMmZhIHJlbGVhc2UyNi1tYWludAorNzUwMjQgMzIyOGJhZmJlNmM5Mzg2NThiOWU4NGIzNTQ0NjAwYWRkZTcyYWEzOSBsZWdhY3ktdHJ1bmsKKzc1MDI1IDJkMzRhNzRmMDAxNzIwNmZlOGQ3MGNhNzA3ZTNmMzUxMjMyZThhMzMgcmVsZWFzZTI2LW1haW50Cis3NTAyNiBjYWUwNTNjOWY5Y2FjZTRiZmVhOGVjNTJkOTJkYzg4YzQyNzE1NjIxIHB5M2sKKzc1MDI3IGIxOWE4YWRkMTEyZjg4MmQ1Y2YwOTMyOTMzZGQxNWYwM2Y0NTdhZTAgcmVsZWFzZTMxLW1haW50Cis3NTAyOCBkNTk5YTNmMmU3MmQ2ZTBjNDNlNTdhM2E4ZGJkMzYyNzdhYjE3MDg2IHB5M2sKKzc1MDI5IDFkMGQ2Zjc0Mzc4YzZiNTJjN2JhNzQ1Mzc3ODIwMTFmZDY2ZDMyMmUgcmVsZWFzZTMxLW1haW50Cis3NTAzMCA2MDBlZDJkZDc2NzI4OTE5NzdkZDg0Yjk5NDIwNWExYWU0NTE0ODdhIHB5M2sKKzc1MDMxIDljYWM4YmE2ZjRhOWRjNTllY2U4ZjJhZTJiZjFmMzAzZTIyZjc0ZjIgcmVsZWFzZTMxLW1haW50Cis3NTAzMiBjMjRmMDAwMTgyZjQ1NTVjZDU5ZWI4NmE4MDE1OWY2ZmZmY2Y0M2Q0IGxlZ2FjeS10cnVuaworNzUwMzMgNjg4OTlkYzExN2ViMzVmZDM5NmJmYjRiMGQwN2IzZGI2ZTYwYjY2MyByZWxlYXNlMjYtbWFpbnQKKzc1MDM4IDU4NGRiMDNlNTI0ODA3YTRlNzllNTAzYjliMzNlZjM2YWM5NjBiMzkgcmVsZWFzZTI2LW1haW50Cis3NTAzOSBiNGFiNDllMjgzMDUxMDNjOTI1MWRmNDNjMzI2Njk2OWEzZDEyNWEzIGxlZ2FjeS10cnVuaworNzUwNDAgOWRhZjg4NDBhNDczZTA4ZTU0NzA0NTJhNzgwNGFkYTc1YTQzYmEwZCByZWxlYXNlMjYtbWFpbnQKKzc1MDQxIDUzYTZiMzllZTRiNjZkOTQzYzM3NWRjMjU4MjJkYjc1MTMyNjRhNTcgcHkzaworNzUwNDIgM2ZkN2YxMjI1NTZhOTYxYTVhOWRmNWM3ZTE3MWJjYmI2NzlmODJhYyByZWxlYXNlMzEtbWFpbnQKKzc1MDQzIDdmN2NmYWEzODMyZTNlMjVhM2RhZmQ4ZTA2YzA3ZGNjNjU3OTc4YmQgcmVsZWFzZTMxLW1haW50Cis3NTA0NSAxZDBmNDE2ZDRiYTY0MmYzNWU4YjAxMjA3MTI2YjQwZmNiZTgyNDExIHB5M2sKKzc1MDQ2IDg5NjY3MGQ0MWM5Zjc0YjMxYTgyMjc0MjE5MzA3MTFiZDQ5ZWUxMGYgcmVsZWFzZTMxLW1haW50Cis3NTA0NyBmOWE3MGYyMjU2MjUwZTcxYWEzMGJhMzMzZGY3NmY4YzMwMTBjMTliIGxlZ2FjeS10cnVuaworNzUwNDggNzg1ZWNjYzAyNWFjNmU5ZmRkMDczN2QxMzcwZjNjMmEwNmY3MDQ3NiByZWxlYXNlMjYtbWFpbnQKKzc1MDQ5IDY1NmQxZDQwZmVjYmZjNTU5YzVmN2RhODEwZDhkOGUzNGQwOTEyNzEgcHkzaworNzUwNTAgNTkyYmI4MjU5YzU0Mjc4MDQ1YTNhYzE1OGU3MmQ1OWI1N2JkOTNlYSByZWxlYXNlMzEtbWFpbnQKKzc1MDUxIDBmNGU5NWZmODU5ZDJjYWM2MDA4NGQzNTVkNzMwZDZiMWI2ZTY1NzkgcHkzaworNzUwNTIgMjhlMmNlMDBmNTQ1YmY0ZTU3YTdhZWFhYzQ0ZDNjZGM4OTU5YjRmYyByZWxlYXNlMzEtbWFpbnQKKzc1MDU0IDNkZWY5NTJiNTE1YzJiNDU4ZDk0ZDIwNGZmOGFlY2Y1MTgyZTYwNTcgbGVnYWN5LXRydW5rCis3NTA1NSAzNTY3ZTg3MTU3ZDgzNjMxYTE2M2E5MWFiMzQ4M2M3NzRmODNhMWExIGxlZ2FjeS10cnVuaworNzUwNTYgZTA3M2ZjODhkYzg5NDdmMjEwMTZlZDBkNTgxOWM2MTE1MDdjZWMzOCByZWxlYXNlMjYtbWFpbnQKKzc1MDU3IDhlYTkyMWM3ZDEwZmExMjM3MGY1OTk3MTc1NGY1MmM5YTgyMjM2YmQgcHkzaworNzUwNTggYTA3NTY4YzdhODJhY2E1MjdhZjBhYjk2M2FhMTY5ZDAxMWIzOGUyYSByZWxlYXNlMzEtbWFpbnQKKzc1MDU5IDUwYjE4YWU4Y2VjNDQ5MjdlNGFlYTk5M2RkZDY0YjBhMTEwYzYxMjcgcHkzaworNzUwNjAgMTQ5YmVkMjE3MzVlMDc0YWUzMWNmYWNmN2VkYTlmYmMzNDE1OWRmYSByZWxlYXNlMzEtbWFpbnQKKzc1MDYxIDFiOWYxNGU1ZTllNTA3ZDc4ZTZiNWQ4MDhiNWU1YTE0NjA1NjNmMzAgcHkzaworNzUwNjIgOGNjODJkYzZiYmIwMjNmMWVjNzg0YjJjMDE0NzIyYWVmNWFmYTg5OCBweTNrCis3NTA2MyAyNjQ0ZjU0ZTM2NzYzZTM4NjY1ZDE5NGEyM2Y3YzMxY2Q5MDY0MzNiIHJlbGVhc2UzMS1tYWludAorNzUwNjQgYmE4NDFiYTAwZDA2MjIyZDA5YmVkZWNhMTc2YzhjMzM5ZTI2ZGY4NCBweTNrCis3NTA2NSA3ODFlZjk1Y2I3ODE4NzZjZmUxNGJlZDVmN2E5NTY1NmZiYmE3Y2EwIHJlbGVhc2UzMS1tYWludAorNzUwNjYgMmJmYWRkYjE5YzNhMWM2NWJiYWZkZDYwZGVlMWZmN2NhNTI5ODZhYiBsZWdhY3ktdHJ1bmsKKzc1MDY3IDAwYTVjZjM3NDMxNDYyNDAxYTFkNzYyN2RiNGMzZTZlNWNiMzE0ZWYgcHkzaworNzUwNjggODVlMWRkZGU1NjllMjYzYWM0ODVjMDFiY2I3ZmQyZTk1ODU1Y2I0ZiBsZWdhY3ktdHJ1bmsKKzc1MDY5IGU5OTAyNGVkZGZiNDVjNjMzYjliOWE5NTc4ZWVhM2Y5Zjc5ZjJhMDcgcmVsZWFzZTI2LW1haW50Cis3NTA3MCA4OWZhMjY0MTcxNWQzNDlhOTQyOTVjMjZiYTFhNzk3MDQ2YjJiYjQxIGxlZ2FjeS10cnVuaworNzUwNzEgYWNiZmM2OWI1NWYzZTBkNjQ4MDdjZWQ5YzY2ZGZiNDkwZDM5NmRkZCByZWxlYXNlMjYtbWFpbnQKKzc1MDcyIDA3NmIyMzMzNTI2MzdlMjJjOTUxYThhYmUwY2UyMGI3Njc3NDFkM2MgcHkzaworNzUwNzMgYmY5YmVmNzBmN2U4YWM2MjkxZDY4NWIxMDcwMDZiNTBhNDZjYjA0NSByZWxlYXNlMzEtbWFpbnQKKzc1MDc0IDIwMDZhMmY0ODEyZDc2N2Y2OWVmN2NmYzBmOTY4NTkwZWMxMzE5Y2EgcHkzaworNzUwNzUgZjNjNTk1MjE0YWJjNDAwNjFkODI3YzEyZDYzZGI1ZWY4OWI5N2FlYiByZWxlYXNlMzEtbWFpbnQKKzc1MDc2IDczOTE0MzZkOGE3NDg5ZDQ2MWIyNzhhYzk1ZWVmZDQzOTVjNzIyN2MgbGVnYWN5LXRydW5rCis3NTA3OCBkZDQ1NjQ5NjkwOWNkNGNjYWVmM2Q3ZjY2NjNjMDNlNTk1NzI1YWQxIHB5M2sKKzc1MDc5IGIwNTBlYTdiYWY0MGRlYmM5NGFjMWQ2MzMzYmJhYzExNDFhMTg4ZTAgcHkzaworNzUwODAgN2VlMTQwYjdlZjkzYmFmZGFjYThkZmI1MzQyNjY2NTE0MTYxMWFjOSBweTNrCis3NTA4MiAwNDUzZDE4YzYzYTRlODU4MTc2ZTkzMzkyM2RkNGY1MjhjNGFkYjQyIHB5M2sKKzc1MDgzIGQ2ODg5ZGEwNjUyYzdmODZiYjM4MzdhZTQzNDM5NDU1NzZjNDU0YWIgcmVsZWFzZTI2LW1haW50Cis3NTA4NCA1NDYxMDFhNjY3N2M4NGUzMzk3ZmI2YmE0MmFmNWVjNTg0YWNmMDEwIGxlZ2FjeS10cnVuaworNzUwODUgYjBlOTYxOWIzMWQ4ZDBhMWQ4NzI3MjYxYjRkNTM2YTNkOTA4ZDQzYSByZWxlYXNlMjYtbWFpbnQKKzc1MDg2IGZjYjMxYmUyMTM2ZDY0ZDA0NmE1NDg5MTczYjkyZjdiYWM2MWFlZTcgcHkzaworNzUwODcgYzBkOTU2MjVmMTdkZTc4ZmRkNzQ2NThjYzYyZDlhMDNhNDhiNWVhYiByZWxlYXNlMjYtbWFpbnQKKzc1MDg5IDFhNjVkZGQ3ZDllMTUxZGYxM2U3ZjI3YjdkMTE0YzkzNGU1OTMxNmYgcmVsZWFzZTI2LW1haW50Cis3NTA5MCBmM2ZhMzk2N2Y0NDY0MWY1ODlhMGRiNjE5Y2QzODk3NDRlZTA5NTBhIHB5M2sKKzc1MDkxIDNkZWMzYjc3Yjc4NzViYzM3MWFlYWY0ZDAxMDlkZjhmOTllYWM4MjUgbGVnYWN5LXRydW5rCis3NTA5MiBhMDQxMDg0YzFmZGQ2NjI3MGQ4NjBiZTFlMzIzODQzYzUwYzMzODU4IHJlbGVhc2UyNi1tYWludAorNzUwOTMgOTEwZGE1NDVlMTdiYzVmMWE0NDEwYmMyOWVhNzg5MmZjM2FhNzlmNyBweTNrCis3NTA5NCA3ZDAyNmY3MDY0NTBkOTgwM2Q0ZmJhZGMwMTBkZjU4MTYyYjJhYjBjIHJlbGVhc2UzMS1tYWludAorNzUwOTUgYmI4Yjc3MGNlODkwZTkxYmRmZjNlNTYyODcyNzhlZGFhZjZkNWJlYSBsZWdhY3ktdHJ1bmsKKzc1MDk4IGYwNGExZjIwMjNlY2I2ODgxYmYxNWQ2OTEzNjcwYjZlZGExODcwYTIgbGVnYWN5LXRydW5rCis3NTEwMCBkZWJiMjQ1ZWJiNDAxOGQxOGI4M2NkMDcxMDI0YjQ0NGRhMDQ5OThjIHB5M2sKKzc1MTAyIGM3NjY3NGMyZDc0ZDAzOWY5MTZmZDU3YjcwM2RkZWJkNDVmMmQ4YTIgbGVnYWN5LXRydW5rCis3NTEwMyBlOTUyMTg2MDUzMDBlZDA2NGRjOGU1OWQ3NGRkYmJjMWQzZjhkYTk2IGxlZ2FjeS10cnVuaworNzUxMDQgYWI0OWUwYWM4YzhmMTMxZTJjM2Q1Y2I3YWQ3ZDU5ZGI0MDcyNjFiYiBsZWdhY3ktdHJ1bmsKKzc1MTA1IGI2YWZmN2E1OTgwMzAwOWQ4ZmZjOWZiMGFjYjU2ZDk4NmRhZjllMTcgcHkzaworNzUxMDYgOTQ1NzI5NDljMWNhNGJkZTEzMzgxNzhhODliNzg1YzJjOGUxNWE5ZSBsZWdhY3ktdHJ1bmsKKzc1MTA3IGQxMDhmZTc3YzA2YzI1NmNlZWFlODkyY2FkMzJmMjJmMTllZjYwZmUgcHkzaworNzUxMDggNzAxM2UzNjUxMWE4Y2VkZWZiODFlYjllNWIyMTc4MTBlZGRhMTg1OCBweTNrCis3NTEwOSA4OTI3NzE4YzE5OGZmN2I3YTlmNjVjYTY3Njk1MTc1NDZlYTczOTQ3IHB5M2sKKzc1MTEwIDNhYjQ2NGZkNWUwMWE1ZGRkYTZlYmE2ODdiODhkYjUyYTg5NTg2MTAgbGVnYWN5LXRydW5rCis3NTExMSA1MjMxZWM1MTJjN2FmZDA0YTFlNTY2ODg4MzE4OWUzNjE5OTE5ZGE4IGxlZ2FjeS10cnVuaworNzUxMTIgY2Y5MGFhNTdiMjBiYzM2NzUyMTY5NThhMTFhZDNlNGI0ZDk0MTI4MyByZWxlYXNlMjYtbWFpbnQKKzc1MTEzIDk5ZTM2ZjQ3Y2EwZjc2NmY0MTEwMWIzYzBiYjJiYmFjZjY2MzJhYjIgcHkzaworNzUxMTQgNGVjOTE1YTViYjRlMGNmYzgwOGZmZmNhZmVhMDFkMTVmNzM2NWExYyByZWxlYXNlMzEtbWFpbnQKKzc1MTE1IDdmNjk1ZGQ2NGY5MDFkMzJmMmVkNWU1NjViODEyMjlhZWIwMWY5NDMgbGVnYWN5LXRydW5rCis3NTExNiA1NmI1MzAwMjliYWNmNmFiMjhlODVhMDBkMjAwNGNmYzM2YTQyYmE5IHJlbGVhc2UyNi1tYWludAorNzUxMTcgYjUwZGQxN2RmZTI2MmE0NzI1ZjRhZTNlNmU0NzBhMWZkNDAwZDM1ZSBsZWdhY3ktdHJ1bmsKKzc1MTE4IDUwYzMwYTgyODRmYmI0Y2U0Y2FiMjBiOTQ0MjQyMTM4N2VhMjE3N2UgcHkzaworNzUxMTkgNDdiODJmYmRjMmJiMWUwMGYwMzY5NjdlNTEyNGIwYTRiZGQ3OTRkOSBweTNrCis3NTEyMCAyMDEyNGViODgxMWJiZmM4NTZjMmE4Y2E2MmYyYTkzZTZmMjMzNzg3IHJlbGVhc2UyNi1tYWludAorNzUxMjEgYjk4NWJjZGI4YjkxNGIzY2FkNGU3NGZiNDAwOTUzMDlkMGFiZWJiOCByZWxlYXNlMzEtbWFpbnQKKzc1MTIyIDgyNTAyMTgyNTQ2MzkwZWFhYWJjZTkyNjdmM2EwNzJjN2EzOTQxNjMgcmVsZWFzZTI2LW1haW50Cis3NTEyMyBlZWJmM2Q1MWQzYTQ2ZjM1ODJlZDQ3YjMyYWY1ZDBlY2RiY2QwNzUxIGxlZ2FjeS10cnVuaworNzUxMjQgZWU5YTU1MWE4NzVlZDRmZTZkNWNlNGJiOWI0Y2JkZjViNGY2NGJhNCByZWxlYXNlMjYtbWFpbnQKKzc1MTI1IGM2M2UwNjM4N2I4ZmNkZjZhMWUyOGViNjQyNjRhNmM2NmUzODZmNGMgcHkzaworNzUxMjYgNzRiMThhMjY3Y2Q3NTJhZGEzYjNkYjRlZmRmZTJkNTJjZTdlNTFlNiByZWxlYXNlMzEtbWFpbnQKKzc1MTI3IGVkZDlhNWUzY2FmYjZmMDk2ZTFhMjY2MDNiZjcyNzBiYTI3NDg2N2YgcmVsZWFzZTI1LW1haW50Cis3NTEyOCAzNTc3YWY1MTJkZjU3MzAzM2Y1YjhlMThmZTgzNDdhZDI2MzZkZjE5IHB5M2sKKzc1MTI5IGYyNmI4MDJjMDAzZTVjMDAzNTQwNzQ2ZTg0MWI3ZmIyN2QwODhkNzggbGVnYWN5LXRydW5rCis3NTEzMCBhOGQwZTc2NGUzNGIxY2EyZWRjYjQ1ZmUxYzdhYWFjMzRjNzczMGY1IHJlbGVhc2UyNi1tYWludAorNzUxMzEgZTViODEyMTJmZGZkNzE3NjlmNDEyZmFmZDU0YmFhODgzYjM4YmU4NCBsZWdhY3ktdHJ1bmsKKzc1MTMyIDk4NjcwOWMyNDUzMTg5NDA3MDFkMWJmYTE3NjMxOGY1ZmQ5OGI2YmQgcmVsZWFzZTI2LW1haW50Cis3NTEzMyA0ZDc0NzM0NDk1Y2ZkNjY4N2QxMTkzNWI5MTIzNmQ4OWU3NTliMjgxIHB5M2sKKzc1MTM0IGUwZjIzNDExNmFiMTQ5ODM1NjkyOTRlZmNhZjNkMTNhMGRiMjUyODEgbGVnYWN5LXRydW5rCis3NTEzNSAyZTJjMTQyYmJlYWE5OWFjMTczYzhkODRjZDYxYmI1MWZiMWRkNmM2IHJlbGVhc2UyNi1tYWludAorNzUxMzYgMTg0Mzg4NmIyYjFkODYwYjA4Y2Y5NmJmOGUzNDYyYjg4NjU2MWRhNiByZWxlYXNlMjYtbWFpbnQKKzc1MTM3IDFmNzM2MWM3NDIzNGM1Y2NjMjQ0YmIwMTUyNjcyOTYwMDFjZWM5YjEgcHkzaworNzUxMzggZTcyYTczYWQ3ZTI5NGNiZWZmYTFmNWM1YjkwYTg4Njc5ZWVmNjJkMyByZWxlYXNlMjYtbWFpbnQKKzc1MTM5IDhlOWJkYzZhMTAwZmEwODZiZDQ2NmZiYTZmMmFjNjJjMzBiYjI5MmQgbGVnYWN5LXRydW5rCis3NTE0MCAxOWE0YTYyM2Q4YjcwNDRjMmIxYjllMjUxYjJjOGIwOGE0MjQyNGZjIHJlbGVhc2UzMS1tYWludAorNzUxNDEgOTFmOWRmNTM2N2MxYTVmMWM2MTQ2Y2Y4NGU5NmRiMzkxNzFmNWE3MCBsZWdhY3ktdHJ1bmsKKzc1MTQyIGExN2NkOWZjZGQ0NjllZDFmMzg1MDkyY2Q4MDgxNDZiZjFmMjA2MGIgcmVsZWFzZTMxLW1haW50Cis3NTE0MyAxZWEwM2Y4NmUwODEzZGQ4MGU1OWYwYTY3NTUyYjJmNWE4ZDExNTU3IGxlZ2FjeS10cnVuaworNzUxNDQgN2UxODU2MTY3YzRhODJlYzE3NTQwMjk4Y2M4MjU4M2U1OGU3NDAwMiByZWxlYXNlMjYtbWFpbnQKKzc1MTQ1IGJhMTk2NjJlYjIyMWI4M2U2MzgxOGVlNGIxM2ExNDJmMzMxNGQyODMgcHkzaworNzUxNDYgMDhlNTkwNzZkODZiMmNhZTBkZmUyN2NmNTU5MGZiOTNlODE2MGE1MCByZWxlYXNlMzEtbWFpbnQKKzc1MTQ3IGY5OWJjYTZhYjBkY2M4NWU3OGE0ZmMwOTU5M2M3Y2IzMjQxMWIzYWYgbGVnYWN5LXRydW5rCis3NTE0OCBkYWQ3NDUzZDBkMDg2MmJiNzMwMjU1Mzc4OGY4NWI0ZTFjMzEzNjM3IHJlbGVhc2UyNi1tYWludAorNzUxNDkgZGY1OGZmMmRlMDliYTIxODVjMjExOWYyNjRiNjM4ZTk3OWM3ZDI1MyBsZWdhY3ktdHJ1bmsKKzc1MTUwIDY3MTZjNWY4YzYwZDVjZTU0NjAzNGE1NGE4MzQzMjg1MzU4NTM5MDUgcmVsZWFzZTI2LW1haW50Cis3NTE1MSAxODczNTQyYzAwMDAwYzRiN2NlMmM3OTkyZDFmMmQ4N2Y4NjYyMzJhIHJlbGVhc2UyNi1tYWludAorNzUxNTIgMGVmZmRiMzljNDdiN2EwN2IxOTk3YTVkYmI1YmVlNjY3NjYxM2UzZiByZWxlYXNlMjYtbWFpbnQKKzc1MTU0IDdiY2FmMDY0ZTI0MDU2NzRkOGI1NmUwYjRlY2JmMTg2NTAyMjU5OTkgcmVsZWFzZTI2LW1haW50Cis3NTE1NSA1YWNhZTQ2YWY4NDNmYThjM2FkOTEyNzFhNDFiMGQwYmRlMzJkZGM3IHJlbGVhc2UyNi1tYWludAorNzUxNTYgZDkxMjA5ZDgyNTFkZTYwNTMwYzA2NmE1NmY0NDk3NDEyZWI0NTRmOCByZWxlYXNlMjYtbWFpbnQKKzc1MTU3IDVmMjQ1ZGE3MmFlYmI0ZDI3N2ZlYTQ0YjNiZTBiYzQzNTVlMDUyNjMgbGVnYWN5LXRydW5rCis3NTE1OCAxYzAxNmYwZTk0YmFjMWY2NDI5MGY5YjJjZDg2OTFkZGYxZTJlZWY0IHB5M2sKKzc1MTYwIDE2Yzk4NWRhYWViMDlkNjUzYjY0Y2ZlYjc2ZDQ4NGY4OTk0N2NmNTIgcmVsZWFzZTMxLW1haW50Cis3NTE2MSBlN2U0NTI0NDlhNWVhYzlhOGFjY2JiZmNhNzU1MDE4M2QxYjMzOTNmIHB5M2sKKzc1MTYyIDcwM2RlNTVlMDBiODVkNjdlZTA0ZDczOGFkMTQzOTUzMTkwNGYyMTIgcmVsZWFzZTMxLW1haW50Cis3NTE2MyAwODQ1ODBhMzQ5YjcxMTM3ODY1NzYyMTVmYmZmNGI1Y2I5MWQ3Njg1IHB5M2sKKzc1MTY0IDMzOWI4MjMyMWY4ZWY2MzlhMWNiNDhmNDAzYjY1MGNiMjFlNWNlZmQgbGVnYWN5LXRydW5rCis3NTE2NSAzZTI4ODE2YWEwYTIzMjVhNzI3ZWY2MWJiYTE1Y2I1ODliNTM4MmNjIGxlZ2FjeS10cnVuaworNzUxNjYgODA3YjBkNTk3MzE0YjJmNDRiNTVmNzEwOWYyMDRiZWUwMGQ3NDUxNyBsZWdhY3ktdHJ1bmsKKzc1MTY3IDkyMTdiZDBjYzNmY2Q1MDM4MDM0MmMzMzEzYTIyMTAzNGU5YThhODUgcHkzaworNzUxNjggMTA2NDU1NTIzN2UyMThjZmQzOWYwOTZlMDMxODEzYzAxN2NiZDUyNyBweTNrCis3NTE2OSBlMWQ2OTUxYmYzOWQ3ZGZjZGE2MGFhZmNmZmZlYWVlYjhiMDU2OWZiIHJlbGVhc2UzMS1tYWludAorNzUxNzAgNWVjMTVkYTFmYzQyMjA1YTFlMTNlMTljMGYzN2I0NWI5MGUzMDdhMiByZWxlYXNlMzEtbWFpbnQKKzc1MTcxIDExN2IzMDhiZTMyMTQzNmI2YmE5MTlhOTAxMWM4MzM4Yzg0Nzc0NTAgbGVnYWN5LXRydW5rCis3NTE3MiBjZTIxNGVlNDExNjQ5MjhhMzBiNjZkZGVmYjRlMWEwOGE5ZThiYjRhIHJlbGVhc2UyNi1tYWludAorNzUxNzMgMTcwMGE3ODk3M2NkODE0NmIwYjgyZWNlMTkxZmQxZjM1NmZkMzk0MSBweTNrCis3NTE3NCAyYzdiMWQ1YzhiNjViMWNlYzFlMjllYmMzMjU3OTRjMzMzNDI1NzBmIHB5M2sKKzc1MTc1IGRjMzUwMGQzOWVmMTQ4OTkxODFiMzAwZjZmYjVlNDYwYjcyYmE4MzYgbGVnYWN5LXRydW5rCis3NTE3NiBmZThiOWI3M2Q5YWYwZDRkNmY0Y2QyOTYzZDM4OWNkZTBjNmE3NzQxIHJlbGVhc2UzMS1tYWludAorNzUxNzcgZTMwNGQ5ZjM0ZDE1Mjg3MDUzMGIyZDgxMDk4NGI3MzhiYTcwYWM4ZCBweTNrCis3NTE3OCBmZTk2NGIzYzk2NjJjNzcyZWU0MGMzNzg3NGVjNmQ1NjVkMjY1NjFjIHJlbGVhc2UzMS1tYWludAorNzUxNzkgOWYxOThiMGYzNjdmYmEwNGRhYzM2MWJhMGEzYTVlNGJjMzFjMjZjMyByZWxlYXNlMzEtbWFpbnQKKzc1MTgwIGU2YTVlYmU1YWVkZDhlZTMwMmJkNDIzY2Q0Y2RiMmE5MjZlODZmMzQgbGVnYWN5LXRydW5rCis3NTE4MSA3ODNlNmNjMmFiNjIzNTE5NmI5MjcwNTBiNmFhOWI1Y2M5MjEyZGM5IGxlZ2FjeS10cnVuaworNzUxODMgMDBjMzM5NmQ3YThjNGFiNGMyYzg0MWQ2MTAxM2EwNzNhZTkyMWQwZiByZWxlYXNlMjYtbWFpbnQKKzc1MTg0IDhlN2E2OTI3ODc5ODE1ODg3MzJmNjUwYWMyZmNhYTUwMzcyYTBjMmEgcmVsZWFzZTI2LW1haW50Cis3NTE4NyBjODUwY2U5NzdiYjk4MmQ3MjUxZDNmN2ZhNDczMGJlNGNmYjVmNmEyIHJlbGVhc2UyNi1tYWludAorNzUxOTEgNGM1OTk4M2JiMDU3OTY2NTcwNjE2YzJjM2ZkMjA5NTRjMjZmOWM2YiByZWxlYXNlMjYtbWFpbnQKKzc1MTkyIGMyYzkwZDFmM2MzM2VjNjk3MjRlNjlmODMyZDRjMzRhNWNmNmYxMDUgbGVnYWN5LXRydW5rCis3NTE5MyA3MjkwMTQwY2QzMzAyNzA0NDQ0MGE2M2IxZDU2YjgyMGE5ZDA2MDA5IHJlbGVhc2UyNi1tYWludAorNzUxOTQgYzQxMTkyODZmYWE3NWQ3ZGU5ZTIxZDEwNzdjNmMzYTdlYzZiZGJlNSBweTNrCis3NTE5NSA5YjFlYjVlNzVlMTU5ZTdlN2VkM2UzZjk4NTM2Njk5NDgzZjA2OGQ0IHJlbGVhc2UzMS1tYWludAorNzUxOTYgN2Q3Zjk3ODNjODZkYjE0OTNmMzU2MDQzODk1ZDg4ZGE5ODNjN2UyZiBsZWdhY3ktdHJ1bmsKKzc1MTk3IDY3NDA5YmM5OWZhMmJjZjAwMDE0MGNhMDNmYTlmNWQ0ZWFhNTIxMzMgcmVsZWFzZTI2LW1haW50Cis3NTE5OCA3N2VlMjIwNjg2Y2M1MDJiYjAyOTU5YjkxNDZjYTBjODM5NTc4YjMwIHB5M2sKKzc1MTk5IDI3NWQ2MGY5M2QzYzVmNjE5MDhlOGQ3ZDM1ZmVhOTIwMTI3NDMxYTAgcmVsZWFzZTI2LW1haW50Cis3NTIwMiA0MzEzNTBmMjFkODdlOWQ4ZWM3MGM2ZjVhYzY1YzMyM2ZiYWU3MGFmIHJlbGVhc2UyNi1tYWludAorNzUyMDMgOTEzMGZlOWM1OGJmOTdkZjhkNDNmZDIzMzY0YWYwNTZiZjJhNzBiMSByZWxlYXNlMjYtbWFpbnQKKzc1MjA0IGZjNzRkNTFhNjc5NzQxYTlkNTM2YzBhYTVkNDg4ZTdhMzRmZjk0N2EgcmVsZWFzZTI2LW1haW50Cis3NTIwNSBkNDEzNjA5MGFjMzRmOTFlZGExMWU3ZTM0ZDkzM2NmNjA0YWY1NzA0IGxlZ2FjeS10cnVuaworNzUyMDYgMjVjZmI3MGJjZDVlOWRkMDhjZjBlNTkwZGY0NTc2NTVmMTNmOTM0YSByZWxlYXNlMjYtbWFpbnQKKzc1MjA3IDNlZTA0ZWE5Y2M2ZTJmNzMxZjc1MTNmMmE1ZGU3Mjc4ODhhMGJlOTIgcHkzaworNzUyMDggOTQ2Y2VjYWY2NGMxZjFkMDc3ZjY2YzAyMGY2NTM3Zjg3M2M3OTkzMyByZWxlYXNlMzEtbWFpbnQKKzc1MjA5IDUzODRjOGVlNGEyNmNlMDFlNzcwNGFmMzlkYjhhZjNmZTdmMmZiZDcgbGVnYWN5LXRydW5rCis3NTIxMCAzOWI5OTk0ZTg2NjkzYjM1MWQyYzNlZjlhYzJhZjVmMmJjNmZjYTAzIHB5M2sKKzc1MjExIDI4ZmJjYzc5YzIwYTkzYzZhNjUyOTkwYzFmZTM0NDBkYjM5MmUzNTggcmVsZWFzZTI2LW1haW50Cis3NTIxMiA2ZDBkZmUzYTEzY2ExOGFiMzRiNTNkZDYzZjQyZDUyOTAyZGE5MGEzIHB5M2sKKzc1MjE0IDg0OWZiMjdjNTU5NDY2MjQ0YmUyYzM4M2ZhOGFlZDE2ZDY1Y2Y0NGEgcHkzaworNzUyMTUgNTIyN2VhYmRiYjY0NzU4NjA4YjUxYjhlNDE4ZTA1OTM4ZDMxY2Y0NSByZWxlYXNlMzEtbWFpbnQKKzc1MjE2IDUzZjE3Y2M3YmZmNjdjNmMwYzhlZTM2MDliMWQzODA3MTE2YjkzNDYgcHkzaworNzUyMTcgZDU0OTM2NmRkMjE4YjMyNDBjM2FiYWYzZDhlZDQ5NzZjMTkxYWQyYyByZWxlYXNlMzEtbWFpbnQKKzc1MjE4IDE1MGNkYWVhNThlYzY5MTZhYzUxOWQwOTMzN2IzZDNlNmRiY2IyNDcgcmVsZWFzZTMxLW1haW50Cis3NTIyMCA2Y2ZmNjgyYTMwOTgxZmUyMDMzNTM4MTY0NDZkMDY3OThhOGI1ZTE4IHB5M2sKKzc1MjIxIDVjMGE3ODAwMjE1YTY3NDNiZjE3YmZjYzRiNzkyZTE5NjA3M2RlYmUgcmVsZWFzZTMxLW1haW50Cis3NTIyMyBjY2ViNjJlYjFjZjE4MzJiMjc2MmJkZmVhZjdjOWYxZWM1YWM4NjI0IGxlZ2FjeS10cnVuaworNzUyMjQgNDVmY2UzMTBkNDc5MmNjM2Y5YWQzMzYxMTg2NTJlODY2NTBmNDE2NyBweTNrCis3NTIyNiA0ZjQ5YmQyZTdjNThkMjk4NDlkMjM3ZmFlNjgwZmQ4NjRkMDQzYmNhIHJlbGVhc2UzMS1tYWludAorNzUyMjggMjE4Y2RkNmM2ODQyODVkODJiOGIwODNhNDgwMjg1NzRhYmExMzgxNiByZWxlYXNlMjYtbWFpbnQKKzc1MjI5IGQ1ZDhjYjk4ZWIyYWVlYTA5ZDk4NTMwYWFjZDU5NTQ4NTA2NTJmY2UgcmVsZWFzZTI2LW1haW50Cis3NTIzMCBmNDA1NmY4ZmVlYzI2YmQyOTI1MzZkZjYxOGVmYWFkODA5NTM1MmVlIGxlZ2FjeS10cnVuaworNzUyMzEgNDFiYjVlMmRjOTQ3YWMzZjdjNGFmOTQ2YzAxYTE0ZTBiMGFkMDY3YiBweTNrCis3NTIzMiBjOWJkNjJlZmU2Y2U1NTI0ZTE3NGQxMDYzZDE2NWI4YzliZTBiMzYzIHJlbGVhc2UzMS1tYWludAorNzUyMzMgYmVjMmU0NDVlMjI0YjY1YTBkZjEyMWQ2MWY5OTllODBkNGIzMTIwYyBweTNrCis3NTIzNCA1YmNlM2E1OWJmZDJjNWVmYzdiYThmYzcxYmY3OWVjZWZkMTRjOWFiIHJlbGVhc2UzMS1tYWludAorNzUyMzYgYmIyYTEyM2NkZDdiYjJhZjU4MDE5MjFkODM1MzNiMGM0OGIxZTA0OSBsZWdhY3ktdHJ1bmsKKzc1MjM3IDMyMWMyMjA3ZDVmOGZhOTQ1YjUyOTE3ZDRhODQ1OWJiZTEwNzc0MmQgcmVsZWFzZTI2LW1haW50Cis3NTIzOCA5MTlhMjdkZGI0YTMyMTE4NmIxMzM0NWEzNTg5MjIzMmU5YjFiNmMxIHB5M2sKKzc1MjM5IDA1Mzg5MDE0YmY0NDQ5Y2RhMDYyNWNlMmE0YjI2NGViMGE5NzBlZmYgcmVsZWFzZTMxLW1haW50Cis3NTI0MCBhMmNhYmIzNjI1N2YzYmMwMTMwNWY5NWQ4YzAzMmQzNTNiNjNjNjAxIHJlbGVhc2UyNi1tYWludAorNzUyNDEgYzIxOWY3MjYxZDk4NjM1NjMxMTZkNTQ0N2RjNjc3NmYzZmU4YWFjZSBweTNrCis3NTI0MiA5MjJjMTEyMmM5MjViNmFlNTYyZjE4ZmU3MjBhOTkwN2ExZGQ0Yzg0IHB5M2sKKzc1MjQzIDhkYmIwZmMzOTk4YWQwODkwNDI0MTU1MjRiN2VjZWMyOWY1ZjBkODMgcHkzaworNzUyNDQgYzgyNzcxMGJjZGZkYjJmNjFjNDE4ZWM3NDRiYzNiYzllY2JiNTQ4NiBweTNrCis3NTI0NSAxMzhjN2ZjMTliNWQ2ZWVjNGZjMzQwY2I2NGRmOTY4ZjAwMGM5ZTM3IHB5M2sKKzc1MjQ2IDJiN2UwZWFhYzY0ZWRkNDAwMGEzZjZjNDRkMzlhNjQ1NWQ5OGVjN2EgcHkzaworNzUyNDcgMmU0ZDdhNDBjMmRkN2UxMzNiNzFhOTg3OTc0Nzk5NmE3YjlkZTIzZCByZWxlYXNlMzEtbWFpbnQKKzc1MjQ4IGIwYjllNTkyOGRhOTlkZGRhMmI3NWM3NGM0YzY2Y2RlODJkMjA5NjcgcHkzaworNzUyNDkgNmIyM2IwZWJhNDA1MTY1YTBiMWEyZGM5YjY3ZGQ3OGY2YzVkMDMxYyByZWxlYXNlMzEtbWFpbnQKKzc1MjUwIDdhYTRhNDIxMTUyZjkyNGUxMWYxMDcyMWNhMzEwMWJiMjhlNWY0ODYgcmVsZWFzZTI2LW1haW50Cis3NTI1MSAzOGJlMjYzOTAzNTUwMDRiNjFhNWMwMjBkNjczNDM5MDYzODkyNGE3IHJlbGVhc2UyNi1tYWludAorNzUyNTIgNDkwMTkwY2I0YTU3NzIyODY3MzM0NmRkNjVlMTk3NWU2OTY4OTU5MSByZWxlYXNlMjYtbWFpbnQKKzc1MjUzIDI3OGNmNWM4ZjFmYTk3YzI2NjhjOTM5MTJmMzM2ODRlZGM4NDQwZGUgcmVsZWFzZTI2LW1haW50Cis3NTI1NCBkNTI1MGRhMDA1Y2E3MzlmMmVhODY4ZjNjZDI4OTAwMzk2ZmIwNGIwIHJlbGVhc2UyNi1tYWludAorNzUyNTUgOTc0YzAzYzk4ODg0ODA2Y2ZkMzg0YzI2ZGI2MDdmZTViYTJiY2RiMSBsZWdhY3ktdHJ1bmsKKzc1MjU2IDI5YzAxOTZiMWJkZDdiNTE3NjBjMTI2ZmIzYTcwODcwYTcyNThjMjggcmVsZWFzZTI2LW1haW50Cis3NTI1NyBhMDFmNDEzZWEwOGI2ZDkxN2I1N2Y3YTBjMGYwMmQ0NzhkY2MyYjk2IHBlcDM3MAorNzUyNTggYjRkMWJlNzEwMmIzMWIwMTEzN2NmMTcyN2I4NThiNDI2MTZjYmZhYyBsZWdhY3ktdHJ1bmsKKzc1MjU5IGY3ZWVhNjJiMDhiMDVhM2I5MmE5ZGY3YWVjZDFkYWQ3ZjI0ODdhODcgcHkzaworNzUyNjAgZWU5MDIwMTYyNDNhMjllNzdkZDJlNmRhYWQ1MWZkM2JjMTJhMmY1OCBsZWdhY3ktdHJ1bmsKKzc1MjYxIDk4N2U1OTZjZjU3MzczZTlmYzMxMTZhZjEzNGE3MmE3MWQ4Y2ZiYTMgbGVnYWN5LXRydW5rCis3NTI2MiAxYzdmMmI5YTE2NzgyYzA2YzUxMDU0ZDc1N2I4YTc1MDA2ODM4MzMyIGxlZ2FjeS10cnVuaworNzUyNjMgMmZhOWZmZTZkMTQ1MWQ3ZmVkZWRmZDM4YjEyNDBiNWQxZjAwZjllZSBsZWdhY3ktdHJ1bmsKKzc1MjY0IGQyZjk1OTExNTQyODZlNTRmMjEyNDNjZDMyYjdjMDNkOWZlNDZjODMgbGVnYWN5LXRydW5rCis3NTI2NSBhMTJlNzAxZDk3Y2FjNzg3ZjE1ZTVmNDkzM2IxYThmNTZkNGI5ZmQ3IGxlZ2FjeS10cnVuaworNzUyNjYgYTQ1OTUwNzI2YmRmYmFkYmVlMTU1ZWRiODA1ZDczM2UyMDNjZmIxZiBsZWdhY3ktdHJ1bmsKKzc1MjY3IGE2ZTdlZDUyZGY5YjMxN2U2YWM4ODBhMmI2YTFiNmYxOWFkMzYyNDYgbGVnYWN5LXRydW5rCis3NTI2OCBjOWQ5YjdkMDk0MjJmN2E2YTkyMDIxMDgxZjgwMDNhOWJmZWNlMjhjIGxlZ2FjeS10cnVuaworNzUyNjkgYTRhMzI0YzJhMDBjNzgwODRlYWRkZDAwM2I2NTZlMzY2YzY4MDQ2NyByZWxlYXNlMjYtbWFpbnQKKzc1MjcwIDI1YWE5MGE2ODY1YjYzMTMzOTYyZGQ2NDYyNmM1M2M3YjZmZDQ3ZDUgcmVsZWFzZTI2LW1haW50Cis3NTI3MSA0MzNmNzI3ZTVlODIzZjAwZDEwMjNiNDM5MDJlYmIzOGZjMmY5MjJkIHJlbGVhc2UyNi1tYWludAorNzUyNzIgYTk4NjQ0MTcyODZiOTNkNWNiNTY5NDcxYTI5ODE2MTUxN2Q1ZDQxYyBsZWdhY3ktdHJ1bmsKKzc1MjczIDVlM2Y2ZThkNmFlNTk1NTk3YzY0ZDVjYWVhMDc5NDI1NGZjNGIzNWIgbGVnYWN5LXRydW5rCis3NTI3NCA2YzkxZDE4MDMxODI2ODE2YTk5MTE5YTM5ZmNjNGY0ZjRlNjllN2RhIHB5M2sKKzc1Mjc1IGM1YTNkNDMxNDY3NjlkYTM2NzcwOGMxMWJjNGM0NzM4Yzk5ZTFkYzkgbGVnYWN5LXRydW5rCis3NTI3NiAzMjk2OTM1Mjk5Y2U2MjdkNzkyMTBjNjFmNTY5NmJlNmUwNjg5OTc3IHB5M2sKKzc1Mjc3IGRjMDQ3ZDlhYmY3YjZjZjkwZmRjMTJiZGU4NjE3YjlhMDBiZThmMGIgcmVsZWFzZTMxLW1haW50Cis3NTI3OSA2MTU1Yjk1OWZmNzJiZGY1ZWYzY2EwZjBmMTljZTQ2NjYyYTk5OTRhIHB5M2sKKzc1MjgwIGY5OWIzZmMwMWZjMDY4OTZjMzkyOTJiNDk1YjBiYmRmYmEwNjEwMWIgcmVsZWFzZTMxLW1haW50Cis3NTI4MSBjNDVjZTI4NWY1NTJiOTYzZTQyODYxNTI1ZmQxMmJjMGNjZjBhOWQ4IGxlZ2FjeS10cnVuaworNzUyODIgYjc4NTIxYWU3YTYyNDVlNDhiZDVjODgyZGJlNTlmMzdmNTU4YjA4NyByZWxlYXNlMjYtbWFpbnQKKzc1MjgzIGU3NTljYTI1NzAxZDlhNjY3ZGRiODcyYmJhNWI1Nzc3ZTc2NmVmN2QgbGVnYWN5LXRydW5rCis3NTI4NCAyNDliMGJlNzk3YTgyZTJlZGY2M2M3ODMwZTVmYTM2NzBiYzU3MmZiIHB5M2sKKzc1Mjg1IGRkOTRmMWQ4YzlhNWNhNDQ2OTYzNDkwNjcwMTdmYmJmMjNiMWQ4MzcgcmVsZWFzZTMxLW1haW50Cis3NTI4NiA0OGFiMmU2MmRlOGJjNmJkMzY1YWMxYTAxNDMxMTlhNjVhYjA2MTc4IGxlZ2FjeS10cnVuaworNzUyODcgZWY3MzQ2NDQ4YjYwMGRmY2VlYjU0YWYxMDAzZDBmN2UwMjU0ZDFmOCBweTNrCis3NTI4OCAzMDcyZjk0MGYzNWEzNmI2ZDQ5ZjVlMjRlZjFmZGQ1NWI4ODlhMWJiIHJlbGVhc2UzMS1tYWludAorNzUyODkgOTZhZmYyYzJhOWExZDViNzJlMGY0ZjFkMGMxZWQ3OTU4ZDA3OGM1ZiBsZWdhY3ktdHJ1bmsKKzc1MjkwIGNiNDlmMmViMDQ1NzlmODdhZmJlY2E3MDlkMDZlNzZiY2YyYTA2MzUgcHkzaworNzUyOTEgOWY2MzFhM2JiNTQ5M2ZhZDk5ODE3OTI5ZDg5OTgxM2Y4MGIwZWJkMCByZWxlYXNlMzEtbWFpbnQKKzc1MjkyIGQ3OTAyMDJjMTUxZGIwYzZmYjQzNTI5ODhmZDgxN2NmZWZmNTRiYTggbGVnYWN5LXRydW5rCis3NTI5MyBhYmJjNzk3NTc1YzQyMzcwYTllY2UxYmNkYjQ1MDYxYzhlZDE1NWQyIGxlZ2FjeS10cnVuaworNzUyOTQgZWIwYzM5ZjYyZGUxOWNjN2MyNDdkNjQ0OTA5OGNjOWZlMGI1NDg1MCByZWxlYXNlMzEtbWFpbnQKKzc1Mjk2IDU0NThjMjBhYTBjZjgzOTViZjRkYjQ5YjFjMTk2ODU3ZGZlMzUwOTcgcHkzaworNzUyOTcgOTQ2ZTNhZjAwYjBiOGYxM2I2OGY5N2Q4N2FmNWIyZTNlYjc2ZDUxZCBweTNrCis3NTI5OCAyYzYwZTk0NjA2MmVjMGFmYWEyMWQzYmVhN2I3MjQzZjYzNTk2YmJiIHB5M2sKKzc1Mjk5IDI1ZTUxYzViMDY5NmU4NWM0OTAxYjY5NmVkN2EyNDVkYzY2YWE5NmIgcHkzaworNzUzMDAgODk2YTRmYjEzZjM1YzkxZGZmYjA1NGRmODVlZWE4MmRlM2U5ZGU3NSBsZWdhY3ktdHJ1bmsKKzc1MzAxIDFlYzhjN2ZiODgwN2I1YWZjZjZjNTM2NTQwYTY4YTU4MTU1ODg5OGIgbGVnYWN5LXRydW5rCis3NTMwMiAxMmNkOTRkMzk4NzQ2NDhlYjBmM2NmYjUzN2NlZGZjMGRkMDBmMjMxIHJlbGVhc2UzMS1tYWludAorNzUzMDQgNTdlZTA3OTNlNDYyN2I4MGNlMTJiNmZmNDAzNGZlYTdhZGM0NWQ3NSBsZWdhY3ktdHJ1bmsKKzc1MzA1IDY4NDk2MGZiMWNiZjY0ZTg1Nzk3OWNjMmE5Njg1ZjA2NzE2YmMxMTkgbGVnYWN5LXRydW5rCis3NTMwNiBhYjQyMDMzZmRmZGJlNWFiNGUxMjZlZTVlMWE4MDgxZWMxY2UwMjMxIHB5M2sKKzc1MzA3IDkxYWEwNDQxMDEzOTBjZWQzOThhYWQ2MWU3MTAwMWEwNjcwZDE1OWEgcHkzaworNzUzMDggMjgzNjkzOWU3YzU0N2ZmZWQ0MDY0NmUxMjJmZjNhYmQwZWIyMzYyYiByZWxlYXNlMzEtbWFpbnQKKzc1MzA5IDI5OTA4ZjJiYzkzZmQ4Y2RlYzM1NzRjZTQ3MGE1YWQwMWVmMDU3YmIgcHkzaworNzUzMTAgNmQwOTJhNTFlMTg3ZTQ1MjJkNmJkZTgzNTg0OWNjMjYxNTBmNmYwZSBsZWdhY3ktdHJ1bmsKKzc1MzEwIDRmOTEzMTJkNmVjMmFiMzVlN2FiODIyYTgzZGEwMDkyMzBmMTI0YWEgcHkzaworNzUzMTEgYjVlYTQ3NzNhZmYxMDIxYTM1NjExYmVhMjFkMGU0YmE5Njc0ZTM1NSBweTNrCis3NTMxMiBhMmYwMmExMjVmZWIwYjk2OWQ4Mzg2NGEwZTk0N2Y3OWE5ODE0M2E4IGxlZ2FjeS10cnVuaworNzUzMTMgMzJjMzVmOWIyNDVjODdjMGMwNzlmODQxYjlkN2M1ZDVjNmZjYThjMyBsZWdhY3ktdHJ1bmsKKzc1MzE0IGQ3M2YyMjE1ZWZjMTlmOTIzNzI2OGY4YjQ3MzM4ZDU4YTM5YzgwZTAgcHkzaworNzUzMTUgMzNiMDQxMzUwMDM0MmFmNzBjMjhiOWNkMzU0OTBjMWE1NGJkNTdjMyBsZWdhY3ktdHJ1bmsKKzc1MzE2IGVmMzFiMDRkZTUwNTYyZmZjNDUwYTZhMWQ0MGUwYWVlZjg4ZDc2YWEgcHkzaworNzUzMTcgMzkzMWM3OGFmMTE3NWIzYzc0MjRmMzMxM2RmMDBjYjlmMDVlZGNlZCBweTNrCis3NTMxOCBmZjhjODZhMjRiMTU4ZmJhZTFjZjQ1NDg1NWZmNThjODZmMDM0MTRhIGxlZ2FjeS10cnVuaworNzUzMTkgMzU2MTljZmNkMGI1YmY1YTQzMDAxZjYyMTNmYjJkMmYzMzhkODQ1OCBweTNrCis3NTMyMCAyMjBmN2RlZmZiYWZiNTc2MDJiYTczNWY0MzNiMmVkMDcwMTMzZmJkIHB5M2sKKzc1MzIxIDQyYTZhMjI0OTQ3NGNhNmIyMGMxMTA0YWFlODZiYTA3OGQ1ZjI1N2YgbGVnYWN5LXRydW5rCis3NTMyMiAzNDk5OWExYWVhOWIyNjE3NjEzZmMwZWJjMTU5YmYyMTFkNjBmN2ZiIGxlZ2FjeS10cnVuaworNzUzMjMgYmZhNjBkZjc2OTI5MGExMjNlMzZiY2VlNDJkMGJmMDVhMzU0MTQxZCBweTNrCis3NTMyNCA0NDMxNDlmYjM1NzQ4ZjVjZGNmYmE4OTlhOTcyNmRmMjkxZGY1ZDBlIHB5M2sKKzc1MzI1IDY1ODdlYTZkM2U3ODQ1ZGVmOWEyM2M1MmEyMTI1YjQ4MmFiNzUwOGYgbGVnYWN5LXRydW5rCis3NTMyNiBmMzJmZWRhNjVjODU2YWU0YWQyNTg0ZGQ4YzA3Nzc0ZmRlZTA4MmNkIHB5M2sKKzc1MzI3IDQ1ODE1M2Q1ZDgyZDZmNzFjN2ZlOGRiNDIxNmVhOGU0OGY2OWViMjYgbGVnYWN5LXRydW5rCis3NTMyOCAyMTY4YjlkNDllM2IxOTA4YjJjMTJmYWRhODVkZDU0NmZhY2MzYzI2IHB5M2sKKzc1MzI5IDU1OTdiYTcwYTMzNmM4NjVmMDZhOGExOTAyZDMyMTY5NzM3OWQ4MDQgbGVnYWN5LXRydW5rCis3NTMzMCBmNzZlMmU2Mzc3MzAxODlhNGNmMTYwOGVmNGY0N2YxYTI1Zjk3ZDc3IHB5M2sKKzc1MzMzIDI0ZTkyY2VmMjY2NDYzNTlmZTAyNjEzYzYwMzFjYjljMWFjNTdjYmQgbGVnYWN5LXRydW5rCis3NTMzNCBiOTQyYzcwNmUzMzgxMjI4YzJhZjc5Y2RiOWE4YjI1NTAwMTI1ZjQ0IHB5M2sKKzc1MzM1IDY5NmFjZWI3NjM1Yjk5OTY1NTc4Y2E1N2E5OGZmNGYzYjhkM2ZmOGMgcmVsZWFzZTI2LW1haW50Cis3NTMzNiA4Njc2MzMzMzBhOTM4ZTc0NjM5OTdmOTU0MjgwMzdlMzBkN2JhM2M2IHJlbGVhc2UzMS1tYWludAorNzUzMzcgNjE5NGZkNzU0MzIzOThmOGU1ZWJlODkyMWEwMjZiOTAyZWJhZjJmMiBsZWdhY3ktdHJ1bmsKKzc1MzM4IDg2YjY4NGM5Njk0MjRiMmVhZTZmOWQ2NTFhNGQwYTM1MTdmYzNlOGUgcHkzaworNzUzMzkgMzEzMGI3ZTgxMmIwNGVhZjM5ODg0MDYzZDVjZjVmNTNlM2MxODMzNSBsZWdhY3ktdHJ1bmsKKzc1MzQwIDg5YjRiYjBhYTVhY2Y4Mzg2MjllNjEwOTNmM2UzNjM0YjNjYTFlYWQgcHkzaworNzUzNDEgNGRkMDkwMTAwZWNhZmI1YjY5Mjg5NDFkMGMxNmVlM2IxNmZmMDAwYyBweTNrCis3NTM0MiAzZWQ2NTcxNmQ3YWQyNDJjOTk5NmNiNmEwMWY0ODYwYjcwMjdiZWYyIGxlZ2FjeS10cnVuaworNzUzNDMgNWMzNjVhYWIxMGQxY2UzMGZlNzQ1MDY3MGViZDU2YWU5ODBlYjRkYyBweTNrCis3NTM0NCBjMTA1Yjk4ZTY0OWRlOWE0NTg0M2U4MzYzMzVlMjA2OTMzMDFkODhjIGxlZ2FjeS10cnVuaworNzUzNDUgMGFkN2Y5Yzk1MmIwOGNhMTI4OTBiNGFkNGIwMzQzOGFhODcxOWRiNyBweTNrCis3NTM0NiA0YmEyN2QxOGRkOTJkYWFmYjczYjE3ZjlmZjU5NTU0Nzg1NjQ0N2NiIGxlZ2FjeS10cnVuaworNzUzNDcgYmRlOGEzOTYyMjhjMmFhYzIxZTQzOWNiMmNiMTA3OThlOGE0MmY1OSBweTNrCis3NTM0OCBhMTVjN2Q1MGIzY2I2NGUwMTZlZDIzZTM4YjdmMTMyZmFjZDkzNDk1IGxlZ2FjeS10cnVuaworNzUzNDkgMzk3ZTAyZTBiZTkzMTRiNTQyMTAzZmQ1NmQ0OThhMmEwNGUzNmIxMyBweTNrCis3NTM1MCBjYTAxOGUyYmI4NjU0YjliNTk0ZjZhN2E0YTQ3MWEyMDQyZjYzM2JiIGxlZ2FjeS10cnVuaworNzUzNTEgNTJkNjk3M2NiZDk0ZWIzMzQ0YjAzNzNjMmQ2YmEzMTNlYjFiZGFlYiBsZWdhY3ktdHJ1bmsKKzc1MzUyIDUzYzgzYTEzMmUxZWEyMWJiNmM2NmFlOTRiZjQ0Mjc0Nzk4MDJhMzMgcHkzaworNzUzNTMgNjk4ZTBlNjljNzY1N2IyNjljMGU0ZjEyODYwN2RlYWJjOTQzNThhNSBweTNrCis3NTM1NCA2YTVlMGM5MTNjN2NlYmFhYzhmYTQxN2YzNTY4NzQwMzg1OWU4MDY0IGxlZ2FjeS10cnVuaworNzUzNTUgOTIwNDA4ZTYwMzAzMjEzMzdiOTEzYTFjMzlmYjFiZWNkYTMyZmQ3MCBweTNrCis3NTM1NiBlNDYxOWNmOWU2MmNiZTEyOGY5ZWFhYjJjMWNkNGM5OTI1ZjZjNWQzIGxlZ2FjeS10cnVuaworNzUzNTcgOGVlNDUxNzljNTAzOTg3YjAzYjA3ZjFhNTFiN2NmOTcwYTljNTdkNyBweTNrCis3NTM1OCBhNWQ3YjUyNzc5NTE5M2NjNmFhYzZjMWQ5MWViNzA4ZWZiZjY0M2M0IGxlZ2FjeS10cnVuaworNzUzNTkgMTUyMWE2NTdhODVhZDliNTYwMTg5NzdjNTU5YjAwNDhhYzQxMjVhNyBweTNrCis3NTM2MiAyMDViOTZlZmI3OTAwYTEyOGU3MzBjM2M2Yzg5MmZlOWNiMTc4NDI2IHB5M2sKKzc1MzYzIDMyMDA4ZDIzZjZjYjQ4YTFlZGEwYjI3ZjFiMWFmNjg4YjBlYTc3ZmQgbGVnYWN5LXRydW5rCis3NTM2NSA5Zjc2NTExOGQ5Yjk3MTM5ZDZlNjgzZjhiZjY2MzU3Yjg1ODlkYTJkIGxlZ2FjeS10cnVuaworNzUzNjcgMjIwMDhkOTM0ZTYzNzU5MmM0NzI3Y2JhOTJmMTY2YTE5MzJkODdhMSBsZWdhY3ktdHJ1bmsKKzc1MzY5IDQzYWQ1NTQ2MTViNmQyMDBjNjJmZWQ3NTY0ZWY2ODM1MTQ3OTczZTAgcHkzaworNzUzNzAgMDUwNzQ4Y2U1YWQ5ZWFlMjQyODJlYWFiNjdjNjhiZGFkODNkZGUzNiBsZWdhY3ktdHJ1bmsKKzc1MzcxIDRiNWQzOThlYjg2NjY0MzNkZWZkZjhkN2EyMzdjMjZjODJmOGU4MzQgbGVnYWN5LXRydW5rCis3NTM3MiA5YTJjMzdjMzJiN2U3MTgwYTczMTVkYWE4Y2M0OGJmNTkzNzIwZDJmIGxlZ2FjeS10cnVuaworNzUzNzMgY2RkYjYyMGYwY2RhMGFlMTRiMzExYjgzNDc4ZGZkNTU1ZjUwYmVhMCBweTNrCis3NTM3NCAxNjg4NDc5NTUzMjQ5NGJkNmVlMDE3ODE2YWQ2ZDQ4YzZlN2Y0OTg5IHB5M2sKKzc1Mzc2IDM5MjJlNzM0YzliYjczMmY5ZjRlNGRmOThjZTc5YmM1MmYxODBiODkgbGVnYWN5LXRydW5rCis3NTM5MCBmNTlkYTljOTM0MjVhOWY5Y2Y2MTdjODdjYWMwNDg1OGFhNWFlZTllIHJlbGVhc2UyNi1tYWludAorNzUzOTEgOTVhNjk2NDBlYmQzYmQxNzk3ZmE4YmEyYWEyZjcwMWE3Mjc1MTdkMSBsZWdhY3ktdHJ1bmsKKzc1MzkyIDlkMTdiYjRmMTE3MGZhYjIxMGY3ODc4ODIzM2IyMjE4ZjU2ODQyZGEgbGVnYWN5LXRydW5rCis3NTM5MyAyMDllMzgyNTRhZThiODc4ZDM0NTM1NGZlZjBkZTI5ZTllMjEyNTc4IHB5M2sKKzc1Mzk0IDliZDZhN2FlZTEzY2E4MGU4NTY5NzllZTM5NzlmYWQyM2M1ZTYxNjAgbGVnYWN5LXRydW5rCis3NTM5NSAyYTc1ODM3MThkMjUzZmQ1YTBkYTI2Y2Y5ODA1ODBmMzY1ODlkMmVmIHJlbGVhc2UyNi1tYWludAorNzUzOTYgN2ZlOGE4MzEzYTViMmU3ZTIzNDIyZWZhY2Y5Njc2ZmIzNWViZDY0ZCBsZWdhY3ktdHJ1bmsKKzc1Mzk3IGU4ZTEwMzQ4OGZiMzdlMzBiOWRmZjhmNGE4MWY2MDc2YzEyNDZjYTQgcHkzaworNzU0MDAgYmRiZGE3YTk0YzMzM2UwMzY1ZGY2MTkyYzM5NDBhNzM5MDdkODRjZSBsZWdhY3ktdHJ1bmsKKzc1NDAxIDc3NTYxY2QzOWZkMzk3YmQzZmFjZTMyZWVlNWE5NmNiYjk0MzZlNjYgcmVsZWFzZTMxLW1haW50Cis3NTQwMiAwMzg1NDczMmE2YzI4ZTczOWQ1NTQ2ZjI0YjlhYTcyZTFlMDA1YmRlIGxlZ2FjeS10cnVuaworNzU0MDMgMTgzNDc0YmIwMjEzOGRhODhjM2I0OTZjNTJhN2IxYjBhMDVkYTRjYSBsZWdhY3ktdHJ1bmsKKzc1NDA0IDYzNTA4ZWM3Njg0MGFhNjQ4MjA5ODc1NzFhNzg5NWVhZGQxMGNmMGIgcHkzaworNzU0MDUgZGM3NWQxN2RkMzA0YTUwNmJkMTU3ZTVjMmE0ZWFlZmYzMTdjYWNlMCBsZWdhY3ktdHJ1bmsKKzc1NDA2IDY3YmIxN2MyZTg2ODUyMTlmYWIzYzdiZmIyMDBjMDZlNGRkODUwYzIgcmVsZWFzZTMxLW1haW50Cis3NTQwNyAyNDdkNWE1ZWFmYTUzNDM5NzViOTlmM2VlOThmYTRjMWQ5NDU4MTY4IGxlZ2FjeS10cnVuaworNzU0MDggNThlNTc2MzFiZThjYjYzOGVkMzFlNGI0MjI5YTAzNmU0NzdhOTI4ZCBsZWdhY3ktdHJ1bmsKKzc1NDA5IDM4NmE0ZDdjM2M5OWNmYTQ5MjQzYzM4Yzg1ZmE0NDQ5YmZmNzhkNjggbGVnYWN5LXRydW5rCis3NTQxMCBjZGNkODA1ZWVlODVkNjUwNTczMDIxMTIyZTA2MjVmYjZmZjcyMmEyIGxlZ2FjeS10cnVuaworNzU0MTEgZTg1MzJjYzhhMTRlNDk3NGY4YTNmMjc0YzJjM2VjN2MzYjA0Yjk4OSBsZWdhY3ktdHJ1bmsKKzc1NDEyIDllNzE4ZDhmNzFlOGYwMTRhNjc3NmJhMmMxY2FiNTc2ZDhlNzBiNjYgbGVnYWN5LXRydW5rCis3NTQxMyA0ZWUzNDNjNGJjNDlkMDdlM2VlNjY1YjEyYzYwMjM1OTk3YzVmNjAyIGxlZ2FjeS10cnVuaworNzU0MTUgNmQ1MGM0YzFhOGIzNDZmZTAzNjRmMjM3ZmMyODBjYWIxYWFhMjc4ZCBsZWdhY3ktdHJ1bmsKKzc1NDE2IDVkZmM1OGYzOWI5ZjU0MjE5MGU2OWQ3MGNhMjI3Y2RmZWNjMzhiNDUgcHkzaworNzU0MTcgYmY4YzliZjcxMTVjOTNhMjMwZjlmYjlmMzM4ZjQ5OWIyYTVkY2MxYyBsZWdhY3ktdHJ1bmsKKzc1NDE4IGQyNDI5OGRmMmE2NjIwNmJkMDM4NThkOTNlNzM0YzA2YTUxNTA1YWIgbGVnYWN5LXRydW5rCis3NTQxOSA5MzM1MGFjYjU0MjViYTRmMDBiNWNkODA4YzdjNjA0ZWU3YTUwMjgxIGxlZ2FjeS10cnVuaworNzU0MjAgNjRlMTlhNjg5ODg2MTdlZjU0NWZkNDUxODBkMGY4ODcyZWFlMTRlMSBsZWdhY3ktdHJ1bmsKKzc1NDIxIGZlMzhkM2MxNzg4OGM4YzBlYmVhMTNiOGFhZTFmMWZjZGUyZDIwN2IgbGVnYWN5LXRydW5rCis3NTQyMiAxNmRiMmE5MzIyNDg5YzM5ZWJmMmIwNWQ3YjYwNmYzOTRmYjBhYTY3IHB5M2sKKzc1NDIzIDUwYjdmNTY4MTRmOWUzZWEzYzYxMGIxZmViMjZhNTdlZDEwM2Q5MWIgbGVnYWN5LXRydW5rCis3NTQyNCBkMGYwMDVlNmZhZGQwNjRkNzUwMzBhOWFkYmFmYjEyZTdhMjZjYTdkIGxlZ2FjeS10cnVuaworNzU0MjUgOTA0NGY2NGIxMGFlMDZiOGMwMWFmM2NkNDc4NmYyZWUyNzQxNDY0OCByZWxlYXNlMjYtbWFpbnQKKzc1NDI5IGZhNjE4OGM0N2I2M2ZjNTI1ZDgzOWM4Nzk1YjI1ZDJmMzU3NmFkMDAgbGVnYWN5LXRydW5rCis3NTQzMCA0NWI2MjcyNTM3N2E2MTI4NTk3ZGJjZmRjNmQ5ZmY1ZTc0Y2RlMTYxIGxlZ2FjeS10cnVuaworNzU0MzEgYTRiMTkyMmEzMDc0OTIxODRhYTQ0Njk0ZDkyOGNiNTFjMTI0ZDkwZSBsZWdhY3ktdHJ1bmsKKzc1NDMyIGUwMGM3ODg2OWIzY2QzNTY4ZDE3N2VhZDI3MTA5YmYxMTg1MmQ2Y2UgbGVnYWN5LXRydW5rCis3NTQzMyA5ODNlZWZiZjY2NDkzNDBlNzdkYjI1MjAwZWMxOTcyMzQzNmI3MzljIGxlZ2FjeS10cnVuaworNzU0MzQgZTRhMGI4NzM5ZTViOGFiN2JmOWU0ZmE2ZWJmZmZkYTczZjQ2N2EzYyBsZWdhY3ktdHJ1bmsKKzc1NDM1IDNiMzdiOGRkNzZkNzUwMjVmMTQxMjQ3ZWY0ZDk1M2ZjYjYyMTlmYjEgcHkzaworNzU0MzYgZWM1MDhjODlhZDM2ODIwNzhjZTQzYzA3ZGQ2NWRkMmRkZGQ0YzQ3MiBsZWdhY3ktdHJ1bmsKKzc1NDM3IDIwZDA5NTQ5YjgyYzBiOTliNzcwYzExNDgwMmQ3ZDhiODlkMjVhOTMgbGVnYWN5LXRydW5rCis3NTQzOCAxNjE3YzExNTU2YWZhMjhjMWJjYWI1NDgyNDkwYTVmM2YxZGZiMGRiIGxlZ2FjeS10cnVuaworNzU0MzkgN2U1ODQ5NDIwNGM4ZjZlNDNkZGViMDlhOTY3NDhhZWM0Nzg0M2MzNiBweTNrCis3NTQ0MCAyNzU0ZDY0MTgwZDFkYzU1N2RhYjI5NzlhNzkyNThhODcwZDRkNjAyIGxlZ2FjeS10cnVuaworNzU0NDEgM2JjNmZiM2MwY2NkMDlhMDUwNzRmYmEyZmE0ZTdiMzM0MjFmZDg3OSBweTNrCis3NTQ0NSBkOWU0OGFiNjI1NjJjMTRmMDNiMjUyYmIxMTljZjNiOGQ4MjZhZjM1IGxlZ2FjeS10cnVuaworNzU0NDUgZDk2MzA1MTdjNzBjMTk1MDQyMmFjN2UxMjJmZTEzODlmZjFjMWYxNSBweTNrCis3NTQ0NiA3ZmExNGJlOGFkNzNjYjM1NzU3NjY1ZDgxMzgxZTE3MzBkNGQxYzU2IGxlZ2FjeS10cnVuaworNzU0NDcgOGRmYTg0M2M4MzUwMWEwZTVkYjlkYWYzYzc0MTJiZjY4ZTA4ZjRlYiByZWxlYXNlMjYtbWFpbnQKKzc1NDQ4IDI0ZDMyMWZkM2QxYTIwYjE0NzQ2NDhlYjFiM2Q0YmRmMjI0NWEyNWQgcHkzaworNzU0NTAgOWU0MmNjMTkyYTQ0NjU5ZjQ4MmI4NzcwYWFiZjNkMmQ3ZWY0OGI4NyBsZWdhY3ktdHJ1bmsKKzc1NDUxIDc2MDA0MzZkYjJhOWI4NjliOWYwMzBmNGI2OGUwZjdjOGU5MWQ0ZmMgcHkzaworNzU0NTIgMjZiMTFlNmZlNWUzMWM2N2ViZmY4OGNmZTY5YzRkZTBhZTgzYzhjZSByZWxlYXNlMzEtbWFpbnQKKzc1NDUzIDM2NThjMGE5NTg5MjJhZjkyNmYzOTk3Njc0ZmIxZmM3Yzc1N2Q4MWQgbGVnYWN5LXRydW5rCis3NTQ1NCA2MjRmODFiNWVjMjRmNzczYmIwMWYwNzk0NjVkOGRjN2FiZTViY2Q3IGxlZ2FjeS10cnVuaworNzU0NTUgN2Q3MWM1MWZjMzA4YzFiMjY1M2I5ZjIzZDM3YzQxZTQ1OWExNzU0NCBweTNrCis3NTQ1NiA1ZWE2Y2QyODM5Y2M3YzEwMjc2ZTlhMjc1YzE2ZjUwMmQ5OWE3NTM0IGxlZ2FjeS10cnVuaworNzU0NTcgOWMwNmM3MzA5NzY1NjZjNGVkOWE5MTExYjllYWRmYjdhOTA4YjBmMSBsZWdhY3ktdHJ1bmsKKzc1NDU4IDUyOTk1NzlmNTc5YTg1NGFmYjhlMDcxNzMzMjMwNGRjYTdlMjZjNjkgbGVnYWN5LXRydW5rCis3NTQ1OSA0YzFmZjdiMjQ4MmVlMThhNGU5OGYwMDNiY2Y1OWU4NjkyNTc0ODk2IGxlZ2FjeS10cnVuaworNzU0NjEgYTEwODhiYjRmY2Y4YTZkMjEzNDY3ZWY4MTg0MDhkYjBiZDgxOTc4ZiBsZWdhY3ktdHJ1bmsKKzc1NDYyIDIwNDhkMDRkZWFiNDJjNTU1YjgzNWJhN2I0MTlkNGEyOGQ5YzE5MmMgbGVnYWN5LXRydW5rCis3NTQ2MyA4MTQzM2E2NzZhOGJhZmUxZmUzNjVmOWRjMzgwYjIyYWZkNWI5YjBjIGxlZ2FjeS10cnVuaworNzU0NjUgYjgxOGE3YTcwYTQ3NzgxMWExZjEwYTQzYmJjZmZlNDRlZDU1Yzc0YiBsZWdhY3ktdHJ1bmsKKzc1NDY2IDlmMDUzZTU1MGM5Nzc2OGIwZmFkZjgyOTViMDI0NmQzZDQzMTY2MjYgbGVnYWN5LXRydW5rCis3NTQ2NyA5OTMyMDdkY2UzOTU1YjQwOGY2YTZhMjUxNTg1MTlkNjA5ODk0NWJiIGxlZ2FjeS10cnVuaworNzU0NjggMDA3NTA1Y2MxZTJjNzM1NmY2NGFkNWVmZjRkYWU2YjU0ZDlkMjg5NSBsZWdhY3ktdHJ1bmsKKzc1NDcwIGFjM2M2MzJlMWMxM2MzMWM2NjBiNzkyMjNmZjczZTk5M2M1MGYwODMgbGVnYWN5LXRydW5rCis3NTQ3MSBlNmRlYjE1YzVhZTZhMDZmYzFkNDZhOTFiMzI3NDdmN2RmNjYxYmVmIHB5M2sKKzc1NDcyIDM1NGZhNTYxYWFkZjZjZGExMDU2OGNhNTk4ZTNhNDEwN2NlM2NiNzIgcHkzaworNzU0NzMgNDllM2Q0YWM2OWM2Zjk4MGMzNTM1NWIwMDVjODE3NDhmMjM5ZGVlYyByZWxlYXNlMzEtbWFpbnQKKzc1NDc0IDhhNmI2MTQ4NGE5ODRiOGE4ZmQxODk3MDdhYWJmYWI1N2Q2OWQwNGUgbGVnYWN5LXRydW5rCis3NTQ3NSBjMzdjYTlhY2QxZjlhYWNiOWVlYjM4MGYxNzkyYzQ2M2RmYTk2YTMxIHJlbGVhc2UyNi1tYWludAorNzU0NzYgMzBiYjRjMzU1NTlkNjE2NTFlNzUxZTcxODI1NzQ0Y2ZjY2I3NWQ1MSBweTNrCis3NTQ3NyBkMDc5ODc3ZGEzMzVlNjM4MjhmOTc3OTQ2NTNlODExM2FjYjUzOTJiIHJlbGVhc2UzMS1tYWludAorNzU0NzggODRjMTY4MDhiYTJjODFkYTJlZWJjYzBiY2RhZTI3ZGM1ODAzNzBkOCBsZWdhY3ktdHJ1bmsKKzc1NDc5IGQ5NDQ0MDAxMTRlNTAwZDVjNjI5YTVmZWVlZjMzYmI1ODJjNTg1NzkgcmVsZWFzZTI2LW1haW50Cis3NTQ4MCBhYTUzYTJkNGVmMmZjYmU5YjM4YTA1MWI2Yjc4YWU3YTY3ODk0ZjYxIHJlbGVhc2UyNi1tYWludAorNzU0ODEgNWU3YzVjOTRjNTcyMWExNmI5N2MyM2NjZGEzMDE0NzgyMGYwMTg1NSBsZWdhY3ktdHJ1bmsKKzc1NDgyIDM0OWMwMzM3ODk2YTI3MmY2MDZmOTBlZTY2ZTA2YTg2MDI2MTc3N2YgbGVnYWN5LXRydW5rCis3NTQ4MyBlZDdkZWMxMzY0MzBmZTU1YjY1YjliZmI3MzhiNzNmN2ExODQ3MTJlIHJlbGVhc2UyNi1tYWludAorNzU0ODQgNzc3YmQ1ZGQxZDlhYzU0MWEyYTNhOTM3ZmJhOTI2OGM5YmYyZTNhNSBsZWdhY3ktdHJ1bmsKKzc1NDg1IGU2N2ViOTY2MDA0MTc5ZmViZGJmOTg3NDFhYWYzZThkZjIxMDJhYWMgbGVnYWN5LXRydW5rCis3NTQ4NiA3N2VjYzVlNGY2NjRjNzE0MjRlNGQ1MWFhNWYxMzYzYTE2MDkyY2IxIGxlZ2FjeS10cnVuaworNzU0ODcgMjkyOGYxZThiMzg1ODE1NDIzYWQyZTg5YjVkOGM5MDE3MTA1MjA2MCBweTNrCis3NTQ4OCBjYjUzYjFmYTcyMDZmMmY1MjA1MDUyNzlkNWQ4NTU0NGViNmJmYzNkIHB5M2sKKzc1NDg5IDNkYmM2MjA3Y2JmNmRlNGZmYTUxY2EwYjljOTdkYjEyZGUwMzg2MzUgbGVnYWN5LXRydW5rCis3NTQ5MCA4OTNjMmE0Yzk1NDQ0NTVmNzk4NzE4ODAxZTlmODdhMjFkZWYwNDk2IHJlbGVhc2UyNi1tYWludAorNzU0OTEgZGUyZDk5YWE0NmVhZmY0ODNhOWY1Y2FiMjkwMjcxYTFkZTRlNTY2NiBweTNrCis3NTQ5MiAyYjYzNTk3MDkxODhiMTFiNjlmMzE3ZWIwZWRkM2NkZDRiMDFlOTYyIHJlbGVhc2UzMS1tYWludAorNzU0OTMgMDk4YmEzYTYzNzMwY2E2ZDc2NGJiYWRmNTlmMGNmYTc0YmM2MTAwMSBweTNrCis3NTQ5NCA1Mzk3MDAyZjdlNWU4ZmI5MTgxMjFkMGQwZjYwMzc0NzI1Y2Y3YzhmIHJlbGVhc2UzMS1tYWludAorNzU0OTUgMGY5ZThkM2VjYWMzOGM1NzYwNzBmNTU1NTI5YTc5ZjY5MjJjMWQ1OCBweTNrCis3NTQ5NiAyYzYwYWM0ZWQ2NWY2OTAwYjg0YWJhYWNjOWE5MjQzYmU0MzRiYWUyIHB5M2sKKzc1NDk3IGVhMWZkYWZiZTRmZTI0NThhYzE3Mjg3ZTBkNmM3MDllZDAwZmNlNWMgcmVsZWFzZTI2LW1haW50Cis3NTQ5OCBiZmU3NTZlYjA5ZmFhZDA1ZTdhZDBhOWE1YTA4ZGM2N2JlMTNmYmFmIHJlbGVhc2UyNi1tYWludAorNzU0OTkgYTBlNDFkZmI5NzJiNTE4NzgzMzljZmFiMWYxNzQ5ZDkwNWJmNWVkNyBsZWdhY3ktdHJ1bmsKKzc1NTAwIDM4NjQxNGI4NDZlYmNjZGNjNzg0ZWQ1ZDc3MDEzMGNjZTY1MjNkZGUgcHkzaworNzU1MDEgMjVlZjZmNDgxOGEwNTc4OTRiZDlkNzcwZmY5NzQ4OTdjMDg1NjQxNyBsZWdhY3ktdHJ1bmsKKzc1NTAzIDA2OTk5MjUzOTg3YmI1Mzg1ZTcxOTcyZTUwYWRhNjUxMDM0M2Y5MTUgbGVnYWN5LXRydW5rCis3NTUwNCAyYTY4NTNhMTNhMmY3OTdkOWI4NDJmYzI2MDk4MTcyZGU3MDhhNDRjIHB5M2sKKzc1NTA1IDNjY2QxZDZmMDVhNmI1YzcwYzVhNWQ5OGY0ZjNjNGExMTg2NjBiMTQgcmVsZWFzZTMxLW1haW50Cis3NTUwNiBkMTY2NmNjN2JjNzRmM2FkOWZlNGZjZjFmMGI4ZTQ5MWU5ZGJhNTJhIGxlZ2FjeS10cnVuaworNzU1MDcgZDg5ZTRhNGUwYjIwN2ZkYjQwYzZmOTkyNzU4M2NhZGI5NTQwNmYxMSByZWxlYXNlMjYtbWFpbnQKKzc1NTA4IGVkOTkwMjZlMDdmY2RkZTg4NmM3YTFjNDA3YWZhOTllMzA4NWQ3ZDcgcHkzaworNzU1MTAgNzljYjA3ZmEzNmVjMTBlMDAzYzZhMDU2M2E5MWNlZWRjYzE4YWMyZiBsZWdhY3ktdHJ1bmsKKzc1NTExIDY3NDljOGFkYzQ5ODU3Y2RkYzIxZWVkNmM3ZGVmMDZlYjhjNmE3NjIgcmVsZWFzZTI2LW1haW50Cis3NTUxMiBlNjQ0ZWU0ZTc2YzdiY2Y3YWMxZjRlNTU1N2MxNjU0ZmMwMDNlM2RhIHB5M2sKKzc1NTEzIGY0MjYzYTliZDhhZGRhNzNhZDRhNTQ1YjIxYWQ1NmIzMTkzOGMwMGEgcHkzaworNzU1MTQgOTgyNWVjMjI4ZWZiMTJjYjJiZjY3ODEzYjY5NzhjZjI2MTRiNTFlZiByZWxlYXNlMzEtbWFpbnQKKzc1NTE1IDM3MTkzN2JhNmZhNjJjYjBiYzhmNTc3NmNlNjlkODZjMTRmNjg3OGIgcmVsZWFzZTI2LW1haW50Cis3NTUxNiBkOGE3YjMxNGZjNTA1MDEyNTM5ZmJkZTVkMWQ1Y2EzOGQ1MjhjZTI5IHJlbGVhc2UyNi1tYWludAorNzU1MTcgNzE4ODAwMjlmZTc1NjJhNDM4MGUyMGNhOWRlMWJhMzIzODlmMWQxOSByZWxlYXNlMjYtbWFpbnQKKzc1NTE4IGYzMDY2N2NkNDA0M2M0M2I4OWUwMzQ4OTBlOGIwNDY2OGNlNDBmNzggbGVnYWN5LXRydW5rCis3NTUxOSAxNjBmMTZhOTFlZTczODVhNTBiMzZhMTNmMWFiZDI1ODNiMzgyNWM2IHB5M2sKKzc1NTIwIGJkNmRlZTZhNzhjMzk1ZWM2MTdlYjQxZjI2YmJhZDEwYTZlODdmYWQgcmVsZWFzZTI2LW1haW50Cis3NTUyMSA0MjMwM2M4Y2FiMzE1ZWJlNzBhOWJjNGM4YjExMWM3MWU0NzI2YmZkIHJlbGVhc2UzMS1tYWludAorNzU1MjIgNGE5NTQyYWNjZDEzMzQ1ZTc1ZTBiZmZkOTdkZjU1Y2ZlMTg1YTY1MCBweTNrCis3NTUyMyA2NzBlMjIyYWZkNDgxN2QzOGFlMWJiOGU5NjQ5NmQ3NGQyNDk0NTY0IHJlbGVhc2UzMS1tYWludAorNzU1MjQgM2RhYWNkOTg5MjVkNzg2Nzc3ODA5NTIxN2RmYTdhNzE3NTZkYTNiNSBsZWdhY3ktdHJ1bmsKKzc1NTI1IDczMjcyYmQ5NGQ3YjAzYTE5OTc4YWRlODRmYmYwMDg5NzFiYzY4MTkgcHkzaworNzU1MjYgMzQxODJmOTg1ODliOGM5YTIzOTBiOTA2YTM2ZjczNmI3MDA0YTc5MyBweTNrCis3NTUyNyBmNzQwMzBiYTY2MTA4OGY2ZTI5MjA3OWEwNzk4Y2E5ZDk2YjI0YjJhIHJlbGVhc2UzMS1tYWludAorNzU1MjggOTBjMTBkY2IyOTEzMzkyMjIxOGE3ZTFkNmQyOWUyNDg5NjE4NzA3NiBsZWdhY3ktdHJ1bmsKKzc1NTI5IDQzZDBiNDcxMDZkZjhiOGVlZGVkODU3OWYxZjY0N2NkOGQxMDNmOTcgbGVnYWN5LXRydW5rCis3NTUzMCA1NTQxZTQyZTFjODExZDFkYmU0NmUzOTNlMzcyM2EwYTY0YzRkOWZhIHB5M2sKKzc1NTMxIDg1Njg1ZTdkNzJjNzE4NGJjNmI3MzlhNTgyZDBlYThjZmUxYjFiZTkgbGVnYWN5LXRydW5rCis3NTUzMiA1NDAzMWVjZTQzYTMzYWNhMTZkYzA5ZjMyYTEyNDc3ZTNlYTZiNTZiIGxlZ2FjeS10cnVuaworNzU1MzMgY2FmM2M5M2QwMTkzNmE0YjJlNDdhZTYyZTg1ZTc4Y2Y1OWFhNTVmMiBweTNrCis3NTUzNCBlNmM0ZGJiNWRiMDJlNTA4YTQ5ZTc5N2ZhZjkzNDYzNjA1MDMxOTBjIHJlbGVhc2UzMS1tYWludAorNzU1MzUgN2FkNmU3OGE5YzdkY2RiMTU2ZGVkYTJjYzQ1NWEyNjhjODI1ZjZlMyBweTNrCis3NTUzNiBjZWM3ZjRjNTg1NDQxNDI5MGY3NTZlNTYwNDM3Nzk5YWY3NzZiOTBmIHJlbGVhc2UzMS1tYWludAorNzU1MzcgZWRmMjI2MzdiZDkwOGQzN2M5NzQwODU5MTZkNmI3OTY2NGU3MWUxZiBweTNrCis3NTUzOCAyZjE0YjBmNDU1MWFmMmEyOTAwNzM3ZWMxYjQ5ZWQxNjRhNWRiZDQ4IHB5M2sKKzc1NTM5IDkxZWU4MWYxYTUyNDJiNjZlNWJjOWY1ZTUyNjAwMGY2MjNiZWY5YzYgcHkzaworNzU1NDEgN2FlNmQ1ZTRmNzk4MzVlN2I0MDdmOGE3MmQwOGFmMzI3YzIzZDI2OCByZWxlYXNlMzEtbWFpbnQKKzc1NTQyIDk1YmQ3MGQ1ZDcxNWNmMDhkYjUzMWQ1ZTdjNzIwYTk1Y2RmZDdkZDkgcHkzaworNzU1NTEgYmRjMzkwNzIxZjk3NWM4ZDlmNjEwZTNhZjg1NDA5NDA2OWI3ZWFiYyBsZWdhY3ktdHJ1bmsKKzc1NTU2IGEyMTk5ODg5M2IxZGU0NjYzZGJlZjFiOGQ5ZDA3ZTI5NTdlNDgwMzAgcHkzaworNzU1NTcgOTQxZjFiZTQyM2FhMTg4NzFlYmQ5ZjUxYWRhMWUzNmVmMWRkMDA5MiByZWxlYXNlMzEtbWFpbnQKKzc1NTYxIDFiNjAyYTJkODFlZjUxOGI3ZTI4NzI0MmExNjcyYjU2ZTFkYzgwY2YgbGVnYWN5LXRydW5rCis3NTU2MiA2ZTRhNDkwZTcxNDcxM2VjMDRhN2U0NTgxM2M1MGMwNjg1ZDhkZjRkIHB5M2sKKzc1NTYzIDI2MDA3Mzk1NjA3ZTg5ZGMzZjk5NjExMDk4NDhjMGMzMGIzZGYxYWEgcmVsZWFzZTMxLW1haW50Cis3NTU3MCAxMjA3OWMzZDRiNzc5Y2NjZmJmMmUzYWQzMDViMTkzY2UzN2VlYTk1IGxlZ2FjeS10cnVuaworNzU1NzEgYmY3NjI0MTIwZWM3ZmUxYWFlMDg2YmRhMGJlMjM4OTYwZWUzZWQ4YSBweTNrCis3NTU3MiAwMjk5OTUxMzkxZTM2YWQyMzE1ZGQ0MGY1ZjRmNTg0M2FmNzNmNDE5IGxlZ2FjeS10cnVuaworNzU1NzMgYjNiZWZlMGYyYjhkZGMyZGU0N2JmMzNmYTM5NThkZDZjYzM5MGYyZCBweTNrCis3NTU3NCAzY2ZkMjBjZDY0NTlmNWNjNDJmY2JhMWYwNjJjODRiN2YzMjA3NmU1IGxlZ2FjeS10cnVuaworNzU1NzYgMTdjZTk0YWVlNzA0NmFiOTBmMjgxNGJmMzY3NDljNDdhOWNjM2QxMiBweTNrCis3NTU3NyAxZTcwMzVmYTYxNTRjNmY2NWYwNjBmNmQ5YTUyYzNiMTI5NDU4OGU5IHB5M2sKKzc1NTc4IDI5YjNlMTI2YzBjMjQ2NzJmN2Y0MzhhMTQ4ZWM1YzM4NjgxMzMwZWIgcmVsZWFzZTMxLW1haW50Cis3NTU4MCAxYjk0NDQ5N2U4MWUxZGJmZGYyNTgyMGQ1ZTVjNzA4OTE5OTUwNTVmIGxlZ2FjeS10cnVuaworNzU1ODEgOGMxYjYxZTc0NjNhNDFmN2YxZDdlNmM2ODkwNDBiYWMyNzVjMjU1MCBweTNrCis3NTU4NCA1ZDhiMmQ2ZGNkNjIyOWRlYTJjNGI1N2YxOGRjNGI5NTI3NjA3Mzc1IHJlbGVhc2UyNi1tYWludAorNzU1ODYgNzE2ZWMzZWQzZmNmOGZhZjVlM2RiOGJhNWFmMTkzOTEyMDE0YWMxMyBsZWdhY3ktdHJ1bmsKKzc1NTg2IDQxNGUwM2MxNDgxNTlmNDliZDZkZWJmZTVjYThiYmNkOGZkZTA3OTcgcHkzaworNzU1ODkgZWJlMTljNGM3MWY1NzA2Yzk3ZTJiYTdiODNhYTgzZTc4NzJlNmE5NiBsZWdhY3ktdHJ1bmsKKzc1NTkwIGE5YmE2MzdkNGRjZDM3NTY1NGM0YmMyMDE0YzM5MDRlMjIxOWRhNjkgbGVnYWN5LXRydW5rCis3NTU5MSA5NzgzNDljMDc0Y2UwODI4YmY1NWMwMWEyYWExZTYwNDMzNjAyMDU3IGxlZ2FjeS10cnVuaworNzU1OTIgZmU4NWVmMjdkYzQ3OTFlNjZkZjU0YzlkMTcwOTU0NTc1NjRiNmJiMCBsZWdhY3ktdHJ1bmsKKzc1NTkzIDVkZTFhYzI0MmJmYjU2M2Y0NDVmNzM2YjU2NDhkNzVmOGFhMTdjZWMgbGVnYWN5LXRydW5rCis3NTU5NCA1OGJkYTEyMDVhY2Q5ZDg5MWMzNGUzODk4NTdjNGZiMmJhYzcwMDdhIGxlZ2FjeS10cnVuaworNzU1OTUgMGJhOWIyMTcxODFlZDhjNTYwNTgzYzk4ZjkwZTljNmFlMmVkMmQ0MyBsZWdhY3ktdHJ1bmsKKzc1NTk2IDNjMjZjNmI0ZGI1MDBiN2NjYWY0MGYxMWJlNTBmOGZiNGQ4M2IzNzggbGVnYWN5LXRydW5rCis3NTYwMCAwN2VmNTk3NjZiMDI2ZTAzMjE0OThlNjMyNGEwMTgxNTRmMmJhZmUxIGxlZ2FjeS10cnVuaworNzU2MDEgMjdlYWFjMDdjNWQ2YTg5YTFhNjFhMDc2NzY1NDNlZTgwZGRhNmVkZCBweTNrCis3NTYwMiBmNTU1NjhiMzk5MjU2YzI3MzE4Mzc4YTFkZWNkNzI5NGY3MjM1OGIwIGxlZ2FjeS10cnVuaworNzU2MDMgMDY1MzQ4NjkzNWI2NDE2OGRlMzQ0ZDBhNTIwNjg2YTAxYmQ4MDljYiBsZWdhY3ktdHJ1bmsKKzc1NjA0IGJhY2Q0ZDQyMjU2YjY2NzhmODU4MTA5ZDRmYjcxMWJjNDMzMDBlN2YgbGVnYWN5LXRydW5rCis3NTYwNSA3MmE1ZmM3OTBkMDFmYzIzMjI4NmJlYzc3ODZjN2ZkYTg3NmRkZDc0IGxlZ2FjeS10cnVuaworNzU2MDYgOGE1OGE3ZWM5MmRjNTZkNjlmZDg5YjVhNWE0YTI3OGRiNTM1MjEzZiBsZWdhY3ktdHJ1bmsKKzc1NjA3IDRjZmFmNmFlYzVlYmM1NTk5MDVmMjljNjRlOGY3YjUzZmIzZDNhMTUgbGVnYWN5LXRydW5rCis3NTYwOSBjNDM4OGU3ZTc3ZTlmNjZmNjQxMjA2MDFjZjYwZTc3ODQxY2IyYTQyIHB5M2sKKzc1NjEwIDU2OWEwZDE3MGZhYzcyMDM0NTIyZGI2OGU0OTU0YWU5ZDVjODRkNzMgbGVnYWN5LXRydW5rCis3NTYxMSAxYjg4ODM0MzAxMzkxMWZkZmI2ZTM1NTc5ZjBhMTJjNDllN2M3YWQxIGxlZ2FjeS10cnVuaworNzU2MTIgYTE3YjU4YTQ4NmY0MGI1ODUxYzY0OTZlMzAyNTJjZjkzYzUzMTVjZCBsZWdhY3ktdHJ1bmsKKzc1NjEzIDlmZmExNTEzMDk4NDY1MzE1ZTdjOTc1NWY2NjFmYzVkN2ZmZTk1ZmUgbGVnYWN5LXRydW5rCis3NTYxNSA2ODI3OWMxMzNmZDk5MjJkNDYxNzYwNjYxZmYwMjlkMjkyNzk3MDY4IHB5M2sKKzc1NjE2IDMyMWU2MzVjOWFiODI2YThhZmE1ZjNmNDY4ZDA1NjQ1NjUzOTIyNWMgbGVnYWN5LXRydW5rCis3NTYxNyBmM2I3YmQ2ZTdhZGQ5ZmE3MTdmMTExYzhlMzY5MjQ5MWYyYWRhNGU0IGxlZ2FjeS10cnVuaworNzU2MjAgZGIyMWMzYzAwOWRiMzkzY2UyN2Q5NzM3YTExODFhMjYwODliNmQyOSBsZWdhY3ktdHJ1bmsKKzc1NjIxIDNjMDY2NDQ4MGY3YTE2MGJlM2E0MDNkN2NhMTc0NGY0NDE5YWU1MjcgcmVsZWFzZTI2LW1haW50Cis3NTYyMiA4ODE5NThkYTIxOWE3YTM0ZDgwMTdkZjExMzFjNDJkMmMxNjVkZDE3IHB5M2sKKzc1NjIzIDZkMjcyZmQxY2RkMWU3YjQ1Y2RiZDI4NDc4ZDE5ZjlkZTVlMDcwZTIgbGVnYWN5LXRydW5rCis3NTYyNCA5MmRkZTI4MjE1M2RlZjU0YjQ2NDlkMGQ0NzgyMzliYzc0Zjg5MTIzIGxlZ2FjeS10cnVuaworNzU2MjUgOWViNzllOTQyMDRkMjY1Yzg5ZjQ3OTM4ZjkxZmU1ODM3NDA0YWZiOCBweTNrCis3NTYyNiA2MjAwODVhYjQ5NWI0MTY0ODQxYTMxZTM3OTFiZWZmMTIwNWQ4MzdiIHJlbGVhc2UzMS1tYWludAorNzU2MjcgYjExZjAyY2IxMTI0NGY3ZDJmNTVlZWExNWNkYTVhNmY2M2U2OTliYyBsZWdhY3ktdHJ1bmsKKzc1NjMzIDlkZjMzOTM3MTcxZjY1MTZjYjUwNzExYzM0NTNiYjk0N2ZlM2NiZWYgbGVnYWN5LXRydW5rCis3NTYzNCBmMDkxNDQ0ZGVlYTAxMDQwZmYyZjgzYjhlMGJmMDE2ZWJkOTU2YjJlIHB5M2sKKzc1NjM1IDk2ZDZjMTQ2Y2ZhOTE3NjFhODViZjM2NDIzNTZjZDMxYjFhODY1YjEgcmVsZWFzZTMxLW1haW50Cis3NTY0MCBmMzhkYWJmMjQwY2JhZWM0MTUzZjRjNDdkYTVlODliZmUyMjk3YzZlIGxlZ2FjeS10cnVuaworNzU2NDEgMzViYjQzMzg2NzM0NGZlMzI3YmU3MTNmYWQ4MGZhNzA0ZDBiZTM5YSBweTNrCis3NTY0MiAxNjFkMzMyYWZjODg0ZDdhNzQ3MjRiY2I0ZDkwNDQwYjEzNjczMTg5IHJlbGVhc2UzMS1tYWludAorNzU2NDcgODBmMjI5M2ZkNjZhYzg1MWI2YTQ4NWU3ODAxNDg3YTZkZGJjNjY3ZCBsZWdhY3ktdHJ1bmsKKzc1NjQ4IDEwZTcyOTM5ZDJjZjkxNjZkYjVkOGEzMDdhZjk4ZjFkMmMzZGQ1YjkgbGVnYWN5LXRydW5rCis3NTY0OSA5YTkxZDQ1MmEwZjg4ZjdlODY1ZmE2MmEyN2FiZWQyZWE2NDc0NWVmIHB5M2sKKzc1NjUwIDJmMzA3YzdhZGI4ZmM1YjEwNzc1MjcyMWZmZWM0MjIxNDE1OGYwMDMgbGVnYWN5LXRydW5rCis3NTY1MSAyMTQ2YmJkZjRlZDdkYTM4YjlkMmQwZTAyYjYxNWQwNmFjMTMzYWE0IGxlZ2FjeS10cnVuaworNzU2NTIgMGM5Y2ZjN2YxZTk1Yjc3ZjVjOGM4NzVjYmJmMzZhY2ViODQ0ODk1ZCBweTNrCis3NTY1MyBlYjkyNWFkYmE4ZjkwMTRjNGMyMWUzYjRmNGM1OTJjOTBkNWY4ZDRiIGxlZ2FjeS10cnVuaworNzU2NTQgMjY0NjA5ZmJkYTQ4MTU2MzdiNThhYzQ1YjliNDRlZDQwMWMxNGU3NCBsZWdhY3ktdHJ1bmsKKzc1NjU1IGFlMDJiMTY4MTYyY2U4ZjRkZGVhMjE0MGExNjI0OThjMjNiMTBkNDQgbGVnYWN5LXRydW5rCis3NTY1NiBjNzA0NzUwZTZmM2U1YjA1MDZlMTc0Y2QyZmE0YTZjOWZiNDk3YTI0IHB5M2sKKzc1NjU3IDZkMjljZTlkY2E5MDJkYTNmMjFlY2IwNzUxZjIxNDYxNmQ1ZmJiMWMgbGVnYWN5LXRydW5rCis3NTY1OCAyYWIwOGM5MTk2NDgyNGNmMDVhYzk1Yzg1YmFkZDM5Y2FlN2ZjYzcyIGxlZ2FjeS10cnVuaworNzU2NTkgMjRkNDNhOTE0MmQyNWFmMGViMjAyM2Q0MDAyOWY5MWI5M2Y1N2RlNCBsZWdhY3ktdHJ1bmsKKzc1NjYwIGRhYmUxZjkyY2EyNzQzNzc3OWExODM3ODM3Y2YzZWI3NDBjZGUyYjQgbGVnYWN5LXRydW5rCis3NTY2MSA3MjA2NmU1Yjk0MjE3ZTEzODZhOTg1NjU4ZjM3ODRlOTBhYzQxYzJlIHB5M2sKKzc1NjYyIGNiZTM5M2ZhNDRmOTYyODg3N2IzMzBlNzJlN2MyNDkzOGMxMjRlYTkgcHkzaworNzU2NjMgNTY3YjBmMzRiMWViMTNlMzIzMmY3MTNlYWEyZTk2ZThmZmJmN2NiMiByZWxlYXNlMzEtbWFpbnQKKzc1NjY0IDA2ZTY2MzY2MThkNzIxYjgzZDQ0MWRjZmE2OWNmZDdjMjk1MTUyN2UgbGVnYWN5LXRydW5rCis3NTY2NSBjYzg4YTcwMzQyOGQwMTFmMmJhODRmZTNlMzljNTZmYTVjZmMwOTU3IHB5M2sKKzc1NjY2IGFhY2VlOTc0OWQxNTQzNWE5NzFjNzk0NmJmZDBjMDdlODNiZTUwMmIgbGVnYWN5LXRydW5rCis3NTY2NyA5MmYwYTFjYTRlOTg2ODQzZDNjYjE2NzJmNmI1NTEyMjEzNjg5OTE3IHB5M2sKKzc1NjY4IDBjMzg0MDhhZDgxOWUwZTRiMjQ3MWIzM2RhYzZlNjI2NmVjMDQ0ZjMgcHkzaworNzU2NjkgYjJjOGI5ODQyNTBhYWY5MTc5YzMxMTE5NjIyZmRiYzdiZDM5N2RkZSBsZWdhY3ktdHJ1bmsKKzc1NjcwIDRkNjVmMTIyYjJiM2I3ZjRmYWRhZTRlMGU1MTgzM2IwMTE4MTkzM2EgbGVnYWN5LXRydW5rCis3NTY3MSBkYWQyMmExZWQyOGIyZjZmNWI1NzFjODdkNmQ3OWZjYzdhZWJiNGE0IGxlZ2FjeS10cnVuaworNzU2NzIgNWNmMzI0MzMxNWI1YmI4YThiN2UwM2E3NGUzOTg1YmRjMjA4MTZhNSBsZWdhY3ktdHJ1bmsKKzc1NjczIGYwMjE5OTFlY2Y4ZDZiMzFlMGZmZDlmMDY1MjllMTczYTMyMjI2YmQgcHkzaworNzU2NzUgZWRmMzVjM2E0OGFiOGIyNGEyYjU3NjBhMTZjNzdlYTA0ZWQ3MmI5OCBsZWdhY3ktdHJ1bmsKKzc1Njc2IDQzZDQ3Y2I2Njg4Y2ZkZTA5OTUwOTZjOTZkNDMzZTRjODMyZjVjOTMgcHkzaworNzU2NzcgY2I3MjFjMzE5NWZjNzRkZjczMmQyOTJjNDk1N2JiZGM3ZGFjYjI5YyByZWxlYXNlMjYtbWFpbnQKKzc1Njc4IDE0YjU1YTRlODcyNWFjOGMzMzQ0M2U2NjYyMGJkM2RhODI0YTY5NjQgcHkzaworNzU2ODAgYjU0ZGE1Y2FhYjM2NTA1MDExNjZhMTM5NmQ3NzAxYmYyZjhiNjY3NSBweTNrCis3NTY4MiAwYzEyMzhjYWJlOTIxNWViY2RkYTVlMWU5N2UyNWFhMDA2ODZmMDkwIHB5M2sKKzc1Njg0IGY1YzU2M2E3ZGU3NWQzOTJjYjI0ZTkyYjE1MTc2Mzg0OWVlNjAzZjAgcHkzaworNzU2ODYgNmNhNjQyZDRmNDJmZDVmODcwNTQ2NjhlMWMxMGM3YWIwODA1YTM0NyBweTNrCis3NTY4NyBjNzFiYTVkMWYxN2QyMmYxNjg3NWNmZWYxOTI3YjNlNmZhZTNkZDhlIHB5M2sKKzc1Njk2IGQzZjZmYmViZWFjOTAzZDUzOTdlMDkxMTk0Mzc0ZWIxMWIxMTIxMTkgbGVnYWN5LXRydW5rCis3NTY5NyBmYmU2YjI2NWJkMWEwOTUzYjY4N2YyNzI5ZTg0ZDE0MTM1MWI4MTAzIGxlZ2FjeS10cnVuaworNzU2OTggNDgzNGE0Mjg1NDExYjkxMjM5Nzc0NzJmZDYwNGZiNTA1MWVlZmE2NyBweTNrCis3NTY5OSBhMzUzZTEwOGM3ZTQyMzlkNGEzOTY0OGY1ZDgyNzUxMWRjNTQyOTY0IHJlbGVhc2UyNi1tYWludAorNzU3MDAgOTc3MzZjNzg5MGE2YjUzNmFjYmE0ODAyZWQ2OTAyNzBhNThjNGM5ZiByZWxlYXNlMzEtbWFpbnQKKzc1NzAxIGRkNDY2YWMxOTJiZTlkZWZkOTBlYmYzNmU4ZjFiMWI0YTg2OWU1ZTQgcmVsZWFzZTMxLW1haW50Cis3NTcwMiA4YWM5MDcwMTU2MDU5NTVlM2M5MDY0MjE4ODM3OGUzOTMxZTY4NDQxIHJlbGVhc2UzMS1tYWludAorNzU3MDMgZjhlNjVjYTNmZDM5Y2QwYjNlMTlkOTYxMGY0OTVlNWY1NjI3YWQyOCBweTNrCis3NTcwNCBjYjljNTdlMmViZDM0NzkzMGYwMjA5ZjRjMjliNDMwMTIxMTI4MTY0IHB5M2sKKzc1NzA1IGEzY2I4MTJkODBmOTA3NmM1YjNhMDM0YTI4OGY5MzFhYTAzNmZhMGYgcmVsZWFzZTMxLW1haW50Cis3NTcwNiA4ODAzYzNkNjFkYTI3NWM3MWNhYmU5ZTlkMDI3NGRhYzk5MDJlMmMwIHJlbGVhc2UyNi1tYWludAorNzU3MDcgZWM0YTFiNGVjYjMxNDA4ODQ0YWY4NGM2NzIyNGZkNTAxYjUzYjQ4MSByZWxlYXNlMjYtbWFpbnQKKzc1NzA4IGI1MTk2MDhhOTcwMWYwMTA4ZTdhMTYxODNjZGRkNWVmMzFkMzViY2UgcmVsZWFzZTMxLW1haW50Cis3NTcwOSA3YjYwMzY4MGJmMjk1YTIwMDI0NGQwYTRkNjNlNTg0ZTcyZjMyMWUwIHB5M2sKKzc1NzEwIGQzY2Y4ZWI4NzI3NGE2YzY0ZjE2MmM3OTRmNGQ1YmUxYWNkZjE1YzYgcHkzaworNzU3MTEgNzZjNjY2OTBkMWVlYTUzNzZlOTI4ODkxOTAzZmI1YWNmYTI2OGI3YiBsZWdhY3ktdHJ1bmsKKzc1NzEyIDhlZmY3NTlkMDgwZjlkYjFkN2JkN2JmMzhhNjhhNWFhODgzZjYzMTUgcHkzaworNzU3MTMgOTcxMzkzZjYwYmQ4NzRkYzQ4MTY1YmJkN2FkNDg2MjQ3MDA1MDIwZCByZWxlYXNlMzEtbWFpbnQKKzc1NzE0IDZlNGQ4OTY4ZTI0Njk2YmRhOTI4Zjk0NWYzMDRkNTVjZTFhNTBlZWUgbGVnYWN5LXRydW5rCis3NTcxNSA3ZGM1N2I5OTFkODNiZGRkMmM1ZjUyYWQ2ZDYwOGU3NWZhYzhmNWNhIHB5M2sKKzc1NzE2IGY1OTg4NDNmMzY5NWJjY2MxZjhjMzA5YzllY2Q2MzFlZmEwODhhYTMgcHkzaworNzU3MTcgMDk1YWY5OWU2YjY0MGY1Mjc3ODQ1ODdhYjZiOWRlMmE5Zjk4MWVkMCBsZWdhY3ktdHJ1bmsKKzc1NzE4IDM4YTU3NTRiMzAzNzcxZDgxNWQ0M2Y1MGIzZTI3OGE4NzUyMGY1MDYgbGVnYWN5LXRydW5rCis3NTcxOSBmNGM3ZmQ4NWYyMzI0MDk2NGE0MTM0MmU5YzY4MTVmOTAxMDZjMDc3IHB5M2sKKzc1NzIwIDM4ZmRhM2E0MmMwYjNmNThmNmE3NmNjMTIxNGI3ZWY5MGU1MDllYzkgbGVnYWN5LXRydW5rCis3NTcyMSBkYTk2YjNmZWFmNTI1Yjc2MWZjYTY0ZjI5ZjFkYTQ5ZDRhYmMzZWZiIHB5M2sKKzc1NzIyIDc0NDcyZGEwOWY2Y2RkZWI4NTE5Zjc2ZTY3Y2Q4YTViNDExNTczN2UgbGVnYWN5LXRydW5rCis3NTcyMyBiNTVjMmVlZTM0OGI1NjM2NjFkNjEwYzljYmRiNzY0ZjJkNjQ3NGZlIHB5M2sKKzc1NzI1IGYzYmY5MmNkMTE5MTc0YzM5YzBhNjg3ZTdmY2Y1NDIxZmFjMjhhZDAgbGVnYWN5LXRydW5rCis3NTcyNiA0NTAxMDVkZDljYTc0NTNkYzNjMGE3ZDIyMDY5MmI4NzhjMjdhYzM2IHB5M2sKKzc1NzI3IDZkYTBhZTY4MGZiNjAyZGNmYTY5YzRiNjAzNjc5YWU2OTJmZjZiYTggcmVsZWFzZTMxLW1haW50Cis3NTcyOCAwM2UxZGJlMmY0ZDU5YzgzODllYTQ1MjQ4NWRjZjgwYTZhZWJlNTQzIGxlZ2FjeS10cnVuaworNzU3MjkgYjUwNDE3NTZmZDkxNDNjODA1YmQ1YmI1ZTk1ZDFhYWEzMjQ1NDU1OCBweTNrCis3NTczMCA0MWJlMmM2OTYxOWIyYzZjNjcxMDJlYzdiYThhZmZlNTgzYjE4ZjFkIGxlZ2FjeS10cnVuaworNzU3MzEgYzU2NDE5Y2JkZDQ4NjQzNzE5Y2QzMzk5MTBiN2UwOGM4ZDI0ZWFiMSBsZWdhY3ktdHJ1bmsKKzc1NzMyIDZkMjM5NmVhN2IwM2I0NGI3NDdmYjFjNDI1ZmQ5MDMxOTg5Y2EyZTMgcHkzaworNzU3MzMgZTU1ZmZiODdjYjcwMmNjNWYzNTY5YjA4ODc1NmM2MDYwYTA2NTBhOCBweTNrCis3NTczNyA0Y2JlYTllNzgzNTY4MTgxMzFhZmE4NzRiYzJhY2Y5NjAwMGMxZDA4IHB5M2sKKzc1NzM4IDVhOGU4MTU5NGYwZjE2MWUzODNiODM3MjAyOWExOGI5NTNiMTM2NDMgcHkzaworNzU3MzkgMGIxYTA4ODAxMmM3NGEyMTdjNmQ5NzI2ZWRjMzVlMGIyOTY5NzhjMyBsZWdhY3ktdHJ1bmsKKzc1NzQwIDg3NTUwMDZlZGY5NzNkY2FiNTZhMjRlOGE4ZTNiMjBiZjIyZjEyNjAgcHkzaworNzU3NDEgODk2Zjk0NTQxZjcyZWYzNWJhZTE1MWQzMDFmMTc1ZmY3YzMzZmZkOCBweTNrCis3NTc0MiA0MjI1MmQ2ZDEwMzBhMmMyZjI0YjdlODc1NDVkNjdjYjQzYTA4MDgxIGxlZ2FjeS10cnVuaworNzU3NDMgYTc3ODE3MWM5M2RlNWVjNjliMWMzOGY1ODBkODcyMDhmODM0ZjUwZiBsZWdhY3ktdHJ1bmsKKzc1NzQ0IGJlNTRiNDA0ODc5ZTY1YWU5NTE2ZjliYzgwNjgwNzdlMzMzMDc2NGEgcHkzaworNzU3NDUgOTFhMGMzYzYwMjA5NGU1MWFhZmI5MzkyMDE0MjM3NzljYWViY2I1ZSBsZWdhY3ktdHJ1bmsKKzc1NzQ2IDU1ZDhhOTExN2RlNzgwZmY5YjlhZWMyYjlmOGViYmU3NzNhMWNmZjAgcHkzaworNzU3NDcgMTlhODMyYjg0NjRhMmVmOTAxM2Y4OTA3Y2MzNDE2YmRiYmEwYzQwMyByZWxlYXNlMjYtbWFpbnQKKzc1NzQ4IDQxNjlkM2NlY2I5ZGNkMjcyOTY5YzQ3NTAyNTI5MmJhNDYwOTEwMDggcmVsZWFzZTI2LW1haW50Cis3NTc0OSAyYWJjM2I0YmNlN2NmNTZhNWVhNGViOWZmOGQ0MjMyN2NhNjkzMTgzIHJlbGVhc2UyNi1tYWludAorNzU3NTAgMTdhY2RkNjU5ZWU5ZTUwZjBkYzlhMjhmZjk0YTE5YTBkNzgwY2UyOSByZWxlYXNlMjYtbWFpbnQKKzc1NzUxIGEwZWY0ZWY1ZmM4ODc1YWJmNzUzNDQyNjdjMjYzNjdjMzgyNWNiMzkgcmVsZWFzZTI2LW1haW50Cis3NTc1MiBmOWNmZWEyMDE1YjIwYTYxNDk3ZmVmMGY1MGNiOTRiOTIxZTJjNzY4IHJlbGVhc2UzMS1tYWludAorNzU3NTMgODE3ODFkMWUyZmI5Y2QyODE0ZTlmODgxZTFhZWQ2YjA4NDVhMDVhMiByZWxlYXNlMjYtbWFpbnQKKzc1NzU0IGMxYzBhMGM3ZjdiYzMwMjRmNTg5NWZjODYzNmQ4Mzg2ZDMyMzdkNjUgcmVsZWFzZTI2LW1haW50Cis3NTc1NSA1MjQ1MjY3NDVmMmU5OTQ3ZTUwYzVlNDMyZDJkNGVjY2NkNjRiZDhiIHJlbGVhc2UyNi1tYWludAorNzU3NTYgZmFjNGUzZmQ3NDdhY2YyYzkxNzA4YmFjOWEyZDBiNDdhZjczMDFiYSByZWxlYXNlMjYtbWFpbnQKKzc1NzU3IDI1MGJjODI0MmU3ZWFiZmU0NWZkZDgwYjYzMjc2N2Q4MjM5MWQ3MzAgcmVsZWFzZTI2LW1haW50Cis3NTc1OCAzZDU0MDQ2OTU4NWJlODNiOGMwMWIwNDZhNDc4ZTFhMzc1MGI4OTk2IHJlbGVhc2UyNi1tYWludAorNzU3NTkgODMwOWFkNmFlNGMwZTc4OGEyNDNjYzQ0MjkxNDRiZTY5NTNmZWE3NSByZWxlYXNlMjYtbWFpbnQKKzc1NzYwIGM3ZGNjMjIzZjkyNWQzOTQ2MWIxZTg3OWNkNzY0NzM4NmE0OWMwOTcgcmVsZWFzZTI2LW1haW50Cis3NTc2MSAzNTUzOTU0Mzg3ZmE1YjI2NjVkYzFmODdhZDQ2YjkzMmM4MGNhOTUwIHJlbGVhc2UyNi1tYWludAorNzU3NjIgMjZlYzhkYmQ2ZjY5N2VlZjNkZDg3ZjE4NzM4NTQzODZhOTIyZGMzOCByZWxlYXNlMjYtbWFpbnQKKzc1NzYzIGI3MThmMzE4OGM3NmZkYzM5YjIzOWYyMjRjNGRhYTU5YTQwNDU4MzkgcmVsZWFzZTI2LW1haW50Cis3NTc2NCA0N2UyYzE0YjE1MDMzNTAzZDEzNzg5ODIwOGRkODI1YTNiNmRjYWVhIHJlbGVhc2UyNi1tYWludAorNzU3NjUgY2NiZjdlYmVmNDc1MTI3MmZjMWJkY2Y1NDBiN2YzNzU2MzM3YzQ0ZiByZWxlYXNlMjYtbWFpbnQKKzc1NzY2IGM3NjM3YjY2YjM0YmJlMzdhMmZkZTc2ZTQ2Yzc5NTRkOTI3MzJiOTYgcmVsZWFzZTI2LW1haW50Cis3NTc2NyAwZGQ1ZDM2NzIxMzRkOGU1YTJiMTE2MTdlNWVmYmI0YTU3YjYyMTI4IHJlbGVhc2UyNi1tYWludAorNzU3NjggZjAwY2NmOGUxMzVlMTBhM2EyNWNiZDhiNzY2NTc1MWZkN2M3NmZhZiByZWxlYXNlMjYtbWFpbnQKKzc1NzY5IGUzZTUzYjg5YzE3ODQyOTUzMzExZTlmMjdhNjRiZjRhMjQzNmE1MWMgcmVsZWFzZTI2LW1haW50Cis3NTc3MCA2ZDQyZjFlZWY0NWQ5ZGJlNzY1MTU2MzEwYjc5MjY0MWY4ZDFhODAyIHJlbGVhc2UyNi1tYWludAorNzU3NzEgYmI4MTg4NzM2YTI5YjRhNjQxNDBmMTE1NzQzZmE3Mjc1Y2QzZjViMSByZWxlYXNlMjYtbWFpbnQKKzc1NzcyIDc4NmFiYWJhNDYyZDFlNzRkNjgzYjVmMzZmODEyNmRiNjNmNGI2MGIgcmVsZWFzZTI2LW1haW50Cis3NTc3MyBjODYzMGY3MzA5MDcxOGViMjZkMWU2N2E4YTIwN2ExMzc0ZGFhMjQ2IHJlbGVhc2UyNi1tYWludAorNzU3NzQgMTMxNDcyN2MwOWFlN2E2OTM1NGM5NzVhOTRlOTY3MGYzMDhjN2Y3YyByZWxlYXNlMjYtbWFpbnQKKzc1Nzc1IDA5NmI0MmNjYjI1OGY1YzYzZDBkZmZmMDk2NTU5YzVkOTJhZWUwMDcgcmVsZWFzZTI2LW1haW50Cis3NTc3NiA4YWRmOGVmN2E0ZGJhYWM4YTBjODBiZTNjMDViNGUxYzUzNGI2OTJkIHJlbGVhc2UyNi1tYWludAorNzU3NzcgMDdlM2MwYjQxZDUwMDNjYzVhODU2YTc5Mjc0M2IwOWZjMDY2OGJkZCByZWxlYXNlMjYtbWFpbnQKKzc1Nzc4IDY4ZjcyODhkMTU1Y2UzYzE3ZmUyM2ZmN2ZhMDFiY2Y4MDk2NWFkZmEgcmVsZWFzZTI2LW1haW50Cis3NTc3OSAwZDUxYTVkNTZiNWEyMjE1OWRjNmQwYmZiNWY5ZDgzMjlmZjdmOTM0IHJlbGVhc2UyNi1tYWludAorNzU3ODAgYTFiMDkzNmIwMjdjZjNmMDZhOWU0ZTU5MDY4OWM0ZGE2Y2M2OTJjYSByZWxlYXNlMjYtbWFpbnQKKzc1NzgxIDVkOTNjNzU0MDU3Y2YyNjY3NWMwZjRjNjQzMTIyNDNmODAwODE2YjggcmVsZWFzZTI2LW1haW50Cis3NTc4MiAxMjdkNjIzMzk2YWI5M2FjOTdhMDViMWRlNDEwOTBjOTNjYzYwZDJjIHJlbGVhc2UyNi1tYWludAorNzU3ODMgZmFiNjYwYzJlZjg4ODdiY2M4YjM5ZmIwODBkZWY0OGFmYzVkMjIxMiByZWxlYXNlMjYtbWFpbnQKKzc1Nzg0IDY2ZGU3MTExMjMwYWI0NWQ0OTM2ZmIzMjg1NGI5OWQ1NGNmOTM2ODEgcmVsZWFzZTI2LW1haW50Cis3NTc4NSA2YjA1ZDQ4Y2NhMjg3MjA2MzIwMzM2OTEyYmY2NDQ2ODU1MTA2Nzk2IHJlbGVhc2UyNi1tYWludAorNzU3ODYgM2UxNWEwN2EzMmZhZjlkNDA0Y2YyMmU2YzQ2ODBlMTYzNTg4ZGFiMCByZWxlYXNlMjYtbWFpbnQKKzc1Nzg3IDliMjRkMDEwMTMzZjBhNjEyZjI5YzNjMzYyMTRkZmZkYTUyZjE2YmEgcmVsZWFzZTI2LW1haW50Cis3NTc4OCA4NWFhNzA2ZjcxMjZkMjExNDA2OTk5MTBmODc3ZjA5MzkxNzEyNTExIHJlbGVhc2UyNi1tYWludAorNzU3ODkgNDg1MjEyMzNiZDZlOGQ0ZDllMjQ3MDY2ZTFmZmI0ZDI4YzVmOTg0ZCByZWxlYXNlMjYtbWFpbnQKKzc1NzkwIGM0YzQyOWIwOGE1NzU5OTIyYjEyYzU4Nzk4NGVlZTRjYmMzMGRkMGYgcmVsZWFzZTI2LW1haW50Cis3NTc5MSBlZjMxOTQ3NDkzNzcwMDAzOGY0YTE0Zjg2ODExNDY0MGRlMTcwYjhkIHJlbGVhc2UyNi1tYWludAorNzU3OTIgYjdiODk3MGNkNWE1NzY0MDRkNGU4MjAzMDQwNjA1NTc4YTM5OGY1MCByZWxlYXNlMjYtbWFpbnQKKzc1NzkzIDI4ODUyNTBiYTVmNDlmNTVkZmFlN2M5MDk4OTc0YTk4MGYxYWNiYmEgcmVsZWFzZTI2LW1haW50Cis3NTc5NCA0MDJkYWRjN2I0YTg2MjQyM2VlZTExYjQ1OWIyNjFlNzM5MzUxNGI3IHJlbGVhc2UyNi1tYWludAorNzU3OTUgMWQ2OGIxZGM0MTA5MzZmYjg3MjFlODhlODQ2NzEzNmQ3MjUzMzIwMCBsZWdhY3ktdHJ1bmsKKzc1Nzk2IDhkOWVmNWE3OWJjN2E1OTMxOGQ1MmFmYTQ0YjU3YTllNTM4ZDZkOTUgcmVsZWFzZTI2LW1haW50Cis3NTc5NyAzMDM1OWMzM2I2ZjY3N2YwYzRjNTQ4NjU3MzI3Mzk4Nzc0MzQzYzVlIHB5M2sKKzc1Nzk4IDk3ZDdjZDM2NWRkNTM0NGY1MWE1OTBkOWYyNTIyOWZiMWQ2OTJhNWQgcmVsZWFzZTI2LW1haW50Cis3NTc5OSA1OThiOWJlZTc0ZWM4ODJjMmZiMjEwMjVkZWI3MjNjZTAxOGViNzAxIHJlbGVhc2UyNi1tYWludAorNzU4MDAgNzI4NDUwN2JhZGIyYTA5NzVmMThkNzhhMWY4NGY4ZDgyY2VkYzUzOSByZWxlYXNlMjYtbWFpbnQKKzc1ODAxIDgxYjYzYWI2ZDQ1ZmI0YjNmMDdkNjMwNThkNjZiMDZkM2MwN2ZiYzggcmVsZWFzZTI2LW1haW50Cis3NTgwMiA1YjI5NTMzMDgzMGEwOTY4NjRmOTdkYWNmMWQ1M2RiNDg0ODQ1MjNkIHJlbGVhc2UyNi1tYWludAorNzU4MDMgZTk0MDhjYjNlMjc0ZTE1MDI1MzBlYzM1Yjc3MDQ1NmMxYWY1ZmFhZCByZWxlYXNlMjYtbWFpbnQKKzc1ODA0IGJkNzc2ZTAxOTkzYWNiOTFhMDA4OWRmYTg0ZGQwNzAxYWE2Y2Q5NDQgcmVsZWFzZTI2LW1haW50Cis3NTgwNSA5ZWQ4OTkxYTkxNDFjNjQwOTBkYzI1Yzk2MTliNzgwNTAzMzliNzYyIHJlbGVhc2UyNi1tYWludAorNzU4MDYgNjcwY2FhOTc3NWY2MGFiM2RlNTY2MjJmZmZjZTkwOWY1ZDIyOTlkMiByZWxlYXNlMjYtbWFpbnQKKzc1ODA3IDc2NGFlMmVjNGE3MDYzMWIyMzQwNjBhZWI1NDNjMGNjMWU1Yjg2ZTkgcmVsZWFzZTMxLW1haW50Cis3NTgwOCBhMDVlMWE1NzM2M2Q3NWExMTdlMmUwNjU4YzUwYjdiYTVhMDcxNjZmIHJlbGVhc2UzMS1tYWludAorNzU4MDkgYmU1MzQ4YjA1NGI0ZjVjMGExZDgyNmMwN2VlYzU5N2U3NTg2ZDNhOCByZWxlYXNlMjYtbWFpbnQKKzc1ODEwIDAwZTQ1ZDIxZjI1YmY4NWE0N2JiYzRiMjIxMGZjZDdkYjYxY2M2NzkgcmVsZWFzZTI2LW1haW50Cis3NTgxMSAxYzMyYjk1ZmU1NzhlNzBiZjU0NTJiMDcxZGNiOWJhYTZhMjRlMjdjIHJlbGVhc2UyNi1tYWludAorNzU4MTIgYjk3ZThjZWJlOGVkYTVkMWJjMjRjMjhlZGFjMWVjNGIyNDAxZTQxNSByZWxlYXNlMzEtbWFpbnQKKzc1ODEzIGU1MGJhMmE4MTk3MzY3MjkxMjdmZjk3YzYzODM2ZTZhNDUwZDEwZjggcmVsZWFzZTI2LW1haW50Cis3NTgxNCBlNGJjZmUyZTZkNTc2YzBlN2IyMTBlZjZkM2U5M2U5MzJiMjJjZjM2IHJlbGVhc2UzMS1tYWludAorNzU4MTUgMDk3YzM2MGI0YmE1OWExYzljMTQwODdhMWI2OGViYzhlYThlNjE5NiByZWxlYXNlMjYtbWFpbnQKKzc1ODE2IDYwNGRiOWE4M2QxODc3ZTNjNmFhYTAxOTY0ZmE1YmE5OTJjNzUzMzggcmVsZWFzZTMxLW1haW50Cis3NTgxNyBlZjA4MjUzZjI5MGJhYmYxMWIxNGM4MGE4MTgzZWIxYTk4ZDMzN2I1IHJlbGVhc2UzMS1tYWludAorNzU4MTggM2E5OTIyOTJjY2Q4NWYxNmY0YzY3OTA2Nzk3OGE2ZmRjNmU0NzMwOSBsZWdhY3ktdHJ1bmsKKzc1ODE5IDI1YmMzZDY5ZThhZmUzMDE1NmRjNWRkYTM0NjkzYmJlM2NiZjdhZjEgcmVsZWFzZTI2LW1haW50Cis3NTgyMCAxOWY3NmZhYmE5NjU0ZGRmZGQzYzU2Mjg1YTliN2U3YWMyMGNlMzVjIHB5M2sKKzc1ODIxIDg2NTMxZGU3NTg5NGYxZmEyMjRlNzM0YmEwZTk1NGRlNmUyOWM3NDEgcmVsZWFzZTMxLW1haW50Cis3NTgyMiA1OTUwNWU3ZTcwNzMyYTFlYjI5Y2QxNzliYmI3MmIzNTIwMjU1Yjg0IHJlbGVhc2UyNi1tYWludAorNzU4MjMgZTQ3MzFmZDI3ZDkxNjgwNTE0ODIzMmNlNTY4OWNkOTFkNGI5NjJlOSByZWxlYXNlMjYtbWFpbnQKKzc1ODI0IGU5OWFkZmM5MmRjMmVmNTczMTE1MjNlNDRjODdiNmIxMjUxOWJjZDkgbGVnYWN5LXRydW5rCis3NTgyNSAzNTk2MmI1NDE1OTU3ZWRkMzA2Zjg2ZmM5MDlmYzhkNzVjNjQyYTM1IHJlbGVhc2UzMS1tYWludAorNzU4MjYgNDJmZDc4NTUzNDdlODU5MWE0MWRhM2Y0OTFlMGIwMGEwMzRkZTM4NiBsZWdhY3ktdHJ1bmsKKzc1ODI3IDYzMmRkYjI3NTMyMWRlMjVhZjdiZmFjMGI3MzhhOWRlMDk5ZDljYjIgcmVsZWFzZTMxLW1haW50Cis3NTgyOCBmOGZhMzY4MGM1ZDM1NTgyMjUyZGVjMTkyNjk2OGM4OGJmMGY2YjBiIHJlbGVhc2UyNi1tYWludAorNzU4MjkgNjI5ZDQ1YmE0NmQ3OWNmMzBmNDA1NjFiNDhmY2E0YTQ3YmM1NTMwMSByZWxlYXNlMjYtbWFpbnQKKzc1ODMwIGUxYmJjNjIzMmYyOWQwYTM4OTEyMzk1MTU1MzE2MWQzZmU3ODVmZWQgcmVsZWFzZTMxLW1haW50Cis3NTgzMSBmOGVkODQ0MGNkYjQ1ZmExYjNmNGQzZmJlNmI1MDY5NzAzYWI2YTMyIHJlbGVhc2UzMS1tYWludAorNzU4MzIgMTA3NTE3OTQ1MWI1NjNiNzU5MTExZmQ4ZDI0MzM2Y2I1YzM3YWU1ZSByZWxlYXNlMjYtbWFpbnQKKzc1ODMzIGFlOTRmNjg1NTMxMDBjMDg2Yzc3MmI0NGIwMzJhNGFmMDg0Nzc3OWQgcmVsZWFzZTMxLW1haW50Cis3NTgzNCBiNDBmYTgyNmUxY2YwZDhjM2E3ZTdlN2JiYzVmMzQ3MGJkMWRlODU4IHB5M2sKKzc1ODM1IDU4MGFjMTUxMTY1MjNjMWRkYWIxMjVkOTJlOWI3ZmY0MGQ3MDM0MTMgcmVsZWFzZTMxLW1haW50Cis3NTgzNiA4YTc3NGFmZTk5MDA5MGI5OWE5MTUxNDViYjNmNDc5Y2Y4NjQwNjQ0IHB5M2sKKzc1ODM3IGM3ZmYyZmNkMmI2YmYwZTdlOTZmNjViNzc0NjEyMDUxMGVmY2U4OTMgcmVsZWFzZTI2LW1haW50Cis3NTgzOCAyNjlmMWQ5Yzg2Y2QyMjZhMjg4ZmQyNzkxYTRiZTY1MWEwZThiZWI2IGxlZ2FjeS10cnVuaworNzU4MzkgOGZiOGZkM2I2N2NmNjQzODg3MTZkNzZkM2YyYjhhNzBlMzYxYmQ0MyBweTNrCis3NTg0MCA5MzZhYWExMjQ5MmM3MDZiMzFmMGNhMTE0NzAzZDVjNmRjYjk1ZmM5IHJlbGVhc2UyNi1tYWludAorNzU4NDIgYjMxZmNiYWIwNTIwYzQ4M2M1MGE1NmQxNWU1NWViNjM5ZjVjYjcyYiBsZWdhY3ktdHJ1bmsKKzc1ODQzIDk1NWQ4ZmExMmFkNTRiNWFjYjg2MDBhZjMwMjIzOGE0ODllNzhhOWUgcHkzaworNzU4NDQgNWM1NDE0YThjN2MyNDcxNjliYmU1Njc0YzAyNWI2NzY4YjZkOWUyMiBsZWdhY3ktdHJ1bmsKKzc1ODQ1IGUxZDQxMjQ4OTEwN2I1MzBhNjc1N2E2NGI1NzJiNTU4YjAzOTE2YzkgcHkzaworNzU4NDYgMTQwZDg4ZDFiMTc5OGZiMmY3Yzg1YzI0ZmEzODA4NjhjYTMxNjYxYiBsZWdhY3ktdHJ1bmsKKzc1ODQ3IGUyNTliMzRhMGI4ODE0NDI3OTM3Nzc0MDYwMWU2YWVjOTg3YzQ0MTMgcHkzaworNzU4NDggMTFmYzE2MGQ1M2M0ZGNhNTFmNWI3YTU1MmNjOTFlZGYxZTkyNTg2NSByZWxlYXNlMjYtbWFpbnQKKzc1ODQ5IDQzYmZmNjkwM2FhNWEzNTRiYzA3ODViODJjNzUyZTY1MTI3NWNjNmEgbGVnYWN5LXRydW5rCis3NTg1MCBkN2NjMGViM2YyMzRmODQwYzZmMDlmOTA0Y2E4MDlkZGU0ODI2NGY2IHB5M2sKKzc1ODUxIDVmNjFiZDNhYTQyN2IyMmRjODkwNzM2ZTUzNzAyOTIyNjAwOWFlNGYgbGVnYWN5LXRydW5rCis3NTg1MiBlNGJmYmU5Yjc0Yzg5MjkyZTQ4OWVkMzQyZWUwNTIxZWUyYzUxMjU3IHB5M2sKKzc1ODUzIGQ5ZDY5MDYwZjVlNGJkYzNjMTFkZWZjMGE2NmRkZTZjYTBkZDgzZWQgcmVsZWFzZTMxLW1haW50Cis3NTg1NCAxYmRhNDYwMmY5MzlhMmYzZDEyMTdjOTY3Yzc5ZDZiMTA0NDZlMmU3IHJlbGVhc2UyNi1tYWludAorNzU4NTUgNWM4ODc3OTQ3M2I5Mjk2Mzg0ZDQ5ZDFlYzMyMDljYWZkMGVhMzUxOCBsZWdhY3ktdHJ1bmsKKzc1ODU2IGFmNzhmZGE1N2FmODY0ZjllOGU1ZDE2ZDAyNTk4OTMwMzc5ZjM3MmUgcHkzaworNzU4NTcgMDIxZDNhMzhiZDM2YTRhMDc4NDJhN2FhODA0YmQwN2MyODc3MmIxNiByZWxlYXNlMzEtbWFpbnQKKzc1ODU4IDAyOWQ2OTY1OWI1Zjk5NTQ4ZmY0ZThjNzJlMDliYTI1OGJjOWI3N2EgcmVsZWFzZTMxLW1haW50Cis3NTg1OSBjZWY1Y2IyNzBmZGY3Yzk2NmM2MmE1MTI4NTJmNzM0ZjA3OTc2YTRkIHJlbGVhc2UzMS1tYWludAorNzU4NjAgMGRmNDdiMWIzMGI4YTA3OTgxOTk1Y2JiM2Q2Y2I0ZDdjN2VjYjZmYyBsZWdhY3ktdHJ1bmsKKzc1ODYxIDgxNDFlYzgxYWQyZDM4ODhmMjM5OWJiYzZlOGMwN2JjY2M4YjVhNzAgcHkzaworNzU4NjIgNzBlYjZhMTNhYmNkNjg1NjYwNWNmYmNiMjY0YTZmYWNiMzQwNWU2YyByZWxlYXNlMzEtbWFpbnQKKzc1ODYzIGIwODVmZDA2MTFkZTBlODFmMWU3ZGUxMWNjNzQ0ZjUzNGI0ZGVhYmEgcmVsZWFzZTMxLW1haW50Cis3NTg2NCAyZjFjNTJkOWZlZWNhZGEyNGI3MjVmMzJhYjQzZjE4NGI1ODM2YjM3IHJlbGVhc2UzMS1tYWludAorNzU4NjYgOTg5OWVjYTljODU3ZDkxZDUyZWI3MDNkNDdkMmI1YzQ4ODZlNWIyZCBsZWdhY3ktdHJ1bmsKKzc1ODY3IDE4NTIwNGQ1NDFmZTU2ZTMxNjhlNTFjMTJhYWMwODZhYTA2OTU5ODMgbGVnYWN5LXRydW5rCis3NTg2OCA0MTFiNmFjYmNmMTJlNzYyNzI4OTUzYTA0ZDVhYTM1MTc5MDFjYWM2IGxlZ2FjeS10cnVuaworNzU4NjkgYjRiYWVjMWU2YTBjMzM4YWZlMWRhNGM5MDMzNGZjMjM4NzQ2NjcwZSBweTNrCis3NTg3MCBmNWM3MmFjYTZiNjBhM2IwNTZkMjExYTIwY2UxODY5ZjI5YjhjNTlmIHB5M2sKKzc1ODcxIDNhZTRkMzY2NzkyMGZjMzRhYWYzOTU2YTExMmVkZTM5NjllNjc5NGUgbGVnYWN5LXRydW5rCis3NTg3MiBmYjFiZmE5Y2FiZjMzYmM2ZTQ4NGNkNjUzYzFhMDdlZGY0MzkxYTgwIHJlbGVhc2UyNi1tYWludAorNzU4NzMgNDVhMjdmOTYxYWExZGY0ZTk3ZTc2YzNiYzYwMDQxZjQwZDI0Nzg5NSBweTNrCis3NTg3NCAyMDRmMzNkNDI3NjJiMjQxMzU4YjIxNmU2OWYzZGE1NGRmZGJhODMzIGxlZ2FjeS10cnVuaworNzU4NzUgMzk1OWZhMTA5NzE4ZWMzN2YwZjEwMzQzZTNhODFmNzNmZDhmMzFlNCByZWxlYXNlMzEtbWFpbnQKKzc1ODc2IGM5MjY4ZmVhODEwNDkxMjdlYzUzNjE0M2Q5ZjE2NzYwYWY2YjNiMzggcHkzaworNzU4NzcgYmVjMjY2ZjZkNTA4MWUyNTk1Y2NhZWY5YTBhNWNlYWI5YjYzNmJiNSBweTNrCis3NTg3OCBiNmNjMDEzNGFmMzE0MGUxMTZkYjE1MDQzNmMzYjNjMjMwM2Y1MzU3IHJlbGVhc2UzMS1tYWludAorNzU4NzkgMjFhM2Y4M2Q5OWFiZjdkN2E5ZWE2MWUxMjdlMGJkZGNlZGQwMmE1YSBsZWdhY3ktdHJ1bmsKKzc1ODgwIDEyOGRhZjY2OTljY2EyOGQzMzM3ZWZiNGQ4NWM1NmUzNjQ5NjQ4NWUgcmVsZWFzZTI2LW1haW50Cis3NTg4MSAzOTI3ZTBlMTM4MjQxMjZlNzMxMjQzZWRmNzdkY2MzZWMzYWZmN2JhIHB5M2sKKzc1ODgyIDE1OGIyMTFlNmZhOGMxYzg4YjZmMTI2NDI2NDgxYzgyZjFmZTk0MDcgcmVsZWFzZTMxLW1haW50Cis3NTg4MyBmMTAxMDQwNTEzMzliOGFiNjc3MTVjNGY1MWJmZjg2NDEwM2ZhOWE4IGxlZ2FjeS10cnVuaworNzU4ODQgNDRmNjQ0NzJlOTIyMWI3ZWMzOTZhMzk5YmU2ZjUxNThjZTBhMTIwNCByZWxlYXNlMjYtbWFpbnQKKzc1ODg1IDEyNDM4OWY0ZWJhZGMzOWM1OGM0MDFlMjhlNTYxOGM0YzBlMjY4NGQgcHkzaworNzU4ODYgNjkwYzU2NWMxNWE5ZTFmZjIyY2YxZjg3MmEyNzllZDlhMmU2N2U0MCByZWxlYXNlMzEtbWFpbnQKKzc1ODg3IDY5NDljZTc4YzA2NTU4MWU4M2NjMGE3MjU2OWE5ZDYyZWE3ZTVkNGIgbGVnYWN5LXRydW5rCis3NTg4OCA3ZTY2ZmZkYmNiZWZmYmY2YTQyZmU4OTlhNWRkZmJmNjk1ODlhNmIwIHJlbGVhc2UyNi1tYWludAorNzU4ODkgZDBkN2UxNWI0OTUzNWEwMDkwY2RmZGU2NjZhMzA2MGFlZWZkMmM2ZCBweTNrCis3NTg5MCA1ZTRkMWI0ZjYyZmExZDA4Nzg1ZmJiOGQxYjU4MDg0ZGU3OWZmOTc5IHB5M2sKKzc1ODkxIGFkNjExMjljNDQyMjI1NjkyZGMyNTBiNGRiYTY2ZDlkZjYzMDNhZDEgcmVsZWFzZTMxLW1haW50Cis3NTg5MiBlMWRjYTk3MmZhMzVkMzFhNTQ2Y2I3MDhmNjY3YThkYWY3YTZjMjNjIHJlbGVhc2UzMS1tYWludAorNzU4OTMgZmM1YTc3MTg0MzNhODU0NGYxZWU1MzMwNjkzNTA4NDVhZDc5YzUyZCBsZWdhY3ktdHJ1bmsKKzc1ODk0IDY0YWQzNjUwNzk0NDY2ZTg0Y2NjNTIyYjNkYzkwMTY4MmJkZTNlZWMgcmVsZWFzZTI2LW1haW50Cis3NTg5NSAxNzc3OWE5NGU4MjUwODZiNjYzMWNmZWI3ZjMwM2RmYTk3Y2ZmNmEzIHB5M2sKKzc1ODk2IDBmMjlhYTJkNDg0NGY3MTc0NzlmYjk4MmIwNDFlOWI1YjUyYzIzNDYgcmVsZWFzZTMxLW1haW50Cis3NTg5NyA3MTU3NGZlNDk1NzY3YjExODc0MTdmNzA2YzY2YzdmMjcxMTQ5ZDIyIHJlbGVhc2UyNi1tYWludAorNzU4OTggMDNkNzZiZGY5MzYyYWE1NDJmMzlkMDA1ODZiZGExM2Q3MDc3ODE2MyByZWxlYXNlMjYtbWFpbnQKKzc1ODk5IDllMjRmZDZhNTVmMDhlYTU3MjcxYjNhMDViNjQ2ZWI1YjgzNDQ0Y2UgcmVsZWFzZTI2LW1haW50Cis3NTkwMCAwNDRhNjhiYzBkMmVmYjk2MjNlMjZiMzYwYjdjZmVkYzEyZTllMThjIHJlbGVhc2UyNi1tYWludAorNzU5MDEgYzE4MjI0OTg4YmIxYzg2Zjg0NDVmN2MwN2IyODZjMmZkZGYxNTZmNSBsZWdhY3ktdHJ1bmsKKzc1OTAyIGNkOWY3MmZiYTUzYjAzMTUwMzU3NDI3OTA2ODFmYWJmYTYzMmZlOGQgcmVsZWFzZTI2LW1haW50Cis3NTkwMyBlZjZhYjVkMGEwMDZhOWJjMWRjZDAzMjRmYTc5OWU3MzhjOGEwZGZiIHB5M2sKKzc1OTA0IDUyYjI3YzA4MTY4NjhhODA1NWY2MjUyZGYzNWQxNjM1NjVkNzU5ZDMgcmVsZWFzZTMxLW1haW50Cis3NTkwNSBhYWZhNjZjNTc0NDRlM2IyNWNhZmVkMDFiYjBmN2FhOWM5YjgzYjdlIGxlZ2FjeS10cnVuaworNzU5MDYgMWU5ZWVjNzM0NDdmMjhhMGQwZWI2ZTFhMzE0MDY0M2ZlNGIxMmE4YSByZWxlYXNlMjYtbWFpbnQKKzc1OTA3IDkwYzcxNDZkZGY0MjE5Zjk0MzM0M2QxMTIwMTIwYzgxZjFhZTIwZTcgcHkzaworNzU5MDggNzZkMDQyMTQzOGFjMzZmNGE1YzM5YWZkMmU2OGQzY2E5MjE1YWY3ZCByZWxlYXNlMzEtbWFpbnQKKzc1OTA5IGU3Y2UyNTFiM2JmYjZkNGQxNjViMjYwZWExNmRjMGZlMzIwMWE0ZDUgbGVnYWN5LXRydW5rCis3NTkxMCBlNzUwYjkwYmQ5ODJiMzM1MmFjODg3Yzc0ODcyMGQ5NmFjNzMxYWJkIHJlbGVhc2UyNi1tYWludAorNzU5MTEgNDRkZTNhNDAyNDAxNDU5OGU0ZjRhMGJkNWJiOTI2NGExNzJkYTQyMyBweTNrCis3NTkxMiBhMWRlYzU3YmVhNWRjMjYwNTE3ZjYzYjdlOWI1ZDc3ZjJjNjBhN2I5IHJlbGVhc2UzMS1tYWludAorNzU5MTMgMmE5NjFkN2YyMDI4YmIzNTE4M2ZkNjZiNDUyNGEyZDQ0NWI1YjdkMSBsZWdhY3ktdHJ1bmsKKzc1OTE0IDg0YjhhMmI4ZTlhZTUxZTAwOTYyZWNmY2QzMjk1YzM1YTAwNTA1YWIgcHkzaworNzU5MTUgYjZiZTMwMDJkM2NhMmVjN2Q0ZjIxNjQ3NmZiN2Y3NTJkZjVhMTJhYyByZWxlYXNlMjYtbWFpbnQKKzc1OTIwIDIxNDdjMmViY2VkODU5M2Q2NmJlOGRkY2Q1N2NiY2RjOWRhOTk2YmUgbGVnYWN5LXRydW5rCis3NTkyMSAyMGUyMWMxNTVjMDU2MmY2NGZhNzNhZDMyMzczNzBiOTdmMGMwZDIxIHJlbGVhc2UyNi1tYWludAorNzU5MjIgMDY2Njg1ZjY5ODNhZDQwZWRiMmFhYTUxZTMzNmQzNDE2NGRiYjk3MCBweTNrCis3NTkyMyBhNzk1NTI5YjA5Yzk2NmEyN2VmYTQxZjI3NjE4MmE0OWQzNDFlMzNmIHJlbGVhc2UzMS1tYWludAorNzU5MjcgOWU4MmYxN2IyYzhkYTIzMDNmOWRjYzE0ZDM1ZGYzYjZjNWU3YWRiZSByZWxlYXNlMzEtbWFpbnQKKzc1OTI4IGRiNGRmZGM3NDAyOWFkOTg0NjUyYzEzNTIwNjFmMWQwMjBlN2RlZDYgcHkzaworNzU5MjkgODQwMmU0NzdlYjQ4N2RkNGQwMjkxMzljOTkyMmM2ZjFlMGUyMWI0MCBsZWdhY3ktdHJ1bmsKKzc1OTI5IGUzNThhZjI1NjliOThjMTNhNDc4ODY2MGRjYmU3YWY1N2IyYTUxODYgcmVsZWFzZTI2LW1haW50Cis3NTkyOSA0NDg5MDlhOTQwYzA0ZGEwM2IzOWY1OGQzZWFmNzQ5MjMzNmZjYjgzIHB5M2sKKzc1OTMwIGYzMmRjODRhODc2Y2M1OTkxYjY3ZjliOGU3OGRmNmNhOTQwMTkxMWYgcmVsZWFzZTMxLW1haW50Cis3NTkzMSA4NDQxODBiN2U2ZmYwZTBmYTg3MjUyYjQzZjI0MzM3Zjg5NDBmZGMyIGxlZ2FjeS10cnVuaworNzU5MzIgYzcxNWY4MjU1NWE0YzkzNDk2ZWE4MmI5NGMxYjdmYzgxZGIxN2U4OCBweTNrCis3NTkzMyBlODA5OTgyNjI5YzRkODNkZjcyMDdiNjZjYTY2OTkwYzc4YzI3NWM1IHJlbGVhc2UyNi1tYWludAorNzU5MzQgMDMyZDk3NDkwNDdkN2UxM2RlNjM1MmFjNjA5NDRlNmNiNWRlZWM4OSByZWxlYXNlMjYtbWFpbnQKKzc1OTM1IGI1NzFjNjY4NTIyOWYzYzA4MTgzNDlhZWZiNjQ4Y2EwODA2NDJkZWQgbGVnYWN5LXRydW5rCis3NTkzNiAzY2ZlY2JjN2FlOTVhN2Y2Mjk4MDkyY2QyODcwZDI3ZmYyNDk5MWNjIHJlbGVhc2UyNi1tYWludAorNzU5MzcgOGNmZjk0OTMyM2M5ZTY2YmMxOGRjZTkyNGU0OWM0YmRhNzcxZjk5MyBweTNrCis3NTkzOCBiMDA5YTM4NzY5OWIzMmQxYzQ0YWNhMmNiOTJkZWZhYTFkZTRjODRkIHJlbGVhc2UzMS1tYWludAorNzU5MzkgNTVlNTA4ZTI1MzVjOWEzMzQ4MjhmMjA0NTQ2YWZlOTNmMTc1MzBiMiBsZWdhY3ktdHJ1bmsKKzc1OTQwIGZmYzdkOWVhMjRkOTAyMmZmNmU3NmRiYWNjNzBjMjI2MzdkNzJlZTQgcmVsZWFzZTI2LW1haW50Cis3NTk0MSBhYWEyYjA3YzJjNDI1OGI0MTQ3MGQ1M2ZjODY4NTM0NGVjYjk2ZDFlIHB5M2sKKzc1OTQyIDA1ZmQ0OGRjMmFkYTliZjBiZjE5NTE2MzkzZTEyNDFmOTYwYWIwMDIgcmVsZWFzZTMxLW1haW50Cis3NTk0MyAxNWYxODcyNDA3YmUyNjQ2YTEwMWZkYjRkNGMxNGI5NzQ2ZjYyYzQyIGxlZ2FjeS10cnVuaworNzU5NDQgNjNlYjI4ODM5MjZiMmQ1YjgwMjRiNTIwNDYxMmRhM2YwZGZjNTZlYSBsZWdhY3ktdHJ1bmsKKzc1OTQ1IGQ1YTM0ZWYyZmNhN2MzMjExNzRjYzBhMzRiOTRkNjkyOGM2MDFiMmYgbGVnYWN5LXRydW5rCis3NTk0NiA1M2UzODAwNWQ1MDdjNGJhN2ViNmNjZmYzOWZiZGZkMTE0OGJhMmUzIHJlbGVhc2UyNi1tYWludAorNzU5NDcgZWJkZGNlZDJjOWM0ZDQ4NDVkMDkwMDYxNjVlYmRlYjg1OTZkNjY5MyBweTNrCis3NTk0OCAwZWQ0YmY0MzBkNGU1ZWUwYTdiOGFiYjFiYzUxOGVmZjgxYjBiOWQ3IHJlbGVhc2UzMS1tYWludAorNzU5NTIgYzZkNjIzNDBhZWJmMGMzMTkwZjU5NjMyM2Q0ZDAyMzNlMmRlZmJiNSBsZWdhY3ktdHJ1bmsKKzc1OTUzIGU2NjVkMjE3MGU4NTJiMTlkNjA5YjIyZmVhOTQzMDJlNjNmZGE2MmEgbGVnYWN5LXRydW5rCis3NTk1NCA1ZjVlM2M3ZGE4Y2I0NWZlNzRhMWNjMTM3ZDRkMTc5ZjQ3NmI0MzdmIGxlZ2FjeS10cnVuaworNzU5NTUgN2UwMjM3MWFhNTA2MDJmMDk4MTU0Y2E1OTgzNWMwNjc5Yjk4NjU5NSBsZWdhY3ktdHJ1bmsKKzc1OTU2IDQxMWYyNTJhMjk0YTRmZTIxODY2MTZjN2IyNDdmN2MzM2M4MDAzYjQgbGVnYWN5LXRydW5rCis3NTk1NyA5ZGRiZDY5ODE1Y2E3YTA5NmM3NDFmODY1ZGM3NDQ0OWZkNzFjMjgxIGxlZ2FjeS10cnVuaworNzU5NTggMjlmZTVlN2JkNmVlMTkwMGE4NTMxMDFiZmMyYTJlMTBlNTFmMjMzZCBsZWdhY3ktdHJ1bmsKKzc1OTU5IDZjZjg0ZTVhNmRkN2U1NTU4OGY1M2Q3YzY3MjhhNGM1MTZlMzI0M2QgcHkzaworNzU5NjAgZTExZDI0NjdkMTI2Nzk3YjlmM2RlYTc4ZTI0MTgwZmI5MjAxMGE1NCBsZWdhY3ktdHJ1bmsKKzc1OTYxIDcxM2UyMWE1NDcxZWQ3NjM2NDJjODU2MGZiZGEzOThkNTBjYzQwZDYgcHkzaworNzU5NjIgYWNhZmE1MTQyYmY5MThmNDYwZjcxYTc3Yjg2OWFkMDJkZWExYmVjMCBsZWdhY3ktdHJ1bmsKKzc1OTYzIGMxNDY5MjUyMzRmMDNhYzA5YzRmMGViNTEzMzViZjZhMDdiNDAxNDggbGVnYWN5LXRydW5rCis3NTk2NCBhMTgzYzgyYjYyODk0N2NmZTM5ODdmZGM1OTQ1OWU2YzAzMDA0NjhlIHB5M2sKKzc1OTY1IGU4N2E2Njk4YTMwNWE2NDUwMTI3NjcwOWE2Y2Y5ZTQyNGQyYThhMDYgcHkzaworNzU5NjYgZmQyMThhYjBlMjJlZmU1M2I4MzE0ZGNiYTlhOGMzYTJiZjlkZDdjNyBweTNrCis3NTk2NyAzMzg2MWNhMWZiMmIxMTgxNjAyM2NkM2Q3M2E5OWEzZTUzN2Y1YTQzIGxlZ2FjeS10cnVuaworNzU5NjggMDU2NDcwNDY4ZmUyOWUxOGVmMWUyYTQ3M2Y0YTIyNDllMGJlOTVmMyBweTNrCis3NTk2OSBkNTZiMTAzNDkwYTU1YjAwM2JjYWQ2NjJmNDg3ZDc5NDAxNzhiZDk5IGxlZ2FjeS10cnVuaworNzU5NzAgYmY5M2U0ZGY3YmZiMWU2MzI0OTI1ODM2NGZhMjgwYWU3MWFiZWVkZSBweTNrCis3NTk3MSA4ZDM2ZGViMzU2ZjE5ZjRiOGM4MDNlZjkwM2E5ZTk3MWU5ZTQyZDFkIGxlZ2FjeS10cnVuaworNzU5NzQgN2M4Njk5M2IxM2M5ZmQ3NGQ0MjFhNzRjYjgzMzQ4M2ZmMjU2MTg4ZCBsZWdhY3ktdHJ1bmsKKzc1OTc1IGI0ZTkzMzliNDk5ZDU1MjVhYzVlZDU0MDk5ZmZmOWUyNDA3YWRkODcgcmVsZWFzZTI2LW1haW50Cis3NTk3NiBmY2Y4YTQ4Njc5MjA2M2RlNjViMDJhMTQ3YzM5YzUwNjVkZGViM2YzIHB5M2sKKzc1OTc3IDZjYjUzMjQ4ZTViZTRiMDZiMzViZmQxZDMzZGVhOWY1NDI5MjRkYWIgcHkzaworNzU5NzggNmE2ZjMyYjBmYWJkMGQ4ZWQzM2ZjYzE1MzdmNjVmNGEwYzQ2YzI1YyByZWxlYXNlMzEtbWFpbnQKKzc1OTc5IGJhYjNlM2NkNzZmMWQ1MjQ1MTE2ZTI3Y2MwNzkxZTc1ZjJkYzkyMWQgbGVnYWN5LXRydW5rCis3NTk4MCAxN2RjMGI1M2I0OGVkYjFhZTFjMDg5OGU1MWRkYjQxYmFhMWFhYTZkIHJlbGVhc2UyNi1tYWludAorNzU5ODEgMTgyZmUwYWY2MDRlMzVhZjZiMWI2MjMzZDc3NjNiZmFkNjBhZjEzZiBweTNrCis3NTk4MiBmNTk0MzEzYjkzNjQ1YWIyNGY4MTJmMDc3OTdlOTRkYTNiOWVhOTMzIGxlZ2FjeS10cnVuaworNzU5ODMgZmI0OThhMGRlMGI5NWFiNjFhZjNkYzEyMTkwYzE0ZjdmOWM2MGEzNCByZWxlYXNlMjYtbWFpbnQKKzc1OTg0IDVhOTkwMDNjOWI4M2Q4NDJmMWI5OTU5ZjMzMjY4YmZjNmVhODBhNjggcHkzaworNzU5ODUgMjY0YTczNWE4YWY3NzY3OTdkY2JkMWIwN2ZhNzI0Y2ZkNTU5Yzk4YSByZWxlYXNlMzEtbWFpbnQKKzc1OTg2IGU5Yjg3NzU2YWQzYjNjMjllODliMmM5MjkzZDI5NmI0YzA2ZDRmMzAgbGVnYWN5LXRydW5rCis3NTk4NyA3ZWNkM2UzYzk1NjQyNzEwZDkwMWYyNTg2ZTcwOGQzMTFlYTU5MWFmIHJlbGVhc2UyNi1tYWludAorNzU5ODggOGQ2NzcyNWNiYjRlMzVkOGQ4NTBhMzRhNDU1OGI5NWM4NTk2NDVjMSBweTNrCis3NTk4OSA3MDQ5YjJjODZmMDYxMGQxMTQ5YWUzMzliMjE2NWM5YjdkNjVlZjk2IHJlbGVhc2UzMS1tYWludAorNzU5OTEgNGNiYzNmZTkzNjcxZDkxNWIwNjk5YzVkZTczMWI3NGY3MjEwOTE3OSBsZWdhY3ktdHJ1bmsKKzc1OTkyIDg5ZTlkMDU4NDg5MDNlNTZiM2MxNTM5MTk2MGM1ODkwMGVjMmVmMjUgcHkzaworNzU5OTMgYWIzODY5MGZlMDFjZjkzNWJhZmJkMjEzMThkNGI0ZjRhZjIyYmY4ZSByZWxlYXNlMjYtbWFpbnQKKzc1OTk1IDcxYjNhYThhNzMyMGZlNDBjYzIwZDhiNzQwNzBhM2VhY2VkMmJiODQgbGVnYWN5LXRydW5rCis3NTk5NiAzNzI0NmI0YzNjY2UzOWVlNTgyMWRhZjcwMWFlNGZmMmI2NWRjMDkwIHJlbGVhc2UyNi1tYWludAorNzU5OTcgMTgyY2QwNGUyOWRiMTE4N2Q5NjY3OTkyYTU4ZDc3ODEwNmM1M2VkYiBweTNrCis3NTk5OCA0NzE3ODA0YmI1N2RjNzUwYmQ1NzBjZTM2MWM1NWYyOWRkMDk3ZDhlIHJlbGVhc2UzMS1tYWludAorNzU5OTkgOWYzZjgzZGY2OTc1YmU2ZjBjY2IwOWE3NTRjYjkwODAyZGNhOWFjOCBsZWdhY3ktdHJ1bmsKKzc2MDAwIDg0NmYyNmFkNTgwMDAyM2I2ZGVhNzY2YmM3YmNhZWZjOGI2YmUzNGYgbGVnYWN5LXRydW5rCis3NjAwMSAyOTEzODY0ZGRiZTk1ODllYTI5NmNkM2EwZDlhMjQzZTMxODdlMTdhIGxlZ2FjeS10cnVuaworNzYwMDIgNDJiYjNlMzYxM2Y2YzkwYTFiNTc2NWNhZWViMGMxZDlmNjJiZWNiYiBweTNrCis3NjAwMyBmODNiNDg5NjI3Mzk5M2FiN2YxMTRhZjA4ZmNlN2VlZDUwOWNlMWRhIGxlZ2FjeS10cnVuaworNzYwMDQgMDJmNWM2MDA4MzI3YWZlNTU1NjU2ODMwMWE5YjU4ZTdmOWQ4NThiZCByZWxlYXNlMjYtbWFpbnQKKzc2MDA3IDIxMWU3YjViOTk5YzFhM2Q5MWQ2MzlhMDU3YjViYzM5ODc2N2ViNmUgbGVnYWN5LXRydW5rCis3NjAwOCA3MDAwMmYyN2QyODFlZjZiZWRlODFkNmIwNDVmNjdkZThmOGNlNDYyIHB5M2sKKzc2MDEwIDQwMjY5NmFjNGY5ODJjZmIyN2ViYjhmZmQ0NWY1MDI5M2FhNjdlNjAgcHkzaworNzYwMTEgYjBlNGVmYjgzZDYwYzc3ZjI5OTg0MDE4Yjg2M2E3ZmFlMjJjNzg5ZSByZWxlYXNlMzEtbWFpbnQKKzc2MDEyIGZmOGUzNTllMjgwODQzMjU4ZDNiMmVhY2FhZDI5NDZiZWQ0Yzc3ODMgbGVnYWN5LXRydW5rCis3NjAxMyA2YjRjNzMyMGJhM2ExN2YyNDIyYmRkYzQzNjYyNDA5ZWUzOTBmNjUwIHB5M2sKKzc2MDE0IGI2OTAxNzc2MjIwOGFhYTZmMmU4OTNjY2Q4OTUwMTgxNjVlOTUxMDkgcmVsZWFzZTI2LW1haW50Cis3NjAxNSA1OTI1OTAwZWRmMTZmMGM5NGI1YmMxODlhZDFhYWM4YzNlNzA4YzgxIHJlbGVhc2UyNi1tYWludAorNzYwMTYgNzU3Yjk3YzYxNjkxZTI5MjMwOTY1ZjU3YjljYTJjMzhhOWZmNDk5OSBsZWdhY3ktdHJ1bmsKKzc2MDE3IDViOTVlNGVhYzdhOGI5OGE5YTY4YjEzYWZlOTZlY2NlNjlkOThjNTAgcHkzaworNzYwMTggZWQxNjZmZjdkOTUyMzgxYzQ1ZGYyMWQwYzM1MTkxYzMzMGIzODVlYiByZWxlYXNlMjYtbWFpbnQKKzc2MDE5IDEwZmUyMGZkNmZiM2Q4YzhhZGE3ZmZmNjJmMjA2NjliODBkZjIzYzIgcmVsZWFzZTMxLW1haW50Cis3NjAyMCA0ZGI4NDA0NWE3ZjAwNzFhMGE4MmEwZjFmNDgwODM5NDczNGI1Y2RmIHB5M2sKKzc2MDIxIGRhNmFkOThkNWRhZWYzMDhhM2U0MGFlY2I1ZDk1NGFlMTllMTg3MjUgcmVsZWFzZTI2LW1haW50Cis3NjAyMiBjNzhhMDBhMWQ2ZGIxODMwYTE4NTc0Y2YxODdiMWY4YjgyOGI1MTVjIHJlbGVhc2UyNi1tYWludAorNzYwMjMgOTNjN2Y2NTA5MzdmN2U5NTc4YTYxNGM3YWFjZjdjYTU0YjU4YTVmZiByZWxlYXNlMjYtbWFpbnQKKzc2MDI0IDkwMTI1OWJjMGI2MmVhMDE5ZmZhNmE1MDkwYjY0NmQwN2JjZGIzM2UgcmVsZWFzZTMxLW1haW50Cis3NjAyNSBiN2U3NjI3N2Y1NDUyNjdhZjgwZGIwZDlmNTdkOWFiM2FlM2JhMjE3IGxlZ2FjeS10cnVuaworNzYwMjYgMWFhNmI2OGU4NTIzMDQxN2MzYTc5YzJmMDNhNDRjZGYxNTM5MDQ5ZCBweTNrCis3NjAyNyA2NThlYjU4ZDJlNjhiNzU0MDgzNTQzMmY2NjM0NjY4OWQ5MWU1MGFkIHJlbGVhc2UzMS1tYWludAorNzYwMjggYzc4NWFmYTZmOTVjNTY0OWQwZjY1M2E1ZDhlNDc4YmNkNTgyZDlmOSBsZWdhY3ktdHJ1bmsKKzc2MDI5IDMwMzlhNGFkN2UzOWExMWFjYjc2ZGY4Y2ExNWZmYTA4MzQ4OWZkNmQgbGVnYWN5LXRydW5rCis3NjAzMCBkZGMxNDFkOWVmMWIxYmYzMWI4NTIxZWJjYzJmZTQzZDkwZjA3YjczIHB5M2sKKzc2MDMxIDM4NzE5YjhlMGM5ZjcwZTJmMjkxMmVmZTRjZjc0MjJhODdlZjIwZDYgcHkzaworNzYwMzIgMzhlYjZhOGFkYzI0MmIwMjQ0YjBhMjFmZmJhOTRhNGZmMjg3NzM0NCBweTNrCis3NjAzMyA4Y2E0ZDc3NjgwYzZkMjQyMTQ2OTk1N2ZmYzIxOWQ0YzAxYjE1NjRjIGxlZ2FjeS10cnVuaworNzYwMzQgNTFiOTk3M2Y3NjFlYzQwMGM3NDZkZWEzM2Y2ZjViOTJlNTM3OGQzNyBsZWdhY3ktdHJ1bmsKKzc2MDM1IDU3NTQyYjUwMmQzMjIzYTZiNTFlMjgzOTMxYTM4OWNiZjczMWE2OWUgcmVsZWFzZTI2LW1haW50Cis3NjAzNiAzYmY3NjFkZjgwMmFhZGRhYjkwYjJlYjAxNzBjZDMwOGVlMjJiMWJmIHB5M2sKKzc2MDM3IGEwMWU2Y2VmMTI1NmM5MTM5Yzk2MzE3NmYwMTJhMDhlMjM4NzNlODMgbGVnYWN5LXRydW5rCis3NjAzOCAzNDRjNDdkZjM2M2Y4YjljMjhhMDYwMjkyNTU5NjMzMmEzNmJkNjRkIHJlbGVhc2UyNi1tYWludAorNzYwMzkgNDU4MGZlMDcxOWU3MDJkMjE2MTNlNDE2ZjRkNmE1YjUwNTE3YjRmMSByZWxlYXNlMzEtbWFpbnQKKzc2MDQwIGZkMDU0MjcxNmE4MDU1MWZhMmQ4OTA1ZjM0MjM5YjI5YmZjZjBlOTggcHkzaworNzYwNDEgYjU5MWZjODcyMWYyZmRjNTA1ODY2MWM5OWYzNjZlNTM5NDUzMjU5MyByZWxlYXNlMzEtbWFpbnQKKzc2MDQyIDZkYzRmYWE0NWNiZDA4OTAxMGRmNWE5Y2MzMGM5MTZiMDdmODNkNjUgbGVnYWN5LXRydW5rCis3NjA0MyAyOGZlZjcyNjQ0YjdjNjQ0NGNlNWIyOWRiOGEwYjM1YzBlZmNkYjY2IHB5M2sKKzc2MDQ0IDRhODQ1OWUzMjkxOTIzMmJlZWNmNTMwM2JmMmMzNjI1YWM3ZDcyNDAgcmVsZWFzZTI2LW1haW50Cis3NjA0NSA2ZTQ4OWQzZDczYjg4MDQ5MTUzN2FlYWY0YWVmYWVmYTYyZTgxNjAzIHJlbGVhc2UzMS1tYWludAorNzYwNDYgMWUxYmUxYTM5YTc5MmVmNzYwZDY5MjRiYzAxZTYzYzdjY2IwOWNmMSByZWxlYXNlMjYtbWFpbnQKKzc2MDQ3IGYwMTMwMmU2YWNkNTQ0NjEzNTU2OWI3NTM0Mjk1Y2QzNDg0MTdkOTggbGVnYWN5LXRydW5rCis3NjA0OCA1ZDZlZDA4ODNiZjU3OWMzZjg1M2YxMjRhNjQxNDhiZjMzZTYzODczIHB5M2sKKzc2MDQ5IGE1ZTQ3M2U5NWJjZWFkNWM1ZGIzZDc2ZmZkZTFjNTJhMjQ1NDRiYmEgcmVsZWFzZTI2LW1haW50Cis3NjA1MCA0NTNmNTQ3OGE2OTFkZDFkZjlkNWI0ZjBmMGVhZTE4OWRlNmUzMTEzIGxlZ2FjeS10cnVuaworNzYwNTEgYjkxOTM3MGYxODIwZmRiYTE1NThiOWE3MzllY2NjYjc2YzJlYjZlYSBsZWdhY3ktdHJ1bmsKKzc2MDUyIDY5OGRlNTAxNzk5ZDk5MzVhYzJkNjg2YjYzMDgwOTc3Yzg2ZDBjMGIgbGVnYWN5LXRydW5rCis3NjA1MyBkMmQ4Y2FiYjllM2E5MjNhYjEwMzdiMGRlOGNjZjZiOWVkNDdjNjMwIGxlZ2FjeS10cnVuaworNzYwNTQgOTZhODUzZmFlODNiMjM3NGM4MGI5ZTA0NDJhZTMxNTkyM2Y3MDlkZSBsZWdhY3ktdHJ1bmsKKzc2MDU1IDE0MDJjNzUyNzU2NTVmZGEzYTE4Zjk2MjY2MzRlNjQyZWRjNWViMGMgcHkzaworNzYwNTYgOGEwZDNjNjlhZTIxYWRiZGE0YzA4NmJjODU0NTY2MmI5NTRjNTU4OSByZWxlYXNlMzEtbWFpbnQKKzc2MDU3IDg4YTM2NDZlZjMyYzJhNzgyYmI0MTliYzFmYzQ2YThmODY4NDc4NWMgbGVnYWN5LXRydW5rCis3NjA1OCBlNjA4ZjU4ZDVkMThiNjFkNDJkNDA1NTQyNmI2ZTMxNjNiMjdiNjk1IGxlZ2FjeS10cnVuaworNzYwNjIgOTRlMWIxNGVjODA0YjhhYzkyOTBiMjA1Mjg2NTgzNzRkZmZjYzUzMCBsZWdhY3ktdHJ1bmsKKzc2MDYzIDk1OWM2OGQxZDI4YTBhMGM3MmVmYTBlZGJkNzc1YmJlYTAyZjc2ZTIgcHkzaworNzYwNjQgM2NmZDY5NTY0ZThmMDc2ZmQ2YmQ4NTk0YTdiMWVkMDgwMmIyYjk0NSBsZWdhY3ktdHJ1bmsKKzc2MDY2IGYyOTYwZjExNmU3N2EyZWJhZDUxMDM3ZTIyYTA5YjdhN2EzMGMyYTAgbGVnYWN5LXRydW5rCis3NjA2NyBiZWU4OTk0YjEzZGVkYjgxNzAzOTliY2IyNGEwNjg2MDA1NDliODY4IGxlZ2FjeS10cnVuaworNzYwNjggYTNmMjFjZWU2NGQxZjEyOGE2MzViZDFjMmM0ZDYyN2IzMGU1MDFlOCBweTNrCis3NjA2OSBhODA4NmIzMTRjZDA3ZTZjM2ViOTIwOWIyZDM1ZjFmM2M0ZTQ3ODNmIHJlbGVhc2UzMS1tYWludAorNzYwNzEgMjAxYTQxOWU5ZTA2NjBiZTQ0OGJmMTI2N2M5YmM4ZDFlMTdhNzUxMCBsZWdhY3ktdHJ1bmsKKzc2MDcyIDY1YjExMjFhMjQ3M2ZkMjFlNjJlOWI0YmM5YjEzYzE2MjY0Y2NhMGEgcHkzaworNzYwNzMgNmMxM2JmMzVkMTY2MTE3NGFiZWVlOGVmMGNhYjAxNWIxODY5MjBjOSByZWxlYXNlMjYtbWFpbnQKKzc2MDc0IDMyMDFmYWIzNTIyMGY3ODUyOTlkZDgyOGU1NjE0ODhiNDY3MjljYzcgcmVsZWFzZTI2LW1haW50Cis3NjA3NSBjOTAwOGEzZTdmN2ZkMjM0OGI5NWE0OGE0MmE2NWM5NWIwYmY3NTMxIGxlZ2FjeS10cnVuaworNzYwNzYgNjg1YTI0YTZmOTg2ODQ3ZjI0MjBjYTE1NjYyMjQwZjI3MjMzNGIzMSBweTNrCis3NjA3NyAzMmM3ZDk4MTAzYmFlYzFhMzcxY2ZjZTIxOTg2Zjc0N2I0MDNhYmQ4IHJlbGVhc2UyNi1tYWludAorNzYwNzggYjQxMWNlNTg0YjdmZjA0MWE5YTNkZmE2ZTM1OTE4MTUzMGUxNmZjMSByZWxlYXNlMzEtbWFpbnQKKzc2MDgwIDYyZGNkOWZkZDdiMzRlZTY3MmE3MjE4NjRiYzYwNmUyNDY5MzkwM2MgcmVsZWFzZTI2LW1haW50Cis3NjA4MSBiYjM3YzdjMjZmYTQ4NjUxNTI3MGZjMDRhZDVkYzA1Y2YzMzAzZTZhIHJlbGVhc2UyNi1tYWludAorNzYwODIgMTlhNTczYzQ0YWUxMWMyYmMyZGE1MTNiMzA0YzI3YjgxZDljM2NiNyBsZWdhY3ktdHJ1bmsKKzc2MDgzIDkyY2M3ZWQ4M2U5YzAxYTE4M2U4NGJmMzUzYWE2NWIyNzYwYjljNzIgcmVsZWFzZTI2LW1haW50Cis3NjA4NCA3ZmQ5MGU1YTBhZDVmOWIzMzIwNDVkMzBkYjUxYmZlY2E2ZWI0MWY5IHB5M2sKKzc2MDg1IGZlODA4ZDY2NDgzZDdiNWU5ZGRjYjA2NmU4YzFlYWQ4M2Y0OTA4NWUgcmVsZWFzZTMxLW1haW50Cis3NjA4NiA4YzgwN2IzYTkwNTIzMjI3MDU3MmM1YjFmOWJlMzM5ZWRmYTlkMTJkIGxlZ2FjeS10cnVuaworNzYwODcgNTllOWFkY2E3NzFiMzRhYWY0NDc5M2E0MDdiOWViY2NiY2VhMjExYyByZWxlYXNlMjYtbWFpbnQKKzc2MDg4IDFkZjkwZTIyYmI3MDYxZTRlNzcyNmFkZWY5YWU4YzEzYzY4ZTU1ZjAgcHkzaworNzYwODkgOWFmMmU5NDQzOWQxYjQ0NmYxMDY1NzhjN2E1ZmYzMjIxMjcxZjdkOCByZWxlYXNlMzEtbWFpbnQKKzc2MDkwIDFlOGEzM2Y2MThmYjA2M2Y3NGNhNmI2YzdhOTRjY2E3NjRiMTE3MmIgcHkzaworNzYwOTEgZmZhZjY2NWQyZDNlNWQ1NmFlZGUwYmM5OTMwN2UwZGZjMTc5MDYyNSByZWxlYXNlMzEtbWFpbnQKKzc2MDkzIDQyZmEzZTA5YjZlNzlkMzFmOGZlMWYzOTQ3ZTkyYjdkMTMzYjZkZjEgcmVsZWFzZTI2LW1haW50Cis3NjA5NCAzMzY0YWNiYWExNTNjZWNmZTNjYmIzMWY2MWNmZTRkNzE0OWFlNzA2IHB5M2sKKzc2MDk1IGVkYTk3OWM5OGE3ZmJlMDNkNjdkMGM2ZGRiNzJlMzAyNDM0MmZlYzQgbGVnYWN5LXRydW5rCis3NjA5NiBjOTRlM2JmODM5MmJhMDM1M2JhNTFlOTliZWZhZjYxOTYyNjA0NDQ4IHJlbGVhc2UyNi1tYWludAorNzYwOTcgMWYxNzU4ODQ4YzZjYjM4MGRjNDFjNDIwYTM3ZGYzMjYwODhmZWE0ZiBweTNrCis3NjEwMCBmOTViNWZhYTEzY2Y1ZjRmNmY5OTRmN2E3ZDRiNTU5OTU4ZThkOGM3IHJlbGVhc2UyNi1tYWludAorNzYxMDEgNTE4Njk4MTRiYTlhOGY5ZGRiNzQzZDcwZTY5MTQyZWIyZmIyNzBlNiBsZWdhY3ktdHJ1bmsKKzc2MTAyIGVhNzM4ZmYxODAxNjYzYmEzMmUzMzQ1MGI5MjQxMDIyYWFiNDFiN2QgcmVsZWFzZTI2LW1haW50Cis3NjEwMyA2MDVkMmY0Yzc1Mzk0OWQyYjlhMzhmZDU3NDBlNjlkMzNmOWEwODgyIHB5M2sKKzc2MTA0IGM4YmZjNGRhZmYzZDhmNDhmMzRjNjE0OGNhZTY5YWMwNTkzY2E5MjEgcmVsZWFzZTMxLW1haW50Cis3NjEwNSBmNWQ2ODYwNGM2Yjk1MmE4ZTE2YzBiOWFhMjI5ZGM5MGJkNzkyNTI3IGxlZ2FjeS10cnVuaworNzYxMDYgZDE2MTQ0MjY5ZDU1OGQ2NzFmMjVhY2U3MTRiOTA0OGZlOTQ0YTIyYyB0YXJla19zeXNjb25maWcKKzc2MTA3IDI5OGY2YjM0MTI1ZDM1OGUzZDg1NmUyYTE1N2ZiY2NkY2IwOTY1NjEgdGFyZWtfc3lzY29uZmlnCis3NjEwOCAwNjhmOTQzMGNjMjQwYjA5NWUyNTI5M2UyMmUyMTljYTcwNzc5YTJjIGxlZ2FjeS10cnVuaworNzYxMTEgZjg5YTkzYTc3OGE4MWQwNjhkYzg5MjYxZDRlN2ZhMjJjOWJkNTgxMSBweTNrCis3NjExMyBkM2E4MTA1MTY2M2I2YjU2YjhjZGM3NGVjNDIyMDIwYjAyZDliNGRkIHB5M2sKKzc2MTE0IDQ0NDk4OWNlNWY3NzE0OGNiZWE0MjhiMzQ5OGVmMWRhNmM2MDhmY2IgcHkzaworNzYxMTUgOTNjNzUyODc1MDMzY2M1ZGRlYjMxZmE1MjE2OWE4MDRmNWVkZjRkMCByZWxlYXNlMzEtbWFpbnQKKzc2MTE2IDYzYzllNjNlMGRlM2YwMmFiNmYxZDAzMjZiNGQ4OWQwNjI2Y2QwOWQgbGVnYWN5LXRydW5rCis3NjExNyBmZDc4MjgwNTE4NjU1MWE5OGUxMDUxMjhjNTE1ZWFmZGYwZDZmNTI4IGxlZ2FjeS10cnVuaworNzYxMTggMmViYWQzZGZjZGUzNzYyN2VlMTI5NTUyZGJjYjVhNDNmMjhjMGNmOCByZWxlYXNlMjYtbWFpbnQKKzc2MTE5IDBjYjk0MzkwMGU1MzFlNGZhMmUyMjRmNDAxZDU0YzBiZTRiZTBhYmIgcHkzaworNzYxMjAgNGVhMGE4MGVkNzZhNjM5MmMxYzU1ZmUyZjkwMzRmNjJhNTFiMjljNiByZWxlYXNlMzEtbWFpbnQKKzc2MTIxIGExYzk0ZjA3NjFkNDEzYmFkNmYxMDhlMDY1ZDdiYzgyOWYyMjk0MjIgcmVsZWFzZTI2LW1haW50Cis3NjEyNCAzNWRkZmI0NDcxNjhkMDZmNDQ2MmEzOWRhYTk5NWM5N2RjODQwZGFkIHB5M2sKKzc2MTI2IGQzYTc2MzYzOTJhZjU1NGQxZWVmNjI1ZTQ2YmZmYzYxZTllMzM3OTEgbGVnYWN5LXRydW5rCis3NjEyOSBlM2ZmMzk3NmJiYWNlZjc1MjNhNTgzM2IxMjk0ODFiNWM5NjdiZGYyIGxlZ2FjeS10cnVuaworNzYxMzIgODU1MmEyNjc3MmU2ZmMxYmQ4MWI2NjA2ZmM2Mjg2NDI0MDAxOTQ2ZCBsZWdhY3ktdHJ1bmsKKzc2MTMzIDZkYjIyMGFmOGNhM2ZlYzkwNDY3OWNlNzVlOWMxZjIwNGI3MWI4ZWMgcHkzaworNzYxMzYgZDM0NmZmYjhjZmQ3NDMzMTljZGE4NWZjY2UzNTY3YjA3N2I5NTFjYiByZWxlYXNlMzEtbWFpbnQKKzc2MTM3IGNkMzYwYWM1OGNkMmVhMDZjNmE5MGIyMzNhNjE3N2MyZjZlMTk5M2MgbGVnYWN5LXRydW5rCis3NjEzOCBlMGRkZWRhMGQ5YzMzZjg0MjUxMDI0YTA1Njk3ZDgyYjhlYWYwODEzIHB5M2sKKzc2MTM5IDkzMDlkYWFmMzJkMTgwNzAyNmVjMzY2ZTVjMGRkMzI3N2JlMzQ2OTggbGVnYWN5LXRydW5rCis3NjE0MCA4MThiMGIyODdhYTQyNDRiN2NhN2M3ZjViNjgzYmI5ODczMjZiMGQ4IGxlZ2FjeS10cnVuaworNzYxNDEgNDJkNGNmODI3YjllODljODNmY2FlM2FiNGU3NjFiZTJjMDNlZGE0NSBsZWdhY3ktdHJ1bmsKKzc2MTQyIDkyYmRjM2M3ZDVhNDNlZjNkOWFmOGMxMjhiMmM1ZjY5Njc4M2ZmZTIgcHkzaworNzYxNDMgMWEzMDg2MGJjYTAzN2Y4NDEwOTRiMjI5YzMyNWZjOWUzMmNiOGRhMiBsZWdhY3ktdHJ1bmsKKzc2MTQ2IDI3ZTEyMGY5MjA4YjNhYThjMGM4OTFhNWRhM2YxZjlkZmEyODQ1ODkgcHkzaworNzYxNDcgZTI1Mjg4YmI2ZmFmMTdhZTgyNDBlNWI5NGQ4NWJhMWQ2ODI0ZTA5MyByZWxlYXNlMzEtbWFpbnQKKzc2MTQ4IDZmNWY0ODFkNjE5YzJjZGJiZWJjMzVlOWI5ZDhhYTNhODFmZDM0ODEgbGVnYWN5LXRydW5rCis3NjE0OSAwNGNmOTVjZjk0OTZmZmY1MGIxZjJlZjM2NjhjYTc5MjJmYTgyNTVkIHB5M2sKKzc2MTUwIDNhMGU2OTAwMTIxNTQzYTRiZjUxNjQ4ZDdiZDNiZDE1ZmM5MWQ3ZmMgcmVsZWFzZTI2LW1haW50Cis3NjE1MSAzODFhNjJmMWU2MzVmMmMwMjE0NGRkOTFkNGY5M2E0OTkwNWQ0MjkyIHJlbGVhc2UzMS1tYWludAorNzYxNTQgNjM3NzBhNWEwYzc5ZGYyYjRkMjNmNzRkOTA3YmRlZDg1NTY3OTI4NiBsZWdhY3ktdHJ1bmsKKzc2MTU1IDJlNGU0NzcyMTljNTczZjVjYWIwZjM0OWQ5YWU3ZDMzYWVlNGU2ZTQgcHkzaworNzYxNTYgZGNkNjg4N2I4YTI3NzQ3ZGE4YjQyNzM2ZTNjYTFhZDVmNGE3NDFlNCBweTNrCis3NjE1NyA5NzllYjFiYmY2ZTZlNDZkYTI3MDk1NmU5NDMxZTI4Nzk4MTZkZTNmIHJlbGVhc2UzMS1tYWludAorNzYxNTggZDYxYjI0Yzg3Njc0NDc1Njk1NGZmZDAwOWUxOWIyYzQyYzMxZGJkZSBweTNrCis3NjE1OSA0ODk4OWVjZmY4MDQ3YmJlNDQwZTdhMTQ3MzExYjQzOTE3MTliZWU4IHJlbGVhc2UzMS1tYWludAorNzYxNjIgNjlkNjFhZjVhOTU4OTM2NDZlZDI1NjYyZjc0YWYwYTExZjBiMzBlNSBsZWdhY3ktdHJ1bmsKKzc2MTYzIGQ5NzA1OWU5ZTg1MmVhYzJiODU2M2FjZGQzYmZhMTg0ZWU4Y2NiOTcgbGVnYWN5LXRydW5rCis3NjE2NCBmMTkwMzE1ZjE4NWVhN2FiZTRmYzNjMTVlYjI0ZTE3ZTA2MDRlYjc2IHJlbGVhc2UyNi1tYWludAorNzYxNjUgZWQxMWIzMTVkMzZhMzg4N2YxNjQwMDUwNzIzN2RhM2UyMGMxNjNlOCBweTNrCis3NjE2NiAxNDQ3ZDc1ZGVmOGIyNTc4MTBmMjA4YTYwODUyNWE0NTJlYWQyNjczIHJlbGVhc2UzMS1tYWludAorNzYxNjggYzc2ZDVmYmViNjkxOTMzOWNkMmJkNTlhMjIzZTI5N2RkZTFmMGQ3OCBsZWdhY3ktdHJ1bmsKKzc2MTY5IDI2N2E0MThlYmJjOWI2NGEwYjM1Zjg3YmFlYzk4ZTcxNWE5NzQyZDUgcmVsZWFzZTI2LW1haW50Cis3NjE3MCBhN2FjNGRiZGU1ZGI2MjBiYTIwMGZkYzhjY2RjZGI3NWZkOTI0OTkyIHB5M2sKKzc2MTcxIDY2N2Q5Nzc5Y2FkNmFmZjY2MDQ3OWEzZjEyNTcwMDhkMjVhMjJmMGEgcmVsZWFzZTMxLW1haW50Cis3NjE3MiBmYmY0MWIxMTI0ZDhlY2FmMWU3ZDhkN2VkMDVjYjQ0M2NlZmQyOGRiIGxlZ2FjeS10cnVuaworNzYxNzMgZWQ4YjI5NjkxMTllMjZhZTY4MjY5NjQ2ZGJiNDFjOTNmYjY0YTljZCBweTNrCis3NjE3NCAwZWI1NmE4ZTYyNjJmM2I5ZDIwYWUzOTUwMzUzNTI0NTdkMjJjN2E0IHJlbGVhc2UyNi1tYWludAorNzYxNzUgZmUzMzU2MmQxZjk1YTBmZGNiOTgwMTAyYjk4NDk4NThkMjRjYjU0NyByZWxlYXNlMzEtbWFpbnQKKzc2MTc2IDJkMzk0ZDJkMmQzN2Q3ZGFhMWM2YjgxMzYzMzliY2QwNDQxM2I3NzUgbGVnYWN5LXRydW5rCis3NjE3NyAwNTBhNjVhM2RmNTM4YjI4NzlhM2U4ZjhjMGQxZTJkZGEwMTg2YTU4IHB5M2sKKzc2MTc4IGJmY2FiMWJhMGY1MWNiM2NlNTE4OTg1YjMxNTE1NDhjMGQzM2U5N2QgcmVsZWFzZTMxLW1haW50Cis3NjE3OSBiY2EwMjdiNmRmNTMzZDZkYzNhYjMxM2E2YWNlZjRmMDkwYjUxOWJkIHJlbGVhc2UyNi1tYWludAorNzYxODIgZmJmY2NlMTEyNGFlMjcwYTQ2YzRhOGIzYmJhNTNmMjA1Zjg5MTIzNSBsZWdhY3ktdHJ1bmsKKzc2MTgzIDUyMTQwNzM4ZDZjM2I1ZWVkNmE0MmQ2MWEwM2U0NDM0NTc3ZjVlMWYgcmVsZWFzZTI2LW1haW50Cis3NjE4NCA4YmZiMzJiNWZlNmQ0ZDJmOTY0ZGQ5ZGZmZTcyZjVmNjQyZjc3MzRmIHJlbGVhc2UyNi1tYWludAorNzYxODUgZGQ5Zjg1YTVmMTM0N2NmYjE2MjI2ODRmMGVhNjI0NjNlYzg5YzE0OSBweTNrCis3NjE4NiA5MjE5YTk2MmFkMWMzMDdhZTFjNzhlZmU5MmNkMzdkYjA2ZDI2MTQ5IHJlbGVhc2UzMS1tYWludAorNzYxODcgZmZmNTU4Mjg2YWFlM2ZlMzZhZDJjNjkzNzQ3ZmYzYzJiODQzZDk0OSByZWxlYXNlMzEtbWFpbnQKKzc2MTg4IDIzY2M3NTljZmFlMzU4MjUyN2YzYjUyZWQ4MmYyNWNjMTY1NmFmZGIgcHkzaworNzYxODkgNmQ5MWFhYWRkZGQwODFkZTczZTRmMjliNmU3MzQzN2FjNGRiN2JiMyBweTNrCis3NjE5MCA4NjdkMmYyNzM1Yjg5MDU1NzYwMWI5NDI1Nzg0NjVkODM2NjNkZWFkIGxlZ2FjeS10cnVuaworNzYxOTQgY2EwMjE3YzUyYThiZjM4NGIzNDNkYWIyZjM4MzBjNWRjNzk4MGE1OSBsZWdhY3ktdHJ1bmsKKzc2MTk1IGZkZDY0ODRmMTIxMGQ2MGMxNjhlMjM3NjZiZDM0MmRlOGE2NmYyMTcgcHkzaworNzYxOTYgY2I1OTA1ODA2ZGU4ZGM4NzcyODgyZjkyNGM1ZWM5MTFiNjNlMjZhZiBsZWdhY3ktdHJ1bmsKKzc2MTk3IDk3YzMxODcxNDA3MGY2ZjE3ZGY3ZTY4NWU2ZjdlYWI2Y2IyYTQzZTMgcHkzaworNzYxOTggZmU2YjliYWJlNGJlOTE2ZjQ4NDkwNWU1M2YxZjI1YTA1Y2FjMGZkZSBweTNrCis3NjE5OSA5NzZjYzUwNGQ5OWYyODM4NWI1ZDJhZmQ4MWJiM2QyODU1YzkzNzVlIGxlZ2FjeS10cnVuaworNzYyMDAgMTA3NjRmZmU3NTQzY2U5YmMxMmY2M2FjNDFkNDVlOTY2MTM5MjllYSBweTNrCis3NjIwMSBiMWE3NzVhYTA3MTBkNDk2MWVhZWQxMzg1MDRlNzRiMGU4N2M3YjBkIHB5M2sKKzc2MjAyIDRlYmRkMmUwYWFhZGU3NTNkYzM0ZTBlNzEyNzY1NjdjY2FmNTg5NTEgcHkzaworNzYyMDggNTRiOGQ3ODBjOWI5OWUwYmI1NzJkNDljNmY3ZGFkN2Y2ZjEwNjUwMCBsZWdhY3ktdHJ1bmsKKzc2MjA5IDI5NTBkOTc3MTM5NTllNzBjZjVlOTVjODk2MDFiMGI2Y2U4ZjE4NzkgcmVsZWFzZTI2LW1haW50Cis3NjIxMCAxMmUwYzllYTMwNGVlZWI1NjgxYjc4NTQ4NzkyOWY1NjRjZWUxYTVlIHB5M2sKKzc2MjExIGM4NWViNTk0NjYxNDU2NWJkM2Y5ZjI4ZmZlMGU1ZTNmYTNmOTQ5YzcgcmVsZWFzZTMxLW1haW50Cis3NjIxMiA3OTVlZjQ2MzQ5ZTUwMWNiYzkzNGY5MTUwNDY5ZjFmNjFiYTFjMGJmIGxlZ2FjeS10cnVuaworNzYyMTMgMjE0ODg1MWYwODJhMTkwMGE2MGM3M2ZiNTcyYzJjMTcyZWVkOGMxNyByZWxlYXNlMjYtbWFpbnQKKzc2MjE0IDI1N2NiNjFiZjQxYjU2N2JjMjkzMDAxMGIzOTNjYTA4NGFhNTEzNTcgbGVnYWN5LXRydW5rCis3NjIxNSBjZTlmNTVhZDU0NmUxNGE1NDc4ZDMyMGI1Njc4ZTRiNzJiMTZkOGE0IHJlbGVhc2UyNi1tYWludAorNzYyMTYgYzcxN2ZlOTkzMDg1Y2RhYTFmYmM5NGVjYTlhNmNlYjgyMmViZWQwMCBweTNrCis3NjIxNyAzM2JlODJmYTI3N2FjOWExZWE1MDBlOWNjNWIzYTZhMTQ2OWQzODQ5IGxlZ2FjeS10cnVuaworNzYyMTggNDNmMzJkYjFiZjQ2ZmI2ZTA0YzZkYWQzZTVkMDQwNjFjNTkwYTViOCByZWxlYXNlMjYtbWFpbnQKKzc2MjE5IDgxMTY2ZDdiNDE0YzhhZjI3OGQ3OWExMGJmMjg4ZjM5YzA4MTRhZWEgcHkzaworNzYyMjAgMTM4YzFmNzQ4MDRkNjhjNmY1NjFhYTEyYjBjZDlkZTQ1YzY5M2E0MiByZWxlYXNlMzEtbWFpbnQKKzc2MjIxIDFjMjc4ODhhOTU1ZmU5YzZkOTFlMTExZTVmNDhhMjRmYzdlOGZiZmUgcHkzaworNzYyMjMgZDQ0ZmVhMjNmZDU3ZmQ1YjcyZjIyNTRhMTMyMmM0YTIzNDRkZmVhYyBsZWdhY3ktdHJ1bmsKKzc2MjI0IDk0Y2QxODVmNTNiNDc2MTM2ZTE0MjM1MGQ3N2MwY2VkZTZlYzBlOWIgbGVnYWN5LXRydW5rCis3NjIyNSA1NzA3N2RmMDJmOWFjYmM3OTMwZjNjMjFkNmYzZDkzNmJjMjYzMDI3IHJlbGVhc2UyNi1tYWludAorNzYyMjYgNWMwZDRiM2VjZDY1ZDE4ZjIxYTgwMjBhOTA3NDVlZGM1M2MzN2E3MCBweTNrCis3NjIyNyA0ZjFjN2I3YmZjYmRhNDAzYWFkYzM3MTRjZjIxNjg3MWY3ODQyNTdkIHJlbGVhc2UzMS1tYWludAorNzYyMjggY2QwNDM2YzM0ZWY0NmRlMGY0NGYwNTkzZGI0MGIxOGFlMTVmOWUzOSByZWxlYXNlMzEtbWFpbnQKKzc2MjI5IGY5YTUwY2VkZTZhOTIyYjA2N2Q2ZDZjZTk2ODAyNjJmNDI1MmExZDggcHkzaworNzYyMzAgODlmNDI5MzhkNWNjYjczM2MzMzZhNGQ1MTQxNjNmNDFmZmU0MjhjMiBsZWdhY3ktdHJ1bmsKKzc2MjMxIDEyOGRkNmRlMTM0Y2E4OWMyYzc5OGNmYmQzMWNmMmQ0YjZhNjllZjIgbGVnYWN5LXRydW5rCis3NjIzMiBiMmQ5MGMxYzYzN2RjNTdmOTc1ODIxODhkNGYyZDU1ZWE3MmQ4NmNlIHB5M2sKKzc2MjMzIDc2M2QyZmY3OGFlN2U4YzQ1MjlhNjFmM2U0Y2I2NTVjMTFiNDUxNDUgcHkzaworNzYyMzQgN2NlYjVlYjQ2MmM1MDNmOTZmMGZiOWUxMTIxMmNhY2UyMzY1OTNjNCBweTNrCis3NjIzNSBiMzU0YzFiNmI0NzY3YzM3YjRjMzgzNjI1NWI3YWZjMDJkYTdmNTM0IHB5M2sKKzc2MjM2IGEwOTUxZjExYmUzZDc2ZTZkYTk5OTU0MzVhZmNlNTQ5NWYxMDE1MzEgcmVsZWFzZTMxLW1haW50Cis3NjIzNyBiN2Y3M2IwMmQ2ZDI0OGNlZDgyYjZlMTE3YjVhNzAxNDYyMjExYjIxIHB5M2sKKzc2MjM4IGIyMTg4MzY1NzNmYWNlODdmNGY3Yzc0MzZjOWQ2ZTU3MjZmNDc4NmQgcHkzaworNzYyMzkgOTg1NzllOTUyYjU0YWY5N2QwYThjNmQzMzEwODAwOGI1MTIzOTU0MSBweTNrCis3NjI0MCA2ODU1MjdhZTQzN2RmOTJhOGY0Y2E0MzBlMWVjMzE4NzgyM2I2ODE5IHB5M2sKKzc2MjQxIDM1N2UzOTcwMDQ4OTc4M2U3YTBkY2Y0Njg3YWQxNWExNDliODY5YWQgcmVsZWFzZTMxLW1haW50Cis3NjI0MiA4ZTZiNDc4YTcwNTNlZWIzZmZmYjM0MzMzOGUwODI4ZWEzNmJlZjczIHB5M2sKKzc2MjQzIDY1ZTIzMDg1ZTNjYWRkZGJjZDA1YzA0MjU2ZTAxNDRmMmE1MzQxYzUgbGVnYWN5LXRydW5rCis3NjI0NCAzMjMzNWJhM2FhMGJiMTYyNjFjMDE3NWVkNmQzMDdhZmFhYWI5ZWE4IHB5M2sKKzc2MjQ1IDE5NmYyYWI5NzcxOGNiZGI2YjllMWViMzY1YWYxZmZmZWJhN2M2MTQgbGVnYWN5LXRydW5rCis3NjI0NiBiODE0NWQ2ZGI3ZDQzZDcwMWQ1NTEwNmZjZWY4NGNlMDlkYmI4ZTdmIHJlbGVhc2UyNi1tYWludAorNzYyNDcgYzYxM2M3MjRlMzE1OWFmODYxMTkzY2Y0M2NiZGMxNzJkOWI5ZTc4OCBweTNrCis3NjI0OCA5MGYxZjU3MzIxODU5ZDBjNjVmYWQ0NjU3OTA2NDJhMTM5NWM4NGUwIHJlbGVhc2UzMS1tYWludAorNzYyNDkgNWM5MDUwNDgxMzA5ZDhiNjgxMzRlYzJhYjRhYjdiZTVhZjIwODJkYyBsZWdhY3ktdHJ1bmsKKzc2MjUxIDI3N2I4OWQ1YjMyMDk3NDgwMjA1MmZhMWRjY2RhYTcwYzFlODZhZmYgcHkzaworNzYyNTMgYTFkZjUyNGZjYmM2MjJiMDc5Y2Y5YThmMjE5YjM4YWMyY2JlZjBlMCBweTNrCis3NjI1NSBmMDAxM2FkZTljMWFkMzZmYzEwNGQwOTljMzQ4NTQ4YjNkN2Q1MzVhIGxlZ2FjeS10cnVuaworNzYyNTYgYWE2NGE1MGFkNDkwNWU3OTNjZjViNjdmNThiZGVmYjYxZjIxYTE3NSBweTNrCis3NjI1NyBhMmNiN2QyNzIxYTNlNGU0ZThhMmRkOWRhNWFkMmEzZjA2N2UxYTlkIHJlbGVhc2UyNi1tYWludAorNzYyNTggMjA3YTQ2MjYxM2YzZjNlMjc1MTY4NjEwYWU0ZGM2OTdiOWM3Y2Q5OSByZWxlYXNlMzEtbWFpbnQKKzc2MjU5IDNmMmE3NmZhMjQ5NmIyYTE1YzJkZTYxMTM0YTI2NTlkNjkwOTliZmQgbGVnYWN5LXRydW5rCis3NjI2MCBjMWMxZjI4YWNiMDUzMjc5MTk5YmUzYjU5YjYzZDAzMGRkM2UwZjkwIGxlZ2FjeS10cnVuaworNzYyNjEgYjJhYjA4YzkzYTAyODI5ZjY0ZGI4YzRjZjUyZDZlNzBlMzZiMTNjMSBweTNrCis3NjI2MiA5MmY5MTcwNDM5MTk5OWZkMzA3MmQ3ZDcyMTdkNTlhNTZiMzQ4YWUzIHJlbGVhc2UyNi1tYWludAorNzYyNjMgYmVjNTg5YjQ0YWFlN2E2YzMxOGQ2NGY2Mzk1ZmViZDc5ZWJiOTEzMiByZWxlYXNlMzEtbWFpbnQKKzc2MjY0IDU1NTA0NTU0MTc5NGU4M2ZlNTc2MGM1YzQ3OGJiYTE4MjY2MzkyN2YgcHkzaworNzYyNjUgM2RiMWZjM2NlZmQwZjg2M2Y3YmU1NTk2NmU5ZDEzZDFjMzZjM2MzYyBsZWdhY3ktdHJ1bmsKKzc2MjY2IDk0ZjI3MDVkZWY1Y2Y2NTY2ODNlYjM4NmMxMDM1ZWVjNTY5ZTU4YzIgcHkzaworNzYyNjcgN2Q0YWI4Y2QwMDIzOTU1NDMyODYyODRlMDQ1ZjU2NzYxYmQ1ZDRlNyByZWxlYXNlMjYtbWFpbnQKKzc2MjY4IDU2ZTcwMWY4MjQ1ZTU2MzZhMGZmZjlkOWRmOWRhYzhlNTRmN2U3MmQgcHkzaworNzYyNjkgZmE2MDI3MGFiNzlhZTVjOGRkZGM4NTJhOTM0ODZkZTlmNGQxODhlNCByZWxlYXNlMjYtbWFpbnQKKzc2MjcwIDEyNTdhNTk3YzhmYWRhMDU3ZDYxNDZkYjI2OTFhZWNjY2JmMTYwOTEgcHkzaworNzYyNzEgM2Q5MDJkNjdhZjljYTA5MmIyZDc0M2M3YWFkMzVhNTgzMWI2NmQ1YiByZWxlYXNlMzEtbWFpbnQKKzc2MjcyIDc5ZWE0YjFlZjA0ZjI3ZGU1N2E3NTQ5NWJiMjE5OTM5YWFiMzQxNDcgcHkzaworNzYyNzMgN2Q2YmFkNWMyZDY0ZTA2YjJlMjdlZTg3ZGRlYjZjMzAwNTA0NWVlNiByZWxlYXNlMzEtbWFpbnQKKzc2Mjc2IDFhM2QzOTZkMWI2ZmNiZjU0MmJlNTkyNzQ0ZTQ4YTM4OWM4YTgxYmUgbGVnYWN5LXRydW5rCis3NjI3NyA1M2VlOGVjYzE4YTUyMmE4MjIzY2FjZGY1MTViOGNhYmU5ZDI4YjMyIGxlZ2FjeS10cnVuaworNzYyNzggYmI0ZmRhMjJlNjU3ODA4YmUwNGZmNjU5NDE4ZjRlMmZlYjU2N2NlNSByZWxlYXNlMjYtbWFpbnQKKzc2Mjc5IGM3NzdlNGI0NTUwMDRlMjgyNmQwMjllMDJiYmNiYjBiODMwN2VhOGQgcHkzaworNzYyODAgODc2ODhmZjZhY2NjNGRkNmNlNDUwZDcyZDYyZDViZjZlMTE0NjZmNyBweTNrCis3NjI4MSAwNWE4OWM4NjYzY2M3MmU4NDVmZWNkNDY4ZGFjYmI5MTBkMmE4ZjQ5IHJlbGVhc2UzMS1tYWludAorNzYyODIgMDVjNGViMDA4OWM1ZjFlNTEyYmMwMDQxYTg0NGIxZTU1MzVmNjBlOSBsZWdhY3ktdHJ1bmsKKzc2MjgzIDNiMGIxOWI1M2QzMmJmNTU5ODU1NzZiN2U3ZjZmNjI0ZmY5Mzg1ZWUgcmVsZWFzZTI2LW1haW50Cis3NjI4NCA1OTVlYzFkOTBiMmZlZmM2NDEwMGM4MTczNDlmYmIzODhmMGZhMTc1IHB5M2sKKzc2Mjg1IGZiN2ZjODMwMjcyMWQwMDhkMDc1YWRkNzM1ZmMwYWZjOGMxMzI0M2IgcmVsZWFzZTMxLW1haW50Cis3NjI4NiA0MDg4MWRiMzE2ODkzMzkyZGMyZTdlZDE4YTRhMWM1MTA1OWIzMmU4IGxlZ2FjeS10cnVuaworNzYyODcgNmE3ZmMyZTg1NjVmNzNhN2Y0NmM5MzYyYzM4ZWZhMzM5YTc4NmZkZiByZWxlYXNlMjYtbWFpbnQKKzc2Mjg4IDU5MDRhYmI3ZWVmN2IzYzhlY2M5MmI2OWQ1YjBhMjMzZWE4YWM3NzIgbGVnYWN5LXRydW5rCis3NjI4OSA0OWE1ZjFjYjFiMjU0NzBhZDFhOTI0ZWJjMjc2MWFkNWNhZDUxNDIwIHJlbGVhc2UyNi1tYWludAorNzYyOTAgZjY0MGY1NWU4ODczODU3ODlmNDlkMmUyNzZkZjAxZjNiNjcyNGE2YiBweTNrCis3NjI5MSA1YjA1YjVlOWE4ZTliNzQyYThjYzhkZDZmYzA1YTJhOTZjZGQ0OTQzIHJlbGVhc2UzMS1tYWludAorNzYyOTIgMzcwZDIxOGEwMWJjMzJkOWZiNzk2NDk5NjJkMjczZjdhNmE5MTQzNCBweTNrCis3NjI5MyAyYWE2MmZjZTBiZjg2NTM2MWVhYThlZGYxZGMxMjk5YjFmMzE4MzVjIHB5M2sKKzc2Mjk0IGIyYTM5MGM1ZGU1Zjg5MzFkMWM4ZTNkYTRmM2RjNTAzNjJmNjM4OWMgcmVsZWFzZTMxLW1haW50Cis3NjI5NSA2MmI4ZGU5ODNiMjY0MmI4Nzk0MjlkZWU5ZTI0OGEzMjE2NmNkNjBkIGxlZ2FjeS10cnVuaworNzYyOTYgYzIxN2UwMzMxZDRiMmUzYThkNTRmMjYzN2ZhY2QwZDEwMGY2OWM5OSByZWxlYXNlMjYtbWFpbnQKKzc2Mjk3IGM0NThmODEzYTcwOTRiZmYwNTgwYzM4YWI5YWU5YTBiYmI4ZDcyZDYgcHkzaworNzYyOTggM2ViZjkwN2RiMDI4ZTEyYmE3YzE3M2ZlMjI3YmY5YWI5ZTYwNjEwZCBweTNrCis3NjI5OSA5NTA1YWZlODgyM2Y5NGMwNzkxYjRlN2EyMzA4NmJhYWQwNTc0MTA5IHJlbGVhc2UzMS1tYWludAorNzYzMDAgMDY5YjY2Y2ZhZDNmZDlmNjVkZTcwODQyN2ZkMjE4NzZmNWVhYzBjZCBsZWdhY3ktdHJ1bmsKKzc2MzAxIDc4NTIzMWMxYzU1YTkxOTE1NjdiYjczMzg0ZDBhZmVmYTU5YTQwMmIgcHkzaworNzYzMDIgMmVjYzU5MzZiMWYyMzMzZjgzZDMzMmRlZjgzMTcyOWQyMTFmMzQzMCByZWxlYXNlMjYtbWFpbnQKKzc2MzAzIGYxMzVmZGI3M2Q4ODU0MzdiN2NiNTlkNGM4NTc1YzNmODdiMzc5MWQgcmVsZWFzZTMxLW1haW50Cis3NjMwNCBjNTA5OTgxOGUwZDRlNTkwY2RlMzdhNjdmYzk1MzJkMTJhZDZlMGUxIHB5M2sKKzc2MzA1IGFiYWYzNzI0YmU3MTE3ODZlMjE2MGJhZmFjNjg4YjQ1N2VkY2E5ZGQgcmVsZWFzZTMxLW1haW50Cis3NjMwNiBhZmIzMzQ4YjM3MTU2MjMyZjIwMTU5YjliNzQ2ZmU4ZjAxNGI3N2VjIGxlZ2FjeS10cnVuaworNzYzMDcgMTUwNjEwY2FlODA0OTI5ZGM4ZDUzMGQ0NzljMDJkZGI5MGUwMWQ4MyBweTNrCis3NjMwOCA1MTAyODcwOWFiYzMyN2NmNzc1NmZmYzQwYWYwZTQ0MzYwMjUwMDQ5IGxlZ2FjeS10cnVuaworNzYzMDkgODM2NjQyMjQwNDY0YWJkNGE4ZTAxZmIwZWNjMzZkZjE1NDRiMTBmNiBsZWdhY3ktdHJ1bmsKKzc2MzEwIDIzYzEzOGM0ZWMwNWVjMTIyZjhhNTFjYjBhNjI2NTVlNjZiYjZkNmMgcHkzaworNzYzMTEgMTU0ZmIyNzBhODIwZjNjZDAwMjllYmM0MWE2YTY0M2E2NTE4YjlmMSByZWxlYXNlMzEtbWFpbnQKKzc2MzEyIGViMWMwM2EzN2EwMjk1ZDVhYTZkZTNlMTk2ZjQ1YmFhNTAyNWRhZTYgbGVnYWN5LXRydW5rCis3NjMxMyBjMDg0MjNkNzBiOWYyMWE3MTE2Mzk3M2IwOWQ1NDUwYjkxYWU3YTNiIHJlbGVhc2UyNi1tYWludAorNzYzMTQgZGY1MzY0ZmMwZTVjOWQ0OTAwYjc2MGU3YTRiMGNlY2RjMGM1Y2Q4MSBweTNrCis3NjMxNSAyNWI2NDBkMjM0Zjk1NTVjM2JkMTUxZTI4ZTQ5N2I0YjgyYWEwZGE2IHJlbGVhc2UzMS1tYWludAorNzYzMTYgMjUwZTFmNDc1NTY4YWEyZTZjZTI2NjEyNGFmOGFhMmU1MTY0ZTVmZSB0YXJla19zeXNjb25maWcKKzc2MzE3IDY2NGY2MzAxOTQwZjgzMmU2M2Y1YWY2MjNiMTM3MDY2NzQ1ZDY1OTggdGFyZWtfc3lzY29uZmlnCis3NjMxOCA2MTU0NTI5MGNiNTE0NDk2NTc2YjJmNTVmMTc4MjQwMWZjMzdiYTJhIHB5M2sKKzc2MzE5IGViMjM1ZWI0NWQzMjliZDM2MzQwZGMyYzQ3NzQ1NGE2ZjNkNWI2OTUgcHkzaworNzYzMjAgZjExMTJjMjcwMGIxZTY1MTEyYTlmYzViNTg5MjlmNzNiMjM5YmM5NSByZWxlYXNlMzEtbWFpbnQKKzc2MzIxIDQwMWQyMjM3MDViNzc4MWZjODlkODE2ZjM3NzcyZDEyNzQ3ZDExYmQgbGVnYWN5LXRydW5rCis3NjMyMiAxZTAzZmU1YTExYjQyZjJkMGM1YjY4N2E4OTZlODM0NTY1NGNlOWZhIGxlZ2FjeS10cnVuaworNzYzMjMgOTY3MGZlNmU2ZDE0ZGNhYWEzZjAwOTc0NTgyZTgyOGYyOTczOTM0OCByZWxlYXNlMjYtbWFpbnQKKzc2MzI0IGZkNDE3Y2Q2NDM0MTg1YWI2MGQ3MDk1NDkxNDM5YTBkZDI2M2NhMmUgcHkzaworNzYzMjUgZjYyOTMwZDBmYTcyZDI1NTQwNDVkNzU2YTgzNjcyODBmNmZkOTcxZSByZWxlYXNlMzEtbWFpbnQKKzc2MzI2IGM4NDdjNjg0YzJjNWVhMDkyYjY2MDJjMDZmNTZiN2RiMWRiYmFkNDMgbGVnYWN5LXRydW5rCis3NjMyNyBkM2IzYThhODA5MGZhMTlkYWI4NTM1NWY1Y2Y1N2NlY2MxMTJhYjFjIHJlbGVhc2UyNi1tYWludAorNzYzMjggYWM3NjhjOGUxM2FjYTg4YWQ2YjU3N2U4YTJmMDhmZDExNDY3NGYzZiBweTNrCis3NjMyOSAyZDNjZGE2YjhjOTUyMjEzZjM3ZjBjZjlhNTk4N2Q3OWM3ZDcwNzgzIHJlbGVhc2UzMS1tYWludAorNzYzMzAgZjY4MGMxZmI3ODA0ZjgzMjI1ZmRkMGJiNjU3NDJhYmYyZWE5Y2Q0ZiBsZWdhY3ktdHJ1bmsKKzc2MzMxIGQxMjc2NzllY2ZhYTZkZTQ5NTQ1OGNmM2U4NjMzOGQyYWFkMWQxOWYgcmVsZWFzZTI2LW1haW50Cis3NjMzMiA5ZDkzNDJjYmY5MzUzZTRlNTkyMTk2M2I0ZmUwY2U2Y2I4MDA0MDAyIHB5M2sKKzc2MzMzIGNlYjNiMzZkZDY4MWVjYzA4MjRlYjY4MDE3M2RiMDUzOGM3YzU4ZmQgbGVnYWN5LXRydW5rCis3NjMzNCBjNWExMjJjYjEyODhhNmM0N2E5NjZmZTFkYWRmMzlhM2RjYzg1YTQxIHJlbGVhc2UyNi1tYWludAorNzYzMzUgNDM5MWEyMmFiMWYwNGE5Mzg2OGNlYzVkNzI2YzEwZjU4YWVmNTQzZiBweTNrCis3NjMzNyA0YWE0YzE5ZGZhZWRlY2Y3ZDQxYjNjNGQwMGU5Y2E2NTFkMDg2N2M3IGxlZ2FjeS10cnVuaworNzYzMzggYWRmOTI3NGQzZWRjNDEzZmMyNmRmMDdkM2VmMjhhNTM2ZmYzNDllYSBweTNrCis3NjM0MSBmOTNiMmE2OGRmYjQyMDc0ZmY2ZDM3OWU2ZjYzOGQ0OGExYTgwMWZjIHB5M2sKKzc2MzUwIDM0OWI5N2ZmNGMyYjc4MzI0ZmFmM2Q0NzM4ZTZlYWZmYjM3ZTA5NjYgbGVnYWN5LXRydW5rCis3NjM1MSA3MTgzZDZiOTMwYmE5MTI0YWNmOGI0MTBjZTEwZDJkMWM4YzRlMGIwIHB5M2sKKzc2MzUzIDI2MjgyMTZiYzY2ZDQ3NmY3NzY5M2Q4MmM3MjE0NjAwZjIwYTk4ODIgcmVsZWFzZTI2LW1haW50Cis3NjM1OCBhNzdhMmQ3Y2VkN2RkN2MyZTNjZWM4MDA3N2VlYTEwMjg2ZDFiOTBmIGxlZ2FjeS10cnVuaworNzYzNTkgMTg0ZWI5MGIyZTNkNzVmYjkxYzQwZjkyMTRlZTY3MDM3MjlhMTlmOCByZWxlYXNlMjYtbWFpbnQKKzc2MzYwIGQ2YzIxMDY3NzliOTBjZTJjYjA5NDY3NmQyYjEyNWM5MmM3MWNlNGIgcHkzaworNzYzNjEgM2M2MjAzMWIyNTA2ZGVjZDU3ZTc1YzM1MWVjZTk3MjI2NWIwOTEyMyByZWxlYXNlMzEtbWFpbnQKKzc2MzYyIDNkMmIwNmFhN2IzNmZhMGM2NGI2M2M3NGMzZDlkMDAwNjIzY2IzMjggbGVnYWN5LXRydW5rCis3NjM2MyBmMDE0OGQ5MmRiN2ZmNTA2MzMzNzNjMzgwZjBiMDE2YjZhMWY4N2IxIHJlbGVhc2UyNi1tYWludAorNzYzNjQgZWRhNTZkMDc3NWJhY2Q3ZGIyZmM2NjE5NTk5Mjc2YWM2YWMwNjAyZiBweTNrCis3NjM2NSAyNGFiOTFmYjI1YWJmMDdlZGFhYTQzNTFkOTlkNTAwZjQ3YmQ2NGUyIHJlbGVhc2UzMS1tYWludAorNzYzNjYgM2QxOGNkMWQwNGE0NDY4ZjE4MWYyMDg3NmY0Yjc1NDY4NmFiMzBmZiBsZWdhY3ktdHJ1bmsKKzc2MzY3IDRlZDEzMmQ2YmI3MDAxMjM4ZjJjMTMwNzE1OTJiYWMzNzEwMDdlMmIgbGVnYWN5LXRydW5rCis3NjM2OCA2ZTNjYzNhZGYxZGM0NDBhM2IyZGMxOGIyNjM2M2JhYzc1MzBiODQxIHB5M2sKKzc2MzY5IGE3ZjYxOTRiNzhjYzkyZDI4MDg4YzdhNGMxOWIzYjBlNzZjYTE3MGMgcHkzaworNzYzNzAgZWQ1NGExYTkxNGI0YzY2MDUzMDBlMmJlMGEyNmM1NWRmNWFmN2RmMSByZWxlYXNlMjYtbWFpbnQKKzc2MzcxIDVlZjM0YjI5NzY2Y2YxYTI3NjMxN2Y4OWNiZDI0ZDIyYmE3YmRlZWYgcmVsZWFzZTI2LW1haW50Cis3NjM3MiAyYzVjNjY4N2YxYzhlYjU0MGYwZjBhNzk2ZTNjZmNkZjAwZjFhYTdmIHJlbGVhc2UzMC1tYWludAorNzYzNzMgOTJlMDZjZGJlYWI5YjY4NDI1ZWMyZjljNTIyNTc3YTYwNGVkNzRkMSBsZWdhY3ktdHJ1bmsKKzc2Mzc0IDUwZDM1NTMyNGM1MDYzMjdkZGFkYzczNjJlYzAxMWVmY2MyMGVjMDcgcmVsZWFzZTI2LW1haW50Cis3NjM3NSBiOTZmNzhjZTgzODMzOTNiYzFkYmY0NDEwYzRhZDRiZThmMDc4MGUxIHB5M2sKKzc2Mzc2IDMzM2RkYTMxYmQ3MzMxZWU2MTE3YzIxOTI0ZjdhY2Y2YjdlMGRlMzEgbGVnYWN5LXRydW5rCis3NjM3NyA0MWQyOWMxN2ZkNDA1ZDZhZTEzMmQwYmUzYjllMmJiNDE5NGZiMzJkIGxlZ2FjeS10cnVuaworNzYzNzggNDYzM2VkMjM3OTcwZDc0NmY4NGI5MWZjMDBkZTI1NjQ3YTlkMzY2ZSByZWxlYXNlMjYtbWFpbnQKKzc2Mzc5IDFlNTM0ZDc5NTBmODBlODkzMzcxNjg3ZWE1ZWJhYWMwMWMxN2JiMzEgbGVnYWN5LXRydW5rCis3NjM4MCA5ZWQwMmRmNzJiZDYyZjNlNzEyZmRlYjQzNzBmN2JlZWRlMzY0MTY2IGxlZ2FjeS10cnVuaworNzYzODEgZDhiY2M5ZGUxNjA1NGM3OWU4NDBmM2Y2OGViN2FhYjM2NzFiNTgwYSBsZWdhY3ktdHJ1bmsKKzc2MzgyIDBiY2MxMmM0NjAxNWE0ODg4NTU3Y2RhYzllMWQyMGUyNDVmN2M0YWEgbGVnYWN5LXRydW5rCis3NjM4MyAwNWFmMDQ5MDBiNmI5MWUyZWQwMGRjNDM1OWY1MGZhY2RhMDM3YTlkIHB5M2sKKzc2Mzg0IDcxNWMwYmFhOGIyYzhjNzhhY2Q1YWRiYjI3ZjMyNTNjMTc0YzhjNGUgcmVsZWFzZTI2LW1haW50Cis3NjM4NSA1ZTVjOTdiOWM4Mjc5ZjYyYzgzODA4MzYyYjdkZDMxMWQ5NTRlMjJjIHB5M2sKKzc2Mzg2IGEzNDViYjUwZWMwZjg4YzVkYThkMzFiMDEyODI5NDc4ZmM5ZmYyOTkgcmVsZWFzZTI2LW1haW50Cis3NjM4NyBkODAxOWQxZDU2ZjMzNGY1MmU5NmI3ODFiYmM0YWJjNDcyMTRiMTk3IHJlbGVhc2UzMS1tYWludAorNzYzODggZWQ1OTA3NzgzOGFkZTk5MjdhZjZkNDkyMDc1M2MxMDZkOTBiZjA4NSByZWxlYXNlMzEtbWFpbnQKKzc2Mzg5IGIzMWEzM2MzNmYwODc0Y2ExNzE2OGExNGVhNjdkNWU3NGFhNmQwNGEgcmVsZWFzZTMxLW1haW50Cis3NjM5MCBiOGEwYjMzM2U0NjllMWE4OThmMzE0M2EwNzhlMTcxYTg5MDdmZjMxIHB5M2sKKzc2MzkxIDhkMDZlNDUwYmM5OGNiNmE0ZjczYmE5Y2ZhZjJkYTk3OGM2ZjczYzMgcHkzaworNzYzOTIgZjE1MjY2NzIwMGFlOTA0MjRjZjJmZGNiNWRhMGI4NjYwNGM4YzU1MSBsZWdhY3ktdHJ1bmsKKzc2MzkzIGE3OTBmODRmYmFmYTI4MThlZTZkOThhMTZhMWM1MDY1MGI2ZTgyYzAgcmVsZWFzZTMxLW1haW50Cis3NjM5NCBmNzNkMTM3Y2ZiZDA0NmY3YTRhZGE2MTBlYzU4NTIyNGI3NDkzYmI3IHJlbGVhc2UyNi1tYWludAorNzYzOTUgODc5M2ZmOGY0ODI2MWQ5MTQ2ZDQ4ODBjYzRmNWVkNzYxZDFiZjIzMyBsZWdhY3ktdHJ1bmsKKzc2Mzk2IDE2NmY3YTNiNzNmYzYwYzYzNmQ2NjJhYWJhMDJlZjlmM2RhNzRiM2EgcHkzaworNzYzOTcgNDJhYWVkYWVmYmNiNjVlMGI5NTY5ZTc3NWY2YzUyYmRjMGY2MGUwNSByZWxlYXNlMzEtbWFpbnQKKzc2Mzk4IGQ1Nzc5ZTE1OWRkYjFhOGRhMjFjN2NiNzZjN2E1OGZmZGQ2YzBiYmMgcmVsZWFzZTI2LW1haW50Cis3NjM5OSBjMGRmYTliZDVjN2Y4MjMzYjgyNjVkOTJlNDhkMzRiMWNmMTZjY2FlIGxlZ2FjeS10cnVuaworNzY0MDAgNGI2YjQ5NDNkNjlhNDBiMGI0OWE5MmMzZWRiM2RhZTE0MTE3M2UyYSByZWxlYXNlMjYtbWFpbnQKKzc2NDAxIGY1N2YwYzZhYWU5ZDgyZDgzYmNjZmQ5MTRjNTQwNjYzZDQxZmE0MTcgcHkzaworNzY0MDIgYWI1YjdlMGE5MTMxYWRiYzNmYWFmZmI4ZGI3ZDg4YjAwMjVlMDVhZiByZWxlYXNlMzEtbWFpbnQKKzc2NDAzIGMwNzlmY2JmYzc2MTdiNmI5ODFlYzZjZmVkZmY0OWU4Y2U2ZWJlMzMgbGVnYWN5LXRydW5rCis3NjQwNCA1YjU0MzI1ZWY2ZjU3NjMxMzhhY2VkYTk1MTEyZjFiMzJmZDQyZTA2IHJlbGVhc2UyNi1tYWludAorNzY0MDUgMzk5ODljNjZkYjE3OGEyMThiNTkxM2Y4NTczMzhlYzI3OWZlMjk3NSBweTNrCis3NjQwNiBhOTJlZjEzNmQ5ZDBjZmY5MTZiODNhYTUxY2RlMjU5Mzg0MjhiYzc3IHJlbGVhc2UzMS1tYWludAorNzY0MDcgNGZhZTgxNjhjNDNiMTMxODhlMzBjNDExMDhkMDUzN2IyODRhN2ViZSBsZWdhY3ktdHJ1bmsKKzc2NDA4IGI5NmFlM2Q4YWRmZDEwOGFiMzdlOGIwMjEyNzA4M2Q4NjBlMWI5MzUgcmVsZWFzZTI2LW1haW50Cis3NjQwOSAyZGQ3OTQyZGNmZDUzOTBhNjZmOTMxNTQ4YWY4YjcwMzU1YjI0YzNhIHB5M2sKKzc2NDEwIDI0ZDFlMDZjNjI5YzFhODYwZjlkYzVmNWUyMjNiMThiMWRmOGY4MzMgcmVsZWFzZTMxLW1haW50Cis3NjQxMSA2N2MwZjkyY2U1NWM3N2JhMmU2Y2Y3ZWFkYTQ0ZmFiNWY1OGJkZmViIGxlZ2FjeS10cnVuaworNzY0MTIgYTRkOWEzZGJjNTMzZmIyZWYyZTFmZDcwYzVhMmU2NDM2ZjMyNGEwOCByZWxlYXNlMjYtbWFpbnQKKzc2NDEzIDk4YWIzYWRiMDQ1Y2UyNmVhNmRmNjlkNDE2Zjk1YjA0NDAwMGM4OTMgcHkzaworNzY0MTQgMjI1NGM3ZGE5Nzc4ODA0NjMzMGVkOTFkNDRjOTBkYWVlODdiM2Y5NyBweTNrCis3NjQxNSA4MjM4MDgxNmU3ZGIzYjI2NDcxYzA2ODA2NTFiYWE5YzgzOTg2ZDU0IHJlbGVhc2UzMS1tYWludAorNzY0MTYgZWQzMGJjZmZhMTQ2NzJmMGUzMzQ5ZmMwNzdjZTU5ZGU3N2IwOTYwYSBsZWdhY3ktdHJ1bmsKKzc2NDE3IDZhYTUyOGM1MDEyODRjNWY3YzJkMTViMmEzOTY0MjEyMTdiNzM0N2UgbGVnYWN5LXRydW5rCis3NjQxOCA0NzViZjhiNTg0YTkyM2IwNDhmMjM4NzJmM2NlOWRiYjZkY2YyMTg0IHB5M2sKKzc2NDE5IGY5ZjM5NTBiNWVjNzU2NTIwNzFlNTE3OTkyMzQ4MGJjMWQxYzkxMDAgcmVsZWFzZTI2LW1haW50Cis3NjQyMCAxYzM1Mjc1MGViZjIzZjk1MTY2ODYzNmY4MTUzNzhkZTM4M2RhNDY3IGxlZ2FjeS10cnVuaworNzY0MjEgZjJkYTQ4OGI0YjdiMzkzNTZlMzQwNjdiZDJlZmRiNTQ3NTdlMmE0NyBweTNrCis3NjQyMiBjZDViMTVjMjlhMzk2ZWU5OWNkMGJiZjg0NGJhMzUzNGIzM2ZlYjg1IHJlbGVhc2UyNi1tYWludAorNzY0MjMgNmUzNzAwMTNmM2EwYTU5YTc5OTQ4YjYzM2IyZWU1YmYyOGNhZTNiNSBsZWdhY3ktdHJ1bmsKKzc2NDI0IDEzNzExNWUzOTVkOGRkZmI1N2VmZDQyMDRhZjRlMTE2YWRiZDZmODAgbGVnYWN5LXRydW5rCis3NjQyNSAxOGFmMGNlMGE1OGJkOGI2YmJjNzJhMjgwYTFjZGNiOTg5ZWEwZjBjIHB5M2sKKzc2NDI2IGVhZWJlMjQ2MDM3N2M1NWJhYzIwNzg5NWFlNTliZDI2YWEwMDU2NjQgcmVsZWFzZTI2LW1haW50Cis3NjQyNyBmZDZlMmFiYWUxNGU0MmY1MmZmNjg1ZmIyZDY1MDQ0MzVjMTI0ZjMxIHJlbGVhc2UzMS1tYWludAorNzY0MjggZTJiMmNlZWZhODJhY2ZkYjVhOThiOTQwYTNkMDQwMDMwOWNiYWZlYiBsZWdhY3ktdHJ1bmsKKzc2NDI5IGU4M2UzZGI2MmZjNzhkNGUzZmRhYThmMzY1ZGU3YzMzMjdjNGQ3MmUgbGVnYWN5LXRydW5rCis3NjQzMCBlM2M5OTRjMjlhMjI5MjdhMjk4NjljYjQwNWJhYTY1YzAyYzVhMWZiIGxlZ2FjeS10cnVuaworNzY0MzEgYjgxZDYwMTEwZjg2Zjc3ODEyMjllNWQwM2JkMDEwMjMxYTA2YmUyNiBsZWdhY3ktdHJ1bmsKKzc2NDMyIDJlM2VjM2JiNGJlN2NiZmQyYTZkZWJlMTAyNmFmMmZhNTMyNzM1NmUgbGVnYWN5LXRydW5rCis3NjQzMyAxZDkyM2ViYjQ3NjAwZjhhMzFjNjg4YjFlZmI2M2ZkZWEzYzJmZTNlIGxlZ2FjeS10cnVuaworNzY0MzQgN2E1Y2I0ZGVjZjZmMjhlOGE1ZjA5ZDkxNGFjYmUxZDI4N2E1Y2NhOCBsZWdhY3ktdHJ1bmsKKzc2NDM1IGI4YmQ1MzYwODQxYmFhNWRlNWI5ZmMxMThkY2QzMjMwYzVmOGU2NjUgcHkzaworNzY0MzYgNWFlZWVlMGVhZTVmY2Y1MzZiZTMzZDg2NzBmYWIyNDZjOTgyODE2NSByZWxlYXNlMjYtbWFpbnQKKzc2NDM3IDYzOWJhMDM2YzIwOTQ4YzQ4OGViN2Y5NDM3YTIzZjZjN2YxMmJjYzQgcmVsZWFzZTMxLW1haW50Cis3NjQzOCBhZjg4YjFkMjViZjI4ZWJjOTU1MWU5NTE4MDE5YzZhZTEwMGRlNDYwIGxlZ2FjeS10cnVuaworNzY0MzkgNTEzYzRiMTU3NWYyNjcwMmJjMzFmZWZlNzA0MWZmNDVhZDkxODYxMSBweTNrCis3NjQ0MCA0Yzg3MDhhNzkxZTYwMzJlMDI4Y2Q5NTRiNDQwNDk0N2Y2ODk2YzQxIHB5M2sKKzc2NDQxIDRkNTU2YzI3OTI2YTYxYzczMjc2N2FlZjIwMjMyYjJlMjlhZjE3MDMgcmVsZWFzZTMxLW1haW50Cis3NjQ0MiBkY2JjYzhjMTQxNzkzNTAwNzc3NTRkNzMyZTA2Y2VkNGMxNjQyZjVhIHRhcmVrX3N5c2NvbmZpZworNzY0NDMgNGUyNzBlYWI0NTJkZjMwODE0MGE5YjVkNzZjMDU2OTNmNTAxNjc0YSBsZWdhY3ktdHJ1bmsKKzc2NDQ0IGQ2Zjg1NTJmY2U3OWZhZmQ0YWExZTNjODZlODU2Y2NkMDJiMzAxZjEgcHkzaworNzY0NDUgYmM3NjQzYTdhNWU3YjI4N2ZmM2M5ODc2MzcyY2I2ZGI4MDZkMjhiNiByZWxlYXNlMjYtbWFpbnQKKzc2NDQ2IDBlZWIzYTNlNzllZjg4OGY3MmE4YmE3YTMxMGM4OTdkN2UyZGVmMTEgcmVsZWFzZTMxLW1haW50Cis3NjQ0OCBlYzUyYzQxOWI4MjRlMWM1ZTA4ZjNhOWJkNDc4MmNlMDY5MzllZDJiIHB5M2sKKzc2NDQ5IDM3M2Q0MmYyNmU5NjZhN2RhODA0OTE5NmUzNGQzNWEzNjI4NjhjOTEgcmVsZWFzZTMxLW1haW50Cis3NjQ1MiBkZTA3ODgwYTUzZmZhNzkwNGIzM2UzM2RhMDY1ZjM1ZWYyMTAxYjI3IGxlZ2FjeS10cnVuaworNzY0NTMgZDZjZTE4YWQ4NDY3MTY5ZTE4MmVhN2UyMTVkOTA5YjQwZThmMzYyZCBweTNrCis3NjQ1NCA1NmYxOTA4MWQ3YmNlOTdlY2QyYWMwYTVmODJlMzE3NGZlZjQ5NTdlIHJlbGVhc2UyNi1tYWludAorNzY0NTUgZTFkNzMyNTI3YzdlMzQ0NTdiNzlkZjA3MDYwNGNiOGNhNzllNGUzYSByZWxlYXNlMzEtbWFpbnQKKzc2NDU2IDI0OGM0ZmE1ZmUwYzk4Nzk1YTgzNjFjYmIzODUzZmFmMmNkYzhmNDQgbGVnYWN5LXRydW5rCis3NjQ1NyAwODY5ZTFhYjU3MmUzN2MzMzU0OWEyYmQ3NzIxM2Y2NDdiYjQzM2Y4IHJlbGVhc2UyNi1tYWludAorNzY0NTggYzQ4ZmQ2M2MyZjYxYTA4YjAyMmQyN2EzM2ZkMTI4NDA2MWM1MGZhZiBweTNrCis3NjQ1OSAwOTg0MDk5YTk0MzEzYjJlZmViZDUxMGFiYTUxMGExNmI1MDY0Mjc2IHJlbGVhc2UzMS1tYWludAorNzY0NjAgNzA0MjE0YjljYjc2Yzc3M2QxMDk1ZTc1MDFjOTZmNTY2MTk3NDhkNSBsZWdhY3ktdHJ1bmsKKzc2NDYxIDI2MzllYTdiOTJlZDA0YzY5NmU0ZDc1MGQyMTMxZmU5YjkxZGFlZmUgcmVsZWFzZTI2LW1haW50Cis3NjQ2MiBhZGE1ZjZlZWUxY2IxMjFkNDM3MmJhMmQzOWJkY2I3YzhiNGExZTYzIHB5M2sKKzc2NDYzIGMyZWNjYTVmZjY1OTNjZGIwOWI0MGM0MTUyNDU5MjdiMTRlOTUyNWYgcmVsZWFzZTMxLW1haW50Cis3NjQ2NCBmNTU0ZGZmZjc0NTA1NzY1NmY1Y2E3MzIwZDg3ZjZkZTM2YjUyNTViIGxlZ2FjeS10cnVuaworNzY0NjUgODA4ZjljMGQ0YWM0MDBjYmY1YjIwMzljMDM3YjFjYTRjYTRmNWZjZCBsZWdhY3ktdHJ1bmsKKzc2NDY2IDVjZDk1ZTU3NzcyYzgwYzdmYmI3NWVhZTViZWY3OGJjNzQ2MThkYzAgcmVsZWFzZTI2LW1haW50Cis3NjQ2NyBjOGQ2OWEwNmIzM2JiZjYxNjQ5YTkwZDM2NzcyMWI1Y2U3NDYyY2ZkIHB5M2sKKzc2NDY4IDgxOGNkNDBkZjg2NWYyNjc4MzEzMGQ1MDNhMmI2NTA1NTIxNTc2NzkgcmVsZWFzZTI2LW1haW50Cis3NjQ2OSBhYTk2MjdjNDEyMjJjYWEyYTRhMmZiNmMxZDA4ODA3MjFlNjMzMzdmIHB5M2sKKzc2NDcwIDNhMmIxNDlhZTY2ZTgxNWYwODNmMjM2YzAzMmNiOTk0MzUwMTkwODkgcmVsZWFzZTMxLW1haW50Cis3NjQ3MSBmMDE3YTM0ODY0ZTJiYTUzNzAyOTg2OWQ3YTg5ZjQ3ZDZiNGFhOWE4IGxlZ2FjeS10cnVuaworNzY0NzIgYTdlYjFhZTRlOTE5MDRiYmU0OWZjM2M0ZWFmNGUxZTBmZjU1MjZkNSBsZWdhY3ktdHJ1bmsKKzc2NDczIDMwMTdkODJmMDc1YWNkYjExNGE2YzllYjBlNTE2MzgyYWUyNDU1NjcgcmVsZWFzZTI2LW1haW50Cis3NjQ3NCAwOGEwYzk1ODhmMTNmMGY1ODVjNzlkMTFmMjA2NmUxNjViYTQyZjlmIHB5M2sKKzc2NDgzIGI5YjY4M2VlZGVlMTE2NzkwYzAxZDc1YjU1NjFiZmYwMTAyZTgwYzYgbGVnYWN5LXRydW5rCis3NjQ4NCA1MTE2ZWY3NzlhODAxZjFjZGIxMmFiMmU3OGVmNmUyNzQ5OTUwZTEzIHJlbGVhc2UyNi1tYWludAorNzY0ODUgMzU3YWQ5MGI4MTE0Y2Y0MGY3MmJjODg4Y2VlYzdhNjRmYTg2N2NlYiBweTNrCis3NjQ4NiBiN2ZiZWYwNzdlYWUxM2NiNTBiZmFlODhhYmM5NDZmY2FmOTk0N2Y0IHJlbGVhc2UzMS1tYWludAorNzY0ODcgMzk0OGI0YzcyOWQ3YWU5NGFkNzVmNjQxZmM0M2ZjNzRiNjY5ZWJlMCBsZWdhY3ktdHJ1bmsKKzc2NDg4IDUxNmM2MjJhNGY5ZTEzODJjMjZkMzc2N2IxNzA5ZjhlZjM4MzAxZTEgcHkzaworNzY0ODkgMzM3ZWJiODI5YjhjYTJlMzc3MjE0MWE4NGEzZTc4NGM5MjVmM2I2OCBsZWdhY3ktdHJ1bmsKKzc2NDkwIDlkY2EzODQ3NDg1NDljODZkODQ2ZDFlNWVkMzMwYTYwOWFlNTZlZTggcmVsZWFzZTI2LW1haW50Cis3NjQ5MSA1MzVlMDhjZTQzZjU3OWNjNmU5NjRlN2JlZTgwYmE0ZmY3MWQ1NGQ3IHB5M2sKKzc2NDkyIDU4YjExOTFlNDUxZmEwMDNmZTMzOWFlMzk0NTUyM2MwZWRhYmVkMjYgcmVsZWFzZTMxLW1haW50Cis3NjQ5MyA2ZjA0OGIxZTUyODA2MjMyM2Y5ZTUxYjkwZjY4ZjY0OTc5MjdhMGI4IHJlbGVhc2UzMS1tYWludAorNzY0OTQgNzY1OTA5ZmM3ZGVjOTZlM2VlNGUxMTgzOTk4MTY2MDVmNzg1N2E5OCByZWxlYXNlMzEtbWFpbnQKKzc2NDk1IGZiZWY1ZmNjYjBjODhmOWNmYmQwNzU3NjUxMDVlMjQzNTkzNWMwMmIgbGVnYWN5LXRydW5rCis3NjQ5NiA4M2Q5NGU3MmYwMWNmZmEwYjI2MWRkNTVjZjlhYTQ0NGVkOGZhODFhIHJlbGVhc2UyNi1tYWludAorNzY0OTcgZmI3OTk0YjI5MTAxNzNhNGM3YWUxNDIxMWIwN2IwOWFkY2FhOWJmMiBweTNrCis3NjQ5OCAxN2U1OTBiZTRjNWFhMmE2NjhlZTQ5MWEzN2FiMTk4NGY0YWVjY2U0IGxlZ2FjeS10cnVuaworNzY0OTkgY2IzZWFjNDIxY2Y5NmVmOGUxODM3NGExZTIyZjIxOGNhMmEyMjlmYyBsZWdhY3ktdHJ1bmsKKzc2NTAwIGI1MWZkYTc1NGY1YTVlMzE3MDRiM2ZlMzEzYzlhZmE3N2Y4MjJmZGMgcmVsZWFzZTI2LW1haW50Cis3NjUwMSA5ZTc5YTZhZmEzZjUzMTAwYjZhYTQxYThhZDY4MWUzZmYwMWNjMzY5IHB5M2sKKzc2NTAyIDJjZDFmYjEwNDIzMzQ4MWExMGU1NzBmNzY5N2NhYjg0Mzg5ODc5ZjQgbGVnYWN5LXRydW5rCis3NjUwMyA5MDI4MjgwNGNkNTAxNjdlYTBjMjhiNDliZmJjOTE0MDY5M2Q4Yzk5IHB5M2sKKzc2NTA0IGFkNTE2OWUwNWRjM2IzOGE2OThmZDYzOTRlYWNhZmMwMTUwNzc0ZmMgcmVsZWFzZTI2LW1haW50Cis3NjUwNSAwMThiMjBiMDM5YTg1NGI1YTE2ZWNmODBmYjczNWM3ZjE4OWZiYzFiIHJlbGVhc2UzMS1tYWludAorNzY1MDcgNWVhMjI2ZDMyZjZkNzdlNTgxOTdlNTZiM2UzYTVkNmM2ZDk4YzlkZSBsZWdhY3ktdHJ1bmsKKzc2NTA4IDFkMTU3ZTJjZTk0OTNmNDgzNDg2ZmFkMjkxMzFlNjc4OTQ4ZjBjYmEgbGVnYWN5LXRydW5rCis3NjUwOSA4NWNkOTM1MjU1Njg3ZDNiODAzZjQ5ODY1ODQ0MzQ1MzYyYzU3MjM0IGxlZ2FjeS10cnVuaworNzY1MTMgYzc3MzJmODg5YzQ1NDhhZTcwY2Y5YmQxODhlMzNhYmI4ZmRkM2I3OCBweTNrCis3NjUxNCAwMjJjZDBmM2M1NThlZGRlMTY5ZjZiYTU2MmM3ZDE0MTUzNTZjYjQzIHB5M2sKKzc2NTE1IDBkYjY3MTUzZDI1ZjE0YzNlOTdjN2Q4YmYxMDk2Yjg5MWJlMDY4OTcgcHkzaworNzY1MTYgMTM4NmQwZTllMGZjN2E0ZDYxN2Q4MGIwYmRhYjFiNDBkZTYzZDQ3NiBweTNrCis3NjUxNyA0MWJkMzEyMzg2NGQ4OWQzNTExYmJiNzc1ZTVmZTQyZmZhM2VlZTZlIGxlZ2FjeS10cnVuaworNzY1MTggZTViYzM4MmNjZjc1YjFlZDhhMzBjYTdmYjVkMjQ4OGQyMzE2MzM2MSBweTNrCis3NjUxOSA1MDg2NTRjZWUxMzdhOGVkMTU4MTVhZTczMGVkZjgwYTE4Y2EwNDEwIHJlbGVhc2UzMS1tYWludAorNzY1MjAgZTYxMzNkMTU0Zjk4MTljNjQ5ZDhlYWRiY2JmZTQyZTQ4Y2YyMWUwNSBweTNrCis3NjUyMSBmZWE1MzI1OGFiN2ViZWVkMTA4ZGM5NzFlYTkzNjJhYWU0ZmZhZWU4IHJlbGVhc2UyNi1tYWludAorNzY1MjIgZGY4NmM0MjBlOTdhMGNjMTU3YzY4N2U4ZjNiODJhYzJjMDVlZDdkZSBsZWdhY3ktdHJ1bmsKKzc2NTIzIDg1ZTFlMTNiNDk4YTcyYzAzMmQ4MGQ5MmY2YTlmZTU0ZWM2OGY4YmEgcmVsZWFzZTMxLW1haW50Cis3NjUyNCAyZDM4OGQxYTgzZjQyZTI0NDZhZWY4ZThjYzFmZTRmMjQ0NjlhZDk3IHB5M2sKKzc2NTI1IGExZDE2NmFiMThjNDRiYTYzNjNhY2NiOWVmMmZmYTRmMDQ0ZjM4YzAgcHkzaworNzY1MjkgYTY5ODFmNGE3NGExZDg2NmMwOWI1OWVlN2NhMDYwM2M5NGVjMGFmZiBsZWdhY3ktdHJ1bmsKKzc2NTMwIGE4NTQ3MWM0NzUxNDhkZjA2NzdhOTEyMTlmMTY2YzhiOGQyMTVkNzcgcHkzaworNzY1MzEgNjFlNmNlNzE4NTAwODljMGQ0ODI5NjhkMWFhMTdiMjg4MjRhMjEyMyBsZWdhY3ktdHJ1bmsKKzc2NTMyIDNmNzFlYmU5MWY5MDU1MDVjOWU1MGU2NTZiNjkwNTg4NWYwOGEzYzYgcHkzaworNzY1MzQgYzU0NThiYTM4OWQ3NjU5ZjhlOTEyMTQ1ZjhjNDRjZTA3ZjU2NTVjYSBsZWdhY3ktdHJ1bmsKKzc2NTM1IDdiNzRhYmI4MDM1NjhkYmU3ZjUzMDhmOTMzYWIyYzk0MzlkNWQ1YTcgbGVnYWN5LXRydW5rCis3NjUzNiA3NDIzMGU1YWIzNzM5MDU1OWM5YTQyZjIyZTMxNTdmZjcyZjg4ZmIzIHB5M2sKKzc2NTM4IDQ1MjFmNTk5OGU3YzYyZTk0MTM2MDM5OTgzOWZlODNlOWZjY2FkMTIgbGVnYWN5LXRydW5rCis3NjU0NiBhOGFiNjNmZDMwOTg5N2MwMDM1ZDJjMzczYzM2ZjAxODdiMTA4MzM4IGxlZ2FjeS10cnVuaworNzY1NDcgYzkzNjkwOTJmZWZjZDQ0NWI5YzU2M2RlZmZhMmMxZGYwYTYwZTQyNyBweTNrCis3NjU0OCAxMzc0OGYzZGRjN2I1NDliNGViNmQ2NmE2NTk5NTIxZDY2NDRmMTliIGxlZ2FjeS10cnVuaworNzY1NDkgYzdkN2Q1Y2E4NDQ2NGYyYWNkN2MwNGRhZDFmZjU0ODlhNWZmOTEzNSBweTNrCis3NjU1MCA5ODhkYjBiYmVlM2EzZTBhOTQ2NjZlY2Q5MDQxMGQ1Yzk0OTZjNzdlIGxlZ2FjeS10cnVuaworNzY1NTEgNjcyMWQzM2YzY2QxZjNhYzZkZDE2YmYyNDhjYmFlNzI3ZmI3N2JkMSBsZWdhY3ktdHJ1bmsKKzc2NTUxIDUzNjY5Y2JmMGVkMmE5YjI0OTczM2VmMDY5ZGUxNGIzN2I3MTVlYjggcmVsZWFzZTI2LW1haW50Cis3NjU1MSA3MjZkMTJkYmExZjYwZTNkYjE0ZmYyNDQwNGYzMTZjYjgwYTU4ZDdmIHB5M2sKKzc2NTUyIDRlZjdiM2UyZDZhOGIwYjBhOWI3YzhjMmU5OGYzNDQ5ZTZlMDNkMmYgcHkzaworNzY1NTQgNTI3YjdjMDc1ODQ5ZmJmNjQ1ODdhNTQ2YzM0MjcyZDk5YjZlNGMwNiByZWxlYXNlMjUtbWFpbnQKKzc2NTU1IDU3NGRkOGFjYTkxNGU0NDNiNjY3NWVlN2I1YjZkZTkwODg1ZjE5MzQgcmVsZWFzZTI0LW1haW50Cis3NjU1NiA2ZTc0MDNhZDUzMzVlYTRkMTJkMjZlMWFlYzAyNzUzYWJlNjViY2UxIGxlZ2FjeS10cnVuaworNzY1NTcgZmRlNTEzMGJmNmNkYmQzMmM5ZjRhYThmNTNlMjBhYmJhYjIwZjM4MyBweTNrCis3NjU1OCAzMzk4NjY0ODYzMGJjNGMwOWYwMWZkYTE3NGQxYmMwMjQ2MWQ2ODJiIGxlZ2FjeS10cnVuaworNzY1NTkgMTgwMjRkMjk4NjljYjFmNWQ1ZTA5MDFlYzIwYWJiYjQ3YmVkNmY4ZCBsZWdhY3ktdHJ1bmsKKzc2NTYwIGM0YzNmZDU5M2IwYWMyOTZkMzg1MmFhNmM0ZTBhNWQyODdmYTRiZDUgcHkzaworNzY1NjEgMjk3ZGY3N2JhMzk2NDcwNjk2ZmE1ZWIyN2Y3ZmFiMTgzYzE4Nzc5MSBsZWdhY3ktdHJ1bmsKKzc2NTYyIDY5NmQ5NjE1YTIzODNiOTUzYmFhNjc2ZDIyNDExNGRiYThiMzdlZjUgcmVsZWFzZTI2LW1haW50Cis3NjU2MyA1YjYwN2NkOGM3MWJiNThkYTNmYzg3OTZlNzdiMTAzYzIwY2ZiODNkIHB5M2sKKzc2NTY0IDNkMTE1NzgyZmUxYmIwNGYxMWE4M2UzNGQwYWU0NzM0M2UyN2E3ZDAgcmVsZWFzZTMxLW1haW50Cis3NjU2NSAwYzE5YmU0NTBlNjdhMDFlYzRhMmQ2ZjEyM2Y3YTRjN2IwZTU4ZWY5IHJlbGVhc2UyNi1tYWludAorNzY1NjYgY2I4MzYzMDFkYjYwNTdlZGRjZTQyOWIzMjBhMGQ0NDQ3MGM5NzNiYSBweTNrCis3NjU2NyAzZDc3ZDdjMTZjOTA5Nzk2YzdmMmFmMzdlYjFlZmJkZjg4Njk3NTIwIHJlbGVhc2UzMS1tYWludAorNzY1NjggMTRlZTc1Yjg2YTVmMDQxZDUzMWJjYjQxZTYyOTQ3YmRlZWNmYzdkMSBsZWdhY3ktdHJ1bmsKKzc2NTY5IDkzNmI2ZjA2NTU5MzhiZWMwNDI3YzM5YTJmMjg2NzM5NjMzZDg4MDcgcmVsZWFzZTI2LW1haW50Cis3NjU3MCA5ZmQ4ZTk1YjRmY2UxN2RiMzU1ZWZmYzExOWQyNzE4Y2MyMTgwNDNiIHB5M2sKKzc2NTcxIDgzYzcwMmMxN2UwMjE4ZGY5NjU5MmViMjdhOTdhOGJhNjNjNzQ3ZTAgbGVnYWN5LXRydW5rCis3NjU3MiA5MTZhM2QzNTA3NDFjN2Y2Y2ZlODg2MDg4MmI0MDkyOWJkYWQxYjBhIHB5M2sKKzc2NTczIDE0OWMxYTdlNzJjMTU0NzJmMjliOTI4MGRjZjc4ZmM5NTUzMjRiYTEgcHkzaworNzY1NzQgNGJlZDc5NmVlMGQ3ODY5YWQyZmYwMDExN2VlZDFjZDk4YjNhMTdkZSByZWxlYXNlMzEtbWFpbnQKKzc2NTc1IGUwNmMzZjYyZmNjOThjMDEyNmEyMmEwZmRmMWJiNjZlMmExNWQ5NWMgbGVnYWN5LXRydW5rCis3NjU3NiA4MzM1MmVkOTIyOWEzZjYzMGEyMzgxMjMwN2M4YTk0N2U1ZmRhOWY1IHJlbGVhc2UyNi1tYWludAorNzY1NzcgYjBmYzU0YzVkMjM0ZjdhNDkwZjk1NTA0OWFmODc1MDVlMjdiMjkyNyBweTNrCis3NjU3OCBmMmUxYWM3NTBmMTE4NTM0ZWQwMjg1OTEzZWYzNWQwYzE1NTg5NjQ4IHJlbGVhc2UzMS1tYWludAorNzY1ODMgOTMwYWVkZWQ5MDBkYzlkN2E3Mzk5YTNkZDZmMjEzODdmYzlhYWY1MiBsZWdhY3ktdHJ1bmsKKzc2NTg0IDlmYjZkNTQxNGRkODgyZTgzOTk2NTRlZTBlMDAzZDdhMTFhY2M5NjggcmVsZWFzZTI2LW1haW50Cis3NjU4NSAwZWFmNWM5ZWRkNzI4ZjI3Yzk4ODIzOWNiYzIyYzkyMzk5MjNkOGFiIHB5M2sKKzc2NTg2IDkxNWEwNDRiZTgzNGNhZDJkZDRjNDViMTJmY2RjODVhNTM4ZDdkMTcgcHkzaworNzY1ODcgZThkNTUwYTg5ZjBiYTExYTY1MzVkYjcxYThmMzM0ZGNkYjQ1YTBkZiByZWxlYXNlMzEtbWFpbnQKKzc2NTg4IGE5NDkyNTVkNDUwZmJhMTY2ZGQwZWFjYWE0YThlMDVlOWRjNzZlNDcgbGVnYWN5LXRydW5rCis3NjU4OSA2Y2Q0NWY1Y2FiNThhNzNjOTQzNmIxNjcyOTQ4MWM0ZDU1MDlmMWIzIHJlbGVhc2UyNi1tYWludAorNzY1OTAgZTk2MDY5YTEzMjdmOTM2YjVlNzgxZjQ5NDIxZjQwZjE1OTRmNjYxOSBweTNrCis3NjU5MSAyMThhN2ViNDBkMjZlMzgzNGEwMjU5YTgxOWMxOGE4ZTI2M2M4ZmQzIGxlZ2FjeS10cnVuaworNzY1OTIgZDUxMDEyZmUwOWIzNDI2MjA2ZDAyM2FlMzg3NTRjNTRhNjU3NTUxZSByZWxlYXNlMzEtbWFpbnQKKzc2NTkzIDZiZGVkZTE4ZmM4MGRmNmQ2YjZmOGI3YTkwZTc1ZTA2NWIyOWNkZGIgcHkzaworNzY1OTQgOWU1MWExNDk5OGEyYTYwMWJiY2EzNTM1OTI4NzgyOTUxN2E2Mjk5NCByZWxlYXNlMzEtbWFpbnQKKzc2NTk1IGYzN2Y2YjliMjI0YjA3OTA1ZWQ4ZTI4ZTVkYmY0Y2Y2ODAyMjE5ZTIgcHkzaworNzY1OTYgNzRhYzhjMTI3YTZmZjE2ZWEwMWFlMTFlZWEwODlkN2Y4MzU2YWQwNyByZWxlYXNlMzEtbWFpbnQKKzc2NTk5IDFmZjJjM2VkYzEzY2U4NzJmYjFiY2Y2ZjYwZDVkMjM3MTZlNTY4ZjAgcmVsZWFzZTI2LW1haW50Cis3NjYwMCAyODE2NjUwZDc2ODhjMzAzODRmNzNlOTgxNTNlODc5NmY4ODA0Y2FhIGxlZ2FjeS10cnVuaworNzY2MDEgODRlM2QzNmRhNGMyNzBjNmVmMzZkMzk4ZDI4NDg5YzQ3Yzg1ZDgyYSB0YXJla19zeXNjb25maWcKKzc2NjAyIDBjZjk5MTU4ZmE2MzYwMDE3MjdmZjg1ZGJjMDNmZGExYzAzNTI5YjMgbGVnYWN5LXRydW5rCis3NjYwMyAzMTVlNmFlNjRiZWY3YWNkODUzOWUwODRlN2Y2ODVlNGRjYzZiNTAwIGxlZ2FjeS10cnVuaworNzY2MDQgZmYyYWVmYzk3ODgxZjI1ODQ0MzVmYTExNWZiOGM2MzU4NDZjMWMzOCByZWxlYXNlMjYtbWFpbnQKKzc2NjA1IGUzMjBmODhhNjVjOWFjYjM4OWY2Yjg0ZGI5OTkwOTM4ZTFjZWQwNWMgbGVnYWN5LXRydW5rCis3NjYwNiBkZGFiM2RhOTQ3M2RiNTg3NjI1M2MwYjE3ZjgyZDU2MDJjNWRiMDY3IHJlbGVhc2UyNi1tYWludAorNzY2MDcgODg5NmM0ODQ3NDIzZDU4YmRjMWJkZDMzYzFiNDJlMWJkZWM2ZmFhNiBweTNrCis3NjYwOCAwYTYxMzc5NDRlNjFhMDc2N2RjNmE1ZGZkZmNiZWM3NGZjYThhN2E0IHJlbGVhc2UzMS1tYWludAorNzY2MDkgNjUzNmExY2Q0N2NkM2VlODFmNTc1ZTM5NzRmNzg2ODM1YTYzY2Y3YyBweTNrCis3NjYyMyBkOTllZjQ2NGVmMzNmZWY2MzBjYTg3MmZmN2Y4N2Y0NTM5NzJlODJlIGxlZ2FjeS10cnVuaworNzY2MjQgNGQ3Y2RmN2E2Yzc1ZGI1Zjc3YWY4YmVmYTAxNGUyZmI1NGVmMGU3OCBweTNrCis3NjYyNSAxYjJhZmNjM2NjZjM4YTgzYjcxNTNhYmE4YWVlM2NmZjAwY2Y5MWJkIGxlZ2FjeS10cnVuaworNzY2MjYgNWQyYzlkODg3N2RkYjlhM2FlYjE1MTNkZTZhNTFkZDRmNjg1YTA1YiBweTNrCis3NjYyNyAyODAzNjk2Nzc2MDJjNmJlNjkzNmYwOGM0NDRmMTI1ODdlNmJjODRlIHJlbGVhc2UzMS1tYWludAorNzY2MjggY2Y5YzY0OWRjYzRmNGYyMTkxNGFhNTA0MDk0MmI4OGQ4MGRkNTE5YiBsZWdhY3ktdHJ1bmsKKzc2NjI5IDhmNmVlZTQyZjgxMGRjZDYzMGNjNGNjYmY2MzkxYjRkYzVmY2M1YzAgbGVnYWN5LXRydW5rCis3NjYzMCBjYmI2ZTkyYzFhMGRkMjU0MTliNDM1MzlmMDgxMzFhZDAzZWY2ZTczIHJlbGVhc2UyNi1tYWludAorNzY2MzEgZDkzOThiZGQ0MTNhMDMyNTMyYTVmNDM0YmFiZjU3OTkwODgzYTlkOCBweTNrCis3NjYzMiAwZmY0NzAzNGM2OTFjYWIzYzI3YjhiNjU1OThmZTI4NDNkYTRiYTk1IGxlZ2FjeS10cnVuaworNzY2MzMgZDY4YTYwMDUyYzY2NTA2NWQ3NTYwMmU3YzExNzFkYjNhZWI0MjUzNiByZWxlYXNlMjYtbWFpbnQKKzc2NjM0IGI0MDUxMmNlYzJkNmM5ZjAzN2QzN2VjYmViNzY3ZTNhZWIzM2ZiM2IgcHkzaworNzY2MzUgYWNmZDU2MTViNTJjMTRjODJjYTE0OGM4ZTEwNmRjMjQ4ZjllNThkNSByZWxlYXNlMzEtbWFpbnQKKzc2NjM2IGE1NGMxOTgwMmFjY2NhZmE5OGQxZjU2ODRhODUzYmQ4YzZmZDI0YWUgbGVnYWN5LXRydW5rCis3NjYzNyBlOWRhYzNlZmYzMTc0M2I1MTUyZDg3NGUwOWU4NTRhYWRjYTdhMWU3IHB5M2sKKzc2NjQwIGQ3Y2M5MDE3YWM0YzY2MDE5NWUxNTQzMzIyN2JkYTE0MWVlMDAxNmQgbGVnYWN5LXRydW5rCis3NjY0MSAwYWY4MTgxZGE1Y2U1MTUxNjE4Y2E5ZjU4MzcxYjIzMGRkY2I5ZWI2IHB5M2sKKzc2NjQyIDI2MmEyY2VhZjA1ZjFjZGQ2ZWU4NzZkNTJlODhiYTJiNTA1ZTJhN2UgbGVnYWN5LXRydW5rCis3NjY0MyAxNWFjMzE5MWY5YmUwNWE0NWJmZTA3ZTdiZDYyNWNhMGM2ZmU0MjgzIHB5M2sKKzc2NjQ0IDgxODA5MjVjNzViYTUxOWNiNDU1MTk1Y2Q0OTlmNzliOTQwNGI0MmQgbGVnYWN5LXRydW5rCis3NjY0NSBiNzlkMDQyMGMyMDQwZDgyZDdlODY2N2E5NzY1ODIzNzE2NTRlYmY1IHB5M2sKKzc2NjQ2IDVjNjgxZWNjOTk2N2M0MWRmOWU3N2VjYzU0NDk3NTIwNTdmN2QxYzUgcHkzaworNzY2NDcgYjYwZjJiMmI5YzA0NTRkMzQxZWFiZTM1MTYzMmJlNGFhZTQwYTdkMCByZWxlYXNlMzEtbWFpbnQKKzc2NjQ4IDc1ZTFiOGMwNWY0M2Q0YWU0MmQ0YWUwZjQ5MWY2NTQ1Y2FjYTFjNDMgbGVnYWN5LXRydW5rCis3NjY0OSA5MTcwNThlZWE0NDAyNDk5Y2ZmMjY0ODE3ZDUzZGE3ZmUyMTIwZTQyIHJlbGVhc2UyNi1tYWludAorNzY2NTAgZmRmN2QwZWM5ZDA0MWI0NTFjNWIxNjAxZDA4Y2IwZWEyZjA1N2VkZSBweTNrCis3NjY1MSBiNWNkM2QyZWMwMjc2ZDI0OTAzODI2NWIwYjRkNjgxNjkwZDY1NjQxIGxlZ2FjeS10cnVuaworNzY2NTIgOTY5NTRlN2RkOWI2ZTIxYzY4ZTU1NTA4ZjgzYWQwM2Y5NjY0YjI2NiByZWxlYXNlMjYtbWFpbnQKKzc2NjUzIDExNDM0YjYyZDhjZDgwNjJmZWRhMTU4Y2ZmMzQ4MGI4NGI5M2VjODkgcHkzaworNzY2NDcgZWY5ZjQzMmU0ZDM5ZGNkOTQyMmNhYWIzOTE5YTZlZmM0MTNkZTJhYiByZWxlYXNlMzEtbWFpbnQKKzc2NjU1IDFmYTE4NTQwMzFhYTJhNDYyOTY2NjM4MTU5NDY0NzU4NmI4Nzg5Y2QgbGVnYWN5LXRydW5rCis3NjY1NiBmMDQyZGI0MzQ2MzgzOTJjOTM5NzY1NDRkYThiN2YzNWVjN2RlYTZlIHB5M2sKKzc2NjQ3IGQwMGVjMjYwZDYyYWE5YzliMWM0MDQxYjAzZTM3NmM1YzAyNDM2ODAgcmVsZWFzZTMxLW1haW50Cis3NjY1OCBiOGUyOTIzNjllYThiODJjZjE5ZTVjMjY1MmUzODllYzY0YWNiZGJhIHJlbGVhc2UzMS1tYWludAorNzY2NTkgZDMxYjMzNTBhYWRiZTYzMGUwYTI2MjdjMTJiM2MwZWJkMzZmNWI3ZSBsZWdhY3ktdHJ1bmsKKzc2NjYwIDFlZTFmYTdiZWNmMmFkMjNlZTI5YjIxYjQxNTczYmM0ODNmMDcyNDMgcmVsZWFzZTI2LW1haW50Cis3NjY2MSA1OThkZThlNmM0OGIzNDZjMmU2ZmU4MzU2NWZiNDQ3MjAzM2ZkMzA1IHB5M2sKKzc2NjYyIDlkZjRkNWI1MjYwOWNmZTRkYjVhMGNkNzRiYTIzZWViNDc4MzAzNGIgcmVsZWFzZTMxLW1haW50Cis3NjY2MyA3MzMxMzg4NTgxNTc0ZTdlYmIzNTBiNGNiMjZmNTcxMzEyMWQ3NDllIHB5M2sKKzc2NjY0IDNlYzZiNTFjZGJkZGJiNzE2M2YzYTlkNmZlMzY0MTgyNjlhM2U4NTEgcmVsZWFzZTMxLW1haW50Cis3NjY2NSAwNDBjMzhlZDIyNTE1Zjk3MzQyODcxNWE1ZjE0NDNkNzVhODc2Y2ZjIGxlZ2FjeS10cnVuaworNzY2NjYgZDU4N2E0ZTViYTVhNTk0OTFlMjUwMDlmYjM5MWVjMmE5NjMwNzM3YyByZWxlYXNlMjYtbWFpbnQKKzc2NjY3IDczYTkxMjU3MDNjMzJhYzI0NjEzZmM4ZjhkNjE4YmIxYWMwYzdkYTQgcHkzaworNzY2NjggNTVjODMyYmQzMjMzM2ExYWYwMDE3OTZlOWM0NTQwODFkZGQwYjNmZiBsZWdhY3ktdHJ1bmsKKzc2NjY5IGQzMDgwMjllOWFkMjJiNWI4ZmE0ODkxMTQ0NjQ3MzEwMDQ3NzYzYmMgcmVsZWFzZTI2LW1haW50Cis3NjY3MCAwZmU4OTg3NWVkZWYzNDc2ZGMyNGFmZTI5ZWI1M2IwNjBmYjEwMDEzIHB5M2sKKzc2NjcxIDAxNDhmNzZkNmZjZGZkOWYyNTE5NmFhYTAzMTRhYThhNzNkMWRmYTUgcmVsZWFzZTMxLW1haW50Cis3NjY3MiA2YmI2M2JlNzI5OWNiNjNjYmU0MjBkMzA5Y2I0Y2ZiZTMxYjQ0MjIzIGxlZ2FjeS10cnVuaworNzY2NzMgNGQ3NDQ1Y2EzMDUxNGVmZjk1Y2E5MjY0YmNjNmMzNWY3ZWNlNTlhZiBsZWdhY3ktdHJ1bmsKKzc2Njc0IGI0MTA3ZWIwMGI0MjcxZmI3M2E5ZTFiNzM2ZDRmMjM0NjA5NTA3NzggbGVnYWN5LXRydW5rCis3NjY3NSBiOWU5ZDU0MGM5MGQzMTI5NmI0NWIyYmZkMWI1NzkxNDY4MGFiNmI2IGxlZ2FjeS10cnVuaworNzY2NzYgMzZhMGRkMjFjNWI0M2Q5YWU4NjljYzNhNTZkNDA3N2EwMmRhOWI4ZSBsZWdhY3ktdHJ1bmsKKzc2Njc3IGUxOWRlOTQzM2E0YmZlOGNmYTM4NmMxYmI4NWUwNzRlYjlkMDRjNTMgcHkzaworNzY2NzkgMjU1MzJjOTkzMmRmZmE3ZDkyZTQzNzdiNTFkNzViNmY5YjdmZTUzMiBsZWdhY3ktdHJ1bmsKKzc2NjgwIGVhYjEyM2RjMTA3ZjY0ZGMyZmUxMWYyNzNkZWY3OGIxODQ0NGQ0NTQgcHkzaworNzY2ODEgMWM5MmZiYjNiYWYyNmFjNWZiZWE1ZjQ3NTQzYWI4NzU5YTJkZDIyNSBweTNrCis3NjY4MiBhZDE0NTU1ODIyNmI4N2FlYzcwMmYwOTQ4YWU2MTE4YTMyZmZkNDM2IHJlbGVhc2UzMS1tYWludAorNzY2ODMgNjg1NjU4MTdjMTdmOTViZTQ0MWFjN2M5MDYyZmM1NWIxMjI4MTIwYyByZWxlYXNlMzEtbWFpbnQKKzc2Njg0IDZhNDhhMDkxYzBkMzg2Yzk0NmFhOTRmMDZkNmJkZGQ4YjlkN2Y2YWIgbGVnYWN5LXRydW5rCis3NjY4NSAxYzJlY2Q1OWQ2NWFmOTlkNzUwNDUzNmU2YmY4MTU5N2NlYTEyZTM2IHJlbGVhc2UyNi1tYWludAorNzY2ODYgOWU3NTE2MDFmNTM4MjdlMGVhN2UzMTMwM2Y1ZjZhZmM2Mzk0MGYwYyBweTNrCis3NjY4NyA1Njg2MThiNWY2ZmQ1ZDQ1NWNkMDhkZjRhMmI0ZGRhMDdmMjdkZGY2IHJlbGVhc2UzMS1tYWludAorNzY2ODggYTZiMWU2OTU5MzgyZTM1ZjQwYzE5MTU5N2VkM2RiYzgyODE0MDZhYSBweTNrCis3NjY4OSBlZWE4MDNkMjM1ZDM0MWNjNWJhYWIwYTg3ZGZjN2Y3MDEzODhlNWQzIGxlZ2FjeS10cnVuaworNzY2OTAgYmUxY2JjMTVkOWY1MWNjY2ZhY2NmYTcwMTY0MjZhNzc2NmFjMWU4OCBsZWdhY3ktdHJ1bmsKKzc2NjkwIGY5YmRiY2M4ZDFlOGU2ZWM4YzQ1ODA5ZjJiZDQwMzhkYmE0NjJiYTIgcHkzaworNzY2OTEgNjA3ZjUxOGJkM2NmYjgwYjBmZDZhYzc0NzZiZTVhMTU4MzlkMDY5NSBsZWdhY3ktdHJ1bmsKKzc2NjkxIGJhYzhlYTJiNmRhMzU4ODRlYWU5YWZjMTI5YjdlYTJjMTk2ZWJkZjkgcHkzaworNzY2OTIgODlmNmE3NTQ2MmIyN2VkYjE1MTIwYTg4MGZiNmEwMDk1MzBmN2NjMiBsZWdhY3ktdHJ1bmsKKzc2NjkzIDZlZjRiY2M0YTQ1MDIxNjZiNmM4MzRiMmI2YjI5YTFlZTMxMTVjNzYgcHkzaworNzY2OTQgNTZmY2UxODhjNmJlMDdlZmY5NDhiYTU2NWMxMzM2ZjVjYjAzZWViMCBwZXAtMDM4MworNzY2OTUgYzBmOGU0YTIzZGRmNGI5NDk1MjRhODU1ZDNiYTMyMmI4YjM2MjBkYSBwZXAtMDM4MworNzY2OTYgNjg1NTIyYzZmMzBmYmUxYjE2NTNmYTNjNDJkN2NkYmQ1ZDE4ZWEyNSBwZXAtMDM4NAorNzY2OTcgOWM1OTdiMGE2YTliNzFmODgwM2Y2NGUzNzhiZGFmNGQ0NzcwZmNhZiBsZWdhY3ktdHJ1bmsKKzc2Njk4IDM1ZjNhMTljNDI2NWE3NmM4MmE5YmZmZjBjOWZlN2ZiYTViNDgyNjYgcHkzaworNzY2OTkgZjVhNDQ3YjNmMjZlYmY0OTViZDU3MWNmN2U4ZjU5YTc5OTA1OTY4MSByZWxlYXNlMzEtbWFpbnQKKzc2NzAxIDQ1MDgxODYxZWY3NGFmZjg2OGYwMWU2OWJhNmE4YmFmYzc0NTdhMWUgbGVnYWN5LXRydW5rCis3NjcwMiAyNWFlZGU2MmZjMTcyYTY2OThlYzAzNjYyZDQyOGM4MmM4MWYyZGQyIGxlZ2FjeS10cnVuaworNzY3MDMgMjc1MDk3M2UzODkzYzQzYmE4YjFjYjRhMDVkZTBlM2JjM2UwNGIzZCByZWxlYXNlMjYtbWFpbnQKKzc2NzA0IDk4ODc5YzhkNTNmMTY1ZGM4YzgwMGQ4ZDg0Y2RmZTE2MDNmOWRiNWYgbGVnYWN5LXRydW5rCis3NjcwNSA1MWM1YzkxMmVjM2ViNDJlMTY5YjA1OGZkNTQyYWZjODFmODU4MzU2IHJlbGVhc2UyNi1tYWludAorNzY3MDYgZDliNGY2ZWEzZTM5NzViM2I0OWQ4NWVmZTY0NjhjYmY0ZmE2OGQxOCBweTNrCis3NjcwNyA3NjQ3YjE0ZWZlNzFmYTkzNjVmYjQyZTA5MWNlYWVhOWE4MzQyYTQ3IHJlbGVhc2UzMS1tYWludAorNzY3MDggZGIyOGFlYjJmYjdhN2JiYTIyYzZiNmM2ZTE4OTI5MzA2MjI5M2VjNSBsZWdhY3ktdHJ1bmsKKzc2NzA5IDQwNzQ2OTU2YjM3OTJiMzU3ODUzYzIzNDgyMjJmMmI3MTJmYWQ5YTkgcmVsZWFzZTI2LW1haW50Cis3NjcxMCA2ODNkNWM5N2U0NzZkZTQ5OWZlY2Y4NmY5MDRiNDg2NWM0OTJmYWViIHB5M2sKKzc2NzExIDZlZmI0NmMyYjNjM2FkZGFlMmE1YjM0YjkwOGJiYmViYWQ4Yjg4ZmUgcmVsZWFzZTMxLW1haW50Cis3NjcxMiAyNGZmYjBhM2FlNGJhOTM0Njg3ZGZjYzcwZTAwMzQ3NDQxY2Y3N2JlIGxlZ2FjeS10cnVuaworNzY3MTMgNDBjMzYyYTU4ZTdmMGFhMTA0NzVhZDE2ZmJlMzhlY2Y2NTI1ZTAxZSBweTNrCis3NjcxNCBjZjBjNjliZTAxMWE1ODdjYzFjYTc3ZGM1NDA3NzAzOTI3M2JmMWVlIHJlbGVhc2UzMS1tYWludAorNzY3MTUgODNhNzYxOTM5OTc1MzNhMjc0ZDNiOTMwYjc1ODY4MGYzMTI3N2Q4MiByZWxlYXNlMjYtbWFpbnQKKzc2NzE2IDgzYzJiZjMxOTFkODVhNDhhMDFhODRlODYxODQyOWVhNmY3Y2UyNGMgbGVnYWN5LXRydW5rCis3NjcxNyA1Yjg2ODNhOTVlYWVjNjVmMDM5ZTc4Y2QxNjUzMmRlOWQwNTNkNjNkIHB5M2sKKzc2NzE4IGU3MjhhZTg5YWU2OWQ4OGM4NWQzMDk2OTRiZDA1NmZjMmJkM2Y2NmEgbGVnYWN5LXRydW5rCis3NjcxOSA1ZThiNzQ0OWY5NjE1YzMwN2Q1ZmIyMWNiNmYxZjEyZDYwYjJhZmI0IHB5M2sKKzc2NzIwIDZjNjQyNTU2MzkxODI4MjhiNjYwZmFhMTNlYjAyMTdjNDBmZDg3MTYgbGVnYWN5LXRydW5rCis3NjcyMSAyYzUyZDRkM2U1NGFlZDVjNDc2YmExOWZlNDcwMmI5YmFiOTM2ODlkIHB5M2sKKzc2NzIzIGU2MzQ3MDM4ZGY5NzZmY2M0M2EwOGQ3MGU3YThhY2YyZWY1ZTNlYTAgcHkzaworNzY3MjQgY2NjNTQwNmNiMzgxZGZiOTU1ZjZiZmRlMmI3YmYwODA1ZjY1NjUyYyByZWxlYXNlMzEtbWFpbnQKKzc2NzI1IDczOGIzOWIxMmRjOGYwNTA1NWRiYWM0M2M5ZTcwNDUyMzNlYjlhNjUgcHkzaworNzY3MjYgZWZlYWJlZTZlMDYxYWM0OTkzYTQxY2I3N2EwNWFlNjUzNmQzN2YwMiBsZWdhY3ktdHJ1bmsKKzc2NzI3IDc1MGU3NWQ5MzAyMTU1NTBkZGZjYTdhMjY1MWM1ODg5NzNhZmRlMGUgbGVnYWN5LXRydW5rCis3NjcyOCAwYTc2YWIzYTY3M2M2ZmQ2ZTIwYzkzNDViMTMxMDBhNzdjMDgzMzQwIHB5M2sKKzc2NzI5IDgxNjMwM2EwNzc2Mjc3OGZkMTJlNWQwOTBmZGRmOWI0NjFkNjU4YzEgcHkzaworNzY3MzAgMjczZWYwOWZlODA0OGUwZDQyOTkxMmMxZDBkMTczMGEzMzIxN2YyYiBweTNrCis3NjczMSA4YjhhZWUyMWQ4NWU2YTkyZGUxZjBkMzNlY2ZlMTlkMTlmMjhhODVlIHB5M2sKKzc2NzMyIDg5NzRhYjY4NWJhZTA2NDBlMGNkNTYxZmRlYmNmYzU0MDNkNWU2MjQgcHkzaworNzY3MzMgMTY2OTFiYzhiMTg5NGM0ODRkNzJiOGZhNDgwY2M4NmQ3YjE4OWU1OCBsZWdhY3ktdHJ1bmsKKzc2NzM0IGJjNzE2ZDhmNDM0NWQ2YTQzOWYyNjZmNjgzYzVhMjQ4NGU5ODM5NjEgcmVsZWFzZTMxLW1haW50Cis3NjczNSBiNWE0YWNiZWFhYTE2MWFlZjI1MDI1MDdlNmU5YjUzM2VjNmQzMWM0IHJlbGVhc2UyNi1tYWludAorNzY3MzYgNTdhZTVkNDRlNzMxZmJjMjQ0YTRkNWU4NWNmZDBkYjA4M2E5YWU4MiBsZWdhY3ktdHJ1bmsKKzc2NzM3IDgyNzZkMDBkMzEwMGY1YWY2NjE1YzUyMWMxOWQyNmYxNmM2N2MzMTggbGVnYWN5LXRydW5rCis3NjczOCA4YjY2ODljMGU1YTZlNmM1OGI5ZmY1M2RkODNlYTZlZDE1Y2RiZDEwIGxlZ2FjeS10cnVuaworNzY3MzkgYjI3ZDk0NjM4OWU3NjdlNjQ2NzFlNWE1MDZlZTAyYmQzMGFmMzU4OCByZWxlYXNlMjYtbWFpbnQKKzc2NzQwIDYzMTY5Y2I5ZTQ5YTAxZjExYzY0YTg1MzY1ODVmZjZhOTYwODQxNWEgbGVnYWN5LXRydW5rCis3Njc0MSA5MmY3YzRlZTZhYWRmYzhjZjEzMDQ3MTA2MTJjNzcwYjRlMjZhNGEwIHB5M2sKKzc2NzQyIDc1MmU4NjA4ZTEzMWI3MWRhMmZkMWZhYjlmNzRkY2MyZmQ2MGUxZTUgcmVsZWFzZTI2LW1haW50Cis3Njc0MyBhNDQwOWNmNmI1NTY0YTZiZTNkYjRmNDllMGZkMjJhNDFhYzI3YmUyIHJlbGVhc2UzMS1tYWludAorNzY3NDYgOTIxMWE1ZDdkMGI0MjQ2ODYxNWU3MjcyNGUzNDc4ZDlmNjRkZWM0NCBsZWdhY3ktdHJ1bmsKKzc2NzQ3IDM3NGQ0ZTlhYWIwNTJiNWZmOWM1Nzg2MDBmOTZjZjRkZTY4OGM5Y2QgcmVsZWFzZTI2LW1haW50Cis3Njc0OCA2ZjlhZDA0MThmNzBmMTk2Nzk5YWEwMzIwYjQ5MTVlMzUyYzVkZTY3IHB5M2sKKzc2NzQ5IDRlZTIyNjg5MGI1OTkwOWQ3OGMwOTcwOWRjMjkyNzE5YzFiNzNlMjggcmVsZWFzZTMxLW1haW50Cis3Njc1MCBkMjhmYmFjMzdlMjAyZjU3ZmMxODI3NGRlNmMzODE3NDc4OWFkMDIxIGxlZ2FjeS10cnVuaworNzY3NTEgZTI5YTQ1MzMxZGVhOGI1NDhiM2VkMzYyZWU3OGVhMTg3MDMwYTEyYyByZWxlYXNlMjYtbWFpbnQKKzc2NzUyIDY2ZmIxZTI3NjJkMzQyM2Q3ZjNhOTZhN2JiOGQ1MWE3ODY4ZDZiZTUgcHkzaworNzY3NTMgNzU2MmUzNzZkOWI1NTFlN2EzZDUwZjgzNzA2NzllNzAwZGVlZGMxNiByZWxlYXNlMzEtbWFpbnQKKzc2NzU0IGFlOTM5NjI2MDgzNTllZGJjMjkzMWQ4Y2IxZGM0Nzc5OThmYzQ4ZTggbGVnYWN5LXRydW5rCis3Njc1NCBhNmJmMDdmZmY2ZmNiZmU4ZDQ5MDUxODY3NmQ4YmJmNzJhYmIyMmY2IHJlbGVhc2UyNC1tYWludAorNzY3NTQgMGNkN2FjOGM2YmIzYmJjZGUwMmRkNzBiYTllMmM5NTlkZWQ2ZTcyOSByZWxlYXNlMjYtbWFpbnQKKzc2NzU0IDE5YjRlMWY2NDQzZTE5OTkzMzBiYmEzMGJmZmUwNTk0ZWNkYjEzNWIgcmVsZWFzZTI1LW1haW50Cis3Njc1NCA5YjZiMWMxYzFiMzMwZjEyMTkxNDRiYzU0YjljM2M2NzM4MjhmZTQwIHB5M2sKKzc2NzU1IGNiMjJlYWVlODZjOTBjMGZhMzIyOWZkZGJlMGI1MTYwZDRkZTkyODUgbGVnYWN5LXRydW5rCis3Njc1NiA5YjgzYmZlZmM1ZTdmNmZhZWU0ODUzYWY5Y2Y0YTI5ZmFlMzE2ZGU2IHJlbGVhc2UyNC1tYWludAorNzY3NTYgYmJhYjYwMmRhMTE0OWE2OTcyYjc1NjY3ZjkxNTBjNDEzOTM1YzNjMCByZWxlYXNlMjYtbWFpbnQKKzc2NzU2IGU3MDA0ZGEyOWY1MTJkZGI0NjNiZDQ3MWU3ZGFlMTc4N2E3ZDk1NDEgcmVsZWFzZTI1LW1haW50Cis3Njc1NiAzNzhiYjcwNWJlOTA0YmIyZGQ4ZGNhNGI3ZjQyNGZkZjUyZWE2NTkxIHB5M2sKKzc2NzU3IDdjYjczZTdjMTc2ZDMwY2Q3YjczOWQ5Y2E5YmUyZTQ2NTljMDEwMGQgcHkzaworNzY3NTggMTZjZDIxYmEyNjhhNDk2OWRmYWNjNjcyMDQyYTRlOTE2OTJkNGY3MSByZWxlYXNlMzEtbWFpbnQKKzc2NzU5IGFlZThlYjdmNWYwMjFlNjI4YTIwYjU3Y2M1MWZjN2Q3YmU0ZWNkOTUgcmVsZWFzZTI2LW1haW50Cis3Njc2MSAyNTZlOWYwMGQwNjFlZjhkNTQ2NGU3MGNhOTFlOGU2NGMzZDgzZWVjIHJlbGVhc2UyNi1tYWludAorNzY3NjIgNGQ1MWFhNTcyZThjOWFiZTlmOWU2Yjk2NWZiNmY0MzJhOTdlYzI0NiByZWxlYXNlMzEtbWFpbnQKKzc2NzYzIDJmZmQxOWEyMjRkNDFmYTQ2MzBlNDQzZWFkYjU0YTg0YWY3ZWJlYWIgbGVnYWN5LXRydW5rCis3Njc2NCBkOTc4NTkwOWMzYTcyYjc1NmRlZjI2OTZkODFmMTYwZDRiYzEzYzA4IHB5M2sKKzc2NzY1IDc5ZTBkYmI2YzRiODhjODY0MTdmZTY5OWRkZmZjYjc3ZDdhOGQ3YTIgcmVsZWFzZTMxLW1haW50Cis3Njc2NiA4NjkwYTdlZmY4MmExZTNkOGFkNTdkMGQwZDdjMWI4NWI4NjM5ZDgwIHJlbGVhc2UyNi1tYWludAorNzY3NzAgYWQ5MTdiOGZkNjRjZjYwMTQ3MjEzY2Q4NzhlZTVlZTNlMTg4YjhkZiBweTNrCis3Njc3MSBiN2VjNGFmY2ZjM2YwYmRmODgwYjM1YjFiZjM1M2U5ZDIyODRmNjM3IHB5M2sKKzc2NzcyIDczYTZiOWIwNTQzZjRjODAxMzE1MjUyZjBlMjA5MTdlMDEzMTQzZWIgcmVsZWFzZTMxLW1haW50Cis3Njc3MyA4MDQ4NTY5ZWI1M2Y1ZjcxZTEyNWU4MjdhOGNjYjE0NDU0MTNjOGFmIHB5M2sKKzc2Nzc0IDIwYjdkZWI1M2Q0ZTU4YjI5NGQ2OGY5ZTZkOGU1ZjVlNmVhZTljMzAgbGVnYWN5LXRydW5rCis3Njc3NSAyYjkzNGQ0NjY5OTNkZDFiNzFjOGNhYTMwOTQxMmY4NzkzZGFlZTc1IHJlbGVhc2UyNi1tYWludAorNzY3NzYgMDg3ZmU1ZmExMTNjMWZkMTBkOWI1NDc3OWJiM2FhOGFhOTBjNjQ3MyBweTNrCis3Njc3NyBkOGM1ZTM4NTE1YjZjZGM1MjMwOTU1Y2IxOTAwMjkyMDVjZmJjYTE1IHB5M2sKKzc2Nzc4IDE1NThkYzY5YWFjZjI2ZDg2MGViN2VmYzZjZjYzMzY2YzllNTdiNTggcmVsZWFzZTMxLW1haW50Cis3Njc3OSBhNzY5YTliMzRmYmMyYzVhY2EyYWM3OWRjNmNlZmMwMGM1ZGMyZDhhIHB5M2sKKzc2NzgwIDQ5Mzc4MGVhMzVjZjgyMWFhN2E4MzRkMjUwNjFjMTE1YmQ4ZDVhNjQgbGVnYWN5LXRydW5rCis3Njc4MSBlZDJiNjg4M2ZjOTY3MzRiMWJjMTUzN2YzMzJlY2YwY2NmMWM2Mzk5IHJlbGVhc2UyNi1tYWludAorNzY3ODIgNDZjMjI5NzQyYzY0MjEzZmYwZDhiNGQ3NGQwYTI5NGZkOWQ0N2E1OCBweTNrCis3Njc4MyA4YzQ3ZDdkMmEwMjNiNTE5MTJjZTlmMmRkZDRjODNjYWM3M2RkOTgyIHJlbGVhc2UzMS1tYWludAorNzY3ODUgMTE0MjM3MTliYWJiNDA0NWU4ZTBjZTRhZGNmNDYyY2NhM2FjY2Q1YyBsZWdhY3ktdHJ1bmsKKzc2Nzg2IDQ2NDg1MWJmMjJmZGViNTAwNzdlMTRhMGFlMjhmM2ZlYzM1MmRkMTAgcmVsZWFzZTI2LW1haW50Cis3Njc4NyAyZmRjZDczYzMyYWFiYjkyNmU1MDlmZjMyMTIwODNhYzA3ZWVmN2NhIHB5M2sKKzc2Nzg4IDU0ODMzNWNiMDA3YjFmZTg3NGZlZWUwZjI0ZGMzMTRmMTY5ZTg2ODggcHkzaworNzY3ODkgNGE5ZTQzYTNiOTg1MzNhYTcwNTBjMTI0ZDM5ODcwYjBhODFhY2Q1YSBweTNrCis3Njc5MCBjOTE1ZmY1OTFhMmYzMzQxZDhjODJiYWFiYmRhMGNlNmNkNDI0Y2RjIHJlbGVhc2UzMS1tYWludAorNzY3OTEgMTZjZWRkZTlhZjAwOTA0YzQ1MGUyZDBiOWFiYjNiMWFhODJiMTUwMyBsZWdhY3ktdHJ1bmsKKzc2NzkyIGM3MDg3ZWExYzIxZGRkM2EzZWQ2MTFlMWI5NDVjODkzMjkwYWY3MDkgcmVsZWFzZTI2LW1haW50Cis3Njc5MyBlN2M5NGNiNzI2Nzg5OTFiYWI3YmE1MjVjMGI4ZGJiMDM1OTEzNjU5IHB5M2sKKzc2Nzk0IGNiMjYyOTllMGU1MjdiODhkNWQzZDQ5Njk1ZWM0Mzg4NmI2NTBlYmEgbGVnYWN5LXRydW5rCis3Njc5NSBjMmU5NGVmMGQ3ZTU4NTc3MmZlYjZmODVkYjMyY2Q2YTM5YzcxNDA0IHB5M2sKKzc2Nzk2IDBkYmVjY2Q3ZTBlNmZhZWRkMWZkMmI2NjdlNzFlZWUwZGI2MmMzYjAgcmVsZWFzZTI2LW1haW50Cis3Njc5NyA0MmUzMTFhNDc2ZTgwYjEwNGJmMTY1MTQxNjVlYWU1MDMyZjAyN2NjIHB5M2sKKzc2Nzk4IDIxNWRkZmYxOTljMWI2N2NlNzgyZWM3NDZlMTkxNjQ2Zjg5ZDE1NGQgbGVnYWN5LXRydW5rCis3Njc5OSAyN2M2M2Q2NTI2MjA5YTdiODJiODAzNTBlM2RmOTVhYjg0ZWM2NzM2IGxlZ2FjeS10cnVuaworNzY4MDAgMTM5MmUzNmFmMWIyNmEyM2IwN2UwYzFjZDlhZmI2MmNiN2IyZTZkYyBweTNrCis3NjgwMSA2MDUyNzUxYTA0YzgyMzI3MmFlYTNlZjE5YmRhYTgzYTZkMWRjMDEyIHJlbGVhc2UyNi1tYWludAorNzY4MDIgYTc0ZTA0ZmM5M2ViOWRjZmNkMzMwMjU5OTMwZDBjYzY4NTdjNDU3NSByZWxlYXNlMzEtbWFpbnQKKzc2ODAzIDY1NGM2ODUzNjk3NTE0NjUyNGFiYTRjNWVhZTk1ZDFiNDJkYzZjZTEgcmVsZWFzZTI2LW1haW50Cis3NjgwNCA3Y2NkMjI4Yjg5NWNjOWYwOGRiNTVjMmUwZGM0YjlmNzhhYjc1MGIxIGxlZ2FjeS10cnVuaworNzY4MDUgNTRmODQ1NThhZDJiMmY2NzExMDc3NDY0MzFmZWQyY2YwYTBkNmQwOSBsZWdhY3ktdHJ1bmsKKzc2ODA2IDI0YThhMjljOGE0YTA0NmU2NDRmM2ZhM2ZiMDZjM2EyMmMxNGQ5YTUgcHkzaworNzY4MDcgM2E3ZDU0MDQzYWJhOGVmOTgwNDY5ZGYyOTMxNDgxYjQ5ZTY2ZTkxZiBsZWdhY3ktdHJ1bmsKKzc2ODA4IDEyMDYzYTdiNmEyYTI5ZWRiYmQ4OGU2ODMxNTAwMzY5YzZiNDhkMWYgcHkzaworNzY4MDkgMzVkZjY3Nzk4OWNiOTU1MTA0YTJiMTBiYmYxODhlMzk2OTViMjg4OCByZWxlYXNlMzEtbWFpbnQKKzc2ODEwIGZjNzBjOGQ3NDNkYjcyZTZhOWQyYjhmNDg1ZmZlODFjYzgwMzJkYjUgcHkzaworNzY4MTEgNjIxMDZiNmY1NTk2Yzg5M2M3NmE0ODc3YzljNGFlNGU5YTI0YjcyOCByZWxlYXNlMzEtbWFpbnQKKzc2ODEyIDdjNDIxMjQ0ZTZlYThmMGQzMjNiZDAzNTVmNGY1ZDk1OTJhZDVkNWEgcHkzaworNzY4MTMgNTM2ZTQ2ZWQxMGFjZjQzNjIwMDdhZjBjZjIwOGY2ZjFkYmY4M2M2NiBsZWdhY3ktdHJ1bmsKKzc2ODE0IGIzYTM2NDE5MmMwYWQ5N2M4YzMwMDY0Mjg4ZWMwMWUzMDc3ZTZhYTQgcmVsZWFzZTMxLW1haW50Cis3NjgxNSBiYzkzNDA5OGNhYTEwMWUxODE5OTk1ZTM3MWUyNTdhMzJhNzNjYTJiIHB5M2sKKzc2ODE2IDA1NmZmYjhlMTdiM2Y1NGYwOTYwNmEzZmYwMzc2MmE3M2M1ZDIyNjEgcmVsZWFzZTI2LW1haW50Cis3NjgxNyBkZDUzOTFkNGJiNjgwZDRmODQ0OWM4MGQyY2Q5ZGE5OTgwMjZmZTYxIHJlbGVhc2UzMS1tYWludAorNzY4MTggNmIyODUyMjE5N2RiMTBlNDRkOGNlOTYzZDk4ZTM4MDg3YzE5NzMwOCByZWxlYXNlMzEtbWFpbnQKKzc2ODE5IDlmMzU3Yzk2ZjI0NmU4ODQwNTQyNzg2ZGNmMGU0ZmNhMGE2NWU0MWYgbGVnYWN5LXRydW5rCis3NjgyMCA3MmVmM2RiNWM2YjM3YjI4MTQ3YzE2MGQwNGQ1ODE0YTM3NmZkYTZhIHB5M2sKKzc2ODIxIGU1ZjIwMTNiMjlhMTk3ZTFjZjhiM2FkZjNmMTA2OWViMjM1YTVmMjggcmVsZWFzZTMxLW1haW50Cis3NjgyMiA2ZTEzMWUwNzEzMTA1ZDA5YmFkMzQ0YjhjMTVmZWNhNzA5MDQ2OGRhIGxlZ2FjeS10cnVuaworNzY4MjMgZGExZmNlNTQwODg1ZTFkNzVhZDZhY2NhNDc1NjIyNGUyNGRkMThmYyBweTNrCis3NjgyNCA0MGYzYjhiODNjYzZhM2U5Y2JhNWViNGRkMzZiYjU4MjczZTQwNjc1IGxlZ2FjeS10cnVuaworNzY4MjUgNzcwNWFjMjE4Yzg3MGI1MTVmM2E0MGNhYjk0ODc4Y2E1ZWYzZDM4YiBweTNrCis3NjgyNiBjMGM4NjFkMzhjNGZkYWVmNmJhZDhlYzRhMTA0ODQ1OTQ1MjExZDQxIGxlZ2FjeS10cnVuaworNzY4MjcgMzU0Njc3OWIyMWM3MDgzZTUyODRkNDk3YWE1ZDk5ZjNhY2RlYjZiMiByZWxlYXNlMjYtbWFpbnQKKzc2ODI4IDY4MjQ5ZWQ4ODA5ZTgxMzNjODNhNDZjYmU5N2RkYTEyYWI0YTRhNzAgcHkzaworNzY4MjkgYmM1NWY1ZDUwZGVjODcwYTk0NjU3MGQ4MjNjNjZhMDEzYzY1OTQwMyByZWxlYXNlMzEtbWFpbnQKKzc2ODMwIDUxMDNmNjhjY2E2OTA5NWU3MGNkNzM2NDJiMDJkOGQ0MWI3MzFkYzIgbGVnYWN5LXRydW5rCis3NjgzMSAyYjhmNDg1YjBkMDM5N2UxMjUwMmEzYzkzMDYzMjM3MGJhN2NmZjY2IGxlZ2FjeS10cnVuaworNzY4MzIgNzZiZDViZGNlY2NkZmQ5NjZlYzJiOGIwYzM2NzZmMWIxMDViZjYxYSBweTNrCis3NjgzMyBkMmUxNDY1M2E0M2M5OTVjN2Y2MjJjNDE1ODVkZWVmZWM4MjkzZWUyIHJlbGVhc2UyNi1tYWludAorNzY4MzQgZDg5OWYyOGRiYjhlOTdjMjEwOTYyZjgwMGY5Mzk2NDA2MjVjMzU5MiBweTNrCis3NjgzNSAwZWVlYTc2NTZjMjJmMDMwZWQwMWQ1ZjAzY2RlYTk2MjBmMjhkNjVlIHJlbGVhc2UzMS1tYWludAorNzY4MzYgNDljNjhhMmIwNTg1MmM1NDkxNWNhYmM5MjdlYTgzYzQ3NGRlYTNkZiBweTNrCis3NjgzNyBiYzBhNmU0Y2UxYjBiYmYxZTM4ZDY2ZDM5MDJhMTViN2JjYjJhZWJhIHJlbGVhc2UyNi1tYWludAorNzY4MzggOTE5ZTIxNDI3MjZlZmUyYmEwYmQxNTU0NDA0Nzg4MGQyYTdiN2EwMCByZWxlYXNlMzEtbWFpbnQKKzc2ODQwIGZhNGYyM2IxODJkZTY3OTFhYmZmODdhNTYzNDM3YjM2NjAwMjZlMmYgbGVnYWN5LXRydW5rCis3Njg0MiAxNTkyZTg5NTFiMmJkMzU0NDQ0Yjk4ODBlMjM2YzcyMDRiZGVjOGYyIHJlbGVhc2UyNi1tYWludAorNzY4NDMgMzI5ZWYyOTRjYzJkYjU2ZDQyZDgyZDgyMDljNzE2YjIwNjY0Zjc4YiBweTNrCis3Njg0NCBlOWNlYmJlOWRlNWMzMWFmOTMwYzBjMWY4Y2I2OGRhNjJhNGQxOTcxIHJlbGVhc2UzMS1tYWludAorNzY4NDUgOTYwZTllODRjYTU5NzU1YzZiNWRkYWQyZTY5ZGUzNzAyMTQ2NzRjMSBweTNrCis3Njg0NiA3YzNjMDBlNzZjMjQ4OGI2NmU5ZGMyMTUzZGU3NDgxMmFhNzM2ZDNlIHJlbGVhc2UzMS1tYWludAorNzY4NDcgNjY2NDBmYzYwN2NhMDYzNTU4OGQ2MDUyZjliY2E2NTA5Y2JiNzIxMiBsZWdhY3ktdHJ1bmsKKzc2ODQ4IGQ4NjIwMDBmMWIwMTU1M2Y5N2UyNjc2ZGM2MDQzMDgzOGUwYWFmNzAgcmVsZWFzZTI2LW1haW50Cis3Njg0OSAyNGI2ODUzMTg2MzNiM2EzZTI5MzRlYjEwZWQyYThhMzhkYTNhYjk4IGxlZ2FjeS10cnVuaworNzY4NTAgZTUwZTQ5ZDYxZmVhNWYzNDM5MGIyYjk5N2Y4NDliZmFjY2IyMmM5YiBweTNrCis3Njg1MSBhOWI2ZjI3ZDFlMjkwZWM5N2NjMTVkNTllMWY1NGJjNmNlY2FjM2QxIGxlZ2FjeS10cnVuaworNzY4NTIgYzJlNGNmYmIzOThjYjg1ZjExYjMzZmNlZjQ4NWM4NTNiMTg1ODE2YiBsZWdhY3ktdHJ1bmsKKzc2ODUzIDk0MjgyM2RkZDgxOGZjMzg5MmIxODgwY2EzNzNhMGU0MzZmZDkwZDIgcmVsZWFzZTI2LW1haW50Cis3Njg1NCA5N2FiZDdhYWJhZGMyOGUyODgzNGRiNjNlZjQ4ZTMxZmE1YWIwYTJmIHJlbGVhc2UyNi1tYWludAorNzY4NTUgN2ViMDUwYzBlNjU0NjdjMGQxZWZhMDkxMzk5MzhlZGY5YjAwYWI0OSBweTNrCis3Njg1NiAyYmQwZjM5MTU5Mzg0MGM3NjFhYmFiOTlmOTYwMTk4ZjdmNGRkMjY2IGxlZ2FjeS10cnVuaworNzY4NTcgOWZlMTVjMWY5OWNjOWIwYzlmMmVjYWIwZjE3MjM2MGM2OTdkM2E4OCBweTNrCis3Njg1OCA0ZmNiZTBlYTliMzE3ODEzODVjNTc2NTQ3NDg3OWQ1YjJmMzFhNTgzIHJlbGVhc2UyNi1tYWludAorNzY4NTkgYmY2OWMzZjJiNzc4ZTQwM2M0NWU1NDgzYWY2YjRiOWZkNTZhZTgzZiByZWxlYXNlMzEtbWFpbnQKKzc2ODYxIGIyMDZhZDhjZjViZjJlNDQ3NWU1NmYxZmM4OWY3NzNlNmJhNDk5OWMgbGVnYWN5LXRydW5rCis3Njg2MiAyMmExZWE5MGZhYTYxNzczNzY2OTlhNDQ0NjM4ZGZkYzc2YjE4OGM3IHJlbGVhc2UyNi1tYWludAorNzY4NjMgYjQ1Y2ExMWI5YTNlYzc0OGVhNGRjMGI3NTRmYjVmOTI0MDk0NGQyMSBweTNrCis3Njg2NCA1NGE1MDJkYjNiOGNlMGQ5M2RjZmE2ZjM2ODk3YmMxYjQ3Njc5MjhhIHJlbGVhc2UzMS1tYWludAorNzY4NjUgYjM1NmVkOTU2NGU2OGMyYzIyMGQ4ZTIwYWE3ZDFjNjRiNmE3MTUyZCBsZWdhY3ktdHJ1bmsKKzc2ODY2IDBhMWMzOWM1ZjFiOWM5ZTQzMTAwYmUyY2ViYjI0NmFjMmYzMGEyNzMgcmVsZWFzZTI2LW1haW50Cis3Njg2NyBiMTg5NjYyMGMyOTZkMmJmMmNhZjhjNzczNGVlYTdmYTRiZjRlMmE1IHB5M2sKKzc2ODY4IGIxM2Y3MTUzOWFhYzAwYTZkY2E0YjgxZDljNmRiZWEyYzE3ZWMzY2QgcmVsZWFzZTMxLW1haW50Cis3Njg2OSA2MmFmY2ZhM2ZlMTg4YjdiN2E0OGYzNTg1NmNhZjYxZDc1NWMwODU4IGxlZ2FjeS10cnVuaworNzY4NzAgYmI2NjRkMjE5MzliNjg4ZGZhZmQ0MGI0OTk2YzU2YTJiYTBhYzM0OSB0YXJla19zeXNjb25maWcKKzc2ODc0IGUyNmVlOGRkZDI5ZDEzYzcwOWExN2JhZGU5MGM5Njk0NTg1NGQ0NjggcmVsZWFzZTI2LW1haW50Cis3Njg3NSA1MWQzN2VmNDNlMWU5ZGU1ODEzYzRmMzhiNjI0ZDM1MGYwYWEwYTU5IHB5M2sKKzc2ODc2IDBkMzlkYWIwNTYyMmU3YjFlMzFhY2YzYjViNzA4OWZhNDdkYWUwYzIgcmVsZWFzZTMxLW1haW50Cis3Njg3NyAwMTk0OTFiMjZiMzZjZmU3MDE4YmY0ZDIxM2E1MjFkOTBjY2E4NTg2IHJlbGVhc2UyNi1tYWludAorNzY4NzggZDM1MGFmYzMzN2RjNjRjNDdjZmFjNzg5NDVmZDg5MjhjYWUyOWNhNiBsZWdhY3ktdHJ1bmsKKzc2ODc5IDFlODE2NGI1ZjM2ZGJhZjJhNTllOWMwZjJiMWNjMWFmOGFiMzcyMjAgcHkzaworNzY4ODAgZTVkZjlhMWRhYjZhMDgzYjU1ZTYwYWIxNjgzMWM0ZGI4MThkMjRlYiByZWxlYXNlMjYtbWFpbnQKKzc2ODgxIDY0ZjVmMzc1ZDA3M2VjNjI5YTgzZTNkOWE0ODhlNGEyZGIwMmZhZjQgcmVsZWFzZTMxLW1haW50Cis3Njg4MiA3NjUyMzM0NmUyMGQ3NmQ1YTlmMzQ0MDRjYjc5ZTM2ZTdlYjEwODZkIGxlZ2FjeS10cnVuaworNzY4ODMgZDEwNmJhNjEyNmExOGVjMGI5MTBkYjNmZjBlNTMwNjZmNWM0OTljMCBsZWdhY3ktdHJ1bmsKKzc2ODg0IDcyMzQ2MGI5MGFkZDE0YWMwMDRiNDU1NDNlZWI1MjE5MTAzN2ZkNjIgcHkzaworNzY4ODUgMGVlYzYzM2VmMGUzMjBlMjc3OTNkOGNiNDY0ZDgzZGM2NWYxYmM5YiBweTNrCis3Njg4NiA5NjEzZWM0MWFlYWFhMDU2NjIyZmQ5NWFmYjE2MWVmNzQxOWUyOTdlIGxlZ2FjeS10cnVuaworNzY4ODcgYTM0OWRiZWFiYWVlNWEyZmQ2MWZkNjBhYjg2NjdmNDQ5N2QxMjM5MyBweTNrCis3Njg4OCA1YjM3NThlZTQzNTY2Zjk5M2JiOGViMDc0YjdlMDVmYmMyZmMyMjY3IHB5M2sKKzc2ODg5IDM2MjE4YjY4MWQ5ZWRiMTY3ZTMxODdmMjdhMTE4NGM5MTFjMTgyNWMgcHkzaworNzY4OTAgZGRkMWRiNWQyZmUwMGU2ODliYzE1NmZjNzNiMGNkODc4YTUxYmRhNiBweTNrCis3Njg5MSAyNjIxMzBkNzAzMDZjYmNiYzEyOGE0MDQyNDJiZjhhMGQ5YzY5M2I2IGxlZ2FjeS10cnVuaworNzY4OTIgYjhjYTYxZDZlMjYyM2E1Y2YwMmUwODM1YjIxOWY5Nzk3MWM4MzRmMiBsZWdhY3ktdHJ1bmsKKzc2ODkzIDJkNzVkYTY1ZDI5MGU1ZGU1ZDk0MDY5YjUwMThmMThlYzc0NzNlN2YgcHkzaworNzY4OTQgYWVlZjJmMjdmOWYwY2Y2YzlhNTQxZWUyOTdjMGJhNDI0N2ViMTc0NyByZWxlYXNlMzEtbWFpbnQKKzc2ODk1IDdiYWE1NWI2ZThjOTE4OGQwMjg5NDNiOTg2MWZmYzhmMmM1YjRkOGEgcHkzaworNzY4OTYgMTAxMzIwODk5MDQxN2Y0ZWUwYmEwYTE3ZWYxMmI3MDVhMzUyYjJjNyBsZWdhY3ktdHJ1bmsKKzc2ODk3IDZkNDdiMjQ5NDcxMzdkMWUxYmExODY5MjdlMDQxYjdhZTNmYWIzMDUgcmVsZWFzZTI2LW1haW50Cis3Njg5OCA3N2UyMzEzMTM1ZGQ5YmEwMThiYTY5ZTY4YWJkYTkzYzYwM2JlZjY3IGxlZ2FjeS10cnVuaworNzY4OTkgOWI4NDcwOThjYmY5MzA2ZjM0Y2IwYmZlZjBlOTFkZWJkYzYzNTQwOSByZWxlYXNlMjYtbWFpbnQKKzc2OTAwIDE4ZWIwMDkxNGFlZTViYWNhOThjZDI4NDVlZWNiNTU4MWQ4Njg4MWUgcHkzaworNzY5MDEgNmY5YzA3NDZmMWUyMDUwNjhhODM2YTk0YWIwM2IyZTU2MTk5ZjVmYiByZWxlYXNlMzEtbWFpbnQKKzc2OTAyIGEwODg0MGNlODhkMzRjMWYwMzc5ZGZhOWEyZjg1OTEzYTlhMDhhOWQgcHkzaworNzY5MDMgZWQ0ZDVjZDQ3ZWU5NjEwMjA3YzRjMGQ1ZTkxNjczNDIxNGFiNTQ2NCByZWxlYXNlMzEtbWFpbnQKKzc2OTA0IGY3ZjVlMWQyN2UwNjMwMmU1NTMyZmUxZGJjMWI5YWMxYTQ4ZjA0Y2UgbGVnYWN5LXRydW5rCis3NjkwNSA4OTk5Njc1NWNmMzllNzBiYzQ2ZTc0Yzg1Mzg5NjNlYjk3MGMzM2Y4IHJlbGVhc2UyNi1tYWludAorNzY5MDYgYTQ2ZGQ4ZGEzYzMwODI3YzExMDE4ZmUwYTYxMGQ5ODY4MWIwOWJmMCBweTNrCis3NjkwNyBlMjNmNWVjOTMzMTU4NTdkNzIyOWI3YmQyZDZiMWI0OTcwMjg2NWYyIHJlbGVhc2UzMS1tYWludAorNzY5MDggMTA5NzBmNjRiYTMzMWIxODliZDhlOTU0MmY5NTkxMzIzZGQwNmNmMyBsZWdhY3ktdHJ1bmsKKzc2OTA5IDcwY2MyODhmOTE5ZTE3ZWE2MDIzNjM5YTk1MzIyZTc0NjYzYmFkNmQgcmVsZWFzZTI2LW1haW50Cis3NjkxMCA3MjRhMGRhODVjNDJjYWU3OTA4NmJkNzg0OWQ2ZTg5ZmZkOTE4MDIyIHB5M2sKKzc2OTExIGRjMWFhZGY5ZmE0YTNjNmNlMjQ2MDBlN2RkNmJkZDYyNzUzOWI0YjkgcmVsZWFzZTMxLW1haW50Cis3NjkxMiA5Yzk1NzUyZWRlMTI1M2E5MzIwZmRjZGM3N2UxNGVlZDNlYWY5NTc1IGxlZ2FjeS10cnVuaworNzY5MTMgNTMxYjExYTZhMTI1NWNkZWFmNGRhMDRiNGM2ZWFkZGI5NzU1ZmNkMiBweTNrCis3NjkxNCBlYmViMmU3NzYzZjVhM2E1ODNiZTVlNzhiNTBiMDhjMTc1ZTRjZTIzIHB5M2sKKzc2OTE1IGVkMTMxMmNkYjliMjBhOTlmMDQzMTdlNWMxZDkxMGY3NzE2Nzk4MTkgcmVsZWFzZTMxLW1haW50Cis3NjkxNiA1Y2NjNWQ0MDY4YzFhZWUyNjI4NjY0YTQzNDg0Nzk0ZTIwNGVlNDhiIGxlZ2FjeS10cnVuaworNzY5MTcgNTNmMjFmMDhhZjBkNDRjNzc0ZDRjZjgyMWNlMjE2M2UwMmU4ZDNhNSBweTNrCis3NjkxOCBkNTE1MGIyOTM0ZmE2MGQzNzQxYmY1MzYxY2E1MjkyMDY4NzI3YTE4IHJlbGVhc2UyNi1tYWludAorNzY5MTkgNmY2MDBlOTJhMGY1MjdkYTZlNWY3YjJhNzk3OGIzYWQ4ZDEyZmU0MyByZWxlYXNlMzEtbWFpbnQKKzc2OTIwIDg5NmJmNDk2MjhhYmZkM2IwZmQ4ODVjNDdiODFkNjAyOTViZmQ4Y2QgbGVnYWN5LXRydW5rCis3NjkyMSBjY2EwOTdlYTI3YjljMWQ4NjgzZmU0MmJiN2EyM2I1MmQxNGUyOWM5IHB5M2sKKzc2OTIyIGU5ZGE4MTJmNGZmZjQzMTQ0MjI5ZTE0NGZlZDgxOWRlZTY2NTY3YmEgcHkzaworNzY5MjMgMjA4OWQ5YzFhZTEzZTFiM2JhMGQ3NDgzNmM5ZmVlOTM5NWE2OTc5NyBweTNrCis3NjkyNCA5ZTRjOTAxZjAwOTNjZmYwNGM3YzY4ZWRmZjNmMTVmNTI1ZGIyMWU1IGxlZ2FjeS10cnVuaworNzY5MjUgZDg5MGM4ZmZhZDAyZjdjMDNmMjI4MDhlNTk4ZmIxZmRiZmM1NzQ2NSBsZWdhY3ktdHJ1bmsKKzc2OTI2IGM5YTViM2E0NjBmZjYzZmQ3NTBlMjY0YzU5NjhjZGI2N2VkZjJiMDYgcHkzaworNzY5MjcgNjUwYjMyNjQwM2NkMjZiZjVmMmU3OTUzMDg5MTlmMDgwOGY2NmM5OSBsZWdhY3ktdHJ1bmsKKzc2OTI4IDFmOGIzNjMyMDIxOGI4NDQ1MmU0NDMwMDBkODdhNzIyOThjYzU4YmUgcHkzaworNzY5MjkgNzg0YmRjN2IxOWFhZjNhMWNjZmViZTkzYzJkNzA3NzVhM2MyYzYwMyByZWxlYXNlMjYtbWFpbnQKKzc2OTMwIDc5NDFhOWY4NjVjMjI4M2MzYzNjMTJlNzMwMjEzMDkxYWVjYzdkYzEgbGVnYWN5LXRydW5rCis3NjkzMSA2ZDc0NjRkYmI3MTRiMTRlYTdjMmUxM2JjMjhhNTdhMzhkYWI4MGQyIHB5M2sKKzc2OTMyIDM5MTQ5ZDIyNWVjN2ExNTIzY2UyYTg1NTAyOTBjMzgwZTlmZTU3ZWUgcmVsZWFzZTI2LW1haW50Cis3NjkzMyAwMjA1NGFmYTM2MmYxYjM2NGE4OTU2ZmQxYjU2YWIxYzU3NjZhYTA4IHJlbGVhc2UzMS1tYWludAorNzY5MzQgMDQ1ODhlZmYyNWExOTA5NThhMzU3MzE0YTg3M2E2MGJkNWNlMTQ4OSBsZWdhY3ktdHJ1bmsKKzc2OTM1IDFjMmIzZjc5NWQxYjIzZTIxOWIwNGRhNGFjODJmNzhiM2FkZDhiZWEgbGVnYWN5LXRydW5rCis3NjkzNiAxZGFhYzJjZWVkYmYyNWMyNmNhOGQwNjczOWMzMzVmNjg5OTU4MDQ0IHJlbGVhc2UyNi1tYWludAorNzY5MzcgY2IwNWNjZDc1OTk2YmNjMDE2NWUwMGU4NDIyMWIyZWU5YjFkMzdlZCBweTNrCis3NjkzOCA1ODEzMzcxNDE4OWNhYTg1ODQzYmZlZTU0ZTMwMDg0ODdjZDUxN2ZlIHJlbGVhc2UzMS1tYWludAorNzY5MzkgNjYzMGUzNmFmOWMzOWIwNjI0Y2FjMTU0ZGNhMjNhNTZmOWNlMzJiZSBsZWdhY3ktdHJ1bmsKKzc2OTQwIDU1MDA1M2JhYWZmYTc5ZDRjNDVlNzI3ODdiZWY1YzU4OGE2NDhlMTggcmVsZWFzZTI2LW1haW50Cis3Njk0MSA0YWNlMDhhYWMzNzYzOWMzNjU1MDgzZjFmZTNmZmI1NGJmYzg3MjY0IGxlZ2FjeS10cnVuaworNzY5NDIgZDg1NjIwMDJmOGU1YzFiNmJjZGE2MWJiOTM4OTRiMzQ0MWZiNDU1YiByZWxlYXNlMjYtbWFpbnQKKzc2OTQzIDQ2NTgwOTQxNmE4MmYwYmYxZTkwOGI4ZTBkMGZhZWNmMTMzMWVlYWEgcHkzaworNzY5NDQgNGQ0MzBlNTVhZDdjNThhZGVhNDlmZDNjNGZhNmYzY2FjMGIwZjhlYSByZWxlYXNlMzEtbWFpbnQKKzc2OTQ1IDZjMWIyMDY1ZDM1Y2IzYmNmZTFjZWNkMGIxMmY3YTA3Y2M5ZDE5ZWUgbGVnYWN5LXRydW5rCis3Njk0NiBiZjJlZmY2MGVhZTJiYWExNzdkOTFlN2M4YWZjYmQ0NmQ1ZGRkZGVhIHJlbGVhc2UyNi1tYWludAorNzY5NDcgOTljMGFiM2NkMWY5NTY5ODA3ZTc3YTE4MjExNzNlYjFkNDIzMTU2ZSBweTNrCis3Njk0OCA3OTcxN2I3ZDM3OWRiZmZlYmI2NzY2OGNiOTkwMjE4OTlhODcxMTEwIGxlZ2FjeS10cnVuaworNzY5NDkgYjFkNzJkODk0NjIxN2IxMTMxODI5OGQ1NTQzNDBlYWQxM2QyMDA1NSByZWxlYXNlMjYtbWFpbnQKKzc2OTUwIDA4ZGYxYzllYTY0M2I1NWNjYWM2NDEwNGJiODRhMjIzYmRhMzIzYmUgcHkzaworNzY5NTEgZDAyNWY0OTg3MzE5MWEwMzQyNThhMDI2ZmE5NzllZTBkN2NkYjYyYyByZWxlYXNlMzEtbWFpbnQKKzc2OTUyIDA5NmIxZDk5Nzg1MzhiYjJjODg2MGE0MzdiMDY3ZmZjNzhlMmIyMTEgbGVnYWN5LXRydW5rCis3Njk1MyAxNzcyMTk1NDA1ZTdlYTc1N2U0OWUwZmY1NjQ2MGIzZTkyN2U4ZWYzIHJlbGVhc2UyNi1tYWludAorNzY5NTQgZWE1ZTU0YmQ2Mjc0YzMzNDg2OWZjNTFhMTVjY2ZkZTA1NDhmMmUyZCBweTNrCis3Njk1NSA4NmI1ZGYwNDYzNGMwNjZlMzM2ZDFmNzNlMzczY2IwZWJjZjBiOGQ3IHJlbGVhc2UzMS1tYWludAorNzY5NTYgM2UyYjc5NjVhZGE5OTdiZWFlNDAyYWMwZjU1ZGUxYjQyM2VmOTc0MCBsZWdhY3ktdHJ1bmsKKzc2OTU3IDBlZTJhZTc1Y2U4ZjQ4Yjc5YmJiM2Y3OGI5YTQ0OTMwOTZmNDQ4MGYgcmVsZWFzZTI2LW1haW50Cis3Njk1OCAzOWFiMWEzNmIyMDk4NjZhMjUxZDBkZWMyODNiOGJkMWUxOTY5ZDc1IHB5M2sKKzc2OTU5IDA5YzE3MWZhNTkzNWExZTA4ZmQyMmMxMmEwMDFkYWJhNmQyMTU2MjggcmVsZWFzZTMxLW1haW50Cis3Njk2MyAyOGRlODNmMTdkMDg5ZTQ1NDdkYTYzNjEzOGUyODU0NDViNmRlNmFhIGxlZ2FjeS10cnVuaworNzY5NjQgYTdjNGM3MTdhOWM3ODgxYWNiMzAyNTIzZTAwMDA1OTM1MDc1NDJmMiByZWxlYXNlMjYtbWFpbnQKKzc2OTY1IDQ4YTk5Y2Y4MThjOTJkZWY2MDgzYzhhYWI5OGFhYjZkYjFjOGNjNGYgcHkzaworNzY5NjcgN2IyZWFhMzRiODZiMzY3MDc4Zjc4Njg2ZTYwNDU1Y2EzZDEwMDA4YSBsZWdhY3ktdHJ1bmsKKzc2OTY4IDZkMDllM2ZkZjg0MGNiZDgxYjg4OTc2OGJkZGQzZjA1MzJjMTUwNTEgbGVnYWN5LXRydW5rCis3Njk2OSA3NjEzZGVmMDk5ZDBiYzBhZjQyYjZjZGI3ODgwNmNiYzljN2IzZDkyIHJlbGVhc2UyNi1tYWludAorNzY5NzAgODA3MTk1OWJjMzA2YzUxZTQ2NTY2NmMyNmEyZTY1YzA5OGMwMjk0MyBweTNrCis3Njk3MSA1MGYzMDQ2ZDRmYTAwMjU4ZmYyNmQ1ZTRmYTIzMmM4MmEzODhjYzVlIHB5M2sKKzc2OTcyIDhjODZjZDgwYWUyNjFhMGI3OWI1NDJjYzJiNjYxOTY4Mzg3OTFkNmQgcmVsZWFzZTMxLW1haW50Cis3Njk3MyAxM2U2MmNmMDJiYzNhMTA4MjIyOGM4MDc4MzNkMGQ1OGY4OTViNzk3IGxlZ2FjeS10cnVuaworNzY5NzQgMDljNGYxYjk0MzljOWRlN2U1ZGQ5NTI5YTdiOGI0Y2IyN2Q0NmFiOCByZWxlYXNlMjYtbWFpbnQKKzc2OTc1IGQ3NjEwZWM5NWJjZTI4Y2RmODE3YWMwY2E4YWZmNTE4NTAxNjk5OTAgcHkzaworNzY5NzYgNzU1OWI3MGY5ODk5MzhkMWZiMWNjMTAxZWMwNjBjNDRiM2ExY2NhOSByZWxlYXNlMzEtbWFpbnQKKzc2OTc4IDdmNWNiYzI4ZjQzMzNjOWI0M2EzNjhlY2VmZTVjYjU3NTI2NGE0MjkgbGVnYWN5LXRydW5rCis3Njk3OSBlNzMwMDFhZmM1NmYwNmRjZjVhNjUxZWQwYWFiMWQ5OGE5NWZjODdiIHJlbGVhc2UyNi1tYWludAorNzY5ODAgOTc1MWRkY2MxODgyODNhYjgyZjg1YTk1OTU2NWFhNDY5NjM5OGU3NyBweTNrCis3Njk4MSAzN2EwNTk4ZDMzMmY3NTM4YjBkM2I0Njk5MzU1MTRmMWMwMWU2MWFiIHJlbGVhc2UzMS1tYWludAorNzY5ODIgMmU0ODQxOTBjZWI1YTE5OTQ4MDMzYWI2ZmYwMWYxYzY3N2Y3OWMyOSBsZWdhY3ktdHJ1bmsKKzc2OTgzIDFhMjViNDIwZWMwMGNjNGY5NmRmY2JlYWI2MTFhZjYyY2JmZDc5YzkgcHkzaworNzY5ODQgNjA2YTQ1ZGJkMTBjZTVlM2U1YzZjN2RhMmJhMmFkODRmNWEyYmQ5MyBsZWdhY3ktdHJ1bmsKKzc2OTg1IDM1MjQ5ZTk1NjNhYWYxOTBkMzBjNTVmZGFhM2IzZWNlNjViNDRjN2UgcmVsZWFzZTI2LW1haW50Cis3Njk4NiBkYjE5N2IyOGUwNDU0NDNiNWFmYzY5ODc2ZTA0ZjM4OTNiMzY0ZmJlIHB5M2sKKzc2OTg3IDIwZmNlYmQwY2I1ZGQ4NmZlNTViYWQyOTA2MjMxNGVmY2RhM2E4MzkgcmVsZWFzZTMxLW1haW50Cis3Njk4OCBhZWQzMjE4NzY0OTA5ZWUzYTFmN2M3NGU1ZmEyZTNmMTA4Y2Y1YzE1IHJlbGVhc2UyNi1tYWludAorNzY5ODkgNGQzYjliNGNhZmYwNmIzNWU1ZTIwZjE3M2U4NmQyNjhjODlkOGViZiBsZWdhY3ktdHJ1bmsKKzc2OTkwIDQ0MmQyYjlkODFlMDk4ZjE4MTczODgwMGRlN2Q0YzZhNWRiMzIzOTQgbGVnYWN5LXRydW5rCis3Njk5MSBmMzExNTBkODQ3YzNmZTQzYjQxODZhNDcyNjcyMTJhNjQ3ZDIyOWUzIGxlZ2FjeS10cnVuaworNzY5OTIgYmU3ODg2NjBhOTM5MzM4ZjYxMDE0ZjE2YzQyMjE0MTFmMTM2NDc1OSByZWxlYXNlMjYtbWFpbnQKKzc2OTkzIDA3YTI4MzA4Y2ViYjA2OTQxM2NiZWYwYjBkMjY2ZDVjZjFmZmFjMmMgcHkzaworNzY5OTQgNjVkZTBiZWUwZmYyZWNiYWU2NWE4NmFmNzI0YjZhYmE5YmIyMjM3ZiBweTNrCis3Njk5NSBiOTkyN2VlZTJhNjlmYTgyMjVjN2I5ZjI3ZTMxZmQwOGE3ODlhNDc2IHJlbGVhc2UzMS1tYWludAorNzY5OTYgMzBiZWRiYzI5NzYzNTIzMjU1MWFiZjE4MjY4MGMxYjBkNGJlZTY3ZiBsZWdhY3ktdHJ1bmsKKzc2OTk3IDZjODEzMDE1MmU4OGEyMDFlNTA2NWNjYmZlZjQ4YWE5MjY1YWE2MGIgcmVsZWFzZTI2LW1haW50Cis3Njk5OCBjZjc0ZDlhZjg5NWE2OTRiZjBjZmVjMmU4ODVkMmY3ZTQwN2FjYzNiIGxlZ2FjeS10cnVuaworNzY5OTkgMTUyMDY5NzkyMDIwMWIwMjg5ZDgxZGZiYmJhMWM4NDgyYzQ2MmI3YSBweTNrCis3NzAwMCA5ZGM1NzNiNmY4ZjVmYTdmNGM3YzZjNjZkZWVjZTM0MzQwZGRmZDNiIHJlbGVhc2UyNi1tYWludAorNzcwMDEgNTNlMzIxMjU5NTU2ZTVjMGE1Y2U5YjdlY2ZkOGJlYTZmZmM5MWY0YSBsZWdhY3ktdHJ1bmsKKzc3MDAyIDA3MmMzZDBmMDUxZTliOGJjMDU2ZjgyODQwYzg5ZjI3NmFmZDE0ZmQgcHkzaworNzcwMDMgZGYyNjEwOTNiMzFjZjRkZGRjODEwNmE1ZmU4YzlmMDk3NjJhMmU3YiBweTNrCis3NzAwNCBiZDI4NzQ1YzZmZTcwZDcyNzg4NjJlYTdkZjg0YmIxOGNjOGY5MzY3IHJlbGVhc2UzMS1tYWludAorNzcwMDcgYmE3NGQ1ODc3NGI3MGY2YTZjODc2NjY2NjEyN2NmMTc5YjMwNTU4ZCBsZWdhY3ktdHJ1bmsKKzc3MDA4IDE4YThiMmJmYzljMmViYzhhYjRkNGJkMDIxNmFlODhhNmJiNjJmMWQgcmVsZWFzZTI2LW1haW50Cis3NzAwOSA0MjlhM2UzOGU0NmJmNWQ3ODU3M2Y3YTNjMzhlZTNlNjY3ZDA3NGU5IHB5M2sKKzc3MDEyIDkzZDVjZGYxYzQ1NzNlODZhNDkzMmRmN2M0ZWJhMjlkNzY1YmY3NTYgcHkzaworNzcwMTMgM2E3MzZhZDY2MWZiNjQzYzM4M2FhZjdiYTU0MThiY2UwM2QzZDk0YyByZWxlYXNlMjYtbWFpbnQKKzc3MDE0IDI1MTg2MGRiMzQ5M2YzOGNiODA3Zjk3ZmZhZmVlMGE4MzFiMmUzM2EgbGVnYWN5LXRydW5rCis3NzAxNSAyNDAwNmNhNTYyZDVhYjk1Y2ZlZDU4NTc2ODQ5NDRjMmU3NjQ5YThiIHJlbGVhc2UyNi1tYWludAorNzcwMTYgNGFhMGQ4MTZlZTViYTA1ZDM1YzMyZDE4Mjg3ZDllM2E4NWNmYzEzOCBweTNrCis3NzAxNyA4MDIxYjkwYjU2ZWRiYjdmNDhjYWU0MmUzNDY3MDM0NTI3MzRiZDNkIHJlbGVhc2UzMS1tYWludAorNzcwMTggMWM0ZTg5NTIxODQ3ZTAwMzgyMjM5YjJhZmM5M2MyOTg4OGNmOWJhMSBsZWdhY3ktdHJ1bmsKKzc3MDE5IDEzZTJmOGE3NDljNDY0MjBhOWIwYTBlNTljOTU4ODVlMDk1N2E0OTMgcmVsZWFzZTI2LW1haW50Cis3NzAyMCA4ODYyNzVmZmFmZDZiM2M2NTYzOGY2ZGJlOWMwNmE2NzRiMjk4NTI3IHB5M2sKKzc3MDIxIGU3NTdmYTc3OTYwMWY1MDUzZTQwMmI5YmFiMzJhNTg5NjBhZjE3YWYgcmVsZWFzZTMxLW1haW50Cis3NzAyMiBkZjJjZmNmOWEwNzM4ZTFlYTg0MTc1MmU1MDBhNDc5NDlkYjY4MWM2IGxlZ2FjeS10cnVuaworNzcwMjMgMWY4NmUwZTQ2OTY5ZmE0MjIzMTNkYzUzZmMxMjE4ZDk4Y2Y3MTE1YyByZWxlYXNlMjYtbWFpbnQKKzc3MDI0IDU1OTQyNTMzMzE3ODdlMTIwNDIwOWQ0Y2I1NDI2MzA4NmViZWQ3YzkgcHkzaworNzcwMjUgZDFmMWEwNTkxNTRiYTlmMTIzMDgxNGJhN2MxN2NhM2YxMjk0NGQwNSByZWxlYXNlMzEtbWFpbnQKKzc3MDI2IGNhMjRlYTFhMmFlMmVkODcyNjI1YWFjNDQ5OTNiNDQxODVkNjkxNWUgbGVnYWN5LXRydW5rCis3NzAyNyAxZGY3M2JmMzhjNTViODU3ZGI4MDIxMWJhNDFmYThiNGUzNzEyNzQ2IHJlbGVhc2UyNi1tYWludAorNzcwMjggMzVkZTU3ZjUxNTk5NTczNDk0Y2Y3YTJkOGU3Mjc1YjY2YTc2YmZkOSBweTNrCis3NzAyOSA3MWU2YTBkZmFmYzg0NzE2ZjQ2N2U5ZTMzMjE5NGM3NTMzOWU5ZWZkIHJlbGVhc2UzMS1tYWludAorNzcwMzAgOWRhMGNmMmRmZmNjOWVhNThjNTIwMTk3MTQxMDljYWRlMTY2ZDU5YiBsZWdhY3ktdHJ1bmsKKzc3MDMxIGFhZWI2NWJhYjNjMDUxZmI1YmI4ZDQ4ZTNiZWUyNDM3YzlhYWM2NWQgbGVnYWN5LXRydW5rCis3NzAzMiA5NGU5NTdjZmRhMzgzYWY5OGY4ZDE4ODUyYTE2Y2MwZjVjMGUyMGM5IHB5M2sKKzc3MDMzIDQ2MzcxYjI4ZmRkMTE4NTFjZTUwMTUwMTQ0MDdhNTM0Zjg2MmE3OTEgbGVnYWN5LXRydW5rCis3NzAzNCBiYzVlYzUwYzUwZjllYWIzMzM0NTc0MDFjZDUzZjM2ZTYxMTI0MDg3IHJlbGVhc2UyNi1tYWludAorNzcwMzUgM2M0MTI0NDdlZmIyMDMwYjQ2NjU4NWI2M2I0NTljNTZiOTMyZTI0NiBweTNrCis3NzAzNiBlN2RjYzc0ODVkMGJkODFjNThmODEwN2EwNGZkN2NjNGQ0MDFhMTFjIHJlbGVhc2UzMS1tYWludAorNzcwMzcgMDg1NTgxODg0ZTZmNjMyMmVhY2QxNGI3NWNiOTAwNmY4NTM2Yjk0MyBsZWdhY3ktdHJ1bmsKKzc3MDM4IDg3MGE0NmM4YTY3MDVkYjI4Y2Q5YzhmYTYwNzViODI4YjdhZGNkMTQgbGVnYWN5LXRydW5rCis3NzAzOSAwZWY5NGRhNzViZmRhNmQ3M2U4ODI3NzliYzEzNWQ4NTU4NzNjYTJkIHB5M2sKKzc3MDQwIDQyN2MyMTQzZTJjOWJhMWY4N2M5NjIxNzc1MTQ3OWI3ZjdlYzQ5YmQgcmVsZWFzZTI2LW1haW50Cis3NzA0MSA4NDI2MzQyNzZkMDExZGNiMWY0MmYwY2EzYjQ2M2JmMWFmMTk1YjJkIGxlZ2FjeS10cnVuaworNzcwNDIgM2I4NmIyM2M1OGZlNDQwYmIwZDg4YzI3ZTI0MzM2MzI4ZDM4OTY1NyByZWxlYXNlMjYtbWFpbnQKKzc3MDQzIDcyNjMyM2ZkODdjYTUwYzYwODk0ZTg1Nzc1MmFiZjFlNmJlMTIwZTggcHkzaworNzcwNDQgMzQzNGU2YjExYTkyMThlZThlYWVlYzdiNWJhNGQ1MjE1YjM1YzNjYSByZWxlYXNlMzEtbWFpbnQKKzc3MDQ1IDg2Mzg3YjhiOWFmOGI5ZDVmZjYzYWIzOGEzOThmM2VmZmQwNzUzMDkgbGVnYWN5LXRydW5rCis3NzA0NiA5NDI0Yjg0YTJlYzk1MmEzMGI5NDMwMmZlOGM3N2E0OTJiNDZkYzIyIHJlbGVhc2UyNi1tYWludAorNzcwNDcgZjU2MGUxYTc3NDRlZmFkNjJiOTgyYjk2OTczNWM4NzE2MzljNWZiNSBweTNrCis3NzA0OCA5NjI4ZWI3ZTk4ZGZiNzgwMTBhNjcwM2EwOTQ2ZTAxZGQwMWI0YzEzIHJlbGVhc2UzMS1tYWludAorNzcwNDkgZGI3OTY1NjcxMDljYjRlY2VmZTI5NjQ4NzZiMmZmMjZiODQ5NWY3YiBweTNrCis3NzA1MCA2Y2ExYjliNzhjM2ZkNzliYjcxZjcxZjY5MDhhMWNhOWRhNjE5YTViIGxlZ2FjeS10cnVuaworNzcwNTEgZTVjNGM5NzEyNjYxYWYzZTJlODA1MjgyZGRkOWY2NTVjOTAwZGViMSByZWxlYXNlMjYtbWFpbnQKKzc3MDUyIDQ5ZGYzY2Y5MTlmN2RiY2VmZmQyNWI4YzE4OTg3NDJmMzgyMTNlOGUgcHkzaworNzcwNTMgMjEwNjExMmY1YjA3NjM4ZWNiNGI4ZjllYTVhMGNlNGRjYjVjMjg5MSByZWxlYXNlMzEtbWFpbnQKKzc3MDU3IDVkYzVkNmM2ZjY0MTc4OTgzNmNlNTlkNGY1M2NlN2YzNjBiMWU0ZjMgcHkzaworNzcwNTggNjQ2NzY0OTk0MTIwMDkzZDAwNmE2MmViNTBkOWE4MzAyNmIwN2FjMCBsZWdhY3ktdHJ1bmsKKzc3MDU5IDE1MTI5YzgwYjJmZWQ3YzUwMDQyNGM2MDE0NGQ1YzdhMWY3ZDA2OTEgcmVsZWFzZTI2LW1haW50Cis3NzA2MCA2ODgxMWRmZTcwNmNlOTRkMzFlNDFlYTA1NGMxNjljZGRlZTQ4ODI1IHB5M2sKKzc3MDYxIGUzNzJhODA1NmM5ZDUzN2Q2ZmQ0OTQxYWY1MTA2NTQyMDE4N2MyZTEgcmVsZWFzZTMxLW1haW50Cis3NzA2MiBjNGU2MDk4ODgzNGRmMGZkNDM3YWUzNDIyZGEwY2FiNGFjZDZmY2UwIGxlZ2FjeS10cnVuaworNzcwNjMgYWFhNWFiN2I5NDJhOGU0NDUzZjEzMTBkY2FkZDljNWU1N2IwMDZiZiBweTNrCis3NzA2NCA1NjBiODc2NjkxOWQ1ZDE1YzQ0MmExMmM5OTk3OWRmYjUxYTJmODJhIHJlbGVhc2UyNi1tYWludAorNzcwNjUgMjI5MDc4ZTQ3MDEwYzhjOGE3YmNkMDc5YzhkMDRmN2U4YTAzOTE2YSByZWxlYXNlMzEtbWFpbnQKKzc3MDY2IGViMGJiYWJhMDM2MWI3NDZmYmE5NzBlZGI1ODk5NTcyYzliMGY3ZjEgbGVnYWN5LXRydW5rCis3NzA2NyBkZDY3MjZjOTc4YzY2Njk4ZjRkNjkwNTM4ZDgyOTYyZDY2ZTJhZWNiIHB5M2sKKzc3MDY4IDk1NzI4OTAyOWMwNTM0ZTVkZTI0ZmNhOTI3MmNhZjgwZmMyNjI0ODggcmVsZWFzZTI2LW1haW50Cis3NzA2OSA4NWU3ODFmNTk5YmM4YTk0ZjU2N2IxYTM2NDA0ZmNkYWRmYjI3MTFhIHJlbGVhc2UzMS1tYWludAorNzcwNzAgOGU4MmZiMDQzYWU4Nzg1OWU5ZGNiNWZlMDBhNzAwZGM4NTExZDE5MSBsZWdhY3ktdHJ1bmsKKzc3MDcxIGFkN2U0MTQxYTNlYjgzZjg2YzZjNTY5MDQwZGUzNTNiMTc1NDQ0ZDUgbGVnYWN5LXRydW5rCis3NzA3MiA3MzM2NWJiMjZmZDY1MGNjMDQ2MGNmMzVkNzFmZDBiNmIxODhlZmM0IHB5M2sKKzc3MDczIDFlMzcxODBlZWNhZWE0NDNmMTQ4ZjRiMzc5MGJiNjE0YmQ1Y2MzZmEgcmVsZWFzZTI2LW1haW50Cis3NzA3NCA1YTkzNzEwMTdlZGY5YTFhNTAxM2ZmOGEwMWQwYTlhZWYzZWRlYTBlIHJlbGVhc2UzMS1tYWludAorNzcwODEgNTI1ZjY3YmVlYjg5YzdmYTIwY2FmYzllODcxODZlZTAwMTEyNjdhYSBsZWdhY3ktdHJ1bmsKKzc3MDgyIDMwNzQxZWY2NTYxNzM4ZGY3MGNiZTI3NTk4NzUwZGU0MDRlY2UwYmEgcHkzaworNzcwODMgNTc0MzNiODMzYjJhOGRmMzQxMTQ1ZWQwZTMyOWQ5OWM2M2M1MWZmMSBweTNrCis3NzA4NCBjYmUxYmJlNTQ0YzllNDZiZGExNTc4ZjM2MGIxNzMxNWFjYzk0MzA2IGxlZ2FjeS10cnVuaworNzcwODUgYTExYThlNTNjNDk1Y2U4YmM3NzEyMzU1ZGJkZjU2ZDhmNWNjNDY3YyBweTNrCis3NzA4NiBmZTA0NTlkYzk4ODlmOTM3NmU2ZGUxYTUxNDEzM2M5MDUyOTM4ZTMwIGxlZ2FjeS10cnVuaworNzcwODcgZmZkODAwZWY0NmVhMDU0ZTkyZWZiNDkwNmNkMjdmMTQzMTYzZThmNiBweTNrCis3NzA4OCBjZjM5YzVlNDYyZjk0YmNlNTgxNWIyZDY4YjBiYWI1M2FkZjViYWUyIGxlZ2FjeS10cnVuaworNzcwODkgYzE5NzJlZWYzNTc5NWNlMmQ0YTEzMTA0MjE3M2YyODdhMTFlM2UwZCBweTNrCis3NzA5MCBjMTRhMDE0YWY5NTRlYmFjZjA0MGM2OWM2NGE3MDUxYzE2M2ViZWNhIHJlbGVhc2UzMS1tYWludAorNzcwOTEgNWU4NGFiZmRmZWFiZDc1YTUxNWM0NjhhMThjM2UyMTY4ODFlMWIwYyByZWxlYXNlMjYtbWFpbnQKKzc3MDkyIDliNGI0M2E4YzkxMzA1OTU1MGZjZjg2ZTVjODdiOGViZDA4MGQ0YzIgbGVnYWN5LXRydW5rCis3NzA5NiAzNzQxOTFlMTBhNDViZTZkNTY4MjNhY2ExNzY4OWNkYjJmYWZhZGEzIGxlZ2FjeS10cnVuaworNzcxMDIgNWM4YzRkMmY4YjcxMjBkMWRlYThiOTUxYzljYTBkYjkwODRjMzc2MSBsZWdhY3ktdHJ1bmsKKzc3MTAzIGY3NjRlNDEyNmEyMzFiYTBiN2NjNjhiNWJlNDhkMTA1N2FlZjdkZGYgcHkzaworNzcxMDQgM2I0NmYyZDNiNzVkMDJmMzU2YzFhZmJlY2EzZmI1Y2FmZDY3YTdkMiBsZWdhY3ktdHJ1bmsKKzc3MTA1IGVjOGJiMTUxNGQ2NzFhNjNiZDdjNzNjYjM1ZGViZGM5NjAwZWYzZmEgcHkzaworNzcxMDYgMTVlYWM3NjVjYzM1ZDk0ZDFjYTk4NzQ2MDQyMTJiNTBlNmQ4NWVhZCBweTNrCis3NzEwNyAwNDk4MDI3NzEyYmY0MmMzMGQ3MmI5YzY4ZWQ5MzViZWRlYTUyZjcxIHJlbGVhc2UzMS1tYWludAorNzcxMDggM2FlYTU3ZGMyMWE5YjFkM2I4NjE0OGFmNTBkY2RlYjg3ODAxZGNlNiBsZWdhY3ktdHJ1bmsKKzc3MTA5IDM4ZjU5M2E4M2NmYzg0MjNmNDgwZDhkNmI5YTEzNmQ4ZGU5ZmE3NzEgbGVnYWN5LXRydW5rCis3NzExMCA4YWQzMzk5MjIwMmFlYTNhNmEwMTc4MmUwMjEzMTM1MjU5M2UzMGEyIHB5M2sKKzc3MTExIGFiZTUwMDhiOTNlOWE0YzczMmVjNTMxNGRhZGQ2NTg2MjM0YjQxMjcgbGVnYWN5LXRydW5rCis3NzExMiA2MWE3NzBmN2I5NTFiM2Y5MjA3ZTdkNjZjOThlNGM5MDBjYmE5ZTJmIHJlbGVhc2UzMS1tYWludAorNzcxMTMgNTc0NTZmMTY5NDJkOTkwMGU5NDUzNjYwNmRhODJkZWJhZGRjNTk0YiBweTNrCis3NzExNCA3MGQ3NDczYWZjZmVmNjdiOTY2MmRhMmMxY2M1NGMxY2E0MmU3ZmYwIHJlbGVhc2UyNi1tYWludAorNzcxMTUgNzIzM2JjMzRmZDQ0ZTI4OGZiZTZlMTVmZGQ3MzdmOWU1MjkyMWM3ZiBsZWdhY3ktdHJ1bmsKKzc3MTE2IGU0ODRmZGE0NjJhNjBiNzAwNjEwZGFiODU5ODBiODI2ZTdhZWVhYTggbGVnYWN5LXRydW5rCis3NzExNyBiZDZiMDNmYjcxYTA2NDY2OWIwYThkMjJlMDY4NTZmOGI4YzM3MmYwIHB5M2sKKzc3MTE4IDI1OWVkNWNiOTNlYWNkZmM0OTEwYmExM2EyNDFlMzJhZjU3NjYxMjYgcmVsZWFzZTI2LW1haW50Cis3NzExOSBlYWZhMDUzYWYwNTcwZGIwN2FiNzQ1NWQ1OWYyYWU0ZGE3NzU1M2RlIHJlbGVhc2UzMS1tYWludAorNzcxMjAgZWJkMDYxODM4ZmIxNzQ1NWY5ODVmYmM1NmQzMzBlNmU1ODE5MGYzMyBsZWdhY3ktdHJ1bmsKKzc3MTIxIDVlMGE5NDcxNjAxZjYzNDkzYmJmZGFlOTg0YmM0Nzc1ZWI1NTgyN2YgcHkzaworNzcxMjIgOGM2MGE5NTVkMDJjMGEyZDI0OTg2YjdjYzUyOGQ3ZGQ4NWNmNTVkZiBsZWdhY3ktdHJ1bmsKKzc3MTI0IGUzZjU5MTRkOWJiM2ZlYTdmODljNTVjNWZkMzFhNmRhNzA1OGQ2NmUgcHkzaworNzcxMjUgMjNmNDY3MTUxNzU2YTdjODNlODczNWYxMTMxMzdhZjEyZGFmMGVhNiByZWxlYXNlMjYtbWFpbnQKKzc3MTI2IGM1MDJlYzI0MzQ1ODhiOGJjZTgwOTk2YzViYjFjMDI3M2U2OTkxZTkgbGVnYWN5LXRydW5rCis3NzEyNyA3OTBlOGZjZjUxNzk1ZjMyYWE1OGRmOWUyZjVmOTE3NjlkNmFlYjU1IGxlZ2FjeS10cnVuaworNzcxMjggNmZkZTExZjRkODQyNjY2ZjMxOWViODg3M2VkNDVjMDc5NWVjZGUxZiBsZWdhY3ktdHJ1bmsKKzc3MTI5IGZiNjcxZGYwZjVjYzk2NmE4MTczNTNlZjkzN2NhYjY1MWNlOTViMjYgcHkzaworNzcxMzAgZTUzZTU1MjUyYmE4NGJjZTBlOWJmMTMzZTBiYmVkMDYxMWQ1NGRmZSBsZWdhY3ktdHJ1bmsKKzc3MTMxIDkyYTU4YjgwMTIyMDY3MzM0OTc3YTU5MGNmODFkMzBjYTMxYmIwNDYgcmVsZWFzZTI2LW1haW50Cis3NzEzMiAxOWYyMzU5OTQ0ZWI0MzVkMWI2ZTUyNzY0NTk2MjU4NWIxNTAyNTM4IHB5M2sKKzc3MTMzIDI0NGI5NzlkNTQ0YzEyNDg0NjQwMTg2ZTlhNzQzNTA3OTE0MGUwMDUgcmVsZWFzZTI2LW1haW50Cis3NzEzNCBkNGFjM2E4MDAwYzc1MTg4ZDAyOWQ3NTEzOWM3YjUyMGU3ZTk0YjNjIHJlbGVhc2UzMS1tYWludAorNzcxMzUgYTdmNmE1M2RhYTEyZDFiNWM2NTZmYmUzN2I5ZDI1ZGRiNTE5M2NmMCByZWxlYXNlMzEtbWFpbnQKKzc3MTM2IDRmMDk4OGU4ZmNiMTU2ZGRlYmM0NDllZDQxMWE1MzIwOTVlODE3NjEgbGVnYWN5LXRydW5rCis3NzEzOSBhYzVmZDg5MDk5OThmZWQ5ZjYyOGY1YzVjY2EyOWFkNmNiMDMzMTdkIGxlZ2FjeS10cnVuaworNzcxNDAgMzg1N2NkNGQ1YjM1OTczYjViOTMzMjIzYjllMjZhYzJlOGM0N2M1NiBsZWdhY3ktdHJ1bmsKKzc3MTQxIDJhYTBkOWYwMWQ0NzUzYjU2NTA5Y2Y1ZTA5YjBiZDU5NmVjNzM5YWQgcmVsZWFzZTI2LW1haW50Cis3NzE0MiA2MjQ4YjdmZGVjMGRiYjU5ZjlkN2E0NDM3MTY0NzM3MDVlNWIwNGRhIHB5M2sKKzc3MTQ1IGFkNjA5ZDBmNTE1MDk3NDJhMTQyZmVlYWFhYWUwYWU5MzNhZTUzMzIgbGVnYWN5LXRydW5rCis3NzE0NiA3NDBkYmFlMmUzMGNmZmQwMTIwNGQ4M2IyNDNjN2NlYjlmYzZkYjk3IHB5M2sKKzc3MTQ3IDE3NGEyOGM5ZmI0MDcwMjUwZjFkZTExNGE2OTAxOWQ1YWY0NjBkOTMgcmVsZWFzZTMxLW1haW50Cis3NzE0OCA1YWQ1YTFkNjEyZTVkMTQ4YzdlZjU2OTdlMTI2MmI0NDNiMDYzN2MyIHJlbGVhc2UyNi1tYWludAorNzcxNDkgOWNiMjc1ZGI0ZDZkNTg0YzE5MmVlZGNlMjYxNWExZTVmODhkNTBmNiBweTNrCis3NzE1MCAwMGZlNjg5ZjJiNzhkNTVjNTM2MjBmOTBhNWNlMmQ4Njg1ZjMyOTI4IHJlbGVhc2UzMS1tYWludAorNzcxNTEgOGQ5YzkzNDBiMTJlMTZjOGMzNTU1MGFhMzVjOTQ3YjhmZTNmMjM0YSBsZWdhY3ktdHJ1bmsKKzc3MTUyIDczNjFlZTJkZGZkYjdhNDQwZWI1M2FjMjRhNTNiZjYxNGM4M2U5ODcgbGVnYWN5LXRydW5rCis3NzE1NSBkYjYyOTc3YzU3MTNmOTBhN2NlN2M4MDljYzA3ZGQ4MDcxZjUzYTQyIGxlZ2FjeS10cnVuaworNzcxNTcgYWUxOWMyODdlOWMwZjg1NTZhMWVhNGEyZTcyNDFiNDEzYjU2NDk1NSBsZWdhY3ktdHJ1bmsKKzc3MTU5IDk2YTIzNzFiMTE0YjlkY2FjZWMyYjExNGNhMzc0MzI1YmQyZGE3YWYgcmVsZWFzZTI2LW1haW50Cis3NzE2MCA4MWNmMjRlNWNlOTI4ZTljOTAzYTllNjNhYjY0M2FjMjgwNTliYTdmIGxlZ2FjeS10cnVuaworNzcxNjEgNmMxOWE2YTY5N2E2MTFkNGNhNmQxMzFiNTAyYWFlMDllNjBkZmUwMyBweTNrCis3NzE2MiA0NmY0YjdiNWI0ZGRlNDdlYTliNWFiZGViM2E2MDk5MTZhNDQzNjViIHJlbGVhc2UzMS1tYWludAorNzcxNjMgOGRjNmRmYTQxZmQ1NjVjZWFjNzYxZmVmMWMwYjc4NWI1ZWJkZDVlMiBweTNrCis3NzE2NCAyNTI4NTgyZDY4ZjZiZjY5NjY0MmJiNWNlN2RiY2I2NTlmNzAwZjMyIHJlbGVhc2UzMS1tYWludAorNzcxNjUgMzZhZWQ5ZTM2NDJkYzRkMzM2NzhlN2FmNTZlMmRiNDEyMDY4ODNjMyByZWxlYXNlMjYtbWFpbnQKKzc3MTY3IGVmYTU5NzYzMzAxMGVmZTNjOGIzNmEwNDE1Y2Y4OTE4OTg3N2E0OWMgcHkzaworNzcxNjggOTgwYzc5ZmJkNGM1ZGY0NWNjMmYxM2ZjOTJiMjE1ZmJlODY1Mzg5YiBweTNrCis3NzE2OSA4ZmVlMmFiNTNlNzE2YWNlYzlmZDk3NmY4ODhhNmJiYjcwYWE5MDNlIGxlZ2FjeS10cnVuaworNzcxNzAgMjI4YmJhMmQxZjNmNzUwODZmNzEyYWRlNzFlMzA4NDNmNDc5MTJjMSBweTNrCis3NzE3MSBlMDc4NTc5OTg0YTRlNGZjMTM4MjlhNzVlMzYyNTBiNTBjZjAyY2ZkIHJlbGVhc2UzMS1tYWludAorNzcxNzIgYjNkMzdlYjk2MzIyMzU0NjMyNjMzMjlmNTRjMWQ5ZWEyM2U5N2UyZSBweTNrCis3NzE3MyA0ZDZkOTUyZmUyODgxMTgzMzQ3MjBlMTE4YzQzOTQwYjQ1MjY3MzY0IHB5M2sKKzc3MTc0IGQ1MmE3MTc5ZWVjZWUyZWQ1Yzg2ZjU5ZTYwOWQ0YjJkNTU2NTNkMjMgcHkzaworNzcxNzYgNDQzZjcxZGQ1Y2YwMmFiZDk1MTQ3MzRiNTM3MjM3NzcxZTEyNTVlOCBweTNrCis3NzE3NyBhOTJmMGEwYWZlNTY3NDk5ZDhhYzJkZTJhYmIwZWUwYTFmYzRkNWYwIHJlbGVhc2UzMS1tYWludAorNzcxNzggMzg0YTdhMzcwOWRjOGY5ZTBlZDhhNjgyZmU2ZDFmMjcyZTAzZWY3OCBsZWdhY3ktdHJ1bmsKKzc3MTc5IGJmOTdhY2Y4ZWNiMTg3MGMxZGY4YzA5ZGRmOWY2YzI5OGIwZDk1NjQgcHkzaworNzcxODAgN2M2MzA5MzFjYzgzMWM3ZTZiNzQ0NDliZTBlNWQ2MWJhOTRiNmVkYSBsZWdhY3ktdHJ1bmsKKzc3MTgxIDIzNmRjZjE3MWI3NDZmMjIzZDJlZDA0ZTRkZDg3YjkxNzk2NjI1MzUgbGVnYWN5LXRydW5rCis3NzE4MiAxZTkyZmU1OTM5MTZkYzBjZTM2MzMwZWIwNDViNjlkNWIwMjU3MDRkIHJlbGVhc2UyNi1tYWludAorNzcxODMgZGJhYTRlZWVhZWI4ZDI2ZmE5ZDFkMDY3MjMwYjVhYWZkNjhhMGRhZCBweTNrCis3NzE4NCA1YWZhMTY5MTQyOTVlNWY3ZDZkNDg1YWYxOWViOTMwODQzOTZmMmEyIHB5M2sKKzc3MTg1IDI1YWE0M2U0MzAyYmY1ZGIzYzM5MmVlYWNlYjcyZTMyYWY2OTM5OGMgbGVnYWN5LXRydW5rCis3NzE4NiA3ZDZiZmY3MjIxOTUwZmU4ZDIyZDBiYzIyZjZhOTJhYjMzMDFiMGQxIGxlZ2FjeS10cnVuaworNzcxODcgODU2YTQ1YzBiNmM0MWM2NTg4NmI3MGM3MmUzMTI0ZmM5ZGQwNjk1ZiBsZWdhY3ktdHJ1bmsKKzc3MTg4IDViNDcxODQ3ZjZlYTZlYzczN2UzYmNiOTFkZjIwMGI1MDI4M2Q2MDcgbGVnYWN5LXRydW5rCis3NzE4OSBhYjQwYjkzNmJkMWMxNDMxNzg2NDg5OTk3ODBkYWVhYTJlZTIzNGRiIGxlZ2FjeS10cnVuaworNzcxOTAgZTYyYmUwODQ3OGJjZGFiNjg0OGVjOTdhMGMxZmQ1ZTFiMWU2MjkyNCBweTNrCis3NzE5MSAxNjY2ZWU4ZGFmOWIxMjQ5MzAxYWZlY2YwNjhhYjVkZDEzY2I4NWM2IHJlbGVhc2UyNi1tYWludAorNzcxOTIgNTMxMDBkYjM1MTI4NGY3YjUwZWI3NmQxZDA5MzhiNTMyODFkNmI0ZSByZWxlYXNlMzEtbWFpbnQKKzc3MTkzIDg0YjAwZTZiZDY5YjIxZmUzZjRiNGYyMjAxNjNkOGJmZDc0NmExZjIgbGVnYWN5LXRydW5rCis3NzE5NCA2MjEyZWRjMjJjYmRmOGNlOWFkZGIyNTRmZTZiNzNiMWYwN2U4MDEyIHJlbGVhc2UyNi1tYWludAorNzcxOTUgYmFiZmMwNjEyMTJjMTc0M2YzMTE1YWZkYTMxNzcxYWVhMWM4MDllOCByZWxlYXNlMjYtbWFpbnQKKzc3MTk2IGQ4ZTY0YTg0NDczY2RkNTRhOWMxMzFkMjY3YzBiYjMyNTU3YzMxMmYgcHkzaworNzcxOTcgM2UyMmM3ZTlmMzA3Y2IxYzkzZjUzOGRhZTE5ODViZjZmYzI2ODk3YiByZWxlYXNlMzEtbWFpbnQKKzc3MTk4IGU0NTUzYjYwN2I0M2RmYzE3Y2IzNGMzODI0NDYxMjA3NzAzODk0YWYgbGVnYWN5LXRydW5rCis3NzE5OSA0MmNmYjcyN2ZmNDg1YTc4ZmI1MzkyMWFiMDhkZmM5YTQ2YTlhYWVhIHJlbGVhc2UyNi1tYWludAorNzcyMDAgZTIyNjFiNjFkZjA2NjA1YjJiZDViNDkyZmRkNTE2NmVkMTI0MTcyMSBweTNrCis3NzIwMSA3MWJiODQyYjc5YWIyZTMwYTYwZWM0OGJiNzU2YTczZDZmZDc0OWZmIHB5M2sKKzc3MjAyIDIxMmE3MjI4NjRhMWFlODc3NGY1MmE5MjZmZDkxMWM1NmExODA3YWMgcmVsZWFzZTMxLW1haW50Cis3NzIwMyAwYmU0NWI1Y2YwZDYzZGMzMjRiZjc1NDljNWIzYWUxMjQ2YTk4MDdlIGxlZ2FjeS10cnVuaworNzcyMDQgZmNlNjYxMTI0MWQxMDkyY2ExYjdkNmUzMzU0YTZmODgwMjI1ZGI2OCBsZWdhY3ktdHJ1bmsKKzc3MjA1IDFkMGZkZTU5ZGRlYThmYTRmMWQwYjZmZjNhMmYwMTQ2ZjU4ZmEwYjkgcmVsZWFzZTI2LW1haW50Cis3NzIwNiA2OGE3NTRhYmNmYjY4YjNiMDMxY2E2OWFkNGI4Yjg4MjY3MmVhNmFiIHB5M2sKKzc3MjA3IGMwMjZiOTEwYTVlNDg2NWVlMmYyYThjOTU3MjBiNjQ0NDcyZTlhMTkgcHkzaworNzcyMDggZmM3NWE5OThhZGJmZWE3NDc1Mzk5NDM3OTE5NmMyYjJmODJlNGEzYyByZWxlYXNlMzEtbWFpbnQKKzc3MjA5IGFkYjkyMWYwNGI4Nzc1NzQwM2ZhYjhiYjI5YjMyZGJhNTJjODhlZjMgbGVnYWN5LXRydW5rCis3NzIxMCBmZjJhYmI5NGM2OGViZjUyZTJhNTliZmU3NDQzYWQzY2UzMTE4M2JlIHRhcmVrX3N5c2NvbmZpZworNzcyMTEgOWE1NWIxMTczZDIwMDZjNDY4NGJlMTkyNmUxZmY0MmQwNzg0M2YwNSB0YXJla19zeXNjb25maWcKKzc3MjEyIGYwMjg4MTMzMjM0MmExYTc2ZjAzNzFiMDAxNTQxYTIyMjk5ZWEwMWIgbGVnYWN5LXRydW5rCis3NzIxMyBiYWE3MGQ0MWM5YmRiNWJlZDBkNzRkYzA5OWQ2MTAzODcxZGYyMzk0IGxlZ2FjeS10cnVuaworNzcyMTQgOTQxOGY0YjAxMDQ1MWY3YjRkMWZkMDJiNWViMDBmYjdmOTM0MmM3MCBsZWdhY3ktdHJ1bmsKKzc3MjE1IGMzNTA3NWYyYThmMzBlNWFmZGMzYmVlZjllZmZkNjBhYTcxZWFkYzkgbGVnYWN5LXRydW5rCis3NzIxNiBiMGRkNmMyMWRjYmY0NDgzYjFiMDVlYjVhYjA0YTlhNTRkYzAzYjIxIHB5M2sKKzc3MjE3IDRmZmI5MzM4OTI1Njg3ODdhZjEzNTE4Njk2NmU0ZGJlM2U4ZDI3NjcgcmVsZWFzZTMxLW1haW50Cis3NzIxOCAyZGUyNGJiMzNjYzU3YzUwY2ZhNjRjMDU0MjA5N2E1M2FlZTJkNzFlIGxlZ2FjeS10cnVuaworNzcyMTkgMTM5NGE0MDNkYzg5ZTViNDJhYjQ0MmY2Mjc2MTYxYzlkYWVlYzE4MyByZWxlYXNlMjYtbWFpbnQKKzc3MjIwIDc4Y2E2OWNmYzg5NzhiNzM5OTlmM2MxNDQ1NjRhODkyYTE2ODQ3MDkgcHkzaworNzcyMjEgZjA5ZWI5MmVkMGFiMmFmNTUxYTY3YjFlZmIyMTJmMWVmMTIzMzIxOCByZWxlYXNlMzEtbWFpbnQKKzc3MjIyIGFjNTI4YThhMzZjZjVjNTM0MmM4M2M3Njk0ZTZmM2I0NDg0NDhkYzMgbGVnYWN5LXRydW5rCis3NzIyMyA3NDdiMDFhMDUzMDA2ODc2YzM5ODlhYTAyNTg1YmIxN2Y4MWMzMDJhIHJlbGVhc2UyNi1tYWludAorNzcyMjQgYTcyOGZhNDgxYWQ0Mzg4NzRhZTYzZTFhNmQ3Y2FlYWNiNTljYmQ3NSBweTNrCis3NzIyNiBiNWMxY2ZkYzY4YjkyOWY0NDlhNWU1ZWE2NmNiMGZjODY5NjNlOGIzIGxlZ2FjeS10cnVuaworNzcyMjcgNmM4YzA0MGMxNDQzYjc1MmEyYzY0ODNjNTJjZjA5MzJjNjI4MTM0MSBsZWdhY3ktdHJ1bmsKKzc3MjI4IDE4YmQxYzY3ZjVlMmQ0YmY4MTE2MTU1ZTY1NWU4N2I3YTg4N2MwMjMgcHkzaworNzcyMjkgYjhlMzhkMGE1MmQ3ZTEyNzg4YjA5MmRiYjM1OTQ4NDFmOGM5MmY1NiBsZWdhY3ktdHJ1bmsKKzc3MjMwIDZkMTcwMjVjODRjMTRlNGE4ZjMxZWI0M2NjYWQ3ZTFmYzM1MDZjMDcgbGVnYWN5LXRydW5rCis3NzIzMSBmYzg3YTJmYzQ3YTU5NWVhYmI1NmY1ZDExOWQ1ODAwODI0NmZiMDIyIHJlbGVhc2UyNi1tYWludAorNzcyMzIgYmQyNGUxZTkwZjdjYzI2NmZmOGIzMzllOTUyY2Y2OTIwOWI4NWVlOCBweTNrCis3NzIzMyBhZGM5Y2RjMDJkZjEwMDljODg3MzQ2ZTI3ZGFlNDQxNTQ5NGFlMTU5IHJlbGVhc2UzMS1tYWludAorNzcyMzQgMjdjOTQ2ZmY3NmEzYTkyYzk5MDliYThjMzk0ZjViMjQzYzY4ZDJlMiBsZWdhY3ktdHJ1bmsKKzc3MjM1IDU4YTViYjk3MWU5NTJiN2E1ZTY5MjQ4MTU3N2I5YWNmMjZkYjU0MzYgcmVsZWFzZTI2LW1haW50Cis3NzIzNiBjMmZiMDc3NDI0NDVjZjg4ZmZlYWQxZjQyNDk0YTYwNjZhMTIxZTlkIHB5M2sKKzc3MjM3IDQ2ZDYwZTVmZjEwM2U5NWM0NTFhMTQ0NTRlZTA5MzdiYzVhMDJmNDMgcHkzaworNzcyMzggMzkwZDY3NGVkNGM3MzI0Nzg2Mzg5OWMzMGNmNzI4NzIxZDA0YzFjMCByZWxlYXNlMzEtbWFpbnQKKzc3MjQxIGRkZjYxY2Q3NzVlMDE5ZDRiZjNjYTk3MzgxNGQyYjVmMWM1YzNhMGYgbGVnYWN5LXRydW5rCis3NzI0MiA2MjYzYTZmYmY3ZDkzNDNmODVjZjI1NGUwY2UzZTIwNGM5ZWYzNWMxIGxlZ2FjeS10cnVuaworNzcyNDMgMmQ1YWI0ZDA4Yzg4NTBiNGZhN2ZiZDMxYTkwOGMxNjBkMTM3YWY4MyBweTNrCis3NzI0NCBhMzI2NjFiMzM0ZjY3NjgzODM5YTNlZjM3ZGY2OTQ4MzRhODJhZDhhIHJlbGVhc2UyNi1tYWludAorNzcyNDUgMzEzMjY1ZDRlMDMyODEyZWZjNzgwM2ViYjViMzc2YTY4MWEzN2E1OSByZWxlYXNlMzEtbWFpbnQKKzc3MjQ2IGExMDM1Y2I0YTkyNWZjODIxNzllNDZkNDE3ZWFiZTlmOTBlY2M1NDIgcHkzaworNzcyNDcgZjVlNDk2YTg0MTdmMzE1YzRhM2JlNDE4ZjY1NTdhN2U4YzE2NDJhYSBsZWdhY3ktdHJ1bmsKKzc3MjQ4IGE2YWNlMzBjYjkxMjI0YTk1YTI4MTg1ZWVmZmVhMTMyM2Q3ZGY0MjggcHkzaworNzcyNDkgNGFjZDhmYWVhMmQ5MzNiNDk3NzAzOTE0YzJhYWJiNWQwOGYwODU1MCBsZWdhY3ktdHJ1bmsKKzc3MjUwIGNjOTdhOTZlNGEwOTA4MjY3NTY3NWYyMDhiNDZkYjAxYmMzNDdkODAgcHkzaworNzcyNTEgOTI2MTE4NDE3OTc5MmE4ODAxZTU0YjVmYzIxMjg0ZjhhNGQ3YmViZSBsZWdhY3ktdHJ1bmsKKzc3MjUyIGZmNWJjMmZhMzhkNjZlZWM5ZWRkYjgwMjFmZGNjMDQ3ODg3Y2RmNWQgbGVnYWN5LXRydW5rCis3NzI1MyBiZTI3ZWEyYjM2NzlmMDRhNzRjNmMwZTZiNmY3YmQ0NmE0MzZjNDQyIHB5M2sKKzc3MjU0IGViOTVmZDk1ZTY1ZWRlYmI5OGFiODBhMDY2OTUwOWJkYmUyMDI1N2UgbGVnYWN5LXRydW5rCis3NzI1NSA1N2I5OTZjM2Q4ZmZiMzhkYzliMmY3OTA4NzgzOWNjZDA1MWY5Y2RkIHB5M2sKKzc3MjU2IGU5ODEyYjgxNmZmZGIxNzk1YzMwZmU1YjJlYTgxYTg1NDM2NmU5OWUgbGVnYWN5LXRydW5rCis3NzI1NyA5MWE1N2NjMDAyMGU0YWFjNmZmOTNkMzJkMjE2MmY5YTJiMDgyMzk4IGxlZ2FjeS10cnVuaworNzcyNTggMmEyMzk5NTM0NTkxN2NhNzI2ZDJmMTYyOTFiMWM3OTBiY2QzNDM0YiBweTNrCis3NzI1OSAzODU2Yzc2NGUxZjUyYzIwNGVkODEzNTcyZTFiZmI3ODMwNTU2ZGRkIHB5M2sKKzc3MjYwIGZlMTE3ZTVkMTNhMWZjYWVlNmEwYjdlYThhYTY0N2I5YTU5ZmEzN2YgbGVnYWN5LXRydW5rCis3NzI2MSBhYmJkYzMxZWE3OTA3YjA1NGQwMWM2N2YwNmE1MzE2ZDAzNGU4ZTY3IHB5M2sKKzc3MjYyIGZkOTE3NDRiMWNhYWI0OWQwZmI3YjRiMDM4ZDg4ZWU5OTYzNDI4NTQgbGVnYWN5LXRydW5rCis3NzI2MyA3MmUzZTg1YmFjOGIwZGMwMjljNWM1NDU2YTZiYzI0NmE0YmFjNjZiIGxlZ2FjeS10cnVuaworNzcyNjQgYTE5YWQyOTkwOTVmMjdkYjAyYTVhZmY0ODhkM2RkNjhhNzUzOGExZiBsZWdhY3ktdHJ1bmsKKzc3MjY1IGIwMzg2ZmU2NTBjNzU5NjBmZDM5NjljMDgzNmUzNmE5ZTUxOGY0MGEgcHkzaworNzcyNjYgOGM0YTcwN2MwYmQ4ZWVjNjk5YTBlMDI0Y2JmNmQwY2RhMzRjZjkxYyBsZWdhY3ktdHJ1bmsKKzc3MjY3IGMzYWRjZmFjMDc3MjI4NjJiNjIyYTFlZDkzODE0NTIyYTkyZTVkMzcgbGVnYWN5LXRydW5rCis3NzI2OCBhMGZjZTk2NjVmNDRhZDlmMTNiY2ZmM2Y4MTU2M2QxYjE2OTk2M2VkIHJlbGVhc2UyNi1tYWludAorNzcyNjkgMjQwMmYyOTFlODAxOWJhZWI5YmE5MDhhOTZkYjUxNTY0MWM0NTMyMiBweTNrCis3NzI3MCBlNTQ0MzRkMmUyYTdkMzdlMjRiMjQ0NTc5NTc1Y2I1ZGYzYzhmYjAzIHJlbGVhc2UzMS1tYWludAorNzcyNzEgZjZlMzQwMDE0Zjk2OTY5ZGY2ZmRmNTk3MzkzZWI1NTc3ODU4ZTQ4NSBsZWdhY3ktdHJ1bmsKKzc3MjcyIGViOTI0ZmFkOTI3MjA2MjBkOTQ4NjJhNmNiY2U1NzU5NDRlNWU0ZjggcmVsZWFzZTI2LW1haW50Cis3NzI3MyAwM2JmZTMyZWY4NDljYTg2M2Q2ODQwMzgxMGRmNmQ2NjQ1OWM5OTYyIHB5M2sKKzc3Mjc0IDM1MWZjNDI1MGMxYjBjN2E2NTk5ZDgyNWVhZDdmZjY1YTJkZTQ5N2QgcmVsZWFzZTMxLW1haW50Cis3NzI3NSAwZjhhNTg3OTI1NjNjMzM1NGJhMWViMzhkYTk5NTY1M2ZjZTlhMDY4IGxlZ2FjeS10cnVuaworNzcyNzYgOWI5YWRjNDJjNzNhMmFlYmIxNDhjZTRmY2M0YWY2Zjk3Y2I4ZmQ5YiBweTNrCis3NzI3NyA5YzFmMzA2ZmIwZGZhNTg0OGI1MzAzN2RhYjNmNDQ0MGQ1ZDk1NmQ3IHJlbGVhc2UyNi1tYWludAorNzcyNzggNzQ0ZTM5MWU0MmZkZjE2MDBlNWQ1MDdmNDU1NGRjMTE5ODY1YWYzYiByZWxlYXNlMzEtbWFpbnQKKzc3Mjc5IDUxNzQ5YjZkNjJkM2ViMmE0MDBmOGMzMzViNjY3ZGU5ZjZmMmViOTYgbGVnYWN5LXRydW5rCis3NzI4MCA5MGYxZTkyZGI2ZjIyNTU4ZTNlYzRjMzI5MWEyMWY5Y2M2NTdjZjJkIHJlbGVhc2UyNi1tYWludAorNzcyODEgYjU1ODUwMDcwYTU1MThlMzcxMmExZmNhNzliNjg1YjdiZmZiMjM5MSBweTNrCis3NzI4MiAyMzRiZWFhZmQwYzZkZDJhMDRmMzI2MThkNjNhYWJkNDEzN2QyOGEwIHJlbGVhc2UzMS1tYWludAorNzcyODMgMDZjOTY4ZWI0YjQwM2MyODU1MzI1MGQyNDEyYzFkNmM0MjcwZmZkZSBweTNrCis3NzI4NCA3YmNlNzI2ZWM0NDBiMTZkYzFlOThlMDk1MmVmOTQ3ZTQ4NDhjMzExIGxlZ2FjeS10cnVuaworNzcyODUgMzkxMTUyNGFmYzJkNmYxZmU4MjI2ZjRmZmYwMjM2NWNkMzVhNjE0NyBweTNrCis3NzI4NiBjNzI2NTIxNDViMjM1ZDczNzJjODhjY2UzMGE3M2ExMzc4YjliYzE5IGxlZ2FjeS10cnVuaworNzcyODcgZWNjOGE0NTg5NGM5NDFmYTJhZjFjNmI2MjRhODA2OTUzZmE4ZjM5YyBweTNrCis3NzI4OCBjODU3YjU2Njk5YjU3MmQ2YWI2OGJkOGQ1YjQyNjBjN2Q1ODhhNTRlIGxlZ2FjeS10cnVuaworNzcyODkgYzU4MDJhYjllMzRlNzE1NGY0Y2Q1MGI2NzU0YmQwYTdiZjFmY2FiZiBweTNrCis3NzI5MCBmYzgzM2VkYmE3Njk5ZmJiY2NlYWQ4ZmI4NDU1ZjU1MzRmNGNkNWVlIGxlZ2FjeS10cnVuaworNzcyOTEgMmNiZGFiMjQ5ODU4OTcwZDg0MjNiOGI3OTI0N2YxYzU5NjJiMzExZSBweTNrCis3NzI5MiA0YmMyNmE4MGU3MzdlYTNkM2Q1NTZiZTkzNjY0NDk4ZmY1YjY1NjZjIGxlZ2FjeS10cnVuaworNzcyOTMgZjdlMDliYTBjYjU1YTNmM2I5NjIyOWNiYjMxMmNiMmZlMTU1Y2JmNSBsZWdhY3ktdHJ1bmsKKzc3Mjk0IDYwNDlmZTQwMjJmZmE0NjdjMGYwNTQ2ODFhN2Y2MzFhYjM1Y2NlMDMgcHkzaworNzcyOTUgZDM5OWY2ZGM5ZWU0ODM5ZjNlZDM3MzRmZDg2MDAzNmYxMzEyN2VkYiBweTNrCis3NzI5NiAwZmYyZGFhODNkMGQ3ZDUzZWIzOWQ3ZWVkMmNiN2I0NjVlZGViYjk3IHB5M2sKKzc3Mjk3IGVmYmFjN2QzYTM2ODUwNDRmYjVjMmQ4NzM5OTk2MjllMjc1NTk1MWYgcHkzaworNzcyOTggMGZjZWY5ZDM5NTk0MDFiMTg0YWRjMmE5MTJhMjFiNmY5NjgxOGNiNSBsZWdhY3ktdHJ1bmsKKzc3Mjk5IDU5YzQ3MTQxODcxODVmMDkxZDgwODE1NzA4MzY2N2Y3MTNjMGVjZDUgcHkzaworNzczMDAgMmY2NzYyNTg4NmY2MDAzNTU3ZWI3ZjlhOGQ0ODE5NmU0Nzk2N2JmZiBweTNrCis3NzMwMSBkNTcyOTFmNWU2NjgxMWMxYjE5OTU0MDYxMmNjZmY5MzI5ODY2Nzg4IHJlbGVhc2UzMS1tYWludAorNzczMDIgOGNhMzc3ODUzMzIxZTNlZDZhNzE0MWNiYmY1NzczZDJlZjdhZGJlZCBsZWdhY3ktdHJ1bmsKKzc3MzAzIDRmYjhlYWYxNGYwOWNiMTlmN2Y3OTQ1MzI0NWZhZWRjZjg5OWE1OTYgcmVsZWFzZTI2LW1haW50Cis3NzMwNCBlMWYxMzEzY2U2ZGExOGY3MmY5MDQwZTVlNjk2NmYyODU4ZjQxOTA5IHB5M2sKKzc3MzA1IDcwZjZmYTMwODRlNjdkZDg4Mjg4NjdjMDY2NDIxMGNiZTE0NzQ0NTIgcmVsZWFzZTMxLW1haW50Cis3NzMwNiBhZmY1ZGU1Y2M0NDEwZmQ4ZDEyZWZhYmE2NzkxNWEyNjE5NmJhNDcyIGxlZ2FjeS10cnVuaworNzczMDcgMGZlMjVlMDdiNzdiM2NjYWQxYjM3OWJkYmY4ZDUzZWRkNmMxMzUzNiByZWxlYXNlMjYtbWFpbnQKKzc3MzA4IDMxNzUyY2EwMDdjZjJmM2U0MGI1M2MyZjA3Y2ZmYzAyMTFiMDFiMDAgcHkzaworNzczMDkgZmEyYjI3ZmE1NDE5ZTgxZjlmYzU0ZGQ4ZDQwZWRjZTlkNWYxYzIyYiByZWxlYXNlMzEtbWFpbnQKKzc3MzEwIDQ0MmUxNzBiNTZjM2Y3ZjQ5ZmRhZWYzMGExMTlhZGM5NTZhMzQwNzIgbGVnYWN5LXRydW5rCis3NzMxMSBlNjIyYjJjZmVmMTJkNmZmMTkzODY1ZGE0YjliZDNmYmQ0ZWNiZTAyIGxlZ2FjeS10cnVuaworNzczMTIgNzc2NjQ3ZTNmYjA3ZGQyNGM0YjhjZjliZDM5M2QyOTEzZmU0NDNmNiBweTNrCis3NzMxMyBiMDU3NDNjZTVlOTQzMmZmNTY3NTkzMGEzYWVmYzdiYjljMjZmOTdjIGxlZ2FjeS10cnVuaworNzczMTQgNGFhYjAyOTU0ZGUxZDlkY2RkNDIxNDEwMjY2ZTI3Zjg1M2E1NGQ3NyBweTNrCis3NzMxNSAyMmUwZmMyMGU5MTEzM2Q4NzNjZTg1ZDhlYWQyNmZmMzgyYzIzYjIxIHJlbGVhc2UzMS1tYWludAorNzczMTYgMmNkYmE1MTY3ZGYxYTE1NTg4NDU0ODY1NTJiNWRiMzdiODFiM2JjOCBweTNrCis3NzMxNyBhMmQ2ZDM0NTQ3MGU5NGEzODA2ODVhYjA1N2NlMmFkZTE1OTA4Yjc4IGxlZ2FjeS10cnVuaworNzczMTkgM2VjZWVmMzc4MDY1YTU1YTk3ZDZiMmQyMmQ1YzY3NWNiODBhM2IxMCByZWxlYXNlMjYtbWFpbnQKKzc3MzIyIGY5ZDJjMzQyNmUxNDhjNTExNWEzMzI4NmZmYTNhMDE2YTVkZjczM2MgcHkzay1jZGVjaW1hbAorNzczMjMgZDZiYTM3ZTMyNzc2MzcwNjdkZDgyYTU4Y2Q1NzFmYTQxZGQ1MjU4NSBweTNrLWNkZWNpbWFsCis3NzMyNCA4ODJjOWU3MTFhMmQwNTkzZjRjYmQ1ZmQzYzA5NjUwODQxMTZjZWY0IGxlZ2FjeS10cnVuaworNzczMjUgODZiZjQ0MGJmOWJmMzU3YWNkY2I0MzA3NjNkMWRjZTdlZjdiZDM3MCByZWxlYXNlMjYtbWFpbnQKKzc3MzI2IDYxM2I5OGQwZDg4YmUwMmY3ZDU0N2UyMDgyM2RlMzg0NTJhZTgwMTQgcHkzaworNzczMjcgMDdhNzQ5ZjA2NmExMTcxZjM1YjM2NGU4MjJmZDI4YzkzZTQ0ZjExMyByZWxlYXNlMzEtbWFpbnQKKzc3MzI4IGExOTAxNzExYjIyNWI0MDM5YmNhOGVmMTU5N2FlMmJkZWE4N2E5M2MgcHkzay1jZGVjaW1hbAorNzczMjkgMzA3MDY2ZjAyYWM1MmE0MjMzZDdiNzk4YmU1MjUxZTAxN2JmYTU5YyBweTNrLWNkZWNpbWFsCis3NzMzMSBmNTYwYTgxN2JmY2I1MTI1MjA0NjI4NTk2NjM3MDhlYmFjNDZmNDNkIGxlZ2FjeS10cnVuaworNzczMzIgOGU4MmRkNTUyMmYwMzljNzhmODZjMDE2MWRmZjMzOTNmOWY4Njg2YiBsZWdhY3ktdHJ1bmsKKzc3MzMzIGE4ZmJmMjk0ZDIyZTVjNWZkOTg0ZjVkMWNjNjgyM2E2YzRiZDYwOTYgbGVnYWN5LXRydW5rCis3NzMzNCA5OWU3YzFiOGIxZTFlZTE5ODM5N2IyM2U0Y2MwMTE2MjIzNzE2NmUzIHJlbGVhc2UyNi1tYWludAorNzczMzUgYjNiYjhiM2U1ZTRlYmE1ZTY4YWEyMjljZjllMzVkMjNlYTc2YWM0MiByZWxlYXNlMzEtbWFpbnQKKzc3MzM2IDBmYTllZTRlYWI4ODc0M2Y1ODAyMGUzOTI2NjgyOTRkNGNlM2E4MGMgcmVsZWFzZTI2LW1haW50Cis3NzMzNyA2YWQ1M2Y2NzA1NmE4NDIwNzQ3YmMxYTlhMmY5ZDJkMWM5YzQ1OTc1IGxlZ2FjeS10cnVuaworNzczMzggMjVjMWU1N2NhMWIzZTE4OTdkOGZjM2EyZmI3ODZjN2ZjYmE5NGJjOSBsZWdhY3ktdHJ1bmsKKzc3MzM5IDYxNDRjZDRkNDIxYmEzMjZkY2FhYTg0ZmE2Y2IyNWMxNGM1YWNmMjkgbGVnYWN5LXRydW5rCis3NzM0MCBjNjE4MTM3ZjNmZDNiN2Q0OTViMTlkOTlmMTQyMTFjMmI3ZGU4ZDk1IHJlbGVhc2UyNi1tYWludAorNzczNDEgN2IxMjU0NTczNjU2NGJjOTk3MDc1NjM4MjlhYzA1YmY4YTA4OWNmMSBweTNrCis3NzM0MiA4NzE2MTA2OWVlZjIzZmNlZTI3YTVhZTNjNGY2NzE4MGRlMTcxNGM3IHB5M2stY2RlY2ltYWwKKzc3MzQ0IDMxNWI1OGNiMTNhNjM3YzlkZjUxMGE2N2E0YjljZjdhOTYzMmRhYTMgcHkzay1jZGVjaW1hbAorNzczNDUgZDg4ZTNmNTk4YWE0MTJjZjNjM2Q3Yjc3ODM1MGRiOGE3MmRkMDlmNiBweTNrLWNkZWNpbWFsCis3NzM0NiBkZTczYjg1OGRlMTFkMjEzOWNjNGY2NGZkZGNhNDg2YWQyMTZmYmI0IHB5M2stY2RlY2ltYWwKKzc3MzQ3IGZlNWVjOThkZTlkYTFlNzMwOWRmNTQwN2I3MTIwMmQ1YjFmOTgwNmQgcHkzay1jZGVjaW1hbAorNzczNDggYjgyNjk0MTA3MTUxYzI4YTVlMWNjNDA2ZDgxNzBlMDg0ODg1YmNjNSBweTNrLWNkZWNpbWFsCis3NzM0OSAyMjQ1ODg0Yzg2ZTYxNTcxYmQyN2RiNzA4M2MwZjU4Yzk4NjIwOTlkIHB5M2stY2RlY2ltYWwKKzc3MzUwIGUxM2QwNzI0M2M3M2EwYzgyYzA4YWRiMDFkNGQ4NmY5NjVhNTk5ODQgcHkzay1jZGVjaW1hbAorNzczNTEgNzQwYTc4N2RjNTlhMGIyM2Y0Y2NkNmY2ZmNiNjFlYzZjOWY3MWJkMyBweTNrLWNkZWNpbWFsCis3NzM1MiAxNTkwNGQ1Yjk4ZGI0NzYwMGE1Yjg5OTNkZWZhOTdkMDFhZjI0MTUyIGxlZ2FjeS10cnVuaworNzczNTMgMjJhMzI5MmNmNjcyMmM3ZDBlZGY0NGVhZmQ1YWI4MzRmMmUzNjYxMCBsZWdhY3ktdHJ1bmsKKzc3MzU0IGUwYjdlODFhY2Y2ZjMzMjVjOTcxOTY4OTJiOTQ2OTcwOGI2NTgyOTkgbGVnYWN5LXRydW5rCis3NzM1NSA4OTAzZWE2YTllNjQ3OTE1Njc0NTVhNGZhYWFmNGVhYjMwYzkxZTJmIHB5M2sKKzc3MzU2IGQzOTQyMGEyN2U2NDYwOGM2MDc3Njk1ZjE0MmIxZDZhMmRhMDVkYTkgcmVsZWFzZTMxLW1haW50Cis3NzM1NyBhZmU2ZGRlODBhYmIzOWQ2MTg2NGJhYTA3NGY1MDg1Y2QyMDRjN2EzIHJlbGVhc2UyNi1tYWludAorNzczNTggNTE4YWNiMTJmMzU3ZWJhMDBkZGFjMWU4OWE2MWNmODRjZWZlZjc5NSBweTNrLWNkZWNpbWFsCis3NzM1OSBhNjRjZmVmMWRhMDc1MzdmMzY3MTRmZTMxZDBkZmI0MjExMTVhOGU0IGxlZ2FjeS10cnVuaworNzczNjAgZjIxZjJjOTMzMjllYjA4Nzg4OGQ1OGVmZWJmNGM5ZDYyYjljYmZhNyBsZWdhY3ktdHJ1bmsKKzc3MzYyIDEwYjY2NzhmNWMwNGIzYjYwNWI1NDhmZWJiZjY4YWE2NjdkY2ZhNDEgbGVnYWN5LXRydW5rCis3NzM2MyAzNWZlMjA2OWFiMWQ5ZWE4NGZkYThjN2Q1MjA1M2JmNmQ3OTM2YWZhIHB5M2sKKzc3MzY0IDU5ZTFiMDMwNmMwZTg2YjRjZGY0Yzc4NTk0ZWJhMjBhNWI1OTg3MzQgcmVsZWFzZTI2LW1haW50Cis3NzM2NSA4NGNhYWM3MWQ3OWJkM2U5ZWU3ZTc0ZTVjY2JiOGEzYzhkNTEyZGIyIHB5M2sKKzc3MzY2IGIwZWQzNWM5OWRjNmQ5YTAzZjJkMWIyMzkzYzAyZTE3MWUwZTI2MTcgcmVsZWFzZTMxLW1haW50Cis3NzM2NyA3YTY3NTE1YmY4ZTMwOGI2ODRmMDhiZWY4MDc1NTZjMzk3NzEzNTNlIHJlbGVhc2UyNi1tYWludAorNzczNjggN2NhZjU0Y2U1MjllN2QyMWIzY2M0ZjRlYjAxMmZkNDliZmYzMzZjZiBsZWdhY3ktdHJ1bmsKKzc3MzY5IDBkZDFhYTMzMjY1ZjM4YzI0NjZkYzc1ZjliMjA3MWEyZmRmYjdkNTYgbGVnYWN5LXRydW5rCis3NzM3MCA5ZThkNzc1MGU0NzBiOGUwMjk3YTgwOTZjNzdlNTExZmFlZTQ5MWM4IGxlZ2FjeS10cnVuaworNzczNzEgYmI3MjcwMzAwMDQ3ZjQ0Mzg2NTE4ZWMzYTVjMTYzYjZlYjAzZGRlMCBsZWdhY3ktdHJ1bmsKKzc3MzcyIDBjN2VhZDAzNGEwM2E5MmVkNWQ1ZDc3OWIyNjhmNTMyZDRmZjllZTIgcmVsZWFzZTI2LW1haW50Cis3NzM3MyBkYTNmZDdhNzc5YWNkMjc4MDdkZmI0OTRjNWVjZjJmODI4YTQ2OGVmIHB5M2sKKzc3Mzc0IGYzZmU1NzllOGYxNDdhZjE1OTNiMjk2MDQzMTNhMGZhYTIxMThiN2MgbGVnYWN5LXRydW5rCis3NzM3NSBmNWNlYmYxMWQ1ZTA4OTUxODI4MDdmOGQ4MDk3YjhlY2Q1MjkzOWUwIHB5M2sKKzc3Mzc2IGFjNDkzMWFiMDM2OWU2M2RkZTBiZmZlZDJlMTVlZDczMDFjNDc3OTIgcmVsZWFzZTI2LW1haW50Cis3NzM3NyA2MTUwMjcxMGZjZTlmMzY5MzRlOTcxMDE3YzVjYTAzNTNlMTkwYjlmIGxlZ2FjeS10cnVuaworNzczNzggMWJkYTFmNmI4NWQ0YWUwYWM5NzlkNGIwNzA5ZTUzZGNmZWM2MjJkYyByZWxlYXNlMjYtbWFpbnQKKzc3Mzc5IGQ4NDY4MjA4ZTg4MjQ2MDllNGQ0ODgwZDYzNmExYWNhNjQxNTgyMjQgcmVsZWFzZTI2LW1haW50Cis3NzM4MCBhMWZiNTc1NTMxYjEwMzRiODg2NTIyNWU4ODNiMTEyNzg3ODU0NThhIHB5M2sKKzc3MzgxIGI3NzQ5NWM3N2FlNDA3YTJlMTQ0ZTYyOWMzOWY1NTRkZDQxMzU4NmIgcmVsZWFzZTMxLW1haW50Cis3NzM4MiBhZWU1YTFmMzJiMDBiZjYwMWY1YzYyYmU2Y2E2NGU3YjdjNWI0ZDg4IGxlZ2FjeS10cnVuaworNzczODMgNDQxYmZjZDU1ZjJkOWI3YTM0YjlkYjc3ZDU1ZTMzNjk0ZWI3NWQwMSBweTNrCis3NzM4NCBhZGM4NWViYzcyNzFjYzIyZTI0ZTgxNjc4MmJiMmI4ZDdmYTNhNmIzIGxlZ2FjeS10cnVuaworNzczODUgYjM4NmU1M2RmOTA2OTJjNmEyNmE5ZTNiNTcwYzQyY2VmYTllZjEzMSBsZWdhY3ktdHJ1bmsKKzc3Mzg2IGU1N2NmYzUyNjY1NmY2NmQzZmMzZWEwYmE3YzkyMjc2YzRkZjliYzUgbGVnYWN5LXRydW5rCis3NzM4NyA1YWIyYmMyZjZkYjgxNWVlNTE0NGY4ODg4NGRmOWY0MDVkNWExYWIyIHB5M2sKKzc3Mzg4IGFmMWVkMTk3MTdlZjM5YzkzMjI3MGIyZmJkNDgzNDBkMDQyNTZiNDUgcHkzaworNzczODkgODlhOWRkOGM2MjhkNGMwNTQxYzE5ODgxYjA1ZDIzNjQyODRlNmEzMyBweTNrCis3NzM5MCBhYWRmYzMxYjNmMTQxZjM4OWZlZTRjNWVmYWNlMzVlZjBhNzQ5MGYyIHJlbGVhc2UzMS1tYWludAorNzczOTEgNDY3NWYxMWZiMTI1ZDY5ZTkwYmJmOGI0MTQ4NTY2Mzc2MmZiMzViOCBsZWdhY3ktdHJ1bmsKKzc3MzkyIGI0MDdlOGJlY2E0YTQ3ZTQwYmE0YWE2ZmE0MjAxYmQyZGZkNmRjZDkgcmVsZWFzZTI2LW1haW50Cis3NzM5MyBmMmQ1NDA5NmRjOGMyODM5MzkwODFjNmFhODBkZGU2ZmI0ZjhkODNiIHB5M2sKKzc3Mzk0IGY5YzBjNDExZjgwY2NkMTY2MjhiZTQwZDE3OWNjOWU5NjU1NTI4NTYgcHkzaworNzczOTUgYWI4OGRhYTRkMmNlMmMxZjNkZDY0ZmQwYzQwOTdlY2VmMDFjYTczNiBweTNrCis3NzM5NiBhN2FiMWFiZGViOTIwYTU0YzczOTk4Yzc3NmQ4MWQ5ZWYyZTYyNmRhIHB5M2sKKzc3Mzk3IGMxYmVjMmRiMWZjZDczNWU3MDJhZmNkM2Y1NWZiZjBiMGVmNzllMWMgcmVsZWFzZTMxLW1haW50Cis3NzM5OCA3ZTJhZjRlNTcwMzlmYmI2NzFiNGI2Zjk3MTQyMGJiYzEzYzRmYjQ0IHB5M2sKKzc3Mzk5IDY3ZjdhMGU5ZTIzMzI0MzljNzAzMmFjNGY5ZjQ3NWQ2OGVlNjJjZjMgcHkzaworNzc0MDAgYzJmZGYyNTMyOWZmMzBjZjhkNjhjMGMwZTdjZjQ3OWQ3YjIwMzc0NSBsZWdhY3ktdHJ1bmsKKzc3NDAxIDJjZmYzYmNlNDA5NjcyODM3OGIwMWE3NzM4OTI0ZDk2ZDNmZWE1NjAgbGVnYWN5LXRydW5rCis3NzQwMiAxZjE3NzgxOGYxZDBhNzM0ZmM2MTQyMmMzYmYyMjg5YTI0ODY2NTEzIGxlZ2FjeS10cnVuaworNzc0MDMgNzU1MGI0YjkwNWM3MDdjZmRiZjQ3ZmI2NWQ1MzA4NmE3ZDA0ODkyYSBsZWdhY3ktdHJ1bmsKKzc3NDA0IDNmYTY3MDdkZjk4Y2MwNGM5MjQ2MmY5Mjk2MjM1NDE0N2NkNWY4NGYgcmVsZWFzZTI2LW1haW50Cis3NzQwNSA3OGMzZWI1YzA1ZmIyODYzMzU1Yjk4MDE1Mzk1ZmI2Njk0MWJmMDZiIHB5M2sKKzc3NDA2IGU3ZmEzOTU5OTM1NTQxYTljYjFjNTJlMmJiZmFlYjMxOTFmNGZiYmIgcmVsZWFzZTMxLW1haW50Cis3NzQwNyAzMzk4YThiNzQzM2QwNjI2ZTc2MGY5ZmVhOGExYWI3N2MwN2FjNDAzIHB5M2sKKzc3NDA4IDQwNWM5YjYzOWUwNTUxNzgzOTdmNGEyYzY2NGNkYjU3NzdkYjNlZDEgcHkzaworNzc0MDkgZmJmNDk4N2U1MTRhMjcyODNmMTkyY2Y3NTY1NDlkNjBjNDdhZDk3MyByZWxlYXNlMzEtbWFpbnQKKzc3NDEwIDNlMTcxMjIyMWZhNjg2N2Y1ZGJlMzEzMTMwZDhlYjRjMDkxMTRlZWUgbGVnYWN5LXRydW5rCis3NzQxMSBhNjY2Njc3MDRhYjBlNmU4MWZjNjljOTRiMDI0YjJjYTg4ZTEwYjJhIGxlZ2FjeS10cnVuaworNzc0MTIgOTdhNDA0MTc5ZTU5ZDQ4ZTgwZDEyYjkxMWY5NjM2N2FiZGNmOTcyYSBsZWdhY3ktdHJ1bmsKKzc3NDEzIDI1NDI1NTdhMTJiZDcwY2QyN2NlYmYyNjQyZWQ4MDAyYjUyZDVhMzYgcmVsZWFzZTI2LW1haW50Cis3NzQxNCA3MWYyNDkxZDhmMmY0YTU3YTgzMDUxNmJmY2M0YWFlODI3NzFlMThmIHB5M2sKKzc3NDE1IDY4ZmE5NTNiNWU3NmIxNDFmZDc1NzVmZjJmYTNlNWQ1YmJlMmYwZWQgcmVsZWFzZTMxLW1haW50Cis3NzQxNiBjYzMyZDU3ZTA2YjA0MTc2MWJhYmM1OWM5MjBhZWUzMzY3OTY1OWI5IHJlbGVhc2UyNi1tYWludAorNzc0MTcgZjAwMTA5ZTE2ZWFiOTA4MzAwZmU4ZmU5MDNmMjBjOWQ0MzhmZDNjNiBweTNrCis3NzQxOCBkZDMxYjFjMDMzYjJiMGFhYjAyNzBlYTljZjRlOTFkODY1Zjc5Y2M1IHJlbGVhc2UzMS1tYWludAorNzc0MjAgZGNlNzRhODczMGY1N2NlYmMwNzNlNDQ1YWJkZTIyM2VjMGI3Y2NiNyBsZWdhY3ktdHJ1bmsKKzc3NDIxIDMzZTQwMjkwOWNmMjliYTBlZjNkMTgzMTU5Mzk3YmVhMTZkM2Y5MGEgbGVnYWN5LXRydW5rCis3NzQyMiBlZGZlZDBlMzJjZWRmM2I4NGM2ZTk5OTA1MjQ4NmE3NTBhM2Y1YmVlIGxlZ2FjeS10cnVuaworNzc0MjMgOGE1YWM5ZmY1MDU3ZjBlNjZmNjU2ODVjNGVlNTM2Mjc1ZGI5NTFjMyBsZWdhY3ktdHJ1bmsKKzc3NDI0IDJmOTM2Yjc4MzFiNjdjZmU3Y2ZkNzA0ODg1YzNjZDVmM2I1MzkyOTUgbGVnYWN5LXRydW5rCis3NzQyNSA4YTMyMDY5NGU1M2I1ZmM3OTU2NjVlNjMyNjBjMmMxMDdjY2ZmZjI4IHJlbGVhc2UyNi1tYWludAorNzc0MjYgMDVmYjcxZjAyNTNkOGRhMjJhNTNkYjRiZjkwNzA2ZjcyZjAyN2IxNiBsZWdhY3ktdHJ1bmsKKzc3NDI3IDhmNWNkM2ViN2M3MzRjZjY2ZWZjNWU2ZjgwZTBlNDY4NjcwZDdlOTMgcHkzaworNzc0MjggZDk4MDVhOTYzNTFjMDYwMWFhZGYwMzM4ZTAwMjY5NTBiNDJlZWQxOSBsZWdhY3ktdHJ1bmsKKzc3NDI5IGI0Y2UwYzhiMGJjZmZlODllNGUyMjgzNzNjY2MzNjYxOTRhZmNlNGIgcHkzaworNzc0MzAgOWM4NTJhMzFlODdjZTAxZjZmYzAyYTllMGNhNWU4NjdmZTNjYzJjNSByZWxlYXNlMzEtbWFpbnQKKzc3NDMxIDNlZWMyZTlkNjQ5M2Y1NWEwZDJmOTIyYWQzNjdlMjI5MTZkODYxNjEgbGVnYWN5LXRydW5rCis3NzQzMiAyMzVjODI2NDM0NzRjODk3MzAwZDM0ODU4MGFlM2YyNDk5OTBmYWM1IHJlbGVhc2UyNi1tYWludAorNzc0MzMgMzJlYWI0NDNhOTZiMTM1MWQwZjRiMTliNTI3YTYyYWQ2MGUyNTcyZCBweTNrCis3NzQzNCAzZWIyOWFjN2IyMGE2NGM5MWNjNzQ1MjdlMDM5YmRhZTVhY2Y4OTRmIHJlbGVhc2UzMS1tYWludAorNzc0MzYgZjIzNThkMzNmMTA5ZGRkZDVkZjgzMzk5MmFlMjMwZWMxZjI1MjYxYiByZWxlYXNlMjYtbWFpbnQKKzc3NDM3IGVmYTU4NjdkOGExNGQxOWNiOTNkN2YzNTQxNjljMzdjZmMxZThkZTQgcHkzaworNzc0MzggZTMwZmNiOTU2YjVmY2YyMmIxZGI2MGNkZmZjYzcxNjcwZTkyZTJhZSBsZWdhY3ktdHJ1bmsKKzc3NDM5IDQxY2VhNjZhMjQyNmE1NDYwZTE1MWUyMTA3NTllZDA2NzRjYWUzMGMgcmVsZWFzZTI2LW1haW50Cis3NzQ0MCA5ZjkwZGIyNzYwZDliODFlYmExN2MyMjM4Yjg2NjNmMjdjZGI2ZDkxIHB5M2sKKzc3NDQxIGQwOGQ4NmVhZDM3NWEyMmRiYjgzMDIwMTE2YjBkMGQwNGZjYWNkYjYgcHkzaworNzc0NDIgOGZkMTJlYTYzYzZhYzZlMmQ1ZDYzOTc0MDFhOGNlM2E3Nzg0NWQ3OCBsZWdhY3ktdHJ1bmsKKzc3NDQzIDJmNTRmN2U5YzJiMTliNjJiNTk1NDRjNDQxNGU3YmE5ZmYyOTg2ZmMgcmVsZWFzZTI2LW1haW50Cis3NzQ0NCA3Y2UyMjU4ZGVlOGE1ODljNjQ2MjhjNjZhMDIxNTI3MTY1NTBmZGNjIHB5M2sKKzc3NDQ1IDdkN2I1NzY1YjQ2ZjdjNGUxMjIxMjYwZDBkZjQ5OTQxNmQzNTRiOGEgbGVnYWN5LXRydW5rCis3NzQ0NiAxY2NhOGQ4ZjllZTUwZTZiYzY2NmJmNmE0MDA3M2RlZTViZWZmNjFmIHJlbGVhc2UyNi1tYWludAorNzc0NDcgYzVkYmVmYmM5MzIxMmNiNzVlMmU4OWFhNDgwMTVmMzFmNmE0MWJlMSBweTNrCis3NzQ0OCAyM2YyMWY0ODIyOTQ4NTVlYWI5YWJkN2M2ZjBhZTExNTMzYWNhZDc3IGxlZ2FjeS10cnVuaworNzc0NDkgYjc2NDk3MzNhMzU0NWU0MWFjODFiZmQ3NDAyZDUzNDZkNmQyNThhOCBweTNrCis3NzQ1MCAyYTlmNjZkZjRkYzQ2NzkzNjNmNWQzMzU5YTM1OTVmYWI4MDdlZjE0IGxlZ2FjeS10cnVuaworNzc0NTEgYjRmMzAxY2VhMTE1NmE0Y2JmOWU4YzYwNjhlMTEyMWIzN2I1NDkyOCBsZWdhY3ktdHJ1bmsKKzc3NDUyIGMzMmQzYjA4ZmNkYzE1NTk4NzZiNmJiYjMwMDQzMzY3NjY1MDgzOWMgcHkzaworNzc0NTMgYmUzMmY2MTExODNiOTAzZjQ2NTM3ZDY1NDEyZGE5MTRlOWNkNTRiZiByZWxlYXNlMzEtbWFpbnQKKzc3NDU0IGY1ZmQwMWJhNDdiZTBiN2U4ODIyOTQ1NDQyZDE2YmRjMjY3Mjg1NWMgcmVsZWFzZTI2LW1haW50Cis3NzQ1NSBiODBkMjk2Mjk3OGM4Y2YxOWQyZTViZDZjNTlmZWIwZjNlZGFiNWJhIGxlZ2FjeS10cnVuaworNzc0NTYgMmE5Y2ZlMmNlNTliNDBiYzk5OTc2M2MwZjVmYmUwZTk1ZmE0YWUyMSByZWxlYXNlMjYtbWFpbnQKKzc3NDU3IDY2MmRmZmMxYjM0ZDNmNjBkNWY2MTYwNzk3ZGVlMDU0M2MxODQ4OGUgcHkzaworNzc0NTggN2I1ZjVhZjRmNWFjYjJkZWZjYThlZTM3MTA3NmI4NWYzZmViMDUwMCByZWxlYXNlMzEtbWFpbnQKKzc3NDU5IGE2YmY2OGU2ZTgyNGM3OTAxODZhMjg2NDViNTc0YTQzZjAwYzQ4YmYgcHkzaworNzc0NjAgM2MwYTQzM2IyNmUxZmNhMWY0ODVkNjA2OWE0YTc0MDY0Yzg1MDZkZSByZWxlYXNlMzEtbWFpbnQKKzc3NDYxIDY2ZjFkNGE0Yzc5OTRmOTNiMmI0MTJiNTc3OTdiZDUwODc5OWNhYTEgbGVnYWN5LXRydW5rCis3NzQ2MiA1Y2ExOTQ4YThmZDY5MzIyMmU0NzVkMGJlOWRiYjQ1OTY0ZWU5ZjNlIHB5M2sKKzc3NDYzIGQ1MTM1ODY0NWU2MDYzNzU5OTMxNjE4MDE0ZjAzNmZmM2NkMWZjZTYgbGVnYWN5LXRydW5rCis3NzQ2NCA4NTM3YzM3MzZlOTk2NzdlYzViMjQ3NWZmMjE5NWUyYWQyZTQyNDRkIHB5M2sKKzc3NDY1IGQxZmQwYTM0YmIzNjgyOTAwMDVmZTY1NjM0ZTVjODk3YmYyY2I2NmUgcHkzaworNzc0NjYgYmFkMWFlM2ZkMDYwNzNhMjlmZDJjNGZjZWM3ODk1ZWU4MmRmYTYzNiBsZWdhY3ktdHJ1bmsKKzc3NDY3IDMxMjUwYzM0ODMzYTQ0MjJmYWE3YTA3OTJmOTRiYTJjMzcxODI2YTIgbGVnYWN5LXRydW5rCis3NzQ2OCAxNWIwNjY4ZjBkYzU5N2ZlNjRkMWEyZTRhOTAyNzQxOTk5MDBjNWExIHB5M2sKKzc3NDY5IDYyMmY3OWJiYTUyMzFhODNjNmU4YzBiZjg5MDA4NGIzZDIxYmJmODEgbGVnYWN5LXRydW5rCis3NzQ3MCA5MjI1ZWE2NzdjNGIyNzEzNzkwMDFjNDk3YzAxNzkyNzE1MDZkM2JlIGxlZ2FjeS10cnVuaworNzc0NzEgZTVlNTVmZmU5ZjczOGIwOGQzZTgxOTZiMjJmNGNmZWFiMjViYTFmOSBweTNrCis3NzQ3MiBiMjFlZmMwY2ZlOGJiZTU1MjA5NzgyODA3NDgzYTUyODc4MTk0YjA3IGxlZ2FjeS10cnVuaworNzc0NzMgOGUyN2QzYjhkMmVjNDU5NjhmMGFkNmMwN2I2Y2EzNDU3ZGEyZDE3YyBsZWdhY3ktdHJ1bmsKKzc3NDc0IGFiOTA1Zjc0YmYxMTdhMWE2OGQwN2U4NWI2MjAwYjdiYWExMDU0MTcgcHkzaworNzc0NzUgYzViNmE1YjgzYWI1ZGM2NzI3MDczZjFhMjA4Njc4MGJlNDRjYmU5NiBsZWdhY3ktdHJ1bmsKKzc3NDc2IDlmYzdmMjk3ZDEzMmI5YTVhMTI5MzFlMWFiNzUxMWYyYzFlNDY5ZmMgcHkzaworNzc0NzcgNTcxMDIyODNhYjVlY2Y1NTMzOWQwZjhhOTI2OGRmY2I2ODA1Y2RmNyBsZWdhY3ktdHJ1bmsKKzc3NDc4IGM1YTBhNWQ2YWNiMDdiYTljMjM4NjA0YjIzOGFjYWM4ZjM1ZTQwZjAgbGVnYWN5LXRydW5rCis3NzQ3OSA0ZjRmMDAxYzgxZjU1OWUzNGZhZWNkMDE5NTdjOWNiODhiMmRiZDAyIHB5M2sKKzc3NDgwIDQ3OGFiYzdiY2FhYWRjYTMzNjMzMzZmMzhmMmJmNjgwNzQ4YjU5ZDQgcmVsZWFzZTMxLW1haW50Cis3NzQ4MSAwZjk3NGJiMjM4ZWRhYTNmMWMyZDFlYmZmYzRkZTQwNWE0YmRmY2FkIGxlZ2FjeS10cnVuaworNzc0ODIgYzdmMzNkNTIxNmY5YzQwYzIyYTAxOTdjZGQ4ODk5NWQwODc1MjI4NiBsZWdhY3ktdHJ1bmsKKzc3NDgzIGIzOWEwMjE5ZjcyN2U5M2I0ZDY5MWMxNzI4M2RlMjVmYmQ0YzRhN2UgbGVnYWN5LXRydW5rCis3NzQ4NCAxMDMwNjc4MGU1YzBjZjVkZGY3MzQ1Y2ZjYjcyYzMxNmNiOGZlNDg4IGxlZ2FjeS10cnVuaworNzc0ODUgMjAxYjQ2MWExMmJkZmIxYzgyZGM3MDAxMDQ0ZDBkZjUwYTI2NTA4MiBweTNrCis3NzQ4NiBlOGY4NDYxZDZkMWRmNTFmMTY4ZjlhYmFkNGQyMjhjN2QzOTk0M2U4IGxlZ2FjeS10cnVuaworNzc0ODcgYzQzMGU2NjRlNjA1YmZlMGQ2MmUyNDA0ZGQyNzFmYmFhYTBlMWNlNyBsZWdhY3ktdHJ1bmsKKzc3NDg4IDAzZmE2MWEzN2UyZDUyZDAwMWJlOTA3MjY2YjZhOGEzODI2OWRkZWUgcmVsZWFzZTI2LW1haW50Cis3NzQ5MCBhZjE4MDk4MTNkZTk2ZDY0MzFmMWFhOWU0OWVhN2ZjNDVmZjIzNTVjIGxlZ2FjeS10cnVuaworNzc0OTEgNzZmYjdkYmQ3Mzg4NDIzMmUzMGFlMWNhMDA5YTE2YzRiODYyNWJlOSBsZWdhY3ktdHJ1bmsKKzc3NDkyIDkyMzg0ZDdmNDI1YTU5OGVkZmYyOTI4MjFhOTRlNTFiNmE2NGY1ZGIgbGVnYWN5LXRydW5rCis3NzQ5MyAxNjgyYjk2MmU4ZGVlMWM4ZjU5ZWI5NTFkYWQyOGRlNjdkN2VlNDFlIGxlZ2FjeS10cnVuaworNzc0OTQgY2UxMWMxMjcwYjY5MDZmOTQyOGE2NWY5M2MzMTVhN2ZlMDhjNzRiYyBweTNrCis3NzQ5NSBkNzU4ZWIyYzgyOGU4NmE2MjE4ZWNiMWZjMTRlZmM2YTkxZThiZGUwIHJlbGVhc2UyNi1tYWludAorNzc0OTYgOWJhYjNkN2FiNGY1MWI3M2U5NjQ2NjUxZDUxMTA1NGYzMDdhNjUxMyByZWxlYXNlMzEtbWFpbnQKKzc3NDk3IGIzZjUwZDZjYjY0MDZiYTJiYzMyOTY0MjJkYTQ4NjEzMjA1Zjk5Y2EgbGVnYWN5LXRydW5rCis3NzQ5OCBkMTQwZjQ5MDFhNDIzODA2ZTlmYWJlZTc2ZmNkMDg3N2NiNWJlMWE3IHB5M2sKKzc3NDk5IDllNzNiZTVmYTgwZjg2Y2M1YzAyOTk2YTIwMDIxMGIxNWEzY2NhZTMgbGVnYWN5LXRydW5rCis3NzUwMCAzNTQ2OWU3OWZmODA0NmZlMmExM2M4MmY2MTk5MWQ2Y2ZlODA0ZGY2IHJlbGVhc2UyNi1tYWludAorNzc1MDEgZWI4NGY3MjE3YzY1ZDkyNzhlNGNmMGM2NjAxZmNiODU4OTA4MGU2YSBweTNrCis3NzUwMiA4MDQxM2MxODJhMjhiNjgwMGU3Mzk3MTIyNWIxMmE1N2E0MzBjZjMxIHJlbGVhc2UzMS1tYWludAorNzc1MDMgNjU3ZjE2NTgyOTQzNzM5YjkwNmY2NmY3ZWZhZDQwMTQ0OTJjOGIxYyByZWxlYXNlMjUtbWFpbnQKKzc3NTA0IGM3NmQ0MWU3NDRjMjMxOTAzMDA4OTUzNmNiYmY1ZTU1YmEzYjE2NjMgcmVsZWFzZTI1LW1haW50Cis3NzUwNSBkM2JlYTE2NjlmMmQ4OTNmMjhkNzUxN2NjNGRkMmQ0NTc1NDM3YTEwIGxlZ2FjeS10cnVuaworNzc1MDYgZWVmMmViYzA4MWRlZTAwNmY2ZTM3MWJjOTgwMjVjMDc3NDUyZTNkZSBsZWdhY3ktdHJ1bmsKKzc3NTA3IGJlMGJmMGJiZDk0YWZmZWM1NDE2NGYwNjVjZTQyYzNlNmVlMjhlMzEgcmVsZWFzZTI2LW1haW50Cis3NzUwOCBiMzA0OGE1MmUzYzg1YWM4MzIzNWI3YjlkNTE1ZjE1NDJlYjIyMjBhIHB5M2sKKzc3NTA5IDNhYWVmMmVkZmRiMzU1ZGU1OGJkZDJlMTFlODQ4MjFmYmNiMmJiZTIgcmVsZWFzZTMxLW1haW50Cis3NzUxMCAxZjg0ZGRhZmI2YTM5MmM0YjAwMTEzNTU2ZmUwN2Q2OTJhNzcyMTgwIGxlZ2FjeS10cnVuaworNzc1MTEgNzg2MTBiNDhjMzk2YzE2NGYzNWE3MzVmMDRkNTY3ZDEzZmI5NWYyOCBsZWdhY3ktdHJ1bmsKKzc3NTEyIGVmMGQwNGRlNGE0M2Y5ZTBjODQwZDUwMjFjNmM2ZWRjYmYyMzZhYmIgcmVsZWFzZTI2LW1haW50Cis3NzUxMyAwODJkMGVhZjhkZGFkYzljNzk1OGQ4ZWYwOWE3NzViYjMyNzU2MDcyIGxlZ2FjeS10cnVuaworNzc1MTQgNzYwNzY2NTliMjI0OWUwNDQxN2ZiOGU5NDJhZTM5MmZlNzYyYTE3NCByZWxlYXNlMjYtbWFpbnQKKzc3NTE1IGY0N2QxOTllZTY2OTdmMGY2MDQ2M2JiYjBiZDdmZmQyNjczMjUxYTQgbGVnYWN5LXRydW5rCis3NzUxNiAyMDA2ZmQ4MTZkMjI1MjAyYzA0NmJiZmE2Mjg0YWJkYWZiNTNiNjAzIHB5M2sKKzc3NTE3IDkwMDYyNDViMTlhZmY5Y2ZmYzAwMDFhNjBmOWY5YTBlMmE5ZGJlNGUgbGVnYWN5LXRydW5rCis3NzUxOCA0Mjg4YzQwYzg0NDA3NWIzY2RlMTdkODRlYTcwZGZiY2JjM2MzMzkyIHJlbGVhc2UyNi1tYWludAorNzc1MTkgNTY3M2RjM2I2NDMyZTRjOTBjOTg1YjUxZTRjYWIzODRiYjA1NTFhNSBsZWdhY3ktdHJ1bmsKKzc3NTIwIGVhZmFiYWQ1ZTYwMWVlZDU1NTEyMDdlOTdhZjFhYjBmYWI2MDUzZWYgcHkzaworNzc1MjEgMTg5YTVhYmIyMzIzZTFjZjM1Zjk4YjkxNTRiYjI2OGIxMDRiYjE3YSBweTNrCis3NzUyMiAzMmQ2YTk0Y2QwZmEzOWZlNTg4Y2JjN2NlMTllOWM5OTk1MmZkYTUwIHJlbGVhc2UzMS1tYWludAorNzc1MjMgYTE2YjI0YjI1YWMzMWE3YmY4OTViYTdiYjg0YmNjOTZhOTk1NTc3ZCBweTNrCis3NzUyNCAwZmFiM2MyZGQzMTRjZmFmODMxYjZlYzEwYjlmODg5ZjdjODQxZjEzIHJlbGVhc2UzMS1tYWludAorNzc1MjUgMjY5YzA5OTIxYmIyZmE0N2JhZWQ0MWYxMGFmZDQ3OTU3ZWQ3ZTkyOSBsZWdhY3ktdHJ1bmsKKzc3NTI2IDA4OTUwNDBhZGVmZjUyNjJiNGEwZTFiYjU0OTI0ZjMzNzU4MDVkMjggcmVsZWFzZTI2LW1haW50Cis3NzUyNyBmMjIxODNlNjg4NWM5OTRjN2M2OTkyYmRlZjllNTc2OWQwNWYzOTUxIHJlbGVhc2UyNi1tYWludAorNzc1MjggMTFhZDQyYTc4NmEyMTM5NjRmYTM2YjlkNTEyNWUyMzRkMTY0NzQ1NiBsZWdhY3ktdHJ1bmsKKzc3NTI5IGQxNDkzY2Q5MTMwMDZkNTNhZDA2NjRlOWZmOGViYzI4ZWEwZTA3ZGEgcHkzaworNzc1MzAgOGUxNzlhMGZjYjVlYjhiNTQ0MTliMGU2NGJkZDVhYWUzYzAwZmMzMyBsZWdhY3ktdHJ1bmsKKzc3NTMyIGNhMDBhY2M5YzMwNGViN2E5ZmZhNDg1ZjYxODllMGE4NzhiMTBjMTggcmVsZWFzZTI2LW1haW50Cis3NzUzMyA1YzMyZjNiNjVkMjE2ZmIzNGRkNzk0YTNiMDE1NzBjNGZhNTNkNDhjIGxlZ2FjeS10cnVuaworNzc1MzQgMTc0YmRhYjAyNGViODM1MDAzOTUxNDE3ZGIyMDE1ZDFmNTY1ZjM1OCByZWxlYXNlMzEtbWFpbnQKKzc3NTM1IDYzNTFkM2Q1M2RlZDM3ODBkZGJmM2ViNDZhZTkxZTAyM2NiMzY5MGYgcHkzaworNzc1MzcgZDgxZTQ4ODQ2YjRlYmY4YTJmOGYyMTViMjY0MmRiNTY3MTYyOTQyMCByZWxlYXNlMzEtbWFpbnQKKzc3NTM4IDI5YTE0MTBjZDdkYzgyYzUxMDA3YmE1OTI4YjFkYmY1MDc4NDM5MmIgcmVsZWFzZTI2LW1haW50Cis3NzUzOSAxZWE3ZmJkOTkyOTQ1NDM4OTU1M2NjMzE0MThmYzAxN2FhNmU2OGY2IHB5M2sKKzc3NTQyIGI1ZWU0NzgyMWY0YmQ4N2NjYzFiZDk3M2M3ZmM4YmYyZGIyNmY2ODUgcHkzaworNzc1NDMgZWQ4YjBlZTFjNTMxMWNlZmFkZDEyYjZlMzU3ZmNjZTIwM2Q0MTI3NyBweTNrCis3NzU0NCBhNmNjNDIxMmNkNTdlMzBkMzVhMWRlZTA1OWViODJiZGE5OWQxZDdhIGxlZ2FjeS10cnVuaworNzc1NDYgYTRhM2U2ODg0NDZlNGVlMjUxYjhlYTJmYTY5OTk2M2QwZjA4NjVkMiByZWxlYXNlMzEtbWFpbnQKKzc3NTQ3IGUzNTNmNWQ3OWY0Y2M5MzRmMmY2ODE3NzE4ZWZkMjAzZDFhMDRiMjkgcmVsZWFzZTI2LW1haW50Cis3NzU0OCA4MWIzMTQ1MDYxZDk4Y2VjNGMyZmZmMjRmODQyOThjMWQzNzU4NTIyIGxlZ2FjeS10cnVuaworNzc1NDkgZmI3M2FhMjQ1MDE0YWI5NjVlZTE2OWQxNjVjM2VlMzVkOGJkNDkxOSBweTNrCis3NzU1MCA1MzY2ZDU3NWUyY2QxZDI0YmFhZjNkOWRmM2JiZWE4ZDg4YTgxMzk5IGxlZ2FjeS10cnVuaworNzc1NTEgNjBlMDY5YzU4YTM1ZGMyMmNlOGViMmE1M2JmOTQ2MzMxZDNkMTk5MCBweTNrCis3NzU1MiA3YWVjZmE0NDMyZGYzYThkZWFlOTY1MTg3MmMwM2M4YWVmMTBhOTVlIHJlbGVhc2UzMS1tYWludAorNzc1NTUgNzA3ZDhjYTVlYTBiMDIzYjBiM2U1MWVjYTQ5OTNkZGZhZDk0OTljMSByZWxlYXNlMjYtbWFpbnQKKzc3NTU3IDkzZmExMGJlZjFlMjJmZjk1OWJmNzA4ZGE3OThkN2Q0YzYxM2U0ZTMgcmVsZWFzZTMxLW1haW50Cis3NzU1OSA5MmE2MmRmZmE0MDQ5Y2M3ODQwMTE0MmRhMTNiMTk4Y2JmYTdmNmM1IHJlbGVhc2UyNi1tYWludAorNzc1NjEgMzVmN2UyMzA5N2Q4MzBhNmRjZWQ3YTQwYWYyYTg4YTQ4M2UxZTFmOSBsZWdhY3ktdHJ1bmsKKzc3NTY2IDkzMDQ2NGYzMjIwNDY1M2FmY2I0NDA3OWQwYjBiODc5NDlmY2FkOTMgbGVnYWN5LXRydW5rCis3NzU2NyAyM2YxMmNiZjEyMmMxMzE0N2EwNDg5Zjg3OWVjMTgxNGFjNzliODE2IHJlbGVhc2UyNi1tYWludAorNzc1NjggMWFlMzM3OWMwMjA4ZjZlYzhmNGNhMjRlOTVmOGMzZGZkZjgxMzlmOCBweTNrCis3NzU2OSBhMzA2ODBiY2I3NTg5Y2JlZmQ2YWNiYWFiZTI2NTUyMDU4YmEzMDUyIHJlbGVhc2UzMS1tYWludAorNzc1NzAgNDU0N2E5YmZmN2M3N2U3NzM3MGRiY2NiYjFhODYwYjY2MTA4MTZmZCBsZWdhY3ktdHJ1bmsKKzc3NTcxIDY2ZTU3ZWI1OTk1MTA4MTgyNzY0YWM0ZDQ1NmM5MzRhNjgwNTBlNzEgcHkzaworNzc1NzIgYTlmYjIwMzcwOGM0MTE5NzYwNDliNDYxMGE4NzljNzEwOTgyNGI2NiByZWxlYXNlMzEtbWFpbnQKKzc3NTczIDFjZWZmYjNjOGNiMmU1NWM5Yzg0MTI4YTBjY2FiZjg4OWM3NmYwMjkgbGVnYWN5LXRydW5rCis3NzU3NCAzYmQ2ZGYxMWQxZDZjMjZhMjRkZGFlMTc0MDc1ZDBmMGMwZDJhN2Y5IHJlbGVhc2UyNi1tYWludAorNzc1NzUgZGYwMjAwNzllMjg4OWQ0MGFlMjJjODU1ODRmMTg0OWViMzBhOWRjOSBsZWdhY3ktdHJ1bmsKKzc3NTc2IDhmNzk3MWI4MjBhNDM1YjEwNWUxZTQ3MWYwMWFmMGQ2NGZjNTdmMWIgcHkzaworNzc1NzcgZmIzMzdjYjQ2YjlkZTg1ZmZkNTJhNmJiMGRkN2JhNTQ5OTEyMDMyZiByZWxlYXNlMzEtbWFpbnQKKzc3NTc4IDczMjJjNTY5MTI5NGQ0ZGMyNTc2NWQ4YWViYmMzMDE4ZjI2NjZmMjcgbGVnYWN5LXRydW5rCis3NzU3OSBiOTg4OGMxMzM5ZGY1MjBiYWVjYzliOGM4YTQxYmZmMDY2MjBiOTY5IHB5M2sKKzc3NTgwIDZlYzE0YmM2YWIwYzliNTY1ZDQ5ODExNjQwMDM3OTEwOWY3ODMzN2EgcmVsZWFzZTMxLW1haW50Cis3NzU4MSA4MDA1NTljOWQ1MDRiZmVhMWI0OTZmYTQxNDVkNGUwZWY1YTRhYTNlIGxlZ2FjeS10cnVuaworNzc1ODIgZDYwYjdiMmM0YTFmNTE3NGQ4OWZiY2E4NmU2Y2UwMWI0OTFiZDNhNSByZWxlYXNlMjYtbWFpbnQKKzc3NTgzIGExMTdjYjkyNmQyMDdlMDlhZTI5MzExMWYwYzU5ZWExNTE2NzIzYTcgcHkzaworNzc1ODQgOGU5Njc3MDA3YTFlOGMzYzM0YzE3YWI4NTJhOGY3Yjg2OWU3N2Q4ZCByZWxlYXNlMzEtbWFpbnQKKzc3NTg1IDBjOGNiZGJhZmFhZGRhN2FlN2VlMTliYjVlY2M1NGQ5YjFkNGUyOTEgbGVnYWN5LXRydW5rCis3NzU4NiBjMjQ3NTI2ZDVhNWIwMzQyY2RiODNiY2JiYmJjNWI4ZTg3OTIwZDZiIHJlbGVhc2UzMS1tYWludAorNzc1ODcgYTQ4NWZjZGZlODU5NjAzODljYTk1NWE3ZTU2Njc3Y2E2Y2M3ZGZhNSBsZWdhY3ktdHJ1bmsKKzc3NTg4IDNiNDllZjZiMDlmZmEwYTk1OGEyODFkMzYyZjI3NWZmMWU5ZTVlZmYgbGVnYWN5LXRydW5rCis3NzU4OSA1YzljNTNhNzIxYTU1NGJmYjAyNWYxNGIwZGQ2NTIyM2NhYmY0ZmIyIGxlZ2FjeS10cnVuaworNzc1OTAgM2U2Mjk0NzE4NTBhZmU4Mzk5ZjdhNzRhODJlNTM2MWU5ZjNhOTNlMiBweTNrCis3NzU5MSA2MDM2ZDc4NjliZDFmODQxMTZkZGUxMzVjYzIyMzQ0ZWNjZWU5NWFiIHJlbGVhc2UzMS1tYWludAorNzc1OTIgYmIxMGYzZmZhZTAyODFkMzY5YWMyYjc0ODIwN2IyOTZhMzY0NjgyZSByZWxlYXNlMjYtbWFpbnQKKzc3NTkzIDNhYWRjZTM5ZDM0NTJkOWI5NmVhMzlmM2ZkNGQ1ZGFmOGViYzkyZWEgbGVnYWN5LXRydW5rCis3NzU5NSBmZWFjYWE2ZTQwYjg0YjcwNDgxOGZlNjEyZjhlNGU4OGMxYjFkZmJjIGxlZ2FjeS10cnVuaworNzc1OTYgYTlkNTE4ZmFkYTU5OTU2NWVjYzgxZDVmZmVlNTVlMTE1NWFmMDg5ZCByZWxlYXNlMjYtbWFpbnQKKzc3NTk3IDEyMWRlZWQ1OTY4ZWU2OGU0MWU4ZDRmMjllZTE4MTNlNmJiMDZiYTUgcHkzaworNzc1OTggZDU5Zjc2ZDZiNzk1NzdkYzFhM2RjMWMyOGYwZjgxMDBlYmE0NTFlMSByZWxlYXNlMzEtbWFpbnQKKzc3NTk5IGVjMTkyNjQzYWRjYmEyOWE2ZWJkYWU0ZGMzN2IzMTg3N2I0NWJkOGUgbGVnYWN5LXRydW5rCis3NzYwMCA4NmEzNWU1OWI2YjE5NTg1ZTRjNGEyYTA3ZjA1NTVmNWYwZDdiNmVkIGxlZ2FjeS10cnVuaworNzc2MDEgOWU1OWJlMWQwYzM3MTBiYjFlYWYyMzRhODgxODY4NTZlYzQzYmIyMSBsZWdhY3ktdHJ1bmsKKzc3NjAyIDJkZWYxZGZkZjFmNjM5OGJkMGQ5NWYxMjM1MTcxMWQzOTJmNTljZDEgcHkzaworNzc2MDMgMTZjZGMxNWU1ZDc1YmIxYjMwNjg0MWI4YjllYzI3MGMyMGY4MDRmYiBsZWdhY3ktdHJ1bmsKKzc3NjA0IGY2YTYyNmYzNDg0MGZhMGMzZjVlYmFkOGI4NjAyODgwYjZiZGM3NzAgcHkzaworNzc2MDcgZGY0ZDIxNThmYTA0ODYxZDVmMWY0MzExNWRjY2JlODQ2OTRhYTAxMCBsZWdhY3ktdHJ1bmsKKzc3NjA4IDc1YmZhNWRhMWJlYjUyNTI3ZDc0YmUwYzkxY2UwMzAyNjI2Njc3NTkgbGVnYWN5LXRydW5rCis3NzYwOSBmODBlNmJkNGZkNGU2YTdjYzRhNjE1ZWMxNjNhOWE3MDIwNzZhMzMxIGxlZ2FjeS10cnVuaworNzc2MTQgYmFjODIxZGZmZWE4MDRmMWVmOTE2ZjMwZGRjNWY1NmRkYzZlMjdjMCBsZWdhY3ktdHJ1bmsKKzc3NjE1IDVkYmJjNDNjNTkxYjkyZDcyNWI3ZDkxMDE2MWY1NjcwMzgxODNhZDkgbGVnYWN5LXRydW5rCis3NzYxNiA4ODYzMjBmMWJhODJhMDVhMmQ3ZGIwMWYyZDkwMTZmMDcwOTBmYjdiIGxlZ2FjeS10cnVuaworNzc2MjIgNzNmZWNkNGU3ZmVjMzRlOTM4ODMyMDQwNDE2MWVjNmI3ZDg0NGY2OSBweTNrLWNkZWNpbWFsCis3NzYyMyAyNjVlYjI1MGU0YTU4MTc1ODgyZWJhMjVlYjkyNzUyMjQxNzZmNjNhIHB5M2stY2RlY2ltYWwKKzc3NjI0IDljNTYzYTRmM2Y5YTI0NGI0YWNmYTFhODljNmEyNTg5NWYyZTgzYzQgcHkzay1jZGVjaW1hbAorNzc2MjUgNDY0YTIzNjc2NTQwOTgyYWYwMDllMGY4MWMxMjdlYzdkNDBhMDZhMCBweTNrLWNkZWNpbWFsCis3NzYyNiA4NzUyNWJkNDlhOWQ2MTU0M2QwNWIxZmJlOTQwYTNlMGM4YWJjOTdmIHB5M2stY2RlY2ltYWwKKzc3NjI3IGQ2NmM2ZWJiYzYxNzQwZjBkYjU2ZWJhZGIzMGUwMDhjMmQ0M2EwZTQgcHkzay1jZGVjaW1hbAorNzc2MjggODBiMDc4ZDA1NTc3MzY2MTlhOTFlYmY1M2EzN2JkNWU5YWQ0NjIzOSBweTNrLWNkZWNpbWFsCis3NzYyOSBkODI4Y2M5MWMwOWI1MDgwNzExZDJkYzU0MzBhNDI2YTRkZjIxZDFiIHB5M2stY2RlY2ltYWwKKzc3NjMwIDEzYmI5YTk3ZTFjNTAyNGI1ODRiMGIxNDMxMTE0MDUyZjdhNjM3ZWUgcHkzay1jZGVjaW1hbAorNzc2MzEgNTE3MTJjNDJjNWZiMWY3NmJjMWEyODk3OGFiYWMzNjY5ZGFlOGQzMyBweTNrLWNkZWNpbWFsCis3NzYzMiBjZWMxNDBmNzJkMDNmYmVmZDJhNDNhZGQwNWQ1MzRhMzkxZGYwMzRiIHB5M2stY2RlY2ltYWwKKzc3NjMzIGMxZGNlOTU5NmU3NzFiOWI0MjE5N2ZkYmIyNTk3YWViNDBhYzkxMjggcHkzay1jZGVjaW1hbAorNzc2MzQgMDRkZWEwMDYwMjU3YmZhMjdlMmQxYmQyNDczMDA2YjgwNGM3OGE0YyBweTNrLWNkZWNpbWFsCis3NzYzNSA0MGEzYmU3OGJjOTliZDA5N2E5YjE1OTMzNmFmZGJkMzdjMjYyZmJmIHB5M2stY2RlY2ltYWwKKzc3NjM2IDczZTNlZTQ2M2M5NDg3NzBkOGUxNmUzOTc0MGY0YTMxNGFhYjNjYTkgcHkzay1jZGVjaW1hbAorNzc2MzcgMDAyZjdhYjM1ZTE3ZDA2ZWU1OWRlMjg0N2QzOGMwZGRiNTUxNzJhMSBweTNrLWNkZWNpbWFsCis3NzYzOCAzZGY5YjQwZmY0ZmNlOTZiODFhZDIyMTQyNWNlMzgzYWE0ZWQxZTgzIHB5M2stY2RlY2ltYWwKKzc3NjM5IGY2NDZhYWE5MWIwZTdjZDI4NGM4NjhmNjk1N2Q4MWM1MDNhOWJkNjUgcHkzay1jZGVjaW1hbAorNzc2NDAgZmYzNTYzYmJiYjgwMzliYWViNTYzNTc4YjMzZjIwMDNlZmQxNGMxMSBweTNrLWNkZWNpbWFsCis3NzY0MSA5Y2YyMGJkMTUxNmI5Yzk1ZmRlMzRmM2JiZDBhYzYzOWUxOTFiODA1IHB5M2stY2RlY2ltYWwKKzc3NjQyIGVlZjc2YzgxMmJjYmRjYWY4OWQzMjM0MzgwNTI4NmQyNDM5ODRkMGIgcHkzay1jZGVjaW1hbAorNzc2NDMgYzE0Yzk0NTMxMjczN2JjYmZjNmY3NTc4ZmJiNGM1OTg5Nzg1YjhmZSBweTNrLWNkZWNpbWFsCis3NzY0NCBiNDcxZTA3YTIzNzVjNmEyODcyY2JjZTMxODkzNTYxZWZiMTE3ZGQxIHB5M2stY2RlY2ltYWwKKzc3NjQ1IGI0YWYyMTQ1Njc4YjhlOTJjZTI2NjEwM2YxOGZiZTU2MWExOGI4OTQgcHkzay1jZGVjaW1hbAorNzc2NDYgNjk0YWZmMTY3NzdmODA0ZmJjMGFmN2NkOTFiODFkNDEzZjkxODQzNiBweTNrLWNkZWNpbWFsCis3NzY0NyA3ZDE5OTY3MjdkMDg0ZDg3YjYyYzFmZWRiOGNmMDI4YTc2ZGI2Nzk4IHB5M2stY2RlY2ltYWwKKzc3NjQ4IGRiYzAwZmUzNzc3MTlkNDRhZGYzNmIwMmExNmNjZjY0MTViYThjZGUgcHkzay1jZGVjaW1hbAorNzc2NDkgMWNhYmRmMjg5MzhlZTRlZjBkZjkxYzBkMTE0MWM3MTNmYzg3ODdiZSBweTNrLWNkZWNpbWFsCis3NzY1MCAwYmQyYjA3MjA4MzI5ODVjOGMxNDQ4MTAxODA0MWNiZDkzMGI0ZTRkIHB5M2stY2RlY2ltYWwKKzc3NjUxIDkzMWVjNTU4OTI3MTY0YjA3NWQ0ODExYjM4NjU2MTNhZjM2YzBiZjQgcHkzay1jZGVjaW1hbAorNzc2NTIgMGJhYzNkYjRkNWUyOGM3OGFjM2M2MzZlZDE4ZWFlNzI2OWUxODA3ZSBweTNrLWNkZWNpbWFsCis3NzY1MyA2MzI2M2NjZGIwODFhYTJhYmU2ZTQwMDdkNjI0ZGVhNTZkMTgxNzNmIHB5M2stY2RlY2ltYWwKKzc3NjU0IDZkODk2ZTQyNGEzZGE0MzZlODM5NTA5Zjg2YzYyMGQwYmQzYWZlMWQgcHkzay1jZGVjaW1hbAorNzc2NTUgYjIyMTRlZTI3OTg3OTQ4MWZjNmMzYjg0Y2M3NTgyOTc0NWNiNzc0NiBweTNrLWNkZWNpbWFsCis3NzY1NiAwODEzZTg5ZDAxOTNmNjc5OTNmODY1N2Y1YmYyMmQxODVlYzE5OTA0IHB5M2stY2RlY2ltYWwKKzc3NjU3IDRhZDAzZjcxZDFlMTNjZDUzMGRlYzlmNGU4OGNkZTE0N2YwYzU2ZTcgcHkzay1jZGVjaW1hbAorNzc2NTggNTc3YzA5OWFkYTg4MTcwMTk3NzgzN2RlNTkwYWM2ZjNjZTBmMTJhNCBweTNrLWNkZWNpbWFsCis3NzY1OSBmMDQwODYzN2JlNzdmMjk5NzllODc3MWI3YzAyMzM4MDFmYjQxNDEzIHB5M2stY2RlY2ltYWwKKzc3NjYwIGIxOThiMGUyMWQ2MmNjNjhkNmVhY2E4YzM1NWU5ODA3NmZlMGY2ZDAgcHkzay1jZGVjaW1hbAorNzc2NjEgZDQyYTg1NDYzZjljZjQyOGUyNGRkNDVmMTMzMDgwZjNkNzc4ODJlNyBweTNrLWNkZWNpbWFsCis3NzY2MiA1ZWVjM2IxMWU0MWUxOTM3ZGEwOTA4NDQzZDlmMjc2MDAzMDAzZGUzIHB5M2stY2RlY2ltYWwKKzc3NjYzIGUwM2I5YmRjZDQwNWU4ZDk0YmMxYTM3ZWUwOTk2N2I1MmU1YjM1ODQgbGVnYWN5LXRydW5rCis3NzY2NCBhZTZmYjA1YjRjMTlkZTYzMzdmODdjOTQ4NjE4NWQyMzJiYWRhNjYwIHB5M2stY2RlY2ltYWwKKzc3NjY1IDc4MmE0MGZmM2YwZGMyMmNiNjY1NGQ4M2NlMWI5YWQ5MTBmNDc1ODIgcmVsZWFzZTI1LW1haW50Cis3NzY2NiBmMzRmOGFlNzY0NmU3MDYzOWFlNDI5YTUxNzJjNWE2YWZmOWRlY2VhIHJlbGVhc2UyNS1tYWludAorNzc2NjcgNGY5NWI0MzUyMTc5YzgyZDgzOTdlNTM5ZTRiZTBkYmFkMmY4MzNjNSBsZWdhY3ktdHJ1bmsKKzc3NjY4IDA1OWUxZmQ3ODY1Y2ZlN2I1ZWExNzllZjI3ZTk0YzEwZmU1OWViY2MgcHkzay1jZGVjaW1hbAorNzc2NjkgZmVlN2E4OGIwNmQxZmVjOTU5ZDczZGIzZWQ4ZGNmYTE1YjIxODFmMiByZWxlYXNlMjYtbWFpbnQKKzc3NjcwIGYzOGMxMTk2ZDlmZjE3ZTRmMzhkMmQxNWE0MGZhNmJjODE3NGRjZDYgcHkzaworNzc2NzEgZjFhY2QwMTcyNWUwMTg2NTFkMGJhODJlZDc1YzE1ZWI4MDVlYmUwMSByZWxlYXNlMzEtbWFpbnQKKzc3NjcyIGZiZTZlY2I5MWM0YmU1OTU5ODRjMTc0NjRiNjk0OGE1NGUzYmI2MjIgbGVnYWN5LXRydW5rCis3NzY3MyAyMmNkZWM3ZjQ0YzUyZjJiYzZhOGIyYjMzYzMyMmQ1ZGEzMjBiOTQ0IHJlbGVhc2UyNi1tYWludAorNzc2NzQgY2FhNjRkYzQ0ZDE2ZWZjMmE4YmU2MTEzYTZjMzBmNjQxYzMxMDNkNyBweTNrCis3NzY3NSBmNTY4MzgzYWNjOWY4MDI5MGQwYmMzZTBkNzQzYjEwNzMxMmZjNmQ5IGxlZ2FjeS10cnVuaworNzc2NzYgYTk5NmQ2NmZhZWQwY2EyZGRkYjZiNmU2NDA3NmI3NDU3YjVlYzRmNiByZWxlYXNlMjYtbWFpbnQKKzc3Njc3IDVjMjM2NzA0ZGFmMTVhOTA4M2E1ZDZkYjM4NGUwNDQwY2I2MjJkOWQgcHkzaworNzc2NzggYjYzNmNjNzJkMmRlNzNiM2YxOWYxOWY3MWVhMzc4OTlkNDA1MGI1OCByZWxlYXNlMzEtbWFpbnQKKzc3Njc5IGY4NTM5YjQ5N2Q0YWExMzJhNjUxNWEyM2QwOGYzMThhNmZjZDI2NzAgbGVnYWN5LXRydW5rCis3NzY4MCA5ZTEyNGU2NDAyYmM3MjFkN2FjMGM4YWNmZTQ1MGI2YjliOWY0MmRiIGxlZ2FjeS10cnVuaworNzc2ODEgZWQ0MDI3ZTY2NjAwNmU3Mzg2ODIwNWFhNTkyOTE1MDA4ZTI3MTIyNyByZWxlYXNlMjYtbWFpbnQKKzc3NjgyIDFmNzE1YTM3N2VkMDlkMjVlNWFkYzczOTY3ODdhZmI1M2NkNzBlNTYgcHkzaworNzc2ODMgNGNmZGM4YjdmYjNhZjI2Zjc1OGQ1ODk0MDA5MmJhYzc1Nzg1MTA3YiByZWxlYXNlMzEtbWFpbnQKKzc3Njg0IGY2ZmNlYzI4YWY5ZTQ1OTY0NmRlMzFlNWEzYWMxZTUyYmNlNzZlMDYgcmVsZWFzZTI2LW1haW50Cis3NzY4NSBmZTQ4ODRiMDQxYjkzZDgyNzUxYjg1MzNjMzIyNThlMGY2YWVkZjVkIHB5M2stY2RlY2ltYWwKKzc3Njg2IGQwZDA1NzlkZDFkMTNjZjMyN2ZkZDQwZmJjMDdmYTJlMWZlYTBmOWEgcHkzay1jZGVjaW1hbAorNzc2ODcgNGU2OTlkN2MzMmVjZjhiYTAyNGM5M2JmNWQwNmZlNmU0Nzc0NzQ3YSBweTNrLWNkZWNpbWFsCis3NzY4OCAyY2Y0MWQ4Zjc4N2FhMTA5OTU5MDhhNTA5Y2NkZGU5ZWY4NTMxNDE3IHB5M2stY2RlY2ltYWwKKzc3Njg5IGFkYzk4YmYxNTNlYzA0YmFiN2RkMGVhY2E5NjNmODczOGZmMGM4YjcgcHkzay1jZGVjaW1hbAorNzc2OTAgMDFjZTdhODU4ZGFkYjIzYTUyMzg0OGRiOTMwM2ZlZWE1Yjk4ZDc3ZSBweTNrLWNkZWNpbWFsCis3NzY5MSA2Yjc2MTgxN2I3MTc0MWFhMmYwNDU2ODFlNDc4NDdiNzRiZjhjNTc2IGxlZ2FjeS10cnVuaworNzc2OTIgMzFjZGU2ZTYzYzAzZDhiMzljYzYzODZkYTVhOGI0NTNhNDI4ODRjNiBweTNrLWNkZWNpbWFsCis3NzY5MyA2MDdlMjUyNWMwNTA3ZDUzMjkxNzYxYjlhMDkzNjk1OWRkMmNmZjJkIHB5M2stY2RlY2ltYWwKKzc3Njk0IDBlYzYwMzUzNjU2ZTA0MTMzODZlZjhmMTA1ZmM3YTM3ZDZjYTZlMGUgcHkzay1jZGVjaW1hbAorNzc2OTUgY2VjMmYyODExMTgyMzdmNTE3MDllOWFlMzMzZGE0N2IyNzg3OGVhYyBweTNrLWNkZWNpbWFsCis3NzY5NiBkMGU0YmQ3NmM2OTI3NDM2ZTY4NjJiMzE0YmMxZTU4YTA1MjhjYjgwIHB5M2stY2RlY2ltYWwKKzc3Njk3IGQzYjgzZmRiYzgxYTQ0MTg3YWU3NjkwZDJiNWE3NTNmNTkxNjdlODggbGVnYWN5LXRydW5rCis3NzY5OCA3YTlmMzZjYzZkZjExYWVkMjc0Y2M5OWVlMTAzN2ZlZWUzZjQxYjVkIGxlZ2FjeS10cnVuaworNzc2OTkgYTY3OGZlMWM5YzhiZTkzNjE0MWQyMTkwMTg1Y2M3MDA3ZWIzYTJmNCByZWxlYXNlMjYtbWFpbnQKKzc3NzAwIDY4MDA2NjYzYTg1MjMyYjk2ZWFmNWI5YTkxYWY1YjM0MjU1MjRlNTUgcHkzaworNzc3MDEgNzg3YzY4MGYxZmU4OGNmODU2ODQ3YTVmYjU1NDAyNDIzYzVjMzc2ZiByZWxlYXNlMzEtbWFpbnQKKzc3NzAyIGY2NjljZjEwMGViYmVkM2ZlYzg1MzczYmI2OWZjYWE0ZTc1NWNjOGMgbGVnYWN5LXRydW5rCis3NzcwMyA5NzA1ZWYzZmRiMjI3ODE3ZTVlODA1ZWM2OTJhNjg3ZTlhY2Q5OTAwIGxlZ2FjeS10cnVuaworNzc3MDQgZmE2OWU4OTFlZGY0ZTdjZGZkYmQzZDM4NzY1OTY1NTVjNTgzNjM1ZCBsZWdhY3ktdHJ1bmsKKzc3NzA1IGFjNmU5NjBhMDE0ZDgyYWUyZDY5ZmJhMGY3YzFkNDkwOTkwMTAzMTMgcmVsZWFzZTI2LW1haW50Cis3NzcwNiAyZGQ2NGMyNDg1NGM5MTBkMTI3NjRjOGI2ZWUwYTk4NzYxMzE4NmRhIGxlZ2FjeS10cnVuaworNzc3MDcgYmIxYzMzZWZmZjkzMjkzZmVhMTljNDBkMWE0NWEzYzYxYjUxNWZlYyByZWxlYXNlMjYtbWFpbnQKKzc3NzA4IDMwMWVkNjllZGRjNGVhY2NjMWFiODIxNjAzZjdhYTg4NTdlNDg3MTkgcHkzaworNzc3MDkgOTAyMjNlMzQ1OGViMzM5ZGYwMjM2ZTQ0NTY0MmMwM2NhY2NmOTJkNCByZWxlYXNlMzEtbWFpbnQKKzc3NzEwIDFlYTZjZWJiZDgxOGY3ZDU3MTJmMmUxYzM1ZjU5YjAzZTU5MzMyMmIgcHkzay1jZGVjaW1hbAorNzc3MTEgZjBmMjIxZTFhN2MwMzBmN2Y3ZGQ5NWJjNzllODNlNzliZDA0ZWQ3YyBweTNrCis3NzcxMiBiYWQ1ZTAzZTI0NDVlM2U1NDY2Mjc2MDFiMjlhNjI1NjYyMTQ5ZDczIGxlZ2FjeS10cnVuaworNzc3MTMgZDc3Yzk0N2ZmN2RiNWFlZWYyMTQzY2E5YWVjMzU5NmFiNjVhNDA4NyBsZWdhY3ktdHJ1bmsKKzc3NzE0IGI0MGE1YTU2OGU3NmU0NGIwZDY2NTExOWFiYjUzNTJjZGIzMGFkYTIgbGVnYWN5LXRydW5rCis3NzcxNSAxNzg5MTU2NmE0NzhjNDI0OTRhMDRkODA4ZDY0YTQ1MTQ4YWNhZjg3IGxlZ2FjeS10cnVuaworNzc3MTYgNWFiMzAxMmY5MGI3NGM4MDU0NjBkMDgzZDBlMTMwMTdkMzVhOTk0MiBweTNrCis3NzcxNyA4MDdkODNmNTdiYzg4MzlkNTc1YTRmMmY1ZjE1ZTBjOWMxM2E5YjMyIGxlZ2FjeS10cnVuaworNzc3MTggNWRiODJhNTdkZGQwNjZiZTZlNDVjZmI2MjdkYmQwNmU1YTc1ZjY1OCByZWxlYXNlMjYtbWFpbnQKKzc3NzE5IDM5NDdmZGNhMmY0MGRmZmMxZTAzYTg5ZDNiODQ4OTkwNDJjZGU3NDEgcmVsZWFzZTI2LW1haW50Cis3NzcyMCBmZmM0YTQ0YmZkYjk4ZjNmOWQ3MGUzMjFmZTZhZTBkMzdiOWFkNTI5IHB5M2sKKzc3NzIxIDg3NjU2ZTgzZGMxOTY4MzIxNmI0NTZjNGY1YjVkODE5ODE1ZmU2OWIgcmVsZWFzZTI2LW1haW50Cis3NzcyMiBiZTEyZDM2MjE1MTk1NTNlMjA5NDcyZTQ0MGEyNjJjYmMzYzcwOWFmIHB5M2sKKzc3NzIzIDhjM2QyYTcxZWQwMTVlZWMxMWU4OGYyZDRhMWEyMTJhYmZhMWU1Y2QgcmVsZWFzZTMxLW1haW50Cis3NzcyNCAyZDcyMzljYWQ3MTMyYmU1YmRiM2RiMmJjNjhhYTc1OGRjNTEzN2RiIHJlbGVhc2UyNi1tYWludAorNzc3MjUgMWRjOTFlOWRkNWMxM2E0YmMyZDNiYjdkNGI1ODk2YWIyNjRmMjMyNSByZWxlYXNlMjUtbWFpbnQKKzc3NzI2IDIzMjUzM2Y3MWFiZDZmNmRhOTljZGUzMTJmMjlmNGI4MDM0NmNkYWMgcmVsZWFzZTI1LW1haW50Cis3NzcyNyA2ZmZjZGFmYTAxMTg5OTQ0ODVhMTc0Y2U0MTI4MzE0MWI4MzQxMjFiIGxlZ2FjeS10cnVuaworNzc3MjggNzFhY2Q0NDgyZTY1NWI3ZDFhMTM3NjQzNzFiN2U1OTBlYTQ0NzdjMiBweTNrCis3NzcyOSBkYWIzNGI2MGE3MmUxYWEyMzQ0MGQ2Y2MyZDQyMzA0MWJhMDMwZmQ1IGxlZ2FjeS10cnVuaworNzc3MzAgZTk4ZWU5NDVlMjYyNzMwNDc5ODNiMzY2MGFlMGI5MjI3MTE4NmZkMSByZWxlYXNlMjYtbWFpbnQKKzc3NzMxIGMxMGFjZTViNzZjZTk1NGQwYzQyNWJlYjFhNmRjMmIyYmYyNmUzNTcgcHkzaworNzc3MzIgZmZiOTQ5MjBlZmYzYWI5N2IyZTBlYjQ2NDg3YzIyNTVjNmRkZmNlMSByZWxlYXNlMzEtbWFpbnQKKzc3NzMzIDY4ZDFjODFmZmYyZWE0MzgyNjNhY2IxYTQ0MjJmOGM4NWZkMGZjNjMgbGVnYWN5LXRydW5rCis3NzczNCBlYWI2Y2RlMmEzMWM4NDVhZjk1YTM4MjZjYTU4NWY1N2QwOGUxNDg1IHJlbGVhc2UyNi1tYWludAorNzc3MzUgNWMxZDdhM2JhMjljMTZlZWM3ODc1NDIxYTBkZGRiMmU3ZTZiMzAxOSBsZWdhY3ktdHJ1bmsKKzc3NzM2IGEyNTY3OTFhYTE5ZDBmOGZlMWFlM2Q0ZjI3ZWI4MWE1MTkxYzAyNTcgcmVsZWFzZTI2LW1haW50Cis3NzczNyAwY2NlNjBiNjhlNDY1YzA5MTQ0YjQwZDQ3OTFlMmZhOTI5Yzk1OWQyIHB5M2sKKzc3NzM4IDZhMDU3MGVlMjM2NmVkNmRlNjUxZDg1MTE3ZjVkYzcxNzBiMzFhNzkgcmVsZWFzZTMxLW1haW50Cis3NzczOSA2N2ZmMDQwNzQyNzAzMjExOTgxZmM2ZTM3OTFlMmExYjZiZWMwYjYxIGxlZ2FjeS10cnVuaworNzc3NDAgZmJmZTVlNDIzNDlmNmEzZTAyZDY5YmVkOGZmZjk1Yzk2Zjc0MDhmNCBsZWdhY3ktdHJ1bmsKKzc3NzQxIDI0MThhMGE5YTlhOTI1YzdkYjk5NDEyZmFiNWNjZTIzYWU3Y2Q5MTAgbGVnYWN5LXRydW5rCis3Nzc0MyA1ZTg5MzBmMzcwZDU0NTdlMzA0OTk5ZGI3ODkxM2UwY2E1NmNlN2IyIGxlZ2FjeS10cnVuaworNzc3NDQgZmY2NjMyNGY1MmExMjQyMmQzZGZiOWI4YzQ5YjZiOTEyMTM5ZTUwMSByZWxlYXNlMjYtbWFpbnQKKzc3NzQ1IDA4MzU3ZDk4NzgyYjlkM2U5YWFlNmQ3NzA5MjYyYzViNTNlMjI2NTEgcHkzaworNzc3NDYgMjM1OTMzZDRkYThlZGUwOTNjM2RjN2QxODg0ZjhhMTI1MzMyNTc2OSByZWxlYXNlMzEtbWFpbnQKKzc3NzQ3IDY5ODVjMGU4NWI0YmM4YWNkNTUyNjYzNzFlMmVmYmMyNmNmNTZlMDkgcmVsZWFzZTI2LW1haW50Cis3Nzc0OCA3OGMwYWMwN2FhOWViMjc2ZTY1OTJjZmNlNTVjODUxZDZhNjEzN2E2IHJlbGVhc2UzMS1tYWludAorNzc3NDkgOGRkNDlhODZhZGFhNTQ4MzFmYTk5ZjE2NWJhNTk2MWEwYWM2MmJhNCBsZWdhY3ktdHJ1bmsKKzc3NzUwIDc3MjM4OTUwYzZkZDQwNWY3MjZiMTIzN2VmYjc1ZTNiOTQxZmQ1YTIgcHkzaworNzc3NTEgMWYxNjVjNDQwMzA2NGI0MWVlNjdlOWFiN2YzNjU2ZDczZWM4N2MyNyByZWxlYXNlMjYtbWFpbnQKKzc3NzUyIDYyMDg4MzZmZWRmOTlhNTQ2Mjg0NmI4MzU4ODc2YmFiZjliOTM2MDcgbGVnYWN5LXRydW5rCis3Nzc1MyAzZTBmZWQyNWMwYWU1OWM3ZDA3MDZkMzRjMGY3YWRmMDJiMzIwMjYwIHJlbGVhc2UyNi1tYWludAorNzc3NTUgMjJhZWExMzFiNmFmYzE5MTljZDc3NTAxZjVhZWM3Njk2YmFlNzg0YSBsZWdhY3ktdHJ1bmsKKzc3NzU2IDJiZGU2ZDRhMTBlZGVkZmE1ZjZlMGY3ZGE3MWY2NjM1OTllM2FhMWQgbGVnYWN5LXRydW5rCis3Nzc1NyA3NDExODdiZmM2MTAyZWU1MTI0NzBjYmRkZWM0ZGMxOTVhNDgzYmM5IHJlbGVhc2UyNi1tYWludAorNzc3NTkgNTgyNjZmMWEyZTdmM2UzNjE2ZTExM2IwNzZkOTkyNzZlNmY3MDJjNyBsZWdhY3ktdHJ1bmsKKzc3NzYwIGIyNWI3OGNlNzk4ZGM4N2VjYzdjYzAxOGVjOTIwOGZjZDY1ZGI3MGUgcmVsZWFzZTI2LW1haW50Cis3Nzc2MSBmOWZkMTc5NWZjZjc0ZTEzZDkwOTJiNmE3OWMwMzQ0ZjY4ODA5NjFmIGxlZ2FjeS10cnVuaworNzc3NjIgMTBhZDdkOGU1ZDE3MTVhNTQ1Y2UxOWRiMzVmNjE5OGYyODkxMGRjZiByZWxlYXNlMjYtbWFpbnQKKzc3NzYzIGJjMmI4OGJlYWU0NWRhOGQ5N2VkNTg1Y2ZlMWU2Mzk0NmE3MTk5ZDUgbGVnYWN5LXRydW5rCis3Nzc2NCA5MDdmZjEzYmQ0ZTJlMTQ1NjM2MzA2ZGMwNjQxMmYyNmM0ODAwMzUwIHJlbGVhc2UyNi1tYWludAorNzc3NjUgNzM3OWNmNzBmZDYwM2FmNWY4ZWNjNzc5NTBkMTI3MmM0YzRiYTQ3ZCBweTNrCis3Nzc2NiA4MjMyYjEwZTM0ZTEzODhiZGFlYTMyOGNhM2MxN2Q0NGFmMjQ5MmI3IHJlbGVhc2UzMS1tYWludAorNzc3NjcgOTJlNmU4ZDkwNGEyOWVkZWMzMGIwOWI4OWQ0Yzk1YjJjMDI0MmNmOSBsZWdhY3ktdHJ1bmsKKzc3NzY4IDNjMGNkN2E3ZGI4ZWUzMDE3MWNjNGJkMDRmNzczMzI5YzNkOTU4ZmMgcmVsZWFzZTI2LW1haW50Cis3Nzc2OSA4MDU2MjA1MWJiNzBhYjU3MTA2NTIxMTg5ZDU4M2MxZWYyZGQ4YWNiIHB5M2sKKzc3NzcwIGQ4MTVkZDJmYjViZjkxODYyNzM0ZGE1NTVkNGI1NTE2NjRhNzE1ZjYgcmVsZWFzZTMxLW1haW50Cis3Nzc3MSAyNzQ2YzIxN2RkOWUwYTg0Y2RhNTdjOTMxZTRkM2ExNTJjYTVmYzEyIGxlZ2FjeS10cnVuaworNzc3NzIgZmRlOTcxOWUyMDU2ZjQzYWVhNTYzNjJiMWMwMTQyMjdiMDEwZGQxNCByZWxlYXNlMjYtbWFpbnQKKzc3NzczIGRmMzM1OTkxODUxN2QyMTYyYTNiOTZiZDczNzY2MTg3Y2NjY2I3NDYgcHkzaworNzc3NzQgMGRkZjhkOTY5MGU1YWU3ZDFkMjRiZGVkY2E4NmEwZjlhNmMzMGVjZiByZWxlYXNlMzEtbWFpbnQKKzc3Nzc1IDY3MjZhZWI4NjdiOTAwMjBjYWRiY2I5MDhmNDk4NDE4ZjI2MDVjNWMgbGVnYWN5LXRydW5rCis3Nzc3NiA0OTgzMTFmZDg4MjJjZTc5YWNkZTQ5ODQwMDU1NWE3MmFhZTdmM2FkIHJlbGVhc2UyNi1tYWludAorNzc3NzcgMzRlMmQ1MTYyY2U5M2MyMTIzMjFmODdiYmE1Yzg1MDNjOTU4M2I1YyBweTNrCis3Nzc3OCBhZmQyMGQzZDg1ZGM4OGY0NmNiY2I0N2NiMjQyZjRhMzE0YTFhMTA5IHJlbGVhc2UzMS1tYWludAorNzc3NzkgNzVkMjRiMjQ1MmE1OWIzNTZmNGNkZjRkYzAwMzI2ZjhlOGJhZTFkYyBweTNrCis3Nzc4MCAxMjA1NDYzNDZmOTM5Nzk0NjA0ODkxNGNkM2FiZjI1MTNlZTIxMjg5IHJlbGVhc2UzMS1tYWludAorNzc3ODEgNzQ4ZTI4MmUwOTFjZTQzZjZhMjc1NGY3ZGI4ZGQzMDk4ZGQxMjYzZCBweTNrCis3Nzc4MiAxZGQ4MjMyZDRlY2I5ODFjNDU0NmQ4YWQ2Y2IxMjU1MGRiNjgxODA3IHB5M2sKKzc3NzgzIGQ0ZTIyZmQ1MjhlMmEyZTI2NTE3OWExNDFkNjc5MzVmNmFkYmRlZmMgcmVsZWFzZTMxLW1haW50Cis3Nzc4NCBmNmY5ZWU4M2VjYmYzYzQ3NWZhNDU3OTEzMmE4MGUxYzU0MDVmMzliIGxlZ2FjeS10cnVuaworNzc3ODUgZGM3MTQ3ZDFiN2Q5NGRiZjI5OTNhMGM4YWMyZTFhMTY0ZjVkM2Y1YyByZWxlYXNlMjYtbWFpbnQKKzc3Nzg2IDk2ZDVjNzAzMTQ0MDUyOTM1MTg2OTg1MTlmOTAwMjk3NzM4ZDdkMjQgcHkzaworNzc3ODcgZTIwZTAyZmMxNDQ3ZmM3MzJlZTU3N2QxYTViM2ZkNTJiNjhhYWU1OCByZWxlYXNlMzEtbWFpbnQKKzc3Nzg4IGFkN2E2MTU3NGJkNjg5ZTYwNjgzNzNlZWQ5NTE4N2E4NWM4MTY3ZTUgbGVnYWN5LXRydW5rCis3Nzc4OSA5NTc1Y2UwZGIyMDQ3YzFjNTY2YWE2ZTk4OWQ5NjEyNmEyYmU5YjE1IGxlZ2FjeS10cnVuaworNzc3OTAgYThhNGJjNjliZWExMjI1MGRmZjUyZmZkYTBkOTljMTZiMmJmY2JmZSByZWxlYXNlMjYtbWFpbnQKKzc3NzkxIGU2NjBjYjUyYmYwMDYwZGNjNzFiMGE1OWY3YTg4MGYzZWExMDFlYjggcHkzaworNzc3OTIgMmJmZWVmNjI5OTM2MjgwNDQxYjJiZTYzMzk0NWZlZGUxNTk5MWI5YyBweTNrCis3Nzc5MyAyMDA3MDg4MGVhNDgzMzRiMWZjZTE0NzkwNjAyZDQ3OTkzZTA5NTk2IHJlbGVhc2UzMS1tYWludAorNzc3OTQgZGViZTYxNjczYThiMTA1YmViYjIxOGIwNzUxYjc4ZmNkN2JkNjhjNCBsZWdhY3ktdHJ1bmsKKzc3Nzk1IDdhMzZjYTA0NzQyZGE5YjI4YzY0YzFmMjNmZTU5NDQ5YTJiZjU5ZmIgcHkzaworNzc3OTYgZjk4OWY0ZjMwMjQ1MjI3ZDlhMTk0MTVmZjUwODAxNzc2ZTk5YWE0OCBsZWdhY3ktdHJ1bmsKKzc3Nzk3IDRmOGIyYTE3M2M4ZGM1YzNhNGVkZGQwNjBkNDU0ZTNhNmU3OGY1YjAgcHkzaworNzc3OTggMWEwMDgxYjg1YzA0ODk1ZGFlMjdlMmZmNzkzOTdhZmU1MTRkMjJhZCBsZWdhY3ktdHJ1bmsKKzc3Nzk5IDAxMWQ5NjdjMWEwNDk2NmIwZGVmMmQzYjdmNDkwMDU4YTFjOWFiODcgcmVsZWFzZTI2LW1haW50Cis3NzgwMCBmNDFkMzUzZWI2NjAyNjZkZmY1YWM2Y2U3NzQ1NzgxY2I1ZmYwYzkwIHB5M2sKKzc3ODAxIDZhNDc5MmNiZjRjOWYzNjlhNWU0YWM4YmU1ZmRlODdhZjljMWVmNGUgcmVsZWFzZTMxLW1haW50Cis3NzgwMiAwYmQ2MTZkZmM5Nzc4NWEzMTE2ZDg3YTdmNThjMDE1NDhhNmY5ZWNjIHJlbGVhc2UyNi1tYWludAorNzc4MDMgN2ZiNzY0NGEwYmM2OGE3NTg5ODU1ZjU5YTM3NWFiNWM5ZjVlMDJhMCBweTNrCis3NzgwNCAzZjM2YzllNmE1YWY3ZjI0NDU2NTBhOTc4NzNlNTI3ODAzYzMzODY1IHJlbGVhc2UzMS1tYWludAorNzc4MDUgMWFiYzIxOTFiZWFmNDk0YzkzYTZiYWZmMzI1NGQ5ZDFiZDEzY2YyMiByZWxlYXNlMjQtbWFpbnQKKzc3ODA2IGE1ZTY4YWI3ODk1YmQ4MWM2N2ZkMDAxNGRmNzUyMTJlN2YyMzU1ZGMgbGVnYWN5LXRydW5rCis3NzgwNyA2NzEwYTQzZjE5M2YwZjg0ODBkODMxYzlkZTVmZTdjNjg0YTYyYjFlIHJlbGVhc2UyNi1tYWludAorNzc4MDggNGNmNWFlNzBjYjExOWViMmI0YWJlYzJlZGQyOGMwOTAwMjdhZTQ1NSBweTNrCis3NzgwOSBmNjA2NDc0YTIxMGQxY2U4YWMzYzkxZTRiOGZkZjU4ZmFiYzllYjYwIGxlZ2FjeS10cnVuaworNzc4MTAgMjQ1ZjM2MjgyMTEzNmM3OTBmNjBkYWM3M2JjYjZjMmY5YzkzYzIzNiBweTNrCis3NzgxMSA2NThlYjVhZTQ2MTU4MTI2MDI2ZGRjYTlkYmFlNmYxYTQ1MDhiYWI1IGxlZ2FjeS10cnVuaworNzc4MTIgODJhZDc4NzExZWRiNTI5ZDNlYTViMzhjYmM0NjE2NDhkNGFjY2ZiYSBsZWdhY3ktdHJ1bmsKKzc3ODEzIDMyMTg3MGI1ZDAzMGFkMDY1YzVkMjBjZTE5YjhkYWQ0NjVmOGM1MTQgcHkzaworNzc4MTQgZjJmNTlkN2I0NjE0NjBjYTA1ZTYwYjQwMTg4YWJlMGM1MGNhMmFmNyByZWxlYXNlMjYtbWFpbnQKKzc3ODE1IDU0NzI1ZTJlOGFkZDBlOTE0MWU2ZDYzMTkwYmM0NmM0ZjA0YzBhZjcgbGVnYWN5LXRydW5rCis3NzgxOCA1YWE5MDI0OGE5OWY4ZmFlYzc5Y2UxOWQ4OTM1NDk0NjdjODQyNmFhIHB5M2sKKzc3ODE5IDM4YjkwZmUzNDYyMzdlOWE5M2MwYmVkZDdiNDYxMTIxMTY3NjZkMzIgcHkzaworNzc4MjAgMGQ0YjA1ODlmYmM3MjMzMjU4MDBlNmNjNDQ1ODczMjdkZmU0YzRlNSByZWxlYXNlMzEtbWFpbnQKKzc3ODIxIGM1Nzk5OGUzYmUzM2FmOTJkMWExYjhkMmFkYTNjYTk0ZDQ3ZTI0MzcgbGVnYWN5LXRydW5rCis3NzgyMiAzY2U4NjBiOWU3MzIzN2E0MmY5ZDg1MmYxOTFkY2ZlYWU3MTFkMmRiIHJlbGVhc2UyNi1tYWludAorNzc4MjMgMmIwOGRlOWExZmEwMTIwMGY5MDljZTQwZjNiMzIwYzUyYmFmYzZjZCBweTNrCis3NzgyNCA2ZGU2NDg5NmM2Zjg4MTgxZTIzOTMxN2ZjNGJiMjM0YWFkNTkyYmQ4IHJlbGVhc2UzMS1tYWludAorNzc4MjUgMmRhYjQ3NjA2YWI2M2NkYTgyZWY5ZDNmMjIxYWNmMDE1ZTFjYzY0YyBweTNrCis3NzgyNiAzYjY1MDY4MDg3YzYyZjUwODJmMjM2MTRlZmE3ODZkNjBlZDZmZjg4IHJlbGVhc2UyNi1tYWludAorNzc4MjcgMjBmMGRhMzFmYTJjZDc5YjNkMDE4OTMyMGViNzZhNWZiYjUwMmUzNCByZWxlYXNlMzEtbWFpbnQKKzc3ODI4IDg3OTEwMWEwYjU3OTcwMjUxZTlmZDM1MTc5ZGQzYzE3Njg1MmU4MjEgbGVnYWN5LXRydW5rCis3NzgzMCAyNzVjZDlmZTA0ZjFiZjk2ZDUxZTg4N2E0MzBlZTllYzAxNzM1ODkwIHJlbGVhc2UyNi1tYWludAorNzc4MzEgZGRlMjBhZTY3ZjlmMzNhYjA5MGI5ZjQ1YjIyY2I3Yjc4ZGU4NTM4NiBweTNrCis3NzgzMiA4ZWYyNTIzYzNhNWM1NzIxMDIzYzI4YTJjN2VhYWNiMjgxYWY2MjAxIHJlbGVhc2UzMS1tYWludAorNzc4MzMgYTJjOTE3Mzc4NDExZTIzZWE5OTEwYmI4ZGZiNmZlNDM2ZWY2OTg1MCByZWxlYXNlMzEtbWFpbnQKKzc3ODM0IDYwODUzYzFhYzU2MmQyNTk4OTBkZGY0NzI1OGI1NWZkNGRjMWJmODEgbGVnYWN5LXRydW5rCis3NzgzNSBlYmY0ZjIyNmFlZWY5ZGViZmU2YmQ1NDg4YjNhZDhmMmEyMTcxNzc5IHB5M2sKKzc3ODM2IGQwMTQ2MjNlY2Y3MjBjMmRmNDUwOGVjMWFjMjVjNzVlZTBiODE0NjMgbGVnYWN5LXRydW5rCis3NzgzNyBmMjBmOGZjNmNmYWUzNDQxZDAxOWU4YmJmNDYxM2IwOTE0NzIxMDc0IHJlbGVhc2UyNi1tYWludAorNzc4MzggZDZmYjM3OGQ3NjVhZjkxNWUzZmIwZjIxN2ZlOWRiZDIxMGIzYTkyMCBweTNrCis3NzgzOSAxMDllYzA2YmJjZjFiODA1MTFmNDQ3MTc4YTdiYTk0YWY0NTI4OTZmIHJlbGVhc2UzMS1tYWludAorNzc4NDAgZTBhZDFmM2M5MWFmMjJjY2FlOWRkMzYwMmE4OWRkZGI1MThhYzM4ZCBweTNrCis3Nzg0MSBiZmMxM2NlNjJmYWIwZGI0MmQyZTU5OGNjODdjMGY5MDIyNWE4ZmE4IGxlZ2FjeS10cnVuaworNzc4NDIgNjI5NWUxNjMwM2E3MTgzZDZjNTNlZDFiYmU2MzdmYWM3ODAyZWYwZSBsZWdhY3ktdHJ1bmsKKzc3ODQzIDU4OTNlZjlhOWI4NGJmODhiMGExZGY4OTQ5NmNkMzE4NzZkZTQwYzMgcHkzaworNzc4NDQgZWZjMjAzMGNlNmIxNmQ4OGVjMzhhMTIzMWYwYTFiNzQ0Zjg4N2M3NyByZWxlYXNlMjYtbWFpbnQKKzc3ODQ1IDc0NTBlMDNhNTAxZGJiOWJmN2MxYzI4ZGE4YTlhNzJmZGYwMzcyZTIgcmVsZWFzZTMxLW1haW50Cis3Nzg0NiA4NmI4ZjRjYjkyM2FjMzM4ZDg0OGJlZTA3NTIxY2VhYjUzNmQ0NmM2IGxlZ2FjeS10cnVuaworNzc4NDcgYzBjNzZkNDhjZDJiOGVjMTk4MmZjOTQyZjk4NDkwOTBkMjdmMWZlYyByZWxlYXNlMjYtbWFpbnQKKzc3ODQ4IDVjNDdjZDE3MzZjMTYyYTBkNWFiMWMzMWQyMDUzMTg4MWFmMTEyN2IgcHkzaworNzc4NDkgZDM0ZDNiOGY5ZGVlNGUxN2FiMzlkZWZlNTU0OGJlZTY3MGRkZmM4ZCByZWxlYXNlMzEtbWFpbnQKKzc3ODUwIDM5MzMyYzBhZjg1NjVlYTk0YmIzOTkwY2NmNWM2NTRhZTIwMjQ1YzMgbGVnYWN5LXRydW5rCis3Nzg1MSA4MjRlNWVjZjkwMjI1YjU5ZjM2MmQ2NzkxZDllYzQyYWUyOGM1ZTExIGxlZ2FjeS10cnVuaworNzc4NTIgOTM0ZDQ5NThhNDE1MWFmZTU5ODYzNmEwYWNiOTIwN2E4NzE1N2RhYyBweTNrCis3Nzg1MyBkNzlhYTViNjY5NzFjOWYxYzI5MGFkZTE0MzBmNTAxNWVhMzliYzhlIHJlbGVhc2UyNi1tYWludAorNzc4NTQgMDE5ZjUyYWUwZmU4Y2NiOWZiY2JkNGQzYTQ5Yzg5MzVlMDg1Yzg3ZiByZWxlYXNlMzEtbWFpbnQKKzc3ODU3IDJiZjczNTdkMTIyYzI2YzEzMTk4ZWRiOTg4ZTFhNGY1MjJmNTM0ZTEgcHkzaworNzc4NTggZDIxYjA1ZmY5MjBhZmFmMDIzZGE2NTJlY2ZhOWQ0Y2Q2YmUwMWUxYiBsZWdhY3ktdHJ1bmsKKzc3ODU5IDVhN2Q3ZWViODhjMTEzMjVhNWRkNTNjNDgxZTc3Mjg3OTkzYWU4NzkgcHkzaworNzc4NjAgMDkwZmMzOWNlNWVjMzVkZDVhNDJmMzYxYjA3ZmVlZTYwNzE4NDc4YSByZWxlYXNlMzEtbWFpbnQKKzc3ODYxIDk3NmVjNDVkOTA5MGFmODRkOTBkNDgyZmFhNTQxNzVhNGVhYzA4YWYgcHkzaworNzc4NjIgNjkwOGJhNDQ1ZDJiMzVjMzkwZDgxN2YyM2U3Njk0OGNkNDUxYzVlYyBweTNrCis3Nzg2MyBmNTYyMDdiOTM2Y2MzNTk0ODViNGE4ZGU2YWVhNTFjNDQwMGQ2NDMyIHJlbGVhc2UzMS1tYWludAorNzc4NjQgZTk1NjU3MGJjM2I5ZjA0ZDlmOTU0NWJhN2NkMzc4OTZmZTdjYzAxOCByZWxlYXNlMjYtbWFpbnQKKzc3ODY1IGZjNWVjN2UwNDE3NzNjZmI1MmYyMzgwYjlhNGIxNTk1YmMyN2Q3ZGEgcmVsZWFzZTI2LW1haW50Cis3Nzg2NiBmZTA4NmFiYjRhZWJlOWU2MDkwOGE1NWNmNTIwZWEwZGE3MmY0MGMyIGxlZ2FjeS10cnVuaworNzc4NjcgNjhjNTZjNGI4NjMxY2JkOWM4NzcyNzM0NDlhNWY2ZWUyZDYxZTkxNyBsZWdhY3ktdHJ1bmsKKzc3ODcxIGYwYmM2ZDhhYTIxZTAyNTNjMmQyZGRlY2YwMWViMDhhYzc5NDFmY2EgbGVnYWN5LXRydW5rCis3Nzg3MiA3MDk4YTQ2ZjBiNzVlNWFhY2ZhZjgxZDY1ZDcyZTM2MTNiMDIzNTMyIHJlbGVhc2UyNS1tYWludAorNzc4NzMgMzhjOWNjY2JiZTVhNGFjZDQwMDUxNTdhY2ExZjZjZTg1OTQyMWYwZSByZWxlYXNlMjUtbWFpbnQKKzc3ODc0IGEyMDQ3NzRkOWM3MGJkZGMyY2ZiODA3NTc1YWQ1YzQ2YmI4YWE4NzQgcmVsZWFzZTI1LW1haW50Cis3Nzg3NSAyZGRiZTYyYTY4MjBmYTVkN2I3MjM2NTU4MjQ4YzQ2YjA4ZTQ3MDQwIGxlZ2FjeS10cnVuaworNzc4NzYgNmU2YjU5NDEzYTEzODk5Yjc1ZGZiMWIwYzlhOTdiMjhlYzc2MjBkNyByZWxlYXNlMjYtbWFpbnQKKzc3ODc3IDU2NmQ1Yzk1N2MxOTc1OTcyMzUzN2EzNzk5ODcwMTFhMWY2OThkNDcgcHkzaworNzc4NzggY2UwZDRkYzQ4OGQyOTA1ZGNhMTkxZmQzZWM3NDBkNTM2YzIxN2RhZiByZWxlYXNlMzEtbWFpbnQKKzc3ODc5IGY2Mjg0MmMyNWJkODMzZmQ2NjE3Mjg2ZDBmM2NiNGFkZTE5NmZjNDIgbGVnYWN5LXRydW5rCis3Nzg4MCA2YjMzZWE5NDg4OTY2MTgxMWUwOWY2MjgyZjk4ZmNjNGNmZmEzNzEyIHJlbGVhc2UyNi1tYWludAorNzc4ODEgZmQ1ODAxYjgzODhkMTU3MjJhMDQ3ZmNlZDQ4ZWI3ZTA3MGU1ZTkxYSBweTNrCis3Nzg4MiA5ODFhMzlmMzU5MTRkNDBjMmI2NGU0YzIzMGNjNTZiNzJjYWMxYzU3IHJlbGVhc2UzMS1tYWludAorNzc4ODMgNjliZmZhM2M3ODJlMzI1ODk0ZWY1NWZjZWE2OGY1NWVhODA1OGMwOCBweTNrCis3Nzg4NCAxZTQ3YmQ2YmJlZDU0Zjg0NGRkZDJhYzJjZjlmMGMxMmVlYTJmNTM5IHB5M2sKKzc3ODg1IGE3M2I5MmQxZTlmZDU4MmU3NWFhMDZiNWYzODRmODg5YWZjMTg1YzUgbGVnYWN5LXRydW5rCis3Nzg4NiAwNTA4ZWFkMThkNmY1YTA5MmU5ZDk1MGM3MmMxNDY3MDU1MDllZWYzIGxlZ2FjeS10cnVuaworNzc4ODcgNTZhMjIwODI3MjA5Y2JiMzNkMjBkNDQ1MTM3OThiYzI5ODNjYTBjNSBsZWdhY3ktdHJ1bmsKKzc3ODg4IDE1OWRhOWE0MmZlZjFjNmFiMDJiOTJmYmNjMDYzNWJlMDI1NDM0NGMgcHkzaworNzc4ODkgYmNiYjkwNDhmNDgwMzczYWY5YzhiN2IzNGMxZTNmZGU5ODFlNmNhNCBsZWdhY3ktdHJ1bmsKKzc3ODkwIDc3MTMwZjJmZTk0NGU0YWNkMTBmMDM1YjY3OTRhNDJkMTJiMWVhOTEgbGVnYWN5LXRydW5rCis3Nzg5MSBlZjU2MzljNzE5NjQzNWNlMGJlN2U0ZTMxMWZkMTUzYzViZDViMzNlIHJlbGVhc2UyNi1tYWludAorNzc4OTIgMjQ2NjVhOWQ4ODFhZGUyNTY5N2E3NGM0ZDE5OGRhN2VkZjQ3ODc0NCBsZWdhY3ktdHJ1bmsKKzc3ODkzIDc1YmIyZjE2OTFjMGVhOThiMTc2ZTYzMmZiOTAxMTRiM2JmYTNjNGYgcmVsZWFzZTI2LW1haW50Cis3Nzg5NCAzOGUzMDdmYjgzOTg1NmFjOTcwZWZiYzJjNzBjZmZhNjdiODRkNjE3IHB5M2sKKzc3ODk1IDMxMWRiN2E2OGE4MjkzNmQxMzRhZGQ3NDc3NjgyZGFmN2RkMzFjNzIgcHkzaworNzc4OTYgYzdlMzJiNGUzODc0YmJiY2UwNDgzODhkNWVmMzlhZGZjYjEyMjQ3NSBweTNrCis3Nzg5NyBkODg3ZGI1MDFhMjIxMWFhMzRkNzFlMWJmNzBhMWZmM2VhOTNhMzUxIHJlbGVhc2UzMS1tYWludAorNzc4OTggZmQyNGRlZGJhNTllYTVmMGUwMTNjZDA5YzVlMTBhNDcwYjk2NmQwNSBsZWdhY3ktdHJ1bmsKKzc3ODk5IGIyZGJmMTFlMmFjNGNlZjA0NWQwM2VhYzQ0ZTlhYjMwNTY5NDk1ZDggcmVsZWFzZTI2LW1haW50Cis3NzkwMCA4NjA0ZTlhMjU3Y2M4ZmNhODUwZGRiNjJkYjY2NjM1OTYzYWJjOWUyIHB5M2sKKzc3OTAxIGM3ZGNiZDY1YzIxMzUyM2UzNDM2ZDU2ZDk4N2RmMDg3ODVhYzRjM2EgcmVsZWFzZTMxLW1haW50Cis3NzkwMiBjOTc5NTdmNWNkZjkyNDVhMmU5NDg4NGE3ZmUzNjMwZjA5ZTZmMjBhIGxlZ2FjeS10cnVuaworNzc5MTAgYWY0OThhYjJhZmI0YTVkMTZhZDU4NmE4YThjMjk1ZDM2OTdjZjAyNiBsZWdhY3ktdHJ1bmsKKzc3OTExIDY1MmUwYjc0ODg1YWM3NzgxODIwYjA3NWRkYmZlMjhiNGQyYWM0NTAgbGVnYWN5LXRydW5rCis3NzkxMiBkMDUxNzc5YzViYmQ2ZGFkOGY0NGU5Y2ZlOTMwZThkZjUyZWM1NGFiIGxlZ2FjeS10cnVuaworNzc5MTMgNWJhZGViZGI0MzhjZWY3NTViYzBkNDQ0YjU2YTVkMzI2OWJmODY3ZSBsZWdhY3ktdHJ1bmsKKzc3OTE0IDRjYmZmMDEzOWY1YjgwODlmOGEwYThjZDcyMWU1M2E4ZDc4Y2YxOWIgbGVnYWN5LXRydW5rCis3NzkxNSA1MjViNmM1ZDViMTJjY2ZhNjZlZjQxZmRlNjUyMGVjYjNlZDgyNWE3IHJlbGVhc2UyNi1tYWludAorNzc5MTYgYzM3Zjk5YjU0ZDdjZjQ1M2U5MmY2Mzk3OWNlZWE0NGIwYThhY2ExOSBsZWdhY3ktdHJ1bmsKKzc3OTE3IGM3NzAzYjY0OTUxNmI3MzAzNjBiYWI0YzE2NDNkNzNkNWEzM2M5M2MgcmVsZWFzZTI2LW1haW50Cis3NzkxOCBjZDAwYTk0MTg2YzkzNDk3N2E1M2FmYzQzYTIxNmY5M2EyODY3NDgwIHB5M2sKKzc3OTE5IGYzZjA4ZWU4M2M1NTg2MzhhZGQ0YWMyMzUzOTI0ODViNzIxMjA3NzYgbGVnYWN5LXRydW5rCis3NzkyMCBkZjJiOWE2ZDI4YWVmODViOWEyZTU2MjY0YTgzODA2YTM2MGFhMDYyIHJlbGVhc2UzMS1tYWludAorNzc5MjEgOTkyY2FlMjQ2YTBjN2ZhN2RhZGIzMWM5Njk2OWYzOTVmYjE2ZGU4MyBsZWdhY3ktdHJ1bmsKKzc3OTIyIDdjYjE0YjUyMmY4MWNiYzZiMGU5OTc5MzFjZjBkN2RmOTYwNWFlNGQgbGVnYWN5LXRydW5rCis3NzkyMyA2ZmQyYjgxNDdmMmEzN2U1YWFjYWE0MDU4ZGY2NDQ2NTYwYWJkMTI0IHB5M2sKKzc3OTI0IDAwZDc4MzhlYWYzYWQzNmU3OTllZjYzMzM0M2EyYzIxZDExOWRhNGYgcmVsZWFzZTMxLW1haW50Cis3NzkyNSBkMzEyN2Y2ZGUxNmMwODdkOTFmZmRkYWNmMWU0ZmI3YTcxYWVmM2UzIHB5M2sKKzc3OTI2IDdjZDE4MmJlZTYzMGMzMzUwMzJkOWM0OTYxMjgwNWNiZDJkYWQ1NmYgcHkzaworNzc5MjcgMDhjZjRiMzUzMWM5NDY0OGUwZWQ4MTY5ZjA4YjM2YjdiNzUzMDAxMiByZWxlYXNlMzEtbWFpbnQKKzc3OTI4IDM4MDk0Mjg5MmRjMGUwZWJhMzllZjQzZTkzZmQyNTlkZTMyYTEzYTcgcHkzaworNzc5MjkgYjdmZWNlMTViYTVmYjk4NzQ4NTRkZmYzOGQ3YzA1MGEzODk1MDkxNiByZWxlYXNlMzEtbWFpbnQKKzc3OTMwIGI4ODhkYjc2NDVhYThjZmYyN2VlNjc4NzAxM2MzNzA5MGI3NGI2NWEgbGVnYWN5LXRydW5rCis3NzkzMSBlYjk4N2M5ZGYzNzhmYzQ2Yjk4NzNhYTMzOTVjZWQzMDljZDU1NDk0IHJlbGVhc2UyNi1tYWludAorNzc5MzIgYTg3ZmNlMDNhMzRkZDIwNDQ5NzhhYWEwNmQ5MTRjNzAyNjczMjBkOCBweTNrCis3NzkzMyA5NjdiZmQzNjk3MzY2OTczMTEzZTA3MDJiMGJlYzY1ODkyMWQyZWQzIHJlbGVhc2UzMS1tYWludAorNzc5MzQgOWIzNTFjYjllZjk4MzM5NTRlZDQwZmQ5NzFkN2Q5MTc3OTZkNWYxYSBweTNrCis3NzkzNSBlZjgxNzg0Nzc1NjdmN2MwNGE5Y2IyN2NmN2M2YWIwNGU3YjQ2MjEzIHB5M2sKKzc3OTM2IGNjYzZlNWQ1YTNiMzg3OTBkNTI3N2Y3NGE1M2M0YjkyY2ZlZmY2YTcgbGVnYWN5LXRydW5rCis3NzkzNyA5OTNmNzAzYTYxYmFlMDhlOTEwY2E3YTdiODZhNTIwMTg4ZDA4ZDQ0IHB5M2sKKzc3OTM4IDJiMWQ2NjVlNjYyODQ2ODZjMDUyOTllMDJhNzBlZTEwMjc5YWM5ODQgcmVsZWFzZTMxLW1haW50Cis3NzkzOSBkYWJiNzczNDg1MDFhYTE2ZDI2YTZjMGIwOTk2YWM4MDQxOWFjZTZjIHB5M2sKKzc3OTQwIDU0ZDAyNWIyZjQ1YTlmM2UxN2UwMzZjNDg2NjZlYzBkZDNlNGRlNjMgcHkzaworNzc5NDEgNzJlY2ZmZmU5ZjAyNTY2YWM3NmI5ZTBjYTQ2NmUxNWFmYWFjOTQxMCBweTNrCis3Nzk0MiBmZjA0MDg4MGQxYmU5ODQ5MmFkZWJmNzU4YWY5N2FmOTdhMmQwZmE3IGxlZ2FjeS10cnVuaworNzc5NDMgNDU4N2IwNjJiOGQwNjVjYjc5MDZkZDQzZDUwZDg4MTk4NWRkYjdhNCBsZWdhY3ktdHJ1bmsKKzc3OTQ0IGNlNGI4NGMwMmU1YTc1NTZjODRmZjljNmU4ZjhiNWYxYTM0MWRlNWQgbGVnYWN5LXRydW5rCis3Nzk0NSAzMjM0NGM1Y2Y5MzJlYTMyNjg4MmFjYzExY2ZiZGNkZTVjMTYzMGMxIHJlbGVhc2UyNi1tYWludAorNzc5NDYgNzQ0MmRiNTQ3NjQ1ZTIwZTM0YTBjYWNlZTMyZjc0OTM4ZGMzNzFjNCBweTNrCis3Nzk0NyAwZDdlNWVkYzQ1MjY4MDg3MTkyM2NlZjc4NTViNjkxMzE4MTIyOTcwIHJlbGVhc2UzMS1tYWludAorNzc5NDggOGQ4MDVjNmMyZGIzN2JlNjc5YzVmYzEyY2NiNDNmMjc3MjA2NDc3ZiBweTNrCis3Nzk0OSAzOWM4YjQ3ODI0YzUwOTE1NDY4OWJjNjM5YTVkYTNkYmZlNWI4NDNhIGxlZ2FjeS10cnVuaworNzc5NTAgMWM3ZmVhYzBkNmQ2Mzg4YmM2YjZkYTJlMWVjYjc1NTRlOTAxY2NmMyBweTNrCis3Nzk1MSA4YTJlYjc3NjEyMzA5NzBhZGFhY2QxMDkzYzJkOGE5ODM3MjFjZDFiIHJlbGVhc2UzMS1tYWludAorNzc5NTIgNGFlOGI5Y2E0MGZmZTdhY2E3MjA5ZjZhYjQwMmQyMGY0ZTcyYjEzNiBsZWdhY3ktdHJ1bmsKKzc3OTU0IGQ3NWY4ODdkYTc3MmY4MWVjZDQ2MmNhNmQ2NzI3NjJmMTBmMWQxMGYgcmVsZWFzZTI2LW1haW50Cis3Nzk1NSBhNjRhMDEzNGU2NmNlMDg5YzVlMTQyMjUwOTRkNzdhMGE1NTNkODM1IHJlbGVhc2UyNi1tYWludAorNzc5NTYgYTdhNzcwYmNlOTNkMjVmMTQwY2U2MWUyODM2NWRmYmViZmM5ZDk3ZSBsZWdhY3ktdHJ1bmsKKzc3OTU3IDMwZTQyNDZlZTgwMzI4NTA5MTRkMzEyZWEyMDA3YjA3YmMzZjIyODUgbGVnYWN5LXRydW5rCis3Nzk1OCBmYmExYzc4ZjEwNGU5YzM5NzkzNzk5ZDY4NWI0ZmZiZWQyMWE4NTZiIHB5M2sKKzc3OTU5IDNjMTg4ZWQ4ZTUyMWVlMzdjNDE0ZTEzNWYwZWNmZDJkNjkwMmMyZGEgbGVnYWN5LXRydW5rCis3Nzk2MCA3MDNhMDRlMjljZTYzNDIzZTE2ZGExYWY0NmZlMjVmZWUwMmJmMGU4IGxlZ2FjeS10cnVuaworNzc5NjEgYzcyNTRlOGJjMWRiZDFmZDQxNzgxNTJhYzVhZTgxNTE3ZmIwYmM3YyByZWxlYXNlMjYtbWFpbnQKKzc3OTYyIDBjMmIwODk4NjQzZTI5NmQxZWZmZjYyM2NiNTY3NjQzNTJkZWVkMWEgcHkzaworNzc5NjMgNTE0YjU2ZWZkODlhMjQzOWQ4NDhkZjJhMjNkZjRjMmEyYTYxOTU3MCByZWxlYXNlMzEtbWFpbnQKKzc3OTY1IGVlYjhhOTljYTBjNWEyZjhmMTkzZTQ3NzBkYWYzNmMzZTFjZWI1OTIgcHkzaworNzc5NjYgMmY4MjkzOTZhNTRlMzdiZWRjYTkyNGJkZDAwMWEwZWI1NWJjMjFiOSByZWxlYXNlMzEtbWFpbnQKKzc3OTY3IGY0NDE0MjJmNmY1NTc0Yzk1Y2M2MDlmM2U2ZDgzZTViZGNkZDhhZDYgbGVnYWN5LXRydW5rCis3Nzk2OCAzYzAyMDM0OTlhZTUzNWM1ZTU1N2RjZjFjMTQwNDQ2MDU5ODIxYzk0IGxlZ2FjeS10cnVuaworNzc5NjkgYmI2ZjgzYjliYTQ5ZTAyZjIwY2M5ZTA1YmZlY2IzZGRkNDE2M2QxNyBsZWdhY3ktdHJ1bmsKKzc3OTcwIDU0ZTk3NTU4MmM2NTRhODg0NjU2ZTllNjAzYzIxZThhMDc0YmJjM2QgbGVnYWN5LXRydW5rCis3Nzk3MSA0NTFlZDMyY2ZjNTA2MjQyMzNiODk1M2U4YzFlOTA1MzIxZTY1OGUzIHJlbGVhc2UyNi1tYWludAorNzc5NzIgMzdmNjI2NGQxYWEzMzk4OTFiMzZkNjgxNjRiNjYxYmI1YTM0M2IzYyBweTNrCis3Nzk3MyA0YWFiMTRhZjVlMmRmNzIwNWUwYjgzY2UxODUwNjIxMTg3ODE0YzQ0IGxlZ2FjeS10cnVuaworNzc5NzQgMzJlMGYxYWEzNGJjZjczMTIwY2VhNWM0MWI0ZDY3ZjY1ZTIyNzNhYyByZWxlYXNlMzEtbWFpbnQKKzc3OTc1IDc4MTNjNDA5NDJlOTk0YTk0YTNiYjY1NjBjZTViMGVlNzUxY2EzMzYgcmVsZWFzZTI2LW1haW50Cis3Nzk3NiBlZTA4ZmI4MzViZjEyYWE4NTMwMDlhN2I3OGI1NTRiZmFmZDVlNzFiIHB5M2sKKzc3OTc3IDE1MTUwY2Q4ZmQzNjUzNDlmYzRhNGE4NTU1NzU3YzhmYmI3MjZkMmQgcmVsZWFzZTMxLW1haW50Cis3Nzk3OSAzMDRjZThmY2MzMmExZjgzMDgyZmJkZjQ1ZDY1ODc3YWVlM2U2OTQ1IGxlZ2FjeS10cnVuaworNzc5ODAgZGU1ZmE5MjVkZmVhNjE1MTMyODdiMDY5OTMzZWJhNmY1MjdkMzY4NCBsZWdhY3ktdHJ1bmsKKzc3OTgxIDgxZjJlY2QzYjEzZThmZGYyYzgxNzM3OWQwNzEwNmJmODcwZmU3MGMgcHkzaworNzc5ODIgYzFhN2M5NDljMTEwMGQ4ZmFkZGU1MDVjZGI0NjZmZjllZGYzOTUwZCBweTNrCis3Nzk4MyA3NmNmNjBlMmQwMDU3OTZmNjAwMmI1ODA3ZDRiODEwOWM5NGU5MjMzIGxlZ2FjeS10cnVuaworNzc5ODQgY2ZhODdkNDY2YzA0NDgwM2UyMDkxYjc4NmJmNDExZmE3YTZhOTYzZCBweTNrCis3Nzk4NSBiNWFkMjE5MGRjZThjMGY2ZWRlOWJmZmYwYmM4YTY5NzY5NDZiNWZhIGxlZ2FjeS10cnVuaworNzc5ODYgZTFiZGViZDEzNjg1OWVlZGExYWI5MzhhMGVhMGFhNmNmZDA3NDQ4YSBsZWdhY3ktdHJ1bmsKKzc3OTg3IDQyNmNjNWYyYWQyNDIwYTBiYjQ5NjMxMDE0ZDFkZmUyODM2MGE1MGUgcHkzaworNzc5ODggNTU1MDU4NDJlOTczOWVhMGUzZWViODI2OThmMDExN2FjNWYyNzMyMiByZWxlYXNlMzEtbWFpbnQKKzc3OTg5IDdjOTMzNjgzMDEwZGNiMjlhOGUzZjc4MjExYjI0NzNlYmQ3YTI0N2IgbGVnYWN5LXRydW5rCis3Nzk5MCBlYjU1MGU4Mzk0NjA5NzhmMDA2N2VmZDdjYjE2ZTI0NDc2ZmNmZTAyIHJlbGVhc2UyNi1tYWludAorNzc5OTEgNTEzYzRhMjYwMGE4YmUwNzYzNmQ4Yzk0NWM1MWFjY2I0ODVhOTgzMiBweTNrCis3Nzk5MiA1ZTUxODM1Zjg1OTUxMmVkMmMyNDhiYzExMzcyZjJmMTAzMTE5ODlmIGxlZ2FjeS10cnVuaworNzc5OTMgMWNmMTZjZTQxNWVhZTA2ZTQ2MTY5OTBhNmY2YjA0M2FlNGNkMjg5NyByZWxlYXNlMjYtbWFpbnQKKzc3OTk0IGIxMWI4MDMwMjY4ZGRjM2EwZWMwNDcwOWU0ZGEzMmMzYmE2ZmRlMTEgcHkzaworNzc5OTUgOTc5YzNiNjI1MDgzOTdhYzk4NzVlNDgzN2FjMzY0NzhlMjIxN2MwMyBweTNrCis3Nzk5NiAxMWI3YzgxMDgxNmJlZjQ4OTI4N2RiZjI1MzhjMTI3MGVmYmM3YjVlIHJlbGVhc2UzMS1tYWludAorNzc5OTcgMzJhMzYwYjEzZmEzMjA2YWViNDQ0ZmI3OTg5MjM1NzVjZTRmZDdmYSBsZWdhY3ktdHJ1bmsKKzc3OTk4IGNkMzFhOWQ2N2ViMTM5ZjUzMDYxYzQ4NjBmMGI1ZmRhMTIyMWM3OTggcHkzaworNzc5OTkgMjc0MTZjZTYyYWM2YjExNDBiZmMxNTJmMDk5ODlhODdkOWQ4ZDg1NiBsZWdhY3ktdHJ1bmsKKzc4MDAwIGMwM2M5M2FjODE1MWMzMzIxN2UxZmZlMDFjNWJlZTRiYWIwY2VkMWUgcHkzaworNzgwMDEgMmE3MGM3MmI4N2M3ZjEyZjlkMDllYWI4MzIxNzgzYmQ5MjY2MTQyMiBsZWdhY3ktdHJ1bmsKKzc4MDAyIGVkZWE0OGIxMjBlMzM5YmViNWRiYTJmNGFlYjk1MTlmZjY3YjJjZGQgcHkzaworNzgwMDMgM2RkOTIxYTE5MGI4ZTFjNjBmNWNiNjY2MWJmNjg5MTRlN2QzNDJiYyBsZWdhY3ktdHJ1bmsKKzc4MDA0IDQyYWM4Y2IxM2VkMGRmODAzZWYzN2NiM2ZjNzI0ODUwM2ExMGM3YjUgcHkzaworNzgwMDUgYTEzZThkMWQzNzk4YzUwMTgzM2ZlNmE2NjE1YmI0ZTczYjZiODI5OSBsZWdhY3ktdHJ1bmsKKzc4MDA2IGZmMGZjZDUxNTRkMzMxNjY3ZDVhODU2M2Q0Zjk1ZTk4NzcyZDM2NmEgcHkzaworNzgwMDcgZTlkYmJjZDRhZDQwYWE3Zjg2OGMzZjZiMTE1Yjc2MjVmZTc4YWNkNiBsZWdhY3ktdHJ1bmsKKzc4MDA4IDk0ZDE0ODBiYzU2MzA0MWMyMmQxNWQ1NDg4MTA2YmM1YTE3OGYyMTIgcHkzaworNzgwMDkgNzhlNzk5MmYyODU3OWZhNWQzMjVjOGNlYjc3ZjkyNWM4MGViOTFhNCBsZWdhY3ktdHJ1bmsKKzc4MDEwIDBkOGYyMGU0NmMxZmExOTQ3NDZhMmEzMzM3MGM0ZTdmZjQ1NDhhMmEgbGVnYWN5LXRydW5rCis3ODAxMSA3OGM4OGIwNzc4NDMxYTcwYTJjMmI2OWNkYzFiMzUxMmZhNjY1ZWNiIHB5M2sKKzc4MDEyIDhlNTlmOWY3ODhmNWIwNGU2MDU2NTFlZWI3MWFkZGUxNTI1MTZmZmUgcmVsZWFzZTI2LW1haW50Cis3ODAxMyBmYWIzODA2NzQ5NTk2ZjMxMWFmOTQ1NzI2MWY5NTNlMmQzNjU5YTgzIHJlbGVhc2UyNi1tYWludAorNzgwMTQgMmI4ZjQ1OGJiY2Y1OGU4ZDcxYWY2ZmI0Y2NhZDRiNDY1Y2UxMjE3YiBsZWdhY3ktdHJ1bmsKKzc4MDE1IDEzZjY5NWFiOTExMWNjNjlkZjEwMTMxMTJlMmJhYTNkNGIyMDAyNDggcmVsZWFzZTI2LW1haW50Cis3ODAxNiAwZWI0MjI2MjRkYjVlZmEzYmY4MmE4ODNiZDU4Yzc3NDAzMDg2YzhmIHB5M2sKKzc4MDE3IDljZWUwODc5MTVhYTFkYjJkODQzN2EzNjhmODkzZjA1NDcyODZlMWMgcmVsZWFzZTMxLW1haW50Cis3ODAxOCA1MGJkOWNkMmVkNDgxNDNiN2I4OWQ0NDM4NzM2NzI2NGQ5MmM1NjAwIGxlZ2FjeS10cnVuaworNzgwMTkgNzFlMDg5MjY1YjI4NTNjY2JiM2Y1MjQwOTliMzdiZTg3NDAzNjM5YyBsZWdhY3ktdHJ1bmsKKzc4MDIwIDQxODA1NTdiN2E5YmI5ZGQ1MzQxYTE4YWYxOTlmODQzZjE5OWU0NmUgbGVnYWN5LXRydW5rCis3ODAyMSBmZTgzMmM1ZDMwNjZiMTYzMjdkM2QyZDI1MzY4NTNlZTVkMTVkYTViIGxlZ2FjeS10cnVuaworNzgwMjIgNWU5YWI0YzI1YjkxNGE4YjY2ODkwODA5NjgwZjg5ZWVjZjNlZTc2OCBsZWdhY3ktdHJ1bmsKKzc4MDIzIDgyY2UzYTA4NTcxYzk1MjdhZmI1ODk5MzBkMDg3ZTJhNDRiYWIxOTYgcHkzaworNzgwMjQgNDAwMmYxYzQ2Yjg2OWNlMzdkMzBkYzY5ZWU4YzUwYzk4YjlmNjI3YSBsZWdhY3ktdHJ1bmsKKzc4MDI1IDYzYjNhNjVhZmY1MmE4ZTJlZmY4OWQyM2VhN2Y5MzM1MGI2YWFjM2YgcHkzaworNzgwMjYgYWQ2ODNjZWRmYmIzYTljMjkyNmE2ZjI2ZDQwZDRmZjNhYTVhMjM5MCByZWxlYXNlMjYtbWFpbnQKKzc4MDI3IDIyMmI2ZDgwZTc2OTI0MDAxZjJmMzhkZmEwMzcwZmY5OGE3YzFmOWMgcmVsZWFzZTI2LW1haW50Cis3ODAyOCBkZDIyMzBhOGM0MWRhMTE3ZTE1NmFhYzA5NThjYmQ0MWNhOGQ4ZGQ4IGxlZ2FjeS10cnVuaworNzgwMjkgY2FjZjIwN2ZiZGVkNDNjNGI0MDZjNDIwYjIxYTFiOWIxOTQ1NWMwYyBsZWdhY3ktdHJ1bmsKKzc4MDMwIGU5Y2IzZmQzNDFlOTgyZTUzMzI1MjdiZDkxOTk4NDczNTc3ZDdjZmEgbGVnYWN5LXRydW5rCis3ODAzMSA4N2Q4Yjk1ZjU2NzU2MDYxNTBjZTJlNmZlYzM1OTU5YTIwNmExYzRlIGxlZ2FjeS10cnVuaworNzgwMzIgZDdkNDhhMzBhZGYzMDM0YjhiODY3ODYyMzUxMDAzNjZjZjA3YzYzMCBsZWdhY3ktdHJ1bmsKKzc4MDMzIDYwOWZhMThiMjRiZmNjNmFiODRiOWVlMTNiNTA0OTJlNGQyYmExNmQgbGVnYWN5LXRydW5rCis3ODAzNCA4MWIyMzA2ZTZiZjMxYmUzZGY0MWZkZGRjMDViN2VkNjJiNTFlYTY4IHB5M2sKKzc4MDM1IGYyYzkxYmY1YjdiOTY2MWU2NjBmMjg5MjMzZTg0Y2IzYzhjYmJlNjkgbGVnYWN5LXRydW5rCis3ODAzNiA2Y2E5ZDk2ZjE0MGU5MDQyOTUxNGJhY2UwYTk0OTU3MDFiMDc3MWZkIGxlZ2FjeS10cnVuaworNzgwMzcgY2MzNjdjMDc3MjQ1OGQzZWRjMDgxNjk1MDUyNTIzZmUyODk4ZDExYiBsZWdhY3ktdHJ1bmsKKzc4MDM4IGVmOGYxYzJjYjUxZjkwYjViYTZhZDY5N2Q2NjdkMGQxYzU0ZTQ4MGEgbGVnYWN5LXRydW5rCis3ODAzOSBlNGFlNzlkNTNlMjM3YTM1ZTk1N2QyZTU1ZDU5Y2JmNWRlZjc4ZjgzIGxlZ2FjeS10cnVuaworNzgwNDAgODczODc1NjU3YWQwZjNmMjJiZTI4NDkxNDE2MDYwZDAyNjM1NGJiNiBsZWdhY3ktdHJ1bmsKKzc4MDQxIDJiYTc2NzdiZmE5NTE0OGJjNDZlNmQ4YTQ0Y2NmYzYwYjRhZDlhZDcgbGVnYWN5LXRydW5rCis3ODA0MiA3MzQ2NTdiNGIzZTVjZjgwNWE2ZmFhNGM0OWJmZjNiYjQxMjljODkyIGxlZ2FjeS10cnVuaworNzgwNDMgMDNiYWY2ZGYzMmQyNjhlMzE5ZDBiYzFjOThhYjljN2Y0ZWRhYzQzNCBsZWdhY3ktdHJ1bmsKKzc4MDQ0IDU1MTQ0Y2FlMDJiYWIxZDUxMzc4NzNmODk3YTVlODhlYmUyMmYzMzkgcmVsZWFzZTI2LW1haW50Cis3ODA0NSAwYjQyZTFhYTRhOGJiYjMwZjUwODE0ODRmZjkyZDBiZDk0NTQwOWRiIHB5M2sKKzc4MDQ2IDIyMzU4NzAwYTRkMGJiYjQ3NzA2NTRmYjUxNDNjZTU1YmI5ZTM3OTcgbGVnYWN5LXRydW5rCis3ODA0NyBhMmFiMjZjNWYwOGI1YTQ4YjczNzZlYTI4MGU3ZjJhYThhOGQxMmU3IHJlbGVhc2UzMS1tYWludAorNzgwNDggMjFhNDcxYzM0NGUzYTA1OWZhZGJjOWRkZjBlMWRiMDZjMDI3NDQ0NiBsZWdhY3ktdHJ1bmsKKzc4MDQ5IGI3YTVkZjE0MDg2OWU3YWQ2NmE2NGFlNzJmZDgzMjk1MWRjZTFhMjEgbGVnYWN5LXRydW5rCis3ODA1MCBjNThlZDI1NTRmNWM4NzM2YmQwMTIxYTFkYmUwOGU1MTRiNjAzNmJkIGxlZ2FjeS10cnVuaworNzgwNTEgZWRlMGYwNWRjNmMwODE2ZjM1NzQ0MjJkYzJkM2Q4OGVlZDQ4ZWEwZSBsZWdhY3ktdHJ1bmsKKzc4MDUyIGE2NmViOGE2M2Q1YjZhODU5Y2ViZGVlNDBhMDY4MDM1MjdiODlmMWQgbGVnYWN5LXRydW5rCis3ODA1MyAxMDEwMWNmODlkMjA0YThlN2Y3NDM4N2FmMTdjNjQ3YzAzYTAxNjkwIGxlZ2FjeS10cnVuaworNzgwNTQgN2MyNGZlZmMyY2Q0YjFjMzViZTM3NWQ0NDkwYjVhNWRkNmJhMDEzOSBsZWdhY3ktdHJ1bmsKKzc4MDU1IDZiODJhMjMyMzUwMTJhNzRhMzdmMDhmODRiNjYyNDFlOTgzZjg0MGUgbGVnYWN5LXRydW5rCis3ODA1NiBmNGM1MWFlMTY3YzU1MmQ1MzYwY2U0MWU4OTg0ZjQ1YzQ2MGUzZjAyIGxlZ2FjeS10cnVuaworNzgwNTcgODIxNGQ0ZmMzMjM0MzY1Yjc2ZDZkM2M2Y2I1NzhkODM4M2EzOTdjMCByZWxlYXNlMjYtbWFpbnQKKzc4MDU4IGZkZWMzMGFlYjkzZjNhZjM3YmNlY2FkYmE0MjFiODM3ZTFlMDhjMjAgcHkzaworNzgwNTkgNTJiYjQwMzI4NjNlMTYyMTdkYTI2YTMyZDk3NzdjZjk3NWI5MDM4YSBsZWdhY3ktdHJ1bmsKKzc4MDYwIDkzN2ViMGZlMWY5YzFjMzNlMzI2MmE4MmRhMjBkMzQwMmM1OTRlZjggcmVsZWFzZTMxLW1haW50Cis3ODA2MSAzZDM3NTMwMTExNWRiM2MwMWIxMWI0NjUxZjJlYWQ4YWNhMzZmZTJiIGxlZ2FjeS10cnVuaworNzgwNjIgNmE2ZmMwYzA5MWNkZWZjNjVlOTc3MzdkZDk1ZmMxOTJlZDFiNTI1NyByZWxlYXNlMjYtbWFpbnQKKzc4MDYzIDRhY2JiYjVhNDhmY2QwMWNjYzNjODM4ZDBhNTk2ODdkMjRhMzc2YjcgcHkzaworNzgwNjQgYjQ3YmNjYTAwMTVhYzYwZDUyMjQ5YTc5MGYzYTBhZTc2YzY0OTkzNCByZWxlYXNlMzEtbWFpbnQKKzc4MDY1IGRlNTNiYWE1YWM3ZGU4YjMxYjRiNmQ0MjUxNDlhYmE2NDhkOGI0NDggcmVsZWFzZTI2LW1haW50Cis3ODA2NiAzNzc2YzMxYzBlODIwOGJhNzA1M2NkMDNlZGE5MDI5ZGEyODliZmY0IHB5M2sKKzc4MDY3IGM5NjQ1N2RmNDBlMGQ5Y2FiYTMwOTdmYTk3NTc4ZjQ0ZmZiN2U1NTkgcmVsZWFzZTI2LW1haW50Cis3ODA2OCA0ZTQwYTI5MTE3NTA5MzFhZTAzM2Y3MjczNWVjZjcxOTJhNWJlMmFjIHJlbGVhc2UzMS1tYWludAorNzgwNjkgMTBmMTlkMWMzYjc3MThiZjlmNTg3MzJhYWExNDdhOGUzYTQ2N2M2NiByZWxlYXNlMjYtbWFpbnQKKzc4MDcwIDc5YzAyMmQ3NzIxM2MyNGEyMmNkMGNkZTEzZjNkNWMwMGYxYTAxMzcgcmVsZWFzZTI2LW1haW50Cis3ODA3MSBjYTY3YzM3Y2QyNmRjMDBiODhlMGZjMmFhOWY5MTk3ZTVlNmRkNDg1IHJlbGVhc2UyNi1tYWludAorNzgwNzIgMTk3ZjI0M2RkYWI1M2U4ODg5MGE1YmZiNDFmMjk2ZDkyN2Q4MjUwZiByZWxlYXNlMjYtbWFpbnQKKzc4MDczIGIwYzc0M2M3ZDdlZWFmMGI0YzRiMWEwNTMyNjc1OWM3MjU4ZjY5MjEgcHkzaworNzgwNzQgN2QwN2RhMmI3ZGNhYjczZjBiZTM2NjQ4NjEzMDI0MWFmODczNmJjZSByZWxlYXNlMzEtbWFpbnQKKzc4MDc1IGI2ZGY3NWMxN2UwMmRjMDkwNjFiYzViOTY2OTc4NGM4N2YwZTMyMzUgbGVnYWN5LXRydW5rCis3ODA3NiA1Njk0NDQ0ZmQ1ZDJlOWZlN2U2Y2YxZTM1ZTc0NjQ0YTlhNzdiYWQxIGxlZ2FjeS10cnVuaworNzgwNzcgNTNmODNmMjAyYTZkNjg0Njk4ZDE0ZGQzYjc0Yzg5NDAxZjk2Y2RlMyBsZWdhY3ktdHJ1bmsKKzc4MDc4IDkxODk4MDNmODM0MDc4NjNkNDY5YTY5ZGYwMzk3M2FiMzM3Mzg5NWIgbGVnYWN5LXRydW5rCis3ODA3OSBiMTE2ZmZiY2QxYjA3MTE5YTE2NDE2N2U1OGM1MjlhNmE1ZmQwZDk0IGxlZ2FjeS10cnVuaworNzgwODAgZDUzMGE3MmI0NmZjODJiOWM4OGEwNjI0YjhmOWMyM2FmM2ExZjNmMyBsZWdhY3ktdHJ1bmsKKzc4MDgxIDg3Y2Q4OTNjYjhiYTI2ZDI1Mzk5YWUzYTJiZjkzYzk4MDRhZTcwZjcgbGVnYWN5LXRydW5rCis3ODA4MiAyMTgwNGRjN2FmZjRiNDE5YjBlZWRlYjNmZDAwNjViMDZiODdjZmUwIGxlZ2FjeS10cnVuaworNzgwODMgZGZkNDZhNWRiODcyYmViZmRmNWMxNWE2NTg1ZjQ2YjYzMzNmNzA2NyByZWxlYXNlMjYtbWFpbnQKKzc4MDg0IDBjZmU4MzZjNGE4ZDA2MTA0YjIwZTNjNzRkY2I5MTI4YTljMjlhYmQgcmVsZWFzZTI2LW1haW50Cis3ODA4NSA2YTg5MmNlZGYzYTQzYWYyNTAzZTA4ZWI3ZTIxYjUzNTA4NmM0NzZiIGxlZ2FjeS10cnVuaworNzgwODYgODZhODRiZTMzZTZhYTg2YzNjN2RlMmUxNmZiZWVmYzMzODY2MDRkMCBsZWdhY3ktdHJ1bmsKKzc4MDg3IDFiZTcxMTQ0NzNlYjVhOWZlNzE4ZGQ0ZDllYzRkN2UwMTFiZDI5YTYgcHkzaworNzgwODggYmQ1ZWUxM2ZkZGExZWNkODA1OTU0YzYxYzRmZjczYjA2ZGI0M2VhNiBsZWdhY3ktdHJ1bmsKKzc4MDg5IDU3ZmY3NzAyZWM3NGU3YjhmYmIzMDVjZGYwMTdjNGQzYjY2NjBhMzkgcmVsZWFzZTI2LW1haW50Cis3ODA5MCAwY2Y5N2FkMmZkMWY2MWE4ZGY1YjVhYTI2Y2I5YTIxYTk3YTk5MGEzIHB5M2sKKzc4MDkxIDY0MDA0YTk4NjJlNDcyMWQ1ODY4NDFiNjAyMzdlMDM4OTA0ZTFmOWYgbGVnYWN5LXRydW5rCis3ODA5MiA4MGUwMjFmZTM0ZWQ3YjNiOTA0OWYyZDQ5OTc0NTBjNTc4MmE2MWY3IHJlbGVhc2UzMS1tYWludAorNzgwOTMgNzBlMTE1YzM0Zjk3MDhhNDIxZjFjOGNmNDE2ZGYyNjBjYTI1NzRmNCBsZWdhY3ktdHJ1bmsKKzc4MDk0IDNkOTRiMWU3NzljNTgyOTJiNTYzZmY2YTExNDg1ZmZiNDljZjM5YjIgbGVnYWN5LXRydW5rCis3ODA5NSBiODM0YzhlZThlN2M5MmRkYjQ0MGFlZGNiYzg2ZDlmZGI0MjE5MDQ5IHB5M2sKKzc4MDk2IGYxMDhmNjI3NTg1NTU2NzQ3NDdiZmI5ZTIxNTQ2NGQ2ODRiYzg2YmMgcmVsZWFzZTI2LW1haW50Cis3ODA5NyBhMjgwODQ0YjY4ZjQ4NTU0Y2Y4NjBjNjQ4N2Q5YjA1NTM2Mjc4MWM0IGxlZ2FjeS10cnVuaworNzgwOTggZmFjYTk3YzVmMDM4MDQ2MTE2NDYzYjYzMWI2NmRhMGM3ODQxMDZjZiBweTNrCis3ODA5OSAxM2ZjYWE3OTMyNGJiODUxNGUyYzNiYThjYjFhMTJhYjU1YzQ0ZDljIGxlZ2FjeS10cnVuaworNzgxMDAgM2YzOTBmNDhiMTEzMTRlZGE0NmVjZjRmNGQ0NmFkZjgwOWNhYzYyMSBweTNrCis3ODEwMSBjOGMwYWExZmQ0YTZkNTI5ZTAzMDc3NTZiZDdkMjQxNDY4ZDIwYmQ5IGxlZ2FjeS10cnVuaworNzgxMDIgYzg2ZDkzYWVjZDdhMjUwMmQ5Yjc1NjM3NWJkNWYwN2UxNjliNzVlNSBsZWdhY3ktdHJ1bmsKKzc4MTAzIGQ4NGRhY2RiMmQxMjUyNDk4MGE2OTFlNTQ4MjIyYzcyYjhjYjNiZjYgbGVnYWN5LXRydW5rCis3ODEwNCA2MDBhYjljZWU0MDM1MGU2M2ZjMDQyY2UyY2M2ZDYxZDVjZTcyZThiIGxlZ2FjeS10cnVuaworNzgxMDUgNGJjZjk2ODI5ZDFhM2Q4OTdmNDFlN2RhNWU1NmUxMWM0ODExMzYwZSBsZWdhY3ktdHJ1bmsKKzc4MTA2IDkzNjc2YWU5N2M2OGI1M2U2YTA5NjhjMzQxNTk5YTBhZmUzNWNmZmEgbGVnYWN5LXRydW5rCis3ODEwNyA0ODRkYTEzZjEyNTM1M2M3Yzg0OWU2ZDBmMzEyYzFlOGJmZjRlZDQ1IGxlZ2FjeS10cnVuaworNzgxMDggZGJmMDNlYjdjMTJlZDQyMGNlNjhkNDdhOWMxN2UxN2ZlNGM4NGNiOCBsZWdhY3ktdHJ1bmsKKzc4MTA5IGE5OGIxMzYwOGQyM2E0NWRiMDYyNmVhMjk5N2JiYjg2OTgzM2FhNTUgbGVnYWN5LXRydW5rCis3ODExMCBlN2U4OWI0NTgzNDE4Yjk0MWQ1Mjk5Y2Y4ODlkOTI3ZTFhYzE5MDhmIHB5M2sKKzc4MTExIDM3ZTg5ZGViZWY2YTNkZTQ5NzBmYTRiMzk2ZGYzODA2M2ZkZmRjODggcmVsZWFzZTMxLW1haW50Cis3ODExMiA3NTg5NjA1ZGFlZDEwNDJhZjk5MzI1MTRjY2Q4ZGZiOTdjOWRhYTJmIGxlZ2FjeS10cnVuaworNzgxMTMgYTkxZmZjOTY0NGViOWU2ZjI2ODcyMTRhNzVhNDA3YWE2OGM5OWFhMCBsZWdhY3ktdHJ1bmsKKzc4MTE0IDQ3ZmE1NGRhYjM4Y2E3MGJkNjNhNDVhZDlkYjA5MzhjNzM1YzU2MGYgbGVnYWN5LXRydW5rCis3ODExNSA0ZTBkYjQ0NTY0YjE3M2QwOWY4YTdhNWMwMTI4YTQ0MWNiY2FlYjQwIGxlZ2FjeS10cnVuaworNzgxMTYgZjQ4YzQ3MWFjOGM5ZTBlOThiYmExNjhmMTNhMzE3NjRmNjY3ODIxYiBsZWdhY3ktdHJ1bmsKKzc4MTE3IDk2YzI2NzAzYjQ5MGE0YjU3OTdjMjMyNTM0ODQzMTY3MGZlZjQ4YTEgbGVnYWN5LXRydW5rCis3ODExOCA4YmU4ZDVkYjk2YTI1Y2FkOGU5YzI2NGE2M2RlY2Q2ZjlmM2M3ZDg0IHB5M2sKKzc4MTE5IDU5ZTE2MmI5ZjIyNTQzZjc0OGI1ODJlMWUyMjZmNDZhOWQ3NWJjMzEgbGVnYWN5LXRydW5rCis3ODEyMCAzZWVmMzllN2I3NGYzMjI5NGM4MWU2MWRlYzhhZDE3MzY4ZDgxMDg3IHB5M2sKKzc4MTIxIGU1YzU2NDY1OTIwMzczNmIxMzQzODg5ZTVjMmRhMDEyNGRlMDM4ODAgcHkzaworNzgxMjMgZWE4Y2MxMzk1MWIwYmJhNWM0ODIwY2NkM2FiZmMxM2ViOWI1M2RmZCBweTNrCis3ODEyNCA2YTZlZGRiNDU5OTY3YjEwMDBlNjQ3MDlkMGQyZjJjN2FlNDVhYTllIHJlbGVhc2UzMS1tYWludAorNzgxMjUgMjY1Mjg1OTEyMTdjZjM3M2UzNTZkNTgwZmZiMTdmNDFlZGQwMTQzMiBsZWdhY3ktdHJ1bmsKKzc4MTI2IGJkYmUxMzc5ZjNlYWY3ZjJmZGM5NmM2MWYxMDhiMmYzMWE1OTkxZTQgcHkzaworNzgxMzAgMGJlYjdjODI5NGM3ZjQzOWMyNDM4ZDIwZDU4YzUzMzE5ZjFjZWY4NSBsZWdhY3ktdHJ1bmsKKzc4MTMxIDBhZjY5OWYwOWVlM2UyY2QwNWI0OGJkOGRjM2RkZWY3NGQ3YzVlMTAgbGVnYWN5LXRydW5rCis3ODEzMiA2MWQxNzAxZDljNjYyZWNiMzk0NDI4NDMyNDEzZjFhOTE4Nzg1Yzk2IGxlZ2FjeS10cnVuaworNzgxMzMgMTE2NTk1OTRmOTgyMjVlZWUzNTEwNDRmMTcyMTU5NjFiMGRhMDc2YiBweTNrCis3ODEzNCBjNTI5ZTUxZjgzNzc1OGRiZDVhMTlmYWQ4NzM2NWE0MWU3MjBjMDA0IHB5M2sKKzc4MTM1IDVkY2VjYWMxYzhkNjc1ZWMwMTgzNGYzODQ5Zjc0NDRiN2Q0Y2JjOTcgcHkzaworNzgxMzYgZDFlMmY3OTRkMDIwNjQyNWZkOWY3N2FjNWVlMGIyNDYwMGIyMmM5NCBsZWdhY3ktdHJ1bmsKKzc4MTM3IDE3MmZkYjFkNzMzN2FkYjRiYzhjMTBmNDc5NTI1ZThhMWQ2M2RkMDMgbGVnYWN5LXRydW5rCis3ODEzOCBjMmJkYmQ5MzViNWU1MGNiNjdiMGM3YmJiMmE0ODFiMzk2YmU1MTVlIHJlbGVhc2UyNi1tYWludAorNzgxMzkgYTcxZGVhODk4NzdkODk2ZjY2MDkwZjdkMWZiZjgyNjRmZTQ3ZDMxYyBweTNrCis3ODE0MCA2ODdjYTRiMzc0ZjRjNzU2OGI0MDk2MjE5MjJjOWUyZjZlM2Q2NjI4IHJlbGVhc2UzMS1tYWludAorNzgxNDEgYzQ1ZGNiZGNhYjg3MzYyZGFjNmI0ZDdjYzI2MDk4OGJkYThiNGU2YSBsZWdhY3ktdHJ1bmsKKzc4MTQyIGJmZDQ3OThiMWY3N2UwMGRiNmE3OWQ4MTNjNmI3NjMzOTU2NmM3NGIgbGVnYWN5LXRydW5rCis3ODE0MyAxNGVlM2Q0YzdiZDVjODU0ZTNiNjYzYzRkYmIwM2Y0MTQ3NGM2MDk1IHJlbGVhc2UyNi1tYWludAorNzgxNDQgODNjOGRmYjU0NDIxMjBlYmUxZDk4Y2I4ZmExMjgxMjM5MzRlYTVkMSBweTNrCis3ODE0NSBmYjA5ODBlMWE0Y2U0MmY2YzM0MzQ0ZWQ1YzI0ZDE5ODQzZTNjM2IyIHB5M2sKKzc4MTQ2IDVlZmZiZDU1MjFlM2Y2ZWY1N2E1MTI2ZDMzMmQ3NDA3ZWQwZGI1NjYgcmVsZWFzZTMxLW1haW50Cis3ODE0NyAyMzZhYjQ4ZWRkMGNlYTQ5ODg4ZDM5ODA4NjliOWU0MjVkZTViYzUyIHJlbGVhc2UyNi1tYWludAorNzgxNDggMmI5YjIxYjgzMGQ5MjQ2MDM1ZGQ4ZDYzNzQ4NGMwNWNlOGJhODZlNCBsZWdhY3ktdHJ1bmsKKzc4MTQ5IDQ3MTIzOTE1ZWEyMGQ5MGRmZmEzNzdmYmFmNDZmMGU4MzBjYTdkNjggcHkzaworNzgxNTAgM2JkNjViMzQ2YmZjYTE2Nzc4ZWI2MTgwOTRhMzEzZjg5MjhkZTY5OCBsZWdhY3ktdHJ1bmsKKzc4MTUxIDZhZTUwYzJjMGFiOWYzYjgxNDg4NTA0M2U1MjQ0ZGM1Mjc4ZTliNGUgcmVsZWFzZTI2LW1haW50Cis3ODE1MiBmMTU2YjVlNzNiMGQxYTEzMzkzNWYxNWY3OWViYzkxNGFmYTYwNDgwIHB5M2sKKzc4MTUzIDhjZjA3YTY1ZDZmODU1OGY5Y2I0NzUxYjZjNTQxNTVkNjU0NzYzMTEgcmVsZWFzZTMxLW1haW50Cis3ODE1NCA4MmFhOTY4YTk1MDRhNmIzNTIzNTdmODM5NzExZGIyZTQyZjAwYjI1IGxlZ2FjeS10cnVuaworNzgxNTUgMzM0NTJkOTUzMDFmMTYwNzM3NWVlM2UzNjhhYzRjNzFlYmJlZTA3NSByZWxlYXNlMjYtbWFpbnQKKzc4MTU2IDU5MDI5NDQ5NWU1ZjJkMzA2MTYwOGMxNTQ3MDVjNGI1NTk3ZWRkZTggcHkzaworNzgxNTcgMzc4OGFiMjhjY2FkNzBlNmU0ODg5MzViOGMxNDM2ZTgwYTRmNmUwYyByZWxlYXNlMzEtbWFpbnQKKzc4MTU4IDU2ZmUxNjY5OGVlODI4OGFhMTA0MWUzYTE3NWQwMmRmOWEzZTM5MDIgbGVnYWN5LXRydW5rCis3ODE1OSA3YjE2MmM2YTkzNDRmYzAyZGQ5NjUyNGU2NWU1ZTllOWUxOTdhY2U5IHB5M2sKKzc4MTYwIDZmNjliOGZjMmJhM2VmNjhhNzBkNWI1YzJiZTk4NmU5ZDEyZTc0NjggcHkzaworNzgxNjEgMTIxOGEyYTIyNTNjY2EzNDNhYTdjMDEyZWUwYTkwNjUxOTc3NWU0NCByZWxlYXNlMzEtbWFpbnQKKzc4MTYyIDY5NGM5N2EyY2RkYzE2ZGIzMWVlMzJjYzJlY2Q1NGNhYjRkNzllNWYgbGVnYWN5LXRydW5rCis3ODE2MyAyMjk2YzVlNmFkMGRlNjZiYzY0MzVlNzc0ZmYxZTkwYmUwY2I3ZDFhIHJlbGVhc2UyNi1tYWludAorNzgxNjQgODEyOTQ2MmNhYTMwN2E1ODkxYzY4ZjcwYmYyNGQ4YWEzMjRkZTkzYiBweTNrCis3ODE2NSA1MzdiNjY3YWQ0NTAwM2M4ZDY2N2Q2ZjBjODA3ODJlMmY2YTUxYThhIHJlbGVhc2UzMS1tYWludAorNzgxNjYgYjFjOWQ2YmNmM2Q0Yzg0MmMwNjk3MGNiODE5YTA3MjZhNWIzYjY2ZCBsZWdhY3ktdHJ1bmsKKzc4MTY3IDZhY2I5YWZjNzVjZGU0YWNkODYwOGYzYTM3YzIxOTRlZmQzZDUwZjkgcHkzaworNzgxNjggMzM0N2I0ZWVhYjQwNGU3ZDkzMzA3ZDM5OGZmY2RmODY2NmNlMWJlZiByZWxlYXNlMjYtbWFpbnQKKzc4MTY5IDI2M2E4ZjkwNTc4ZDA2ZmRmNzUxYjczYTE4ZmFkMzdjNTliMmFkNDIgcmVsZWFzZTMxLW1haW50Cis3ODE3MiBkNDM3NDAyNDc1MDMzMmJkMDlhMTdmMTRhZjdhOTM1NDkyNDhkYWEyIHB5M2sKKzc4MTczIDMyYTRlZTI0ODA2OTQzNGUwOGY4NWZhMzA5MmZkZWNhMDY1OGE4YjIgcHkzaworNzgxNzQgNDE1NzkyMDA3ZmY5ZWViMzdlNjgzMDU2OGI3YmRlNDk2OGE0MTE2MSByZWxlYXNlMzEtbWFpbnQKKzc4MTc2IDhjNGMzOTFjYWFlYmY1NzYxNzM0NGY5Y2ZkMjVhMzQ3YjViMzk5OGIgbGVnYWN5LXRydW5rCis3ODE3NyBhMzM3NWEwZmZlMmU0NTkwNDNlZTIxNTE2MzQ5OTEwOTcyZmU4ZTE4IHJlbGVhc2UyNi1tYWludAorNzgxNzggNzBmNDU2YmY3NjM4N2Q0OTkwMmQzOWFmZmYyMjlhMDQ0OGQwNDQxOCBweTNrCis3ODE3OSBlMGViOTc3M2FmODE4MzRkM2Q1OThhMzYxMzQyNTgyOWQxYTU3NDI2IHJlbGVhc2UzMS1tYWludAorNzgxODAgYTc5NmYyOGFjZWUyZTc1ZGIxOTdjMDI0YjMwMzBiNzRjNWViODNhMiBweTNrCis3ODE4MSA2OGJlNDQ0Mjg5MDllZDM0YzdmZjYyMGY5MmJlYzg0NTU1OTA5MDExIHJlbGVhc2UzMS1tYWludAorNzgxODIgZGMxMzA0ZjA0NWE2MGU1MjQ2NDk2MDcwYTdmNzYwYjU1MjEzMGI5MSBsZWdhY3ktdHJ1bmsKKzc4MTgzIGEwZWZjZjliNmVkZDU0MmU2ZTVlNjdhZmNhMWRiZDRkZmVmNzg1NGIgbGVnYWN5LXRydW5rCis3ODE4NCAyMDIyZWRlOGNhMGM2MWY0NGZkZjQ0YzAxNmViMDI3ODVmMzE0MmZhIGxlZ2FjeS10cnVuaworNzgxODUgOTAxZmNhYWU1Mjc1Y2Q4NDRlYzViNzg3ZGNjOTYxMDE3Yzc5OTE5NyBweTNrCis3ODE4NiA4NzU2YzNkZTZkMjRiOGUyMjllNDkzZTBjMTZlNWU0M2IyYTBhNmM1IHJlbGVhc2UyNi1tYWludAorNzgxODcgZDI5MWI4MzA0MmZiNmM5OGUxYTRjNDBiZDJiNTVkODI5OGNiZGI5YyByZWxlYXNlMzEtbWFpbnQKKzc4MTg4IDMxZjU4ZDljNzAxNmVjOGY5NmQwNjUxOWZmNzhkN2Q0OGY0ZmViYmIgbGVnYWN5LXRydW5rCis3ODE4OSA1ZTZlZGI0ZTc2ZjU4MzcwMTEwYzYwMGEwMDM5MWQxMmY0YTU4NTg4IGxlZ2FjeS10cnVuaworNzgxOTAgNmIyOWI5Zjk2ODA1OTljYjY1NjFlMGY3OTA5MzExMzRhNjRmZmVlYiByZWxlYXNlMjYtbWFpbnQKKzc4MTkxIGVmNzQ3NjRhNjMyMDk4MzYxMDQzMWIzMTYxNGI1YTNlNjQ1M2U4ZGYgcmVsZWFzZTI2LW1haW50Cis3ODE5MiAzYmFhYmQxZDY4YTI4NmY0MzNhZGRiNDIyZDVmZjMwZDBhNmIwZWE3IHB5M2sKKzc4MTkzIDAyOTMxODI0NjlhNzczNGRkMzJlNDhkOGFiZjNlNGNiNGQ4NTlhMjQgcmVsZWFzZTMxLW1haW50Cis3ODE5NCA0MTFiMzI5OTM4ZGM0Y2FkNzgxNDEzODBmMjQzOGFjNTE0N2IxZmI1IGxlZ2FjeS10cnVuaworNzgxOTUgMTcyNWZiYWJlNzNiZDQwNWEwODUyMGFjNzc4Mzk4ZjY3OTQ0MzQ3MSByZWxlYXNlMjYtbWFpbnQKKzc4MTk2IDdhZTQzYzA1MTE2ZDNmOTM2YTNjMjJlZjhhNDQzZjk0ZjI5MWEwZDcgcHkzaworNzgxOTcgNjM3NGUxODU5MzQ2NDE3ZDUyNTA5ODY3NzhhZDZlNDU0ZTJjMjlhNCByZWxlYXNlMzEtbWFpbnQKKzc4MTk4IGI2NDFjMWFhNjQzZTE5MjhjYTkwNGJkMDdmMzE0MDQxNjZhMTZjZjIgbGVnYWN5LXRydW5rCis3ODE5OSA0NjVjMDQ3ZWYzMTFjMGNjNDBmMGU3ZDNiYWE1MmVhMDM3NzM5YzhlIHJlbGVhc2UyNi1tYWludAorNzgyMDAgNzdkODU5MDI2OTE5Y2U0YWJlOGUyMzZkYTNlZmQ4OGNiOThjYmE4YSBweTNrCis3ODIwMSA0ZjZjMWI4Mjc3ZWI0MzZlY2JiZGE1MDgwNjQ4ZjdlMjI2MDliYjhjIHJlbGVhc2UzMS1tYWludAorNzgyMDIgN2E1NmYyY2FlM2VjZDdkYTI3NjJmZDg4OTYyODJkNWI3YTk2OWQ2MCBsZWdhY3ktdHJ1bmsKKzc4MjAzIDE1YjA0OWZhYzE5MWE0MDY1Y2IwODZjOGM3Nzk1NzdmOTE5NTVmYjYgcmVsZWFzZTI2LW1haW50Cis3ODIwNCBkNGZiYjdlNTNjOTI5MmI5NGRmYTgyZjVlNGQyMzVkOWU3YTk5ZDMxIHB5M2sKKzc4MjA1IGI3MzI2ZjliNTk5YjcwZjM1MWU3OWFjMTM0YjAyMWI0Zjg4MGFiMjggcmVsZWFzZTMxLW1haW50Cis3ODIwNiBlYmZkMGVhZWJlMjcxMThmMjlhNGY3YWJlNzg4OGM0MjBlMmU0NTkxIGxlZ2FjeS10cnVuaworNzgyMDcgYmZiM2U4NGY4NWZmZjU5ZWYzNGM4OTVlMmJkOTIxODI1YzQ1YTE2MiBsZWdhY3ktdHJ1bmsKKzc4MjA4IGVlY2YxYmVmMDUyZDNkYTUxMTIzZDI4NWI4M2QxOGI0YzQxYTVlMTcgcmVsZWFzZTI2LW1haW50Cis3ODIwOSA1OGIzMGRiY2Y5OWM0OGQ2Yjg1ZTc1MzNiZTBiZDBhMDY3MjNhNzQ0IHB5M2sKKzc4MjEwIGE2NzFlZTNiYmNiNDk4ZTc0OTQ2M2VmNGQ4OTM3Yjc3NDY4Y2Q4MTkgcmVsZWFzZTMxLW1haW50Cis3ODIxMSAwZGJlMjkzMGVlM2YwZGQyNTkwZDUwYjMzNGJkMzEwOGEwNTU5ZjNkIGxlZ2FjeS10cnVuaworNzgyMTIgYTI3MjQ0NGYwZWYwYzkwMjJmMzdlYzg2ZmQ0NTdlZmY1YzYyZGQ4YiBweTNrCis3ODIxMyAyMjUzNTU3ZDZmYTJmZTYxMTJlODNjMjM1ZDQ5MDk1Yzc5MDJiOTUyIGxlZ2FjeS10cnVuaworNzgyMTQgNGMwYmUzN2I0NmIwMzY4YzAzYjRkN2JlYmViYzhjYjY3NmMwYWU5MSBweTNrCis3ODIxNSBkZmM2N2FkNGRjZWU1N2I2NjYyN2NiMGY4ZDhkZDQxMWE2NDJkZGI1IGxlZ2FjeS10cnVuaworNzgyMTYgOGYwMmM1NGFjMmFjOGE3MGZlNzEyZDkwY2JlMzBiZmM3NTQ3MGIyYSBsZWdhY3ktdHJ1bmsKKzc4MjE3IGUzZDA3MTIzM2JlZmMwYWUxNTM2MmI3NTM3ZDNjMTBmOWZjOGY0OWMgbGVnYWN5LXRydW5rCis3ODIxOCBlYTFhZGM2ODM1Y2NkMTkyZmQzODlhYzk0NmU5Y2IxNWFjNzE2Mzc1IGxlZ2FjeS10cnVuaworNzgyMTkgZjIyNWQ1ZTZlMGU1MGIwY2ZjZmUyMDg0OGU1ZjZhYWEwNWRmMjNjYSBweTNrCis3ODIyMCA5M2UzZTZjNTE1MTM3NTdlYjgxNTMzODgxN2VhZDU1YzQxMDIwNzhmIHB5M2sKKzc4MjIxIDlhNTgxYzAyMTBmMmVmNzc3N2JhZTI4ZmVmMzY3OWEyMTBjYmU2MzYgcmVsZWFzZTI2LW1haW50Cis3ODIyMiA0MWM1ZThlZmVhYTNjNThjOTI1OWExZGIzYTc5ZjBlN2E2OTI1ODJhIHJlbGVhc2UzMS1tYWludAorNzgyMjMgZmI4YzAzODhlMzg1ZTRlZDljODQzMGUzMmJjMDlhOGNlMmJmMDU3MSByZWxlYXNlMzEtbWFpbnQKKzc4MjI0IDk5MmZkMDU0N2ZmOGQ1N2Q4NGYzOGVhNWE2NDBlODI2YWI1ZTk2MDggcmVsZWFzZTI2LW1haW50Cis3ODIyNSAyODZhZjMwOGMxYmJhYWE4OGExMTVlMDgzODk0NGFjNjc3NWRkMGNmIHB5M2sKKzc4MjI2IDhhOWVmMmNmNzk0ZmU2ZTZjYjcwYmZiODJhNmY3NDZmNmViOTM2ZmMgcmVsZWFzZTMxLW1haW50Cis3ODIyNyA1OTdkNmQzNjJkZGU0MGQ4MGZiNzE3ZGIzMzg3OTk1MjM4NTA1NzA5IGxlZ2FjeS10cnVuaworNzgyMjkgNWFhOWY4M2RkMDBkOWZlMmQ0YzI0NGQyOWFlYjBlOTAwNzkwMTk3OSBsZWdhY3ktdHJ1bmsKKzc4MjMwIDcyZjQ2Y2JmYTU3YWFkMjIzN2I2ZjI4ZmI4ZWNhNWI3ZDgyZWRmMjYgcHkzaworNzgyMzEgNWU2MTRlYWFhNTA1MWFiOTRlYjJhMTMxYjM3ZDZlYTBmOWJjODc2MyBweTNrCis3ODIzMiA2ZTc0ZDNlNTFkMzNlOWY3OTFhNjFmZGQ0ZTVlZjAzNzkzMmYzMjU0IGxlZ2FjeS10cnVuaworNzgyMzMgNGZjOGI2ZmU0YWY4NjdhMmJhZmRjNGM4NzQwYmRmYzIzYjMwYmFmMyBweTNrCis3ODIzNCA3ZGE3ZjliZmRhYWMwMTc4OWQ3ZDM0NWE3ZWEzMDQ4NjlkNmEwMGMyIGxlZ2FjeS10cnVuaworNzgyMzUgYzQ4NWU1NWFhZjk2NWY1NDY1OTY5YTYwN2RjZjBkYWQxNjc4YTMxZSByZWxlYXNlMjYtbWFpbnQKKzc4MjM2IDhiMTZmMTQwODI0OWU5YWUyZjk5YTY1MTg4MGViOGIxY2E2NGVmMjQgcHkzaworNzgyMzcgZjcyNWNmMTIzMzRiOTdjMDExMjliYjk4Zjk1YWVlOTMyZDYzYzk5OSByZWxlYXNlMzEtbWFpbnQKKzc4MjM4IDA5MDZjNmY2NDg0NzQ0OWE3YTNhNTAzMGZmOWRhMDc1OTdjMTdkMzkgcHkzaworNzgyMzkgNDc0ZWM1Njg1YTJkZjBlZWNmNzNiNzA5OGM1YTI3YmNlMzhjNzJiYiBweTNrCis3ODI0MCAzYzcwNDQ2MWVhZGEwOWNiOWUzN2Y4YjQ5Yjk2NjA3ZWQxMDU3N2UxIHJlbGVhc2UzMS1tYWludAorNzgyNDEgZjk4MTdlYzhiNTRjMDRiMzYzZjQyOTVlZWNmOGQ0ODhiZDFlMDA0NSBweTNrCis3ODI0MiA2NzRjMjdkODdlYTk5MjFiNWJkMGZmNTNhOTdhZTEyNTMxNDFmMmU0IHB5M2sKKzc4MjQzIDFiZjA0M2VkYjhkNTc0ZmFlZTU5NmIzMDM5N2Y5YWQ4NzUyOWNjNDUgcHkzaworNzgyNDQgNTI4MjM4MjBkY2UxM2U4ZDFmMjk5Y2Y1MDgxYjM0ODM1N2MxOTMwMSByZWxlYXNlMzEtbWFpbnQKKzc4MjQ1IGU3NDIzYmVkMGVjNDNlMmE0NGZmYWMwOTI1MTYxZjYyMmRjMzE1NDUgbGVnYWN5LXRydW5rCis3ODI0NiA4ZDg3MWUwZmE3MDE4NjIyMGI0NDhhMTU2NGZhMjMyZGZhNmM0YWJlIGxlZ2FjeS10cnVuaworNzgyNDcgZWFmOGE5M2NkYmZmNGNhODYzZTYyNzRjZmUyODI2Y2JiYjRhYTMwMiBsZWdhY3ktdHJ1bmsKKzc4MjQ4IDdhYjYzODg0ZDY4YjZmNTdmNjczNTQ1M2IwNzY0Y2JkY2VmMDc0M2MgcmVsZWFzZTI2LW1haW50Cis3ODI0OSAzYTcxMzJmNjU2MjMxMzY4MTA4NGI4OTIzNWE4N2JhOTk4MzkyMGFhIGxlZ2FjeS10cnVuaworNzgyNTAgYWNiMjdiOTc5MjNhM2E3ZWE0MjkzZmY5YjkwMzNjODFiY2Y1YzU3YiBweTNrCis3ODI1MyBkZTRjYTg4MTRlMGQ4ODMxN2Y0YzdhM2YwMjgyMDIzODBjMzJkZjY3IHB5M2stY2RlY2ltYWwKKzc4MjU0IDU1N2U0NTc5OTdhODE2NGNlMjc2MTcwYjdmMmZkN2ExYWRhODc3YjUgcHkzay1jZGVjaW1hbAorNzgyNTUgYmE0MDdjM2Q4MjBjZDg1NmRjM2FjZTc2YzkwN2Y2MDQ4YmMyNDQ5NSBweTNrLWNkZWNpbWFsCis3ODI1NiA4NjcyNzBkM2NhODk4OTA0YzI1MzkzZWY5ZDA3YWQ0OGMyNGJlYzQ2IHB5M2stY2RlY2ltYWwKKzc4MjU3IGFjNWMyY2ZlYTQyZjZkMDY3YzAxMWI0ZTFlODBhMmI5N2E1NWE5MzAgcHkzay1jZGVjaW1hbAorNzgyNTggOWZjYzAzMGE4ZTcwMWI4MTE1YWY4NDFiYWI5ZmU4ZmU2Nzc5YjMxZiBweTNrLWNkZWNpbWFsCis3ODI1OSAzZTdkZDIwNjg1ZDg4NWE4YTdhNjQ4OGEwMTVmOGEyZjM0ZGMyYzE1IHB5M2stY2RlY2ltYWwKKzc4MjYwIGY2N2JjZDRlY2JlZWZkNTZhNWE0MTMxYWJlYWU4YjgwMDU4MDgwY2YgcHkzay1jZGVjaW1hbAorNzgyNjEgNjZmOTc1MGJjNmZmMzYxZGNlZDZkYzc3Y2E0OWFjNzUwZDJhYmY3MyBweTNrLWNkZWNpbWFsCis3ODI2MiBmYmMxNTk1MzFiZTFjYzVjMDZjM2VhOWY2OGMyOTBkODVhNzIzZmE1IHB5M2stY2RlY2ltYWwKKzc4MjYzIDEyOWJiYzY2MzliZDg3ZjA5NjljY2Y1Nzg1M2FiZDBhOWM0NmEzYTggcHkzay1jZGVjaW1hbAorNzgyNjQgYmFkZDRlNzA1NzMzYWJmNDM1NDlhZWMzNjUzNGY5YmJmMDhmYzhjOSBweTNrLWNkZWNpbWFsCis3ODI2NSA0MjA5YzM5OGM5Mjk3YWE1NWI5YjBlYWE5MGE5ODhmNWQwNzA3ZTliIHB5M2stY2RlY2ltYWwKKzc4MjY2IGUwZTNmNjM0MTU3MDQ2ZjkwMWNiMjkyMWUwM2FkODM4NTNmYzgwYWYgcHkzay1jZGVjaW1hbAorNzgyNjggM2MxMmJkZjZjYzZkMTdmM2IwODdlOTY0NDAyYmE4YThlZDM2NGE5OCBsZWdhY3ktdHJ1bmsKKzc4MjY5IGFiMjFhMDQ4MWQ3MjY0ZTYxNTE0OTkwNjZiYjU2ZGQwMzljNjgyYmUgcmVsZWFzZTI2LW1haW50Cis3ODI3MCBkMzJkMDNkNDE5NDc2ODdiMGQyNmY4ZTU3YjkzOGY4NjJlNTQyN2FhIHB5M2sKKzc4MjcxIGI5ODM3NzlmMjEyMWI4NTQ1MTFhOTUwZjI3NDc2YjJlZGE0OWNhZmUgcmVsZWFzZTMxLW1haW50Cis3ODI3MiBkY2RhOTg1YzY0MDM0MjgwOGNlN2RiMDc2YWNhYjJiZTE5NWM2ZjIyIGxlZ2FjeS10cnVuaworNzgyNzMgYWYwMGY3MGExZmYxMDQ0YzI3Y2VkMWY5ZTFkMGFkNGEyZjdjYTY1YyByZWxlYXNlMjYtbWFpbnQKKzc4Mjc0IGRiODZiZjM5Y2NhYTY4ZjNiZjNmOWU3MWMxNzYyOGMyZmZjMzBkMjMgbGVnYWN5LXRydW5rCis3ODI3NSBkM2FlMDQxZTdiOGMyNmVkOTVkNGE3NzJlZjljYzg3Y2U3OGI2MTUzIHJlbGVhc2UyNi1tYWludAorNzgyNzYgMzc5MGYzZWRhMWM1NmI4YWM2ZmJlY2U0Nzc5MzExMzIxOWUwOTVkYSBweTNrCis3ODI3NyAzOTBiMGU3MDdmNTRiNWRjMDlhYzE3MTQ3NDNiNmMwZDMzMDA3YjA0IHJlbGVhc2UzMS1tYWludAorNzgyNzkgMWIyNDJmYjMzYmU3MTIzY2FhNjUwMGUzZjhjYjgzZTIxOTE2ZDNkNCByZWxlYXNlMjYtbWFpbnQKKzc4MjgwIGM4ZWE3NTU5OGZkNmQyZTQwYzIzNDljYTA4NjIyNjQ0NzUxODA4OTUgbGVnYWN5LXRydW5rCis3ODI4MSBiOTIyZTFlYmUzODAyMjY5MTlmNDE0NTUzODc5NTczZjlkNmYwNmRlIGxlZ2FjeS10cnVuaworNzgyODIgMGVkMTkzNzY5YTVmMWVkYmY1NTcxOTAwNTBlZTIzNmUwMWYwZDNkOCByZWxlYXNlMjYtbWFpbnQKKzc4MjgzIDAzNDA4MDRhZDcxM2UwNDg2NGJiOWFjMTVkYmMyZDc2ODAwY2U2ZGEgcHkzaworNzgyODQgNGYzMDQ0NTJiYmY2OWFhZmUwNmE5YjZmYjk5YjJiZDRiMDNhNGEwNCByZWxlYXNlMzEtbWFpbnQKKzc4Mjg1IDgwYjYxMmNkOTRhNGU3ZGUxZGUyOTkwYTBiZjJmMTQzNzgwNDhhMGMgcmVsZWFzZTI2LW1haW50Cis3ODI4NiA1MDMzYTQyOTVjOTZhZWI3MmEwM2MzODU3MjQ5MzA1NTYyZTAyZjQzIHB5M2sKKzc4Mjg3IGUxNDRjNjNlMWZhNjExMjRlMzc3MWYyZjU1NTk3ODMwZTliMTI4YjMgbGVnYWN5LXRydW5rCis3ODI4OCAwZDNjOTcxZWIyMDY5NzU5YmI3MjY3OTlmY2U4YjZmMzQ1YTIwZTI1IGxlZ2FjeS10cnVuaworNzgyODkgMjBiODU3YmIxMGI4MDg1ZDkyY2Y1MTkzMmU4MDZkNWJlZDk0NjNhMSBweTNrCis3ODI5MCBiNzQ5YTc5YTUxY2NiNGNiYTcyZDQ3NjFlNTM4NWY1NGUxM2JkOGE0IHB5M2sKKzc4MjkxIDBkMmQ2NjA2MTMwM2JkNWI1ZDA5YjYyODI0ZWM4OGI2NWE5YzQ2ZDAgcmVsZWFzZTMxLW1haW50Cis3ODI5MiAxNzIwZWUwODNlZWVmNjRmYzA5YWQzZWRiOTcwOWYyMzUxYzNmZDk3IHJlbGVhc2UyNi1tYWludAorNzgyOTMgNmQ2YmU2NWQzODgxZmI2MjFjNjA4NDBlYWQ0YWU1MTQwYTc0NTVmOSBweTNrLWNkZWNpbWFsCis3ODI5NiA5NmE0YWExZjMxYzEzNjkxMDM0ZjE0NmMzNDk0YjkwOGU1Y2RmMTEwIGxlZ2FjeS10cnVuaworNzgyOTcgYWI2ZmQ5ZTQ1NDM2MjA0MjFjZDkzNWQ4OGU0NjJiZWZhYmJhZmZhNyBsZWdhY3ktdHJ1bmsKKzc4Mjk5IDU4MWUyMWQ3YTE5Mjg1N2E1NWU4MGI0YTJjNTM4ZWI2ZTQxNzg0ODMgbGVnYWN5LXRydW5rCis3ODMwMCBjYzBlNjljOGYwYzIzNzI5ZjQ0MzhmMmU0NDBhODJhNzZiNzAyYzlhIHJlbGVhc2UyNi1tYWludAorNzgzMDEgZjhkZGZjZWQyYTM0N2E3Yzc4OWE2YzhjYzcxYjQ4ZTBhMWZkNmJhNSBweTNrCis3ODMwMiAwMzY5YmJhYTVkMmRmYmY5YWExZjc1ZGU1NzQ2NGY4MDEwMDkyNDg4IHJlbGVhc2UzMS1tYWludAorNzgzMDMgM2RlOWJhY2FkOTViYzJiYTRjMmQxMWE1ODZmYTQ1N2NkMmI0NTE2MCBsZWdhY3ktdHJ1bmsKKzc4MzA0IDhiNzQ1NWUwMWExMTE1MGQ3YzcxYmI2YTkxNWY5Nzc0ZTc1M2E1ZDUgcmVsZWFzZTI2LW1haW50Cis3ODMwNSBmODYxMmQ0MTBlMmM0MThiMjhlYTE4ZGRlN2RmYTc2ODJjYmI0NTk3IHB5M2sKKzc4MzA2IGYwYWNmMjEzOGE5NjZhN2UzZWU3ZDk2YmMwMjVhMTlmYzA4MzJjMjAgcHkzaworNzgzMDcgMjA0NTRmYjBiZTZlZjc3NDRkYmUxZGE4MTA5ODY4ZWQ4YzVjZjQxNSByZWxlYXNlMzEtbWFpbnQKKzc4MzA4IGMyNTRlNTRhYzg1NjQ2ZmRkZjk5OWRhODk1NTc5NGVhZjM4NjliZjcgbGVnYWN5LXRydW5rCis3ODMwOSBjMWE0ZjI3YWU4ZmU4MzY2ODhkN2FlZTkzMDc5ZTMwNzFlNTQxNDQyIHB5M2sKKzc4MzEwIDE1ZDhlZDk0OGZiNTYxMWI0YWY2ZWQwZDU5ZjFjNTcxOTJiZWMxZGEgcmVsZWFzZTMxLW1haW50Cis3ODMxMSA5ZWNlM2RkMWU5MDEwZDMyNmZiOTA3MjhkZDQxZjIyMzgyNzU3ODhlIHB5M2sKKzc4MzEyIDUwZjhiZjYxNzA2YTQ2MGFiYjY3YzVhNDBkN2RiZmJmOThiN2NiNmYgbGVnYWN5LXRydW5rCis3ODMxMyBjNDVlYzNiMTFiYmE5ZWQ4MjRhZTdlYjhiMzllZTdjYWRhNTk0NzBjIHJlbGVhc2UyNi1tYWludAorNzgzMTQgNTIyN2E1NWVkNzE0MmJkOTk1MzFjZmVkNmIwZDhhYTMwZTgyYTJkOCBweTNrCis3ODMxNSBhZTY1YzdkMzVmMjdhYTJiOGI4MTcwMDZhNzc0YWU2MjI1YTI4Y2JkIHJlbGVhc2UzMS1tYWludAorNzgzMTYgMzhmNzMyODJmMDM4MzBiMDJiNTQzY2Y3OWUyZmEwMjU3ODYwZDY4NiBweTNrCis3ODMxNyA1ZDc3NDFlMWU2NzI4NmUxMzg4MWQ2OGU4MzIwMDMwY2QyZTRlNDYxIHJlbGVhc2UzMS1tYWludAorNzgzMTggMjMxMTUwMTVlNWI5NmU3NDFhODYxYmE1MmQ4MDA0ODE2YTgxNDVkYiBsZWdhY3ktdHJ1bmsKKzc4MzE5IDMxYzdkZWY5YmY1MWU3OGJjYWViMGUzNTMwMTU0NzU4NzRhNzkyNTEgbGVnYWN5LXRydW5rCis3ODMyMCAxMzJkNDIzNDgyMTZjNzNlZGNmNjQ3NGUxYWE5MWE5YWZhMzc4ZjE5IHB5M2sKKzc4MzIxIDJlYjEzNjU4ZjU3M2E5YmI2ZWVkMDQ3NDAxNDkyNDE2OGRlMTExNmUgcmVsZWFzZTI2LW1haW50Cis3ODMyMiA4ZjJkMTAwMTRjMDg0NjRmOTA2YTJkOTE1NDUxNzI5YjI5YzVkYTEzIHB5M2sKKzc4MzIzIDdhMGMzMGU3ZTRjYWYwNDY5ZGU1ZmM1NmZlNGFkZTJjZTU5MzhiOTggcmVsZWFzZTMxLW1haW50Cis3ODMyNCBkN2MzMzc3ZjhhN2I2NzQyZjc2MDBlMzI0Zjg0ZmJjMTg0OWQxNGRhIHJlbGVhc2UyNi1tYWludAorNzgzMjUgYzg4YjY2MDJmODJkNzVmNmYwZGMyMjhhNDI2NGU0YWRmOWQ5ODVlZSBweTNrCis3ODMyNiBhNjA4ZmMzNzhkOTIyMWQ0NDIwYTE1ZGVkODdkM2I2MDI1YzllNmM2IHJlbGVhc2UzMS1tYWludAorNzgzMjcgNDkwMmVhMDI1NjMwNzk5NWJjOTlkNTRkMTA0Y2YyMjAyNTFjOGJiNCBsZWdhY3ktdHJ1bmsKKzc4MzI4IDUzMmRhODY5NzNjZDRhMWQ5NmQxZWVmNTE3ZjFlZDM5M2JkN2ZiZDMgbGVnYWN5LXRydW5rCis3ODMyOSBmZjg0ZTA4OTNjYjFhYjZmN2Y2ZDQ0NzM1NWJiMjhkN2FlMjQ5YTRlIGxlZ2FjeS10cnVuaworNzgzMzAgOTc5YWMxN2VjODIzZDA2ZjY1NGVkY2YxMmFkYmRjNTA0OTU5MWZkMiByZWxlYXNlMjYtbWFpbnQKKzc4MzMxIDQwY2IyMjMzZjcyNmYxYzYwZmMyM2UxMjczMGUwY2RmM2I4NWQ5MTAgbGVnYWN5LXRydW5rCis3ODMzMiBmZDk0ODg4NTQwODg3NzNjYzQ0MjdlOTMyMDk0MzdlMjE0MWMwNzA1IGxlZ2FjeS10cnVuaworNzgzMzMgNWM0NDY2YjE2ZDZkNTc2ZTMxNTNmM2NkNDNmNGI0MDQ4ZDE0MDIwZiBweTNrCis3ODMzNCA3M2NkODM3MDZiYzQ1NDJkMzc4OGMwMmU1ZjU4YmM1YjVmZjk0YjllIHJlbGVhc2UzMS1tYWludAorNzgzMzUgMzM1N2I4ZWJiMjU5NWMzMzUyNGM1NGY5OGU5MGQ2Y2I3ODY5ZGRhMyBweTNrCis3ODMzNiBlYTAyZWNlMzIzZmUwZTg0NDQxNjM5NjdmOTAyMjRlMGRlMDhjNzk2IGxlZ2FjeS10cnVuaworNzgzMzcgZWY3MzJjM2RiNjNkYzU5Zjg0NmM1ZDRmNjU4MzRhYjRjZDkzMjI0NiBweTNrCis3ODMzOCBiZDEzZWVlZGMzYjAzY2MwMzVjMzk2NTNhMTdlYjg0YTE3MzFmZDVkIGxlZ2FjeS10cnVuaworNzgzMzkgMDQ3ZjE5OTc3YzQyODQzNmMyYWRjZWU5MmU4OGU5NzdjMzdjNzEyNSBsZWdhY3ktdHJ1bmsKKzc4MzQwIGI4M2Y5NzE2ZjEzNWI4NjdmODk3MjQ1NGUwNzE2ZTUyNDFmYzk5NmMgcHkzaworNzgzNDEgZDI4OGU1NDkxYmNhYWJjMDE2Y2RmNWNiNGFjY2YxNmIxOTg2MTMwNCByZWxlYXNlMzEtbWFpbnQKKzc4MzQyIDdmYjAxM2ZmMDE0ZjE5NWU4NTFkYjU4OTc5MGQ1NjNmYTU5ZTViNTkgcmVsZWFzZTI2LW1haW50Cis3ODM0MyA1ZmNiMGUwYmU4OWU5YjEwMTIxMzFlN2I1ZDA5OGUzYWYyNjliMTQ4IGxlZ2FjeS10cnVuaworNzgzNDQgODdmMWI4ZmZjMjhkNzVkZTE2NTM2MDgyZWQ5M2ViNWI2NGE2NDdhMyByZWxlYXNlMjYtbWFpbnQKKzc4MzQ1IDc3ZDg3N2QwYmYwNmQ5M2VkNDM1M2IzOTI5OTQ0M2UwNTVhZjEwMWYgbGVnYWN5LXRydW5rCis3ODM0NiAzMWNiNjFlMGYyYmMwMDg2NmVjZDYxODIwMTc0MGI1ODk3OWNhOTcwIGxlZ2FjeS10cnVuaworNzgzNDcgOWI1ODA2YTAwOGU3MTRlYzJlZWQ2M2NkY2I2ODdmN2ZmYTFjNjZmNCBweTNrCis3ODM0OCA5ZDU1YjE3YTNjNjQ3YWYyNTE2ZGFiODc1MjYzYTU0YTJjYmUyYTBmIGxlZ2FjeS10cnVuaworNzgzNDkgMTUyODZkOWYxYThlMzgwMzI1YzcwOWFmYmViNTJkMTQ1ZjI3OGJmZSBsZWdhY3ktdHJ1bmsKKzc4MzUwIDhjMGU0ODk2ZGJmYzUyNDU2MjU5MGEwMzEzY2VmMzU3YzI4NzI0M2YgcHkzaworNzgzNTEgYTRjNDVmOGU3MGFhZTFmMzk5MzMwNDAzODAzMDE0MmJjZDYyNDA4ZiBsZWdhY3ktdHJ1bmsKKzc4MzUyIDhlOGM0NWFiNDRkY2Y3ZjdlYTcyODJmYTk2MjE2ZjAwNmUxYmE1ZjcgcmVsZWFzZTMxLW1haW50Cis3ODM1MyA1NzY3ZDkyNDlmNTg5MjNlMzMzMzU2NzU4NTFkN2RmOTFhODczNTQ4IHJlbGVhc2UzMS1tYWludAorNzgzNTQgMGJkMTczNmUzMjk3M2Q2NjE4MDY2ZDUyZDBhMDM0MmI3NjdkOWYwYSBsZWdhY3ktdHJ1bmsKKzc4MzU1IGZjNGIwMDVjYmQyOGY0MjMwOWYwNTVhZmFhZTIzZTNjNzYwMGFkODMgcmVsZWFzZTI2LW1haW50Cis3ODM1NiBmYzI4NmZlNDY2MTIzMzBjYjJhNGFhZmQ4MmQ3MmM2NDQzNGYzNGQ2IHJlbGVhc2UyNi1tYWludAorNzgzNTcgYTVmYWFhYjk5NWM0MmM5YTYzMzE0NjM1MzRkZDQxOTU3MWVlN2NlNCBweTNrCis3ODM1OCBiNGM2Yjc2OTRmMGMyZWM4MzE5OWZhNDk5YTUzZmVhOTgzMmVjMzYzIHJlbGVhc2UzMS1tYWludAorNzgzNTkgYWMzNmVjOGJhZTZjNjUwNjg4NjA2YjkyZGY0NDExZDcyYzA1MjI5NSBsZWdhY3ktdHJ1bmsKKzc4MzYwIDQ2MGNlOWU4NDgzODNlNWY0ZmZlNjgyZTJjMTRiMmQxZTA1YWM2MzUgbGVnYWN5LXRydW5rCis3ODM2MSA0YTExODFlYzQwMzY0ZmZhNTRhNzk2NzY1NDNlZjhlOWFlZTU4NTMxIHJlbGVhc2UyNi1tYWludAorNzgzNjIgYTFkMDc4Yjg4MjQ3MmE0MjQ5MTY0MGNhNTNiZjRkOWQ2YjlhYjJjYSBweTNrCis3ODM2MyAxMzljMTA0OGYzMWJkNTAwYTg4NjFmODM0OGI0MThjYmMyMjJmMzY5IHJlbGVhc2UzMS1tYWludAorNzgzNjQgYjUyZTNmZjBhNGM4YjIzZWI2OGNiNzRlNTA0YmFjMjk5NGUxZTU4ZSBsZWdhY3ktdHJ1bmsKKzc4MzY1IDhjOTMwZTRkNTFiZDI5MGUyMDE3YzQ5MmJhZDE2ZmY3YTk5ZjE1ODYgcmVsZWFzZTI2LW1haW50Cis3ODM2NiBkZjU2YmExY2IwYWYyODI1OGE4Yjg4OWE3NWVkYTcwZDg3MzVlMzNmIHB5M2sKKzc4MzY3IDkyNjcwY2MxYTZiYzQwMmRkMTFhZDUxMDJhY2QxODI4ZmMxODZhODIgbGVnYWN5LXRydW5rCis3ODM2OCBmZWM1NWY1Mjc3NWNlNzc1MTg1M2UyNDZkMjFlMzQwNDk1ZjliMTA4IHJlbGVhc2UyNi1tYWludAorNzgzNjkgYmY4ZDlmMDM1OWMxMjI2MDNlYjY3OTNmYjU2MzhhZDI5ODc2ZmZlYSBweTNrCis3ODM3MCAyNDNjYzgwZDRhMDY3YjQ5MzQ5MWZhOWYzMTI3Yjc5OTI5YTA2MzMyIHJlbGVhc2UzMS1tYWludAorNzgzNzEgNzZhYzdhMWQ3MWI3NWVhZTZlYTc1MTVlYjg3NjkxMjVkYTQ5YTM4NyByZWxlYXNlMzEtbWFpbnQKKzc4MzcyIDhhNTZiODJjMTI4NDUyOTExZDViZGIwM2JhZWVlNzExMTQ5ZmY5NTkgbGVnYWN5LXRydW5rCis3ODM3MyBkYTM3M2RhYzI0MTVlMzJiYzI1ZmUzYzlmYzNlZjFhMjM0OWMyNTdiIGxlZ2FjeS10cnVuaworNzgzNzQgODliYzI4ZjIwMDIxZmI0NjAyYTRkZWM3MzQ1MGYzOWE1ZTA2NzlmOSByZWxlYXNlMjYtbWFpbnQKKzc4Mzc1IDg2OTBkMDhkOTUzZjk3ZTU1OGNmMTdhZmJlOTQzNDcyYTYwY2U0YjAgcHkzaworNzgzNzYgMGY1NGQ0MzI3MzRjNzY2NTg4MzhjODVhZTAyYzgyMzUxYWI4ZTIwMyByZWxlYXNlMzEtbWFpbnQKKzc4Mzc3IDFkZDFlYWRhNDZjMmQ3MGRlYWQ0ZWZmMjM0MjMwYWM3MTliZDU4OWUgbGVnYWN5LXRydW5rCis3ODM3OCBiZDRjOTE2ZjBlZmE1ZDFlZjY3ZDM3MmU4MjQ5M2ZiNDU2OWFlMWZkIGxlZ2FjeS10cnVuaworNzgzNzkgOWUxY2ExYzExOTAyMWM0ODEyYmU0MTg3MTZiNzdiY2UyZWRiYzlkZiBsZWdhY3ktdHJ1bmsKKzc4MzgwIGIxNzgxNGJlMDVmMWMxZjVhNjcyNThkMWYzZjg1MzM2MmQwODU0MDQgbGVnYWN5LXRydW5rCis3ODM4MSBlMmE0NDQ1YjBlN2MzMDBkMGE3MjAyZWE5NjE0YjM1OTk0YTM0ZGZjIHJlbGVhc2UyNi1tYWludAorNzgzODIgOWZkODAzYWJlMTQxYzk0NjhiOGZhNjdlYzNiOTNhODRkNzgyNWNiNiBweTNrCis3ODM4MyBiOTA4YTQwZjAwMjA1MDkxMzJjMWQ0YmFmMTRiMmQ3MDZiMzczNzUxIHJlbGVhc2UzMS1tYWludAorNzgzODQgZGRhNTE2NWEyMzc0ZTdkODY2MThjZDc3MTQ0ODgyMThhOWQ4ZGRiNiBsZWdhY3ktdHJ1bmsKKzc4Mzg1IDI4NzQ1MGIyZDdhNzhkNWQwZDMzMjM3Mjk0Njk0MGZkOTZjMWJiNDAgbGVnYWN5LXRydW5rCis3ODM4NiBlYTY4ZDc1NTI5YjExY2ZjZGMxN2U3M2IwYWVhODkwNGZmMGRhYzRiIGxlZ2FjeS10cnVuaworNzgzODggNzdkZTdiMWJjZDU5ZGE3ZTY3NjhkZDgwNGI0OWZiYTM0YzBkZWQ5MiBweTNrCis3ODM4OSBhYjEwNzkzYTQ2YTcwMWMyZTgzYjNjMDM0YmZmOTg1NDk2NDgyNTQ4IHB5M2sKKzc4MzkwIDEyNDk3MDcyZjlkYWNlMjBjZTdiMmJiNWNjZjA4OTQ3M2Y2MzlhMzAgcmVsZWFzZTMxLW1haW50Cis3ODM5MSBmY2YyMTJhOTNkZDQyZjA0ZjNlMGZkN2MyYzk1MGFkN2E2NGNmNWI3IHJlbGVhc2UyNi1tYWludAorNzgzOTIgMzJiMjEwNjFlZTlmZmYyNTRjMzIyMjRjYjZmMmM1OWQ1ZGNmZTczNCBsZWdhY3ktdHJ1bmsKKzc4MzkzIGRmNTcxOWMyOThkYjJkOGZiYmI5MTkzNjBlYmU3ZGFiMjc0YzlkZmUgbGVnYWN5LXRydW5rCis3ODM5NCA3NzgwNDgyYTY0ZGE2OWY2MTY2ZjliY2Q3Yjk0ODdhMDJjYTExNzFjIHJlbGVhc2UyNi1tYWludAorNzgzOTUgNDRlZTRmMjcxZDdhZWJmOGFmMjBmMGJkODlmNDcxOTY3NTYzODkxYiBweTNrCis3ODM5NyA3OThlMGQwYzcyNDZkZGIyMDdjMjc1ZDJkYTlhNWQzZTU4OGExYTNhIHB5M2sKKzc4Mzk5IDQxMGMxYzgwZDY2M2FiM2I5ZGU5OTNmYzYyMmYyNGMyYzZjODY1MDYgbGVnYWN5LXRydW5rCis3ODQwMCA4ZDNmZjJmYmJlNGI0YTQ5YTFiM2VlZDE5ZWI1YjU0MGZhNzAzZDc0IHB5M2sKKzc4NDAxIDY5NmY3NjdlNzdmZjhiOTljMjYyNjUzOTdmODcxNzMzYmNmZjA0ZGEgcmVsZWFzZTMxLW1haW50Cis3ODQwMiA2NzgyNTZlODBmYzYwMWQzYjM2ZWM2MzEyNmMyMWY3NmMzNDE5Y2QyIHJlbGVhc2UyNi1tYWludAorNzg0MDMgZTg1NDEyZjU0NGM4M2UyMzNmMmFiYTkwOWQ0N2Q1NGJhZGQ5ODVhOSBsZWdhY3ktdHJ1bmsKKzc4NDA0IDk1NGI4ZTI3NjY3NDYzMjFlZjc0YzZiMzExMGU1ZjM1NmVkYjY2YTUgcmVsZWFzZTI2LW1haW50Cis3ODQwNSBlODAzMjdjYjY4NDY4MWQ0ZjVjNDY2MDBhZmEzODQ5NmY4MTM0YzdlIHB5M2sKKzc4NDA2IDEwN2M0YzZlYzY0OTUxZmE4ODcwZTU5MDFiMDY0MmU4YmQxMWYxNzIgcmVsZWFzZTMxLW1haW50Cis3ODQwOCBhNWY2ZGQxODkyODJmMDFkYTY0OWZkN2E5ZmM5MjIyMWI0YTZkYWEwIGxlZ2FjeS10cnVuaworNzg0MDkgYTlhNDM4MTAwZjhkNGIyY2FiODA1ZTM3M2E0NDM1NzIyNDFkMjMyOCByZWxlYXNlMjYtbWFpbnQKKzc4NDEwIGE5OTQ1YWZjYzRlZDRkNzJiY2JkZTZiZDljMWVlYTBkOGU2NGMzY2YgcHkzaworNzg0MTEgMTc3MTlkMzk1ZjFlNmRlNDdmMGY4N2E4OWYxZTA2YTQyZjc0MzE2MCByZWxlYXNlMzEtbWFpbnQKKzc4NDEyIGM0NjVkMjE0Mzg3NGRjYWY1ZmM5ZTViNzI4YjBjNWMwNzdjNDk3YzQgbGVnYWN5LXRydW5rCis3ODQxMyAwNzk1ZGQ3YjJjOWQxYjI0MDEyYzliY2Q3ZTM2Mjg4NTQzODQ1OTVlIHJlbGVhc2UyNi1tYWludAorNzg0MTQgODIwZWFmOTM4ODA0NWJjZDMyMzllY2Y0Yjk0MDU0MzJiNzRmN2UxNSBweTNrCis3ODQxNSA0Zjc1MDNhZWVhODVmYzg1YzA1M2I1ODJhZjE4YjQ4Y2U4MDk0MjM2IGxlZ2FjeS10cnVuaworNzg0MTYgOWViYmNiN2EzOTg5NzBjYzlkZGE1YmQ5Y2U4YTA5OWFhMGQyMmIxYyBsZWdhY3ktdHJ1bmsKKzc4NDE3IDQ1MjEyYTI0N2VkNGQ1ZDRhYzQ5MDAwNjNjNjgyNWJlNWUyYzRiNjQgbGVnYWN5LXRydW5rCis3ODQxOCAyYjgyYjE2YTYzNzU2YzQ2OTVhYzljNjZlODdjM2UzYjIyMjVlMGE2IGxlZ2FjeS10cnVuaworNzg0MTkgNWFjMzQ5YzMyMmZkM2ZmYzc1N2ZjNjRhNGFiNjhjM2NjODUxOTg5ZCByZWxlYXNlMjYtbWFpbnQKKzc4NDIwIDU5ZWNlYTEzNzY5YjM5ODgwM2IyZWI4YTE3ZDZjZmY5NzgwNGYxZTQgcHkzaworNzg0MjEgYzhlZjkwNmIxMWI4ODMyMDE3YTU1YTIzNzI4MGE3MzYwOGE4ZTI5OSByZWxlYXNlMzEtbWFpbnQKKzc4NDIyIDU2ZjRkNmM1MTQ1MDE2ZTVhNWZmMmRjOWEwZjc3YTk3MDU5YjhiNmMgbGVnYWN5LXRydW5rCis3ODQyMyA5MjI1YjRmOGNiMWU3M2M4MTE1YWM1ZGRiY2Y3YjUzMDZmYWZiM2Q1IHJlbGVhc2UyNi1tYWludAorNzg0MjQgYWY1ODdiNGI1OTA5MTk0ZjMzZTEyZTYzMjllMjgyNzNiZTc5ZjY2ZCBsZWdhY3ktdHJ1bmsKKzc4NDI1IGMwZmExNDUzNzBlNDFmNDEwMjg0OTUxMTE4OTlkYjM0NWM3MWUyYjMgcmVsZWFzZTI2LW1haW50Cis3ODQyNiAzZDRkYjFmNWIzYjE1NWQ1YmY3NDdmMWRkMmY1ODgwNDFjZTg0NWIwIHB5M2sKKzc4NDI3IGU3MDlmNmY2ZjQ1Y2E5Y2Q5ZmRlMmZiOWZlNThiYjczNjE0ZDcxYmMgcHkzaworNzg0MjggNWY5OTM5YWYyZjcxYWNmZGNlZmU1NmM2YjQyMGRlM2EwMjYwZmVlZSByZWxlYXNlMzEtbWFpbnQKKzc4NDI5IGFmOWU2ZWRiYjBmZjc5NmFiZmE1NTYyOGJkODdhYzA3MWZhNzI1ODggcmVsZWFzZTMxLW1haW50Cis3ODQzMCBlNDdhNjRmOWNjNzdiZmVhY2VmMDA2M2Q2MWE0NTZmNGU2Yjg5NzQwIGxlZ2FjeS10cnVuaworNzg0MzEgMzE4MTI1NWUyOGM5OWY5NmQ4MzMzZDU3MDZkNmVkYjZjZDc3Y2QxOCBsZWdhY3ktdHJ1bmsKKzc4NDMyIGM5NTBmYWM3NDExYmE2NDBjOTNhMWQ0YjBjNmIyNDM3ZGI5MTNiNTQgcmVsZWFzZTI2LW1haW50Cis3ODQzMyAyODc4OGY3MmQ4YzBmZTVkYTVjOTY1NTdmYzk1YWY2MGU5MTYyMDlmIHB5M2sKKzc4NDM0IDk0ZTJiNjkwMjk2OTZkMGEwYTAyMDk5ZDg4MjkwNGY2MDVmOTA4YTkgcmVsZWFzZTMxLW1haW50Cis3ODQzNSBiN2RlN2M1YWZhMDQyOTNjNzE5M2E1MDNhMWU3NGQyYTEyYjIxYTgyIHB5M2sKKzc4NDM2IDE5Y2Y1MjZiZWZhNDY5YjU5Y2JmY2Y5YWYxYTAwYzFlNjEzMWY5MDggcmVsZWFzZTMxLW1haW50Cis3ODQzNyAxMjIyMWI2Y2M4Y2RjN2QwODhhY2VmNGZjZDg1ZGMxMzYzNGVjYWQ3IHB5M2sKKzc4NDM4IGY1ZWExMjY0YjdhZTE3ODdmM2EwYTkyMDEwZTJhMWUwYmUwZjliNWEgcmVsZWFzZTMxLW1haW50Cis3ODQ0MCAzODNmNDA5NzVjNzVjM2MzMWNlZTliNDFjMzNhODZlMGNkMTVjMDY2IGxlZ2FjeS10cnVuaworNzg0NDEgYmQ4MzU3YTkxZDNlNjM5MjYxYmExZDExZDIyYjg0MDgyYTA4MGYwOCByZWxlYXNlMjYtbWFpbnQKKzc4NDQyIDg1YmY4NDQ2OWEzMmM5ZGU0NmU0OWZjOWZkMzg0ZGYwYjhiM2UwMTQgcHkzaworNzg0NDMgMjE4MzI3N2NiYWIxODc2NmQ3YWIxMzM4ZjI2NDI4OTJhYzdkM2UxOCByZWxlYXNlMzEtbWFpbnQKKzc4NDQ0IGFjY2FiNGJhYjYzNGNkNjFjNmMzMDg2NjUzODllZjVkNWMwYjVjNWQgbGVnYWN5LXRydW5rCis3ODQ0NSBlY2ZlOWNmYWEzMzQ3MzExMzRhOTU3YWU1NzM1MDcwMmJmZGJjMTc4IHJlbGVhc2UyNi1tYWludAorNzg0NDYgODlhNTBhMTE4MjAxOTEyZGU3ZTY4N2Q3OTI3NDBkMWNiOTg4NTM2OCBweTNrCis3ODQ0NyA1ZjA0ZTBjZDgxNzE3OTAzYjYzMDI2M2QwNjY3YmRkMTMxYmM2ZTVhIHJlbGVhc2UzMS1tYWludAorNzg0NDkgNmMxNGMyNzkyNWI5ZTU4M2Q3N2U5YjQ0MWQ0MDJhMWUxNDVjYTg4NCBsZWdhY3ktdHJ1bmsKKzc4NDUwIGFhY2MwZDQ4ZDQ0ZDdlMTA1YjZjZjg4NjM2YzJkZmIwNzA5YzBkMTcgcmVsZWFzZTI2LW1haW50Cis3ODQ1MSA4NTUzZDQyYzk0YjFhOWZjYWVjZDc1ZjBhNGIzNzk4ZTE0MTRhYjU1IHB5M2sKKzc4NDU0IDFhNjJmNDg5YTY4YTBhOTM2NjI5OGRjZGQ3MjU1NjhhMTk2YjA1NzggbGVnYWN5LXRydW5rCis3ODQ1NSA0NzgwZTAzNzdlMTBmNjhkMWIzOGZkNTI1MGE0OTI4YjIzODg1MDZkIHB5M2sKKzc4NDU2IGUxYmMwMDIyYjIzYjJkOTEwYTIzYjg1ZjNmNjZiY2EyZmQ2ODRlMTAgcHkzaworNzg0NTcgOTViM2JiNmI5ZmFhYjljNDhmNzdlNTk4ZDE2MGU0MzVjNTRiN2MzYyBsZWdhY3ktdHJ1bmsKKzc4NDU4IDNhYjc0MDk0MDVmYTNhM2I5MmJkZGI3ZWIxNzEyYmIyMzUyYmFmMzIgcmVsZWFzZTI2LW1haW50Cis3ODQ1OSBjMTJiOTU1MzUwOTQ4ODM5ZTY3MjBlY2QwOTlkODBlZGVmNWExMjI4IHB5M2sKKzc4NDYwIDA4M2M4ZTUzNTRhZGIzM2I3OTYzYmQwMzk0NmY0NjdjMjNlNmNhNzggcmVsZWFzZTMxLW1haW50Cis3ODQ2MSA3ZTNjNDczNTRkYTM0MjZlN2JjZmYyM2YwYmRjMmFmZWY1ZDFkMmRiIGxlZ2FjeS10cnVuaworNzg0NjIgN2QzNDNkNWJmYjNmMWNkZmM4Mzk2NzNjYmYyNTMwMTA1MDMxYWVmMiBweTNrCis3ODQ2MyBhZDJmNWVhY2QyYTAzNmQ0ZTg0YWI0MDlkMjk4NGNhNTM5M2U5YjlhIGxlZ2FjeS10cnVuaworNzg0NjQgOWFjMzUyMTVhZjRhOGM5N2MyYmUyZDk3NDMxYzc4YmE5MjFiNzExOCBweTNrCis3ODQ2NSAzZGNkY2EwMDcwOTU1NjZlNDI2NjE3NjM3NzcxZDgyYzc5YzQzOWJkIGxlZ2FjeS10cnVuaworNzg0NjYgMjUyZjFlMjNlOTg2MDMxNjg0ZGM4MjZjMGIzNDJlMzZjMzJlNTQzZSByZWxlYXNlMjYtbWFpbnQKKzc4NDY3IDhiMjA0OGJjYTMzYzFkNDNlMTlhYjRjN2YxNjM3ZTBkZTc2NmI3NjYgbGVnYWN5LXRydW5rCis3ODQ2OCA1MzVlMjE1NWFmMWE4MmUxMDM0YWM4MTUwOWIwMjUxZDRmM2I5ZDE0IGxlZ2FjeS10cnVuaworNzg0NjkgZGMxY2Q4ZWRmYTQ2NTcyZTFlNjkxMDRjYzE4MTYwMzEzMjFmZGZhNiBweTNrCis3ODQ3MCA2MDQzZDBiZDhiZjcwYTU3NGQ4MjdlNjU0ZWM2NDVlZDVkYjU0OTk1IHB5M2sKKzc4NDcxIDYyYmFiZjQ1NjAwNWI2N2NkZGVkNjIwODJkZTc1YTcxZTcxNDc1ZDAgcmVsZWFzZTI2LW1haW50Cis3ODQ3MiA5NDg2ZmY0MDJhY2MzODgxOTRkMjg3NWQ0ZmFmMGRmMjZlNWYzYWFjIHJlbGVhc2UyNi1tYWludAorNzg0NzMgMzMzZmU4ZDc5MzI5OGJjMTZkY2JjMTZiMDhmNWMxNGNjYmJiYTQwMSBweTNrCis3ODQ3NCA3ODc0ZDEzYzlhYTc2N2E3ODgxMGI0MGRhNTNiZmYyMjVkNjQ1MDliIHJlbGVhc2UzMS1tYWludAorNzg0NzUgOGU2NDYxNWE0Yzg2MzVmYWVkNGM3NGM1ZGJjYzRhZTdiMTJlMjE2NyByZWxlYXNlMzEtbWFpbnQKKzc4NDc2IDJmMmQyMjU3Nzc0MjgwNmJlNjE2Zjk2YTY3NDA1NThlYzkxN2U5NGQgcHkzaworNzg0NzcgNWUyYTU4NDMwN2JhOTg3YzhjMTExMjQyZDY5YzdmYzZiNTRkOTczNiByZWxlYXNlMzEtbWFpbnQKKzc4NDc4IDIzMWM4OGVlODg4NWMxMDMwZTk2MDZmMjc2MTg4YWFkMjY1NWFkMTcgcHkzaworNzg0NzkgMzI3MGJhMWJlYzc2YTM4OWIwNzNjMzExOWVmODQ0ODBhYjU5NWFjMCByZWxlYXNlMjYtbWFpbnQKKzc4NDgwIDJiNjhlMzE0MmQxN2U4MzNmNjE2ZjE1MTc5OWM1M2VjOTVlMjYxZDQgcHkzaworNzg0ODEgNTZmNTM3YmVkYWZlZDlmZjdkYTg1YTdhOTNhNDg4ZDUzNjg4Yjg3MCBweTNrCis3ODQ4MiA0MDcwZjRjZjhjNzcyY2Q1MzllMmI2N2UxZjY0MTJjNDIyZjI3NjVlIGxlZ2FjeS10cnVuaworNzg0ODMgNDA2NmI0NWQyOGFiMjhiZDZlMjVkZjY5M2M1YTNjZmEyYzkxODM0OSByZWxlYXNlMjYtbWFpbnQKKzc4NDg0IGU1NDAzMjNkODdhOGIyMDIyYTNlNWRjNmU3N2Q4MTgwNzg1MTFmNzIgcHkzaworNzg0ODUgMGQ1OTBlNWU4NDBjNjM1YjJiNWZlNzAxZmJhMjlkMTY0MDJmYWZmOSByZWxlYXNlMzEtbWFpbnQKKzc4NDg2IGFiYTlmNjU0MWFkNjk4M2I1MDQ5YzczOTU4ZjA4YzUwMDNkMTIwZGEgbGVnYWN5LXRydW5rCis3ODQ4NyAyYTBhYzliZGU5OWFmZDAyN2MzZDdjMmFkYzg2OThjNjQ3MTI1MTJjIHB5M2sKKzc4NDg4IGQwYzJiOWMyYmFiYjBlZDk2Njg5N2RiYzEwNThkYzNjMDUwYzJhZDUgbGVnYWN5LXRydW5rCis3ODQ4OSAwYjQ4NDY0ODkwNTVhY2U0ZmI2NzM3ODJhODlmMmRkNDI1MzUxNWJlIGxlZ2FjeS10cnVuaworNzg0OTAgZjEzOWNhMDM0YzNiNzUwMzgwNGVhNTZhMDVjZTk3ODNmYWYzMWNiNyByZWxlYXNlMjYtbWFpbnQKKzc4NDkxIGJmMTQ2ZjEwM2VlNjczZjJjMjc4N2E0N2JhMzA1YzY0NzJmNGUwN2YgcHkzaworNzg0OTIgMDE5NGQ4YTZiMWVmZmM0MjA2NjY0NzdlYmU3MDVjNDVlOWFkYTUzMiByZWxlYXNlMzEtbWFpbnQKKzc4NDkzIGFlMDlhYjI2ODZlZDA0OTQ2MTJkNDhiZThiMDVhODJkMDBhZGJjMjYgcHkzaworNzg0OTQgODkxZTc5ZDc3MGQ4OGU2N2IwNGI3NmI1YTQ4YzA0OTQxMTQ2MjhhOSByZWxlYXNlMjYtbWFpbnQKKzc4NDk1IDgxNTA5MmE1ZTVjMTI5ODNhODM2YTY3NjE0Y2FhMGZiNTA5ZDQ3ODYgcmVsZWFzZTMxLW1haW50Cis3ODQ5NiBkNjJiZGQ4NGRmMGEzYmRhNWVlMjNhOTkyMThiZTVlNjA1MWM1NTdhIGxlZ2FjeS10cnVuaworNzg0OTcgNzc1OTM3YTM0Zjk2NjJiMzg4NTQ3ZjE3YTEzNjdjOWQ5YmRiODE3ZiBsZWdhY3ktdHJ1bmsKKzc4NDk4IDg2NDAyZmEwYzViODhlY2Y5ZWMwNTM0ODMyYTJmMTg2NWE1ZjdiZmIgcmVsZWFzZTI2LW1haW50Cis3ODQ5OSA1NjBmM2Y0ZWU5YTdkODE5ZTdhNjNjZGRjZjM5OThlZjk3YTE5NzUxIHB5M2sKKzc4NTAwIDU2MjA1ZjU0N2I3NDYwNTljNTc4N2IwMzU0OTczOWIzMDI3NDFhZmMgcHkzaworNzg1MDIgODg3MTNjMGVkMDEwMjVhODA0NTQ0ZmFlMTIwMmU4ZDlmNjcxYjE0NyByZWxlYXNlMzEtbWFpbnQKKzc4NTA1IDgxZDY4MzNjNjI3OGJlZmQwMTIzMGY1ZjhmNTI0MmY4MTUxZmFiNDMgcHkzaworNzg1MDYgODhmMTQ3ZDI2MzcyNjFmNjMzNzUzZGIwOGY2MmVjMjFjMzdjZGQ3MiBweTNrCis3ODUwNyBhOWUxZjFkMzRjOTY3MWJiZWUxNWFjZTRjOTEyYjAzYzUyMjU4NDI5IHJlbGVhc2UzMS1tYWludAorNzg1MDggNjc5ZjUyYjhhZWY0YzZkMmY2OWQyOWIwZDRhMDRmZmE0YTZkOWUzMyBsZWdhY3ktdHJ1bmsKKzc4NTA5IDgxZGNjMGM4NDVkZmI2NjhlYWMwMTg4YzVjMWY2OTc3MjMxNjAyMWMgbGVnYWN5LXRydW5rCis3ODUxMCAwMWM1OGNlZjgyZDQ4YTlhOGFiMTYyN2VjZjcyMTY0MzA3ZTE5N2M4IHB5M2sKKzc4NTExIDVkOWYzYWZiYzRlNGJjMGM1MTNlZTZhMTUxNjczOGY1M2U0YTEzYjMgbGVnYWN5LXRydW5rCis3ODUxMiAxM2ZmOWZkYjg0MzFiNzI5M2YzMWJkYTRiODE3YzZiMzczZTZkNzkzIHJlbGVhc2UyNi1tYWludAorNzg1MTMgZjM3ODYzYTdlZDY3N2E4NzEzMmU3OWI4ZDA2MDAwODFkMGIxMzRmYSBweTNrCis3ODUxNCAyMDgwYWI4ODBhODBlZDBiYWZlY2YwMTI3OThiNWYwMTZjZTUxYjkxIHJlbGVhc2UzMS1tYWludAorNzg1MTUgNzk5YmM0OTY0YTFkOTMwMmQ2Y2E3NDFhNTEyMTg1NmMzMWRkMzVkYyBsZWdhY3ktdHJ1bmsKKzc4NTE2IDc1MDgwMjc1OTIxYjhlODZiNTQ1OTc3NjUxOTIzYjY5ZGE5ODRhNDYgbGVnYWN5LXRydW5rCis3ODUxNyBlYWJmYTc3OGIwNzZiNjBlODU1YTIwNmUxMTFkZWU0MzQ1NjA4MmQ5IGxlZ2FjeS10cnVuaworNzg1MTggMmNkZWM4NDhiNzRjNjE0MDEyNmQxNDdhZWFjZGFjZjJjYjBjOGEzYyByZWxlYXNlMjYtbWFpbnQKKzc4NTE5IDk4ZTljNGZmZDM0M2FmMWNlYzUwNDZkZDBlODVkY2QxN2VjODllOTIgcHkzaworNzg1MjAgOWU4MTEzZTc2YWRiZjAxNDU0Y2RhZjBiYzM1NDM2NTRhYjhiN2U5MyByZWxlYXNlMzEtbWFpbnQKKzc4NTIxIDhlM2QwM2I4MDkwYmNiMjFkYWNlY2QxZDlmZmIzZTUyMDgwYjQzZjMgcmVsZWFzZTMxLW1haW50Cis3ODUyMiAxYzZmYzcwZjQ5ZDFhYmVlZjkxNjQ4ZDQyOWFlNDg1NjNlYTJjMGQ0IGxlZ2FjeS10cnVuaworNzg1MjMgNmU2NjRiY2M5NThkNjBmMjFlNzhkY2YxMGY4NDBmZDM1YzczMTAxOCBsZWdhY3ktdHJ1bmsKKzc4NTI0IDU1Nzc4ODU1Y2QyNWE5YWU4ZmI2Njc1ZTlmOGMyOTI3ZGI5ODlmNWQgcHkzaworNzg1MjUgMTI0NjlmMjA2NTZiZWUwNTc5NTEwZTg3Y2ZlYjllZTQ4MzdmNjkzZCByZWxlYXNlMjYtbWFpbnQKKzc4NTI2IDFmMTU4MjM4ZmE3NjRkNzAwYWM5ZmNkZTc0OGIwZWE0YTdiMzRmMzAgcmVsZWFzZTMxLW1haW50Cis3ODUyNyA0YWZjNTBkMTU1NDQ1ZDAxZDJjOTNkNmNhODZjZWZjNjM5YjcwMmYzIGxlZ2FjeS10cnVuaworNzg1MjggZTFiNzBjNmRmOWU3NzNkZmQ3MDI5MWI4ZGQ1ZWMxYzEwY2NmNDMxYSBsZWdhY3ktdHJ1bmsKKzc4NTI5IDliNGUwY2Q3ODE3YWRhMWUyZjMxMzM0OTdlN2QyMDFkNmQ4ZGNlMWUgcHkzaworNzg1MzAgMzcwZTFhMWMyMzg2OWRmODE5ZDMxYjQ0YWE5ZjMyZGYyMjg0OGY5OCBweTNrCis3ODUzMSAwNzdmMmI4YjNlNTcyOTA5MzNkZDkyYmNlNGI1MGYwMzIwMjc2MjQ3IGxlZ2FjeS10cnVuaworNzg1MzIgODU0YjM0YTA2ODk2ZmQ2ZTQ3YTE2ZThkZTNlNGMyOGYwYzMzNDQ5YSBsZWdhY3ktdHJ1bmsKKzc4NTMzIDkyNGNhMjk1YjE0NjAwMDI2MzBiMGEzN2QxZjAyZTgzYTAyNzliYjYgcHkzaworNzg1MzQgZDFjNjI4ODJjNzNiZDBkYzRmZjJhMTU2NDFkY2QzMDMwMjdkOWU4OCByZWxlYXNlMzEtbWFpbnQKKzc4NTM1IGY1M2ZlMzNlMDNlYTFiNDliZjc2OTZiYTI0YzllMzNhZGJjZTZiMDUgcmVsZWFzZTI2LW1haW50Cis3ODUzNiBjNDU4MDViYTMyM2Y3ZmFhOWFhMTcwMjM4N2IwZTFlNDIzZDgxMmU0IGxlZ2FjeS10cnVuaworNzg1MzcgOTQxZTFiZjA0ZjU1MzJlMTJmMGZmYzkwMjdkYmYwZjNiNTI2ZTZjNyByZWxlYXNlMjYtbWFpbnQKKzc4NTM4IGYwMjgzYmI2MjM2MTRhZDk1MmFmYWE3Y2VjZDNjOWY2YjIzYTMwNzQgcHkzaworNzg1MzkgNzgzZjA5YjA4NzA2ZWEzMGUyMGM1ZjBlNDYzNjZhMmIyMzg4MTcyZiByZWxlYXNlMzEtbWFpbnQKKzc4NTQwIDAyNjVjZGM4ZDViYjBjZWJiNGQ5MWNjNDkzMjY3NDg0ZTFhNzQ0YzIgcmVsZWFzZTI2LW1haW50Cis3ODU0MSA4ZDQ4ZjliNTk2ODliYTQ2OTgyNjU1N2E4ZGRkOTg2YmQ0Y2RlM2Y1IHB5M2sKKzc4NTQyIDliNzIyNzdkNmIzMGE3YzA4YzlkNmQwYjZiZDJmOWMxNDI1MTM4MGUgcmVsZWFzZTMxLW1haW50Cis3ODU0MyBkNWY1MGFlNGYxZjc4ZTE5OWYxMzczOTFhZGY0OGM3ZWYyYmI4MzhiIHJlbGVhc2UyNi1tYWludAorNzg1NDQgZjViYWM0NzM3MDY5YTQxM2U4OTJkN2E1MTA3ODk1ZGMxZDZiMWRiMiBsZWdhY3ktdHJ1bmsKKzc4NTQ1IDZmYWZiNjRlYzMyODA4ZDIzOWRkNWQwYzUwZjU2ZTZkNDc3NzIzOTEgcHkzaworNzg1NDYgNTg5MDA0YjIyZjU0YzEzNDdlN2ZlYzM1NmE3ZGYzMTBmNDVhYTRlYyBsZWdhY3ktdHJ1bmsKKzc4NTQ3IGFmZjY5MmJkYjZkYjEwNzk3ODMzMTkxZjM2YWYzMmY4MzI1ODFjYzEgcmVsZWFzZTI2LW1haW50Cis3ODU0OCA4ODdkZTVkZmQ5NjAxNWFkNDQwMjljYTFlYmZiNDQ0ZWIwNWU1MmE5IHB5M2sKKzc4NTQ5IGRjODQ2YTIxMWM2NThhYWFlMGYwOTA4ZTNjMjhhNzQxMGFmMDFjYzcgcmVsZWFzZTMxLW1haW50Cis3ODU1MCA0NmFlMTY0YjE1YmE5MWRjNjQ5MWU5MWE4NjhiMmQyNzFjMzMxN2M2IGxlZ2FjeS10cnVuaworNzg1NTEgNGUzMDQzMTA5NzQ5ZjI5NTc0NjY4ZTQ0NjVlNDliY2NiYjk3YmY3YiByZWxlYXNlMjYtbWFpbnQKKzc4NTUyIDU4YzM1NDk1YTkzNDM4N2QwNjRlZGY1OTYzNGFkNzNjYjhmZTI4ZTQgcHkzaworNzg1NTQgNGJjNWIwNDFkM2FhNmJiZTA5MDFkZjIyNjdlNThiODg4ODc3N2M5NSByZWxlYXNlMjYtbWFpbnQKKzc4NTU1IDQwYTQwNmVlZGNhYzkyZTExYTkyMzU5ZGQ2NzRkZmNhYzU3OTJhZTkgcmVsZWFzZTMxLW1haW50Cis3ODU1NiBkNTYxNWVlZTU2M2U1NjQwNTM3ZGU5OGQyYmJiYTFjNzQwYWU4NmYwIHB5M2sKKzc4NTU3IGNkZjU5NjA0YTE3NDRkNmI1M2JiNzI5ZTk5NDY3NjJmZWM5YzllMzUgcmVsZWFzZTMxLW1haW50Cis3ODU1OCA4YjdiNWM5ZTY3ZjRkNjcwM2E3ODcxNGU1NDQ5OGY4OGFiMzMxZjg0IGxlZ2FjeS10cnVuaworNzg1NTkgOTEyN2Q3MDczMGM1YjBkNjFmMDM3YTEwMWYzYWMwNmY3MDIzZDg4MiBsZWdhY3ktdHJ1bmsKKzc4NTYwIDA0NTkwZWM2ZjM3ZGRmNjU3NTAyOTUwODk3NjZkOTI5YjMxNzVjODcgcmVsZWFzZTI2LW1haW50Cis3ODU2MSA0Mzg2ODBiZTU0NzJiN2FjMjJlNjc2NjQ3ODg1MzJmYWE3MzUzNzRmIGxlZ2FjeS10cnVuaworNzg1NjIgMzlhNTAzYzg4MDAyYThmNjFlYzcwMmZjZTU2YjY1M2Q4OGYzZTU5NSBsZWdhY3ktdHJ1bmsKKzc4NTYzIGZiZGUxMWQxYzFmNWIzYjc5ZmQ1M2M3MGIzZjk2OTcyYTdlOTM4NDAgbGVnYWN5LXRydW5rCis3ODU2NCA5MzQyMzliMjY4YWRjMzU3YmMwOTU0NTUzNGVmMzgwZmFmYmY4NDZjIHJlbGVhc2UyNi1tYWludAorNzg1NjUgYzhiMjYyNzZjNTg3Nzk4NWI0YjI0NTBhOGM1NGE3ZTI4ODEyZjVmOSByZWxlYXNlMjYtbWFpbnQKKzc4NTY2IDg5ZjQyYjY4MWNlNTU3NzMyN2Y4MDQxMDMyZjYxNDY4YTMzYzE2ZTUgbGVnYWN5LXRydW5rCis3ODU2NyA2OWExMDNlZmFlOGQ0ZWI2OTQyMTliOGI1MmE3MjgxNDIwZjg4MWZiIHJlbGVhc2UyNi1tYWludAorNzg1NjggZjk5ZTdhZTcxMmIwYjI0ZjNlZWNkNGNjNTEyMWZiMjI4ZTNiZGI0YyBweTNrCis3ODU2OSA4NDk4ZjBkOWYwMjYzNjJlOWFlMTE1NDUxNmNlYTcyOGE5MWViOWZlIHJlbGVhc2UzMS1tYWludAorNzg1NzAgYWNhMTg4OTcwYzQ3ZDA2ZWIzMDY3NzI2MWQ5YjQxZDEwMDIzYzkxYSByZWxlYXNlMjYtbWFpbnQKKzc4NTcxIDJjOWJmMjE4Y2UyOTg3OGY0NzE4NDU4OTliZWMzYzdkY2Y3MGNhNGIgcmVsZWFzZTI2LW1haW50Cis3ODU3MiBjOWY2OGU0MmFiNzk2YTNiYWI0ZjhjZjNjYzY5Y2UxMDUwM2NiOTkwIHJlbGVhc2UyNi1tYWludAorNzg1NzMgMTExMDEzZGQ1YThhYTBlZTBlMjUxN2NmYjYyZWFiOWI4MDg3NGQ0OCByZWxlYXNlMjYtbWFpbnQKKzc4NTc0IDRmMTg5NDVmYjhiMTdmZGJjNDRiZmM4Mjc4NzY0Yzg2ZWNmNTllZjMgbGVnYWN5LXRydW5rCis3ODU3NiA4M2VmNjc1MjYwMTFhZmY0ZmQ5NGIxMDM4ZTAzNjFmNDdiODgyODBhIGxlZ2FjeS10cnVuaworNzg1NzcgZjkyM2ZlNTVhNDBjM2I3NWU5NTBiYTQyNGNkMmEyZjcyNWQzYTI2YiBweTNrCis3ODU3OCA3NTVkN2EzYTZiYjc1NmUzYTYyM2MyOTVhYzkyNzMyYzM1NTc1NjM5IHJlbGVhc2UyNi1tYWludAorNzg1NzkgMzhiMDJkZDJkNDU5YmFjNjYxMDhiM2IxN2Y4MGNjZTQ0MzRjZjBhYyByZWxlYXNlMzEtbWFpbnQKKzc4NTgwIDQ3MjhhYTJjOGExMjg0NWEyOGQzNzhkZWU5OGRiYWFhOWUyMjE1N2IgbGVnYWN5LXRydW5rCis3ODU4MSA3YTg5ZTFlYzRmMDA1Y2UwZTEzOWUyM2MxZDU3ZjIyMTU5MzkwOTk2IGxlZ2FjeS10cnVuaworNzg1ODIgNmQ1YzMxZjI0YTIxYjJkODRmNmE4YzYxZGI0ZjcyYTIyODY3NGMzYyBsZWdhY3ktdHJ1bmsKKzc4NTgzIDZiOTY4ZTJmMDVkZGIwZDkwMzFhYjVkYjU0MDU1M2JjMmE5MDFkNzcgcHkzaworNzg1ODUgMWFjYjY0M2IyY2Y0NDVhMDA5Y2RiN2E1NWFkMTNmYzUyOTVkZWFlOSBsZWdhY3ktdHJ1bmsKKzc4NTg2IGU2NGM0YjQzZWIzYzI3Njg5MjQyMjUyODNjM2Q2OTI0M2JmZTZjMDEgbGVnYWN5LXRydW5rCis3ODU4NyA0Y2E4M2M1Yjg1NTFiZmVjYmI4YzA3MGNkNGVhNzU5YjhjODZmODVlIGxlZ2FjeS10cnVuaworNzg1ODggODQwMWRlNjVlMTJhMjE4YzA0YjQ2MzgwMDUxNmU4NDk5MTg2ZjM5MSBsZWdhY3ktdHJ1bmsKKzc4NTg5IGRhYmRlZWM0ZjljMWQzMzE5NTQ2NzhmMmZlZGY2NTlmZTRiMWVhM2IgbGVnYWN5LXRydW5rCis3ODU5MCA4MmVkYTM0NWE1ZjZlMTNkOWNlYjYwOGU4MmRhNDIzZDk2MTQwYjExIGxlZ2FjeS10cnVuaworNzg1OTEgNGI3YjY5NTNjZDA2NDk3MGY1MDY3Y2ZjY2Y5M2MzYTQ4YjEwMDYxZiBsZWdhY3ktdHJ1bmsKKzc4NTkyIDEzN2EyMWZjZDM4NTBhYjk1OTg2MzRjOGVmMGNjMGE1ZmVlNjE0YmYgbGVnYWN5LXRydW5rCis3ODU5MyA4M2U3ZWUxODUxNjIzY2NhZTM2YzI0MjljYTk5MGRiNDBiYTQ3ODIwIGxlZ2FjeS10cnVuaworNzg1OTQgOTcwZmI0YThlNjU0YWM5YmY3OWQ0OTNjMGU2ZWRjMWI2MDI5YzU1OSBsZWdhY3ktdHJ1bmsKKzc4NTk1IDEyYmNiNjk5MzhiM2MwMTI3NzdjMjQ1MDU1NWRiYmJjYTRiMTc4YjUgcHkzaworNzg1OTYgYzMxYTdjMGM2Mzk5ODU1ZTlmODRhODYxN2E4ZDk5YjMwYmZiN2IwNyBsZWdhY3ktdHJ1bmsKKzc4NTk3IDVjNjdjMWVmOGFkM2Y0NGY2ZDY2YTI0YjcxZjEzZDZkYTExY2JlNjAgcmVsZWFzZTI2LW1haW50Cis3ODU5OCAwMWQ2YTE0YWJhNjUxNzZmYjA5NjhmZjJiMzM4ZjFjMWE3ZDYwNGY5IHB5M2sKKzc4NTk5IDk1MWM5N2UyODc4ZDcxZDgyNDI1YzE5YzA0MzM5ZDRmOGUwZDllMmEgcmVsZWFzZTMxLW1haW50Cis3ODYwMCA4ZDcyMTQ3ZjQ0MmNmOWQ1YTJmNzc0NmFiYTljNDJiMDc0N2I3MTZlIGxlZ2FjeS10cnVuaworNzg2MDEgZWJhOTQyZTc3ODk1N2ExMTYxNGE0MzY2ZTQyMzFkZjAwOTM1OTc5MCBsZWdhY3ktdHJ1bmsKKzc4NjAyIGIzMGY4Y2U4MjE2NzdkOTMwZjcwNGRlNTExYTlkNmJjN2JhMTRlZWIgcHkzaworNzg2MDMgYjA0NDQwNWQ2MmU1NWMxZTU1MDJiY2UzMWE2ZmFjYTVmODNjZmMyMiBsZWdhY3ktdHJ1bmsKKzc4NjA0IGY1NDExMTI1MjQ1ZWUyNzNmNzMxNjU5Y2U1MzVkNGQ1MDA1YzE0YmQgbGVnYWN5LXRydW5rCis3ODYwNSAyZDI0MTc2NWU2MzE3NGY3OTkzNGMzYTVmMWUxZDM5MGNmNGRiNjZkIHB5M2sKKzc4NjA2IGFhYjViNzZhYTA1OTdkODE0OTk3ZjhmYjlmZGJiNmY1ZGYxYjE3YTQgbGVnYWN5LXRydW5rCis3ODYwNyA2ODE1OTdkMGM1OGRmMTA3MGVhZDIyOGVlZTAxNjk1ZDAxMGU0N2U4IHB5M2sKKzc4NjA4IGQ0YTE4OGRhYzIyMjg1NjkwZjllYzU5NzUyOTZmNGFjNTFmZTIwNzQgcHkzaworNzg2MDkgNjUzNzc2MWMzMTAxODNmMDQzOWNjZWM4NjAzNjkwYTllZmM5YjQzOSByZWxlYXNlMzEtbWFpbnQKKzc4NjEwIDdlZWM2MjM4ZTE1YWM0ZTdmYTIyM2FiMWZiNGNjMGJmYWNjMmRhOTQgbGVnYWN5LXRydW5rCis3ODYxMSAwODY4NDYzODFlOGYzZDZmYjBlMGUxOWM2Njc4MmE4ZThkNDdhYTM0IHB5M2sKKzc4NjEyIDFlNGM0YjIzNWE4OWRkNzU0ZjA1MzQxODU3YjdjNWU4YTljMDBjNTIgcmVsZWFzZTMxLW1haW50Cis3ODYxMyAyNWMwZjRkN2FlNTY5ZTQzZmI0YjNhNjIwZWI5ZTg3NTJmZGEyMmM5IGxlZ2FjeS10cnVuaworNzg2MTQgMzhjZWY4ZGVhZTIyZWYwMTczM2ViNzFkZGZhZmE2NjA4Yjk1YzI1YSBsZWdhY3ktdHJ1bmsKKzc4NjE1IDU4NGVjN2E3MjU1YjI0MGU5ZjU3ZmM0MDU2ZjBlNzMzNjJjZWIwNDYgcHkzaworNzg2MTYgYmQ5Yzc5OTNlZTc1ZTM2NTlkOWM2M2Y0MDhiMWY0M2E3Nzk2ZjE2NCBweTNrCis3ODYxOSBiZmYwNTA0NTAyODNlYzc1YzZjZTBhYjA5NTYyMDRiYzYwYTRjNjBlIHJlbGVhc2UyNi1tYWludAorNzg2MjAgYjg3NTBjNzJiOWJjNDdmY2I2YmFlMTFhMGM2MzZlZTI0ZTNlZjdmMyBsZWdhY3ktdHJ1bmsKKzc4NjIxIDY4N2Q4NTE3YTBjMzhjZmEyZTY2NjA2ZmNiMjQ4ZTVlNTZjZmRmZTIgcmVsZWFzZTI2LW1haW50Cis3ODYyMiAyOWZhYzRiMWE1MWU3NjNkM2YwNzI5NDM5MjFjZjBhYzNmMjhlNTJhIHB5M2sKKzc4NjIzIDhhY2UyZWFkNTUyMzdiMWU3MmM2ZjM0ZDg4NDNmOThlMDYwOTdmMDggbGVnYWN5LXRydW5rCis3ODYyNCA0YjQxM2RmYTI3Zjk5MmE3YmUyMzIxODM0YzY5Y2RlZTBhMWQ2OTkzIHJlbGVhc2UzMS1tYWludAorNzg2MjUgYzUzY2M2YmQ2YjYxMzA4MDYwNzEwOTUwOTQ0NjdiYzM2ZTZjM2YyZiByZWxlYXNlMjYtbWFpbnQKKzc4NjI2IGM0ZmNhNzc4YjU3M2E1MjY2MmQ2YTAzNjc0MWM1NzI1MjUxNDUzMWQgcHkzaworNzg2MjcgYjk5OTk4NDUzZDUyM2FlMTBlYmJhM2RmYjFkNGE5ZGY3NTAwZDQ2YyByZWxlYXNlMjYtbWFpbnQKKzc4NjI4IGRlMDZiNTlhYTQzYzdmOWFhNThkMWFjZWQ4ZDZkNmFjZWQ0ODk2YjggcmVsZWFzZTMxLW1haW50Cis3ODYyOSA1YmIyOTVhOTRiMGY3ZDA0ZDRhMjc4MzRiYmNhZTIwY2IxODUzNzljIHJlbGVhc2UyNi1tYWludAorNzg2MzAgYzM1OWQ1YWNkYzRiNWI0MDdjODBkNThkMWMyYjAyZDBmMjQ1NTlkZSByZWxlYXNlMjYtbWFpbnQKKzc4NjMyIDZmMWUyZmZkN2JkZTg5ZTBhYmYzZjlkYmM5MjdkNjA1Y2QzOGY5ZTEgcHkzaworNzg2MzMgZGZhNzQ5MTE0MGQ5NGM2ZTFlMmUzNDAzNDlkNTJjYjBjNzA5Mjc2MiByZWxlYXNlMzEtbWFpbnQKKzc4NjM0IGRmMDI3MGJlZjk3MThmNGIyMDQzNmQzZDQyN2M4NDZmYTZkM2YwZmQgbGVnYWN5LXRydW5rCis3ODYzNSA4Njc4NTM0MjQyYTA5MzhkYTE3YTZkYTIyNGRkZjgyZTg3NWZhMDYzIGxlZ2FjeS10cnVuaworNzg2MzYgYmZlYTZjMjAyZWRlNTc2NzdhY2I1M2Q1NGNlNzgxYjAxOWQ5NWNiMyBweTNrCis3ODYzNyA2MGU3ZTZkM2U0NWE4OTA3YmU5MWE4MDcwNWVhMWFjNDk5MmNjYzg1IHJlbGVhc2UzMS1tYWludAorNzg2MzggN2Y1MDA2NDFjMDZhMWQ5NGM3MzUwYmI5OTI5ZDU1NTU5Mzc4NzZkZiBsZWdhY3ktdHJ1bmsKKzc4NjM5IGRkODUyNzM5OTU4MjNhYTYyYjhjZGEwZTgzMjQ5MTdhOGFiNDIwNjMgcHkzaworNzg2NDAgZDdhNjJjMTY1MDViMTJjY2MyNjc4NDYwZDQ5YjZlYjdlNDcwODM3NCByZWxlYXNlMzEtbWFpbnQKKzc4NjQxIGQ1ZmJkYTAzYzYwMzNjZTFhZWEwNDVjMTVlZDIwNjBmZjM5ZWVmM2QgbGVnYWN5LXRydW5rCis3ODY0MiA5OTQ0ZTUxMDRhNTU5NzAzOTkwM2YzOGY4ZDU0OTNkZmM1ZGFiNzViIHB5M2sKKzc4NjQzIDc1OTU5MjFhMTQ3NDgyZjIxMDYwYWMxYjUxOTU2MDI5NThjOTgzMjIgcmVsZWFzZTMxLW1haW50Cis3ODY0NCA0NjFkOWNkMTk1YjczYjMwNjY3MjY4OGYyMzAyYWIxMmJhMGFmNzBhIGxlZ2FjeS10cnVuaworNzg2NDUgNzc5MDBlN2RlYWE1ODcwMDVkZjEyZjJlZmU0ODRiMDZhZjdlZTVkMCBweTNrCis3ODY0NiAyNjI2OWRmYzIyYWI0N2U0MTE0ZWQ3ZGRmNDEyMGEzMzg1ZjE3ZjM4IGxlZ2FjeS10cnVuaworNzg2NDcgMGIyN2MzZjE4Y2IzODZmNTYyNDc3ZjM0ZmZiNmY4ZmU0MDEwODlmMCBweTNrCis3ODY0OCBmZDhmZGQzODg5NjNhOTYyMWQ4ZGI1ZmQwNjhmZDA2YTUyMjhlMWFmIHJlbGVhc2UzMS1tYWludAorNzg2NDkgMzAyZGJjNmM0ODA3MWVkZDQ0ZDdlNWZhZDM2YTAzNTM2ZGEyNmI0OSBweTNrCis3ODY1MCBiNmNhYjIxZDgwYjk1YjY3YTA1ZjMwOWUxYzViZGJmZWJhOWQyOWRmIHJlbGVhc2UzMS1tYWludAorNzg2NTEgYTNjMDA1NjZjMmQ1OWMyZGY5MWU3Y2Q0NzdkMDRkMGY0NTAxNmNiNSByZWxlYXNlMjYtbWFpbnQKKzc4NjUyIDg0MTMwYzIyNjVkY2E2ZjkyMDcyYzhhNjEzMjgyOWRhYjJmZWNlNmUgbGVnYWN5LXRydW5rCis3ODY1MyAyOTVkNTlmYTZlNjJlMWQyYzUxOTE4YWYzZDk3ZDc4ZTcyNzkzZjlhIGxlZ2FjeS10cnVuaworNzg2NTQgZGI0ZGExZWRmMzRmNWEyNTFmNWQwNDE0YmM0YjA0OWUwZDE5YzAxOSBweTNrCis3ODY1NSA2ZmFjYmMxODNhNGExZmY3Y2M2Y2FhNWJlZmE1MTRmZGUyNTliZjA3IHB5M2sKKzc4NjU2IDk4N2JhMzdhNTQ5NDNhZDQzOTUzODMwYzY5YjA2MWFjNmI5MTNkNDEgbGVnYWN5LXRydW5rCis3ODY1NyBlZWExNWZiMDI0NGUyZWI1NjEzYjk5MjFlMTQ0ZDdlYmU0OTg5MDlhIHB5M2sKKzc4NjU4IDk1MWZlYzE5NmVkYzcwYTlkYWRjNDY0YjM4ZGRlNjMzZGNlN2JlOTYgcmVsZWFzZTMxLW1haW50Cis3ODY1OSBmODM1ZTI4MjdkMWFhNjMwM2I3MDRjNzhmZGFhOTAwYTlmZTk0Y2QxIHJlbGVhc2UyNi1tYWludAorNzg2NjAgMDJhZWZjNDI1N2RlNzZmNjNlZTBiNmMzMTY5N2VhMGQ2OGIwMmRlNiBsZWdhY3ktdHJ1bmsKKzc4NjYxIGNlOGJlNjRiMzRhOGE2ZDEzZjQ0YzVlYjI2NTIxNDY1NGZmYzMyNTQgbGVnYWN5LXRydW5rCis3ODY2MiBkOGIyZmE4ODc4OGIxZjZiM2Q3M2RlY2IyYjYzMDVhYzY1MWRjNzVhIGxlZ2FjeS10cnVuaworNzg2NjMgMDQ5NTVlN2ViNTk3MDZmYjg2MjMwMjVmNjA0MGQxNTA1MGZkMWVhZSBweTNrCis3ODY2NCAzMTllNjIxNWM1NmNiOTk1ZWJmOGFjNWI5OTk5YmNlMmViZDVlOTI4IHB5M2sKKzc4NjY1IDRkZjMzZTgzZjI2ZjEwYjU3YjU3NDEyOWZjN2IyMzM5ZmZkMDlhODkgcmVsZWFzZTMxLW1haW50Cis3ODY2NiBhZDIyYmMyMmRkZGNiZWYzNjE5MTY5NmEwMDQyOWM3YTYwOGQ1MDFhIGxlZ2FjeS10cnVuaworNzg2NjcgMzU3NGM1ZmUyMDdjNDY2MTMzNzY4OWNlNTA0ZGQ5MWE5NjM0YWJiZSBsZWdhY3ktdHJ1bmsKKzc4NjY4IDY5YjJhYmI5NTM0ODc3ZGRkNjUyNjJmYWFjMGZlNWYyNjg0MGYwNTQgcmVsZWFzZTI2LW1haW50Cis3ODY2OSA4MWRjMTcyYmZkYWJkY2YzNDU2MWI4OGZjZTI1Yzk5NGFlMjA3NjA3IHJlbGVhc2UyNi1tYWludAorNzg2NzAgNzU1NzE1YjNjZjIzYTNlOTA3MjkwY2JlNzBiMTc5MWFmY2UxMDNjYyBweTNrCis3ODY3MSA0NWM0YjZkNmUyYTUzNGNlN2JjNjJmYTVjYmRiYTI2M2I4MWJmOTMzIGxlZ2FjeS10cnVuaworNzg2NzIgMDIxY2I0ZjQ1NTlhNWZhYWM0YmYxYTZlOWJiNGViOGI4NGQ3YzQyYiBweTNrCis3ODY3MyA1YjgxOWVjNGUyMDVmYzBmZDlkMTJkNDZkZjA0OWMwNTQ5N2FiMWVkIGxlZ2FjeS10cnVuaworNzg2NzQgNDMyZjhiYTY3MzgxODEyYjQ3YmQ4YTBhZmY2NWEwNmRiMDdjZDA0MCBweTNrCis3ODY3NSBmZWY0ZTI1M2U4OGFmMzVjMTJiN2JkMjQ4NzNlNjAzYmNmZGQ3YjY2IGxlZ2FjeS10cnVuaworNzg2NzYgMGZjYTM5N2Q1MGY3ZmU2NDQ3NDYyNzY0NzRhNzY0MWQ3MDJiOTNjNSBweTNrCis3ODY3OCA3YjQ4ZWJhYWRiNjAwMGNmYjU0NmY2YWE3MjhlOTQ0NTU3NGU4ZGYwIGxlZ2FjeS10cnVuaworNzg2ODAgN2U5NmIwYmNiYTI3ZWQ3OWQ5OTQ2MzNlMDM5NTllY2Y1YTBmMjdkZCBsZWdhY3ktdHJ1bmsKKzc4NjgyIDAxOTc1OTkxNmE5YmE3YTI0YzkxZDBhYjcwM2Q4NDY2ZTMyYjI4N2UgbGVnYWN5LXRydW5rCis3ODY4MyBlNTAzMDMzZTMxNDM2Yjk0OWNhZGU0Nzg5ZDJkYTM2ZGNlMWFhMmFlIGxlZ2FjeS10cnVuaworNzg2ODQgODI0NDYzYzQ0ODk4NDQwNThkN2JjY2QxZTdmMWI2MTFlYTY1OWZiZiBweTNrCis3ODY4NSA3Y2Q3ZmY2YjBhZGIyODkxMjU4MmNlMDlmZWVhZWMyZmE4YWE4ZGEzIHJlbGVhc2UyNi1tYWludAorNzg2ODYgOGI4NjRhYTc4ZTkyNTE3YTNkZjQwOWY2ZWQ2ZGRlNGQ0ZTVmYmRmMyByZWxlYXNlMzEtbWFpbnQKKzc4Njg3IGFlN2YyNmQyNGUxZGNmNzQ5N2ZlMjliN2RmOGJkNTcxZWQyOWFjN2UgcHkzaworNzg2ODggMDRkM2FlNTJmZjczMDJhMzg3OWJiYmIzYjZmNDIxZDk0MDU1Y2M1YiBsZWdhY3ktdHJ1bmsKKzc4Njg5IDMyNjE5OTk2YTAxNDhjNGQ3OTYzMTY4ODFjM2I5OTBmN2YxOTQ3MzcgcHkzaworNzg2OTAgYzJkOWQ1MGYzN2M1OWI2MzNiNGNiOGE5NTkwNGFiNzk0Y2U1MmM2MiBsZWdhY3ktdHJ1bmsKKzc4NjkxIDkxZmIzOTRjMDRkNjNkOTlmZWUyYWNkZjhjNzI2ZmZiMjM3NGM1YWMgcHkzaworNzg2OTIgODE0NzcxOTJjZjdhOTlhMjI5Zjk2Mzg3Yjk2YjdmYTBiNTllZWY5MSBweTNrCis3ODY5MyBjZWQ1ZjFmNDE0YjAwYzY1NDdkMzM3ZDJkZjQ2MGIwMDBlMTI2NzcwIHJlbGVhc2UzMS1tYWludAorNzg2OTQgZmQxNTVhMzY4ZjViZDQ2NWQ2NTMxMzE3NzIwNWMwMmY2NmExZDA5ZCBsZWdhY3ktdHJ1bmsKKzc4Njk1IDgxNzUyMmUzNTJkNjZmNmQ1NDhiOGIyMGUwMTM2NmFhMjgwOWVkODUgcHkzaworNzg2OTYgMTlmMzBiNDIyY2EzZmQxN2JhOTQ0ODI3OTc3NWIwZWIxZmNlOWY4NiBweTNrCis3ODY5NyA1MDQ4MDgzZTk5ZmZjZTQzMDkzYTdlZGYyZjU3OGIzZjYyZWFlMGE1IHB5M2sKKzc4Njk4IDMwMDNjMTY1NmUyYWRlZWI1ZmFmNWJiMjAyMGNhNjUyYzMzM2JkM2IgcHkzaworNzg2OTkgYmY1ODZiMjc3NmY2N2NjOGVjZDNmOWVkYzYxNGE1ODlmYjA1ZWRjZiByZWxlYXNlMjYtbWFpbnQKKzc4NzAwIGVjY2E3MDNiYzBkZjRkYjQ1ZWJjOTU2YzhkNzMyMTg2NmE4NTNhY2YgcmVsZWFzZTMxLW1haW50Cis3ODcwMSAzMTk3ZWNjMDk0NGExN2Y1NTk0MzBiZDNhNDFjYTQ4Yzk5N2I3MjUzIGxlZ2FjeS10cnVuaworNzg3MDIgZDllNmYzMTg1NjhmYzkzNjNhMzQ2Zjc2MGEwMzcwOTcwNWQ5YjRhNSBweTNrCis3ODcwMyBjYzcwZjY4ZTljMTExM2M5N2ZhNGIwNjcyMWIzYzQ3N2UzMGU2Y2ZjIGxlZ2FjeS10cnVuaworNzg3MDQgNDU0ZWZmODQwYmQ0MjJhZjA5ZjBlYjI1MDk3YzUwMTBiNTA4MzVlNCBsZWdhY3ktdHJ1bmsKKzc4NzA1IDhkYzQwYzYzNzYxYzhmZGNiNTU5NGU1MzVkZjQxZTE0NTQ4N2QxZmEgcHkzaworNzg3MDYgMjVlOWRkYmNlMTBhYmU0ZmJlZTM4OTc3NGYzNDI3MDQzZmY4N2U0MSBsZWdhY3ktdHJ1bmsKKzc4NzA3IDJiNTA4YWEyYTQzNmJjNTViMjQ3NTQ1N2U0MjgzZjY0ZWYzZmU2YWUgbGVnYWN5LXRydW5rCis3ODcwOCAyZDVjYTI4MDVlYTVmMWJjZDc3NDhlNmE5NzQzYzQ2YzRiNzIzYzcxIHB5M2sKKzc4NzA5IDMyYWM0MjhjZDE4YjM0MmU0ZDliNmJiOTc4OWVjYjc4YWRjZTE5Y2YgbGVnYWN5LXRydW5rCis3ODcxMCAyMTU2MzhmY2YwOWJhMDg2MzIwZDgxY2M2NWY3NTBiYjdiMTY2YzBmIGxlZ2FjeS10cnVuaworNzg3MTEgNWQ1YmNhNmVjYjE1MTg0MjkzZjUzNDQwZjBkOTViODIyYTJjYjZmMiBweTNrCis3ODcxMiA1YzMxNzY3NzVlODczMGNiM2Q3YzMwNDI5OGVhMzg1YjZkYzNjN2Y5IGxlZ2FjeS10cnVuaworNzg3MTMgNGExMTlkODRkMGI1NzU3NDNiMDE3N2JjZjk4NmVhMWIwODVjNmM5OCBsZWdhY3ktdHJ1bmsKKzc4NzE0IGI2OGE5YThjMmMxZjQ5ZjJjMDE4YzE2MTFlOTViMjdkZDJmODg5MzEgcmVsZWFzZTI2LW1haW50Cis3ODcxNSA2NzQzMDg3NWMxYTAzNjMxYWVlYzE0MDhkYTk3MDc4NWRlMGFmN2Y4IHB5M2sKKzc4NzE2IGFhNDg1MjY0NTFkMTcwNTZlMTAzZjExNTQyOGE1ZGQxN2QwYjEwYTggcmVsZWFzZTMxLW1haW50Cis3ODcxNyA1YWEzYmZjNDhjYmRlYmI4ZWU1YmU5ODMwYmVmOGYyNzFiYTE1NmQ1IGxlZ2FjeS10cnVuaworNzg3MTggYmIwOGEzZWMxNTRkYTczNzY1ZTExNDY2NTg3MDFhYzIxNTdlYmFmYyBsZWdhY3ktdHJ1bmsKKzc4NzE5IDViMTc2NDM3NDU0NWEzZjJkZjE3MzVmMTlhMThhN2IwZWQ0Y2U0N2YgbGVnYWN5LXRydW5rCis3ODcyMCA5NjZlYjFiOWU5ZGJjM2RiZjhkY2UwMzQ1YjM5OGQxZGY2NDc2ODQyIGxlZ2FjeS10cnVuaworNzg3MjEgNzQ0NGQzNDhkNzcxZjBmOTgxYzM4MDM2YWNhZTJkNmRjODgxYTY3NSBsZWdhY3ktdHJ1bmsKKzc4NzIyIDQ4YTZjMjYyMTIyNjVjNTNiNmRmZmI3YmFjNTRlMDk0YzVmZmIwNjIgbGVnYWN5LXRydW5rCis3ODcyMyA0ODZjMWM5ZWUwMDZjMDY3YWVmNGZiNGQwN2E4ZWZiZWY5NGU3ZTE2IHB5M2sKKzc4NzI0IGVmZTUyOGVlOTU4YTZiMjFkNWQ1ODU2NDc0MWJhM2U1MWNhYjBjY2IgcHkzaworNzg3MjUgMjRjNmE1ODNhODY2YWM4ZDIwNWRhM2QxMDVjYzdiYzI5MTI3MzRjNyBweTNrCis3ODcyNiA0YzVjNWI0NjY4YjRhNmFkNDhiNjhiNzAwMzllNzExOWI3MGE2NDVjIGxlZ2FjeS10cnVuaworNzg3MjcgZjM2MmNkNGJkMmM1MWM2Y2MwNTQ5MjUyNjY2OTI3ZTVjMjFkNDhjZCBweTNrCis3ODcyOCAxMjBkNmNjZjI2YjA0ZTk5NDY4YzE2NGExODRhMDhlMDJmMmM2ZmE0IGxlZ2FjeS10cnVuaworNzg3MjkgOTI1OGY0MDVhN2FjNDY2YjQ4NTcyYWRhMDIzZDhkYzllNGRiODc2MyBweTNrCis3ODczMCA5N2NhOWIxNGE2NjA3YmVjN2JmYmM2OWUwYjU3OTg1NjE1NjZiNjQyIHJlbGVhc2UzMS1tYWludAorNzg3MzEgZDBiYmJmM2M1NWY1ZTAxNWMzOWExMDUxZDBiYzQ1YWUzY2M5ZWM1YiBsZWdhY3ktdHJ1bmsKKzc4NzMyIGJkZjZkNzY4YThjYzVmOGZhZDA3NWM4ZDM4M2QyZWQwMDU5N2RmYjQgbGVnYWN5LXRydW5rCis3ODczMyBjMmNmNmM3MTcwYzUxNTJiMDUyODJiOGIzNjU5Y2Q5NTI2OTM0MTRkIHB5M2sKKzc4NzM0IGViZGMyYWE3MzBjMGJkMWMyNzM3MWMzMmU3NGU1Y2EwMzg4MjM4NWUgbGVnYWN5LXRydW5rCis3ODczNSBhMDdmNzBmYzgyYTExMDJmMWJiNWRhZDJlMzE4M2ZkZTQ2MzNmM2IxIGxlZ2FjeS10cnVuaworNzg3MzYgZThjMTE4OTE1NzYyZTc3MTlmNTY5MzhhYmVlNGZlMGVjMDU2ZjYzOSBsZWdhY3ktdHJ1bmsKKzc4NzM3IDVhOTYzMWI5ZGQyMjc2MTdiNjNiMmY3NmMwNzAwM2FhMmMwOGE1ODUgcmVsZWFzZTMxLW1haW50Cis3ODczOCBkMmUxMDI3ZWRkZTg0YTAyODUzZmNmOTc5MGYzMTFmMTBmNDZjZjBhIGxlZ2FjeS10cnVuaworNzg3MzkgZGNmYmMzNGIyZTNjNmFiNzk5ZTZmNmE5NWQ1MjJjOGYxM2Y5MmJhMiBweTNrCis3ODc0MCBmOWVhOTE3YWZmMTNmMmFhZWUzMjVkODM4N2JjYjdhNWJjY2JmMjJkIGxlZ2FjeS10cnVuaworNzg3NDEgMTQ5YjhiODc1MTRkMTA0MTZiNTk4ODg0ZGI1Zjc0NjUxZjYyNWIzOCByZWxlYXNlMzEtbWFpbnQKKzc4NzQyIDIxMjQ3ODY0MGIxYzI2MzUzNWZkMGNiZmE2ZDdkNWRmYTg4NGY3YzUgcmVsZWFzZTMxLW1haW50Cis3ODc0MyAxNmEyNmQ0Mzc0ZTQ2YmZjOTc3ZWVlNDFlMDgwNGViNWY4MGQ2MGJiIGxlZ2FjeS10cnVuaworNzg3NDQgNGZhOTZhOTEzODA4NzFiNjhlMWI4NGU3YTg3NTc4ZTdhMTE4YmU3MyByZWxlYXNlMzEtbWFpbnQKKzc4NzQ1IGFkMjU2YTZjNjU5OTBjOGEzNTM4N2IwZDNjOTJhYzBmZjljMjEwOGYgcHkzaworNzg3NDYgMzE3ZDBjNDNhYjJiNmJjODY0NDM1YjQ1ZmY2NTBjNWUzNzVkZjAyYiBsZWdhY3ktdHJ1bmsKKzc4NzQ3IGY3MzU2MTEyN2Y1N2UzZTIzODczZTlhNWUwNDFhMmJjZGIxNTVkMTggcHkzaworNzg3NDggZTZkMTQxNTg3NThlMThiNjNhZjUyYmQwYjU5MTY3MmIyNTI0MmUyNCByZWxlYXNlMjYtbWFpbnQKKzc4NzQ5IDA4MDJiYzk3M2IzMjRkYTI1MWJjZmZjMTNhZDNhOWJmNTBmZmE2MDkgbGVnYWN5LXRydW5rCis3ODc1MCBjZTk3M2I1Yzc3OWYwMzA0YWQzYWEyMGU1ZTYzMjIzNDVhYmZlNWQxIHB5M2sKKzc4NzUxIGMxNmIzN2IxODkxYjAwYzA2NTc5MTQyMWUxZDAzNTdlMGEyMGQ2NjAgbGVnYWN5LXRydW5rCis3ODc1MiBlZTg4MDI4MTViYWQyYjdmZjlmNTYwZjkwYWZjZWMzZTVkZjczYTkwIHB5M2sKKzc4NzUzIGNkZTI2ODdlMzdjMTY1MDkyNjdmODM1MzY5NzE4OTJiMTRjNzRmYzIgcmVsZWFzZTMxLW1haW50Cis3ODc1NCA0ZjAyMTc5NDkzYzI1ZDFmY2JkMTk1NWMwYjA3YTRlYjBlN2E4OWYxIHJlbGVhc2UyNi1tYWludAorNzg3NTUgMjk5MGJkM2FlODgzOGE3NmVmZjE5ZGY5MWQwZmY3YzQwY2RlODJkYyBsZWdhY3ktdHJ1bmsKKzc4NzU2IDQ5YTBhOTUwZDIxOWIyMmI5ZjVmOWRjYTAyNzVmOTQ0Y2ZhY2M3MzMgcHkzaworNzg3NTcgZTJkNDEwNzlkMDU5NjdlNWJiNmE2Zjg3Y2I5NzMwNTg4OWJhNWZhOSBsZWdhY3ktdHJ1bmsKKzc4NzU4IGUyM2NiYTAzY2M0YjMzZDllMTNmNThkMDIxYmNiY2Y4MDE4YWIyYmYgbGVnYWN5LXRydW5rCis3ODc1OSAyNzQyMmQxNzMxZTllNDY5NjQ4ZjY5NjYxMjczMDMxMTI4ZWNhNzM2IGxlZ2FjeS10cnVuaworNzg3NjAgMTc0YjA4NzliN2QwZWNhY2IyNmI3NTNmYjZhOWE1Zjk1OTk5ZDYxMSBsZWdhY3ktdHJ1bmsKKzc4NzYxIDcxZTRhYjIxMzQ2ZDQxZTUwNDExMjg1ODI0OTdhNzI3OGNiMzRmZmIgbGVnYWN5LXRydW5rCis3ODc2MiBjZmI0NDJkNzAyY2Q0NzFhNjUwMmE5ZDJmYjY2ZThhYTFlZjY3NjQ1IGxlZ2FjeS10cnVuaworNzg3NjMgMGEyNzNjYTEwZmE1ZTRkZmU2NTYxODQ5ZGQ4MTk5MzY4NzkyYzUyYSBweTNrCis3ODc2NCA0YTZiZTg2NGM2Yjg5YjE3YzYzNjhkOTgzNTcwYWM5MmQ0MTEzODZhIGxlZ2FjeS10cnVuaworNzg3NjUgODVjOTVmZDVkN2UzYTA0NGEyMDQwY2QxNTU4NTFhYWFmNjg0ZmNkZCBweTNrCis3ODc2NiBlZGFhZmNhODc0MzFjN2NkZmMxNTk5MDJjODRhMzhjZmExNjQzYjZkIHB5M2sKKzc4NzY3IGFiN2M4N2VkNWNhZGQwNGJhOTNlNzhlMjVjYzdjMTI4NTdiMDFlZTMgbGVnYWN5LXRydW5rCis3ODc2OCBkYTE5ODk0OTQ2ZTFmNjEyYzFlYzQwNDU2ODA0MjE2ZDA5Njc1ZTUyIHJlbGVhc2UzMS1tYWludAorNzg3NjkgZTQ1ZmYwMjc0ODJmZTQ4NzkzZGQ3ZmUyYjE1N2U0NmQyNzU4ODY2YSBsZWdhY3ktdHJ1bmsKKzc4NzcwIDhmMmMzNjBkMDIxNGI1MDQ1MDgyNzY3ZjYzODRhOTU4ZWJhMzBmMTMgbGVnYWN5LXRydW5rCis3ODc3MSA1YjFkYTMyYzlkNGUyZDRiMGQ4N2Q5NzczN2JiMDQwYzhlMGQyMjI4IGxlZ2FjeS10cnVuaworNzg3NzIgYzc1MjA2NGZjMjYyNzIxNDllMmJlYTA3NTg3YzVmNDNiNGYxMGM1ZSBsZWdhY3ktdHJ1bmsKKzc4NzczIDM3YTg0MjQ5YWEwNDc3N2IxNjA0YWVkYjE0N2Q5OGViNjJlMTE5OGMgbGVnYWN5LXRydW5rCis3ODc3NCA4NWVhNDU0YTEzZGNkYTEzNjNkZmE2MTZhOTVhZTNkYmIxZDcyM2Y2IGxlZ2FjeS10cnVuaworNzg3NzUgMTMxYzIxMDhkMmIxYWY5ODdlZDg3YjJjZTQ3YTE3YTI5OTY4YWMwYiBsZWdhY3ktdHJ1bmsKKzc4Nzc2IDQ2NjAzODdiOWIzNTIzMzE2OGI4ZjdkZDA4ZGVlNjcxMTkwYjAzMmIgbGVnYWN5LXRydW5rCis3ODc3NyA0MWFlZjA2MmQ1MjkzMWY1YzZlNDMzODlhZDBiZTJjNzMzNWQyZmVjIGxlZ2FjeS10cnVuaworNzg3NzggZGE3MTQ2NGQyY2ZmMjE4ZTUwZjYwMWI0NzIwZmI5NTc3Mzc4MjUyYyBsZWdhY3ktdHJ1bmsKKzc4Nzc5IDU3NWIxMmIxOThhMTY0NGE5OTFhZTNiZTczNzMwMWQyYTU3YTVmYmIgbGVnYWN5LXRydW5rCis3ODc4MCAwZjQ2OGUyZDkzZDBhZDFkMDYyMjdiZDExNmFhYWY2YzdhMjA3N2UwIHB5M2sKKzc4NzgxIGM2NzZmZjBkODQ5NWY1Nzg3N2M0YjQ2NmJhNjJkMDNkNDg4YWE1ODEgcmVsZWFzZTI2LW1haW50Cis3ODc4MiBjNmVkMzMwMzVkNjkyYWYwNTYyY2FkOWIwNWJlYWYyOTQ1YTQyZDQ0IHB5M2sKKzc4NzgzIGRhM2M1ZWZlNDI1MmRkMjMzMDA1NTBmMDk5NjQ1OTgxODMzMDFhZjIgcmVsZWFzZTMxLW1haW50Cis3ODc4NCBiMGI4MGVjMmUzYTBmZTBiNzVkZDQ5MGRjZjQzYmIzMzlkMTM2YjNkIGxlZ2FjeS10cnVuaworNzg3ODUgMzlkNzA0NzgwN2Q1Mjk1YTZkNDhhZDk0MzQ4MzhmMGRiMzdkZmQ3NyByZWxlYXNlMjYtbWFpbnQKKzc4Nzg2IDQ0NWY4MDFjYTJkMGI0MjkxYzUyYWNkNzkyNzRjOThhOGEzNjI1YTEgcHkzaworNzg3ODcgNTVmNmEzZDVjMTc3OTU3MzdhZDY5NGI2NDAyODkxMjcwM2VjMWNkZCBsZWdhY3ktdHJ1bmsKKzc4Nzg4IDY2NzE5MzJiZDhiOGJmZDIwODE0NjVkZGI2N2E2OGVhNzVmMzE3ZWUgbGVnYWN5LXRydW5rCis3ODc4OSBhM2Y2MTc4MzU0ZjVkYzFjMDc1NDM2OGIxYjc0OTgwZmI1NGM3YTg5IGxlZ2FjeS10cnVuaworNzg3OTAgOTZlMDAxMWVhMGE0NGNhNmE5NzRiYWRiNDMxNWIwNzkyMmRjNDY3YiBsZWdhY3ktdHJ1bmsKKzc4NzkxIDJhYzRmNGY3ZTM5MTE2MWNhMDIxMzc2NmMzZWU5MzZmNGJjM2YxZWYgbGVnYWN5LXRydW5rCis3ODc5MiBhMmYxYzE1Y2FlNmM0MDVlMjFlODQxNWZmYjgzNTYzOTM2MmE2OTNkIHB5M2sKKzc4NzkzIDczM2NjYzNmM2E2ODA1YjExYmY1ZDYzOGJkY2UwZDhlMjEzOTBjOGIgcHkzaworNzg3OTQgMTQ2MTZkZjkyNDA3OWQxMTUyZGFlYmViZjQ4MzE0ZDI0NzhiNDFkNiBsZWdhY3ktdHJ1bmsKKzc4Nzk1IGNkZmRlZmVjOTlhYmNkYTE0ZGNkYWE3ZjQxNTFlODA1ZjgwMTYzYzIgcHkzaworNzg3OTYgNjhlMDUwNzYzMmE5MWY3OTAwNmJiNjhjNDNjZjg4NzdlZjc0NDlkYyBweTNrCis3ODc5NyBhYzgwODg0ZGRjYzMyNjY5NDgzMzk3NDZhYjY1YWMwNTRjMzAxMjVhIHB5M2sKKzc4Nzk4IDAyNGM1M2E4NjUyMWY5MGMwMDQyMTJjZjc3NDkwMTcwMWFiNjZkZmYgcHkzaworNzg3OTkgYjNlNjY3M2I2YWU0ZDFlMDg4MmVhZGZmNzI1NmNlNjU0M2RjZjU5NSBweTNrCis3ODgwMCBkOTI4NzhiYmE3YmJmNzBmZWNiM2JhZTM3NGY3MmFhYTkwNGZjZjAxIGxlZ2FjeS10cnVuaworNzg4MDEgODk1Y2ZlYmRlMTcyN2JhN2Q1Nzk4Y2NlYWIyZWIwZmM5OGI2ZjFkZSBweTNrCis3ODgwMiBjNTU3YTU0YWQ2ZDFmODdmYWVlMDQ1ZTA4YjliZTk0ZWZkYjM0Yzc2IGxlZ2FjeS10cnVuaworNzg4MDMgMWNkYTNkNzc3N2FlN2UzZDU1YWEwZjU2MWQ0MjJkMmQyYzQ1OGNjMyBweTNrCis3ODgwNCBjODcwMzk2YjZhZTFhMTFhOTVhNDU3OWQ0Yzk1N2U3YTA5MTc3ZDRhIHB5M2sKKzc4ODA1IDU5YTE1NzNiODNhYzQ2YjE4ZTE4NGM3Y2I2OTY4M2FiZTVmMTY4YTIgcmVsZWFzZTI2LW1haW50Cis3ODgwNiBmMTI2ODJhZjU1N2I2MWFhN2UwMzk0ZjEzNDI2NTViNWZiMTRiYWJiIGxlZ2FjeS10cnVuaworNzg4MDcgMmE0ZTkyZWZmMzBhNzQyYTdlYTQ1OWY4ODQxZmI1YzMyMGIyYzQ4ZCBweTNrCis3ODgwOCBlNDIxNTVjNDc0OTRhZmZkYzY1YjdjMzAxOWU4NTVlMDJiYTQ3YTAzIHB5M2sKKzc4ODA5IDg4ZDI2NWRlN2RhZTIwNmQwY2RiYmIyMzY5Y2NkNmQ5MmNkZTYzYTkgcmVsZWFzZTMxLW1haW50Cis3ODgxMCAyZWVmOWIwZWJkNWNkZjk1ODRmZDcxZDc2Y2YxOGMwNzg0ZmJjNjIzIGxlZ2FjeS10cnVuaworNzg4MTEgNTY2NzlhZmFmMDdkYjJhZDg2MGE4NzAwNjViZWZiM2E3ZWQwZThkNiBsZWdhY3ktdHJ1bmsKKzc4ODEyIDFmNWRhNTVlZTdkN2YwMDI2NjgzOTAzMzM3YWVmZTNlMTQyM2QwZjYgbGVnYWN5LXRydW5rCis3ODgxMyBlMjc2MmY0OTUzOTM1ZTUxYTA3ZWM5ZDY1ZGQ1ZmQyODdiYWU0ZDZkIHJlbGVhc2UyNi1tYWludAorNzg4MTQgYmJmMmVkZDc1MmI2MzJmMDg5Njk3Mzk3M2Q0MDU1NTE2ZjVlMzM0NyBsZWdhY3ktdHJ1bmsKKzc4ODE1IDI2OWExMmE1MDEyM2YzYmQ5NGNhNGE5ZTJlMjNhMDAzMDYxNGY4ZGQgbGVnYWN5LXRydW5rCis3ODgxNiAzYzhlMjAwMDQzZDY5ZTg5ZTliYTZlYjllYWM1MjQyYmUxMzUyOTAwIHJlbGVhc2UyNi1tYWludAorNzg4MTcgNTVmNGRlNWUzNzhhODllYjkyODhjNzg2OWFhZjc5YzFiNmYyOTcxNCBsZWdhY3ktdHJ1bmsKKzc4ODE4IDY1MzM0MzAzZmRkM2ZhMjY2Y2Q2YjBkNzk1MzJiZWE3MWVmMmM2YjkgcHkzaworNzg4MTkgNmQ5YmUxYTk3YzE3MjJlNmE5MWQ2YjIxNTAyZjFlYTUwZjlmNTIxMiBsZWdhY3ktdHJ1bmsKKzc4ODIwIGRmYjIzOWM1MDA4OTJmZWM5NTc3ZDQzYmM4MTI0YzUzZTg0YzRmNDggcmVsZWFzZTI2LW1haW50Cis3ODgyMSA5ZGQxZWNiNWEyNGMxYjQ0MjI3NTMzOWEwMmQ1N2ZiZmJjYzZhOGIyIHB5M2sKKzc4ODIyIGZhNDYzMDkxNjY5OTA0NjM1N2E1YWMxNjg4NGYzZmM0N2JkMGVhYTYgcmVsZWFzZTI2LW1haW50Cis3ODgyMyAwMTdhYWZlODMyNmZhYzZlYTE4ZGM3MjVkMzgxMjhlOWRlODY1Nzg5IHJlbGVhc2UyNi1tYWludAorNzg4MjQgNTMwYjcxY2QzYjI5NjEyZTk4ZDZiZTEwODFmZjY4M2U1MzBjMWIxZiBweTNrLWppdAorNzg4MjUgYmMwY2M2NzcxY2FhNzg5MjQwMjk2ZDc2M2VmZjIxMDUzNzQ3YWY0YiByZWxlYXNlMzEtbWFpbnQKKzc4ODI2IDQ0Njg2NjZkMDFjNGJhNTFhNjcyOTAxZmM5NzEwZWZjZGU2MmYyY2MgbGVnYWN5LXRydW5rCis3ODgyNyA1NTUxZmU2NjY3MGMyNDRkMGQ0NTBhZjlmMGNmY2FiZDZiNmZjYWFkIGxlZ2FjeS10cnVuaworNzg4MjggYWRiYjM3ZDNkMGU1MDNkMWIwN2JmNjYzYjkwZjc4ZTkyYzhmZTE2ZCBsZWdhY3ktdHJ1bmsKKzc4ODI5IDEzNWNkODA2NGQ2ZmI4NWU4NDlmN2JhM2MzOWRhNTE4M2RlYTNiYTUgcHkzaworNzg4MzAgNWI0YTY2ZDYwMWMzYTQ0NjMwMjM0ZWRkODQzZDZmMTlmODg3ODhjMiBsZWdhY3ktdHJ1bmsKKzc4ODMxIDA1M2VmNmU4M2NlZDdjNWQzODhlNDBkNWIwNWM2ZDg2MzJjOTMwOTIgcHkzaworNzg4MzIgYWQ4ZjYzZDlkY2Q4MDM0OGQxYmU3OGI2YmNmZTY5NWE1MTdmYTYyMCBsZWdhY3ktdHJ1bmsKKzc4ODMzIDZlMzdlMTI3NTgxYjRjMTAzMGM5YzA4NzQ4OTUzNjM2YWIwMzU3OGIgbGVnYWN5LXRydW5rCis3ODgzNCBhMTExMDI0YTBiY2I2YzcyZDQzMDEzNmEyMzEwNzc1M2ZjYTg0MGFjIHB5M2sKKzc4ODM1IDhiMjQ2ZTg1NjBkYjVkMDFhZTgxZjk5ZmU5ZGNlYWExZjM2ZDk0ZDMgbGVnYWN5LXRydW5rCis3ODgzNiBlNTM2N2Q2N2E3ZjhhYmI3ODZmMjk1MGU4NThhZGEwODkxMTBlNTlmIGxlZ2FjeS10cnVuaworNzg4MzcgYjhlZGUwZmVlNjFhMTM5ZmJmZjc5MTdhMjg3NGIwNjk4ODdkZDg5ZSBsZWdhY3ktdHJ1bmsKKzc4ODM4IDgzMWUzMGMwZmQ3MzA2ODVhY2UyNTM0YWJiMWVhNmZjYmNiYWU2N2YgbGVnYWN5LXRydW5rCis3ODgzOSA5MDNkM2U2MzNhOTI1N2M5M2Q4MzFmY2Q5MGYyNmVhNDRkMzczY2FjIGxlZ2FjeS10cnVuaworNzg4NDEgMDZhZDMyYzAzNDg2NGI2YWQ4OTRjZGUwMTFmOWIzMjI5ZmZhYTRiOSBsZWdhY3ktdHJ1bmsKKzc4ODQyIDkzNDczNzliZDVmYjk3ZDNlNjNlN2U0MzlmM2Q4ZDE0MDNmOTY2MGQgbGVnYWN5LXRydW5rCis3ODg0MyBiNjJmNzZhZDQzMGUyODAyMmViNzY5Zjc1NDI4ODQ1MzM3YzZjMzYzIHB5M2sKKzc4ODQ0IDRkZDA4YTVjY2E4YWQ5YzRhNjY1NDZmMjEyMmQ4MGEyYzFiZTM2YmUgbGVnYWN5LXRydW5rCis3ODg0NSAyMDE2MGI0NjFjZDNhZWIzMDQ2ZmFmOTllOGZkNGFhYTM1NTY1NWVjIHB5M2sKKzc4ODQ2IGVmNDhlNDhmMDY2ZTk5OTE1NzM1NjgyYjI5YTViMTIzYjM0Y2ZkMjMgbGVnYWN5LXRydW5rCis3ODg0NyAzZWQ5NTQ5MGJhOWQzZGM3MjhjMGE5YmVmNTVmMzViNzc2NGEzNzgwIGxlZ2FjeS10cnVuaworNzg4NDggNmVhMGE1OGVkODM3NjkwNGRiOTkxYmU4NTg2Y2ZlYTA5NTg4MTAxNyBweTNrCis3ODg0OSA0OTEyY2YzYjAxOTBiMzZkYWU1YjRhY2E3NzA2Mjc3NzA2NWRlMTY5IHB5M2sKKzc4ODUwIGZjZmUzMjQ2NjNhNjE3MTdhNDliNTgyZDQ1ZTQxNzIyZTViYzczNDkgcHkzaworNzg4NTEgNWM1ZGU4YWNiMzNjMWE1MTE2OTMwZWE4NjM5ZGY4YzAyN2Q2NDNjOSBweTNrCis3ODg1MiA5YzJkOTE5MDE0ZDA3YWFkYmU2MTRiMTM4ODcyOGEwNzVmNDczNjFlIHB5M2sKKzc4ODUzIGE1NjZlNTNmMTA2ZDYwZmVhYmFjYTkwNDUyOWFlNmI3ZDVkMGE3ODkgbGVnYWN5LXRydW5rCis3ODg1NSAxMzVhYTdlZGY3OTJiODM3NDlhZmEzOTQ1ZjMyYTc0Yzg3NDU4NzQ3IGxlZ2FjeS10cnVuaworNzg4NTkgNTM5NGQ4MWM0NTEzYmFiODdjMmEzMmQ4MWQ0YmUzNmNhNDdiODk4NCBsZWdhY3ktdHJ1bmsKKzc4ODYwIDYyZDdmMDQ5NzAzYjQ4MzA1NzhiYTEwZDdkZDUwNGZiNTNlOTg3ZmIgbGVnYWN5LXRydW5rCis3ODg2MSA5MDI3YjE1ZjliYjc2MmE1NzRlYmYxZDhhZGZhNDA5NTdlNjM3MzEwIHB5M2sKKzc4ODYyIDk5NDg3MTQ1MzJmOTIxMTVhMDA1NDAyOTlkZTliMTRlY2U0ZTM0ZjEgcHkzaworNzg4NjMgZGQ0OGUzZjMyZGU1NTRmM2VhNjMzMzU0YjlkNmQ2ZGJkZjBlYmE0YSBweTNrCis3ODg2OCAyMzZmYjBhZjQ0MDQ5NzA5NjgzYWJiNTFkZjIwNWQ5NjA3NTFkMWJkIHB5M2sKKzc4ODY5IGIwNTZiYzc2N2FlMWViMThmOTI4NWFjYjJkMTVhZTk2MTBmNzhkMjAgcHkzaworNzg4NzAgMjZiMTk4MDlkODJlOGYzN2E2MjViMTk0OTQ4ZGU1ZWVjMmQwZjQyNyBsZWdhY3ktdHJ1bmsKKzc4ODcxIDY5YjcxYzMzODk5MjViMTM2NTg4YjAwOTEyMjEzZDI5MDc3ZGM1MzUgcHkzaworNzg4NzIgNDIyNjFjNmNhNTY0MzAxZjJkZWZjYmY4MTA4NTdlZGFjYjNmYjRiZSBweTNrCis3ODg3MyAxYmNiNDY1NDcyYmU1OWE4MzZjYTM2NDRjMmZiNjc2NWUzZjZmMDZjIHB5M2sKKzc4ODc1IGY0OWQyNGI0NDU2ZWM5ZTk0MWEyODUzYzQwMjNmMTAyZDNmZmM1NDQgcHkzaworNzg4NzYgMDZmZGM1ZTBjMmMyNDNjODNjNWJlOWE0NmZjZGNiODkyMmRiYWE1NyBweTNrCis3ODg3NyBjOWRkODIzYzE0NmQxYjZmMjJmZmM4MzFkZThlMGQ2NjQzMTFiMThmIHJlbGVhc2UyNi1tYWludAorNzg4ODAgYWM3NTRmYWViNjNlODhmNWUxMWRkMmVkMDE1ZTA0YmQ1ZjJiZjQ3NiBsZWdhY3ktdHJ1bmsKKzc4ODgxIDgyYTIzMDQ3MTk0YmZkMDU4NmMzYmQ2NjBkZTkxYTUxOWVjZjQ2MmYgcmVsZWFzZTI2LW1haW50Cis3ODg4MiAwN2FkYjA5NDQwZWY4OTY2NTI0OGU1NjU4YTk0MmE5ZTExMWY4ZjhjIHB5M2sKKzc4ODgzIDZhZTA5MGZkOTlmZTNiMTMzMjA3MjRiMzM1OWQ3N2E1NjQ5MWJkMGMgcmVsZWFzZTMxLW1haW50Cis3ODg4NCAyNzNlYjVjMWI5Yjk3MzVhZTYzZjVmOGEwYjAzNmQ4YTNhYWVhMTBmIHB5M2sKKzc4ODg1IDkwMGZjYWNjNjQwMzRhMTc0Y2E5NGM3MTI2ZWM0NWQwYzUzNDU5NDMgcmVsZWFzZTMxLW1haW50Cis3ODg4NiAxZTAxZWY5NzU4OTk5ZjZmY2ZmZjAxNDQ3ZmEwZGI3M2E3NzE0YmRhIGxlZ2FjeS10cnVuaworNzg4ODcgNzZmMDdjY2Q3ZGI1Yzc1ZWVjMmZhNmJiYzkzZGU1NWFiYzU2MWZiMSBsZWdhY3ktdHJ1bmsKKzc4ODg4IDY3MjY0NjM2NDZmYjQwODhlZjMyMzM3NmNmY2Y0NDMyMWY5Zjc1MjMgcHkzaworNzg4ODkgOTgwODA4ZGUzMGM5MWVmMzU5NTI4ZjU3MjQ0MzJiZDdhYjk2ZjA0MiByZWxlYXNlMjYtbWFpbnQKKzc4ODkwIGU0NzQzODZmZjk2ZTg4NTlhOTkyZTM5MmNhMzAyMGVkZDk0OGEzYzAgcmVsZWFzZTMxLW1haW50Cis3ODg5MSBmODA4YjE2Y2NmZDZhZGUzMWFkNTM0Y2Y3YTUwN2Y4ZjAyMGNlZmU5IHB5M2sKKzc4ODkyIGQ2ZjIwNGQ0MDY5NWViZWY2MTNhZDRmZGVkN2YxZDM0ZDZhYTMxZTUgcmVsZWFzZTMxLW1haW50Cis3ODg5MyBjMWZiMDdhNTdjOGQ2NzlhMzI3Yjg3YmU3MTQyOTg2YzI3YzYyZGQyIHB5M2sKKzc4ODk0IGMyMWIzZTMyZWQ3YjhlMmU2YTU0MTQ2ZWI2MTM0NWNjMWE5MGEyN2QgcHkzaworNzg4OTUgNWRjYzM2MTlkNmQxZGE4M2EwOGRkNDAzYmM1ZDM3NjQ5NGM4YmU1MSBsZWdhY3ktdHJ1bmsKKzc4ODk2IDY3MzUzZmI0MDVlYzkyYmUxMDhkNTliMjUyZjdkYzRjMDExMDdiODMgcHkzaworNzg4OTcgMjJjODc3MGY5OTIzOTZiM2NkYTFiZWVjYjQxZGQ5ZmVkODQ2ZThmNCByZWxlYXNlMzEtbWFpbnQKKzc4ODk4IDFlZTI0NTJjZTk0MjY2MTZlNTIyNjAxMzMyNTBlNDFiOWY3MDg5ZTIgbGVnYWN5LXRydW5rCis3ODg5OSBmNDBhODA4NTI0ODAzNWIxNzFiM2Q2YzczMzgwZTJjMzdjOGJjM2MwIHB5M2sKKzc4OTAwIGUxMGQ2MWNhMzY4ZWRmYWRmYzZkYjUwMzNmNGM3ZmRkZGExYWFlZDAgbGVnYWN5LXRydW5rCis3ODkwMSA3N2M1YzkwYmVlZjAyOGQ4Yzk4ZDQzMDlmZjAyYjZjMDM2ZTE3MDRlIHB5M2sKKzc4OTAyIGY2NTk3N2RjZjIxYWNhZDAzZTFlNjRiNDU0NmNlZjQyOGY4OWUyZTQgcHkzaworNzg5MDMgNGZiZjNlNzA4ZmM0MDFiNzE1Zjg5MGUxZWI5YmJmN2M5Y2IzYjdkNyByZWxlYXNlMzEtbWFpbnQKKzc4OTA0IGIzZWU1ZmVkOGRhNDgxMDRmZDc5ZWEwY2Y5ODRmMmZhODBiMDcwOGEgcmVsZWFzZTMxLW1haW50Cis3ODkwNSA4MDI4MzcwOTcxOTE3NjkyNmU4NDJmYjEyYTIyZDQ2MzU3OTcxY2I1IHJlbGVhc2UyNi1tYWludAorNzg5MDYgOTBkYWEwN2E0M2JmZTk0N2JkNWMyNDE3MzVlOTNjN2E4NDVlMTI5ZiByZWxlYXNlMzEtbWFpbnQKKzc4OTA3IDVhMTZiZjZkYTk4OTJmODVkYWNiMTM2NWI2MjNiOGYwOGI2N2RjNWQgcmVsZWFzZTI2LW1haW50Cis3ODkwOCBmMjU1YTQ2YjMxNWFmNjI5NWQ5NTE3NDdkMDU3MjM1NzU0NmM2Nzk4IGxlZ2FjeS10cnVuaworNzg5MTAgZGE5NGYxNjY2ZGExOGQxN2MyYThjNTdiNTZlMDQyODU5Nzc2MWZhZCBsZWdhY3ktdHJ1bmsKKzc4OTExIDU1ZWNkYjc5YzY2MDJkZDZlNGZlZmJmYzA0YmJkOWI2MTlhZGI0ZTUgcHkzaworNzg5MTIgYjFiMjJjNjAyMjJiNDAwMmVhNzBlM2Y3YzBjY2U5NTI4NjE2ZGU1ZSByZWxlYXNlMzEtbWFpbnQKKzc4OTEzIDQ2MDgyM2M2NzVmODkzOGJiMWY1NGFlOWU3NWMzNTgzZDUxN2M1YTAgcmVsZWFzZTI2LW1haW50Cis3ODkxNCA0M2NhNjdiZDcwMGE2OTgxMDNhNjUyYmEyMTUwYzNmY2RlZDNhMzgwIHJlbGVhc2UyNi1tYWludAorNzg5MTUgYWQwMTdkMWI4MDcyZTBmYTg4ZDY3YjYzZWFkYTQzMDYzY2UwZjgwYiBweTNrCis3ODkxNiA1YTZlODk3MDY0ZDZiYjE5MjA4NTkxZDhkNTAzNGEzZTBlMmM2MWRiIHJlbGVhc2UzMS1tYWludAorNzg5MTcgNmQ1YWJmZjdmYzMxMzk4YjFkZmM2ZWJkYzExY2JmZjE3ZTNlZjYxMCBsZWdhY3ktdHJ1bmsKKzc4OTE4IGQxZWRmMjgyNDAwODI1ZjFkMTRiMWM4ZmU3MmFlZWRjY2UzZDRiNTAgcHkzaworNzg5MTkgMjdhYTQ2ZDAyMTRhYmMwMDY0NDEwMGEzOThmMWY1YjcxZDAzNmVjMCBsZWdhY3ktdHJ1bmsKKzc4OTIwIGE3YjU4ZjFlOGFmMDg1ZDg3NDVkYjg3YzZkMWNiNGNhNjE5NGRhNjQgcHkzaworNzg5MjEgYjg3OGEwYWQ0ZDhjNmI0Y2I2NWRhODJjNjVkNzVhOTI5MGMxYjZlNyBsZWdhY3ktdHJ1bmsKKzc4OTIyIDUxZDI2ZjMxYmNlOTU1MmI2MjJjY2Y1ZTBkZWZmNTgyMmU1YzcxZDYgbGVnYWN5LXRydW5rCis3ODkyMyBlMWQ1MWNkMzE1ZDA4NTM0MTZiNmEyZGNkZGJhNWYyNWVjMjQ5N2ZkIHJlbGVhc2UyNi1tYWludAorNzg5MjQgMzJjNWFkMjk2NjNjZGUzNzQyY2FkMTA5YmYwZTBhMmVkMzQ3Yjk4ZSBweTNrCis3ODkyNSAxOWU5NjYwZDlhYTUxMmZlMzQ2YmE0MjRmNTM1NTdmOTE2ODNlYzlkIHJlbGVhc2UzMS1tYWludAorNzg5MjYgZTgwOGZjNTQ4Y2Q2NjVjOWE2MTQyZTUwODI4N2I2YWFjNDI0MTcyOSBsZWdhY3ktdHJ1bmsKKzc4OTI3IDAwMjZlNDQzNjJlNTdkMDRlNTQ4NWI0YmEzZGExYzQ2Y2ZmZmI3MjUgcHkzaworNzg5MjkgNjc3NGU4YzZjMzlmMzg0Y2U1N2I4Zjg1MGRkYjY1ZGUyNzcxMTZjNSBweTNrCis3ODkzMCA4NTkyOTZhNzA5MmYwY2JiNmYxYzEyYmUxMmRjYzNlZmFjY2FkNGZlIHB5M2sKKzc4OTMxIGUwYTE3NzBkZjUyNzg2MTJlZGVjNDMzYjQxMTVlYjg4YWUxMTY0ODEgcmVsZWFzZTI2LW1haW50Cis3ODkzMiA3MjhlZjAwNzJkYWYyMmQ4OWYzYzgzMThmZmI4ZDg0YmZjMmQ4M2NkIGxlZ2FjeS10cnVuaworNzg5MzMgMjkwOWE0Y2IxYmE3MmYxM2NkNTAzOTg0Mzc0ZTFhNzA5NDEwMjU4MCBweTNrCis3ODkzNCBhZGMzOTBlNjY4OTA0MDFkNzYxZjE3NzRmYzA4YjU2NzdkZWFiOTVjIGxlZ2FjeS10cnVuaworNzg5MzUgY2MxMzIxMjEyZTczNDYwY2JiMWU1ZTlkOTA3MDBmOWY5NjFhMzk4MCByZWxlYXNlMjYtbWFpbnQKKzc4OTM2IGQ2ZTI3ZmEyMmY0MmEyNjZjNjZlZWI2MzhkMDU2Y2MwMmVhMWY4MWIgcmVsZWFzZTI2LW1haW50Cis3ODkzNyA1ZmU1YTI2ZTMxNjllODljZGE5NTgwYmJmODlmMzdmZjk5YWQ2NzU4IGxlZ2FjeS10cnVuaworNzg5MzggZDM5MDVhOWY0MGY0MDU5ZDJkNWI5N2IyNTc3ZDUxMmM3ZmZlYmMzNyBweTNrCis3ODkzOSAwYjQ1N2YxNDk3NjFkYjZhYWY3MGMyOGRlMjUwNWIwZWYyNGU1MzBmIGxlZ2FjeS10cnVuaworNzg5NDAgMWE4MTBjZTEzZGJkN2M0M2JjN2I3MzIzMzc5Y2M0NWUxYjc1MjNmOSBweTNrCis3ODk0MSA5Njk2OTMyYWQ4Mjc1ZTczZmE5N2M1MDgwYTZlYWIxMWU2Y2FlM2E4IHB5M2sKKzc4OTQyIDdhMThjMjc2Mjg4NjE2NTQzMDlhZGRhNDQzYWFjOGIyNzYzODdiZTUgcHkzaworNzg5NDMgZDMwZWI0MjJjNTY0YmY2MWEwYzNkODBkMDgyMjFmOWFhMjA0MjE2MCBweTNrCis3ODk0NCA0NjFiODliOTU1NWQwY2E5MzJjNTlmNDIxM2QxZTI4NTM5OGIyMjM5IGxlZ2FjeS10cnVuaworNzg5NDUgZjA5N2YyYmEyMzI5MzcyNzMzM2E2ZmI5OGU1YWM1YzNjYzE0ZTYwYyBweTNrCis3ODk0NiA3Njg3MjJiMmFlMGE1OTg0MDc5MGRlMTUwMjVkZDU3N2JhMjMzYmM3IHB5M2sKKzc4OTQ3IDM3MmQxZGU4NmRlOWY4NjMwZGU2ODg2Yzk3OTJlNjAzOGJjNTU5OGMgcHkzaworNzg5NDggM2Q2ODA5NDlmNzU1ZDg2YmE5YWU3MTIzNGI1MzE4NTAyNDBiN2FhNiBweTNrCis3ODk0OSBmMTI3MGUwMGY1ODc4NzZjM2NhZjFhZWE1Njk3ZjBjNDQzMDQyODFiIGxlZ2FjeS10cnVuaworNzg5NTAgZGY4ZjgxZGY4NTk1Y2U1Zjk0ZDRiNTNiNGQ5MWY2ODEyOWY2NDU0NiBweTNrCis3ODk1MSAzMDhjZmY3ZGY2NGYxNzRlZGU4NjlhMzZhYmI5MGUwZjI0MzU3OTc5IHJlbGVhc2UzMS1tYWludAorNzg5NTIgNDAzZDBhMjdiZDU2ZWU1NTM2NGM3Y2ZmYzRhYjgwZjBiNDA5MzllYSBsZWdhY3ktdHJ1bmsKKzc4OTU0IGU3ZjExZjQ0ZDUxNDU1ZjQyY2YyZTg3OGRkYzE0ZDhkNTM5NjljYjQgbGVnYWN5LXRydW5rCis3ODk1NSA3N2M3MWYyNThkZjdjYTc1Zjg1YjQ5ODdiNTM1OTc3MjYzODRhNWZmIHB5M2sKKzc4OTU2IDViNzU0ZTg4Mjg1N2NmZDFiMzM0NWY0MzEyZGQ4ODI1OWEzY2E4ZTIgcHkzaworNzg5NTcgYjkzY2ZhZmNkY2FkN2MzM2NiOTUzNjg4ZDBlMTExNTZhZDMwZWJiMSBweTNrCis3ODk1OCA5Y2Y3MDJjOTFhOWU4YWVmODQ5M2YzYTVmNTBmNzQ1YjY4NWZiMGJjIHB5M2sKKzc4OTU5IGU3YjVmYzg2NDZhYmZhOTAxZTcyYTMzYWMzOThhZjllZDUyZWQ3NjkgcHkzaworNzg5NjAgYzhjY2I0ZTBjNmZlYTdkM2QwMzNkMmU3YmQ0NjU5ODhmMmU1ZGY0NiBweTNrCis3ODk2MSBjNDVmMjE3MDVlY2I3OWUzNDFiZmI0YzM5M2YxYzU3NTIzYjUzNmIyIHB5M2sKKzc4OTYyIDhhOTA5ZTZkMmNhZmE3OTNlZmU0N2JiNDE2MjM1NTAwMzdhM2FhNjcgbGVnYWN5LXRydW5rCis3ODk2MyBjMTZlMDc1NWZjZDdkMDc4ZDQ2NTE0OTQ2NTY2YjBiOTQyZTFjOTYxIHB5M2sKKzc4OTY0IGI1NzBjNWI5YjJlZjM1NDg0MzY3ZTU2MTQ1MzAxOTA5OWRiNGJhYzMgbGVnYWN5LXRydW5rCis3ODk2NSA1OWUyMjNhMDU2ODBmYTI5MWJmZDMzZTMxMzFjNjc0MTk3NWEwMjEzIHB5M2sKKzc4OTY2IGQzNjBmMzdhNGI1OTVmYjlhMzQ1MzA1NzVkMWZlNDVlOTZkNzYyODggbGVnYWN5LXRydW5rCis3ODk2NyA4ZjE5OTNiODY2Zjc5MDIxNDgwMWMwY2MxODFkNGIzMGFiN2I4YzI4IHB5M2sKKzc4OTY4IGVlZmQ1MjFmMTljZTA1ZjM5Zjc0YjAyYzcxOTJiNmJmMmE4MGNiMGMgbGVnYWN5LXRydW5rCis3ODk2OSBiYjA2YWE5MTgzODIxZDQ1MjI3YjM4MmY5NzI4MGFlMGE5NmIwMmQzIGxlZ2FjeS10cnVuaworNzg5NzAgMDhjNTQ3M2JlZGNjMzkzZWZlNTRmMmVjYTUxZTExYThhYzExMTk4ZiBsZWdhY3ktdHJ1bmsKKzc4OTcxIGUxZGUwODBjNDU1NmQzOTUwMDA0YjY0MzQ1OGJhYTRjMDk4OWFlYTEgbGVnYWN5LXRydW5rCis3ODk3MiBiNzRmMWJiODhlNjA5NGYzMzNiODJjNzhjNmQ1YTZiZGEyMmIxZDQzIGxlZ2FjeS10cnVuaworNzg5NzMgYWRiNWU5MjhiZGUyMGY3MmU2NTYxZTBlMGZmZTBiY2QyZmU5NzU1YSBweTNrCis3ODk3NCAzOGYyZjUyNjJiMjAzYWQ1NmYxMDk4MGQ2YTc1YjRhYjA4NTBhZTY0IGxlZ2FjeS10cnVuaworNzg5NzUgMzdhZDQwYTI4ZDNiZjQwYjljNzAyMGJlNGRlOTQ5NjFiYWFhOGUyMiBweTNrCis3ODk3NiA5NWYyMWIyYzIxNmMwOGZkZDk2YjFmYjY1MDliMGRjYjFkODY0MGVlIGxlZ2FjeS10cnVuaworNzg5NzcgOGUzOGI3YmVmNzAwMDQyZmY2Y2UzZmEwYWY5NThiNTJlMDE4ZWM0MSBweTNrCis3ODk3OCBkYjM3OWE5MGI0NmU0MDQwMmQ0NTBiMDRmYjBkYWNiNmZjNjkwNTYxIHB5M2sKKzc4OTc5IDczZTQyYzBmNWM5OWU1MjFmZGJmMWU4MDk5YzcwZmMzZmNiOTAyMTggbGVnYWN5LXRydW5rCis3ODk4MCBiODkwMGExZDk4MzUzMDg4YzUxMGFiMTYxMjY1ZGFmNDRmNTc0ZjkzIHB5M2sKKzc4OTgxIGEyZGJhNmZlM2ZiZTVhODhjYWEyMjQ2NGFmNTM2NzdjMmIzMTAwNjggcmVsZWFzZTMxLW1haW50Cis3ODk4MiA4YWE1NTMwZTg0MDczZDg4ZmJhZWJkMzE3N2U4MjFhZWNjNzgzOTcyIGxlZ2FjeS10cnVuaworNzg5ODMgZWViOWJmMTUyNWJhYzhhYWRkYzM1MDBjY2U0NDdjODhhMTg4Mjk2YSBsZWdhY3ktdHJ1bmsKKzc4OTg1IGMxOWI0YmZiODA2YWE4YzE1MTVkODM3ZjFkOWM0ODFkMTg1MWNjMTIgbGVnYWN5LXRydW5rCis3ODk4NiBjNGRkMzBiNWQwN2VhY2ZiM2VhZWQ0NDdlODVhOWUxMTVjNjc3ZGNmIGxlZ2FjeS10cnVuaworNzg5ODcgNTk5MzExNzljNWUyYzU4MjNkMTYyZDI3NjBiN2JjMjg1OGE3ZDRhNyBweTNrCis3ODk4OCA3OTg0NWUzZDVjYWMyMWU1ZWEzNjZkOGRjNmExMTQ4YmNjZmQzZTJiIGxlZ2FjeS10cnVuaworNzg5ODkgOWZmYzhmMDUxNWNkZWM2MDg0ZmU1ZWUyYTgxZDM3NWYwNjhkYTY4MSBweTNrCis3ODk5MCA5MjNjODczOWNhODYxNzRmZWY5MjQ4ZDY1MGU4NDAxNzMyMmE3YjYyIHJlbGVhc2UzMS1tYWludAorNzg5OTEgODUyNzk5YmIzZmIxM2NjMWJhNzViNDgxNTEzNzVmNzEzNjMxNTBiNSBweTNrCis3ODk5MiA0MjU3MmUzNDcxMDhhMmQxZGQ3NTM5NWE2NzA2MzYyOGI0N2Y2Y2Q5IHB5M2sKKzc4OTkzIGI0NTMzYjU4MGZjOWVjMWEzZGE1NTVmNWFkODM4ZDY0OGYxM2Y3MWUgcHkzaworNzg5OTQgNzQ1MTQwMDBmODM3NWQ2NDc5OTllNTZkNjMwMjNmZmUyOGY5ZWU1MSBweTNrCis3ODk5NSA2NjFjYTBiMDVhMzFlNzU1YmMzMWViMGJhMjI3NTQxNjkyNGZhZjUzIHB5M2staml0Cis3ODk5NiBiZjRhNGFjZWZiMmY4NzA4YjM4OTI2NzY5NGQ3OWZiNDFjMGY1ZTNkIGxlZ2FjeS10cnVuaworNzg5OTcgYzk2NmU2ZmQ2MTc4YjEzZGQ0MzdlNmM1OGRiZWI2YzU4ZWM5OGU0NCBweTNrCis3ODk5OCA5NWIyNjljODY4ZGFjOTQ1YjFhY2RkZWE2YjQ0M2VlZTcyNGFmZDI0IHB5M2staml0Cis3OTAwOSBhYTYzMjk0M2I4YmRkYWQxMTJlYTcwYTBlNWViNDk2YTU2OTRiZTI1IHB5M2sKKzc5MDEwIDk3YjY2MmIxMGZmODM5MGU0MTkxNzRjY2FhYmFlNjQ2ZTE5YmU3OGUgcHkzay1qaXQKKzc5MDExIDJlMTZjOTYzNDAxZGUwM2IwNjllYzc5M2NlMDJhMjFhNzI2NjdiNGIgcHkzay1qaXQKKzc5MDEyIGJjNjViODZmYWU5NDYyZTdkOGE2YmU4ZjkzZDExYmQ2ZWRjN2YwZDUgcHkzay1qaXQKKzc5MDEzIDE5MGVhZGFlYWJjNTJhZDdkZmQyNTMwZDc1NjZkMWU5YTYzN2I1MmUgbGVnYWN5LXRydW5rCis3OTAxNCAwZjA4MDk2MWVjZWYxMzFiMDRmMjM4MmY0OWE2OGEwMGJiNmI4ZjcyIHB5M2sKKzc5MDE1IDNiZTNhYzAxOWJkYjA0ZTQzOTBkMTk2MTc4Yjc4OGQxYWQ1ZDM3MmUgcHkzay1qaXQKKzc5MDE2IDIwNjRiZjYyYTM5Zjc4NjhiM2MzNzQwYTk0ZDA1MjNhZjEyOTVmMjMgbGVnYWN5LXRydW5rCis3OTAxNyBiYWM3MmYxMWE5OGM1NmMzNjA3OGUyZWRlMzJiMDUxYTU4MDg3ZTUzIHB5M2sKKzc5MDE4IDMwZjI4MzAzOWUwZTk5YTc1N2QwODAzMDNlMDI4OGIxYWM0NWExNWMgbGVnYWN5LXRydW5rCis3OTAxOSA0NDA3YWM0YzYzNjBiZTQxZjBiZWFlNzkwM2NiNDk2ZjJiZTk1MTBjIHB5M2sKKzc5MDIwIDU4ZTNiYzIxYzJkZDcwMWViNDJhNTc1YzdlMGFiMDU2MWZkMzkzMGYgcHkzaworNzkwMjEgNzA2NTU5ZDNhYzU5MDhlY2FhN2Q0NzBkODU2MTY2NWRlMWNkOWJhZiBweTNrLWppdAorNzkwMjIgNjljMGQ1ZWEyZTFlM2MzYjQ3MGU4ZTQ2ZTNkNzhmMDNmODIzYTZjMyBweTNrCis3OTAyMyA1Yjg4OGY1OTBmZTI0Y2IyMzRlMTI2ZmM0Y2ZiZGNhMTI3Y2M3YmYxIGxlZ2FjeS10cnVuaworNzkwMjQgNTgyNzgwZWRkMGU4OGEzYmM2NTMzNjY5ZTA1MGU1NzA0NmUzMmQ3YyBsZWdhY3ktdHJ1bmsKKzc5MDI1IDgwMzhhZjFlMjA2NTVlYjYzM2NlNjhiNDE5MGNhYWM2ZjQxNDhkY2UgcHkzaworNzkwMjYgOGE0NjkzZDUxN2ZlY2YxYTNjODQ5MTU3MDc3MjQwNjM2OTBiZTk5ZCBsZWdhY3ktdHJ1bmsKKzc5MDI3IDdmMTYyYTMwOTQ5Nzg1ZDhiZTEwMTkzZDg2Mzg0ZDdkM2U2ZDBkOWIgbGVnYWN5LXRydW5rCis3OTAyOCAzNDY1ODJmODVmYWY4ODQ3ZjViMmY1YjFkOTFhODJlNWZkNjgzNTRlIHB5M2staml0Cis3OTAyOSAxMGI3NjA2YTkzZWQwMzkxYTIzMzU1ZWMzNDAzZjhlZGZjM2QxZGVhIHB5M2staml0Cis3OTAzMCA5YjQ2MjU3MDAyNTFiNzQwMDZjZjI0NWFiY2RmNmQwMmQ4OGNlYjFmIGxlZ2FjeS10cnVuaworNzkwMzEgN2RmM2UxM2QzZTUwOWUwZjJiMDk5OGNjN2FjOTliZDY3MTY3Y2NhNyBsZWdhY3ktdHJ1bmsKKzc5MDMyIDc0MDliNWE3YzgxYTZmMDYyZmU3MzY3NDgxZDBmNTYxODMwYTdkZWEgbGVnYWN5LXRydW5rCis3OTAzMyA4MGRjNGQxMzFkODVkZDMzMTIwZjllYWFlZDgzOWY1MWFiNjhkMjgzIHB5M2sKKzc5MDM0IGI4NzkyMDljMjAyZmQzMzM4ODEwMmE0ZTM0OTg2YTUyNWRmNmQ0YTEgbGVnYWN5LXRydW5rCis3OTAzNSA1MjQ3OWUwNDU0ZTkwY2ZjZWM5M2UzMzJhMjk0NGIwNjZlYjNmMTk4IHB5M2sKKzc5MDM2IDBhYzE5MTkwYTcxMGZhNzczNGNkZmM2ZjRjM2Q2M2I0ZjM3ZmIxNDYgcHkzaworNzkwMzcgZTNiZTFmMWFkNjFlZTExNTJlZTIzZWI5ZmNmNjQxMmY4OTNmM2E4YSBweTNrLWppdAorNzkwMzggNTMxZDMwMjNiNDhiN2NlZDAzNDhmZDEwNjNiZTgyMDJkODkyMGFlYyBsZWdhY3ktdHJ1bmsKKzc5MDM5IDQzNWZhMjE1ZDMzZjA4YTY4YjY5ZDg1ZDMwMWYyNzEwMmQwM2YyYjYgbGVnYWN5LXRydW5rCis3OTA0MCBkNjJjYTFlYWNjYjlkYWJmN2NkMTU0YzU3ZDM2OWE3NjE2NmU4ODE2IHB5M2sKKzc5MDQxIGVhMjc4ZDljMGIyYWEzM2YzNDg4MGFjODJkZjFiMjJiYjQ5YzFjNmQgcHkzaworNzkwNDIgYjFhZTRmODM3N2ZiNmUzMWU1MGRhNTRhZjJlYzRjMTk0NjNjZDk1ZSBweTNrLWppdAorNzkwNDMgZjcyMjBjYTExMzYzYzljN2NhMzAzOGE1ODZiNzcyMTQ1YjE3ZGIzYiBweTNrLWppdAorNzkwNDQgODU1NWE0Y2I3YzRjYjYzNjg0ZjQ0OTRkYmRkZDZlOGQ5YjM2MTYzOCBsZWdhY3ktdHJ1bmsKKzc5MDQ1IDE1YmRiOTRjODA1NWNkZTlhMDFmYjc3MDJhMjYzNTZhN2Y2NGQ4MGUgcHkzaworNzkwNDYgYmZlOWVlMDJmNGMwN2UxY2I3MTZlMDJkNzhhMzAwN2YyYmE1YWM0OSBweTNrLWppdAorNzkwNDcgYTFiNmE1NGUyYjZhNTFjNTM1N2Q0MzAyMWY5Y2JhZTNhMWJjZTQ3NyBsZWdhY3ktdHJ1bmsKKzc5MDQ4IGQ5ZWM0YzhjZTY5NTQyYzVmYTYzZWVkMDBhYTc1N2E5ZWQzOGYwZmMgcHkzaworNzkwNDkgNzZmOWUzYjZjNTg0ZTQ4YzFkOGM5ZjQyMTA5YWE2MzRhYjM3NTU0ZiBsZWdhY3ktdHJ1bmsKKzc5MDUwIDQ4NWZlMjBkYWIxMjFjYjQ2OTE0ZGYzYWZhNWE1MzAzYjQ5NjE3NGIgcHkzaworNzkwNTEgNDI5NDYyZDRjYTBjMjAwYzVkMjIzYmFiMTc2NmUyOTA0ZDk3Y2Y3OSBsZWdhY3ktdHJ1bmsKKzc5MDUyIDQ2MTgzYmY0ZjE0MzY5MDVhOTViOTFhODhmMGY5Yjk4M2IzODI0N2MgcHkzaworNzkwNTMgNDY1Njg0NmE4OWIyNjc1YTI3NTNjZGU3MWRiMzE0MGM1ODY3YWNmOCByZWxlYXNlMzEtbWFpbnQKKzc5MDU0IDJjZmE0NDk3MTg4ZmVmNDU1MGI0ZDVhYzBjY2U3YmEzZTY1YWM3NGYgcmVsZWFzZTMxLW1haW50Cis3OTA1NSBkMWRiZTVkZjE3OTFmMjkxODZjNzU4MTc4ZmE3MGNlM2I4Y2RlNGQ1IGxlZ2FjeS10cnVuaworNzkwNTYgODcxMjVkNzY0N2Q2ODViMTNhZjc2Njg1YjNjN2Q0YWNjMjFlNmYxZiBsZWdhY3ktdHJ1bmsKKzc5MDU3IGQ3YjllMjk0MWUxNDVkN2RkZGJhMTM0OGJlYmM3MDMxNjAyMjA2MmIgcHkzaworNzkwNTggMjVkZTcxNjdhMDU1OGY5YTM2MDAyMzg3NjQwMzk4MzYwNDFmNjA0MSByZWxlYXNlMzEtbWFpbnQKKzc5MDU5IDM0NGNiNmE0ZWY3ZGFkN2JlNDcxMzg1YzVkOWYzMTViMzFlNzMwMWUgbGVnYWN5LXRydW5rCis3OTA2MCAyMmY1ODlhOGUzYWI5OGU2YWFhZDY2M2Y1MTBmZTZiMDRkMTgxZTdmIGxlZ2FjeS10cnVuaworNzkwNjEgM2Y0YzdjNGVlZjYyYWY4MjNiMjJjYjZhM2E5Y2U1Y2JjMGY3NzQ1MSBweTNrCis3OTA2MiAwMzg1MmViMDhkYjE2MTQ2ODhjYTZiNzE1MGE2MTU4YTI4ZTYyZDhlIHB5M2sKKzc5MDYzIDk5YWY0YjQ0ZTdlNDkwMzkwODE3YTU5N2E1NDI1NDZkNzQ5ZTY5OGUgcmVsZWFzZTI2LW1haW50Cis3OTA2NCAxNmFhYjAyZWQ5OWM2N2VjMjYyYjk3YTI5OGYzMjdhMjIyYzU5MmYzIHJlbGVhc2UyNi1tYWludAorNzkwNjUgYTVkYjBkZjMyMzgyMDk0M2Q2OTRhNjBkOTIzNWZiMTlkNTZkNDFlZSBweTNrCis3OTA2NiA3MmE4MDlkMTY1ZjQzNmNjOTA4ZGIxN2Q5OWY5ZmZhMGEzNmRlZWEwIHB5M2sKKzc5MDY3IDE1Yjg3ZWExNDEzZDZlODAyMGQzY2M1ZDYwNzZkMzRiMmU2YjNhNTEgcHkzaworNzkwNjggZTE1YThhNDc2NDk0YmI5NDJhZDhkNDJhMzFmNTFiMTEzNzg2MzA0MyBweTNrCis3OTA2OSA0ZjA5ZDViMTQ3NWZmYWMzNTY2MDMxZjA2N2Q3ODdkZmNhNmEyYWI4IHB5M2sKKzc5MDcwIDM3YjFiOTBkZTVjMTU1ZDkzYjNhMDI4NWUyM2ZmMTE0N2JlOWM0YzAgbGVnYWN5LXRydW5rCis3OTA3MSBlZWE3MmI4MWEyM2M2NWNjYmY2MDViODZkYTlkZGMwMmY0MWVhNDE1IHB5M2sKKzc5MDcyIDk2ZWZlYmRhNGVhMmM5NmQzMWViNjY4NWE5ZGVjZDZhMWJhNjdjMzEgcHkzay1qaXQKKzc5MDczIGZiYzNmMTY5MWFkODlkNWM0ODM4YTI2NTNmZGNhOTE2ZjZhZjJmZTAgbGVnYWN5LXRydW5rCis3OTA3NCAwYjFlNTIyODA3ZjJjN2IxZGQxNzFhNzA4ZmYxM2FjMzIxMTA5YjRmIHB5M2sKKzc5MDc1IDkxMDM4NTViODI2YmQ0Nzc3MjQ0OTA2NjY0MDczZDk4OTllMjQ1YWYgcHkzaworNzkwNzYgYjhiNDljODIzZmU0NDViZThkOGJlMjJhMzVhZjE3MzIwOThjY2I1ZiByZWxlYXNlMzEtbWFpbnQKKzc5MDc4IGEwYTY3YzJmYjdmZjZlNDAzOTkwZTBhOWIyMWExZTRkYTA4ODc1YTIgbGVnYWN5LXRydW5rCis3OTA3OSA4ZmExMjg0Y2UwMGU1OTAwMjdhNDRlNWUyZjQ2MDgxZGE0MTJkYjc1IHB5M2staml0Cis3OTA4MCBkZDEyZjc4OGE1NDRkZjY2ZjA5MTkwODdmNzFlNWQzNjc5OWQ5ZmU1IHB5M2sKKzc5MDgxIDQ3MWQwN2QyYTIzZjVlZjdlZDI4YmFhOTI0OTZlMzVmZjgwYzM4ODQgcHkzay1qaXQKKzc5MDgyIGEyNDFlNDE1ODg4MjNlNzExYmYxZDM5NzlmYTJmNDZiZmZkNWMwNzkgbGVnYWN5LXRydW5rCis3OTA4MyBkOTQ0MTE0MDMwOTNiYjBiYzdkODI5ZTY5ZTczNzU0MTg3ZDI0NmNkIHB5M2sKKzc5MDg0IDc3Zjg1M2ZlM2NmMjYxNDNkZWE1OTgyM2U4ZmZmYTUwNWQxNDZlZTUgbGVnYWN5LXRydW5rCis3OTA4NiA1MGUwNmI2YWI5NTY1ZGY2N2EyZWViMGYyYTczNWVhY2Q3NTE2OTNhIGxlZ2FjeS10cnVuaworNzkwODcgZDFjM2FiYzhlMGMyOWM2MGM3NmU2NzQ5YjgyZDQxOWY5NmJlODU3NCBweTNrCis3OTA4OCA3OTFiYTIwMWJhYTk3NzZiZmMyOGMwMDI0MjMxMDJlNTc2NTBhNTM4IHB5M2sKKzc5MDkyIDQyODVlYTMzYTVkZmU1MjFmYmMwMWY2YWExNzE0N2EwMTEwMGIwNWEgcHkzaworNzkwOTMgYjlmZmE5ZmQxMDFiNWI5YzQ5YzAzODJjNjUyNDE0YmI5ZTNhYThmMiBweTNrCis3OTA5NCA4YTI4YmU0NWMyNDIzY2JjMTA1MDE0ZTFiMzhjYTljNThkNjJmNjYyIHB5M2sKKzc5MDk1IDVmYmQ5YzYzODljNzUzYWUyYzEzMDM5NTlmMDkyYjZhYzU3OGIwZDkgcHkzaworNzkwOTYgNGIzNTZjMWIyNWY2NmQ5MDliYWMzMmMwZDE3MDNjODFjYjllNmU2MyBsZWdhY3ktdHJ1bmsKKzc5MDk3IDAwZGFhOGI3MzZjYzdmYzViODMxYWNmYmU4ZmNhZTlmZTQ0ZTZlNTUgcHkzaworNzkwOTggYjYzODdmNDNjZGRiZDljM2NkZGFiOGEwZmU0NzliNGNjZjAwMTQ5ZiBsZWdhY3ktdHJ1bmsKKzc5MDk5IDkxNDMxYjA1ODQ3OGVjMTg1ODY3Yzc1Yzg4MDZkMWU3MDVhYWMyMTggcHkzaworNzkxMDAgMDdjNzY2NGYyMWExODk5MTk2NTE0Yzg1MTNjMDM3YzBkNjI1Y2Y3NyBsZWdhY3ktdHJ1bmsKKzc5MTAxIDI1MTJjMmFkNWRlNzA1YmI2MTRhZGQyZmU2MDIyODA2MDU2YWJkNDIgbGVnYWN5LXRydW5rCis3OTEwMiA0NTg3ZTFmNzRlZDg1ZDEyOGU1MjhlNzdkMzFjNjNhNDgwYjVkMzc2IHB5M2sKKzc5MTAzIDJiMWIwMzc5NzE4YjQ5ZDc3MmFhZDE2MzVjN2E2NGI5NDhiMWQ3MGQgcHkzaworNzkxMDQgNjMwY2U2MmM5NDZlZjQ3YWM0NDJmZWZjYmQwYTY3M2YwZTUxMTFmNiBicmFuY2hfbGliZmZpLTNfMF8xMC13aW4KKzc5MTA1IDgzYTc2ODlmMWJiNWQzMzJhZGE5NTQzYmRhZjU1MGNmZTU0MDI2OGQgbGVnYWN5LXRydW5rCis3OTEwNiA5OTZhMzE5MjBkNDhjMDkwNzgxYTU3MmUwZTk0MWUwNjkzZWI5ODcxIGxlZ2FjeS10cnVuaworNzkxMDcgMThmOTRlMjNjYTgwYTY3NDdlNTlhZmQzMzA1ZTk1YjZkYzQ2MjcxMSBweTNrCis3OTEwOCAzZjkwNTM1OThjYTBkNTdiNzNmZTkxY2ZkNDAzNGZjMzhhMjEwMWVhIHB5M2sKKzc5MTA5IGE4ZTM5Nzc5ZmVkZjI0ZTdiNjA2MTQ4ZjU5MDhmNmYzNjA3NTM3MmQgcHkzaworNzkxMTAgMmQ2ODNiOGUzZjUwMmY4NjBkMTkwOWYzYzY0YTBiMWM5MzQ2OWZjZCBweTNrCis3OTExMSA0NzQxZjZkZDdjNjlhMGIyOTQxMTAzYmRjNTc2NjZhMTQ5OGIyNzY5IHB5M2sKKzc5MTEyIDIyNDU5MWJhNmExODRmOTRkYzIxZGVhYjVmZjc0NTViYTIxMDY1ZjMgcHkzaworNzkxMTMgMWUwZDE4ZTlmOGMxYmM4OWIyNjg3YzRhOWNkODIyY2I5YmI3N2YyYyBweTNrCis3OTExNCAwZjAwZGE2OTA0YTY1NzgxNTFhZWUyMDJhZTlhZmJkZWRiYTdkNWNlIHB5M2staml0Cis3OTExNSA5YWIwN2FiZTIzMGRiOThiMThkNDZmZTJhZTBhZTI4ZDdmOTRiNmE0IGJyYW5jaF9saWJmZmktM18wXzEwLXdpbgorNzkxMTYgZTQzMjMzZDgwMDY0ZjU4M2RjYmE4MWY1ZTk3NmYxMjEyNGMyOWY3YiBweTNrCis3OTExNyAwMmUyMTU3NmRhMDM3NzM5MGI0YmE5ZDBlYzUyZTgxYTI1ZDBiZDdlIHJlbGVhc2UzMS1tYWludAorNzkxMTggYzNjN2EzYmU0MGIzNTY2ZTMxYjEyOTVhZGI0YjNmMDJmMDE1NWVlNyBweTNrLWppdAorNzkxMTkgYWNjM2UzNTgzZmFjOTg4YTI0MmY5ODVkNTU0NWQ4NjFhM2QyZTBiYyBweTNrCis3OTEyMCA5ZmYxMDM1ZjYyMzY1ZWJmMGQ4ZWM1NjQ3MzMyZWZmMzU4NjhkYjQ1IHJlbGVhc2UzMS1tYWludAorNzkxMjEgM2QzOGMwMDMyY2VhYTk1ZmJkZmFhOTM5ZmE4MzAxMTUzNGNmMmQyNyByZWxlYXNlMzEtbWFpbnQKKzc5MTIyIGYwZWZhYWIwNDM4MTlhYjVmZjdkMDFmNmZiZDQwMzY2N2VjNWY4YzIgcmVsZWFzZTI2LW1haW50Cis3OTEyMyBmZTQxMTU2OTJmNzZjMTA2Yzg5YjZhMjMzY2E3NDdlY2VlMWYyZGYzIGxlZ2FjeS10cnVuaworNzkxMjQgOWFjYjdjMTU2MDc1ODE5N2VmNTJlOGQxZmI1OWVjMDhmZThkMWZkNiBweTNrCis3OTEyNSBhNWY3OTZmYjYxYTEwMjY0ZGFjMmZiMjJkZTZjNmQ4ZGM1MDk0MDAwIGxlZ2FjeS10cnVuaworNzkxMjYgNzA2OTU3ZDZlY2RmZjUwYTc4OWIzMGU4YjI5ODBhN2UwYjRhYzgyNSBweTNrCis3OTEyNyAxM2ZmODViMTBkYjBlNTczNDBlNzdjOTk0ZWFhOTlhZTdjNTgzZmUzIGxlZ2FjeS10cnVuaworNzkxMjggNzRiYjBmNjJiMzJlN2M3MmU2YjBmY2EwODhlNTMyYTFmYjQ4Njc3ZiBweTNrCis3OTEyOSAxMDljNGU2MmVjMjM1NzcyZjNkYWZhNGZjMjQyN2MyNDU3YjZkNzFjIHJlbGVhc2UyNi1tYWludAorNzkxMzAgNWE1NWEzMjYxMTY0NGRhOWNjYWQ0M2FhNjMzODE5ZmQ1MGIzNjI1MiByZWxlYXNlMjYtbWFpbnQKKzc5MTMxIDBlM2MxMGJjZGJhNDFkMjdiMjNkZmM5OWExYTk5NmI3YjE3MTJhNTggcmVsZWFzZTI2LW1haW50Cis3OTEzMiBhNjgyYjcwODdhY2JiM2Y5ZmU1MzhlZDg5NWI3ZGFmYmY4NmFhNjY4IGxlZ2FjeS10cnVuaworNzkxMzYgMTgwMzc0YmYyZDUyOWRmMzQ1NDQ4ZmJiOTA2ZTBkNmY5YWEwMDBiOCBweTNrCis3OTEzOCAzN2M5YWI3ZDQ4ZjFmNDc0ZmJhOWJmZjFlM2NkNjkxMGU4MDQ3ZjQyIGxlZ2FjeS10cnVuaworNzkxMzkgNjY1MWVmYjc1ZDllYTJhOWI2ZmY1N2YzYWNkYzhhZWJkODdlMmQ5ZCBsZWdhY3ktdHJ1bmsKKzc5MTQwIGUwNzZlNTU4MzRkOWYyMTEzMmFhZmU2OTZlNTE3NWZhM2EyOGM5NWIgcHkzaworNzkxNDEgZTUyM2JjMWMzMDM0NDQ1ZmM4YmY1N2Y5YzI5NTBjMTIxZDI1ODViYyBweTNrCis3OTE0MiBlODY3MjAwM2FlODRmZjEyYTU4ODRmYjEyZmNmYWZlOTU5YTcxNTc3IHJlbGVhc2UyNi1tYWludAorNzkxNDMgODVjYmU0NGIzOTI1ZjgzMmFkYTA3MDM5NmE5MTY2ZjYwNzAyMTE5OCBweTNrCis3OTE0NCA2MzU4NjU5MmEzYTA2OTU0ZTA5NjA4ZTU3N2Y3ZGFjYjdmOTE4NTM1IHB5M2sKKzc5MTQ1IGE2MTJjOGI2MWI0YWE4NGE3ZjhlZjM0MGJhOGE1M2NjNTg1NTIyMzQgcHkzaworNzkxNDYgZjc3Zjg1MDFkYTdmYWI5NDQ0OTc0YTFkZjUxOWZkNjg3OTdiYTBhYyByZWxlYXNlMzEtbWFpbnQKKzc5MTQ3IDk2MGVmYTMyN2M1ZDljMThkZjk5NTQzN2IwYWM1NTBjYjg5YzlmODUgcmVsZWFzZTMxLW1haW50Cis3OTE0OCA3YzkyNjgxNDY5ZjdiYjQ1NTMxYTMxZDU1ODk2ZGQxMzFjYmM3YzdiIHJlbGVhc2UzMS1tYWludAorNzkxNDkgMzUyZDYxYTY5ZjU5NWJhNDg5ZTllN2UwYjRlYThkNjQyN2FhMjM5NyBweTNrCis3OTE1MCBlZGFkOTQ4YjRkNjZmYWIzMWIwMjM0YTQxODEyYzM5NDRlMDZiMGY5IHB5M2sKKzc5MTUxIDU1NGUwZjQzNWQwOGFiYjcwNDE1ZmFiZTc1ZTE4MjY4ZTlhNjFmZGMgcHkzaworNzkxNTIgNjIyM2MzZmQ2MWYwOWQ3MzBmYjgwYjA2ZDM1NmY3ZTgxNDMwOWY0YyBweTNrCis3OTE1MyA4YTkyMGE4OTA5YTA4YmUzOTBjNDI4MjcwNTg5YzJhZWU1MjY0YmFlIHB5M2sKKzc5MTU0IGFlOWUxMzc0MTFmMWYzOGYyNzI0NTU0ZTE5ZjVhYmI4MjcyNjI3ZWUgcHkzaworNzkxNTUgZDg3MDBiNGYxYjlmNTE1MjUwNmM2ZGFlN2EzNTE1NWJmOTRhZmJlOCBweTNrCis3OTE1NiA0ZjcxOWJlN2M4NzU4NWY1YjE1NzgwM2ZkYjAwMDRkMGVmMGRlYzU1IGxlZ2FjeS10cnVuaworNzkxNTcgZTYxOTA0N2EyZjM2NjA4ZWE5NmZlOTQzMjVlZTIyZTFmODJiMmNkZiBweTNrCis3OTE1OCBhOWE4MDdiN2NkNDM5ZmM5N2U0NDA2MGUyZjQ3ZjgxMDM0MzExMmY5IHB5M2sKKzc5MTU5IDBlMDYzMmM1NDNlNDE0NGYyMmYzMWQ1YjkwOGZjZGJhZTk0ZWNmMzMgbGVnYWN5LXRydW5rCis3OTE2MCA3MTFkNTE3MzdlZTZiZTlmNmVjYWY0YWZiNmIwNTkyZTVmNWM3NDAxIGxlZ2FjeS10cnVuaworNzkxNjEgZGJjNTgwNGU4Mjg1ODVjNDIxMDM0MzQ4OWViZjgyMWYyOGQxYTk3MiBweTNrCis3OTE2MiA2YjZmZmQ1MjZlM2JlNGVkOTk5MjFjY2I5NGQ2ZTNjMDhjYTg3YjYwIHJlbGVhc2UyNi1tYWludAorNzkxNjMgYTdiODlmMmFjMWRhNmE1ZTI0NWU3OTNlMGFjYjdhZTk4YTg4ODZiMCBsZWdhY3ktdHJ1bmsKKzc5MTY0IGRjYjlmNDI3MDQ0MWFmN2VkYjBiYWRkZjZkNzU5MWIwOGQ1OGY3OWMgbGVnYWN5LXRydW5rCis3OTE2NSBjOGM4NDAxNjI4MDQ5Zjk3ZDhhNmRkZmY0NmJkMzAwM2Y4MmY4MDZhIGxlZ2FjeS10cnVuaworNzkxNjYgN2RkY2Y3ZDI4MzZhYWMzMmE1MzNmMTA2MzFhZTgxYTJmNzhjZTlhOSBweTNrCis3OTE2NyAzNTY2MzY2Yjg5Y2YxNTk5NDMwNWU5ZDE3Njc5NzAzNjJiNTlkZDkxIHJlbGVhc2UzMS1tYWludAorNzkxNjggNGJkMWFjMTEzMmNkZmQ1MDU5Zjc4ZWZmZDQ1MzlkNzU0YTgyYjNlYSBsZWdhY3ktdHJ1bmsKKzc5MTY5IGYwNzY2Y2ZmN2Y1OTY4ZWFiMzhiODk4MDQyZWU4OTc4MmIyZDlhMGYgbGVnYWN5LXRydW5rCis3OTE3MCBmODU3ZDRlZDA3NzQ3NTkzNjg3ZGMzNjVjZDk5ZThmN2U5YmJhMWNlIHB5M2sKKzc5MTcxIDEwYmQxZDBmNjJkZTJkYzg4NTk2NjMxYWNjOWM0ZmY2YmYyMzZmNjkgcHkzaworNzkxNzIgZWE0ZTY4OTI4ZmY1NmI2ZjU0MzkyY2JhMGUzYzQ1NjRjYWZkNDE3YyBsZWdhY3ktdHJ1bmsKKzc5MTczIDFhZTQ3NGM5YzM0ZTZiYzgxNWZiNzc2NWFhYTM2ZjVjNjYwM2Y1OGIgbGVnYWN5LXRydW5rCis3OTE3NCAyYzllMGFiM2YwYzdlZmQ5MWZjZmMzN2MyMDllNzk0M2I0MzQwNjExIHJlbGVhc2UyNi1tYWludAorNzkxNzUgNmExMjU0ZTIwYzg5NjdiZTkzOGU5ZWE4YjkzOGUyYjkzMjk0MmE5NiBweTNrCis3OTE3NiBjYjBlMzcyNmQ5MWRhYjA1ZjQ1ZDEzMDMyNzZmNTQ5YjU0YWM4NzBkIGxlZ2FjeS10cnVuaworNzkxNzcgMzFmMGQ5ZmNkYjQ1YzE3ZTdkMGJhNjk3MTZmYzdjNzFjNjg4OGNmMCBweTNrCis3OTE3OCBhYzk2MmJjNDFlODVmYzkzM2JmNzZiYTc2MTY3Y2U5MjBmYjUwNTlkIGxlZ2FjeS10cnVuaworNzkxNzkgYmM1ZTBkMmUxNzlkMDA4NmViMWMxNjlkMjQxNDQxODNmMjlhNjExMyBsZWdhY3ktdHJ1bmsKKzc5MTgwIDQ1NWVmNzAxNWJhODAyZGEwOGVlNzk2MTdiNTZkMTA5YTAyZGQ0NTMgcHkzaworNzkxODEgOTUwYzEwMzBmODE2NDA3ZjFiNGIwMzE0MzA4Y2Q3NDAzNTkxODFiYiBsZWdhY3ktdHJ1bmsKKzc5MTgyIDU3NWVjNzczZGRhNDBjZjg4M2I2ZjJlZmYxYWM3ZWU3MzlmMTAxOTAgcHkzaworNzkxODMgMjg4NmY2YWE1ZWY2MTlhNGJkMTY1ZTdhMzM4NTdiNjk0OGIwNzgyYiBweTNrCis3OTE4NCA0MTQwNDRkYmYzNDM5NDMxNmE0MzA4ZjBlMGM1NTU0ZjJkYzVlMWE4IGxlZ2FjeS10cnVuaworNzkxODUgZDRmYTJlYWFiNWZhOGE1NmMwM2IzZjAyZTRjZDIxNzVmODllNTE5YSBsZWdhY3ktdHJ1bmsKKzc5MTg2IGMxMWYxY2VjYmViMzVhMTg2ZTI2ZTZlYmJiNWEzZmNlNjMwMTQ2ZDkgcHkzaworNzkxODcgYzNiOWMzMzMzMDFjN2I3ZjZmNTMwM2M2OGM5OTUzZTIwYzkxZWVlMSBsZWdhY3ktdHJ1bmsKKzc5MTg4IGU4MjNlMjdjMjI1ZWFhMDYxNzM5YTYyMDdiMTEzOWNiMzE5OTgyODYgbGVnYWN5LXRydW5rCis3OTE4OSBkZDY4ZTA0ZWUyZTg2MjM0OTY4NjY3MDQ5YWExNTA3MGRmMjM3ODQzIGxlZ2FjeS10cnVuaworNzkxOTAgNjIwOTEyZjgzMDgyNmU5NWVjMDAwOGJkNDg2OGUzOGEyNjhlOTQ5NyByZWxlYXNlMjYtbWFpbnQKKzc5MTkxIDk4ZTQxNjYwNTc0YzNkZWQzYWY2MGE4ZDdlYmMzOWEwNzMwM2NmZjYgbGVnYWN5LXRydW5rCis3OTE5MiBkZWZhYWQyMDE3YjVjYzA4OWU3NGZiOGY0YjkxMTE4Y2UxYTk1OTRiIGxlZ2FjeS10cnVuaworNzkxOTMgZmNlZjRkYTMxZTI0NWJkMDMwNTIwM2ZjMDE2MGFkMDZmZmEzOTdmZiBweTNrCis3OTE5NCAyMmM2YTI3NjRjYWI1ZmY4MGEyNzlmNDZlY2M2ODA4OGY5YzM3Mzg4IGxlZ2FjeS10cnVuaworNzkxOTUgNjNmM2E5NGY1ZTlkNTA1ODVmNDA5OTA2YjQ0MmMyNjdmOTkyNjg2YSBsZWdhY3ktdHJ1bmsKKzc5MTk2IDQ0ZmZiODA5MmVkNjI5MDMzMGM1NDBlYzE4MjMxMDdhMjhlZjY0NGMgcHkzaworNzkxOTcgYjI1ZDEwMjRmMzk0NjhlNDM5Yjk0YzZmNzg4NzA3ZWU0ODBhYmJjMCByZWxlYXNlMjYtbWFpbnQKKzc5MTk4IGM2ZjZiZTUzMTdhZDM2MTk2YmEwZjEwZDhlMjJlYWY5ZDY3ZWU1NWIgcmVsZWFzZTI2LW1haW50Cis3OTE5OSA4ZTQxZjE3OTRkNDQ5NWI4Y2IyMjQ2ZTU4ZjgwM2NiMGU0YWIwZWI5IHJlbGVhc2UyNi1tYWludAorNzkyMDAgMGZiNmQzNDIwMTZkZDVjOGEyNmJkZjI4ZGI4N2NmNTQzYzU4NmViZSByZWxlYXNlMjYtbWFpbnQKKzc5MjAxIDhmMTIwMmNhODg4ZTk1YmIyNWY5ZGY3NGIxNWJkYzJiYmJkNTcyZjkgcmVsZWFzZTI2LW1haW50Cis3OTIwMiAxMmUyMDc1ZGJiZTBlMWYzNWMwMDc4ZWFkNzNmNTljYzg5OGJjNjRlIHJlbGVhc2UyNi1tYWludAorNzkyMDMgNTgxMjYzYWY1ODIwZmQxZDY0YWI3ZTJiNDUxNzQ1MTY1ODM3MDc0MiByZWxlYXNlMjYtbWFpbnQKKzc5MjA0IDhkOGM5YmYyYTA0ZTI3ZjU2YzZhM2FlNjlhMTllNGQ0NDk4OWJjOWYgcmVsZWFzZTI2LW1haW50Cis3OTIwNSA2NDNiZjlmZjIyOGZlNDgwZDgwY2IyMmEyOTIwZjViYTE0YTI3MjZhIGxlZ2FjeS10cnVuaworNzkyMDYgYjllMjdkZTg1ZTRiYzg2ODI4OTlkMDhmM2I0ZjIxM2E2NzFkNTJhNyByZWxlYXNlMjYtbWFpbnQKKzc5MjA3IGUwNjJkZDM1NzE0MTkyYTMxOGU5YzUyMTBlMzk1N2FjYzM1OGYyZmUgbGVnYWN5LXRydW5rCis3OTIwOCAwOWFhODcyZjc5ZmM1ZjNmOWU3OGI4NmUyYTdhNmMwYTUxZmZhN2VkIGxlZ2FjeS10cnVuaworNzkyMDkgZWM4NGZiY2RmN2NiYjUxOTQxNGM0MzM0M2QwNjQxYzE1ZjM4MjkyMyBweTNrCis3OTIxMCA5M2Y3MjBlOTUxOGFkYmRkYTY4MGZiM2U1ZGY5OTU3Nzk3NjE0ZGQ5IHJlbGVhc2UyNi1tYWludAorNzkyMTEgZWRjOTJiY2U0ZDZlMmQ5M2FiZjQ1MWJiOTQ1NmNlOWYzYmViNDhmZiByZWxlYXNlMjYtbWFpbnQKKzc5MjEyIGNmNThiNzMzMjJmOGM0YjBiYzQyNjUxYTUwOTA2OWFmYTA3Y2ZhZDMgbGVnYWN5LXRydW5rCis3OTIxMyAzOGU5YjlkYTAxNjQyZWJiNDY4YmJjZTAyM2NiMjRmZDhhNGYyY2U3IHJlbGVhc2UyNi1tYWludAorNzkyMTQgNzU5ODUxN2IxMjE4MDdmYWIwNTAwNDU3NTllNWZlNzBjMDg5NDI3NiByZWxlYXNlMjYtbWFpbnQKKzc5MjE1IDY0YTAyYjEzM2U3MjNhOTQ2Njk4NDA4Mzc1NDJlMjY2OTI1MzQ2NmIgcmVsZWFzZTMxLW1haW50Cis3OTIxNiA5ZWFiYmE2ZGVkMDk2MmIxYThlMWU5NTMyNDIxZDQzNmE1YmYyMDVlIHJlbGVhc2UyNi1tYWludAorNzkyMTcgNDVkMjI4NGNjMDYzZGU1YzkzZGQ0MzNiZDVjMjc1OTJlMzcxODdmZiByZWxlYXNlMjYtbWFpbnQKKzc5MjE4IDc2NzgxMTM4NWZhNmZkZjc4NmQ2ZWZkZmFmYTc1ZmIyZGQ3NjQxMDIgbGVnYWN5LXRydW5rCis3OTIxOSBkYjk2MWJhMzdjZmU0NDQ2OWM2OGU1MjJmZmZiZTk1MWVmYTZiMjNjIGxlZ2FjeS10cnVuaworNzkyMjAgZWYxZjM4OGY0ODNmYjg1MDAxNmE2MDAzZGNmMTBhYWI3ZmM5ZTA3YyByZWxlYXNlMjYtbWFpbnQKKzc5MjIxIGM2OTQ2MThkYWI1NDNjMmY4NzBjMWEyNjAxNjFlMWQxNzAyMGUwYTAgcHkzaworNzkyMjIgYzkyY2E4YmExZDk3NTBmNjU5NzA3MmE4ZjU5ZDFhYmU2YjdjZDY3MiByZWxlYXNlMzEtbWFpbnQKKzc5MjIzIGQxMzk4ZmYwMWEwNzRiNGMwMTk0Nzg3NmE2NmRjMDk4ZjI4NDNmZmUgcmVsZWFzZTI2LW1haW50Cis3OTIyNCBhYzIzMTRiNWY5NjI4ODI1NTY5MjZmNWU5MTc5ZDcxYjE2ZTYwNTE0IHJlbGVhc2UyNi1tYWludAorNzkyMjUgNTNkYmQ4OTZjNmM2OTJmNDI0YzE2NTIyZjBhYjk5ODQyNDUzMzQyNyByZWxlYXNlMjYtbWFpbnQKKzc5MjI2IDFiZjQ4YTVkZGVhZDUzNjMzNTQxOWFlMTVmYmNkMmZkOGYxNmJlOWYgbGVnYWN5LXRydW5rCis3OTIyNyBmOTZjODI5M2RkN2Y4OGQ4N2JlODIzZjA0Mzk2ZTMyNmYzYjU3OWFmIHJlbGVhc2UyNi1tYWludAorNzkyMjggZGI5NGFlZGViMGUwNGFhMTFiZTRmMWQ1NjE3ZDE2MTFmOGJmZTU3NiBsZWdhY3ktdHJ1bmsKKzc5MjI5IDlmNjE4NzUwMDY0ZWVjZGFlZDg2YTU4ZDlkZmUxZTNhOGFhNzVkOTUgcmVsZWFzZTI2LW1haW50Cis3OTIzMCAwZDFjZGQxNGM5ZmExOTYxOGJlYTVmNmNkYWQyNzk5YWE5Nzk4ZmIzIGxlZ2FjeS10cnVuaworNzkyMzEgYTBiNmYyODcxMWU1ZWU4M2U0YWEzYTNhNTZkZTVlNjc1NTk0YWM2ZCByZWxlYXNlMjYtbWFpbnQKKzc5MjMyIDBjMzQ0ODI3ZTA0OGYyNjkzNzJmZTYyM2IwZDQ1ZTliZDk2NTEyNTYgbGVnYWN5LXRydW5rCis3OTIzMyBjN2E2MTU0NDYwZmJkYTllZGI3ZTlhNzcwODNjMDg1OWY2MWEyOWNlIGxlZ2FjeS10cnVuaworNzkyMzQgOTJmMjU2MTc0MTU0MWE0MTgxYjBjZDBjYmEzYzRhZjgyYTcyMTFiMCByZWxlYXNlMzEtbWFpbnQKKzc5MjM1IDY1MWE4ZTVjNDYwZmE5ZDIwYjgzZGVhMzBlNDFhOGQzZWIzNjMxMTEgbGVnYWN5LXRydW5rCis3OTIzNiBjMDczZjNjMzI3NmVmM2RmNGZhYWI4YmM5M2NmYjg5MWZmYTliYzAyIHJlbGVhc2UzMS1tYWludAorNzkyMzcgZGJhZDFjMDY2OGM5ZjhjZmQ4MzRjOGYzOTFiMmI2NjJmMmQ5Mzk0OSBsZWdhY3ktdHJ1bmsKKzc5MjM4IDdlM2I0OTA4NzdjZWNkYmE2ODc4NDU4YjZiZTQwNzJhYWQ2YWVkZTAgcmVsZWFzZTMxLW1haW50Cis3OTIzOSBlYzZhOTk1ZWNmYmY4MjRiNzJiZjYxYTFlZDFlY2U5NDRjNTA2MTVhIHB5M2sKKzc5MjQwIDk3MTRmOGE3N2IxNjBmYjYxZWEzNjlkZDUwZjI0M2M3ZTNkNmE3ZDkgcmVsZWFzZTMxLW1haW50Cis3OTI0MSBiYWM4YTA0MjcwZmNmMTYzYWFiMjA0YzkyNGRlODQzNjgyNzdjOGI3IHJlbGVhc2UzMS1tYWludAorNzkyNDIgNDhmNDBhMTc4NWNhYWYyZjNhZWE0N2U4NWRhNTQ3YzFmYmRiODk1NiBweTNrCis3OTI0MyA0MWIyMjUwNjdmNGQxMjg3NjUzMDIwY2RmY2EzYWI1ZmIyYTU0YTA3IHB5M2sKKzc5MjQ0IGQwYmRkMDk4NTYzNzQ4NjZhZGU1NTBkOGU5NDk0ODVjNTZjMTMxY2YgcHkzaworNzkyNDUgMzgzM2NmMzNjYTYxNzQ5NzEyNWVhOWVmMmY2MTZjOWNhNTY4ZDIwOCBweTNrCis3OTI0NiA0MjkzYzMzNjY4ZGY3ZDYyNmUzNGY2YjA4ODYwYzM4ZmRjZmI1MDFiIHJlbGVhc2UzMS1tYWludAorNzkyNDcgYzJkMmUyNmJjZjdmZDI1ZmU5MWE0M2YxY2I4NzgzNDI1YmYwMDAyYSByZWxlYXNlMzEtbWFpbnQKKzc5MjQ4IDY3ZjNmN2U1MzY2YmM3ZTNiOWMxNTZiMWZhN2QzOWE0NzAxNDBiODYgcmVsZWFzZTI2LW1haW50Cis3OTI0OSBhMzY2ZDYzMWE2MjlhNGFjYTYwN2ZmNDNhMWE5NTRkNmYzYWNjYmMyIHJlbGVhc2UzMS1tYWludAorNzkyNTAgZTE2YTI3YjU1MmE2ZTM0NGU1YzQwMzRkMzE4OTZiZDdiZGNlZTA3MyByZWxlYXNlMzEtbWFpbnQKKzc5MjUxIGZiYWNmOTcyZmE0NGU2OTU2YTk0ZWZhNWNhMmUyMzJlNTdmNDEwYmEgcHkzaworNzkyNTIgN2U2ZDcxNTFmZGU4NzRjYTZkMWIzYzAzMTJlZjg5Y2U1MGU2MzRmOSBweTNrCis3OTI1MyAyZDJmMjM4NzJkOTBhMTAwMzBjY2JkZTVmZDBlYmQwZmRjYzE3MWJmIHB5M2sKKzc5MjU1IGM1M2Y2YTNkMmQzYjBiZTQxN2MzYTU1ZTllNzM5MTE0YWFiM2M4NjcgcHkzaworNzkyNTYgMTNhNDQ4MDEyYTg0ZTdkMzFlMjgxYWRlMGY5NTBjNWNjZTEyZjlkZSBweTNrCis3OTI1NyA4MjZkMDU0NjkwY2I4ZGE2YTU4M2M4YmFkNTU1ZWI3N2E0OWE3NDA5IHB5M2sKKzc5MjU4IGQ5YjhmMjczYWI4ZGE2ZDE2MGM4MjlmOGE4M2EwZDAyMDZhMTJlZWMgcHkzaworNzkyNTkgOTAyMTdhODY2NDJkMDdiYWUwMjY1OWFiM2QyMTdhYmU5OTZjMzIzZSBweTNrCis3OTI2MCA3ZjgxNmY2YjVkMGIwOTQwNzQxNzEwYzZhMGVkYmYzZTRhMTg5NTQxIHB5M2sKKzc5MjYxIDVjMDkyZDRiNDk5Y2YyNzhjZmVkMzU2NmNhZjQ5NThmZmM1NjYwZDUgcmVsZWFzZTMxLW1haW50Cis3OTI2MiA4MWRjMDIyOTg2MTRiYTE2ZDUyMWViZmYxYjUyZWVmNDU5ODdmZjJlIHB5M2sKKzc5MjYzIDI4NThjYWU1NDBlNDExYjgyMDE3NGI5OTQ4OThmZGExNWUxMjU3OTAgbGVnYWN5LXRydW5rCis3OTI2NCBmOTA5NzM5NjJlYWYxYzQxYzQ0ZWM0YTc3ZWZmNGRkNWMwNTUyMzk5IHB5M2sKKzc5MjY1IDg0Y2MxM2ExNDRmZmJkNTIyOGE1MDYwNjYxZDJhMWFmYWQ5Zjk4NTUgbGVnYWN5LXRydW5rCis3OTI2NiBiNGQ4ZmE0ZDAwNDljM2FkNjAzYzdmNjE0ODg4ODM2N2E4Mzk4ZjJkIGxlZ2FjeS10cnVuaworNzkyNjcgNjU3ZDAyYTUwM2ZhNWQ1NjNmMDZhMWE4NjRhYzkxYWFmMDhkNzczNyBweTNrCis3OTI2OCBlYjBmZjcxM2E1ZTljMTRlYzg5N2UwYjZkYWUyNzFjMTZiNDM3YmQ3IGxlZ2FjeS10cnVuaworNzkyNjkgMzdjMGUyOGQxYWQ0ZWZlMzEwMDA0ZDNlOWMzZDBhYmQxNDJkMzRmYiBweTNrCis3OTI3MCAwMTYxOTY0NjQ5YzM4YTY0ZGE2MDc5MjdlZjM4ZTMwMGUyZmZhYTQyIGxlZ2FjeS10cnVuaworNzkyNzEgMjI5ZjI1MmJjZTc3MzZlNjY0N2MzODY1NjIzZTU2MDk4ODE2MzRjZSBweTNrCis3OTI3MiAxMDZiZWUzZjFmZTUxNjM2ZTExYTZjNjA5M2U4NWYyZDJlN2ZjN2ZhIHJlbGVhc2UzMS1tYWludAorNzkyNzMgOGMzYjEyMGYyNTk2MmRlYzBhNmQ2ZTkzYTExNDZjMTYxMjlmMTk5NCBweTNrCis3OTI3NCAzZGM2ODgyYTcyN2Q3M2E2NmQ5ZTRkNjJlYmE2YmI4NzcwZDJiNjc4IGxlZ2FjeS10cnVuaworNzkyNzUgNzY5ODFlZTUwYjQ4MmZlYjM3ZGM4M2Y5Njk4NTMwNzAyMjFiMTUzMSBweTNrCis3OTI3NiAyZDYxNzg0ODBjYzcxMjZhN2VjYzRhMjY3YjdjNjJhM2U0ZDMxNTlmIHB5M2sKKzc5Mjc3IDM2ZTlmMzhlOGEzYzJlZWYyZWYyNmFjYzNlNDU3YjIwY2U4NWE4MGUgcmVsZWFzZTMxLW1haW50Cis3OTI3OCA1MmNmN2U2NWRhZDE0YmFiMjYxYzgwMDgzOTNlOWUxZTQ4MDJkZGIyIGxlZ2FjeS10cnVuaworNzkyNzkgNWIzYTYwMWVkMjA1YjViNDAzZmMzNTIxODA5OWEzODFkZGNhZjJlMCBsZWdhY3ktdHJ1bmsKKzc5MjgwIDJiNjFlZWQyOGZhZTRlOTFkMGI5YTc5NjVlNjE4MTYyNzQxYjQzZGQgbGVnYWN5LXRydW5rCis3OTI4MSA3YWQ1NjIzZjQxMzIxZGI0NWI1NTM3ZDUwMmZiYTI0MjIzNmRiNjhiIHB5M2sKKzc5MjgyIDg0NDA1YzIyZTRjN2ZmZDk4OTE1NWQ4ZjY4ZmIwMzFlZWJiNTNjYTMgcmVsZWFzZTMxLW1haW50Cis3OTI4MyA2MTUxZDA5Y2UwMzk0OTMxMTNkY2Y5ZWQxZWMwOTEwZjk3Y2U4ZGRiIHJlbGVhc2UyNi1tYWludAorNzkyODQgMTVkZTUzOTA3MDdkYTQ0Njk0MDEzMTY1Nzk0YmY5M2RmYWFiNzU0MiBsZWdhY3ktdHJ1bmsKKzc5Mjg1IDk2YTI0MWQ0YTBhYjE3MTI2MTk1MWY0MDczOGVmMTUzODVmZmMwOGQgbGVnYWN5LXRydW5rCis3OTI4NiBlMmE5NjkzYjU1NWVkNjg1MTJjNTc0NWYzZmJkZDZhZWYxODlkMjdiIGxlZ2FjeS10cnVuaworNzkyODcgNWY1ZDQ3MzZkZTc0YWQ2ZGZlMjFlNmExMjQ2NTBlMmQ5MGQ4MmJmYiBweTNrCis3OTI4OCAyMjRiNzBkM2QxZDQ0ZTU2MDBhODA1MmU4NjAzMGU0NTAxMDYyMGZhIGxlZ2FjeS10cnVuaworNzkyODkgYzkzNzUyMWVkNzA5MmE4MWY3MmRmMmU4ZWZjZTJiNGY0NDAzNzQyOCBweTNrCis3OTI5MCA5ZmJlMjM3MGRjMDIxN2E4ZDM4YzA5OTcyZjY5Yjc3ZTc0Zjk4NDY3IHJlbGVhc2UzMS1tYWludAorNzkyOTEgN2Y0MzVjMzg1ZGEyNWM0ZjVjYzg5YzMzYjE3NDhmYjNiNWJkZWZiZCByZWxlYXNlMjYtbWFpbnQKKzc5MjkyIDAxYjU3NTE1ZjE5NTY4NDA3YmE0MmVkODIxMmJlZGM5ZWE1M2EyNjkgbGVnYWN5LXRydW5rCis3OTI5MyA4MDZhOGNhZmM5OTc3YWY3ZjViNjc2M2M1ZWVjMzI4YTQxMWM4ZTM4IGxlZ2FjeS10cnVuaworNzkyOTQgNmRmNzk5YTJjMjRlNGEyNDZlMmY4NzM2ZWEzZDIyYTQ1YmQ4MWM4YyBsZWdhY3ktdHJ1bmsKKzc5Mjk1IGNmYzU3NzAyYWY3ZmQ5NWI5YTI1OWM2M2M3NDUxNWUxM2I1MjNhZjEgbGVnYWN5LXRydW5rCis3OTI5NiA3NjdiMDgzMTY1OWUwMjdhNjljNjY0NWE1MTUwYjAzODViZjExYjFmIGxlZ2FjeS10cnVuaworNzkyOTcgZjAwMTQ1NTQxNjZmOTNjM2JkNzY5NzczMGFmZDJkNTg5ZGQ2ODZlNiBsZWdhY3ktdHJ1bmsKKzc5Mjk4IGI3ODcyYjBlOGFiMjQxZTM3OWRkNDk1Nzc2NjhmZTE2MDMxOGFlZjYgcHkzaworNzkyOTkgNzNjYWEzNjFmOWNkZTE0YmMyYTgxMTUzOGM5NjY2NTczYjNjYzQyNCBsZWdhY3ktdHJ1bmsKKzc5MzAwIGUzZmRmZGIxYThmZjhmYzZhZDYyOGYwZTk4NDJjODg5YTk2NjlkYmMgcmVsZWFzZTI2LW1haW50Cis3OTMwMSAyZTBkNThhZGFkYmUwZWI0MzhhNmQ1YjFiZjExMGYwZmQ3Y2YwNDBlIHB5M2sKKzc5MzAyIDFkYzE4NDEyYTdlZTVmMDM3ZGQxYjBiZWZlNTU0YTRiYTE3Y2E5ZGUgcmVsZWFzZTMxLW1haW50Cis3OTMwMyAzYzRkZmU4NmVjMmI2NDgyNGFlYmIxNWRkNzI0Y2Y3M2ZmYTBkMjBiIHB5M2staml0Cis3OTMwNiAwYTEyM2NkZWQyYzk3M2I3YjFmYTlhMWZmOGY1MmJhZDMxZTZhMjc3IGxlZ2FjeS10cnVuaworNzkzMDcgODBiZWVjOGZiNzQwM2YyMDY5YjIwY2EyMDliNjM0Njk2ZTRiNTRkNCBsZWdhY3ktdHJ1bmsKKzc5MzA4IDViNjc5YzI0OWUzYzFjZDY3MGViZDU1MGU3NzExYTU4NjkxNzdhODEgcmVsZWFzZTI2LW1haW50Cis3OTMxMCA0NzdkMzZlNWQ5MTM5NWUxM2Q0MzBiNjhkODNlODU0NzgwN2EwZmYxIGxlZ2FjeS10cnVuaworNzkzMTEgOGYwMTZhODAxNjQyZjlmOTNlODJjY2FlNzA3ZTNiYmNjYTYzNWVjNiBsZWdhY3ktdHJ1bmsKKzc5MzEyIGUwMGRkMDcwNTZhYWYzOTcyZGFjN2NmMmJkZjI4NmQwMmU3ZTdlYzEgcmVsZWFzZTI2LW1haW50Cis3OTMxNCAwZjQyZjM0YzE2ZTgyYjEwYzMzM2NkZGIyZTgwNjc3OTg1ZmM2MzcwIGxlZ2FjeS10cnVuaworNzkzMTUgNjVmZjUyNmUwNWViYmQ1NTI0ZmRhNjlhZDQyYmEwMjc2ZTRiMGNjYiBweTNrCis3OTMxNiBjZDk4NDhjZjE4NDdhZGIxY2NiOTg1MTJjNTYyMDhmZjkwZjg0M2M3IGxlZ2FjeS10cnVuaworNzkzMTcgMzI0NGVmYjZkODhmODhhYWYxYmRmNmQxNmVlOGNiMjRlZWQ3YzkxMSBweTNrCis3OTMxOCA1NDM1ODgwNzEzYTc4M2ZhNWE2NmEzZjEyZTRhZDg4N2U0ZWJmMTY3IHJlbGVhc2UzMS1tYWludAorNzkzMTkgMTc4MTY5NTg4NmRjZTg4N2FhNzBkNzQyZTc0Y2ExOTRjMzNhM2Y1YiBweTNrCis3OTMyMCA2ODRjZDczODE1MzVhNWEyMDkxYThjNDY5NWRkMjA3YjJjNWJkNzBiIGxlZ2FjeS10cnVuaworNzkzMjEgOGU5OWI2MDAwZjBkZmUzM2QxZDllNTIzMmI4YWJkOWE5ZjIyN2EyNiBweTNrCis3OTMyMiBhOWRiNTFjZjFmYmM0ZGVkZDM2ZmFkZjk2NTcyZGQzMWQ2YTg4ODY0IHJlbGVhc2UyNi1tYWludAorNzkzMjMgZjQyOGY2NmY3ZTliYjY2ZDA5MDgzY2NlY2I3MWYwNzc5OGE5OTEwMCByZWxlYXNlMzEtbWFpbnQKKzc5MzI1IDEyZWU0NjQzNWQwMTcxZmEwOTBiODc1MWYwOTczYTJkMmY3ZDNlM2YgbGVnYWN5LXRydW5rCis3OTMyNiBmYjNkYTU2ZDU0OGYwZDI4ODJhMzA3ZDQ0M2Y4ZTE0N2JmZDcwYTFjIHJlbGVhc2UyNi1tYWludAorNzkzMjcgOTJjOTMyNDYyNWI2YTVhMDAxYzBjODYzZTZhODI5ZjM3ODJkZjIyMiBweTNrCis3OTMyOCA4ZTc2ZTQ2YzE5OTQ3NTc4OTA2ZDdmNDRmNjc0MTFhN2Y5NGQ4OTM5IHJlbGVhc2UzMS1tYWludAorNzkzMjkgYjAxZWZmNGVmZmQ3ZWZhNDI1ODNkNGUwMDNlMzNmODJhOWVmZThlMiBsZWdhY3ktdHJ1bmsKKzc5MzMwIGZhNWUyOTljZTA5MWM2NzZmMGNkMmFhNzZhNDk0NGFmZjYwZTcwMzMgcmVsZWFzZTI2LW1haW50Cis3OTMzMSBhNzAyNjQ4YzhmNDEwNDkzYzJhZjQwNmQwMTEzOWIyZTJkYzFiZGY4IHJlbGVhc2UyNi1tYWludAorNzkzMzIgM2JhMjM3YTMyNmMyN2I5Y2JlY2MzMDRkZmZjNTQ3NTgzMzBlYmQ2MSByZWxlYXNlMzEtbWFpbnQKKzc5MzMzIDU2ZGQ1ZDUwNzBhNWE0NTQxYzdlNTllYWRkMmZhNWFkYjM4OTgxYWMgcHkzaworNzkzMzQgYjBlYjlmNmYyZDEwYjFmMzI5NWI2OGUzNDQxZWE2YmMzMjA0MmE3ZCBsZWdhY3ktdHJ1bmsKKzc5MzM1IGYyMGU4YjkxZjZlOGRhOTkyYjFmMWE3N2NmNTc0M2U3NDc0ZTczYjkgcmVsZWFzZTMxLW1haW50Cis3OTMzNiAxMDI2MjNkNjg0M2ZjNDkxZDFkZmVlMTZmMjdmMTk5MWY3ZTg5MTkyIHJlbGVhc2UyNi1tYWludAorNzkzMzcgNmUxZGFkODUzMDA3YTJhMzRlYmJmMmVmNTBlMjNmODc2YWQxZDI0MiByZWxlYXNlMjYtbWFpbnQKKzc5MzM4IDY2NTk1ZDQ4NGVhOGQ1ZmM3NzY0MDYxZDgyODNmMDVhMTAwMzdmYjggcmVsZWFzZTI2LW1haW50Cis3OTMzOSA0OTg2Y2YwYTkxYjhlOWNiY2Y0ZmVlNmI0OTUyNzFjZGRkMDNhYzVhIHJlbGVhc2UyNi1tYWludAorNzkzNDAgZTliOTU4ZTgzOTFiZDJlMzQ4NGE4YWNiMTcxYTliNmIyNDUwMTM0NCByZWxlYXNlMjYtbWFpbnQKKzc5MzQxIDE1NTZlNjk3YjJkNzBiMWEzNjA0ZTI2MmIxMzgxZDliMmY5OTM4ZDQgcmVsZWFzZTI2LW1haW50Cis3OTM0MiBmODRmODM5NjNhNzhhZDY0MzQzODZiMTY5NWJjNDRiNTEzNDk5OTk5IHJlbGVhc2UyNi1tYWludAorNzkzNDMgMjdmOTcyNDQ2OThlZGEwNjA5MjUzOTRjZWVlMTNjNTVkM2RhNTdhZSByZWxlYXNlMjYtbWFpbnQKKzc5MzQ0IGIyMTRjYThlYjZiZDBhYmU1ZjExZTAzZTVmNWY1ZTE1NGU4NjJiNjkgbGVnYWN5LXRydW5rCis3OTM0NSA1MmQ4NDU4MzFhZTg2NGUwMGQ1MmQyYjkwNWVlMjUzN2IwZmYxNzI4IHJlbGVhc2UyNi1tYWludAorNzkzNDYgMjg5MDA2ZGM0NmVlMjRiNDY2MmJhMTRhZjlmMTg5ZTcyM2MwMGViNyBsZWdhY3ktdHJ1bmsKKzc5MzQ3IDgxYjc1MDkyNDA5MTZlZGM2MjdlNzEyM2QxZDZmNTUzODEwMjcxMGIgcmVsZWFzZTMxLW1haW50Cis3OTM0OCA5ODhlMDQ1N2UzMTMzOTZjZDUxNDU4YTBiYzRkZmRhNWIyOTY1NWU1IHJlbGVhc2UyNi1tYWludAorNzkzNDkgNzIwMTE4MTM2MGZkZjI3ZDBkMTVjNDM1NGI3NTUyNGEyNGNmYjc2YyBsZWdhY3ktdHJ1bmsKKzc5MzUwIDM3ZGE5YmM0NjE3NDJmYzRlNDA2OGQ4NjczYWNmOWNmYjYyOTU1OWMgbGVnYWN5LXRydW5rCis3OTM1MSBjYzhlMzY5NjJiYWNlNmM1MzlmMjI1YzExMDg1ZTgzMTk2NTQwM2I2IGxlZ2FjeS10cnVuaworNzkzNTIgOTc2Mjg0ODQ5ZTlkODE0MTBjZTA2NGIxOWVlMWZkNWJmY2JkNmU0NyBweTNrCis3OTM1MyBkNjBiZmIxYjljMDUyZTczZTg0MDM3ZTFhOGJmYmQ5YTE4MWQyMzYzIHJlbGVhc2UyNi1tYWludAorNzkzNTQgZTkxYTA4NmI0MTc4M2U3Mzc0Y2Q1ODU5YmI5ODZkOWQ4NDliYjdhNCByZWxlYXNlMzEtbWFpbnQKKzc5MzU1IDVhYWNjNzY4MGQzZjcyYmZmMmM2MjU1ZTdlNWM5YmQxMjFkODY5ZDcgcHkzay1qaXQKKzc5MzU2IDQ0Njk2NDgyYWM0MmFiY2U2YjhlOGE0OTQ1YTllNmQ4NzBmZWI4NDQgcHkzay1qaXQKKzc5MzU4IDFlNzQxZWIzMGIxNzA0YTM1MzZkODY3MThhNGMxNjZmZDRmNDY2YzIgbGVnYWN5LXRydW5rCis3OTM1OSA2NTdlN2QyMTMwNTI4OWNjNDAxYmRlMmU5YmNkNzQ0YWVjZmFjMzJiIHJlbGVhc2UyNi1tYWludAorNzkzNjAgNTA1Y2ZmMTI1YTAzYzY5OTdhODU4NzIwOGZlZjliMDA3NWQxNmYzNCBweTNrCis3OTM2MSAwMzE2ZTZhMjhhNTUzNTg3MWIzYWI3YzUzNTlmYzZiZTdhZDMwZmRiIHJlbGVhc2UzMS1tYWludAorNzkzNjIgZGU4NGE2ZDBlNjk3MGMwZTg5MGNjZDU3OWFiNmViMWY3NDhmMTJhMiBsZWdhY3ktdHJ1bmsKKzc5MzYzIDRiYzhmOTY1M2U4ZTJiZDczYTcwZDE5YWFmOTIyZTkwNWE0MDI5MGMgcmVsZWFzZTI2LW1haW50Cis3OTM2NCA1OTkzZGE2ZDI0MDk1MTUxYTMxNjEyNGZjYTc3NGQ1YjVlNzI1NjUxIHB5M2sKKzc5MzY1IDE5NTdjMjg5NDI5MjViYjhkZWZmYmFlYmEwNDI3NjU2YmQ2NjQ5ZWYgcmVsZWFzZTMxLW1haW50Cis3OTM2NiAwM2VhYjk5OGIwN2ExNWEyNjc4ZGE0ZDA4N2E4NjYxZmUxMjUzMGFkIHB5M2staml0Cis3OTM2NyA2MmZiMDg2YTM5NzU4MmEyMDZmZmUwNzA1YTU4YmRhYjBjNzA3YjI2IHB5M2staml0Cis3OTM2OCBjZDBjYTU2Yjc4ODBlOGM0NWZhNDk2NjcwNTFkZDZkYzc5Yzk1NThlIHB5M2sKKzc5MzY5IDIzZGE1NjYwN2IzM2ZhZWY5MDJlMmE5NDIzM2MzZGJmNGIwNzJkZmMgcmVsZWFzZTMxLW1haW50Cis3OTM3MyBkOGY4NTUzMzNmYjQ4Yjk4NjUyMzExOWJkZWQ0N2I0OTQzYzZlNzE2IGxlZ2FjeS10cnVuaworNzkzNzQgZDJkZWFhNzBmYWRiNDVjYzQwMTc0OWNkZjY5NGIxMzJhZDIxY2I2ZiBsZWdhY3ktdHJ1bmsKKzc5Mzc1IDBhYmZhMjYwN2Y1NGViODY1N2UzMmRmNTMyOTQxNWZkOGUyZDZmYzMgcHkzaworNzkzNzYgOTM0Y2JlNzM2ODAzNzJjZTI4NTVhMjk4ZjcyNGUxODIyNDc4ZWNlZSBsZWdhY3ktdHJ1bmsKKzc5Mzc4IDUzMmQ3MTQyMGY0NjE1NTg1MjQ0YWVkYmQ5M2JjNTU3YjA5MGM1ZmYgbGVnYWN5LXRydW5rCis3OTM3OSAyMjllYThjY2M1NTMwNzVjNjQ0N2ZhYzI2OWRkYjM2NmUxNzA2NGJkIGxlZ2FjeS10cnVuaworNzkzODAgODNmYTRmODk5NTY4ODJmNWViMDdjYTY1MjY4OTcwZGY0YjgyMDFhNiBweTNrCis3OTM4MSAxNzljNjQ3Mzg2MzMwYjE4YmQyMzY2NzVhOWVkMjBiZmExMzk3NmI1IGxlZ2FjeS10cnVuaworNzkzODIgNjIzODVkOWI3ZGEwNDM4YzgyNjZmYTI1ZTA5MDQ0NzFiYzEyNzdmNCBsZWdhY3ktdHJ1bmsKKzc5Mzg0IDc0MzBmYTdlZWE4Y2I5ZjkwMDQxM2U5NTQ2NWQwMWI1MjVmYWQxZDEgbGVnYWN5LXRydW5rCis3OTM4NSA0Y2ViNWRjMzVjYzY1YTY0ZmE5NGJjYTFjNzNlNjQ1ZjRhNTk1OGEzIGxlZ2FjeS10cnVuaworNzkzODYgY2FjNjYxZGI3Nzk1ZjE5YzZiZjBiN2YxZmVlNzdlOTU4ZDZlOGM5OSBweTNrCis3OTM4NyA0OTZkNzYzNjA3NjM5NDViNmUxMmM5ODFiOWM1NDA0ZDMxZjU0YWU2IGxlZ2FjeS10cnVuaworNzkzODggMmUwODEzZDY3MzhkYmY0Y2FlNmFiOWRjM2VhNjM2NWQyNTViYjdhMyBsZWdhY3ktdHJ1bmsKKzc5Mzg5IDcyNTFlNzM3YTVkOGNhYmQ2ZGJmNzI0YTE0YjlmMzdhMWM3Mzg4NWUgcHkzaworNzkzOTAgOWNhYWFmZDU5OWQ2NTM0M2IxNGYwM2ViM2ZlMTViMDRjMTM5ODhkZCByZWxlYXNlMjYtbWFpbnQKKzc5MzkxIGMzYzM0Zjg0Nzk5OGEwMDY2NTc3NjBkMDc2ZmM4YmU4MjY4OGU3ZTcgcmVsZWFzZTMxLW1haW50Cis3OTM5MiA0YjhkZWNiNDU3MmNkNzAyZThiNzgwMjU4MjkzMzk5MTgxMjE3M2M0IGxlZ2FjeS10cnVuaworNzkzOTMgZThiMDhkNzczZTc4NWY4NzJkMjVjY2MwODZkNGQxYTQ4MGNkMTVkMSBweTNrCis3OTM5NCAwMzA5NjIwOTIzNzNlOTU0Mjk1ZTkwYzE5YWRkYjc4NTVjMGU5Njc4IHJlbGVhc2UzMS1tYWludAorNzkzOTUgMjQ4YTdhZGU0NDRmYmVmNTRmMTViOGM0NTg2NWM2NzEzMDA1YjAxYyBsZWdhY3ktdHJ1bmsKKzc5Mzk2IGVkOWEzZGJjMzEyZTliMGE1MmI2ZjgyZTcyMGNkYWQ1MzEwMGNmNzkgcmVsZWFzZTI2LW1haW50Cis3OTM5NyBkMTFmYmM3OTY0OTlhMzM4ZDA0MDJiODg5YTkwNGRhOTU0MTM4YzM5IGxlZ2FjeS10cnVuaworNzkzOTggZDY4OTNjNzBkZjZhNDdkMTgxYWM1N2MzYjY4NmU1NTg0ZGQ1YmMwMCBweTNrCis3OTM5OSBlYjFiNjQ2OGU5Nzc0NmY2MzA5N2YyZjgwNmEzYzllOTliZTNjZDZjIHJlbGVhc2UzMS1tYWludAorNzk0MDAgNWQ1NDY5MmI2ZGMzZTNlM2U5ZDRjMDk2OGNmMjJmNTA4MzcxMTYzZiBweTNrCis3OTQwMSAwOWE3YTE5ZTdjYjliMDkzOGYwMmUwOTdlZjU3YzQxNzM1MDdlODFiIHB5M2sKKzc5NDAyIDNiNGU5ZmE5YzFlOGRjMWEzMWE0NGM4OWU3NTY4NmNjNzIzNzExOWQgbGVnYWN5LXRydW5rCis3OTQwMyA1ZjlhNzA2NGQ2MmFhMDA1OTM2MDMwMTQ1M2Q4OTEyMzU4NjUwYWIwIGxlZ2FjeS10cnVuaworNzk0MDQgNGVmNjVlMjM5NmFlOWE1ZWVhYzQ0ZWQ3NDI1NWVkYjk3NjdkYTA5ZiByZWxlYXNlMzEtbWFpbnQKKzc5NDA1IDRmODQxZGY4Yzk3NjZmOTM1ZTk5Mzc0YzNiNGI4MGU3MDY3ZTE2ZDQgcmVsZWFzZTI2LW1haW50Cis3OTQwNiBlNWRkOWY5ODY0NDBjODgyZmJmNGMwZTk5ZTcxN2E1OGVmMmQ4ZmNmIGxlZ2FjeS10cnVuaworNzk0MDcgMGRmZDYyMDc2ZGVkNDFlMjA5ZjU4MzQxYTY0MDc2ZjU1ZTE0N2UyOSBweTNrCis3OTQwOCBlMWE4NGYyMjE1MzdkM2IzNjc1MzgyZjk3Y2UxZGFlYjQyNTVjOWIyIGxlZ2FjeS10cnVuaworNzk0MDkgMWFhNjg0NjcyY2U2ZmE2NmI0NDM5OTUwNDM4MWY5ZTMyNjUyMTUwZiBweTNrCis3OTQxMCBlMThkMzgyMDEyODA1NzdlMTQyZjQ4MTM3MDIzZTk5ZDM3N2VmMmJjIGxlZ2FjeS10cnVuaworNzk0MTEgYzk5YzM3OWNlZDJmYzA1ZjI5NzI3YmEyNmY4YTAyOGZjZGZlMmExYSBweTNrCis3OTQxMiBkNmNhOWNkMWI0MTFlNjUxMTAxMWE1ZDkxZTczODJiYjdlMWE5MGM4IGxlZ2FjeS10cnVuaworNzk0MTMgNzMyOTMxMmZjYmQ3YTUyNGRhYjAzYmJhYmJiNTZmZGI5NzBlNzhhOCBsZWdhY3ktdHJ1bmsKKzc5NDE0IGZjYzEwODMzYTFjOWI1YTVmMGVkYTkzY2E5OWVjN2NmZDg1MTg2MTQgcHkzaworNzk0MjAgZTI3NzBiZjMyZGNmNjgzOTdkMmM1Y2JmZDZhNTY5YzE3OTkwNmE2ZiBweTNrCis3OTQyMSA5MzgyODRjZGExNWJmNTgxMjIyMDNlZWRmN2Q5MDE3ZDQ3ZTI0MjMzIHJlbGVhc2UzMS1tYWludAorNzk0MjQgMTQ0MzI3MjRkMGZlN2ZhYWJhMDk5MjNjN2NlMjJhZjkzMWUwNGEwYyBicmFuY2hfbGliZmZpLTNfMF8xMC13aW4KKzc5NDI1IGU2YjllZjQ5ZTMzZjlmM2IxMWY2NDc3OWQ3ZTY4ZDQ4OTM4OTU3MTkgbGVnYWN5LXRydW5rCis3OTQyNiBlMGI4ZWNhMjI1MjkzNTk2OWUyZGI0N2VmMTBjZjM5MTBjZDlkZWJlIGxlZ2FjeS10cnVuaworNzk0MjcgMzhlNDEwMDUwZGM3YzE1ZDVlMDRiMGZmMjhkZjcxZDU0M2NlZjI2MyBsZWdhY3ktdHJ1bmsKKzc5NDI4IDE2YTdkMzI2MDViYjgzMmRhMGIxMDUyNDhkNGU3YjMyOTJkNGU1YjUgbGVnYWN5LXRydW5rCis3OTQyOSAxYTBlMjE3MDYzYjc1NDI4YzdhZDIwZDAxODg2OThkYjA1ZjE0MDAxIHB5M2sKKzc5NDMwIDg3MDE1ODFmYjQ1NTA2MzczN2M5YjEwZWFhNjM1YzQ0MzE0NzdhOWEgbGVnYWN5LXRydW5rCis3OTQzMSAxODhmODYwNzU5YzE0MDQ4ODM5NjBkM2M3ZmY5YTNhYTExYWNjNDlmIHJlbGVhc2UyNi1tYWludAorNzk0MzIgZDgxODdlZDk0MzI1NjBlMzczYzRhYzkyNTJkNzAwZWYwMzNhMmM2MSBsZWdhY3ktdHJ1bmsKKzc5NDMzIGI5MDcyMmQzYWVmYTBiZWJlZDY2ZmQ2YjdlNWM0ZGQ0YmQ5NzcyODAgbGVnYWN5LXRydW5rCis3OTQzNCA4MjYzN2U2NjhjYTFjY2I2YjQxYzBhMDJlMWQ0MDQ0NmY2MzY1NjdkIHB5M2sKKzc5NDM1IDAzMGQ2YmYxZDk5NTZmNzcwZjk4MWNkMmZiYzZkNzY1MmM3NjFjNGIgcmVsZWFzZTMxLW1haW50Cis3OTQzNiA5NWE3OGEyZDcwMGQ4MGNiODA3Mzk0MzY4YTM3YThlZDlhZDU0ZDJmIGxlZ2FjeS10cnVuaworNzk0MzcgOTQyMWY2N2I2YzJhMTQ2MGI1YWFiM2EwNDAzZTY5NDRkNWYyZDU3MiBsZWdhY3ktdHJ1bmsKKzc5NDQyIDIwYmFmNjNiMDk0Y2QwYmQ2NzI5ZTQxNjA2YmUzYzFiYTc5YmU4YzUgbGVnYWN5LXRydW5rCis3OTQ0MyAyZWNiOGU5OTYwZmMzYTg3MWI3NTQyMjY2MDhjMDMyZjc2NDIwMzI5IGxlZ2FjeS10cnVuaworNzk0NDggYzhlY2FiYmU4MDE2OTk5MDRiMTE1MDI3NzZhMjQxNDk0OTE4NWJiMyBsZWdhY3ktdHJ1bmsKKzc5NDQ5IGU0MDdlYmE4ZTM4ZDQ0OWY4MTgzMjkzYmUyOTUyYWQyYmRmZjYzZmQgcHkzaworNzk0NTAgYWNiMWRjNjY4YTk3YmI4ZTQzMDlmNmIxOWMzZjVlOTFkZWQwNjI5MiBsZWdhY3ktdHJ1bmsKKzc5NDUxIDRiYmFmZGY0ZDVjMWJlYmIyYTIwNjNjMTBjMTNmZGM4MDQ0ODBlODggcmVsZWFzZTI2LW1haW50Cis3OTQ1MiA2NjBiOWYyNGVkYWM4ZTM3MTU5NDllNzY0NjllOGQ1NmMzNzBlMzJlIHB5M2sKKzc5NDUzIDUyNmJiMDgyYzA1NTI1YzkzZmZmMTFiMTI5OThkZWQ0NTNiMmIwYWQgcmVsZWFzZTMxLW1haW50Cis3OTQ1NCA1NjQxNjkxNTE1MTBjZmU5MWZiZTBiODdkYjIxNzJkMzcxNDE5N2IxIHB5M2sKKzc5NDU1IGU1ZmUyZjYyNTk4M2NjNmYzZjMxYmRjOThmMzFiYWNiMTYyNjQ3YjQgbGVnYWN5LXRydW5rCis3OTQ1NiAwZjZhMGIxZGI0ZTJiMWVjMGI3Yzk0OTVhZjFlZWExNjMyY2ZjOTMyIHB5M2sKKzc5NDU3IGIyMjdkYjlhMDAyOTc0NGJiY2ZiMTIyMDhlYjA3ODY3MGY5MTExMDAgbGVnYWN5LXRydW5rCis3OTQ1OCA4YzVjNWU4NmZiMjI3YTYyN2I2OGUwYzA3NzgzOWVlMTE2OWRhODA0IHB5M2sKKzc5NDU5IDBlN2FlNTNiNGU3OTAyNGNjYWU2YTMzZGFhYzk3YjI2OTE1N2I3OTUgcmVsZWFzZTI2LW1haW50Cis3OTQ2MCBlODExYWEwOTRmMTk0Mjk1N2U0OGRiNjg5ZjI3MThiMjIzYTlmOTc2IHJlbGVhc2UzMS1tYWludAorNzk0NjEgOTE3MGFhOTQ0ZjI5MzM0NWJkNmY4ZGE3NmM3YWEwMTljYTRkZWI1ZSBweTNrCis3OTQ2MiBlMTE4M2ExMzdkOGNhOGY0ZDdiMTVhNzUxZDVkNjgxYTQxZjRjZGU0IHB5M2sKKzc5NDYzIGFiMzA3ZjdkZWZhMWVjNzlkM2I2YTZkOTk3YTU2NTgzZTIwMzgxMmIgcHkzaworNzk0NjQgMjI5NDZkMDBlZWNjZWY3ZTQ2Yzc0ZGVlYzNlNjU4OGFhNjQyOTA4NyBsZWdhY3ktdHJ1bmsKKzc5NDY1IGY5NmFkODAwNzEyZWU2MWY0YWExMjkwYzU5NjM4MTJjYjZlOTFkYzQgcHkzaworNzk0NjYgODZiNzFmNDBlOGFhZTI3MDRkMDhmNWU2ZTdjYjcyY2FiMGY0ZDliYyBweTNrCis3OTQ2NyA3MWE0NWVjYzRkYzkxMWVkMDNiYTI3NmIzMjBmM2RkN2EzZjBlMmIxIHB5M2sKKzc5NDY4IDMwOWUyZDNlOGRjYzIxYWU3MGQzNDhmNWIwNTBmZThmNmQ5YjZhYzIgbGVnYWN5LXRydW5rCis3OTQ2OSA4ZTZhMTYxNTdmYWYxYmRmNTQ0YjQ1Njc1NDhlMmVkYTNkOWVmYTlkIHB5M2sKKzc5NDcxIGEyYWE2ZGRmZThlMjk1OGFjYTZlNjIzMDRmNTgwMTRhM2E5MjJmMzMgbGVnYWN5LXRydW5rCis3OTQ3MiBkYjVhM2EyNzdjMGI1ODBlYmY1MWZjNGEzMTkyMDFkMDZkMGM1OWExIHB5M2sKKzc5NDczIGJiMmNhMWI2MzMyMWE3OGI0MTMzNDdhZDhmNGNhYmUwZTRjZTk0YTAgcHkzaworNzk0NzQgNDBmNzg3YjE1MWFjNmMwNTM1YTczNTZlMWZkMjY0NTFlNjMyMjYzNiBweTNrCis3OTQ3NSAyYjYzMjE5MTVlOTJiNjFhNmM4NjllNzk3NDA4ZDU2ZWFkOWQ2M2EyIHJlbGVhc2UyNi1tYWludAorNzk0NzYgMGJjMDQ1MjVhZjYzOGJkMDA0YjExMDQ1NWNmZDUzMmQ2MzNiZDE0NCByZWxlYXNlMjYtbWFpbnQKKzc5NDc3IDYwMDA5NjMyZWQxMTlmN2JkZjM5OTg1ZTY3MmJkNWNhNTlkNmVjODAgcmVsZWFzZTMxLW1haW50Cis3OTQ3OCA4ZWUyYmY4MjFmNjI2NzEzZjk4YmI0OWQ3YmI1ZDEwNDQzOTFlOGFkIHJlbGVhc2UzMS1tYWludAorNzk0NzkgZTYzZDQ2NzhmY2E3M2YyNGQ0MmUxNDcyZmJiNmVhYTU2OTE4ZWQ5NyByZWxlYXNlMzEtbWFpbnQKKzc5NDgwIGJiOGJkMzM1OGJjYTAyY2U1YTcwMWJiYjZhN2I2NDgxY2EwMmU4MmEgbGVnYWN5LXRydW5rCis3OTQ4MSBiZWE3NWZmNjUxMTQ2ZGFhZDAwMmQ0MWQ4Nzg5NzY3NTZlNTJiZGJjIGxlZ2FjeS10cnVuaworNzk0ODIgZDQ5MzUyNDI2ZGU1MTMzM2QzN2U2NjUxNDE4Y2RmYjMwMDA5ZWE2YyByZWxlYXNlMjYtbWFpbnQKKzc5NDgzIDIxM2EwYWUyZGI2NWIyZTI1MTk5ZTAxMDViNDJlMDgwODE5YmM3NjEgbGVnYWN5LXRydW5rCis3OTQ4NCAyYTMxMGE0NDhhMGE3ZTIwMTQ1YzJiY2Q4OTFkYjg2ODdiMzBhYTJjIHB5M2sKKzc5NDg1IDUxYjJhZjljNDY5ZWI0YTk1MzZjZDA5ZGIwYjI4MWQxNTk0YWJhMDkgcmVsZWFzZTMxLW1haW50Cis3OTQ4NiAyZDA2YzZjN2U3MzI3ZGViZGNmNmZhY2UxZmRkMDk1Y2VlZDg4ZmRlIHJlbGVhc2UzMC1tYWludAorNzk0OTAgYmJiMzQwNTAxZjI5ZmMwZjMzNjYwNDEzN2YxNTM5YTNmMDE2ZDMyZiByZWxlYXNlMzEtbWFpbnQKKzc5NDkxIDliOWZkMjk5MDcyZDhmY2MzODQ2NzVkODliZjg1NGJhNWEyYTY2YTcgYnJhbmNoX2xpYmZmaS0zXzBfMTAtd2luCis3OTQ5MiBjM2M4MmQ4MDQwZDZmNGVmNjYzYmJkOTBhNWU2NWU4OGRhMTFlZmNlIHJlbGVhc2UyNi1tYWludAorNzk0OTMgMDRjYzA3NWJkZGY1YmI5OTYzZWY1MjA1NDJhZjc3OTdjMmZiNTE3YyBsZWdhY3ktdHJ1bmsKKzc5NDk0IDY2ZTc1N2Q4ZWE5MzRjZWVjMWQ2YjcwNzk1OTRlNjBmMzQxZGVkYTUgbGVnYWN5LXRydW5rCis3OTQ5NSA3NzM5YWVlZmRiYzAxNDRjNjlkYjk3NmY5MmE5M2UxMDM5YTc5NmEyIHJlbGVhc2UyNi1tYWludAorNzk0OTYgYzk2ZDI3ODY3N2FmM2NkMDhkOGJkYzBjNDhkNjYyY2ZjZGM4MDNlMyBsZWdhY3ktdHJ1bmsKKzc5NDk3IDMzMjljMDVlNmUzMTkzNzliODhhYzQ5MDkxZTQwNWQ3N2MxNTcyMGMgbGVnYWN5LXRydW5rCis3OTQ5OCBlNGU0YmJkMzlhMjEzY2NlOGNiZWQ3OWE3NGE5YjJlMzA3NGFjYzMwIGxlZ2FjeS10cnVuaworNzk0OTkgNDBhMmU3YWM4YTQ3ZTIyYTAxNTYzNzVlOWE2YjYyNThiOTc4YmVjNyBweTNrCis3OTUwMCBhMTRhMjA1YWIxZmI4NDkwMWQ1YmU2ZTFmY2Q2NTExYTRjZDhkYzYyIGxlZ2FjeS10cnVuaworNzk1MDEgYmM2ODE0YzM0ZDVmMjBlM2U5NWE0OTBlNWRhNGE2ZjNjYWU3ZDVmNSBweTNrCis3OTUwMiBmNjk3NjlhYjBlYjgxNjY3MzVlNTVkNjM2ZDY5MTg5YzQ3ZjkzMmYyIGxlZ2FjeS10cnVuaworNzk1MDMgNWUwZmY2NTI4NGZhMjA4OWIwNGUzNmM2MWIyMWEyMjM3MzZjMjFlOSBweTNrCis3OTUwNCAxZDAwMjdkMzRhNTFlMjFjOTkyMjg0ZWIzMTU0NmI3NWQ5MWJmZmM5IGxlZ2FjeS10cnVuaworNzk1MDUgMTM2MTg3NzU4NWYyYzQ5MWViYjBlMDdlNmEwNTQwYzkyYzE2NWE2MyBweTNrCis3OTUwNiBiZjNjNDhmMjQxN2M0NDcxM2Q0MzQ4MDk4YzBhZTFhNzg4NjFhNjk4IHB5M2sKKzc5NTA3IGRkZDU1MDk1MWI4M2ZiMTcwYjAxZGU3Zjg4ZjFiNzMzZDFhODVhNjIgcHkzaworNzk1MDggNGRkNmViNmJlODJmZDUyZjBiZTc2OGZkMzZlNzg1MjFlODRjMWE4YiBweTNrCis3OTUwOSA2MzI2OWM0MTg1YzUyZTY5ZDY1N2YyY2IwYWM0NWNmMWM0MDEzMzBmIGxlZ2FjeS10cnVuaworNzk1MTAgMGMwMjU4NGM0ZTUzNGZlN2YzODVjMTgxZjQ2MzAwZjJkMDk2MzVjZiByZWxlYXNlMzEtbWFpbnQKKzc5NTExIGE2MDk1NGViNTE4Yjk4NDlhOTI3MzI0NDgwMmRiMjFlMTIzMzVjNTIgbGVnYWN5LXRydW5rCis3OTUxMiA5NjUxYzg0YzUyMGQ5ZThiYTVkYzkzMzQ1ZTVlZmVhNGU2YzllNTgxIHJlbGVhc2UzMS1tYWludAorNzk1MTQgNjBmOTEyNGZkZWFjMDUxMDg5ZGVkODBlMWU4MTg0ZTI5YmEyZWY5NSByZWxlYXNlMjYtbWFpbnQKKzc5NTE1IDQxOWZmNzAyNDQ3ODM4OWUwZmY1MDg2ZWJlNGY1YTQ2YWMxZWM5NTkgbGVnYWN5LXRydW5rCis3OTUxOCAzNGQ4MjIxOTZkOGJkMGQ2YWJkMDg2MThiOTVkMjEyNTdkMjA2MDU2IGxlZ2FjeS10cnVuaworNzk1MTkgZWY2ZWJjMDZhNzg2ZGMwMGEzODkxZjc5NDFmZWRmMDc4ZDIzOTI1NiByZWxlYXNlMjYtbWFpbnQKKzc5NTIwIGZmZTdjNzkxYjViOTQ4NzhmNGFhZTNlMGQ3NzE3OWI0ZTE3MjA2YzkgcHkzaworNzk1MjEgMTMyMzIxMmRhMTU0MDA0YWZlNzI4NzNjYTZmMDQ2ZmE1YTVhZTk0YyByZWxlYXNlMzEtbWFpbnQKKzc5NTIyIDVlOWVhZGM3NmU4N2VmN2JlNmQyYWFjNDFlYWNjNTZmZmM0NWZjMDcgbGVnYWN5LXRydW5rCis3OTUyMyBjYWQxMjY0MjhmNDhkNzhiOTdkYTc3MWZhYjVkNGI3NjJkODljODhhIHJlbGVhc2UyNi1tYWludAorNzk1MjQgNTdkOGQ3ZjMxN2Y1MDFiNDE1NWE5OTQ1MjEyMWEzMjhjZGVhOTU2YSByZWxlYXNlMjYtbWFpbnQKKzc5NTI1IGZkNWMwZWEyODcwYmFjNGIwZDFjOTI5OWYwMmNiZTc1YzRhZDA3ZDcgcHkzaworNzk1MjYgZTRmOTY5MDEyZTY4M2NhZTJlZDg5MTgyYzZlNTEzYjgxZjRiODJiOSByZWxlYXNlMzEtbWFpbnQKKzc5NTI3IGQ1N2NmMWFhMmRkNGQwMGMzYzM3MGFlM2RjNTk3YThkMDA2MzI0YzUgcmVsZWFzZTMxLW1haW50Cis3OTUyOCA5OWU1MjMxMzJhZWE0M2Q3OGE3NjRlMTA0YzkxYzYwNzc5NDFiNDUwIGxlZ2FjeS10cnVuaworNzk1MjkgODdiYzBmMTA4NzAyMTM5MTA3MjllNTFiMzMwOTRiMmFhMDliMDI5NCBsZWdhY3ktdHJ1bmsKKzc5NTMwIGEyZTYyNzgyN2JmMzUwOWFiNGE2NzgxYmZmYjZlM2U4NTI3MzAxMTAgcmVsZWFzZTI2LW1haW50Cis3OTUzMSAwMWU4YjEzZmE5OWE1NjVkYzVhOWVlMjU5ZjAxMjM4Y2U2NDYxNjcyIHB5M2sKKzc5NTMyIGVjYjlhNjYwOWJiMWM1NDUwOWJiOGM4ZjFmNzdhMzg2MjJmMTc4ZjUgcmVsZWFzZTMxLW1haW50Cis3OTUzMyA1OTIwZjlhNWUyMmQ4ZDMzYzExMjQ0YjgxNWZlMjIyOGI1MzBmOTI2IGxlZ2FjeS10cnVuaworNzk1MzQgODMyMDIyZjYzYmNiZDY3NTU0MDg4MThkOGE2MWI2ZmE4NjRiMzNhMiBsZWdhY3ktdHJ1bmsKKzc5NTM1IDdiOGJhMDE5Y2QxNWI1MjA5ODdhMzgxNTllM2RiZWFkYTRjZThjMDIgbGVnYWN5LXRydW5rCis3OTUzNiA0ZmNhYWQzZjY2OWIyM2Y2YmUzYTcwNjE5ODU4Y2E3ZThmYmU1Y2Q3IHB5M2sKKzc5NTM3IDU3MGVhZTE0ODFlYjYwMTFmYzA5ZmMyYmMzN2VjNDRlY2FjMmE4YTMgbGVnYWN5LXRydW5rCis3OTUzOCBjMzZmMjNkYTg4YzFhYTU0M2ZkNmM0NmFjZTZhOTYyOWJlM2U1YjJkIHB5M2sKKzc5NTM5IDM3NDhiY2E0ZDg2OThhYjA3Yzc2MDg0MTI0MWNiMTdkMGQwMmI3OGMgbGVnYWN5LXRydW5rCis3OTU0MCAyNWE3Y2UwMjMwNmNkZjFkM2MxMmI5ZmYyODc5OTViOTZlZGJlYTRkIGxlZ2FjeS10cnVuaworNzk1NDEgZDAwZjJlYTI1ZDIwYTQxZjI0NmQ2NjgwZjVmMzFjN2M3ZDMyM2JlZiBsZWdhY3ktdHJ1bmsKKzc5NTQyIDdiNjdjMzQyOTE3Y2NlNjkxMDQ3YTdhNTAwYmMwMWNiODdiZWRmNDIgbGVnYWN5LXRydW5rCis3OTU0MyAxM2E4MTEyZWNhNTJmYzNjZjRjOGRlNmI5YzMxOWNlOWU4MTIxM2FhIGxlZ2FjeS10cnVuaworNzk1NDQgYTRkYWQyMThjNmUzNDU2ODVkNzVhNzJhNDFhOTdjM2IyNTVjYjQ3YiByZWxlYXNlMjYtbWFpbnQKKzc5NTQ1IDFlMmM5ZmVhN2NiZTAxMGE2ZGRiZWJmOWMzMTYzZGYxY2U0YWMzODYgcHkzaworNzk1NDYgNWNjODJjY2U0NTIxNWZjN2U3ZjhhMzFkZmM5MmYzYTBkMDRlYWI2NyByZWxlYXNlMzEtbWFpbnQKKzc5NTQ3IGM3OTY1YmQ1ZDIwMDRlMmM3ZjMzMjlkYzI4NGI2YzU0ODAxMzIzNjQgcmVsZWFzZTI2LW1haW50Cis3OTU0OCA2ZGUzZGUzYWI3MWY3NTM2YThhMTA4ZmQ2NWFhNDE5ZDA3YzUyYmU0IGxlZ2FjeS10cnVuaworNzk1NDkgODgyZDY4MWQ1MGEwMDRlZWM0NDZhODI3NDA3Mzc4MjQxMWQzMWE1NyBsZWdhY3ktdHJ1bmsKKzc5NTUwIDU0YjBhNmY3NWVkNTc5NTA2ZDZiYTBjODUxYzlkODA2YTM5MWEzNGMgcHkzay1jZGVjaW1hbAorNzk1NTEgNzhlMjA5Nzc5MmJlZWFkMWM4MmM5NDk5ZTEzOTA5ZWE5MjUxYjJmZCBweTNrLWNkZWNpbWFsCis3OTU1MiBmZDhmZWY2YWZlZmQ4Y2RiZmQ0YWMyNTUyMmM4ODVhNzAwODU4OTExIHB5M2stY2RlY2ltYWwKKzc5NTUzIGU5NWY4NzU1ZmYxZTNmNjYzNGYyYmU3YzJhNTVjMTllM2IyZTdhZDAgcHkzaworNzk1NTQgYjRkZWFlYWI5NmU3OGQzZGNlMjM1NjM5M2Q1Nzk3ZWI5MWI2ZDVkZiByZWxlYXNlMzEtbWFpbnQKKzc5NTU1IDZkZjZjMTlmYmFlMzU4YzQ1ODE4ZjMzZTgzMGE2MmViMzMyMTNmMjMgbGVnYWN5LXRydW5rCis3OTU1NiAwNGU3NzViMzNlOWUyYTM3ZWM1YjIzNTU0YTVkMzE0OTg4YTdiNzEzIHB5M2sKKzc5NTU3IDk2MjAxZjQ4OGNjM2NlMjg0ZmUwMGJmOWFiMmYwZDM3M2RlZDJmNTEgbGVnYWN5LXRydW5rCis3OTU1OCBhNDA0ZTM3MDJmNzlmMjhjMDJjMzk2ZWM1NmFlNjEzZmJiOGY5ZjA0IGxlZ2FjeS10cnVuaworNzk1NjAgYzhhNjAxZTc0NGNmNjg4MzBkZDY0MzBmNjIzN2JjYWE2ZTU3MWQxNiByZWxlYXNlMjYtbWFpbnQKKzc5NTYzIGYxNzE3MTI4ODBjOGViZDJmNDUwNjM4MTY1M2VhOTY4NWJlNjI5MjUgcHkzay1qaXQKKzc5NTY0IDZkMzQxNWMxNWI4YmY5MjA4YmM0ODA4NGUzNzQxOWM5YTBlN2FmMDAgcmVsZWFzZTMxLW1haW50Cis3OTU2NSAxYmVhNTQwNGUwODdjMGU1ZmI1MzgwNzAxYmE5NGI5Y2E4ZmJkYmYxIHB5M2sKKzc5NTY4IDUxMmI4MDI1MDc4OWI3NzI4YzE1ZWIwMTgzZmYyN2VhNWI3MTQ5MDggcmVsZWFzZTI2LW1haW50Cis3OTU2OSAyNDc4YzM4ZmVmZjc0OWY4ZTZhZjU4MzZkNmE3YjQ3YTY3NWYzN2E0IGxlZ2FjeS10cnVuaworNzk1NzAgNWJhZDgxOGQxNGYyODczZjM5MzlmYTdiMzZmZjY4YWYxNWQzYmQyNSByZWxlYXNlMzEtbWFpbnQKKzc5NTcxIDNmNDQ4MjUyNmY1NWEyNjg3ODdhMDFkMjc4YjM1ZjQ4NjljZGNjN2YgcHkzaworNzk1NzIgMzg4MDZkZjA1ZDA5ZDZkZWY4YzY0Nzc4NGI4YTkzNDkzODQ4OWIxNCByZWxlYXNlMzEtbWFpbnQKKzc5NTczIDRkOWQ5NzYwYzg4YmVmNmQ3MDIzMzc3ZTRjMjRkZDBjZDY3NDg4NmUgcHkzaworNzk1NzQgNDE1YzRiYjQ1ZmU2ODc3NGY0YjA4ZDU4NmU4Nzg3MTVmNDM5NGRmNSByZWxlYXNlMjYtbWFpbnQKKzc5NTc1IGI2NDczMTU0YTcwYmMzMzE1ZWU1YTczYmE3NmUwZTRhZjQyNDE4ZDIgbGVnYWN5LXRydW5rCis3OTU3NiBlYWIzNjE2MTdmNmE3ZDA0MTlkYTQ4YzkxMzE2MmNjMzIyMDFmNTRiIGxlZ2FjeS10cnVuaworNzk1NzcgYmFjNGIyODlmNzlhYWQ1MzA2Yzg0NjY2ODEzZTY3NjIzZjgwNjI3NyBsZWdhY3ktdHJ1bmsKKzc5NTc4IGViOWZkYTkwZGE2ZWQ4NGQ1NDdjYjljNTljNjMxZDY3ZTMyNzI0YjEgbGVnYWN5LXRydW5rCis3OTU3OSBmMzg5MTliYjI2Y2M3MTE5ZmQ1YTg5ZGMyN2MzZDY1ZjY4OThkZmNmIGxlZ2FjeS10cnVuaworNzk1ODAgN2E0YTBjNjllM2E1ZjIzZmYyN2JmZDcyM2NiNzhhMTFiZjMzNzE4NyBsZWdhY3ktdHJ1bmsKKzc5NTgxIGI1N2RhNGE0YTNlZDk1ZWJkMWVhYTY2ODZlZDRlM2E5MmUzMzJkMDkgcHkzaworNzk1ODIgZTgxY2E4OGQ0NzhjYzU1ODMyMTllM2ZhNjNiMjkzNTNkM2U2YjNiNSBsZWdhY3ktdHJ1bmsKKzc5NTgzIDEzMDYwMzNkOGFkMmFiNzE5YWM4MzljMTRjODIyZjY5MzUwNjVhYzcgbGVnYWN5LXRydW5rCis3OTU4NSBlMzVmZWI5OTViZDk2YzQ1MGIyYTBkM2NjYzJjNDBjNTRlZWZiMjI5IGxlZ2FjeS10cnVuaworNzk1ODYgYzViMjA2NDVlOTMzNTBjNzQyYjg4NzVlZWZkZGJlMGMyN2ZhZjFjYSBsZWdhY3ktdHJ1bmsKKzc5NTg3IGY3NzU1NmZlYmVjODIwY2YyMDM1NjFjZWJmM2Q5M2E3ZWQyMDk5ZDcgbGVnYWN5LXRydW5rCis3OTU4OCBhZTdjZjU3OGRlNWFkZGUwMDM5NmY1ZDVjYjM5NjkwNTdhZWMxODJjIGxlZ2FjeS10cnVuaworNzk1ODkgMTdmMDhkNjVjYzBkODFkZDQ3NDJkNWJmOWQ2YmY3ZTU1ZmI0ZDcwMCBsZWdhY3ktdHJ1bmsKKzc5NTkwIDU3ZjRjOTkwODJkZjU2MDk3MTYzZGRmYjA3YTdjMGViOWE3NDgwNWMgbGVnYWN5LXRydW5rCis3OTU5MSA0OGZkNjljMmEyYjQ5NGYyYjEwYjA5ZDg1YzNjNjdiNjFlMDMxNTAwIHB5M2sKKzc5NTkyIDFkZjM0ZmE0OTFiZGEwNGIwMjJiNTZjMmZhY2E1ZDYyNjYyNWIxNTMgbGVnYWN5LXRydW5rCis3OTU5MyBkNzdlMzg0NjBlM2NhN2Q2YjJjOGRlYjkwZTJiZDg5Zjk0NzIzNDdkIHB5M2sKKzc5NTk0IDRiNTVjZWE1NTA2Nzc2ZmFkODhjZWQzODAxNTMwMDc1YzNiYzEyYjAgcHkzaworNzk1OTUgNTE0OWQ0ODRkNTZhYzgxZGI3NWRkMWYzNThlYTU0OTU1ODhmYjhlNSBweTNrLWNkZWNpbWFsCis3OTU5NiAyMDQ5N2Q4NWUwMTEyZWMzZTRjODFmZWIxNTRmM2IzMjkwMWZlNzFlIGxlZ2FjeS10cnVuaworNzk1OTcgM2YxZDZlZDQ4MGRkODFiMDQzM2I0NzFiZDRhNzBhMTQ0ZmI5NDVhMyBweTNrLWNkZWNpbWFsCis3OTU5OCBlODA1MmE2MGJiYjdiNmVmMzJmMGI3MDRlYTdkNDI2NDdkNWY5MGI1IHJlbGVhc2UyNi1tYWludAorNzk1OTkgY2ZiYTU5YzM4MzQxNWMyOTJhNTY0MTAzNDFjYjU3MTQ2ZGVlYWIxZiBweTNrLWNkZWNpbWFsCis3OTYwMCA4NzBmZjYyMjBhMGI5OWIwNDIwYzNjZTFiNjZmZTMyOTk3ZDM4YjMwIHB5M2sKKzc5NjAxIDI3Nzg1ODNiZTIxZDYyY2VlYTg0ZjNlMDg4NWI1ZDc1MGQ3YzIxYWEgcmVsZWFzZTI2LW1haW50Cis3OTYwMiBkMTEwMWFhOTg0YzA3NWJjN2RjNmVlMjlkYzcwN2FlYWI5MjFiMDcyIHB5M2sKKzc5NjAzIDRhYzA1ZDFmNjBjMTgwNjhiNjQ4NDYxOTM0ZWEwMTM5NjQ3YmU4OTIgbGVnYWN5LXRydW5rCis3OTYwNCA2NmRiMDNhNzA3Njc5YzY5YTdlNzAwNmNjNDIzNWY3YmIyZDg4OTlkIHB5M2sKKzc5NjA1IDY5OTI0NjdiYjhiNTljNjMxMGQ0YjUxODg5YTVhZDYwOTAzODQxOGMgcHkzaworNzk2MDYgNDNhODM3ZDI3MjhhMTM0MWYwNDZmMDE5MWZhZjc4ZTQ3MmQ3YjU4NCBsZWdhY3ktdHJ1bmsKKzc5NjA3IDFmZjhkZDY3YmU4MjI3YTc3MDBmODgyZDFjMTViYjI1YTExN2M1NjUgbGVnYWN5LXRydW5rCis3OTYwOCAyZjVkYzJmYTBlNTZhMjUxMDFiMzBhZmRmY2Y0YzA1MzgzNjhiM2RhIGxlZ2FjeS10cnVuaworNzk2MDkgY2NhNGI3MmY0NTBiNjQ3ODY3MmE4OGRlZDk5ZWEzMjE0OGI4ZjZmNiBsZWdhY3ktdHJ1bmsKKzc5NjEwIDI1NWE0MDFjMTliMDVhYWU2YTYyZmE1MDI5MjEyOTIzZTJlNzc3ZWIgcHkzaworNzk2MTEgZWZlYmI3YmNhZThiMTY0YjAyNTEwNTNjOTI5YjIwZDdiYjU1NDVhYSBweTNrCis3OTYxMiBiNDc5NmVmY2E3MTY0ZmZmY2MyY2EyMTg0MDgxMzc1YjAzYjdiZDkyIHJlbGVhc2UyNi1tYWludAorNzk2MTMgYTFkYWJmNGU4ODY2NTYxYmI1NzU3ZjNhYmM2NGZmMDhjODg2ZWI1NiBweTNrCis3OTYxNCA3ZGM4Yjg4YmIxNWE0MWU0YjY2ZWI4ZTllMjNmMzg2YTc1YjA0NjI4IHJlbGVhc2UyNi1tYWludAorNzk2MTUgOGQ3MzE3YzkyNGNlZjgyNDI2OWVlZGQyMWU1NjgzODM0MTE1ODA5ZSBweTNrCis3OTYxNiBlZWVhMzQwMTRjODAyNjg2ZDU2YmUxODI0OTAxYjBiODRlNmQyOTUzIGxlZ2FjeS10cnVuaworNzk2MTcgMjc4ZTdlY2MwZjc3ZWYwZGU2MjNhMTNiMzMzZTQ2NmQwNjY0MjY0MiBsZWdhY3ktdHJ1bmsKKzc5NjE4IDlkNTBiY2QzZjBjOWNhODViNzgyZTM0OGU0ZDdjOTY4NWVlYzY2ZjAgbGVnYWN5LXRydW5rCis3OTYxOSA3YzkyMzgwODVhNWNlMGEyNmUyMTBhMzU1MjM5NmIwZDUxZGUwOWVmIHJlbGVhc2UyNi1tYWludAorNzk2MjAgMzc3YjI2ZDg3NmUwZGZlN2FlNTkxZWM2ZWQ2ZGUzZjBlZmU0YWNkMiBsZWdhY3ktdHJ1bmsKKzc5NjIxIDUzYWZjZGM5YWUwYWJjNjkxMGMzNWMyNTEwMmY4YmMxNzVjZThmMzcgcHkzaworNzk2MjIgZjc2YzNkZWM4NThiN2I5Yzg1MTAzN2ZlZDg3YWExZDNiYjk5ZjVhZSBsZWdhY3ktdHJ1bmsKKzc5NjIzIDcwYjdlNGE3ZjdjZTIwYjJlNzcxMTMzNjNiNzllOWNhYTc1MzUwZjcgbGVnYWN5LXRydW5rCis3OTYyNCBhYWI2NDI4M2QwMGExZmU2ZTQ0Mzk5NGIyYzM5MTA0N2I5ZjQxZDkyIGxlZ2FjeS10cnVuaworNzk2MjUgODRlY2IzNWEwNmJkZGY2Y2ExODZjNjkyYTU1ODc4ZTM2N2FlM2VmYiBsZWdhY3ktdHJ1bmsKKzc5NjI2IDFiNWQ1ZTc0ZjczOGY0MWE0NzQ4ZGJjZDcxNzYzYTYzNzE2ZjAwMDcgbGVnYWN5LXRydW5rCis3OTYyNyBmMGJiMTBjZTA1Yzc3MjY2NzBjNTEzZWNlNDQwMTVmMGEyNDMxODk3IHJlbGVhc2UyNi1tYWludAorNzk2MjggYWVhMzE5ZWEyNmE4ZTkwMzIzZTNjNTE3ODMyZWFkZTYxM2E0Zjc3ZSBweTNrCis3OTYyOSBmZmEwYWE3MGM3NDY4M2Y0NTBiOGZjNjlkZGU0ZjNiMWNiM2ExZWE5IGxlZ2FjeS10cnVuaworNzk2MzAgNzY1OTQzYzExMTViOTViZmRhM2M4MjhkNWIwZGUxZDY5OGEwZjA1MSBsZWdhY3ktdHJ1bmsKKzc5NjMxIGMzNGRkY2EzNjc4NmMxYzRkNzE4NWVlMzFiOWVjNzU5YTk2OTA1NDkgcHkzaworNzk2MzIgNTQ2MmM1YTkxZjhkY2I5ZGM4ZjQzZjUxZTI4OGI0YmQzYjE2NzBkYiBsZWdhY3ktdHJ1bmsKKzc5NjMzIDBhYjg5ZThiZGVkYzU3NjZkZTIxN2NhMjQ3ZTg2MzBlMjAwYTY1MmEgbGVnYWN5LXRydW5rCis3OTYzNCBhN2U5ZjhlMzU1M2Y3Y2E1Njk3MzFjMGE0NzYyY2Q2YTVkMGRjMWYzIGxlZ2FjeS10cnVuaworNzk2MzUgZDQ3OTllZTY0YzIzYjFjNTg0YjIyNDI3OWRkZTFmMzdkMGY3N2UwZCBsZWdhY3ktdHJ1bmsKKzc5NjM2IDQ4NzdjMTE1OTE1M2Y1ZWZkOTlkY2NjNWFiOGQyZjc3YjNlNGE0OGQgbGVnYWN5LXRydW5rCis3OTYzNyA0ZWQwNGEzOWMwYTkxYjkzZDU2YWY2ZWJmNTExZjM0ZTBkNzU5MDYyIGxlZ2FjeS10cnVuaworNzk2MzggNTQ5NjUwM2I4YjFhYmQ3MmYwM2Q0ODY1OGYwNjIyYzlkMjRiNmM4YSByZWxlYXNlMzEtbWFpbnQKKzc5NjM5IDg2ZjY5OTc2NjAxNjJjYmRkYTAxOTJjM2VjMDk3OTA4NzI0YTY5ZjEgbGVnYWN5LXRydW5rCis3OTY0MCBkMzg1ODk1OGRmZjUzZTYyNDM1MjIxYWIxOTU4N2Q1MzBlOTgyZTMxIGxlZ2FjeS10cnVuaworNzk2NDEgYjUyOWExNDJjYzQ5ZTZmMzEwYWI3NDYyZmQyZmYyMjYxYjViNGM0MCBweTNrCis3OTY0MiBkMzM0YTdhNTY4NDQ5OGNlN2VlOTU5YTQ4MDBiNjAzMDE5ODEyNjNmIGxlZ2FjeS10cnVuaworNzk2NDMgZWJjZWI3Nzk2N2RlODYzNDhhMTJmYWUwMDM5NDZkZTI5OTBjOTE2NSBsZWdhY3ktdHJ1bmsKKzc5NjQ0IDZkNDgzNWE4MWI2MzJhZDAyMGY2YjBiOGQ0OGI2MWFkZGJmZDAzYWUgbGVnYWN5LXRydW5rCis3OTY0NSBmYTY0MWQ2MDU0Njg4NGZkOWMwNjIxMTlmYWI3ZGFlYjc0YzAwZDcyIHB5M2sKKzc5NjQ2IDY2YjYwYTZlODE5ODQ2ZjZiZTBlYTY3OTE1OWZhMGJkNmM1ZDc2ZDIgcmVsZWFzZTI2LW1haW50Cis3OTY0NyBhODhlMGY2YWI5NDVhMTY2OTMxM2E0YTIwYWI4NWExM2M2ZTk5NWVjIHJlbGVhc2UzMS1tYWludAorNzk2NDggODllODdiYThhYjRlMGIwZjUzMTY0ZGRiMjFiM2RmMWQ0ZDgxMWNmYiBsZWdhY3ktdHJ1bmsKKzc5NjQ5IDZmZTVkYzE3NWMyNjRkZjJhYjEyMjUzODdhYmQ5MGVmZTVhOWI4OTIgbGVnYWN5LXRydW5rCis3OTY1MCBmZGQwMTM3NDMyZjg1MzczOWY0MTVmNzg1MGRiY2I5YzVmODI5NmU5IGxlZ2FjeS10cnVuaworNzk2NTEgNWViY2E2MjI4OTAzNmIzN2JjYjdmZDRlMDhiNDg5N2RhMTIxNTQ2NyBsZWdhY3ktdHJ1bmsKKzc5NjUyIDUwYjJjMGZlNWUyN2IzOWMyMzRjMTlmMmUzM2Y5ZTJhMzg3MDI2MjcgbGVnYWN5LXRydW5rCis3OTY1MyAxNTRkY2ZhMzJiMjAxYWVjZGFiNzZmNWZjZWMzYzhkOGVhNjJjYjNjIHJlbGVhc2UyNi1tYWludAorNzk2NTQgYTcwN2NhMjYwMzQxYjVmNmYyODBhNzI1NGVhNmE4ODQxOGQ2ZmU1YyBsZWdhY3ktdHJ1bmsKKzc5NjU1IDYyOWU3YjNjOGIyZDk3NmRjNzBmNjRlM2M3YWUxYjk3NTQyNDI1MWEgcmVsZWFzZTI2LW1haW50Cis3OTY1NiBlYTRjNmMwNjg5NTAwOWQwZTAzZjk3M2EwMjcwNjI2ZjgzYmNlY2FlIHB5M2sKKzc5NjU3IDY1OGIzOWU2NmRlZmVkNmY2ZGVmN2M2ZTMzMjFlMjJlMjIxY2MxMmQgcHkzaworNzk2NTggZDVmMmM3NDI1YjRhOTQ3ZWU4NTFiZmQ1NGMyOTJiZjljOGVjNmRkMiByZWxlYXNlMzEtbWFpbnQKKzc5NjU5IDQ0ZDMyYTZjOWUzNTdhMzNhYzYyNjM5YTc5OTMwMTc5MzQ1MGQwNDUgcmVsZWFzZTMxLW1haW50Cis3OTY2MCBkYTdiMDAwNmE3OTk3ZTc3YjVkNzhmZjNjODNlYzhlNTY2OGU5YmVkIGxlZ2FjeS10cnVuaworNzk2NjEgYWQ5NGFmOTEyOWNjYTNkZGRlNjI2ODgyNTg0NDMzOTdkYTIyZTEyYiBsZWdhY3ktdHJ1bmsKKzc5NjYyIDdjYTZhMzQzMWY5ZTI3Y2ExMTRmZjdjNDNiMzBjNGVjMThmM2Y4NTkgcHkzaworNzk2NjMgZTQ3YTZmZjViNTIwZjBkMWU1M2Q4MGM0ZDNlZWEwOTVlMGI3MzgyYiByZWxlYXNlMjYtbWFpbnQKKzc5NjY0IDI4MTFiZTk1YzhjODQ0OGFlZWM5OWI2ZTg2Y2QyNmZlYzUwNzhkYmMgcmVsZWFzZTI2LW1haW50Cis3OTY2NSBjNTRkZDNlZWVkNTZiM2YyY2VlMGVkYTQyNmYzYmRkZjE3ODcxMWI0IHB5M2sKKzc5NjY2IDhjOGJkYzExZTliOTkyOWM1NTExN2NiODg5MWNkNWRkYTFlZTE4YjcgcmVsZWFzZTMxLW1haW50Cis3OTY2NyAxZDQ4NGM0ZGJmNjA0Y2RiZDcxZDhkN2NmNGQwNjE5ZTdmZmI0MzdhIHJlbGVhc2UyNi1tYWludAorNzk2NjggNTA3ODIyMGJkMWVhNjMyMGJjMjc5ZmUxNTk3ZTk3MWRmMzgyOWM5MCBweTNrCis3OTY2OSAzMzRkNDU2MmM4NzVhOTAyMTU3OWQ0ZWNhZTU2N2IzOTA2MWY2ZDE2IHJlbGVhc2UzMS1tYWludAorNzk2NzAgY2Y4MDM3NzE4NGZmYWE2ODY0NDMxZTM1NDBjOWNlYjZiMWVhYTAzMSBweTNrCis3OTY3MSBjMmIyMTdmZTRlZDQ1NDgxZWI2OTJlY2ViYTg5MjJiZmRkZThiNTA2IHJlbGVhc2UzMS1tYWludAorNzk2NzIgYzBiNjI5OWI5M2VlYmU4NjZiZGRiYTg3NzRkMmJjZjhlYmVmY2I3MiByZWxlYXNlMjYtbWFpbnQKKzc5NjczIGIxYzAwYzdkM2M4NTVkNTE3MjY0NzZkZmE1NmYwNGIyODY4YTZmMWQgbGVnYWN5LXRydW5rCis3OTY3NCAwNTQwYTk2Mjg2OTg4YTRkYWE3MzQxMmI5ZDM3NzcwMTY4N2JhZmQxIGxlZ2FjeS10cnVuaworNzk2NzUgY2YzNGZjMWU4NDEzZTE3Yzk3ZmJlOWQzMDNkNDViMzlmMzQ4YWNjMyByZWxlYXNlMjYtbWFpbnQKKzc5Njc2IGIxOTQxY2ZmZmE1Yzg1MTYxZmEyMjAzMGI5ZTAxMmQzZGY1MDQzYWYgcHkzaworNzk2NzcgZDMxZTI2OWFhY2RlYmQwODI0OTM3MDU4NWU4YmJkY2Y4M2ViMjVlMCByZWxlYXNlMzEtbWFpbnQKKzc5Njc4IGE2NjU0NWRiM2IwNjk4YTk5MTc3NTRiNmEzZmE1ZmZhNTQwMDFjMDEgbGVnYWN5LXRydW5rCis3OTY3OSBlYjA0OWMzYzA4M2ZjODIxNDM2NDNhMDJiZjI0MTIyZWI3Nzg3ZGQ0IGxlZ2FjeS10cnVuaworNzk2ODAgMjc0NTFhOTY3NjUwMGQwNzQ2N2Y4N2I5Y2IyYThhOGZkOWQ4NzMxMiByZWxlYXNlMjYtbWFpbnQKKzc5NjgxIDUzZWUzOGU2MzhiZjkwZTk4M2U4YWY5MzM2Y2E3YjZiNTU0ZjA3ZWUgcHkzaworNzk2ODIgM2IxZDBhM2FkZmZmYWU3NDlkY2UyODhhMTc5MmVkOTdlZWY4Y2M4ZSByZWxlYXNlMzEtbWFpbnQKKzc5NjgzIGJkNTEyMWJmNjk5NmQwYzNlOWUxNWI3N2UxNDEyZjcxNDEwNDgzMDUgcHkzaworNzk2ODQgYmE0ODJmNDg4N2Y3ZDY4MDJjMmU4MTY3MTdmMTliMzUwNGU5MGYyNiByZWxlYXNlMzEtbWFpbnQKKzc5Njg1IGE1ODRmMjQzMTgwZDUyYTZkNmMyMmMxMDNlNzJkZDc3MzNkYTc2NzkgbGVnYWN5LXRydW5rCis3OTY4NiA3ZDI3MjQ4OGI2M2M5YTQyZjIzOGViNzcxZGQyZjkyNjM1Yjc1MjBjIHJlbGVhc2UyNi1tYWludAorNzk2ODcgNTgwZjJmNWJhODVmMzY1MTgxNjgxM2VjNzczNjk4YjJiNWI3YmI2OCByZWxlYXNlMzEtbWFpbnQKKzc5Njg4IDliMjRhYTM2YzA2ZjgzZTNiYjQxZmQ3ZjU1M2RlZDZjM2Y3NDNhYjEgcHkzaworNzk2ODkgZDE1MjM1ZDIxMzdjMTQ4NTgxZDI5NjQ5ZjJmMjc5MmQ5NGQ5NWMwNyBweTNrCis3OTY5MCBlYTEwY2I2MTM5MGFlYTIwZmJkOTY4YzAzNWRjNTJmMTUwOGU0ZGUyIHJlbGVhc2UzMS1tYWludAorNzk2OTEgNGE2ZTIwMTM1NDcwNjhmMDc3MGI3YmMyNjgyYmJkMDY0YjgwYjdjNCByZWxlYXNlMzEtbWFpbnQKKzc5NjkyIGM2Njk5NWJlZmU0MjQyMWI1NmU5MGFmMzQ3YTRlZDQxNTljNzQ5YjAgcmVsZWFzZTI2LW1haW50Cis3OTY5MyBiNjJhNjgyMTE3ZTAwZjM4NTI5MGE1ZTRkYWNiODVlZGZlZWE0OTU4IGxlZ2FjeS10cnVuaworNzk2OTQgMzUyN2Q2NTc5ZWMyOTBmZDkwZDliNGZjNDdlNmE3Mjc1MWZlNDViMiBweTNrCis3OTY5NSBkNWFiZDhkZmQ0ZjRiYWEwYWJmYmM4ZTYyZGU5NTMxNGQ1YWY5NzEyIGxlZ2FjeS10cnVuaworNzk2OTYgMDZhNDZmOTUxOTRlZjE0MTUxY2VjYzY1NjFiZDlhNjk0OTNjYmNmNSBweTNrCis3OTY5NyA4YWI5NjBiNjExYTZmMWI5MWJlYzg4YWIzMWI5MGZmZjI4NjEyNDMyIGxlZ2FjeS10cnVuaworNzk2OTggMzllZmQzZmM1OWVmYTdmMDhjMDg5ZGQyMDQxODRmYjQyNDA1MmJmNiBsZWdhY3ktdHJ1bmsKKzc5Njk5IDg3NjY2Mzc2ZDhiMDUwNDI2YWVmOTUzNTQzNTg4YzdhOGY0M2Q0ZGEgbGVnYWN5LXRydW5rCis3OTcwMCA0MGJjOGIxY2E5MzI5ODlmN2ExZjc3YjJhMmIxZjdiNTc2YmRhZjg5IHJlbGVhc2UyNi1tYWludAorNzk3MDEgM2EwZjUyNWI1OWI1OTc0OGMxNDAyZjQ0M2ExMDgyOTFmYzBmMGY5OCBweTNrCis3OTcwMiA4NmJmMzhlYTMxMjM2ZTNiZWFlMDkwNjlhODc1Y2I4MDIwOTk5Yzc2IHJlbGVhc2UzMS1tYWludAorNzk3MDMgYWExMjFhMzlhOTU2NzBlNDg2MjZhMGE3N2JkODZkY2FhNDdhNDMxMSBweTNrCis3OTcwNCBkYTM0ZDFmNDNjYjAwMDVmZmY5ZDhlZDc2YTFkMTdhNGY1NTcxNjAzIGxlZ2FjeS10cnVuaworNzk3MDUgN2ViOTA3Yzg1NGI0MmFkOWRiYmIxODI1NmI4ZjRhNDg4OWZiNGZkNCBweTNrCis3OTcwNiBjMjFiYzgwYzgzZjYyZmRkMTYxOWUwMTE3YzVjYzFiNTI2ZjZkZmYzIGxlZ2FjeS10cnVuaworNzk3MDcgYjI2MjVhY2MyNDg0ZTUwZWI2MDIzNWJkYTQ1ZmU5YTg3NTRkYTAyYiBsZWdhY3ktdHJ1bmsKKzc5NzA4IDJlNTU5YzBhZDhjMzQyOGZmMjZjMmZmMmVlZDcyODM1MjcxYTU4NmYgcHkzaworNzk3MDkgNjE5OTBmNzYzNDg1OTMwZTc5M2ViOWNmYzlkOTg3MjY4OTIzZDU5ZSByZWxlYXNlMjYtbWFpbnQKKzc5NzEwIGUxNDYxMzEyNGNjMTQyODg4NDA3ZTcwOWY2YjIzMjM0ZGYwMWNkN2QgbGVnYWN5LXRydW5rCis3OTcxMSA2NjE1OGU0ZmQwMjI3ZTQwNWU2YTJiOWZiNWQ4Y2ZkMDY5NDBjYWRjIGxlZ2FjeS10cnVuaworNzk3MTIgYTE4NDIyN2NmYjk0M2EwYzBkMDI1MjBhYWEwOWE4OTViY2Y3ZTMzNyBsZWdhY3ktdHJ1bmsKKzc5NzEzIGM3M2E2NThkYTZmYWMzNDQwMzJkYzQyODJiNDk5ODM5YzQ0Njc5NGMgbGVnYWN5LXRydW5rCis3OTcxNCBlMjlhMmUwM2U3MzllNjY2OWVkYzZhYTlkYzY5NTFiNGQ3ZWNmYWMxIGxlZ2FjeS10cnVuaworNzk3MTUgM2Y3ODY0YzFjZjNmNjE1NDNkNGQxN2E3ODVjMjU4ZmMzY2RkZTIxNiBweTNrCis3OTcxNiAzNDViNmFiMzJkNjU0ZjQ2NjRlODAyNmFkMDY0ZjAzODg4ODE5OTAzIGxlZ2FjeS10cnVuaworNzk3MTcgODJjMjAzNGI4MDk1Zjg0NDAzNDkxZjllZmNhMmZiZTM2MWIwMzA3MiBsZWdhY3ktdHJ1bmsKKzc5NzE4IGVlMzQyNWQxYzY4OGNmZDgxNWNjNTVjNjQzZjhmNjAzYTFmYTAyZTQgbGVnYWN5LXRydW5rCis3OTcxOSA0ZDg0ZTNmYTMzM2EyMWY4OWRmNzQ3NjExYWU0MTM4MTM0YTlmNmU4IGxlZ2FjeS10cnVuaworNzk3MjAgOWI1MDBhMmM4NTlkMDZmYjY3MTQzZGFiMTJiZThmNDllMjQ0M2E1MSBweTNrCis3OTcyMSBjOGY5NTUwMDNiMmMxYzVhMzc2YjNjZTcxOTNlY2U1ZTMxMjFlNjA1IHB5M2sKKzc5NzIyIDZhMjRkZWZjYzAwYjJjYjk4MDVhODJmN2Q3NTNkMTU4ZGEyYWUwYzIgbGVnYWN5LXRydW5rCis3OTcyMyA5NjVlYzYzNTZkNWQ4NDQ0MjBkZjA0NmI2ZjY1ZmFjY2ExN2MzNTJiIGxlZ2FjeS10cnVuaworNzk3MjQgODFjMmY1OTJlODA4MTBhODQ2NjFiZjJiODYxOWYzMDMyNjIyYTM5MCBweTNrCis3OTcyNSAzYzRjMGE3MTZhMThhNDhmZDUzZjBkNDJhOTAzOThlYjQ5MzhiMzE4IGxlZ2FjeS10cnVuaworNzk3MjYgMGNmYWJlZDQ2NjY5Y2U5ZDBhODRhNjFhZDRiMWM5NzkxYjg1Mjc2MCBweTNrCis3OTcyOCBkYTkzOWFiMmJmZTI3NzdhODA5NDFmMzA2Y2E3YzU5OGMyNzcxZWM0IHB5M2sKKzc5NzI5IDM5OTIxMDI2M2U3MTBjMDdhOGYxYzAxOGY3NDVhOTc1N2IxZWU5MDIgcHkzaworNzk3MzAgZWI0MTY3NjcyMTYzYzhlMzFlMDQxM2QyMzg5NjllMGQ5YTdlM2Q5MCBsZWdhY3ktdHJ1bmsKKzc5NzMxIDBkNTY3Y2U1ZWNlNGE0MzFkZmQxYjViNGZiODI1YWI2YTI3Y2U2YzggcHkzaworNzk3MzIgMzk1YTI3YTQ0YTllNDI0NmQ4ZmNiZTQ3NTU1NGQ1NDE4MTc5YjE1NSByZWxlYXNlMzEtbWFpbnQKKzc5NzMzIGQ1ODYyZDEyZDkyYWI0ZDQ0ZWE5YzMwYjYwODg4ZmJmYzExNjVjYmYgbGVnYWN5LXRydW5rCis3OTczNCBmOWMzNjhmZTFhY2YzMDhlMzI0YWJkNzBiN2M4NzgxMjRiYzc3ZjE0IHJlbGVhc2UyNi1tYWludAorNzk3MzUgNjc3N2NmYWI1MTUyZTJjZGZmZWNiZmM2OWJhOTJmZmU2ZGRkOTA0YSBsZWdhY3ktdHJ1bmsKKzc5NzM2IDllZTk3YTRhYjE1YzBjOWI3Y2M5NTE0NTdmNTRmMDQ1ZjhhM2RlYTcgcmVsZWFzZTI2LW1haW50Cis3OTczNyAyZGE1MTNiNDcyY2JlNTBkZTRmNjQ4YjM0MzYxZjgxOTJiODMyMGM1IHB5M2sKKzc5NzM4IGE4ZGRlMDI1YTZmOTlmMDFmMGI3OGExZGVmYWQxZmU1NzhiMjRjZGQgcmVsZWFzZTMxLW1haW50Cis3OTczOSAwZGVmMjhkYjc3OTk3ZWVjMzQwNDc4ZTlhODlmNDY1YWQ0MWMxMDNkIHB5M2sKKzc5NzQwIDQ2MGY0MWJkMGUzNGFjZWU2NDVjNDQxYmI3YjU1ODBiZWFlYWFlYzcgbGVnYWN5LXRydW5rCis3OTc0MSA1NzE1ZGUyYTQwNTEwNTFlMmFlMTg3MjI4MTczMWJhN2I2ZDhjMTkxIHJlbGVhc2UyNi1tYWludAorNzk3NDIgNThkYzRmMzE2ZmY2NDZjZGMzMTg2Zjc2YmMwODQ1ZDMzMDRiZDk5NiBweTNrCis3OTc0MyA4MWZlMWQ0NWFlNzdmYTQyYzkzMTA0NTRkZWVkOTQyZmU5Y2QyZWExIHJlbGVhc2UzMS1tYWludAorNzk3NDQgNWNhOGU0MTUwNGI2ZjkyNzlhNmQ1ZTY0YjBkMWJmMjBjZDU5MDIwZSBsZWdhY3ktdHJ1bmsKKzc5NzQ1IGMzOTllOTNiZjBlNDVkYzJiNzFhYjFmNDkzNDcwYTBhMzU4NDc1ZmMgbGVnYWN5LXRydW5rCis3OTc0NiA3MjQwOWIyMzE5NjczM2EzNDNmN2Y2NjYzMmZiNzhjMzA4YzYwYjcwIHB5M2sKKzc5NzQ3IGMxYjg3ZTEzZTlkM2ZmMTVjNGUxZmI1MjJmMTUwMTdmY2I1MjllMjkgcHkzay1jZGVjaW1hbAorNzk3NTAgMWU2ZjI2ODAxNmU0NzM5NGFlMWFiNWFiMTc5NzI0MDA2NjRkNTQ3YiBsZWdhY3ktdHJ1bmsKKzc5NzUxIGVjMWE1NDEyZmY5MGRlYWUzZWRmZWI0MTRmZTgxZjEyZjFkOTM2YzYgbGVnYWN5LXRydW5rCis3OTc1MiA3YWMzZDg4ZTM1YzIxMGZmMmUyMWFkM2Q0M2JkMGJkMjE2NGQ4OGViIHB5M2sKKzc5NzUzIDhlMDY0MTc4NTUwNzQ1M2YxNjRkMTI5MWQ2OTExNWQ1MTE3NmZkMmEgcmVsZWFzZTI2LW1haW50Cis3OTc1NCBkYzYzNDExYTAxMDRlYmE0MmJmNmYyOWM0ZWNjZTI2NWZlYTU4ZWNmIHJlbGVhc2UzMS1tYWludAorNzk3NTUgNWRkYTNmMzJhMmNlMmRkMDFmYjZjMzY4MTk5MTE2NWJmMDA5OWVlMCBsZWdhY3ktdHJ1bmsKKzc5NzU2IDhhYTI5NmZhNmQ2YzUzYTA3NGEzYjMwMGJkZTJkNTBiZjZjMDAxYTEgbGVnYWN5LXRydW5rCis3OTc1NyA0NWRkOWJmMzYxZWMwMzE1ZjE4OTdiNzM1ZDRmNzdjNTU0NGU2NDhjIHB5M2sKKzc5NzU4IDkzMDdkZWVlZTQxMmEyMjNmMTRmNTgzMTI4MjQwZmZjNTM4MDc1YjIgcmVsZWFzZTI2LW1haW50Cis3OTc1OSBmNDE2ZjJjMmMwOTllODQ3NTM3ZjU4OTNkOGFiNzI0MDVkMGFkYWExIHJlbGVhc2UzMS1tYWludAorNzk3NjAgYjZjNmY0MmNkZGRlNWRmNGRlZGFmNWJkZmMwZjYwYmYyNWVkZDRiZCBsZWdhY3ktdHJ1bmsKKzc5NzYxIDAyMjVkMjlmMGJkOThlMzM1MDEzZTE2YzE0NTY5ZDNkNzllYTZmOTEgbGVnYWN5LXRydW5rCis3OTc2MiBhY2M5MDBkYzE4NGJhOWIwYzYyZjU4MmY4ZjdjZWRjYTc2ZTIyZWNlIGxlZ2FjeS10cnVuaworNzk3NjMgMGVjZTk4Yjg1M2Q1MTA0MWQ1OWJmMGZhMTJjM2YxY2JhODM4YWZmNCBsZWdhY3ktdHJ1bmsKKzc5NzY0IGE2NjFjOTZiOGQxMGVjZjdiOGI5OWQ1ZDdjOWU2OGY4ODZkNmZmNWUgcHkzaworNzk3NjUgZmIyZDY0YTRkODcyYzMyYzUzN2U3NmM1Njg5MjVlYzE3NmQzNDNiMSBweTNrCis3OTc2NiBiNjlkY2Y2MzUwMmM0ZGYyNDJmOTkxMzJmZTZkZGU0NTc4MTJlNDNlIHJlbGVhc2UyNi1tYWludAorNzk3NjcgYzA0YTYyMjJjYzdkZDU5ZGYyNzViMmM5MjRiNGI5N2Y3ZjhkZmUzZSByZWxlYXNlMzEtbWFpbnQKKzc5NzY4IGE5MDNiYjM1ZWY0ZjUzNTc1MGUwNzJiNzkwYjllYWY0ZGY4ZGM2OTkgbGVnYWN5LXRydW5rCis3OTc2OSBjNTRjZmU4MjhiODRhM2NkMGExMDVlMWFlMDc5MzkyYjQ2YmFmNGFkIGxlZ2FjeS10cnVuaworNzk3NzAgODAwNDM1N2Q1YmNjMDM3MmU1MjE4NmZiYTJlY2M0YTI5Y2UzMmJjNiBweTNrCis3OTc3MSA3MTc3OWY0YTIwNzgyOTRiNThkZjI3NjM3NjE4YWUyZTcyNmE0OTZkIHB5M2sKKzc5NzcyIDMzYTAyZTRhYzRjMmYxZTdlOTdiZGU0NTEwOTVhNzRlMmIwYTMyYjYgcmVsZWFzZTI2LW1haW50Cis3OTc3MyA4OTNjNzRkNTQ3ZWU3MzgwNjJiNjZkNWUzYmYzMjM3ZGVhYWVkZTc2IHB5M2sKKzc5Nzc0IDFhYmYzN2RiMjU3ZDk4OGRiZjYwMzYxMDdiMTdjMDUxMzQ4ODViYmMgbGVnYWN5LXRydW5rCis3OTc3NSAyM2RiYzhhM2I5N2E5OTk5NmE3ZmIwNjgzZDg3OTY1YzhkNGYwZmM2IHJlbGVhc2UyNi1tYWludAorNzk3NzYgNjBjYTg5ODNkZDNiMWUyNWZmMzQzMDc4YzM2YjFiMmE5YmFhM2EyYiByZWxlYXNlMzEtbWFpbnQKKzc5Nzc3IDUzNTIyMDRjOGU4OGM1YmQxZmU3YTlhZTAxNzVhYTY1ZWFiY2ZkMmIgbGVnYWN5LXRydW5rCis3OTc3OCBlNjgxNWUxYjc1MDJjNjQwOWU0ZmQ3ZDBlYWUwMjM3MDExZTc0N2E5IGxlZ2FjeS10cnVuaworNzk3NzkgMWNjNGQyZGI1Y2Q2YmRiM2I0NmNmYjRjMDg0MWQwMDIxMTEwZmRhNiBsZWdhY3ktdHJ1bmsKKzc5NzgwIGNmZTVmYTM0ZGI0NjY2NGM0ZmU5ODMwYjE0NWRiZDMxMWFkYmE3MjQgcHkzaworNzk3ODEgYzQwZmJmZmY2ZDdhYmM4OGQyMGEwMTZlYjJjYjAzYTE1OTRjODEwMSBsZWdhY3ktdHJ1bmsKKzc5NzgyIDdmNjkxODFiNjUyYzBhOWJmYjU3ZjZkOTRmMmRmNjMyMTVhNjhlZWYgcmVsZWFzZTI2LW1haW50Cis3OTc4MyAwMmJkMmY2MGJhNWQ4ZDUyZjM2ODIyMDZmZTIyNWM0ZDc0ZDZlY2IyIHB5M2sKKzc5Nzg0IDI3M2NkYTJiMDA1MzgxMmJhZWZkMjIzNWIyZmU4NmE1ZmRmMzgyMzAgcmVsZWFzZTMxLW1haW50Cis3OTc4NSBmZGNiZWI5ZjM3NGM3MTVlNmZmZjFjODNiYWM0Y2RhYjA1NDU2OTY5IHJlbGVhc2UzMS1tYWludAorNzk3ODYgOTdlOTVjOWQyNmRhYmYyMTRmOGJjNGQ0NzgzMjE5ZmVmOWE1ZDZmYiBsZWdhY3ktdHJ1bmsKKzc5Nzg3IGU0YmRjMjk2ZmM4ZTQyN2IwNTcyNjNjNmE3ZDllYmIxZjNmYzk4ZWEgcmVsZWFzZTI2LW1haW50Cis3OTc4OCBlOTRkNDQ2YzZkMGVmOTM5Yzk5ZTJhNGM4YjM5ZGZhOGE0M2I5YTc1IGxlZ2FjeS10cnVuaworNzk3ODkgNzJjMGUxNWMwM2IyNGEyMzNhYWY0ZjdhZDBkYWQ5ZTE1ZDgxNmExMiByZWxlYXNlMjYtbWFpbnQKKzc5NzkwIDI0Y2I0MTEyYjczMTEzMDlhMjA2ZWU5Y2JkZTVkMGZjMDQ5OTNlYmEgcHkzaworNzk3OTEgMzJhOGI1MjBkNzY3ZDdjOWM0NzQxYjk5ZGQ1YmY2M2ZjNmZhNTI5ZSByZWxlYXNlMzEtbWFpbnQKKzc5NzkyIDI4YjgyMzk4M2ZjZTlkNzM5YjBkMTdkYmE5NGY4NWRlYTRmZDAyMDEgbGVnYWN5LXRydW5rCis3OTc5MyA2YmVlNDNlYTdjMDBlM2FhYzMzMWM2M2YxOWFlNjA1YjY1MjkxMGFlIGxlZ2FjeS10cnVuaworNzk3OTQgZjg3ZDJiMWJhNDI5MGMzMDM4MjI5NjYyNmMwY2ZkMTljMDFlOTlhNSBsZWdhY3ktdHJ1bmsKKzc5Nzk1IGMyYjA5M2Q2ODBjZjMyMzEzNGI0OWEyZGFmZTE1YzMwNjBhYTExNzEgbGVnYWN5LXRydW5rCis3OTc5NiAyZDBjZTMwNzgwOWI0ZDA2M2NjZDQ5YTk0MjcxNTNhNjFjMTg4ZTU3IHJlbGVhc2UyNi1tYWludAorNzk3OTcgMTFkZTJjMjhkMWEwOTEwNjU3NzZkY2VjMWVmZWRjYWRhNmE0NjA4NiBsZWdhY3ktdHJ1bmsKKzc5Nzk4IDcwODhkMTgzNDc3ODRmMjkwODYxZjJhOWZlMWU2MGViNjg4ZWRjM2QgcmVsZWFzZTI2LW1haW50Cis3OTc5OSA5ZWM1OThiNDdkYTRkYmM3MGU5YzgxYjcyZmY1MDhhNjYxZjFjNTc1IHB5M2sKKzc5ODAwIGE3YjUzYWQ3YWQ5NzI2Y2UyNTY1OTM3ZWUyMWY0MWFkYTljYTBkZTggcmVsZWFzZTMxLW1haW50Cis3OTgwMSAwYTUzYzI1NGExOTM3ZGMwN2EyZGZiN2U2NTBlNzViZTFkYTMxZmY4IGxlZ2FjeS10cnVuaworNzk4MDIgZTc3YjJmZjI0ZGRiMTRmOTU4NmFmN2I2NjY5OTFlMjMyNzM4ZGRhMiByZWxlYXNlMjYtbWFpbnQKKzc5ODAzIDdmMmQ3YmZiMDU2NzA2Y2YzNzgxMmY5OTE4YWMyNGNjZjZlOTEyZDMgbGVnYWN5LXRydW5rCis3OTgwNCBhY2U3MTE1NTBiNTk3ZWNhZmFmMjcxYTkzZTI0OTgzYzcwNDkzNTMwIGxlZ2FjeS10cnVuaworNzk4MDUgOWRlNTYzMGZjNjFiYTAwOWM4MWI1MWIxZmI1YTk4OTgyYzM4N2UxNSBweTNrCis3OTgwNiA4ZjQ1ZDM3YzU1YTE0MmJmNjNmM2UxY2I1YzIyZmY0MzU3ZDk2NTEwIHJlbGVhc2UyNi1tYWludAorNzk4MDcgNTg2ZTFjZTlmMjQzYzg0YTVmNWIzNzFkYzc4MjhiNmRlMTA2MmQ4MiByZWxlYXNlMzEtbWFpbnQKKzc5ODA4IDNjOWYwODg3ZWUzZjlhZWE5ZmI1MjIwNWJmOWYwNzQ4ZTUyNDY5YzcgbGVnYWN5LXRydW5rCis3OTgwOSA1ZGFhNzRiY2Y2YTE1OTA5MmFkYTEwNGQ2MDUxMmY5ZjVhNTdlNTJmIGxlZ2FjeS10cnVuaworNzk4MTAgM2NlNjZjNjkyMmFiYWRiYTNkODllYzQxMTU4NmMzZWNlYzBkNGVlYiBweTNrCis3OTgxMSA5ZmQ4ODUyZWNkZDRjMjAyZTkxMTkwOWVjMWVlMWZjYWQ0ZTM4YzkyIGxlZ2FjeS10cnVuaworNzk4MTIgNjY0MTczOTg0ZjJkM2EyMWZhYTRjOTc2OGJlMDYzMjc0NjUxZTE3ZSBsZWdhY3ktdHJ1bmsKKzc5ODEzIDllNWU5ZDhmYTg0NzRmZDFiNWZiOWJhMDAxZDA2MTZjYzA3NzhhOGIgcHkzaworNzk4MTQgMjVjMjg1MmJmZDE1YjU0MjkxMmUxNzU5MmVlYTIwMjBmYmZjMTZmOSBweTNrCis3OTgxNSAxYWRjZjRhNDY4NTYwNmU1YmZiNWEyNmNlMzhjNTRkNTBhNmE5YjY3IHB5M2staml0Cis3OTgxNiBjNWJlNTM3YjViYTkwOWQ5OTViZjQwMWUxMzU0MWY2OWUyOGQ1MzljIHB5M2staml0Cis3OTgxNyA5MjIwNzlmNzI0YTYyMGMyM2E5MDQyZjM0ZTdkZmQyYWRmMmMzMmU3IGxlZ2FjeS10cnVuaworNzk4MTggOTQyNjJkMGUwNjRhNWVhODhmMzM3ZjUwZTBjZjkyZWQyZmM5MDNkOSBsZWdhY3ktdHJ1bmsKKzc5ODE5IGVlZWE3OGRmOGEzYzcyZjQ3MzY3YTk0MDZmNTFjMDk2ZDYwMTAwMDkgcHkzaworNzk4MjAgOTYwMDYyNWMxNWFmYTljMGE0MjBiODgxMTQ3MjFiNGJhMjlhMWU5ZSBsZWdhY3ktdHJ1bmsKKzc5ODIxIGMxMDAyNGFiZDExOGZmY2FmY2M3ZGRmZTI2OGYxNzdiZDE4MjA3NWMgcmVsZWFzZTMxLW1haW50Cis3OTgyMiAyZmZiMjI0YzYxZjZjN2QwYmIyYjg2Y2Y0NTIwZmYyYmI1YjExMGZjIGxlZ2FjeS10cnVuaworNzk4MjMgMjZjNmRlMThjZDMwYjVkYjBjNDc5NTYyOGYyYjMzZDA3M2VlYTkwMSBweTNrCis3OTgyNCAzNjdhYzQ4YmYwODVhNWEzYjNiYTFiM2NjMTZhOTNiN2EzZWNhZTQ1IHJlbGVhc2UyNi1tYWludAorNzk4MjUgYTBjMDgzZTFkMzFmZGQyZjkzZDNhNDZiZmE0NzU4ZTQ1YmYxZDM5NiByZWxlYXNlMzEtbWFpbnQKKzc5ODI2IDk1YmY5N2RjYzU5MTkyNjAyMzg0ZmY5ZDlmZDMyYmI5YWRhNTUzOTQgbGVnYWN5LXRydW5rCis3OTgyNyA3Mjc0NjFkNjZkMTAyMjRkYzc5MGYzMDM5MTIxM2Y2ZDM0OTk2MTllIHJlbGVhc2UyNi1tYWludAorNzk4MjggN2Q4OWQwZGFlOThlNTU3MThlYmI0YTQ2MTEzMGQwNGE2ZWVjMmNjNyBsZWdhY3ktdHJ1bmsKKzc5ODI5IGE2NWE5NGIwMDkwMmVjMjJjYmVmOGFjYzhhMjE0N2I1Y2EwZTY3ZTYgcHkzaworNzk4MzAgMzc3NWE0ZmQxMWMyYTczY2ZhMTljMDZmNTFhOTM0YmIyMTZmNmIxOSByZWxlYXNlMjYtbWFpbnQKKzc5ODMxIGQ0ODgwMWI4NjM4MDFmNzBmZjU1ZDBhOGRlZDllMDdkMjhlMTkxMzMgcHkzaworNzk4MzIgMmI5M2UzMTY1OTYxZTFhOTIzMGRjM2FkZDk0YTFhNTEyYzM5OWJmNCByZWxlYXNlMzEtbWFpbnQKKzc5ODMzIDU3NmIwZTg3MzZjN2ZlYTc0YTdmY2MzNmJkYzMxNmI5MzM5YWQ5ZDAgbGVnYWN5LXRydW5rCis3OTgzNCBmMWVhMDNlMzdmZjZlY2I3ZjEyNDAxMWQ0N2M4NDY3ZmY2OTUwZWY1IHJlbGVhc2UyNi1tYWludAorNzk4MzUgN2M3NmE3YjQxMTYwMzVjOTZjOWNjZWIzYzVkZTI0MTYwZjY4Njg0NCBweTNrCis3OTgzNiA2ZmViNWFkZDc2MmFjNmUxOTUxNGExYjRiNjE4YWJhMTA2YmM0NDA5IHJlbGVhc2UzMS1tYWludAorNzk4MzcgYjY2ZmM4OGZhOTZkMWJiNzY2MjM4M2EyNGM5ZmM2NjQ4OThlOGIzYyBsZWdhY3ktdHJ1bmsKKzc5ODM4IDY0ZmRmNjZmNjliMGI3OGI1NGMyYWIyZGZkYzMzM2IzMTZiNzBiNjkgcmVsZWFzZTMxLW1haW50Cis3OTgzOSA3Nzc0ZDYwYTg5YTkyOGU1YzYxMWM5N2QwZjE3MDhjZGU1ZjUxY2EzIHB5M2sKKzc5ODQwIDY5NmNiNTQ5NmEwYjg2ZDJkYzkwMmZhNzEwNGRhZDk3YjgzZWM2ZTIgcmVsZWFzZTMxLW1haW50Cis3OTg0MSBjNjczMzllMzcxYTliMjVkMWQzOTNiMzUxYmRmNDRmMTQ4YTA1MTI3IHB5M2sKKzc5ODQzIGM4Y2ZiMWQwNzQyOWNhMTExYTI5M2JmNTIyYzU0ZGVmYmM5NDU2NmIgbGVnYWN5LXRydW5rCis3OTg0NCBiODg4NDJmNjUzNGRlNDhlMTZjMTNlYTFjYjAxNjY5ZmY4MTQ1OWRiIGxlZ2FjeS10cnVuaworNzk4NDUgYjYxMDhmNzIwZjY5ODMzYTM0Y2I2ODliZmFiZjEyYzE4YjBhN2NhNyBweTNrCis3OTg0NiBmMTk0YTNjZWVmYWFjMDBkMWQyMWU3MTkxMDQ1YjhlYTA2MjdjZTY2IHJlbGVhc2UyNi1tYWludAorNzk4NDcgMmYyODgzMmRjMzZjM2IwMWE4N2NlMjI2YTg2NjE2MzZjOGYyNGI0MSByZWxlYXNlMzEtbWFpbnQKKzc5ODQ4IGE3M2Q2MDQ1MWI0OTBjNmExYTcyZmZiMWJlNzRmZWIyZjlhYTJhNTggbGVnYWN5LXRydW5rCis3OTg0OSAyMGE1OWJhZGFmYTFjMjIxNGNhNmNiOWJlYWFhOGFlMDIwZGI0ZWQ4IHB5M2sKKzc5ODUwIDNjZTRhYWMyMDkzNTc3NjAzNWYwN2EzMjJhYzVlODRkODcwNjQ4MDggcmVsZWFzZTI2LW1haW50Cis3OTg1MSBkNTFhMmM3Y2M4MTFhMTJhODUyNGUzMTQ2NTBhNGIxOGQ5NjBjY2M2IHJlbGVhc2UzMS1tYWludAorNzk4NTIgNWIwZjFkNWJkNTVhOTdjMDA2YmVkMTMwMTU0NzdkZWNiMjU5MGIzNiBsZWdhY3ktdHJ1bmsKKzc5ODUzIGJiY2M1NGFjYmQ4YTJkOTA1NGE3Y2I3NzE5MGNlYTVjMzVhMTA1MmUgcHkzaworNzk4NTQgMzMyN2RmMzJjMTE3Y2FjMmIxZjI1NTUxNGI1ZjU4NWIwMzM0Njc5NiByZWxlYXNlMjYtbWFpbnQKKzc5ODU1IDYzYWY0OTZiMTQ5Mzk0NzNmZTY2NzBkMWEzMmRkZWU4MDQ2NWQ5YmEgcmVsZWFzZTMxLW1haW50Cis3OTg1NiBmNGVjNDA3M2JkMmU1OTY4MGQxZTU1OTY2ZjBjMzA0YTc0ZGQ1MTlmIGxlZ2FjeS10cnVuaworNzk4NTcgY2U5NzliNjRiMjNhNzkwYmE0MTZlMjY0NTIyYWEzOTY1ZGQyMGVjOCBweTNrCis3OTg1OCBhMzFmODBkNWQxYTE2ZWJmNGQ3NzE4NTQyMWNhMDMzYzc3MWUzNjMwIGxlZ2FjeS10cnVuaworNzk4NTkgMDFjMWFhM2E0OWE3Y2QxZjU1ZjQyYzdlNjBhNWY3MmI2YWVkYzVjMSByZWxlYXNlMjYtbWFpbnQKKzc5ODYwIDU2OWI4NTlhZGUyMDc3MzAyZTZkNTliZmViMDFiZThlMGNmYWI0NjYgcHkzaworNzk4NjEgODI3M2Y4OTk0YTg4ODBhZjNhODcxYjRmMzJkZjM3YThmYTViOGFjZCByZWxlYXNlMzEtbWFpbnQKKzc5ODYyIDljNDhhYjcyOGNlMGQ0ZjMxNTdiOGRhOWFkMTI4NzZhZjIxMTBlNTggbGVnYWN5LXRydW5rCis3OTg2MyAyYjRmY2ZjMzVmMTIyM2UwYTU2MzRhMDUyMjFlYzA4ZTFmMjU2NTJmIHB5M2staml0Cis3OTg2NCA3MTI5NzBiMDE5ZjcwY2IyMTFjNzAzOTlkZDEwZjVlMDc3MTMwMGE0IHB5M2sKKzc5ODY1IDZjMWFkZTllYTFlNDQ1NGQ2ZjNhMTYyM2FkOTQ3OTY4M2I4ZWE2ODQgcHkzay1qaXQKKzc5ODY2IDliYThjNmU1MmZhMGRkZmI3ZjQzYWIyZjgwMDNkYzIzOTExMDNmNDYgbGVnYWN5LXRydW5rCis3OTg2NyBiZTA0NGI4YzM0M2EzNWY1OTM1NjE4MzY1OTMyODJiOGQxYTM5N2E5IGxlZ2FjeS10cnVuaworNzk4NjggYmE1ZWM3NTYwOTMzMzdlMzExNDRiYjIxYzFhY2Y2YzA2ZWYxNTNlMSBweTNrCis3OTg2OSBlZWMyZGIwOWE2YzEyMzkxZjNiMjVlMjk5NTQ0YTQ3YzUwNzRkYzYwIHJlbGVhc2UyNi1tYWludAorNzk4NzAgODFkOTBjZWVlM2JkZmE3ZmQ1YzZkMjE1OThiN2VlODU5YzMxODc0ZiByZWxlYXNlMzEtbWFpbnQKKzc5ODcxIDg5MmRiMThjNzgxNTQ4MjBiNDFmMDBkYjBjZDQwNTU0NjY5YmVmNDYgbGVnYWN5LXRydW5rCis3OTg3MiAxYTZmM2QzNmJiZDk2MWIwNDY0OTY3MTNmN2U1NjkwYWE4ODhhNTQ2IHJlbGVhc2UyNi1tYWludAorNzk4NzMgODJhZjExM2UwMjBiOTdhZjc3NDUwZDgxYjk4NTRhNjc3NDY1NTc3MSBweTNrCis3OTg3NCBlM2NmOTc3ZTJlNjQ2N2U1OWRlZTIxN2M3NTllMGI3OWEyNWE3NzMyIHJlbGVhc2UzMS1tYWludAorNzk4NzUgOGQ4ZjdlMDgyZWY2YTg0Y2UxMjA0MDg3MDdhOGM2NzY0ZTRkMDg5YiBsZWdhY3ktdHJ1bmsKKzc5ODc2IDljZTUzMTYxYzNhOWRkZGFmMjMyMGJmNGE1YzdjYTkzZGE5MWE4OTUgbGVnYWN5LXRydW5rCis3OTg3NyBmYjZjZDhhZDhmNjllNmIwYTAxZjZlMTNlNzU5ODRmYTZiYjZlNDdlIGxlZ2FjeS10cnVuaworNzk4NzggYzA5NTdkYWRhNWMyN2RmNjJmNDNmYmU4YTA3NDlkN2E3ZjJlZTRkMCBsZWdhY3ktdHJ1bmsKKzc5ODc5IGQ3OTU5OWIyMWU4MTE1Y2Y5NjdhMzJlOTM2MWUwZmJkNmQwY2QyZWYgbGVnYWN5LXRydW5rCis3OTg4MCBjOWU0ZTEyZTljYjZlMDZkNTczZDllNzZlNDg5NTIyYTZkMDY4ODA0IGxlZ2FjeS10cnVuaworNzk4ODEgZjM2OWRiMGQ1ODQ1NjU5NDI1N2MzMzAzODAxMjQ2N2FiZTdhMGE4MCBweTNrCis3OTg4MiAxMGYxZTYzYjJiMzc0ODM4MTBjNTQxOTY5YzkxYTk3MGY1NTI1NTRjIHB5M2sKKzc5ODgzIGI2MTlhYmNlMDI2OTc3NmIxYTMyZDA2ZjZjZTk3YjU0ZjA3NmI5MmIgcmVsZWFzZTI2LW1haW50Cis3OTg4NCA4NWVkNzQwYmUzMjNkNzFmYmM5MGYxZWVlOGMzMTMyZWI3OTY5NDRjIHB5M2sKKzc5ODg1IGQwYTc0YjY1MDVkM2M3ZGU1MDk5YTY5NTI1NTQ4ZWIzYjBiMTcxOGEgbGVnYWN5LXRydW5rCis3OTg4NiAxYzliZWZkZTgzODVlODM3ODFkNzU3ZTIzNWQyYTVhNTJjZDM5NDRmIHB5M2sKKzc5ODg3IDdlNTViMjFjNjY1OGI1ZTNhMDg0NDE2MWE2ZWMwY2JhM2VjMmVlYzggcmVsZWFzZTI2LW1haW50Cis3OTg4OCBkZGI3MzI0Mzk2N2JiMmFjNDhjOGY4N2UyZjEwN2YwMDRlNTgzMDJlIGxlZ2FjeS10cnVuaworNzk4ODkgZThhYTlhN2RhZjAzMjg1YTI2ODNjOWJjOTY5MjYxMjhjMTc2N2RlZiByZWxlYXNlMzEtbWFpbnQKKzc5ODkwIDIwZGFkMjAwNThlNDI5Nzg1OTBhYjdhZTU4M2NlMGQ1MGQ5ZWUzYWMgbGVnYWN5LXRydW5rCis3OTg5MSBhOGU5MGNlY2M2OWUxNTgyN2E5YzUzODY1NmNmOTZkNzYxYzA2OTQxIHJlbGVhc2UzMS1tYWludAorNzk4OTIgYzMxYzQzZDZhZDc5Mjk4OWUxZDNjOTNhMzE4NWMwM2FmZjc3ZmI2NSBsZWdhY3ktdHJ1bmsKKzc5ODk0IDdiMDA0NTRiYmZlMGE2MTYwYjk2YTgwZWUwNDI5NGZjYmIzMGQ5ZDAgbGVnYWN5LXRydW5rCis3OTg5NSAyNWMzYjNhYmYzZTdjOGI1M2Q5NTgwYTM4Yzk3NzU5YjcyZGFmMGQ3IGxlZ2FjeS10cnVuaworNzk4OTYgY2IwYjg0MDBlN2M0ZjljYzU5NjNkZWRmNjdlYTYwNDQ1NTNiZDdmMCBsZWdhY3ktdHJ1bmsKKzc5ODk3IDM4YjI0MjRmODVlOGFjMGQ4M2QzMDkxZGNmYmM2OWQ1ZGVlMmU4MDUgcmVsZWFzZTI2LW1haW50Cis3OTg5OCBhMzliZjM4ZjJlMGMxNzc1ODY5MzZmMmFlYmI1Mzc3NWJmYTg2YWNkIGxlZ2FjeS10cnVuaworNzk4OTkgMmU4ZDJkN2M0M2MwYjU4ZWNmYjg2OGRjMzc0MzViYzdlZDI1MTkzZSBsZWdhY3ktdHJ1bmsKKzc5OTAwIDczZTVlM2VhZGQ4OTNlMDA5ODVmZjhjYjA3OTE4Yjk3ZjY1MGE3MTYgbGVnYWN5LXRydW5rCis3OTkwMSBhYzA3OGE4YzNlMWFmMDlkM2VlYWRjYzkxZjQwMDhjY2NlMzQ0NjEyIHB5M2sKKzc5OTAyIDc2NjBjNTNkNTcxOWZlNzM0ZWUzZjllMzE1OTUxN2IzYzE1MWQwMjIgbGVnYWN5LXRydW5rCis3OTkwMyA4MjI3YjY0ZThkNzg4ZTIyZDhjYWIxOGExODhmNDFkNGYyNmQyYTlhIGxlZ2FjeS10cnVuaworNzk5MDQgYjg5OTgxMjhkZTA4YjU0ZjE2YzU5NzE2YjA5ZTRjOTc3NmM2MjgxZSBweTNrLWNkZWNpbWFsCis3OTkwNSBlMjQ0NGYyODc5YjQzNWI3ODdiMzA0ODQ2MGU3NDQyZjJmZTc3YjRkIHB5M2stY2RlY2ltYWwKKzc5OTA2IDhlNWM3MWM3NmU4ZmExMmYyOTJlYWJhOGM0OWJkODZkZWE4Y2U5N2YgcHkzaworNzk5MDcgNmYxOTU5ZjY2ZDY5MGEzNzMxYzFhODdiY2M4YTYzMTQwMTk1OGFhYyBsZWdhY3ktdHJ1bmsKKzc5OTA4IDI0Y2U0YTAwODliZTMyOWMxY2Y5OWY1M2JiNWNkMzBjYWMzNzAyNzIgbGVnYWN5LXRydW5rCis3OTkwOSA3Y2JmZjBiMWViNWQxODdhNjJiMjIyNWRiMzQ4Y2I2YmQ0OWI3MzQxIHB5M2stY2RlY2ltYWwKKzc5OTEwIGExNjI4YmQ5N2JiNjg1NGY5MzVhNDJiZjgyZDJmOTM2MjQxZmE3MzQgbGVnYWN5LXRydW5rCis3OTkxMiBhNzkyYjljYjBkN2FhYmExZGRlMDAxNDczZGU2OWFiYzlkMWU0Mjc5IHB5M2sKKzc5OTEzIDI0ZDdmNTU0MDBkM2ExYWI5NDgwOGZmODU0ZmE1OWUxZTllYzlhN2EgcmVsZWFzZTI2LW1haW50Cis3OTkxNCA4MzdmM2JiMTU3NWZiODhmY2QxOThlNDdhNTYwZWUxNTczN2RhMTRkIHJlbGVhc2UzMS1tYWludAorNzk5MTUgNDk5MTliMzFmZjIwMDc2NmNmMjk2YTA1OGU4NzgxMTIyODc4NjdmNyBsZWdhY3ktdHJ1bmsKKzc5OTE4IDM1YTlkYTAzOTY2MzAzMWUwZWUyNTdjYTExYzlmNzlhZDg3NGYyYzYgbGVnYWN5LXRydW5rCis3OTkxOSBhNWVkMDM3NzNlNGRlYjc1Y2VjN2FkNWQ5Yzc3ZTI5NmU3MDUzYzc4IHJlbGVhc2UyNi1tYWludAorNzk5MjAgYTViN2RjYjlhZjhmYTI4NTdkMjlkNzdlNjlhYWRkMjM2YzlkY2I4ZiBsZWdhY3ktdHJ1bmsKKzc5OTIxIDNlYzE5MzFmZDI1NjRiNTk4ODRjYjdlZjViYjk2NGQxNTc0ZmM5OGEgcmVsZWFzZTMxLW1haW50Cis3OTkyMiA0NjRmNjY5NjIwZmFkNjUxNzUyODM0ZTNhZTVhZDNiNzMxZTQyZjg2IHB5M2sKKzc5OTIzIDVlMDM4ZmQyYzE0MzI4NWZiNDhmOGJkZmI3YWQ4NTlmY2UwNmFiZDEgbGVnYWN5LXRydW5rCis3OTkyNCBjMDBiMDcxOGZkNTMzYTcyMGU5MWI2MGI1MTc2MDYwZWJjNjdjYTQ3IGxlZ2FjeS10cnVuaworNzk5MjUgN2E0ZDAyNmI2MzkwMDI0MzRmNWJmOTk1NTZjNjdkODMyOTAzYTRhNiBsZWdhY3ktdHJ1bmsKKzc5OTI2IGVkMjYxNjMwNzBmNThjMWVlODdjNDM0MWZjN2JhNWQ3ZGViZWUwOGUgbGVnYWN5LXRydW5rCis3OTkyNyAzYWU3MDc4ZDQyNzhiMmU3ZTVkYjg3Y2ZkNDkwY2JkYTZkODgxMjMxIGxlZ2FjeS10cnVuaworNzk5MjggNjE1NTBhMTMwMmIwN2E3MzE0MzZhODRiMmQ4NmViMmJhYjNiMmZiMCBsZWdhY3ktdHJ1bmsKKzc5OTI5IDRjYzE3NThkY2RmNzhjMjcyZjY5OWQxZWU0OTI2ZWFmNTIzNjhmNmYgbGVnYWN5LXRydW5rCis3OTkzMCAyYmFmMWNlZTcxZjJiNjcwODRhYmNlMTc1ZDY2ZjA1ZDk1ZjlkYTA1IGxlZ2FjeS10cnVuaworNzk5MzEgODA1NTEyMzI5Yzc1MzRjNDM0ZmFlMDNhMDg3NzZkYTVmNGUwNjgzOCBweTNrCis3OTkzMiA1NWZkNGU5ODdiMjBlMDcwYjJhMjI5ZGY5YjAyZjA1ODFhYWJlYmI5IGxlZ2FjeS10cnVuaworNzk5MzMgOGM2ZTRiN2FkMTU4YmVhMjk4NzcyN2RlYmI5ZGExZWUyYjc4N2Y2OSBweTNrCis3OTkzNCAwNTkyZTc4NDE3Nzc3NGY5OTlmYmRhYWNmMWI0MWY0ZDY4ZDEzYzEzIGxlZ2FjeS10cnVuaworNzk5MzUgOTdiNTg4ZWU2MmYwZmI0NjNkNjVmYmVkZDE1N2ZmMmQ5NTZlNzk3MCBsZWdhY3ktdHJ1bmsKKzc5OTM2IGYzNGNiNTAxZjhmN2UzMjYzNGM3OTMxNDFmYWRhYzRhODBhNTdhYzcgbGVnYWN5LXRydW5rCis3OTkzNyA1NzBkOWFjODRkNzc3YTk5NGRmZTFkZmVlMDhjYjkxNWQ5OWI2NzdjIGxlZ2FjeS10cnVuaworNzk5MzggNzMwMWRhNDkxZDViYjViNDZiYzg1MDhkOWEzYWNmMWFmYTFhMTQ3NSBsZWdhY3ktdHJ1bmsKKzc5OTM5IDM0ODA5Y2ZkODYwMTY4NTJlYjk5ZWM2NzgzMzA1YTE3YTA4NWVmOWYgbGVnYWN5LXRydW5rCis3OTk0MCA1Zjg3ODJhYTBmOGMyOGEzNGJjN2IwMDk4YWQ2YWViOTAzMjRmMzQ2IHJlbGVhc2UyNi1tYWludAorNzk5NDEgNDQxNjgyMjRhYzYxMDgwN2FhZTI4ODM2ZTg0Y2Q0YmVmZTFmYWU0ZSBsZWdhY3ktdHJ1bmsKKzc5OTQyIDhmODllZjkwOTAwOWI1MWE1NDY4NTMwMWRkYTU3Y2E0NmIwMTNlNWIgbGVnYWN5LXRydW5rCis3OTk0MyBkMDA3ZjVlNWUxZjAxOWEyODAxYzE1NjIxZjM2ZmQwOTdkYzY3ZTFhIGxlZ2FjeS10cnVuaworNzk5NDQgY2Y3YzliYTJkZTZlOTQzNGJkNWM2OTRiYWI0N2YwMzcyNzNjMDE0NCBsZWdhY3ktdHJ1bmsKKzc5OTQ1IDRmZWMyZTVlMzM5OGFjYmQ5NDQ4N2M5YzEzN2NkNzA0MmZlOGQ5NWIgbGVnYWN5LXRydW5rCis3OTk0NiBlMGUzNTVhZTk5YjI2MjZlYzYwMzkyODVmYTJhZDRmYTQ3Yjg2ZDBhIHB5M2sKKzc5OTQ3IDAwNjFlOWUzMjljMDU2YTAwMzQ3ZGVkOWJmMzQyYzZlODc4ODFhNTcgbGVnYWN5LXRydW5rCis3OTk0OCA3OTEyMzY2YjQ4ZDhiMDZkMTdmOGM0NWM0OTNiODA3Yzc0YjY2NWQzIHB5M2sKKzc5OTQ5IDk5MjZlMTJiZjQ4NTA2NGQxZWJhYzg0NWY5YjY3Mzc3MzdlNTRiYzMgbGVnYWN5LXRydW5rCis3OTk1MCBlMTU5M2UxZTY1MmVlYzg3YjU1NDU0M2E2MTZjM2JhN2NlNTVmMWU5IHJlbGVhc2UyNi1tYWludAorNzk5NTEgNjljMzcyMDNmZmMxZDc5MDYxNzU4YzgxY2YyYmI0MDE4YWE1MmQ1NiBsZWdhY3ktdHJ1bmsKKzc5OTUyIGYyNDRmZWU5ODlhOTgxY2ViZDBhZGRkYTIxYzM1MGIxN2VmYjk3NmEgbGVnYWN5LXRydW5rCis3OTk1MyA4NGFhZDY3MDQ2MGU1MDc3OWRlMjEwOTc0ZDI4NjNlYjY0OTYxNjc4IHB5M2sKKzc5OTU0IDkwMjgwMzNlNmZjYzNkNDgyNzEwYzMxNTAyMWEwYzE3MzQ3YTZlOTMgbGVnYWN5LXRydW5rCis3OTk1NSBmNDcwNTc2Mzc4N2I1ODlkMGNlYmY2OTBhYjNhMzVhOGYxZGY2ODMyIHB5M2sKKzc5OTU2IGE2NWY5MWJiYzJmYjI5NWI5YWYwOWRlZTA0Nzk4N2RiZDQ5YjdiMTcgcHkzaworNzk5NTcgMzBjODAwMjI4NzRlN2M5MDU0ZTQzMDEwMWYxYWRiN2NiZTEzODM2MiBweTNrCis3OTk1OCA2NmFkMjY3YTczYmY2MmEwYzkxYTQ3NjczMTA5NThhYjU1MTM2OThkIHB5M2sKKzc5OTU5IGQzOTk1NTIxNmMwN2EyY2ZkOWVmNDJhY2U3NGVjOTEzODVjM2FkNGEgcmVsZWFzZTI2LW1haW50Cis3OTk2MCBjMmUxZGUzZjExZmMxYjI3NmFiZDIyNTc1NDkxODM1MzNhYTc4MzBjIHB5M2sKKzc5OTYxIDAyN2Q1NzVjNjg5YzEwMjA5YjQyZmFhMGJiN2EyMWEyZWIyNTIwOTMgcmVsZWFzZTMxLW1haW50Cis3OTk2MiBiNGExNTVlNGQzMTI5MmRjMGEyOGVmMThkYTg0MjEzOWRjYjViOTYyIGxlZ2FjeS10cnVuaworNzk5NjMgOGVkOTk2ZGMwZTUyMDliYWE2Y2U1NmRiMTgzOTA4NmQwMGFlYTVlZSBsZWdhY3ktdHJ1bmsKKzc5OTY0IDlmOWNiMWM1N2YyYTdkY2QzNzFiYTg3MzJiN2JkM2VhZGYwOGM1NWQgcHkzaworNzk5NjUgYzQxNDc4NDczZWFlYWU1MmZkOGU5NDY0YTc0MTRhMmQyZGZlNGIxZCBweTNrCis3OTk2NiBhODRkZGQ4ZGU5ZDFkYmEwMmIzYjFjOTM0NWM3NzIxOTZlNDk4ZTA2IHB5M2sKKzc5OTY3IGRkNDNlMGM5MzE3NWNhNjRiMWViYjBkYWQ3MDAxMDY5MmM4OTZlMTEgcHkzaworNzk5NjggNGFkOTUyYTZhZjk1NzFkMTQ3ZDBhZGMwZTZmMzE2ODZhZjU4NmNiNSBweTNrCis3OTk2OSBiNGY2MGRmMzFiMTQxMmVlZjM2MTQ5ZWU0ZGM1NmJmNzZmOGQxMjliIHB5M2sKKzc5OTcwIGUzNTE1NzkxMzdmM2U0MjRjMGI3MGE4MTNmNWQ0ZWEyZDgxM2RiM2UgcHkzaworNzk5NzEgZmQzY2FlYTkyY2Q5ZjkxZWM4ZGJhNDdhNGY3MDE3YWM4NWM5MjA2MCBweTNrCis3OTk3MiBjYjZmMmM4OWY0MzcyY2MzNjZkMzZkNzY4MTY5MmUyYWU3ODhlNzY3IHB5M2sKKzc5OTczIDA5M2UyYjcxNTY0NTc0OTE5MTc3ZGRhOGQ5OGY1ZTFmOWE1MmY5MTEgcHkzaworNzk5NzQgZDY1NDM3NDkyNDI2MTk3MDgyMjQ5ODQ1ZmY4ZjEzOTEwYmQ4ODgzMCBweTNrCis3OTk3NSBmNWM0ZmMwZDMzNzMzNmRjMzZhNTQyZGZlMTE0Nzc3NjhhMWU0ZTAwIHB5M2sKKzc5OTc2IDFhNjJiZWVkOGQxNWVmOGRhZWY0NTlmZjg3MTVlMTI2ZDdkYjBlMjIgcHkzaworNzk5NzcgM2I2ODhkYTE4ZjUzZTM5NTFhMWM2ZGVlOWUwYWVmZjM0NDg2Njg4ZiBsZWdhY3ktdHJ1bmsKKzc5OTc4IDc1ZjkyMDlmM2ZiOTkwZjk5MDc5OTJmODRiYjMzZTk4ZDQ0ZjEyZTMgcHkzaworNzk5NzkgYWMwNjFlZjE0ODdlNDdiNjk3YjNiYTIyMzk0Mzk4NmZkN2ZjNDRhNyBsZWdhY3ktdHJ1bmsKKzc5OTgwIDlkZTI2MWNmNWJjMjk5NmM2OTUyZDZmYTgzOGY2MmZkNjhiODdiYjEgcHkzaworNzk5ODEgYWZiYmM5ODNlMGJkMDQxMjk1NGE1YzViYzNiMjkwNmJiMTkxY2NkMSBweTNrCis3OTk4MiBkMDNmNWFjYjRiODdlZjZlNWYxODNkZjU4NGU2MTUzOWFmNjJiYTdlIGxlZ2FjeS10cnVuaworNzk5ODMgNjEwYjY4NWUwNTI1YmQ2YzQxNzQwZmQwODk2N2ZhOTFiMWU0YmNlYyBweTNrCis3OTk4NCBhMjkyOTFjZTRmY2UzYzFkODQyZGYzMmQ4OWQwMWY2NTMyMjczMGE1IHJlbGVhc2UyNi1tYWludAorNzk5ODUgZWRlYjA3YzQxMWFmMjk0NzVjMGY0NTIyMjAzZWJhODVmYTMzZjk5OCByZWxlYXNlMzEtbWFpbnQKKzc5OTg2IGU0NzViNzcxZGQ0YzBmOThkMTRmYzMxNjgwZTZmNmMyZjJhN2NkZGEgbGVnYWN5LXRydW5rCis3OTk4NyAyYWU1ZjYwZTI3Yzk5NTZkYWVkYzYwMTEwMmU0NDRhNGUxZGI2Mzg4IGxlZ2FjeS10cnVuaworNzk5ODggNTY4MGJhMmRjOWMyNmVlY2ViNjQ3MDNlNGNmOWEwOGE4MjBjMzJmOCBsZWdhY3ktdHJ1bmsKKzc5OTg5IGJhZTM3OTAzZjc5NzVkNjc3OGNhM2M1MjRlYWIxZmRiNjQ5OTkzNTMgcmVsZWFzZTI2LW1haW50Cis3OTk5MCBhZDJmZjFjMzZiMWFjMTZjZThmODRhYTkyNjUwZmI0Y2E1YjU5YWE3IHB5M2sKKzc5OTkxIGRlNTE1MTQwYjVmYmU0YzRiMGNiZWE5YjMwODY0MzliYjdjZDU2ZjggcmVsZWFzZTMxLW1haW50Cis3OTk5MiBmZWRiMWY5MzIyZGYzYzNmYTExMGFkNzljM2Q0ZTNhYTI2YjI2MTUwIHB5M2sKKzc5OTkzIDgxZDBlYTZkMmRhMzdhMzM5MWU4MTllNmY2N2JjNGE4YThjMmFmNjIgcmVsZWFzZTMxLW1haW50Cis3OTk5NCBlNjk3MmYxYzlkNmQwMTY3MTVjOWM0MWJmOGNlMGRmZTk5ZjhjNDUxIGxlZ2FjeS10cnVuaworNzk5OTUgNjMxNDRmMTQ1NGQyMDBmOTE3YjExMGYxZWY0ZDhhMGRjYmIzY2RhNSBsZWdhY3ktdHJ1bmsKKzc5OTk2IDQyZTYwNTdjZjI4ZmQ3YzkzZTMxODhlZjA4NDEzMWRkZGE1ZGE0ZDggcHkzaworNzk5OTcgODYwZmNlZGEyZDg5NDBiNTQwNzc2MTg4ZGVlYzRlZTc5YmEzYzQ4MCBweTNrCis3OTk5OCA0ZjEyZGNiOWNlNmYxMTc3ZDk3ZmQyZDI3ZjI4MzEyMzhiNmU3ZjA3IHJlbGVhc2UzMS1tYWludAorNzk5OTkgODEwNTkzOTA4NTI3Nzc0MDQ3MDBkNTI1NTgzMzRiMDM2NmEwODc1ZSBweTNrCis4MDAwMCA5OGExNWZjMzhiOGJmMzFlN2Y3OGY3ZDdmYTM3Y2VhOWU5N2NmMGNhIGxlZ2FjeS10cnVuaworODAwMDEgMTE2M2NkOGMzOTU2ZGIzMjMxZTlhMTM0ZTA5MTYyZTNjNDliMzhhMiByZWxlYXNlMjYtbWFpbnQKKzgwMDAyIDkxZWJjZmY1YmIyNGMwYzhiNDQ3OTM4NWRmNjEzZmMwNWY5ZmUyZmUgcHkzaworODAwMDMgNTU3NjY1NGU0YjkxYTU1YzljZjkwMzAwODU4MGQ2YTlkMWJmYmI4ZCByZWxlYXNlMzEtbWFpbnQKKzgwMDA0IDcxM2YxZjZiZjMzOWJlZjdmZjM0NGQxYTFhYTY1MjJhNzdiNzlhMTcgbGVnYWN5LXRydW5rCis4MDAwNSA5ZDEwMzkwNDg0OThhODhlYmUxNTU3NjAyZDA1NjJhYTEzNzZmMmJmIHJlbGVhc2UyNi1tYWludAorODAwMDYgYjgxZDgzYTg5OWYzNjc5ZmRhZDc4NTVjZTE2MDc2YjBiNTVkOTEzOCBweTNrCis4MDAwNyA1N2JiZmNlOGIyNzg4OGY3NjU3Mjg0OWJhYmVkZTk2MmViOWQ1ODc5IHJlbGVhc2UzMS1tYWludAorODAwMDggYTJmNWIzYjE5ZWIyN2VlOTFmNjA1MzBiYjA3MzUzMGM5YTYzYzg0OSBweTNrCis4MDAwOSAxOTUwNzBlODVjZTE1MjA3ZTc2MTIwZTg1M2EwMGRmMTc4MDY0MmU1IGxlZ2FjeS10cnVuaworODAwMTAgZjFjMDM2ZGUxOWI3ZDE2NTUzMThmOTZhMjZlMTcwYjQ2ZTFiMjE3NSBweTNrCis4MDAxMSA4OTc1MmMwM2YzNDJjZTY0NzFkYjYxMzU4Y2U5Yjk1ZDE3OGRkYTRlIHJlbGVhc2UyNi1tYWludAorODAwMTIgNzdjNDllNzM1MjQ5NzlhYWQ0MGNlMDMxMDI5NzQxNWM0OWIyM2Q0MiByZWxlYXNlMzEtbWFpbnQKKzgwMDEzIGQ0NTA3ZjYxNTMxZGNhNGE4NjUzZDgyZWJkZTRkYjQ1YmZhM2ZkZjcgbGVnYWN5LXRydW5rCis4MDAxNCBiNTM2YThhOTZmYTlhMmQ3NzIxZDUxYzJkNWMxZGU2NDBkNTg4ZDQ4IGxlZ2FjeS10cnVuaworODAwMTUgMDkxNTg4OTRhM2IwNWYyYjNlZWVlMzAyNDlhZmM4MzAwYTZhMzI4MiBsZWdhY3ktdHJ1bmsKKzgwMDE2IGQ0ODY3MDU4OTJhYjZlMWI2MmJjMGVjZjA5MjM1MDY0MjAxYjQ1ZWIgcHkzaworODAwMTcgMGExY2EwZDc0NGE0MjY5YzUzNmVjODYzMDNlZGY4ZDM2YmJiYzVmOCBsZWdhY3ktdHJ1bmsKKzgwMDE5IDFhOTBmZTM3YjU5ZDczNmMzNGM5OTJmOTQ5YmFmMjNmOTVkMmU5ZjMgcHkzaworODAwMjAgNjBhN2U1OGExMGRhZGJmNGU2NWI5N2ViNDMxOGE3ODRjNjU5OTk3NCBweTNrCis4MDAyMSA1MjM3NzIzNWQwNTUyMTEwY2ZkMzA0MmExNDY0YzYwMmE3NjYxNWNiIHJlbGVhc2UzMS1tYWludAorODAwMjIgNjNiNTgxMjRhNTU0YTM2ZjFhN2MzYzAzZmQ1NmQ0MDQ3YTUxZGFhOCBsZWdhY3ktdHJ1bmsKKzgwMDIzIDdhMzkwZWI1MGRmMTM0MzIzMmI2NzVmMGIwN2I3NjkyOWQyNmQwYjQgcHkzaworODAwMjQgNjUxZWRmZDJkYjM4ODgyZjg1ZDg4OTBkNThjYjkwNGRlNWE3YmY5ZiBsZWdhY3ktdHJ1bmsKKzgwMDI2IDVlOGU2ZTdlZWRiMjE0YzUxMjFmNzk5YTcwZjA5NTRhYjcxYzA5MjUgbGVnYWN5LXRydW5rCis4MDAyNyBhOGJlYjYxNDkyMmY5MDJjOTY0OTM4OGVlNjA0NDY2ZjBlYWIyMzhmIHB5M2sKKzgwMDI4IDI1MTczMjA5MjYwMTM1NGYyZmM5ZTJhYTExNDQ3YmJkOWViNWI3OTcgcmVsZWFzZTMxLW1haW50Cis4MDAyOSAwMTVlOGY3ZjUyNjRmNGQxMTE0MmQyNmQ1N2EwNjJmYjJkMGVmNDNmIHJlbGVhc2UyNi1tYWludAorODAwMzAgNDdhNTdkZjY5ODk2ZmNmMGY1Nzc4ZDQzNGVjZmE4ZTJlZDFhZDQxNiBsZWdhY3ktdHJ1bmsKKzgwMDMxIDc5OTQyNjlhZDNhMWZhNzhkYTQ5YzYwMDUzZDU3NzE1N2I4YjI0ZTYgcHkzaworODAwMzIgYjhmMjk3Y2RmYWRlZjFmZGU0ZTZjODA5MWVjYjlkZWE4ZjcyMjZkYyByZWxlYXNlMzEtbWFpbnQKKzgwMDMzIGRmMmU5ZThkNDI4ZWNmZGIzOWRlM2JhZWFmZTY2MDNjMzQzMmQ2NGYgcHkzay1pc3N1ZTQ5NzAKKzgwMDM0IGI5MmI1N2ZmYjMxZTE2OGVmNTIxN2FlMTlmYWQyNDI1NjU4YWQ5MDcgcHkzay1pc3N1ZTQ5NzAKKzgwMDM1IDc2OThkMWExMGIwMWMwMjNjZGU2NDRmMjk3NzJjZGJlM2YzMDZkMDYgbGVnYWN5LXRydW5rCis4MDAzNiA3YmNlZTcxNzBkN2JjMzcyMGQ5Mzc5NDJjYTAzN2MwMWRmYzgwYTUxIHB5M2sKKzgwMDM3IDZmZmU2ZjhjYTA5MTY0NjM4NDI5YWIzZmUyZTE0NDA3MzllYWYzNzcgcHkzay1pc3N1ZTQ5NzAKKzgwMDM4IGE1Yzg4NmVhNGY2ZjMxOWNjMzgzZDhkOWQ3MDYxOTJkYmZhNWYxYjYgcmVsZWFzZTI2LW1haW50Cis4MDAzOSBkNmRlZTNhZDI1OWI1NmJlZGM3ZTgyM2RhMDAzZmUyOTZjYzIxNmIxIHJlbGVhc2UzMS1tYWludAorODAwNDAgZDRlMjEwMzIzZjcxMzc0MDI2NmM4NjVmYmVjNzZhMzczMDFiNzM2OSBweTNrCis4MDA0MSAzNDFhNmJkY2NkMmU3MmEzODhjZTc2YjVmNGQyYWVjZWY5N2NiMzEyIHJlbGVhc2UzMS1tYWludAorODAwNDIgYTkyMTNmOTFhYjE2OTgxOGI3Zjk1ZDFhODkzMTgyMzE4YzFkNDMzMSBweTNrLWlzc3VlNDk3MAorODAwNDMgMDgyNGYyNjg2MWJhYmMzZjIxMmE5ZDM2YjI3MTMwNjFlNTg5ZjJkZiBweTNrLWlzc3VlNDk3MAorODAwNDQgNzAyYjZjOTllNzU3YzcxMDY0MWQ0ODgwNTAzZTNkMjFlNjFjODc1MCBweTNrCis4MDA0NSA3ZTBjZTVmNjNhM2JjYTQ5YWQzMTFmZTgxMTEwMzVhY2U2Yzg3OWM3IHB5M2staXNzdWU0OTcwCis4MDA0NiBiNGM2NTM0MzJjYjY3NGM2NjkyMjZmNzM1YWQwOTRkNTFjNDc0NGE1IHJlbGVhc2UzMS1tYWludAorODAwNDcgMWRkNGVmZGVmZmYxNTg3NjNiNTc2YTc1NGMyY2JkZDNmYzcxOTdkZCBweTNrLWlzc3VlNDk3MAorODAwNDggYjk1YmEwY2MxYjdlNTExOTNlOGFlZTI4NGE1YTM3YWQwZGI2YjY3NCBweTNrLWlzc3VlNDk3MAorODAwNDkgNWM5OWZkYjdkYTczNzVkMzA2MDkyM2ZiMWU0YmVhMDE1ZDQwZGQ1MyBweTNrLWlzc3VlNDk3MAorODAwNTAgY2I4NzQ1ZmE2NTg4NDI5MWQyMGU1NThmZjBkMmE3MzM0N2YxN2U5OSBweTNrLWlzc3VlNDk3MAorODAwNTEgMzZiMDA1YmMwODhmZjUyYWFhYWNmZTZjMTk3YmMxNjE4ZTg2NGZhYSBweTNrLWlzc3VlNDk3MAorODAwNTIgZjFhMmYzYjZiZmM2NDg1M2Y3MWJiYzgyM2VhM2ZjZmYwODI3NmYzMyBweTNrLWlzc3VlNDk3MAorODAwNTQgNWI2ZmU3ZDM1OThiY2UyMmFjNTEyYzg0MzNmNGVkY2M0YmQ1OGQ2ZCBweTNrLWlzc3VlNDk3MAorODAwNTUgZTk4NGY5ZTE1NjY2Y2U2ZDMyZWVhMTNjMTEwM2YwZTkyNWQ1MjFmNiBweTNrLWlzc3VlNDk3MAorODAwNTYgNTE3Y2M0ZDU5ZTEyZTI0MTg1OGI5MTk2ZWZiNmJmNDJmYTU1NjQ2NiBweTNrLWlzc3VlNDk3MAorODAwNTcgOTllOWM4ZDY5MGFiOTQ4MDcxM2NhNzVkYjA5ZDQyZmQ2ODg1MWM5NSBweTNrLWlzc3VlNDk3MAorODAwNTggMjg1NTM1NjRmMWM2NmE0NjA3MmJlN2YwN2U3NGRiNTE2N2VlOTBhNSBweTNrLWlzc3VlNDk3MAorODAwNTkgZmQ3YTEzZjBlYmJkZGM0MGE4NmI4MzBhOGZlNDMyNWY2M2VmYzQ2MyBweTNrLWlzc3VlNDk3MAorODAwNjAgODY5M2ZjMDZhYzhlYzhlMWRjZmIyODU2YjdjMGM1YmQ2MjU5NDM0OCBsZWdhY3ktdHJ1bmsKKzgwMDYxIDczNWJlZDZjOGUzNjFkODQ3MThmMWI2ZTk2NWJhZjMzMjYxZTY3ODcgcHkzaworODAwNjIgNjQ5M2FlNzI3OTFkMzdiY2YxN2MwMmEzOWU0NTgwOTI4MzUzY2NkYSBsZWdhY3ktdHJ1bmsKKzgwMDYzIDQ1MGM2OTIxMDU4MWU5NGNlZDg4YTFhYmFmOWEyYTNlNzcyMzRjZDUgcmVsZWFzZTI2LW1haW50Cis4MDA2NCA2YmJmMDdhM2UwMWI1YzA4MjVhOGQxODhjMzI2ZWU5NzQ3Njk4ZmMyIGxlZ2FjeS10cnVuaworODAwNjUgYmFlNzk3NjUxNjBkMjIwZDYxMjk2ZmUxNjkzOTc3MzI0NzYzNzIxYyBsZWdhY3ktdHJ1bmsKKzgwMDY2IDYyZDExNzg1MjA0ZjQwODU2ZjJjM2VjZmYyOGE1ZWU1YTdkOTBlOTIgcHkzaworODAwNjcgMzY0ZjFhYzMyMjY0ZWY3ZDQ0ZGFhNTE5OWUwMDAwODVkNmUyM2M2OSBsZWdhY3ktdHJ1bmsKKzgwMDY4IDIxMjY3YmYwNzIwZTAxNjYxYjczZTEwYjgxNzQwOWE2YjdlNmZlYmUgbGVnYWN5LXRydW5rCis4MDA2OSBmYTkzMDBmY2IwMDQwODdlMjhlMDc1MzU0YzZjMDU3ZGM0YzVmNzJiIGxlZ2FjeS10cnVuaworODAwNzAgNjEwMmQ4Njg2YWFlZGE3OWY2MGQ3YTA2NGExNDllYzM5NjYwM2RmZCBsZWdhY3ktdHJ1bmsKKzgwMDcxIDAxZDFmZDc3NWQxNmI1NjlmMmNmYmYwYjE5NjRiNzZkNWRkNjViMmQgcHkzaworODAwNzIgMjIxNjNkOGNhZjNlMzNjYmU1ZGE5Y2ZmNjdkZDJiYjM2ZDIyMmFkMiBweTNrLWlzc3VlNDk3MAorODAwNzMgOTA2OWNhNTFlNjE0ODI4MzZhNTM2Nzg1MzJjNjEzZWNlMTYwNGEzOSBweTNrLWlzc3VlNDk3MAorODAwNzQgZDQ0M2Q4NWY2MmMxNzdkNjUxMThkZDg4MmY0MDkxNDY2ZGZkMmU5ZCBweTNrLWlzc3VlNDk3MAorODAwNzUgY2ExMWM4MzBmNWNjOWRhY2RmZDU5M2EwMGYxNDQ2ZmE4ZmY1YWU2YyBweTNrCis4MDA3NiBiMTI3NmZjZGMzYmQ3NTAyMGIwMjQwNTFiOGIwZjY2NTVjZjk2YWNlIHB5M2staXNzdWU0OTcwCis4MDA3OCBjZGJjYTdjMzQzMWQyNmYxODU2OGI4ZDcyMmRkMmVmYjFhMTdmY2U1IHB5M2sKKzgwMDc5IGQzNTFlMTVmZWUyOGYwOWRkZDk2NjgxMDZmZTlhZWFiYmNkMzBlN2IgcmVsZWFzZTMxLW1haW50Cis4MDA4MCBiNDA0MzZiY2Y0YjJiNDZkNTM2M2MxNDkzZGQxNTg4MmFkOWRiZmUxIGxlZ2FjeS10cnVuaworODAwODEgYzVhNGQ5ZDcyZjk4MjE5MjM2ZTI1OTFlMjg1MzEzZTE3ZjEyN2RjYSBsZWdhY3ktdHJ1bmsKKzgwMDgyIDdlODZmNDQyMTJkNjU1YTU0YjI1NGQ3MDhlZTQyMGE2MGNhMWMwNzMgbGVnYWN5LXRydW5rCis4MDA4MyAxNGYzMTBhNmU0OTI4NmM3YWVmOTU3NDFiMmNkOWRjODZjNTcyZjI1IHB5M2sKKzgwMDg0IDQ4NWUzNGVjMWExYThiOTYzNmVjOGVlNGUyNmQ5ODg0NDM0Y2E4NDQgbGVnYWN5LXRydW5rCis4MDA4NSA3NjQ5NDYzOTkzNTJkZjBjY2I3OWFkN2M4MmZmOTNjMDI0ZmYzYTVlIGxlZ2FjeS10cnVuaworODAwODYgNDIyOTY2MmVkZTg3MmRiZWMwMjdkNWJjMjU0MjlkYjlhZjcyYjVmMyBsZWdhY3ktdHJ1bmsKKzgwMDg4IDNhNDQ3M2JlZWFmNTIzOTVlZGQ1NTJjNjdkZDk4MzMyMDJjODkyMGIgbGVnYWN5LXRydW5rCis4MDA4OSBmNGJkM2IyY2IwMDBlYjMyNTc5YWIwMTQ3NDAzYzM1YWRlN2YyNTZmIHNpZ25hbGZkLWlzc3VlODQwNworODAwOTAgNWU4NTFiMjllZDk1YjE4N2QyNDFmMmEwZTgwNDJhZmY0NTY2MTIzMCBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwMDkxIGMxZDFmMDAwYjQwNGU2NTFkZWZkYWJkYjZlNmQ5NzhjMDJlOWE5NTkgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDA5MiA3M2Q3OGZlZjkxZDcwZmEyZmUyNmVjNzkxMzA4NjcyZTNkNmFiMDlkIHB5M2sKKzgwMDkzIDVmYTQwMmE0NmY1YTdmN2UzNjA2OGI1MzI2Y2ZmMGJmNzYxOTk2NmMgcmVsZWFzZTMxLW1haW50Cis4MDA5OCAzMjQwMTY3MTg2MjE4MDg3ZjUwMDNmZDUwNzdiMTVlYWFiZDQzMzIyIGxlZ2FjeS10cnVuaworODAxMDAgZjk4YmQ4NWFlYmIwZjUzNzE4NzU4ZDUxZTkzY2NjZjcyYmJlMzkwZiBweTNrLWppdAorODAxMDEgN2I5ZTMyOGY3NTMzMjFkMGI5N2ZlNzRiY2VhM2U0YTc2N2UxODk5MiBsZWdhY3ktdHJ1bmsKKzgwMTAyIDUxYjg1NTE2ZDdmOTNhODNkMjNhNGIwODQ0YzkyMDg3MDhlNWIyM2QgcHkzaworODAxMDMgMzVhYjVjYmQ3ZTc5MGMwMjNlNTg5MjU5MDNiZjU1NjVmNWYyMTJiNiByZWxlYXNlMzEtbWFpbnQKKzgwMTA0IDgyMGI3ZTBhNmYzOGIxYjU0MTRjZTBiOTJlZjE4NGZkNDJkNzQ1NTkgcmVsZWFzZTMxLW1haW50Cis4MDEwNSAxMzdiNDI0ZTJmNzg0YmQ5ZGI4NDU2NTVhNzJkNTQwNTAxYzMwMTIwIHB5M2sKKzgwMTA2IDgxMjk3OTc1ZDI1M2U5Y2YzN2JlNGZmYmQwZGI0ZGNhYjNkMDZiNTUgcHkzaworODAxMDcgYWZiMjVjMmQwNTYxOTRjZGZjZWQ4ZTRmMGU0OTExOTRlZmZjYmFjZCByZWxlYXNlMzEtbWFpbnQKKzgwMTA4IDAwNTUxMGFjMDk5NWI2ZmZhYzIwODAwMTk3MjE0MDJhYmI3MGRiNmUgcHkzaworODAxMDkgODdkMTIwYjllZmYyYWUzNmZiNDJiZjZlYTc2NjE0MTIyMTRlNzY2YSBweTNrCis4MDExMCA1NDdmMzBhMGQ0YjFlZDY1NjhlMjVkZWM5NjNmMzYyZWYzM2ZjOTczIHJlbGVhc2UzMS1tYWludAorODAxMTEgNGNiYjBmZGViZjczN2NhZGI0MGFjZWY5MmViYjAyZDc2NzA1MzU0MCBweTNrCis4MDExMiA5NTE3OGUxN2U5NjEwY2Q4MDQxMzg2YmEwY2NlODAyOGJiN2YxNGJmIHB5M2sKKzgwMTEzIGJkYWEyODlkOWYxOTlkOGUxZTZmOTRlM2Y2MzU3N2M4MmIzNDdmYzEgcmVsZWFzZTMxLW1haW50Cis4MDExNCAwNDQyZTdhNDE4Y2ViZmMzOTQ3ZDdkM2Y1OTdjZTEzOGNkM2QxY2YyIHB5M2sKKzgwMTE1IDExNjQwYzFhNDYyODhhODZlMGU0ODA0MzBkMDQ1YTY1OGMwZjY4YTMgcHkzaworODAxMTYgMTViMDljY2ZhYzdjZmRlZWY2YzQ1YzRjOWM0NDg0YTBiMzRjYjc1ZCBweTNrCis4MDExNyA2MzM1Y2YzNDVhZmFlODEzYjJjNWIwZjUwNDAyMDU2ZGI4MWNlMjMyIHJlbGVhc2UzMS1tYWludAorODAxMTggNDRhNzUwN2Y2ZGI1NDI3ZjU3ZGI5NTVlZGEwYTE3MWEyYjc2MjVkYiByZWxlYXNlMzEtbWFpbnQKKzgwMTE5IGNjMTBhMTUyNzUyMWQxMDZiOGVhM2E5NzlkNGZhMjM5NzJlZjBmNTAgcmVsZWFzZTMxLW1haW50Cis4MDEyMCA0NWFlZGNhZTljNDc5YzIwNjY2MDRhZGE2OWNlODY2ZDgzNjQ0YWUwIGxlZ2FjeS10cnVuaworODAxMjEgOGFiNWJiYWU1ZWZlOWU4NDlmMDg4NWNjMTQzNDFmM2Q2MWIzMjc0NSBsZWdhY3ktdHJ1bmsKKzgwMTIyIDgxYmJkNTY3MGVjMzllYzcyNzIxY2VmNTMwYmJkZDZmYTVkOWUxNzkgcHkzaworODAxMjMgNjNiODE1Y2M2ZjRiMWZkOWIwMThlMmI5MjJhZWUwM2JkZDU1ZjVkNiBsZWdhY3ktdHJ1bmsKKzgwMTI0IDM2OTZkMTdhMTBiM2E0NTI4MWVkMGFkOTIwMmM3NzllNjYxZjQxMmYgbGVnYWN5LXRydW5rCis4MDEyNSBhNzQ5MWQ0N2Q0NTQ2ZmRjMmJmOGUwNmVmNDNiZGYwOTg5Y2EyMTgyIHB5M2sKKzgwMTI2IGNlNjI0Y2NhMjAyYWU5MTRmMjg4OWY3OTM5YmI0Y2Y4MmRhZWEzY2IgbGVnYWN5LXRydW5rCis4MDEyNyA0NjBhOTg0YTllZDU3MDdkMmZhMzQ3YTdiYjY0ZDU0OTQ2Mjc4N2FhIHJlbGVhc2UyNi1tYWludAorODAxMjggNzczNDA4Y2E1ZWU2MzNmZmRhYzBjOWZkZjAwMWJiNGViN2VkYWE0ZSBweTNrCis4MDEyOSA3ODRhMDIyNjY0ZTNhMmMxOWIyNTM2NzlkNDM2MjE5ZDc0N2JkMmI2IGxlZ2FjeS10cnVuaworODAxMzAgMGEwMWEzZWExNDBhOTdlMDQ4MmRhM2Y4YmY0ZjgzODc1ZmZhY2I4MyBweTNrCis4MDEzMSA2OGZkNzBhOWU3N2FmZGNlN2VlOWM2NzMyMDZmMjQxYTZlNDIyOWU3IHJlbGVhc2UyNi1tYWludAorODAxMzMgNWUxZGJjM2FlNzY3OTdiNzc3NjA4NzA1MWI3M2MzOGY1MzcyODEzZiByZWxlYXNlMzEtbWFpbnQKKzgwMTM0IDFhMzMwNGNlOWEyZTdhZmE2YWRlM2RjZTBhMGQxOWFiMzdlMDI0ZDEgcmVsZWFzZTMxLW1haW50Cis4MDEzNSBkYzc2NWJjYTI0YWRkODRmYjVkZTU5NTAxMWVjZjljZTg3Y2E5YWM2IHB5M2sKKzgwMTM2IGU1MzkwZmVkY2I2YjE2MmMzZGRjYWUyMTlmNWM3NTAzMjE2NGE0YzIgcmVsZWFzZTMxLW1haW50Cis4MDEzNyA3YjY5ZTYzMGQyMzc3OTBiNTY4NWY5ZjIwODMwNGY4ZjQ3OTc0MjYzIHB5M2sKKzgwMTM4IGM1MzJhZmIwZmE4OTI4MDJlMTNmZmNmZmU5YjU0M2Q0ZTQ4MTY5ZTEgcHkzaworODAxNDAgMDQ2Zjk3ZWQ1Njc5NGVmZGU3NTJkOGRiODNhMjc1ODRhZTQ2YjM4YSBweTNrCis4MDE0MSAwZTM2Y2MwZDZhYjAyMDMzNjk5MjEzOTVhYTExNjJlMjJkNmVlZGZiIHB5M2sKKzgwMTQyIDczNGRkMmVkYTFjYzRjYTRiYTYwMTNhZjVmNjk2NGE3NWFjODNkZDcgcHkzay1qaXQKKzgwMTQzIDczMjFjN2Q2NDJhZGRhOTk1ODMzMjdjNzZiMGU0NmY3OWNkMmQxYzAgcHkzaworODAxNDQgMjVlMzVlMzgzOGM3NzU5ZmQ3ZjdjNjhiMjdjZGIxZWE0ZTBlODljNSBsZWdhY3ktdHJ1bmsKKzgwMTQ2IDdiMDY1NjkyOWNkYjkyNDUyNTBiYjRjZDMwNTQxZDgwNzNmMjFkNjAgbGVnYWN5LXRydW5rCis4MDE0NyAyOTM4YmY4OTk4NjM4OTVhNGQyYTJjODljNGJiYmQ3ZTc3MjhlNzcxIHJlbGVhc2UyNi1tYWludAorODAxNDggNGYxMjIwZjNlMmM3ZGI4YTI2NzUxYTQ0YmEwYWIxYzQwOTE2YzEzMiBweTNrCis4MDE0OSA0ZDAyMDg2NjFiMWY3Mzg3YTRjOWQ0ZDVjMmUxNzhmZjUwMWI1OGY5IHJlbGVhc2UzMS1tYWludAorODAxNTAgMzg0ZGQ0NDlhNGVlODgyZWI5MDBhY2U4Y2RlZDMzN2VjNjBhYjhmOSBsZWdhY3ktdHJ1bmsKKzgwMTUxIDc0NjJlNzUyZjBmYTI4YmFiZGM5MDk5NTE4OGY5ODA2MDQ0MGEwMTAgbGVnYWN5LXRydW5rCis4MDE1MiAzM2Q0NzlhMzg2NjZhYzU5NWYzZGRiYjFkMTIzYzIzMTkwMTkwMDEzIGxlZ2FjeS10cnVuaworODAxNTMgZjJlMmIxOTZkYjkyMmMyNzhkNzUwMTAyNWQyZTczNGRmYmI3NDNkMSBweTNrCis4MDE1NCBlNWY2ZGUxOGI3MTU2ZTVjMTQyOGMwMDZkNTIwYjczODk4YWI2ZTMxIHB5M2sKKzgwMTU1IGNjMzgyZjM5YjM5OGNmOTk4MWYxODA4MmRlM2NmZGVkM2M3OTI3ZjIgbGVnYWN5LXRydW5rCis4MDE1NiBkN2Q1Yzc2NTQ1ZmIzN2Y1YzA1ZWQ0MGRjY2I5N2Y0YmY1NzE4YWZhIGxlZ2FjeS10cnVuaworODAxNTcgYmFjOTkyMjlkYTJkY2E5NGI2M2NmZWJhYmQ2ZmU5MWU0YTkyZGU3ZiBweTNrCis4MDE1OCA5YWNlNTViMjlmN2U5Y2UwYmI2ZDIzYjM0NTI2YTBlNWQ1N2IyNTc1IHB5M2sKKzgwMTU5IGViMzBlNjYyZmQ2YWMxMjc3M2JhMzNlZWJjMjliYTEwOTA3NTg2ZmYgcHkzaworODAxNjAgZjczMDcxMmQ5N2I4ZGRjMmI2MmU2MzYxZDhkMWVlM2YyNGVhYTcxNCByZWxlYXNlMzEtbWFpbnQKKzgwMTYxIGQ0MTllNzM3MzM3MDIxNjViYzUzNmZlYWUwMzE3ZGI3YjFmNmU5OTIgcHkzaworODAxNjIgMzE2YmVjM2YxOGVjOTE1MTBkY2UzNzcwMTM3MGRiYTRjMjZhMzNiMSByZWxlYXNlMzEtbWFpbnQKKzgwMTYzIDBmMzdhZmI4YTlmMmMwZTlmNTUwNmEzZGQ5OWFjNTA0ZDFhN2UzYmEgcHkzaworODAxNjQgZDNlYWI0NTk3Mzk1MWI4YzA2ZWYwMmI5ZTgyZTAwZTE0NTZiZDc1YiByZWxlYXNlMzEtbWFpbnQKKzgwMTY2IDdjOTBhYzE5NGU0MDgyZDYwMzMyOGMxZGNlOTZkN2FhODAwOGIyYjQgbGVnYWN5LXRydW5rCis4MDE2NyBlMDg3YjVkM2QxOTFjMjEwNTg3YzczMGM5OTI1MDVkOTk5NDMyNmMxIHB5M2sKKzgwMTY4IGVhNDJhZjk2OGQ5ZDA1NWEyYzk4NDk1ZTJjZTU4MGRmZGQyYThmYjEgcmVsZWFzZTI2LW1haW50Cis4MDE2OSA4ZWZiY2NlMDc1N2RmNjA0N2MxODk2ZmJhMTQ0MzdmZTUzZDg3ZDQxIHJlbGVhc2UyNi1tYWludAorODAxNzAgN2UyNzBkY2Y0YmQ1OTBiYjlmNTA0OThiMmZlZTIwMzUzZjY0ODI4MiBweTNrCis4MDE3MSAwYzBkODE5ZWRiOWRjZjY5N2NjZjIzMDhhMWJlZTViYzVhODE0ODU2IGxlZ2FjeS10cnVuaworODAxNzIgYTA3ZjYwODI1ZTFhYjlhMWJmMTAyODkxZGY4ZDBkOGRiNzBiOTNkMiBsZWdhY3ktdHJ1bmsKKzgwMTczIGE3ZTY5YTVmMjMzNzg0NjEwZTA3ODc5YzU1NGIwOWI1ZDExNmY3ZDYgcmVsZWFzZTI2LW1haW50Cis4MDE3NCA2Y2JlODY0NTcxN2QzZTk5ZGQyYTU2ODMxYjRkYjk3YWM3NmMxYzdhIHJlbGVhc2UyNi1tYWludAorODAxNzUgNjU0ZTFjYzliNGZmNTZhOGY1ZTVhNDliMmI3YmVjNzhhYzVjZmFlMCByZWxlYXNlMzEtbWFpbnQKKzgwMTc2IGZhOGEwM2RmYzJkMWNiNmM2MzZlYjYxMmZjNzAyNTViZGFjOWFjOGMgcHkzaworODAxNzcgMTNkODZmYzY5OTQwODFiZWE5MTE2YzBiODM5NmJlZGYwOGY2MDIyMyByZWxlYXNlMzEtbWFpbnQKKzgwMTc4IDJmNTQ3NTZhZWIxMTY2YzdmMGIxODUwMDljNGUxM2NiMGE3NDliYWEgbGVnYWN5LXRydW5rCis4MDE3OSAyMjczN2E5OWJmOGM0NDRiYzRhZmYzZmJiOTQ2OTIyYThmZDc1OGQ2IGxlZ2FjeS10cnVuaworODAxODAgNmNiMWM0ODA0ZjljOGIxZWNmNzI5NTVjNTQ1ZTZlNGQ4Y2M2MWY3ZSByZWxlYXNlMjYtbWFpbnQKKzgwMTgxIGZlNmI2YzE4OWJiNDE1M2Q1Y2FiYTBkMTVkYzc1MjZiYzU0ZDdmODkgcHkzaworODAxODIgMWYzZDJlNjEyYjQ0YWI3N2UxODFiNDEzMDE5Mjk5OWQzODBiNzU2ZSBweTNrCis4MDE4MyBmYjNlNDAwYzJjZGE0MDg1OTI0OTViOTJhZDYzMGYyN2ZhMjg0M2E4IHJlbGVhc2UzMS1tYWludAorODAxODQgNDUwNWViNTdiNGNhN2RmODAxOTQwZGQwY2U5NzJkZmRjMWJhOTE2NCByZWxlYXNlMjYtbWFpbnQKKzgwMTg1IGJlZGQ2ZWUwM2U2MDRlNzU2OWM2ZjgwZDY4NmMyNDRiMjYyMzZlNjEgcHkzaworODAxODYgZjc2MmM2YTU0YmZjYzc2YzZjNTJlOTY5YTcwZmVjNTUyMjJjYTRiNSByZWxlYXNlMzEtbWFpbnQKKzgwMTg3IGE5NmZkMGU4NzRiNDk4YTRlNjQ4MjdlMGExZGU2MmUyYjA1N2EyYjMgbGVnYWN5LXRydW5rCis4MDE4OCBiY2E1NzQzNzYxMjcyZGQxZWFiMzI1ODYxYmRkYzBlYWRiM2I5NDI1IHJlbGVhc2UyNi1tYWludAorODAxODkgNzI2N2UwYWNlMzNjMTc0MjUwYTdmYzU2ZmM2OTU0ZmZhNWUxYWFhYiBsZWdhY3ktdHJ1bmsKKzgwMTkwIDA0M2YxNDMwNGRlZDA0NzM1NzAyYzFlNDkyMzJkOWEyMzY4ZGY0OGEgcHkzaworODAxOTEgMmNmYjEwYTZjMmI1ZDcwYjUzZmQ3NWQ2YWYwNDE0NTZjZTczNWIzOSBweTNrCis4MDE5MiA5ZDM1YWZkODgyMWYwMDc1YThiNDM3Zjk2NDNiMzM4ZmRkZTBkYTZjIHJlbGVhc2UzMS1tYWludAorODAxOTMgYTUyY2I5OTFmNTRjMWIyNzVjYjk4MjJjYjYwODkyMjdlNTVkZWEyOCByZWxlYXNlMjYtbWFpbnQKKzgwMTk0IDc2NjQ5ZWQ0NWM2MzdiYWY5NGU0OTE0MTE0OWQ3NmY4N2FkNTk4MTIgbGVnYWN5LXRydW5rCis4MDE5NSAwNjQ0Y2EzZmUzMGEwNGVmNjZjMzBiZDQ3NzUyODY5ZmU5OWFiMTc5IHB5M2sKKzgwMTk2IDQ3NzRkNTllZWY3YjM3NjIxM2M4ZWY5MTlmMTQxZjBmYjExZTNjYmYgcHkzaworODAxOTcgMjhmYzMxNjg4YjdjMTAzMWYyNTZhMTc0ZGE3MGNmMGExMjdkYTdlMSByZWxlYXNlMzEtbWFpbnQKKzgwMTk4IDlhYWMxZDNkODczZDE4MGViNDRkZDlhZTYwNThlNzA4ODgyOTJmNWQgcHkzaworODAxOTkgNDg1YzNmMDlhMDliNDhmOGEzZTk5OTIyNjA2ODdlZjA2YTVjMjdmMyByZWxlYXNlMzEtbWFpbnQKKzgwMjAwIDkzODZlM2RkNTcwMGM3MDgxYzFjNzAzMWEwMGMyNjRmNjE5ZWNiYjcgcHkzaworODAyMDEgMThhMTk1NjMzYjU5OWVkYzFmMTBjNjYxZGNkZTc0NDczODJkNDRmMiByZWxlYXNlMzEtbWFpbnQKKzgwMjAyIDhmNWM0ODBmNmQ2ZjU5NTE1ZjhmODBhZGI2ZGYxYmRkYzJjM2Q3ODYgbGVnYWN5LXRydW5rCis4MDIwMyBjZjU3NTZlYzZlZDdkN2Y0MmI0ZjU4Y2FjMjQ5MTA3NDdmYmE4MWM1IHJlbGVhc2UyNi1tYWludAorODAyMDQgYWE3MDdmMTNjNDAyOGEyNzQxMDFhZGZlNTQyYzg0NDdlMzQwMmE3ZiByZWxlYXNlMzEtbWFpbnQKKzgwMjA1IGE3Mjc3OTY3MmYxNTlmMzFjMDE5YjIyNTk2YmUwMDI4MzI0OTVjYWEgcHkzaworODAyMDYgY2Y4MDY5OGYyNzU2ODI4YWFhNGRhMzljMzkyMTllZWViZjJmZDdkNSBweTNrCis4MDIwNyBiODc1MDIxY2Q5OTM3MDIxMDBkNGQ5ZjZlMmZhNDUxZjQxNDkzOTk5IHB5M2sKKzgwMjA4IDJkZWI3OGJjNWQzODU5MjEzMjczZmRhODdhZWU3ODFjY2M0NTE5MDEgcmVsZWFzZTI2LW1haW50Cis4MDIwOSA2ZTJlMmI2MjY4NWVkN2E5YzA3MGNjNmYzNTI5NTE3NjYxNGFjOTEwIHJlbGVhc2UyNi1tYWludAorODAyMTAgNDFlMmYwNTRkNTM5MDFjYTgyMzkzMDllNWU2MWY3ZTJhMzMwZmFkNiByZWxlYXNlMjYtbWFpbnQKKzgwMjExIDdhNTY0ZDc0ZmQ0YThhMzc4OTE5ZGU1YjVhY2ZkOTkxYzZhNDBmYTYgcHkzaworODAyMTIgNzg5NjEyY2QwOTcwNWZkMjcxZDU3MmFhNTQyNDc5ZjM0ZTc5ODY0MSBweTNrCis4MDIxMyA4MzY4MmU3ZDU5YTY0NDM5MWU2MGI4MzRmODkyMmFiNDU1OGI3ZTUxIHJlbGVhc2UyNi1tYWludAorODAyMTQgY2U2MDVlOTUwMDA4MDZjZTI3NTQ0NDJiMjAzYjg3OTA1YzE1MWY1MCByZWxlYXNlMjYtbWFpbnQKKzgwMjE1IDQwOTJlNDU2NmRiM2ZmMjYxOWMyMDIyNjc0MmYyZTkzODIyY2UyODIgbGVnYWN5LXRydW5rCis4MDIxNiA3ZjkyNjMyZjkxMmQ2YzdhMzQ2MWI2NTE1NjNjYzA0Njg1YTUxZjRlIHJlbGVhc2UyNi1tYWludAorODAyMTcgYjUxNGY4MzExZjI4NTVkNWQ1ZTU2YjhlMDRjM2Y5ZDhlZGNhNmM0ZiBweTNrCis4MDIxOCBiY2ZiNmJhZGZmODg0MWJjMGU0Y2MwMGQyYTYxOTliZGVmZTkyNzJjIGxlZ2FjeS10cnVuaworODAyMTkgNzE4NjBjZGI0ODg2OTFlNjAxNDdkMzk3ZjEwNjk0NzNkNTUxYzc0ZSBweTNrCis4MDIyMCAxZjAyYjQzZTA5MDg5MjQ3Y2JkYWJkMDM2NTA0NmQyMjZlZDE0NThiIHJlbGVhc2UzMS1tYWludAorODAyMjEgMmYzMTFkYWIwNjk3MzU4MGIzNTU4MmUxNGEyNzVhNWJjZTc0YTgyYiBsZWdhY3ktdHJ1bmsKKzgwMjIyIDk4YjJjZDEwYWIwNWYwMWQyYTZjZWUyYTc3ZWZlNjc3MTEwMzhmNDMgcmVsZWFzZTI2LW1haW50Cis4MDIyMyBmNzdlMzdhZmM4NzBhNDM4Y2RjNzAzMjdjMDQxMDRiMWE2YmU1Y2ViIHJlbGVhc2UyNi1tYWludAorODAyMjQgN2FkNmVhOTdkNDQwMjMxNTg2NzAxYTA1YTgxMTBhNjQ1NWJhOTczYyBweTNrCis4MDIyNSAzMDFmYmU4YmZhZDE4NTllMTc1Y2YwMWUwN2VjODlmNjRhYzBhMDE1IHJlbGVhc2UzMS1tYWludAorODAyMjYgMzIyODUzMTM4OTZjODQwMTAyZjllMzFjZWU0ZjEzMWMxZDNiNTliYiBsZWdhY3ktdHJ1bmsKKzgwMjI3IDdmZWY4Nzk2Zjc3NzA0MmQ3YjgyYjVkODNkNTdlYjk2YzkzYTEzMDQgcmVsZWFzZTI2LW1haW50Cis4MDIyOCAzOWI1NjFjNTNlOWFkN2JiZjYxYzBhOGFjYjA4YzlhNTNkMzZkYzZlIHB5M2sKKzgwMjI5IGMxM2Y4MjVmZGVhYjc2YjI0OTBkNzQyNDUwOTQ3ZWIwZmE2OThjNmYgcmVsZWFzZTMxLW1haW50Cis4MDIzMCBiZTE3YmRhNWE2NThlMmFiMWI5OTVhMzZjZDJmYjBlOWMxMGQxYWZhIHB5M2sKKzgwMjMxIDM1OTk1NGNmMGNjZGE5ZDBlMmZjMDYwODVlZDgwZjY2NTlhMDBlMjEgcmVsZWFzZTMxLW1haW50Cis4MDIzMiA1OTI3ZmRmNWQ0OGM1YWVlZTE3YTI4MmQwYzVjYmIyMzFhMzJkMmQyIGxlZ2FjeS10cnVuaworODAyMzMgOGM5ODI4YzE1MDQwOWYyN2YxMWVhM2YyMGI2NTk3M2NjNjU3MWM0YiBweTNrCis4MDIzNCBiZjhkNTQwMmFiZmYyOWY1NDZjZDIzNTJmMmZkODk2MjgxOTliMWUxIHJlbGVhc2UyNi1tYWludAorODAyMzUgMWZiNjA4MTQyMDQwNGY1ZGFlYjc1OWQ2ZWNkYzZmZjE4ZGRjNTgxMCByZWxlYXNlMzEtbWFpbnQKKzgwMjM2IDVmNWVlOTRmMTkyNjNkZjdlNTYwOThiYzczYzJiNTMwMDZkZTNiN2MgbGVnYWN5LXRydW5rCis4MDIzNyBjMjM3YmYzZDA0M2NhYWQwYmJjNTAwOTEzNzRiZTk0NWFkMjhhNTM3IHJlbGVhc2UyNi1tYWludAorODAyMzggZWY3M2FjNzFlMjk1MDJmNmRjZWZmM2EzNjk0MTdiOTRkYmU1ZWFhNCBsZWdhY3ktdHJ1bmsKKzgwMjM5IGUwZmNhM2U3Y2ViOTRiZGM1NzQxMWY2NzEzOWU3NTlhMzkxZWE2YjEgcmVsZWFzZTI2LW1haW50Cis4MDI0MCA2MjAzZjQ3MTY1ODVmMmVlNThjZmNmNTU3Y2I4YzZlOTM5OGM3MTY3IHB5M2sKKzgwMjQxIDhkMDhmZGM5N2FhNGM1MzNjZWZhOGIwODRkZDY4YzYzZDhlYzE1ZTUgcmVsZWFzZTMxLW1haW50Cis4MDI0MiBkYzczZWUyYThiOWVjNmIwYmI1NzhhMGUwNjhkMWJlOWZkMTdkMzIzIGxlZ2FjeS10cnVuaworODAyNDMgNzI1YmU4Zjk0MThiODNlNDI0ZTNjYzQ1M2NmY2ViOTgwZWI1ZGIwOCBsZWdhY3ktdHJ1bmsKKzgwMjQ0IDgyZGUwYjQ4OGYyZGQ3MzFjZDYwMDU1OTAyYjdlNWNhZDZkNmRlODUgcHkzaworODAyNDUgYjAxODMxOWE2MTViMzUyMzBjNmVjNTA0YjllOTQyODQyOWU0NzIzNiByZWxlYXNlMzEtbWFpbnQKKzgwMjQ2IGYyNzMyY2NjMTJiNDcwZDQ5NGYyYThlZDkxNTc0N2ZmMjZiZGIyYTEgcHkzaworODAyNDcgMzk3Mzg5ODA1NmI2MGZjYjZhODAyMjFjZTI0YWZmNzBmNDVlM2EwMCByZWxlYXNlMzEtbWFpbnQKKzgwMjQ4IDc2MzgyMjNmMmUwMmU5NTEyMzc4YWY4ODBhNjZkMDUwNDU5YWRjYzkgcHkzaworODAyNDkgOGRlMjg1Y2FkYjI0MDMzMDVkMmFhYWNiMDFhYTYzODFmMTExNDIxYiByZWxlYXNlMzEtbWFpbnQKKzgwMjUwIGFlMjc4MTkyMmE2ZGU1NzE1Zjk1MjRlNzhiYzBmYmYwMmZjZTc2ZDMgcmVsZWFzZTMxLW1haW50Cis4MDI1MSBjZWEzOGVmNjA3MDBlZjFiOGFmN2QyYmNkYjYwYTllZTNmNjgyMDc1IHB5M2sKKzgwMjUyIDgyNzYzYjIwMGE3OTM3OTU2MDhmODcwNzg3OTE1YjRkNDdmODFmMmYgcmVsZWFzZTMxLW1haW50Cis4MDI1MyBkYTg3MDQ5OTMwMDE2ZmI1MjA3NTQ0NjYzMGIzOTg5N2MxMzgwZDlmIHB5M2sKKzgwMjU0IGJiOGZlNzlkYzVjYjM1MmZhNGFhMzBhODQ3YzNlYzUyYjNiMzUxMDYgcmVsZWFzZTI2LW1haW50Cis4MDI1NSA3ZDM0MzJiMDdlYTFhNjJkZmE4MjdjMzM1MDg0MzQ5OWVlMGQyZjE4IHJlbGVhc2UzMS1tYWludAorODAyNTYgYmUxMGY0ZmFhZjEyY2ExNDBiNmYxZjg5M2IyOWRiM2JmOGNkNGI2NiBweTNrCis4MDI1NyBjMmZkZGRiMmI0YTU1YWZmZjVhMjM1ZGRhMTIyMDA2ZWNjMTRiNzMwIHJlbGVhc2UzMS1tYWludAorODAyNTggNDBhM2E2MzNjNTY0ODRmZDY4ZjE1MGRjN2EwZDExYzM4NGNmZGJkMyByZWxlYXNlMjYtbWFpbnQKKzgwMjU5IDM4NzQyOGZhNjlmY2RiMGU1MmQwMTFlYjMyZjk1OGZhMTIxZWNjNTIgcHkzaworODAyNjAgZTc3M2UyNGIxNGU2YmZlNzU1ZjMxZjUzMzhhM2ViZmVmZjVkZWZiMCByZWxlYXNlMzEtbWFpbnQKKzgwMjYxIDdjZmE3OTc1YWIwZTE5ZTAyMzYzY2UwNTliZjFiYTQ3MDUyZWZkYTQgcHkzaworODAyNjIgN2NhMTI3MmY0M2EzNGFlM2FhYzM4Mjk2YTk2YWEyMDczODhkNDFjNiByZWxlYXNlMzEtbWFpbnQKKzgwMjYzIDczYTYxNjVkMDAyYmQ0NjQ0ZTY5MzUyYmU3NDJkNWZkNGQzYjM0ODcgcHkzaworODAyNjQgZDA3MTIwMWYyNjEyZDY3ZWYzMDcyODBjYzIzNjc2ZDNkMjQ4ZTA4MiByZWxlYXNlMzEtbWFpbnQKKzgwMjY1IDZlY2E3ZmJkNTM5ZWRmMTBmYmIwOTNjZjcyNGNiNDUwMThjYmQ1MWQgbGVnYWN5LXRydW5rCis4MDI2NiBhZTI3MmQyMTJhOWRhY2FmZDZkOTE0ZDQ5M2ZlMGYwNmRlY2Q4YzMwIHB5M2sKKzgwMjY3IDRlNWM2YjI5ZDkyOTVmZTcxOTdmMDE5Y2JjZTdjMzI1NjEzNWRlZTkgcmVsZWFzZTI2LW1haW50Cis4MDI2OSAxZmQyNzA5ZWQzZmRiOWUwMTMxNzQyNzQ5OGNmNTY0NTIyYzBhZmY1IHJlbGVhc2UzMS1tYWludAorODAyNzAgZjg4ZWExYjRmZGJlN2M5Njk5OGFiMmY3ODc5YTMyNjEwNWJmNjhiMyBsZWdhY3ktdHJ1bmsKKzgwMjcxIGUzMTdlODRlOGExYWExYTlkYjk4ZDQyMzQxYTBhMjIzYWE0ZTMwMzEgcmVsZWFzZTI2LW1haW50Cis4MDI3MiAwNzAzNWRlMDVkNGJkNGZjYjAyODI1MmMxMmIyMGU0MzFiMTc1NGMwIHB5M2sKKzgwMjczIDBmMDFiZDYyMDg0ZWZhNmE1ZWUxYThhNDE1NTBlZTZjNjczOWY3NjUgcHkzaworODAyNzQgNmRhNzE3YmZlNDI1Nzg0ZWVmMTRmNmI1M2Y1Y2UxODk4YTc2NTFkMCBsZWdhY3ktdHJ1bmsKKzgwMjc1IDUwNmZhZGRjOGE5ZTcyZjg5M2JmNWNkYmJjZjQyZTg3ODU3ZDQ4MzIgcHkzaworODAyNzYgNTdkMDk3OTUwOTY4NzM2YjQ0OTRmYzI0Y2E1YWQ3MjNjNzE3M2IzMiBweTNrCis4MDI3NyA3YzhlYjJiYTkxMjk4YjllZjY4MDQyOTM5Zjc0ZGE1NTNlNDkxMDdkIGxlZ2FjeS10cnVuaworODAyNzggZDFkMjA5ZjJjODAzOWQ4N2MwNmRlMGU1OTE4MTAxMWU4NzYyYWZmZiBweTNrCis4MDI3OSBkN2ZlZmZhNzhmYTAxNjc0OTVmZGI1ZjQ4MDIwNmU2ZjhmNjExNTAwIGxlZ2FjeS10cnVuaworODAyODAgZDA5Zjg0MjU4ZTUyMmRkZjdjMjcxZWM0OGQ1M2RlZmU0YzUzOTJiZSBweTNrCis4MDI4MSBhMjJmMmFlODU2NDUyNTE4NWU0OGZmZGUyMzAzYjI5M2M0NmI2MDA5IHJlbGVhc2UyNi1tYWludAorODAyODIgNGRkY2E3ZmQzNjM5MTkwMDhlZTU2YmRmODVkNjlmYTJlMzgyN2MyZSBsZWdhY3ktdHJ1bmsKKzgwMjg2IGJkNDVlMDExMDk5MDE0ZWFlYmE2YTM3YmRjYzQ4ZGM2N2E2ZjRmNmUgcHkzaworODAyODcgMjU5ZWZlNWI5NjFiMWRjZmZkNDM0MWRhZDFhOGJmMDRmYzg5N2NjOSByZWxlYXNlMzEtbWFpbnQKKzgwMjg4IDg2ZDA4Y2I2YmE1YzFhNGRmMzcxNDEzNTIyNWUyZDYzYzQ4OTlhZmYgbGVnYWN5LXRydW5rCis4MDI4OSAxOWE5YTQ1N2E0N2FjNjAzMTU5ZDE2M2E0NDNjYzJmMDM0OTgxZWY5IHB5M2sKKzgwMjkwIDhiMzZmNzE3NTIzODZiOWQ2NzVmZDUxZGMyODhkOGYxMGUyZGNiOTIgcHkzaworODAyOTEgYWYyN2M1YTlmZWI4MTQ4NmNlNTEwYzExYzJiNmFkMDgwNWRkOWVmOCBweTNrCis4MDI5MiA4YjM0NDVkZmE3MThlY2YxN2U5ODYzOGI4YzkwNWIwMWIzNTVmNzEyIHJlbGVhc2UzMS1tYWludAorODAyOTMgZjM0ZmIxNTEwY2JjNTA1NTZiZjljM2I5OWI3Yzk1MGRlMTlmZWRkOCBweTNrCis4MDI5NCBjY2UwYTViMjAxNWUyNDllMTcyOTFiYjFiZGJlNGU1ZTE0YmQ1MGE3IHJlbGVhc2UzMS1tYWludAorODAyOTUgZjQwNDdiNWEwZjU0YmQ1M2Y1NThkYWJjZjFmODBjMjg4YWRmNTk0YSByZWxlYXNlMjYtbWFpbnQKKzgwMjk2IDQ3M2EwZjY3ODgwNjEyNjJhM2MxOTg4YTU3OWUxYTg3OTIyNGVmMTggcHkzaworODAyOTcgZDk1YWNlNTI4ZDY1NzI2ZTI2MjFlMTQ1MjU4NGExNDhkODY4ODk0YyByZWxlYXNlMzEtbWFpbnQKKzgwMjk4IGY1YWZhZGI3NDVkYTFhMzFkMzBmYzk3OWY0OWNhY2MzMTM2Mjg3ZmMgbGVnYWN5LXRydW5rCis4MDI5OSAxYjQzZWUxZWUzZDg4NTI1ZDFhYjhiYmM3MGI5ODUzYTdhYTdiZDlmIHB5M2sKKzgwMzAwIGEyYTRkOWRjNzg4NGY0ZWY0OWE5NjZhZDBlODdkNmVhY2JkNDFiMGUgcHkzaworODAzMDEgNzAzOWM2MDQ0YWI2NTM0ZmFiMTc1ZmRkYWY0Yzk2ZmY5ODllMzQyYyBsZWdhY3ktdHJ1bmsKKzgwMzAyIDliOTJlNzY3MTEzNTg1NzE4YmRiZDcwNDViZTc1YzA1M2IxYTViNmQgcHkzaworODAzMDMgOGUyYTc4ODQ5MjlkYTJkMWY3OTYyNTY3ZGQ5MTdhODE3MjAxYTg3YiBweTNrCis4MDMwNCA5NWNjYWZjMTQ0NzU4MTYxNWM3YTdmNjJmYjc5ZjQ1ZTY5YmY1YjVkIHB5M2stY2RlY2ltYWwKKzgwMzA1IDhhOTFjYjM2ZTA5NGNjYzg5N2EzODg3NWJhMzM0MDdhYzc4ZTJkZDQgcHkzay1jZGVjaW1hbAorODAzMDYgMmRiMDZmYWU4YzJlYWQ2NTRmYjlmNjZkNmUwYTEwMDllMGYyODFhNiBsZWdhY3ktdHJ1bmsKKzgwMzA3IDk0MjU0MjMxYWE2YWY5OTQ3ZjU4MWZlYWEzMjMwMzMwMzJlNTFlODEgcmVsZWFzZTI2LW1haW50Cis4MDMwOCA4MTlkODEzNDc1MjI4ZTcyYzA3NDJkYzVmYWI3NzkwMGE1ZGZhZmJhIHJlbGVhc2UyNi1tYWludAorODAzMDkgYzI5MDViMGVmMWQyNGQ0Y2Q5ZTdlMzcxYzA4M2ViOWFjNWI3NGJjOSBweTNrCis4MDMxMCAwYTdhMjViYmIzNGY3MmI0ZWI2Y2IwMzY1NzQ0YWYzNWRiZjRjOGI2IHJlbGVhc2UzMS1tYWludAorODAzMTEgNmQ4MzZiMTBlMzcwOTg2ZTkwMTgwOGYzN2U1N2E3MjczYTA1ODYwZSBweTNrCis4MDMxMiBhNTU4MjdiMGVjM2JiOTUzNDUzNzNiZTYzNmJkYTQ5NDRiNGVmYmYzIHB5M2sKKzgwMzE0IGM5MWZiNTA2ZjA4ZGYwOTQ1Y2JmOThjOTVhZWMyOTkxMDU4ZTFiNWMgbGVnYWN5LXRydW5rCis4MDMxNSBjMWQ4YTAwNTVmZGE2ZTQwYTNmNmY3MjNlMGQ3NjBlYmU0MDE1NTVjIGxlZ2FjeS10cnVuaworODAzMTYgOWQ4NmYwNzAxZDljOTg4N2Y2Njc4YzlhZTAwYTY5ZDcyNGJlODk1ZCByZWxlYXNlMjYtbWFpbnQKKzgwMzE3IGYzNmEwZWJlYjE2MzkxNTdmZDc5ZmY3NmJiYjg0N2U5NWE4YTBjZjAgcHkzaworODAzMTggYTBiOGFmMWJlNTYwYmRhZDYwNzVlYzRlYTAzY2UzZjIwMTc5MTZjZCByZWxlYXNlMzEtbWFpbnQKKzgwMzIwIDliYTAzNzgzZWNlM2NiNDVkYWRmYzRlYzI3YmI4YzM3OGRhZGQwOGQgbGVnYWN5LXRydW5rCis4MDMyMSA4ZTQyNDc0MTE3NTQyNDJjMzY0MWZlZmExMjc5NTRlNWQ3NjU2NDU1IHB5M2sKKzgwMzIyIDhhNWIyZDA2Mjk4ZDdmNzBlYjQzYmU4YjgyMjc5MzU2OWJjYmU0YWMgbGVnYWN5LXRydW5rCis4MDMyMyBhM2NlMjc1YmYwOTU3M2I2MjE1NGVkMTE2YmZlY2I3ODJlNDE2ZTU3IHB5M2sKKzgwMzI0IDg4OGM3NWExYmU1NTIxOWJmMzcwMzhjNTEyZTYyZmFkNjlmN2I1MjAgcHkzaworODAzMjUgNzY4Y2UxMDc5OWYyZDg1M2M0ZTRmMDE2MTY3MWJjN2Y3ODBjZGY2YSBsZWdhY3ktdHJ1bmsKKzgwMzI2IDkyYTYzM2EzMGFjYjZjYTEyNTI2N2MyODdmY2UyZTNjY2Q0YmQ1ZmUgcHkzaworODAzMjcgNjdiODFjMzI4NGY5YjA4NWYyZjY2YTIyYzhkMTBjOGI3YjUyNDA0OSBweTNrCis4MDMyOCAxYzEwNWIzNzA3NDYwNTMwNTJlMDI0OTE1Y2IwMDRjMWRhZWM5MzIzIHB5M2sKKzgwMzI5IGUwOTFkOTdkNTBkNTgzMDRkYmU0NTAyNDljMzc3ZDY5ZWMwMGE5OGIgcHkzaworODAzMzAgMDczNzlmZTc1YzU3MDdmZGYwNmQ2NWVmM2U0ODU1NDY2MmMyY2UwMCByZWxlYXNlMjYtbWFpbnQKKzgwMzMxIDU3YWEzMTAxMmNhNTFjYzNkYTgzNWNiODllZjYzZDQxM2Y3MWZiYTAgcHkzaworODAzMzIgOTI2Njk5NjVjOTk3MTk0YzJjZDk5ZDExYjVjNjNjZDBlOTM0YWJiMCByZWxlYXNlMzEtbWFpbnQKKzgwMzMzIGIxOWM2MTZkNWI0YWQ4ZWYxMDgzMjg4MzQyY2U5YjdjZTViYThkOTIgcHkzaworODAzMzQgN2Q0OWYwMjFjODQyMDkzYjBjZDgyZjFkNDU5NmE4ZTgwY2ExZDc3YSBweTNrCis4MDMzNSA5ZjRmNjcwYjE0OGNiYTYxNjRjYjUwYWMwNDQwMzJlZjZmZGFlZGZhIHB5M2sKKzgwMzM2IDJiMDlkODIxYmNlMWU4OTdiOWY2MDk3NjczOTQzMTM2MDgzYTQ3MjMgbGVnYWN5LXRydW5rCis4MDMzNyBjYWQ0ZTA5ZjAyYTEzMzA3ZGIwM2Q4OTkxNjA4NzViMTkyYjhiOTU1IHB5M2sKKzgwMzM4IDRiMDFlODBkNmMxZmY2OGZmZDYxY2RkNTQ4NDczYzQ2YWY0NzYxYTkgcmVsZWFzZTI2LW1haW50Cis4MDMzOSBiMzg3NWQxYjM4NDczOTMzZTgwYjAyNDg3YTgzNWJhOGJjNjgzMTIwIHJlbGVhc2UzMS1tYWludAorODAzNDAgMTg2YmMzYjgwZjU3MTIyOWFkNTNlZWYwOTkwNDI0MjViNmU3ZDNmMiByZWxlYXNlMjYtbWFpbnQKKzgwMzQxIDk0YjY0OTQwZGFjNDY0YzdjM2M2MzE5ODRlMmExZWI0ZTAxYjZlODQgcmVsZWFzZTMxLW1haW50Cis4MDM0MiA1NGYxNTAyMDI4OGE0NmM2ZmU2MzA4NmMzMzkwNDc3NTRmZjIwNmQ0IHB5M2sKKzgwMzQzIDIzNDA5NTk1MTM3MDcxY2FkM2U3MWRiMzNiY2U4Nzc5ZjA3YmJlYzMgcHkzaworODAzNDQgNWM2MjVhMDQ4ZjlhNTZiYjNiMjk2YzQ2YzFmNWIwMDhmMWE3OTllYSBweTNrLWNkZWNpbWFsCis4MDM0NiAxMDRlOGM4MDFlNWQzODE5YzRlMWM4NzhkZmEyZTlhZmY1NTJiZjYxIHB5M2sKKzgwMzQ3IGM0NDk4MTdmNGI1NGRkNDk0ZGQzYzRhMzU1M2ZjOWFiMWFiMDZlNTEgcmVsZWFzZTMxLW1haW50Cis4MDM0OCA2YjdlMjAwMDBmOTc2Njc3YTY3NWI5MGQzMzZmYjExOGRjZTZhMTIxIHB5M2stY2RlY2ltYWwKKzgwMzQ5IDNmMjc3M2FlODQ0OGFkMjI5MTc0ZTM5YWQzM2YzZjdjOWQ1OWQ5YWQgcHkzaworODAzNTAgNTQ3ODAwNDJkMWU3ZDc0MzU2N2U3N2I2YmRjMjgzNTJmMGJjZTc2YSBsZWdhY3ktdHJ1bmsKKzgwMzUxIDhjMDUxN2Y1MGM0ZTk0OTIwMzUwZThkYWM4ZjVhNTJjNmIyNWRmOGEgcmVsZWFzZTMxLW1haW50Cis4MDM1MiBkZTM5NDUxMDFhNmUwMGI2MWM1MTkxODFmNGEwN2EwNzlkNDNiOTI0IHJlbGVhc2UyNi1tYWludAorODAzNTMgN2ZjMjRiNGU1ZmVkYzhlNGI4MDQ2MzJjMjIyYjEyM2FiZWU4OTAzZiBweTNrCis4MDM1NCA4ODk5ZjQwODA0M2M0Nzc1NTAxMmNiMmEyZTZjOTY0Y2FhYjQzMmUwIHJlbGVhc2UzMS1tYWludAorODAzNTUgM2Q3MzdmMmFiOTAxNDBkMDA4MzljZjQxMDljZWExOGNiOWJjZjQwNSBsZWdhY3ktdHJ1bmsKKzgwMzU2IDJjM2Q3YmQ3MTYzNjQ4YTA5MzBiOGIxOTU2NDhmNzUwYTdlZDljNDcgcHkzay1jZGVjaW1hbAorODAzNTcgNzM2Y2Y3NTFmZjRmNWE1NzNlMmMxMTNkYzJlMzVkMTNhOGI0MDZkMSBsZWdhY3ktdHJ1bmsKKzgwMzU4IDBlNjRiYTMyMjkyYmE1N2YyYjJhZThjZWY1NGZlNzZmM2QzMjA5YTYgcmVsZWFzZTI2LW1haW50Cis4MDM1OSBiM2QyMGQ0NDY2Mzg5ODJlNWY2ODNlMTBkZGYwMzQ2ZjkyMGQ4YzY4IHB5M2sKKzgwMzYwIGRiNzE2YTc0YjUxN2ZjNWQ5MmYyNWMzMDRmMjExZjkwZTcyN2Y4MTkgcmVsZWFzZTMxLW1haW50Cis4MDM2MSBkZDE4Y2NjYjU1YjA4ZDllOTljYjNiMGY4M2QxYzc4NzIyMDg2ZTkyIHB5M2sKKzgwMzYyIDlkYzg2NGVmNjQyNWQ1ZWU4MmY4NDI2OWI4Yzc5YzQ2MmQxYmFjNjYgbGVnYWN5LXRydW5rCis4MDM2MyA5MTdkNmE3NGZkNGYzYTQ4NGI0MTliMjk2MjFkNTE4N2YzNmY5ZDE1IHJlbGVhc2UzMS1tYWludAorODAzNjQgODdjOThmYjc3OGI0ZmQwMmNmY2RlYWEwMmIxYzVmM2I5OGU1NTJmNCBweTNrCis4MDM2NSA1YjcyNmM2MDFlMjIxNjFhNmEwY2I2M2Q3ODU0ZWMyZDUzOGRjOTJlIHJlbGVhc2UyNi1tYWludAorODAzNjYgM2E4YTYxODRmNDBhNTRlZDdlZDk4ZDkwYThjYzhmYTRlM2MzMTg5NyBweTNrCis4MDM2NyAyNjkwMmQ5YmUwMzNjNmMwMmE4OTU3NGQwNzdiYTQ3MWRmOWM0ZDdjIHJlbGVhc2UzMS1tYWludAorODAzNjggYzAxM2E3MTgyOWJmMjNmYzc3MTNlYjg5YWYxNjliY2MxYWM3ZmY1NiBweTNrCis4MDM2OSA0YWQ5MDQ2MDI0NjFiYTBjYzkxNDQ3YTFlM2RhNzFhMjA4N2U3YjdhIHB5M2sKKzgwMzcwIDU5YWQyNDRmZTI5NDI5MDA1Mjc5MDVlMjFlMzZjOTY1NTQ0MDkxNzEgcHkzaworODAzNzEgODdkOTg4MjM1YzUxOGU3MmZlYzFmYThhYTA2MWMzMWNiYmY2YWIwMyByZWxlYXNlMzEtbWFpbnQKKzgwMzcyIDMxZDI4ZjA0YjgyMzU1OTZiZGIyNzRjN2NiY2IxNzc2MTVlY2Q1NGMgcmVsZWFzZTMxLW1haW50Cis4MDM3MyA4OGM3ZGQzZDc1NzliNmNiOGI4ZmJhNjI1MjFjYzU2ZTM3MDUzNTFiIHB5M2stY2RlY2ltYWwKKzgwMzc0IDY2YzlhOTU5YzA3ZWZlMTYwNGFkZjFiYWE2NTM5ODBiZWI3NDIyMTcgbGVnYWN5LXRydW5rCis4MDM3NSBiNjZmYTc3NzBiYmRmY2ZjZGNiMTczMTg4OTE3YjE1ODM4ODg5OGE4IGxlZ2FjeS10cnVuaworODAzNzYgOTYxOTBiNWIzZjZkYjg4ZWUzNGM0MWY3NGEwODU1Mzc1MjcyOGQwOSBweTNrLWNkZWNpbWFsCis4MDM3NyA1ODk2M2E3NjU0NzFkN2YxOGZhM2M2MzBiNjU2OTg2ZDJlOWZjNjZmIGFzeW5jb3JlLXRlc3RzLWlzc3VlODQ5MAorODAzNzggZjYzMmEzODYxZDEyNTViNmE0MDMzYmI3Mjk0N2JmYzc1NDg3YjA3NiByZWxlYXNlMjYtbWFpbnQKKzgwMzc5IGI0NWRkYTBiNTM4ZmFhYmUxZjU1NGY4YjcyZjYyNDBjNTM5MDhlYWMgcHkzaworODAzODAgNGI3ZjNhZTIyYzhmZGY4ZjkzMjMwZmUwODEzMjdkNzI1YjJhNGQ0MyByZWxlYXNlMzEtbWFpbnQKKzgwMzgxIGM0YjUzNDMzNzM1YTJmODg1ZjdjZGIzZTgxYmRmNWUyNTZmNGNlMDQgcmVsZWFzZTMxLW1haW50Cis4MDM4MiBkMmZhZDQyMTBkZDVmYjViNDI4ODhkNGNiN2ViYzZhZjg5MGJmYWZiIHB5M2sKKzgwMzgzIDE0OWJhZGY3M2JjYWQxNjMyOGUxMTY3YzE5ZTEwOTVlYTM4ZDFjMDAgcmVsZWFzZTMxLW1haW50Cis4MDM4NCAyZmU0NzM4ZWViMjM2MTllOThjZThmMDAwMTRlMjRiOWVkZGUyN2FiIHB5M2sKKzgwMzg1IGIwNWQwMjViYzBkZjZhYzBiYzc1YTJlMGJlZDgxMTNlMzVkYWJjNjIgcmVsZWFzZTMxLW1haW50Cis4MDM4NiBiYTEyZjkyMTM0YmE0OTE5NWUwMWU1NDZmOWE3ZWM2MWJlMjJhYjY1IGFzeW5jb3JlLXRlc3RzLWlzc3VlODQ5MAorODAzODggYThlMDkzYTI0MDk0OTI0OWIxNGQwYzEzOTNhMzA2MmJmOTkwM2JhZCBsZWdhY3ktdHJ1bmsKKzgwMzg5IGVkYzdmMzMwNTEwNTBlNGYzNzZhODhiMWYxZDEyN2JiYzcxYjM3NTQgcmVsZWFzZTI2LW1haW50Cis4MDM5MCA0NzM4MDFhZTllOGVkNzg5MzA1M2FhMWQ0MzE1ZTI1ZGJiMDU4NGYzIHB5M2sKKzgwMzkxIDU0NTI2ZWVjOGJjNmU2NDcwNjYxZThiY2Q4YjI1NmQ4OTJkYjJmMmUgcmVsZWFzZTMxLW1haW50Cis4MDM5MiBjOWEzMmVkZDJiYTdjODk0MjYxNTZhZTU4MjY1NDZjMWFjZDI0ODA0IGxlZ2FjeS10cnVuaworODAzOTMgOGRkMTI0MTIzODAxMGM4NTA2ZGQ3MWQwMjkyODk1ODU2ZjIxZTRkOCBweTNrLWppdAorODAzOTQgMWQxOGQ3M2YyOWI1M2QxNzlhNjUwOWU5ZGYxNjkxMzE2ZDMwNTU2MSBweTNrCis4MDM5NSA5MjI4YzZhYzZjYzY3OGUzYjg2ZTYyOTczNzk5OWFjNDRjOTBlYWJlIHB5M2stY2RlY2ltYWwKKzgwMzk2IDVhNTI0YzZkNGU4MzUyMzQ2OTk0MTU5ODY0OTE4OWVmYjQ0NmExZjkgbGVnYWN5LXRydW5rCis4MDM5NyAzZGQ2MDYzNTNhYjQzYjk2MDNjMTUwZmViMWVlZGJmZmM2MjhjYTZkIGxlZ2FjeS10cnVuaworODAzOTggMDUyZDQ4NTE1Yzc2MmZlNzdjMzM3ZDQ4ODcyMzcxM2Q0MjU1YmJmYiBweTNrLWNkZWNpbWFsCis4MDM5OSBiNGVkMTcyN2RmNzRjYzBjYzNjMGExYzI2NTg4OTc3YTkwZjZmM2NlIHB5M2stY2RlY2ltYWwKKzgwNDAxIDU2Mjk2Nzg4MWRjNTI1ZGViYzJhMDFiZmE0N2QzY2UzY2YwZGJlYjMgcHkzaworODA0MDIgZTY1NjRkYTAxNzE4YTViMjVmZDQ5NzE5ZWZjOGY3Mjg2MmJmYzIwMyBweTNrCis4MDQwMyBkMmM1MTJkMGVjYjYyYTM0OGMyZTliMjM2NzMzZGNjYWUyM2NlODJmIHJlbGVhc2UzMS1tYWludAorODA0MDQgODZmYWRhZWJjZjY2ZDNhMDEwNzcwMjY5ZjNkMmFhOGRhYmRiMWZmNiBweTNrCis4MDQwNSBjNmI0ZjRmMmI5YThiNzA0MDZiN2UwOTM0ODVjNTc1NWYxZGVlNzRlIHJlbGVhc2UzMS1tYWludAorODA0MDggMjI1ODI1MGMxZmJiM2U3YzE1ZjJiMzU1Nzk1MjdjZmQyYWE5ODMyZSBweTNrCis4MDQwOSBkNDI2YmJmZDViZDc5MmViOTE4M2Y1M2I3Mzg3NDQ3ZGE3ZTYzMzY2IHB5M2sKKzgwNDEwIGZmZjgxZDcyNjI4ZTNmZmExMGI1Zjg0MDJlNWIwMDFjMmZjM2I5YjEgcmVsZWFzZTMxLW1haW50Cis4MDQxMSBlNzYwNmMxNTQxZjhiNDlmMjBiYTA5NThlZWMwM2I3ZTA2MzI0NGU5IGxlZ2FjeS10cnVuaworODA0MTIgYTA1OWVhOTY2YjhjZmQxNTc4ZjJlMzRlMTEwMzUwYjgxM2I2M2I3MyBsZWdhY3ktdHJ1bmsKKzgwNDEzIDg0MjhlYWEyZDNhZDEwMWNhM2IyNGZjNWU0ZmY2YjFiMjIwZGU0MWYgcHkzaworODA0MTQgODFlZjFlODQ1MmZiMDU5ZDkxNWFiNzUxYWQ1MDUzYTllZTMzOTNlYSByZWxlYXNlMzEtbWFpbnQKKzgwNDE1IDYxMmU4NmFiMDVmMTMxYjZhMDAyOTc4OGE3M2Q2OTVmOTgxMDUwY2EgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDQxNiA1MmNkN2UwNDBmZWYwZDE2MmI4NzcwN2I0YWZiN2JlOTRkZTdlMzU2IHB5M2sKKzgwNDE3IDYxMGE4ZWZhODhkYjY1NjFiMzc4YjcyMWYzZDdkZjljNzhkN2VmNzkgcmVsZWFzZTMxLW1haW50Cis4MDQxOSAwZWMxNmQ4MzE5OTA1ODRmYjMyN2UwYTg4NTljODI0NmMwMzc0NzJlIHJlbGVhc2UyNi1tYWludAorODA0MjAgZmM5Nzc4NGU1Y2MyMWYyOWU1NjZiNjFjYjEzMGM3ODdjYjE1MGU3MiByZWxlYXNlMzEtbWFpbnQKKzgwNDIxIGRjOGM4ZDU0NTA0ZTE4NDM1NzM4MGFjZjE1ZWM1ODdhMzFhYjJjYzAgcHkzaworODA0MjIgNjdhNjA0ODI5Yzk3MGM3YmI2MWFhNDk4NDIxMmE0MTY1ZmJkZDQ4YiByZWxlYXNlMzEtbWFpbnQKKzgwNDIzIDJjMzFkYWM2OTRmZjA0M2M4YTdjOGNlNTEzNzA0NTExZTAyZjc4OWYgbGVnYWN5LXRydW5rCis4MDQyNCBlNzlhNmM4MDI5MzQxODlmNjlhNzczZmJiNDM1ZDJjZGFmNWUyNTNmIHB5M2sKKzgwNDI1IDc0ZTQ5ZmI1YmExMmIyZTNhYzM5YjhlYjQ2ODljNDIzMWZkY2M1N2YgcmVsZWFzZTI2LW1haW50Cis4MDQyNiA4MWFhMDAyODRiZDIxMTkwMGNlZjBjOTA2OWY2NTFmNzI1ZjViNGJhIHB5M2sKKzgwNDI3IDU0ZTVhYjI5YjMwYmZmNDM2MGYyYmY5NzViOTEwNzRmZjNlNTYwYWQgcmVsZWFzZTMxLW1haW50Cis4MDQyOCBkN2M3ODNlZjQ1NDg2ZmViODQ3ODkwYjQ3NjdhNDU0YTYyYzg0YzViIGxlZ2FjeS10cnVuaworODA0MjkgNzY5MTg5OWUxODVmMjc3MTM2MGU2ZjY3ZGJjNmU5OGM3OTAwMzA4YiBweTNrCis4MDQzMCA5NWM1ZTA5NGIzODA2NGQ1NGUzY2VlNjI0NDkxNjBkN2IwYjllMTBmIHJlbGVhc2UzMS1tYWludAorODA0MzEgMDY4YTJlNzE1N2FjZWNiZDZjMzE5MmIyMDhhZDRjYjBmYzE3YWM5YiByZWxlYXNlMjYtbWFpbnQKKzgwNDMyIGNhMGNiYWM3Yjg5ODFjZGYwYWEzMTFhYzZlOTg4ZGQ1ZTNiN2ZkMDggbGVnYWN5LXRydW5rCis4MDQzMyA1ODdkZjBkNzQ3ODUzM2E4ZDA5ZmQ4YmNkMDU1MzNiOWRhZjMwNGE1IGxlZ2FjeS10cnVuaworODA0MzQgNjcyYWRmYzVkYjQ3OTliYmM3NDgzNjViZDgyNDVjZjBmMWQ0MzYwZSBsZWdhY3ktdHJ1bmsKKzgwNDM1IDY1ZDZjN2JjNWQ1YTQ2NDdiN2I2YzBjNDQ2YTNkMDYyODQzM2FjMDcgcmVsZWFzZTI2LW1haW50Cis4MDQzNiA4MDgxMGQ4MjMxOGZkMDczYTQ5ZjIwNDYwODFhOGZmODljMDY0YjZlIHB5M2sKKzgwNDM3IGQ4MWVmZjExOGQ4MThlZjYxZjgyM2Q5YWM5NjVhY2E4MzMwMjg4MDkgcmVsZWFzZTMxLW1haW50Cis4MDQzOCA1ZTY5NTE5YzRlMzdkYjJlMThiNjA0NDQ2NzY2NjYzYTk1ODUwZTU1IHJlbGVhc2UyNi1tYWludAorODA0MzkgM2I4MzQxZDA1MjE2ZWM4OGY5NThhNmQ2Y2I4Nzc1OWRhZjBlNWJjNyBsZWdhY3ktdHJ1bmsKKzgwNDQwIDJhNzY4ZWEwNjAyMzBlNWM4NGE4MTRlOGIxOTZiNzg5YWUyNDk3MDAgcmVsZWFzZTI2LW1haW50Cis4MDQ0MSA2NDQ2MWY2OGExMGUwMWFiZmFiMWY1MmQ3MzNjOTI3NWViYmNmODYxIHB5M2sKKzgwNDQyIDkxZjkxNjhhYWRkMGUzM2Y0ODJiYzk1M2I2MWI1M2YzOTFjMjRhYTMgcmVsZWFzZTMxLW1haW50Cis4MDQ0MyBmNGZlNTNmODY2Mjc1NjUyZWMxODY2MWE5YzNiY2NkMTIyODk4YWVkIGxlZ2FjeS10cnVuaworODA0NDQgZTlkODg4YzA4YmY4YTE2YTY3Y2Q0MWY1ZmM4M2QwYjhlMGU2NzcxNSBweTNrCis4MDQ0NSBjMzlhY2JiNjNlYzNmNTFjOWRjZjNhZTAxOWNhMTczMmI3YzYzNWQwIGxlZ2FjeS10cnVuaworODA0NDYgMjRmZjg3NDBlNDgxMGJjNzYyNWVhOGY2OTcxMmE0OGUwMTE3MTU2NCByZWxlYXNlMjYtbWFpbnQKKzgwNDQ3IDNhOWEyMmQ3YjIyZTgxMjZlYzNjYmU5NTE0MjhjZjA1Mjk5MDA1MTkgcHkzaworODA0NDggN2JkMzg0NzJlYTIxMjI1MTAzZWY0ZjExODdjMjA0OTZjMjkwN2ZjZSByZWxlYXNlMzEtbWFpbnQKKzgwNDQ5IGU0YzFlYmNiNDYwNDhlMTdmY2YzN2E5YTZkYWI4YWJlMmIwMjAyNTAgcHkzaworODA0NTAgNzkxMjhlZmU4YTk5M2ExYzY3YTU1NzEwNzQyYmMwZDZhYjM3MjgzMiBweTNrCis4MDQ1MSBhMDlkN2Y0MTRjZDE1YzE2MjdkNjExMjYzOWFlYTIyZjNlNjVlMDYxIGxlZ2FjeS10cnVuaworODA0NTIgNzZhMDUyZWVkZWU2N2Y0MTk1YzFiZWQyM2Y4YWU4OWU3ODllY2VjOCBsZWdhY3ktdHJ1bmsKKzgwNDUzIGNlNDkxNmNhMDZkZDAzN2NhMTIyMDFlNThiOTM2ZmRkZmQ0MTdhNzIgcmVsZWFzZTI2LW1haW50Cis4MDQ1NCBhNTFhZDhmMDliNmY3ZjE2ZjE0OTEzNDQ1M2M0MzZhNjg1NmM0Y2ZlIHB5M2sKKzgwNDU1IDVlZDM0ZjNmNmMzNTUxYzI1MjViYTkxMjY3OWUzMjU4YzY5ODk4NTUgcmVsZWFzZTMxLW1haW50Cis4MDQ1NiBhOTE5NjExOWQzMzViMmUwYzIxY2YzMTY1YTAwOGUwYWJlZTYwNzc5IHB5M2sKKzgwNDU3IDBmZjhhZGRlNjA5Y2Y5ZTE3N2U4ZDUwYWJiZjAyMWU2YTRmMWM1MTUgcmVsZWFzZTMxLW1haW50Cis4MDQ1OCA2YWZmOWIwYTI4OGQ1ZjQ1NTA0NDIwNmEyNTY4MjFhZTkyNDQwYzQ2IGxlZ2FjeS10cnVuaworODA0NTkgN2UyMjI5ODc3NDU5ZmUzNTIyNTgzY2UyOGY5MjJmZDlkNzY3OTUyOSBweTNrCis4MDQ2MCBkNWVjZTQ4ZTE2MDZkZmVlNjJiMDY5OGU3MmYyMjcwNjAwNDg5MjlmIGxlZ2FjeS10cnVuaworODA0NjEgOTIwZjM0MTA2YzM0NGM2ZjkyZTA3ZTgzNTU5ZDQ1YjU3N2ViZjYwMyBsZWdhY3ktdHJ1bmsKKzgwNDYyIDQ2OTg5Y2NjNjUyOTU5Y2RmZmY3YzFjZTY3ZjkzYmJjY2ZiZjAwNmYgcmVsZWFzZTI2LW1haW50Cis4MDQ2MyAwZjg3YmU2MzMzZGEzNzAwOGZlMTEyYjY3NmFhN2VjNjY4MWNjMmZmIHB5M2sKKzgwNDY0IGQwNTNiYjNkNzg0MmNiYTFmYzQ1MjMwMmM5MzM2MGFhZDdmMzk5ZmUgcmVsZWFzZTMxLW1haW50Cis4MDQ2NSBlYWY1NjJmNTgwN2RlMTkxZDQxMTczYThhNTFiNzUzNjUxYWUxNmYzIGxlZ2FjeS10cnVuaworODA0NjYgMDYzMjJhYmE4NGZhZjU3N2IyMjVlNmVjNzRkZjM2MTE3NTg3ODc0NCBsZWdhY3ktdHJ1bmsKKzgwNDY3IDk4MDhkYjk3OTg1NDExNDkwYTUxNTYwMDY2YWE1YTZjMGZkOWU2MTkgbGVnYWN5LXRydW5rCis4MDQ2OCBiZWJjYzIyNGM3YzJjM2JlNzI5Nzc4OGNmMzQ0NWZlZjIzZjVkODBiIGxlZ2FjeS10cnVuaworODA0NjkgNWUyZDYxNzUxZDk4MDlmMzI1NWFiZDUwNjFhMzVjZmZmMGE0ODFmYSBsZWdhY3ktdHJ1bmsKKzgwNDcwIDAzNjNjNjk3ZTBkYTMwODA4YzgwOTFhYWVhNGYzMWZkMzJhZTFmNTcgbGVnYWN5LXRydW5rCis4MDQ3MSBjMmZmZDIwZDZjZjg5NmU5ZmMwYTY0Y2NjMjBjZTlkZDk3ZGY4OTRhIHJlbGVhc2UyNi1tYWludAorODA0NzIgZWRlMTZhMjc5MmI0Yzg1OTczM2ZlMzdhOTRkODk5ZjcwZjJjMGRlMSBweTNrCis4MDQ3MyAwM2YzMWY3ZTc2Mjc2YWRiOTMyNDQ3OGE1MDNkNTEwNGI0ZTZjMTJhIHJlbGVhc2UzMS1tYWludAorODA0NzQgZDIzZjYyNmE3Mzc5OTFhYTI0OGJiMTUwMGNlNGJlN2ZjODljODhlYSBweTNrCis4MDQ3NSBmZTBjNDdkZDVmODRmMTQwYTY3N2I3YWYwYTk5Njg0NDZlMGIxNWZlIHB5M2sKKzgwNDc2IDZmYjM4NDdkMzllZjM5YTA1Nzg1MmZjMWNjMWEyYjUyZDlmYzQ5MTAgbGVnYWN5LXRydW5rCis4MDQ3NyBjMzZjODM2ZmY0NjUxMjY1Y2UzNGFlYmNlZDdjNjM5MDFiYzhlNmJlIHB5M2sKKzgwNDc4IGI5ZjIxMDJhZDVmMDI2ODVmNmNlNmYzZDRhN2Y0ZDQ0OGIyZjMxMzcgcHkzaworODA0NzkgZWRmZDBlMWI5NzU0ZDdlNWQ1OTIxN2M3NGUwMmY2NWU0NDU4MzA1ZiBweTNrCis4MDQ4MCA1YWMwYWFlMjhmNGMwMjJkZTJhN2JiZmU5ZWRkNTE5M2YxNzg1ODJlIGxlZ2FjeS10cnVuaworODA0ODEgOTZjYTUwY2IyNjEzNTkzYWZiMjNkN2VhODFiMWQ1OWExNTZiZjA4OCBweTNrCis4MDQ4MiBkODA0ZGQ5NTczN2MzYWYzZTFlOGRlNmJjNTdhZjAyNzFlMzI4NTYxIHJlbGVhc2UyNi1tYWludAorODA0ODMgYzFmYjdkNWVlNDM3M2I5NGE5MTFjZDNkYjA4NGQyNGZkMGFkODg5YyBweTNrCis4MDQ4NCA1ZjE5NjIyMjA3OTI4ODA5Y2JiNjQ3Mjc3MzY1MWEwM2QwMmE5NTY2IGxlZ2FjeS10cnVuaworODA0ODUgZTk4MjY2YzUxYTBlMDhlMWFlZGMxMWRlOGQ1ZTg0ZDI1MmI0NzhlZiBweTNrCis4MDQ4NiBlYTQzZjdmNmU4NGNmOTVmN2M5NDU3YmNiYTExZTgzM2JhYmRhNGM0IHJlbGVhc2UyNi1tYWludAorODA0ODcgZjUyM2U0MGRmOWM1NjhmN2JkNzQxY2JmYzZkOTdmMWVlZGYwOWM2NCBweTNrCis4MDQ4OCBjMDIxNDRiMWM5OGNhMGExZjI1NzZiZDRkZThlZmI2Njc4YzY2N2M4IHJlbGVhc2UyNi1tYWludAorODA0ODkgNjU0OGMyMzY3NmE2ODdhYTJkZWNhM2ZmMWZlZGUzYTI4NTU5OTVlNCBweTNrCis4MDQ5MCBlZjBhODk4MWMzNzAzMWMwZDVmNDA4NTdhOTljMmVmOTViZGU1ZjAyIHJlbGVhc2UzMS1tYWludAorODA0OTEgOTE2NTIzMmU2ZDFhZTQ0YzcwM2M2YzcxYzU4NjAwMWUyMzAyY2IwMiByZWxlYXNlMzEtbWFpbnQKKzgwNDkyIDhjNzE3OTEyNTgwMzI0ZTdmZDExMzVhOWI2MjczZTQzNjAwNDlmNGIgbGVnYWN5LXRydW5rCis4MDQ5MyAyYTAzMGMxY2U5NzJkNTg3MDM3MDNhOTZmNjRkODYzNWJhZjZjYmUxIHB5M2sKKzgwNDk0IGI3MTgyNjI0OWZiZTEzYzdhMzRkZmMxZGE0ZTVmMGVmYWY3M2JjOTQgcmVsZWFzZTMxLW1haW50Cis4MDQ5NSBhYTY4NTRhNmY2ZDFkMDg0YWUwYjVmN2Y2MTQ1Yjg0YmRlYzVhMmY0IHJlbGVhc2UzMS1tYWludAorODA0OTYgZDJhNGU5NmI1NGE2Y2ZlNTc5Y2Q0MjUxMzYwYzEyM2ExOGY4OTRlMyBsZWdhY3ktdHJ1bmsKKzgwNDk3IGFiOGZlOTQ3NzMyMzQzZDJlNDc3YmE1NjY1ZTRkZGY0YjNiZDI1Y2UgcHkzaworODA1MDEgZWZkNzA1NTNhMDk4OTIzMmZmMWY2YjQ3YmRmM2I1M2MwMGY1N2M2ZiBweTNrCis4MDUwMiBjMDNhM2M2YTQ1NjI2MGI2ZjhjMDU1ZDlmNDFkMTRhOTVjZDg4ODljIHB5M2sKKzgwNTAzIGQ2M2JiMzVkZTJmMDBhYTM4M2IwZTNhNGI0Yzk5YzIzMTg0OTgyMDEgbGVnYWN5LXRydW5rCis4MDUwNCAwNDhmNmE5MmJkZTNhNmI4ZDc1M2IwYzFhMWM4NDVlOTRhODczMzUxIHJlbGVhc2UyNi1tYWludAorODA1MDUgMTBkYWY2MzRlMjRmNDgyNjk4YWNmNzk0ZTc0NmVkZWQzMzk2NjQ1YyBweTNrCis4MDUwNiBjZjIwNGE3Mzc4M2Q4NWRiYzA0ZGI0YmM4ZTU5YjFlYWU0NTY3YjM3IHJlbGVhc2UzMS1tYWludAorODA1MDcgN2ZjMjExZGYzZDViMjA1MDRhNGRhYjIyZGY5ZjFlNjg1ZTIyOGFjYiBsZWdhY3ktdHJ1bmsKKzgwNTA4IDg2MDA3MzUwNWFjYTMyOWQ0MGJjOWZhMGViZTExNDMwZGFiMDNiOWQgcmVsZWFzZTI2LW1haW50Cis4MDUwOSAzZmU4Y2Y3ODczNTMwMzc0ODRmM2Q2Y2QxMGQ2YjBhOTU2ZmFhNTZkIHB5M2sKKzgwNTEwIGI4NzdkMmQwNGMxNDY3NWIxMjBlODRmZGI0NzE3YmJiMDA2ZDYyNTkgcmVsZWFzZTMxLW1haW50Cis4MDUxMiAzMDkwMzVjMjJkY2RjY2ZiNmJjZGVjNmIwNjI1YWQ1ZjNmYjBmNDgxIGxlZ2FjeS10cnVuaworODA1MTUgM2IyNDRlYjIwZmExM2IxOGYxNTEzYTRhNzAxYmNmZTNmZGYwOTg4MiBweTNrCis4MDUxNiBkNTU5MGE5ODdjYjA2ZTBjMjE0MTM0NzM1Yzk1ODQyM2E2NDRjOWZhIHJlbGVhc2UzMS1tYWludAorODA1MTcgZGQ0NjY0OTQ1NDZkZGUzNzI2YWM1ZDg0ZmMyZDZkZDRkNGRlYTAyOSBweTNrCis4MDUxOCAxMWM5YWRhZWY5NmIwYmMzNjFhZDk1YWM2YzhiZDA3OGM2Mzk1MGI0IHJlbGVhc2UzMS1tYWludAorODA1MTkgMTU3MWYwOWY0YTI3NzVkZDM4NmE2NGUwNDQ2NjIxZWUyMWRmNzNlNyBsZWdhY3ktdHJ1bmsKKzgwNTIwIDc4NGNmYmFhMjI5ZjE2MGNkYjZhMGZmYWU5OTM2ZjZmZDY0MzViZTggcHkzaworODA1MjEgODNiOTMwMzZlYzNkN2M2NWJkYTM5NjdjMzQ0N2M3NzYxMzUxNWU3YSBweTNrCis4MDUyMiAxOGIyZGJiYmM1YjI1MjM3MjVjMDJhOGIxZTAwZGQyZTJmZGViZTdjIGxlZ2FjeS10cnVuaworODA1MjMgYzA3ZDJlNWFjZjY1YzFmMzZhZWQ2ODA0YmViNTE3MTUwOWU0YzAyOCByZWxlYXNlMjYtbWFpbnQKKzgwNTI0IDIyZGU2YzcxY2RiNDE1MjE2ZWRmN2YzZjMzNDhiMWRjMWMxNmI1NTQgcHkzaworODA1MjUgNDZhYWU0MDY3NDJkOWYxNjNmYmNiNGI0YzNkZmMyN2Q1MTA4YTM1MyByZWxlYXNlMzEtbWFpbnQKKzgwNTI2IDcxMjMwMTUwNjczMGQ3NDIxM2YwZDRkNDJkMGM4NTM4NTMzNmVkMDEgbGVnYWN5LXRydW5rCis4MDUyNyA2ZGE5ZWFmYjFkYWFkYmVkYmMwMzBkMTc1Y2NlMGE2YjA0MTQ2MWFlIHJlbGVhc2UyNi1tYWludAorODA1MjggZTI1Yzc4YTgyYTA4M2I4ZmI5OTZlMWU1MThlY2IyNTk2ZTI1ZWYzYyBweTNrCis4MDUyOSBkNDQ3YzYwZmI0ZDg4NmM0Y2Q3NzNlOGFjNTAzMzhmMjQ1YTE1MTA3IGxlZ2FjeS10cnVuaworODA1MzAgMWUxYjIzNTFjZjEyZmI0NTgyYzkzN2VhMmM3ZmU5OThjNGVlOWMzNiByZWxlYXNlMzEtbWFpbnQKKzgwNTMxIGZmZTk5ZjUyMmQ4NjNiY2E5YTQxYmFkOTc2MmZjMmFlNWM0MDQxYzcgcmVsZWFzZTI2LW1haW50Cis4MDUzMiBkNjI3MDhhZTI2YTU1MzZjMGEwNTc3NzUzM2VkMjMzMmFiMDIyZmI0IHB5M2sKKzgwNTMzIGM4Njk0MDhkNGQzZWRkYzE4NDA5NjRmMTdhMjAzN2JkNWJiNGNjNjQgcmVsZWFzZTMxLW1haW50Cis4MDUzNCA2MWFlNjY0ZGU1NmJhMDVhMTc0OTYyNTYwNzZiZjlhOGUwMDIyNzM4IGxlZ2FjeS10cnVuaworODA1MzUgOTY5ZWY1ZWI4MGM0MzUzMjczNzA3NjRiYThkOTAyZDA1ODBlNjk2YSByZWxlYXNlMjYtbWFpbnQKKzgwNTM2IGYxMGEzNzg3OGQ4NDJkMjcyMTlhZWY2ZjFhMTVlNDI0MjExYmE2YzAgcHkzaworODA1MzcgNzExNTJjZTcwMWVhNWQ0MmY4Njc3NWI4ZmE4NWE0OWEyYjAxYWMxNiByZWxlYXNlMzEtbWFpbnQKKzgwNTM4IDVjMzgyYmZjMDE1YTY2NGRiOThlOGZkMTc2NzYyNjA1ZmQ4MmY0NWIgcmVsZWFzZTI2LW1haW50Cis4MDUzOSA2YTkwZGM5NjdmZWQwMGMxMzc2YjgwMWJkMWRiZWQ4MmQ2M2FiYjNlIHJlbGVhc2UzMS1tYWludAorODA1NDAgNDQ4ZWY5MDAwODFjZTJjODg2YzM4NmY4N2M5ZjkzYWNiODUwNGE3ZiBsZWdhY3ktdHJ1bmsKKzgwNTQxIGVlZjRiOTU0ZDY0NDM5MGU0N2ZhOWIyYzI1ZDNjYWM4ZGI3YzRlM2EgcmVsZWFzZTI2LW1haW50Cis4MDU0MiBjYWZlZjc0NTRkZjllY2FlNjljYjFlMzlmNTNhYzNjZjJkNmFiZmNjIHB5M2sKKzgwNTQzIDE2NGIzYWNhZDlkYWNhMTNlMDBmOWQwOWUyYjI4YTdlZTNkMmQ1ZGMgcmVsZWFzZTMxLW1haW50Cis4MDU0NCBhZGMwNzk3YmE5MjEyZjMxZWRkNzE3MmY5ODhjYWJkM2UzOTQ1NzdhIGxlZ2FjeS10cnVuaworODA1NDUgMzY5MWQ3NWIwNjI2Mzg0MTY0ZWQ4MzMyMTI2ODc1NDAyN2I1Y2UzMCBweTNrCis4MDU0NiA2ZWNiM2M4M2ZlODFiZjA1NjIxZDFlZGUzNDQ0OWU3NDJkMzgzOWM4IGxlZ2FjeS10cnVuaworODA1NDcgMTdjYzJmNTMyNTYzMTNhYjlkNTM0OGUwMDJiODhiMTdkZDAxMzFmZCBsZWdhY3ktdHJ1bmsKKzgwNTQ4IGNjYjFkNWVmMDRkNmE5MjJjZGYzYzU4NzljMTU3NDYzMjMxYTdmODkgbGVnYWN5LXRydW5rCis4MDU0OSBhZTZmNTg2NWIzODYwNDFkMWQ4YjBmNGEzNDhhN2QzYjYwZjRmMTM2IGxlZ2FjeS10cnVuaworODA1NTAgMWFiMjQ5NDFjOTk2YWZlOTcwOWVlNDc0Y2IyMWQxMWY4ZWFkNjhkYSBweTNrCis4MDU1MSAzYjY5NzkwNTVmNWFlMTg5NDc1M2I1MTk1NzQ5OGFmM2NhOGEzNWYxIHB5M2sKKzgwNTUyIDZkOWQ4NTQ1ODYxZWVhNGI0ZjkzZTYxMjM4ZWFiYTk0OWMyYTg2NWEgbGVnYWN5LXRydW5rCis4MDU1MyAxMzc5MTY1NDNlZmFlNzg4MjZhNTNmMGQ0MzI5OTIxNzk3NGE1Y2JiIGxlZ2FjeS10cnVuaworODA1NTQgYzdhNTgyMmJmMjk0ODczNjM4ZTI3OTFmZDU0MzMxODYxZDMxMDFhOSBsZWdhY3ktdHJ1bmsKKzgwNTU1IDA3Y2U1YWYzMTdlZTJiM2JlMjk2YzgxZjQxMzY0ZGI5ZmQ3MTE4ZDMgbGVnYWN5LXRydW5rCis4MDU1NiBmYjEwZWYwZWZhMjM1NTJiZTdlZmRiOTMyNzk2MGM2ZTYwZWU1ZDc3IGxlZ2FjeS10cnVuaworODA1NTcgZmQzYWJmODJhYzk2MDVjYTI4YWNjOGEwNTFmZDMzMjNmZTJkMmU4MyBsZWdhY3ktdHJ1bmsKKzgwNTU4IDMxNmI1NzAxN2QwZjI1NzRjMjAwYjlmZDA0NzE4YmNlYWFiMmZmZjYgcmVsZWFzZTI2LW1haW50Cis4MDU1OSA4YzY0Njk2N2JhNmI3ZjM5NDg0MWU2MzA2ZjY3NDU4Y2ZmMzJiOTdlIHB5M2sKKzgwNTYwIDgyNzkyMGM1NDZhZjU4MDRmNjU3Y2IyZDMyY2RmOWEwZDRjOGE5YzkgcmVsZWFzZTMxLW1haW50Cis4MDU2MSA0YTY5ZDMyYTE3YjkwNzZlNzI2MDg3YzcyZDM5MTZjNTQyZDEzMzUyIGxlZ2FjeS10cnVuaworODA1NjIgNDU3MjFiOWNhMjIwNDE0NDU0NWU3OTA1MGM2ZWUwYTllMGFkMGQxMyBweTNrCis4MDU2MyA4MWQ3MDMzZDk1YTM1ZTQzYTgwMTFiZTg3MTM3YzYyNGQ0YTlhYTIxIHJlbGVhc2UyNi1tYWludAorODA1NjQgYjg4YWExM2NlYWYyNTQxYTQ2YWQxNDg3NDk4NzQ1ZmU4ZTNmNjMzNiBsZWdhY3ktdHJ1bmsKKzgwNTY1IDk2N2Y3YmMyZGNjODYzNTQxZjEyZDc2YTNhZTNiOTA0YmNkNzJhMTAgbGVnYWN5LXRydW5rCis4MDU2NiA4MmQ0ODcyNDEzMDY3Yjk2MDQ0OTMxZjU0ZDYyMGU1MjJiN2Q1MDQwIGxlZ2FjeS10cnVuaworODA1NjcgYjBmMzQyYWI1MDk1MThhNmMwMjU2YWIxZDU2MDgzZWI4NmMyNGVlMyByZWxlYXNlMzEtbWFpbnQKKzgwNTY4IGYwOTBiZDcyYWNkODJhNjEwNDExOWFmNjBlYTA4ZjQ4OTcwNzNmYTAgbGVnYWN5LXRydW5rCis4MDU2OSAwZGMyMTE1ZjZiYmVhZGYwODcyMjJkM2I1OTJkYzNlN2FkMmVlOWQyIGxlZ2FjeS10cnVuaworODA1NzAgYmFlZmQ3YjQyNWYxNzgxY2I1MTllYzM5NTk3NTI4YjIwYjY4YzZlYSBsZWdhY3ktdHJ1bmsKKzgwNTcxIDNhMDQ4NDIwMDAzNDM4ZjU3NmQyMDg3OGIyMjA5NmViMjJkNDE2NTEgbGVnYWN5LXRydW5rCis4MDU3NCBlODRhNGNkZTc5YzdjYTBiNjEzYjJiNDczNDY4OGI5ZjUxZDBiNzA0IGxlZ2FjeS10cnVuaworODA1NzUgZWM3NzE1ZWEyYzc1MTJiZWRjMjIzNDU1MjY4YzAyNzc2ZjJiYjRkMCByZWxlYXNlMjYtbWFpbnQKKzgwNTc2IDY1YmUxZTY3OGU2M2UyNjhjN2Y2ZDAzNDEyOTA3OGNmYjZiNTdhOTUgcHkzaworODA1NzcgZDc0ZWQ3ZTIxZTYyOTFhOWZmZWM5YTBhZDE5OGEyMWIwOGRlZTQwOCByZWxlYXNlMzEtbWFpbnQKKzgwNTc4IDUxZTMwYjkxNmZjNDk3Y2ZlYmFlY2VhNWQ2OWVhN2NkN2I4MTliYzggbGVnYWN5LXRydW5rCis4MDU3OSAyMjBkNDc2N2ZhOTc4MWJiZDU2OTc5ZWFkMTc4MzIzZGVkZGEyMTg5IGxlZ2FjeS10cnVuaworODA1ODAgMGI1YzQ4Yzc2MjI0M2U3ZmFjNTk1N2ExYmVhZDdmYmNjNTc0YTliNSBsZWdhY3ktdHJ1bmsKKzgwNTgxIGM5ZTQwY2VkYzhiYzI1ZmVmY2Q5NmYxYmFkOGJjNzk4NzcxZjY3MzUgbGVnYWN5LXRydW5rCis4MDU4MiBmZjFhNTkzZjhkMjNjMWY3Nzg4MmNkZGEzY2VlY2Q0NDE1NTIxN2YzIHB5M2sKKzgwNTgzIDU3NTQ4Y2NlMWVhMDVhYjYxNDQ0YTY3ZDRlM2M0ODg4N2JmOGRlNDYgbGVnYWN5LXRydW5rCis4MDU4NCAxZTFjYzY3MmViZGQyNzY1ZjNhOGZkOWY4MWFhZThkNzkwYTI1M2VhIHJlbGVhc2UyNi1tYWludAorODA1ODUgMDRhMThlNTljYzJjNDA0ZDAyZDQzZjAzMDI5MzQ0ZDI1ODM0MWY4MyBweTNrCis4MDU4NiBjZDg4ZjVmZTJkMDY1MjMwMGQ5MzgzYmU4NmUyODg0YzhkZmRhNDYzIHJlbGVhc2UzMS1tYWludAorODA1ODcgZmQ3ZWM2MDdlMTAxYTU5NDNjMmQ0OWExNzE5OGVmNGEzOWZjOGU3MCBweTNrCis4MDU4OCA2OTUwZWFiNTFmZmU2MTdkYTAxMzQyODdjM2E4YzVkMDUzMGQ5MzFjIHJlbGVhc2UzMS1tYWludAorODA1ODkgYTQzNzc2NTUzYWI1MzA3ODNjYjRjZGMxNjc3OWVmY2Q1ZThmNGJjZSBweTNrCis4MDU5MCAwNWZlMTM3YjdlZmYwMzU2ODY4YzU5MDBjM2FkMTAzODQ4M2U0OGZhIHJlbGVhc2UzMS1tYWludAorODA1OTEgNzIxNjkyZWQ0YTdjYTk5ZTlkOTlkZGU3YTExZDczOTc2Yzk4N2JlMSBsZWdhY3ktdHJ1bmsKKzgwNTkyIDk3Y2U2Y2U2YTI4OTQ4YmM2ZjQ1NWM4ODNiYjZmNmEzNTcxMWY1ZjggbGVnYWN5LXRydW5rCis4MDU5MyAwZjY1ZmJlNjZlM2EzYmY5YTY4YWM0ODkzNjhjNjE5NjA4N2FjNzQ0IHJlbGVhc2UyNi1tYWludAorODA1OTQgNTliMmFkYjUyYjE2YjE4OTMyMzQ2NGQyMGYyN2QzYmZjNzUzNGM5MCBweTNrCis4MDU5NSBlN2YwNWRiNWYzYjAzMjc0NDY4YzhmZWFmYmM2NjIyMmMyM2JiYjM0IHJlbGVhc2UzMS1tYWludAorODA1OTYgODA3ZmNhYzRmMTdiNTNhNDZhNjNhMWIyM2MwNTIxYTJmZGRkYzg5NSBsZWdhY3ktdHJ1bmsKKzgwNTk3IGVhODNhNjFmNjQzMGUxYTVlM2I3YTYwZmUzN2ZlODhmNWYwMjM4ZDEgcmVsZWFzZTI2LW1haW50Cis4MDU5OCAwZjNmOGI5ZWI2ZmY4ZGIxZGE5NzYwYzg4ZWFmMzlkMjI3YThjN2I5IHB5M2sKKzgwNTk5IDFkMmIzMjJjNDZiZTM0NWQwZmZhN2IxYjhlMmM3ODQ4MGZlOTM2YjAgcmVsZWFzZTMxLW1haW50Cis4MDYwMCA0OTNiYjQ1ODVlMzgwZjA5OTBhNWEwNTE0NzMyZThlODQ5YzViNmY1IHB5M2sKKzgwNjAxIGQ5YWZhNWQxMjFlYTdiNjg5NTc5YjMyNmY5Y2JhYTJiYTdhNWIwOGYgcmVsZWFzZTMxLW1haW50Cis4MDYwMiA5NGUzZTk4OWFlMjNmN2RjNGI3NzI3YTE3MTE3Yjc4ZWI5MWRkYzUyIHJlbGVhc2UyNi1tYWludAorODA2MDMgMTg1ZGUzMWM4YTZjOWE5NDZlYjI5OGQ0OTJiOTUxMTAyZWNmZDc3NiBweTNrCis4MDYwNCAwMDczMTlhOWM4ODhjZmQ2NTAwZDM5NzE1ZTQyZWZiMjljZTBlZDZhIHJlbGVhc2UzMS1tYWludAorODA2MDUgNWY4ODMwOTM1ZDc0NDQ5NDI2YzhlNDMzYTAwOTQzYmE3YmI4NTZjZCBsZWdhY3ktdHJ1bmsKKzgwNjA2IDU5M2EyMjU1MDI3NTdkMzlmNTU4M2E1MTdiN2ZiMDM1OWY3MTY4NWIgbGVnYWN5LXRydW5rCis4MDYwNyAyZDVjMzQ1ZjM0Yjk5Y2M4NzNhYjhkOWJkNWZiNWNkMTdjNDA2MjgxIGxlZ2FjeS10cnVuaworODA2MDggMDFiZGQ1M2Y3NDg5OWVkOGE0MTczNjk1YTE3YjM5OGU0ZTEwODhmMiBsZWdhY3ktdHJ1bmsKKzgwNjA5IDg0MDA5MTNmY2M1NTVkNjY0YTJkZjE3MTg1ZGVkYTNhNzIzYjljN2MgbGVnYWN5LXRydW5rCis4MDYxMCAzNDMxZTEzMzkxM2M5Y2Y4NGU5Yzc2ZjA3ZjY3ZmU1OGI1ZGQxYTBkIGxlZ2FjeS10cnVuaworODA2MTEgNDg2ZmU4MmJhZmI4NGY3ODVmZjg1MmJkMGMxNWZlNWQ2MjFmODA2NCByZWxlYXNlMjYtbWFpbnQKKzgwNjEyIDc3ODEyMWIyMzg4YjNkMTVmZDc5ODIyOTgwMzllZjI4YmNmYWMxNjEgcHkzaworODA2MTMgZTkxOGI4NGVmOTY4Y2M4OTA1NWZmMjJhY2MwMWJmN2Y5ODJjNjUyOCByZWxlYXNlMzEtbWFpbnQKKzgwNjE0IDRiNTcwMTkxNTBhOGIzZGNlZmNlYTdjMjZiMjU1NDRlOWFiMDI5M2EgcHkzaworODA2MTUgNzdkZGI4ZDNjNDMzNTRkNWUzYTkwM2MwNmYwOGM1NmVlN2UxMmRiYiByZWxlYXNlMzEtbWFpbnQKKzgwNjE2IDRkOTYzNGI4NDQ5YmI4ZDQ4NDNhMTExODI0MjAyMzViZGRhMmFkNTYgbGVnYWN5LXRydW5rCis4MDYxNyA2Y2RhNjAxZjRjNTg1NmZhNjIyNWFiYzE5YzdhYjc5ODA4ZWEwMzU0IHJlbGVhc2UyNi1tYWludAorODA2MTggOWU1MDU3MjAxNWFkNWIxOTE1NTc2OGNhNzhlZjA1MWQ0NjgxOTVjZSBweTNrCis4MDYxOSA0MDUyMzdiMTExMDQyNTM4NDEwODVjNzUzYzVhMzU4NjY1NWZhNDZkIHJlbGVhc2UzMS1tYWludAorODA2MjAgZWM2ZTllMGUzMTZkMjg5Y2Q1OWQyNDBiNDgyZjVhNzM4NGNhYjk5ZSBsZWdhY3ktdHJ1bmsKKzgwNjIzIDQ3ZmM2ZmU1ZTQ1NGZjZDE4ZDk2MzdhYzNkYzc4YWU4ODc5NjUxODAgcmVsZWFzZTI2LW1haW50Cis4MDYyNCBmYzgyMmFmMTFiYmM2OGI2ODFhYWFhYzlkNGYwNTQwZGQ4YzQ0Mzc3IHB5M2sKKzgwNjI1IGQ2NmRiMWIyMmQxMDk4OTQ5NmE5MWJjN2NiMjBhMDE5NzNmMGI0NjcgcmVsZWFzZTMxLW1haW50Cis4MDYyNiA0ZGRmYjVkZDRiYjc5NGJhNjBlODU2ZWViYzBjODRlNDVjNDE5NmNjIHB5M2sKKzgwNjI3IGM0ODJiNDFhZTg1NTRmYTRjMzdjMTEzMzViM2UwOGQyMjFjNjYxOWQgbGVnYWN5LXRydW5rCis4MDYyOCAwNmUwMTEwYjA4MjA4YjkxY2RiNGEzZWIxMjIwYTVlNjA2YjkyNGVhIHJlbGVhc2UyNi1tYWludAorODA2MjkgZjYyNzAwMjdlNDk5ZjE5NmIwMGQ1Yzk4MzZlOGJmYmRlYzRiM2ZjNiBweTNrCis4MDYzMCBhY2UzNDUzNzc4MDAwY2MwM2RiNTY1Y2YyNTRhMjg1MzQwZGFmM2Y4IHJlbGVhc2UzMS1tYWludAorODA2MzEgYzkwODgxOTI3YmFkYTZkOTA5YWM1ZDRmZDI1ZjVhYWQ3MTc4NmViMiBsZWdhY3ktdHJ1bmsKKzgwNjMyIGI2YjNlNGY3NzdjOTZlNmIzNWE3NzIyOTRlYzU4YWExNDNlZDljODAgcmVsZWFzZTI2LW1haW50Cis4MDYzMyA5Y2M2OTNmOWE1ZGUwM2Q3YTZhZmQ0YmVhNjMxY2NjZDQzZDg2ZDJhIHB5M2sKKzgwNjM0IGYzMmI4YTNhZTlkNjAyOTRlMzEwZWJkZDI4ODQ0YWRmNzZmZjQ1OTMgcmVsZWFzZTMxLW1haW50Cis4MDY0MCAzNmE0MTc5ODEwZjBiNjcwZmU0NzgwYzg5MTlkNDkxNDBmMjIwY2ZhIHB5M2sKKzgwNjQxIDY5OTA0OWIzYzdkNzEzZjM4OWY4ZmJkODM3YTljMmY4YmQ1YTJkYjEgcmVsZWFzZTMxLW1haW50Cis4MDY0MiAyZDJhODU4ZmUzZTE5NGNmOWQwOTNmYzM3Y2I1NWMxNTA0Yzk3YmY5IGxlZ2FjeS10cnVuaworODA2NDMgN2UzNjFhNmEyYWM4MjJlNzUxMzk2MThiNTJmMDcxZTM3ZGFjZDhiYiBsZWdhY3ktdHJ1bmsKKzgwNjQ0IGZlNWEwMDZhZjUyYmRlNzJjZjI4NDAxZGYyMzEyMjVlZTdmZmMxYWMgbGVnYWN5LXRydW5rCis4MDY0NSA5ZmNlY2U0MDVlMjk1MTFkYjQ4Y2Y0ZjZkN2Y0Nzc1YWY0MGIyMDllIGxlZ2FjeS10cnVuaworODA2NDYgNWE0ODg2NWJiYzFlNmIwM2NkNjk1MzRlZmU2YTk0ZDBlMWJjNzE4ZSBsZWdhY3ktdHJ1bmsKKzgwNjQ3IGMyZTBiOTNmODY5ZjQxY2M1YTQ1NTZjZmYxZjBhNWQ5OTg1YmNkYzYgbGVnYWN5LXRydW5rCis4MDY0OCBiZmQyNTQxZDhlYzVhMzUwOTgwMjI5YTE0OTY4ZTY5ODRkZjA2YTI0IHB5M2sKKzgwNjQ5IDEwMjA2Y2IyM2M4MDIxYmZiOTMzMTM2Y2E3NTk2OWQ4NGY0NzI4ODAgbGVnYWN5LXRydW5rCis4MDY1MCA2MjFkMmU5ODRkMTg3NmQwOGRkZTZiYjBiMTg4MzczYmQyY2U2YTY5IHJlbGVhc2UyNi1tYWludAorODA2NTEgMmQzYWJhOGNmNmEzNDhjNjdhMjg4YmE1YjBkMTU1NjExYjIyM2VjNyBsZWdhY3ktdHJ1bmsKKzgwNjUyIDJiZGI4ZWJmYzRhOTUyM2Q1OTUxY2RjMWJlNzUwNTc1MTk1Y2RmMWIgbGVnYWN5LXRydW5rCis4MDY1MyAxYjg5NDU5NDQ5MGZiZTM5ZjBmMmU2ZDZmZDVmODcwOWVjYmI2NThiIGxlZ2FjeS10cnVuaworODA2NTQgN2EzNWUwYjhhZTA4YzViNTI3NDQ4YzE1NWEwMzZkNjZiZDU1MzZiZCByZWxlYXNlMjYtbWFpbnQKKzgwNjU1IGU0N2FlYTg2ZjcxNDMzNGVmYWExMjA0ZWQxMTVlYTJiZjNlZWRkM2MgcHkzaworODA2NTYgMDkxZDk3N2M0ZDM3NDNjZDk0N2MyMTEwMWQ3YTIwYjRmMjcxNWZlYSByZWxlYXNlMzEtbWFpbnQKKzgwNjU3IGJjNjIzMGM2NmMxNDFlMGFiYmUyMTEzMDBjNzA5NjdmZDRjMmZjMmYgbGVnYWN5LXRydW5rCis4MDY1OCAwMGFjNDY4OGNkY2QwZjNkMzNlMjY4ZjIxMjM0Y2Q1MDQ3YzNjOTQ5IHJlbGVhc2UyNi1tYWludAorODA2NTkgN2E5ZDE3MmExNWU5MDllMWQ0M2Y0YjA2Yzk1ODU1OGVkYTUwYjEyNiBweTNrCis4MDY2MCBhZjgxMDQzMWJkYWM5ZjMyYTVkNWM1ZjU1MjZhZDM0ZTViMjYwOWExIHJlbGVhc2UzMS1tYWludAorODA2NjEgNTkxZGU2YzlmZmU5NDc0OGY1NGJmMTc1M2ZiMTQ5ZmNlOTZiMTEwYiBweTNrCis4MDY2MiA1MWNkNTNkM2Y2MDBiZmM1NTQ1NDA5YzM2NzE0ZThjZWZkODVkZTI5IHJlbGVhc2UzMS1tYWludAorODA2NjMgNzc0MjMwMDc4OTI2ZWY3ZjZlNDNkMTE5MWMzMjUxODg3M2U5YjRjZSBweTNrCis4MDY2NCBiMjVlNGJhNGFmNjE2ZTkzM2E5MGVmOTc2OTU5MTQ3ZjRiMTgwMjYyIHJlbGVhc2UzMS1tYWludAorODA2NjUgOGZjOTg3Y2FjOTEzZjJjZGFkNDgyNGZhYTQ2ZGQxOThjYTVhYTQzOCBsZWdhY3ktdHJ1bmsKKzgwNjY2IDNlNDUxMzk0N2M1N2JmM2JkZTE3MTNlNjc2MmRlMzNkZmFmOWFiOWMgcHkzaworODA2NjkgM2M0Y2Q3ZGRmMWQwMTc0NjY0YjBlODYwNTgzN2EwNTU1NTdhMTczMyBsZWdhY3ktdHJ1bmsKKzgwNjcwIDNlYjZlYWQ5OWE2MWFkMTI4MGUyODU4NDQ0NTJmMmE1ODU0MTUxYjIgcmVsZWFzZTI2LW1haW50Cis4MDY3MSBjOTA2MGMxYzFmOTA1NDI2OGRiYzgyMGQyNDU4YjIyOTk2YzE4YjlkIHB5M2sKKzgwNjcyIDhlMzRkNTliYWRmOThmN2Q2MmZiYzliOTQyYThiNWQyM2FhYjFlYWUgcmVsZWFzZTMxLW1haW50Cis4MDY3NCBhYjY0MjM3OWRkYzAyOTQ1NmEyYWM4MDFlMGE0ZWUxZjM5NjYxZGYyIGxlZ2FjeS10cnVuaworODA2NzUgYWJmYzdlZDM1NWU0ZTExMmVmYmYzMTVhNDFkYjljZGM5NzAwOTU0NSBsZWdhY3ktdHJ1bmsKKzgwNjc2IDViNmE3ZjJhMDVjNmQxNmQyNTkxNDljZTM5YjRlMzAwMjUyZDZhMWMgcmVsZWFzZTI2LW1haW50Cis4MDY3NyA1NWUwZWNjYzdmNDZmMzQ3ZGY0MDBmM2E0ODIyMWU2NzI3YTRlNzAyIHB5M2sKKzgwNjc4IDUyYTNhYjVlOGU4Y2Y2NTlkNzAwOWIxYWRlNjEyYzZiYzZlZjM2NmMgcmVsZWFzZTMxLW1haW50Cis4MDY4MSAzZWJhYzBlNDYwZTAzOWUzOTg0YzY5NDA4MzdkZjU3ZDZmYzE0YmZlIGxlZ2FjeS10cnVuaworODA2ODIgMjQ1ZTQzM2Q2MGViNWRjNTNlMTFkM2YxYmY1ZjhhODRmNDQ1YjE1ZCByZWxlYXNlMjYtbWFpbnQKKzgwNjgzIDE5MzA0ZDgyM2M4NzQ3YzA5N2E0NWExMDcwMGJjMDA1N2I3ODk2M2QgcHkzaworODA2ODQgODJkYTI5MGZmNzIyM2U2YmJhZDE2M2M1Njk4MmM2ZWRkZTYyMTgyZCBsZWdhY3ktdHJ1bmsKKzgwNjg1IDJkYjRiMzAwYTQyMDg1NjQyYzU1ZDg3NWZiOWJlMjYwZGMxYzhmYWQgbGVnYWN5LXRydW5rCis4MDY4NiA1OGJlM2FmMTMwZTI2YTllYjk0ZTM0ODdiZjU1NWEwMDc3ZTY0YWE0IGxlZ2FjeS10cnVuaworODA2ODcgZjg5YmExMGY5NzM0OTU5OWU3MGJiOTBjMmE3MWZmOWNhOTljMmY5ZiBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwNjg4IGUyOGZlZGYzNjM1OTY5NGQzMDk4NzY0ZDMwNzlkNzI4OTgxMjM2ZmEgcHkzaworODA2ODkgMjEzNTVkYWFmMjNhNDZkYjk3NmMyOTE0Mjg2ZmI2ODM3MWEwOGYxOSByZWxlYXNlMzEtbWFpbnQKKzgwNjkwIDdiMzA3YTMwMjc0NDc1OGQyMGUyMDIyMTAyZmIwMzQ2NWEyNzNjODAgbGVnYWN5LXRydW5rCis4MDY5MSBmMGUyMWFjNzk1ZjQ3NWMzODk2OGQzNTZlMDc4MmMwYjQ4YWZkMTU3IHJlbGVhc2UyNi1tYWludAorODA2OTIgZmRhMWRkYWUwNDljNjc2ZWExNDQ2ZWU1Y2JkOGRiODhkNDBmMDRkOSBweTNrCis4MDY5MyA0Njg1NzA5ZmFiM2UxMzc3MDY1MTE3MGFlYmQxZjBlZGE1MzRmZjkyIHJlbGVhc2UzMS1tYWludAorODA2OTQgOWY0Y2EwMDYxMGUzMzhiMTBjNGNhZDQ5OGVmNjdiMjA5MTcxYTRhZSBweTNrCis4MDY5NSBmZDI2ZWI5ZmIwZjkyYTRhMzlhOTQyYTFiNDdiMzQzZjhmNjY0MWJkIGxlZ2FjeS10cnVuaworODA2OTYgOTRiNTJlNWNiZTI5NDNiZWI0ZGE1NjEzMjg2Y2U5ZDBkODBiMDlhZCByZWxlYXNlMjYtbWFpbnQKKzgwNjk3IGFiZjIyMDFkYzM3Y2JlZjFjMDQxOGFmOTYwNzFmNGZhMDNlM2VlNmEgcHkzaworODA2OTggMjEzNjlkMTg5ZDllNDc5ZjQzMGYzNjI4OTUzYzI4ZWMwNjMwM2Y0ZSBsZWdhY3ktdHJ1bmsKKzgwNjk5IDdkOThlMGVhOWRiMzU0ZTMwOTNjZTVlNzczNTU1Njk5NzhiMTUyZjcgcHkzaworODA3MDAgZDk1ZGYyNjIyZjlmNWI3NzQ3OTc4OGY4ZGFiYjYwMjM1OTQwNGM3OCBsZWdhY3ktdHJ1bmsKKzgwNzAxIGIxZGQ3NzE1NDVlMjEyN2UzZDlmZDcwNDE4ZGY0OGFjZTEzYzM3ZTQgcmVsZWFzZTI2LW1haW50Cis4MDcwMiA0MzEyNjc2MjZhMDM1Y2U0ZTkyODk4YTZiNDRjMzYyZGM1ZGUxZjVmIHJlbGVhc2UzMS1tYWludAorODA3MDMgY2YwMzYxYzAyNTUxZDA5ZTJhMGZjNjU2YmYyNWE1ODJkNzNmYzkxYSBweTNrCis4MDcwNCBiM2MzYjEyNDYwZDQ4MTEwOTFlZjBjZDE0YTgxMmU4Y2ZjOGRiZjJhIGxlZ2FjeS10cnVuaworODA3MDUgOGI3NTMyOTkyNDY0MmViOTllMDU2MDQxN2RiZDIyMTdmZmJlNmRkNCBweTNrCis4MDcwNiBjNjJiMWQwMjU1MWFlMjg2NDE2YTYzYTk0YTU2M2U3ZDZmN2Y2MzNkIHJlbGVhc2UyNi1tYWludAorODA3MDcgYTc3NDY3YmNhZGUwYjc4M2E5ODE1MGJhMDYxNWM5M2VhMTkxNmUxOCByZWxlYXNlMzEtbWFpbnQKKzgwNzA4IDAzYzMyMDkyZDI2NjgyODFjMmJhY2JkYjA4NDAyNWIzMjdmMzQ1YzAgbGVnYWN5LXRydW5rCis4MDcwOSA2MmI5YTc0MzEwNDdmNmU5OWQwNzI5NjRiNDRhYzNiMTEwYmE5MzgzIHB5M2sKKzgwNzEwIGQwNjJiOGU3OTA1MjFlMTNmN2Y5M2E5NmYyNzNmN2ZiNzY1YjVjOGIgbGVnYWN5LXRydW5rCis4MDcxMSBiN2ZjYjJhZjhjYjQwOGRlNjdhYmU4NTFlMDAwOGQzOTY2OTY0MDdkIHJlbGVhc2UzMS1tYWludAorODA3MTIgNTZkODMxZTZmNTA4ODFhZGRkZTg1MjRjN2JiYTAwMjYyYjYwMDk5OSBsZWdhY3ktdHJ1bmsKKzgwNzEzIDQ3NjdjNjY2YjI1YjA4YjNiZjU5YjRkYTFmZTc2NzQxYTU3MzYyN2YgcmVsZWFzZTI2LW1haW50Cis4MDcxNCA1ZDRhNTY1NTU3NWYyYzRjNmRhNGVlNmFjYWYwM2I5MmEzMWYxOWJiIHB5M2sKKzgwNzE1IDNlZDI4ZjI4NDY2ZjYwNmExNmFkMjRmODg4MWY2NTk3NDBkZmUwYzcgcmVsZWFzZTMxLW1haW50Cis4MDcxNiBmOTkyY2VkMzJjMjA1NzhhMjkzMDFjZmZlMjMyNjgzNWNkODMwZWIyIGxlZ2FjeS10cnVuaworODA3MTcgZDkyZmY3MDgxYjIwMzlkNmNjODU1OWMxYjIzM2IwYmVlMTVjNzQ5ZCByZWxlYXNlMjYtbWFpbnQKKzgwNzE4IGYwMjU1ZWY0ZGJlYmQxZjIzOGVkNTkxYmYwNzZkYzNhOTQ5YTdiYzMgcHkzaworODA3MTkgN2FhZjU5ZDhlZjBiZmJiNGFkYmQ5YTRmYzM0YzMzMjVmY2M2MjQ5YiByZWxlYXNlMzEtbWFpbnQKKzgwNzIwIDliNDM4YmIwNmQ0ZDYyM2UyZTIzNThjNTY3NzZiYjI5MGFmNjJmMTEgbGVnYWN5LXRydW5rCis4MDcyMSBmZTNiZjM5OWExOWMxMjY3MzdlYjQ1ODI0YTkyNDU3YTJhZjhjOWU4IHJlbGVhc2UyNi1tYWludAorODA3MjIgODFjZWY1Yjc0ZjFhN2FlNTk4MzdlMmI5Yzc4ZTBlMDM0MTU3OTE1OSBweTNrCis4MDcyMyBjYTAxYWJkOGFkODcxNmZjMzcxNjJjNDBhMjhhOGE4Yjg0NTVkYzdlIHJlbGVhc2UzMS1tYWludAorODA3MjQgNGZkM2FiNWZhNzFkNjA2YWU3ZTI4MDMxMjkyOThkZTdiZWFmMzJmMCBweTNrCis4MDcyNiA2ODUwYWE3ODZjMTg3NjdlN2EzZDI0ZDNlOTJkMzZkOWM1NWI4ZTkzIHB5M2sKKzgwNzI3IDUxMmQ2MWE2OTJlNGViMzdlZDU3M2ZiN2MwOTEwN2IxNTg0YTQ3MTkgcHkzaworODA3MjggMTM4YmI1YzkzMDc0N2ZhZWI2NGU0ODNlMzdmMjA1ZDRhNGRjNDY1ZCBweTNrCis4MDcyOSAxOGNjMDVlODI3NTIyNzFlNjY0YjUzZmJlNjA0NTE2ZDU0NWJkYTljIHJlbGVhc2UzMS1tYWludAorODA3MzAgZTk5MTBkMTkzMjE0NmUwYTUzOTIxMzRkZjA2NDBiMjg2ZWM5MTM1MiBweTNrLWppdAorODA3MzEgMTgxY2QxNDkyY2IwYzc1YmE5N2RiMzIwMTlmYmI4MTM3MzEzOGEyMSBsZWdhY3ktdHJ1bmsKKzgwNzMyIGExMTg5MDUyNzIyOTlmYjVlNmEyMDA3MzQ5YTBhYWY3MDQ2NjRkMWQgbGVnYWN5LXRydW5rCis4MDczMyAwMmUxODdiYWFmNTE0ZDdiOTYyYzNhMDRlNGFjMzE5YTk3N2VjZDUxIGxlZ2FjeS10cnVuaworODA3MzQgMGNmODBiNzBmODM4YTAzODFhMzJjZjdiNTVmMzY0ODQ1ZDAzNGRjNyBsZWdhY3ktdHJ1bmsKKzgwNzM1IDk4MmVlYzlhOGMyODg1M2FmZDVlNGQ4Zjk4OTQwNzBlOGQ1OGZlYzcgbGVnYWN5LXRydW5rCis4MDczNiBlYjQ3MGI4NWU2N2FmYTY1ZmEzYmQzMDAyMzc5ZjE0MWQzZGVkYWM2IGxlZ2FjeS10cnVuaworODA3MzcgN2VlNTYyY2NlYTgwMmMxMzY5ODdmMWIyZjkwYTk5ZDJkOTk0NDk3YSBsZWdhY3ktdHJ1bmsKKzgwNzM4IDYzNjU5MWY0YzIxNjJhOTEwMDAzMmZmMDBhZmY0ODlkZGMxYzI2ZDggbGVnYWN5LXRydW5rCis4MDczOSA4MTQyNDUzZGI4MGNhMDAxYjUxNzhkZmQ2M2NkM2NlZDYzNWMxZDgyIGxlZ2FjeS10cnVuaworODA3NDAgN2M2MmU3MmQ4NTZiMjkyMzI3ZWJkMjg5YTAyYWVmZTBmNzljNzBiYSBweTNrCis4MDc0MSBmNjU2OWUzNGJkMjgxYWExZTIxZWIxMTc5MzgyNWNkMTIzNGU0MDliIGxlZ2FjeS10cnVuaworODA3NDIgNzY5NWY2YTdlM2EzYjY0MjYyZjcyZjk5ZTUzMzgzNzRmN2I2MzEzYyBsZWdhY3ktdHJ1bmsKKzgwNzQzIDY2ZmJjYTI4N2EwMTE4NDJjMTAxYjY2MmYyNDkyNDJhNmJkZjE1NDAgbGVnYWN5LXRydW5rCis4MDc0NCAzYzc2ODNkNmEzYzQ3MTM2NGUyOTgzNjU2ZTJlODU1MmU1ODdiMjNmIGxlZ2FjeS10cnVuaworODA3NDUgODVkNjkzZTVmMjI5M2JiNDFhMTUyZjEyNDFlMTUyNWIzMzI1YWZkZiBsZWdhY3ktdHJ1bmsKKzgwNzQ2IDU1YTU5M2NjMzI4MDNiYzc0ZGJiZmFmM2M2OWE0MTUxYWQ2NjA4ODggbGVnYWN5LXRydW5rCis4MDc0NyBjZDMzZDZjZDIxMDE5NTY0MzM5NTJhZmQzMmMyNmQ1YjdiYjNkODgxIGxlZ2FjeS10cnVuaworODA3NDggZTBlZTA5NTFlOTUzZjE1MWNmM2ZjMDhjN2EwOWY3NTI0NWQ1NTM5MiBsZWdhY3ktdHJ1bmsKKzgwNzQ5IDVlYzE1NWVjN2RiMjcwYTRlNTBlZmJhODliMDVjZDgxZDJjMjU0OWQgbGVnYWN5LXRydW5rCis4MDc1MCBkMTc2YWE0NzMyODc1Njc4ZjRkZWVkNDhjOGQwNWEwZjU3MTE4ZWJkIHB5M2sKKzgwNzUxIGE1MTUzN2U3MDRhOWI0NDRlNmNlNTk4NGM4MDJjYzg5NWJjNmVlMTYgcHkzaworODA3NTIgYjc2MGY2ZmY4OWVhYjI3YTI0Y2I1MGU1YmZlYzVlNGViNGM5OWVjOSBsZWdhY3ktdHJ1bmsKKzgwNzUzIGMwZWEwNzkyNTQwMDI4NGZmNDljMWVlNzE0ZTlkYzI1M2FmNTZhOWUgbGVnYWN5LXRydW5rCis4MDc1NCBlY2MzMmUyZjQ2NTY2ZTVkZWM5ZjY5YjQ4MjI1MzJmNTE5NDAwYjFjIHJlbGVhc2UyNi1tYWludAorODA3NTUgMTgzMzRmMjNmNjg2ZmMyNTg5NjQwMjRkNzBiOWMxNDY2N2U3ZTY1MCBweTNrCis4MDc1NiAxMTQzOTcyZjA0YmJkNTc3ODgwZjFjM2JiMjAyYzAxNDQxMjMxYzZlIHJlbGVhc2UzMS1tYWludAorODA3NTcgMWI0YjUwNmFhMDQyNzY5ZjkwYWZhMTFhMWYzNDY2ZjA0NTQzNmRmYSBweTNrCis4MDc1OCBmNTUwZWQ4OTM5OGY1OGU1MWFkOTVlMmU1MjRlNzkyZmM3ZGFjNGNlIGxlZ2FjeS10cnVuaworODA3NTkgNmY0NjY4Yjk3ZDY4NDAzNTQzOWJkZjM4ZjU5MTk0Mzc0YmMxZTE2MiBsZWdhY3ktdHJ1bmsKKzgwNzYwIGM3NDI5OWRlODAxYWJhMzViMzYyMDk0OTUyMDdjZGQ4NTM5ODg2MTMgcHkzaworODA3NjEgZjM4NGUxMWMxYmI1ZjY4YTg3N2Q4YTk1M2Q3ZWQ3YjNkZTlmZTM0MyBsZWdhY3ktdHJ1bmsKKzgwNzYyIDM5MDdkNTI2NDhhMGYyNTYxMzM1ZTcwZWI4MTA4ZTg3ZDgwODExYjIgbGVnYWN5LXRydW5rCis4MDc2MyBhZGMyZWJkYTc2MzZhYWZiZGM3NTAxY2IwNzZjNzc2OTU4ODM3YTNiIHJlbGVhc2UyNi1tYWludAorODA3NjQgMGE0Y2E4OTJhNTllNWU5Mjk4MTkxM2Y3NjgwNTllODA1YWU5MDYxNiBweTNrCis4MDc2NSA5YmE2ZmNlYzRmMTQ5ZTE3YTIyMTI3NTRlNWM5Mzk0YjYxNGUwNzJhIHJlbGVhc2UzMS1tYWludAorODA3NjYgZDkyMjgwNTE3MzA1MzcxYzA1MmJmMTJlNGRiNjdjYWRkN2UwZDI3YyBsZWdhY3ktdHJ1bmsKKzgwNzY3IDhjOWI3ODViMTg0OWQwNmIzZDdhZGRkYzQ1MDE4OGQ2ZDJmNmE2M2IgcHkzaworODA3NzEgZDQ5ZjEzMTBlMjNmOTAyYWQ4YWUzN2U4ZDU3NTA0N2U0ZDYwN2MzZSBweTNrCis4MDc3MiA2ZTRiZmNmMjA4MGM3MTYxNjZhY2U0N2FiYjJkZGY5NDRkYzk5NTZiIHB5M2sKKzgwNzczIGNmNDg1MzUxMzJlMGRjMDdlZDBlM2I3YjAyYjI1Mjc0OWE3ZTJjNzIgcHkzaworODA3NzQgZTAxMDVmZDUyMDMyOTE3ZTMwMDU5NWYzNjA1ZTVhZmQ1ZDMyZjY5NiByZWxlYXNlMzEtbWFpbnQKKzgwNzc1IGQ3NGFjN2NjYTYwNzcwYTExMmRhYTNkMmU3ODY1YjMzMDZhYzY3OGIgcHkzaworODA3NzYgMTM0YTYzYWYyMmE5YTU4YTg2NTZjMjgxZTczZWE3ZjkxYTJhNTk2ZiByZWxlYXNlMzEtbWFpbnQKKzgwNzc3IGJiNTFlNGJiZmY4YzI4YjIyM2NkZTAxMThlMjk1MDBhNDBmMmE2NDQgbGVnYWN5LXRydW5rCis4MDc3OCBkZDYwZGUyZmFlM2NmNmQzYWRhMmM2ZDg1MTI5NDQ0NjBjYTg5ODE3IHB5M2sKKzgwNzc5IDQzODBlMDQzNDNlZTk4NWE3YTk5YTA2OTdmMjY4NjBkNDhhN2I1ODQgcmVsZWFzZTI2LW1haW50Cis4MDc4MSBiN2FlM2E2YjFkODRiMjc0MGE3MjY0M2E3ZmQ2YjNhNWFiN2RjOWVlIHB5M2sKKzgwNzgyIGY0NDExYTNjZGYxMzliYWM3NzllMmJlZGQxZDc2NzAxOWY4MTJmNzggbGVnYWN5LXRydW5rCis4MDc4MyAzMWEzMmU0ZTAyNTZmZjliMTNiMTU0YzhiNWFhZmE0ZmIwMWQ4MzBjIHB5M2sKKzgwNzg0IGRjNjg1MjA5ODhhN2Y5Yjk2YTI1MDA0M2I3ZWRmNjg5YmMwZDJjYjcgbGVnYWN5LXRydW5rCis4MDc4NSA4MTNkYWVlOTRmNzM4M2YxZWExMzRhMWZkMWVlNTdmZDU4MWU5OGZiIHJlbGVhc2UyNi1tYWludAorODA3ODYgZmJiNWNkMzQ1YjQyZTkxZGMyM2ZkMzk2NzFmMzhiMWVlYTI2YjZjYSBweTNrCis4MDc4NyA3YjI5OTQwNGU3ODEwY2Q2Yjk2Njk5MjhkZjI0OTRjZmI3ZDk3ZTVhIGxlZ2FjeS10cnVuaworODA3ODggZjA1YTI5ODkzNzllYzlhNmIzMzUzYzI2ZTgzODcwZDg3MjRiOWM4NyByZWxlYXNlMzEtbWFpbnQKKzgwNzg5IDZkYjliYTQyZTQ2ODcyMzgwZTA5YmY3NTRhMGE1ZTY4NjFjOTBiNDQgbGVnYWN5LXRydW5rCis4MDc5MCAzNTIyMWMwMTU4YjVhNzJmZDE0ZjIzYzZlNTkwYTUyZTk5NGQyMjExIHB5M2sKKzgwNzkxIGNjYWRlNTc3MjY3NDY0Mzc1Nzc4OGRlNDNkYWQyOTVhNWQ1ZTAxZGQgcmVsZWFzZTI2LW1haW50Cis4MDc5MiA1MGE0ZWMzNzM2MWQwMGRlNDBiMTg4ZmQ3ZDg3YmM4OWIyNzA5NWZlIHJlbGVhc2UzMS1tYWludAorODA3OTMgYjYwOGUyZWQ5Zjc1ODkxYmJmZGY0NzUyYWQwM2M4YzRlNjNmNjkxMSBsZWdhY3ktdHJ1bmsKKzgwNzk0IDRiNjhkNmM4Y2Q1MmM0ZTA2ZjdhN2Q1OGU1Y2I1NzRjMmU2OWU3YTUgbGVnYWN5LXRydW5rCis4MDc5NSAzNTkzMmEyNGJlODUwOWNkOWI2MjdiN2VkOGU2ZTBhNTNkMTExMDlhIHB5M2sKKzgwNzk2IGQ0YWEzNTkwNzgwODc2MmRlZDA5OGY4ZTFlNDg1ZWZiZGNkZmUxNTkgbGVnYWN5LXRydW5rCis4MDc5NyA2MjdmMTE0NDBiODllNjIyNWJiNDg3OThlOTBmMmU4OTMwYzAwYjUyIHJlbGVhc2UyNi1tYWludAorODA3OTggNzQ4M2VjYjYyMWUwZjYwYmQ4ODFjN2UwMzUxODQ1OTlhNDlhZDdlYiBweTNrCis4MDc5OSA4ZWU4MGMyZjk5MjY3OWM3YmVlYmQyYjIwMTU0MWExYWI0Yjc2YWViIHJlbGVhc2UzMS1tYWludAorODA4MDAgNTc1ZTkzOGE4Y2E1MjViMjNlODBjZmQ4MzgwYmI1ZGM1NTg0NjU2ZCBsZWdhY3ktdHJ1bmsKKzgwODAxIDE4OWEyZGUzZTAzNDVmMDQ0ZTU4MDQwMjc4OGJhZjI4ZDNiOWE4ODAgcmVsZWFzZTI2LW1haW50Cis4MDgwMiAzM2FjMTA5ZGUwY2MyZDIwMDRhNGIwOWE0ZjRiNmQ2ZDQ1YjlmMzY1IGxlZ2FjeS10cnVuaworODA4MDMgODBkMDU2MzAyNjNhZGQyNThlZTNhNzVlMmZhMzgwMmM1Nzg5ZGExNyBweTNrCis4MDgwNCBmNjc4NWJjZTU0YjUzMzJkZTVlNTZmNzkxNjMyYzU2OTMwOWU3ODZiIGxlZ2FjeS10cnVuaworODA4MDUgMWY3NTA2ZjIzNzcxNmZhMDg1YTJhNGFiZWJjMGM0YWEzZjA0NTlkZCBweTNrCis4MDgwNiA5MGY0YjYyZDQ3NTlkMDQ4YTUzODc2NDI2NzJjNTUxYjc1M2MxMGVmIHB5M2sKKzgwODA3IDY4OTkxMzkzMDFjOWU4N2MzOTBjMGVlYzI3MzAzZmYwNDM4YmNmMTkgbGVnYWN5LXRydW5rCis4MDgwOCAzYjU4ZjI0NDFjYzg3ZmRkNmI2Y2E2YjVmMzI0NWU3YjI0NGRmODU3IGxlZ2FjeS10cnVuaworODA4MDkgOTQ1MzhiMDQ0Y2JlZmFiMGU5NDY3ZTJiZDcxOTNhNTZhNzdkOTNmYiBsZWdhY3ktdHJ1bmsKKzgwODEwIGY5NWMyNTliODBiM2NlNWFkNTU5ZjlmODQ2ZTE3NjJiYzY1MzgwMzEgbGVnYWN5LXRydW5rCis4MDgxMSA3YmU4MTI5ZWUwZmQyMWRkMTg5OTA1MGE0OTk1MTg5NWQ5OWVlMDQ0IGxlZ2FjeS10cnVuaworODA4MTIgNDdhMjcwMGMwMGI0OWQ4NjVkMWNkMjk0ZDk2YzkyMjMzZjkwMGNmMSBsZWdhY3ktdHJ1bmsKKzgwODEzIDVjZWEyNzI3NWFmMTI1ODJiMDc4YzMzOTZiMzIzZTZjOGE3ZGMyYzYgbGVnYWN5LXRydW5rCis4MDgxNCAyZDhmYTc0ZjkyNjNlNDAwMTI5ZGI1M2M0MTQyNGUwOTU4NWNhZTk2IGxlZ2FjeS10cnVuaworODA4MTUgZmZmNDM5ZjA4OWZlNTVhYjU0YjhjNzM5NGZlMjFiOTQwNTlmNDYzMiBsZWdhY3ktdHJ1bmsKKzgwODE2IDZmYjZmYTgwMjIyMWU3ZjU4NGEzZGJmNmI5ZDI0Y2Q4MTg1OGUxMGIgbGVnYWN5LXRydW5rCis4MDgxNyA4NDVjNmQ4MDAzMDI0NDZjYTgzYjg0ZjBiMGNiNTA3ODBlNzE2NjA1IGxlZ2FjeS10cnVuaworODA4MTggNzdiNzg2MDc2MDBlNTI0ZDJlODY3ZGQ1NGQ4YjY0NTUwZjRiYTEyYSBsZWdhY3ktdHJ1bmsKKzgwODE5IDNmZTRjMzRmNzhjMDI5Zjc4ZThlMzMzOWRjZjFjYzg5MDkyNTIzZmYgbGVnYWN5LXRydW5rCis4MDgyMCA5NWM0MDBiOWQ3NGNhMzdhNmZjNzI3YzkwOGZhMDBiMzJhODA3Y2JmIGxlZ2FjeS10cnVuaworODA4MjEgMGQxNDgyN2JjYzBkZmE5ZWUyMGQzMmQ4OGM0NTFkODljODljZWQ5MyBsZWdhY3ktdHJ1bmsKKzgwODIyIDhlM2I1ZmJjMWU0MWJmMWIzZjcwNmE0MzlhY2E2NjUzNWZiNDc5OTcgbGVnYWN5LXRydW5rCis4MDgyMyAwMzc4ZjZlMzQ2ZjAzMjU5ODcwNjc3NTA2YTdlZGFhMmJiYTQ5ZGYyIGxlZ2FjeS10cnVuaworODA4MjQgODg0NjZlZjFmMGNkZTY4MTgwOGJkMzIzNzY0YjQ0OWJiYWE5Y2VhZCBweTNrCis4MDgyNSA4YmYzNDU5NGI2NmYzMTUzYjk4MGU4NmI4NDkwOTgxMTgwMGI5ZDkxIHJlbGVhc2UzMS1tYWludAorODA4MjYgZjMzMDkwNDJhMGIzMWJlZTE2YzIzZDk5MzM1Mjk3YjliNmVkYmNlYiBsZWdhY3ktdHJ1bmsKKzgwODI3IDAzYmE2MGQxZTQ5MmEzOTg0NTU3MDEwNmUyOTJiM2Y1Y2I0ZTdlNTQgcmVsZWFzZTI2LW1haW50Cis4MDgyOCA5NDQ5MzhhYmIyNmNlMDYwOWYwNDMwZDg0MzY2ZTMzZDkzZDEyY2NlIHB5M2sKKzgwODI5IGY0Y2ViNGFlMDI0N2RiYTMyNjIyODExZjczNWJiYWU3NzMwYTEwNDIgcmVsZWFzZTMxLW1haW50Cis4MDgzMCAyNmI4MWM0ZTVmYmE0N2U0YzY2ODAzYzNhODk2NTk1NTY0OWU0MjUxIGxlZ2FjeS10cnVuaworODA4MzEgZjBmYTk0NGIxNWMwY2YxZjg3MDYwZGFmM2Y5Mjc3YjIwMmU1OGViNiByZWxlYXNlMjYtbWFpbnQKKzgwODMyIDliZWEzN2E4NTA4ODRjZGQyMjc5MWM5NGEwNDBmMmZkYzNkMmRiYTAgbGVnYWN5LXRydW5rCis4MDgzMyBjNDI0Mjk5YjM4ODRiNDBjNzZhOTBmYjdiNTc3ZjA3ZjZhMjMwY2MxIHB5M2sKKzgwODM0IDhiNWRkZTJjMzFmYjNmNjY2MDVmM2M5NTZjOTFiZjQ0MGY2YWFiYTMgcHkzaworODA4MzUgNzhlN2ZjMDFjNTFhYzU4MzVmNGQ1M2IzZjFlMTE2YzJjMjlkODI0MCByZWxlYXNlMzEtbWFpbnQKKzgwODM2IDVkY2EwYTNmYjk5M2M0MDVlZTNhNWFkYTJmYmYzOTcyZDAwZTJlNTIgcHkzaworODA4MzcgZTNlNDY2ZjUzZjllZjBhMTQyMmRlNjY3OWRkYTRlMjc3MjAzMTM3MSBsZWdhY3ktdHJ1bmsKKzgwODM4IDk5NWViOTZjYWU2ODZiZWYzNTc3OGYwZTRiOTVhYWYyOTc4NWEyNWYgcmVsZWFzZTI2LW1haW50Cis4MDgzOSBiMzAzYzM1MjU0ZGU0MTMxN2Q5Yzg3MDQ0ODFjYjM4NzdhMWE3NmMyIGxlZ2FjeS10cnVuaworODA4NDAgNjU1OGQ5NmFkZTAzYWQzMzg2Yjk1ZjI0NGIyZGViOGM1ZGQ1ZGE2MCBweTNrCis4MDg0MSAyZjMxMzAwOGE0MWQ0NWYyYTZlY2ZmNjRhYzYzMmJkNWU1YTJkZTg0IHJlbGVhc2UzMS1tYWludAorODA4NDIgNjNkNWI5ZDM4YjE3NmZhNGIxMzU3YTAxMWRkNjNjZjk2YjI0MDFmNyBweTNrCis4MDg0MyA4YWZkNmYyOGFjYTlkMjJhZTliZWU2MmE1MjkwNzNhNmI1YjJlMjk4IGxlZ2FjeS10cnVuaworODA4NDQgZjExZDRkMmI0NGI2N2Q0YTFhNzI0MDkxNmRmMzkyMzU4YTBlMDYzNSBsZWdhY3ktdHJ1bmsKKzgwODQ1IGUxMTQ2YjI1Zjc3MzIyNDg2NDMzYzg3NjdkZGUyM2FiZWYwYTFmZTAgbGVnYWN5LXRydW5rCis4MDg0NiAxY2ZiMjI5ODQ0YTc4YzU0MjIyNjI3ZjE3OWQ2ZGUzMTQzMTc1MTA4IHB5M2sKKzgwODQ3IGU1MDNiYjhiM2Y2MTViMzZmMzcyNzJhZDczZTA5ODgxYjM1MzkzNTUgcmVsZWFzZTI2LW1haW50Cis4MDg0OCBkYzJhYWM2MjRmZjhmOWI2MzZiZWVmZDM0MTBiYzBjMjczMWIzZGU1IHJlbGVhc2UzMS1tYWludAorODA4NDkgMDE2ZGJhYjM1MWYyZTEzZTZkMGM2ZjYzMmVlMjJhYzc5Mzc0OWYxMCBsZWdhY3ktdHJ1bmsKKzgwODUwIDg1Y2MzZWRjN2Q0NmU0MjY0NGJjZThiYjU3NDFkYTI2ZGEzNTYxMjYgcmVsZWFzZTI2LW1haW50Cis4MDg1MSBhYTdlNmI5Y2FiNmQ0OTJkYzZmNzBmOGExNDI1ZmU4NjE2YmIxYTg1IHB5M2sKKzgwODUyIGUyMTgwM2M0ZjFlZWY1Zjg5MjZiZWY2ZTY1ZTQ5ZWNmMTgzYjY1NzIgbGVnYWN5LXRydW5rCis4MDg1MyBkMmE0NDAwNTc4YTVjNzNlZDZlN2U2ZjNhZjIyMzJmZDYwZTk3YTM1IHJlbGVhc2UzMS1tYWludAorODA4NTQgODk0MmU5NjI4NmRjNjQxNzdlZWIyZWNkMjMzZWYxNzU1ZmJjZGEwYyBsZWdhY3ktdHJ1bmsKKzgwODU1IDhiNjQxNTk3OTJiYmIxZjcxNjhiMTZiYTBlZGM2NTBjZjRkMGEzNTQgcHkzaworODA4NTYgNWI1NWRjOTU1NGZjYmQ3N2UwN2QxYmViNjNmZmQxOTFlMTJmNmU0MCByZWxlYXNlMzEtbWFpbnQKKzgwODU3IDBlZDFlYmU1YmMyZmM5M2NmMGYwMjEzMjAyZTE0MzZiMWY2NjM2MmIgbGVnYWN5LXRydW5rCis4MDg1OCBlNGEwYmEyNTFjNGE0ZmRkMDU4NWVkNDZiYTdmODJkYThlNGQxZDA2IHJlbGVhc2UyNi1tYWludAorODA4NTkgYjkyZWY4ZWJjY2I5NzYwYjRhZTQ5NmZlNTk3ZWY4Y2EwMTA4ZjVhZiBweTNrCis4MDg2MCAzOWEyYmU0MTI3ZGQ0NDIyNWNhZTI1ODhkNzQ4MjBlZTFiNjdkYjFlIHJlbGVhc2UzMS1tYWludAorODA4NjEgM2NiY2MyNzQ1OTcyOTJkMWM0NGM3N2E0ZDAxMzI4YjgyODYyMDhkMyBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwODYyIDk5NjVlZjgyNWM3ZjdiMmQ4NTkwZGNhMzI2ZDZiNDllYjI4NTZkMGIgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDg2MyAyZDhhM2JiOGZiNjA4YTczYTI3MGJlNTViMWM4ZGEzNDZmNzdkZTcwIHNpZ25hbGZkLWlzc3VlODQwNworODA4NjQgM2RhNjczODhiOTZhMzdkMTYxZTVhNTVhNzkwN2I5NGY2NDYzZDJiNSBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwODY2IDYyNTRjMDI4YzYzZDI0MDBlZmQxYTkzMzYzYWY2NmJhYjc1MDU0ZDMgbGVnYWN5LXRydW5rCis4MDg2NyBlYTcwMDFjM2YwMDBmZjY5MTM3OTQzNGI1Y2UwMDU0ZTljYWVjYTBkIHJlbGVhc2UyNi1tYWludAorODA4NjggMjE2NmI2M2I2ZmRmODZmNmI5ZmQxOGY4MzIyMWFjNjFlMDdhMDVmOCByZWxlYXNlMzEtbWFpbnQKKzgwODY5IGI0YjMyMmIyZTk4Yjk5MDE2OTRiYmVkOWU2MmNkNjU1ZjM0ZTJjYmMgbGVnYWN5LXRydW5rCis4MDg3MCAzNDZjNGMyZTM4NmU3NDM1YzVkYWRkZTYxMjJhNTNhMmM2NTYxMGIxIGxlZ2FjeS10cnVuaworODA4NzEgY2ViZTI4NTcwMDA2OTBlZjIxYjI1ZTQyYzIwYTQ1N2EwMjMzMTg1MiBweTNrCis4MDg3MiA0Y2RjZmYwZTlhMzZlZDhkZWFhMjc2NTNkYWMwYzljMGMyZTlmMTM2IGxlZ2FjeS10cnVuaworODA4NzMgNmIyN2E5NWMyYzUyMjgxNGE2ZTkxZjNhM2IyY2FlNDBmZjI3M2MxNSBsZWdhY3ktdHJ1bmsKKzgwODc0IGU0ZTU0ODZlY2NiZTBlNjM3MmI0OGQzMTQwOThlN2FiMjdmMjhhMzQgbGVnYWN5LXRydW5rCis4MDg3NSBjYzkyNTAyZGU0Yzk1MTE0NGIyY2U3YmZmNDQ5MmQ5NjkyNDUzMjhkIGxlZ2FjeS10cnVuaworODA4NzYgM2I0OTA5NjNmOTJjODc0ODYzY2MxNzEyZmZjMTMxMTg3YmZmMTgxZCBweTNrCis4MDg3NyAyOTdlMjMzMjhjNmM2OTU4MGJhODE4Yjc4NWIwNmQwMWRjN2NmODNkIHNpZ25hbGZkLWlzc3VlODQwNworODA4NzggNTRlZmFmNmQyZjg5MmE5NWE2NzgyMTZlMjE4NGI3MGM0NGI5ZTFjOCByZWxlYXNlMjYtbWFpbnQKKzgwODc5IDBhODM5NjliNmYzNWRiMTZlYjJiNmM4OTI5ZTQ0YWFlYzY3ZGQzNDUgcmVsZWFzZTMxLW1haW50Cis4MDg4MCA5YWY5NjBmYmFjY2M1ZTRlNTFhNzZiOGUzNTRlM2EwY2NjOWNkYzUwIGxlZ2FjeS10cnVuaworODA4ODEgNTNmOWI4NDg4MmEwNTY5NTQwN2Q1YWJlZTQyNzZhOWY2N2U1ZWNhZSBweTNrCis4MDg4MiBhYjBiMjg1NWM5ZTQyOTEzYTJkNWUxNmJjNjdhYzM5ZTAwNWRhNTY4IGxlZ2FjeS10cnVuaworODA4ODMgYWRlODI5M2JhNDg3YTE5NGI0NjgxNWE0YzdkYWVmNTcwNzcyMGQ3MCBweTNrCis4MDg4NCAyZDNhZTEyYWQwOTM2OGRjNzA1OTliZDMyMGM5MzM1ZWU0MTI4MmU2IHB5M2staml0Cis4MDg4NSA3ZTViZGY1OWE0ODcxMzYwZTVjMDRkYjFhMTYwY2M3YTA5OTc5OWI4IHB5M2sKKzgwODg2IDY5M2Y3NGM0MmU1ZWY5ZGIzYTZjMjk3ZDI5ZTQ4ZjQzMGRiMzEyMWIgcmVsZWFzZTMxLW1haW50Cis4MDg4NyA5ZDc2YWY5NWMxNjZkYTkyN2NkOGIyMzlmYTBkZmRiOTA2MjI5ZjVmIHB5M2sKKzgwODg4IDhhZDFjNzRkNTkwOTczMTU1NDAxYTZhMTQ2ZDdmN2M3MjFhYmZkODkgcHkzaworODA4ODkgMmFhNjA1MTY4ZjExMmUxMDM2OTk2MWQ2Y2Q4M2RjYzcwYWIxZDI5YSBweTNrCis4MDg5MCBmMTgyZTA5MjJkYzc0NzZmMzY1ZDdkYmQxZDU0MTBiNTMxODk0NDZjIHB5M2sKKzgwODkxIGY0MjMwNzY1ZGRiYjE3OGRmNTgwNDQyNDJhZDdmMDBiMTkwMTY1ZWEgcHkzaworODA4OTIgNTQ4ZmE4ZWRiN2YwZmI3OTgzOTIyMDA1Yjg4OWJmNjJiNDRjMjQxNSBweTNrCis4MDg5MyA1YWI0YjRlZmNmNjFmMzdkNTJlMTYzYjNiZTIyODU4ZWVkYjlkNDc1IHB5M2sKKzgwODk0IGExYzlhOTEyNjBkOTFhM2FmNWQ4MDBjNjY3ZWNlMDMyMTczY2IxMTEgbGVnYWN5LXRydW5rCis4MDg5NSBhNDkyNTZiMjI2OTU3YTMwOTNmMTdlYmRlNzY5NzM2NzFiMzE1NTQ0IGFzeW5jb3JlLXRlc3RzLWlzc3VlODQ5MAorODA4OTYgYjBiN2JhMjZiZTZjMTkxNzgxMjEwYTAzMjQ5ZTFmNDgzNDQ4YzUyNCBsZWdhY3ktdHJ1bmsKKzgwODk3IDVmYjM5NzdmYjM0MWUzN2JjOTk0NzRjNTE5Y2U3MmRmNDMwNWY0MTcgcHkzaworODA4OTggODNjNWYyN2FmNTdjOTJjZTA0MzdkNjkwNGQwNjdkOThlM2ZlZGZkZCByZWxlYXNlMjYtbWFpbnQKKzgwODk5IGNhNzdlZDczOTgyNzAxOWYyMmUxM2QwNDkzNzRjOWFjMDM3MjBmOTUgcmVsZWFzZTMxLW1haW50Cis4MDkwMCAwYjA5NzFkYWY1OGMwMDcwNzI0OTA1ZDgzNTM5OWE3ZjUwMTc4ZmE0IHB5M2sKKzgwOTAxIGQ2MTUxNDg4NzI2ZjhhZTc2NDY1MDMzMGFmZjQ2ZmU2ZTRhZWJmZjEgcmVsZWFzZTMxLW1haW50Cis4MDkwMiA1MjYwMTA0ZGI5OWQ3NDM0MDZiMTU1NjVhMmNlNWJiNDhlMDYwNjNjIHB5M2sKKzgwOTAzIDA2OWU3ZWZhNjQ1YjUxMDc2NWVlNTBiNzZmNzczZGZiNzdhNDM4N2UgcmVsZWFzZTMxLW1haW50Cis4MDkwNCA1OTgxYjJkYTEzMWExMjczNDA0ZGFkMmVhN2NkZDE4NTkwMTAyNWZmIHB5M2sKKzgwOTA1IDQyN2M3NTAwYjJiNzBjOWZjOWY1MjQ2NWVjY2NlNGJhMjk0YzVhYmUgcHkzaworODA5MDYgMjQ1OWVlNmFjN2M3YWFlMDJlMDhlNjA5MTBhZWNjZTYxNGM0YTkzNSByZWxlYXNlMzEtbWFpbnQKKzgwOTA3IDE2MzIxODM0MTU2YTA0MGU4MjcwNjhhMTFkMjg2ZTIwOGE0ODdmNTggbGVnYWN5LXRydW5rCis4MDkwOCA1YzkwOTQ3OTJkMWFjY2Y0MDllYWU0ODc2ZGI5OWE3NmM4ZjNjMTcwIGxlZ2FjeS10cnVuaworODA5MDkgNDkwZDFjMjAzNmU5NjM1NjFlNjhjNTU4NDk5MTFiODkwZDFmYTQ2NiByZWxlYXNlMjYtbWFpbnQKKzgwOTEwIGZlN2U1NmY5ODZjZDQ1MGZlMjRjNTM0ZmRlMThkMTQ1MDQxMmRjZjMgcHkzaworODA5MTEgZTNhM2VkNjE0YzdlMDllMzMyNmE3YjIwNjg0OGZlZDZjMDk3MDQ0YiByZWxlYXNlMzEtbWFpbnQKKzgwOTEyIDYxYzRjYTk0YTM2NjgyOGQyZGRiNjVhYzU0NmM4MWM0MDI4OWIyOWEgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5MTMgZTA0NmFkYjEwNDc5N2Y0M2Q0NjU3ODMyZjVjN2U1Yzk2N2E0ZGI0OCBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDkxNCBlMjk5NDJlYTJmZGY4NDFmMTRlOWE3YTE3MzE3MzQzNGY5OWI5NDRiIHNpZ25hbGZkLWlzc3VlODQwNworODA5MTUgMTliZWU4ZWE0OGQ4YWI1N2I1Mjk3MzQ0MzFhYjgxMDNkZWRmNmRiNSBsZWdhY3ktdHJ1bmsKKzgwOTE2IGQwMmIzMTczYzNjNWI5MjEwYzJjMTJlODYxN2E4OGFjNDYxNzg2ZTggbGVnYWN5LXRydW5rCis4MDkxNyAzNTMyOGYwNjkyMWNlOWNmNTkwMDZhMzQ3ZmFjNTNmOWQxYTIzZjYxIHJlbGVhc2UyNi1tYWludAorODA5MTggNWEzOGU3ZTE2YmY4Y2I5MTg4NGQzZTI4YmNiZGVmMGQzMmQ2MTE1MiBsZWdhY3ktdHJ1bmsKKzgwOTE5IGZhY2M2OTE3NTlhMWMzMTk2OWI1YmI0MzM1YWZkYzAxYmRkMmIyZmYgcHkzaworODA5MjAgNzk2N2JjN2IwMThkNGFlNjE4NWNiYThhZTIxNTBjYjhhMGEyMzVhZSBsZWdhY3ktdHJ1bmsKKzgwOTIxIDlkYWJmYzE5ZDFhYzRmZjhmNGVjOWNlMTRmYTlkMGVhYTI4YjYyODcgcHkzaworODA5MjMgZjczN2Q2Y2JiMDQ1NjFmYTM5MjdkZDUyZTk3MTg4Y2MyMjgyM2E2YiBweTNrCis4MDkyNCBmNTBkNWNhNDY5MGNiNjc5OTI0MmFjZDQyNDJkZmViZjdmMzk0ZmM5IHJlbGVhc2UzMS1tYWludAorODA5MjUgNzFhYTA5OGEwODJlMjYyMzllOWZjMWQ3OTU2YTg1MTE1ZGRkMzQwZiBweTNrCis4MDkyNiBiNjAyNjc2Y2FkY2Q4NWI1YTk4Mjc0MjM2YzQwYjZjNDgzYTkwZjEyIGxlZ2FjeS10cnVuaworODA5MjcgZjE4OTgxOTA0NTA3OWY4YWMyMGYyZTg2ZDkyMWVmNWUzNzhjY2UyZiByZWxlYXNlMjYtbWFpbnQKKzgwOTI4IGJjYjBjZjkyNDY5M2JmMDViZWQyNDNhNmY1OGU2MzJjNzA5ZjI4ZGUgcHkzaworODA5MjkgMzY4MzcxZmE3ZjVjMzY3ZDQ0NThlMmExNGI2N2JlMmFmMjJhZDg5OSByZWxlYXNlMzEtbWFpbnQKKzgwOTMwIDgzOTk1MzU4MGI2ZGZjYzVlMjI5ZGQ5NzU1ZmY4NmE0MTQyYTlhMGMgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDkzMSA2NTQ2MWE3MDU0OTY3ZDg5MmE1NGViYzJhMDgwMWM5ODhlMGFlN2VlIHJlbGVhc2UzMS1tYWludAorODA5MzIgMjZlZGFiOTg5ZDJmODg1NTRmYjg2MjRlNmI5ZjZhYTZkMjU4MTNiZiBsZWdhY3ktdHJ1bmsKKzgwOTMzIGY1OGI5ZGVjZTI1ZWI4YmRlOTk0MjFiNGZlMzExOGI1YmIyZjA5ODkgcHkzaworODA5MzQgOWZlNTYyYTJmMGUzMTQ1ZDgzYTJiNTA0MmY4ZTliNDRhZjNiYmM5NSBsZWdhY3ktdHJ1bmsKKzgwOTM1IGU5MmZiOTVmMjMxNzgyZTA3MWI4NDFjZDVjNDY4NGRkYmNmYjhkYjggcmVsZWFzZTI2LW1haW50Cis4MDkzNiBiNGZhZjk5YzY0MmY3NTEwNjRkZjE2MDliYmNjNGE3OTZkNTdiZTA4IHB5M2sKKzgwOTM4IDgyNTg5MzdlMTM5YzIyNjNkNzdhOGFlOTFiZTlhNWM5OGU4YzQ5ZDcgcHkzaworODA5MzkgNDhkNzk1OTE2N2RlZjdkYmU5YTlmNTYxM2UzMGYwYTU5NDYyNGQxYyBsZWdhY3ktdHJ1bmsKKzgwOTQwIDIzYmQ2MWM3ZGJiY2Q1NTY5ODZiMzNhNDRiNDA5MmQ5OTU3NGFiMTcgcHkzaworODA5NDEgYzdkMDY3ODk1MmQzZGI4Yzc5MWY2NzJmYjY4MzU1ODdlMjUwZWQyYSBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDk0MiAwZTM5ODJhZTI4MWQ4MjM3NWQ3MmFhMjM4ZGE5N2ZhZjIzMzgxNWM2IHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTQzIGM4NjdkOTkxZTkxZjBkMjI0NTFjZGQzM2EyNmNjNjViYzM5MzU5ZmEgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5NDQgZDZkYTM4MTk3N2NlNTE2ZTRiNDE2N2Q0YzZiMmMwNzFmOGVmMTc0YSBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDk0NSBhOTAzNzIyNDlmZDM1ZGY2NjY0MzcyYWQzMGQwMDdjYzVhZGIzMjE2IHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTQ2IGNiZGQwMTNkYWY2ZDYxNGRjMjJmNDliYzQzNzc1ZjNjOTJmODA0MWUgbGVnYWN5LXRydW5rCis4MDk0NyBlMmJjY2QzNzJjZDYzYmJjNmU0Y2QzOTRjMmIyOTkyOTU5MzU1OTNiIHB5M2sKKzgwOTQ4IDg1YWMyN2ZhOTEzZmJhYWUyZTdhMDAwNjFjYTBmYjIwNjM4MTcyNDQgcHkzaworODA5NDkgMDdhNDdhNTE0NTQ4N2FiNzc4NGJhOTEzODdiYzliZjkyZDUwNDA2YiBweTNrCis4MDk1MCBhNzc0MzdiZGUzMWFmMzFjN2U0YjliNzkyYzRmZWFlYWRiMzgwZjEzIHB5M2sKKzgwOTUxIDFhYmIzZDNlM2U4ZGY1MmY2ZmRhZWU4YTQ1ZDE3NzcyYzU4MzAyZTEgbGVnYWN5LXRydW5rCis4MDk1MiBjYmExZDIxZWFiM2QyY2RlODJkYjkxNjY0OTM0ZjA1NDA5OWE0ZDBjIGxlZ2FjeS10cnVuaworODA5NTMgNzRhZTBlYjkzMmRlYWRhZjNlMmUzZTU1NDJkNjBlYTc0YWJmZTU1ZCBsZWdhY3ktdHJ1bmsKKzgwOTU0IDUzZDc2MjMwZmExODZmNTZiZDdhOGZjZjE1ZjhhZTc1NGFmYmI1NTQgcmVsZWFzZTI2LW1haW50Cis4MDk1NSA3ZTZmMWU4MGIzYzY1NjdlNzBhMGQ2N2Q4ZWNkMmFhZTdkNjliNWM1IHB5M2sKKzgwOTU2IDQ2NDRjZmYyNTI1YmUwZGU3ZTEzYjM5YjQwMjk4Nzc3NTFkMjQ0YWUgcmVsZWFzZTMxLW1haW50Cis4MDk1NyBmODUxZTdiNmUwZDVjNWQwYTkxOTZjMWY1NGI5ZjM5MWYyMmQ3MDdhIGxlZ2FjeS10cnVuaworODA5NTggYmVkZTg1MDdmMGFjZDRjOGFjZmZhYWRjNDIwY2YwYzVmM2E1YTk1OCByZWxlYXNlMjYtbWFpbnQKKzgwOTU5IGRiMTMzNmNjODUxYzJhODVkYjBjZjFiNjI0M2RhOTcxNzFlZTdjZWUgcHkzaworODA5NjAgMzI0Zjg5ODg2YTFjYjZkYTMyYmUyMTkxZDFkMTJiZGNkZWQ1ZmVkNyByZWxlYXNlMzEtbWFpbnQKKzgwOTYxIGQwNmVmMzBhNDQxZWRiNWJhZDU3ZDJhY2Y5MGQ0ZWJhZDJiZjRkNDAgbGVnYWN5LXRydW5rCis4MDk2MiBiN2EwZjAyMWZmN2Q5NzM1ODc4OGZkNDY5MmE3NWQzMjAyN2M3ZmFjIHB5M2sKKzgwOTYzIGMxNDIzYjBhOTMyOTM2NzY0NTM0OGRkOWIzODUzNjkxYzgxN2NiZjggbGVnYWN5LXRydW5rCis4MDk2NCA0ZjdlNTA4OWZjOTdhZTdhZjgzZmVlOTJlZGY4MDNhNWRkOTlhYzIzIGxlZ2FjeS10cnVuaworODA5NjUgYWZlMjU5MjM1NGQ5N2JjNTFhZTRkOTcxNzE0M2RiMTUzNGU4MTI0YyBsZWdhY3ktdHJ1bmsKKzgwOTY2IDRhOTQwZDk5ZWM4NGIxYjJhYmJhYWEwYzkyNDQyN2EzMmIwM2RmNWMgbGVnYWN5LXRydW5rCis4MDk2NyA5MzAzOTViMmRlOTAzNmIwZTcyN2Q4MjQwMTBlZjVmNWEyZjdmZTczIGxlZ2FjeS10cnVuaworODA5NjggM2ZhZTdjYjQ5MjA5NWIxMjkxZTYxMjkwMDUxODRiYmZmZTUxYTUzOCBweTNrCis4MDk2OSBjNWZkZTRhNDJjYjBhNWUxNTdhNmMxY2ZmZmI3NTA0N2Y1ZDkyODZhIGxlZ2FjeS10cnVuaworODA5NzAgZjYxNGRiZWMyZjRmNzkyZDdkMjdkNzhjYzU3MmZkZDkzMWQxMGUwYyBsZWdhY3ktdHJ1bmsKKzgwOTcxIDIyN2ZhN2RiNTBkZWQwM2E4NTQ2N2IwMTUzZGIxMWUyMzIzNWY2MTEgcHkzaworODA5NzIgMGQ5NzMyZjYwNzc2OTI5MzRkY2Q0ODkwODA1NWQxYzk5MzcwMzE2ZCByZWxlYXNlMzEtbWFpbnQKKzgwOTczIGIxMGMzYTI0ZDJmOWRiOGZkNDFkOGNjZDU0NDM0ZGNhMzM4NTQ0NTYgcHkzaworODA5NzQgNjNkNmY1ZmVkYmYzMTQ1NjViMjljNzhiNDBjOGFkMzIzYTBiMDk3ZiBsZWdhY3ktdHJ1bmsKKzgwOTc1IDE3ZDIxZTllNjMyMDEzM2ZjMmU5MjI2MDU4MzBiYTQ4ZTg4YmQxY2YgcHkzaworODA5NzYgYjk0YzEzM2RiNDUxNjYyYmFkMjkzMGUxNmU1MzQzNWUxNzRiNDI3MSBsZWdhY3ktdHJ1bmsKKzgwOTc3IDAyNzAxNTExYjc1OTZjMDAxOGVkNDVkNzE2ZTI1YjMxMDFkOWY0ZTggbGVnYWN5LXRydW5rCis4MDk3OCAzM2NiNWI5OTJkMzkyZWFmMDQzZWViYzg2ZDk2MDU2NWNmNmQ5NDI3IHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTc5IGI3ZjAyYzY3MGJkN2M0Zjg2YjI3OWUwNTEzYTIyY2Q3YTRmM2YyMjkgcHkzaworODA5ODAgNzAzZjhiMTFiMjUwYmRmMzc0NGNmN2Y5OTI2NTAzZGQyMDI5NWFhYSBsZWdhY3ktdHJ1bmsKKzgwOTgxIDlmNDY3YzYyZDk1NDA4ZTQxMmM5OGMyYjAyMmVjN2MyZDIzNzI4MjMgcHkzaworODA5ODIgMjg1MjIwZjI0Y2M4ZjNhM2VlNTI2MWQ3MzBlNDQwZmIzY2I5ODQyMCBsZWdhY3ktdHJ1bmsKKzgwOTgzIDQ3ODQ3MWNjZjdmZDE5ZWM2M2E5MDMxZjI1ZTZhY2RlNTllNmZmMTQgcHkzaworODA5ODQgYmUxYWRmM2M4YTMzMmM1YWYyYjM4NGE0NzliZmIyM2Q3NGYzZmFlYiByZWxlYXNlMzEtbWFpbnQKKzgwOTg1IGUyNjNhYzJiZTRmZDQyMDY4Mjg0ZDA4ODRmYjYzY2Q0NDhkNWNlOGMgbGVnYWN5LXRydW5rCis4MDk4NiAyZjdhYjkyMjEyMWE0MGI3MWNhZDZkYThjNmI1NGVhMjZhYjNjYzQ4IGxlZ2FjeS10cnVuaworODA5ODcgMzI5M2RhODNkZjFlMzA4NmI4MmUwN2FlMzUwNWE2MjdlYTNlMGJmMCBsZWdhY3ktdHJ1bmsKKzgwOTg4IGU0MzU4ODhiODgyNWU1N2YyNjY3MWU0ZjY0N2ZhYzU1NDBmNzQ0YTYgcmVsZWFzZTMxLW1haW50Cis4MDk4OSBjYWZiNjIyNWRlZDg2ZTZkMjFlZTM5OGJhODk2YmNmNmZmNGViMTMwIHB5M2sKKzgwOTkwIDc0MzM1NWUzZWY0YWIxMWJjMmQzNTFjMDZjODEwNWUxNzkwNjBmMDcgbGVnYWN5LXRydW5rCis4MDk5MSA4ZmY4ZjBhNTI2ZGQwN2I3NDI5Y2VmYTU2MjM0NjZmMTA1OGQwYjM1IGxlZ2FjeS10cnVuaworODA5OTIgZjJjYjNhZjU1NjJmYmQ5MDRiYjYxNTJiNjlmMTQxYzM2ODAxYTE5MiBweTNrCis4MDk5MyBkY2NkZmJlNTc3YmE1NzJkNjY0NjA3OWZjNjc3NDVlNGQ2MzMzOTU0IHB5M2sKKzgwOTk0IDI0ZWM3MjU5NDE5NjVhOTFmZTMxMjFkNDM1NzZlZWU1MDQ1MzYyMzEgcmVsZWFzZTI2LW1haW50Cis4MDk5NSAzMWI5NDEyY2FkMDFiZDAzZmM1ZjI3NzVmMWExMDIzY2VhMjEzOTY4IHJlbGVhc2UzMS1tYWludAorODA5OTYgZjIxOTRlNjg4ODFlYmY0Mzc2MTlhYzBiZjk1MDlmNDc4ZmFkN2EwZSBsZWdhY3ktdHJ1bmsKKzgwOTk3IGQ2ZGY3NDk3ODBjNTQ3OTNjNzVmNDQzNzE0OTFjNmIwYmI0NWZkMDMgbGVnYWN5LXRydW5rCis4MDk5OCA2YmI5ODkxZDQyNzViZDQyYTY5YjNkOTAzZDEzYjY4NzU0M2M5MTVkIGxlZ2FjeS10cnVuaworODA5OTkgODhjZjU3NmY5Y2VlYTI1ZjFmNzlmYmIyOWQ4MGJiZmFjZmZkMmU2ZSBweTNrCis4MTAwMCBmMGY0MTE4Yzc2ZTk5MGY2ZmFhM2EzYTZjM2RkZTE1MTY1N2JkYjU3IGxlZ2FjeS10cnVuaworODEwMDEgZjE5MWQ1ZjgwZWIwNDFiYWRlNTU0MjYxN2ZlNTc1YmQ5ZGNmNTQzYiBweTNrCis4MTAwMiBiZWQwNDQ5MjM5OGRlZDYwNjM2ZjVhMjFhODY4OTg1OWFjZmZiYjJjIGxlZ2FjeS10cnVuaworODEwMDMgNjYzYjM5ZDRhN2VmN2Q2Nzg3YjJlYmJlYTgwMGIxOWRmMmExNzEzYiBweTNrCis4MTAwNCA0ZGE3ZmJhMzM3MGZjYTBlODk5NDE4OWYxMjhjNWZiNGVlNjhjZGU5IGxlZ2FjeS10cnVuaworODEwMDUgZmNiMjFkMmNlYjczYjI5MzM5MTQ1MDc1ZmY0OGNjYzQxYTFiNmZjZSBweTNrCis4MTAwNiBhYjlhZTU2NzZhZGFlNzI1MWY1ZGExMmRiOTZlNGQ3NDRlMTkwMDY5IHB5M2sKKzgxMDA3IDQzNWE4MzU1ZGFiNmJlZmM0NzE0MWRjMjE2YzEwZGIwZjJiMWVjYTYgbGVnYWN5LXRydW5rCis4MTAwOCA2ZmE4ZTEzODFiNDk5M2IxNTM2MGYxZDhlOGQyNWY5ZTg0OTYwNGU5IGxlZ2FjeS10cnVuaworODEwMDkgMTE3YjRiODFiODY0MDJmZjI5OWQ3ODhmNjMyYmU5ZmM0YTA2NGJiMSBweTNrCis4MTAxMCAyZTliYzYxYzFjMWVjNzE4OGNmZGU2YTgxNzkyMTY4Y2UxYzA0YjIxIHB5M2sKKzgxMDExIGZiNzE5MDQ5MDQ0ZmNjOGFkNzkxM2QyZmYzNDY3MGY1ODA0M2VkOGMgcmVsZWFzZTI2LW1haW50Cis4MTAxMiAyYzllMDk1ZDUyZjAwZGQ2M2IzYTlkNzcxNzI0M2U5ZDQ4ZWY0ZDgxIGxlZ2FjeS10cnVuaworODEwMTMgNTBmYTNmNGM4MjliMzQxYjZhYWIwMDI5NDVmYTlkNGIyYzU5OTcxMyBsZWdhY3ktdHJ1bmsKKzgxMDE0IGRkMWM4ZmYyZTk5MDMwODE3NDAwOWNjNWVkY2MwY2U5MmM3NTliOGIgcHkzaworODEwMTUgMTEzOWI1ZDk5NmIwMDQxNDkyYjBjMDRmNzhmZjYwZTg0MTlkNmY4NSByZWxlYXNlMzEtbWFpbnQKKzgxMDE2IGI5NjZkNTgzNWQzYjExMGFlMzUxZWVhYTlkMWIzNTIzZjYyM2VkNTggcHkzaworODEwMTcgZDMxNWE3OWYxZWNjZWU1NDUyY2JiMTVhNDc5MmQyNjg2YjI1OGZiYyBweTNrCis4MTAxOCA2Nzc1MTFlZGYwNWM3ODNhOWVjOTNlM2MxZjBmZWRiOGEwNDEzZGE1IHJlbGVhc2UzMS1tYWludAorODEwMTkgMDM3NTMzMTZmODFmN2IxMzdmZDU4OWZiNmNhMTUwMTIzMjY5YzIxNCBweTNrCis4MTAyMCA2YTJkMGNjN2Q2MDQ5Y2E0ZTAxZmQ1ZmJmZWQwMTJhZGZlZDAzYzVmIGxlZ2FjeS10cnVuaworODEwMjEgMzAzZGIyMjYxMTVkZDZjZGYwOTFiMDJiYTI3MjI5ZTcyMDY4NDgzZiBweTNrCis4MTAyMiA3MjRlODc1YjE5NDFjNTdmMWIyMWQ3NDY5YzBmOWE1NjU4YWJkNTJhIGxlZ2FjeS10cnVuaworODEwMjMgMjI5NGJjZjQwZTUxOTU3ZDE4MGRhMWY1NGQ2M2M2Y2UyYzllOWU2NCBweTNrCis4MTAyNCAzZGMyNWQwMjRhNTFjMzRiNWZmYzQ2NDIwOTRjMGE1OWMxYzgyMWVmIHB5M2sKKzgxMDI1IGY4YzE5YzVmNWRkMjQ4M2EwMTQ1ZDY5MTJiOWFjMjhlMzNmM2Y2YmUgcmVsZWFzZTMxLW1haW50Cis4MTAyNiBkNjk4ZmIwNTZhNDU5YzlhMmU0MGNjMjY0NGE0NDE3Yzk2MWE0Zjc4IGxlZ2FjeS10cnVuaworODEwMjcgYjZlMDNjYThhMjA2ZGVmMzMxNjI5OTA4ZDg1MTk5OTI0MDlhOThkYSByZWxlYXNlMjYtbWFpbnQKKzgxMDI4IDE5YWFjODRhYzFkYWRlYmFmOGI3ZDZhMTEwYjhiODVkYWU4ZmE5YjcgcHkzaworODEwMjkgZmQyNTAzMDIyM2IwNzAyNzAwMmU3ZDY1OTU2ZTQ4MDNjYzcwNmI3YSBsZWdhY3ktdHJ1bmsKKzgxMDMwIDg0YmFmNjI1OGMzYmYzODUzOTc1MmJiM2M5MGUxZTBlZDdkYmUxNTEgbGVnYWN5LXRydW5rCis4MTAzMSBlMzgzMzVkNGRmOTFkZTY0MjdjOWEyMWI1NDFmY2U0ZjgyZDk1NjVjIHJlbGVhc2UyNi1tYWludAorODEwMzIgY2FiMTRiZTBhZGExNTlkYTlmN2Q5NGM1ZWU3YzU2ZTYxZTE1N2JjNiBweTNrCis4MTAzMyBmMTk3NDA3YmRiYTJmN2Q2NDQ5MjJlZjc5Mzg4ZDVjOGI0YWM4NThhIHJlbGVhc2UzMS1tYWludAorODEwMzUgNWVhMGY1ODU4YjcyMmExMmE3ZTlhOTE1OTI4YjE1M2ZmNDgxYWI2NyBsZWdhY3ktdHJ1bmsKKzgxMDM2IGJjMGNlYTU4NDQ3ODQ3ZjIzZDFiNDI2MDRmZGJjNTAzNDIwNjc3ZmMgbGVnYWN5LXRydW5rCis4MTAzNyA1Y2FkMTBiMjc3YTQ3ODMxMzdlODI4NmJiMzE0M2JhOTkwZTVkZDM2IGxlZ2FjeS10cnVuaworODEwMzggNjljZTZjOTM3ZDZlYzllZTRmODdhODY4ZDY4NTBhZjE1ZDg3Njg3OSBsZWdhY3ktdHJ1bmsKKzgxMDM5IDQzZDAxNjlkZjk0M2ZhMDMzNWU3Y2ZmZjEyMGY3NWVmYWQ1MzAwZDkgbGVnYWN5LXRydW5rCis4MTA0MCAzMTNmODU1ODZlZjhlYjgzNTRhMDFkMTU0NDk5ZTA0MzcyNzExZmQyIGxlZ2FjeS10cnVuaworODEwNDEgNjdkYzBhOThiOGY2ZmM5MjVkZDczZTc3YzAwMTlkMWRhNzU3NWNjYiBweTNrCis4MTA0MiBmYzQ2ZTQzNzIyN2Q2MjkxZDExZjg5ZmQ1MDEyOTQxZDM4YTUzMTUwIGxlZ2FjeS10cnVuaworODEwNDMgNWViMGU1NDUxNjEyNDdjZmU2ZmVkMjA3YmNjZTFlM2Q3ZTQzZjI4MiBsZWdhY3ktdHJ1bmsKKzgxMDQ0IGZiMTllYzU3ODg1MzMzOWM2MDAwYTRlZjhhNjJlZjhjYWNjZGNhYzIgcHkzaworODEwNDUgNDg4ZGJlMjYyZjY4MWQ0YTE4ZTkxODIxNmJlZDM3NjUxMTVmMjg4MyBsZWdhY3ktdHJ1bmsKKzgxMDQ2IDdmNWE1NzFiMWVjYjhhMjg4MDcyZDhlZGU3YjkwYWU0MWE1NDA2YmUgcmVsZWFzZTI2LW1haW50Cis4MTA0NyAyMGFlODM4MjFlZjA1MzcyOTJkZjFmMGFiOWRjYTAxNDRmOTBkYTVmIHB5M2sKKzgxMDQ4IDhjNDk5Y2IzNzIzYTRiMDllNTNjMmYzYmRhMjM4YWQ1ZmQ3ZTY2ZGUgcmVsZWFzZTMxLW1haW50Cis4MTA0OSA3MzZkNmNlOWI2MGJhYTkzNGRkNGJhZDhjZDRmNGQ1MzdlZTIwNTRhIGxlZ2FjeS10cnVuaworODEwNTMgOTQ1NzM4ZTE4NzI2MzkxNGZlYjQzOWYyMmFkMDA1YmI0ZmY5N2Y1YSBsZWdhY3ktdHJ1bmsKKzgxMDU1IDZhOGRmZmY2ZDI0MWI1MDAxMmI5MDc1MzgwNjU5ZGI1MzNhZmQ5NGYgbGVnYWN5LXRydW5rCis4MTA1NiBlNjQ3OThiMzZlYTRkZWYwNmE2NzJhZjc3MTRhYjk0NWE4YTJkNGExIHB5M2sKKzgxMDU3IGRhNmNmOGYzZDhjMmVjODZkMjU5ODI4ZjNiMjc2Njk1MmNhODdhYmUgcHkzaworODEwNTggZjAyNWI2YjBmZTBmNmY5YmRhZGIzZmZkYmFlNGE3NWYwNzFjYTcwZCByZWxlYXNlMzEtbWFpbnQKKzgxMDU5IDMxNDhkNzA1MjhiNjA2NzE2NWM3MDY3NGVhZTk3M2MzN2M5YWYzODUgbGVnYWN5LXRydW5rCis4MTA2MCBlNzYyOWVmYzU1ZDAwN2U1MjQ3ZjY5ZDA0NzNhOGVhZTlhNDI2NDY1IHJlbGVhc2UyNi1tYWludAorODEwNjEgMGY4NTA3ZjU0OTQyOWUwYzJhNDcyYzk3N2UyNTc5MzY0MzIwMjkwNCBweTNrCis4MTA2MiBiYmU5Zjk4YTBjMDIwY2VkZTY2N2ZlYTNkOTE4NmZlOGY3Y2VkODdlIHB5M2staml0Cis4MTA2MyA4MjlhODZlMTFiZDdlMTRlOTBkYmQ2NGI0YjdjMzE4NDgzM2ZmZTNhIHB5M2sKKzgxMDY0IGYxMzU4YWEzM2E2ZTIzNGZkMTc1ZDRjNjc3OTBhN2U5ZjA2YWQ4N2QgcHkzaworODEwNjUgY2JmZDI3ZGI4ZGMyNzgwN2Y2OTk3YmNjZDg1YmEyODdmMzQ1YWJlZiBsZWdhY3ktdHJ1bmsKKzgxMDY2IGZjOWUyMTU5NjlkODM2YTJhZjMwZTE5NjFlOGE2MzcwMGI4YWNjZTIgbGVnYWN5LXRydW5rCis4MTA2NyA1YWIwNDQzODU2Y2FiOGEyZTUzNDQ3MDQ2NjVkYmZmODFkYjQ2NzdiIGxlZ2FjeS10cnVuaworODEwNjggZDYwNGZhYjc0OWRkNzQwM2JkOGQ0MjNhZjMyM2NlNjM4MGU3NGIyYiBweTNrLWppdAorODEwNjkgYzc1NTEyYTg1ZmQxYWVjM2JhMzNlZTdlNjE2M2NhYjQ3YTIyNmFmMyBweTNrLWppdAorODEwNzAgYjY2ZWJiNzc3NTY4YjBlOWUyMGFhNTc5YmMxZDcyZWY2ZjBhMzQyNSBsZWdhY3ktdHJ1bmsKKzgxMDcxIGJhMGZlMDI0ZTg5ZmQ0Y2E1NTU2ZTMxNWQ5ZDk1NWRlNDg0YWE2NzggcHkzaworODEwNzIgNDU0MDhjYjRiNzIzMmI5ZjI0ZDljY2NiMjM0MTA0MWQ0MzliMTM1OCBsZWdhY3ktdHJ1bmsKKzgxMDczIDY0OWQ2NzEwYTgxZmY3NTY4NTMwNjRkYzM5YWNmYWQ4YWIzMzczOWIgbGVnYWN5LXRydW5rCis4MTA3NCBmODBlOTM1ODJiN2ZlNmRlODMzZWUzYzRmYmNkNGRlZjE4NzU2YTZlIHB5M2sKKzgxMDc1IDAwMjIwZWJlZWQwYThmMjRiNGNkN2QwMzU2MzVhYmFkNGYwYWJmNjYgcHkzaworODEwNzYgOGFjMGYwZGI1ZjU5NzVmZWNhN2VlNDdiY2UxMThhYThkMzMxOWU5ZiBweTNrCis4MTA3NyBmMTVkNmYxYTJmYTMwZWQ4M2Q3YzIzNWU2ZDc2M2MzNzRhZjQ0Y2ZjIGxlZ2FjeS10cnVuaworODEwNzggMWY2OWYyODE5ZDMxMzU3ZDRlZGViYjI2N2VlM2VmYjQ0OWVmMzk0MiBweTNrCis4MTA3OSBjMGRkMzNhNWFkYmU2YzVhMmEwODI2NDMyMWQzOWI4MDgyY2JmMGE5IGxlZ2FjeS10cnVuaworODEwODAgMGFjMTFkYjVmYzk2ZTQ3MDUzOWQyZWNjNWUyY2ZlZDU5Y2VjMjg0OCByZWxlYXNlMjYtbWFpbnQKKzgxMDgxIDAxMTk0MGJhZWZiMGJlOTEzNTgyMDEyMDZjZjQ2MjY0ODJmOTIxMTUgcHkzaworODEwODIgZmI2MmUzYTlkODg2ZmZiYWExYzQ3M2ZiODgxNTAyOWEwODg1MzM3MCByZWxlYXNlMzEtbWFpbnQKKzgxMDgzIDljMzIxYWFlZWYxMjYwODZhMzgyN2MyM2UzNDZmNWVjMzBmZjI2NTYgcHkzaworODEwODQgODFhM2EzMjI2Y2Y1ZGQ0NWI0ZDcyYjE5YThkZjMxYWVhMjYzZDE0MyBweTNrCis4MTA4NSA5ZGZlZDhkZDFjNmQ5ODk1NDNhNDI0YzQwOGJiOTk2YmE3ZWM4YzgxIHB5M2sKKzgxMDg2IDM1M2Y0MGVlZDFiYzZkNGVjZDdmZjBlMjU3ODVhZTZmZGYxNDliZTAgcHkzay1qaXQKKzgxMDg3IDRmZDdmZWE1OWU1YjJiY2YzNzBhNjUyOTljMTRiNmJiNDJjZDk3ZDYgbGVnYWN5LXRydW5rCis4MTA4OCAzZTZjYTRiMDNjNzlhNGQ0ZjU2ZWFmNjkwYWRiZmEyOGExOTQ5MzIwIGxlZ2FjeS10cnVuaworODEwODkgODExZmM2MzE5MGE3Y2QxYTcyZDdmZjVlN2I4MTZhZGJkNGRmODIwZiByZWxlYXNlMjYtbWFpbnQKKzgxMDkwIGRmZjZmYzM4ODhjNjJlOThlOWM0Y2UwMWU1NzU5OTA3ZTA0N2U2ZmIgcHkzaworODEwOTEgODY4MDFkMWQ5MDM4NmJhYjA2YWVlYTk3MmJkZmM4YTJkMTM3ZjVhNyByZWxlYXNlMzEtbWFpbnQKKzgxMDkyIDMwZjRiYmJhZGUwYjcxMTdiNTM3OTFjODUwNWNiYjFkZDVmMjMwZTIgcHkzay1qaXQKKzgxMDkzIDQ5NTliNmY1YmM4NmNkYzUwN2Q4ZGE2NDEwOTg2M2FmOWJlYzJjODYgcHkzay1qaXQKKzgxMDk0IDVlMzkzNGEzMWM4ZGMwMjg4NWJiZDhhMjk4ZjRiMWJkYzE4ZjRjZDggbGVnYWN5LXRydW5rCis4MTA5NSBhZjJmODRlNjYyNTM3YzM5ZjUwYjhiYWI4NGNmZDA3YmQ3OGE5ZjVmIHJlbGVhc2UyNi1tYWludAorODEwOTYgNTRkYzEwOTg4ZjE1NGMwZGVmZTZhYWY2NjMzMWU2OWI3OGNhNzhlMSBweTNrCis4MTA5NyBlZjRkZTA1M2Q1NzdmODVmZThhZmY5OGM3M2Y4YzQ2NmUzOGVkMDBhIHJlbGVhc2UzMS1tYWludAorODEwOTggM2E4Y2E2N2FlNDMxMWIwNDlkMWY5OThjNTY5MDA4MTQxYmVlOGNlNSBsZWdhY3ktdHJ1bmsKKzgxMDk5IDJhNzBjODAzNDliMGVkMGEwMmViMDBiNzc1NjEyOWIxMDFjMmJmNDMgcmVsZWFzZTI2LW1haW50Cis4MTEwMCA0OGQ5NjY0YzQ3YTNmNTg3MzEzMTY4ZjE1NzhiNGYyOWI5OTE5ZjkyIHB5M2sKKzgxMTAxIDRiMTBlZjhhMDI0Y2VmYTMzMDc3ZTFjMzQ4NGMyZTU5YTNmMDVjZDIgcmVsZWFzZTMxLW1haW50Cis4MTEwMiAyMWE4MWM3YWE0YmM1MGY3OGEzMDA3ODEzMWViYThhOGVlZTEzODIwIGxlZ2FjeS10cnVuaworODExMDMgYjlkNGFkZjhiMTdlOWZmMGFiYmQ1NzFkNzkzMjUyNWZmZDE1YjhlNCBweTNrCis4MTEwNCA0Yjg5NjNjZjgwYjI4NmQ2OGU1MThlYTY0NjBiN2ZjNDJlYjM2NTU1IGxlZ2FjeS10cnVuaworODExMDUgYjc2MDRlYTJmNDdlN2Y1ZTA3YWU5ZjE3MDYwYWExMGY3Y2JmNDdhNCBsZWdhY3ktdHJ1bmsKKzgxMTA2IDczZjNiODg1MTc1ZGIzN2UwMWEwOTYxNTc0NzJkYWEyZGQ2MDZmZjYgbGVnYWN5LXRydW5rCis4MTEwNyA3NzM3MTRlNWVhYWVjOTYzMDFkMWNkOWJlYjI2YTFmMzlkMGNhMjBiIHB5M2sKKzgxMTA4IDJkZGNkMzA1MzNmNzJmZDYwNzY3ODRmNjlhYTA4YTE4ODU5ZmRlYTAgbGVnYWN5LXRydW5rCis4MTEwOSA2ZjQ3OTYwYjU2NDc4OWRjZjhlODE4M2E1MjU2MjZlODY1YWJhOGNjIHB5M2sKKzgxMTEwIGVmYWY2MmMyY2Y3NTk5YjQ4Y2YzZGFlZjI4Nzc0YjM2NDIzNmM4N2QgcHkzay1qaXQKKzgxMTEyIDVkZWJlY2I0ODI4MmRhYTA0ODhjYjcxMDBlYWIyNTc4M2ZkYWM4M2MgcHkzay1jZGVjaW1hbAorODExMTQgYjY0NjQwMTRjYWEwNzY3NmJjZjljYzNiYzA4M2UxMmQ4NWJiNzdiNyBsZWdhY3ktdHJ1bmsKKzgxMTE1IGUxODM2YTdiNmI2ZTc2OWM5NjgzMjExMzU2YjlhZjU3NGNmMjM2ZjggbGVnYWN5LXRydW5rCis4MTExNiAxYjNlYmVkOGI2YzY1MmE1ZTZiYWQ4NGVjZDg4OWUzYzI1YWQyMzkyIHB5M2sKKzgxMTE3IDAxM2Q3NmFhODk1MWMyYzQ4NjJlN2QxYTRjNGUyZjE5ZjUyNzcxODIgcmVsZWFzZTI2LW1haW50Cis4MTExOCAzMzAyNzNlYzYwMjgzOWFiZWI3ODI0MzEwZjRiMjVkMDY0MWE2NDM2IHJlbGVhc2UzMS1tYWludAorODExMjIgYzFiYTg4MTZiMTg3ZTkzNTY1ZjcyOGNjNDU4NmIzOWNhODJmOWNhYiBweTNrLWppdAorODExMjUgOWVjN2FjZjBhMDA1ODcwZmU4ODk2ZTAzZDkyYjg4OTVkNzZjMGM4ZSBsZWdhY3ktdHJ1bmsKKzgxMTI2IGI1NTRlZWEyNjEwY2M4ZDcwMmU2MzMyMzc0NDEwNmY0ZDUzMzE3N2EgbGVnYWN5LXRydW5rCis4MTEyNyA5MWY0NjJiOTA0YjFmZDI4NjhkZTEyNmQzNzg4ZWE2NWI5MzQ1NThhIHB5M2sKKzgxMTI4IDM0YTY4NmZiZmZlYjllNWE2NWIzM2E5MTAyZTUzODRmNzkxY2IyMWIgcmVsZWFzZTI2LW1haW50Cis4MTEyOSAxMDM1YThmZDdkZmI5NTcxMWM3NTQ1OGYzMDBkMDIwNjNmZDQzZGMzIHJlbGVhc2UzMS1tYWludAorODExMzAgMDZjNmQzYTY3YzE3YjFmODc5YmZjMTZhNGU4ZmFkZTU4NDRlNjY0MCBsZWdhY3ktdHJ1bmsKKzgxMTMxIDJjMjljZDU2NjhjNzcyODUyZTYzZmJhZDE2ZDI1MWFmN2JiNDdjZGUgcmVsZWFzZTI2LW1haW50Cis4MTEzMiBlNTU2MzJhYTY4ZTk3NDJlZDRlZWQ5ZmRkZDI1ZDkxZjA4NWVmM2I2IHB5M2sKKzgxMTMzIDkwYTlhMzRlNWViNTIzYzNlYWUyZmM2MGUxNGQ2MDc4M2YzOWZmMzIgcmVsZWFzZTMxLW1haW50Cis4MTEzNCA4NDEwZjgzZmQxNTlmNmVlNTA4NzBiZTlmMjQyNDFkODdkOTI5NWMzIHB5M2sKKzgxMTM1IDY4YmMzNTc3NWQzMTM0MDE3NTgxMjMxMTYwZWMwZDFiYmUzOGZjMDYgbGVnYWN5LXRydW5rCis4MTEzNiBjODA2ZWRmOGQ3MzQwZWZmMWIyZmI2NzU0MzhmZGJkMWYxYmFmMzQ0IHB5M2sKKzgxMTM3IGViYTQ5NDc4YWFkOTY1MTc2YWEwZmEzMTU0NjYzODFlOGI1MWU1OTAgbGVnYWN5LXRydW5rCis4MTEzOCA0MzFhMTUxZTEwMmQ1MjZjZTgyY2VkNTM0ZmJjYjJlODU1MGE4MWY5IHB5M2sKKzgxMTM5IDUzNjFmNmRkMTM5OTYzOWM3ZmZhMTBiMzhiNTYzNWJmZGRiNmZiZmYgcmVsZWFzZTI2LW1haW50Cis4MTE0MCBlZTU5NmRhODYyZjgyN2U2ZTk5Yzg1ZjNiOWFjNGRmNDIyMmMwYWI4IGxlZ2FjeS10cnVuaworODExNDEgNmNiZDRiY2EwOTdhMGFmZDM5YzhiNWQwZjc4NGRmNWQ0Njk0M2M4OCBsZWdhY3ktdHJ1bmsKKzgxMTQyIDE2OThjNTViMmFmOTRiY2U1NDA4NTRiMDg3NTNlNWNiM2MzMWQ1Y2QgcHkzaworODExNDQgOTM3OTA4NDcxNzRhNzQ3YWQ0YzNmZTNlN2ZlZDM1N2Y4NjAxZTIxOSBweTNrLWppdAorODExNDUgMDYzNjRkYWQ4ZGRkMTVhNGYwNDFlN2E2ZTdlY2UxZDBkMmY1MDVkYiBsZWdhY3ktdHJ1bmsKKzgxMTQ2IGU0ZjI2OTYxNWEyNWNjZTMxMjAyNjMwNTNmMTA2NmE4MWUyMGYxNmYgcHkzaworODExNDcgYjM4NmViODM0NzVmNDlmNjdhZjNkYzdjZWNkOGRmNDJmODkxMzNiNiByZWxlYXNlMjYtbWFpbnQKKzgxMTQ4IGRhM2ZhODgxYTgwMDM5MDUyMGJmZmU2OTlkYjE0NGEzZDZhYzhlNjEgcHkzay1qaXQKKzgxMTQ5IGUwOTZhYWU1MzViOWI1YmE5M2E3Y2I3MzFjMjgzY2JmMWJmYjRiNWYgbGVnYWN5LXRydW5rCis4MTE1MCAyZmE3M2IyOWIzMDU5NzUwN2I2ZmQwNjhkZjMyZmFjMjhhMzM4YjU0IGxlZ2FjeS10cnVuaworODExNTEgY2I5ZTA5ZjNmYThlZWMzYzlhNDViYTQ2ZWZiZDNkOGQ3MjA0MmRkMCBsZWdhY3ktdHJ1bmsKKzgxMTUyIDMxY2YxYjEyNTMwYTlkMGFlZTNjMjVkYzgzMjk5ZGM5ODBmNzQyZWIgbGVnYWN5LXRydW5rCis4MTE1MyBhZTRiYjY3MDEwNzhlMGUzYmM0NTc4NGI5MDRhNGUwNmU1NjQ0YjYzIHB5M2sKKzgxMTU0IGNhNDk2YmZhY2QxYmU1YjdlMDU0M2EwYWY4YTRlZjE5ZjA3NmU3MWQgbGVnYWN5LXRydW5rCis4MTE1NSBjY2YxY2E3M2MwZTk3ODllNWU2ODQ4MzljNjRmNGQxNThiM2QwYTUzIHB5M2sKKzgxMTU2IDllNWI3M2VhNmE3Y2UxZmExYzc2NDU3NGJkODQyMWVmM2UxZmIxNWIgcHkzaworODExNTcgOWY2MmY1ODY1YjQ0MWViODA5OTBhNzIxMjk4M2E5MzJhNDNjMWY5MSByZWxlYXNlMzEtbWFpbnQKKzgxMTU4IDI2MjI3OTZhZWNhOTRlYTJmYjY0ZWYzZTExODQ1NWUwNTc3Yzg4ZjEgcmVsZWFzZTI2LW1haW50Cis4MTE1OSA1OGE1NmFiYTBlYjJjMmUyNGI1M2VhOWE1MWQ2ZmY1ZTRhMzgzMmFmIHJlbGVhc2UzMS1tYWludAorODExNjAgYTZhNjdiNzM0ZDhiMzYwM2JjNjI1NTkzNzFlOGM0ZTE3ZmY1ZTJjYSByZWxlYXNlMzEtbWFpbnQKKzgxMTYzIDc0MmYxOWI0NzAyMDRiODViZmRiMzRmOGY4YzAxYmUwM2U3OTY0MTIgbGVnYWN5LXRydW5rCis4MTE2NCAwY2IwZmFkNTE0ZjM3NTIxYzY2YTNhNzlhNWM3ZjAwODU3OGZiNTdkIHJlbGVhc2UyNi1tYWludAorODExNjUgM2IyNDdhZjZjZWU3OTJkY2NjNDQ2ZWM2YzU0YjViMjBlMTBkOTlkMiBweTNrCis4MTE2NiAyNTJmZTVjNGNkNTNmODZkZDY5YWI0YjIxMTlhNTE3ZGZlYjk5YTljIGxlZ2FjeS10cnVuaworODExNjcgZWFmODFhMTMwYWQ2YzQ0OTljZTJkMDhjZDQxZjMxZWVhMGRlNTY1NiByZWxlYXNlMjYtbWFpbnQKKzgxMTY4IDllZTIyOGQwODllZGQyOGY4NmFjZWZjOGMwOWM1NTBmZWYxMWNjMzAgcHkzaworODExNjkgMmIwYWY2OWFlZjk3ZDIyOGVjZjcyYzJhOGQzMTc3YjE0ZjBhNThkOCByZWxlYXNlMzEtbWFpbnQKKzgxMTcwIGFiMzFiMDA5YTFlZTI5MzRiMGI2ZThmMTVjYjdiNmQ4ODE0YTU3NTcgcHkzaworODExNzEgOWMxYTJiZDUxNTI4YzNhN2Q1NTJjMDA1MjNlMzVkYjJjODgwYjgwMyByZWxlYXNlMzEtbWFpbnQKKzgxMTczIDMwOWQ5Y2Y4NDgwODUwZTRmOGVhYjM5ZWY5OWEyOTM4N2ZjZjU4YmMgcmVsZWFzZTMxLW1haW50Cis4MTE3NCA1OWZmN2Q4MTJhZTM0MmY2NTE0ZTAzZDE3ZDQ1MWFjYWM0ODM5ZDMwIHB5M2staml0Cis4MTE3NSAyMzY5ZDRmMTg5ZTQyYzY3NzQ0MTU1MDM5YmYwOTc0MzkwNWIzNGYyIHJlbGVhc2UzMS1tYWludAorODExNzYgMTE0YzRhNDJmYzFkMDMwNzNhM2RmZWExZTMzNDlhYTljODIwOTI3YyBweTNrLWppdAorODExNzcgYTgxNGU3ZTcyOTAwZmFmNDhmZDg4ZjEwNzFhMmRhNTViNGI2ZWRlNSBweTNrLWppdAorODExNzggZmRlOWI0MzU0NWZiYWY4M2MxMTZhOTYxZTU0MjlhNmE2MDAwOTcyZCBweTNrLWppdAorODExNzkgZTZiZmU5M2I2NWJiZGEyNDNmNTMzMmQwZmQ5YzJjYmY3NDM0NDY1OCBsZWdhY3ktdHJ1bmsKKzgxMTgwIDBkMDI4ZDM1OTBkYTAzZDg5NTdmOGE1M2NiYmViODgzZWVlOGZiZTkgcmVsZWFzZTI2LW1haW50Cis4MTE4MSBmYTkwMmY4ZTBkYjBlZGY4MGE2NmJmMzdhZjQ2YTFiNzhiNTM4MzRiIHB5M2sKKzgxMTgyIDBlMzdhOTVjZGNmYjVjNzNmNzc2ZGYwOGQ3NWZlNTIzYjNiOTFmZmMgcmVsZWFzZTMxLW1haW50Cis4MTE4MyA3NzIwMzZhNmY3ZWYwMjg3OWMzYzVlZjI3ZmNlNmQ0NzBkYzViNDE1IHB5M2sKKzgxMTg0IDM2M2VmZmI1ZjcyN2Y4ODY0ZDQwZDE3ZTk0NDQxMjFjMGFhZmEzNGMgcmVsZWFzZTMxLW1haW50Cis4MTE4NSBlZGVmODhmNmYxYWI2MTEyNzU3MTY4NmVjZmQzOTBjMDA3MzQ3MzU1IGxlZ2FjeS10cnVuaworODExODYgMDVhMmFiMjcxYjY1ZjQ4MzZkOTYzMjRjMjJhZGYwNjczZDNkYzg3ZSByZWxlYXNlMjYtbWFpbnQKKzgxMTg3IDk4YzE2MTA0MDAwMmM1MjkzOGJhYWE4YWY2MGY3OGFiZTgyZThkOTkgcmVsZWFzZTI2LW1haW50Cis4MTE4OCBkOTcyZDA1MmVlMjIxN2FiMzhkZjA4NTE1NTJlMGVhMzZiMjUzZGI4IHB5M2sKKzgxMTg5IGM0ZTExYjBjN2VlNTE4M2JkZGMyMmMyYWNhNGZhN2Y3NzZjY2MzMjIgcmVsZWFzZTMxLW1haW50Cis4MTE5MCA0N2I0ZGE4NmI5YjlmNWQwZjI4OGQwYzQyODMwMmUwYWNmNTE0MTkwIHB5M2sKKzgxMTkxIGVhNTY4NWQ5OTQwYTNiOTk1OGIzZTA0NzUyYTA4MTU1ODE0ZmEzMjMgcmVsZWFzZTMxLW1haW50Cis4MTE5MiBiYjlhZTEyNjMzYTk5YTg0YWIwZGNjZWIxNWU2NWE1OTcwMTEzNjM4IHB5M2sKKzgxMTkzIGYzZWE3Y2Q3MzVlY2U3NDE2MjJhODkxMjczYTNjMGE5ODgyYmU4M2UgcmVsZWFzZTMxLW1haW50Cis4MTE5NCBiNWJhN2VhNDI0NmIyY2U2ZjEyZjgzN2I5ZDE1OTE3MTk1OTUzZTI3IHB5M2sKKzgxMTk1IGU5MDk2MDFlMDIxOTlkMjQwNTg3NmI5ZTE1ZmM1ZjgwZTdhMjcyOTcgcmVsZWFzZTMxLW1haW50Cis4MTE5NiAxZTE0OWI1MGFjYTYxOGIzN2NjOTliNzg3ZGRlMzNhNDA1NTY0MjRhIHB5M2sKKzgxMTk3IDkzMTE5MThjMDY0OWRjOTg2OTMwMzMzODUxN2ZiMzdiYzllNjcyNWYgcHkzaworODExOTggMDQyZTZhMzk2YTg2NDQ3MmUyZWMwMmFhNWE5OGE0Yzk0ZGM3MDg4NiBweTNrCis4MTE5OSBkY2Y0NzExNzE1OGYwMTI4MTk5ODgyZjUzNGY1OWMxODZkNWI3ZDc4IHB5M2sKKzgxMjAwIGQyZTY3NTRjYmJkNWU3NDQ3Njc3ZGJhZWRhNDgwZmY1NTA2ZTNmZTkgbGVnYWN5LXRydW5rCis4MTIwMSBlNGRlZGY1NGM0MWUyNDEyODk5YmE3YjAxNzBjZGZiZjNjMzk1ZDk1IHB5M2sKKzgxMjAyIDlhZGUzZTYyMzcxMGYwNDhkZTllYmNlZmQ3NWQwNjlmZTU4ZDlhNmMgcmVsZWFzZTMxLW1haW50Cis4MTIwMyBlZjBmNjM0YWQ1ZmFmZDdiNTY4OWY5ZmRhM2QzNzA0OTRiZjkwODMzIHJlbGVhc2UyNi1tYWludAorODEyMDQgOTkzODNmMWJjMTdjOGY1MTU1YTYwOGFmMTQ4NzFlZmE3NzBmNjEwZiBweTNrCis4MTIwNSBhMGE1MzU5ZjhkMTM2OWYyZjVhZDNkM2EzZTY4ODU4YjhkN2YwMGUwIGxlZ2FjeS10cnVuaworODEyMDYgMTg2ODkwZDdmZTcyNDM2MWFhOGEzNWI4MDJjYWIwMWVlOTdhY2ZlOSByZWxlYXNlMjYtbWFpbnQKKzgxMjA3IGNjOWI4MjgwZTNmNWZkMGFmZDhiMzg5Zjc5MTkyYTc1MjM4MjEwYzMgcHkzaworODEyMDggNzk3MGM0OTkwMTQ0MjdjNDYyY2Q1NDJkNDM4NDhhODZmM2YwMDQ3YyByZWxlYXNlMzEtbWFpbnQKKzgxMjA5IDU0NjhmM2FlZTRhZTFiMTEyMGMxY2RmNGEzMjA5OWJiMTk4YjVjZDYgcHkzaworODEyMTAgZjU5ZjNjNzM3MzRkYjM2NTYwMDJjZDc4ZWU5NzQwNzJmN2MyZTU1ZCBsZWdhY3ktdHJ1bmsKKzgxMjExIDc3OWRiYzUwZjFmODhkZWY3MjkzM2UzYmMwOTUxZWZiMjI2NzY2NGYgcHkzaworODEyMTIgOTJkMWM4ODE5MDcxZmMyYjFhODI5MDBlNDg2OTY4YjJiY2IxNzc3ZiBweTNrLWNkZWNpbWFsCis4MTIxMyA0NjUyZmUwYzNiODk3NGFmZDA4NjkwMTVlOWNkYTMyMDBhY2JmMmM1IGxlZ2FjeS10cnVuaworODEyMTQgZWMxOTkxOWUyN2NmZTY5MDRkN2M2OTQ4MGNiZWRhM2FkNzIyMTlmMSBweTNrCis4MTIxNSA3ZjA1M2UyNWIzMzUyZDRhNmM4ZDVmM2VlMzM5ZmNjNWRiNGNhM2UxIHB5M2sKKzgxMjE2IDM3OGIxY2Q4NDcyZWVmYjFkZDBhMDY2OGExYWU5Mjk3NjMxZGQxNDEgcmVsZWFzZTI2LW1haW50Cis4MTIxNyA5ZTQzODVkYjM3MGVkODdiYmFiMjgwZGI2ZDc4NDE4OTM4NmJmZjIyIHJlbGVhc2UzMS1tYWludAorODEyMTggNjk5MGM2ZGI3YzM5OTRjODg0NGQ0NmU2NjI0MDQwZjgwNzhlZWM2OCBweTNrCis4MTIxOSA0Yzk1OGU0ODkzYmE2OWY4MTlhNmJlZTcyZjEzMTZjMDBhYTdmZTQxIHB5M2sKKzgxMjIwIDFkNGRiZmE4ZWQ0ZjJhZjViZGRlMGU0YTY0NDI0N2MyYTUzN2RjNmEgbGVnYWN5LXRydW5rCis4MTIyMSBjZjI2ZjAxMTQ5NmVkMmJlM2Q4YmYyYjMwNDcyYTQ0YjBmZWIxNDRmIHJlbGVhc2UyNi1tYWludAorODEyMjIgODAwMjE0OGMxYTFiN2RhMGY5MGM5YzdiNTdlYTRhMTMyOGZmMDUzZCBweTNrCis4MTIyMyBjYTlkMmYwYThiOGFjYWExMWI1YzlkNDY5NzIwNjZjMmI0ZmMyMjQ2IHJlbGVhc2UzMS1tYWludAorODEyMjQgZjM2ZTBlMmRhZjQzMmU2ZmMzOTRhMjJlYWIzZDgwZDhlMzliYjQyMCBsZWdhY3ktdHJ1bmsKKzgxMjI1IGYzNTBhY2JjZTc5MGYxZTRjMmM3YmFkMWJiZjFhZmU0NThhYWVlNzggcmVsZWFzZTI2LW1haW50Cis4MTIyNiBmNWM2NDU1YzE0M2M2NzU0NzNhOWE3ZTc1NzAyYjQ4NDJjMTVmZmM0IHB5M2sKKzgxMjI3IDY4ODZlZTljYjcyYzkwOGRhZDliYzdiMzYyYzBkNmQxMjQ1YjIzYjYgcmVsZWFzZTMxLW1haW50Cis4MTIyOCBkMDhkYTQ1NDRlMzEyMTQ4ZGMxYzMxYmE4M2IwNjViNzg0MDg0MzU1IHJlbGVhc2UzMS1tYWludAorODEyMjkgZWYyMmRjMDY1ZTBlMTFiNDNiOWFmZWYxOTk4YjRjMzMzYjEzMGQxNSBsZWdhY3ktdHJ1bmsKKzgxMjMwIGU1NzY1MGE0Y2E4MWE2NDcwZTNkZmFlMDQxZmRjYzNkMjdiYzY4OTIgcmVsZWFzZTI2LW1haW50Cis4MTIzMSA5Njc4MjZkZDVmYzZjMTMxODRhODZiYzIyYmNhMzhhOGRjZDYyZWYxIHB5M2sKKzgxMjMyIDg0NGJkN2I4NDIxYjczYzNhYmMxYjlkNjEwMjQ4MzI1ZmFhYjRiYTEgcmVsZWFzZTMxLW1haW50Cis4MTIzMyA0YmIwM2NjMWQ0MjFmNmNlNTg4MzY1YWY5Nzk5ODU0MjFlZjJmZGI4IHB5M2sKKzgxMjM0IGIyOWFiNGU3NjczNjJlYjRkY2E3NjE3MmQwYTcyYmEwMmY4ODNiYWIgcHkzaworODEyMzUgMmNhNDYyNmQ5YzkzMDM0OGU2NTIyZTcyMzU0NjJiYmJjZGExMzE4YyBweTNrCis4MTIzNiBlMjBhNjc3YWYwMDA0ODE5Y2YwODRjMjQzYTE3OTkwMjA2YTIwYWI5IHB5M2sKKzgxMjM3IDA4YWJiZGM5OWJlNjhkZTc0MmM5ZGQ2NTAyZDEyNWNiM2E3ZjRmOTMgcHkzaworODEyMzggYjRjZmNhNWM0MjhlNTIxNDdhZWIwMDY0NWMwNGMyODQxOGJkYjVlZSByZWxlYXNlMzEtbWFpbnQKKzgxMjM5IGEwOWViM2Q1OWZmN2Y2MWVmMGNhNjQxZGIyZjNlYTg4NDZkMTMwYzcgcHkzaworODEyNDAgZjgzNzYxMjAwN2RjOWFiNzc3NzA3OTE4NTM3MDM3YTNjZGQxNGViMyByZWxlYXNlMzEtbWFpbnQKKzgxMjQxIDhhMDA3OWQ4ZDFjZWY0MzkzZGNjYmY3MDk0MTk0OGM5ZGQ3ZDdjZGQgbGVnYWN5LXRydW5rCis4MTI0MiA3YTdhZTQ3NmRmNGZlMDQyNTA1YmU5ZDhhNjU3MTRiYWI2MjliMzA2IHB5M2sKKzgxMjQzIGMxNzc4M2FlZGNiODhhYmFmOWQzYTMzYzExZjNmMGU3YWJiY2I1NGMgcmVsZWFzZTI2LW1haW50Cis4MTI0NCA4YjY0MDFhZTEyNjI3ODEyNGQ2MGE3NzIxMTk1NWYyOWEwOGZiZjI0IHJlbGVhc2UzMS1tYWludAorODEyNDUgM2YxYTZiMGI3OTBjN2RjNTg1ZTQzZGFiNjI4NTBlMTljMjBiMmUwYSBsZWdhY3ktdHJ1bmsKKzgxMjQ2IDRkMjdlODgwNzI0YWJkMWUxOGJiNDY1NjExMDdkNzIxMGI2ZDUzM2YgcHkzaworODEyNDcgYmMwMGU0NjNhOTViZjVlZGRhMjYwYjVhZTU2NzZhNzEzYzgxYzYwMyBweTNrCis4MTI0OCBhMzNiZWUxNGFiYzUxYjIwOTMyN2MwYTk1N2RmZDZiOGJkMmIwMjM5IHJlbGVhc2UzMS1tYWludAorODEyNDkgZGRkZDFiYzdlODM5MTcwZTI2N2I4YmY0Njk2MjNlZDEzYTU0NDhjYiBweTNrCis4MTI1MCA4OTRjOGU0MjA3NGE5M2IxZWUwNWM2ZGVmZjk5MzczOWFiZTk5ODJiIHB5M2sKKzgxMjUxIDU1Njk2MWY0ZjE2ZGE3MTJjODNkMzg5MmIwZjFmYTY4ZWMyYmE5NGMgcHkzaworODEyNTIgZjNmOTVlZDgyNzQ0ZGIwMmU1YTEyNDI5ZTcxZTdmOTc3ODJkYzJkZiBweTNrCis4MTI1MyAzMWNlZTJjZjdjMzc2YWEzM2VjMTI5MDU5MDE4ODY1OTJlYmVjOTA4IHB5M2sKKzgxMjU0IGNhODE2NDZkZDI5Y2JlNzJjNjJkNGI1MTI2YTA2ODc2NDY5OGE3MjEgcmVsZWFzZTMxLW1haW50Cis4MTI1NSBkMjkzOTkxMDA5NzM4MjAyMzk3MDc1NDY3ZmU5NGUwOGEwZjBlODI2IGxlZ2FjeS10cnVuaworODEyNTYgZDEyYjY1YTc5ODI0ZjAwYzhlZjU1NTBkYWM4YjYxZjMyM2RmZTA0YSByZWxlYXNlMjYtbWFpbnQKKzgxMjU3IGM4NmVlYjczMzMxNmJhMzRlZmZiODBhN2QyZTMxNWU0ZTViYWViYzAgcHkzaworODEyNTggOTNhMjUxNjk4N2UwMDIyMTE4N2E4YTE5ZTA5OTQ2YzFlYjNjNzZkMSBweTNrCis4MTI1OSAwYjA0YzVjYTU3N2QxNmQ0NzczNDExYjNlZWM4MmQ1NmQwOGM2NTViIGxlZ2FjeS10cnVuaworODEyNjAgNzY2NDNjMjg2YjlmMDUxOTZkYjAzZDg4NTE3OTZmYWRiNzIxMTM2MCByZWxlYXNlMzEtbWFpbnQKKzgxMjYxIGI1ZjJjNDQyMWEzMTg2YmVlZTQ1NjEwNzY2MjM5M2I2OTVjY2MxNzkgbGVnYWN5LXRydW5rCis4MTI2MiAwOTkzMjY1MzU2MWI5ZGU0N2RmZjI0YmY0OTYzOTJhNzQzMDU3MjJkIHJlbGVhc2UyNi1tYWludAorODEyNjMgZWM1OTVmZjI1N2UwNjQwMWE1MjNiMDQyYTcwOTlkMjBkMzk3NmQ2YyBweTNrCis4MTI2NCBmZjRhOTY4Y2E3YmJlNzZlNzI5NjI5ZTM1ZDkwYzhhMzk4NDZkYmVlIHJlbGVhc2UzMS1tYWludAorODEyNjUgYzk4MWYwYzg2NzhiNDk4NzVmOTZmNzUyYTdkZmU1OTkyNzYwNGM5ZiBsZWdhY3ktdHJ1bmsKKzgxMjY2IDM5ZWI5MWE1ZjlkY2E4MzZiZjJhZWJhMTNmOWQ4MTJiYTYxOWFkNDQgcHkzaworODEyNjcgZDZjYjJmMTBlNjVlZjg3MzQ5MjhmYzZhY2E2MGVhNzgxOTQ0YjY1OSBweTNrCis4MTI2OCBiOWEwZjI2ZmEyYzk2MzM3ZDExOTdiZDA2ODVlMTk0YTczMTQwMWQ0IHJlbGVhc2UzMS1tYWludAorODEyNjkgN2Y2NGZhZDE3N2RkNmM2Y2I5YzE0ZTQzYWE4YjJkYTI2ZTkyYzY5ZCBweTNrCis4MTI3MCBmMDFhYjFiMTNkMGFlNzdhMzI0MDdlMThlMDM4YTU0YTIyNGJhNjAwIHB5M2sKKzgxMjcxIDg0MDNmNTA2ZDllNTRhNDc3OGJlYWRiZDg0MzhiYmVlYTk2MzlmZTggcHkzaworODEyNzIgZGU3Yzg1ODBmOWViZTY2MDMyMDk2ODQ5ZTcyNjAyNGFkNDY0ZWIwMSBweTNrCis4MTI3MyBiZjE0Yjk2MzhjNzNhNWU5YThlMDIzMmFiNDE3ZTgxZGM3ZjhhYzUwIHB5M2sKKzgxMjc0IDVkYmQyYzI5YjBlOTZlYmUwM2Q2YjhlMTgyMmRhNTJhNWExMWI3MzggcmVsZWFzZTMxLW1haW50Cis4MTI3NSBmMGZjZDY5MTg3Y2QyNmQwNzc2Yzk0NDljYmJlMmNmMjJiOWM0YWVjIGxlZ2FjeS10cnVuaworODEyNzYgZGVjODg3MDJjOWJjNzM2ZDMzNDVhOGE3MTQwYTlhNjM0ZWJhNGNiNyBweTNrCis4MTI3NyAxNzU3YmJlYmY3NWFkYjE2MWYwZGNhYjkyOThjYzBjNjBjOTM0MzhmIHJlbGVhc2UyNi1tYWludAorODEyNzggODJkYmY5M2Y3NjBmNGU4ODAxZWI2NWZiYWQyMzNlMDkxOTM3Mjk1MiByZWxlYXNlMzEtbWFpbnQKKzgxMjc5IGU3NDY2ODU0NDVkZWViMTAzNWI5YjU1OGNlZWMwNTc5ZjZhZDkzNTggbGVnYWN5LXRydW5rCis4MTI4MCA2NjY2MDdjZTRhZGE5ZGJjYjk0ZjVkY2QyYjcxZmUwMzVmNmMxZDVjIHJlbGVhc2UyNi1tYWludAorODEyODEgNDU1ZDNmYmIxNGVjYjc1YWNjMjZkZTA0YzM4ODBlODU2YTQ0MDkxOSBweTNrCis4MTI4MiA4NzFiZmExZmRhNTkwZDEyYjczYzVmZjdmYzNlYjkyOGY3MGFiZTU1IHJlbGVhc2UzMS1tYWludAorODEyODMgZjFlMzdhOGZiMmQxMmI4OTlhNmEwMTY0MGI1NmExNWZlY2U5ZjMyMyBweTNrCis4MTI4NCAxZTUyYmVkODc3YzE3N2Y2NDU4ODNiMDZiMWYyM2MwOWZjMWVmYmNkIHJlbGVhc2UzMS1tYWludAorODEyODUgOGRhMDg4ZDZhOTViMmYxZWQ3OGUzYzkzNWViNzE0NTYwYmY2MTJhYyBsZWdhY3ktdHJ1bmsKKzgxMjg2IDZiMzg5MjZhNWZjZGM0ZWI3YWE3MzdlMGZiZWY5MmQ5NzYwZTRhZjkgbGVnYWN5LXRydW5rCis4MTI4NyA4MGRjNTcwMTc3YzY2OGE2MmIxMjYyNTY5MTc2MzE1ZWFkZmQ4ZjNlIHJlbGVhc2UyNi1tYWludAorODEyODggMTk3NTExYzRiNzVhOTdhM2MwNGE2N2IxYWU5NDNmNzc2NjgyMjFjMiBweTNrCis4MTI4OSBlZDBhNjlkNjZjMTEzNTA4Yjc2ZmZmMGI1YTMyNDg5ZmM1ZmI5OWI4IHJlbGVhc2UzMS1tYWludAorODEyOTAgYmVjODE4YTc2OTAyYTJmNGViZmVjODU1MmU5M2JjYmM5M2E4MzNhZiBweTNrCis4MTI5MSBjZjc0ZWMzZTFmODI2ODI4MzJjZWU2ZjIxNDVmMmYxMTkyZmY0OTUwIHB5M2sKKzgxMjkyIDYxM2I2M2Y1OGJlYmYyOTg0Y2ZlZTJkNDkxZTNkNGMzMThmM2E4ZmMgcHkzaworODEyOTMgODU5YjgzOGVjZjNkYjY1ZWZjYjdkZDkxZTc3NjdjYmUxODRhYTQ5MCBweTNrLWppdAorODEyOTQgZDdkODA0NmY3YTUyZmY2NDQ5YzRiOGJlNDc1NjFmZWRjZjZjZmJlZiBsZWdhY3ktdHJ1bmsKKzgxMjk1IGU4ZWRhYmQ1NDE5YjNlMzQ2Yjc5NTc0OGFhYjcyN2Q1ZjY3ZGFjNWIgc3Nsb3B0cy00ODcwCis4MTI5NiBiNzVlNjJmY2FlODFhNzI3M2IxZDcyZWU2MDMyYjdmZDlhOTVhZmQ5IHNzbG9wdHMtNDg3MAorODEyOTcgMjg1OTBkNWI2YjhiMDg2N2U4NTg2NjgzZGNhMDIwNjMzOGI3YjAzMyBzc2xvcHRzLTQ4NzAKKzgxMjk4IGYyNDcxNDZmOGE5NTllZmM3MjI5YzcwYzE0ZWI0N2M3Zjc1ZjVjZTQgcmVsZWFzZTI2LW1haW50Cis4MTI5OSAyNmQ3NjA1MjAzZGNjMjA3MzA5Yzg2NTMwY2M3OTQ2Y2JmZThhYjVmIHB5M2sKKzgxMzAwIDE1ZmE1OWZjMTQ5ZGJjY2E5OWU0NjA0Y2ZjNWJmOWM1MjU1ZDQ1NzkgcmVsZWFzZTMxLW1haW50Cis4MTMwMSA1ZjMxMzUwYWZiNjA5OGFkN2I1YzZiM2U3YjVmMzgzMjI1NDA1YTE2IHNzbG9wdHMtNDg3MAorODEzMDIgNjM5MTA1NWVmY2EwZGI5NjBjZTA2YzA2ZDhjNGJmYzU0MjUzM2MwZCByZWxlYXNlMjYtbWFpbnQKKzgxMzAzIDEwNjVkMWM1MzMwOWFlYzRjZWFkNTZmMjk1ZmQ1Y2I4ZjRhZGFlNTAgcmVsZWFzZTI2LW1haW50Cis4MTMwNCBmMTRmNDJmMzI5MjJlM2VjOTlmODczNjkxODMwMDY4OGZmMDYwNjBkIHJlbGVhc2UyNi1tYWludAorODEzMDUgYzllZDBjM2Y2ZGNkZDdiMWRmNjRlZjY1OWU2OWQ2NzhmMjhiOGNhOCByZWxlYXNlMjYtbWFpbnQKKzgxMzA2IGM5OWZjYTAzZmEzNzhlMjdlZDg3NDc0YjU5MDkzMDk5OTJiYzBiZWYgcmVsZWFzZTI2LW1haW50Cis4MTMwNyAxOGY2MmE3YTdkYmE4MjM3YjZiZWI1ZDQwOWVhMjM4NDJlNTBjNWIwIHJlbGVhc2UyNi1tYWludAorODEzMDggZjc2ZjgxMDQ0ZDQwODNkNTNhOGY5ZmFjNjljODI0YzA4MDBkZDQ2MSByZWxlYXNlMjYtbWFpbnQKKzgxMzA5IGVmNzJmMTU4NjRhOTk4ZjUyN2NhZjQ3ZWI5N2ZjYmNhYTg3M2JlMDYgcmVsZWFzZTI2LW1haW50Cis4MTMxMCAwNTI2OTU3M2QyMTcyZjBjNDQ1NWY2NzdjYWRiNGY1Mjk4YjA2NDQwIHJlbGVhc2UyNi1tYWludAorODEzMTEgYzFjMWU4YzhkYzljZDFhZDc0NzJmOWY5ZTdmNGYwMTZmMTM2NzllZSByZWxlYXNlMjYtbWFpbnQKKzgxMzEyIDY4NDFiMmExNmE1MWQ1YTU5NTIzMWQ5YTAwZmQzNWYwMTIyZjQwNDEgcmVsZWFzZTI2LW1haW50Cis4MTMxMyBjZTM4MDliODM0NzM2ODA5YzViOGZlOWJiNjA2YTBlOGRkYTIwYWQyIHJlbGVhc2UyNi1tYWludAorODEzMTQgN2ZjNDhhZDE2MDg3ZWYzY2MyNjA1ODE1ODE4OTUyY2Q3MDg2MTg5NCBweTNrCis4MTMxNSA3ZjE1YTYwMDYxNjI3ZGY5YmM1NzE0YzAyOTljZDU0OTM0ZDYzNDRkIHJlbGVhc2UyNi1tYWludAorODEzMTYgYWE3NzdkNDNmMjJmNWU5NDYyYjVlYjlkMzM2NTMwOGVjYTk2ZTZiNSByZWxlYXNlMjYtbWFpbnQKKzgxMzE3IGM4ZDE2NmVjNTQzMDFkZjM3NDJlZThkMzg1ODdiYjBiNjBhMzQ3NDggcmVsZWFzZTI2LW1haW50Cis4MTMxOCA3NWQ3Mzk2NTU2ZmRlODMzMDE3YTEwNjJhZWUyOGZlY2VlYjM4MWQzIGxlZ2FjeS10cnVuaworODEzMTkgOTQyYjNjMTY4ZjE1ZGFmNThiNjQ2YjQ4OWUxNTE4MGQwY2UwMGMyNSBweTNrCis4MTMyMCAxNTA0Y2M1YTE1YTFjNGUzM2Y3YzNiYzAwMzhlYjgxODUzY2VhNjc2IHB5M2sKKzgxMzIxIDg0Njg2NmFhMGViNjZmZjdhZjljZDg2ZDY5YjRmNWE1YmRlMWU3ZTkgcHkzaworODEzMjIgOTk5OTk3NGZmNTA2OTViZDVmMDNmZTg1Yjk2M2NjNzcyMjE0NjAwZSBweTNrCis4MTMyMyA3YmE4NTFkMWI0NmVjNGY0MGQwMGUxYzdjODU3ZjdhNzljNTIyNjA0IHB5M2sKKzgxMzI0IDg5Y2UyZjZkNGIyNDE3NGJmYTJjZGE2MjM1OWNiYzBkYjM1OTdlMTYgcHkzaworODEzMjUgN2RjZDFhMjY5Nzk3YmIwZGEzZjBlZGNmMzdlMzIyNWZhOWEwODhjMSBweTNrCis4MTMyNiA4MWQ3OGRkMjczYjA5ZjBkNjgzNzg4ODY5YzY2ZWNiN2UyOTIxMmRkIHJlbGVhc2UzMS1tYWludAorODEzMjcgOGI3NjZlYzY5Njg1ZDRmNmNmYTM5ZDkzZmE3NWNlYTI2YmEyOTdkOCByZWxlYXNlMjYtbWFpbnQKKzgxMzI4IDlhMjMzMDlkZmFhMzE5OTQxNWNmNmY3MGQ1NDM0ZjZiZWVlYzRlZTAgcmVsZWFzZTI2LW1haW50Cis4MTMyOSBiNmQyYTI3YzNlM2I0NDJlNDgyNzI1Yjg1NTljZjMzMDVjZDhmYjM4IHJlbGVhc2UyNi1tYWludAorODEzMzAgMDgzZjY4NmFhZjE1YTRkOTk1NmViN2VlZmJlY2Q4NDQ4MmM5MWY3YSByZWxlYXNlMjYtbWFpbnQKKzgxMzMxIGYzN2VjZjRhOGZmMTBhZThlMDNjZGZlYTFiYjVkYTQ2YzllODkyNGUgcmVsZWFzZTI2LW1haW50Cis4MTMzMiA3N2ViMWZiNTljNzgwN2VhOGRlZmVjMGE5ZGZjNzBkNjczMGY4Yzg0IHJlbGVhc2UyNi1tYWludAorODEzMzMgM2QwYWU4ZWYwMDQ0NjI4Y2UzOWZlNTdhOGViYjY0OWZhYTlkMGJlZSByZWxlYXNlMjYtbWFpbnQKKzgxMzM0IDI4YmJkMzFjYmNhYjZkNjk2MTkwMjIzYzMzZDM5MzcxNTk3NDIwM2EgcmVsZWFzZTI2LW1haW50Cis4MTMzNSBmNWFhZTg1YjY4NjRlNjk0ZjVhMDU1Y2VlMzBjYzhjNTExMGI0ZDVmIHJlbGVhc2UyNi1tYWludAorODEzMzYgN2YxMGFlY2IwNjMyMmIzM2JiMjVlMGY1MDE4ZDRiZjZhOGJkZmE3NyByZWxlYXNlMjYtbWFpbnQKKzgxMzM3IGFlNGM5MzFhNzFmMDY5Njk1NzcyNjJhOGE1NThmZTkxMmExNWQ1NjYgcmVsZWFzZTI2LW1haW50Cis4MTMzOCAxYTM0ZGUwNDI5NzI4NzA3YmZiMGU4MGJlYzI1ZWMwNDQwNzdmODY5IHJlbGVhc2UyNi1tYWludAorODEzMzkgZDFmMjY1Y2VhNzBiNzQzNmE5YzA1OGNmYWUwYTMyOGUzM2VkZTNjOCByZWxlYXNlMjYtbWFpbnQKKzgxMzQwIGE3MmJjNTRlYzcxZGY4NjFiYWNjMTM4OTUwMGJlY2UwYmM3M2QyYzQgcmVsZWFzZTI2LW1haW50Cis4MTM0MSA2YWUwNzMzMjZlN2ZiODI0NWY4MTQ0OThkZTFkMGMxMDlmNjE0NTQ5IHJlbGVhc2UyNi1tYWludAorODEzNDIgZjQ5MGQxNTgxOThhZGVlZTE1MmJmOGQyOWI0YWM4NjhhMmY5OGJhNSByZWxlYXNlMjYtbWFpbnQKKzgxMzQzIGJmNGU4M2RlNGVhNTI5OGE4ZWU4MTg0NTllNmRjY2UzOTE0ZjM5MzMgcmVsZWFzZTI2LW1haW50Cis4MTM0NCAwNzQxMGFlZTdmYzBlYWY4YzViNTk3OWY4NTY3MTg5MzExZGQyNDEwIHJlbGVhc2UyNi1tYWludAorODEzNDUgMzRlOGJmZWIwYjk4NzlkMTFiN2YzMGZlNmYxMTFhOWQ1MWNlYTlhNyByZWxlYXNlMjYtbWFpbnQKKzgxMzQ2IDU5MDZhMGZjYzgyNmI1MWYyOGRjMzNlZTcyZmE5OGZmMmVhY2U2MWUgcHkzay1jZGVjaW1hbAorODEzNDcgOGY2ZTY3ZjY5M2ZmNWUzNmM3ZTg0ODE1NzY1MTY2NzU1MDMzZDFlNSBweTNrLWNkZWNpbWFsCis4MTM0OCA2NWI1NjFmMzk2NzkzYzRkMDlhMTE2ZDYxNzE2MTQ5MjhhNTZhNjc3IHB5M2stY2RlY2ltYWwKKzgxMzQ5IGUwMjNhZDNlMmNhY2NiMjUyNzlhNDRjMWY5MzFhMDE5YzA3NjhlNjcgcHkzay1jZGVjaW1hbAorODEzNTAgOGM2Zjk4MTY5OWU4MjVhYzBlYTVjYmRhMDcxZWVkYzhkYmNiM2Y1OCBsZWdhY3ktdHJ1bmsKKzgxMzUxIDY4NTI1ZWYzNmI2NjhjMzU3ZTA1ZjhmNmFhMmQwODFmNDllM2I2YzQgcmVsZWFzZTI2LW1haW50Cis4MTM1MiA0YmZiMDBjZTEyYjg1OWU5NWQxNDI1ZDQ2ZDVlMWQwMzU0ZmFlM2U2IHB5M2sKKzgxMzUzIDQ5ZDdkZTlkN2IxYWEwMTgyNWMyMDAzYzI2OTczNjY2MjI4NWI4NTIgcmVsZWFzZTMxLW1haW50Cis4MTM1NCAyMGEzNTZlZWIwZjcwMTAzZGViMTUxYjRkMzNkMjVhNGFiM2ViMGQ3IGxlZ2FjeS10cnVuaworODEzNTUgMjFiYjkzZTA5ODhjNDFiODFiMDM1OGJkMDc3YjBjNTdhYmE1YTcyYyByZWxlYXNlMjYtbWFpbnQKKzgxMzU2IDViZjRhODYzM2M1OGI4NTViMGY4YzczZTM3ZGU3NjZlNTBhNDc3NzMgcHkzaworODEzNTcgZWFlYTgwOGI3ZmI4NjcxYTg4NGQxZmUyZGQxN2EyY2ZjZmY4YzQyYyByZWxlYXNlMzEtbWFpbnQKKzgxMzU4IGI3ZjcxZjYwNDM3YjU5NmM1NWFkYWQwMGMyOGEzYTRiMmM2MDA5ODEgcHkzaworODEzNTkgMGNhZmMyMGU1NjM3NjM0NjVjYzA2ZGYxYTBlNGQ3ZTNkNjJmNmU5OSBweTNrCis4MTM2MCBlNjhlMDI4ZDA5MWU4MzU0MGQxOTQwZTk0MDE1NDViZTUxOWVhODkxIHB5M2sKKzgxMzYxIGU1ZmRlN2FkMWI3Y2M2OTQwMjM4MzA2NmI2OTRmYzUwMmE4NmNlMGYgcHkzaworODEzNjIgY2NkYjA5Zjc5YTAzODU1NWNhZTRlMTkxNDJkNzYxZmQwODI2M2MxNyByZWxlYXNlMzEtbWFpbnQKKzgxMzYzIGJhNTA4ODhjYzAzOTE0ZmQwMDE0MDEyODVkOGRkMDg4YzVhMTcyNjkgcmVsZWFzZTMxLW1haW50Cis4MTM2NCBkZWVkNWZjZTgyZDYwNjlmMDUxYWQxNzM1ZjJjNmFiZDM4YzczMmFlIHB5M2sKKzgxMzY1IGMxYzc3Njc0ZGJjOGMyOWQxN2RkYTg5ZDkxM2Y1ZWIxYmI4Y2EyNzcgcHkzaworODEzNjYgMjQ4YTkxNWUzNWVmMDE2MWRiN2UyYmMxYzhlYjNjNWQ0ZWMwNjRiNiBweTNrCis4MTM2NyAyM2VlOGFhODU3ZWUzNmI5OTdkMGFmYzdjYWEyYTg2YjRmMmFkZDllIHB5M2sKKzgxMzY4IDgyYTQ0ODNkOWM0YTk0MjdhMmY0MjQ1ZDYwODFkZjIyODFhNWI0M2UgcHkzaworODEzNjkgMWYzZTc4MTI2MTJiOGJhMTI2YWUyYThlYmNlMWJmN2MyNTQxN2IzMCByZWxlYXNlMzEtbWFpbnQKKzgxMzcwIDc0M2MyMDdkYzJiNDIwNTY5NjliOGY1ZGNlYmE5YmMxYTFhMjQ0N2EgcHkzaworODEzNzEgMDIxZjVlYzVkMmQ0ZmUzN2QxMGZkZjI1MWEzYjE1YTliMTBlZjM3MyBsZWdhY3ktdHJ1bmsKKzgxMzcyIDE4ZGNkOTAzYzU1ZTE1YjI0NTNkYTg0YzM1M2Q4YTA2NmJiODAwMzQgcHkzaworODEzNzMgZGE5NDE1MDdlZDkzYzQ0YzQwM2M2MTFmMDgwY2Q2Nzc1MzMxOTk1ZCByZWxlYXNlMzEtbWFpbnQKKzgxMzc0IGI4NGY4ZDFhMDUyMmM2ZjkyOTRmZjI3OTAyOGY3ZDhiZjIxN2ZhMDcgcmVsZWFzZTI2LW1haW50Cis4MTM3NSA1MDNhZmM2MmQ2MzJlMTc4Zjg2ZmNiNjExNDE0MDRlMTgwY2I1OWJmIHB5M2sKKzgxMzc2IGZkNzJhZjAwNjBjODU0MGFlY2Q5NTQwYzQ5NDZmMzI3ZTc2NDA5ZTcgcmVsZWFzZTMxLW1haW50Cis4MTM3NyA1ZDZiNzY4OTBmMTdmODgwZmVkZWUwYTAwNGU4MmM2NTA3YzJhM2RkIGxlZ2FjeS10cnVuaworODEzNzggMTI5NDI3YjVlOTE0MWFlOGRjNjI4YzJkMWY1ZjAyMzE3OTZiOTAyMiBweTNrCis4MTM3OSA0ZDgzYmE1ZDBhZjViNDU4MTgwOGYwODEwNWM5Y2Y4YjAxZDYxNDBkIHJlbGVhc2UyNi1tYWludAorODEzODAgNjJjMGU1ZjE0MTM4ZjY5NjEwZjIxYWJlODBmNTk0ZTBkYTVjNGI0MCBsZWdhY3ktdHJ1bmsKKzgxMzgxIDU1ZTIzNjhmNzJmMjc0ZTZlOTMwYWFlNTI0YTJiNWZjZmYwYzdjYjUgcmVsZWFzZTI2LW1haW50Cis4MTM4MiBkOTNiZDUyNTQ3M2M1ZjY4NzgxYmFlMjQ3YmI5NTZjMjE3NTE3YTQ2IHJlbGVhc2UyNi1tYWludAorODEzODMgMzI3MWFmMDM1ZDAxNzhjZGM1NWY5YTliM2Q3ZTlkOTlkNjJjYzgzNCByZWxlYXNlMzEtbWFpbnQKKzgxMzg0IGYyZDNiZjlkYTlhODE1NGE2YmRkMmNjOTQ4OTgwM2UyZGI3YTQ1ZGEgcmVsZWFzZTMxLW1haW50Cis4MTM4NSA2ZmUyNjBiYzA5ODdkYzJjM2NkZWY1ZjA4MGJlMGE3MWI5NDlhOGNiIGxlZ2FjeS10cnVuaworODEzODYgYjNiMjY1ZmJhYWJkZjllYWI0MmM0ZGE2MDQ0MThjMTA3YzlhMmQ4NSByZWxlYXNlMjYtbWFpbnQKKzgxMzg3IDFlNmI0MzVlOGViNmE1MjgxYmVhZDc2MGExNDY2NTkwNjFjYTk1MGEgcHkzaworODEzODggOWRkNTIyZjdjMGRlMjFjY2NiZDE2NGVlZDdkMDI2ZWVhOTMxNzkwYiByZWxlYXNlMzEtbWFpbnQKKzgxMzkwIDdkNGVlMGRjODc2NDQwMTdlZmQ1MzA3NDc5ZWE5MjBjZDJkZDAxZmYgcHkzay1jZGVjaW1hbAorODEzOTEgNGY5ZGIzNWE0MDg2MWRiN2Y3NzU1Mzg1NmQxMTE5YjdhMTZjZTZiZCBweTNrLWNkZWNpbWFsCis4MTM5MiA1ZWU0N2YwYjI2YjAyYTA3YzM3ZGI1NjAwNDUwMGRjYzRjZTU4NDc5IHB5M2sKKzgxMzkzIDIyMjhjMjVjY2UzZTcyZmViMzg2NjhhYzI4ZjVjMGMzMmJlNTVjYjcgcHkzaworODEzOTQgMzcwMzJiMmE1OTJkYjAyMzRhZjE2NjA0YjAwMGQxNjQzODIyMTA2OSByZWxlYXNlMzEtbWFpbnQKKzgxMzk1IDM4NzE5ZjExNjE5YmNkODkxNWY1ZDIyYWQ0OWFlMWUwZWE0ZWIyZWMgcmVsZWFzZTI2LW1haW50Cis4MTM5NiBlM2RhYWMwNjZiOTJlNzhlMmJmMThjZWZmOTRiZmY4Y2ZiYmEwYWYzIHJlbGVhc2UzMS1tYWludAorODEzOTcgZDYwMTZmYTU4ZGY2YjVjZTFmMzdhNTlmNjEzZDk1NzY5ZjQzN2MwZSBweTNrCis4MTM5OCBjMjkxN2FjNWQ1MjZkYzRkM2Y2MmJkNjFkM2FhODA4NTg5NDM5MDgwIGxlZ2FjeS10cnVuaworODEzOTkgM2YwOGQ5OGM4ZmE1ZjA3MTYzMzVjMTZkNDBiZGIzZjMyOTRmZDJjYyByZWxlYXNlMjYtbWFpbnQKKzgxNDAwIDc5NTc2MmI1ZTBkNmU2YjM3ZWRlOGUxYmE3ZmJmOTIzYTBmNmQ0MTUgcHkzaworODE0MDEgOWRiOGM0MTQ5MjFmNzAyNmRkMzRiZTYwOTg4ZDJlOWIzOGQ4NDg4NSByZWxlYXNlMzEtbWFpbnQKKzgxNDAyIGUxOTQwZGRiM2Y1NjVhNjM5NGZhNWQ2YTdjNjFhMTA0MTVlNDBhMDAgbGVnYWN5LXRydW5rCis4MTQwMyA0NDE0OTE1NzJmY2UzYWQ4ZGM5MGUyYjU0OGVjNTg4OGQyYzVjNTVmIHB5M2sKKzgxNDA0IGIwNzJiOWZiMGZkMmRlY2JlMDRmMTNiYjRhYWNiNDJhZDBiOGNiOWYgbGVnYWN5LXRydW5rCis4MTQwNSBmMTM4ZDFiYWNmYzQyODgwNjY0MjAwMTQ5OWJjNzE2ZDMzZGI0MDZiIHJlbGVhc2UyNi1tYWludAorODE0MDYgZGU2MWE2OTcxMmRhZDdjNDVhZmNhM2YyNzJkMWRlZTRmYmMyZmM5OSBweTNrCis4MTQwNyA2Y2EyZTZiM2JmMzE3NzllNmUwNTc2NzA2NjgzOGVmZmRiNjU1MzQzIHJlbGVhc2UzMS1tYWludAorODE0MDggNzM0MTZiMWJiY2Q1YmNhYWZmMjI3YjU2NjU0MTZiNmZiMzIyNzg2ZiByZWxlYXNlMzEtbWFpbnQKKzgxNDA5IDNkNjRkMWFmZTY3NzlhNzMwNGIwZGJkY2U1MmExYmMyMzgyNDg2M2EgcmVsZWFzZTI2LW1haW50Cis4MTQxMCBlMWY0ZmM2M2QyYjNkMmJlNGFmMTdkZjU1NTZiZmFmYjlhNjE3Yzc5IHB5M2sKKzgxNDExIDUwNmU5YmU4NjEzOTM4NGU1ZWRiMDdiMDg0ZjZlZWFlYTBkMGZmYzQgcmVsZWFzZTI2LW1haW50Cis4MTQxMiBlOWEwNDJhMjUxOTcxMzhmNmUyMzA4ZjdmNGJhZjZhNjZjMjIwYjQwIHJlbGVhc2UzMS1tYWludAorODE0MTMgOTQ2Y2M1ZWUyOTUxMTBmMzQ1ZDUzZmY2MmY3Y2Y5ZmVjZjY3NmQyOCByZWxlYXNlMjYtbWFpbnQKKzgxNDE0IDBmMDk2ODI5ZmM5MGI4YjM1ZDkzMzU4NzdjMGY1MDBhZDE4MjgxNDMgbGVnYWN5LXRydW5rCis4MTQxNSBmZjNjNjc2NjEzYWRiMTcwYWY4MGExYTMyNTU2MzExZThjMWFkOWEwIGxlZ2FjeS10cnVuaworODE0MTYgODU0MmI3N2EyOGVhOTY1ODZjMDA4MWQ2NWEzYzRjNTJjODBkYmU3ZSByZWxlYXNlMjYtbWFpbnQKKzgxNDE3IGIwMjUwZmZhMjI2Nzc1ZGVmYjM1ZWRiZTM5MGM4ODdhNzAyYmZlMDYgcHkzaworODE0MTggZmZmMjlkM2U3YTM5MjE1YjE3ZGI4OTczMGE2MTBjZWYwYjY0MTIwZiBweTNrCis4MTQxOSAxYjA0Njc2NjFlZjVhOTBmNDFmODZmNTIwMGEyOGI0ZWM2YjEzNDJmIGxlZ2FjeS10cnVuaworODE0MjAgZmJmYzM1MzY0N2UzYzFiMzVmOGZhMjkxYzUxMzQ1N2UwZjYwNWQzMyByZWxlYXNlMjYtbWFpbnQKKzgxNDIxIDI5YjU2YzM4YTAzM2RjZGExMGM3NjFlZTRjYjEzMWQzM2Q4OTE5YWUgcHkzaworODE0MjIgYWJjM2Y1YTFjYzVlOGNhY2FkMzVkMTViYTVjZTNjZWM3M2E1YzZjYSByZWxlYXNlMzEtbWFpbnQKKzgxNDIzIDA2YjA5Mzc2Y2M1YjA0MmNlMGQxNjFiMzAzNDRhNWQ4Y2MzNGU1NTMgcmVsZWFzZTMxLW1haW50Cis4MTQyNCBlY2E5OGJkYzhhMTRmNDBiMjMyYTM4NGUyZTE5YmI5ZDk1MmE3NmUwIHB5M2sKKzgxNDI1IDIzZTM4MTkyYWY5NjQ4ODNmZGQ2ZTFiNDZjOTYyNDM0YTZlZDY1ODggcmVsZWFzZTI2LW1haW50Cis4MTQyNiAzMTYzZGEyMmQ1ODUwMmFjYzdkY2IzMmMwODVkZTM4MDMwMzYzOTRiIHJlbGVhc2UzMS1tYWludAorODE0MjcgOGIyZDlkMTAxYzg1YTQ5NjZmYjI5MzVhNGU3MWE5OWUwOTI0Njg0ZSBweTNrCis4MTQyOCA2OTg1YzZiOWQ5NzhlNTcxM2EzNTAxOTAwOTAxNGRhYTE2ZjE2M2JkIGxlZ2FjeS10cnVuaworODE0MjkgYjE0ZjM5ZDBmMjBhMmRhZTU0ZjQ5MzdhMzM2YTJhNjI3NDY4NGVkYSBsZWdhY3ktdHJ1bmsKKzgxNDMwIDZhMDhlZWI0YjMyMjM5Mjk3NTRhZTdlZjUwNzFkNmJjZjJjMWZjZjYgcmVsZWFzZTMxLW1haW50Cis4MTQzMSBmZWJkOWMyODhlNzZmODBiYzkzYWY4MjE5N2Q4ZDQxM2NjNTcxYzNjIGxlZ2FjeS10cnVuaworODE0MzIgZjA1ZDI5OTY3NzZlMGVmNGYzNjgzZmUyMWZmYTU0YmNjYmM1MTczMyBsZWdhY3ktdHJ1bmsKKzgxNDMzIDExZDU4NTE2MDMzZjdkNTQzMjllMGE2ZTYxMjhkMWIyZTJmNTRjZjQgbGVnYWN5LXRydW5rCis4MTQzNCA1ZDY3NDk3MGFjZDlhMDY4Y2I3MWM1MmI3YjRhMjBlZjhiYmUzY2ZhIHJlbGVhc2UyNi1tYWludAorODE0MzUgNDk1ZWJlMDRkNDc5OGNiYzBmNjg2YWRjODQ3ODI1ZDkyMGNjY2M1MyBweTNrCis4MTQzNiA2ZWY3Y2ZiMWY4ZjQ4MzFjMGIwMDVlYzMyZDUyYjZkZTQ0YzhjODgwIHJlbGVhc2UzMS1tYWludAorODE0MzcgOGM4ZDQwY2U1Y2ExNWE0NDRjZmY5YzZlMTMxNWQ2MGY4YmM2N2UwMyBsZWdhY3ktdHJ1bmsKKzgxNDM4IGYzODk1NjNmZjM3MjNlNjI2NWNiZjA1ZDc4MzdkM2VhOTE1NDE4NDkgcHkzaworODE0MzkgZTIwZWFlM2I1ZmU0NTQwYTc2YTMwNGNhZTlkNTFlYTQ1Yzk5N2E4YyByZWxlYXNlMjYtbWFpbnQKKzgxNDQwIGMwZGJmYjZhN2Q1NjczMDNjN2JiZTM4YTQ3ZDlmZTFiNTQyNWExMWIgbGVnYWN5LXRydW5rCis4MTQ0MSAzYTZlOTYzN2MzM2RkOWJlMzA3NTk5MWQ1ZmUzZjc2N2NhOWFkY2NiIHJlbGVhc2UyNi1tYWludAorODE0NDIgYTljYWQ1YWU0MDVkOGQyYTk1ZjhjYWExY2FjMzlmOTViMWYyOTUwZCBweTNrCis4MTQ0MyA3MmZhMDBhYzM4YmUzZTBkZDg2YWU3ODYwODM3NmE5MmNkOGRhMWE2IGxlZ2FjeS10cnVuaworODE0NDQgNTI0OTVjY2Y2MWNjODhkZWU3MzVmMmJjMTVkNjc0MWZmMGNjM2E3YiByZWxlYXNlMzEtbWFpbnQKKzgxNDQ1IDk1NDEzZWJkNDA4MTM2Mzg4M2UyNWIyNDFkZjg0NDk1YjA3MGE5YjIgcmVsZWFzZTI2LW1haW50Cis4MTQ0NiAyZDBiMDk4ZjZjYjdmOTg3MDQyN2FjZTkzMzQ4MzUzMTc2ZDUxN2Y0IHB5M2sKKzgxNDQ3IDE5NGY0ODhiOGFkMWE3N2I0NWViODljYzRlOGFjODE0YjBkY2I1ZTIgcmVsZWFzZTMxLW1haW50Cis4MTQ0OCAxYWNjYTljNDU1NjJiOGVmNDdhZjhjYWY2MDY0ZWVjNjdjMTM2OWMxIHJlbGVhc2UzMS1tYWludAorODE0NTAgMGUyNmNiOTc2YzRkOTBiYmRkMzhhNzkyMjk3NDY0NzkwYjZkZGI0MyBsZWdhY3ktdHJ1bmsKKzgxNDUxIDBmNTI4ZWUxNWVmNzIwNjBiNzEzNjExY2E0NjYzMWQ3NDg4OTEzYWMgcmVsZWFzZTI2LW1haW50Cis4MTQ1MiAwMjJjOTNlZDFiOGU4ZjRiZDY4YTQ0ZjY3ZGE4MjM3OTEyMzk0OGZlIHB5M2sKKzgxNDUzIDU1ZTgxOWNiNTM2MTAzNTkyNWM4MmQ2NGYzNjc0NGFhOTQ0N2E3NDQgcmVsZWFzZTMxLW1haW50Cis4MTQ1NCBjNmRmYzNkZDJkNWRmNGExZmIzMWQ0YTk5ZjRmMWFiMDYxZDQzMTY3IGxlZ2FjeS10cnVuaworODE0NTUgMmVhOTA5MjBjYzEwZDNhMTk4MWQzY2I0MWU2NDRiYTczMDhhMzliNSBweTNrCis4MTQ1NiAxNGQyM2JkZGY3OTMzMzRhZTY5ZmY5MzEzMzU5MGViN2Q0MGU5NDRiIHJlbGVhc2UyNi1tYWludAorODE0NTcgODE1YmEzODcyZjg1MDQ3ODY4ODBmNTIwZTIwMGQxOTBiMmYzMDhjNCBweTNrCis4MTQ1OCA4MGJlNzIxODc2N2I3MTJiNzYwNmM2MmJmYWVlMGNhYWU4ZmY3NWE3IHB5M2staml0Cis4MTQ1OSA5OWU5ZWQyMTRhYWRlNmRjMDNhYjQzMjljY2EzM2EyMGY5N2NmNjUzIGxlZ2FjeS10cnVuaworODE0NjAgMmEzODk3MzRkNTcwMjBiOTI2MGZlYTc2NWE3ZGU5Y2IzZmY0YTFhYSByZWxlYXNlMjYtbWFpbnQKKzgxNDYxIDFhZjI3MzUwZjQxYmM2ZmNhN2U1YTQ2ZjA0NjkwMDMzNTVlMTk1ZDkgcHkzaworODE0NjIgODQ2ZGJjZjk3MGFiZWE1Yzg1ZTMzNzQ5MzgxNjZmZjkwNTA2OTFkZCByZWxlYXNlMzEtbWFpbnQKKzgxNDYzIGI3MzlkMzAzNGVjNzUxMjU4NjY1MTQ5YTgxNmQ2Y2VmMTUzMjk4MmQgbGVnYWN5LXRydW5rCis4MTQ2NCA5YTAyMzljMGVhM2I0MWNkZGI5ZDBjOTJlZTQwMmJjN2NmYmVjZDFjIHJlbGVhc2UyNi1tYWludAorODE0NjUgMGE2NDdkMDhlNjg1ZmFmMGI5Nzc4NjBjNzNkNmUyZmU5ZGEzNWEwOSBsZWdhY3ktdHJ1bmsKKzgxNDY2IGYyMDVkNjYwNTZmODlkZDljZmY2NTI5MjM5NDJmMzExNjkxMjM1NmMgbGVnYWN5LXRydW5rCis4MTQ2NyA3NTVhMWJjNTYzMjZlZTA1YTdiM2Q1MGViNGMyODNlZjQxNTY4Nzk4IHJlbGVhc2UyNi1tYWludAorODE0NjggZDZhODg5Njk3MTdmNTViYzhkZmY3MGM5MGJlYmQ3YjhkOTMzM2U3MyBsZWdhY3ktdHJ1bmsKKzgxNDY5IDYzYjU3OGQ4MzNlZTdhZDkzZTI4YTNmN2M1NzhhOTZkYjE4ZmM3M2MgcmVsZWFzZTI2LW1haW50Cis4MTQ3MCAzNTZhNmZjOWU1Nzg1YzNmNjc2NTQ2MmIxOTk0ZjY3MzAzMzFiNTk4IHB5M2sKKzgxNDcxIGJmODJjMWQwNGUwNmNkYWJmY2RiOTIyODE1YjE0YmQ0MTJiZWJkMTkgbGVnYWN5LXRydW5rCis4MTQ3MiA5NzI2YzIxNzM4ODU4MmUxYWJiZWU2MTZiMTNhZDMwMGMzMzMzYjdmIGxlZ2FjeS10cnVuaworODE0NzMgYWIwODJlMzg3ZGQ1Y2UyOTU4M2VjZjE2NzVmMmM5NTBjYjM3YWVjOCByZWxlYXNlMjYtbWFpbnQKKzgxNDc0IDgzMGNkODliMDFlOGYwNGY1ZTEyM2VmZWI2NzM5MmM2NDQ0MWY3NDUgcHkzaworODE0NzUgY2Q0OTM2NjkxMTYzZmRjMjlhNDQ0ZWFmMjQ0NWJhM2Q1NGU3ZjI5ZiByZWxlYXNlMzEtbWFpbnQKKzgxNDc2IDZmZWUyNmM4OWY2ZTRiMmE3NjI5MDY2ZTMwNDkzNzRjODZhZWRlNTIgcHkzaworODE0NzcgNmRjOWVjODg1NDYzOTFjNzMxODE4YWJjNjdlNzFlN2Q2MTEwMDE5MCByZWxlYXNlMjYtbWFpbnQKKzgxNDc5IGVlNzZmMGEwNjVjMjRjOWZjYzI5ZDRlYTNkMmU3OTE1YmQ5Yjc4NDcgbGVnYWN5LXRydW5rCis4MTQ4MCAxZTA2YTZjMzEyMzQxYTMxZmVkZjg2YTcwMmJmNGYzODg5MTQyZmM1IHJlbGVhc2UzMS1tYWludAorODE0ODEgNjkyMDdmODAxYjMxNjY0NTQzYmE0OTFiNmFjZmJmMDEyYmI3OWEzMyBweTNrCis4MTQ4MiA0ZTQ5NTI2MzYxMTM0NWI3ODQwZjFlYWI5ZTJiYzQ3YjM0ZjViN2NjIHJlbGVhc2UyNi1tYWludAorODE0ODMgNTRiNTFhYmI2OTUxMjRkY2U3MTI2NDBmMDc5YmQwOTcyNzdkOGIxYiByZWxlYXNlMzEtbWFpbnQKKzgxNDg0IDFlOGM5MjMxNjQ2MzQ3NGU2YWJhNWY1NjY3M2QxODIzNTM1YTNiYzQgbGVnYWN5LXRydW5rCis4MTQ4NSBiMGRlZTMyYTFjNmIwOTVkZmFhOTM3YTk3M2QzOGI2Mzc0YTA0OGQyIHB5M2sKKzgxNDg2IDBiYzhmZmU2YmE5YWM4NWRmZjg1ZTEyMmUyOGQ0NzVkNGIxNDNlNGUgcHkzaworODE0ODcgYTBhNmU4YmZhYWY3MmEwOTM5MWE1MThjMmJkZDA3ZGNhOGU1NmM1ZSByZWxlYXNlMjYtbWFpbnQKKzgxNDg4IGRjYTNjYjE5ZGJkZDQ3MTI1YTdhYTlhMDYyMmE3ZDUzNDU2N2UyMDYgcmVsZWFzZTI2LW1haW50Cis4MTQ4OSAyMWZhMDlmMjUwZTMwMDZjZGMwYmM1Mjg1OWRkNTMzYjAxNWU1NzU5IGxlZ2FjeS10cnVuaworODE0OTAgNDBjYWQ3NTlhMzU1NDc1NWNkZTc5ODhmZGUwMTUxNjNiOTUwOWYxYSBsZWdhY3ktdHJ1bmsKKzgxNDkxIDc3NTA1NzljMzc1ZGExZDkyODg5NDY4YzA3MGViYWYyMGNhMjMzMTggcHkzaworODE0OTIgZTY0ZWExNjE5ODIwYzBiOWEzZmQ1NTBlNDkxNTkxYzFjNDg2ZTMyNiBsZWdhY3ktdHJ1bmsKKzgxNDkzIDAzNjAxN2YyZTc0YzZhNDZlNDllMjZiNzZlMTM4MDNlNDg0ZDExYzkgcHkzaworODE0OTQgMmYyNGEyZWY3MzMxYzYyZWRmMTYwOTI1MjIxZDM0MTNjNzVjYjMyNiByZWxlYXNlMjYtbWFpbnQKKzgxNDk1IDhhZDYxNzgwNTM1ZWZiNGFkZjg0MGY3NzdkZjkwNjg4N2QzYjIyZWIgcHkzaworODE0OTggYjAzOGZkYTU5M2Y2ZDU4ZTFlOTUzNjVmMWU5ZGQwYzNkMzVhMjZjMCBweTNrCis4MTQ5OSBjNTZmYjYzYzY0OGY0OTgzMjY5NGM0MTE0OTdkY2NlMmY2YmJjNDFkIGxlZ2FjeS10cnVuaworODE1MDAgZWJkYTY4MDNmOGQ1YzNlMWE3NjdlY2NlMTExY2Y1MGYzMzhmNTZkMiBsZWdhY3ktdHJ1bmsKKzgxNTAxIDkwZDYzMTQ2ODRkNDNiZTQ1ZTU5YjJiM2U4YjYwNzQxZjkyNjlhNWUgbGVnYWN5LXRydW5rCis4MTUwMiBlM2I1MzM4YmUwNTg4OTFiZDk1MmZmZGY2NzkyMTY2YzUyODQyMjI0IGxlZ2FjeS10cnVuaworODE1MDMgNGJlMjFhMDhkZDcwNzE2ZTY4Y2M2NDM2NWNmZjNlZTVkM2E4MzZjOCByZWxlYXNlMjYtbWFpbnQKKzgxNTA0IGJmMDRlYWYxYWY3NDhhODNiZDc0MmVmYjA0OTM0MmJhZGY5MmE5OTggcHkzaworODE1MDUgNjE0NDc2MGU4MzUwZDRjM2IwODdkOWYxNjM4ZTUzMzMwNjE0ODNlZCByZWxlYXNlMzEtbWFpbnQKKzgxNTA2IDU4NDkxOTExMTgyY2UxM2MyMTA3YTk4OTdmNTdjMDNiMzM5M2E4MTAgbGVnYWN5LXRydW5rCis4MTUwOCBmOTAzNjhjODdiMzNlNjg1MjllYTEwYmZjNzE3YzRmNGE0ZDBmMmI1IHB5M2staml0Cis4MTUwOSBhOGVhYjY3MDMyNjY2NGNiYWE4Y2RiMTgzNDQ3YThmMWRmZWZlY2IzIGxlZ2FjeS10cnVuaworODE1MTAgNjkzZTJiZWY0ZWUzYmM4MjA0YjM1ZDc3MzdlZTc0YmY3MmYzYzFjMyByZWxlYXNlMjYtbWFpbnQKKzgxNTExIDdmNDFkNzVhZDQzNWQyZDgzNmRmYzdjOGRhMGQxYzFkN2UzNDYzYWMgcHkzaworODE1MTIgYjczYmViZGZlNTI1OWMyYWI3YzM5YThkNzczNTNiM2ExMGM3ZjE2YiBsZWdhY3ktdHJ1bmsKKzgxNTEzIDcwMzI4N2E5OTkzOTE3MGZjMDMxMmMzMjdmYjcyNmMzYzYxOGVjYjUgcHkzaworODE1MTQgNGUwMDkxNGVjNDQ3YmJiZmY1NzU4NDFiMDFmNTBlNWJlZGJlZTlhMiBweTNrCis4MTUxNSA1YmM0ZmNmMDQxNDNkNmM1ZDI5OTI0YjNkYWI0NGU4NDA5NDg2ZmUyIHJlbGVhc2UzMS1tYWludAorODE1MTYgY2UyNjE3MjNiMzU2MmJhYmE4ZDI4MmI0NWFhZGU4ZTlmYzUxZmJkZSBsZWdhY3ktdHJ1bmsKKzgxNTE3IDc4MTliYTc3ZTQ1YzAwMDYzYzZhZTMwOThkMjcxMTNjNGMyMzU0ZDIgbGVnYWN5LXRydW5rCis4MTUxOCAyMjk3Y2Q1N2Q5NDVmMmZhOWM0YjY4NzliMzhjMWM3NjA0YzM5ZTk4IGxlZ2FjeS10cnVuaworODE1MTkgMjJjYWRmMjY0YWU1MjE3ZjIzOWU0ZWIzOTZkMzNjYWU2ODZiYWNjOCBweTNrCis4MTUyMCAxMzIxMmQ3NGNlMDA4ZTkwODRlOWNmMTlmMzA0NjI5ZTlhZmFjNzE1IHJlbGVhc2UyNi1tYWludAorODE1MjEgNTRiNDg4Y2JkMzdlMzkxNDFhNmZhMTY4MzBjMzVhNjQ5YmE1Y2I0ZiBsZWdhY3ktdHJ1bmsKKzgxNTIyIDc2MWFjOTcwM2E5NmMxNDFmMTczMzBhMTI0ODg4ODVlMzRhMmUyYzYgcHkzaworODE1MjMgZThhOTM5M2EwNzQ4ZDVkNTA0MjkwZTBkNjk5MjQ0YTIwNjU4ZDQ2NSByZWxlYXNlMjYtbWFpbnQKKzgxNTI0IGQwOWM5YTkzN2UxMGJmNmE3MTJmYTljYThmMmEwZGE5ZTQ3MjkyYmMgcmVsZWFzZTMxLW1haW50Cis4MTUyNSA4YWMzZDUyNzc0NWM0ZTNhYTdkODk2ZjkxMTYwYTE5ZWNkZjE4OTEwIGxlZ2FjeS10cnVuaworODE1MjYgNDcwODAwODBhYjYxOWI1NzEyNDk4MDI4NTFhYWQyYWIzYTM1OGNkMCBweTNrCis4MTUyNyA0NGY0MjIyZDkxYmQ3MGYxZDA4OTFkNzEzYWY1Y2M5NTAyYTE4NjdhIGxlZ2FjeS10cnVuaworODE1MjggNmRmZjNkOTIxMmE4NjVjMjEyODNhMTllN2JjZDFhMDdhZjhmYTMxZiBweTNrCis4MTUyOSA1NWRjOWVmMTVhYjFhMjQ1ZjQ0MzBkMGQyN2FiNTM2ZjNlOTk3N2Q3IHJlbGVhc2UyNi1tYWludAorODE1MzAgODJjMjQyNmY3ZjNlOWEwN2FmOTIxNDM0YWMzZTMzZDg0ZmZhZmU4NCByZWxlYXNlMzEtbWFpbnQKKzgxNTMxIGYxMzM3ZmU2YjdiNzc5ZWMyMzA1MTEzNGVmMzU0MjkyN2ZhYzhlNDQgbGVnYWN5LXRydW5rCis4MTUzMiBlNGFmNzAyZDYxYjdkM2NhZDc3YjE1NTA3NzNhMmZkMjYyM2I5MmM0IHB5M2sKKzgxNTMzIDRjMmQ2ZTFiODkwZWQ2Y2M0MzZhYzk5OWFhYzUyNmZiMWNkZTI3ZGMgcHkzaworODE1MzQgOTNjNWU2MjQxMzA5NjY4MDkyNDk4YzkyOWQzYTQ5OTQ2Y2ZhOWI2YSByZWxlYXNlMzEtbWFpbnQKKzgxNTM1IDA4MGU1NTA5MTZlZGNkOWE4NGE2Y2Q1ZTAxYmRmMTVjZDJmYTg5Y2MgcHkzaworODE1MzYgZjc4OGFmZjU3MmQxMWM5NTk4MjQ1Yzk3YzI2NGJmMThjNmU4ZDU5MCByZWxlYXNlMzEtbWFpbnQKKzgxNTM3IGJkNWY1ZGY3ZWQ3ODk0YzdhYWJlOWEzZjRhNmRjZTRkNDg0M2QzZDMgbGVnYWN5LXRydW5rCis4MTUzOCA2YTNjMmYwOTRiYmFkN2M3YmEyODYzMzBhMWVjZDQxZjAxOWEzZTBkIHB5M2sKKzgxNTM5IDhkYmJkOTBlZWRhODZlN2M2YTEyNWFlYWRiODZkNGU5MWU3OGRiZmEgcmVsZWFzZTI2LW1haW50Cis4MTU0MCA5Zjc5Y2I5OGQ1NWY0NGVkYWE5OTEzNjY3MzgyZjkyMGM0Y2M2YzdjIHJlbGVhc2UyNi1tYWludAorODE1NDEgODFhNTgwZDk0N2VmNGU4YWM4OGY5NmJlMjAwNzc0ODQzYzNjODk2OCBweTNrCis4MTU0MiAxOWIzZTQ4NTNjNzQzMjJjMGQ3YTk4ZGZhNzg4ZDRkZGYwYjlhYTY0IHJlbGVhc2UzMS1tYWludAorODE1NDMgNDlkNDk3NzkwNjA3ZjkyZWFmYTRmYzc4Yjc1ZDJmYmM5ZjRhZDhjOCBsZWdhY3ktdHJ1bmsKKzgxNTQ0IDcwMmQyNjFmM2EyOWFiZGUxYjg3NTVjMmUzMDRlZjQ2ZjgwNTMyYTkgcmVsZWFzZTI2LW1haW50Cis4MTU0NSA5YWVjNmFkNTNhMWI5NzRhYmYxMDRmMzRmYTE5ZmM4NDhmZDhkNmRmIHB5M2sKKzgxNTQ2IDliOGIxNDAzZjhkZGE4NTQwODYwNjQ1YzhmZDE1ZDk3NDVhMjAzNjggcmVsZWFzZTMxLW1haW50Cis4MTU0NyA0Zjk4MmU5NGFlMTZhYWJmMjA0ZDVkYjIzNmE3ZGFjYWRmMWFlZTA2IHB5M2sKKzgxNTQ4IDgzMjhjNWMzMjcyYzM1MTA0MjA5ZWUyNGFkNDRiMDk1NDgzMTU5ZGEgcHkzaworODE1NDkgNjAyNzAzZDA1NjBhZjUzYTBkZmNlZWNlMzk0YThmMDBiY2FlNmIwMCByZWxlYXNlMzEtbWFpbnQKKzgxNTUwIGZkOTk0NjdhYjRkNTk2NTAyZWQzZDY2N2Y1OTViZmQzMzMzMjgxNGQgcHkzaworODE1NTEgNTZhNTQ5MzZkYTFkYmQ0OTJlMWI2MjY2ZTY3Mjc4NjU2NTI5MWFkNSBsZWdhY3ktdHJ1bmsKKzgxNTUyIGM0ZjczOTc1YTQ0MGE5MmRlMTgwODU3ZDFlZjA0ZWRmN2VkN2E0Y2IgcmVsZWFzZTI2LW1haW50Cis4MTU1MyBlM2FkMWI4YzQ1MjEyOGZkNmJlNDA4OTllNjc3NTllOTYzNjI1ZTMzIHB5M2sKKzgxNTU0IDgxODBhYmJkMDdjYjJlNjBhZmFjMjVhMzhkOTZlYzQ3YmJhZTQxOGYgcmVsZWFzZTMxLW1haW50Cis4MTU1NSA0NzQ1ZTEzYWE5ZTQzNjQyOWE3OWNiNDVhOTM3YWEzNzdkZGJmYzZkIGxlZ2FjeS10cnVuaworODE1NTYgN2NmYmZmYTZhMzBiMjgyYmE0ZWQ2NGU1NzYxZjY5ZTNhNTYwNDZmOSBweTNrCis4MTU1NyBjNDJmZmIzZDYzYWZjNzhhMTVkNGU3MGQyYmIzMjY0ZTA2YmFjMWEwIHB5M2sKKzgxNTU4IDNmNGQyYTgxODEwYzVjYzdjYjEzZTU2MWQ3MjViNjM0OWM1ZTE2M2MgcmVsZWFzZTMxLW1haW50Cis4MTU1OSAxMzA3ZDk3ODc4OWZlZmMzZGFiMTExMDYwYjg0YWEzYmRkZTQxYzJlIGxlZ2FjeS10cnVuaworODE1NjAgN2YzMTJmNjBmZGIwNTE4ZDU1NWQ5YzhlMGUzOWJlNjhkNGJjMDlhMiBweTNrCis4MTU2MSAwMTQ4MjcwMDQzNGQ4YTA5YTNlMzYyMzNjNzc4OTJiN2NlMzZjZTIyIGxlZ2FjeS10cnVuaworODE1NjIgNTU1ZmY1OGNiN2NiOGE3YWUzNDEyOGY0NTZiMmVmMzUzYTBmNDNlNyBsZWdhY3ktdHJ1bmsKKzgxNTYzIGRkYTBlMWFkZDhiMzEyNmIxM2Y2MWNjYWFjNGIwNjNlMGU5NjNjODQgbGVnYWN5LXRydW5rCis4MTU2NCBjMjdlYWQ1MWM3ZGM2MzIzMTlhYjM1YTNjNDk2ZjIxMWY1ZDFkNjM2IHB5M2sKKzgxNTY1IGNmZDIxNWQ5NDk5YzNlYTFmZTUzMjE5YjI0OWI5NTNlMDZhZjY4M2QgcHkzaworODE1NjYgMzExYTI1M2I1OGI3NWQxMGJkMDRmMzBjMDFkZGEyMzAwYjA2NGJlMiBsZWdhY3ktdHJ1bmsKKzgxNTY3IDk2YTdhM2NjNTg5N2ViNDA4Y2NkNDk0MzM2YzI5MjI4ODBkMWE3MWEgbGVnYWN5LXRydW5rCis4MTU2OCA2Yjg5ZGUzNmE3NGZjMjkwZmFhYTBhYjhiZDUwYzRjNTk3YmFiMzkwIHB5M2sKKzgxNTY5IDBjY2YwZmRjNTk2NjUyZTEzMWI4NjgzNWU4ZmRjNTMxMzc4Yzc0NjcgcmVsZWFzZTI2LW1haW50Cis4MTU3MCA0YjE0MmY3YjM4MTJkMDk5Y2I4NjQzMDVjZWEzNjFlYmE5ZGRkZmExIHJlbGVhc2UzMS1tYWludAorODE1NzEgNWNjYzcxZGNiNWRlYTQ0MTdkYjg1Yjk0OTg2ZDFiOTAwNzBkYjA1ZCBsZWdhY3ktdHJ1bmsKKzgxNTcyIGM5YmVjY2I2M2VhOTA5YTQzYzAzN2RmMjJhMzBmNGJkYWE4YzEyZmEgcHkzaworODE1NzMgZjUwMWJlNjM4ODc4YTE1YjJmY2JjNTEzNTkxZjk5ZmQ3Mzg5MmE2MyByZWxlYXNlMjYtbWFpbnQKKzgxNTc0IDI1ZjJhMGYwZTlkZWJkMzA4YTIyMWI5YmFhYTk3MjI3NWFlOWJhYzggcmVsZWFzZTMxLW1haW50Cis4MTU3NSA1Y2MzYTBjMTQ4MDJlYmJhMDUwNjBhYTI3NDU0MWUzMjM5MTA2YTc5IHB5M2sKKzgxNTc2IDdmZTliNzkwMDU0YmFkYjg2NTRlMTg5YTczZGQyZmRjMGI4NTU4OGQgcmVsZWFzZTMxLW1haW50Cis4MTU3OCA5NTI2YTkwOGEyNThkYjg2NmJhNjVlNzI4Y2FmOTAwNDJjYmMwMDBlIGxlZ2FjeS10cnVuaworODE1NzkgMWE1OTI4YjI1OTNjOTBmNzY4Y2MzMTMzNGU3YjhhOTczYzdiNGZjYSBsZWdhY3ktdHJ1bmsKKzgxNTgwIGJkOWNiMjRiYTY4YjQyZDUzMGZiOWM3MTlmNDY5ZWI4ZDRhMzVhYzEgcmVsZWFzZTI2LW1haW50Cis4MTU4MSA2MjE5NDE1NTc4OTgzNmVjOTI1NjE1NThiMGMxYWU2NDVmZTA0NDU2IHB5M2sKKzgxNTgyIDdjOTQ3NzY4YjQzNWQ5Mzg5OTk2ZGQ1YWNmM2Y4ZjhlMzJkNzJkNjQgbGVnYWN5LXRydW5rCis4MTU4MyBmMTJiMDFlNjhmNjQ0ZmMyMGRkOThiOWI0NDlkYWIyODY4MTI0NmI3IHB5M2sKKzgxNTg0IGI2OTdlMjFkMWU3ODY3ZjkyMmEyOTVkYzZkM2ZjYmUzMmNjOTc5ZmMgbGVnYWN5LXRydW5rCis4MTU4NSBmMDAwNzU0Yzg5NDNlMTgwNjkwMzQ4ODE5ZjA1ZjBiYmVlYzhlMTQyIHB5M2sKKzgxNTg2IDQ0MTU1OTliNzAxMTZmZTQ5MTQ5ZWNmNjQ0YTE2ZWMyMGNkNzVkNzggbGVnYWN5LXRydW5rCis4MTU4NyAyY2ZiMThmMWMyOTMzY2Q1MDlhNWE0YTQwZjBiNzM2YjBlMmJmNTcyIGxlZ2FjeS10cnVuaworODE1ODggMzA4ZWRmMTFjN2NmZjY4NTJhNjE0MTdjMjA1NDUxOTFmMzMzNDI3MCBweTNrCis4MTU4OSA5YTA0YmRjNDgwODk4M2YyZjE3YWE5NTk2YzE0NWI5MTFhMWI5ZDYxIHJlbGVhc2UzMS1tYWludAorODE1OTAgODUyZDVlYTYyNWU3NDk1MjMyNTRhZDg2MGRhNjI2ZTIxYzVmODk3NCBweTNrCis4MTU5MSA0OWFiNWRiYzRmYWM5YzQzYjRiNDM0MzQyNjgyMWY4ZTJhNTJiYWNlIHJlbGVhc2UzMS1tYWludAorODE1OTMgZDVjNzlkODliMzkzYWZlNmY2Y2Y2ZmY2YWVlOWE0ODE3MGUwYmE3ZCBsZWdhY3ktdHJ1bmsKKzgxNTk0IDJiNTg3ZTdmMDI5OWI5ZjhkNjExOTBhMTk0YTA4Nzg1NGRjNzMyMjcgbGVnYWN5LXRydW5rCis4MTU5NSBiNzk5Zjg2MmZiMjE4YjQyYmM3Yzc0YzI1MmI5NDIxOWVhNDU1NjcxIHB5M2sKKzgxNTk2IDMyMmJmNGZmNGQzZDZlZmE1NDQ4YzJiYTk5YTM5NDI5Y2VmYmQ2ZWMgcmVsZWFzZTI2LW1haW50Cis4MTU5NyBhOTE3NDczMzZlYWU2MDI0ZjY2Mzg2MTgwYzc0YzNlOTRlOGQzN2JiIHJlbGVhc2UzMS1tYWludAorODE1OTggMDM3MmI0YzdiOWY0ZjZhMjdmM2RhZTg3MjFkZDRlZDQyNjMxOTM2NyBsZWdhY3ktdHJ1bmsKKzgxNTk5IDE2NDE5M2FkZTRiYWYwZTc0NjUzMWZlZTZiYWZlM2ZmZjZjNGFhMGUgcmVsZWFzZTI2LW1haW50Cis4MTYwMCA2M2U3OGZjZjdmOTRhY2U2NjFjMDc0N2U4OTUzZmNmMjJiNzI3MDI3IHB5M2sKKzgxNjAxIGE3YTliNThkMWMxODY3NTI4MDdhY2IzYTgzYmE0YmVmM2E2NzlmMDkgcmVsZWFzZTMxLW1haW50Cis4MTYwMiA2ZTcxZWNhNjI3OGNiNTc1ODMxOTJiODhhOTBhN2M5YjY5ZDFjOGU5IGxlZ2FjeS10cnVuaworODE2MDMgNWQ0M2I5NjYzNmM4ODg3ZmNjY2JhMjI5YWZmNGJmNTc5NzNiZGIzMCByZWxlYXNlMjYtbWFpbnQKKzgxNjA0IDA0NzBkYzYzZDEyYTk4MDNiZWNiMDYyMGI3ODdmYTMxOTY5MmJmYzcgcHkzaworODE2MDUgOWZhNWVkNGNhMGJiNWI0OGNhMGUzYTdjZWI1ZmNkZTkxYTdmNDVjZCByZWxlYXNlMzEtbWFpbnQKKzgxNjA2IGVkNzlkYTNhNTkxYzRhODA5Yjg2MjQ4MzBlY2JhZThkNmUzMTI5NzQgbGVnYWN5LXRydW5rCis4MTYwNyA2YjdhZjVhMjVkMmU4ZDJhM2MwNDhjNWVmYzY4ZjdiNTM5ZmYyNmQ5IHB5M2sKKzgxNjA4IDA1ZDZiMjVkZDE5NzE1YWI4NTg3ZThlN2I3Yjg5Njc1Nzk2ZmI0OWIgbGVnYWN5LXRydW5rCis4MTYwOSA5YTRiMDJiYWE3YzQzMTMwZThlMmIwYmZhYzU3MzVkYTVmZWQzNDdkIHB5M2sKKzgxNjEwIDNlZGZhZDI1NDljNjE3OGRhMTM0NzQ4Yzg5M2Q3ZmJlM2RkODE0YzcgbGVnYWN5LXRydW5rCis4MTYxMSA1ODMzNzk1MDYxYzVkOTcwODVlOTU4YzczNDZmMWFjNDc3NTgwYjRmIHB5M2sKKzgxNjEyIGU3NjZjMGQ4NmNmZjlkMWU1YmE2ZTNhNTdjY2RkMTgxZDBmYmE1MDMgcHkzaworODE2MTMgNjZiM2VkYTYyODNmZWFjNmE5YTQwMzFmM2UwM2NkNTk3MmU4YjQzYSBweTNrCis4MTYxOCAzMjQyYTBkMjJkZTYzOGFiNzJkZDQxOWY5YTRhMmQyYzllZDc0NGZiIHJlbGVhc2UyNi1tYWludAorODE2MTkgY2FjMDBjYmJlNzcwOTQzMzliYTFhYmMxOTNlZGYxYmQyZTJjOTMwZSByZWxlYXNlMzEtbWFpbnQKKzgxNjIwIGIxYjMxNzc1ODY3NjUzMmM2NTJlM2ZiYzBiYjcwZGU2MTYzNWE5MDEgcmVsZWFzZTMxLW1haW50Cis4MTYyMSA3OTQ1MDQ1YzNhNzU5MjA1ZTI1ZTE1N2FiNjA3OWJlOTUxYzdhYjcwIGxlZ2FjeS10cnVuaworODE2MjIgYzk2MzQ3OGI5MDkyZGVjZWY0MTNjZjYwYTk5MjkwZDZhOWQxYTM2MyByZWxlYXNlMjYtbWFpbnQKKzgxNjIzIDhlMjFjNjgzMWM3ZmE2YjNmOWRiZGNiZWY1MTM2MTkxMWYwYmQ3YTUgcHkzaworODE2MjQgOGExM2Y3NzNhOTc2MzllOThmYzdkZWExN2Q4NTc2MjJkMTZiNzRhYiByZWxlYXNlMzEtbWFpbnQKKzgxNjI1IDNlNjQyNWMyMjFlY2ZjNWE1ZTA2MDA4ZmEzZDNlYTJlNThiODIzODAgcHkzaworODE2MjYgZWJiOTEzMGFiMGM0NThmYWEwNmVmNTMxNDk0OWQ2MTY3Y2Y3NWI5YiByZWxlYXNlMjYtbWFpbnQKKzgxNjI3IDU3YjkwMzUwMzcyZjhjMDI2ZjZjNmU1ODBhZWEwYWRiNDkzOThhYzQgcmVsZWFzZTI2LW1haW50Cis4MTYyOCA3MTQ2NTNkZDRhYWRhZDQ1M2NjYWI5YmFjZGVjMTFlZTA4M2MzN2UyIHB5M2sKKzgxNjI5IGRjMjc2OGM5OThkZTEyNTBhZWJlYWZjZmRjYzJjMzQzNzBhNWQyMmIgcmVsZWFzZTMxLW1haW50Cis4MTYzMCA2NjEwOWQwZTRlNmRmMWRlYTRiN2Y5OGMwYTExYjNhZWEyZjFhNTg1IHB5M2sKKzgxNjMxIGViZDY1ZWM1NGQ3ZTliZWY1ZDZkNWEyOGNkN2EwYWM1MjI2NTAyOWUgcmVsZWFzZTMxLW1haW50Cis4MTYzMiA2MmNhNTQwZDhiNmU2MTUxYWQxMmU5NTk4MjA5YjcwMDRmN2U5ZWQ4IHB5M2sKKzgxNjMzIDlmOTJjYmFhNTM5ZDZhNDNjNTgyMjk1ODNjY2ZiY2FiM2ZlYjJmNzEgcmVsZWFzZTMxLW1haW50Cis4MTYzNCBmODEyNzFjMThlYjAxYWRjNjU5OWI5MTY0OGY4MWVmYTYxYjQ3OGUwIGxlZ2FjeS10cnVuaworODE2MzUgNTNlZTQ3MzIyZGQyYTJjMmEzNDgyNmIxYzQzNTA0OTYxNzY3NGJjMiBsZWdhY3ktdHJ1bmsKKzgxNjM2IGQ2OWIxYTJkOWJmMGVmMTA0ODFlMzQ3ZjhmMzFmYmYwOTQ2YWE3ZTQgbGVnYWN5LXRydW5rCis4MTYzNyBkNDI2MGRjYWZjN2ZiNjJiNTM3MDNiYzQ0ODBhYjBiMmIxNGYyZmFlIHJlbGVhc2UyNi1tYWludAorODE2MzggOWMwYzI3YTliNzFjNzljZjIxMTZmZTZjOTczNGYzOGMyYzFiYmE2MCBweTNrCis4MTYzOSAxMDk3NzcwOGRiMmVhYWIzZWM5NTRkOWYwYzA3MWJhNjM4NzQyNGQ5IHJlbGVhc2UzMS1tYWludAorODE2NDAgODk4ZWJiMjk5MGRmYTU5ZjE5YTdmYzc5YTIwZTY5YmViZjdiNGI3OSBsZWdhY3ktdHJ1bmsKKzgxNjQxIDJkZTcxMjMzYjY5YjBkMjAxNmVjNmFiNmNjODU3MTU2NDVhZWU5OTkgcmVsZWFzZTI2LW1haW50Cis4MTY0MiBlNGNiYmJiNzg2M2I5MmRiOWJhNjczZDllY2MxYmY3MjllNzAyYjRkIHB5M2sKKzgxNjQzIGNmZTEzODYwMGY2NGM0YzdiMTVlMWUxYWM4MGIyN2VjZjQ3ZjM2OGIgcmVsZWFzZTMxLW1haW50Cis4MTY0NCBhMDNiOTU2ODM1OWM1NWRkZWMyOTdhM2RmZWM0ZWVlNDk4MWU0OTAxIHJlbGVhc2UyNi1tYWludAorODE2NDUgOGUyOTRkZjBlMzgyYTQ2YjFhZTA2MmUxZTgyMWM4YjRkYmM2ZjM3ZCBsZWdhY3ktdHJ1bmsKKzgxNjQ2IDdiMTEyNmI1YmUyZDZmMGQxNDUzMDM5MGQwNzNhM2U3MWI3YTAzMWUgcmVsZWFzZTI2LW1haW50Cis4MTY0NyAzNzllZTIxMjE1M2UwM2Y4YWYwZjYwY2M2ZmI2N2RiYzdhY2Y1MjZjIHB5M2sKKzgxNjQ4IGQyMGRiM2VlODQ1NzU1ZjVlNjdiNTBjYTY5ZWI2NjVjMjk3ZGZhZWUgcmVsZWFzZTMxLW1haW50Cis4MTY0OSBiZDQ3Y2QxZjliYzJlOGJjYzI2MzA5ODA5YWRlYTUwYjFjYmMyYWIyIGxlZ2FjeS10cnVuaworODE2NTAgMzRhNjM3YmZkNGJlNzhiOWU0NjFkNGYzMzNjNDBjY2U4N2U4MWY2ZSBweTNrCis4MTY1MSBlYTQzYjQwNjQ1MGY5NGZjMjZiZWVlNTdlOGYyM2MxZjc2NGRiYWYwIGxlZ2FjeS10cnVuaworODE2NTIgM2I4MDcwOTEzMTY5NDk2ZjhhYjNjZTA1NDkwYTQ5NzI1NDJjNzVjZiBsZWdhY3ktdHJ1bmsKKzgxNjUzIGI0N2M0Y2YyNWYwMjJkNzU5MDYwNDFlMzM4NmE4ODI2N2M4ZTdlODkgcmVsZWFzZTI2LW1haW50Cis4MTY1NCBjM2FkYjkxY2E1ODk0NzA5OWViZmQ4ZjExNWQyMzUzOTA0NmQ0MmFjIHB5M2sKKzgxNjU1IGRmZjVmMDliNWE4NjAxODJkY2Y2Y2E3MzJmNDFhNTU1MDQ2NWU0NTIgcmVsZWFzZTMxLW1haW50Cis4MTY1NiA5N2VkZjBlYTAzZjliMTRlMmE0OWQ0OGE2YWExNWNhODBjZjMzMmU2IHB5M2sKKzgxNjU3IGRmYmQzNDVmNTNmMDNhNTg1ZTdjMDQyMjY1ZDcwYmQzYzVmMDIzNDcgcmVsZWFzZTMxLW1haW50Cis4MTY1OCA2YjA3Mjk0YjEzNTIwZTJkZjU2NTZkM2QwYmQxMjVjNTY3ZWRiMmNiIGxlZ2FjeS10cnVuaworODE2NTkgZGQzNzhiODg1Yjk0MDM2NTQwZjJjOTU5NTAxYWFlNzQyZTlmOTViNCByZWxlYXNlMjYtbWFpbnQKKzgxNjYwIGJiNjNlYWVmYzVhNjhkNzhmZGQ1YWE4MjJiMmU2MmM5NGM4YjRiNzIgcHkzaworODE2NjEgODMzZGU3OTg4NWU0ZmM5MmM2ODQwZjhhMTJmN2JmZDZmMTkyNTI1ZiByZWxlYXNlMzEtbWFpbnQKKzgxNjYyIGY2ZTkwMTgyNjg2YmM2MTVkNDdlZTg0OTZjOGQ5MDk4MTExM2Q4NzkgbGVnYWN5LXRydW5rCis4MTY2MyAyOTFiMGJiNjNmYjc2YmFkODQwMDMxMWFjNTc1NzIxODc4Zjg4NTllIGxlZ2FjeS10cnVuaworODE2NjQgZWQ5ODNiMTE2YTdkZTAwYWQ3MWIyZjU3MGM0Y2M3OTc1NDkwZDEyMSByZWxlYXNlMjYtbWFpbnQKKzgxNjY1IDhiYmQ0ZWI0ZWZjNDFlM2MzNzc3YzM1YjIzZGVhZDFhMzgzNGZkMzcgcHkzaworODE2NjYgY2VhNWVmNjgyYmRkNGM2ODM1NTBhMGI5MmE5ZGZkNzBkN2I1Y2I0YyByZWxlYXNlMzEtbWFpbnQKKzgxNjY3IDlhZjYwMGE2NjExNTcwMTA4OWZjNzVjZDZjY2YwNDg1Y2M1ZjhmNzcgbGVnYWN5LXRydW5rCis4MTY2OCBhZTExZjU2YWQ1ZDc0N2RhZjIwNzFiN2JmNzMwZmI2ZDc0ZTk0OTdiIHJlbGVhc2UyNi1tYWludAorODE2NjkgMWI0YzMwNzQyYTI0YTNjNjc5ZTgwYjUyOGQ5MGUzZTI4MmJiMjljYiBsZWdhY3ktdHJ1bmsKKzgxNjcwIGJmYmYyZDY1MGYyNjkzNGQ3Mjg5OWRkZWRmYzhlMWZkMzJhM2EyMTMgcHkzaworODE2NzEgMDUzNGNlMDFiYTUwMjliM2Y1NDYxYmE1M2ZhNGUyMjQ2YjM2M2ZjYyByZWxlYXNlMzEtbWFpbnQKKzgxNjcyIDg4MjVhN2U2YTVmMDFlNjk3ZDM2MWVmYTU0NTllYjIxYmM3NTk1NmQgbGVnYWN5LXRydW5rCis4MTY3MyAzNzk3ZWU1N2QzZDZlMzg1YmVhNzQxNDYzZWQ3MjZmODNiMmI4ZjYxIHB5M2sKKzgxNjc0IDE2ZmJkZjEwZDEwMDE4ZmNjZGM4M2YxMzA1M2RlNjkxMjFjMzQ1ZmEgcmVsZWFzZTI2LW1haW50Cis4MTY3NSAzZDExYmE3OTg5ZGYwYjUwOGVjOTBmNmFkODUzOTAwYjYzN2UwMzEzIGxlZ2FjeS10cnVuaworODE2NzYgNWUyOGEzZGZkZWVmM2Y0ZjFjNjc0MjVhZmQ2NDQ4YWRjMDllY2JmNCByZWxlYXNlMjYtbWFpbnQKKzgxNjc3IDI1YjQxNjNmZmUzZmQyZTY5ZDc1YmVlODAyN2M0YTQzMGJlNmMwMTUgcmVsZWFzZTMxLW1haW50Cis4MTY3OCAzOGRkZWNjZjAyYTk0MjI3YzUyZWY0ZmQ3Yzk3OTAwZmU0MmM1MzIwIGxlZ2FjeS10cnVuaworODE2NzkgMTFhY2M1N2Y1ODA0Y2FiYzBjMDg0ZGNmZjY1ZDAxMDVkYWU1MzkyOSBsZWdhY3ktdHJ1bmsKKzgxNjgwIDZlMTIwZDkzMTEyZWNhNDJmN2Y0Nzk2NTBiZDg5MGIzNTg1NWU3M2EgbGVnYWN5LXRydW5rCis4MTY4MSA1MzJlOWU2YWM4MjVmMWNmYjM2YWY3NDYzZmQ4YjdmYjhkN2I1ZjE0IGxlZ2FjeS10cnVuaworODE2ODIgMjY4MDMxNjhjZThhNzQ3MmRmNWFkYWM5M2E4OTAzOGFlZDhhOTA4MiBweTNrCis4MTY4MyBjYjRmYTNlNGI4ZDU3NjgwMTlhNjk1NGY3MzVmYWI0NWI5ZDFkYWY0IGxlZ2FjeS10cnVuaworODE2ODQgZGQ2NjM2ODIxN2MxNjI2ZTMxZjRiZWJkODQzYmM5YWVkODNkYTEwOCBsZWdhY3ktdHJ1bmsKKzgxNjg1IDIyYzBlMjI4ZDVhN2MxMmY2MzQzNjMxYTMwNGFiZDhiNjk0YmJiMWYgcHkzaworODE2ODYgYmYyMTAzYTIyZTAwNzhlNmEzZDRhNWQyYjNhOTE0YmQzMGY5ZTM0ZSByZWxlYXNlMzEtbWFpbnQKKzgxNjg3IDNiNjdmYTM1ODVmMDdjNTUwN2U5MTViNjAzODE3NWRiY2M2OWVmNDYgbGVnYWN5LXRydW5rCis4MTY4OCA5ZmE1NTkwMjU5ZjQ2NGIwZDU0YWRhYTQ5NTRmYTU4NDlkNDg0ZjMyIHJlbGVhc2UyNi1tYWludAorODE2ODkgMDc3ZDI5Mzg0Mzk5MThkNjNhY2QwMWY0MjFkM2M5OTU4OWJiNmQwNiBweTNrCis4MTY5MCA3YjU5YjFmNjMzY2I0ZTI2OGEyZmQwOGI2OTI3MzdhM2YxNDg4YmE1IHJlbGVhc2UzMS1tYWludAorODE2OTEgZWFjYmU3NzRmMDI5ZTRkODllN2ZhNDc3YWM5YjQzZTUxOGM0NjBhMiBsZWdhY3ktdHJ1bmsKKzgxNjkyIDQxOTkwMWU2NWRkMjE5ZGE2OGVlZjBiYWZhNDk2NjY3YmY4MjMzY2QgbGVnYWN5LXRydW5rCis4MTY5MyA4MjQ1NjgzZTZlYzYxMGNiZTkwZjczYTlhNDg5YTAzZDM1MzhlMDk1IHJlbGVhc2UyNi1tYWludAorODE2OTQgMTA5YTk4ZjlmY2RkZDM0YmJhOTZlZGNmNTA1ZTJiYzlhYWE4OGNjYyBweTNrCis4MTY5NSBjZDE5MmQxZmNkNjc2M2IxYzNjNWQxYmEwN2M3M2I4MjQ2YzY2MDRjIHB5M2sKKzgxNjk2IDg0OTg4YmI5MWZiZjYzOTliOGFjNjJmMmNiZDg2MGE0NjI0NGU3N2YgcmVsZWFzZTMxLW1haW50Cis4MTY5NyBjMTYwYWYwOWM1YjAxNjVlZjNkMTJkZDc1MTMxOWYwN2EzOTE3ODU5IGxlZ2FjeS10cnVuaworODE2OTggMmIyNWI1MGVhZWFkZDU1ODljNTk5N2FjNGI3MjgyODNhNTMyMjM3ZCBweTNrCis4MTY5OSAwYzc3NjRhYTY5NGExODZhNDEwNWQ0OWJhNGQ5MGRhZjUwODYzMDkxIHB5M2sKKzgxNzAwIDRjMGIyYmJkZDgyZDE3MDQ3YThjMWY1OTI4MTBhNmE4ZmFjNDQzZTEgbGVnYWN5LXRydW5rCis4MTcwMSBhODBjMWI5NjRhNmZlOTZmYjlmYmI4NmQ3ZGQwMGFkN2VmNTVmMzY3IGxlZ2FjeS10cnVuaworODE3MDIgYmJhZjYwNjJmMjQxNDM2YzljMDg4MDM4MTlhMDU0ODU2ZjQ3NjNhOSByZWxlYXNlMjYtbWFpbnQKKzgxNzAzIGYyMTRlMWJmMDMxZDI5Nzc1OWQyNzFmZGYxOGMyNmVmOGEwMzNlNzMgcHkzaworODE3MDQgNTJlOTJlNzdiMzExNGQ0N2Y5MzE3MjczMzA0MDJmMDg4Y2Y4MDNiZiByZWxlYXNlMzEtbWFpbnQKKzgxNzA1IDczNDQ0OGU4NTZhYTdjNmNlYTAxMGJjMTUxYThiZGU3NWJlMzRhYzYgbGVnYWN5LXRydW5rCis4MTcwNiAwOTE3NmQwYmRlMzg0OWUwZDFlOWUzOTlmOGIyMzkzM2ZhZmY4NjM1IGxlZ2FjeS10cnVuaworODE3MDcgZDc1NDFhNDkwY2JkODQyMzVkZWU3ZGUyMWFiYjc0OTY1YjFjMzVlMiBsZWdhY3ktdHJ1bmsKKzgxNzA4IDliYjVjMjJlZjEzNDIzYzVmMjJjNDI2ZTE4NTliMWVmN2E5ZmQyNWQgcHkzaworODE3MDkgNWNkZjI2NTc2ZThlYTFmZDQwNDE3NGE5ZTNiNzlhMzQ2NDJiNWMyYiBsZWdhY3ktdHJ1bmsKKzgxNzEwIDE0MmNiNmY2MGZkN2U5NTFjNTJjNzUzN2Q2ZGVlNjIwNDQ1ZjRmZmMgbGVnYWN5LXRydW5rCis4MTcxMSAyM2VkODM3NjE1YWFiNDllMTA1ZTA5MzYxMDE2MjgzYjYyNjJmZGQyIHB5M2sKKzgxNzEyIGRkYTliZWU1Yzg0YTAwMGQwOGMxOWM5YmE2MGQ3NmVkMDE4NDUxMjEgbGVnYWN5LXRydW5rCis4MTcxMyA2MDYxM2U4MWZiMWU4NTJkMTNiYzdlYTcyOWZlMDdlNTY0YWJkNjk2IHB5M2sKKzgxNzE0IDU5MDllMWY3NmJlNzQwZDYyYzJhMDg0NGUwN2E3MGU3YzkwYjg4MmUgcHkzay1jZGVjaW1hbAorODE3MTUgMmI1NzAyZDg4ZjI3NWU4ZmEwNzliZjdlZTI4ZmFiN2FkODQwYTNmNSBweTNrLWNkZWNpbWFsCis4MTcxNiBjODg2NDgyNzcxMzhmMWJjNWI2YzBiYzUwZjI5ZDQwMTM2NjlhMmExIHB5M2stY2RlY2ltYWwKKzgxNzE3IDZiNTAxM2ZlYTgxYmJmMGVmNTQ3ODgxYmYwM2MwMTFkYWJiMTRkOWIgcHkzay1jZGVjaW1hbAorODE3MTggNjFmNTQ2ZTg2MWMxMmY3NjE3Yjk4ZmNmZTU4ZTUzNmJjOTAxZjRmNiBweTNrLWNkZWNpbWFsCis4MTcxOSAwODI5ZjYwMjA4MGI5ZGI3NzJlOWY0YzJkNjcxY2YzOGUyZmUzZmQ5IHB5M2stY2RlY2ltYWwKKzgxNzIwIDZmMWYwNWM3MjViN2MwZjU3N2ExZDZiZWEzZmFiZmQwNTJiOTVlODIgcHkzay1jZGVjaW1hbAorODE3MjEgMWZkMzY1ZDM2OTU5NjJmMzFjOWEyZTQ2OGU5M2RhMGYxMTEwOGExMCBweTNrLWNkZWNpbWFsCis4MTcyMiBhNDA5YTVhYjgzYmJjYjJjNzhlNWMzZDk1N2JlNWFiNzM4NjE1ZmQxIHB5M2stY2RlY2ltYWwKKzgxNzIzIGE1NjEwNTQwMWQ1MjZkNDIzN2RkMWJmM2ZlYThiYmFkOTQ4OWVhMDcgcHkzay1jZGVjaW1hbAorODE3MjQgMDljMDVhZDQ1YjVmMGJkZjcxODkxYzBiODBjOTljZmY3MWU2OGU5NyBsZWdhY3ktdHJ1bmsKKzgxNzI1IDA5YzA2Y2EyN2Y3Zjg0NmNlZDM4MzYwYTljNmI1ZWFjZmE1MmQ5MTYgcHkzaworODE3MjYgNDNlOWEzZTYxNzk2ZTZkOGQwMDJkNjEyYzIzN2UzNmQyZjU4NjFjYiBweTNrLWNkZWNpbWFsCis4MTcyNyBjYjUwZGI5NDEyYzcwNGM4ZTc3YTQ0MDE1ZDE0YmRhNWJhM2VjYzk4IHB5M2stY2RlY2ltYWwKKzgxNzI4IGJlNTg4MTRlMjVkNzg1MTUyZDhkY2IyOGY5YjE2NDIxODJiZWQxMWUgbGVnYWN5LXRydW5rCis4MTcyOSAzYTU3MWZkOGMzYmVhMGIxYTBhZDMxNjllNTZhNTdhOGYwNjc5MDdmIHB5M2stY2RlY2ltYWwKKzgxNzMwIGVjMTc0ZjQyZjE1YmQ5MGRkZjJkMTU2YWQxN2FkZTBmM2FjMTBlYzUgcHkzaworODE3MzEgMGUzZWM0MTg4NDVhZGM3NTU3OGNmOWQxYmI3ZDgyZmExYjU1Y2I1NSBweTNrCis4MTczMiBhYTVjZTg2MTVjNGZjNzA1MjZlY2Q0OTFkYWVmODU1YWNlYjkxZTJhIHB5M2stY2RlY2ltYWwKKzgxNzMzIDJmMjgyZjhmOTM4ODQ4ZDMyMTBmYzNiYjI1MGI1YjExNmU2YTRhMGMgcHkzay1jZGVjaW1hbAorODE3MzQgNzZjZjRhY2Y3YjQzZjJkNjI2MjNjNTU5MjAwYzFmODZkN2UyOGViMyBweTNrLWNkZWNpbWFsCis4MTczNSA5ODZiYTBlYzJjNTVmMzUwNTVlMGM5YWZhMTU4Y2UxZmM2NTMxNThkIGxlZ2FjeS10cnVuaworODE3MzYgOGZhNGE1ZTVhZjU1MmRmNzhkOGU0M2VkODMwZWJlMDBiMTk1NmUxZiBsZWdhY3ktdHJ1bmsKKzgxNzM3IDA2YmQ0YTQ0ODM5ZDk2ZDU0NjBhYTIzNDQyYjY1ODdiNjcxNWIwZjQgcHkzaworODE3MzggNzJkYzBlZjM5NGFjYmI0NjRlYmZhY2IwZDViMTg4YTI2MDAyNGExMyByZWxlYXNlMjYtbWFpbnQKKzgxNzM5IGY4NmM2YTZlMTc0NDE0ODIyMzY4ZDFlMzJjNWI1MGE2NGFjMmM1MjEgbGVnYWN5LXRydW5rCis4MTc0MCA2N2MzM2NiOTYyMmRhOGVjNDI2NTQ2ZjBjZjU0NjkzNDU0YzgwYzM4IGxlZ2FjeS10cnVuaworODE3NDEgZTEyZDg3YzQ1NTkxOThlMTZlYzZkMTIwMDNhMjY5MzFlYmIxNGRiMCByZWxlYXNlMjYtbWFpbnQKKzgxNzQyIDFjMzBmOWViNDBiODI2MDcyYmQ5NjY0NzZmODhjNTlhMTNmOTZkY2YgcHkzaworODE3NDMgOTEyNTE3Y2NkYjNmZDZmYjg2NjQ2ZWFiMGU1MjA4MGU0ODA2NWE0YSBweTNrCis4MTc0NCAzNzIxZDRlNWIyZWVkMzc0OGRkMGRjMjQ5ZTg5OTQ5YTMwYjkyODQzIGxlZ2FjeS10cnVuaworODE3NDUgMzY2MmQyYjVhZmFhZWRkYjVkZGRjNmM4ODg5NzkwZmY0ZjVhZDc0ZCByZWxlYXNlMjYtbWFpbnQKKzgxNzQ2IGQwZDA1N2I1ZDM2MTMyODVhODJiNzhlZTg3NDM4M2VjOGM0ZWM5NGUgcHkzaworODE3NDcgOGI4NzAxNTUxMjUzOWEwNWJkMGM3ODdmNTk4NjkzZGNhZjNkMDE5ZiBsZWdhY3ktdHJ1bmsKKzgxNzQ4IGNlOTIwOTgxMWMwYWFjZmExNTAzYzgwZWEzYmRmNGI5ZmMyMWFiMTUgcHkzaworODE3NDkgNGExMTUyMjk4MGI3YjhlNTM2ODBlYjljZjVkOTBkOGE3ODIxN2JiNSBsZWdhY3ktdHJ1bmsKKzgxNzUwIGFmMmJkZTcyY2U2MWEyYzMyNzMwODQ2NDAxMjNhNDc4NTdjYjA2YTYgcmVsZWFzZTI2LW1haW50Cis4MTc1MSA1ZTFiM2I2MzRkNTM0NjQ5MmI3ZTdkZjBkNWY0OGNiMWRhY2JmMmM0IHB5M2sKKzgxNzUyIDYxMGJhOTliOGQwZGEzZDAyYmVmMWFhNmYyNzI3ZDIzNzIxOTZlNjkgbGVnYWN5LXRydW5rCis4MTc1MyAyZDJiMzgyNGUzOWE1MTA0MzFkNjBmZDBjN2I0NzhhNjI4NDlkZmYzIGxlZ2FjeS10cnVuaworODE3NTQgM2Q0ZjFjMjU5ZDJkMGFiMDQxZDg1NTgzYjc4YWM4ZTkzYjFhOTUyYyBweTNrCis4MTc1NSA5YzMwOTEwMjRiYzg0ODZkNjM0MmIxY2VjMDY4YTAwYWEyNDM5OGExIHB5M2sKKzgxNzU2IGNhMjYzZDIwMDVlNzYxMWU1YzY0NGEwODQ4NjljYWViODFhMTRlZTkgbGVnYWN5LXRydW5rCis4MTc1NyAwYTRiMzNlNGVlMjM2MzY1MjI3NDZmYTNkMjI5NDAxN2NhMzhiYzZiIHB5M2sKKzgxNzU4IDUwMzJmMWQ1YTFlMTVjMTgzNTkxYzQ1MTdjN2U0NDY4ZmM5MDQwYjggbGVnYWN5LXRydW5rCis4MTc1OSBjMWNhZWUzMjU0NGZiNzlmNzRmYzhmMGM4NjJkYTRlZGExNmI0NTQ1IGxlZ2FjeS10cnVuaworODE3NjAgMWQ5YjdkMDUyYmNjNWY1NzIyMTA0YjczNjg0OGNmNDJiNDRkYjMzMiBsZWdhY3ktdHJ1bmsKKzgxNzYxIDc0MmQzMjlkZmRmZDk1Y2YwMDUzYjUyNDYzNDM1YWIyMTBhOGY2YzAgbGVnYWN5LXRydW5rCis4MTc2MiBkYTdhOGZmNzY0OTk3NmNhZTRmOWMxZjBlZTdiNzQ5MGQ4ZDJiNzgxIHB5M2sKKzgxNzYzIGQ3ODcyZGRiNGI5ODA4MDhhZjU4YjAzNmQzM2YxMzU3MmQ3OGU5NTkgbGVnYWN5LXRydW5rCis4MTc2NCBjZGM3Y2E4ZGI4ZDZhYjQ0OTYwZGVjZTIzNGY5NmVlOGIyNTFlNzdlIGxlZ2FjeS10cnVuaworODE3NjUgZTBkZTMzNzY3YzI5OGNkYzlmMDE1NmM2OTdjOTNjNWY1MjY5Yjg1ZCBweTNrCis4MTc2NiAxNDEwYWM2MGE3NTQxMjFmOTAwYjNlMDZhOThlNzFkNzliNjAwZGNjIHB5M2sKKzgxNzY3IDNlMGJjMGUxN2Y1NjBlZDRkNzJmZGZhOWJiZjg0MDllNGJmM2FlZDcgbGVnYWN5LXRydW5rCis4MTc2OCAyNmJiNTM4ZWY2ZWE1ODMzMzEzNTEzMDA1MWJkMmMyYjc4N2U3ODQ3IHB5M2sKKzgxNzY5IGUxY2FlZDY5NTQ0ODFmY2U2MWQyY2ZjZDYyZDhkY2M1YTE2NDcxMTkgbGVnYWN5LXRydW5rCis4MTc3MCA0ZGZkOTE3NDJlYjliYmUyMWIzM2ExZDFiZTgyNzQxOGNiZDMzMGUwIGxlZ2FjeS10cnVuaworODE3NzEgZDEzZGVjMTQ2OGI4NzQ4OWMwNmI0NDU2NGFmNTJkMjg1YTc0MGJiYyBweTNrCis4MTc3MiBjZDhlZTAxOTk4OWQxNzU1N2Y2NmU4YWE1MGI4NGExYTllYTJiMjMwIGxlZ2FjeS10cnVuaworODE3NzMgZmRkYTNmNDYxNDJlNGY5N2IxNDY0YTFhYjU4ZTkwNzQ3MjVkMDZkYSBsZWdhY3ktdHJ1bmsKKzgxNzc0IDBlN2M3ZjE4Y2QyNGIwM2VjZDJmY2M4ZGMxOTAzYTBkNTI0MDUwZjIgbGVnYWN5LXRydW5rCis4MTc3NSAzODFjNWVlYjUxMTAzOGQwOTFkOGUwODA4YzRiODUwODdlZDJmNjg0IGxlZ2FjeS10cnVuaworODE3NzYgNmEyOGVmMjliMTEwMzk0NDM1MWUyZGRjMTMwYWQwYmUyOWY3NzFmYSBsZWdhY3ktdHJ1bmsKKzgxNzc3IDU4OWI2MTFkN2I0ZmEyOGM3MjI3YjQ2NDgxNzQ1MjhlMWZiMmE1MWIgbGVnYWN5LXRydW5rCis4MTc3OCAzMDFiNzhjYzk5OWIyOWJmMWE0YzRhNmQ1OTYxODU1Y2M3ZWNhZTM3IHB5M2sKKzgxNzc5IDY4ZmQyMjU5NWRiNTc3NjA5MjM5OGVlYzQxNTM1MDJmYTQxNDc2MjMgcHkzaworODE3ODAgYzRkNGRkYWNmOWE1OTY4NmEwN2I1YWI4Yjg5MzgyZWI5MDhjYmI1NSBweTNrCis4MTc4MSA4NDk2NTA1MDcwNTJlNmY0NmU0N2RjZTFiZDcxMzM3YzQ3MzU1YjE1IHB5M2sKKzgxNzgyIDQ3NWNiZGUxZWQxOWE3ZjQwZTI0MDI5NGY0MmRhNWE2NzI5ZTgxNTggcHkzaworODE3ODMgNmExZDZkOGNiYzUyMTNhNjQ5NDI5N2MyNWE0YjZiMDM2OTJmNjliMSByZWxlYXNlMzEtbWFpbnQKKzgxNzg0IDMxNDMzOTZhOTRmMWVlMzVlYjZmNjIyZWUyYjdjODA3MzY0MmIzMDcgcHkzay1jZGVjaW1hbAorODE3ODUgNDk1YmI3M2IxY2YxZjNhNTY2NjJmZmUyZmRlODNlM2Y2M2Y3YjU1ZCBweTNrLWNkZWNpbWFsCis4MTc4NiA0M2EzZjJhY2M5NGVjMmUxNjBlMDA4ZjUxOWZhY2U5NjY0YWRkNDQ5IHB5M2stY2RlY2ltYWwKKzgxNzg3IDMwMzhlYWM0MmY3ZGM3ZTRkZDA4OWI1MGE3ZDgxMGQxZTQ2ZmVkYjEgcHkzay1jZGVjaW1hbAorODE3ODggZjZkYWY1MzBmODllYTYzZGM2ZTYxNDA3Mjk4YWE3MzdhZTYzZGViZiBsZWdhY3ktdHJ1bmsKKzgxNzg5IGVkMGNhMzg5MjFjNzY3NTMxNTM2ODljYWM0ZWY1NDIzMWU0ZDg4N2UgcmVsZWFzZTI2LW1haW50Cis4MTc5MCBkZjhkYzhkMWQ1NzFjNmQwMDUxYzE2ZTZhMTBmOWViNWViNjZhMTE5IHB5M2sKKzgxNzkxIDczNGZlZDU2MTNhZWZhOTRjZjM0YjkwYWU5ZTU5YTkwZGNkNTBmYzUgcmVsZWFzZTMxLW1haW50Cis4MTc5MiA5ZDQ5Yjc0NDA3OGM2NWRmN2ExNjkyZGMwZGU4ZTU0YjdmNjAyYTdjIHB5M2sKKzgxNzkzIGNlZjM3NGIxNGY1YmVlNTM1MDcyMDIwYTk0MWQ0MGZjYmE5ZjA3ZDMgcmVsZWFzZTMxLW1haW50Cis4MTc5NCBjM2YyZWQ0ZDhlNjVlY2VhNDFkZWRiMmFhNTJkNjNmYzU3NDc2ZTUxIHB5M2sKKzgxNzk1IGMzMmIwMzhlMDAyMmU2ZTM0M2UzNWNiNjc3Mjc2ZjdhMjJmYmYwZDggcmVsZWFzZTMxLW1haW50Cis4MTc5NiBlZDI2ZWE3ODUzNmJhM2I5Yjc5ZTQ0NjI2M2YxN2NkZjEwYzNkNzg5IHB5M2stY2RlY2ltYWwKKzgxNzk3IGZmOGVjOTRiZWFlYWQ4ZTcyMzE3NTM2MDA2OWI2ZTMxMWYyMWNjNDMgcHkzay1jZGVjaW1hbAorODE3OTggYjFiN2FmNTE4M2UzNWJjZDM3OWY2YTJhNjNkZjU1YTRjMmUzZDgwNSBweTNrLWNkZWNpbWFsCis4MTc5OSA3MzZmYTM2ZWE4MWUyMDJkYjk5MTlkMjE5ZWEyZDZmOGZhMWFhYTQ0IHB5M2stY2RlY2ltYWwKKzgxODAwIGEyMmQ4OTg4ODk5NTAxYjYzOTc1ODdlYjJlZTkyZmJlNTI5MDI5NjEgcHkzay1jZGVjaW1hbAorODE4MDEgNmU4ZGNiOGU5ZTZiZmI5ODUxMzAzYjFmMTE2YTUxZDlmZDczMmIxOCBsZWdhY3ktdHJ1bmsKKzgxODAyIDJkNzQzMGRlZGVjMzgzNjNlYWYwMDMwODRjYWUxZGE2MDdiYTAxMDUgcHkzay1jZGVjaW1hbAorODE4MDMgZmUyYTBlMWVjOTVkY2Y5MDFmOWQ0ZWJkZWY1MmFiYzA1MTA3MTViOSBweTNrLWNkZWNpbWFsCis4MTgwNCAwZWZhMWFkOGJiNzUwNmFiMTU3MjI5MDQxZWRmM2FjZGQyZmMxNmI3IHB5M2stY2RlY2ltYWwKKzgxODA1IGIxMWNjMWYxYTY5OGM1MDlhMTU4ODg2OWM2YWJiNmM2MTNlMTA0MDAgcHkzay1jZGVjaW1hbAorODE4MDYgMGQ5MzQ3OTM0Y2M1YjRhOTJhYTI2NTRlNjA1NjA0NDc1NWEwNDllYSBweTNrCis4MTgwNyA2MDBjMjMxMjcyMDdkODIwNjU3Njg4OWI1ZWEyYjVlMTBiYzg2ZDNhIHB5M2sKKzgxODA4IGZkOGZjY2IyZWU5MDhjZDRmZDcwYmI3YjFjMDBlMDA3M2VjMmEzYjUgcmVsZWFzZTMxLW1haW50Cis4MTgwOSAxYTEwMTZmYTA3MjMwMGZhNjk3OWZjYzBmY2QwNzhkZmNkYWI2MmQ1IHB5M2sKKzgxODEwIGU5MzJkYzg4ODUxN2IxZjg3ZjM2YzkxZjM0YjkzNGJhNTcxNDJkMmIgcmVsZWFzZTMxLW1haW50Cis4MTgxMSA5Y2U1NTYzZWVjZmI3OTQwZGVlOTY5ODIyMGYwMDU3MjU0M2NiY2NmIHB5M2sKKzgxODEyIDYzNDJkMTQ2N2E0ZDQ0OGQyOGZhNzM0YWQ4ZTMwZmExYzEzZWZhN2EgcmVsZWFzZTMxLW1haW50Cis4MTgxMyBhMjE0NWEwNmE3MjY4ZjIwMzA5MDliNDE2N2ZkYTJhZTNkYjdhZjA1IGxlZ2FjeS10cnVuaworODE4MTQgOTVjYzFlNmQwMjQ2OTRhYTVmYmJlZjg3MWI3NDQ5ZmMzOTVmOWI2YyBweTNrCis4MTgxNSA1MzgxOTZjZjkxZmY3ODI5MTM2ZGViMzM0NTA0NzNhMzJjMGQyNGVjIHJlbGVhc2UyNi1tYWludAorODE4MTYgMmY2MWUzYTE0NmIxY2RjZTQxMWI5NTY3NDQ1MDdjOTRmZDU4YmRmMiBweTNrCis4MTgxNyBmNWNlNWUxYmIyM2EyMTM2Y2Q4ZmQwMzI5YjhmYTc1OTkzMTFjZTExIGxlZ2FjeS10cnVuaworODE4MTggZjJjNGRkMjJjYTYxYTIxMDc1ZGFmODMyNDI0YTZlYzEyNzMyZjRjMSBweTNrCis4MTgxOSA4MjIyODBjZWUwNGI1MjdmOGMyOGFlN2U4NWMyMzViNTVhNzBiY2NlIHJlbGVhc2UyNi1tYWludAorODE4MjAgMjZmYWM3NGViYWIzMjllMWQxYzdhNGRlYmY2ODMyMWFiYWRmNGFhMiBsZWdhY3ktdHJ1bmsKKzgxODIxIGZlY2Q4ZmI3YmJlZjVkYjA3N2VkNzk5ODNiNjdkNzQ0M2RlZjdlNGUgcHkzaworODE4MjIgYjQ0YTJmZTUzMWVmNTFmYTc4NTA2M2QxMzBjZjg1ZTk5OWJmMTAyYyByZWxlYXNlMjYtbWFpbnQKKzgxODIzIGQzNzk3ZTlkZmQyYzE5NzU4N2MwZDI2ODE2Nzc0OWQ5NDJjOTUwM2EgcHkzaworODE4MjQgZGRkYjk4ZWYzYmU1ZWY5MDY2ZDU2MTNlNmUyNzYzMDU4ZWVkYjdlYyBsZWdhY3ktdHJ1bmsKKzgxODI1IGU1ZjBiMjdiYzE3ODM3OThjNjVlOGZiNGU1NzFmODVlZjIxMjg1NzEgbGVnYWN5LXRydW5rCis4MTgyNiA4MjVmNjU0NDVhMGEwMWVmMWE3NTBhZWRmY2E1MjVlNmY2YWQ5NmEzIHB5M2sKKzgxODI3IDVjNmU3NWE4ZDYxZDU1ZTYzZmM3OTMzN2VmZGM3YmQ4NjZlNTdmYzkgcHkzaworODE4MjggM2U4NjI1NDAzOWI5MDk2ZmE0ODg2NGVmMTAxZDkxNTc1N2IyNDZjNyByZWxlYXNlMjYtbWFpbnQKKzgxODI5IDI3MTgxNThjNThkMDBmZmM3OGJiNGNhZmU5MDYzOTE2ZDAxZTg0YTggcHkzaworODE4MzAgYTM2MGUxMTQ4NjZiNTU0ZDhmZjFiMWFkYzVhYzRjODM5ZDNiY2I0MCBweTNrCis4MTgzMSA0ZjYxMzMyYWYzNWU2OWZiYjE0ZWNiOGM3MDU4YTJkZGIyODQ5ZTQ1IHB5M2sKKzgxODMyIGI5NTE4NjA2Y2RkY2U5MWQxYWU5NzAzM2JjNjE0NWQ1NzMzNTdmZmYgcHkzaworODE4MzMgZDIyNjRmOWFjNjFlY2ZkNmNmMDgzMzNmMmRiM2YyNzM1ZjAwNDRmYyByZWxlYXNlMzEtbWFpbnQKKzgxODM0IDM1YjRjMzU2ZjI0YTYyODEyYmY4OTBlYmVjNmVlYTEzOTg5OGYwZWIgbGVnYWN5LXRydW5rCis4MTgzNSAxMTY2ZmI3ZWZiMDdhNmU1NTRlOTVjMzM2NjQxOWZlM2Q3NmY1ZTlkIHB5M2sKKzgxODM2IGQ1ZWMyNDNjYWExMjI0YWZiNzY0YzI0NGJmNGMwNDk2OTkxMTU5YzkgcmVsZWFzZTI2LW1haW50Cis4MTgzNyBiNWFmNWM5MzEzNWIyNGYzNDE0NWQ2NmE3OTc0YTA2ZjA0OTVjZmE4IHJlbGVhc2UzMS1tYWludAorODE4MzggNjUwOWY5YTNjZGU1YWUyN2UwNDU3ZWEyNzdiZjc5NThmODVjYTdhNCBweTNrCis4MTgzOSA5ZjdiOGIzMmIwNzRhYTkxZDMxMzUyMTIwYTQ2OTE5ODFhNzA5OTBkIHJlbGVhc2UzMS1tYWludAorODE4NDAgYTA2YWQ3MzgzNTUyM2YyNDg2ZjAzNmI1MDE2MzVhZWI0YWJhYTU2NCBweTNrCis4MTg0MSBkMjgxZWQ1OWZmMGJlNGYyNDAyZjRmMTY5NTIxNGY2N2MxMDU5ODA3IHB5M2sKKzgxODQyIDdjY2M1NTgxMTQxMzFmMDliMTZlY2RkMWU2ZGFiZmFkZWRiNTlkMTIgcmVsZWFzZTMxLW1haW50Cis4MTg0MyBkOTI3MDhjZjFjMWZhMzM2NGI1NjQxMDkzNjI1ZTdlZTU0Y2ZhMmE2IHB5M2sKKzgxODQ0IGEyNWFkOWM0YWNlMDAxOGY4NTJiYjQzNzRlYzE1NWU4ODMzYTg5ZWEgcHkzaworODE4NDUgZDQ3ZmU0MTM0ZTdkMTFiZjQwMzYxMDdjODJlNjViN2YzMTY1MjQ3MyByZWxlYXNlMzEtbWFpbnQKKzgxODQ2IGY4M2YyMDFiMTI3NjA4NGRhNzNjYWU1ZWY3ZTk4MjhjNGI0MjY5MmMgcmVsZWFzZTMxLW1haW50Cis4MTg0NyAxOTY2YzFiYzkwNDhlNGVlZDFhMjAxMGE1ZDBlMjJmOTI2Njk5M2E0IGxlZ2FjeS10cnVuaworODE4NDggMjdkOWJjYzdlNjYxZWNiZDdmYTdlYjk4NWNjY2VlY2I4NzhkOTg0MCByZWxlYXNlMjYtbWFpbnQKKzgxODQ5IDJjZmUxNWIzY2RmNTUyYzA3NmM1YjYxMmFiNTEzOTVhODMyMzUwZDggcHkzaworODE4NTAgYjJjMTk5NTYzM2JkYzg1ZWJjMGVkY2NmYTcwY2IzYzlkZTNiYzkwMCByZWxlYXNlMzEtbWFpbnQKKzgxODUxIGQzMmIwZTgwZmFhY2QxZDA3NzI1MzU2NjM4ZTRhNzgyYjM0OTk1ZDYgcHkzaworODE4NTIgNmYzODU1MDM4OTE5YjYyMmI5OTRiODcxYjI5NTRlYjgwZWM3NzBkZiByZWxlYXNlMzEtbWFpbnQKKzgxODUzIDg2NGFjN2IzYzNkNmNlZjNjZjVhMmE2MjgwNmFmNTU0MWNjZjk2NDAgbGVnYWN5LXRydW5rCis4MTg1NCBkNzExM2NhY2Q0MjhiNjFiNWQ4YTNkNTk3ZDQ2ZDc1MjQ2ZjBhMjRjIHB5M2sKKzgxODU1IDZlNjg2NmNlYzM3ZWEyYzAwN2NjOTI3NjAzOTY4OWU2YzlhYmYyMWMgcmVsZWFzZTMxLW1haW50Cis4MTg1NiA5NmE1MTMzODI1ZDIzNjY4ODE4MTdkNzhhZDdlN2RjYzM2NDYzOTkwIHB5M2sKKzgxODU3IGM2MDQwMmZjMDY2ZjEwYzAzYTY1ZWMwODY4ZTYxN2U1MDI0YmI5YmIgcHkzaworODE4NTggYjZlZTIwNWI5NDk4YmQwZmU3M2ZhMTlmMzgyMWVlM2Q2MzUzZTFhMCByZWxlYXNlMzEtbWFpbnQKKzgxODU5IGYxYWFkYmViYzU3NzI5MTIzMTIyOGZkZjYyZTgzOTIxMjc2ZmVkNzcgbGVnYWN5LXRydW5rCis4MTg2MCBiYTJmMmQwODUwNGIwNTAwNmYxNzViNDU4MTQ2NmQzNDUwODMxMTEzIGxlZ2FjeS10cnVuaworODE4NjEgYzExNDVlNjY4ZDcyMDg2NDQ4OGRkY2UwMDE5NWJkYWM1NTk1NzM4YSByZWxlYXNlMjYtbWFpbnQKKzgxODYyIDg2NWUzNGNkN2U1Yjc2OTI5N2NhZGFlMDcwYzBmMWUyMGQ4MzljZjggcHkzaworODE4NjMgMzM3NTIzOWQ0MzcwZTJlNjZkODdkYjQ2ODgzZDYyMTJhNzJlNjExMSByZWxlYXNlMzEtbWFpbnQKKzgxODY0IDMyOWMxMjllMDdiNjhhZjI2Mjc5ZDQ4ZTljY2ZkOGM4YzhlZTg4OTggbGVnYWN5LXRydW5rCis4MTg2NSA4ZjU4YjllNTk2Njg4ZDQyZTY2N2FjZTY0ZWNkM2MwYWY4MzNkYTM0IHB5M2sKKzgxODY2IGEyZWExYTIzMTg2YjA4NzY3MDE2ODA4MTM5NjE1ZmU2YWU0OTE3YWQgcmVsZWFzZTI2LW1haW50Cis4MTg2NyBmMzNlNDY0YTlhNjBhYTlmMDQ5NzhjNmNmMGY1NTdmZWMwOGQ2MGU3IHJlbGVhc2UzMS1tYWludAorODE4NjggNWJmNzMzNmVhMGFhZDg5YmQyNDgyMjBjMjk4NGQ5MWQ3NTE3ZTJlZCBsZWdhY3ktdHJ1bmsKKzgxODY5IDc3YzBjYTY5ZDUxODRkODkyMmM1ZTE3YmM3NTU1NjNhZTZjYmY3MTAgcHkzaworODE4NzAgMTQyOWFjNmJlYmMzZjhkOWE3YWQxNzBkOTEyMjc1MjQ1NGJmODYzNyByZWxlYXNlMzEtbWFpbnQKKzgxODcxIGRkYjQ3ZmQ2MTJhNjcwMWIzN2Q1Y2YzNTY0ZTBlYWIwMGQzNTg0Y2EgcHkzaworODE4NzIgZTA4NzE2MjU3M2FjYzY3NjkyNmYyZThmYmRiYjE3YjRkZDJiYjc3OCByZWxlYXNlMzEtbWFpbnQKKzgxODczIGZlNWVkNzAyODNlZmU2MDk0MWE3ZWFjMzU0ODQxNGUzMzkxZDIwNTggcHkzaworODE4NzQgOGNmYTBkYzM4YWE3NDJiOTgwMzkxODRhMjZjNTBmYmZjMWVlYmNiYyBweTNrCis4MTg3NSBmZjUwZDQ1ZTA2MTgxMzUzMmQzZjYwNzY0ODk3YzY3OTlkOGNmYzJhIHB5M2sKKzgxODc2IGNkMTAyNDI4MWI3MzJiYjg0OGUwOWIxZWYwNGU2ZTRmZGI2YjA2MTQgbGVnYWN5LXRydW5rCis4MTg3NyBmMjk0NDczZDg3OTMxNWZiMzI2Yjc2OGU3ZGU0Njg4MTM1MmYzZDFlIHB5M2sKKzgxODc4IDdmNTQwZmU3NzVmY2NlMzVkYjdkMzZlYjg2NWY1OTY4NGNiZGI0YmQgbGVnYWN5LXRydW5rCis4MTg3OSA1ZmU0YWQ1YjVhYjllYjcyYTJmZDgzMDRhZGZkYTcyZjlkMmYyYTJlIHB5M2sKKzgxODgwIGRiZTdhZTY2NmNlMjI5ZDY5NGU4YTk2NzA5MTcxODQ2NzNiOGIwMjggbGVnYWN5LXRydW5rCis4MTg4MSAwZDE2NmU1Nzg4NGRmNDE3ZGE4MThmMTdhZjA5OGNiNzY1MmU0NzRhIGxlZ2FjeS10cnVuaworODE4ODIgYTg4NzJiNjUwNTc3NmE2NGQwZjI2OGQwNDdmZjZkZWM0Zjc2MzcxMyBsZWdhY3ktdHJ1bmsKKzgxODgzIDcyZjc3NDkwMzc3MjAxNmNmYzc0MzZmMTc0YjNiZmNiNDhhM2VmNmYgcHkzaworODE4ODQgOWUxMmM2NDlkMzEyNzVmMmMxYzc5NGMxZmEzYjRiNzk0YmNkNzg4NCByZWxlYXNlMzEtbWFpbnQKKzgxODg1IGFlYjQ3ZDMwZmJhNGUzOGRhMWU4ZjEyMjFlNGQwNjIwNDIzNzFlMWUgcHkzaworODE4ODYgMDc2NzYzYzY2N2Y5NTY1YjhlMjgyOTFlZWZhN2M0N2NlNGZiM2M1NCByZWxlYXNlMzEtbWFpbnQKKzgxODg3IDhjM2EyMjJmYTZkMTU4ZjVmYmFlYmEzYzYzZjUzNDkxZDcxYTZlZWYgcmVsZWFzZTI2LW1haW50Cis4MTg4OCA0Yzk5ZGE4YzFlODBlN2ZlY2IzYzg1NzNlNjdiMjBkN2M5OGVlODcwIGxlZ2FjeS10cnVuaworODE4ODkgN2VmNDZhNjFkYzk3ZWI3NTJmNDgwODY5ZGU4ZDczMTVmYmFiM2Q5NSBsZWdhY3ktdHJ1bmsKKzgxODkwIDM0MjBkZmM1NTliYmI4M2Y0NGY2YmFiNzJjOTkxNGExMWU4NjU2ZGUgcmVsZWFzZTI2LW1haW50Cis4MTg5MSA4MzE5Y2EwZDU0MzQ5MzEwYzVlZDc2NjJkMGQ3YmVjNWNmNGY4NDY2IHB5M2sKKzgxODkyIDQ0NjdjNGMxZDM4ZWNmZmZhZWMwZjIyNjUxYzU4MzlkOTU3MDFlMjUgcmVsZWFzZTMxLW1haW50Cis4MTg5MyAyNjY4NTMxMWQzMTMyNDEwYTQ3NzFkM2I1M2NjOWYxMjBmMWVkODZmIHB5M2sKKzgxODk0IDRjM2JlNzRjYTUwMTI3ZjA2MzhiNjhmZGUxOGMwNTg0YzRlNzRmNTEgcHkzaworODE4OTUgM2JhMWI1YjRjMTA4ODUwMDg0YzFiZGU0MWM5NzQ0YWJlYzMyNzExYSBweTNrCis4MTg5NiBlYmM0ZTg5NjkyNGUyYThjNGUwMDczNmYwMDJiYjQwN2ZmNmY1YzVkIHB5M2sKKzgxODk3IDZhZGM4M2Q5OTlkMGU0NTJkMDM2NmI5YTRkMTBiNzg2ZDZkZDJjNDIgcHkzaworODE4OTggNmZmODhkY2E4MTMzOTg3YzE3ODExZGIxN2ZmMDgwNjE3ZjllZDIyOCBweTNrCis4MTg5OSBjZDU5NmE4ZjkxZjM3ODYxOGNjYjUxOWEyODAxYjU5OGQ3MWVhOGFhIGxlZ2FjeS10cnVuaworODE5MDAgYjA5MWE3ZTQyODVmOTNjYjVmYTNkZjMwMTRhZjYwZDgzOWM4NmUxNiByZWxlYXNlMjYtbWFpbnQKKzgxOTAxIDJhOGVlMTFlM2UxOGEzZDQ0NzEyYTQ5MTU0NmMyMDRkOGI3MGVkNzkgcHkzaworODE5MDIgNzNkODJiMGI2ZGVlNGRhNWNlOWRkNWE4ODRkY2QyZDZiNWEyZTcwNyBweTNrCis4MTkwMyA1MGMyMzkxNzQ5NzYxOTM5ZWYyYTFlMzZjNWE5YTI5MWQyM2JmMWY3IHJlbGVhc2UzMS1tYWludAorODE5MDQgN2RiN2Y4NDQyNDE0ZmM0Yjg3YWUyOWY2YjAxNjc0MmRlNzg0ODg2ZCBsZWdhY3ktdHJ1bmsKKzgxOTA1IDlkYWM1ODE2M2I3OTk5YWM1MzA5N2E3N2Y3OWEyOGJjMzI3MTU5YjQgcHkzaworODE5MDYgNjYxNTE5ZmVjM2I4Njg4ZmM3NTA4NWE3YjE5YWIwMzRjYjZmMzU4MSBsZWdhY3ktdHJ1bmsKKzgxOTA3IDk4MjQ1NDY0YjY2NTRhMDVkYTg1NDIyM2FhOTFjMmEyYjU0MGE0ZmUgbGVnYWN5LXRydW5rCis4MTkwOCA3NTc2MjYwZDFiNjU0MTUwMDU4MmYyZTlkMjNjMDcyODRhMDcxMDMyIHB5M2sKKzgxOTA5IDIyYzA0NWQxYmM4Y2NmOTNjZjJhNDMwMWI0MGExMjcyMjQ5ZDc0ZWYgcmVsZWFzZTI2LW1haW50Cis4MTkxMCA4ZDVkZDIyNzY2ODA1NjRmNzM2NTBlMTY0Zjc5ZjhhYmEwZjMxZDRiIHJlbGVhc2UzMS1tYWludAorODE5MTEgODhhZWM1MTI0MTg1ZGZlNDE4MjFlZjgxNTU5MGE3YjIzMzNiNThjYiBweTNrCis4MTkxMiA0NGRjOTg1MDJhYzMyM2E1Y2RjOTE1N2FkYTk2Y2IxOTlhODYzODYzIHB5M2sKKzgxOTEzIGE2NTNlMzA2MTA4ZjUzNDNhY2JlNmI4NjY0ZTYxMDNmYzNiNjI2YzcgcmVsZWFzZTMxLW1haW50Cis4MTkxNCBiZDhhMWZkNGMzMTZmMjBkZWM1M2ZmOTE4NWExNmNkM2FiYzliYWViIHB5M2sKKzgxOTE1IGM4YmMyZDhlOWFlMWNmYzZiOTA0MWZlZjcwYTdiNzEwMTAyN2Y5ZTEgcmVsZWFzZTMxLW1haW50Cis4MTkxNiBmNTJhZWZkYWIxODIwZTY4YTJlNjUyM2ZjNmRlZDA0ODNkMThlZDNjIHB5M2sKKzgxOTE3IDJiMmY1NTNmMWNlNjExMDU4NDA0ZjFjNjNhMjE1YmZjMzBhZjhhYmUgcmVsZWFzZTMxLW1haW50Cis4MTkxOCBmNjBhYWY5OWI4MzZiZjZlZWUxODE2OTk3YzQwODY2YTFlNzY1ZDU2IHB5M2sKKzgxOTE5IGEyNTUxYjMwZjA0OTY0OTg1M2Q0MTgxODRkMjk3NmMyYmMzMjA4NzAgbGVnYWN5LXRydW5rCis4MTkxOSBmZTZiZTA0MjZlMGQzNTNkYjg0ZWM4NjlhNWIwMmRiYmE2YzNkNGE1IHJlbGVhc2UyNi1tYWludAorODE5MjAgMDE2N2Y5MTcyMWE4NGM2MThmZTIzYTljYzU2NGYwNThhZDI5YjA0NSBweTNrCis4MTkyMSA4NjI0NTgyODA5ZjljNzJkNGUzNDdkYzVhNWNmOWM4MzAyYTBiODhlIHJlbGVhc2UzMS1tYWludAorODE5MjIgZDkyODIwNjVmNWM5ZWJjMjRmZGVjNzAzMzVkY2ViMDZiOGNlMmEzNyByZWxlYXNlMzEtbWFpbnQKKzgxOTIzIDEzN2RhN2NlNWU4ZWQxYmI3YWY0Zjc0NjZmNTU4Y2M4YTE0NTY5MzUgcHkzaworODE5MjQgNzIxNjlmZmUzMmEwMmNlMWRlZjc0ZGY3YTMwMzBhYTY0NDVmYTZjNSByZWxlYXNlMzEtbWFpbnQKKzgxOTI1IDZlYWE3OWJlMDQ0OWZkMDRmNmRkYTdiMDBhYTIxODU3OWQ5MzRlY2MgcHkzaworODE5MjYgMTAzMTkyMTdhZjQ0MzBkZjRmZWVkNWMxZTdlMWViNjI2Y2E1MzY0MiByZWxlYXNlMzEtbWFpbnQKKzgxOTI3IDMwMjI5MDRmOTk3MTFiYjk3ZTI3MWM5ZjAwMDIxZjVjZmVjZjIyODggcHkzaworODE5MjggODE2OWYzM2YyMjY4OGYyNGEyYTQ2YjZkZjNlOWNhNDhiYTAwYzRiMSByZWxlYXNlMzEtbWFpbnQKKzgxOTI5IDQ0NGMwMjVlMjk4ZGEzNjk2ZWYwOTBiOGE1YjQyYWE4YjM0OGE3ZmMgcHkzaworODE5MzAgZTgwZGFiM2U5MDlmN2IzM2I5MTNjYmJiZGRkMjY3MmVmMTY1MGQ4NiBweTNrCis4MTkzMSBhMTBhN2NlOTdmNDVhN2I0ODVhNjQ3ZjkxMTA3MTgyOThhN2JlZWJmIGxlZ2FjeS10cnVuaworODE5MzIgODRkYWIyOWJkZWE3MGEzOTIzMTg0MzhjOTE3NjZlYmU5NDlhNjlkZCBsZWdhY3ktdHJ1bmsKKzgxOTMzIGMyYjkyMzgzNGRlYTc1ZGVhZTVhMzY5Y2M2M2RlOGJhYjYzMGY5Y2IgbGVnYWN5LXRydW5rCis4MTkzNCA2MWQ0Y2M2NzgxNjU1ZGU5OTljNmI4ZTgxNzU3OTM4ZGVkOWRiYzk4IHJlbGVhc2UyNi1tYWludAorODE5MzUgODAxMTBmZDQzMTkxMTkyOTE5ODY5NTg2NGU5ZDUzMTRkMzIyOTkxYiByZWxlYXNlMjYtbWFpbnQKKzgxOTM2IDZjZTdlYmNmOTM1OGRlNWY5NTYzMjUxYWUzYmI5Y2Q5YTE1N2M5NjEgcHkzaworODE5MzcgNTJlYjBjMDkzYjY4ODdiOWRlODY1YWJjNjhhZTU3NWEwODlkZmNhNiBweTNrCis4MTkzOCBhNDkwYWEzMDNkOGFkZGZiODMwMjA5NWM3YzA4NjA0NzExMDM1NDRlIHB5M2sKKzgxOTM5IDRlOWRkNmQ4MDA2MzgwZGRiZjVkOWU5OGI1NTUzMWFmYWI1NDhiZjMgbGVnYWN5LXRydW5rCis4MTk0MCAzMWYwMWM4ODFjNDYwZjM2YzA2OWFiMzNmYjU3YWVmMDI4MTBiY2FhIGxlZ2FjeS10cnVuaworODE5NDEgYWNhMTNhNWQ2MTQ0ZDM4YjY4NjI2YTg4OTliNmVhMmE2YWJlYjUxOCBsZWdhY3ktdHJ1bmsKKzgxOTQyIDQxZWQ1OGVkNWM5M2JhYzFkNjhlNTk2M2E0Y2NmYTk2NWU5ZDJjYWEgbGVnYWN5LXRydW5rCis4MTk0MyA4ZjI3YjYxYTQwZmE5OTA1MzMxYTczMDM5Yzg4MDU3MGJmYzM1YTdmIHJlbGVhc2UyNi1tYWludAorODE5NDQgNjA2YmFkNTg0MzQ0NjRkMzFjYTAwYjlhZTkzMTc5MGFkMDBmMmI3MyBweTNrCis4MTk0NSBkYjU1MTY3ZmE1ZTc5ODg4ZTc3ZGI0Nzc0Yzk1N2U4NzlhZDVlMjlmIGxlZ2FjeS10cnVuaworODE5NDYgNTE2MDA0OGQ1MzYxNzExMGMxODNiM2Y4ZTkwNmI0MTE4ZWM3YzY3MiBweTNrCis4MTk0NyBiZDg2YmJhNWVkMzNhMDFlYjMzNTk1YmE5YjZhMTMzOTUzYjdjZjYxIHB5M2sKKzgxOTQ4IGU1NWZhZDNkNWFlNDg0YzQxY2QxNzJlOGFhOWE4M2MyNDRkMjdkMzcgcHkzaworODE5NDkgOTU1MGVkYTFjMDk2NGU2NGNiNmQ3NjFlODMxZjVjYzRmZWI1NTZiYiBweTNrCis4MTk1MCA5YjMzM2JmMDhkNDVmNzVjMGI2OTFjMDBhODM1YjdlODNmYmRkNWVhIHB5M2sKKzgxOTUxIDQ0Y2FjNWM1NjViN2YwOTk5MzM2NzVlZTlhYzY4NDQ1MDlmY2MyMzMgcHkzaworODE5NTIgZDA2NTc3ZGI3Mjc4NTJjNTBiYmE0Mjk2ZDlkMzgyYzBiZDczN2Q2NCBweTNrCis4MTk1MyA3M2U1MzU0ZjkyZTcxNDI4YWNjMTMxOGI4ZThkNDQ3NTc5MjQyZTllIGxlZ2FjeS10cnVuaworODE5NTQgZTBjNGRhZGRmYzU0NjljZWQwNzc5MGQxYjc3OTA3NTY5ZDNkZjBlNiBweTNrCis4MTk1NSBiOTBlMzM1YTYwOWE5NzkxYzVkOTYwMjZjODRkZTVmNTA0OWY5OTI5IHB5M2sKKzgxOTU2IDhiYzBiZjIyMDE0ZDgzMWE4NDRiNTBkMjg1ZDlmODdiZjYzZGJkMWMgcHkzaworODE5NTcgMGE1NWFkZTZkODU3ODFjMzhjODIwYmY3NmIyMjY2MDM1OTc2ODFkNCBsZWdhY3ktdHJ1bmsKKzgxOTU4IDBiMmUwYjY4MzlhMjczNWJjOGYyMWM5YWZmOTNkMGZmM2YxMTJkNjggcHkzaworODE5NTkgYjAwYzczNjU1NWRlNzBlM2NkMmVhYTQ3YzAyYWM0N2IyNTY3YzkwYiByZWxlYXNlMjYtbWFpbnQKKzgxOTYwIDBmNWQxMTRlZmYwMTQ0MmEzYjIxMGNkZmZlY2M4Y2NlODcyM2ZjMGEgcmVsZWFzZTMxLW1haW50Cis4MTk2MSBlNTg1YjI0MzFjNGE1NDY5ZDViNDk4YjYyYTgwY2VhOGQ1N2FiM2Y1IHB5M2sKKzgxOTYyIDUyOTViNGRiZjM1NWE4NGQ2OTEwODQ4N2UxNTc3NTc1NTdlMTA5NzAgcmVsZWFzZTMxLW1haW50Cis4MTk2MyBiOWVjZGNlYzBmZjBkOGJkYzFmODhlNDNkZDI1MGRjYmIyNmYzMTZhIGxlZ2FjeS10cnVuaworODE5NjQgOGYxMzdhNWM0MTNjYTMxNjI3ZTlmNzlmZGVlNzllMzA1MjY0NmE4ZCBsZWdhY3ktdHJ1bmsKKzgxOTY1IDdhYzYxNDhlNmE3Zjg0YTZiZGVlNGFlNjk1YTcyMmMzNDAwMjBmMzkgcHkzaworODE5NjYgNGVhYzEzNWEzM2FmZDY5NGQzNzAzODUyZTQzZGRlYmNmOGE5NmJhMyByZWxlYXNlMzEtbWFpbnQKKzgxOTY3IGNmZjBhOTIzMTQwYmU4ZWM4Yjc4OGZiOGFmZTZlNmMxMTdjYTBhM2MgbGVnYWN5LXRydW5rCis4MTk2OCBkMDY0ZTg5MzRmNGQwY2NlMDRjOTVjYTVhODBmOTBlNTgxZmE1YTQ4IHB5M2sKKzgxOTY5IDJlNTJmYmNhYWE3M2JkZGMyMzExODE1MjUyOWQ1MTBlMWFiM2M1NDAgbGVnYWN5LXRydW5rCis4MTk3MCAxMzgzYjg0YjE3YWNmNzZjZTUxZjU3MzAwYTE3MTE5OTI0YjkzNDVhIHB5M2sKKzgxOTcxIGY4MmQ5NmI5ZjAzZWRhYWFkZWNiNDVlYjRhZTE1MzI3ZGRmYzEyMzcgbGVnYWN5LXRydW5rCis4MTk3MiBiMDg0YzBhOTM0YTdlOTYzODE3NDlkOGY1ZjdjYWNiMDZlNWRhYmZlIHB5M2sKKzgxOTczIGIzMmEyODE2ZjZlOWM3ODQ0MzkzYmRmNTEyZDk4NzRjZTJiZGVjNTMgcHkzaworODE5NzQgMDg0MGEyODNhZjVmOWFiNjJlZGFlY2I3MTlkOGVmZDgzOTkyZDRmOCBweTNrCis4MTk3NSA5Y2I5MDE2OWIyNWE4NjNkZjcyZGY4ZjVmNThlNzUyMWJhNmU1MDEyIHJlbGVhc2UzMS1tYWludAorODE5NzYgOTliODBjMjg4ZmFjNDVlZWQwZjgyM2U2NzJlZTZiNzVjNWQ1ZTIyNSBweTNrLWNkZWNpbWFsCis4MTk3NyA5MmI4YjY3ODQ0ZTEwMTdkNjZlNjlmODNlNjc4YTg2YjNhNDgwMDg4IHB5M2stY2RlY2ltYWwKKzgxOTc4IDg2N2I5NzZlMzQ5ZGFkMjM5OTdhODc4MTU1MDBiMTNkYWZlN2VjMWIgcHkzay1jZGVjaW1hbAorODE5NzkgMDcyM2VlMTk1NDdiOTU2MTVjMDZkYzExNTQ1N2M3MmMzYjA1YWE1MiBweTNrLWNkZWNpbWFsCis4MTk4MCBkNzhiMTU4MDg3MTBhN2Q2NzVkOGJhZjk0MTIyMzhlMDFmYWNmMTM5IHB5M2stY2RlY2ltYWwKKzgxOTgxIGI3OGE5MThiN2EwZWM2NGJlODljMmM4ZGFjZGYwZmE5NWFhYzE2ZDUgcHkzaworODE5ODQgOWJlNjBjMTg1MDMyYTY1ZTIyYTU5NjE4OTQ4MmI0NzcyN2M3ZDAxZSBsZWdhY3ktdHJ1bmsKKzgxOTg4IGVmNWRlNTZmMjRjNjRjZGUwNjA0YjNmNzExNDVmMzM3YjIyMjVmMDEgcHkzaworODE5ODkgNjIzYjczODExNmQyNDJmMGJiY2JmYmRjNWQ1OTE2ZTdhMzIwZjMzYyBweTNrCis4MTk5MCA5NWI1Y2EyNDY4Y2M2MGEyY2QyNDY0YjNlMzM3OTk1ZDIxZjQ3MWM2IHB5M2sKKzgxOTkxIGE1N2Q1OWNjY2I4ZmE1Y2ViMmEzYTIzZDMxNTc5ODEzZTAxYTYzMzEgbGVnYWN5LXRydW5rCis4MTk5MiA2ZjliMGMyNDAxOTFkZjczYzJmMTA1N2IxOTYyMTZiNjBlOTJkZDBmIGxlZ2FjeS10cnVuaworODE5OTMgOGYzZmNjMjM5NzgxYjc2NGMzNTEzYjFhZmZhYTBkZjhiMDhlMzFjYiByZWxlYXNlMjYtbWFpbnQKKzgxOTk0IDBlYmM3MmUzNjZhMWQ5NmZiOGU4Y2M2OTU1ZjcyODhhOWU4NGNjYWQgcHkzaworODE5OTUgN2FjMGY2N2ViYmJhODk0YmNkOWIwYjY1ZmE5M2E2MzY3YjZmYjU4NiByZWxlYXNlMzEtbWFpbnQKKzgxOTk2IDkxYmI1NzJiNzU2ZTA2ZDQ3NmQ2YmRhMDBiMDRmYzhlOTgwNjMzNTYgcmVsZWFzZTMxLW1haW50Cis4MTk5NyAzZWE2NmUzYTEyOWE0Zjk3YjNiN2M2YzQ4NWU3MjdkZDQ1Y2MwNDg4IHB5M2stY2RlY2ltYWwKKzgxOTk5IGU0M2FiNTJiNTdiMjM0MzllOTg4ZWNmMzRiNGQ3NWU4YTUwYzUyM2IgcHkzaworODIwMDAgMzJjNGZmZjQ0NWFkMmNmZmYwOTdhYzhmZTRmMzM5YTUzMjUwZjE4MyBweTNrCis4MjAwMSA0OWRkNTk5MTUwY2E3MTVjMjFlMGE3OWFhY2FkNjljNmZlOTE2NDVhIHB5M2sKKzgyMDAyIGZhODk3NzMyNGVkODY3MGFiMGFlMTdmNTljMmYxOTMyNTRhYzM3OGEgcmVsZWFzZTMxLW1haW50Cis4MjAwMyBmMTlhZTVjZWM4Y2U3OWYxNjA1ZjkzYmIxYjVmNTYzZDhhYjgwYjNiIHB5M2sKKzgyMDA0IDM1NGI3NTFlNDZkNjFjYjcxZjU5NDBiMDA4ODYyNDhhYWVhNzVkZDYgcHkzaworODIwMDUgMzU2ZDBlYThlYTM0N2YwZDdkMGFkYWE3NjUxNmEyNWU2YzZjOTlmMCBweTNrCis4MjAwNiAyNDY2YWZlZDZmNWVjZTY5ZTE1M2JhNjNkNzJlYWQ3ZThjMGUzNTExIHB5M2stY2RlY2ltYWwKKzgyMDA3IGI4NDg4NzM5ODc5ZWM5OGE1MDEzM2UxNzhkZTc0YjQwZGY4ZTJjMmYgcmVsZWFzZTI2LW1haW50Cis4MjAwOCA4MTg1NWNlZGMxNTZmNTk4Y2I2OTM4ZDdkOGFlNTg1YjUxZTA3NzY4IHB5M2sKKzgyMDA5IDQ4ZjU4NTk3NjBlZjRhM2JiMjg1ZjZiN2U2ZjgzZTc5MTU0MzM1NTYgcmVsZWFzZTMxLW1haW50Cis4MjAxMCA4YTg3YzVhZmFkZGFiZTMxNTg2NjEwY2Q2OTVmYTQ4MWJlMTEwNzRlIHJlbGVhc2UyNi1tYWludAorODIwMTEgNTg0MTM2NzZiZWZiNjRiYzMwOTQ3YTdlOTI0YmZiNWVjYTJkM2M1MiBweTNrCis4MjAxMiAyMmVhNjk2YWE3N2FjNjNlNTNkMjJiNmNkZDQ0MzQ5MWMzMDE0ZWVjIHJlbGVhc2UzMS1tYWludAorODIwMTMgN2JjODFmODUzNWVhNDE2MDRiNGZkOWE5Nzg5NTA4NmRjYjM0NzNjNyByZWxlYXNlMjYtbWFpbnQKKzgyMDE0IGFkYjhjODFjYzM5YTQ0ZjEzMDJmNDg5MjU2YjQ2M2JhY2I5ZmY1MjcgcHkzaworODIwMTUgOWRjODRjNDI0ZTQxMzY1N2FmODdmMzg3OTE2Y2Q0NzViNDZlZWYwZCBweTNrCis4MjAxNiA0MjJhMTgzZTBiYmRjYzcyYTgwNjVkMzgxZTk2NGI1NzhkNzgwYzMzIHJlbGVhc2UzMS1tYWludAorODIwMTcgMDAzMGE3NDcwNjY2MDExNmJkYjJkM2NjMDU0ZTk3ZjBkZGU0YmIyZSByZWxlYXNlMjYtbWFpbnQKKzgyMDE4IDg0ZmVmYmYxZDZjMDgwYjJiMTUxMzFjMmY4NGViOTQ5NjI1MGU2ZTMgbGVnYWN5LXRydW5rCis4MjAxOSBlNzUzNTYyY2MwMjNjMDNmMWFhYTM1MDgyNGIwNTVjY2VlMTE0YmM4IHJlbGVhc2UzMS1tYWludAorODIwMjAgYzQxY2I0ODRmMDkwNmNlMGY2YzM3NjUzOWRhNzM2ZTQzNWUwYzEyYSByZWxlYXNlMjYtbWFpbnQKKzgyMDIxIGQzMGY2YzU5ZjgxMDc1NzY5MWY1M2FlMGQ5YWQ5MDdiNTcyNzkxNzEgcHkzay1qaXQKKzgyMDIyIGQzMzc3ZWJkM2VlNTRmZmQ3N2ZhYWJmMjUxMGE2YTIxYzBhNjAzODYgcHkzaworODIwMjMgYjQyMzc3MDNhMGNjNTE0MTFmZWVhZjA3OWNjNDlmZDMxZGI2OGU0MSByZWxlYXNlMzEtbWFpbnQKKzgyMDI0IDgxMTM1Y2NmNWY1NWUzZTIwZGY2ZmE5ZDUwZTM3NWU3MjczOWE1YWEgcHkzay1kdG9hCis4MjAyNSA1NWUyNGMyNDNlMmYxYTg3Y2I5YzA0YWFmMzA2Y2FiMzliNzI3NDY2IHB5M2stZHRvYQorODIwMjYgYzY4NDVlODMwODZmNWY4MzE1ODk3ODRmZDJkNDkwOWMxOWM2YWVmMSBsZWdhY3ktdHJ1bmsKKzgyMDI3IGRhM2M0Nzk0ZDZkZDZjNTE5OTc2Zjk4NGVjZmE2Yzk3NmYyYTE4NmIgcmVsZWFzZTI2LW1haW50Cis4MjAyOCAzNDZjZTI1NWE1MmZlZjFkZWUxYzZhZjFiYzQyZDc4NWQyY2IwNWM0IHB5M2sKKzgyMDI5IGU0ZDUwNjQwZjA3NzdjNDc4NmY2MTQzYmJjZDQ3YmNhMDEwMzk2YzggcmVsZWFzZTMxLW1haW50Cis4MjAzMCA3MzU3ODJhMjc1ZjUwYTg1NGM3YjUxOGI2ZGM1OTEyZTM2N2RiZmJlIHB5M2staml0Cis4MjAzMSBmMzQxMzU1M2Y4ZjVlYTFhMjY5MmJkZDc2ODc1NzI5NjYyZjQ0YmE3IHB5M2stZHRvYQorODIwMzIgODU2Mjc2OTUyZTA4NjM5N2E1MDU3ZDI2N2Q0YjUyMjRkM2NhNTE5YyBweTNrLWR0b2EKKzgyMDMzIGJjYzBhOTk3ZjMyMWZjYWUxZDRlMTQxMTc1Y2VkZjY1NmZiMTM2NzAgcmVsZWFzZTMxLW1haW50Cis4MjAzNCA2ZDNiMDVhNDI5YjVhY2E1ZTJmNTBmYzQ0MTlhZTY4MGNjYTc3YmU1IHB5M2sKKzgyMDM1IDJkZDFmZTcwNDdmZmQ5ZmQ3NjZhZmJmNWFmYjIxNjg4NjI0ZmE5MjAgcHkzaworODIwMzYgMWIwOGE1NDE1NTFhYWQ4NjdlYzU5ZjhiNGNhYWIzMmU0ZmRhZDkwMSByZWxlYXNlMzEtbWFpbnQKKzgyMDM3IDI4M2Q5NDcyZGY0ZWQzYjdhNWJmODAwNGY0ZjFkNmUxYjgzMDA5NWYgcHkzaworODIwMzggODA3Y2RlYTQ3ODE3YmJlNzgyZTc4NjcxNGExMmQ4OWY4ZDFhYzkyOCBweTNrCis4MjAzOSAwMTdlNjBhZTYwNWY0YmUxZTIxMzY1MmFlMDE1MzkwOTViNWYyZTQ1IGxlZ2FjeS10cnVuaworODIwNDAgZjU4ODlmMmFjMzliYjM4ZTIyNjkwNTFkMzI1NjA5ZDNiZjk4ZjM0NSByZWxlYXNlMjYtbWFpbnQKKzgyMDQxIDJiYjBhMjdhM2UzNWM0MjdjYTBmZmIzNzI1ODkzOGE3MWRiOGU0ZjggcHkzaworODIwNDIgOGNjMGUxYzliYTZkNjA5ZmI4YTUzNWI3M2QwN2EzODI1Y2MxYWJlOCByZWxlYXNlMzEtbWFpbnQKKzgyMDQzIGNiNDk5N2I2YWE4YmU2OThiOWZhODkzOWQxNWFhZTJmN2NhNTZiM2YgcHkzaworODIwNDQgMmNjMDlmMDY5NTBiMDQ4MjVlMjM3NmUzZTEwYWY4MzU0NTU1Mjc3YSByZWxlYXNlMzEtbWFpbnQKKzgyMDQ1IDRkMjU2MzlhM2IxNGJkNmJjZTJkOGZjNDgwZTAwYTZhMWVkZDkzZWMgcHkzaworODIwNDYgYjFkNmNjYWQ4ZWFkNjY2NjRmMDZiMGI5Nzg5YjQ4MGQwN2FhYjRlMiByZWxlYXNlMzEtbWFpbnQKKzgyMDQ3IDg0ZWQzNDQ2YTI5YTFiODMwZjZiYWU3ZDBhZjM2MGQ1N2ExOWM1MjAgbGVnYWN5LXRydW5rCis4MjA0OCAxNzY0ZTBiZTQ4NGM2YzgyZjQwMGM5YTI2YjM1YTgyNTM3ZDVkYTlkIHJlbGVhc2UyNi1tYWludAorODIwNDkgMmZlMDgwMmM0MmM3NDVkY2U3MmM1ZmUwNzgwNWYxZjMwYjYyMzA3YiBweTNrCis4MjA1MCBjMmU3M2Q4NDRkODIyYmQzMmU4NGRkYmFhOTMwZDliNThiYjY2ZWM4IHJlbGVhc2UzMS1tYWludAorODIwNTEgYzQ4ZGRjOTZmNDU0YWUyOGI0MmZiODY1N2JiZTVjNTcxNWZlNWQ4YyBweTNrCis4MjA1MiA2YmZkY2QyNWVlYTcwZGYwM2UzY2IxMzI2ZGU4YzMwMGFhMTQ4NjUyIHJlbGVhc2UzMS1tYWludAorODIwNTMgNWMwZDhjMjg0YzMyZGM4ZTdhMDI2OTNmMjkyZDhiZTBlNjE4NzVkNyBweTNrCis4MjA1NCA2YTk5OTBlZjRhNmY1ZTk3MzJhMzk4YjFkYWIyN2Q4MzM5MWMzMGNhIHJlbGVhc2UzMS1tYWludAorODIwNTUgNDZhYjVlNGRiYTZiYWM3ZDFlN2JiMjBkYmNmZTAwMDVlMjhhNjYzYiBweTNrCis4MjA1NiAxZGE3NzMzZThmMjQ3MzFhMGI4OGRiZDY5MDc4MDRjYTAyYTExZGMzIGxlZ2FjeS10cnVuaworODIwNTcgZjNkZDkzMDY2NWJkMTc5MzYzMDg4MTMzMDRhMmM0MDg0YzViYjA5MSBweTNrCis4MjA1OCBkYTFhYWZhNTVhZTAyMzllZTUyNmZlYzg0YTRjNDA0MjY2YTEzMWNkIHJlbGVhc2UzMS1tYWludAorODIwNTkgOTA3ZjU2NDQ3NmJlNjY5ZWJlYWVkNDE4ZWZlYWQyZWJlNjBiZmNhYyBweTNrCis4MjA2MCA1OWM2MGE1OWIyN2E1N2U3YzRlMTYyYjZiZWQyNjRkZjAyYzZmZGI2IHJlbGVhc2UzMS1tYWludAorODIwNjEgOWQ0ZDRhYzBhN2JmZTgxMTc0YWY0ZDAxMTVlY2ZkMGQ0YTZhYzE5MCBweTNrCis4MjA2MiAwNzQ0OWIzNjc5MzU3ZGIyZWVhOTZhODMwMmRmODdjMDNjYmE1YjVjIHJlbGVhc2UzMS1tYWludAorODIwNjMgZmE4MzAzNzFjNzI0MTc0ZmJhMWI1M2EwOTkxZjBhM2Q1MThkMjEwNiByZWxlYXNlMzEtbWFpbnQKKzgyMDY4IDRkNjliZGI3MWM5YWQ1MWNkYzY4Njk2NDUyNmMyNTZkYmYyNzhkM2QgcHkzaworODIwNjkgNDYzNTYyNjdjZThmYmI1OWQ5YjA2NzUyODg1N2RhODEwMmZhZDVhNiByZWxlYXNlMzEtbWFpbnQKKzgyMDcwIGU1ZjUwMDhmZDU2ZDUwZjQ5ODAzYjVlNWRiMmY4OWJiNzBiOTI4MzcgcHkzaworODIwNzEgYmY5NGViOGZhZjYyNTM3ZmQ3NDQ2YmU0M2Q4OWM5YjIyYjM1MzVlNiBweTNrCis4MjA3MiBlYTI1MTI5Yjk0ZmVlYzUwMDk4NDgyYzRlZmE4MjVlZDcxZDUzNjU2IHJlbGVhc2UzMS1tYWludAorODIwNzMgOTBjYzI2Njc5OGEyNGZjNTBjMTViNzYyMWMxYjM0ODQ4OTIwMTE2NCBweTNrCis4MjA3NCBjNTRkZDU3NmRkMDU1NDgyZjFjYzE3MzA0NGNlN2VkMGQ1OGQ2MzYxIHJlbGVhc2UzMS1tYWludAorODIwNzUgZGE1NTg0NjFkOWE5NGJiN2VlOWU3OWZjYzJiYzBlMjRmZThhZTcwOCBsZWdhY3ktdHJ1bmsKKzgyMDc2IGVmOGEyYWIyNmU5ZmVmZWZiMzlmNTdmOWZjMzIwYWY4ZmI5NGM5ODEgcHkzaworODIwNzcgMWYwZTA3ODFmNzNlNDYxYjFhNTk5MGIxNWIxZWI1OWY4OWYzOTgxOSByZWxlYXNlMjYtbWFpbnQKKzgyMDc4IDVkZTUyZWIyNTJkYTcwNmRhM2Y2OTU0ZDUwZTFlODRhN2MxM2MwZjkgcmVsZWFzZTMxLW1haW50Cis4MjA3OSBkZDcwMDUxNDVmNmU2NWYyMzZlYWI1ZjIwODU4Nzk5M2IyYjNkM2NiIHB5M2stZHRvYQorODIwODAgMThiY2Y2YzJkMWUzN2IyODE4MTRmNDQ0MDU5NGQ4YmI3ZWJkMzVhOCBweTNrLWR0b2EKKzgyMDgxIGY2NzY3ZGRlOWIyOTg5Yjg3ZmYwNjMxNjYwYzdhNzk2ODZhNGUyNWMgcHkzay1kdG9hCis4MjA4MiBiNGE1YTg2OWUxYzU5ZDhhZjM1OTk5YTI2NmU4ZWRiYzg4YTY3N2ZjIHB5M2stZHRvYQorODIwODQgM2FmYzdkOGE0NDVhYTVhYzk1ZjIxN2M1Mzg3YzYzNzliNWM1NzU1ZCBweTNrCis4MjA4NSAwZGE0YzdkMWYzZWYyMzNlNWEzNDNlNjRmZDVjMjk0OWRkZDU3NzNlIHJlbGVhc2UzMS1tYWludAorODIwODYgYjkwMTlmMGRkODlkM2UxNzY5MTI1MmQxMjhmMTBhODM1ZjEwYmRhZSBweTNrLWR0b2EKKzgyMDg3IDQyOWIzMjlhMDNmODMzNGE2MjhjYWRjZjJlM2E2MzNkMTAwZjJhNDkgcHkzay1kdG9hCis4MjA4OCAzNDMwMDVjNGE0ZTNmNWUxZTFkYTA2OTk5NjI2NzJhYzZmNzIyMTQ0IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA4OSA0NDZhOTY2ODU4ZjE0ODFlNzA0N2JmMDI3ZWMyNzZlNDViNzIyZWZhIHB5M2sKKzgyMDkwIGM0ZjVjNzM0ZGE2ZTRjMTM3YWQwNjI2OTMzYTAwODc2YzU5ODQ4YzIgcHkzaworODIwOTEgNWEyOGM2Y2I0NzUyN2I5ZDQ3NzkzZmViZDhmYWUwOGQ3MzQ5MzUzNSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTIgMDY5NTM1ZTUwYTllNGZkZDRkZjBkYjZiZGU2ZmY5MTI1NWY1OWNjNSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTMgNDY2YzE2MmM3MzBjMjBjZDRkYzc2ZDM0ZGRhYWJlNGYyZjlhNjczMyBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTQgODlhNDJlMDcxM2RkYjllZWIwOWRmNTAxMzBiM2FiYmNiOTg0OWZlMiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTUgZWQwNzc0MGM3NjY3YWZmOWU5YTcwZmE1NTFjMDUzMTFlNzk5YzlkZSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTYgODgwYmRlNWFiN2M1NDM0NTMxY2Q0ZDMyNjc4YmM3ZTdmYjQ2MDIwZCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTcgYWM1ZjU1MzdjNzNiNmRlNDc1NGNlOTE0ZTBjYjdkMThkMjk0MGY1ZSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTggODBkNDgwMDc3NDMzOWVlYjUyYmY2OWFkNmM3NjNhZmU4ZjZiZTc2NiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTkgZjczZmEzNWY2ZjA1ZGU0NWI1ZGE2ODFkZjA5MzUzM2U0Yzk0MDY1NCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDAgMzVmODAxNTI2Mjc4ZDRhNGQyNjhhMjZkZjdjNjhjY2IwMWZiNDhlOSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDEgNWNmZTA1ZjJhNGU5YzU2YWMwY2EzNjIwMzg1NTVkNTAzMmNmOWYyZCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDIgY2VjMWI1NTg0NTE3YjA5NzUyN2UzNGM4MjU5NWQ2OTc0OTMyZjVkNyBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDMgODA2MTNkY2Y4MDkxMGQ2ZDBiYWUzOTcyOTUzZTAwNTM3MWNiMTgwNyBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDQgNDgzZjM2MmI4ZWMzMDQzODMyYTYxMTdmNDQ1YTUwM2U4NjVhOTcwMCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDUgMzA2MzM2YTFjZTI5MTE3MGFlMzgwNDM2NGU0ZmZlMTZmZmJiYzdhNiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDYgYTU2ZmFhNmI4ZmEwMmZkNjY0OWMxMTllNjVlNWJmOWY2N2UxOGI2YiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDcgMTk5MWE5YWFmZjVlMzk4NTE1MjI3ZTIzNTQ1NmM2MmUyMDczZTYzYSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDggYjYxNDY0N2EzNDAwNTJiNzE3M2UwMTM0NWUyNmRiYTVhYjU2YThhOSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDkgZWJhYzJlYjcyNTViNjU1M2IxZTczZDdkZDhiYTU5OWE2MDg0ODhiOCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMTIgOTM4OTZhMDk0NmMyZWY1ODRhOTdjNTNkZjA1OTQ4ODYzYTcyMmIwNyBsZWdhY3ktdHJ1bmsKKzgyMTEzIDVjODRmY2MxZDkwNmVhZWM5YjVmZDQwMDM1ZDdiNTE5MjMxOWYwY2MgcHkzaworODIxMTQgNmQ5NzQ2Y2Q5MzVjNjBkN2Y1OTc3NGY1MmUyNGQ4MDA4ZjhiZWFlNSBweTNrCis4MjExNSA2NTRlNTNlNzVjZDJiMDJjYWMzODAwNzExNzIxZTc3MWQwYjllNTUzIHB5M2sKKzgyMTE3IGVlMzVmNzE1Njc2MTJiMWU1OTc4ZDVjYWYyYmU0MDkyM2ZjNGU1N2YgbGVnYWN5LXRydW5rCis4MjExOCBjOTE1MzhjMWE3ZTZjMDc3ODgwOGQ5OTg1OGM1NzczMDIxMTk0NzcxIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjExOSA2YWNkZGI1ZmU4ZTIxYmU2ZGFjMDg5NThkNzMwMjU5YmY4ODdhMDQyIHB5M2sKKzgyMTIwIGJkZWY0NTRmNzIxMmE4YmFiZTAwZGY2YzlkOTFjNTc3MzllZTUzYzggbGVnYWN5LXRydW5rCis4MjEyMSA5MjM3MzUxMzcwMzBmMmM0YzkwNzEyOWIxMzdkMTc4MTMxYmU4NDk2IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyMiAzZjA5Y2MzOGU5N2UzMGNlMzM0MWRhMzVhMmEyNzkwODVlMWEzZjliIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyMyA5NjVhNDRjMmIyOTdiOWI2Y2UyYzg3NDBlYjE4MTAzZmRhOTZkZGE0IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyNCA1M2QzZDA2OGJmNGM0YjllNzIwZGVhOGU1ZjFhNzhhOGEyMTg1Y2NhIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyNSA5ODYzYmM4NjMwYTM5ZGQ3M2FhNmU3ZDY4YmY1ZGVmMjY4MzZiYjc3IHB5M2sKKzgyMTI2IGNlMjFlYjVjMTdhNWYzMDNjYzI3OWIwNTRjNDA0ZjdmNzAyODVhZGEgbGVnYWN5LXRydW5rCis4MjEyNyBkMDE0ZDFmNjU4MjMxOTVjMTFhZmMzMWEyZWE2N2RiMmVjNWZkZTlhIGxlZ2FjeS10cnVuaworODIxMjggZGQ4ODA1N2IyN2IxY2Q5ZjViZTliZGYxYWE0MjViYWRkYTFiMzk4OSBweTNrCis4MjEyOSBmM2Q0NWM0NDNiMTM3OWUxOGJmN2Q4YjY4NzJmZDIwYTcyNzY4NzE3IHJlbGVhc2UzMS1tYWludAorODIxMzAgMWE4NmQ4NDVmYmM2ZjM5NGFkZDZhNDIwYzI3Zjk4YTgyNTBiY2I1ZCBsZWdhY3ktdHJ1bmsKKzgyMTMxIDczZjhmYWNhMjkwYmZlYjY0MGNjZmJlNDFlYjY4NmMwMjUyNTllZjcgcHkzaworODIxMzIgYTEwMWQwNzNhNWNkMWZiYzQ1NGZjYjVjMmYwNTU1ZDU2NjVlOWNkNSByZWxlYXNlMjYtbWFpbnQKKzgyMTMzIDFhZjk1Njc0NTg4ZDFkM2FlMmNhODg1ZWQwMzIxNjBmODk1ZTJiODMgcmVsZWFzZTMxLW1haW50Cis4MjEzNiA1ODE3Mzk1YTA0OGU1ZmYxNGZjODUxNDc3MDZlZmJmNjA1ZjUwN2ZhIGxlZ2FjeS10cnVuaworODIxMzcgMTNlNWIwYjIwNzFhMmE0MjA2N2ZiMDNmYWNjOTMxNDA5ZmE2YmE1MCBsZWdhY3ktdHJ1bmsKKzgyMTM4IDdlNGNkNzAzYTE4YjczMzNlODg3YjU1Yzk1NzEwNDA5MjFjNzI5ZDkgcHkzaworODIxMzkgMWYxMGM5MTJjMTI3ZmMzMGRmOWZlNjMyMjE2Y2RmZjA1OGY5MWRmYyBsZWdhY3ktdHJ1bmsKKzgyMTQwIGRhYTkxODg4ZGE1MmEzOTY2MzU5NGQ0MWIwYmYzNzgxOWEyOTIwYjcgcmVsZWFzZTMxLW1haW50Cis4MjE0MSBmMjY4YzJhZTA4MzVmNDI0YjNiMDdkZGU5Yzk0Y2M1NDE3YzNlMDIyIHJlbGVhc2UzMS1tYWludAorODIxNDIgYWY3NTFhMWQ2ZjQ0OTQ3YTI0MTQzYWVjNTVhNGE3MDc3OTIzOGFlOCBsZWdhY3ktdHJ1bmsKKzgyMTQ2IDBjZDk5ZjhjMzBlMTM5MDAwOGE5NWUxNDBjNjRjMjk2NDg5MDRiOGYgcHkzaworODIxNDcgMGFmZDc2MGU3Yzc2NTMxYjBkZmQ0MWFiMzAwNTVhMTQ0OGYyMGRjNCByZWxlYXNlMzEtbWFpbnQKKzgyMTQ4IDBiN2FjZGJkMDJlYjM0Mzg0Mjk2OGM3ODU5YzNiMmYzN2M1YWZhODkgcHkzaworODIxNDkgNWEzMjVlMGYxZmQwMTM1N2Y4NGI1OGI1ZWVlMTUzNjRjNDM2N2FiMiBsZWdhY3ktdHJ1bmsKKzgyMTUwIDZlNWQyMWUyMjNkMjI0ODQxNmY2OGVlZDBkNGRhZTljYmViM2U4M2EgbGVnYWN5LXRydW5rCis4MjE1MiA1NmVkNjhjMjE1YTcxZmY5N2E0MmZmNTk2OGY1Njk1MjJhYjNjMDExIHB5M2sKKzgyMTUzIDVkMzJiNmFmYjUyZWVlZDkyNjRkNTI2MDUyMzdkNjMxMTU0MzdlZmQgcmVsZWFzZTMxLW1haW50Cis4MjE1NSAxMDhmOTRkNTNlZGJlMmExZDBhYjgzMGIwOTJiNGIxNzRjM2FiODk4IGxlZ2FjeS10cnVuaworODIxNTYgZDlmY2JhNGNjMTQ1NDVhOWE4NGU0ZmRmNzlmODBiMDMzMmE0ZWE3YiBweTNrCis4MjE1NyBmOTE4ZDM1ZWM1NmI4NTI4OTAzOTQ5ZTYwZmIwMzAxOTk3YTAxYTQ4IGxlZ2FjeS10cnVuaworODIxNTggMzc2ZTgxZjllYmIxZDM5MWY3YzliYTBjNmQxNTU3NmQ5NzRkYjk2MSByZWxlYXNlMjYtbWFpbnQKKzgyMTU5IDkwNjA2M2NlNzExOTY1OTU5Yzk5ZGI0NWJmODUxMGFkOTNmNjc0ODcgcHkzaworODIxNjAgMTg2MzVjYmQ2NmUwYTMzYWQ0MjllNTU0MWE3ZmY3MDk3YTJmZjQ2OCBsZWdhY3ktdHJ1bmsKKzgyMTYxIGY3OGZjYjFiMjNmNWI4ZTAwMTAzZGMxNmUwODAyYjUxYWUwMDdmM2MgbGVnYWN5LXRydW5rCis4MjE2MiAxYzY5NWMwYWFmZmI0OGMyZDIyNmM1YWE3ZjJlMDQ2MGZiYzY1MWFhIHB5M2sKKzgyMTYzIDRlMjRkZmVkZjgwYzUxZTUwMDlhYWI5NjQyYWVhNjg4NjFhNjY0NzAgcHkzaworODIxNjQgYTEyMDZhNjllNzdhNTNiOTBjYmQ2NmNhMDRkNDkyYWYyZDFlMGEzZCByZWxlYXNlMzEtbWFpbnQKKzgyMTY1IDUzYTE1MmI0MDBhN2U1YmM2M2MzZTcyOGQ5ODI0MmVhMTJiMWE2YjAgbGVnYWN5LXRydW5rCis4MjE2NiBmMTdhMmMxZTI5MTkyOGM0NjM3MTZlMDA0NzE3YzhkNjliOWViMmMyIHB5M2sKKzgyMTY3IDRkZDhjZmY2YjdiZWIxZjZmMTAzYzRjY2U2ZTA4ZDA0NmI4ODBjMTYgbGVnYWN5LXRydW5rCis4MjE2OCBkMTViZThiNWM3Y2FkOTZkNGZiZjNkMDZiZDFhYTkwZDUwZDZhYTBmIHB5M2sKKzgyMTY5IGU5ZmIwNDJlNDZmYjUwMDA1Zjc3ZWExNjQzM2U0ZjQxODVlZjQyZGMgbGVnYWN5LXRydW5rCis4MjE3MCA4ODM2ZDI3MTY3MGI2YmI4NjRmMWFiM2M0NGQ2NTJhOTkyMjY4Mzc5IHJlbGVhc2UyNi1tYWludAorODIxNzEgZWI5NWFmMGE5OWNiYjFiYTBhYmY1ZGE1YTQxOTZmOTU1NmIzZDM2ZSBweTNrCis4MjE3MiAyOTA3Y2U4YmZiYjYwMjc2MTdiOWZhNDA5ZmI2MjA0ZGJiOGM2NjZkIHJlbGVhc2UzMS1tYWludAorODIxNzcgY2E0ZjJlOTg2OWI2NzUyZmNkOWNiYWIxMTJiMTFkOTI2ZDc3YzZjOSBsZWdhY3ktdHJ1bmsKKzgyMTc4IDQyNmVmOWMzNzkxNmZhZmQzYjhiNWRhNDY2OTcyMTBlOWIyOWY2ZTIgcmVsZWFzZTI2LW1haW50Cis4MjE3OSAwNzQ4NTllY2RjMTg3MzIyZGE5NjIzNjdlZjBkN2FlZWRiNTEyNzBhIHJlbGVhc2UyNi1tYWludAorODIxODAgNzZiYzZiNTc3MzczY2Y1NGRmZWRkMWIxMGIyZjc0ZDQ5MzU4M2M3ZiBweTNrCis4MjE4MSBjOGQ1ZDEyMDVmZTgzMGE1YjFkNmE0MjA2MDFiNjFiYWJlZDBjYTE2IHB5M2sKKzgyMTgyIDBlNDYzN2VhMjBkMDAxM2E1NzBkYzkxMjA2OGRjNzQzODUxYzM4ODAgcmVsZWFzZTMxLW1haW50Cis4MjE4MyA2NmVmOWE3N2M4YWZkNWNjMTg1MmE2NzYyMmFhZTMyZTgxYWVhYzA1IGxlZ2FjeS10cnVuaworODIxODQgM2NmMzUyMzFmN2QzZWQzNzVhMWE5OWRmZDg1YjZmZjBiYzY2NmFmNiBweTNrCis4MjE4NSAzYWZlMzYxZWZjZjM4YmY4ODY2NWVhNzEyMzE3NDBhZjdjMTc3ZjVhIHB5M2sKKzgyMTg2IGNmNzk3NDFmN2EyM2ZjNTVmZTUwMzdhNzViYWNmM2E0ZWMxYzI3N2MgcHkzaworODIxODcgOTVkMjAzNWExNjRiOWIwNWUwNTQwZDY2YTgzNjU3YzE0YzUxMTRkYyByZWxlYXNlMzEtbWFpbnQKKzgyMTg4IDVmNDU2OTI0ODlkYTFmZDM1NjFkMDYzOWM2ODA0ZjNkMTBkYTdlZGYgbGVnYWN5LXRydW5rCis4MjE4OSBjYjFhYjhlOTE1ODEwNzA4N2UwMWMzZjllYTJmZTg4NWU1M2MzZTc5IGxlZ2FjeS10cnVuaworODIxOTAgNjFmYzg0YmM0YjE0NjI2NWQwY2M5YmQ5NDQ3MzY5M2FlMWRjZTEyNyBweTNrCis4MjE5MSBiMTdmY2RkMzhhNWI0MDJhMGEwMTE5YmNiNjBjMTIzNzA5MTE4MjUzIGxlZ2FjeS10cnVuaworODIxOTIgMGQ0MjQ1NDEyZDBiNTMzYjU1OTk1ZWRhMmE4MzQ2ZjAzZDI4NDEzOCByZWxlYXNlMjYtbWFpbnQKKzgyMTkzIGM1NTE1N2UwM2FiOTQzZjk4YmIyYTRmNDY5ODY4MjVlZjZiYWZmODAgcHkzaworODIxOTQgNDViYWE0MjlmYzQ5Y2NkOTkxNWI2ZDMyMDQ1NTMxNmVhYzk1YTI3ZCBweTNrCis4MjE5NSAzZDZmMGEyMDUwZTI5MjZmNzA5M2RhMmIxY2U5NTEyNmJkZmM1NThkIHJlbGVhc2UzMS1tYWludAorODIyMDAgNWQ1MzhkMWU3MDk4ZDk2YWExYjE5YWM1NTEwMzY3N2RhMWJhZTA2NiBweTNrCis4MjIwMSBhMzliNTJlZTBiMWQ0ZDkyZWFiNjJhYTk5ZGZhZWM5MDNiZDhmODQ3IHJlbGVhc2UzMS1tYWludAorODIyMDIgODkzOTcwMTQxNjA4MmEyOWJlNTE5NGYwZjU1ZDBmNTE1ZTZmNjM0MyBweTNrCis4MjIwMyAzNDc0NGE3NjE0M2E4ZTY1NmUxYjYxYTdjOTRmM2QzZDY4MjMzYzEwIHJlbGVhc2UzMS1tYWludAorODIyMDQgMjFlODZkZDMyOGYxNTdlYzVmYzczMTFmNzUxOWQ1ZDNiM2Q5NzI4MSBweTNrCis4MjIwNSBiOGIwYTE1ZjhhN2NhNGU4NDMxYmE5YTBhNTNlYjM4NGYyZmQzMDIwIHJlbGVhc2UzMS1tYWludAorODIyMDYgYmI2MjIyYTRlZDI0MjZlOWM3YmVjYzk4NzVmMWMwOTViMGUxZmJiMiBweTNrCis4MjIwNyAxM2IyYTU5MmMxODY4M2UyZmRmZTA0NzZhMDgxM2I1YWQwYWJhMDAwIHJlbGVhc2UzMS1tYWludAorODIyMDggYmNjMGU4MjVmYWEwY2E4MGU5MzNhNzM4NGRlYThmYzk0OTI5YzBlMSBweTNrCis4MjIwOSBjNGRkNWE4ODllY2RmYjY4M2ZkOTY1ODZlZWM2YzJkYTUwYjM5OTc2IHJlbGVhc2UzMS1tYWludAorODIyMTAgNDZiNDg3ZTRhNzViOGMzOWYwODgwZmQzYzljODY4M2E0YzYzZTkyMiBsZWdhY3ktdHJ1bmsKKzgyMjExIDU3MTE1YWIwNmIyNzgwMDYxMzZkYTM5ZWY0ZGI3N2I0YTkyNWJmMzYgcHkzaworODIyMTIgNTk4ZThkYzE4YjgzZTg5ZDZiNzAyYzk0MjVhMWZkMGFiYjljYjk2MiByZWxlYXNlMjYtbWFpbnQKKzgyMjEzIGVmNjQyZTI0MDQ3YWI2ODE1NjQ4ZjNjOWUyZGM3OWIxMTFlN2JhMzUgcmVsZWFzZTMxLW1haW50Cis4MjIxNCA0ZTA5OWU1MDA0YTFlODI1Y2MyNDRmMTEzNzExNmE2YTU3OGQ2YTU3IHB5M2sKKzgyMjE1IGQ5NmFjYzQxYzU5ZjJmNDc3ZDRhZGE1MWI0ZWRjMjI4ZDRkZGEzZjggcmVsZWFzZTMxLW1haW50Cis4MjIyMCA2OWZkZjY4ZTBiNWI0NjA0MTE1MmIyMWIwYzA4ZWI5NDdhNWUwNzE1IHB5M2sKKzgyMjIxIGJhNTU4NDRiZjVjMDMxNGI2OTU1M2YxYmI3MzdiMjZlYjk0NzZjOGMgbGVnYWN5LXRydW5rCis4MjIyMiA4M2NhMGVhOWVmMWZiMjE2Y2FmY2Y1MGU1ZTZhYmJlMGRmNmE2NGQwIHJlbGVhc2UyNi1tYWludAorODIyMjMgMWM1YzE0NmRlNjQyNWQwMGUwOWQwYWM4MzViOWYwZDlkNWU1ZjgyMyBweTNrCis4MjIyNCAwYzg3NDkwNzY3YmYxYzUxNjc5MjYzNmNjN2FlMjE3NGY4MDZjOTAxIHJlbGVhc2UzMS1tYWludAorODIyMjUgYjY2M2NmNmJiZThiMzcxY2JjNGIxMDZkOGZhZTk2MTc0OTI2ZDk1MyBsZWdhY3ktdHJ1bmsKKzgyMjI2IDA5ZWIzNjI2ZDJhYWU4MTFkNmU0M2IzMGVjZWUzOTMzZDM3YTU3OGIgcHkzaworODIyMjcgM2QzMTA4YWMyMmIyYzZlNTY4NTUxOTcwNmE2OGRhNTA5MjFiOWNmNyBsZWdhY3ktdHJ1bmsKKzgyMjI4IDJjZDIyMjU3YTg2ZDdiODA2OWE2MzBlNGE2MDRkMDZlOWU1ZGNlOWQgcHkzaworODIyMjkgYTM0ZmQ2ZjgxNjUxNzliZmEzNTJmZGYxZTFhOGJiZTgwMDQ3YjlmMCBsZWdhY3ktdHJ1bmsKKzgyMjMwIGUyNDk5MGQwNTQ0ZmZmZjlmMjRhNjc2YWNhNTBhYzVhOWExMWYxNDEgcHkzaworODIyMzEgZjIzMmM1NjlkMjI1ZDdjMTQ3MGQyNmM2YzAxYTVhZDdhNWM4Y2VhMSBweTNrCis4MjIzMiBjNTFiZjMxNTNmMmNhODliNDBhODhiNjA0YjI4YzBhZjEzNGYzMmJjIHB5M2sKKzgyMjMzIDFiYTBhYjAyZTNiODU3MDczNDFhYWZmMTIyMzdkZWZkMzI3Y2IyZjkgbGVnYWN5LXRydW5rCis4MjIzNCBjYjZkOWJkNTU5ZWZkM2FkMzM2ZTU5NDg1NWNlYTFhOWY0NGVlYThkIHB5M2sKKzgyMjM1IGE0NTZiMDBjM2I3NTNiZGQ5NjVlZTc4NTgxN2JjMDBhNTc1YjQ3NzAgcmVsZWFzZTMxLW1haW50Cis4MjIzNiA3ZGNjZTZhMjgxY2UyYmY2YTVkNDdlODk5OWYwZTkzNDIwY2Q3MmRmIGxlZ2FjeS10cnVuaworODIyMzcgMTUyYjQ0NjQyYjJjNDE3ZWI2YWUyYWIwMjRkM2ZlNmZmY2ZlNDMxOCByZWxlYXNlMjYtbWFpbnQKKzgyMjM4IDRhZmVmMmU0MGI2MzMyNDliZDYwYzM2NTZiNGVlNTNmNjZhZWExZGUgcHkzaworODIyMzkgMjE1NTJhNDhlYmQxOTY4ZGI5MTU4YzQ5NWZlNDliZTU3NzBhNTMyNCByZWxlYXNlMzEtbWFpbnQKKzgyMjQyIDJmNmZlZDYwNjEzZTEyYzhlOTIxMTMzNDBlYzZhYzVjMWIwZjQ3Y2EgbGVnYWN5LXRydW5rCis4MjI0MyA3YjA0ZDlhNjk4YWVlNjc2YzJiMDU4ZGJlOWJhMjU0NzYzZjEzZjU2IHJlbGVhc2UyNi1tYWludAorODIyNDQgZDE3MTI3NmVkNzZkYTcyMzM0Yjc4MDA2MmZkMmFmZGQxNWUzZDIyMCBweTNrCis4MjI0NSAxZGNhZTUyYzQ5NWM4NDZjMWNmY2Q2ZDhkYjlkMTEzMmI0NDU0OTc0IHJlbGVhc2UzMS1tYWludAorODIyNDYgMjllNTA5NzkzZDNjNDgxOGE4ZjBjNTcwYmY2OTVkOTA1MzU1YTQ4YiBsZWdhY3ktdHJ1bmsKKzgyMjQ3IGFkYWZlZTk1ODllNDQyOWFkYWIwN2ZmMmNjYTUxZmYwYmQzMGNjMTIgcHkzaworODIyNDggZWQ4OWIxYWFkYzkzZDJkMWRhNzkwODkzNTU4OTM4M2E0MGQ0NzI5ZiBsZWdhY3ktdHJ1bmsKKzgyMjQ5IGM5MTJiNWIyNGM4ZjJkMWIyNGE3MDc0NWYzMjZhMTg0YzcwOWMzOWIgcmVsZWFzZTI2LW1haW50Cis4MjI1MCAwMTRlN2MwMGRjMjgwNTgzMWYyZWYyNGYxNDY5OWFkMjViZTFjN2U1IHJlbGVhc2UyNi1tYWludAorODIyNTEgMzk2ZWI2NjBlZTliNDBiZDllZjI1ODUyZjUwMjMwN2VmZTZmM2JlMCBsZWdhY3ktdHJ1bmsKKzgyMjUyIDM1MmRkYTA3NzA3YmY5MjhkM2RiOWU5Y2U0YzhkOGYxY2JkOGZkMjEgcHkzaworODIyNTMgYTM5Y2ViNmNlZGUzMTVkODMzNTgyMzM3N2QyYWIzMjVhMjA0OTZjNiByZWxlYXNlMzEtbWFpbnQKKzgyMjU0IDQ1NmQ2YzVkMjZkYzZlNmU1ZWY2NTk2NzUwMWEyMGQ2NThhZjM0Y2QgcmVsZWFzZTI2LW1haW50Cis4MjI1NSA3ZmQzZjZlYWY2NDk1YzMwN2RlYjQ1OTY4MzMwODdjMWVhYmNkYzIzIHB5M2sKKzgyMjU2IDcwNjY4OGZlNDU5MzU2NzNmOTUzNDQ4Yjc4YTdiMjJjZmNjMzE1ZjcgcmVsZWFzZTMxLW1haW50Cis4MjI1NyA1ZmIzZjFhNzQ3MjZhNmI4M2Q5YWFiNGRjMDczZjgxZmUxMjE1YjczIHJlbGVhc2UyNi1tYWludAorODIyNTggZjZkNWVhNzY5MjcyNzk2MzQzMTgzMDI5ZTQyZjk2NDI2N2ZjMDM4MCByZWxlYXNlMzEtbWFpbnQKKzgyMjU5IGU0NzUzODU1ZWMwMWJiZTUxNjE0NzIyN2I1MTdmN2Y4NjUxYTU5MzUgcHkzaworODIyNjIgNmVhNmQ4NTE1MGIxMmI4MWI3OTM0OGE5MTM4ZTQ2YThhOTlmOGE0NCBweTNrCis4MjI2MyA1NDdlNjVkYjRkMzg4MmVmZWI5OTMzN2RjYzI0ZmQ5ZTVkMmY5ODQ4IHB5M2sKKzgyMjY0IDZiNDU0Mzc3YWZmZWQ1OGY3NzdkNTA2MGNkYmQ4YWE1M2FjODM1MjYgbGVnYWN5LXRydW5rCis4MjI2NSA4MTUyODRjOWQ3MTkxNTRkYTM3OTMyMGExMWFkYTlkZjAxMTkzYzRiIGxlZ2FjeS10cnVuaworODIyNjYgNjc2YTQ4MGVmYzA4Y2JkYTRjZTg1N2I5NTE3OGViODkyN2FjMmY0MyBsZWdhY3ktdHJ1bmsKKzgyMjY3IGY3OWJlNzk4MTMwZjJiMWNmYzg1YjJmYmY4OTFhZTY4M2RhNmQ4YTYgbGVnYWN5LXRydW5rCis4MjI2OCBlZTFlZDgwZDc5NjMzOTE3OTVjYzI1MTU3YjRlMzI4NjBkZjgwMDZiIHJlbGVhc2UzMS1tYWludAorODIyNjkgMWEzZDhlYzBjNWZhOGFiNjVkZWUxNTU0YjQzZDk4NzAwNjY1NjZhOCBweTNrCis4MjI3MCA1YjM4YjUyMzRkZWRiNzJhZGM3NDZkNTI2ODQ0YWQ3NTFkMzZjMDBmIHB5M2sKKzgyMjcxIDAyODQyZWNkOGU1Yjk0YWRhOGJhYzNiZDYyMjkzYWZjNTdlZDdmN2UgbGVnYWN5LXRydW5rCis4MjI3MiBhM2RkMzllMzZjOWRmMTljNjAwZmY1ZjgxYTlmY2QzZDJkNDNkN2I4IGxlZ2FjeS10cnVuaworODIyNzMgZjExNzRlNzlmN2Y0M2U3NTk3ZjZiNzNjNTEzM2ZhMDMxMTQ0OWEwMCBweTNrCis4MjI3NCBkM2M3NWMyZjQ2YmUyNmJiYzY5ZWYwOWZjMmY2ODFhYjFiMzRmNjkxIHJlbGVhc2UyNi1tYWludAorODIyNzUgMDIwNDQ1NzNlZWVjMWVhYTMzYzNhYTQ2NzMwYjhmNTlmNDNjYTA3NCByZWxlYXNlMzEtbWFpbnQKKzgyMjc2IDZiMDMxMjQ5Mzc1NTllNzA5YjRkODJlYTFhN2RhOGNiMWQ5NjczZGIgbGVnYWN5LXRydW5rCis4MjI3NyBjNTA1NjM4MjQwOTQ0NDlhNzgwMjk1NGQ5NjU3MmE3OTRhYTdhNGJmIHJlbGVhc2UyNi1tYWludAorODIyNzggYzg4Zjc2MDBiYjE3YmFlNzA4NTgxNmUwNDRlYjQxYzNkNmM3YWQ5YiBweTNrCis4MjI3OSBmNTA1ZGYwM2E3ZDdjYmY3Mzk2MTJkNzI0N2RhZDE5YWE0MTVhN2E3IHJlbGVhc2UzMS1tYWludAorODIyODAgYjA0Y2VmNTVmZGY0M2NjNmMyMjhjM2E2MTU5YjAxZmM4ZGM2ODhiNSByZWxlYXNlMjYtbWFpbnQKKzgyMjgxIDdkOTI4MDI5YmMwZTlmMzYwNjdlN2MwZDdmYjViOWUzMzc3YTNhODYgcHkzaworODIyODIgZWVlMjU3OTI4MzAwMWE5ODA0OTU2OGYyZWQ0Yjc3Y2RmMWQ0MzJjNSByZWxlYXNlMzEtbWFpbnQKKzgyMjgzIGRjZjliY2Q5YTFlMDgxMDQ3ZGRmM2YwM2IyZjllMjBmOGI5ZjNmZjcgcHkzaworODIyODQgYTE4MzIzZmJhZjk1OGZhNDdhMTUzMDA0M2UxMTAxMmRjN2UyMWY1YiBsZWdhY3ktdHJ1bmsKKzgyMjg1IGRlZWQxNTZkMzNkODA2ZjBkZGMzNjhiZDc0MGQ5ODEyMGM1MjQyNzUgcmVsZWFzZTI2LW1haW50Cis4MjI4NiAwYmUyNDM5YmJjZDgwMTg1ZmVjZTIxZmEzMGQzZWJlOTUxZjMwMGJhIHB5M2sKKzgyMjg3IGU2NDc0NmUwMmU0MTAxMDBmMjZlMmI4YTEyZTE3Y2YwNzU0OGFiOWUgcmVsZWFzZTMxLW1haW50Cis4MjI4OCAyODE4MjgzYzE0OWEyZjQ3YmUzODBiZDJkOTg4ZjZjZjRkMzUwMWI0IHB5M2sKKzgyMjg5IDkzM2EzNTU2ZjU2MzM1ODhmYjEyYjM2ODhkOWYxYzdmM2VkMDI4YzkgcHkzaworODIyOTAgZWMwZmQ1YTZiYjQ1NmY3ODdlMDQyN2ViMGI1MWNlZmFiYzc5MTYyNyBweTNrCis4MjI5MSBjYjZmM2E0NDFhYzJkZTE2ZTFlZGZkNmRhY2M2ODFlYTRmOWNmMDU0IHB5M2sKKzgyMjkyIDJmMzUwMWY4ZDQ1NmZkZmQ0MGNkYTBiYzI5MDcyOWFkYTQzYTY2OTEgcHkzaworODIyOTMgMzU4ZDg2YTU3MmZiMTg5YTI0MzUwOWU4NjU5NWZlYTQxNzY2YjhjNyBweTNrCis4MjI5NCBjYmQ1MTM5ZThmZTQ4OTc1Y2RiYTlkMzI1MmM5ZDczYjZhODY0ZmU0IHB5M2sKKzgyMjk1IDA4OTczZTYwOGEyYTQ0MGY1ZTc1YWQ2YmRhZDk0YjM2ZThiYTFjMGUgcHkzaworODIyOTYgMDU1NTg4NGU5ODYyMzRiODMyMDkzYTczOWVlYjcwNjE0N2MxY2JjMiBweTNrCis4MjI5NyA4MjBmM2I2Y2I1NTExODc0OTc3MWZkM2NhOWRiMjQ0YjJmY2UyZWU4IHB5M2sKKzgyMjk4IDUwNGM0OTllOGM5NTgyZDViMTdkYjY2YTczMWIyNjYwODI1ZTMyMTIgcHkzaworODIyOTkgOWYyMjk0ODc0OTEwY2VkZGJiMWZlNWZhYTYxNzNlNTBhYjlkMTM1OCBweTNrCis4MjMwMCA4YTdjY2I5NjE4MTQ1OTFmOWJiODc4NjQ3ZDk0YzFmNTYwMGEyZWRkIHB5M2sKKzgyMzAxIDhkZjYxOTI1OTA1NjRlNjVlNjdhNjRmYzA2MWEyZDIzZmEyOTY5MjIgcHkzaworODIzMDIgMzI2NTFlZTc3OWVkMDBjZjE3MjA3NWUxYWUzYTE1MDA5NzdhYTM0YiBweTNrCis4MjMwMyAzNjcwYzY2ZWUxNDlhNWMzODM5OTZiOTI3MzFkOTA0OGNlYmQ1ZDU0IGxlZ2FjeS10cnVuaworODIzMDQgMWQxNzk3YWY0NjIyMGI1NzIwNTJkMTBhMWViYTE2MzQ0ZjkwZjUwNCBweTNrCis4MjMwNSBhYTI2MmM1YjE4YjUzMjZkYmExMmNmMmJlODkzMzhkOGJiOWQ2OGM0IHB5M2sKKzgyMzA2IDkzNTA3NWQzMzVmZThiZTdiYmI4ZWUzNzVkODZjZjVhMjRmMzM5OWQgcHkzaworODIzMDcgNDZmZWM3N2Y5NWU4ZDE1ZWQwMjQ3NjkyNmZjYWNiZDU2OGQ1NGEyZSBweTNrCis4MjMwOCA2ZWM4MjVjOWIzYjUwMWYyYWMxMjg4MzJkYjczZjJmNGQ4NGU3YjZlIHB5M2sKKzgyMzA5IDJlMzc2MDNjYTA0ZGEyNmI0MTM3MTViZDg5ZGMyZTg1MmIwZjUyYzAgcHkzaworODIzMTAgNGFhNWI5NTg5YzQyMTIwOTIzODJjMWEzZDk2N2Y0YjIxNTU1MTg0MSBweTNrCis4MjMxMSBhODU3ZGQ0MDc5NjQ4MmZhZjQyYjgxNmFhMzlkYjI4NWFlMTFlODFjIHB5M2sKKzgyMzEyIDJiYzA4MDAwYTg1NzI3ZTEwZWE5NDgzNDFkMDQzYTVhZGNhMzkyZWEgcHkzaworODIzMTMgZGQzMGJjNWQxODRlOTE0NmFhOGU0NWI0ZmIyNzRmODlhNzFlMzlmNyBweTNrCis4MjMxNCA0ODkzZTQwMDlmNTY3MTI0OGI4NmIwZDE5Zjc0Yzk4OTFjMzhkYjdjIHB5M2sKKzgyMzE1IDlmNjk5ZTUxNGE2MmMyN2U1Mjg2ODNmZWNkMTA0OWJiMzFjYmQ0OTAgcHkzaworODIzMTYgYTljZWQ0MjNkYWNlNzVhMjczMmE1ODEwM2NhMGY4MWQ5MGM4MjcwZiBweTNrCis4MjMxNyA0N2UyOWE1YzNkZGZmZjI1MGRlMzYzYzUzMTlkYzU5NGFmOTY0ZGZhIGxlZ2FjeS10cnVuaworODIzMTggM2JkY2RlY2VhNTYxMGUyNmY3NTM0ZmE5NjIxNjZmYTlkODljNzI5MSBweTNrCis4MjMyMCBiMDdiMmM5NTRhODA3N2Y0YzlhZDNmYzQ4OTMxNGVkODU3NGYyY2ExIHB5M2sKKzgyMzIxIGQ3ZTM0MjNjOWRhODIwMWJiNGIyYWQzZTIzZTkyNDQzMGFkMDNhZTMgcHkzaworODIzMjIgZTQyYmU2ZTZhYzJkNzM2NDJkM2YwMmE5ZjNhMWZlZmRkOWMxNzMyMCBsZWdhY3ktdHJ1bmsKKzgyMzIzIGZkMWExMTI5M2U2MmUxY2I0YmMyMDE3OWI4NDY0OTlkOTQwZDVhY2UgcmVsZWFzZTI2LW1haW50Cis4MjMyNCA5ZjAxODhlNGY4MWE4ODYyNzA5NGZlMWJhM2U2M2I4ZTQ5OGZhMjMwIGxlZ2FjeS10cnVuaworODIzMjUgMjAwM2I3MGE5YmFkZGI2NTEwZThmZTk5MTRiNGE5ZGQxMTUyMDIwMSByZWxlYXNlMjYtbWFpbnQKKzgyMzI2IGVhYzY0YTQ2MTBmMTIyNjJiNmI1NWIxNDNiNDhkYWY0N2UzMDhmMTYgcHkzaworODIzMjcgYjhkMzY1ZGExNzk4OTQxYjc1MzEyNWVkMmJiNThmOTUxYzNhMmU0YiByZWxlYXNlMzEtbWFpbnQKKzgyMzI4IDI4ZjlhMDAwYTM3OWQ0YzVlMTA4YWY1OThmMTEwM2U4ZmJkZjA1MTUgcHkzaworODIzMjkgM2NkMTZhYzUxODc3MTUzZWIyZmQ4NjUxY2VkNTEzNmYxMGJmYjYwNCByZWxlYXNlMzEtbWFpbnQKKzgyMzMwIGMwYTQ5YjZhNmZiMTFkODgwNjgwOTZhODlkZTlkODgwOTViY2Q4NTkgbGVnYWN5LXRydW5rCis4MjMzMSBmODE2Yjk5MWU1YjMxY2E3NzIxZThjMjcxMGU5NDVkMzdkZTM5YWYyIHB5M2sKKzgyMzMyIDg4Mjc2MTdhMDdkYzkxZjZlMmQ2NDM2ODVkNzIyYzk0NTZiNmRiMjQgbGVnYWN5LXRydW5rCis4MjMzMyBkNzE0MTFhMGE0NzMxNmFlYjM4YzFlYzlhOGQxNDAzNjdjZjZmMDE4IHB5M2sKKzgyMzM0IDJkY2Y0N2I1OTQzZjRlZTRmNWQ5MzE2OWI2MTEwZTFlYzU0YTZhNDMgbGVnYWN5LXRydW5rCis4MjMzNSAzN2NlNWFkYWU4YjliODhlOTc0YTVkOWE5ODZjOWNiMGQ5NWNkY2YwIHJlbGVhc2UyNi1tYWludAorODIzMzYgNzQ2NTc5YTllYWQ3MDVjZTdmY2RkYWQ1ODhjNTNhMWFkNzNhMDZkMCBweTNrCis4MjMzNyAyNWI3MjIxZGRhNjkxYmM1YWIzNGU1YWFlOTU1ZTcxNGY5ZWRmMWUwIHJlbGVhc2UzMS1tYWludAorODIzMzggM2NiM2NlN2RjYWI4NTBmOGYxNWNkYjdkZmZiZTI1N2FjNWMwN2MwMCBsZWdhY3ktdHJ1bmsKKzgyMzQwIDAyOTA0YzZlZTUwMjk3NjExM2QyYTZhOTQ1MTM0ZTg3YTZjMzlmNDQgbGVnYWN5LXRydW5rCis4MjM0MSAyNTIwYjgxOGRhMDUyMTkzZDhmYTBmNzM1MGE4NmNhNDMwMzU3NzdkIGxlZ2FjeS10cnVuaworODIzNDIgYzhiZGIzMmIwNGFhYWNhYWIyYzk5OWRkMjViNzE4NDY3NjE2Mzc4MSBweTNrCis4MjM0MyA2OGI2NzBmMzYxNGU5MGI0MWRkZmJiYTdkYzEyOGQ1OTU1ODAyNDk1IHB5M2sKKzgyMzQ0IGNlMDMyNTI3NmQyYWZhZjI0MDM4MWIyMmQ0Mjc5NjEyZGM5MGViMzkgcmVsZWFzZTMxLW1haW50Cis4MjM0NSA5Y2E5NTI0ZDNlNTc4YTQxYWQ1ODQyYjJkNTJjOTY3ZTA0MzgzNzU4IGxlZ2FjeS10cnVuaworODIzNDYgNjlmNmQyMTMwMjgxMjRjNzMwOTk1ZjdlYjljNTc1MTQzOTM2ZmNiMiBweTNrCis4MjM0NyBiODE3ZTcxNjUxNmVkZjAzYmY4NjM1ZDc2NDYxNTI3OWRiODBhYWQ4IHB5M2sKKzgyMzQ5IDk1ZjhiMjVlNTNjZTA5ZTRlZTgxMzFkYjNiNTg1MTNmNTc0NDU4YjggcHkzaworODIzNTEgMmNmNGNhMWVkNmQ2Y2Q2ZjNhZWRkMDZkYTc4NWY3NzNlOTBmYzA2YiBweTNrCis4MjM1MiBhY2Q4NjQ4ODY1YWFjNWUxZjNjZTc2ODdjZGI2NWFmMzk2ODc0MGEyIHJlbGVhc2UzMS1tYWludAorODIzNTQgZGZiZGI5OGM5MmU3ZjFiN2YzZjZkNzczYzZiZTVhN2VkMTYyYmJkYiBweTNrCis4MjM1NSAwZTE2ZGRkNDQxNTc4ZWJkZmNjZDc5MTAxZjVlYTVkMjAxMjQ4NWFhIHJlbGVhc2UzMS1tYWludAorODIzNTYgMmE4YzY4YmEwMDBiYTRmMjA3NWQ5ZjY5M2RjODk3MTA4MTU2NjQ2OSBsZWdhY3ktdHJ1bmsKKzgyMzU3IGViZmI2YmMwODJkOTJlZDlhNDk5NGMwMTQ3OTNkYTc1OTgzNTcxOGMgcHkzaworODIzNTggYTRlMWM1NmJlNTMyY2U1OGY1NTBhZmNkZDRiMGRhY2ZhZmFiNTFjOCBweTNrCis4MjM1OSAyZjkwNTFmZTZhZDljNjUxNTIwZjRhMWE2ZTMyZmQ0M2FkM2M5MWUzIHB5M2sKKzgyMzYwIGZlNDQ4MjhlYTdlZGRlMWRlYjU3NjkxNDlmNTQxOWVkZDZlMjk3ZjMgcHkzaworODIzNjEgYzUxOTI5MjMzZTE5NTQ5ZjEwNDAyMTNlMWVkNTc2OTI0MmFlNjk4NyByZWxlYXNlMjYtbWFpbnQKKzgyMzYzIDE0Zjk0YzAxYTAwMmE1ODExOTdkM2U4ODk0Y2MxOGZjYzVkZTAwOWYgbGVnYWN5LXRydW5rCis4MjM2NCBmN2I1NDM1Mjc3MWQyY2ZiYjdjMjA4NDk2ZGZmMTVlYzU1OTdlM2ZmIHJlbGVhc2UyNi1tYWludAorODIzNjUgYjcyYzMzZjQ5NmFjOGUxZDc1NzczMDY5NWU5Mjk4NjIyMDhmZDYzOCBweTNrCis4MjM2NyA3MTk5ZmYzODZmOWVjN2NmMmM5YWJiY2FhODYwMmI3YzEwODI3ZWY2IGxlZ2FjeS10cnVuaworODIzNjggMmY4ZDE3NjI2Y2RmZjQ0ZDVjY2EwMWU4M2E2YmIzMDVjOGE1Nzg4ZiBsZWdhY3ktdHJ1bmsKKzgyMzY5IDE3ZjE3ZGM2ZDQ4YmM0ZWI5ZjgwYWEwNDUxNmE2NDQ3MmVmODIyMDMgcmVsZWFzZTI2LW1haW50Cis4MjM3MCAwNzEzMWYwOGMzZGUxOTVjMDM4MzU5MWMzNDViNGFhMzIzZWUxYzBiIHB5M2sKKzgyMzcxIDI5NjQyNDM3NDgzNjE2NTZkOTAxMDY4NjcwMzU4NmJjOTRhNmYwYmYgcHkzaworODIzNzMgOWUyOTFhYzA3YzViY2Y1NzI1MGY1M2VkNDVjNmZhOTBlMzZmYzQ1ZiBweTNrCis4MjM3NCAwZmU5NzkzMjY0MmU3N2JhN2U0MmQ0MzU5ZGE3MzFlNzczOTAyM2IwIHJlbGVhc2UzMS1tYWludAorODIzNzUgNTA3MjU5MGI0ZGZkYzRmMDNlNzAyZTA1M2UzZDFjNjc5ZGRjN2E4YSBweTNrCis4MjM3NiAyOTBiZDBjMTUwYTY0NThkODE3MmExNDA5MTk3ZWYxNDk4YmY1NjhlIHB5M2sKKzgyMzc3IDE1ODE2NmVmNmYwNmQwMTRmZGUwODk5NWRmYWU3YzdmODU1NjIyZTcgcHkzaworODIzNzggYTkyYWM3NTcwMTE4M2FhMTVmZTI5NDY2OGEyNGFjMjhlMTUwMWJiMSByZWxlYXNlMzEtbWFpbnQKKzgyMzc5IGI1ZGZhMzM5NDk5YzI4NDQxNGM2MDQ3NTZhZjUxYjU5ZGQ3YzdhNmQgbGVnYWN5LXRydW5rCis4MjM4MCBiODhkYTRmNzdmNjg2Yzc1ZDM0MTExMDcwNGZmMmE0ZDM2NGMxNDBkIHJlbGVhc2UyNi1tYWludAorODIzODEgZmNhZTk1OWEyZmFiNTJmNDA2ZTdlNzIxYjVjZGE2ZjQ2ZWJlM2I5NSBweTNrCis4MjM4MiAzMjFlZGJhNWY3OTViZjZhMDBmZWQ2YTZiNjE1YmZjOGUyNzVlNDVkIHJlbGVhc2UzMS1tYWludAorODIzODMgMjVmYmYwMjMxMDJkOWI5MGM2N2U0OGE0MmM0ZTQ2ZjE2YjAxMTY3NiBweTNrCis4MjM4NCBlNmJiOTkwYWM5ZjY4NzAyMDRiY2M2MDIxMDI4YmZhNzZhNmJjMmQ4IHB5M2sKKzgyMzg2IDRmY2UyNWFiZmRkODJmYmQwNTFiYjEyNGM2MDc5ZDhiMzg2M2E2MDYgcHkzaworODIzODcgMTZkODhlY2EzYzMzYTE5ZGYyNWRkNjVmMzIyZGIyMGEyMThmNjFiYSBweTNrCis4MjM4OSBkMzRjZTBkZTk0MWNhODlhNGMzM2Q1OTNjNTUxZmJlODZjOWVmMGQyIHJlbGVhc2UzMS1tYWludAorODIzOTAgZTZmMWIzZDEwNDBhNDc1YTA0NzY1MjFiYWJmMTVlZTQyODliMzM0OCByZWxlYXNlMzEtbWFpbnQKKzgyMzkxIDJiYzU0ZGE0YjgyYzFhYjRjMjllNDcwZDcyYTZmZjY4OWJiZmJlNmEgcHkzaworODIzOTIgMzA4NDNiZTJlMTFhMjZjMzQ1MWUxNjAxNGMzYTc1NDFiODk1NmY4ZCBweTNrCis4MjM5MyAwNDNlZjA0ZjY0ZDIyYzdiNjk5ODgzNGRiYTYwMTNlZjJjNjQzYTM5IHB5M2sKKzgyMzk0IDMwZTFkOGQwODEwNTc4MGYzM2YyYWM0ZmJmMWJhNzNhZGNhYTk5YzAgcHkzaworODIzOTkgOWRjYzkzZmU3NTI4MmVkZjhkMmQ4MmY3YTQ4MTE5YjU3MWNkNWFhZSBsZWdhY3ktdHJ1bmsKKzgyNDAwIGM1YWZlOTU1Mjc3OTNjODI4ODQ2YjM4NmFlNDA4M2YwZTkyYTllYjAgbGVnYWN5LXRydW5rCis4MjQwMSA5ZjU0MzBlNDc3NzAwN2UzZTczY2I1MDVlNzJjNTQ2NTRkYzNiOGE4IHJlbGVhc2UyNi1tYWludAorODI0MDIgMDFjOTU4MWM3ZTNmNDk0ZGMwZjAzMjNjYzEwNTdlYjhiYzA5ZDFiYiBweTNrCis4MjQwMyBlOWM4YTk2NTg0ZDQzNGUxMDYyM2NmNGUzMGMxYjlmMGJmZTg0YjA3IGxlZ2FjeS10cnVuaworODI0MDQgNzZiYzI1NWQyOWZkZjRlM2JlNzBlMDY4NzdmZDA1ZTM4Mjc1YmIxZCBsZWdhY3ktdHJ1bmsKKzgyNDA1IGRiNmZkNDA1ZTU5NGZkNmMzMjk4MjYzNDUwMzcxZjE1OWE4ZmE4NjEgcHkzaworODI0MDYgODE2Y2Q4NThkMzMxYThkNTA2NjQzOWNjNmVlODczOWFlOTcwMWYzZCByZWxlYXNlMjYtbWFpbnQKKzgyNDA3IDNlODc4ZTI2OWIwOWVlNWIxZDA0NjFhZWQ0ZjRmN2NjNDhhNzM4YjAgcHkzaworODI0MDggM2E5M2EwNmU1ZTMwY2RmYTg5NGI3NTdlZmVmYjM3ZDc3MjdhY2FiNiByZWxlYXNlMzEtbWFpbnQKKzgyNDA5IGIwNDYxNmJlN2YxNGQ3MDYwNDQ3ZjAzM2Q0ODY2MzRkMjQ0ZDk5NTAgbGVnYWN5LXRydW5rCis4MjQxMCBjZTgxNDIyZWUzNWIzMTA1OGU4ODA0ZmNjZWRhODU5NWRlYTk3NzczIHB5M2sKKzgyNDEzIGUwZDVhNGE0OTExMmEyOGUxMWQwNzk5Nzg5N2EwNzQxNjE4NTIyYjggcHkzaworODI0MTUgOGI4ZjM2OTk0MWMxZWRiNDI4OTA2ZDUyNzliZmUzMzQ2Y2MzZjBmOCBsZWdhY3ktdHJ1bmsKKzgyNDE2IDMxODViMDU1ZjkzNzY2ZDJhY2Y0ZmI4M2VhODcxYjA1NGU5YzZmOGEgcHkzaworODI0MTcgYTg5YTNkOTJmOGFlYWRmYjgyNWM1NDM2NmRjOTJmM2E5NTQ5MmU3NCBweTNrCis4MjQxOCBhOWEyNjdhODFkYWM0MjNhZDU4YmQ2NDVhMGUwZGFkM2JlZWQyNmQ3IHJlbGVhc2UyNi1tYWludAorODI0MjAgYzUzZTEzNWEwOGI2OTBhOTA0NTcyN2VjMzk3N2I1ZDAwZGEyMDk1NSBsZWdhY3ktdHJ1bmsKKzgyNDIxIGE5MjcxOWI0OWU1ZWJhZTg1ZjAzYmI3YTNhOWFhN2M3NWZmMDg0MDEgcmVsZWFzZTI2LW1haW50Cis4MjQyMiBmYTExZDJiNGY5OGEyZWViMTE2MWU2N2YzOGJkZWU3YTkwNzBiNDYzIHB5M2sKKzgyNDIzIDEzYzA2YTZmNDY3Njc2ZTZkZDkzMGUzNWFjODgyODllNGI0ZGI4MzAgcmVsZWFzZTMxLW1haW50Cis4MjQyOSA0M2YwNmNhMzZhYjMwZDE2OGEwY2YwN2RiYWViNDM2ZGVlYTA5M2YxIGxlZ2FjeS10cnVuaworODI0MzAgZmU5NTUzYTZmNzk4ZDcxMTkzODZiZTY2ZTkyZDVmYjQ0MGY4ZDJjZCBweTNrCis4MjQzMSA2ZDBkZWRiM2EyNGVjMDc2NzQ0N2UxYjk5OWJiZTFmYmI0MzI2NmMxIHJlbGVhc2UyNi1tYWludAorODI0MzMgYmE5Y2YwZGYyMWIwMDk5MDcyZjFhM2FjODA3NDNmZTliZTZiZDBlZCBsZWdhY3ktdHJ1bmsKKzgyNDM0IGZlZjYzNDhjMmRkNmNmMjFiNTEzN2YxOGE5NzVlMjYzMWY3ZTc3OGMgcHkzaworODI0MzcgNGIwYzg4Mjc1ZjNiNjQyNTg1Mzk0NDExODRlOWMzNjY5YWY5ODlmNCBweTNrCis4MjQzOCAzNTM3MGQ3MjM2YzljNmFlNjJiNjQyMDUwNTg4ZDgyYTA5OGM3NmNmIHB5M2sKKzgyNDM5IDE3ODY2MjhlYTZmZjY0MTBkYjkwM2VmMjRlZjEyNGVkNTg2NmU3OWEgbGVnYWN5LXRydW5rCis4MjQ0MCBlMTdiMWNiMWI2MWM5Y2M2M2Y2MGZjMWVjOWMwOWM0YTcwMDdiMjg1IHB5M2sKKzgyNDQxIGY0MzBhODkxOTZjOWFmZWYzZGVmNzhhMjk3NWQzYTkyZTI0MWU5NTggbGVnYWN5LXRydW5rCis4MjQ0MiAzMzA0ZGM1NmRkYTQ0MDdmOGNjNjUyODg3MDhkODg5YWZiNjdhNDc1IHB5M2sKKzgyNDQzIGIzYmZhYmMwNDQ3YzUxOGE3ZjhiNmI1M2VlODAzZTkxYWIwMmFkMjMgcHkzaworODI0NDQgMzZhYmQ3NTU0YmFkOGNjYTI3NjczNmRkZjRmNGMzYjYxZDVlMjQyZCByZWxlYXNlMjYtbWFpbnQKKzgyNDQ1IDhhNjg5ZjI5Nzk3MGM5NWM0MDY5Y2E5ZjkxMDZhZjZlMjY5OTc5MzggcmVsZWFzZTMxLW1haW50Cis4MjQ0NiBlZjY3OThhOTllYWQyZWI2NzAzM2E5Nzg3YjgzZjI5OGYzNDQ0YjU2IGxlZ2FjeS10cnVuaworODI0NDcgYjU0MGE2MTJmNjAxNzAxNWViYzU5NWU2MGUzNDRhZmVhOWM3MGJhNyBsZWdhY3ktdHJ1bmsKKzgyNDQ4IDdmMTQ5NmU0MTEyNDczOGRlZjRhNjc4ZmZiZjZlYWMxYWI2ZDZkMzUgcHkzaworODI0NDkgZTgzNGM1ZDNhOWEzM2UzMDQ1ODZmMDkxYjExOWExOTA1OGJiNWRiNyByZWxlYXNlMjYtbWFpbnQKKzgyNDUwIGFlYzQyMjExMWNkZWEzNTczN2YwOWI5Y2YwM2YzMDFiMDdhNmY4YTAgcmVsZWFzZTMxLW1haW50Cis4MjQ1MSBmMWJhNGU2ZDZjMTIzMTczNDIxZGZjMzBhOGE5YTcwMGIzNjk5YTg5IHJlbGVhc2UyNi1tYWludAorODI0NTIgNjFhZDY4OTRlZDZhYTc2YzBhMzk5N2M4NWU5ZGE4YTk3NzE1ZjViMCBweTNrCis4MjQ1MyBjYjc4MDBjNjQ5MTIzY2M3NDMwYWUzMTJhYTY2MmZiNWE1OWZhZjZkIHJlbGVhc2UzMS1tYWludAorODI0NTUgZGUxNmE5MTViZDJhYzdkNTg3ZDIwYzMzNzA2YTE2NjU4YzM1MDIwNCBsZWdhY3ktdHJ1bmsKKzgyNDU2IDUyOWIyMTc1MzM5YmYwNjE1Nzc5ZmYyY2I4NGU3YzM5NzA3YTM4OGMgcHkzaworODI0NTcgNDNjMDQ3MTFhYWNiY2JhYjUyNGFkZWNmZWE4NGRjZGM1NTkzMjkwMyBsZWdhY3ktdHJ1bmsKKzgyNDU4IDMxNDQzY2Y0ZGVmMmYyYzFiNTY0YzRiN2U4MTZkNGViNDg5NmVlODggcmVsZWFzZTI2LW1haW50Cis4MjQ1OSBmYTE2YWNiMmZmZGQ2MTg1YTYzYWRiZGQ5YmNmMTM3YWM2NzJlNmRlIGxlZ2FjeS10cnVuaworODI0NjAgYzcyZmQ4YTJhZTAxZDA2NmIwZmE4ZThjZGNjYmZhZmNhNzFhMzRiNiByZWxlYXNlMjYtbWFpbnQKKzgyNDYxIDFlYjM2ZjE2OWM5NzI4ZmZjNzAzNzM5ZjQwYmE0YjRjNmY2YmY2YzggbGVnYWN5LXRydW5rCis4MjQ2MiBkM2ZhMTk5YjRhMTc0NjZkOWQzNTZlYWE2ZTUyZWJkNGVjMzhmMzk4IHB5M2sKKzgyNDYzIDhiZjZkOGJlYWZlMWQ1NGU4YzcwMTNmNjYzZThjODc2NmVjNTk2MjEgcmVsZWFzZTMxLW1haW50Cis4MjQ2NCBmMjcxZTFkMGU5YzQ0MjQ5NTRiMWM4Zjc2YTRiN2JkN2MyYTRmNmFlIHB5M2sKKzgyNDY1IGQ4MzFmYzBjMjYzNDJjMzNjZDc1M2I0MDI0YzE1YTc3NjQ5OGYzNTAgcHkzaworODI0NjYgYjhiMTFkNDM0OTQwNjFkNDJmNGY2YTE5MTBiYmI2Yjg2MzlmOGNkYyBsZWdhY3ktdHJ1bmsKKzgyNDY3IGIwYmU4OWY3MGZmOWI3NmVkYzBkYjQxY2EyMDhkOTFjZjZmNzBiMzYgcHkzaworODI0NjggOTkwMGE5OThiNDYwY2VkMDBjNWYyNDJkMjhkMmE4ZTNkZTlhNjcxYyBweTNrCis4MjQ2OSA5ZGM1ZjM4NWY0OTQyYzQ3OTVkY2Q0ZWMwNmFlN2MzYzE2MjExOWViIHJlbGVhc2UzMS1tYWludAorODI0NzAgNGRlMTNmZWFlYTAxODA1ZTE0ODFjODE1MDZkYWI3M2I1MjNmYTFiYSByZWxlYXNlMjYtbWFpbnQKKzgyNDcxIGViZTFiM2ZmOGQzMDIxODE4NWE0NTdlYjAxMjM5NzUzNzVhYmE0NjQgcHkzaworODI0NzIgNjFjYjk0MTBhODQyNGI1MDg1MTM3MTlhNDJmYzJhZTRjZDAyMWI4ZSBweTNrCis4MjQ3MyA0ZDNiNGYzNDE5MmIyMzllODdkOGJhMDc3MzY2MjAxNTY4MjljYzQxIGxlZ2FjeS10cnVuaworODI0NzQgMzIzOTZlODAwNDhmOWE4NzA2YjE2YWU2MWJkODI5ZDg5ZDMxOWYwNiBsZWdhY3ktdHJ1bmsKKzgyNDc1IDY5NzU2Y2RmNTM3YjRmYTM3ZGNhOWQ3YzhmMGYzOTkzOGEyNDhlMGIgbGVnYWN5LXRydW5rCis4MjQ3NiA4ZTIwZmZjNjE5ODY3M2NhYWZkYzcyMDFhYjliZmY2ODA5NTZmYTk3IGxlZ2FjeS10cnVuaworODI0NzcgY2M0YmQ3NjZmZTEwOWE1NzIxZDY1MWFhZTM2NTY3MDdiMzkyMjBlYiByZWxlYXNlMjYtbWFpbnQKKzgyNDc4IGM1ODU1ZGRkZjBlMWZhYmFlOTgxYTc1ZWQ0YTkzNDY1MDkyYjg5OWMgcHkzaworODI0NzkgNTYxM2QyZTFkNzc5NTI3ZWFiOGM0ZThlZDdhMjY4ZDJlMDg0YjBjZSByZWxlYXNlMzEtbWFpbnQKKzgyNDgwIGFhZTczODFhYzBiMmQwYTVjNDk4ZWI1MmUzM2Q3Yzk3NDM0MjcxYzYgcHkzaworODI0ODEgZDk3YzI0NTIzMzIxMGM3OWJiNjQ5OTdiZGU5MWFiNDc4Yzk4NjY4MyBweTNrCis4MjQ4MiAyYWFiOTU3YmY2MWZlYzY1YWFjYmFkZTVhNWU3ZmY2ZTIwOWRiMGU4IGxlZ2FjeS10cnVuaworODI0ODMgNmNmZTdiOTA0NjQ5YTA3M2MyMGM4MzY0NmMwNDRmZGZkYjU2MTc3YiBsZWdhY3ktdHJ1bmsKKzgyNDg0IDVkODM0ZmNkZjk4MGNkZmExZmFkMDRiYmVjMTNiZTM0ODkzNWY4ZGYgcHkzaworODI0ODUgMjMzYzhkYWI4ZmZhOWY3MTA1MjliMDY3MWZhNTBlZmVmZDU2NDMwZCBweTNrCis4MjQ4NiBhYzgyM2U3MTZkNTcxN2U4Y2NjMGUxMDJmMTY3YTNkYjg2NzRjZjE3IHJlbGVhc2UyNi1tYWludAorODI0ODcgYmIyMTFhMmRkYWJkNWYwYjg2MmNiOGNlMmJmNzU4NGQ1YTBmZjQwNSBweTNrCis4MjQ4OCA1NWVkZjc5YWQ4Mjc3ZjM5OWM0N2QwOWUzMTQ1M2U2MmU0N2Y2MzI3IHB5M2sKKzgyNDg5IGQzNWY4ZTViNDE5N2E4ZDdhMTUwNGZmNDc0ZGYyZjllOGQxNTEzMDEgbGVnYWN5LXRydW5rCis4MjQ5MCA0MGYxOWIwYmZhNjFhNTZiNDE0MGQxY2Y2NWFjMDJlYjZjYzdkMTA1IGxlZ2FjeS10cnVuaworODI0OTEgNmFjYjI1MzU2ZDJmMWE2OWRmMTQ0ODFkNGY0ZDg1NWExOTk0OTI3ZSBsZWdhY3ktdHJ1bmsKKzgyNDkyIGJlOGUxYTZlYmY3YWJlNzVhMzgxNGM0MmQzMjkwM2I4OWJlY2Y4ODYgbGVnYWN5LXRydW5rCis4MjQ5MyA0Y2E1ZDBhZWE0MWQzNjA5Y2Y0NjZiZmU4MzU5MTEyZmZmMjVhNzYzIGxlZ2FjeS10cnVuaworODI0OTQgOGJiOTMyODhkYjZkNjhlOWMxOGE4NWNhYjk1ZWRiMmUwM2QxNTJiNSByZWxlYXNlMjYtbWFpbnQKKzgyNDk1IDI5MTE2YjJmY2ZmZTkyODEzNzE2NGUyNzU4NThmYjNjNjkwNmRkZDcgcHkzaworODI0OTYgNzE4NDQyMWY4M2I1NjRmYWI1OWZlMmZiMzBiNDIyNzY2YWEwMmM0MCByZWxlYXNlMzEtbWFpbnQKKzgyNDk3IGIzYjkxMmQ0NTNhNTgyZTQxZGZmZmU3MWE5MTRlMWNmZGU3YmI0ZjcgbGVnYWN5LXRydW5rCis4MjQ5OCA5OWM4NGE1MWY1NzY1YmJlYmJmZjc1MDhmYWZjNWY0ZTAxYTU0MGFlIGxlZ2FjeS10cnVuaworODI0OTkgMmQ1ZjUxNTBkY2UyNGRhN2NiNjg2YmVjY2VlMDJiMjk3NTU4M2EwNyBsZWdhY3ktdHJ1bmsKKzgyNTAwIDgwYzhiNDM0MTMxMmEzMzlhMDBmMzc2MzFjMzg1NTAwNzg3OGQ3Y2QgbGVnYWN5LXRydW5rCis4MjUwMSA1NGZkY2MwZjRiYWNmMzc0ODRkYmJjY2YyZDdhZWVjMmJjODJhNzE4IGxlZ2FjeS10cnVuaworODI1MDIgMjE0NTU5M2QxMDhkZTYyZWJmNzcwOTg3YTRhYzJhNTdkMjY4YzlkMSBsZWdhY3ktdHJ1bmsKKzgyNTAzIDdmN2Q4MjM0MDJjNjlhZTYyMzJhZTI2MDkzY2Q0ODJhNGYzNTdmM2IgcmVsZWFzZTI3LW1haW50Cis4MjUwNCAzZjQ2ZjhhOWRiNTQ5NTE5MzM5ZmI5ZDU5OGI0YmIwZmNmZGFiZDIzIGxlZ2FjeS10cnVuaworODI1MDYgNzZkOTA4NDNkYmE2MTNjNTAxMzgxZjU2MzViNWFlZDZhZjQ0MWRmNiByZWxlYXNlMjctbWFpbnQKKzgyNTA3IDM2ZDAxYzAxN2I5YmVlZjkxN2Y1YmJlNDgwNzg1MTJlMGU3ZjQ4ZDAgcHkzaworODI1MDggMTk0YjZlNjJiZTk1MGQwY2M5OGVhNWNiYTVlYzIzNjU2ZDA1MGIzMSByZWxlYXNlMjctbWFpbnQKKzgyNTEwIDI2MjUyOWQxYzMxNWNkMTllOWQ2NWQxMDQxZGJlN2U0MmRjOWY5OGEgcHkzaworODI1MTEgMmFlZTgyOWVkZmUyODAyMjhiY2Y5OGE5YmRmZTNhMmRlMWI5YjlkNiByZWxlYXNlMzEtbWFpbnQKKzgyNTEyIGQ3NmQwZWViMjNjYWI4NDNhYmM2MzdhYTk0MjNhZjBmNGZmMjFjNjYgcmVsZWFzZTMxLW1haW50Cis4MjUxMyA5NzZhYTRhOGJjZjMwN2FiYjUyZWMwMGUzMzEyYzlhMmIxMmJlODhkIHJlbGVhc2UyNy1tYWludAorODI1MTQgZTQyYmFmNjc4ZDE0NDAwNjIwMjJhYWU5OGU4NmQ3NjNmMmU5YWE0ZSBweTNrCis4MjUxNSBmZTQ2YThkYmFmNjhjYTc0NGRmNmFhZDkxNjZjOTNlNThhNjZmMzE5IHB5M2sKKzgyNTE2IDE3ODQ1NWEyZjFhYTViYmQ5NjAwYTBhZjFmNjViMjllY2QwMmZkOGYgcHkzaworODI1MTcgMzFhNjg1NGY3ODEzOTkxOWY5MjFlNGJjODY2YTg5Mzg0ZWVhNzI0ZCBweTNrCis4MjUxOCAzNGQ4MjcyNDljZTBiYzI5OGZiOWUzZDJjMGM4MmNmN2E1YmFkYzE3IHB5M2sKKzgyNTE5IGZhNzE1MTJhNzRmOTE0ZDY5NzYwZTkwMzdiODBmYjFhZGZiYzM0NmYgcHkzaworODI1MjAgNmMzYzU0M2VkZThjNDk3ZWVlZjRmNzJjMGU3YzAwYjJhOTNkZjk0NyBweTNrCis4MjUyMSAyNjc0ZDNiZGRiMTgxZThlMzNjNjdjMGM3NWFiYTc2NWY1Y2QyZjg4IHB5M2sKKzgyNTIyIDM0ZjAxNWJjYTU0ZWRiMzMzOTE2NGY3NjM3NjdjNmEwYTQ4ZmJkMTkgcHkzaworODI1MjMgMzI2ODJiMjUzZmZjODE3ZTE2ZGE5YTZlMTIxNWFmM2FmZWM4MDFjYiBweTNrCis4MjUyNCA0YzMwYTZmNDBlNjg0ZTYzODUzODNkOTdmZTdjYjVkZmRmZDRmMTJlIHB5M2sKKzgyNTI2IDRiOTM0ODAzY2QzNDE0MjQzMTRkYWQ4NzBjMmY4ZmMwZDg2ZjYyMzUgcHkzaworODI1MjcgMTM1NTc1OTRlMjBiN2FkMDg2NDc0OTEwMWJjY2Y4YzM3NTJhZTQ4NiBweTNrCis4MjUyOCBiNjdmNzIwOTk4YTg4MDFhOGFkOGI3NGNiYWE4M2UyYWZiMDc4MWQ1IHJlbGVhc2UzMS1tYWludAorODI1MjkgMGY2NTQ4YTg2NzY4YjMyODEwNjMyMWI4ODQ4OTNjZWQzNjg0MGEyZiByZWxlYXNlMjctbWFpbnQKKzgyNTMyIGVjZDcxYjYxMjdlNDI2NzhkYzFhMmIxZjU3MWY2NDFjZWQwYTI4YzMgcmVsZWFzZTI3LW1haW50Cis4MjUzMyAzNDM5MDMxMThjYjViYjY3MWUxNjljNDUxYmVjNDk5YzZmYTUwZTc1IHB5M2sKKzgyNTM0IDEyNGE3NmFlN2E3MGU3NTcwZDk0MjNlZDdhNjVmNmQ0OTQ5YjljNGYgcmVsZWFzZTI2LW1haW50Cis4MjUzNSBmMDY5MWI0YTM4M2I4MmFlZTg1M2ExM2FmNzM5OTY0ZmFlODVkYzM4IHB5M2sKKzgyNTM2IDNmY2U2Y2RiNDczMzc3MTE2OTUzODMxOTNiNDc0ZGY5NGVjN2E4YzUgcmVsZWFzZTMxLW1haW50Cis4MjUzNyAxZWFmNGJiZTRiMWMxYzE4YjkxY2VjZTlkOTljNDY2OGJhNGYzZDhiIHB5M2sKKzgyNTM4IDYxY2FjZWNjZjgwNTgxMzUzYjg0ZDczYzBkYWExMDk5MTZhMWFiZTEgcHkzaworODI1MzkgMTgyODIwMzljNWM5YzAwNmRjNWZkNWYzZjA2MjFmYTExMGIzMWQ5NiByZWxlYXNlMzEtbWFpbnQKKzgyNTQwIDkzOTMyNjE5OTZjZWUyMzBjNjUyODVhZGQ3ZTMwZmE1ZjdhOTA2YzYgcHkzaworODI1NDEgOWUzNTRlYTM4MmNjZTdjYjAwY2VmNWJlMmJlZGUwY2Y5OWMzOWYzMSBweTNrCis4MjU0MiA3NjdiNGM1N2FlYTRkOWJkN2E0MGY2ZmYzYTljNTZhOGMwOTZkNmQ4IHB5M2sKKzgyNTQzIDM4MzAzOWVmMjZhMGUwOWU1MTYwZjZhOTQ4NGMyN2VkMTkwMzQyYjUgcmVsZWFzZTI3LW1haW50Cis4MjU0NCAzYWU5MTNhOWNkYTkwZWEzZTI1ZDk3OWQyNzU0NGY5MjQxNjYxZjA2IHJlbGVhc2UzMS1tYWludAorODI1NDUgYTYzZjZiYWJhNmI1NGRlOTg3ODg5MzRjZDM4ZmQxZDExMGVmMjkxYyByZWxlYXNlMjctbWFpbnQKKzgyNTQ2IGJlNjYyZDEyNDM4NTllZDQzN2MwODY5YjY2ZDNiNzk3OWFiZjgxYzkgcmVsZWFzZTI2LW1haW50Cis4MjU0NyAzNjE0MzFjNGQzNDRjNDRhY2Y2ZTZlZGNlMDdlMjAwNDc2MGJmNTU4IHB5M2sKKzgyNTQ4IDdjZTZlMzY0ZTExODMwNjdlN2NhODM3OWZhZDI2ODFmNDYzYTkyY2EgcmVsZWFzZTI3LW1haW50Cis4MjU0OSAzYjE1NDg2NjA4ZjA1YmVjZDE0Yzc2MDU0YzVkOTliYTQ1NDgyNjhhIHJlbGVhc2UzMS1tYWludAorODI1NTAgYjA3NDNkNTJiNmEzMTdiMjkxZjc1M2Q1ZWJiNzM1N2FjMWQ4NTJmNiBweTNrCis4MjU1MSAzNDNjZjVhMDhmZjAwZjA3MjM3YzE5MDk1ZjM0YjE5NGU3NmM0MmMyIHB5M2sKKzgyNTUyIGM2ZjE2YjhjYjg1OGRiOTU4YjE4NGJkNmQ0NTIyMjEwYTdmYTA1NmIgcHkzaworODI1NTMgZDI4MzAwOTEyMzdjZWEzY2MyMzVhNmQwNTFmZTAzMmMzMTAxNDBlYyBweTNrCis4MjU1NCA2OTJiNzk4OWNkOTIwMzY5MDUwZTc1YmI2YWQwYjU1YjNjYmVjZWNkIHJlbGVhc2UzMS1tYWludAorODI1NTUgZmIzNjBjMDc5MDU5NzZiMWQwZTc3NmZjYzZkNjlhNjI5MTc0ODJiNCBweTNrCis4MjU1NiAzYWEyMjQyODU4MmEzOGEyNzFiOWVhZWU2YzM0YTFjMzI3ZTFmZjAwIHJlbGVhc2UzMS1tYWludAorODI1NTcgODM3ZTNjZDNkMDgzNDYzM2RlYjE5ZmYzZWRhOWU2MTYxYmY1ZjFlOSBweTNrCis4MjU1OCBkODgwYzExNDMxNzU2N2JjODk5Y2VlNjg0ZThiMzU3YWZiM2ZkZTE5IHB5M2sKKzgyNTU5IGMxYTIzYTU0MGEyOWRmNjI2YzhkNTQ3ZjhhODEwYzk0OGQxNmE1MWYgcHkzaworODI1NjAgZmU1MjE3YThhZmZiZGMwZjRhYzc2ODA3NGQ5YWFmMmNiNjZlOTEyOCBweTNrCis4MjU2MSA0NmFiZGUwNzFmZmZjZTAxMzJjZDNjODc3OWNiMDlmNmVjMGQyYTVlIHB5M2sKKzgyNTYzIGExYzQ1NjMxN2I3YzNhMjM2OGU2ZTgyYjNhMWQ3N2VkMGVjMzFmMDIgcmVsZWFzZTI3LW1haW50Cis4MjU2NyA3ZmZkMmE0NDk0MmNmNjU2Mjc4ZDA0ZmQ5ZDI2N2IxZWY3NDlhZTY3IHB5M2sKKzgyNTcwIGRjYzJlOGJmNjRjZmY2MWZkYmM5ODc3NjU5MjZhNGE1NjZhNTNmMzcgcHkzaworODI1NzEgMDE0NTAxMjBjMGRkMThkNDg3YjFkM2I0ZDVkOGQ0MjMwOGZhNjUzOSByZWxlYXNlMjctbWFpbnQKKzgyNTcyIGUxZjQ4ZWIwMTRjNzA0NmFlZTE2ZmY5Y2UwY2Q1NmY3MDY4MTQyODIgcmVsZWFzZTMxLW1haW50Cis4MjU3MyBjZjRmN2Y5OGYxOWU3MmJjMWNiNmYxZWNiODQxNGExMTc3ZDlkOGY3IHB5M2sKKzgyNTc0IGU4NGQ1MTY0NDE0NDYwYTM2ZmZmNzgwYzI3ZjczMjQ4NTk2MTJiNjcgcmVsZWFzZTI3LW1haW50Cis4MjU3NSBjODFmYzFmZmU5NDY3MDNjNzkxZWZiZmMwZmQxZWMwY2MzYzk2ZjAwIHJlbGVhc2UzMS1tYWludAorODI1NzYgNzI2NDgzZDk3YjVjMDkzNmY4MGZlZmNkODY3MjAzZjk1ZDI3Y2Y2NyBweTNrCis4MjU3NyBhN2M4YjRhNjY3OGJmMTAyMTMwMGVhNzA2ZDNmODkxMDQyY2IxNzc3IHB5M2sKKzgyNTc4IDM2ZDVlMmY1ZDYwMDQzOTU0YTE1NWQwNDZlMzE5NzJhZTU1ZjlhZGMgcHkzaworODI1NzkgOGVkN2QxMTFiMmM5N2ZlZDYwZTZhYzQyODQxZmUwNTIzZGQyNTQ3NiByZWxlYXNlMzEtbWFpbnQKKzgyNTgxIDcwNTg2OWQxYmRmMGZkYTIxMWYwOTljMWQ0MjU5NjUyZjRhZDNmNTAgcmVsZWFzZTI3LW1haW50Cis4MjU4NSA0MDAxZDQ1OGYwYjIwY2M3ZjNhMTRkYmQ4Y2VhYzljMzdlMDhiNzgzIHB5M2sKKzgyNTg2IGVlOWVlMmY5ZmViOWNjZmMwYjY3YmIxNmYxMGYxYzI3YzAyODk4MDggcmVsZWFzZTI3LW1haW50Cis4MjU4NyA5ZDVmZTkzNjFkZTIxZGU2OGNiZmYzN2I5NjNjMmFiOTIzYzhlNmUzIHB5M2sKKzgyNTg4IDY4MGJmNmI4YWI4MjQwYTk2ZWVlOWI0M2M0ZjFlMGYzNTU3YjhiMTcgcmVsZWFzZTI3LW1haW50Cis4MjU4OSA2ZWM1NzIyYTA3YTVmMmFiZThhNzZjZmQ3NzkwMzZlOGVjMTZhOGI5IHB5M2sKKzgyNTkxIGI2ZmVlNTVmYWExYmJiYzgwODZiNmI5MmY5Zjc4ZDA3YTllNGM2NjkgcHkzaworODI1OTIgM2I3M2ZiODA4MDdhYTFiYzJmZTBmOThkODE4YmVhMzQyNmRlYWM0ZiByZWxlYXNlMjctbWFpbnQKKzgyNTkzIDg3Y2RhZmUzYmQ2YzcwYTM2MmNiZGYyOWVlZTk0YmQxMGY0MTJiYWQgcHkzaworODI1OTQgOGJiZjI0ZTUxY2NmYWFkYTNkNzJmOTBhNGZiY2E0NmQ0ZmZlMmJmNCBweTNrCis4MjU5NSA1MDk3YjFiNDk2MDEyZTFlMzQwZjlkYjY2MGZkNWUwZmRmOTM4MTFkIHB5M2sKKzgyNTk2IGEwN2VmNWVhYjkwYmIyNWIxMDRlNjU4NWRhYTBmMWI3NmYzMzM5NDMgcmVsZWFzZTI3LW1haW50Cis4MjU5NyA0ZDI5MWFkMDc4OTE0OWZjMTFkMDE2MjU1YWZhZWI5ODA1NzkwYjFlIHB5M2sKKzgyNTk4IDNkYzIxOTA3Mzg3NTc0ZTczOGFjN2YyM2U0M2NhNWM4ZTFkNDlhMWQgcmVsZWFzZTMxLW1haW50Cis4MjU5OSA5MTQ1N2IyMDE0ZTQwYjYxOTE2MjBlOWU3NTFlY2IyNGFjY2JjNTY5IHB5M2sKKzgyNjAwIDg3MGI2YjQ1NWVmMDVkMWI1M2EzMzA5MzhmODBiYzc2NjU1OTNjZTUgcHkzaworODI2MDEgMWYyODE0ZWI0ZDFkZDFiMWE2NzE0MzM4ZDgzZmUxMWE2ZTczNGVhMyBweTNrCis4MjYwMiA4Njg5MDQ0NmE0N2JjZjUyODRiZGZmM2EyZGExOTFiZTI2MTA1MDVkIHJlbGVhc2UzMS1tYWludAorODI2MDMgMzljN2Q1NGYyODQ4YzBkMWZhMmUzMDA4Zjc0YmU5ZjUwODZkOWUyNiByZWxlYXNlMjctbWFpbnQKKzgyNjA0IDFmMzdkMDgyYTlhYWY4MDM3ZTAzZjZiMzA1ZGM3OGVkMTA5Y2JlYmIgcHkzaworODI2MDcgZjFhNDE0N2IzYzAyM2NjZWE3YzZkZjhmY2M2MTMwYTlkMzkwNzE0NSBweTNrCis4MjYwOCAyMzk5ZTA0NTFkMGRlYzg2NjAxZjM0YzFmYmJjZTMxZWUyOGEwYWI3IHJlbGVhc2UyNy1tYWludAorODI2MDkgZDM2ZGMzN2M2N2Y4ODcwNjNlZGVmYTM3MTRjMDgwZmNmYTk2NDAwZCByZWxlYXNlMjYtbWFpbnQKKzgyNjA5IDc0YjBlYjc2NWE1MDQ5YjI1M2UxY2MzNTFkYThmZjM5ZTMwODJjNjYgcmVsZWFzZTI3LW1haW50Cis4MjYwOSAwNzI4YjI5NWY1M2JkNmEzZDcwZjVmNWM3MjVhODU1YjhmM2FmMjI5IHB5M2sKKzgyNjEwIDIwMmYzMWQ0MDM4OWNlM2Y2NTlmYjE1NjMwOGU4MmNlZTAwMzgwN2QgcHkzaworODI2MTEgMDYxOGM2MjMxYTFmMTkyNzE2NTk5Y2Q2MDJmZjRiYTAwMjIyZmU5ZiBweTNrLWR0b2EKKzgyNjEyIGUxMmFlY2RjMzMyYzc4Nzc5NmRmMjkzMDNjZmY2MWNmMTFkNzViODUgcHkzay1kdG9hCis4MjYxMyA0ZmU0OTNkOTlkY2MxYzIxN2JjYzUyN2IwZjM2M2ZiYzAwZGVkZGNjIHJlbGVhc2UzMS1tYWludAorODI2MTQgNzBiMDM4OGY5ZDNmNTI1NjVhODU4OTBjYWFjM2ZiOTQ0ZTMwZTJhNCBweTNrLWR0b2EKKzgyNjE1IDNlYTZmNjlkYjI0MjYxOTgyNGIwOGJhODIyYjdmZGVlMjBjZDJmOTEgcHkzaworODI2MTcgNTgxMmRkNDQ4MDdhZjk2NTE3ZWYyZjNhZjgxMWMxYWQ0ZDdjODNhMyBweTNrCis4MjYxOCBkMmIxNjg5YTMzODFlYzY1MmQ3YzRlYzg1MjNjOTI3NmFiNDhkZmFmIHJlbGVhc2UzMS1tYWludAorODI2MjAgMDU2MmYyZTA1MjhkMTJkYmQyZTI1NGFmMDRkNDIwYmZkMDk5ODY0ZCByZWxlYXNlMjctbWFpbnQKKzgyNjIxIDQzYWJhMDllODk0NjkzNmVkNTNlMmJhYjgyYWI2OGRlYjk4YTIxYjggcmVsZWFzZTMxLW1haW50Cis4MjYyMyA5MTJhYjJmYjQzZjU4YjAxMjk4ODM5MzRhYmRiZjQ2N2QwNzcwYTFjIHJlbGVhc2UyNy1tYWludAorODI2MjQgZjY0MWJkNTQ2ZGU0MTI4Y2Q3OWNlNzkzMjA3ZDIzMDBiNGVmODcwMCBweTNrCis4MjYyNSBlNjU1ODQ5ZTc5YzZjODJhOWQ0OTdiNzhjMDZiMDQzMWFiMzkyNTFmIHB5M2sKKzgyNjI2IDg3NTU1ZjQ1Y2Q2YmU1ODY3ZDgyZDk4MjY2OTRlMmE0ZWJiZGM3ZGEgcHkzaworODI2MjggNzRiMmNiZGE5YmRhNDQ3Zjk5NzgzODEyMzU1OTM5OTE1ODEzNzBkOSBweTNrCis4MjYyOSBjY2Y4ZTYwMjBjZjM0YjVmNWVjODhkZDVmMjY4YjEzMzc0NmFmMTBkIHB5M2sKKzgyNjMwIGY2MjY2YzQ1OTE1NjMwNmM5YmFiZDVmZDhmMzJkNzc2YzNkMTBjMGEgcHkzaworODI2MzEgZTdkYTk2OGUzZTVhMGRhNjRiYWQ5ZGVkOWY0YWY1YTIwNDY4ODM0MSByZWxlYXNlMjctbWFpbnQKKzgyNjMyIDVmM2UxODZiZWYwZjA4MzUzYjcyYWQzOTQwOTlhMWNiMmM0ZjY2NWUgcHkzaworODI2MzMgMzRlM2RiZDQ3ZTRmYTNlZDBiNmY2NTRhMmNlZDQxMzljZDdhNTMxYyBweTNrCis4MjYzNCA5NDY0NjRmZDY5MjEwZDcwYjRhYzVkZGY2NzllMjc5ZmFhZmI1ZWUyIHJlbGVhc2UyNy1tYWludAorODI2MzUgNTUzZjEwYjAzN2Q5ZWUyMzNiZDUxYWMwYzgzOTE5Y2M3YTVmOGM1YiByZWxlYXNlMjctbWFpbnQKKzgyNjM2IDM4NGY3M2ExMDRlOTRlMTBkNzllOWMxOTNlN2ZkMGUyZjJjODQ4ODQgcHkzaworODI2MzcgMzgyZGNiMGM2MDczYTE0NjhiZjQ3MGIyMmY3MmNmZTA3NGVlNjQ5NCBweTNrCis4MjYzOCA1NWEwMjRmNTE1MjRiZmQwMzcxODhkNjFmOGFlZWJiZjIzMjFmNWE0IHJlbGVhc2UzMS1tYWludAorODI2MzkgOGM2YjNkYzY1MmZiOTIzMjJhOGQzNGY2YTYzNTQxYjNlM2QzMjY0OSByZWxlYXNlMzEtbWFpbnQKKzgyNjQwIGEwMDgyYTc0ZDEyNWEyZTg1ZjhjZDA1YTUzYjE2MTA2NmJhZGI1NTYgcmVsZWFzZTI3LW1haW50Cis4MjY0MiAwNDA2NzkwODdkMDM1MmI1NjUxM2NlNTI5NDIzYzI5MjBjMjI2NjE5IHB5M2sKKzgyNjQ0IGNhMDUzNzFjZmYxMGEyZjlkMGYyYTAzYjUxMzg0NDg0ODg2ODcxYTAgcHkzaworODI2NDUgZjg0NWVkMWQ4OWQ1YmI4YzAzMGE4YTE3MTBjZDgwYjUxYTJiNTgxYiByZWxlYXNlMzEtbWFpbnQKKzgyNjQ2IGNhMGEzMzAxYTdlYTFiYWFiYWY1YzAyZGM2NTNiMjdmYjg5ZmIzNGEgcHkzaworODI2NDcgMTBlNmE1NDMwYjc5NDRiNmJlYmYxNTNlMWQ2ZmFhM2E0MDViODA5MCBweTNrCis4MjY0OCBjNzMwNWJhODQ2MTk3YjkzNWJmZWRhMDVkOTQ4ZWM4NWY2MmExMTk2IHJlbGVhc2UyNy1tYWludAorODI2NDkgZDE1NmY3YjM5YzNjMzQzMjNmYWY5NDdiOWZiZjIwMzZmODE4NjU3MSBweTNrCis4MjY1MCA1YmM3ZGJkMzFkMWI0OTQ2YzM5NWRjNjMyMGNkNGVhMWU2MzBlYmM0IHB5M2sKKzgyNjUxIGIwNDQ2MjUzMjJlMzE2YzY0ODRhNTMyNjFkZmRiM2ViNGFmZTBhZjIgcmVsZWFzZTMxLW1haW50Cis4MjY1MiBhNjMxOGRhZmI4ZWI1YzJkODE5ZmQ3MDgyMmRiZWI1ZTVmZjcwZmVmIHJlbGVhc2UyNy1tYWludAorODI2NTMgM2Q4YTdmNzAxY2IxYzI1MzdmNTgxYTE3ODBhMTI2ZWZmNjU1MmQ2OSByZWxlYXNlMjYtbWFpbnQKKzgyNjU0IDA5ZjVmZDAxM2MwYmUyZmU3YmIwZjQ5NDY0YWUzMWU3MjY2MzRhOTcgcHkzaworODI2NTUgOTc1MmI4NWMwMTE5MmZlODM4ZGFlZDBlZmFiYTUyNzA2ZDAyNmM1MSByZWxlYXNlMzEtbWFpbnQKKzgyNjU2IDZlZGMzZTJhN2RhNGFhZGFmYWNlNDU2OWIwZmM3YmJiMzU1NDQzYjIgcmVsZWFzZTI3LW1haW50Cis4MjY1NyA5NzRmOGQ4YmMwZDQ0ZDE1ZDhiOGRmNTM4NTJlYmJhOGNlN2Q4NjBjIHJlbGVhc2UyNi1tYWludAorODI2NTggYzhiZWNmNjA2YTBhYWMwOTZiZjg1ZjQ5NmQ2OGI5NjM4Mjg2NzRjYSByZWxlYXNlMjctbWFpbnQKKzgyNjU5IDczMGI3MjhlNWFlZmI1NmNjZmM0ZTljMmNjOTM0YzJhZDg2MzgwNTkgcHkzaworODI2NjEgN2EyMTZiYzJiZWQ2NTBiOTcwNWI2ODhhOGMwYjY4ZTI3NDNjZDZkOSBweTNrCis4MjY2MiAzNTI4YzRlNzgwYmYwN2I4ZjkwMmFjZTc1MzcwZDc2Nzg1N2MwZmJmIHB5M2sKKzgyNjYzIGU0YmRhNGE1MjBjYTc1MjkyYTE3MTYwYjU1NDlkM2Q2MzQwMzBjZWIgcHkzaworODI2NjQgZmYyZDFiMmNkYzY5MTM5ZjMyZGU3ODQ3MTNkMWJkZjA1ZDI4ZTIzMSBpbXBvcnRfdW5pY29kZQorODI2NjUgYzY3Zjk4YWRiOGYzNjFjYjE5MzY3NmM4ZjUxYzkxNTZlOTI3YWIwYyBpbXBvcnRfdW5pY29kZQorODI2NjYgNWI2MzE4NTM3MmQxZjM3YWE3MWQ2ZjEyYmNiMzQ2NzM3N2NjOTdjMyBpbXBvcnRfdW5pY29kZQorODI2NjcgMTZlMzQ4ZjE2NWY4NWQzNGQ2ZWI4Yjk3NDk1NDJmNGRjZTFlZmZiOCBpbXBvcnRfdW5pY29kZQorODI2NjggNDRiZDRhZDFmNmQ0MmZhYjIwNDQ1MDY0NDg1MDBkMjM3MDM3ZWQzZiBpbXBvcnRfdW5pY29kZQorODI2NjkgNWI2ZjAzZjM5MWRhZmUyNDYwYTBhMzk5ODU4M2I1NjI5N2RlNzMxMSBpbXBvcnRfdW5pY29kZQorODI2NzAgZTk2Mjc5YWM2ZDE0NjhhMzRkMWE3ZjQzMjcwNzUzOGUwYjQyODE2MCBpbXBvcnRfdW5pY29kZQorODI2NzEgYTk3Zjc1MDNlNTBjNDA1NmZlMzBiYTVmNDM0OTI1MjBjZGRjMjFjOCBpbXBvcnRfdW5pY29kZQorODI2NzIgNjBmYzk0NDZhYTJlMDM1Mzc2ZGZhMDcxMTNjZWE2ZmZkNmM5MzFjZCBpbXBvcnRfdW5pY29kZQorODI2NzMgYzMwZDg0ODA3YzYyZDA5NWU4NGRkYTVmZDMyNzUwYmRhYTNlYjM3OSBpbXBvcnRfdW5pY29kZQorODI2NzQgZGZlMjYwMjMxYzQ5YzE0Mjk4YWUxM2I1MTRkYWUzMDU4ZjQ2MGFhZiBpbXBvcnRfdW5pY29kZQorODI2NzUgMGNkOTQxNmExYzFlNjdiN2Y0MDllNmYzMzNhN2RiNjEyMjVkYjE1OSBpbXBvcnRfdW5pY29kZQorODI2NzYgZjczNWJiMmIwNmRlMTg1OThkYzMwOGExOTQ0ODIxMjNiMzI2NTFhZiBpbXBvcnRfdW5pY29kZQorODI2NzcgYmViY2I2YWIwOWE1NjViMTM3NmRlMWE3MGJkODU5YTU1MWFmNmQyZCBpbXBvcnRfdW5pY29kZQorODI2NzggYzg3MmU0ZmFhMWU3NDIzOTFlYmUwNzI1ZmM4MzMzNmVkY2I4MTk3MCBpbXBvcnRfdW5pY29kZQorODI2NzkgMTRkYTdjM2U5MjIzMmIxNGMzOGQ3ZjAwZjUxYTdjNzBjOGEyZTBkYiBpbXBvcnRfdW5pY29kZQorODI2ODAgMDk1MmUyZGYzYzRkMWI5ODRjYzBlZGRiNzY1ZDk4YjIyZmIyODIyNCBpbXBvcnRfdW5pY29kZQorODI2ODEgNzZmMzZjYTEwNjFmNDRmYTVhN2I5MTNiNjkyNDI0ZjM3OTQxYWVlMyBpbXBvcnRfdW5pY29kZQorODI2ODIgMjJiOTM4OGQ3YzBlZjkwYTdlNjYxNGNlZTQwNGJmMDVkNTlmZWFjMCBpbXBvcnRfdW5pY29kZQorODI2ODMgZTQyMzNlOWM4NDYxMjI2NTFkYWM4MTViZTg0MjE3NjQwYzc5MmM3NSBpbXBvcnRfdW5pY29kZQorODI2ODQgZTc2NmY3YmNiMmQ1NWMzNDc3NGRhMzJiZTVjZjliOGVjYTNkYTM2MSBpbXBvcnRfdW5pY29kZQorODI2ODUgNWNhNDFkZWViZDBmZmEyZWVmODYzMGRkYTdiOGZjZGQwZjRlNGY3NSBpbXBvcnRfdW5pY29kZQorODI2ODYgMmU5ZmM1MzJkMWQxYmQ5YmM4MWIwNWI5NDk5MGEwNDEzOWRlMmM1ZiBpbXBvcnRfdW5pY29kZQorODI2ODcgZTFkODZjZjJjZmU0NGJlMDk0NTNmMWVhMTk4YmUwYjkxODJjNGVmYSBpbXBvcnRfdW5pY29kZQorODI2ODggZTBmYjQ5ZWM5NDVjY2E1NzI0Mjk0NjdhMDY4OTUzNjMzNThiZTIwNyBpbXBvcnRfdW5pY29kZQorODI2ODkgYTJjN2YyMDYwZTViZGJkODdjZmJhZmQ1NDc3OWZjNTlmNGI2M2M4NSBpbXBvcnRfdW5pY29kZQorODI2OTAgMWMxZmQ5NWUxM2I0MmViZWZiYzI2ODFmMDMxODc2ZTI0NDI1NThlMSBpbXBvcnRfdW5pY29kZQorODI2OTEgMGEzMGI1NmNhM2FjOWRlMWIxNWM4YTM2NmZkMGRjMTZlZWIyMDlhZCBpbXBvcnRfdW5pY29kZQorODI2OTIgMzYwZTFhMDhlNTNiOTQ4MGFhNWRjYjM4ZTA5OWVkZGJjMjk2M2ZmMiBpbXBvcnRfdW5pY29kZQorODI2OTMgNjBmYmZhYTdkOTNkZmRiMTlkNGRiMTNmOTMyYTJjMWQwNTNlYzM0ZSBpbXBvcnRfdW5pY29kZQorODI2OTQgOTUwYjQ3NTRiYmUyYWJmYzBjNTAxYmJmMWY2MGI5MjUzYTU4MTE5NCBpbXBvcnRfdW5pY29kZQorODI2OTUgZmZlYjg1MTI4YzdlODQ4MzMxNjk2YjZlMTRiMjNhNGVhN2Y5OGVhOSBpbXBvcnRfdW5pY29kZQorODI2OTYgMDFlNGUzZDM3NzRkNjA0NWMyOTkyMzU4NGMwOGY3ZTg0NTIyODRjNSBpbXBvcnRfdW5pY29kZQorODI2OTcgZTgxZWQzYWQwNjlkOWFjMmU1ZWE5Y2NmODkzYTU4MGFmZDkwM2M4MCBpbXBvcnRfdW5pY29kZQorODI2OTggMWFkYzIzZGNlOTcxN2M0ODQwMTAwYWQyZTMzOTJlNGM2MzYzYmEzMyBpbXBvcnRfdW5pY29kZQorODI2OTkgMTc3YTgyZWNmZjY3MTA2YWJiYzRjNjc1NjVjMGY1MWNiZTYwMDI1MyBpbXBvcnRfdW5pY29kZQorODI3MDAgODI0OTdmMWMxYzU0MTUyODNhYWNiZWJhMDNiM2FjYTczNGYwNzgwOSBpbXBvcnRfdW5pY29kZQorODI3MDEgOTBjYTQ1ZDY1NmMyZDY1NzA1NWFlNTY3YmZkNWNiMDM1MjQ5ZjhkOSBpbXBvcnRfdW5pY29kZQorODI3MDIgMzBiYmMxODYwZmJiMmU3YmQwNjY2OWM0NjZhZTc3NDg3NGE3ZmQ2MiBpbXBvcnRfdW5pY29kZQorODI3MDMgODY1ZDE4YWZkYTE1MTA5OTNiY2ViNGRhMjA2YTA1NDI2ZjZjNWI4NyBpbXBvcnRfdW5pY29kZQorODI3MDQgN2FmMjI5ZWEyZTY2NWE5ZWMxYWVhNmY3NzFjNWUwZjBkZmZlZWVmNCBpbXBvcnRfdW5pY29kZQorODI3MDUgYTI5Y2MzODUwMDI5ZjU3ZTcyMjMxYWEzZDM2YzZiM2E5Y2M4NDhjOCBpbXBvcnRfdW5pY29kZQorODI3MDYgYTQyMWI0YjQ1YWE2NjIwZjJkMWE0NTFmNWIxZjgyZjcwYWY2OGU2NCBpbXBvcnRfdW5pY29kZQorODI3MDcgYTdiYjg0Zjg0OThhMWY2YmM1NWJjZDFjMmRhM2M2ZTFiMDU1MzcyYiBpbXBvcnRfdW5pY29kZQorODI3MDggYWY3ZWMxNjkxMDQ3YmNjMzJhMDYyNTcwOGZiMTJlZTM1OTFmYjlkOCBpbXBvcnRfdW5pY29kZQorODI3MDkgNjhiMGU3MmVmNGYyMjFkMGI1ZTZhM2JlYTc1MmE0YmNjODk2NmFkOCBpbXBvcnRfdW5pY29kZQorODI3MTAgOGU3MGE1ZWMxYWNhNjI5NTQ4ZTljMjdmMTE3MzA1ZGY5Yzg5Y2VlNCBpbXBvcnRfdW5pY29kZQorODI3MTEgNmRjYTkzNzAyZTZiZDAyZGRjN2VhYjQyY2ExYjk3YjgxNzcwY2ZlOCBpbXBvcnRfdW5pY29kZQorODI3MTIgNzZjMzVkOGEyNmEwMTIwZDhkMGI3OTM4MjRmOWQ4OThlMGVjYTNkOSBpbXBvcnRfdW5pY29kZQorODI3MTMgYTdjZjkwM2IxN2RjYjFlMjU2ZjcyNzdlZDU4ZTZjNWIyOGJkZTQ4MCBpbXBvcnRfdW5pY29kZQorODI3MTQgNzhlNmE2ZmJkMzYyMWJkOGY3MTAzNDk3MzIxZjQ4NTc3MWEyOWY4YyBpbXBvcnRfdW5pY29kZQorODI3MTUgYWIxN2IwYzIyYmExZDI0ZTA1NGRiOTM5NGQ1MGNmZjcxYjk2MmUwYyBpbXBvcnRfdW5pY29kZQorODI3MTYgMDk1YjI5NzJjNDRmMTEyMzZjMGUyOTMwM2MyMzdkMDA0ZWQ5YzUwZSBpbXBvcnRfdW5pY29kZQorODI3MTcgMzZmNmVkMDY1MWUxMzQwZWJmODFlNDlkNTBiOTIyMGY5ZjFlNGM5YSBpbXBvcnRfdW5pY29kZQorODI3MTggODUyZTRhNzVlMTU2OTA0YWU0N2RmOWJmNWJlZGZmNmQ1YzQ2ZjE3NSBpbXBvcnRfdW5pY29kZQorODI3MTkgZjBlZjgzZDkxMzU0NWJkZTMwOWM0YjRhMDBmZGMwODEzNGIyY2VhOCBpbXBvcnRfdW5pY29kZQorODI3MjAgZWNiYThmYTVjNzQzZWUwYTIzOTY1NTkxNjg5MjAyYTU4OWQ2MTM3MCBpbXBvcnRfdW5pY29kZQorODI3MjEgOGRjZjg0MWYxYmQ0MDVmZWNiZWZiMDQ2YWQ0YjQyNTMzMTg2NTBiMCBpbXBvcnRfdW5pY29kZQorODI3MjIgYmMwYjRjOTE4ZGRiNGE3ZDNlODkyY2U0OTg0Y2U3OTUwYTAzMDRkZSBpbXBvcnRfdW5pY29kZQorODI3MjMgMGU3ODJhNmU2YmI3NmUzZWRhNzZhN2FkMmZjZjA4YWJlNWVhZGY3MSBweTNrCis4MjcyNCBjN2YzNjE3MDI4YTgzOTkxN2I1MTJjYTViYTU3YmZiODZkZThkMmQyIHB5M2sKKzgyNzI1IGEyMTc3MjYyZjZiN2U1YTc0NGY3NDJiNDBkYjc3ZWQ5MTMwOGNkYTUgcmVsZWFzZTI3LW1haW50Cis4MjcyNiAwOGVlZTg5YWY3Yjk5ZDEzYTA1OThkZjU5Mjc3OGU5YTk2MjMyOGEzIHJlbGVhc2UyNi1tYWludAorODI3MjcgOGM2MTRiYzc2NmI0NTM5OWYzMTFkZTBiMzJlYWUyODE4MDZhMGE2MSByZWxlYXNlMjYtbWFpbnQKKzgyNzI4IDBkMTIyMDE3NWYyOWVkMDFmMDA5NjZkNWNhYTZjYTlkNDdjMjcyYzMgcmVsZWFzZTI2LW1haW50Cis4MjcyOSA4YWFhZjAxZmNmMDNlY2E0NDFhYjg0ZTlmMzhkM2IxZTBhMGFmZTZjIHJlbGVhc2UyNi1tYWludAorODI3MzAgZjNiZmRmZjIxNDZhYTRlMTAzMjNhNTBmY2M0YTk3Zjk5Y2UzNzNiMSBweTNrCis4MjczMSBjZmNmNmY2M2UwYjRhYzA1YjUyYTA5MTUxMGU1Y2Q1ZmVhNmExZmY1IHB5M2sKKzgyNzMyIDU4NWM3MGRjMWVhYTRmN2VlZmJmZmIxYTdmYjMxZDJlMDczODlkYzcgcmVsZWFzZTI3LW1haW50Cis4MjczMyBkYjI5M2ZkNzUyOGI5NGMwMTdjZGMyYzA2YjU1ZDM3MzdmN2EzNjZmIHJlbGVhc2UzMS1tYWludAorODI3MzQgNTIzYWZmZDRkNDcyOTM3MDkwN2NlZjM1OWQwYzU0OWRmMWMzOTJiMyByZWxlYXNlMjctbWFpbnQKKzgyNzM1IDQzYTBmYzE4NGE1ODE3NDkxMmVhYTE0Y2NlYmZkN2FmNWJmZjNkZTIgcHkzaworODI3MzYgNDdkNDliNDA2MjAzYTBmMmE5N2YxNWUxZTA2OGEyOGYzNzY0MDU0YSByZWxlYXNlMjctbWFpbnQKKzgyNzM3IGUwZGVkZDJkY2ZhODFlMDExYTk2NzFkNWQ2Y2ZkMDdjMGM0YmQ3MGIgcHkzaworODI3MzggN2U5NGMwM2JiODRlMTUzZWMxZjExZTRhN2RhMGMyNDczMDE0NmU0YSByZWxlYXNlMjctbWFpbnQKKzgyNzM5IDEwYzA2MzBmMWMxNDNhNTY3NTNjM2M0MGY1ZjAwZjhlZjI5YzVmZDkgcHkzaworODI3NDAgMDg5ZmQ3MTBkY2E4ODQ5MTU5ZTNlY2M1MTUzYmEyNzdhZjg1NGQ1MyByZWxlYXNlMjYtbWFpbnQKKzgyNzQxIDdkOWFiMzVlNDNiYzY2YWY5YzQyZDllZDc4OGJkZWQzMDI2NzlhNTQgcHkzaworODI3NDIgODE1YWU3ZjM3MzJiZWViZDFhNmUxY2EzMTJhNmE1ZWIzMGYyMmYxNCByZWxlYXNlMjctbWFpbnQKKzgyNzQzIDVhZTdkZjZjOTNlZDk5YjRiYjE1N2FjZTg2NTYwYjNhODlkMzJmNjMgcHkzaworODI3NDQgZTNmODNmNTZkZDNjZGU5MzZjN2QxOTBmZjM4OTg3ZjE5Y2I4OGFkZSBweTNrCis4Mjc0NSBlOTdjZGQ1YzVlNGZjOTkxNTY5MmI4MWM2NmVlMzM5MmI0MGY1YjAzIHB5M2sKKzgyNzQ2IDkyYTlkYzY2OGM5NTI5ZjAxOGE2MjBiNDcwN2JjMDljZTE4NjE2YzAgcHkzaworODI3NDcgZDQxYTMxZjViZjgyZjYyNGFmMjE5Zjk2OWE3ZTU2Y2E1MzU1OTk1MyByZWxlYXNlMjctbWFpbnQKKzgyNzQ4IDRlZmY5YzM1YzU0YTdiYjk4NTRmZTFiNjMxMzRhNWVjNTJlN2FiZmUgcHkzaworODI3NDkgZmJhOWU5MWU4OGRjZGYwYzc0OTM0NmJmNjZkMTA0MTRlNjU5ZmY3ZCBweTNrCis4Mjc1MCBjNzBkNTBkMjFmODUxYTZhNTcxNDA2OTllZjJkYTllN2JhYjNjZjU0IHB5M2sKKzgyNzUxIGRlMWI5ZmMzZTFlNzIyMGY0MzJmNjA3YjU4YTQ2MTNmYWExZTU2N2YgcmVsZWFzZTMxLW1haW50Cis4Mjc1MiA4ZWE2MGFlMTQ5NjhmMzY5YTI5YzM0MjI4OTVkNjk1YzU4NTE3MzIwIHJlbGVhc2UzMS1tYWludAorODI3NTMgYmQxOWM3MTc4ZjI0MmMzODQxNDFmNjIyYTMzMDdhY2EwNjFiMTdkYiBweTNrCis4Mjc1NCBmNDc4MWFhODJiMzc1MGIxZDQ4OWQ2MGMzMWI3NmE0OWMzOWUwM2UyIHJlbGVhc2UzMS1tYWludAorODI3NTUgNTAyNWJhMDU1M2I2MzI5ZWIxNThkNDNlYzE2YzI1OGM1OWY5MjZkZCByZWxlYXNlMzEtbWFpbnQKKzgyNzU2IDYzNjEzYzRmNjMxN2YwNmEwNTE2NWEzZTcyNmY2MTBkMzUxMDgyMDYgcmVsZWFzZTMxLW1haW50Cis4Mjc1NyA0ZDIyMmVlMmExYzg1NDc2ZGMwZDZjZWQ1ZjgyY2Y5MWMwYTNmODI0IHB5M2sKKzgyNzU4IDdiNTcyODllYmUwZDRlZjk5MWY1NWZmMWM5N2M5MDQzODNlNTNjYjEgcHkzaworODI3NTkgOTgzZTJjMGJmOGRjZGVjZGE5OWJmOTEyMDc2MWYyODVhMGMzYzk1MCBweTNrCis4Mjc2MCAzNWM1OWQxMWFlMTM4MzI3OTNiMzA4YjQxYzc0Yzk5NWU4NGZhOTQ1IHB5M2sKKzgyNzYxIGJjYjc5ZTFhYTAwZjdmNDRkMDhiNmM3ODU2N2E1NTEzODJmNjMyZjkgcHkzaworODI3NjIgMzNkZTljYWY3MDkwMDAwMjJhOTcyYmJiYmRhNTA2YjEyYjAzYjgwOSBweTNrCis4Mjc2MyAyNTRlZjUyMDUxMjhhYzZkNjAyOTFiNmUyOWE1ZDAwYzUzYWQ2NTNjIHB5M2sKKzgyNzY0IDk0Mzc4NDcwYWUxYzkwNzgzZjIyZTc4ODU5ODcxOGMzZDQ3YTgwYmMgcHkzaworODI3NjUgZmYxYTgwMzc2NDhjNGJjOWM1NDg3NTg3NDk1MDdhNzFhNTE2MDAwYSByZWxlYXNlMjctbWFpbnQKKzgyNzY2IDhiZTJiOWU0ODcxODdiZGMyODU3YmZiODI4MTRkZTg1ODE2ZmI4YjEgcHkzaworODI3NjcgYWFjMDkyZWFmOWQxODJkMTU2YmMyZDdhMjAwYzkzNmZhMjZlYmMxNyBweTNrCis4Mjc2OCAwZmJkYzNmYTAyNGJlNThlOGYxYjFkODg4N2VmOGQ4ZThkNDViMDNiIHJlbGVhc2UzMS1tYWludAorODI3NjkgZGFiMjg2ZDJiYTgyZmZhYmM5OTJhMmMxN2Q2YmM3ODBjOWQ3MjlhNyByZWxlYXNlMjctbWFpbnQKKzgyNzcwIDQ5ODYxZGZiMjcwMTgwMjExMTVmMGEyMTAzZTIzNjBjMGIyMTQyYWMgcmVsZWFzZTI2LW1haW50Cis4Mjc3MSBlZDNiYzdhOTZmZmI0YmEzN2QzYjYwMzkwMjZlYTFhNzYyZTYwMGEyIHB5M2sKKzgyNzcyIGFjZDZjY2NjZTgzN2I5MzUxNjEwNjQ2MTY2ZTZlZGE3MzgxZWI3MDIgcmVsZWFzZTMxLW1haW50Cis4Mjc3MyA0MjlkMGM3Y2RiODU2ZGM1OWIyM2ExOWJlYjE4MmMxNzEyNzdhYmIxIHJlbGVhc2UyNy1tYWludAorODI3NzQgYWNlZjVkNjYwODMzMDA5OGM2NmYzZTFjYTg2YjQzZThiOWFlZjRjOSByZWxlYXNlMjYtbWFpbnQKKzgyNzc1IDAzZjczYzQ2Zjg5YzdjYTc0MmM4OWU1ZWY0YjAzZGY5Y2FhMzExNTMgcmVsZWFzZTI3LW1haW50Cis4Mjc3NiAwMzAzNmFmY2E1NDkxYTAxNDQ5NzE2OGUyYjJhOTYyNDJlOGNlZTc3IHJlbGVhc2UzMS1tYWludAorODI3NzcgNWU2MGM3ZGIwZjUxMGVkYmEzMTZmZGE5YThmYzViY2VkZjI4MjM2ZSBweTNrCis4Mjc3OCAyODc1NWViNTNmMzg5NDYwZWRiMGIyZTJhMmQ0ZmU2ZDA2MjYyNzU2IHJlbGVhc2UyNy1tYWludAorODI3ODAgYjU4YjRhYTQ2OWM0ZjgxNzhmNzJlZmJmMmEzZTc1NDFmYzlmZmM1ZiBweTNrCis4Mjc4MSAxNjM2MTI0ZTVmZmVlYjZjYzExMjI5NTFhYjRhMzMzZjlmZDcxMGMwIHJlbGVhc2UzMS1tYWludAorODI3ODIgN2UwOWM2NGQ0YTY0Y2UwZDI2NDcxYzI3OWQwNWE0ODZhYTRmZDA0YSByZWxlYXNlMjctbWFpbnQKKzgyNzgzIGY3NTVkMWFiODA3NDZkYjZjYTUwZWFmMTMwYTY5M2ZlNDYyNTUzNzUgcmVsZWFzZTI2LW1haW50Cis4Mjc4NCA1MGY0ZjExM2JiYzNmNzMxZmJmMDMyMTBkMjlhY2I1Y2MxOWM1OTk1IHB5M2sKKzgyNzg1IGE5OWU4YWRhYzA4MWRmY2EyNWJmMzhmNWMxYjBhMmIxZTM0MzA1ZDUgcHkzaworODI3ODYgMzY3ZDYxZTZhNzBmMDY4ZjE3NWI3NDk5NThiZmE1ZjM5ZjU5ODZkMCByZWxlYXNlMzEtbWFpbnQKKzgyNzg3IDU1NTMzZDU4MjhiMDMxYTZhYWI2MmY5ZThjODA1MWQ1MjU1YzhhZTYgcmVsZWFzZTI3LW1haW50Cis4Mjc4OCBmMGRkMDNiZjZiYzVmYzA3N2Q3YTU1MDEzZGEwNjI1MDQyMzVkMDIwIHJlbGVhc2UyNi1tYWludAorODI3ODkgNWRiMmUwN2M0NDUxZmMyYjM5MTIyOTBlNzJiMDRmZjZiMzY0YWVkOCBweTNrCis4Mjc5MCBiYTBmNmUxN2ViMjIzYzAzYmRhM2E2YWViZmFlNzA4MGUxYjNmMmE4IHB5M2sKKzgyNzkxIDBiMDcxZTFlZmQ0MTRmMGJkNDE5ZDg1OTI1YmJlNmY4YjdhN2JkNDMgcmVsZWFzZTI3LW1haW50Cis4Mjc5MiA4MWQwNTU3ZGY2NDdiZmY1ZDYzODJkZjRkNWZjMGI4NDhjYWUzYjc5IHJlbGVhc2UzMS1tYWludAorODI3OTMgZjk3YmU1ODBkOGMxNmViMGY5YWI2MTUwOGY2YWU5MTRkYzNkMTdhOSByZWxlYXNlMjctbWFpbnQKKzgyNzk0IGI5MTUxNjI0MjdhYjRmNmU3NDk3Njk0Njg1MWUxZjlhZmQyZTlkNTQgcmVsZWFzZTI3LW1haW50Cis4Mjc5NSA0MjRlM2ZjZmQzYWQxMWUwNTE3NTQ1NDg5OGEwMmIzNjg5MGQyODc5IHJlbGVhc2UzMS1tYWludAorODI3OTYgY2U5MzVlNzFiZDA3ZTUxOGUyYzc3YzQxOWIwMTgwMGJjZjk1NjI1YyBweTNrCis4Mjc5NyA0NzA3ZWRlNGQxNGZmMTRlNzFiMjM1NDg5MTUwMzA5ZDIwMDdmODNkIHJlbGVhc2UyNi1tYWludAorODI3OTggYzhiNzdlZmU4YjU2ZTk3Mzc3M2VmZjdjMTBmMmEzOGI3OGMwZTNlMCBweTNrCis4Mjc5OSAwZTZmYmY1MTg4NTNmZWJmZmQ3NzNjZTRmMDBkYzMzMGNhMDBmZmRhIHB5M2sKKzgyODAwIGVkYWI1MDFmOWRmOGVmZTE4MjIyNTZhMWE0ZmE1MmUzZjZkYjU2NjcgcmVsZWFzZTMxLW1haW50Cis4MjgwMSAyOTdmMmMyOGYxODI5MzM5ZjRhOGIxZjNjMGQwOGJkYzlmOTE3Yzc3IHB5M2sKKzgyODAyIGQ1ZDUxMmI4NjVhNzVkM2RiMjQ1ODJmNzBhMDY5NTBlZTM5YmQ0ZjIgcmVsZWFzZTI3LW1haW50Cis4MjgwMyA1MDEyZmZhZTE4ZmFjNmI5MmNjMzdlYTEzZjA1NDZkMjBlNWNhNDZhIHJlbGVhc2UyNy1tYWludAorODI4MDQgOTBiZjA2MzFiZmI4ZWU4NzBkZWM3ZGI5YWFhNDlkNmJiYThkZDgyNCBweTNrCis4MjgwNSA0Y2IwZTg3YzA3Y2EzNmExZjBkZjE1OTA0NGI1ODQ1NGNhOWIyZTkxIHB5M2sKKzgyODA2IDYxMmUxMjYzMTUxMWIyMjRkM2I0ZDE4MDQwZWZhNjgxMDM3MDZmNzIgcHkzaworODI4MDcgZDA5MGY2MjU0YzQ1M2RjZTdkNzRkZmIwOGU3NzZjOWUyZmY1NmM5ZSByZWxlYXNlMjctbWFpbnQKKzgyODA4IDM2NWVlYWI0YTM1MDI2MGFmN2UxMDc2MTJhOGYyNjYwZmZhYWUzMTkgcmVsZWFzZTMxLW1haW50Cis4MjgwOSBmY2ZhN2JiZTE4NWVhZmMwYTliMTU3YzYyOWYxMjVhMTFiZDg0M2RmIHJlbGVhc2UzMS1tYWludAorODI4MTAgN2Y1Nzc1Mzk1ZDMyOGIwYzIwZGYxY2EwYzQxN2U0YTJmNTM4MmFlZiBpbXBvcnRfdW5pY29kZQorODI4MTEgYmUxM2ZmMzc1NWU5ZmFiNzE2MzFjYzhlODc0M2ViYzU0OTZkNzA0ZiBpbXBvcnRfdW5pY29kZQorODI4MTIgODFmMGYwZDUzZDEwODRlNjE3MmFlMjYwM2RlNTA3ZWU3ODU2ZWQxMiBpbXBvcnRfdW5pY29kZQorODI4MTMgZDEzOTE0ZWNkMzcwZmZiYjQ5ODEyZjVlZmM3YjZiYTM4NDY1OGYzZSBpbXBvcnRfdW5pY29kZQorODI4MTQgMTg5ZmE5MmQxNWRjNTk3ODI5ZTc1ZjA0ZGIxZDk4NmJmMzZkMTlhYyBweTNrCis4MjgxNSBiMTQzOGQyNmMxNjdiODYyMWRlOGMyMjg5ZTcwNDFlY2JhMWYyNTFiIHJlbGVhc2UyNy1tYWludAorODI4MTYgYTM1MmI5MTU2Y2VlY2IyNzg4NDk4NTk5MDNjZDBkNWU0ZTVkODg3ZiByZWxlYXNlMzEtbWFpbnQKKzgyODE3IDBmNGI3YzA3ZDFiMzdiNTIxMWM3YzIzNWYxMDkzNDIwZWJjNmY0YmMgcHkzaworODI4MTggNTNlN2FlOGNhMDM5MTQ4Y2Q0YTEyNTY2OGRkNzFjMjhmMzdjNjMzNCBweTNrCis4MjgxOSBlYWNjZjFhMWNiOTAzYjRkZDY4MjNlMjExZjg5OTE0MGE5ZmNjMDFmIHB5M2sKKzgyODIwIDRjMTFlNDE0MGNlZDFmYTM4OGQ3NGQ2YWJkOTRmZWEwODg0NDM5OTggcHkzaworODI4MjEgMDZiMzg5MWE2Mzk1MzRiYjRlNDM1MmJjYzcxMmYxNTAwZDg3MWFkYyBweTNrCis4MjgyMiAxY2Y0M2M2ZTY1NjZiMzYyOWZmMzJjM2IyODc0N2JiYjFlN2Y2YmY2IHB5M2sKKzgyODIzIDExMjlkNGRmZWVkNmZlMWQxYmZlOGMyZGM5MWE3YTlhZGNiMDE3NzAgcmVsZWFzZTI3LW1haW50Cis4MjgyNCA0MzI5MDhkNTIxY2VmZWViOTU3NTJkYmNmNGQ2OThlMGYwYWJmMTYwIHJlbGVhc2UzMS1tYWludAorODI4MjUgMzJkOGIyMmIwZTdjNWU2MjkwZDBmNGU3Y2M5NDcwN2VmNWQ2MjliYiBweTNrCis4MjgyNiA1Y2EyMmExYmUzY2QyMTY4ZTMxNGE0OTdiZmQ5OGEyMzRmYjcyODE1IGltcG9ydF91bmljb2RlCis4MjgyNyAxOTQzODRiNTM4MGU1MjQzOGQyYWJiNGFhMDczNjBiYTU3NDEwMmY3IGltcG9ydF91bmljb2RlCis4MjgyOCA0ZGQ5ODUyZGFlOWIzZTcwZWI5OTQxYTBhZmNkMzRiN2QwNjBlZjgwIHB5M2sKKzgyODI5IDczNzUxOWVmMTYyZTZlZjI3NjZhNmViYjE0NmIwN2Q0ZTZmODQwNmIgcmVsZWFzZTMxLW1haW50Cis4MjgzMCBhYjEwMmEyMjYwMzgzYjEyZGM1NzM5NGMwNTU2ODMwYzhmNjU2NDA4IHB5M2sKKzgyODMxIDNmMzdlM2NjYzEzMTM4Nzg3ZWNiODdhMzY3MWMyNmUwOWM5ODI3ZDEgcHkzaworODI4MzIgNjU3NmZkNGMwZDJlMzExOGQ0OTRkMGVkZjBlYjI0MTE0NDdiMDlmMiBweTNrCis4MjgzMyA0OWI4M2JmY2ZhOGZiYmEzZmY5NmQ2YjUzNmM3MzhkODYyZThmZWIxIHJlbGVhc2UzMS1tYWludAorODI4MzQgODQ5ZjZlMjIwYWEwZDIzMTBmOGE2MzMyNjA1MDExMGJjOTFjNDMxNCBweTNrCis4MjgzNSAzMGY2OTVlYzk0OWJkMjI1NTM4ZDQ4YTFkY2MzN2VlMGJlMjhkZDlhIHB5M2sKKzgyODM2IDhlNDJjN2E1ZGFiOGQ4ZmI2NGRhMTBkMmEwMGRlMWM2OGJjNDIyNTYgcmVsZWFzZTMxLW1haW50Cis4MjgzNyBmNWIxOGYyNjhmNTdkOGU5NjAyZWNlZjI2MGNkMDVhMWIwMWRlMjU1IHB5M2sKKzgyODM4IDBiYjRkYWQ4MTYxNGI3OWYyMjZmZDMyZWZmMzhjYTEwNmNmZmE0Y2QgcHkzaworODI4MzkgNjY0YTIwZjRhODM2Yzc4MjJjZGI1NjE5NTBlZTkyNjI2NzE0NTRhNyBweTNrCis4Mjg0MCA3ZWFiYTQxM2ZkYTRiOGYyNTc2MDJhMDU2ZjkyYjE1ZTFjYTBjMzk3IHJlbGVhc2UyNy1tYWludAorODI4NDEgOTRmNTI5NzY0YzM4NzNjNjUxZWQ0NTE4MWU4MGIyNjhiYjM1ZTE4NyByZWxlYXNlMzEtbWFpbnQKKzgyODQyIGZjZDQxMjNhZWQ5MzQ2YzY3OWZmOGU4ZWFlNjBkNzY0Y2JiM2RjYWMgcHkzaworODI4NDMgNjBmZGYxNDcwMzJjZjE1Zjk3OTY5MWQ3YjYyODQzMzM0ZjYwZDQyMSBweTNrCis4Mjg0NCA2NGNhYTc0OGEyOGVhYzkxZDVhMDU2ZWJkZWJiZWY5MDUwZTE4M2Y1IHJlbGVhc2UzMS1tYWludAorODI4NDUgNGVmNjM5ZjRkODEwMGI0MjkwY2Q1NWFjOTYzOTkxMTFhMmRkYjY3NSByZWxlYXNlMjctbWFpbnQKKzgyODQ2IDFmOTk4MjNmNGZhZTc4YTFkNzVlOWM5NjJhN2E1YmI4NjAxMWZjNDQgcmVsZWFzZTMxLW1haW50Cis4Mjg0NyA1YjM1MjEzM2M0NTIxYzllODI4YjMyZWEzOWMwYmNlOWE5YWQ1YmIxIHJlbGVhc2UzMS1tYWludAorODI4NDggYjllZGRmM2MxZTkwYTFlNjg5YTYyY2M2MmViZjA1MGI5YWY0Y2FiNiBweTNrCis4Mjg0OSBlZGZkN2VhNDhlZGIyNWVkNmZjOTFiODQwODAwZTExMzczN2VmOTEzIHB5M2sKKzgyODUwIGI1NzQ5ZGQ4YzQyMWJiMWQwODI0NjUyNjkyY2FmNmFmYTY4YmQwM2MgcHkzaworODI4NTEgZGFlYTk3OGE0OGFlODk0Zjc2MzE5YWNlNTU3NDgyNWY2MmFhNTdmMyByZWxlYXNlMzEtbWFpbnQKKzgyODUyIGFkNTFhYjhiNjRiZDAzZTkxMWUxNzJlOTg1MjM5MTM5NzUwYTMzMTkgcmVsZWFzZTI3LW1haW50Cis4Mjg1MyA0ZmQ1YmEzNWRmNmU1Njk1MTgwZDAyODliYTUxODIyODEwZThjOGE4IHJlbGVhc2UyNy1tYWludAorODI4NTQgOThhNGU5NmYxZjY3NDAxY2U2ZDlhNjE3ZDJjMzRhNDBjNWJiMWFjMCByZWxlYXNlMjctbWFpbnQKKzgyODU2IDMxYTNkNzZmMzgzNTE5ZmU2YjU0Njg1NGVhMTZjNTJiYTUwNjE3NGUgcHkzaworODI4NTcgMmM3NTc5ZTA0YWQyMTQ1NWZhZmVmYWVlNDI4MThjZjNjODlmNTRhMSBweTNrCis4Mjg1OCBlZjY3ZTc0ODEyNDQ3NzVkNThkZTk1YmJiY2QyOTgzNzc1MGZiODA1IHJlbGVhc2UzMS1tYWludAorODI4NTkgYWVkYjUzZDhjMmI4Y2Q1NDcyMWE5NjUyZjI2OTM1ODk1OWQ3NTBkYyByZWxlYXNlMzEtbWFpbnQKKzgyODYwIDY3ZWRjNDI0ZTk3YjgyY2RlZjg1NDY3MDY5NmIwOTcxMDIxNjU4ODMgcmVsZWFzZTMxLW1haW50Cis4Mjg2MSBlNjA3ZmUxNWYyZDY5NDI1ZjQ1OGE2YWQ5NGVhNTlmY2ZkODlmYjMwIGltcG9ydF91bmljb2RlCis4Mjg2MiAxZTM2N2FmZWZkN2UwZTk5NDEzMmViNGQxMjA2N2VhYTgwOWY5Y2NkIGltcG9ydF91bmljb2RlCis4Mjg2MyBhNWZiNzA3Y2FiZGVlYmQ4NmU5OTUxNGQ5ZDY3MGRmZTU2ODQ1MmM2IGltcG9ydF91bmljb2RlCis4Mjg2NCBkNDkzYTFiNDQ1N2U5YTkxMWY1NzEyNWQ0ZDkxOTQwOGI1OTViOWQ1IGltcG9ydF91bmljb2RlCis4Mjg2NSAyMGJiNmZkMGJkOWMzNWY1YjUwOGY1NjFkOWI4NDU5ZWM2ZWIwZTRiIGltcG9ydF91bmljb2RlCis4Mjg2NiAzMzFlMzdlMDUyY2YzYmM1M2I3NWI4MGE2NzMxNjYxMWZhNjllYzg5IGltcG9ydF91bmljb2RlCis4Mjg2NyAzYzliMzg0NGY5Nzg4MTEwY2U3MDJjNGRhNDA4ZGYzM2JlNTE2ZjFmIGltcG9ydF91bmljb2RlCis4Mjg2OCAwOTE2ZTg1ODVhY2IyZDllN2Q5MmEzODk0YjMwYzFjYjI5ZGMyNDU4IGltcG9ydF91bmljb2RlCis4Mjg2OSA3ZjBkYWJiN2ZkOGRkNjEyNmE1OTRkYzZlODZlYjBkZTI3YjE1NzUzIGltcG9ydF91bmljb2RlCis4Mjg3MCA1YjFiN2Y1NTc0YzAwMWJiOGE4MjdjZmRlMDQ0MDYwYjUyNjQ3MmY2IHJlbGVhc2UyNy1tYWludAorODI4NzEgODYzNTUyM2VmNWM2Mzk1NTBhNzZmYzQ0YjNmYWRiNTI1ZGJmNjJlZSBweTNrCis4Mjg3MiBkNGY2N2I4NjQ5Mjg4YTRiNTA4YWUyNWFmZmU0YWMwM2Y2OGIwZmQ1IHB5M2sKKzgyODczIGFkOTVlMjMxMjljNzZjYjI2ZDkwYjUzOThhMDA0NjBlNTYwMWY0NjYgcHkzaworODI4NzQgZDMwYjlkZmZiODZkNDEwNzUzZDNmZjg2YWYzNmNiMmU2ZDllMmJmYiBweTNrCis4Mjg3NSA3NzAyMzI5MmZjNjE0YmNhOTU0Y2I4MTdiZjBkOGZiNzBhYWU5NjQ5IHJlbGVhc2UyNy1tYWludAorODI4NzYgMThiZGM0M2NlNWVkMjhlNWRlMWYzNGFjMTJjMWNmZTZlZDg4NDJmYSByZWxlYXNlMjctbWFpbnQKKzgyODc3IDdkN2U2M2ViM2I1MzAxODQ1NGRjNDUzYmViYTBhZjg2MWNmNjcyMzUgcmVsZWFzZTI3LW1haW50Cis4Mjg3OCA3N2RmZTJhNzc1ZDE5OTkwYzNmM2I3Y2Q3YTM3N2UwZDQ2M2FlZWRkIHJlbGVhc2UyNi1tYWludAorODI4NzkgZWIwMDc1ZTYwNzI1YjlmMTMyM2NjYTNmOTM3MzdmYzdlNzE5MmNmMyBweTNrCis4Mjg4MCA0MTM2MGY4MDM5YWJmYjM0NjI2MmU4YTRlMDIyZGYyMWJjM2E4ZjUzIHJlbGVhc2UzMS1tYWludAorODI4ODEgZDc0ZGUwNTBjNDQ1ZGJlOWVjYTgzYTU5NjFjMmFlNTk0MmI0M2M1MSBweTNrCis4Mjg4MiA0YjQ1Njc4MGM4ZDhhZjQyOWFkOWZjMzIwYWUzZTU4YjcyMWZhZmFlIHJlbGVhc2UzMS1tYWludAorODI4ODMgNjE0MWNiMmUyNmUxNDcwMDM5YmMwYjQyMDM2MzIyZDIzYzU0NzI4NyByZWxlYXNlMjctbWFpbnQKKzgyODg0IDBmMjQzMTQwMTAyMTI3NzE5NjNlNTlmYTlhNmVhY2RmZTdiMzAzNmQgcmVsZWFzZTI2LW1haW50Cis4Mjg4NSBjMGUwNzU2ZTA5OTY2MzRlZWQ1ZGM5Y2NhYjAzNDM4MDVkYTJlOWQ0IHB5M2sKKzgyODg2IDM4MDVmZmU4ZmYzODMxNWViNmUyMjI1MDBlZGU0MTdmNmQzNjQ5OGEgcmVsZWFzZTMxLW1haW50Cis4Mjg4NyA2Yzc2M2Q2MzFkYmEwNTk0NzY3ZTJjZDcyZjVlZmNkMDc3ZTI4ZjcwIHB5M2sKKzgyODg4IDJiNjhhODQ0MTQ1ODcyZmZhZmU1MWMyODMzOTZjYTZjMWM5MTI4MDcgcmVsZWFzZTMxLW1haW50Cis4Mjg4OSBkNGY2MWIzNmNjZTZlNmU3MDAyN2E5ZWMyNWUwYjI3MWJkNjdjNWU2IHJlbGVhc2UyNy1tYWludAorODI4OTAgOWYxZDlhZWYzNzRjNzdkOTk5YWRkMmRmZjMyMGNkNzkzMzMxMDVlYiBweTNrCis4Mjg5MSAwZjgzY2ExMjA3NTI5MGJiMDVkMzY0Y2UyMDE1NTQzNzcwOGJhOGZmIHJlbGVhc2UzMS1tYWludAorODI4OTIgOTY3NTdjNjkwYjA1ZjJkZjRiY2U5ZWI2OWM3MWZjYTRkMDExYTJjMiByZWxlYXNlMjctbWFpbnQKKzgyODkzIGM3MDhjOTQ2ZmYzZTQzZTdkY2NmYTkwNzY4ZmY4MWI4ZWRkZGQzMDYgcmVsZWFzZTI2LW1haW50Cis4Mjg5NSBhMWY3ZGVhMzYyMTk2YjZiMWFiYzQ0NTBiYzdhNzQwZmQ0OGRkMDM4IHB5M2sKKzgyODk2IGEyOTczZTcwNTA1N2E3MWMwMDdjYzZjNTNkMmYwNjRiNmFlZDllNDkgcmVsZWFzZTMxLW1haW50Cis4Mjg5NyAwYjI5MWUyZmYwMGZjOTFhOTdlODBiNTA1MGU2NmE1YWJiOWRkZTQyIHJlbGVhc2UyNy1tYWludAorODI4OTggNjMzM2QzYTdlNWM3MzllOTU1NzE3OWQxMjUwNjNmZDlkOTY4MDMzMCByZWxlYXNlMjYtbWFpbnQKKzgyODk5IDQ2OTI3ODEwMjc5MDg3YTMzOGFjMTI1ZjQzNzQ1NTBlODA0MDY3OTMgcHkzaworODI5MDAgNGZlMjhhNDkxYTYzMDg5M2VhNWE2YzlkYmEyOGNiZTZhODg1MTc1NyByZWxlYXNlMzEtbWFpbnQKKzgyOTAxIGM3NDVkZjk0NjJlNjc3ZWQ4MTJlZTg2ZjYyYjgwMjIzNzBmN2U0YmQgaW1wb3J0X3VuaWNvZGUKKzgyOTAyIGFkMjYzY2MzODZhNTQyMjMyYmIyZWVkY2YzNjQ0YTExZWFhYTAxNDggaW1wb3J0X3VuaWNvZGUKKzgyOTAzIGZlY2ZmMDRkMGFiMTNiMGU4OWM2M2I4NzE2YWFjZDUyYmRkYjE0NTUgaW1wb3J0X3VuaWNvZGUKKzgyOTA0IDdjZGZhY2UxYWIwOTYyNmVkMWU0YWE2Y2I2YTU2NWY2YjkzZjA4OWUgaW1wb3J0X3VuaWNvZGUKKzgyOTA1IDczMGM4YjkwN2Q3ZGNjODc5MWVmNmUzNDAwYmI5YjZhMzc1YTgxMTAgaW1wb3J0X3VuaWNvZGUKKzgyOTA2IGZmOWRkYzE2MWVlM2QwNjk3YmExYzFlOThmYTYyOGU5MmZkYzhiZGYgaW1wb3J0X3VuaWNvZGUKKzgyOTA3IDdiNzFiNmRjNzQ0NGUwYTFjY2JjMDRlMzViNTFlNjUwMzgzZGI1MjcgaW1wb3J0X3VuaWNvZGUKKzgyOTA4IDg5Zjk3YTEyMTNjZDliMDQ3NTg0MTE3YzgyOGE4Y2ZjNGM4ZTdiOTMgaW1wb3J0X3VuaWNvZGUKKzgyOTEwIDIwMjZlYTQ0Mjg4OTljOTNhN2VlMzYyMDdhZDg5NGNhMGViMmIxNDQgcHkzaworODI5MTIgMGI3NTNhM2ZlNGIwZTE3OWU0NWY5NzhlMDJmMWZiNDZlYWJhMWIyOSByZWxlYXNlMzEtbWFpbnQKKzgyOTEzIDVmZmZhYzlhYzdkNmMyNjk1NmY3OWQ5MTNjYTM2MmYyZTVkZWNkZjAgaW1wb3J0X3VuaWNvZGUKKzgyOTE1IDFmMjdhMDVjNmMzMWQ0YTEzMTUyZDNjMzlmN2Y3NTljN2Q0NDYxYWEgcHkzaworODI5MTYgMjRmN2ZhMjU4MWU2ZjFkNGQyZTBmYTExZDM1YjJiNTRkOGFjMmU0MiByZWxlYXNlMzEtbWFpbnQKKzgyOTE3IGU3MDMxOTgzZTZmZGYzYzU0ODUzN2Q3YzhmOWMyMTVmNTBiZjUzMzMgcmVsZWFzZTI3LW1haW50Cis4MjkxOCBlMmVjNWZiYzZjZjEzN2NjNjRjYTBjM2E1OWI4MDBkZDk0NzAwYTkyIHB5M2sKKzgyOTE5IGEwYjk1Mzc3YWFhZDhkNmU5YmRiZTE0MGMzNGZiZGNhYmU5MzRjODcgcHkzaworODI5MjAgN2NiZjhjNGUyNzI3OTFmZDc4YjEzMjNjM2ExZGNmMDRjNTdkODA4OCByZWxlYXNlMzEtbWFpbnQKKzgyOTIxIDg0ZmY0MTc5NGQzZjJiNDhkYTI2ZTg4NjJlZWVmZGUxN2Y5MzNkZmEgcHkzaworODI5MjIgM2M3MzAxMGJkMGIwY2Y3ZjJkODI1YmE5YjJkMmVlNGNiYzM0NTQwZCBweTNrCis4MjkyMyA3YTAwY2E0Yjk1OTJiODVhNjVlZTIxMDVkMjM4M2UwODdkOWU0OTFhIHJlbGVhc2UzMS1tYWludAorODI5MjQgMDE3MTFmNjBmZmZjZmNkNDIxZmYxMTliNWU2ZTIyYWQ2M2I1NmVhYyByZWxlYXNlMjctbWFpbnQKKzgyOTI1IDRjNDVhMzJjM2NjOTk4ZWU1MjJkMjg0YzM3MTQxZDNjMmIxYjM4OTIgcmVsZWFzZTI2LW1haW50Cis4MjkyNiBlYWYwNGEzZjQ1MWEyZGJiMDFmZjQ2ZDFkOWMwZDlkMTdhYzY2ZjQ0IHB5M2stY2RlY2ltYWwKKzgyOTI3IGM3NDFhMWYyMjk3Njk4Yjk2NzhmZWMwZTBmMDVjMWViMzJiMDMzOGQgcHkzaworODI5MjggZmE4ZjM4ODM0Mjg3OGUyNjk4YjQ1YzU3ZmM0ZGRkZTdjMmI5MGJiZCByZWxlYXNlMzEtbWFpbnQKKzgyOTI5IGUwNWI2NDZkNmI5ODUwMWY4MTM3ZThjYWRhMzYzM2EwNzMzNGM5N2YgcmVsZWFzZTI3LW1haW50Cis4MjkzMCBiMjI4OTNiZTA4YzcxZTE3M2Y2NjgzODY2NTc5YWE2OTk1Y2RmMGU2IHJlbGVhc2UyNi1tYWludAorODI5MzEgY2Y0YjgzM2E0N2RlODVhZWM0NzU4MDA0NGZlNWQ2ZWJhNTJkNjdjMiBweTNrCis4MjkzMiBmMjgzMzA4ODFkYjQ0ZTgwNTIzYjc0MDhlM2ZjMWFlNDVlZWU3N2RkIHJlbGVhc2UzMS1tYWludAorODI5MzMgOTA1ZmE1NzE5NDAzMGVjNTZiMDJjMjliMzQxZTFhZTA1YTJkZjllYyByZWxlYXNlMjctbWFpbnQKKzgyOTM0IDJhNzliNzIzYWJkY2Y5NTJlMTIzOWIwZDk1NDIwOTE4NzAwMDM4MjcgcHkzaworODI5MzUgOGM0NDBjZjkwNzc2ZDJkNDczOGM3NjlhNWRmNWY1NTQ5ZmM5N2FlMCByZWxlYXNlMjctbWFpbnQKKzgyOTM2IDllNjE5ZjE2ZjY2YWE0MjRjNGY4MTY5OTQyNTIyNmI1NmEwZTBkNWIgcmVsZWFzZTMxLW1haW50Cis4MjkzNyAzYzc4YjNjZmQ0NjJjZjQ4YWJiZGI4YzRhYjBkZTZiOTRmZGYxYjhhIHB5M2sKKzgyOTM4IGFiZjY5ZDQwMjg4M2I3YjNkZTJjM2M5YTkyN2U4MzU2ZjI0YWRmYzUgcmVsZWFzZTMxLW1haW50Cis4MjkzOSBkMWQ4MTI0NmIyMjk5NmUzZjU2ODE3ZTZkNTA2NTE5YWJkODM1NjZlIHJlbGVhc2UyNy1tYWludAorODI5NDAgMWUyMWQ5NGUwNWY0NjI5MzQ2ZWQwZGVmMmIzNmU2ZGI4MzFlNmMwZiByZWxlYXNlMjctbWFpbnQKKzgyOTQxIDI2ODMzMzM3NTVmMzYyYjZiNTQ3YTAwNDIzYmM5NWZiOTFhNzQwMTEgcHkzaworODI5NDIgNjgwMzZmMmI1YWM4ZDlmNTM4OTMwYzUwMmNlZGFiMzA2ZTg2ZDNmMCByZWxlYXNlMzEtbWFpbnQKKzgyOTQzIGIxZGM2MGIzYzdhZWJjMjQ3MGIyY2I0Y2QzOTk4Zjc0NGU5NzNmMTQgcHkzaworODI5NDQgZGIyZGNjYTI0MDY5NDcyN2JiMDkxZjk0YTdiOTJmMDUzODFhZDNhOSByZWxlYXNlMzEtbWFpbnQKKzgyOTQ1IDE5MTkxNTU5ZWMwMmM1ZGZiMmZlOWQ3MjBjMTUzNGQ2ZDc2ZjkzNjYgcmVsZWFzZTI3LW1haW50Cis4Mjk0NiBjMTZiM2Y2YWM1MTFiNjI0NzNkNzliMjRjMzY0NTlmMGM3YmJkNGRmIHJlbGVhc2UyNi1tYWludAorODI5NDcgMjExZTMxOGQyM2VmYThmNmNkYTI5ZjJkMjUyNThiYzAxYzc1OWZiYyBweTNrCis4Mjk0OCBkYjNhZDZlYzBhNGIxNmQ5N2UyYzIxYjMxM2ZmZTRjOTE3OTI4NjI5IHJlbGVhc2UzMS1tYWludAorODI5NDkgOTc4NjgzZmRlODIwMzc0MTdkODE4NDQ1MjBmMmQ4N2IxZGEwZWJjNyBweTNrCis4Mjk1MSA2ZGMzZDIyMjgzZmY1NGZjNGI2MWYwZmE5ZDJkNGVlZWM1NTIyNTg5IHB5M2sKKzgyOTUyIDE2ZTg2MmE1YjZmMjZkZWQ5ODdjMDg3YTM4YmVlMzQ2YWIwOTNjMWIgcHkzaworODI5NTMgNGJmMDMzNzc1ODRkYjA3NjQ5YjhkZTM1ZTZlZDI2ZDUzYTU5ZWE5MCByZWxlYXNlMjctbWFpbnQKKzgyOTU0IDQxYWIxNjFkNDdhN2JmNDVkYzU4YjQ3OTYxNzY4MjBlMmRhYWI1NDEgcHkzaworODI5NTUgN2U0NTFjZTkwYzFhNjI0NGEzYjRlOWIwMThhNjkyMTFlMDkxZDY0MCByZWxlYXNlMzEtbWFpbnQKKzgyOTU2IDBkOTE4MTJmNjI2MDk2ODdmMGIyM2RhMzkyMmM1MWQ3NmJkZTRhMDMgcmVsZWFzZTMxLW1haW50Cis4Mjk1NyAzMWRmNmY4ZTlmMWQ0ZDA0OWQ5YjJiOTZhZThkYjg3NzQ3Yjk2YzQwIHB5M2sKKzgyOTU4IDY3ZjhmMDVjZDQwZGMwZTI2MWVjMmFiZWYwZDc4YjE0NWI2M2JjZjYgcHkzaworODI5NTkgY2NkM2U1NDU2MmZhN2EwZDY1M2NmZTcwOGExODA4OWVhMzI2MjcwMSBweTNrCis4Mjk2MCBhNGRhZTdlMmRmN2U2NjYzZjBkM2NmYmJhM2FjZWM4NTNmMGI5NTUyIHB5M2sKKzgyOTYxIDQ4MzUxMDZlY2UwYzUzMjRhMjBjNjIyNmY2MWQ5OWM4MDM0ZDlmZmUgcHkzaworODI5NjIgYTY1Yzk5Zjk0ODkwMDk1YjBjY2E0YTMwMjI2ZWU1YzM3MTU2MjQ5YyBweTNrCis4Mjk2MyBiYjdmYzA4ZjcyM2VjN2RiN2ZiMWRmOWVmNjM2OGNiNzg2YTQxOGViIHJlbGVhc2UzMS1tYWludAorODI5NjQgMmY5NTViZjkzMDM3YjZkNjhjYmI4NGIyZDRjMTM4NmRiODM0MjAwOSBweTNrCis4Mjk2NSAyNTIxNmE3ZTIzNGQ2YWEzODVjYjNhMjRmZDJhMTIzNjkwNGNhYTRlIHB5M2sKKzgyOTY2IGQzNTc4MmFjMjFmODYxZjk2OTk5NmRkN2RkODFlNmNiOTQxNDljMmIgcHkzaworODI5NjcgYjc5NDI5MTU0ODBmNzhiYTUzOTZhYTk0OTY0MTYxMjkwZTc3YzkwOCBweTNrCis4Mjk2OCBjOTAwMjFmZDFmYmZhZmZiZmJkYjRmMzNkMTRmNDc1ZGJlNmMzODk0IHJlbGVhc2UzMS1tYWludAorODI5NjkgYzk2YTcyMmJlMWRiYzFjNGUwZDBiYjQ0NmQwNzU1M2UzNGJiMmJkMiByZWxlYXNlMjctbWFpbnQKKzgyOTcwIGI5Yzk4OWEyZmFkMzEzNzdjYjI1OTA0OWUzN2JiNGI2YWU0YzhjZWQgcmVsZWFzZTI2LW1haW50Cis4Mjk3MSBhYTBiNTZkZDE0YWY3YjhiNWQ0M2FlMGY0ZGM0MDQ4M2Q2NDZlZGJiIHB5M2sKKzgyOTcyIGFkNjZlZmY5ODAwYmJjMmNmMjQ2NzI2YWFiZGQzY2Y2N2JmZmRiYmEgcmVsZWFzZTMxLW1haW50Cis4Mjk3MyAzNTQ1NDY4NDZjMjk3YWUzZTEzMjk4Yzk1MzM3OTRkMmJkNjk4NWQ5IHJlbGVhc2UyNy1tYWludAorODI5NzQgM2ZkZDliNDMwMjRjNjIxZjEyZmMyNjkyYjhjNWMwY2ViODZjYTI0YyByZWxlYXNlMjYtbWFpbnQKKzgyOTc1IDdmMzEzZWQ5ZTg4ZjMyNDM5YTBlNGQzYjE1YzllYTM4YTExNjFhZmIgcmVsZWFzZTI2LW1haW50Cis4Mjk3NyBhMTEyMTQwOWY5NmIyMGRlZmFhNGY0NzUxMmYxOTQ1MGJlZTI2YjQxIHJlbGVhc2UyNy1tYWludAorODI5NzggNzNkZGI4YjJiNTc0N2U4YzMyYjNhMTZkNDJlNWRmM2I2YmI2NTEwMSBweTNrCis4Mjk3OSA1Y2ZmMDU4ZDZjZWQ1YzE1OWIxYWZkZmEzODkyM2M2Mjc0NTViM2NlIHJlbGVhc2UzMS1tYWludAorODI5ODAgM2ZhNjA1Njg4ZDAzNWE1NDViNjAyMDEzYmIwYzBjMTZlNzU4MjExYiByZWxlYXNlMjctbWFpbnQKKzgyOTgxIGUxYmMyYzg5MzVkMjBhN2U4ZjcwMmQxOWU3OGYyMzBhYWIyYTE0ZTEgcmVsZWFzZTI3LW1haW50Cis4Mjk4MiAxYzY2ZjcyZjZiYzkzYjFkYjQzYzAzNTNlY2NhNDIwOGQzMDQ2NGYzIHJlbGVhc2UyNi1tYWludAorODI5ODMgZjI0MTU5MmVjZTRlYmU1ZGVhOTMwMDU3NzUwODllZjY5MjcyYjljNyBweTNrCis4Mjk4NCA3NDJmZGY3ZjY1NDAwNTYyNmZlNzdjNzFiZmNlNWIyOWVjYzQ2MzNkIHJlbGVhc2UyNi1tYWludAorODI5ODUgODcyYjM0Y2IyNjg4NTE0NDJlNDE5MzM4MDFmZTY2NDM5ZGM2YTQ1YyBweTNrCis4Mjk4NiBiMmYxMzg1YTIzNWUwZDg5ODZlMjk3NGRjMGFlNzM0OWRiMDAyYjAxIHB5M2stY2RlY2ltYWwKKzgyOTg3IDMzMzdhMjk1NWUxMTkyN2IzZGZhN2FlODhkNzRhOTU3YTkwMDBlMWYgcHkzay1jZGVjaW1hbAorODI5ODggMTY5MzQ3ZjlkNGM0ZjI1ZGIwN2M5ZmQ4NGZkMzc0OTcxZTZjMTQyMyBweTNrLWNkZWNpbWFsCis4Mjk5NSA5Yzc2NmNkMjExZGIwZWFhNjI3YTU4MWIxMDEzMjhkMDhkOGRhMDQxIHB5M2sKKzgyOTk3IGExNGE3ODY5MmM3YTE1ODBlYTc5OTU1NTM2MDJmNjBiYzJlN2RmNzQgcHkzaworODI5OTggYzBkOGZlMjVlMjY2ZWM4NjYxZjM0ZjZlOTc5ZDQ2NzRiMDA1MjRlNyBweTNrLWNkZWNpbWFsCis4Mjk5OSAxZTI2MWNjZTQxMTY0NWEzNmI1N2M4N2Y0ODQ4ZjVmZTJiZTI1ODc3IHJlbGVhc2UzMS1tYWludAorODMwMDAgNDVlZDBjZjJjMzg2YTZmYmM5N2U2MDZmNDIwNDM2YWMyOTE5YTBlMiByZWxlYXNlMjYtbWFpbnQKKzgzMDAxIGMxNjIwMjIwYTQzZDI4Zjc3MDA4MjMwOWY4NDVmNGUyNjc2NTI0ZjkgcmVsZWFzZTI3LW1haW50Cis4MzAwNSBjYmQ2ZjVkMjRhZjkwNjFlYTJhYmFhZWJlMmIxMTJjMDY0M2JlYTk2IHB5M2sKKzgzMDA2IDkwNTdlYTAxNDQ2MTdmMjg2NDEwZWVkMjg2MjZjNmU1ODM3MzU1ZWIgcHkzaworODMwMDcgNzVhZjRhMjdhMDcwOTcxYTAzZWI0ZGJjMzhiZTdhNmJiNDZiMWExZCByZWxlYXNlMjctbWFpbnQKKzgzMDA4IGQwYmEzYjhiMGQ0ODJiMTFlZmY5NmQ4OGRjNjgyMzVkN2RiNzY4ODkgcmVsZWFzZTI2LW1haW50Cis4MzAwOSBiZmRiNWYwOGMwZjgxZmI1MmM5ZWRlYzk1ZmJkMGExNTlhYmJiNDk0IHB5M2sKKzgzMDEwIDE1ZWRkNWZiYmNhZTFkM2JjMThkMDk2NzU5MTczZjU4NzdjZDI5NWEgcmVsZWFzZTMxLW1haW50Cis4MzAxMSBmZWU0OTk0NjIwZmJmOTg1MWFjMTNkODcwNmZjMWMxZTFjYmVmMTgwIHB5M2sKKzgzMDEyIGY0ZWIxYzZhMzRlZjQzMGFkMGViZWIyZjZiMWUxZTVjYjJkNmU2YjAgcmVsZWFzZTMxLW1haW50Cis4MzAxMyA3MDc5YzYwNzgxNGNhYWI0YzBiMTgzYTY1M2M3YmE1ODYxMGQ3YzUwIHJlbGVhc2UyNy1tYWludAorODMwMTYgNWI0Njg2ODc3NjhjZDUxOGFiODJjNjcxMDdmZTMwNjhiM2NhNmVhMyBweTNrCis4MzAxNyA3MDkyNWQzYzAyNzk0N2Y2OTkzNjk4MjIzYzg0YTE0MmIzODcxOTg3IHJlbGVhc2UzMS1tYWludAorODMwMTggMmYxYTgzNmYwZmFjMWEyM2YwZGI1MTlmN2M4ZDE5NTc4OGQ3MmQxNCByZWxlYXNlMjctbWFpbnQKKzgzMDI1IDIwZTU2ZWNjZGY1MjI2Mzg2YWU0MWNlYzMyZWRmMDQ2OGJhYjIyOTUgcHkzaworODMwMjYgNGI0MGJmOTFlYmViMzI2ZTU5Nzg0ODA3OGUwNTRhYjgwNzlmYTJhMCByZWxlYXNlMzEtbWFpbnQKKzgzMDI3IGJiNjhlNTM0NTRiNmQ2NGM2ZDM2MGIzMjMyMGZjODI1NTllNmZiYzIgcmVsZWFzZTI3LW1haW50Cis4MzAzMCAzNjc1MjlkYzM0ZDExZjEyNTM0ZjJiMzAzNWNiMjk2YWViNWZiNDNlIHB5M2sKKzgzMDMxIGU1Y2RiMTI3NjhjYjRhYjliYTk0MGM3MWNmMTQzOTMxZGQzMGQ5NmYgcmVsZWFzZTI3LW1haW50Cis4MzAzMiA3YjVkMTUyN2MwY2U4YTMwOTA2NTY4NWVlYWU5M2ZlYWM4MjBlYzA3IHJlbGVhc2UyNi1tYWludAorODMwMzMgNTIwYmY0ZDFjYjY2NTE2YjkxMDc0NmJhOGIxNjc3MDU2NzIwYjY2MCByZWxlYXNlMzEtbWFpbnQKKzgzMDM1IDQ1NDVmZjUwNjFiN2E3YTIyNDNiZmM2MWMzYTgzYTE2ZjBiYTE0N2QgcHkzaworODMwMzcgOWRiYmU2ZTdiNjY4YzE1ODQ2ZDdjOWZiMzVhNmUwNGIzNjZkYWM1NSByZWxlYXNlMzEtbWFpbnQKKzgzMDQ1IDFmNGVkNzFiNjhlMjI0NmU1ZGQ2MWVlNWFmMmI4ZWEzMzEzYmU2ZmMgcmVsZWFzZTI3LW1haW50Cis4MzA0NiAzMDU5MDJiM2MxYTAwOWZiY2RlMTc0N2E1M2FkZWZkNjE3NzVmZDUzIHB5M2sKKzgzMDUzIDI5YTNlZGE4OTk5NTNkYzJiMzE1NjhkMGVjNjcyNTk5NjE2MGUzNTEgcHkzaworODMwNTQgZWUwMWY1NDgxYzY4MGM5MGNjM2NkMTZkNjBmODg5ZDdiNzk2MmMxOCByZWxlYXNlMzEtbWFpbnQKKzgzMDU5IDNlNjA5YmY0NjJmZjMxMWNjMzA2ZDA4ZTQxNjU4ZTg5NWJhNjc0NjMgcHkzaworODMwNjIgMWM0NDFlMzlkYmU0NmQ4ODBmN2YxN2ZhMTYwODRlYjA2NzBmMDM2NSBwZXAtMDM4NAorODMwNjMgODg1MjBmYjQ1YmYyZWQ0YTNiNzlhNjNkNDdkYzAzZjAzYTY1NDczMSBwZXAtMDM4NAorODMwNjUgNTkxMjQ5ZDk4MzgzYWM2MzQxZGRiYzE3NjM5NDM5ZDg4N2Q2Y2ZiZSBweTNrCis4MzA2NiAxNmVkZDRmYmE2YTVjMmQ2YmUwNDBmMWE5NmVhMjJjNWM3OGM3YmUyIHB5M2sKKzgzMDY3IDJhZDhlOGNlNDZjNmI4ZjhlNjlmMzY5YTkwNjM0OTk0NGZkZDQ2NTUgcHkzaworODMwNjkgNWE2OThhMTUyZjMwMjM1ZDA0OTk0ODM1NGQ5MWFhMjU1ZDYwN2ViMSByZWxlYXNlMzEtbWFpbnQKKzgzMDcwIDcyMWU3MjhhYzA2MGYwYTQwYmQwMWY5ZWJjMmI2NDk2ZTdjOWI0YmUgcmVsZWFzZTI3LW1haW50Cis4MzA3MSA1MzVjYWIxYThjMDA0OTZlM2NmNTg3M2QxZjMxMzA0NWE3MTZlZDY2IHJlbGVhc2UyNy1tYWludAorODMwNzIgMzdkODQ4OTFjNjcxYTJkMTdiNDVhZGU0NTI2YWY5NDg2MTlhNmI3ZSBweTNrCis4MzA3MyA4ZWY5NTdjMzgxZmRhNzI3MDkxZWFkMGVmNDMxMjAxMmY1ZjFmOTZjIHB5M2sKKzgzMDc0IGZhYTVmMDE3ZmVhNWQ4OWY5M2I3NTk2MjdlNmE0MmM2NWFhZjdkYWYgcmVsZWFzZTMxLW1haW50Cis4MzA3NSBlNjBmZGIzNDhiZGM2MTEwYWIwZWQ3OGUzMDFjZTFkMGY4NjQ5ODQ3IHB5M2sKKzgzMDc2IGM0ODNmOTQ5Nzg3MmI2MzIxYTlkNWFiZWNhODJmZjM5NDUwZWUyOGYgcmVsZWFzZTMxLW1haW50Cis4MzA3NyBiZmZkMzk5Yjc2NGM2ZGQ2N2Q4MzUzOTM4MzAwZGE4MmFkZWIyNGRmIHJlbGVhc2UyNy1tYWludAorODMwNzggNzZlMDc5MjI1MDc5YzZmNTM5MGYzZGNkOTRhZmMyZTZmYjEwZGFhNiBweTNrCis4MzA3OSA5OTZlZTllMDM4MTY3MDc1ZTdlMTM1ZGEyOTUxOGFjOWU1YmY5MzdmIHJlbGVhc2UyNy1tYWludAorODMwODAgM2E5M2ZkMmViYjQwY2VjMmJmNmExYzU2YjlhZjVjY2JhYjc1ODdhYyBweTNrCis4MzA4MSBjMGNmN2Q3MDAxZTIzMjBjMmI4MjdiODY3NTA5MjVmYzRkNzk4ZjllIHJlbGVhc2UzMS1tYWludAorODMwODIgNWNlM2MwNjQ0OGE3OGVmNDZmMWVmZTI1YWEyNjkwMDc5NjFiMjc4MSByZWxlYXNlMjctbWFpbnQKKzgzMDgzIGJkYzA2OWExYTcyMWIyOGFkMjE4NDkyMzJiZDU0MjZkZGE4NzE1MDYgcmVsZWFzZTI2LW1haW50Cis4MzA4NCAxODNjNTYyNWUwMGJkZjY4ZDA0ODdmNjc2ZWI2Y2JhZDkyMDNiYTBkIHJlbGVhc2UzMS1tYWludAorODMwODUgMWNlODRjNjFmM2IxMzYwMDEzOWExMjE2YTNiZjBhOTY0NDlhMzk0MiByZWxlYXNlMjctbWFpbnQKKzgzMDg2IGUyNjdlZTk3NjBiZDE0YThiNDI3MGUxMmFmOTgyYzk0MWZhN2E2N2QgcmVsZWFzZTI2LW1haW50Cis4MzA4OCAxMDI3NGE3YmM1Mzc3NjFmZGJmODI2MzBlMWEzNjk0ODE4ODhhODY5IHB5M2sKKzgzMDg5IGU2MzgzYzgxZGE0MWNhMDU2YjVjZjYxN2QxOWVkYzliYjMzMjdlMWQgcHkzaworODMwOTAgZjUyM2IzOTg1MmU3NDYwY2Y3N2Q5NTBlNmZiNDg2ZTk3MjhkZGQ2ZCBweTNrCis4MzA5MSAwNDgzYjhlOGJjNTlmMTdjNzgxYjU0OTdiNzk5N2FmODFjM2NjNjFmIHB5M2sKKzgzMDkyIDI4NTVkNjM2MzE5MjlmZjU1NzRkYjNmMTRkOWEzYWU0OWY5ZGJmOTcgcHkzaworODMwOTMgZWM0MmI3MjgyNjRkYjZjZDRkNjgwZmYxNGEwZTcxMWQ4MmE4Y2M5YSByZWxlYXNlMzEtbWFpbnQKKzgzMDk0IDI3ODZkNjJjYzc5YzM4YTdhMDE4NDg3MTU4MmNlNTE0NDY2NzBlYTUgcHkzaworODMwOTUgNzY0ZWM5YmJmMDEzYTFmMDExMGE3M2UwMzNhN2MwZTk2MDQ4ZmE0YSBweTNrCis4MzA5NiA4NzIzYzFkZDFkMjVjMWE4NGJkOWYyZThjZDA2NjU5MTMwZTcyMzQ0IHB5M2sKKzgzMDk3IDFmOGZjYmI2Mzk2YmM2OWU2YzkyMDBiNTliZjI3MjZhZmQwYTI2YTAgcmVsZWFzZTMxLW1haW50Cis4MzA5OCA5N2I4NDFiM2IwYjQ3YmM2OTIyYzkxMGMxYzA2MzA3MTQ2ODM2OTQzIHJlbGVhc2UyNy1tYWludAorODMwOTkgMDYwZGUwNjBmMDNmZjBiNmQ5NmJlYTdhMjFkNWYyMTJlY2E4YzBhMiBweTNrCis4MzEwMCA2ODYxOWMzNzJlZjAxM2Y5ZGJlOGRhMzFkZTNhY2E0MWYxMzcyYWRjIHB5M2sKKzgzMTAxIDU4MGM3ODliNzg1ZDVkNzM5NjA5NzExYjEyZmEzNzU3YTgwMTdlMWEgcHkzaworODMxMDIgMzgzZTg0NjNmNTZjMDAwNGI1NWNhMWJiY2UxMTI2MTI5OTM0OTg2OSBweTNrCis4MzEwMyAwZjJiMGYzNzc2NDI0NmVjMTQyODIzYjY0NjJkMmYwOTg3NzZiZWNhIHB5M2sKKzgzMTA0IDIyN2RlZTI3ODYzOGE3Zjc4ZTIxNTJiYzJhNzA1YThmMDJjMzFiODAgcmVsZWFzZTMxLW1haW50Cis4MzEwNSAzMmZhY2JlZGZkMGViYzRlYTM2MjI4NWQ0NjJhYmYyY2RmMjM5NDlkIHJlbGVhc2UyNy1tYWludAorODMxMDYgNDgyNzE3OTYwMjU3YTA5MGQxMzBhYWMyOGE2YTc3NTE3NjMxYjIwZiBweTNrCis4MzEwNyBlNDM3OTUzNDI1ZDcwNTQzMjdmNzZlMjhmN2VhNDhhOGNjNTVjNzBiIHB5M2sKKzgzMTA4IGFmOTM0MTMyNGQzZDgyZTE4Mzg2YTgwZjBhZmNhNzc0NTBkM2I1OWMgcHkzaworODMxMDkgNzFmMWMwYmU4YWE3NzY1NDhlYzMzMzRmODRhYTYwMGNmM2MzM2RjOSBweTNrCis4MzExMCBkYjM3YWYwN2Q0YzI3MTIwODRhNmZhY2FlMzRlYjM0Y2RhYzc0YzFmIHJlbGVhc2UyNi1tYWludAorODMxMTEgZjk5NzAzOTFlZWFiMjhjMmE2ZjFjNGUxNGVhNzZiYzIwYzVhYTk5MCBweTNrCis4MzExMiBhZmRiNTMzMjMwNjU5YTQyN2EzNmIyZjY1YjM3YmNlM2IxZjhmMDA5IHB5M2sKKzgzMTEzIGU3NzM4ODQ1NzdhNTMzNGI3NzFhY2EyMGQ1NzE2NzA4N2U0NmVmN2QgcmVsZWFzZTMxLW1haW50Cis4MzExNCA4OTkzMWM4MzY4NTc0YThiNDY0MmUyN2ZjNjQ5NzBhOTE0YjU1Y2I2IHJlbGVhc2UyNy1tYWludAorODMxMTUgNGVkNjBjNGJjOGI2MDE2OWJiYjQzYTZlZjUyMDRkNzZlOWEzYmY1YiBweTNrCis4MzExNiA4ZmE0MjRhZWNkMGRiOGU2YWU3MTA3ZWU5YzY1YmVmZmNjNmMyZDVlIHB5M2sKKzgzMTE3IGRjMmE3YzM0NGJhYWZlYTEwYmEwZDkxMGJjZjExMTRmZTZhNjRmZmYgcmVsZWFzZTI3LW1haW50Cis4MzExOCA5MzU3ODBjNjJjNTk1NzcwMDlkYWQwMGE1YWZhMWU3OWY4YTZiNTFkIHJlbGVhc2UzMS1tYWludAorODMxMTkgZWQzMjhlNjcyYWNlMWEzZDhhNzg5OGJhMmM2MjUwYTdjOTYwOWIzNiByZWxlYXNlMjYtbWFpbnQKKzgzMTIwIDVhYTcyNjQxNGY4ZjA4ZDQ2NjA1YTVjNGNjYTA5ZjkzZTJjODdiOTUgcHkzaworODMxMjEgYjBhZjYzYWEwOWVhY2FiZTU2Njk5NGI3YzRjMzUwZGI0NGUzNzFhOSByZWxlYXNlMzEtbWFpbnQKKzgzMTIyIDgwNzJkZmQ5N2UxZGRmMzdmZDBjZGZhOTk5OTdkMzgxOGQwNzkwOGIgcmVsZWFzZTI3LW1haW50Cis4MzEyMyBjMzg2NmNkOTFhZTAwZTVkZGMyM2ZlY2E3MjgxM2ExOTAxNjUyYjE1IHJlbGVhc2UyNy1tYWludAorODMxMjQgZmY2NDQ5NjQzMTQyZTI0Y2QyZDBjNTBmMzVlNmE2MDFjMTc4Yzk0MSByZWxlYXNlMjctbWFpbnQKKzgzMTI1IDMzZTRhNDdhNmFkMTBkYjU1MzMwM2NjMmIzMzhkMTcxODQ5OGU4ODQgcHkzaworODMxMjYgZDg5NmYzZjk0YTRkZjIyODhmNTZlNjA3NTE1ZTAzM2RkMmE2OTFkNyByZWxlYXNlMjYtbWFpbnQKKzgzMTI3IDRjY2JjMjljN2YxMTMyOWE3MDk3N2RiYmQ1YWIxMzc2YjlhYzIzYjYgcHkzaworODMxMjggM2YyNDViZTU5MzM5YmZmYjFjOGQxNmMxYmM5YzRiODRmNDM2NjEwNiByZWxlYXNlMjYtbWFpbnQKKzgzMTMzIGFkNWYyNzkzZjdhZGYwOGY2NWU4ODA1MWUxYjUyYWYwOWU0Zjk0NzAgcHkzaworODMxMzQgZjgxMjYzNjdhMmRlZGRkYTI2YzM2M2U0N2ZlNTNiZWYwOWQyM2ZmYyByZWxlYXNlMzEtbWFpbnQKKzgzMTM1IDNlNjU5MjU4MWQwZjVhODIyNjQ1NjZiZjVmNWIwY2YxYmI4NzgwZTMgcmVsZWFzZTI3LW1haW50Cis4MzEzNiA1MzQzZWE3YzE5ODYzNDliOTdkNmVlN2RkNmVmMDYzODBlZGNiZDdkIHJlbGVhc2UyNi1tYWludAorODMxMzkgYTE2YjViYmRmMTliNDI4MmE0NTU0ZDM4ZDZkOGMwMzZhNDNjNTEwZCBweTNrCis4MzE0MCA5ZWNiYThhMTAxMjU1MWE2NGY5OTVlN2FlZmU1ODY4NTY0ZTBmNGRhIHB5M2sKKzgzMTQxIDJjNTZmNGFiMzZmMjZhNGIzYzg1MDQxY2M2ZjE2YTg1N2RlMmRlYTEgcHkzaworODMxNDIgMmRkMjk5ZTdhNmRiZDM3MTU5OTQwNmU5ZjRkYzQ5MDY3Y2MyZmU0NCByZWxlYXNlMjctbWFpbnQKKzgzMTQzIGVmOWIzOWRmNTkzNjgwNjJiNDc3NzFmZTNmYjAwOWQyNjMxYmZkYmYgcmVsZWFzZTMxLW1haW50Cis4MzE0NCBiMTlmOGE0OTI5ZDViM2I4YjU0OTZmZjgzODUxOWMyYWEyNDQyODZhIHJlbGVhc2UzMS1tYWludAorODMxNDUgZmRiMGNmZGNjZjg1ODI1ZjI4MGE4MzVlMzYzYzk2MDA4NDVmOGE0OSByZWxlYXNlMjctbWFpbnQKKzgzMTQ2IGQ4NmMxODU2OGU4OTc1NzRhNWExMmZlMGIyODBmNjFkNmVkYzUzMTIgcmVsZWFzZTMxLW1haW50Cis4MzE0NyBkMzNlYmIzZWYwYjEwN2Q4NzVhMjk3NjgzM2U0YTFhYmIyOGFjOGFmIHJlbGVhc2UyNi1tYWludAorODMxNDggOTA0YjNhMTYxNmYzN2MzODI1OWQ4Mzg4M2YzMDU3ZGNlYTAyYzk2MyByZWxlYXNlMzEtbWFpbnQKKzgzMTQ5IDllMzAzZDY3MTVjZTg5YWE2NmM1MzkwNzlkYWNiNzk4Mjk5YjIzODQgcHkzaworODMxNTAgOWVjYmRlZmM5ODQ5YWI5MDlhMDNiYzYyYmU5ZGU1ZWZiNGJiNjM5ZSBweTNrCis4MzE1MSA1MTNlNDk4YjIyM2MyYTZkMDcxYmUyOWE3OTNmMzZhZWUyMjEyZWMwIHB5M2sKKzgzMTUyIDEwY2UwNDE0MDA5Njg4NGMyNTFhMjQxMjBiYTUyYTNmZDJhNTRmZTYgcHkzaworODMxNTMgZmU4YTJjZTkxNGVhOGNkYWFjMjdhNThlOWVkYzk5YjAzZWFlMzZmYyByZWxlYXNlMjctbWFpbnQKKzgzMTU0IGZkYjcxZDZjMTgyMjRmODEwZTJjOGZiYzRjODdjZjNhZmI2MTFlNjMgcHkzaworODMxNTUgZWVjYzAxOGFhYzNlZGRkN2JmYzgwOTU3MmY0ZTU4OGVlZDdiZGY0ZSByZWxlYXNlMjctbWFpbnQKKzgzMTU2IDU1ZjQ1ZTkwNjc0ZDZjMDU1ZWFjZmZkOGI3NDRiODE2MmYyZmJhMWUgcHkzaworODMxNTcgZjZiOTI4MDhiOWIzNDM1NmU0MzIzYWRjODA1MGE1ZGQ4ZTZhYzc1OSBweTNrCis4MzE1OCA3NGIxNmY0MzllMDdiYTA0MWFlZWI0M2I4ZGEwMjAxNzUzMjAwNWRjIHJlbGVhc2UyNy1tYWludAorODMxNTkgNGQzZGUxNmQwMmNjMjg4ZWY4Y2JkOGY0ZGY5NGRkZTM5YmZhOWE4YSByZWxlYXNlMzEtbWFpbnQKKzgzMTYwIGMzYmUyMGMzOTBhMjcwOThiMDJiZTM4Y2IxOTM0MTRkNDlhOGUyNmYgcHkzaworODMxNjEgMmNlZDFjY2QzNWVhNDBlYzk4YTE1NTZlNGVlZjAyMTUxYTcxMTVkYyBweTNrCis4MzE2MiA2YTk5ZDkxYmUwZjhiY2I4OTgyYjE5ZGYxYjU1M2M4NjcyNTdiMzE2IHB5M2sKKzgzMTYzIDdhNDFlMGM0ODg1NTBjMzAzZmY2NTQwZTE4Yzg0MDAwYjhlMjc2MGYgcHkzaworODMxNjQgY2NiMjE5OWMxNmJhMGVlMjEzNGJkYWUwOWI3NjY0ZTNiN2MyYTRiMSByZWxlYXNlMjctbWFpbnQKKzgzMTY2IGY5YTAwN2FmZDQwZjM3MmY4ZGVhYWRlYjUyOGMyYzk1MmNmMzgzMWYgcHkzaworODMxNjggMzVjMTQ1NjIzNDgwMmUxMTgxZWM4NGE0NzM0MGY4YzViNWQyN2FjNiBweTNrCis4MzE2OSAzZTliOTJjZmNhY2M1MWY3YjQ0NGEyOTVlNDg0NjY1MGIyNTQ2MDJiIHB5M2sKKzgzMTcwIDA5NzA1NzcwMDllMDU3MTdkMGM1YzAzNmI3OGU4YzdiMDEzYzViZTcgcHkzaworODMxNzEgYWRlZmQ1YzAyMzVkZmIzNDE4Mjk4N2VhMmU5MmZiNGY2YzU1MTczYiBweTNrCis4MzE3MyBiYzAzNDc2Y2U5MDE5YjAzYTI1NzM0NWI1N2I0ZTZhZmYzNGYwNjdhIHB5M2sKKzgzMTc0IDBiODQwOTRiMTUxNThjZTY0M2FkNDM5MDZiZGQzNDNiYTk4ZTk0NjQgcmVsZWFzZTI3LW1haW50Cis4MzE3NSAzMzU1MzU2ZjFjNzRkNDQ4YmE1ZTUwMzYyNmFlMjk2Y2RkYjRhMjFjIHJlbGVhc2UyNy1tYWludAorODMxNzYgNTUyMjQzMzE1MGUxZDk4Y2IxNWUwYTlhZDk5NzcyMjMwNWM1ZjJmZiByZWxlYXNlMjctbWFpbnQKKzgzMTc3IGY5Yjg2MGVmMjRiYWQ5MjEyOTg2NTA0MWExODBjZjM2MWJjZTE2NjUgcHkzaworODMxNzggZTFjM2FkZmE1NzQ0ZGY3MzJkYmY1MTQ0NTJkYmNmYjliOTNlMmJmYSByZWxlYXNlMzEtbWFpbnQKKzgzMTc5IGRmZTAwOTVmY2FiMGY2ZjVjOGNjN2NkNzQ3MWE3MjVkMTk3N2E5NmYgcmVsZWFzZTI3LW1haW50Cis4MzE4MSAyZGY3MzM5NTFiYWI0N2MzNTc3MDE1MDEyZjcyMGMxZmMxNTVjNzcxIHB5M2sKKzgzMTgyIGYyMTRhZDA5YzM4NDJkMTA1NDQ2MDI2MTliZGJlODkzYjVhOGI3NzIgcHkzaworODMxODMgZTJkNjJiNWE4NzMwMTFlNmQ5ZTZmYTFmZjdmYjA5ZDIzYWE0ZTUwMCBweTNrCis4MzE4NCBlOTE4YWZkMzUwODY4ODQyZDk1ZGEwMjlkMGI4NzI0MzNlOWFiZDY3IHB5M2sKKzgzMTg1IGZkOWI0MjFjZGJhZjU1YzU0YzdhMTU0YzdkMGY5MThmOTdmNjk4MTEgcmVsZWFzZTMxLW1haW50Cis4MzE4NiA1YjViY2Y0YjlmYjAyMWE2ZTAxMjFkZTQ3YjM4NTVmZjA4NDQzNWRhIHB5M2sKKzgzMTg3IGMzZjU4MzNkYjg0MzFjZGVlM2E1YjEyNDM3ZTY5ZTRjOTdjNWJmYmEgcmVsZWFzZTI3LW1haW50Cis4MzE4OCA2ODVkMzkxOGYyYTVlMWJjOTQ0MTdiZmI1OTk3YmI1ZDI2ZjNiZjVkIHB5M2sKKzgzMTg5IGI1ZjNmNzQyMzMxODY3MTk0ZDAwOGJkMDRiNTFkM2NjMTllZDkyOTkgcmVsZWFzZTMxLW1haW50Cis4MzE5MCAxY2Q0NTRkYTQ5MjhiM2VjYTY1MjRmZjc1M2FhMTc0MjljNGQ4MmFlIHJlbGVhc2UyNy1tYWludAorODMxOTEgODAzMjUwZjVjNGMyNjhmNDQzYmUyN2FjZjM0NWE1MjIxZThhYzQ3ZSBweTNrCis4MzE5MiAxNmY1Y2ZiMTZjNmFjYzI5NmM0YWUyNDc1NTBlYTM1N2MzODE2YWU2IHJlbGVhc2UyNy1tYWludAorODMxOTMgNDNkYzEyOTg5MmFkZGJhMGFlMDE4YzcyYmQ3MWQ5ZjRlOGJiYWE5MyByZWxlYXNlMzEtbWFpbnQKKzgzMTk0IGU0YWIwZmJiYmM5NDYwZWNiMDcwZDViM2Y3NjlhNzdhYzNjMjlmMTcgcmVsZWFzZTI2LW1haW50Cis4MzE5NSA0YTdiMzk1ZWRiNjlkNzZkZGMxMjc4Y2YxODNkYjI5YzI5YTljZGRhIHB5M2sKKzgzMTk2IDVlZGNlMTRiNjI4NzczMjZmMDBhZmRmY2E0MzRiZDI0OTUxY2FhZmYgcHkzaworODMxOTcgYWM3ZWI2ZWFlZjY4ODc3Y2Y4MjBhZWZlYWY1ODM2ZTgxM2MyM2MxNiBweTNrCis4MzE5OCA3NGZkN2U4MGIxYmU0MjM2ODhhNWU2NjRlM2EzMDhiZDFkZWYwNDg4IHJlbGVhc2UyNy1tYWludAorODMxOTkgNWQ0NWM2NTEzNDhiZTNiOGYyZjU5YmY2MjE4YTZmNTYyYmM0YzQ4ZiByZWxlYXNlMjYtbWFpbnQKKzgzMjAwIDMxNWMyYjUyNGM1OWU5NTk2MTE0YzQ1ZDJmZjA3ZjY4YjY4OWEyZWUgcmVsZWFzZTI2LW1haW50Cis4MzIwMSAzMDY4MzNlZjExOWQxY2I1ZTljYWI1MTVhOTAxODk1OWRlY2Q2MGI4IHB5M2sKKzgzMjAyIGJiOWVlZjhkMWFjNmE0ZmM1OGQzZjVhZDk0ODVlZTJhNmUyMmRkZTggcHkzaworODMyMDQgOGU4Y2IxNjhhMDg5Zjc0NmFhMTcwMDA0ZDRiM2Y5NGRkYjY4ZmNmMCByZWxlYXNlMjctbWFpbnQKKzgzMjA1IGUwYmNiOTcwMzQ0MmRhZDg4NGU0M2Q5NzFlNWMzMzc4ODRlYjVhOTAgcmVsZWFzZTI3LW1haW50Cis4MzIwNiA2ZDMxYjYwMzcyYzQ4MzdjZmYxYzZkMjI2MTQxNjY4ZjJkOTI4NmRmIHJlbGVhc2UyNy1tYWludAorODMyMDcgMTc0M2RmZWViOWIwM2Q2YjdiNTk4NGEzYTA0OTdkMTE5NGU5ZTJhZCByZWxlYXNlMjctbWFpbnQKKzgzMjA4IGVhM2I1MzUxMzZlN2Y4NTMyOWU0Y2ZkZTUxMzg3NTQ4YmEwMTg0OTAgcmVsZWFzZTI3LW1haW50Cis4MzIwOSA5YmNiYzM0Mzc3OGYzY2RiYjkyODBkMmJkMGViOGEzMjRlM2MyZmU1IHB5M2sKKzgzMjEwIDMxMTljNGQ3Mjc2YjE1ZWRkNjE4OTlmOGQ4ZWFhMjEwMjIzYTMzODUgcmVsZWFzZTMxLW1haW50Cis4MzIxMSAwYmI0N2M1MWU5MzNmODY4ZWUzYjRhZjgwNjYzYWI5N2Q1NGY0MDczIHJlbGVhc2UyNy1tYWludAorODMyMTIgYWExOWE3Y2MxYmYzNTJiYmRlODYzZjlhZTFiYzZhYTQ2MDU3ODZiZCBweTNrCis4MzIxMyA3OWUzNzY4MjRiMzg4YTc2YjJkNzJkMzQ2MWI1MTE0OWE2NTNkOGFmIHB5M2sKKzgzMjE0IDAxMzJlNGVlOWU3ZjI0MWMwMzBjNTY1YmFhNGU2OWJhNTk5NjM0ZjIgcHkzaworODMyMTUgZDU1ZDIxYzM5NmM1Y2QyMTliYzIzMjQ1OWQ3ZTFmYzViMzA1MGZkNyBweTNrCis4MzIxNiBiZTZkMDE0ZGY5NTYwYTlkZTVkZTc0ZDllYjRhZDc2Y2E1MzhkZjdkIHB5M2sKKzgzMjE3IDUxNDY2ZDY3NzIyZTA2MTAxMWJkMTI2MmIxNGRhZGQxMjg1YjkzMDIgcHkzaworODMyMTggM2Q5OTY5NjY4OWY5YjJhZDkxYmViMmQwNDUyYmQ2NzFhZDZjZDBlMCBweTNrCis4MzIxOSBlMmUzMmE4Njk4MTBkZjhmN2MxYWYxNTZlOTBjZTgwZWQ2ZTI2ODU2IHB5M2sKKzgzMjIwIGU1YTJmNTBmZWU2NGUxMjMzYTcyOGRlNjU3YWRkY2ZhODg0MzdmM2EgcHkzaworODMyMjEgMDcxNjA5MDYwZjA1NWFmOTM2MWE1ZWEzNzIxN2FmM2Q2YmFlZGQ1MiByZWxlYXNlMjctbWFpbnQKKzgzMjIyIDUyYmMxOTQwNWMwZjMzMjNhM2Q1YjUyMDBiOTJlMGYwMzM0ZmMyMzcgcHkzaworODMyMjMgMDU0ZjMyNzllM2NjZTk1NjBiMzk1NjQ1MWUwMmFhNWIzMjg4MzM2OCBweTNrCis4MzIyNCBlZTM3YmNiOGYwM2U3MjJlZWY5ZjdlZTg5ODQ3ZDQ0YzQxNzUwYzFkIHB5M2sKKzgzMjI1IDA1NjQzNjA2NTI5MGY3MmI1ZGY3ZDMwYjcwZjNmN2UwZmNhMDJiYmYgcmVsZWFzZTMxLW1haW50Cis4MzIyNiBhMjc0NjhhZjVlYzJkYjViYTY0MzRkOWM3NWY0NmI1NTU3NGIwYjQ3IHB5M2sKKzgzMjI3IDA1NDBlNjdkNzkyNDFmNzkyNTlmY2RhMTNkODhlNGUyZjQ5OWUwM2QgcHkzaworODMyMjkgZjZkM2JmNGZhYTlhN2I1ODU3ZDgzZDNiMTVmMGVlZGUyMWE0MDcwZSBweTNrCis4MzIzMCBmMjBmZjk5YTI0Mjc1ZjJkZmQzMDI1YTFkMjM5NWUyMTllYmZmNWViIHB5M2sKKzgzMjMxIDgzNDcxNWZhZjE2NWE1MDBiZTk2MWU0YzIwM2FjNGRjZjk5ZjYxMTUgcHkzaworODMyMzIgYzU1ZmFmNDc0NTllMmViNzczZTc0Y2YzYjNiZmYwYzQ5OGY2MzQ5NiBweTNrCis4MzIzNCAxMjUwYjA2OGYzMTcwMWQ5YWFjYTJjN2YzZWNhOGE2ZTI2MzE2NjNiIHB5M2sKKzgzMjM1IDk0YjM5MDNkZTEwNzZiMmIzMjU2NzVmNTk5ZDUxODZlMmU0MzdiNDggcHkzaworODMyMzYgOTFjYmI1NWUyMGJlNTRmYTI1OWJkZGRiY2Y5NDRkN2NjZTY0ODQwYyBweTNrCis4MzIzNyAxNjE4OWI3ZGEzYjYyZjQ2ZjdlNmI2YTZmNTI4ZmZkYTNmNGUyMDAyIHB5M2sKKzgzMjM4IGY0MzViN2I5ODY5MDk3YzdkZDM2N2JmMDA2ZjBlMjIzZWQyYjRjYmMgcHkzaworODMyMzkgMjlhYjUzNmNmZWY2N2YyOWQ2OGExNWQxMTdkY2Y3ZTBkYzc0MWRmZSBweTNrCis4MzI0MCA5MDIxMzFiMzE5MjI3ZDgxOGE3ZTI4NGUxNzE0NTVlOTUxNjc0MDRjIHJlbGVhc2UzMS1tYWludAorODMyNDEgYjc1Y2EyNWExNDBiYWNjN2VmYmU0YjNjOWViMTA2YTM1MGQ3OWRlMiByZWxlYXNlMjctbWFpbnQKKzgzMjQyIDg5ZDc4YjY2N2QwN2JlNTQxMjA1NmIyYTA0NjYwYTRkYWQxOWM0NjYgcmVsZWFzZTI2LW1haW50Cis4MzI0MyA0YWUwZTEzZTk0NjYzZWI3MjNlZGVmZWY4MTVkZWE5MzlkYTE0NWFlIGltcG9ydF91bmljb2RlCis4MzI0NCA5NzA3Yzg1NTE0OGY2OGU0ZGRlMTI2YmMyMTU2MTM4MjI0OGEyYTU2IGltcG9ydF91bmljb2RlCis4MzI0NSA4YTc5Y2FhNGY0NzMyNzFkZWQ3YmQwMmNiN2RhMWQ3YWRjZDcwMDVkIGltcG9ydF91bmljb2RlCis4MzI0NiAyN2M2YTk0ODg5NDhmZGQ1Nzc3YzM2NmYyM2EwZGRmYWRmZjI5MmM0IGltcG9ydF91bmljb2RlCis4MzI0NyBhMTVlMTBkMWNkYzBkZmY3OGUwODc0NzU1NzNmN2Q0NzU5ZTc3ZmU3IGltcG9ydF91bmljb2RlCis4MzI0OCA5YTc0Yzc1ZGQ4MjUyNWZiMWE0M2ZmZTA1ZDBhYzNjNjQ0Y2M2M2E5IGltcG9ydF91bmljb2RlCis4MzI0OSBlZDA5MDExNmI3MzRmN2MzN2UyMDZiOWFjODU2ZGVhZjYyNjg3MTljIGltcG9ydF91bmljb2RlCis4MzI1MCA2MjE5OTU5MTA5MzkyZTBlNTk1MzEzZmYwMmUyMTBiM2QwMDE4ZTNmIGltcG9ydF91bmljb2RlCis4MzI1MSAwOTgzNTZmNWM4NDYxZDM0ZGJlMTdhOTQxYTJjNzE0YjAyZWJlZjU4IHJlbGVhc2UyNy1tYWludAorODMyNTIgMzI2YjE1ZDhjMzQxMzY1ODc1Mzk0YTk3ZWQ4Yzk2MTY4NTIwODBiNiBpbXBvcnRfdW5pY29kZQorODMyNTMgZGUzZmZmNDI3MmM4NGI4ZjQwMjRjYWM1ZjllNzMzOTlkNWQ5ZDEzOCBpbXBvcnRfdW5pY29kZQorODMyNTQgODA3YmVlZmFkNTFjNGJlNTY3ZDNhY2ZlYmQ0YzUzZWU3YzU4ZTlhNyBpbXBvcnRfdW5pY29kZQorODMyNTUgMDYzMzgxNTdiNGY3MDgzZTBiOGRkMzc0NzA1NjRkYjRmYjQxZTMzYyBpbXBvcnRfdW5pY29kZQorODMyNTYgMDRlNDkyNWU1YThjZDZjYTkxMGQzMWE4MjI4NDBkNTZlY2ZlZTY1YiBpbXBvcnRfdW5pY29kZQorODMyNTcgZGM1ZGEwMjEzNmU5ODk4MmMwMmM4ZTUwYjU2NmM1ZDM2Nzc2YThmMSBpbXBvcnRfdW5pY29kZQorODMyNTggYTRlMGI3YWY0YmE0NGIwMjA1N2VkODQxMDMwMDZkYWFhYzU3ZWZhMiBpbXBvcnRfdW5pY29kZQorODMyNTkgYTk2NmMzZDQzYTdlYWE2MTEyNDBlOWY4YzUxNmM4MTZiNTJmNDJkZiBweTNrCis4MzI2MCBjYjE4YmM4ZGQ0NjkzYTg0Y2ZmNGRhOWU3ZmM4YjgxMzM2ZmM3NWViIHB5M2sKKzgzMjYxIDBhMTc0OGUxM2RlOTZkYzU1N2M1ZWFkYzAxNzMyODQ0M2UxYzM1OTkgcHkzaworODMyNjIgMGY2YTFlNDc2ZDMxMGNhZWYwNDMwMjVhMzQ4ZTZlZjg4NzNlMmEzNyBweTNrCis4MzI2MyA0ODU1N2RiMGVlZWExOGY4OTI1MzcxZDVhNDU0NTIwNzQ2YjMxNTVmIHB5M2sKKzgzMjY0IDI0OTc1YWFkNDI2ODA5YThiMDRjMmM3N2VjZWM1MjIwZDRlNmFiZjkgcHkzaworODMyNjUgNzExMWI3OTdlYzExNWZjMzRhNGNmYmU5ZDVkZGY4MjQxNTBiOTRiZiBweTNrCis4MzI2NiBjNWJmZTE4NjBhNWQ4MGUwZGVkZjdmMjNjMzdiNzg3OTAyNzllNTk4IHB5M2sKKzgzMjY3IDI5NDEyM2FlZDQ2YjY1MTBkZTNlNjg5N2Y1MWM3ZWUzNGEzNmQxZmUgcmVsZWFzZTI3LW1haW50Cis4MzI2OCA5NzA0YjlkODEwZTViNzFlYjc1OTQ2OGNlOGE4OTYxY2U0NDMzOGZjIHB5M2sKKzgzMjY5IDg0MDYzM2QzNzJiY2RhZWFlYjJkODJhMGNlNDgwOTU0YWU5YTczMmMgcHkzaworODMyNzAgZWZkOTdhMDM5Mzc0OWE1ZjVlODg2YzVlN2RkNWJhNzM1ZTIyYzM4NiBweTNrCis4MzI3MSAwMzc2ZTY0MzVmNTdjMTJkNDVlMTY4MDUzYmI2MTEyZGZjMzE0OGJkIHB5M2sKKzgzMjcyIDFjNWY2MGYzODFiMjY0YWNkNmY3MTQ0ZjA3NzYzNjg3Y2Q1MzFiMDQgcHkzaworODMyNzQgYWQ5OGI1MjViNTg3YzY2YWQ2YWZiZTYyMjEyNmNiNDZkYWMyMDhlZCBweTNrCis4MzI3NSA0MGQ2YTdjMTU4MzZhMmYxNjc0MmEwZTRmNWI2NWU5YTJjMmU2ODc0IHB5M2sKKzgzMjc2IGExZTJhZjY1MzdkZmZmMjI0MWQwNDM0YzZhNjQ2NTNiYWRkZmUwN2UgcmVsZWFzZTI3LW1haW50Cis4MzI3NyA0MzgwZmIyMjZiMTEyNzA1YmY1ZWQ1M2QzMTZjZjcyOGFlMDc3NDA5IHB5M2sKKzgzMjc4IDU3OWIzMzlhYjE1ZjU2NmJiNWU0NGZmYmEwMGQ1MTg5OTNmNjlmOWUgcmVsZWFzZTMxLW1haW50Cis4MzI3OSAyOThjOTY5ZjU2NWI5NjViZjdjMWJiMWQ5YWIwNzM2Njg1YWNjNjY3IHJlbGVhc2UyNy1tYWludAorODMyODEgYTdjYzA4YjRiYTI2OWQ5YTc0YThhNDhiYTFjYjdkZGMyODMwMTk3MCBweTNrCis4MzI4MiBhYmJiNDlhZDFmYzMzMzA2OWUyNDI1NThlZTJhYmFkYjBkYzgyZDMxIHJlbGVhc2UyNy1tYWludAorODMyODMgMzgxMTgwYThmNDQ3MTJiYzEzNDQwNWQ2MWVkMjQxZGIwYmY3NjY5NyBweTNrCis4MzI4NCA5MzRiMDkwZGZlYzgwZWQ0YjdjZTRiNmIwYTcxNzRmOGZhZmNjMWE0IHB5M2sKKzgzMjg1IGZlNGJiN2NiMWZlODdiMmMxMDJmZmYxYjI3ZGZlY2I1MjAyN2EzNTAgcHkzaworODMyODYgMmM5YThlNjExMmIzOTkyMDExNjg1NDFiY2VlYTU1ZGE1ZTU3NmJhYiBweTNrCis4MzI4NyA0NmQyZWM3OGVmNzk1NzZjYTViOWM2MzU3NGM4MTNiNTU5MjkwODY0IHB5M2sKKzgzMjg4IGJjZjkzZTM3NjZlOGU0MDNiZTMwYTE4NzU3NTA3ZDk1YmY5OTk3MmIgcHkzaworODMyODkgNzhhM2RiMmY3ZTBmMTcxMGVlOTFiOTJiYmE2MmE1YzFjZmFiMDU2NSBweTNrCis4MzI5MCAyMGNjOTMxNzk2OTU4NmQ5ZmRiZDAxMDQ4NmZkNWFjNDY5M2ZhYjA1IGltcG9ydF91bmljb2RlCis4MzI5MSBjM2I2NzNiOTQ2MTIzZjkzNTMyYTAyYjk1NDAwN2MxODMzOWFkOTFhIHB5M2sKKzgzMjkyIGI4MDNjYzJkNmE1Y2JmNzdkMWE0YWM3YzA3ZDcwYmIyMjRmNDk2NTQgcHkzaworODMyOTMgNjcwZDRjYmYxNDY0NTIyYWI1NDA2ZWZjMTYxMDcwM2Q3MDA3YzllMiBweTNrCis4MzI5NCA3ODcxYWFmMTExYTI1ZDI5OTAxNjk0YzFiODViN2VkM2YyNjE3Y2NmIHB5M2sKKzgzMjk1IDEwMDJjM2RjOTBkMWE1YTdiMjkyMDc2NWQ0N2FmMjYyOGQxZTNlMmIgaW1wb3J0X3VuaWNvZGUKKzgzMjk2IDQ2NzAxOTU4OGZjYzdiMjM2ZGQzZWZmOTZkZDc5MjlkYjEyNjJhNzYgcHkzaworODMyOTcgMDhiOTQzYTFhOTM0NGQzYzgwYzA2MjQzNDAzMGI1ZjNlZGU4OWQzZCBpbXBvcnRfdW5pY29kZQorODMyOTggYzdkYzVjN2I3YWYxOTVmNzRjNjY2YTYwNjA0MDcyNDRhOWVhNWI3YyBpbXBvcnRfdW5pY29kZQorODMyOTkgM2U3NDg3M2YyMWVhNTlhM2JlMjM3NDkyZTI1NzFhYWNjMDM5NGJjZiBpbXBvcnRfdW5pY29kZQorODMzMDAgOGNmNmQyNjQ0OTc1N2YyNGU3OWRhNWJiNGRjZjAyNDliMGM2MmRmMCBpbXBvcnRfdW5pY29kZQorODMzMDEgNjVlZTBiYzk3NDc1ZjEzMmQ1ZjY3MWE2ZTQwOTQ1ZTA5YTQ3OTlhNiBpbXBvcnRfdW5pY29kZQorODMzMDIgZDZlYmVkY2Q2ZWM0ZThlNTQ4NWYwMWRhNjZiOGQ3NTA3ODAzMzdkZCBpbXBvcnRfdW5pY29kZQorODMzMDMgNTEwNWMxMmMzMWIyN2Q5YjI4NzkyMjg0OTJkNTQ1NjJmNDFlZmM3MyBpbXBvcnRfdW5pY29kZQorODMzMDQgODgyZmQ4NTVmMTAyYjQzOTJlZjEzZDlmNDBmNjg4MzE5NTA0ZTVhMCBpbXBvcnRfdW5pY29kZQorODMzMDUgODhhZGI2NGE3YWZkOWJlN2JlMmM2YzEyNzQ0ZTAxMjUwMjAxNzRjOSBpbXBvcnRfdW5pY29kZQorODMzMDYgMDA0OTYxODAxZDE4NjU2MjY2YWM1YzU3YmUyMzA3MzE0NjU5YjFjYiByZWxlYXNlMjctbWFpbnQKKzgzMzA3IDg0NWNlZjJlYjFkN2M3ZTczMWM2NTJiNTE5MWY5ZGQyODFkYTE3ZTcgcHkzaworODMzMDggN2M0YTc3NjA0MDI3NzMyZjYwMDQ3NmY4MzVmNGUyYWI2NzE1NDg0YyBweTNrCis4MzMxMiA2NjFlNGJmODVjNTg4NWQyZGMwMjBiNmEwOGFiNzRjN2YyNWIzMTFjIHJlbGVhc2UzMS1tYWludAorODMzMTMgYzJlYTA1MTYxYzkzMDk3YzQyMGY0ZDVkMDhiMjg0YTRiY2MyZDNkMSBweTNrCis4MzMxNCA1ODk0NTkwZTljOGQ1ZmFiYmJiNzBiMmEwNjY0OTI3YTMyNTRkOGM5IHJlbGVhc2UyNi1tYWludAorODMzMTUgYzNiMTM2MjY2NTM4OGFjOWUwMDhkOWRkMzI2Mjg3MGRkOTg1MmJkNiBweTNrCis4MzMxNiAzMmQ5NGYzMTZkYTk4NDdmZmUyNmI0Y2IyMjc0M2NjMjUzZjIzYzQ1IHB5M2sKKzgzMzE3IDdhYTk3NTc3NzIwMjNkYjE0NDY0M2NkZGQ0ODZmYmJiNDU1MDNlMTMgcHkzaworODMzMTggNmIyM2FhMzAwMDMyMWQ3OWNkMTk5YWQ2ZTdjMThhNzllNGI3MDM2YSBweTNrCis4MzMxOSBlMTdiMTYwMGY0NDA2YjZlZTE5ZjAyZWNkY2MwOGY0YWI4OGEyNzZkIHB5M2sKKzgzMzIwIDU1MGIzOGNhZjVjMWZjN2JmYWEwMDAxYmU2NzQ4ZDM5YTRkODkwNDAgcHkzaworODMzMjEgOGI0MjY5M2U5NWI4YzM3ODNiNTI5YWJiOThiM2M1ZjFjODc3ZDFkOSBweTNrCis4MzMyMiBmNTc0YTA3MTg4NmRkN2M0YWM0ZWI4NGQ2ZjJlM2ViNGFiZTk3ZDIwIHB5M2sKKzgzMzIzIDc5MDM1M2JlY2Y4Y2VjYjljNTUxMmI0ZTZhMTI3MGY4NzNjNjc1ODIgcHkzaworODMzMjQgNTdlYTAwNTE2ZWRlYTk1NjE5MzE0OTRhOWIyMDQyNDBmNWYyZjMxNyBweTNrCis4MzMyNSA2ZjhkZWZkMDE3ZDczNmU3MDUzMmExZTA1ZTViMWI5ZWEwYTU0ZDM5IHB5M2sKKzgzMzI2IDZlMTNlYWQzODk1NjA0ODgxMTJlNmNiMWFhM2RlMDVhMzgwMmNjZjAgcHkzaworODMzMjcgYTQ1YjM4ZGNkZjE2Y2EwMDY3ZGFmMjk2ODgyZmQyMmZhZDFjMmExNiBweTNrCis4MzMyOCA3NDU1MWMwYjUxM2I2Yzk4MzIwOGJiYmJhZWMzYTI5MTFhNmJhYmRkIHB5M2sKKzgzMzI5IGZiNmExMzgwN2FjOTVhZTMxYWI1NTk5MGU1ZTA1MTkzZWRlYzVkMmUgcHkzaworODMzMzAgZmM4MTVmM2IyNzgxMjc0YzhmOGY5YWYxNTRhOTE0Yjg5ZTg5OTYxNiByZWxlYXNlMzEtbWFpbnQKKzgzMzMyIDFiNTBlNjI3YzYzYWNlNWYwMjM4OGRhMDI5YjEwNDZkNzZjYTQ4NjAgaW1wb3J0X3VuaWNvZGUKKzgzMzMzIDE5ZmYzNjAzMjdlNzgzODIxYWJlYTFmOTY4YWRlMDEyYmE2M2VhZDUgaW1wb3J0X3VuaWNvZGUKKzgzMzM1IDA0M2NhYWM2Yzg3NTkzMTNhOGJmMzc0ZDI2ZmIyODQyMGY3Nzg2ZWIgcHkzaworODMzMzYgMjllNjBjZTYzYWU1YmUwNmUxZTdlM2E4NjBkODEzOWM5NGFhY2ExNiBweTNrCis4MzMzNyBlNDg2ZDE5ZjJiMGI4MWMzYjkwNjI5ZGU0NTQ5OTk4ZTQ3NTQzNTFhIHB5M2sKKzgzMzM4IDhhODAxYTNhY2EzNDk5YTFhYTBjMjQxMjg0MTlkOTMwYWRjOGU5YjIgcHkzaworODMzMzkgNDNkMTRiYmQ2ZWIxMTc4NDJiN2JmMWY2NzNiNzRjZGNkOWYyYzI5OSBweTNrCis4MzM0MCBkZWQ1OGU0NDlkYTMzMmU2ZjU2MWYzYWI0NmNlMGQyMWJhM2ZkYWM0IGltcG9ydF91bmljb2RlCis4MzM0MSAxMjVmNTRhNzBhYjhmYmU4ZmZmNTI4OWI3YTc1YTI1NjA3ZDE5MjM5IHB5M2sKKzgzMzQyIDU5NDdiMWJiMGZlY2RjMTdlNTEzZmM3ZDRlOGQzYzI3NjI5NTVkYjcgcHkzaworODMzNDMgYjM3Yjc4MzQ3NTc0OTJkMDA5Yjk5Y2YwY2E0ZDQyZDIxNTNkN2ZhYyBweTNrCis4MzM0NSBmY2U3OGEyMDhkYjI3MGIwM2NjODk1NTQ4NTk4MzE3NjJmZWY0OTYzIHB5M2sKKzgzMzQ4IDA5Y2E0NjQ5MDcwN2VmOWRlNDNlNWNkNTA5ZDNkZTk0ZDdmYmE5NGMgcHkzaworODMzNDkgYTZiNzE4ZTgxNDQ4MGNmYzZiMzFlM2FkMjNmMGI2ODRkZWExZWEzOCBweTNrCis4MzM1MCBjNTU4NzZhNmZhM2NjMDAwYTkzYWVmZWRkYjZlMzZmNWMwMjcwNDk4IHB5M2sKKzgzMzUxIGIxMmRkYTYyZTkzYmI5NGFjMGEzZTA4MGM0NGI0NjM4YjVlZDg5ZmMgcHkzaworODMzNTIgZTAxZDI2YTM0Njg5OWM4YWM1NzllNDkwOTlkN2FiMmJlOWJkNzFiZSBweTNrCis4MzM1MyA0ZGEzYzU3MDM0M2JiMTFlMDliNTE2YTNhYjEzNGZhODAwZjA3OGFjIHB5M2sKKzgzMzU0IDI1ZjZkNTcwZTdjMTYxMjYxM2Y3ZjIxODA2MzQ0YTQxM2IyMzFhMDkgcmVsZWFzZTI3LW1haW50Cis4MzM1NSBiZTYxYzgwOGI1Mjg5NmYyZTJhYmY4NWFjYjk3ZmRmMmE2Mjk1MDFkIHB5M2sKKzgzMzU2IGUyNTBlODg1MjRkNWIwOWIyZGNiZTIwMjFjMzM1NzkyZTdiNjNhMjEgcHkzaworODMzNTcgOGJkYmQzMmMyZWJiZGQ2YTAyYmJjZDFlMjM3ZmEwMjY3ZDMyZDJjZSBweTNrCis4MzM1OCBmOWNjMDlkYWNlZGFkZDRjNTJiOTFkYTI2MGYzMGU3MmZmYjNhMmY5IHB5M2sKKzgzMzU5IGFiODlkMGY1MmE3ZjMwYjdiNjA5ZTc0Zjk2MDc4NDk2N2ZhN2Q2ZTYgcHkzaworODMzNjAgOWViNGJhNDVhNmIyODZiNmM1NjEyYzUyZTU0YTEwMjA5NjQxNTYyMiBweTNrCis4MzM2MSBlMjM3YjE1YzJiZTk5NDI0MzYyYzVhOTQ1MTU3MzA3ODU5OGVkODk4IHB5M2sKKzgzMzYyIDZlYzY2ODYyMmQ2NGQ5Y2EzMDNmZTA1NWRhOTJjOGUzODIzOTFlZmMgcHkzaworODMzNjMgNmVlZWQzNTI2NjM0Mjc0NzgwNTJhNzE0ZTMzMTg3YTI3YTQ3YmQ0YSBpbXBvcnRfdW5pY29kZQorODMzNjQgYjI0ODQxYzMwOWJlNTQ2ODE1MTFjYTQ3MzBjNDk5NjY5NjFiOGM3YiBpbXBvcnRfdW5pY29kZQorODMzNjUgMThiMjczNGY3ZjM4Y2M1ZWViMjk2ZTA3MGQ0OTlhZTMwYjRlYTk5MSByZWxlYXNlMjctbWFpbnQKKzgzMzY2IDI2M2ZhZGEyNTY1ZGEyMzNjMjFkNjRkNWM4NWM3ZDQ3YTg4YmE2MGUgcHkzaworODMzNjcgMjY1NjVlYmQ1ZTMyZWU3ZDQxNjU1OTBhMjEwMmZlMmYzMTc0MzliOCBpbXBvcnRfdW5pY29kZQorODMzNjggNmY1YmE3MTMxNmU3MTYxYjc3ZmZmZWZjMzk3YmNlMzFhNzFhMjc1NiBweTNrCis4MzM2OSBhZjY5MmVlOTBmNjgzODA1NmU4ZmY5YzkyZWIxNDczOWIxYjhhMzUyIHB5M2sKKzgzMzcwIDI4ZjM3YTJiNDQ0YmYzNTRjN2FlNzRjNzI5ZjBlMDQxNzIxYWJkY2EgcHkzaworODMzNzEgZTJhOWY2MzNkNjEyNmZhZmZjNzQyMjlmNWM1MzEzZjA0ZGY3N2ZiNSBweTNrCis4MzM3MiAxY2U5ZDRmYjEzYzI2NTIwMjA5YmE3YWI3MzkzZjQ5Y2QzNjg2MzM3IHB5M2sKKzgzMzczIDY1YWY3YmU2MTRhNDgxOGM4ZjQ0YTMzYThiMzkyYzQ5NzJiMTI3N2IgcHkzaworODMzNzQgNWIyNGQxZTE4MjY5OWQxMWZhODM4NTMzOTcyNGQ2MzkzY2Y0NDE4NyBweTNrCis4MzM3NSAyMWQ4YzQyYzBiMTA3ODAwOTY4ZDBjY2FlNTk4ZWJhZjIxMzM4MzJkIHB5M2sKKzgzMzc2IDI4MTJiZmQ4NGI1MDAwYTVhYzU3ZmUyM2UzMzk5OTIwYThkNjNkZWIgcHkzaworODMzNzcgMzg3MDQzZDIwODBiNTNmZDgzYTE5NzkyMTYyM2M3ODY3YTVmZmQ0MyByZWxlYXNlMjYtbWFpbnQKKzgzMzc5IGYyOWMzMTlmZjU2NzlhM2Y2NDFlNDg4ZjE2OTE1ZDY5MTE5YzE5ZmEgcmVsZWFzZTI2LW1haW50Cis4MzM4MCA0NjAzYTVjNDY3NWE0MzIwMjU1NTA4ODc5MzliZjA2YmQ0ZDUxMzc4IHB5M2sKKzgzMzgxIGU4MDU3N2Q1NmE4ZmM0ODNkMDJiZGQ0MmVkOThjN2Y4ZmQ3MDI5OTUgcmVsZWFzZTI3LW1haW50Cis4MzM4MiBkY2IxNmQ3MDM2NTM4YTFkMzdlMDBhODJhMTcwMWI0NjE0NDhmY2E5IHJlbGVhc2UyNi1tYWludAorODMzODMgZWRkYTc1OTZjODMxMjc5NWZiMjk1YzEzMWY3NzJjZTA5NTEzM2ZjMyByZWxlYXNlMzEtbWFpbnQKKzgzMzg0IDc4YmNhZmYwZGQyYjAyYWNiYmI3YmMxOGE2ZmM1NzFjODg3NmQyNzAgcHkzaworODMzODUgZGFkMDg1YzhkZTA5OWIxYjY5NzUwMmQyMjllOTJhY2RiOGMwN2QyNyBweTNrCis4MzM4NiA2ZGU3MGQ0OWI5MTY1YWQ4NWY2NzFmYjU4MWE0MTY1OThhYWUyZDFiIHB5M2sKKzgzMzg3IDk3MGI3Y2Q1MjQ1M2I1ZWEzN2NkYjMxMmU4ZDc3MGJhNDc0ZmE1YmUgcHkzaworODMzODggNzM0NDQyN2U4N2RmY2IzNTllODQyMDFhNTI0MTNmNTUzZDUxYjE4YyBweTNrCis4MzM4OSA2YmYyOTJlOTA2YzJjMjNlYjEwNGEwZGY0MTQ4YWU5Yjk0ZTc5MzYzIHB5M2sKKzgzMzkwIDNjNGJkODYxMzM4M2U0ZDYxNTAzOThkYTM5OWIzMDg0NDczY2M1ZGUgcHkzaworODMzOTEgNTQxMGUxMTY3ZjdkM2M1MzU2NDg0Njg1ZjBiZGE0OWEyYzUzMDAyOSBweTNrCis4MzM5MiA2ZWYzMmQyMDhmY2M0ZjRlNzVjOWEyZjMxNzViYWNhMmY0OTA2ZTMyIHJlbGVhc2UyNy1tYWludAorODMzOTMgMzFmNGM0YjZjNDQ1MDMzMDZmM2E0M2YxNGM3YTJmY2E2Y2E0YWFhOCBweTNrCis4MzM5NCBhNGFkMTA5NzU3NzZjNThlOWY1ZTQ1NzFkNzFjNWIyOTc1ZTc0MWQzIHB5M2sKKzgzMzk1IDY2Y2IxNWM2MmRiNDJlNmQ3NTBhZTZlOWNhNmU3NWIyYTI5ZjFlZjggcHkzaworODMzOTYgZjJmNzk2MTlmNmE0OTQ3MDVhODIwNGUxN2VkZjQ5YjE1YWE2MjBhNSBweTNrCis4MzM5NyA1ZWUzZTI3MTJkN2RjZmJmN2EyMzhkZTI4M2RkM2FjMzg3ZmQyYWNhIHB5M2sKKzgzMzk4IGNiMjMxYjc5NjkzZTQ2ZGZlZmUyYWZiMDE3MmEzODNhOTU5NWQxNDggcHkzaworODMzOTkgNmQzNWQ2ZTU4NTYyMWZmM2U2ZjFkNjQzODRiMDg1NDBkZGFiM2E3NiBweTNrCis4MzQwMCA4OTdmZDUxMDUxYmI2ZjI2YWVhMGJjOWVlYTEwNWFjODhkZTNiYzAwIHB5M2sKKzgzNDAxIDM5OGZhN2I3NzUzYWUwYTY2ODY5ZTk2MjJhNmM4NjRjOThkNmYwODcgcmVsZWFzZTMxLW1haW50Cis4MzQwMiA1MWFhZDUwOWMyMGYxNTE1OTU1MWFkOGJkMzY2M2IwNzdhOThjODI4IHJlbGVhc2UyNy1tYWludAorODM0MDMgMWYwMjcxYzAzNmUxNjhmZTRhYjIwNDBjMDE5MjlhZjlmZTcxODY2OSBweTNrCis4MzQwNCBjYzJmODY0YmFjOWNlZTNiOGM4N2E5YjM0NDRiZTYxN2RmMzIyMmEzIHB5M2sKKzgzNDA1IDEzNWI5OTFkNjViNjBlNjg3NTFiMDVkNTM3YjY2ODBmNGZjYjk5MzQgcHkzaworODM0MDYgY2Y5ODlhMzRjNzdlMzAzOWJhMDU3NTViNTIwMWE4NTIzYTYzN2JlOCBweTNrCis4MzQwNyA4OGMzZGI2ZjQ3OWU0M2I5Yzg3OGQ1NWU2Y2Y2M2VkYmY5MDkxZjZhIHB5M2sKKzgzNDA4IDIyOTkzZDI3ZmM4ZGVlNGNiZTBhMmYzOTM1MTgxZTFiMjE2MThjOTUgcHkzaworODM0MDkgMGJlNTUwNDIxM2QzODBmMGZiYmNhYjk0NjFkMDNiZTE4Zjg1YjgyNyByZWxlYXNlMzEtbWFpbnQKKzgzNDEwIGUzMTY1ZWVhYTcwMGM1OGQxYTYwMjlmMGQxOTEwODcyOGRiODM4ZTMgcmVsZWFzZTI3LW1haW50Cis4MzQxMSA3NDU5OWQzOTU0ZTI4ZDRjOWY3NDYxOTNlMzU3OGRiNzY1ZjczYzgxIHB5M2sKKzgzNDEyIDBmZTU1YzI4NmVkZmQ0NzI2NGM5N2I4YjAwYzk3MDc2ZjkwYTA1ODMgcmVsZWFzZTI3LW1haW50Cis4MzQxMyA3NjYwNWNmYzRjZjM4M2JjOGViZmZmMzA2MWNjMDNmYWE2OWUxYmY4IHJlbGVhc2UzMS1tYWludAorODM0MTQgNjI1YzIxZGRlMTM4MGY4MWY1NGQ0YTJmMjZjMGZmYjgyNjFkOWU0NiByZWxlYXNlMjYtbWFpbnQKKzgzNDE1IGM4M2JhNTUxNTFiMWYzMGQyY2VkNTk4M2I3NGVkMDk0MDI2NTFhOTggcHkzaworODM0MTYgMzAyMDJjMDAxNDAxNTRkNTNkNDViM2M3NjY0MjI3ZDgzOTU4Y2IzNCByZWxlYXNlMzEtbWFpbnQKKzgzNDE3IGVmNzVlY2QwZTFhN2IzMmE5NTQwYzQyMmU2YzJmNjYzZGE1YzhlNTUgcHkzaworODM0MTggY2MzMzUwOGU4MGNkNzgxOTI5N2I5YTFkYWU3YTM0MTE1ZmZlYzJiMyByZWxlYXNlMjctbWFpbnQKKzgzNDE5IDcxZmM5MmI4OGIxOWI4MDFlODk4OWIzOGQxZWJlODZhNmEzNzA1MmQgcmVsZWFzZTI3LW1haW50Cis4MzQyMCAwMWNiZDkzMjAyNjQ0OGE3NTEwNWNmZTA1ZGEwOTY4NmU1YmYzNmRhIHJlbGVhc2UyNi1tYWludAorODM0MjEgODQzNjNjNzQ3YzIxMjBhYTQyYjQ4YTFiYTA0YjE3ZTA4OTJiZTJiNiByZWxlYXNlMjctbWFpbnQKKzgzNDIyIDllZTE5NmE3ZjlhMmEzMmJlNDRmODc2MTFlZDU3YTJkMmMwNjU4MjggcmVsZWFzZTMxLW1haW50Cis4MzQyMyBkYmM4ZGE4MTM2MzBlNjEwZjBmZTUwODg1NDZmZmVlMDIxNjlkYjIzIHJlbGVhc2UzMS1tYWludAorODM0MjQgOWRlMDdjNTVmZGRhMjc2OWVkYzU3OTg1ZmM5OTc3NjgyZjcxZTAyMyByZWxlYXNlMjctbWFpbnQKKzgzNDI1IGJjNjZlMTU2NmExOTI4NDcyYWJmMmFjZTE4ODhiMDIyZjkwMzI3MDkgcmVsZWFzZTMxLW1haW50Cis4MzQyNiBiZjVjNjMwZGFhZjc1MmQyNjg0MzNiZDgyM2EyNzNhOTA0ODE1MTRiIHJlbGVhc2UyNy1tYWludAorODM0MjcgOTNiM2FlNjNkMmYzMTM4ODQxN2ZiZjY0MDljNDFmNWQ5MWYxMzZkMSByZWxlYXNlMzEtbWFpbnQKKzgzNDI4IDEwYzFiNjE0MWQ1MzVjNWRlYmI2MGExM2VmZjVkMjA4ZmE5NTM3ODEgcmVsZWFzZTMxLW1haW50Cis4MzQyOSA5ZjJmYmVlNDIwZGFjMmExZGNkMzMyMGIxZjhmZDc4OTg5ZmZiOTY4IHJlbGVhc2UyNy1tYWludAorODM0MzAgMGRjYWU0NTVlYzA3NmRiZDM4ZjVlOWY3YjA0OWQ1Y2I1NmViZWQwYiByZWxlYXNlMzEtbWFpbnQKKzgzNDMxIGJhMzQyNzk2MjMwNjM3YThmN2U0MzJmOGNjZDE1YzU1ODAzYjg4M2UgcHkzaworODM0MzIgNjYxZTBiMGI0MGJmMWYzY2M4ZDA1YzhjYWJlNWZhMTM1NjA4ODA1NiByZWxlYXNlMjctbWFpbnQKKzgzNDMzIDIwYzcyNDRiY2E3ODAzNzY1ZTBlNjc1YTQ2YjgyNGIzMWUyNWI0YjUgcmVsZWFzZTMxLW1haW50Cis4MzQzNCBiNDkyMDE0ODRmN2ZlNWYzYTA0NWQ3M2Y3ZGViZjM5YTBmMmRhODc5IHJlbGVhc2UyNy1tYWludAorODM0MzUgOTE4MDI4NDBmMGY3ODNmMWRkNTU0NDVlNWRjYzM5OWQ0NWRjM2ZkOSByZWxlYXNlMzEtbWFpbnQKKzgzNDM2IDM0OTllZDZjYmQwNzdjZDU2YzQ2ZDI1NTM1NTE3MDMwZTJmYWM2MGMgcmVsZWFzZTI3LW1haW50Cis4MzQzNyA0OTAzZTc1Nzc0NTQ4NThhNTcxNGVjOTM5NGI2MWZjNDA4NTVmNTE0IHJlbGVhc2UzMS1tYWludAorODM0MzggNDZiMTRhMjk1MGQwMGViNzY1MzYzYWMwMWFjODlkMzkzNTc0NDkxOCByZWxlYXNlMzEtbWFpbnQKKzgzNDM5IDRmNjc5MTA0Y2I4NmJkZTY0M2MxOWI3MzBjOWEyZmM0ZDQ2YmU3ODkgcmVsZWFzZTI3LW1haW50Cis4MzQ0MCA0MDRhOWFjMWE5YTJiN2VlM2ZiNjVlNWRhMTA4YzFhNDNiNGQ2MzRiIHB5M2sKKzgzNDQxIDNjMGZmZTM5NTU3ZGVlNTVkYWQ0ZWY4ZWRkNzJkOTZlOGM5ZDBlMWIgcmVsZWFzZTMxLW1haW50Cis4MzQ0MiBhOGNmZWY4ODQwOGYzYzQ1NWNlNDM0YTc5YmIxM2VlOTkzY2I2ZDA0IHJlbGVhc2UyNy1tYWludAorODM0NDMgNzIwNzk4YTFlZTcxOTIyZmFhNzM0YWJhNWRjY2Q3N2Y3ZGMxNjcyMCByZWxlYXNlMjYtbWFpbnQKKzgzNDQ0IDc2NWJmZDhlYzk2ODk4Y2Q1M2Q5NDY3YWY2OTkyMTU2YWE1YTZiM2YgcHkzaworODM0NDUgNWFmMzYxYWRhYWU5ZmRkYmFjN2Y0MGIwOGFlMzhkMmU0Y2UzNGMzOCByZWxlYXNlMzEtbWFpbnQKKzgzNDQ2IDc1YjNlZGRhM2MyYmQ5NTM4ZGI2OTdmMzViYjgyZTE1M2I1ZmFiMGMgcmVsZWFzZTI3LW1haW50Cis4MzQ0NyAxNDZmZWYwMjQ5ZjlmZmMxMGRmODc5NzY2ODYwMTgzY2YxZWQ1YmU0IHJlbGVhc2UzMS1tYWludAorODM0NDggNDE1ZWEyYzNjZmU4YTljMGYwODMyMjEyYTJjZmUzZDU0ZWVjNWFlMCByZWxlYXNlMzEtbWFpbnQKKzgzNDQ5IDRhMDAyZGE3ZmJmYjNkOTY2MWI2OGIyMmU0Y2EwYjMzZmJmMGVhNGMgcmVsZWFzZTI3LW1haW50Cis4MzQ1MCAzZDc4MjNlNjg5N2I3NjEyMDA0NTM3YjI0NzZmNmIyYzc4MjNkNzllIHJlbGVhc2UyNy1tYWludAorODM0NTEgMmNhODQyZGNiZTExZTg0NGYwMWNhMmNjMTRlZWY3MTcyYWM1MmUwZiByZWxlYXNlMzEtbWFpbnQKKzgzNDUyIDQ3M2E4MDY4ZjZjNTRhNDI3MzU5M2ZkZjExYjA5YWZiYzM4NzdhNTEgcmVsZWFzZTI3LW1haW50Cis4MzQ1MyBiZWFiMmZiMjk2Y2NkYjY4MTA2NzA2MjBkMmQxY2Y2OGJkM2RkN2VmIHJlbGVhc2UzMS1tYWludAorODM0NTQgMDFkOWNhODJmZDRlNGVlMzAzZWZlYmRjOGI4YTM4MDNmZTNjZWM5YSByZWxlYXNlMzEtbWFpbnQKKzgzNDU1IGFhZDU3NjZiZjM2ZmM2Y2NkOThmMjdkZjkzNmY1MDM3YWE5Yjg4OWEgcmVsZWFzZTMxLW1haW50Cis4MzQ1NiBjNzA2Zjg2NzlkZmNlM2Y0YTU3Y2Y5MWU3YjE4ZjhmY2JlMjE3OGFmIHB5M2sKKzgzNDU3IDhjMTA0NWI5MmI2ZjE5ZDI3ZDdkOWI4MDdhNWNlN2EyYTBhZGE2OGEgcmVsZWFzZTI3LW1haW50Cis4MzQ1OCBmMDRmNDIxMzRhOTIxNzRmZDAzODYzZTcwNGNlNWRlZDE0NTgxM2NmIHJlbGVhc2UzMS1tYWludAorODM0NTkgMmJjMWZjMmQ4Y2MwOWQ3MzRkNWI4YTRiZTcyZGEwZDVmZDhmYzMxMiByZWxlYXNlMjctbWFpbnQKKzgzNDYwIDY5Zjg3ZjlkMzNlNzIyMGI2YmViMTY5NWZjODI1ZTA2NGI3Mjc2ZWIgcmVsZWFzZTMxLW1haW50Cis4MzQ2MSBiZjY4MjI1ZGQyYmNlNmQ1ZDk1NzFkM2I5YTM4MzhhZjY1MDZjMTZjIHJlbGVhc2UyNy1tYWludAorODM0NjIgOWVhNWRiNTY3YmRkOGJmZjkyODA3Njk5ZTQwZGFhYjNkMDRlMzUxNSByZWxlYXNlMjctbWFpbnQKKzgzNDYzIGM0MzJhZGFjMTE2YWQ3MTQ4ODJjM2IyNmZjZWIyNGIxNmQ0MGVhYTkgcmVsZWFzZTMxLW1haW50Cis4MzQ2NCA5M2QxMjRhODE5NWNjNDhhNWI5ZTJjYjM0OGVhYWUxMDlhZGUwOGZiIHJlbGVhc2UyNi1tYWludAorODM0NjUgOWYxZWVjYmNjMzY2MjBkZTE1ODMzM2U4NDU4ODc3YTViZDcxMGNjYiByZWxlYXNlMzEtbWFpbnQKKzgzNDY2IDE5OGIyY2QzYTZkMWI4N2I4YWMyYjkzMWExZTgxN2Y1ZWI0MDIwNmMgcmVsZWFzZTI3LW1haW50Cis4MzQ2NyAzOTVlY2FlNjAyY2IxMDFlNmRkODY1NWUwNGI2MzM1ZmZiOGU5MDQwIHJlbGVhc2UzMS1tYWludAorODM0NjggNWI3ZTM1YWExZjFkMTczYThmZDBlYzUzZGVlZDViMzEzNjdkYTg3MCByZWxlYXNlMzEtbWFpbnQKKzgzNDY5IGNiNTIyMjU3MmZjZDkzZWI1YjI2ZWQ1ZWI4NjE4YThhOTQ5ZDA5ZjkgcmVsZWFzZTI3LW1haW50Cis4MzQ3MCBjZDExZTFhMWZkODliYzE1NmU0M2MwNzdiMzIxYmQ4YzRhYjUxOTdkIHJlbGVhc2UzMS1tYWludAorODM0NzEgZjM1NDE0NjQyZGZmYTMzNWIyN2I3Njg0NTRmMGNiOGY5NTcyOGU1YSByZWxlYXNlMjctbWFpbnQKKzgzNDcyIDIyOGEwZWYyM2E3YjJlNTRhYTQyODdjYjY2MmRhYjA0Y2E5NDAzYjcgcmVsZWFzZTMxLW1haW50Cis4MzQ3MyA5MmY5NjhkODc0Yjg2ZTgxZGVlNmMxYjQ5MzUyMDlmOGUwNTMwNTRmIHJlbGVhc2UyNy1tYWludAorODM0NzQgZjQ2ZGNkOGEzMTEzNWE4MzBhNmRhOTI5ODc5ZGIxYTljM2YyM2JlNyByZWxlYXNlMzEtbWFpbnQKKzgzNDc1IDI3NTQ0ZmIwZjdmMTQ4NTkwNDk0NDcwYTNlYWI4ZGUxZjJjMzkwODIgcmVsZWFzZTI3LW1haW50Cis4MzQ3NiAxMzEyZTU5NGViZTc4NDhlNjc1MDdiMGJjMmM2NzQyZDUxZWU2NTNkIHJlbGVhc2UzMS1tYWludAorODM0NzcgOWJmN2EwZjQyZWFjMzlmNTM5NjI5MTY2OTk3NTQ5NjA5ZTY4MzI2MiByZWxlYXNlMjctbWFpbnQKKzgzNDc4IDZhZWE3MDkyOGE2YWM2ZDQ5NjZjOTZkNDRjNmFkNTMxMWRmMjM1MGMgcmVsZWFzZTMxLW1haW50Cis4MzQ3OSAxYWJkYmNmYWEwODlkMDgwYjEzNmViYWZkZDU2ODk0NDVhODlmZTdhIHB5M2sKKzgzNDgwIGYzNmEwNDA3OGJmZGJmZWIyNjRkNzkzMzIxNTZkMDM1ZWUwMzhlNDUgcmVsZWFzZTI3LW1haW50Cis4MzQ4MSBlYmQ0YjI4ZjQ2YTBmMjliYmY5ZGU1ODc4YzY4ZDI2MGIzYzFkNjg0IHJlbGVhc2UzMS1tYWludAorODM0ODIgMGRkNDgwMDM4YTg4NzJjODcyZDdlYTkxMTgxZGYzNTJiZjQ0NGQ0NCByZWxlYXNlMjctbWFpbnQKKzgzNDgzIGQxNWI0M2MyNzJmYmI2ZDY0N2RjYmQ4MTc2NWY5NDI4YWM1NDI2YmQgcmVsZWFzZTI3LW1haW50Cis4MzQ4NCA5NTAxY2Q2NDBjOGU4N2UyZWNmMTE3NjkyMjcwYmNkYTY4Yzk1ZDliIHJlbGVhc2UzMS1tYWludAorODM0ODUgOGY4YmE0YmZiZmE1MDY0NzY0YmMyZmM0NjJmZWY2NWIzMWQ0NTc4NSByZWxlYXNlMjYtbWFpbnQKKzgzNDg2IDc0MzQwNjc0OWIyZDcwNWNjMzkxZDE0MWU4OGRmZGY1MTg1YzEyNjEgcmVsZWFzZTI3LW1haW50Cis4MzQ4NyBlOGZjOWE5ZTE5OTFhMDc5OTc4NTE1NjQyY2QzNmJjNmE1MmE2ZDc0IHJlbGVhc2UyNi1tYWludAorODM0ODggZGU2ZGVmNzkzMjZjOTM2Njc2ZjFkZGFjNTExZThhZjhhYjNmMzExNSBweTNrCis4MzQ4OSAyYTRiMmZlYzgyNzdjN2I4ZjVmYjVjMzIyMDhlNjMwMmNjYzI5M2U2IHJlbGVhc2UyNi1tYWludAorODM0OTAgMmMyNTNmNmUwMmU3ZjkyNTQwOTVjOWJlMzdjZjgyOWU3ZTNjYTIxMSByZWxlYXNlMjYtbWFpbnQKKzgzNDkxIDM4ODEyOTQ4YzUzMjExMTc3Yzk5OTFkNzhjZTg4NjUxYmQ1ZmZkYWEgcmVsZWFzZTI2LW1haW50Cis4MzQ5MiA5N2NiMWRkODU2NmViMjM1Y2NlNjk3NTJlYzc4NTU2MTk1ZDY2YmZkIHJlbGVhc2UyNi1tYWludAorODM0OTMgNWZkMDllNDEwZDM2YmYzNjBlYTFlMjE1YjQyNDg3NTZhNjQ5MDFmZiByZWxlYXNlMjYtbWFpbnQKKzgzNDk0IGI3ZDVjYmJlYTE4MGNmZmRiNDA4YmM5M2QyMGFlOWQwZDE3NjY4ZmEgcHkzaworODM0OTUgNjFhZDgxYTc3NGM1NTA2M2ZiMTI5ZWNlOWRmMjg3NDdlMTkzODAwMyByZWxlYXNlMjYtbWFpbnQKKzgzNDk2IDljNzVhOTQxODdjNzNmNmE3ODk0NTg2MDAyNDA0MGFjMjdiNTczMmMgcmVsZWFzZTI2LW1haW50Cis4MzQ5NyAwZGI2NWM2NTEwZGFhNTY4ZjBlZTFiMzk2YTkwNzkwYzA1OWFjMDFiIHJlbGVhc2UyNi1tYWludAorODM0OTggMzE3NGQ1YmE0NmUzOGYxYjgwMWViYTBiNjMzMzUxMGMwNTE4NzgwMCByZWxlYXNlMjYtbWFpbnQKKzgzNDk5IGJjMTBhNDQyNzJkZmM3ZWY4ZmVhOWU3YjA2MjkyYTBmNmE3NWU0ZTAgcmVsZWFzZTI3LW1haW50Cis4MzUwMCBmZGJmY2Y5ZGEyYzcxMGNiZmJjYTg4ZWFlYjIxNGYzMzk3MzcwOTY3IHJlbGVhc2UyNi1tYWludAorODM1MDEgOGFkYTM1ZTlmNDVkMGYxMzdlYTUzYzI0MGRlMzdmMTllNDQwZDcxZiBweTNrCis4MzUwMiAyYzM2NzUwMTYxNDUxZGQ1MDJjMzEyNzlkMzQzYWQwZDAyMmMxMmIyIHJlbGVhc2UyNi1tYWludAorODM1MDMgZTQ4ZWY3MTMxY2ZiYzdmNDQwNDBkNjUyNjgyNTUzMTYxNzFlZmY2YiByZWxlYXNlMzEtbWFpbnQKKzgzNTA0IGM5NjYzMTMyMzkwZGNkYzY2YmU0MDllYWZjOTA2ZDZiYzZhNjQyYWEgcmVsZWFzZTI3LW1haW50Cis4MzUwNSAwYWFjN2I4NzcxZTE3ZmUzYTgyYjk3NTE0ZmJmODgzNTUwYTE4ZGEzIHJlbGVhc2UyNi1tYWludAorODM1MDYgOGExNDlhOWY5ZGFmNjU3MTY0NTAwNmViNGUzNDNjNjYwOGQ3NmMyMiBweTNrCis4MzUwNyAyZTk3YWViYWRlNGRkYmNmMzZlMzY0MTk3ODhjZmU4Y2VhOWQzOWE0IHJlbGVhc2UzMS1tYWludAorODM1MDggNjNiMjM0OWVmNzkwZDRmNDZiN2MwZTQ4ZmQ3NDJkNTRlMDQwMzYzYSByZWxlYXNlMjctbWFpbnQKKzgzNTA5IDcyYzhmYWI5MTE2ZWIwOGJiMWMyODNmNGE5NDJlMjUwZTkxY2Y5NGYgcmVsZWFzZTI3LW1haW50Cis4MzUxMCBkZTlmMzUzZWU4NjVkOWU1ODViMTYyZDYzYjE2NTIzYzYzMGExNzUzIHJlbGVhc2UyNi1tYWludAorODM1MTEgMzdkM2NkOGMxMGZiNDUxMTk3ZTU0ZTdiZGVmY2VkN2ZkMDVjY2EyNiByZWxlYXNlMjYtbWFpbnQKKzgzNTEyIDc1MWM2ZGQ3MWI1ZWQ1NWQ0OTVjZTQwNzUxNDFlMTA5MmYyMDA3ZDggcmVsZWFzZTI2LW1haW50Cis4MzUxMyBlYjZmOTkyNTQzMTM3MzhkZGM3OGVmMDI4ZWVhN2ViYTY2ZmEzMTI0IHB5M2sKKzgzNTE0IDE4NWUzZjcyNjZlOTBkNzQzYTM5NzFmNWE4ZDM3YWZkMGE3YzdhZjIgcmVsZWFzZTI2LW1haW50Cis4MzUxNSAzMDA4NmFhMzMxMjM1MTJhYzM0ZWY0Y2I5ZDhkMDBjZGM1N2I4MGIyIHJlbGVhc2UyNi1tYWludAorODM1MTYgZDhkYmYyNDAwZDhhMjFjOWU0ZWFhYjQ4NTk5YmE5ODg5N2U4MTVlNSBweTNrCis4MzUxNyA4YTJhODJiYjcxYzgyMjQ3ZTFkZjA4NzI3YjFiMWM2ZGNmYzgxYjA4IHJlbGVhc2UyNi1tYWludAorODM1MTggMmRjMGI3MTMxYzcyMTA4MGFkOTE2OWM2OTg0MDNmZjc4NDA2YzkyNiByZWxlYXNlMjYtbWFpbnQKKzgzNTE5IDA3Yzg0Yjk4MTQwMTQ4NjJkMDNkYTYwNDFhMDY4MDRlM2RlZDJjMjQgcmVsZWFzZTI2LW1haW50Cis4MzUyMCBmZDRiMDdhYjc5NzY5OTY0MDA2NTAxMGRjM2RlYjlmYTliMTdjMDFiIHJlbGVhc2UyNi1tYWludAorODM1MjEgMzllMTRkZjc2NWU0MzFiOWE3OGZhNDc1M2EzYzM3MmQxOTZhODMzZSBweTNrCis4MzUyMiA5MDRlZjRiYmZmNWU1NjRiZjQxNmQwNjUwYWY5N2U3ZThkNzBiMjU0IHJlbGVhc2UzMS1tYWludAorODM1MjMgYjYxNDRkYWE0MzM5YTE4YWIxMGU2ZTFmZjYyZDY0M2UyY2E5NGE0OCBweTNrCis4MzUyNCA2MWQzNDgxZWJhNzQxZDc1NzI3N2UyN2I1NzQyYmJhNzMyMDM0YjkxIHB5M2sKKzgzNTI1IDc3YmJiMDVkMzEwZTYzZGRlNmRkYzVhYzZhMzA2NjA5ZTNkYThhZTQgcHkzaworODM1MjYgOTI0NmFhZGZjZDc4OWMyM2YxMzM5YWQ1YTAxZjRhYWRhNjczZDUyYyBweTNrCis4MzUyNyBlYjc5MDQ5NWM2YTQ1MDJjOWEwZWIxNTY1Y2I2OTBkODI0NGU1MWNmIHB5M2sKKzgzNTI4IGEzNDlmYWQ1MDdhMjI0NTgxNWU1MmJkOTdmYmVkOWJiMGNmODIzZTEgcHkzaworODM1MjkgMTY0MGVmYTdmZjI5YzkyNGI4ODc4ZmNmYmQxOWM5NDhmYTEwNjdhNSBweTNrCis4MzUzMCBiMDhkMzUwNjIwODg1ZjAyZmFmMjQ5MjUwNzJmZDcwZTU4MzhlMzc5IHJlbGVhc2UzMS1tYWludAorODM1MzEgODVjZGFmNWYzY2RjM2UxNGMwODFlOWYyNzk4NzQ4NmU4NWQ4YTc0ZSBweTNrCis4MzUzMiBhMzE0OWM5MzE2NTY1NmU4Zjk1MDA1MzU5OTA4ZmUyY2IzNThmNjRiIHJlbGVhc2UyNi1tYWludAorODM1MzMgNmJhZWJhNTRmZDI0YmQ3MWJhZTAwNTU5MGExZmFiYTAxYmNkMGM0YiByZWxlYXNlMjctbWFpbnQKKzgzNTM0IDMwNjhlMDBhMzIwNzY4YTVjMDI0M2ZjMzRmNWM2Mzg5Y2VkZGY3OTAgcmVsZWFzZTMxLW1haW50Cis4MzUzNSAzYmUyNDY0YzBjMzk0NmRjMjI4NTdkMmNlMzlhZWJiODU4OGE3NWQ0IHJlbGVhc2UyNi1tYWludAorODM1MzYgZDdmMzA4NWQxYjAzZTQyZmQ3NmE4MzVkMDY5ZDFlNTM5NmU5OTY4ZSBweTNrCis4MzUzNyA3YzNiODQ5ZDE4MWFlMmQ5ODExNTYyNDljYjVmNWZlYzYwMDA5MDlkIHJlbGVhc2UyNi1tYWludAorODM1MzggNTE2ZjllMzRhZjIwOTZkYTA5ZjYzOTM1ZGU5NjgwNGNjN2NkMjIxMiBweTNrCis4MzUzOSBjYTYzMmJhZDZkNjBjYjQ2YTViYzEzMjhjY2I3OWNhMGY2MDYzY2FhIHJlbGVhc2UyNi1tYWludAorODM1NDAgZGJhOTk4MjhkOTFjM2U4ZWUxOTc3ZDExYzgyOGJkZjIxMzQ1YzdhMyByZWxlYXNlMjYtbWFpbnQKKzgzNTQxIDY1MzYxNTBkZDRmNDI4NjVkMjg0NDc3MWZhZDJjZDJmMjljNmMyMDUgcmVsZWFzZTI2LW1haW50Cis4MzU0MiA1OGMyMmQzMGY3NDkzNjQ3N2JhMGJkNmQ5Yzg3NGQ3N2QzOTczMzFmIHB5M2sKKzgzNTQzIDY3MjQ5M2ZmZDc1M2Y5OWNlZmE5NjU3NTk3MWRhYjY5NDFiN2Y0OGMgcHkzaworODM1NDQgY2VjYzZkMmE1YjQ5Y2JjYzQ0ZDk3YTA1ZDc3YWFiN2I0ZWYzMWU2NiByZWxlYXNlMzEtbWFpbnQKKzgzNTQ1IGI2YzVmY2NjYjZkZTVkNTdkZjlkNTI4MmU1N2EyYTVjNjIzYTk1NjAgcmVsZWFzZTI3LW1haW50Cis4MzU0NiA3MjAyYzlhMjA1NjY2MjlkYWQ2ZDE2Nzk0MzM0OGFmOWY5ZTliODAwIHB5M2sKKzgzNTQ3IDBiZjM2Y2RkODMzNDU0MjUxMGM1ZWRjZmNhYzYzOTM0MmZlZDZiOGUgcHkzaworODM1NDggNmUzYzIwOTNiYjIxMDg0YzAxZGNhNDJkZmJmNThjMjM1ZDU4MWU3YyBweTNrCis4MzU0OSBmOGNlNjRhOTZjODk2MDJhNWYwYjk1ZTkwOWFiOGEyYWRlNGJhM2MzIHJlbGVhc2UyNi1tYWludAorODM1NTAgYTI0YzlhNzQwMWY0NTM1MTdlMzU2YWMwMTBlZDcyNTEyODAxMGJiMSBweTNrCis4MzU1MSA2OTlmY2RhZjk5ODEyY2E5MWFjOTI0Yjc1ZGE1NjNhYTc1ZTRmNDU5IHB5M2sKKzgzNTUyIDMwN2UxY2VlNGE1ODEwZjQwZWI0YTM3MWE5OWMyODJmZTI1YmUwZTggcHkzaworODM1NTMgN2Y2OGY4NTU0M2Q0ZjkxYTdlMjI0YTRiNjcxZjE3ZmI3YjJjYzRhOSBweTNrCis4MzU1NCA3ZjA3MTA4N2Q4MjBkOTkyZGIxNmE3YjE1MDA3ZTBhY2NlZDQzYTAwIHB5M2sKKzgzNTU1IDYyZDhjZmNjZDE4YjQ0ZjU2ZTk2Yzk3NjMyYWJjZDI3Yjc1OThhYjMgcHkzaworODM1NTcgNTExMDJhYmRlYzUwMjEyZjA1Njc3MTM0MmNiMWE1NTdjYzFlNGEyYyByZWxlYXNlMjYtbWFpbnQKKzgzNTU4IGI0ZjYxNDcxNzhlNWMyZjc5MjcyYjQyMjRlODhjZTE5ZjA3MDBkOTUgcHkzaworODM1NTkgYWZmOGQ3YmNhM2YzMzNmYTk5NjU0NmU5ZWM1MTlmNjVmNWNiYzBmZSByZWxlYXNlMjYtbWFpbnQKKzgzNTYwIDQ4NzRlZmQxZjY1N2EzNmY3NzBkNGFiOTBkY2IzNGFhZjY2NDEwYWYgcHkzaworODM1NjEgN2ViZjVmOTAxMWIxOTBkMmU4Mzk0NGE2ZWQ5NTU3OTNjYzgwZmFmMyBweTNrCis4MzU2MiBiNGI4OWQxYjQyY2Q0NDViYTViMTQ2YWYwODNiOTY3ZGJjODYyMDIxIHJlbGVhc2UyNi1tYWludAorODM1NjMgYmIyZGNmMTIwM2M0YzQ3MGY0MWE0OGQyYzc1YjEyYjNkMzlmMDgzMSBweTNrCis4MzU2NCBhYzI5ZjcwYzYxZGJhMzQ0NmM3NWJkZTJiMjA3ZTg5NjQ3NWUwNTUwIHJlbGVhc2UyNi1tYWludAorODM1NjUgNDJlMTljMTRiMTQ5MmE1YzlhNjMzMzNjNWE4OTE2YWNlZDRiNjE2NSBweTNrCis4MzU2NiA0N2JhOTA1YTdlODdkYzYxYjc4ODg1NDkyYWJkNzhjZjQwNjkxNDRlIHB5M2sKKzgzNTY3IGQwYmI4MGU4MWIzOWE2M2M0NjNkM2M2NzRlMGNjMjYyMDAzMTdiZTEgcmVsZWFzZTI3LW1haW50Cis4MzU2OCAzN2JhNDcyMzIwMjdhNjAyOTk0YWYxMWJhNTVmMGUzNDFiZGNjYTk5IHJlbGVhc2UyNy1tYWludAorODM1NjkgZmY2ZmFiZjI1Y2VmNDk1N2M5M2U3OWE0MmZlMGJjYTZjZWJmYmQ5NCBweTNrCis4MzU3MCBkZjM3OGU0NGJhOWFkM2VmODRlMDI1ZDJlOTA4ZGI1MjE5YWUyNWY2IHJlbGVhc2UyNi1tYWludAorODM1NzEgMjM2MzkzYzU1NGY3MTQ5MGRlY2M2ZjJjYWZmYzMxMzk3ZjU2MGJlZCBweTNrCis4MzU3MiA3OTU4OGQ0ODY3YmNiMjQ3NWQ2MjY4MWE3MjRlMjk1MTM2OTA5MDRhIHJlbGVhc2UyNi1tYWludAorODM1NzMgZGM5NDEzNDE4NmM4NzUzYzZjMGU1MzZjMzkyNjdmZTVmYWEzMWNmOSByZWxlYXNlMjYtbWFpbnQKKzgzNTc0IDg4MTZmNGU5ZjcxMmNmM2I3ZjE5YWJkMTRjOTZjYjNhMWVjZGEyNGQgcHkzaworODM1NzUgNzBhNmE3MjdlY2Q3MzI5MzUzODVhNWJiOWRmZDg5YTIzOTIwN2I4NSBweTNrCis4MzU3NiA2NDk0NzZjNjYzZmNmNjEwZTU2ZGNkNDUyMjJkYWFhYjA5ZjU1YTM5IHJlbGVhc2UyNi1tYWludAorODM1NzcgY2MzMzY2OTJiYWI5MDU0NzViOWM3NWU1ZTNiMmYyYTE1MDU5MWM5YyByZWxlYXNlMjYtbWFpbnQKKzgzNTc4IDk1OTQwMGFlMDViMDQ2YzYwZWQ4OTNhZmNmYTFlNjBjM2FjZGIyY2IgcmVsZWFzZTI2LW1haW50Cis4MzU3OSAzMTljOWY5ZGM0NTYxOTQ2ZGNkNWJiNDhhMWQzMzkwNDhmYWExOTk5IHJlbGVhc2UyNi1tYWludAorODM1ODAgM2QwMTFjMmVjMjM3Y2Q5MzU1OGVhYmVmN2MwYWY5MjdiNmUzMTYzMyBweTNrCis4MzU4MSAzYWY2Y2FlNWUwMjZiYmE3M2NkNjQ1NmZiYTEyZTZhMDdiMmZlMmE5IHJlbGVhc2UyNi1tYWludAorODM1ODIgZDZhYzNkMDliNzlkNGE3N2VkNzU3MzNmNmI3YjBkMmZiMzdmNDQ3ZCByZWxlYXNlMjYtbWFpbnQKKzgzNTgzIGI4NWNmODViN2VkYmM1NGU1MTU1OTI4NjljNTNiN2NlMWZmODM5NjAgcmVsZWFzZTI2LW1haW50Cis4MzU4NCBjZWE2ZWQ3YTBhYTExYTBmODQ5Nzg5NzQxMWM0YmVjZWMzZmU4OTA2IHB5M2sKKzgzNTg1IDRkZmI4YTYxZTY5ZmQwMzhmMzgyZTgwY2M0MDFkN2Y3MDgyYWNiZDYgcmVsZWFzZTI2LW1haW50Cis4MzU4NiA3NmUxYzVmMzE5MzFmMGZlMDc5YjZlNDUzMDlkMGFiZWE4YWJiNzg5IHJlbGVhc2UyNi1tYWludAorODM1ODcgZTk3MWMxMDRhNWMyMWUzZDM3NDgwZmI4NGRjMjU3ODEzZGYwZWIzYiByZWxlYXNlMjctbWFpbnQKKzgzNTg4IGZkMjQ5NzUwY2JhZTVhNGU2MDA0ODU4Yjk5OGExODE0ZmNhOTlkNTIgcmVsZWFzZTI2LW1haW50Cis4MzU4OSA2ZjgxZDZmOWE2ZDFjNGE3ZGNkZDM1ODI1NWNmNjRjZjQ4YzkzYmJmIHJlbGVhc2UyNy1tYWludAorODM1OTAgNjczMGNmOWQ2MjdhNWRhZTgxYjQ5NzVhYWUyMTNjYTNjYTE4ODFlZSByZWxlYXNlMjctbWFpbnQKKzgzNTkxIDc0NDlkMDQyMTNjNmU0MWU3YTc0NDM2OTkzYTAzNzIzNjA0MTI5YzAgcmVsZWFzZTI3LW1haW50Cis4MzU5MiAyMTYyMGQ5YjA4NDgwY2UzYWRjMzY2ZGFlNjgyYjc5YWNiNzhkODY3IHJlbGVhc2UyNi1tYWludAorODM1OTMgNTk1Njc2ZTQ2NmMwZDQzMGMwZWEyMTBlN2ZkZGQwN2M4ZmZiYmVlMCByZWxlYXNlMjctbWFpbnQKKzgzNTk0IGE5Y2QyNTUwZmY0MGFjZWIwZDc2NGYyZDAyNDA5YTY1ZGI1OGNjZWQgcmVsZWFzZTI2LW1haW50Cis4MzU5NSAxM2QyYmFjYzU2YTQxNTQ1MmQ3ZjEwMjliMjVkZTIxMGRjODgzYzgwIHJlbGVhc2UyNy1tYWludAorODM1OTYgZjNmZWYyMGE2NmRkMDhiZDJiZWRhMTBhNDA1Mjg1MmIwNDVmOWQwZiByZWxlYXNlMjYtbWFpbnQKKzgzNTk3IDI5ZDM0ZTRkMGE5YTM2N2FlODA0MzI4NWVmN2U4MDQ3YzI4ZThjZGQgcmVsZWFzZTI2LW1haW50Cis4MzU5OCA2MWI2OWJmMWVlYmRjZTExYWZjYjMwYTA3YzhkODAxZmM0YmEyNDkxIHJlbGVhc2UyNy1tYWludAorODM1OTkgZjJkODNhMTM3MDNmYTlmYzE1MjAwYThkNTk3M2JhZThjNjdmMzYzZCBweTNrCis4MzYwMCA1YzRjZGYzM2MxMzI1YTcwNTZlNzg4MGQ5ZTU3N2NkNmVhMzViYzc3IHJlbGVhc2UyNy1tYWludAorODM2MDEgMTJjOTFmNGJiNDE0NDlhYmFjNmFkYWZmYzJkNmM4ZGQwYmQ3ZWE2ZCByZWxlYXNlMjYtbWFpbnQKKzgzNjAyIDYzZmI4ZGJiZmRhMjVlNDI5NGI5YTNmYmRlNGJlZGNkMmRkNzBiNDggcmVsZWFzZTI2LW1haW50Cis4MzYwMyA0NDM4OTZmMzI0Y2UyMGZhNjk2MDY4NzcwODZjMDNmY2ViODAwMjkwIHJlbGVhc2UyNi1tYWludAorODM2MDQgYTJmMDEzMDIxZTFkZGIxYmZmMDg1NjMxMTk5NDU3NGMxNWUzMmU4NyByZWxlYXNlMjYtbWFpbnQKKzgzNjA1IDM3ZDM5OWFhOGMxNmZkYTY3NWU5MmM2NDU3NzhmYTU1MTVkMDIxNzQgcHkzaworODM2MDYgZmQyMGViYTFmMjAxMWQ2MzA0MmQzM2I5YTRjZWVmZGYyODZhZWJhOSBweTNrCis4MzYwNyA0NzUwYThhOGI0Y2Y0MTc0NWYyM2IwOTViMWU5MGZiMzJlN2E4MzdjIHB5M2sKKzgzNjA4IDYzODQxMGEyOTA0NjgxY2IwODI2OWU4NjliYmZkODc0MThjZjZhZmIgcHkzaworODM2MDkgN2E0N2M0ZDMwZjZlMWIzZjQ2ZWJkMGI0NGY4NzFkMDE3MTAzZjg5OSBweTNrCis4MzYxMCBkNDg1YzY4MGM2NWZhYzkzNzNkMDkzMmVhOWNmZmI2YjE2ZTYyY2YyIHB5M2sKKzgzNjExIDk1MmE4ZGU1Y2E2NWExNzdkOTRmZmU0ZGJhNjNkYzk5MzIyOTkzODcgcHkzaworODM2MTIgNTkzZDY0MTdlZGYxMDc5ZjJjM2U1MzUwMmY2MDU3ZTYyNDQ5ZWM2YyBweTNrCis4MzYxMyAyMDI0MmFmMjQzZDIwZTIzMDc3Y2JkNDM1YThiYWEyM2U3YWE2MWMxIHB5M2sKKzgzNjE0IDJkMDNkNmM0YzgyOWMyOTBkOTA1MTRmMWY1ZmVlNzRhZTIzZDU3OTQgcHkzaworODM2MTUgNDQ4MmE0Mjg4NWY3NWE1MTYxZGQ2ZWFjZDA1MjJhMmQ4NDFlMmExOCBweTNrCis4MzYxNiAyOWYyMGVmMTA3NTVhMGFhMjRhMGExMTRhZjhjOTAyNjM5ZTkzNTc2IHB5M2sKKzgzNjE3IDYwMTViNmVjODFmMmM3NzAzY2MxYjIxZGIyOGYwNzA1MDc3YzUwMWMgcHkzaworODM2MTggMDMxZTZiMzQ4YThlOGFmOWQzYjEzZTRjMzZkODU2NDcxZTVhYzViNCBweTNrCis4MzYxOSA3NjJkODlmYWNlYWFhYWM2OTgxNjViNDc1NzU4YWFmNmI1NjZiYTgzIHJlbGVhc2UyNi1tYWludAorODM2MjAgNDU0MGI2ZjQyOGQzNjM0NzQ4NDY4YjM3MWYyMmE4NzA4OThhNzQ2MyByZWxlYXNlMjYtbWFpbnQKKzgzNjIxIGQ1NzU1MmFiZjE4MGU1OGRkMjQwYzU4NjU4NTQzYmY1ZDk2NWM0MWIgcmVsZWFzZTI2LW1haW50Cis4MzYyMiBiOTJmMGM0OWYwZThmOWNhNjU2NWIzYmFiNTE5ZGYzYjMwNWYwMzM2IHJlbGVhc2UyNi1tYWludAorODM2MjMgNjhjZmM4NGU0ZGIxYzg2YzI5NDk5ZmNkZDljZGIzNGRmNmE4NjAxNyByZWxlYXNlMjYtbWFpbnQKKzgzNjI0IDRjMGIzN2Q4NjljYWY4Nzg2YjhlODEzOGU4M2ViMTYwYzYwNzRmNTAgcmVsZWFzZTI2LW1haW50Cis4MzYyNSBhNjkzNGExYmZhM2IwZmM2MDUxZTE5M2VhMDBjNWQxMzY1NTc1YmMxIHJlbGVhc2UyNi1tYWludAorODM2MjYgNjU3YWU4NzdjMGJmMjAwMDYwY2FlMWI4MDBmZTM1NDhkM2U0NGYyYSByZWxlYXNlMjYtbWFpbnQKKzgzNjI3IDhjNzk5MDlhN2VlN2E2MWY5M2U3YzEyNzYzOGZjYjMwZDdhY2RjYzkgcmVsZWFzZTI2LW1haW50Cis4MzYyOCA0ZGY3MmZlYjM5ZDkwNTgxY2NkYTVmZDEwNzA2MzY2MGRhM2FhYzUyIHJlbGVhc2UyNi1tYWludAorODM2MjkgZWYxMTlkYmJlODg3NjYxNTVjOGE0ZTRiN2Q1OTVjNjBkZDFmM2YxNyByZWxlYXNlMjYtbWFpbnQKKzgzNjMwIGE4OGNiODAwNTExMGY1NzNkYmJjOTA2Y2YxZDFiOGMzYmU4YzlkMjggcmVsZWFzZTI2LW1haW50Cis4MzYzMSBiMWUwNDNkZTljNWE1ODQwMTRiY2E1ODI2YWNlZmM1ZjkzYWRiOTg3IHJlbGVhc2UyNi1tYWludAorODM2MzIgNWNmNjc5YmUzZGZjNGVhOGYzZmY4NmRjMjVkMTc0MGJiYmNmZmIxYyByZWxlYXNlMjYtbWFpbnQKKzgzNjMzIDZmZmYwZmZmZjg1YjRlZmJmMGRmMzM1MzIwMGQ3OWU4MmFmMzM5YjUgcmVsZWFzZTI2LW1haW50Cis4MzYzNCAyYWNhMzQ0NjBmZGI0MDljZjVjMTFjMzIwYjMxMjE0MTAzZDlkNGIwIHJlbGVhc2UyNi1tYWludAorODM2MzUgM2VmYjQ1ODE3OTBhMzFjNzc4NjIwZDQ5NjQ1OGNkNWE0YTI0ZjNmYSByZWxlYXNlMjYtbWFpbnQKKzgzNjM2IDZhNmMxM2E3ZjAzMDM4YTBkYzg0ZDNiZTY2MTQyNWZmNTA2ZjUzMTMgcHkzaworODM2MzcgMzBhODAwZDdlYWNjYWFhNzE4NzYwZmIxMjI4ZTVmODc0NzQ3ZWM2NyByZWxlYXNlMjYtbWFpbnQKKzgzNjM4IGU3ZTdjNTY3MThhZjI2ZjU1NjA2NjJkZGMxMDEzYjg3YmYzNDgxNTkgcmVsZWFzZTI2LW1haW50Cis4MzYzOSAxOTk2NDk0NGNjMDEzZTdjMWY1MWRlN2M3MzUwNmIyZGU5ZGQ1NTViIHJlbGVhc2UyNi1tYWludAorODM2NDAgODZkMTE5ZTk0ZGEzYTA2YmMwMmJlNzZiYzk3N2I0ZmU3YzQ2NGQzMiByZWxlYXNlMjYtbWFpbnQKKzgzNjQxIDYzZjM4Mzc5ZTRlZGEwYjY3NjFkNTA4YWNjYTNiZTdkNWFiY2MzZmEgcmVsZWFzZTI2LW1haW50Cis4MzY0MiA3YjU4NGExM2JjOTY1YWJiYmY2OTYzMzhjYjNjZmM3N2M2MzkzMWRlIHJlbGVhc2UyNi1tYWludAorODM2NDMgZjMwNjBlNmZiNzE3NTg1ZGE0NmZjYjYyZGIyMWViZTY3OGUxNWNiMyByZWxlYXNlMjctbWFpbnQKKzgzNjQ0IDE4YzhjNTAwNDEwOWVkNzI4ZDg4ZTA4MjllZTY3ZTY2NDc5ODE1NmYgcHkzaworODM2NDUgNjk0NTQxNmM4ZDA0NWM2OGFlYWZjODY0MmFiZWI3YWFlMGZlMjBhYSByZWxlYXNlMzEtbWFpbnQKKzgzNjQ2IDUxNzg1OWNiMGU5MjAwMjNkNWFhYzA5MzNiMzQ1MWI5MGFlMmJhYTIgcmVsZWFzZTI3LW1haW50Cis4MzY0NyBjODJiNmVmZmI2OTUzMWE1ZjNjODhmY2NjYzdhOTkyNTFiYzVlNmNmIHJlbGVhc2UyNi1tYWludAorODM2NDggY2RmNmEzYTUwNDA3NDZkMzEwYTUyNGZkYjg1ZWMwZmU1ZDBlNTg1YiByZWxlYXNlMjYtbWFpbnQKKzgzNjQ5IDEyODhhMjU5MzI4NzZmNjM0NWQyN2FhNzg2YTE1OTY4ODFkYWFlZTQgcHkzaworODM2NTAgNTcxMDVlODc1NjA0ZmVmYmFkZTEzNzY2N2JkYzUzNzVjNGQ1MTA1OSByZWxlYXNlMjYtbWFpbnQKKzgzNjUxIGViYzkwNTE3YjhkOTZiZmY4MmExN2QwM2Q1MmJlOGJjMDg3ODcxODUgcmVsZWFzZTI2LW1haW50Cis4MzY1MiBlMWVmNTI2MzMzNTBkZjY0MzY0YzcyYjhiM2M0MTRkMDk2NmI4ZDY5IHJlbGVhc2UyNi1tYWludAorODM2NTMgZjg2NGZmYjhmMmVkZWY2ODZjNzc2ZTc1OWI3ODYzNTVkODY5MzQzZiByZWxlYXNlMjYtbWFpbnQKKzgzNjU0IGQyNjVmOTFjMzg3ZDJmYTg0MDg4NTk0MmY0Yzk1MDc1ZmU2NmQ1MDMgcmVsZWFzZTI2LW1haW50Cis4MzY1NSBhNzkzN2RhNjI1OTFjMjVlOGNhNzAxOTQ3YTdhMDZjMzliNTAwYWEwIHJlbGVhc2UyNi1tYWludAorODM2NTYgNDhjNTllOTA1NTMyNTFlN2Y1ODQyMGFiYzBiMzdhNTZjNzJlNGRiOCByZWxlYXNlMjYtbWFpbnQKKzgzNjU3IDdjZWUxYjk2MDllNDdkZTAzZmYwODE1NDQ0NGY5MTEzMGYyZjdjN2EgcmVsZWFzZTI2LW1haW50Cis4MzY1OCBiMjA2NjY3OGQ5MzdjZjk5MGZlZjVlODgwZWU1ODI5MDNiNmNlYjA2IHJlbGVhc2UyNi1tYWludAorODM2NTkgZTIxMGVkNjNiMDRlNDIzOGM4MjE3MThmNmYxNTkwMGYyY2Y4M2NkMyBweTNrCis4MzY2MCAzZGNmZTI5ZDljYTU0NDdjMGY4NmQ0MDI5NmQ2ODUwMWVmOGVmOTVjIHB5M2sKKzgzNjYxIGEzZjY0NTM4MWQ2MWNlMmUxZmFlNjJiNDEwNTQyMzU2MzM2OTZiMDIgcmVsZWFzZTI3LW1haW50Cis4MzY2MiBmOWM0ZjA5OWEyNGRkZGY3NzQ5NTkxODFlY2ZjODY0ZTIyN2VhM2E5IHJlbGVhc2UzMS1tYWludAorODM2NjMgNjY2MDFmYjkwZDNkZjY0NDhiMDdmYTgxNGZmOTUzNDEzZmI3N2Y5OCBweTNrCis4MzY2NCA3MWFlNTIzZWJhNWJhZGRmN2I4MWE4YmNhOGI3NzMwZTA1YzY0ZWJkIHJlbGVhc2UyNy1tYWludAorODM2NjUgNDVkYmEyMmE3NGZjOWEzOWU4MThiYWEwM2M2NDhlNmZmMGU3MjQ0ZSByZWxlYXNlMzEtbWFpbnQKKzgzNjY2IDlkOWE4M2IyNTA0NTc4MWZlYmU3ZDBhY2YxMTczNzc1OGYwMGI5ZjYgcmVsZWFzZTI3LW1haW50Cis4MzY2NyBhZjM2NTVmMmYyNDhjM2QzNDRmMjFlZjc1YTA4ZGE0NDAzMmI5Mjc3IHB5M2sKKzgzNjY4IDMzZTliZTJmYTRkMjM5MWU3NTBhM2E2YzJjMmFmZTk4Yzg3MmQ1NWEgcmVsZWFzZTMxLW1haW50Cis4MzY2OSA2M2UxZDBkYzQ0ZWUwN2ExNmY2OTZlYTg3OGNlNGY1NTkyYTJmZTFlIHJlbGVhc2UyNy1tYWludAorODM2NzAgMzNkMmY0MjQ1NTYxMDMzNmJlMjdiNGFjMDE5Y2YyOTFlMzUwNzM0ZiBweTNrCis4MzY3MSBkYzIwZGY5YzliYTk1ZjBhYzY3OTQ4NjdmYzUyN2NmMjUwZmQ0MDIxIHJlbGVhc2UzMS1tYWludAorODM2NzIgMDNhYTA1ZWJkOWJjNWJiZTk5NGI0MWNjN2U0YmZjZTY4MDI3MmJhNCByZWxlYXNlMjctbWFpbnQKKzgzNjczIDcxYzQzMTVkNDlmMjdmMjE4MWZiYTgxZGZiZTJmY2Y2ODJiMWM0M2EgcHkzaworODM2NzQgZmY0NDU2ZGQ0YTc4Y2E0ZDNhYTMxNmM0MWQ1ODAwMmNlMDIyMmMwMiByZWxlYXNlMzEtbWFpbnQKKzgzNjc1IDI4NTBiZDkxOTI3NzBkNGIxZDYyODdkYzhlMjlhNzM3ZThhZTAyODQgcHkzaworODM2NzYgMjNjMDg5ZGM1Y2ZmMGU5MDc0MGU2Zjk1ODI1ZDJlZDc3MmJmNzFmNyByZWxlYXNlMjctbWFpbnQKKzgzNjc3IGQ2YjMzNmRkNjQ1Nzc2ZmUxMGY0Njg5Njk2NmYwYmFkNWUwY2UyOWEgcHkzaworODM2NzggOWQ2OGU3ODQ1ZTQyMDUwOTUwZjQzMTI1YjlmZWM5MzE1MTBkMTNjMiBweTNrCis4MzY3OSBjNGJiZGEyZDRjNDk4NjVkMjZlYjM5ZjljZThkOTc3MGI0YjU3OTBhIHJlbGVhc2UzMS1tYWludAorODM2ODAgMDQyMGY1NDdmM2JmMjQxMTA2MWM2ODFkMzgwNTI2Y2NmY2U4MGMzZiByZWxlYXNlMjctbWFpbnQKKzgzNjgxIDM5OGEyNWNkNjEyZGRhYWVkNWNlOWZlYzA0ODE5MjUzNTM0MGNlMjkgcHkzaworODM2ODIgOTcxOWU1ZThhOGFmOTJlYmU4ZTE3NDE1YzA5ZWFiMGI5NTkxZGY2NSByZWxlYXNlMzEtbWFpbnQKKzgzNjgzIGIzM2M4MGY3YWIxNzY2YjVjNzcwMDI4ZWU0ZWRmMjE4ODA3ZTkyM2QgcHkzaworODM2ODQgZjI4MzhlYjFiYjFlZjkwYWY5NTcwN2RhZTg2Y2QxZDRhNjQwNmZjYyByZWxlYXNlMzEtbWFpbnQKKzgzNjg1IDhhOWU5NzYxMjdhYjEzOTc2ZjcxMjNmMDI0ZDE3NjhiZDAxNjVmNmMgcmVsZWFzZTI3LW1haW50Cis4MzY4NiAzNzc1YmY4Mjk5YjMxMzU2ZmI4Yzc5YmYyMTMyY2EyMDUxYTVhY2FiIHJlbGVhc2UyNi1tYWludAorODM2ODcgZjQzZjZkMTczMDc2ZTlhYjVhN2U2NzU2NTM4N2I0ZTE0MDM0OWZlNiByZWxlYXNlMjYtbWFpbnQKKzgzNjg4IGNmOWZlYTIyYzNhOWUxNjFmOWMyYWNlNjI0MWMyNDMyZmY0OGIzM2EgcmVsZWFzZTI2LW1haW50Cis4MzY4OSBkNjg2ZjMwMzMxNzRhOTMwMjVlYmVmNDA2OTg5MjU5MTkyYTFkNzI5IHJlbGVhc2UzMS1tYWludAorODM2OTAgMjBkNzNmZWM5ZjYyMzAxZGQyNDNkYWRiM2YwM2FjZTI4ZGEwNjUwYSBweTNrCis4MzY5MSBjMWRjOWU3OTg2YTJhOGUxMDcwZWM3YmVlNzQ4NTIwZmViZWYzODJlIHJlbGVhc2UyNi1tYWludAorODM2OTIgNWE3M2RkMTViZTA4NGJlNWQ4MTIyZWYyYTgyZGVmZDdjYjY5NzhjZCByZWxlYXNlMjYtbWFpbnQKKzgzNjk0IDIxYTljOTQwMTEwZDI2NWUzZDYzNTZjN2ZiODczNzI4MzVjOWUyYTAgcmVsZWFzZTMxLW1haW50Cis4MzY5NSBmY2EzYzlmYjVhMWI2M2MyNDU3MTU4M2QzNjZjOGJkNWUxZmM3NjU0IHJlbGVhc2UyNy1tYWludAorODM2OTYgYmY2OTUwOTYyNmZmOTU0YTFjY2IyMTI0OGU0YzY3OTU0MDMyMjU2MCBweTNrCis4MzY5NyA2ZTc5NWVjMzhlODAwODI4NTBjMmM5YmExNjFiZGE4N2E2Y2U3NDU2IHJlbGVhc2UzMS1tYWludAorODM2OTggYWYzOWUyNTVmZWFkMDU2YWQzMDEyYmJjNzZkNDYwNDUzM2I1MDdhNSBweTNrCis4MzY5OSBmMGVjYTc0ZjAwZTE0YjJkZjIyNThhOTgyNzA3NmVkNGVhNjkxNmMwIHB5M2sKKzgzNzAwIDE0ODlmMzk5YWJhMWU3MWUwNmExZmY0MzZkNjFiNjM5Mjg0NDAxYWQgcmVsZWFzZTI3LW1haW50Cis4MzcwMSBmNGM5ZjZmMWZlNzZhNjJlM2E2YjBiNzg3NmM2YzYyYzAyOGU4MTkzIHB5M2sKKzgzNzAyIDkxNWIwMjhiOTU0ZDc1YzNhZDgzYWE5MjY0ZTMzZThmM2UyZGVhZDcgcmVsZWFzZTMxLW1haW50Cis4MzcwMyA1ODMzNDM1Nzg3MzJlMmViMzRkODNlYzk0YzBhYmYwNDhmYWVmZjM4IHJlbGVhc2UyNy1tYWludAorODM3MDQgYjNmZGQ0NDVlMDM3OWQ3MzE0NDVlNTJkY2NmODU3ZmE5YzkwMjYwZCByZWxlYXNlMjYtbWFpbnQKKzgzNzA1IDg5ODkzYTAwMjI3M2VlYzU1OWUyMzdlN2E5ZjZmNjgwMzk1Njc2ODMgcHkzaworODM3MDYgYmE3MzUzMTQ3NTA3Nzc4NmNmOGZjY2FiZGExNTZhZGQyYTBmMjhjYiByZWxlYXNlMzEtbWFpbnQKKzgzNzA3IDRjNGQ4YWRlOWRiYWExNmM1MzNhMWY2OTJhZDgwMmQwYjVjZDdkOTcgcHkzaworODM3MDggZjU5ODQyM2E0NjIxNjlmNzMxMjAwZGRkZDI2OGY0MTgxNDVhMzk4YiBweTNrCis4MzcwOSBlNjg4NjM1OTcwNjEzZjUxYjI1Njg3NjUzODYzZWIyNDEwNDI5NWYxIHB5M2sKKzgzNzEwIDc3MTljYzdlY2Y0NTQ2YWFkMmYwM2I4YTdmM2RlN2Q1ZDYzNzE4ZmUgcmVsZWFzZTMxLW1haW50Cis4MzcxMSBlNWYxMjU4Y2ZjNTg5NWYxMDY5OGYxYmU0ZjA4MzdkOTAwY2I1ZDAzIHJlbGVhc2UyNy1tYWludAorODM3MTIgNmMxMmIxNzE3OTJlMjUwZjhlNzViZGY0MGZkZWY0N2U3ZjE1YzhlZCBweTNrCis4MzcxMyA1OTMxMTEyZWFiZTc3ZmQxMDg3ZjFmYzZhZDczZDM0M2EzZDJjNzk0IHB5M2sKKzgzNzE0IDcxNmU2MDE1NzBkYTFjNTE5YTQ5MjQ4ZjYzMDQyZjNlNDJiNmIyYWIgcHkzaworODM3MTUgNDg1YzA1NGM5YWExNjUxNTBjYzRhMGRmMGNmNDIxMjBjOTcxNDNlMyBweTNrCis4MzcxNiA3MDQyZmE1MzllN2M4MTU0Y2JiYzAwZGJiZTk2ZTU4ZDgxOWVlNGYxIHJlbGVhc2UzMS1tYWludAorODM3MTcgYzVhMjgyNzk3ZDVlMzUyZWRkMDMwOGJmMWY0Njg0M2JjNWYwZmVjMCByZWxlYXNlMjctbWFpbnQKKzgzNzE4IDBlNDUyOWQ3MzNhYzQxYTFjZDNjMzFmNDg5NGZiZjI0YjVkMmM5MDkgcmVsZWFzZTI2LW1haW50Cis4MzcxOSA1NzZiNzY1ODQ0YWY5MmRhNTMzNmNhMTVkNDk3NzFmOTgxM2Y1OWM5IHB5M2sKKzgzNzIwIGIzOTg0NmJjN2JhNTU2N2UzZjRhN2JkZTNhNmE0MzdiODNkZDZlZjYgcmVsZWFzZTI2LW1haW50Cis4MzcyMSBjYjM0Y2Q2MzAwMDAyMDBhMzljZmQyNmNkNTk2MTg1ZjVkYjFhMDgyIHJlbGVhc2UyNi1tYWludAorODM3MjIgZmQ3ZjczZTEyNTY4MDBjNzA3MTZiZTY0YTk1ODE0NTczZjc4Yjg2MCBweTNrCis4MzcyMyA4MzA0M2MxNTI1NjY4MWU2ZWE1Y2U4NWZkMGU0YzMyNjU2ODVmYWEwIHJlbGVhc2UzMS1tYWludAorODM3MjQgOWRlNTZjNDMxN2M5NDNlMGE5MGEzMWYwNDQxMjQxNDMyYzA1YmQxNyByZWxlYXNlMzEtbWFpbnQKKzgzNzI1IGI0YTUzMzJkMmJjYWNjYTgyMmVmYzY3ZjMxNWU5MjMyYTY0YTk4MDYgcmVsZWFzZTI3LW1haW50Cis4MzcyNiAyZDg4Y2E2NGE5MGJjMWQxOGU3OGFhZWRjZmJhMzAzYWM5MjA2ZGUyIHB5M2sKKzgzNzI3IDgyODIyN2EwMDUzODk4YmFlNDI3YTMyMjVkOWM5MGJkMjhlMTE3MDUgcHkzaworODM3MjggMzVmZWU5MjExZjNiNTg1YzlkYTU1OTBmOTNhYTE5MmZkY2YzMTU5NiByZWxlYXNlMjctbWFpbnQKKzgzNzI5IDhmNGY0NjhmZTI5ZTA4YWZjNjFiZDRlYTYxOTk4NGIzNmQ2YTc2YjEgcHkzaworODM3MzAgOWM3MDQ2ZmQ0ZDY2NzIwOTdiYzA1MDlkNDdmZDZhYjNjOGViMjY2MyByZWxlYXNlMzEtbWFpbnQKKzgzNzMxIGNhN2VkOTQxYmNiOTM0NDEzZWRjNGMzNDY5M2FhNjM0MWQxYWRkZGUgcHkzaworODM3MzIgY2E2ZDZlZDIzYjIzOGI3OTY3M2IwNGJhNGY0ODY3NGNhMTJhMmU1OSBweTNrCis4MzczMyA5NWZkNGZjMjdiOWJiNWVjYzkyNDI1ZThmMjI1ODNkMzQ4ZWYzM2YyIHJlbGVhc2UzMS1tYWludAorODM3MzQgNTZhYjllMTExYzFjMGY1YjczOTlhNzZhMTIxZGE3NzgyODJiMTRjOSByZWxlYXNlMjctbWFpbnQKKzgzNzM1IDM0NzRkZGYxZWJmZTRhMzg0MWIzZTljYWUwYzMzNzVhM2M1OTIzZjkgcHkzaworODM3MzYgZWFmZTA3ZDQwZWI3MzU5ZTA3YjE5NDBlOWM5ZmM2OGMzMzJkOTlmYiBweTNrCis4MzczNyBjMTVhY2QxZTkxNmIzNTA0ZjQ3YjAwODFlOGYxMTQ2ZThkNWRjY2Y1IHJlbGVhc2UyNy1tYWludAorODM3MzggYTE4NWNhZWRmMzJjZmVkZGI4NDE4ZDFmMTkzMWQ3MzAxZDJmOTlmYyByZWxlYXNlMjYtbWFpbnQKKzgzNzM5IDM1YmQ1N2QzZDIzMmNkYmQzNjFkN2Q3OTFmYTZhNzQ3OWNjOTBjNjMgcmVsZWFzZTI3LW1haW50Cis4Mzc0MSA4MTAwMDE3OTM5ZjQ5OWM3Zjg1NmEzNTc4N2Y0MDIwZWM5ZmMyNzIyIHB5M2sKKzgzNzQyIDYzMzlhN2IzMjQ1Y2NjM2VmYWZlNjcyMTM2NTlmZjJmMzFlODFhNzcgcHkzaworODM3NDMgNjc2NTJhN2YwYWVlMjM3ODdhMmRhMTExYmFiOTIxMmYzZWVlMDBjZSByZWxlYXNlMjYtbWFpbnQKKzgzNzQ0IGMxNjgwM2JiZDc5MGQ3MzJhOTk4NWU5Mzg4Yzg4MzBmODNhZTFhYzggcHkzaworODM3NDUgNzJmMDA2NzA0ZmJkYzgxNDUyZjQ1NzJhZTAzMmNlYWFmMTcyN2RjYSBweTNrCis4Mzc0NiAzODRkMjE4OWE5NmE5MDFmNjlhMWU2NjAxYmU0ZDRjM2I0MmJmYWJmIHJlbGVhc2UyNy1tYWludAorODM3NDcgMjkyMjZjMDhlNTQ3ZDg4ODBhNDRjZTM4YjU2MWY2NmM2OWI2ZDYzOSBweTNrCis4Mzc0OCBhMDM3MzlhZjlkMzg1ZWIyYjVmOTIxYTU3MmY4MGNlNzkyOTU2ZDVlIHJlbGVhc2UzMS1tYWludAorODM3NDkgZmNiN2UzNTkyNGU2MzRmY2ViMzFkMmI4MjQ2ZGQ2OWI4NTg2N2Y5MSByZWxlYXNlMjctbWFpbnQKKzgzNzUwIGJiMmEzMTVkNmEwMzUwMDJkMTNhOTkyM2E0MmI4M2ZhZjFmYjkxYTkgcHkzaworODM3NTEgZjgwNmZiM2QxZjI3NzYzOWI3NTg1YzI5OTMzY2E5YWMxYWY4MWI2YyBweTNrCis4Mzc1MiA4OGNmOWEwZWQxMTgxM2Y1OTg2MDliNDVhYTdkMWQ5Yjk1YmNhYjhiIHB5M2sKKzgzNzUzIDZiMjhiODhmNmM0ZTg4NWY0YzhmMTJmYWFkY2M0ZTMyMjIwYTVmMzAgcmVsZWFzZTMxLW1haW50Cis4Mzc1NCBiOTA2ZTllNWYyYTdmYTkzODQwYjVjNmU1MTQ0ZDI5ZTNlMTFjYTU3IHJlbGVhc2UyNy1tYWludAorODM3NTUgNzZmODQwMmNhN2YzNTQwZWYwMzI0Y2ZmZWI4YTFmOGRkNzE1Yzc5YyBweTNrCis4Mzc1NiBmYTYzMTRiMTQxZGM0MmQyN2E3OTA1OGRhOGVlNzQ5N2UzZTcyZjliIHJlbGVhc2UzMS1tYWludAorODM3NTcgMGY4YTRmY2ZkZDFlNTk0YzNlMDQ0YTZmNTk2NzljZTZhMzdjYzA2YiByZWxlYXNlMjctbWFpbnQKKzgzNzU4IGIwNjIyMmYxNTVmZjVlZDViMzVhNjcwZTU4MzVhNTJmZmUzMjdhMzEgcHkzaworODM3NTkgYWQyOTJmY2U3OWY5ZWNiMzYyZmYwZmI0M2ZmYzFmNzg0ZTcxMmM3NSBweTNrCis4Mzc2MCAyYzEwNTEwYTFhZWZjNTU1NWRjY2ExM2YwYTliY2RkMTEwNGJkMzNkIHJlbGVhc2UyNy1tYWludAorODM3NjEgYmIyNjA4ZjczZWI3YzZkMzQ4MmY4ZDk0Y2NmZDM3NmYwOTdiNDBmOSByZWxlYXNlMzEtbWFpbnQKKzgzNzYyIGY3YmQyOGIzYzY4Mzk0ZDFkNmM5YzAzOTk4YWIwNTBmZTQ0MTU4NGEgcHkzaworODM3NjMgOGNlNjkwOTY5NmQ0MmYxNzYyODE5OThjODRlMTMwMDVkYThmYWMzMyBweTNrCis4Mzc2NCBkMTRlMWU3MjQ4YmEzZjZmYWVjOTBhMGI2MDY4MjAwYjQwZjUyZDIzIHJlbGVhc2UzMS1tYWludAorODM3NjUgMzA3NWE3ZTg1YzE4ODE0MzZlZDU2ODIwMDQ1YzBmODQ2YzliZjYwNiByZWxlYXNlMjctbWFpbnQKKzgzNzY2IDc2ODY0YWM1YjY3ZDAxMjYzZGVmODFkMjcwZTIwNjRiMDEyOTBiYjYgcmVsZWFzZTMxLW1haW50Cis4Mzc2NyAwNmJiZGRhMTMyZjM1NDk1OGNhZTc1ODg1MDY2OWU3NDc0NTQzOTJhIHB5M2sKKzgzNzY4IDQzZTZiZjg2YzM3ZjJjMzA0OGQ0ZTQwNTZiZjVkNmVjNzliMjdlMGYgcHkzaworODM3NjkgMDhhZWQwMGZiZWMzMzlhMGQ3ZjNjMWZmNTUxNzM5ZTM0YTAyZTM0MCByZWxlYXNlMjctbWFpbnQKKzgzNzcwIDI2MGFiZTljZWZhYzI4YTIzOGMyYTg4Y2ZhOGVmZDlkNTgwZmIxNDAgcHkzaworODM3NzEgN2JjZjYyNTVkZTJmZmYzZDJiOTkxZTVmNzAzOTc4ZWEwYTQ5ZjBmYyBweTNrCis4Mzc3MiAzOTRlNDhjNTE2YzRhM2IxMjM2NmViODc3YjlkMDg5MmE4YzQ0ODcyIHJlbGVhc2UzMS1tYWludAorODM3NzMgNDBiNDgzNzgzM2E4YjUzMmZmMzc0NThhN2FhNTIxMmVmZDA2ZTAwYyByZWxlYXNlMjctbWFpbnQKKzgzNzc0IDlkMWM2NWY4MzIzZWZjMmRlZjIyMzNmNjU1OTIzZmMwZTM3OWY0NmIgcHkzaworODM3NzUgMDYzMjc5YzZmYzE2MGUwYWQzOTNiZTFjOGY1YzBkMjA1ZThhMmMzYSBweTNrCis4Mzc3NiBiY2NjODRlMDRhMmNhZTczMDk0YTRkM2M4YjBmYTgxNGVlZjQ5NzIzIHB5M2sKKzgzNzc3IGVjMzIxN2E5ZTUyMTZkZmIyZWYzZDcyZTIwYTA1M2VmMTBhOWIzOGQgcHkzaworODM3NzggNzYwODUzMmY5MzNhNDZlYWY0MmVmMDdiOGQ2NDA3NWZjNjNiYjdhMCBweTNrCis4Mzc3OSAyNzVhY2ZjY2NjY2IwOGI1NzU5M2ZjNTdjZWI0NDQxOWU0MzhiZjM5IHB5M2sKKzgzNzgwIDliODAyYjZiNDM5NTA5ZDNhZWViNzU0YjFiOWQ4NjdmMGM4NDY1NTYgcHkzaworODM3ODEgZjI3YjI3YzgyZDhmZjQ4YmIzYWRjNTA1NTIzZmEwNTU3OWVlZWJjYiByZWxlYXNlMzEtbWFpbnQKKzgzNzgyIDcxNzVkMTgwNWNjMGRmNjBhZWMxYzQ2N2Y5ZGVmMzY0MWY4OWQ4MmIgcmVsZWFzZTI3LW1haW50Cis4Mzc4MyAwZWQ2NjVlOGExMTU0MjliZmNmNWFkMjNkYjZkNDYyNTM4ZDcxYWE4IHB5M2sKKzgzNzg0IDI4MTM2YWYwMGNjYWI2ZDQ3YzljZWJiMTVlZWJhZTNmMzkxNjU2NDQgcHkzaworODM3ODUgNGUzMjU4ODk0ODg5ZmJkYWFlZjJjMDVhNDllMjFjMzczMmZjMmU3NyBweTNrCis4Mzc4NiBjNmQ4OTI2Yzk5ZGY1ODUwYjczMjU0ZmMwYmQ3NmJjNGVjNGZmMDE0IHJlbGVhc2UzMS1tYWludAorODM3ODcgODdmMzMzMDM4MDM1ZTc4YzFmOTA5YTk0ZjI5MGI2Y2Y2MGY2MmQzZSByZWxlYXNlMjctbWFpbnQKKzgzNzkyIGMxZDdmN2ZlNDdhMDU3MDcwN2U1Njk2NGIxMWUwNjcxNDRmNDMwMjMgcHkzaworODM3OTMgZmIwNmZhYjE2YTNmZTYwNWI5MmEzOWZkMDIxMmE5Y2NmODBmZjc2YyByZWxlYXNlMzEtbWFpbnQKKzgzNzk0IGFlOGMyNWY5NGFkZjRkMzUxOWRkZThkMTg4MTQ3MWUxYzYxMjViODQgcmVsZWFzZTI3LW1haW50Cis4Mzc5NSBkOTVmYmM0YWVlN2MzYjhlNjEyMjFhN2M5OWY5OTE4MTExNzA0ZjQzIHB5M2sKKzgzNzk2IDlkM2JhMGQ2NjVhNjUwOGM0MTdiNTM1OGQ2ZWRiM2E4ZWRlMWMwYzEgcmVsZWFzZTMxLW1haW50Cis4MzgwMiAyNGIzZGVkNTE4MjU0YzNhZjdiMzM3MmM3MjkxNjhhYWEwMzhiZjRlIHB5M2sKKzgzODA0IDRlZmVkNjJlYWMzYTg2YzFlZGY2MjQ1NTFkZTI2YmYzMTU5ODdiYTMgcHkzaworODM4MDUgNjAzYzM1NTA4YjM2M2RjM2JiZTVjZWU3N2Y4MTZlYzgwNDBkZDA4MCByZWxlYXNlMzEtbWFpbnQKKzgzODA2IDcwOTllYzBiY2JkMmM5OTI4YjI2MDhkZDE3OTlmY2M3ZjJmNzcyYWEgcmVsZWFzZTI3LW1haW50Cis4MzgwNyAxNTgzOWNhNDNkOTZhMzVlM2YxODlmMTU2YTQ2MTI2OWEyYjZkYzVmIHJlbGVhc2UzMS1tYWludAorODM4MDggYmJlMjIyM2UzNzUwNmEwNGI1NmI4ODg4NTQ5NGVlZGM1MmMyM2JhNCBweTNrCis4MzgwOSA0YmNkNTM2MTdhNjU2YmVkNzM1MGE2ODM4YTRiNjE2YzcwNDJjODZjIHB5M2sKKzgzODEwIDI4ZmVmOWU3YzNiYjczMmYxZjE2MDk2OGEwZTZkNTM5ODgwYTkwNTIgcmVsZWFzZTMxLW1haW50Cis4MzgxMiA5MjQ3MzhhYWI3MGZkZDY5ZGVkMTUwYTI5NmJjOTc2MTMxYjhiZWU1IHB5M2stZHRvYQorODM4MTMgOGMyMTBlNjFjYTc3NTQxMGY3MmY4NGRhMTNlNjhjNjFjNjliNmE2OSBweTNrLWR0b2EKKzgzODE0IGJmZmQxZTI4NTRiM2QzNmIxNTM1ODg4OTc3MDA3M2Q3NTEwZjExMTYgcHkzay1kdG9hCis4MzgxNSBhMGJkY2RkMGYwODY0MzdjODMxY2ZiMTgyNDA3ZTg1YTRlOTdkYTcyIHJlbGVhc2UyNy1tYWludAorODM4MTYgZTQxY2E2NjcyZjgyMmUwOTZjZTZlNjk4NWRkMjBjMzZjNTUwY2M4YSBweTNrCis4MzgxNyBmNGQ5MmM2ZDRkNDJhNTNkMDYwYTczZTgzYWJmOWIzYmZkMGYxODM4IHJlbGVhc2UzMS1tYWludAorODM4MTggYmYzMzU5YjdlZDJlZDVhN2I3OWJjMjg0NTZhZTMwYmI0NDI1ZjNkZSBweTNrCis4MzgxOSBlNjFhMDk0YjQ4MThkNDU5MzE3ZmUzYzYyMGI1Y2VkZWFmNTJlOWY3IHJlbGVhc2UzMS1tYWludAorODM4MjAgNGIyNGI3YTQyMGM5MjdmZTUyYWYwMmQzNGFjMDA0OWRlMTc0MTI3ZCByZWxlYXNlMjctbWFpbnQKKzgzODIxIDAxNzg3NTYzZTJjYjM0NGZlOTM0MTczYTQwN2JlNWM5YjIyNzZmYjQgcHkzay1kdG9hCis4MzgyMiAwMzcwYzExZmQyMWRmM2Q0YTk0NGY3MGFiZGZmMzJkYjAzNDYyNWRlIHB5M2sKKzgzODIzIGI2ZmViNjdhMDVmMWYxNmZhYjdiM2U1MWZiNmM3NWNlNGFmMmQ3YmEgcmVsZWFzZTMxLW1haW50Cis4MzgyNCBlMTY1NjA1ODVlMzVjNmIzNjRlMzNmZTYwMzE0ZjEwOTk0Yjk5NWQwIHJlbGVhc2UyNy1tYWludAorODM4MjUgNWVhNzA3ZDJjYWE4OGU5ZmYzMWI2NTM0ZTFmZmVlODBiZDgyYWY2OSBpbXBvcnRfdW5pY29kZQorODM4MjYgYmUxNTlmM2RiNWQ2YWUwZGUzMTYyZGJkMjUwZDdiNjQyNmFmMWIyOCBpbXBvcnRfdW5pY29kZQorODM4MjggMTA4NmRhZDUwYzc0ODA5MjBkODMwZTFlYzU4NTc2Zjc1ZjM3YTQ1OSBweTNrCis4MzgyOSA2YjIxODlkOGU4YzQ0ZDJmNDIyMGJhMWNiY2Y1NmRjY2VjNjE3Zjk2IHB5M2sKKzgzODMwIGI0ZjU0NjM5YjdiMTk1Y2Y5Yjc4MDUxOTg3YWJkYjJiZmJiNDQxN2QgcHkzaworODM4MzEgOTgzZjExMGEyMjRlMmE0NWViNTk4M2Y5Zjc1ZjBkZTM4ZWZkZWJiMSByZWxlYXNlMzEtbWFpbnQKKzgzODMyIGNjNWEyNDZiMmRhMWJiODJlOGYxN2Y0NDY4ZDY4MTNkYjQ5MTBlYjIgcmVsZWFzZTI3LW1haW50Cis4MzgzMyA3NWViZTZjYzgwODMzNTFhNTVmYjFlNzY5M2NmYjJmZDc1NGQ5MzM4IHB5M2sKKzgzODM0IGM1MmY1ZGY1MDQ0ODg5NzVkOWFkOWEyYTkzMGU2MTg2YWNlNDUzYzYgcHkzaworODM4MzUgODY4M2FlYTRiNzJlZjhkYzc5OTFhYjNkOGY4NDE1NzA4MWZkY2M3OSBweTNrCis4MzgzNiBlMTNlYTgzZTJlZGIzZGUyMmU3MmRlNTM3NGUyNzYxZWFmYTQ1YmM3IHJlbGVhc2UyNy1tYWludAorODM4MzcgNDBkMTFiODEzOWRhNTBiMDQ3ZmViMmY1ZjgxOTBhOTU2MmY0ZmQ1ZiBweTNrCis4MzgzOCA1MTVlMGQ3MDU1NDNmZTU3NTk3ZTdhMjk0NDBlNmU2OWRlMTk5YWY5IHB5M2sKKzgzODM5IDA4ZTA1ZDQyNGQ5N2E2MjkzMDM4ZGQ1ZWEzZmQ4MGNjNTQwMDBkOGUgcHkzaworODM4NDAgNjBhYzQxYWU3ZjMxMjBkMDU2Y2Q2MGQ5YmIxNDkzZDQ0MzZiNTE0MCByZWxlYXNlMjctbWFpbnQKKzgzODQxIGI5ZDE5ODAyMTc0NTg5NDI4NzZlMjc3MWU0ZmNmZmQwODNkMjYyNWMgcHkzaworODM4NDIgZGYyNTg5MTVmNTJmY2I0YWFmMzZjZjBiNTk2ZDdkOTE3MTk4Zjg3ZCByZWxlYXNlMzEtbWFpbnQKKzgzODQzIDVlN2YxNWYyYzBiZTZjY2ViMWYzOWFhMzQ1YTJiZjgwNjE0ZGQ5YmMgcmVsZWFzZTI3LW1haW50Cis4Mzg0NSA4YjM3OTZjYzMwOWU4Zjk4MDU5ZWIyY2I0NmZlOGNjNjliYWI2YTg3IHB5M2sKKzgzODQ2IGNjMGVlNmJiNWU5Yjg3MWVkZmQxOTI4YjA1YTc3MTk4NDY0NGQ2NjAgcHkzaworODM4NDcgZmVmZmMxYTI1OTljNzNlNzU5YzBlODUxMTY0NTc0MTA5MmJkNGI0YyByZWxlYXNlMjctbWFpbnQKKzgzODQ4IDc2YmE0MWI3N2Y1Mzg5Mzk1Mjg0OWY3MTM2MWU5ZDZhMzI4MmM3YzkgcmVsZWFzZTI3LW1haW50Cis4Mzg0OSA0NDYxOWE1NjZiNmI2MzYxM2Y5YmE5ZjBjMGQyMDBiODFmN2FhMDg4IHJlbGVhc2UzMS1tYWludAorODM4NTAgZmE4NjIyMjY1NjA5MTIwNzFmNjU3YzNkNjJiNzc0ZDlhOThhNTY3NSByZWxlYXNlMzEtbWFpbnQKKzgzODUxIDU3ZTYzMWYwODhkNzM2MDU0MzI4NDdiM2E0NGY5MTMxODg1ZjBiNTQgcHkzaworODM4NTQgNGNhNDk3ZjQ4MTljZmRhZDgyNjcwMWJiYTY3ZDFlM2U1MWFjMmU3ZiBweTNrCis4Mzg1NSA3N2M2ZjYwYTFiMjQwYjUwOWRkY2NiNGEyOWUwY2EzNmVlNWZkN2Y3IHJlbGVhc2UzMS1tYWludAorODM4NTYgNTVjNzBlNzljNjg4ODY3YzExZDcyODhjZjA0NDAyYWQ2MjM2NTllOCByZWxlYXNlMjctbWFpbnQKKzgzODU4IDU1Mzk3NTMzZGE1MThhMDNiYjQzYzhhM2IyZDUzN2YxMDI4MjhmNDQgcmVsZWFzZTI3LW1haW50Cis4Mzg1OSBlYjVhYTkxZjBlMTZmNmRkYjE0NzQ5OTM3ZTQyOGJlN2Y2M2VkZmUzIHB5M2sKKzgzODYwIDdkNDQyNWUzMDhmN2I4NTI2NmViYjIwM2E4ZjQ2MjM2ZTRkNThmYWQgcHkzaworODM4NjEgMWJkMzUzNDEzNmEwMzY0MzU3M2VhOWJkNDQ3ZDVhNjk4NTQ4NWY3OCBweTNrCis4Mzg2MiAxYWQ1OTIyYWVjNDUzZTQ3MDMxN2YxZjBhZjFhNzQwMjc3OWRjZjBkIHB5M2sKKzgzODYzIGQyMjgwNjgxOGZlM2E1M2RiNDAzZTJiMjIxNDJmZDYxNGVmZGNhNmYgcHkzaworODM4NjQgZWEzYTJkMWJkZWQyYTA1YjVkZDA3MzM1ZGRmMWJjZDNmYWQzZmMyMCBweTNrCis4Mzg2NSA4ZDZiNGZmYzA1MTJhYTQ3MTcxOGFjNWMyNjljNTUyNzU4ZTYwYjZmIGltcG9ydF91bmljb2RlCis4Mzg2NiAwMjEzNTE1OTVmYWMzNmIyMTdmZDIyYWUxNjg5ZDYyNzE1YTZmOGVmIGltcG9ydF91bmljb2RlCis4Mzg2NyAwZGEzYjU5YzNkMzgwNjE3Y2I1YjZiZjU0ODU1YWY5MzBmZGQ5YzEyIGltcG9ydF91bmljb2RlCis4Mzg2OCBmODEyYjc5NjQxMTk5YTBlOTZkOTBlZTdmZjljOWNmNDkzMzRiOTFhIGltcG9ydF91bmljb2RlCis4Mzg2OSAzZjhjZWY4MzdmMDczYzJiYzM3Nzk3MDUxYjJhNWZkYjk2ZWYxNGNkIHB5M2sKKzgzODcwIDEwYzk1YzBmMzRkMzU1YmU5ZjVkNjk3ZTk4NzQ1MzliMmM4YzZlZmQgcHkzaworODM4NzEgNTIzNTRjYjI5NjQ0OTI2YTE5NTlkZDJhMmI0MjQxNDlhZDI4YmJjZiBweTNrCis4Mzg3MiA5YzQ0NWJhZDM1YjA4NmQwNDE3MzEzMGE1Zjk4NGM1YjgzNDg1Y2Y3IHB5M2sKKzgzODczIDdmNWUxMTVkNzZkZmFkM2Y2NDg4NTNjZDJmMTdhZWZjMmFmNGRiODYgcmVsZWFzZTI3LW1haW50Cis4Mzg3NCBhMTNiZGIyYjgzOThmYmYxOTFkMzIxMmNjMjIxZDk4OTdjMTk5NGJjIHB5M2sKKzgzODc1IDhjZTFkZjM1MjhiNzZmY2IyYWVlMmI3MGVlNzBlOWFhOWUyOTQ0OGMgcHkzaworODM4NzYgYzc5OTVlOWJjMmUzNmQ5ZjFhMjE2NzE1MDJjNTcwY2ZmZTczYmRhYSBweTNrCis4Mzg3NyA4YjkzY2YzM2I5ODdjODc3OWRlY2Y1ODAxYmExNWM1MWFlYTk3ODZkIHB5M2sKKzgzODc4IDY4OGVkYmJiZTY1ODE3NWU2YjhmZTM4MDU3ZTdmYTdjNjBiZjE5OGYgcHkzaworODM4NzkgNWUzYzYxY2I3MDE0MWQzNjMwZDNlZTBiZDIyNmRkODJmMzBkMjA4MyByZWxlYXNlMjctbWFpbnQKKzgzODgwIDk0NjhkMTMwNDI4NDI1ZDI2NTIxOTA4MmM0ZmU5ZWRmYTZlOTIwMWEgcHkzaworODM4ODEgM2FlOTVmMjA3NjA2MzQ0ZjQyM2I1NWVmYjI4YjU4ODI3ZjYxYWVjNCByZWxlYXNlMzEtbWFpbnQKKzgzODgyIDdiN2ViZjU1ODg5NDg1NDczOGM0MTgzNGQxMzRlNWQyOWRhZjg3N2EgcHkzaworODM4ODMgMDAxNTI5ZDY0N2ZlNDlkYWFkMTQwMWZmMzIzNTUzZmQ1ZThiZDY1MiByZWxlYXNlMzEtbWFpbnQKKzgzODg1IDNhNGJlOWQyNWE1ZjgzMDYwY2QyN2Q4MWU5NjdkZTI3MjhhMjgwNjggcHkzaworODM4ODYgNWFlMzkwYWM2YzYxZDhhZTlhNmQ5N2E0NDcwZDg1YTc5NTg3NTMwMyBweTNrCis4Mzg4NyA1YzBkNWRlNTZmZGY5YWFiZTg5NTAxN2Q4NWZlZTYwMWZlMWU3OTI5IHB5M2sKKzgzODg4IGRlMDgwOTc3MmQ3ZTcwM2UwZDA5MTE4NjY5YTQxZjE5MWZjNjNmY2UgcHkzaworODM4ODkgOGJhMDljZGI2ZmM0OGIyYWRmMGVjNmJjNzZjMTgyMWU4OTNhOGNmNyBweTNrCis4Mzg5MCA3OTVlYjEyNDAzYjk0NDIwZGI0ODhjNDAzOGY2ZGRlZWQyYTQyNjZhIHB5M2sKKzgzODkxIGRmYmJlN2IzMGU5MDFiMzZmYTQ1MTg0ODliMzk3Njk3MjdhMTZiOGQgcHkzaworODM4OTIgZTE2MDc5YzZhNDhmNTgzY2QzNjhkOGY0ZjA4MDZmZmNmNzgxNmVkOCBweTNrCis4Mzg5MyBmMTYyN2NmY2M4OTA1MGI2Zjc1MzY5YTlmNDMxZDU2M2Q5ZGVkYTBjIHJlbGVhc2UyNy1tYWludAorODM4OTQgYzM4ZjNiOTY5YjRhZTUwNDQ0Y2RiNWI2NmM3MGJmYjM3ZTk3MzM2NyBweTNrCis4Mzg5NSA3ZGMzN2FlMTc1ZmNkNTcwN2U3NGU2MGE1MWUwNjRjZmY5NzQ5ZDJjIHB5M2sKKzgzODk3IDZmYjAzMTAzN2YyOWI1MGJiOTRkMTcwMjMwOWNmYTcyMzJiOWFhNjYgcHkzay1kdG9hCis4Mzg5OCAzNTVkNzI3MzczNjRmYmRkODU5OWU4ZjMzNzNhNDg4Y2Y1MjczYmZjIHB5M2stZHRvYQorODM5MDAgNzJkMDUwNGU2NDg5NjA0MjRmYjJjYjUxZGNiOGRmYjc5MWJkNGJiOCBweTNrCis4MzkwMSBjODlhZDZmOWNkZGMxODIyM2NlNGM3MTU4NGNlY2E0OTE5OWQxMjllIHB5M2sKKzgzOTAyIDk1MTE3YWFiOWE4NmRmNzJkMmYxOWJjMWQxZmE4NjdkNTQ3YTBmYTMgcmVsZWFzZTI3LW1haW50Cis4MzkwMyA1MDM4OGE4M2VjM2Y3ZTBiMmM5NDZiYzJiMmU0NGY4Yzk4NGNhYmJjIHJlbGVhc2UzMS1tYWludAorODM5MDQgNTBmOGY1MjQ3YzgxMGFlYjgwMThlNGNhMzdhNDRlMDViNjc5MjZjOSByZWxlYXNlMzEtbWFpbnQKKzgzOTA1IDBhZTcwNmE3MWEzYTUwZGMxZDE1Yjk1ZDBlOTU1NGJkMDIyMTdiODYgcmVsZWFzZTI3LW1haW50Cis4MzkwNiBhNTZkOGE4MGI4ODM5ZTU1OTdkZmQzMDVhNzY0MjFhNjM4OWIzMTE5IHJlbGVhc2UyNy1tYWludAorODM5MDcgNDZkNDhkNzE1NDQyZmNiYjgwMmVlZDM5NzU2ZmQzMjA5MjlmYjgyYyByZWxlYXNlMjctbWFpbnQKKzgzOTA4IDYwMDc2ZjI4YzAyM2FjNmVhYTI4ODU4MjM5ZDhiZjdlOWNiZjM2MGQgcHkzaworODM5MDkgYzJlMWRiMzBmNzU2MmZhY2U1MGRhMWE1NDhkZjdkNTZkYjBmNzA0YyByZWxlYXNlMjctbWFpbnQKKzgzOTEwIDMwY2MyN2ViMzU0YWNmNTFjNDZiZGUyZjI3MTA1MTRjZTZiOGYxY2IgYmJ0ZXN0Cis4MzkxMSA5ODUzNjU4YTgzNTViYmZiOGU0Mzg4MzI1NWIxMjAxMjIwNGU3OTg0IGJidGVzdAorODM5MTMgMjlhZjlhYmM3NmNhZGExNTNmYWM3MTg2MmY5MDM0YWYyYjQ4NTFhYSByZWxlYXNlMjYtbWFpbnQKKzgzOTE0IGIxODkyYjdmMTk2NmY0ZWM4YjkzMDdmZmM0OTkxMGU1MTNmMTZmMWQgcmVsZWFzZTI2LW1haW50Cis4MzkxNSA0YzUyM2UxZWYxMGYyYjcyMWY2MDc0YzJiZmM2MTM0MTJjZDNlZjgzIHJlbGVhc2UyNi1tYWludAorODM5MTYgYzM5MTJhYWMxYjczZjYwZjliNmNlOTc3YmMwZTlkZGYyNmY5N2Y4ZCByZWxlYXNlMjctbWFpbnQKKzgzOTE3IDZjZDI5MmM5YzI5NjBlODA5NzUyYzU4MDExYjlhYzRjNjM1YTVmYzEgcmVsZWFzZTI3LW1haW50Cis4MzkxOCAzNzE1NjkwN2YzNTljYjlkYTVhODlhMmM5YWVlNjY4ODUwMDNiMTQ0IHB5M2sKKzgzOTE5IDEwOWJkZTVlNDFiOTQ0ZWYzYWRlOThhYzYxNDhmNmJjMjZlNGE1OGMgcmVsZWFzZTMxLW1haW50Cis4MzkyMCBiNjVkY2U1OTAyYTI4NDdiZmM1MzlhNzVkNDQyZmRjNDlkZjYwYWFiIHJlbGVhc2UyNy1tYWludAorODM5MjEgZmY5NjE0ZWRmM2EwNTQ2ZmM2ZjE1YjlmMmMwNTU4MGZlNmI0MzYyOSBweTNrCis4MzkyMiAxNGZiNjdlN2ZhMDQ2OGMxMDdiNmQxMTg1ZDg0MzAxMzk3ZmIzYzI4IHJlbGVhc2UzMS1tYWludAorODM5MjMgZmE0ODVkY2VhNjEzZTkxNWEzOWUxNDkxNTgyNGJiYzMxZWZjMzI1NiByZWxlYXNlMjctbWFpbnQKKzgzOTI0IGJjZWEzNWEyZDJkMmJkOTVlMTA1ZDhlOGIxMmMxZDUwNDIxZGEyNzQgcmVsZWFzZTI3LW1haW50Cis4MzkyNSAxOWFmMDgyODdjYzc5MjkzZjE2MTQ5NTU5Yjg1MTk4N2NiOTRiMWQwIHJlbGVhc2UyNy1tYWludAorODM5MjYgYWQ2YzhlMjI4NzEyZTRjOTQxYzlmYThjYTUyMWVkODQ0NTI2NGU2ZiByZWxlYXNlMzEtbWFpbnQKKzgzOTI3IGMyZGIyN2FhNmJmMjUwMGJhY2JiYzhmNTM5YzVlNDAwZjNjMDM2OWMgcHkzaworODM5MjggMTMyMmVmM2M0YTZjODI5MmU4MGQ5OWFjZWFlZDRhNDZkY2RhNmE3NyByZWxlYXNlMjctbWFpbnQKKzgzOTI5IGRlYTFkMjY4ZTM0ZWQ2N2YxMzJjZDliMDU4MWQxZDJhNmI1YmEzNTYgcmVsZWFzZTMxLW1haW50Cis4MzkzMCA5ZTAwM2EyNjIwOTMzYzk4NmJiNWYxMzgwYTFhNzhiNzUxOWJmNWZiIHJlbGVhc2UyNy1tYWludAorODM5MzEgNGY3NmNlNjlhZWQwZGMyNzQ0NGJkMzQ1Yjk4MDcxMzk1ZTMyYjYxYyByZWxlYXNlMjctbWFpbnQKKzgzOTMyIDM5MDkyZjg2YjBhZjMyZGVhNWMwYjA5NTBiMWJhMDJjZWUzOTEzM2UgcHkzaworODM5MzMgYTM4NTNiZmEyNTE4MTZkZDU3MWU0YjZjNWQ4YmUyNzhjMTU1ZDA3NiBweTNrCis4MzkzNCAzZDZhMDJmMGEyZDhhN2FlMzc3N2MwNWViOThlNmIxMTRkNTM2MjA5IGltcG9ydF91bmljb2RlCis4MzkzNSA3ZTUyNWUxMjViNzE1ZTM5YTE2NmYzYWJlN2FhZTlhN2QzNGNiMzkwIGltcG9ydF91bmljb2RlCis4MzkzNiA3ZGQ1ZjVjZmExNzk0Njc2NzkzNTRiMmI0MDA1NzQ0MjkyN2MwOTcxIHB5M2sKKzgzOTM3IDBhMWFkOWIxMTQ5NjIyNTVkMjMwNTBlOTA0MTIyZGRkNjMxNjc5NGQgcHkzaworODM5MzggMmNiNTgxNzRhYTdkYTA3MmM1OWQ1NTMxYjRlNmMwOWJlNTY0ZTNiZiByZWxlYXNlMzEtbWFpbnQKKzgzOTM5IDI5ZTIwYmRiMmIxMWFiMGNlMTQ2NzM2NjlmMmEzYmQ1ZDIyNjFkZjUgcHkzaworODM5NDAgNDA1NTZhZTQyNGI3Mzc5ZjRlNGE2MTJmMmM5ZGMyN2Q4ZTkxODAwNCByZWxlYXNlMjYtbWFpbnQKKzgzOTQzIDY4OTY5YjlkYzNiMDYwMDU2Y2RkYTZkYmYwNTI4ZDM1ZjJjMzI5OWQgcHkzaworODM5NDQgNzM2NDk0MDY3MmYwMDQ0NzEzZWVhNDhhYzNmYzQ3MzE3ZWE3MTFmOSBweTNrCis4Mzk0NSA5MzBiMjgwM2M3MTY2YjIyM2NlMTcwZmFlZjRjNDgxYWE2Y2NkNjhlIHJlbGVhc2UzMS1tYWludAorODM5NDYgYzNmZjZlOTEwMDY4YjJmZTg3N2Q1MGRlNWM4ZDBmYmFlZjdmODkwNiByZWxlYXNlMjctbWFpbnQKKzgzOTQ3IDU2MDY2YTU4MjVjYTIwYmNkNTI3NGM0YWQ2OWI4NWU0MDE5Mjc1ZmMgcHkzaworODM5NDggNzZkNDYzYzk5MDA2Mzk2ZGM0MTUxMjMzODFhMWViMjhmM2VhMzY0YSBweTNrCis4Mzk0OSA5MTA4ZTdkY2Q3ZDgwNWU3YmNkMDhkYjFkZDZjNjE1YTA2YTc3NmMwIHB5M2sKKzgzOTUwIGExZGU0NjM5NTY0ZTVhZjFkOWUyZjc0MmRjYmQ4NTljMGQ0MzgxYzAgcmVsZWFzZTI3LW1haW50Cis4Mzk1MSBmMjJlOTUwNTUxYWQyYjg5YzA0OGM0NWQ4MGJhNWJiMDdiZGY1ODI2IHB5M2sKKzgzOTUyIDNmYThmNDFhMTEwM2M5OGNhZjI2OTRiY2E3ZWVhNjIxMTBjYzZmMzEgcmVsZWFzZTMxLW1haW50Cis4Mzk1MyBkMWIwMzVlMjQzNzJiZTAxN2RmZGQ0ZGQyNGQwYjEzNmQ0NzQ5NjVmIHJlbGVhc2UzMS1tYWludAorODM5NTQgM2RiYmNkMzRkNDk0ZTI1OGIwYzlmZTU0MGRiNWJmMjk5MDVlM2VjOCByZWxlYXNlMjctbWFpbnQKKzgzOTU2IDg0OTlhZTVkOTcxOTZhNzJhNWI4NzRiM2NiZjkwYTgzZGE0ZTczNTkgcmVsZWFzZTMxLW1haW50Cis4Mzk1NyBhYjJkOTQ5MzFiMGMxMDVmYTUzYzYwMjM5ZmNiMzliODFkZWQ0M2NiIHJlbGVhc2UyNy1tYWludAorODM5NTggNTlkYjM2M2ZhNTk0NWMxNzkwNzg1NGJmZDAwMjJjZDY0YzdiYTE4NyByZWxlYXNlMjctbWFpbnQKKzgzOTU5IGZkNDYwNmVmYzcwMGFiYjI1NzhkYmY4ODYwMjAxNWZlOTkyNWFmYzggcHkzaworODM5NjAgZjdkOGFhMTBjM2VmYTc2OGE3NWMxNjBhMDQ4MWJiNmY0NGIwZjk5MiBweTNrCis4Mzk2MSBlZDY2YjI0MTcxYWYxMmU4Yjc1NjViZjllOWUwYzVmNGFmOWFhYTg3IHJlbGVhc2UyNy1tYWludAorODM5NjIgNjhjNDhmOGFhNTU1MzgyMzRmZDViYTZjZTMyYmZlOTI3OTMyZjJkZiByZWxlYXNlMzEtbWFpbnQKKzgzOTY0IDUzNDNmNTcxNGZlZWM1MWFkM2NmZTFhN2E1YTY4NDBlMjBjNjIyNzUgcmVsZWFzZTI2LW1haW50Cis4Mzk2NSBiZTgzZDI5M2ExZTlhZjllNjdjODcwNTJmMmQ5Y2U4YTAxMWFiZGVjIHJlbGVhc2UyNi1tYWludAorODM5NjYgMDA1NzIxZTUwZTBiYTE0ZmIzOGJiMjUwNWYxODExMTQxMDFmZTJlYSBweTNrCis4Mzk2NyA2NGI1YzZmMjk2MDFjZDg5ZTRmY2RmYTc3MjI4MjUyY2Q5NmJhNGMxIHJlbGVhc2UyNi1tYWludAorODM5NjggY2I0NjFhOTE0NGRiMDM1NDNjNjU1MmVkZDAwM2UyYWY4ZGMzNGQ2MyByZWxlYXNlMzEtbWFpbnQKKzgzOTY5IGQyYjcyMTE4NWJmYTJjZDEyNzQ0NDhmMmFiNjk2MGU2MmI5MWZiZWIgcmVsZWFzZTI2LW1haW50Cis4Mzk3MCA0YTVhZDkxOGY3YWY0NTQ0YjkxZjE4NzNlZGJmMzRiZDFkYzAwMzIwIHJlbGVhc2UyNi1tYWludAorODM5NzEgODdiMmRhODQwMjUyZTdhYmFmYzhmOTI3NjExZTlkNmZjZjViYjZmYSBweTNrCis4Mzk3MiAwM2U4ODRmYWM0ZGJhMjUyOTBiNzhiZTYwNDQ1ZmY4MTRhZGI4NDIzIHB5M2sKKzgzOTczIDJkZDk2NGRhZDE2ODU0ZjI3MTVlZTg3OTEzZjI1NGJmODdkYTM4OWEgcHkzaworODM5NzQgYTQ0OWNlMWYzODViNzM0NTA2Y2YwMzI3OTc1YTEyMjk3NDRjNzQ3ZiBweTNrCis4Mzk3NSBhYTg5Y2JiN2JjMjE5YmVhMTE4YzE0NTRhNWRhZDFhZjkxM2JjNTUwIHB5M2sKKzgzOTc2IGZhMmQ5NzIwYTY2Y2IxMGY2MTEwNDE3MTkxMzIwN2Q0ZGRmYWViOTQgcHkzaworODM5NzcgZDZmOGU4NmExYmVjMjJjM2FmY2I1MzQ4ZDc1MzUxMzIxOTJjYWIxMiBweTNrCis4Mzk3OCA3NTU1YjAwMzVhNzc3NDExZDg0ZDE5NmM4ZDJkMTU2ZGQ4YjBkNmZhIHB5M2sKKzgzOTc5IDI3YjU1M2NkZDg1YjY0NmFiOWQ0Y2NiOGI0YjE5N2Q5OWMxNmUyMGMgcHkzaworODM5ODAgZjFkOTIyZDgyMGNhYWNhYWI0ZDY3OGJmODZhZDhiNDBkM2VlM2RkYSBweTNrCis4Mzk4MSA5MTNhYThhNDMwNGM1NzRiMmVkMjIyY2JjM2JjNjU3NDkzNTEyOGM3IHB5M2sKKzgzOTgyIDNhODBlNjdhMGQzNzI1YThiZTdkMWNkM2VlZWIzYTg1MDY2YjVkNTMgcHkzaworODM5ODMgYWE5YzhlODJjNDM1NzZiZjE3NWY3YWJhYmE3YTEzNDBjYWQ3ZDZkYSBweTNrCis4Mzk4NCBkNGI2NzBhYTZkNmI4M2RjNjczZWRjOWE3ZjkyZTQyNDk2MjU4YzA2IHJlbGVhc2UzMS1tYWludAorODM5ODUgMDY4MjkxZDQ0ZmQ3ZjhhMWE1YzBlNTRjNWIwYzM4YmEwOTU1NzQzOSByZWxlYXNlMjctbWFpbnQKKzgzOTg2IGU1NGJhZWJiZDZmZjAxMDQzNzUyY2JkZGU1MjRmN2Y0NWUxNTcwYmIgcHkzaworODM5ODcgMjkxYzlhZmFiMTJjZTA1ZDhkYjJjNWZlN2NlMmM5OTUxZmI4ZmZiZiBweTNrCis4Mzk4OCA0NzQyZTdhZWEyZjU5Y2NmNjJkODA5ODFiZGUyNTc5MTQyZDM4NWM1IHB5M2sKKzgzOTg5IDdiZTU5MTYzMzNkZmRhNmYwNzdkOWIzMzQyZDVjMzEzZThmYmIxZDggcHkzaworODM5OTAgNTBjMGRiYWVhYTA0ODAxMTY5N2YzN2RkZDc0YThhOWI0MjEwYTZiOSBweTNrCis4Mzk5MSBhYjY5NDY5NzJiN2ZkYmJkNDhmZjlkYjAwZTBjNGUzNmEyZmIwNjYzIHB5M2sKKzgzOTkyIGQ4Njg2YzZlNmI1ZWJkNmQzMjJlMDQ1ZjA3NDVlOGZjYTU5Yzg0ZTkgcmVsZWFzZTI2LW1haW50Cis4Mzk5MyAzYWY1OTdmMTIzMmFmNjhhMTVkMDljNTNiMGFiMjQzYWZhNjI1Y2JjIHB5M2sKKzgzOTk0IGQ1NGRhOTI0OGVkOWZmYWY2NWY2NTFjYTcxOTg4Y2RjYjEzMGNkODIgcmVsZWFzZTMxLW1haW50Cis4Mzk5NSA3MDYzNGMzZTAzMTA3YTFkZGFmMzI2MWRkZTkxZDIxZTRjMDk5M2RjIHJlbGVhc2UzMS1tYWludAorODM5OTYgZjc2MzlkY2RmZmMzNmRiYTRkYjIxMThhMDRjYjhiZmYzMTA1YWEwOCByZWxlYXNlMjctbWFpbnQKKzgzOTk3IDk0MjMyYTBjNDVhZTM0ODY1ZTBlOWJlY2I0ZGNjMTZhNzRiNTE4MmUgcmVsZWFzZTI3LW1haW50Cis4Mzk5OCBjYmEyYTk2MTExNzAxNDc3MjgwNTFjNjgxNGRlYzUyOGUzMDQxOWZkIHB5M2sKKzgzOTk5IDFiNTViNzFjN2MyMTBlYWE0ZWM1N2YxZmVjYmU5MTE5YWExOThkMDAgcHkzaworODQwMDAgZjhiNGViZTljNDFiOWQ5ZDZlODczY2YzNjE1OWY4YjI5MDE3NDY3MSBweTNrCis4NDAwMSAzOGQyYjY0YWI3YzE1ZmI3NWJmNzhiZjM3NDc3YjBjYmY4MDc4NzhlIHB5M2sKKzg0MDAyIGQ0NjAwZWU1ZTgyZjBlOTcxNjRlMzA3ZDc5NTdmNjNlODg2ZDMyMjMgcmVsZWFzZTMxLW1haW50Cis4NDAwMyA0OTRhMWI5NTQ1Njk2YjViNzI2ZDFlMTZmNThmYzM3ZjJkZDJlOGE1IHJlbGVhc2UyNy1tYWludAorODQwMDQgOTcxMjQ5Yzc0ZTgwNWQ4Yjc2ZmQ3ODc5Y2U3NzMwNWEzODYyYmU4ZCByZWxlYXNlMjctbWFpbnQKKzg0MDA1IDk4MTU1NWU5OTg2ZTMyOTRjNDIxNDZlNTIzOWFiOTYwZmU3YzdhZTUgcHkzaworODQwMDYgYWVkNGQ3ZjEyODIxZDcxMWEwYzBjNTJhMzhkOTViNjk2MTE3NWM0NiBweTNrCis4NDAwNyAwNjNjOTlkODAzMmM1MTg3NTIzM2JjOTg1ZWIwODVlOWU5NGNiOGM2IHB5M2sKKzg0MDA4IDc5NGViNDBiZWYzYTY1NTRhODk5YzA2NzVjOWU5ZjVmZGVlZTgxYzMgcHkzaworODQwMDkgMmQ3YmJhMWNmM2JjNTc1MjkyM2NhYjQwNjA0ZTA2MzhkNDhmZWEzYSBweTNrCis4NDAxMCAyOTNlMzMyYjhiNGIwNWE2OTcyMmNlOTYzN2M1OTM4NzNlZDgzOTkzIHJlbGVhc2UzMS1tYWludAorODQwMTEgODVhZGZlNTc4NzdiMWM5NTU5NTA4ZGY4ZGIyZmQyNmRiYjExMDU1MyBweTNrCis4NDAxMiA5NTMwMTBjMGIxNjg3ZmY5ZjQ2NTkxNmU4ZmVmN2ZiZGFlY2Q4ZTRlIHB5M2sKKzg0MDEzIGE2NTkyZmNmNzVlNzdlZjQ0YTY5NmM4NGMzY2ZjMzY2NjgyZjBmZjggcHkzaworODQwMTQgZTAxMzg1MDg2MGZhZjEzNWI3NzkxZTIxOWU1YjhmMTZhMTZiOGEyMCByZWxlYXNlMjctbWFpbnQKKzg0MDE1IDJiMGRmOWUxZjY5ZWM5ZTYxNDVjYTJiMDJjYzhlZjBlMTA2OWIyMTcgcHkzaworODQwMTYgZjFkMThmNGQ2MTYzYjU5YWYzMmFmY2IyNGQ5NmFiMDQ2NDM2MWNiNiBweTNrCis4NDAxNyA5NGIyOTBhYmJhZmJhYTUzYjQ4YTExOTdkMzRjMzAxMjgxNjY2YTcyIHB5M2sKKzg0MDE4IGE0ZmQzN2ExYmYzNzQzNWQ4ZjUwMWE0OTdjODk5YTk0OWRlZjNiNDQgcHkzaworODQwMTkgMTJmZTRjODhmOWU2Njc0ZGFiYWY4MDRkOWRlMmVjOGM5ZGY0MjM3YiBweTNrCis4NDAyMCAyNzcxMWIwY2QxZjAzYjU0YTNiNzVmYWFjYjcyNDBkZDgyOTIxMGNmIHB5M2sKKzg0MDIxIDI4NTQ0ZDY2OGVkMGRmYjQ2NTdmNDEzYTgxMzc3YzNjOTMyNmZlYmEgcHkzaworODQwMjIgZWY3NTk1NTEzOGQyMjc1OWU2ZTMzNzViYjVmYzNmMTAyMjBjMTgzNSBweTNrCis4NDAyMyAwYWFjNDBjNzc0NDQzNDI4MTNmYjIwZWI0MjFlZTUzYzA3OWY4MmY5IHB5M2sKKzg0MDI0IGI3YWI3N2ZkMjdiNzA3MzAzMDEwNTQ0YTNjNWUzYzMzM2YwY2FjNDggcHkzaworODQwMjUgMmM2ZDEzYzQwNTE4YmVhMjM2YzE3Y2QzNWQyZmZkOTE3MmI5M2NkZSBweTNrCis4NDAyNiBiNzIyMGU0MjlhYmI0NzQ4MDExMTQxNmFiMjE4ODIzODVjYmNjMDAyIHB5M2sKKzg0MDI3IDliZDA4MjcwMTc3NjczNjViNjU2YTA0ZjhmNGM4MzNiMDBlNWU5MmYgcmVsZWFzZTMxLW1haW50Cis4NDAyOCA0NWIyNGFkZmQwNjQ5ZjA4OGI3MjFhYzEwMjAyMDMxODM0ZGU1MDIyIHB5M2sKKzg0MDI5IGFiNjcwZTQxNGMyNjllN2I0ZGJjOTk3YWU1NTUyMmIzNDJlNzBjMDMgcmVsZWFzZTI3LW1haW50Cis4NDAzMCBkMzYwMzExZjBlNTI0NzZhZTE3ZGIwZDBiNGI1YTUzMjBmMzhmODU3IHB5M2sKKzg0MDMxIDVmMzM2NTNlMzgzN2VlZTAwNmExMTNhMDM4OTIwMzFkNjNhMmRiOWQgcmVsZWFzZTI2LW1haW50Cis4NDAzMiAzYTc5YWEyYzQ1NDlmZTM1MzgzZWI1M2VhMDY1MGU4NTg4MWUwZTUzIHB5M2sKKzg0MDMzIGYyOTIzYTE3NTFkODI1NDZiYmZiYzJkMzg3MjRmNTFkMjg5ZWYwMDMgcmVsZWFzZTMxLW1haW50Cis4NDAzNCAwZTcyMTgzMDY3ZWU3ZmU5ODBiNjFmODY5YjllOGM3ZTdlMDA5OTNmIHJlbGVhc2UyNy1tYWludAorODQwMzUgYzY4ZjI3MTM0MmQwNjVkZjM5MTFiNjM1NTFmNTY4OTFlYjU1Y2M1ZCBweTNrCis4NDAzNiAzN2M0ODc5MGQwOGUwZGY5YmMxNGQ3ZmE4MzQzYTgyNTczMmIwYmYzIHB5M2sKKzg0MDM3IDY1NmZlNjI5MmY5ZjZlOWI3NmFhMTM3MjJmMjk1MGE1ZmRkNTI5ZGIgcmVsZWFzZTMxLW1haW50Cis4NDAzOCBiMWY5OTMzNWM2Nzc0ZTdiNWU0YzEwOWQ0ZDBhNDMwY2RjZWFlMmRhIHB5M2sKKzg0MDM5IGFmYWU5OTk3ODIyNjlmMzQ3ZWNjYjJlMzRkMWRlOWJkMjlkOWM5MDIgcHkzaworODQwNDAgMWU3ZGNmYzA0MDYxOWI4YWRhNWRhOWVhMjc1NWQyMGQ3NTZiMjNjNyByZWxlYXNlMzEtbWFpbnQKKzg0MDQzIDNhMWI1YjFjMDY5YjJhNDY1MzBhMzMzZmI1NjJmZTZkNTdkNDg1MjUgcHkzaworODQwNDQgOTVjZThkYTM3ZTc4N2ZlNWNiYTVmN2NkYzdmYzZkMTkyNjVjNzZlNiByZWxlYXNlMzEtbWFpbnQKKzg0MDQ1IGQ4ZDBhYmU2MWU4M2U3YTAwOGFiN2RhOGY1NTBhOGI4ZTdmMmExODUgcHkzaworODQwNDYgMDViYTg4MjkyZDRjNWQ5Y2M2N2MwZTdiYTY0MGMyNjA1ZjcwMTk4MiByZWxlYXNlMjctbWFpbnQKKzg0MDQ3IGQ2NjdiYTkzZjAyYWM4ODcxN2ExOWU3MzA4ODc0ODgyMThjNjZmNDQgcHkzaworODQwNDggMjAzYjE4ZDVjNjI2ZGZhOTYzOTA4MTNiYTc0MDJmOTU5MmI1YjFjMyByZWxlYXNlMjctbWFpbnQKKzg0MDQ5IDc1MzgwNDllZmRlODljYjE2YjVlZTNjNmUxMzRlMDg0NTg0NzM3YzMgcmVsZWFzZTMxLW1haW50Cis4NDA1MCAzNTM0MzUxYzgzMDAxNDFhMzM3Y2E2Y2Q0NWQ3NDU0OWYwOGUxMTkyIHB5M2sKKzg0MDUxIDhkYjViZDcwMWFiMzYwZmEwMmQxZDgzNjQ1YzBlZmUwNmQ3ODMzOTEgcmVsZWFzZTMxLW1haW50Cis4NDA1MiAwMTVmMDUxMjk3YzUyMzlhZDM5MzYwZDY2NDU2MmM2MGE1MDIyMDU0IHJlbGVhc2UyNy1tYWludAorODQwNTMgYzIzM2M4NGJmNDAzYjRjYjA0Y2Y4MmI1M2ZlOWMxMDg5OTIyZjlkOCByZWxlYXNlMjctbWFpbnQKKzg0MDU0IDhkMGFiNTU1YTE2MDBkY2QyNjc1YzFkMDU0M2RhNWY3ODA2N2M2MmMgcHkzaworODQwNTUgMjY2ZjNhODc3ZjY0YzhjZTY2NzIyOTFhOGUyMDFiZGE3YWZhNmJmZCByZWxlYXNlMjctbWFpbnQKKzg0MDU2IDZkZmM3ZGExNzkxNDM0NDAyY2MwYjhlYTA5Y2M2OTRiOWU5NDYwODQgcHkzaworODQwNTcgMmIzNmYyOWMzM2ZjNmU0N2EzZTE2NjZkY2FjZDU2MWQ0MTNhMDJkMiBweTNrCis4NDA1OCA5NGQxZGFkNTU5NTUzNDc1NWQ4MDA4MWFmNjliMTJhMDNjODBjOGY2IHB5M2sKKzg0MDU5IDY0ZmIwYmQ1NWQzY2RkNGJmYTMyYWYwYzQxZGUwNzIwYTAyNTc5NDcgcHkzaworODQwNjAgOGUwOTkxYmEyOWY0NTczZGFiMzA2OGY1NWViZDFjZjU3YzI4ZDdkNSBweTNrCis4NDA2MSBmODhjZGQ5YTQ0ZWE2YzE3ZTE5ZThmNTkyNTRiZGU0YmYyZmU5MDVhIHJlbGVhc2UzMS1tYWludAorODQwNjIgOGYyZjA1OGI3ZDg5MTIyYzI3ODc0YWZhMDY5YjA1Y2U3ZmFmZjlkNyBweTNrCis4NDA2MyA1NjdkMDA5MjBlZDYzNjZjYmJhNzRiMThlOThjNzY5YTRmZTcwMjIwIHB5M2sKKzg0MDY0IDdhMWFkYmVjMGRiODc2NTdiODIyYjliM2I1ZDBjODdhNzhhNGQ1MmIgcmVsZWFzZTMxLW1haW50Cis4NDA2NSBiOWRkNDY3ZDA1NzQxODkxNjFhMmIwNWY2ZmQxNDNkZjUxMjE3ZGM5IHB5M2sKKzg0MDY2IDk5NjYyZGI5ZGM0MTk4NmRhZDRhMDcxZWY2NjBhMTBhZjIxYWZlYWYgcmVsZWFzZTI3LW1haW50Cis4NDA2NyA4MjdhNjMzZTY4Y2QzZTQ0ZDU0YWU0OTUyYzhjNTdmMDRkZWM2YWM3IHB5M2sKKzg0MDY4IDZmYjEwMTNlMzA3OWFhMDNmMzE1OTA3MWMwYjgyYTM5YWNkNWI1YzMgcHkzaworODQwNjkgMDA4NzVjYzM0ZDE3NTEyN2E2MmY2NzA0YThlZTE0MzcwMTQ2MDE5MyBweTNrCis4NDA3MCA5MDI4ZjIzZGI3NGJlNDFlY2ZlNzc2MTEzMzE0YTNlN2FlMDAwOWY4IHB5M2sKKzg0MDcyIGU3ODNjN2Q1YWUzNjQ2NDhiYWNlYzJkMWViM2ZhNTFmYjEyNTNhMDAgcHkzaworODQwNzMgN2E1NDg0OGQ0OTI5NDhmNzg3MWRlNzlkOGNhMGZjN2U2YzBiZjFmOCByZWxlYXNlMzEtbWFpbnQKKzg0MDc0IDk4Njg2YjEwMzE0ZTk4ZDAxZjljODEwNjY1N2MyYzZkZGJmYjBlZGMgcHkzaworODQwNzUgZGU0NmU0MjUwNDMxYzZiNjRiMTliZjhlYTU0MTdhYWM2OWU0NzkyOCByZWxlYXNlMzEtbWFpbnQKKzg0MDc2IDIwZmRkMjRkZDlhYWYyNGQzYTRlM2MwZmFmNDI3MDc4ZWU2ZDlmNTUgcHkzaworODQwNzcgNzlkNTcyZWExN2RmNDMyZDIwMzVmMjljM2E0YzE2MDM4OWYwOTFlOCByZWxlYXNlMzEtbWFpbnQKKzg0MDc4IDZlOGY1ODc4ODQ5YzhlNmQzOWUwNzM2MWQ3MWEwZDA3MTBkMDQ0MmIgcHkzaworODQwNzkgZDE1ODgwOGRiZDVhMjY5OWE4NWMzYjVmMzY0MTE5Y2UzNzYxNTY3YyByZWxlYXNlMzEtbWFpbnQKKzg0MDgwIDY3M2M0ZThhMDFjNDdiYmY5NDU2NzJlZGE4OTRjYzI3NzQ4NjFlY2IgcHkzaworODQwODEgYjA5ZjkzZmUyOWZiZjgwNTcyYmIzZjRiZjk2NjE1OGQyOTRiZjg4NyBweTNrCis4NDA4MiBhOTI3YTU5Y2VlMDZjNTdjOGY5Mzk3NWQwOGUzNGFkYWU2ODZhYTg2IHB5M2sKKzg0MDgzIDE4Mzk4Zjk5ZmM1NWZkMjdmZGMzNjE0MzNkMjUxNGQwYjk0NzMyNDQgcHkzaworODQwODQgMTM0Mjc2ZWVkMjgwODhhNDI3MzNlMzcxYzExZmFiMGRjMGJiYjJjMSBweTNrCis4NDA4NSBlOWUwYTAwY2NmYjM1MWFhNGI3YzA0MWY1MTcyMzVjNjM2YjRlMGRlIHB5M2sKKzg0MDg2IDg1YWU0NDJmZjhhNWQzNTM1ODcyZTA1ZjRhZTZmYjg3MzNiODQ4YTIgcHkzaworODQwODcgOGNjOGNlN2MzOTA5NDExYTFiZDY2ZjllMjA3MzRkMzg4MzYyMjc1ZiByZWxlYXNlMjctbWFpbnQKKzg0MDg4IGYwOThlMWM4YmM1OTc2NjhlNDViNzIwY2NkNGYyY2U4ZjUyYjI5MmMgcHkzaworODQwODkgOTJmNzg3NzA4OGFmZTQ2OTc5Y2U5ZWIwZWMyMTk2MWViODBjNDE1NSBweTNrCis4NDA5MCBiZjE4ZGQ3MGMxODAzMDQ2MjY1ODJjZWEyMTgzYmZhYjhhYzE2MGRmIHJlbGVhc2UzMS1tYWludAorODQwOTEgYjRkODhmOWVmM2Y5OTIzNGQxNTMyYzQ2NjUxMTFkNzZkZDZlMWMwMyByZWxlYXNlMjctbWFpbnQKKzg0MDkyIDkxZDRjN2IxYmMyNWY4OTI5ZjEyZmVmNzkwNWJiNWViNDM1NWQxNGMgcHkzaworODQwOTMgNGIyM2UyNjljNGQ5OWE2ODRjNjA5NmE2ODdmNmE1MjYwMzNmNzgzOSByZWxlYXNlMjYtbWFpbnQKKzg0MDk0IDVkOWJkZjVhYTA3YmZkNDhlNzhiMzdiOTJkYTRmNGRkNTM0NWU0NTUgcHkzaworODQwOTUgZmM4OWI4ZGVmZjFlMWNjZDVkYmQ4YTI5M2MzZWY4ZDE5MDc4NjYzNCBweTNrCis4NDA5NiBhYWUzZTBjNTEwZmZlNTA2ODFlZGE3YjFjNTQ5NjRhNzg0MDBmYmYzIHB5M2sKKzg0MDk3IGQ1MmY5YzhmZTVkNjA5YjQ1Njc0ZWVmZDJiMGI2OTEwYzZkNWI1YWMgcHkzaworODQwOTggNzE1YzQ0YjYwZWYzNzM2ZTQzYWY0NjY5ZTUzZDc4ZGQyYTk5OWI0NiBweTNrCis4NDA5OSBhMjMzYmU2OGQzMmVhOGM5ZjMwMjA0N2ZjZjc3ZGNiNWNmZTBkOTM5IHB5M2sKKzg0MTAwIGU0NDMyZWZjODhiOWY4YTI0MTY1MmI4NTQ2MmY2MmYwYTI2NTUzYjIgcmVsZWFzZTI3LW1haW50Cis4NDEwMSA5MDdmNzNlMjI3YTZiOWUxZmU4MDQwZmNmMGM2MjhiZjYxODY4YjExIHJlbGVhc2UyNi1tYWludAorODQxMDIgODk5NGQ4ZDYxMGQ0NDk5ZTgwNTBiMzMwNzc0NzcxZjUyMzliMzQ3MyByZWxlYXNlMjctbWFpbnQKKzg0MTAzIDlmZTc0ZWIwMjhhYjAxZjljMzAxYmYwMjc0NzFmMjU3ZGQ5NTdhOWYgcmVsZWFzZTI2LW1haW50Cis4NDEwNCBkZWUzMGM0NjczOWViZDFjODlmYTY2MWU3NWRiZTMzZGRiYjQyYzY3IHJlbGVhc2UzMS1tYWludAorODQxMDUgZGMzMmE3ZDlkYTgwMjlmYzQ3OTMxOWQ4NThmYTY1NWNkNDMyZjlmZSBweTNrCis4NDEwNiBlM2RmMzQ1NDRkYjkwODlmMzc2YjE5MDZlOGM0ZjgyODMxZTcyM2FjIHB5M2sKKzg0MTA3IDQwODVjYzU2MGU5ZWE1MzI4ODcyZDJmNGE0N2ViNGVlODIxZmRkNzMgcmVsZWFzZTMxLW1haW50Cis4NDEwOCA3NTZmOGIzOTgyMzBiM2E5ZGU2Y2VkY2M5ZWY4ZDVjNzdjNjc0MjI3IHJlbGVhc2UyNy1tYWludAorODQxMDkgYmUwYWExZDEzODRjZjYyYTg2Zjg1NTUwOTE5NWU5ZGYxYmY5MmI2OSBweTNrCis4NDExMCAxZDgzZDkyZWZmZTgxMTA0YWE4MGI4ZTZjOTkwNmM2NDA0MzliMWRjIHJlbGVhc2UyNy1tYWludAorODQxMTEgYjA4OWVkNTc2YjEzMjViNWNmY2JmZjQ1MzQzNTk2M2YwZDVhN2U1MCBweTNrCis4NDExMiA3N2IwNTJjNjRlYmJjMmUyNzgxYTM1NTYwMDQxZGU0ZmU3NGViZmMxIHB5M2sKKzg0MTEzIDQ3MjUwODJjMjgyZjAzZmU1YWZlOWQxYTk4ZDQ1YjA5Y2E5ZDhiZTAgcHkzaworODQxMTQgMTdkNWIwMzBlODc3OTkwMmQ4MmY3NmVkMzJhNjlkOGQ1ZTcxMTMxYSByZWxlYXNlMjYtbWFpbnQKKzg0MTE1IDRkZjBkMmExM2FhMTRmMTNmYmZhMmE4ZGRhZTljYzEwMjQxZTdmMDkgcmVsZWFzZTMxLW1haW50Cis4NDExNiA0MWM2MDg3ZjJlNmRhZThmMTQyOTNmOGVhZWUyM2M1MDVlZTFmZjhmIHJlbGVhc2UyNi1tYWludAorODQxMTcgODA1OWU2YjYyNDYzNjA4ZjczZmUwODdiNWJjNWFiZmRmZDBmNGYwZiByZWxlYXNlMjYtbWFpbnQKKzg0MTE4IGUxODlkYzhmZDY2MTU0ZWY0NmQ5Y2QyMjU4NGQ1NjY2OWI1NDRjYTMgcmVsZWFzZTI2LW1haW50Cis4NDExOSA5NTJkNjUwYTBhZmQ3NjljZDYyZmU0OWRjMGVhZWJkYTI3YmQ2MTdiIHJlbGVhc2UyNi1tYWludAorODQxMjAgYjY2MmEzOWYwODIzZWE5NGYzNWU5NTM4ZTQ1Y2MwMjcwZGFlOGM0ZSBweTNrCis4NDEyMSAwYzhiZmQyODVlZjk0MjgxNzBmMjdkOWQyMThhOWRkNTY4OGJhYzlkIHB5M2sKKzg0MTIyIDA1YzRiYWE4NzU0OWMzZDVlMmVkMGY5NDRmMTY3NjVhYzkxZDgxZWQgcHkzaworODQxMjMgMDQ5OGQ2OGRhZDVkMzc5MWMyZGQ0NmEwNTk3ZTJjZTZkYWM0OWMzNyBweTNrCis4NDEyNCBiOTEwNTllNTlkMGRjMjI1M2U4Yjk3YWQ4ZTVmMjNlZjY0MDhkMDYzIHB5M2sKKzg0MTI1IDc0NWJkNjM5ZWQ0ZGNkNmFjYzhiYWEyZGRmMDMyMzY1ZjI0YWU0YWQgcHkzaworODQxMjYgMGFkYTdjZTI0ZGUyY2Q0OTE3YThiOGM2ZjZjM2E3YjgwM2Q0NDZhOSBweTNrCis4NDEyNyA5N2Y0N2VhYzA5ZGI0YWRlODdhYWViY2IxNDNkOTIxOGQ0MjExMjZhIHJlbGVhc2UyNy1tYWludAorODQxMjggNjBhNDc3N2E3M2EwNjJmZjU3N2JhOGRiNjJkNDgxZWU4MDhkNmM0NiByZWxlYXNlMzEtbWFpbnQKKzg0MTI5IDI3Njc4ZmYwY2RhMTQ0ZDFhMDM5MGRhYTMyMzA4ZjhmMDBmZmZlZTQgcHkzaworODQxMzAgNmNiNzc2ZTU3Mjk2YmEzZjFjNzU0ZTU3NWY4NWEzYjhkOTBkNWI3NyBweTNrCis4NDEzMSA0NTQ4ZjRhYjE5Y2VlM2M0M2ZmYTlkZWMwMTFiMDcwOWNlY2RlNTBkIHB5M2sKKzg0MTMyIDc3YmY1ODI5NmM4NzA1OWY2YzQ2NDllNjIyODAzM2Y0ZjlhNTVkMTUgcHkzaworODQxMzMgYjJhOWE1OWMyZDU3MmJmYTI0OTA4OGM3NDU2NzIxMWU0Y2NiYTQ5ZCBweTNrCis4NDEzNCBhMDQ5ZTIyMGYwMzA5NjA2ZDg0NzA0MDZiNjA3MzRjNjM5YjBlNjkxIHB5M2sKKzg0MTM1IDZjYzY1NTQxNmQ2MzliZmUyODI2MzNiNTBkZGZlZDgwMDFkMjA3MGUgcmVsZWFzZTI3LW1haW50Cis4NDEzNiAyNGUwNjgzM2I1YjNiNzI3ZGJiMDAwNmNiNTNiYzNkMGVkZDM1ZjMxIHJlbGVhc2UzMS1tYWludAorODQxMzcgOWRkNzYzNDIzYTU2NmRkYzY4YTJkMDhlZDgwYzVmOTI2ZTk1ZDA4YiBweTNrCis4NDEzOCA1ZmNlMDFhNTFhYTVlNTE1NDU5YzFmYmNjMzJmYjUxZTM3NWIzNTlmIHB5M2sKKzg0MTM5IDRiYzlkZmQ5NWM4MDc1NmI2N2ExZjVhZjFhODk5OGFhMjM4YmEzZjUgcHkzaworODQxNDAgMjEyYTE2ZjkwNmE2NzI1YzgxODliNmI2YTk4NWU5YWRkYWEzZDBkYSBweTNrCis4NDE0MSA2ZmQ5NmMwMWI0MzcxMjZkOTA2NjMwOWI5YzQ0NTcxYTM1NzRmNTFmIHB5M2sKKzg0MTQyIDk5MGE3NjZmZjk4MzM1NjBkNzA4ZjIzZmZkNjRkOTAxNmYyYWIxM2QgcHkzaworODQxNDMgY2EyYTg1OWU5YmY2MzUxMGMwZWMzZThjN2E5MDc2MWY4MWRmYjViMyBweTNrCis4NDE0NCBjYWVlYmY3NDk3YzM4ZDU3ZDczNTE4OTQ3MTQ3M2Q5N2EzMmZjZTg3IHB5M2sKKzg0MTQ1IDI3ZTE3NjE2OTMzZWY4OWYyYzExOGM3ZWE4M2JmZmUzN2U1NmFjOTkgcHkzaworODQxNDYgZWUzZGNkZmUyZjg3MzY1ZjViMDMzOTZhNWNhZTMzNWM2ZmM4MmQyNCBweTNrCis4NDE0NyA3OTI1YmJkZmM4MDVmMDEzNzczMTU1MTk4MWEyMjFlMzM5MDUyZjY4IHB5M2sKKzg0MTQ4IDZlZDM4MTM1NWQwZDQ0OGEwMzFkNDZiMmVmNTE5MWVkMTAzZGExMGMgcmVsZWFzZTI3LW1haW50Cis4NDE0OSAzNWU2N2FmODA2ZTUwM2Q0MDZkMTg2ZGRmMjYxZDdjMzdkYzdhZjQxIHB5M2sKKzg0MTUwIGI2MjRjNzQxN2FkNGU2ZTkxYmJjMzliNzAzMWMzZWUwOWEyYWY0MDMgcHkzaworODQxNTEgMmE0Y2VlYmRmY2ZiMjU4ZWQ2ZWRhZmI1YWRkMzYzNzhkOTA3MDBkMCByZWxlYXNlMzEtbWFpbnQKKzg0MTUyIGZlYmFlYTFhNjg3MWVmZmQ4Mzc5NDE4MGZlMzI2Nzk3MzNlYWE5N2QgcmVsZWFzZTI2LW1haW50Cis4NDE1MyAzOWUxZDM4MjZmNGVhMGVmMzkxY2NiMTlkM2ZkNGY4NGU5NGI5MDE0IHB5M2sKKzg0MTU0IGYzZDU4MzdlMzFiNzg2YzNjNGIzNjlhOWUzOTAxYmE5NWI4OTFkMWMgcHkzaworODQxNTUgM2ZhMGE5NTUzNDAyNGQ4OTYwOTgwYWQwNzk5OGZjYTU2NjgzYmNiZSBweTNrCis4NDE1NiBmZGE5ZDFmZTdmMDZiNzZkMmI0NTY1NGYwNDRhZjM5NTQ4YTFiZTA0IHB5M2sKKzg0MTU3IDUxYTc3ODQ2MjliYmFkODRkYThjMmU3YjMzOWQ0MmRiZTRjNjA5MTEgcHkzaworODQxNTggMzVjNTNlN2UyMjgwZGM3YTk4MDZjNjBiODc1Y2JkNDhlYjI0MjE4YiByZWxlYXNlMzEtbWFpbnQKKzg0MTU5IDlhNTQ5NDBhMzMyZWU2OTE3N2VlZjc5NTlmODI1MmMxMjgxMjg0MGMgcHkzaworODQxNjAgZjc4MzI3ODc5MGNhNjM5MzkyMzNhMTJiNTQ2ZGEwY2NmMDU4MjdhOCByZWxlYXNlMzEtbWFpbnQKKzg0MTYxIGEwMTk5MmUyMTljMDkwMzM5NzZiNjhiYjgzYjQ4ZmNhMmE3MWZhMmQgcmVsZWFzZTMxLW1haW50Cis4NDE2MiAyYjMyMzEyZGNhYjE1MDZhZTllYmY3ODVjYTY1YWViNGQyZWNjZWQ1IHB5M2sKKzg0MTYzIDY4NmIxOGJmZmI4NjRmYWU4M2IzYWRlODczNDY1MTIyNzEzNThhMzcgcHkzaworODQxNjQgZmM3OTRhZGQ1NTlkNWFhYjc0NGNkN2Q2NDRkMjQ0MzYzMWEwMGU1MCBweTNrCis4NDE2NSA0OTQzMDc4YzkwYzlhZDQ4NWYyN2RlMGVlNmVkNTFhMWEyOWFkYzUzIHB5M2sKKzg0MTY2IDcxNDAwY2UwYzcyMWQxNTcwOGUwNDVmNmUxNjdhZDA2N2EzOGMyYzggcHkzaworODQxNjcgYmRkNzZhZDNiYzc2YjAxMTYwMGFiNjNhZTg3YjZjN2Y5NTEyOGE2MiBweTNrCis4NDE2OCBlZTc2NWE2N2MwYjExYjE5NTQyYzU2MzVkNzEzMWQ5MTk5YTJjNzljIHB5M2sKKzg0MTcwIDBlZDc2YzdiOTg0NzRiZDY0NWVjM2IxNDg5YzYzOWQ4YTcwYTdlMGEgcHkzaworODQxNzEgYThkOGRlMjNjYjc3ODVjNDA3MmFkOTFjZTUxMDYyYjBjODc0YmQ2ZiBweTNrCis4NDE3MiBjNzA5MzUxNDU4YTY2YWY2OTk3ZWQ4NTQwMmFmNDUxMjdlNjBjZDBjIHB5M2sKKzg0MTczIGMxMzBmNDMyZjI0YTAzOWJmNmJlZmZkZTgxMzBjY2RiMzAzOTcwMTEgcHkzaworODQxNzQgY2E1NTc5NDhhNWNmNjdiNTIwNjQ0NTc2MzJkOGQzOWI3MTQwMmRjYiByZWxlYXNlMjctbWFpbnQKKzg0MTc1IDZjZGE1ZmQwYTNjZjIzZmMzOTVmYWRhMGFjZDAzZmM5M2M2ZWE5YjEgcmVsZWFzZTMxLW1haW50Cis4NDE3NiBiODcxMjQ0ZDdmNzk3ODkwZjcwZDU0YzBmYmIyYjQ0NTMxYTc4M2FkIHB5M2sKKzg0MTc3IDhmOTdjNjRiMjMzMzYyMTYwYzRiNzM3NTg0OGMzY2VlZjViYWMxNTAgcHkzaworODQxNzggNzQ5YzIyZmZhMzZlYzc1NzdiZDgxMzVjODQxMzNhOGEzYWRiNTg1YiByZWxlYXNlMjctbWFpbnQKKzg0MTc5IGMzNzA4NjZmMzBhNzVhYTlmYWM2MjYzNzI5Zjg0NDlmYzQ3NWQ0NzYgcHkzaworODQxODAgZGY5NjEwNjRmODExY2ZjZDE5ZDk0M2M3MzQwNGU3NDgxN2ZhYmVlNiBweTNrCis4NDE4MSAyM2E1OThjMDE5MTFmMjA0MjA1YTRlZDcxNDA2YzJlMjc1ZWIwNTE3IHB5M2sKKzg0MTgyIDY4N2NjODU0Y2I0YmZkZjliNDk4YTMwNTNkZDVlMjU5NWViN2FmNjggcHkzaworODQxODMgZTY3ZTA3Y2I1MTcxY2Q4OTUyOTgyOGFiNTczZWI1OTgzNDRiZDFhOSBweTNrCis4NDE4NCAwNWEzZGZkYTA0ZmZjNmEzMjVmODk2MzEzOGZlNWExODFjOWU3ZThiIHB5M2sKKzg0MTg1IDc5MGQ0ODc4ODg3NGM1MTgxMjI0OGE5NWExZWUxZTc1N2Q3N2IyNWYgcHkzaworODQxODYgODBmOThhZjE3ZGVmODgzZGE0MzVjNzdlYmU4NDQwNzkzZjMxMjI0MyBweTNrCis4NDE4NyAyMjhlNmYwMDFhZTEzYjE0MTFkOTFiZjE1YzkyNGVjNGQ3ZTY5ZTcxIHB5M2sKKzg0MTg4IDlhZGVhOTQ1NTc1MzllNGNjNWM2YmRmYjY2MzdhZWE1YTJlMDRhZTEgcHkzaworODQxODkgZWEwZGVjZDJhY2ZiNjJkN2IwMGQ5MTc1MzdkNDI3NmI2NzYwYWQwZSBweTNrCis4NDE5MCA0ZjgzMWQ0NTEyNWYwZTU5MWI2N2MyZTJmOWVmMDg3OTJhZTkxNjhhIHJlbGVhc2UzMS1tYWludAorODQxOTEgNjVmZTA1OWI5N2JmMzM4OTI4YjJlZjk4ZmFlYTgwMDQ5MjM2N2U2NyBweTNrCis4NDE5MiBhYzEyZDk0OGE4OTU3NjQyMmU4MTZlZGFmYWZjMWE1Y2Y5YWNiNDFhIHJlbGVhc2UyNy1tYWludAorODQxOTMgYTllNzhmNmY2OTRlNjVhOThhNjI3OWM1NzlhNzQzMGYzMDc0M2EyYyBweTNrCis4NDE5NCAyY2IyNjYzZTMzNjg5MGY1OGU2NzMyMGRmODViNGE3YWQxZGE1MDNlIHB5M2sKKzg0MTk1IGFiODRhMGM3ZDYzYzYwZjZjZDU0NzRlZjFlYTRjZWE0Yjg5MWY5MTggcHkzaworODQxOTYgZjY3MjNkNTVkZTRiNmNlNzExMThmOTQyNTJlNjkwODAxYzUxZmFjMCByZWxlYXNlMzEtbWFpbnQKKzg0MTk3IGQwZTlmZWJmYTAwYWM3MWFmMDk2OGY5ZjI0MDhiMTBhZDJkOWNmOTggcmVsZWFzZTMxLW1haW50Cis4NDE5OCA4NTc4MDYxNDdlZTczNDFkNmI2MzRkZDdkYTA5ZDM3NjBlMjRmYTdlIHJlbGVhc2UyNy1tYWludAorODQxOTkgZjI0MzA1ODU5NjNjNTg0NWVlMjExZjM0YmFiODdmNmQwOGIwMDE4OCBweTNrCis4NDIwMCBmODcxMmEwN2IwYjExMzIxNmMxOGZiZDM4ZjlhMjkwNDVjMDM2NzNmIHB5M2sKKzg0MjAxIDA4MmVhZmEwODgwMjcyMWZhNzM3MjViOGRmNzUxY2YxODk2ODU3YWQgcHkzaworODQyMDIgZjY1YmJmYmI4MjNmZmMxYWY0MGVkMWZlMzBhNzcxNjA0NGQ2MTNmMSBweTNrCis4NDIwMyAzOGNlOTQ3YzI4ZmI0MDE2MTNiMThkNzQyOTQ4NDU0NmVjYjdmMTY5IHB5M2sKKzg0MjA0IDkxNTVkYjY1OWMyMGZmZjFmNzFkYjc3YjU0YjA3Zjg4MzE5NDE1ZDAgcHkzaworODQyMDUgYTRlYzdhNmE2ODk1ZTRlNDZiODg0Yzc1ZDg1ODc1MDAxZDc4MjA4NCBweTNrCis4NDIwNiA1ZDNjYTFjMDE4YWU0MzQxMGUwM2QxMjBhODVjYmY1YmRlMTAzNmZjIHB5M2sKKzg0MjA3IDA1MmY0MmQwMjIyZmQ5ZjU5MDM2N2NkZDZkZDc5NTgyZThiYjNhNjYgcmVsZWFzZTI3LW1haW50Cis4NDIwOCA2NjE0M2MyMzY4NGRhM2JmNTRmNGM4OWNlZmRkZThmZjBkZDNiMTA4IHB5M2sKKzg0MjA5IDVmZDI2ZjQ1MjYwMDBhZjNlYjk1NGIzY2NiNDBhYTM5ZTY0NjY4ZTcgcHkzaworODQyMTAgYWY0YTkxYzk0MDcxN2I5MTZlNDY5NDY5Y2UwZDdhYTE1NzU0NGQwOSBweTNrCis4NDIxMSA4OGU4NDNjZTExNjBlODIwYTM0ZjNlMzA5YzY5ZmZkNjQ5YmI2MjhiIHJlbGVhc2UzMS1tYWludAorODQyMTIgYmE2ZmRlOGEzYTk5N2Q1NmRhZTAyYjc3NWI4MGUwNGJlMDk4MjhiMSByZWxlYXNlMjctbWFpbnQKKzg0MjEyIDhjNmM3MmI2ZjFlZDBhNjEwNTU5YjBmOGM4M2M2YjNiYzM3NzU2ZmYgcHkzaworODQyMTMgNTRjOWM4NmFkMTA0YjI3YWE0NjY0YmNhOThkYTU1OTIyYTlkNWU1OSByZWxlYXNlMzEtbWFpbnQKKzg0MjE0IGMxOGVlYjk2OTEwMmYyNGFkOTZhZGUzMTZiMTRiYmZkYzYzYTM0NjQgcHkzaworODQyMTUgMzhjZWVhZTBkMWYwNzk2ZjAyMTYwZjAwMzZmMDNkNzU1Y2Q2MDc4ZSByZWxlYXNlMzEtbWFpbnQKKzg0MjE3IDU0OWE0MGNhMjA3NGQ3MjM4ODU0ZDMyOTAyOTZjOWEwMzA1OWFhOTMgcmVsZWFzZTI3LW1haW50Cis4NDIxOCAzNTI4YmE3YjQzMDVjYTc1YmY3YTA2YzFjZDMxYTE2YTVmMTRjMzQ5IHB5M2sKKzg0MjE5IGYyYzdlNGIxZDgwNDVjMTIzNTE4YjdkNmFmZGQzMDYxNDMxNDY1YmQgcmVsZWFzZTMxLW1haW50Cis4NDIyMCAzOWRhYzBhODg5NmEyNzg2YmExNWNlNDQ0Y2IyNzQ4NTBiMzc0OThiIHJlbGVhc2UzMS1tYWludAorODQyMjEgMzBhMGRjZjVhM2Q4YTU4MWI1ZWUxMjQ4NDcyNTA1OGY5NjU4ODNmZiBweTNrCis4NDIyMiA1YTI5OWQ3ODU5ODc4MzYxNjdlMjA0NmVlODI5YTIwMTA0YjFhOGQ1IHB5M2sKKzg0MjIzIDg3ZDQ2OGFlM2MzYzJjZjcxNGU3YjhhMTg1YTRlNTVhZTc1NjVkYmEgcHkzaworODQyMjQgZDRlMjBmOWYxMjdhOWY0ZmRlNjlkZGI0NWM2YTc2NDc5Yjk4ZmQxOSBweTNrCis4NDIyNSBhYjYzYzQ1NzhiMWJkMTQ0MTRiZWZjODExMDRjMzk3NGM2ZGY0N2U0IHB5M2sKKzg0MjI2IDY1Y2U5OTIzNjg5Nzg2NTg0NjYzMTFjMWZhZDQ2YTIxYTlmYmIzMDQgcHkzaworODQyMjcgZjNkYjUwNGNkZmIxZjNmNTUzODc5MWE1NGViNzgwNDNjOGNhMTdkOSBweTNrCis4NDIyOCA4Mzk3ZjJlMDA3ZWJjMjRlNGVhYTRkNzFiZDY0ZjIzNTdlM2YzZjg2IHB5M2sKKzg0MjI5IGZhN2QxZDVkMmFmYjYwMTVhOTczMGFmZmYzOWZiN2FkYmZhN2YzMzAgcHkzaworODQyMzAgN2QyYmQ4OTU1ZWRiODNiMDk0ODkyOGU4YjRkM2Y2NTM1M2NhZjk5YyByZWxlYXNlMjctbWFpbnQKKzg0MjMxIDBjM2Q3NjNmMzhmMTQyYTc4NWVhYmU3NzA4YmQ4ODU5YTNiZjA3NDUgcHkzaworODQyMzIgOWQ1OTE2YWI2MGUwZjMyNDExMTdjOWViMWMxMjA5MmY0ZDM0MTkzMiByZWxlYXNlMjctbWFpbnQKKzg0MjMzIDk5NjYwNGNkZTQxZjVmZTgwY2Q2ODRlYzkxY2ZkMzc4MWU5OTA5MGMgcmVsZWFzZTI3LW1haW50Cis4NDIzNCBhYmNmOTU3N2Q1ZGIzZmM1NTRkMDQ5NzNjNTJkZTBlMjFmOTM5OTQ3IHB5M2sKKzg0MjM1IDFlZmU4MjNlMWYxODg1ZTdkMGQxN2JiYzQyYTRjZjhhZWRlYjlhMzAgcmVsZWFzZTI3LW1haW50Cis4NDIzNiBjNGY1ZDk4ZWU4N2IwM2IxZThmNTcyOGE2OTA0YmViYWY4NDk5YmZhIHB5M2sKKzg0MjM3IDQ5N2E3ZTI4NGU0ZGM4ZTAwMzQxZGEwY2U2ZjYwZTU2ZDA4YmU1YzYgcHkzaworODQyMzggMmYzYWM4MzRiNTM2MzRlZWJhNTgwOGY1MGE1NDNkMDkwYzYwZGI1ZiBweTNrCis4NDIzOSBiMThjODBjNjg3NTQwMGJmYTlhYzUzMTRiMTQ5MTI1ZWRmYmM1NWZjIHB5M2sKKzg0MjQwIGRmZDAyMjk3NDhlZmQ0YzFhNjViYWQ5MWI3OWFlNmVkYmE0MDhkYWMgcmVsZWFzZTI3LW1haW50Cis4NDI0MSA5N2E1ZmIxYzk2Y2ViM2UxODVlNDg0MjQ3Yjk1MDFlNDkxOWQ3N2RlIHJlbGVhc2UzMS1tYWludAorODQyNDIgOGUxODRhOGJiMDBlNjQ5NzQxYTI0NjNiODkwN2VjNjQ0YjNkZmNmOSBweTNrCis4NDI0MyA0NjFhMjBhYjQzM2ZlZTRiN2I3YzBjNjI1ZjE4OWVjYWY1MGQ2ZTQ4IHB5M2sKKzg0MjQ0IDMwMmZlMjVjZDZiMTE4OGYyYmJkNWYwNDhkNWRiM2Y4N2UwMTc5NTcgcHkzaworODQyNDUgMTBkZjkzODcyY2E3MzA0MjAyNzVhYjViNzgzODg1OTcxY2IxZGVjYiByZWxlYXNlMjctbWFpbnQKKzg0MjQ2IGY1ZGVlMzBjY2QzOWZkNTBkODQ5NGQ5MDQ1NjhhNWI0OTMwOGQ5ZDAgcmVsZWFzZTMxLW1haW50Cis4NDI0NyBmOWFiOWM5MmRiOGRiMjRkZTZjNWU1ZTk0MzVhMTA0MWNmN2UyZjQ2IHB5M2sKKzg0MjQ4IGFhY2IxNTI5MWQ1NDYxMGNlMzFiNzVmMDg0ZWYyOThiMDJlMmM5NzUgcHkzaworODQyNDkgYTM0YmUwM2Y3MDlhMzQ5YjYxMWYyM2I5ZDZkY2Q1YTFhMDM2NzY0YyBweTNrCis4NDI1MiAwMWIwYTZjYjEzZDQzYzllYTM1ZjUyZTBjNGU1NDkzNTExM2M4NTJjIHB5M2sKKzg0MjUzIDZlMGZlMWI4M2ZmMDk1NmQ1YWM1NjU0MDk3NGFiZTNkODRhOGU5YWUgcmVsZWFzZTMxLW1haW50Cis4NDI1NCA5YzRlODU3ODVkNGU0YzVlOTQwNjhjZDJlNjg4NDJkY2VmOGYzNGU4IHJlbGVhc2UyNy1tYWludAorODQyNTUgMDEzMGU1NzRmNWJlNWEzODcyN2QzNGVkMGMwYjhlNTMzZjAxMzkxNCByZWxlYXNlMjctbWFpbnQKKzg0MjU2IDdmZjNmYTQyOTcyMTgzYTViYTIyZDQ1YmE5OTkwNGQ0YWVjOTU4ZWQgcHkzaworODQyNTcgYTVhNTg3MjA1MGUzMDM4NGRmODY3OTk3ODM3YTE2Mzg1ZjdkYTUzNSBweTNrCis4NDI1OCBiMDE3YTRlZjc2OTRmYWVhOTNjZDRjMGIwNTI4ZmVlMGM3MTI1N2JjIHB5M2sKKzg0MjU5IDRhY2ZhM2ZlNmE1ZWI1MmMxNTJiZWFlZGNjNmQ3ZDYyZjNlOWNkMTUgcmVsZWFzZTI3LW1haW50Cis4NDI1OSBlNDljNTNmNzUzNWMwOGQ1MTc2YTgxODNmODA5YWU2NzhjNGNhOGVjIHB5M2sKKzg0MjYwIGU4MTkwNmU5MmY5OWFlZGU2NjQwYTY1MGZjNzQ1NmRmODcxZWM3MjkgcmVsZWFzZTI3LW1haW50Cis4NDI2MCA2YWI2NTY3NjViY2EzODdmNzVkMjZhYjc0ZjhmYWZiYmU5MGIxZjRhIHB5M2sKKzg0MjYxIDM1MzA0YzJmZTllMGJiODgxMzFhMDViYTMwYTY4ZDA4Mzk5NTJjNDUgcHkzaworODQyNjIgZTkxODQ5Y2QwNjY4OWRkZTMxNzVmMTJiZDAyZjliNDM2YzU0ODRmOSBweTNrCis4NDI2MyBmMmU5MWUwOGMxYzU3ZjBhZTAzYWZmODVkYjgzNDdmMGMyMGQ4ZDMxIHB5M2sKKzg0MjY0IDNhY2Q4NmY4YzU1MjQ3M2FiOWI2MjZhOTk0MTRjYjRiMjBiMTJiMDMgcHkzaworODQyNjUgMWM4ODM0ZjNjZGI5NjM4NzdjNzI0NDFhYzkyNzk0MTE4NGM3NWZiMyBweTNrCis4NDI2NiA1OTQ4ZTQ4ZmJkODgwY2QxNGVlNGQ5ODQyMGFjZTkzZDdkYzI5ZGRmIHJlbGVhc2UyNy1tYWludAorODQyNjcgOGY1ZmFmNTY5NmU3YWYyZTExODEzN2UxNWI0YjY1OWNiYzk4ODM4NCBweTNrCis4NDI2OCAwMmUyZDllYWI3MzAxOTljNWJhYTk0NjE5MDJiMzAyNmRjNjZmNWEwIHB5M2sKKzg0MjY5IDcxNmQzZDEwMmMwYWExMjZkNTkxYTU4ZDI5NGUxYzBlZTkyM2FhNTEgcmVsZWFzZTMxLW1haW50Cis4NDI3MCBhNDEyY2VlZWYwZjFlZWJhYzdmZTdlZWE3ZDhkNWM1ZGE4ZGI4NWMyIHB5M2sKKzg0MjcxIGNmMzk5ZGUxMmI1NDI3ZDdhYmZiZDk0NGExY2NiM2NkNWU1ZmRkNDggcHkzaworODQyNzcgN2UxZTM0M2I3MDhiMTgyZjc4NzVjNDcwMzc1M2ZjZDRiMzZjMjU4MyBweTNrCis4NDI3OCBhYTI1Yjg2NzdjYzNmNzlkNGI1MzU0ZjhiY2FjZDFjYTEwZmZkODg3IHB5M2sKKzg0Mjc5IDUxYTI0YTkxNTQwODU5M2I4OWZkMTBjZmEzMjlhNjJiMzU0Y2NiNjcgcHkzaworODQyODAgYjUzNWNkZTkzMjczODNmODFkZjAyZWViMGQwOGJmNzE2YmRjNWE4YSByZWxlYXNlMjctbWFpbnQKKzg0MjgxIDFhMDg1OTYyMzg4MmY3MWRlZWYxNmY1OGZkZjAwNDYyMTc2OGUwODEgcHkzaworODQyODIgNDJjNzBmMTdjMmZlZGU2MTE2MTA4NTY4YTc1YjBlZWMwOGIzYzczYSByZWxlYXNlMjctbWFpbnQKKzg0MjgyIDlkNGRjNTg1NWM1MTViODA0NTI5M2YxYjQwYTZkZGM5Y2IxMTYzMDEgcHkzaworODQyODMgYmE1MzZhYzdhYjRlNGRiMDI4OTk2ZWJlOWJjYzUxMjE1OWQyZGJkYSBweTNrCis4NDI4NCBlNzliYTU1NTkyMmExNjg3YmI3MTlkYmY3ZGI5Mjg3OGNjODEyZDI5IHB5M2sKKzg0Mjg1IDc2ZTljZjg0NTY3NjAyYjkwYTdjNGE3NzA3NjU4ZmViMjQ0NGVhZWIgcmVsZWFzZTMxLW1haW50Cis4NDI4NiBiOTVlYzE3MWY1MDM2NDNjN2M5NmQyY2JhMjE0ZWMwYTBiY2E4ZGQ2IHJlbGVhc2UyNy1tYWludAorODQyODcgZWZhYTQ3ZTkyYThlODdlMDMzMzMyODY5NTgyZWU0OWYwYWYyZTMyYiBweTNrCis4NDI4OCA3ODk1YzQ1NTNiZjU0NDkwNjdjNTBmZWZkODkwNGM3NzgyY2UxMTdiIHB5M2sKKzg0Mjg5IDkwYmYyMjQzNTUyZDMzNDNhNjU4MzZmNWM2NTdjNDkyZjcyNzUyYmQgcHkzaworODQyOTAgZTJiY2UxYzU5NmJlYjNhOWVjZTdhYTNmOGE3ZjFiN2I0NzAwY2I3NCByZWxlYXNlMzEtbWFpbnQKKzg0MjkxIGU3MTZhYTIwOTRmYThkOTZjYjM3NWQwNjQzNjFhNjllNTNiYzRlZDYgcmVsZWFzZTI3LW1haW50Cis4NDI5MiA5Zjg3NzFlMDkwNTI3N2Y4YjNjMjc5OTExM2EwNjJmZGE0MTY0OTk1IHJlbGVhc2UyNi1tYWludAorODQyOTMgNmRiNzgzNWIwYTk1YWZjMWQ0ZjBhZTlmMTczOTQ4Yjg1NGU3YmEwZSByZWxlYXNlMjYtbWFpbnQKKzg0Mjk0IDJkZTlkNDQ1NzA4MjEyM2Q5MDA5YTdmMjVkMGQ5NGNjZjY1YjcyNTMgcHkzaworODQyOTUgYzFhODNmMmM3MDg3NTdkZGQyY2YyYjIxYWIwOWE1MTA1YWQwZmVjOSBweTNrCis4NDI5NiBkNGExZjkxNDJmN2E5ZDQ3N2VhNzg0MmZlZDBhYzYzZjgyMWY0YTgyIHJlbGVhc2UyNy1tYWludAorODQyOTggZGIyOTM2MGNhZDBmYWMzYTY0OTkzYjk4ODZmMTRkZjdhMTdhMmJjMiByZWxlYXNlMjYtbWFpbnQKKzg0Mjk5IDRiMTI5NmIyNjJjYTRiZWFmYzVhYzU3Y2VjODI0OTc3YzY0NDg4NTYgcHkzaworODQzMDAgZjkxZjI5ZWY0ZWU3YjVmNWVjZmJjOTA1ZTI3ZDlhZmE5YTAwOTk3ZCByZWxlYXNlMjctbWFpbnQKKzg0MzAxIGMxYzRmOGY4NTA3MGRhNGQ3YjY5YWUzNmU5ZTAxMjFjOTA1ZTE1ZmUgcHkzaworODQzMDIgOGZlMzZlMmI4ZWQxM2MyMjIyZmQxZDViN2Q3ZTlkYTA5ZWExOThhMSByZWxlYXNlMzEtbWFpbnQKKzg0MzAzIDgwYTQ4MTRlY2Y1ZDY1MjFkNjFjZTYwMGI2YWE1YjZkNjk4ZGExYzIgcHkzaworODQzMDQgYmU3NmIzN2ZlN2ZkODQwOWQzZDJmMjdmMjgyZTliNDFlYzNkODFmYyBweTNrCis4NDMwNSA2MTgwZjQ1NjQ3MTRkYjEzM2VjZmQyNTM3YTBkNmRlZjNkOGU2MTEyIHJlbGVhc2UyNy1tYWludAorODQzMDYgZjY1ZTljMTU4YzA0MDYyM2E5NjdiZTUzYjA0ZWM2NDJmNDc2ZGFkZSBweTNrCis4NDMwNyA4Njc2OTljOWI2M2ZmNTg0NWVjMDJmMTc0NGUzZTc2ZGZkNzE4NTEyIHB5M2sKKzg0MzA4IDE0ODhjZDEwM2Q3YjgyMTRmN2ExMTAzMDA3NDBmZWY2ZmMzNWFkNWUgcHkzaworODQzMDkgMWUyM2MzYjJlMjMyNTlhOTBhOTNiZjRiY2Y1NTU2MGM1ZDBjYmRmYyBweTNrCis4NDMxMCA4N2JkZjUzZmY0YmJmY2E0Mjk5NjUzMGE3ZjBlOWE4NWI1NDMzMWM4IHB5M2sKKzg0MzExIGY2YjNlNjRiNzYyMDY3ODAyODZiYjI1ZjM1YjRlMzBkNmU5NmYzYmYgcmVsZWFzZTI3LW1haW50Cis4NDMxMiAwNTNmZjY1YmU1NGNiMzYzYzVhMjg0ODE1NmZhMjNjYjc0MjcwMGI5IHJlbGVhc2UzMS1tYWludAorODQzMTMgMmNjZDA0M2FhZDVjMTA5MGFjNTk0YjNjOTZhOTI3NDE0NzFlMmRjMCBweTNrCis4NDMxNCA4NzAzN2Q4MzgwYmY0YTM5ZWYxMzdmMWY0MDg4NDBiOTBkNjk2M2E2IHB5M2sKKzg0MzE1IDNhYzlhMzdlNDI5YmE2Mjc5MWFmYTI2YmVmZjJhNDllNjAzMzY4MzcgcHkzaworODQzMTYgOTRjMGY5NzkxN2RkYzY5MjgxNzhmZjcyZDBjMjFlYmFmMDc1YThkZSBweTNrCis4NDMxNyAwNDgyYjMwY2E0NjYyOTNlZTgyY2JjMzU2YzIyNWM4NTkzYzc2OTBkIHB5M2sKKzg0MzE5IGFlZmJhODk5ZWFlZWI0MjQ3YTFhZjJmMmFiZDExMzlhZGM3NDViNDIgcHkzaworODQzMjAgODMzMDM0NmI1YzVmYThiNmZlYjk0ZGVjODQ5ZmZhNzEwZDE4MmEyYyBweTNrCis4NDMyMSBlYmZiOTRmMmNiYzM1NjRjODkyYzVkYzg2YTM4YThiMDkzZDU1MjQ5IHJlbGVhc2UyNy1tYWludAorODQzMjIgMTkwMzc1NDQ1MjQxOTg2YTNhODQ3YzhhNGQ3OGU4MTRlZDU0YTBhZCByZWxlYXNlMzEtbWFpbnQKKzg0MzIzIDY1NTIwNTU2MjY5NTAxZTM5ZmRhZGI4MzBmMjc0ZGNkZmUyNmNlOGQgcHkzaworODQzMjQgNzkxNWQyNjZlZTJiMjVkY2E0NjVmNzA0NjUyZDM0ZTE5MjFjMDE1MiByZWxlYXNlMjctbWFpbnQKKzg0MzI1IGVkODNkNTQ2MzE1ZDJlMGEzYWIzZTA2MDVmYTA1MzYzNmQ4OWFjM2UgcmVsZWFzZTMxLW1haW50Cis4NDMyNiAzMjVkMDE2YzE5ZjcxZjg0NzQzOTJkY2Q3MDZiNjdmOWEyNjg1N2EwIHB5M2sKKzg0MzI3IDlkNGFmZDhlODYyMTE1NGMxZjhlNjk1YjYwMmY5NGY1YzQxMDNiN2QgcHkzaworODQzMjggZGViYzI4NDJiNGIxYmY5NGM4NDYwODE4MjIwZTQxMDUxOWJiMDIzMSBwZXAtMDM4NAorODQzMjkgMDExMmYwNjRjZWRmYWIyYWY4ODc1YTU4OWEwYzVjZjFiNDc3OTE5MiBweTNrCis4NDMzMCBkMGI0NjBhNDdmN2ZmYTU4ZGY5OGQ1YzYxMDQyMWUwZTc1MmQxZmYzIHBlcC0wMzg0Cis4NDMzMSAwOTNhMDk1YWE3NGM2NDg5OTk2NjRiOGY2N2YwODliZWQ4ODRiNDJmIHBlcC0wMzg0Cis4NDMzMiAxYWJhNzMzOWZhNmMyYjg4ZTUzNWVhMWYxY2FmNDk1MGI4NmNmODg4IHB5M2sKKzg0MzMzIGNiMWY1ZDA1NDUxMGU0N2E0Y2IzMDY5MzZmMjFhM2I1NWE2MTUyZDkgcHkzaworODQzMzQgMzRkZmVlNTkwYTMwNzFiMWVmZmQ0MDRjNjFlYjJjMmFiMjUzMTFiMCBwZXAtMDM4NAorODQzMzUgZDcxNjIyMDczMThmNjdjYjA4YWI0OGY5MmU4N2M3MzlhYjQ4MTI4ZSBwZXAtMDM4NAorODQzMzYgMzNjNGNjYWZjNGY1MzhhMTJjZDZkYWQyYzczYjhjMjhhZjU5ZTY4ZSBwZXAtMDM4NAorODQzMzcgOWZhYzE5NzBkMzgwNmYyM2I1ODI3YzNkYWM1MmI1NDZjNzZiZTcwYyBweTNrCis4NDMzOCA3OGU0MDMxNmUwMjM0NmFmYzY3N2Y5ZDM1YWE0Nzg5MDE1YTEwMzcxIHB5M2sKKzg0MzM5IGVhYWUwZGY2ZDA2MzBlMTUyNDY1MWJjMGM2ZmVkM2ZjY2RmMzJiNjggcHkzaworODQzNDEgNWRjMDZhMDU5NjMwYWRjMzZmY2ViYWM4MWQ1OWQzYmY1MmZjMDE1NiBweTNrCis4NDM0NCAwMjY1ZDVmN2JkMDcyMTY2YTJiODNhYjk0NjkzYzg4NjVhM2QxNzg5IHB5M2sKKzg0MzQ1IDRjOTc4Y2QzNjQwZmM5ZTdjNDQ3OTRiOTY0YmM1ODRmMzhhY2ZkZjUgcmVsZWFzZTMxLW1haW50Cis4NDM0NiBiMmU4ZGNkMTUwNDAzNDFmY2Y3NjE4ZDIxYTA2MGVmNTE4NDc0ZjY2IHJlbGVhc2UyNy1tYWludAorODQzNDcgOGY2ZTQxYzNhMjE4YTk4ZjAwMjZmNTEzM2MxZjlhZWY4NzBmNWNkZSBweTNrCis4NDM0OCA1Yzg5Zjk1NzFiYTU0OTBlYzQ2NTIxZmI3Mjk4MGMxMWIxMjFkM2MzIHJlbGVhc2UzMS1tYWludAorODQzNDkgM2UyMGFiZDdkZWY2ZTM2MDA4YmFkNWE0MGJhNzkzMGQ5Y2M5YTRlZCByZWxlYXNlMjctbWFpbnQKKzg0MzUwIDRiYjMxN2ViNDk2YTA4NzU3YTJiY2ZkYzhiNTViMjMzZjlkZDM1ODYgcmVsZWFzZTI3LW1haW50Cis4NDM1MSA5Y2JhOTkwNjhjNTRhYTlmZThlY2NlZmI4YjFiNDU2YzZiNDBmNWI2IHB5M2sKKzg0MzUyIDkyOTc5NzQ2MDRmZmRiMzE5YTllNmQ5ZjExODRhZTI0ZWM2MWJhZjYgcHkzaworODQzNTMgOTE1ZGE5ZjJkYTE5OWU4YjU0YTRkNTRkYTBlZmJmODA4ODg1YWUxYiBweTNrCis4NDM1NSA4MGQyZTdkMWQ3ZDUzNGZhNDY1OTEyY2FiNGFjNDAxZjQwOWI2MDY3IHB5M2sKKzg0MzU2IDljNTFmMzgzNjU2MzJhMWI3Yjc4NWEyNzhkNTE0YjI4MTZlYTBmMGEgcHkzaworODQzNTcgNzI2NzA1ZDAyYWRkMjFlNmQyYzFiYzU1MDdhZjNkMzZjMTQ0Y2M0MCBweTNrCis4NDM1OCBlZmU5ZjZjOGEzMWQ0ZmM4MGQ1MzcxZWJmODhkMDVjZWZiM2IwZjU2IHJlbGVhc2UzMS1tYWludAorODQzNTkgOGFkNTliNTIzZmQ4YTA2NDI2ZjU0MGQ1ZDM2MTcyYmUxY2Y1MWVkNSBweTNrCis4NDM2MCBlMWRjZGNiNTIwMWQ0ODRmOGEwZTVhY2IzODU2MWZmODRlMzhlMjM5IHB5M2sKKzg0MzYxIDI5NDEwMWY3N2NiZWNhNGExYTc5MTQ3MzRkZjBiZTg2MDZiNGY2NTkgcmVsZWFzZTMxLW1haW50Cis4NDM2MiBlNmI0NTZmOTM0NDdhMTAwNWNhYjFmNDY2ODViNTNmZmQzYzJkZjk2IHB5M2sKKzg0MzYzIDA0MGVlOTRhOTM1MGVhMjQzNzgwMjA1MGEyM2IzOThiMjI5N2VhZTEgcHkzaworODQzNjQgZmU3MjE0YmM2ZDY2YjMzOWZmMWZmMzFhMWZjNmIxZTlkMzc3OWJmOSBweTNrCis4NDM2NSBhNDkyZjFhYzA1NzU0NzllNmI4ZWRhNzBlZDcxNTdkMDdmMDEzNmI5IHJlbGVhc2UzMS1tYWludAorODQzNjYgNTM3MGQ4MWE1ZjJkMmIzMDA0ZWM4MzVlMmNjNmM5Y2NiOTA2NDdiMiBweTNrCis4NDM2NyAwYTc4NGY2YWNhZTc2ODI0Y2FhYTM0NTZiMTZiY2FhMmU3NmY0N2EyIHJlbGVhc2UzMS1tYWludAorODQzNjggZjkyMDQzYzdmZjk4NDBlMzhiZDYyMmFjYTFkNTFhNDlhMTc0MzQxNCByZWxlYXNlMjctbWFpbnQKKzg0MzY5IGVhODkzZGIyM2U3MzhjNjA4OGM1MDQxNDM3ZmVlMWI0YTU0OTFhMGUgcmVsZWFzZTI3LW1haW50Cis4NDM2OSA0NzQzNzM4Y2NhZmUxN2FjOWU1YTNjZTZkMzQzMWQ4MWQ4ODc4YjBlIHB5M2sKKzg0MzcwIDg0ODgzNjA3ZTIxYTRiMWFmZWFlNDhiZTgxNjI1OTYwNDFmNDkyYzEgcHkzaworODQzNzIgN2IyZDBkNzdlNGFjNmU1NDc3M2FlOTg2OTkwYzQyNGY0ZDA2M2E1MyBweTNrCis4NDM3MyA4MDM4OTI5MzMzYTljNzgyOWI1NzAwZDA4NWZlMmYxZDFmOTExYmM1IHB5M2sKKzg0Mzc0IDA4ZjdhZTEwY2M3OTJhZWFiMDhlOTZkNDJjZWM1MWU4YmM5ZmI3YTggcHkzaworODQzNzYgY2E4ZjhjNmNjMmIxYjI4MTdlMTQ0Yzc3MGNmZjYzMjk2OTY5NzNmZiBweTNrCis4NDM3NyBhYzM3YTI4ZGRjOGY0OWI0YTliNGE3ZWE4NjdiZGE1ZjgwOWQ3YmNjIHJlbGVhc2UzMS1tYWludAorODQzNzggMTU3MGY2ZTlhNjg3NDU5ZWI3ZWVmNGUxOWQyNmE0MTJkYWY3ZGM4OSBweTNrCis4NDM3OSBkNTAzZjdhNDU0NTY2Yjk0OGJiMWM3NmQzZjViYWZlNThhZTRmYmY1IHB5M2sKKzg0MzgwIDYyOTMwY2IwNWVkOGI4YTE0NGFlMjJlMzViMGIwODZmOTI1NGFlNDkgcHkzaworODQzODEgMDMyNjhiZjlhMjU2NGY4NGZjZjFjODU5MjgzMTAwOGVmNzAzMmZjMCBweTNrCis4NDM4MiA0ZjI5MDVlYTc4MDk2NzNmMDQ1MmYzMmY5ZDFkMmJlNWY5OGMxYTg2IHJlbGVhc2UyNy1tYWludAorODQzODMgYTBlNzU2ZDkyZDYwMDYxMGY5YmI4MTljNWEzZGQ4NjMwMzczYmQ0YyBweTNrCis4NDM4NCA4YzIxNjBiNWM4MWFmN2E4ODIwZWY2NGM5YzYxOGJmYjMzMGQ1MjgwIHB5M2sKKzg0Mzg1IDljYTgzYzY0Zjc3YWUxNTU5MjZkMmYwYTY5NTQ4NmUzMmFiZDhiMjcgcmVsZWFzZTMxLW1haW50Cis4NDM4NiAyZTU3NjE1ZTYxZjBmMWFjYTZlNTE3ODY4YTZiNTVjYWIxZmEyYzk2IHJlbGVhc2UzMS1tYWludAorODQzODcgOWZkMzI2YWY2MmQ0NWM4ZGMyYWM2OTAzMjI5MmNhYWRiODFiZjA1ZCBweTNrCis4NDM4OCA0OTgwYjNlOWU4NGExODE0OWI2YmZiNzBkYzhjNjczMzhjMTNhOTM4IHB5M2sKKzg0Mzg5IDdlOWFiZDUzYjkyOThlNzBmZjZlNGFjZjA2OGI3ZGUyMmZlMGU2NzggcHkzaworODQzOTAgMjk3M2RhYTQ3MjRiMWVkNmFmM2Q5ZWJmYjk0ZWM1YTkyMTk1NGM0ZiByZWxlYXNlMzEtbWFpbnQKKzg0MzkxIGQyNDg3MGQwMGM0MjU5ZjgwYzc3NjRjZjM5MzZiMjBiNjIyZDYyYjMgcHkzaworODQzOTIgYjNiOGQwOGY5ZDA2ZWNmYmQ4MzYzYjRiYjI4NWIwYjA2MjU1MDZhNyByZWxlYXNlMzEtbWFpbnQKKzg0MzkzIGRhMTlkMDJhYWFhYTNkNmZiNzhlMGU5OGEzYWI4ZmY4OTk1MGM3YmQgcmVsZWFzZTI3LW1haW50Cis4NDM5NCA1YTMxMDFmNTU4ZWRkZTM0M2FjYzQ0MzlhZGQwZTQwOWU1ODI0YjkxIHB5M2sKKzg0Mzk1IDQxMzQ5ODE3NDY5NzY4ZjdmMmMyOGFiMGNkZmYyNTRkOWZmZjNlMzggcmVsZWFzZTI3LW1haW50Cis4NDM5NiAzZDFjNzI2MmFhMTRkY2MzODc4ZGE2NDI5MTc1YTVhMWQxODkyNzlmIHJlbGVhc2UzMS1tYWludAorODQzOTcgOTQ0MjMyNTIxNjI0YmI3OGNiMTAxZjgzZmM5ZTMyYmI4MWEyMTU5OSBweTNrCis4NDM5OCBkODUwYzM3YjY2YjZmNmZkMzA3NWE1NmQwMjk3NzhkMmUzYzA0OGQyIHJlbGVhc2UzMS1tYWludAorODQzOTkgMDYxZTI3MDMyZTYxOTM2MzJmZGNmYThmNWQ5MjFkZTYzM2IwNjZhYyByZWxlYXNlMjctbWFpbnQKKzg0NDAwIDJkYzE3ZGNjOTczNDY5ZjI5ZmZhZjNlMzJlMDNmOWViZWQxNTJlYzcgcHkzaworODQ0MDEgZGU0MjA3YzliOWMxMjhkODI2MzhlNmM4ODcwNzdkZTkwYzUxN2U3YyBweTNrCis4NDQwMiAzMDQ1ZWI5NDA1OTdiYzJjNDRiMjQ1ZTRlNzQ2Y2ViNDdkMDc1MWYyIHJlbGVhc2UyNy1tYWludAorODQ0MDMgZmE4YjU3Zjk4N2M1ZjE1Yjg0NTk0NjM1ZTA3ZDJhYWEzZjkwMzQ1MiBweTNrCis4NDQwNCBkNjY4MDdjNTAzOGJmYjY2ZjRmMzMzNTgwYzhhN2Y5NmJlMjA0MWVmIHJlbGVhc2UzMS1tYWludAorODQ0MDUgNmJhMDMzMjJiYzIzM2JiZGQyODM1Y2E2Njg1ZGM4NzQ5OGQzOGYxMSBweTNrCis4NDQwNiAwNjNiNTU0ZDMxNTNmMzZmNmVlNDdjNmM0MWI1ZDBlMDE1NmVmMTZmIHB5M2sKKzg0NDA3IDRkOGEyNWE0ZDFmNjA4MDVkODI0YzE0MDdkYjAwNjJlYWQ0NGFlNmUgcHkzaworODQ0MDggOTI1ZTkxMTNmMGFhZWZmMTNiNjNkZWE3ZjhlODJlNDAyZGUyZTQ2YiBweTNrCis4NDQwOSA3YTM5NWJjZWFjOTFhZjM2MGQzM2I1ODMzOTk0NGEzNzFjODc3NTI4IHB5M2sKKzg0NDEwIDQ1NDdiMTQ5MTE2OTAzN2MwZGY1NDI4MmY2YTQ1MDQzZTNjM2YwMmEgcmVsZWFzZTMxLW1haW50Cis4NDQxMSBmYTRkNzhiOWUzYTJhNmI4NGI4NDU4ZWFkNzJkNTdmNzQ0MTFmMTU5IHJlbGVhc2UyNy1tYWludAorODQ0MTIgNjE5YWZjODFjOTczMWUxNWQ1ZTFkYjJmOGI1NTUzYmJhMmUzNDY0NyByZWxlYXNlMjctbWFpbnQKKzg0NDEzIGZhOTQ5NTMxNmNhOTAwZDE5MTc2MTc0ZDE2YmQwMGQ2MjdiN2ExYzQgcmVsZWFzZTMxLW1haW50Cis4NDQxNCBhM2I2NDE5Mjk2ZTU4NGJmN2JkYTUyOTAxMmM1MTU4NDlkNzk3ZjcxIHB5M2sKKzg0NDE1IDI1ZWRiNmY0MzhiOTI2ZDk5YzkxZDdlOTNhYmIzNGExZDA3YzI0NWYgcHkzaworODQ0MTYgNTM4YWU2MjI0YTVlYjVlZmVkOThmN2E1OGZmOTlmNmQwOWNjMTMwNiBpbXBvcnRfdW5pY29kZQorODQ0MTcgZDc5MjE2ZmMyMWNlNzUxMTljYjk3YTFiNTNkYjE2NmY0NDBjNmQ3MSBpbXBvcnRfdW5pY29kZQorODQ0MTggODJlYWMzYzJjNjk3ZGYwYTEwYmIyZjBmNjZhMmI0ZTdiMjU4N2U4NSBpbXBvcnRfdW5pY29kZQorODQ0MTkgZWQzZDg2MWM0OTBjYTJmYzcwNDNkZDcxOTQyZWM1NGZlNTkxNzYyNyBpbXBvcnRfdW5pY29kZQorODQ0MjAgYTM5YmE3YWNiZTI4NzA0YTI4MjE1OTQ5NzIxYmU2NmRkNmZmOTM1YSBpbXBvcnRfdW5pY29kZQorODQ0MjEgZTY2MGU3YmQ3OTlkNzBmY2E3YTcyZmEzNGQ4ZjRjZDgyM2U4MjE2YiBpbXBvcnRfdW5pY29kZQorODQ0MjIgODA2NDFjN2E2ZjRmOWMyNGZmZWZlY2FjMDc2ODQ3MTlhMGRiNGFiMSBpbXBvcnRfdW5pY29kZQorODQ0MjMgM2Q3ODUyYjg2MTI4NGQ5YzY3MTdhNWVlYjg1MDk0NjBmNTRkYTE2ZSBpbXBvcnRfdW5pY29kZQorODQ0MjQgYjIxZmQ5NGY0ZmIzN2IzMzgxODYzOGZjY2YxMDMxMjA1OWY5NDczNSBpbXBvcnRfdW5pY29kZQorODQ0MjUgZjBkMGEwNzBmMTI4ZjJiNzBmYWZkOGEzNTE3ZmFlZjRmNGE1YmMxZiByZWxlYXNlMzEtbWFpbnQKKzg0NDI2IDkzZDZhZDg1MjM1MzQxZGZjMjE3Y2Q4ZTRkN2FhN2U2NzUxZjRlMzIgcmVsZWFzZTI3LW1haW50Cis4NDQyNyA4MjIxMWIxODUwZDRkYTJiYzNkNzAyZjE2YTQ4NTgyOTVlNDBjZGMzIHJlbGVhc2UyNy1tYWludAorODQ0MjggZGNiMmFhNDFjZDc4MGEwMDNjZDdkMTBlZDJmYjU1YjZiMTI1OWIyYiByZWxlYXNlMzEtbWFpbnQKKzg0NDI5IGEwZDhkZTA0YzNhODI4NTJiYjg3N2ZhNzAyNGRmNjUxN2I2YjhiZTAgcHkzaworODQ0MzAgMWYwNGIwMDc2ZmQ4MTVlMzk0ZDdiYzRiZjdmMGY2YWIwYWI4NjJmOCBweTNrCis4NDQzMSBhN2NhZGQ3YjM0YjUyNmYwMjc1N2QzNDlhYTM2OWRhNTNmYTA0NTUzIHB5M2sKKzg0NDMyIDQ3YjkzY2RhOTFkZjViMmJkMmM5N2Q3MDRlMDJhNjI1ZjhiYzZkZmEgcHkzaworODQ0MzQgODFhOWFjNzNkNjE5NjMyOWZiMjBlZDA4YzAxNGUxZDk0OTkzZmY1NSBweTNrCis4NDQzNSAwMjYwZTA0ZDJjZmM4Mjk4OTJiODIxODg1N2U5NmFjYzQ5ZDJlNjFiIHB5M2sKKzg0NDM2IDExZmM3OThhOGI0MzI3MjJlMDlmNmJhMGI0NzgzOTZhOTRjYzExMTkgcHkzaworODQ0MzcgYmQ3NDM1YTg3MDhiNjM3ZWYyZmEyYjhiZmQ3MzVkNTRkYmIwOWZkMSBweTNrCis4NDQzOCA1NWRiNjBmY2FiNTQyNDI3MGI1ZTE1ZWY1ZjU1YjBiYzY2ZjYxYTBkIHB5M2sKKzg0NDM5IGI4Y2ZiYmZlMTgzOTA2N2U3NWUyZTczZTEwODFhYjQ1NTczMDJjMDIgcHkzaworODQ0NDAgZDFjNmIxYWI1YmE3ODU0MDgxNzI0ZWE1ZDZlYzk4YTE3NzViMTExMSBweTNrCis4NDQ0MSA4Yjk0ZjE1Y2I2NTBiYTFhYWRlYjI1OTIwMGY3MzZjYjFhMGY2YmE4IHJlbGVhc2UzMS1tYWludAorODQ0NDIgNGFkN2VmZDkwOWJjZTk0YmMyZmExZWVjMzIzNjQxMzQ0ZDQwNjZhNiByZWxlYXNlMjctbWFpbnQKKzg0NDQzIDE2Y2VmZGZlZDY4MjBkMmM1NjQ3NjIxOThlMTQ4ZGFjMjliZGI0ZDIgcmVsZWFzZTI3LW1haW50Cis4NDQ0NCAxNmQ4YTRlOTRkZDA4NzI0OTYyMmFmOWIzZGVhODVmNTVjNjA1ZWM4IHB5M2sKKzg0NDQ1IDMzY2ZhYTMyYzhlODBlNzVlYzU4YmU5ZGIyNWIyMTg2MmFjOGNlZGYgcmVsZWFzZTI3LW1haW50Cis4NDQ0NiA4ZGJkMzE2YmViZGY5ODcyNTFkY2EyMmZlMmI2MDQ3NGMwOWUyY2IwIHJlbGVhc2UyNy1tYWludAorODQ0NDcgZDU2YjNjYWZiMWU2NTVlZmI4MWM4NTY4ODQ0OWVkYjJlNjA5Nzk3ZCBweTNrCis4NDQ0OCBiNjVkMDM3MWE3MzE1OGI0Yjk2ZTYxN2YyODA4OTAzZmM1OTYwZTJlIHB5M2sKKzg0NDQ5IGI4ZWU4MDg2M2Q2M2ZhYjgwN2ZkN2MzOWY1OWE5Y2NjYmViYTNjNTUgcHkzaworODQ0NTAgN2QxNzUyZDYyMDUwYzlhMzM2MGZlODQ5MjZlYjA5YzNiY2MyZmM5ZiBweTNrCis4NDQ1MSA2MzMxNjZkNGZjMTJhZDkyYTdkOGMxYzc5ZThmM2FiN2QxZWYwNGQ0IHJlbGVhc2UzMS1tYWludAorODQ0NTIgODNhNmZmZjNmNjgzMzRmZDdjYmRhNGMzMTc4MWMxMDI1MTEzNmQ1YiBweTNrCis4NDQ1MyAxMjcwNDUxZjQ2MDQ5ZDdhOWQ5MTY2ZWMzYmMwM2JkMGIxOTRhZTgzIHJlbGVhc2UzMS1tYWludAorODQ0NTQgMzU2OTlmMzg3ZGE2ZTdkMmQ2ZGQ2NzZiMThjNjRlYzBhNzI5MjRhNyByZWxlYXNlMjctbWFpbnQKKzg0NDU1IDk4ZjMzN2E2OTU3YzEzYzkwOGVkYTBiOWVkNGQ3M2U5NTJiNThiODYgcHkzaworODQ0NTYgNzI2NDBlNzExMzQ0MThhNzAwNjVhNzU2MzRiYzFkZTk4NDdkYTg2ZSBweTNrCis4NDQ1OCA1ZTMzYjI3YzcxYTg2MTcyMTk3NTkzNGU4YmZlM2MwNzVkZjE2YjNmIHB5M2sKKzg0NDU5IDIwMjc0N2RhZTNjZmFlYjRkNjhiMDgxODExMjRlMDAyNjMzNDgxZmYgcHkzaworODQ0NjIgYmE4N2NhZWVjYjkxNGY3YjE4MzY2NzQ0OGM5NzBhNjgzNjc1ZDc3NyBweTNrCis4NDQ2MyBiN2NiMjc3NzNlNzI5MWY1ZjA2NDUwYjZhMDM1NmUyZTJlNmMwNWMzIHJlbGVhc2UzMS1tYWludAorODQ0NjQgNzAwMTljNWNmMzVmOGVjN2NiM2ZlMjkyYzM3YzhkZTM2NWQ4N2I5YSBweTNrCis4NDQ2NSA5ODg3MThlOWY5M2QxNWUyYTkzN2E2ZTFjODZjMGRiNDJmZDdmYmM2IHJlbGVhc2UzMS1tYWludAorODQ0NjcgMDZlNWZkNDk1OWU4YTFlNDA0MDVmMGQyZjdiMmNiNTA3YzA5NGUwNyBweTNrCis4NDQ2OCAxZjQ3MjA2ZDU3N2YwN2FjZTNkMjFjZDE1N2FlYTRkMjAwOGE2OTU3IHB5M2sKKzg0NDY5IGY4YmE5NTU4YWRiZjkxNWJhMmY5MjM3MDE0MmQyOGJjNWI0MzliNjIgcHkzaworODQ0NzAgM2Y3NzY0YzQwYzBiZmI5NTJhOTU1ZDc3YzYwYTk2OWUwZjY0NmJlMyBweTNrCis4NDQ3MSBkYmM5NTc2MmNmNTg2MzVjNjVkMTcxNWQxMThlYjdiNGE3MjZhNTAyIHB5M2sKKzg0NDcyIDUyNGI0NDRhODA5NTA5NWE2ZDljYmFjMWJlMjBlNDQwZDU1NTNkYmYgcHkzaworODQ0NzMgZTkyYWRhNjQyZGJkZmRiNzE3ZDMzYzhhYjM5ZGJlNzdhMTIzOWVkYiByZWxlYXNlMzEtbWFpbnQKKzg0NDc0IDg5NWFlYjQ1OTVjMmY3MGU2YWQ1MDYxN2I0ZmJiMmJhMWIxOTVlNTAgcmVsZWFzZTI3LW1haW50Cis4NDQ3NSA0NzJkY2Y1MGNhNzFjODdmYzgzMWI5OTk3ZmZiNzU1MDJmYmZmMmMyIHB5M2sKKzg0NDc2IDUzMzA1YmFlZjU4OGQ4NTdjZTEwYjA2MjJjMjE4ZTNjMzRhNTVjN2YgcHkzaworODQ0NzcgNDA1MmQzZTI4NjViZjhhMWFmNDdhYjQ3OTE3YzAwYzk5MTE4MWNhZCBweTNrCis4NDQ3OCA1ZTU1ZTk1ZDVjNzc0YjRmYzJjMTIzNzUxM2ZkNjU5ZDIyM2Q5ZjRmIHB5M2sKKzg0NDc5IDY4ZmQ0MzA4NTlhNDljM2E4MzdlMWU4YTExNzk2YTU1MTFjOGEyNmEgcHkzaworODQ0ODAgZWE2ZDA4MmE5Y2Y4MDg2N2NjMWIzMjBmMWZmMjVhYjEwMTk3OGRmMyBweTNrCis4NDQ4MSA0MGViNTllMmYyZDM1MDZmZGU3ZGE1YTc1ZjllMjI1OTA4YTI2MTg4IHB5M2sKKzg0NDgyIGU1YWUwM2VmN2ZjMTNjODU3MmU2MzQ0YTM4NDc0ODYxZGFmZWE5MTEgcHkzaworODQ0ODMgZGU4ZDNkNzkxZTZhN2Y0MWNiODVjM2U4MDk2YjBhYjAwNzYyZDZhZSBweTNrCis4NDQ4NCAwMzI1NGZjODM5MDExNjNkM2M0OTNjNGY0MGM3ZDA1ODBkZDc2MzY4IHB5M2sKKzg0NDg1IGU5Y2QxNWQ1MzllMWEzZmVkYTAwNWNiYjllY2IzZmVlMjk0NWUyNzIgcHkzaworODQ0ODYgYjJiMjYyYzVkYWE4NjMwNzNhMDBjMmIwZmY0NDlhMDkxZWU3MjAxNiBweTNrCis4NDQ4NyBiNzBkMzNlZWZkOTYwZTRkMGMyZDZjMzQ4YmUyZDU2N2YyNTliOTJlIHB5M2sKKzg0NDg4IDAwYzY5NTdjNzcxOTBiMjkxYmRiYWMzYmEzNGZjMGFlMDliNzBlNmYgcHkzaworODQ0ODkgOTBlYjRjOTczZjUyYWZmNTFhNWZhOWYxMzUyMjNiNjQzYzg5NmM3NiBweTNrCis4NDQ5MCAwYWY5NGVlOTlhNDg0YmRjMjUyMWIzZDJiYTcxMTk3NDFlNTg3NDMwIHJlbGVhc2UzMS1tYWludAorODQ0OTEgOTE5N2JhZTYxOWFhNDBiMjU5ODJhNTQ0ZDQyY2UzNDc0NjgxZDZhOCByZWxlYXNlMjctbWFpbnQKKzg0NDkyIGVkNDVhMjZmNjY2NGRhNzE5ODYyMzRhYmRkNTUwZDI2MjFjNzI2ZDcgcHkzaworODQ0OTMgNDMzMTllMjkyZDY0YmExOWE5MjgwNzI3YWY3ODJkYzM2YTA1YTMwYSByZWxlYXNlMzEtbWFpbnQKKzg0NDk0IDU4YjgxMDFlYWMyMzhlNjA1M2FkMTgyNWExOTZkM2JmNjQ4MGI0OWEgcmVsZWFzZTI3LW1haW50Cis4NDQ5NSAwZjZlZTU5YzJhNzYzYTgyYTc1YWVkZTU5NTEzYjQxOTg5N2EzZWM4IHB5M2sKKzg0NDk2IGRhYmMxMTUxMTZiZDc0OGQyMTFlZDgzZmYwYjlmMjE4NTA3OWU1NWYgcHkzaworODQ0OTcgZDJiOGYxMTAzMjEyNGJiYjI3MjNjZjcyMjIzNTY5ZGM2ZWY1MDk5NiBweTNrCis4NDQ5OCBmOTk0ZTZmZDA2ODA2MjE0MjQyOTI2ZjY4M2VkODAzZTYzZTNjODBmIHJlbGVhc2UzMS1tYWludAorODQ0OTkgOGVjZTI5YzhiYmEyOGVkNWE2ZTI0MWM0ZDBlOGJlNGQxNDcyZGIwOCByZWxlYXNlMjctbWFpbnQKKzg0NTAwIDFiNWVlNmU4NDVjZGYwMTczN2Q4OTU2ZjllNzdmMzZmNWM5MjU3MDUgcHkzaworODQ1MDEgNzI1MjMxMjExMjczMjdjMDIyMDk2ZDMwZTdiMjhhNGE1YTg5NDk1ZCBweTNrCis4NDUwMiBjZTU0NmExYjlmZWMxZjYwYmVkYjNmMzE0NmQwNmYwOTg4MDVjZDdkIHB5M2sKKzg0NTAzIGE0MTVjZjk0YzdkYTdmMzU4YmM0OTVlZjhhZTVkNjMxMTY2YzhiMjcgcmVsZWFzZTMxLW1haW50Cis4NDUwNCA1OTk3YWUyZWFiMzcxOTE3ODc0YjczZDI2YTMxMzNjN2MzYTBiMjYyIHB5M2sKKzg0NTA1IGMzYWQ4ODNiOTQwYmU0ZWVhYjc1MmIwZWFiZGVmNmRmNjAwOWMwMDUgcHkzaworODQ1MDYgNzhlYTQ0MjJkZjRjMmM4ZDgxM2JkMzdjNTYwNzcwNTk4MGJmNmNiZCBweTNrCis4NDUwNyAyM2NmNTQxODZmNTY1MzIwNjljZjgzOTM3NzQ5ZThhOGM4NjkwNGE5IHJlbGVhc2UzMS1tYWludAorODQ1MDggOTgwODNmODc2NDU1NDcyNjJkOTgxNjI3YzhiMDY0MWNlZGFmYzM2MiByZWxlYXNlMjctbWFpbnQKKzg0NTA5IDk3MjA4MzZhYTNjYjg5MzE1NmQ0NGMzNzc2OWFkNTc0Yzk1MDg3YzcgcHkzaworODQ1MTAgNjFjNDQ3OTMyMzhkMTcxNGVjZDBmNjlmZGQ1MWE5MDhhMjRmYzJmMCBweTNrCis4NDUxMSBiMzJjYmZhOTY3Mzk0ZTMzOTJlYzQ0YjAxZjU3YTgzODViYmJiZWI3IHB5M2sKKzg0NTEyIGM3OGViMDE2ZDFjNTE0ODZkYTYxMWY0MDc5NTY2MWY3MTVkNjc3NWUgcHkzaworODQ1MTMgYzRiMzRiMmE1Y2MwZWVlYjU3MjVhYWQ3YzAwMzc3N2RjMzAxNWQ3ZCBweTNrCis4NDUxNCAwYjBiZDgxMDI4OTFiYjkzZTZlYWJmNjA1NTBiNjNjNjAzNzg1MTI2IHB5M2sKKzg0NTE1IDdhMzRkZWYzNWRlNzRiZDcyZmI2NWMxYWVjZTNjMjhiODZlMDU0Y2EgcHkzaworODQ1MTYgM2MzNjg0OWYwNjM5N2I1YTFmNDYyMDRjZDM1NDU0YjkxMWM2NzM1ZiBweTNrCis4NDUxNyBhOGQ1NGU4MDIzZjIxYTYyZjNiMzZiYTM4MmYwNGRiYmRhYzM1NzljIHB5M2sKKzg0NTE4IDhiYjE2MmIwMTkyNmY1YWY5OGJmNDk5YmVhM2U2ODg1MWQ4ZGY4OTYgcHkzaworODQ1MTkgMjYzYjEwNzdhYjk3NWIzZGVlMDllNjYwMzJlYzYwZTk4OTNjMDJjNSBweTNrCis4NDUyMCAwZDg2MTQwNzU1ZjBkNDk1MzkzZThmNjYxMDE1NWZmOWJkZWVhOGZmIHB5M2sKKzg0NTIyIDU2ZGMyYTVhZjIwYTFhZWRiZWVlNDkwOWNhYmQ2ZjAxNWQ1NDc5ZjMgcHkzaworODQ1MjMgNjIwOTg3NTFkYTY3YjVlZWY5YmI4NWIyMTU3MTIyYTIyZGMwNzE0ZCBweTNrCis4NDUyNCAxNjExOTEyOTMyNGQ0MWZhZjM0NDdhMzY5MzAxOGYwNTMyNTJlZDc1IHB5M2sKKzg0NTI1IDdkOWI0ZTAxOGM2MmU5MjNkY2U5NTJlZTY4ZTAwZWYyZWFiOTE5YzAgcHkzaworODQ1MjggNzhjNGRkYTdjZGM2MzczN2ZhMjQ4N2UxNTI1MWRmMWU5NWEyYjhjMCBweTNrCis4NDUyOSA1MTA0OGY2Mjc2Y2U4NGEzYzk5MTk1OTQxZDA1MGZiYTJjMGVmZWQzIHB5M2sKKzg0NTMwIGRjNTg5MmY3M2UwMzZkZjg0NjBjZGVjMDJjZDdhMWNiYTJjMDUyZWQgcHkzaworODQ1MzEgNGY3YjU2Yjc4NzI1MjU2MTdjNTZiN2JmYzg0OTdmMmUzMGQyMWE3MSBweTNrCis4NDUzMiBhNzVlOTg5Mzc1NDJiYzUzMjM0MzI5ZDA2YzQyMTU3ZTdlZTBjYzY2IHB5M2sKKzg0NTMzIGIwYWI4MzJmODkyMTI4MTg4MmU0ZTIxN2ZjMGQzMzA5YTA4ZmU1MzMgcHkzaworODQ1MzQgNzgxNGRjOWYzMWEyNWM5Mzc3ZWM2NmM1M2UzMTljMjVhNjY0MWI0MiBweTNrCis4NDUzNSA3ZTBkODY2Y2E4NzE0ODI0Y2IyYTlmOGU1NGVlYmM4NTk4MzhlNzY4IHB5M2sKKzg0NTM3IDdhN2I1MzFiY2I2NGQxMjVkZDNiYjAxZjRiNzAzMWE3MDA0NTk4YTUgcHkzaworODQ1MzggNzg4Nzk3MWRkYTQ4M2JjYmZmMjE5ZjFlYmE1OWQzMGYwZWU0OWYxZCBweTNrCis4NDUzOSAyMTM5MTYwMjg3YTExYTJkMDZlYWFiMTYyMmVhOTMwZTMxMTE1NjRmIHB5M2sKKzg0NTQwIDU2ZDQzNzNjZWNiNzNjOGI0NTEyNmJhN2IwNDViM2M3YjNmOTRiMGIgcHkzaworODQ1NDEgMWQwZDMzYzA1MTVlZThiYzZmZmU2NzRkOWExYzJlZjY5YzkxMDUzYiBweTNrCis4NDU0MiA1Yzk5ZjhjOTBlNjY0MTY1NGEzM2QzNzdlZjIwYmEzM2Q4Nzg5MTlhIHB5M2sKKzg0NTQzIGMzNDg5MjU3NWJjMGU0YWYxMTEwMDUxMDAwZjk3NmExY2I0MzEwY2UgcmVsZWFzZTMxLW1haW50Cis4NDU0NCA4N2FhNjJiZDE3MTU2ZTllMjg4YWRjMDIxOGQ3M2FmYWZjMzMzNTdiIHB5M2sKKzg0NTQ1IDhlZjY4ZWJlYzBlMWUyZTZiMTY4ZmMxMjdmNjc4YjVjYTQ5N2Q4MWYgcHkzaworODQ1NDYgNjljYjA5ZjI2NDI0MGNhM2MzMDMxNzYwZGYzYTEzNGQ2MGYyNDU1MCBweTNrCis4NDU0NyBlNTU4YWM0MjVhNTE4NWJmMWI1NjA4MzExNjI0ZDA5NTZlZjEyNjI0IHB5M2sKKzg0NTQ4IDA3MTIyNWFmNjRhM2Q3MDU2YjBkNTM0NmEwMGRlOTdhYzEyOGUzNjUgcHkzaworODQ1NDkgNjU3Zjc5NTE5OWI5ZTdlMzQ5MTI3ZWZmYzJmZmUyOTc2MzVlNGZkMyBweTNrCis4NDU1MCA2MzI0ZDIzOTYzYTcxOTA0NWM1MzRmY2IxMTNhNDFmZDYyZjI3ZTkyIHB5M2sKKzg0NTUxIGQzODkzNzQ3MWY4OTg0YWM5NjA1YTllNTdiYWZiMjJjNzFkYzYxNzIgcHkzaworODQ1NTIgMzlhYWEyYTdmZDRiZjZlYTI1NjVlNDNjZDE1ODJiNDE2YjMzZGNlNiBweTNrCis4NDU1MyAxZDM3NGU1YmEyZjEzMmViOTliN2Q1NWM2ZGM0MTFjZTJlZTdmNjA5IHB5M2sKKzg0NTU0IDQ5NDQxZTg4Y2NjMTRhZDQ4ZmZjMWMyMWEzNjRkMTE2MWI3Njk1OGUgcHkzaworODQ1NTUgZDkzOWM4MGM2NjZiZDM3MzhiNDA3Nzk5ZTI3NmQ1ZmFjNDhmMzExMSBweTNrCis4NDU1NiAwNjJhYjUxNDc0ODc0NTk3Y2ViNjVlMTNhMzg0NDczYTlhMWE3NzcyIHB5M2sKKzg0NTU3IDA0N2E5ZDdjYTI0MWRjMWI4Y2ZmNmJiYWM4ZDA5M2ZiOGM0OGRjZWYgcmVsZWFzZTMxLW1haW50Cis4NDU1OCAyYzJhMzhlMGNmMzA3NjU1MWNhYzg1NzdkMTZkZWFmNGIxYjlhMzMzIHJlbGVhc2UyNy1tYWludAorODQ1NTkgOWJkYzU5MDEyMDdiOGNkODBmNzNjNzVkYzdjYzVlYzdiZmJhNDJhMiBweTNrCis4NDU2MCA0YTE0NTVkMzY4ZmY1ZmZhZGM4MTRmN2U5ZDZhYmY1NWQ3M2ExMmIzIHJlbGVhc2UyNy1tYWludAorODQ1NjEgZjZkZmQ2YzU2M2UxMTU4YTQ4NmM2ZjNhNjRlZGRhNTJlN2I4ZjhiZSBweTNrCis4NDU2MiAyMTQwNTgxMmYzMTI3MGNmZmE0NjBkN2RjNDM1NTRlYWI4Y2NhYTVmIHB5M2sKKzg0NTYzIDBjMGYxZDBlYjc3ZTk4MGY3MGZiNDNlY2Q4M2Q4NjcwYmQ0NTY4NTUgcHkzaworODQ1NjQgNTQxMzM4Nzk1OTUwNzExOWExMWY2OTlmYjY0ODliM2ZkMTkwZWYzOSBweTNrCis4NDU2NSBlZjE2YjRiNzlkNTQ3ZjYyOTg5ZjIwYThlNGM0ZTRjOTgzOTk2NmVhIHB5M2sKKzg0NTY2IDZhOGI1YTYxOGU3YWVmMGM0ZjQ2YWUyNDYzNDAwMGJlNmNhZWFjYTIgcHkzaworODQ1NjcgYjMwNjEwNWJmODNkZmEyNjVlZmMwMjVhY2Y4YTdlMjE3YWI5Mzk3NiBweTNrCis4NDU2OCAxMjQ3ZmE3NTE3NzIxYWRjYTdlNTM1NDFhYjE3MzcxMGVjYTlhY2NhIHB5M2sKKzg0NTY5IGZhYWFiNWE2NTdlYjU0OWIyMTdkZGIwZDRiMmIzYjAwOWMxMDFhMjYgcmVsZWFzZTMxLW1haW50Cis4NDU2OSAxNjkyYzBiNjAzMTc2NDE1NjI3M2YyMDkzNzczYWU3ODNiOTU4NzNlIHJlbGVhc2UyNy1tYWludAorODQ1NjkgY2Q5MThhYzdiZDU1NGM4OTZmNTkzYjk2YmI1OTU0ZDJmYTJjZTQ4NCBweTNrCis4NDU3MCA1NGI3OTY0ZGQ3YTk1ZTMwOTAyMTAyNjY1N2ZiZWYwZDM3YjNjMjg2IHB5M2sKKzg0NTcxIDU2Nzg3NTlhODAwOWE3MDdkODU2YjUxOTI2NTlkM2ZhYzdiYWM2MGMgcHkzaworODQ1NzIgNTNjZDhlY2RjZThhZTY3MWFiNTk2MjM3ZmY2ZDJhZjc5NTU1OWIyNyByZWxlYXNlMjctbWFpbnQKKzg0NTczIGIzMmZkYTlmNzJmZjk1ZDE0ZDFlMGNhY2VlYTBlMWU2NDZlNDliZmQgcHkzaworODQ1NzQgNjU2NDJmMDg1YzU1Yzk0NWE5YmIwNTMwYTQ5MGIyOTIwZDQxOGVjYyBweTNrCis4NDU3NSAxMWJhNjM5N2UzYTRmZTQ3NDdhZTExNTZhMDdjMTg2ZjhkMTI3MTRjIHB5M2sKKzg0NTc2IGMyZjg0MThhMGUxNDYxMzkxZGY2MTJjNWZkMjM4ODczMjM0N2UyYzYgcHkzaworODQ1NzcgZTA3YzQ0ODNhZDNiNmZiMTUxNWQ3N2M4OTBjYzJkOTEwZTg1ZDY0MCBweTNrCis4NDU3OCA5Y2VkN2YyZjIwYjNmMWQ3M2FjNzNjMTlkYzE5MTA1OGU2ZjJkZGZkIHB5M2sKKzg0NTc5IDk0ZTFmMjM2Yzg4ZDc3OTNmNmJiMTdjNGNjOWUzMmYzMDU3ZDM0MmIgcHkzaworODQ1ODAgNmJhMjBiOTAzOWFlNjk5MDI4Zjk4MjQwZjkxYTNhNDhhMDY4NjE3OCBweTNrCis4NDU4MSBlODNhZjE0MWRmZmRhYThmNTVhMjdlYzE2YzQ0MDIzOTZmYTg1OGMzIHB5M2sKKzg0NTgyIDFhMWU3MjU0ZDk2NTU2N2ZhNGQxZTZhYzFkZTE1ZDIzZjhiMTE5MDggcHkzaworODQ1ODMgZTRkZTIxNzZmOThlMzBmNGM0ZThiMGFjN2I1YzQyNTlhMGJmZjhmMCByZWxlYXNlMjctbWFpbnQKKzg0NTg0IDRhYzhhZTdlODAyMmM0NGVjY2U3MWViOTAxZTFkZjMwNjlhMWFlNjkgcHkzaworODQ1ODUgYWRmYTFlNDg4NzM0ZTJjY2U1NzJiOGMyNTE1NDhkZGU5OWM4NjFhNCByZWxlYXNlMjctbWFpbnQKKzg0NTg2IGMyMTk5MTc1YWRhOGRlODFmMmNlMWZhY2E1YmRhNjVmYzg5MzIxYzEgcmVsZWFzZTMxLW1haW50Cis4NDU4NyA2MDk1ZWE5ZGNmZjQwMDk1MDIwY2VkODM1MjY0NTlhZTg1MzhiNmMwIHB5M2sKKzg0NTg4IDFjMjJjMWU0NTNkNGExY2NlNzg1Mzg0YzgzNzhkZjEwZDJlMWEyNDQgcHkzaworODQ1ODkgODRjMjRkYjEzNjc3Yzc0MDIxMGFmMmE0NmM4MzM3NGUxYjVhOGE4ZiBweTNrCis4NDU5MCAzZTVhODkzNzZkZjU0NDA0ZmNmNTFmMDk0NTliMDU0YzA0ZDI1NGVhIHJlbGVhc2UzMS1tYWludAorODQ1OTEgNzQzMmU1MDhlYjY2YTllMGM4YWRjNDQ2NmU1YTAyNWE3OGY3Y2M4NyByZWxlYXNlMjctbWFpbnQKKzg0NTkyIDRhM2RkYjg2MmE3MmNhZmRmNWFhODMxYjBlNWUwZmYxOGY4MTE4ZDUgcHkzaworODQ1OTMgNWRkMWU1OTRkOTE5NWViNTEyOTA4NTFhMDFhM2E4ZDE3OTAxODExZCByZWxlYXNlMzEtbWFpbnQKKzg0NTk0IDRiNjhkNDczNDhhNGRhYjc4NTQ1NjIyOTA4N2EwNjYyNDc3OWM0YTYgcmVsZWFzZTI3LW1haW50Cis4NDU5NSA3NzBjM2VjMDU2ODU2YjQ0ODRiYjM0NjI3ODIzOTRlNDJkM2MzYTUwIHB5M2sKKzg0NTk2IDg5ZmU1MTc5YWVjNWYwMGM1ODJmOTkxOTM5YWEwMTQ5MWZkZmQ3NGUgcHkzaworODQ1OTcgOTFjN2Y0NGU0YmVhOWRjYWZhMTgzYTQyZWJjZDYwM2IwMzI4ZWVjYyBweTNrCis4NDU5OCBiMmY3Y2Y5YzY3NzYzNTlmMjc1MTYwZmFkMTUzZDU4OGUyMTczMTdmIHB5M2sKKzg0NTk5IDYzY2VlZjA0NTNmNDA2YWJkMjBmOWM0ZjVmMjIxOWM3ZWIzODQyYjUgcHkzaworODQ2MDAgMjQwMGY1NWVhMzEyNTMwODg4ODg1ZTBjZjhjZjg5YzAyMDI1ZmE2MiByZWxlYXNlMzEtbWFpbnQKKzg0NjAxIDVkNzNiMDM2NTczYjc4N2Y1MDIwMTU2YTZkZDAzNWZhNTY4Mjg0ZWUgcHkzaworODQ2MDIgZDZkNGI4NDY0YjhjZjZlYjEwMjg0ZGUxNWFmOWJiYzAxMzZjMTI2YyBweTNrCis4NDYwMyBhZjQxNGIyOWQ0Njc4NzEzYzI0ZjkzZGJiMWFhOTdmOTg3ODgzNTFhIHJlbGVhc2UyNy1tYWludAorODQ2MDQgZWYwYTA3ZDU0ZGMxN2QzMGI4NDk1MDYyMTZkNDQyZDIxZmZhZTFiNiBweTNrCis4NDYwNSA0YzY0ZTY4OGY2NjVlZmQ2MjUwNDcxMTRmODc2NDcwNDczZDkwNTQxIHJlbGVhc2UzMS1tYWludAorODQ2MDYgZDAwOGY0MDZkYzk4YzlkMWMzYjdkZGQ0ZDY1MWM2OWU1MTRjNjY2OCByZWxlYXNlMjctbWFpbnQKKzg0NjA3IGMyZDZmMGNmOTI2YTJmM2UzZmEwMGExNjYxMmQ5OTBkM2UxYTViNWQgcHkzaworODQ2MDggOTYwZGUwMTAwODFiNzYzMTAzYTk1NzRhZDBhMDJkYjg4ZDgwMDU5OSBweTNrCis4NDYwOSAzODRhZWU2MjczZTgwNWI2OTZmMDMzYTVlZmVkZDQyZDY5Yzg1ZjNkIHJlbGVhc2UzMS1tYWludAorODQ2MTAgMDNhNmY3ODM5ZDZkMzUzMmZlZTZiYzM4MTMxMTY2MTIzYTdmMmViOCByZWxlYXNlMjctbWFpbnQKKzg0NjExIDU1OGYzMzhlMTMyMDgxMTc3ZWM2YjBiZTM1YTk3NjdjNDI5MjdhYWMgcHkzaworODQ2MTIgZTA2MjNiNmI0M2I2MzdhMzIxMDVjMjkyZjhkMjRhZmRlOWM4ZjY5ZSByZWxlYXNlMzEtbWFpbnQKKzg0NjEzIGJhZjFhNDgyYjU3ZDc2NmY3YzVlNjU3OTUxNTY1NDU5NGExMTRiMDcgcmVsZWFzZTI3LW1haW50Cis4NDYxNCA4OTIzZTE0OTNhMzQ0OTM2ZWNiN2E4Yzk3MzA3M2RmMzU0ZjhkNTEyIHB5M2sKKzg0NjE1IGQyN2Q0YmQ0ODhkYzgzOTQ2NGVlMGM1MmUwMjRlNmI4ZWExZTQ1NTQgcmVsZWFzZTMxLW1haW50Cis4NDYxNiAwZmRhODJiMWJmYmJjNTM4ZGE2Njk5YmU1Y2M0MmQxN2M3YWNjZjRlIHJlbGVhc2UyNy1tYWludAorODQ2MTcgZDUzMzE3MTJiNTA5ZDU3ZjQyNWUxYTBkNzQwNGM5MTc1NGM1OWUwMCBweTNrCis4NDYxOSA3OWExNGQzNjg1NDAxYzM1MTlkODkxODVhZGNlYTZmYjA3NmNjYTVmIHB5M2sKKzg0NjIwIGUzZWRkMmY5YmI2YWMzMDZjMTY0YjFjMDM1NzhkNGFlNjIwZTEwOGYgcHkzaworODQ2MjEgZTYwZWYxNzU2MWRjZWM0MjZiMjIxZWEyYjIyYzA5MmNjMWYzZTEyYiByZWxlYXNlMjctbWFpbnQKKzg0NjIyIGEwYjRiMmRmZDlkNWE4MTNjYzQ1MDljNzQwMjFjMmUzZDFlYzIxNGYgcmVsZWFzZTI3LW1haW50Cis4NDYyMyA4NTE2NzI0OThmZTUzNGRiNmU2NTU3YmYxMTk1YTE2MzYwYmFjODBkIHB5M2sKKzg0NjI0IGM0N2ZmM2E1M2E0YTUxYWFlMDA2ZjNhN2FiMjZmM2VmOGIxZGJhNjcgcmVsZWFzZTMxLW1haW50Cis4NDYyNSA1NzU4NDQ0MjdhOTVjZmMxNDE0ZmYwMDQ2ZGE4NDlhZDY3MzI0Yzg2IHJlbGVhc2UyNy1tYWludAorODQ2MjYgYWE2NmRmNzcyZTIzNzg0N2EzMzllMWEzZWRlNDZmOTE1YmE4NGFiNCByZWxlYXNlMjctbWFpbnQKKzg0NjI3IGY4ZjY2ZWJjZDViMWViNzFhM2M4MmFmYjFlYWI2OTkxZWFjNWM3MGQgcmVsZWFzZTI3LW1haW50Cis4NDYyOCBkYzU5ODZkMGU1YTQ0MzE2YzI3MmM3ODNhZDFhM2FiNGNhZWNkZjMwIHJlbGVhc2UzMS1tYWludAorODQ2MjkgYTRjZmQ1YjVkZjk2Njk3NTMxYzllODUzOGY4ZmViNjY3MGIyODQyNSBweTNrCis4NDYzMCA0NWIyM2YzZjdmNmI5ZWNjZDQ0ZWQyMzk1OTg2ZWUwZmQ0ODczY2EyIHJlbGVhc2UzMS1tYWludAorODQ2MzEgMjk3ZjY2Y2IzNzY0NGE0NTI3MDg3NDlhNDAzNjYyYWQ4ZDc4MGUxYiBweTNrCis4NDYzMiBiMTg2NWNhN2I2NWMxNDZjZTBmYzVhMmJlNGUxYTJiYzNkOTJlMzU3IHB5M2sKKzg0NjMzIDdjMmViNWI2Y2M1OGM2NGJiZTA3MTE2ZDhmOTg1ZTJkNjlhN2JlMzEgcHkzaworODQ2MzQgODYyN2MzZWM5NzExMjZmNDA5NDc5MWJlOGQ1M2YwZDY1MWNhODc1MyBweTNrCis4NDYzNSBhMmFlZGRjMTliNjZiNWMzOGU1MjE5YWMzMWI2ZTZlOWUxMjdiOGQxIHB5M2sKKzg0NjM2IGIxY2YzZjdmMzA0Y2YwODRkZjRlMTk5ZTAyMmNmN2RkN2EzYTUwOTggcHkzaworODQ2MzcgMTMyMjI2NmY5NjExNWFkNTI3YzA0ZWU2MTEwYTFmYmE1YmYzYzcwMSByZWxlYXNlMjctbWFpbnQKKzg0NjM4IDQ0MWU5NGNlNDA4NzE2ZmFkNjc1ZGQwMmExNWFjM2ZiNDg5YjQxZDAgcHkzaworODQ2MzkgY2FmMGI0YjA1NjllYWQwNzIyN2I2MTQyMDdmMmNiOGQyNTg0OTgxYSBweTNrCis4NDY0MCBhNThiZjY2NzI1Zjg2ZjBjMGY4ODRkYmRhY2IyNzE3ZDVlYWZhMWZjIHB5M2sKKzg0NjQxIGY4Yzg5NmFkNzg3ZjhkMDhiMzcyNWU2NGI3MWFlYjAwNTI2YjlmZDggcHkzaworODQ2NDIgMmM1NDcyMTBmOGM5ZjkyYWUxZmFkYjcyNzBjNzdiMTZlYzFjMjQ4YSBweTNrCis4NDY0MyA0NjJlMGJlM2I2YzQ2ZjZmN2ZlNmI5MGFlOTExMjU3MTJkMzc4Y2IyIHB5M2sKKzg0NjQ0IGM4ODU1MGNhMGZhZmI2NGFlNTk5Y2FkMDY0MDUzYThlNmNmNThmNGQgcHkzaworODQ2NDUgNjM2MTliNDI1ZWNhYTM5MTRmZmE2Y2U5ZDM5Y2IwZWU3MWZjYzIxOSBweTNrCis4NDY0NiBmZWE4NmM1ZTMzODU4OTBhNTNlMzQwYTE3MGQ1YTFmODQ5ZjBkNzE2IHB5M2sKKzg0NjQ3IDcxYjI2NGUxYmI3MTY0NDc3OTExYjE4YzVkNWU2YzY1OGZkZjBlOGIgcHkzaworODQ2NDggOTY1OWU4YzQwMDc5YjI5ZjI2ZTViZGQ0MmI3NGUyMThkYmRlN2ExYiBweTNrCis4NDY0OSBiYTU0MDk2YjdhNDI4OTBlZmFiOWI5MTljYmQwYjc2NzY2MDQxMGI4IHB5M2sKKzg0NjUwIDM4Y2E2MzUxODA4NWY1NzRlNDAxMzIwNGNkNTI4MzQxNzg0NjA4NjcgcHkzaworODQ2NTEgYTUxZjQ2N2Y1ZTFlODBiMDBhNTk0M2I0MzU2NzY2N2I4MzMxN2RkZCByZWxlYXNlMzEtbWFpbnQKKzg0NjUyIGQxM2MyZjkwYzE2OWFhNzZhMmYwNjc0NDc5N2NjZDk5YTk0NDgyODcgcmVsZWFzZTI3LW1haW50Cis4NDY1MyAwMjdmODE1NzliNGEwYWMwMWY1NjJlNWRhNjcyNTdjMTRhYTgyNTc4IHB5M2sKKzg0NjU0IGQ0OTI3MTU0Yjc3YjhmMjM2MTBkZjE5ZTE0MTZjYmFiNjk5MzY4NTYgcmVsZWFzZTMxLW1haW50Cis4NDY1NSBmYzc2ZThjNjE3ZGM0N2M3NzlkMGMzOTQ5NzhiMjhhYjFlMjUzMmYyIHB5M2sKKzg0NjU2IGFlNDcwNzk0OWNiMjQ2MDkxZmJiNjJlNjE5MDQ4M2Q2MjI1ZTZmMmIgcmVsZWFzZTMxLW1haW50Cis4NDY1NyAxYjdlYTQzZTVjNzk2N2I1NTM2ZTRjZTM3Y2VjMDlhYTU0NmI1NmI5IHB5M2sKKzg0NjU4IDZmMTRmMDIzNTllODBhYjM4ZmNkMjc0NWRiYzI3YWQxNmE0MGExNTUgcHkzaworODQ2NTkgODQyMTdiMmQ4YzBjMDZjZDY5OGZhNjBjNTI2ZWU0NDI4N2ZkOWYyZSBweTNrCis4NDY2MCBiZWU2ODNjYWU3MWZjNzlkZTkwZjhiNjg2ZTQ2NmRlYWY3NDcxMGExIHJlbGVhc2UzMS1tYWludAorODQ2NjEgZjEyMDdkOWE5YjA3YzEzNmNjOTEyMmMzMWQ4MjEyYTdjM2Q3MDBjMiByZWxlYXNlMjctbWFpbnQKKzg0NjYyIDJkYTVlY2QyMjRmZmU3ZmU3NDljYzdhZjNjMGY0NjI5Yjk1ZTBlNmUgcmVsZWFzZTI3LW1haW50Cis4NDY2MyA1YWJhY2QzNTE0ODUxZGEyNzRhMWRhN2FjZWU4YTViNzEyYjE3Y2JhIHJlbGVhc2UyNy1tYWludAorODQ2NjQgYjMwNDMzNmUwZTM1YjQ3OGQ1MGQ5YzE3YWJiNmJkZTM0YmI1ZGU1NSBweTNrCis4NDY2NSBlZGQwNTZjNGE0MGQyMjI1NjBkNjkxMjJlZDcxZGE4NWFmYmJhNTVkIHJlbGVhc2UyNy1tYWludAorODQ2NjYgYjhlNTEyNWU2ZmJkNzM2YjE0MzkxMzllYTQxMDNlZTZkNGM0NzY4MyBweTNrCis4NDY2NyA0NTdhYThkYTQ5MGE4NzdmZWFjMDUyYWYwNDQzNmQ0NzEwMDRkNjI3IHJlbGVhc2UyNy1tYWludAorODQ2NjggYzIwZGU5NmE0MzVhYzYwOTUwNGUyMjc5OWUwNmVhOTU2ZDZiMTQyNyByZWxlYXNlMzEtbWFpbnQKKzg0NjY5IDlmYWE4MGQwMTExZjFmMzJlZWI0NzNkYTllNWQ1MWViMjI5ZDIxZmQgcHkzaworODQ2NzAgYjMxNGFkYzliY2RlZWFkZDAxZWEzMzBiMGFjMzdiZjI5N2Y4OGM1MyByZWxlYXNlMzEtbWFpbnQKKzg0NjcxIDJlZWE4OWQwOTNlMjE0MjEwOGFhYjA3NDBmMzA3NTBhZDQ1ODgwZWUgcHkzaworODQ2NzIgYzY2NjlmNGJmOGM1NGVkYzU1M2NjYmNjMzE3YzY4ZDBhZTM4YTkwYSBweTNrCis4NDY3MyBkMGY5YWZjYjA2MTllZWIwOGUyNzVkNTRiZjgwNTM4MjhmNjZjMDMxIHB5M2sKKzg0Njc0IDM3OGUxNTdhYzAyNWZjOTlhZWVhOTRiNjMzMjQ4OWQ1YWI1ZWQ5OTcgcHkzaworODQ2NzUgYjQzZDYzYmYwZjc4ZjEwNDU0M2E2OGYyOTg5MWRkYTNmN2I4NGUzOCByZWxlYXNlMzEtbWFpbnQKKzg0Njc2IDIxYWU0MDQ2ZTQ3MTAxZDkyYzYzYWRiZjhjNDdlYTY1YjE5Y2MxOTggcmVsZWFzZTI3LW1haW50Cis4NDY3NyA3ZTJjZWI1ZDI4ZTMzOTMyZmUyMTU1NjcwODg1MGU2MTdmNDU3ZjE3IHB5M2sKKzg0Njc4IDM5MGFjZjUxMzRlOTRhYTRjMjJiZDZjMzgzNzlkMjE1ZmU1N2U4ZTggcmVsZWFzZTMxLW1haW50Cis4NDY3OSA1YzRiZTYzY2FiNGEyMmUxOTA0OGY1ZjhjM2VhMjE4NGMyZTMwOTE4IHB5M2sKKzg0NjgwIDkzMzk3MzhmODUwNGY4ODM3MjA5ZmQyZDU2OTdiMjM3NjRjNDUyZTIgcHkzaworODQ2ODEgMTZhNDJkNWYyMjA5YzNjYTEzOWViODRlMjdhMGMzMDRmNjMwYWU2NyBweTNrCis4NDY4MiA5ZjBkNjljYWVkM2IyZGUxNjg1OGZjMDhmYzU4NzdkNzZkODI3MGQ4IHJlbGVhc2UzMS1tYWludAorODQ2ODMgZTI3MDMwZTBjY2VkYThlODg3OTk4N2I4OTM5N2E2NWIyNjQ2MDYzOCByZWxlYXNlMjctbWFpbnQKKzg0Njg0IGNhZWNiNmViYzgzYzJhNTZhMGZjOGFjMGJkNTY5NDdiMjMwZDAwOWQgcHkzaworODQ2ODUgMjVjYzIyNmRjOWJkNGFiMGUyNGU0ODI0NmFkNzM5ZmYwMmM0ODIyMSBweTNrCis4NDY4NiAyNTI4OTVkNDkxNTcwZDVhMjc0NTI4MDliNTgyNzE3YmU0MDliMjRkIHB5M2sKKzg0Njg3IDk5OWQ3ZDIxMmYxNzkyZTA0Y2RmM2E4ZmM2OWIxMTgyNTYzNjUxM2YgcHkzaworODQ2ODggNTgzMDc5ZGUzN2UxMzkwYTgyMzhkMzE0NTE2ZDJlNmI1MzBlNTQ2NSBweTNrCis4NDY4OSA5MjY1NzUyYTFjODNkOWE1MTlkMWIxMjA4OTM4NDdlY2Y1ZTZjNDFjIHB5M2sKKzg0NjkwIGU4MjdiOWI4YTdiNGE1ZWVhMmNjYmFjYmUwZGEwZGFhYTUwMWQ1N2EgcHkzaworODQ2OTEgMTE2N2UzOTNhYTRkNmE0ZWUwYWEzOGM3NjNjOGE2OTk5MDMxMGQyNCByZWxlYXNlMjctbWFpbnQKKzg0NjkyIDZhY2NjMmM2NWNiODQ3ODAxZWI3ZGMyNDcxMGVkMzlkMGE4NzJjYTggcHkzaworODQ2OTMgNTY4NDRiNzE2Y2Q3NTYwYWMxMDAyZmQ3MGMxNjEyZTYzNGM3NmI0ZCBweTNrCis4NDY5NCA1ODZhNDExY2FjN2M3MGY4ODg2YzhjNzUwY2NmOWJiMjc0MTIwYzhiIHB5M2sKKzg0Njk1IDQ3MGE1MzYwNTcwY2MwMWU3ZTU5ZWU0MmQyYjNkOTU4YTg2MDBhNmYgcHkzaworODQ2OTYgYTYwOGZlMWU4NmYwMDgyMjQ0N2EwZGI1NGY1MzEzOTgyMDQzMDZiZCBweTNrCis4NDY5NyBmMzFlMGM3YzAyZTMzM2Q3OTIwZTIzM2E2ODY2ZjgyOTlmNGEwMGIzIHB5M2sKKzg0Njk4IGUwODBmMTFmY2ExOWIwZGQyMGZhOWQwNzg0YmUxZGZiNGM2YjE0YjIgcHkzaworODQ2OTkgMTc2NDc5NmU5ZWNhMmQzNTVlNGRmN2MwY2NkMzJhNmQ1ODQ5MjE5NSBweTNrCis4NDcwMCBmZTQ3ZWE4OTcyZWJlNmJhM2Y4OGI2MjU2YWM5MWQ3OWE1ZDU3M2IwIHB5M2sKKzg0NzAxIDg4N2VmMzk5NzZkMzlkZDg1YWZkODQxMTIxZDIyNWVkYjJlMjYzOGEgcHkzaworODQ3MDIgZWZjOTlhMjA3YmJlN2QyZDYyOGViNjY2MjM2YjFjYmZhYTY1OTM3ZCByZWxlYXNlMzEtbWFpbnQKKzg0NzAzIDIwYTIxNTNiMGRkYTg5NWQ0YjBhNGMxYmFkYTBkYzU0YTY1M2Q1ZmIgcHkzaworODQ3MDQgMWNmYWQ1NWRlNWJkNjYwYTJjYzcyOTZlZDYxZWRmM2NkNTZmMTJlOCBweTNrCis4NDcwNSA1YzljMDRjMjliMmMwYmZhOGNlYWU3YmQzNzNmMjNiNDI0ZGM2ZTE0IHB5M2sKKzg0NzA2IGVjOTJhOWZkNzc4MDZmMGE3OTEzYmU3MDkzODZiZGQ0NGY0Mjc5YmUgcHkzaworODQ3MDcgZjcyZmQyY2RhMzQ0MmY1OTUwNDJjNDRhNDA3ZjBlZjcyNzZiOTY3MSBweTNrCis4NDcwOCBjYjkxMzA3ZjcwNzJlYmFjOTRlNmFiZTE5OTE4NjcwMGFlODNmYWUzIHJlbGVhc2UyNy1tYWludAorODQ3MDkgZTBhN2I2OTY4NTVmNDBjOTQ5MzJlOTg3Y2E1NDUxNmM2OGJjNzIyYiByZWxlYXNlMjctbWFpbnQKKzg0NzA5IDUyMWViN2ZlZTY3YTc4MWNhYjVlZDFmNTM4ZGNhYzk3YmE1Nzk0ZDIgcHkzaworODQ3MTAgMWJlODc0Y2U0ZWFlZjMwNDQyNGNlOGVjZjM4YTlkOTc2YjJmZGFkYiBweTNrCis4NDcxMSA3Y2YzYmYwMTUwYTRkNWM2MDI0Y2M3MDQ2ZDM3N2QwZDVlMmE4ZTU2IHB5M2sKKzg0NzEyIDAwNDI1MjA5YzQ2ZWUyNTU3YTc2YWZiOGViY2QwZDZjMzY0OWQ2ZDAgcmVsZWFzZTMxLW1haW50Cis4NDcxMyA2ZWI0YWZiZTc3ZTg1NDgwYzM3MTA4NGYxZmIyODdhNzk3ZDQ4ZWVhIHJlbGVhc2UyNy1tYWludAorODQ3MTQgZDkwNWM5NGY5YWUxZDFhZWRjNjI3MzQxNjE1ZjFlZmY5YTkwNzRhNCBweTNrCis4NDcxNSA4ZjgxZWQ4YWNiYjAyNDQ0ZWE3NDFhNjY1ZTY0OGE0M2ZjYThiNDQ4IHJlbGVhc2UzMS1tYWludAorODQ3MTYgNjAxYTBkZWZkMTViYjJiOTkyYWYxNDEwZjVjYzdhMzFkZmZkMDAwMyByZWxlYXNlMzEtbWFpbnQKKzg0NzE3IDdjOGYzNDU5ZDlhZjhhNzZjMzIxNjQ3NmJlZWI4NjMwNTA2OTQ2ZjcgcHkzaworODQ3MTggMTdhOGY3MDRmMDdkODk0MmI1N2I1MmFkMjU1MjYwMTU2ZmU0MGNiNyByZWxlYXNlMzEtbWFpbnQKKzg0NzE5IGZkNjczN2FhODhkYzQ2ZGZhM2NlNzlhNDM2NGE3MzUxZTY3Y2I3NDIgcHkzaworODQ3MjAgNTMzODU4YTI5ODlhMmZiOGQ3ZDY4YTAxYTAzODM4ZWUwMzVhMTIzMiByZWxlYXNlMzEtbWFpbnQKKzg0NzIxIGM0ZTcyMzNmNTQ4ZGJkZThmZWI2NjczZWE0Mzk1OTljMzkzZTJiZmYgcmVsZWFzZTI3LW1haW50Cis4NDcyMiBiMDA3MDAxZmNhNzEwYzVjMDYwZWUxMzNhYWU4Y2NlNGNiODkwNDNmIHJlbGVhc2UyNy1tYWludAorODQ3MjMgYTM1MTA4NjEwNWM1M2NlMTQzM2Y2NmQ0N2JkOTAzZTVmNzI2NDZlMCByZWxlYXNlMzEtbWFpbnQKKzg0NzI0IDVmM2E2NDU2NGM1MWExMjg2MWIwYWUxZjFkZmViNDE0ODhmMzYxOTMgcHkzaworODQ3MjUgNTY3MTRlOWM2M2VmYjg0YzljNTcyZGVlOTQ1NjBiYTEzODJhZWQ1MyByZWxlYXNlMjctbWFpbnQKKzg0NzI2IGMzNWI0MmE4ZGEzZmI4NmQ4NzIxNDgyMDRmNWRhNDRlNTI3ZTk2MjMgcHkzaworODQ3MjcgZjNiMWVlYTExY2UxOTViYjM3YzE5NDZlMWQ5ZDZmYTIyMTA2ZWFiYiBweTNrCis4NDcyOCBmNDMyMGUxMjRiMWZiMWZiNzA1ZThiMTNlMWM0MzdmMGQ4NmNjNDI4IHB5M2sKKzg0NzI5IGIwYzlhODJlMGVjNWEzMzdlYTY0ZjAyOWIyYWQzNzIxYjM4MWYwYmQgcmVsZWFzZTMxLW1haW50Cis4NDczMCA4NTJiYjA1MjE1NmE4MTA5YzgxYjUxMGUwMmZiMjk5NDcwY2UyMGMzIHB5M2sKKzg0NzMxIGVkNDNlYmRhMzVmMmU1ZGYzOTg2NGRjMzk1YjdjZjM4YTJmN2EyY2YgcHkzaworODQ3MzIgNjM5MzlhZmFmOTg0YjRhNzkwY2ZlZDRjNTA3ZWMzODA3YTA0ZWNiNyByZWxlYXNlMzEtbWFpbnQKKzg0NzMzIGVmNmYwMzk3MWZiMzQ4NzBjZDE5YzAyNTc5YzljZDA0OTE5ZTIwODUgcmVsZWFzZTMxLW1haW50Cis4NDczNSAzODA4ZTM3OWZjM2NlOTNhNzc4Njk0ZmE5M2IyOGIxZGJiYzQ0NWZhIHB5M2sKKzg0NzM2IDM3NzRmNGRlZjc1NGYxZjhhNmI1YTlhZDkzMTAyOTc4NWYxNWM3MmYgcmVsZWFzZTMxLW1haW50Cis4NDczNyBmYjkwZjJmZjE3NjRiOWNlODI2OTk2ZWVhOGQ2YTlkOWVhNzE2MmE0IHB5M2sKKzg0NzM4IDY3ZWQ2ZDRmNzBiMWE2NmZiOTI2ZmFhYWQ2YTdiYjI1ZjhiMGIwNjMgcmVsZWFzZTMxLW1haW50Cis4NDczOSA3YWMwZTYwN2M0ZDY2MmEzYmQ2NDdjNTI3NzNlYzM3YzBmMzQ4NDE4IHJlbGVhc2UyNy1tYWludAorODQ3NDAgZDJlNTgxOTg5MzNiZTQ4YmYxYjlmZDFiYWU4MTgzMTE2ZGIyNTc1OCByZWxlYXNlMjctbWFpbnQKKzg0NzQxIDg4NjliMWI4NTQzNDhjNDA5NmZjZWFkY2UzODc3ZTczOTQ0ODlhYmYgcHkzaworODQ3NDIgNjNiZGE3ODlkNzNiNjNmN2FhODNlNzM2ZTIzNDA4Zjc5MWE2ZjU1YyByZWxlYXNlMzEtbWFpbnQKKzg0NzQzIGZhOTUxMGM3OTY0ODFhMGQ5NDY1ODk4N2QzNDgxOTczNGNmNTRjYjEgcHkzaworODQ3NDQgYjdlMjQ0ZjM0Y2M4MGQwM2I3NTFhNjcyNTUxYTg0MWMyZDgyZmU4NyBweTNrCis4NDc0NSA3NmI4ZGFkYTA2Y2JlNmE5MzI1MDBiODY0OTY2NzAzZDJiZTA4NDA2IHJlbGVhc2UzMS1tYWludAorODQ3NDYgNGI5Yzg1MjZlYTRjYjcwY2U0ODA4MDhmMmE2M2JjNTM0NjBhY2U5NiByZWxlYXNlMjctbWFpbnQKKzg0NzQ3IDZkMjgyYjU4ZDkwYWEyZmQzNmE4MTMwOTg2NTU4ZDY3Mjk5ZDRlN2MgcHkzaworODQ3NDggMmJiNGRkMmFkNWI1MDcwN2E4YTllMTQyMWUzMjJlNDYyZWI4ZjU4YyBweTNrCis4NDc0OSA3YWI1OTIzM2U4M2Y2OWI1YjM3MWZmNzExODg5MTYyMDljZTk1YmEyIHB5M2sKKzg0NzUwIDkyMTAyOTUwN2FkN2Q0NGM0NzU5YzkwNjBiZjlmM2UzZDVjMDNmYmMgcHkzaworODQ3NTEgYzFiNzA5MDc2YmY2M2ExZDFiNzUyMjI5YTY3OTUxNWE3Yjg1OTQ3YyBweTNrCis4NDc1MiA5Y2RiYTY4NjRlYjYwY2EyYTU5MzQ0OTFkMTk1Yzk1OThkOTcxNjU5IHB5M2sKKzg0NzUzIGEzZWU4NzdmZWQ4OWI1ZWQzN2NjYjk4ZDMwYzg1ZDFlZWQxMTBmNTEgcHkzaworODQ3NTQgYjE4NmFmYTM3MGU2ZDEwNTVlNTFjZmJkYzIxNDZlMjUzYjY0NjdkMSBweTNrCis4NDc1NSBjZmExMTljM2U0M2NmZTg3MmRkNTUzZDUwNTM4YmE1MjA1Mjk1NTQwIHB5M2sKKzg0NzU2IGVlOTY3ZjFjNzMxYjdkMDM2ZmYwNDMxNWQwNTAyY2JmODg2MTUwMjQgcHkzaworODQ3NTcgMGRlODE2NDc1NTNiYTA0YWI3MTQxNzM2ZTRhZjMxNzUyMGM5MWU0OCByZWxlYXNlMjctbWFpbnQKKzg0NzU4IDkwNjRmYzU3ZDNmYTkwN2QxMTAxZmY2MTMxYmJhNTA0OWFhZGVjNmIgcmVsZWFzZTMxLW1haW50Cis4NDc1OSAxZTg5YjVlZTAyZjg1ZWY5YjI3MDhjYTQ0NmE5YTE2NDE4NTY2NjA2IHB5M2sKKzg0NzYwIDU4NGIxZWRhMTE0MTQ3NjNiMGFmYWQwYjVhYjM4Mjk1YzM2NmM5MzAgcHkzaworODQ3NjEgMzE0ZDQxNmY0ZDIzZTI4YzY1NmRkNTc3MDFlOTk0MzI2YTZiNTUwYiByZWxlYXNlMzEtbWFpbnQKKzg0NzYyIGIxZTc2NmM3OWEzNjc3NDljOWJlM2VhZmI3MjFjZWQ1NTI4NjJkYjkgcHkzaworODQ3NjMgYWRkNjY0OTI0YWU5OTExYzA0ZDdmMWZjMzk1NDhjN2MzZTFhZjY0NiBweTNrCis4NDc2NCBiMGQyNmU4ZDhhMzMwYWE1NjQyMDM3YmIxODlhNTc0ZGUyYzVjYWJhIHJlbGVhc2UyNy1tYWludAorODQ3NjUgMmY4MzcwNTM4ZmZiYjE3YzNhY2FkOWU2NGNkYmQxMGVhZWE4M2NjNSBweTNrCis4NDc2NiAyOGU2YTQxYzViYTBiMDQyZGM4ZmRiOTA5ODYzZGE1Njg3MmJiYTYzIHJlbGVhc2UyNy1tYWludAorODQ3NjcgODJkYjgwYjYwYjg3YmJhYmYzYWRmNTg3YWU0NjU4ZGQ3NjIxMzFiNiByZWxlYXNlMzEtbWFpbnQKKzg0NzY4IGQwZmMzNTc4NzQ2NzQ2OTQzMmM0MWVkNzJiODI3Y2Q3NzdjOTY1OWUgcmVsZWFzZTI3LW1haW50Cis4NDc2OSAxZTkyMmQ3MWNlNGJmNmExODk3M2Y1MzM3Zjg2YzM0ZWY3NThhZjFkIHJlbGVhc2UzMS1tYWludAorODQ3NzAgYmJhOGZhODhkMTlhMjFiOTM4MjlmNWVkYzNhMTk2MTY1ODY3Yzg3NCByZWxlYXNlMjctbWFpbnQKKzg0NzcxIGE1OWFlOTM4OTEzMTkzNjU4MDZhYzA5YzVjNDcxOGJjMThlMDFiMjMgcmVsZWFzZTI3LW1haW50Cis4NDc3MiAyNzRhMGJmNDY4NzFlZjNhNTkxZjJiOTNhMzEzZWZjODIwNjlkZDNiIHJlbGVhc2UyNy1tYWludAorODQ3NzMgNDQxOTlhYTg5MzJiN2QxNGQwM2EwZTAzMThhOWI4MDVhOTBkYmJkMiByZWxlYXNlMjctbWFpbnQKKzg0Nzc0IDU1N2UyNTM3YzlhZTIzNTM4ZDlkZGI0ZWExZWI0OWJkYzQ1OWRmZTggcHkzaworODQ3NzYgMzMwZDc5ZmNiM2QzZDU4NjI4ZjhjZWFiMzU1ODE1M2M5NjU0YTRhZCBweTNrCis4NDc3NyAwZjNiOGY5MjhlYzEzZDhmOTFlYzQ5MGU1YjUyNGZlOTBiYTdmYWFjIHJlbGVhc2UyNy1tYWludAorODQ3NzggM2QyMmVlNjVlNDA3NWE5YjM2YjM3MWMyYTQzODE1MzMxZTQ1YjQ2OCByZWxlYXNlMjctbWFpbnQKKzg0Nzc5IDJhZDhkN2NiY2VhYmIwMTcyMDU5MTI4MmYxMzU3NzViNDVlNWJiZTggcmVsZWFzZTI3LW1haW50Cis4NDc4MCBlYTEyMWY4NzMxYTc4YmI1NTVjYTQyNTBiYWVkNGVmZDBjOGNmM2YzIHB5M2sKKzg0NzgxIDZmZjBlZjFmY2IzY2Q5OGU1MWIzMzU4NzRhODY4MmFhZThlYWE0ZGYgcHkzaworODQ3ODIgMjA1ZmYyYjAyYzc3MTIwZWUyMGIxNzdkYzNiNzY4YmU3NDY0N2Y2OCByZWxlYXNlMjctbWFpbnQKKzg0NzgzIDdkYmZjN2VmMzlmMmI2MzZkMzBhODc2NDUxMzEzZDk3N2MxOGQ4MzkgcmVsZWFzZTMxLW1haW50Cis4NDc4NCA1NTczNTVlNDZiYTYxOWRlNTM3NjJmNzUzMGViZDRlZDdmOWVhNWNmIHB5M2sKKzg0Nzg1IDc3Yzg5Yzg5ZjYwZTExMjI4OWZlNzljNDNkOTdiZWUyNTdiYmI5ZTUgcHkzaworODQ3ODYgMmQwODRhZDQ2OGRiZDAwYzk4OTBjYTgxNDk2MDI3N2RmN2UyZTMzOSBweTNrCis4NDc4NyA4MjM0ZDI2YjEzYzE5ZWY1NjlkMDQ4MTgxOGJjMGZkMDk1M2ZjOTQ0IHJlbGVhc2UyNy1tYWludAorODQ3ODggOTFhMDBiNmIxMjhiZWQwZDA0ZWM4M2U3OTVmY2EyZTBiMzZmYTRkMSBweTNrCis4NDc4OSBlYTg0ODNmOWU1NWFhNjYwOTMzMjBjMmYxNDIyYTg2NTRjYzAxOTg3IHB5M2sKKzg0NzkwIDlmNTVmYWFhMzE5M2FjYzY3MjQyYzMyMmU5YzYzM2U0Nzg3Yzc2YzYgcHkzaworODQ3OTEgZTJkZWM5YzBkMTNjZmNhYmMxMDdhYzg0YmM0M2Q4ZmNjOTJiMTEzNSBweTNrCis4NDc5MiBjZmFmMGY3ZWUwYzJjOTJlYzMxMDdiZDJiZGQ2MjZjYjVlMTQ3ZjE4IHB5M2sKKzg0NzkzIGE2MGRlZWNhYzI0MjRlZmQwYTNlZDA0YmMzYTUwM2MwOWM5ODlkMjIgcmVsZWFzZTI3LW1haW50Cis4NDc5NCAzYTI5NjNiNmY0NDNlODUwMTkwOGZjNzFjZjAwODAzYmE0NTgxOTg5IHB5M2sKKzg0Nzk1IGZiZTVkMDhhOTg2NjEzOTliZjY1NzFlOTJlOGJjOWU2NzdhN2VhMzAgcHkzaworODQ3OTYgNjllZDVlY2I1MDI2YWRkY2I1MjIzNzNlN2FmNWFmYjZmYzZhNmYxZSBweTNrCis4NDc5NyA0NGU0M2JlZDY3NGE1NGU1OTEzODQxODgxMWUyNDE0ODBhOWVmNjEzIHB5M2sKKzg0Nzk4IGU1ZjBmZjdkN2EwNmVlOTBiM2M2ZGI5OTNhOWRhNWFlMWNhODJjOGQgcHkzaworODQ3OTkgNGE0ZmJlMDIyN2FhNDk1MjVmYmFhMmI1ZTNkNWQwNjZlYWFmMzdiMyBweTNrCis4NDgwMCAyZDhlNDA4NTkzNTEyZWNjMGQ1ZDAxODUwYTg2MTNlMjg3ZDc0MmQ4IHJlbGVhc2UyNy1tYWludAorODQ4MDEgMjBjNDVjZGFkOWNmMWU4ZDQxZTZjNWM5MjA3NmI4YWM1MTIxYWY4YyByZWxlYXNlMzEtbWFpbnQKKzg0ODAyIGIyNzRhOTBhOGUyYmRmZTA5YTBhMDA1NDNjOGMzOWQwMzBlYjEzNmIgcmVsZWFzZTI3LW1haW50Cis4NDgwMyBhNDJkYjhmNTRiYTE3MDZkMzE4YWQ3NmU1YmJmZTczY2E0MmU4MTFmIHB5M2sKKzg0ODA0IDEyM2YzNTE0YjQ1YjUyN2JmMjYyMTA3NTU3MWU0NzM1MmRiYjE1N2QgcmVsZWFzZTMxLW1haW50Cis4NDgwNSBkYjllNjJjMjY1ZmY1MGU1OTNjYjJlNDY3Y2RmNjU3ZGMyYmVkZTFiIHJlbGVhc2UyNy1tYWludAorODQ4MDYgN2Y5OWFjNTMwMTRhNTQyODFmOTliZWQxYzkyZGUyZjQ3MjE1NDgxYSByZWxlYXNlMjctbWFpbnQKKzg0ODA3IDBlOTZmOWZhODRhMjRhNjlmNWExY2FhNGM4MTM0ZWZmY2FmZTJlOTMgcHkzaworODQ4MDggZmU1ZjljYzQwNzZlYmI3OTZiZTdkYWZjOWM1YmU0MDhhNmU1MDUyYSByZWxlYXNlMjctbWFpbnQKKzg0ODA5IDgwZDFjNzczNGRmMjU3ZTQ3YTljNjFiYjg0YWExODg5NDQ3ZDlhMzggcmVsZWFzZTMxLW1haW50Cis4NDgxMCAwZTI5YWU1MWQ5YmM2YWUwM2E5N2YyNDYxMzRmYWNmMDdjYzE4NTY5IHB5M2sKKzg0ODExIDkwNWVlOWUzZGE2ZGUwNzFhODFkNTc1YmNhOTZiOGE1NDllNTdjOGUgcmVsZWFzZTMxLW1haW50Cis4NDgxMiBlZGVkMGNhZWU2MjEzMzEwMDJlOWFlNThiZGJmZGRkMDJjOWM3ZDc5IHJlbGVhc2UyNy1tYWludAorODQ4MTMgNTM0ODUzYmE4Y2QzNmFiNWYyY2VlYzhhYzdlODY1ZWQ1YTkxZmFmOCBweTNrCis4NDgxNCAyYmYyYTdhNGUxN2Q2NDUyYmU3NDA1NjY2OTZjMjA2N2NiMzA5NGY3IHB5M2sKKzg0ODE1IGQ3YWUxYjlmMTBhYjdiNjgwMzNkODg3NmU4ZDYyNmI1MTE2M2RlNDMgcmVsZWFzZTMxLW1haW50Cis4NDgxNiAyYjlkZWEyYTJmZmZkNjI5MTMxNmM0YWQ4YTE5ZGQ5ODY0OGFkNzBiIHJlbGVhc2UyNy1tYWludAorODQ4MTcgMDcxYmQ4ZjM1MzVhYzBkZmNlYjQwNGEyNjM4MGQ0OTc5YmYxMjlkOCByZWxlYXNlMzEtbWFpbnQKKzg0ODE4IDM5NzdkYzM0OWFlNzk0MzBhMDdiNWU5NjA0ZDNjZjViMWUzNzY2NGIgcHkzaworODQ4MTkgOTE1MWQ1ZmFhZTNkNmE4NzI0YTViNzViZDcyMTY1YmI2NTM5ZWZlZCBweTNrCis4NDgyMCBiODFlOGUzZmE1YmJlNjc2ZGJkYTA4NGZjZWM5YmFhMGUwNDgzZTlkIHB5M2sKKzg0ODIxIGY2NDNkNTNjNTFiZDhiMTcyY2ViMTk4OGViZDhhNTA3NzQwYmIxOWEgcHkzaworODQ4MjIgZTYzM2UzYTZiMjU1NjhmYTBlZGIzOTU0MTI3OWVkMzlkOTNiMGMwZiBweTNrCis4NDgyMyBiNjk1MWIwNTIxN2IyMWFhYzY4NzcwYjNjZTNmNjJmNzZmNDUzYjNhIHB5M2sKKzg0ODI0IDM1ODQ4YTNiN2Q4YTVhZmJkMmFkODI1MGJmODY0Y2NjMzRkNTUyY2EgcmVsZWFzZTMxLW1haW50Cis4NDgyNSA3ZWY1YzZiZTcyMzI5N2ZmNzcyNmRjNDNkMjA3NDJhY2E0YTgxMzg2IHB5M2sKKzg0ODI2IDlhZmZiNGQ2ZTk3ZTJkMmVhZWUzZTc1ZTBmNDI1NjRkMTQ1ZjBhMzcgcHkzaworODQ4MjcgYzc3OWRlNjQ0MDVhOTAzZDQxOGFmYzMxN2NhNjY3MGUzZjE3OWM2ZCBweTNrCis4NDgyOCBkODhmZGY1YzViMzc2NDJlMTRiOWZkOGZjMzgwY2U1ZDM4ZTQwZTJlIHB5M2sKKzg0ODI5IGJlZDk1MGNiZDBjMDFlNTMwZGI2OTFjMGM2YmYyYmY3ODA1ODNhNDAgcHkzaworODQ4MzAgNWIwMTg3YzBkMDAyNDgxMmNkYzIwZjNjZGU4NDc3NzZhOWExYjViOCBweTNrCis4NDgzMSBiY2U5NzkzZmI1NDUwZWQ5MWI1NWFhNDFkZGZmNzljYzVmZWE5YmYyIHJlbGVhc2UyNy1tYWludAorODQ4MzIgYTk3ZDEyZTU0NjVmNzk1Mjk3NGQ0ZDBlYzgwOWJiMGUwNTI4MWJlMyByZWxlYXNlMzEtbWFpbnQKKzg0ODMzIDYxZGZjNzk2NTdkNzM3ZDJjMDcyY2VjYzBmYWUwMmQxZDIwYWUzZmMgcmVsZWFzZTMxLW1haW50Cis4NDgzNCBjMGQzMTY3NzczYTk3MzIzOGJhNjhkNzk5YTFhMjA2MDQxNjMyMGFjIHJlbGVhc2UyNy1tYWludAorODQ4MzUgYmViOWQxNzY1MDNlNDYyYTQ1M2JhN2Y5N2VmOTcyY2U2MzllMWFiMyByZWxlYXNlMjctbWFpbnQKKzg0ODM2IGFkNjNmOTY2OTIzYzQxMDM0MTYzYWFiZjBhZmM4MGM3MjY2NWY4ZDggcHkzaworODQ4MzcgM2VkYzI2MzgwZTQ5NmFiMGYzYjg2YWJiMjdjYjVmNjUwNDhlYWFkYSByZWxlYXNlMzEtbWFpbnQKKzg0ODM4IDFkZWJmZjQyZWE0NmQxMTNlYzAwZTAyZTFjYTQwMDY0MjkxY2JhNzIgcHkzaworODQ4MzkgZjJlYzAxMTVmOGIyMDNlNTFkNDc4MzVjMGM5M2FlM2EzMGU3NzU2YSBweTNrCis4NDg0MCBhMTZiNjdkNGYzMDMxNmQxMGNiYzQxMzFmNmMzZmVhZDI4NGJmODVhIHB5M2sKKzg0ODQxIGI1Nzc0YjI3YjNkYmQ5YWVkMmY4ODE0ODcwMjVlZmNhMzQ4ZGM2OTAgcHkzaworODQ4NDMgOTg1MDcyY2QzMWQwM2I4MmZiYzhiNTQ1OTdhNzFlOGU1OTE2MGYyMSBweTNrCis4NDg0NCBkNjU3ZThhNjAxMjY2NDljZjk1MzZjMzYyYzRkZmVjODczNzM1ZjM0IHB5M2sKKzg0ODQ2IGQxNzcxYjRjZDBjYmE4MzJhYjdhMTQ0NzM2Njg4NTM4ODY3NGU1YzcgcmVsZWFzZTI3LW1haW50Cis4NDg0NyAxYmU5NTBkY2JiMWE1ZjgxYWVjZjJiYjRmZWE0Y2E1ODNhMWRkNzJjIHB5M2sKKzg0ODQ4IDIzMjQxNjdlYzAxZDNhYTIwZjYzNTMxZTVjNDM5Njg5OWRmZDVjMjAgcmVsZWFzZTMxLW1haW50Cis4NDg0OSAzZjAwMDQ3MzZkMjgzOWNhNDQ2NDQwYzRiMGU0YzI3ZTc3Y2E4ZjdjIHB5M2sKKzg0ODUxIGZkNWM0Y2ZlZDdjZDBjM2FkYjBiMzdhNWI2M2RiYzM0MDliYzY3MjEgcHkzaworODQ4NTIgYTE3N2RkZGU0NWQxYjc0YTE2Nzc5ZWJlZTZkZjRlZTIyMTYwZmZkNCBweTNrCis4NDg1NiA1NzYxZjhlMzUyZWMyMWZkZDZlNzYzZDhkMDJjMDZmZjU1ODMwZDg3IHB5M2sKKzg0ODU3IDY4OWE4MTNmNGFmYzBkZDlkOTY2YmQwODczYzZmZmQ0ZTUwYTA1ZmEgcHkzaworODQ4NTggYTg4NjlhZjVkNWQwY2E2NzUyNjllZjUxZWY0YmUxOWYxZDZkZDkyNiByZWxlYXNlMjctbWFpbnQKKzg0ODU4IDgyNTg5YTg4OWUwNzBmZjc3NzExYzdmY2U2N2E3MWUwMjRlZTBlYTAgcHkzaworODQ4NTkgYzQzOGY5NjM0NmU5MGYxYWJlZGY3YjMxNDFhYmQ5NzFlZGE1ODk2MyByZWxlYXNlMjctbWFpbnQKKzg0ODU5IGUzYzNjMzBmMTQwOTgwODhhNGQxZjk4YmU1YWE4YjdmZDM5Y2Q4YTEgcHkzaworODQ4NjAgZmE0N2FmNzNhNjkxZTAwNmJmNzEwNWQ3ZTY1NDExMzU0NzgyNjFjMSByZWxlYXNlMjctbWFpbnQKKzg0ODYxIGNhMzU0MmFkZWUwZGFlYmMyY2FkNmE2NDdmNjliY2RlMTg4NmQwNDIgcHkzaworODQ4NjIgZTA2NDFkYmRjOGY2MmE3ZTlhYjYzNzU1ZWE4NDczNmI2YzE3YjNmOSByZWxlYXNlMjctbWFpbnQKKzg0ODYzIGUzOWFkNWRjMTFjZmU0ZDc0MDA2M2IxOTdkYTkzYWM3MmMyOGE4MTggcmVsZWFzZTMxLW1haW50Cis4NDg2NCBkYzQyMmRhYTVkYWRkMGJmYzU0Mjg3ODQ0MmRhNTFkZGNlNzc0NWMwIHB5M2sKKzg0ODY1IGE0MzFjNDhhZDQyYjFhMTk4MzFhYTVjMWQ0NWE0Yzg5OTZlNGE4MTcgcHkzaworODQ4NjYgZjc3Y2I4ZDc2ZTk5MTU3YTQwMjAzYTQ0ZGViNmY1MWIyN2RhZGQ2MiBweTNrCis4NDg2NyBjZDJlZjc1Mjg3MzY1YjZlOWE1NTRjZTJjY2Q2Y2Q5MjUxNzQ4ZmRjIHB5M2sKKzg0ODY4IDkzOGQ4NDI1N2QxMTAyNjBkY2MxMjY2NjU2Y2E4MWQ3YzBjNmI0OWMgcmVsZWFzZTI3LW1haW50Cis4NDg2OSBjODdlZDZmNThiODMwOTg4MWYxMTQyMDBlODdlMWI1Y2QyNWYyOTcwIHB5M2sKKzg0ODcwIGRmMzliMGJjNDEwNjczYjU4MTY4MmM2ZWMxZTQ5M2IxNzZlYjI3OTkgcHkzaworODQ4NzEgMDA2NDkwZjBlNzFmZDY2ZWM1MWQzYTRkNDRjMjFmMzE2ZGJmYWJiOCBweTNrCis4NDg3MiAwMWRiYjgyNzcxNzg4OTYyNWZhYTUwNzhmNjgxMmU3N2U5YzY2YjNlIHJlbGVhc2UzMS1tYWludAorODQ4NzMgMTUxODE3MTc3NTE0OWM3Y2FkYjFjNTMzMmFjMzQ1ZGI0MTg0MTI0YSByZWxlYXNlMjctbWFpbnQKKzg0ODc0IGQwNjA0NzRlMGUyNDU4NTY0MWRhNDhmZmZhZWM5OWY2YmExZGQzN2YgcHkzaworODQ4NzUgMmYyODA3MjdhMzA3ZjZlZDk2YzcwY2Y0ODVlZTU2MTc2MmMxNjg5NyBweTNrCis4NDg3NiAyODY3YWU5MDJmYTMxNDczNjQ2NDNmYmFiODBmNWE0YjJjYjhiNTAxIHB5M2sKKzg0ODc3IGQzOTA0MDBkNzFmN2I5NmVjMjMxYTRjMWY4MjY4Mjg3NmY2YTM2MmMgcmVsZWFzZTI3LW1haW50Cis4NDg3OCBiNDlhZWUzODc3OWJjMGE5ZGIyNjcxNThjZGMzMzRlYmY5OTFlNjBkIHB5M2sKKzg0ODc5IDRhYTJhMjBhYzMzNWJmMDVhNWFkNWY1ZTI5ZThjZDMwODBkZWNjZDUgcmVsZWFzZTI3LW1haW50Cis4NDg4MCAyOWVhZDU0YzA1YWQ4NzdhYzFhZjg1YTEwZDg0ZjhhZTllMjhlMTNhIHJlbGVhc2UzMS1tYWludAorODQ4ODEgMmRjMWQxODdlZTA0YWUzZWQzZDFkYWY3NzQ5ZDE2MTlmOGM0MDA5MyByZWxlYXNlMjctbWFpbnQKKzg0ODgyIDQ0OWQxMDRlMTgzNjI3M2FlYWU1ZDhiNzYwY2UxM2VkNjg1ZTQyYjQgcHkzaworODQ4ODMgNDk4MWNmMGE5Y2E0Y2Y5ZTE3N2U5M2U3YTI3M2M2YzgyYTA1NmUwNCBweTNrCis4NDg4NCA3NzQyNWYyZDdkNzY1OTc1NzY0OTA4MzM4MTU4OWY1MTEzMWE4YTZlIHJlbGVhc2UzMS1tYWludAorODQ4ODUgMDRiNDVkNDUxMDU5ZjUwZjFlZmFmMzAzZjZkOTg3ZDczNTI4YjY5ZiByZWxlYXNlMjctbWFpbnQKKzg0ODg2IDkyOTFhYTNkOGQzNTcyMzc3NTJiNGI0OWUzYmNiZTRmMmVmMjZjMWIgcmVsZWFzZTMxLW1haW50Cis4NDg4NyBmM2RjYjMxNGMzZTMwMmU1NTQyMmY4NmM0NmVjNzZhM2FlNjA2YTE3IHB5M2sKKzg0ODg4IDcxYjk1OTQyYzNhNDliODg5MjJmOTE4ODg2MzBiNmNiYjhjYzM2ZWQgcHkzaworODQ4ODkgOWRjODQ1MjI0NDg2MTI5ODEyODlhMjU3ZWJjY2MzYTE5NjQxNGE1NiBweTNrCis4NDg5MCBiNjk4NDJiNTBlMjYzODgyOGYxYjM0YjM0NmM4NWNhMjI4OGIzYjc5IHJlbGVhc2UyNy1tYWludAorODQ4OTEgNjVmNWUyYzNmMmRkMTkxOTgwZmZhNmQzZmZjOTlkZWRlNTc0NTAyYiByZWxlYXNlMzEtbWFpbnQKKzg0ODkyIDkyNTg4OTg2Yjc4YmQyOGFkYjNkMDJjOTQ4NWZlMWY5OWE0NzA4OTAgcHkzaworODQ4OTMgZTUyOTRjYTI3YWJlMmQxMjMwNDBhM2UzZDM5NmM3ZGNlMTk4YjNiNCBweTNrCis4NDg5NCBmN2E3NmZjOTdiMjIwZGYzMjU5YzRkMmUxMzMwNmE5ZWIxMzIyNGQ2IHJlbGVhc2UzMS1tYWludAorODQ4OTUgNDUxMTM5MzIyYTEzMTE5NWQ3MDAzMWJiMzE0MTMxYjkwN2RjYjc4NCBweTNrCis4NDg5NiBjZDViOWE3MGE2ODViYjczMzk4MzM5YmRlMThjYzA4MzY5ZWE5NmQ4IHJlbGVhc2UyNy1tYWludAorODQ4OTcgNTAxYWU5NGU1YmY2MTU4NDBkYmNmMDJlY2ZkN2JlYzY1MjNiNDIyNyBweTNrCis4NDg5OCA0NGM4OWM1OTkzYzgzYTE4OTc3ZDM2YzhkZTBhMjEyNDU5YjE2NDg3IHJlbGVhc2UyNy1tYWludAorODQ4OTkgMGFjZTllZWYxMjBiZTFmMWYxYTQ5NTQyYzBhMjM3N2QyZDhkNzY4NiBweTNrCis4NDkwMCBhNDhlMDMxZDgxNzhmYjgwY2EwYTllYzMzNmZjYWFkMTVhNzlhYjAyIHJlbGVhc2UzMS1tYWludAorODQ5MDEgNzg1YTk2ZmNkMzQwZGYyZDU5NGZhNTE3YWM0MWUwYWY0ZWVhMWVlNSByZWxlYXNlMjctbWFpbnQKKzg0OTAyIGIyOWU4NTU2MDE1Y2I3MzEwYTE4NTg3MGU2ZmM5YWUyMjExNDI0MTcgcHkzaworODQ5MDMgYTA1NDMzMDYwOTQxMTg2ZTE5OTRhYWRiMDZlYWE2OTVlZDk4NWJhMCBweTNrCis4NDkwNCA1MzRhZjkxZjM4NDU0MDYyZmUyNmRjNzE3ODJmZGVlZDYzZjNkY2YwIHJlbGVhc2UyNy1tYWludAorODQ5MDUgOTMzZDRiNWI3ZjNkNjhiNzg0NTViOTE5YTViYmQzZmM3NGY5NjA1ZCBweTNrCis4NDkwNiA3NjA1MWViMDc0MjJjNzg4ZjM1ZDMyYzk4YTIyMDA3NGVhZDVkN2RjIHB5M2sKKzg0OTA3IDhkZmJmNjZmMzY5Y2Y1YTJlN2FhNTYyZTdkODQ4OGUxNzllNzkzNGIgcHkzaworODQ5MDggZGQzMDgwYjgwZGRhOTE5NDU1N2RjZjIzNGE3OWI5NDFiYTdiYWQzMCBweTNrCis4NDkwOSA0Mzc0YjFlYWVhZDE3NzZmNWI5MmQ2OGJkMjg2NDcyMWQ4ODY0YjllIHB5M2sKKzg0OTEwIDE3ZWM5ZWQ1MDEzM2I4YmFlZGRhNjBlMjgzMjNjNjc2NGRhMTQ2MjMgcHkzaworODQ5MTEgMDM2NTg1MzgyZGUxOWJiOTdmMTUxMGMwMmE3MTE2ZjVmNTZhNDBhNyBweTNrCis4NDkxMiA0ZjRiZGRkYWMyNWIyM2I2NTMyNGI2ZGIzN2Q4OTQ3Yzk2NzdiZWI0IHB5M2sKKzg0OTEzIDc2ZmQ2OGJiYTFhODg1YTQ1ZjA3NDcxZGFiYmZhZmQ2MmRmODJlMjYgcHkzaworODQ5MTQgOGU0MjhiOGU3ZDgxNTg2ZTIzYjVmOTJmOWNhOWIxOGRhZjE0ZjQ0OSBweTNrCis4NDkxNSA2Yzc3NzU3ZDA4ODExNWEwMWNkZDI5MzFmMDAyZDcwNjg3YTJlMzAyIHB5M2sKKzg0OTE2IGI1NTcyNTM1OThiMWY5Y2QzODAyMDMzYjAxZjlkN2JlM2U3MDQxODggcHkzaworODQ5MTcgZWMwMjgwNjcwNDlkYTY3Yzc1MWQyNzk4NThkYjcxZDdiZjZkNDBkNiBweTNrCis4NDkxOCAyY2RkZjg3OGUzOTU1NTNiNmZhZTk3OTk3MjM4YTFlOTU0NWQ0ZTYyIHB5M2sKKzg0OTE5IGNmODgxNzE0OTliNWE3ODUwYmVlZTdhZWJkYTQyZmVlZGMxNTY0NTMgcHkzaworODQ5MjAgM2E0YWZhYTk2YWMzMzIzYzBkYzQ1NzMxMzE5MWZhYjA0ZTU3N2U2YiBweTNrCis4NDkyMSA0ODZjMmQ2YTc1NDY1ZDAxZjYxNmJhMTZhYzhhNTBkNmFjN2IyOWQ1IHB5M2sKKzg0OTIyIGE4OGRmZjI3YmUxZjdiMmViMDlkMDk4MDRiZjRkOWZhMTQ5YjI0OTcgcHkzaworODQ5MjMgZjM1YmQwOGMxMmFlZjJjNDZiNGRiNzlhOGNmYTdmZGU5YmFmYzM5OSByZWxlYXNlMzEtbWFpbnQKKzg0OTI0IDZiZDI3NmY1ZDFiY2U3OTk2NzVmOGM4MTFmMWI4Mjc5ODNlMmIwZDMgcmVsZWFzZTI3LW1haW50Cis4NDkyNSA5NmRiNjQwNjc0Y2I3YWFhNTNlZjA5NDFkOTYyNzdmNTQ5MjliZTIwIHB5M2sKKzg0OTI2IDNjYWNlMTI4OWRlNDg4YmFjZjYyMGJhMTRlZDQ0Yzg3NWY1MTk0YjYgcHkzaworODQ5MjcgMzhiMGQ1ZDBkZDMwZTUwYTczMDNlNGY0M2Q2NWVmZGIxY2VmYWE0NSBweTNrCis4NDkyOCAwZDBmMWRiNjM0MzEzZjM2MzEzZTE0Yjk5YTNiNTJjYjY4ZjhkODViIHB5M2sKKzg0OTI5IDAwZTRjZTMxZDQwNDBkNWMzNGI2NTdkZDE3OWNlYTU5NjU2ODIzZDEgcHkzaworODQ5MzAgYTZhZjljN2M4ZTY3ZThlNDZjNzk3ODA5YjgxM2M3Njg1MGFjODhlOCBweTNrCis4NDkzMSA4NjFjMzVjZWY3YWE5ZTUyMjZkNGNjMmViMWU5ZWI1MjlhMWM5ODQ4IHB5M2sKKzg0OTMyIDJjNzNlNmNlNmE3NTY4NDY4YzczODM2YTFjNzI2M2NlYmIxNjY4MjIgcmVsZWFzZTI3LW1haW50Cis4NDkzMyBiZjAxMWUzMGZjMDc2MjdiNTI4YWI4Y2YxNWI4NTRkNDk3OGE2ZGQxIHB5M2sKKzg0OTM0IDQ3YjEwZTRhNTFkN2U4ZDRjMGRmZjc2NGU0OGVjMmZhNzY3M2JiZTcgcmVsZWFzZTMxLW1haW50Cis4NDkzNSAzNjRkNmVmN2NjYWU0Y2MyNDE3N2VlNDU4ZDdkM2M5OTljM2Q0N2NhIHJlbGVhc2UyNy1tYWludAorODQ5MzYgZTkwNDI3OTg0NDQyY2Y1Yjk4OWJkYjMwNGMwYTVlMzNmYWQxNWU1NyBweTNrCis4NDkzNyA2MDM2NzlkODUzMjkzMDg5MmEyZDg4N2YwNTZmMDg4OTQ3ZWU2ODk5IHB5M2sKKzg0OTM4IDdkNDVmNTM5ZGI5N2M4MTFmMmM1NzVmMGU2YTQ5MTEzN2U0MGJhNTEgcHkzaworODQ5MzkgYjFlYzQ4YjdmZmRmZmViNTJhZmRmMmIyNzVlODY1MmVlNzYxMzNhMiByZWxlYXNlMjctbWFpbnQKKzg0OTQwIGQ4YmI5OGU0MmMyZmZjYTM4ZThmYTdjNjhmZjNlMTVhZGNkZmM1NDkgcmVsZWFzZTMxLW1haW50Cis4NDk0MSBmOGNlOWYzNTlmM2E2NGY5MWRkMjVjNmVmMTFhM2E4Mzk2MGZlNWU2IHB5M2sKKzg0OTQyIGEwZTBjYjg5M2UzMWUzMjBjYWVjNzgxYWI1ZWMyZDc4NmNlZDNjMWQgcmVsZWFzZTI3LW1haW50Cis4NDk0MyAzMzU5ZDJlMGE5NjcxNzA5YmZkNjBjZTNkMDI2ZDc3YjQ1YzViYmVhIHJlbGVhc2UzMS1tYWludAorODQ5NDQgZTU5YTE4ODI1OGIzNDg4MzhmZjdkNjI0NGMwOGYzZDBiMjU5M2UzNCBweTNrCis4NDk0NSBkNmQ2NTVmZGRmMjJhY2VjZGM2OWMxNWMzZWIzN2MyZjI1NTdiNmQ4IHB5M2sKKzg0OTQ2IDQ4ODlhODE2ZWVjMTY5ZDhhYTk1ZGNkMmVhYjc2MzNmNTYzODBiMTYgcHkzaworODQ5NDcgYjFmNTEzNGIwMDQ5YmQ2OGVhZDk5NWQ1ODVjMmNhMzFmM2ZjOTVhZSByZWxlYXNlMzEtbWFpbnQKKzg0OTQ4IDRlYzEyMTE1NmVlOWVmNDkyNzBmZjQxZDVjODNjMmJjOTg0YjhmMGUgcmVsZWFzZTI3LW1haW50Cis4NDk0OSBhNGVlOGE1YzY4NDM3MjQ0NWQ4NjBlYmFmMzA1MDMzNjhkNTRiZjYyIHB5M2sKKzg0OTUwIDlhZDY5ZmM0YWVmNzVkMWMzMDFmODVlNDA3Y2FkOThkODY0ZDkwZGYgcHkzaworODQ5NTEgOGNlZWI1OWY0NTUwYWY1MWRhNDc0NTA4ZjY4ZTlhMWZiYTcyMzE2MiByZWxlYXNlMjctbWFpbnQKKzg0OTUyIDA4YmQxYTA4YzYyZjc1ZTRkNjM5M2FlZGY1MzUzMTgwNDI3Y2VhNWMgcHkzaworODQ5NTMgMmI5MzI3Nzc3ODMyYTI0NGFmMjFmZjcyYWFlODVkMGM5NDAzMGRiOCBweTNrCis4NDk1NCA5ZTIyMTY0MjBjZDc5NWIyOWIzNzhmODY2YTMwYTg5NmFhZWYyYTVjIHJlbGVhc2UzMS1tYWludAorODQ5NTUgYzUzNzcwYjE1NDZkYWQ0YjkyOTk1OWNlMzUzYzczMjI5MmM5NjFlMyByZWxlYXNlMjctbWFpbnQKKzg0OTU2IGM5ZWRiY2UzZmNhZDhjNmNkMmQ1NDMxMDJhMWJlNzBiY2ZhMTU1YzQgcHkzaworODQ5NTcgZTFjOGViMzkwNTA3MDI4YTkxMDIwZDZiNjk3NjI0M2I1OWExMDIyYyBweTNrCis4NDk1OCAwNWE1ZjcxYzFhNzhmN2RjZDhkOTk0NjAzMjEwMDM0ZjYyZWEyYjJjIHJlbGVhc2UyNy1tYWludAorODQ5NTkgODIwOGE0MzE5MWUyOWM5MjQ3MDBhOTA4OGI4Y2NlMWM5ODAxMjlkNiByZWxlYXNlMzEtbWFpbnQKKzg0OTYwIDhhYzcwYjEyY2E2MWZhZTIxNDg3NDA2NzQzZTFhMzJiOGY0N2Y3NjYgcmVsZWFzZTMxLW1haW50Cis4NDk2MSBiM2QwZGVhZjUwZTUyMzJjNmQ5YmVjNzViNDA2ZDViZWRiMmMzOWNjIHB5M2sKKzg0OTYyIGQ1ZmUwNDBmNGE0OGEyNzgwZmUzMzEyZDkzODE4ZDU4ODAwODM1ODIgcHkzaworODQ5NjMgNmI5Zjg4ZGRiNGNlZTkxNDlhMWNmZDVmNzkwM2Y3YjQxMzg5M2Y3OCBweTNrCis4NDk2NCBmMmNlZWFhYWM5MzgwYjU0MjNlMmM1M2QzZDk2NTFhMmFmMDVhZjE5IHJlbGVhc2UyNy1tYWludAorODQ5NjUgZWJjZDgxMTU1OGQ2N2Q2MDQ2N2EyMjUwMGNhZjEyYmFlMjRkYmY2ZCBweTNrCis4NDk2NiAzNDc0Y2VlOWM3NThhODZlOTQyN2UzMWUxZjU3MzdjZmZkNWJmZDIxIHB5M2sKKzg0OTY3IGQ1MDAxZDZjNzczNjhlZmJkYWVmMzM2MjliMTkyMjU2MzIxYzUwNzIgcHkzaworODQ5NjggZjcwM2E2NDNlNmNlMDdiOGMxOTU4ZmUwYTc0ZDgxZjYyMDMxZjE1ZiBweTNrCis4NDk2OSAyMjVhNmQxY2Y4MTFmNzBhNzQ4MzIxMThkYmU0MTY1YTk0OTgzZTAyIHB5M2sKKzg0OTcwIDllYTUwNGQ0NWVlYWE3ZTFiZjQyOGY4YTY0MjlkYmJjYWYwNTc5YzcgcHkzaworODQ5NzEgOTZlN2VlMjMyYWJmMTFlMmRjYjgzYWMxN2E4ZTk2NjRlOWQ4ZWIzMyBweTNrCis4NDk3MiBkZmQ1NTg0ZWIxYWNiNTk5YmQ0MmJlZTRhODIyNGNiZjllOTRjNjE1IHJlbGVhc2UyNy1tYWludAorODQ5NzMgYTY3NmFjMDZlYWNjMDg3ZDY4MWNkMzcwNjc3MWNhZThlMjA4MDg1ZCBweTNrCis4NDk3NCBmZjkyY2MzNTZjMzU4MzEzNGEyYzUzNWRmNGU4ZTYxMmQ2ZThhNzVmIHB5M2sKKzg0OTc1IGVlMTUyODUyYzk0ZGY5NDY3NDJmNjkwZmU2MmZhYWQ5YWViYjQ4NjkgcmVsZWFzZTI3LW1haW50Cis4NDk3NiBmNGExYzc5NmJjOTg3NDUzZTU2OGY2MmM1YmE0YjVlYzJjYzZhN2NjIHB5M2sKKzg0OTc3IDYzM2M2YjExYTVhOWU3ODUxYWY5NzEzNjZmYWM5MzEyYWMyNGY1OWQgcHkzaworODQ5NzggZDU2MGVlY2UwODU3ZjA2YzNkMGQ1M2Q4YmU2ODZjZDUwZmMxOWU4ZCBweTNrCis4NDk3OSBlMzE0OTJmNDQwYzllOGU1MWE5YmUyYjVjM2UxYjA3ZjM0MDRjODYzIHB5M2sKKzg0OTgwIGEwZWNiOGUyZDc2OWU3YTNjMjZhZmZlY2E1NWMwOGVlOTAzZWRjNWQgcHkzaworODQ5ODEgNTFkOGZmZmNkMjYwZTgwYWEyNWQ1MzExODAwNjJmMzdmY2M1ODQyZCByZWxlYXNlMzEtbWFpbnQKKzg0OTgyIDIwZjM0NWZjMDM2MTE0Yjk0ZjVmOTlmYWU0NzY0NWNmOWU4MjlhNDIgcmVsZWFzZTI3LW1haW50Cis4NDk4MyBkMDg4ZmFhMzU0NTZlYWZiN2U2MjU0NTMyMmRiNDE5ZTRmOGJhZjkzIHB5M2sKKzg0OTg0IDJlNWJkZTM4M2E1Yzc0YWExOGYyZTQ0Y2FmNjAxYTNkZmQyYTkyYTYgcHkzaworODQ5ODUgMGM3N2QwMGY0ZjgyNGUyODhiNGI4MTQ4YmZlMTdmZmRjOTJiMzZhYiBweTNrCis4NDk4NiBhYjNkOTJmZWE5ZmRhNWU1YmY5ZGU3ZTc1MmUwOTJhZjIxNDgzMTUxIHJlbGVhc2UzMS1tYWludAorODQ5ODcgMWRlYmNjZmJjYmM5YThlZWQwOGEzOTUwNmMwYzA2Nzc3MGJkZTgxOCBweTNrCis4NDk4OCAyOGQ0MWQzNGEyZTYxNTU5MDU1NDhkNTNiMzY2MmEzM2Q5YzJiMzkzIHB5M2sKKzg0OTg5IDdhY2E0NTg0NjFhYjI3MWU3MDNmZjhiZTE1NGMzODY5MTgyMDQ4Y2IgcHkzaworODQ5OTAgNzk1MmNmYWJiYjg4NzVmOTg3NGU3NjI3ZGY0YWJlYThhZWU5N2U4MSByZWxlYXNlMzEtbWFpbnQKKzg0OTkxIDg3YWZlNDc0MjljNTZkMTdmNDk1NDU1MGJlNzI4NWNkNmVmYzJhNDQgcHkzaworODQ5OTIgYWE1NmViYjhmZTk0NzM0YTMyZjEwOWNjMGVhODUwZDllNTFjNzg2NyBweTNrCis4NDk5MyAyNjBkYzdkZTFlODdiZTliNWFiN2ZlM2FjYTJmMWZjODIwNGM5OTY3IHB5M2sKKzg0OTk0IDAwNzIyOGQwZTU2OTg0NjMxZTg4MDBlNzZiODE5ZTFlOGI2ODI3ZjAgcHkzaworODQ5OTUgMjM1MDQ0YjM5YTkyMTFhNTZiYjRkNGM5NmNkZWU3OThlMTliZWIzMCByZWxlYXNlMzEtbWFpbnQKKzg0OTk2IDEyZTBkZmZlZjdiZDI0ODI1YmIzYmQ3OTM1ZTM0NDc2NmUwN2UzNzkgcmVsZWFzZTI3LW1haW50Cis4NDk5NyBmNmEwZWI3MzBhOWI3ODRiYzBiNDdmM2NhNWRjOGRkMDIzZDc5NWY2IHB5M2sKKzg0OTk4IDhjYzRiZTY0OGFiNDkwNmRkYjRkNmMxYjY1YTYxNjgxMGQ3MWJlNGEgcmVsZWFzZTI3LW1haW50Cis4NDk5OSAyNjBkYzM2YzJjODYxZWY3YmNjYTg5ZWQ0ZTgyODU3ODBjYmIxYzIwIHB5M2sKKzg1MDAwIGI5NDUzZDUwNGY4Y2E0YWVmYTI4NWRmNGQxM2IyNGZjZjA5NGJmMmQgcHkzaworODUwMDEgYjI3OGQ5M2Y5NThlZWMxODQzODMwMTAwMTJlZWZlMzg0ZjBlODIwNCByZWxlYXNlMzEtbWFpbnQKKzg1MDAyIGU1YjcwNzkzNTY2ZWRkYTVlZTRhZWNlNTM0NzEwMjg1NjAyZTY3N2MgcmVsZWFzZTI3LW1haW50Cis4NTAwMyBjOWUyOTkyNDkzMjM4MjVmNjNiYmVlOGEwODg3MjVmYzIyMjFiNmI2IHB5M2sKKzg1MDA0IDk3NzRjMTFlMDNmNmIwYjhkODUzMmIxMjA1NzE3YzAyZDcxZTQzNTkgcmVsZWFzZTI3LW1haW50Cis4NTAwNSA0Y2QwZWRmMGIzNTYxOTcwZGZiYTViZDBiZWI5MmIzNDNmNmZkOTM1IHB5M2sKKzg1MDA2IGM5YjA4YzU4ZjA2MzBiOTFjOWIzZjg4MmE1ODM4OTZjMmUyYTMzYzIgcmVsZWFzZTI3LW1haW50Cis4NTAwOCAwYjQ4YzZmODY3MWZkNGUzMGMxOThiZWRjZDU1NjI0ZGJjNmE4ZmQwIHB5M2sKKzg1MDA5IGM1MmY3NWMzZmJhMmQ4NjQ5OGEwNTM5NmYzMmE3OTExYzFiMGY4YjcgcmVsZWFzZTI3LW1haW50Cis4NTAxMCA2NTExMTY1ZTQ4MzBkOGZmNjg0NmQ0Nzk5NWRiN2YxYjJlMzRjMTI2IHJlbGVhc2UyNy1tYWludAorODUwMTEgYmM3ZDg4MDhmMTk1YzlkMjUxNDdjN2FmMDM0MGY4M2U5MTAwMmI3MyBweTNrCis4NTAxMiAyNjVmNzAxNzc3MmI4NzExMmYwNjU2MWU3YjUxYjM2N2JlZmQyMTllIHJlbGVhc2UyNy1tYWludAorODUwMTIgNDNmZDllMmI1ZTdkMWZjM2NiYzRjZmNjNzExMDE2ZDdmMTcyY2QwOSBweTNrCis4NTAxMyA2M2JhN2E0ZTdjMTAyMjMxYWY2NzMxYTU0ZjY4MGQyODc1MTllNWUyIHJlbGVhc2UyNy1tYWludAorODUwMTMgNDA5ZDZjNzZjMzA3ZTQzMGNmMjI0ZmM4ZTZlNjE3NDc4MTc2YTEwZCBweTNrCis4NTAxNSA0MDNhZjM1ZjQ5NDg3Yjk0ZTY4MTEwY2M3NzNlMzUzOWQxNTA3YzI3IHB5M2sKKzg1MDE2IDZjNjhkYmY5MzJkMDY4NGYwZTNlODc0ZWQ3NWExY2MzNTQ2OGFkYzUgcmVsZWFzZTI3LW1haW50Cis4NTAxNyBhYzhhYTIyNWM0MTc1YWZkYWNhMzI4N2E2ZTZkZDMwM2RjZGVlNjk3IHJlbGVhc2UyNy1tYWludAorODUwMTcgMjhlOGZmYjJhY2NiNjk4NDViMTFkYmU5ZTkwNzI0NTM5ZDE4OGE1YSBweTNrCis4NTAxOCAyNmRmZTQ0YzlmYWE0NTlmMGQwZTdlMDMyZDkxMThlMTZlYzI4Y2VkIHB5M2sKKzg1MDIwIDA1YzU4YjNkNmQzOTQxYWFkMzFjM2FlNDYxNGQ3NWI5ZmFiNTUxOTIgcmVsZWFzZTI3LW1haW50Cis4NTAyMiA3YWMzMGQ1OGIxZDIxNmQ4M2E1NDMwNjRhNGE0ZjIwYjdhM2IzNzZkIHJlbGVhc2UyNy1tYWludAorODUwMjUgMmZjNzNkN2M3NjIyZDIwNmVlOWYzMTlkNDFmMWZhMGE5ODM2ZDllMyBweTNrCis4NTAyNiA4ODgxMjYwZDFkMTRmYmQ5ZDFhZDFkOGY0ZmQ4NmUzZWIwM2VlZDRlIHJlbGVhc2UzMS1tYWludAorODUwMjcgM2YwZmZjODE5OWVhZmNmMDMxMWU5YzUyMGZjZjljYjMyOGNjY2FjOSByZWxlYXNlMjctbWFpbnQKKzg1MDI4IGZkNWU1MTAzNTMzNWIzOGI5ZDBkYjQzMzExZWE4OGNmOTY0MzgxOGEgcHkzaworODUwMjkgZTkzOGVjYzU1MDA1NDhiYTk0NTY1ZGE3ODIyMDhmOGZlNzcxMWMxNyByZWxlYXNlMjctbWFpbnQKKzg1MDI5IDUyZWZiMTA0NGRlNTkzNGY5NzMxOTU0NTk5YWU2MDJmODgwZmJiZWEgcHkzaworODUwMzEgZmY1ZDNlNWM0YmI1OTU4ODBiZTM3OGYxODlkZGQ2OTAzMzk4ODhlMCBweTNrCis4NTAzMiBhZWQwNGIzZjBmZTM4MjJmZjUzNzRhY2EyMWFhZWU4OGZkNjAyZTJjIHB5M2sKKzg1MDMzIDZiNDllYTExYjE1Nzc5MGIxNmY2MjZkZDcyYmFhYTkzM2IwN2Y3YzIgcHkzaworODUwMzQgNWE3YmI4NWE1ZDk5YzM1NjM3YmM0NDM4MzY1YWNlNjVlMjMwZjhhYyByZWxlYXNlMzEtbWFpbnQKKzg1MDM1IDFkYzJiNTBkMzQ0Zjg1ZTYzYzliNGMxNTBkNDA1NWM5MDBiYWFhYzEgcmVsZWFzZTI3LW1haW50Cis4NTAzNiA3YmRhMGE2MzJiMGQ0NTVjNTQ5NGUxMmU3YmRlYjI0OTc1MzVhODAxIHJlbGVhc2UyNy1tYWludAorODUwMzcgNGQzZmJjZjZmOTZhMGU4MjM4ODg3ZDU2NGU1N2Q4ZTkyNDZmOGIxNiByZWxlYXNlMzEtbWFpbnQKKzg1MDM4IGNlNGEyMmZjOWNjNDQxYzk1MzIwM2FlNGU5NmFiNTQ1OGIxMjgwMDEgcHkzay10dGstZGVidWctb24teHA1Cis4NTA0MyAzZDQ5MGMzYTAxOWUyMTBiNjM0ZWZiYjdhMTEwNGQ4OGE5OTZlZTEzIHB5M2sKKzg1MDQ0IGY3NmVmMWY0NjI2NjM3MDY0MDRjY2E3YzEyY2M2Zjk0ODQ3YjJiMDQgcHkzay10dGstZGVidWctb24teHA1Cis4NTA0NSA3ZGZhOTkwMGY4Yzc4ODVjZmNjYzljMGFhOWExNDk2ZDRkZjQ0NGFhIHJlbGVhc2UzMS1tYWludAorODUwNDYgZTEyYmE0MmY4NjFmYzdlYjA1MGNjODQyMzBlNDFkNzM4ODM1ZGU3YiByZWxlYXNlMzEtbWFpbnQKKzg1MDQ3IGUzODJmZjc0MTc5MDI2MmU5Y2I0ZDlmMzc1YzE2YTBhMzdhZWY3YTUgcHkzaworODUwNDggYzhkYzRiNWU1NGZiZDRlMTRjZjU2NTUyYzdiOTY5ZGJkNzhlNGE0NCBweTNrCis4NTA0OSAzZjQyNzNkMzBiMzg1MjUxMWEzNjAyMWQ1NjY4MWMzZjM2YjlkNzY2IHJlbGVhc2UyNy1tYWludC10dGstZGVidWctb24teHA1Cis4NTA1MCAwOTgxMjNhN2EwM2NiN2IxYTVjMTJiN2E0YWI5MmE3ZDllNDZiNmIxIHJlbGVhc2UyNy1tYWludAorODUwNTEgNGM0OGViYTEyMTIzZWU1Njc5MWNiOGYwNzRhNGIzMDcwODU0M2ZiYiByZWxlYXNlMjctbWFpbnQKKzg1MDUyIDY5NGNiNWQ4NjUyNTE1MGNjMWVmMzQ2NGU2ZDFjMDg5NDZlZDVlZjUgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDUzIGE0YjM5OThhN2FkNDJkYTYxMDAzZmU1N2UwOTQ3NWU2OGEyZmFlZWMgcHkzay10dGstZGVidWctb24teHA1Cis4NTA1NCBmYWZlODQyZTMyMDBjYjhhZDU3NDkyOGIxZjgzNTBhNzEzZWYxMzdmIHB5M2sKKzg1MDU1IDRlNWQyMDFmZjI5NDAxYjA1ODk3ZmU1OTliNTNkZGMzMDE5ZGUxN2MgcHkzaworODUwNTYgMzUzZjBjMmJhZjc3ZDJkZDVmOTA5NDU1Y2VjNjVhZWExMjczOWZiYyBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDU3IGNlYTM3ZmIwM2RjMGY0OWZkZmNjYzc4MTc2Mzk5N2M1NDU1OWIzMzAgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDU4IDQ1ZjU2ZTMwYWZhNTc1ZjMyMmQxMzc1MzMwNGY0NGY1NGI0ZGQ3YmYgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDU5IDk1MjNkYmUwYjY0OTllOWExMGZiNmJjMzFlNmQ1ZjhhODg2OGNkZjMgcHkzaworODUwNjAgZTA2Mjg4NDc2NWQ2NWFkZjg0OTFlZjI4ZDczNDUzZTk5NzU5NGJjYiByZWxlYXNlMjctbWFpbnQKKzg1MDYxIDA1Y2U1ODVmNjRjNDg4YTg5YTYwMTRkZDYzN2U1NWI3Yjc1MWRlMDIgcmVsZWFzZTMxLW1haW50Cis4NTA2MiBlMzMyY2Q5NWY0MTRhYTA4OWNkZWJkOGI0YmM1Y2Q0NGRiYmVjYWVlIHB5M2sKKzg1MDYzIDlkYTEzZTU2MGEzYTk2ZGQ1NGIzYzFlYWVmZjJiYmVlNTE5YWYyNTYgcmVsZWFzZTMxLW1haW50Cis4NTA2NCBhZmIyZjE0NGI5OGMyMzY1NWE4ZWQ4YmExNjFjNDg4OTM4ZmFiZTY3IHJlbGVhc2UyNy1tYWludAorODUwNjUgNDNiNzlkODBmNWFlY2VhYmEzMDdjYWQ5ODk1NzQ3YTIzMjliNGIxOCByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUwNjYgN2Q5YmFmNjQ5ZjJkOGQ3ZGQyNDE3ZjljYTk2YjU0OGM3NWQ0NTM3MSBweTNrCis4NTA2NyA2NGU0MTE3Zjc4ODc1NGFmZjA0MjNkYzA5MGEwYjhlMDhhMTBjZmVlIHJlbGVhc2UzMS1tYWludAorODUwNjggZDFiZWU3Y2Y2YzJmMmFlNWRlNTVhOWE5MWQ2OGU1ZmUxNjkyNTA5NiByZWxlYXNlMjctbWFpbnQKKzg1MDY5IGZhZDc4ZTg2ZDE2ZWNkMzViYmI1OWJiN2NmZGI2OGIyZTZhMTQ2NzIgcmVsZWFzZTI3LW1haW50Cis4NTA3MCBkZDk0YWMyYTQyYjE3ZWZhY2Q1MTFkNzU0YzI0M2Y4ZDRmOTliNTJhIHB5M2sKKzg1MDcxIDdlMjc1YTRjZjk0MTBkNDI5MGRiYmM0Y2Q0Nzg0ZTE5YTFiNjhmY2QgcHkzaworODUwNzIgYTA4ZTQyNzg5ZTZkNTFkMjI0NjM1MmRhZDQ4ZmJhZTc4ODFlYzY4OSBweTNrCis4NTA3MyA0NzJhNmVlYzE5NmFiZmMxNGRkNTA0Mzg5ZTNjYjMyMGU1ZmQ2YTI0IHB5M2sKKzg1MDc0IDBmOGMyZWI4OWY0NmQ1YzBmYWI3M2I4NzJlOTJmY2QxYWExNDBmOTggcHkzaworODUwNzUgZGMzODMzOTg0NzM0YjI0OTNlZGYyMWMyMThmYjZiNjMyNmExYjVkOCBweTNrCis4NTA3NiA2YzhhZGMyMDBlZTAyZjFkM2EwMjRmNDMxYjllZmRiM2I4MjY3N2Q1IHJlbGVhc2UzMS1tYWludAorODUwNzcgNmMxZjEwZTA3NDU1NjQwN2NhOTQzNzY1YzNiMzM5ZTRjOGI0ZmM2ZCBweTNrCis4NTA3OCBmYjdlZTBmMmM2ZjRhMDQ3YTcwMWExYmY1MDVlMDNkMGZiM2YzNDE2IHB5M2sKKzg1MDc5IGMxODQyM2Y0Yjk2ODhjODlhMDlmZTY0MGFlOTU5Y2Y1MGRiODVkM2EgcmVsZWFzZTMxLW1haW50Cis4NTA4MCBkMTJkNTUwZWJmMzQ1NWFiODkwMWZmNGE1MTlmZWYwMTljOTc1YjZhIHB5M2sKKzg1MDgxIDU1MjJjNmIyYWY4NzJjZTEwYjQ0MDE4OTU1MGZkOTUyMWIwMmRkZGMgcmVsZWFzZTMxLW1haW50Cis4NTA4MiA0Y2Y3N2QxOTNmNTdmNWUwNzZiMWExOTk1NWVhYmJkZWU3ZWJiZDM0IHB5M2sKKzg1MDgzIGRjNDU1NTY0NmU4MDdkODI2ZjI2NTBkODlkZTg5ZDY4OGI5MGQyN2EgcmVsZWFzZTMxLW1haW50Cis4NTA4NCAwNmY1ZTE5MDg1NWEzZmQ3NzI4NDg4OTBkZDJjOGI5MjQxMzg3ZTcwIHB5M2sKKzg1MDg1IGM4NjllYTA3Y2Q5ZDI2OGM5ZTZlYzgzZmFjMjJlMDgyYjAyNjliYjYgcmVsZWFzZTMxLW1haW50Cis4NTA4NiBiM2M3ZTUxNjI3ZmRjNjk5MGJkYTZhYTY1MGQ2ZDAxMTI5ZTU0M2YyIHB5M2sKKzg1MDg3IDdiYjA1MTNjZDBiODI4OTJlYjI1N2NmZTdkMzA2ODM3ZTRjMmY0MWYgcHkzaworODUwODggNzM0ODVjYmQ2YzllYjZlYzRlMDBhMDViNjcyNjQwOGEyNDdkZDUzOCBweTNrCis4NTA4OSA1OWRmYjIxMzgzZjhiZjlmNmQxNmZlYThlMjk1NTkyNDRhNTVkYmY0IHJlbGVhc2UzMS1tYWludAorODUwOTAgMGVlMjExM2E0ZmRlNjIzNjZkYjY3MzcyOWNjNTM3NTA2MDM5ZjkzOSBweTNrCis4NTA5MSA3NzhjYjhlNmM2MzgzMDQwMzQxYWU0Nzc2YTBjZGYxY2NjYzk0ODVmIHJlbGVhc2UzMS1tYWludAorODUwOTIgZTEyYjEwNDM1NTMwOGRiZjcyNWE5NWQ1ZjNlOTIzNjU4MjUyOWE0YyByZWxlYXNlMjctbWFpbnQKKzg1MDkzIDdjN2QxZDk2ZTJjMzM0MTRiZDQ5YjExYmUwMDUyMTQ5ZTgwOGY5ZTkgcHkzaworODUwOTQgYzYyMGZlODdjNzAzYjA5MGZjN2VhMGZkOTQ3MjlmMjk3ZjBhYzczZSBweTNrCis4NTA5NSBhYzhkOWNhYzMwMzM1ZTNhMjNjODFmYmVhYThkNDhjNDgzNTFlZWU0IHB5M2sKKzg1MDk2IDE5MWVkMmFkNTk5N2MxZmM1NmZhMjM2OTM1ZTU5NTg3YjhjZjIzNWYgcHkzaworODUwOTcgOTYxZjUzNTRlYjU0MWY0NDUwZTUwZjQ1MThkYTA0MzE3OGFiYWIzYiBweTNrCis4NTA5OCA4MDBhZGRjOTg1NzE5ZmVlNDE2N2Y3MzdmZGE0YTgyZjg3MDA2NjcxIHB5M2staXNzdWU5OTc4Cis4NTA5OSAzZmI1ODNjOGU5N2U3ZjY0OTAyOWRjNjBlODYxN2FjM2EwZmZhMDY5IHB5M2staXNzdWU5OTc4Cis4NTEwMCBmNGQwNDc0OTFjYjQyYTgzZjJhNjk2MjcwZWQzODc4NWNmYjE0NDZjIHB5M2sKKzg1MTAxIDk0MTA5MGVkOTZkZjRmMDdhZjc4NjE4MzU5YmZhZTg5Y2ZmNGVhYjggcHkzaworODUxMDIgNjQzNGNkY2U3MTUyODUyM2E5ZDJkZDExM2UxNDQzNzdiZDU5NjM1YiByZWxlYXNlMzEtbWFpbnQKKzg1MTAzIDBiNGJmNmNkZTExZGVlMGQ0NTY0ZGJkMjdjZDZmYWQyZjAwYTQwNGUgcmVsZWFzZTI3LW1haW50Cis4NTEwNCAxZDE1YjU2N2E3NGIyODNlYjNkNmY4Yjk4ZDk4Y2NjMjUwYjRiYWM1IHB5M2staXNzdWU5OTc4Cis4NTEwNSBhZjlkZWUxMjdlM2MyYjVkMDZhN2JhMzliZmU3YzMzOTIzNzYyOTMyIHB5M2staXNzdWU5OTc4Cis4NTEwNiBjNGM2ZDg0MmQ4MmEwMTg3MjU5MGQwMmEzNWZlZDNjNmU0NDY2MTk2IHB5M2staXNzdWU5OTc4Cis4NTEwNyAzNGFiZTM2OTE5ZTUzYTRhMjJjNDFjMWZkMDU5NjgzMmM2Mjg4NDYzIHB5M2staXNzdWU5OTc4Cis4NTEwOCAxNDcyNThhMGFkZjg1Y2M0YmM2YWNiOWRkYmVjZWY3MmVhMDgxZGMxIHB5M2staXNzdWU5OTc4Cis4NTEwOSAyNWU4Yjc4MjdjN2RmMzk2YjRhYjRhZjFiYjJkY2UxNzA5OWVhNTcxIHB5M2sKKzg1MTEwIGE0MzBmOGZlYzRhMGZjNGRhYzhjOTZjN2Q4NzRhNzI1YjVhY2Q5NWQgcmVsZWFzZTI3LW1haW50Cis4NTExMSAwMDc3ZWUzMDEzNGM2YjNkNGQ3YjFmMDY5MmJiMDllZmI5Mjg1MDUwIHB5M2sKKzg1MTEzIDZkZGNmNzQyODIyN2EyMjQ4NTFkNzRiNmFkMjFlOTMwMzhkZDBhNjAgcHkzaworODUxMTQgNTkzNmVjM2M0ZWMwMjdmZjkzZmQwYmE2Y2YwNTA3NDQ4NTRlYjkwMSBweTNrCis4NTExNSAwMWI5NmY3OGZiNzBiN2JlYWI4ZjdlMjEyYjgxYzRmZDY4MjBjYzEyIHB5M2sKKzg1MTE2IDFhZGQ4ZTVmMzE5ODUxOGIzMjNlNzdmMmFmY2M0OWRlYTlkNDQzZWIgcHkzaworODUxMTcgNzQ2ZTkxNTAxMTlhZGI3MDgyMTYwNDRiMTAyNDczZmYyYjY0ZGU4YiBweTNrCis4NTExOCBlNzEwZTc5MmVmMmU3NmI0OTFmZjYwNGM5Y2NhMGFjYzkxZmUxNzBiIHB5M2sKKzg1MTE5IGVmMTY4Njg4YWYwYTk2ZjgxNWRkMjcxYjMxNjIzYTI5ZmI1ZmJmODcgcHkzaworODUxMjAgYTkzNDlmZDNkMGY3YmNhZWExNTYwYWZhNGM1Y2Q4OTMzMDFmMDhjNiBweTNrCis4NTEyMSBlYTQ3MjNhYWM0NzhmNGJkNDQ5OGIxMmEzZTJhNzhhYWM3ZTI3MmE4IHB5M2sKKzg1MTIyIDQwMzNmODNjMmRmMThkOThmYTI3NmVmMzU3YWEyM2I5Y2FjMDllMDcgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MTIzIDlmZTFkY2UyYmZhNDQ1MDYyOTgyMjBiNWIyODMzZjI5YWE3MWNjNzMgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MTI0IGQ5NTczZTM2MjRlYzEyMjFlZjlkOWRlZTFhNmY4OWM1N2NmZTZkZmUgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MTI1IDdhZGQ0NWJjYzljNjcyYzM4NDMyNjBjOTM0NzE4ZjI2ZWE3YmNjMGIgcHkzaworODUxMjYgZDc4N2VmOWFjYjcyNGU4YzU5NzQ5NzRlMGE3YzZjZGQ2NDEzOGJkNSByZWxlYXNlMzEtbWFpbnQKKzg1MTI3IGI5OWY1MjdlMGQ3N2M3MDMzZWMxZGU3OThjMzU4ZDYxNzJkNTk4OWMgcmVsZWFzZTI3LW1haW50Cis4NTEzMCA5ZjI3ZDcyYmY1ZGY4OTMwOGJmNDBjNjgyYTYxOWU4OWNkYTkzOGE5IHB5M2sKKzg1MTMyIDI4MmM3N2RiM2QzODliZDczNDFiNGJkNmE4YzVjMDg1ODA5ZDVlN2YgcHkzaworODUxMzMgY2IyZmJiNWU2NDA5NjRlN2Y3ZGU2ZGYwZmM3ZTQ0OTc3YTFhOTFkNiByZWxlYXNlMzEtbWFpbnQKKzg1MTM1IDA0ZjUzY2E0MTU5NmVlODAxMDM5MzIzMDc1ODEyNjFlZGY0NWFmYWUgcHkzaworODUxMzYgODdmNGIzMjkwNWRmMTA1MGVmMGFjODY1ZjU4NGI0ZGFmNTMyMDk0YyByZWxlYXNlMjctbWFpbnQKKzg1MTM3IDU5NzgwNGI0MTEyNTliOGMwZjU2NTg0OWE2NDk0Y2UxYzZmN2EzYWUgcHkzaworODUxMzggZGFlY2U3YTIzNGRjOTFhODE5MDY0MzQ1MzA5OGIwYWQ1MTZmZGViMyByZWxlYXNlMjctbWFpbnQKKzg1MTM5IDU5ZGUyMjVhMTljZjhhYzU0N2EwY2RiYjQ5YTlmZDdjMmUwNjg1MjUgcmVsZWFzZTMxLW1haW50Cis4NTE0MCBhOWEzMGNmYjg5YTVkMzRiZjg2ZjcwMTcwNjJjZmJhOTUxNTg5ZjczIHB5M2sKKzg1MTQxIDZmMTMzZTg3YTRmOGIxZWVlMDgwOWFkNTVhZWZkNTgzNDA3MGUzODcgcmVsZWFzZTMxLW1haW50Cis4NTE0MiAxNWMzNjcxYzE3ODMyZDlhZjliMTdlZTE5ODY5ZmZmYTk4YzY1MjExIHB5M2sKKzg1MTQzIDliNWU2YTU3YWIxMDU0MjkxZTc3Y2U1MTA4ZTMxMTliZjk2ZDYxYjEgcmVsZWFzZTMxLW1haW50Cis4NTE0NCAyZjY4MzFjZDI0MWVkNzI5MTc0OThiMGQ5YjVhZDEwYTJjYzhiNTRkIHJlbGVhc2UyNy1tYWludAorODUxNDUgMDYyMmQ0ZDA4YWYwMjVmMjUxYjZmZmU2YmU1ZGMwY2IzZDFjNGJiNCByZWxlYXNlMjctbWFpbnQKKzg1MTQ2IDJlNjg0MGMwYzEyNjZiNDYwNmU4NTQ1ODZmN2YyYjI5MTBkNGU0YmMgcHkzaworODUxNTMgOTUyNThhNmEwNjgzZTZhNTQ5NWNkMGQxNTRiZmZlZWNkMzBhZmU5YyBweTNrCis4NTE1NCAzNDBkMWJmNTk1MWUxMDhiM2ZkMDAzOTllNTBlYzEzZTE2MjIyODg3IHB5M2sKKzg1MTU1IDQ3MWRiZDkwNmFhZDAxMWQyNGRkOGIyNGQzMmY0YjMzZjgwMWE5Y2MgcmVsZWFzZTI3LW1haW50Cis4NTE1NiA5MWU2MjM4OTBiOTRjMWRlMDQyZjY3MDA4NDU0YmQzMzA4MjI1ZmM0IHB5M2sKKzg1MTU3IGRlNDE4ZDlkZDczMzFiNjMyODI1ZDM4ZmM2Nzg3MTkxYTg4MTEwYTkgcmVsZWFzZTMxLW1haW50Cis4NTE1OCBjZTQ3NWQzNWI1MGZjNjM2ZTUyYTA1NWVmNTI3OTkwMjUwNTkwMzBlIHJlbGVhc2UyNy1tYWludAorODUxNjkgN2MwZjE4MzdlOGNiZTI1ZDQ3YjM4MTc1Y2EzMzYwZjNmNmEyMDE4NiBweTNrCis4NTE3MCBiZWJlNWUzNTY2MWUyMDc2ZWE3YTExYTQyODYzOTRmMDVlZDRkZmFmIHJlbGVhc2UzMS1tYWludAorODUxNzEgYTc0OGJmY2I2OTczM2NkOWZkMGU5Mzg3ODU3YjM0NjJkOTNjMGUwYyByZWxlYXNlMjctbWFpbnQKKzg1MTcyIGRlN2NkYjcyNjM1MDJiNzQ3Nzg2NGM5ZGFiMGU3MGNlMmMwNWFiZWYgcHkzaworODUxNzMgMGNjM2ZmODAyMGFlNjVjOTZjZDNiY2QzNTdhZWMyOGU5MGJmNWYyMyBweTNrCis4NTE3NCA0MjgzMTRlZWIyYzc2M2I5Y2NiODdjMzBkNjQ3YTU3ZjRiOGJhZGNiIHB5M2sKKzg1MTc1IGJiNWUxOGE5YmRlM2FlMjI3YzNmMWQwMmJmYWZkNjM5YjMzZjc5NGIgcHkzaworODUxNzYgOGRlNTM1ZGVmMTIyMmU0Yjc2NWYwMjk0OGNkMzFkNDEwYzE0NTEwYSBweTNrCis4NTE3NyA5MDQ4ODA3YmU4M2FiYjk5OTAzZTU3MzgwODQxMGJiNTAyNThmOGZiIHB5M2sKKzg1MTc4IGM5OTBlYjliNjBhOWU0NzliMWVmNTg3M2JmYjRjOTllMjQwZmY5M2YgcHkzaworODUxNzkgZWY1YzU3MjE3YjIwM2VhNzUwY2I4ZjRiZjU1NTFmY2YxMjUxMmY4MSBweTNrCis4NTE4MCAxMjEyZTUwMGE1ODUwZTk0NDQxMTM0YWYwNWQxZjVkNTFkYWNmZDYwIHJlbGVhc2UzMS1tYWludAorODUxODEgZjNhNzBkOTlkN2UwZmI1Y2E1YjZkMDUxMmY0N2M4N2JmODBkOTI4ZiByZWxlYXNlMjctbWFpbnQKKzg1MTgyIDA3MGE4ZjY2NDIyMGU2YzUzOGU1OGFkNzRkY2QzNDhiNTYyYjMxOGEgcHkzaworODUxODMgMzk0ZTI1MzgyYTU5MjM2YjdkNTQ4YjRhYzNjMDllZmJjMWI1MWQzMSByZWxlYXNlMzEtbWFpbnQKKzg1MTkzIGRlYzA4Nzg5YTliNDIzM2Y3MzNlZjNiMTViOGRlOTdjNjgyMmFlOTQgcHkzaworODUxOTQgMGY4NzA4NWIyOTBmNDA2MGZhODBkOWFmZDRlZDZiOWEzZTIxOGY4MiByZWxlYXNlMjctbWFpbnQKKzg1MTk1IGI5ZTI2YjBjNDYxNzk4Nzk1YWNmNGNhZmU1MzI0ZGZhNzQ3OGEwYTggcmVsZWFzZTMxLW1haW50Cis4NTE5NiA5YmJkNDQ5ODY1OGVlMzcxMmMxYTM1MjhiNjNlMGJhOTg2NGY2NDBlIHBlcC0zODIKKzg1MTk3IDNiYjNlZTZlNjBlMGE4MjIxOWI4OTI2ZDZhZDlhM2RlOWJiYTJjNmYgcHkzaworODUxOTggYmE4Y2QyMDA3ZDI5MjJmNTRlY2QwNTVjZjU2OWMzMGQyMTk4ZWVkMCByZWxlYXNlMzEtbWFpbnQKKzg1MTk5IDEzOWRkNGNmYjgwZjU3OGQ2NTNjNzNiYWE1YjMwYWY1NGU4MzU4ZDkgcHkzaworODUyMDAgZjdjOTEwN2Y3YWJkZTJmNTA3YWFmNzk5YzVjMDIxZTQwZTM2MjFlNCByZWxlYXNlMzEtbWFpbnQKKzg1MjAxIGQxZTBjZjgxOGFkMjk5ZmZlNjQ1YWJlOWExMmI4Y2ZmZjUwZmYxYzkgcmVsZWFzZTI3LW1haW50Cis4NTIwMiAyYzJiYTFiMzA4MjNmMjA4ZDYwYTM5NDkwMDU3M2ZiZTdkMDJmZjE0IHB5M2sKKzg1MjAzIDk0NWE1NWQ0ZTczZWY4MjUxNDA3M2FmYjYzYTliZDM4NWRhZjlkZTQgcmVsZWFzZTMxLW1haW50Cis4NTIwNCBmMTFkYzk0MDRkMTE4NjFjMmMxMWZkNDUwMjg3NjcwY2Y5ZGFjYjQ5IHJlbGVhc2UyNy1tYWludAorODUyMDUgYWQ0MWZiZjMzZTNiOThkNGQ3YjI2ODUzMTQ4NzYwZjQ3NDZmN2M5ZCBweTNrCis4NTIwNiAzMmMzMmI3MGFhMzNiYjM0MDZjMjBjOGI0Mjg3NzE2MjcxM2Y4Zjk3IHJlbGVhc2UzMS1tYWludAorODUyMDcgZTFmNmNlODM2ZmM1MzE3ZmEzOTA1ZGNkYzg0Mzg2N2VjNTNlYjE1MCByZWxlYXNlMjctbWFpbnQKKzg1MjA4IDllYjllM2Y2NmUzYWQ4ZmVhZmZkZDVmNzU2ZjY4OGNlMDZmODA3M2EgcHkzaworODUyMDkgOGJkMGEwNjNjZWI5Y2U3YTkxNDExZWIwMzVkMmRmZjNmYzUxNmNmMSBweTNrCis4NTIxMCBiNzdlOTE0NDVkOWI3MWYxYTQ0MTliNmY5YjMyNmVlNDFlMzQ5MmQ1IHJlbGVhc2UzMS1tYWludAorODUyMTEgYjMzNGVhYWRiNTA4Y2VlMjRmZWFlMTM1OWJhMTY3NjI5ODdmMTU2ZCBweTNrCis4NTIxMiA2YWY3YjQxMDJkNzdkY2ExMzM5NzkxMTY4MTI2ZWRjNDNkYzdlN2VjIHJlbGVhc2UzMS1tYWludAorODUyMTMgMzYzM2Q4ZmU1NTUwNmE5YTNkODcxNWRlYmU3NTBhYTQxNjRjOWRjMSByZWxlYXNlMjctbWFpbnQKKzg1MjE1IGQxNjFmOGM5NjRlYjhhYjZhZGU0YzU0ZjRiNzI1MzVjOTg4YTRhYzQgcHkzaworODUyMjAgYzI4ZmRlZWVhNzg2MDg4ODk5NThhOWUyNDY0NGRlZmE1MDE0MmU4ZCBweTNrCis4NTIyMSA1ZjIwZjdmMTVlZGY3MDQ1ZDliZjNlODJhNjZkYzBiZDgxY2MyNmI1IHB5M2sKKzg1MjIyIDhmZThiMjgxMzU2YzNkYjNiODUzMWUxMTZlODZlZDBhYzYzMzkwNjEgcHkzaworODUyMjMgNzUzYmYyM2U0NWM1YmU4YzIzN2RhMmJiZjU0ZTQwYThiNjNhNmExNSBweTNrCis4NTIyNCBiMDY1YjE5NDBjYmQ5ZmEzY2U2NjM0NmZmNjNiZTkzMDU3NjA4YWI0IHJlbGVhc2UzMS1tYWludAorODUyMjUgMTJjNmRhNWFjZDczMDY3YzkxZDE2YzgzN2M1ZTQ5ZDZmZmZiYzYzZSByZWxlYXNlMjctbWFpbnQKKzg1MjI2IDA5ODE2ZmM5Y2RlNTU3ZDExNmViMmE2YzM5ODUyZTg5NTY0YzZhYzUgcHkzaworODUyMjggZmI4Mjg0MGYwZTcwYmVjZjc1YTEyYTA5ZmE4ZmVjYmMxN2RhYjE3ZCBweTNrCis4NTIyOSA5OTg4OTBjZmYyMDVmMzI0NWY3ZGYwZjM2NDdkNWM1ZDAzYzM0NmM0IHB5M2sKKzg1MjMyIDNkNDI1MGNjY2NlOTE4MjY1YzdhNGQ1MGVhZmFhNGFkN2ExMmUyMTggcHkzaworODUyMzMgNzc2MDk1YWEwNThkMWUxMDkzYTQyODFjNmNmYjM2MzUyOTQwZDcwZCByZWxlYXNlMzEtbWFpbnQKKzg1MjM0IGM2ZGRiZmI3YWI0MzgxOTU0ZjZhYjBiNjBjYjY0YWIzYzA0MjhkZDcgcmVsZWFzZTI3LW1haW50Cis4NTIzNSA3OWJiN2NhZTY5YmVjYjk2NGUwMThkNzZjODBjZGY3MTkxMGM1ZDYxIHB5M2sKKzg1MjM2IDc1OWU1ZDI3NWJlYjM5OWExY2IyYjJkN2Q2ODgxMjNjMmFiOTAyNjMgcHkzaworODUyMzcgNjRjYTAxZWMxNzE1ZmIzNmUxODM3MzYyZDcyNTc5MDBkNTE0MDM1NSByZWxlYXNlMzEtbWFpbnQKKzg1MjM4IGNkNzM5MTdmMjQ3ODM4NjZlZmVmNGMxMDlkYTJkMjgwMTgwNmUyZDkgcmVsZWFzZTI3LW1haW50Cis4NTIzOSAxYzQxNzgxMWU1MDhmOTllODViMWRjNDBlNGM1NjRiZGY4YjZlZDhjIHB5M2sKKzg1MjQwIDhiY2JkZDY3MzBhNzU3MzhjZDA1MWQzOWE2NGZkODBlNTY0NjIwNGUgcHkzaworODUyNDEgN2EwYjQxZjFjNzNiODUyYWY0Y2Y1ZDA5MTE3ZWU2YzQ5OGYzOGNlZSByZWxlYXNlMzEtbWFpbnQKKzg1MjQyIGVlZGJlNWVhNDRjYjIxNTkzZGFiM2JjZGYzMTYxNzg2MGY4ODgwNzcgcmVsZWFzZTMxLW1haW50Cis4NTI0MyBlYjdkNjlkODk2NTAxY2I5NmUxNjRhMGM5MjExNzJlNDhiMGM5Yzg2IHJlbGVhc2UzMS1tYWludAorODUyNDQgYTY4Zjg3NjM1NTViMjE0ZWY3MzUyOWM5Mjc3MjExMjNhYWUwZjk4NSByZWxlYXNlMzEtbWFpbnQKKzg1MjQ1IDUzNzBkNGYwODY0ODA5Y2VlMWUzZWY2MjlmNzU4MGRhODFlNTlkNzggcmVsZWFzZTMxLW1haW50Cis4NTI0NiBhNGM5NzQ2Y2IwM2M1YTViYTg0MmJhZGNiZDgwYzhiYWI4NzQ0ZTRlIHJlbGVhc2UzMS1tYWludAorODUyNDcgYmZlZTU0NzgxYmExZjkzZTRkOTBkY2Y2ZWZmMDdmMTdkZjNhNWVlNCByZWxlYXNlMzEtbWFpbnQKKzg1MjQ4IGM5ODc5YjM0MDJlNGFiNzJkMmQzOWI0NWRiNWFhMjNlM2RjZjZlYTYgcmVsZWFzZTMxLW1haW50Cis4NTI0OSBlYjhlMTM3ODRkZTczODRjNTlmZGJlNDc2YWUzOWNiMDJhMTIwNTZlIHJlbGVhc2UzMS1tYWludAorODUyNTAgYjlhNzVkZDc0MjBkMDU2NmI3MzIyNTg3MmE3NDVkYjY5Yjg3NzFiZiByZWxlYXNlMzEtbWFpbnQKKzg1MjUxIDkwZTE3MzVkZjRkOTYyY2VlMDBjNDg2MTFjYTBhZWZlOGU1OGViMDQgcmVsZWFzZTMxLW1haW50Cis4NTI1MiAyZGU4MzIzYmQ0ZWJhMmFhMzUzY2RiMWZkNjgwYTE5M2E3NDM5YTRhIHJlbGVhc2UzMS1tYWludAorODUyNTMgYTA0NzkzNDBmMDM1MmYyYWU2M2JiMzZmZDhkNjRmNjE2OWQ5NDcwNSBweTNrCis4NTI1NCBmMDA0NDBhZjk0MTM3OGRhYjQ0ZDRlMWQwNzRiYmJjMGM1MzYwOTJhIHJlbGVhc2UzMS1tYWludAorODUyNTUgMDQ0Y2M4YTlmMTljZmExYjc3ZmFkMGI4ZWEzNjFmOWZlYTU0NGQxMCByZWxlYXNlMzEtbWFpbnQKKzg1MjU2IDZmOWQxNWZjY2ZhNGFjZjFhZmEzNzBmMjFmYjNjZmRmYWIyM2E3NjggcmVsZWFzZTMxLW1haW50Cis4NTI1NyBjNjFjMDJhYzIwOTlmYmY3ODY0ZWZmY2JlYjQ0MDY3YzkzZGJkMjIyIHJlbGVhc2UzMS1tYWludAorODUyNTggNjk1OWFkYmEzYjZhNWQyMjdkYjg5MTk4MWIyOThiMDhjYzlmZDllYyByZWxlYXNlMzEtbWFpbnQKKzg1MjU5IGE1YzYzYjNhOTZhOWE4ZjIyNDJjM2QyMDk3MzNiM2FlODQ4MjNmNGIgcmVsZWFzZTMxLW1haW50Cis4NTI2MCAyODMwNjI0NGFmYTBmNDU4OWMxYzU5ZWQ3NDQwMzhiODJkZGI0OTNiIHJlbGVhc2UzMS1tYWludAorODUyNjEgNjQ5ODliMDMzOThjYTJmOGZiNjY4ODRmMjE5ZGE5ZDkzYWE3MGY4MyByZWxlYXNlMjctbWFpbnQKKzg1MjYyIGZmNzM0ZjIyNWI0N2U5Njg5YmQyZGQxMDU4NWU3MDJjNjQ0OGQwMjMgcmVsZWFzZTI3LW1haW50Cis4NTI2MyBjYWI0NTg2MzhlNGRiNTQ3ZTBkZjYzZDQwNzk1ZjJjZjlkMmU4ODI5IHJlbGVhc2UzMS1tYWludAorODUyNjQgYmFhOThiYTg1ZmQ0MTE4OWMwYTk1YzE1MGZmZDQ1NWNlZGRmYzc2MSByZWxlYXNlMjctbWFpbnQKKzg1MjY1IDJjMTE1YmY1MmNmZjljZTVmYmZjMjMwY2M0ZGIwYWY1Njc0ZWNkYTkgcmVsZWFzZTI3LW1haW50Cis4NTI2NiAyODU2NTFhMTUzNTVlY2RlNDA1OTg5OTRhZjk1YjQyZGMyMDc4ZDI0IHJlbGVhc2UyNy1tYWludAorODUyNjcgY2UyMDIxNTJlMjFhMTE0M2U2ZTliZWFjYWY4MDJmZWI3ZTE5Y2VmMCByZWxlYXNlMjctbWFpbnQKKzg1MjY4IDUzNmQ4NjUwZGEzZGYwZDk2N2RjOTc3OGUzMzQzYWIyYWM5ODk2Y2EgcmVsZWFzZTI3LW1haW50Cis4NTI2OSBlOWUyNDFhOTNmOWVlMzBjZWY5MzgxMDYyM2FmZDdhODBkOWI5MmNjIHJlbGVhc2UyNy1tYWludAorODUyNzAgNzgzOTZlZjRkODFjZDZiNzUzY2E1ODM3M2E4Y2VmYTQ4ZjUzZjBiZCByZWxlYXNlMjctbWFpbnQKKzg1MjcxIDFhMGUwNjY5Nzc5Y2NhZjZkODI3MDg4MTA3NTYxM2JhZjIxZTZkZjkgcmVsZWFzZTI3LW1haW50Cis4NTI3MiA1MjFlYWMzMWE4OTNhOThhMGQ1YWYzNDQ2ZTgzNWIwZGZmNDdjNGI1IHB5M2sKKzg1MjczIDFjZmQzYjEyNDg5ZGFlOTRhMWY2NGE3OTdmYzYwMmM5OWQ3YjBiNTQgcHkzaworODUyNzQgOWFmZWQ3MGQzYWNhMWM2Mzc4YWUyYzM0ZDNhNWRkY2ZmNzlhNzdjYSBweTNrCis4NTI3NiBkZjg0NGJiNjcyOWE0YmM2NjE4YmFkZTJjNjBiZDhhNThlOTBkNzVlIHB5M2sKKzg1Mjc3IDkyNTdmMDgzZmNmZjIyZjQzZmNhOThlZDBjN2FmOTc2ZGIzZmU0YzQgcmVsZWFzZTMxLW1haW50Cis4NTI3OCAwMTkyMDU1YmNjM2JlOTE1OTA3NjE3N2ZiNTgyNzMxOGQwY2MwM2FkIHJlbGVhc2UyNy1tYWludAorODUyNzkgZDY3Mjc1M2EwM2YwMDhjZTliMjg0YWQ5YmU0N2QwMzBjMTg0N2IzYiByZWxlYXNlMzEtbWFpbnQKKzg1MjgwIDcwMTgyNjFmMmFjMWRhMTExMGU1Nzc2ZjYzMGY3ZDBjZGFlNDM4YmQgcmVsZWFzZTI3LW1haW50Cis4NTI4MSAyZDk5ZWRjNGYxMGRmYjBjZmRhNGEyNmE3ZmMxYzBkMGI0MmU1OGM4IHJlbGVhc2UzMS1tYWludAorODUyODIgNWI1NWU4YTljMTA3MWQzNjQ0OTQ0ODM4MmJjZjU1ZmI4Y2I3ZmJjZiByZWxlYXNlMjctbWFpbnQKKzg1Mjg3IDA2NmZiM2ZhZjZkNTM5MmYyZWYzMjIzMzA4ZDhlMzEwZTU3MTg2NGIgcHkzaworODUyODggODYyOWY3ZDhiNWUzMzdiMGEwOTdhZjgwNzc5MjUzNzlkNzA0Njg5NyBweTNrCis4NTI4OSBkMGNlM2ViMTFiMjg2YWI1NDk5OTkyZDFlYjhiMzJkZjA1ZjkzMzJhIHB5M2sKKzg1MjkwIDRkYTU1YzQ5MzQzNTcwMDE1YTQ5NDhmMGRjMWUzYTkzMzUzNzZiMDUgcHkzaworODUyOTEgYjhlNzhjZmM5NGViYTZhZTQ2MjVlOTdiMjk1NjY0MThhMjNhNDg1MiBweTNrCis4NTI5MiAzMmRjY2NkYzczZjhmNmZkZTg1ZjhhNTgzY2FlZDQ0OThkNzg2ZDExIHJlbGVhc2UyNy1tYWludAorODUyOTMgN2MxMDMxZDM4MjNjYzRkYjQ0NTkyODdkMzg0NTA0MGFhNDE2OGM3NyByZWxlYXNlMzEtbWFpbnQKKzg1Mjk1IDYyYzU4ZGM5MTJlODE2NTU0Yjg3OGNmNzZkY2ZjMWZkY2FiMDZhN2YgcHkzaworODUyOTYgZjIzN2ZkZTkyNWZhN2RkNGU4NzcyMmQ3NjgyYjM5YWViMDBhNWJiNCBweTNrCis4NTI5NyBjMWU5NTQyYjZjNzRhYTYzZjA4YTZhNDRkYTdjODNhNmM4YzY2NDljIHB5M2sKKzg1Mjk4IGUzYWU1YjAwYmExNWVlZTdiNjViNDBjYTA5MmI1NDA1NDlkOTJmMzEgcHkzaworODUyOTkgYTYyYzRkNWNkZjZjNzQzODE3MGVjNjIzY2FjODVmZWYyMWYyNDMxMSBweTNrCis4NTMwMCBiMjQ1N2ViODM0YWUwOWQyODQ2Mjg4Mzc5ZWNiZjM3MTU5OWU4NTNjIHJlbGVhc2UzMS1tYWludAorODUzMDEgZGZiMzRlNWZlMDY2MTlhODVjMmQ4OGNiMGUwNzE5NzY5YjQ5ZmNkZCByZWxlYXNlMjctbWFpbnQKKzg1MzAyIDA3MWYxZjdhZjUyMjNiODhiMjFlZjNjNmE2ZDJjMWRiZTExNzA0NzYgcHkzaworODUzMDQgMzkwMTRmMGFiYzMyODI5NWIzYjc4MGM3NjEyNzkwNzQ5ODc4NWU1ZCBweTNrCis4NTMwNSA3ODc5YThlYzdmNzlhOTMyM2NjYzUwYWVmNTQwZThmZjRmNjZiYjkwIHB5M2sKKzg1MzA2IDFmMzkxOWFmOGE1MzZkMThlZWQ0NzU0OGMwNWIyZTg2OTAxOGMxODQgcHkzaworODUzMDcgMjE0N2NjMTUyMjI3MTU0MTE5MDBjYzI1MjU3NTM3YzJkN2I4ZTAwZCBweTNrCis4NTMwOCA4ZmQ1ZDA2NDYyZTZiOGQ1ZjE2MTg2OWU3YzdjNzRlYzk0NTAxNDQ4IHB5M2sKKzg1MzA5IGU0YmRkMDdjZTBjNjI2OTM4Y2NkOTkzNmZmMjNmMTU5ZmVkYTE4ZDUgcHkzaworODUzMTAgMWM0Nzc0YjRlOThhNDYyY2NkMDAyMGIwNWNkYWE5MDNkMjM3NWViNyBweTNrCis4NTMxMSA3N2E2YTI0OWUyNGU4ZTYyZWVmNWYzNWYwZWIwYjEyYjY2NzQ0ZjIxIHB5M2sKKzg1MzEyIGZhNmU1MDIwOGQ5MzA5NWE0OGZiMjZiZjM1ZmU4ZmY0MTU2Yjk1MGQgcmVsZWFzZTI3LW1haW50Cis4NTMxMyAzOWEwYjk0M2UzZTFmMTdmMTIyZjFkZWM4MDFmMDY1ZWZlN2Q1MjdmIHJlbGVhc2UzMS1tYWludAorODUzMTQgODg0YzcxY2Q4ZGM2OTVhOTJiMTZjMzEzODc3OTJhYWZjMTJjM2QxYSBweTNrCis4NTMxNSBhMTRlMDc0ZmE0MmZjNTUyYzI0OWRjNjdiMTI3NzUyNDQ0Y2ViNTNmIHB5M2sKKzg1MzE2IGM0MTE1NTJjZGM3Y2QzYmU4OWY2MTIzNTE1NzJmNjAxYzNjYjZlYTEgcHkzaworODUzMTcgOGM1NzYwMmVhMWIzMGMyYWEyMWVkYmM3ZWRjYTFlMjJmMDhjN2ZkOSByZWxlYXNlMzEtbWFpbnQKKzg1MzE4IGFjZGIzMjAwNWMwYWMzMGZhYzI4NWY4Mzk0OWFkYTgxNjUyOTYxYTAgcmVsZWFzZTI3LW1haW50Cis4NTMxOSA2YTJmOGY2OTJmMDQ4Y2M4OWU4MjRjMjllODJkZDRlZmMwMzA2MjZjIHJlbGVhc2UyNy1tYWludAorODUzMjAgYTk5NjRhNGQzYzI5ZjA2MWZlYzE5MGUxZGVjMjkwMjQ5MTZmNmRhYyByZWxlYXNlMjctbWFpbnQKKzg1MzIxIDRjOThlZWZmMzdlN2YzYzMyZWE5NjAwYTc3NjkxZTVhMDM1MGYwYjAgcHkzaworODUzMjIgMWEwNDFmMzY0OTE2YmIzZDNhYjFiMzg2YmE0MDVjNjY4YTA3MWVjYSBweTNrCis4NTMyMyA0OTg3MzQ0Y2VlMjAwMTI4ZWFhMjc1ZjkwYjhkOTY5ZjdkYmU1M2IwIHB5M2sKKzg1MzI0IGIxZmIwNTM5YmY5OGJjYjQ0OTY0OWMyMTBiODI0NzNjZTEyOTBjMDUgcHkzaworODUzMjUgZGJlMDJlOTE2YWVjY2Y0YmU4NTc1ZDUwMThhNWY3MTU4ZTU4OWM1OSBweTNrCis4NTMyNiA1NjkzZGVkZTlhM2EwODQwMmE3MGVmMDFkMTE3OGM5ZGJmNzNlZTI2IHB5M2sKKzg1MzI3IDljMDI2MTgzZDgyYTRlYTkwNDE4OWRjMDJlZjQzYmMyNmIxYjdhOGMgcHkzaworODUzMjggYWVkZGIxODdmY2JlYmE1NmUzN2M0NzAzMThmN2Q0MjMzMTI3YjI3ZiBweTNrCis4NTMyOSAwYmJjM2JiMDBmYzRlYmRiZWM3ZTQxOGM5ODg0ODE0YmZlNzc5ZjhjIHJlbGVhc2UzMS1tYWludAorODUzMzAgNTE1NzViZGM1NDIwNmZlYWY4MWEwODVhN2UwNWQ3NDU5ZDA1M2JlNSByZWxlYXNlMjctbWFpbnQKKzg1MzM1IDQyZDZjMjYyYzk0NjY3MDU3ZWM0MjViZGIyYmJkYmY2YzlmMzA1MDAgcmVsZWFzZTI3LW1haW50Cis4NTMzNiAwYzQ4ODRkYjUzZTA0OTAyNWNmZDU2NmY1YmM2OTIzODQwY2MzM2NlIHB5M2sKKzg1MzM3IDY1NDNmYTRiMTQ1ODE1MjM0YmIyYjlmNzcxNmMxNTFjMmFhN2FlZWUgcmVsZWFzZTMxLW1haW50Cis4NTMzOCA3ZTAxZDY5NjRkNWQ3ZTBhYjA3N2FjYmU3MjBjZDZhYWZiNDU5NzFmIHJlbGVhc2UzMS1tYWludAorODUzMzkgMmQxNjRiMWFlYjc5YjdkZTMxY2RlNGMyOTVlYjAxMjc4MjViZTFmNiBweTNrCis4NTM0MCBhN2FiMDQ4YzY4NDVkOGU5M2MzYWNjYWJhMmY3ZDBjMjczMWY4ODgxIHB5M2sKKzg1MzQxIGU3YzlhODVmZTk2M2I1OGRlMGY2ODRkNmEzOWQzZGMzOTVkNjQ0MmUgcGVwLTM4MgorODUzNDIgY2YyYzU4M2IyY2JlYmYxOGJkYWI0OTEwMWYxZTUzMmFmZmI3M2Y2OSBweTNrCis4NTM0MyA4MTBiNTQwYWU2NTBmNzZkYzAyYmU4YWQxMGY1ZGM4NWQyMjY4ZGUzIHJlbGVhc2UzMS1tYWludAorODUzNDQgMGY2ZmJhNjViY2RlN2QyOTE0OTBmODBiZDZiNTI2NDcyYjg2NWQyZSByZWxlYXNlMjctbWFpbnQKKzg1MzQ1IGI2Mjg5OWVkN2ZiN2Q1YjM3NjJmMThhNmQwNGU3MTFlYWZjMjE5YWQgcHkzaworODUzNDYgZDQ3NWM5NDU0NmJlZDY1NGU5NWU4MzNlZjNjNDU4NmViMTkyZmQzNyByZWxlYXNlMzEtbWFpbnQKKzg1MzQ3IGZkZWIwZGNiOWEzZmQwZDE5ZjQ2M2JkYTJhMWY2NjhlNTY3YjgzZWMgcHkzaworODUzNDggMmZhOWQ3MzQ1YWM3ZmEzYzk0ODEzNjExMzJkNGFmNDY0NTE2ZWQ5NCByZWxlYXNlMzEtbWFpbnQKKzg1MzQ5IDUxZDMwNGVjNmMxMWI1OTc0Zjc0ZWQ1ODhhNWE4MjYyZDRiOTMxZDggcHkzaworODUzNTAgYTlhNDU2MjRjZWRmMWRlMzI0NTVjZDJlMjZlODY4MjA5M2FmOGI5NiByZWxlYXNlMjctbWFpbnQKKzg1MzUxIDIzMTM0ZTE2NzNkNzFiYTliZDBmNDQ4NzBlMzdhODFjNmY2Yjk4Y2EgcmVsZWFzZTMxLW1haW50Cis4NTM1MiBlZDVlNTk4ZGExNTBlZjZiOTA1NmEwNzI3MzBhNGI0OTNhOGIzM2JiIHB5M2sKKzg1MzUzIDI1ZDA3ODczOWMyYTRlZDgzODVkZDZhZDE2ZTcxZTczOTZkMGIxNDAgcHkzaworODUzNTQgYzAxOWU5NzdmMjIyYzMwYmQzNmVhMzAwNzEyYTg3NTE1NDM0M2E2MiBweTNrCis4NTM1NSBlZjIxZjhjOTlmYjM0MDUyY2VkMzZiZWJlMjhmOWQ0YzVkZWE2NWUyIHB5M2sKKzg1MzU3IGRhMDEyZDlhMmMyM2QxNDRlMzk5ZDJlMDFhNTViOGE4M2FkOTQ1NzMgcHkzaworODUzNTggYWQxNWI4OTEwNmRlM2JlMDVlMGYwMzk2YjA2N2E4N2NlZGZlMGUwMSByZWxlYXNlMjctbWFpbnQKKzg1MzU5IDQ1MThiMmMyZDYxNGYxMzgxN2Q4ZTg3NWY5NTAzMzJjYTVhNzE4ZWYgcHkzaworODUzNjAgY2RjOTVmZGRkYjdiMmJhOWRhYTAzMjdjYWE1ZmU5YzFmOGJjZjJkZSByZWxlYXNlMjctbWFpbnQKKzg1MzYxIDVlZGUxNWUxMjQ1ODE2OTkwOTNlY2M0NTIwNmZhMGI3ZjVkM2YwMGEgcmVsZWFzZTI3LW1haW50Cis4NTM2MSBkNTBiZmI3YWI1N2M5MjZiZjA3ZmFiYjk4Y2I3OGFhYzA2MDgzOGI3IHB5M2sKKzg1MzYyIDQ3NTgzMDQyNGMxZTgxODYwNTk5NDUzYjMwOWE5NzRlNmUzZmNhYzYgcHkzay10dGstZGVidWctb24teHA1Cis4NTM2MyA1YWFlZmE5NzUyYWNiNDlhODA3YWRjZWNhMzVkMjA4NWJhMzQxMzY2IHB5M2stdHRrLWRlYnVnLW9uLXhwNQorODUzNjQgNjJjMTRlZDZiOGEwYTYyNGE5YTA1OWI4YTA0NGRhN2I4ZjVhYzU3ZCBpc3N1ZTkwMDMKKzg1MzY1IDI2NzZhZjY1NTE0ZDRkOTdhOWZhMmI4Yjc0NDI4MzExMGZmZjU4M2UgaXNzdWU5MDAzCis4NTM2NiBkNDkwOWEwNTZkNGU3ODAzYmU4YTA5MjFlMTgxN2FiMmU1ZDg5ZjAzIHJlbGVhc2UyNy1tYWludAorODUzNjcgNDFhOWY5NTFlYmVhNWUxYWM2Y2VlNjMxMWRmY2Q3MzQ1ODg1NzI3MCBpc3N1ZTkwMDMKKzg1MzY4IDBhZGI2NDQwNTgxZWUxZDVhNmYzYTZlYTQ0MWZjYzVlOTY3OWNkNjcgaXNzdWU5NDM3Cis4NTM2OSBmN2Y3MDUyOTMxMGY4NGI5MTNjOTJjODE0NmRmZmVhZjdjN2JlZDMwIGlzc3VlOTQzNworODUzNzAgOWQ2ZDgzMDYzZWMyMmJkYzQyM2Q0MTFhZWMwMDBiMzhkOTNmY2VjNiBweTNrCis4NTM3MSBjYmRlODFlZjRhZjdjMDJlYzg0ZThhODhjMGQyZTMyNDFhZWQ0Y2NlIHB5M2sKKzg1MzcyIDE4YjcyNTljZDkyZDgzOGVmNjlmZGNkYTc2ODM3YjNjOGQ1ZmU2ZDUgcHkzaworODUzNzMgOTdmODBkMGExZDU2MzhhM2ExZjNlNzJmZmE0NGYwNmU1NDQwN2ViOCBwZXAtMzgyCis4NTM3NCA2NjljMzcyODc1MGIxNzU2ZmJkYjhhMjllYWQxNjJiYzM5ZTFjMDEzIHBlcC0zODIKKzg1Mzc1IDVmYTEyNWFlMDdhNjQxNzIzOGEwZjVkNzQwMWVjYzhhZTE3MWZhNDIgcHkzaworODUzNzYgZjMyMDBiZTRlYWEwOTg0ZDgxMzNiNTNhN2VhMGYwNjhjMzI0MTViYSByZWxlYXNlMzEtbWFpbnQKKzg1Mzc3IGZhYTRlMjJhYWJhN2U0YjM2ZWY5M2ZhMGNlNjFiMGYwZGNhMzMxM2IgcmVsZWFzZTI3LW1haW50Cis4NTM3OCA4Y2YxYWZmMTg1OWM2MjYzYTc1YTAwZWVmYzQ4MTJiNWY4ZWFhZmIwIHBlcC0zODIKKzg1Mzc5IDZkOTE4ZDkxMGE5Njg3Zjk4ZTk4ZTRiMjM5NDc5N2NhM2NmNjcxN2IgcGVwLTM4MgorODUzODIgZDI0OTI4YzI4MDAxOTE4YjRkYzZlYzNlMTMxZWM5MjVlNjVmMDFhNCBweTNrCis4NTM4MyA5YzcyM2FmYTQ0ZGFiYjQyMTgxOWE3Yzc0NDJlNjhmNGMyOGRlNGJkIHB5M2sKKzg1Mzg0IDQ2MTNlMTQ0OTAwMDY4MjQzZmMwZDgyOGVkYjdjMWUxMTk3NjNjY2QgcHkzaworODUzODUgOWUxNDdjMzQ5MTI2YzZlODFkNjE0YzUwYjc5NmIzZGY3NDBhZGQ2YSBweTNrCis4NTM4NiBkZWQ2MWUyNmI4NDE0ZjQ3YWRkNmNhNzQ5OWExZjQ0MzY5ZDVkNzA3IHB5M2sKKzg1Mzg3IGE4MTcyMDVkMjU0YTlmNzlmZTdmZGVjMjNlM2MyZWI0NWFhOTY2NmMgcHkzaworODUzODkgMzliMzhjYTFhYzA0YmQxYjUxYWNiMWU5NWYxYjViZmQxNGQzZWM4OCBweTNrCis4NTM5MCAyZmZiZmJjMGQzY2IxNmM2MTdlMmM4OWE2NDZjOTQ2YWYxZjBlMzllIHJlbGVhc2UyNy1tYWludAorODUzOTEgNjE3MzFlYzlhMDQ4MWU1NzE2MDY4MDE5NDYxZjNlYjk5N2FmMTFiZCByZWxlYXNlMzEtbWFpbnQKKzg1MzkyIGUyYWEzYjFkMDhiY2JjMTBhZjQzZGIwZjJjZTMzNmUwYjI4N2E5NTUgcHkzaworODUzOTMgNzkwOTQzNjQwOGUyZWUwOGM0YTFiMTJhNzlhNmIyMGZiMjhhNzYyNiByZWxlYXNlMjctbWFpbnQKKzg1Mzk0IDNlOGQyODg4NmFkNjYwZDljMzk0YjE0MmYyYWE4ZmI4ZWFhYjMzZTYgcmVsZWFzZTMxLW1haW50Cis4NTM5NSBmMmY1MmI0MGMxZjI4ZDI4MDRlYTQ2MGUwYzE0ZjJjZjdkYTA4ZTViIHB5M2sKKzg1Mzk2IGQ3YTcxZjFkMWUzNDFjMmE5Y2QxYzMyZDQ1YTllNmFiMzcxMDdmMGIgcmVsZWFzZTMxLW1haW50Cis4NTM5NyAyMTk1N2IzYjBhY2EwOTMzNDFjMDYyNjI1YjUzZTU0ZWI1Yzc3M2VjIHJlbGVhc2UyNy1tYWludAorODUzOTggNzViZWI2NzYyZTNiMDIzNjc5ZDIwZmI2ZGVlOWIzZDE4N2QzYzI0NCBweTNrCis4NTM5OSBjMDkwOGNlYmYxODQxMGZjNzBkOGNlM2Q5MmFlMTY0ZjQ4YTc0NTczIHJlbGVhc2UyNy1tYWludAorODU0MDAgZDBmNjBiZWIyOGYyM2YyMzA0NzliMmRhMjNmZTk4MjM1MjVhNTdlZCBweTNrCis4NTQwMSBlYWQ1MzY0YzRhNTlhNzMzYTRhZTBkZDI2YmE2YmYyNTIwNmI4NzM5IHB5M2sKKzg1NDAyIGYyOWNlMGNjMWQ0Y2U2YjZjZDBkZTIwYTMwNTlhMmMxMGI0N2E3MmIgcHkzaworODU0MDMgNzUyMDZkZjhlNThjNjAyODUwZDBlZjlmZDZjMWI2NjhiYTE0NmIxNyBweTNrCis4NTQwNCAyY2U2NDk2MGQ0OTBkYjZkZmE0NzNiZjNkNmQ1YzBkODVmZjcxNWE2IHB5M2sKKzg1NDA1IDIwZjQ2M2E0NTg0ZDdjNDJlMDM4NmE4ZjEwMDZhMzhlZTk5MDNmYWMgcmVsZWFzZTI3LW1haW50Cis4NTQwNiAyNDZkM2RmY2U3YjEwM2QwZDU3ZjI0ZDE5ZWUxMGU5MDU2YjdjOWZhIHJlbGVhc2UzMS1tYWludAorODU0MDcgMjNlYzBiZTA3ZTIwZWRkZjg5OWM0YzUxNDc3ZWM4MzY3NDViMGEzNyBweTNrCis4NTQwOCAxMjMyN2I5ZDMzMjUxOTgxYTU4MTMxYTYwMWU1MjU4OWFiMDZlZjBhIHB5M2sKKzg1NDA5IGNiNmU5YjAzZDBjMzIwYzg2YjNlZDZmZDkxN2YzYjExZWZjZmE1MDUgcHkzaworODU0MTAgYTE1Njc4OTM3ODNmMjMyZGUwYTM2OGJmNjVmOWI3ZWZiMjE2NjIzNyBweTNrCis4NTQxMSBiZjVjZmU5YTBiYjVlNTFlODI5NTEzYjY0NTc0MTBkNDUxZTE0NjZlIHB5M2sKKzg1NDEyIGQwMmQ2YmIwMjUzODUyNTM5NmZiMjcwMGNhMzE2ODJjYTk5YWVhNzUgcHkzaworODU0MTMgZTUxN2MzZjU2MDkxODRiMWEzN2VkZjQ4NDE1OTBmYjQ1OGY1YTkyMiBweTNrCis4NTQxNCA1ZWY3NmJjMTcxYWQ2ZDdkODg0YmJlNGE3YWVmNWM0OTcwMzFhYWExIHB5M2sKKzg1NDE1IDM3MjEzNDM4ZTIxZmFmZmZlNzFjZjcwZWFiN2Q3MjFlNjk0NWQ5MGQgcHkzaworODU0MTYgNDBlY2I0ZDAwZjI1YWI5YjE0NmViZTkyZTAyMTUyOWRhODY2MjBjOSBwZXAtMzgyCis4NTQxNyBjNDhjMDllNjkzZTZjOTE4ZTQ4ZDIxOTFkZWNjNWMwYTA5MDY5MTM3IHB5M2sKKzg1NDE4IGZhOTA1NzAwNzc1NTUxZjQ3NTA2OTQ2NDU2OGM5ZmY1YTI3ZDAxN2UgcHkzaworODU0MTkgMGQxNmQ1MGM1N2EwZjIzNDJjZTI4NTdhYTAwODA4NWQwYWFiZTQ5YSBweTNrCis4NTQyMCAxODc1YmZlZDU2ODliOWQwMjkyOWI2OGRmYTlmYThiY2FmOTIxMTUxIHB5M2sKKzg1NDIxIDM2MTljMTIxNDAwN2QzZDVlM2QwN2QyMzU3ZjY3YjIyYWQyNDMyZjcgcmVsZWFzZTMxLW1haW50Cis4NTQyMiBlZWFlZGNiZTI4MWQ1ODQ0ZmIzNWEzZDAzNGEzMDMwY2U0ZjhlZjIyIHB5M2sKKzg1NDIzIDY4OTlhOWNhNWYzNTM1ZGIzNDkyYWJkYTAxZjZjNDhmMTU4M2RlNzQgcHkzaworODU0MjQgOGIxOTI1MDJhNGE5YWQ3ODgzOTA2OTZjZGEzN2MyNmYxM2M2Yjc4OCByZWxlYXNlMzEtbWFpbnQKKzg1NDI1IDYxMGMyNWI1Y2ZhMjg5YmY3NTQ2NzhiNmQzNDZmYzY1MDkzZjliMjYgcmVsZWFzZTI3LW1haW50Cis4NTQyNiBhMWVkZGM2NGI3NTA0OWM5Nzg4MTA1YTkzZTFlMzc0N2JhZTU5OTUwIHBlcC0wMzg0Cis4NTQyOSAxOTYwZjU4YWY3ODVkNGE3MGFkYmZjMDQxOTJlNzgyYjgxNmJmMTk1IHB5M2sKKzg1NDMwIGE3NWZkMzFkZGFiYmVlY2IwMzhhZWM2YmY0YjRiNWM3MWJkNzZjOWIgcHkzaworODU0MzEgMDBkMTNiMmY4MWEzYzMxYTEyMzg4NWZmZjBiYmI3ODQ2YmNhNjViMSByZWxlYXNlMzEtbWFpbnQKKzg1NDMyIDYxYzM1NDcyYTRmODFhNDIyNzc3MWMxZjgwZGI3MGE4M2UxNWFjNjYgcHkzaworODU0MzMgNjQ3NGFkZGQyODM4Yjc2OTc3ZmRiODViZmM2MjM3MDBjYjM0N2IzZSByZWxlYXNlMjctbWFpbnQKKzg1NDM0IGYyZjdiNzBmYzVlYmU0ZjkwYWE0MzUwODRiOTFmYzk0ZTFkN2M2MzEgcmVsZWFzZTI3LW1haW50Cis4NTQzNSAzMzM1ZWRjZTQ4YTM1NDY0OWIyYThhOGJjOGRjY2JiYWE3MjA1MTU1IHB5M2sKKzg1NDM2IGE0YTZkODIzZmY4OTUxNjYyMmYxNTIzZTRkMTk2YTk5OTBiY2RkMmQgcHkzaworODU0MzcgNDc1NTc0NDcyNGYyMGJhZDQ3Nzk2YjVjZDc2N2ZhMDY3NjllYjE2MCByZWxlYXNlMzEtbWFpbnQKKzg1NDM4IDFmMjI1ZDY2OTQxYTkyMzAyNjUyMjFjODAyMDM2ZWE4NDFjMmI3YjUgcmVsZWFzZTMxLW1haW50Cis4NTQzOSBlNzZmNTU0MTU4YTg1YmVhM2FmNTFkOWQ4Zjc3NmU3ODQ5Njg5YmRmIHJlbGVhc2UyNy1tYWludAorODU0NDAgZTllYTA5Nzg3YTM1Y2Y5M2NmNTM1Zjk2NjQ5ZGZhYzEyNmIwZWZkNCBweTNrCis4NTQ0MSA0YzU3MDZiYzJmNDMwNTFmYzY4YmY2NDJlMDE3YTFkNGJmNmQwZWUxIHB5M2sKKzg1NDQyIDQ5ZGY3Nzg4ODllNmZhY2NlMzk2ZTBkMWJjY2NlNjcyOWE1OWExMzggcHkzaworODU0NDMgYTQ2NzExZGU5MjkxMjA3MmJkMTg3OGNhY2Q3MWJmZGFhYTE1NWQwNiBweTNrCis4NTQ0NCA3OGExMmI4MjlhOWFhOWU3N2M0YmFmOWMzNDIwMTZhMjVkNjE2YmQ2IHB5M2sKKzg1NDQ1IDFlNzJhYmYwNzNjNTZmNWUzMTAzMTIwMmViZDgzZTM2Yzg0NjAzMzggcmVsZWFzZTMxLW1haW50Cis4NTQ0NiBlYmUxNGNjYmExYjdiNTFhODRiMThiOWEwNjk0MjdjNWY4Y2MyZmJhIHJlbGVhc2UyNy1tYWludAorODU0NDcgNmZkNDlkMDUyMTM0NWRhZDFmYzgyZTk2MzU3YmFjNWNhNzY1M2U0NSByZWxlYXNlMjctbWFpbnQKKzg1NDQ4IGZhMjdkZDEyOThmZTU3NzY1MDg3MmRjZDE2NGY2ZWFhMTQwMmQ0Y2MgcmVsZWFzZTI3LW1haW50Cis4NTQ0OSAyZjNlMGVlY2M3NjI3N2JmNTNjMTc3MGE0NjI3ODllZTBkNTZmZDljIHJlbGVhc2UyNy1tYWludAorODU0NTAgY2NjNDI0Yzk2NjQyNmJkMTUyMjIwMmYyMDk0ZjI5MmZlYjBhNDk0ZSBweTNrCis4NTQ1MSBiNWNlMDZiYmIwNmZlMjEzMDMxMDcyOTI0NWUzNWRjOTYyMTlmMGQxIHB5M2sKKzg1NDUyIGVhMmZlOTU4MWMyZDhmMGEyMDM3ZmExYWIwZjg0OTMyMTIyZmU2ZTUgcHkzaworODU0NTMgMzBiM2Q3YzUyNTNkNTg4ZWI1MDcwNjkwNWVlOTE5MjI5NGVkMjc2NiBweTNrCis4NTQ1NCAzNjExZWE0MmI3OTJkYzEzYzU1NDhjOTY4YjVkMzc4ZmUyOTkzNTlkIHB5M2sKKzg1NDU1IGJhNjU4MWVjYjZmMWVlN2E0ODMyMzU0Yjc4ODliMGQyZjk0MmQ4NmMgcHkzaworODU0NTYgZmQwNDRjZGE5N2Q4MzcwZmNlMzNhMTM5MDhlYmMwNjBiODBmOTE1OCBweTNrCis4NTQ1NyA2YWIwZjkyMTk2NjBiODgyZWZkNGRmNjRjOTMxNjE1YzhmNTgxYmNiIHB5M2sKKzg1NDU4IGJlYWU3NmVkNWViZmUzZjhlM2MwNmJjODY2YWQwZTZjZGY5YjRiZWQgcHkzaworODU0NTkgN2Q3OTY4ODE1NmRiNWZkYmM5MDBkOGM3NzA3MmU2MTdiNDkxZTI0NyBweTNrCis4NTQ2MCBkYzIwMGNmMmY1NjU4YWMxMDVkZWY1MmQ2OTNhZTc3NTJkOTY1ZDkwIHB5M2sKKzg1NDYxIDJmMTc5YTNjYjIwNjYwYTMyY2NmODE1ZTdmNDRiMTVjYzUzMWRhM2UgcHkzaworODU0NjIgODJjZGU4YjczNzI4MjMxOTFjOTk4ZDQwMGM0N2ZiYTIzZWQ3ZjdkMSBweTNrCis4NTQ2MyA0YThlMGQ4OTc1NWI2NGMyZTkwMzUzMmViZmI2MTE5YjVlYzA1ZDZhIHB5M2sKKzg1NDY0IDY3YTIxODU3MGY0YTRlMTZiMDQ1YTM1ODM2ODFjMTA2MWEwZWVhM2QgcHkzaworODU0NjUgNjYwYWZkYWViMmQ2ZTYwNzIzZWFkY2I2NTc0ZmEwNWFhYWE4YmRmZiBweTNrCis4NTQ2NiAyODUzY2FkOWNiYzAyNDMwMGUwNTdiMDA0YWE1NmQ4NDg4NzBhZTE3IHB5M2sKKzg1NDY3IGUyYzk4YzYwZGQ2NGQwYTVkMjEwNGQ3M2ZjYjU4NmEyNDEwZTE3NDMgcHkzaworODU0NjggYjY1MjA2MTI5YjVjOTRjNjg2ZDE0NzVhOTMwOTEyODhkZGM1NDRiNyBweTNrCis4NTQ2OSA5OTVjMzNlMjI2M2IxYzkxMGFhYjQxYWY0ZjFhMWViYWY3Y2I4ODc5IHB5M2sKKzg1NDcwIGE1ZWVhZDE0MWNiNDYzNTZmNWViY2RkOWQyZTRjYjUxODg4M2E4OTMgcmVsZWFzZTI3LW1haW50Cis4NTQ3MSA2YTg0ODk1NTQwMTk4MmMyNmQ2ZmNkYWE5NTcyMjczNjY0YjNmYThiIHJlbGVhc2UyNy1tYWludAorODU0NzIgNzFlNzZkMDNmYzY3ZjI1MDc3NGFjYmZhZmZiZWRmNGM0NDRmNmFmNCBweTNrCis4NTQ3MyBkN2Y5MDczNTdkYTdlOTUwY2JjZGM0MTk4N2MwNThmMWI3Y2M2OWZiIHJlbGVhc2UzMS1tYWludAorODU0NzQgODEzYjUxYTZhNDE3OTk3ZDU1YzE4NTc5NGNmZjRjMWVhZmUyYTk0YyByZWxlYXNlMjctbWFpbnQKKzg1NDc1IDk4MmM4ZWM3M2FlMzdlMGVkNmQ1NDk3M2ViYTNmNzBiZjYzOWVjOGMgcHkzaworODU0NzYgM2Q5ZWYwOThkYWYyZTM2ZmNiYzZkMjJmN2E5NTZhYjY3M2IwMTMwZCBweTNrCis4NTQ3NyBhMjdmYzBmZjM2NzhiMDA5NjYzNDA3NjUwZjI5ZWE0ZjIxNzM0ZjAxIHB5M2sKKzg1NDc5IDA4YTljMDQ2MDA0ZGQxMWE5NGFmOWYxZWMzMTIyZmFkNDI4ZGI2ZmUgcmVsZWFzZTI3LW1haW50Cis4NTQ4MCAxMjQ0MmFjM2Y3ZGRiYmEzY2JlOTgwNGE5MzI4OTA1NGU5YmRlYzQ0IHB5M2sKKzg1NDgxIDE5MGYyNDdlZGI5ZWViY2YzMGRmZmIyYWZkMTQ5OTdlZWIwYmM3MWIgcHkzaworODU0ODIgYWQ0MGMwYTNlMjIxNTZhMWUzYzVjY2Y1MmQ4OGQ4YmViNTYwM2FkMiBweTNrCis4NTQ4MyBiODNmMGE2NjdlN2NlYjJlZWQxYzBkMzZkOGE0YjA3NGRhODM2Zjk1IHJlbGVhc2UzMS1tYWludAorODU0ODQgMDdiNmJiNzZlZTQzOTIzYzU1NmZkMDA5NzE1ZjBjM2E1NWQ1OWMzZiByZWxlYXNlMjctbWFpbnQKKzg1NDg1IDA3OGUyZTQ3ZTUyYjA2YWZlMTJkMTgxOTk5OWVlZmRhMjE2N2U2MzIgcHkzaworODU0ODYgYjg4NmJmNjAyNTEzYjRmN2U5N2UxNTcxNWZmNDAzZDVjYjg3YzdlNyBweTNrCis4NTQ4NyA5MGMyYjY1NDkwYzc1MzIzMTZhZDBkNzE1ZDNhNjczNjljNTNjMTQ0IHB5M2sKKzg1NDg4IDgwZDNhMzc0OTliMWIyYjIwOWE2ZWQ4NTc5ZjY3NmIwNTU0NzRlMzcgcmVsZWFzZTMxLW1haW50Cis4NTQ4OSAwNjdlOGIyMDAwZGQwNTc5MmVmMDQzYTYwNjc2ZTVmNWY1Y2UyM2IzIHB5M2sKKzg1NDkwIDNlNzkxMzRjNjUzNTdhNzYyZGEyNWZhZTEwNmU1MWVmM2FhNDAwZWIgcHkzaworODU0OTEgMWE2MDEzZWU5NzRiMDg3N2I5NGExMzNjNjBiZDMyOTJjNDc4Y2M3ZCByZWxlYXNlMzEtbWFpbnQKKzg1NDkyIDI1M2EyNjg3ODU4NTc0OGZiZThiZjY1ODEyNzBhZWM4NjQ3NjY4OGUgcHkzaworODU0OTMgYjdlY2Q5NDRiN2NlYjJhZDFjN2ZjYmUxMDgyYTJiYTdiMGJmYjI5OCByZWxlYXNlMzEtbWFpbnQKKzg1NDk0IGQ1MmQ1ZDM1OWRiMzEwMDEwZWY3NWQ1YWI1YTdmMjVkNWJlZTI4MjYgcmVsZWFzZTI3LW1haW50Cis4NTQ5NSAwNTJjMTk5YWUxOWE5YjA5YjgzMjQ5ZDYyYTE3NTI5NDZhMGJiYWY2IHB5M2sKKzg1NDk2IGYzZGE4Y2Q3NDExMzc4YjZkMDlkNTA2ODg1MDdiMTljODUzMGQyZTAgcmVsZWFzZTI3LW1haW50Cis4NTQ5NyA0Njk1NmEyNWMyNjQxYmZlN2JjOGM1YWMzZWM1NmIxODg5OTg4NzA2IHB5M2sKKzg1NDk4IDYyOTY2MzJhZDJjYmU2NWY3MDMxYmJlMWNlNmZmMWMyMzMyMmJhZmMgcmVsZWFzZTMxLW1haW50Cis4NTQ5OSA0MjY5MjY3ZTZlNTdkYTI0MzI1ZGQ3NmIzNjIwMzQxYWFmYjI5ODQ4IHJlbGVhc2UyNy1tYWludAorODU1MDAgNmNmMjIzZWNhYTZmMGRjNTMyN2M1YzE5MjZlMzE1Zjg3MTYwNDE3MiBweTNrCis4NTUwMSBjZWIxMjcwM2M2ZGJhMzMwMjYxNWVjMGVlMTZkNjc3NjYyNThiOTg0IHJlbGVhc2UyNy1tYWludAorODU1MDIgMjdjMDUxMjQ3MjMzYTZlMjRiMzZiMTc2M2U1MWI2MTRjZGFiZmUyNSBweTNrCis4NTUwMyA0ZDVmMGM0NDg3ZWI5ZmZiMzY1ZTkzMzJkNzVhNGRlZDMzYmJjNTk2IHB5M2sKKzg1NTA0IDE3ODJkYTQ0MGZiMWU0NDZmNzc4ZGQ3ZTQzMjVhYjVjODY2OTk5YTcgcmVsZWFzZTMxLW1haW50Cis4NTUwNSBmZWE4ZjIxYjE5OWQ3NGQ3YjQwOGRhOTVlN2Q1MzVhOTBmMDZiMjU3IHJlbGVhc2UyNy1tYWludAorODU1MDkgN2QxZTQ1M2IxMjBiNmU2MmI5YTUwNjFhYWY2MjRiY2NhODc5MGZjYSByZWxlYXNlMjctbWFpbnQKKzg1NTEwIDg5YThiZjUzMjVjZDE1ZmVhOWUzMGVlOGZhOTM3OGU4M2Y2NzRkZTUgcHkzaworODU1MTEgNWUxNTc2MDUwNzQ5YmViYTE4YjFjMjljYTM4NDdlNTg0OWUyZDhmZSByZWxlYXNlMzEtbWFpbnQKKzg1NTEyIDE3ODA2ODRhZTNhZDk3YzBmYmU2Y2EzYWFjNzFmMDc5MTZiMDU0MTAgcHkzaworODU1MTMgYzNmMmM1ZDM1YWZhZmNkODlmNzgwZWRmMTBkODNhOTkwMjVhNDQzNyByZWxlYXNlMzEtbWFpbnQKKzg1NTE0IGU1MTIzNzJmNzQ5NDZkNmY4YTNiNjA1ODY4MGJmMzI1MTFhNmVhNjggcHkzaworODU1MTUgY2MxZDhhMmRiMzQ4NmU0MTI4MzdhMDliOTVkMmM5MDRhNDQwMGJhNiBweTNrCis4NTUxNiBmNjNkNzQ3NjIyYmQ1MTczNDdmMWVhZmUwMTJhMTJhYjllZjJhNTcwIHB5M2sKKzg1NTE3IDQ1M2ZkODE4MmMyZjk2ZTllMGUxN2MzZjMzY2RmNzJkNTAyZWEyYmYgcHkzaworODU1MTggYmIzMDM5M2QxZWExODlhZDNjYjY3Yjk1NGU3ZjczNzgwMjM4OWY3MyBweTNrCis4NTUxOSAxNTc3NTFjYzRjZDUxODgzNzAwZTk5MzZmMjI5N2M5Y2Q2YjUyZGVmIHB5M2sKKzg1NTIwIGU3NzNhMWYyM2Q0MzM5M2U3YmJmN2EzMmY3NGI0MTUwNzliZjYwMzEgcHkzaworODU1MjEgOWM3M2ZlM2Y0N2UyNjkwNjA5OTNkMzVhNzdjM2M1MDRjOWI4NGQ5NiBweTNrCis4NTUyMiA2YTM2NWI5YTIyYmE5YzNiMDFkZTUwODdiMDZkMmEyYTU1YTExODNmIHB5M2sKKzg1NTIzIDUyMDI1YzM1NDFkODg4ZmQxOWIwNDc1ZDRiZTkyZDFhZGZkMGI1NTcgcHkzaworODU1MjQgMWY1YTI4YmE3NDc3ZDAyYTNiODE1MjAyOWEyOTkxYThjZTYwM2M5ZiBweTNrCis4NTUyNSA4OGJkZWY1MzYwYWYwM2FjZWZmZWI3Y2YxNzg1OWE5MGVjNzAzYTc5IHB5M2sKKzg1NTI2IDMyMGQwZmEyMTY1OGQxZGY3NDE4OTZiNDczNTIzNjA1YjE5NjE5OTQgcHkzaworODU1MjcgNGViYzAzMDhmNGIxMmVlM2Y4YjU4ZDliYzhhZWRkOWU2YzZhMzc0YyBweTNrCis4NTUyOCAwYjUwZDg3MDYxMzQ0NjM0YTcxMTMyOTJmZmUzOTEyMzBmYTc0YjExIHB5M2sKKzg1NTI5IDgwZmUwNjZjMTM1YTkwNDc2ODFiNWU0NzFjMzU0NTNmMWI4ZTU4NzMgcmVsZWFzZTI3LW1haW50Cis4NTUzMCA0MTg2OGNhNTI3NDRjOGVkMmYzYTdlMGQ0NTRmNzQ2MDcyYmVhMTQxIHB5M2sKKzg1NTMxIDU2MzNhZjU5MDA1NzAyYjk1MzEwMDU2ZDFhNWU0ZmE0YmZlNjE4N2YgcHkzaworODU1MzIgOGY2YWJhMjNmYjJhYmM3NWJlOWViMmMwY2NlOTRiZjEyZGRkNThiYyBweTNrCis4NTUzMyAxMDQzNThiNWQ0ZDE0NDZkYmMwNWFiZTBlZmJjOGNkYjIzZTE1NDA4IHB5M2sKKzg1NTM0IGRjMjVjNTBhN2MxMTYwNjg4NDkxMmQwMmI1MDExMzZiZDA4MDA1ZGQgcHkzaworODU1MzUgNmI4MzE0Mzc2ZGUyZWViNGU0NTZlZTA3NDVmODVlMmYxNjEwNWZmZCBweTNrCis4NTUzNiA5MmVhNTZiNTJkOGY3MzE0YmM1N2FhOTdjMTg1MmE4MThmZDMwMjk4IHB5M2sKKzg1NTM3IDk3MTI1ODZmYTQyZjVmOWZlYTBlMzcxMDU1N2U4MWM4YjgzOGQ3YmUgcHkzaworODU1MzggYWM4NjgwNjg1ZmRlYWEzZTc3ZjgwODVkZjU0Njc1ODUzZWU2NjhjNiBweTNrCis4NTUzOSBkODM4NGZjZTNjNzNiOWRhYWY0NmE3YmNkNTE1MGYxOGUwZjk2ZWQxIHB5M2sKKzg1NTQwIDc4ZDUzODU5Mzk1YTQ0NjJlNzNmNmVjNjczNWM1NjMxMzUyYjUxZDggcHkzaworODU1NDEgZjMzYmI4NTA3ODllYTg1MmVkMzg2NjQ1NTQ2YThkZDI1OTg0OTM0NSBweTNrCis4NTU0MiA3ZGUzNjVjMTk4NmJhYmFiNmRjOThlZTdiMTc3ZjM0ZTI2NDRkMTdiIHB5M2sKKzg1NTQzIDZmNGNmNzMwMzJmYzliOGZjODQ2YjJhYTJiNDE2YTI3MTYyZTMyZDYgcHkzaworODU1NDQgOTM0N2IwYTg1Y2FmNTg2YWMwZWQxNmVkMzhjMzVmNTlhMWExODgwZSByZWxlYXNlMjctbWFpbnQKKzg1NTQ1IGVlYzQ5OTg0N2RmN2JiOWQ4Mzg0YmJhZGI4NDJhM2QxODg2NjMzN2EgcmVsZWFzZTI3LW1haW50Cis4NTU0NiBiNzFhYWY0ZTdkOGQ5MDFiYWZmMDZjY2QxNTU1OTFhZGNhYjNmNTJkIHB5M2sKKzg1NTQ3IDBlMmNiYzMxZmM5MjVlMjk2MjJlODRmYmZmMzQyNGM4MDZiYTAwYTkgcHkzaworODU1NDggMzk0YzAwYjRjOTE5NGNmZDcyNmVhMzJiMzEyODIxZjg3NDZmOTMwZiBweTNrCis4NTU0OSA4NDRlZDZkZGRjMDMxZWZlOTY0ZTM1ZGNiYjhkNTI5YzIwZmZhNGZlIHB5M2sKKzg1NTUwIDM0OGYzMzY5NjQwMjE1NTAxNDk5YzdmMmVhODA1OWFmOTFmOTcwYzIgcHkzaworODU1NTIgOTAwNTI4ODljZTNkZTMzYzFhZTBhMDliNGQwNGZiM2MxMmJjZTg2YSBweTNrCis4NTU1MyAyOTJiMWRmMDFiYWQ4N2M3YzNkNzE3NWY2YTY3ODMxZjc0ODE5YmNhIHB5M2sKKzg1NTU0IDNjNDIyNWJmODdiNDEyNjYzNDU2ODgzYWI4ZDVlM2Q1ZjZlNzhmZjQgcHkzaworODU1NTUgMmIxN2JlNjJjNzRmY2M4MDM1MjMxNDE3NjAwZGFmNzRmOTIzN2Y1YyBweTNrCis4NTU1NiBkNDM5MGI2YmY3ZWM4ZTE2ZjJlNDEwZTM5NTU3MTJmMDYxZDU3MzIyIHJlbGVhc2UyNy1tYWludAorODU1NTcgZGRmMmVhZDI2YWFhNDVlYTY5ZTA4ZjExZjEzMWYxOTNlNWNkNzNjOCByZWxlYXNlMzEtbWFpbnQKKzg1NTU4IDRkNmM2M2M2NTU1MGMyMzY5OTQ4MjY4MmM0NzQ2YWI2N2NiZWNkYWIgcmVsZWFzZTI3LW1haW50Cis4NTU1OSA5MzJmOTdiZmJkYzBjNTA0OWZlYWZjODIxYThhYjE0NmQxNDE3ZDEyIHB5M2sKKzg1NTYwIGZjZGMyZmFlNTBjMDgxYWM5YjcwM2RjYWM5NTdmOWZiMDMzNGQwZWQgcHkzaworODU1NjEgZjk4YzNlMmZkMDU1MDMzMTI0NTJlMTBhOGI1Yzc3NjA1MWMzYjM4MSBweTNrCis4NTU2MiBmZDVjODNmNzY0NDc1MGJkMjRhYWZmMGNjMmJlODg3NmIzMTc5M2ViIHB5M2sKKzg1NTYzIDM2MThkOWQ3OTAyZDNjYjQ0OGIyNTE3YjBmZDQ4MGQ0MDhhYjE1ZmYgcmVsZWFzZTMxLW1haW50Cis4NTU2NCAwYmQwZTg3YTY4NTE1NDIyNDZkYTVhN2UzZmU1OWY3MzVkMjkyNjU4IHJlbGVhc2UyNy1tYWludAorODU1NjUgZjkxODRlN2NkMjVjZTEzMDc1MjA0ZGE3OGRmNDNiODE3MmY3NmZjOCBweTNrCis4NTU2NiBkZDA4NjdiZDk1NTc5MGQ4Yzg2MzU5NjcxNGQzZDRmMmM5NTgyMzA1IHB5M2sKKzg1NTY3IDA5ZWZmZmU3MDAzMDcwMThlZmUxYjE2N2UwZWY2ZDNmZjRjNjdlMGQgcHkzaworODU1NjggNzZjODg4ZmQyMzgwZGYyNmI4MDMyNmYxZjY2NWI5ODkyOTViMTEzZiBweTNrCis4NTU2OSA1NWVkNWM1MjQ0MjhjYTIyODY0ZGI2NGQ4YjA1ZjY1NDY4YjVkYjVkIHB5M2sKKzg1NTcwIDllZDY4ZGQ2YjcxZmY3MjMzOWI3YmE5N2NhNWQyNDc0NzVlM2VlOWMgcHkzaworODU1NzEgNjAzOTg0NTA5MzQzMDJjMTA2ZWI5MzQyOTlhOGI0NjVjMTI1YjU0MCBweTNrCis4NTU3MiA2ODZhMmE5MWY4MjYwODBlZThlNWMzMmI5YmY3ZjA5NTVmMjc2ZWFkIHB5M2sKKzg1NTczIDNmMmUxNDVjNGEwMmU2NjIwZmNjODU1MDZjZDYyZmRmMjU0MzVhZDMgcHkzaworODU1NzQgNTE4MWMzYmY4OTcwZTE3YmUxM2QyMTM0NDZhMTBiYjYzYzhlNDZkYSByZWxlYXNlMjctbWFpbnQKKzg1NTc1IGE0NDJlY2I3MDg0MWYyZGQ3YzU1YTA5NTQ3NTljNmM2NGZhNWY2MzYgcmVsZWFzZTI3LW1haW50Cis4NTU3NiAwYmE1MGQ0ODVmMDcyNjhhMzQ3ZTUwNWE2ZmFkN2NkM2QyYTViZjhlIHB5M2sKKzg1NTc3IGI0YmRkNDI4ZWIyYjFmMjM5YTMyNDQyM2I0MTdhYjU0ZDNhNjAyNWYgcHkzaworODU1NzggYjc0OWRjNGMzNzRjMTY3ZWJhMTI4YzlhOTYyNTI1ZGIxYjI2ZmRlNSBweTNrCis4NTU3OSBlMWRjOTg2MWI0M2YzOWMxMTIyN2Q2YjNkMDExMWU1MjY4ZjIzODQ4IHB5M2sKKzg1NTgwIDZkY2JhOTNkNjI2MjAyYWMwNTllMGRhMDFlMTgxYmVmMzJiNjVkMTQgcHkzaworODU1ODEgZGYwZTM0OGU3MTc2MmU5YTU4NDVjZGJmODBmYmQ2YTljNDk1YjM0NiBweTNrCis4NTU4MiAzNzk0YzliNTA4MjRmZDdiNWY4Mzg0NmVmODc5OWMwNjIxZWJjMjY2IHB5M2sKKzg1NTgzIGJhODZmMzRmMDhkYTZiY2ExYTg4YWM5NmU3Zjg1YmYzODJjMjdiMDggcHkzaworODU1ODQgOTMwNmZmMWMzZDQ2ZjdkMTdiZjFiMGM2MzE3ZDBiMDM1MjJkOTRiYiBweTNrCis4NTU4NSAzNDAzNTlkODBjYTA1NmEyMGNmNTI0NTkxN2MwZjAyOTEyMWZmNjQ5IHB5M2sKKzg1NTg2IDQ0M2FiMmNiYWJjYmNhZGFkZjg5OTBhOWVhN2U2YzgwYTBmYWU4OGMgcHkzaworODU1ODcgMDI4MzA1NTNkYmQxOTkyOTc3NzkzMmE2MDA0MGVlODc3NjgyZjcyOSBweTNrCis4NTU4OCBmZDUxMzVjYmQ5MjhkZjMzMGUzOTdlMjY4OGU3OTk1Yzg1OGI1M2RiIHB5M2sKKzg1NTg5IDYwODdiMWY2Y2E5Yjc0ZWI4MmNjYjUwNmYzODAyZjU2OWRiZWUyYzkgcHkzaworODU1OTAgNmIyNjY4ODczZjMwZDI5MWMwOTY2M2ZlMWZhMzY2M2Q1MGNlMTEzNSBweTNrCis4NTU5MSA0MzU3NWIwOTY5ZWQwNjNjMDlmNzQ0ZGE4MWMwYzM2MmNjODg4OTIyIHB5M2sKKzg1NTkyIDZlY2U2Mjk0NDViNjBiMzUxNWI2MmE3ZjRiMzhkMmEyMDcwOTI0MzggcmVsZWFzZTI3LW1haW50Cis4NTU5MyAxYmY3NjdmMjhkYjRkZjYyMzRlMjIwMGJjYzhlNzc2YmIwN2RjZGFkIHJlbGVhc2UzMS1tYWludAorODU1OTQgMDUwNWViYTYyMzQ3MmZjZWZiZmMxYjYzOTFjZDcxZDM2MTQ5ZGU4OSBweTNrCis4NTU5NSBjOTljZjkxMDI0NzZjNDljNTUwNWQzZjk3ZTRiNzEzYjhlZmRjZmE4IHB5M2sKKzg1NTk2IGVhYmM1YzUzZjEzNGVhY2NjNTFiNzA1MTQ5YzljMWVkM2FkMzMwYTkgcHkzaworODU1OTcgMjg4MGU3MmE0NjRiZDFjMWE4ODUxZWY1OWU4MmQwMzBmY2M5OTBmNCBweTNrCis4NTU5OCA2ZTU1OTc5M2U0NTBjZWUzNTY1MzI2NjgwODVhYjAzYmVjYjI4YmYwIHB5M2sKKzg1NTk5IDE1ODU5NzQwYWFlNmMyZDcwMmM1Yzc5YzRlOWIxYTg4MGFkOWRmNmYgcmVsZWFzZTMxLW1haW50Cis4NTYwMCA3MDI1Mjc4YzVhNDFhOGI2Yzg1OTM0MWZkNDczMWMwYTRhMjE2OGEwIHJlbGVhc2UyNy1tYWludAorODU2MDEgZjYyMTZjNWYwNjgwM2FlNWJkOWU1Zjk2MzczY2RmZmFjZTFmYzMyZSByZWxlYXNlMjctbWFpbnQKKzg1NjAyIDE1ZTNhZDBjYTM2NDhiOWY5NzBjZmVmZWQ2ZGJjZTgyZjYxMDdjNWQgcmVsZWFzZTI3LW1haW50Cis4NTYwMyBjYWExN2EwMzMxNzZiMjllODY2NGU2MWYxMDUyNTcwZTNhN2ZlMjM5IHJlbGVhc2UyNy1tYWludAorODU2MDQgMDg4NDAyNDY5MDE2YmE1MWY5YjViYWUwYTgzOGE5NzQ2NzA4ZjA3NCBweTNrCis4NTYwNSA5MzFmMjM5MDgyOTY2ZmZjYzlkZjY5M2M0NGRjMGQzY2M2MTVjODI4IHJlbGVhc2UyNy1tYWludAorODU2MDYgODczM2M2OTAzZmNjYTI2ZGZmYmYwOWFhY2Q0MjYxNjIzODU5Y2M5OCBweTNrCis4NTYwNyBiZTYwYzk2MGFjMDlhNDBlMDQyNTEwMDA5N2YzNGMyZmJiMTMxYTEwIHB5M2sKKzg1NjA4IDJlODUwNDcxMTlkMjFiYWZmOTE0NzhjNWQ2OTA2YjAyYWYxZGU5OTIgcHkzaworODU2MDkgNWIyYWYzNWI4YjRiNjA2YTJjMGIwYjVhNzMwYWQzMDE0ZWQ0NjU1OSBweTNrCis4NTYxMCBkMjUzNDZjMGI5ZDA4ZDYyYmFjM2JmYjYwYzIyN2U0M2JmYTI3NTUzIHB5M2sKKzg1NjExIDNiNWVkODQ5MGFiMmMyYTMyYTA2Y2M1MDA5YWU5ZWI3ZjA5ODQyODcgcHkzaworODU2MTIgNjk3NDFkNGI4YTYwMDM5ZDA1ZGE0YjMwOTlkMGViMTJjNzkxM2YwNSBweTNrCis4NTYxMyA5NmQ3ZTc4NzRmOGM0NjI2NTFlOTMxYzEzNGYxMTJkNzY5OThjOGNjIHB5M2sKKzg1NjE0IDk2NmVjMzFiODM0MmM3NjIwODgzYjI4NzU1NDQ4NTU1YTcyNmE4MTggcHkzaworODU2MTUgNWRhODM3ZmNmNjc1OTNhZWE1NDcyNDc4OTI4ZDQyNGM4ZjMyYmY0MCBweTNrCis4NTYxNiA0NzNiOTIxZTNhMWYzYjZkMTVlZjc5NjY2ODI2MjY0NmE0YWI0YjhjIHB5M2sKKzg1NjE3IDdkZGY2MGM4ODk2YWEwNDE4OTk2MWNiYjM1MTI4OTA2NzdjZjEyZGIgcHkzaworODU2MTggYTRkZDM4MzkxMmQ4OThkYmRiYTY1ODc5YWI4M2E3ZTQwZjRhZDliYyBweTNrCis4NTYxOSBhOTA0N2NlMWU4MWRhYzI3MGMyY2Q5ZWNlMDc4ZjAzMGFhODFlNzA5IHB5M2sKKzg1NjIwIDE5Y2E3MGI0NjNjNTk5MmNiYWY3ZWJiN2FlNTMyNWE4ZWFjMDA3NTYgcHkzaworODU2MjEgYWEyZTQ2MzdmNmNlOTcxNjQyYTQ3ODFlYzkxYTQxZWMzOWI5Y2Q4ZCBweTNrCis4NTYyMiA1NzM3YWQ3MWU5ZTE5ZTk0NmUyYzUwYjZiNjMwNWUzNDY1OTU2NTBmIHB5M2sKKzg1NjIzIDg3ZGNlYmU3OGQ2N2NhMmIyNzgxYjY4YjNlNzU5MjkzZTExYzUxODYgcmVsZWFzZTI1LW1haW50Cis4NTYyNCAwOTk5ZTNhNDQ3MzViZTYxZTVlYzE2YTAxYmEyZDk3NTEyOTY4NDA2IHB5M2sKKzg1NjI1IGQ2OTk3MDhkYzJjMTkwNGJjOTMwZWNjNTgxOGY4ODM0ZWI3MTRiNjkgcmVsZWFzZTI1LW1haW50Cis4NTYyNiA1YTJkMzQ0OWI1NzVlM2ExMDU3YTFkYmJkYjAwZTU1MTkwZDE3MDU0IHB5M2sKKzg1NjI3IDA2NjA4Y2MyNWZiMjA0Y2FlNDc2MGU1ZTMzODAzZDAwODUxMmExMGMgcHkzaworODU2MjggY2U0ZDgxMDI1N2I0NGQ4YjVhZDZlYWU5MjhjOWI1MTVkMDViMjliMCByZWxlYXNlMjUtbWFpbnQKKzg1NjI5IGNhOTY5MDkyZjQ1YTZjZGI4OTIxMTNiYTJkMzkxYTZkMGJkZjZmYWEgcHkzaworODU2MzAgMzExZDdhYmJmYmUzMDBhMWNiY2E0YmYyMDNiYTY5NWJmOGZhY2UxOSBweTNrCis4NTYzMSBiYjIxMzU5ZTg4Yjk0NjRlMjY4MWQ5NzhmOTllODNjMjgzYWNjOGRkIHB5M2sKKzg1NjMyIDMxNzUwYzcyN2FlMzA1MGMwMDFjODAyMjczNWU2ZTZmMTU5NzFlZTAgcmVsZWFzZTI3LW1haW50Cis4NTYzMyBiY2IyNjBkNjhiMTU4YWFlZDMwYmJhNTI3MjFkYTRjNTE1ZGZiZGVkIHB5M2sKKzg1NjM0IDg3ZTViNTkzOGM2NWYwY2FjNDMwOGM1ODhlMjEyZDY1YWE3M2ZlODQgcmVsZWFzZTMxLW1haW50Cis4NTYzNSA0MjJhNGZiMGE0OTEyNDRkNTQzNDA5MGI3YTYwMjE0ZTRkMDZlZGFlIHB5M2sKKzg1NjM2IDA3M2UxYmU3NmI0NzQzNTg5NGU2ZmRkODdhOWZlYTBlYWIxNGYwOWQgcHkzaworODU2MzcgOWIyMjUwZmI4MGQ4YjViYjRiOTAxMDUyZWVjMjRhOGQyMTc4NDAyYiByZWxlYXNlMjctbWFpbnQKKzg1NjM4IDllNDVmYzgwNTI4OGE3N2M4NGEyNTIzYjk0YjdhNWVhZTdmZDM0YTYgcHkzaworODU2MzkgNjg0NDAyNzI1NGZhZTZiMWJmOTZhZTI3ZGJhZDM2YmQzNGIxY2RmMCBweTNrCis4NTY0MCAxODZhZjA1MWQwNGYyMTBiMWM3ZTA2ZTg5M2Q0ZThkY2ViZTc2ZjUwIHJlbGVhc2UyNy1tYWludAorODU2NDEgOTk0Yjg3OTlmMjhkNjhhNWU0YjkwYzJhODI4NDg3MTJhOTc3NWFiYyBweTNrCis4NTY0MiAyMWRkNzE5MzhhNDQ3MmQyNDZlNTgzODUwNjUwYjc2YmMzOTBiMDI1IHB5M2sKKzg1NjQzIDc0ZDgxYTNhMGQ1NjVhMTg3ODU5ZGQ2YTljMzAwY2U1N2NmYmFjOTYgcHkzaworODU2NDQgMDVkN2IxOTkxZmY3MmU3NGYxNTI2YThhMWVjNzU1Mzc2NzM2MzM1NCByZWxlYXNlMzEtbWFpbnQKKzg1NjQ1IGI0MmY5NDk2NDhiYWM1N2ZkYzAwMTE5YjNiNzU5N2E3NTFlNzk0MTQgcHkzaworODU2NDYgNjMzZGU1N2ZiNzNhZTExNjMyMjQwOTc3NDBkMWE0MjEyNGYwZmY5MSBweTNrCis4NTY0NyAzYzlhZmE5MmY4ZmRjNjUzMmIxMTg2Nzk4MDAyYzAwNDk3MmIxNzA1IHJlbGVhc2UyNy1tYWludAorODU2NDggNjIzZGVhZTc3MzI0MzY3ZDUxNmFhNGUxZjJkNDJkNTI4NjI5ZDA3MiByZWxlYXNlMzEtbWFpbnQKKzg1NjQ5IDM5YTJjM2IxMGE3YjFmZWZhZmY0ZjdiMjYzM2Q0MGI3MTBiZjk3M2IgcHkzaworODU2NTAgOWFjM2ZlMmNhNDllYjVlZmFiODQzYmM4NTVkMTBmZDM1OWFkZTY5MyByZWxlYXNlMjctbWFpbnQKKzg1NjUxIGVmZDM2OTk4MWI4ZGQ1NjFjYjZhYmM3Y2EyNTNlZjlmYzZlOWE3MzUgcmVsZWFzZTMxLW1haW50Cis4NTY1MiAzOGFkNTdkYjg4YWM0YmUyZjUyYzcwNzUxYWE0YjMxMDhiZTU3MTY4IHB5M2sKKzg1NjUzIDI0NGNiY2I2N2RjZDg3ZTExYjYzNjM0NzBiMmI4N2ZiNmY1MWFjZjggcHkzaworODU2NTQgMzljZGNjN2QzZTIwZDU0NGVhYThhNWM0YWEzZDY5MDY4NjhlOGY3YiBweTNrCis4NTY1NSAwMjNiNDEzNzYyOTBhMTIxYzc3YTI0YjcwMTQ3MGNhZTcwYTFiMjNmIHB5M2sKKzg1NjU2IDNhNDdmYmNiMjliMTIwNTA4N2M5ZTNjYTliMDI1NTZhN2RkZTdlNjYgcHkzaworODU2NTcgN2FmNDA2ZjIxOWE0ZTYxYjQ5OGFkYzcxZjVhYTI3ZmNmY2I5YWUzMSBweTNrCis4NTY1OCBkNThjZTNmZmIxY2I2OTdmMWVlZGI0YTUzZWEzYjExMjc2YmQ4ZWUxIHJlbGVhc2UyNy1tYWludAorODU2NTkgYjAyMjhhZjZkYjExODBhMTcxYzdkZTEyMDU3YWQ5MzY2MDUzYWRjMiBweTNrCis4NTY2MCA5NWUzYWVlYmI1YWJjZDgxZTQ4MTc1YjRmZjBkMjI5OTVkZTE1ZTI2IHB5M2sKKzg1NjYxIGQxZGVmN2IyYWJkMmY1OWI0MzI1NGJhMzI0MDk3NDYyZjFkYjIwZmIgcHkzaworODU2NjIgYjJhOWNhMmI2MWEyNDFiMGVkOGZkNzgwODgxMTMwMDhlMzQyNzRhMCBweTNrCis4NTY2MyBjMTQ3ZjkxMGFmNzAwODZmZDYzZGVhZTBlM2Y2MjBiOTE2M2I0MGQ4IHB5M2sKKzg1NjY0IGU4OTY5ZmI4MjJmYzJhMjc5YWUzNGJlNzNmOGUxZTE1YzQ1M2EzZDAgcHkzaworODU2NjUgZjhmYzJkMDNkN2U0MmExMmU5MmVjMjc0ODYzNDc1MDkyZWFkOGU3ZCBweTNrCis4NTY2NiBlNzU4MDY1MmFmYjhlNmNlNmEzOTVhZGZlZmZjNTE1NjM0NzJiY2VjIHJlbGVhc2UzMS1tYWludAorODU2NjcgYTMxNjU4MTI5MDA4MDc0MGY3YjYzMjBjZDU3MzM0MzgxYjI2NzZiOSByZWxlYXNlMjctbWFpbnQKKzg1NjY4IGIxY2E3ZDVhOWM3NGQ3MGNhYzE0NGQ0MjlkNzEyZjc4Yjc3MzE1NGQgcHkzaworODU2NjkgYjFiZGExZWM5OTVmYTEwMzZkZTA5ZmFhMzNjMzU1MGIyZjQzNmY0NyBweTNrCis4NTY3MCBlMGNjYjVmNTBlMGM3OTA2MzdlZTMxMTUyNzcwNTA0MzgwMDM3MWJiIHB5M2sKKzg1NjcxIDE2ZWFkODNmNzljYzk5Y2UxNDE3YjNmMDQ4M2E4YTFlYjRlZGUxZjUgcHkzaworODU2NzIgOTZhNjk3NjJiNDgxNjE2NzgxNjA3MzhmNDM5MGI0MDIyYjQzZmJhNCByZWxlYXNlMzEtbWFpbnQKKzg1NjczIDdhYTE0Y2FjNmY0ZDAyNzM5ZWNkYjRiNWQzMDVkNjgxZDU5MzgxNjcgcmVsZWFzZTI3LW1haW50Cis4NTY3NCBlYjg4MzdlZmQ4NGM1YjFlZGFhZmNiZTkwNDVlNzQxNWZkOTc2ZjkyIHB5M2sKKzg1Njc1IDM1MWQ3OTRkMzJmNDQzMjljMTA3MzczZTFkYWVjODYyNTMwZWVkMjMgcHkzaworODU2NzYgYWEyMDNkNDc4YmI4MTBmNmRlMmI2MTAyZmU0MTU5YTQyMTE2MjBmYyByZWxlYXNlMzEtbWFpbnQKKzg1Njc3IGQzOTdiMDI2MzFiNTQ3ZDk0YzY3YjRiOTEzODRlOTVlNmQxMzBmMDkgcmVsZWFzZTI3LW1haW50Cis4NTY3OCBiZWExNGYwMGQzZTAxMDA3MjdmZjdjMGY4ODg1MWQ3NjNlMDY3Y2EzIHB5M2sKKzg1Njc5IGIwYThmY2RhMDY1NDdkNmQzNGUzMzQ3MjI4MjU5YzI1MTAzNGUyZmUgcHkzaworODU2ODAgY2U5ZjVjZTMzYWQyYTBmNWQwM2NkMDhhYWE3ODM1ODM2MWQyZjg0YiBweTNrCis4NTY4MSBhNGMxMGE0NGQ5YWUxMWJlYzljOTk5NDI2ZTg3NDQ2OTZlY2ExY2U1IHB5M2sKKzg1NjgyIDE3Yzk2YWFmOTNjODdkMTA3YTNhMzA1Nzk4NDlmOTQ5YjM0YWZiZTcgcHkzaworODU2ODMgNWIwNjk4OTJlNDEzYTllMTE1YWJhOTYwNDk0ODg5Y2ZkYmMyZDk0MyBweTNrCis4NTY4NCA4ZjA2MjU5NTRmZmEzY2RkNzExNjIzOWM1Y2M5OGEwNjZhZjM3MjY3IHB5M2sKKzg1Njg1IGNkZmQxOThhNmYxZGUzMTM2Njk5NWVjNmQ4NTBmYTY4OTA4ZGE2Y2IgcHkzaworODU2ODYgNzUyZTRiNWM2NGU5NWNhYzQxNjI2NDFkYzQzNzE2NDBhNTY1ZWJjMSBweTNrCis4NTY4NyBjNzI3NTcwMzNkNDRmODUzZDBmNjRiNTlhMjgwZjJiMDYwODU0ZTdhIHB5M2sKKzg1Njg4IDY4YmQ3NWM2OWRiMTUwZmZkY2NiMjAzN2Q0MmZkZjNmNDFkZDVkNDEgcHkzaworODU2ODkgM2MzMzYzNDhhMmU5ODZmZTQ3NzljMTUzZjc4NzRjNDU5ODcxMWYxOCBweTNrCis4NTY5MCAzNzJjOTgwN2Q3NWQ5NzE0ZTYwNjQzYjkwYWYwYTFhOGIwZDk2MTgzIHB5M2sKKzg1NjkxIDc3YzEzYzljNmU1OWUzOWU5NjhjNGI0ZWZmYjYzZjcxOGUzNTM1OGEgcHkzaworODU2OTIgNTE5NTlmMzlhN2ZiMTM2YTVlZjI5MzY4YmI3MzgzMTFiODY1ZmU3ZCBweTNrCis4NTY5MyBiMGJhN2VlYjk4YTU1ZTk0NDJiMWQwNTE5ZDgzYmFmZGZlYTBlZGZiIHJlbGVhc2UzMS1tYWludAorODU2OTQgMmY3ZTAxNjk0OTI2NzU4NjY1YjE2OWI0Yzg5ZDNmMWNiZmU1MzI4MiByZWxlYXNlMjctbWFpbnQKKzg1Njk1IDg2ZjAwNjEyY2JkNjBlOWUxNjU0MGU4MjRiYmRkNjQ1MWYxNzM0MTQgcHkzaworODU2OTYgZWNmZjQxZTA2OGU2ZmU5MWUzMGQxYmE0ODhkZmZkYmJiMWQ0MmMyMiBweTNrCis4NTY5NyA4MmIwODNjOTZhMzlmYmY3MTMwOWNhODNiNzJjM2UyZjI4MmU1YzM3IHB5M2sKKzg1Njk4IDI0NmMwOGM4MjVhMTA1ODhkODA2YWNlYjEyZDhjMTQyYzhhOTI1MTYgcHkzaworODU2OTkgNTAzNjAwYmIyNWVhYTg5OGZlMjZiOGY3NjM4YWJiZDZmMmUyYjdlYyBweTNrCis4NTcwMCAzZmFmZjdlNTFmNDBkZWVkMGQ0NmZiOWYyZTEyZWQxMmRmYWI1MzU4IHB5M2sKKzg1NzAxIDE1ZTQxNTUyZGNiZDdjYzAzMjE2NjZjNDIyZTkxMzcwMmQ3MzQ2OWYgcHkzaworODU3MDIgYmIzMzM5NzNkZTM4YmMzMzkwODI2ZDA1ZjFiNzFiOWMzZjJlYzQ4ZiBweTNrCis4NTcwMyAyN2NlOTlmYzI1MjcwMTQ3NWU5Zjk5MDgxYTRiZjgwYmFjZjc0ZWEyIHBlcC0zODIKKzg1NzA0IDFhOTA1MzkxZTNlZDZlZDQyOGI3YjZiNTM5NzY2NjE5NWZjM2I2MmEgcHkzaworODU3MDUgODkxMjE5Mjk4MmNjODM3ODE5MzI5YTNmZjg1MTA5OGNkMmE0MDFjYSBweTNrCis4NTcwNiA2NjI4Zjg2ZGIyYjZiNzg5MDJhY2JiNTI2NjkwNTUxZjU1OWZkMmRiIHBlcC0zODIKKzg1NzA3IDFlYzJiZmE1NGNhYmI5YmI2MzQ3OGI1YmI2MTljOWZlZTMzM2ZiNzkgcGVwLTM4MgorODU3MDggMDI2MzViYWVhZDVmNWFiNWE3MzE2Y2FhNmUwYWIxNDMyNmQ1MjRmNiBwZXAtMzgyCis4NTcwOSBlMmJhMTI0OWEyZjU2MzY2MDIyYjk2ODc5MWE4ZmE1NTNjNmM4NWMyIHB5M2sKKzg1NzEwIGQ2MDdiNjMxMzA1ZGMwYTcwMjA4ZGE4MjQ1YWQwZmQ1Y2FhMTE5MmUgcGVwLTM4MgorODU3MTEgNGQ1NWYwYjA5MGQ1ODBkODJmNWJkNTc4YzA2OGZkMmIxOWY3MzFhOSBwZXAtMzgyCis4NTcxMiAxMzAzY2VhZjQ0MWE5YzkzZjgyZTNkNDQyMDBlZTI5MjcxMjYyMTU5IHBlcC0zODIKKzg1NzEzIGI0N2U0ZWUxNTQwMzJjZThiNDRjOGFhZTIwODVlYjRhMDg5MTgwYTkgcGVwLTM4MgorODU3MTQgNzBkMmI0YWVkYzA5ZWE0N2YwMTRlYTIyMWZlMTZmM2I2ODU5Y2I5ZSBwZXAtMzgyCis4NTcxNSA1OWU5YjU4ZGRhZjg0OGQzYWUwZDA4NjFkYTE0NjNhODc2YWVhNmFkIHBlcC0zODIKKzg1NzE2IDQyYjg0ZDMxODhkMTBlZmIyMjZiNWI4MmViMmYzMTAwNzhhZmI5ZmYgcmVsZWFzZTMxLW1haW50Cis4NTcxNyA0ZjBkZGRhZjgyZDZhNzQ3N2U0NGM1NmM0MzFlNzVkNTAzMTMyOTcxIHJlbGVhc2UyNy1tYWludAorODU3MTggNzcxN2Y4YzQ1ZmNjMzdmZjcwNTIzMWFiMjZhNDg4MGYyMzEzYWJiZiBwZXAtMzgyCis4NTcxOSA2ZThkMmUyZDhkODI4ZjczOTg5ZDc1M2Q2ZTVhYjJjMjdjY2VmZGI4IHBlcC0zODIKKzg1NzIwIGUzZTZhYTYzM2YzM2I0ZTk2N2Y3MDNmZDU3YmY1ZjIxMDRjYzIwMjIgcHkzaworODU3MjEgNzA3MmE1YjI4MWQzN2U1Yzk3MmE3YWU4MTcyMjVhZDc4YTRhY2FmMiBwZXAtMzgyCis4NTcyMiBiNTAyNTU2OWNiZDQwNmNiYWU5NGI5MzdjNjlhZWQ5ZTRiZmVjMGEyIHJlbGVhc2UyNy1tYWludAorODU3MjMgOGU2MGQ3YTk2MTQyMjcyZmYxNzFiZTdjMDZjZWJlZTZiMWM2YWRiYSByZWxlYXNlMzEtbWFpbnQKKzg1NzI0IGFkODkyMzc2MGQ1YzBkYTc0MjM4NTk5NDc4NjY3MDUzMjg0ODgxMjkgcHkzaworODU3MjUgMDUxMWM4NjhhNGUzOGE0YzQwYmE1Zjk1ODNiNTNmNTU2NTJlZGM5MiBweTNrCis4NTcyNiBiNmFkNDAxMzc3ZmM1OWJjYTkxOTBjYzE1M2ExN2EzZTIxZmZhMjdkIHJlbGVhc2UzMS1tYWludAorODU3MjcgMWYwYWI3MjljNjMyNTM1YjRlMjA3MzA4ZGM5MzAxMTcxYTdmODJiMiByZWxlYXNlMjctbWFpbnQKKzg1NzI4IDA0MDkwYWIzNTMxZTQzMjNlMTQzODk5ZGY0ZWZmNGJiZTVhZGU4ZjAgcHkzaworODU3MjkgYzQ3ZWYxODBiZTM5ZDZjNGVlMWE0ZTkzY2I0YmE4YjYwODcwMWM4NyBweTNrCis4NTczMCBlMTFhYzMwMTk5YjEwYWMzNTc5YmU2NjNmODE1NGMzNGJlMzI4M2JjIHB5M2sKKzg1NzMxIDM0YmVhYjk1OTU5NTlhZGVlZDQ3ODM3NmFjYzljMTMzYjVlMjQ3NmQgcHkzaworODU3MzIgMDM2NzcwZGQ5MDk2N2NhMmQ5NDZmNThkNDQxZjY1NWEyZThkNTM1YyBweTNrCis4NTczMyA5NjJlMWY0YzljMDAzYjQ4MjcyN2JkNDU0NDQwM2ZjMDAzYmRiYTc5IHB5M2sKKzg1NzM0IDA4NjUxOWMxZTdkMjlhODI0NzY3OWNlNmRjZmVlNGU5YmY0MzMyYmEgcHkzaworODU3MzUgZDNiNjFkYzczMmVmZjI1NzFmMTQzYWUzM2RjMzNkYWYxOWQwNDc0MyBweTNrCis4NTczNiBhNjYxYjQyNGVkNDdhOWJmNDMzN2QzMDljZWZlMDU0Y2VmNzg0NmJkIHJlbGVhc2UyNy1tYWludAorODU3MzYgYThlZmYzOWFlYjA5OTVhOGMzMmJkMGRiOTYwZWRjMGYxMTBlNTMzZSBweTNrCis4NTczNyBjZjYzNGEzOTdiZWM4MWE0MmE4M2Q3NmY1ZDVlOGUwNmRiMjdkMjEyIGlzc3VlNDM4OAorODU3MzggZDRkNTNiNGRiOTZlZDM4ODlhZTVkNjk2NjM1MDk4OGNmOGE1Njg1OCBpc3N1ZTQzODgKKzg1NzM5IDUyY2JmNDU5ZGE4YmNmYWFmYmM3ZGJhNmY2Y2RmYzEyZWVkZGQzNDcgaXNzdWU0Mzg4Cis4NTc0MCBlZGNmYzRjODlmMzA0MDE1NTI3N2Q0MjBhMWI4ZjIwNDkzNTQ2NTAwIGlzc3VlNDM4OAorODU3NDEgNTlhYWMwNzQ1ZWM3NWI4YzViMmE5MjI5NGZkNmU5Mzk4MWRhODg0NiBweTNrLXN0YXQtb24td2luZG93cworODU3NDIgM2JhZWNkNGUwYzEyYTEzY2E2MWZlZWYwZTE1NjNjODA5YjU3OTQyZCBweTNrCis4NTc0MyA2ZGNmNjE0NDdjMzNmNjgxZjE0NjZhMzc2MjBlNDMwOTA2OTA1NjU5IHJlbGVhc2UyNy1tYWludAorODU3NDQgMTYxOGNiMTViNWI5ODQ0MDBkOGFlOGEyOTIwNGYyYmU2NGEyM2U3MyBweTNrCis4NTc0NSBlODUwYmI5MzBjODQyZjFiNWM1ZDNlNmVjZWI1MTU5OWE5YjY3OTQ1IHJlbGVhc2UyNy1tYWludAorODU3NDYgNWNmMWU2ZTYxYzZjMzc1YWVhOGZhMmM5MGJhODVhMGMwZWQ2MTFjNSByZWxlYXNlMzEtbWFpbnQKKzg1NzQ3IDUwZGQ4NmY2ZjI0YWQ0Yjg3OGQ3YjgyOWEwMzliM2E1M2EwYTMzMGMgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg1NzQ4IDMwMTZhNmE0YTY4MGI4NGEzYzBlNGQyMDYyMDExZDcyNTQwOWE0YmMgaXNzdWU0Mzg4Cis4NTc0OSA2NDNhMDdjYzlkN2ZiODkzOTgxZTc0YjRhZDk4ODcyZmI0MGM5MDc0IGlzc3VlNDM4OAorODU3NTAgZTUzYzgwYjAxNjMzMzI4N2VmMzE2ZjFjM2JjZDYxYmM4NGJiNjdiMiBpc3N1ZTQzODgKKzg1NzUxIGQ3Y2UzN2I5YmNlZDIwMzZmMWU3MDZhOTdjNjg2MjM1YTBmMzk2NTMgaXNzdWU0Mzg4Cis4NTc1MiAyZjFhNTUwNjc5MzExNTE3NWRlN2Q0NGZiZmY3NTA3ZDdmMjg0MTczIGlzc3VlNDM4OAorODU3NTMgZjhmYzI0YTFmOWE2YzJkYmI2NjVhNTNhMWU2NGE3NDVjNWJkZTZiMCBpc3N1ZTQzODgKKzg1NzU0IGVjZmMwZGQxNWQ1N2YwZDlhOGFmNzYyMThjYjkwOGRlMzU5ODJhYTQgaXNzdWU0Mzg4Cis4NTc1NSBlNzExYjg1ODYxN2JlNzJjYzY2NDE5OTI5ZjlhYmYyNTU4ODdjODkyIHB5M2sKKzg1NzU2IDk4NTg5ZDBmMTEwMTJhYzYzZjhhOWRlOWFmN2E0NzM0OGM2NGExZjYgcHkzaworODU3NTcgYzVmOTdiMDU0MTU4NTgyNWM2NmRjMGE0M2I4ZmNlNDQ2ZDMyZWNlMCBweTNrCis4NTc1OCA4MGMwNDY5Zjk4NTk3ZjgxZTZjMzg2MWU4ODViNmUxMmEwNGVjMDdjIHJlbGVhc2UyNy1tYWludAorODU3NTkgOGU2YjdhYjFlMWExNDA3ZDZmMDljY2ZlODFmODM4OWFiMmU0NjEzZCByZWxlYXNlMzEtbWFpbnQKKzg1NzYwIGNiZTAyMjQ3MDE0NzFjNDcyOWY0NzE2MjFiNTFlYzIyNDQzNGQzZDggaXNzdWU0Mzg4Cis4NTc2MSAzOTM2NmJhNWYxYzEwNzRiN2QzYWQxOTM1NDJiNjM1OTRhNTRiODQxIHB5M2sKKzg1NzYyIGJlYzE2YTVlMGNkYWMxZWYzOGVlNjY0NGNiODk3MWExOTUzY2NhNWIgcHkzaworODU3NjMgYWJkYTgyNDBhNjQwNWRiZTlhOWUzOTc4OThjNDk2NmVmMWIyM2QzNyBweTNrCis4NTc2NCBhZWNiNTZjM2Y0ZWI1ZTcyZjNjZWE5Mzc2OTNmOTk5ODQ4ZTlkOTRmIGlzc3VlNDM4OAorODU3NjUgNDUwNzlhZDFlMjYwMDlhY2MwZjU3MjQ0MGNhYzIyYWIwYTc3NDk1MCBweTNrCis4NTc2NiAzODE2ZWIxMjg2YzBjZTU5NThiZWE5NWNiYjY4OTEyMmJmNjM0MGNhIHB5M2sKKzg1NzY3IDJlMTlkMWY0YjYxMmVjODkzZGYwZjg2ZTY4MGZhNDliODgxYmViODMgcHkzaworODU3NjggNzE3YWFjZmQyZGNkNjgzNmNhOThmZTdmZGQ0Y2JkOTgwNWIyZTZkNSBweTNrCis4NTc2OSBlOGQ1YWQwYzJmNWJjYjFlMDRjYjgzZDY3NTZlMzA3Yzc4NDZjZTI0IHB5M2sKKzg1NzcwIGEyYmI1MGZmZGZmM2Q0ZjlmNDEyN2EyMzQzNzRmY2FmN2RjMDViNGMgcHkzaworODU3NzEgMmY5NGQ2OGMyNzMxMjc3N2E4MzRkNmI3M2RjN2MyOWI3MzEzYTA2ZCBweTNrCis4NTc3MiAwYjViZmJhN2E5MDdlNmI5YTAxMDBhZTM0ZjVjZDNmODRmZDY2NGNlIHB5M2sKKzg1NzczIGNhYTU2Y2ZmMmZiM2E3OGVhYzJiMzRmZDc4M2M3ZGQxN2RjZGU0YjcgcHkzaworODU3NzQgMDgwMTQ1ZDNiYmY3NjgxYTYxNTc4NTk3ZmQ5ZDhkOWM1MDMyYTc4NyBweTNrCis4NTc3NSBlNDUzZTVhYjIwN2NhNDIzYzMyNTdiYjk0YWIwODFiY2U2NzdmMzkwIHB5M2sKKzg1Nzc2IDI0NDA5MDQzODYyM2UxMWYxMmM0Mzc0ZWU3ODBkNzY2ODI1Yjc2ZmQgcmVsZWFzZTI3LW1haW50Cis4NTc3NyBlNzljNTc2N2JkMDVkMDZmMzkzY2ZiNjEwYTQ4NjZhNDViYzIyMjgxIHB5M2sKKzg1Nzc4IDAyYzE2MjZmZjYwZmUyYTBlOWM1NjU1OTgyYzA0YmNhOTZhZTM4ZTAgcHkzaworODU3NzkgMjcyYjhmZjYwYmE0YzA4NDNlMDc4MWM2YmVjOWI0MTNjMzZkZjViNCByZWxlYXNlMzEtbWFpbnQKKzg1NzgwIDg3ODdmNGJiNGIyMTYwNTE5ODlhYzU1ZGI0YTczNjdiMmQ4NDYyY2QgcmVsZWFzZTI3LW1haW50Cis4NTc4MiBiZDFiMzFjMzc0MTBiYzAzYWM4NTExMWM1ZDEwZjUyNzgwODZmYjQwIGlzc3VlNTYzOQorODU3ODMgNmU0ZWVhNzU0M2JjMzY4OTRkNTFhOGIzM2JjNmVlYjI0NGM5NmRlNiBpc3N1ZTU2MzkKKzg1Nzg0IDdiNTQ2Mjk1MWFjOWI1MTFlNzljYTEyYTJlN2Y5YmFkNWI5NmQ5N2UgcmVsZWFzZTI3LW1haW50Cis4NTc4NSBmOTg0NDY5ZGUwYmI2ZDNkY2QxYjZmNTNmYzZmNWU0M2QyNGIyMGI2IHB5M2sKKzg1Nzg2IDg1MjU1NDQ5NjhmM2E1OTY0ZmJlMmYwNThlZGY3ZDliYzU4NDFkNjYgcHkzaworODU3ODcgMTJlYjI0NDYzNjEwOTQxN2M5NDY2MzQxYmI2ZjI2Y2M2MmYyNzE4ZCBweTNrCis4NTc4OCBjNmEwZWI3ZjczYmZjZmQ3MTZmOGFiMjlhY2I2OWVhMjA1ZTY1Zjc4IHB5M2sKKzg1Nzg5IDQ2YmJiZGNkNzc3ZjU1YjZiYzI1ZTA2MWIyNTdkNTJhZTM3MmI1OWIgcHkzaworODU3OTAgZmUzNTU3ZGJlZjg5MjUyMzUyNzQwMTVkYWFkYjcyODI4ZGIyZWJmZiByZWxlYXNlMjctbWFpbnQKKzg1NzkxIDMxYTBhYjdhYzJkNWI1NTI3Y2JhNWFkYjlhYjJhZTM0MzI4NjIwNzQgcmVsZWFzZTI3LW1haW50Cis4NTc5MiBlYTBmODNjZjdlOTk1OTYzMjI2NzIwMTc0MDg0MzI5YzY2Y2NlNmVhIHB5M2sKKzg1NzkzIDg0NmMwZTEzNDJkMGJhMWFlZDUxYWMwMTg3MjNlMTE2YTI2OTQ0NmUgcHkzaworODU3OTQgMTQzOGQ2YjY3MDUyNjUwZjgyNjE1MGRkNWI3MmFlMjBjNmFiYWE4YyBweTNrCis4NTc5NSAwNmRmYWViNThiZGUwMWMzNjhmM2QxNWVmNTE5NDhjY2FmZDAyNDgwIHJlbGVhc2UzMS1tYWludAorODU3OTYgODU4YWY2MGIyZGJiY2Q5YmNjNGM2ZmYwMDU1MTA5NzQ3ZGNjMjliOCBweTNrCis4NTc5NyBkOTg1YmE5ODExZTk4ZWE1ODBjMTNhZjc1ZjVhNzhlZDk0NzYxODQ1IHB5M2sKKzg1Nzk4IDk5MTJkNjFjZGYzNGMyYjA5MjAwYzQwYjI5NWFlYzVhNzJiZjhkYzMgcHkzaworODU3OTkgY2Q4MGQwNWYyZmQ2N2RiNjE2MDA4YWM2N2YwOGMxYjZlZDBlYmQzZiBweTNrCis4NTgwMCA1YjZlMTNiNmI0NzNiNWZkYzJmZjUwZDU5OTBjMmZmYzU1YmI4M2FkIHB5M2sKKzg1ODAxIDM4MzViY2JmYjI5YzBjNmIzMTAyNjViMGI0ZDEyNDgyYWNjMDIwYmYgcHkzaworODU4MDIgOTAyZjU3N2U3Zjk0OTU5YjA1NzM5MTc2NmMwZTE0YTNhMTZiODg4ZiByZWxlYXNlMzEtbWFpbnQKKzg1ODAzIGJlOGFlNmIxNzUzOWQyOTk1YzA2Y2E2OTBmY2YxZjJlNTAyNTAwZDUgcHkzaworODU4MDQgOGQ3ZjE4MzMyZGI3ZGQ0MTk0ZGI3MWYxYjNmMTE0Yzk1NzViNjE2MCBweTNrCis4NTgwNSAxYTA4ZjRhOWVhZmRjNDNlYWYzZGFiNjNlZWFjY2JjYmVkYTUzZDIzIHB5M2sKKzg1ODA2IGEzMGU3NTgyMGI4ZGVlZjcxMDFiMjFjZTdlZDc2YzNhNzhkNTJjOTMgcHkzaworODU4MDcgNzkyMDA1ZGUyNzdjODZhOGE0ODE5ZWU0Y2ZlZDAyY2ZjZmE3MzFiZSBweTNrCis4NTgwOCBlOTk2YzYxZTQ3YzdiMzkzOTU2MTVlOWI4NjljZDIzNzg1MmNmMWFmIHB5M2sKKzg1ODA5IDA5ODE3N2FjZjczZjIwODYwODFiYjE3YWEyMzEzMzE5YjM4MjQxNWUgcHkzaworODU4MTAgYjlkY2ZkZmZjYjYyMGM1MjcyNGExZGRiZWQwZTliZjUwNWRhZDAzNSBweTNrCis4NTgxMSBlYmY2NzQxYThkNmUzNzlkYzcxMGY5YTkwODdkYzIyNGQ0NzJkNWVjIHB5M2sKKzg1ODEyIGE5NGZiOGRiOWYxYTUwZjYxYjBjYWY1NGE3Nzc0MDlkZTg2NjY4ZmIgcmVsZWFzZTI3LW1haW50Cis4NTgxMyBkYjVhYmQ4MWRjOTRlZDZhNjhkODA3ZDg5MmEyNTY5OTI5OTIwNzFiIHJlbGVhc2UzMS1tYWludAorODU4MTQgMTg5ODlhZDQ0NjM2YWQ3NWVmMTg1ODUwNmFlOTRlODhjYWRiMzVhNiBweTNrCis4NTgxNSA1MzYzOWU1N2JhNDA5MjNhZjM1YzQzM2IwZGEzNmYwY2UxNjI5ZDcwIHJlbGVhc2UzMS1tYWludAorODU4MTYgYTRhMjcyNDBmZTA5MzRiODA5YjczOGFiNzI5Y2FjZjE2OWVhZGNlMyByZWxlYXNlMjctbWFpbnQKKzg1ODE3IGYxNDhmODY0YjE2OGIwODdlODkyNzM4MDZkMjc3ZWUxZDg1OGNhNTggcHkzaworODU4MTggYjE3MmQ3NTM3Yjk5YjU0MDRjOTY4OTY4ZWIzYzEzZWI5OGQ4Njg3MSBweTNrCis4NTgxOSA1YjUzNmM5MGNhMzZkZWZiMzBmNjc4NThiZmFmN2RjYzRiNDNmNDUzIHJlbGVhc2UyNy1tYWludAorODU4MjAgYTgyMDcyY2EwNmJhYTA1MWQzYzAwMWIxOWEwZGRkNTllNjdmZDhhZCBweTNrCis4NTgyMSBjNWFlYmZmYzlmYWM0NjVmYTgyMDVjODczNjYyOTMwMDNlMGJlZDVlIHJlbGVhc2UzMS1tYWludAorODU4MjIgY2NmMmZmMDg4NjZiOWJlNmMyYWQ1YzY5MDIwYjEyYTRlMDE1MjFhMyBweTNrCis4NTgyMyBiNGUzNzBjOGU3Y2FmNDMyMTI1MWE4ZTgyYzcwODY5ZGYwNDUzMTQ0IHB5M2sKKzg1ODI0IDM5YjllOWRlMzcyYjIwMTAzMGY1NWVmYmIwZTY1MWUxMmUxMWU3NmQgcHkzaworODU4MjUgNWEwNTQ1NGU1NjVmYTc4ZjM1MDc2MzhjYjNkYTFmZWFjYmQ1NDRmMCBweTNrCis4NTgyNiAxOTA4YTE0NmU5NjFkYzM5ZjgwYjBkOTQ4ZGY5NWYzOTI2MGY0MDdkIHB5M2sKKzg1ODI3IGRiNWE1MDgwZjliOGEwZWUxZWI2ZDRkZDlhNjgyYTkzODAzZDRjOTIgcHkzaworODU4MjggY2I2NDE4ZjRkNjBiOWNmNjQ5YjAzNDQ2MDQ4ZWVmMzQ1N2FiODU5MCBweTNrCis4NTgyOSA0ZTM2MDY1MjgzY2YyYzZmNzZkNzVjZjEzNmFjMzI2Nzc5ODY0NmVhIHB5M2sKKzg1ODMwIDE1OTUzMGYwZTQwNmE4NjRlMjQ0NTk3ODExNmRlMWEwMDVkNTg2NDYgcHkzaworODU4MzEgNjYwZDVmMzI0ODJlZjQ4OTQzYTA2ZWM4NzhhMGE3NDYzYmRkZWM4MSBwZXAtMDM4NAorODU4MzIgZjU3MGRhOWE0M2Y4NmUwY2IxYmI3NmMwNzgyMmU3ODQ5NjRiNWFiNCByZWxlYXNlMjctbWFpbnQKKzg1ODMzIDQ0ZDgxOTIyYTg4ZjM1ZGJiZWMyNWQ4NmMyZWY2NTNlNzY1NDFkOGMgcHkzaworODU4MzQgNWMxY2U1YzM2MGRhMjFmZGUzZjBiMGVkYjM3ZjQwY2NlMTY3YTI5MSBweTNrCis4NTgzNSAzYTljM2VjNWU5ZDJjZmZiMGNmYmE2NDU4NzVkZWFhMDlkZGNiNzdiIHB5M2sKKzg1ODM2IDIzNTJlNWU0NDA1M2U5NWJiNjg2YmZiNzY4OTE4YzJlMTYwZDAwNGMgcHkzaworODU4MzcgMGYwN2QyZGJmODIwYjg5NDkyNTBjNGU5MGExYTQxYjYxZGYyZmQ1OCBweTNrCis4NTgzOCA0ZTkyY2RlZmU0Yzc0MzdmZjkyYThmMTJlM2JjNjYzOTU5YmE2YThlIHB5M2sKKzg1ODM5IGQ3ZDMyM2RlMzVlNzZkMjgwOTI5MjZlZWU3MTk5YzUwMzc5YmZjNjcgcHkzaworODU4NDAgOWQzZWJhMDNmZDI1ZDFkN2VlYTRjODVmN2Q0NjAzMWRiMDc0MDg4OCBweTNrCis4NTg0MSBjZWViYjNmNDVmOWZjNjIzODlkMzhmYWFhZjJiYWQ0ZjM5MTIyOTQ1IHJlbGVhc2UyNy1tYWludAorODU4NDIgNzcyYjU1ZjAyODM1ZGU2NzY4Y2IzOGYxOGJjZWI2MGE3Yzg0MmRiNSByZWxlYXNlMzEtbWFpbnQKKzg1ODQzIGQzNTEwMGNjNmM2YjFiNDkwMzUzNTk1NjJiNWEzNmNkOWY5OGExYzAgcHkzaworODU4NDQgZTU1YTAwY2Y2NzhhN2U5NzFkY2IxY2YwMTNmYTAzYTdjNWE1ZjFhOCBweTNrCis4NTg0NSBiOWM3YmRjYWEwMzFkODkyMTY1NGM2MjhkZGU2Y2QzYzA3NWI4M2NjIHB5M2sKKzg1ODQ2IGU1MTVkMTI0MTg1ODZlNTEzM2RjNGI1OTdjNzA0MjBjNDc1NjlhNjQgcHkzaworODU4NDcgMzJjNGU4ZTk1Y2EzY2I1YmY4OGRkZGQzOTVkNGVlZjBkYWM2MmUzNyByZWxlYXNlMzEtbWFpbnQKKzg1ODQ4IDg0MTg5MmUyNzFmN2Y4NTE0MWJhYmJkMDY2OWIxMjNkODhmNjI1ZGMgcHkzaworODU4NDkgYTljNzlhOWQyZDkxZDA5ZmEyODRjZTRmNDliNzQ0YTFmMTI2M2I5MyBweTNrCis4NTg1MCA5ZGE1ZTA0YjA3OTNiOTkyNmYxMDFhOGQwMzEyMWZhNjg3YTA4ODI0IHB5M2sKKzg1ODUxIDExODcxNTZhMWYzMmMxMTZkN2JhNGE5ZGE1MjMxNGViMTNkZmIxZjYgcHkzaworODU4NTIgYzg5MmU0NTQ3ZmVkY2M5NjI2NWRmZjFhM2FiNmJkMWQ5NDNjOTgzNCBweTNrCis4NTg1MyAyOWFmMTgxZGUyZjJkODhmMzlhMzIxMzEzZGMxYjliODlkZjMyMDQ1IHB5M2sKKzg1ODU0IGJhMWM3M2UxNmM4YjFmOTNhOGFhNWY5NDMwYjVhMWUzMGUzZDE1N2QgcmVsZWFzZTI3LW1haW50Cis4NTg1NSBmZjZmYTIwYmRhZjhkZWNjYzVkODRhNjBiZjk0YzU1NjM2Yjg3ZWViIHB5M2sKKzg1ODU2IDllNGEyODA5ZTU1Y2UwZjA3NDQzZTYyODMzMzEwNjlhNWNlNDhhNWIgcHkzaworODU4NTcgNGI1NDIyMTdlOTNlZDAxN2Y1ZWViMTljMmVjYmY1N2E4YmEyN2ViNyBweTNrCis4NTg1OCBiZjVkYTYzNjA1M2FiOTkyNmRjN2FkYmE2NTBiN2E5NjlmMGNlNGYwIHB5M2sKKzg1ODU5IDY5MzhkN2FkNjBlNDFhZTUwOWNhYjRiOTU0MjNjMGFiNDhjZjQ1YzEgcmVsZWFzZTMxLW1haW50Cis4NTg2MCBkZjAyMDkzNTg4ZDZiYzJhMWVkODg4MGY1YjRlYjBhOTQ1YzA4NGE1IHJlbGVhc2UyNy1tYWludAorODU4NjEgNGRjYTNmMGUwZmMwNDY3ZDc3Y2JjZTliODYyOWU1NTgzZjZjMjZmZiBweTNrCis4NTg2MiBlOWUzZmU0YzllMzAwZTVhY2MyMTU3MzlkNGEwYmQ3OGRjNzMzM2IwIHJlbGVhc2UzMS1tYWludAorODU4NjMgZWJiODJmMDFkYmUyNjEwOWM0ZjRkYTFkYjBjMzVjMTljNDU4MTMyMiByZWxlYXNlMjctbWFpbnQKKzg1ODY0IDU5YWJkYjkyNzhmNzIwMzI0MzczY2EyZWIxZmY4MzA1MDRjYTE4Y2YgcHkzaworODU4NjUgMGQ1MGE5MTFkNzRmZTYyYWMwYzY5NWJhZTg1NGZlZWVmOWRkM2YxMiByZWxlYXNlMzEtbWFpbnQKKzg1ODY2IGFmMDZmMDk3MmQ5N2E3Njg3YzZhMWYyY2Y5ZjgwMjczNDk2M2IzOWIgcmVsZWFzZTI3LW1haW50Cis4NTg2NyAwNTFhYTQyN2RmZWRmZjU5ZDJkMjkwMjU1MDE1NGMyNzQyMzc2YTFkIHB5M2sKKzg1ODY4IDIxNGI5MDUxODQxZWE4OWU5N2Q5MTMzNDBjODYyYTUyMmMzZDRmN2EgcHkzaworODU4NjkgYWRkMWJjMDVlNDI2NmRiYjlkMDg0ZWQyZDY5MzhmMjhlMjU3ZWFhOCByZWxlYXNlMzEtbWFpbnQKKzg1ODcwIGY1ZTNkZTg3YjE0YmYwNDA3OTBiNTFiMDUyZDUzOGUwMWE0MWE4MDQgcmVsZWFzZTI3LW1haW50Cis4NTg3MSA2NGRlMTc0NmNkNmUzOTYzMjBhMmM4YzFlMTVlMWYzOTczNTY1MjI2IHJlbGVhc2UyNy1tYWludAorODU4NzIgM2U3OGVkZThmZDIxMjQ3YjdhYmViMDdkNGVhM2I3YTI5ZDRlNzg2NSByZWxlYXNlMjctbWFpbnQKKzg1ODczIGU0NDI1ZDY4ZGFkZjJjMzg2NDc1OTg0MGVmMGM3Mzc5Y2I4YTc3ZjMgcmVsZWFzZTMxLW1haW50Cis4NTg3NCBhMjgxOTg5YTIxOGIwYzFkNWU5ZmM1NWU3NDM1NTc5ZDdhY2Y1OGE4IHB5M2sKKzg1ODc1IDNmZjk5MDg5YzAyZTMwNDkxNmJiY2NkZGYzYTVhMmMwZDY1YTg5MDAgcHkzaworODU4NzYgNmRmZjU4MWQzMGYzODFmYzA4ZTM1ZDc0Y2RkODkwNzE3ODc1OTNlYyBweTNrCis4NTg3NyBlNWYyNjlkZDMxOGI4N2VhMTdlNjFlOWVlOTcyNTc0MDZiOWYxMmE0IHB5M2sKKzg1ODc4IDVhODgyZjc4OWVjMWU3ZDU4YWJmMWQwYzM4ZmQ0YTNhMGJlOTA5ZDEgcHkzaworODU4NzkgNWIxNjNmMmE2MDJiZWNhMzE4MjFiOGZlZGE2ZTczNzZmZjg1Zjc5YyBweTNrCis4NTg4MCA3YWQzNWFjYjIwYjBkNDk4YzIyMDM1N2VmMjBmODliMmZhNGFkMGMyIHB5M2sKKzg1ODgxIDIxMTBkMjY5YTg2ZWMwMGVkMzQ1YjNlMDBhZjUwYjg1ODM0YzNiNTMgcHkzaworODU4ODIgNzMxMjMzZjkwNDg2OWQ5ZjU5N2M1MzM1OGNiZjIwYTI3N2Q0ZGI0MSBpc3N1ZTEwMjA5Cis4NTg4MyBiOWNhMTAyYTc2ZDAzMzQzNDQ0OWZiNzdlMzQxMzQ4OGI5M2ZjYjY2IGlzc3VlMTAyMDkKKzg1ODg0IDY2YjQ0Y2NhMjliYjgzMzA1MDQyZTkzNWNkYzBlNDJlZDk5NDQwODUgaXNzdWUxMDIwOQorODU4ODYgZDA3YjliMGNhYWVmMWU0YTk0YThjYTYwY2U5MTg1MWZhMjE4ZDdlMiBpc3N1ZTEwMjA5Cis4NTg4NyAzZjdkMDM0Mjk0OTE4NmU1MTMyNmQ4MWM5NjY2YWI0Y2I4OWE5YThjIGlzc3VlMTAyMDkKKzg1ODg4IDZmMzFmMGFmNTM1NzY1MDBhNTUyMDhhY2I3M2VmYWNmYjAwM2RlYWUgcHkzaworODU4ODkgNWI4ZTY4OGVhNWFlZGQ5Y2Q1Yjk1MDZmZjA0ZWZlZDBhYzExNWNiYyBweTNrCis4NTg5MCAxNWVhY2I0YzU0MjI4MzIxZjM4OTYxM2IwZDcwMzFkNTkyYmRmZDZjIGlzc3VlMTAyMDkKKzg1ODkxIGRjMDZhZWQ5Yjk4NDVmMGNjNjk3ODRmMzQxODk5NjZmOTE0NDkzZmMgcHkzaworODU4OTIgNTM4M2FlOGRiM2NkZDFiNWUwMTk1NDVlOTI4ZjBlMTdmMjZmZmQwNSByZWxlYXNlMjctbWFpbnQKKzg1ODkzIDFjMTE0ZDM5YWU1MjYyYWM1M2RmYjg1M2JkNjQyOGI3MjcxYjliN2UgcHkzaworODU4OTQgNjk4ZDMwYjQ1MTE2Y2JjNDBkOTZlZGU1NmMxMTk1ZGIxZjBkMjZiNyBweTNrCis4NTg5NSA2MTNjN2I1OTZmZTc4MTJkZTg3YjQwMTdmZTVjMTdlYmNhZWFmMDY3IHB5M2sKKzg1ODk2IDFiN2EwMzg1YzY1ZjdhYjg4OTc3MzEzODJmMTU5MzBiZWU3ZDI2MjYgcHkzaworODU4OTcgNzBlYmRiZDc5YTAyZDA4M2NmYjhiYjYxMTgzOTgwYTM1YzJkYjk2YyBweTNrCis4NTg5OCBjNmQ4NjQzOWFhOTE4NDUxODU0MWY5ZTAxZGU5MDU2NGIzNmFkNjJjIHJlbGVhc2UzMS1tYWludAorODU4OTkgNDFhMzAxNDA5MjViZTEzNTI2ZTRiNDgwMDA1ZjQyNzZhMTJlZTMwMCBweTNrCis4NTkwMiBhNTZhMmE4MDNjZDc4ZWY5NDE3ZTlkMDA2ZTQ5YmM5M2RlMzc0NzFhIHB5M2sKKzg1OTAzIGI2NmRlZDRiZmYyMTM3Y2IyYzRhMWFmZTU2ZGQ5OGNhMWU1YWEzOWQgcHkzaworODU5MDQgNmFjMTg1NzZlOGZhOTk2ZWFiZmU4ZjBmZTFiN2MyNWViMTFkZWYwOCBweTNrCis4NTkwNSA2NGNlZThkMTFmMmU4YjhiNjVlNmVjYmQ3MzYwZjFmN2JhMmM3YTUyIHJlbGVhc2UyNy1tYWludAorODU5MDYgZThjODQwMGNhYTk5Y2E1N2Y5Y2JmMzYyMzliYjhjNjkwMmU4ZDk0OSByZWxlYXNlMzEtbWFpbnQKKzg1OTA3IDRhZjE0ZjlhYTk3MDU2NWIyMDQxMmM4MjU3M2U3ODMxYzYyNjk5YTkgcHkzaworODU5MDggNWU3MjBmOWQxZTZjMTlkN2ZjM2UzMzEwZDk1MmY1NjAwZTMwYTI1YiBweTNrCis4NTkwOSA4YzVhMTAxYTYzNTQ1ODM3MDM1ZWNiNWU1NTFiNTFhZWI2YzczYjJlIHB5M2sKKzg1OTEwIDhhOGYyYWE5ZGIwZjk5MGQ1YmE3MzNlZTI4ZWE1YzNlZjQ3ZDczYmUgcHkzaworODU5MTEgNzIyYjJhNGZhZTBkMTk2ZjYzYzYzMTBkN2UwYTBlNDVlZjBhOGJlYyBweTNrCis4NTkxMyA0ZDIzZGU0ZjQxMDIzYzc5M2NiNjY2OGRlOWFkYWRiODdlNGY5ODkzIHJlbGVhc2UyNy1tYWludAorODU5MTQgMDg2MGJlOWM4MzQzM2E2M2Y5OWM3ZjRiYWM2NjYyMGU0ZDE2Zjk2NiBweTNrCis4NTkxNSAxNmI5Mjk3MWMyZDQ0MGMyZWZkYWI1NzJlOGE5NmIyOTMzZmEyMjRjIHJlbGVhc2UyNy1tYWludAorODU5MTYgMDUwZjBmN2JlMTFlMjYyMjQ5OTAxMWMwYWU1ZjUwNmY4NmU3NzgzMSBweTNrCis4NTkxNyBmMzQ5ODg4ZmFlNjQzOWMwYmJjYmIyMjc2ZGY5YzQxZTJlMDZkZTgzIHJlbGVhc2UyNy1tYWludAorODU5MjAgY2ZmNzhmZmI5MzJhMjc2ZmNkMzBkYTM0ODMzMjdjMTg1MjkyMWVmMSBweTNrCis4NTkyMSAwYjVlNmY3ZWRmNmU2MmFmY2Y4ZmU4NDUxMmFmMmQ5YzM3YzFiMGFkIHB5M2sKKzg1OTIyIDhlNjMzOGNlMDg0NjY0YmVhYzdmNWUyZTZhMjg4MWIzNDRiYzMwMGUgcHkzaworODU5MjMgNGE3YTNlNTFjZDI5YTAyNjhhYzc1MWY5NDgxOWQzNTUyYWM2MDM0ZSBweTNrCis4NTkyNCBkMTQ3MjZmNGI0MTA3YjU2ZTE4OGI4YTgxZmE2NzJkMmViZjdjYjI3IHB5M2sKKzg1OTI1IGNmMWQyNzMyMWM3ODIxNzI4YTdkYzAyZmUxNzM5ODA0ZTMzYzhmOTUgcHkzaworODU5MjYgNDA0Mjc3NjBlMTYyOTRhYTk0NzQ0NjNhZTI1NzBkNTk0ZDQ4YjE0YyBweTNrCis4NTkyNyAzNzJkNmFmZjE1YmU4YzY0ZTZlMjg5MzI0MTgyZTg5OWE3MTdlZjE2IHB5M2sKKzg1OTI4IDhmYTEzMmEzYWZiNWJlOWZhNWY5MTM1M2Y2YjZlNzg0YTEwYmNiYWYgcmVsZWFzZTMxLW1haW50Cis4NTkyOSA1YzEzY2QwZjk5YjQ1ZTQ1OTZhOGI4ZDg3M2RhZTQwZjU1MTZjMDkwIHJlbGVhc2UyNy1tYWludAorODU5MzAgMTUzMmNhMjFiOTIwNTg2NzY0ZDVlZDEzY2FlOTg5OWM4YmJmYzVlMiBweTNrCis4NTkzMSA2MWE5YWU1MjJkY2NhNmI0OTYwMjQ5OWU4OGRjMTM4MmZjZGQxYmEyIHB5M2sKKzg1OTMyIGYzYTFlYWM2MzVmOThjN2NlZDc0YjYyMDEyZDkyZDBkOWUwMmUwNjYgcmVsZWFzZTMxLW1haW50Cis4NTkzMyBmOGQzNDQ4NDk1OTZlMTUxNmE0YmFiNDE4NGVmY2ZkZmNkYTRiY2E1IHJlbGVhc2UyNy1tYWludAorODU5MzQgYTRmZDNkYzc0Mjk5NzA3NjdhOTYxY2UwMjA3MWFmNjYxOTIwZDEyNiBweTNrCis4NTkzNSA4YjMyZTRmNmJkOTlkMmZiM2Q1YTQyZWM2MmJiZjQ2MDI5MjI4MDkyIHB5M2sKKzg1OTM2IGIxODI3NWIxMTdkMjEwYjQxMThkNTgzZTAxNTUwMjcwNDEwOTQwYzEgcHkzaworODU5MzcgYTA2MjZmOTcyN2UwZjJkMDhhMjk1MzM5NzcyNjVmYTIwOWQ4NzM4ZSBweTNrCis4NTkzOCA3NjVkNDIxZDk0M2M3MzUxNGYwZmE4MzRiN2U0OWQ4NjIyMTA3MWFiIHB5M2sKKzg1OTM5IDFkNTVjYzI4NGQ0YWI1YWZlMzc0YmRhZDNkOTIwMDlhOWE4MDI5ZTggcHkzaworODU5NDAgMmMyZWNlZDYzNWY2MGQwYTNiNzc5OTkwNGQ2ZDY4N2VhNjg2MzJjMiBweTNrCis4NTk0MSBlYjUwYzQ4ZDljYjQ5MDhhYTRjNTVkYWIzZmRjZGI1ZjNhMmVlNTgwIHJlbGVhc2UzMS1tYWludAorODU5NDIgM2RhMjNkZWI2ZTlhNTE5ZWI2Zjk4NTdkYWEyYWNlMzQ1MDYxMDdjMyBweTNrCis4NTk0MyBkMTYxNzE0ZTdjOTI4YzRlMzNhMzdmOGUwMjVlZjRlYThlNjc0YjdiIHB5M2sKKzg1OTQ0IDU1NmY1OTE2NjU0OTljMjQyMTE0OTY3YzA3ZmM4MzhhZDU3MzZhMmUgcHkzaworODU5NDUgYmVkZWQ0N2JiMTdmOGIwZTNlMDZkNzc3NDY0NzhlOTc2NDNkZmQ3YyBweTNrCis4NTk0NiA5MjZlOGI2YjZjOWQ2Zjc4M2FkZjNmMWY3YWU5MmU3YjgzM2E4ZmJjIHB5M2sKKzg1OTQ3IGU3MjdjZjM1NDcyMDEwODMzMmZkY2QwMmRjYmY5M2EzOGI4Nzk5M2QgcHkzaworODU5NDggNTM4NmYxZjQyOGExNWVhYjU4ZTdjYjM2MzYyYzY3YjQyODVmZDFjMCBweTNrCis4NTk0OSBmMjRhNTNlZGU5ZWQ4ZTg0Y2JjOTE0YWMzYWFlOTllOTQ0MWU3N2FmIHB5M2sKKzg1OTUwIDFjMDIwYmNkNTBjZDdlYjQ1MGRkYTY0MzI1ZjlhZWUxMWJiNzQwOTAgcHkzaworODU5NTEgNWMwMTNlYzI3MzI3ZGRhZjkxNjkzZTk2OThiYjlhN2NhYzVkYzIxMSBweTNrCis4NTk1MiBlMzhkMmQxNzMwODVmZjI4NWVjNDY5YWU2NTBiZWZjY2IzMzU3Y2RhIHB5M2sKKzg1OTUzIDQwYWM0NWEwOTJiNzdkNGExN2MxOWY2NDYzMDI5NjljZDE4NGY3ZDggcHkzaworODU5NTQgYzg1ZjUzMzkwNjhhMTFiOWIxNTExNjUxYTVhNjk1ZGNlYWExNDA5YSBweTNrCis4NTk1NSA2NGVmNjFkOWZmZGM0MTQxY2EyMTIxZmUxYmMyYWMyODMxYzU3ZTE0IHB5M2sKKzg1OTU2IDNjY2M2YWI1NDZjM2IxMjA2MzcyYTJhYTkyOThiZWJiMGE4N2VhMjYgcHkzaworODU5NTcgM2ZkYmM2YTRiMGQwZjdkODEwMjQ3MTE0NWFiZThjNjFkZDlkNzZlNCBweTNrCis4NTk1OCAxODgzMDI5YzdiOGE3NDk0MTZmMjQ3Y2E3ZWRiZDdmZjYxNGU3ODE3IHB5M2sKKzg1OTU5IGJhYWQ1MmU3OGRjYjNjYTJmMGE3YjFkODkzZWEzMWRkMDhjZWVmY2UgcHkzaworODU5NjAgMGY3NjVjMzNmNGRlMjczZjg3NzY1YmQ2MzQyNzAxMWJiNTcyNGYxNyBweTNrCis4NTk2MSAzYjIxMGQwNDhmNWRhYzQ5Y2RkMTg4NWZkZTA2NzM4OGQ5ZDJmMjdlIHB5M2sKKzg1OTYyIDk4Y2VjYTI1MTk4OGUyZWQzOGE5NmIyODhmY2RhMzYzN2U4NjZjMmEgcHkzaworODU5NjMgOWI2NmE5ZjEzN2I2YzA5ODgwYzNiNTUyMTJmYjlhN2ExMjYxMWM1NyBweTNrCis4NTk2NCA2MDMwMTBhZjgwY2YzNjdmMDIxMDUxZmYyZGU2YThkN2YyMGU3ZGQ0IHB5M2sKKzg1OTY2IDY0YTk3YzRlYmFkY2Y0OTRiOWJmMTNjNzhkOTg1MmU4Mzg3NWVmMTEgcmVsZWFzZTI3LW1haW50Cis4NTk2NyAxODJjYjNmODJiMGI2NTc4M2JlY2Q3MDQyODFlMTQzMWU2NzM1YjViIHB5M2sKKzg1OTY4IDQ4MGU0NTgyOGQ0YjE5MTIwY2FlYWViOWEzNDE4Yjc5ZjFkMmE2YjcgcmVsZWFzZTMxLW1haW50Cis4NTk2OSAwYTJlYzE3NGZiY2Q2MjhjMTIzZDY4OTc3YmQwYzU3NWI3N2MxMTY1IHJlbGVhc2UyNy1tYWludAorODU5NzAgOTBiYzcxZDZiZWRmYTE3MjYzZGE5OGI2YWNlZDdjMDg1ZGQ3MWE0YSBweTNrCis4NTk3MSAzMjI3YjZmMjA0Y2M0YjI2MGNkZjdmNTg0ZDEyNjUxNjAxMDg2OTlkIHB5M2sKKzg1OTcyIGFiYmQ5ZDI2YWU2YzY0ZWU0ODM1M2JkZmM2ZjU5Y2ViM2M3OWMzMjcgcGVwLTAzODQKKzg1OTczIGVhN2IyNjAwZmRjNTk4YWYzNWUwZDQyZWE0NDI5OTQ5MzNkNjIyNmYgcGVwLTAzODQKKzg1OTc1IDcxMDk2OGEyZTE2M2I4ZDk3MjRjNDZkYjFmMmU0YjU1YTQzYzE0ZmEgcHkzaworODU5NzYgOTM1NmQ3NjVkNzhlM2QxYjA5OGZjMzAxN2UzYmQ0YTU4YWRjOWE2NiBwZXAtMDM4NAorODU5NzcgZjk3MjFhOGY4N2JkOGJkM2Q4M2RhYmU1ODk5YTZhN2EyMTc1MGQ4MCBweTNrCis4NTk3OCBlZjZkYWQ3NTE3YzVjNTRmOTg3MGE0YmVmMjk2YWVkM2RlMTc2NmJmIHB5M2sKKzg1OTc5IGU2YWYxNDZiYjM4Yjg4NjBjNDcwZDlkZjQwYTgyODZhMTdkYmZlNGMgcHkzaworODU5ODAgZWExNDk3N2EzNmRlZjg4YWJkZDVmNWUwY2I3MjI3ZDYyYTMwZDkwYyBweTNrCis4NTk4MSBiMDM3NzlmMDA3MzlkNGM2Yzk0ZThkMDI1N2YwMjYwMDg2NjAyYmQ2IHJlbGVhc2UzMS1tYWludAorODU5ODIgODE5YjFlMDUzNWQxOTBhNmQ1NDg1MGY2OWY4M2I3NTJkMjE2NjQ4NiBweTNrCis4NTk4MyBiNzE4MGFmYTBkZmYyZjc4ZTc1ZTBiZDdkMWQwMWE4YzFkZmIwODI2IHB5M2sKKzg1OTg0IDM2ZWE3MTkwMmZjOGQxYzk4MmFhMjFjYTc4NmJiMDBlOTRlMzlmMWYgcHkzaworODU5ODUgMzg1NmM2MWI1YzhiYmJlZDNkMzVkZjcyMTgyNGU5ZjRlM2EwMjJmZCByZWxlYXNlMjctbWFpbnQKKzg1OTg2IGIwMWZjM2E0MmQzNWZiOGJkOWQ0YTk2NDM5MjA5OGNmMmExZDUxMDAgcmVsZWFzZTMxLW1haW50Cis4NTk4NyA3MmEyZDRkOTQwMDMyZDI1NWJlNGE5NTg4YzhjM2Y5NmI2Y2U3MWE1IHB5M2sKKzg1OTg4IGQ2OTgyMDU1NDNiZDcxOTYwOTVmNTljM2JjNWE0OTE5YmQ5MTkzOGIgcmVsZWFzZTMxLW1haW50Cis4NTk4OSBlMjAzZWQwNzFmY2FiNDM3MWNhYzNhNGQwNjQyZTZiYjgyNDg3ZDc5IHJlbGVhc2UyNy1tYWludAorODU5OTAgYjk0Mzk2NWZjNDJiYzkxZjcwZjNkMmY4OGVkNjczMjk3ZTBhYTMzNiBweTNrCis4NTk5MSA4ZDgyNDM0ODMyMjhjMDNmZGU5Yzg1NmIxNGZlYzI5MmE3YWFhOWNkIHJlbGVhc2UzMS1tYWludAorODU5OTIgMjRiMThjZDRkNWYzNTQ5NzI0YWRiYmZkNzNiYzJkNWViZGQ5YWEyZiBweTNrCis4NTk5MyA0MmFkNGFlNmQ4ZWViYjZiMjQwYTk3NWQyZjFhMDY0MmU5NjNmM2I1IHB5M2sKKzg1OTk0IDYyNGU4MzFjZTcwMDI5MWZlOGUxM2NkMjY2NThiYzM3YjJlMjZkMzIgcHkzaworODU5OTUgY2U1M2ZlYTdmOTU3M2Y4YWZlOGI2NjU4YmQ4ZjkwN2Y3YWVlZDYwMCBweTNrCis4NTk5NiA1YjYyNzAzNWE5MjJmN2E0MTIxNTU4ODMzOWI1MmVmZmJhNjg5MTk2IHB5M2sKKzg1OTk3IDkyNTFiYTI3MmYyY2EzM2YwOGFiYzUxYThlOGE1MjZlZDY4NmZjODYgcHkzaworODU5OTggMGJjMmIwNjQwNmY4YmUzYTMxNjEyNGU4MzYzYWIzYTkyZTkxNDYxYSBweTNrCis4NTk5OSAxOTU0YzhlMzFjYjM4YTg5ZDY3YjMxNWM0NjYzMzZhOTBlZTU5MmIwIHB5M2sKKzg2MDAwIGYxODI1MThmM2Y0MjhjY2NlZjM3OGM5NzVmNDQyNDExZmEyNGU0NWEgcHkzaworODYwMDEgNzFmNGYzYjFjMzM1NmVlYzVjOGNjNWUxNmQyZGNlMGIzZmZhNjFmNyByZWxlYXNlMzEtbWFpbnQKKzg2MDAyIDlmMTA5NjhmNTExZDczZjFiYWMzZjkzNzQ3MzY0OThhNmZkNWNjOTEgcmVsZWFzZTI3LW1haW50Cis4NjAwMyA3MzZmM2ExMGQxNzMzMTAzMjc1ZWE5MDA1YTVmMDFkZDE0MjQzN2QyIHB5M2sKKzg2MDA0IDA2ZTIxNTAwMTE5YTI5Y2VmMDcxZmU2N2I4OGMyZjJhOTFkMThmZDMgcmVsZWFzZTMxLW1haW50Cis4NjAwNSA3MzJmZmE4NmM3OThhOWFlNmJjMjllN2I4MzNhY2UyYzI0YTc4YTY1IHJlbGVhc2UyNy1tYWludAorODYwMDYgMjExODU4NzIzYjhjYTk0YjU3ZWJkNjM2NjgxODhlMDBkMGI5YjlkMSBweTNrCis4NjAwNyAyZTFhZDcxMjFlMjk3ZjE3NmFhZGEyZDYxZjQ0YWEwYTA4NTM2MzFhIHJlbGVhc2UyNy1tYWludAorODYwMDggNDU5ZTk1YjY5MzFiZTQzYTMyMDNkZTE1NGFmNDY5OTU4YjQ4OWZjOSBweTNrCis4NjAwOSA4NzcwOWM2ZTU2OTA1NzM3YjEwOTllMTZiYzhjZjZmYjYxOTQ2ZWIwIHB5M2sKKzg2MDEwIDkwYmMwYzVkNzIyZjc3NGM1NDg4YWRkNmY1Yzc1MmM4OTU2ZDg4ZWQgcmVsZWFzZTMxLW1haW50Cis4NjAxMSAzMDVlOTNmZDViNmQ0YWVkYjZmMzVkN2NlMWYzNmY2Mjk4MjU3OGVjIHJlbGVhc2UyNy1tYWludAorODYwMTIgM2E3NTU5YmE4ZWI1OTIwMzZhMmFjZTBkMTgzNmRiZDAxMmM1ZGU3OSBweTNrCis4NjAxMyA0OWEzMWFlMDM0OGE1OGMxNGEzZGUyMTFlMWVlYzg4MTU3ZTIyYWM3IHB5M2sKKzg2MDE0IDYxMmFiYjFlNzY3NjIxYzdiNmIyN2ZkYzcxMDQxMDk0MWY2NmM1YjggcHkzaworODYwMTUgOGJlMDg3NjFkZGMwYmU1N2Y0NTRkZmRiMzMwNjAxNzc5MGU5OWQ2OCBweTNrCis4NjAxNiA5N2YzMmJhNWZmODU0YTZhYmQyZWY5MzdjYzc5OWQ1Mjk2NWQ0Nzc3IHB5M2sKKzg2MDE3IDBlZTg2ZmQ5MDJmMWVmMzViZGVhNjRhMzljMzViOWE2OWZlYWY2NGQgcHkzaworODYwMTggMGVjMzE3MGZhYTk1ZTU4MmU1ZjBhOTY1MTcwYTkzNDFjMjc3NTA1ZCBweTNrCis4NjAxOSBhZjlmOWVmY2JiOWRiNjRkNjVhM2Y0M2QzYTUwNWZmMjcyMzY3ZDRlIHB5M2sKKzg2MDIwIDA4NWRlOTYwM2I2MjlmZjIxNDUwZTBhNjAyZmI5ZThkZDE2OTBhNGYgcmVsZWFzZTMxLW1haW50Cis4NjAyMSA3NjA4ZGNhZjc4NmRkZGRiZmIwZGYwN2QzNzY3YmZmNDIwOWEwNTFkIHJlbGVhc2UyNy1tYWludAorODYwMjIgOTRjNWFkOTgxYzFiN2Y2MWEzNTBjMTRhZjY0MDg3NjBmMDFlMDFkMCBweTNrCis4NjAyMyBiNDgxOTgzOGViNWI3M2YyMTQxNGRhOTRjMTdmOTRiMTBmOTM5NWYxIHB5M2sKKzg2MDI0IDIxODcyYzI0YTI1YjkwOWNiNDQ4MjIyYTQ4MmQ0NTJmZDVlYzI4NzEgcmVsZWFzZTMxLW1haW50Cis4NjAyNSA5ZTI5MWJlNDg5Y2Y1NTE0ZmI0MjcxYjRiMjFmZjYyZDkzMzEzOWYxIHJlbGVhc2UyNy1tYWludAorODYwMjYgZmM4NjU4NjE5YmRmNDlkZWEzY2E0MTlmYWE3ZTNlMGI1NzE4OWFkMiByZWxlYXNlMzEtbWFpbnQKKzg2MDI3IGQ4ZDMzNjQ4ZDFiMmM3ZThiYTI5NDdmNjY3ZWM1OGU3ZGFlOTEyYmEgcmVsZWFzZTI3LW1haW50Cis4NjAyOCBjOTgyMDczMTg4M2Q5YmQ0ZmY0YjBhMGI5MWFhMzM1OTE0ZmQ2MzQ1IHJlbGVhc2UzMS1tYWludAorODYwMjkgZjNhZmExMGNlNzc3MTllM2JiZGMwMmE4MTdjZGUzNjYxMzBmYmQ4MyByZWxlYXNlMjctbWFpbnQKKzg2MDMwIDEzMWU3Y2M5ZTQxNmNkNjE4ODFmOTAzYjNjYmMxY2E2YzI4YTZkZjkgcmVsZWFzZTI3LW1haW50Cis4NjAzMSAzMmMxOTFhNWMxY2Y5NDk1YmRhMGZjNDY4ODFjYjQyMmY1Nzc4ZjczIHJlbGVhc2UyNy1tYWludAorODYwMzIgYjg5YjBjN2YzNzA5NGEwYjczM2EwOTZhZDRhNDg1OTY0ODNmMzllOSByZWxlYXNlMzEtbWFpbnQKKzg2MDMzIGFlMDZjMDQ4ZGUyNDcyODA0MzE4ZThlYjUwNjBkMTM0YmJmMGY5ZmEgcmVsZWFzZTI3LW1haW50Cis4NjAzNCAzMjE3YjEwZjg0MTNhOGFkNzk4Y2E3MDk2OTM2MDNlMzRjY2E5ZTEwIHB5M2sKKzg2MDM1IDliODE0Mjk2MjBmNGI3NzQ1ZWViM2RjMmRiNmZiZDI2OWRkODRhZDYgcHkzaworODYwMzYgNDEyN2FiMWY2MzM4YzJjODBlNDM1Njc0MjY4OGM1N2I3ZjVmNWMzMiBweTNrCis4NjAzNyA5N2RmNWRkZTlmODFiYTZkNGUyN2JhNGUxNjgyZWRhZmZmZjIxODMzIHB5M2sKKzg2MDM4IGE2ODMwY2M4MjJhYWJlMzMzZDk1Mjg2N2ZmOTY3NjlmZjA0NDk3OWEgcmVsZWFzZTMxLW1haW50Cis4NjAzOSAxNDBkNDcxYjA2MWE1M2QxNzJmOWU0MmE2MjAzNjFiNzExNGYzNzMzIHJlbGVhc2UyNy1tYWludAorODYwNDAgNzVhYzEzZmU3ZGEwM2JiY2E0YzMzZTkxMGI5ZWIyYjBkMmNiMzczMCBweTNrCis4NjA0MSA2ZmE0OGZhMmE4NjU2OGM5NTgzNTIzMmZiNzkwZTM2NTA0MWNlM2MwIHJlbGVhc2UyNy1tYWludAorODYwNDIgOTQ0MzJlNGNkZGNmNjI0MWM5MzAzZDA4Nzg2OGZkNjQzNDRkYTIyMiBweTNrCis4NjA0MyA1YzViN2E5YmFjMDVjNjQ1OWNlOGQ5MjQ4YTYxNDdmMTZhZGY0MTJiIHJlbGVhc2UyNy1tYWludAorODYwNDQgNDk3OTY0Y2Y5ZTU4ZTYwYmFiN2ZiMWRhOTgxOTk0MWM1MDU1YTcwMSByZWxlYXNlMzEtbWFpbnQKKzg2MDQ1IDViZGMwZDZjNjkzOTMzYmM4M2Q5MmYwZDI2NTE0YTk4NDNjZWZkMTkgcHkzaworODYwNDYgNTc1Nzk0MjU5M2EwZWJiNTA3OWZhMjE2YzEzMDZmN2U0MjgwYmQ0YyBweTNrCis4NjA0NyBkZTFlNWVlYTdlNzVkMTA1YmUwOGFjNGJiZjJjMjAwOTBlMWYzM2Y3IHB5M2sKKzg2MDQ4IDcxOWViY2I5MzRmM2RjNDQwMTU1NjY2OGMxYWU1YzA3NjA2ZjkyYTYgcHkzaworODYwNDkgYmM2Y2NlNGFiM2M2MzY3NzAwZjlkNmFkMmE0OGFkOWUyOWQ5YjA2ZSBweTNrCis4NjA1MCAwMDA1YTE4MWQxMGJiYjk0ZmEwZTEyMmRmYjkzOTYzOWU0MTY3Mzk4IHB5M2sKKzg2MDUxIGVhMmMyZmMwMTlkNjVjNDEzYmUxYjYyZmZlZDNjMTQzNWFkZDgxNzggcHkzaworODYwNTIgNDFkNWQzZDdkYTIxOGY5YTI0ZTcwMzllYmM2ZjRlMmFmMjZkMzVlOCByZWxlYXNlMzEtbWFpbnQKKzg2MDUzIDBhOTQ5MjM3ODNhNDdkNDAxOThlNDI1MTczNmU2Zjg0YjY5NTQ4ODEgcmVsZWFzZTI3LW1haW50Cis4NjA1NCA0M2FjYzk1NDM0MTZiNDViMDUwYmZhODdlYTNjNzc5OTczOGQwOTI1IHB5M2sKKzg2MDU1IDkxMDNhYTliMjcwNGM5YjU5Y2MzMGViOGM1NmYyN2NmODc4N2EyOTIgcHkzaworODYwNTYgMDU5OWQyMTg4ODM3ZWM0MjFmMDk1NmRmOTdmY2ZmYmViYzkyYWY4YyBwZXAtMDM4NAorODYwNTcgZmVkZGI5YTgzYWVmMWM2YWM2ODE1M2M0ODE0NjdlMWI1ZDE3OTIyNiBwZXAtMDM4NAorODYwNTggMDg5MmIyYzM2MzZkOWUwYzI4YzMwZWI3NmYzMWY3ZjA4NDkzYWIyMSBwZXAtMDM4NAorODYwNTkgOTdiOWQ0MDg4OTE0ZTM4NGIxYjIzYTMxZWIxZWNmYmYwNDM4ZGU0MiBwZXAtMDM4NAorODYwNjAgMTI0MzNlOTg5ZDljOTAxOWU3M2QzYWFmMTNjZDBjZGMzNjI2MzJjNyBwZXAtMDM4NAorODYwNjEgMzkzM2FiNmY2ZjdhYzkzZDllNzg4OWY1ZjdhYjI0OWVhMGE2MjVhZCBweTNrCis4NjA2MiA1M2I1MWY1ZTk1YzRjY2JhMzU1YzU1MjE3YWQxMmQ5NTlhNzBjMDU3IHB5M2sKKzg2MDYzIGQwZjFjYTFhODEzOTFjZDMzMjRkYWI5OGEyZTgwZTRmZGMzODM5N2EgcHkzaworODYwNjQgYjY0MjQ0MWRhMWVhNTkwZmIyNzBjYzQyMzlhZjMxYjM1YzA1NTRkNSBweTNrCis4NjA2NSBlYWE1MDcyNTEyMmI2NmM1OTJlMzNmMzQ4MWMzOWQ0YjkyZDJlM2I5IHB5M2sKKzg2MDY2IGEyY2U4MjE4ZTAyOTJkY2RiYzkzMTczYWZkN2U3YTNiNGZjZWI5NjMgcHkzaworODYwNjcgNjQ3MDU2NjE5NmIzZDM1ZDUzODdmNjAxOTZjOTg4NzVmN2FmOGJhZCBweTNrCis4NjA2OCAwYTNhZTRhMjU1ZGUzYWI3NTUwNWUxZmM4NGQwMDI5ZTEzYzE1Njg0IHJlbGVhc2UzMS1tYWludAorODYwNjkgZmIxMmVlYjFlN2E5YmEyMThlYTllZTVmY2U1ZmE5ZjA5Nzk5NWRhYSByZWxlYXNlMjctbWFpbnQKKzg2MDcwIGQwYjIwYTY1MjFkMjE0NmVkNTg3YmI0OWQyMTJjYjVmMGMzMTA1YWEgcmVsZWFzZTI3LW1haW50Cis4NjA3MSBiNWUxZTZmMzE0MzdmMmM3NTZjNjU1ZDg3YWI3YTI0NTk4NDRiMjA4IHB5M2sKKzg2MDcyIGM4MjQ4NzUxM2U3NjkwNmFiNDA3MDIxYzllYjgxMDg2Yjc5ODIxOTQgcmVsZWFzZTMxLW1haW50Cis4NjA3MyBmZjJjNWM5YzA3OWJhMDZjM2U5YTc3MzQzNzY1YzgxMWZlNzM4ZjYyIHB5M2sKKzg2MDc0IDdkYzEzNmEwMTAxMzcwNjZiMmE4ZjkxNWUxNWU5MzMyN2U2OWE2YTkgcmVsZWFzZTMxLW1haW50Cis4NjA3NSA0NTFjOWJiNzUxNTllNDJhZmQ5MjFmODU1OTZmODdjODk3NTAxODQ2IHB5M2sKKzg2MDc2IDcyMGQ0NWE2ZTMxNjlkNmI1NWM2MmZkOTUwZmVkNmI3NDVlNjhiNGYgcmVsZWFzZTI3LW1haW50Cis4NjA3NyBmZTJkMTliMmE1YzZkMmRmOGY4YjBhNTJhZDhmNTY5YWY5NDZkYWUzIHB5M2sKKzg2MDc4IGJhMmFlMDk3ZjU2NzUzMTJiMDllMWRhYTNiYzZkZmEwNTZkY2U2OGUgcmVsZWFzZTMxLW1haW50Cis4NjA3OSAyMDZkZWQ5NDM1MzRkMzZiNjVmNDEwYjNkYzkwOGNhYTE5OWI4NTZmIHJlbGVhc2UyNy1tYWludAorODYwODAgOGU2NTg0OWY3MWY1MDkzOGU2ZGZmYzYzZTYyM2MyMjliNzdjZWYxZCBweTNrCis4NjA4MSBiZWVkYzc4NTZmNWIxMzkyOTljNzYwYmY0YTkwOTgwOTZlMGQwZDcxIHB5M2sKKzg2MDgyIDlkMTEzM2MxODYzZTRjMDY2YzE0ODFiNGQ1OWQ3N2NmZDhiMjY2NDEgcmVsZWFzZTMxLW1haW50Cis4NjA4MyA5ZGI4NTc5NjA0MDI3MjM1ZmQ2N2EzNTk4YzY0NjYyMTJiNmE0MDQ4IHJlbGVhc2UyNy1tYWludAorODYwODQgZjAzMDA1ODRjODI0NDRjOGJiZmE5M2ZlYTdhNjE4MzAxNzBkOTllMCByZWxlYXNlMjctbWFpbnQKKzg2MDg1IGU1ZGIzMmY0ZjRjZDY4MmEyN2Y4MzdiNTdjZjM1YTZmYTg0ZDBlOTAgcmVsZWFzZTMxLW1haW50Cis4NjA4NiBlNzFjMmUxZGFmNTcwYmZiZGM0Y2E5N2JlYjBiZjNlNWE4OGU1NDdhIHB5M2sKKzg2MDg3IDQ5M2EyZDQwN2M5NDQ2ODA2MWZmZGI3MjIyNmQ1ZTQwMzlkNTQwMTAgcmVsZWFzZTI3LW1haW50Cis4NjA4OCA0M2QyZDVhZmJmNzM4YjU5MTQzM2YwODg1NWVlNDMwYTRjODg1YjBmIHJlbGVhc2UzMS1tYWludAorODYwODkgN2M1OGZhZjIyZTlmMmVjNTc3OTg4NGNmYjhhMDhiNGMxZDlkZjdlMiBweTNrCis4NjA5MCBjYjllMTAwMzRlNGE2NWVjMjcxZGVlMGMwMzMzNDJjYWI3YzQ1NTEzIHB5M2sKKzg2MDkxIDg0ODkxMjc4OWI3OTRhYjQwNWVhOTI2YmUyNGUyNjg4MmI2MDY4MjUgcmVsZWFzZTI3LW1haW50Cis4NjA5MiBkOGFiMzVlYzQ4NmU5MDg2NjNiZjg4ZWUwNTRkMDA1YTEyMzlhZWU0IHB5M2sKKzg2MDkzIDU5NTJiOTM3YWI5YTI4YjIyMjVkM2M5OGM2YmVmYTNlZDBmOGRhZDUgcmVsZWFzZTI3LW1haW50Cis4NjA5NCBiM2MwOThjM2E4MjY2OWYyMTk0ZTNiMzliZjEzMGM2MjcyMGY1YzljIHB5M2sKKzg2MDk1IDYyMWYzZTlhY2VkZGM1ZTc4ZDY4Zjg4OTI1YWU2M2I5ZTI1OTBhOTkgcHkzaworODYwOTYgMzUyMGZlYTVlOTIyZWI3YTMxMDdiYjU1ZmIxN2YzZmNhZjg2NzEyMSBweTNrCis4NjA5NyA1MjA4NGVhNjNjNDIxMjFhOTdhNDU4OWIxMmZiMDhhZDU3MjcxNWMyIHB5M2sKKzg2MDk4IGM3OTFkMDI2MTAwNjI0YjQzMTE2MzMxMWM0MDg2YzI4ZDVlYjA4YTIgcHkzaworODYwOTkgNTM4ZjQ0YjMyYjBhOGRiOTkwNjdhMjQ2YzEwNjc5ZTRmMzQ3MzkxNyBweTNrCis4NjEwMCBmZjgxNjg4OWFhNjFmYzYyMjdhZTg1ZGE4OWYwNDNkOThkNGQ3MDM2IHB5M2sKKzg2MTAxIDljN2FkMGVkNjZjYmVjYWRiNTZhYmQ1ZmQ2ZmVmNTJlNmE5NzZhNTMgcHkzaworODYxMDIgYmUxZDdmNjE5ZmMwZjAwNjFmODZmMTVlZTc0ZjI4MjlhZjA0NjcyYiBweTNrCis4NjEwMyA4ZTE5ZmY5NjRjYzhkYTE2MjBiNTg3ZTc4MjNiNzM3MzBiODYwZGZhIHB5M2sKKzg2MTA0IDRlYTk0YzVmNmQxMDI1MjU0ZDk3OTNlZTViZWViMDU3NDlkOTllM2MgcmVsZWFzZTI3LW1haW50Cis4NjEwNSA4ODlmZDhlY2JmZjQyNDQ5ZGE1M2ZhZDY0YmViMTM3ZTAzZTcyNDE2IHB5M2sKKzg2MTA2IGEzN2Q2ZDgxZjRiMWU5ZDViOGEwNGQ3YTkwNjY0OTQzNjI0N2E3YjEgcmVsZWFzZTI3LW1haW50Cis4NjEwNyBhNjM5NTllZWM4ZmY0YWRkYmI4OTQ5NjRkMzAwYmY5OGU3MmM1MGMzIHB5M2sKKzg2MTA4IGIzNDZjOGQzM2U1NjAxZWM3YTA5Yjk1YjhiOWY2NDFhMzY2MjhjOGUgcmVsZWFzZTMxLW1haW50Cis4NjEwOSBkZWIyM2NiYWI1YWI2MjM1Mzk1NmU2MDgzOTJiMGNlNmEzYzE3MDJjIHJlbGVhc2UyNy1tYWludAorODYxMTEgZmY2ZjM5YjNjMzhlNDZiZDVhNTI0YjQ2NDY3ODZjY2RlMWUwYWU5OSBweTNrCis4NjExMiA1NzNkYjJhZjJkZGE3NGYyMzM3ZGNhZTQ3ZGQxY2I5OWFmZjFlNWI2IHJlbGVhc2UyNy1tYWludAorODYxMTMgZjNiNzE4ODE3MWMwMmNiNWNkN2E3Zjc5NjI3NDk5NGVlZGMxM2YzYiBweTNrCis4NjExNCAzNjg3MmEwZWQ5NDMzNWQ4MDgwMDFhMjAzNTFmMTI1M2ZjZGYwM2MwIHB5M2sKKzg2MTE1IGQ3ZWRkMTViYTBmMmFjMTA0ZjM2YzczZTY3YTY2NDhkZGUzY2QwZjkgcmVsZWFzZTI3LW1haW50Cis4NjExNiAxNTc2NzkwMmI1NDVmYzdiYzQyYmIzYTFhOGI1OTZiODE4Y2RiNGVhIHB5M2sKKzg2MTE3IDQ5ZjE4YTk1MzNjZGUyNjIwOGUwN2U1YmVlMTc5NmJmMDFlMTkyMGEgcHkzaworODYxMTggZWRmNDA2ZWFiMWRiN2ZhMmUwMzlhNGE1NmY2YTMxNTkyMjQ3YjdlNyBweTNrCis4NjExOSA2ZWVkMGZjMTg4MThjMTBhNjUzNmY5MjZmNWI3ZGEyZmM4MzNhYzIyIHJlbGVhc2UzMS1tYWludAorODYxMjAgNGNjZDA2OGNiYTBjOWIwMjI2YjExZTcyMmFkMzZkYjRlOWM2ZmVhMCByZWxlYXNlMzEtbWFpbnQKKzg2MTIyIGY0Zjc5NTU2YTUyMmUwNGYwNjM4ZmE5MzhiYzYxZTFlNjEzODkzNTMgcmVsZWFzZTMxLW1haW50Cis4NjEyMyAwMDRkNWYxNjU3MzhkZWNjMGNmMmNjYzM4MWY2MzNjNDBmY2MwNDVlIHJlbGVhc2UyNy1tYWludAorODYxMjQgYTI4NTg0M2U5NThhNGMzYTc3YzMzNTFjMjBhYmFkMzQ0M2ViZGI5MSByZWxlYXNlMjctbWFpbnQKKzg2MTI1IDQ1Nzc5MmFmZGVjZDYxMGJmYmJlMmZkYzA5OTc5NGU1M2QzZDAzZjQgcHkzaworODYxMjYgMjNiNDk2Nzg0MDFmMTgxNzBhZDFkNDNmNDBlYzg5MjAzNTNjYzFmYSByZWxlYXNlMjctbWFpbnQKKzg2MTI3IDUzZmI5OTE2MzI3ZTBmZWJkNTQ4MDg3ZTcwZDU0NDI2MmE2MTYyYzYgcHkzaworODYxMjggMTA5NTM4NzE2YzU5MWQxNjMwZTg5ZjdkZmU5NWNlOTRkYjJjMmMxMiBweTNrCis4NjEyOSAwY2UwZjhlYmRkMjk4NTIyMzgyMzIzN2Q1MTk4N2Q0NjFhNzdmZDlkIHB5M2sKKzg2MTMwIDE5MTA2N2Y0OWZjYTA1NTJmMjY2ZTZiYzk2NzE2OGVkN2M1MzQ1NjggcHkzaworODYxMzEgZjk4MGY5NDRiZTE5MzU0MjZkNGY0ZGYxNGM1NjY5NWU2ZmRhMDQ0NCByZWxlYXNlMjctbWFpbnQKKzg2MTMyIDY4MzQxZjljNTkzNzNmYmU4NmJlYjJlYzVmNmRkOTc4MmJmZTBkY2YgcmVsZWFzZTMxLW1haW50Cis4NjEzMyAyNjk3MzI2ZDRhNzdkM2VjODdhOTM1OTkwMjUyMjQ0ODA1YTFjZDU4IHB5M2sKKzg2MTM0IGE5ZGJjODdhM2ZmNGFjYTc0NzYyNjQyNjY1YTE0MmVlN2FlYWNhYjEgcHkzaworODYxMzUgNmQyMGRkZTk2MDljOTFlN2VmNmIzMDIwMWEzMDc5MmUzNzUyZDJlYyBweTNrCis4NjEzNiBiOTZlZGIwMmVmNjMwZjcxOWZlOWQ2NjNhNGIyZGYwNTY5YWUyNTE4IHJlbGVhc2UyNy1tYWludAorODYxMzcgMmQ0MjJmMTAwMjJmZjA3MTQ3N2I0YWY1MWIxODZmYmRjNjdiMjg0OCBweTNrCis4NjEzOSA1OGU1NGY1NjNkZTdjZjNkNDJhNjBhY2YyMGRiNDYwYTU0OTljMjczIHB5M2sKKzg2MTQwIDhhNGUyNjM3OTZhM2U1ZmY1OTUyMjZlOGNhMTY1ODNlODE1MzFjZTIgcHkzaworODYxNDEgYjhjMjA2ZTVlZDQ0YWNmZDNjNzJlZTI3ZWYzYmI5MzUzODI1YzQxZiBweTNrCis4NjE0MiA4ZWYzMjk1NWEzNDk0ZTljNmM0ZjljYWJlODEyMGUyZjRmOWM5ZGQzIHB5M2sKKzg2MTQzIDViMDY1Y2Y2MGRkZTEyYTA2OWY4ZmZhZGUzZTBiNDZkNzU0MTU2Y2UgcHkzaworODYxNDQgZjI1NTAxMmIzNDZiYzk0YTE2MDU5NWQ4MDBhYjdiMWEzYzQ3MzFlZCBweTNrCis4NjE0NSA2NzA4NWYyMDIxNDI5MTIyZmExMmVkYWI3ZjIyOGExZDkzNzJkMGVkIHJlbGVhc2UzMS1tYWludAorODYxNDYgMTQyZDUzOTBhYzVjNmEwMmFhYjJmOWM0MjM2OGUzZWM5YTM1OTcxNCBweTNrCis4NjE0NyA0ZDFhYjJkMjViYWY2ZDhlYzRiYjk1YmZhODQxYTgwYTQxZWY5OGRjIHB5M2sKKzg2MTQ4IGRjMzAzODJiYTg5YTEzMDdjODQwYzVkOWNiYTlhMzAzZTliZGI5MzAgcHkzaworODYxNDkgZjI5ZjYyYzM1N2UxNGM5NWZkMjQ2YTgzYzg2MDY3MDM1ZDc4NzgyOSBweTNrCis4NjE1MCA4MWIwZTg5ZTNkZjNjZDk0M2FmZjQxZWM1ZDdiNzgxNDljMmQ0ZTMxIHB5M2sKKzg2MTUxIDhhNWYwODczZDczODAyMTk4NWJhNmU4MjQ0OTU1NTllMjE0YmRiMjEgcHkzaworODYxNTIgOGQ2NTlhNTQ3OWNhODQ4OTNhMzlmZmE4NDAxOThkNTYzNWQ1Y2IwNiByZWxlYXNlMzEtbWFpbnQKKzg2MTUzIDQ2MjQxYTM1YjVmYzUwN2MzZGYyNjY4NmU5MTg0NzljNzI0ZjI4ZDUgcHkzaworODYxNTQgMjk5NzM1ZTVmZDdmOTExNGMzM2FiZTJlNTI3NTg0YTcxYTQ0MGFiNiByZWxlYXNlMjctbWFpbnQKKzg2MTU1IGM5NjczMTRlZjYxZTczZjJlNzZjNGVkZmI0MTBmY2FiN2Q2ZWEyNDMgcmVsZWFzZTMxLW1haW50Cis4NjE1OCA3MWFjNTIzYTZiMTIzODQyMjNlODdiNDY4NDEzYTk0NzViMzBmMmQ1IHJlbGVhc2UyNy1tYWludAorODYxNTkgZTFiNjFiMDUyYzY2YmQzZjRhMDk4MTMyYjQxMDI2MDY2MjE1NjRiMCBweTNrCis4NjE2MCAxZTRkNDZhNjFmYmVlZWViM2ViNDUwOTBmOThlYTZiN2VjODZhMzEzIHJlbGVhc2UzMS1tYWludAorODYxNjEgODQ0ZWNlMzczNzY0MTRjZDNmNTg2YTJmZDE5MDU2OTdhODkyNzUxZiBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg2MTYzIDdjNWQxZGNlMzlmYWFhNmMwYzM3MDBhMGQ5MzY1Mjg0N2JlZWQyNzggcHkzaworODYxNjQgNTIzMWE1YTM3YTdhY2ZlODY3M2IxMjQxOGE2NTRmOTMzZmM1YmZkNiByZWxlYXNlMzEtbWFpbnQKKzg2MTY1IGJlYmEyZGUyMDBkZDE2NWUyYTMzYzRlNTE5ZmY5ODdmNDE3NDdiNDIgcHkzaworODYxNjYgNmUwN2M3ZTRjN2NjYTk0ODU2NWFmMDk4NjdkYmQwZmVjMTE0MjQ1NCByZWxlYXNlMjctbWFpbnQKKzg2MTY3IGNjN2E4OGUwODg5OTM5YWE2MjBlMjQ3MDcxZGI2ZDUzZDJhZjAyNDcgcHkzaworODYxNjggZmY2NTg1YTJhMjQzMmMxYWExY2Y0OGUxNTE0YWQ1N2U3ZmNmNjMzZCBweTNrCis4NjE2OSA2NjMxZTVmNmQyY2VlNDIyZTMyY2EwYzdkYmM3N2ZmNmQ2MDJjNjYwIHB5M2sKKzg2MTcwIDA1ZWVkOWYwY2UwMTU1MjYwOGVhYjBkNjljMDJmM2M2ZTU3ZjJmMmUgcHkzaworODYxNzEgNDI5NGUyYzAwMjQ1NDAwMWQ0NzRmOTk2NGQ5MWU0Njg3OGMyYmFhZSByZWxlYXNlMzEtbWFpbnQKKzg2MTcyIDFmNDViZmI5ODQ3MzcwMTdjMmY4NzRjNjRiMjAyZGJjMGEyZjA5ODggcmVsZWFzZTI3LW1haW50Cis4NjE3MyBkZGYwMDBhZWY1YjA3YTQ0ZWM0ZGZiOThjMzk5Y2M5NTE3NjgwZGJmIHB5M2sKKzg2MTc0IDMyOTJjYzIyMmQ1Y2Q4NjEzM2RkZWRhNTQ1ZTg5ZTMzMjQwYWQ1Y2YgcHkzaworODYxNzUgMjcwYjUwMjk2ZWE5ZmIwZWQwNzViODczMWZkNDJkNjMxYzk1MTE5MSBweTNrCis4NjE3NiBlYTVhZWYzMmExN2YxNzM2Yzk2NGU0NWFkNjA1YTQ5Y2EwMWRlZDg5IHJlbGVhc2UzMS1tYWludAorODYxNzcgNGJiOWM5NzRmNTE5ODc2YzcwMDQ4YTYxMzZiMTRhOWJlNmRlZmJlYiBweTNrCis4NjE3OCA0ZWU2ODJmYmVjMzBkYmIxNDY0MmJlMmJjMDY1MDc4NTU4NGFmZDRjIHJlbGVhc2UyNy1tYWludAorODYxNzkgNjJiM2EwYTk5YjE5ZTRhNmQ1NjdlZDM4OTljZDhhODZkMjAzYTVhOSBweTNrCis4NjE4MCAyZDVkYmRlNjRhMzU4YjI2OTkzNDU2NDkxMTgyZTIzYjgxYmYxNjA0IHJlbGVhc2UyNy1tYWludAorODYxODEgNDhlNTU0OWUyYzI1ODlmM2RiYjFjMGU1MTI4YTYyYzU5Yzk0N2Y3OCByZWxlYXNlMjctbWFpbnQKKzg2MTgyIDdhYjcyYmEzOGZlMDJlMTJiMTRkOGIxNzg5MDA5Y2RlOWEwYmI0NmYgcmVsZWFzZTMxLW1haW50Cis4NjE4MyBiODM2ZjA0NzU5Y2QzNjMzZmFmNjJmZjU4Yzk0YzU2ZjIwNTUzMTk5IHJlbGVhc2UzMS1tYWludAorODYxODQgOTQ3YjVhY2M2NGJkOTI3ZTRkMDY3NjI4MGIwOGNiYTZhOTM3NDdkNiByZWxlYXNlMjctbWFpbnQKKzg2MTg1IDZlMWFlMzIzZmRlNjI2YjYyZmNhYjJkYWYyZDYxZTFlN2E1ZjFjNGQgcHkzaworODYxODYgNDMwZDUwZTNhYzUzMWE0ZjM4YjEyMGNhOGE3ZjczYTg3YTg3OGJmZiByZWxlYXNlMjctbWFpbnQKKzg2MTg3IDhjZjhiYjVkYzVmODZlYTJjMDExYzk0MDllNjZlMDA0ZjU2NzQ1YzcgcHkzaworODYxODggZWM5ZGQ5NzM1MzJmM2MwNDgyOTA3YWQ0ZGEyMzVjMjM3Y2M3NTIyOCByZWxlYXNlMzEtbWFpbnQKKzg2MTg5IGJiNjZhNGY1ZWJjMmFiYTg1NTliMDEzODU4YTk2M2EyODljMjlmYmIgcmVsZWFzZTI3LW1haW50Cis4NjE5MCAxY2U2OWVlNjllOGVjMDE4NTQyNDhjNzEwZDI1YmY0ODUyMDgxNTc4IHJlbGVhc2UyNy1tYWludAorODYxOTEgNGMxYzQ4YjNhZjY2MjZiNjA2ODA1ZDFkZjZhZjMyNDJjYTZiYzAzZCBweTNrCis4NjE5MiA3OWIzZmM2ODFjYjA5NDg2YjRhMWJmMjE4MjE0YTgzYjBiYjdiZmJiIHB5M2sKKzg2MTkzIDJkMDVlOWZkYjU5N2YwMmRjYzE5NDRmYzI3ZTA5ZDk5ZmFmNDViZDYgcmVsZWFzZTMxLW1haW50Cis4NjE5NCA3ZDI4MDg3ZmJhZjNhOWE2OTdmNDcyODcwNTcyNThiNzQwMDMxYTI3IHJlbGVhc2UyNy1tYWludAorODYxOTUgYjAyNDlkMDgzOWVkYWIxMjNlODM0NmMxMTZiY2I5MTU1ZDdmMWY4MCBweTNrCis4NjE5NiAxMjQzZWM2NzljMjk4YmE2NGVmMmY1NjE0ZDIxZTA4ZWE2ZDcyMmZiIHJlbGVhc2UzMS1tYWludAorODYxOTcgNjJmZjExNjQ0MzM5MWQwZTNkOTk1YjQzYjdkYzQ2NjFkYjE0ZGExNiByZWxlYXNlMjctbWFpbnQKKzg2MTk4IDE4ODk2ZDU4MDI5MGFjYTMwNmU5YzhlZDJhYTIyODM0NGU2NDBiZGYgcHkzaworODYxOTkgYzUwMGI0MTM4ZjdiOWMxMTc5YTgwZDllYmQ4ZTMwMTc3ZDQ4OTJlNCByZWxlYXNlMjctbWFpbnQKKzg2MjAwIDYyMDg1NzMzZjdkZmI5ZWMyYWEyMmJjZjQyMGQ5NzY3YzRmODgzYzUgcmVsZWFzZTI3LW1haW50Cis4NjIwMSBiMjU0YzY1MDdjMzVkMjc0MDg5NGViMmMzMjVkMWQ2MjU0MGE0MDM3IHB5M2sKKzg2MjAyIDI1OWE5YmVjMjMyNmM2OTFhZmZjZTYxN2RkZDI2ZWU5OGVhNDA3NTYgcHkzaworODYyMDMgZWQzNWIxMWViZWM2OGNlN2Y1ZDYwODk3YThhM2EzMTQxOWZkMDJlNiByZWxlYXNlMjctbWFpbnQKKzg2MjA0IDJhMzMyZTcxNTc2NjM4NmVkYzhmY2NhYjEyOTc3YjBkMWE3NTRjNjMgcHkzaworODYyMDUgZTIxM2U0NjVhMmRjODU1MmM5OGU1YzU3N2EzOTdiMjVmNTgzNzUyZSBweTNrCis4NjIwNiBlZGY4YzRiMDAwNDFlMDk1OGEzODNjOTA2ODQ3NzdmZDkyNmE5MTg4IHJlbGVhc2UyNy1tYWludAorODYyMDcgZmU4OTYyZmMwZTExOTkzZGRjNDA1MTU5YTI1ZWMyY2M3YjlmOGQzYiBweTNrCis4NjIwOCAyMzlmZmVlNWVkYWU1Mjk0NDZhYzM0YzNmY2FmMWUzYjljNDdlMjljIHJlbGVhc2UyNy1tYWludAorODYyMDkgNWIyMTFkYzk2OGRmYzdiYzlhOWZmM2VlM2RhZmRjZjIxZjJiZWVjZiBweTNrCis4NjIxMCBkMzFlYWVjODgzZWIzZWJiNzEwOGFjYWJiNmJmNWU0ZDU4MTA0MmVjIHB5M2sKKzg2MjExIDQ5YjBkNDIzMDIzZWQ3NGZhMzBjOGJkNTk3MzMxNmI2YWUzMWUxYTQgcHkzaworODYyMTIgYzM3YmVmOGRjZWEyY2I1OTBkMTA1Y2I5NTY0YWFiNjY0NjkwZWVlNiByZWxlYXNlMjctbWFpbnQKKzg2MjEzIGVkZWZjNWQyYjNkNzRlOWZiNTczNGQ0NDBkYjFiZjgyMDRlNWQzMjkgcHkzaworODYyMTQgZDMzZDYyYWI5MWNjYWNmNmUzNzkzYTkxNTg4MmIwNzFiOTEzMzZmMSBweTNrCis4NjIxNSA3M2NhNmRmYjIyYWExNTEzODIwMzg5MTJlMDgwZTY2YzRjMTZiMTg2IHJlbGVhc2UzMS1tYWludAorODYyMTYgMTg1YWI3YzRiOTQ2OTFhODhlZmY3MjM1MTJkZGMxMzQ2OWQyNzVmNSByZWxlYXNlMjctbWFpbnQKKzg2MjE3IDM4NWQyMzliY2JmYTc4MDY2NmIxNTQ3M2IzZDU5NWM3N2JmZTUyNjQgcHkzaworODYyMTggODIyMjE0MTA1NjJiM2RiMDhjZjFkOTMwY2ZhY2RiNzQ1YzczODQxMSBweTNrCis4NjIxOSA0NThiMDVhYmY5ODczZDlhNzZlMmJjM2U3ZDQ5ZDRiODIzYThjMDI2IHB5M2sKKzg2MjIwIDU3MWQzMTdiNGNkNWYyZjNlNjUzMTk4NGI5YTE1MjRmZWUxZGE4YWMgcHkzaworODYyMjEgNWRlZDI1ZTA2YTlhZmJhYzJmYTkwZGQ1ZWQ0NDBmYTM3MDljZTFlNyBweTNrCis4NjIyMiBmOTBlZDM3YWUxNmYwYTQ0MmY0OTllYTA2MWM5Yzg0NzEzYzIwMzk1IHB5M2sKKzg2MjIzIDNiZjg2Nzg1Y2Q5YzVlMzc5MWI1NTJiZGQxMWM5NDk0ZWMwZjU2MWQgcHkzaworODYyMjQgMTBlMDU4MDg5NWVkNDU4MDQyMGE4YTMxZTMyNTIyYzI4ZTE3MTNkZiBweTNrCis4NjIyNSBmZGQzNjgxYjE0Mzk5NjQzMjQ5ZWIzNGU3MWUzZjY2MTFkMGM4MTUyIHJlbGVhc2UyNy1tYWludAorODYyMjYgZTNmZDEyMDViMTA1NWU1ODU2ZTkxNTk4ZDY5MzMwNWE2NjcyOGZkMCBweTNrCis4NjIyNyAzMjA3ZDlmNGQwMGFlZDMyZTgwZDU3ZjgzMjA1NWIwODlkZWY3Y2IzIHJlbGVhc2UyNy1tYWludAorODYyMjggYTA5MGJmNzE2YTY4NzM1Njc5YzFhNGZkMGEzODM4NDYxNDUxYzRmZCBweTNrCis4NjIyOSA5ZDczZjk4MjdjOWY0YTVmOWIzY2I0M2RhZjVjM2Q4MDE3NWY1MDMxIHB5M2sKKzg2MjMwIDUzZWMzOGQzMTk4OGExZDJkNTkxMTIwYmQxNGFlY2UyZjAzOTNiNWIgcmVsZWFzZTMxLW1haW50Cis4NjIzMSA4OTExZjQ3NWFkM2QyZmYzY2RjZDE2MjUwMmJjYzFmZTg1NDE3YTczIHJlbGVhc2UzMS1tYWludAorODYyMzIgOTZkYmIwYzE2OGI2Nzk1MzEzN2U1MDhjY2I5MWVlNzllNTI0OWY5MiByZWxlYXNlMjctbWFpbnQKKzg2MjMzIGFjYjBhM2NjMWUxOGM3MDlkNWI2MzJiMjIxYzA0YjY4MzY4NGMxMjUgcmVsZWFzZTI3LW1haW50Cis4NjIzNCA5Zjg2MjExZjBhNDI3M2JjOTAxYjg2NTVlYzVhNTY5MDBhMmY3NWM4IHB5M2sKKzg2MjM1IDIyMjNhZmUzZWFiYTk0ODA0OTcxOWY3ZjU0NjEwOWJlMDQ2MDE2NDAgcHkzaworODYyMzYgOTZmMzBmZDU0ZTBmZWE2ZmJkYWUzZjk3YzQyMjkxNTM1YTdiNWU4OCBweTNrCis4NjIzNyBmNWRkNGE1NGQ3OWI1MTVmOWZhMjk3ZDU5OTNjODc1ZDFlYjc2ZTQwIHJlbGVhc2UzMS1tYWludAorODYyMzggYTE3YjIxYzI3YTMzODQ3NDkyNzNlNzg1NWIzNDk1ZjZiZWRkODlkYyByZWxlYXNlMjctbWFpbnQKKzg2MjM5IDVkODRmMWI3M2Q1MTAyODJkNTU5NDM2ZjQzMTEzZjNmNzE0OTk2ZWYgcHkzaworODYyNDAgZmYwNzJhYTcwYzFkYTc0YTkxYzE1ZWQwODFmYzgyNjBjMTBiOGYyMiBweTNrCis4NjI0MSBjY2Q5OWQ1NDc5ZGNlNzkxN2E5NTg1ZDBhZjcwNDQ3MDQyYjlkZDk0IHB5M2sKKzg2MjQyIGQ0M2JmMzBmYWY2ZWI4NTAwN2VlZWY3OGI5ZGZkNGNmMTAzMWY0YWEgcmVsZWFzZTMxLW1haW50Cis4NjI0MyA2MzZmZWQ4ZTc4ZDYzZjYyYWYxODIwYjYxZWI2ZjgzOWRmZmVmMDA3IHJlbGVhc2UyNy1tYWludAorODYyNDQgYjU2NDhlMTBjMjNhN2RjMWE4MmRjZGMyOGJlOWM1N2MyMjlmYzVlNiBweTNrCis4NjI0NSAyYjdlYjBlODZkMDdjZGZjNWNhNTFlMzVlY2YwNTJhMTBlYmRlZmYwIHJlbGVhc2UzMS1tYWludAorODYyNDYgZGYzNDk5MWM3ZDBlOTVhYjdjZDBhODQ5NjMzYWIxNzQwNjI3MzI5YSByZWxlYXNlMjctbWFpbnQKKzg2MjQ3IGZjNDgzNzUwNzlhNmFlNjlhMGU3NTczYzRjMTZjNzgwMDZhNzJjYmQgcHkzaworODYyNDggNjhmOGE5NWI1MGM3ZmFlMjZjM2VjMjA4MTBhNzlhNzQ0NWY2OWQxNyBweTNrCis4NjI0OSA1MTE1ZDRhMmQ4OTgyNDYwM2QwZTE4N2EzN2EwZTEzODRiM2Q3MDE4IHB5M2sKKzg2MjUwIDdjYjgwNDM1ODFiNTdmZWZmODM3NzQ0Y2E5NTNjNTY3ZDA1OGIyZmEgcmVsZWFzZTMxLW1haW50Cis4NjI1MSAzMDQ1YWRhMzkyNjkxNTc2MjdiMTJmZjIwZmE3NGYzMDk1MGVlODZjIHJlbGVhc2UyNy1tYWludAorODYyNTIgNmRkYzU3NjM0ZGU1NmVkMzMxYTZiNThhYzFhMmVmYjc4MDk2YzgyYyBweTNrCis4NjI1MyBiYTBhZWM2N2I5OWEwYThlM2ZhZTZmODZjMGZjMWFlZTE5MTA0MjM3IHB5M2sKKzg2MjU0IDg4MzhjNTZiNjk1MjUxZDI2MTY2ODIyY2YzZDE1MTlmMTlhZjZlOWEgcmVsZWFzZTI3LW1haW50Cis4NjI1NSAzYmY0MmQ5MTBkYjhiODc4NzRiYTUwZTNiZDRiNGIxNjA4ZTY1MTc0IHJlbGVhc2UyNy1tYWludAorODYyNTYgZmYxMjU3MTI4Yzc1MGU3ZDY5NGUzMWU1YzlmNDc0NmY3MjQ4NjdiZiBweTNrCis4NjI2MCBmNDU3YzQ2ZjkwOTgzNmM5YzFmZTE4YjI4YTFhNGI4YzNhOWQxNmMyIHB5M2sKKzg2MjYyIGU4NTAyNTY3ZWZhZjQ5ZTNmYWJkYWE5NzJkMzFlZGUxMmY1NjBiYmUgcHkzaworODYyNjMgYmU1NDY5ODA4Y2U5Yjg3NjNhNzI2NDI2Zjk2ZDVmYjNlODA4YjYzMSBweTNrCis4NjI2NCAzODI2YWRjYTdhM2JmNGNhNDE4ODcwN2YzNDFjYTU5YzgwMDc3M2MxIHJlbGVhc2UyNy1tYWludAorODYyNjUgNGZlYjUxZjZmZDc2YmQ5YWFjMmQ0ODlmMTQ0ODgzYWRiMDNlOGQ4ZCByZWxlYXNlMjctbWFpbnQKKzg2MjY3IDA3M2IwN2IzYmRhZWNkNTllMTM2NDNlYzEzYjkyNGZhMDczYmE2OGMgcmVsZWFzZTMxLW1haW50Cis4NjI2OCBkYjY1NzQzZDA2MmZjNWFmMjFjODY0MWYwNWU4M2FmZGMzNDM3ZGZkIHB5M2sKKzg2MjY5IDc2MmI5NDQ1MDM2NzVlNDc1NWEzZmI3MjM4ZGI5NmY3MzEwN2Q2N2YgcmVsZWFzZTMxLW1haW50Cis4NjI3MCBmMGM3ZTJiMTEyNzM5ZjNkZDg1ZWI1MmI4MThjNWRhY2NkNzA4ZWVmIHJlbGVhc2UyNy1tYWludAorODYyNzEgNDM0OGM5YjZhNzJkNmQ5NGI1NTE3NmRjYjBlZmQ5NDRhOGI1MDA2OCBweTNrCis4NjI3MiA3N2I4Yzk1ZjBjMWI1M2MwMTlhM2I0MGQ2MjRlNDg5MTJlNDc5ZDY4IHJlbGVhc2UzMS1tYWludAorODYyNzMgOTdiOTVhZTIzNDhiMmFhNzMyMGNkYzE1ODc4MDkxMDMzNDc2MDA2OSByZWxlYXNlMjctbWFpbnQKKzg2Mjc0IDdhOWRiYTg5YTdjZTg0NmI0OWIzODIwZmU0MThiNmMyNmIyYzQyMjAgcHkzaworODYyNzUgMTBiZGRhMjQyNjU0NTUwZjlhM2Q4OTYzNTMwMGYyMjYxODNkZGRiZSBweTNrCis4NjI3NiBhZjA0YWFlMTkzZmZmNjU5ZTY3YWIzNzY5MzI1MmJkNWQ4ZmQ4MDUyIHB5M2sKKzg2Mjc3IDcwNDI1ZmQ0Nzg1NjUwYmFkNGM3ZjdkZDVhNWY1YzFjNmYzZDY4ZDcgcHkzaworODYyNzggMmNjM2Q2MmYwNjgwODk5M2Y0NTVhOGFjOTI3NGIzZWMwYjhlMzI3NiByZWxlYXNlMzEtbWFpbnQKKzg2Mjc5IDE0OTlkYjk5YzRjZGNmMmRmMzIyNjQ2NzlhMDUzYjMwMzQzYTliZWIgcmVsZWFzZTI3LW1haW50Cis4NjI4MCAyODY0MjRlNzVjZDkyNGUxYTIxNjJiNTAyYWRhNGY4MTlhMTYzYWEwIHJlbGVhc2UyNy1tYWludAorODYyODEgMzdmNDNkZTY1ZDEwZTlmODJmNzYzMTg5MDdiMDY4MmJlNzZlMjcyOSBweTNrCis4NjI4MiBkMDM2MzJjMzY4ZDM3Mjg1ZjFjNmI5ZTBhNWZlNDIxN2NhZDRhMDA5IHB5M2sKKzg2MjgzIDYxYmJkNGI3NTg3NGUyMDg0YzM2ZTgzNGFhMDM0NmY5M2U3YzM3NWEgcHkzaworODYyODQgZjZiOGYzMzZlMDBhYTM3Njc4OTNmYWFkZmY1ZDgyMzYwZGM1MmRmNyBweTNrCis4NjI4NSBiNjAzZDI0OGQ0YWQ5MTEwZDBmZGVhZmI1ZjE4OTc0NWE1OTY1ZWQxIHB5M2sKKzg2Mjg2IGIxYzA2ZmE0OGNjNGIwOTM5OTFhYjQ1YjFmMGYwMTRiNWZhZGU5ZmIgcHkzaworODYyODcgMzI4OTkyYjBlYTc5YWY0ZTg3NDQ4MTRhNjIxYzFlZGIyMjA0MTBhYiByZWxlYXNlMzEtbWFpbnQKKzg2Mjg4IGRjZjE3ZmE4NDgyMTc2ZTc2ZTU5MjE5MGE3MzBlMGJkMGYxNjliYjIgcmVsZWFzZTI3LW1haW50Cis4NjI4OSAzOTc5ZTBjYzMzYzEzMzIwZGIwNDhlYzFjMDRkMDlkZjJhODM4M2IyIHB5M2sKKzg2MjkwIGFkNjQ5MGE1NmQxNThiOWI2ZmQwZWYwY2M0ZjQzNzdiY2ZhZWU1YjQgcmVsZWFzZTMxLW1haW50Cis4NjI5MSA3NDVkMGYxNmRmNzZhOGIwMTBhYjcxNjg4NWY0MGFmNzM0NmQyNzAyIHJlbGVhc2UzMS1tYWludAorODYyOTIgNmU4NDMyMTE2NjRkNzIxNjlhNTc3ZjMzYzg2ZjMyYzBjN2Y1ZGM5YiByZWxlYXNlMjctbWFpbnQKKzg2MjkzIGU0OWViYmQyYzQ5NjFlZDJhN2NlNzhhYzI0YTYyMjljZTE0MTM1ZGYgcHkzaworODYyOTQgYzA4ZjdkNmEwMjMxNjllYjkxYjY5MTc0ODY1MzBhYzIyMjRhNmIwYiByZWxlYXNlMzEtbWFpbnQKKzg2Mjk1IDUzODRlNGU0NjM3NGRhZDViYmNhMjZjM2E0OWQ5ZTc0NTI2MTg5MzcgcmVsZWFzZTI3LW1haW50Cis4NjI5NiAwNTQzYzAyZTk0MWMxMDI0YzYzMzMwYjQ3Y2QyZWE5NWZhN2ZiMDQwIHB5M2sKKzg2Mjk3IDIyNjJmNmM0NGViY2E2NjkzNGFmNDQyYmMyOGE2NTkwZjQ2OWM0NGYgcmVsZWFzZTMxLW1haW50Cis4NjI5OCA4ZjA5ZWVkY2Q3MGEwYTg5M2U4NzNmZjU0ZWQ4MDE4ZmIxNjc5MzgzIHJlbGVhc2UyNy1tYWludAorODYyOTkgZmRjYWFjMGUwMTBhMDM1OTkxNzcwZGQ5NzI5NDM4ODgzY2Y3MmYzMiBweTNrCis4NjMwMCAzMzU0MjNkNzM2YTdmZjQzYjFmN2ZiZTExZDBlYjg3MDM1OTNlMmUyIHB5M2sKKzg2MzAxIGU4ZjFlZjVmZDQyMzgzOTY3YjUzMjM4NGZlMjFmNmQwYjUyNDJmNjIgcHkzaworODYzMDIgNDE4ZGNiMWM0NWY3ZmI4MDFkZjU4ZDYwMDUzMWQ3YTkxZDc2ODdlYSBweTNrCis4NjMwMyA4MDQ3M2FkNjk3YWMzMDY3NTk3ZWNmMDA4ZDM0Y2YyNjZhMmQ3MTRhIHB5M2sKKzg2MzA0IDgxNTRkYjhhMTU5MzNkYjVkMjYwMWU4NmI2MmZmMzlkNjdlNmU5MTUgcHkzaworODYzMDUgZjgyMDhjMzM5NzhmOGY0ZjdmZDM1N2M0YTBkNWY4NjAyZTVlZmExMCBweTNrCis4NjMwNiA4OGQwNGYwMTQzYzcyNzZlZmFiN2YwOGU5NjFiZGIzOTg3OWM1Zjg3IHB5M2stY2RlY2ltYWwKKzg2MzA3IDg1NWExMGVmYjEwYTI5YWZlMWQyOTRiZmNmODlkMTc1ODJmZWJhNjIgcHkzaworODYzMDggNzZiYzcxOGZlN2M5MmE5ZTczMWEzYjY4Njc4ZTUwN2E3OTg3MDIzNyBweTNrCis4NjMwOSAzZGIxN2E0OTRkYzk0ZDI1NTZlOWZiMzRiZjE0N2JiNWYzZjc1YTBhIHB5M2sKKzg2MzEwIDNjMWJmZTU0Y2QyMDk2YTE4NmZkYTc1NGFjOGE5YWM4OTc5ZjhmYTkgcHkzaworODYzMTEgNmQxMjk0YWRmYWY0NDA5YzA3OGZhOTNmNDUzNmZlZGMzYmIzMGFjNyByZWxlYXNlMzEtbWFpbnQKKzg2MzEyIDk2YzgwZjQyYmNlNmNiOTdjMTBjNDJhMGMwYzE4MGRlZDdjNzM0ZjUgcmVsZWFzZTMxLW1haW50Cis4NjMxMyBkNTViN2QwYmM5NzM3ZmMwNmYxNGRjMTdlNjA0MTdkYWQ1NzM1OWEwIHB5M2sKKzg2MzE0IDA3NDUzM2E3NTk2MmUwYTIwZDBjNjFkNjAxZGI3ZmU5NGI1ZTFjZWQgcmVsZWFzZTI3LW1haW50Cis4NjMxNSAxZmZiZDY3NTNhMTU0MzdhZDQwNWRmY2RjZDRmMGY4N2QyYjExZTFjIHB5M2sKKzg2MzE2IDI5NDhkNWZiMWViZWI1Zjk4YTE5MGM5M2JmNzczODdlNDQwMGI2ZWUgcHkzaworODYzMTcgMmQ2ODI0ODg0NDM1YjdiNzNiNjI4NmNiZmI0MDk2ZTFiMTFkYjE0MSByZWxlYXNlMjctbWFpbnQKKzg2MzE4IGE4YWFjZGI0NTIwZTE2ZThjMWY5ZDVhMjFhZGNlYmYzNTVkZDViMGYgcHkzay1jZGVjaW1hbAorODYzMTkgYjBkZTBjZThhNzI2NGI0OGRiODMwYjljZGQ1NmEyNmYxZGYyZTUyNyBweTNrLWNkZWNpbWFsCis4NjMyMCA4Mzc4ZWI4MDc3NDZiYjFlMjdjNmMzMjliZmI4MzdlNDBiMWI0NTY5IHB5M2stY2RlY2ltYWwKKzg2MzIxIDE2OThiMGY2NDBiNjRlNWUyNDAzMGIyZDYxZGRhZmNhODYzNTM4ZWMgcHkzay1jZGVjaW1hbAorODYzMjIgY2EyYjkzN2UxYThkMTI2NWVmM2M2OTFmOTExNTk5ZGQwY2VkZjdhMiBweTNrLWNkZWNpbWFsCis4NjMyMyAyYjFmODRhNGFkMzNjMTVmNWRhMmY4ZWRmMDM0ODI0YjJiMDc1MDRhIHB5M2stY2RlY2ltYWwKKzg2MzI0IDA3MDM2ODE3NWIyNDljNTc0ZTU1Njk1NmY0YjEzZWFkMDc1Mjc1ODcgcHkzaworODYzMjUgM2JkNzMxMTNlODEwN2FlNWEwZTcxMGE0YzFlMTY0ODViNzJhYThmMiBweTNrLWNkZWNpbWFsCis4NjMyNiA0MjcwODBmMmFhYjVlZDM1YTNmMjMxNmY5M2I5NzkyZWNhNDllZGM2IHB5M2sKKzg2MzI3IDNmMTAzNGI0MzQ3ODNjNDAyMGM3MDVjZWRjNzkwMzAxZjM1YjAxZWMgcHkzaworODYzMjggZjNjNTMzODU3ZmFiYmI3OTZkMzNjN2MzODcxNjU2MjdhNzFhN2UzMyByZWxlYXNlMzEtbWFpbnQKKzg2MzI5IDBhZDZhMGQwMTQ5YWE4MmEyNTIwZDE0MzExODEyM2IxMzQ3NzEyNDcgcmVsZWFzZTI3LW1haW50Cis4NjMzMCBkNmQ3MWQ0ZDZiNjUwNmI3NTgyYzc0YzRlODhlMzEyZTFjODkxNzM4IHB5M2stY2RlY2ltYWwKKzg2MzMxIDE4Y2JhYmE2MWZhNTY0NDNiMjAzYjE3MjQ4YTg4ZjRmZDRkYTBlOGQgcHkzay1jZGVjaW1hbAorODYzMzIgMDBiYzNhZjg5YjdjZGExNTY0ZDNhMWVkM2Y2YjU3NjFlY2QyZDBiMCBweTNrCis4NjMzMyA4YWIxZGUwODEzYjNiZjc0NjM0ZjY4ZmE3OTQ4MGY3ZTAyODFkMDUzIHB5M2sKKzg2MzM0IDc4ODAzY2YxNGE5NGFmYjNjODRkMzIyOTY5NmJjZTRlZmQwYWIwNjggcHkzay1jZGVjaW1hbAorODYzMzUgYWQ2NDhmMmI1ZTAwMDVkZjJhNjM0MmYyNzNjNmVjMDQ2NGY4MmFiNyBweTNrLWNkZWNpbWFsCis4NjMzNiA0NGNkMDQwZGRhNTY2NjI1YTk1NTE4ZDNmMTkzZmQxOGNmNjRlN2ZhIHB5M2stY2RlY2ltYWwKKzg2MzM3IDQyOGI2MTJjYjA3NmQ4Mzg4N2Q1NDM3ZDU2ZTFmYzQ5OTgyNTY3MDYgcHkzay1jZGVjaW1hbAorODYzMzggYmFiN2U3MDNlM2VhOWQxMTQ3MmIzMDRjMjRhODViYjA3NTI2NTY0YyBweTNrCis4NjMzOSA1NmI2Y2NjYTFkNGNiNWM3ZTU1YTY2NDczZTYyYWIwMjgzODdjNzBlIHB5M2sKKzg2MzQwIDkwMDgxMWY2NzA1ZDc1ZTQ0MzIwM2U2YzUxNzA1MTRiOTdiZGIwNzEgcHkzaworODYzNDEgMWI1ZjQ3ZTJlMGYwMzBmMTRhODE1ZjY5NzFmYjlkNzgzMzYyMDM2YiBweTNrCis4NjM0MiA2YTJiOTExN2Q0NzdiNzYwY2EyZDBmYjRjZDNiYmQ5MGYxNDk0YWFlIHB5M2sKKzg2MzQzIDc2YTFjNWU4ODM1MmY3M2QyY2FmNzQ2ZWVlNTAxMmU1ZDZjZjRmZjMgcHkzaworODYzNDQgZmMzYjEyZWJmYjlhMmI0M2MzZGIxZTVhZGE0ODFhM2E2YmQ0NDBjMCBweTNrCis4NjM0NSA3NWUwMmZkYmQzM2U2Y2NiMjM5M2NkZmRiOWQ1YWE2MGMxYzdhNmFmIHB5M2sKKzg2MzQ2IDMwNjMzOWMzMTc1ODY1NjEwMzg5NjZkOTViNGZlNDE1MzEyYzY0NjggcHkzaworODYzNDcgMzIzZDQzZTg5NTNhZjkxYzk1NGU5NmFhNzQ5ODFmYjdkZjI5Yzg1MiBweTNrCis4NjM0OCA5YTY2ZmViMDdhMGFjMTJhYTZhZGMwZjgwMjgyNWRjNTE1ZDczYzk5IHB5M2sKKzg2MzQ5IGIzNDdiNWNkNDExMjY5ODM2MjRiNzE5Njc2NjE3MjQxZGZkZDU2NWYgcmVsZWFzZTI3LW1haW50Cis4NjM1MCA2NDBhMDhlYzhmYTI5NGM2ZGRiMTg0ODE0YmFjODY1MTJhMDljOGE2IHB5M2sKKzg2MzUxIGI2ZGE5NzkzMGY2MzFmYWNhOTk1MmMzNGY1YTI2MTM2MmQ0ZWUyZGQgcHkzaworODYzNTIgYjQ5MzhjMzRiODAzNjBjYzdiMTQ0MjRlM2IyMzEyNWIwYTZmNjkzYyByZWxlYXNlMjctbWFpbnQKKzg2MzUzIDQ0OGFiNzUxNmMwYTA2ZDZhODkyYjFhYzVjYmExOTU2ODBlYjZiYmMgcHkzaworODYzNTQgNjQ2ZGZkYzQ4Y2E4NmYxMjkyMTA1YWVmZGNjZGY3MzQ2NmFmMzE1NCBweTNrCis4NjM1NSAxOTRmMzBkYzQ3MDM0NTk0MTVkOWZjNDVkN2RlMGRhODFhNWMxMDMzIHB5M2sKKzg2MzU2IDk0ZDBjY2I2M2I0NjRjY2ZmNjAyNGE3NDc1OGNhMzUyNzJiNzJmZmQgcHkzaworODYzNTcgNzRmYTYzYWFiM2ZkNmM3OTdkMGVkYjI2MjY2ZWQzNTk5YThmMTNlMCBweTNrCis4NjM1OCA2ZjJhOTIxZDk3MjAzMTU4OTU3ZjRkZTE2ZWQ5Y2FhOTNmMTgwYTE3IHJlbGVhc2UzMS1tYWludAorODYzNTkgNDBlYjBjOWEzZjkyM2Y5OTRlODNjOGI1NGU1YmMxZDAzYmZlYjBmNiByZWxlYXNlMjctbWFpbnQKKzg2MzYwIDg2MThkZjZlY2FkZDliNjY2OTA3N2NmNjA5ZDM2ZTdkZmEyMGVjMGUgcHkzay1jZGVjaW1hbAorODYzNjEgZmU5Y2Y1MzUxMTkwMjdiN2YxYTdlMWE0NWJiN2VkYjg3NDBjZTJhNCBweTNrLWNkZWNpbWFsCis4NjM2MiA3MzY3MmU0NDVjYzkxMzIzYTE3MDYzNzMwM2JjMDlmMWRiZWFjYjQ1IHB5M2stY2RlY2ltYWwKKzg2MzYzIDdhODQwYjZkMmYyMjQ5NzVjOWU3NzdmMzdkYjA5ZGZjYzgzMWQzYTcgcHkzay1jZGVjaW1hbAorODYzNjQgNjAwMDU5MTRkZmM3NjBhODIzMDkzZjYwMWM5MDQwNDUyZjU3ZDhlMCBweTNrCis4NjM2NSA5YzA5ODU3YmRhMGI0OWQwM2Y4ZDBkODc1MWJmYzkxZWExZGEwODMwIHB5M2sKKzg2MzY2IGFmMjZiYzA5NDk1ZTNjZTE0YmY1MjliZDE1NmM0YTlhMGE5YjM3NDEgcHkzaworODYzNjcgMzEyYWQ4Zjk4ZmUzNzE3ZTVhOGE4N2JlYWRhZDI2MDhkZjhjZTRjOCBweTNrLWNkZWNpbWFsCis4NjM2OCBlMzNmMTZjYTllY2ZkZjY2N2Y0YmY1ZjRmODVmM2Y1MWFjZmYyMWViIHB5M2stY2RlY2ltYWwKKzg2MzY5IGVlZWJiNjIyZmQwOGY4NTAyMjUwZjAzMTJlZjk0MDQ4MTM4YzVlNTQgcHkzaworODYzNzAgMGFhOGFmNzkzNTlkNWI1MGM1OTQwY2ExZDhmZTI2ZmQwYTZkNGE1YyBweTNrCis4NjM3MSA4ZjVkMmI1Mjc2MzRhOGMxZjJlMzIyY2E0NmMzMDAwNDEwODU5NWY2IHB5M2sKKzg2MzcyIGJiOWU0N2M5OTFiNDE4MmZjYjJjMDM5MTBmNTY1YzMyMzRiNmZiMTYgcHkzaworODYzNzMgNjUzNjRjNDRlMjk1OGU4ZWVjN2Q4NzNjOGZiMGYyY2RjY2M2ZjJkMiByZWxlYXNlMzEtbWFpbnQKKzg2Mzc0IGQwZmMxMDY2MTdlMmE3MDU3NDgxODQ5YjY1YjM2MTgwOTJiZTBhOGIgcHkzaworODYzNzUgYzRkY2JlNTFjMmUzMzhjZTViYjdlNjk4YTBiMzRjMjFiNTUyNDRkNSBweTNrCis4NjM3NiA5ZmE1MjQ3OGIzMmI5ZmE3ZjljYWEyMThiOTQ4M2JlMDQ0MzlhNGVmIHB5M2sKKzg2Mzc3IDU1N2JiZjZiM2Q3MGFjODIxOWZhNmMwMDU2OWJmZDY2M2MzNzJlMzEgcHkzaworODYzNzggMmRkNTE5ZTU5OWNjMjNkN2Y1YWJjOWFiMTk1YWQ4ZTI5NDFiYjhhZSBweTNrCis4NjM3OSA0OTE5NjQyNmVkMmYxNDMyMjU4NTUwOTBmYjZhMGNlNmU2OThmNTRiIHB5M2stY2RlY2ltYWwKKzg2MzgwIDE2YTQ2YjZlNzA1NDRhMTQ5OTYzMGQxYmQ2NjRlMWM4ZjEyY2FjN2EgcHkzaworODYzODEgZjAwNTAyZjU3YjI4YWU4MGQ4NGYyZTljYjY0ZWEzMjQzYjdhNjgxNiByZWxlYXNlMzEtbWFpbnQKKzg2MzgyIDZhMjgxZjA0MGJiMTM0ZjIyYzVhMTgzZWRmOWZlYmM4MjIwN2ViYzEgcmVsZWFzZTI3LW1haW50Cis4NjM4MyA1NzQyOGUzMTIzYWNjMzQxYzY2NTNmZWU3Mjc3NDFlODJlYzY2MDIwIHB5M2sKKzg2Mzg0IDFiMTZiZDJiZjZjN2QwY2FiY2MzNTgxZTNjNzQ4Mjg3OTBkYWFiMDAgcmVsZWFzZTMxLW1haW50Cis4NjM4NSBhZTkyNmVjY2RkMGVkMGNhOTAyNDFkOWJmNDE1MmM2YjdlYzE0YzA0IHJlbGVhc2UyNy1tYWludAorODYzODYgMTgxN2ExNmQxZWFiNmE5NjBkZTc3YmJlNjdiNjI2ZjQ4M2RhZTUyNSByZWxlYXNlMzEtbWFpbnQKKzg2Mzg4IGViNGEzNDdiOThjMTZjZGMzYjFmMTlhMzQzOWNmOGYzZTk2NDhmZWQgcHkzaworODYzODkgMTgxN2I3MDg4ZDhkZmVkMWQwMGQ2ZjNkMjNhMzNkNzAxNmFkYjdlMyByZWxlYXNlMjctbWFpbnQKKzg2MzkwIGY5M2ZhYmRiODdhYjQxODMxMWVlNTBmMDNiYTFjNzg1M2VkZTNkYmUgcHkzaworODYzOTEgZTAyNzU4ZTU1MmU5MjU3ODhlZDdmNGMwZmU1ZTc2MDIxYTFmNzlmYSBweTNrCis4NjM5MiA5NjFjOWU4ODIxZGQ1ZGI1NWM1ZmQ3MjI2MDE1NDcxNTMzMjg4MWFiIHJlbGVhc2UzMS1tYWludAorODYzOTMgYTViMzlkODlkY2NiNzA2MGU4OTQ1NjczOTIwYjhiMDY0NDU4YTMyOCByZWxlYXNlMjctbWFpbnQKKzg2Mzk1IDA2Zjc2ZWYyN2Y4NmMwNGIyNWFiMTc4NGVmYzlkYzljZjA4OTc0NzggcHkzaworODYzOTYgZGVhNGY3NjQxOTQwZmUzZDlhMzM4MjBmMjQ2MjExYzkzOTBkYTYzNiByZWxlYXNlMzEtbWFpbnQKKzg2Mzk3IDc0YTU4OTRiOTUxMzRmMDg5ZWY1MzUyNTlhYzJjZmIzNmMzYmI1ZGYgcmVsZWFzZTI3LW1haW50Cis4NjM5OCA4ZTZhMWNkMWY0MmJmM2Y3MjAwZTFhNGEyMTU4OGE3MzQyMDczYzE3IHJlbGVhc2UzMS1tYWludAorODYzOTkgN2NlYzBkZDM5MWQ2OWY3MzZlM2I2ZmU1M2VlZTY1ODc2ZjBiMGNiOSBweTNrCis4NjQwMSAzMWIxYWEzMDMwNmM1NjNkMDY0OTJkYTA5NWVjZDA2OGM1NjJjZWU4IHJlbGVhc2UzMS1tYWludAorODY0MDIgZTU0NmY3NjA1Y2YxMjMwYWIwZDMzMzQ2NWViNTQ0Njg2OGFmMzZjNSBweTNrCis4NjQwMyBjNWUwNDlmZDgxNzBjOGE0YWNiMzExMTRkYWYzNWE2YTFhMDg5ODIxIHB5M2sKKzg2NDA0IGFhZmNkNWUwZmFmMWJmOWVjOGM4MDBhMTM4NGJiNGVlYTg4MTJkZjQgcHkzaworODY0MDUgNjdlYjNmNTNkZWViOTI5YzgzN2U1NWQ4ZDRhM2FjMjI2NmJjZWQwZCByZWxlYXNlMzEtbWFpbnQKKzg2NDA2IDViOWVjNWFjZGFjNDI3NGFkNDRkNmFmODBhYWQ1YThlNWRhMmZhMzYgcGVwLTMxNTEKKzg2NDA3IDc3OTM3N2YzMDc3ZDllMDYxZTY0ZjdiOWM0ZDRlYjZmODYyMGEwZDQgcGVwLTMxNTEKKzg2NDA4IDcyM2VkMWI3Nzg3MWJhMjFlNTQ2NTRkZjZkZWE2NDIxNmY3MWFjNTUgcGVwLTMxNTEKKzg2NDA5IGI1MjJhYmZkMmZkZTcwMDQ0YzIwMzc4Nzc4MzgwYzdlZTg4ODE1ZDMgcHkzaworODY0MTAgOThiZDNjYTFlZDg2MzZmOTZiNTEzYmE0NzQ0MWJkYjdkYjQ1MGVhNSBweTNrCis4NjQxMSBjNjlhYTA3MjgyYTg4YWU4MmNhNjc4ZGZiNTI3OGI0MjA2YjQ3ZDllIHJlbGVhc2UzMS1tYWludAorODY0MTIgMTJkYTVmYjgxMTM0MDE4ZmY4OGU3MzBkMjYzNDBiZjhlOTIxNGYzYiByZWxlYXNlMjctbWFpbnQKKzg2NDEzIDU1NzJiODY5NjdmZjc2ZTZiMjhkNTFmMTIyNjE5NDljZmRhNjA4ZWEgcHkzaworODY0MTQgODU3ZDlmZTYwMTY5ODI2M2MzZGNiNDYxM2Q0OWI2OGMyYzYxY2IxMyBweTNrCis4NjQxNSAxNjZjN2JlNzJlNzhhNjYyNTZkZjEwNTNiN2E1YTYyMDViMzEzYzZjIHJlbGVhc2UzMS1tYWludAorODY0MTYgZGYyZWJkZGMyOGM2MzJiMjJmMmJmODRlY2YyNzA5OWJhNmM1Y2YyZSByZWxlYXNlMjctbWFpbnQKKzg2NDE3IGMzZDg1ZDJhZTFjODdhM2Y5NjllYzlhODczOWVjY2E3YTg1YzdiYzYgcHkzaworODY0MTggMWE2NTI5MGU2ZDAzNjA1YzA2MTE3OTlmZDAzMWRiZmMxZTZkNGEwZCByZWxlYXNlMjctbWFpbnQKKzg2NDE5IDUwMzA3YTc5NTQyNDUyMDM4NjhlNjMwMDQyNWE2M2I5OTA3NGJjZjQgcHkzaworODY0MjAgMGExYTRjNDQ0MzgxNjgxZGVkYmI0MTkyZDFlNjEzNWE0ZGE0YTg4YiByZWxlYXNlMzEtbWFpbnQKKzg2NDIxIGJlNTBjOTFlNmRhNTNmNDFjYzU5NGZkNjQwODEwMWNjODVhYTg3NmEgcmVsZWFzZTI3LW1haW50Cis4NjQyMiA2MmFiMzllZmUxYzRiNDk1NmE5NzhhMGNkOGIwODA5MmViNjI5ZGYwIHB5M2sKKzg2NDIzIGVjNDIxMTJjMjEwMDliYTNlNzAyYzk3OGQ4NzYzNjRiMzdmZmUxMTYgcmVsZWFzZTMxLW1haW50Cis4NjQyNCA4ZWIxYzllODE4N2JkODUwNDE0NWRmMWIwYTQ5NDQ4YWE5NWI4ZjZmIHB5M2sKKzg2NDI1IGM5ZDNlMTJiY2Q0MmU2ZTlhOGY1ZTU2NzgzOTU3MGU1MzE2MmM1ZDUgcHkzaworODY0MjcgMDUwOWVjZGZmOGFlN2M5NTg1MjIzZTE4NDljNTM0ZTg3MWFmMzRhZCBweTNrCis4NjQyOCA1NmZiMWU3NzY3NDg2MTg0MmI3MzQyOGZjMWZjMTA3NzdlYzkxMjY3IHB5M2sKKzg2NDI5IDAzMjk2MzE2YTg5MjMxYzY4ZWY2YmFhYmQ4ZjdiNDhiNzBiYWNjNWIgcHkzaworODY0MzAgMGEyN2M5ZGI5YWM3OTMzMWEyZWI2ZDg4ZGU3N2IzNDZiYTRiZmM5ZCBweTNrCis4NjQzMSA4ZDY1MTY5NDlhNzFkMDc1ODU1Y2U5MmE2Yjk2ZTU5NTQyZjQyNDY5IHB5M2sKKzg2NDMyIDEyNjEwMmJhNzQ4ZjhmM2YyZDZkYmEzN2U1ODZhOWY2ZjRmMzM5MzEgcmVsZWFzZTI3LW1haW50Cis4NjQzMyA2YWE3NzgzZWEwZTllNmEzZGM1ZTVhOWU1OTdlYmU4NTM5NDgzMzNlIHJlbGVhc2UzMS1tYWludAorODY0MzQgZDJlZjg4ZTcxYjRhYzlmNzQ0ZWM5MTdmOTI2NDVjMGQxYzA4Yzg2NiByZWxlYXNlMjctbWFpbnQKKzg2NDM1IGUyZWY0N2JjMjgxZDQ5ODMyZjQ2YWM0OTQ0YmFjNzkzY2EzODY3OTggcHkzaworODY0MzYgY2U0MTI3ZWM1ZWViN2RhZmRlYjBjMDI2NTE1NGVmMDFmY2ZlN2JiYiByZWxlYXNlMjctbWFpbnQKKzg2NDM3IGY2ZTgxM2I0OGFmM2RhY2FlN2I2MmQyMmI5MDhlZGM0ZDA4NWEyODcgcmVsZWFzZTI3LW1haW50Cis4NjQzOCAzZDU0OGI3MWQwODI4MWNlNTgyNzM0Y2YyN2ZmMDE5MzExZmFjYzBkIHB5M2sKKzg2NDM5IGMyMWFlZjNmZjVlMmYzN2M2ZWUxZTA0N2JhZjczMTlhMzU4NGE2YjUgcmVsZWFzZTMxLW1haW50Cis4NjQ0MCBjYTBlZGE0MDAyMTQ4MTQyNmIwYWEwMTNkYTgxN2ExNzliZTc3ZTAzIHJlbGVhc2UyNy1tYWludAorODY0NDEgNWFjZTFkYTMyNzVlOWU4MGZlM2YxNjAzYjlmYzk2N2UxMjhhNDE5NSBweTNrCis4NjQ0MiAwMzI0NjI0NzllMGJkMzJhZmU2Nzg3NDFjNDM4YWE1ZDdjZGFiMjYyIHB5M2sKKzg2NDQzIDVmZDkxN2Q0MWM5YzJkMzdkZGQzZjg5ZDhkZDlmNTFkZGI5MTZjMDkgcHkzaworODY0NDQgY2FiYzc2MTE1NDc4NDk5ZjQ0MGRlN2RkODIyZjBlY2E0YWU3ZmE2NSBweTNrCis4NjQ0NSBhODNkOTg4OGEwZDlhYmEwN2QwNDZhZmJmYmE5YWExNjEwNTAwMzg2IHB5M2sKKzg2NDQ2IGQxMmI5OTM2MjlhMTY3ODE5YTNhOWI4NGMzYzMwMTIxOGYzZDk1ZjYgcHkzaworODY0NDcgNmJkZDMyY2I1NWE5YTJmMGZjODRhODIzZTc1MzdmMDBkODI4Y2UwZCByZWxlYXNlMzEtbWFpbnQKKzg2NDQ4IDRjNGZlNzEzOWM2OGUyMWJiZmE0ODIxMzRmNTQzNThhMzZkZDY0YjAgcHkzaworODY0NDkgYjExYTg0ZGU0NDkyNWRjYjk2MjdlMWNjMTI1OWIwNzYxNzZhNjZjOCBweTNrCis4NjQ1MCBjNmIyZjQxNzgzMGVhYjQ1NjVkOGJiZTc4NTMxMzY1MGE4YjZjNjY0IHB5M2sKKzg2NDUxIGQ5MmE1Yjg1MGY1ZTU2ODA4YmVkYzAxNzIzOTA2ZWQ2NGM1ZTZlMmUgcHkzaworODY0NTIgZDllNmI4YTc3MDcwNTJiZDQwOWVkNDZmODc0Njc1NmVmNTM1OWQxMiBweTNrCis4NjQ1MyBkMThlOWQ3MWYzNjlkODIxMWY2YWM4NzI1MmM2ZDMyMTFmOWJkMDlmIHJlbGVhc2UzMS1tYWludAorODY0NTQgZDVlZTk2ZTdhY2ViYjNmYjUyMGFiMzgzODE5YTRmZDEwYzZhNDU3YiByZWxlYXNlMzEtbWFpbnQKKzg2NDU1IDYzZDlmMDBmZWEwNzMwYzFjNDM3YTUwZjY0YTQyYjc3OTJiZGNiZmIgcmVsZWFzZTI3LW1haW50Cis4NjQ1NiA0ZDQ1YTRhZjMyYTk2ZjcxOGMxM2Y3OTI3NDJlMjYzMDEzM2JjM2FhIHJlbGVhc2UyNy1tYWludAorODY0NTkgNTAyMmU1YjczYWQxOTdjMTY2NzY1Y2U3YzBhMjA0NjVhNTQxYzM3MiByZWxlYXNlMjctbWFpbnQKKzg2NDYwIGNlMzg4ZmIxYmUwMWY5MjE5YjVmODQwNjZjOTk1MzFlMWMzNGQyMjMgcmVsZWFzZTMxLW1haW50Cis4NjQ2MSAwZjM5ODE4OGM3ZjYwNjEwMDI0OWJkMGY5M2M0YmU1NDU2YTg5MzI3IHJlbGVhc2UzMS1tYWludAorODY0NjIgYjdkMDJhZTQ1ZDE1MzUxNzQ4Yzg0ZjU4OGNhZmQ5ZjJlODBiMGRlZiByZWxlYXNlMjctbWFpbnQKKzg2NDYzIGZjYWJlNDdmZTFkZTUwNGYwM2ViY2Y2ZWFjZDQzMjk3YWI5NzZjNzAgcHkzaworODY0NjUgMjRmYzhjODUyZDEzYTQ3NjU2NTFiZTc2ODg2MjI4Yjc5Y2U1ODJjNSByZWxlYXNlMzEtbWFpbnQKKzg2NDY2IGI0NWVhYmM3YzAwNDZjNTE3YzQxNGIxZDliMGFkNzg4NDcwNmQ3YTAgcmVsZWFzZTI3LW1haW50Cis4NjQ2NyBiYTAxNDU0M2VkMmMyMzVjNjY0ZmVhNGEyYTc1N2NjOTUxMGU5NDYxIHB5M2sKKzg2NDY4IDY4MzMyNzEzNzM2NTE0Njk4Mjc5ZGIyMTRiZTYzODBlNGEwOGMxYWEgcHkzay1jZGVjaW1hbAorODY0NjkgNjI4OTU5ZmI0MGMzMzlhNjkyMWZlYjYzNzQ2NTMyNjk2NTI4NmNhNyBweTNrLWNkZWNpbWFsCis4NjQ3MCBlNDVkMGJiNzgwZGNiM2NmMjBhYWZkMjJkMTE0N2NlZjNmNTBmYjc1IHB5M2stY2RlY2ltYWwKKzg2NDcxIGY3MjNhYTE1N2E4MmQ5NzY3Mjg5ZTg2MjU0NjhmMmM0OThlNmIzYzkgcHkzay1jZGVjaW1hbAorODY0NzIgZGEwM2M2NTA1MjQwZWFlYmUyMTkwZjgwNTRiOWFhOTVkNjNiZTY2OCBweTNrLWNkZWNpbWFsCis4NjQ3MyA2OWM5MTMxYWEzMjI0ZTc2N2Q4ZDc2MjE2ZDlmMjQ3YjBiNWFlOTI3IHB5M2stY2RlY2ltYWwKKzg2NDc0IDMzNTgyNzEwZTAxNDFmZWMwNGE5YzZiOGMzNmJiYmYzODM4ZjI0NjYgcmVsZWFzZTMxLW1haW50Cis4NjQ3NyA5OGM4ZTc5M2MwYjNkY2NlZmE0ZTViZTBiZjE4NmI0YWI4YjRkMDllIHB5M2stY2RlY2ltYWwKKzg2NDc4IDBkZjZhYzYyMjcyYmE5NWQyMmIzZTVjODI3NzZlMTc2MDQ4ZDJmM2MgcHkzaworODY0NzkgNGI4Y2VkNWZlZmI3NDZiMzgzM2I2ODlkZGI3OWY2YzU3YTM5N2FiMiBweTNrCis4NjQ4MCAzNDYyN2RjYTIxOTZlZDhjMzIzNjNhOWVhYTBlOTA4Y2E3MGZiZDBkIHB5M2sKKzg2NDgxIDUyZmU2MDIxNmU4OTMyMzIyMTdhZGI5NzM4MWQyYzJjMjk4MTIwZDAgcmVsZWFzZTMxLW1haW50Cis4NjQ4NCBhZTY2MTBjYTkwYTE5Y2Y2ODMxOWMxMGY1NTI0OWNjOTg5MGMzZWY3IHB5M2sKKzg2NDg1IDU1YWJjMDk2NWU5ZDc2NWQzMDMzNmFjYTI5YjIwYWRiNWFkZDBmMzIgcHkzaworODY0ODYgYmIxMjM3NGM4ZGM2ZTdhYzE1MTAwZjAwNzM3MDM1NzYxNTFiZGQ0OSBweTNrCis4NjQ4NyBjNGZlNGIxMzAwZDU3ODk1MzE1MGRkZjFiNzNhNGZjMjc2OWMzYWEwIHB5M2sKKzg2NDg4IGVmMWRiN2Y1YzhhOWYyMTA1NWIzZjM4OTdjYmRiZWI0OWFmNDdmMGMgcHkzaworODY0ODkgZmY2YjJiZjc1ZDgxMjY3MWFkY2I3NTllMDU5YmQxMzkxOGM2NmEyZCByZWxlYXNlMzEtbWFpbnQKKzg2NDkwIDQ2NzlmYmRmYzgxN2Y2NmIxNWE2MzBjYjQ2ZGQxY2YxZTkwM2RlMjIgcmVsZWFzZTI3LW1haW50Cis4NjQ5MSA1ODZhOTJjZjRjYzdmNDczNThhYjk5OGM5NDlkMDYyZWY3NTJjOThlIHB5M2sKKzg2NDkyIGM5ZmIzMGZkMWYwYTVjYWZkMjJlMjZhYTRhMTkxZmQzMDcyZGU4NzAgcHkzaworODY0OTMgMGQxYjY2MjMwMjQ3YzU1Y2UyOGJhZjA0MzQ4MDEwMGY5YTQ3MDRmMyBweTNrCis4NjQ5NSA1MmJmNzlmZDZkNmM2ZjRiNmE2MjliMzJhMjQ4OGNlY2YyYzJlNDVmIHB5M2stY2RlY2ltYWwKKzg2NDk2IGQ1NGM4ZjE2YzUxYzJiZjVmZmY0MmYyMjUzYzI4MzRlZTJhNWE0ZjAgcHkzay1jZGVjaW1hbAorODY0OTcgYmQ2OGNlZjRmMWVlMDk4OGRlMzk5ZGRkYzgzM2I2OWQzMjgyYzc2OSBweTNrLWNkZWNpbWFsCis4NjQ5OCA3ODI2ZDkwN2I3NjViZDNlMjY2ODE0MzRkNzJhNmVkYjQ3ZWU1MTFkIHB5M2sKKzg2NDk5IGQ4Y2M5NWQ3ZGU2MmExZmJlNWViZmU2N2E1MzVkMzBiMDU3N2YwODMgcHkzaworODY1MDAgNzVhODJmZTI3NGE3Yzg2ZmU3YTU2NjJhZTIzNDgwMDIxNDdiYTkxNiBweTNrCis4NjUwMSAzNzkwMjk3MTRlMjQ1OTg5NzEwNmEyMzU2NmNiODA4NWNkODdlMDNhIHB5M2sKKzg2NTAyIDk0YmJjZWNkOTU4MjU3ZGIwYTFkMjMwNWYzNzA1ZjA2ODQyYzFlZWQgcmVsZWFzZTMxLW1haW50Cis4NjUwMyA1MmU1MTk5YjY1MTMzZTA1NjNjYjAxYzI3MTQ1ZGE0MDI0MTRhYTEzIHJlbGVhc2UyNy1tYWludAorODY1MDQgYjQxNDA0YTNmN2Q0MTliMWFmMjRjNGM0ODc2YzhjNjY0NGIxZjM2NSBweTNrCis4NjUwNSA2NmU4ZDM1ZDcxZmRlYWZiNzgxYTkyOTU3ZTFhMTBiZDNjZjgzOWM3IHJlbGVhc2UzMS1tYWludAorODY1MDYgY2RjMzlmNmJlYmYxMGJiZGY3NTUyZGUxMjZhMjQ2ZTkyMDQ2OTY2MyBweTNrCis4NjUwNyBhZjEzZmI2ZmIzZGY3ZTRhNmQ5ZjViZGI2MTliZGZhY2JkOTJkYjQ0IHB5M2sKKzg2NTA4IDE1YmQ1MGVlMmM0YzNlOTg2OGFjYzljNmM2NTMwMWJlYWYxNDRiZmYgcHkzaworODY1MDkgODA1YzI4ZGQ2N2IzZTIxYjA3NzI4MWU0YzliNTI2MzlmNDhmNzdkNiBweTNrCis4NjUxMCA0ODNiYmViYzU3YmZmYjVmNjk0MjFmZGZhNGFjMmFiNjc5ZTcyMmI0IHB5M2sKKzg2NTExIGY5ZmI5MmVhNDg1MDI5MjgwNzg0N2YwMWE4NWVjYmIzNDY3NDk5M2QgcHkzaworODY1MTIgZTEwNWU2YWM4NTM2NTE0ZDY5MzYzOGNhM2FjZTQ5Y2E2NTQ0NTIwZCByZWxlYXNlMjctbWFpbnQKKzg2NTEzIDI3ZTMyZDUyMDA1NTYwODk3NTI1Mzk2ZGU2NmVlMjE2MjFlMGFjYmMgcHkzaworODY1MTQgNWJjNDYzYjA0YzgzMzNkMzFmNzRhNmYzNTA4MjVlYzU3ZTk2MWU1NiBweTNrCis4NjUxNSAwMTk0MjFhODllZjU5ZGMwYjE2ZmE2OTNkNDhkYzBlNGZjNTFiMTQ5IHJlbGVhc2UzMS1tYWludAorODY1MTYgOGI2ZmFlYTMwNTczNDBkNTZmZWY5ZTU0ZGM4NzliZGI5NWI0NWRjMyBweTNrCis4NjUxNyAyOTc4MTYwZjQ5MTQ5NWJiMTM1MmEwYTAwZDIwZGFiYWY0MTE2NmU0IHB5M2sKKzg2NTE4IDgyYjE2MWZhMjgxODQxMjRkOTY3ZWNlYmJjYjEzOTViNTcwMTJlMmUgcHkzay1jZGVjaW1hbAorODY1MTkgZjBkZGM5MWJhZWMwNGE0NzI5ZmI0YzdlMzQ1ODczNThiMThiZjcwNyBweTNrLWNkZWNpbWFsCis4NjUyMCBiYjI3NjkzODljNTMxNDczZTBlOWM4YzE0N2ZkOWRiYzYyYTkxZmY5IHB5M2sKKzg2NTIxIDM3OGQ0ZjRlOWNiNTBkOGZkMjI3OTRkZGIyYzQ5OWVhNDRlMDcyNTIgcHkzaworODY1MjIgZmI3ZGRmMWQzNTk0MDI5MjcwM2U3MDFkZTg2N2E1YzFmNTAxODQ2NCByZWxlYXNlMzEtbWFpbnQKKzg2NTIzIDkzMmEzZmZhNGU1NjExZWU5NzA2YTJiMTZiMWY3YTQxZTJhNmVhNmMgcHkzaworODY1MjQgYTAxOWJiNGZmYjUwZTU1NzU2OWQ5YTJhNmVlOGIxY2U1YTQ0MWM5ZSByZWxlYXNlMzEtbWFpbnQKKzg2NTI1IDFkYWE0MGI0MTIxMTcyNjhlNGQyMDQyNWUwYmE3ZWJmOTA2ZTE2OWQgcHkzaworODY1MjYgYWUzMTVhN2Y2MmQyNzgxMWYzZDM3OTExYTNjMTcwMTA5ZGNjNTkxNyBweTNrCis4NjUyNyA2N2FiNzQwMmUwZGVjZGViM2FmNDMzMmU2ZTE2MjdhNzZkZjU2MTM1IHJlbGVhc2UzMS1tYWludAorODY1MjggMjdjNTQ1M2ExNDdmNTExY2MyOGUzODkwNzQyZDVhNDMxYjNiOTYwNiBweTNrCis4NjUyOSBiODQyMGU3Njc2MzhlNTYyNmU0OTUzOTY2OGVmZTAyNTkwZDdkNjM1IHJlbGVhc2UzMS1tYWludAorODY1MzAgMGNjYTczYjBhNWJmMDA4Nzc3ZWY5NDU5NjEyMDNmZjA0ZWRhYjEzYyBweTNrCis4NjUzMyBhMWRhODI0M2I2M2U2YWMyN2QwMjY3N2QwNGQ5ZTU4MTViNTJhZWNhIHB5M2sKKzg2NTM0IDQyMDMwMTQwMDQwM2YwZTIzOWE3YTc3MjljNjQ3ZWE5N2Y2OTc1ODQgcmVsZWFzZTMxLW1haW50Cis4NjUzNSBlOTgzZWIyMjI5ZGZkYTBlN2NjYzE0MDdjYjVkZjVlMDY2MzhlYWZkIHB5M2sKKzg2NTM2IDRiM2E1NTAyMDAyZDIxODkwMGZlOTcxNDFlNjY5MWZjY2Y5ZDVlNDIgcmVsZWFzZTI3LW1haW50Cis4NjUzNyBkOWM4OTA3MjA0NGU0OGQ3NWJkNDg5MWE5NjQxNTE1Yjg1YWI3ZmUwIHB5M2sKKzg2NTM4IGUzNzM0NGE4ZjBjOTFjMzk0MTI3MjdiYWZkNTY4OTc0N2I0OGMzMTAgcHkzaworODY1MzkgMzUwODk4ZTA5NWFhNmZiY2YwNWVmOWJiOGRjNjQzNDYxODgwY2Q0NSByZWxlYXNlMzEtbWFpbnQKKzg2NTQwIGI5YmU0NWY0MzNiOTJkYjg1MzAwZTAzOTMyMGQwNDkzOTJlMmMzMDggcHkzaworODY1NDEgNTFmNzJjNWZlMjhlNGJmMWFjODZjODA5Y2Q0MTk2OGIyNzRmNzhmYiByZWxlYXNlMzEtbWFpbnQKKzg2NTQyIGQ0ZjVlMjdlZDE4NmI2ZGIzNmFkZWM3YmJiZGQwYzg4ZjIxMWIzMWEgcHkzaworODY1NDMgNDU3MmQyOGRiYWM3MzNhM2Q3MTFmYTQ3ZGJhYzM5ZjgxYWE0OTc2YiByZWxlYXNlMzEtbWFpbnQKKzg2NTQ0IGNkZGNiZTNiZjU3YTJlODM3OTdjY2Q1NDIxNjc4NDE2NjIyZTE4YTYgcHkzaworODY1NDUgYzY0ZWQ2ZGE0OGI5YWIzOGI1OTI2MzgzZDAwZjA1YWNiMjA0N2EzOSBweTNrCis4NjU0NiBkMjJhYTVhZTc3NjI1Zjc2OWU3OWQ5NjYwNTk2NGEwMzYyNDQ1NzRjIHJlbGVhc2UzMS1tYWludAorODY1NDcgNWVkMzdjMmMwNTc0MWRlZTlhYjEwZjY5OGJhNTYyNDQyYWNkYmJlZSBweTNrCis4NjU0OCBlOWFjM2YzMTExOTk1NzgxZmI5NTYxYWI1YjFiY2YwY2Q4OTZhMWQwIHB5M2sKKzg2NTQ5IDg0YTMwNWUyZTU0ODg5MzE3NGM2YTUzMGIwMzkxMDM4ZWM0ZjQzODAgcHkzaworODY1NTAgNGI0YzcyMTMyYWI2ZWIyYjM1Y2RiYTlhZWU5ZTdjM2FhZDAxMjY2ZCBweTNrCis4NjU1MSBlNTMwZmM3NjgyYmYyOTY0YmE2OTUwNDMxYjg3NDRmZmJkYWViMTI0IHB5M2sKKzg2NTUyIDQwOTcwZTg5ZTYwYWJhMzlmNDc1MjU0MzUzM2U2MDcxOTNjODBkYzAgcHkzaworODY1NTMgODI1ZTQ4MGM5MzBkYTEwMzFlYzc5MTdkMDljNDRmMDEyMzlhYjJiNiBweTNrCis4NjU1NCBmMDc5NjQzOTE1YjUzZTljZjAxOGY2MzgzYWY5Mzg4N2I4ZjdjOTJmIHJlbGVhc2UyNy1tYWludAorODY1NTUgMjQ1ZjZjYTNiMjMzMGZlYjRhMjc4MWJkYzQyNzYwYjJhOTE4ZGM1NCBweTNrCis4NjU1NiA1M2RkNzAwYTM1YjZmMmZlNjc3MDA3OTg0MTExZWRlYzIxZWFkNmU3IHJlbGVhc2UyNy1tYWludAorODY1NTcgZGRiM2JjOGU2OTkwZGY0ZjFhNjE1NjRkMWZhYmJmMzMxNzIzNGZlMyByZWxlYXNlMzEtbWFpbnQKKzg2NTU4IDE5YjcxMWE3N2VmZjFiNDM3ZDY2NDY0YjAwZmVjOTA5NDgxYWJjMmIgcmVsZWFzZTI3LW1haW50Cis4NjU1OSAyZGQ1MzkyNWYwMDcxZGQ2NWU4ZTEzMzA3YzQ4MjAxZDcyZDI1MWVjIHJlbGVhc2UyNy1tYWludAorODY1NjAgNWQ1NWM1YmI4YWIxYzQwNTRkNzY0MDYyMWFmMWVlNDJlZTQyNWY4ZSByZWxlYXNlMzEtbWFpbnQKKzg2NTYxIGI0NmJjZTg3ZDJhZjAxZTQ1ODk4MjRkOWZmOTJkMzM5MTc4MmNhN2QgcHkzaworODY1NjIgZGViYzc2NjQxOTEyMmFmNjA4YTc2YTU3MDg4NTBhOTk0MWJmZjY4ZiBweTNrCis4NjU2NCA0MGIwYzY5YmIyYmQ3NTA2ZjU4ZGU4YzllOTAwYzMwOTE3MmNhMDIxIHB5M2sKKzg2NTY1IGMyMGFkZTYzZjNkYmNhMWI4YTI3ODI0ZmJlYzYwNjExN2M3Y2I2NTggcHkzaworODY1NjYgNGVkNjEwMWY4YWIyNTU1NDNjYjc1Y2ZjYzAzNWQ5Y2Y3NjY5NGI0OSBweTNrCis4NjU2NyA3ZjMyYzVmNTZkMWExMThkN2UwMzcwMjkzZjVkYTJmNWFjNDA4OTcyIHB5M2sKKzg2NTY4IGExOTM2ZmE2MzU4MGQ2MmM5MzFmNTIzMDQ5ODUyODk4OTlmMTg1ZTcgcmVsZWFzZTMxLW1haW50Cis4NjU2OSA1OWU1NmI4MmU2Y2IyY2ZiNTk1MzI5N2U1YjEyNWExZGQzODc5MjNlIHJlbGVhc2UyNy1tYWludAorODY1NzAgNGUyZGE1MjdmNWIxZGIxYWZlMTg0ODFjYTZmNWFhMzZjZWY0YTUwZiBweTNrCis4NjU3MSBhZWY4ZjE4NTBkMjRkNzBkYmUyMjE5N2JlMDc1M2Q5MzE5MTY4NmZmIHB5M2sKKzg2NTcyIDc4YTM4MGQ1N2ZlYTE5NGFjMzI0ZGY5ODViYWE5YTcwMWZhNThhNDMgcHkzaworODY1NzMgNTFlMWNiZGQ4ZmQyODU2ZGZlYTNiNjQ4MGU0Y2M3YjU4YTNjM2ViZCBweTNrCis4NjU3NCAyYWU0ZWVkNGEzYjM3ODdlODQ5YWZjOGZjZDZjNmYwNDU3ODU3YTcxIHB5M2sKKzg2NTc1IDgzOGY2OTQ4ZGViOGI2ZjgwNTY4ZmQ4OWU3MTAwZjJlMTM2YmFiMjAgcHkzaworODY1NzYgM2QyZjU1Y2NkNjYwZWM2MTUzNWFiNjRjZGQzZmE2YjE3OGQ5N2NiYSBweTNrCis4NjU3NyA4MGI0OGEzYTI0NzM0YzUzODhmMTg4MWJhNzU4ZTEyNTFjYjk3MmUyIHB5M2sKKzg2NTc4IGQ1NzE4MWFjYWY4YzQzZDY0M2EzOGVmZGIxNDc5YTcyN2NjMzI3MzggcHkzaworODY1NzkgMWVmNDY1MWZlZWY4OWI4MDJhY2Q3M2U1M2MzOTBiMTJiZDVhMTM4NiBweTNrCis4NjU4MCA0MWQ1OGJlYzNlMDhiNDVhMzgwMjQ0NTMzZWQ5OWU4NTZhNzc5Yzg0IHB5M2sKKzg2NTgxIDRlNTEyYTk0OWI2MGMwNDgwMTU3NDdjNTg0Mjk2Zjk4NGVhYWU5NjAgcmVsZWFzZTMxLW1haW50Cis4NjU4MiBhN2MyMjEwN2FlY2QwNDU3MmJmMDRjMzg0Y2MwZWYxNjA4NjA0OTgxIHJlbGVhc2UyNy1tYWludAorODY1ODMgNjZkNDBiNmEyYmIxYWQ4MGRiZjhkNDUyYzY2NTJlNTljOTg0ZWU1NiBweTNrCis4NjU4NCAzYTBlNzAwMGRjOGY5ZDcwOGFhNWVhYjUxNjFkNjQ3YjcxMWJmYzNlIHB5M2sKKzg2NTg1IGVhODM1NWNkZGQ5ZjgxOTdiZjg1Nzg3MjMwNGM1YjcyMjA1OTMxYjQgcHkzaworODY1ODYgYmM5ZGM3ZTdmMzczZGFjNmQ1NTE2Y2I4MjRkYjQ5YjYzMDg4ZTUxOSByZWxlYXNlMjctbWFpbnQKKzg2NTg3IDNjOWIxYzA1YmE5ZWM1N2JkNGMxYTljMzk3YmM4OTJjOWYwNGI2ODEgcHkzaworODY1ODggN2NkYmRiZjM0ODBiOGYwMmI5ZDA5N2Y4YTBkZTVhMjU2ZDA4MmJkOCByZWxlYXNlMzEtbWFpbnQKKzg2NTg5IGM0MDRjMmEzNDZhNTg0NGI1YTk1OGRiMDJlMzY3MDBjNDA3MGY3M2YgcmVsZWFzZTI3LW1haW50Cis4NjU5MCA2MzFkODQ0YmJjNDU5MzJkNTg4ZjU0YjY3Yjk0YmZkZTZkNTM3MzhiIHJlbGVhc2UyNy1tYWludAorODY1OTEgOTY1Zjg1OWU2MGFmZjkxNzY4ZWY2ZDYzMTdjZjljYjczYmM3MDgzNiByZWxlYXNlMjctbWFpbnQKKzg2NTkyIDUwNzUxODIyZjYyMjMwNjY1YWExZmM0OWIyN2MzNWZhYjA2ODIyMGEgcHkzaworODY1OTMgYzA2ZWQyNWU2OWI4MzMyN2Q1YjVjOWRhYjU4YzRjYzEyYzc2M2M0YSBweTNrCis4NjU5NCA0ZjI5YWE4ZjlmNTRiMWEyNWQ2OWI0MGZlZTkxZjI4YjljNTMwNGY0IHB5M2sKKzg2NTk1IDQzZTUwYmI5MjNhOTZlZWFhNThlMTljOTkwZjk0NjU0MWU5ZmY1MjYgcHkzaworODY1OTYgOWZlNzZjMjZlYTlmZTdiZjNiZWIzNGZkZDEyOTljYjE4MGVjNmVhOCBweTNrCis4NjU5NyBkZWRmNzE5YjI2YTM3NGQyOTI0YTJiMDBhNmQzN2IyNGRhOWVjNjI5IHBlcC0wMzg0Cis4NjU5OCAxMjkzZjgxOWNlMzY2MjJlNGFjMzc2NTgzMzRkNWIyMDVjMzQ5ODk0IHB5M2sKKzg2NTk5IDUzYmUxYTY3ZTk2NGFlY2MzOTM5NGFiNGEwZmYzMjg4MTVjZWJlODggcGVwLTAzODQKKzg2NjAwIDEzYTJhNWRlMWI3ZjZlYmM1NTMwNmM1NmM5MTU5NDA5MTk4OWJlY2IgcGVwLTAzODQKKzg2NjAxIDg2ZTNmNjMyNGU2NTAyMzUwZTFlMWJjYzY0NDM5NGE0ZmQwYTBmZjIgcHkzaworODY2MDIgNDRiMzEyMTlhZWNkMzMyZWJkMmNlYjJjOWJlMjI2NDgwZGU3Yzk1MyByZWxlYXNlMjctbWFpbnQKKzg2NjAzIDY3MWU2YmQxODExNDNkMjg0NmRhYzEyODA1YTAwMWJkYzNkY2NhYmMgcHkzaworODY2MDQgYjZkN2M1YjZmMWYyMDEzYjAxNDFmNWM1YjJlZGJmMTdjMWEzZGJjNyByZWxlYXNlMzEtbWFpbnQKKzg2NjA1IGY1ZGI1Mzc4MzkyMmQyNzY3Nzc4Mzk4OGYyYjlhYzdiNGVmNzAwMzkgcHkzaworODY2MDYgZWVkNDJkMjgzNTYyMmRmOGFhNDk0NTBiNTY3ZjQ5YjZlMDliZGEzYyByZWxlYXNlMzEtbWFpbnQKKzg2NjA3IDZlYWJmOGMxYTc1YzdlNTIzMmNkYWRmYjJiNWYxODgyNDE4ZjA1OGIgcHkzaworODY2MDggOWZlYzZhYmNhN2Q3Njc2MjI2MmVmZDY0YTY4ODRiZWFjMGY0NWU1YiBweTNrCis4NjYwOSA0YWUyZDAxMWE4MGJhNWNlYjRhNDUzZGFkZDYyZGVjNjljYzE4MmI2IHJlbGVhc2UyNy1tYWludAorODY2MTAgNTkzMDdhYTdkMmZlNjdhMDgxYWU0ZWY3MTMzNzE3YzRkODNhMmEyZCBweTNrCis4NjYxMSA0MzM1NjkzZGYyNTk3OWQ5YmY4NzUyMGJhMDc3ZTFiOWI1NjJiY2Q0IHB5M2sKKzg2NjEyIDFjZGM5YzFjNDMwZTg1YzViNjUzYWQxMjYzZDQxZjgxN2Y0MTBmM2YgcmVsZWFzZTMxLW1haW50Cis4NjYxMyA3YWVjMjM4NjgyODc3YjM5YjJjNDYyODQzMjNkNzQ4ZGFhNzdjMzY4IHJlbGVhc2UyNy1tYWludAorODY2MTQgMTBhMWMzOTk4NjRlNDYzYmQwNzQxN2IyM2UwM2FlODVmZWE2ZGM2MCBweTNrCis4NjYxNSBjZmQ1MzgzMTFiNmZhNjBmYmM5MzU4MzZhNGVhNDA3ZDllNTE5ODZjIHJlbGVhc2UzMS1tYWludAorODY2MTYgNDhmZGMyZDhmODk2ZWM3NGQ1MDc5MjYyOTg3NmY5Nzg5ZmY2NjA0NCByZWxlYXNlMjctbWFpbnQKKzg2NjE3IDdhZjE5ZTk5ZDJmODVlYjk3Y2UwZGQzYzc0NzI3MDI0NTkwNTU2YzkgcHkzaworODY2MTggMjM4Y2FhZjY4NTJiNzMzZWYwNTBkMTY2OWFmOTg3N2E3MmQxMzFkYyBweTNrCis4NjYxOSBhZGQ3ZTk3MjFmODA5NDcxMzYxZWI0YWI0YTNjNTc5ODAxOGE1MWRlIHB5M2sKKzg2NjIwIGUwMTIzNzgzMWFkMmZhZDY5YzVmZGJkMTI0YjkwNzFmMjBkOGQ1MDEgcHkzaworODY2MjEgMzk4YjIxODIxZDFiNGEwMGE0NDdmMmMzMjZiMmNlYTJiMDQ0NWMyNSBweTNrCis4NjYyMiAyNTc1MTJiOTdmODIzZDNlNzAwYWZhYmI4NzliZjAwZjkwZGQ1NzYyIHB5M2sKKzg2NjIzIDFiNDQ4ZmQ3ZTFhMjQ4YzQ5MzIxNTdhZjE0MmE4ZjI3ZjFhNmQ1OTAgcHkzaworODY2MjQgYWNkOTYyODI0ODE5MTQ4OWUwNjMxYjhhYjM5ZGE1Nzc1NmFiZmM1YiBweTNrCis4NjYyNSA0NTlhNjkwMjVkOWMxNmJkYjlhODQyNjAzMjIyODliNjI4OTg3NTQxIHB5M2sKKzg2NjI2IDYyMTgyYWJjMTE2YWJhYzU1ZThmZmQ3NmIzYzRkMTZhMmNhMGI3MjMgcHkzaworODY2MjcgMDdjYWRjMmM2NDM4Mjk5ZmUzYzRlMmRhYTFiZTZiODY5NWQ5Y2YzYiByZWxlYXNlMzEtbWFpbnQKKzg2NjI4IDgzN2FkNTg1NGZjOTNiNDBjNTE0MjkyZDBmYmJmNjkyM2MwM2U1MTggcmVsZWFzZTI3LW1haW50Cis4NjYyOSAyYmViMjUzNjkyODk3NTI2NzQzNDJjMGVhODc1ZDc5OWMwZmNlNTIxIHJlbGVhc2UzMS1tYWludAorODY2MzAgNWMwNmQzZDFiOWM5MGQ1MDM4ZjdlYjJlZDNhOGNiYmM4YzkxOTZmMCBweTNrCis4NjYzMSA1NDRiNDUzZTYwYTU4ZWVjMGU2YTQyODM0ZDcwNmNhMDNiZTFjODYyIHB5M2sKKzg2NjMyIDIwNjgyNTViNGRhMDBhMThmYzZjYmI2YWZjOGNiYjFlOTA1ZTU4NDYgcHkzaworODY2MzMgZmRmYzZkY2E4MDQ4M2IzZDEzZmNlNWNjYjZkYzE5MjQwZTQ3M2Q1MiBweTNrCis4NjYzNCBkMjlhNjdjMjY2MDBjNzY4MzRiOTBjNjE3OGY2ZjViMmM4MjUzYjA5IHB5M2sKKzg2NjM1IDlhMGMyNDAxYzZhNmUxZjAxYmNlNzk1MjEzMGZkNTUzMTk2NjEzOGUgcHkzaworODY2MzYgZjU0NzY4YTVlMmY1NWRjNmUxZTc3OTIwMjA1NDc0YmEwMDQzMDc0OCBweTNrCis4NjYzNyA2MTRjODQ2NzBjNjNkMzVhMGYyN2E4ODhkODY5ODUzOTA0OTNmZTdkIHJlbGVhc2UyNy1tYWludAorODY2MzggYzEzZjg5ODBjYTdmZGZiMzhjNDViNDA2ZjhhOTMzOTVhODc5NGRiMyBweTNrCis4NjYzOSBmOGNlYjZhZmQ3YTkxYWFjOWE3OTc5OTE1OWI5YjZkY2Y0Mzk1MzIyIHB5M2sKKzg2NjQwIDk3MTcxNTNkNTU4ZDA0OWU0YzM1MjE1NWU5OWU4NzFkYzcxOGM2ZmIgcHkzaworODY2NDEgNjFkMWVjMzA3YmIwZGI0OTFlYjZjYmIxYjIwZTJhYjdlODE2OWM3NiBweTNrCis4NjY0MiAzMjJhYTNlODI3NjhiZTNiYzdjMjg2YTg3YjVlMThiZjViNzM3NDIwIHB5M2sKKzg2NjQzIDE3OWRjNGMzNDcwZjNjZjc2ZGZiOWM5OGMyNzkxMTA3YmNhNTQ3NDMgcmVsZWFzZTMxLW1haW50Cis4NjY0NCA5NDNhODY0OTkwMGRmZjk4NTUxZWMyMjU1NTRmZjZlYTg5YTNhMjg1IHJlbGVhc2UyNy1tYWludAorODY2NDUgZWVkMzI4OGRlZDg5NWZiMmQ4OWU0YWM0ZTk5NWI1MjBkZWI3ZGU4OSBweTNrCis4NjY0NiBhNzg0NDU3ZTAwMGU1YzNjOTg1Nzk2NTIzNDQ4MmI2YzhhZWZlMjc4IHB5M2sKKzg2NjQ3IDFlZjhlOWE3NWZlZjNjNzIyMzA1ZjY0OGI3YjQ4NGVlNjQ0ODEwYjEgcHkzaworODY2NDggMjJiY2RhYzE4MWJjYTkxMWJlODAxYWM2YTQ1ZDE0ZjQ0NGRlNmQ0MCBweTNrCis4NjY0OSAxZWMwNTgwZDlkOWQ3YjY3ODlmMjlkYjg4MTI4Y2Q1ZGY3MWUzN2UwIHB5M2sKKzg2NjUwIDViYThiZmNlN2VjMWQ2ZGMwNjEzNWI0OTcxZmZiMDBkMjJjNWQwYzIgcHkzaworODY2NTEgOGJhMTZhYWJkNTY0NmI3Mjg2NTg4ZTE5YWRhYTBkZTRkMDZiZGExNSBweTNrCis4NjY1MiA0ODVkY2ZmYzg4YjQ1ZTE2ODVlYzFjZmM2ODdjZTY0Y2QwMzViMzc1IHJlbGVhc2UzMS1tYWludAorODY2NTMgZjQ3ZmNkNWI1MDFkZWMxYTgyZGIzZjhlNDQ0NTQ5NGE2YjdkZjU0ZCByZWxlYXNlMjctbWFpbnQKKzg2NjU0IDdiMTRmMWZmNjAyYmI1MDhkZDU1NDlhOTc0MTRlNzFiMzI5OWE5NzYgcHkzaworODY2NTUgYWRkOGEwM2RkZWU2ZTM1ZDQ3NmM1ZTY2OTY4MmJjNDRmODM1YmJlNCBweTNrCis4NjY1NiAwN2E0ODcwZjYwYTA3ZjBmNTNjZDVlMGYxN2Y0ODUxYjMyNTcyNjk2IHJlbGVhc2UzMS1tYWludAorODY2NTcgYTA4MTYyNWRkNmM2MjdlYjM1NDdmZjY1MDUwZDc0ZTJkZjA4YmEwYSByZWxlYXNlMjctbWFpbnQKKzg2NjU4IGZmYzM3MmM4Y2ZhMGM3NjNlM2M0NWYzMzJiNGQxZjgwODgxMzJhYjIgcmVsZWFzZTMxLW1haW50Cis4NjY1OSA1ZDExMmM3ODdkNmU5NGYwZDE3ZmI0ODdkMjMyY2Q5ZDE2ZGJiMmIyIHJlbGVhc2UyNy1tYWludAorODY2NjAgZjAyZjNiMzNkZDhmOTFmNDJiMWM3MDMwMzAyYTgyNTU4YjBkNDVkNCBweTNrCis4NjY2MSA1YWJmYzFjYzIyZDExZjNjOGNhMWI2YTA4YmNjNzI3YWJkN2U1MmZiIHB5M2sKKzg2NjYyIDY2ZTBmNWM2NTE1ODY4OWUzY2E2MWRlZWVlNTBmNjk0ZTIwZjM0NDggcHkzaworODY2NjMgYzVjYTFhOWIxZmRmNWYyYzRmN2FkZmE4YzhlMWVmODNkNGU4NTllNyByZWxlYXNlMzEtbWFpbnQKKzg2NjY0IDBiMjcxNmY4YWZiNTkwNGQ0MjgyOWI0OTliMTdiN2Y1NWJlMGEyNjcgcmVsZWFzZTI3LW1haW50Cis4NjY2NSAwZWZkNDI1ODlmMTcxZTM4MThhODgxZTkwNmE2Yzg3YWEyYjJjOWMwIHB5M2sKKzg2NjY2IGRjNmEyN2JmODU5MjhjYTc1ZTNiYWFiYjQwZmIxNTQzNmJjOGU3Y2IgcmVsZWFzZTMxLW1haW50Cis4NjY2NyA5YTE5MDY4YmE4YjEwZTExM2M0NGUxNDg5ZTZjZDY0ODIxMDQ3MGNmIHJlbGVhc2UyNy1tYWludAorODY2NjggMTAyZGIwY2ZmZTUxZjZjYzRjOWVmMDdkZGYzZDQ4ZmYwZjJmYTU2MSBweTNrCis4NjY2OSAzZTk1ZjA4OTIzN2E5ZTI3OTk3ZDIxZmRjMGMyZDE5MzkyOTcwMDJiIHB5M2sKKzg2NjcwIDA4MTNjMmFjZjc0MTU1MTk0ZGMwZDAwOWRhNjhiZmNiOGI3NDMzM2EgcHkzaworODY2NzEgYWRhNjdkZTY0OTE5OTcxY2FiOWJjMjI2MmMwNzNkZjUyMDBhYzk3ZCBweTNrCis4NjY3MiA1MzgyY2E5NWMzZjZjMzE2ZDhmZGJmOTZjOTAyMzA1OTQ3ZGVjMmVkIHJlbGVhc2UzMS1tYWludAorODY2NzMgZDZiNmY5OWY1YWY5ZTAxNTFhMjI4NDMxZmQxZWI0Y2ViYTQ0MmY4YiByZWxlYXNlMjctbWFpbnQKKzg2Njc0IGFhNjRkNGYxYTc5NTYxNTM1Y2FmNWIxNjcyNzM4NTQxMzRjNjhjYTcgcmVsZWFzZTMxLW1haW50Cis4NjY3NSAyZmY3NTgzMTVmYTEwYzViODg2ZGM2ZWFmMjQ4ZWU2NmUzZjUzYWMyIHJlbGVhc2UyNy1tYWludAorODY2NzYgN2I3MDUxMjgyN2NmMzk0ZDI5ZThiNWFjMWFkNjQ5Yzc0OTA2NTQ0MSBweTNrCis4NjY3NyAwYTlmZDVjOTRkYzM1OTU4OWQ0Y2ExMjJhOGI0ZmM4MTI2ODZkNWVlIHJlbGVhc2UzMS1tYWludAorODY2NzggNGMyYjJiZTcxNDU3Zjc1MGJiYzZjNzY3OTczNGExMGJiMDExMzJkNCByZWxlYXNlMjctbWFpbnQKKzg2Njc5IGM2YjdkZjFiZGY1MGU0OGI2MGRkN2ZkMjQ0NjdlNzRlYzdhNDYzOGYgcHkzaworODY2ODAgN2VlNTkwYWViMmIzNDIxMjRlZWIzNmRiMDQyMWUxMjQ5YTI1NmZmMCByZWxlYXNlMzEtbWFpbnQKKzg2NjgxIGQ5Nzc0MTIxYTZkZmRhN2Y1ZTkwYjk0NWY3ZjczNDBiZWM2ZjgzZGYgcHkzaworODY2ODIgNmYyNWNhYzI4MzZlYWQ3OTYzOWViODRlNWFjMTM5YmQxMDQ0ZGVhMiByZWxlYXNlMzEtbWFpbnQKKzg2NjgzIDRmMzU4NjZmZDhjYjEyZWE4NWVmZWM2MDZkZGJlNjNmNjY5NjRjODEgcmVsZWFzZTI3LW1haW50Cis4NjY4NCBmMTUwYjY3ODU0OGVkZjA5Yzk4MmRhZTExZDc4ODJjYzdkMDgzYjk4IHB5M2sKKzg2Njg1IDMzNjI1ODljMGMwMmFiZTIwNzViZGZiYjk1YWI0YjVlNTI5YWQxZmMgcmVsZWFzZTMxLW1haW50Cis4NjY4NiBlMGVjY2ZhOWFkNmJhMGEwNGJkYzdkNGIyNGM5ZTI1YThhMDc4N2Y3IHJlbGVhc2UyNy1tYWludAorODY2ODcgODJhYzc1M2JmNjJhOWEwZDkwMDQ3NmJlNjEyNmQ4YWJjMzVmZWI0MyBweTNrLWNkZWNpbWFsCis4NjY4OCBlODg0MDMzMWY3NzhlNzdkYmUwZGU1OTk2YjJkOWE5ZTcxYjJjOTVmIHB5M2stY2RlY2ltYWwKKzg2Njg5IGFhNGRlYWYzNDRkMTk5MDI2ZTdjMmRjYzJjMmM1YTUzNGI0NmYwZmQgcHkzaworODY2OTAgZGNhZDcwNmIzOGZjNDhiOGRlYWFkYWZmMmI5NmZlNTYzNWZkZjdiMCBweTNrCis4NjY5MSAwYzY2ODE0NmIxMjZhNmZkNDJhMTUwMDJiYWU4ZDNjOTM1OGRkNmRjIHJlbGVhc2UzMS1tYWludAorODY2OTIgOGRjYjE3NzgxZTgzMjRmZjBhYzI1NjMxYTEwYWFkZmZkYTIyMDliYiByZWxlYXNlMjctbWFpbnQKKzg2NjkzIDEyN2Y1MTY4YTc3NGY5Y2RlZjU1ZjQ2MDgxYTc1MDU1YTllNjNmMzkgcHkzaworODY2OTQgOThlMWRkZDUwNWJjMjlhZmE0YThmYzRlODE4MGEyYTZhOWQxOTA1NSBweTNrCis4NjY5NSA1OGFjNTE2MGQxYjdiYmJjZTc4ZDE1MWRlYzBlZGZiNWE2YjZkZDM5IHJlbGVhc2UzMS1tYWludAorODY2OTYgM2Y2MjM1MGVkZDJlOTM2NDY3ZTM3MGQ0NTIxNjM2NmI0M2FhMTY1NCByZWxlYXNlMjctbWFpbnQKKzg2Njk3IDQwMTA5MzAxODI4NTQ0ZjA0M2ExNDY4MDBmYTdmN2U1MGJjYzc4OGYgcHkzaworODY2OTggY2M5YzUxZjk1MjRmOWRmZTFiMzIxNmE5NDRlNjYzMDVkOWM1OWViOSByZWxlYXNlMzEtbWFpbnQKKzg2Njk5IDJjMzcwMDY1YzFiNGRlOTE1MWYwMzg0NGU1OTg1YmMwMjA0NjZkMDcgcHkzaworODY3MDAgMjYwZmYzNzkxMTVjN2I3YzQ1ZTllMGU2ZTNiODEzODEzMTc0MTA0MSBweTNrCis4NjcwMSBkY2I2MGJmMjZkY2U5OGE2MGUxODdjYjQ4NmUwNjZhMGNmMDcxOTRjIHB5M2sKKzg2NzAyIDVhNjlhNTg5YzZmMDg2OTdlZGU1ZGUzZTMzMTk1YTE0ODU1NzgwZTcgcHkzaworODY3MDMgYTczOTg4M2VlNmM1NjA2MTdmYzc0M2FhNjY1Y2VhNWU1NWRlYTk0NiByZWxlYXNlMzEtbWFpbnQKKzg2NzA0IDk1MjI4MmE1MDQ3ZmMyMWZmYWIyMjg1MWIwNDU3MTdhY2ZlZTVhY2IgcmVsZWFzZTI3LW1haW50Cis4NjcwNSAzMzAzYWJlMjlkMGIzOGQyMjY4YTE5ZTQ5YWU1NGQ5M2M3NDdlMmJmIHB5M2sKKzg2NzA2IGE0YjdhNDFkYWJkOTRjODM2MTE1YWI3MDgzOTA1ZTBkNzZlYmU5MGIgcmVsZWFzZTI3LW1haW50Cis4NjcwNyA2M2YxMTRiMDljYWZhOTIwZjQwMDRlYmIzNjAyN2ZlZmEwYjYzNGFhIHJlbGVhc2UzMS1tYWludAorODY3MDggMGNlNTc5NTFhZWM2MmE5MjMxMTQzMmUzNzU2YzI4OTdlZDRhMWM3ZiBweTNrCis4NjcxMCBjODZmMTcxMDQ2N2U3YTVkNGFjODg2MWE5YzIxZDg3Nzg5YzZmYzdiIHB5M2stdXJsbGliCis4NjcxMSA2Y2EyODkwYmFiNjc4ZGZiNWIwM2NhMzE4OGY5NmFmN2RhNWU4ZTdlIHB5M2stdXJsbGliCis4NjcxMiAwZjhjNTJlYzlmN2YxNWMxZTEzZGRmNzE5ZjE5MGJlOWUwMmM1YmY4IHB5M2stdXJsbGliCis4NjcxMyA5YWRmMzk3ZjU2ZTdiNDNjN2RhOTcxNzZlYWRkMDE5Y2Y3ZDY3M2JhIHB5M2sKKzg2NzE0IDhiNGE1MzFhZDM1MmE0NDhiOGQ3ZjlhOTNhM2E5NDExZmNmZTViZmIgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzE1IDFhZTUxZDEzYzI1YjkyMzU2MDY4OTNkMTgzN2JkMzZmYTJmNWZkNjggZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzE2IGJlMGY0ZDhiZmNlYWFjYTU2NDI3YTFlMjExYWRiNDYyMjU2NjU0ZGYgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzE3IDlmMjNjNWY0ODU2YzAyNDRlODc5MzY0ODA2OTNmNWIxNjIxMTJjMzIgcHkzaworODY3MTggYmFiOWMyMDdlMWNmOGFkMTZkMjMyNDRkMGRhMmMxNDNlN2RlYjQ5MSByZWxlYXNlMzEtbWFpbnQKKzg2NzE5IDE0MDRhYjA3NmI1OGY0NGM2MjNjNmYxYmFiYWY5NWEyMWIyZDdlNGYgcmVsZWFzZTI3LW1haW50Cis4NjcyMCA0MzZkYWYwOTVlODk2OGU1Y2VhYzRmOTFhZGNhZWM1OGI5ZGJiN2U3IHB5M2sKKzg2NzIxIDA4Mjg4MTRlMDNhZGRiODIwYTc1NGRiYTQyNDQxM2JjNWEyOTM1NDkgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzIyIDYxZjlkM2JmMjM0Y2YwZjkwZGY5MmIzOWU3ZmJkODZjYmM0Y2FmNWUgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzIzIDA5MjRmNDBiYjZkYzUxYzViY2Y2NjI0OGZmZWIyYTRjNDc3NWM3Y2EgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzI0IDQyNThlMjhjZjQ0MDYwYWU0M2Q5YjM5ODBiZWJiMGZhNjI5ZDBjMmMgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzI1IDY1MmJhZjIzYzM2ODZlNTIwYWVkM2QwZTdiNzdjNmU1YTRhMjQ0M2YgcHkzaworODY3MjYgMjg4OWVkNzM0MWUwN2U5ZmY5NGNhMTVjNzkzNjJhMTQ4Njg1OWE3MSByZWxlYXNlMjctbWFpbnQKKzg2NzI3IDBhMWJhYTYxOTE3MWFmMzI0ODY5ZWNiY2I2YzcxNDQwMjk4NzU5ZWMgcHkzaworODY3MjggZjNhNjFkYWZiZjZiYWQ4OGYxNWY4MWQ3ZjUzMDNhNTVkNDc0MThjMyByZWxlYXNlMjctbWFpbnQKKzg2NzI5IDRmZWQwMDY1OTgzMTQxYmEwMmFjMDY0NjI0YmNiNjdkMWJiM2M0OWYgcHkzaworODY3MzAgODNiMDUxN2QwZmM1ZTAyZjFlOWViYjU2MDYyMTc4ZDQ4YzcwZmQ3ZiBweTNrCis4NjczMSBhNzYzZWQzZDZlOGNhYTg3YWMxN2FiODIwMGU5MzdkZTVjZTkyM2YxIHB5M2sKKzg2NzMyIDgyZGEyYWJjZTcyMjBjMzQ2MzBjNWY5YzkwZjMzMjcxMWE0NDQ0ZmYgcHkzaworODY3MzMgOWNkMTAzNjQ1NWU3ZDYyODViNGMxZmIzNDNkMzIxYjFlNmM0NzczOSBweTNrCis4NjczNCAzOTVhYzZlMzE5YTg5NTliMzIxMTdmMTVhMGNjYTM3NmViMDg4MzlhIHB5M2sKKzg2NzM1IDI2ZjgwZjcyNGI0ZmYxNjkwMDY1NzFhNWYzZjQwYTBlZWViMzY3YWMgcmVsZWFzZTMxLW1haW50Cis4NjczNiAyNTMyYzRiYzAzNzNhMTY4Y2NkOGU2Nzc5YzhhZmJiZTc1NzI1MTIyIHJlbGVhc2UyNy1tYWludAorODY3MzcgZDZlOGI3ZTI1MGM2NWFjMzdlOTM5ZGQ4NzdjNzUwMGE0YTcwYjRmMCBweTNrCis4NjczOCBiNzM4MTI2OTBjNmU2NThmYmM5OWZkN2RjZDA0ZDNmN2Y4N2Q5ZDFmIHJlbGVhc2UzMS1tYWludAorODY3MzkgMjg3NzI2NWJkYjAxY2ExNWFiMTVmZjZhNzBiNWI0NThlODczZTE2YSByZWxlYXNlMjctbWFpbnQKKzg2NzQwIDk4Y2E2NTUzMjNjMDVjYjNkMWFhNzMyNmQ4ZjM3OWE2YTM1Mjc4NGIgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzQxIDRkZDdlYjJkOTg1NmNlZjNmZTQxNjJlNjc0MmIzYjk5YmQ4OWY0MDAgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzQyIDg1OGU4NmRiNDQyZjVhZDgxYWNiNDQ5Mzg4MThhNzNiNDQzNjQ1ZDUgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzQzIGNlYWQwNGIzYzVlZDEzZjJmNWIzYmRjNGZmMWZiODk5Nzc0MmQzMDAgcHkzaworODY3NDQgMGNiMjY1MjY0MTlkODhiN2E0NmQ1MzVlZTM3YTU3MTY3NzhlYTJmZiBweTNrCis4Njc0NSBjNTRjNDExZDNkYTdhMTRiNmIzZTg5ZTAyNTk0MWYyZGQ2Mjg2NDA0IHB5M2sKKzg2NzQ2IDAzZDkzMzk0OGJmM2VhYThjNzljNjQ5ZGViZDU2Y2JiNmNmNTk1MTYgcHkzaworODY3NDcgNjc4ODIxMDVkZDY1NThiY2I1MGMzZjI3NzI1YWM5NzE3Y2I4ZTZlMyBweTNrCis4Njc0OCA0ZDM5NTJhMjFlMjU3NjBhMjlhMGM2OGM3NTMzMjhlYjQ2MTQ1ZTk0IHB5M2stdXJsbGliCis4Njc0OSBhZTgyYzc3MDc2OWNhZDU1ZjFmMjA2OTU4ZGI4N2M1M2Y1ZTdmZDQ0IHB5M2stdXJsbGliCis4Njc1MCAxMTc4ZTI1NDVkY2I1YzY4MmEyMDY1YzUyYjNhYjVjNDk4MmY5ZWM0IHB5M2sKKzg2NzUxIGVkZWQ2OTE0OTdiNzQ4YzNjZWI4ZWRlMGMxYjE2N2RjNzI4ZGE1NWYgcHkzaworODY3NTIgZjNkZjkzZTI2MjY3NWFjNWI5Y2U4ZDc3MWY4MDZlODk3N2Y1ZWI2NCByZWxlYXNlMzEtbWFpbnQKKzg2NzUzIDBkYTQyY2QwMTU3NjU1ZGZjZWIwY2UyMTEwNTg3OGFiZmQxZjljZTUgcmVsZWFzZTMxLW1haW50Cis4Njc1NiA0NTdjN2U3MDRlYzI5OWMzOWY2MTUyN2RmYjY2ZWEwNWQyZDFlZTkyIHB5M2stY2RlY2ltYWwKKzg2NzU3IDJkNmNkYzgxODVjYWU1NzVjZmQyM2RmYWIzZWQxMGU4MzQ5NThhMGIgcHkzay1zdGF0LW9uLXdpbmRvd3MtdjIKKzg2NzU4IDE0MGQ4YTY1NzcwNTQzM2E4MzQ1ZWM4NGMzY2ZiNWQyNTUzZDE3Y2MgcHkzaworODY3NTkgMDZkMjMwMjZmOTA0NTY5YjdlZTE1OGYyZWJjYWZlYjc4MDQxOTk4NSBweTNrCis4Njc2MCBmNTlkYmYyOGUxMmMzZjZiOWNjOGE5YTQ0NmIyMGM4MmRjMzg1NzY1IHJlbGVhc2UyNy1tYWludAorODY3NjEgZTQ4ZWQyZWY2ZDVmZmIzOTJkMWJkNzhiOTAzNjI2ODJkOTdjYmY1YSByZWxlYXNlMjctbWFpbnQKKzg2NzYyIDdhYjRmZGE3NzAzMTI3NjU1MzEyNGI4YjBkOWYyODBiN2RiOTQ1YTkgcmVsZWFzZTI3LW1haW50Cis4Njc2MyAxOTIzMjAyMGU0OTFkNzhlZjFiMDZhM2Q3YTkzZWM3OTY3NTEwZTE3IHJlbGVhc2UyNy1tYWludAorODY3NjQgOGNlOWFlNWExNTQyN2IwN2RkZmMwYTNhMTRhNjA2NGFlZjI2NWZjZiByZWxlYXNlMjctbWFpbnQKKzg2NzY1IDZjMzVhYmM3ZDBkMjE5MmUzMjEzOWQyMWJiZjk3MjVkODc5OWUxOGUgcmVsZWFzZTI3LW1haW50Cis4Njc2NiA0NWFiNTVmYTNkYzBkZjk1ODE2NGJjMDE0NDg3YjAwYTM3ZmYwMDQyIHJlbGVhc2UyNy1tYWludAorODY3NjcgNzc3NzFiMDg1ZWNhNzVkNGI3NzA1OGEzYzQ5ZGZkZTY0MWMyNjkxOSByZWxlYXNlMjctbWFpbnQKKzg2NzY4IGE4MDNmZDg0MWZkMTdjM2M0MzU4ZjI4ZDBiMWY2MmJiNThkY2M4NmQgcmVsZWFzZTI3LW1haW50Cis4Njc2OSBkNmM1NzUwMTUzYmIxMTg2NDRiZTEwNjk1OWFhMTU1MjdjYmFmMTM5IHJlbGVhc2UyNy1tYWludAorODY3NzAgMzdiMzdiNmE4OTcyYmQ2ZjA1NjhkOTFmOTU4OGJlNmVhMDdmMjU2YiByZWxlYXNlMjctbWFpbnQKKzg2NzcxIDI5NTVmMzM3OTY5ZTgxNjQ0ZjEwN2NjMmU3ODYxOWQyMGY2MDQ1OTggcmVsZWFzZTI3LW1haW50Cis4Njc3MiBlMTBmNjE4Yzk2N2FjMjkzYzZiMmExNmU1ODRhMTA4NmRiZDU5NjVlIHJlbGVhc2UyNy1tYWludAorODY3NzMgODM1YzE3NjIzOWQwMjU3YjJlNjk2NjAyMTkxMTVkZWNjZTQwZDE3NSByZWxlYXNlMjctbWFpbnQKKzg2Nzc0IGZiMmFhNDVhMWIyMmUzYjFiNWYzMzQzODQ2YTFmZTBjNTMxMjlhYjIgcmVsZWFzZTI3LW1haW50Cis4Njc3NSA4YjZhOWVjYmU5ODljMGI0YzBiN2JkZjhiYTVmOWRlNTc1ZjU5NGJmIHJlbGVhc2UyNy1tYWludAorODY3NzYgMmU1ODEyNmRiYWQwODcwM2JlMmYzM2MzOGE4N2M0MWRlNmI1NmNlNyByZWxlYXNlMjctbWFpbnQKKzg2Nzc3IDQxMzY1MTVjZGZhY2RmYzc4NDQ5OGEyYmI3YzE0ZDNhYjgyNDdiYTIgcmVsZWFzZTI3LW1haW50Cis4Njc3OCA3YzBlYjhkNTYxNDZiOWFlYWYzOTdjNGU3YzBkNGZiN2YwMTYwYTE2IHJlbGVhc2UyNy1tYWludAorODY3NzkgNzFiNzcxNTE5MzMzYTA0YjEyMzNkMWJhNWFmZGYyNjY4NDczOTVhNSByZWxlYXNlMjctbWFpbnQKKzg2NzgwIGEzNzJmYzQ4NjI4MTY2NzQxNjg0NDI4MTE1MjBkYTI5ZGM3YTE3NjEgcmVsZWFzZTMxLW1haW50Cis4Njc4MSA0NWU0OTI2OWUwZDhlZjFkZDI4MjIzZjY0OWEyZWFlN2JhNjkxMjNiIHJlbGVhc2UzMS1tYWludAorODY3ODIgZTc1OTNmZWI1YWQ1YzNmYjIyYjc0ODgxMDlmN2I3N2MzZTMwNTExZSByZWxlYXNlMzEtbWFpbnQKKzg2NzgzIGE5ZjBlYzYwNGM4YWQwODgwYmRhMTk3ZDFkYjE5ZTlhNTliZWMwMjAgcmVsZWFzZTMxLW1haW50Cis4Njc4NCAwNWVlNmY4YzAyNjBhYTViZTFlNWExZjRmNzY4OTE0NGQ1ZTlmYmRjIHJlbGVhc2UzMS1tYWludAorODY3ODUgMzliNWFmNzczZTc1OTZhYjc3NzE5YWYxM2QwNjU2OTQ3ZjU5ZGYyNyByZWxlYXNlMjctbWFpbnQKKzg2Nzg2IDliZWFkOTA5ZDhlZmVkZWM3ZjQwNjM0ZDYwMzY5YmU1NGZiNjhkYjcgcmVsZWFzZTMxLW1haW50Cis4Njc4NyA5YjM0NGJlMWJlOWE3ZTliOTAyNTRlYjRhZDJiZWM4MDc1OWFiZWU2IHJlbGVhc2UzMS1tYWludAorODY3ODggM2VlNmQwMzhhZjliNDZlODA5MzRmZTk3MGNlZTBlNjc3MTI2N2UyZiByZWxlYXNlMzEtbWFpbnQKKzg2Nzg5IDcyODE5MzdiMmQ2NWIzZDU4YmM3Y2JkNTg5YjQzNzM5NDRjNWVmZmIgcmVsZWFzZTMxLW1haW50Cis4Njc5MCA5ZDZlMjQ2NWY1OTI1NDY0ZmIwOTRkZWU1ZTE4ZWEyZDZlZDFkODI5IHJlbGVhc2UyNy1tYWludAorODY3OTEgNGVhMWM2YTRlOTJkMGZiOTk2YjQ0OTgyZTE2ODFlZjdkYTcxMmJkMiBweTNrCis4Njc5MiAyYzE2NzI4MTYyZmRkYmViNmIyZmNiMmY5ZmEyMjg3N2ZmMWYyNmExIHJlbGVhc2UyNy1tYWludAorODY3OTMgMDAwMGJiYWIwOGI0NDc2ODQ2YzAyMWU0NTk3OTIxZmQwNjUyZTNmNCByZWxlYXNlMzEtbWFpbnQKKzg2Nzk0IGIwZTk3ZGJkOThiODQzOGUxYzZlODE3NjJiNDQzYzQ4OTViNGFmMGIgcHkzaworODY3OTUgZmEwMTdiY2FlZTEwMDAzYjIzODhhMWRmMzI0MTdmZWFlYjg2NjVhOSBweTNrCis4Njc5NiA1MDg0Y2U5NDg0Mzc4NTlkNTFhMjY3NjE1MDQ2NzFhOGNjMGJjM2U0IHJlbGVhc2UzMS1tYWludAorODY3OTcgNDZmZWFlYzcyOWJkYzY3YmZiMjA0OTFmZGFjZDY2MjlmNGE3MGY5YSBweTNrCis4Njc5OCBmYjVjNDVkMzhlMmFmNTE1MGRiMjU4YzJmNTQzMzg2OTAwZDM5YjkyIHB5M2sKKzg2Nzk5IGFjNTIwN2RkOGQ5YTMzNDY2M2Y3ODc0ODg2OThhNTRlM2E3NzU5Y2YgcHkzaworODY4MDAgYWNlYjQ1MTZhOGQ0NGEyZDUwYWU1YzU2ZTY0M2EwY2JhZTMxNWQyMSBweTNrCis4NjgwMSBiZjVmNDE3NGI4YzJkNTg4OGEwOGI0Y2M2YjYzOWNlZDViMWUwMjdhIHB5M2sKKzg2ODAzIDIzMWIwYmJjMWY5MDQ2NGM1ZGQzMjI4NzllZjhhYjAyZGI3YzdiYWEgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODA0IDMyOTg0MmRmMDZhMTBhM2Y2OTE1YjNjMTIwZWRmY2EwMTUxOThmNTUgcHkzaworODY4MDUgMGUxZGQ0NTQ4YWExN2MxYjA4YmY3ZWQ4ZWEyMjhmMWVkNjY2Mjg4ZCBweTNrLXN0YXQtb24td2luZG93cworODY4MDYgMTMyYTk0ZWMwY2U4MGQ2ZWU2NWE3N2VlNjUwNGIzZGJhZWYwNWRlNSByZWxlYXNlMjctbWFpbnQKKzg2ODA3IDQyNzllNDE3YjJhMDI0YjBjYjRiZTgwMmQxMTIwOWQyYWQ5ZTIwMzIgcmVsZWFzZTMxLW1haW50Cis4NjgwOCBmYWRmNzRjMGM1MDQzZDk3OThlYjM4YTYwMmRhNjc2MGFlMjNkZTViIHB5M2sKKzg2ODA5IDc4NmVlMTFlMGM4NDFhMGI1M2U2MTQ3MTAyZGJlZDUzOWFkYjk4NGEgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODEwIGM3YTM0MmE3OThlNzcxMzc3OTAwNDZmOThjZTE5OWMxOTJhNzJiNGQgcmVsZWFzZTMxLW1haW50Cis4NjgxMSA3NDliMWU3MTM5MWNhZTM2MjJlNDI4MDVmMzY3YjJmNmRkMWJmZTA5IHB5M2stc3RhdC1vbi13aW5kb3dzCis4NjgxMiBjODE2M2MyYTFiNmY0ZGUxNDE2NjBlM2ZiMzkxYzk5MmE3MjczZThkIHJlbGVhc2UyNy1tYWludAorODY4MTMgYzgyY2EzYmViNGRmMTVlOTUzMmRjMTM3NWYzOWZkYmM2ZGJhOTgyNyByZWxlYXNlMjctbWFpbnQKKzg2ODE0IDlmZWZmMTc3ZjQ0ZDEyNjlhZTIzZDYzNjkwY2I2MzExYzBlZjhiNzYgcmVsZWFzZTI3LW1haW50Cis4NjgxNSBhZDc5ZjliM2EwMjE5NzBhZjBlZWQ0ZTJjN2Y0MWZkMzc5N2QzNDU5IHJlbGVhc2UzMS1tYWludAorODY4MTYgZjIyMjI1YTlkNzIwODJhZjY2YTkzMzMwODJhMDExZTNiNGRmMmQ3ZSByZWxlYXNlMzEtbWFpbnQKKzg2ODE3IGVhNGVjNmRlOWNlZmUwOWE4NmQ4YjMyNGEyYzhkMGQ4NDYyODBmNmQgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODE4IGFiYmM1OGEwNmU0M2Q0OGQ5ZWYzZjhiNTRlNmVmNjQ5ZDc1MzQ0NDMgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODE5IDk2Y2E5OWRmZWZkOGVlNzFiNDAzZGE5NmRiOWJlZDZkNmViZTY0ZWQgcHkzaworODY4MjAgODZhNjUzOWQyYzI1MzVkZWVjNTE5NDdlNDlkNmJmMzgyMTg3ZDQ1ZCBweTNrLXN0YXQtb24td2luZG93cworODY4MjEgMGI2MzQwNzMwOTEzYzRjYzU1NzU5NmU2ZDgyMWVlNjJiZDRhNTVjNCByZWxlYXNlMzEtbWFpbnQKKzg2ODIyIGI0YmZkYzUyYWQ1MTA2YjE3NGE5ZGMxNjczZWZjOGM4ZTMzNDdjYzcgcmVsZWFzZTI3LW1haW50Cis4NjgyMyBjY2YyNjMzYjk1ZGQ4OWY1YzFlZjE1ODk2NDM1MTQ5YmRjYjY5NGM5IHB5M2sKKzg2ODI0IDYzMzQxZGQzNjBhZjVmNzAzODcwMmJmNmQ5MTRmYzA3ZGQ5MGExYTggcHkzaworODY4MjUgZmVlOThiNjA0MTM5YzdmNWJhODEzYWE3NzI4NmZlNGNmYjlmMmRjNSBweTNrCis4NjgyOCA1OTYyMzlkYTNkYjc5ZGVkMGM1ODJhZDg4NGZhNmE1NWRlODU4MGU4IHB5M2sKKzg2ODI5IGQzYmFkNDFhZDcwMTc3Nzg4ODQ1NDFkZTI3MzQyOWRiNGQ4YWQ5MjMgcHkzaworODY4MzAgNThjMmFjNjBjY2I5ZGFiNGQyNWU3ZTJlOTBkZGUyNzY5YmRiNDk3ZiByZWxlYXNlMzEtbWFpbnQKKzg2ODMxIDgyYWRlMjEzYTY2ZGY5MmZiNzQzNzkyMTE3ZjVmMGRiZDBiZjZmZDcgcmVsZWFzZTI3LW1haW50Cis4NjgzMiA1Mzk1Zjk2NTg4ZDRmMDE5OWQzMjljYjc5ZWIxMDk2NDhkYzRlZjVlIHJlbGVhc2UyNy1tYWludAorODY4MzMgN2UzOGY4ZmJiYWRkYWI4YTE2YTY2NWE0OTRhZmVjZmNkNTBkZjNlOCByZWxlYXNlMjctbWFpbnQKKzg2ODM0IGE0Zjc1NzczYzAwNjBjZWUzOGIwYmI2NTFhN2FiYTZmNTZiMGU5OTYgcmVsZWFzZTMxLW1haW50Cis4NjgzNSBkYzI2ZTRhN2QyZTYwZDA1MjNlNjEwMjIxYzU1OTcxNWU4Mjk4ZTQ2IHJlbGVhc2UzMS1tYWludAorODY4MzYgNjNhYjM5ZDExODYwZTE1NjI4MzA0MDMyZGIzN2JiNWE5ZmNlMWEyZCByZWxlYXNlMzEtbWFpbnQKKzg2ODM3IDg3MzdmYjE3ZjQ0NDAxYTBhMmU5N2Q1NGM5YWU1MGQ1ZmM0Y2M3MzUgcHkzaworODY4MzggYTI3ZmIxZTZlMDlkNDRlNGYxMWQ3N2Y0OTcyMTY3NDRiZGFkMmVhYSBweTNrCis4NjgzOSA0MWNkMDkyYmU5M2FhNDA2NDRiYzg4NWM3OTNmNzU0M2M0MWQ5YzljIHB5M2sKKzg2ODQwIGY5NTEyNzRhZjNjN2Y1N2NmMDg0M2QwZGY1YjlkNzg0Y2ZiMWFiY2IgcmVsZWFzZTMxLW1haW50Cis4Njg0MSA3MmYwYmVhMDU0NTc3OTAwODRiZjgyNzhhYmEwNmU5ZjAyZjVmOGI0IHJlbGVhc2UyNy1tYWludAorODY4NDIgMWI3N2YyZWIxNjA2Nzg2NmE4YjkyNWU5ZmRlZTNmYjgzMzkwNWI0ZCBweTNrCis4Njg0MyAwZjBjNmI4Nzk3OTZiZWU3N2VhM2I3NWNmMDJkYWYyM2IyMzM4OWZkIHB5M2sKKzg2ODQ0IGQwYTE2ZjlmMzc0MWZkM2M5MzRjZmZkMzk0OTA3NjFmNzU2Y2RjODYgcHkzaworODY4NDUgNTM4MThlNGM0ZmNhNTY0ODg0MDdkOWNjYjJmOGM4YzFiYTY1ZjY2MSBweTNrCis4Njg0NiA1YmUzZWZiNDdiZmQ1ODM2ODc4NmI1MmUzMWMwYTQ1ODM3NmU2YmVhIHJlbGVhc2UyNy1tYWludAorODY4NDcgZTBhNTI1MjAyYzc3Y2M2Nzk3NTVmZjgxZWUzNTM1MmUxZWJiZGE2NCByZWxlYXNlMzEtbWFpbnQKKzg2ODQ4IGM0YWFjOGU2OTg4ODY1YjQwZWY3YThmNzE3ODZiYWQ4ODc1ZDU3ZjcgcmVsZWFzZTI3LW1haW50Cis4Njg1MCAyN2VlNDJiMGZhZjZjY2IwN2UzMGIyMWQ5ZDZmNjRiN2NlNzgwYzcwIGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4Njg1MSA3MmZmNDM1MzIyMTQ4MGI2M2Q2ODE4NTNiMmM4MDJiZDBlZjk0ZjgxIHBlcC0wMzg0Cis4Njg1MiBkMjRhYTNiMWVlMjgxNjk3NDQ5OGZlMzEzMzVhNmQ5MDA2Mjc2ZWNkIHBlcC0wMzg0Cis4Njg1NCAwM2QwZDE4NjcxM2I0ZmU0OTdjY2U4NGQwYTgzMTczMTQyNWM5M2UwIHB5M2sKKzg2ODU1IGJkZDU3ODQxZjVlMmY0NmY4YzBkNmEwMmQ0MjcwOGVjNTc0NDQ3YjQgcHkzaworODY4NTYgOTNjZDRkZThlZTBiMDRhMTMwMmZhY2I4MGZmYmQ0MjYyNmQ4YjA1NiBweTNrCis4Njg1NyA2OWVjNzc1MjYxODBmYmU5MGUwYjI0NmQyYjg2MzdjNzhjZGZmZDBhIHB5M2sKKzg2ODU5IDE2ZTNjOTViYzQ2YzVhNGVjYmUyOTc2NjM1YzFhN2Y4ZmViNTZhZWMgcmVsZWFzZTMxLW1haW50Cis4Njg2MCA3YTVmMjY1NDhlMWMyODUzMGM4NzRhYzEyODYxYjkzZmY3NThhNDE3IHJlbGVhc2UyNy1tYWludAorODY4NjEgZTVmY2I0MjI2YjQyYTY3MzZmNDNkZjMxNDcwZWU3OTQ0ZWU4YWI0MCBweTNrCis4Njg2MiAyZTBkOTAwOWFiNmI5ZTFjNzFlMWY5NmU3MmQ5ZDNmMzAyYjI5ZGVhIHJlbGVhc2UzMS1tYWludAorODY4NjMgOGZkMTNjNWQzODgyMzk3NDQxYjk3MDc2YTczNGYwMWFiOTNkZjZjZCByZWxlYXNlMjctbWFpbnQKKzg2ODY0IGU4MTJkYjM0NGE2NWQ1NTJhYzAyMDBlNTRlNzdlMWY4ZjI0ZmNjYWMgcHkzaworODY4NjUgZWFkNTMwNzAzYjliZTVjYjg5ZmE0YzIzMWZlN2ZlOTNjZjM1N2E2NyByZWxlYXNlMjctbWFpbnQKKzg2ODY2IDY2N2QyODM0NDAxNzE5ZGEyZmE0Mzk1ZDk3YTI4ZGUzOTY0ZGE5ZjUgcmVsZWFzZTMxLW1haW50Cis4Njg2NyBjZDZkMGNhZmZlZjI0YmUwNmQyZWM4ODA2YjZjMjA5MDhmMzBkYWM1IHB5M2sKKzg2ODY4IGIwZmYzMzNlYzNkYTFiZDYzMjZhMTU0N2ExNzJhMDg0NmY4NDM1ZmUgcHkzaworODY4NjkgZTg5YWE5MTQ3NjI0Y2E2MzliOWFjZTNiM2E1ODAwMjE3YzYxNmU2ZCBweTNrCis4Njg3MCBlNzM5MmZmZWUwNzFhNzZhYzBlY2I1MTgwNTFjMjUyMjIyMDgzZjEzIHB5M2sKKzg2ODcxIDZjYTg5MjJkYWZiNTNiNTlkOGU3OTdkZWZmN2RmYWNmNDVmOTQyYjMgcGVwLTM4MgorODY4NzIgMGNjYTk2NjE1Mzk1MWI5NjNiZjE5ZjUxYTA4MDhiMWEzOGRjZTJjMCByZWxlYXNlMzEtbWFpbnQKKzg2ODczIGRlNmU3OWM1YjFlZDQ0M2ZmOGQ1NGIyZmZiZjg2N2Q4NDI4NGRjYzcgcmVsZWFzZTI3LW1haW50Cis4Njg3NCA2Nzk5ZDU0ZGIzNzgxMmFiZjEwYTFkMmUyMDgzOTVmYTc4NTAzZjRjIHB5M2sKKzg2ODc1IGUzMmEzMDBhY2FjMmZjODZjN2QzYzQzZWUzZDE0ODQ3MTI4MWFjYzggcHkzaworODY4NzYgOWU5YTcwOWIzODllY2FlMzZiMTQ2ZjkwNzg5MTFiMWVmNjkxNzZlMiByZWxlYXNlMzEtbWFpbnQKKzg2ODc3IGVkNGJmYjc1ZDI4ZDg4MDY0NWM4MzQ1NzlhZjViNmZhODBhN2ZmM2EgcmVsZWFzZTI3LW1haW50Cis4Njg3OCAzMTJiMjkxNmNmZDQ1ZDhiZjMxMWJkYmEyNjI5M2ZhODg0OTU4NjBjIHB5M2sKKzg2ODc5IDMyZTY3NWRhYTBlNTFiZmUyZjU0ZDM3MmNjYmRlMmM0YjdjM2VhZTYgcHkzaworODY4ODAgZjE2YmY0Y2FlNWQ3MzdmYWY0MzZmMGUxZWZkY2I1ZjQ0ZGQ0NzFiZiBweTNrCis4Njg4MSAyOGI2N2I1NzBmMmJmOWE1OWJlNDM1MmRiMTRjZmEyMjU1ZGVkNDMyIHB5M2sKKzg2ODgyIGI0MDVhN2YwYWVkNzFiOGRhNTkxYmZmZTBkN2UyMGRlZjA0YjliMzkgcHkzaworODY4ODMgODMwNGJkNzY1YmNmNzdmODM3ZjUxNjlhODhiNWQ3NDRiNWUyZDAzMiBweTNrCis4Njg4NCA3MjQ5MjBhMDE1ZjcwMWEyMWRkN2UzMjlhNDhmNTRlMTNkMWRlMWE5IHB5M2sKKzg2ODg1IGVkYThkYTNhNzViM2M2MjQ3MDE0MzY5ZGVkNTg5MGFmMjA5ZmM3OWIgcmVsZWFzZTI3LW1haW50Cis4Njg4NiBkZWI5ZjJkMzdiNjNiZDEzMWFhOTQ4ODY4YWRlM2ZkZTQ4YzRlNDA5IHJlbGVhc2UzMS1tYWludAorODY4ODcgZmQ2ZTU2NTNiMzEwMjUwNjJmYjdiYTYzOWNjMjI5ODZmMmZiMDFmOCBweTNrCis4Njg4OCAxODM5OWU2MjBiNDExMGNkNDk2Y2M5N2VhM2VhOWM4ZWNhYzA1MDMyIHB5M2sKKzg2ODg5IGU0NDQxMGU1OTI4ZWUzMTE0YzY1OGRmNjdjZDE4MGU1YjUwMTE1ZDkgcHkzaworODY4OTAgYjgwZjViZjI2ZTk4N2I4ZDU1MGE1MzNkYzg4NDI3NTQ0YWYyOTE2MSBweTNrCis4Njg5MSBmNzk5MjhhZGFiNTc5ZjNjZjFhYmY4ZmRjYmViN2FmZTdjNGJjZTRmIHB5M2sKKzg2ODkyIDdlYTAyZjMxYzI1MmNiZWI0M2U3ZWJhY2U0OTIxNjEwYTVjYmU4NGUgcHkzaworODY4OTMgMmY2ZDBmMzYxYWI5MmM5N2M3OTc2ZTQwYTY3MTA1YjBhNDMxNzRkNiBweTNrCis4Njg5NCAzNDAzNjlmYjJlNzBlZjQ5OTE3NmM4YTM0YWFiMzM3NjY1MTQ5ZGEzIHJlbGVhc2UzMS1tYWludAorODY4OTUgNzQ2N2ExYzExYWViNDY1NDQ2NTg4YWI2Y2Y4MjYxMTExZDcxNmY5MyBweTNrCis4Njg5NiA2NTZkMjRkMTk3NDliMGIyZmFjM2Q5YWQ3Y2E3ZThkMmRhMTc3YTUzIHB5M2sKKzg2ODk3IGQ2MTAwNzQ5NzBkNzllM2Y1NTdiMjdkMWM2YjVjOTg3YWMzMmEwMmQgcmVsZWFzZTI3LW1haW50Cis4Njg5OCAwNGU4YmQ5YTFhYmFlMzc5OTg5ZDUzMWM4MmM4NDJkNDU4NWMwMGNlIHJlbGVhc2UyNy1tYWludAorODY4OTkgN2ZkMmM3ZGJkZGE2ODM4YmRmOGNiNThiOTBiZDAyNmQ2YTNhMGJhOCByZWxlYXNlMzEtbWFpbnQKKzg2OTAwIDI5ODRiNTdkNjdkYTQ5M2I4OTliM2QzMjA1NTFkZGZiNDRkMmY5MWYgcmVsZWFzZTI3LW1haW50Cis4NjkwMSAyYjJmYzQyNjIxNzAxZjg5Njk1NDIzMTI5NDlhNzcwOGM4ZmQ5ZmNiIHB5M2sKKzg2OTAyIDExNTUyZWE2YTk0NGMzYjMzNjkwN2IxYTAwOWQ1ZDllMDM2MjM2M2QgcHkzaworODY5MDMgNjkzZjc0MzBjM2NhNTA4MDdiMzA1MGM3MTYwZjdjMzVhOTg0YWY5YSBweTNrCis4NjkwNSBmZWUzYTJmMjQzZThlN2YyYjAxZDlmMTA0NDdmMTYyYWIzZmEzNzNjIHB5M2sKKzg2OTA2IDA5MjNkOWIzZGU2ZWE4MjJjMjlkNTFhMmYxMzE4ZWI0NmViNGVlMGIgcHkzaworODY5MDcgNWNiNTNmMDk0YzFhODhkMGMxZWM1OGRlMTgxOGNmZTc4MDk5MzI3MCBweTNrCis4NjkwOCA5MTg0YTM5MDlkZTBjOTkzOTJkYmViMzc0ZTQ1NDMyOTNkNTI5NDRiIHB5M2sKKzg2OTA5IDhiOTVlYTMxNzI1YjNlZTgxZWEyNjhjNzE1MDk0OGQ4ZDY1Y2Q0NmUgcHkzaworODY5MTAgMzhiZWM5MGZkOGFiNjAzZDhmZjg4OTE5NDhlZDliOWNjOTA4OGM3ZiBweTNrCis4NjkxMSAwMGM4Y2RmNTM5MzZiMzVhYmMyMWFmMDE0M2YyOTM4ZGQ5MzM0YzY4IHB5M2sKKzg2OTEyIDE0ODk2ZjEzMTNkYjA5ZmY0Y2FmMzUxMGZmNWYwY2E3YjBiNDMwYTkgcHkzaworODY5MTMgZmY3YzU5Mzc3OTAzMDBhNjJjMTVkYjhkNjQ2MjFjMzliMWI2N2IwOSBweTNrCis4NjkxNCA3MTgwOTg1YzFjMjIzZDMzMjBkOWIyNjYyNjdhYzRlMjJlNWFiODc5IHB5M2sKKzg2OTE1IGU1YzI4ZDY3NjljZmQxNzE2ZjI3MzFlM2RiYzFhYTk1OTdiOTg3NWMgcHkzaworODY5MTYgMmJhYWQ4YmQwYjRmYzg2NWYyZDhkNGJlMjljNDIzNjBkMDgxOTVkMyBweTNrCis4NjkxNyAzNzAwMmU0ZmY2NzcyZmJmZWM5MWM2MTZjODUzZDNjMzA0YTFlYmRlIHB5M2sKKzg2OTE4IDVkYTA5M2I0OWMyYTJkMzQyMzY4YzI5NjdlNTBkZjkxMTA3NGZiYzQgcHkzaworODY5MTkgMTNjNzFjOGM1YzBmODVlZDE1YzMyZDkwNTM2NTYyOWVmMDhiZTExMSBweTNrCis4NjkyMCA0ZTE4YjliZTI1YTQwOGUxYjhkM2U2NzU2ZGZhNjNkMjliZTI3NzYwIHB5M2sKKzg2OTIxIGNkODg3NjdiOGQwYzlmZjE0OTEyY2Y1YjA5MDA1OGI3MzU5ZmU0MTQgcHkzaworODY5MjIgNDM5NjU1ODBjNTU2ZGI5NDU0YmY3MDE0MDg2OGRmYTdkYjI5NjNiNCBweTNrCis4NjkyMyBjNWI1NDhmZDBjOGM4MjYxMzJjMjU3Y2M0YzBjNDYyNzRjYzBiMmE3IHB5M2sKKzg2OTI0IGI5MzE3YTlhM2QzYWI3NDdmNjNlZmMxOTE5NjhlYTEzMWNmNzE3NDIgcHkzaworODY5MjUgZTMxYTQ5NzIwODRhZjUyNjk1MjdmYzEwZDA2ZTgzZjc3ODNlMDI4MCBweTNrCis4NjkyNiAwNzhlNWM3YjMxNTlmMGNiZmYwZTY3NzQ3M2QxNDlkZWEzNWM5YWFiIHJlbGVhc2UzMS1tYWludAorODY5MjcgZTc4NDRiN2Y2ZWQ0OWViODJlNDg5MzI4NzQzNWE0MTBjODhhODU3ZSByZWxlYXNlMjctbWFpbnQKKzg2OTI4IDA5ZWQ0MTFhMTA5MDYyOGU2YzM3NzA5MzQ4MjM0YmQ2MzlkY2M5N2EgcHkzaworODY5MjkgOTBiNmNiZjJiMTFiNjEzY2JhYmIyODI3ZWVjMjcyNjEzOGUyYTJmMCBweTNrCis4NjkzMCA4OWNkYTA4MzNiYTYwMzkxYzE2MjEzNzk0MGQ0OGZjZWMyMzI2YWQ3IHB5M2sKKzg2OTMxIDBkZGZhNWJjZmJkMzcwM2E3ZjI5NWFmNjY2ZGU3YjAzNGU3YmIyMDAgcHkzaworODY5MzIgZDJlYTcxMWFiMTA3YzViNDg2OTAxODRmYzJmODUyYzZkNDNmOGE0NSBweTNrCis4NjkzMyBkYzczNDcyOTM1YzU4ZGM5MjYxM2Y4YWM0NDdkYjJjZDk1YmE4MDU4IHB5M2sKKzg2OTM0IDdlNDgzMzc2NGM4OGMwMDM3YTFmOWRmZjdkNGRhZjcwNjM2NDQ0ZGYgcHkzaworODY5MzUgOWEyMDU4MzA5YzFhYTYwN2QyM2MxNjg5ZTAyYWE3M2UwYzQ0ZDExYyBweTNrCis4NjkzNiBiOGJiYzBmYzYxOTE4OGM0MmUxZWU0MDMzMmFiZDI3MmM3NjM0YTE4IHB5M2sKKzg2OTM3IGUzMzlmY2E2ZTUxYTEwMTZmMTg4NTcwNmRhNDA5NDQ1MWEzNGU3YzEgcHkzaworODY5MzggYTM2MzBkZDkyMjE4MGIyMTlmYjMxZmIzOGFjZDQyYmMzOWM2YzQ3MCByZWxlYXNlMzEtbWFpbnQKKzg2OTM5IDQ1YWY1YTA2OGNjN2Y0MDZhZjgxZjM2ZTk1YTE1OThkZWNjM2IxNzUgcmVsZWFzZTI3LW1haW50Cis4Njk0MCAxYWRkOGNlZjc1MjdmZTlhNmZmNjQ5MTI5MzE3OTFhYjcyMDMxMDg2IHB5M2sKKzg2OTQxIDVmMjQxMjg0M2JiOTFlNmQxZGYyOTNlOGFiMThiMTA3NGQ5MDZkNGUgcmVsZWFzZTMxLW1haW50Cis4Njk0MiA4NjI5YzJhMjM0ZGIwMzZkM2RiODQ2OTBiODRkNmFkMWQ3MjkzOTgxIHJlbGVhc2UyNy1tYWludAorODY5NDMgZGVlMjAxNTVmZDY1NzQ4ZDhmYzI3YjRiZDgyNTJmNDI3OTYwZjQwNiBweTNrCis4Njk0NCAxOGQ4OWEzMGZhYmY5OTMzNjkxZjQ2ODhlZTI0MTRjZDhiMWJhNTY0IHB5M2sKKzg2OTQ1IGUxMWY3ZTY2MjM2OTEwNmQyYTA3YjAzZTBhYzc4ZjhlOWRhMmU1NjMgcHkzaworODY5NDYgOTk2Zjg0ZTUwNWJlMzUyZGQwOTQ1YmMwM2RjYmVhNGExZGQ0NWY1ZSBweTNrCis4Njk0NyBiZjQ5NWRkZTIwZTM5MzJkYTliNzJjYjI5NmU3YmVhMGE1YjM3MWZkIHB5M2sKKzg2OTQ4IDEwOThmYWI4NWU0NzI3MzZhODhhZjUzY2E3N2Q1N2M5YzEzODc2YmUgcHkzaworODY5NDkgZjkwNTgyYzZjYjVmZjZiNzIzNTFiYzI4YmRlNDc3YWE2ZTQ2OThhZiBweTNrCis4Njk1MCA2NGM2NDJiYjdmZjc5YWU2YjI1MWViZWUyZTVlZjRiMDA1MGJiNWEzIHB5M2sKKzg2OTUxIGUwMjAyMWZiZmUyMmI1YzUzYmJiOWFlYjhkNzczYmVhNmJhZDY5ZjEgcHkzaworODY5NTIgMWNiZmVmZmVhMTlmNzY3ZGE2YTMyYTFlYTk3NmY5ZDAzMzk2ZjY3ZSBweTNrCis4Njk1MyA2ZTQ5YWYyZTA4OTEwOWZjOGEyODZkZDcxM2RlNmY2NDUxN2U5ODMzIHB5M2sKKzg2OTU0IGQ3ZGUzMWFlOTVhNDQ3Y2M1MGI3ZDEzNWE1MzE1MGFhMWRiMjJjMTEgcHkzaworODY5NTUgZDdmYTE3YTQ2NjlkYjg1YWFiZDE1MDk2MWIzOTZhNzZkMzI5NjI5YiBweTNrCis4Njk1NiBjNjE0Zjc4Njc1ZDRhNzAxMjQzNjQ4YTQ1ODg2MDVhOTY2Mzk0YWQyIHB5M2sKKzg2OTU3IDA5ZDIzZmIwZDQyOGVkZDQwNDEyNjhhNGMwY2UzZGRmYzUzOWI5YzUgcHkzaworODY5NTggYTBjZjY0YTUyOTFlNzVhMzFjZTIzYmI5ZDlmZGJjNmQxMjI2ZWQzYyBweTNrCis4Njk1OSA3ODUxYmZiMWJkNzMzOWY4NjBlZGIzYjE2Nzg5NjUzZDhiMzNiODllIHB5M2sKKzg2OTYwIDc2ODU0ZTQ1YzQ2NTI3MGYyZDAwMTgwNjE1MDZjZmEwNDhlMDkzODYgcHkzaworODY5NjEgOGJmOTBiODcxMGQwMzc4MjdjOTE0MTYzZDUwOTY0MWViOTA4ZWExYyBweTNrCis4Njk2MiBhNWEzYWU5YmUxZmIwMzk1Mjg2ODRiYmMyMjg5ZmVkMjZkNDE4YzYyIHB5M2sKKzg2OTYzIDEwNzU2MWM1OGRlMTA0MzUzMTVjM2FkMWM4ZjJkNWM3YzgzOTc5NTQgcHkzaworODY5NjQgNDhjMjhjMjgxZDU3YWZmZTQ2OTcxY2Y5Yzk3Y2VhYTExODBkMGMwMSBweTNrCis4Njk2NSAzODM1M2JhNDA4YTFkODQyNmRhNzVmMDUxODg4ZTRhMjAyMGM4NmNlIHB5M2sKKzg2OTY2IDU3N2EyNWQ2NTVjNGFhZmMxODdlYzQwODkwNWZjMzQ3ODlmOGFlNDcgcHkzaworODY5NjcgODFmNGQxZmRmNTczNDEzMmVkMzAzYTYyOTEyZDRmMDJhYmViMTgxMyBweTNrCis4Njk2OCA3YzFiNGNhNDVkYjZkZDllMGMyNThiOTYxZGM1MWQyNTM3ZDM1MDQzIHB5M2sKKzg2OTY5IDk0ZmE1M2I1OGVlNTM0OGVmZjE1Y2FjNmRkOWIyZDRlNWRkODlkMzMgcHkzaworODY5NzAgNzgyMTYyNjM0MjVkMTU4MWU5ZmY4ZWZiN2I5OTc4YTRjYTUwNzAzZiBweTNrCis4Njk3MSA0YTU5OTkwMjMxMGRiOGE0ZDk5ZGM4NmIwOGIwMWE1NTU0NDFmMTM0IHB5M2sKKzg2OTcyIDViNjg2NzVkNzI2OWM2YTVjMDQ5ZGJlMzdjMmU2MWQyNDg4NGFiMjAgcmVsZWFzZTMxLW1haW50Cis4Njk3MyBmZGIzNTIzMWViZTI1OWY1MmUyODMxOGIxMWQ5YWI5MWNlMTNmOTNhIHJlbGVhc2UyNy1tYWludAorODY5NzQgZmUyYTU2YTFiYTc0NDM0Y2MwMTFiNWI3MDhmNWUwZmIyYzNkOWU4NCBweTNrCis4Njk3NSBmYWFkMTc5N2ZjOTJjZDYxZWU1N2U5MzIyNmIzMDU5OWZkODk5Y2MzIHB5M2sKKzg2OTc2IDVmZGE1MTk4MzRkZjg1MmI4ZTRmNjYzYjc1MjZiYWI2NjY4MTVjZjcgcHkzaworODY5NzcgYWUxMDI4MmU3ZjRlYzdmMmQ3MmM0NjVjMzViMjIxNGM3OTM2MDY2OSBweTNrCis4Njk3OCAzMDFkMjNkNmRkOWI2ZWQ4MDMzODY0MGRhZTcxZTg1ODQyODk0ZTBhIHJlbGVhc2UyNy1tYWludAorODY5NzkgNTIzYTZmYzUzYTcwNWM0NWNmYzI4OTlhMzkwNjg1ZDZkNmJhOGUyMiBweTNrCis4Njk4MCBiMzAwNDg2NjNiN2JmZTYxZTdiNTJkZTBiYTk4MzEwY2FjYjM3MDJmIHB5M2sKKzg2OTgxIDNkMmJmZDIwYzJmNGQ5MmRmNTRiYWQ3NWY1MmU0NjM1NDA2NzM4YjAgcHkzaworODY5ODIgMzIxNGUyMzFhMWM0NTkzZTVmYjMwYmM5ZGJkYjNhMGRiMmU4YjUxOSBwZXAtMDM4NAorODY5ODMgMjJmMGNmMWEyNzExYjI0NDcxODAxMWY2NzYzM2RkNGQ4ZTA4M2Y0ZiBweTNrCis4Njk4NCBmNzRmNWEwODNiNmY3ODU3YjdmNzU0Y2JkMGRhYTJiNGE4NWE5OWI0IHB5M2sKKzg2OTg1IDgzYWQwMGEzYTQ4OTE4MTY1MmQ0YmYyZWQ1YmFkYzNhYmM0MjZlZGQgcHkzaworODY5ODYgYjAzNDgzMjQxNGY3ODc4MDZkMmFhNTNhOGY4Yzc2MWE1YjkyNWEzMyBweTNrCis4Njk4NyA2NjVmMGZjNmRkZDdiZjM4ZGY1MDExMTkxOWQzN2Y2ZTUyMzM3ZmE4IHJlbGVhc2UzMS1tYWludAorODY5ODggN2NlOTAwMWQ3YTc3MWQyNDRmNDI5Y2ZhMjU0ZmEyZWRlMjhhNTcxYSByZWxlYXNlMzEtbWFpbnQKKzg2OTg5IDMxODJjNjA4N2U1MmVlMTBmNmFlMTRkN2ZjNDgzMDg3NDE2OGM2MGYgcGVwLTAzODQKKzg2OTkwIDU1NmRmMDg3ZGU0ZmMxMzJlOWRkNDA2ZDA4NGI5ZGUzMjJiNWJiOTEgcmVsZWFzZTI3LW1haW50Cis4Njk5MSBlNzU2ZWM4ZjQxNDNiYjlhM2YxNDgzYzRjMzIyNjA2NzIyYjI2MDdmIHBlcC0wMzg0Cis4Njk5MiA1YTcyM2I3YWVmYjcwZjcyOGNjZWYzZDUyMzUzYmM1YWE0MTExNmIzIHJlbGVhc2UyNy1tYWludAorODY5OTMgNGM5ODQ0NzMyOTI1NzMzOWI5NTlkMTdiMmUzZmIwOGNmMjVlYzgyNCBweTNrCis4Njk5NCBiZDNiYTg5OTQyZTMxNmQzNWNhOWEyMjFjNTJlNjQ5MGI3ZGY4ZDA4IHBlcC0wMzg0Cis4Njk5NSBmODk1YTIyMjFmZTEzYjAwOWZkYjViZTAyOTViMWM2ZDJiZjkzYTZmIHBlcC0wMzg0Cis4Njk5NiAzZGZlYzhmMTRlNzMyZTdiZDZlMDM1ZTY2YjQ1ZjIwMmFjMTlkOGI1IHB5M2sKKzg2OTk3IDNkOWE4NmI4Y2M5ODA0NmYwZDc0NTY0Nzk4Mjk0MTBlMzg2YmU2YjMgcHkzaworODY5OTggNjJiNjFhYmQwMmI4ZDcwOTUzOTc2ODc4ZWQ1Y2UyYzIxNTc5MTRmYyBweTNrCis4Njk5OSAxNDg2NDE2Yzg2ZDk3ZDgyMTgxMDczOWJiZmFjZmQ4ZTNjYmE3Y2Q2IHB5M2sKKzg3MDAwIDZiMDM0OTFlZTE3MWI0OWJmMTcwZTMzMmMxZGVlZTYxOTBlNjBlNGIgcHkzaworODcwMDEgNGNkYWZiMDJiMjBlMTU3NDUyYWY0Njk3YWZkOGNkN2RjNDdjODM5NiBweTNrCis4NzAwMiA1ZWM0ZWQ1MThlZjhmZDg0OWM5MzM5NmJjMGJhMWY1MWE2ZWUyMTU0IHB5M2sKKzg3MDAzIGE2ZTk0OWE2ZmZjOWM5ZjFkNzI1ZjU4ZjA5ODAxMTdiMTdiYTU2MGIgcHkzaworODcwMDQgZDYxODNiY2ViZGRlNjgyZTk0MzIwNjYwYWFjMThlYzJkZTk4OTYzZSBweTNrCis4NzAwNSBkMjliNTVhYzE2MzE5MzgwNjBmOTQyNGI0YTE0Zjg5NDJkOGFkOTg5IHJlbGVhc2UyNy1tYWludAorODcwMDYgN2MyM2E2OGZhM2RlODZhMzdkZTk5MWY2YTE2YmJhNjk0NmIyZDY3YSByZWxlYXNlMzEtbWFpbnQKKzg3MDA3IDdiNmFmNTZlZTc0ZDA4NDcwZDBjMTEyODViNmMzZjE1YzBlOWM3N2IgcHkzaworODcwMDggYTJmYWJlMjI0ZTg3MzYzMjEzODMxODdlMmI4ODJlOGMzODhiYTg0YSBweTNrCis4NzAwOSBhOTA3MTEwZGYyNWEwODk3ODliZTBiODdjNTMxN2JmNzRhZjE4OGUyIHB5M2sKKzg3MDEwIGIzN2RhNjBjOTA3MmExNjMwMGU1ZWUxMzNkMzM5NmI2ZWE3MDRiNjMgcHkzaworODcwMTEgNTZlZWQ4ZjQwN2JmOTQ2OWE0ZGQyNmZkYTE0ZjhiYTRiMDM0YzQ4MyBweTNrCis4NzAxMiAxZDM1MzFhYWNlYTBlMTA5NWRmZTU2NDYxMzc0ZmQ3MmFlNjI1MDBjIHB5M2sKKzg3MDEzIDRkZjhiNDM0MmU3MDI0M2Y3OTUxNjEwNGE2NGIzZTkxOTdmNDhiODMgcHkzaworODcwMTQgYjFlNzg5NjMxZGJjNDIxZDNiYjY0NzVjYjJjYTI4ZWUwMWE3NTkxZSBweTNrCis4NzAxNSA1MWQyOGEwZDFjMzJlOGQ4YmZhNWEyNDc4NWRjNDQwMzljYzc2ODc3IHJlbGVhc2UzMS1tYWludAorODcwMTYgM2FhZjM3YzI0ZGI4ZmE3Nzg2ZWVkYWNjNGE1ZDc3ZDJhMzNlM2Y3MyByZWxlYXNlMjctbWFpbnQKKzg3MDE3IDJlMWZjZjI4YzkxNDVjZjY3MGFjOGVlN2VkOGUzNGRhNjRkMDNhZTQgcHkzaworODcwMTggODkzYjA5ODkyOWU3ZWZlZTRmNzUzYjVkYWU5MDg1ODM1ZDNiNzUyNiBweTNrCis4NzAxOSA3MTNjNmI2Y2E1Y2UyMmVhM2NlZGE4MGRkMWNkNGFiZWZiN2EwNzc1IHB5M2sKKzg3MDIwIDhiMDJmN2Y5NDc1YjJhMzc0ODlhMTcyY2Q4ZWVmYzMzOWI2Zjc3ZjcgcHkzaworODcwMjEgZjM1YTZkN2UzMjVmZjUzMmNiMzk2NTU3YTYzNmVmMjU2NGYzZTExZSBweTNrCis4NzAyMiA0OGM0MDcwOTQxN2I5YzYwZGM0YmRjZmI3YzBkMzc1MTI4MTZiM2Y0IHB5M2sKKzg3MDIzIGY4MmVlYTQ3ODFmMTU2M2EzNTgyMTk4ZDdkMzAyMzNmMGVhOTBlYzQgcHkzaworODcwMjQgNzIxNGRjNWJmZjVjZmI3OTg5MTU0NTczNzM0NDhjMWZhMzQ1YWViNiBweTNrCis4NzAyNSBjMjU3OGE2ODg3OWQ5YzViN2ViOGNmOTMzYzI3MzFjN2EzZDhjZmYxIHB5M2sKKzg3MDI2IDI5NmU2Zjg1ZjU2ZDQxNjMwMWE3ZjU5NWI3ZGI4NmY1Yzk4MzFmYmQgcHkzaworODcwMjcgZDU4MmRhYmIzMGY4NWI3NzBmMDJmZDczOWQwZTRhMTI3ZGQ5YjU5ZSBweTNrCis4NzAyOCA0ODQ1MGYwNTk3MGI5MDA4MTQxYzc2MzZmMjMzZmQyMDdlMzUyNzUxIHB5M2sKKzg3MDI5IDhjYWJjZjRmOTAzMzhiNWE5YTUwNTU4ODcyODhjZTZkMjMxOGIxMDYgcHkzaworODcwMzAgYmVkZTgzZTIwODUzNGMyZGFmYWRkYmYyZjYzZWEzZGE5ZDY0MTQyMSBweTNrCis4NzAzMSBkZTdmMjhhNjQwZTVhNjljYjZjYmVjMzRmNzNkODZjZWJiNjI0NjQ0IHB5M2sKKzg3MDMyIDU3M2E2NzI3NjIxNzFmMDRkMjE2MGQ0MjE1YjJjYThjNTMwODY1NGUgcHkzaworODcwMzMgYThmMzg0NzYxOWY0ZGIyNDg3ZmJjNmI3NjM0MDE2NjEzOWVmN2U4YiByZWxlYXNlMjctbWFpbnQKKzg3MDM0IDliNjAzNjExZjZkNGM2ZDRhYTQ5ZmYzNmU3NmY0OTZmMGZiMGZiMjQgcmVsZWFzZTMxLW1haW50Cis4NzAzNSAyOTQ4MDZjYWM4YzU0YmU1M2JiZDVmNWU4ZjA0NDdhNWQyMjdjZDQzIHJlbGVhc2UzMS1tYWludAorODcwMzYgZGRjNmM0N2JmODI1ZTM5OGUwZjRhZDUxZTA0YTEzOTAxNDhkZDNjOSBweTNrCis4NzAzNyBmMTRmNjE5ZDcwNTAwMjc1OTA0NWUwMjY0NGEzZGVhYmI2MzlhMmQ1IHJlbGVhc2UzMS1tYWludAorODcwMzggYjMyZDE5ZWI0MzM4ZWMxNTZmZGU4NDI1YjQ1NjJhMDk2MDMyNGYxMyBweTNrCis4NzAzOSBmZDYzOGNhNzQ2MzRhYTE3ZmMzODI4N2Q0NjU2NWExYTkxM2ExYTc1IHB5M2sKKzg3MDQwIGFlM2ZhNzgxZWVmMmU0MDM1ZmMyMWFjODkyMGUzY2RkZTU0YTYzNjYgcHkzaworODcwNDEgZjFiZTM0OTIzNGMzZTRkZjQzZDBjZjNiYzU5NzllNWIwNDJiZjlmZSBweTNrCis4NzA0MiBjYjZkNWQxNTFiYjQyMWEzNjA2MDZjN2YwODE5Mzk5YmZiOTBmMmUzIHB5M2sKKzg3MDQzIGYyYTRhZGUzNmExZWE4MTMwNTRjOTJhNTZhMjdiZDdmZWUwNmViNmEgcHkzaworODcwNDQgYjU1ZjNkNjM5Y2Q4NmY5NTQ3ZDU2ODNjZWRjZDgxNjdjYTkwYjZmZCBweTNrCis4NzA0NSBjMmNhODY3Y2RkMWEyMDc4NzAxMGUwMzNkYjQ4MzBlNGJkMzYwNDQzIHB5M2sKKzg3MDQ2IDVlZWJlNGFkMGQ4NzhkNTE0MDdkYWVmYWZjOGMwZDc5MjRjODI5NDggcmVsZWFzZTMxLW1haW50Cis4NzA0NyAwZmQ2YWUwYTg1NjdkYTE4OTFmZTVhZTRkMGRhOTQ1MzVkOTk0NjQ5IHB5M2sKKzg3MDQ4IDk4MzJlOTZlNzMwYTkwNTRlMjA3ZGUyOWE1NDVjNjU1N2ZhMDJkYWYgcHkzaworODcwNTAgNzU3MTFkMTc0M2NjZTY4N2Y2OWJhYzg5NTNmYzk1MjM4MGEwNmNlZSBweTNrCis4NzA1MSA0ZTYyOTI3YTJiZGE5NTk5NDc3MDY2ZDU5YjY3OTUzNGQ3NzMwODIwIHB5M2sKKzg3MDUyIDc3OWEyM2EwOGQ4Y2VlZjA3M2Y5NjhhYTI3ZTAzODcyNzdiYWQ4NjMgcHkzaworODcwNTMgMzM5ZGQ2MjJkZTVhNTgzMjQ4NDE0NjcwNDU5ZDkyOTk5NGYxZTlhZCByZWxlYXNlMzEtbWFpbnQKKzg3MDU0IGJhNzA5YWQzZmY0Y2E2OWNmNmNlODQxN2M2OWExMDFhMTFhYjUxNDcgcHkzaworODcwNTUgMDRjZWMyZTFjYTQxYTg3NGNiODU5ZjYyOGY4ZTRkY2I2OTQzZjU1NyByZWxlYXNlMjctbWFpbnQKKzg3MDU2IDE4MjdhOGFjOWIxOGU5Yzg0NmM2ODU2NGU1NTM5MmU4YmQ4MjQ3N2YgcHkzaworODcwNTcgM2ZlZTg4ZTY0NDJhM2RhMjVmOWY1ZGFmYTY5MWQ0OTczZmNmN2NmOSBweTNrCis4NzA1OCBkZmU4NmRhMjdlNjhjMzhlNjg0OGFhNGM0MjJlNWViMzFmMjIzNTQ5IHB5M2sKKzg3MDU5IDY4MjViMmNkOWI4MWMzOGJkZjI5MDg2ZWI4ZGUzMDcwMTM1ODA4MDQgcHkzaworODcwNjAgM2QxYmNiNTRhODJiNjZjZjRlZmJhNTIxMmFmMDVkZmE0NjQ5MzU4YSBweTNrCis4NzA2MSBiN2YwOGEwYWVhMjg4NjUxMmQ5MWEyZTdjMmY0ODRmYzg2M2M3OGVhIHJlbGVhc2UyNy1tYWludAorODcwNjIgMTEwOTRiNTI4OGY5ODk3ZTIzYWM1NzU4NmQzNzZlNzlmOTQwYWI0OSBweTNrCis4NzA2MyA1NmY0MmUxODRhMTk2ZTk4NzA4NDZjZjA2ZDgwMTZjZmIzNzRhNjA2IHB5M2sKKzg3MDY0IDJmNWNkMTg2OWIxYTVmNmMxYzNjMjFiOWUxYzk2MWYxZjUwNWQ0ZWEgcHkzaworODcwNjUgZWM3OWFhZjhjMGJmYzJjMGYzZjNmOTU5Yzk1NTI5ZDkyYjNiZjNiNiBweTNrCis4NzA2NiA4MzU4ZGMxM2E1NzQ4NWIwODk4ZTZjZjRiNzFhMWYzNmQ2NDZmNTQxIHB5M2sKKzg3MDY3IDFjY2JiZGRiZWE4ODFlN2JlNjgzMmEyM2Y2YWI0MTc1YTFjYjhmYWQgcHkzaworODcwNjggODM5NTVlNDYxYzRiYTczNWFhZmIzNmM0ODY1NjNjMzQyYTY2NDVjYiBweTNrCis4NzA2OSA2ZmI1NjQwNGI2YmIyM2VkNTI1YWRkZGE2MmNlNGFjYjY4ZjIyZWRkIHB5M2sKKzg3MDcwIDRkMGJmYzMwMzcyNDY0OTMyZTQ5MmVlNTcyZmIyZmQ1NGFhNzRmMGQgcHkzaworODcwNzEgYzM4ZGE0YzU0MTg0ZThmMDdhZjdmOTkzOGY0YmM2MzQ3NGNmNzI1NCBweTNrCis4NzA3MiAwNzMxNzZmMDM4MTNmMGU0ZGEzMzNmNjliYzA4MDY3YmFkMWY0OTgyIHB5M2sKKzg3MDczIDY5YTUwYmE0NGU2NWI3ZjljYTZmZDU2MWU1NzE3MGIwNzQ0MTc0MGIgcHkzaworODcwNzQgMjg1ZTBjZmJmOTBmMzEzODlmMmI5MDllOTUwNWI2ZmJiOWY3MzkwMiBweTNrCis4NzA3NSA1YzNhYzg3OTVlOWM0ZDQzNzMzNjUyZTdhNDE0YjdjYTAyYWY5MjFjIHB5M2sKKzg3MDc2IDY4MWE4ZTg5YzY1YzgyMzhhZGFlNmU0YWU3ZWU2NjA0NDJkYzcwOGYgcHkzaworODcwNzcgYjM2N2I1MzJhODIzMzlhNGM0MzEwNDFjZTI4NDRmMzMwOWM4NTI5ZiBweTNrCis4NzA3OCBjYjNjZWJjZWJhNTBmZDJhYTdkODE0NWQzNjU3NjA3YWFmNGMwODRlIHB5M2sKKzg3MDc5IGI4ZWVkN2E1NmE4Y2VlNTQzZDUwNWQxNmE3MTg3MGY5OGZhMzA3ZGIgcHkzaworODcwODAgNTlmOTcyYjFkNTY3MDFmMTVmZDZhZDhlMmE0MzI0ODQ0OTQwZDc3MSBweTNrCis4NzA4MSA1OTdjMzA2OWFmZDM5OTE3NDcwMTBiMjc4NWI3NzVkODE2MmIwOWUwIHB5M2sKKzg3MDgyIDNmMjQyNDRiMTBmZDg4ZDZmYzM0Y2IyNTg3ODU3Zjg3MGQ2MmNjMjQgcHkzaworODcwODMgODE3MDU1NTQxNmFjNDQ4ODIzZTM5ODE3NDE0MGY4Yjg5MjFhYjIwZSBweTNrCis4NzA4NCA1ZjI4NmJhMDEzOTZlNzMzOGU4NzFlNTVlMDA2YmY1MzFlZGM3ZmVjIHB5M2sKKzg3MDg1IDQ5NjViZTkwZmUxOTlhODMzNzJkNjYzNTM5OTI0MDJmNmZkZWY2ZWEgcHkzaworODcwODYgOTAyZGI0NzIyNTk0YzJmOTA1NWU1NzJlM2Q1MjY3MjU2NTU5NzM5NyBweTNrCis4NzA4NyA5MDc5ZWNkNDMzYTIyNTg5NDU2YTg1YTg5MDM4MDUwNTE5YTE3ZWIxIHB5M2sKKzg3MDg4IGI2MzVjZWE5NDE5NTc4MGM4NzE2ZTIzNjQ3OWFmMzE5YmNjMjYyNTMgcHkzaworODcwODkgZjQ0OGRkNmI2N2RiYzBmZTU2OTAxNWNlNmJlNTA2NGRiYzhjM2Q3OSBweTNrCis4NzA5MyAwNjI5MDdmNjg1YWM0ZTcxZmU3MTdiYTBiMTkzYWJiNDZlOGZjYzFmIHB5M2sKKzg3MDk0IDIzZmY0YTBjMzc1YjMzMzJhOTdlNTc5ODA1OGJjMzczNGRlZmNhMDEgcHkzaworODcwOTUgMWU0YTZlNTU3NmFmNGU0NzAyYmFkYzhlMGZhN2NmYWU1ZmUxYWQ3NiByZWxlYXNlMzEtbWFpbnQKKzg3MDk2IDI2ZWRmYjI3YTBjZThlOTQzYzVkYzhkNTYwNTVjZGY0Nzc2YzczYmUgcmVsZWFzZTI3LW1haW50Cis4NzA5NyAwYWUwN2NhYWI1MDZmZWYxNDgxMTlhMWM1ZDJjZTY5MDJhMDhkNTI3IHJlbGVhc2UzMS1tYWludAorODcwOTggMjZjNjU5MzU3MWYxZmFlN2QwMjM0M2YzNjJkYjNlOGEwOWZiNTMwMiByZWxlYXNlMjctbWFpbnQKKzg3MDk5IGUxMTViMmJmYTlkN2M2NTM5ZDBkODFmNmI1NWEzZWY1MjZlZGNmM2MgcmVsZWFzZTMxLW1haW50Cis4NzEwMCAxNWE3NTcwZTNmZmQwM2QyNzZlMGFhZGVjMjI0ODE5NzgzZTI2NmRmIHJlbGVhc2UyNy1tYWludAorODcxMDEgMzBlYWNhNDczNWNiOGM4ZTYxYjVmOTJmYmJhOGVkNGE0ZWZjZTIxNCBweTNrCis4NzEwMiBjNDg5OGNlZjQ3MTVmMDhmZTczYmMyN2M2OTNjNGViZjM1ZjgwZGJhIHB5M2sKKzg3MTAzIDI3ZDZhYTRmMTgxMTFmNTIzODg0MjBlY2Y1NzcwYzMzNDRlYTA5NjEgcHkzaworODcxMDQgMjUxM2Q4OTJiMjU0MThiNWQwYWEyYWJlNTUzYmU5Mzg1NTc1YzIyYyBweTNrCis4NzEwNSA4NjhkNTZhYzFjNTkwNjYyOGYzZTgxMjJkMGVjMTNlZjNhNDhlYTkzIHB5M2sKKzg3MTA2IGMyMzQ5YjZiZmZhZjJhNDlkM2FmNDNiNmY3ZjgxZGY4ZmE1ZTRhZmMgcHkzaworODcxMDcgNGE5NGMyZGJmOWU4NGE0NTFlZmM2NmJhMzVhNGY2NzI0NTFmMGQxNSBweTNrCis4NzEwOCA4N2YyM2M3OTQ5ZWU4MTA5MzNmOTQxN2ZjNWM5NDYyYTE5NWVmN2RlIHB5M2sKKzg3MTA5IGExZjM2YjkzNzNiYmFmMTkxZjUxYTgzMjljOGViODRhMGQ2YzcwZGEgcHkzaworODcxMTAgMzkwMDk4NDE0NzFiNTk3YTNiMmI3OGU3ZjVlM2YwODNlOTkzYTJhNCBweTNrCis4NzExMSA2ZWYxYWVhZTQyYmViNmVjODUxZWRmYjAzMWNjMjA1Yzk4MTExMzIwIHJlbGVhc2UyNy1tYWludAorODcxMTIgMTFmYzZjMzgwOGI2NDA0N2ViZWMyNGIzMjQxNTZiN2MyY2M3MWQ5MCBweTNrCis4NzExMyAyZmIxZWM1YzczNWViMjAzN2FmZGQxNTZiZTAxNDVmMjQwZmNiZjRmIHB5M2sKKzg3MTE0IDEyMWVkODQ4YzY3MGIyYjUyZTZlMjZkYjgzMjFiZGY0MDc1OTE3OTkgcHkzaworODcxMTUgMzk2ZDlmYTRmYTI0MzJhZmY4OGY1ZTRlN2RmYTY3OTZlYzdlOTVmNCBweTNrCis4NzExNiBhYjEzNTUzNzAyZjU1YzI1ZTFiM2I2N2I5Yzk1ODQwYWU0Y2UyZmFjIHB5M2sKKzg3MTE3IDQxN2Y4Y2NjZDIwODlhNjk5ODU0Zjk5YmNjYmExOTgyMzMzYzAwNjAgcHkzaworODcxMTggNTBkZTlmMWE2ZDU0NzAzZTQ5OThhNzc1NDgwNTBiMjFiMTg3NDc3OCBweTNrCis4NzExOSA3ODg5ODRiN2RhNmYyZWVmMTgwNDlmMDg5YzUyNGVmODk5MDI4Y2FiIHB5M2sKKzg3MTIwIGJkZWQwNjdmOTFlOGRkOGI1N2NiNmI2MzFkODYzNjMxOGM5ZGYzNTQgcmVsZWFzZTMxLW1haW50Cis4NzEyMSA3NWNhYjZjZDk3YzYzNTIzYTQzOWIxMjE5NTI3ZmI1ZjQzNTEyZWJiIHJlbGVhc2UyNy1tYWludAorODcxMjIgNzg2ZmJlZDc4ZDU3ZDc3NzI1MGMyNjBlNTc0ODgwODM0NDU0NmQ5ZCByZWxlYXNlMjctbWFpbnQKKzg3MTIzIGFhMzBiMTZkMDdiYzQ1NGZmYjYyNTU2OGExZTRhMDE4MTliZjAzYTUgcmVsZWFzZTI2LW1haW50Cis4NzEyNCBmNGY1NmVmYTI4NzAyMDFjZmNkNTM1ZTA1MzRhNzY4Yjg2ZTg3OTI3IHB5M2sKKzg3MTI1IDllNzJiNmQwZjQ4YmEzZjkyNTdiZmU2MmJiNzc2MjYxNjUyYjI2NzMgcHkzaworODcxMjYgMDgyMWVmMTIyZDUzMWRjZTFhNzkzZjI2ZmY3NmQxNDlmNDgxZWNmNCBweTNrCis4NzEyNyBhNDZlMTllODY2ODAxNjUzMzk2MTFhYWFkZTQ3YjMwYjFlMDc3MmYwIHB5M2sKKzg3MTI4IGM3MThjYjc4NmFlYjVmYzU4MDI5N2VlY2RmMjA3MmYyODY1NWVlODggcHkzaworODcxMjkgMzI0ZDkzZDY4NTMzMWRmNmFmOThjYTg0ZTNmOTdmOTRkZjA4MmM0MyBweTNrCis4NzEzMCBkOTRkMzY1ZDdjZTVlYzZmYjA1ZTgyNzQwNjA0NjY5MWVhNTA2Y2ZiIHB5M2sKKzg3MTMxIDUyMjAxMjJlM2U5YmM3ZDM5ZmVhNzM2ZDljOWU2YmUwOTdmM2IzNTUgcHkzaworODcxMzIgN2I3ZjZlZjRmOTljN2ZmNjEyNDAxNTNlZjdiYzVmODZmMzk4ZGM3MCBweTNrCis4NzEzMyA5NWE3M2U0YjJjZWIzZTAyOWY4NmUzYTkxNGNhZWM0M2I5YzljZTY4IHB5M2sKKzg3MTM0IDRjN2UzMmU1OTI4ODU3ZjgwNmIxMzQxYWQyYWZiYTBmODlhYzg3NjYgcHkzaworODcxMzUgMTEzOTI1Yjc5Yjk3YjAzYzZlZWI3NGFiZWI3Y2E0MzAzYzI4MjAwYiBweTNrCis4NzEzNiBkNTc1OTFiZGY2MWU4ZTk4MzY1NGVkYmQyNWM5ZjNiODBjYzFmZDZjIHB5M2sKKzg3MTM3IDUwZDE3MGJiNzFjNzUzMTg2MTQ2N2NjYzU3NWQwNGI5NjgyM2Q0ZTQgcHkzaworODcxMzggYjg0MjYxYmQ2ZDRhNGU2ZWIwYmE3NzQyMTRkMTQyZjRjYWJjNTNhZCByZWxlYXNlMjctbWFpbnQKKzg3MTM5IGUwMDcyYmRkZDJkNTU3MDBhMzhjZmFiZWY2N2RhOThhYTk0YmFkMGIgcmVsZWFzZTMxLW1haW50Cis4NzE0MCA4ZDRmZWVkZWFhZWQzNDVhNGZmNDVhMzEwNWQxZjUxMjc1NWMyYjU0IHB5M2sKKzg3MTQxIDE2OWJmMDFiYjUwN2UwNzg5NGFhM2Q4MzAzZGEwZmM0ZDM4ZTM3YWIgcHkzaworODcxNDIgMjFkZjgxNTVjNzcwZjNjZmE2NjY5NDQwMDEyYzlhOTFjMjIxNDBmZSByZWxlYXNlMjctbWFpbnQKKzg3MTQzIGY4YmVhOTk2MDQ2MjExOGJiNjFiMzNkMGQ3MzQ3YmI2YmU5ZGNjMjMgcmVsZWFzZTI3LW1haW50Cis4NzE0NCA4MDA1NjNhYzA1N2VkYWUzZTZlMjUxZTVlM2JjMDNhODhkOWM5YzliIHJlbGVhc2UzMS1tYWludAorODcxNDUgZDI4MTI2ZWJkNjBkMDJkYTk3MjIzNDVkMTIzYmM2MTE1NjkyZjViNiBweTNrCis4NzE0NiA2ZTlmMzk3YmJhMDI1ZTJhYjNlZTIwNmIyYzU2ZTgxYWRjYjYxODgwIHB5M2sKKzg3MTQ3IGM1MzdiZDM3ZjUwOGFmMTNjMjEyOGY0MmQ1MjFlYTI1NjBlZmEyOTggcHkzaworODcxNDggMWI2NTlhMDA1NzBiZGI0YjdkYjBhNmUzMmZjZDA5NmNkYjNiZGM1NiBweTNrCis4NzE0OSA3NDAzMDJiYjNhZGZiMzg0YjY3NjQ2YjQxNjhiOWRiNDc5ZDgyZTk5IHB5M2sKKzg3MTUwIGJiY2U0MmY2ZGQ3ZGJiZjI2YTk2MTJkMzIyZWY2M2IzYmRmMjU2ODAgcHkzaworODcxNTEgM2M1ODljYTQxZDNhM2QxYjE2MTVhMjY2NGNlYzgzNDBiZjgzODM5NSBweTNrCis4NzE1MiAxNDg2ZDMxNzFjNjg2NzhhZjU3YjE2OTU5NjdmNzg0MmMwNDk2YTJmIHB5M2sKKzg3MTUzIDM4ZGM0MTM5ODU0YzhjYjhhYjZjN2ZhNDhmNDk2NjEzNDk1YzY1N2YgcHkzaworODcxNTQgOWNiMmVjYmIxZjBjYTliNzZlNDJmOTJlYjI1MzdmMjY2ODNjOWUzNiBweTNrCis4NzE1NSA4YzI1NGI2NGE0MzgwNGNkMjkxZjVjYWI5ZjMzMjcxMDcxMzQwOTU1IHB5M2sKKzg3MTU2IDhkZTMzNTYyODU1ZmFmOWNiOTZhYzYzZjhkZjQzMzljYzgxNjhjMzAgcHkzaworODcxNTcgYzg2ZGMyYmQzYWU4MTMxM2U0N2ZhYzkzZjIyYWE3NGQzZmE2ZmQyOCBweTNrCis4NzE1OCA3NGZlNzNjMTA2MTFkMjNkMWUzOGI2MzU1OWRlNWNhMDk5YjlkOGNiIHB5M2sKKzg3MTU5IDczOGVhZWVkMGIxYTI0NzI5ZDE2MDI5ZWQ2ZDQ3ZjM0NmUxZDM0OGQgcHkzaworODcxNjAgNGY4NDk3MjBiZjQxMzczMGY2ZGJjZTdiMjNjZTgzZjQ1ZjE3MTVkMCBweTNrCis4NzE2MSAwMTMzYjhjYjdkODA2ZDM3ZTM1NzMzZDdiNDllOTY1MDZjNDU4OGY2IHB5M2sKKzg3MTYyIDMzMGE5ODUyMzk2ZGY4OGVmZDZjZTkyZTVjYzI5YzM4MzA5NmNkZWIgcmVsZWFzZTI3LW1haW50Cis4NzE2MyA3MjUzYmU5NmExOWViZjE2ODhhNmViYzdmNDgwNDNlZTJlNDhiZTY2IHJlbGVhc2UzMS1tYWludAorODcxNjQgZmE1NWIwM2JlNTc0MDJlMTg5NGY0ZGZjNjM5MWY0NzRmYjM5NjYwOSByZWxlYXNlMjctbWFpbnQKKzg3MTY1IDA0ZWQ5ZGJjNmUwNTFjMzA5ZDY5ZThiOGMxOGJkMTBjM2RjYWYwYmQgcmVsZWFzZTMxLW1haW50Cis4NzE2NiA3MTRiOGUxZWY3MjYzZTI4MDljOWFkOWE1M2YwNTk4YjA4M2FhNTFkIHJlbGVhc2UyNy1tYWludAorODcxNjcgYWMzYzU1MjcxZmRkNDJhMDFjMTNlNjRiZjNhZjZjMjhiZWNiYTcxZiByZWxlYXNlMjctbWFpbnQKKzg3MTY4IGFhOTlkYzhmNzA1ZGZiYTkyZDU1ZmFiNjY0ODFmNGJjMGJiN2RhZjQgcmVsZWFzZTI3LW1haW50Cis4NzE2OSAyMDdlYTlhMDUwNjJmMjQyYTcyNzYxNTAxNmIzNGQ5ZDllYjUzNTYxIHJlbGVhc2UyNy1tYWludAorODcxNzEgZDZjNzAyZDQwZmZiMmRlOGUxYmY0Mjc1NjJmNTBjNTE3NTUwYTcyYSBweTNrCis4NzE3MiAzNTMwNzlhZjRmNTI3NWM5MTE5ZDIzYTE1YTQ4YzMyNGQ3MTRkOTY1IHB5M2sKKzg3MTczIDcwNDM2YjQ2ZTQzNGQyZDkyZTg2NDg3NDk3MWEzM2FmMGE1NGFkNGYgcHkzaworODcxNzQgYjFiZGVmNTY5NjZlZTEzNDlmYjY5MTM4YjExNDM2MTQ2MzU4MjU3ZCBweTNrCis4NzE3NSA4ZDM4YzZhMjcxODFjMWQxNTdkODYwMDE3YjM5NTQzZWY2MDZhNzVjIHB5M2sKKzg3MTc2IGE4MTFmN2MxMGU4MjUwZmI0ZTM0NDgxYzE2MDQxNTZjZjIxOGM4ZGUgcHkzaworODcxNzcgZjIyZDkxMzMyZGI5NGY2YTNmNjBhZGQyOGE4ZmU4NDM0MDY0YmU0NSBweTNrCis4NzE3OCAzMDZkODhhMzIzNTcyM2QzNTNkNWQxMjdmODUzMGQ2ZDk3NmEyZWU1IHJlbGVhc2UzMS1tYWludAorODcxNzkgYjk3ZDg0M2Q2NDU2Mjk2ZWExMzc0MThhOTVkYmY5NjlkZmVmYzZkNyBweTNrCis4NzE4MCAyNjNjOTk4YjJmNDU5Yzg3MTU2MWUyN2Q0NTA5YTMyYzRkYzIyZjcyIHB5M2sKKzg3MTgxIDNiNjI4NTU0ZTFhYTE1ZTNmODJjYTc2MWE1ZmQ4Y2EzYWUxZTEwYzIgcHkzaworODcxODIgNjEyZGQ1ZjJhYWIzMWE3NmRiZThhZTg5MWUzYjQyNTI4OTYxZDc2ZCBweTNrCis4NzE4MyBjZTI4Nzc2ODczNzAwNmU1MDliMTA5YWM5NjRkYTgxNzJhZTkwZWI3IHB5M2sKKzg3MTg0IDUzYmRmMWM4MTQ4NmJjZWRhMWY0NTg4ZjVkYWJiMDk2NjliZDljMDUgcHkzaworODcxODUgMmNmN2JiMmJiZmI4ZWVmN2I2OTQyNGE2ZjYwNDI2MDc1OTU3ODc5NiBweTNrCis4NzE4NiA5OTliMWFhMjQ2NzgzYWVmOTBlMjY3NWE4ZjM3MmFiNTBhYjhmMWJlIHB5M2sKKzg3MTg3IDE1NTMxY2JlM2Y1NWZkM2VjZjFmMGU0NzM0Yzk4Y2MwMDJhNjA0MWEgcmVsZWFzZTMxLW1haW50Cis4NzE4OCAwZWFkZDFiMmQyNThjODA0NjIyMDdiOTk3MzRiYzFkNjJiMzljNzhlIHB5M2sKKzg3MTg5IDViZmE0MzZhMjg3YmYwNDA0NzBiMmU3OGZkYWI3ZWZkMzMxNWY5NDIgcHkzaworODcxOTAgN2FjYTMyYTI4OTBlZjIwNGE2ODhmMDliZTRjNTIzOGFhYzYwMDg4OSBweTNrCis4NzE5MSA2NmQ5ZTM4ODE3NjEwMjJhMjc3YTlkZTgyMzRhYjQ1NWQ1OTBlNjk2IHB5M2sKKzg3MTkyIGQwMmU3NmRhY2U1YmYxMWUzMTM3NTc1MmVmMjRlODkyOGYwZTM3MTkgcHkzaworODcxOTMgNTU0ZjI2Y2UzM2UxOTk5Y2NmOTI2YzBiYmQ3MmQ4OGFjZGEyMjI1NyBweTNrCis4NzE5NCAzMjQyZmQxNzcxNjY0ZWIwNzRmMDY3OGIyNTBiNTllYjM0YTFjYjkwIHB5M2sKKzg3MTk1IGI3NDA1MWNhZDcxNzgyMzcwN2VhMDQ3M2EwYTgwYWQ4ODFiMWFiYjIgcmVsZWFzZTMxLW1haW50Cis4NzE5NiBhOTFiMzE2OGZjZTI5ODFlYmUxZjU3MzI2YjcxZWE1YmRkMTY1NmEwIHJlbGVhc2UyNy1tYWludAorODcxOTcgY2ZlN2NhMWE3YmFiMjQ1ZjU5Y2JkZmIzMzYzNWRjMzgwNjQxZjkyMiBweTNrCis4NzE5OCBmMzEzMGMyYzQ2ZjVhNGVlNDNhMWQzZGQwYzZiZWI1ZGI2Y2JhMThhIHB5M2sKKzg3MTk5IDk5ZWNhNjJkNjkxOTk0YjY4MDZkOWU0NWVkNzZiZDZhMmNjODU4OTkgcmVsZWFzZTMxLW1haW50Cis4NzIwMCA4MDgxNzYyZWI2ZDFhZWMxYWU2MDk1MTg2OGY4OGRjZjZjMmFhYTU0IHJlbGVhc2UzMS1tYWludAorODcyMDEgMTBlZTRmMzJiOTFjNDAyYzg0N2EwZjQ1NTU1YTUzNzIzM2RlMGIwMyBweTNrCis4NzIwMiBiN2NmYjVmMGZjNTViMzY2MzY3MDljYzEwOWQ3MTU3ZTlkNmI0N2JmIHB5M2sKKzg3MjAzIGVkMmFjMjEwODRmNGQ5OTM2NDI1NTFhNDNhNWM4ZmNlZmEzYmU3MGIgcHkzaworODcyMDQgMjg3MmY0NmU4MTk3MGQ0YTA0YzhlNWMzYmIwY2ViNDM3YzJkNzhjNiBweTNrCis4NzIwNSA0NzA4OGU1Y2I0MDEzMWZlYzM0ZTNjZWFhMmM4YjZjNTcyZWIyMjNmIHB5M2sKKzg3MjA2IGVhYjhmOTFmNTc1NGRkODdlZDhiZjdmNjhkYzIxNjBjNTk0NDQ0ZGIgcHkzaworODcyMDcgZGUwNWQ4NDY3OTVlNGI3NzYxYTIzMmYzNzMwMDljZDYyMWU2YjU0ZCBweTNrCis4NzIwOCBmYTNkMDc4NzI5OTM0MTExMGU3MTUzM2RiM2U4Y2JlNmQwNjZmM2JiIHB5M2sKKzg3MjA5IDA2MjA2ZjAwMWJjZDRjNzIxZTMwYmIyNmIyYTgzZThmYzE0MjM3YWQgcHkzaworODcyMTAgYmM4ODA5YjNlNGJlN2Y1ZjFhZjE4MzNiYTUwNTQ2N2EzOWUxMjY3YyBweTNrCis4NzIxMiBmN2U5ZWE4YzYxYTAyNzc3NTNjZjI2MDZjMzdmMDFjMWU2NTYzYmQwIHB5M2sKKzg3MjEzIDY2OGM0MjE4YWUyNmU3MzZmZDJmMWQ3NTVkMDljMzExN2MzZjM0NGYgcHkzaworODcyMTQgNGY4MWI1ZDM1NmNjZDQ1ZjRmYzllZWFjYmY3YmQxNTVhYjQ1NmJlMyBweTNrCis4NzIxNSA3OTRmNTRiYjk3MTM4MGM0NDM4ZDk4NTQxYjZjN2VjMmM1YWQ0ZWJhIHB5M2sKKzg3MjE2IGY4Y2Y5NzMxNGFlZWFlMzYwZjRmOTlmMjc0YWY2MTgwY2E3ZDM3YmYgcHkzaworODcyMTcgYzI4NzcxMTc3ZmM0MDVmZDAyZWEzNDVhYTk1YjBjNDI1YTBhZmVkYiBweTNrCis4NzIxOCAxOTExNjE5MWQ1MmQ4YWIzZDllZmE2YmZkNTg3MjU1MjhlNDkyZTQ0IHJlbGVhc2UzMS1tYWludAorODcyMTkgYmFmMGQxODllZDA3MzRiNzRmMmQxNDMzZTVlMzkwNTQwODgzMGRiOSByZWxlYXNlMjctbWFpbnQKKzg3MjIwIDE2YjZhZTc1ZGU5NDY4MjAzY2YwZTM4ODgyNzM1NzAyOWIxMTg3YWEgcmVsZWFzZTI3LW1haW50Cis4NzIyMSAxMGJmZDNjMTI5ZGFlMjcxYmFkNjc2ZDc2MmRkZWNmNGU1ZjJlYjJmIHB5M2sKKzg3MjIyIDI2MmJhMGFiNGUyMWVmMWU3OWM2MDJjMzY2ZTgwMDgwOGZhMTU3MTQgcHkzaworODcyMjMgN2Y4Y2RjZmJiMDhlMTgzNWZkZDQxZDg3MGQxZjNjMGU5ZWE1ZTI4NyByZWxlYXNlMzEtbWFpbnQKKzg3MjI0IGFjOGRhNTU3ODQ5M2M0ZDRiMDA5YjU5ZWJhNWZiYWQ3YzA3YjNjNDcgcmVsZWFzZTI3LW1haW50Cis4NzIyNSBiMDg0YjUwZTRhYTZkYzkxODNkYzBlODI3NjQ4N2Q5NTc2ODhiODJkIHB5M2sKKzg3MjI2IDcxZmIwMzI3NGE4OWNjM2E2OTc5Y2MxNGQ3NjczYzdhNjE1MTE1NGUgcmVsZWFzZTMxLW1haW50Cis4NzIyNyA5YWM4Njk5ZDg4ZDYxZGIzMWRkZDRlZTNiNWFkZGU0NDk1MzEzYWZkIHJlbGVhc2UyNy1tYWludAorODcyMjggNmY0NmFmYzUxNDM0Y2E4OTEwOTY3OWExYThmMjU1MjJiYjBjNjViOSBweTNrCis4NzIyOSA1OWI0M2RjMzQxNTg1MjliYTIwOGRlZGViZGQ3M2ZkY2UzODFhNzRkIHB5M2sKKzg3MjMwIGRhMjBlN2EwMWZhNjNhNmQ4YWIzNGYyMTBkYTEyOGNlNDQxNTY0ZWUgcHkzaworODcyMzEgNjliODU5NjRlYzg4ODM4MDA5MTk3OWExNzU4MDY3YjA0ZmYzNzY3MCByZWxlYXNlMzEtbWFpbnQKKzg3MjMyIDhjY2Y1OGIwYTVkYTc3NjAwNmQ3ZmM5OGQ5ZTY5NzVjODIyNjVhNzggcmVsZWFzZTI3LW1haW50Cis4NzIzMyA3Njc0MjA4MDhhNjJhZWZhMzFiNGNhYWQxZjYzMDE0YTVlYjdmYzBhIHB5M2sKKzg3MjM0IDA3MmVlM2Y3NDNjMjFmMzc3MGNjZjEzYWQ0OGUxMGExODA0ODA2M2YgcmVsZWFzZTI3LW1haW50Cis4NzIzNSBiMDY2YmQwYjY0ZTdjZjY4NDJmODhkOTg2ZmM5YzI5ZDdjMzUyYjQzIHJlbGVhc2UzMS1tYWludAorODcyMzYgMTIzODFmMTllMmFkZmM4ZjE2ODUwZTljNjVjNmNhNjcxNjcwMjhjMSBweTNrCis4NzIzNyAzMTEwZDRhNDg4NzhiNGQ1MTdjMjAzMDI0Yjc2YTBjNjdjODdmYzQwIHJlbGVhc2UzMS1tYWludAorODcyMzggZjNhZDUyZjY2YjhhNDJhNTc5MzkzMmM3MjJkMDQ5Zjg5YzI2ZWRjOCBweTNrCis4NzIzOSA2YWZiZTQ2MTJkNDk0M2JmN2RkM2I1ZDQ4NWI3YjRlMjc4YzU1OTk0IHJlbGVhc2UzMS1tYWludAorODcyNDAgNzlhMmI2YTEyODA1MTFkZmJmM2I4ODVmYTAwYWU4NjcwODQwODAxMSByZWxlYXNlMjctbWFpbnQKKzg3MjQxIGQxOGY0MzEzYjE5N2U1NmIyYjIyMWQ0MzgxNjgyODNiM2NkZjBiYTggcHkzaworODcyNDIgNzgzZjMxMWNhODY5M2NlZTAzMmRmZGQ0NzlkYTVlNjFiMDUxZGE1ZSByZWxlYXNlMzEtbWFpbnQKKzg3MjQzIDhkNzE3MWIzY2RkNjlhNzM4NzhlYWMwOTQwODlkMGU3ZWIzNGRkNTAgcmVsZWFzZTI3LW1haW50Cis4NzI0NSBlMTU2NTE5YTFjNjAzNzQ0ZjcxNzJlZWM3ZDc3ODQ0OWUyY2Q4OTE1IHB5M2sKKzg3MjQ2IDM4YWFhNzJjMDEzMWE5NTY5MjgwMTY2MTUzMjAwNzE4OTAwNWYyZjggcHkzaworODcyNDcgZDZjY2JkM2Y1YjQ1NTFjZTRmZTJkM2QwZjAzNGE3NmU5NjcyZGZmNiBweTNrCis4NzI0OCA0MGY1NDM2MzY4NDZjNzhiNmMwYmM2MTQ5NmJmNjE4NDIxZTFhMzAyIHB5M2sKKzg3MjQ5IGY5ZDA5NTU5NmVhOTY0MDFkZDkyMDkyYTU4ZjllOWE5NDAzZTcwNWEgcmVsZWFzZTMxLW1haW50Cis4NzI1MCBkNzA5ZDExNGNkZTNjMDVjNGEwNzQ1NmRjY2JjZDI1YWI1Y2EwYzQ2IHJlbGVhc2UyNy1tYWludAorODcyNTEgNTMxZjQyM2IwMTlkMzFmNTFlMGFkYzQ5YTY4MGRiYTE5ZmJlMjY2YSBweTNrCis4NzI1MiA3YzM3MTViMTBjZGQ0NWJlMmJlZjZiMjAyOGQzMDlkYzQ3YjE1ZWJlIHJlbGVhc2UzMS1tYWludAorODcyNTUgNGVlNDA4NmRkMWI3NDA1ZDBiYzI4ODg4OTc0NjFkNmY1N2NkMWRhYSByZWxlYXNlMjctbWFpbnQKKzg3MjU2IGE2MTU0NDc3OGZhNzQxYzk4NTVmOTE1YTdiY2E3NmU5NDQ4M2EyODMgcHkzaworODcyNTggMWMwMjdhMDgzYTZlOTBiN2IzOWZiNzFkNzYyN2I3ZGQ4NmExZGQwYSBweTNrCis4NzI2MCA4ZTcwMWJmZmU2ZTJjMGIyZTM3YTgxOWRlMmYwN2MzY2VhZGU3ODBkIHB5M2sKKzg3MjYxIDE3ODU4YWIyY2Q5MmE0ODA5ODY0OWMwNDViNDU4Y2Y2NzI5NGFkNmIgcHkzaworODcyNjIgY2ZiN2Y2MzIyZmJiYmFhYmZkZDllYjdkOTIzZTBjYmEwZTIzYzcwZSBweTNrCis4NzI2MyA3OWE5MGZhMDc5YThiZjE4MDI3ZDE1MjdmZTE2YmJjNDg4OTFhOTRmIHB5M2sKKzg3MjY0IGFhNDI4YWE5YjY4YjJhNzIyNzc1NjE3NWMyMDEyNDc2YjRhNzQ4OTggcHkzaworODcyNjUgNDAxMjVjZGRhZmI5MDUyOWQxMmVkMDVkOTFmYjM0M2RhOTk2YWI1ZCBweTNrCis4NzI2NiBhOTZhMmJjY2RmOGEyN2ExMjNjNjc3NmVjMjEzMjY5ZWJmYTgzMmUyIHB5M2sKKzg3MjY3IDAxOWFkOWYzMmMxM2U4YWJhYTI3MGRmMTEwODVjZGVlZTQzNzVlZTAgcHkzaworODcyNjggNDcxNjMwODQwNDI2M2ViMTljNTJjZTI5NmE4YTQ2ODAwNjE1MTljYSBweTNrCis4NzI2OSBhZmU1ZjZiMWM3NjY3NzcxYzFhODI4ZDk3N2IyZWZhODQ3NmNlMDFkIHB5M2sKKzg3MjcwIDIzZGRiZDgzNTk1MGI4OWMxOThkNjYwOTU4MjEyZTNlNTBkZjI5NTEgcHkzaworODcyNzEgYTBmY2FkOTA3MGFkMWM3YzliYzEyMmM0NmFlYmIxYWQ0NjhhNTQyNCBweTNrCis4NzI3MiA2ZGEzN2MzNGY4YTMwMzI0MGU4YmRiZjUxYTE3YjFlYmJjYmFhM2ExIHB5M2sKKzg3MjczIGI1ODA5Mjc4NzIxMzc3NDRiMTlhY2Y4ZjJmM2I5NjNjYmVmYmFlZDIgcHkzaworODcyNzQgNGRjZWMxNDZiOTlkNDZlZWU0NWM0NTE3Yzg0ZDNiYTVjOTA3ZjAzOCBweTNrCis4NzI3NSBhMjhlODcyMTExN2MyNmM0Nzg2MzdmN2RjZmQ5MTY1YjYyOWZlZGU0IHB5M2sKKzg3Mjc2IDlhMmU1NmQxMTQ2ZGYyODMwYzlmNjc4NGZhYmJhNDQ1OGQ0NjY4NTggcHkzaworODcyNzcgMmQyOTk3ZjE5ZTkwYzU5ODZhNGIyODk2Nzg0NDk3NDk4Zjg2YTVlNiBweTNrCis4NzI3OCAyNjEzMTgzZWMwMjUxYjBjODdhZjNhMGI4NjhmYzk0Mzg4NTNmY2Q1IHJlbGVhc2UzMS1tYWludAorODcyNzkgNWI0NDA1OTI0N2RiNjJiYTg4ZjVkNzVjMzBjZjMwOWQ2ZjljNWE1ZCByZWxlYXNlMjctbWFpbnQKKzg3MjgwIDAwZjdmNTFjZThiYTU5NDdiMTIyNTU5ZjY2YTE3NzVlOGFmZTY0ODIgcHkzaworODcyODEgZmYwN2EwNmY2ZDY1ZDBhMzAxNjdlOTFmYjI2N2EyNzkwYTRjOWJmZiByZWxlYXNlMzEtbWFpbnQKKzg3MjgyIDNiNWNjNjYzOGYzZDEwZDQ4MTY1ZDQwYmY0MzFhZDFmZTBmOGI2MTMgcmVsZWFzZTI3LW1haW50Cis4NzI4MyA1ZWMyYzJiZmFkZWQ1MjMxMGRiMTJmMmFjMDg4MzU5NzcwYmQwNTc5IHB5M2sKKzg3Mjg0IDljYzE5NzhlYzlkNDk4YzQ5MTIzM2Y3YTVkYzFmNGU2ZWUwMDljZWQgcHkzaworODcyODUgOWIxNTk0YzE1NDRiN2VjYzg3NDM0NjZlNzFjMDc0MjMxNjMzMTNhNSByZWxlYXNlMzEtbWFpbnQKKzg3Mjg3IDgwZTNhZDVhNjMxZDU3NTNhMzBkNzBkYjlmYzNiMjE3NmMyOTI0M2YgcmVsZWFzZTI3LW1haW50Cis4NzI4OCA0YWUyYzIxMTE2ZjFkZjNkZGE4ZGMzMDYwZjk0ZWFiNzgzZWFkMDk4IHB5M2sKKzg3Mjg5IDdmNTQ5OTA4YmY1MDMyYTlmYTQwMmQ3YzgyYWQ2ZDFjZTZkZmNjOWYgcHkzaworODcyOTAgYTUxYTRmNWU4N2U0OWUyM2IwODY1NTYwYWNhZGI1OWUyNTNiYjUxYyByZWxlYXNlMzEtbWFpbnQKKzg3MjkxIDU2OTk5NDk1YTliYWM1YmI0NWI1NzI3MzQxMjg3YzExZTYxMmVkNzEgcmVsZWFzZTI3LW1haW50Cis4NzI5MiBiNzUwYzQ1YTc3MmNlOGJkOTYxZTE1NjNiN2E0NTA0MzY2OGYyNjY0IHB5M2sKKzg3MjkzIGY1OWNkYTU3YTdmYTgzMzk0MDgyZTcwZmE1ZGU5ZDM3YmQxZWI2NGEgcHkzaworODcyOTQgYWQ5YjVjNWQyODMxZjRiZDAyNWVjMTZlNmM0ZjM0OWRjNDBmOWJhZSBweTNrCis4NzI5NSBkMmQ1MjZkYjI3NzM2YWNiYmU0MGE4N2QyOGMxYjNmMzE1Zjk1Y2FiIHB5M2sKKzg3Mjk2IGNhN2E1ZDEyN2Q1N2NkZDRhZTYzNjE1OWVjODU3NmUwMDljY2UxOWEgcHkzaworODcyOTcgZWNkMjhlODRjNDRiMGY0YzRlNzdjOTZiNTI5NzBkYTg4MGFmZDQ0OCBweTNrCis4NzI5OCA5YzFmY2VkZWYyYzE5ZDVmNWY5OWM3MTFjMGFlYzYxNjE0MWI0NTg4IHB5M2sKKzg3Mjk5IDNkZTZjZDkwMjYyNGM3YjkwOGYwZTBiYWYwYTU4NGU3ZDcyYzJkNTMgcHkzaworODczMDAgM2YxNzUyZDQyNTNiYjEzZmQ5YTE5YWY1M2ExMDc1YmQxOWJkNmE1OSBweTNrCis4NzMwMSAxYWE0ZTVjYTkxNzQyMTc0MzdlMTlkY2E5NTY4NTRmZTE2YzlhOTFlIHB5M2sKKzg3MzAyIGRlNWI5MGRhYWJiNDJlMTIxNDdiOTkzMTA2ODU3M2JjMWZkNWMyOWYgcHkzaworODczMDMgZTA4YzIwYTY3ZjY0N2ZlYWQ4NzhmMzIzN2Q4NzEwMjc2NTg5YjU2YiBweTNrCis4NzMwNCBhNjE4Mjg3ZWFmZDY1OGIxOWY4YjBlNjg4MTc2M2IxMzE1MWYwMjI2IHB5M2sKKzg3MzA1IDAwMzdkNjVkZWJkOGQ5OGM5ZTQxMjdlN2EwMDlmYWZmMzBhOWEyMjAgcmVsZWFzZTMxLW1haW50Cis4NzMwNiA3ZThlYjYzNGYwYTkxYzU0N2U4N2VmMjc0YjIwOTJiY2ZkMDBjMGUxIHB5M2sKKzg3MzA3IDJhYTA1MGE0NGFhODFmNDY1MGE3NWVkNzBhMzFkYjMwYzE4Y2ZiN2MgcmVsZWFzZTMxLW1haW50Cis4NzMwOCA1OWUyMzAyOTdiZmZhZGRkNGQzNmQzZWM5OWJmMGJhY2JiNjI5YjRjIHJlbGVhc2UyNy1tYWludAorODczMTAgZDg0ZWM4NTYwMGIxYTk4MDRkNmI1NGU5NTJkNTgwNWM2OWQwODI2NiByZWxlYXNlMjctbWFpbnQKKzg3MzExIGZkNzI2MTRiOTAzMjEwMWE1N2E0M2E0YjAwZjc5MzBkNzkxMjgxODcgcmVsZWFzZTI3LW1haW50Cis4NzMxMiA0YzA2MTliODMyZTFiY2UzZTI3NmMzY2IwZmEyNGY3ZTQ3MmE0NDg5IHB5M2sKKzg3MzEzIGQ5YjQ0MjY0NzlhYzYxNzhlZTdiZTVmN2IwMjBhZTAzYWUyODNlYzcgcmVsZWFzZTMxLW1haW50Cis4NzMxNCBjNjg4M2VjNDg4ODA0MmIzZjgzMDJkODEwNmVjYmUzYThkYTU5YWY3IHJlbGVhc2UyNy1tYWludAorODczMTUgNWI5MmZiMDJlODNiYzVmYzliODcwNWI3YjZmMDdjMGUyMGExMTdmYyBweTNrCis4NzMxNiBhYjY1MDAzMzQ2YzExYTE1MWM1MmIwZDdjMmE0ODcwMjk4MDI3MmFlIHB5M2sKKzg3MzE3IDQzNmJiYzdmMGFhNjhhYTc1NjU5NWEwNjU2YTJjZDRkMDhkZjA3ZTggcHkzaworODczMTggZGMzMjc4OGYwZTRlMzI1OGJiZDk5ZTU0ZjdkNWExNmQ5MGY5M2M3ZCByZWxlYXNlMzEtbWFpbnQKKzg3MzE5IGZjMmYwYzg2YjQ5N2NiOTM4ZDU0YmQwY2JjYTA4NmY1NWU4M2VlYTQgcmVsZWFzZTMxLW1haW50Cis4NzMyMCAyYzQyOWQ4YzVlZTIwMmEzNzIzODAzZDYzNzdjZmY1ODQ2YjYwZDExIHJlbGVhc2UyNy1tYWludAorODczMjEgODVjMmZlMzFiMTFlYzA5ODQ2ZGVjZWRiYzg1ZDNkNjY4N2RlNzQ4ZiByZWxlYXNlMzEtbWFpbnQKKzg3MzIyIDRkMmI0MjhkNzg4MjI1OGE0MWE0NzRiOGZiM2YyNzYxYzAwZmIyYTIgcmVsZWFzZTI3LW1haW50Cis4NzMyMyBlOWQ5MjRmZTM3ZTAzYTMwNWU2YTZlY2UyYjU2OGQyZmNmNThjZDM1IHB5M2sKKzg3MzI0IGVhOGY5NGNlODI5MzI2OTZkZTJlY2VjMzZmMmQyYWNkNTUwZjAzZTcgcHkzaworODczMjUgYWVkMmJiYWZhNTUwZTlkZmRmNDFkMzIyODU3ZjAyNGI3NWI0Yzc2ZCByZWxlYXNlMzEtbWFpbnQKKzg3MzI2IDIzOTFjZTM1YWQ2OTdmMmIyNjQzNzA2M2RlZjlkODVhOTU4NjE2ZGMgcmVsZWFzZTI3LW1haW50Cis4NzMyNyA5YmZkNmFiZjAxY2EyOWNkZTRmYmVlYzkwZjhlMjQ4Nzk3YWE3Zjc3IHB5M2sKKzg3MzI4IDA3NGMyMTcxNGEwMjc4ZTQ4MjkzNDk1YzM5OTQ0MWUwNTVlNDIxMmIgcHkzaworODczMjkgMGMyYTdlNTc4NWM4NjExMmNjZGFhNWUyOThiYzYyZDExOTk4Mjk5NyBweTNrCis4NzMzMCA3YTU1YjgwOGU0OTFjMTAyNzY2MjAxMTU0MjRhMjZkOWUyMmNlNzMzIHJlbGVhc2UzMS1tYWludAorODczMzEgNjliM2ExNTFhZWM1NzQzMjE5M2QzNmVlYjlmZjM0Y2UzOWJlOGU1NSByZWxlYXNlMjctbWFpbnQKKzg3MzM3IDA3MTEzZDFlZjhlNTFhNTJmZDU0N2RkYTY3MTBmMTVhNjMyMDM4MjkgcHkzaworODczMzggNjE5MzVjOGRjMDllMGRiNWM5NjYyNjVkZmI4MDk0NDU3ZjVhNWU3NSBweTNrCis4NzMzOSAwMTZiNDI1ZjBjZDBjZTQ0ZWIzNGZjMzc1NjNkZmYwYzliYmYyMjRiIHB5M2sKKzg3MzQwIGI2ZDNmZTcwODAyZjMyOTBkNjNhZGI1Yjk4ZmNhN2I0ZTQwNzFmZGMgcHkzaworODczNDEgNWE2YTFjYTI0ZTA0Y2ZhYTE1Zjc3MTNiYjc3NDEzYjlmNTEzOTRkNSBweTNrCis4NzM0MiBjNzBhYTAxMWMwNTk4NWU0NjJlYmRkNDZmZTE5ZjQyMGM0NmNhZjViIHJlbGVhc2UzMS1tYWludAorODczNDMgMzQxYjkzZDgzMTU3MWQ4NDhhY2FlNmRiMTgzZTc0ZGFlZTBiNjQyMyByZWxlYXNlMjctbWFpbnQKKzg3MzQ0IDIyZGI0ZDJmNjU1NDk4OTk5ZGE1MjhlZmMzY2IzOWQwNDVhMjViMDcgcHkzaworODczNDUgMDU1MGEyNDQ3YzFlNjMxYTAzOWE3NDhjZjljZTk3YjYwNzliYTQ5YSBweTNrCis4NzM0NiAzYTI5NTNlMjFmNzg1NzM0Njg3ZjFkN2M5NTM4YTIxY2VmM2U1NDZjIHB5M2sKKzg3MzQ4IDViYmY1YjZkMzY1ODA1MjVjNDdhNWM3YmI3M2ExZTBjYTcyYjg3MjUgcHkzaworODczNDkgYWM4YzZjN2MwY2IzNTY3NTRkOWE5NDE3NWRmMDQ5NzQxZjc5NWRlYSByZWxlYXNlMjctbWFpbnQKKzg3MzUwIDg5MjIzNjEzN2RiOTYxODEyYjQ5ZWE5Y2ZjZjVjMGUxYjE1OThlZTkgcHkzaworODczNTEgNDNiYzU5MjJmMjk5MDY0NWM1MTM1ZmU2M2U2MDYyZjkxNjllN2UyZCBweTNrCis4NzM1MiA2MWJjODYyNjY3ZTZlM2Q5ZjNiMTNhNTUxYzQyMTUyYzAzZGNiOWQ3IHB5M2sKKzg3MzUzIDI2YzBmNzY5ZTliNDcxZDFiOTBiNzc1OWE2YmI3YjU5ZjBkNzVhMTEgcHkzaworODczNTQgMjg3MTdkZTRjNTYyY2MzYTlkMWFmM2Q5NzY3ZjZjMDhlZDk0ZjU0YiBweTNrCis4NzM1NSA0MDliYTI1MDg3MTIyODg0ZWEwNjZmOGUyMzc1ZjFiYzNiOTY3OTgyIHB5M2sKKzg3MzU2IGE1ZWQ0YTEyNDMwYWE3YjFkZjg3ZDNjNTg1MGVjMDg3ZGIxNDNhZTMgcHkzaworODczNTcgODg0YjE0ZWQ4ZjU0M2RkNzZhMTA3NDU1OGM4YTZiMTQ3YzM3MmFlZSByZWxlYXNlMzEtbWFpbnQKKzg3MzU4IDY4YTQyYjk0NGZlMzk4YWE2YjQ5NDRiY2M5YzBkMjI1MDc0OWQwZGUgcmVsZWFzZTI3LW1haW50Cis4NzM1OSBjZDI3YzNjNDQyMzRhZmVlNWE1NDJiMThjZjRiNzc4YTk4MzhjYTRkIHB5M2sKKzg3MzYwIGEwYTk5NWUwZTY0MDE5ZjZjMGI4NjE1Mjk5OTlmYTg4ZjUyZDE2YTAgcHkzaworODczNjEgNzhjMTUyMjg4ZjUzYThmZDMzYzNmNmU0NDM2OWVlMmM5ODBiNGQ5NyBweTNrCis4NzM2MiA0YzA0MjYyNjExNDgzMWY3MWRkNzBjZDI0M2JlNTRjODcyMjA4YmIxIHB5M2sKKzg3MzYzIGJmMzZkNmJkZGU2MGI0YWYwNTBiM2U1ZDlhNGNiYTdjMjA1ZWM1Y2EgcHkzaworODczNjQgOWNmMTUxMmY4ODEyYzIwMDFlMGU3NTFkNmY5MmNkYzVhMjBmZjZhZSBweTNrCis4NzM2NSBjN2EwNTM3YzdmM2MyODY3MDhlNWZiMjRkYmJiOTllYjczZDgyMjg2IHB5M2sKKzg3MzY2IGEwNjY0N2ZmNWQ5ODE4ZTFmZDE5ZjUwMDZjNTQ5MDIwOTk0Y2U3OTUgcHkzaworODczNjcgZTY1Y2QyMWQ1ZjczMTRlZTdhNTEwODQ0MWNhOTY0N2E0NWJhYmZlMCBweTNrCis4NzM2OCBmZTdhOGExYmRmM2Q2YmM3MjEwMzAyNjI2MmVhYWY3NjMzODc2NWFkIHB5M2sKKzg3MzY5IDcyZjUzNmQxMDc1MGY0YjhmMTRkM2ZjNDRjYmIzMWY5MDA0ZmNlYWIgcmVsZWFzZTI3LW1haW50Cis4NzM3MCA2ZmU5NGZjMDJmYzc1OGQzMGVkNzRlNWM4MTEzZTJmNjc1YzkxMmNmIHJlbGVhc2UzMS1tYWludAorODczNzEgN2FjMDNlYzNiMjc4Yjk1ZDk1YjM1OWI2YWMwOTcyN2JmYWExYzBhYSBweTNrCis4NzM3MiA4YWRiNzVjNjkzMDQ3Mjg3NGJhMTM1NjEwZjM2YjI1ZjI0MDQ2NGZiIHB5M2sKKzg3MzczIDBiOTQ2MzVlZDJmNmZhODkzOTMzOWM0MjYyODQ0MGEzMzYzNjY0MTUgcHkzaworODczNzQgNDQwMTAwMzliZGRmYTY5OWQ0OGFmYWQ3NWE3NWY2ODBjMzVhYjViOSBweTNrCis4NzM3NSAzODE1NTYzNjljYWY2YTJlZjM0ZGUzYjNiYTkwNzkxNmFjYjY1YmIzIHJlbGVhc2UzMS1tYWludAorODczNzYgNWY0OWQzY2IxOTRmOTcwZDUxMTk5ZDFjMzlmMzM5ZTZkZGUwZjhiOCByZWxlYXNlMjctbWFpbnQKKzg3Mzc3IDczNjk2NGY3MDhkZWMyMzhmYzUxYTA3M2YwY2E5YWRlMDQ1MDM4YjIgcHkzaworODczNzggMjlkYjk3YzE3NmM5Y2Q5ZDAxNTAxYTJmYTI0NzRiZjRhOTg2ODczYyBweTNrCis4NzM3OSA1MTVkZTIyNzcwMDE4NGQxM2U3NGQxOWE2YTliNzBlNThiNTZjMmQzIHJlbGVhc2UzMS1tYWludAorODczODAgN2E0ODU5MGFmZDkyZTRiZjhmMmE4MWM1OGVkODQ5OGM0N2RjODQxZCByZWxlYXNlMjctbWFpbnQKKzg3MzgxIGMyZDVjZDAzMmJjOTE2MWY5NDI1YmM5NDFiOWNhZDI0ZWNkYTY5OTYgcHkzaworODczODIgM2MxODJmNzFkNGM5YzU2NjA3ZWFhZmU3YzRiNjU1N2EwZmZlMzk3ZSByZWxlYXNlMzEtbWFpbnQKKzg3MzgzIDk2NTMxNGYxMmY3MTlkYjljM2VmYTUyMjBhZjY0ZmJlZDRiNTFmYzAgcmVsZWFzZTI3LW1haW50Cis4NzM4NCA5Mzg1YzUzNmY0NTQ4MDI3OTcxMmVkYWM4NmJiZDYzYjg4NzYyODU2IHB5M2sKKzg3Mzg1IGVlOWJkYWNkM2NiNjEwMDk5OTc5YjljNzBiYmUxZGRmNzYxMTIzMzAgcmVsZWFzZTMxLW1haW50Cis4NzM4NiAwYWY5NGY5NzZkNTAxOGZkMmM1YjA2YmNmNWI4NDk0ZjkzMTI4NmRiIHJlbGVhc2UyNy1tYWludAorODczODcgZGFlNTE3NmQ3YjdmMzAwYzIyZTFiMDBkNjE5MjhiYTQyN2M0OWFhZSByZWxlYXNlMzEtbWFpbnQKKzg3Mzg4IGQxNmFkZDU2ZGFjMDM0YjllY2NkYTBjOGNhNjdiZWVmOWQxMDRiMTYgcmVsZWFzZTI3LW1haW50Cis4NzM4OSA1NTJiYWM3NTU4ZTc3OTJiMGI0MWIxN2U2OGY5ODA3ZDllNWJhNDUyIHB5M2sKKzg3MzkwIDRlMjIyMDJlNjJmODNjZDEyMzBhMmEwYzNkM2RkMTgzMjdjMjA5ODcgcHkzaworODczOTEgOWZiODlmYWE1OTU4MzNhMjAwNDlkMzczYzVkMmI5NGZiY2VjYzNjMyBweTNrCis4NzM5MiA0ZTJiODYwZTY1N2M5YWJiNDJkYmMzNWMyNDM3ZTc2MjI1MDY2MmMwIHB5M2sKKzg3MzkzIGU1OGZhOTgzYTk0ZWY4Y2ZjMGFiMjUxZWI5NmVmYTIwMTk0MWVkY2QgcHkzaworODczOTQgNGZhZmU5N2QwYWRiYTZmMDQwMzI5MjJkNTBlMDQ3ZWMzMGFlYmM0MyBweTNrCis4NzM5NSA1YjgwMjZmYWEwYTczZDYxNzkxNTc2ZjdiNWY0N2VjODUwMTA2MmVlIHB5M2sKKzg3Mzk2IDEzYjRhMGY1MmMyYzJjYmY0ZGQ2ZDZkMzJmY2FmZmM0MjhjYjY1NzUgcHkzaworODczOTcgN2MzMGQwZjEwMjhjNGQzNzU0NmI2NTE4OTU1MDZiZjJlMzhiNTM4ZiBweTNrCis4NzM5OCA0N2NjNDg5NjVlNTI1MzQ4YmZkYmM0NGFhOTBjYzJlNGMyZmNjMTkxIHB5M2sKKzg3Mzk5IDZmNTZiMjQ3YTdjZDI4MjMzY2IwODc1N2ZhMjg0YzM4MDFkMzM3ZjkgcHkzaworODc0MDAgZTNhZjVmM2E3OTA0YzBkNTM0M2VjOTYzM2VhNjZlN2FjZmQyM2E2NiBweTNrCis4NzQwMSA5YjI2MjQ4ODMwZjY1Y2E2MWRlOGQ3NjJhMWJmZmJjOTc2MGE2YmZiIHB5M2sKKzg3NDAyIGZjOTZiZDE4YmRjNjFjNTg5MjQyMDMwMDE2ZGIxMDZhMDhhNDMyODUgcHkzaworODc0MDMgNmQ1NjI3YTA2Njc3OGRkZDliMWViNjY1Mzc2ZGQyZWM0YmEyNWU3YyBweTNrCis4NzQwNSAzZDg2Y2Q5ZmM1MzRhZWZhYWY1NzM2Y2JkNDNhZWY5ODZhODljOTQ1IHJlbGVhc2UyNy1tYWludAorODc0MDYgMGM0YWZjNWY1OTM4ZTI3YmU5NTAyMTNiOWE1OWJjOTJmZWM0ZGJjNSByZWxlYXNlMjctbWFpbnQKKzg3NDA3IDQ3ZGJmM2VjMWFkN2Q4MjlkMTZkMzg0Mzg4YzI5YWIzMTdmM2Q0MmQgcmVsZWFzZTI3LW1haW50Cis4NzQwOCAyNDg5NGZhN2M1OGM1MGM1YmZhNjhiNzk3ZTY5MjNkMTNmNWQwMTkzIHB5M2sKKzg3NDA5IDUxNzk0YWRhNjgxMGFmNDk4ZDU3MjFjNDM1NmQyNmEzMDRiMjgxN2QgcmVsZWFzZTI3LW1haW50Cis4NzQxMCAyMmEwZWE3ZDk3NGViNmQyMzZiYWFhMzk0NDYxNDBmYWE5N2M5MDI5IHJlbGVhc2UzMS1tYWludAorODc0MTEgZjU2N2E2Yzg1OTM2NDVkODc3NjczNGYzNWIzMjNlYWU4YjZjM2IzNCBweTNrCis4NzQxMiBmY2FhOTg3Y2NlYTAyMDYyN2M0ZjBmNzk3NjU2NzIyZjFhZmUwNTYxIHJlbGVhc2UzMS1tYWludAorODc0MTMgMzY3MTk4YjczM2NkYmI0MjY2ZmExNDEzOGZiYzgwMzZiNjNhMTAyNCByZWxlYXNlMjctbWFpbnQKKzg3NDE0IGIxNjhiMmNjMWIyMWQyZTI0M2E4YTZjZTkxMTdlYjY1YzYzYTMzZGYgcmVsZWFzZTI3LW1haW50Cis4NzQxNSA4MTViNjkxNzU1ZmEwYmZjMjQ0YjM1MjU1OTIxZDI2NWU3ZjQzZmY4IHB5M2sKKzg3NDE2IDg2ODU3MTE1ODZkNDMxZWM2YmQ1ZDM1YzA3ZjAxNGNhY2YwYWU2YjQgcmVsZWFzZTMxLW1haW50Cis4NzQxNyA1NjRhNDE2NjZlZjZmNGIxNjI1Yzc2ZGY1MmQ2MWExZWFhM2ExOTQ5IHJlbGVhc2UyNy1tYWludAorODc0MTggOGI1M2YyNTYxNTlhYTNhYWI4NDBhZDhkMzNlNDMyYTJmNjI5MTVhNiBweTNrCis4NzQxOSA1MmQyOWM3MTU4ZmUyMDc5MmEzMzE0OTY3NjQ1ZTc3NDkwMzA1YjFlIHJlbGVhc2UzMS1tYWludAorODc0MjAgY2QxZGVlNTVhY2U4NGVlNjljOTZhZWMxNGNiOWUzNTk5ZDA0NjRmMCByZWxlYXNlMjctbWFpbnQKKzg3NDIxIDIwNGJmNDMzZDM2NmEzMDdlNDZkOWZiY2MyOTUzZjdlMmMzZGMyZDkgcHkzaworODc0MjIgMDk4Yzk3ZTk1ZDkzMTlmNWM3NmViMzhkNmI4NWVkMTQyOTM2NGUwMCByZWxlYXNlMzEtbWFpbnQKKzg3NDIzIDBkYWYzOTFhMWYxZGY4NjhkNzAwZjQ5ZDc3ZmViYWQ5ZDNiYTBjMjEgcmVsZWFzZTI3LW1haW50Cis4NzQyNCBkNWM4Y2UzYTcwZDQ4OThkNWY5YmZmN2U0NzZiMDhmMmYyMDVlMGYzIHB5M2sKKzg3NDI1IDJmMmRlNmNjNjJjNzgwNDRkMTYwODQ4ODE1ODgxZmJjNDIwZGU1YWEgcHkzaworODc0MjYgNTcyZjczZmYyOGMyMjJmZTQwMmVmY2M5Yzg3MDU5NWZhMzUxYzZmOCBweTNrCis4NzQyNyBhODQyMDRmMTE2ZjhiNjdmNGUyYzA5YThjN2ZkYzgwMWNjODMxMjk4IHB5M2sKKzg3NDI4IDVjZjg1NTVlNWJlNTVhZTEyNDZhM2U5MDU1MTBmMzlhYWMzYTU3MzQgcmVsZWFzZTMxLW1haW50Cis4NzQyOSA1OTVmMjU4ODA2ZWZmMGFkYmNiNWE0NTkxNjkzNDM4NDhkZDExNGY4IHJlbGVhc2UyNy1tYWludAorODc0MzAgNDM4YTQ2OTgwMDRhZGQ1NDg2Y2Y3YmM0YmNkYzhkNDI4MzRlYTRhOSBweTNrCis4NzQzMSA1NjFlYTY0MDE4OGIzNDRkNjA0ZWMwYTJkZDEzODBhYzQxMDI1OGY0IHJlbGVhc2UzMS1tYWludAorODc0MzIgM2Y5MDUxZDg2NjAzMjkxOTI2YWZkMGMwZmIzZTAxNDA0YTA2Nzk0MSByZWxlYXNlMjctbWFpbnQKKzg3NDMzIDhlN2Q0YzM5NzQ1ODdjZDM1YjQ1OThjMjI2MzQwY2MwMzZhNjY1NDcgcHkzaworODc0MzQgNTNhNDFhMTE3NDExYmJiMGYwMTU5YmYzZWJhMmNkNWVhYWJiMGFlYSByZWxlYXNlMzEtbWFpbnQKKzg3NDM1IGM2M2FjZTVhNTM0NmJiMGE5YjE1MjEzNzIwOTA1MDMyYTRjNzYwNWYgcHkzaworODc0MzYgYTgyZGYyMDk4NThhNjRkZmUxMWNlMTk3OTY2ZjFkNWZlMWI0NmQzNiBweTNrCis4NzQzNyA2ZmY1MGNlZjk4NGVlNTU5YjI5OTc3ZjQ0M2EyM2Y3YmY1NjBkYjk3IHB5M2sKKzg3NDM4IDkyNTAyYjM2NzRjYmVjNzhjZjgyYjIzMGFmZGNhZmM2MWU2MzIzZmUgcHkzaworODc0MzkgNmY0ODM0MmU5ZTNkZjY5YjJlNzZmMTljZTZiMDQyMWY1MTRiNDY1ZSBweTNrCis4NzQ0MCA5OWQxNDYzZWRiNTZjMWVkNzVlYzg1MWNkMmZjMGM2MTdlNGI1OWZmIHB5M2sKKzg3NDQxIDg5YTQxNmZkN2MyOTcwN2JkNDFmZjg0NWE3OWMxZWQ3NmIwNmRiNDQgcHkzaworODc0NDIgNmE2MjNhNzY3MDYyMmM3MmMzZDU0ZDg2M2QyZDZkOWM1OGU5ODc2NyBweTNrCis4NzQ0MyBlMjE5ZmI0MTM0ZTNiZDdkNmM4Mjc3MjUzMGIzNmY5NjQxYTg5MmMxIHB5M2sKKzg3NDQ0IDRkYzI0OGFjMjY0ZjU4OTA0MThmMzI2YTkyNWExMmI5ZGJmZTRhMWEgcmVsZWFzZTMxLW1haW50Cis4NzQ0NSBjZjE4ZDllNTFiOWQ2MDA0MzNhM2E3YmRlM2VmZjNkZTkyNWRhYjIyIHB5M2sKKzg3NDQ2IDM2YWMzZDlkNzRjMTUwNTI5YTFjY2E2ZTU0YTQxZWQ5MmEyNWY0Y2UgcHkzaworODc0NDcgODNiY2RhZDI1MzM1ZjhiMjE4YWExMDVlYjljMzU0ZDk0NjkyMGFlOSBweTNrCis4NzQ0OCAxMjFiYTA0ZjBmYmIxMDFhYmIzOTdhYWJlMDRmNmNlOWU4YTYyZDVjIHB5M2sKKzg3NDQ5IDIxOTJiYjk1ZjU0YjBkYWUxZTNmODk1ODBkZjhjZTZkOWNjMzE4N2MgcmVsZWFzZTMxLW1haW50Cis4NzQ1MCA5M2Y1NjE5NGNmNWI4MmMzM2JlMjM3YjBmMGI0MzIzNjg2YTQxMmEwIHJlbGVhc2UyNy1tYWludAorODc0NTEgNzY1Nzk2YTM0YWJlMTg4ZDA0NTkzNTI2ZTZkYWU2NjgwM2Q4OTQ1MiBweTNrCis4NzQ1MiA4MTk4MmFjZWQ4NmJjOTVjNzM1ZTBiYmZlODcyNjg3MjgxNjZmNDVjIHJlbGVhc2UzMS1tYWludAorODc0NTMgYjVkMDNjZWI4ZDc5MDc4ZTM5M2I3YTQwYzA0N2I3ODQyMTY1ODNkYSByZWxlYXNlMjctbWFpbnQKKzg3NDU0IGQ0ZTBkYTc2MTg4YjYwMjY3YWJhNThkYzgzZDFmM2FkYWMzYmZjOWYgcHkzaworODc0NTUgM2I2MTVlZTc4N2IwZjA2N2U0N2Q0Zjc1MTUzYjIxM2U1ODMzODBlNCBweTNrCis4NzQ1NiBjMzRhYzlmOWRlODMxN2QzNjI2ZDY5YzNlMTQ1NWYwMzg1MjI2YjA5IHJlbGVhc2UzMS1tYWludAorODc0NTcgNWMwODJmMTk3ZGRmNzczZWQ5ZWIyYTE5MTA4NzY4NTcwZGU5YzQzYSByZWxlYXNlMjctbWFpbnQKKzg3NDU4IGZkYjhiMDJjMWU2NWIzNTIzZmJiY2U4YWJhMjBjYjQyMTJmMzMxYmMgcHkzaworODc0NTkgZTFiZjNjMWM5NTYxMzQyNWFkZGU4NWQ5N2I3MzRlZmI5YWQyYTFkYiBweTNrCis4NzQ2MCBjYWY4OWE2YTE3YTdlODRiYTBmNGJhMmExNGIwZmFhMzJjNDA3MGJkIHB5M2sKKzg3NDYxIGNlZjI4MTdlYTE1NzI1ZTk0ZjA5Mjc3NWExNDkwZDcwNTU3MDY3MjQgcHkzaworODc0NjIgZDVmYWE5ZmZkZjJhOTMzODRlMjJkZjhjMjI5OWM0M2EwNjhjODRhMSBweTNrCis4NzQ2MyAwOTY3MzE2MjBmZjJhZWFjY2I1NDIzZTczOTdjZWYwMzQ1NGYyYTcyIHB5M2sKKzg3NDY0IGMzN2Q2ZGIwMmM4NGQwM2RjNjYyNjBkM2JmYmQ5NTEwNjQ2NDUyZWQgcmVsZWFzZTI3LW1haW50Cis4NzQ2NSBkMmMyOGEzN2Y3NjMwNjc1MDQ0MjBlNWE4ODkwOTA3MDBkZDdkYzI2IHJlbGVhc2UzMS1tYWludAorODc0NjYgODlhZTJjM2IwODVjYzFiMzk3YjYyYzA4ZWVlZGY2N2MyYzJkYTcyOCBweTNrCis4NzQ2NyA1MTMyNDE1NGY4OTNmN2I1NWUxMTliYTA4ZTU4MjkxYTMzYjhiN2Q4IHB5M2sKKzg3NDY4IDFjNTYwZjRiNWU1YjQ5ZDA0ZTJjY2MyMmNiZTU1OTEwNGU3MDY1ODYgcHkzaworODc0NjkgOTY4ZGIzZTViMWQ4MDAwOGZlNjYyNzBjNjY4NzgzYWZhNjM4ZmJiYiBweTNrCis4NzQ3MCA2MTg3NjYxY2RjMDg4YmMyYjIwMTY2MGUzN2NkOWFlYzllMjczZjFiIHB5M2sKKzg3NDcxIDM5Y2VhOTgwOTA1ZDNkMmMzMWVhNzM1NjkyNjBkNDI4OGQxYjZiODQgcHkzaworODc0NzIgMmU5NjcwZDY3MDE3MzFlNWNmY2IzMDg2ZjZjMmZkYWIxMzY2ZGYyYyBweTNrCis4NzQ3MyBjNTEwYzE1MDVjZTcyMzRlYjAzOWY1MDNlYTFkNjY5YTNjOWIxNjVlIHB5M2sKKzg3NDc0IDU3MDFhODA4NDAwMTkxN2Y2ZmEyZmMxNmFjOWU3N2ViNDc0MTVlZmMgcHkzaworODc0NzUgODRjMWQyNjc5NzA3OGZmOGYwMDkyMTcwZGE3MzYyM2RmN2VlMTQ4NCBweTNrCis4NzQ3NiAyZDgyY2RmNjJiMmNkZTJmZDU4NTM2Y2E1NzcwNDJhNTc4NDc0NmM5IHB5M2sKKzg3NDc3IDZjOGExYzExNzYxYjQ4OTEyNDI4ZDVlYTJkZDY0ZDE1OTJhNGMwMzUgcHkzaworODc0NzggOGU5YTQ3ZGIzOTNjZWZiZTM4MzRhNDkyY2Q4Njg3Y2JiZThmNGFlOCBweTNrCis4NzQ3OSBlZDhkZjVhOTBjZjE5NjI1MDU4ZDIyZDkzNmQxZDE0NGY5ZDk2MjQwIHB5M2sKKzg3NDgwIDk1MDNiMDY2MjUyZGRiMTc5OWIzOGEyMTI5OWM2MTgwMWJmNGIzMjkgcmVsZWFzZTMxLW1haW50Cis4NzQ4MSBkNTFhZmU0N2RlNzMyYTQwYmU1ZDE1OWY3NGYzOWUzMTAyY2VhNzBlIHJlbGVhc2UyNy1tYWludAorODc0ODIgZmE0ZGU2NmM3ZGVlYjNjN2M4ZmUzYmQxOTc0ZTM5MDlkN2NjNDM0NiBweTNrCis4NzQ4MyBjNTY2YzQxMzE0MzlmMTc3OGYzMTUzMGI5YTEwZGRmNzQ3MWRiOTcxIHB5M2sKKzg3NDg0IGE2N2I0MmJmZjQ3MTg2MjdmZmUzMTMwOTU0NWRkMDI2MWYxYzBlZmMgcHkzay1mdXR1cmVzLW9uLXdpbmRvd3MKKzg3NDg1IDM4ZDY2OTgwMTg3ZTI4NDY0NWIwODFlNmIxZjJiMTliODhmZWNkODUgcHkzaworODc0ODYgNjc4ZDgzMzZmNGMzZGM2NmUzNTczYzI4NTdkYTk0OTA1NmU1Njc5YiBweTNrCis4NzQ4NyAxYjIxNjBhZDRjNmU0YTZiOTE3NjJiNDBkYmFkYTkyZjE3YjY5ZDgwIHJlbGVhc2UzMS1tYWludAorODc0ODggNDg4ZWQ1NTBiN2Y4ODhjZWY4ZWIwNWJkNTE3OTM0MWUxNDI1OWFjZiByZWxlYXNlMjctbWFpbnQKKzg3NDg5IDRiOTI2YTEzZGM1NDI4ZmFhZmNiZGUxZjcwYmVjMmU5Y2MyNjZlNmYgcHkzaworODc0OTAgYTAxNTMzYjAxYjljOWJjMTY4ZmU3ZDEwNzUwMzY5Mzc3ZTM2YjRkOSByZWxlYXNlMzEtbWFpbnQKKzg3NDkxIGQ1YmJjNjViYzJiM2UwMWEzNGVhZGIzYzY4NTkwNzBkNjIwYTRiYTUgcmVsZWFzZTI3LW1haW50Cis4NzQ5MiBjMTdhNDk5NzIyNDQxNDc0ODZhNzk1ZmJjZGMyZWNjNzVjZGY2YjBjIHB5M2sKKzg3NDkzIGJmMDllY2Y2OGExOTk5ODYxYjcxZWExNDI2OGI3ZDQ0ZjlkMGMzMTYgcHkzaworODc0OTQgNGQyMGFlYTYwNWM1ZmI0NDAwYzNiN2IxMjY3MGJiMGNiNmUxNjY2ZCByZWxlYXNlMzEtbWFpbnQKKzg3NDk1IGZiYmVmY2Q2YTFhNjk1YWRmYjZlMGNiNDdhOTM0ZmRlMWY0YzRjODAgcmVsZWFzZTI3LW1haW50Cis4NzQ5NiBmNGJhNTRlMGJhNzc0NTA2MzI1NjgzMTk4YzhlYzg1MDE4MDk0YmEyIHB5M2sKKzg3NDk3IGMyYWU5MGFjYzkwODg1NjY2MDg5ZDRjNWQ0ZTEyNzUxNjg0MzAzODMgcHkzaworODc0OTggMTA4YmMxMjY5MzBmN2Y4ZjEyZWViY2Y0YmQ0YzEwOWU3MTJlNjY3OCBweTNrCis4NzQ5OSBlMjBhNjQzNmE5MjcwZjhhZTdmNTBiMjVkMWNlMGU0NjIwYzg3NmRmIHJlbGVhc2UzMS1tYWludAorODc1MDAgZGQ2ZDFlY2JlYjU2ZDNjYTMzMmFlMmQ5MjExYzZjNDZmNGUzMGUxMiByZWxlYXNlMjctbWFpbnQKKzg3NTAxIGJjZDZhNjViOGIyMjNlNTVhMjk5NTMyNzUzMDllYTFmZGRkMWQ2YzkgcHkzaworODc1MDIgNDQyZjFkYTAxYTg5ODJkNGFlYzQ3ZmRmNWYyOTA0YTJmOTQ0OGNhYiByZWxlYXNlMzEtbWFpbnQKKzg3NTAzIGQ0ZDNjODlhYjM4OGYwYzk1MWVmNDgyM2EzOTJmZjIyMzRmMjEzYjcgcmVsZWFzZTI3LW1haW50Cis4NzUwNCA5M2U5NWIyZTFhMWEyM2IzYjFiNWJlOWNlZjYyZTAzYzNhNmVhMzg1IHB5M2sKKzg3NTA1IDRiYjdmN2IxNTFmZWE5NDk4Y2I1MjY3MTk3MmJjN2M3N2QzNGMxODMgcHkzaworODc1MDYgNjZkODQ0NmEwMTliZTc2Nzk5NDRjYzNjOTA3NmFkOThhZjY2MjlhNSBweTNrCis4NzUwNyBmNjExOTY0NTNjNzgxZTcwNmZlY2IxOGRlYjA3OTkyOTcxYzI0YWRlIHB5M2sKKzg3NTA4IDIyYzEyYTVkOGVkMzA1MTU1MjcwNTliYzY5YzA2ZDdhNzM3NmE0OTMgcHkzaworODc1MDkgNWRhZTA0ZDQ5ZTE1Yzk5ZGU4NTljYzI1MjhlMjM3YzE5MWY1ZmVlOCByZWxlYXNlMzEtbWFpbnQKKzg3NTEwIGM2OTQ2ODViNzVlMjQzYTFjYWE3YjJiMDE4OGI0M2E2NmUzYmFiOTAgcmVsZWFzZTI3LW1haW50Cis4NzUxMiA2NjQ3MDVkYmZlNjI5OWUxOWQzMDEzYjQ3MmVkMDU5MTc0MjY0MGExIHB5M2sKKzg3NTEzIGVmZGM1ZDBkODFiNzIxYzI4Y2E2M2U4NzNhZDQ2MzVjZWNlOWU2NjAgcHkzaworODc1MTQgYmJmNzUxZmRmNDIwNjc3YzU0YmRjMjM0NmVmZGI2Yzc3OWQyZGVkYyBweTNrCis4NzUxNSAyZDA5YWY0YzEzN2M5YzZmM2NmNGIxNTUzZmZmNWM0NzA2NDI4NDA4IHJlbGVhc2UyNy1tYWludAorODc1MTYgODk1NDk1MzVkOTc1ODc0MjMwZTJiOTk1ZmUzYzE1YTJjMTExZDgzZSBweTNrCis4NzUxNyA2ZjE5NjIyZGQzNDJiNGQ5MmYwYzdlN2I1ODBmMGM5ZWM4YzE2YjIwIHB5M2sKKzg3NTE4IGZjODM0YjMyM2YyNjdkZDQ0ZGZlOWFlN2VmOTE5N2QyNzhiZTVhYWYgcHkzaworODc1MTkgNTYwNWY2OTIwYjYzOGU0MDhlOWJjYzViZmI1NDJiYTQwNzVkZWViYSBweTNrCis4NzUyMCAzMDVhZjZmNWNhYmY5NGViNDJiOTU3MDk2YmUxMjZjYTlhMTI0ODhkIHB5M2sKKzg3NTIxIDUzMjA5ZDAwZDNhYjE5MmU0NjVjMzQ1NzRiYTRkMWViOTNjMzY4YzAgcHkzaworODc1MjIgMDAwNDAxM2FlOTg0YTljNDE1MzAzMmUzYmJlMDBlNzgwYjM2YTYyOCBweTNrCis4NzUyMyAxMDlkZWZjMWE4Y2ZiMmUyYjJmNDIwNzNkM2RhNjA2MGU4MDExMjBlIHB5M2sKKzg3NTI0IDNhNDgxNmMzNmRmN2ZlY2Q3OTY5NGVmYzIxY2RmMThkOTQzZjhjMWYgcHkzaworODc1MjUgZTBjNTJjMGU4NTg2MjMzMGNmMjMzNWQ2NmJmNGY3ZjFhMzc5YTU1ZiBweTNrCis4NzUyNiA3ZDU1MWQ1ZWY0ZmNmNDY5OGVkNjJjYTg4NTNiNzZhOTcwOTg5OWFkIHB5M2sKKzg3NTI3IGNkNmUzNDNlMjc4ZThjMjRiMTA4YTkyY2M1MDRhNjVkNTg4NmMxMWMgcHkzaworODc1MjggNjE0NDhjZGMwZmE4YzBmNWIyZTMyN2E4Mzg5MTEwZWI3NWM2YTkwOSBweTNrCis4NzUyOSBlZjkzNTMxZDBhYzQ3YzkyMWZlZjI5ZThjMDc0OWQ0YzU0MzYzZTI3IHB5M2sKKzg3NTMwIDJlMjQ3NmZiODNlZmY5MGVkN2NlZjA1M2NhMjUxMjc3NDQ3ZDA1NjcgcHkzaworODc1MzEgNGE3NzM5YzUyNzRiOGE1YjgyZmZkNjQxMzgxOTE5MWJjMDRlZjlhMyBweTNrCis4NzUzMiA4ODA1ODZiOGQwZDAxNTdiYWY0ZDllZDZiNTUwMzAyY2U0NGU4Y2YzIHB5M2sKKzg3NTMzIDAxNzE0ZWZkYzZjZjEyMDk0Y2Q3MGU1NDhmODgyN2U3Mzk0OTk4Y2IgcHkzaworODc1MzQgOGZjYjhmMjY1NWE1OTI0MDg1M2NmMTZlZmM4ZmE1MWFmMjJhNzc5NSBweTNrCis4NzUzNSAxNGZkMGRmYjE2ZmZjMzYyNjlhNmFkOTNiODIyNmQ3YzkyNzY0MzhkIHB5M2sKKzg3NTM2IGY1MDkxMjk4MzQ2MTdjOTYxYWMzNzY0M2RmNzFhMzVhMjUxOGJmNGEgcHkzaworODc1MzcgYjkwMWRhNTYxY2QxNDA3MGZiYzc2NjQyMzUyYzA0MzhmMzgwZWZhYSBweTNrCis4NzUzOCBhOGJlMDU2NzNmMzQzNzdmMGY0MTA0OThmZWI4YjhjMTA1YzFjOGM4IHB5M2sKKzg3NTM5IDVhYTQzM2EyNzdmOTM3ZmM3OGNhMmNlZTAyN2M2ZWM2YmY5OGFmZTMgcHkzaworODc1NDAgYTRlYzIwY2M5MDY2NjgyMWIxNjVhOTZkZTY4MzBjOTUyN2JjZjNiMiByZWxlYXNlMzEtbWFpbnQKKzg3NTQxIDU0ZjFkNTY1MTU1NTc0YTc3M2IzMzE1NjQzNzkyYzgyMjRlNzBkOWMgcmVsZWFzZTI3LW1haW50Cis4NzU0MiAxOGJjZWU4NTY5YmIzN2E0NGUyYmNjOWU4NTIwMzdjMGJhMjQ5Zjk5IHB5M2sKKzg3NTQzIGNjNzhhNmJlZmJmMmYxZjZlZWE0YjU4MGYyOGExNTlkN2E4NGQ2NGMgcmVsZWFzZTI3LW1haW50Cis4NzU0NCAwNWNjY2Q0MjU3YTIyYTg3ODQyOTM3ZmMyOWM3ZmZhZjE3NWMzNjZkIHJlbGVhc2UyNy1tYWludAorODc1NDUgMzU0NmNlMWFhMzU1YmM2NzQxOWU2NWJkNTRhMWYyYWE3YzQ3Nzg2NSByZWxlYXNlMzEtbWFpbnQKKzg3NTQ2IDUyYTg2MTc0NjEyOTdiYjk1OTQ2YzdmOWJhZTY4YTA3MDRhMWUxZmMgcmVsZWFzZTI2LW1haW50Cis4NzU0NyA2Y2NkYjFlMDE2MTE1NzRkMWJlMDNlOWZlNTIxYjRlZmEzZDJmMmEzIHB5M2sKKzg3NTQ4IDY5NDYwYzgwNTczN2JlODM1MWY1Y2ViMmU1MGVhZjU1ZWI3ZWI0MDEgcHkzaworODc1NDkgYjdiZTY1MmRhZjZlZTMyMjIwN2IzYTQwY2FiZWRlODFkZmEwNWM3ZSBweTNrCis4NzU1MCA3N2RlZGFhMzZkM2FjYjhhZmMzMWMzNjViMjE4N2I5YmI5M2JjYWVjIHB5M2sKKzg3NTUxIDc0MWI5M2JjNjhhNWJlYmU4ZDcxZWRiNDI5MGY0NjczMDdjZjI3YWIgcmVsZWFzZTMxLW1haW50Cis4NzU1MiA5NTU5ZTExNTI1OTViOTVkZDJkNDE3MzJmNjViNGVhMjU4NDMyNGY5IHJlbGVhc2UyNy1tYWludAorODc1NTMgMGQ5N2JiOTk0MjVkZWNhMWZhY2JmOTA1MjkwOGNjYWRhMDgzZjFmZCBweTNrCis4NzU1NCA1YmJjMWRjNDU5YTU4MWY2NzZkOTU4M2IyNGU2YzJkOWM2NzFlNWIyIHJlbGVhc2UzMS1tYWludAorODc1NTUgMWRmMjAyMWM3YzNjNDdkMmZiYWQwOGFjYmQ1MDJiYmI3MGE5YmViMiByZWxlYXNlMjctbWFpbnQKKzg3NTU2IDI0OTg4ZjlmODUwYjFjM2VhMDE2YjE2MjQ3NjhmYjRmMmU2NDRjMTMgcHkzaworODc1NTcgZmE1OTg4ZjdjOGJkMjU3MDY0OGM1NGEyMDg2MDlmODM0Zjc3YjA1OCBweTNrCis4NzU1OCAyYTc3M2JlZjQwYzIxMTc0M2UwNGM2NWJmZmZlZWQ4ZWNhYjcxZDMxIHB5M2sKKzg3NTU5IDYwMzIzYTBlODBkN2MxZmZhMmIzMmZlMjRlM2RjZDNhMmQ4NWY2ZTAgcHkzaworODc1NjAgMzdhOTE1YmRmODI3YmE1MTQyNTZlZWJiMmQ4ZWJhMjYxMmUwNzhhMyBweTNrCis4NzU2MSA0MjdmOWYxNTUwNDg1ZTg0NDI4YThlZmI4ZDdkNTA5NTA0MmU3OWJmIHB5M2sKKzg3NTYyIDJiNDBlNGM3Nzc3NTUzNzI2ZTcyMmRjNWM4ZDI4ZWJmOTg1YWUyZTIgcHkzaworODc1NjMgYjBmYWY3YTQ1MjM5NTExNDM0MDBlNzYzOGM1YWVjZTljNmU5ZWYyMiBweTNrCis4NzU2NCA4YjVlZWI1ZjQ1NDY2NGJjN2Q2ZGI2ODM2NzEwNzJlYjQzYzhmMzRiIHB5M2sKKzg3NTY1IGUyZTU5Y2I0ZjUwY2IyYzI5YzAwMjcxMDE2N2EyYTQyNDEwZTAyZjEgcmVsZWFzZTMxLW1haW50Cis4NzU2NiAwMGJiMDQwNmJmZWQ5NDAxYWFjYTRmZmJkMzc4ZWMzYjI1MjJmNmNhIHJlbGVhc2UyNy1tYWludAorODc1NjcgYWI2MWJhYjMyMWMxMDExOTY3MDIxN2FhMWY3OTNiMGY4OWVmMDkxMyBweTNrCis4NzU2OCA3ZTcxNmI5YTQwM2QxNDk0OWRmMmE0ZTk1ZWQ2N2IyN2Y2M2JhOTFmIHJlbGVhc2UyNy1tYWludAorODc1NjkgZjA2OTdjYThhZDQ3NmRkODhhZjM2YTI2OTJiMjE4YjIyZDcwNTU0ZiBweTNrCis4NzU3MCAyZTU5MmE0ZTY4YWI4ZjYwNzE0NDhjMGViODk3MzM4NTVhYzA0MTQzIHJlbGVhc2UzMS1tYWludAorODc1NzEgMmUxZGJiMjUyZjI1NzgxOWEwMTI5M2Q0N2U0ZGZjZjgyYjU1MGE2NiBweTNrCis4NzU3MyAxMGI4MzY2ODM3ZDgwZGU3MzVhMWJjMjExNDk0MmViMWQxYjMyMGM2IHB5M2sKKzg3NTc0IDQxZDViNmNhMTkyM2VmOWY0YjcwNzhiZjExMzY5OWVlNGI3ZjZmYzkgcmVsZWFzZTMxLW1haW50Cis4NzU3NSBlOGU2NGViNGNhNGNmNTdmNDhkY2UxMzY5MmFhNDdhZjExODE4YThmIHB5M2sKKzg3NTc2IDkxMzg2MzRiOGJkMTQ2MDJkZDI1ZmFhYzVhYWE0ZmM4ZTczYWFmODMgcmVsZWFzZTMxLW1haW50Cis4NzU3NyA0YzgzYTI5YTcxMmY5MTVkYTRmOWZiYWUyMTM3ODhiZDNlNjBmZjQ4IHB5M2sKKzg3NTc5IDg3ZTZiZGIzNzNkMTNkNTVmOThlNmExMGEwMzk4Yjc3MmM2MzQ3YTkgcHkzaworODc1ODAgMTYzMTlmOWJlOTdjNGViOWExNWFlMzA4MTNhNGQxZmRjMjk1ZmM3NyBweTNrCis4NzU4MSA1NGVmNTJmOTcxYTUxOTdmM2NlNmEwMjFhODMwNGVkYTFhYmFjM2U4IHB5M2sKKzg3NTgyIDYzYmY4NGNmZDhhNjE0ZWI4NTYwMDEyYzU5MGRjNGM4ZmQ0NDBkMjkgcHkzaworODc1ODMgZjBiNTZhMzhhNTI0M2JlMDE3YzNmZmE4Y2QxYWVlM2U0ZGI1ODkwZCBweTNrCis4NzU4NCA0NGViMDlhNTUzOTNmMDdiZTlhNGI5YjgxZmIzYjM3NDU1MjIyNzFiIHB5M2sKKzg3NTg1IGYzN2Y5NmZjZTdiOTRkYTdmMzM3MjlkNWNmNzY2NGM5MmVhZjkzZDkgcHkzaworODc1ODYgZmRiNmJkMWQ1MzU0Y2U4MzZlNDcxNDljNDAwYTE2ODQ2Mjk4YmE2NiBweTNrCis4NzU4NyA4YzdkZjAzNTYwMzYwMjBmZWRkYTA2ODVjYjlmM2EwZjJjY2IxOWJiIHB5M2sKKzg3NTg4IGNhY2ZmZjM0OWQ0OGQ3MzJjYjBmZDhhOTQyMmZkNDM5NWQ4ZGFlY2IgcHkzaworODc1ODkgMGRmYjgzOTdhOTczYmFlNmIxNmQxYTdmMWI2OTU2NjQ5YjIxMTQyYSBweTNrCis4NzU5MCA3MDIwMzdjMDM5ZmYwMTM5NDk0NGRlYmJmYzNmM2EyY2RjYjcyZjEzIHB5M2sKKzg3NTkxIGM3MmVlNmUzYjdkZjhiYjlkMThjYmY0MGZhMmRmMDQzMTU3MTQ0MjkgcmVsZWFzZTMxLW1haW50Cis4NzU5MiBhMTNiODY2M2ZlYmFjNzdlZGU1NDMzY2Y0NDE2Y2Q3ZGM1ODNjMDI1IHJlbGVhc2UyNy1tYWludAorODc1OTMgNTUxMDA2M2IzOWQ0MDFlMGU4Zjk5YzA5MzcwNDRkYTI5ZmViMmRiNCBweTNrCis4NzU5NCAzZmU2NmZjMjIxN2IzMDFhOWJlNGU2ODBkNTA3NjZhNGMzODJiMjM1IHB5M2sKKzg3NTk1IGI2OGYzODdmYmI0OGE4YmU0NTNhMWUzODI2NWRjOGY3MDIxYjNmMDYgcHkzaworODc1OTYgODc1NzIxZGE3NDZkMzViN2NiOTYxNmViZmY1NjE5ZjY0MjYxYmJmOSByZWxlYXNlMzEtbWFpbnQKKzg3NTk3IDUzZGIyOTBlNDZlZjkzYjg4ZGNlOGNlNmNlZjM1OTYzYjhlYjk3NjggcmVsZWFzZTI3LW1haW50Cis4NzU5OCA4ZjkyNGNhZjJlNWU5OGRjOTg0Y2JiNTEzNTlkYWZhODY3ODU5MWEwIHB5M2sKKzg3NTk5IGVjYTI1ZjFkZWFlNzMxODMwYmJlYzI0NTNkYmU4ZjFmYjEzZGUyNzAgcmVsZWFzZTMxLW1haW50Cis4NzYwMCA1MDBlYjNkMDg5N2Y0OTEzZGE4OGNhMjIwZjdmY2NiZDBkYzQxNGNiIHJlbGVhc2UyNy1tYWludAorODc2MDEgM2JjNzQ2MTZjOWZmYzMxOWEyMjNlN2Q5NmI4MmEzMjZjNmY3NjMxNiBweTNrCis4NzYwMyBmYTg1NTAyMTNiY2ZkZGU3MjMyY2ZhMzQ2OTU3MjgyNDE2YTM3MTUwIHB5M2sKKzg3NjA0IDMzNTQzYjRlMGU1ZDYxNTA1ODgwNWJmNTY3NGQ4NzZmNjU5NTdkM2QgcHkzaworODc2MDYgY2Q4YzliNjdmMDMzODUyNjY0MzMwNTU3YzE3NzY0NTk5ZjMwOTVjZSBweTNrCis4NzYwNyA1ZGJhNjdjYTZjY2ZiNTVjMDE3ZThhNjYxZjY1NjY2YWRiY2JlZjdlIHB5M2sKKzg3NjA4IDdiYjM3YTRjZDdjZjc1OWVkMDE3NTZkMGQ4NzY2NDUwMTJhMTUzY2IgcmVsZWFzZTI3LW1haW50Cis4NzYwOSA1ZGI4OTg1M2NhY2UxOTY4MDdjMDFmZmM2MzFhODgxY2ZhZGY3NGIyIHJlbGVhc2UzMS1tYWludAorODc2MTAgOTAwYmEwN2U0ODI0YjhlMDhlYzk2YzM1YWYxNjE5YjYyMjdiM2UzMCBweTNrCis4NzYxMSBjY2VkMGE3Y2ViNDNlODA0MTU3YWMxZjQxNGY3MjkzZDM4NDI1MjAxIHB5M2sKKzg3NjEyIDQxNWE3OTJlMTI0OTNiOGMyMWJhYWVjZDc3ZDU1OGU0ZDk4OGVhMmIgcHkzaworODc2MTMgYTlhYTVlNGViOGMzYWU1NWY5MGQxNjFlZGM4YWI1NTZlZGRhMWQyOCByZWxlYXNlMjctbWFpbnQKKzg3NjE1IGY4YzJkODkwZmQxMDU0YjlkMzVkY2NhOGUwOTJiM2M0NTI2MDUzYTMgcHkzaworODc2MTYgOGRiZjg1NWM5MGVkYWM3ODE5NjllZWE0NjA1MWI3NzBlNDIwMTVmZSBweTNrLWNkZWNpbWFsCis4NzYxNyA1Nzg1N2E2MGZhOTc4NWJlZTA0OTJjMzViOGIzYWM0ZTA3NGZjMTFlIHB5M2stY2RlY2ltYWwKKzg3NjE4IGRkNDk0NTVkOGE4YzkxNzc3MjdiZTljNWNjOGFkYzQwNjY5YmI2ZmUgcHkzay1jZGVjaW1hbAorODc2MTkgNmFmOWU4MDAwMzMyOTc4YTRhM2Q4ZDZiODBmNDFmMTA0NzgxNWEyYyBweTNrLWNkZWNpbWFsCis4NzYyMCBhNmNkODRjYTdiMmE3OTY1MGY0NDJlMDdkYmNkNTI4YjVmMjUzOTc5IHB5M2stY2RlY2ltYWwKKzg3NjIxIGFlZTQ1NDQwMGVkNzE3YjgyN2JmZWFlNTM4ZjMzNzY2NzgzZDI4NzQgcHkzay1jZGVjaW1hbAorODc2MjIgNGFhNjZlNTE0ODhmMzk0NWFkYmY3ZjFmZjUyY2JhZGI5MDRkNmUyYSBweTNrLWNkZWNpbWFsCis4NzYyMyAwYjJlYTkwMzAwYzBjOWJmZmVhNTE1MTMyOTYxNTlmZDBhYmMzOGE3IHB5M2stY2RlY2ltYWwKKzg3NjI0IGQyY2E1YjMxMDRhYTNjYjk3YzE0ZDcwNWMyMzdiZGRjZjcwOTJkNWQgcHkzay1jZGVjaW1hbAorODc2MjUgZDM5M2VjNTM2Y2E5ZDVkM2VhMzIwMTIyMzdkMTk0ODY5MDYyOWQwOCBweTNrLWNkZWNpbWFsCis4NzYyNiAzZmVhZGE3MjIzM2M0NzM0ZTcyYzk0MjM3ZjJiNGU0NDQ4NzdmMzEwIHJlbGVhc2UyNy1tYWludAorODc2MjcgZGM2MjQ1YmZlNTY2MWFmOTZmYzkyNmM2MWJmMWQ5ODc2NjMzNWYzNyBweTNrCis4NzYyOCA3NDM2ZGFlYzk0MjEwZTI1MWZiOGE2OTAyNTJkY2Q5ZGE1MmM5YWNkIHB5M2sKKzg3NjI5IDQ0OTZkZWIyNjI2NWRhMzYwN2UwODZhYzUwMzNlNjg0YjhhYWViMjIgcHkzay1jZGVjaW1hbAorODc2MzAgNzk4YWEzZmUwMzQ3YjU5ZDk5YmMwODdlYTM1MTgzNDdkMWY0N2U0NyBweTNrLWNkZWNpbWFsCis4NzYzMSAyMWU0ZjFhYTI0MzBjMmZjNTk5NmEzN2M2NzBhNGExYWVmNmMzOTY2IHB5M2stY2RlY2ltYWwKKzg3NjMyIDBmYzI0OTNhMzg2M2Q3ZTJkMTUzMzA4MTYyNDRmNjIxYjcwZjJmZDQgcHkzay1jZGVjaW1hbAorODc2MzMgNWQzNmYwYTUzNzgzYWRlNDBiZDFiZTc1NjNjNDIzNDFjMTUxYTlkMCBweTNrLWNkZWNpbWFsCis4NzYzNCBlNzBjOTM2MTJkN2ZjYmQyYmM5OWYxZmYxZjYzM2NhM2ZjNDc2NWQ0IHB5M2stY2RlY2ltYWwKKzg3NjM1IGQ0NGJhNzUyMTAzZjIzYjdhYTc4MjlhOWE4YjM2NzYxNWJjZGQ2MmEgcHkzay1jZGVjaW1hbAorODc2MzYgMTZlODg2YTc2YzVhNTljNDk4Y2VhOWE3MDRiODgzMWY2ZmY2NmZjMyBweTNrLWNkZWNpbWFsCis4NzYzNyBmZTcyM2I4ZDdjNWZlMzA5N2FmYzg5ZTdhZWQ1ZGQ3NWZjMmRkNjA5IHB5M2stY2RlY2ltYWwKKzg3NjM4IDY0MDE0OTEzZWI4ODA5Yjg1ZmRiNmM5ZTI3MjljYWQwYzRiOWEyY2UgcHkzaworODc2MzkgYjM0NDM3N2ZkZDhkYjU2YjQwMTA5ZDgxNTc1OTlkMjI2MjkyNGNmZCBweTNrCis4NzY0MCAzMzY1YzdiNjQ4OTM3ZGZlNTJkMGE1NmVjYzkyNzgzZGRmOTRkMWU2IHJlbGVhc2UyNy1tYWludAorODc2NDEgOGYzM2I1MDIxODNiZjAzOTQ4MTJlZDUxY2FiZmEzZDFhMDgxN2IwNSByZWxlYXNlMzEtbWFpbnQKKzg3NjQyIGZmMTI2MWExNDU3MzNhNDZkYmZjMGIxNGUwOTE3MzM4MmY5ZDI1NDMgcHkzaworODc2NDMgOWVhMTJlODZkNTY1MjI3ZjNmNjlmMjlhOWQ1MzU0Mzc2Y2ZiZjFlYSByZWxlYXNlMjctbWFpbnQKKzg3NjQ0IDE1MmEwOTg1YjEzOGI3OTE4ZDE3ZDdjOGNlNWI0ZTMyYWRmZGZhNTkgcmVsZWFzZTI3LW1haW50Cis4NzY0NSAwYWZjNDEzOWNjNzAyOTFjNGExZjMwMjQzODc0MzRhZDYyNWVhNzhmIHJlbGVhc2UyNy1tYWludAorODc2NDYgMGNhZTIxZGU5OTIxMzhmNGQ1NWE2NGY2MmJjOTc0MjRhNGY4ZWM5OSBweTNrCis4NzY0NyAwMDcxYTE3MzQ2OTA5OTA3YWE2YzUwMmQ3MDAzMDcwZTM5YmRiYTFmIHB5M2stY2RlY2ltYWwKKzg3NjQ4IDZjNDYzYjA3ZGJkYjcyYWM1NGQ0MTBkZjkyNGRlYWUyMDg1NzMxY2EgcHkzaworODc2NDkgZGJiNmZiMmM1YjlkN2U2YTA5OWM4YWY5MmYwNWI0YzJjYjc3ZDAyOCByZWxlYXNlMzEtbWFpbnQKKzg3NjUwIGViOTU0Yzc2NTUyMWFhNzI3ZDQyNjRmNzQyMGUzZmM5YmQ0NDliNGMgcmVsZWFzZTI3LW1haW50Cis4NzY1MSBhNWFlM2ExN2Q1ZmIxODE0MTVmYzMyYzVmNDRiYWVmZmE2YTNkNGVlIHB5M2sKKzg3NjUyIGUwZTRlZmI2MzM1NGNkYjZmNDY2Y2U1MDYzMjI4M2FlY2MzN2ZlN2IgcHkzay1mdXR1cmVzLW9uLXdpbmRvd3MKKzg3NjUzIDI1NmY3OTRjMmNjMDI4NDQ0MGJmNWVjYzc2MjBmMzM4NzBlMDJmZDkgcHkzaworODc2NTQgNTgxZTY3MjQ3OGY3ZWE0YTFmMzI3MmJlN2VhODA2ZTgyOTI1ZWIyOCBweTNrCis4NzY1NSBjNGQ2N2ZhOTA5ZGNkMmRhMTlkMWM0MWVmMDU2YTIwNzY2MmJiNDgwIHB5M2sKKzg3NjU2IGIwMjBkZjllZTM4MTZjYjBhOTM2NGU0MGM0ZWE3YWI4NTAyM2EwYjcgcHkzaworODc2NTcgZDM5ZWZhNTRkZWFmMDQ5MzA5OThlNDAyOTE3MjhlMmZmNzE0Y2JmMCBweTNrCis4NzY1OCA0MjYwZTMwMjUyZWIyYmI3ZDU1ZWI0ODNkYmU1NTI4ZDY2OWJjNTdiIHJlbGVhc2UzMS1tYWludAorODc2NTkgNzMwYjFhZjA5MjM4NzQ4M2QwNzI4ODgxZmE4OWYwNmRkNmY2YjM4YSByZWxlYXNlMjctbWFpbnQKKzg3NjYwIDA0YWE1YmU3MDZhYzAxNzcxMWExYWE5NWIxYTlmNTM0MjQzZmEwZDMgcmVsZWFzZTMxLW1haW50Cis4NzY2MSBhNWRhYTE0MDAxYThlZWJhNGFkMDI5N2I2NjdlZTU5NjJhMDU4ZjhiIHB5M2stZnV0dXJlcy1vbi13aW5kb3dzCis4NzY2MiBmODllMzdjZDZjNjU3NzE2OGRjYjNmMDI1MzA2N2MyMjZkYmUzYWI0IHJlbGVhc2UzMS1tYWludAorODc2NjMgODhlNWFlNWI3ZGMyNmEwMWM2NWJhZTk1MjMyODFkNzljNWMxM2JkNCByZWxlYXNlMjctbWFpbnQKKzg3NjY0IGUyODg2OGNmOTgyNTg5Yzc1ZTE3ZDBkNDBkZTNhMjk4YzdhODM3YjEgcmVsZWFzZTI2LW1haW50Cis4NzY2NSA3NDYxNDNlYzFmNjBkYTEyOTU0YTdlYTY3MWY5MTUzNmY0MDI5MmEwIHB5M2sKKzg3NjY2IDRhZjk4N2VjMDMzYTBkMDZlMTMxOTlmODlhNTJlZmVhYWVjYTEwYWUgcHkzaworODc2NjcgMjg1MzhmMmUwY2MyNDdmM2Y1Zjg5YTQ3MDhmYTRmZmFmNDkzODRkMSBweTNrCis4NzY2OCBkOGVkMGNjOWUzMzgyYzI2OTRjY2QwZjRlYTMxMmFjZjNiNWExNWJmIHJlbGVhc2UzMS1tYWludAorODc2NjkgOTNiN2MwMDA4YjA4NWUwN2EyOTQ0NGY4OTYxYTlmMmY3ZjJjMTBiNyByZWxlYXNlMjctbWFpbnQKKzg3NjcwIDczYjI0NDc2Y2EzYmFhZjcwN2U3NzYzYjdiZmQ3ZjcyMjUwZmQ1MzMgcHkzay1mdXR1cmVzLW9uLXdpbmRvd3MKKzg3NjcxIGEwNDhkMGNmMmFkMWQ4MjEwNzg0OTVjZTM5NzAyYmI0NDczZGFhOTUgcHkzaworODc2NzIgNTM4NGU3MjBmMjhmZDE5ODM2MGRjZDY2ZTk4NTZmYjEzZTliZDc3YSBweTNrCis4NzY3MyA0MzliZjk2ODBiZWYyNjYwM2M4ZjRhNzcxOTI5MThhZTM3MzdlMjA2IHB5M2sKKzg3Njc1IGU4YmNjN2RiYWI3ZGMyMGMzMzlmMzgzMTNmOGE0NGM0ZGE1NDNjZWIgcmVsZWFzZTMxLW1haW50Cis4NzY3NiBjODk4ZGQyMTViYTA2NjU3NGY3YWU0OGUxOWE3NmY4ODM1ZmY1NjNhIHJlbGVhc2UyNy1tYWludAorODc2NzcgZmE1OWFjMTE2NDg0MGRlOWMxOGI0OTJjY2EzNDM2NmQ4MjY2ODM5YiBweTNrCis4NzY3OCA1Nzc2ZjQyNGQ4NTc4MTJkNzFmYWJkNjcxNTg2MTM3ZDIyMjNlMzIwIHB5M2sKKzg3Njc5IDI4MTE5MDYxZjdkMDExODhkZTQyNTgxMTlmNjMwNDBmZDhmYzg3Y2EgcHkzaworODc2ODAgODA2MDBjMGMzM2I3OGIxZGM4NWQ3MWU4YTJkYTAyMjA0YzI3NGE0YiBweTNrCis4NzY4MSBmNWIxMDVjOWY0NmJmNmYyYWJjMzdjZTE0YTY3Y2U1YzJlYjAzYmZhIHB5M2sKKzg3NjgyIGJhMTZmZjg2ZDRmNmNkMTU5NmRhMjYwYmQzYjNhMTc4OWJmZGQ1ZDQgcHkzaworODc2ODMgZGJhOWI5YzdhMmRiNzZmODQ3NzBhYzIxM2Y2ZDkzODZhYTY1NDEwMyBweTNrCis4NzY4NCA2Y2I3ZWQ3YjY2OTdlNTM1MmEzZmY0ZWU0NDFjMDQ1N2U4ZWMxOWU4IHB5M2sKKzg3Njg1IDk0ODY5MjcxMmZkNzEwZDRjMzExOGYxMjBhMmJlZWJiZWE5OTZhMDkgcHkzaworODc2ODYgOTMxZDIzMjBmNTZhMDdiNDcxZGQ0NjMzODRmMDM1NzYwZDY5NzU2NyBweTNrCis4NzY4NyA0YzQ2ZjY2MzJkZGY5Nzc2NGJlZDA0MmU0NzBjOGE5YjA5ODMwZThmIHB5M2sKKzg3Njg4IDc3NDgzZjNlNDkxYTc5MzYwYzAwOWRiYzRjZDQ1NmNhZmUzZWFhYTEgcHkzaworODc2ODkgYzQxN2Q4MDU3NjgyNzQwOTdjZDM1YzliMGYwMDFmM2FiMGM4Y2JmMyBweTNrCis4NzY5MCA3NDdjNTVhOTRjYjBlNWU1MThkZmU2Njg2YzZhMjE3ZmIxZjZhY2Y3IHJlbGVhc2UzMS1tYWludAorODc2OTEgNmI3ZDlmMWMyY2U1MWE4NGNmMGEyMzI2OGRjNGFmODA4NDcwMWY5ZSBweTNrCis4NzY5MiAyNDUzNTkzODJiMGZhZDNlNDMyOGM3YmRiNTBkYzUzMGFkYmE2ZWNkIHJlbGVhc2UyNy1tYWludAorODc2OTMgZmViMjNlMjRkY2I1YzcwZjMzMTEwNzk5Y2Y3Mjk2YTJkNDFhNzZkMCByZWxlYXNlMzEtbWFpbnQKKzg3Njk0IGEzM2UxZjAyMDkxZjhmYTE1ZTdiODJiMDc0ZWIyYzk1OTQ0OWU5MDMgcmVsZWFzZTI3LW1haW50Cis4NzY5NSBhNjZhNmU0MjUzOGZlNDA5MTNmNjU2M2QyYmNlZDRhZmU3YTk3MmY1IHB5M2sKKzg3Njk2IGU5YTUxZDQ2MzU3OTI0NDMxNTYzYTdhNjJlMDk0OGUzNmMzNGI5ZGEgcmVsZWFzZTMxLW1haW50Cis4NzY5NyBhNDc2ZWIwODdlZTk3NjgzMzFlODNhMzUyNDgwNDgzNTU3NTk3YWJjIHJlbGVhc2UyNy1tYWludAorODc2OTggOGFjNGJjY2E4ZTMxNjFmMmVmYjdiZGFlY2MxN2U3OWYyNDRiYjFhZSBweTNrCis4NzY5OSA5YWNlZDVhZWQxMWFmNWFlMTdiYzdmNDQ0YjViOGMzNjZkN2NlNzIyIHJlbGVhc2UzMS1tYWludAorODc3MDAgYjBiNDQxNGMwYmRjMjFkZTQzNjUyNDc4ODgwODdkZDczMTFmNjA5ZCByZWxlYXNlMjctbWFpbnQKKzg3NzAxIDc4ZGUzYTdmYjg5NjM0ZTI5NmJjMjU3NGE1ZDJhNTQxMWUzYmIyZTYgcmVsZWFzZTI3LW1haW50Cis4NzcwMiAyNzVmYjk4NDk0OTFmZTE1YTdmMjBiYzFiYjdjNmVjMjYzZjRlMjlmIHJlbGVhc2UzMS1tYWludAorODc3MDMgZjQ5OGVhOTc4YzZmZTBlZGM5ZGE1ZWE4OGU5OWM0MGY4Yjk4ZTQ0MiBweTNrCis4NzcwNCA2MTE1NjdlYzRkN2I3MTVjYjgwNjhjMDA5MjQyZmRiOGQ3MzQ0MWI3IHB5M2sKKzg3NzA1IDhjMTg5OTJkMzc1MGFjMjNkYWI3OTAxYzY2YzUxN2MxODRhZGJmNTEgcHkzaworODc3MDYgZjYwYTg5OWEyMDRlNWIyOGVkY2M2ZWViNDEzNzdiN2MzZDRiMjFmMyByZWxlYXNlMzEtbWFpbnQKKzg3NzA3IDQwOTRiYzEzYWNmY2M0MTMwZjNjMjQ5NjM4MTQzMTgxM2Q2MjhkYzkgcmVsZWFzZTI3LW1haW50Cis4NzcwOCA5ZjQ5ZWU1MjM5NzU2MTA5ODAyZWU3NDMyZjYwN2U1MGZkMTIwODhlIHJlbGVhc2UzMS1tYWludAorODc3MDkgNWJjZjEwOGEzZjVkZmYyN2RhMjEwNzg4ZWMzM2I2OWU1NWIwMmJjMCByZWxlYXNlMjctbWFpbnQKKzg3NzEwIDZlNWFhZGE0ZmRkNWYxNzY4ODYyYmViNGJmNzA1MTNlNDI1YTA1YWMgcHkzaworODc3MTEgNTAxMTg3MGVjODZiZDRmMThiMjU0NGJlNGI2YTI2NTM3YjUyYWEyMSBweTNrCis4NzcxMiBhN2M0OTkyNjZhOWZlMDI1MWI2ZTcxOGY4ZjhhYWNkZGZlMzQ4OWNhIHB5M2sKKzg3NzEzIDhmNTA5YzUyNjBhOThhYzM5OGVhZTg1ODJmMTM1N2YxNmRiMWVhMjEgcHkzaworODc3MTQgODkzMjczZDc5M2M2ZWY1MWM1NTI5YzgwZTJiNzgyYjkyNDAzMjAzNSBweTNrCis4NzcxNSA3MzFkZWM0ZTc1MTM4MTY0YWQ5YzhiM2RkZDBhODEwMzAyZDYzODY0IHJlbGVhc2UyNy1tYWludAorODc3MTYgOWFkODk2NDI2Zjc5NjQxODAxM2JhZjM1OWFlYTRmODBjZmNlZWY3MyBweTNrCis4NzcxNyA3MGJlYTJkYWRlZjhhNzE0ZDJiM2E3ZDNmY2Y2NTY0ZTBkN2Y2Yjk0IHB5M2sKKzg3NzE4IDhiODQ4ZDNjNmFkMDE0NDUwODk5ZmVjZDBmOGNlMmE0NzFjMTVjZGMgcHkzaworODc3MTkgZDM2ZTM0NWExYTNjZWNiZTlkZGY4ZjY2MDAwZmQwZjEyYzM0YjM3OSBweTNrCis4NzcyMCBmMGViMzQ0OGNlMzg0NTkyOTM0MDdjM2ZhMGM5NDQyOGQ3OWQ4OWMxIHB5M2sKKzg3NzIxIDljZDgzYzY1OGJhNDYyMGJmMzIzMzhiYzZmYTk2N2ZiMTRhZGQyZjcgcHkzaworODc3MjIgMzc0ZGM5MTBkYjMzYWQ2OGMwNzM4ODlmN2E5NTZkZDQ4Y2VkMDdlNyBweTNrCis4NzcyMyAxOGRiYzNiYTE2YzBlYWZkODBjNjcyZjM3OGE2N2M0N2YyZmViMTNkIHJlbGVhc2UyNy1tYWludAorODc3MjQgYzAwN2MzZGJiZDNmYmQ5ZWUzYmQ1Yjg0Y2M2Yzc2ZmVmMWU5NmI4NiByZWxlYXNlMzEtbWFpbnQKKzg3NzI2IGFkMmYzNDM4MGFhYzg2Nzg0NzRiZDY1M2NlMTM5NmJjZWJkYzZjNWMgcmVsZWFzZTMxLW1haW50Cis4NzcyNyAzZTFjM2QyYTg2ODkwNzA1ZjEzNzI3NjkwNDVhZDZhOWJiZDM0NDYyIHJlbGVhc2UyNy1tYWludAorODc3MjggZjc4ZTdkYjFkNWU4NjRlY2U3OTlkOWU3ZTE5NTc5NzM2MTFhMTJlNiBweTNrCis4NzcyOSA0NTQ5NDI2ZWU0ZDY1MmViYzg1ZGJmY2FjMGQyMDM2NTAxMzA2OGM1IHB5M2sKKzg3NzMwIGY0YTgwOGY1YTY2ZDFjZWRkY2U0NDM1MTgzNzAzOGM3ZmU2Y2YwYzAgcHkzaworODc3MzEgYTdkMTVkZjdkNjdkM2YwZjExMzFmZTQ4YzA4ZWJkZWQ4ZDA3ZjVjYiBweTNrCis4NzczMiA5OGM4YWEyMzdmYzFjYzEzOThlMmQ4ZDU3MDFkODUxNjAxNGFlZGJiIHB5M2sKKzg3NzMzIDNiZjRkOWYxNjYwYTRjMWRjZWE1MzViOTQ0NGU2NDkyY2Q2OTI0M2UgcHkzaworODc3MzQgY2QyNzk4MjA4N2VhYzRiYjI0MThlNTkzMGJiNWE3MDBjN2MzMGJlZSBweTNrCis4NzczNSA4YWE4ZGNhNDY2ODRiNTRmYmNkZGVlNTc5ZGY3YTFlNjhmYmJhNjkxIHB5M2sKKzg3NzM2IDFlNjJhMGNlZTA5MjJjM2Y5ZmI4MzdjNTE5ZjhhMzkzMzhlM2EzN2EgcHkzaworODc3MzcgNjQyYzg4MDY4MzBmNWZiNDIwMjQxMDFkMWE4MTcyOWViZDY4N2M3MSBweTNrCis4NzczOCAyMDA0M2RhNzg3MjZhMzk0YTJiMmI2ZDJhMzA1MGY2MmE1ODUxYjAzIHB5M2sKKzg3NzM5IDYyOWViM2I2OTkwOWYxY2NiNmYxZTBhYWRlZDNmYTQ5YjUwNGFhNmQgcHkzaworODc3NDAgMzQ3OGQwMDdkZjIzNzIyZGY5ZmQzN2ZiMmU3ZjQ1Y2UwNjRjYjU3YiBweTNrCis4Nzc0MSBhM2I3YzI5MDc1NGEwYTE1MjM4MWE4Y2E4MTNjYmVmOTc0ODk2YTQwIHJlbGVhc2UzMS1tYWludAorODc3NDIgYTZiYzQ5N2IxOTYyNDNjZWQ4ZTMyMDExMTAxYTljNWM0ZTdkODM3MCByZWxlYXNlMjctbWFpbnQKKzg3NzQzIDdjNWMzN2I5NjI4MTZiNzg3NTRlOTA1Y2E5ZGZkM2ViNzU5MTdmNzMgcmVsZWFzZTI3LW1haW50Cis4Nzc0NCA4YWY2ZThmYzAyMDViY2NjNjU4MDI3ZDFlZjM3OTNjZTc2MjY4YmNiIHB5M2sKKzg3NzQ1IDQ1NTdkNDk1YTQ4NDZjM2U1MjI1ZjVmZDVhMGM2YTU0OGE5OWUyNDUgcmVsZWFzZTMxLW1haW50Cis4Nzc0NiAwODE5MjI2NWQxNzJjNGMxMDg5NzQ3YjZjMDgxMjkyM2QyNDczYzhlIHB5M2sKKzg3NzQ3IGMwZmVmOGExNDRmYWQ5OGRlOGVkNmFlMGQyOTBkMzUyNDA1YjEzMmMgcHkzaworODc3NDggZWZjYjE0Zjk0ZTc2OTEzYmRmYzE2MTNlNzY5ODcyOGFmMzkyNjE4YSBweTNrCis4Nzc0OSBkZDNmMjhmZmQwMjkwODlkMDhkMWYxNmYzNTI4ZjZjZDBiNTg5ODQ0IHB5M2sKKzg3NzUwIDQ5Nzg5YTUyYTk3NjI0NDQzMzZkNDgyYzI4ZWIzNjkwNmMzNjljYjggcHkzaworODc3NTEgMGVmZmIxNzVjOTgxOWI5NDQyZTI1MGM2NGNjYzk4NWU3MWU3NDAzYSByZWxlYXNlMzEtbWFpbnQKKzg3NzUyIDg1ZmJkNzc1NTM0ZWI3ZDgwODM2YWM4YmY1NGM5OTU4MTFkNWUxZGUgcmVsZWFzZTI3LW1haW50Cis4Nzc1MyBhMGQ0ZWRhOGRhMGFmMGZlOGMwNDE2NjY5NDJjMjFhNWVmYWUyZmEwIHB5M2sKKzg3NzU0IDRjYzQ3YTkwODNlMzg5OTk2ZmZhZDRlOWI2YjM5NjI4YmIyZjE2ODIgcHkzaworODc3NTUgNGE4MmJlNDdhOTQ4MWIxYzAzYmI5NTFhZThlOGM2OGM1ZTlhMDFlMiBweTNrCis4Nzc1NiBkZTg2MmRjMGNjY2FmNjkxMjFlMWU4ZTc0ODQ2OTQzMGUwZjAwZTRiIHB5M2sKKzg3NzU3IDI5NjFhZjgwZDU0NTU4YjY3ZWM0YjM1Yzc2M2Y3ZjMwZGRiYmNhMTQgcHkzaworODc3NTggNTA2MGE5MmE4NTk3ZTUwZWVlMzk4YTE3YzBlNDk1OGQ1NDNiYzlkZiBweTNrCis4Nzc1OSBlOTM0OGQ2OGNmY2QwMDA4ZTlkODg1Njg2OTIwMTQxNjEwMmIyNDI0IHB5M2sKKzg3NzYwIGMwNDI1YjVlZGU0N2FkNmYyYTdkMTFiNDIwMzUxNmZkZGZkMDczZTcgcHkzaworODc3NjEgYTQ0YmFkZjllMDBmNjNkM2RjNWRmOWU5ZDcwNjEwMTViZTVmYzRkZCBweTNrCis4Nzc2MiBiYzU3ZmRkODk1NjJiMTcyMzE5ODcwMGQxOGE0YWEwOTQwMTcwMmZmIHB5M2sKKzg3NzYzIDc5OWNkMTUyMzExMTdmOTMzOTkwMDUzYTBkNmZiZDQxM2JjMTdmZTQgcmVsZWFzZTMxLW1haW50Cis4Nzc2NCBiNzQyNmJlNmJiYjRjYTFmMzhmYWNhNzkxNWNlMmQ4ODM3MTQ1ZmVmIHJlbGVhc2UyNy1tYWludAorODc3NjUgNzQ1MjI1YWUyOWVmMDgxYmZlZDYwZTFiNzU2YTVkMWVmMzVhNGMyMiBweTNrCis4Nzc2NiA5MTJmZDIwZGUwZTA3MjBjYjA0NGZlNDdlYmUzMGYyN2NjOTM2ZjJjIHB5M2sKKzg3NzY3IDEzMjM3NGQ1MzdlNGQxMGQ3NmQ2ZmZlNzY4ZjNlODQyY2I0MzE4OGYgcHkzaworODc3NjggZWQwMjU5MjMwNjExMmEwY2UyZDcwMjMyODE4ODgzNzA3MzU0OGUzZCBweTNrCis4Nzc2OSBiZGI1N2Y0NjNjODVmYjU0ZjNmOWQyZDEyZTBmNzQ3NzNmNGU5N2U3IHB5M2sKKzg3NzcwIDRiZjNhNWEwNDEyMDkzNzlmNzdhZDc3MWE5MDM1M2Q0ODQ0NThhYTUgcmVsZWFzZTMxLW1haW50Cis4Nzc3MSAwNzYyODk4ZmQ4MDI4NmU4N2ZmOWRhYTFkMDI2OWQyOWQxZWUwM2M0IHB5M2sKKzg3NzcyIDhmNTNhNGU4OTYzMTNjNTZkZmU3NWYyMTQ4NWU2YjU4Y2M4MDU5MzAgcHkzaworODc3NzMgZGUzODc5NGQxNzQ5ODlhMzllZDVlZjIxODY1ZjI2OWE5Y2NkOWQxMSBweTNrCis4Nzc3NCBmMDZjMjc4YjRmMjEyM2ViYmVmN2ZjMWE0NGQ5MWQ0MTBhODVlM2U3IHB5M2sKKzg3Nzc1IDU4Yjc4NDU1M2NhNGY1YTg0MmVmMmU4ZDJjOTE0YWI3MjMwNzlmYTEgcHkzaworODc3NzYgOTJmNjFhNjkyZTM5NDEzMWFkYjM1YTMwZDQ2NmE5OWNkMDk3MTgzNiBweTNrCis4Nzc3NyA1MTBmN2UyOWU3MjgxN2VlMWY2YWQ4OTQ4YzFkYmJiZjM2YTU0ZjVkIHB5M2sKKzg3Nzc4IDIwZTNhZjFkNTMwYThmYjM5OTJjNzNjMWQ2OTJmNDc1OGI3M2E5ODkgcHkzaworODc3NzkgY2Y5ZTFmNzQ2NGRjNThlY2U5YTc3MmRkZWZhYzYzOTkwOGY5MzA3YiBweTNrCis4Nzc4MCA5MmYyZDdkMjhmZWVkYjMyMGQ2YTVhMWVlNDRmMWZiZmY4ODhmZTQ3IHB5M2sKKzg3NzgxIDM0ZDg5MTU4MGYzOGQ0NTZmMDIzNTAwNjg0NmM4YmJjNDM0NzUxY2YgcHkzaworODc3ODIgMjQ3YjdiYTZmZmFkNDQ4OTE4OTA3YjRiN2QwMTE0ZGRjYTZhODIyZCBweTNrCis4Nzc4MyA4YzQ0OGE0Mjc3YTBkNGZiOWE2NWNhNWNmOGI4NjdmNDg2YWU2OTA2IHB5M2sKKzg3Nzg0IGFiYjY4NmE1YTFkZmNkNmMwMmZmNDU3YTNmMjI3MjJhY2JiNThiNGUgcHkzaworODc3ODUgYzliNDg0ZjJhMGI3MDc0OTU3ZWMyNjg1OWIxNTk5YzdjNTI1NWYzNSByZWxlYXNlMzEtbWFpbnQKKzg3Nzg2IDcxZTFhOTk2MTgzNjE5YTNhMjYyMzA1YjQ4ZmNkZTNjMWVhNGRmZDMgcHkzaworODc3ODcgM2Q4MjRiNTEzN2RkYjEzM2RmZTU3YTU4NmY1NzBhMDY1MzZkZWFmMyBweTNrCis4Nzc4OCBkODI0ZTljZmJlZTg2ZGYwYTViMzUxOWEyZmU2ZmI3NmUzNzI3MjcwIHB5M2sKKzg3Nzg5IGEzMjg4YTRlMmVhZDlhZDEwMzc2ZDNiY2E0MWYyM2ZjMjU1OWZmMGYgcHkzaworODc3OTAgMTQyMjg4MDg5YzFhNDY1NmExYTJkOTYyZDljOGViOGUzZjFmMjIxMiBweTNrCis4Nzc5MSA1ZDY2Njg1NDg0Mjg0MmY5MWNhYWEzNTljMjE4ZTcyYmEzMWUwMzcxIHB5M2sKKzg3NzkyIGNjYmM4NDIyMmZkYTU4YTM2MDZjY2ZiOTQ5Y2MxZDI0N2I1ZjQyOWMgcHkzaworODc3OTMgMTc3NGQ2YTJmNWJmZWY4ZjFlNmI0MTQ1OWIxNTQ4ODZjZjc1ZjM5ZiByZWxlYXNlMzEtbWFpbnQKKzg3Nzk0IDI2ODM2ZTQ3ZGZiOTFjNDcxYjZhMTkxZjU2ZDVkODRjNGU0YjZiMTEgcmVsZWFzZTI3LW1haW50Cis4Nzc5NSBkMmE2NDYxMmQyMzViNmVmMjQyZWQ5YWMzZmUzZDdiMjdkNTI4MGQyIHB5M2sKKzg3Nzk2IDY0YzI0NTMxM2NmZjlmZGQ0NmU1NGRjZDNjNWIzOTk4MjQ0ZjQwMTkgcHkzaworODc3OTcgYTRjZmIyNzgyNDE2NGFmZDFjY2IyNTVjNzI3MDA4YTRhMDFkNGFhNCBweTNrCis4Nzc5OCA1OTE5MjIyOTlhY2MxMTE4YWQwMzNhN2FiODg0MWZmZjE2OTc4MDdmIHJlbGVhc2UzMS1tYWludAorODc3OTkgYjMzMmU3M2I1NTY3MDdjNGExMDg4YjAwODlkMDNlNjcxNjJjOGMxNSByZWxlYXNlMjctbWFpbnQKKzg3ODAwIDdlN2ZjOTRmZDBkNDE0ZmJlYzIzM2U3YTI0YjUyNjZiNmZiZjMzOTggcmVsZWFzZTMxLW1haW50Cis4NzgwMSA0MTljYTA4OWQzNjVmMzAxNGE0ZTAyYjUwYTk0ZWYzMGY3NjVkNzIxIHJlbGVhc2UyNy1tYWludAorODc4MDIgNmExZDA4MDYyM2Q3N2I4MjVjMWRlNzcyOTlmMzg2ODMzYjZjMzVkMCBweTNrCis4NzgwMyA3MjIyNjk3OTY0ZmM3NDQzOTljOGVlMTE4YmIzOTQ4YWQxNWRkMWRhIHJlbGVhc2UzMS1tYWludAorODc4MDQgYzdmZDliNmFhMDAyZWUzMDFjZTNmZjllOGU3YzE2ZjJlZWRhMGJmYiByZWxlYXNlMjctbWFpbnQKKzg3ODA1IDhhMzAyYTA5ZWU4M2E3NjkwNWVlZDJlMDU3ZmZmZThiOTBhNmIwMzIgcHkzaworODc4MDYgMDIwZGE5Yjg3ZGFhODkxMzM0YmI3ODQzOGExMDRmMGFhZDNlZDcyNyBweTNrCis4NzgwNyAxZDRkYzlkZjI0OTY3MjgyMzU2ZmI5NjhlYTQ4NDAwZDY3MjQ2Yzg0IHB5M2sKKzg3ODA4IDAxYjI1MzMzMWE4NmUwNjgwYjdkNGI3ZmI0YTY4ODIzYTg3MjliNDYgcHkzaworODc4MTAgN2JhNWY1N2M3NGU1NzYyOGNhNDFjZjU1ZjYzMGQ5NDJjZmIxOTFiOSBweTNrCis4NzgxMSA3ZTU3NzdlMWYwZmRhM2YxMzZjOWMxNDZlOTMwYmMyZGJiMzBhMjlmIHB5M2sKKzg3ODEyIDEyY2M4MTA2MmQ0YTg0ZjY3MGI4YmE4ODNkNDZlODkzYTAyNTljODMgcHkzaworODc4MTMgNDNjOGMxYmRkOTRmZDhhZWZlOTg4NWUzMjFjMTFmODYxMDc0YWRkNyBweTNrCis4NzgyMCA4M2QzZDVlMDY4N2VmZTRkMTE4ODdlMGJlYWQzOWJiN2ExNDViYjRhIHB5M2sKKzg3ODIxIDJlZTZiNDQ0YzkzZGVlNDg1MDExNjA2MDM0YjlkNzlhMDQwYzBmMTAgcHkzaworODc4MjIgNTI2MGZkMTJjNzYzZGRkM2M5ZDMyM2Y1ZDMxMzQ5NTM0MTJiMzQ2OSBweTNrCis4NzgyMyAwYjBhMmI2YzNhZDk4MzU3N2I4NDI3MmRkNWI2YmM0NzhlOTlhNjhjIHB5M2sKKzg3ODI0IDA5MzNjMzc1M2E3MTJiOWY4YWYyZDIzZTQwYWUwZGRhMWY4YWMyNTQgcHkzaworODc4MjUgMTQyNzBmZTg0ZGM3NzFmOWRkZjg2NzVkZGE5YjAwODM2NGQ0MTBjYiBweTNrCis4NzgyNiAzZWEyODA5OTcwMDFkNDIzYWE0YThmMDRmZGQ4NmM5MGVhOTQ0YTg3IHB5M2sKKzg3ODI3IDM3NzgxNTk4NWNhZjBkMDNjM2UzNjhiOWI0OTAzYTRjM2NlMDlhZTkgcHkzaworODc4MjggNWY4ZWI5ZTdhY2RjMDY1YWUzYTAwNmUxNzkxZmVlYzc5MjY1ODNkNiBweTNrCis4NzgyOSAxMjA3NGYzYWI4MDk1ZjkxYTQ3MzY4YWJhZDcxZDFmNmZhZmM1YTEyIHB5M2sKKzg3ODMwIGRmOWEwNjE2MDA0ZDkyZTk3Zjg3MWE4YTk1ZGUzOTdkMGQ5MGY1OWEgcHkzaworODc4MzEgMTMzZGVlODJhMDA5NjE2ZTFjMGRjY2ZhNWRiYThmOTJiMTczMzg5MyBweTNrCis4NzgzMiAzZTc1Y2YzZjYzNTU1NjdkZGE4NmYwYTY2N2ZhNzc3MmFkNmU5OGZkIHB5M2sKKzg3ODMzIDY2NTg3ZTkwZmRmYjYyN2Y4OGFiMWFjN2EyOWYzMTA0ZGEyYThmZDQgcHkzaworODc4MzQgZjU5NTBkZjAzY2UyMTBjNTBjY2Q5NjUxZWE0YzA2NmNiYmQ5NDkzMiBweTNrCis4NzgzNSA2YTU3MTE5NjU1NzFhYjIwNmI1NDllZjRmMDA2MzY2OTBkNDYxNzE1IHB5M2sKKzg3ODM2IDU0ZmE2MjE2NTg1MzM1YjIzYWM1NGRjM2JlZmZhZGViNjViNDBlNDEgcmVsZWFzZTMxLW1haW50Cis4NzgzNyAwZGUxOTA1YTc2MWY4N2FkODIzNDVjNjZmNGFlMzJjY2IzNTdlZjg5IHJlbGVhc2UyNy1tYWludAorODc4MzggMDgwYTBlOTZiNDgyYjEzYzA4ODdjZTJlYjYyOWE3MDc3N2E0NGRiNiBweTNrCis4NzgzOSBiMGI3OWMzNzM0YWNkZmFmOWZmNDNlNzVmZTM5YTkwMGU2ZWQyODc5IHB5M2sKKzg3ODQwIGNhZDE4MTFkOWUxM2U5ZmU4MTVkMTQ3ODc4ZWVjMzA2MDQ3ZmFjMWUgcHkzaworODc4NDEgMzk3Yjk5ZjU5MTJlNzZiNmM1NzUxMWZmOTg3ZDUxOTM5YmY3MzNkZSByZWxlYXNlMzEtbWFpbnQKKzg3ODQyIDYzMWU4MzAwMTZjMGU3NGY1ZDkzNGFkMzVmMDdmYjRhN2NiOGI1MzUgcmVsZWFzZTI3LW1haW50Cis4Nzg0MyAzMTQ2NTk2OGFlMjYzNWM2NWY3MDdlZTgyNWZkMWQxNDJhZDIxNjRkIHB5M2sKKzg3ODQ0IGM2YjhjNWI1NjRhOGM0NDg2MjY3YjI4OWI1MzkyYjM1NDEyNWQ3MWQgcHkzaworODc4NDUgODc1N2NkNjU5MjkxOTRhNGI0YzgwYWMwY2YzZDA4Zjg2NjU4ZmJhZiBweTNrCis4Nzg0NiAyNTNkOTFlNGY2NzI5MTQ0MjU2ODk2ZjBjYzA2OTZjNTE1ZWMyNTQwIHB5M2sKKzg3ODQ3IDNiNzllYzgzY2UyMTY2NmY0YjUwNjVhNzc1Yzg5OTFkNGVhZjM5YzAgcHkzaworODc4NDggZTQ4MDYwNDc2N2M0ZDMxMzc4MjI3ODI2MDkyMDViZWM0NDE1N2RjYSBweTNrCis4Nzg0OSAxNTk2N2I3ZjA1OGYxYjc4MmE5ZDBiNjFmZmFiNGFiMjFlYjlhNDhhIHB5M2sKKzg3ODUwIDBlMWY0ZGY0NzhmNjY4YTc0ZGIxN2RkNWI3ZTU1YmY3NTUwY2NhNDQgcHkzaworODc4NTMgNjQ5MmE3MTM4ODdlOGQ5MzUwY2QwNjNlOGM0ZGNjMzkzMWY1YTAyNCBweTNrCis4Nzg1NiBkYzlhNTZkZGE0Mjg3Zjc3NjA4NjY0MzFkMmIyMWE2OTg0MjIyYWQ3IHB5M2sKKzg3ODU3IDkwY2JhNmE2NzJmMGU5YmQ3YzNiNmE1NGJmNWNiOTljNjYyOGY2ZjkgcmVsZWFzZTMxLW1haW50Cis4Nzg1OCBkNjU2NmE3MGNhYTBhODRiNGYyMTdhMmE3ZTdmMjA0NjM3NTY3ODk0IHB5M2sKKzg3ODU5IDgyMzllYzZmMzllNjI1NTEwODk3ZTkzN2U5ZGZlNTVkYzBmY2ZiYjMgcHkzaworODc4NjAgYzAzZjY0YzcxYjA1YWNlMGVjYmM1ZDJlNzY3ZmU2Y2IyOGY1MDljOCBweTNrCis4Nzg2MSAwOTMyM2M5MTEwOWQyZmNlMWU1NzA1NTM4NDA0NzY1ZWJlNTVlNGQ2IHB5M2sKKzg3ODYyIGM2ZDQ1MzQ1NjJmNDBhMTI3MmRjY2NlODExZDNhNjUyMmFiNjBlNzIgcHkzaworODc4NjMgZjEyZGE1M2I4ZDY4MzA1NjdlYjViZTc4MjljZGI5Y2ZkMTU0N2JjMiBweTNrCis4Nzg2NCBhYmUyMDFkZmQzZGNlMmZiNzExODg5ZWNkYWRkNmQ2NDNjZTNlZGE0IHJlbGVhc2UzMS1tYWludAorODc4NjUgMDc1OTc0YTkwYzMxYjBjN2VlMDVlMjZkODI2NTNkNTQ1ODI0MTA5YiBweTNrCis4Nzg2NiA0ZDE5MjcwOTFiMzlmNzlmYTA0YjA1MjMwYmIyOTAyYTlmYTlmZTIxIHJlbGVhc2UyNy1tYWludAorODc4NjcgZWEwYjk0ZDQ3NTRkNzU1YmVmYTQ4NzU2ZTgwYWMyMWNkMzZmYmUzZiBweTNrCis4Nzg2OCAyMDUxN2FhM2EzNTg5YWM2MDg5YThmODFhYjEwZDFlNzU5MmRiMmI5IHB5M2sKKzg3ODY5IDcyNjNiZDkwZTExMGQ0NjZhNDRkMmM4ZjEyYWE3NGQzYTA0MmM1NDMgcHkzaworODc4NzAgM2VkM2M3YzZiNjA1ZDc4MDcwZTBiYTE1MjkzZDQyNDdjM2U1NDE3NSBweTNrCis4Nzg3MSAxZjcxYzQzYWQ3ZTMzOGZmMzBlNWY3M2UwOTNhZmI4YmJlY2M1ZTkyIHB5M2sKKzg3ODcyIDYxNTc3OGJlOThlOTk1MjVlN2RmZTI3MTIwY2RlMGYyMTU4OTM5M2QgcmVsZWFzZTI3LW1haW50Cis4Nzg3MyA4YmJmZjFjMjRhMzEyYTBiZjczMzg0MzhlYjk2N2QzYmQ2MmEwYjI0IHB5M2sKKzg3ODc0IDk2NmI4N2YyMzk1Y2M5YzcyYjY5ZjNkYTk0YTE5Y2Y1OWIwN2ZlZTkgcmVsZWFzZTMxLW1haW50Cis4Nzg3NSBhZGM3ZTE2NzFkOGMzOTVhMmI4ODg1NjMwZTI0NGE4ZDhlNzFjM2ZmIHJlbGVhc2UyNy1tYWludAorODc4NzYgOWYxM2RjNDM5ZGM1MWM2OTU1ZDIyZmJhZTJlYWFjODQ1MjdkOGEyYSBweTNrCis4Nzg3NyAxOWMwNTA1MWJmMWEwMmQyMGY4ZDIxMGJlNjA1NTI3OWFkNDkwNjA4IHB5M2sKKzg3ODc4IDliMmU2MGFlNGZlZjk3ZGIzMGQ3MzcyZmExYzZlZjJlNWFhYTM2MmUgcmVsZWFzZTI3LW1haW50Cis4Nzg3OSA3ZWMyMTY1M2E0ZDFlNTcyZTY3ZTg1YzM0OTRmOTZkZWJkN2Y0OWRmIHJlbGVhc2UyNy1tYWludAorODc4ODAgOTUzMDFhNDI4NTJmNTQyNWU5YWUxMGQ5YTgxYmNhZjExOTQxMjhmMyByZWxlYXNlMjctbWFpbnQKKzg3ODgxIDJlNzQzNjliNGY0MDYwYWM2Nzc5YzYyOGYzZWMwZWMzYmNjYzhmMWEgcmVsZWFzZTMxLW1haW50Cis4Nzg4MiAwYzk0YzY4MWZjNTMyMGRjMjgwODgxMzIzNDg3ZDQ2YjlhMGM0MWI5IHJlbGVhc2UyNy1tYWludAorODc4ODMgZTRkMDdhNmY3YWJmYzE2NjE5ZmE1ODkzMTFjY2NjOWFiNWZlNmE4ZiByZWxlYXNlMjctbWFpbnQKKzg3ODg0IDVhYjk2MzY0ZTc2MTkwMGQ0NTMyYTcxZTc4ZDk0MmM0ZGY5MGJiYjYgcmVsZWFzZTMxLW1haW50Cis4Nzg4NSBkZTc2MmIwMWMzNjY0YjQ5NDdjYTM4MjM1ZWI5YjU2MWEyMDk5ZTNhIHJlbGVhc2UzMS1tYWludAorODc4ODYgNThhMWI3ZThlNzUzMjM2OWQwZmM1Zjk5ZWJjMTNmN2YxZDY2M2YzNCByZWxlYXNlMjctbWFpbnQKKzg3ODg3IDVmNzc5MDdiMDA0MWU3ZTEyYTkxNGZmOWJiZjU2ZjU0OTM3Y2IxMTMgcmVsZWFzZTMxLW1haW50Cis4Nzg4OCA0YWQ2MTk2ZjMwYTViMjIwOGFmYTc2OTJlODk3ZDMyZTRhYjU0MGE2IHJlbGVhc2UyNy1tYWludAorODc4ODkgZTFiODBlMzllNDBmMzBjMzI3NTBhMmIyOTE3NmYwNWY3YzU3ZmY1MiByZWxlYXNlMjctbWFpbnQKKzg3ODkwIGIzM2JmNjY0YzQ4YWE0OTVlOGViOTcyMzdiYjJiNzYyMGVkYjRhMzEgcHkzaworODc4OTEgMTU3MWNjMDcyZmMyYWUzMDhlNzk5OTM0NzZkMmJkYWY4NGFhMTc1NSBweTNrCis4Nzg5MiA2ODFkMDU0MmJiYmQwN2U2NDI4OWUzOWM3MDUzNzM5ZDA2ZjNiZDA4IHJlbGVhc2UyNy1tYWludAorODc4OTMgZmZiMmMyNGJjYjYyNmRkOGUxMmU4ZjMzNDlhMDlhMjk5MWM5MzQwNCByZWxlYXNlMzEtbWFpbnQKKzg3ODk0IDRiZDI5NmM0OTUyNmY2MzUwMzU2MWIyNGI3NzJjNjE0MGNiNTNjNTggcmVsZWFzZTI3LW1haW50Cis4Nzg5NSBhMjJkNjFiZTQ4NDJiNDBjNzQ1NDc5ZjA5ZGJhM2U5ZGM5ZTQyMGE4IHB5M2sKKzg3ODk2IGZlNmZjYWY3YmIxN2RhNGZmMDU5NTRjYWM2Yjk3ZjE1NzM1MjMzNTUgcHkzaworODc4OTcgZjhjNjgzMTg0YWZmZGI3ZmZmYmJjYjViZmU0MTkyZDU5M2M0OGY4OSBweTNrCis4Nzg5OCA5NzRiMjdjOWQ4NDlkZjRjOWQ1YTIzMTY2OThiZGZmZjQwNTg4ODhhIHB5M2sKKzg3ODk5IDFhMzdmNGJhMWY5MjAxODNmZTgyMTY3MmE0NzNmMTgzYTg3ZDNkZDcgcHkzaworODc5MDAgYzJjNGE5OTQ0NTk2ZjRjMTM2ZTA0ODdkZDNkM2VlM2NmODczZmI3MSBweTNrCis4NzkwMSBjNGE1MjUyNmU3N2ZhNjQyMTZkYjM0YmMwMzdjYjg3N2I5YjIzNDZmIHB5M2sKKzg3OTAyIGI1YTc5YjVjYTIwMzcyYTYwMTdiNGFhYmFmNWY3MTRmOTNjYWM1ZmEgcHkzaworODc5MDMgM2MxMmFiOWUyMTRlOWVjZDUxNDBlMjEyMjQzN2IyYjk4MjY3NTBiNCBweTNrCis4NzkwNCBlYTNhYzYyZWZlNjdjZDRjZGY3ZmEyNzVjOGIwZjQ3ZmYzNGI1YzM2IHB5M2sKKzg3OTA1IGEyYjE2MWYxNzUyNTJmZGU3ZDE0ZmJjZmVjZDFlOTdmMDA1MWY4M2UgcmVsZWFzZTMxLW1haW50Cis4NzkwNiA1NjdkOTYxYmUwODNjNTc0ZWE2MzRkOTE1YzBkMTkxZGJlYzhiMGU0IHB5M2sKKzg3OTA3IGVjNTg4OTA5NzVmMWQyZjBjYmZjOWFiZmViZjE2ZGJlYjIwY2JmNjggcHkzaworODc5MDggOTg1NWM4Y2NjYjM2YzBlMDRhZDE5NTRkMjBlNzdlYTQ4YzdjMDZmYSBweTNrCis4NzkwOSBkYjdhMzJkOTBjZjRhMmQ5MzU4YjcwY2YzNGU5ZDZjZDRmZTMzYzg0IHJlbGVhc2UyNy1tYWludAorODc5MTAgM2U2ZGU4ODUxZjIzMTAxNjVmNzlkMWViMzQwYmQwNWQ2MjExZDk3ZiBweTNrCis4NzkxMSAxNDUwNTIxYjlkOTNmNGFjMGU1ZWFhNjJkZjExY2ZkOGEzMTA3YTEwIHB5M2sKKzg3OTEyIGUwYTY2YWEzNDI3YTY5NjliM2NhODMxMWQwYmI4Mzc1ZGQ0ZWEyNDYgcHkzaworODc5MTMgZTQ3ZDhkOTU1YmQ2MTA4M2RmMTljMzFkYmIzNmIyMDY5Mzg0ODBjMyByZWxlYXNlMzEtbWFpbnQKKzg3OTE0IGFlOTk0YmQ0NjYxNzhjOTJlODkzZmQ0NDM1ZmQwYWMzYWQ2OGZlOWIgcHkzaworODc5MTUgNjVhZGQ3YTQwZjcwMjJmMjljNDkwNWIzNjAxZDEyODI5ZjJiNmI0NyBweTNrCis4NzkxNiBlZGYzMDFhZjI2MTYxM2FkZDBiNzM5ZDM5NWM3MWI2NTVhZjg2OTE3IHB5M2sKKzg3OTE3IGFjNmNjMTQwNGUxNTA1NzQ0MGVjZWE4MDZjN2ZhMDA3Zjk3ZTU4MDAgcHkzaworODc5MTggMWM2NWFiNDRkMzY3MWIzZDQ4ZmNhNDFiNjI3YTE1NDVlMTcwYmExNCByZWxlYXNlMjctbWFpbnQKKzg3OTE5IGQ3MDUyMmNjOWQ0ZmU3YTY0MmUxZDU3M2YxOTdiZDcwYzAxYzE0YzMgcHkzaworODc5MjAgYWQwZWI1N2ViMmI1Yjg3NmQ5N2EwNzM1MWU1OWQyYThiZjExMTljZCBweTNrCis4NzkyMSBjMGYzYWMxOTM5MmI2MTkzNDM4ZjhmZWZjYzQxNWJlMDU4YzEwNjI3IHB5M2sKKzg3OTIyIGIxNmIwZDc1NGZjOTNhNTdlYWM2ZDkxMDE2ZjBlOGZlYjg2Y2QxMjYgcHkzaworODc5MjQgZDU3Mzk3MTMxMTI0MmFlODgyYmMwYWI5ZTA1OTU2MDg0NjdlMmIzZCBweTNrCis4NzkyNSBkYjhkMTU5MzMxMjFjMjdmYjYwZWY3ZDlmYTRiNDFjMjgyZTlmMjA5IHB5M2sKKzg3OTI2IDc4ZmYwOGNjZDE4YjdmZGJhOWQxZmM5MWViNDQ0ZTI1MDdkZjAzZjQgcHkzaworODc5MjcgNzUxMzcyYjc5ZWQ2OTI1YTc3MTRjNDU1ZDJmNjdiMzViZDIzMWI3NyByZWxlYXNlMzEtbWFpbnQKKzg3OTI4IDIwOTY5ODIxYmI2MTRhM2FiOTc2MjUyZGUzMDc5MjgyNzI5OGQyOTUgcmVsZWFzZTI3LW1haW50Cis4NzkyOSA3YjUxNTk0YTE1ZGVkMTU4ZDRiYjI3NDM4NWVlYmMyYzlmMzZlODZlIHB5M2stY2RlY2ltYWwKKzg3OTMwIGVkNmQwNTNlZWJhNWViNjcyZTg4OWRjODg5NTNhMzZjODEwYTI0ODUgcHkzay1jZGVjaW1hbAorODc5MzEgOWZhMDdlN2NkZjM4NjJhZjUwN2YzMzk1ZmVlYjVhMzAyMjRjMWIwZSBweTNrLWNkZWNpbWFsCis4NzkzMiA0YjQ2OWM4N2Q3ZTJlYTgxMzM1MjI0MzlmZTExYjkyNDc4YzM4NDcyIHB5M2stY2RlY2ltYWwKKzg3OTMzIDgzMDk1MmE3MWQyMTc3ZDgxYTRhZGVmYTMzYjY2Yzc5ZmI0NTk0MWQgcHkzay1jZGVjaW1hbAorODc5MzQgMDQ4YWQwNzE3YTQ1MjI5YWYzMGI3OGJjOTdkYTRhMDg0Yjk3MzNhZCByZWxlYXNlMzEtbWFpbnQKKzg3OTM1IGY4MjdmNzAzZWY2NWMwZTQwM2MyZWE4Y2Q1ODlkMjJkN2QzNmFlMmUgcmVsZWFzZTI3LW1haW50Cis4NzkzNiBhM2MzNzk1OGEyMDk0OGRjNThhMWQyMGUzNzk0NzFlZjU0YzM0NGI1IHB5M2stY2RlY2ltYWwKKzg3OTM3IDcwN2Y4OTI3ZDY2MzA2MGI3YzJlYzdkNmExMmUyMmNmYTI5MjE2N2YgcHkzay1jZGVjaW1hbAorODc5MzggMjI0NGFjNmMyYTliZmJmZDNmYzZkMzE4ZTQzMDZlNTMxNmZhNWQ4YyBweTNrCis4NzkzOSA1NGM4NjQ0NDUzZjkxMzRkYzFiODVkZWM1ZjJhNzBlMWQzOTU0ZjA4IHB5M2sKKzg3OTQwIGMwYjk1Y2RhZjQ2MGEyYTgyMzNmYWFmZjkwNzg2NDBmMjhlMjhmZmYgcHkzaworODc5NDEgY2I3NTRhNTgyYjM0MGM1OTAxOWM0ZDQzMDQzMDc4MmU3ZWFlN2VlYiBweTNrCis4Nzk0MiAyNTgxYTE3YjI5YWYwMzMxOTIyNWIwM2I4N2IwMDQzYjFkZWJlMDRiIHB5M2sKKzg3OTQzIGRmMzRiYjA4NjliYzg1MmQ0YjRmZDA3Y2UyNjdiMWNhNzcwNDQ1MzEgcHkzaworODc5NDQgZWM5NmI1YjU3MjNiY2Y0MzI2NzUwMTI0NWM0N2M5OGJlOWNmNzQxOSByZWxlYXNlMjctbWFpbnQKKzg3OTQ1IDFiMWE2NDI5NzE0OTdhZDBjZTU4MGQ2NzFhZjgzMTc3ZmM2MjlmY2EgcmVsZWFzZTI3LW1haW50Cis4Nzk0NiA3ZjBkMGM5YTJkNzI5Mzk5YzJmMjhjYzM5MDI4Y2M1MjkwZmNhZDY2IHB5M2sKKzg3OTQ3IDI2OWNmNDZjMDlhZjViODMzN2I5MDIxN2IyMjY5MDI0NjRhYjI5YjQgcHkzaworODc5NDggZmVmNTIxZjQ1YWYzYTkwYTY4YjY3NDA5NzE1MzNkNTFhNzgzN2RkMSBweTNrCis4Nzk0OSA0OWIwYjJiYzBlODMzMWJkZjllNDIwYmRhZjMyZjgxYmRmMWI2ZDhmIHB5M2sKKzg3OTUwIDQzNTA3MjFkZWU1NTNmM2NjNjE1ZmZiNDY0M2U3MmQyMTFjMjBhZTUgcmVsZWFzZTI3LW1haW50Cis4Nzk1MSA2MDA5Mzg4Y2E1YTIzZmZjYWI3NjIxNWJmM2Y5YmExYzk4YTIxYzExIHJlbGVhc2UzMS1tYWludAorODc5NTIgNzRiZjkzYmU1NjcxMDJkMTE4ZjQzNDI4MzM0ZmNhOTVlMzE0N2EyZSBweTNrCis4Nzk1MyA2MDFiY2I2ZmY3NTJkNzVjNzAyZjFiY2ViMjQ4MGQxNzAzYjZhN2YxIHB5M2sKKzg3OTU0IDIzNmUxMWJhMThjNTczOTZkNTcyZTRiODJlNGE1NzFlZjhmOTM2ZjMgcHkzaworODc5NTUgMmVhMWNmZGY5MjliZWUwOTM4NmU1NjNjMGMyNDExNDA0MDcwNTZmMCByZWxlYXNlMzEtbWFpbnQKKzg3OTU2IGRkYWExN2MwOThkOTNkZWRjNjdjYjc2YWY2MDdmODIzNTU5NDFhZTMgcmVsZWFzZTI3LW1haW50Cis4Nzk1NyA5MTQ0NjgxN2NjM2U4ZTczZmNlNDBhNzkzZDc1MGRjMjYwZTUwOGZiIHB5M2sKKzg3OTU4IGE1MDIxNDk2NmQyNDgyZWE2ZWVhZTI3ZjZlY2IyYTA3NGIxNmMwZjcgcHkzaworODc5NTkgNzdmZTNmMTYwODdhZjlmMWM3MzVlNjFhOGFlZDEwMTRkZTZkZWEzZiByZWxlYXNlMzEtbWFpbnQKKzg3OTYwIGFlY2NiZDE2OTcwZjhmNjVhMjJmNmE1N2VmMDk4ZWUzMGU4ZDk0MmMgcHkzaworODc5NjEgZTE1MjYwYTQ0ZTQ0NzhmYTQ2ZGY3MGMyZWM3OTIwYjAzZGFhM2FmZiByZWxlYXNlMjctbWFpbnQKKzg3OTYyIDUwNDhiMjcyMDBkNzRhMTA3NWNmZTVjYmUzZTA3NWU1MmVlZWFlYTAgcmVsZWFzZTI3LW1haW50Cis4Nzk2MyA2Y2M1Mjc3ZjVlN2FhMzMzNTIxZWM3NDU2ZmUxNWIzZTZhZWY3YWYwIHJlbGVhc2UzMS1tYWludAorODc5NjQgYWMwZWI1ZGYyYzA1YmVjMThlM2E5NzdjMmM5YzIwOGE1OGFjNmQwOSByZWxlYXNlMjctbWFpbnQKKzg3OTY1IGQxMjAyMThkODBhYjQzYjRjN2VlOTJhMjViYWFmM2ZlYmQzZjIxZDcgcmVsZWFzZTMxLW1haW50Cis4Nzk2NiAzZWVhZWNmMDA1YzE0ZDM4YzRmN2QyMDVhMzU5ZGIxZWY2OWM0MzJjIHB5M2sKKzg3OTY3IDZkY2Q0OTE1MDZlZDUwNTMzMTg4NDcyYTU5NTliM2Q4MmI3ZTE0MmMgcmVsZWFzZTMxLW1haW50Cis4Nzk2OCBiOWI1NTFlZDA4NThkMmI3ZGIxNDMzYjAzMWU4MTVkNDQyMTI3MDI4IHB5M2sKKzg3OTY5IDQ1YTM5MWNkYzY4YWMyOGRjZDNkNGFiZjhhMmEwZjIzNjlmYTNmMWEgcHkzaworODc5NzAgNGFiZmI3NjcwZWFkZGE5MDdiZDYxZTIyZTE1MjE5NzAyMzM2MjFmOCByZWxlYXNlMzEtbWFpbnQKKzg3OTcxIDQxYmRjMDMyZTcxYWNkN2Y0NDU1NTRhNTExZWFhOWY1Y2IwNjYwNmYgcHkzaworODc5NzIgZTFjYzM1NzI4NDgxZWVkZDRiNzUzZTYwYWI3MWFmMDJlNzM5MDllOSBweTNrCis4Nzk3MyA0ZTg2ZDY5NWJhOThhNTgyMjlkZTQ4MmUzNTJkMGI2ODNmOTZlMWEyIHB5M2sKKzg3OTc0IGM2NjlhNjk3NmJmOGNmMmI3YTc0NzM2MTA1ZTU1MmViNGFiMDI1ZWYgcHkzaworODc5NzUgY2NiZDY1ODdmOGVkNWM4NzIyZDA0NzIyNWJhM2MwMWUxNjcwYmRiZiBweTNrCis4Nzk3OCBmOTE2YzJhYTIzOGZlOGEyMGNlNjU4YTJiOWZhYTA4NWFkMDM0NjljIHB5M2sKKzg3OTc5IGVmZGYyNTYxN2I3Y2Q0MjdlYTQ3Yjg5NGJlYzNiOGFjMmFlOWU1NDkgcmVsZWFzZTMxLW1haW50Cis4Nzk4MCBlMTI1ZDkyZjc0MzhlMTJmZmY4ZjNjZDNkYzY1OThjNzNjMTgwNTAxIHB5M2sKKzg3OTgxIDg3MTlkZDcxMjM4NGRiNTk2OWE1MjkzZWQyYTRkYzE5NzNlNDNmY2MgcHkzaworODc5ODIgMTBkNjdkYjY3OTQyMGY0ZTc1Mzc5NWNiNDI2MTk1YTQ2ZGVkMGZiYyBweTNrCis4Nzk4MyBjYmRjOGIxZTZiZDM5Y2ExYzVhOWI0YzBjNzk2OTE2M2MwM2JiN2VmIHB5M2sKKzg3OTg0IDRlYWUzM2YzNzk3YzVkMWNkMjJlNjlkNDk4NDFmZWI3Y2ZlODc3MzkgcHkzaworODc5ODUgMjVkNTNlNDQ5N2Q4NTI3ZDg5ZTI2MDBiN2Q4NWQ3OWYwZDlhMTNlZSByZWxlYXNlMjctbWFpbnQKKzg3OTg2IDJmMDg5NGMwMmJmMmI4OGNhMDIyZjE5YTNlOTJkY2U4ZWY4MmI4MDcgcHkzaworODc5ODggN2NiYjVmM2I2OTU0YjlhYzJmMjViMjk4YTUxYTZiMDA0YjY0ZmE1ZiBweTNrCis4Nzk4OSA3ZDY1OGI0OWIzZTE0ZTliMTYzZWMyYjNiYzE2ZDk0OTFkMTQ1MDEwIHB5M2sKKzg3OTkwIDNhYzliN2NmNzYxNGNkZTAyZjVhZGEwNTM0NWIzMDNiODU2YWI3NzAgcHkzaworODc5OTEgNjA4ZjNhNjE1OGE4YzgxMzM3ODkwNzUzMjE2MWViMTU1NTgxOWE4YiBweTNrCis4Nzk5MiA0NzRiMmNlMDc5NGZmYWZmY2FlNGUzNmRjNTFmZDk1MWY0NTVhMWI3IHJlbGVhc2UyNy1tYWludAorODc5OTMgMDM1M2IxNjEzYWE4MTRiYzZjOTNlMjQ0OWUyMjM0OWJlMTI4OGE0MCBweTNrCis4Nzk5NCBmMTk4MjRhYWIzOWM4MGJkNDZjZWNjZjk4OWJhMTYwM2NmYThjNjFkIHJlbGVhc2UzMS1tYWludAorODc5OTUgMjQ0YTI3NDc3Mzk2ZDRhMjk4MDRhNGJmYmFhZTEwNjhjMzcyZjliMSByZWxlYXNlMzEtbWFpbnQKKzg3OTk2IGY2ZTlhYzRiODgxMzZiMzhkOTQ3YzFlNjAxNWZmYTI5MWFmMTZhZWEgcHkzaworODc5OTcgN2Y4ODg4YjRmZGZjYWZlOWEzZDAwZTgyMjE5YTY1YzllMWZlNzM3YyBweTNrCis4Nzk5OCBkODY0MzI4YTc0ZTQxNDJhYTI4NmY4MjJjNGI4MjdkMWI3MGNkOTMwIHB5M2sKKzg3OTk5IDk2ZmZlNGEzMTFkZDRkNWYwNTQ4YzNiZDA1ZDRlMzNiZWU0Y2YzNmUgcHkzaworODgwMDAgMzU5M2IwZDljYWE3NGM5MDQ4YjA5ZDg0ZTAxOWQ0MTc1ZjAwYzAyNiBweTNrCis4ODAwMSBmZWJlMDRhNmQ0ODY0ZGQ4OGE4ODJmMTdmMzNmMDEwMmI0N2Y5NjIzIHB5M2sKKzg4MDAyIDQ0MzBlNGQ2MzU5NDdhMmExNGJkNThiMzY0NDQyMjU4ODFhNWIyMTggcmVsZWFzZTMxLW1haW50Cis4ODAwMyAxOGFiOGUwZTY3MDI1YmMzMzliYjQyZGRiZjNiZTA0ODkzMjIyOWE2IHB5M2sKKzg4MDA0IDJhZmNkZjY4YTM4OTFmNzk1MmJhMWM4ZTMzMzM0ZDM3OWI2NDUwMWUgcHkzaworODgwMDUgYjA0ZGE1NDRlMTNiYmY1NDNkN2ZjZGYyZmNiNDQwMDU2ZDY4MzYxOSBweTNrCis4ODAwNiA0ODQ1NDc2NWQ4ZTBjZTY1NTBhMDRjNGQ1M2FiMzdhMjhhOTdjODY4IHB5M2sKKzg4MDA3IDkxMWQwYTc0NjA5ZTIxODAyMGQzZGZlMmVkMGExODRjMDUwYzU1MDggcHkzaworODgwMDggN2IyZDdjZWRhZmIwYTExNjJmMGQyNWJmYzhmYjYwY2RmNTcwYzNlNSBweTNrCis4ODAwOSAwYjRjOTk1Mjk5ZGRjZWRkMTUyN2EyY2VjZTJiOTA3YTI2ZWZiMTI2IHB5M2sKKzg4MDEwIDRkYzU1MDM3MzFmZWExNzY3Y2Q2Y2FlOGVkOWE4YzBmM2FlMzlkZTQgcmVsZWFzZTMxLW1haW50Cis4ODAxMSAyOTMwMzkzZjBiYmI5MWRhNWM0ZTYwNDU1YTVlNmRhZTQxYjgzYWExIHB5M2sKKzg4MDEyIGFlMDk5NDU4MzM0NTFiYjhjYjVjNzMxOWVmMWFlNzlmOTJmMmU5OTggcHkzaworODgwMTMgYzBjNTk0YWVmODQyMzVlNzAwYTJmMzJhYzZmNDkyOWRiYmJjNDNhMSBweTNrCis4ODAxNCAzOTY5YTZjYTE2YWYyOTE3NmM0ODY1MjgzYjg2ZjJlMDhkZTVkMjlkIHB5M2sKKzg4MDE1IDNmOTljMzZkMDBiOGFkNWYyN2M1NjllYzAxODY3MmMxNjI3NTcxNWYgcHkzaworODgwMTYgOTNiN2MwNTgwYzQzNDY5YmZiYTE3Y2Y1MTE4ODQ1ZDhjMTRhMzQyZSBweTNrCis4ODAxNyBmMTMwYmUwMWQyMzAwZDk5NDMyZjNiYWVjY2VmMWY0YmFmNzkxMjMwIHB5M2sKKzg4MDE4IGJlZWFiMGZhNDFlNWVhZmY2OTZhYWU1OWYyMzJjNmI0N2UwMDM3MmMgcHkzaworODgwMTkgYjAzNzQ3YWRhNDRkNmE4MDI1MTM2MTJhMmE0OTkwN2UyYjczNzYxNCByZWxlYXNlMzEtbWFpbnQKKzg4MDIwIGVmMDc3N2FmOTk3OGVlMmIyN2Y0NGI5ODlmNmFjZmVmNmY0YzA1YjIgcmVsZWFzZTI3LW1haW50Cis4ODAyMSBiOGY5N2Q4Y2Q0ODVmMjdhZDM1YzMzZGJkYTg0YWQwNGYyMGViMDIyIHB5M2sKKzg4MDIyIDNjMzE2MjM2ZWFiZDJhZWQ3N2RiNTlkZDA2Zjk3NDhkZTkyMTY0YTQgcHkzaworODgwMjMgNDFkODc0ZWNiZDgxZmI0NjYxN2Y3OGRiMDE1YTU0ZTBmZmU4NzlhZSByZWxlYXNlMzEtbWFpbnQKKzg4MDI0IDdhY2I4MzlmMzYxMzJlYjQ4YWM2ZTgwZjA2NWFlMzdjYTk3YmI3ZWIgcmVsZWFzZTI3LW1haW50Cis4ODAyNiA4ZGRjYWUyYjY0YjQ3MWZkM2VlYTcwMjQ5YzIyYWY3MzQyZDIyZTFhIHB5M2sKKzg4MDI4IDRhMjBlM2NhMjVlOWFkNzgxNDM0Y2Y4MWY1YWMzNGY0NjA4NThkZjMgcHkzaworODgwMzIgOTA3NmU0MjIwZmE0ZjBkMzcwZTcwNzRlZTIwMjdiYmUwMWRlZjk1OSBweTNrCis4ODAzMyBlODRkNWVmYTZkNzU0YjEzZTQ2N2RjOWI4NDA4Njg4NWYzYzJhZTg1IHB5M2sKKzg4MDM1IGFiOWRjNDI1NDdjMDk4ZTM0Nzg2NGY2YTIwNWI0YTU5NjZkYmRlMTEgcHkzaworODgwMzYgODY1ZDViMjRiZjI4Y2E0MWI1MzZiZWZjMzI2NDA3YzAzZTc0YTRkNSBweTNrCis4ODAzNyBmZTEwMjNhZjZiNTk2OWQ0YzUxNGM0MmU5MWVjZmNlZmMxMmJlNmFhIHJlbGVhc2UzMS1tYWludAorODgwMzggYWRhNzAyYzA0ZDE0YzM3NGJlZjYxZjYyZjFkYmJkNTY0MTBkYzY4YSByZWxlYXNlMjctbWFpbnQKKzg4MDM5IDQyZWZjMTFhYjc4MmQwZDFkMDJjNThmODdjNjJkMTU5YzdiZTk5OWEgcHkzaworODgwNDAgODU2NWU3MjNiNGEwZWEzZGFhMTRiNTM1ZWEyNDVhZTc0MWNjZmNkZiBweTNrCis4ODA0MSBmYzFkMTU5MTc4OTU1ZmMyMTk2YjFkODI5NDhhYjhkYjE0OTRkM2NjIHB5M2sKKzg4MDQyIGIxMTA0YjQyNTEzNGM2ZTlkZDE2MzhiYTRiZGM0NmNjNjhjMDY1MWEgcHkzaworODgwNDMgOWYyODJjZmE4OWEyMTg2YTVlOTZiM2YzNWU1MzM3OTc1NzhmMWY2MCBweTNrCis4ODA0NCBiN2E5N2YxMWI0MWIzNzZkOTQxYWI0NGQzM2IxYmY0OGE0Y2EwMmY1IHB5M2sKKzg4MDQ2IGM5MWRlMzI2ODM1ZTk3OGZkOTVmZTllNTYwYmQwNTY5NTM1MzY1YmUgcmVsZWFzZTI3LW1haW50Cis4ODA0NyAxZjZlMDQ1ZThhNjliYWI1YzU1Y2Y2ZTJlOGJkYmY2NmI3N2EwMzJiIHB5M2sKKzg4MDQ4IGQ2NzA0ODJhNTgyMTE3NWY5Y2Y5MTE3MjNkZDA1NDM1YjFkMjEzNDggcHkzaworODgwNDkgNDVkYTgzMzI3NjM1ZmRiY2Q1YzQ4NDUzYTEyOGJjYjE1MWFkZjBlMyBweTNrCis4ODA1MCAyY2Y2N2M2YWE2ZWU2OGYwYWJlODA3YTY1M2QyMWRlYWQwZWYxZDFmIHB5M2sKKzg4MDUxIDM4NDczN2E3NDA4MGUzZTE3NGI1ZTg1YzhmYjY1MGQ1NjU3YTc2MjUgcHkzaworODgwNTIgNDcyNGI5NGM1NzQ1NjhiNjIzOGJkNzUwNTMxYTEyOThiZDY4YjRkOCBweTNrCis4ODA1MyAzNjhlOTEwMzE4ODAyMDBiMDg0ZjNmNjE2ZDhmMWUyY2JkZmZjNjJiIHB5M2sKKzg4MDU0IGFlZWZhMjIxYmJlNjUyODA1ZjBmNTJmODQ2MTQzZmFhMzkxOTUwM2IgcHkzaworODgwNTUgNjkxYmMyYzJmYzIyZDU1ZWNkZDU1ZjJhMDRhYzZiZWI2YWRiZTY3ZCBweTNrCis4ODA1NiA1MjVhZWFhM2Q1M2YyOWZlNTBhNDk2NWQ3ODcyZjE3ZmQyYzY3YWZlIHB5M2sKKzg4MDU3IGZhZWMxYjVhOTZkYjc0NGQ3NmI5OWIxZTEyYzg1NmQwYTc2ZjgwNWYgcHkzaworODgwNTggMzY5MTA4NTFhNzE1Y2ZiNWY1NTRlZTMyMjQ2MGQ3MTNmYTRhZjcwMCBweTNrCis4ODA2MiA3YjMxYmViODhjZGIyZjE5NjgzMDRlMDI4Y2Q0ODljMGNkZmFlY2MzIHJlbGVhc2UzMS1tYWludAorODgwNjMgMzY3NGRjYjQxYTk0ZjMwYzA3MGU5ZWZjZGFhYjk1OTg5ZGZkNzAwYyBweTNrCis4ODA2NCBkZDg3YjBlZmNkZDgzNGEyZTViYzQ1OTEwNDFhZjYyNDc1MTYxY2FkIHJlbGVhc2UyNy1tYWludAorODgwNjUgYzU5Y2VhMjE4NTQ3NjczNWQwYjdkZWM3MzVhOTliODFmNTk1ZjBmYyByZWxlYXNlMzEtbWFpbnQKKzg4MDY2IGRmOGI2YTJiZGRkZDcyZjhkNDBhODI2NDMwMTExYTlhNmVhYWFkZDMgcHkzaworODgwNjcgODExYjRmYjhmMGNjNjkyMDFhNGIxNzlkMGNmMjcxYjhiMGFjNWQ0MyByZWxlYXNlMzEtbWFpbnQKKzg4MDY4IDFmNmQxNDE4Y2MxODMxNjdiYmRhZjZiYzBiNmEwYzVmZTgwYjliNzYgcmVsZWFzZTI3LW1haW50Cis4ODA2OSBhNzhjNmQwYzNmNjljZDlmNzYzYjIxN2EwYzMzMzM0ZWQxNDdjYzMwIHB5M2sKKzg4MDcwIDZlOGUwZmUxODIwNWYwMGEyNTI2OWUxYjg3MjgyZDllMzcyNjdkZmQgcmVsZWFzZTI3LW1haW50Cis4ODA3MSBiOTQ4ZGJkMWZhYzFiNGI3YzZiNDExYzFhZmM2MTFhNWM2OGEyOGNkIHJlbGVhc2UzMS1tYWludAorODgwNzIgY2FjYzM1YTFlMGMzZDE1OWRlODMxNDk0OWM2ZDQ3ZjRmZjdiODBiMCBweTNrCis4ODA3MyBkMzVhMjRhOTQ3MTc4ZDQ5M2U0MzdjYWFkMmNhMDYxNTA1N2UxMmI1IHB5M2sKKzg4MDc0IDRkMjc1YzU4MjE0YjMxMzI5MWQyOWRhM2E4YjUyY2M0NDFmZmU3ZGEgcHkzaworODgwNzUgZWRlMjYwYTUzZmI1MGE4N2E5ZmY0ZTJjYjI3M2FkOGJkOTA1NTU0NiBweTNrCis4ODA3NiAyOTVmZjU1YTI2NWU3Yjg3MTRmYjEwNTBkMzc2OTNjZjk4MTRlNTZmIHB5M2sKKzg4MDc3IDlhMDBkZTI1MGUxZTQ5ODJjMmNkMjEyMDAyMTZjOTMyYWMyZTg1Y2UgcHkzaworODgwNzggODk2MjhmM2VjZGNiYjdiOWFmZDEzNDBkNWU3N2VmMDAzMTlmOWM0NCBweTNrCis4ODA3OSA0MTUxNzNmODdmNDVkODIxZGMxMzI5OTkwYzRlMjg1YTY1MjE4NmYyIHB5M2sKKzg4MDgwIDZlNjgyNjUzODk3NDNiMTNlYmQ1YWEzYjNhOWIwOTNjMzg0YzdkNzQgcHkzaworODgwODEgZmQ4ZTgwZmMyZDk0MzY0ZWQ0ZTk0MjYyN2Q0MjUzZGY5ODAyZjY2NSByZWxlYXNlMzEtbWFpbnQKKzg4MDgyIDYxMDE2Mjk4MTBlMDBkZDI1MTYzNzNkY2NlYWIwODg3NzMzZWE5YWQgcmVsZWFzZTI3LW1haW50Cis4ODA4MyA5OWVhYjVlZGY5OWRlYzcyZmM3ZDAzOTc2MDI3ZGM1ODNiMmQ2MjRhIHB5M2sKKzg4MDg0IDU3YmQwZDg2NGNiMDM3YTE0N2NjMWUxMGZkNDc3NGUwZTc0YmU0ZDkgcHkzaworODgwODUgZjVhM2I2Mzk3YTUzOGQ4MTAyMjljMzZjNGY5MTQ0MDkyY2RiZjAwYSBweTNrCis4ODA4OCBlZDhmMDU4ZGM2NGIwNzVjZjU2ZTI3OTY4MzAyMTZmNTRkYWEyNTNiIHJlbGVhc2UzMS1tYWludAorODgwODkgNTJlODAyOTE0Y2Y4OTYyMGM4ZWE3ODY2NjIyMzJjNGQ0NGRkMWFjMyByZWxlYXNlMjctbWFpbnQKKzg4MDkwIDJkNDJmNjRiMjhmZGVmMjFjYjhhNTk5MzEwYzY0NTljNGE0ZTJmYmYgcmVsZWFzZTI3LW1haW50Cis4ODA5MSAzNGQ0ODg0OGQ0MWJjODExYjM2MjJmY2NhZmQyZDFmN2JmYzdjYmI3IHJlbGVhc2UzMS1tYWludAorODgwOTIgZjQ0MWM2ZTNhNzY5MTI5YzExODA0YzdlZTgzNDdlZmEyNTc1NTIzMCBweTNrCis4ODA5MyA0ZTBiY2VjODA5ZGQ4MDk0Yjk5ZjFmNTE3MjdkMDBkNDI3NmE2ZWEwIHB5M2sKKzg4MDk0IDc2MWU5YWQxNjVlZjFmYzE5YmQzZjVlYzNmZDRlMjg4MGIxZTNmN2QgcHkzaworODgwOTcgZmM1ZDAyYWU1MmRkNmJkODI3NTIwM2Q1NzJmZjU0ODUwNmY3NTM5NSBweTNrCis4ODA5OCAyZmRlNWFiZmI1ZjFiN2ZiYTBmMTc5ZGMzMmQzODQzMjI1NjZjYzBhIHJlbGVhc2UzMS1tYWludAorODgwOTkgZWFjNTQ1N2ZmMTk1YjA4ZWY3NTQ0MDk5YjMxYzU0YzNiMjMzZWQ2ZiByZWxlYXNlMjctbWFpbnQKKzg4MTAwIDQ5NmVhNTAyOGMwMWFjNWQ3MjgyMTc1MzQxMWZkNzA0MzViYzNiNjkgcHkzaworODgxMDEgMzgyNGJlZjM3NmNjN2ZlYWNmMzA4ODA5ZDQyZDc4ODQxODJiNzFhNyBweTNrCis4ODEwMiAxMDlhZjAzOWY0NGYwZDU5NjYyNzJhYTU2ZDMxYTEwNjFjZDNiODc0IHB5M2sKKzg4MTAzIGNjODk3NTcyNGY5YThiZjQ4YTViM2VlNDIyYTA2OTQyOTVkNDA3MTYgcHkzaworODgxMDQgZDcwNThmNzRiZDA0YjRmYTZmZDVhOGY2ZDdjYzNkOWU0NzdmNjM3OSBweTNrCis4ODEwNSA0MWM1MWY1Y2Y1ZDk5NDgwMDYyZDUwMDcwMjE3ODAwYmUwODE2OGJiIHB5M2sKKzg4MTA2IGE3YWE4MzczYjVmY2I1MjA0YTcxZjg5NmI4ZDFhMTEyYjA1MTA5ZWYgcHkzaworODgxMDcgM2MxYzhkNDI2OTY2MzAxYWJlZWUzODcxN2Y5MmQxNWQ3ZjhlNTJkZSBweTNrCis4ODEwOCA5OTE0NzBiZTAzNDBiZTBjNmJhZGQ2ZjAyZmMwMjI0ZTljNmIyYTUyIHB5M2sKKzg4MTA5IGRlOTI1MzYxZWJhNTExNjc2OWRjZTM1ZTE2ZjJhZjk0ZGJlMGJhYzQgcHkzaworODgxMTEgOTFhYmU4NTUwNzJhMzY2ZDJkODgxOGMwNTAyODc3MzM2ZDZkZDNjMyBweTNrCis4ODExMiAwN2UxZWIyNDRkZjg4YjM2ODAwZjJiYTY4N2EyODIyZTY3M2M2NDgyIHJlbGVhc2UzMS1tYWludAorODgxMTMgMDJlYzE5OTdkNzVlODdjYzViOThmMzhiMTRkYTY4NzdlMzMyMGY5ZCByZWxlYXNlMjctbWFpbnQKKzg4MTE0IGMzNTQwMGMzNjMwNGU4OTdhODQwZTQ4YjIyOWYzNWM3M2FmYzVhMzggcHkzaworODgxMTUgYTkyNWVhNGUxMDVmODE0ZmZhZmM5ZmQ5ZjMxNGI5MWZiZjM3NGRlMyBweTNrCis4ODExNiBiODgwYzgyMjdjMDI3MmMyZDIxOWMxYjc2OWZhNDAzMTFhYTgxZTIwIHJlbGVhc2UyNy1tYWludAorODgxMTcgMjMzY2M3NDAyNzRiNzEyNmI0N2ZhZTc4OTViNDRhMDI0ZjU0YjNhZSBweTNrCis4ODExOCBlNGU0YmZjMDllMThkYjNjZmNjNDlhNWIwYjI5NmViOTA0YzdmMGViIHB5M2sKKzg4MTE5IDZiOGI2ZTVhZWMwYTVmNDQ4ZDY4NTFhNGJjZDkzZDEwOTI1ZDQ0ODIgcHkzaworODgxMjAgN2Y3YzJhYWI4NjFjMTFhODQwZjQ0YmE0MWYzNjhkZmYwMjk0OGE1ZiBweTNrCis4ODEyMSBkYTQ0YmIwY2Q0ZTk5MmQ4NzY4MTlmZjc3YTJlMWQyM2Q0ZjBjNjI1IHB5M2sKKzg4MTIyIGZiZWJmMGYwNjA1Nzk4MDliM2ZiMjNlMTFmODZiNzYxN2JkOTFlZTcgcHkzaworODgxMjUgM2IzYzUzNjMwNjM3YTVhM2I3NDhkYWEyMWE5YmJlOWY1MGIyZTJhZCBweTNrCis4ODEyNiBhZWY0ODI0MjBlOTZjY2JhMzhmZTgwNzI5ZGI0ZThmYjhhNmEzOTE2IHB5M2sKKzg4MTI3IGNlNDA3NTRhODQyYTNkYjUxYzFjNjI0ODUwMTcyODRlMTI1M2Q0N2QgcHkzaworODgxMjggM2QzM2Y0MWU4MThkYmYxY2U2YWM4ZDAxZjBhYjZjOWZiODVhMjdiMiBweTNrCis4ODEyOSA5M2U5OGQ0MGYyYTVhNTQ5OWQxMmQyMzJkMGI1NDBiMzU4ZGRlZTRiIHB5M2sKKzg4MTMwIDVlNzBlZWU4NmM2MTMwYjFiZDIxNzZhNTMwMjhiMDY4N2MxYmU3ZWYgcHkzaworODgxMzEgYzgzOTZkMjdmNTZlOGQ2NTllZDkyODM0ZjQzZTg1MzI2NmNhZTJmMyBweTNrCis4ODEzMiBmMzY1MzhiYTkwYThmYTMwYTBlYzgxOTM5Zjk4ODYzMjQ5YWE0ODgyIHJlbGVhc2UzMS1tYWludAorODgxMzMgZGY5MWEwMThkZTNhYjUwNThjY2EwNjEzZTZlM2EzMjI2NWVhNmZhYyByZWxlYXNlMjctbWFpbnQKKzg4MTM0IGZiNjY4YWFhMmZhNGYwZDc1Y2E4YTg4NTViNWY4MGE4Zjg4NWE1ODkgcHkzaworODgxMzUgZTRlMzJjNGZmNjI2MjdhM2U1YzBiNjQxNmQ5MjNiYjBlOTQ1ZWQ4NiBweTNrCis4ODEzNiBjYzIxNjI3MDhiZjYyYjViZjc1YWMxNDAwYWFhNmE3MWEwMThlOTRjIHB5M2sKKzg4MTM3IDhlMGI2MTdjNmMyMjE2ZDM0OWQ4MTg5NGYwMzZjZTRkMzg0YmI0NGEgcHkzaworODgxMzggMTY0ODAxMWM2NWRhOWEwYzI2ZGJiZjQ2N2Q0MTVhNjRkZTk0MGRhZSByZWxlYXNlMzEtbWFpbnQKKzg4MTM5IDI0MTYxY2Y0MDVmNGMyMjM3NDMwYjdmZTk2YTA5Nzg1N2Q0YWFlZDIgcmVsZWFzZTMxLW1haW50Cis4ODEzOSBkZThkYjdhYWY3YTI5NjA1N2FlMjYxMjViOTk2MThjOTYxYjRmZWY2IHJlbGVhc2UyNy1tYWludAorODgxMzkgYzQwODE3Yzk1NTE0YjE0NzFkYjI2NzBlMzQ3NDc0OGVjODQzOTBiYSBweTNrCis4ODE0MCBiOTY4MDUzYWZhZDBkYzUxZThiMDg3ZTU5ZmYxMWU1OTQ5ODYzODFjIHB5M2sKKzg4MTQxIDc4OGIwMWI1YTc0ZWExN2M2MGY3N2Q2YjJkMWU5ZmE4MGY1YjU3OGUgcHkzaworODgxNDIgMzBjOTEzNDJiNmFlNjM2NWI3MzNiMTMzNjA3MjFkZDk0YjA3MmQ3NyBweTNrCis4ODE0MyBiM2NhZGY1Y2Y3NDI2YzViMjc4MjBlNGY3Nzg5NzkwYmRjNWIwMDEwIHB5M2sKKzg4MTQ0IDA4NjczZTVmNTQ5YTI3Y2M3MTU4MWU2Nzk5ZWY3ZDBkNmFiZjZjMTMgcHkzaworODgxNDUgYmFhOTIyYjQ2MjM3ZGIyYjI5YTI4NDAzMTRkZDA2YzM3MWUxMzk1NiBweTNrCis4ODE0NiA0ZjdmMzk5NTE5NGExYzhiMDNkNDM4NjMxYmQ2OGFjYTRlMTM4MTBlIHB5M2sKKzg4MTQ3IDRjNGFiZmI4ODRmYjQ4ZmUxNWNjZDZhYzZlYmE1OWVlOGZkNTJkMjMgcHkzaworODgxNDggYmNmMDMwZjczZWVlYjQxNTdjZDlkZjhmMjM1MGE3ZWQ1MGIzN2YzOSByZWxlYXNlMzEtbWFpbnQKKzg4MTQ5IGI4YzBjYTM1OTc5YTJjZGU4YzFmODdmZmU0MjUwZDNkODc0ZDU2ZGUgcHkzaworODgxNTAgNDMxZGRjZGI0MzEwNmFkOWI2YmViMzhhNjRiNmQ5ZjMwZmQxMDZiNyBweTNrCis4ODE1MSBmYzJhZGU4OGFiNDE3OWZiOGMxZWQzOTg5ZWFjYWQ3MGEwMDBjNTZiIHB5M2sKKzg4MTUyIGQxYzA2MzA2YzE5YmU4MmJlMzliMjRiYjZmY2Y2ZDVlYmM5MWIzNTkgcHkzaworODgxNTMgYTBhNWM1ZDlhYTRmZGYxZjE2NDQyN2QwMWY5YTJjNzA2NzdiZmJjMSBweTNrCis4ODE1NCAzYmIyMWRmNjRhYTUxMjAxNWViNGJjNDY5MThlNTliMWNkNGNlYTAwIHB5M2sKKzg4MTU1IDQwNjNlNTI2OTgyZjI2YmEwMmMyNjNhMmJlN2RlYmM4OGVhNjY1NGQgcHkzaworODgxNTYgNmY0MGI0NzA5ZTlhNTJmZDhlY2E2NGExN2JjMGI0MTJlMzI3ZWM3MCBweTNrCis4ODE1NyA1YTY1ZWMyODc3MTM3NDU5NmYyZWU0Y2ZiMDIzOWVjMzI2NmNjMjNiIHB5M2sKKzg4MTU4IGRkMjdkZjhkMTRlZmMxOTdmZWIxNzk5ODg5NTlhNTI5MzBiZGE1ZjkgcHkzaworODgxNTkgMmRlNjk5ZTVmOGYzMWE1MzIxZTIwNzgxODEyZGM0MThjNjQzYzlkYyBweTNrCis4ODE2MCA5MGEyZDliNzAyYmNiYWFmYmE5Y2FkNzc3MjE2YWJhMWQ1ZTdlY2ZhIHB5M2sKKzg4MTYxIGYzYmZlYjJmYmNmYjA2ZDVmM2JlYjI4MDE0Y2Y0OTljZGExZGQ0Y2MgcHkzaworODgxNjIgMDNlMmE4NzU1NzA5MGFhNTJiYTAyOGI0ZGJiNjZiZjc0M2UyMzVmZCBweTNrCis4ODE2MyBjMTc1ZjVkZmYzOTYwNGJkOTA3ZTQ1MjhlN2I0Y2Q4NDBmYzRkNzVjIHB5M2sKKzg4MTY0IDgyNWViYWRlYmY5YmEyOTIxODVlZDZlZGQzNDhiMzUzMzcyNDA2YzcgcHkzaworODgxNjUgMWUzZjE2OWI5ZTQ2YWU0ZTFiYTgzMTIyOTE5MmJjNWNhY2M2ZGJmNSBweTNrCis4ODE2NiA3MDkxOWJhZDc0NTg0MWQwMjY2YzdhYmZiN2MxZWU2YTIzODQ4NmUzIHB5M2sKKzg4MTY5IDdmOWE5OGY3NjZkNzVjOWI1OTQ0ODkwMmNkZjU0OTFjZDQ1YmFhZGMgcmVsZWFzZTI3LW1haW50Cis4ODE3MCA0NzNlNDM2ODM5ZWU2MzkxZTJjNTcwNjZlMWNkNTFkZWI5YzNlZTdhIHB5M2sKKzg4MTcxIDhhMzBhMmNiNGI5ZTM0NzJkODkyZGJhMzZkOGRkMGQ5MGJhMjVlOGYgcHkzaworODgxNzIgNTk4YzE5NWU1MmYzNjA4NmZlOTM5MDI4ZGNlNzFjNDhmZmYxMjMyMiBweTNrCis4ODE3MyAzYjkzZDAwOTljZWQwN2M3YTVjYmQ0YWE4YTllYWRkMDM3ODk4NGU5IHJlbGVhc2UzMS1tYWludAorODgxNzQgYjAyMjU5NTdlMDA2NTk5NWZiMjFhNzhhMmEzMDMxNjNhMDQwODUxOSBweTNrCis4ODE3NSA5M2E0MWRmOGM3Mzc4Y2ZhYjZmNzY4ODU2Yzk4ZTJmYmQyY2NhYWYxIHJlbGVhc2UyNy1tYWludAorODgxNzYgMGI1Mjk4ZTdiMmQ1NDA1YmQ3MjM3OWVkNjZiMzY4MzI4ODk4ODcxYyBweTNrCis4ODE3NyBlYjRiYTAzZDdjNGRmMzIzMjIzYzc2YmJjNjFkMmM4MWMxYzU0MmJiIHJlbGVhc2UzMS1tYWludAorODgxNzggMGQ2ZWNjZjAwYjViZDY3ZDFjMjA5OWVjZmI3ZTM4MDkzNzA5NjQyMyBweTNrCis4ODE3OSA3MTI4MTAxN2M0M2ZjNDNmZmIxNzdkMmFkODFmMDVlNmNlM2ZhMWIzIHB5M2sKKzg4MTgwIGZhZTE5ZTU1MTdiNjViZTJiZjMwNzNkMzM3NTAzODE3MjBkNjBlM2UgcHkzaworODgxODEgMDMyMjBlZDQ4YmNhZTBkZTBmY2NkY2JjMGFkOGM2OGE1YjBjZDg3OSBweTNrCis4ODE4MiBjMmJkNjkyMDc4ZDIwZTczYWU0MTk2ZDJlNDgxZTJjY2I4NzRiNDhlIHB5M2sKKzg4MTgzIDMyYzg5NjY4OGM5MWQwNjhhODYzYjc2M2QyZTM3NzgzNWRjNGJjOTAgcHkzaworODgxODQgMDhmMzJkMTFiN2VmYmEyNTQ1NWRjMGQ2OTk3MmQ5NzZmMDZiOWNmYyBweTNrCis4ODE4NSA4OWEzZjZjMTJmMDIxMmRkNjFmZjVhZTAwOWMyM2EyNmZlZmQzNzkyIHB5M2sKKzg4MTg2IDc1N2E5YjE4MzZiMTlmMmI2N2Y2YWZiNmIxM2RhYTZmZDA5NDA5OTcgcHkzaworODgxODcgMDA3NTNkMDRiYmJmYjMzZDU4NWExZDE2N2JiOWRkMDBhZTAyZWRkNiBweTNrCis4ODE4OCAzY2FiY2UwYjZjYWZjYWNjOTAxOGZhNWRmYWZjYTNlMGJjMmI4MDRjIHB5M2sKKzg4MTg5IDIxOTc1NGU5YzM5YzJmYTA2MjgwNDBjOWYyYTc1YTIzM2I2OTIzOGUgdGVzdF9zdWJwcm9jZXNzXzEwODI2Cis4ODE5MCA3MDU3ODBiYTllM2EwNTNiNWM4YzUyYjM3NmRjNDc5ZDFjY2NmYmZkIHRlc3Rfc3VicHJvY2Vzc18xMDgyNgorODgxOTEgNzc2YzNjMjk0YmI3MzVjNDg5YzA0NmI4OGY4ODc1YzBlNGY0YTdhZSBweTNrCis4ODE5MiBmNjM5MmM0Y2U2MTk4Nzc3N2RmN2ZjOTM0ZmEwYjg5ZTViM2ViNGM0IHJlbGVhc2UyNy1tYWludAorODgxOTMgMzJmYzFjYWZmYjE3MDI2ZmE4NWE3ZmMyMmU1ZDEwYTU2ZDVlOWI1NCB0ZXN0X3N1YnByb2Nlc3NfMTA4MjYKKzg4MTk0IDgyYjdmNTNjMmFjZDRhOTNhN2RiM2M2ZTQ0MjAyYzc0Yzk4ZWEwZjMgdGVzdF9zdWJwcm9jZXNzXzEwODI2Cis4ODE5NiBmOThhZDY1MDkwMjk1YTU0NDI0ZDViNTllMjM2NjcwYzQ5MzE4NzJhIHB5M2sKKzg4MTk3IDY1YjA5N2FlZGE4MDEzY2E3NzI3YzU5OWE4MDMzNDNlZjg0MDA3MGIgcHkzaworODgxOTggN2IzMGQ5Y2ZhMGQ5ZTUxODg0YjU0ZjI0YWRhYmNlZDUyMGRkYTVmNSBweTNrCis4ODE5OSA0ODcxOGIxOWMwZGMwODJlMGFlMjAxYmRkYzcxODBkZjhjN2ZlZmZhIHB5M2sKKzg4MjAwIGJkZjk4NjRmZDI3NjA4NTMwM2E5YTE2MGZkNGQ5Njk0N2Q1M2IxYzggcHkzaworODgyMDEgMWYyMTVmZGEyMzgzOGNlMzc1ODc3ODFkOWFmMWZkMTEzN2FlODkwMSBweTNrCis4ODIwMiBhNjc1YTQ0Njg2MjA4NDM5Nzg4NWQxN2EzMDYxOGIwM2YzYmQ0ZjIzIHJlbGVhc2UyNy1tYWludAorODgyMDMgMWQzYmU3YjAxZDg0NWVhNjRlYzBmOTM0MGQyZGY4NDJkZjE3YTA0NSBweTNrCis4ODIwNCA4ZWFhMzI3OTdmOTJlMjkyZTk0NWQwYzBkZTkzOGU5MjA0Y2QyNjcwIHB5M2sKKzg4MjA1IGFjNDdkMTFhOGNhMjRkNDYxZjYwYTQ3OWJjZTBmNzE2MjliNDZjYTYgcmVsZWFzZTMxLW1haW50Cis4ODIwNiA0NGMxYjU2ZDc3ODdkNzE1MjIzMjk2NDM3ZWM0MzYxOTU4ODU3OWQ4IHJlbGVhc2UyNy1tYWludAorODgyMDcgODA1NjE3NmMwNTNmMDVmYzExN2VkOWE1MjY1Mjk5OWU0OWQxZjA0MyBweTNrCis4ODIwOCAyNzlhMGM5NTlmN2RhZWYwYjljMjYxM2VlMzlkZDI1MTdmZTA5YTJlIHJlbGVhc2UzMS1tYWludAorODgyMDkgNTkxZDU0ZmZlOTY5ZDc0NjdjZGMxMDE4Yjg4NDdhZDBhZDA5YWNhOSBweTNrCis4ODIxMCBmODJhMDRjYjE1MGEyYzA2OGYxNTljOWUzOWQ3MjBjYTMwNjFhY2M4IHB5M2sKKzg4MjExIGIwYWIzMzUyMmRkYTlmODNjYmFlMTQzZGM5OWQwN2EzYWMyMjA5OWIgcHkzaworODgyMTIgMGUzMGQ0MTNiOWU5N2Y0NmNjYTk4MGQ3NjRkYTg3ZmM1MjhlM2Q3NyBweTNrCis4ODIxMyBiYWMyOTY2ODBjZjg0NjdiY2QyZDkxN2I2YTljNmRhZDlkMmI5OWNkIHB5M2sKKzg4MjE0IGIyMmNjNzU2M2IyODgyMzExYmQ5YWRlYTQ2ZTM5NzhkMzE4NDQ2M2EgcmVsZWFzZTI3LW1haW50Cis4ODIxNCBmYzJhYjdjZGRjZjAwNThhNTFmOTE1MmY4ZjE5YzAzMGUwM2RhZmY2IHB5M2sKKzg4MjE1IGRkNzMyODY3Mjk2ODMxZTAzYTE3ODIyMDFmY2IzMGQ0OGMxNzk1MmUgcHkzaworODgyMjAgZDIxY2I2YTdhMTRlZTlhYzMzYTAzMjdjYTJhOTJkNjI2NDY1YmY4ZiBweTNrCis4ODIyMSBlNzk1OTMwOWY1OWM2NWI0ZWEyODYzNmQ3YjIzODljYWUyM2Q3NDRhIHB5M2sKKzg4MjIyIGU0MDY0M2EzYzMxZGZmZjNhYmE3NmVmYzY1Zjc4NjVkYmRmYTZlMTYgcHkzaworODgyMjMgN2M3ZWU0ZTExODUwZDA3N2Y3NTU3NmZhZjU3Yjg1Y2U3Zjg0Y2Y5ZSBweTNrCis4ODIyNCAyZGI2MTdlOTBjYTBjMTIwZDNjM2FmNzBmMDJiY2Y3MGJhZGE4YzY5IHRlc3Rfc3VicHJvY2Vzc18xMDgyNgorODgyMjYgM2VmODY1MzI3ZDdiMDU4MGVjMGIwMjE0YTEyYzhiZDU5OTU4ZGU0OSBweTNrCis4ODIyOCA4NTIxODZlNWFlMmFjNjllMjFkMDQyMTMwMjQ5ODE2N2M2MDcxZGY0IHB5M2sKKzg4MjI5IGNmNzUwMGYwODBmZDNhYzYzZTQzMGM2NGY5MzcyOTE1NDgxYzJjZGMgcmVsZWFzZTMxLW1haW50Cis4ODIzMCBkN2NkMWI2MjYwOGI5ODMxYzU0MWY0NDBhNjBhMmIzOTZmNTI5NzNhIHB5M2sKKzg4MjMxIDA4NWUwZGQ2Mzc5NmI4MGQzZjhkZWU3ZjkwZWQ3M2RhZmQ5YjA5NjYgcHkzaworODgyMzIgNWM1MTcyNGJmNDExMTZhMDgzMmIwYzMzNzZkYmZhOGQyMTJiNDM3MSBweTNrCis4ODIzMyBiZTExZTU2NTNmZGE5NzU0ZmVjYjQxNGI0MTY4ZjM0ZTcyOGNhMTdjIHJlbGVhc2UzMS1tYWludAorODgyMzQgNjQ3MTNlMzE2ODNmOGI3MWUyNGI3OWNmOTg3ZGI5YzAzMWQ1NTgxNiBweTNrCis4ODIzNSAzMzQ4MTJiYTU4NzQyMmJkYzRiODkwZjc5YmQzNGMxNzg1YzUzZTc0IHB5M2sKKzg4MjM2IDZhMWZiOTQ2NDdjYjRkZGZjOGNmYTlkZDY3ZDg4ZjM4NzQwNzYzMzUgcHkzaworODgyMzcgMmFhZDcwN2VkYTYyNzhhMmEzYzY2NTY5MDY1ZWQ0MTRhYjMwMzEzOCByZWxlYXNlMzEtbWFpbnQKKzg4MjM4IGYxMmZlNjg1ZTQ0ZDI4ZGM5NzNjNjEyZDZlZWJhZDY2MDAzMDNhNjQgcmVsZWFzZTI3LW1haW50Cis4ODIzOSA3OTFmNTJmYmU1ZTA2MGFmYmRlNDU5ZDkwY2NjNzdjOTI4NDQ3NTI2IHB5M2sKKzg4MjQwIDVmMWFkNjVhMWI4NGM3NzdmZDUzNDEzOTAyNWUwNzY1NDViZGE5MDYgcHkzaworODgyNDEgM2M3NzcyZmZmYmFkMzRhMjYzMDJjZDMzMTI0NmRiOTU1ZTQ0NWU1NCByZWxlYXNlMzEtbWFpbnQKKzg4MjQyIGM2OTA2MDk5OTVhNjI3NjI3MzczZDY0ZmM4YWZkNzc5M2NlNDBkMWMgcmVsZWFzZTMxLW1haW50Cis4ODI0MyBiMGVmYjZmMGZlOTQzMjYzZjc2NWUzMDBhZGUwMTFjMGQ4ZGFmMzI2IHJlbGVhc2UyNy1tYWludAorODgyNDQgMGM2MDRlNjU0MjllMzJiODIzNDdkOTczMTQxODU3NWRmZTI4ODRmMyBweTNrCis4ODI0NSA0NmYwN2RjNDM3ZmZiZDc5MjVhNTMxZmVlZTQ4ODc5MGRjM2Y3ZWUzIHB5M2sKKzg4MjQ2IDhhMTlmNjAyOWNlNTk3ZTI5NzRhMmU0YmJmMDc1YjM4NDUwOWM5YWIgcHkzaworODgyNDcgYzgyNTg4Y2EzYTc5MDlkY2E3ZDZmOTAxMDkzY2NiNGM5ZjkzOTI4MSBweTNrCis4ODI0OCBkM2I0ZmEyZGQ3Mjg4ZWM3MDExNTJmNzcwNzc1MWYyNGYwMGRkNjUxIHJlbGVhc2UyNy1tYWludAorODgyNTEgMmM5MzcyYTFjNjg1YjViOTBlNGJjYWE1NTViMDg2ZmE2MWUxMTIwYyBweTNrCis4ODI1MiBkYzUwMWVmYTA1YjQxMjViYzVlNWJlNjNjZTkzOWJmMjFjM2Y1NzEwIHB5M2sKKzg4MjU2IDM2ZWViMjgyY2Q4NDRlYTg5MGQyMTg3ZjNmMWE0NDMwZDcxNzkzN2IgcHkzaworODgyNTggYmZhNTgzNWUxMGYwZTcxODVhZDc0NjQ4YjkxZDYwN2Q2ZDM3Yjg4MSBweTNrCis4ODI1OSA1OTVjMmI1NjY4MWViYjc2ZGRhODZmNzAzMWJiOTA4NTJhMjZiMTExIHB5M2sKKzg4MjYxIGRmYmQ5NTY4ZjQ5Y2JlOTAxNzNiNjYzZGYwMTY2Y2ViMDE1ZGQ0MDYgcHkzaworODgyNjMgMmJlZjdhYjYyNTZiNDIxMjQ0NDU5ZGNhY2ZhYWI1M2VjYTYwYmQ4ZCBweTNrCis4ODI2NCA5M2M0MDgxZGZkMTk1Y2JkYjA3YmU4ZmUxODI1YzMyMWRjMGE2MDA0IHB5M2sKKzg4MjY1IDI2NTc0YjAyNzA0MmM4ODAzMWE3OGE3NjllZjhiNWI2NzAxYjFlZTQgcHkzaworODgyNjYgYWNmM2UyNGRkMGQwZGZkMWUyMGM5MDdkNjk2ZDNkYTk2NWE4ZjU2ZiBweTNrCis4ODI2NyA3YzNkYWZiZWU5ZDBiNmIxYzExMjE1YTUyYzE2OWM3NjgzZDBjY2JlIHB5M2sKKzg4MjY4IGU4MjUwMTgxMmFlM2QzMTY1NjM1ZDk3ZjZmOTdhOWY4ZjFkY2Y3MGYgcmVsZWFzZTI3LW1haW50Cis4ODI2OSBhOWRkZGZiYWIyNDE3OWMwYjY5ZWIwODMxMWNkNmU3YWUxOTViNDZlIHJlbGVhc2UzMS1tYWludAorODgyNzAgMTgyMDdiOWQ5YTYwZjgxNTYyMGJlNTZlMDVjYTBmNWM5NzY4ZDMyNCByZWxlYXNlMjctbWFpbnQKKzg4MjcxIDBmMGM1ZjlhY2U5ZjNiYjRiNTIwYmM0ZjQ0ZDk0M2VkZTljNzU4YjAgcHkzaworODgyNzIgZGU2NzkyYmRkOTY1OTNiZDUxZTIxMGI4Nzk3OTIyMTJhNmExODgwMCBweTNrCis4ODI3MyAwODZjMmJjZDhkNzRlNmI0NDc0NjhmNzQ2MzVmYWUyNjRhYjZiZWZlIHB5M2sKKzg4Mjc0IDRhMjcyMjI1YzNkZTcxZTYxYTA3MTg1ZTQ0MDNiOTI0YmYwYjg4NmEgcHkzaworODgyNzUgYmMwOWRiODJhNWQwZjU0MzY5MTBlNTEwZjg3ODcyNjAwMTEzYTM3NCBweTNrCis4ODI3NiAwMmVmZGI5ZTA5ZTkwZWMyNTkwMDM5NDZkNGY0NGZjYzE5YmExMzgyIHB5M2sKKzg4MjgwIDRmOTQ4NzM4NDZhM2ZhNWZmOTRlYzJiNTc5YWY5OTUzYjIzNTBjNDAgcHkzaworODgyODEgMGE5ZjY4MGEyY2YwNWMzYmFlYzRjNjlhNGQ2N2MwZGNkMTk5MGI1OSBweTNrCis4ODI4MiA5ODdlNjYxNWEwNzk2YWQ5MDA0ZmMxYzNhYTA5MDE0NmJlYTViNDBjIHJlbGVhc2UzMS1tYWludAorODgyODMgYTZkZjNjM2UzNzQyMzYxMjRmZjk2ODkwYzc2MzQ2MmQxYzI3YTViYyByZWxlYXNlMjctbWFpbnQKKzg4Mjg0IDMxZjQwYmU5MjI1MjRjNjI5M2VkNzcwNjYyZTU3MGIwYjAyNjJmMTUgcHkzaworODgyODUgOGZhNzNhMDg4NWM5NWU4ZTE2ZjVkYTcwMmVhZDAyNDJjZjdhYzNhNyByZWxlYXNlMzEtbWFpbnQKKzg4Mjg2IGNhOTA5NDM4Y2Y5Zjg5MWJmMDc0NzQ0NGU0ZmZlNjM5ZWIwMjNmMjQgcmVsZWFzZTI3LW1haW50Cis4ODI5OSA3M2M0OTU3OWE0ODdjNGJkMWI3NThkOGM1Y2UyODhmMTRhMTQzNDgzIHB5M2sKKzg4MzAwIDkwMGZjMWVlNDQ4N2VmZTE4NzgwMDYxMGY4NjNjNTYwYjQzM2ZkZWYgcmVsZWFzZTMxLW1haW50Cis4ODMwMSA5NDRhZGY3ZWRhMmViYjFlYTYxMTRiNTE2YmY2YTEyZTliOTFiMWRhIHB5M2sKKzg4MzAyIDllNjU5NTEyNjZhMjA1MTI5NTAxNTdlZWVhNmRkYjg5OWVjYmJmOTcgcHkzaworODgzMTggYWE4NzMwMDRjZWE4MGRlN2FkZmJmYjE1YzI2ZTkzMDBjOWY2OGM5YiByZWxlYXNlMjctbWFpbnQKKzg4MzE5IDc3M2NiMzMyY2M2M2I2YzZhN2M1NTM0YzI4MDYxYzQ5ODU4NDBlMzkgcmVsZWFzZTMxLW1haW50Cis4ODMyMCBkMzM5MDNlYjMzODg1NDFmYWVkN2M0M2E5MTc1ZDEwODRiMDhmM2RmIHJlbGVhc2UyNy1tYWludAorODgzMjEgMTdkNmYxNjVlYWU5N2Y5YjRlYzZjZDcxZjE5ZTViOGNhYzA4YTUzZSByZWxlYXNlMzEtbWFpbnQKKzg4MzIyIDViZTcwMTEzOTA4OWNmOGY4NGY1OTIyNDQyZTRkZTMyNTI4ODI1ODggcHkzaworODgzMjMgOGU5OTY5NDE4ZGJlYmNiOGJiZjQ0OWE2NTZmNDM5YTM4NDZlZDk0NyByZWxlYXNlMzEtbWFpbnQKKzg4MzI0IGIyMTc4NjQxOWJiODMzZGIxMzY3MDEwMjQzOTUzMWMxZWQ1ODAxYTIgcmVsZWFzZTMxLW1haW50Cis4ODMyNSA3ODJiZjVmMzdhY2IwNmZlZDZmMDRiZDFkYzNmMWZlNzZlYmMzOTdiIHJlbGVhc2UzMS1tYWludAorODgzMjYgMmUzYzU4NDFhMGE2NjQwZWU3NjQ0MWE2NjA2OGQxN2Q5NjBiMzA2MCByZWxlYXNlMzEtbWFpbnQKKzg4MzI3IGExZDFiZmMzODNlZmNmNmUxZDczZTg0Yjg2NTNjMDg1ZjgxNTE3MWIgcmVsZWFzZTMxLW1haW50Cis4ODMyOCA2MjcwOTQ2MTE1ZDA4NDVjNWY5OWJkMzU3YzZjYjJmODI4ZDg3YTcyIHJlbGVhc2UyNy1tYWludAorODgzMjkgMDM4NjQzZDM5ZmMxNTZkZjNiMzYyZmFlYTU1MGJiNTJjMmZjMDAxYiBweTNrCis4ODMzMCA0NTA2NDk1NjU4NjMxYmViOTJmMGM2MTY4ZTdmYzdiNGJjOTBiMWFhIHB5M2sKKzg4MzMxIDhjYzEwMjc5YWM3ZGQ2ZTQ2NzUzOTNlYzgzYjhhYzEwM2MwODQyOWEgcHkzaworODgzMzIgZTU2NjhhZGMxZWQ5ZTZhYmEwNmRmNjk4NWFmNTM5ZjgyMDU4ZDY1MiBweTNrCis4ODMzMyAwNzc0NmJlMGJiYWQ0N2U2NmMxNTgwYzJhMzFjMDEyMTg4N2YyYTA4IHB5M2sKKzg4MzM0IDBiYmE1MzNjMDk1OWY2MjU0MDBkNWVlNzc4MjI4NWRjZTBmZDE4ZDggcHkzaworODgzMzUgZjkwMmZjNzc5M2UxMmI0OGI2MDEzOGMyODZlNWFjYzNkOWRkYTgxMyByZWxlYXNlMzEtbWFpbnQKKzg4MzM2IGYyMmM5OWRiOGE0NjU2ZmY1NjBjOWM2ZjI3Y2RkYmVmYjcyM2FhYmUgcmVsZWFzZTI3LW1haW50Cis4ODMzNyBjZThkYjQ4NWUyNmU0MzU2OGFkMzhlNjNjOGU0YjY4NjllOWU1ZDE0IHB5M2sKKzg4MzM4IGRjNTZjODI3MWZhODUxZmM3MGQ0OWFjNzE2N2VjODJkODE3NWJmMjIgcmVsZWFzZTI3LW1haW50Cis4ODMzOSA0MzU1MjEyZmUyYzQzMDMxMWE4MmIwOGI5MjMzMDVmZTJkYTExZDA3IHJlbGVhc2UzMS1tYWludAorODgzNDAgY2NmYjViYTUwYTQ0ZTljMWMwNzRlZGIxNDJmODE3NDJkZDIwNTYyYiBweTNrCis4ODM0MSA1YTUwNDg1YTM3NWYxMWM4ZTE2MGU4OWIyNTA1NzQ1MDM3OWY4M2E1IHB5M2sKKzg4MzQyIGJjNjg1YWRiYWExNWNlMTYyZDQ2MWNjMTI2NTM3ODgyZmRlZDNkZjUgcHkzaworODgzNDMgNDYwZjJmMWM1ZWM4M2ZiYzBkZDZkOTgxNmExNmFlYjQ4MDgyOGFlMiBweTNrCis4ODM0NCBiYjNmNmQzY2MwYjNjMzdkZGYxZGI5ZjgzNGI4OTVlNGQzYjBlM2FmIHB5M2sKKzg4MzQ1IDUyNjdlNTI2M2U0NzdkNGZmODY2NTYwN2FhNTgyOGNiYmIyYmZhZGMgcHkzaworODgzNDYgMzliNWZjNmM3OTJkNGI1OTY5ZGM4OGUwMWUxOWE5Njc4MmJjZjVjMSBweTNrCis4ODM0NyA4OGQ2OWMyZjllZmEzMjMzNWUzNGRmNDA5NGFmNzY2N2U1YzRhZmFmIHB5M2sKKzg4MzQ4IDliMzNkNjVjZGFlNGFlYjY1Y2MyOGI4MmQzMGQxOWM2MGY0NDVlMDUgcHkzaworODgzNDkgOGQyNTkyNTkxMGIxMGI1NTZkYzhmMTljZDlmN2I0MGYzMjM4ZjI1ZSBweTNrCis4ODM1MCAwZGE2OGUyZTRkNzgwYjY4YmQ1ZmFmN2IzZDcxYjAwNGQ4NmEyM2U4IHB5M2sKKzg4MzUxIGFjYTkxYzU1ZjM4ZDQ1MGZmZmRlNzVlMjRhZjVkZGNhNTdmYWFiYzMgcHkzaworODgzNTIgYWJhYjJjNTNmNThmZDMzNzQwNmI0YmEwMWYwNDZhZWZjMzM2YTJiNCBweTNrCis4ODM1MyA0MDVhNDRjNmRjZWRiNDU3YzNkMzlkNDA0Mzk5ZGZjNWM5MjU4MDAyIHJlbGVhc2UyNy1tYWludAorODgzNTQgYjVlMzZhNTQ5YzI1Mzc5MWVhNDljMzljYmJhNDgyYjNhNjc5OTQ5ZiByZWxlYXNlMzEtbWFpbnQKKzg4MzU1IDhlMjA5ODZiM2Q2ZTliOGRkY2M2YTVmMjRjYTE1ZjMxM2U4YmE5MDcgcHkzaworODgzNTYgNTE2YjlkYjZhZmU0YWY0OGM5OTE2NzRjMGJkMDRlOTE1N2Q4ODE3MiBweTNrCis4ODM1NyAzOTRjYjAyMjQ3ZmMzNmI5MTY3YzA2MjBiNDkyNDUyZDUyOTVjZmEzIHB5M2sKKzg4MzU4IGI3YjFkY2UzZTc3ZjI5NjUzZWZlZDEzZTRlMTBhMTc2MjBlZjRmY2YgcHkzaworODgzNTkgZDYxZWJmY2UxOGVkM2FlMTJiOGRkZWQ3NGRhYzI1MWZjZWE2NWM1MyBweTNrCis4ODM2MCAxNTE4YjkzNWRlMTBlNzA3MzA1OTE4YmZiZDYwZTZhOWI3MDg1OTVmIHB5M2sKKzg4MzYxIGI1NzAyYjIwYjQ3NjBlNTkxYmQ0MDc2NzA2ZmM5MDMyZWJmMzgwY2YgcHkzaworODgzNjIgYjRjN2QyMDNjM2QxNDMwY2NiNzU1MWQ0MmM5YzlkMmY0ZjM3Y2Q4OCBweTNrCis4ODM2MyAzYjlkN2I4NDU2MTgzOTI4MGQ4OGVjMTExMjNlNmQ3MTgzZjFjYWM4IHB5M2sKKzg4MzY0IDA5ZjA3YzdkYzNkYzI1ZGUxNTg5YzMwNDRiY2Q2NThiNzgwNTA3NjcgcHkzaworODgzNjUgM2UwMjEzNjZlNTFmYWM2MmFhNTRlY2I5YzgxZDdmNWEyN2Q3MTc3MyBweTNrCis4ODM2NiBmMWZhZWM0OTM1MGRjZGE2ZTg5Y2FkMjBjOGYxOTNkMWRlMGJhNzQ4IHB5M2sKKzg4MzY3IGJjZTc1ODkzOWQ3OTkzYmMwM2E4MTdmNWFlOTE0YWJjZGQ4OTZmMWYgcHkzaworODgzNjggMWQ5YzVhMmFhNjk0ZTdmMmU1MjVhZWI0ZTFkNDUyNDFlN2M2ZDhiOCBweTNrCis4ODM2OSAyNjEzNjdlOWU2YzFjOGExY2Q2YjAyYzgxZDQzMDQ3YzNkMGZmMjUwIHB5M2sKKzg4MzcwIDM0MTFjYzdmNjRkZjY2OWM0YTAyYmJkODZkZTNlNjkwZTNjZGJlMTMgcHkzaworODgzNzEgOWZkZmMwNWVmYmI1YmZjZjdjN2E1NTRmMTc5Njk0ODA5NWZjNTA4YyBweTNrCis4ODM3MiA5NDZlY2UyNmE0OGYzYmZlOWFkOGQ1YzE0MmJmYTI1NWYzN2I0ZDljIHJlbGVhc2UzMS1tYWludAorODgzNzMgNjhkNjE3ZGQzMGNkMzkxOThlZWZkYjAwMDYxMWM4ZmEyMzJjZWVjZiByZWxlYXNlMjctbWFpbnQKKzg4Mzc0IDdjNzFiMGE1YTI5MDE0Yjk2MDBmNjAzYzg5ZGQ4ODQ1ZjFlNWIzNDcgcHkzaworODgzNzUgZTlmYjZkNTA0NTlhZjVjNWRhZTU5YjUxMGFiMTU5ZTFjOTA4ZDk5YSBweTNrCis4ODM3NiBiYjc1N2ZhY2JmYTYxMTIwMzZkNjVjNTRmZmZjMjkxMTZmNWVjZmU1IHJlbGVhc2UyNy1tYWludAorODgzNzcgNTc0MmM3OTA4NmE4Nzk4MDQ3NmEzZDA2NTRkOGUxZmQ3YWVjZDFlMiBweTNrCis4ODM3OCBmNTJlMzVjNzVlMzNjNmY4ZGQxN2Q3Yjg3ZjhkMDdlMWI1N2ZmN2QwIHJlbGVhc2UzMS1tYWludAorODgzODEgZDY5NjZkOWI3NjA5ZmNjNzMxYjNmOThmOTY4NDBiNDMyOTM3MWQzMSBweTNrCis4ODM4MiBkY2YxNzkxY2IxNzY3YTUxNjg3NDg5M2JlZTBhNGJiMzBlYzhhNzFjIHB5M2sKKzg4MzgzIDA3MWQyNWFmYWRhYTg5NmU5NzFjZWNhZjMzYTZjNjczNzRlMDlmYTIgcHkzaworODgzODQgNjQzYWM5NDZlZmY0OWY0NzU1YTFhMTJhMjY2NjQ3OWRhYzM4NjhjYSBweTNrCis4ODM4NSAxNDZlODFlNGU1MWU0YTk1NDc1ZjcxMjkwYzQxMDI3ZjhjZWFmMDcyIHB5M2sKKzg4Mzg2IGY1Yjg4OWMzNmY5OTBhNmRmOGIwMTk1ZTFhYWE5MWEwYzYyZjI2YTkgcHkzaworODgzODcgNWRmZTBjNDJmZmU4ZDQyMjlkZGM1ZjEyZTVlYThjNWIzZGZmMjAwNCBweTNrCis4ODM4OCA1NmU2MTdjMmI1ZTgzZWMxNzBhYTcxMTVhM2M0ODk4YThmOTFjMGVjIHB5M2sKKzg4Mzg5IDcyYjQyZGMwNDFmM2ZmNTg3NmIyYzU1OTY0Y2ViYzc2ZWNiNzY0ZGYgcHkzaworODgzOTAgMDM3ZjE2YjAyY2E1NTJjNmZkNmM4OTJmZmI2ZDYwODUxYjVkMGY0MCByZWxlYXNlMzEtbWFpbnQKKzg4MzkxIDJiNDgyMmI3YzQyNGVjNTk4MzdiZTYxMDY1YmQ4MWViZjM4YzNiNzcgcmVsZWFzZTI3LW1haW50Cis4ODM5MiBkMWI1ZDgwNGQyYTU0NTI3MTM3NzE4MjgwMjlkOGI1NzYyNjA2YzY5IHJlbGVhc2UzMS1tYWludAorODgzOTMgODA4NGM2NjhiNjM3NzM1NTU4NGY4MjEwYzgyYjM5YzRjY2VkMmY4OSByZWxlYXNlMzEtbWFpbnQKKzg4Mzk0IGI0MDlkN2VjYjY2NTc0MjYyNDZkOTQxYTgzOGMxYzlmY2M3MWFmNGIgcHkzaworODgzOTUgMTJhY2FmN2E0OTU1ZGRhNTBiMzM4YTA4NWUxZTMzZDdiMmVkMGY4ZCBweTNrCis4ODM5NiA0ZDJhNTg5MThkZjE1ODc2MmZjNTVlMGUxODcyOGI0NDQ5MTkzNTVmIHB5M2sKKzg4Mzk3IDg5ZDUyZWZmYzMwYWE3ZDM5YzI3YWMwZDg1OWJmNGJlNmNlOGIxM2QgcmVsZWFzZTI3LW1haW50Cis4ODM5OCBkOWI3MTNlOTVmMzllOTBkM2E1YTE3MTMwYjVhZThhNjQ1MWQ2NjY1IHJlbGVhc2UyNy1tYWludAorODgzOTkgMDJiODgxMzI2ZjZlZDgyYzBlMDk2OWI3NWI1YTYyY2Y4NmI2ZTA5ZSBweTNrCis4ODQwMCAyMGQ4Mjg3M2FhOTc3YTlmNTZmMThhYjAwYzUzNjM0MGRjYTZlMWQ5IHB5M2sKKzg4NDAxIDA2YTY1N2QxYTNhYzE5OWY1ZDQwYTJhNDQ5NzViYzM2YTNiNTcwODIgcHkzaworODg0MDIgYzMxMGQyOTRmZGRlMGZiMDc2OTY3MzZjZmVjYTVlMzk2Nzk0NzRlOSBweTNrCis4ODQwMyAyY2JlOWQwNThmN2U5MmIxZGI0Yzg1ZDBhMjczNTlhM2RiMWJhOGEwIHB5M2sKKzg4NDA0IDExMTU3N2JmNWJhODk2NmY3YmNhOThlZDc5Y2ZlMTM1OTBhZWEzNDYgcmVsZWFzZTMxLW1haW50Cis4ODQwNSAxMWM2N2E2MDg0YzhlZDRmMmYzMTExYWFkMTllMmFlMDUwMzY2ZGQ4IHJlbGVhc2UyNy1tYWludAorODg0MDYgYmJhZjkzMDRhMGQwNGEwY2M0MjU4ZjI1NzM1MWUwODFkMjA4NDgzMCByZWxlYXNlMjctbWFpbnQKKzg4NDA3IGYzY2U0YWJiYWFmODVlOGZiM2RlYjA1OGUyMGFiNWM2MzQ0ZmNmN2YgcHkzaworODg0MDggODgzYTAyM2ViOTQzM2Q2MmYwMjczYzZhNzA2ZmE5Y2U1MWYzMWEwOSByZWxlYXNlMjctbWFpbnQKKzg4NDA5IDdkMzIwODIwZjQ2MmRkODNiNTNmNzQyMmFlNGQ2ZjRjZmQ1NDk5MTAgcmVsZWFzZTMxLW1haW50Cis4ODQxMCBiYTk1YzBiZGQ4YThkNzgzNDllMTA5NmQ0ODRhMjYyMGJmODRkZjc2IHJlbGVhc2UyNy1tYWludAorODg0MTEgMTA2NjAzY2E1M2MzN2MwZDVhODIyZjA4MWI0MGUxYzljNTJiMmIxNiBweTNrCis4ODQxMiA2YTU0MzExNmJmMTc0NzVjMjI4ZTc2MDRmMDU3NjhlNzgyMTZhMjE5IHB5M2sKKzg4NDEzIDE4YzFmNTI4OTY1MDFjN2VlMTNiMDM4NDU0YTM5YWNiNDVhODc5NzkgcHkzaworODg0MTQgOTNkZjk1ZTQwM2QxYTQ4NjE1MWYzZTRhOTFkNWQzNjA2NzQ1MmFlYSBweTNrCis4ODQxOCBiNDVmNGYzOWYyMDRkODY1YzkyZGZjMDdiMGQzMjM0YWE5MDU3ZWYwIHJlbGVhc2UzMS1tYWludAorODg0MTkgMDg4NTUxNGQ4OTdjMGM0YjdjYmUyYWNlM2U0MjRmOGZkOWM0YWRiNyByZWxlYXNlMjctbWFpbnQKKzg4NDIwIDViYWFjMTg2ZjBjMjhiZWM1YTMzODBlYzIwNmU0MjZlMjMwZjNhMzQgcHkzaworODg0MjEgMDNlYzYxZTEzNDYwYjI3MWFhNWY3OWRjNjRkNGE5Mjk5NzgyYjBhOCBweTNrCis4ODQyMiBkMWQ5ZDdlMDBiNGE1YTE5ODg4MjExOWZkMTM4ZDI2Y2Q5N2M1ZGY2IHJlbGVhc2UyNy1tYWludAorODg0MjMgZDgwMzFiYTM4ZTE2ZDNlZGM4YWMzYmI1YWJkYWRjNmE3NDQyNTUzNiBweTNrCis4ODQyNCA0M2FmOWUzNmJkZDU4YTJiYTc4ZDZiMGRlMmFkNDcwYmNmYjRmM2FiIHB5M2sKKzg4NDI1IDJlZTJjNzYwODJjOGM2YWVmNWU2MjU1NjIwZGE3NjcxMzE2NWFiMGUgcmVsZWFzZTMxLW1haW50Cis4ODQyNiA5ZmYzYjY2OTU0OGY4MzJhOTI5ZDhhYmFiNDUxNmIxMmYwNGY1N2JmIHB5M2sKKzg4NDI3IDdhODlmNGE3M2QxYWZkNjY0NDlkZmY3ZDBiNTczMWM3NmRkZTQyMjAgcmVsZWFzZTI3LW1haW50Cis4ODQyOCA1ZTdkZDY1N2Y5ZWI3NTFmM2IxNGU2ZWI1OTAwNjM4ZjUyMDJlYWEzIHJlbGVhc2UzMS1tYWludAorODg0MjkgOTA3ZjM4NzkyMzVhOGQ0YWVhNjEwMjhhMjhhOGU3YzM0ZmMwMWZmNCByZWxlYXNlMjctbWFpbnQKKzg4NDMwIGFkMmY4YzY4NmUwODU1YTcyMmQzMDA3MzU5ZDIzMWRhMDUxZTI2MjcgcHkzaworODg0MzEgMzljZjIwZDVhZDRjNWVhNTUzN2E5ZjFjYzMwNWM1M2RkODllYzkzMiBweTNrCis4ODQzMiA2ZDM5ZGFlZGVkZDU1MzZlNzlmYzU2ZDczMjVmMTVjOTM1ZDUzZWVjIHB5M2sKKzg4NDM0IDZjMWNhOWRlYjQyYTk1Mjg2YmIyN2ViNTViNmNhNGM0MmU1Y2E0OGUgcHkzaworODg0MzUgMTVhOGUyMmM0MTAxZGVkYTk1YWVhYWFkMDE4MTYzNzczYzkxZTY2MiBweTNrCis4ODQzNiAyMmQ5NGY1NWIwYzcwMzQyYWI4N2RmOTZiZjc5YWNhNzdmMjdmZDRmIHJlbGVhc2UyNy1tYWludAorODg0MzggOTJkZWJkZjk4MWM1ZjM0NDNlODc3ZjU4YjQ4NjExNTdiN2NkMjg2NCBweTNrCis4ODQzOSA2Y2FiOWE5OTQxMDUwMzU0MGZlMjFkZGI5MjA3ZGYzMGFlZDcyMDJhIHB5M2sKKzg4NDQwIDVhZjAzNTU4OWFhNzc3MmVmZmQwNDI3YzY3NGMyOWU5ZTI2NzZhNjcgcHkzaworODg0NDEgNWUzNzY2OTE3MmM4ZDI3ODM0ZGFmODY4ZTZkZjI4Y2NkODFhMzA4MSBweTNrCis4ODQ0MiAxMDFiYzY2OTUxYzdjYTRlNjM5YmRlODY5YWY0MTVjMzQ3Y2ZmYjkzIHB5M2sKKzg4NDQzIDc4OGVhZmFlZjdkYzQ4MjBkYjc4Y2I0OWE1N2EwYWRmNjNmYzUwY2UgcHkzaworODg0NDQgNTkwMGQ5NDhmZTU3YTQzOTlkYzJmZmVjM2JhMTI2NGIyMTdkNGUxNiBweTNrCis4ODQ0NSA0OTZhYzRkMWE5YWJiOTY1YzllMTE5ZTI0NGU2M2M3ZGIxNmQxODQ4IHB5M2sKKzg4NDQ2IGEyMjJhMDE1ZTI4ZDhhZTlhZjM4OTkyNThkYzZjMTVjM2Q0MGFkZDAgcmVsZWFzZTMyLW1haW50Cis4ODQ0NyA2NjM4MWNlYzZjNzMyNWMzMDYwNjczNGRkMzc2NjVkZDEwNGQ2NWViIHB5M2sKKzg4NDQ4IDIwMzk0NTA2MGJhZmYyMDZhNmE3N2M4NmJhYWQ4ODcwMWFkNDRmNzggcHkzaworODg0NDkgMGY1MmNmYzkxZmFlYzA4OTk3NzU0ODdjMmZkYjA0NDVkMzBjZWNmMSBweTNrCis4ODQ1MCA0NDE5MDdjMDgxNGU1YzcxZThjZTQ0OTM2NDk4YmZhYjczMGVkN2JmIHJlbGVhc2UzMi1tYWludAorODg0NTEgYTgzY2M5NjFjNDNhMmQzMjY5YmRhNGU3M2NlYjk4OTkxYWMzNDIxOSBweTNrCis4ODQ1MiAzNWMwZTM3ZmU5NTAxMjNmMGJjZWM1YzU5NGY1NTQ1YjllNmY2Zjg5IHJlbGVhc2UyNy1tYWludAorODg0NTMgYWVjOTUyN2Y2MjIzMjc2OTk2NzIxOTU4ZDhjMWMzNTYyZDlhNWE2OSByZWxlYXNlMjctbWFpbnQKKzg4NDU1IGJmODY0Mzk1ZDFjODhiMWMzMmMyYWY5NWE4OGE4NDY4MTY1OGI0ODMgcmVsZWFzZTMyLW1haW50Cis4ODQ1NiA3YjAxMWNmNjRmOTA2YzIyZmE4Y2FlNGNjZWI3NTg0YThkODRjMjU1IHB5M2sKKzg4NDU3IDM3MWYwNGUxYmQzZjhiM2U5MmJjYzJkZTY4YjY5ZDQ3YjQ3ZWIwZDUgcmVsZWFzZTMyLW1haW50Cis4ODQ1OCA3OTAyZjViZTJjOTA2YmYwYjc2YWE0MzdkNTcwNmRhYzdiYzE0YWQ1IHJlbGVhc2UzMi1tYWludAorODg0NTkgOTgzNjMwNzk3MzM4ZTJkZjdiMGFlYmUwZjMzYjQxY2I2ZmZiZjVjNCBweTNrCis4ODQ2MCA1MWEwODBiYWNiMjUwOGQ1NDYwYmFjMDNkMDFiMGNkN2U0MjQwYmQxIHB5M2sKKzg4NDYxIGRhNWRkM2UyM2M4NzAyNTIwODljMGM0ZGYzZGM5NGQyMmZmOGRhZmIgcmVsZWFzZTMyLW1haW50Cis4ODQ2MiA2YzFlMDVhNGI1NDFmMWUyMDFhZjM0OWVlNDE4MTU0Y2I1OTNjYmRiIHJlbGVhc2UzMi1tYWludAorODg0NjMgMjdlYTNhZTM2MmNkNTFmZjZhMmJiMDJkYjE3NDIyOWY4M2QzYWEyZCBweTNrCis4ODQ2NCA5NTRjZDVkYjUxZGMzNWVmNDNiOGY0Mzk0NWNkZDJmYTg4MWY1ZWYwIHB5M2sKKzg4NDY1IDlmODE0NmY0NWVhZTg3YzkyODk1MzgyYTBjY2QwMDY3ZmZhNWYwODUgcHkzaworODg0NjYgYTFmMzVjMjFhNzEyYzExODVmNWMwYTMyM2I1MGJjMzY4MzlkNTFlOSBweTNrCis4ODQ2NyA2MTRlMzI5MDBlZjdkYjg2YzZhMGM4ZGUxYzA4NzM5OGQ1MjY1ZjZlIHB5M2sKKzg4NDY4IGViOGZjMWNlMWM4MWViODNmYTc2ZTI2MTliOTdhYWJhOWJlMmE1MDIgcmVsZWFzZTMyLW1haW50Cis4ODQ2OSA0ODI1ODcxODAyNTVhNTFiMDkyMTY0NWVlNjg0MWUzNmI0ODEwNGE2IHJlbGVhc2UzMi1tYWludAorODg0NzAgYjE3YmJhMWM3MzAzY2U3ZTU5ZGZiYzI3OGY2NGU1NTc5NjczMmY0MCBweTNrCis4ODQ3MSA0NTBmOGQ1MWRkYTg2OWIzZjM1ODI5ZWMyNTU2YTFjYWJmNzQ5NjE1IHJlbGVhc2UzMi1tYWludAorODg0NzIgZmY4NmExNzliYzEzY2E3MTM1MzcwYjU3M2EyZmU1ZTM2Mzg1OThkNyByZWxlYXNlMzItbWFpbnQKKzg4NDczIDE4NTM5ODlmNzRlNzZhYjQ3NWNiMjY0NTQ2N2JjYjlhODgzMDhhMjAgcmVsZWFzZTMyLW1haW50Cis4ODQ3NCAxNThkNmRlZjJlZjg3ZjMxMjlhZTBkNDFjNmZkMjA2YTFiZGEzNTcyIHB5M2sKKzg4NDc1IGEwMzZjMzBhYjVhZTRhYzlkNzA1YmZlN2Y2NGFlM2Q2MTY1MGM5OTMgcHkzaworODg0NzYgYWIxNjY0YjI5OGZjZGIxZjhlOTZjOWIzZjQwYWM5N2VmOTE2MGRlMSBweTNrCis4ODQ3NyAwMGE0ZmZhNzJkYmUzZDFlYTFkMmQ0NmYzNTI2OTUxMDQ3OTA3MmU3IHJlbGVhc2UzMi1tYWludAorODg0NzggYmI4NTdkOWMzMDcxMjBjNWRmYTIyMjQ0NjFjYjQ1OWM3Nzc1ZmQyNiBweTNrCis4ODQ3OSAyODQwMjZlMDAzNDJkNGFlZTMyOTBjODBkZWQyYjFhNjE3ZTRiYjRlIHJlbGVhc2UyNy1tYWludAorODg0ODAgMmI4ZTZhMjFhZWFhMTk1NGIzOWRiZmFlMzIxZjlhNDNmMjgxOWVhYiBweTNrCis4ODQ4MSBlZjI4YWFkM2JiYWUwZjU3ZjI2NGEwYWJkZTVkNTRhOGI2MTdkYTcxIHB5M2sKKzg4NDgyIGI0YzE1ZDg3MDk0ZDllYTUxN2RmZGZjZGQ0NWRjNThlOGE3MTBhODkgaXNzdWUxMDI3Ni1zbm93bGVvcGFyZAorODg0ODMgMjNkZTNhYTcyMjMwNmQyYmZmZWIwZmVjYTE0NTc1YjExY2ExOTM3NyBpc3N1ZTEwMjc2LXNub3dsZW9wYXJkCis4ODQ4NCBmNWU5YzE3Yjg1YWQwNmIxN2JkNWQzMWNmODgxNWIwZmQ1MzczMTBlIHB5M2sKKzg4NDg1IGM2MDYwZWY1YzQwNTE0NmNlZDIyYmVhNDhkZGIyNDg5ZTg5NWZmNGYgcmVsZWFzZTMyLW1haW50Cis4ODQ4NiA0MWM1MjgwMzMwZmQ2MjQyZDcxZTNmMGE5MjIxZTc3Mjg2MTE1MjJiIHB5M2sKKzg4NDg3IDQyOTVlMDk1YWQ0ZmI4ZTkyYmNmNjFlNjBhNTA2ZTlkZjQ0YTQxZGIgcmVsZWFzZTMyLW1haW50Cis4ODQ4OCBiNTU4Njk1OTg2ODNmYTliNWI3ZTA0OTEzMmE5MDM0ZDA3MzI2ZTdjIHJlbGVhc2UyNy1tYWludAorODg0OTAgNzg2NjA3MTRmMTdhMzU1N2Y4YjVlNDE3ZmFiYmEyMmM3NDNlZWRlMCBweTNrCis4ODQ5MSA2N2VjMjZjYzRiNGY3ZTMxZDNjM2NkNDg0YmZjNzI3Nzc1Y2Q3N2I5IHB5M2sKKzg4NDkyIGNlMjBhYzQxZTMxZmQ5NDA0MDRjZDA4YzZmODMyZDk4NjIwNmRkNDAgcHkzaworODg0OTMgZmVkNzY4YjcxMTM2MTgzZjZlMjQyNTY2ZjgwYWZhZWE0M2RiN2U4ZCBweTNrCis4ODQ5NCA3Zjg1ZmJjMTZjYWVkZDA4MzgyODJmODFjZGI5OGQ2NTc0MTBjZTNiIHB5M2sKKzg4NDk1IDQ3M2QyMzNhMDQ3ODFkZmYzNzkyNzM5Zjk3OGQzNDQwMDY4ZWE2N2EgcmVsZWFzZTMyLW1haW50Cis4ODQ5NiBhZTE4NmIzYjJjNTU2ZTFjYjMyYjNjMWU5ODY3YTBkNWZlMzgzMjM1IHB5M2sKKzg4NDk3IDE5ZGY0NzgzOWJjYWI1NWY3ZjYzMTkzNmExMTY4YjRkM2Q5MWNiY2UgcmVsZWFzZTMyLW1haW50Cis4ODQ5OCBlYTI2MGQzOTNjZGVlM2MzZTM2MTRmOTU3ZGViNzJkYmQ3N2ZiMDcwIHB5M2sKKzg4NDk5IGM5MGUwZTViMGQyNTQ3MTA1MWUyYWU2YzEzMmY0NTRmNzQzYmRhZmUgcmVsZWFzZTMyLW1haW50Cis4ODUwMCAzNzJiMmVmMGZmMzdiNmExYWExMmU0MzBjYjJkZWM5OTliNjQ3OTNjIHB5M2sKKzg4NTAxIDI0MzM5YmYwYzdlNjZhN2VhMWVjYTJhNTJjMjRmMjhmY2FkNGZlZjUgcHkzaworODg1MDIgMzA0MTFhZjM0ZWViZmFmYTc1NWZlMzM4ZmYzOGU1NDJkMzcwMmE1ZSByZWxlYXNlMzItbWFpbnQKKzg4NTAzIDVjZTQ5OTE4MGQyNDVmODBiNjZhMDU3ZThkZWNiMmEzMzVhZDFkYzUgcHkzaworODg1MDQgOTgwNjk3NzY5ODY2MjA1ZDA5ZDMwMDIwMWZmODUyNTc3MDQ4N2MzZiByZWxlYXNlMzItbWFpbnQKKzg4NTA1IDI0N2EyODEwOTMyYWE1NWMxMjVjNTYxMDY1YzI5Mjc0MzRjNDA5NTUgcHkzaworODg1MDYgYTc1MTVhOTRmZGI1YjUwNTg5YjIzZjEyMWY2MGVkNGE4ZGVmNmMxYyBweTNrCis4ODUwNyBlMmY5NmJkMjkyNTJlNjIxYmI5ZTE1NjNmYmJiMGVjYTgyMzFkZTUzIHB5M2sKKzg4NTA4IDY0ODJkZDFjMTFlZDFjMWFmYjk5ZDIzNGUyODMwZjM0YzlmMzQ3ODYgcHkzaworODg1MDkgMTZlZTQyZGUwZmFiOTJmMTkwYzhjY2EyNzRjOTRlZDQ2YjQ5MWQxZCByZWxlYXNlMzItbWFpbnQKKzg4NTEwIDJiNTRiZTY1NTE2OThhNzE4NTZhNTJlNWMxYWFkMTIyYzg4NDMzMzUgcmVsZWFzZTMyLW1haW50Cis4ODUxMSAzMjdhNWE3OGEyNTdjZmUyN2FjZDkwMWM2NWUwODRiYTcxOTYxOGQ5IGlzc3VlMTAyNzYtc25vd2xlb3BhcmQKKzg4NTEyIDJmOGVjNzdkMzJjZDQ3MThhYWM3NDE1NTUzYmY3NDVkNTgzMGFiYTMgcHkzaworODg1MTMgMDU4NmM2OTlkNDY3YTY0YzNlMjNkZDg3NmQyZDM2MmU2MzNkODkwZCBweTNrCis4ODUxNCA2Mjk5NDY2MjY3NmE3YmU3OTBlMGRjY2M2MzI4MThiNzg4ZjZiZjIxIHB5M2sKKzg4NTE1IDBlOWYzYmI2M2QwMGI3YWE1MGRkYmIxZTU3NjhhMDg4MWUyMmRkNmUgcmVsZWFzZTMyLW1haW50Cis4ODUxNiAyZjg5Y2JiZWMwYjQ4NGQxMWI5NjQxMDVkMGRjMzI0OTZmYWYyOGE4IHB5M2sKKzg4NTE3IDA4NzQ2OThiMTIwMWRmOWMyZWM5NWQwOWRlODEwODhkNWRjOTE4OTIgcHkzaworODg1MTggZWMzYzA2NzYxODU2ZGQ2MzBhOTVlMzk5MzE2OWFmYjc4OGVlN2VjMyBweTNrCis4ODUxOSBhYzBkOGUyMWE0N2RlYjU1ZWFjOTI3NDk0YTIzOGMxODYyZDcwMDQzIHJlbGVhc2UzMi1tYWludAorODg1MjAgNDRjYzllZjQzMTI3ZjhiNmQ5YjVmYTQxZmNmN2E2MTM5N2JhN2RiYSBweTNrCis4ODUyMSBmMmVkYWY2MmQ4MjNmYjY2ZmU3OWY0ZGJmMWJmZjczODMyMjFlMDgwIHB5M2sKKzg4NTIyIDdmOGRhMTBiZmNlZmNmMzdlZGNhNzlhOGJhZGU3OGZiZDIxYjJjZDAgcHkzaworODg1MjMgMTY1ZDAxNWEyYmFmMDdmMzM3ZDBmNTYyZDMyZGM1ZjJiYmYwYzYyOCByZWxlYXNlMzItbWFpbnQKKzg4NTI0IDAzZjdhZmJjMTYwODQ4ZDRlMTdiNjYwZDNkZWY1N2Q3Mjk0ZmJkMTkgcHkzaworODg1MjUgYzhjNTdlNzY2NDI4NTMxZGY2OGJhYTFjZjU3ZmI3NjZiZjcwOTI2ZCBweTNrCis4ODUyNiA3NDg2MWE0MmE2ZTZhMjg5YzNhYjViNzcxOWJmMGNmNGYwYjc1MDIzIHB5M2sKKzg4NTI3IGJhMWFlYjM2MjE4MjFmMjIyMTI5MTRmNTVkODcxOGQ2NTRjNTFmNmEgcmVsZWFzZTMyLW1haW50Cis4ODUyOCAwMzVlZmRhZjgyMjljNzljNDIwZDEwNDYxYjA2OGRlNGM3NjRjZmUwIHB5M2sKKzg4NTI5IDIzMjVmZTM2YWEzNDU2NjNlOTRlZmRmMjQ2MmQwNjE3ZmZlNGY3NjkgcHkzaworODg1MzAgNWE5ZDkwZDRmODllYjgwZjEzNDNiY2YzODViNzdlODUxNWZlYTg2ZCByZWxlYXNlMzItbWFpbnQKKzg4NTMxIGFiYTE2YTU2ODNkMzY4NWVlZTFkNjFhYTc0NTYzY2I2YzE4MGVjYWIgcHkzaworODg1MzIgMzIzODZmYTY3YTEyYTc2OTE3MzM3YTNjM2I4Mzg0Mjg2N2IxOTlkMyByZWxlYXNlMzItbWFpbnQKKzg4NTMzIGNmOTE3NmYyYTYyMDVhZGM0ZjM0MDRiNmU5MjY2ZDJhMmM3Y2FiODUgcmVsZWFzZTMyLW1haW50Cis4ODUzNCBhMWNmZTgxNWQ5N2FhZDBhZjQ5MmVlZjVlOGUyMjk2NTljNTEzMjI3IHB5M2sKKzg4NTM1IDVhMjk4YWZhY2I5NTU0NzU3YjdkMTIxYWU5MGMxNjdjZmZlMjU1NzIgcHkzaworODg1MzcgZGU1YzNhMzlhZGU3MjRkYjQyNjViMjhmMGY2MDBmYzM3ODViYTZjYyByZWxlYXNlMjctbWFpbnQKKzg4NTM4IGU4ZGZlNjAyZWZhMWNkZWE5OGZjNWNlMWE4OGE1NTBkNmU0ZGQ3YTcgcmVsZWFzZTMyLW1haW50Cis4ODUzOSA5ODYxZGMxMTgzMjIyZmUwYmI1OWJmYWVlYjEzMTMwOTEzMGIyY2RmIHB5M2sKKzg4NTQwIDhiYTc2NTMyODAzMDZhNDNmMDkyODZlNjkzOWJlYmJmYTJjZmM0YjAgcHkzaworODg1NDEgNzMyNmYwNjRkODNhZmVhNTIwY2E2NjNjOGYzM2ZiYWVkYzlhOTg1NCBweTNrCis4ODU0MiA2MDlmMmI4MjMzNTBlNDJjMjY2NGViYjAxOGNjODUyYTY4NzY5NDIwIHB5M2sKKzg4NTQzIGJmODkwNmNlMTA0YjUwM2RjOGIyODViNmIzNDFkMDNjZDM0M2YxZTEgcmVsZWFzZTMyLW1haW50Cis4ODU0NSBmZDZlYzVlMDg0YTJjN2U2ZTFkMzVlNjE0ZmQ3NjQ3NDkwMDg3NmRiIHJlbGVhc2UzMi1tYWludAorODg1NDYgZGI3ZWYzNGVlZGFmNWJlYjljZDkyNWE2M2EwYzRjMTczMjQ3ODRhMSBweTNrCis4ODU0NyAzZTRkOTU5ZjhlMTJlZGZlZTJlYTVmNWQwNzE3ZDhlZTUzMzI4ZDkzIHB5M2sKKzg4NTQ4IGZlYWIyMzBiZDBkZGU0MGE1OTlmMDQzZTdjYzUyYWRmOWE2YzlmNzQgcmVsZWFzZTMyLW1haW50Cis4ODU0OSBjYzNjM2E0MzgzOThkZGFmMDlhNzJmZTRiNDFjNjc5NzYxOTU4NmNhIHJlbGVhc2UzMi1tYWludAorODg1NTAgNTcwYzU5MzliYzAzZTcyMjhiOTIwNDA1N2Y2Zjk4ZWE3ZjYzYzU0NyByZWxlYXNlMjctbWFpbnQKKzg4NTUxIGNiY2IyNmE5ZDJiZGRkOTIwNGNiOTQwZjFmNjJmYjNjODQ2Y2EzMTUgcHkzaworODg1NTIgNDU3MzljYTYzZWIzNDViMDBhMWFiMTAxMDk4OTI3ZTMzNGUyZjY0NSByZWxlYXNlMzItbWFpbnQKKzg4NTUzIDIzNmM0ZGM2ZjBlN2Q3YmI4MjY0N2M2ZDgzM2VjZWJkMGViYTRhOGUgcHkzaworODg1NTQgYzhjMGU0Mjk0NGExNjk3YTY5OWMzYWQyYTk4MzA4YWQwMTEwZDY2ZCBweTNrCis4ODU1NSAzNjRlNGMxMDYyOTdlYWZhZTZmMjRhYmI5YzQxNzI1ZWJjNjNkNjFiIHJlbGVhc2UzMi1tYWludAorODg1NTYgYjI0NWQ2OWI0ZjBhZDRlN2FmODY5MGEzZjVkOTc1ZjJmNzNlNmNlMSByZWxlYXNlMzEtbWFpbnQKKzg4NTU3IGM3OTY2NWZiMjY3YWEzNzQ3MGNkMjM2NWQxNzJkOWM3ZGUwMmQ2MjIgcmVsZWFzZTMxLW1haW50Cis4ODU1OCA2MTRhOGM3Yjk1MjVhZDA2MjhhMmQ2NGJhMWUwMGQ3OTA5NTI0ZDE2IHB5M2sKKzg4NTU5IDkyNjI5Y2NhYWU3NjQ2ZTU0YjJjNTAzMjdkYWRjZGNlNWY0NmQ5YjggcmVsZWFzZTMxLW1haW50Cis4ODU2MCA1ODVkYjA2ODA2OWVkNjE2ZWVkNDRmMjUzMzc1NWU0OTFjMjEyYzVhIHJlbGVhc2UzMS1tYWludAorODg1NjEgZWZmMmU4ZjE1YmVkMDhmMjY1YTBhZDMwZWUzYWY1MmI4YTg1NTYwMSByZWxlYXNlMzEtbWFpbnQKKzg4NTYyIDViMzViYmJlMzJlNzBhYjY3MGRhYjQxOTM3YjQ5NDM2M2I4NTIyZmYgcmVsZWFzZTMxLW1haW50Cis4ODU2MyBlM2M2ODQxNWEzMmQxMDBjNmRlMzJjZmI5MjczNDk3ZTQ0NmJmZWIwIHJlbGVhc2UzMS1tYWludAorODg1NjQgZDM1NjY0OTUwNGY5ZjQ3NmE3MWU0YjFiNTkyMmFlMzI1YmU4MjRlYSByZWxlYXNlMjctbWFpbnQKKzg4NTY1IDhlZWVlOWQ2ZDMyYjkxMzFmYzIxZGQ3OWRiNTE4ZTYxNmRmZWRhYzMgcmVsZWFzZTI3LW1haW50Cis4ODU2NiBjN2M3NmNmYmRiNGUwMTllNzlmNjYyZTM2YjE2MTdjNTU1MTE5MzUzIHJlbGVhc2UyNy1tYWludAorODg1NjcgM2U1ZjJlMmE4NGFiZTRlOGQxMzRkYzdjNjU0YjcyZGFkOWVkNjY2ZCBweTNrCis4ODU2OCAyMjZmMDAxYTcwMWZmMzRhZmI1ZjBlODhlYzU1ODU4YTg1NWM5YTgwIHJlbGVhc2UyNy1tYWludAorODg1NjkgMzRhZTMxNjMxOGVmNDU0ZjljMjM5M2QyZTNiN2Q2MDBhZjdmMDM5MyByZWxlYXNlMjctbWFpbnQKKzg4NTcwIDcyMGEyZjQ0Y2JmMmNjYTBmNzRjM2QzZTU5YjU2ODNjZTlmNTAyZjQgcmVsZWFzZTI3LW1haW50Cis4ODU3MSA3OGRiM2QwYzZkYjcyYTFiNmQxOWYwOTgxNmI0NjY5YjI4ZThkMTZkIHJlbGVhc2UyNy1tYWludAorODg1NzIgYjM1NmI4NzFiZjY3ZDJiNTBmZTMwYmU4N2Q1MDYyODQzYWRlNmFiNSByZWxlYXNlMjctbWFpbnQKKzg4NTczIDAxYzk2YjM3NTg2ZGQ2N2M0OWRmZTdkNmM4MWE5YjExNDIzM2ZlMzUgcmVsZWFzZTMxLW1haW50Cis4ODU3NCAwMzUyNjc4MTI4MmFlMjU4YmI2ZDRkMTk1ZGQ3OGY1MzdiZWNlYjQzIHB5M2sKKzg4NTc1IDc0MGFiOTI3YmY4OThiZGNjYzZmMTRlOTUwZTNhMTRkZDc4YjkzYzQgcHkzaworODg1NzYgYjE3YTA2NDkyOWIwNGM4Zjc2YTNlNjkyYzAyYTBiOWE4NWIwZjFhMyBweTNrCis4ODU3NyA5ZmY3YmMzNjEwNjA0MzM4ZGVmYWQxYWEyZTNhM2JmNGE3ZjA3OGVmIHB5M2sKKzg4NTc4IGViNWVkM2RhNjg2MjM0YTAxNThiNGUxYjI0NWZkN2ViZWM5ZWI0OTggcHkzaworODg1NzkgMTc2MmQ3OWVhYjY1ZjVmYzNiNjI5N2I1NTkzNDc3NDI5M2RlMGI3MSBweTNrCis4ODU4MCA3ZmQ4MGM2MWRkYWEzZjgwZWIyNGFlNGYyNjEzMmZiYTBhZjc4YWJiIHB5M2sKKzg4NTgxIGQzZjkzYTEyZDZhOTE1ZWU0MjMwMTMwMDA5NmU3MWJhNzk2NGRmMGIgcHkzaworODg1ODIgNjM2YjJiNTUyMDczZDFmMGI4MmJlYmEwYTBlZDQ1N2ViNDcyNDZlOCByZWxlYXNlMzItbWFpbnQKKzg4NTgzIGZkNDAxMTBkNWQ4NzM3ZjhhZDdhMjI0OTIyYzkyMDlkMzRmNjdhN2IgcmVsZWFzZTI3LW1haW50Cis4ODU4NCBiZDI1MmMxMmRhMWQ4ODNjNDFkM2JiNjBhMjhmMWExYTNkMzg2M2FhIHB5M2sKKzg4NTg1IGY0YjFhNjU3OTU0MTdiNGJiZThlZDg5NDdiOWVjYjE4MmQyYWRhM2QgcHkzaworODg1ODYgYmU2YzM4ZDE4MTdiMzAyMGI3NjA0MDBhYTJmNWFlZjcxN2E5YzkyMyBweTNrCis4ODU4NyAzNmMxYjY4YjA1ODY1ZmI5ZmExODliNWI5ZTBkMWY4ODA4OGEzMmJkIHB5M2sKKzg4NTg4IDE5ZDA3ZmE0MjAwNGIxMjQxZWY2OTMxYThiMjFmZjgwM2JjZmZmMDkgcHkzaworODg1ODkgODQyZmVlNmFlMGU1MDMwODkwZWRmNWQ3MDkzYmU1Yjg5YTUzODZkZCBweTNrCis4ODYwMiA3YWI1NjliMThjOThmODg0YWJhNWU1Y2I1Mjc1MWZmNjNmYTlhYTc0IHB5M2sKKzg4NjAzIDhjNWI4MTE0ODRiYzJkMmVlMTM0NmEzZGE1NDY1MmNlODM0OTIwZTIgcHkzaworODg2MDQgMTJjYTQ3N2M0Mzc4YzE3NThkMDk5OTUxNmUwOWI0NDkxY2YwYWQ3MyBweTNrCis4ODYwNSBiN2U4NWZkMGQxYzkyZGI5ZmY5YjJkMDdlN2VhN2ZmMGZiYjYxOTg1IHJlbGVhc2UzMi1tYWludAorODg2MDYgMTg2MzZiODcxZDAxNzQyMjk5Y2ZhODBkMzk4NTlmZGMxZmJlOGQ3NiByZWxlYXNlMjctbWFpbnQKKzg4NjA3IDRiNjA1MjMyMGU5ODNhZDc5OGQ0MWQzMGM0OTZmZDljMTcyMTI0MDcgcHkzaworODg2MDggYTAzODM0Mjg3MmEzNGM1NGQ3MDkzYTc0NjgzOGMxZWFmYTY0MWMxNyBweTNrCis4ODYwOSBhOWViMDA4N2I2MDIxNDNiZDY1OWZiMWRhOTVhMDc3ZjI0MzgwYTNlIHB5M2sKKzg4NjEwIDc4NTkzM2JhNDhhYzZiMDQ3NjFlNTBmNDIwOWJjNjA4MDE0NmU0ZTIgcHkzaworODg2MTEgNjZlZDcxYTZlMjlhOGYxYmYzOWJiYTNmNjhiMjZmMGZhNjIwODQ0ZSByZWxlYXNlMzItbWFpbnQKKzg4NjEyIDY3NWI0OGM0Yzg4YTFiYjcxZThiYWI1MWVkZDA3MzhjNGYxZDE2MTcgcmVsZWFzZTI3LW1haW50Cis4ODYxMyA3MDZiZTZlZTk2NjhiNDY0NDA1YmRiNjViNmQ4MzU5NzFmZDVhOTMzIHB5M2sKKzg4NjE0IDZmMTJhYWRmZmM5ZmI5MWQzZTEzOWRhZWE2NTY1NzJiODNiNzNkYTIgcmVsZWFzZTMyLW1haW50Cis4ODYxNSA4YjNlZjcxOWJjZWQyZGFhOGY4NDBiMDE5MTQyYzZiM2U1MDQ5YzI2IHJlbGVhc2UzMS1tYWludAorODg2MTYgZGI0NmVkYTIwZmQwMjlmYjcwMTIwOTRjNGE0MDViNDEzMTdjOGU0YyBweTNrCis4ODYxNyBhNzQ5MjRlZWE4NjFhOWRlOTYxZjU3ZDNlZTdkMDY2M2YyMWQ5OTRiIHJlbGVhc2UyNy1tYWludAorODg2MTggZjcxYWNjNGIyMzQxMDJiNjc1NzliZWQyYzEzN2UwZjAyZTY3ZTY1YSBweTNrCis4ODYxOSA4NzQyNWRjMjNmMjZlNWRlZjFjZTJjNmEwMmUzYjAzM2VkMzAyMmYyIHB5M2sKKzg4NjIwIGQyMTkwMDUxMTY3NWNlYTQ5YTkwYzdhY2JiMDJhMWVlNWVmYzVkMzAgcHkzaworODg2MjEgMjc5NjFkY2E4MzMzMDJjMWYyMTVmMGM5NjU3ZjA4MmU5MjliYzEzNCBweTNrCis4ODYyMiAxN2QxYzZjZWRlN2VkM2JjY2UyNTIxNTNhZWRhYTgxYjI4NGQwNmM4IHB5M2sKKzg4NjIzIDU5ZjllZDEyZjE3YTRlZmVmNDMxODMwNDU4NWQxNjAyZWFhZDFjZmYgcmVsZWFzZTMyLW1haW50Cis4ODYyNCAzZDNiYTQ1MmY4YWRlYzUzM2NkMzI4NjFiYzdmNzk3YTMzMTgyOWIzIHB5M2sKKzg4NjI1IGFhYWY3YjU4ZTIwOTBjMmViNjUwODZjZWQzNDM0YjBhNmM3YzAwOTMgcHkzaworODg2MjYgMjY3ZGJkNmM5OGMzMTkzMDFlOTVjNzAxY2JjMWE4NzA2ZWEyNDUyMyBweTNrCis4ODYyNyA1M2E0NWZiNzA3ODZmYTNkY2VkMTMxZDc2ZjkzN2E0ZDRlNjhmZDQ1IHB5M2sKKzg4NjI4IDczYzVhYmI0MTI5NmQ2OTk3NGY2YjIzMWIxMzk5ZDAyYWIwYWRlOGUgcHkzaworODg2MjkgMmExOWYwMjViOTc0YWE1YmRlMzMzZDhjMThiMDUwZTQ5ZmMxYTFjOCBweTNrCis4ODYzMCBhODY3ZjAyZDhmOGQ3ZjZiMmQ5YzBlZTUxNzFlZTNkOWQwN2E0MTgxIHB5M2sKKzg4NjMxIDY1NGM5ZjEzY2ZlOWUxMDcyZjRmYmIxMjBhNTZkNTVjMDJjODNjZTEgcHkzaworODg2MzIgZjQ1NTVkMzRmMzQwYTMwOWIxMDJiMDMxMTYzNzg2N2ZiMWEwNDliYyBweTNrCis4ODYzMyBiMzIyNmFkOWEzOThkZjlkZmI2ZjU5MDcyMjczYjBjZjE3OWJhZTZhIHB5M2sKKzg4NjM0IGJhOGUzMDJiNjI2YzAwOGQxZDMxZjM5Zjg5NmVlYzdhY2ZhODE3MzIgcmVsZWFzZTMyLW1haW50Cis4ODYzNSBjNmQzMDNiOTljODJhYWYyOGE4Y2YxODFmNzkyZTJhNDRmNDE2YzRiIHBlcC0zMTUxCis4ODYzNiA0ZGQ5M2QwZjVkMWUwNzhkZTczMTQ3OWIyMzI5MmVhMzA1OWY3MTRmIHB5M2sKKzg4NjM3IDY4MDhkNWRiYTFlYzEzZjBmYTk4OGJhOTI1ZTgxZGZkNWRjYjQ2NGQgcGVwLTMxNTEKKzg4NjM4IDllYjIwMmU2MzIwZTRhZGM5N2VkYzljMjg5ZjY3MTkzZjA1ZGFiMmQgZW1wdHkKKzg4NjM5IDQwOTIyOTZhM2Q4ZGE1YjFmMWEwNjJmYWMyMzRhMTRhYjdhODUxYjUgcHkzaworODg2NDAgN2ZhODZhOTE5NTY3MmM4ZDg4ODRlYjc2MDQyZGNlMDMyMjViMzRhMSBweTNrCis4ODY0MSA2MGE1YjRiMjM1NWRlNWY3MzY2NjU3YzgzZmNiNWQyN2YxOTE0YzIzIHJlbGVhc2UzMS1tYWludAorODg2NDIgMGI1OTZmZjZkNDY5NzU3ZTI3MzIwMTcwYzNmNjhlMmExYTg5ZjFlZSByZWxlYXNlMjctbWFpbnQKKzg4NjQzIDczZGFmOTFjNjE1YzUzY2M3OGI1ZDQ5Yzg2NDBjNWFhZWMzYmJiOWUgcHkzaworODg2NDQgNzY0MWZlMDg5ZGExZGFkN2NhZjNmMDkzMjhkZDRhOTAwZDY3M2MzYSByZWxlYXNlMzItbWFpbnQKKzg4NjQ0IDkwN2Q1YjJlZDVhMTlmNWUyM2Q2MTVkMmIyMTRiZTIxYWEwZmIyOGIgcHkzaworODg2NDUgNTcxN2RkMjE2NmVlMDU4NDYyNTJmZWRlZjdkOGQ0OTg1NDUyMzM0OSByZWxlYXNlMzItbWFpbnQKKzg4NjQ1IDdlZWEyYTU3NGRmYzg0YzcwOTE4MDk0NTM4OGM4ZGRkNjMzYmI1YzEgcHkzaworODg2NDYgNzY0Yjk5ZWU4YzgxMDlmNDBjZjhmMDI2M2QxNjIzNmJkYmNmMWY1ZSByZWxlYXNlMzItbWFpbnQKKzg4NjQ2IGM4NmY5MDM0MGNkN2QyMjcyZDY3ZWIxYzkwZjQxNWUzZWFhYzc1M2EgcHkzaworODg2NDcgMDdhZmZhMDMzOGJhZDI5NDEwNTFhM2VjODY5Y2ViNGVmNGZmMjBlOSBweTNrCis4ODY0OCAzMWQ0YjA0Y2I1YjA1NjdkMmVkNGFmNzczZDE4OGY4NDVmY2FlZGUzIHJlbGVhc2UzMS1tYWludAorODg2NDkgOTdkMDUwYzMxNzJmOWUyZWRjODJiMjkyMjhkYmQ2ODkxZmNkMmJhMCByZWxlYXNlMjctbWFpbnQKKzg4NjUwIDI3NmRlOWIyOTMwMzBjMTA0ZGViN2M2NzVlM2FmNjk5NjlhOTg3NDIgcHkzaworODg2NTEgMzc0ZjBiMjJlNGE0YzViMWJlNDBkMDYxZDVmODQ2OWJhMWQ1NGIyZCByZWxlYXNlMzItbWFpbnQKKzg4NjUyIDA5MTI5YWFmYjk1MzZiZGNmYmZkN2E0NGMzYmMyZTFkMDI5NzJlMzUgcHkzaworODg2NTMgZmVkMmM2ZDQ5ZjE5ODAwNmU1NGIzNzkxYTQ5NWY3YmJhY2JlMDg5YSBweTNrCis4ODY1NCA5NzlkYThmMTM5ZGQzZDZlMjE5ZjBiYWJmZjQ3NmY5NWNjZTZhNTIxIHJlbGVhc2UzMi1tYWludAorODg2NTQgNmE4ZmEyZTliMTA1NWNhZDdjYzIxODM5OTAzZjlmMzk4M2MzNTc4MCBweTNrCis4ODY1NSBjZDE0NzgyODg2Y2FhMjg1MDNiYjM1NmY1YjNjMzdhNDFlMjExYjQxIHJlbGVhc2UzMi1tYWludAorODg2NTYgNzIyYWVlYjU3ZWFiYmRmZjliZjUxYjRmODQzZWExZmM0MGZlZDAxOSBweTNrCis4ODY1OCAxMDI1NmJkNjg3ODc5MTVmOGYzZmZkNTk0NjExZDY3MDA2OTAyN2UyIHB5M2sKKzg4NjU5IDU5Zjc0YWFkOTcwMzFmMTlkZWFkY2U4Zjg2OTA0NWFkZmQ5ODQ3OTAgcmVsZWFzZTMyLW1haW50Cis4ODY2MCBjNzdiMjVhZGZlYzIzYzQxNDFhNTFjZGUxYTg1OTM5NWQ5MzEwYzE1IHB5M2sKKzg4NjYyIGE1ODEyOWNkZDM2NTczMjRhMmVmMDg4NGQ0OWZkYzRkYmZiNGM1MTYgcmVsZWFzZTI3LW1haW50Cis4ODY2MyA4Njg3YTFiNzM1MTZjYzUyMDMxYzc3MDk4MmQ5MmQ5MmZiZTRkYmRjIHB5M2sKKzg4NjY0IDE5MDljMTJlZjA2YzdjMWMyZTIyNDI2MjljM2I4MmQxZDc3NDQ4NzUgcHkzaworODg2NjUgNmNlYzA5MTAyMGEyYzk5NjlhYzhhYTI5N2RhZjJmMzZkZWQ0OWZkNCByZWxlYXNlMzItbWFpbnQKKzg4NjY2IDc0MmQ3M2E5OTQyNTc0YjUxMzBjOTRkZTFmM2EyODZjMWUyMjcwY2IgcmVsZWFzZTI3LW1haW50Cis4ODY2OCA2NTBkMTQ4MjBiZDhjNjZkZjRhMGJhYTVkMWRkYWUzZDQwODc1YjBmIHB5M2sKKzg4NjY5IGE5NTY1OTI1YmE3MDYxZDYzNzE4NDA2NGQ3OGZiNTJmOGRjODJiMjMgcmVsZWFzZTI3LW1haW50Cis4ODY3MCBhNWI1ZmRhNjY4OWM2NTNkODVkNmY0N2U3ZTBhNDZkNGUyMWQxYjNkIHJlbGVhc2UzMi1tYWludAorODg2NzEgMmYwN2QzNzVjZTZlZWNhYjQ3MWU1ZDhlYmI4ODkxMDZmMTY5ZGExMCBweTNrCis4ODY3MiA0NTY1MGViMzQ2ODUxMTdhN2I4NmY3NTZmYjEyNmRjYjJmM2ZkNTExIHJlbGVhc2UzMi1tYWludAorODg2NzMgMjE0MzZlNDgxNjFmYzMxNzAyMDEwMDFjY2FiYTdhNTViMzlkYjU3NSByZWxlYXNlMjctbWFpbnQKKzg4Njc0IGRjODYyNmUwODU3N2Q2YjFmZDEyZTQwZmQ1OWM5ZTUyMzAwOGQ2YTMgcmVsZWFzZTI3LW1haW50Cis4ODY3NSA3MjhmYmMyNjM1OWMxMDdmZjc1NWNlNWJiNmI5YjNiMDgwZjFiZWYxIHBlcC0zMTUxCis4ODY3OSBjYmQwNjA4MTAzZjYxMDZlZmExZDY1MjNkOWUwZWFiOTk0ZGNhMTRmIHB5M2sKKzg4NjgwIGI3ZDYyYmMwMTk5ODg5MjEyYmRjZDQwZDVkMDRhM2NhOTg4ZDM0NWYgcHkzaworODg2ODIgMmRkY2E1NWUwOThkZGEyYjFhNjg1NmEzNTllMTlmNzhkOTg1YzY4OCBweTNrCis4ODY4MyBiYmRkYWM1YzE4ZDM5ODBlNzY1OGEwOWJkNGZlODU0MTc5OGMzNTNjIHB5M2sKKzg4Njg0IDdjNmIyMWRiMDBlM2UzZjE1NWQyYjhhOTFkMTJjZDI4NDgyMDg3NGUgcHkzaworODg2ODUgYTJkNjExMTdjMmQyNjQ5ZjkwOTBmNjg5YWE4NWM1NTc1YTZkNzMzOSBweTNrCis4ODY4NiAxMGI4MzhmNmU1YTFhOTRiYTczYTFkM2M2NWM5NTBjZGQ4ZDVkYjMzIHB5M2sKKzg4Njg3IGZkZjMyZmEwZjQ0MGU3MWU1MGQwZmZjMzUyMjlkNmExNGM3ZDJhNDIgcmVsZWFzZTMyLW1haW50Cis4ODY4OCBiMjk0ZmY3NTczMzY1Y2RkY2NhOGEyN2MxNjQ5ZmQxOGQxOTk0NDhjIHBlcC0zODIKKzg4Njg5IGY4YTc3ZmQ2NzVmNWEzY2UwNTFlZTQwNGM3YjU2ZGIxYzcyZWJmMWQgcmVsZWFzZTMxLW1haW50Cis4ODY5MCA0NDczNGQzNzUzOTMxNTQ4YWM0YThlZDkyODJiMDM0OWI4YjYwMTUyIHJlbGVhc2UzMS1tYWludAorODg2OTEgMjYxMWNiZDc1YzRmOTcxY2Y2ZmJmNmIzMzcyNzk5NjY3YjU5NTAzMCBweTNrCis4ODY5MiBhMzY2MDk2Yjk1YWQyYTZiNWY4YTg2YjRhOTA4ZDIyODcxYjhjZGM5IHJlbGVhc2UzMi1tYWludAorODg2OTMgMTc5NzMwMGY4N2I5OTg2NWI2NjU4MWNlZGFhODQ3NmQyNDU4NzUxZiByZWxlYXNlMjctbWFpbnQKKzg4Njk0IDlhY2M5MDIxZjExZTMwMjE4MzZjODljZTgyNTgzYmJmOGVmOTdhOTMgcGVwLTM4MgorODg2OTYgOGUwN2ZjOTQ4NjgwNjg0OTA1ZjI2ZWNhNGU2MmNiOGZiZGFlZDY0OCBweTNrCis4ODY5NyA5YjcyNTQ2NzBjZTlkYTAwMjc1M2NhMDBjMjQ4ZWFiZjVkZGYzZmFlIHB5M2sKKzg4Njk4IDcyZjMwZjhlZjMzMWU5YjVmNTE0MGU4ZjMxZWE3ZGNiZWI5MDAwYTIgcmVsZWFzZTMyLW1haW50Cis4ODY5OSBiODJjM2U1OTNkYjY1NTVmYjgxNjU4MTZiYzdhMjljYTFiMjI3YzQ2IHB5M2sKKzg4NzAwIDFkMTk4NTE4Y2I4NzVjMzllNTNhZWUzYWY3ZDU0YTY2ZmMxMmQzZjMgcHkzaworODg3MDEgNWRjMzQ5M2UwN2E5ZjJhODMwZTc5YWIzMDgxYzA2NDkwMzBjM2QxNiByZWxlYXNlMzItbWFpbnQKKzg4NzAyIGRhOTU0NDBkOTJiMzZiMDA4MjE4NzExMTVkMzNiMGM1MTA4YzExZjMgcHkzaworODg3MDMgNzNhNDk5ZjBlYWYxYjBhZWYyODQ0YTYxYTE5YzEzNDA5OTdmOGQ3YyBweTNrCis4ODcwNCA4N2RlMDE3ZGE0YmY3Y2IzZDYwMjc2NTE3ZDIxODMwYjNhZTllMGQ3IHB5M2sKKzg4NzA1IDcyOTBiOGYzYzlmYjk5ODQ2NjlkMDgwN2U5ODRiZWM3MTM1MTNmMDMgcHkzaworODg3MDYgMzNlNzY4ZDIzYjE2YTU3MTBlNGY1MjJhNjIwOGU5MmJjYzJkM2NlOSBweTNrCis4ODcwNyA2ZjExN2QyN2FkMWM1ZTYzMjM5ZGQ1MmMzMjU2MmQ4MjQyNWFmODY3IHB5M2sKKzg4NzA4IGM3YTkzNjM2MjI4MTlmM2VhYjc3MmM3ODA0MzRiMjM0NzFmZTBiMjUgcHkzaworODg3MDkgMzc4ZWUzMjhiNjBlMGIxNjM2YWEyNDc1N2JlYTFhMTVmOTI4MWFlNCBweTNrCis4ODcxMCBhMWRiZTUzZjM3OTg0NWZmNjM2NzA5YjA4YWI0NTYzMzdjODY1YzkzIHB5M2sKKzg4NzExIDRkYWM0NzY5ZWEyNDhhYWNjODMwNzdlNTdhNjRkMmMxMzQxYzIzYWEgcHkzaworODg3MTIgNmIxMmQyYjY4ZjI1MzMzZGQ1YWZmZTZlM2U4ZjQ2YjU1Y2Q0MjQyNCBweTNrCis4ODcxNyAwZGM2YTkwZGVlMjE5MTIyYWJmNTY2YWM4NThhZWE2NWM0MzAwODJmIHB5M2sKKzg4NzE4IDZjOGVjNWY4YjllNTFiY2UxNTRlMTE4ZWZhOTFmNzFiMDA5NmViZDAgcmVsZWFzZTMyLW1haW50Cis4ODcxOSBhNGU3ZmJlZDc1M2M3MzFhNTUyNjdjZTcxMDA5YTgwZDgyNzA0ZDRhIHB5M2sKKzg4NzIwIDczOGZlZWM5Y2VkMDFmYzMxMzg5MmRiM2IxMDU4OWZiNjAyNWI4N2EgcHkzaworODg3MjEgMjBhNWEwOGMzYjZjYTlkOGE0MDg2OTdiOTU3NjcwZDVlM2Q2MjljMCBweTNrCis4ODcyMiAyMDhhNTI5MGZkMzhlYzhjNGZlMTM4ZTc5ZTgyM2QwMTg3NDNlY2M2IHB5M2sKKzg4NzIzIGExNzI3MDYzYTdkZmViMGQyYTYzYTZiMWEyOWY0NmZlYzMyYjA1ODIgcmVsZWFzZTMyLW1haW50Cis4ODcyNCBmNTM5OGZiODE0Mjg5YjI0YThiMDVmYWVkMzQ0ZjdmOTBiNzc1NmQ3IHB5M2sKKzg4NzI1IDJmY2U5Yzc0MmNkZWFiNGRlZDExMTUyZWNiZGQ5MDY3ZTEwZWYwZTIgcmVsZWFzZTMxLW1haW50Cis4ODcyNiBkZGMwYmI2YTdiN2M3MmM3YWJiN2IxYzQ4MGRlYThmZDkxOGRiOWNlIHB5M2sKKzg4NzI3IDU4Y2IwZmUwNmRhYTM2NTE5NTM1NTFiZTViMTFiMTQ1MDE1NDdiMDAgcmVsZWFzZTMyLW1haW50Cis4ODcyOCA5NjVhYjk5MTFmY2QwZWYxNGFmZTBkYTlmODM1NTVjNjg5NzhlN2QwIHJlbGVhc2UyNy1tYWludAorODg3MjkgZjIwNDZkZmNhNzMxMTM2NzJkNTliNTA0NmZmODZiMGIwM2I0MWQwOSBweTNrCis4ODczMCBiNTI4MWY1ZmFkZTRkZDU2N2YxZjFkNTZmYWM5Y2U3ZDU3ZWI5Zjk5IHB5M2sKKzg4NzMxIGJjOWVmYmJlNjNjZjNlYjNhM2I3YzFiOTI0NmM1NDRmNmZhNWZlYjIgcmVsZWFzZTMyLW1haW50Cis4ODczMiBhODM4OTQ2OGU2NTEzN2M1MDY1ZjcwMmM4NDZiOWMwZTU2MWU1OTcyIHJlbGVhc2UyNy1tYWludAorODg3MzMgMDg4MDRhZWEwOGYxYzQ4YTE2Yzg0OWRhMTI3MDdlNTFhODdkODZkOSBweTNrCis4ODczNCAyZjVmNzU1YjI2ODc4Y2IwZmIzNWMwYzU5MDczYWFmMThlYmUzNjgzIHB5M2sKKzg4NzM1IGQyYjViZGU1YzFmYTRjOTRhNzQ3YzY3MDE2M2Q2YWM3MDFmOTYwOTYgcHkzaworODg3MzkgMWEwNWJjMzZhMzM0MGE0ZTZiNTk2MTUzODU0M2YxMGU5YmY4Y2Y3YSByZWxlYXNlMzItbWFpbnQKKzg4NzQwIDNmNzBjNTRkODZkODlhZGNmN2E3NDUyMDI1OTY3YThmNzBiZTI5Y2YgcHkzaworODg3NDEgZTJkZmM4ZjI0ZDNmNmVhODM4NjNkMmUzMmMwYzMwM2UwMjZhYWFmZCByZWxlYXNlMjctbWFpbnQKKzg4NzQyIDkzZmQxNjY3MDc3NGEyNzdiOTE3MzkwNDI2Yjg0YzI4YWI3OTZjN2EgcHkzaworODg3NDQgZTc0MjA5YjliMmY1Mjg4ZjkzN2Q2ZTM0MTFhMmNmMTBhODY0NmIwNCBweTNrCis4ODc0NSBlN2I2YWRiYTU3MWFhOTNhNDQxNDVmMGViZjdiNWJiYTJlMzg1OTMxIHB5M2sKKzg4NzQ2IDUwYjM4ZTRiMDIzMTI2N2I5MTc1NWM0ZDFhMDA3MjBmMzgxOTUyNjggcHkzaworODg3NDcgMGU3MTgwZTRjM2NkYjk0ODQxOGJjMTdiNTc0ZDFmZjY1MTQyOWY0ZCBweTNrCis4ODc1MiA4NWEzNGEzMTY5NjkyNzg1OTNkNDU0YTg2ZWY0M2EyZjc2YzJkNzZjIHB5M2stY2RlY2ltYWwKZGlmZiAtLWdpdCBhL01pc2MvdmFsZ3JpbmQtcHl0aG9uLnN1cHAgYi9NaXNjL3ZhbGdyaW5kLXB5dGhvbi5zdXBwCmluZGV4IGE2NjMwNWIuLjgxYTA3YzkgMTAwNjQ0Ci0tLSBhL01pc2MvdmFsZ3JpbmQtcHl0aG9uLnN1cHAKKysrIGIvTWlzYy92YWxncmluZC1weXRob24uc3VwcApAQCAtMTM3LDYgKzEzNywxOCBAQAogIyMjfQogIyMjCiAjIyN7CisjIyMgICBBRERSRVNTX0lOX1JBTkdFL1VzZSBvZiB1bmluaXRpYWxpc2VkIHZhbHVlIG9mIHNpemUgOAorIyMjICAgTWVtY2hlY2s6QWRkcjgKKyMjIyAgIGZ1bjpQeU9iamVjdF9GcmVlCisjIyN9CisjIyMKKyMjI3sKKyMjIyAgIEFERFJFU1NfSU5fUkFOR0UvVXNlIG9mIHVuaW5pdGlhbGlzZWQgdmFsdWUgb2Ygc2l6ZSA4CisjIyMgICBNZW1jaGVjazpWYWx1ZTgKKyMjIyAgIGZ1bjpQeU9iamVjdF9GcmVlCisjIyN9CisjIyMKKyMjI3sKICMjIyAgIEFERFJFU1NfSU5fUkFOR0UvQ29uZGl0aW9uYWwganVtcCBvciBtb3ZlIGRlcGVuZHMgb24gdW5pbml0aWFsaXNlZCB2YWx1ZQogIyMjICAgTWVtY2hlY2s6Q29uZAogIyMjICAgZnVuOlB5T2JqZWN0X0ZyZWUKQEAgLTE1NSw2ICsxNjcsMTggQEAKICMjI30KICMjIwogIyMjeworIyMjICAgQUREUkVTU19JTl9SQU5HRS9Vc2Ugb2YgdW5pbml0aWFsaXNlZCB2YWx1ZSBvZiBzaXplIDgKKyMjIyAgIE1lbWNoZWNrOkFkZHI4CisjIyMgICBmdW46UHlPYmplY3RfUmVhbGxvYworIyMjfQorIyMjCisjIyN7CisjIyMgICBBRERSRVNTX0lOX1JBTkdFL1VzZSBvZiB1bmluaXRpYWxpc2VkIHZhbHVlIG9mIHNpemUgOAorIyMjICAgTWVtY2hlY2s6VmFsdWU4CisjIyMgICBmdW46UHlPYmplY3RfUmVhbGxvYworIyMjfQorIyMjCisjIyN7CiAjIyMgICBBRERSRVNTX0lOX1JBTkdFL0NvbmRpdGlvbmFsIGp1bXAgb3IgbW92ZSBkZXBlbmRzIG9uIHVuaW5pdGlhbGlzZWQgdmFsdWUKICMjIyAgIE1lbWNoZWNrOkNvbmQKICMjIyAgIGZ1bjpQeU9iamVjdF9SZWFsbG9jCkBAIC0yODYsNiArMzEwLDM4IEBACiAjIyMgICBmdW46TUQ1X1VwZGF0ZQogIyMjfQogCisjIEZlZG9yYSdzIHBhY2thZ2UgIm9wZW5zc2wtMS4wLjEtMC4xLmJldGEyLmZjMTcueDg2XzY0IiBvbiB4ODZfNjQKKyMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNDE3MQoreworICAgb3BlbnNzbCAxLjAuMSBwcm5nIDEKKyAgIE1lbWNoZWNrOkNvbmQKKyAgIGZ1bjpiY21wCisgICBmdW46Zmlwc19nZXRfZW50cm9weQorICAgZnVuOkZJUFNfZHJiZ19pbnN0YW50aWF0ZQorICAgZnVuOlJBTkRfaW5pdF9maXBzCisgICBmdW46T1BFTlNTTF9pbml0X2xpYnJhcnkKKyAgIGZ1bjpTU0xfbGlicmFyeV9pbml0CisgICBmdW46aW5pdF9oYXNobGliCit9CisKK3sKKyAgIG9wZW5zc2wgMS4wLjEgcHJuZyAyCisgICBNZW1jaGVjazpDb25kCisgICBmdW46Zmlwc19nZXRfZW50cm9weQorICAgZnVuOkZJUFNfZHJiZ19pbnN0YW50aWF0ZQorICAgZnVuOlJBTkRfaW5pdF9maXBzCisgICBmdW46T1BFTlNTTF9pbml0X2xpYnJhcnkKKyAgIGZ1bjpTU0xfbGlicmFyeV9pbml0CisgICBmdW46aW5pdF9oYXNobGliCit9CisKK3sKKyAgIG9wZW5zc2wgMS4wLjEgcHJuZyAzCisgICBNZW1jaGVjazpWYWx1ZTgKKyAgIGZ1bjpfeDg2XzY0X0FFU19lbmNyeXB0X2NvbXBhY3QKKyAgIGZ1bjpBRVNfZW5jcnlwdAorfQorCiAjCiAjIEFsbCBvZiB0aGVzZSBwcm9ibGVtcyBjb21lIGZyb20gdXNpbmcgdGVzdF9zb2NrZXRfc3NsCiAjCkBAIC0zODgsNCArNDQ0LDI4IEBACiAgICBmdW46U0hBMV9VcGRhdGUKIH0KIAoreworICAgdGVzdF9idWZmZXJfbm9uX2RlYnVnCisgICBNZW1jaGVjazpBZGRyNAorICAgZnVuOlB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKK30KKworeworICAgdGVzdF9idWZmZXJfbm9uX2RlYnVnCisgICBNZW1jaGVjazpBZGRyNAorICAgZnVuOlB5VW5pY29kZV9GU0NvbnZlcnRlcgorfQorCisjIEFkZGl0aW9uYWwgc3VwcHJlc3Npb25zIGZvciB0aGUgdW5pZmllZCBkZWNpbWFsIHRlc3RzOgoreworICAgdGVzdF9kZWNpbWFsCisgICBNZW1jaGVjazpBZGRyNAorICAgZnVuOlB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKK30KKworeworICAgdGVzdF9kZWNpbWFsMgorICAgTWVtY2hlY2s6QWRkcjQKKyAgIGZ1bjpQeVVuaWNvZGVfRlNDb252ZXJ0ZXIKK30KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5kaXN0IGIvTW9kdWxlcy9TZXR1cC5kaXN0CmluZGV4IDkyNjlkZGYuLmY0NWRlNWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvU2V0dXAuZGlzdAorKysgYi9Nb2R1bGVzL1NldHVwLmRpc3QKQEAgLTEyNyw2ICsxMjcsOSBAQAogIyBidWlsdGluIG1vZHVsZSBhdm9pZHMgc29tZSBib290c3RyYXBwaW5nIHByb2JsZW1zIGFuZCByZWR1Y2VzIG92ZXJoZWFkLgogemlwaW1wb3J0IHppcGltcG9ydC5jCiAKKyMgZmF1bHRoYW5kbGVyIG1vZHVsZQorZmF1bHRoYW5kbGVyIGZhdWx0aGFuZGxlci5jCisKICMgVGhlIHJlc3Qgb2YgdGhlIG1vZHVsZXMgbGlzdGVkIGluIHRoaXMgZmlsZSBhcmUgYWxsIGNvbW1lbnRlZCBvdXQgYnkKICMgZGVmYXVsdC4gIFVzdWFsbHkgdGhleSBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGJ1aWx0IGFzIGR5bmFtaWNhbGx5CiAjIGxvYWRlZCBtb2R1bGVzIGJ5IHRoZSBuZXcgc2V0dXAucHkgc2NyaXB0IGFkZGVkIGluIFB5dGhvbiAyLjEuICBJZgpAQCAtMjA3LDcgKzIxMCw3IEBACiAjCiAjIEZpcnN0LCBsb29rIGF0IFNldHVwLmNvbmZpZzsgY29uZmlndXJlIG1heSBoYXZlIHNldCB0aGlzIGZvciB5b3UuCiAKLSNjcnlwdCBjcnlwdG1vZHVsZS5jICMgLWxjcnlwdAkjIGNyeXB0KDMpOyBuZWVkcyAtbGNyeXB0IG9uIHNvbWUgc3lzdGVtcworI19jcnlwdCBfY3J5cHRtb2R1bGUuYyAjIC1sY3J5cHQJIyBjcnlwdCgzKTsgbmVlZHMgLWxjcnlwdCBvbiBzb21lIHN5c3RlbXMKIAogCiAjIFNvbWUgbW9yZSBVTklYIGRlcGVuZGVudCBtb2R1bGVzIC0tIG9mZiBieSBkZWZhdWx0LCBzaW5jZSB0aGVzZQpAQCAtMjMxLDE1ICsyMzQsMTQgQEAKICMgc3lzdGVtIGRvZXMgbm90IGhhdmUgdGhlIE9wZW5TU0wgbGlicyBjb250YWluaW5nIGFuIG9wdGltaXplZCB2ZXJzaW9uLgogCiAjIFRoZSBfbWQ1IG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLiBNRDUKLSMgTWVzc2FnZS1EaWdlc3QgQWxnb3JpdGhtLCBkZXNjcmliZWQgaW4gUkZDIDEzMjEuICBUaGUgbmVjZXNzYXJ5IGZpbGVzCi0jIG1kNS5jIGFuZCBtZDUuaCBhcmUgaW5jbHVkZWQgaGVyZS4KKyMgTWVzc2FnZS1EaWdlc3QgQWxnb3JpdGhtLCBkZXNjcmliZWQgaW4gUkZDIDEzMjEuCiAKLSNfbWQ1IG1kNW1vZHVsZS5jIG1kNS5jCisjX21kNSBtZDVtb2R1bGUuYwogCiAKICMgVGhlIF9zaGEgbW9kdWxlIGltcGxlbWVudHMgdGhlIFNIQSBjaGVja3N1bSBhbGdvcml0aG1zLgogIyAoTklTVCdzIFNlY3VyZSBIYXNoIEFsZ29yaXRobXMuKQotI19zaGEgc2hhbW9kdWxlLmMKKyNfc2hhMSBzaGExbW9kdWxlLmMKICNfc2hhMjU2IHNoYTI1Nm1vZHVsZS5jCiAjX3NoYTUxMiBzaGE1MTJtb2R1bGUuYwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19iaXNlY3Rtb2R1bGUuYyBiL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCmluZGV4IGVhZTI5NzguLmZhY2E4Y2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCkBAIC05MCw3ICs5MCw5IEBACiAgICAgICAgIGlmIChQeUxpc3RfSW5zZXJ0KGxpc3QsIGluZGV4LCBpdGVtKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxpc3QsICJpbnNlcnQiLCAibk8iLCBpbmRleCwgaXRlbSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGluc2VydCk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChsaXN0LCAmUHlJZF9pbnNlcnQsICJuTyIsIGluZGV4LCBpdGVtKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpAQCAtMTkzLDcgKzE5NSw4IEBACiAgICAgICAgIGlmIChQeUxpc3RfSW5zZXJ0KGxpc3QsIGluZGV4LCBpdGVtKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxpc3QsICJpbnNlcnQiLCAibk8iLCBpbmRleCwgaXRlbSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGluc2VydCk7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobGlzdCwgJlB5SWRfaW5zZXJ0LCAibk8iLCBpbmRleCwgaXRlbSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2J6Mm1vZHVsZS5jIGIvTW9kdWxlcy9fYnoybW9kdWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQwN2RmOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCkBAIC0wLDAgKzEsNTkwIEBACisvKiBfYnoyIC0gTG93LWxldmVsIFB5dGhvbiBpbnRlcmZhY2UgdG8gbGliYnppcDIuICovCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPGJ6bGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisjaWZuZGVmIEJaX0NPTkZJR19FUlJPUgorI2RlZmluZSBCWjJfYnpDb21wcmVzcyBiekNvbXByZXNzCisjZGVmaW5lIEJaMl9iekNvbXByZXNzSW5pdCBiekNvbXByZXNzSW5pdAorI2RlZmluZSBCWjJfYnpDb21wcmVzc0VuZCBiekNvbXByZXNzRW5kCisjZGVmaW5lIEJaMl9iekRlY29tcHJlc3MgYnpEZWNvbXByZXNzCisjZGVmaW5lIEJaMl9iekRlY29tcHJlc3NJbml0IGJ6RGVjb21wcmVzc0luaXQKKyNkZWZpbmUgQloyX2J6RGVjb21wcmVzc0VuZCBiekRlY29tcHJlc3NFbmQKKyNlbmRpZiAgLyogISBCWl9DT05GSUdfRVJST1IgKi8KKworCisjaWZkZWYgV0lUSF9USFJFQUQKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikgZG8geyBcCisgICAgaWYgKCFQeVRocmVhZF9hY3F1aXJlX2xvY2soKG9iaiktPmxvY2ssIDApKSB7IFwKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyBcCisgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMSk7IFwKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMgXAorICAgIH0gfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKChvYmopLT5sb2NrKQorI2Vsc2UKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikKKyNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikKKyNlbmRpZgorCisjZGVmaW5lIE1JTihYLCBZKSAoKChYKSA8IChZKSkgPyAoWCkgOiAoWSkpCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBiel9zdHJlYW0gYnpzOworICAgIGludCBmbHVzaGVkOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQloyQ29tcHJlc3NvcjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBiel9zdHJlYW0gYnpzOworICAgIGNoYXIgZW9mOyAgICAgICAgICAgLyogVF9CT09MIGV4cGVjdHMgYSBjaGFyICovCisgICAgUHlPYmplY3QgKnVudXNlZF9kYXRhOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQloyRGVjb21wcmVzc29yOworCisKKy8qIEhlbHBlciBmdW5jdGlvbnMuICovCisKK3N0YXRpYyBpbnQKK2NhdGNoX2J6Ml9lcnJvcihpbnQgYnplcnJvcikKK3sKKyAgICBzd2l0Y2goYnplcnJvcikgeworICAgICAgICBjYXNlIEJaX09LOgorICAgICAgICBjYXNlIEJaX1JVTl9PSzoKKyAgICAgICAgY2FzZSBCWl9GTFVTSF9PSzoKKyAgICAgICAgY2FzZSBCWl9GSU5JU0hfT0s6CisgICAgICAgIGNhc2UgQlpfU1RSRUFNX0VORDoKKyAgICAgICAgICAgIHJldHVybiAwOworCisjaWZkZWYgQlpfQ09ORklHX0VSUk9SCisgICAgICAgIGNhc2UgQlpfQ09ORklHX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWJiemlwMiB3YXMgbm90IGNvbXBpbGVkIGNvcnJlY3RseSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICAgICAgY2FzZSBCWl9QQVJBTV9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlcm5hbCBlcnJvciAtICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBwYXJhbWV0ZXJzIHBhc3NlZCB0byBsaWJiemlwMiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgQlpfTUVNX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEJaX0RBVEFfRVJST1I6CisgICAgICAgIGNhc2UgQlpfREFUQV9FUlJPUl9NQUdJQzoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiSW52YWxpZCBkYXRhIHN0cmVhbSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgQlpfSU9fRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgIlVua25vd24gSS9PIGVycm9yIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBCWl9VTkVYUEVDVEVEX0VPRjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgbG9naWNhbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gd2FzIGRldGVjdGVkIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBCWl9TRVFVRU5DRV9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVybmFsIGVycm9yIC0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHNlcXVlbmNlIG9mIGNvbW1hbmRzIHNlbnQgdG8gbGliYnppcDIiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBlcnJvciBmcm9tIGxpYmJ6aXAyOiAlZCIsIGJ6ZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCisjaWYgQlVGU0laIDwgODE5MgorI2RlZmluZSBTTUFMTENIVU5LIDgxOTIKKyNlbHNlCisjZGVmaW5lIFNNQUxMQ0hVTksgQlVGU0laCisjZW5kaWYKKworc3RhdGljIGludAorZ3Jvd19idWZmZXIoUHlPYmplY3QgKipidWYpCit7CisgICAgLyogRXhwYW5kIHRoZSBidWZmZXIgYnkgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgY3VycmVudCBzaXplLAorICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuIFVzZSBhIGxlc3MtdGhhbi1kb3VibGUKKyAgICAgICBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLworICAgIHNpemVfdCBzaXplID0gUHlCeXRlc19HRVRfU0laRSgqYnVmKTsKKyAgICByZXR1cm4gX1B5Qnl0ZXNfUmVzaXplKGJ1Ziwgc2l6ZSArIChzaXplID4+IDMpICsgNik7Cit9CisKKworLyogQloyQ29tcHJlc3NvciBjbGFzcy4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbXByZXNzKEJaMkNvbXByZXNzb3IgKmMsIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4sIGludCBhY3Rpb24pCit7CisgICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjLT5ienMubmV4dF9pbiA9IGRhdGE7CisgICAgLyogT24gYSA2NC1iaXQgc3lzdGVtLCBsZW4gbWlnaHQgbm90IGZpdCBpbiBhdmFpbF9pbiAoYW4gdW5zaWduZWQgaW50KS4KKyAgICAgICBEbyBjb21wcmVzc2lvbiBpbiBjaHVua3Mgb2Ygbm8gbW9yZSB0aGFuIFVJTlRfTUFYIGJ5dGVzIGVhY2guICovCisgICAgYy0+YnpzLmF2YWlsX2luID0gTUlOKGxlbiwgVUlOVF9NQVgpOworICAgIGxlbiAtPSBjLT5ienMuYXZhaWxfaW47CisgICAgYy0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICBjLT5ienMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgY2hhciAqdGhpc19vdXQ7CisgICAgICAgIGludCBiemVycm9yOworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgdGhpc19vdXQgPSBjLT5ienMubmV4dF9vdXQ7CisgICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzcygmYy0+YnpzLCBhY3Rpb24pOworICAgICAgICBkYXRhX3NpemUgKz0gYy0+YnpzLm5leHRfb3V0IC0gdGhpc19vdXQ7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmIChjYXRjaF9iejJfZXJyb3IoYnplcnJvcikpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChjLT5ienMuYXZhaWxfaW4gPT0gMCAmJiBsZW4gPiAwKSB7CisgICAgICAgICAgICBjLT5ienMuYXZhaWxfaW4gPSBNSU4obGVuLCBVSU5UX01BWCk7CisgICAgICAgICAgICBsZW4gLT0gYy0+YnpzLmF2YWlsX2luOworICAgICAgICB9CisKKyAgICAgICAgLyogSW4gcmVndWxhciBjb21wcmVzc2lvbiBtb2RlLCBzdG9wIHdoZW4gaW5wdXQgZGF0YSBpcyBleGhhdXN0ZWQuCisgICAgICAgICAgIEluIGZsdXNoaW5nIG1vZGUsIHN0b3Agd2hlbiBhbGwgYnVmZmVyZWQgZGF0YSBoYXMgYmVlbiBmbHVzaGVkLiAqLworICAgICAgICBpZiAoKGFjdGlvbiA9PSBCWl9SVU4gJiYgYy0+YnpzLmF2YWlsX2luID09IDApIHx8CisgICAgICAgICAgICAoYWN0aW9uID09IEJaX0ZJTklTSCAmJiBiemVycm9yID09IEJaX1NUUkVBTV9FTkQpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGMtPmJ6cy5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgYy0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGMtPmJ6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGRhdGFfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgZGF0YV9zaXplKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKEJaMkNvbXByZXNzb3JfY29tcHJlc3NfX2RvY19fLAorImNvbXByZXNzKGRhdGEpIC0+IGJ5dGVzXG4iCisiXG4iCisiUHJvdmlkZSBkYXRhIHRvIHRoZSBjb21wcmVzc29yIG9iamVjdC4gUmV0dXJucyBhIGNodW5rIG9mXG4iCisiY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiJycgb3RoZXJ3aXNlLlxuIgorIlxuIgorIldoZW4geW91IGhhdmUgZmluaXNoZWQgcHJvdmlkaW5nIGRhdGEgdG8gdGhlIGNvbXByZXNzb3IsIGNhbGwgdGhlXG4iCisiZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitCWjJDb21wcmVzc29yX2NvbXByZXNzKEJaMkNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBidWZmZXI7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmNvbXByZXNzIiwgJmJ1ZmZlcikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQUNRVUlSRV9MT0NLKHNlbGYpOworICAgIGlmIChzZWxmLT5mbHVzaGVkKQorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNvbXByZXNzb3IgaGFzIGJlZW4gZmx1c2hlZCIpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gY29tcHJlc3Moc2VsZiwgYnVmZmVyLmJ1ZiwgYnVmZmVyLmxlbiwgQlpfUlVOKTsKKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeURvY19TVFJWQVIoQloyQ29tcHJlc3Nvcl9mbHVzaF9fZG9jX18sCisiZmx1c2goKSAtPiBieXRlc1xuIgorIlxuIgorIkZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy4gUmV0dXJucyB0aGUgY29tcHJlc3NlZCBkYXRhIGxlZnRcbiIKKyJpbiBpbnRlcm5hbCBidWZmZXJzLlxuIgorIlxuIgorIlRoZSBjb21wcmVzc29yIG9iamVjdCBtYXkgbm90IGJlIHVzZWQgYWZ0ZXIgdGhpcyBtZXRob2QgaXMgY2FsbGVkLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitCWjJDb21wcmVzc29yX2ZsdXNoKEJaMkNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPmZsdXNoZWQpCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiUmVwZWF0ZWQgY2FsbCB0byBmbHVzaCgpIik7CisgICAgZWxzZSB7CisgICAgICAgIHNlbGYtPmZsdXNoZWQgPSAxOworICAgICAgICByZXN1bHQgPSBjb21wcmVzcyhzZWxmLCBOVUxMLCAwLCBCWl9GSU5JU0gpOworICAgIH0KKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAorQloyQ29tcHJlc3Nvcl9pbml0KEJaMkNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCBjb21wcmVzc2xldmVsID0gOTsKKyAgICBpbnQgYnplcnJvcjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6QloyQ29tcHJlc3NvciIsICZjb21wcmVzc2xldmVsKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICghKDEgPD0gY29tcHJlc3NsZXZlbCAmJiBjb21wcmVzc2xldmVsIDw9IDkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNzbGV2ZWwgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDkiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgIlVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKworICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzc0luaXQoJnNlbGYtPmJ6cywgY29tcHJlc3NsZXZlbCwgMCwgMCk7CisgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihiemVycm9yKSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiAwOworCitlcnJvcjoKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyAgICBzZWxmLT5sb2NrID0gTlVMTDsKKyNlbmRpZgorICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQKK0JaMkNvbXByZXNzb3JfZGVhbGxvYyhCWjJDb21wcmVzc29yICpzZWxmKQoreworICAgIEJaMl9iekNvbXByZXNzRW5kKCZzZWxmLT5ienMpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgIT0gTlVMTCkKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworI2VuZGlmCisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIEJaMkNvbXByZXNzb3JfbWV0aG9kc1tdID0geworICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pQloyQ29tcHJlc3Nvcl9jb21wcmVzcywgTUVUSF9WQVJBUkdTLAorICAgICBCWjJDb21wcmVzc29yX2NvbXByZXNzX19kb2NfX30sCisgICAgeyJmbHVzaCIsICAgIChQeUNGdW5jdGlvbilCWjJDb21wcmVzc29yX2ZsdXNoLCAgICBNRVRIX05PQVJHUywKKyAgICAgQloyQ29tcHJlc3Nvcl9mbHVzaF9fZG9jX199LAorICAgIHtOVUxMfQorfTsKKworUHlEb2NfU1RSVkFSKEJaMkNvbXByZXNzb3JfX2RvY19fLAorIkJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbD05KVxuIgorIlxuIgorIkNyZWF0ZSBhIGNvbXByZXNzb3Igb2JqZWN0IGZvciBjb21wcmVzc2luZyBkYXRhIGluY3JlbWVudGFsbHkuXG4iCisiXG4iCisiY29tcHJlc3NsZXZlbCwgaWYgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5LlxuIgorIlxuIgorIkZvciBvbmUtc2hvdCBjb21wcmVzc2lvbiwgdXNlIHRoZSBjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuXG4iKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBCWjJDb21wcmVzc29yX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9iejIuQloyQ29tcHJlc3NvciIsICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihCWjJDb21wcmVzc29yKSwgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpQloyQ29tcHJlc3Nvcl9kZWFsbG9jLCAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBCWjJDb21wcmVzc29yX19kb2NfXywgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIEJaMkNvbXByZXNzb3JfbWV0aG9kcywgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUJaMkNvbXByZXNzb3JfaW5pdCwgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKKy8qIEJaMkRlY29tcHJlc3NvciBjbGFzcy4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpkLCBjaGFyICpkYXRhLCBzaXplX3QgbGVuKQoreworICAgIHNpemVfdCBkYXRhX3NpemUgPSAwOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBkLT5ienMubmV4dF9pbiA9IGRhdGE7CisgICAgLyogT24gYSA2NC1iaXQgc3lzdGVtLCBsZW4gbWlnaHQgbm90IGZpdCBpbiBhdmFpbF9pbiAoYW4gdW5zaWduZWQgaW50KS4KKyAgICAgICBEbyBkZWNvbXByZXNzaW9uIGluIGNodW5rcyBvZiBubyBtb3JlIHRoYW4gVUlOVF9NQVggYnl0ZXMgZWFjaC4gKi8KKyAgICBkLT5ienMuYXZhaWxfaW4gPSBNSU4obGVuLCBVSU5UX01BWCk7CisgICAgbGVuIC09IGQtPmJ6cy5hdmFpbF9pbjsKKyAgICBkLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgIGQtPmJ6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgZm9yICg7OykgeworICAgICAgICBjaGFyICp0aGlzX291dDsKKyAgICAgICAgaW50IGJ6ZXJyb3I7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICB0aGlzX291dCA9IGQtPmJ6cy5uZXh0X291dDsKKyAgICAgICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3MoJmQtPmJ6cyk7CisgICAgICAgIGRhdGFfc2l6ZSArPSBkLT5ienMubmV4dF9vdXQgLSB0aGlzX291dDsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihiemVycm9yKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKKyAgICAgICAgICAgIGQtPmVvZiA9IDE7CisgICAgICAgICAgICBsZW4gKz0gZC0+YnpzLmF2YWlsX2luOworICAgICAgICAgICAgaWYgKGxlbiA+IDApIHsgLyogU2F2ZSBsZWZ0b3ZlciBpbnB1dCB0byB1bnVzZWRfZGF0YSAqLworICAgICAgICAgICAgICAgIFB5X0NMRUFSKGQtPnVudXNlZF9kYXRhKTsKKyAgICAgICAgICAgICAgICBkLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZC0+YnpzLm5leHRfaW4sIGxlbik7CisgICAgICAgICAgICAgICAgaWYgKGQtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoZC0+YnpzLmF2YWlsX2luID09IDApIHsKKyAgICAgICAgICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGQtPmJ6cy5hdmFpbF9pbiA9IE1JTihsZW4sIFVJTlRfTUFYKTsKKyAgICAgICAgICAgIGxlbiAtPSBkLT5ienMuYXZhaWxfaW47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGQtPmJ6cy5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZC0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGQtPmJ6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGRhdGFfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgZGF0YV9zaXplKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfXywKKyJkZWNvbXByZXNzKGRhdGEpIC0+IGJ5dGVzXG4iCisiXG4iCisiUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2ZcbiIKKyJkZWNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYicnIG90aGVyd2lzZS5cbiIKKyJcbiIKKyJBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkXG4iCisicmFpc2VzIGFuIEVPRkVycm9yLiBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW1cbiIKKyJpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitCWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBidWZmZXI7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmRlY29tcHJlc3MiLCAmYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPmVvZikKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLCAiRW5kIG9mIHN0cmVhbSBhbHJlYWR5IHJlYWNoZWQiKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3Moc2VsZiwgYnVmZmVyLmJ1ZiwgYnVmZmVyLmxlbik7CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAorQloyRGVjb21wcmVzc29yX2luaXQoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgYnplcnJvcjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkJaMkRlY29tcHJlc3NvciIpKQorICAgICAgICByZXR1cm4gLTE7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJVbmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisKKyAgICBzZWxmLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOworICAgIGlmIChzZWxmLT51bnVzZWRfZGF0YSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3NJbml0KCZzZWxmLT5ienMsIDAsIDApOworICAgIGlmIChjYXRjaF9iejJfZXJyb3IoYnplcnJvcikpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoc2VsZi0+dW51c2VkX2RhdGEpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworICAgIHNlbGYtPmxvY2sgPSBOVUxMOworI2VuZGlmCisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgdm9pZAorQloyRGVjb21wcmVzc29yX2RlYWxsb2MoQloyRGVjb21wcmVzc29yICpzZWxmKQoreworICAgIEJaMl9iekRlY29tcHJlc3NFbmQoJnNlbGYtPmJ6cyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+dW51c2VkX2RhdGEpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgIT0gTlVMTCkKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworI2VuZGlmCisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIEJaMkRlY29tcHJlc3Nvcl9tZXRob2RzW10gPSB7CisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKUJaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIEJaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIoQloyRGVjb21wcmVzc29yX2VvZl9fZG9jX18sCisiVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4iKTsKKworUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9fZG9jX18sCisiRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4iKTsKKworc3RhdGljIFB5TWVtYmVyRGVmIEJaMkRlY29tcHJlc3Nvcl9tZW1iZXJzW10gPSB7CisgICAgeyJlb2YiLCBUX0JPT0wsIG9mZnNldG9mKEJaMkRlY29tcHJlc3NvciwgZW9mKSwKKyAgICAgUkVBRE9OTFksIEJaMkRlY29tcHJlc3Nvcl9lb2ZfX2RvY19ffSwKKyAgICB7InVudXNlZF9kYXRhIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKEJaMkRlY29tcHJlc3NvciwgdW51c2VkX2RhdGEpLAorICAgICBSRUFET05MWSwgQloyRGVjb21wcmVzc29yX3VudXNlZF9kYXRhX19kb2NfX30sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIoQloyRGVjb21wcmVzc29yX19kb2NfXywKKyJCWjJEZWNvbXByZXNzb3IoKVxuIgorIlxuIgorIkNyZWF0ZSBhIGRlY29tcHJlc3NvciBvYmplY3QgZm9yIGRlY29tcHJlc3NpbmcgZGF0YSBpbmNyZW1lbnRhbGx5LlxuIgorIlxuIgorIkZvciBvbmUtc2hvdCBkZWNvbXByZXNzaW9uLCB1c2UgdGhlIGRlY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLlxuIik7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQloyRGVjb21wcmVzc29yX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9iejIuQloyRGVjb21wcmVzc29yIiwgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihCWjJEZWNvbXByZXNzb3IpLCAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpQloyRGVjb21wcmVzc29yX2RlYWxsb2MsLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBCWjJEZWNvbXByZXNzb3JfX2RvY19fLCAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIEJaMkRlY29tcHJlc3Nvcl9tZXRob2RzLCAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBCWjJEZWNvbXByZXNzb3JfbWVtYmVycywgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUJaMkRlY29tcHJlc3Nvcl9pbml0LCAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKKy8qIE1vZHVsZSBpbml0aWFsaXphdGlvbi4gKi8KKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfYnoybW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX2J6MiIsCisgICAgTlVMTCwKKyAgICAtMSwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX2J6Mih2b2lkKQoreworICAgIFB5T2JqZWN0ICptOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmQloyQ29tcHJlc3Nvcl9UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVR5cGVfUmVhZHkoJkJaMkRlY29tcHJlc3Nvcl9UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX2J6Mm1vZHVsZSk7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9JTkNSRUYoJkJaMkNvbXByZXNzb3JfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCWjJDb21wcmVzc29yIiwgKFB5T2JqZWN0ICopJkJaMkNvbXByZXNzb3JfVHlwZSk7CisKKyAgICBQeV9JTkNSRUYoJkJaMkRlY29tcHJlc3Nvcl9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJaMkRlY29tcHJlc3NvciIsCisgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZCWjJEZWNvbXByZXNzb3JfVHlwZSk7CisKKyAgICByZXR1cm4gbTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jIGIvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKaW5kZXggZWI3NDBmOS4uNzgxOGY5YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKQEAgLTM4LDYgKzM4LDEwIEBACiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KICNpbmNsdWRlICJQeXRob24uaCIKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKwogLyogLS0tIFJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIFB5RG9jX1NUUlZBUihyZWdpc3Rlcl9fZG9jX18sCkBAIC0xNjIsNyArMTY2LDYgQEAKIGVzY2FwZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCiAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgUHlfc3NpemVfdCBuZXdzaXplOwpAQCAtMjA1LDggKzIwOCw4IEBACiAgICAgICAgICAgICBlbHNlIGlmIChjIDwgJyAnIHx8IGMgPj0gMHg3ZikgewogICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soYyAmIDB4ZjApID4+IDRdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbYyAmIDB4Zl07CisgICAgICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soYyAmIDB4ZjApID4+IDRdOworICAgICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbYyAmIDB4Zl07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKnArKyA9IGM7CkBAIC0yMzYsOCArMjM5LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfSU5DUkVGKG9iaik7Ci0gICAgICAgIHJldHVybiBjb2RlY190dXBsZShvYmosIFB5VW5pY29kZV9HRVRfU0laRShvYmopKTsKKyAgICAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKG9iaiwgUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoUHlPYmplY3RfQXNSZWFkQnVmZmVyKG9iaiwgKGNvbnN0IHZvaWQgKiopJmRhdGEsICZzaXplKSkKQEAgLTU4OCw3ICs1OTMsNyBAQAogICAgIHJldHVybiBjb2RlY190dXBsZSh1bmljb2RlLCBwYnVmLmxlbik7CiB9CiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKIAogc3RhdGljIFB5T2JqZWN0ICoKIG1iY3NfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLApAQCAtNjEzLDcgKzYxOCwzMiBAQAogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCitzdGF0aWMgUHlPYmplY3QgKgorY29kZV9wYWdlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIHBidWY7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBOVUxMOworICAgIGludCBjb2RlX3BhZ2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Knx6aTpjb2RlX3BhZ2VfZGVjb2RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvZGVfcGFnZSwgJnBidWYsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGNvbnN1bWVkID0gcGJ1Zi5sZW47CisKKyAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZUNvZGVQYWdlU3RhdGVmdWwoY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKKyAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOworfQorCisjZW5kaWYgLyogSEFWRV9NQkNTICovCiAKIC8qIC0tLSBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC02NDUsMTcgKzY3NSwzMSBAQAogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpkYXRhOwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGxlbiwgc2l6ZTsKKworICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gZGVwcmVjYXRlZCIsCisgICAgICAgICAgICAgICAgICAgICAxKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2VuY29kZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYmosICZlcnJvcnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewotICAgICAgICBkYXRhID0gUHlVbmljb2RlX0FTX0RBVEEob2JqKTsKLSAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKG9iaik7Ci0gICAgICAgIHJldHVybiBjb2RlY190dXBsZShQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGRhdGEsIHNpemUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG9iaikpOworICAgICAgICBQeV9VTklDT0RFICp1OworCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICB1ID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUob2JqLCAmbGVuKTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgc2l6ZSA9IGxlbiAqIHNpemVvZihQeV9VTklDT0RFKTsKKyAgICAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIqKXUsIHNpemUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoUHlPYmplY3RfQXNSZWFkQnVmZmVyKG9iaiwgKGNvbnN0IHZvaWQgKiopJmRhdGEsICZzaXplKSkKQEAgLTY3NiwxNCArNzIwLDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGNyhQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEY3KHN0ciwgMCwgMCwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC03MDAsMTIgKzc0MiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoc3RyLCAidXRmLTgiLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTczMCwxMyArNzcyLDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZW9yZGVyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC03NTMsMTMgKzc5NCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjE2KFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgLTEpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTc3NiwxMyArODE2LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKzEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCArMSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtODA3LDEzICs4NDYsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYzMihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlb3JkZXIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTgzMCwxMyArODY4LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpLAotICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCAtMSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtODUzLDEzICs4OTAsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYzMihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsICsxKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC04NzYsMTEgKzkxMiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKHN0ciksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtODk3LDEyICs5MzQsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKHN0ciksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtOTE5LDEzICs5NTYsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC05NDIsMTMgKzk3OCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUFTQ0lJKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC05NjgsMTQgKzEwMDMsMTIgQEAKICAgICAgICAgbWFwcGluZyA9IE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDaGFybWFwKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTk4OSw3ICsxMDIyLDcgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAobWFwKTsKIH0KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorI2lmZGVmIEhBVkVfTUJDUwogCiBzdGF0aWMgUHlPYmplY3QgKgogbWJjc19lbmNvZGUoUHlPYmplY3QgKnNlbGYsCkBAIC0xMDAzLDE4ICsxMDM2LDQyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlTUJDUygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CiAKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCitzdGF0aWMgUHlPYmplY3QgKgorY29kZV9wYWdlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnN0ciwgKnY7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgY29kZV9wYWdlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT3x6OmNvZGVfcGFnZV9lbmNvZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY29kZV9wYWdlLCAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOworICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKKyAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICByZXR1cm4gdjsKK30KKworI2VuZGlmIC8qIEhBVkVfTUJDUyAqLwogCiAvKiAtLS0gRXJyb3IgaGFuZGxlciByZWdpc3RyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTEwMSw5ICsxMTU4LDExIEBACiAgICAgeyJjaGFybWFwX2RlY29kZSIsICAgICAgICAgIGNoYXJtYXBfZGVjb2RlLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImNoYXJtYXBfYnVpbGQiLCAgICAgICAgICAgY2hhcm1hcF9idWlsZCwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsicmVhZGJ1ZmZlcl9lbmNvZGUiLCAgICAgICByZWFkYnVmZmVyX2VuY29kZSwgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiAgICAgeyJtYmNzX2VuY29kZSIsICAgICAgICAgICAgIG1iY3NfZW5jb2RlLCAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7Im1iY3NfZGVjb2RlIiwgICAgICAgICAgICAgbWJjc19kZWNvZGUsICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY29kZV9wYWdlX2VuY29kZSIsICAgICAgICBjb2RlX3BhZ2VfZW5jb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJjb2RlX3BhZ2VfZGVjb2RlIiwgICAgICAgIGNvZGVfcGFnZV9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICNlbmRpZgogICAgIHsicmVnaXN0ZXJfZXJyb3IiLCAgICAgICAgICByZWdpc3Rlcl9lcnJvciwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKICAgICAgICAgcmVnaXN0ZXJfZXJyb3JfX2RvY19ffSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCmluZGV4IDMxNGJhZmQuLmQ2ODk5YzIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYwpAQCAtNzY3LDggKzc2Nyw5IEBACiBkZXF1ZV9yZWR1Y2UoZGVxdWVvYmplY3QgKmRlcXVlKQogewogICAgIFB5T2JqZWN0ICpkaWN0LCAqcmVzdWx0LCAqYXNsaXN0OworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKIAotICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKWRlcXVlLCAiX19kaWN0X18iKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilkZXF1ZSwgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgYXNsaXN0ID0gUHlTZXF1ZW5jZV9MaXN0KChQeU9iamVjdCAqKWRlcXVlKTsKQEAgLTgzMiw4ICs4MzMsNyBAQAogCiAgICAgaWYgKCFQeU9iamVjdF9UeXBlQ2hlY2sodiwgJmRlcXVlX3R5cGUpIHx8CiAgICAgICAgICFQeU9iamVjdF9UeXBlQ2hlY2sodywgJmRlcXVlX3R5cGUpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIC8qIFNob3J0Y3V0cyAqLwpAQCAtMTE0MSw2ICsxMTQxLDM1IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitkZXF1ZWl0ZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5X3NzaXplX3QgaSwgaW5kZXg9MDsKKyAgICBQeU9iamVjdCAqZGVxdWU7CisgICAgZGVxdWVpdGVyb2JqZWN0ICppdDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfG4iLCAmZGVxdWVfdHlwZSwgJmRlcXVlLCAmaW5kZXgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQodHlwZSA9PSAmZGVxdWVpdGVyX3R5cGUpOworCisgICAgaXQgPSAoZGVxdWVpdGVyb2JqZWN0KilkZXF1ZV9pdGVyKChkZXF1ZW9iamVjdCAqKWRlcXVlKTsKKyAgICBpZiAoIWl0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBjb25zdW1lIGl0ZW1zIGZyb20gdGhlIHF1ZXVlICovCisgICAgZm9yKGk9MDsgaTxpbmRleDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gZGVxdWVpdGVyX25leHQoaXQpOworICAgICAgICBpZiAoaXRlbSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGl0LT5jb3VudGVyKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QqKWl0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVpdGVyX2xlbihkZXF1ZWl0ZXJvYmplY3QgKml0KQogewogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoaXQtPmNvdW50ZXIpOwpAQCAtMTE0OCwxNCArMTE3NywyMSBAQAogCiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLCAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZWl0ZXJfcmVkdWNlKGRlcXVlaXRlcm9iamVjdCAqaXQpCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShpdCksIGl0LT5kZXF1ZSwgaXQtPmRlcXVlLT5sZW4gLSBpdC0+Y291bnRlcik7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiBkZXF1ZWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKWRlcXVlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilkZXF1ZWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVpdGVyX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgImRlcXVlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIl9jb2xsZWN0aW9ucy5fZGVxdWVfaXRlcmF0b3IiLCAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihkZXF1ZWl0ZXJvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KQEAgLTExODMsNiArMTIxOSwxNiBAQAogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZGVxdWVpdGVyX25leHQsICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBkZXF1ZWl0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgZGVxdWVpdGVyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICAwLAogfTsKIApAQCAtMTIzNiw5ICsxMjgyLDM4IEBACiAgICAgcmV0dXJuIGl0ZW07CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZXJldml0ZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5X3NzaXplX3QgaSwgaW5kZXg9MDsKKyAgICBQeU9iamVjdCAqZGVxdWU7CisgICAgZGVxdWVpdGVyb2JqZWN0ICppdDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfG4iLCAmZGVxdWVfdHlwZSwgJmRlcXVlLCAmaW5kZXgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQodHlwZSA9PSAmZGVxdWVyZXZpdGVyX3R5cGUpOworCisgICAgaXQgPSAoZGVxdWVpdGVyb2JqZWN0KilkZXF1ZV9yZXZpdGVyKChkZXF1ZW9iamVjdCAqKWRlcXVlKTsKKyAgICBpZiAoIWl0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBjb25zdW1lIGl0ZW1zIGZyb20gdGhlIHF1ZXVlICovCisgICAgZm9yKGk9MDsgaTxpbmRleDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gZGVxdWVyZXZpdGVyX25leHQoaXQpOworICAgICAgICBpZiAoaXRlbSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGl0LT5jb3VudGVyKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QqKWl0OworfQorCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGRlcXVlcmV2aXRlcl90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJkZXF1ZV9yZXZlcnNlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJfY29sbGVjdGlvbnMuX2RlcXVlX3JldmVyc2VfaXRlcmF0b3IiLCAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoZGVxdWVpdGVyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCkBAIC0xMjY2LDYgKzEzNDEsMTYgQEAKICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWRlcXVlcmV2aXRlcl9uZXh0LCAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgZGVxdWVpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGRlcXVlcmV2aXRlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgMCwKIH07CiAKQEAgLTEzNTQsMTMgKzE0MzksMTUgQEAKICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgUHlPYmplY3QgKml0ZXI7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CisKICAgICBpZiAoZGQtPmRlZmF1bHRfZmFjdG9yeSA9PSBOVUxMIHx8IGRkLT5kZWZhdWx0X2ZhY3RvcnkgPT0gUHlfTm9uZSkKICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwogICAgIGVsc2UKICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBkZC0+ZGVmYXVsdF9mYWN0b3J5KTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopZGQsICJpdGVtcyIsICIoKSIpOworICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilkZCwgJlB5SWRfaXRlbXMsICIoKSIpOwogICAgIGlmIChpdGVtcyA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNTczLDEyICsxNjYwLDggQEAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobWFwcGluZykpIHsKICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KGl0KTsKLSAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIG9sZHZhbCA9IFB5RGljdF9HZXRJdGVtKG1hcHBpbmcsIGtleSk7CiAgICAgICAgICAgICBpZiAob2xkdmFsID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBvbmUpID09IC0xKQpAQCAtMTU5NiwxMiArMTY3OSw4IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KGl0KTsKLSAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIG9sZHZhbCA9IFB5T2JqZWN0X0dldEl0ZW0obWFwcGluZywga2V5KTsKICAgICAgICAgICAgIGlmIChvbGR2YWwgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCkBAIC0xNjc4LDkgKzE3NTcsMTMgQEAKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJmRlcXVlaXRlcl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRigmZGVxdWVpdGVyX3R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2RlcXVlX2l0ZXJhdG9yIiwgKFB5T2JqZWN0ICopJmRlcXVlaXRlcl90eXBlKTsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJmRlcXVlcmV2aXRlcl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRigmZGVxdWVyZXZpdGVyX3R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2RlcXVlX3JldmVyc2VfaXRlcmF0b3IiLCAoUHlPYmplY3QgKikmZGVxdWVyZXZpdGVyX3R5cGUpOwogCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NyeXB0bW9kdWxlLmMgYi9Nb2R1bGVzL19jcnlwdG1vZHVsZS5jCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIE1vZHVsZXMvY3J5cHRtb2R1bGUuYwpyZW5hbWUgdG8gTW9kdWxlcy9fY3J5cHRtb2R1bGUuYwppbmRleCBkNWE0MmZmLi41MTAwNzg4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NyeXB0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY3J5cHRtb2R1bGUuYwpAQCAtNDUsNyArNDUsNyBAQAogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGNyeXB0bW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICAiY3J5cHQiLAorICAgICJfY3J5cHQiLAogICAgIE5VTEwsCiAgICAgLTEsCiAgICAgY3J5cHRfbWV0aG9kcywKQEAgLTU2LDcgKzU2LDcgQEAKIH07CiAKIFB5TU9ESU5JVF9GVU5DCi1QeUluaXRfY3J5cHQodm9pZCkKK1B5SW5pdF9fY3J5cHQodm9pZCkKIHsKICAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZjcnlwdG1vZHVsZSk7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jc3YuYyBiL01vZHVsZXMvX2Nzdi5jCmluZGV4IDZjNTY0ZDcuLjgzODA5OTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Nzdi5jCisrKyBiL01vZHVsZXMvX2Nzdi5jCkBAIC0xNiw5ICsxNiwzOSBAQAogI2RlZmluZSBJU19CQVNFU1RSSU5HKG8pIFwKICAgICBQeVVuaWNvZGVfQ2hlY2sobykKIAotc3RhdGljIFB5T2JqZWN0ICplcnJvcl9vYmo7ICAgICAvKiBDU1YgZXhjZXB0aW9uICovCi1zdGF0aWMgUHlPYmplY3QgKmRpYWxlY3RzOyAgICAgIC8qIERpYWxlY3QgcmVnaXN0cnkgKi8KLXN0YXRpYyBsb25nIGZpZWxkX2xpbWl0ID0gMTI4ICogMTAyNDsgICAvKiBtYXggcGFyc2VkIGZpZWxkIHNpemUgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdCAqZXJyb3Jfb2JqOyAgIC8qIENTViBleGNlcHRpb24gKi8KKyAgICBQeU9iamVjdCAqZGlhbGVjdHM7ICAgLyogRGlhbGVjdCByZWdpc3RyeSAqLworICAgIGxvbmcgZmllbGRfbGltaXQ7ICAgLyogbWF4IHBhcnNlZCBmaWVsZCBzaXplICovCit9IF9jc3ZzdGF0ZTsKKworI2RlZmluZSBfY3N2c3RhdGUobykgKChfY3N2c3RhdGUgKilQeU1vZHVsZV9HZXRTdGF0ZShvKSkKKworc3RhdGljIGludAorX2Nzdl9jbGVhcihQeU9iamVjdCAqbSkKK3sKKyAgICBQeV9DTEVBUihfY3N2c3RhdGUobSktPmVycm9yX29iaik7CisgICAgUHlfQ0xFQVIoX2NzdnN0YXRlKG0pLT5kaWFsZWN0cyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK19jc3ZfdHJhdmVyc2UoUHlPYmplY3QgKm0sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKF9jc3ZzdGF0ZShtKS0+ZXJyb3Jfb2JqKTsKKyAgICBQeV9WSVNJVChfY3N2c3RhdGUobSktPmRpYWxlY3RzKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK19jc3ZfZnJlZSh2b2lkICptKQoreworICAgX2Nzdl9jbGVhcigoUHlPYmplY3QgKiltKTsKK30KKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfY3N2bW9kdWxlOworCisjZGVmaW5lIF9jc3ZzdGF0ZV9nbG9iYWwgKChfY3N2c3RhdGUgKilQeU1vZHVsZV9HZXRTdGF0ZShQeVN0YXRlX0ZpbmRNb2R1bGUoJl9jc3Ztb2R1bGUpKSkKIAogdHlwZWRlZiBlbnVtIHsKICAgICBTVEFSVF9SRUNPUkQsIFNUQVJUX0ZJRUxELCBFU0NBUEVEX0NIQVIsIElOX0ZJRUxELApAQCAtNDcsOSArNzcsOSBAQAogICAgIFB5T2JqZWN0X0hFQUQKIAogICAgIGludCBkb3VibGVxdW90ZTsgICAgICAgICAgICAvKiBpcyAiIHJlcHJlc2VudGVkIGJ5ICIiPyAqLwotICAgIFB5X1VOSUNPREUgZGVsaW1pdGVyOyAgICAgICAvKiBmaWVsZCBzZXBhcmF0b3IgKi8KLSAgICBQeV9VTklDT0RFIHF1b3RlY2hhcjsgICAgICAgLyogcXVvdGUgY2hhcmFjdGVyICovCi0gICAgUHlfVU5JQ09ERSBlc2NhcGVjaGFyOyAgICAgIC8qIGVzY2FwZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0IGRlbGltaXRlcjsgICAgICAgLyogZmllbGQgc2VwYXJhdG9yICovCisgICAgUHlfVUNTNCBxdW90ZWNoYXI7ICAgICAgIC8qIHF1b3RlIGNoYXJhY3RlciAqLworICAgIFB5X1VDUzQgZXNjYXBlY2hhcjsgICAgICAvKiBlc2NhcGUgY2hhcmFjdGVyICovCiAgICAgaW50IHNraXBpbml0aWFsc3BhY2U7ICAgICAgIC8qIGlnbm9yZSBzcGFjZXMgZm9sbG93aW5nIGRlbGltaXRlcj8gKi8KICAgICBQeU9iamVjdCAqbGluZXRlcm1pbmF0b3I7IC8qIHN0cmluZyB0byB3cml0ZSBiZXR3ZWVuIHJlY29yZHMgKi8KICAgICBpbnQgcXVvdGluZzsgICAgICAgICAgICAgICAgLyogc3R5bGUgb2YgcXVvdGluZyB0byB3cml0ZSAqLwpAQCAtNjgsNyArOTgsNyBAQAogCiAgICAgUHlPYmplY3QgKmZpZWxkczsgICAgICAgICAgIC8qIGZpZWxkIGxpc3QgZm9yIGN1cnJlbnQgcmVjb3JkICovCiAgICAgUGFyc2VyU3RhdGUgc3RhdGU7ICAgICAgICAgIC8qIGN1cnJlbnQgQ1NWIHBhcnNlIHN0YXRlICovCi0gICAgUHlfVU5JQ09ERSAqZmllbGQ7ICAgICAgICAgIC8qIGJ1aWxkIGN1cnJlbnQgZmllbGQgaW4gaGVyZSAqLworICAgIFB5X1VDUzQgKmZpZWxkOyAgICAgICAgICAgICAvKiB0ZW1wb3JhcnkgYnVmZmVyICovCiAgICAgUHlfc3NpemVfdCBmaWVsZF9zaXplOyAgICAgIC8qIHNpemUgb2YgYWxsb2NhdGVkIGJ1ZmZlciAqLwogICAgIFB5X3NzaXplX3QgZmllbGRfbGVuOyAgICAgICAvKiBsZW5ndGggb2YgY3VycmVudCBmaWVsZCAqLwogICAgIGludCBudW1lcmljX2ZpZWxkOyAgICAgICAgICAvKiB0cmVhdCBmaWVsZCBhcyBudW1lcmljICovCkBAIC04Niw3ICsxMTYsNyBAQAogCiAgICAgRGlhbGVjdE9iaiAqZGlhbGVjdDsgICAgLyogcGFyc2luZyBkaWFsZWN0ICovCiAKLSAgICBQeV9VTklDT0RFICpyZWM7ICAgICAgICAgICAgLyogYnVmZmVyIGZvciBwYXJzZXIuam9pbiAqLworICAgIFB5X1VDUzQgKnJlYzsgICAgICAgICAgICAvKiBidWZmZXIgZm9yIHBhcnNlci5qb2luICovCiAgICAgUHlfc3NpemVfdCByZWNfc2l6ZTsgICAgICAgIC8qIHNpemUgb2YgYWxsb2NhdGVkIHJlY29yZCAqLwogICAgIFB5X3NzaXplX3QgcmVjX2xlbjsgICAgICAgICAvKiBsZW5ndGggb2YgcmVjb3JkICovCiAgICAgaW50IG51bV9maWVsZHM7ICAgICAgICAgICAgIC8qIG51bWJlciBvZiBmaWVsZHMgaW4gcmVjb3JkICovCkBAIC0xMDMsMTAgKzEzMywxMCBAQAogewogICAgIFB5T2JqZWN0ICpkaWFsZWN0X29iajsKIAotICAgIGRpYWxlY3Rfb2JqID0gUHlEaWN0X0dldEl0ZW0oZGlhbGVjdHMsIG5hbWVfb2JqKTsKKyAgICBkaWFsZWN0X29iaiA9IFB5RGljdF9HZXRJdGVtKF9jc3ZzdGF0ZV9nbG9iYWwtPmRpYWxlY3RzLCBuYW1lX29iaik7CiAgICAgaWYgKGRpYWxlY3Rfb2JqID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgInVua25vd24gZGlhbGVjdCIpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgInVua25vd24gZGlhbGVjdCIpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihkaWFsZWN0X29iaik7CkBAIC0xMjEsMTQgKzE1MSwxNCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X251bGxjaGFyX2FzX05vbmUoUHlfVU5JQ09ERSBjKQorZ2V0X251bGxjaGFyX2FzX05vbmUoUHlfVUNTNCBjKQogewogICAgIGlmIChjID09ICdcMCcpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKChQeV9VTklDT0RFICopJmMsIDEpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGMpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjAzLDI1ICsyMzMsMjMgQEAKIH0KIAogc3RhdGljIGludAotX3NldF9jaGFyKGNvbnN0IGNoYXIgKm5hbWUsIFB5X1VOSUNPREUgKnRhcmdldCwgUHlPYmplY3QgKnNyYywgUHlfVU5JQ09ERSBkZmx0KQorX3NldF9jaGFyKGNvbnN0IGNoYXIgKm5hbWUsIFB5X1VDUzQgKnRhcmdldCwgUHlPYmplY3QgKnNyYywgUHlfVUNTNCBkZmx0KQogewogICAgIGlmIChzcmMgPT0gTlVMTCkKICAgICAgICAgKnRhcmdldCA9IGRmbHQ7CiAgICAgZWxzZSB7CiAgICAgICAgICp0YXJnZXQgPSAnXDAnOwogICAgICAgICBpZiAoc3JjICE9IFB5X05vbmUpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKmJ1ZjsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwotICAgICAgICAgICAgYnVmID0gUHlVbmljb2RlX0FzVW5pY29kZShzcmMpOwotICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dldFNpemUoc3JjKTsKLSAgICAgICAgICAgIGlmIChidWYgPT0gTlVMTCB8fCBsZW4gPiAxKSB7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKHNyYyk7CisgICAgICAgICAgICBpZiAobGVuID4gMSkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJcIiVzXCIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobGVuID4gMCkKLSAgICAgICAgICAgICAgICAqdGFyZ2V0ID0gYnVmWzBdOworICAgICAgICAgICAgICAgICp0YXJnZXQgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNyYywgMCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC01MDIsNyArNTMwLDggQEAKIHsKICAgICBQeU9iamVjdCAqZmllbGQ7CiAKLSAgICBmaWVsZCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzZWxmLT5maWVsZCwgc2VsZi0+ZmllbGRfbGVuKTsKKyAgICBmaWVsZCA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIHNlbGYtPmZpZWxkLCBzZWxmLT5maWVsZF9sZW4pOwogICAgIGlmIChmaWVsZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgc2VsZi0+ZmllbGRfbGVuID0gMDsKQEAgLTUxMSwxMSArNTQwLDkgQEAKIAogICAgICAgICBzZWxmLT5udW1lcmljX2ZpZWxkID0gMDsKICAgICAgICAgdG1wID0gUHlOdW1iZXJfRmxvYXQoZmllbGQpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBmaWVsZCA9IHRtcDsKICAgICB9CiAgICAgUHlMaXN0X0FwcGVuZChzZWxmLT5maWVsZHMsIGZpZWxkKTsKQEAgLTUzMCwxNiArNTU3LDE2IEBACiAgICAgICAgIHNlbGYtPmZpZWxkX3NpemUgPSA0MDk2OwogICAgICAgICBpZiAoc2VsZi0+ZmllbGQgIT0gTlVMTCkKICAgICAgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+ZmllbGQpOwotICAgICAgICBzZWxmLT5maWVsZCA9IFB5TWVtX05ldyhQeV9VTklDT0RFLCBzZWxmLT5maWVsZF9zaXplKTsKKyAgICAgICAgc2VsZi0+ZmllbGQgPSBQeU1lbV9OZXcoUHlfVUNTNCwgc2VsZi0+ZmllbGRfc2l6ZSk7CiAgICAgfQogICAgIGVsc2UgeworICAgICAgICBQeV9VQ1M0ICpmaWVsZCA9IHNlbGYtPmZpZWxkOwogICAgICAgICBpZiAoc2VsZi0+ZmllbGRfc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gMikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPmZpZWxkX3NpemUgKj0gMjsKLSAgICAgICAgc2VsZi0+ZmllbGQgPSBQeU1lbV9SZXNpemUoc2VsZi0+ZmllbGQsIFB5X1VOSUNPREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmZpZWxkX3NpemUpOworICAgICAgICBzZWxmLT5maWVsZCA9IFB5TWVtX1Jlc2l6ZShmaWVsZCwgUHlfVUNTNCwgc2VsZi0+ZmllbGRfc2l6ZSk7CiAgICAgfQogICAgIGlmIChzZWxmLT5maWVsZCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CkBAIC01NDksMTEgKzU3NiwxMSBAQAogfQogCiBzdGF0aWMgaW50Ci1wYXJzZV9hZGRfY2hhcihSZWFkZXJPYmogKnNlbGYsIFB5X1VOSUNPREUgYykKK3BhcnNlX2FkZF9jaGFyKFJlYWRlck9iaiAqc2VsZiwgUHlfVUNTNCBjKQogewotICAgIGlmIChzZWxmLT5maWVsZF9sZW4gPj0gZmllbGRfbGltaXQpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgImZpZWxkIGxhcmdlciB0aGFuIGZpZWxkIGxpbWl0ICglbGQpIiwKLSAgICAgICAgICAgICAgICAgICAgIGZpZWxkX2xpbWl0KTsKKyAgICBpZiAoc2VsZi0+ZmllbGRfbGVuID49IF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0KSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICJmaWVsZCBsYXJnZXIgdGhhbiBmaWVsZCBsaW1pdCAoJWxkKSIsCisgICAgICAgICAgICAgICAgICAgICBfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKHNlbGYtPmZpZWxkX2xlbiA9PSBzZWxmLT5maWVsZF9zaXplICYmICFwYXJzZV9ncm93X2J1ZmYoc2VsZikpCkBAIC01NjMsNyArNTkwLDcgQEAKIH0KIAogc3RhdGljIGludAotcGFyc2VfcHJvY2Vzc19jaGFyKFJlYWRlck9iaiAqc2VsZiwgUHlfVU5JQ09ERSBjKQorcGFyc2VfcHJvY2Vzc19jaGFyKFJlYWRlck9iaiAqc2VsZiwgUHlfVUNTNCBjKQogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwogCkBAIC03MTAsNyArNzM3LDcgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIGlsbGVnYWwgKi8KLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICInJWMnIGV4cGVjdGVkIGFmdGVyICclYyciLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgIiclYycgZXhwZWN0ZWQgYWZ0ZXIgJyVjJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbGVjdC0+ZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxlY3QtPnF1b3RlY2hhcik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC03MjMsNyArNzUwLDcgQEAKICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXDAnKQogICAgICAgICAgICAgc2VsZi0+c3RhdGUgPSBTVEFSVF9SRUNPUkQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgIm5ldy1saW5lIGNoYXJhY3RlciBzZWVuIGluIHVucXVvdGVkIGZpZWxkIC0gZG8geW91IG5lZWQgdG8gb3BlbiB0aGUgZmlsZSBpbiB1bml2ZXJzYWwtbmV3bGluZSBtb2RlPyIpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgIm5ldy1saW5lIGNoYXJhY3RlciBzZWVuIGluIHVucXVvdGVkIGZpZWxkIC0gZG8geW91IG5lZWQgdG8gb3BlbiB0aGUgZmlsZSBpbiB1bml2ZXJzYWwtbmV3bGluZSBtb2RlPyIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNzQ4LDEwICs3NzUsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBSZWFkZXJfaXRlcm5leHQoUmVhZGVyT2JqICpzZWxmKQogewotICAgIFB5T2JqZWN0ICpsaW5lb2JqOwogICAgIFB5T2JqZWN0ICpmaWVsZHMgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKmxpbmUsIGM7Ci0gICAgUHlfc3NpemVfdCBsaW5lbGVuOworICAgIFB5X1VDUzQgYzsKKyAgICBQeV9zc2l6ZV90IHBvcywgbGluZWxlbjsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5T2JqZWN0ICpsaW5lb2JqOwogCiAgICAgaWYgKHBhcnNlX3Jlc2V0KHNlbGYpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NjAsMTIgKzc4OSwxMiBAQAogICAgICAgICBpZiAobGluZW9iaiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBFbmQgb2YgaW5wdXQgT1IgZXhjZXB0aW9uICovCiAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkgJiYgc2VsZi0+ZmllbGRfbGVuICE9IDApCi0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmV3bGluZSBpbnNpZGUgc3RyaW5nIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhsaW5lb2JqKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhdG9yIHNob3VsZCByZXR1cm4gc3RyaW5ncywgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiKGRpZCB5b3Ugb3BlbiB0aGUgZmlsZSBpbiB0ZXh0IG1vZGU/KSIsCkBAIC03NzUsMTcgKzgwNCwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgKytzZWxmLT5saW5lX251bTsKLSAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGUobGluZW9iaik7Ci0gICAgICAgIGxpbmVsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZShsaW5lb2JqKTsKLSAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCB8fCBsaW5lbGVuIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGxpbmVvYmopOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGxpbmVvYmopOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEobGluZW9iaik7CisgICAgICAgIHBvcyA9IDA7CisgICAgICAgIGxpbmVsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChsaW5lb2JqKTsKICAgICAgICAgd2hpbGUgKGxpbmVsZW4tLSkgewotICAgICAgICAgICAgYyA9ICpsaW5lKys7CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKICAgICAgICAgICAgIGlmIChjID09ICdcMCcpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGluZW9iaik7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSBjb250YWlucyBOVUxMIGJ5dGUiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgIH0KQEAgLTc5Myw2ICs4MjAsNyBAQAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lb2JqKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvcysrOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihsaW5lb2JqKTsKICAgICAgICAgaWYgKHBhcnNlX3Byb2Nlc3NfY2hhcihzZWxmLCAwKSA8IDApCkBAIC05NDksMTMgKzk3NywxMyBAQAogICogcmVjb3JkIGxlbmd0aC4KICAqLwogc3RhdGljIFB5X3NzaXplX3QKLWpvaW5fYXBwZW5kX2RhdGEoV3JpdGVyT2JqICpzZWxmLCBQeV9VTklDT0RFICpmaWVsZCwgaW50IHF1b3RlX2VtcHR5LAotICAgICAgICAgICAgICAgICBpbnQgKnF1b3RlZCwgaW50IGNvcHlfcGhhc2UpCitqb2luX2FwcGVuZF9kYXRhKFdyaXRlck9iaiAqc2VsZiwgdW5zaWduZWQgaW50IGZpZWxkX2tpbmQsIHZvaWQgKmZpZWxkX2RhdGEsCisgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZmllbGRfbGVuLCBpbnQgcXVvdGVfZW1wdHksIGludCAqcXVvdGVkLAorICAgICAgICAgICAgICAgICBpbnQgY29weV9waGFzZSkKIHsKICAgICBEaWFsZWN0T2JqICpkaWFsZWN0ID0gc2VsZi0+ZGlhbGVjdDsKICAgICBpbnQgaTsKICAgICBQeV9zc2l6ZV90IHJlY19sZW47Ci0gICAgUHlfVU5JQ09ERSAqbGluZXRlcm07CiAKICNkZWZpbmUgQUREQ0goYykgXAogICAgIGRvIHtcCkBAIC05NjQsMTAgKzk5Miw2IEBACiAgICAgICAgIHJlY19sZW4rKztcCiAgICAgfSB3aGlsZSgwKQogCi0gICAgbGluZXRlcm0gPSBQeVVuaWNvZGVfQXNVbmljb2RlKGRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKLSAgICBpZiAobGluZXRlcm0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgcmVjX2xlbiA9IHNlbGYtPnJlY19sZW47CiAKICAgICAvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZmllbGQgd2UgbmVlZCBhIGZpZWxkIHNlcGFyYXRvciAqLwpAQCAtOTgwLDE3ICsxMDA0LDE2IEBACiAKICAgICAvKiBDb3B5L2NvdW50IGZpZWxkIGRhdGEgKi8KICAgICAvKiBJZiBmaWVsZCBpcyBudWxsIGp1c3QgcGFzcyBvdmVyICovCi0gICAgZm9yIChpID0gMDsgZmllbGQ7IGkrKykgewotICAgICAgICBQeV9VTklDT0RFIGMgPSBmaWVsZFtpXTsKKyAgICBmb3IgKGkgPSAwOyBmaWVsZF9kYXRhICYmIChpIDwgZmllbGRfbGVuKTsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGkpOwogICAgICAgICBpbnQgd2FudF9lc2NhcGUgPSAwOwogCi0gICAgICAgIGlmIChjID09ICdcMCcpCi0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICBpZiAoYyA9PSBkaWFsZWN0LT5kZWxpbWl0ZXIgfHwKICAgICAgICAgICAgIGMgPT0gZGlhbGVjdC0+ZXNjYXBlY2hhciB8fAogICAgICAgICAgICAgYyA9PSBkaWFsZWN0LT5xdW90ZWNoYXIgIHx8Ci0gICAgICAgICAgICBQeV9VTklDT0RFX3N0cmNocihsaW5ldGVybSwgYykpIHsKKyAgICAgICAgICAgIFB5VW5pY29kZV9GaW5kQ2hhcigKKyAgICAgICAgICAgICAgICBkaWFsZWN0LT5saW5ldGVybWluYXRvciwgYywgMCwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChkaWFsZWN0LT5saW5ldGVybWluYXRvciksIDEpID49IDApIHsKICAgICAgICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpCiAgICAgICAgICAgICAgICAgd2FudF9lc2NhcGUgPSAxOwogICAgICAgICAgICAgZWxzZSB7CkBAIC0xMDA1LDcgKzEwMjgsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHdhbnRfZXNjYXBlKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFkaWFsZWN0LT5lc2NhcGVjaGFyKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZCB0byBlc2NhcGUsIGJ1dCBubyBlc2NhcGVjaGFyIHNldCIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTAyMSw3ICsxMDQ0LDcgQEAKICAgICAgKi8KICAgICBpZiAoaSA9PSAwICYmIHF1b3RlX2VtcHR5KSB7CiAgICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAogICAgICAgICAgICAgICAgICJzaW5nbGUgZW1wdHkgZmllbGQgcmVjb3JkIG11c3QgYmUgcXVvdGVkIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTEwNTMsMTQgKzEwNzYsMTMgQEAKICAgICAgICAgICAgIHNlbGYtPnJlY19zaXplID0gKHJlY19sZW4gLyBNRU1fSU5DUiArIDEpICogTUVNX0lOQ1I7CiAgICAgICAgICAgICBpZiAoc2VsZi0+cmVjICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5yZWMpOwotICAgICAgICAgICAgc2VsZi0+cmVjID0gUHlNZW1fTmV3KFB5X1VOSUNPREUsIHNlbGYtPnJlY19zaXplKTsKKyAgICAgICAgICAgIHNlbGYtPnJlYyA9IFB5TWVtX05ldyhQeV9VQ1M0LCBzZWxmLT5yZWNfc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFKiBvbGRfcmVjID0gc2VsZi0+cmVjOworICAgICAgICAgICAgUHlfVUNTNCogb2xkX3JlYyA9IHNlbGYtPnJlYzsKIAogICAgICAgICAgICAgc2VsZi0+cmVjX3NpemUgPSAocmVjX2xlbiAvIE1FTV9JTkNSICsgMSkgKiBNRU1fSU5DUjsKLSAgICAgICAgICAgIHNlbGYtPnJlYyA9IFB5TWVtX1Jlc2l6ZShzZWxmLT5yZWMsIFB5X1VOSUNPREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cmVjX3NpemUpOworICAgICAgICAgICAgc2VsZi0+cmVjID0gUHlNZW1fUmVzaXplKG9sZF9yZWMsIFB5X1VDUzQsIHNlbGYtPnJlY19zaXplKTsKICAgICAgICAgICAgIGlmIChzZWxmLT5yZWMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKG9sZF9yZWMpOwogICAgICAgICB9CkBAIC0xMDczLDExICsxMDk1LDIwIEBACiB9CiAKIHN0YXRpYyBpbnQKLWpvaW5fYXBwZW5kKFdyaXRlck9iaiAqc2VsZiwgUHlfVU5JQ09ERSAqZmllbGQsIGludCAqcXVvdGVkLCBpbnQgcXVvdGVfZW1wdHkpCitqb2luX2FwcGVuZChXcml0ZXJPYmogKnNlbGYsIFB5T2JqZWN0ICpmaWVsZCwgaW50ICpxdW90ZWQsIGludCBxdW90ZV9lbXB0eSkKIHsKKyAgICB1bnNpZ25lZCBpbnQgZmllbGRfa2luZCA9IC0xOworICAgIHZvaWQgKmZpZWxkX2RhdGEgPSBOVUxMOworICAgIFB5X3NzaXplX3QgZmllbGRfbGVuID0gMDsKICAgICBQeV9zc2l6ZV90IHJlY19sZW47CiAKLSAgICByZWNfbGVuID0gam9pbl9hcHBlbmRfZGF0YShzZWxmLCBmaWVsZCwgcXVvdGVfZW1wdHksIHF1b3RlZCwgMCk7CisgICAgaWYgKGZpZWxkICE9IE5VTEwpIHsKKyAgICAgICAgZmllbGRfa2luZCA9IFB5VW5pY29kZV9LSU5EKGZpZWxkKTsKKyAgICAgICAgZmllbGRfZGF0YSA9IFB5VW5pY29kZV9EQVRBKGZpZWxkKTsKKyAgICAgICAgZmllbGRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoZmllbGQpOworICAgIH0KKyAgICByZWNfbGVuID0gam9pbl9hcHBlbmRfZGF0YShzZWxmLCBmaWVsZF9raW5kLCBmaWVsZF9kYXRhLCBmaWVsZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfZW1wdHksIHF1b3RlZCwgMCk7CiAgICAgaWYgKHJlY19sZW4gPCAwKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTA4NSw3ICsxMTE2LDggQEAKICAgICBpZiAoIWpvaW5fY2hlY2tfcmVjX3NpemUoc2VsZiwgcmVjX2xlbikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgc2VsZi0+cmVjX2xlbiA9IGpvaW5fYXBwZW5kX2RhdGEoc2VsZiwgZmllbGQsIHF1b3RlX2VtcHR5LCBxdW90ZWQsIDEpOworICAgIHNlbGYtPnJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGZpZWxkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9lbXB0eSwgcXVvdGVkLCAxKTsKICAgICBzZWxmLT5udW1fZmllbGRzKys7CiAKICAgICByZXR1cm4gMTsKQEAgLTEwOTQsMTAgKzExMjYsMTEgQEAKIHN0YXRpYyBpbnQKIGpvaW5fYXBwZW5kX2xpbmV0ZXJtaW5hdG9yKFdyaXRlck9iaiAqc2VsZikKIHsKLSAgICBQeV9zc2l6ZV90IHRlcm1pbmF0b3JfbGVuOwotICAgIFB5X1VOSUNPREUgKnRlcm1pbmF0b3I7CisgICAgUHlfc3NpemVfdCB0ZXJtaW5hdG9yX2xlbiwgaTsKKyAgICB1bnNpZ25lZCBpbnQgdGVybV9raW5kOworICAgIHZvaWQgKnRlcm1fZGF0YTsKIAotICAgIHRlcm1pbmF0b3JfbGVuID0gUHlVbmljb2RlX0dldFNpemUoc2VsZi0+ZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOworICAgIHRlcm1pbmF0b3JfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZi0+ZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOwogICAgIGlmICh0ZXJtaW5hdG9yX2xlbiA9PSAtMSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTExMDUsMTEgKzExMzgsMTAgQEAKICAgICBpZiAoIWpvaW5fY2hlY2tfcmVjX3NpemUoc2VsZiwgc2VsZi0+cmVjX2xlbiArIHRlcm1pbmF0b3JfbGVuKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB0ZXJtaW5hdG9yID0gUHlVbmljb2RlX0FzVW5pY29kZShzZWxmLT5kaWFsZWN0LT5saW5ldGVybWluYXRvcik7Ci0gICAgaWYgKHRlcm1pbmF0b3IgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbWVtbW92ZShzZWxmLT5yZWMgKyBzZWxmLT5yZWNfbGVuLCB0ZXJtaW5hdG9yLAotICAgICAgICBzaXplb2YoUHlfVU5JQ09ERSkqdGVybWluYXRvcl9sZW4pOworICAgIHRlcm1fa2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYtPmRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKKyAgICB0ZXJtX2RhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmLT5kaWFsZWN0LT5saW5ldGVybWluYXRvcik7CisgICAgZm9yIChpID0gMDsgaSA8IHRlcm1pbmF0b3JfbGVuOyBpKyspCisgICAgICAgIHNlbGYtPnJlY1tzZWxmLT5yZWNfbGVuICsgaV0gPSBQeVVuaWNvZGVfUkVBRCh0ZXJtX2tpbmQsIHRlcm1fZGF0YSwgaSk7CiAgICAgc2VsZi0+cmVjX2xlbiArPSB0ZXJtaW5hdG9yX2xlbjsKIAogICAgIHJldHVybiAxOwpAQCAtMTEyNiw5ICsxMTU4LDEwIEBACiB7CiAgICAgRGlhbGVjdE9iaiAqZGlhbGVjdCA9IHNlbGYtPmRpYWxlY3Q7CiAgICAgUHlfc3NpemVfdCBsZW4sIGk7CisgICAgUHlPYmplY3QgKmxpbmUsICpyZXN1bHQ7CiAKICAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICJzZXF1ZW5jZSBleHBlY3RlZCIpOworICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgInNlcXVlbmNlIGV4cGVjdGVkIik7CiAKICAgICBsZW4gPSBQeVNlcXVlbmNlX0xlbmd0aChzZXEpOwogICAgIGlmIChsZW4gPCAwKQpAQCAtMTE1OSwxNCArMTE5MiwxMSBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhmaWVsZCkpIHsKLSAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShmaWVsZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBmaWVsZCwgJnF1b3RlZCwgbGVuID09IDEpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChmaWVsZCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3RlZCwgbGVuID09IDEpOworICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgTlVMTCwgJnF1b3RlZCwgbGVuID09IDEpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTExNzYsOSArMTIwNiw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoZmllbGQpOwogICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBzdHIsICZxdW90ZWQsIGxlbiA9PSAxKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICB9CiAgICAgICAgIGlmICghYXBwZW5kX29rKQpAQCAtMTE5MCw5ICsxMjE4LDEzIEBACiAgICAgaWYgKCFqb2luX2FwcGVuZF9saW5ldGVybWluYXRvcihzZWxmKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPndyaXRlbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIodSMpIiwgc2VsZi0+cmVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cmVjX2xlbik7CisgICAgbGluZSA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgc2VsZi0+cmVjLCBzZWxmLT5yZWNfbGVuKTsKKyAgICBpZiAobGluZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNlbGYtPndyaXRlbGluZSwgbGluZSwgTlVMTCk7CisgICAgUHlfREVDUkVGKGxpbmUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5RG9jX1NUUlZBUihjc3Zfd3JpdGVyb3dzX2RvYywKQEAgLTEzMTYsNiArMTM0OCw3IEBACiB7CiAgICAgUHlPYmplY3QgKiBvdXRwdXRfZmlsZSwgKiBkaWFsZWN0ID0gTlVMTDsKICAgICBXcml0ZXJPYmogKiBzZWxmID0gUHlPYmplY3RfR0NfTmV3KFdyaXRlck9iaiwgJldyaXRlcl9UeXBlKTsKKyAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CiAKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMzMiw3ICsxMzY1LDcgQEAKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgc2VsZi0+d3JpdGVsaW5lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvdXRwdXRfZmlsZSwgIndyaXRlIik7CisgICAgc2VsZi0+d3JpdGVsaW5lID0gX1B5T2JqZWN0X0dldEF0dHJJZChvdXRwdXRfZmlsZSwgJlB5SWRfd3JpdGUpOwogICAgIGlmIChzZWxmLT53cml0ZWxpbmUgPT0gTlVMTCB8fCAhUHlDYWxsYWJsZV9DaGVjayhzZWxmLT53cml0ZWxpbmUpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgMSBtdXN0IGhhdmUgYSBcIndyaXRlXCIgbWV0aG9kIik7CkBAIC0xMzU0LDcgKzEzODcsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGNzdl9saXN0X2RpYWxlY3RzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBQeURpY3RfS2V5cyhkaWFsZWN0cyk7CisgICAgcmV0dXJuIFB5RGljdF9LZXlzKF9jc3ZzdGF0ZV9nbG9iYWwtPmRpYWxlY3RzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzNzMsNyArMTQwNiw3IEBACiAgICAgZGlhbGVjdCA9IF9jYWxsX2RpYWxlY3QoZGlhbGVjdF9vYmosIGt3YXJncyk7CiAgICAgaWYgKGRpYWxlY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtKGRpYWxlY3RzLCBuYW1lX29iaiwgZGlhbGVjdCkgPCAwKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKF9jc3ZzdGF0ZV9nbG9iYWwtPmRpYWxlY3RzLCBuYW1lX29iaiwgZGlhbGVjdCkgPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihkaWFsZWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTM4NSw4ICsxNDE4LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjc3ZfdW5yZWdpc3Rlcl9kaWFsZWN0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lX29iaikKIHsKLSAgICBpZiAoUHlEaWN0X0RlbEl0ZW0oZGlhbGVjdHMsIG5hbWVfb2JqKSA8IDApCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLCAidW5rbm93biBkaWFsZWN0Iik7CisgICAgaWYgKFB5RGljdF9EZWxJdGVtKF9jc3ZzdGF0ZV9nbG9iYWwtPmRpYWxlY3RzLCBuYW1lX29iaikgPCAwKQorICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgInVua25vd24gZGlhbGVjdCIpOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KQEAgLTE0MDEsNyArMTQzNCw3IEBACiBjc3ZfZmllbGRfc2l6ZV9saW1pdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqbmV3X2xpbWl0ID0gTlVMTDsKLSAgICBsb25nIG9sZF9saW1pdCA9IGZpZWxkX2xpbWl0OworICAgIGxvbmcgb2xkX2xpbWl0ID0gX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQ7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJmaWVsZF9zaXplX2xpbWl0IiwgMCwgMSwgJm5ld19saW1pdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQxMSw5ICsxNDQ0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibGltaXQgbXVzdCBiZSBhbiBpbnRlZ2VyIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBmaWVsZF9saW1pdCA9IFB5TG9uZ19Bc0xvbmcobmV3X2xpbWl0KTsKLSAgICAgICAgaWYgKGZpZWxkX2xpbWl0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgIGZpZWxkX2xpbWl0ID0gb2xkX2xpbWl0OworICAgICAgICBfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdCA9IFB5TG9uZ19Bc0xvbmcobmV3X2xpbWl0KTsKKyAgICAgICAgaWYgKF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0ID0gb2xkX2xpbWl0OwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTUyLDE3ICsxNTg1LDE2IEBACiAgICAgeyBOVUxMLCBOVUxMIH0KIH07CiAKLQogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfY3N2bW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKICAgICAiX2NzdiIsCiAgICAgY3N2X21vZHVsZV9kb2MsCi0gICAgLTEsCisgICAgc2l6ZW9mKF9jc3ZzdGF0ZSksCiAgICAgY3N2X21ldGhvZHMsCiAgICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTAorICAgIF9jc3ZfdHJhdmVyc2UsCisgICAgX2Nzdl9jbGVhciwKKyAgICBfY3N2X2ZyZWUKIH07CiAKIFB5TU9ESU5JVF9GVU5DCkBAIC0xNTkwLDExICsxNjIyLDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1PRFVMRV9WRVJTSU9OKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICAvKiBTZXQgdGhlIGZpZWxkIGxpbWl0ICovCisgICAgX2NzdnN0YXRlKG1vZHVsZSktPmZpZWxkX2xpbWl0ID0gMTI4ICogMTAyNDsKKyAgICAvKiBEbyBJIHN0aWxsIG5lZWQgdG8gYWRkIHRoaXMgdmFyIHRvIHRoZSBNb2R1bGUgRGljdD8gKi8KKwogICAgIC8qIEFkZCBfZGlhbGVjdHMgZGljdGlvbmFyeSAqLwotICAgIGRpYWxlY3RzID0gUHlEaWN0X05ldygpOwotICAgIGlmIChkaWFsZWN0cyA9PSBOVUxMKQorICAgIF9jc3ZzdGF0ZShtb2R1bGUpLT5kaWFsZWN0cyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoX2NzdnN0YXRlKG1vZHVsZSktPmRpYWxlY3RzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiX2RpYWxlY3RzIiwgZGlhbGVjdHMpKQorICAgIFB5X0lOQ1JFRihfY3N2c3RhdGUobW9kdWxlKS0+ZGlhbGVjdHMpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiX2RpYWxlY3RzIiwgX2NzdnN0YXRlKG1vZHVsZSktPmRpYWxlY3RzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBBZGQgcXVvdGUgc3R5bGVzIGludG8gZGljdGlvbmFyeSAqLwpAQCAtMTYxMCw5ICsxNjQ3LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogQWRkIHRoZSBDU1YgZXhjZXB0aW9uIG9iamVjdCB0byB0aGUgbW9kdWxlLiAqLwotICAgIGVycm9yX29iaiA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX2Nzdi5FcnJvciIsIE5VTEwsIE5VTEwpOwotICAgIGlmIChlcnJvcl9vYmogPT0gTlVMTCkKKyAgICBfY3N2c3RhdGUobW9kdWxlKS0+ZXJyb3Jfb2JqID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJfY3N2LkVycm9yIiwgTlVMTCwgTlVMTCk7CisgICAgaWYgKF9jc3ZzdGF0ZShtb2R1bGUpLT5lcnJvcl9vYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIkVycm9yIiwgZXJyb3Jfb2JqKTsKKyAgICBQeV9JTkNSRUYoX2NzdnN0YXRlKG1vZHVsZSktPmVycm9yX29iaik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIkVycm9yIiwgX2NzdnN0YXRlKG1vZHVsZSktPmVycm9yX29iaik7CiAgICAgcmV0dXJuIG1vZHVsZTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCmluZGV4IDhiZTU5NTguLjc1MTYzMDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwpAQCAtMTE0Miw2ICsxMTQyLDggQEAKIFdDaGFyQXJyYXlfc2V0X3ZhbHVlKENEYXRhT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQgPSAwOworICAgIFB5X1VOSUNPREUgKndzdHI7CisgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLApAQCAtMTE1NSw3ICsxMTU3LDExIEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9IGVsc2UKICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBpZiAoKHVuc2lnbmVkKVB5VW5pY29kZV9HRVRfU0laRSh2YWx1ZSkgPiBzZWxmLT5iX3NpemUvc2l6ZW9mKHdjaGFyX3QpKSB7CisKKyAgICB3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodmFsdWUsICZsZW4pOworICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoKHVuc2lnbmVkKWxlbiA+IHNlbGYtPmJfc2l6ZS9zaXplb2Yod2NoYXJfdCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIHRvbyBsb25nIik7CiAgICAgICAgIHJlc3VsdCA9IC0xOwpAQCAtMTg0MywxMSArMTg0OSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHByb3RvKSkgewotICAgICAgICBQeU9iamVjdCAqdiA9IF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhwcm90bywgTlVMTCk7Ci0gICAgICAgIGlmICghdikKKyAgICAgICAgcHJvdG9fc3RyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUocHJvdG8sICZwcm90b19sZW4pOworICAgICAgICBpZiAoIXByb3RvX3N0cikKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIHByb3RvX3N0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwotICAgICAgICBwcm90b19sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHYpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAiY2xhc3MgbXVzdCBkZWZpbmUgYSAnX3R5cGVfJyBzdHJpbmcgYXR0cmlidXRlIik7CkBAIC0zNjgxLDggKzM2ODUsMTAgQEAKICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odHVwLCBpbmRleCwgdik7CiAgICAgICAgICAgICBpbmRleCsrOwogICAgICAgICB9IGVsc2UgaWYgKGJpdCAmIG91dG1hc2spIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fY3R5cGVzX2Zyb21fb3V0cGFyYW1fXyk7CisKICAgICAgICAgICAgIHYgPSBQeVR1cGxlX0dFVF9JVEVNKGNhbGxhcmdzLCBpKTsKLSAgICAgICAgICAgIHYgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHYsICJfX2N0eXBlc19mcm9tX291dHBhcmFtX18iLCBOVUxMKTsKKyAgICAgICAgICAgIHYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHYsICZQeUlkX19fY3R5cGVzX2Zyb21fb3V0cGFyYW1fXywgTlVMTCk7CiAgICAgICAgICAgICBpZiAodiA9PSBOVUxMIHx8IG51bXJldHZhbHMgPT0gMSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYXJncyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHY7CkBAIC00MjQ5LDcgKzQyNTUsNyBAQAogICAgICAgICAgICAgd2NoYXJfdCAqZGVzdDsKIAogICAgICAgICAgICAgaWYgKHNsaWNlbGVuIDw9IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICAgICAgICAgIGlmIChzdGVwID09IDEpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihwdHIgKyBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZWxlbik7CkBAIC00NTk5LDM4ICs0NjA1LDIwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogU2ltcGxlX3JlcHIoQ0RhdGFPYmplY3QgKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKnZhbCwgKm5hbWUsICphcmdzLCAqcmVzdWx0OwotICAgIHN0YXRpYyBQeU9iamVjdCAqZm9ybWF0OworICAgIFB5T2JqZWN0ICp2YWwsICpyZXN1bHQ7CiAKICAgICBpZiAoUHlfVFlQRShzZWxmKS0+dHBfYmFzZSAhPSAmU2ltcGxlX1R5cGUpIHsKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXMgb2JqZWN0IGF0ICVwPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIHNlbGYpOwogICAgIH0KIAotICAgIGlmIChmb3JtYXQgPT0gTlVMTCkgewotICAgICAgICBmb3JtYXQgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiJXMoJXIpIik7Ci0gICAgICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIHZhbCA9IFNpbXBsZV9nZXRfdmFsdWUoc2VsZik7CiAgICAgaWYgKHZhbCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWwpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG5hbWUsIHZhbCk7Ci0gICAgUHlfREVDUkVGKG5hbWUpOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglUikiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIHZhbCk7CiAgICAgUHlfREVDUkVGKHZhbCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ5NDIsNyArNDkzMCw3IEBACiAgICAgICAgICAgICB3Y2hhcl90ICpkZXN0OwogCiAgICAgICAgICAgICBpZiAobGVuIDw9IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICAgICAgICAgIGlmIChzdGVwID09IDEpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihwdHIgKyBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwppbmRleCAxZjNjMWMwLi5kZDQ0MWY1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwpAQCAtNjU4LDEzICs2NTgsNiBAQAogCiAjaWZkZWYgQ1RZUEVTX1VOSUNPREUKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKLSNpZiBQeV9VTklDT0RFX1NJWkUgPT0gU0laRU9GX1dDSEFSX1QKLSAgICAgICAgcGEtPmZmaV90eXBlID0gJmZmaV90eXBlX3BvaW50ZXI7Ci0gICAgICAgIHBhLT52YWx1ZS5wID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKTsKLSAgICAgICAgUHlfSU5DUkVGKG9iaik7Ci0gICAgICAgIHBhLT5rZWVwID0gb2JqOwotICAgICAgICByZXR1cm4gMDsKLSNlbHNlCiAgICAgICAgIHBhLT5mZmlfdHlwZSA9ICZmZmlfdHlwZV9wb2ludGVyOwogICAgICAgICBwYS0+dmFsdWUucCA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKG9iaiwgTlVMTCk7CiAgICAgICAgIGlmIChwYS0+dmFsdWUucCA9PSBOVUxMKQpAQCAtNjc1LDcgKzY2OCw2IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7Ci0jZW5kaWYKICAgICB9CiAjZW5kaWYKIApAQCAtOTUyLDkgKzk0NCw5IEBACiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIFB5VW5pY29kZV9BcHBlbmRBbmREZWwoJnMsIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI/Pz8iKSk7Ci0gICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKyAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOwogICAgIFB5RXJyX1NldE9iamVjdChleGNfY2xhc3MsIHMpOwogZXJyb3I6CiAgICAgUHlfWERFQ1JFRih0cCk7CkBAIC0xNjk1LDEzICsxNjg3LDE1IEBACiAgICAgUHlPYmplY3QgKnN0YXRlOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUihfX25ld19fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldHN0YXRlX18pOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZ0eXAsICZzdGF0ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodHlwLCAiX19uZXdfXyIsICJPIiwgdHlwKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR5cCwgJlB5SWRfX19uZXdfXywgIk8iLCB0eXApOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyZXN1bHQsICJfX3NldHN0YXRlX18iLCAiTyIsIHN0YXRlKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJlc3VsdCwgJlB5SWRfX19zZXRzdGF0ZV9fLCAiTyIsIHN0YXRlKTsKICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCmluZGV4IDlkYTg5MGQuLmY2ZjhlNDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKQEAgLTksNyArOSw2IEBACiAKICNkZWZpbmUgQ1RZUEVTX0NGSUVMRF9DQVBTVUxFX05BTUVfUFlNRU0gIl9jdHlwZXMvY2ZpZWxkLmMgcHltZW0iCiAKLSNpZiBQeV9VTklDT0RFX1NJWkUgIT0gU0laRU9GX1dDSEFSX1QKIHN0YXRpYyB2b2lkIHB5bWVtX2Rlc3RydWN0b3IoUHlPYmplY3QgKnB0cikKIHsKICAgICB2b2lkICpwID0gUHlDYXBzdWxlX0dldFBvaW50ZXIocHRyLCBDVFlQRVNfQ0ZJRUxEX0NBUFNVTEVfTkFNRV9QWU1FTSk7CkBAIC0xNyw3ICsxNiw2IEBACiAgICAgICAgIFB5TWVtX0ZyZWUocCk7CiAgICAgfQogfQotI2VuZGlmCiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTUyLDcgKzUwLDcgQEAKIHsKICAgICBDRmllbGRPYmplY3QgKnNlbGY7CiAgICAgUHlPYmplY3QgKnByb3RvOwotICAgIFB5X3NzaXplX3Qgc2l6ZSwgYWxpZ24sIGxlbmd0aDsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGFsaWduOwogICAgIFNFVEZVTkMgc2V0ZnVuYyA9IE5VTEw7CiAgICAgR0VURlVOQyBnZXRmdW5jID0gTlVMTDsKICAgICBTdGdEaWN0T2JqZWN0ICpkaWN0OwpAQCAtMTA2LDcgKzEwNCw2IEBACiAgICAgfQogCiAgICAgc2l6ZSA9IGRpY3QtPnNpemU7Ci0gICAgbGVuZ3RoID0gZGljdC0+bGVuZ3RoOwogICAgIHByb3RvID0gZGVzYzsKIAogICAgIC8qICBGaWVsZCBkZXNjcmlwdG9ycyBmb3IgJ2NfY2hhciAqIG4nIGFyZSBiZSBzY3BlY2lhbCBjYXNlZCB0bwpAQCAtMTIxNCwzNyArMTIxMSwzMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFVfZ2V0KHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgUHlfVU5JQ09ERSAqcDsKKyAgICB3Y2hhcl90ICpwOwogCiAgICAgc2l6ZSAvPSBzaXplb2Yod2NoYXJfdCk7IC8qIHdlIGNvdW50IGNoYXJhY3RlciB1bml0cyBoZXJlLCBub3QgYnl0ZXMgKi8KIAotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoKHdjaGFyX3QgKilwdHIsIHNpemUpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICAvKiBXZSBuZWVkICdyZXN1bHQnIHRvIGJlIGFibGUgdG8gY291bnQgdGhlIGNoYXJhY3RlcnMgd2l0aCB3Y3NsZW4sCiAgICAgICAgc2luY2UgcHRyIG1heSBub3QgYmUgTlVMIHRlcm1pbmF0ZWQuICBJZiB0aGUgbGVuZ3RoIGlzIHNtYWxsZXIgKGlmCiAgICAgICAgaXQgd2FzIGFjdHVhbGx5IE5VTCB0ZXJtaW5hdGVkLCB3ZSBjb25zdHJ1Y3QgYSBuZXcgb25lIGFuZCB0aHJvdwogICAgICAgIGF3YXkgdGhlIHJlc3VsdC4KICAgICAqLwogICAgIC8qIGNob3Agb2ZmIGF0IHRoZSBmaXJzdCBOVUwgY2hhcmFjdGVyLCBpZiBhbnkuICovCi0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgZm9yIChsZW4gPSAwOyBsZW4gPCBzaXplOyArK2xlbikKKyAgICBwID0gKHdjaGFyX3QqKXB0cjsKKyAgICBmb3IgKGxlbiA9IDA7IGxlbiA8IHNpemU7ICsrbGVuKSB7CiAgICAgICAgIGlmICghcFtsZW5dKQogICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICBpZiAobGVuIDwgc2l6ZSkgewotICAgICAgICBQeU9iamVjdCAqb2IgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKCh3Y2hhcl90ICopcHRyLCBsZW4pOwotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIG9iOwogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoKHdjaGFyX3QgKilwdHIsIGxlbik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBVX3NldCh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBsZW5ndGgpCiB7CisgICAgUHlfVU5JQ09ERSAqd3N0cjsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKICAgICAvKiBJdCdzIGVhc2llciB0byBjYWxjdWxhdGUgaW4gY2hhcmFjdGVycyB0aGFuIGluIGJ5dGVzICovCkBAIC0xMjU3LDcgKzEyNDcsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh2YWx1ZSk7CisKKyAgICB3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodmFsdWUsICZzaXplKTsKKyAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA+IGxlbmd0aCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG9vIGxvbmcgKCV6ZCwgbWF4aW11bSBsZW5ndGggJXpkKSIsCkBAIC0xMzc3LDYgKzEzNzAsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFpfc2V0KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7CisgICAgUHlPYmplY3QgKmtlZXA7CisgICAgd2NoYXJfdCAqYnVmZmVyOworCiAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpIHsKICAgICAgICAgKih3Y2hhcl90ICoqKXB0ciA9IE5VTEw7CiAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CkBAIC0xMzk2LDM3ICsxMzkyLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZSBzdHJpbmcgb3IgaW50ZWdlciBhZGRyZXNzIGV4cGVjdGVkIGluc3RlYWQgb2YgJXMgaW5zdGFuY2UiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWUtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9IGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSNpZiBQeV9VTklDT0RFX1NJWkUgPT0gU0laRU9GX1dDSEFSX1QKLSAgICAvKiBXZSBjYW4gY29weSBkaXJlY3RseS4gIEhtLCBhcmUgdW5pY29kZSBvYmplY3RzIGFsd2F5cyBOVUwKLSAgICAgICB0ZXJtaW5hdGVkIGluIFB5dGhvbiwgaW50ZXJuYWxseT8KLSAgICAgKi8KLSAgICAqKHdjaGFyX3QgKiopcHRyID0gKHdjaGFyX3QgKikgUHlVbmljb2RlX0FTX1VOSUNPREUodmFsdWUpOwotICAgIHJldHVybiB2YWx1ZTsKLSNlbHNlCi0gICAgewotICAgICAgICAvKiBXZSBtdXN0IGNyZWF0ZSBhIHdjaGFyX3QqIGJ1ZmZlciBmcm9tIHRoZSB1bmljb2RlIG9iamVjdCwKLSAgICAgICAgICAgYW5kIGtlZXAgaXQgYWxpdmUgKi8KLSAgICAgICAgUHlPYmplY3QgKmtlZXA7Ci0gICAgICAgIHdjaGFyX3QgKmJ1ZmZlcjsKLQotICAgICAgICBidWZmZXIgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh2YWx1ZSwgTlVMTCk7Ci0gICAgICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAga2VlcCA9IFB5Q2Fwc3VsZV9OZXcoYnVmZmVyLCBDVFlQRVNfQ0ZJRUxEX0NBUFNVTEVfTkFNRV9QWU1FTSwgcHltZW1fZGVzdHJ1Y3Rvcik7Ci0gICAgICAgIGlmICgha2VlcCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmZmVyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgICood2NoYXJfdCAqKilwdHIgPSAod2NoYXJfdCAqKWJ1ZmZlcjsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIGtlZXA7CiAgICAgfQotI2VuZGlmCisKKyAgICAvKiBXZSBtdXN0IGNyZWF0ZSBhIHdjaGFyX3QqIGJ1ZmZlciBmcm9tIHRoZSB1bmljb2RlIG9iamVjdCwKKyAgICAgICBhbmQga2VlcCBpdCBhbGl2ZSAqLworICAgIGJ1ZmZlciA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHZhbHVlLCBOVUxMKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2VlcCA9IFB5Q2Fwc3VsZV9OZXcoYnVmZmVyLCBDVFlQRVNfQ0ZJRUxEX0NBUFNVTEVfTkFNRV9QWU1FTSwgcHltZW1fZGVzdHJ1Y3Rvcik7CisgICAgaWYgKCFrZWVwKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgICood2NoYXJfdCAqKilwdHIgPSBidWZmZXI7CisgICAgcmV0dXJuIGtlZXA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNDcxLDEzICsxNDUwLDE2IEBACiAKICAgICAvKiBjcmVhdGUgYSBCU1RSIGZyb20gdmFsdWUgKi8KICAgICBpZiAodmFsdWUpIHsKLSAgICAgICAgUHlfc3NpemVfdCBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHZhbHVlKTsKKyAgICAgICAgd2NoYXJfdCogd3ZhbHVlOworICAgICAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgICAgIHd2YWx1ZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHZhbHVlLCAmc2l6ZSk7CisgICAgICAgIGlmICh3dmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoKHVuc2lnbmVkKSBzaXplICE9IHNpemUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiU3RyaW5nIHRvbyBsb25nIGZvciBCU1RSIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4oUHlVbmljb2RlX0FTX1VOSUNPREUodmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkKXNpemUpOworICAgICAgICBic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4od3ZhbHVlLCAodW5zaWduZWQpc2l6ZSk7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJzdHIgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS5kaWZmIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS5kaWZmCmluZGV4IDdhZmEwZWQuLjM1N2QwZWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkuZGlmZgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpLmRpZmYKQEAgLTEsNzQgKzEsMTQgQEAKLWRpZmYgLXVyTiBsaWJmZmkub3JpZy9jb25maWd1cmUgbGliZmZpL2NvbmZpZ3VyZQotLS0tIGxpYmZmaS5vcmlnL2NvbmZpZ3VyZQkyMDEwLTAzLTE5IDE4OjI5OjU0LjU4ODQ5OTg2MiArMDEwMAotKysrIGxpYmZmaS9jb25maWd1cmUJMjAxMC0wMy0xOSAxODozMjowOS4xMTM0OTk0NzkgKzAxMDAKLUBAIC0xMTIyOCw2ICsxMTIyOCw5IEBACi0gICBpPzg2LSotc29sYXJpczIuMVswLTldKikKLSAJVEFSR0VUPVg4Nl82NDsgVEFSR0VURElSPXg4NgotIAk7OwotKyAgaSo4Ni0qLW50by1xbngqKQotKyAgICAgICAgVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgotKyAgICAgICAgOzsKLSAgIGk/ODYtKi0qKQotIAlUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2Ci0gCTs7Ci1AQCAtMTEyNDUsMTIgKzExMjQ4LDEyIEBACi0gCTs7Ci0gCi0gICBtaXBzLXNnaS1pcml4NS4qIHwgbWlwcy1zZ2ktaXJpeDYuKikKLS0JVEFSR0VUPU1JUFM7IFRBUkdFVERJUj1taXBzCi0rCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCi0gCTs7Ci0gICBtaXBzKi0qLWxpbnV4KikKLSAJIyBTdXBwb3J0IDEyOC1iaXQgbG9uZyBkb3VibGUgZm9yIE5ld0FCSS4KLSAJSEFWRV9MT05HX0RPVUJMRT0nZGVmaW5lZChfX21pcHM2NCknCi0tCVRBUkdFVD1NSVBTOyBUQVJHRVRESVI9bWlwcwotKwlUQVJHRVQ9TUlQU19JUklYOyBUQVJHRVRESVI9bWlwcwotIAk7OwotIAotICAgcG93ZXJwYyotKi1saW51eCogfCBwb3dlcnBjLSotc3lzdiopCi1AQCAtMTEzMDcsNyArMTEzMTAsNyBAQAotICAgYXNfZm5fZXJyb3IgIlwibGliZmZpIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gJGhvc3QuXCIiICIkTElORU5PIiA1Ci0gZmkKLSAKLS0gaWYgdGVzdCB4JFRBUkdFVCA9IHhNSVBTOyB0aGVuCi0rIGlmIGV4cHIgeCRUQVJHRVQgOiAneE1JUFMnID4gL2Rldi9udWxsOyB0aGVuCi0gICBNSVBTX1RSVUU9Ci0gICBNSVBTX0ZBTFNFPScjJwotIGVsc2UKLUBAIC0xMjQyMiw2ICsxMjQyNSwxMiBAQAotIGFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBpbmNsdWRlL01ha2VmaWxlIGluY2x1ZGUvZmZpLmggTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlIG1hbi9NYWtlZmlsZSBsaWJmZmkucGMiCi0gCi0gCi0rYWNfY29uZmlnX2xpbmtzPSIkYWNfY29uZmlnX2xpbmtzIGluY2x1ZGUvZmZpX2NvbW1vbi5oOmluY2x1ZGUvZmZpX2NvbW1vbi5oIgotKwotKwotK2FjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBmZmljb25maWcucHkiCi0rCi0rCi0gY2F0ID5jb25mY2FjaGUgPDxcX0FDRU9GCi0gIyBUaGlzIGZpbGUgaXMgYSBzaGVsbCBzY3JpcHQgdGhhdCBjYWNoZXMgdGhlIHJlc3VsdHMgb2YgY29uZmlndXJlCi0gIyB0ZXN0cyBydW4gb24gdGhpcyBzeXN0ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gY29uZmlndXJlCi1AQCAtMTM1MjEsNiArMTM1MzAsOCBAQAotICAgICAidGVzdHN1aXRlL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHRlc3RzdWl0ZS9NYWtlZmlsZSIgOzsKLSAgICAgIm1hbi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBtYW4vTWFrZWZpbGUiIDs7Ci0gICAgICJsaWJmZmkucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbGliZmZpLnBjIiA7OwotKyAgICAiaW5jbHVkZS9mZmlfY29tbW9uLmgiKSBDT05GSUdfTElOS1M9IiRDT05GSUdfTElOS1MgaW5jbHVkZS9mZmlfY29tbW9uLmg6aW5jbHVkZS9mZmlfY29tbW9uLmgiIDs7Ci0rICAgICJmZmljb25maWcucHkiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZmZpY29uZmlnLnB5IiA7OwotIAotICAgKikgYXNfZm5fZXJyb3IgImludmFsaWQgYXJndW1lbnQ6IFxgJGFjX2NvbmZpZ190YXJnZXQnIiAiJExJTkVOTyIgNTs7Ci0gICBlc2FjCi1kaWZmIC11ck4gbGliZmZpLm9yaWcvY29uZmlndXJlLmFjIGxpYmZmaS9jb25maWd1cmUuYWMKLS0tLSBsaWJmZmkub3JpZy9jb25maWd1cmUuYWMJMjAxMC0wMy0xOSAxODoyNzo0NC45ODg0OTg1ODUgKzAxMDAKLSsrKyBsaWJmZmkvY29uZmlndXJlLmFjCTIwMTAtMDMtMTkgMTg6MzE6MjkuMjUyNTA1MTc4ICswMTAwCistLS0gbGliZmZpLm9yaWcvY29uZmlndXJlLmFjCTIwMTItMDQtMTIgMDU6MTA6NTEuMDAwMDAwMDAwICswMjAwCisrKysgbGliZmZpL2NvbmZpZ3VyZS5hYwkyMDEyLTA2LTI2IDE1OjQyOjQyLjQ3NzQ5ODkzOCArMDIwMAogQEAgLTEsNCArMSw3IEBACiAgZG5sIFByb2Nlc3MgdGhpcyB3aXRoIGF1dG9jb25mIHRvIGNyZWF0ZSBjb25maWd1cmUKICsjCiArIyBmaWxlIGZyb20gbGliZmZpIC0gc2xpZ2h0bHkgcGF0Y2hlZCBmb3IgY3R5cGVzCiArIwogIAotIEFDX1BSRVJFUSgyLjYzKQorIEFDX1BSRVJFUSgyLjY4KQogIAotQEAgLTkxLDYgKzk0LDkgQEAKK0BAIC0xMTQsNiArMTE3LDkgQEAKICAgIGk/ODYtKi1zb2xhcmlzMi4xW1swLTldXSopCiAgCVRBUkdFVD1YODZfNjQ7IFRBUkdFVERJUj14ODYKICAJOzsKQEAgLTc2LDI0ICsxNiwyNCBAQAogKyAgICAgICAgVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgogKyAgICAgICAgOzsKICAgIGk/ODYtKi0qKQotIAlUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2CisgCVRBUkdFVD1YODZfNjQ7IFRBUkdFVERJUj14ODYKICAJOzsKLUBAIC0xMDgsMTIgKzExNCwxMiBAQAorQEAgLTEzMSwxMiArMTM3LDEyIEBACiAgCTs7CiAgCi0gICBtaXBzLXNnaS1pcml4NS4qIHwgbWlwcy1zZ2ktaXJpeDYuKikKKyAgIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qIHwgbWlwcyotKi1ydGVtcyopCiAtCVRBUkdFVD1NSVBTOyBUQVJHRVRESVI9bWlwcwogKwlUQVJHRVQ9TUlQU19JUklYOyBUQVJHRVRESVI9bWlwcwogIAk7OwotICAgbWlwcyotKi1saW51eCopCisgICBtaXBzKi0qLWxpbnV4KiB8IG1pcHMqLSotb3BlbmJzZCopCiAgCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlIGZvciBOZXdBQkkuCiAgCUhBVkVfTE9OR19ET1VCTEU9J2RlZmluZWQoX19taXBzNjQpJwogLQlUQVJHRVQ9TUlQUzsgVEFSR0VURElSPW1pcHMKICsJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKICAJOzsKICAKLSAgIHBvd2VycGMqLSotbGludXgqIHwgcG93ZXJwYy0qLXN5c3YqKQotQEAgLTE3MCw3ICsxNzYsNyBAQAorICAgbW94aWUtKi0qKQorQEAgLTIxMiw3ICsyMTgsNyBAQAogICAgQUNfTVNHX0VSUk9SKFsibGliZmZpIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gJGhvc3QuIl0pCiAgZmkKICAKQEAgLTEwMiw3ICs0Miw3IEBACiAgQU1fQ09ORElUSU9OQUwoU1BBUkMsIHRlc3QgeCRUQVJHRVQgPSB4U1BBUkMpCiAgQU1fQ09ORElUSU9OQUwoWDg2LCB0ZXN0IHgkVEFSR0VUID0geFg4NikKICBBTV9DT05ESVRJT05BTChYODZfRlJFRUJTRCwgdGVzdCB4JFRBUkdFVCA9IHhYODZfRlJFRUJTRCkKLUBAIC00MDEsNCArNDA3LDggQEAKK0BAIC00OTksNCArNTA1LDggQEAKICAKICBBQ19DT05GSUdfRklMRVMoaW5jbHVkZS9NYWtlZmlsZSBpbmNsdWRlL2ZmaS5oIE1ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSBtYW4vTWFrZWZpbGUgbGliZmZpLnBjKQogIApAQCAtMTExLDMgKzUxLDcwIEBACiArQUNfQ09ORklHX0ZJTEVTKGZmaWNvbmZpZy5weSkKICsKICBBQ19PVVRQVVQKKy0tLSBsaWJmZmktMy4wLjExL2ZmaWNvbmZpZy5weS5pbgkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIGxpYmZmaS9mZmljb25maWcucHkuaW4JMjAxMi0wMy0xNSAwMTowNDoyNy4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsMzUgQEAKKytmZmlfc291cmNlcyA9ICIiIgorK3NyYy9wcmVwX2NpZi5jCisrc3JjL2Nsb3N1cmVzLmMKKytzcmMvZGxtYWxsb2MuYworKyIiIi5zcGxpdCgpCisrCisrZmZpX3BsYXRmb3JtcyA9IHsKKysgICAgJ01JUFNfSVJJWCc6IFsnc3JjL21pcHMvZmZpLmMnLCAnc3JjL21pcHMvbzMyLlMnLCAnc3JjL21pcHMvbjMyLlMnXSwKKysgICAgJ01JUFNfTElOVVgnOiBbJ3NyYy9taXBzL2ZmaS5jJywgJ3NyYy9taXBzL28zMi5TJ10sCisrICAgICdYODYnOiBbJ3NyYy94ODYvZmZpLmMnLCAnc3JjL3g4Ni9zeXN2LlMnXSwKKysgICAgJ1g4Nl9GUkVFQlNEJzogWydzcmMveDg2L2ZmaS5jJywgJ3NyYy94ODYvZnJlZWJzZC5TJ10sCisrICAgICdYODZfV0lOMzInOiBbJ3NyYy94ODYvZmZpLmMnLCAnc3JjL3g4Ni93aW4zMi5TJ10sCisrICAgICdTUEFSQyc6IFsnc3JjL3NwYXJjL2ZmaS5jJywgJ3NyYy9zcGFyYy92OC5TJywgJ3NyYy9zcGFyYy92OS5TJ10sCisrICAgICdBTFBIQSc6IFsnc3JjL2FscGhhL2ZmaS5jJywgJ3NyYy9hbHBoYS9vc2YuUyddLAorKyAgICAnSUE2NCc6IFsnc3JjL2lhNjQvZmZpLmMnLCAnc3JjL2lhNjQvdW5peC5TJ10sCisrICAgICdNMzJSJzogWydzcmMvbTMyci9zeXN2LlMnLCAnc3JjL20zMnIvZmZpLmMnXSwKKysgICAgJ002OEsnOiBbJ3NyYy9tNjhrL2ZmaS5jJywgJ3NyYy9tNjhrL3N5c3YuUyddLAorKyAgICAnUE9XRVJQQyc6IFsnc3JjL3Bvd2VycGMvZmZpLmMnLCAnc3JjL3Bvd2VycGMvc3lzdi5TJywgJ3NyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMnLCAnc3JjL3Bvd2VycGMvbGludXg2NC5TJywgJ3NyYy9wb3dlcnBjL2xpbnV4NjRfY2xvc3VyZS5TJ10sCisrICAgICdQT1dFUlBDX0FJWCc6IFsnc3JjL3Bvd2VycGMvZmZpLmMnLCAnc3JjL3Bvd2VycGMvYWl4LlMnLCAnc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUyddLAorKyAgICAnUE9XRVJQQ19GUkVFQlNEJzogWydzcmMvcG93ZXJwYy9mZmkuYycsICdzcmMvcG93ZXJwYy9zeXN2LlMnLCAnc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyddLAorKyAgICAnQVJNJzogWydzcmMvYXJtL3N5c3YuUycsICdzcmMvYXJtL2ZmaS5jJ10sCisrICAgICdMSUJGRklfQ1JJUyc6IFsnc3JjL2NyaXMvc3lzdi5TJywgJ3NyYy9jcmlzL2ZmaS5jJ10sCisrICAgICdGUlYnOiBbJ3NyYy9mcnYvZWFiaS5TJywgJ3NyYy9mcnYvZmZpLmMnXSwKKysgICAgJ1MzOTAnOiBbJ3NyYy9zMzkwL3N5c3YuUycsICdzcmMvczM5MC9mZmkuYyddLAorKyAgICAnWDg2XzY0JzogWydzcmMveDg2L2ZmaTY0LmMnLCAnc3JjL3g4Ni91bml4NjQuUycsICdzcmMveDg2L2ZmaS5jJywgJ3NyYy94ODYvc3lzdi5TJ10sCisrICAgICdTSCc6IFsnc3JjL3NoL3N5c3YuUycsICdzcmMvc2gvZmZpLmMnXSwKKysgICAgJ1NINjQnOiBbJ3NyYy9zaDY0L3N5c3YuUycsICdzcmMvc2g2NC9mZmkuYyddLAorKyAgICAnUEEnOiBbJ3NyYy9wYS9saW51eC5TJywgJ3NyYy9wYS9mZmkuYyddLAorKyAgICAnUEFfTElOVVgnOiBbJ3NyYy9wYS9saW51eC5TJywgJ3NyYy9wYS9mZmkuYyddLAorKyAgICAnUEFfSFBVWCc6IFsnc3JjL3BhL2hwdXgzMi5TJywgJ3NyYy9wYS9mZmkuYyddLAorK30KKysKKytmZmlfc291cmNlcyArPSBmZmlfcGxhdGZvcm1zWydAVEFSR0VUQCddCisrCisrZmZpX2NmbGFncyA9ICdAQ0ZMQUdTQCcKK2RpZmYgLXVyTiBsaWJmZmktMy4wLjExL3NyYy9kbG1hbGxvYy5jIGxpYmZmaS9zcmMvZGxtYWxsb2MuYworLS0tIGxpYmZmaS0zLjAuMTEvc3JjL2RsbWFsbG9jLmMJMjAxMi0wNC0xMiAwNDo0NjowNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBsaWJmZmkvc3JjL2RsbWFsbG9jLmMJMjAxMi0wNi0yNiAxNToxNTo1OC45NDk1NDc0NjEgKzAyMDAKK0BAIC00NTcsNiArNDU3LDExIEBACisgI2RlZmluZSBMQUNLU19FUlJOT19ICisgI2RlZmluZSBNQUxMT0NfRkFJTFVSRV9BQ1RJT04KKyAjZGVmaW5lIE1NQVBfQ0xFQVJTIDAgLyogV0lOQ0UgYW5kIHNvbWUgb3RoZXJzIGFwcGFyZW50bHkgZG9uJ3QgY2xlYXIgKi8KKysjZWxpZiAhZGVmaW5lZCBfR05VX1NPVVJDRQorKy8qIG1yZW1hcCgpIG9uIExpbnV4IHJlcXVpcmVzIHRoaXMgdmlhIHN5cy9tbWFuLmgKKysgKiBTZWUgcm91bmR1cCBpc3N1ZSAxMDMwOQorKyAqLworKyNkZWZpbmUgX0dOVV9TT1VSQ0UgMQorICNlbmRpZiAgLyogV0lOMzIgKi8KKyAKKyAjaWZkZWYgX19PUzJfXworZGlmZiAtdXJOIGxpYmZmaS0zLjAuMTEvc3JjL3NwYXJjL3Y4LlMgbGliZmZpL3NyYy9zcGFyYy92OC5TCistLS0gbGliZmZpLTMuMC4xMS9zcmMvc3BhcmMvdjguUwkyMDEyLTA0LTEyIDA0OjQ2OjA2LjAwMDAwMDAwMCArMDIwMAorKysrIGxpYmZmaS9zcmMvc3BhcmMvdjguUwkyMDExLTAzLTEzIDA1OjE1OjA0LjAwMDAwMDAwMCArMDEwMAorQEAgLTIxMyw2ICsyMTMsMTAgQEAKKyAJYmUsYQlkb25lMQorIAkgbGRkCVslZnAtOF0sICVpMAorIAorKwljbXAJJW8wLCBGRklfVFlQRV9VSU5UNjQKKysJYmUsYQlkb25lMQorKwkgbGRkCVslZnAtOF0sICVpMAorKworIAlsZAlbJWZwLThdLCAlaTAKKyBkb25lMToKKyAJam1wCSVpNys4CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvQ2hhbmdlTG9nCmluZGV4IDAwYmE3ZWYuLmY0MTQ4YTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvQ2hhbmdlTG9nCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvQ2hhbmdlTG9nCkBAIC0xLDggKzEsOTExIEBACisyMDEyLTA0LTExICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogQWRkIG5ldyBzY3JpcHQuCisJKiBNYWtlZmlsZS5pbjogUmVidWlsdC4KKworMjAxMi0wNC0xMSAgWmFjaGFyeSBXYWxkb3dza2kgIDx6d2FsZG93c2tpQGdtYWlsLmNvbT4KKworCSogZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weSwKKwlsaWJmZmkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogU3VwcG9ydCBhIE1hYyBzdGF0aWMgbGlicmFyeSB2aWEKKwlYY29kZS4gU2V0IGlPUyBjb21wYXRpYmlsaXR5IHRvIDQuMC4gIE1vdmUgaU9TIHRyYW1wb2xpbmUKKwlnZW5lcmF0aW9uIGludG8gYW4gWGNvZGUgInJ1biBzY3JpcHQiIHBoYXNlLiAgSW5jbHVkZSBib3RoIGFzCisJWGNvZGUgYnVpbGQgc2NyaXB0cy4gRG9uJ3QgYWx3YXlzIHJlZ2VuZXJhdGUgY29uZmlnIGZpbGVzLgorCisyMDEyLTA0LTEwICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyAoZmZpX3ByZXBfYXJncyk6IEFkZCBtaXNzaW5nIHNlbWljb2xvbi4KKworMjAxMi0wNC0wNiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IEFkZCBuZXcgaU9TL3hjb2RlIGZpbGVzLgorCSogTWFrZWZpbGUuaW46IFJlYnVpbHQuCisKKzIwMTItMDQtMDYgIE1pa2UgTGV3aXMgIDxtaWtlbGlrZXNwaWVAZ21haWwuY29tPgorCisJKiBnZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5OiBOZXcgZmlsZS4KKwkqIGxpYmZmaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOZXcgZmlsZS4KKwkqIFJFQURNRTogVXBkYXRlIGluc3RydWN0aW9ucyBvbiBidWlsZGluZyBpT1MgYmluYXJ5LgorCSogYnVpbGQtaW9zLnNoOiBEZWxldGUuCisKKzIwMTItMDQtMDYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKworCSogbTQvbGlidG9vbC5tNCAoX0xUX0VOQUJMRV9MT0NLKTogU3VwcG9ydCB4MzIuCisKKzIwMTItMDQtMDYgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogc3JjL3g4Ni9mZmk2NC5jIChVSU5UMTI4KTogRGVmaW5lIGRpZmZlcmVudGx5IGZvciBJbnRlbCBhbmQgR05VCisJY29tcGlsZXJzLCB0aGVuIHVzZSBpdC4KKworMjAxMi0wNC0wNiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBBZGQgbWlzc2luZyB0ZXN0IGNhc2VzLgorCSogdGVzdHN1aXRlL01ha2VmaWxlLmluOiBSZWJ1aWx0LgorCisyMDEyLTA0LTA1ICBaYWNoYXJ5IFdhbGRvd3NraSAgPHp3YWxkb3dza2lAZ21haWwuY29tPgorCisJKiBpbmNsdWRlL2ZmaS5oLmluOiBBZGQgbWlzc2luZyB0cmFtcG9saW5lIHRhYmxlIGZpZWxkcy4KKwkqIHNyYy9hcm0vc3lzdi5TOiBGaXggRU5UUlkgZGVmaW5pdGlvbiwgYW5kIHdyYXAgc3ltYm9sIHJlZmVyZW5jZXMKKwlpbiBDTkFNRS4KKwkqIHNyYy94ODYvZmZpLmM6IFdyYXAgV2luZG93cyBzcGVjaWZpYyBjb2RlIGluIGlmZGVmcy4KKworMjAxMi0wNC0wMiAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jYWxsX3dpbjMyKTogU2lnbi96ZXJvIGV4dGVuZCB0aGUgcmV0dXJuCisJdmFsdWUgaW4gdGhlIEludGVsIHZlcnNpb24gYXMgaXMgYWxyZWFkeSBkb25lIGZvciB0aGUgQVQmVCB2ZXJzaW9uLgorCShmZmlfY2xvc3VyZV9TWVNWKTogTGlrZXdpc2UuCisJKGZmaV9jbG9zdXJlX3Jhd19TWVNWKTogTGlrZXdpc2UuCisJKGZmaV9jbG9zdXJlX1NURENBTEwpOiBMaWtld2lzZS4KKworMjAxMi0wMy0yOSAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCk6IFVuaWZ5IHRoZSBmcmFtZQorCWdlbmVyYXRpb24sIGZpeCB0aGUgRU5EUCBsYWJlbCBhbmQgcmVtb3ZlIHRoZSBzdXJwbHVzIHRoaXJkIGFyZworCWZyb20gdGhlICdsZWEnIGluc24uCisKKzIwMTItMDMtMjkgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2xvc3VyZV9yYXdfU1lTVik6IE1ha2UgdGhlICdzdHVicmF3JyBsYWJlbAorCXZpc2libGUgb3V0c2lkZSB0aGUgUFJPQywgc28gdGhhdCBmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwgY2FuIHNlZQorCWl0LiAgQWxzbyBpbnN0cnVjdCB0aGUgYXNzZW1ibGVyIHRvIGFkZCBhIGZyYW1lIHRvIHRoZSBmdW5jdGlvbi4KKworMjAxMi0wMy0yMyAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiBNYWtlZmlsZS5hbSAoQU1fQ1BQRkxBR1MpOiBBZGQgLURGRklfQlVJTERJTkcuCisJKiBNYWtlZmlsZS5pbjogUmVidWlsdC4KKwkqIGluY2x1ZGUvZmZpLmguaW4gW01TVkNdOiBBZGQgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGRlY29yYXRpb25zCisJdG8gYWxsIGRhdGEgZXhwb3J0cywgd2hlbiBjb21waWxpbmcgbGliZmZpIGNsaWVudHMgdXNpbmcgTVNWQy4KKworMjAxMi0wMy0yOSAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiBzcmMveDg2L2ZmaXRhcmdldC5oIChmZmlfYWJpKTogQWRkIG5ldyBBQkkgRkZJX01TX0NERUNMIGFuZAorCW1ha2UgaXQgdGhlIGRlZmF1bHQgZm9yIE1TVkMuCisJKEZGSV9UWVBFX01TX1NUUlVDVCk6IE5ldyBzdHJ1Y3R1cmUgcmV0dXJuIGNvbnZlbnRpb24uCisJKiBzcmMveDg2L2ZmaS5jIChmZmlfcHJlcF9jaWZfbWFjaGRlcCk6IFR3ZWFrIHRoZSBzdHJ1Y3R1cmUKKwlyZXR1cm4gY29udmVudGlvbiBmb3IgRkZJX01TX0NERUNMIHRvIGJlIEZGSV9UWVBFX01TX1NUUlVDVAorCWluc3RlYWQgb2YgYW4gb3JkaW5hcnkgRkZJX1RZUEVfU1RSVUNULgorCShmZmlfcHJlcF9hcmdzKTogVHJlYXQgRkZJX1RZUEVfTVNfU1RSVUNUIGFzIEZGSV9UWVBFX1NUUlVDVC4KKwkoZmZpX2NhbGwpOiBMaWtld2lzZS4KKwkoZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKTogTGlrZXdpc2UuCisJKGZmaV9yYXdfY2FsbCk6IExpa2V3aXNlLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IFRyZWF0IEZGSV9NU19DREVDTCBhcyBGRklfU1lTVi4KKwkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2Nsb3N1cmVfU1lTVik6IEZvciBGRklfVFlQRV9NU19TVFJVQ1QsCisJcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcmVzdWx0IHN0cnVjdHVyZSBpbiBlYXggYW5kIGRvbid0IHBvcAorCXRoYXQgcG9pbnRlciBmcm9tIHRoZSBzdGFjaywgdGhlIGNhbGxlciB0YWtlcyBjYXJlIG9mIGl0LgorCShmZmlfY2FsbF93aW4zMik6IFRyZWF0IEZGSV9UWVBFX01TX1NUUlVDVCBhcyBGRklfVFlQRV9TVFJVQ1QuCisJKGZmaV9jbG9zdXJlX3Jhd19TWVNWKTogTGlrZXdpc2UuCisKKzIwMTItMDMtMjIgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jIFtNU1ZDXTogQWRkIGlubGluZQorCWFzc2VtYmx5IHZlcnNpb24gd2l0aCBJbnRlbCBzeW50YXguCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jIFtNU1ZDXTogTGlrZXdpc2UuCisKKzIwMTItMDMtMjMgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2ZmaXRlc3QuaDogUHJvdmlkZSBhYnN0cmF0aW9uIG9mCisJX19hdHRyaWJ1dGVfXygoZmFzdGNhbGwpKSBpbiB0aGUgZm9ybSBvZiBhIF9fRkFTVENBTExfXworCWRlZmluZS4gIERlZmluZSBpdCB0byBfX2Zhc3RjYWxsIGZvciBNU1ZDLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMV93aW4zMi5jOiBVc2UgdGhlIGFib3ZlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYzogTGlrZXdpc2UuCisKKzIwMTItMDMtMjIgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogc3JjL3g4Ni93aW4zMi5TIFtNU1ZDXSAoZmZpX2Nsb3N1cmVfVEhJU0NBTEwpOiBSZW1vdmUgdGhlIG1hbnVhbAorCWZyYW1lIG9uIGZ1bmN0aW9uIGVudHJ5LCBNQVNNIGFkZHMgb25lIGF1dG9tYXRpY2FsbHkuCisKKzIwMTItMDMtMjIgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2ZmaXRlc3QuaCBbTVNWQ106IEFkZCBrbHVkZ2UgZm9yIG1pc3NpbmcKKwliaXRzIGluIHRoZSBNU1ZDIGhlYWRlcnMuCisKKzIwMTItMDMtMjIgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYzogQWRqdXN0IHRvIHRoZSBDODkgc3R5bGUKKwl3aXRoIG5vIGRlY2xhcmF0aW9ucyBhZnRlciBzdGF0ZW1lbnRzLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTlieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180XzFieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDEuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0My5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ni5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q3LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDguYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jOiBMaWtld2lzZS4KKworMjAxMi0wMy0wNiAgQ2h1bmctTGluIFRhbmcgIDxjbHRhbmdAY29kZXNvdXJjZXJ5LmNvbT4KKworCSogc3JjL2FybS9mZmkuYyAoZmZpX2NhbGwpOiBBZGQgX19BUk1fRUFCSV9fIGd1YXJkIGFyb3VuZCBjYWxsIHRvCisJZmZpX2NhbGxfVkZQKCkuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogQWRkIF9fQVJNX0VBQklfXyBndWFyZCBhcm91bmQgdXNlIG9mCisJZmZpX2Nsb3N1cmVfVkZQLgorCSogc3JjL2FybS9zeXN2LlM6IEFkZCBfX0FSTV9FQUJJX18gZ3VhcmQgYXJvdW5kIFZGUCBjb2RlLgorCisyMDEyLTAzLTIxICBQZXRlciBSb3NpbgkgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mbG9hdF92YS5jIChmbG9hdF92YV9mbik6IFVzZSAlZiB3aGVuCisJcHJpbnRpbmcgZG91YmxlcyAoJWxmIGlzIGZvciBsb25nIGRvdWJsZXMpLgorCShtYWluKTogTGlrZXdpc2UuCisKKzIwMTItMDMtMjEgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogdGVzdHN1aXRlL2xpYi90YXJnZXQtbGlicGF0aC5leHAgWyotKi1jeWd3aW4qLCAqLSotbWluZ3cqXQorCShzZXRfbGRfbGlicmFyeV9wYXRoX2Vudl92YXJzKTogQWRkIHRoZSBsaWJyYXJ5IHNlYXJjaCBkaXIgdG8gUEFUSAorCShhbmQgc2F2ZSBQQVRIIGZvciBsYXRlcikuCisJKHJlc3RvcmVfbGRfbGlicmFyeV9wYXRoX2Vudl92YXJzKTogUmVzdG9yZSBQQVRILgorCisyMDEyLTAzLTIwICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmMgKG1haW4pOiBSZW1vdmUgYnVnLgorCSogc3JjL3g4Ni93aW4zMi5TIFtNU1ZDXSAoZmZpX2Nsb3N1cmVfU1lTVik6IE1ha2UgdGhlICdzdHViJyBsYWJlbAorCXZpc2libGUgb3V0c2lkZSB0aGUgUFJPQywgc28gdGhhdCBmZmlfY2xvc3VyZV9USElTQ0FMTCBjYW4gc2VlIGl0LgorCisyMDEyLTAzLTE5ICBBbGFuIEhvdXJpaGFuZSAgPGFsYW5oQGZhaXJsaXRlLmNvLnVrPgorCisJKiBzcmMvbTY4ay9mZmkuYzogQWRkIE1JTlQgc3VwcG9ydC4KKwkqIHNyYy9tNjhrL3N5c3YuUzogRGl0dG8uCisKKzIwMTItMDMtMTkgIGNoZW5uYW0gIDxjc2l0QGF4d2F5LmNvbT4KKworCSogc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IEZpeCBBSVggY2xvc3VyZQorCXN1cHBvcnQuCisKKzIwMTItMDQtMDIgIFBldGVyIEJlcmduZXIgIDxiZXJnbmVyQHZuZXQuaWJtLmNvbT4KKworCSogc3JjL3Bvd2VycGMvZmZpLmMgKGZmaV9wcmVwX2FyZ3NfU1lTVik6IERlY2xhcmUgZG91YmxlX3RtcC4KKwlTaWxlbmNlIGNhc3RpbmcgcG9pbnRlciB0byBpbnRlZ2VyIG9mIGRpZmZlcmVudCBzaXplIHdhcm5pbmcuCisJRGVsZXRlIGdvdG8gdG8gcHJldmlvdXNseSBkZWxldGVkIGxhYmVsLgorCShmZmlfY2FsbCk6IFNpbGVuY2UgcG9zc2libHkgdW5kZWZpbmVkIHdhcm5pbmcuCisJKGZmaV9jbG9zdXJlX2hlbHBlcl9TWVNWKTogRGVjbGFyZSB2YXJpYWJsZSB0eXBlLgorCisyMDEyLTAzLTEzICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KKworCSogc3JjL3NoL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERvbid0IEFTU0VSVCBBQkkgdGVzdCwKKwlqdXN0IHJldHVybiBGRklfQkFEX0FCSSB3aGVuIHRoaW5ncyBhcmUgd3JvbmcuCisJKiBzcmMvc2g2NC9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEaXR0by4KKworMjAxMi0wMy0wOSAgRGF2aWQgRWRlbHNvaG4gIDxkamUuZ2NjQGdtYWlsLmNvbT4KKworCSogc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUyAoZmZpX2Nsb3N1cmVfQVNNKTogQWRqdXN0IGZvciBEYXJ3aW42NAorCWNoYW5nZSB0byByZXR1cm4gdmFsdWUgb2YgZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiBhbmQgbG9hZCB0eXBlCisJZnJvbSByZXR1cm4gdHlwZS4KKworMjAxMi0wMy0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBzcmMveDg2L2ZmaTY0LmMgKGZmaV9jYWxsKTogQ2FzdCB0aGUgcmV0dXJuIHZhbHVlIHRvIHVuc2lnbmVkCisJbG9uZy4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBDYXN0IHRvIDY0Yml0IGFkZHJlc3MgaW4gdHJhbXBvbGluZS4KKwkoZmZpX2Nsb3N1cmVfdW5peDY0X2lubmVyKTogQ2FzdCByZXR1cm4gcG9pbnRlciB0byB1bnNpZ25lZCBsb25nCisJZmlyc3QuCisKKwkqIHNyYy94ODYvZmZpdGFyZ2V0LmggKEZGSV9TSVpFT0ZfQVJHKTogRGVmaW5lZCB0byA4IGZvciB4MzIuCisJKGZmaV9hcmcpOiBTZXQgdG8gdW5zaWduZWQgbG9uZyBsb25nIGZvciB4MzIuCisJKGZmaV9zYXJnKTogU2V0IHRvIGxvbmcgbG9uZyBmb3IgeDMyLgorCisyMDEyLTAzLTAzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisKKwkqIHNyYy9wcmVwX2NpZi5jIChmZmlfcHJlcF9jaWZfY29yZSk6IFByb3Blcmx5IGNoZWNrIGJhZCBBQkkuCisKKzIwMTItMDMtMDMgIEFuZG9uaSBNb3JhbGVzIEFsYXN0cnVleSAgPHlsYXR1eWFAZ21haWwuY29tPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCAtbm8tdW5kZWZpbmVkIGZvciBib3RoIDMyLSBhbmQgNjQtYml0IHg4NgorCXdpbmRvd3MtbGlrZSBob3N0cy4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMi0wMi0yNyAgTWlrYWVsIFBldHRlcnNzb24gIDxtaWtwZUBpdC51dS5zZT4KKworCVBSIGxpYmZmaS81MjIyMworCSogTWFrZWZpbGUuYW0gKEZMQUdTX1RPX1BBU1MpOiBEZWZpbmUuCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKworMjAxMi0wMi0yMyAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBzcmMvKi9mZml0YXJnZXQuaDogRW5zdXJlIHRoYXQgdXNlcnMgbmV2ZXIgaW5jbHVkZSBmZml0YXJnZXQuaAorCWRpcmVjdGx5LgorCisyMDEyLTAyLTIzICBLYWkgVGlldHogIDxrdGlldHpAcmVkaGF0LmNvbT4KKworCVBSIGxpYmZmaS81MjIyMQorCSogc3JjL3g4Ni9mZmkuYyAoZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMKTogTmV3CisJcHJvdG90eXBlLgorCShmZmlfcHJlcF9yYXdfY2xvc3VyZV9sb2MpOiBVc2UgZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMIGZvcgorCXRoaXNjYWxsLWNvbnZlbnRpb24uCisJKGZmaV9yYXdfY2FsbCk6IFVzZSBmZmlfcHJlcF9hcmdzX3Jhdy4KKwkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMKTogQWRkCisJaW1wbGVtZW50YXRpb24gZm9yIHN0dWIuCisKKzIwMTItMDItMTAgIEthaSBUaWV0eiAgPGt0aWV0ekByZWRoYXQuY29tPgorCisJKiBjb25maWd1cmUuYWMgKEFNX0xUTERGTEFHUyk6IEFkZCAtbm8tdW5kZWZpbmUgZm9yIHg2NAorCXdpbmRvd3MgdGFyZ2V0LgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KKworMjAxMi0wMi0wOCAgS2FpIFRpZXR6ICA8a3RpZXR6QHJlZGhhdC5jb20+CisKKwkqIHNyYy9wcmVwX2NpZi5jIChmZmlfcHJlcF9jaWYpOiBBbGxvdyBmb3IgWDg2X1dJTjMyCisJYWxzbyBGRklfVEhJU0NBTEwuCisJKiBzcmMveDg2L2ZmaS5jIChmZmlfY2xvc3VyZV9USElTQ0FMTCk6IEFkZCBwcm90b3R5cGUuCisJKEZGSV9JTklUX1RSQU1QT0xJTkVfVEhJU0NBTEwpOiBOZXcgdHJhbXBvbGluZSBjb2RlLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IEFkZCBGRklfVEhJU0NBTEwgc3VwcG9ydC4KKwkqIHNyYy94ODYvZmZpdGFyZ2V0LmggKEZGSV9UUkFNUE9MSU5FX1NJWkUpOiBBZGp1c3Qgc2l6ZS4KKwkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2Nsb3N1cmVfVEhJU0NBTEwpOiBOZXcgY2xvc3VyZSBjb2RlCisJZm9yIHRoaXNjYWxsLWNhbGxpbmcgY29udmVudGlvbi4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3RoaXNjYWxsLmM6IE5ldyB0ZXN0LgorCisyMDEyLTAxLTI4ICBLYWkgVGlldHogIDxrdGlldHpAcmVkaGF0LmNvbT4KKworCSogc3JjL2xpYmZmaS9zcmMveDg2L2ZmaS5jIChmZmlfY2FsbF93aW4zMik6IEFkZCBuZXcKKwlhcmd1bWVudCB0byBwcm90b3R5cGUgZm9yIHNwZWNpZnkgY2FsbGluZy1jb252ZW50aW9uLgorCShmZmlfY2FsbCk6IEFkZCBzdXBwb3J0IGZvciBzdGRjYWxsL3RoaXNjYWxsIGNvbnZlbnRpb24uCisJKGZmaV9wcmVwX2FyZ3MpOiBMaWtld2lzZS4KKwkoZmZpX3Jhd19jYWxsKTogTGlrZXdpc2UuCisJKiBzcmMveDg2L2ZmaXRhcmdldC5oIChmZmlfYWJpKTogQWRkIEZGSV9USElTQ0FMTCBhbmQKKwlGRklfRkFTVENBTEwuCisJKiBzcmMveDg2L3dpbjMyLlMgKF9mZmlfY2FsbF93aW4zMik6IEFkZCBzdXBwb3J0IGZvcgorCWZhc3RjYWxsL3RoaXNjYWxsIGNhbGxpbmctY29udmVudGlvbiBjYWxscy4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczFfd2luMzIuYzogTmV3IHRlc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmM6IE5ldyB0ZXN0LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzM193aW4zMi5jOiBOZXcgdGVzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmM6IE5ldyB0ZXN0LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyX3dpbjMyLmM6IE5ldyB0ZXN0LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDFfd2luMzIuYzogTmV3IHRlc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jOiBOZXcgdGVzdC4KKworMjAxMi0wMS0yMyAgVXJvcyBCaXpqYWsgIDx1Yml6amFrQGdtYWlsLmNvbT4KKworCSogc3JjL2FscGhhL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IENoZWNrIGZvciBiYWQgQUJJLgorCisyMDEyLTAxLTIzICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisJICAgIENocmlzIFlvdW5nICA8Y2R5b3VuZ0BudGx3b3JsZC5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIEFtaWdhIHN1cHBvcnQuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKKzIwMTItMDEtMjMgIERtaXRyeSBOYWRlemhpbiAgPGRtaXRyeS5uYWRlemhpbkBnbWFpbC5jb20+CisKKwkqIGluY2x1ZGUvZmZpX2NvbW1vbi5oIChMSUtFTFksIFVOTElLRUxZKTogRml4IGRlZmluaXRpb25zLgorCisyMDEyLTAxLTIzICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBsaW51eC1tNjhrLm9yZz4KKworCSogc3JjL202OGsvc3lzdi5TIChmZmlfY2FsbF9TWVNWKTogUHJvcGVybHkgdGVzdCBmb3IgcGxhaW4KKwltYzY4MDAwLiAgVGVzdCBmb3IgX19IQVZFXzY4ODgxX18gaW4gYWRkaXRpb24gdG8gX19NQzY4ODgxX18uCisKKzIwMTItMDEtMTkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJUFIgcnRsLW9wdGltaXphdGlvbi80ODQ5NgorCSogc3JjL2lhNjQvZmZpLmMgKGZmaV9jYWxsKTogRml4IHVwIGFsaWFzaW5nIHZpb2xhdGlvbnMuCisKKzIwMTItMDEtMDkgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBjb25maWd1cmUuYWMgKGk/ODYtKi0qKTogU2V0IFRBUkdFVCB0byBYODZfNjQuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMTEtMTItMDcgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGNhdml1bS5jb20+CisKKwlQUiBsaWJmZmkvNTAwNTEKKwkqIHNyYy9taXBzL24zMi5TOiBBZGQgIi5zZXQgbWlwczQiLgorCisyMDExLTExLTIxICBBbmRyZWFzIFRvYmxlciAgPGFuZHJlYXN0QGZnem5ldC5jaD4KKworCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCisyMDExLTExLTEyICBEYXZpZCBHaWxiZXJ0IDxkYXZpZC5naWxiZXJ0QGxpbmFyby5vcmc+CisKKwkqIGRvYy9saWJmZmkudGV4aSwgaW5jbHVkZS9mZmkuaC5pbiwgaW5jbHVkZS9mZmlfY29tbW9uLmgsCisJbWFuL01ha2VmaWxlLmFtLCBtYW4vZmZpLjMsIG1hbi9mZmlfcHJlcF9jaWYuMywKKwltYW4vZmZpX3ByZXBfY2lmX3Zhci4zLCBzcmMvYXJtL2ZmaS5jLCBzcmMvYXJtL2ZmaXRhcmdldC5oLAorCXNyYy9jcmlzL2ZmaS5jLCBzcmMvcHJlcF9jaWYuYywKKwl0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jLAorCXRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jLAorCXRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mbG9hdF92YS5jOiBNYW55IGNoYW5nZXMgdG8gc3VwcG9ydCB2YXJpYWRpYworCWZ1bmN0aW9uIGNhbGxzLgorCisyMDExLTExLTEyICBLeWxlIE1vZmZldHQgPEt5bGUuRC5Nb2ZmZXR0QGJvZWluZy5jb20+CisKKwkqIHNyYy9wb3dlcnBjL2ZmaS5jLCBzcmMvcG93ZXJwYy9mZml0YXJnZXQuaCwKKwlzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TLCBzcmMvcG93ZXJwYy9zeXN2LlM6IE1hbnkgY2hhbmdlcyBmb3IKKwlzb2Z0ZmxvYXQgcG93ZXJwYyB2YXJpYW50cy4KKworMjAxMS0xMS0xMiAgUGV0ciBTYWxpbmdlciA8UGV0ci5TYWxpbmdlckBzZXpuYW0uY3o+CisKKwkqIGNvbmZpZ3VyZS5hYyAoRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSk6IEZpeCBrZnJlZWJzZCBzdXBwb3J0LgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDExLTExLTEyICBUaW1vdGh5IFdhbGwgIDx0d2FsbEB1c2Vycy5zZi5uZXQ+CisKKwkqIHNyYy9hcm0vZmZpLmMgKGZmaV9wcmVwX2FyZ3MsIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVik6IE1heAorCWFsaWdubWVudCBvZiA0IGZvciB3aW5jZSBvbiBBUk0uCisKKzIwMTEtMTEtMTIgIEt5bGUgTW9mZmV0dCA8S3lsZS5ELk1vZmZldHRAYm9laW5nLmNvbT4KKwkgICAgQW50aG9ueSBHcmVlbiA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIHNyYy9wcGMvc3lzdi5TLCBzcmMvcHBjL2ZmaS5jOiBSZW1vdmUgdXNlIG9mIHBwYyBzdHJpbmcKKwlpbnN0cnVjdGlvbnMgKG5vdCBhdmFpbGFibGUgb24gc29tZSBjb3JlcywgbGlrZSB0aGUgUFBDNDQwKS4KKworMjAxMS0xMS0xMiAgS2ltdXJhIFdhdGFydSAgPGtpbXVyYXdAaS5uaWZ0eS5qcD4KKworCSogbTQvYXhfZW5hYmxlX2J1aWxkZGlyOiBDaGFuZ2UgZnJvbSBzdHJpbmcgY29tcGFyaXNvbiB0byBudW1lcmljCisJY29tcGFyaXNvbiBmb3Igd2Mgb3V0cHV0LgorCSogY29uZmlndXJlLmFjOiBFbmFibGUgRkZJX01NQVBfRVhFQ19XUklUIGZvciBkYXJ3aW4xMSBha2EgTWFjIE9TCisJWCAxMC43LgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDExLTExLTEyICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIE1ha2VmaWxlLmFtIChBTV9DQ0FTRkxBR1MpOiBBZGQgLWcgb3B0aW9uIHRvIGJ1aWxkIGFzc2VtYmx5CisJZmlsZXMgd2l0aCBkZWJ1ZyBpbmZvLgorCSogTWFrZWZpbGUuaW46IFJlYnVpbHQuCisKKzIwMTEtMTEtMTIgIEphc3BlciBMaWV2aXNzZSBBZHJpYWFuc2UgPGphc3BlckBvcGVuYnNkLm9yZz4KKworCSogUkVBRE1FOiBVcGRhdGUgbGlzdCBvZiBzdXBwb3J0ZWQgT3BlbkJTRCBzeXN0ZW1zLgorCisyMDExLTExLTEyICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIGxpYnRvb2wtdmVyc2lvbjogVXBkYXRlLgorCSogTWFrZWZpbGUuYW0gKG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyk6IEFkZCBzcmMvZGVidWcuYyBpZgorCUZGSV9ERUJVRy4KKwkobGliZmZpX2xhX1NPVVJDRVMpOiBSZW1vdmUgc3JjL2RlYnVnLmMKKwkoRVhUUkFfRElTVCk6IEFkZCBzcmMvZGVidWcuYworCSogTWFrZWZpbGUuaW46IFJlYnVpbHQuCisJKiBSRUFETUU6IFVwZGF0ZSBmb3IgMy4wLjExLgorCisyMDExLTExLTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgorCisJKiBjb25maWd1cmUuYWMgKEdDQ19BU19DRklfUFNFVURPX09QKTogVXNlIGl0IGluc3RlYWQgb2YgaW5saW5lIGNoZWNrLgorCSogY29uZmlndXJlLCBhY2xvY2FsLm00OiBSZWJ1aWxkLgorCisyMDExLTA5LTA0ICBJYWluIFNhbmRvZSAgPGlhaW5zQGdjYy5nbnUub3JnPgorCisJUFIgbGliZmZpLzQ5NTk0CisJKiBzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TIChzdHVicyk6IE1ha2UgdGhlIHN0dWIgYmluZGluZworCWhlbHBlciByZWZlcmVuY2UgdHJhY2sgdGhlIGFyY2hpdGVjdHVyZSBwb2ludGVyIHNpemUuCisKKzIwMTEtMDgtMjUgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgorCisJKiBzcmMvYXJtL2ZmaS5jIChGRklfSU5JVF9UUkFNUE9MSU5FKTogUmVtb3ZlIGhhcmQtY29kZWQgYXNzZW1ibHkKKwlpbnN0cnVjdGlvbnMuCisJKiBzcmMvYXJtL3N5c3YuUyAoZmZpX2FybV90cmFtcG9saW5lKTogUHV0IHRoZW0gaGVyZSBpbnN0ZWFkLgorCisyMDExLTA3LTExICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KKworICAgICAgICAqIHNyYy9hcm0vZmZpLmMgKEZGSV9JTklUX1RSQU1QT0xJTkUpOiBDbGVhciBpY2FjaGUuCisKKzIwMTEtMDYtMjkgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jOiBNb3ZlIFBSIG51bWJlciB0byBjb21tZW50LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmM6IExpa2V3aXNlLgorCisyMDExLTA2LTI5ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCVBSIGxpYmZmaS80NjY2MAorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYzogeGZhaWwgZGctb3V0cHV0IG9uCisJbWlwcy1zZ2ktaXJpeDYqLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmM6IExpa2V3aXNlLgorCisyMDExLTA2LTE0ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMgKHRlc3RfbGFyZ2VfZm4pOiBVc2UgUFJJdTgsCisJUFJJZDggaW5zdGVhZCBvZiAlaGh1LCAlaGhkLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2ZmaXRlc3QuaCBbX19hbHBoYV9fICYmIF9fb3NmX19dIChQUklkOCwKKwlQUkl1OCk6IERlZmluZS4KKwlbX19zZ2lfX10gKFBSSWQ4LCBQUkl1OCk6IERlZmluZS4KKworMjAxMS0wNC0yOSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIHNyYy9hbHBoYS9vc2YuUyAoVUFfU0ksIEZERV9FTkNPRElORywgRkRFX0VOQ09ERSwgRkRFX0FSQU5HRSk6CisJRGVmaW5lLgorCVVzZSB0aGVtIHRvIGhhbmRsZSBFTEYgdnMuIEVDT0ZGIGRpZmZlcmVuY2VzLgorCVtfX29zZl9fXSAoX0dMT0JBTF9fRl9mZmlfY2FsbF9vc2YpOiBEZWZpbmUuCisKKzIwMTEtMDMtMzAgIFRpbW90aHkgV2FsbCAgPHR3YWxsQHVzZXJzLnNmLm5ldD4KKworCSogc3JjL3Bvd2VycGMvZGFyd2luLlM6IEZpeCB1bmtub3duIEZERSBlbmNvZGluZy4KKwkqIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlM6IGRpdHRvLgorCisyMDExLTAyLTI1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIHNyYy9wb3dlcnBjL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IEFsbG93IGZvciBtb3JlCisJMzItYml0IEFCSXMuCisKKzIwMTEtMDItMTUgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogbTQvYXhfY2NfbWF4b3B0Lm00OiBEb24ndCAtbWFsaWduLWRvdWJsZSBvciB1c2UgLWZmYXN0LW1hdGguCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKKzIwMTEtMDItMTMgIFJhbGYgV2lsZGVuaHVlcyAgPFJhbGYuV2lsZGVuaHVlc0BnbXguZGU+CisKKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworMjAxMS0wMi0xMyAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBpbmNsdWRlL2ZmaV9jb21tb24uaCAoVU5MSUtFTFksIExJS0VMWSk6IERlZmluZS4KKwkqIHNyYy94ODYvZmZpNjQuYyAoVU5MSUtFTFksIExJS0VMWSk6IFJlbW92ZSBkZWZpbml0aW9uLgorCSogc3JjL3ByZXBfY2lmLmMgKFVOTElLRUxZLCBMSUtFTFkpOiBSZW1vdmUgZGVmaW5pdGlvbi4KKworCSogc3JjL3ByZXBfY2lmLmMgKGluaXRpYWxpemVfYWdncmVnYXRlKTogQ29udmVydCBhc3NlcnRpb24gaW50bworCUZGSV9CQURfVFlQRURFRiByZXR1cm4uICBJbml0aWFsaXplIGFyZyBzaXplIGFuZCBhbGlnbm1lbnQgdG8gMC4KKworCSogc3JjL3BhL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERvbid0IEFTU0VSVCBBQkkgdGVzdCwKKwlqdXN0IHJldHVybiBGRklfQkFEX0FCSSB3aGVuIHRoaW5ncyBhcmUgd3JvbmcuCisJKiBzcmMvYXJtL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERpdHRvLgorCSogc3JjL3Bvd2VycGMvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRGl0dG8uCisJKiBzcmMvbWlwcy9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEaXR0by4KKwkqIHNyYy9pYTY0L2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERpdHRvLgorCSogc3JjL2F2cjMyL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERpdHRvLgorCisyMDExLTAyLTExICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIHNyYy9zcGFyYy9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEb24ndCBBU1NFUlQgQUJJIHRlc3QsCisJanVzdCByZXR1cm4gRkZJX0JBRF9BQkkgd2hlbiB0aGluZ3MgYXJlIHdyb25nLgorCisyMDEyLTAyLTExICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgorCisJKiBzcmMvc3BhcmMvdjkuUyAoU1RBQ0tGUkFNRSk6IEJ1bXAgdG8gMTc2LgorCisyMDExLTAyLTA5ICBTdHVhcnQgU2hlbHRvbiAgPHNyY3NoZWx0b25AZ21haWwuY29tPgorCisJaHR0cDovL2J1Z3MuZ2VudG9vLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg2OTExCisJKiBzcmMvbWlwcy9mZml0YXJnZXQuaDogQ2xlYW4gdXAgZXJyb3IgbWVzc2FnZXMuCisJKiBzcmMvamF2YV9yYXdfYXBpLmMgKGZmaV9qYXZhX3RyYW5zbGF0ZV9hcmdzKTogQ2FzdCByYXcgYXJnIHRvCisJZmZpX3JhdyouCisJKiBpbmNsdWRlL2ZmaS5oLmluOiBBZGQgcHJhZ21hIGZvciBTR0kgY29tcGlsZXIuCisKKzIwMTEtMDItMDkgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogY29uZmlndXJlLmFjOiBBZGQgcG93ZXJwYzY0LSotZGFyd2luKiBzdXBwb3J0LgorCisyMDExLTAyLTA5ICBBbnRob255IEdyZWVuIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogUkVBRE1FOiBNZW50aW9uIEludGVyaXguCisKKzIwMTEtMDItMDkgIEpvbmF0aGFuIENhbGxlbiAgPGFiY2RAZ2VudG9vLm9yZz4KKworCSogY29uZmlndXJlLmFjOiBBZGQgSW50ZXJpeCB0byB3aW4zMi9jeWd3aW4vbWluZ3cgY2FzZS4KKwkqIGNvbmZpZ3VyZTogRGl0dG8uCisJKiBzcmMvY2xvc3VyZXMuYzogVHJlYXQgSW50ZXJpeCBsaWtlIEN5Z3dpbiwgaW5zdGVhZCBvZiBhcyBhCisJZ2VuZXJpYyB3aW4zMi4KKworMjAxMS0wMi0wOSAgQW50aG9ueSBHcmVlbiA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYzogUmVtb3ZlIHhmYWlsLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmM6IFJlbW92ZSB4ZmFpbC4KKwkqIHNyYy94ODYvZmZpNjQuYyAoVU5MSUtFTFksIExJS0VMWSk6IERlZmluZS4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBDaGVjayBmb3IgYmFkIEFCSS4KKwkqIHNyYy9wcmVwX2NpZi5jIChVTkxJS0VMWSwgTElLRUxZKTogRGVmaW5lLgorCShpbml0aWFsaXplX2FnZ3JlZ2F0ZSk6IENoZWNrIGZvciBiYWQgdHlwZXMuCisKKzIwMTEtMDItMDkgIExhbmRvbiBGdWxsZXIgPGxhbmRvbmZAcGxhdXNpYmxlLmNvb3A+CisKKwkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogQWRkIGJ1aWxkLWlvcy5zaCwgc3JjL2FybS9nZW50cmFtcC5zaCwKKwlzcmMvYXJtL3RyYW1wb2xpbmUuUy4KKwkobm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTKTogQWRkIHNyYy9hcmMvdHJhbXBvbGluZS5TLgorCSogY29uZmlndXJlLmFjIChGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFKTogRGVmaW5lLgorCSogc3JjL2FybS9mZmkuYyAoZmZpX3RyYW1wb2xpbmVfdGFibGUpCisJKGZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGVfcGFnZSwgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkpCisJKEZGSV9UUkFNUE9MSU5FX0NPREVMT0NfQ09ORklHLCBGRklfVFJBTVBPTElORV9DT05GSUdfUEFHRV9PRkZTRVQpCisJKEZGSV9UUkFNUE9MSU5FX0NPVU5ULCBmZmlfdHJhbXBvbGluZV9sb2NrLCBmZmlfdHJhbXBvbGluZV90YWJsZXMpCisJKGZmaV90cmFtcG9saW5lX3RhYmxlX2FsbG9jLCBmZmlfY2xvc3VyZV9hbGxvYywgZmZpX2Nsb3N1cmVfZnJlZSk6CisJRGVmaW5lIGZvciBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFIGNhc2UgKGlPUykuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogSGFuZGwgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSBjYXNlCisJc2VwYXJhdGVseS4KKwkqIHNyYy9hcm0vc3lzdi5TOiBIYW5kbGUgQXBwbGUgaU9TIGhvc3QuCisJKiBzcmMvY2xvc3VyZXMuYzogSGFuZGxlIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgY2FzZS4KKwkqIGJ1aWxkLWlvcy5zaDogTmV3IGZpbGUuCisJKiBmZmljb25maWcuaC5pbiwgY29uZmlndXJlLCBNYWtlZmlsZS5pbjogUmVidWlsdC4KKwkqIFJFQURNRTogTWVudGlvbiBBUk0gaU9TLgorCisyMDExLTAyLTA4ICBPcmVuIEhlbGQgIDxvcmVuaGVAaWwuaWJtLmNvbT4KKworCSogc3JjL2RsbWFsbG9jLmMgKF9TVFJVQ1RfTUFMTElORk8pOiBEZWZpbmUgaW4gb3JkZXIgdG8gYXZvaWQKKwlyZWRlZmluaXRpb24gb2YgbWFsbGluZm8gb24gSFAtVVguCisKKzIwMTEtMDItMDggIEdpbm4gQ2hlbiAgPGdpbm4uY2hlbkBvcmFjbGUuY29tPgorCisJKiBzcmMvc3BhcmMvZmZpLmMgKGZmaV9jYWxsKTogTWFrZSBjb21wYXRpYmxlIHdpdGggU29sYXJpcyBTdHVkaW8KKwlhZ2dyZWdhdGUgcmV0dXJuIEFCSS4gIEZsdXNoIGNhY2hlLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IEZsdXNoIGNhY2hlLgorCisyMDExLTAyLTExICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwlGcm9tIFRvbSBIb25lcm1hbm4gPHRvbS5ob25lcm1hbm5Ab3JhY2xlLmNvbT46CisJKiBzcmMvcG93ZXJwYy9haXguUyAoZmZpX2NhbGxfQUlYKTogU3VwcG9ydCBmb3IgeGxjIHRvb2xjaGFpbiBvbgorCUFJWC4gIERlY2xhcmUgLmZmaV9wcmVwX2FyZ3MuICBJbnNlcnQgbm9wcyBhZnRlciBicmFuY2gKKwlpbnN0cnVjdGlvbnMgc28gdGhhdCB0aGUgQUlYIGxpbmtlciBjYW4gaW5zZXJ0IFRPQyByZWxvYWQKKwlpbnN0cnVjdGlvbnMuCisJKiBzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TOiBEZWNsYXJlIC5mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOLgorCisyMDExLTAyLTA4ICBFZCAgPGVkQGtkdGMubmV0PgorCisJKiBzcmMvcG93ZXJwYy9hc20uaDogRml4IGdyYW1tYXIgbml0IGluIGNvbW1lbnQuCisKKzIwMTEtMDItMDggIFVsaSBMaW5rICA8dWwubWNhbWFmaWFAbGlua2l0dXAuZGU+CisKKwkqIGluY2x1ZGUvZmZpLmguaW4gKEZGSV82NF9CSVRfTUFYKTogRGVmaW5lIGFuZCB1c2UuCisKKzIwMTEtMDItMDkgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJUFIgbGliZmZpLzQ2NjYxCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYyAobWFpbik6IENhc3Qgdm9pZCAqIHRvCisJdWludHB0cl90IGZpcnN0LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMgKG1haW4pOiBMaWtld2lzZS4KKworMjAxMS0wMi0wOCAgUmFmYWVsIEF2aWxhIGRlIEVzcGluZG9sYSAgPHJlc3BpbmRvbGFAbW96aWxsYS5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzogRml4IHg4NiB0ZXN0IGZvciBwYyByZWxhdGVkIHJlbG9jcy4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMS0wMi0wNyAgSm9lbCBTaGVycmlsbCA8am9lbC5zaGVycmlsbEBvYXJjb3JwLmNvbT4KKworCSogbGliZmZpL3NyYy9tNjhrL2ZmaS5jOiBBZGQgUlRFTVMgc3VwcG9ydCBmb3IgY2FjaGUgZmx1c2hpbmcuCisJSGFuZGxlIGNhc2Ugd2hlbiBDUFUgdmFyaWFudCBkb2VzIG5vdCBoYXZlIGxvbmcgZG91YmxlIHN1cHBvcnQuCisJKiBsaWJmZmkvc3JjL202OGsvc3lzdi5TOiBBZGQgc3VwcG9ydCBmb3IgbWM2ODAwMCwgQ29sZGZpcmUsCisJYW5kIGNvcmVzIHdpdGggc29mdCBmbG9hdGluZyBwb2ludC4KKworMjAxMS0wMi0wNyAgSm9lbCBTaGVycmlsbCA8am9lbC5zaGVycmlsbEBvYXJjb3JwLmNvbT4KKworCSogY29uZmlndXJlLmFjOiBBZGQgbWlwcyotKi1ydGVtcyogc3VwcG9ydC4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKwkqIHNyYy9taXBzL2ZmaXRhcmdldC5oOiBFbnN1cmUgbmVlZGVkIGNvbnN0YW50cyBhcmUgYXZhaWxhYmxlCisJZm9yIHRhcmdldHMgd2hpY2ggZG8gbm90IGhhdmUgc2dpZGVmcy5oLgorCisyMDExLTAxLTI2ICBEYXZlIEtvcm4gIDxkYXZlLmtvcm4uY3lnd2luQGdtYWlsLmNvbT4KKworCVBSIHRhcmdldC80MDEyNQorCSogY29uZmlndXJlLmFjIChBTV9MVExERkxBR1MpOiBBZGQgLWJpbmRpciBvcHRpb24gZm9yIHdpbmRvd3MgRExMcy4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworMjAxMC0xMi0xOCAgSWFpbiBTYW5kb2UgIDxpYWluc0BnY2MuZ251Lm9yZz4KKworCVBSIGxpYmZmaS8yOTE1MgorCVBSIGxpYmZmaS80MjM3OAorCSogc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUzogUHJvdmlkZSBEYXJ3aW42NCBpbXBsZW1lbnRhdGlvbiwKKwl1cGRhdGUgY29tbWVudHMuCisJKiBzcmMvcG93ZXJwYy9mZml0YXJnZXQuaCAoUE9XRVJQQ19EQVJXSU42NCk6IE5ldywKKwkoRkZJX1RSQU1QT0xJTkVfU0laRSk6IFVwZGF0ZSBmb3IgRGFyd2luNjQuCisJKiBzcmMvcG93ZXJwYy9kYXJ3aW4uUzogUHJvdmlkZSBEYXJ3aW42NCBpbXBsZW1lbnRhdGlvbiwKKwl1cGRhdGUgY29tbWVudHMuCisJKiBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmM6IExpa2V3aXNlLgorCisyMDEwLTEyLTA2ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogY29uZmlndXJlLmFjIChsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wKTogVXNlIGRvdWJsZQorCWJhY2tzbGFzaGVzLgorCShsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcCk6IExpa2V3aXNlLgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCisyMDEwLTEyLTAzICBDaHVuZy1MaW4gVGFuZyAgPGNsdGFuZ0Bjb2Rlc291cmNlcnkuY29tPgorCisJKiBzcmMvYXJtL3N5c3YuUyAoZmZpX2Nsb3N1cmVfU1lTVik6IEFkZCBVTldJTkQgdG8gLnBhZCBkaXJlY3RpdmUuCisJKGZmaV9jbG9zdXJlX1ZGUCk6IFNhbWUuCisJKGZmaV9jYWxsX1ZGUCk6IE1vdmUgZG93biB0byBiZWZvcmUgZmZpX2Nsb3N1cmVfVkZQLiBBZGQgJy5mcHUgdmZwJworCWRpcmVjdGl2ZS4KKworMjAxMC0xMi0wMSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0LmggW19fc2dpXSAoUFJJZDY0LCBQUkl1NjQpOiBEZWZpbmUuCisJKFBSSXVQVFIpOiBEZWZpbmUuCisKKzIwMTAtMTEtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CisJICAgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBzcmMveDg2L3N5c3YuUyAoRkRFX0VOQ09ESU5HLCBGREVfRU5DT0RFKTogRGVmaW5lLgorCSguZWhfZnJhbWUpOiBVc2UgRkRFX0VOQ09ESU5HLgorCSguTEFTRkRFMSwgLkxBU0ZERTIsIExBU0ZERTMpOiBTaW1wbGlmeSB3aXRoIEZERV9FTkNPREUuCisKKzIwMTAtMTEtMjIgIEphY2VrIENhYmFuIDxqYWNla0Bjb2Rld2VhdmVycy5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yIHN5bWJvbCB1bmRlcnNjb3JlcyBvbiBtaW5ndy13NjQuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisJKiBzcmMveDg2L3dpbjY0LlM6IENvcnJlY3RseSBhY2Nlc3MgZXh0ZXJuIHN5bWJvbHMgaW4gcmVzcGVjdCB0bworCXVuZGVyc2NvcmVzLgorCisyMDEwLTExLTE1ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogdGVzdHN1aXRlL2xpYi9saWJmZmktZGcuZXhwOiBSZW5hbWUgLi4uCisJKiB0ZXN0c3VpdGUvbGliL2xpYmZmaS5leHA6IC4uLiB0byB0aGlzLgorCSogbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jYWxsLmV4cDogRG9uJ3QgbG9hZCBsaWJmZmktZGcuZXhwLgorCSogbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cDogTGlrZXdpc2UuCisKKzIwMTAtMTAtMjggIENodW5nLUxpbiBUYW5nICA8Y2x0YW5nQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIHNyYy9hcm0vZmZpLmMgKGZmaV9wcmVwX2FyZ3MpOiBBZGQgVkZQIHJlZ2lzdGVyIGFyZ3VtZW50IGhhbmRsaW5nCisJY29kZSwgbmV3IHBhcmFtZXRlciwgYW5kIHJldHVybiB2YWx1ZS4gVXBkYXRlIGNvbW1lbnRzLgorCShmZmlfcHJlcF9jaWZfbWFjaGRlcCk6IEFkZCBjYXNlIGZvciBWRlAgc3RydWN0IHJldHVybiB2YWx1ZXMuIEFkZAorCWNhbGwgdG8gbGF5b3V0X3ZmcF9hcmdzKCkuCisJKGZmaV9jYWxsX1NZU1YpOiBVcGRhdGUgZGVjbGFyYXRpb24uCisJKGZmaV9jYWxsX1ZGUCk6IE5ldyBkZWNsYXJhdGlvbi4KKwkoZmZpX2NhbGwpOiBBZGQgVkZQIHN0cnVjdCByZXR1cm4gY29uZGl0aW9ucy4gQ2FsbCBmZmlfY2FsbF9WRlAoKQorCXdoZW4gQUJJIGlzIEZGSV9WRlAuCisJKGZmaV9jbG9zdXJlX1ZGUCk6IE5ldyBkZWNsYXJhdGlvbi4KKwkoZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcik6IEFkZCBuZXcgdmZwX2FyZ3MgcGFyYW1ldGVyLCB1cGRhdGUgY2FsbCB0bworCWZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVigpLgorCShmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YpOiBVcGRhdGUgcGFyYW1ldGVycy4gQWRkIFZGUCBhcmd1bWVudAorCWNhc2UgaGFuZGxpbmcuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogUGFzcyBmZmlfY2xvc3VyZV9WRlAgdG8gdHJhbXBvbGluZQorCWNvbnN0cnVjdGlvbiB1bmRlciBWRlAgaGFyZC1mbG9hdC4KKwkocmVjX3ZmcF90eXBlX3ApOiBOZXcgZnVuY3Rpb24uCisJKHZmcF90eXBlX3ApOiBTYW1lLgorCShwbGFjZV92ZnBfYXJnKTogU2FtZS4KKwkobGF5b3V0X3ZmcF9hcmdzKTogU2FtZS4KKwkqIHNyYy9hcm0vZmZpdGFyZ2V0LmggKGZmaV9hYmkpOiBBZGQgRkZJX1ZGUC4gRGVmaW5lIEZGSV9ERUZBVUxUX0FCSQorCWJhc2VkIG9uIF9fQVJNX1BDU19WRlAuCisJKEZGSV9FWFRSQV9DSUZfRklFTERTKTogRGVmaW5lIGZvciBhZGRpbmcgVkZQIGhhcmQtZmxvYXQgc3BlY2lmaWMKKwlmaWVsZHMuCisJKEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQpOiBEZWZpbmUgaW50ZXJuYWxseSB1c2VkIHR5cGUgY29kZS4KKwkoRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUpOiBTYW1lLgorCSogc3JjL2FybS9zeXN2LlMgKGZmaV9jYWxsX1NZU1YpOiBDaGFuZ2UgY2FsbCBvZiBmZmlfcHJlcF9hcmdzKCkgdG8KKwlkaXJlY3QgY2FsbC4gTW92ZSBmdW5jdGlvbiBwb2ludGVyIGxvYWQgdXB3YXJkcy4KKwkoZmZpX2NhbGxfVkZQKTogTmV3IGZ1bmN0aW9uLgorCShmZmlfY2xvc3VyZV9WRlApOiBTYW1lLgorCisJKiB0ZXN0c3VpdGUvbGliL2xpYmZmaS1kZy5leHAgKGNoZWNrLWZsYWdzKTogTmV3IGZ1bmN0aW9uLgorCShkZy1za2lwLWlmKTogTmV3IGZ1bmN0aW9uLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYzogU2tpcCBpZiB0YXJnZXQgaXMgYXJtKi0qLSoKKwlhbmQgY29tcGlsZXIgb3B0aW9ucyBpbmNsdWRlIC1tZmxvYXQtYWJpPWhhcmQuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYzogU2FtZS4KKworMjAxMC0xMC0wMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwlQUiBsaWJmZmkvNDU2NzcKKwkqIHNyYy94ODYvZmZpNjQuYyAoZmZpX3ByZXBfY2lmX21hY2hkZXApOiBFbnN1cmUgY2lmLT5ieXRlcyBpcworCWEgbXVsdGlwbGUgb2YgOC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9tYW55Mi5jOiBOZXcgdGVzdC4KKworMjAxMC0wOC0yMCAgTWFyayBXaWVsYWFyZCAgPG1qd0ByZWRoYXQuY29tPgorCisJKiBzcmMvY2xvc3VyZXMuYyAob3Blbl90ZW1wX2V4ZWNfZmlsZV9tbnQpOiBDaGVjayBpZiBnZXRtbnRlbnRfcgorCXJldHVybnMgTlVMTC4KKworMjAxMC0wOC0wOSAgQW5kcmVhcyBUb2JsZXIgIDxhbmRyZWFzdEBmZ3puZXQuY2g+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIHRhcmdldCBwb3dlcnBjNjQtKi1mcmVlYnNkKi4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jOiBQYXNzCisJLW1sb25nLWRvdWJsZS0xMjggb25seSB0byBsaW51eCB0YXJnZXRzLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jOiBMaWtld2lzZS4KKworMjAxMC0wOC0wNSAgRGFuIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCisgICAgICAgICogTWFrZWZpbGUuYW06IFBhc3MgRkZJX0RFQlVHIGRlZmluZSB0byBtc3ZjYy5zaCBmb3IgbGlua2luZyB0byB0aGUKKyAgICAgICAgZGVidWcgQ1JUIHdoZW4gLS1lbmFibGUtZGVidWcgaXMgZ2l2ZW4uCisgICAgICAgICogY29uZmlndXJlLmFjOiBEZWZpbmUgaXQuCisgICAgICAgICogbXN2Y2Muc2g6IFRyYW5zbGF0ZSAtZyBhbmQgLURGRklfREVCVUcgYXBwcm9wcmlhdGVseS4KKworMjAxMC0wOC0wNCAgRGFuIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCisJKiBzcmMveDg2L2ZmaXRhcmdldC5oOiBBZGQgWDg2X0FOWSBkZWZpbmUgZm9yIGFsbCB4ODYveDg2XzY0CisJcGxhdGZvcm1zLgorCSogc3JjL3g4Ni9mZmkuYzogUmVtb3ZlIHJlZHVuZGFudCBpZmRlZiBjaGVja3MuCisJKiBzcmMvcHJlcF9jaWYuYzogUHVzaCBzdGFjayBzcGFjZSBjb21wdXRhdGlvbiBpbnRvIHNyYy94ODYvZmZpLmMKKwlmb3IgWDg2X0FOWSBzbyByZXR1cm4gdmFsdWUgc3BhY2UgZG9lc24ndCBnZXQgYWRkZWQgdHdpY2UuCisKKzIwMTAtMDgtMDMgIE5laWwgUmFzaGJyb29rZSA8bmVpbEBwYXJrd2F5Y2MuY28udWs+CisKKwkqIG1zdmNjLnNoOiBEb24ndCBwYXNzIC1zYWZlc2VoIHRvIG1sNjQgYmVjYXVzZSBiZWhhdmlvciBpcyBidWdneS4KKworMjAxMC0wNy0yMiAgRGFuIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCisJKiBzcmMvKi9mZml0YXJnZXQuaDogTWFrZSBGRklfTEFTVF9BQkkgb25lIHBhc3QgdGhlIGxhc3QgdmFsaWQgQUJJLgorCSogc3JjL3ByZXBfY2lmLmM6IEZpeCBBQkkgYXNzZXJ0aW9uLgorICAgICAgICAqIHNyYy9jcmlzL2ZmaS5jOiBEaXR0by4KKworMjAxMC0wNy0xMCAgRXZhbiBQaG9lbml4ICA8ZXZhbkBmYWxsaW5nc25vdy5uZXQ+CisKKwkqIHNyYy9jbG9zdXJlcy5jIChzZWxpbnV4X2VuYWJsZWRfY2hlY2spOiBGaXggc3RybmNtcCB1c2FnZSBidWcuCisKKzIwMTAtMDctMDcgIERhbiBIb3LDoWsgPGRhbkBkYW5ueS5jej4KKworCSogaW5jbHVkZS9mZmkuaC5pbjogUHJvdGVjdCAjZGVmaW5lIHdpdGggI2lmbmRlZi4KKwkqIHNyYy9wb3dlcnBjL2ZmaXRhcmdldC5oOiBEaXR0by4KKwkqIHNyYy9zMzkwL2ZmaXRhcmdldC5oOiBEaXR0by4KKwkqIHNyYy9zcGFyYy9mZml0YXJnZXQuaDogRGl0dG8uCisKKzIwMTAtMDctMDcgICBOZWlsIFJvYmVydHMgPG5laWxAbGludXguaW50ZWwuY29tPgorCisJKiBzcmMveDg2L3N5c3YuUyAoZmZpX2NhbGxfU1lTVik6IEFsaWduIHRoZSBzdGFjayBwb2ludGVyIHRvCisJMTYtYnl0ZXMuCisKKzIwMTAtMDctMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJKiBNYWtlZmlsZS5hbSAoQU1fTUFLRUZMQUdTKTogUGFzcyBhbHNvIG1hbmRpciB0byBzdWJtYWtlcy4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlZC4KKworMjAxMC0wNS0xOSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIGNvbmZpZ3VyZS5hYyAobGliZmZpX2N2X2FzX3g4Nl9wY3JlbCk6IENoZWNrIGZvciBpbGxlZ2FsIGluIGFzCisJb3V0cHV0LCB0b28uCisJKGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3ApOiBDaGVjayBmb3IgLmFzY2lpLgorCShsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcCk6IENoZWNrIGZvciAuc3RyaW5nLgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCSogZmZpY29uZmlnLmguaW46IFJlZ2VuZXJhdGUuCisJKiBzcmMveDg2L3N5c3YuUyAoLmVoX2ZyYW1lKTogVXNlIC5hc2NpaSwgLnN0cmluZyBvciBlcnJvci4KKworMjAxMC0wNS0xMSAgRGFuIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCisJKiBkb2MvbGliZmZpLnRleDogRG9jdW1lbnQgcHJldmlvdXMgY2hhbmdlLgorCisyMDEwLTA1LTExICBNYWtvdG8gS2F0byA8bV9rYXRvQGdhMi5zby1uZXQubmUuanA+CisKKwkqIHNyYy94ODYvZmZpLmMgKGZmaV9jYWxsKTogRG9uJ3QgY29weSBzdHJ1Y3RzIHBhc3NlZCBieSB2YWx1ZS4KKworMjAxMC0wNS0wNSAgTWljaGFlbCBLb2hsZXIgPG1pY2hhZWxrb2hsZXJAbGl2ZS5jb20+CisKKwkqIHNyYy9kbG1hbGxvYy5jIChkbGZyZWUpOiBGaXggc3BlbGxpbmcuCisJKiBzcmMvaWE2NC9mZmkuYyAoZmZpX3ByZXBfY2lmX21hY2hkZXApOiBEaXR0by4KKwkqIGNvbmZpZ3VyZS5hYzogRGl0dG8uCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKKzIwMTAtMDQtMTMgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworCSogbXN2Y2Muc2g6IEJ1aWxkIHdpdGggLVczIGluc3RlYWQgb2YgLVdhbGwuCisJKiBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmM6IFJlbW92ZSBidWlsZCB3YXJuaW5ncy4KKwkqIHNyYy94ODYvZmZpLmM6IERpdHRvLgorCSogc3JjL3g4Ni9mZml0YXJnZXQuaDogRGl0dG8uCisKKzIwMTAtMDQtMTIgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKwkgICAgV2FsdGVyIE1laW5sIDx3dW5vQGxzdncuZGU+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIE9TLzIgc3VwcG9ydC4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKwkqIHNyYy9jbG9zdXJlcy5jOiBEaXR0by4KKwkqIHNyYy9kbG1hbGxvYy5jOiBEaXR0by4KKwkqIHNyYy94ODYvd2luMzIuUzogRGl0dG8uCisKKzIwMTAtMDQtMDcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYzogUmVtb3ZlIHVudXNlZCBhcmdzIHZhcmlhYmxlLgorCisyMDEwLTA0LTAyICBSYWxmIFdpbGRlbmh1ZXMgIDxSYWxmLldpbGRlbmh1ZXNAZ214LmRlPgorCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKwkqIGFjbG9jYWwubTQ6IFJlZ2VuZXJhdGUuCisJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCSogbWFuL01ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCSogdGVzdHN1aXRlL01ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCisyMDEwLTAzLTMwICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKwkqIG1zdmNjLnNoOiBEaXNhYmxlIGJ1aWxkIHdhcm5pbmdzLgorCSogUkVBRE1FICh0ZXN0ZWQpOiBDbGFyaWZ5IHdpbmRvd3MgYnVpbGQgcHJvY2VkdXJlLgorCisyMDEwLTAzLTE1ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogY29uZmlndXJlLmFjIChsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGUpOiBOZXcgdGVzdC4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKwkqIGZmaWNvbmZpZy5oLmluOiBSZWdlbmVyYXRlLgorCSogbGliZmZpL3NyYy94ODYvdW5peDY0LlMgKC5laF9mcmFtZSkKKwlbSEFWRV9BU19YODZfNjRfVU5XSU5EX1NFQ1RJT05fVFlQRV06IFVzZSBAdW53aW5kIHNlY3Rpb24gdHlwZS4KKwogMjAxMC0wMy0xNCAgTWF0dGhpYXMgS2xvc2UgIDxkb2tvQHVidW50dS5jb20+CiAKIAkqIHNyYy94ODYvZmZpNjQuYzogRml4IHR5cG8gaW4gY29tbWVudC4KIAkqIHNyYy94ODYvZmZpLmM6IFVzZSAvKiAuLi4gKi8gY29tbWVudCBzdHlsZS4KIAorMjAxMC0wMi0yNCAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIGRvYy9saWJmZmkudGV4aSAoVGhlIENsb3N1cmUgQVBJKTogRml4IHR5cG8uCisJKiBkb2MvbGliZmZpLmluZm86IFJlbW92ZS4KKworMjAxMC0wMi0xNSAgTWF0dGhpYXMgS2xvc2UgIDxkb2tvQHVidW50dS5jb20+CisKKwkqIHNyYy9hcm0vc3lzdi5TIChfX0FSTV9BUkNIX18pOiBEZWZpbmUgZm9yIHByb2Nlc3NvcgorCV9fQVJNX0FSQ0hfN0VNX18uCisKKzIwMTAtMDEtMTUgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgorCisJKiBSRUFETUU6IEFkZCBub3RlcyBvbiBidWlsZGluZyB3aXRoIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorCisyMDEwLTAxLTE1ICBEYW5pZWwgV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKwkqIG1zdmNjLnNoOiBOZXcgZmlsZS4KKworCSogc3JjL3g4Ni93aW4zMi5TOiBQb3J0IGFzc2VtYmx5IHJvdXRpbmVzIHRvIE1TVkMgYW5kICNpZmRlZi4KKwkqIHNyYy94ODYvZmZpLmM6IFR3ZWFrIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGFuZCByZW1vdmUgZXhjZXNzCisJcGFyZW5zLgorCSogaW5jbHVkZS9mZmkuaC5pbjogQWRkIF9fZGVjbHNwZWMoYWxpZ24oOCkpIHRvIHR5cGVkZWYgc3RydWN0CisJZmZpX2Nsb3N1cmUuCisKKwkqIHNyYy94ODYvZmZpLmM6IE1lcmdlIGZmaV9jYWxsX1NZU1YgYW5kIGZmaV9jYWxsX1NURENBTEwgaW50byBuZXcKKwlmdW5jdGlvbiBmZmlfY2FsbF93aW4zMiBvbiBYODZfV0lOMzIuCisJKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jYWxsX1NZU1YpOiBSZW5hbWUgdG8gZmZpX2NhbGxfd2luMzIuCisJKGZmaV9jYWxsX1NURENBTEwpOiBSZW1vdmUuCisKKwkqIHNyYy9wcmVwX2NpZi5jIChmZmlfcHJlcF9jaWYpOiBNb3ZlIHN0YWNrIHNwYWNlIGFsbG9jYXRpb24gY29kZQorCXRvIGZmaV9wcmVwX2NpZl9tYWNoZGVwIGZvciB4ODYuCisJKiBzcmMveDg2L2ZmaS5jIChmZmlfcHJlcF9jaWZfbWFjaGRlcCk6IFRvIGhlcmUuCisKKzIwMTAtMDEtMTUgIE9saXZlciBLaWRkbGUgIDxva2lkZGxlQHlhaG9vLmNvLnVrPgorCisJKiBzcmMveDg2L2ZmaXRhcmdldC5oIChmZmlfYWJpKTogQ2hlY2sgZm9yIF9faTM4NiBhbmQgX19hbWQ2NCBmb3IKKwlTdW4gU3R1ZGlvIGNvbXBpbGVyIGNvbXBhdGliaWxpdHkuCisKKzIwMTAtMDEtMTIgIENvbnJhZCBJcndpbiA8Y29ucmFkLmlyd2luQGdtYWlsLmNvbT4KKworCSogZG9jL2xpYmZmaS50ZXhpOiBBZGQgY2xvc3VyZSBleGFtcGxlLgorCiAyMDEwLTAxLTA3ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KIAogCVBSIGxpYmZmaS80MDcwMQpAQCAtMTQ4LDYgKzEwNTEsMTMgQEAKIAkqIHNyYy9wYS9mZmkuYyAoZmZpX2Nsb3N1cmVfaW5uZXJfcGEzMik6IEhhbmRsZSBGRklfVFlQRV9MT05HRE9VQkxFCiAJdHlwZSBvbiBIUC1VWC4KIAorMjAxMi0wMi0xMyAgS2FpIFRpZXR6ICA8a3RpZXR6QHJlZGhhdC5jb20+CisKKwlQUiBsaWJmZmkvNTIyMjEKKwkqIHNyYy94ODYvZmZpLmMgKGZmaV9wcmVwX3Jhd19jbG9zdXJlX2xvYyk6IEFkZCB0aGlzY2FsbAorCXN1cHBvcnQgZm9yIFg4Nl9XSU4zMi4KKwkoRkZJX0lOSVRfVFJBTVBPTElORV9USElTQ0FMTCk6IEZpeCBkaXNwbGFjZW1lbnQuCisKIDIwMDktMTItMTEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CiAKIAkqIHNyYy9zcGFyYy9mZmkuYyAoZmZpX2Nsb3N1cmVfc3BhcmNfaW5uZXJfdjkpOiBQcm9wZXJseSBhbGlnbiAnbG9uZwpAQCAtMzIyLDYgKzEyMzIsMTEgQEAKIAkqIG1hbi9NYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KIAkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KIAorMjAxMS0wOC0yMiAgSmFzcGVyIExpZXZpc3NlIEFkcmlhYW5zZSA8amFzcGVyQG9wZW5ic2Qub3JnPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCBPcGVuQlNEL2hwcGEgYW5kIE9wZW5CU0QvcG93ZXJwYyBzdXBwb3J0LgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCiAyMDA5LTA3LTMwICBSYWxmIFdpbGRlbmh1ZXMgIDxSYWxmLldpbGRlbmh1ZXNAZ214LmRlPgogCiAJKiBjb25maWd1cmUuYWMgKF9BQ19BUkdfVkFSX1BSRUNJT1VTKTogVXNlIG00X3JlbmFtZV9mb3JjZS4KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvQ2hhbmdlTG9nLmxpYmZmaSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvQ2hhbmdlTG9nLmxpYmZmaQppbmRleCA1MjcyZjMzLi5mM2VlOGIwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZy5saWJmZmkKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cubGliZmZpCkBAIC0xLDM1ICsxLDYgQEAKLTIwMTAtMDEtMTUgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgorMjAxMS0wMi0wOCAgQW5kcmVhcyBUb2JsZXIgIDxhbmRyZWFzdEBmZ3puZXQuY2g+CiAKLQkqIFJFQURNRTogQWRkIG5vdGVzIG9uIGJ1aWxkaW5nIHdpdGggTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0KLTIwMTAtMDEtMTUgIERhbmllbCBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KLQotCSogbXN2Y2Muc2g6IE5ldyBmaWxlLgotCi0JKiBzcmMveDg2L3dpbjMyLlM6IFBvcnQgYXNzZW1ibHkgcm91dGluZXMgdG8gTVNWQyBhbmQgI2lmZGVmLgotCSogc3JjL3g4Ni9mZmkuYzogVHdlYWsgZnVuY3Rpb24gZGVjbGFyYXRpb24gYW5kIHJlbW92ZSBleGNlc3MKLQlwYXJlbnMuCi0JKiBpbmNsdWRlL2ZmaS5oLmluOiBBZGQgX19kZWNsc3BlYyhhbGlnbig4KSkgdG8gdHlwZWRlZiBzdHJ1Y3QKLQlmZmlfY2xvc3VyZS4KLQotCSogc3JjL3g4Ni9mZmkuYzogTWVyZ2UgZmZpX2NhbGxfU1lTViBhbmQgZmZpX2NhbGxfU1REQ0FMTCBpbnRvIG5ldwotCWZ1bmN0aW9uIGZmaV9jYWxsX3dpbjMyIG9uIFg4Nl9XSU4zMi4KLQkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2NhbGxfU1lTVik6IFJlbmFtZSB0byBmZmlfY2FsbF93aW4zMi4KLQkoZmZpX2NhbGxfU1REQ0FMTCk6IFJlbW92ZS4KLQotCSogc3JjL3ByZXBfY2lmLmMgKGZmaV9wcmVwX2NpZik6IE1vdmUgc3RhY2sgc3BhY2UgYWxsb2NhdGlvbiBjb2RlCi0JdG8gZmZpX3ByZXBfY2lmX21hY2hkZXAgZm9yIHg4Ni4KLQkqIHNyYy94ODYvZmZpLmMgKGZmaV9wcmVwX2NpZl9tYWNoZGVwKTogVG8gaGVyZS4KLQotMjAxMC0wMS0xNSAgT2xpdmVyIEtpZGRsZSAgPG9raWRkbGVAeWFob28uY28udWs+Ci0KLQkqIHNyYy94ODYvZmZpdGFyZ2V0LmggKGZmaV9hYmkpOiBDaGVjayBmb3IgX19pMzg2IGFuZCBfX2FtZDY0IGZvcgotCVN1biBTdHVkaW8gY29tcGlsZXIgY29tcGF0aWJpbGl0eS4gCi0KLTIwMTAtMDEtMTIgIENvbnJhZCBJcndpbiA8Y29ucmFkLmlyd2luQGdtYWlsLmNvbT4KLQotCSogZG9jL2xpYmZmaS50ZXhpOiBBZGQgY2xvc3VyZSBleGFtcGxlLgotCSogZG9jL2xpYmZmaS5pbmZvOiBSZWJ1aWx0LgorCSogdGVzdHN1aXRlL2xpYi9saWJmZmkuZXhwOiBUd2VhayBmb3Igc3RhbmQtYWxvbmUgbW9kZS4KIAogMjAwOS0xMi0yNSAgU2FtdWxpIFN1b21pbmVuICA8c3N1b21pbmVuQGdlbnRvby5vcmc+CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTElDRU5TRSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTElDRU5TRQppbmRleCBlYzJmZDY5Li5hYTYwMzQyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0xJQ0VOU0UKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9MSUNFTlNFCkBAIC0xLDQgKzEsNCBAQAotbGliZmZpIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDkgIEFudGhvbnkgR3JlZW4sIFJlZCBIYXQsIEluYyBhbmQgb3RoZXJzLiAgCitsaWJmZmkgLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxMiAgQW50aG9ueSBHcmVlbiwgUmVkIEhhdCwgSW5jIGFuZCBvdGhlcnMuCiBTZWUgc291cmNlIGZpbGVzIGZvciBkZXRhaWxzLgogCiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTksOCArOSw4IEBACiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKIAotVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLWluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogCiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmFtIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5hbQppbmRleCBmNDdkZDFhLi40YTg1NWQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmFtCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuYW0KQEAgLTEwLDI5ICsxMCwzMiBAQAogCXNyYy9hdnIzMi9mZmkuYyBzcmMvYXZyMzIvc3lzdi5TIHNyYy9hdnIzMi9mZml0YXJnZXQuaCBcCiAJc3JjL2NyaXMvZmZpLmMgc3JjL2NyaXMvc3lzdi5TIHNyYy9jcmlzL2ZmaXRhcmdldC5oIFwKIAlzcmMvaWE2NC9mZmkuYyBzcmMvaWE2NC9mZml0YXJnZXQuaCBzcmMvaWE2NC9pYTY0X2ZsYWdzLmggXAotCXNyYy9pYTY0L3VuaXguUyBcCi0Jc3JjL21pcHMvZmZpLmMgc3JjL21pcHMvbjMyLlMgc3JjL21pcHMvbzMyLlMgXAotCXNyYy9taXBzL2ZmaXRhcmdldC5oIFwKLQlzcmMvbTMyci9mZmkuYyBzcmMvbTMyci9zeXN2LlMgc3JjL20zMnIvZmZpdGFyZ2V0LmggXAotCXNyYy9tNjhrL2ZmaS5jIHNyYy9tNjhrL3N5c3YuUyBzcmMvbTY4ay9mZml0YXJnZXQuaCBcCi0Jc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIFwKKwlzcmMvaWE2NC91bml4LlMgc3JjL21pcHMvZmZpLmMgc3JjL21pcHMvbjMyLlMgc3JjL21pcHMvbzMyLlMgXAorCXNyYy9taXBzL2ZmaXRhcmdldC5oIHNyYy9tMzJyL2ZmaS5jIHNyYy9tMzJyL3N5c3YuUyBcCisJc3JjL20zMnIvZmZpdGFyZ2V0Lmggc3JjL202OGsvZmZpLmMgc3JjL202OGsvc3lzdi5TIFwKKwlzcmMvbTY4ay9mZml0YXJnZXQuaCBzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgXAogCXNyYy9wb3dlcnBjL2xpbnV4NjQuUyBzcmMvcG93ZXJwYy9saW51eDY0X2Nsb3N1cmUuUyBcCi0Jc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9hc20uaCBcCi0Jc3JjL3Bvd2VycGMvYWl4LlMgc3JjL3Bvd2VycGMvZGFyd2luLlMgXAotCXNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMgc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUyBcCi0Jc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIHNyYy9wb3dlcnBjL2ZmaXRhcmdldC5oIFwKLQlzcmMvczM5MC9mZmkuYyBzcmMvczM5MC9zeXN2LlMgc3JjL3MzOTAvZmZpdGFyZ2V0LmggXAotCXNyYy9zaC9mZmkuYyBzcmMvc2gvc3lzdi5TIHNyYy9zaC9mZml0YXJnZXQuaCBcCi0Jc3JjL3NoNjQvZmZpLmMgc3JjL3NoNjQvc3lzdi5TIHNyYy9zaDY0L2ZmaXRhcmdldC5oIFwKLQlzcmMvc3BhcmMvdjguUyBzcmMvc3BhcmMvdjkuUyBzcmMvc3BhcmMvZmZpdGFyZ2V0LmggXAotCXNyYy9zcGFyYy9mZmkuYyBzcmMveDg2L2RhcndpbjY0LlMgXAotCXNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMgc3JjL3g4Ni93aW4zMi5TIHNyYy94ODYvd2luNjQuUyBcCi0Jc3JjL3g4Ni9kYXJ3aW4uUyBzcmMveDg2L2ZyZWVic2QuUyBcCi0Jc3JjL3g4Ni9mZmk2NC5jIHNyYy94ODYvdW5peDY0LlMgc3JjL3g4Ni9mZml0YXJnZXQuaCBcCi0Jc3JjL3BhL2ZmaXRhcmdldC5oIHNyYy9wYS9mZmkuYyBzcmMvcGEvbGludXguUyBzcmMvcGEvaHB1eDMyLlMgXAotCXNyYy9mcnYvZmZpLmMgc3JjL2Zydi9lYWJpLlMgc3JjL2Zydi9mZml0YXJnZXQuaCBzcmMvZGxtYWxsb2MuYyBcCi0JbGlidG9vbC12ZXJzaW9uIENoYW5nZUxvZy5saWJmZmkgbTQvbGlidG9vbC5tNCBcCi0JbTQvbHR+b2Jzb2xldGUubTQgbTQvbHRvcHRpb25zLm00IG00L2x0c3VnYXIubTQgbTQvbHR2ZXJzaW9uLm00CisJc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9hc20uaCBzcmMvcG93ZXJwYy9haXguUyBcCisJc3JjL3Bvd2VycGMvZGFyd2luLlMgc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUyBcCisJc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgXAorCXNyYy9wb3dlcnBjL2ZmaXRhcmdldC5oIHNyYy9zMzkwL2ZmaS5jIHNyYy9zMzkwL3N5c3YuUyBcCisJc3JjL3MzOTAvZmZpdGFyZ2V0Lmggc3JjL3NoL2ZmaS5jIHNyYy9zaC9zeXN2LlMJXAorCXNyYy9zaC9mZml0YXJnZXQuaCBzcmMvc2g2NC9mZmkuYyBzcmMvc2g2NC9zeXN2LlMgXAorCXNyYy9zaDY0L2ZmaXRhcmdldC5oIHNyYy9zcGFyYy92OC5TIHNyYy9zcGFyYy92OS5TIFwKKwlzcmMvc3BhcmMvZmZpdGFyZ2V0Lmggc3JjL3NwYXJjL2ZmaS5jIHNyYy94ODYvZGFyd2luNjQuUyBcCisJc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUyBzcmMveDg2L3dpbjMyLlMgc3JjL3g4Ni9kYXJ3aW4uUyBcCisJc3JjL3g4Ni93aW42NC5TIHNyYy94ODYvZnJlZWJzZC5TIHNyYy94ODYvZmZpNjQuYyBcCisJc3JjL3g4Ni91bml4NjQuUyBzcmMveDg2L2ZmaXRhcmdldC5oIHNyYy9wYS9mZml0YXJnZXQuaAlcCisJc3JjL3BhL2ZmaS5jIHNyYy9wYS9saW51eC5TIHNyYy9wYS9ocHV4MzIuUyBzcmMvZnJ2L2ZmaS5jIFwKKwlzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaXRhcmdldC5oIHNyYy9kbG1hbGxvYy5jIFwKKwlzcmMvbW94aWUvZmZpLmMgc3JjL21veGllL2VhYmkuUyBsaWJ0b29sLXZlcnNpb24gXAorCUNoYW5nZUxvZy5saWJmZmkgbTQvbGlidG9vbC5tNCBtNC9sdH5vYnNvbGV0ZS5tNCBcCisJbTQvbHRvcHRpb25zLm00IG00L2x0c3VnYXIubTQgbTQvbHR2ZXJzaW9uLm00IFwKKwltNC9sdHZlcnNpb24ubTQgc3JjL2FybS9nZW50cmFtcC5zaCBzcmMvZGVidWcuYyBcCisJbXN2Y2Muc2ggZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weSBcCisJZ2VuZXJhdGUtb3N4LXNvdXJjZS1hbmQtaGVhZGVycy5weSBcCisgICAgICAgIGxpYmZmaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIFwKKwlzcmMvYXJtL3RyYW1wb2xpbmUuUwogCiBpbmZvX1RFWElORk9TID0gZG9jL2xpYmZmaS50ZXhpCiAKQEAgLTY5LDYgKzcyLDcgQEAKIAkiZXhlY19wcmVmaXg9JChleGVjX3ByZWZpeCkiIFwKIAkiaW5mb2Rpcj0kKGluZm9kaXIpIiBcCiAJImxpYmRpcj0kKGxpYmRpcikiIFwKKwkibWFuZGlyPSQobWFuZGlyKSIgXAogCSJwcmVmaXg9JChwcmVmaXgpIiBcCiAJIkFSPSQoQVIpIiBcCiAJIkFTPSQoQVMpIiBcCkBAIC04Niw3ICs5MCw3IEBACiBsaWJfTFRMSUJSQVJJRVMgPSBsaWJmZmkubGEKIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYmZmaV9jb252ZW5pZW5jZS5sYQogCi1saWJmZmlfbGFfU09VUkNFUyA9IHNyYy9kZWJ1Zy5jIHNyYy9wcmVwX2NpZi5jIHNyYy90eXBlcy5jIFwKK2xpYmZmaV9sYV9TT1VSQ0VTID0gc3JjL3ByZXBfY2lmLmMgc3JjL3R5cGVzLmMgXAogCQlzcmMvcmF3X2FwaS5jIHNyYy9qYXZhX3Jhd19hcGkuYyBzcmMvY2xvc3VyZXMuYwogCiBwa2djb25maWdkaXIgPSAkKGxpYmRpcikvcGtnY29uZmlnCkBAIC05NCw2ICs5OCwxMCBAQAogCiBub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgPQogCitpZiBGRklfREVCVUcKK25vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvZGVidWcuYworZW5kaWYKKwogaWYgTUlQUwogbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL28zMi5TIHNyYy9taXBzL24zMi5TCiBlbmRpZgpAQCAtMTQxLDYgKzE0OSw5IEBACiBlbmRpZgogaWYgQVJNCiBub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgKz0gc3JjL2FybS9zeXN2LlMgc3JjL2FybS9mZmkuYworaWYgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQorbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9hcm0vdHJhbXBvbGluZS5TCitlbmRpZgogZW5kaWYKIGlmIEFWUjMyCiBub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgKz0gc3JjL2F2cjMyL3N5c3YuUyBzcmMvYXZyMzIvZmZpLmMKQEAgLTE1MSw2ICsxNjIsOSBAQAogaWYgRlJWCiBub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgKz0gc3JjL2Zydi9lYWJpLlMgc3JjL2Zydi9mZmkuYwogZW5kaWYKK2lmIE1PWElFCitub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgKz0gc3JjL21veGllL2VhYmkuUyBzcmMvbW94aWUvZmZpLmMKK2VuZGlmCiBpZiBTMzkwCiBub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgKz0gc3JjL3MzOTAvc3lzdi5TIHNyYy9zMzkwL2ZmaS5jCiBlbmRpZgpAQCAtMTczLDEyICsxODcsMTcgQEAKIGxpYmZmaV9jb252ZW5pZW5jZV9sYV9TT1VSQ0VTID0gJChsaWJmZmlfbGFfU09VUkNFUykKIG5vZGlzdF9saWJmZmlfY29udmVuaWVuY2VfbGFfU09VUkNFUyA9ICQobm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTKQogCi1BTV9DRkxBR1MgPSAtV2FsbCAtZyAtZmV4Y2VwdGlvbnMKK0FNX0NGTEFHUyA9IC1nCitpZiBGRklfREVCVUcKKyMgQnVpbGQgZGVidWcuIERlZmluZSBGRklfREVCVUcgb24gdGhlIGNvbW1hbmRsaW5lIHNvIHRoYXQsIHdoZW4gYnVpbGRpbmcgd2l0aAorIyBNU1ZDLCBpdCBjYW4gbGluayBhZ2FpbnN0IHRoZSBkZWJ1ZyBDUlQuCitBTV9DRkxBR1MgKz0gLURGRklfREVCVUcKK2VuZGlmCiAKIGxpYmZmaV9sYV9MREZMQUdTID0gLXZlcnNpb24taW5mbyBgZ3JlcCAtdiAnXlwjJyAkKHNyY2RpcikvbGlidG9vbC12ZXJzaW9uYCAkKExUTERGTEFHUykgJChBTV9MVExERkxBR1MpCiAKLUFNX0NQUEZMQUdTID0gLUkuIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1JaW5jbHVkZSAtSSQodG9wX3NyY2Rpcikvc3JjCi1BTV9DQ0FTRkxBR1MgPSAkKEFNX0NQUEZMQUdTKQorQU1fQ1BQRkxBR1MgPSAtSS4gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUlpbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9zcmMgLURGRklfQlVJTERJTkcKK0FNX0NDQVNGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1nCiAKICMgTm8gaW5zdGFsbC1odG1sIG9yIGluc3RhbGwtcGRmIHN1cHBvcnQgaW4gYXV0b21ha2UgeWV0CiAuUEhPTlk6IGluc3RhbGwtaHRtbCBpbnN0YWxsLXBkZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5pbiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuaW4KaW5kZXggNDlhZmNjMS4uNDNlZDg1NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5pbgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmluCkBAIC0xLDkgKzEsOSBAQAotIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMSBmcm9tIE1ha2VmaWxlLmFtLgorIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMS4zIGZyb20gTWFrZWZpbGUuYW0uCiAjIEBjb25maWd1cmVfaW5wdXRACiAKICMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAotIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0jIEluYy4KKyMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KQEAgLTM2LDM4ICszNiw0NSBAQAogYnVpbGRfdHJpcGxldCA9IEBidWlsZEAKIGhvc3RfdHJpcGxldCA9IEBob3N0QAogdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAotQE1JUFNfVFJVRUBhbV9fYXBwZW5kXzEgPSBzcmMvbWlwcy9mZmkuYyBzcmMvbWlwcy9vMzIuUyBzcmMvbWlwcy9uMzIuUwotQFg4Nl9UUlVFQGFtX19hcHBlbmRfMiA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMKLUBYODZfRlJFRUJTRF9UUlVFQGFtX19hcHBlbmRfMyA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni9mcmVlYnNkLlMKLUBYODZfV0lOMzJfVFJVRUBhbV9fYXBwZW5kXzQgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvd2luMzIuUwotQFg4Nl9XSU42NF9UUlVFQGFtX19hcHBlbmRfNSA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni93aW42NC5TCi1AWDg2X0RBUldJTl9UUlVFQGFtX19hcHBlbmRfNiA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni9kYXJ3aW4uUyBzcmMveDg2L2ZmaTY0LmMgc3JjL3g4Ni9kYXJ3aW42NC5TCi1AU1BBUkNfVFJVRUBhbV9fYXBwZW5kXzcgPSBzcmMvc3BhcmMvZmZpLmMgc3JjL3NwYXJjL3Y4LlMgc3JjL3NwYXJjL3Y5LlMKLUBBTFBIQV9UUlVFQGFtX19hcHBlbmRfOCA9IHNyYy9hbHBoYS9mZmkuYyBzcmMvYWxwaGEvb3NmLlMKLUBJQTY0X1RSVUVAYW1fX2FwcGVuZF85ID0gc3JjL2lhNjQvZmZpLmMgc3JjL2lhNjQvdW5peC5TCi1ATTMyUl9UUlVFQGFtX19hcHBlbmRfMTAgPSBzcmMvbTMyci9zeXN2LlMgc3JjL20zMnIvZmZpLmMKLUBNNjhLX1RSVUVAYW1fX2FwcGVuZF8xMSA9IHNyYy9tNjhrL2ZmaS5jIHNyYy9tNjhrL3N5c3YuUwotQFBPV0VSUENfVFJVRUBhbV9fYXBwZW5kXzEyID0gc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIHNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgc3JjL3Bvd2VycGMvbGludXg2NC5TIHNyYy9wb3dlcnBjL2xpbnV4NjRfY2xvc3VyZS5TCi1AUE9XRVJQQ19BSVhfVFJVRUBhbV9fYXBwZW5kXzEzID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIHNyYy9wb3dlcnBjL2FpeC5TIHNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMKLUBQT1dFUlBDX0RBUldJTl9UUlVFQGFtX19hcHBlbmRfMTQgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgc3JjL3Bvd2VycGMvZGFyd2luLlMgc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUwotQFBPV0VSUENfRlJFRUJTRF9UUlVFQGFtX19hcHBlbmRfMTUgPSBzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUwotQEFSTV9UUlVFQGFtX19hcHBlbmRfMTYgPSBzcmMvYXJtL3N5c3YuUyBzcmMvYXJtL2ZmaS5jCi1AQVZSMzJfVFJVRUBhbV9fYXBwZW5kXzE3ID0gc3JjL2F2cjMyL3N5c3YuUyBzcmMvYXZyMzIvZmZpLmMKLUBMSUJGRklfQ1JJU19UUlVFQGFtX19hcHBlbmRfMTggPSBzcmMvY3Jpcy9zeXN2LlMgc3JjL2NyaXMvZmZpLmMKLUBGUlZfVFJVRUBhbV9fYXBwZW5kXzE5ID0gc3JjL2Zydi9lYWJpLlMgc3JjL2Zydi9mZmkuYwotQFMzOTBfVFJVRUBhbV9fYXBwZW5kXzIwID0gc3JjL3MzOTAvc3lzdi5TIHNyYy9zMzkwL2ZmaS5jCi1AWDg2XzY0X1RSVUVAYW1fX2FwcGVuZF8yMSA9IHNyYy94ODYvZmZpNjQuYyBzcmMveDg2L3VuaXg2NC5TIHNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMKLUBTSF9UUlVFQGFtX19hcHBlbmRfMjIgPSBzcmMvc2gvc3lzdi5TIHNyYy9zaC9mZmkuYwotQFNINjRfVFJVRUBhbV9fYXBwZW5kXzIzID0gc3JjL3NoNjQvc3lzdi5TIHNyYy9zaDY0L2ZmaS5jCi1AUEFfTElOVVhfVFJVRUBhbV9fYXBwZW5kXzI0ID0gc3JjL3BhL2xpbnV4LlMgc3JjL3BhL2ZmaS5jCi1AUEFfSFBVWF9UUlVFQGFtX19hcHBlbmRfMjUgPSBzcmMvcGEvaHB1eDMyLlMgc3JjL3BhL2ZmaS5jCitARkZJX0RFQlVHX1RSVUVAYW1fX2FwcGVuZF8xID0gc3JjL2RlYnVnLmMKK0BNSVBTX1RSVUVAYW1fX2FwcGVuZF8yID0gc3JjL21pcHMvZmZpLmMgc3JjL21pcHMvbzMyLlMgc3JjL21pcHMvbjMyLlMKK0BYODZfVFJVRUBhbV9fYXBwZW5kXzMgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TCitAWDg2X0ZSRUVCU0RfVFJVRUBhbV9fYXBwZW5kXzQgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvZnJlZWJzZC5TCitAWDg2X1dJTjMyX1RSVUVAYW1fX2FwcGVuZF81ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3dpbjMyLlMKK0BYODZfV0lONjRfVFJVRUBhbV9fYXBwZW5kXzYgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvd2luNjQuUworQFg4Nl9EQVJXSU5fVFJVRUBhbV9fYXBwZW5kXzcgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvZGFyd2luLlMgc3JjL3g4Ni9mZmk2NC5jIHNyYy94ODYvZGFyd2luNjQuUworQFNQQVJDX1RSVUVAYW1fX2FwcGVuZF84ID0gc3JjL3NwYXJjL2ZmaS5jIHNyYy9zcGFyYy92OC5TIHNyYy9zcGFyYy92OS5TCitAQUxQSEFfVFJVRUBhbV9fYXBwZW5kXzkgPSBzcmMvYWxwaGEvZmZpLmMgc3JjL2FscGhhL29zZi5TCitASUE2NF9UUlVFQGFtX19hcHBlbmRfMTAgPSBzcmMvaWE2NC9mZmkuYyBzcmMvaWE2NC91bml4LlMKK0BNMzJSX1RSVUVAYW1fX2FwcGVuZF8xMSA9IHNyYy9tMzJyL3N5c3YuUyBzcmMvbTMyci9mZmkuYworQE02OEtfVFJVRUBhbV9fYXBwZW5kXzEyID0gc3JjL202OGsvZmZpLmMgc3JjL202OGsvc3lzdi5TCitAUE9XRVJQQ19UUlVFQGFtX19hcHBlbmRfMTMgPSBzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9saW51eDY0LlMgc3JjL3Bvd2VycGMvbGludXg2NF9jbG9zdXJlLlMKK0BQT1dFUlBDX0FJWF9UUlVFQGFtX19hcHBlbmRfMTQgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgc3JjL3Bvd2VycGMvYWl4LlMgc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUworQFBPV0VSUENfREFSV0lOX1RSVUVAYW1fX2FwcGVuZF8xNSA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBzcmMvcG93ZXJwYy9kYXJ3aW4uUyBzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TCitAUE9XRVJQQ19GUkVFQlNEX1RSVUVAYW1fX2FwcGVuZF8xNiA9IHNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TCitAQVJNX1RSVUVAYW1fX2FwcGVuZF8xNyA9IHNyYy9hcm0vc3lzdi5TIHNyYy9hcm0vZmZpLmMKK0BBUk1fVFJVRUBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9UUlVFQGFtX19hcHBlbmRfMTggPSBzcmMvYXJtL3RyYW1wb2xpbmUuUworQEFWUjMyX1RSVUVAYW1fX2FwcGVuZF8xOSA9IHNyYy9hdnIzMi9zeXN2LlMgc3JjL2F2cjMyL2ZmaS5jCitATElCRkZJX0NSSVNfVFJVRUBhbV9fYXBwZW5kXzIwID0gc3JjL2NyaXMvc3lzdi5TIHNyYy9jcmlzL2ZmaS5jCitARlJWX1RSVUVAYW1fX2FwcGVuZF8yMSA9IHNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpLmMKK0BNT1hJRV9UUlVFQGFtX19hcHBlbmRfMjIgPSBzcmMvbW94aWUvZWFiaS5TIHNyYy9tb3hpZS9mZmkuYworQFMzOTBfVFJVRUBhbV9fYXBwZW5kXzIzID0gc3JjL3MzOTAvc3lzdi5TIHNyYy9zMzkwL2ZmaS5jCitAWDg2XzY0X1RSVUVAYW1fX2FwcGVuZF8yNCA9IHNyYy94ODYvZmZpNjQuYyBzcmMveDg2L3VuaXg2NC5TIHNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMKK0BTSF9UUlVFQGFtX19hcHBlbmRfMjUgPSBzcmMvc2gvc3lzdi5TIHNyYy9zaC9mZmkuYworQFNINjRfVFJVRUBhbV9fYXBwZW5kXzI2ID0gc3JjL3NoNjQvc3lzdi5TIHNyYy9zaDY0L2ZmaS5jCitAUEFfTElOVVhfVFJVRUBhbV9fYXBwZW5kXzI3ID0gc3JjL3BhL2xpbnV4LlMgc3JjL3BhL2ZmaS5jCitAUEFfSFBVWF9UUlVFQGFtX19hcHBlbmRfMjggPSBzcmMvcGEvaHB1eDMyLlMgc3JjL3BhL2ZmaS5jCisjIEJ1aWxkIGRlYnVnLiBEZWZpbmUgRkZJX0RFQlVHIG9uIHRoZSBjb21tYW5kbGluZSBzbyB0aGF0LCB3aGVuIGJ1aWxkaW5nIHdpdGgKKyMgTVNWQywgaXQgY2FuIGxpbmsgYWdhaW5zdCB0aGUgZGVidWcgQ1JULgorQEZGSV9ERUJVR19UUlVFQGFtX19hcHBlbmRfMjkgPSAtREZGSV9ERUJVRwogc3ViZGlyID0gLgogRElTVF9DT01NT04gPSBSRUFETUUgJChhbV9fY29uZmlndXJlX2RlcHMpICQoc3JjZGlyKS9NYWtlZmlsZS5hbSBcCiAJJChzcmNkaXIpL01ha2VmaWxlLmluICQoc3JjZGlyKS9kb2Mvc3RhbXAtdnRpIFwKIAkkKHNyY2RpcikvZG9jL3ZlcnNpb24udGV4aSAkKHNyY2RpcikvZmZpY29uZmlnLmguaW4gXAotCSQoc3JjZGlyKS9saWJmZmkucGMuaW4gJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUgQ2hhbmdlTG9nIFwKLQljb21waWxlIGNvbmZpZy5ndWVzcyBjb25maWcuc3ViIGRlcGNvbXAgaW5zdGFsbC1zaCBsdG1haW4uc2ggXAotCW1kYXRlLXNoIG1pc3NpbmcgdGV4aW5mby50ZXgKKwkkKHNyY2RpcikvZmZpY29uZmlnLnB5LmluICQoc3JjZGlyKS9saWJmZmkucGMuaW4gXAorCSQodG9wX3NyY2RpcikvY29uZmlndXJlIENoYW5nZUxvZyBjb21waWxlIGNvbmZpZy5ndWVzcyBcCisJY29uZmlnLnN1YiBkZXBjb21wIGluc3RhbGwtc2ggbHRtYWluLnNoIG1kYXRlLXNoIG1pc3NpbmcgXAorCXRleGluZm8udGV4CiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CiBhbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9hY2luY2x1ZGUubTQgXAogCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCkBAIC03Nyw3ICs4NCw3IEBACiAgY29uZmlndXJlLmxpbmVubyBjb25maWcuc3RhdHVzLmxpbmVubwogbWtpbnN0YWxsZGlycyA9ICQoaW5zdGFsbF9zaCkgLWQKIENPTkZJR19IRUFERVIgPSBmZmljb25maWcuaAotQ09ORklHX0NMRUFOX0ZJTEVTID0gbGliZmZpLnBjCitDT05GSUdfQ0xFQU5fRklMRVMgPSBsaWJmZmkucGMgZmZpY29uZmlnLnB5CiBDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPQogYW1fX3ZwYXRoX2Fkal9zZXR1cCA9IHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzfC58LnxnJ2A7CiBhbV9fdnBhdGhfYWRqID0gY2FzZSAkJHAgaW4gXApAQCAtMTAwLDUxICsxMDcsNjAgQEAKIGFtX19iYXNlX2xpc3QgPSBcCiAgIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycgfCBcCiAgIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycKK2FtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIgPSB7IFwKKyAgdGVzdCAteiAiJCRmaWxlcyIgXAorICAgIHx8IHsgdGVzdCAhIC1kICIkJGRpciIgJiYgdGVzdCAhIC1mICIkJGRpciIgJiYgdGVzdCAhIC1yICIkJGRpciI7IH0gXAorICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKKyAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKKyAgfQogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGxpYmRpcikiICIkKERFU1RESVIpJChpbmZvZGlyKSIgXAogCSIkKERFU1RESVIpJChwa2djb25maWdkaXIpIgogTFRMSUJSQVJJRVMgPSAkKGxpYl9MVExJQlJBUklFUykgJChub2luc3RfTFRMSUJSQVJJRVMpCiBsaWJmZmlfbGFfTElCQUREID0KIGFtX19kaXJzdGFtcCA9ICQoYW1fX2xlYWRpbmdfZG90KWRpcnN0YW1wCi1hbV9saWJmZmlfbGFfT0JKRUNUUyA9IHNyYy9kZWJ1Zy5sbyBzcmMvcHJlcF9jaWYubG8gc3JjL3R5cGVzLmxvIFwKLQlzcmMvcmF3X2FwaS5sbyBzcmMvamF2YV9yYXdfYXBpLmxvIHNyYy9jbG9zdXJlcy5sbwotQE1JUFNfVFJVRUBhbV9fb2JqZWN0c18xID0gc3JjL21pcHMvZmZpLmxvIHNyYy9taXBzL28zMi5sbyBcCithbV9saWJmZmlfbGFfT0JKRUNUUyA9IHNyYy9wcmVwX2NpZi5sbyBzcmMvdHlwZXMubG8gc3JjL3Jhd19hcGkubG8gXAorCXNyYy9qYXZhX3Jhd19hcGkubG8gc3JjL2Nsb3N1cmVzLmxvCitARkZJX0RFQlVHX1RSVUVAYW1fX29iamVjdHNfMSA9IHNyYy9kZWJ1Zy5sbworQE1JUFNfVFJVRUBhbV9fb2JqZWN0c18yID0gc3JjL21pcHMvZmZpLmxvIHNyYy9taXBzL28zMi5sbyBcCiBATUlQU19UUlVFQAlzcmMvbWlwcy9uMzIubG8KLUBYODZfVFJVRUBhbV9fb2JqZWN0c18yID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni9zeXN2LmxvCi1AWDg2X0ZSRUVCU0RfVFJVRUBhbV9fb2JqZWN0c18zID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni9mcmVlYnNkLmxvCi1AWDg2X1dJTjMyX1RSVUVAYW1fX29iamVjdHNfNCA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvd2luMzIubG8KLUBYODZfV0lONjRfVFJVRUBhbV9fb2JqZWN0c181ID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni93aW42NC5sbwotQFg4Nl9EQVJXSU5fVFJVRUBhbV9fb2JqZWN0c182ID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni9kYXJ3aW4ubG8gXAorQFg4Nl9UUlVFQGFtX19vYmplY3RzXzMgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3N5c3YubG8KK0BYODZfRlJFRUJTRF9UUlVFQGFtX19vYmplY3RzXzQgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L2ZyZWVic2QubG8KK0BYODZfV0lOMzJfVFJVRUBhbV9fb2JqZWN0c181ID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni93aW4zMi5sbworQFg4Nl9XSU42NF9UUlVFQGFtX19vYmplY3RzXzYgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3dpbjY0LmxvCitAWDg2X0RBUldJTl9UUlVFQGFtX19vYmplY3RzXzcgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L2Rhcndpbi5sbyBcCiBAWDg2X0RBUldJTl9UUlVFQAlzcmMveDg2L2ZmaTY0LmxvIHNyYy94ODYvZGFyd2luNjQubG8KLUBTUEFSQ19UUlVFQGFtX19vYmplY3RzXzcgPSBzcmMvc3BhcmMvZmZpLmxvIHNyYy9zcGFyYy92OC5sbyBcCitAU1BBUkNfVFJVRUBhbV9fb2JqZWN0c184ID0gc3JjL3NwYXJjL2ZmaS5sbyBzcmMvc3BhcmMvdjgubG8gXAogQFNQQVJDX1RSVUVACXNyYy9zcGFyYy92OS5sbwotQEFMUEhBX1RSVUVAYW1fX29iamVjdHNfOCA9IHNyYy9hbHBoYS9mZmkubG8gc3JjL2FscGhhL29zZi5sbwotQElBNjRfVFJVRUBhbV9fb2JqZWN0c185ID0gc3JjL2lhNjQvZmZpLmxvIHNyYy9pYTY0L3VuaXgubG8KLUBNMzJSX1RSVUVAYW1fX29iamVjdHNfMTAgPSBzcmMvbTMyci9zeXN2LmxvIHNyYy9tMzJyL2ZmaS5sbwotQE02OEtfVFJVRUBhbV9fb2JqZWN0c18xMSA9IHNyYy9tNjhrL2ZmaS5sbyBzcmMvbTY4ay9zeXN2LmxvCi1AUE9XRVJQQ19UUlVFQGFtX19vYmplY3RzXzEyID0gc3JjL3Bvd2VycGMvZmZpLmxvIHNyYy9wb3dlcnBjL3N5c3YubG8gXAorQEFMUEhBX1RSVUVAYW1fX29iamVjdHNfOSA9IHNyYy9hbHBoYS9mZmkubG8gc3JjL2FscGhhL29zZi5sbworQElBNjRfVFJVRUBhbV9fb2JqZWN0c18xMCA9IHNyYy9pYTY0L2ZmaS5sbyBzcmMvaWE2NC91bml4LmxvCitATTMyUl9UUlVFQGFtX19vYmplY3RzXzExID0gc3JjL20zMnIvc3lzdi5sbyBzcmMvbTMyci9mZmkubG8KK0BNNjhLX1RSVUVAYW1fX29iamVjdHNfMTIgPSBzcmMvbTY4ay9mZmkubG8gc3JjL202OGsvc3lzdi5sbworQFBPV0VSUENfVFJVRUBhbV9fb2JqZWN0c18xMyA9IHNyYy9wb3dlcnBjL2ZmaS5sbyBzcmMvcG93ZXJwYy9zeXN2LmxvIFwKIEBQT1dFUlBDX1RSVUVACXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLmxvIFwKIEBQT1dFUlBDX1RSVUVACXNyYy9wb3dlcnBjL2xpbnV4NjQubG8gXAogQFBPV0VSUENfVFJVRUAJc3JjL3Bvd2VycGMvbGludXg2NF9jbG9zdXJlLmxvCi1AUE9XRVJQQ19BSVhfVFJVRUBhbV9fb2JqZWN0c18xMyA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4ubG8gXAorQFBPV0VSUENfQUlYX1RSVUVAYW1fX29iamVjdHNfMTQgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmxvIFwKIEBQT1dFUlBDX0FJWF9UUlVFQAlzcmMvcG93ZXJwYy9haXgubG8gXAogQFBPV0VSUENfQUlYX1RSVUVACXNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLmxvCi1AUE9XRVJQQ19EQVJXSU5fVFJVRUBhbV9fb2JqZWN0c18xNCA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4ubG8gXAorQFBPV0VSUENfREFSV0lOX1RSVUVAYW1fX29iamVjdHNfMTUgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmxvIFwKIEBQT1dFUlBDX0RBUldJTl9UUlVFQAlzcmMvcG93ZXJwYy9kYXJ3aW4ubG8gXAogQFBPV0VSUENfREFSV0lOX1RSVUVACXNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLmxvCi1AUE9XRVJQQ19GUkVFQlNEX1RSVUVAYW1fX29iamVjdHNfMTUgPSBzcmMvcG93ZXJwYy9mZmkubG8gXAorQFBPV0VSUENfRlJFRUJTRF9UUlVFQGFtX19vYmplY3RzXzE2ID0gc3JjL3Bvd2VycGMvZmZpLmxvIFwKIEBQT1dFUlBDX0ZSRUVCU0RfVFJVRUAJc3JjL3Bvd2VycGMvc3lzdi5sbyBcCiBAUE9XRVJQQ19GUkVFQlNEX1RSVUVACXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLmxvCi1AQVJNX1RSVUVAYW1fX29iamVjdHNfMTYgPSBzcmMvYXJtL3N5c3YubG8gc3JjL2FybS9mZmkubG8KLUBBVlIzMl9UUlVFQGFtX19vYmplY3RzXzE3ID0gc3JjL2F2cjMyL3N5c3YubG8gc3JjL2F2cjMyL2ZmaS5sbwotQExJQkZGSV9DUklTX1RSVUVAYW1fX29iamVjdHNfMTggPSBzcmMvY3Jpcy9zeXN2LmxvIHNyYy9jcmlzL2ZmaS5sbwotQEZSVl9UUlVFQGFtX19vYmplY3RzXzE5ID0gc3JjL2Zydi9lYWJpLmxvIHNyYy9mcnYvZmZpLmxvCi1AUzM5MF9UUlVFQGFtX19vYmplY3RzXzIwID0gc3JjL3MzOTAvc3lzdi5sbyBzcmMvczM5MC9mZmkubG8KLUBYODZfNjRfVFJVRUBhbV9fb2JqZWN0c18yMSA9IHNyYy94ODYvZmZpNjQubG8gc3JjL3g4Ni91bml4NjQubG8gXAorQEFSTV9UUlVFQGFtX19vYmplY3RzXzE3ID0gc3JjL2FybS9zeXN2LmxvIHNyYy9hcm0vZmZpLmxvCitAQVJNX1RSVUVAQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfVFJVRUBhbV9fb2JqZWN0c18xOCA9IHNyYy9hcm0vdHJhbXBvbGluZS5sbworQEFWUjMyX1RSVUVAYW1fX29iamVjdHNfMTkgPSBzcmMvYXZyMzIvc3lzdi5sbyBzcmMvYXZyMzIvZmZpLmxvCitATElCRkZJX0NSSVNfVFJVRUBhbV9fb2JqZWN0c18yMCA9IHNyYy9jcmlzL3N5c3YubG8gc3JjL2NyaXMvZmZpLmxvCitARlJWX1RSVUVAYW1fX29iamVjdHNfMjEgPSBzcmMvZnJ2L2VhYmkubG8gc3JjL2Zydi9mZmkubG8KK0BNT1hJRV9UUlVFQGFtX19vYmplY3RzXzIyID0gc3JjL21veGllL2VhYmkubG8gc3JjL21veGllL2ZmaS5sbworQFMzOTBfVFJVRUBhbV9fb2JqZWN0c18yMyA9IHNyYy9zMzkwL3N5c3YubG8gc3JjL3MzOTAvZmZpLmxvCitAWDg2XzY0X1RSVUVAYW1fX29iamVjdHNfMjQgPSBzcmMveDg2L2ZmaTY0LmxvIHNyYy94ODYvdW5peDY0LmxvIFwKIEBYODZfNjRfVFJVRUAJc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni9zeXN2LmxvCi1AU0hfVFJVRUBhbV9fb2JqZWN0c18yMiA9IHNyYy9zaC9zeXN2LmxvIHNyYy9zaC9mZmkubG8KLUBTSDY0X1RSVUVAYW1fX29iamVjdHNfMjMgPSBzcmMvc2g2NC9zeXN2LmxvIHNyYy9zaDY0L2ZmaS5sbwotQFBBX0xJTlVYX1RSVUVAYW1fX29iamVjdHNfMjQgPSBzcmMvcGEvbGludXgubG8gc3JjL3BhL2ZmaS5sbwotQFBBX0hQVVhfVFJVRUBhbV9fb2JqZWN0c18yNSA9IHNyYy9wYS9ocHV4MzIubG8gc3JjL3BhL2ZmaS5sbworQFNIX1RSVUVAYW1fX29iamVjdHNfMjUgPSBzcmMvc2gvc3lzdi5sbyBzcmMvc2gvZmZpLmxvCitAU0g2NF9UUlVFQGFtX19vYmplY3RzXzI2ID0gc3JjL3NoNjQvc3lzdi5sbyBzcmMvc2g2NC9mZmkubG8KK0BQQV9MSU5VWF9UUlVFQGFtX19vYmplY3RzXzI3ID0gc3JjL3BhL2xpbnV4LmxvIHNyYy9wYS9mZmkubG8KK0BQQV9IUFVYX1RSVUVAYW1fX29iamVjdHNfMjggPSBzcmMvcGEvaHB1eDMyLmxvIHNyYy9wYS9mZmkubG8KIG5vZGlzdF9saWJmZmlfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMSkgJChhbV9fb2JqZWN0c18yKSBcCiAJJChhbV9fb2JqZWN0c18zKSAkKGFtX19vYmplY3RzXzQpICQoYW1fX29iamVjdHNfNSkgXAogCSQoYW1fX29iamVjdHNfNikgJChhbV9fb2JqZWN0c183KSAkKGFtX19vYmplY3RzXzgpIFwKQEAgLTE1MywxNyArMTY5LDE4IEBACiAJJChhbV9fb2JqZWN0c18xNSkgJChhbV9fb2JqZWN0c18xNikgJChhbV9fb2JqZWN0c18xNykgXAogCSQoYW1fX29iamVjdHNfMTgpICQoYW1fX29iamVjdHNfMTkpICQoYW1fX29iamVjdHNfMjApIFwKIAkkKGFtX19vYmplY3RzXzIxKSAkKGFtX19vYmplY3RzXzIyKSAkKGFtX19vYmplY3RzXzIzKSBcCi0JJChhbV9fb2JqZWN0c18yNCkgJChhbV9fb2JqZWN0c18yNSkKKwkkKGFtX19vYmplY3RzXzI0KSAkKGFtX19vYmplY3RzXzI1KSAkKGFtX19vYmplY3RzXzI2KSBcCisJJChhbV9fb2JqZWN0c18yNykgJChhbV9fb2JqZWN0c18yOCkKIGxpYmZmaV9sYV9PQkpFQ1RTID0gJChhbV9saWJmZmlfbGFfT0JKRUNUUykgXAogCSQobm9kaXN0X2xpYmZmaV9sYV9PQkpFQ1RTKQogbGliZmZpX2xhX0xJTksgPSAkKExJQlRPT0wpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSBcCiAJJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSBcCiAJJChsaWJmZmlfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAogbGliZmZpX2NvbnZlbmllbmNlX2xhX0xJQkFERCA9Ci1hbV9fb2JqZWN0c18yNiA9IHNyYy9kZWJ1Zy5sbyBzcmMvcHJlcF9jaWYubG8gc3JjL3R5cGVzLmxvIFwKLQlzcmMvcmF3X2FwaS5sbyBzcmMvamF2YV9yYXdfYXBpLmxvIHNyYy9jbG9zdXJlcy5sbwotYW1fbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzI2KQotYW1fX29iamVjdHNfMjcgPSAkKGFtX19vYmplY3RzXzEpICQoYW1fX29iamVjdHNfMikgJChhbV9fb2JqZWN0c18zKSBcCithbV9fb2JqZWN0c18yOSA9IHNyYy9wcmVwX2NpZi5sbyBzcmMvdHlwZXMubG8gc3JjL3Jhd19hcGkubG8gXAorCXNyYy9qYXZhX3Jhd19hcGkubG8gc3JjL2Nsb3N1cmVzLmxvCithbV9saWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMjkpCithbV9fb2JqZWN0c18zMCA9ICQoYW1fX29iamVjdHNfMSkgJChhbV9fb2JqZWN0c18yKSAkKGFtX19vYmplY3RzXzMpIFwKIAkkKGFtX19vYmplY3RzXzQpICQoYW1fX29iamVjdHNfNSkgJChhbV9fb2JqZWN0c182KSBcCiAJJChhbV9fb2JqZWN0c183KSAkKGFtX19vYmplY3RzXzgpICQoYW1fX29iamVjdHNfOSkgXAogCSQoYW1fX29iamVjdHNfMTApICQoYW1fX29iamVjdHNfMTEpICQoYW1fX29iamVjdHNfMTIpIFwKQEAgLTE3MSw4ICsxODgsOSBAQAogCSQoYW1fX29iamVjdHNfMTYpICQoYW1fX29iamVjdHNfMTcpICQoYW1fX29iamVjdHNfMTgpIFwKIAkkKGFtX19vYmplY3RzXzE5KSAkKGFtX19vYmplY3RzXzIwKSAkKGFtX19vYmplY3RzXzIxKSBcCiAJJChhbV9fb2JqZWN0c18yMikgJChhbV9fb2JqZWN0c18yMykgJChhbV9fb2JqZWN0c18yNCkgXAotCSQoYW1fX29iamVjdHNfMjUpCi1ub2Rpc3RfbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzI3KQorCSQoYW1fX29iamVjdHNfMjUpICQoYW1fX29iamVjdHNfMjYpICQoYW1fX29iamVjdHNfMjcpIFwKKwkkKGFtX19vYmplY3RzXzI4KQorbm9kaXN0X2xpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18zMCkKIGxpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTID0gJChhbV9saWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUykgXAogCSQobm9kaXN0X2xpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTKQogREVGQVVMVF9JTkNMVURFUyA9IC1JLkBhbV9faXNyY0AKQEAgLTIyOSw5ICsyNDcsMTEgQEAKIGRpc3RkaXIgPSAkKFBBQ0tBR0UpLSQoVkVSU0lPTikKIHRvcF9kaXN0ZGlyID0gJChkaXN0ZGlyKQogYW1fX3JlbW92ZV9kaXN0ZGlyID0gXAotICB7IHRlc3QgISAtZCAiJChkaXN0ZGlyKSIgXAotICAgIHx8IHsgZmluZCAiJChkaXN0ZGlyKSIgLXR5cGUgZCAhIC1wZXJtIC0yMDAgLWV4ZWMgY2htb2QgdSt3IHt9ICc7JyBcCi0gICAgICAgICAmJiBybSAtZnIgIiQoZGlzdGRpcikiOyB9OyB9CisgIGlmIHRlc3QgLWQgIiQoZGlzdGRpcikiOyB0aGVuIFwKKyAgICBmaW5kICIkKGRpc3RkaXIpIiAtdHlwZSBkICEgLXBlcm0gLTIwMCAtZXhlYyBjaG1vZCB1K3cge30gJzsnIFwKKyAgICAgICYmIHJtIC1yZiAiJChkaXN0ZGlyKSIgXAorICAgICAgfHwgeyBzbGVlcCA1ICYmIHJtIC1yZiAiJChkaXN0ZGlyKSI7IH07IFwKKyAgZWxzZSA6OyBmaQogYW1fX3JlbGF0aXZpemUgPSBcCiAgIGRpcjA9YHB3ZGA7IFwKICAgc2VkX2ZpcnN0PSdzLF5cKFteL10qXCkvLiokJCxcMSwnOyBcCkBAIC0yNjAsNiArMjgwLDggQEAKIERJU1RfQVJDSElWRVMgPSAkKGRpc3RkaXIpLnRhci5negogR1pJUF9FTlYgPSAtLWJlc3QKIGRpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMgPSBmaW5kIC4gLXR5cGUgZiAtcHJpbnQKK2FtX19kaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzID0gJChkaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzKSBcCisgIHwgc2VkICdzfF5cLi98JChwcmVmaXgpL3wnIHwgZ3JlcCAtdiAnJChpbmZvZGlyKS9kaXIkJCcKIGRpc3RjbGVhbmNoZWNrX2xpc3RmaWxlcyA9IGZpbmQgLiAtdHlwZSBmIC1wcmludAogQUNMT0NBTCA9IEBBQ0xPQ0FMQAogQUxMT0NBID0gQEFMTE9DQUAKQEAgLTI4Miw2ICszMDQsNyBAQAogQ1lHUEFUSF9XID0gQENZR1BBVEhfV0AKIERFRlMgPSBAREVGU0AKIERFUERJUiA9IEBERVBESVJACitETExUT09MID0gQERMTFRPT0xACiBEU1lNVVRJTCA9IEBEU1lNVVRJTEAKIERVTVBCSU4gPSBARFVNUEJJTkAKIEVDSE9fQyA9IEBFQ0hPX0NACkBAIC0yODksNiArMzEyLDcgQEAKIEVDSE9fVCA9IEBFQ0hPX1RACiBFR1JFUCA9IEBFR1JFUEAKIEVYRUVYVCA9IEBFWEVFWFRACitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFID0gQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVACiBGR1JFUCA9IEBGR1JFUEAKIEdSRVAgPSBAR1JFUEAKIEhBVkVfTE9OR19ET1VCTEUgPSBASEFWRV9MT05HX0RPVUJMRUAKQEAgLTMwNyw2ICszMzEsNyBAQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACitNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACiBNS0RJUl9QID0gQE1LRElSX1BACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACkBAIC0zMTksNiArMzQ0LDcgQEAKIFBBQ0tBR0VfTkFNRSA9IEBQQUNLQUdFX05BTUVACiBQQUNLQUdFX1NUUklORyA9IEBQQUNLQUdFX1NUUklOR0AKIFBBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVACitQQUNLQUdFX1VSTCA9IEBQQUNLQUdFX1VSTEAKIFBBQ0tBR0VfVkVSU0lPTiA9IEBQQUNLQUdFX1ZFUlNJT05ACiBQQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkAKIFJBTkxJQiA9IEBSQU5MSUJACkBAIC0zMzMsNiArMzU5LDcgQEAKIGFic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKIGFic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKIGFic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorYWNfY3RfQVIgPSBAYWNfY3RfQVJACiBhY19jdF9DQyA9IEBhY19jdF9DQ0AKIGFjX2N0X0RVTVBCSU4gPSBAYWNfY3RfRFVNUEJJTkAKIGFtX19pbmNsdWRlID0gQGFtX19pbmNsdWRlQApAQCAtMzY1LDcgKzM5Miw2IEBACiBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACiBsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAogbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAotbHRfRUNITyA9IEBsdF9FQ0hPQAogbWFuZGlyID0gQG1hbmRpckAKIG1rZGlyX3AgPSBAbWtkaXJfcEAKIG9sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKQEAgLTM5NSwyOSArNDIxLDMyIEBACiAJc3JjL2F2cjMyL2ZmaS5jIHNyYy9hdnIzMi9zeXN2LlMgc3JjL2F2cjMyL2ZmaXRhcmdldC5oIFwKIAlzcmMvY3Jpcy9mZmkuYyBzcmMvY3Jpcy9zeXN2LlMgc3JjL2NyaXMvZmZpdGFyZ2V0LmggXAogCXNyYy9pYTY0L2ZmaS5jIHNyYy9pYTY0L2ZmaXRhcmdldC5oIHNyYy9pYTY0L2lhNjRfZmxhZ3MuaCBcCi0Jc3JjL2lhNjQvdW5peC5TIFwKLQlzcmMvbWlwcy9mZmkuYyBzcmMvbWlwcy9uMzIuUyBzcmMvbWlwcy9vMzIuUyBcCi0Jc3JjL21pcHMvZmZpdGFyZ2V0LmggXAotCXNyYy9tMzJyL2ZmaS5jIHNyYy9tMzJyL3N5c3YuUyBzcmMvbTMyci9mZml0YXJnZXQuaCBcCi0Jc3JjL202OGsvZmZpLmMgc3JjL202OGsvc3lzdi5TIHNyYy9tNjhrL2ZmaXRhcmdldC5oIFwKLQlzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgXAorCXNyYy9pYTY0L3VuaXguUyBzcmMvbWlwcy9mZmkuYyBzcmMvbWlwcy9uMzIuUyBzcmMvbWlwcy9vMzIuUyBcCisJc3JjL21pcHMvZmZpdGFyZ2V0Lmggc3JjL20zMnIvZmZpLmMgc3JjL20zMnIvc3lzdi5TIFwKKwlzcmMvbTMyci9mZml0YXJnZXQuaCBzcmMvbTY4ay9mZmkuYyBzcmMvbTY4ay9zeXN2LlMgXAorCXNyYy9tNjhrL2ZmaXRhcmdldC5oIHNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBcCiAJc3JjL3Bvd2VycGMvbGludXg2NC5TIHNyYy9wb3dlcnBjL2xpbnV4NjRfY2xvc3VyZS5TIFwKLQlzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2FzbS5oIFwKLQlzcmMvcG93ZXJwYy9haXguUyBzcmMvcG93ZXJwYy9kYXJ3aW4uUyBcCi0Jc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TIFwKLQlzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmggXAotCXNyYy9zMzkwL2ZmaS5jIHNyYy9zMzkwL3N5c3YuUyBzcmMvczM5MC9mZml0YXJnZXQuaCBcCi0Jc3JjL3NoL2ZmaS5jIHNyYy9zaC9zeXN2LlMgc3JjL3NoL2ZmaXRhcmdldC5oIFwKLQlzcmMvc2g2NC9mZmkuYyBzcmMvc2g2NC9zeXN2LlMgc3JjL3NoNjQvZmZpdGFyZ2V0LmggXAotCXNyYy9zcGFyYy92OC5TIHNyYy9zcGFyYy92OS5TIHNyYy9zcGFyYy9mZml0YXJnZXQuaCBcCi0Jc3JjL3NwYXJjL2ZmaS5jIHNyYy94ODYvZGFyd2luNjQuUyBcCi0Jc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUyBzcmMveDg2L3dpbjMyLlMgc3JjL3g4Ni93aW42NC5TIFwKLQlzcmMveDg2L2Rhcndpbi5TIHNyYy94ODYvZnJlZWJzZC5TIFwKLQlzcmMveDg2L2ZmaTY0LmMgc3JjL3g4Ni91bml4NjQuUyBzcmMveDg2L2ZmaXRhcmdldC5oIFwKLQlzcmMvcGEvZmZpdGFyZ2V0Lmggc3JjL3BhL2ZmaS5jIHNyYy9wYS9saW51eC5TIHNyYy9wYS9ocHV4MzIuUyBcCi0Jc3JjL2Zydi9mZmkuYyBzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaXRhcmdldC5oIHNyYy9kbG1hbGxvYy5jIFwKLQlsaWJ0b29sLXZlcnNpb24gQ2hhbmdlTG9nLmxpYmZmaSBtNC9saWJ0b29sLm00IFwKLQltNC9sdH5vYnNvbGV0ZS5tNCBtNC9sdG9wdGlvbnMubTQgbTQvbHRzdWdhci5tNCBtNC9sdHZlcnNpb24ubTQKKwlzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2FzbS5oIHNyYy9wb3dlcnBjL2FpeC5TIFwKKwlzcmMvcG93ZXJwYy9kYXJ3aW4uUyBzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TIFwKKwlzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBcCisJc3JjL3Bvd2VycGMvZmZpdGFyZ2V0Lmggc3JjL3MzOTAvZmZpLmMgc3JjL3MzOTAvc3lzdi5TIFwKKwlzcmMvczM5MC9mZml0YXJnZXQuaCBzcmMvc2gvZmZpLmMgc3JjL3NoL3N5c3YuUwlcCisJc3JjL3NoL2ZmaXRhcmdldC5oIHNyYy9zaDY0L2ZmaS5jIHNyYy9zaDY0L3N5c3YuUyBcCisJc3JjL3NoNjQvZmZpdGFyZ2V0Lmggc3JjL3NwYXJjL3Y4LlMgc3JjL3NwYXJjL3Y5LlMgXAorCXNyYy9zcGFyYy9mZml0YXJnZXQuaCBzcmMvc3BhcmMvZmZpLmMgc3JjL3g4Ni9kYXJ3aW42NC5TIFwKKwlzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TIHNyYy94ODYvd2luMzIuUyBzcmMveDg2L2Rhcndpbi5TIFwKKwlzcmMveDg2L3dpbjY0LlMgc3JjL3g4Ni9mcmVlYnNkLlMgc3JjL3g4Ni9mZmk2NC5jIFwKKwlzcmMveDg2L3VuaXg2NC5TIHNyYy94ODYvZmZpdGFyZ2V0Lmggc3JjL3BhL2ZmaXRhcmdldC5oCVwKKwlzcmMvcGEvZmZpLmMgc3JjL3BhL2xpbnV4LlMgc3JjL3BhL2hwdXgzMi5TIHNyYy9mcnYvZmZpLmMgXAorCXNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpdGFyZ2V0Lmggc3JjL2RsbWFsbG9jLmMgXAorCXNyYy9tb3hpZS9mZmkuYyBzcmMvbW94aWUvZWFiaS5TIGxpYnRvb2wtdmVyc2lvbiBcCisJQ2hhbmdlTG9nLmxpYmZmaSBtNC9saWJ0b29sLm00IG00L2x0fm9ic29sZXRlLm00IFwKKwltNC9sdG9wdGlvbnMubTQgbTQvbHRzdWdhci5tNCBtNC9sdHZlcnNpb24ubTQgXAorCW00L2x0dmVyc2lvbi5tNCBzcmMvYXJtL2dlbnRyYW1wLnNoIHNyYy9kZWJ1Zy5jIFwKKwltc3ZjYy5zaCBnZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5IFwKKwlnZW5lcmF0ZS1vc3gtc291cmNlLWFuZC1oZWFkZXJzLnB5IFwKKyAgICAgICAgbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogXAorCXNyYy9hcm0vdHJhbXBvbGluZS5TCiAKIGluZm9fVEVYSU5GT1MgPSBkb2MvbGliZmZpLnRleGkKIApAQCAtNDQ4LDYgKzQ3Nyw3IEBACiAJImV4ZWNfcHJlZml4PSQoZXhlY19wcmVmaXgpIiBcCiAJImluZm9kaXI9JChpbmZvZGlyKSIgXAogCSJsaWJkaXI9JChsaWJkaXIpIiBcCisJIm1hbmRpcj0kKG1hbmRpcikiIFwKIAkicHJlZml4PSQocHJlZml4KSIgXAogCSJBUj0kKEFSKSIgXAogCSJBUz0kKEFTKSIgXApAQCAtNDYyLDcgKzQ5Miw3IEBACiBBQ0xPQ0FMX0FNRkxBR1MgPSAkKEFDTE9DQUxfQU1GTEFHUykgLUkgbTQKIGxpYl9MVExJQlJBUklFUyA9IGxpYmZmaS5sYQogbm9pbnN0X0xUTElCUkFSSUVTID0gbGliZmZpX2NvbnZlbmllbmNlLmxhCi1saWJmZmlfbGFfU09VUkNFUyA9IHNyYy9kZWJ1Zy5jIHNyYy9wcmVwX2NpZi5jIHNyYy90eXBlcy5jIFwKK2xpYmZmaV9sYV9TT1VSQ0VTID0gc3JjL3ByZXBfY2lmLmMgc3JjL3R5cGVzLmMgXAogCQlzcmMvcmF3X2FwaS5jIHNyYy9qYXZhX3Jhd19hcGkuYyBzcmMvY2xvc3VyZXMuYwogCiBwa2djb25maWdkaXIgPSAkKGxpYmRpcikvcGtnY29uZmlnCkBAIC00NzUsMTkgKzUwNSwyMCBAQAogCSQoYW1fX2FwcGVuZF8xNSkgJChhbV9fYXBwZW5kXzE2KSAkKGFtX19hcHBlbmRfMTcpIFwKIAkkKGFtX19hcHBlbmRfMTgpICQoYW1fX2FwcGVuZF8xOSkgJChhbV9fYXBwZW5kXzIwKSBcCiAJJChhbV9fYXBwZW5kXzIxKSAkKGFtX19hcHBlbmRfMjIpICQoYW1fX2FwcGVuZF8yMykgXAotCSQoYW1fX2FwcGVuZF8yNCkgJChhbV9fYXBwZW5kXzI1KQorCSQoYW1fX2FwcGVuZF8yNCkgJChhbV9fYXBwZW5kXzI1KSAkKGFtX19hcHBlbmRfMjYpIFwKKwkkKGFtX19hcHBlbmRfMjcpICQoYW1fX2FwcGVuZF8yOCkKIGxpYmZmaV9jb252ZW5pZW5jZV9sYV9TT1VSQ0VTID0gJChsaWJmZmlfbGFfU09VUkNFUykKIG5vZGlzdF9saWJmZmlfY29udmVuaWVuY2VfbGFfU09VUkNFUyA9ICQobm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTKQotQU1fQ0ZMQUdTID0gLVdhbGwgLWcgLWZleGNlcHRpb25zCi1saWJmZmlfbGFfTERGTEFHUyA9IC12ZXJzaW9uLWluZm8gYGdyZXAgLXYgJ15cIycgJChzcmNkaXIpL2xpYnRvb2wtdmVyc2lvbmAgJChBTV9MVExERkxBR1MpCi1BTV9DUFBGTEFHUyA9IC1JLiAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtSWluY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL3NyYwotQU1fQ0NBU0ZMQUdTID0gJChBTV9DUFBGTEFHUykKK0FNX0NGTEFHUyA9IC1nICQoYW1fX2FwcGVuZF8yOSkKK2xpYmZmaV9sYV9MREZMQUdTID0gLXZlcnNpb24taW5mbyBgZ3JlcCAtdiAnXlwjJyAkKHNyY2RpcikvbGlidG9vbC12ZXJzaW9uYCAkKExUTERGTEFHUykgJChBTV9MVExERkxBR1MpCitBTV9DUFBGTEFHUyA9IC1JLiAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtSWluY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL3NyYyAtREZGSV9CVUlMRElORworQU1fQ0NBU0ZMQUdTID0gJChBTV9DUFBGTEFHUykgLWcKIGFsbDogZmZpY29uZmlnLmgKIAkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbGwtcmVjdXJzaXZlCiAKIC5TVUZGSVhFUzoKIC5TVUZGSVhFUzogLlMgLmMgLmR2aSAubG8gLm8gLm9iaiAucHMKLWFtLS1yZWZyZXNoOgorYW0tLXJlZnJlc2g6IE1ha2VmaWxlCiAJQDoKICQoc3JjZGlyKS9NYWtlZmlsZS5pbjogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKHNyY2RpcikvTWFrZWZpbGUuYW0gICQoYW1fX2NvbmZpZ3VyZV9kZXBzKQogCUBmb3IgZGVwIGluICQ/OyBkbyBcCkBAIC01MjMsMTAgKzU1NCw4IEBACiAkKGFtX19hY2xvY2FsX200X2RlcHMpOgogCiBmZmljb25maWcuaDogc3RhbXAtaDEKLQlAaWYgdGVzdCAhIC1mICRAOyB0aGVuIFwKLQkgIHJtIC1mIHN0YW1wLWgxOyBcCi0JICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBzdGFtcC1oMTsgXAotCWVsc2UgOjsgZmkKKwlAaWYgdGVzdCAhIC1mICRAOyB0aGVuIHJtIC1mIHN0YW1wLWgxOyBlbHNlIDo7IGZpCisJQGlmIHRlc3QgISAtZiAkQDsgdGhlbiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBzdGFtcC1oMTsgZWxzZSA6OyBmaQogCiBzdGFtcC1oMTogJChzcmNkaXIpL2ZmaWNvbmZpZy5oLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCiAJQHJtIC1mIHN0YW1wLWgxCkBAIC01NDAsNiArNTY5LDggQEAKIAktcm0gLWYgZmZpY29uZmlnLmggc3RhbXAtaDEKIGxpYmZmaS5wYzogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2xpYmZmaS5wYy5pbgogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJEAKK2ZmaWNvbmZpZy5weTogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2ZmaWNvbmZpZy5weS5pbgorCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJEAKIGluc3RhbGwtbGliTFRMSUJSQVJJRVM6ICQobGliX0xUTElCUkFSSUVTKQogCUAkKE5PUk1BTF9JTlNUQUxMKQogCXRlc3QgLXogIiQobGliZGlyKSIgfHwgJChNS0RJUl9QKSAiJChERVNURElSKSQobGliZGlyKSIKQEAgLTU4NiwxMiArNjE3LDEyIEBACiBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKToKIAlAJChNS0RJUl9QKSBzcmMvJChERVBESVIpCiAJQDogPiBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQotc3JjL2RlYnVnLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvcHJlcF9jaWYubG86IHNyYy8kKGFtX19kaXJzdGFtcCkgc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy90eXBlcy5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL3Jhd19hcGkubG86IHNyYy8kKGFtX19kaXJzdGFtcCkgc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9qYXZhX3Jhd19hcGkubG86IHNyYy8kKGFtX19kaXJzdGFtcCkgc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9jbG9zdXJlcy5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorc3JjL2RlYnVnLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvbWlwcy8kKGFtX19kaXJzdGFtcCk6CiAJQCQoTUtESVJfUCkgc3JjL21pcHMKIAlAOiA+IHNyYy9taXBzLyQoYW1fX2RpcnN0YW1wKQpAQCAtNzE0LDYgKzc0NSw4IEBACiAJc3JjL2FybS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvYXJtL2ZmaS5sbzogc3JjL2FybS8kKGFtX19kaXJzdGFtcCkgXAogCXNyYy9hcm0vJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorc3JjL2FybS90cmFtcG9saW5lLmxvOiBzcmMvYXJtLyQoYW1fX2RpcnN0YW1wKSBcCisJc3JjL2FybS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvYXZyMzIvJChhbV9fZGlyc3RhbXApOgogCUAkKE1LRElSX1ApIHNyYy9hdnIzMgogCUA6ID4gc3JjL2F2cjMyLyQoYW1fX2RpcnN0YW1wKQpAQCAtNzQ0LDYgKzc3NywxNiBAQAogCXNyYy9mcnYvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL2Zydi9mZmkubG86IHNyYy9mcnYvJChhbV9fZGlyc3RhbXApIFwKIAlzcmMvZnJ2LyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK3NyYy9tb3hpZS8kKGFtX19kaXJzdGFtcCk6CisJQCQoTUtESVJfUCkgc3JjL21veGllCisJQDogPiBzcmMvbW94aWUvJChhbV9fZGlyc3RhbXApCitzcmMvbW94aWUvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKToKKwlAJChNS0RJUl9QKSBzcmMvbW94aWUvJChERVBESVIpCisJQDogPiBzcmMvbW94aWUvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorc3JjL21veGllL2VhYmkubG86IHNyYy9tb3hpZS8kKGFtX19kaXJzdGFtcCkgXAorCXNyYy9tb3hpZS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitzcmMvbW94aWUvZmZpLmxvOiBzcmMvbW94aWUvJChhbV9fZGlyc3RhbXApIFwKKwlzcmMvbW94aWUvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL3MzOTAvJChhbV9fZGlyc3RhbXApOgogCUAkKE1LRElSX1ApIHNyYy9zMzkwCiAJQDogPiBzcmMvczM5MC8kKGFtX19kaXJzdGFtcCkKQEAgLTc4Niw5ICs4MjksOSBAQAogc3JjL3BhL2ZmaS5sbzogc3JjL3BhLyQoYW1fX2RpcnN0YW1wKSBzcmMvcGEvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL3BhL2hwdXgzMi5sbzogc3JjL3BhLyQoYW1fX2RpcnN0YW1wKSBcCiAJc3JjL3BhLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKLWxpYmZmaS5sYTogJChsaWJmZmlfbGFfT0JKRUNUUykgJChsaWJmZmlfbGFfREVQRU5ERU5DSUVTKSAKK2xpYmZmaS5sYTogJChsaWJmZmlfbGFfT0JKRUNUUykgJChsaWJmZmlfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmZmaV9sYV9ERVBFTkRFTkNJRVMpIAogCSQobGliZmZpX2xhX0xJTkspIC1ycGF0aCAkKGxpYmRpcikgJChsaWJmZmlfbGFfT0JKRUNUUykgJChsaWJmZmlfbGFfTElCQUREKSAkKExJQlMpCi1saWJmZmlfY29udmVuaWVuY2UubGE6ICQobGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMpICQobGliZmZpX2NvbnZlbmllbmNlX2xhX0RFUEVOREVOQ0lFUykgCitsaWJmZmlfY29udmVuaWVuY2UubGE6ICQobGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMpICQobGliZmZpX2NvbnZlbmllbmNlX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJmZmlfY29udmVuaWVuY2VfbGFfREVQRU5ERU5DSUVTKSAKIAkkKExJTkspICAkKGxpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTKSAkKGxpYmZmaV9jb252ZW5pZW5jZV9sYV9MSUJBREQpICQoTElCUykKIAogbW9zdGx5Y2xlYW4tY29tcGlsZToKQEAgLTgwMSw2ICs4NDQsOCBAQAogCS1ybSAtZiBzcmMvYXJtL2ZmaS5sbwogCS1ybSAtZiBzcmMvYXJtL3N5c3YuJChPQkpFWFQpCiAJLXJtIC1mIHNyYy9hcm0vc3lzdi5sbworCS1ybSAtZiBzcmMvYXJtL3RyYW1wb2xpbmUuJChPQkpFWFQpCisJLXJtIC1mIHNyYy9hcm0vdHJhbXBvbGluZS5sbwogCS1ybSAtZiBzcmMvYXZyMzIvZmZpLiQoT0JKRVhUKQogCS1ybSAtZiBzcmMvYXZyMzIvZmZpLmxvCiAJLXJtIC1mIHNyYy9hdnIzMi9zeXN2LiQoT0JKRVhUKQpAQCAtODM3LDYgKzg4MiwxMCBAQAogCS1ybSAtZiBzcmMvbWlwcy9uMzIubG8KIAktcm0gLWYgc3JjL21pcHMvbzMyLiQoT0JKRVhUKQogCS1ybSAtZiBzcmMvbWlwcy9vMzIubG8KKwktcm0gLWYgc3JjL21veGllL2VhYmkuJChPQkpFWFQpCisJLXJtIC1mIHNyYy9tb3hpZS9lYWJpLmxvCisJLXJtIC1mIHNyYy9tb3hpZS9mZmkuJChPQkpFWFQpCisJLXJtIC1mIHNyYy9tb3hpZS9mZmkubG8KIAktcm0gLWYgc3JjL3BhL2ZmaS4kKE9CSkVYVCkKIAktcm0gLWYgc3JjL3BhL2ZmaS5sbwogCS1ybSAtZiBzcmMvcGEvaHB1eDMyLiQoT0JKRVhUKQpAQCAtOTE5LDYgKzk2OCw3IEBACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL2FscGhhLyQoREVQRElSKS9vc2YuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvYXJtLyQoREVQRElSKS9mZmkuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvYXJtLyQoREVQRElSKS9zeXN2LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL2FybS8kKERFUERJUikvdHJhbXBvbGluZS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9hdnIzMi8kKERFUERJUikvZmZpLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL2F2cjMyLyQoREVQRElSKS9zeXN2LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL2NyaXMvJChERVBESVIpL2ZmaS5QbG9AYW1fX3F1b3RlQApAQCAtOTM0LDYgKzk4NCw4IEBACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL21pcHMvJChERVBESVIpL2ZmaS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9taXBzLyQoREVQRElSKS9uMzIuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvbWlwcy8kKERFUERJUikvbzMyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL21veGllLyQoREVQRElSKS9lYWJpLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL21veGllLyQoREVQRElSKS9mZmkuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvcGEvJChERVBESVIpL2ZmaS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9wYS8kKERFUERJUikvaHB1eDMyLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL3BhLyQoREVQRElSKS9saW51eC5QbG9AYW1fX3F1b3RlQApAQCAtMTAyOSw2ICsxMDgxLDcgQEAKIAktcm0gLXJmIHNyYy9tMzJyLy5saWJzIHNyYy9tMzJyL19saWJzCiAJLXJtIC1yZiBzcmMvbTY4ay8ubGlicyBzcmMvbTY4ay9fbGlicwogCS1ybSAtcmYgc3JjL21pcHMvLmxpYnMgc3JjL21pcHMvX2xpYnMKKwktcm0gLXJmIHNyYy9tb3hpZS8ubGlicyBzcmMvbW94aWUvX2xpYnMKIAktcm0gLXJmIHNyYy9wYS8ubGlicyBzcmMvcGEvX2xpYnMKIAktcm0gLXJmIHNyYy9wb3dlcnBjLy5saWJzIHNyYy9wb3dlcnBjL19saWJzCiAJLXJtIC1yZiBzcmMvczM5MC8ubGlicyBzcmMvczM5MC9fbGlicwpAQCAtMTIyMSw5ICsxMjc0LDcgQEAKIAlAJChOT1JNQUxfVU5JTlNUQUxMKQogCUBsaXN0PSckKHBrZ2NvbmZpZ19EQVRBKSc7IHRlc3QgLW4gIiQocGtnY29uZmlnZGlyKSIgfHwgbGlzdD07IFwKIAlmaWxlcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IHNlZCAtZSAnc3xeLiovfHwnYDsgXAotCXRlc3QgLW4gIiQkZmlsZXMiIHx8IGV4aXQgMDsgXAotCWVjaG8gIiAoIGNkICckKERFU1RESVIpJChwa2djb25maWdkaXIpJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKLQljZCAiJChERVNURElSKSQocGtnY29uZmlnZGlyKSIgJiYgcm0gLWYgJCRmaWxlcworCWRpcj0nJChERVNURElSKSQocGtnY29uZmlnZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKIAogIyBUaGlzIGRpcmVjdG9yeSdzIHN1YmRpcmVjdG9yaWVzIGFyZSBtb3N0bHkgaW5kZXBlbmRlbnQ7IHlvdSBjYW4gY2QKICMgaW50byB0aGVtIGFuZCBydW4gYG1ha2UnIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGlzIE1ha2VmaWxlLgpAQCAtMTIzMiw3ICsxMjgzLDcgQEAKICMgICAgICh3aGljaCB3aWxsIGNhdXNlIHRoZSBNYWtlZmlsZXMgdG8gYmUgcmVnZW5lcmF0ZWQgd2hlbiB5b3UgcnVuIGBtYWtlJyk7CiAjICgyKSBvdGhlcndpc2UsIHBhc3MgdGhlIGRlc2lyZWQgdmFsdWVzIG9uIHRoZSBgbWFrZScgY29tbWFuZCBsaW5lLgogJChSRUNVUlNJVkVfVEFSR0VUUyk6Ci0JQGZhaWxjb209J2V4aXQgMSc7IFwKKwlAZmFpbD0gZmFpbGNvbT0nZXhpdCAxJzsgXAogCWZvciBmIGluIHggJCRNQUtFRkxBR1M7IGRvIFwKIAkgIGNhc2UgJCRmIGluIFwKIAkgICAgKj0qIHwgLS1bIWtdKik7OyBcCkBAIC0xMjU3LDcgKzEzMDgsNyBAQAogCWZpOyB0ZXN0IC16ICIkJGZhaWwiCiAKICQoUkVDVVJTSVZFX0NMRUFOX1RBUkdFVFMpOgotCUBmYWlsY29tPSdleGl0IDEnOyBcCisJQGZhaWw9IGZhaWxjb209J2V4aXQgMSc7IFwKIAlmb3IgZiBpbiB4ICQkTUFLRUZMQUdTOyBkbyBcCiAJICBjYXNlICQkZiBpbiBcCiAJICAgICo9KiB8IC0tWyFrXSopOzsgXApAQCAtMTQyNCw3ICsxNDc1LDggQEAKIAkgIHRvcF9kaXN0ZGlyPSIkKHRvcF9kaXN0ZGlyKSIgZGlzdGRpcj0iJChkaXN0ZGlyKSIgXAogCSAgZGlzdC1pbmZvCiAJLXRlc3QgLW4gIiQoYW1fX3NraXBfbW9kZV9maXgpIiBcCi0JfHwgZmluZCAiJChkaXN0ZGlyKSIgLXR5cGUgZCAhIC1wZXJtIC03NzcgLWV4ZWMgY2htb2QgYStyd3gge30gXDsgLW8gXAorCXx8IGZpbmQgIiQoZGlzdGRpcikiIC10eXBlIGQgISAtcGVybSAtNzU1IFwKKwkJLWV4ZWMgY2htb2QgdStyd3gsZ28rcngge30gXDsgLW8gXAogCSAgISAtdHlwZSBkICEgLXBlcm0gLTQ0NCAtbGlua3MgMSAtZXhlYyBjaG1vZCBhK3Ige30gXDsgLW8gXAogCSAgISAtdHlwZSBkICEgLXBlcm0gLTQwMCAtZXhlYyBjaG1vZCBhK3Ige30gXDsgLW8gXAogCSAgISAtdHlwZSBkICEgLXBlcm0gLTQ0NCAtZXhlYyAkKGluc3RhbGxfc2gpIC1jIC1tIGErciB7fSB7fSBcOyBcCkBAIC0xNDM0LDcgKzE0ODYsMTEgQEAKIAkkKGFtX19yZW1vdmVfZGlzdGRpcikKIAogZGlzdC1iemlwMjogZGlzdGRpcgotCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBiemlwMiAtOSAtYyA+JChkaXN0ZGlyKS50YXIuYnoyCisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IEJaSVAyPSQke0JaSVAyLS05fSBiemlwMiAtYyA+JChkaXN0ZGlyKS50YXIuYnoyCisJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCisKK2Rpc3QtbHppcDogZGlzdGRpcgorCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBsemlwIC1jICQke0xaSVBfT1BULS05fSA+JChkaXN0ZGlyKS50YXIubHoKIAkkKGFtX19yZW1vdmVfZGlzdGRpcikKIAogZGlzdC1sem1hOiBkaXN0ZGlyCkBAIC0xNDQyLDcgKzE0OTgsNyBAQAogCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQogCiBkaXN0LXh6OiBkaXN0ZGlyCi0JdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IHh6IC1jID4kKGRpc3RkaXIpLnRhci54egorCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBYWl9PUFQ9JCR7WFpfT1BULS1lfSB4eiAtYyA+JChkaXN0ZGlyKS50YXIueHoKIAkkKGFtX19yZW1vdmVfZGlzdGRpcikKIAogZGlzdC10YXJaOiBkaXN0ZGlyCkBAIC0xNDY4LDE3ICsxNTI0LDE5IEBACiBkaXN0Y2hlY2s6IGRpc3QKIAljYXNlICckKERJU1RfQVJDSElWRVMpJyBpbiBcCiAJKi50YXIuZ3oqKSBcCi0JICBHWklQPSQoR1pJUF9FTlYpIGd1bnppcCAtYyAkKGRpc3RkaXIpLnRhci5neiB8ICQoYW1fX3VudGFyKSA7O1wKKwkgIEdaSVA9JChHWklQX0VOVikgZ3ppcCAtZGMgJChkaXN0ZGlyKS50YXIuZ3ogfCAkKGFtX191bnRhcikgOztcCiAJKi50YXIuYnoyKikgXAotCSAgYnVuemlwMiAtYyAkKGRpc3RkaXIpLnRhci5iejIgfCAkKGFtX191bnRhcikgOztcCisJICBiemlwMiAtZGMgJChkaXN0ZGlyKS50YXIuYnoyIHwgJChhbV9fdW50YXIpIDs7XAogCSoudGFyLmx6bWEqKSBcCi0JICB1bmx6bWEgLWMgJChkaXN0ZGlyKS50YXIubHptYSB8ICQoYW1fX3VudGFyKSA7O1wKKwkgIGx6bWEgLWRjICQoZGlzdGRpcikudGFyLmx6bWEgfCAkKGFtX191bnRhcikgOztcCisJKi50YXIubHoqKSBcCisJICBsemlwIC1kYyAkKGRpc3RkaXIpLnRhci5seiB8ICQoYW1fX3VudGFyKSA7O1wKIAkqLnRhci54eiopIFwKIAkgIHh6IC1kYyAkKGRpc3RkaXIpLnRhci54eiB8ICQoYW1fX3VudGFyKSA7O1wKIAkqLnRhci5aKikgXAogCSAgdW5jb21wcmVzcyAtYyAkKGRpc3RkaXIpLnRhci5aIHwgJChhbV9fdW50YXIpIDs7XAogCSouc2hhci5neiopIFwKLQkgIEdaSVA9JChHWklQX0VOVikgZ3VuemlwIC1jICQoZGlzdGRpcikuc2hhci5neiB8IHVuc2hhciA7O1wKKwkgIEdaSVA9JChHWklQX0VOVikgZ3ppcCAtZGMgJChkaXN0ZGlyKS5zaGFyLmd6IHwgdW5zaGFyIDs7XAogCSouemlwKikgXAogCSAgdW56aXAgJChkaXN0ZGlyKS56aXAgOztcCiAJZXNhYwpAQCAtMTQ5Miw2ICsxNTUwLDcgQEAKIAkgICYmIGFtX19jd2Q9YHB3ZGAgXAogCSAgJiYgJChhbV9fY2QpICQoZGlzdGRpcikvX2J1aWxkIFwKIAkgICYmIC4uL2NvbmZpZ3VyZSAtLXNyY2Rpcj0uLiAtLXByZWZpeD0iJCRkY19pbnN0YWxsX2Jhc2UiIFwKKwkgICAgJChBTV9ESVNUQ0hFQ0tfQ09ORklHVVJFX0ZMQUdTKSBcCiAJICAgICQoRElTVENIRUNLX0NPTkZJR1VSRV9GTEFHUykgXAogCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgXAogCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgZHZpIFwKQEAgLTE1MjAsOCArMTU3OSwxNiBAQAogCSAgbGlzdD0nJChESVNUX0FSQ0hJVkVTKSc7IGZvciBpIGluICQkbGlzdDsgZG8gZWNobyAkJGk7IGRvbmUpIHwgXAogCSAgc2VkIC1lIDFoIC1lIDFzLy4vPS9nIC1lIDFwIC1lIDF4IC1lICckJHAnIC1lICckJHgnCiBkaXN0dW5pbnN0YWxsY2hlY2s6Ci0JQCQoYW1fX2NkKSAnJChkaXN0dW5pbnN0YWxsY2hlY2tfZGlyKScgXAotCSYmIHRlc3QgYCQoZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcykgfCB3YyAtbGAgLWxlIDEgXAorCUB0ZXN0IC1uICckKGRpc3R1bmluc3RhbGxjaGVja19kaXIpJyB8fCB7IFwKKwkgIGVjaG8gJ0VSUk9SOiB0cnlpbmcgdG8gcnVuICRAIHdpdGggYW4gZW1wdHknIFwKKwkgICAgICAgJyQkKGRpc3R1bmluc3RhbGxjaGVja19kaXIpJyA+JjI7IFwKKwkgIGV4aXQgMTsgXAorCX07IFwKKwkkKGFtX19jZCkgJyQoZGlzdHVuaW5zdGFsbGNoZWNrX2RpciknIHx8IHsgXAorCSAgZWNobyAnRVJST1I6IGNhbm5vdCBjaGRpciBpbnRvICQoZGlzdHVuaW5zdGFsbGNoZWNrX2RpciknID4mMjsgXAorCSAgZXhpdCAxOyBcCisJfTsgXAorCXRlc3QgYCQoYW1fX2Rpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMpIHwgd2MgLWxgIC1lcSAwIFwKIAkgICB8fCB7IGVjaG8gIkVSUk9SOiBmaWxlcyBsZWZ0IGFmdGVyIHVuaW5zdGFsbDoiIDsgXAogCSAgICAgICAgaWYgdGVzdCAtbiAiJChERVNURElSKSI7IHRoZW4gXAogCSAgICAgICAgICBlY2hvICIgIChjaGVjayBERVNURElSIHN1cHBvcnQpIjsgXApAQCAtMTU1NSwxMCArMTYyMiwxNSBAQAogCiBpbnN0YWxsY2hlY2s6IGluc3RhbGxjaGVjay1yZWN1cnNpdmUKIGluc3RhbGwtc3RyaXA6Ci0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKLQkgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAotCSAgYHRlc3QgLXogJyQoU1RSSVApJyB8fCBcCi0JICAgIGVjaG8gIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciYCBpbnN0YWxsCisJaWYgdGVzdCAteiAnJChTVFJJUCknOyB0aGVuIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAgIGluc3RhbGw7IFwKKwllbHNlIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyIgaW5zdGFsbDsgXAorCWZpCiBtb3N0bHljbGVhbi1nZW5lcmljOgogCiBjbGVhbi1nZW5lcmljOgpAQCAtMTU4Nyw2ICsxNjU5LDggQEAKIAktcm0gLWYgc3JjL202OGsvJChhbV9fZGlyc3RhbXApCiAJLXJtIC1mIHNyYy9taXBzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIAktcm0gLWYgc3JjL21pcHMvJChhbV9fZGlyc3RhbXApCisJLXJtIC1mIHNyYy9tb3hpZS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCisJLXJtIC1mIHNyYy9tb3hpZS8kKGFtX19kaXJzdGFtcCkKIAktcm0gLWYgc3JjL3BhLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIAktcm0gLWYgc3JjL3BhLyQoYW1fX2RpcnN0YW1wKQogCS1ybSAtZiBzcmMvcG93ZXJwYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCkBAIC0xNjEyLDcgKzE2ODYsNyBAQAogCiBkaXN0Y2xlYW46IGRpc3RjbGVhbi1yZWN1cnNpdmUKIAktcm0gLWYgJChhbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUykKLQktcm0gLXJmIHNyYy8kKERFUERJUikgc3JjL2FscGhhLyQoREVQRElSKSBzcmMvYXJtLyQoREVQRElSKSBzcmMvYXZyMzIvJChERVBESVIpIHNyYy9jcmlzLyQoREVQRElSKSBzcmMvZnJ2LyQoREVQRElSKSBzcmMvaWE2NC8kKERFUERJUikgc3JjL20zMnIvJChERVBESVIpIHNyYy9tNjhrLyQoREVQRElSKSBzcmMvbWlwcy8kKERFUERJUikgc3JjL3BhLyQoREVQRElSKSBzcmMvcG93ZXJwYy8kKERFUERJUikgc3JjL3MzOTAvJChERVBESVIpIHNyYy9zaC8kKERFUERJUikgc3JjL3NoNjQvJChERVBESVIpIHNyYy9zcGFyYy8kKERFUERJUikgc3JjL3g4Ni8kKERFUERJUikKKwktcm0gLXJmIHNyYy8kKERFUERJUikgc3JjL2FscGhhLyQoREVQRElSKSBzcmMvYXJtLyQoREVQRElSKSBzcmMvYXZyMzIvJChERVBESVIpIHNyYy9jcmlzLyQoREVQRElSKSBzcmMvZnJ2LyQoREVQRElSKSBzcmMvaWE2NC8kKERFUERJUikgc3JjL20zMnIvJChERVBESVIpIHNyYy9tNjhrLyQoREVQRElSKSBzcmMvbWlwcy8kKERFUERJUikgc3JjL21veGllLyQoREVQRElSKSBzcmMvcGEvJChERVBESVIpIHNyYy9wb3dlcnBjLyQoREVQRElSKSBzcmMvczM5MC8kKERFUERJUikgc3JjL3NoLyQoREVQRElSKSBzcmMvc2g2NC8kKERFUERJUikgc3JjL3NwYXJjLyQoREVQRElSKSBzcmMveDg2LyQoREVQRElSKQogCS1ybSAtZiBNYWtlZmlsZQogZGlzdGNsZWFuLWFtOiBjbGVhbi1hbSBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCiAJZGlzdGNsZWFuLWhkciBkaXN0Y2xlYW4tbGlidG9vbCBkaXN0Y2xlYW4tdGFncwpAQCAtMTY1NCwxMyArMTcyOCwxNCBAQAogCWZvciBwIGluICQkbGlzdDsgZG8gXAogCSAgaWYgdGVzdCAtZiAiJCRwIiB8fCB0ZXN0IC1kICIkJHAiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAogCSAgJChhbV9fc3RyaXBfZGlyKSBcCi0JICBpZiB0ZXN0IC1kICIkJGQkJHAiOyB0aGVuIFwKKwkgIGQyPSQkZCQkcDsgXAorCSAgaWYgdGVzdCAtZCAiJCRkMiI7IHRoZW4gXAogCSAgICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQoaHRtbGRpcikvJCRmJyI7IFwKIAkgICAgJChNS0RJUl9QKSAiJChERVNURElSKSQoaHRtbGRpcikvJCRmIiB8fCBleGl0IDE7IFwKLQkgICAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAnJCRkJCRwJy8qICckKERFU1RESVIpJChodG1sZGlyKS8kJGYnIjsgXAotCSAgICAkKElOU1RBTExfREFUQSkgIiQkZCQkcCIvKiAiJChERVNURElSKSQoaHRtbGRpcikvJCRmIiB8fCBleGl0ICQkPzsgXAorCSAgICBlY2hvICIgJChJTlNUQUxMX0RBVEEpICckJGQyJy8qICckKERFU1RESVIpJChodG1sZGlyKS8kJGYnIjsgXAorCSAgICAkKElOU1RBTExfREFUQSkgIiQkZDIiLyogIiQoREVTVERJUikkKGh0bWxkaXIpLyQkZiIgfHwgZXhpdCAkJD87IFwKIAkgIGVsc2UgXAotCSAgICBsaXN0Mj0iJCRsaXN0MiAkJGQkJHAiOyBcCisJICAgIGxpc3QyPSIkJGxpc3QyICQkZDIiOyBcCiAJICBmaTsgXAogCWRvbmU7IFwKIAl0ZXN0IC16ICIkJGxpc3QyIiB8fCB7IGVjaG8gIiQkbGlzdDIiIHwgJChhbV9fYmFzZV9saXN0KSB8IFwKQEAgLTE2OTIsOCArMTc2NywxMyBAQAogCSAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICckKERFU1RESVIpJChpbmZvZGlyKSciOyBcCiAJICAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAiJChERVNURElSKSQoaW5mb2RpcikiIHx8IGV4aXQgJCQ/OyBkb25lCiAJQCQoUE9TVF9JTlNUQUxMKQotCUBpZiAoaW5zdGFsbC1pbmZvIC0tdmVyc2lvbiAmJiBcCi0JICAgICBpbnN0YWxsLWluZm8gLS12ZXJzaW9uIDI+JjEgfCBzZWQgMXEgfCBncmVwIC1pIC12IGRlYmlhbikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKKwlAYW1fX3J1bl9pbnN0YWxsaW5mbz15ZXM7IFwKKwljYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKKwkgIG58bm98Tk8pIGFtX19ydW5faW5zdGFsbGluZm89bm87OyBcCisJICAqKSAoaW5zdGFsbC1pbmZvIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxIFwKKwkgICAgICAgfHwgYW1fX3J1bl9pbnN0YWxsaW5mbz1ubzs7IFwKKwllc2FjOyBcCisJaWYgdGVzdCAkJGFtX19ydW5faW5zdGFsbGluZm8gPSB5ZXM7IHRoZW4gXAogCSAgbGlzdD0nJChJTkZPX0RFUFMpJzsgdGVzdCAtbiAiJChpbmZvZGlyKSIgfHwgbGlzdD07IFwKIAkgIGZvciBmaWxlIGluICQkbGlzdDsgZG8gXAogCSAgICByZWxmaWxlPWBlY2hvICIkJGZpbGUiIHwgc2VkICdzfF4uKi98fCdgOyBcCkBAIC0xNzMyLDcgKzE4MTIsNyBAQAogbWFpbnRhaW5lci1jbGVhbjogbWFpbnRhaW5lci1jbGVhbi1yZWN1cnNpdmUKIAktcm0gLWYgJChhbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUykKIAktcm0gLXJmICQodG9wX3NyY2RpcikvYXV0b200dGUuY2FjaGUKLQktcm0gLXJmIHNyYy8kKERFUERJUikgc3JjL2FscGhhLyQoREVQRElSKSBzcmMvYXJtLyQoREVQRElSKSBzcmMvYXZyMzIvJChERVBESVIpIHNyYy9jcmlzLyQoREVQRElSKSBzcmMvZnJ2LyQoREVQRElSKSBzcmMvaWE2NC8kKERFUERJUikgc3JjL20zMnIvJChERVBESVIpIHNyYy9tNjhrLyQoREVQRElSKSBzcmMvbWlwcy8kKERFUERJUikgc3JjL3BhLyQoREVQRElSKSBzcmMvcG93ZXJwYy8kKERFUERJUikgc3JjL3MzOTAvJChERVBESVIpIHNyYy9zaC8kKERFUERJUikgc3JjL3NoNjQvJChERVBESVIpIHNyYy9zcGFyYy8kKERFUERJUikgc3JjL3g4Ni8kKERFUERJUikKKwktcm0gLXJmIHNyYy8kKERFUERJUikgc3JjL2FscGhhLyQoREVQRElSKSBzcmMvYXJtLyQoREVQRElSKSBzcmMvYXZyMzIvJChERVBESVIpIHNyYy9jcmlzLyQoREVQRElSKSBzcmMvZnJ2LyQoREVQRElSKSBzcmMvaWE2NC8kKERFUERJUikgc3JjL20zMnIvJChERVBESVIpIHNyYy9tNjhrLyQoREVQRElSKSBzcmMvbWlwcy8kKERFUERJUikgc3JjL21veGllLyQoREVQRElSKSBzcmMvcGEvJChERVBESVIpIHNyYy9wb3dlcnBjLyQoREVQRElSKSBzcmMvczM5MC8kKERFUERJUikgc3JjL3NoLyQoREVQRElSKSBzcmMvc2g2NC8kKERFUERJUikgc3JjL3NwYXJjLyQoREVQRElSKSBzcmMveDg2LyQoREVQRElSKQogCS1ybSAtZiBNYWtlZmlsZQogbWFpbnRhaW5lci1jbGVhbi1hbTogZGlzdGNsZWFuLWFtIG1haW50YWluZXItY2xlYW4tYW1pbmZvIFwKIAltYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbWFpbnRhaW5lci1jbGVhbi12dGkKQEAgLTE3NjEsMjQgKzE4NDEsMjQgQEAKIAlhbGwgYWxsLWFtIGFtLS1yZWZyZXNoIGNoZWNrIGNoZWNrLWFtIGNsZWFuIGNsZWFuLWFtaW5mbyBcCiAJY2xlYW4tZ2VuZXJpYyBjbGVhbi1saWJMVExJQlJBUklFUyBjbGVhbi1saWJ0b29sIFwKIAljbGVhbi1ub2luc3RMVExJQlJBUklFUyBjdGFncyBjdGFncy1yZWN1cnNpdmUgZGlzdCBkaXN0LWFsbCBcCi0JZGlzdC1iemlwMiBkaXN0LWd6aXAgZGlzdC1pbmZvIGRpc3QtbHptYSBkaXN0LXNoYXIgZGlzdC10YXJaIFwKLQlkaXN0LXh6IGRpc3QtemlwIGRpc3RjaGVjayBkaXN0Y2xlYW4gZGlzdGNsZWFuLWNvbXBpbGUgXAotCWRpc3RjbGVhbi1nZW5lcmljIGRpc3RjbGVhbi1oZHIgZGlzdGNsZWFuLWxpYnRvb2wgXAotCWRpc3RjbGVhbi10YWdzIGRpc3RjbGVhbmNoZWNrIGRpc3RkaXIgZGlzdHVuaW5zdGFsbGNoZWNrIGR2aSBcCi0JZHZpLWFtIGh0bWwgaHRtbC1hbSBpbmZvIGluZm8tYW0gaW5zdGFsbCBpbnN0YWxsLWFtIFwKLQlpbnN0YWxsLWRhdGEgaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIGluc3RhbGwtZHZpLWFtIFwKLQlpbnN0YWxsLWV4ZWMgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBpbnN0YWxsLWh0bWwtYW0gXAotCWluc3RhbGwtaW5mbyBpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1saWJMVExJQlJBUklFUyBcCi0JaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gaW5zdGFsbC1wa2djb25maWdEQVRBIFwKLQlpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gaW5zdGFsbC1zdHJpcCBpbnN0YWxsY2hlY2sgXAotCWluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBpbnN0YWxsZGlycy1hbSBtYWludGFpbmVyLWNsZWFuIFwKLQltYWludGFpbmVyLWNsZWFuLWFtaW5mbyBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgXAotCW1haW50YWluZXItY2xlYW4tdnRpIG1vc3RseWNsZWFuIG1vc3RseWNsZWFuLWFtaW5mbyBcCi0JbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWxpYnRvb2wgXAotCW1vc3RseWNsZWFuLXZ0aSBwZGYgcGRmLWFtIHBzIHBzLWFtIHRhZ3MgdGFncy1yZWN1cnNpdmUgXAotCXVuaW5zdGFsbCB1bmluc3RhbGwtYW0gdW5pbnN0YWxsLWR2aS1hbSB1bmluc3RhbGwtaHRtbC1hbSBcCi0JdW5pbnN0YWxsLWluZm8tYW0gdW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTIHVuaW5zdGFsbC1wZGYtYW0gXAotCXVuaW5zdGFsbC1wa2djb25maWdEQVRBIHVuaW5zdGFsbC1wcy1hbQorCWRpc3QtYnppcDIgZGlzdC1nemlwIGRpc3QtaW5mbyBkaXN0LWx6aXAgZGlzdC1sem1hIGRpc3Qtc2hhciBcCisJZGlzdC10YXJaIGRpc3QteHogZGlzdC16aXAgZGlzdGNoZWNrIGRpc3RjbGVhbiBcCisJZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgZGlzdGNsZWFuLWhkciBcCisJZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLXRhZ3MgZGlzdGNsZWFuY2hlY2sgZGlzdGRpciBcCisJZGlzdHVuaW5zdGFsbGNoZWNrIGR2aSBkdmktYW0gaHRtbCBodG1sLWFtIGluZm8gaW5mby1hbSBcCisJaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtZGF0YSBpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgXAorCWluc3RhbGwtZHZpLWFtIGluc3RhbGwtZXhlYyBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIFwKKwlpbnN0YWxsLWh0bWwtYW0gaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBcCisJaW5zdGFsbC1saWJMVExJQlJBUklFUyBpbnN0YWxsLW1hbiBpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBcCisJaW5zdGFsbC1wa2djb25maWdEQVRBIGluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIFwKKwlpbnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIGluc3RhbGxkaXJzLWFtIFwKKwltYWludGFpbmVyLWNsZWFuIG1haW50YWluZXItY2xlYW4tYW1pbmZvIFwKKwltYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbWFpbnRhaW5lci1jbGVhbi12dGkgbW9zdGx5Y2xlYW4gXAorCW1vc3RseWNsZWFuLWFtaW5mbyBtb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgXAorCW1vc3RseWNsZWFuLWxpYnRvb2wgbW9zdGx5Y2xlYW4tdnRpIHBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncyBcCisJdGFncy1yZWN1cnNpdmUgdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSB1bmluc3RhbGwtZHZpLWFtIFwKKwl1bmluc3RhbGwtaHRtbC1hbSB1bmluc3RhbGwtaW5mby1hbSB1bmluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAorCXVuaW5zdGFsbC1wZGYtYW0gdW5pbnN0YWxsLXBrZ2NvbmZpZ0RBVEEgdW5pbnN0YWxsLXBzLWFtCiAKIAogIyBObyBpbnN0YWxsLWh0bWwgb3IgaW5zdGFsbC1wZGYgc3VwcG9ydCBpbiBhdXRvbWFrZSB5ZXQKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvUkVBRE1FIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9SRUFETUUKaW5kZXggMTY3ZGU0Mi4uYmNjNzE3OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9SRUFETUUKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9SRUFETUUKQEAgLTEsNyArMSw3IEBACiBTdGF0dXMKID09PT09PQogCi1saWJmZmktMy4wLjEwIHdhcyByZWxlYXNlZCBvbiBYWFhYWFhYWFhYLCAyMDEwLiBDaGVjayB0aGUgbGliZmZpIHdlYgorbGliZmZpLTMuMC4xMSB3YXMgcmVsZWFzZWQgb24gQXByaWwgMTEsIDIwMTIuICBDaGVjayB0aGUgbGliZmZpIHdlYgogcGFnZSBmb3IgdXBkYXRlczogPFVSTDpodHRwOi8vc291cmNld2FyZS5vcmcvbGliZmZpLz4uCiAKIApAQCAtNDMsNyArNDMsNyBAQAogRm9yIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBhbmQgdGVzdGluZyBzdGF0dXMsIHBsZWFzZQogcmVmZXIgdG8gdGhlIHdpa2kgcGFnZSBoZXJlOgogCi0gaHR0cDovL3d3dy5tb3hpZWxvZ2ljLm9yZy93aWtpL2luZGV4LnBocD90aXRsZT1MaWJmZmlfMy4wLjEwCisgaHR0cDovL3d3dy5tb3hpZWxvZ2ljLm9yZy93aWtpL2luZGV4LnBocD90aXRsZT1MaWJmZmlfMy4wLjExCiAKIEF0IHRoZSB0aW1lIG9mIHJlbGVhc2UsIHRoZSBmb2xsb3dpbmcgYmFzaWMgY29uZmlndXJhdGlvbnMgaGF2ZSBiZWVuCiB0ZXN0ZWQ6CkBAIC01NCwxMiArNTQsMTcgQEAKIHwgQWxwaGEgICAgICAgIHwgTGludXggICAgICAgICAgICB8CiB8IEFscGhhICAgICAgICB8IFRydTY0ICAgICAgICAgICAgfAogfCBBUk0gICAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKK3wgQVJNICAgICAgICAgIHwgaU9TICAgICAgICAgICAgICB8CiB8IEFWUjMyICAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAogfCBIUFBBICAgICAgICAgfCBIUFVYICAgICAgICAgICAgIHwKIHwgSUEtNjQgICAgICAgIHwgTGludXggICAgICAgICAgICB8Cit8IE02OEsgICAgICAgICB8IEZyZWVNaU5UICAgICAgICAgfAorfCBNNjhLICAgICAgICAgfCBSVEVNUyAgICAgICAgICAgIHwKIHwgTUlQUyAgICAgICAgIHwgSVJJWCAgICAgICAgICAgICB8CiB8IE1JUFMgICAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAorfCBNSVBTICAgICAgICAgfCBSVEVNUyAgICAgICAgICAgIHwKIHwgTUlQUzY0ICAgICAgIHwgTGludXggICAgICAgICAgICB8Cit8IFBvd2VyUEMgICAgICB8IEFNSUdBICAgICAgICAgICAgfAogfCBQb3dlclBDICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKIHwgUG93ZXJQQyAgICAgIHwgTWFjIE9TWCAgICAgICAgICB8CiB8IFBvd2VyUEMgICAgICB8IEZyZWVCU0QgICAgICAgICAgfApAQCAtNzEsMTUgKzc2LDE4IEBACiB8IFNQQVJDNjQgICAgICB8IExpbnV4ICAgICAgICAgICAgfAogfCBTUEFSQzY0ICAgICAgfCBGcmVlQlNEICAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwgRnJlZUJTRCAgICAgICAgICB8Cit8IFg4NiAgICAgICAgICB8IEludGVyaXggICAgICAgICAgfAogfCBYODYgICAgICAgICAgfCBrRnJlZUJTRCAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwgTGludXggICAgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IE1hYyBPU1ggICAgICAgICAgfAogfCBYODYgICAgICAgICAgfCBPcGVuQlNEICAgICAgICAgIHwKK3wgWDg2ICAgICAgICAgIHwgT1MvMiAgICAgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IFNvbGFyaXMgICAgICAgICAgfAogfCBYODYgICAgICAgICAgfCBXaW5kb3dzL0N5Z3dpbiAgIHwKIHwgWDg2ICAgICAgICAgIHwgV2luZG93cy9NaW5nVyAgICB8CiB8IFg4Ni02NCAgICAgICB8IEZyZWVCU0QgICAgICAgICAgfAogfCBYODYtNjQgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKK3wgWDg2LTY0ICAgICAgIHwgTGludXgveDMyICAgICAgICB8CiB8IFg4Ni02NCAgICAgICB8IE9wZW5CU0QgICAgICAgICAgfAogfCBYODYtNjQgICAgICAgfCBXaW5kb3dzL01pbmdXICAgIHwKIHwtLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS18CkBAIC0xMTMsOSArMTIxLDE2IEBACiBNaWNyb3NvZnQncyBWaXN1YWwgQysrIGNvbXBpbGVyLiAgSW4gdGhpcyBjYXNlLCB1c2UgdGhlIG1zdmNjLnNoCiB3cmFwcGVyIHNjcmlwdCBkdXJpbmcgY29uZmlndXJhdGlvbiBsaWtlIHNvOgogCi1wYXRoL3RvL2NvbmZpZ3VyZSAtLWVuYWJsZS1zaGFyZWQgLS1lbmFibGUtc3RhdGljIFwKLQlDQz1wYXRoL3RvL21zdmNjLnNoIExEPWxpbmsgXAotCUNQUD1cImNsIC1ub2xvZ28gLUVQXCIKK3BhdGgvdG8vY29uZmlndXJlIENDPXBhdGgvdG8vbXN2Y2Muc2ggTEQ9bGluayBDUFA9XCJjbCAtbm9sb2dvIC1FUFwiCisKK0ZvciA2NC1iaXQgV2luZG93cyBidWlsZHMsIHVzZSBDQz0icGF0aC90by9tc3ZjYy5zaCAtbTY0Ii4KK1lvdSBtYXkgYWxzbyBuZWVkIHRvIHNwZWNpZnkgLS1idWlsZCBhcHByb3ByaWF0ZWx5LiBXaGVuIGJ1aWxkaW5nIHdpdGggTVNWQwordW5kZXIgYSBNaW5nVyBlbnZpcm9ubWVudCwgeW91IG1heSBuZWVkIHRvIHJlbW92ZSB0aGUgbGluZSBpbiBjb25maWd1cmUKK3RoYXQgc2V0cyAnZml4X3NyY2ZpbGVfcGF0aCcgdG8gYSAnY3lncGF0aCcgY29tbWFuZC4gKCdjeWdwYXRoJyBpcyBub3QKK3ByZXNlbnQgaW4gTWluZ1csIGFuZCBpcyBub3QgcmVxdWlyZWQgd2hlbiB1c2luZyBNaW5nVy1zdHlsZSBwYXRocy4pCisKK0ZvciBpT1MgYnVpbGRzLCBydW4gZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weSBhbmQgdGhlbgorbGliZmZpLnhjb2RlcHJvaiBzaG91bGQgd29yay4KIAogQ29uZmlndXJlIGhhcyBtYW55IG90aGVyIG9wdGlvbnMuIFVzZSAiY29uZmlndXJlIC0taGVscCIgdG8gc2VlIHRoZW0gYWxsLgogCkBAIC0xMzMsMTEgKzE0OCwzMCBAQAogCiBTZWUgdGhlIENoYW5nZUxvZyBmaWxlcyBmb3IgZGV0YWlscy4KIAotMy4wLjEwID8/Py0/Py0/PwotICAgICAgICBGaXggdGhlIE42NCBidWlsZCBvbiBtaXBzLXNnaS1pcml4Ni41LgotCVRlc3RzdWl0ZSBmaXhlcyBmb3IgVHJ1NjQgVW5peC4KKzMuMC4xMSBBcHItMTEtMTIKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHZhcmlhZGljIGZ1bmN0aW9ucyAoZmZpX3ByZXBfY2lmX3ZhcikuCisJQWRkIExpbnV4L3gzMiBzdXBwb3J0LgorCUFkZCB0aGlzY2FsbCwgZmFzdGNhbGwgYW5kIE1TVkMgY2RlY2wgc3VwcG9ydCBvbiBXaW5kb3dzLgorICAgICAgICBBZGQgQW1pZ2EgYW5kIG5ld2VyIE1hY09TIHN1cHBvcnQuCisJQWRkIG02OGsgRnJlZU1pTlQgc3VwcG9ydC4KKwlJbnRlZ3JhdGlvbiB3aXRoIGlPUycgeGNvZGUgYnVpbGQgdG9vbHMuCisJRml4IE9jdGVvbiBhbmQgTUM2ODg4MSBzdXBwb3J0LgorCUZpeCBjb2RlIHBlc3NpbWl6YXRpb25zLgorICAgICAgICBMb3RzIG9mIGJ1aWxkIGZpeGVzLgorCiszLjAuMTAgQXVnLTIzLTExCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBBcHBsZSdzIGlPUy4KKwlBZGQgc3VwcG9ydCBmb3IgQVJNIFZGUCBBQkkuCisgICAgICAgIEFkZCBSVEVNUyBzdXBwb3J0IGZvciBNSVBTIGFuZCBNNjhLLgorCUZpeCBpbnN0cnVjdGlvbiBjYWNoZSBjbGVhcmluZyBwcm9ibGVtcyBvbgorCSAgQVJNIGFuZCBTUEFSQy4KKwlGaXggdGhlIE42NCBidWlsZCBvbiBtaXBzLXNnaS1pcml4Ni41LgogCUVuYWJsZSBidWlsZHMgd2l0aCBNaWNyb3NvZnQncyBjb21waWxlci4KLQlFbmFibGUgeDg2IGJ1aWxkcyB3aXRoIFN1bidzIGNvbXBpbGVyLgorCUVuYWJsZSB4ODYgYnVpbGRzIHdpdGggT3JhY2xlJ3MgU29sYXJpcyBjb21waWxlci4KKwlGaXggc3VwcG9ydCBmb3IgY2FsbGluZyBjb2RlIGNvbXBpbGVkIHdpdGggT3JhY2xlJ3MgU3BhcmMKKwkgIFNvbGFyaXMgY29tcGlsZXIuCisJVGVzdHN1aXRlIGZpeGVzIGZvciBUcnU2NCBVbml4LgorCUFkZGl0aW9uYWwgcGxhdGZvcm0gc3VwcG9ydC4KIAogMy4wLjkgRGVjLTMxLTA5CiAgICAgICAgIEFkZCBBVlIzMiBhbmQgd2luNjQgcG9ydHMuICBBZGQgQVJNIHNvZnRmcCBzdXBwb3J0LgpAQCAtMjY3LDcgKzMwMSw3IEBACiBBdXRob3JzICYgQ3JlZGl0cwogPT09PT09PT09PT09PT09PT0KIAotbGliZmZpIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgQW50aG9ueSBHcmVlbiA8Z3JlZW5AcmVkaGF0LmNvbT4uCitsaWJmZmkgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBBbnRob255IEdyZWVuIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4uCiAKIFRoZSBkZXZlbG9wZXJzIG9mIHRoZSBHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiBwcm9qZWN0IGhhdmUgbWFkZQogaW5udW1lcmFibGUgdmFsdWFibGUgY29udHJpYnV0aW9ucy4gIFNlZSB0aGUgQ2hhbmdlTG9nIGZpbGUgZm9yCkBAIC0zMTgsNSArMzUyLDYgQEAKIFRoZSBsaXN0IGFib3ZlIGlzIGFsbW9zdCBjZXJ0YWlubHkgaW5jb21wbGV0ZSBhbmQgaW5hY2N1cmF0ZS4gIEknbQogaGFwcHkgdG8gbWFrZSBjb3JyZWN0aW9ucyBvciBhZGRpdGlvbnMgdXBvbiByZXF1ZXN0LgogCi1JZiB5b3UgaGF2ZSBhIHByb2JsZW0sIG9yIGhhdmUgZm91bmQgYSBidWcsIHBsZWFzZSBzZW5kIGEgbm90ZSB0bwotZ3JlZW5AcmVkaGF0LmNvbS4KK0lmIHlvdSBoYXZlIGEgcHJvYmxlbSwgb3IgaGF2ZSBmb3VuZCBhIGJ1ZywgcGxlYXNlIHNlbmQgYSBub3RlIHRvIHRoZQorYXV0aG9yIGF0IGdyZWVuQG1veGllbG9naWMuY29tLCBvciB0aGUgcHJvamVjdCBtYWlsaW5nIGxpc3QgYXQKK2xpYmZmaS1kaXNjdXNzQHNvdXJjZXdhcmUub3JnLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9hY2xvY2FsLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9hY2xvY2FsLm00CmluZGV4IGM4ZTUyNmYuLmQzMzNmZjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvYWNsb2NhbC5tNAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2FjbG9jYWwubTQKQEAgLTEsNyArMSw4IEBACi0jIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGFjbG9jYWwgMS4xMS4xIC0qLSBBdXRvY29uZiAtKi0KKyMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYWNsb2NhbCAxLjExLjMgLSotIEF1dG9jb25mIC0qLQogCiAjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwKLSMgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyBJbmMuCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KQEAgLTEzLDE4ICsxNCw4MzkgQEAKIAogbTRfaWZuZGVmKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSwKICAgW200X2NvcHkoW200X1BBQ0tBR0VfVkVSU0lPTl0sIFtBQ19BVVRPQ09ORl9WRVJTSU9OXSldKWRubAotbTRfaWYobTRfZGVmbihbQUNfQVVUT0NPTkZfVkVSU0lPTl0pLCBbMi42NV0sLAotW200X3dhcm5pbmcoW3RoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGZvciBhdXRvY29uZiAyLjY1LgorbTRfaWYobTRfZGVmbihbQUNfQVVUT0NPTkZfVkVSU0lPTl0pLCBbMi42OF0sLAorW200X3dhcm5pbmcoW3RoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGZvciBhdXRvY29uZiAyLjY4LgogWW91IGhhdmUgYW5vdGhlciB2ZXJzaW9uIG9mIGF1dG9jb25mLiAgSXQgbWF5IHdvcmssIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0by4KIElmIHlvdSBoYXZlIHByb2JsZW1zLCB5b3UgbWF5IG5lZWQgdG8gcmVnZW5lcmF0ZSB0aGUgYnVpbGQgc3lzdGVtIGVudGlyZWx5LgogVG8gZG8gc28sIHVzZSB0aGUgcHJvY2VkdXJlIGRvY3VtZW50ZWQgYnkgdGhlIHBhY2thZ2UsIHR5cGljYWxseSBgYXV0b3JlY29uZicuXSldKQogCi0jIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIGx0ZGwubTQgLSBDb25maWd1cmUgbHRkbCBmb3IgdGhlIHRhcmdldCBzeXN0ZW0uIC0qLUF1dG9jb25mLSotCisjCisjICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDYsIDIwMDcsIDIwMDgsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgV3JpdHRlbiBieSBUaG9tYXMgVGFubmVyLCAxOTk5CisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCisjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgMTggTFRETF9JTklUCisKKyMgTFRfQ09ORklHX0xURExfRElSKERJUkVDVE9SWSwgW0xUREwtTU9ERV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBESVJFQ1RPUlkgY29udGFpbnMgdGhlIGxpYmx0ZGwgc291cmNlcy4gIEl0IGlzIG9rYXkgdG8gY2FsbCB0aGlzCisjIGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVzLCBhcyBsb25nIGFzIHRoZSBzYW1lIERJUkVDVE9SWSBpcyBhbHdheXMgZ2l2ZW4uCitBQ19ERUZVTihbTFRfQ09ORklHX0xURExfRElSXSwKK1tBQ19CRUZPUkUoWyQwXSwgW0xURExfSU5JVF0pCitfJDAoJCopCitdKSMgTFRfQ09ORklHX0xURExfRElSCisKKyMgV2UgYnJlYWsgdGhpcyBvdXQgaW50byBhIHNlcGFyYXRlIG1hY3JvLCBzbyB0aGF0IHdlIGNhbiBjYWxsIGl0IHNhZmVseQorIyBpbnRlcm5hbGx5IHdpdGhvdXQgYmVpbmcgY2F1Z2h0IGFjY2lkZW50YWxseSBieSB0aGUgc2VkIHNjYW4gaW4gbGlidG9vbGl6ZS4KK200X2RlZnVuKFtfTFRfQ09ORklHX0xURExfRElSXSwKK1tkbmwgcmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMKK200X3B1c2hkZWYoW19BUkdfRElSXSwgbTRfYnBhdHN1YnN0KFskMV0sIFsvKiRdKSkKK200X2Nhc2UoX0xURExfRElSLAorCVtdLCBbZG5sIG9ubHkgc2V0IGx0X2x0ZGxfZGlyIGlmIF9BUkdfRElSIGlzIG5vdCBzaW1wbHkgYC4nCisJICAgICBtNF9pZihfQVJHX0RJUiwgWy5dLAorCSAgICAgICAgICAgICBbXSwKKwkJIFttNF9kZWZpbmUoW19MVERMX0RJUl0sIF9BUkdfRElSKQorCSAgICAgICAgICBfTFRfU0hFTExfSU5JVChbbHRfbHRkbF9kaXI9J11fQVJHX0RJUlsnXSldKV0sCisgICAgW200X2lmKF9BUkdfRElSLCBfTFRETF9ESVIsCisJICAgIFtdLAorCVttNF9mYXRhbChbbXVsdGlwbGUgbGlibHRkbCBkaXJlY3RvcmllczogYF1fTFRETF9ESVJbJywgYF1fQVJHX0RJUlsnXSldKV0pCittNF9wb3BkZWYoW19BUkdfRElSXSkKK10pIyBfTFRfQ09ORklHX0xURExfRElSCisKKyMgSW5pdGlhbGlzZToKK200X2RlZmluZShbX0xURExfRElSXSwgW10pCisKKworIyBfTFRfQlVJTERfUFJFRklYCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgSWYgQXV0b2NvbmYgaXMgbmV3IGVub3VnaCwgZXhwYW5kIHRvIGAke3RvcF9idWlsZF9wcmVmaXh9Jywgb3RoZXJ3aXNlCisjIHRvIGAke3RvcF9idWlsZGRpcn0vJy4KK200X2RlZmluZShbX0xUX0JVSUxEX1BSRUZJWF0sCitbbTRfaWZkZWYoW0FDX0FVVE9DT05GX1ZFUlNJT05dLAorICAgW200X2lmKG00X3ZlcnNpb25fY29tcGFyZShtNF9kZWZuKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSksIFsyLjYyXSksCisJICBbLTFdLCBbbTRfaWZkZWYoW19BQ19IQVZFX1RPUF9CVUlMRF9QUkVGSVhdLAorCQkJICBbJHt0b3BfYnVpbGRfcHJlZml4fV0sCisJCQkgIFske3RvcF9idWlsZGRpcn0vXSldLAorCSAgWyR7dG9wX2J1aWxkX3ByZWZpeH1dKV0sCisgICBbJHt0b3BfYnVpbGRkaXJ9L10pW11kbmwKK10pCisKKworIyBMVERMX0NPTlZFTklFTkNFCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgc2V0cyBMSUJMVERMIHRvIHRoZSBsaW5rIGZsYWdzIGZvciB0aGUgbGlibHRkbCBjb252ZW5pZW5jZSBsaWJyYXJ5IGFuZAorIyBMVERMSU5DTCB0byB0aGUgaW5jbHVkZSBmbGFncyBmb3IgdGhlIGxpYmx0ZGwgaGVhZGVyIGFuZCBhZGRzCisjIC0tZW5hYmxlLWx0ZGwtY29udmVuaWVuY2UgdG8gdGhlIGNvbmZpZ3VyZSBhcmd1bWVudHMuICBOb3RlIHRoYXQKKyMgQUNfQ09ORklHX1NVQkRJUlMgaXMgbm90IGNhbGxlZCBoZXJlLiAgTElCTFRETCB3aWxsIGJlIHByZWZpeGVkIHdpdGgKKyMgJyR7dG9wX2J1aWxkX3ByZWZpeH0nIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHdpdGggJyR7dG9wX2J1aWxkZGlyfS8nLAorIyBhbmQgTFRETElOQ0wgd2lsbCBiZSBwcmVmaXhlZCB3aXRoICcke3RvcF9zcmNkaXJ9LycgKG5vdGUgdGhlIHNpbmdsZQorIyBxdW90ZXMhKS4gIElmIHlvdXIgcGFja2FnZSBpcyBub3QgZmxhdCBhbmQgeW91J3JlIG5vdCB1c2luZyBhdXRvbWFrZSwKKyMgZGVmaW5lIHRvcF9idWlsZF9wcmVmaXgsIHRvcF9idWlsZGRpciwgYW5kIHRvcF9zcmNkaXIgYXBwcm9wcmlhdGVseQorIyBpbiB5b3VyIE1ha2VmaWxlcy4KK0FDX0RFRlVOKFtMVERMX0NPTlZFTklFTkNFXSwKK1tBQ19CRUZPUkUoWyQwXSwgW0xURExfSU5JVF0pZG5sCitkbmwgQWx0aG91Z2ggdGhlIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2N1bWVudGVkLAorZG5sIExURExfQ09OVkVOSUVOQ0UgdXNlZCB0byB0YWtlIGEgRElSRUNUT1JZIG9yZ3VtZW50LCBpZiB3ZSBoYXZlIG9uZQorZG5sIGhlcmUgbWFrZSBzdXJlIGl0IGlzIHRoZSBzYW1lIGFzIGFueSBvdGhlciBkZWNsYXJhdGlvbiBvZiBsaWJsdGRsJ3MKK2RubCBsb2NhdGlvbiEgIFRoaXMgYWxzbyBlbnN1cmVzIGx0X2x0ZGxfZGlyIGlzIHNldCB3aGVuIGNvbmZpZ3VyZS5hYyBpcworZG5sIG5vdCB5ZXQgdXNpbmcgYW4gZXhwbGljaXQgTFRfQ09ORklHX0xURExfRElSLgorbTRfaWZ2YWwoWyQxXSwgW19MVF9DT05GSUdfTFRETF9ESVIoWyQxXSldKWRubAorXyQwKCkKK10pIyBMVERMX0NPTlZFTklFTkNFCisKKyMgQUNfTElCTFRETF9DT05WRU5JRU5DRSBhY2NlcHRlZCBhIGRpcmVjdG9yeSBhcmd1bWVudCBpbiBvbGRlciBsaWJ0b29scywKKyMgbm93IHdlIGhhdmUgTFRfQ09ORklHX0xURExfRElSOgorQVVfREVGVU4oW0FDX0xJQkxURExfQ09OVkVOSUVOQ0VdLAorW19MVF9DT05GSUdfTFRETF9ESVIoW200X2RlZmF1bHQoWyQxXSwgW2xpYmx0ZGxdKV0pCitfTFRETF9DT05WRU5JRU5DRV0pCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCTFRETF9DT05WRU5JRU5DRV0sIFtdKQorCisKKyMgX0xURExfQ09OVkVOSUVOQ0UKKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29kZSBzaGFyZWQgYnkgTFRETF9DT05WRU5JRU5DRSBhbmQgTFRETF9JTklUKFtjb252ZW5pZW5jZV0pLgorbTRfZGVmdW4oW19MVERMX0NPTlZFTklFTkNFXSwKK1tjYXNlICRlbmFibGVfbHRkbF9jb252ZW5pZW5jZSBpbgorICBubykgQUNfTVNHX0VSUk9SKFt0aGlzIHBhY2thZ2UgbmVlZHMgYSBjb252ZW5pZW5jZSBsaWJsdGRsXSkgOzsKKyAgIiIpIGVuYWJsZV9sdGRsX2NvbnZlbmllbmNlPXllcworICAgICAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAtLWVuYWJsZS1sdGRsLWNvbnZlbmllbmNlIiA7OworZXNhYworTElCTFRETD0nX0xUX0JVSUxEX1BSRUZJWCciJHtsdF9sdGRsX2RpciskbHRfbHRkbF9kaXIvfWxpYmx0ZGxjLmxhIgorTFRETERFUFM9JExJQkxUREwKK0xURExJTkNMPSctSSR7dG9wX3NyY2Rpcn0nIiR7bHRfbHRkbF9kaXIrLyRsdF9sdGRsX2Rpcn0iCisKK0FDX1NVQlNUKFtMSUJMVERMXSkKK0FDX1NVQlNUKFtMVERMREVQU10pCitBQ19TVUJTVChbTFRETElOQ0xdKQorCisjIEZvciBiYWNrd2FyZHMgbm9uLWdldHRleHQgY29uc2lzdGVudCBjb21wYXRpYmlsaXR5Li4uCitJTkNMVERMPSIkTFRETElOQ0wiCitBQ19TVUJTVChbSU5DTFRETF0pCitdKSMgX0xURExfQ09OVkVOSUVOQ0UKKworCisjIExURExfSU5TVEFMTEFCTEUKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBzZXRzIExJQkxUREwgdG8gdGhlIGxpbmsgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGluc3RhbGxhYmxlIGxpYnJhcnkKKyMgYW5kIExURExJTkNMIHRvIHRoZSBpbmNsdWRlIGZsYWdzIGZvciB0aGUgbGlibHRkbCBoZWFkZXIgYW5kIGFkZHMKKyMgLS1lbmFibGUtbHRkbC1pbnN0YWxsIHRvIHRoZSBjb25maWd1cmUgYXJndW1lbnRzLiAgTm90ZSB0aGF0CisjIEFDX0NPTkZJR19TVUJESVJTIGlzIG5vdCBjYWxsZWQgZnJvbSBoZXJlLiAgSWYgYW4gaW5zdGFsbGVkIGxpYmx0ZGwKKyMgaXMgbm90IGZvdW5kLCBMSUJMVERMIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAnJHt0b3BfYnVpbGRfcHJlZml4fScgaWYKKyMgYXZhaWxhYmxlLCBvdGhlcndpc2Ugd2l0aCAnJHt0b3BfYnVpbGRkaXJ9LycsIGFuZCBMVERMSU5DTCB3aWxsIGJlCisjIHByZWZpeGVkIHdpdGggJyR7dG9wX3NyY2Rpcn0vJyAobm90ZSB0aGUgc2luZ2xlIHF1b3RlcyEpLiAgSWYgeW91cgorIyBwYWNrYWdlIGlzIG5vdCBmbGF0IGFuZCB5b3UncmUgbm90IHVzaW5nIGF1dG9tYWtlLCBkZWZpbmUgdG9wX2J1aWxkX3ByZWZpeCwKKyMgdG9wX2J1aWxkZGlyLCBhbmQgdG9wX3NyY2RpciBhcHByb3ByaWF0ZWx5IGluIHlvdXIgTWFrZWZpbGVzLgorIyBJbiB0aGUgZnV0dXJlLCB0aGlzIG1hY3JvIG1heSBoYXZlIHRvIGJlIGNhbGxlZCBhZnRlciBMVF9JTklULgorQUNfREVGVU4oW0xURExfSU5TVEFMTEFCTEVdLAorW0FDX0JFRk9SRShbJDBdLCBbTFRETF9JTklUXSlkbmwKK2RubCBBbHRob3VnaCB0aGUgYXJndW1lbnQgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvY3VtZW50ZWQsCitkbmwgTFRETF9JTlNUQUxMQUJMRSB1c2VkIHRvIHRha2UgYSBESVJFQ1RPUlkgb3JndW1lbnQsIGlmIHdlIGhhdmUgb25lCitkbmwgaGVyZSBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYXMgYW55IG90aGVyIGRlY2xhcmF0aW9uIG9mIGxpYmx0ZGwncworZG5sIGxvY2F0aW9uISAgVGhpcyBhbHNvIGVuc3VyZXMgbHRfbHRkbF9kaXIgaXMgc2V0IHdoZW4gY29uZmlndXJlLmFjIGlzCitkbmwgbm90IHlldCB1c2luZyBhbiBleHBsaWNpdCBMVF9DT05GSUdfTFRETF9ESVIuCittNF9pZnZhbChbJDFdLCBbX0xUX0NPTkZJR19MVERMX0RJUihbJDFdKV0pZG5sCitfJDAoKQorXSkjIExURExfSU5TVEFMTEFCTEUKKworIyBBQ19MSUJMVERMX0lOU1RBTExBQkxFIGFjY2VwdGVkIGEgZGlyZWN0b3J5IGFyZ3VtZW50IGluIG9sZGVyIGxpYnRvb2xzLAorIyBub3cgd2UgaGF2ZSBMVF9DT05GSUdfTFRETF9ESVI6CitBVV9ERUZVTihbQUNfTElCTFRETF9JTlNUQUxMQUJMRV0sCitbX0xUX0NPTkZJR19MVERMX0RJUihbbTRfZGVmYXVsdChbJDFdLCBbbGlibHRkbF0pXSkKK19MVERMX0lOU1RBTExBQkxFXSkKKworZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MSUJMVERMX0lOU1RBTExBQkxFXSwgW10pCisKKworIyBfTFRETF9JTlNUQUxMQUJMRQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBDb2RlIHNoYXJlZCBieSBMVERMX0lOU1RBTExBQkxFIGFuZCBMVERMX0lOSVQoW2luc3RhbGxhYmxlXSkuCittNF9kZWZ1bihbX0xURExfSU5TVEFMTEFCTEVdLAorW2lmIHRlc3QgLWYgJHByZWZpeC9saWIvbGlibHRkbC5sYTsgdGhlbgorICBsdF9zYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICBMREZMQUdTPSItTCRwcmVmaXgvbGliICRMREZMQUdTIgorICBBQ19DSEVDS19MSUIoW2x0ZGxdLCBbbHRfZGxpbml0XSwgW2x0X2xpYl9sdGRsPXllc10pCisgIExERkxBR1M9IiRsdF9zYXZlX0xERkxBR1MiCisgIGlmIHRlc3QgeCIke2x0X2xpYl9sdGRsLW5vfSIgPSB4eWVzOyB0aGVuCisgICAgaWYgdGVzdCB4IiRlbmFibGVfbHRkbF9pbnN0YWxsIiAhPSB4eWVzOyB0aGVuCisgICAgICAjIERvbid0IG92ZXJ3cml0ZSAkcHJlZml4L2xpYi9saWJsdGRsLmxhIHdpdGhvdXQgLS1lbmFibGUtbHRkbC1pbnN0YWxsCisgICAgICBBQ19NU0dfV0FSTihbbm90IG92ZXJ3cml0aW5nIGxpYmx0ZGwgYXQgJHByZWZpeCwgZm9yY2Ugd2l0aCBgLS1lbmFibGUtbHRkbC1pbnN0YWxsJ10pCisgICAgICBlbmFibGVfbHRkbF9pbnN0YWxsPW5vCisgICAgZmkKKyAgZWxpZiB0ZXN0IHgiJGVuYWJsZV9sdGRsX2luc3RhbGwiID0geG5vOyB0aGVuCisgICAgQUNfTVNHX1dBUk4oW2xpYmx0ZGwgbm90IGluc3RhbGxlZCwgYnV0IGluc3RhbGxhdGlvbiBkaXNhYmxlZF0pCisgIGZpCitmaQorCisjIElmIGNvbmZpZ3VyZS5hYyBkZWNsYXJlZCBhbiBpbnN0YWxsYWJsZSBsdGRsLCBhbmQgdGhlIHVzZXIgZGlkbid0IG92ZXJyaWRlCisjIHdpdGggLS1kaXNhYmxlLWx0ZGwtaW5zdGFsbCwgd2Ugd2lsbCBpbnN0YWxsIHRoZSBzaGlwcGVkIGxpYmx0ZGwuCitjYXNlICRlbmFibGVfbHRkbF9pbnN0YWxsIGluCisgIG5vKSBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWx0ZGwtaW5zdGFsbD1ubyIKKyAgICAgIExJQkxUREw9Ii1sbHRkbCIKKyAgICAgIExURExERVBTPQorICAgICAgTFRETElOQ0w9CisgICAgICA7OworICAqKSAgZW5hYmxlX2x0ZGxfaW5zdGFsbD15ZXMKKyAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgLS1lbmFibGUtbHRkbC1pbnN0YWxsIgorICAgICAgTElCTFRETD0nX0xUX0JVSUxEX1BSRUZJWCciJHtsdF9sdGRsX2RpciskbHRfbHRkbF9kaXIvfWxpYmx0ZGwubGEiCisgICAgICBMVERMREVQUz0kTElCTFRETAorICAgICAgTFRETElOQ0w9Jy1JJHt0b3Bfc3JjZGlyfSciJHtsdF9sdGRsX2RpcisvJGx0X2x0ZGxfZGlyfSIKKyAgICAgIDs7Citlc2FjCisKK0FDX1NVQlNUKFtMSUJMVERMXSkKK0FDX1NVQlNUKFtMVERMREVQU10pCitBQ19TVUJTVChbTFRETElOQ0xdKQorCisjIEZvciBiYWNrd2FyZHMgbm9uLWdldHRleHQgY29uc2lzdGVudCBjb21wYXRpYmlsaXR5Li4uCitJTkNMVERMPSIkTFRETElOQ0wiCitBQ19TVUJTVChbSU5DTFRETF0pCitdKSMgTFRETF9JTlNUQUxMQUJMRQorCisKKyMgX0xURExfTU9ERV9ESVNQQVRDSAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW19MVERMX01PREVfRElTUEFUQ0hdLAorW2RubCBJZiBfTFRETF9ESVIgaXMgYC4nLCB0aGVuIHdlIGFyZSBjb25maWd1cmluZyBsaWJsdGRsIGl0c2VsZjoKK200X2lmKF9MVERMX0RJUiwgW10sCisJW10sCisgICAgZG5sIGlmIF9MVERMX01PREUgd2FzIG5vdCBzZXQgYWxyZWFkeSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYHN1YnByb2plY3QnOgorICAgIFttNF9jYXNlKG00X2RlZmF1bHQoX0xURExfTU9ERSwgW3N1YnByb2plY3RdKSwKKwkgIFtzdWJwcm9qZWN0XSwgW0FDX0NPTkZJR19TVUJESVJTKF9MVERMX0RJUikKKwkJCSAgX0xUX1NIRUxMX0lOSVQoW2x0X2Rsb3Blbl9kaXI9IiRsdF9sdGRsX2RpciJdKV0sCisJICBbbm9ucmVjdXJzaXZlXSwgW19MVF9TSEVMTF9JTklUKFtsdF9kbG9wZW5fZGlyPSIkbHRfbHRkbF9kaXIiOyBsdF9saWJvYmpfcHJlZml4PSIkbHRfbHRkbF9kaXIvIl0pXSwKKwkgIFtyZWN1cnNpdmVdLCBbXSwKKwlbbTRfZmF0YWwoW3Vua25vd24gbGlibHRkbCBtb2RlOiBdX0xURExfTU9ERSldKV0pZG5sCitkbmwgQmUgY2FyZWZ1bCBub3QgdG8gZXhwYW5kIHR3aWNlOgorbTRfZGVmaW5lKFskMF0sIFtdKQorXSkjIF9MVERMX01PREVfRElTUEFUQ0gKKworCisjIF9MVF9MSUJPQkooTU9EVUxFX05BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIExpa2UgQUNfTElCT0JKLCBleGNlcHQgdGhhdCBNT0RVTEVfTkFNRSBnb2VzIGludG8gX0xUX0xJQk9CSlMgaW5zdGVhZAorIyBvZiBpbnRvIExJQk9CSlMuCitBQ19ERUZVTihbX0xUX0xJQk9CSl0sIFsKKyAgbTRfcGF0dGVybl9hbGxvdyhbXl9MVF9MSUJPQkpTJF0pCisgIF9MVF9MSUJPQkpTPSIkX0xUX0xJQk9CSlMgJDEuJGFjX29iamV4dCIKK10pIyBfTFRfTElCT0JKUworCisKKyMgTFRETF9JTklUKFtPUFRJT05TXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2xpZW50cyBvZiBsaWJsdGRsIGNhbiB1c2UgdGhpcyBtYWNybyB0byBhbGxvdyB0aGUgaW5zdGFsbGVyIHRvCisjIGNob29zZSBiZXR3ZWVuIGEgc2hpcHBlZCBjb3B5IG9mIHRoZSBsdGRsIHNvdXJjZXMgb3IgYSBwcmVpbnN0YWxsZWQKKyMgdmVyc2lvbiBvZiB0aGUgbGlicmFyeS4gIElmIHRoZSBzaGlwcGVkIGx0ZGwgc291cmNlcyBhcmUgbm90IGluIGEKKyMgc3ViZGlyZWN0b3J5IG5hbWVkIGxpYmx0ZGwsIHRoZSBkaXJlY3RvcnkgbmFtZSBtdXN0IGJlIGdpdmVuIGJ5CisjIExUX0NPTkZJR19MVERMX0RJUi4KK0FDX0RFRlVOKFtMVERMX0lOSVRdLAorW2RubCBQYXJzZSBPUFRJT05TCitfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKKworZG5sIFdlIG5lZWQgdG8ga2VlcCBvdXIgb3duIGxpc3Qgb2YgbGlib2JqcyBzZXBhcmF0ZSBmcm9tIG91ciBwYXJlbnQgcHJvamVjdCwKK2RubCBhbmQgdGhlIGVhc2llc3Qgd2F5IHRvIGRvIHRoYXQgaXMgcmVkZWZpbmUgdGhlIEFDX0xJQk9CSnMgbWFjcm8gd2hpbGUKK2RubCB3ZSBsb29rIGZvciBvdXIgb3duIExJQk9CSnMuCittNF9wdXNoZGVmKFtBQ19MSUJPQkpdLCBtNF9kZWZuKFtfTFRfTElCT0JKXSkpCittNF9wdXNoZGVmKFtBQ19MSUJTT1VSQ0VTXSkKKworZG5sIElmIG5vdCBvdGhlcndpc2UgZGVmaW5lZCwgZGVmYXVsdCB0byB0aGUgMS41LnggY29tcGF0aWJsZSBzdWJwcm9qZWN0IG1vZGU6CittNF9pZihfTFRETF9NT0RFLCBbXSwKKyAgICAgICAgW200X2RlZmluZShbX0xURExfTU9ERV0sIG00X2RlZmF1bHQoWyQyXSwgW3N1YnByb2plY3RdKSkKKyAgICAgICAgbTRfaWYoWy0xXSwgW200X2JyZWdleHAoX0xURExfTU9ERSwgW1woc3VicHJvamVjdFx8XChub25cKT9yZWN1cnNpdmVcKV0pXSwKKyAgICAgICAgICAgICAgICBbbTRfZmF0YWwoW3Vua25vd24gbGlibHRkbCBtb2RlOiBdX0xURExfTU9ERSldKV0pCisKK0FDX0FSR19XSVRIKFtpbmNsdWRlZF9sdGRsXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1pbmNsdWRlZC1sdGRsXSwKKyAgICAgICAgICAgICAgICAgICAgW3VzZSB0aGUgR05VIGx0ZGwgc291cmNlcyBpbmNsdWRlZCBoZXJlXSldKQorCitpZiB0ZXN0ICJ4JHdpdGhfaW5jbHVkZWRfbHRkbCIgIT0geHllczsgdGhlbgorICAjIFdlIGFyZSBub3QgYmVpbmcgZm9yY2VkIHRvIHVzZSB0aGUgaW5jbHVkZWQgbGlibHRkbCBzb3VyY2VzLCBzbworICAjIGRlY2lkZSB3aGV0aGVyIHRoZXJlIGlzIGEgdXNlZnVsIGluc3RhbGxlZCB2ZXJzaW9uIHdlIGNhbiB1c2UuCisgIEFDX0NIRUNLX0hFQURFUihbbHRkbC5oXSwKKyAgICAgIFtBQ19DSEVDS19ERUNMKFtsdF9kbGludGVyZmFjZV9yZWdpc3Rlcl0sCisJICAgW0FDX0NIRUNLX0xJQihbbHRkbF0sIFtsdF9kbGFkdmlzZV9wcmVsb2FkXSwKKwkgICAgICAgW3dpdGhfaW5jbHVkZWRfbHRkbD1ub10sCisJICAgICAgIFt3aXRoX2luY2x1ZGVkX2x0ZGw9eWVzXSldLAorCSAgIFt3aXRoX2luY2x1ZGVkX2x0ZGw9eWVzXSwKKwkgICBbQUNfSU5DTFVERVNfREVGQVVMVAorCSAgICAjaW5jbHVkZSA8bHRkbC5oPl0pXSwKKyAgICAgIFt3aXRoX2luY2x1ZGVkX2x0ZGw9eWVzXSwKKyAgICAgIFtBQ19JTkNMVURFU19ERUZBVUxUXQorICApCitmaQorCitkbmwgSWYgbmVpdGhlciBMVF9DT05GSUdfTFRETF9ESVIsIExURExfQ09OVkVOSUVOQ0Ugbm9yIExURExfSU5TVEFMTEFCTEUKK2RubCB3YXMgY2FsbGVkIHlldCwgdGhlbiBmb3Igb2xkIHRpbWVzJyBzYWtlLCB3ZSBhc3N1bWUgbGlibHRkbCBpcyBpbiBhbgorZG5sIGVwb255bW91cyBkaXJlY3Rvcnk6CitBQ19QUk9WSURFX0lGRUxTRShbTFRfQ09ORklHX0xURExfRElSXSwgW10sIFtfTFRfQ09ORklHX0xURExfRElSKFtsaWJsdGRsXSldKQorCitBQ19BUkdfV0lUSChbbHRkbF9pbmNsdWRlXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1sdGRsLWluY2x1ZGU9RElSXSwKKyAgICAgICAgICAgICAgICAgICAgW3VzZSB0aGUgbHRkbCBoZWFkZXJzIGluc3RhbGxlZCBpbiBESVJdKV0pCisKK2lmIHRlc3QgLW4gIiR3aXRoX2x0ZGxfaW5jbHVkZSI7IHRoZW4KKyAgaWYgdGVzdCAtZiAiJHdpdGhfbHRkbF9pbmNsdWRlL2x0ZGwuaCI7IHRoZW4gOgorICBlbHNlCisgICAgQUNfTVNHX0VSUk9SKFtpbnZhbGlkIGx0ZGwgaW5jbHVkZSBkaXJlY3Rvcnk6IGAkd2l0aF9sdGRsX2luY2x1ZGUnXSkKKyAgZmkKK2Vsc2UKKyAgd2l0aF9sdGRsX2luY2x1ZGU9bm8KK2ZpCisKK0FDX0FSR19XSVRIKFtsdGRsX2xpYl0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbHRkbC1saWI9RElSXSwKKyAgICAgICAgICAgICAgICAgICAgW3VzZSB0aGUgbGlibHRkbC5sYSBpbnN0YWxsZWQgaW4gRElSXSldKQorCitpZiB0ZXN0IC1uICIkd2l0aF9sdGRsX2xpYiI7IHRoZW4KKyAgaWYgdGVzdCAtZiAiJHdpdGhfbHRkbF9saWIvbGlibHRkbC5sYSI7IHRoZW4gOgorICBlbHNlCisgICAgQUNfTVNHX0VSUk9SKFtpbnZhbGlkIGx0ZGwgbGlicmFyeSBkaXJlY3Rvcnk6IGAkd2l0aF9sdGRsX2xpYiddKQorICBmaQorZWxzZQorICB3aXRoX2x0ZGxfbGliPW5vCitmaQorCitjYXNlICwkd2l0aF9pbmNsdWRlZF9sdGRsLCR3aXRoX2x0ZGxfaW5jbHVkZSwkd2l0aF9sdGRsX2xpYiwgaW4KKyAgLHllcyxubyxubywpCisJbTRfY2FzZShtNF9kZWZhdWx0KF9MVERMX1RZUEUsIFtjb252ZW5pZW5jZV0pLAorCSAgICBbY29udmVuaWVuY2VdLCBbX0xURExfQ09OVkVOSUVOQ0VdLAorCSAgICBbaW5zdGFsbGFibGVdLCBbX0xURExfSU5TVEFMTEFCTEVdLAorCSAgW200X2ZhdGFsKFt1bmtub3duIGxpYmx0ZGwgYnVpbGQgdHlwZTogXV9MVERMX1RZUEUpXSkKKwk7OworICAsbm8sbm8sbm8sKQorCSMgSWYgdGhlIGluY2x1ZGVkIGx0ZGwgaXMgbm90IHRvIGJlIHVzZWQsIHRoZW4gdXNlIHRoZQorCSMgcHJlaW5zdGFsbGVkIGxpYmx0ZGwgd2UgZm91bmQuCisJQUNfREVGSU5FKFtIQVZFX0xURExdLCBbMV0sCisJICBbRGVmaW5lIHRoaXMgaWYgYSBtb2Rlcm4gbGlibHRkbCBpcyBhbHJlYWR5IGluc3RhbGxlZF0pCisJTElCTFRETD0tbGx0ZGwKKwlMVERMREVQUz0KKwlMVERMSU5DTD0KKwk7OworICAsbm8qLG5vLCopCisJQUNfTVNHX0VSUk9SKFtgLS13aXRoLWx0ZGwtaW5jbHVkZScgYW5kIGAtLXdpdGgtbHRkbC1saWInIG9wdGlvbnMgbXVzdCBiZSB1c2VkIHRvZ2V0aGVyXSkKKwk7OworICAqKQl3aXRoX2luY2x1ZGVkX2x0ZGw9bm8KKwlMSUJMVERMPSItTCR3aXRoX2x0ZGxfbGliIC1sbHRkbCIKKwlMVERMREVQUz0KKwlMVERMSU5DTD0iLUkkd2l0aF9sdGRsX2luY2x1ZGUiCisJOzsKK2VzYWMKK0lOQ0xUREw9IiRMVERMSU5DTCIKKworIyBSZXBvcnQgb3VyIGRlY2lzaW9uLi4uCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXJlIHRvIGZpbmQgbGlibHRkbCBoZWFkZXJzXSkKK0FDX01TR19SRVNVTFQoWyRMVERMSU5DTF0pCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXJlIHRvIGZpbmQgbGlibHRkbCBsaWJyYXJ5XSkKK0FDX01TR19SRVNVTFQoWyRMSUJMVERMXSkKKworX0xURExfU0VUVVAKKworZG5sIHJlc3RvcmUgYXV0b2NvbmYgZGVmaW5pdGlvbi4KK200X3BvcGRlZihbQUNfTElCT0JKXSkKK200X3BvcGRlZihbQUNfTElCU09VUkNFU10pCisKK0FDX0NPTkZJR19DT01NQU5EU19QUkUoWworICAgIF9sdGRsX2xpYm9ianM9CisgICAgX2x0ZGxfbHRsaWJvYmpzPQorICAgIGlmIHRlc3QgLW4gIiRfTFRfTElCT0JKUyI7IHRoZW4KKyAgICAgICMgUmVtb3ZlIHRoZSBleHRlbnNpb24uCisgICAgICBfbHRfc2VkX2Ryb3Bfb2JqZXh0PSdzL1wubyQvLztzL1wub2JqJC8vJworICAgICAgZm9yIGkgaW4gYGZvciBpIGluICRfTFRfTElCT0JKUzsgZG8gZWNobyAiJGkiOyBkb25lIHwgc2VkICIkX2x0X3NlZF9kcm9wX29iamV4dCIgfCBzb3J0IC11YDsgZG8KKyAgICAgICAgX2x0ZGxfbGlib2Jqcz0iJF9sdGRsX2xpYm9ianMgJGx0X2xpYm9ial9wcmVmaXgkaS4kYWNfb2JqZXh0IgorICAgICAgICBfbHRkbF9sdGxpYm9ianM9IiRfbHRkbF9sdGxpYm9ianMgJGx0X2xpYm9ial9wcmVmaXgkaS5sbyIKKyAgICAgIGRvbmUKKyAgICBmaQorICAgIEFDX1NVQlNUKFtsdGRsX0xJQk9CSlNdLCBbJF9sdGRsX2xpYm9ianNdKQorICAgIEFDX1NVQlNUKFtsdGRsX0xUTElCT0JKU10sIFskX2x0ZGxfbHRsaWJvYmpzXSkKK10pCisKKyMgT25seSBleHBhbmQgb25jZToKK200X2RlZmluZShbTFRETF9JTklUXSkKK10pIyBMVERMX0lOSVQKKworIyBPbGQgbmFtZXM6CitBVV9ERUZVTihbQUNfTElCX0xURExdLCBbTFRETF9JTklUKCRAKV0pCitBVV9ERUZVTihbQUNfV0lUSF9MVERMXSwgW0xURExfSU5JVCgkQCldKQorQVVfREVGVU4oW0xUX1dJVEhfTFRETF0sIFtMVERMX0lOSVQoJEApXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCX0xURExdLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfV0lUSF9MVERMXSwgW10pCitkbmwgQUNfREVGVU4oW0xUX1dJVEhfTFRETF0sIFtdKQorCisKKyMgX0xURExfU0VUVVAKKyMgLS0tLS0tLS0tLS0KKyMgUGVyZm9ybSBhbGwgdGhlIGNoZWNrcyBuZWNlc3NhcnkgZm9yIGNvbXBpbGF0aW9uIG9mIHRoZSBsdGRsIG9iamVjdHMKKyMgIC0tIGluY2x1ZGluZyBjb21waWxlciBjaGVja3MgYW5kIGhlYWRlciBjaGVja3MuICBUaGlzIGlzIGEgcHVibGljCisjIGludGVyZmFjZSAgbWFpbmx5IGZvciB0aGUgYmVuZWZpdCBvZiBsaWJsdGRsJ3Mgb3duIGNvbmZpZ3VyZS5hYywgbW9zdAorIyBvdGhlciB1c2VycyBzaG91bGQgY2FsbCBMVERMX0lOSVQgaW5zdGVhZC4KK0FDX0RFRlVOKFtfTFRETF9TRVRVUF0sCitbQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCitBQ19SRVFVSVJFKFtMVF9TWVNfTU9EVUxFX0VYVF0pZG5sCitBQ19SRVFVSVJFKFtMVF9TWVNfTU9EVUxFX1BBVEhdKWRubAorQUNfUkVRVUlSRShbTFRfU1lTX0RMU0VBUkNIX1BBVEhdKWRubAorQUNfUkVRVUlSRShbTFRfTElCX0RMTE9BRF0pZG5sCitBQ19SRVFVSVJFKFtMVF9TWVNfU1lNQk9MX1VTQ09SRV0pZG5sCitBQ19SRVFVSVJFKFtMVF9GVU5DX0RMU1lNX1VTQ09SRV0pZG5sCitBQ19SRVFVSVJFKFtMVF9TWVNfRExPUEVOX0RFUExJQlNdKWRubAorQUNfUkVRVUlSRShbZ2xfRlVOQ19BUkdaXSlkbmwKKworbTRfcmVxdWlyZShbX0xUX0NIRUNLX09CSkRJUl0pZG5sCittNF9yZXF1aXJlKFtfTFRfSEVBREVSX0RMRkNOXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19ETFBSRU9QRU5dKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKKworZG5sIERvbid0IHJlcXVpcmUgdGhpcywgb3IgaXQgd2lsbCBiZSBleHBhbmRlZCBlYXJsaWVyIHRoYW4gdGhlIGNvZGUKK2RubCB0aGF0IHNldHMgdGhlIHZhcmlhYmxlcyBpdCByZWxpZXMgb246CitfTFRfRU5BQkxFX0lOU1RBTEwKKworZG5sIF9MVERMX01PREUgc3BlY2lmaWMgY29kZSBtdXN0IGJlIGNhbGxlZCBhdCBsZWFzdCBvbmNlOgorX0xURExfTU9ERV9ESVNQQVRDSAorCisjIEluIG9yZGVyIHRoYXQgbHRkbC5jIGNhbiBjb21waWxlLCBmaW5kIG91dCB0aGUgZmlyc3QgQUNfQ09ORklHX0hFQURFUlMKKyMgdGhlIHVzZXIgdXNlZC4gIFRoaXMgaXMgc28gdGhhdCBsdGRsLmggY2FuIHBpY2sgdXAgdGhlIHBhcmVudCBwcm9qZWN0cworIyBjb25maWcuaCBmaWxlLCBUaGUgZmlyc3QgZmlsZSBpbiBBQ19DT05GSUdfSEVBREVSUyBtdXN0IGNvbnRhaW4gdGhlCisjIGRlZmluaXRpb25zIHJlcXVpcmVkIGJ5IGx0ZGwuYy4KKyMgRklYTUU6IFJlbW92ZSB1c2Ugb2YgdW5kb2N1bWVudGVkIEFDX0xJU1RfSEVBREVSUyAoMi41OSBjb21wYXRpYmlsaXR5KS4KK0FDX0NPTkZJR19DT01NQU5EU19QUkUoW2RubAorbTRfcGF0dGVybl9hbGxvdyhbXkxUX0NPTkZJR19IJF0pZG5sCittNF9pZnNldChbQUhfSEVBREVSXSwKKyAgICBbTFRfQ09ORklHX0g9QUhfSEVBREVSXSwKKyAgICBbbTRfaWZzZXQoW0FDX0xJU1RfSEVBREVSU10sCisJICAgIFtMVF9DT05GSUdfSD1gZWNobyAiQUNfTElTVF9IRUFERVJTIiB8ICRTRUQgJ3MsXltbICAgICAgXV0qLCw7cyxbWyA6XV0uKiQsLCdgXSwKKwlbXSldKV0pCitBQ19TVUJTVChbTFRfQ09ORklHX0hdKQorCitBQ19DSEVDS19IRUFERVJTKFt1bmlzdGQuaCBkbC5oIHN5cy9kbC5oIGRsZC5oIG1hY2gtby9keWxkLmggZGlyZW50LmhdLAorCVtdLCBbXSwgW0FDX0lOQ0xVREVTX0RFRkFVTFRdKQorCitBQ19DSEVDS19GVU5DUyhbY2xvc2VkaXIgb3BlbmRpciByZWFkZGlyXSwgW10sIFtBQ19MSUJPQkooW2x0X19kaXJlbnRdKV0pCitBQ19DSEVDS19GVU5DUyhbc3RybGNhdCBzdHJsY3B5XSwgW10sIFtBQ19MSUJPQkooW2x0X19zdHJsXSldKQorCittNF9wYXR0ZXJuX2FsbG93KFtMVF9MSUJFWFRdKWRubAorQUNfREVGSU5FX1VOUVVPVEVEKFtMVF9MSUJFWFRdLFsiJGxpYmV4dCJdLFtUaGUgYXJjaGl2ZSBleHRlbnNpb25dKQorCituYW1lPQorZXZhbCAibHRfbGlicHJlZml4PVwiJGxpYm5hbWVfc3BlY1wiIgorbTRfcGF0dGVybl9hbGxvdyhbTFRfTElCUFJFRklYXSlkbmwKK0FDX0RFRklORV9VTlFVT1RFRChbTFRfTElCUFJFRklYXSxbIiRsdF9saWJwcmVmaXgiXSxbVGhlIGFyY2hpdmUgcHJlZml4XSkKKworbmFtZT1sdGRsCitldmFsICJMVERMT1BFTj1cIiRsaWJuYW1lX3NwZWNcIiIKK0FDX1NVQlNUKFtMVERMT1BFTl0pCitdKSMgX0xURExfU0VUVVAKKworCisjIF9MVF9FTkFCTEVfSU5TVEFMTAorIyAtLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX0xUX0VOQUJMRV9JTlNUQUxMXSwKK1tBQ19BUkdfRU5BQkxFKFtsdGRsLWluc3RhbGxdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtbHRkbC1pbnN0YWxsXSwgW2luc3RhbGwgbGlibHRkbF0pXSkKKworY2FzZSAsJHtlbmFibGVfbHRkbF9pbnN0YWxsfSwke2VuYWJsZV9sdGRsX2NvbnZlbmllbmNlfSBpbgorICAqeWVzKikgOzsKKyAgKikgZW5hYmxlX2x0ZGxfY29udmVuaWVuY2U9eWVzIDs7Citlc2FjCisKK200X2lmZGVmKFtBTV9DT05ESVRJT05BTF0sCitbQU1fQ09ORElUSU9OQUwoSU5TVEFMTF9MVERMLCB0ZXN0IHgiJHtlbmFibGVfbHRkbF9pbnN0YWxsLW5vfSIgIT0geG5vKQorIEFNX0NPTkRJVElPTkFMKENPTlZFTklFTkNFX0xUREwsIHRlc3QgeCIke2VuYWJsZV9sdGRsX2NvbnZlbmllbmNlLW5vfSIgIT0geG5vKV0pCitdKSMgX0xUX0VOQUJMRV9JTlNUQUxMCisKKworIyBMVF9TWVNfRExPUEVOX0RFUExJQlMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfU1lTX0RMT1BFTl9ERVBMSUJTXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCitBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBkZXBsaWJzIGFyZSBsb2FkZWQgYnkgZGxvcGVuXSwKKyAgW2x0X2N2X3N5c19kbG9wZW5fZGVwbGlic10sCisgIFsjIFBPUlRNRSBkb2VzIHlvdXIgc3lzdGVtIGF1dG9tYXRpY2FsbHkgbG9hZCBkZXBsaWJzIGZvciBkbG9wZW4/CisgICMgb3IgaXRzIGxvZ2ljYWwgZXF1aXZhbGVudCAoZS5nLiBzaGxfbG9hZCBmb3IgSFAtVVggPCAxMSkKKyAgIyBGb3Igbm93LCB3ZSBqdXN0IGNhdGNoIE9TZXMgd2Uga25vdyBzb21ldGhpbmcgYWJvdXQgLS0gaW4gdGhlCisgICMgZnV0dXJlLCB3ZSdsbCB0cnkgdGVzdCB0aGlzIHByb2dyYW1tYXRpY2FsbHkuCisgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz11bmtub3duCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgYWl4Myp8YWl4NC4xLip8YWl4NC4yLiopCisgICAgIyBVbmtub3duIHdoZXRoZXIgdGhpcyBpcyB0cnVlIGZvciB0aGVzZSB2ZXJzaW9ucyBvZiBBSVgsIGJ1dAorICAgICMgd2Ugd2FudCB0aGlzIGBjYXNlJyBoZXJlIHRvIGV4cGxpY2l0bHkgY2F0Y2ggdGhvc2UgdmVyc2lvbnMuCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXVua25vd24KKyAgICA7OworICBhaXhbWzQtOV1dKikKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgYW1pZ2FvcyopCisgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICBwb3dlcnBjKQorICAgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPW5vCisgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICBkYXJ3aW4qKQorICAgICMgQXNzdW1pbmcgdGhlIHVzZXIgaGFzIGluc3RhbGxlZCBhIGxpYmRsIGZyb20gc29tZXdoZXJlLCB0aGlzIGlzIHRydWUKKyAgICAjIElmIHlvdSBhcmUgbG9va2luZyBmb3Igb25lIGh0dHA6Ly93d3cub3BlbmRhcndpbi5vcmcvcHJvamVjdHMvZGxjb21wYXQKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBnbnUqIHwgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICAgICMgR05VIGFuZCBpdHMgdmFyaWFudHMsIHVzaW5nIGdudSBsZC5zbyAoR2xpYmMpCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGhwdXgxMCp8aHB1eDExKikKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgaW50ZXJpeCopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGlyaXhbWzEyMzQ1XV0qfGlyaXg2LltbMDFdXSopCisgICAgIyBDYXRjaCBhbGwgdmVyc2lvbnMgb2YgSVJJWCBiZWZvcmUgNi4yLCBhbmQgaW5kaWNhdGUgdGhhdCB3ZSBkb24ndAorICAgICMga25vdyBob3cgaXQgd29ya2VkIGZvciBhbnkgb2YgdGhvc2UgdmVyc2lvbnMuCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXVua25vd24KKyAgICA7OworICBpcml4KikKKyAgICAjIFRoZSBjYXNlIGFib3ZlIGNhdGNoZXMgYW55dGhpbmcgYmVmb3JlIDYuMiwgYW5kIGl0J3Mga25vd24gdGhhdAorICAgICMgYXQgNi4yIGFuZCBsYXRlciBkbG9wZW4gZG9lcyBsb2FkIGRlcGxpYnMuCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgb3BlbmJzZCopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIG9zZltbMTIzNF1dKikKKyAgICAjIGRsb3BlbiBkaWQgbG9hZCBkZXBsaWJzIChhdCBsZWFzdCBhdCA0LngpLCBidXQgdW50aWwgdGhlIDUueCBzZXJpZXMsCisgICAgIyBpdCBkaWQgKm5vdCogdXNlIGFuIFJQQVRIIGluIGEgc2hhcmVkIGxpYnJhcnkgdG8gZmluZCBvYmplY3RzIHRoZQorICAgICMgbGlicmFyeSBkZXBlbmRzIG9uLCBzbyB3ZSBleHBsaWNpdGx5IHNheSBgbm8nLgorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz1ubworICAgIDs7CisgIG9zZjUuMHxvc2Y1LjBhfG9zZjUuMSkKKyAgICAjIGRsb3BlbiAqZG9lcyogbG9hZCBkZXBsaWJzIGFuZCB3aXRoIHRoZSByaWdodCBsb2FkZXIgcGF0Y2ggYXBwbGllZAorICAgICMgaXQgZXZlbiB1c2VzIFJQQVRIIGluIGEgc2hhcmVkIGxpYnJhcnkgdG8gc2VhcmNoIGZvciBzaGFyZWQgb2JqZWN0cworICAgICMgdGhhdCB0aGUgbGlicmFyeSBkZXBlbmRzIG9uLCBidXQgdGhlcmUncyBubyBlYXN5IHdheSB0byBrbm93IGlmIHRoYXQKKyAgICAjIHBhdGNoIGlzIGluc3RhbGxlZC4gIFNpbmNlIHRoaXMgaXMgdGhlIGNhc2UsIGFsbCB3ZSBjYW4gcmVhbGx5CisgICAgIyBzYXkgaXMgdW5rbm93biAtLSBpdCBkZXBlbmRzIG9uIHRoZSBwYXRjaCBiZWluZyBpbnN0YWxsZWQuICBJZgorICAgICMgaXQgaXMsIHRoaXMgY2hhbmdlcyB0byBgeWVzJy4gIFdpdGhvdXQgaXQsIGl0IHdvdWxkIGJlIGBubycuCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXVua25vd24KKyAgICA7OworICBvc2YqKQorICAgICMgdGhlIHR3byBjYXNlcyBhYm92ZSBzaG91bGQgY2F0Y2ggYWxsIHZlcnNpb25zIG9mIG9zZiA8PSA1LjEuICBSZWFkCisgICAgIyB0aGUgY29tbWVudHMgYWJvdmUgZm9yIHdoYXQgd2Uga25vdyBhYm91dCB0aGVtLgorICAgICMgQXQgPiA1LjEsIGRlcGxpYnMgYXJlIGxvYWRlZCAqYW5kKiBhbnkgUlBBVEggaW4gYSBzaGFyZWQgbGlicmFyeQorICAgICMgaXMgdXNlZCB0byBmaW5kIHRoZW0gc28gd2UgY2FuIGZpbmFsbHkgc2F5IGB5ZXMnLgorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBxbngqKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBzb2xhcmlzKikKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IHVuaXh3YXJlKiB8IE9wZW5VTklYKiB8IHN5c3Y0KnV3MiopCisgICAgbGlibHRkbF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgZXNhYworICBdKQoraWYgdGVzdCAiJGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicyIgIT0geWVzOyB0aGVuCisgQUNfREVGSU5FKFtMVERMX0RMT1BFTl9ERVBMSUJTXSwgWzFdLAorICAgIFtEZWZpbmUgaWYgdGhlIE9TIG5lZWRzIGhlbHAgdG8gbG9hZCBkZXBlbmRlbnQgbGlicmFyaWVzIGZvciBkbG9wZW4oKS5dKQorZmkKK10pIyBMVF9TWVNfRExPUEVOX0RFUExJQlMKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX1NZU19ETE9QRU5fREVQTElCU10sIFtMVF9TWVNfRExPUEVOX0RFUExJQlNdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX1NZU19ETE9QRU5fREVQTElCU10sIFtdKQorCisKKyMgTFRfU1lTX01PRFVMRV9FWFQKKyMgLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9TWVNfTU9EVUxFX0VYVF0sCitbbTRfcmVxdWlyZShbX0xUX1NZU19EWU5BTUlDX0xJTktFUl0pZG5sCitBQ19DQUNIRV9DSEVDSyhbd2hpY2ggZXh0ZW5zaW9uIGlzIHVzZWQgZm9yIHJ1bnRpbWUgbG9hZGFibGUgbW9kdWxlc10sCisgIFtsaWJsdGRsX2N2X3NobGliZXh0XSwKK1sKK21vZHVsZT15ZXMKK2V2YWwgbGlibHRkbF9jdl9zaGxpYmV4dD0kc2hyZXh0X2NtZHMKK21vZHVsZT1ubworZXZhbCBsaWJsdGRsX2N2X3NocmV4dD0kc2hyZXh0X2NtZHMKKyAgXSkKK2lmIHRlc3QgLW4gIiRsaWJsdGRsX2N2X3NobGliZXh0IjsgdGhlbgorICBtNF9wYXR0ZXJuX2FsbG93KFtMVF9NT0RVTEVfRVhUXSlkbmwKKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtMVF9NT0RVTEVfRVhUXSwgWyIkbGlibHRkbF9jdl9zaGxpYmV4dCJdLAorICAgIFtEZWZpbmUgdG8gdGhlIGV4dGVuc2lvbiB1c2VkIGZvciBydW50aW1lIGxvYWRhYmxlIG1vZHVsZXMsIHNheSwgIi5zbyIuXSkKK2ZpCitpZiB0ZXN0ICIkbGlibHRkbF9jdl9zaHJleHQiICE9ICIkbGlibHRkbF9jdl9zaGxpYmV4dCI7IHRoZW4KKyAgbTRfcGF0dGVybl9hbGxvdyhbTFRfU0hBUkVEX0VYVF0pZG5sCisgIEFDX0RFRklORV9VTlFVT1RFRChbTFRfU0hBUkVEX0VYVF0sIFsiJGxpYmx0ZGxfY3Zfc2hyZXh0Il0sCisgICAgW0RlZmluZSB0byB0aGUgc2hhcmVkIGxpYnJhcnkgc3VmZml4LCBzYXksICIuZHlsaWIiLl0pCitmaQorXSkjIExUX1NZU19NT0RVTEVfRVhUCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9TSExJQkVYVF0sIFtMVF9TWVNfTU9EVUxFX0VYVF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xURExfU0hMSUJFWFRdLCBbXSkKKworCisjIExUX1NZU19NT0RVTEVfUEFUSAorIyAtLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9TWVNfTU9EVUxFX1BBVEhdLAorW200X3JlcXVpcmUoW19MVF9TWVNfRFlOQU1JQ19MSU5LRVJdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW3doaWNoIHZhcmlhYmxlIHNwZWNpZmllcyBydW4tdGltZSBtb2R1bGUgc2VhcmNoIHBhdGhdLAorICBbbHRfY3ZfbW9kdWxlX3BhdGhfdmFyXSwgW2x0X2N2X21vZHVsZV9wYXRoX3Zhcj0iJHNobGlicGF0aF92YXIiXSkKK2lmIHRlc3QgLW4gIiRsdF9jdl9tb2R1bGVfcGF0aF92YXIiOyB0aGVuCisgIG00X3BhdHRlcm5fYWxsb3coW0xUX01PRFVMRV9QQVRIX1ZBUl0pZG5sCisgIEFDX0RFRklORV9VTlFVT1RFRChbTFRfTU9EVUxFX1BBVEhfVkFSXSwgWyIkbHRfY3ZfbW9kdWxlX3BhdGhfdmFyIl0sCisgICAgW0RlZmluZSB0byB0aGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBkZXRlcm1pbmVzIHRoZSBydW4tdGltZSBtb2R1bGUgc2VhcmNoIHBhdGguXSkKK2ZpCitdKSMgTFRfU1lTX01PRFVMRV9QQVRICisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9TSExJQlBBVEhdLCBbTFRfU1lTX01PRFVMRV9QQVRIXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9TSExJQlBBVEhdLCBbXSkKKworCisjIExUX1NZU19ETFNFQVJDSF9QQVRICisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfU1lTX0RMU0VBUkNIX1BBVEhdLAorW200X3JlcXVpcmUoW19MVF9TWVNfRFlOQU1JQ19MSU5LRVJdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW2ZvciB0aGUgZGVmYXVsdCBsaWJyYXJ5IHNlYXJjaCBwYXRoXSwKKyAgW2x0X2N2X3N5c19kbHNlYXJjaF9wYXRoXSwKKyAgW2x0X2N2X3N5c19kbHNlYXJjaF9wYXRoPSIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMiXSkKK2lmIHRlc3QgLW4gIiRsdF9jdl9zeXNfZGxzZWFyY2hfcGF0aCI7IHRoZW4KKyAgc3lzX2Rsc2VhcmNoX3BhdGg9CisgIGZvciBkaXIgaW4gJGx0X2N2X3N5c19kbHNlYXJjaF9wYXRoOyBkbworICAgIGlmIHRlc3QgLXogIiRzeXNfZGxzZWFyY2hfcGF0aCI7IHRoZW4KKyAgICAgIHN5c19kbHNlYXJjaF9wYXRoPSIkZGlyIgorICAgIGVsc2UKKyAgICAgIHN5c19kbHNlYXJjaF9wYXRoPSIkc3lzX2Rsc2VhcmNoX3BhdGgkUEFUSF9TRVBBUkFUT1IkZGlyIgorICAgIGZpCisgIGRvbmUKKyAgbTRfcGF0dGVybl9hbGxvdyhbTFRfRExTRUFSQ0hfUEFUSF0pZG5sCisgIEFDX0RFRklORV9VTlFVT1RFRChbTFRfRExTRUFSQ0hfUEFUSF0sIFsiJHN5c19kbHNlYXJjaF9wYXRoIl0sCisgICAgW0RlZmluZSB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGlicmFyeSBzZWFyY2ggcGF0aC5dKQorZmkKK10pIyBMVF9TWVNfRExTRUFSQ0hfUEFUSAorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xURExfU1lTU0VBUkNIUEFUSF0sIFtMVF9TWVNfRExTRUFSQ0hfUEFUSF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xURExfU1lTU0VBUkNIUEFUSF0sIFtdKQorCisKKyMgX0xUX0NIRUNLX0RMUFJFT1BFTgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0NIRUNLX0RMUFJFT1BFTl0sCitbbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCitBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBsaWJ0b29sIHN1cHBvcnRzIC1kbG9wZW4vLWRscHJlb3Blbl0sCisgIFtsaWJsdGRsX2N2X3ByZWxvYWRlZF9zeW1ib2xzXSwKKyAgW2lmIHRlc3QgLW4gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgorICAgIGxpYmx0ZGxfY3ZfcHJlbG9hZGVkX3N5bWJvbHM9eWVzCisgIGVsc2UKKyAgICBsaWJsdGRsX2N2X3ByZWxvYWRlZF9zeW1ib2xzPW5vCisgIGZpCisgIF0pCitpZiB0ZXN0IHgiJGxpYmx0ZGxfY3ZfcHJlbG9hZGVkX3N5bWJvbHMiID0geHllczsgdGhlbgorICBBQ19ERUZJTkUoW0hBVkVfUFJFTE9BREVEX1NZTUJPTFNdLCBbMV0sCisgICAgW0RlZmluZSBpZiBsaWJ0b29sIGNhbiBleHRyYWN0IHN5bWJvbCBsaXN0cyBmcm9tIG9iamVjdCBmaWxlcy5dKQorZmkKK10pIyBfTFRfQ0hFQ0tfRExQUkVPUEVOCisKKworIyBMVF9MSUJfRExMT0FECisjIC0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9MSUJfRExMT0FEXSwKK1ttNF9wYXR0ZXJuX2FsbG93KFteTFRfRExMT0FERVJTJF0pCitMVF9ETExPQURFUlM9CitBQ19TVUJTVChbTFRfRExMT0FERVJTXSkKKworQUNfTEFOR19QVVNIKFtDXSkKKworTElCQUREX0RMT1BFTj0KK0FDX1NFQVJDSF9MSUJTKFtkbG9wZW5dLCBbZGxdLAorCVtBQ19ERUZJTkUoW0hBVkVfTElCRExdLCBbMV0sCisJCSAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGxpYmRsIGxpYnJhcnkgb3IgZXF1aXZhbGVudC5dKQorCWlmIHRlc3QgIiRhY19jdl9zZWFyY2hfZGxvcGVuIiAhPSAibm9uZSByZXF1aXJlZCIgOyB0aGVuCisJICBMSUJBRERfRExPUEVOPSItbGRsIgorCWZpCisJbGlibHRkbF9jdl9saWJfZGxfZGxvcGVuPSJ5ZXMiCisJTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99ZGxvcGVuLmxhIl0sCisgICAgW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaWYgSEFWRV9ETEZDTl9ICisjICBpbmNsdWRlIDxkbGZjbi5oPgorI2VuZGlmCisgICAgXV0sIFtbZGxvcGVuKDAsIDApO11dKV0sCisJICAgIFtBQ19ERUZJTkUoW0hBVkVfTElCRExdLCBbMV0sCisJCSAgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBsaWJkbCBsaWJyYXJ5IG9yIGVxdWl2YWxlbnQuXSkKKwkgICAgbGlibHRkbF9jdl9mdW5jX2Rsb3Blbj0ieWVzIgorCSAgICBMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31kbG9wZW4ubGEiXSwKKwlbQUNfQ0hFQ0tfTElCKFtzdmxkXSwgW2Rsb3Blbl0sCisJCVtBQ19ERUZJTkUoW0hBVkVfTElCRExdLCBbMV0sCisJCQkgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbGliZGwgbGlicmFyeSBvciBlcXVpdmFsZW50Ll0pCisJICAgICAgICBMSUJBRERfRExPUEVOPSItbHN2bGQiIGxpYmx0ZGxfY3ZfZnVuY19kbG9wZW49InllcyIKKwkJTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99ZGxvcGVuLmxhIl0pXSldKQoraWYgdGVzdCB4IiRsaWJsdGRsX2N2X2Z1bmNfZGxvcGVuIiA9IHh5ZXMgfHwgdGVzdCB4IiRsaWJsdGRsX2N2X2xpYl9kbF9kbG9wZW4iID0geHllcwordGhlbgorICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorICBMSUJTPSIkTElCUyAkTElCQUREX0RMT1BFTiIKKyAgQUNfQ0hFQ0tfRlVOQ1MoW2RsZXJyb3JdKQorICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorZmkKK0FDX1NVQlNUKFtMSUJBRERfRExPUEVOXSkKKworTElCQUREX1NITF9MT0FEPQorQUNfQ0hFQ0tfRlVOQyhbc2hsX2xvYWRdLAorCVtBQ19ERUZJTkUoW0hBVkVfU0hMX0xPQURdLCBbMV0sCisJCSAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNobF9sb2FkIGZ1bmN0aW9uLl0pCisJTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99c2hsX2xvYWQubGEiXSwKKyAgICBbQUNfQ0hFQ0tfTElCKFtkbGRdLCBbc2hsX2xvYWRdLAorCSAgICBbQUNfREVGSU5FKFtIQVZFX1NITF9MT0FEXSwgWzFdLAorCQkgICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2hsX2xvYWQgZnVuY3Rpb24uXSkKKwkgICAgTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99c2hsX2xvYWQubGEiCisJICAgIExJQkFERF9TSExfTE9BRD0iLWxkbGQiXSldKQorQUNfU1VCU1QoW0xJQkFERF9TSExfTE9BRF0pCisKK2Nhc2UgJGhvc3Rfb3MgaW4KK2RhcndpbltbMTU2N11dLiopCisjIFdlIG9ubHkgd2FudCB0aGlzIGZvciBwcmUtTWFjIE9TIFggMTAuNC4KKyAgQUNfQ0hFQ0tfRlVOQyhbX2R5bGRfZnVuY19sb29rdXBdLAorCVtBQ19ERUZJTkUoW0hBVkVfRFlMRF0sIFsxXSwKKwkJICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX2R5bGRfZnVuY19sb29rdXAgZnVuY3Rpb24uXSkKKwlMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31keWxkLmxhIl0pCisgIDs7CitiZW9zKikKKyAgTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99bG9hZF9hZGRfb24ubGEiCisgIDs7CitjeWd3aW4qIHwgbWluZ3cqIHwgb3MyKiB8IHB3MzIqKQorICBBQ19DSEVDS19ERUNMUyhbY3lnd2luX2NvbnZfcGF0aF0sIFtdLCBbXSwgW1sjaW5jbHVkZSA8c3lzL2N5Z3dpbi5oPl1dKQorICBMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31sb2FkbGlicmFyeS5sYSIKKyAgOzsKK2VzYWMKKworQUNfQ0hFQ0tfTElCKFtkbGRdLCBbZGxkX2xpbmtdLAorCVtBQ19ERUZJTkUoW0hBVkVfRExEXSwgWzFdLAorCQkgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBHTlUgZGxkIGxpYnJhcnkuXSkKKwkJTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99ZGxkX2xpbmsubGEiXSkKK0FDX1NVQlNUKFtMSUJBRERfRExEX0xJTktdKQorCittNF9wYXR0ZXJuX2FsbG93KFteTFRfRExQUkVPUEVOJF0pCitMVF9ETFBSRU9QRU49CitpZiB0ZXN0IC1uICIkTFRfRExMT0FERVJTIgordGhlbgorICBmb3IgbHRfbG9hZGVyIGluICRMVF9ETExPQURFUlM7IGRvCisgICAgTFRfRExQUkVPUEVOPSIkTFRfRExQUkVPUEVOLWRscHJlb3BlbiAkbHRfbG9hZGVyICIKKyAgZG9uZQorICBBQ19ERUZJTkUoW0hBVkVfTElCRExMT0FERVJdLCBbMV0sCisgICAgICAgICAgICBbRGVmaW5lIGlmIGxpYmRsbG9hZGVyIHdpbGwgYmUgYnVpbHQgb24gdGhpcyBwbGF0Zm9ybV0pCitmaQorQUNfU1VCU1QoW0xUX0RMUFJFT1BFTl0pCisKK2RubCBUaGlzIGlzbid0IHVzZWQgYW55bW9yZSwgYnV0IHNldCBpdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKK0xJQkFERF9ETD0iJExJQkFERF9ETE9QRU4gJExJQkFERF9TSExfTE9BRCIKK0FDX1NVQlNUKFtMSUJBRERfRExdKQorCitBQ19MQU5HX1BPUAorXSkjIExUX0xJQl9ETExPQUQKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX0RMTElCXSwgW0xUX0xJQl9ETExPQURdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX0RMTElCXSwgW10pCisKKworIyBMVF9TWVNfU1lNQk9MX1VTQ09SRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBkb2VzIHRoZSBjb21waWxlciBwcmVmaXggZ2xvYmFsIHN5bWJvbHMgd2l0aCBhbiB1bmRlcnNjb3JlPworQUNfREVGVU4oW0xUX1NZU19TWU1CT0xfVVNDT1JFXSwKK1ttNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgXyBwcmVmaXggaW4gY29tcGlsZWQgc3ltYm9sc10sCisgIFtsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmVdLAorICBbbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlPW5vCisgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCit2b2lkIG5tX3Rlc3RfZnVuYygpe30KK2ludCBtYWluKCl7bm1fdGVzdF9mdW5jO3JldHVybiAwO30KK19MVF9FT0YKKyAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgICAjIE5vdyB0cnkgdG8gZ3JhYiB0aGUgc3ltYm9scy4KKyAgICBhY19ubGlzdD1jb25mdGVzdC5ubQorICAgIGlmIEFDX1RSWV9FVkFMKE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXD4gJGFjX25saXN0KSAmJiB0ZXN0IC1zICIkYWNfbmxpc3QiOyB0aGVuCisgICAgICAjIFNlZSB3aGV0aGVyIHRoZSBzeW1ib2xzIGhhdmUgYSBsZWFkaW5nIHVuZGVyc2NvcmUuCisgICAgICBpZiBncmVwICdeLiBfbm1fdGVzdF9mdW5jJyAiJGFjX25saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZT15ZXMKKyAgICAgIGVsc2UKKyAgICAgICAgaWYgZ3JlcCAnXi4gbm1fdGVzdF9mdW5jICcgIiRhY19ubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorCSAgOgorICAgICAgICBlbHNlCisJICBlY2hvICJjb25maWd1cmU6IGNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkYWNfbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgZWNobyAiY29uZmlndXJlOiBjYW5ub3QgcnVuICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgZmkKKyAgZWxzZQorICAgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgIGNhdCBjb25mdGVzdC5jID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgZmkKKyAgcm0gLXJmIGNvbmZ0ZXN0KgorICBdKQorICBzeXNfc3ltYm9sX3VuZGVyc2NvcmU9JGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZQorICBBQ19TVUJTVChbc3lzX3N5bWJvbF91bmRlcnNjb3JlXSkKK10pIyBMVF9TWVNfU1lNQk9MX1VTQ09SRQorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xURExfU1lNQk9MX1VTQ09SRV0sIFtMVF9TWVNfU1lNQk9MX1VTQ09SRV0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xURExfU1lNQk9MX1VTQ09SRV0sIFtdKQorCisKKyMgTFRfRlVOQ19ETFNZTV9VU0NPUkUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9GVU5DX0RMU1lNX1VTQ09SRV0sCitbQUNfUkVRVUlSRShbTFRfU1lTX1NZTUJPTF9VU0NPUkVdKWRubAoraWYgdGVzdCB4IiRsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmUiID0geHllczsgdGhlbgorICBpZiB0ZXN0IHgiJGxpYmx0ZGxfY3ZfZnVuY19kbG9wZW4iID0geHllcyB8fAorICAgICB0ZXN0IHgiJGxpYmx0ZGxfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4eWVzIDsgdGhlbgorCUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHdlIGhhdmUgdG8gYWRkIGFuIHVuZGVyc2NvcmUgZm9yIGRsc3ltXSwKKwkgIFtsaWJsdGRsX2N2X25lZWRfdXNjb3JlXSwKKwkgIFtsaWJsdGRsX2N2X25lZWRfdXNjb3JlPXVua25vd24KKyAgICAgICAgICBzYXZlX0xJQlM9IiRMSUJTIgorICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJBRERfRExPUEVOIgorCSAgX0xUX1RSWV9ETE9QRU5fU0VMRigKKwkgICAgW2xpYmx0ZGxfY3ZfbmVlZF91c2NvcmU9bm9dLCBbbGlibHRkbF9jdl9uZWVkX3VzY29yZT15ZXNdLAorCSAgICBbXSwJCQkJIFtsaWJsdGRsX2N2X25lZWRfdXNjb3JlPWNyb3NzXSkKKwkgIExJQlM9IiRzYXZlX0xJQlMiCisJXSkKKyAgZmkKK2ZpCisKK2lmIHRlc3QgeCIkbGlibHRkbF9jdl9uZWVkX3VzY29yZSIgPSB4eWVzOyB0aGVuCisgIEFDX0RFRklORShbTkVFRF9VU0NPUkVdLCBbMV0sCisgICAgW0RlZmluZSBpZiBkbHN5bSgpIHJlcXVpcmVzIGEgbGVhZGluZyB1bmRlcnNjb3JlIGluIHN5bWJvbCBuYW1lcy5dKQorZmkKK10pIyBMVF9GVU5DX0RMU1lNX1VTQ09SRQorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xURExfRExTWU1fVVNDT1JFXSwgW0xUX0ZVTkNfRExTWU1fVVNDT1JFXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9ETFNZTV9VU0NPUkVdLCBbXSkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAorIyBzZXJpYWwgMQorCiAjIEFNX0FVVE9NQUtFX1ZFUlNJT04oVkVSU0lPTikKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBBdXRvbWFrZSBYLlkgdHJhY2VzIHRoaXMgbWFjcm8gdG8gZW5zdXJlIGFjbG9jYWwubTQgaGFzIGJlZW4KQEAgLTM0LDcgKzg1Niw3IEBACiBbYW1fX2FwaV92ZXJzaW9uPScxLjExJwogZG5sIFNvbWUgdXNlcnMgZmluZCBBTV9BVVRPTUFLRV9WRVJTSU9OIGFuZCBtaXN0YWtlIGl0IGZvciBhIHdheSB0bwogZG5sIHJlcXVpcmUgc29tZSBtaW5pbXVtIHZlcnNpb24uICBQb2ludCB0aGVtIHRvIHRoZSByaWdodCBtYWNyby4KLW00X2lmKFskMV0sIFsxLjExLjFdLCBbXSwKK200X2lmKFskMV0sIFsxLjExLjNdLCBbXSwKICAgICAgIFtBQ19GQVRBTChbRG8gbm90IGNhbGwgJDAsIHVzZSBBTV9JTklUX0FVVE9NQUtFKFskMV0pLl0pXSlkbmwKIF0pCiAKQEAgLTUwLDcgKzg3Miw3IEBACiAjIENhbGwgQU1fQVVUT01BS0VfVkVSU0lPTiBhbmQgQU1fQVVUT01BS0VfVkVSU0lPTiBzbyB0aGV5IGNhbiBiZSB0cmFjZWQuCiAjIFRoaXMgZnVuY3Rpb24gaXMgQUNfUkVRVUlSRWQgYnkgQU1fSU5JVF9BVVRPTUFLRS4KIEFDX0RFRlVOKFtBTV9TRVRfQ1VSUkVOVF9BVVRPTUFLRV9WRVJTSU9OXSwKLVtBTV9BVVRPTUFLRV9WRVJTSU9OKFsxLjExLjFdKWRubAorW0FNX0FVVE9NQUtFX1ZFUlNJT04oWzEuMTEuM10pZG5sCiBtNF9pZm5kZWYoW0FDX0FVVE9DT05GX1ZFUlNJT05dLAogICBbbTRfY29weShbbTRfUEFDS0FHRV9WRVJTSU9OXSwgW0FDX0FVVE9DT05GX1ZFUlNJT05dKV0pZG5sCiBfQU1fQVVUT0NPTkZfVkVSU0lPTihtNF9kZWZuKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSkpXSkKQEAgLTc5LDEyICs5MDEsMTQgQEAKIAogIyBBTV9BVVhfRElSX0VYUEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQogCi0jIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCisjIHNlcmlhbCAxCisKICMgRm9yIHByb2plY3RzIHVzaW5nIEFDX0NPTkZJR19BVVhfRElSKFtmb29dKSwgQXV0b2NvbmYgc2V0cwogIyAkYWNfYXV4X2RpciB0byBgJHNyY2Rpci9mb28nLiAgSW4gb3RoZXIgcHJvamVjdHMsIGl0IGlzIHNldCB0bwogIyBgJHNyY2RpcicsIGAkc3JjZGlyLy4uJywgb3IgYCRzcmNkaXIvLi4vLi4nLgpAQCAtMTY2LDE0ICs5OTAsMTQgQEAKIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5Ll1dKQogZmldKV0pCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5Ci0jIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDksCisjIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBzZXJpYWwgMTAKKyMgc2VyaWFsIDEyCiAKICMgVGhlcmUgYXJlIGEgZmV3IGRpcnR5IGhhY2tzIGJlbG93IHRvIGF2b2lkIGxldHRpbmcgYEFDX1BST0dfQ0MnIGJlCiAjIHdyaXR0ZW4gaW4gY2xlYXIsIGluIHdoaWNoIGNhc2UgYXV0b21ha2UsIHdoZW4gcmVhZGluZyBhY2xvY2FsLm00LApAQCAtMjEzLDYgKzEwMzcsNyBAQAogICAjIGluc3RhbmNlIGl0IHdhcyByZXBvcnRlZCB0aGF0IG9uIEhQLVVYIHRoZSBnY2MgdGVzdCB3aWxsIGVuZCB1cAogICAjIG1ha2luZyBhIGR1bW15IGZpbGUgbmFtZWQgYEQnIC0tIGJlY2F1c2UgYC1NRCcgbWVhbnMgYHB1dCB0aGUgb3V0cHV0CiAgICMgaW4gRCcuCisgIHJtIC1yZiBjb25mdGVzdC5kaXIKICAgbWtkaXIgY29uZnRlc3QuZGlyCiAgICMgQ29weSBkZXBjb21wIHRvIHN1YmRpciBiZWNhdXNlIG90aGVyd2lzZSB3ZSB3b24ndCBmaW5kIGl0IGlmIHdlJ3JlCiAgICMgdXNpbmcgYSByZWxhdGl2ZSBkaXJlY3RvcnkuCkBAIC0yNzcsNyArMTEwMiw3IEBACiAJYnJlYWsKICAgICAgIGZpCiAgICAgICA7OwotICAgIG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpCisgICAgbXN2YzcgfCBtc3ZjN21zeXMgfCBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQogICAgICAgIyBUaGlzIGNvbXBpbGVyIHdvbid0IGdyb2sgYC1jIC1vJywgYnV0IGFsc28sIHRoZSBtaW51c28gdGVzdCBoYXMKICAgICAgICMgbm90IHJ1biB5ZXQuICBUaGVzZSBkZXBtb2RlcyBhcmUgbGF0ZSBlbm91Z2ggaW4gdGhlIGdhbWUsIGFuZAogICAgICAgIyBzbyB3ZWFrIHRoYXQgdGhlaXIgZnVuY3Rpb25pbmcgc2hvdWxkIG5vdCBiZSBpbXBhY3RlZC4KQEAgLTM0MiwxMCArMTE2NywxMyBAQAogaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuCiAgIGFtX2RlcGNvbXA9IiRhY19hdXhfZGlyL2RlcGNvbXAiCiAgIEFNREVQQkFDS1NMQVNIPSdcJworICBhbV9fbm9kZXA9J19ubycKIGZpCiBBTV9DT05ESVRJT05BTChbQU1ERVBdLCBbdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vXSkKIEFDX1NVQlNUKFtBTURFUEJBQ0tTTEFTSF0pZG5sCiBfQU1fU1VCU1RfTk9UTUFLRShbQU1ERVBCQUNLU0xBU0hdKWRubAorQUNfU1VCU1QoW2FtX19ub2RlcF0pZG5sCitfQU1fU1VCU1RfTk9UTUFLRShbYW1fX25vZGVwXSlkbmwKIF0pCiAKICMgR2VuZXJhdGUgY29kZSB0byBzZXQgdXAgZGVwZW5kZW5jeSB0cmFja2luZy4gICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KQEAgLTU2NywxMiArMTM5NSwxNSBAQAogZG9uZQogZWNobyAidGltZXN0YW1wIGZvciAkX2FtX2FyZyIgPmBBU19ESVJOQU1FKFsiJF9hbV9hcmciXSlgL3N0YW1wLWhbXSRfYW1fc3RhbXBfY291bnRdKQogCi0jIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSwgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSwgMjAwOCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCisjIHNlcmlhbCAxCisKICMgQU1fUFJPR19JTlNUQUxMX1NICiAjIC0tLS0tLS0tLS0tLS0tLS0tLQogIyBEZWZpbmUgJGluc3RhbGxfc2guCkBAIC02MTIsOCArMTQ0Myw4IEBACiAjIEFkZCAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgb3B0aW9uIHRvIGNvbmZpZ3VyZS4gICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAjIEZyb20gSmltIE1leWVyaW5nCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk4LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA4Ci0jIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTgsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDgsCisjIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCkBAIC02MzMsNyArMTQ2NCw3IEBACiAgICAgICAgW2Rpc2FibGVdLCBbbTRfZGVmaW5lKFthbV9tYWludGFpbmVyX290aGVyXSwgW2VuYWJsZV0pXSwKICAgICAgICBbbTRfZGVmaW5lKFthbV9tYWludGFpbmVyX290aGVyXSwgW2VuYWJsZV0pCiAgICAgICAgIG00X3dhcm4oW3N5bnRheF0sIFt1bmV4cGVjdGVkIGFyZ3VtZW50IHRvIEFNQCZ0QF9NQUlOVEFJTkVSX01PREU6ICQxXSldKQotQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGFtX21haW50YWluZXJfb3RoZXIgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXNdKQorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlc10pCiAgIGRubCBtYWludGFpbmVyLW1vZGUncyBkZWZhdWx0IGlzICdkaXNhYmxlJyB1bmxlc3MgJ2VuYWJsZScgaXMgcGFzc2VkCiAgIEFDX0FSR19FTkFCTEUoW21haW50YWluZXItbW9kZV0sCiBbICAtLV1bYW1fbWFpbnRhaW5lcl9vdGhlcl1bLW1haW50YWluZXItbW9kZSAgYW1fbWFpbnRhaW5lcl9vdGhlciBtYWtlIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgbm90IHVzZWZ1bApAQCAtNzc5LDEyICsxNjEwLDE1IEBACiBmaQogXSkKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAorIyBzZXJpYWwgMQorCiAjIEFNX1BST0dfTUtESVJfUAogIyAtLS0tLS0tLS0tLS0tLS0KICMgQ2hlY2sgZm9yIGBta2RpciAtcCcuCkBAIC04MDcsMTMgKzE2NDEsMTQgQEAKIAogIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBvcHRpb24gaGFuZGxpbmcuICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQogCi0jIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNSwgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNSwgMjAwOCwgMjAxMCBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIHNlcmlhbCA0CisjIHNlcmlhbCA1CiAKICMgX0FNX01BTkdMRV9PUFRJT04oTkFNRSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTgyMSwxMyArMTY1NiwxMyBAQAogW1tfQU1fT1BUSU9OX11tNF9icGF0c3Vic3QoJDEsIFtbXmEtekEtWjAtOV9dXSwgW19dKV0pCiAKICMgX0FNX1NFVF9PUFRJT04oTkFNRSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFNldCBvcHRpb24gTkFNRS4gIFByZXNlbnRseSB0aGF0IG9ubHkgbWVhbnMgZGVmaW5pbmcgYSBmbGFnIGZvciB0aGlzIG9wdGlvbi4KIEFDX0RFRlVOKFtfQU1fU0VUX09QVElPTl0sCiBbbTRfZGVmaW5lKF9BTV9NQU5HTEVfT1BUSU9OKFskMV0pLCAxKV0pCiAKICMgX0FNX1NFVF9PUFRJT05TKE9QVElPTlMpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIE9QVElPTlMgaXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBBdXRvbWFrZSBvcHRpb25zLgogQUNfREVGVU4oW19BTV9TRVRfT1BUSU9OU10sCiBbbTRfZm9yZWFjaF93KFtfQU1fT3B0aW9uXSwgWyQxXSwgW19BTV9TRVRfT1BUSU9OKF9BTV9PcHRpb24pXSldKQpAQCAtOTAzLDEyICsxNzM4LDE0IEBACiBmaQogQUNfTVNHX1JFU1VMVCh5ZXMpXSkKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAorIyBzZXJpYWwgMQorCiAjIEFNX1BST0dfSU5TVEFMTF9TVFJJUAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgT25lIGlzc3VlIHdpdGggdmVuZG9yIGBpbnN0YWxsJyAoZXZlbiBHTlUpIGlzIHRoYXQgeW91IGNhbid0CkBAIC05MzEsMTMgKzE3NjgsMTMgQEAKIElOU1RBTExfU1RSSVBfUFJPR1JBTT0iXCQoaW5zdGFsbF9zaCkgLWMgLXMiCiBBQ19TVUJTVChbSU5TVEFMTF9TVFJJUF9QUk9HUkFNXSldKQogCi0jIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIHNlcmlhbCAyCisjIHNlcmlhbCAzCiAKICMgX0FNX1NVQlNUX05PVE1BS0UoVkFSSUFCTEUpCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTQ2LDEzICsxNzgzLDEzIEBACiBBQ19ERUZVTihbX0FNX1NVQlNUX05PVE1BS0VdKQogCiAjIEFNX1NVQlNUX05PVE1BS0UoVkFSSUFCTEUpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBQdWJsaWMgc2lzdGVyIG9mIF9BTV9TVUJTVF9OT1RNQUtFLgogQUNfREVGVU4oW0FNX1NVQlNUX05PVE1BS0VdLCBbX0FNX1NVQlNUX05PVE1BS0UoJEApXSkKIAogIyBDaGVjayBob3cgdG8gY3JlYXRlIGEgdGFyYmFsbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQogCi0jIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKQEAgLTk3NCwxMCArMTgxMSwxMSBAQAogIyBhIHRhcmJhbGwgcmVhZCBmcm9tIHN0ZGluLgogIyAgICAgJChhbV9fdW50YXIpIDwgcmVzdWx0LnRhcgogQUNfREVGVU4oW19BTV9QUk9HX1RBUl0sCi1bIyBBbHdheXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgotQU1fTUlTU0lOR19QUk9HKFtBTVRBUl0sIFt0YXJdKQorWyMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gIFllcywgaXQncyBzdGlsbCB1c2VkCisjIGluIHRoZSB3aWxkIDotKCAgV2Ugc2hvdWxkIGZpbmQgYSBwcm9wZXIgd2F5IHRvIGRlcHJlY2F0ZSBpdCAuLi4KK0FDX1NVQlNUKFtBTVRBUl0sIFsnJCR7VEFSLXRhcn0nXSkKIG00X2lmKFskMV0sIFt2N10sCi0gICAgIFthbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gIiQkdGFyZGlyIic7IGFtX191bnRhcj0nJHtBTVRBUn0geGYgLSddLAorICAgICBbYW1fX3Rhcj0nJCR7VEFSLXRhcn0gY2hvZiAtICIkJHRhcmRpciInIGFtX191bnRhcj0nJCR7VEFSLXRhcn0geGYgLSddLAogICAgICBbbTRfY2FzZShbJDFdLCBbdXN0YXJdLCwgW3BheF0sLAogICAgICAgICAgICAgICBbbTRfZmF0YWwoW1Vua25vd24gdGFyIGZvcm1hdF0pXSkKIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGNyZWF0ZSBhICQxIHRhciBhcmNoaXZlXSkKQEAgLTEwNDYsNiArMTg4NCwxNiBAQAogQUNfU1VCU1QoW2FtX191bnRhcl0pCiBdKSAjIF9BTV9QUk9HX1RBUgogCittNF9pbmNsdWRlKFttNC9hc21jZmkubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfYXBwZW5kX2ZsYWcubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfY2NfbWF4b3B0Lm00XSkKK200X2luY2x1ZGUoW200L2F4X2NmbGFnc193YXJuX2FsbC5tNF0pCittNF9pbmNsdWRlKFttNC9heF9jaGVja19jb21waWxlX2ZsYWcubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfY29tcGlsZXJfdmVuZG9yLm00XSkKK200X2luY2x1ZGUoW200L2F4X2NvbmZpZ3VyZV9hcmdzLm00XSkKK200X2luY2x1ZGUoW200L2F4X2VuYWJsZV9idWlsZGRpci5tNF0pCittNF9pbmNsdWRlKFttNC9heF9nY2NfYXJjaGZsYWcubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfZ2NjX3g4Nl9jcHVpZC5tNF0pCiBtNF9pbmNsdWRlKFttNC9saWJ0b29sLm00XSkKIG00X2luY2x1ZGUoW200L2x0b3B0aW9ucy5tNF0pCiBtNF9pbmNsdWRlKFttNC9sdHN1Z2FyLm00XSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29tcGlsZSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29tcGlsZQppbmRleCAxYjFkMjMyLi5jMDA5NmE3IDEwMDc1NQotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbXBpbGUKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb21waWxlCkBAIC0xLDkgKzEsMTAgQEAKICMhIC9iaW4vc2gKICMgV3JhcHBlciBmb3IgY29tcGlsZXJzIHdoaWNoIGRvIG5vdCB1bmRlcnN0YW5kIGAtYyAtbycuCiAKLXNjcmlwdHZlcnNpb249MjAwNS0wNS0xNC4yMgorc2NyaXB0dmVyc2lvbj0yMDA5LTEwLTA2LjIwOyAjIFVUQwogCi0jIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMywgMjAwNCwgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA5ICBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KICMgV3JpdHRlbiBieSBUb20gVHJvbWV5IDx0cm9tZXlAY3lnbnVzLmNvbT4uCiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0xNyw4ICsxOCw3IEBACiAjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAjCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAogIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CiAjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQpAQCAtMTAzLDEzICsxMDMsMTMgQEAKIGZpCiAKICMgTmFtZSBvZiBmaWxlIHdlIGV4cGVjdCBjb21waWxlciB0byBjcmVhdGUuCi1jb2ZpbGU9YGVjaG8gIiRjZmlsZSIgfCBzZWQgLWUgJ3N8Xi4qL3x8JyAtZSAncy9cLmMkLy5vLydgCitjb2ZpbGU9YGVjaG8gIiRjZmlsZSIgfCBzZWQgJ3N8Xi4qW1xcL118fDsgc3xeW2EtekEtWl06fHw7IHMvXC5jJC8uby8nYAogCiAjIENyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkuCi0jIE5vdGU6IHVzZSBgWy8uLV0nIGhlcmUgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgdXNlIHRoZSBzYW1lIG5hbWUKKyMgTm90ZTogdXNlIGBbL1xcOi4tXScgaGVyZSB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCB1c2UgdGhlIHNhbWUgbmFtZQogIyB0aGF0IHdlIGFyZSB1c2luZyBmb3IgdGhlIC5vIGZpbGUuICBBbHNvLCBiYXNlIHRoZSBuYW1lIG9uIHRoZSBleHBlY3RlZAogIyBvYmplY3QgZmlsZSBuYW1lLCBzaW5jZSB0aGF0IGlzIHdoYXQgbWF0dGVycyB3aXRoIGEgcGFyYWxsZWwgYnVpbGQuCi1sb2NrZGlyPWBlY2hvICIkY29maWxlIiB8IHNlZCAtZSAnc3xbLy4tXXxffGcnYC5kCitsb2NrZGlyPWBlY2hvICIkY29maWxlIiB8IHNlZCAtZSAnc3xbL1xcOi4tXXxffGcnYC5kCiB3aGlsZSB0cnVlOyBkbwogICBpZiBta2RpciAiJGxvY2tkaXIiID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgIGJyZWFrCkBAIC0xMjQsOSArMTI0LDkgQEAKIHJldD0kPwogCiBpZiB0ZXN0IC1mICIkY29maWxlIjsgdGhlbgotICBtdiAiJGNvZmlsZSIgIiRvZmlsZSIKKyAgdGVzdCAiJGNvZmlsZSIgPSAiJG9maWxlIiB8fCBtdiAiJGNvZmlsZSIgIiRvZmlsZSIKIGVsaWYgdGVzdCAtZiAiJHtjb2ZpbGV9YmoiOyB0aGVuCi0gIG12ICIke2NvZmlsZX1iaiIgIiRvZmlsZSIKKyAgdGVzdCAiJHtjb2ZpbGV9YmoiID0gIiRvZmlsZSIgfHwgbXYgIiR7Y29maWxlfWJqIiAiJG9maWxlIgogZmkKIAogcm1kaXIgIiRsb2NrZGlyIgpAQCAtMTM4LDUgKzEzOCw2IEBACiAjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKICMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNpb249IgogIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKLSMgdGltZS1zdGFtcC1lbmQ6ICIkIgorIyB0aW1lLXN0YW1wLXRpbWUtem9uZTogIlVUQyIKKyMgdGltZS1zdGFtcC1lbmQ6ICI7ICMgVVRDIgogIyBFbmQ6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5ndWVzcyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLmd1ZXNzCmluZGV4IGQ1M2UzMDkuLmIwMjU2NWMgMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLmd1ZXNzCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLmd1ZXNzCkBAIC0xLDEwICsxLDEwIEBACiAjISAvYmluL3NoCiAjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCiAjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAotIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkKLSMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLAorIyAgIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAwOS0xMS0xOScKK3RpbWVzdGFtcD0nMjAxMS0wNi0wMycKIAogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtNTYsOCArNTYsOSBAQAogR05VIGNvbmZpZy5ndWVzcyAoJHRpbWVzdGFtcCkKIAogT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLgotQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAotMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgpAQCAtMTgwLDcgKzE4MSw3IEBACiAJCWZpCiAJCTs7CiAJICAgICopCi0JICAgICAgICBvcz1uZXRic2QKKwkJb3M9bmV0YnNkCiAJCTs7CiAJZXNhYwogCSMgVGhlIE9TIHJlbGVhc2UKQEAgLTIyMyw3ICsyMjQsNyBAQAogCQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkM30nYAogCQk7OwogCSo1LiopCi0JICAgICAgICBVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkNH0nYAorCQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkNH0nYAogCQk7OwogCWVzYWMKIAkjIEFjY29yZGluZyB0byBDb21wYXEsIC91c3Ivc2Jpbi9wc3JpbmZvIGhhcyBiZWVuIGF2YWlsYWJsZSBvbgpAQCAtMjY5LDcgKzI3MCwxMCBAQAogCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmltZW50YWwgYmFzZWxldmVsLgogCSMgMS4yIHVzZXMgIjEuMiIgZm9yIHVuYW1lIC1yLgogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAotCWV4aXQgOzsKKwkjIFJlc2V0IEVYSVQgdHJhcCBiZWZvcmUgZXhpdGluZyB0byBhdm9pZCBzcHVyaW91cyBub24temVybyBleGl0IGNvZGUuCisJZXhpdGNvZGU9JD8KKwl0cmFwICcnIDAKKwlleGl0ICRleGl0Y29kZSA7OwogICAgIEFscGhhXCAqOldpbmRvd3NfTlQqOiopCiAJIyBIb3cgZG8gd2Uga25vdyBpdCdzIEludGVyaXggcmF0aGVyIHRoYW4gdGhlIGdlbmVyaWMgUE9TSVggc3Vic3lzdGVtPwogCSMgU2hvdWxkIHdlIGNoYW5nZSBVTkFNRV9NQUNISU5FIGJhc2VkIG9uIHRoZSBvdXRwdXQgb2YgdW5hbWUgaW5zdGVhZApAQCAtMjk1LDcgKzI5OSw3IEBACiAJZWNobyBzMzkwLWlibS16dm1vZQogCWV4aXQgOzsKICAgICAqOk9TNDAwOio6KikKLSAgICAgICAgZWNobyBwb3dlcnBjLWlibS1vczQwMAorCWVjaG8gcG93ZXJwYy1pYm0tb3M0MDAKIAlleGl0IDs7CiAgICAgYXJtOlJJU0MqOjEuWzAxMl0qOip8YXJtOnJpc2NpeDoxLlswMTJdKjoqKQogCWVjaG8gYXJtLWFjb3JuLXJpc2NpeCR7VU5BTUVfUkVMRUFTRX0KQEAgLTMzMyw2ICszMzcsOSBAQAogICAgIHN1bjQqOlN1bk9TOjUuKjoqIHwgdGFkcG9sZSo6U3VuT1M6NS4qOiopCiAJZWNobyBzcGFyYy1zdW4tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKIAlleGl0IDs7CisgICAgaTg2cGM6QXVyb3JhVVg6NS4qOiogfCBpODZ4ZW46QXVyb3JhVVg6NS4qOiopCisJZWNobyBpMzg2LXBjLWF1cm9yYXV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKICAgICBpODZwYzpTdW5PUzo1Lio6KiB8IGk4NnhlbjpTdW5PUzo1Lio6KikKIAlldmFsICRzZXRfY2NfZm9yX2J1aWxkCiAJU1VOX0FSQ0g9ImkzODYiCkBAIC0zOTEsMjMgKzM5OCwyMyBAQAogICAgICMgTWlOVC4gIEJ1dCBNaU5UIGlzIGRvd253YXJkIGNvbXBhdGlibGUgdG8gVE9TLCBzbyB0aGlzIHNob3VsZAogICAgICMgYmUgbm8gcHJvYmxlbS4KICAgICBhdGFyaXN0W2VdOipNaU5UOio6KiB8IGF0YXJpc3RbZV06Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKLSAgICAgICAgZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwogICAgIGF0YXJpKjoqTWlOVDoqOiogfCBhdGFyaSo6Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKIAllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICAqZmFsY29uKjoqTWlOVDoqOiogfCAqZmFsY29uKjoqbWludDoqOiogfCAqZmFsY29uKjoqVE9TOio6KikKLSAgICAgICAgZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwogICAgIG1pbGFuKjoqTWlOVDoqOiogfCBtaWxhbio6Km1pbnQ6KjoqIHwgKm1pbGFuKjoqVE9TOio6KikKLSAgICAgICAgZWNobyBtNjhrLW1pbGFuLW1pbnQke1VOQU1FX1JFTEVBU0V9Ci0gICAgICAgIGV4aXQgOzsKKwllY2hvIG02OGstbWlsYW4tbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgaGFkZXMqOipNaU5UOio6KiB8IGhhZGVzKjoqbWludDoqOiogfCAqaGFkZXMqOipUT1M6KjoqKQotICAgICAgICBlY2hvIG02OGstaGFkZXMtbWludCR7VU5BTUVfUkVMRUFTRX0KLSAgICAgICAgZXhpdCA7OworCWVjaG8gbTY4ay1oYWRlcy1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKICAgICAqOipNaU5UOio6KiB8ICo6Km1pbnQ6KjoqIHwgKjoqVE9TOio6KikKLSAgICAgICAgZWNobyBtNjhrLXVua25vd24tbWludCR7VU5BTUVfUkVMRUFTRX0KLSAgICAgICAgZXhpdCA7OworCWVjaG8gbTY4ay11bmtub3duLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OwogICAgIG02OGs6bWFjaHRlbjoqOiopCiAJZWNobyBtNjhrLWFwcGxlLW1hY2h0ZW4ke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwpAQCAtNDc3LDggKzQ4NCw4IEBACiAJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCiAJZXhpdCA7OwogICAgIEFWaWlPTjpkZ3V4Oio6KikKLSAgICAgICAgIyBERy9VWCByZXR1cm5zIEFWaWlPTiBmb3IgYWxsIGFyY2hpdGVjdHVyZXMKLSAgICAgICAgVU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKKwkjIERHL1VYIHJldHVybnMgQVZpaU9OIGZvciBhbGwgYXJjaGl0ZWN0dXJlcworCVVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCiAJaWYgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODEwMCBdIHx8IFsgJFVOQU1FX1BST0NFU1NPUiA9IG1jODgxMTAgXQogCXRoZW4KIAkgICAgaWYgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSBtODhrZGd1eGVsZnggXSB8fCBcCkBAIC00OTEsNyArNDk4LDcgQEAKIAllbHNlCiAJICAgIGVjaG8gaTU4Ni1kZy1kZ3V4JHtVTkFNRV9SRUxFQVNFfQogCWZpCi0gCWV4aXQgOzsKKwlleGl0IDs7CiAgICAgTTg4KjpEb2xwaGluT1M6KjoqKQkjIERvbHBoaW5PUyAoU1ZSMykKIAllY2hvIG04OGstZG9scGhpbi1zeXN2MwogCWV4aXQgOzsKQEAgLTU0OCw3ICs1NTUsNyBAQAogCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yCiAJZmkKIAlleGl0IDs7Ci0gICAgKjpBSVg6KjpbNDU2XSkKKyAgICAqOkFJWDoqOls0NTY3XSkKIAlJQk1fQ1BVX0lEPWAvdXNyL3NiaW4vbHNkZXYgLUMgLWMgcHJvY2Vzc29yIC1TIGF2YWlsYWJsZSB8IHNlZCAxcSB8IGF3ayAneyBwcmludCAkMSB9J2AKIAlpZiAvdXNyL3NiaW4vbHNhdHRyIC1FbCAke0lCTV9DUFVfSUR9IHwgZ3JlcCAnIFBPV0VSJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KIAkJSUJNX0FSQ0g9cnM2MDAwCkBAIC01OTEsNTIgKzU5OCw1MiBAQAogCSAgICA5MDAwL1s2NzhdWzAtOV1bMC05XSkKIAkJaWYgWyAteCAvdXNyL2Jpbi9nZXRjb25mIF07IHRoZW4KIAkJICAgIHNjX2NwdV92ZXJzaW9uPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0NQVV9WRVJTSU9OIDI+L2Rldi9udWxsYAotICAgICAgICAgICAgICAgICAgICBzY19rZXJuZWxfYml0cz1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19LRVJORUxfQklUUyAyPi9kZXYvbnVsbGAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAiJHtzY19jcHVfdmVyc2lvbn0iIGluCi0gICAgICAgICAgICAgICAgICAgICAgNTIzKSBIUF9BUkNIPSJocHBhMS4wIiA7OyAjIENQVV9QQV9SSVNDMV8wCi0gICAgICAgICAgICAgICAgICAgICAgNTI4KSBIUF9BUkNIPSJocHBhMS4xIiA7OyAjIENQVV9QQV9SSVNDMV8xCi0gICAgICAgICAgICAgICAgICAgICAgNTMyKSAgICAgICAgICAgICAgICAgICAgICAjIENQVV9QQV9SSVNDMl8wCi0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIke3NjX2tlcm5lbF9iaXRzfSIgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgMzIpIEhQX0FSQ0g9ImhwcGEyLjBuIiA7OwotICAgICAgICAgICAgICAgICAgICAgICAgICA2NCkgSFBfQVJDSD0iaHBwYTIuMHciIDs7CisJCSAgICBzY19rZXJuZWxfYml0cz1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19LRVJORUxfQklUUyAyPi9kZXYvbnVsbGAKKwkJICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBpbgorCQkgICAgICA1MjMpIEhQX0FSQ0g9ImhwcGExLjAiIDs7ICMgQ1BVX1BBX1JJU0MxXzAKKwkJICAgICAgNTI4KSBIUF9BUkNIPSJocHBhMS4xIiA7OyAjIENQVV9QQV9SSVNDMV8xCisJCSAgICAgIDUzMikgICAgICAgICAgICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAorCQkJY2FzZSAiJHtzY19rZXJuZWxfYml0c30iIGluCisJCQkgIDMyKSBIUF9BUkNIPSJocHBhMi4wbiIgOzsKKwkJCSAgNjQpIEhQX0FSQ0g9ImhwcGEyLjB3IiA7OwogCQkJICAnJykgSFBfQVJDSD0iaHBwYTIuMCIgOzsgICAjIEhQLVVYIDEwLjIwCi0gICAgICAgICAgICAgICAgICAgICAgICBlc2FjIDs7Ci0gICAgICAgICAgICAgICAgICAgIGVzYWMKKwkJCWVzYWMgOzsKKwkJICAgIGVzYWMKIAkJZmkKIAkJaWYgWyAiJHtIUF9BUkNIfSIgPSAiIiBdOyB0aGVuCiAJCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCi0JCSAgICBzZWQgJ3MvXiAgICAgICAgICAgICAgLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkJICAgIHNlZCAncy9eCQkvLycgPDwgRU9GID4kZHVtbXkuYwogCi0gICAgICAgICAgICAgICNkZWZpbmUgX0hQVVhfU09VUkNFCi0gICAgICAgICAgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAgICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPgorCQkjZGVmaW5lIF9IUFVYX1NPVVJDRQorCQkjaW5jbHVkZSA8c3RkbGliLmg+CisJCSNpbmNsdWRlIDx1bmlzdGQuaD4KIAotICAgICAgICAgICAgICBpbnQgbWFpbiAoKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKLSAgICAgICAgICAgICAgICAgIGxvbmcgYml0cyA9IHN5c2NvbmYoX1NDX0tFUk5FTF9CSVRTKTsKLSAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgICBsb25nIGNwdSAgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOworCQlpbnQgbWFpbiAoKQorCQl7CisJCSNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKwkJICAgIGxvbmcgYml0cyA9IHN5c2NvbmYoX1NDX0tFUk5FTF9CSVRTKTsKKwkJI2VuZGlmCisJCSAgICBsb25nIGNwdSAgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOwogCi0gICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNwdSkKLSAgICAgICAgICAgICAgCXsKLSAgICAgICAgICAgICAgCWNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOwotICAgICAgICAgICAgICAJY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAljYXNlIENQVV9QQV9SSVNDMl8wOgotICAgICAgICAgICAgICAjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCi0gICAgICAgICAgICAgIAkgICAgc3dpdGNoIChiaXRzKQotICAgICAgICAgICAgICAJCXsKLSAgICAgICAgICAgICAgCQljYXNlIDY0OiBwdXRzICgiaHBwYTIuMHciKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAkJY2FzZSAzMjogcHV0cyAoImhwcGEyLjBuIik7IGJyZWFrOwotICAgICAgICAgICAgICAJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOwotICAgICAgICAgICAgICAJCX0gYnJlYWs7Ci0gICAgICAgICAgICAgICNlbHNlICAvKiAhZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpICovCi0gICAgICAgICAgICAgIAkgICAgcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAJZGVmYXVsdDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAl9Ci0gICAgICAgICAgICAgICAgICBleGl0ICgwKTsKLSAgICAgICAgICAgICAgfQorCQkgICAgc3dpdGNoIChjcHUpCisJCQl7CisJCQljYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xIik7IGJyZWFrOworCQkJY2FzZSBDUFVfUEFfUklTQzJfMDoKKwkJI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQorCQkJICAgIHN3aXRjaCAoYml0cykKKwkJCQl7CisJCQkJY2FzZSA2NDogcHV0cyAoImhwcGEyLjB3Iik7IGJyZWFrOworCQkJCWNhc2UgMzI6IHB1dHMgKCJocHBhMi4wbiIpOyBicmVhazsKKwkJCQlkZWZhdWx0OiBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKKwkJCQl9IGJyZWFrOworCQkjZWxzZSAgLyogIWRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKSAqLworCQkJICAgIHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworCQkjZW5kaWYKKwkJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworCQkJfQorCQkgICAgZXhpdCAoMCk7CisJCX0KIEVPRgogCQkgICAgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwpICYmIEhQX0FSQ0g9YCRkdW1teWAKIAkJICAgIHRlc3QgLXogIiRIUF9BUkNIIiAmJiBIUF9BUkNIPWhwcGEKQEAgLTcyNywyMiArNzM0LDIyIEBACiAJZXhpdCA7OwogICAgIEMxKjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzEqOiopCiAJZWNobyBjMS1jb252ZXgtYnNkCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQzIqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMio6KikKIAlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKIAl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKIAllbHNlIGVjaG8gYzItY29udmV4LWJzZAogCWZpCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQzM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM0KjoqKQogCWVjaG8gYzM0LWNvbnZleC1ic2QKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBDMzgqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzgqOiopCiAJZWNobyBjMzgtY29udmV4LWJzZAotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzQqOiopCiAJZWNobyBjNC1jb252ZXgtYnNkCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQ1JBWSpZLU1QOio6KjoqKQogCWVjaG8geW1wLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCiAJZXhpdCA7OwpAQCAtNzY2LDE0ICs3NzMsMTQgQEAKIAlleGl0IDs7CiAgICAgRjMwWzAxXTpVTklYX1N5c3RlbV9WOio6KiB8IEY3MDA6VU5JWF9TeXN0ZW1fVjoqOiopCiAJRlVKSVRTVV9QUk9DPWB1bmFtZSAtbSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKLSAgICAgICAgRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAotICAgICAgICBGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAotICAgICAgICBlY2hvICIke0ZVSklUU1VfUFJPQ30tZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgotICAgICAgICBleGl0IDs7CisJRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorCUZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvIC9fLydgCisJZWNobyAiJHtGVUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKwlleGl0IDs7CiAgICAgNTAwMDpVTklYX1N5c3RlbV9WOjQuKjoqKQotICAgICAgICBGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCi0gICAgICAgIEZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvIC9fLydgCi0gICAgICAgIGVjaG8gInNwYXJjLWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKwlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisJRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy8gL18vJ2AKKwllY2hvICJzcGFyYy1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCiAJZXhpdCA7OwogICAgIGkqODY6QlNELzM4NjoqOiogfCBpKjg2OkJTRC9PUzoqOiogfCAqOkFzY2VuZFwgRW1iZWRkZWQvT1M6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1ic2RpJHtVTkFNRV9SRUxFQVNFfQpAQCAtODAxLDE0ICs4MDgsMTQgQEAKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbWluZ3czMgogCWV4aXQgOzsKICAgICBpKjp3aW5kb3dzMzIqOiopCi0gICAgCSMgdW5hbWUgLW0gaW5jbHVkZXMgIi1wYyIgb24gdGhpcyBzeXN0ZW0uCi0gICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCisJIyB1bmFtZSAtbSBpbmNsdWRlcyAiLXBjIiBvbiB0aGlzIHN5c3RlbS4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tbWluZ3czMgogCWV4aXQgOzsKICAgICBpKjpQVyo6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtcHczMgogCWV4aXQgOzsKICAgICAqOkludGVyaXgqOiopCi0gICAgCWNhc2UgJHtVTkFNRV9NQUNISU5FfSBpbgorCWNhc2UgJHtVTkFNRV9NQUNISU5FfSBpbgogCSAgICB4ODYpCiAJCWVjaG8gaTU4Ni1wYy1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQogCQlleGl0IDs7CkBAIC04NjMsNyArODcwLDcgQEAKIAkgIEVWNikgICBVTkFNRV9NQUNISU5FPWFscGhhZXY2IDs7CiAJICBFVjY3KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NjcgOzsKIAkgIEVWNjgqKSBVTkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OwotICAgICAgICBlc2FjCisJZXNhYwogCW9iamR1bXAgLS1wcml2YXRlLWhlYWRlcnMgL2Jpbi9zaCB8IGdyZXAgLXEgbGQuc28uMQogCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7IGVsc2UgTElCQz0iIiA7IGZpCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQpAQCAtODc1LDcgKzg4MiwxMyBAQAogCXRoZW4KIAkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZWxzZQotCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJpCisJICAgIGlmIGVjaG8gX19BUk1fUENTX1ZGUCB8ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCisJCXwgZ3JlcCAtcSBfX0FSTV9QQ1NfVkZQCisJICAgIHRoZW4KKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251ZWFiaQorCSAgICBlbHNlCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmloZgorCSAgICBmaQogCWZpCiAJZXhpdCA7OwogICAgIGF2cjMyKjpMaW51eDoqOiopCkBAIC04ODgsNyArOTAxLDcgQEAKIAllY2hvIGNyaXN2MzItYXhpcy1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgZnJ2OkxpbnV4Oio6KikKLSAgICAJZWNobyBmcnYtdW5rbm93bi1saW51eC1nbnUKKwllY2hvIGZydi11bmtub3duLWxpbnV4LWdudQogCWV4aXQgOzsKICAgICBpKjg2OkxpbnV4Oio6KikKIAlMSUJDPWdudQpAQCAtOTU2LDcgKzk2OSw3IEBACiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eAogCWV4aXQgOzsKICAgICBzaDY0KjpMaW51eDoqOiopCi0gICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQogCWV4aXQgOzsKICAgICBzaCo6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQpAQCAtOTY0LDYgKzk3Nyw5IEBACiAgICAgc3BhcmM6TGludXg6KjoqIHwgc3BhcmM2NDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OworICAgIHRpbGUqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CiAgICAgdmF4OkxpbnV4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLWxpbnV4LWdudQogCWV4aXQgOzsKQEAgLTk3MSw3ICs5ODcsNyBAQAogCWVjaG8geDg2XzY0LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwogICAgIHh0ZW5zYSo6TGludXg6KjoqKQotICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgaSo4NjpEWU5JWC9wdHg6NCo6KikKIAkjIHB0eCA0LjAgZG9lcyB1bmFtZSAtcyBjb3JyZWN0bHksIHdpdGggRFlOSVgvcHR4IGluIHRoZXJlLgpAQCAtOTgwLDExICs5OTYsMTEgQEAKIAllY2hvIGkzODYtc2VxdWVudC1zeXN2NAogCWV4aXQgOzsKICAgICBpKjg2OlVOSVhfU1Y6NC4yTVA6Mi4qKQotICAgICAgICAjIFVuaXh3YXJlIGlzIGFuIG9mZnNob290IG9mIFNWUjQsIGJ1dCBpdCBoYXMgaXRzIG93biB2ZXJzaW9uCi0gICAgICAgICMgbnVtYmVyIHNlcmllcyBzdGFydGluZyB3aXRoIDIuLi4KLSAgICAgICAgIyBJIGFtIG5vdCBwb3NpdGl2ZSB0aGF0IG90aGVyIFNWUjQgc3lzdGVtcyB3b24ndCBtYXRjaCB0aGlzLAorCSMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZSNCwgYnV0IGl0IGhhcyBpdHMgb3duIHZlcnNpb24KKwkjIG51bWJlciBzZXJpZXMgc3RhcnRpbmcgd2l0aCAyLi4uCisJIyBJIGFtIG5vdCBwb3NpdGl2ZSB0aGF0IG90aGVyIFNWUjQgc3lzdGVtcyB3b24ndCBtYXRjaCB0aGlzLAogCSMgSSBqdXN0IGhhdmUgdG8gaG9wZS4gIC0tIHJtcy4KLSAgICAgICAgIyBVc2Ugc3lzdjQuMnV3Li4uIHNvIHRoYXQgc3lzdjQqIG1hdGNoZXMgaXQuCisJIyBVc2Ugc3lzdjQuMnV3Li4uIHNvIHRoYXQgc3lzdjQqIG1hdGNoZXMgaXQuCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3Y0LjJ1dyR7VU5BTUVfVkVSU0lPTn0KIAlleGl0IDs7CiAgICAgaSo4NjpPUy8yOio6KikKQEAgLTEwMTYsNyArMTAzMiw3IEBACiAJZmkKIAlleGl0IDs7CiAgICAgaSo4NjoqOjU6WzY3OF0qKQotICAgIAkjIFVuaXhXYXJlIDcueCwgT3BlblVOSVggYW5kIE9wZW5TZXJ2ZXIgNi4KKwkjIFVuaXhXYXJlIDcueCwgT3BlblVOSVggYW5kIE9wZW5TZXJ2ZXIgNi4KIAljYXNlIGAvYmluL3VuYW1lIC1YIHwgZ3JlcCAiXk1hY2hpbmUiYCBpbgogCSAgICAqNDg2KikJICAgICBVTkFNRV9NQUNISU5FPWk0ODYgOzsKIAkgICAgKlBlbnRpdW0pCSAgICAgVU5BTUVfTUFDSElORT1pNTg2IDs7CkBAIC0xMDQ0LDEzICsxMDYwLDEzIEBACiAJZXhpdCA7OwogICAgIHBjOio6KjoqKQogCSMgTGVmdCBoZXJlIGZvciBjb21wYXRpYmlsaXR5OgotICAgICAgICAjIHVuYW1lIC1tIHByaW50cyBmb3IgREpHUFAgYWx3YXlzICdwYycsIGJ1dCBpdCBwcmludHMgbm90aGluZyBhYm91dAotICAgICAgICAjIHRoZSBwcm9jZXNzb3IsIHNvIHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpNTg2LgorCSMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0CisJIyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTU4Ni4KIAkjIE5vdGU6IHdoYXRldmVyIHRoaXMgaXMsIGl0IE1VU1QgYmUgdGhlIHNhbWUgYXMgd2hhdCBjb25maWcuc3ViCiAJIyBwcmludHMgZm9yIHRoZSAiZGpncHAiIGhvc3QsIG9yIGVsc2UgR0RCIGNvbmZpZ3VyeSB3aWxsIGRlY2lkZSB0aGF0CiAJIyB0aGlzIGlzIGEgY3Jvc3MtYnVpbGQuCiAJZWNobyBpNTg2LXBjLW1zZG9zZGpncHAKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBJbnRlbDpNYWNoOjMqOiopCiAJZWNobyBpMzg2LXBjLW1hY2gzCiAJZXhpdCA7OwpAQCAtMTA4NSw4ICsxMTAxLDggQEAKIAkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgL2Jpbi9ncmVwIGVudGl1bSA+L2Rldi9udWxsIFwKIAkgICYmIHsgZWNobyBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9IDs7CiAgICAgM1szNF0/PzoqOjQuMDoqIHwgM1szNF0/PywqOio6NC4wOiopCi0gICAgICAgIC9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAotICAgICAgICAgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NDsgZXhpdDsgfSA7OworCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0OyBleGl0OyB9IDs7CiAgICAgTkNSKjoqOjQuMjoqIHwgTVBSQVMqOio6NC4yOiopCiAJT1NfUkVMPScuMycKIAl0ZXN0IC1yIC9ldGMvLnJlbGlkIFwKQEAgLTExMjksMTAgKzExNDUsMTAgQEAKIAkJZWNobyBuczMyay1zbmktc3lzdgogCWZpCiAJZXhpdCA7OwotICAgIFBFTlRJVU06Kjo0LjAqOiopICMgVW5pc3lzIGBDbGVhclBhdGggSE1QIElYIDQwMDAnIFNWUjQvTVAgZWZmb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgIyBzYXlzIDxSaWNoYXJkLk0uQmFydGVsQGNjTWFpbC5DZW5zdXMuR09WPgotICAgICAgICBlY2hvIGk1ODYtdW5pc3lzLXN5c3Y0Ci0gICAgICAgIGV4aXQgOzsKKyAgICBQRU5USVVNOio6NC4wKjoqKQkjIFVuaXN5cyBgQ2xlYXJQYXRoIEhNUCBJWCA0MDAwJyBTVlI0L01QIGVmZm9ydAorCQkJIyBzYXlzIDxSaWNoYXJkLk0uQmFydGVsQGNjTWFpbC5DZW5zdXMuR09WPgorCWVjaG8gaTU4Ni11bmlzeXMtc3lzdjQKKwlleGl0IDs7CiAgICAgKjpVTklYX1N5c3RlbV9WOjQqOkZUWCopCiAJIyBGcm9tIEdlcmFsZCBIZXdlcyA8aGV3ZXNAb3Blbm1hcmtldC5jb20+LgogCSMgSG93IGFib3V0IGRpZmZlcmVudGlhdGluZyBiZXR3ZWVuIHN0cmF0dXMgYXJjaGl0ZWN0dXJlcz8gLWRqbQpAQCAtMTE1OCwxMSArMTE3NCwxMSBAQAogCWV4aXQgOzsKICAgICBSWzM0XTAwMDoqU3lzdGVtX1YqOio6KiB8IFI0MDAwOlVOSVhfU1lTVjoqOiogfCBSKjAwMDpVTklYX1NWOio6KikKIAlpZiBbIC1kIC91c3IvbmVjIF07IHRoZW4KLQkgICAgICAgIGVjaG8gbWlwcy1uZWMtc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwkJZWNobyBtaXBzLW5lYy1zeXN2JHtVTkFNRV9SRUxFQVNFfQogCWVsc2UKLQkgICAgICAgIGVjaG8gbWlwcy11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJCWVjaG8gbWlwcy11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9CiAJZmkKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBCZUJveDpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gaGFyZHdhcmUgbWFkZSBieSBCZSwgUFBDIG9ubHkuCiAJZWNobyBwb3dlcnBjLWJlLWJlb3MKIAlleGl0IDs7CkBAIC0xMjI3LDYgKzEyNDMsOSBAQAogICAgICo6UU5YOio6NCopCiAJZWNobyBpMzg2LXBjLXFueAogCWV4aXQgOzsKKyAgICBORU8tPzpOT05TVE9QX0tFUk5FTDoqOiopCisJZWNobyBuZW8tdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgTlNFLT86Tk9OU1RPUF9LRVJORUw6KjoqKQogCWVjaG8gbnNlLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwpAQCAtMTI3MiwxMyArMTI5MSwxMyBAQAogCWVjaG8gcGRwMTAtdW5rbm93bi1pdHMKIAlleGl0IDs7CiAgICAgU0VJOio6KjpTRUlVWCkKLSAgICAgICAgZWNobyBtaXBzLXNlaS1zZWl1eCR7VU5BTUVfUkVMRUFTRX0KKwllY2hvIG1pcHMtc2VpLXNlaXV4JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKICAgICAqOkRyYWdvbkZseToqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZHJhZ29uZmx5YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYAogCWV4aXQgOzsKICAgICAqOipWTVM6KjoqKQotICAgIAlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAorCVVOQU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCiAJY2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KIAkgICAgQSopIGVjaG8gYWxwaGEtZGVjLXZtcyA7IGV4aXQgOzsKIAkgICAgSSopIGVjaG8gaWE2NC1kZWMtdm1zIDsgZXhpdCA7OwpAQCAtMTMxOCwxMSArMTMzNywxMSBAQAogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogICBwcmludGYgKCJtNjhrLXNvbnktbmV3c29zJXNcbiIsCiAjaWZkZWYgTkVXU09TNAotICAgICAgICAgICI0IgorCSI0IgogI2Vsc2UKLQkgICIiCisJIiIKICNlbmRpZgotICAgICAgICAgKTsgZXhpdCAoMCk7CisJKTsgZXhpdCAoMCk7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5zdWIgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5zdWIKaW5kZXggMTdjOTE0NS4uNzgxNzZhNCAxMDA3NTUKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuc3ViCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLnN1YgpAQCAtMSwxMCArMSwxMCBAQAogIyEgL2Jpbi9zaAogIyBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3JpcHQuCiAjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAotIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkKLSMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLAorIyAgIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAwOS0xMS0wNycKK3RpbWVzdGFtcD0nMjAxMS0xMC0yOScKIAogIyBUaGlzIGZpbGUgaXMgKGluIHByaW5jaXBsZSkgY29tbW9uIHRvIEFMTCBHTlUgc29mdHdhcmUuCiAjIFRoZSBwcmVzZW5jZSBvZiBhIG1hY2hpbmUgaW4gdGhpcyBmaWxlIHN1Z2dlc3RzIHRoYXQgU09NRSBHTlUgc29mdHdhcmUKQEAgLTc1LDggKzc1LDkgQEAKIHZlcnNpb249IlwKIEdOVSBjb25maWcuc3ViICgkdGltZXN0YW1wKQogCi1Db3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsCi0yMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLAorMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCiB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCkBAIC0xMjMsOCArMTI0LDkgQEAKICMgSGVyZSB3ZSBtdXN0IHJlY29nbml6ZSBhbGwgdGhlIHZhbGlkIEtFUk5FTC1PUyBjb21iaW5hdGlvbnMuCiBtYXliZV9vcz1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDIvJ2AKIGNhc2UgJG1heWJlX29zIGluCi0gIG50by1xbngqIHwgbGludXgtZ251KiB8IGxpbnV4LWRpZXRsaWJjIHwgbGludXgtbmV3bGliKiB8IGxpbnV4LXVjbGliYyogfCBcCi0gIHVjbGludXgtdWNsaWJjKiB8IHVjbGludXgtZ251KiB8IGtmcmVlYnNkKi1nbnUqIHwga25ldGJzZCotZ251KiB8IG5ldGJzZCotZ251KiB8IFwKKyAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtYW5kcm9pZCogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xpYiogfCBcCisgIGxpbnV4LXVjbGliYyogfCB1Y2xpbnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IFwKKyAga25ldGJzZCotZ251KiB8IG5ldGJzZCotZ251KiB8IFwKICAga29wZW5zb2xhcmlzKi1nbnUqIHwgXAogICBzdG9ybS1jaGFvcyogfCBvczItZW14KiB8IHJ0bWstbm92YSopCiAgICAgb3M9LSRtYXliZV9vcwpAQCAtMTU2LDggKzE1OCw4IEBACiAJCW9zPQogCQliYXNpY19tYWNoaW5lPSQxCiAJCTs7Ci0gICAgICAgIC1ibHVlZ2VuZSopCi0JICAgICAgICBvcz0tY25rCisJLWJsdWVnZW5lKikKKwkJb3M9LWNuawogCQk7OwogCS1zaW0gfCAtY2lzY28gfCAtb2tpIHwgLXdlYyB8IC13aW5ib25kKQogCQlvcz0KQEAgLTE3MywxMCArMTc1LDEwIEBACiAJCW9zPS1jaG9ydXNvcwogCQliYXNpY19tYWNoaW5lPSQxCiAJCTs7Ci0gCS1jaG9ydXNyZGIpCi0gCQlvcz0tY2hvcnVzcmRiCisJLWNob3J1c3JkYikKKwkJb3M9LWNob3J1c3JkYgogCQliYXNpY19tYWNoaW5lPSQxCi0gCQk7OworCQk7OwogCS1oaXV4KikKIAkJb3M9LWhpdXh3ZTIKIAkJOzsKQEAgLTI0OSwxMyArMjUxLDE3IEBACiAJfCBhbHBoYTY0IHwgYWxwaGE2NGV2WzQtOF0gfCBhbHBoYTY0ZXY1NiB8IGFscGhhNjRldjZbNzhdIHwgYWxwaGE2NHBjYTVbNjddIFwKIAl8IGFtMzNfMi4wIFwKIAl8IGFyYyB8IGFybSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBhcm12WzIzNDVdIHwgYXJtdlszNDVdW2xiXSB8IGF2ciB8IGF2cjMyIFwKKyAgICAgICAgfCBiZTMyIHwgYmU2NCBcCiAJfCBiZmluIFwKIAl8IGM0eCB8IGNsaXBwZXIgXAogCXwgZDEwdiB8IGQzMHYgfCBkbHggfCBkc3AxNnh4IFwKKwl8IGVwaXBoYW55IFwKIAl8IGZpZG8gfCBmcjMwIHwgZnJ2IFwKIAl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCisJfCBoZXhhZ29uIFwKIAl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlhNjQgXAogCXwgaXAyayB8IGlxMjAwMCBcCisJfCBsZTMyIHwgbGU2NCBcCiAJfCBsbTMyIFwKIAl8IG0zMmMgfCBtMzJyIHwgbTMycmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04OGsgXAogCXwgbWF4cSB8IG1iIHwgbWljcm9ibGF6ZSB8IG1jb3JlIHwgbWVwIHwgbWV0YWcgXApAQCAtMjgxLDI3ICsyODcsMzggQEAKIAl8IG1veGllIFwKIAl8IG10IFwKIAl8IG1zcDQzMCBcCisJfCBuZHMzMiB8IG5kczMybGUgfCBuZHMzMmJlIFwKIAl8IG5pb3MgfCBuaW9zMiBcCiAJfCBuczE2ayB8IG5zMzJrIFwKKwl8IG9wZW44IFwKIAl8IG9yMzIgXAogCXwgcGRwMTAgfCBwZHAxMSB8IHBqIHwgcGpsIFwKLQl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2VycGNsZSB8IHBwY2JlIFwKKwl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2VycGNsZSBcCiAJfCBweXJhbWlkIFwKLQl8IHJ4IFwKKwl8IHJsNzggfCByeCBcCiAJfCBzY29yZSBcCiAJfCBzaCB8IHNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzI0XWFlYiB8IHNoWzIzXWUgfCBzaFszNF1lYiB8IHNoZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAogCXwgc2g2NCB8IHNoNjRsZSBcCiAJfCBzcGFyYyB8IHNwYXJjNjQgfCBzcGFyYzY0YiB8IHNwYXJjNjR2IHwgc3BhcmM4NnggfCBzcGFyY2xldCB8IHNwYXJjbGl0ZSBcCiAJfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNwYXJjdjliIHwgc3BhcmN2OXYgXAotCXwgc3B1IHwgc3Ryb25nYXJtIFwKLQl8IHRhaG9lIHwgdGh1bWIgfCB0aWM0eCB8IHRpYzgwIHwgdHJvbiBcCisJfCBzcHUgXAorCXwgdGFob2UgfCB0aWM0eCB8IHRpYzU0eCB8IHRpYzU1eCB8IHRpYzZ4IHwgdGljODAgfCB0cm9uIFwKIAl8IHViaWNvbTMyIFwKLQl8IHY4NTAgfCB2ODUwZSBcCisJfCB2ODUwIHwgdjg1MGUgfCB2ODUwZTEgfCB2ODUwZTIgfCB2ODUwZXMgfCB2ODUwZTJ2MyBcCiAJfCB3ZTMyayBcCi0JfCB4ODYgfCB4YzE2eCB8IHhzY2FsZSB8IHhzY2FsZWVbYmxdIHwgeHN0b3JteTE2IHwgeHRlbnNhIFwKKwl8IHg4NiB8IHhjMTZ4IHwgeHN0b3JteTE2IHwgeHRlbnNhIFwKIAl8IHo4ayB8IHo4MCkKIAkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCiAJCTs7CisJYzU0eCkKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtdW5rbm93bgorCQk7OworCWM1NXgpCisJCWJhc2ljX21hY2hpbmU9dGljNTV4LXVua25vd24KKwkJOzsKKwljNngpCisJCWJhc2ljX21hY2hpbmU9dGljNngtdW5rbm93bgorCQk7OwogCW02ODExIHwgbTY4aGMxMSB8IG02ODEyIHwgbTY4aGMxMiB8IHBpY29jaGlwKQogCQkjIE1vdG9yb2xhIDY4SEMxMS8xMi4KIAkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCkBAIC0zMTMsNiArMzMwLDE4IEBACiAJCWJhc2ljX21hY2hpbmU9bXQtdW5rbm93bgogCQk7OwogCisJc3Ryb25nYXJtIHwgdGh1bWIgfCB4c2NhbGUpCisJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KKwkJOzsKKworCXhzY2FsZWViKQorCQliYXNpY19tYWNoaW5lPWFybWViLXVua25vd24KKwkJOzsKKworCXhzY2FsZWVsKQorCQliYXNpY19tYWNoaW5lPWFybWVsLXVua25vd24KKwkJOzsKKwogCSMgV2UgdXNlIGBwYycgcmF0aGVyIHRoYW4gYHVua25vd24nCiAJIyBiZWNhdXNlICgxKSB0aGF0J3Mgd2hhdCB0aGV5IG5vcm1hbGx5IGFyZSwgYW5kCiAJIyAoMikgdGhlIHdvcmQgInVua25vd24iIHRlbmRzIHRvIGNvbmZ1c2UgYmVnaW5uaW5nIHVzZXJzLgpAQCAtMzMyLDE2ICszNjEsMTkgQEAKIAl8IGFscGhhcGNhNVs2N10tKiB8IGFscGhhNjRwY2E1WzY3XS0qIHwgYXJjLSogXAogCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxlLSogfCBhcm1lYi0qIHwgYXJtdiotKiBcCiAJfCBhdnItKiB8IGF2cjMyLSogXAorCXwgYmUzMi0qIHwgYmU2NC0qIFwKIAl8IGJmaW4tKiB8IGJzMjAwMC0qIFwKLQl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIHwgYzU0eC0qIHwgYzU1eC0qIHwgYzZ4LSogXAorCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogXAogCXwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwKIAl8IGQxMHYtKiB8IGQzMHYtKiB8IGRseC0qIFwKIAl8IGVseHNpLSogXAogCXwgZjMwWzAxXS0qIHwgZjcwMC0qIHwgZmlkby0qIHwgZnIzMC0qIHwgZnJ2LSogfCBmeDgwLSogXAogCXwgaDgzMDAtKiB8IGg4NTAwLSogXAogCXwgaHBwYS0qIHwgaHBwYTEuWzAxXS0qIHwgaHBwYTIuMC0qIHwgaHBwYTIuMFtud10tKiB8IGhwcGE2NC0qIFwKKwl8IGhleGFnb24tKiBcCiAJfCBpKjg2LSogfCBpODYwLSogfCBpOTYwLSogfCBpYTY0LSogXAogCXwgaXAyay0qIHwgaXEyMDAwLSogXAorCXwgbGUzMi0qIHwgbGU2NC0qIFwKIAl8IGxtMzItKiBcCiAJfCBtMzJjLSogfCBtMzJyLSogfCBtMzJybGUtKiBcCiAJfCBtNjgwMDAtKiB8IG02ODBbMDEyMzQ2XTAtKiB8IG02ODM2MC0qIHwgbTY4Mz8yLSogfCBtNjhrLSogXApAQCAtMzY3LDI1ICszOTksMjkgQEAKIAl8IG1taXgtKiBcCiAJfCBtdC0qIFwKIAl8IG1zcDQzMC0qIFwKKwl8IG5kczMyLSogfCBuZHMzMmxlLSogfCBuZHMzMmJlLSogXAogCXwgbmlvcy0qIHwgbmlvczItKiBcCiAJfCBub25lLSogfCBucDEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKKwl8IG9wZW44LSogXAogCXwgb3Jpb24tKiBcCiAJfCBwZHAxMC0qIHwgcGRwMTEtKiB8IHBqLSogfCBwamwtKiB8IHBuLSogfCBwb3dlci0qIFwKLQl8IHBvd2VycGMtKiB8IHBvd2VycGM2NC0qIHwgcG93ZXJwYzY0bGUtKiB8IHBvd2VycGNsZS0qIHwgcHBjYmUtKiBcCisJfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiBcCiAJfCBweXJhbWlkLSogXAotCXwgcm9tcC0qIHwgcnM2MDAwLSogfCByeC0qIFwKKwl8IHJsNzgtKiB8IHJvbXAtKiB8IHJzNjAwMC0qIHwgcngtKiBcCiAJfCBzaC0qIHwgc2hbMTIzNF0tKiB8IHNoWzI0XWEtKiB8IHNoWzI0XWFlYi0qIHwgc2hbMjNdZS0qIHwgc2hbMzRdZWItKiB8IHNoZWItKiB8IHNoYmUtKiBcCiAJfCBzaGxlLSogfCBzaFsxMjM0XWxlLSogfCBzaDNlbGUtKiB8IHNoNjQtKiB8IHNoNjRsZS0qIFwKIAl8IHNwYXJjLSogfCBzcGFyYzY0LSogfCBzcGFyYzY0Yi0qIHwgc3BhcmM2NHYtKiB8IHNwYXJjODZ4LSogfCBzcGFyY2xldC0qIFwKIAl8IHNwYXJjbGl0ZS0qIFwKLQl8IHNwYXJjdjgtKiB8IHNwYXJjdjktKiB8IHNwYXJjdjliLSogfCBzcGFyY3Y5di0qIHwgc3Ryb25nYXJtLSogfCBzdjEtKiB8IHN4Py0qIFwKLQl8IHRhaG9lLSogfCB0aHVtYi0qIFwKLQl8IHRpYzMwLSogfCB0aWM0eC0qIHwgdGljNTR4LSogfCB0aWM1NXgtKiB8IHRpYzZ4LSogfCB0aWM4MC0qIHwgdGlsZS0qIFwKKwl8IHNwYXJjdjgtKiB8IHNwYXJjdjktKiB8IHNwYXJjdjliLSogfCBzcGFyY3Y5di0qIHwgc3YxLSogfCBzeD8tKiBcCisJfCB0YWhvZS0qIFwKKwl8IHRpYzMwLSogfCB0aWM0eC0qIHwgdGljNTR4LSogfCB0aWM1NXgtKiB8IHRpYzZ4LSogfCB0aWM4MC0qIFwKKwl8IHRpbGUqLSogXAogCXwgdHJvbi0qIFwKIAl8IHViaWNvbTMyLSogXAotCXwgdjg1MC0qIHwgdjg1MGUtKiB8IHZheC0qIFwKKwl8IHY4NTAtKiB8IHY4NTBlLSogfCB2ODUwZTEtKiB8IHY4NTBlcy0qIHwgdjg1MGUyLSogfCB2ODUwZTJ2My0qIFwKKwl8IHZheC0qIFwKIAl8IHdlMzJrLSogXAotCXwgeDg2LSogfCB4ODZfNjQtKiB8IHhjMTZ4LSogfCB4cHMxMDAtKiB8IHhzY2FsZS0qIHwgeHNjYWxlZVtibF0tKiBcCisJfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhwczEwMC0qIFwKIAl8IHhzdG9ybXkxNi0qIHwgeHRlbnNhKi0qIFwKIAl8IHltcC0qIFwKIAl8IHo4ay0qIHwgejgwLSopCkBAIC00MTAsNyArNDQ2LDcgQEAKIAkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAogCQlvcz0tdWRpCiAJCTs7Ci0gICAgCWFiYWN1cykKKwlhYmFjdXMpCiAJCWJhc2ljX21hY2hpbmU9YWJhY3VzLXVua25vd24KIAkJOzsKIAlhZG9iZTY4aykKQEAgLTQ4MCwxMSArNTE2LDIwIEBACiAJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KIAkJb3M9LWNuawogCQk7OworCWM1NHgtKikKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljNTV4LSopCisJCWJhc2ljX21hY2hpbmU9dGljNTV4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYzZ4LSopCisJCWJhc2ljX21hY2hpbmU9dGljNngtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKIAljOTApCiAJCWJhc2ljX21hY2hpbmU9YzkwLWNyYXkKIAkJb3M9LXVuaWNvcwogCQk7OwotICAgICAgICBjZWdjYykKKwljZWdjYykKIAkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgogCQlvcz0tY2VnY2MKIAkJOzsKQEAgLTUxNiw3ICs1NjEsNyBAQAogCQliYXNpY19tYWNoaW5lPWNyYXludi1jcmF5CiAJCW9zPS11bmljb3NtcAogCQk7OwotCWNyMTYpCisJY3IxNiB8IGNyMTYtKikKIAkJYmFzaWNfbWFjaGluZT1jcjE2LXVua25vd24KIAkJb3M9LWVsZgogCQk7OwpAQCAtNzMyLDcgKzc3Nyw3IEBACiAJCWJhc2ljX21hY2hpbmU9bnMzMmstdXRlawogCQlvcz0tc3lzdgogCQk7OwotICAgICAgICBtaWNyb2JsYXplKQorCW1pY3JvYmxhemUpCiAJCWJhc2ljX21hY2hpbmU9bWljcm9ibGF6ZS14aWxpbngKIAkJOzsKIAltaW5ndzMyKQpAQCAtNzc1LDYgKzgyMCwxMCBAQAogCQliYXNpY19tYWNoaW5lPWkzNzAtaWJtCiAJCW9zPS1tdnMKIAkJOzsKKwluYWNsKQorCQliYXNpY19tYWNoaW5lPWxlMzItdW5rbm93bgorCQlvcz0tbmFjbAorCQk7OwogCW5jcjMwMDApCiAJCWJhc2ljX21hY2hpbmU9aTQ4Ni1uY3IKIAkJb3M9LXN5c3Y0CkBAIC04MzksNiArODg4LDEyIEBACiAJbnAxKQogCQliYXNpY19tYWNoaW5lPW5wMS1nb3VsZAogCQk7OworCW5lby10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bmVvLXRhbmRlbQorCQk7OworCW5zZS10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bnNlLXRhbmRlbQorCQk7OwogCW5zci10YW5kZW0pCiAJCWJhc2ljX21hY2hpbmU9bnNyLXRhbmRlbQogCQk7OwpAQCAtOTIxLDkgKzk3NiwxMCBAQAogCQk7OwogCXBvd2VyKQliYXNpY19tYWNoaW5lPXBvd2VyLWlibQogCQk7OwotCXBwYykJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwlwcGMgfCBwcGNiZSkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KIAkJOzsKLQlwcGMtKikJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJcHBjLSogfCBwcGNiZS0qKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKIAkJOzsKIAlwcGNsZSB8IHBvd2VycGNsaXR0bGUgfCBwcGMtbGUgfCBwb3dlcnBjLWxpdHRsZSkKIAkJYmFzaWNfbWFjaGluZT1wb3dlcnBjbGUtdW5rbm93bgpAQCAtMTAxNyw2ICsxMDczLDkgQEAKIAkJYmFzaWNfbWFjaGluZT1pODYwLXN0cmF0dXMKIAkJb3M9LXN5c3Y0CiAJCTs7CisJc3Ryb25nYXJtLSogfCB0aHVtYi0qKQorCQliYXNpY19tYWNoaW5lPWFybS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OwogCXN1bjIpCiAJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgogCQk7OwpAQCAtMTA3MywyMCArMTEzMiw4IEBACiAJCWJhc2ljX21hY2hpbmU9dDkwLWNyYXkKIAkJb3M9LXVuaWNvcwogCQk7OwotCXRpYzU0eCB8IGM1NHgqKQotCQliYXNpY19tYWNoaW5lPXRpYzU0eC11bmtub3duCi0JCW9zPS1jb2ZmCi0JCTs7Ci0JdGljNTV4IHwgYzU1eCopCi0JCWJhc2ljX21hY2hpbmU9dGljNTV4LXVua25vd24KLQkJb3M9LWNvZmYKLQkJOzsKLQl0aWM2eCB8IGM2eCopCi0JCWJhc2ljX21hY2hpbmU9dGljNngtdW5rbm93bgotCQlvcz0tY29mZgotCQk7OwogCXRpbGUqKQotCQliYXNpY19tYWNoaW5lPXRpbGUtdW5rbm93bgorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KIAkJb3M9LWxpbnV4LWdudQogCQk7OwogCXR4MzkpCkBAIC0xMTU2LDYgKzEyMDMsOSBAQAogCXhwcyB8IHhwczEwMCkKIAkJYmFzaWNfbWFjaGluZT14cHMxMDAtaG9uZXl3ZWxsCiAJCTs7CisJeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL154c2NhbGUvYXJtLydgCisJCTs7CiAJeW1wKQogCQliYXNpY19tYWNoaW5lPXltcC1jcmF5CiAJCW9zPS11bmljb3MKQEAgLTEyNTMsOSArMTMwMywxMiBAQAogaWYgWyB4IiRvcyIgIT0geCIiIF0KIHRoZW4KIGNhc2UgJG9zIGluCi0gICAgICAgICMgRmlyc3QgbWF0Y2ggc29tZSBzeXN0ZW0gdHlwZSBhbGlhc2VzCi0gICAgICAgICMgdGhhdCBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCisJIyBGaXJzdCBtYXRjaCBzb21lIHN5c3RlbSB0eXBlIGFsaWFzZXMKKwkjIHRoYXQgbWlnaHQgZ2V0IGNvbmZ1c2VkIHdpdGggdmFsaWQgc3lzdGVtIHR5cGVzLgogCSMgLXNvbGFyaXMqIGlzIGEgYmFzaWMgc3lzdGVtIHR5cGUsIHdpdGggdGhpcyBvbmUgZXhjZXB0aW9uLgorCS1hdXJvcmF1eCkKKwkJb3M9LWF1cm9yYXV4CisJCTs7CiAJLXNvbGFyaXMxIHwgLXNvbGFyaXMxLiopCiAJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzb2xhcmlzMXxzdW5vczR8J2AKIAkJOzsKQEAgLTEyNzcsOCArMTMzMCw4IEBACiAJIyAtc3lzdiogaXMgbm90IGhlcmUgYmVjYXVzZSBpdCBjb21lcyBsYXRlciwgYWZ0ZXIgc3lzdnI0LgogCS1nbnUqIHwgLWJzZCogfCAtbWFjaCogfCAtbWluaXgqIHwgLWdlbml4KiB8IC11bHRyaXgqIHwgLWlyaXgqIFwKIAkgICAgICB8IC0qdm1zKiB8IC1zY28qIHwgLWVzaXgqIHwgLWlzYyogfCAtYWl4KiB8IC1jbmsqIHwgLXN1bm9zIHwgLXN1bm9zWzM0XSpcCi0JICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1zb2xhcmlzKiB8IC1zeW0qIFwKLQkgICAgICB8IC1rb3BlbnNvbGFyaXMqIFwKKwkgICAgICB8IC1ocHV4KiB8IC11bm9zKiB8IC1vc2YqIHwgLWx1bmEqIHwgLWRndXgqIHwgLWF1cm9yYXV4KiB8IC1zb2xhcmlzKiBcCisJICAgICAgfCAtc3ltKiB8IC1rb3BlbnNvbGFyaXMqIFwKIAkgICAgICB8IC1hbWlnYW9zKiB8IC1hbWlnYWRvcyogfCAtbXNkb3MqIHwgLW5ld3NvcyogfCAtdW5pY29zKiB8IC1hb2YqIFwKIAkgICAgICB8IC1hb3MqIHwgLWFyb3MqIFwKIAkgICAgICB8IC1uaW5keSogfCAtdnhzaW0qIHwgLXZ4d29ya3MqIHwgLWVibW9uKiB8IC1obXMqIHwgLW12cyogXApAQCAtMTI5MSw3ICsxMzQ0LDggQEAKIAkgICAgICB8IC11ZGkqIHwgLWVhYmkqIHwgLWxpdGVzKiB8IC1pZWVlKiB8IC1nbzMyKiB8IC1hdXgqIFwKIAkgICAgICB8IC1jaG9ydXNvcyogfCAtY2hvcnVzcmRiKiB8IC1jZWdjYyogXAogCSAgICAgIHwgLWN5Z3dpbiogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKLQkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCisJICAgICAgfCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCisJICAgICAgfCAtbGludXgtbmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKIAkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiBcCiAJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKIAkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKQEAgLTEzMzgsNyArMTM5Miw3IEBACiAJLW9wZW5lZCopCiAJCW9zPS1vcGVuZWRpdGlvbgogCQk7OwotICAgICAgICAtb3M0MDAqKQorCS1vczQwMCopCiAJCW9zPS1vczQwMAogCQk7OwogCS13aW5jZSopCkBAIC0xMzg3LDcgKzE0NDEsNyBAQAogCS1zaW5peCopCiAJCW9zPS1zeXN2NAogCQk7OwotICAgICAgICAtdHBmKikKKwktdHBmKikKIAkJb3M9LXRwZgogCQk7OwogCS10cml0b24qKQpAQCAtMTQzMiw2ICsxNDg2LDggQEAKIAktZGljb3MqKQogCQlvcz0tZGljb3MKIAkJOzsKKwktbmFjbCopCisJCTs7CiAJLW5vbmUpCiAJCTs7CiAJKikKQEAgLTE0NTQsMTAgKzE1MTAsMTAgQEAKICMgc3lzdGVtLCBhbmQgd2UnbGwgbmV2ZXIgZ2V0IHRvIHRoaXMgcG9pbnQuCiAKIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KLSAgICAgICAgc2NvcmUtKikKKwlzY29yZS0qKQogCQlvcz0tZWxmCiAJCTs7Ci0gICAgICAgIHNwdS0qKQorCXNwdS0qKQogCQlvcz0tZWxmCiAJCTs7CiAJKi1hY29ybikKQEAgLTE0NjksOCArMTUyNSwxNyBAQAogCWFybSotc2VtaSkKIAkJb3M9LWFvdXQKIAkJOzsKLSAgICAgICAgYzR4LSogfCB0aWM0eC0qKQotICAgICAgICAJb3M9LWNvZmYKKwljNHgtKiB8IHRpYzR4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNTR4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNTV4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNngtKikKKwkJb3M9LWNvZmYKIAkJOzsKIAkjIFRoaXMgbXVzdCBjb21lIGJlZm9yZSB0aGUgKi1kZWMgZW50cnkuCiAJcGRwMTAtKikKQEAgLTE0OTcsNyArMTU2Miw3IEBACiAJbTY4Ki1jaXNjbykKIAkJb3M9LWFvdXQKIAkJOzsKLSAgICAgICAgbWVwLSopCisJbWVwLSopCiAJCW9zPS1lbGYKIAkJOzsKIAltaXBzKi1jaXNjbykKQEAgLTE1MjQsNyArMTU4OSw3IEBACiAJKi1pYm0pCiAJCW9zPS1haXgKIAkJOzsKLSAgICAJKi1rbnV0aCkKKwkqLWtudXRoKQogCQlvcz0tbW1peHdhcmUKIAkJOzsKIAkqLXdlYykKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWd1cmUKaW5kZXggYzVjNzBiMS4uYzg2YTU5NyAxMDA3NTUKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWd1cmUKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWd1cmUKQEAgLTEsMTMgKzEsMTMgQEAKICMhIC9iaW4vc2gKICMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KLSMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY1IGZvciBsaWJmZmkgMy4wLjEwcmMwLgorIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjggZm9yIGxpYmZmaSAzLjAuMTEuCiAjCi0jIFJlcG9ydCBidWdzIHRvIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sPi4KKyMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3Vlcz4uCiAjCiAjCiAjIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLSMgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0jIEluYy4KKyMgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KICMKICMKICMgVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KQEAgLTkxLDYgKzkxLDcgQEAKIElGUz0iICIiCSRhc19ubCIKIAogIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4KK2FzX215c2VsZj0KIGNhc2UgJDAgaW4gIygoCiAgICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsKICAgKikgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpAQCAtMTczLDYgKzE3NCwxNCBAQAogICBhc19saW5lbm9fMj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzJhPVwkTElORU5PCiAgIGV2YWwgJ3Rlc3QgXCJ4XCRhc19saW5lbm9fMSdcJGFzX3J1bidcIiAhPSBcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiICYmCiAgIHRlc3QgXCJ4XGBleHByIFwkYXNfbGluZW5vXzEnXCRhc19ydW4nICsgMVxgXCIgPSBcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiJyB8fCBleGl0IDEKKworICB0ZXN0IC1uIFwiXCR7WlNIX1ZFUlNJT04rc2V0fVwke0JBU0hfVkVSU0lPTitzZXR9XCIgfHwgKAorICAgIEVDSE89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJworICAgIEVDSE89XCRFQ0hPXCRFQ0hPXCRFQ0hPXCRFQ0hPXCRFQ0hPCisgICAgRUNITz1cJEVDSE9cJEVDSE9cJEVDSE9cJEVDSE9cJEVDSE9cJEVDSE8KKyAgICBQQVRIPS9lbXB0eSBGUEFUSD0vZW1wdHk7IGV4cG9ydCBQQVRIIEZQQVRICisgICAgdGVzdCBcIlhcYHByaW50ZiAlcyBcJEVDSE9cYFwiID0gXCJYXCRFQ0hPXCIgXFwKKyAgICAgIHx8IHRlc3QgXCJYXGBwcmludCAtciAtLSBcJEVDSE9cYFwiID0gXCJYXCRFQ0hPXCIgKSB8fCBleGl0IDEKIHRlc3QgXCQoKCAxICsgMSApKSA9IDIgfHwgZXhpdCAxIgogICBpZiAoZXZhbCAiJGFzX3JlcXVpcmVkIikgMj4vZGV2L251bGw7IHRoZW4gOgogICBhc19oYXZlX3JlcXVpcmVkPXllcwpAQCAtMjE2LDExICsyMjUsMTggQEAKICAgIyBXZSBjYW5ub3QgeWV0IGFzc3VtZSBhIGRlY2VudCBzaGVsbCwgc28gd2UgaGF2ZSB0byBwcm92aWRlIGEKIAkjIG5ldXRyYWxpemF0aW9uIHZhbHVlIGZvciBzaGVsbHMgd2l0aG91dCB1bnNldDsgYW5kIHRoaXMgYWxzbwogCSMgd29ya3MgYXJvdW5kIHNoZWxscyB0aGF0IGNhbm5vdCB1bnNldCBub25leGlzdGVudCB2YXJpYWJsZXMuCisJIyBQcmVzZXJ2ZSAtdiBhbmQgLXggdG8gdGhlIHJlcGxhY2VtZW50IHNoZWxsLgogCUJBU0hfRU5WPS9kZXYvbnVsbAogCUVOVj0vZGV2L251bGwKIAkodW5zZXQgQkFTSF9FTlYpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBCQVNIX0VOViBFTlYKIAlleHBvcnQgQ09ORklHX1NIRUxMCi0JZXhlYyAiJENPTkZJR19TSEVMTCIgIiRhc19teXNlbGYiICR7MSsiJEAifQorCWNhc2UgJC0gaW4gIyAoKCgoCisJICAqdip4KiB8ICp4KnYqICkgYXNfb3B0cz0tdnggOzsKKwkgICp2KiApIGFzX29wdHM9LXYgOzsKKwkgICp4KiApIGFzX29wdHM9LXggOzsKKwkgICogKSBhc19vcHRzPSA7OworCWVzYWMKKwlleGVjICIkQ09ORklHX1NIRUxMIiAkYXNfb3B0cyAiJGFzX215c2VsZiIgJHsxKyIkQCJ9CiBmaQogCiAgICAgaWYgdGVzdCB4JGFzX2hhdmVfcmVxdWlyZWQgPSB4bm87IHRoZW4gOgpAQCAtMjMxLDggKzI0Nyw4IEBACiAgICAgJGFzX2VjaG8gIiQwOiBiZSB1cGdyYWRlZCB0byB6c2ggNC4zLjQgb3IgbGF0ZXIuIgogICBlbHNlCiAgICAgJGFzX2VjaG8gIiQwOiBQbGVhc2UgdGVsbCBidWctYXV0b2NvbmZAZ251Lm9yZyBhbmQKLSQwOiBodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sIGFib3V0IHlvdXIgc3lzdGVtLAotJDA6IGluY2x1ZGluZyBhbnkgZXJyb3IgcG9zc2libHkgb3V0cHV0IGJlZm9yZSB0aGlzCiskMDogaHR0cDovL2dpdGh1Yi5jb20vYXRncmVlbi9saWJmZmkvaXNzdWVzIGFib3V0IHlvdXIKKyQwOiBzeXN0ZW0sIGluY2x1ZGluZyBhbnkgZXJyb3IgcG9zc2libHkgb3V0cHV0IGJlZm9yZSB0aGlzCiAkMDogbWVzc2FnZS4gVGhlbiBpbnN0YWxsIGEgbW9kZXJuIHNoZWxsLCBvciBtYW51YWxseSBydW4KICQwOiB0aGUgc2NyaXB0IHVuZGVyIHN1Y2ggYSBzaGVsbCBpZiB5b3UgZG8gaGF2ZSBvbmUuIgogICBmaQpAQCAtMzE5LDcgKzMzNSw3IEBACiAgICAgICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhawogICAgIGRvbmUKICAgICB0ZXN0IC16ICIkYXNfZGlycyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiCi0gIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiCisgIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiCiAKIAogfSAjIGFzX2ZuX21rZGlyX3AKQEAgLTM1OSwxOSArMzc1LDE5IEBACiBmaSAjIGFzX2ZuX2FyaXRoCiAKIAotIyBhc19mbl9lcnJvciBFUlJPUiBbTElORU5PIExPR19GRF0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGFzX2ZuX2Vycm9yIFNUQVRVUyBFUlJPUiBbTElORU5PIExPR19GRF0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVycm9yOiBFUlJPUiIgdG8gc3RkZXJyLiBJZiBMSU5FTk8gYW5kIExPR19GRCBhcmUKICMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJvciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQotIyBzY3JpcHQgd2l0aCBzdGF0dXMgJD8sIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KKyMgc2NyaXB0IHdpdGggU1RBVFVTLCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuCiBhc19mbl9lcnJvciAoKQogewotICBhc19zdGF0dXM9JD87IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQotICBpZiB0ZXN0ICIkMyI7IHRoZW4KLSAgICBhc19saW5lbm89JHthc19saW5lbm8tIiQyIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQxIiA+JiQzCisgIGFzX3N0YXR1cz0kMTsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCisgIGlmIHRlc3QgIiQ0IjsgdGhlbgorICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDIiID4mJDQKICAgZmkKLSAgJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6ICQxIiA+JjIKKyAgJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6ICQyIiA+JjIKICAgYXNfZm5fZXhpdCAkYXNfc3RhdHVzCiB9ICMgYXNfZm5fZXJyb3IKIApAQCAtNTI4LDE2MSArNTQ0LDE0IEBACiAjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4KIGFzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCiAKLQotCi0jIENoZWNrIHRoYXQgd2UgYXJlIHJ1bm5pbmcgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwuCiBTSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQogCi1jYXNlIFgkbHRfRUNITyBpbgotWCotLWZhbGxiYWNrLWVjaG8pCi0gICMgUmVtb3ZlIG9uZSBsZXZlbCBvZiBxdW90YXRpb24gKHdoaWNoIHdhcyByZXF1aXJlZCBmb3IgTWFrZSkuCi0gIEVDSE89YGVjaG8gIiRsdF9FQ0hPIiB8IHNlZCAncyxcXFxcXCRcXCQwLCckMCcsJ2AKLSAgOzsKLWVzYWMKLQotRUNITz0ke2x0X0VDSE8tZWNob30KLWlmIHRlc3QgIlgkMSIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KLSAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gIHNoaWZ0Ci1lbGlmIHRlc3QgIlgkMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgQXZvaWQgaW5saW5lIGRvY3VtZW50IGhlcmUsIGl0IG1heSBiZSBsZWZ0IG92ZXIKLSAgOgotZWxpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgOyB0aGVuCi0gICMgWWlwcGVlLCAkRUNITyB3b3JrcyEKLSAgOgotZWxzZQotICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwuCi0gIGV4ZWMgJFNIRUxMICIkMCIgLS1uby1yZWV4ZWMgJHsxKyIkQCJ9Ci1maQotCi1pZiB0ZXN0ICJYJDEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIHVzZWQgYXMgZmFsbGJhY2sgZWNobwotICBzaGlmdAotICBjYXQgPDxfTFRfRU9GCi0kKgotX0xUX0VPRgotICBleGl0IDAKLWZpCi0KLSMgVGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gc3Rkb3V0Ci0jIGlmIENEUEFUSCBpcyBzZXQuCi0odW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICi0KLWlmIHRlc3QgLXogIiRsdF9FQ0hPIjsgdGhlbgotICBpZiB0ZXN0ICJYJHtlY2hvX3Rlc3Rfc3RyaW5nK3NldH0iICE9IFhzZXQ7IHRoZW4KLSAgICAjIGZpbmQgYSBzdHJpbmcgYXMgbGFyZ2UgYXMgcG9zc2libGUsIGFzIGxvbmcgYXMgdGhlIHNoZWxsIGNhbiBjb3BlIHdpdGggaXQKLSAgICBmb3IgY21kIGluICdzZWQgNTBxICIkMCInICdzZWQgMjBxICIkMCInICdzZWQgMTBxICIkMCInICdzZWQgMnEgIiQwIicgJ2VjaG8gdGVzdCc7IGRvCi0gICAgICAjIGV4cGVjdGVkIHNpemVzOiBsZXNzIHRoYW4gMktiLCAxS2IsIDUxMiBieXRlcywgMTYgYnl0ZXMsIC4uLgotICAgICAgaWYgeyBlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRjbWRgOyB9IDI+L2Rldi9udWxsICYmCi0JIHsgdGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsCi0gICAgICB0aGVuCi0gICAgICAgIGJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgZmkKLQotICBpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICA6Ci0gIGVsc2UKLSAgICAjIFRoZSBTb2xhcmlzLCBBSVgsIGFuZCBEaWdpdGFsIFVuaXggZGVmYXVsdCBlY2hvIHByb2dyYW1zIHVucXVvdGUKLSAgICAjIGJhY2tzbGFzaGVzLiAgVGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHF1b3RlIGJhY2tzbGFzaGVzIHVzaW5nCi0gICAgIyAgIGVjaG8gIiRzb21ldGhpbmciIHwgc2VkICdzL1xcL1xcXFwvZycKLSAgICAjCi0gICAgIyBTbywgZmlyc3Qgd2UgbG9vayBmb3IgYSB3b3JraW5nIGVjaG8gaW4gdGhlIHVzZXIncyBQQVRILgotCi0gICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0gICAgZm9yIGRpciBpbiAkUEFUSCAvdXNyL3VjYjsgZG8KLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgICAgaWYgKHRlc3QgLWYgJGRpci9lY2hvIHx8IHRlc3QgLWYgJGRpci9lY2hvJGFjX2V4ZWV4dCkgJiYKLSAgICAgICAgIHRlc3QgIlhgKCRkaXIvZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkZGlyL2VjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0gICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICAgICAgRUNITz0iJGRpci9lY2hvIgotICAgICAgICBicmVhawotICAgICAgZmkKLSAgICBkb25lCi0gICAgSUZTPSIkbHRfc2F2ZV9pZnMiCi0KLSAgICBpZiB0ZXN0ICJYJEVDSE8iID0gWGVjaG87IHRoZW4KLSAgICAgICMgV2UgZGlkbid0IGZpbmQgYSBiZXR0ZXIgZWNobywgc28gbG9vayBmb3IgYWx0ZXJuYXRpdmVzLgotICAgICAgaWYgdGVzdCAiWGB7IHByaW50IC1yICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7IHByaW50IC1yICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCi0gICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICAgICAgIyBUaGlzIHNoZWxsIGhhcyBhIGJ1aWx0aW4gcHJpbnQgLXIgdGhhdCBkb2VzIHRoZSB0cmljay4KLSAgICAgICAgRUNITz0ncHJpbnQgLXInCi0gICAgICBlbGlmIHsgdGVzdCAtZiAvYmluL2tzaCB8fCB0ZXN0IC1mIC9iaW4va3NoJGFjX2V4ZWV4dDsgfSAmJgotCSAgIHRlc3QgIlgkQ09ORklHX1NIRUxMIiAhPSBYL2Jpbi9rc2g7IHRoZW4KLSAgICAgICAgIyBJZiB3ZSBoYXZlIGtzaCwgdHJ5IHJ1bm5pbmcgY29uZmlndXJlIGFnYWluIHdpdGggaXQuCi0gICAgICAgIE9SSUdJTkFMX0NPTkZJR19TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQotICAgICAgICBleHBvcnQgT1JJR0lOQUxfQ09ORklHX1NIRUxMCi0gICAgICAgIENPTkZJR19TSEVMTD0vYmluL2tzaAotICAgICAgICBleHBvcnQgQ09ORklHX1NIRUxMCi0gICAgICAgIGV4ZWMgJENPTkZJR19TSEVMTCAiJDAiIC0tbm8tcmVleGVjICR7MSsiJEAifQotICAgICAgZWxzZQotICAgICAgICAjIFRyeSB1c2luZyBwcmludGYuCi0gICAgICAgIEVDSE89J3ByaW50ZiAlc1xuJwotICAgICAgICBpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLQkgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7ICRFQ0hPICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCi0JICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICAjIENvb2wsIHByaW50ZiB3b3JrcwotCSAgOgotICAgICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkT1JJR0lOQUxfQ09ORklHX1NIRUxMICIkMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCi0JICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiJDAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgQ09ORklHX1NIRUxMPSRPUklHSU5BTF9DT05GSUdfU0hFTEwKLQkgIGV4cG9ydCBDT05GSUdfU0hFTEwKLQkgIFNIRUxMPSIkQ09ORklHX1NIRUxMIgotCSAgZXhwb3J0IFNIRUxMCi0JICBFQ0hPPSIkQ09ORklHX1NIRUxMICQwIC0tZmFsbGJhY2stZWNobyIKLSAgICAgICAgZWxpZiBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJENPTkZJR19TSEVMTCAiJDAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgotCSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIiQwIiAtLWZhbGxiYWNrLWVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgIEVDSE89IiRDT05GSUdfU0hFTEwgJDAgLS1mYWxsYmFjay1lY2hvIgotICAgICAgICBlbHNlCi0JICAjIG1heWJlIHdpdGggYSBzbWFsbGVyIHN0cmluZy4uLgotCSAgcHJldj06Ci0KLQkgIGZvciBjbWQgaW4gJ2VjaG8gdGVzdCcgJ3NlZCAycSAiJDAiJyAnc2VkIDEwcSAiJDAiJyAnc2VkIDIwcSAiJDAiJyAnc2VkIDUwcSAiJDAiJzsgZG8KLQkgICAgaWYgeyB0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlhgZXZhbCAkY21kYCI7IH0gMj4vZGV2L251bGwKLQkgICAgdGhlbgotCSAgICAgIGJyZWFrCi0JICAgIGZpCi0JICAgIHByZXY9IiRjbWQiCi0JICBkb25lCi0KLQkgIGlmIHRlc3QgIiRwcmV2IiAhPSAnc2VkIDUwcSAiJDAiJzsgdGhlbgotCSAgICBlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRwcmV2YAotCSAgICBleHBvcnQgZWNob190ZXN0X3N0cmluZwotCSAgICBleGVjICR7T1JJR0lOQUxfQ09ORklHX1NIRUxMLSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9fSAiJDAiICR7MSsiJEAifQotCSAgZWxzZQotCSAgICAjIE9vcHMuICBXZSBsb3N0IGNvbXBsZXRlbHksIHNvIGp1c3Qgc3RpY2sgd2l0aCBlY2hvLgotCSAgICBFQ0hPPWVjaG8KLQkgIGZpCi0gICAgICAgIGZpCi0gICAgICBmaQotICAgIGZpCi0gIGZpCi1maQotCi0jIENvcHkgZWNobyBhbmQgcXVvdGUgdGhlIGNvcHkgc3VpdGFibHkgZm9yIHBhc3NpbmcgdG8gbGlidG9vbCBmcm9tCi0jIHRoZSBNYWtlZmlsZSwgaW5zdGVhZCBvZiBxdW90aW5nIHRoZSBvcmlnaW5hbCwgd2hpY2ggaXMgdXNlZCBsYXRlci4KLWx0X0VDSE89JEVDSE8KLWlmIHRlc3QgIlgkbHRfRUNITyIgPSAiWCRDT05GSUdfU0hFTEwgJDAgLS1mYWxsYmFjay1lY2hvIjsgdGhlbgotICAgbHRfRUNITz0iJENPTkZJR19TSEVMTCBcXFwkXCQwIC0tZmFsbGJhY2stZWNobyIKLWZpCi0KLQotCiAKIHRlc3QgLW4gIiRESkRJUiIgfHwgZXhlYyA3PCYwIDwvZGV2L251bGwKIGV4ZWMgNj4mMQogCiAjIE5hbWUgb2YgdGhlIGhvc3QuCi0jIGhvc3RuYW1lIG9uIHNvbWUgc3lzdGVtcyAoU1ZSMy4yLCBMaW51eCkgcmV0dXJucyBhIGJvZ3VzIGV4aXQgc3RhdHVzLAorIyBob3N0bmFtZSBvbiBzb21lIHN5c3RlbXMgKFNWUjMuMiwgb2xkIEdOVS9MaW51eCkgcmV0dXJucyBhIGJvZ3VzIGV4aXQgc3RhdHVzLAogIyBzbyB1bmFtZSBnZXRzIHJ1biB0b28uCiBhY19ob3N0bmFtZT1gKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKIApAQCAtNzAxLDkgKzU3MCw5IEBACiAjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KIFBBQ0tBR0VfTkFNRT0nbGliZmZpJwogUEFDS0FHRV9UQVJOQU1FPSdsaWJmZmknCi1QQUNLQUdFX1ZFUlNJT049JzMuMC4xMHJjMCcKLVBBQ0tBR0VfU1RSSU5HPSdsaWJmZmkgMy4wLjEwcmMwJwotUEFDS0FHRV9CVUdSRVBPUlQ9J2h0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWwnCitQQUNLQUdFX1ZFUlNJT049JzMuMC4xMScKK1BBQ0tBR0VfU1RSSU5HPSdsaWJmZmkgMy4wLjExJworUEFDS0FHRV9CVUdSRVBPUlQ9J2h0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3VlcycKIFBBQ0tBR0VfVVJMPScnCiAKICMgRmFjdG9yaW5nIGRlZmF1bHQgaGVhZGVycyBmb3IgbW9zdCB0ZXN0cy4KQEAgLTc0OCw4ICs2MTcsMTQgQEAKIExJQk9CSlMKIHRvb2xleGVjbGliZGlyCiB0b29sZXhlY2RpcgorRkZJX0RFQlVHX0ZBTFNFCitGRklfREVCVUdfVFJVRQogVEFSR0VURElSCiBUQVJHRVQKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfRkFMU0UKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfVFJVRQorc3lzX3N5bWJvbF91bmRlcnNjb3JlCiBIQVZFX0xPTkdfRE9VQkxFCiBBTExPQ0EKIFBBNjRfSFBVWF9GQUxTRQpAQCAtNzgyLDYgKzY1Nyw4IEBACiBQT1dFUlBDX0FJWF9UUlVFCiBQT1dFUlBDX0ZBTFNFCiBQT1dFUlBDX1RSVUUKK01PWElFX0ZBTFNFCitNT1hJRV9UUlVFCiBNNjhLX0ZBTFNFCiBNNjhLX1RSVUUKIE0zMlJfRkFMU0UKQEAgLTgxMSwxNSArNjg4LDE4IEBACiBNQUlOVAogTUFJTlRBSU5FUl9NT0RFX0ZBTFNFCiBNQUlOVEFJTkVSX01PREVfVFJVRQorUFJURElBRwogQ1BQCiBPVE9PTDY0CiBPVE9PTAogTElQTwogTk1FRElUCiBEU1lNVVRJTAotbHRfRUNITworTUFOSUZFU1RfVE9PTAogUkFOTElCCithY19jdF9BUgogQVIKK0RMTFRPT0wKIE9CSkRVTVAKIExOX1MKIE5NCkBAIC04MzksNiArNzE5LDcgQEAKIGFtX19mYXN0ZGVwQ0NfRkFMU0UKIGFtX19mYXN0ZGVwQ0NfVFJVRQogQ0NERVBNT0RFCithbV9fbm9kZXAKIEFNREVQQkFDS1NMQVNICiBBTURFUF9GQUxTRQogQU1ERVBfVFJVRQpAQCAtODc1LDYgKzc1Niw3IEBACiBJTlNUQUxMX0RBVEEKIElOU1RBTExfU0NSSVBUCiBJTlNUQUxMX1BST0dSQU0KK2F4X2VuYWJsZV9idWlsZGRpcl9zZWQKIHRhcmdldF9vcwogdGFyZ2V0X3ZlbmRvcgogdGFyZ2V0X2NwdQpAQCAtOTI4LDEzICs4MTAsMTcgQEAKIGFjX3N1YnN0X2ZpbGVzPScnCiBhY191c2VyX29wdHM9JwogZW5hYmxlX29wdGlvbl9jaGVja2luZworZW5hYmxlX2J1aWxkZGlyCiBlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZwogZW5hYmxlX3NoYXJlZAogZW5hYmxlX3N0YXRpYwogd2l0aF9waWMKIGVuYWJsZV9mYXN0X2luc3RhbGwKIHdpdGhfZ251X2xkCit3aXRoX3N5c3Jvb3QKIGVuYWJsZV9saWJ0b29sX2xvY2sKK2VuYWJsZV9wb3J0YWJsZV9iaW5hcnkKK3dpdGhfZ2NjX2FyY2gKIGVuYWJsZV9tYWludGFpbmVyX21vZGUKIGVuYWJsZV9kZWJ1ZwogZW5hYmxlX3N0cnVjdHMKQEAgLTEwMTAsOCArODk2LDkgQEAKICAgZmkKIAogICBjYXNlICRhY19vcHRpb24gaW4KLSAgKj0qKQlhY19vcHRhcmc9YGV4cHIgIlgkYWNfb3B0aW9uIiA6ICdbXj1dKj1cKC4qXCknYCA7OwotICAqKQlhY19vcHRhcmc9eWVzIDs7CisgICo9PyopIGFjX29wdGFyZz1gZXhwciAiWCRhY19vcHRpb24iIDogJ1tePV0qPVwoLipcKSdgIDs7CisgICo9KSAgIGFjX29wdGFyZz0gOzsKKyAgKikgICAgYWNfb3B0YXJnPXllcyA7OwogICBlc2FjCiAKICAgIyBBY2NlcHQgdGhlIGltcG9ydGFudCBDeWdudXMgY29uZmlndXJlIG9wdGlvbnMsIHNvIHdlIGNhbiBkaWFnbm9zZSB0eXBvcy4KQEAgLTEwNTYsNyArOTQzLDcgQEAKICAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZGlzYWJsZS1cKC4qXCknYAogICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KICAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCiAgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CiAgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAogICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgpAQCAtMTA4Miw3ICs5NjksNyBAQAogICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSplbmFibGUtXChbXj1dKlwpJ2AKICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCiAgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLSAgICAgIGFzX2ZuX2Vycm9yICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0IgogICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAogICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKICAgICBjYXNlICRhY191c2VyX29wdHMgaW4KQEAgLTEyODYsNyArMTE3Myw3IEBACiAgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGgtXChbXj1dKlwpJ2AKICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCiAgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLSAgICAgIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgogICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAogICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKICAgICBjYXNlICRhY191c2VyX29wdHMgaW4KQEAgLTEzMDIsNyArMTE4OSw3IEBACiAgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGhvdXQtXCguKlwpJ2AKICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCiAgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLSAgICAgIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgogICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAogICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKICAgICBjYXNlICRhY191c2VyX29wdHMgaW4KQEAgLTEzMzIsOCArMTIxOSw4IEBACiAgIHwgLS14LWxpYnJhcj0qIHwgLS14LWxpYnJhPSogfCAtLXgtbGlicj0qIHwgLS14LWxpYj0qIHwgLS14LWxpPSogfCAtLXgtbD0qKQogICAgIHhfbGlicmFyaWVzPSRhY19vcHRhcmcgOzsKIAotICAtKikgYXNfZm5fZXJyb3IgInVucmVjb2duaXplZCBvcHRpb246IFxgJGFjX29wdGlvbicKLVRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBvcHRpb246IFxgJGFjX29wdGlvbicKK1RyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCiAgICAgOzsKIAogICAqPSopCkBAIC0xMzQxLDcgKzEyMjgsNyBAQAogICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KICAgICBjYXNlICRhY19lbnZ2YXIgaW4gIygKICAgICAgICcnIHwgWzAtOV0qIHwgKlshXyRhc19jcl9hbG51bV0qICkKLSAgICAgIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHZhcmlhYmxlIG5hbWU6IFxgJGFjX2VudnZhciciIDs7CisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YXJpYWJsZSBuYW1lOiBcYCRhY19lbnZ2YXInIiA7OwogICAgIGVzYWMKICAgICBldmFsICRhY19lbnZ2YXI9XCRhY19vcHRhcmcKICAgICBleHBvcnQgJGFjX2VudnZhciA7OwpAQCAtMTM1MSw3ICsxMjM4LDcgQEAKICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB5b3Ugc2hvdWxkIHVzZSAtLWJ1aWxkLCAtLWhvc3QsIC0tdGFyZ2V0IiA+JjIKICAgICBleHByICJ4JGFjX29wdGlvbiIgOiAiLipbXi0uXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKICAgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGludmFsaWQgaG9zdCB0eXBlOiAkYWNfb3B0aW9uIiA+JjIKLSAgICA6ICR7YnVpbGRfYWxpYXM9JGFjX29wdGlvbn0gJHtob3N0X2FsaWFzPSRhY19vcHRpb259ICR7dGFyZ2V0X2FsaWFzPSRhY19vcHRpb259CisgICAgOiAiJHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3RfYWxpYXM9JGFjX29wdGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0iCiAgICAgOzsKIAogICBlc2FjCkBAIC0xMzU5LDEzICsxMjQ2LDEzIEBACiAKIGlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgogICBhY19vcHRpb249LS1gZWNobyAkYWNfcHJldiB8IHNlZCAncy9fLy0vZydgCi0gIGFzX2ZuX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IHRvICRhY19vcHRpb24iCisgIGFzX2ZuX2Vycm9yICQ/ICJtaXNzaW5nIGFyZ3VtZW50IHRvICRhY19vcHRpb24iCiBmaQogCiBpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiOyB0aGVuCiAgIGNhc2UgJGVuYWJsZV9vcHRpb25fY2hlY2tpbmcgaW4KICAgICBubykgOzsKLSAgICBmYXRhbCkgYXNfZm5fZXJyb3IgInVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiIDs7CisgICAgZmF0YWwpIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA7OwogICAgICopICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjIgOzsKICAgZXNhYwogZmkKQEAgLTEzODgsNyArMTI3NSw3IEBACiAgICAgW1xcLyRdKiB8ID86W1xcL10qICkgIGNvbnRpbnVlOzsKICAgICBOT05FIHwgJycgKSBjYXNlICRhY192YXIgaW4gKnByZWZpeCApIGNvbnRpbnVlOzsgZXNhYzs7CiAgIGVzYWMKLSAgYXNfZm5fZXJyb3IgImV4cGVjdGVkIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGZvciAtLSRhY192YXI6ICRhY192YWwiCisgIGFzX2ZuX2Vycm9yICQ/ICJleHBlY3RlZCBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBmb3IgLS0kYWNfdmFyOiAkYWNfdmFsIgogZG9uZQogCiAjIFRoZXJlIG1pZ2h0IGJlIHBlb3BsZSB3aG8gZGVwZW5kIG9uIHRoZSBvbGQgYnJva2VuIGJlaGF2aW9yOiBgJGhvc3QnCkBAIC0xNDAyLDggKzEyODksOCBAQAogaWYgdGVzdCAieCRob3N0X2FsaWFzIiAhPSB4OyB0aGVuCiAgIGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiID0geDsgdGhlbgogICAgIGNyb3NzX2NvbXBpbGluZz1tYXliZQotICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IElmIHlvdSB3YW50ZWQgdG8gc2V0IHRoZSAtLWJ1aWxkIHR5cGUsIGRvbid0IHVzZSAtLWhvc3QuCi0gICAgSWYgYSBjcm9zcyBjb21waWxlciBpcyBkZXRlY3RlZCB0aGVuIGNyb3NzIGNvbXBpbGUgbW9kZSB3aWxsIGJlIHVzZWQuIiA+JjIKKyAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBpZiB5b3Ugd2FudGVkIHRvIHNldCB0aGUgLS1idWlsZCB0eXBlLCBkb24ndCB1c2UgLS1ob3N0LgorICAgIElmIGEgY3Jvc3MgY29tcGlsZXIgaXMgZGV0ZWN0ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUgd2lsbCBiZSB1c2VkIiA+JjIKICAgZWxpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiAhPSAieCRob3N0X2FsaWFzIjsgdGhlbgogICAgIGNyb3NzX2NvbXBpbGluZz15ZXMKICAgZmkKQEAgLTE0MTgsOSArMTMwNSw5IEBACiBhY19wd2Q9YHB3ZGAgJiYgdGVzdCAtbiAiJGFjX3B3ZCIgJiYKIGFjX2xzX2RpPWBscyAtZGkgLmAgJiYKIGFjX3B3ZF9sc19kaT1gY2QgIiRhY19wd2QiICYmIGxzIC1kaSAuYCB8fAotICBhc19mbl9lcnJvciAid29ya2luZyBkaXJlY3RvcnkgY2Fubm90IGJlIGRldGVybWluZWQiCisgIGFzX2ZuX2Vycm9yICQ/ICJ3b3JraW5nIGRpcmVjdG9yeSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCIKIHRlc3QgIlgkYWNfbHNfZGkiID0gIlgkYWNfcHdkX2xzX2RpIiB8fAotICBhc19mbl9lcnJvciAicHdkIGRvZXMgbm90IHJlcG9ydCBuYW1lIG9mIHdvcmtpbmcgZGlyZWN0b3J5IgorICBhc19mbl9lcnJvciAkPyAicHdkIGRvZXMgbm90IHJlcG9ydCBuYW1lIG9mIHdvcmtpbmcgZGlyZWN0b3J5IgogCiAKICMgRmluZCB0aGUgc291cmNlIGZpbGVzLCBpZiBsb2NhdGlvbiB3YXMgbm90IHNwZWNpZmllZC4KQEAgLTE0NTksMTEgKzEzNDYsMTEgQEAKIGZpCiBpZiB0ZXN0ICEgLXIgIiRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlIjsgdGhlbgogICB0ZXN0ICIkYWNfc3JjZGlyX2RlZmF1bHRlZCIgPSB5ZXMgJiYgc3JjZGlyPSIkYWNfY29uZmRpciBvciAuLiIKLSAgYXNfZm5fZXJyb3IgImNhbm5vdCBmaW5kIHNvdXJjZXMgKCRhY191bmlxdWVfZmlsZSkgaW4gJHNyY2RpciIKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5kIHNvdXJjZXMgKCRhY191bmlxdWVfZmlsZSkgaW4gJHNyY2RpciIKIGZpCiBhY19tc2c9InNvdXJjZXMgYXJlIGluICRzcmNkaXIsIGJ1dCBcYGNkICRzcmNkaXInIGRvZXMgbm90IHdvcmsiCiBhY19hYnNfY29uZmRpcj1gKAotCWNkICIkc3JjZGlyIiAmJiB0ZXN0IC1yICIuLyRhY191bmlxdWVfZmlsZSIgfHwgYXNfZm5fZXJyb3IgIiRhY19tc2ciCisJY2QgIiRzcmNkaXIiICYmIHRlc3QgLXIgIi4vJGFjX3VuaXF1ZV9maWxlIiB8fCBhc19mbl9lcnJvciAkPyAiJGFjX21zZyIKIAlwd2QpYAogIyBXaGVuIGJ1aWxkaW5nIGluIHBsYWNlLCBzZXQgc3JjZGlyPS4KIGlmIHRlc3QgIiRhY19hYnNfY29uZmRpciIgPSAiJGFjX3B3ZCI7IHRoZW4KQEAgLTE0ODksNyArMTM3Niw3IEBACiAgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgogICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCiAgIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgbGliZmZpIDMuMC4xMHJjMCB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCitcYGNvbmZpZ3VyZScgY29uZmlndXJlcyBsaWJmZmkgMy4wLjExIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KIAogVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtWQVI9VkFMVUVdLi4uCiAKQEAgLTE1MDMsNyArMTM5MCw3IEBACiAgICAgICAtLWhlbHA9c2hvcnQgICAgICAgIGRpc3BsYXkgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGlzIHBhY2thZ2UKICAgICAgIC0taGVscD1yZWN1cnNpdmUgICAgZGlzcGxheSB0aGUgc2hvcnQgaGVscCBvZiBhbGwgdGhlIGluY2x1ZGVkIHBhY2thZ2VzCiAgIC1WLCAtLXZlcnNpb24gICAgICAgICAgIGRpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAotICAtcSwgLS1xdWlldCwgLS1zaWxlbnQgICBkbyBub3QgcHJpbnQgXGBjaGVja2luZy4uLicgbWVzc2FnZXMKKyAgLXEsIC0tcXVpZXQsIC0tc2lsZW50ICAgZG8gbm90IHByaW50IFxgY2hlY2tpbmcgLi4uJyBtZXNzYWdlcwogICAgICAgLS1jYWNoZS1maWxlPUZJTEUgICBjYWNoZSB0ZXN0IHJlc3VsdHMgaW4gRklMRSBbZGlzYWJsZWRdCiAgIC1DLCAtLWNvbmZpZy1jYWNoZSAgICAgIGFsaWFzIGZvciBcYC0tY2FjaGUtZmlsZT1jb25maWcuY2FjaGUnCiAgIC1uLCAtLW5vLWNyZWF0ZSAgICAgICAgIGRvIG5vdCBjcmVhdGUgb3V0cHV0IGZpbGVzCkBAIC0xNTYwLDcgKzE0NDcsNyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIGxpYmZmaSAzLjAuMTByYzA6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBsaWJmZmkgMy4wLjExOiI7OwogICAgZXNhYwogICBjYXQgPDxcX0FDRU9GCiAKQEAgLTE1NjgsNiArMTQ1NSw4IEBACiAgIC0tZGlzYWJsZS1vcHRpb24tY2hlY2tpbmcgIGlnbm9yZSB1bnJlY29nbml6ZWQgLS1lbmFibGUvLS13aXRoIG9wdGlvbnMKICAgLS1kaXNhYmxlLUZFQVRVUkUgICAgICAgZG8gbm90IGluY2x1ZGUgRkVBVFVSRSAoc2FtZSBhcyAtLWVuYWJsZS1GRUFUVVJFPW5vKQogICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15ZXNdCisgIC0tZGlzYWJsZS1idWlsZGRpciAgICAgIGRpc2FibGUgYXV0b21hdGljIGJ1aWxkIGluIHN1YmRpciBvZiBzb3VyY2VzCisKICAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgIHNwZWVkcyB1cCBvbmUtdGltZSBidWlsZAogICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90IHJlamVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFjdG9ycwogICAtLWVuYWJsZS1zaGFyZWRbPVBLR1NdICBidWlsZCBzaGFyZWQgbGlicmFyaWVzIFtkZWZhdWx0PXllc10KQEAgLTE1NzUsNiArMTQ2NCw5IEBACiAgIC0tZW5hYmxlLWZhc3QtaW5zdGFsbFs9UEtHU10KICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemUgZm9yIGZhc3QgaW5zdGFsbGF0aW9uIFtkZWZhdWx0PXllc10KICAgLS1kaXNhYmxlLWxpYnRvb2wtbG9jayAgYXZvaWQgbG9ja2luZyAobWlnaHQgYnJlYWsgcGFyYWxsZWwgYnVpbGRzKQorICAtLWVuYWJsZS1wb3J0YWJsZS1iaW5hcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZSBjb21waWxlciBvcHRpbWl6YXRpb25zIHRoYXQgd291bGQgcHJvZHVjZQorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBvcnRhYmxlIGJpbmFyaWVzCiAgIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSAgZW5hYmxlIG1ha2UgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBub3QgdXNlZnVsCiAJCQkgIChhbmQgc29tZXRpbWVzIGNvbmZ1c2luZykgdG8gdGhlIGNhc3VhbCBpbnN0YWxsZXIKICAgLS1lbmFibGUtZGVidWcgICAgICAgICAgZGVidWdnaW5nIG1vZGUKQEAgLTE1ODUsOSArMTQ3NywxMyBAQAogT3B0aW9uYWwgUGFja2FnZXM6CiAgIC0td2l0aC1QQUNLQUdFWz1BUkddICAgIHVzZSBQQUNLQUdFIFtBUkc9eWVzXQogICAtLXdpdGhvdXQtUEFDS0FHRSAgICAgICBkbyBub3QgdXNlIFBBQ0tBR0UgKHNhbWUgYXMgLS13aXRoLVBBQ0tBR0U9bm8pCi0gIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAtLXdpdGgtcGljWz1QS0dTXSAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorICAtLXdpdGgtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAtLXdpdGgtZ2NjLWFyY2g9PGFyY2g+ICB1c2UgYXJjaGl0ZWN0dXJlIDxhcmNoPiBmb3IgZ2NjIC1tYXJjaC8tbXR1bmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgZ3Vlc3NpbmcKIAogU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CiAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZApAQCAtMTYwNCw3ICsxNTAwLDcgQEAKIFVzZSB0aGVzZSB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0byBoZWxwCiBpdCB0byBmaW5kIGxpYnJhcmllcyBhbmQgcHJvZ3JhbXMgd2l0aCBub25zdGFuZGFyZCBuYW1lcy9sb2NhdGlvbnMuCiAKLVJlcG9ydCBidWdzIHRvIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sPi4KK1JlcG9ydCBidWdzIHRvIDxodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXM+LgogX0FDRU9GCiBhY19zdGF0dXM9JD8KIGZpCkBAIC0xNjY3LDEwICsxNTYzLDEwIEBACiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKIGlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KICAgY2F0IDw8XF9BQ0VPRgotbGliZmZpIGNvbmZpZ3VyZSAzLjAuMTByYzAKLWdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NQorbGliZmZpIGNvbmZpZ3VyZSAzLjAuMTEKK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OAogCi1Db3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgogX0FDRU9GCkBAIC0xNzE0LDcgKzE2MTAsNyBAQAogCiAJYWNfcmV0dmFsPTEKIGZpCi0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKIAogfSAjIGFjX2ZuX2NfdHJ5X2NvbXBpbGUKQEAgLTE3NjAsNyArMTY1Niw3IEBACiAgICMgaW50ZXJmZXJlIHdpdGggdGhlIG5leHQgbGluayBjb21tYW5kOyBhbHNvIGRlbGV0ZSBhIGRpcmVjdG9yeSB0aGF0IGlzCiAgICMgbGVmdCBiZWhpbmQgYnkgQXBwbGUncyBjb21waWxlci4gIFdlIGRvIHRoaXMgYmVmb3JlIGV4ZWN1dGluZyB0aGUgYWN0aW9ucy4KICAgcm0gLXJmIGNvbmZ0ZXN0LmRTWU0gY29uZnRlc3RfaXBhOF9jb25mdGVzdC5vbwotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KICAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCiAKIH0gIyBhY19mbl9jX3RyeV9saW5rCkBAIC0xNzc0LDcgKzE2NzAsNyBAQAogICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQotaWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTE3OTIsNyArMTY4OCw3IEBACiBldmFsIGFjX3Jlcz1cJCQzCiAJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKICRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAKIH0gIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlCiAKQEAgLTE4MTcsNyArMTcxMyw3IEBACiAgICAgbXYgLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgogICBmaQogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSA+L2Rldi9udWxsICYmIHsKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSA+IGNvbmZ0ZXN0LmkgJiYgewogCSB0ZXN0IC16ICIkYWNfY19wcmVwcm9jX3dhcm5fZmxhZyRhY19jX3dlcnJvcl9mbGFnIiB8fAogCSB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyCiAgICAgICAgfTsgdGhlbiA6CkBAIC0xODI4LDcgKzE3MjQsNyBAQAogCiAgICAgYWNfcmV0dmFsPTEKIGZpCi0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKIAogfSAjIGFjX2ZuX2NfdHJ5X2NwcApAQCAtMTg3MCw3ICsxNzY2LDcgQEAKICAgICAgICBhY19yZXR2YWw9JGFjX3N0YXR1cwogZmkKICAgcm0gLXJmIGNvbmZ0ZXN0LmRTWU0gY29uZnRlc3RfaXBhOF9jb25mdGVzdC5vbwotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KICAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCiAKIH0gIyBhY19mbl9jX3RyeV9ydW4KQEAgLTE4ODMsNyArMTc3OSw3IEBACiAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9Ci1pZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTkzOCw3ICsxODM0LDcgQEAKIGV2YWwgYWNfcmVzPVwkJDMKIAkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQogJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KIAogfSAjIGFjX2ZuX2NfY2hlY2tfZnVuYwogCkBAIC0xOTUwLDEwICsxODQ2LDEwIEBACiBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICgpCiB7CiAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgaWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgorICBpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9Ci1pZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGZpCiBldmFsIGFjX3Jlcz1cJCQzCkBAIC0xOTg5LDcgKzE4ODUsNyBAQAogZWxzZQogICBhY19oZWFkZXJfcHJlcHJvYz1ubwogZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKICRhc19lY2hvICIkYWNfaGVhZGVyX3ByZXByb2MiID4mNjsgfQogCkBAIC0yMDEyLDE3ICsxOTA4LDE1IEBACiAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogICAgIHNlY3Rpb24gXCJQcmVzZW50IEJ1dCBDYW5ub3QgQmUgQ29tcGlsZWRcIiIgPiYyO30KICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVyJ3MgcmVzdWx0IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVyJ3MgcmVzdWx0IiA+JjI7fQotKCBjYXQgPDxcX0FTQk9YCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBSZXBvcnQgdGhpcyB0byBodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi1fQVNCT1gKKyggJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgUmVwb3J0IHRoaXMgdG8gaHR0cDovL2dpdGh1Yi5jb20vYXRncmVlbi9saWJmZmkvaXNzdWVzICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMiCiAgICAgICkgfCBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKICAgICA7OwogZXNhYwogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KLWlmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBldmFsICIkMz1cJGFjX2hlYWRlcl9jb21waWxlciIKQEAgLTIwMzEsMTAgKzE5MjUsNjQgQEAKIAkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQogJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQogZmkKLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAKIH0gIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsCiAKKyMgYWNfZm5fY19jaGVja190eXBlIExJTkVOTyBUWVBFIFZBUiBJTkNMVURFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3RzIHdoZXRoZXIgVFlQRSBleGlzdHMgYWZ0ZXIgaGF2aW5nIGluY2x1ZGVkIElOQ0xVREVTLCBzZXR0aW5nIGNhY2hlCisjIHZhcmlhYmxlIFZBUiBhY2NvcmRpbmdseS4KK2FjX2ZuX2NfY2hlY2tfdHlwZSAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGV2YWwgIiQzPW5vIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNAoraW50CittYWluICgpCit7CitpZiAoc2l6ZW9mICgkMikpCisJIHJldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CitpbnQKK21haW4gKCkKK3sKK2lmIChzaXplb2YgKCgkMikpKQorCSAgICByZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgIGV2YWwgIiQzPXllcyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCisKK30gIyBhY19mbl9jX2NoZWNrX3R5cGUKKwogIyBhY19mbl9jX2NvbXB1dGVfaW50IExJTkVOTyBFWFBSIFZBUiBJTkNMVURFUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBUcmllcyB0byBmaW5kIHRoZSBjb21waWxlLXRpbWUgdmFsdWUgb2YgRVhQUiBpbiBhIHByb2dyYW0gdGhhdCBpbmNsdWRlcwpAQCAtMjIwOCw3ICsyMTU2LDcgQEAKIHJtIC1mIGNvbmZ0ZXN0LnZhbAogCiAgIGZpCi0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKIAogfSAjIGFjX2ZuX2NfY29tcHV0ZV9pbnQKQEAgLTIyMTYsOCArMjE2NCw4IEBACiBUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQogcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KIAotSXQgd2FzIGNyZWF0ZWQgYnkgbGliZmZpICRhc19tZSAzLjAuMTByYzAsIHdoaWNoIHdhcwotZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY1LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCitJdCB3YXMgY3JlYXRlZCBieSBsaWJmZmkgJGFzX21lIDMuMC4xMSwgd2hpY2ggd2FzCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjguICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICAkICQwICRACiAKQEAgLTIzMjcsMTEgKzIyNzUsOSBAQAogICB7CiAgICAgZWNobwogCi0gICAgY2F0IDw8XF9BU0JPWAotIyMgLS0tLS0tLS0tLS0tLS0tLSAjIworICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLS0tLS0tICMjCiAjIyBDYWNoZSB2YXJpYWJsZXMuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tICMjCi1fQVNCT1gKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMiCiAgICAgZWNobwogICAgICMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsCiAoCkBAIC0yMzY1LDExICsyMzExLDkgQEAKICkKICAgICBlY2hvCiAKLSAgICBjYXQgPDxcX0FTQk9YCi0jIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwogIyMgT3V0cHV0IHZhcmlhYmxlcy4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCi1fQVNCT1gKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjIgogICAgIGVjaG8KICAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF92YXJzCiAgICAgZG8KQEAgLTIzODIsMTEgKzIzMjYsOSBAQAogICAgIGVjaG8KIAogICAgIGlmIHRlc3QgLW4gIiRhY19zdWJzdF9maWxlcyI7IHRoZW4KLSAgICAgIGNhdCA8PFxfQVNCT1gKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyAgICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjCiAjIyBGaWxlIHN1YnN0aXR1dGlvbnMuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjCi1fQVNCT1gKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMiCiAgICAgICBlY2hvCiAgICAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF9maWxlcwogICAgICAgZG8KQEAgLTI0MDAsMTEgKzIzNDIsOSBAQAogICAgIGZpCiAKICAgICBpZiB0ZXN0IC1zIGNvbmZkZWZzLmg7IHRoZW4KLSAgICAgIGNhdCA8PFxfQVNCT1gKLSMjIC0tLS0tLS0tLS0tICMjCisgICAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0gIyMKICMjIGNvbmZkZWZzLmguICMjCi0jIyAtLS0tLS0tLS0tLSAjIwotX0FTQk9YCisjIyAtLS0tLS0tLS0tLSAjIyIKICAgICAgIGVjaG8KICAgICAgIGNhdCBjb25mZGVmcy5oCiAgICAgICBlY2hvCkBAIC0yNDU5LDcgKzIzOTksMTIgQEAKIGFjX3NpdGVfZmlsZTE9Tk9ORQogYWNfc2l0ZV9maWxlMj1OT05FCiBpZiB0ZXN0IC1uICIkQ09ORklHX1NJVEUiOyB0aGVuCi0gIGFjX3NpdGVfZmlsZTE9JENPTkZJR19TSVRFCisgICMgV2UgZG8gbm90IHdhbnQgYSBQQVRIIHNlYXJjaCBmb3IgY29uZmlnLnNpdGUuCisgIGNhc2UgJENPTkZJR19TSVRFIGluICMoKAorICAgIC0qKSAgYWNfc2l0ZV9maWxlMT0uLyRDT05GSUdfU0lURTs7CisgICAgKi8qKSBhY19zaXRlX2ZpbGUxPSRDT05GSUdfU0lURTs7CisgICAgKikgICBhY19zaXRlX2ZpbGUxPS4vJENPTkZJR19TSVRFOzsKKyAgZXNhYwogZWxpZiB0ZXN0ICJ4JHByZWZpeCIgIT0geE5PTkU7IHRoZW4KICAgYWNfc2l0ZV9maWxlMT0kcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlCiAgIGFjX3NpdGVfZmlsZTI9JHByZWZpeC9ldGMvY29uZmlnLnNpdGUKQEAgLTI0NzQsNyArMjQxOSwxMSBAQAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZSIgPiY2O30KICAgICBzZWQgJ3MvXi98IC8nICIkYWNfc2l0ZV9maWxlIiA+JjUKLSAgICAuICIkYWNfc2l0ZV9maWxlIgorICAgIC4gIiRhY19zaXRlX2ZpbGUiIFwKKyAgICAgIHx8IHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gImZhaWxlZCB0byBsb2FkIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiAgIGZpCiBkb25lCiAKQEAgLTI1NTAsNyArMjQ5OSw3IEBACiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9CiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjI7fQotICBhc19mbl9lcnJvciAicnVuIFxgbWFrZSBkaXN0Y2xlYW4nIGFuZC9vciBcYHJtICRjYWNoZV9maWxlJyBhbmQgc3RhcnQgb3ZlciIgIiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gInJ1biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiICIkTElORU5PIiA1CiBmaQogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKICMjIE1haW4gYm9keSBvZiBzY3JpcHQuICMjCkBAIC0yNTY4LDE2ICsyNTE3LDIyIEBACiAKIGFjX2F1eF9kaXI9CiBmb3IgYWNfZGlyIGluICIkc3JjZGlyIiAiJHNyY2Rpci8uLiIgIiRzcmNkaXIvLi4vLi4iOyBkbwotICBmb3IgYWNfdCBpbiBpbnN0YWxsLXNoIGluc3RhbGwuc2ggc2h0b29sOyBkbwotICAgIGlmIHRlc3QgLWYgIiRhY19kaXIvJGFjX3QiOyB0aGVuCi0gICAgICBhY19hdXhfZGlyPSRhY19kaXIKLSAgICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyLyRhY190IC1jIgotICAgICAgYnJlYWsgMgotICAgIGZpCi0gIGRvbmUKKyAgaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLXNoIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwtc2ggLWMiCisgICAgYnJlYWsKKyAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwuc2giOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKKyAgICBicmVhaworICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvc2h0b29sIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIgorICAgIGJyZWFrCisgIGZpCiBkb25lCiBpZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNhbm5vdCBmaW5kIGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBpbiBcIiRzcmNkaXJcIiBcIiRzcmNkaXIvLi5cIiBcIiRzcmNkaXIvLi4vLi5cIiIgIiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5kIGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBpbiBcIiRzcmNkaXJcIiBcIiRzcmNkaXIvLi5cIiBcIiRzcmNkaXIvLi4vLi5cIiIgIiRMSU5FTk8iIDUKIGZpCiAKICMgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLApAQCAtMjU5MSwyNyArMjU0NiwyNyBAQAogCiAjIE1ha2Ugc3VyZSB3ZSBjYW4gcnVuIGNvbmZpZy5zdWIuCiAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiIHN1bjQgPi9kZXYvbnVsbCAyPiYxIHx8Ci0gIGFzX2ZuX2Vycm9yICJjYW5ub3QgcnVuICRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IHJ1biAkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgIiRMSU5FTk8iIDUKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9idWlsZCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2J1aWxkKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfYnVpbGRfYWxpYXM9JGJ1aWxkX2FsaWFzCiB0ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYKICAgYWNfYnVpbGRfYWxpYXM9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzImAKIHRlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgotICBhc19mbl9lcnJvciAiY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkgb25lIiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkgb25lIiAiJExJTkVOTyIgNQogYWNfY3ZfYnVpbGQ9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGFjX2J1aWxkX2FsaWFzYCB8fAotICBhc19mbl9lcnJvciAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGFjX2J1aWxkX2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRhY19idWlsZF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CiAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2J1aWxkIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfYnVpbGQiID4mNjsgfQogY2FzZSAkYWNfY3ZfYnVpbGQgaW4KICotKi0qKSA7OwotKikgYXNfZm5fZXJyb3IgImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGJ1aWxkIiAiJExJTkVOTyIgNTs7CisqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgYnVpbGQiICIkTElORU5PIiA1OzsKIGVzYWMKIGJ1aWxkPSRhY19jdl9idWlsZAogYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJwpAQCAtMjYyOSwxNCArMjU4NCwxNCBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9ob3N0K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfaG9zdCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgIngkaG9zdF9hbGlhcyIgPSB4OyB0aGVuCiAgIGFjX2N2X2hvc3Q9JGFjX2N2X2J1aWxkCiBlbHNlCiAgIGFjX2N2X2hvc3Q9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGhvc3RfYWxpYXNgIHx8Ci0gICAgYXNfZm5fZXJyb3IgIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRob3N0X2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGhvc3RfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQogZmkKIAogZmkKQEAgLTI2NDQsNyArMjU5OSw3IEBACiAkYXNfZWNobyAiJGFjX2N2X2hvc3QiID4mNjsgfQogY2FzZSAkYWNfY3ZfaG9zdCBpbgogKi0qLSopIDs7Ci0qKSBhc19mbl9lcnJvciAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgaG9zdCIgIiRMSU5FTk8iIDU7OworKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGhvc3QiICIkTElORU5PIiA1OzsKIGVzYWMKIGhvc3Q9JGFjX2N2X2hvc3QKIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKQEAgLTI2NjIsMTQgKzI2MTcsMTQgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3RhcmdldCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3RhcmdldCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgIngkdGFyZ2V0X2FsaWFzIiA9IHg7IHRoZW4KICAgYWNfY3ZfdGFyZ2V0PSRhY19jdl9ob3N0CiBlbHNlCiAgIGFjX2N2X3RhcmdldD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkdGFyZ2V0X2FsaWFzYCB8fAotICAgIGFzX2ZuX2Vycm9yICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkdGFyZ2V0X2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJHRhcmdldF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CiBmaQogCiBmaQpAQCAtMjY3Nyw3ICsyNjMyLDcgQEAKICRhc19lY2hvICIkYWNfY3ZfdGFyZ2V0IiA+JjY7IH0KIGNhc2UgJGFjX2N2X3RhcmdldCBpbgogKi0qLSopIDs7Ci0qKSBhc19mbl9lcnJvciAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgdGFyZ2V0IiAiJExJTkVOTyIgNTs7CisqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgdGFyZ2V0IiAiJExJTkVOTyIgNTs7CiBlc2FjCiB0YXJnZXQ9JGFjX2N2X3RhcmdldAogYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJwpAQCAtMjcwNCw2ICsyNjU5LDExMCBAQAogCiAuICR7c3JjZGlyfS9jb25maWd1cmUuaG9zdAogCisKKyAgICMgWyRdQCBpcyB1bnNhYmxlIGluIDIuNjArIGJ1dCBlYXJsaWVyIGF1dG9jb25mIGhhZCBubyBhY19jb25maWd1cmVfYXJncworICAgaWYgdGVzdCAiJHthY19jb25maWd1cmVfYXJncytzZXR9IiAhPSAic2V0IiA7IHRoZW4KKyAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPQorICAgICAgZm9yIGFjX2FyZyBpbiAkezErIiRAIn07IGRvCisgICAgICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzICckYWNfYXJnJyIKKyAgICAgIGRvbmUKKyAgIGZpCisKKyMgZXhwYW5kICRhY19hdXhfZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKK2FtX2F1eF9kaXI9YGNkICRhY19hdXhfZGlyICYmIHB3ZGAKKworCitheF9lbmFibGVfYnVpbGRkaXI9Ii4iCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtYnVpbGRkaXIgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfYnVpbGRkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9idWlsZGRpcjsgYXhfZW5hYmxlX2J1aWxkZGlyPSIkZW5hYmxldmFsIgorZWxzZQorICBheF9lbmFibGVfYnVpbGRkaXI9ImF1dG8iCitmaQorCitpZiB0ZXN0ICIuJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiICE9ICIubm8iIDsgdGhlbgoraWYgdGVzdCAiLiRzcmNkaXIiID0gIi4uIiA7IHRoZW4KKyAgaWYgdGVzdCAtZiBjb25maWcuc3RhdHVzIDsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogdG9wbGV2ZWwgc3JjZGlyIGFscmVhZHkgY29uZmlndXJlZC4uLiBza2lwcGluZyBzdWJkaXIgYnVpbGQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogdG9wbGV2ZWwgc3JjZGlyIGFscmVhZHkgY29uZmlndXJlZC4uLiBza2lwcGluZyBzdWJkaXIgYnVpbGQiID4mNjt9CisgIGVsc2UKKyAgICB0ZXN0ICIuJGF4X2VuYWJsZV9idWlsZGRpciIgPSAiLiIgICYmIGF4X2VuYWJsZV9idWlsZGRpcj0iLiIKKyAgICB0ZXN0ICIuJGF4X2VuYWJsZV9idWlsZGRpciIgPSAiLm5vIiAgJiYgYXhfZW5hYmxlX2J1aWxkZGlyPSIuIgorICAgIHRlc3QgIi4kVEFSR0VUIiA9ICIuIiAmJiBUQVJHRVQ9IiR0YXJnZXQiCisgICAgdGVzdCAiLiRheF9lbmFibGVfYnVpbGRkaXIiID0gIi5hdXRvIiAmJiBheF9lbmFibGVfYnVpbGRkaXI9IiRUQVJHRVQiCisgICAgaWYgdGVzdCAiLiRheF9lbmFibGVfYnVpbGRkaXIiICE9ICIuLiIgOyB0aGVuICAgICMgd2Uga25vdyB3aGVyZSB0byBnbyBhbmQKKyAgICAgIGFzX2Rpcj0kYXhfZW5hYmxlX2J1aWxkZGlyOyBhc19mbl9ta2Rpcl9wCisgICAgICBlY2hvIF9fLiRheF9lbmFibGVfYnVpbGRkaXIuX18gPiAkYXhfZW5hYmxlX2J1aWxkZGlyL2NvbmZ0ZXN0LnRtcAorICAgICAgY2QgJGF4X2VuYWJsZV9idWlsZGRpcgorICAgICAgaWYgZ3JlcCBfXy4kYXhfZW5hYmxlX2J1aWxkZGlyLl9fIGNvbmZ0ZXN0LnRtcCA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgorICAgICAgICBybSBjb25mdGVzdC50bXAKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IGNvbnRpbnVlIGNvbmZpZ3VyZSBpbiBkZWZhdWx0IGJ1aWxkZGlyIFwiLi8kYXhfZW5hYmxlX2J1aWxkZGlyXCIiID4mNQorJGFzX2VjaG8gImNvbnRpbnVlIGNvbmZpZ3VyZSBpbiBkZWZhdWx0IGJ1aWxkZGlyIFwiLi8kYXhfZW5hYmxlX2J1aWxkZGlyXCIiID4mNjsgfQorICAgICAgZWxzZQorICAgICAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNoYW5nZSB0byBkZWZhdWx0IGJ1aWxkZGlyIFwiLi8kYXhfZW5hYmxlX2J1aWxkZGlyXCIiICIkTElORU5PIiA1CisgICAgICBmaQorICAgICAgc3JjZGlyPWBlY2hvICIkYXhfZW5hYmxlX2J1aWxkZGlyIiB8CisgICAgICAgICAgICAgIHNlZCAtZSAncyxeXC4vLCw7cyxbXi9dJCwmLyw7cyxbXi9dKi8sLi4vLGc7cyxbL10kLCw7J2AKKyAgICAgICMgZ29pbmcgdG8gcmVzdGFydCBmcm9tIHN1YmRpcmVjdG9yeSBsb2NhdGlvbgorICAgICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZpZy5sb2cgICAmJiBtdiAkc3JjZGlyL2NvbmZpZy5sb2cgICAuCisgICAgICB0ZXN0IC1mICRzcmNkaXIvY29uZmRlZnMuaCAgICYmIG12ICRzcmNkaXIvY29uZmRlZnMuaCAgIC4KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci9jb25mdGVzdC5sb2cgJiYgbXYgJHNyY2Rpci9jb25mdGVzdC5sb2cgLgorICAgICAgdGVzdCAtZiAkc3JjZGlyLyRjYWNoZV9maWxlICAmJiBtdiAkc3JjZGlyLyRjYWNoZV9maWxlICAuCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogLi4uLmV4ZWMgJFNIRUxMICRzcmNkaXIvJDAgXCItLXNyY2Rpcj0kc3JjZGlyXCIgXCItLWVuYWJsZS1idWlsZGRpcj0kYXhfZW5hYmxlX2J1aWxkZGlyXCIgJHsxK1wiJEBcIn0iID4mNQorJGFzX2VjaG8gIi4uLi5leGVjICRTSEVMTCAkc3JjZGlyLyQwIFwiLS1zcmNkaXI9JHNyY2RpclwiIFwiLS1lbmFibGUtYnVpbGRkaXI9JGF4X2VuYWJsZV9idWlsZGRpclwiICR7MStcIiRAXCJ9IiA+JjY7IH0KKyAgICAgIGNhc2UgIiQwIiBpbiAjIHJlc3RhcnQKKyAgICAgICAvXFwqKSBldmFsICRTSEVMTCAiJyQwJyIgIictLXNyY2Rpcj0kc3JjZGlyJyIgIictLWVuYWJsZS1idWlsZGRpcj0kYXhfZW5hYmxlX2J1aWxkZGlyJyIgJGFjX2NvbmZpZ3VyZV9hcmdzIDs7CisgICAgICAgKikgZXZhbCAkU0hFTEwgIickc3JjZGlyLyQwJyIgIictLXNyY2Rpcj0kc3JjZGlyJyIgIictLWVuYWJsZS1idWlsZGRpcj0kYXhfZW5hYmxlX2J1aWxkZGlyJyIgJGFjX2NvbmZpZ3VyZV9hcmdzIDs7CisgICAgICBlc2FjIDsgZXhpdCAkPworICAgIGZpCisgIGZpCitmaSBmaQordGVzdCAiLiRheF9lbmFibGVfYnVpbGRkaXIiID0gIi5hdXRvIiAmJiBheF9lbmFibGVfYnVpbGRkaXI9Ii4iCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdzZWQgc2VkIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBnc2VkIHNlZDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfYXhfZW5hYmxlX2J1aWxkZGlyX3NlZD0iJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX2F4X2VuYWJsZV9idWlsZGRpcl9zZWQ9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCIgJiYgYWNfY3ZfcGF0aF9heF9lbmFibGVfYnVpbGRkaXJfc2VkPSJzZWQiCisgIDs7Citlc2FjCitmaQorYXhfZW5hYmxlX2J1aWxkZGlyX3NlZD0kYWNfY3ZfcGF0aF9heF9lbmFibGVfYnVpbGRkaXJfc2VkCitpZiB0ZXN0IC1uICIkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9lbmFibGVfYnVpbGRkaXJfc2VkIiA+JjUKKyRhc19lY2hvICIkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyPSIkYW1fYXV4X2RpciIKK2FjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyBidWlsZGlyIgorCisKIGFtX19hcGlfdmVyc2lvbj0nMS4xMScKIAogIyBGaW5kIGEgZ29vZCBpbnN0YWxsIHByb2dyYW0uICBXZSBwcmVmZXIgYSBDIHByb2dyYW0gKGZhc3RlciksCkBAIC0yNzIzLDcgKzI3ODIsNyBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBhIEJTRC1jb21wYXRpYmxlIGluc3RhbGwuLi4gIiA+JjY7IH0KIGlmIHRlc3QgLXogIiRJTlNUQUxMIjsgdGhlbgotaWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wYXRoX2luc3RhbGwrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCkBAIC0yODEwLDExICsyODY5LDExIEBACiAnCiBjYXNlIGBwd2RgIGluCiAgICpbXFxcIlwjXCRcJlwnXGAkYW1fbGZdKikKLSAgICBhc19mbl9lcnJvciAidW5zYWZlIGFic29sdXRlIHdvcmtpbmcgZGlyZWN0b3J5IG5hbWUiICIkTElORU5PIiA1OzsKKyAgICBhc19mbl9lcnJvciAkPyAidW5zYWZlIGFic29sdXRlIHdvcmtpbmcgZGlyZWN0b3J5IG5hbWUiICIkTElORU5PIiA1OzsKIGVzYWMKIGNhc2UgJHNyY2RpciBpbgogICAqW1xcXCJcI1wkXCZcJ1xgJGFtX2xmXCBcCV0qKQotICAgIGFzX2ZuX2Vycm9yICJ1bnNhZmUgc3JjZGlyIHZhbHVlOiBcYCRzcmNkaXInIiAiJExJTkVOTyIgNTs7CisgICAgYXNfZm5fZXJyb3IgJD8gInVuc2FmZSBzcmNkaXIgdmFsdWU6IFxgJHNyY2RpciciICIkTElORU5PIiA1OzsKIGVzYWMKIAogIyBEbyBgc2V0JyBpbiBhIHN1YnNoZWxsIHNvIHdlIGRvbid0IGNsb2JiZXIgdGhlIGN1cnJlbnQgc2hlbGwncwpAQCAtMjgzNiw3ICsyODk1LDcgQEAKICAgICAgICMgaWYsIGZvciBpbnN0YW5jZSwgQ09ORklHX1NIRUxMIGlzIGJhc2ggYW5kIGl0IGluaGVyaXRzIGEKICAgICAgICMgYnJva2VuIGxzIGFsaWFzIGZyb20gdGhlIGVudmlyb25tZW50LiAgVGhpcyBoYXMgYWN0dWFsbHkKICAgICAgICMgaGFwcGVuZWQuICBTdWNoIGEgc3lzdGVtIGNvdWxkIG5vdCBiZSBjb25zaWRlcmVkICJzYW5lIi4KLSAgICAgIGFzX2ZuX2Vycm9yICJscyAtdCBhcHBlYXJzIHRvIGZhaWwuICBNYWtlIHN1cmUgdGhlcmUgaXMgbm90IGEgYnJva2VuCisgICAgICBhc19mbl9lcnJvciAkPyAibHMgLXQgYXBwZWFycyB0byBmYWlsLiAgTWFrZSBzdXJlIHRoZXJlIGlzIG5vdCBhIGJyb2tlbgogYWxpYXMgaW4geW91ciBlbnZpcm9ubWVudCIgIiRMSU5FTk8iIDUKICAgIGZpCiAKQEAgLTI4NDYsNyArMjkwNSw3IEBACiAgICAjIE9rLgogICAgOgogZWxzZQotICAgYXNfZm5fZXJyb3IgIm5ld2x5IGNyZWF0ZWQgZmlsZSBpcyBvbGRlciB0aGFuIGRpc3RyaWJ1dGVkIGZpbGVzIQorICAgYXNfZm5fZXJyb3IgJD8gIm5ld2x5IGNyZWF0ZWQgZmlsZSBpcyBvbGRlciB0aGFuIGRpc3RyaWJ1dGVkIGZpbGVzIQogQ2hlY2sgeW91ciBzeXN0ZW0gY2xvY2siICIkTElORU5PIiA1CiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CkBAIC0yODYxLDkgKzI5MjAsNiBAQAogYWNfc2NyaXB0PSdzL1tcXCRdLyYmL2c7cy87cyx4LHgsJC8vJwogcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT1gJGFzX2VjaG8gIiRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIiB8IHNlZCAiJGFjX3NjcmlwdCJgCiAKLSMgZXhwYW5kICRhY19hdXhfZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKLWFtX2F1eF9kaXI9YGNkICRhY19hdXhfZGlyICYmIHB3ZGAKLQogaWYgdGVzdCB4IiR7TUlTU0lORytzZXR9IiAhPSB4c2V0OyB0aGVuCiAgIGNhc2UgJGFtX2F1eF9kaXIgaW4KICAgKlwgKiB8ICpcCSopCkBAIC0yOTAwLDcgKzI5NTYsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX1NUUklQK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19TVFJJUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4KQEAgLTI5NDAsNyArMjk5Niw3IEBACiBzZXQgZHVtbXkgc3RyaXA7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X1NUUklQK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9TVFJJUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9TVFJJUCI7IHRoZW4KQEAgLTI5OTMsNyArMzA0OSw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIHRocmVhZC1zYWZlIG1rZGlyIC1wIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBhIHRocmVhZC1zYWZlIG1rZGlyIC1wLi4uICIgPiY2OyB9CiBpZiB0ZXN0IC16ICIkTUtESVJfUCI7IHRoZW4KLSAgaWYgdGVzdCAiJHthY19jdl9wYXRoX21rZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgaWYgJHthY19jdl9wYXRoX21rZGlyKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpAQCAtMzA0NCw3ICszMTAwLDcgQEAKIHNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVdLK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19BV0srOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkQVdLIjsgdGhlbgpAQCAtMzA4NCw3ICszMTQwLDcgQEAKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCQoTUFLRSkuLi4gIiA+JjY7IH0KIHNldCB4ICR7TUFLRS1tYWtlfQogYWNfbWFrZT1gJGFzX2VjaG8gIiQyIiB8IHNlZCAncy8rL3AvZzsgcy9bXmEtekEtWjAtOV9dL18vZydgCi1pZiB7IGFzX3Zhcj1hY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ7IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgoraWYgZXZhbCBcJHthY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0Lm1ha2UgPDxcX0FDRU9GCkBAIC0zMDkyLDcgKzMxNDgsNyBAQAogYWxsOgogCUBlY2hvICdAQEAlJSU9JChNQUtFKT1AQEAlJSUnCiBfQUNFT0YKLSMgR05VIG1ha2Ugc29tZXRpbWVzIHByaW50cyAibWFrZVsxXTogRW50ZXJpbmcuLi4iLCB3aGljaCB3b3VsZCBjb25mdXNlIHVzLgorIyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRlcmluZyAuLi4iLCB3aGljaCB3b3VsZCBjb25mdXNlIHVzLgogY2FzZSBgJHtNQUtFLW1ha2V9IC1mIGNvbmZ0ZXN0Lm1ha2UgMj4vZGV2L251bGxgIGluCiAgICpAQEAlJSU9Pyo9QEBAJSUlKikKICAgICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD15ZXM7OwpAQCAtMzEyNiw3ICszMTgyLDcgQEAKICAgYW1fX2lzcmM9JyAtSSQoc3JjZGlyKScKICAgIyB0ZXN0IHRvIHNlZSBpZiBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkCiAgIGlmIHRlc3QgLWYgJHNyY2Rpci9jb25maWcuc3RhdHVzOyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgInNvdXJjZSBkaXJlY3RvcnkgYWxyZWFkeSBjb25maWd1cmVkOyBydW4gXCJtYWtlIGRpc3RjbGVhblwiIHRoZXJlIGZpcnN0IiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICJzb3VyY2UgZGlyZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZDsgcnVuIFwibWFrZSBkaXN0Y2xlYW5cIiB0aGVyZSBmaXJzdCIgIiRMSU5FTk8iIDUKICAgZmkKIGZpCiAKQEAgLTMxNDIsNyArMzE5OCw3IEBACiAKICMgRGVmaW5lIHRoZSBpZGVudGl0eSBvZiB0aGUgcGFja2FnZS4KICBQQUNLQUdFPSdsaWJmZmknCi0gVkVSU0lPTj0nMy4wLjEwcmMwJworIFZFUlNJT049JzMuMC4xMScKIAogCiBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCkBAIC0zMTcyLDExICszMjI4LDExIEBACiAKICMgV2UgbmVlZCBhd2sgZm9yIHRoZSAiY2hlY2siIHRhcmdldC4gIFRoZSBzeXN0ZW0gImF3ayIgaXMgYmFkIG9uCiAjIHNvbWUgcGxhdGZvcm1zLgotIyBBbHdheXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorIyBBbHdheXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAgWWVzLCBpdCdzIHN0aWxsIHVzZWQKKyMgaW4gdGhlIHdpbGQgOi0oICBXZSBzaG91bGQgZmluZCBhIHByb3BlciB3YXkgdG8gZGVwcmVjYXRlIGl0IC4uLgorQU1UQVI9JyQke1RBUi10YXJ9JwogCi1BTVRBUj0ke0FNVEFSLSIke2FtX21pc3NpbmdfcnVufXRhciJ9Ci0KLWFtX190YXI9JyR7QU1UQVJ9IGNob2YgLSAiJCR0YXJkaXIiJzsgYW1fX3VudGFyPScke0FNVEFSfSB4ZiAtJworYW1fX3Rhcj0nJCR7VEFSLXRhcn0gY2hvZiAtICIkJHRhcmRpciInIGFtX191bnRhcj0nJCR7VEFSLXRhcn0geGYgLScKIAogCiAKQEAgLTMxODcsOSArMzI0MywxMiBAQAogIyBXZSBtdXN0IGZvcmNlIENDIHRvIC9ub3QvIGJlIHByZWNpb3VzIHZhcmlhYmxlczsgb3RoZXJ3aXNlCiAjIHRoZSB3cm9uZywgbm9uLW11bHRpbGliLWFkanVzdGVkIHZhbHVlIHdpbGwgYmUgdXNlZCBpbiBtdWx0aWxpYnMuCiAjIEFzIGEgc2lkZSBlZmZlY3QsIHdlIGhhdmUgdG8gc3Vic3QgQ0ZMQUdTIG91cnNlbHZlcy4KKyMgQWxzbyBzYXZlIGFuZCByZXN0b3JlIENGTEFHUywgc2luY2UgQUNfUFJPR19DQyB3aWxsIGNvbWUgdXAgd2l0aAorIyBkZWZhdWx0cyBvZiBpdHMgb3duIGlmIG5vbmUgYXJlIHByb3ZpZGVkLgogCiAKIAorc2F2ZV9DRkxBR1M9JENGTEFHUwogYWNfZXh0PWMKIGFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCiBhY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCkBAIC0zMjAwLDcgKzMyNTksNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Z2NjOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCkBAIC0zMjQwLDcgKzMyOTksNyBAQAogc2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X0NDKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgpAQCAtMzI5Myw3ICszMzUyLDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNjOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCkBAIC0zMzMzLDcgKzMzOTIsNyBAQAogc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCkBAIC0zMzkyLDcgKzM0NTEsNyBAQAogc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCkBAIC0zNDM2LDcgKzM0OTUsNyBAQAogc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfQ0MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCkBAIC0zNDkwLDggKzM1NDksOCBAQAogCiB0ZXN0IC16ICIkQ0MiICYmIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgQyBjb21waWxlciBmb3VuZCBpbiBcJFBBVEgKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfQorYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgQyBjb21waWxlciBmb3VuZCBpbiBcJFBBVEgKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiAKICMgUHJvdmlkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb21waWxlci4KICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIHZlcnNpb24iID4mNQpAQCAtMzYwNSw5ICszNjY0LDggQEAKIAogeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci17IGFzX2ZuX3NldF9zdGF0dXMgNzcKLWFzX2ZuX2Vycm9yICJDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfTsgfQorYXNfZm5fZXJyb3IgNzcgIkMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVjdXRhYmxlcworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiAkYXNfZWNobyAieWVzIiA+JjY7IH0KQEAgLTM2NDksOCArMzcwNyw4IEBACiBlbHNlCiAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgImNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBleGVjdXRhYmxlczogY2Fubm90IGNvbXBpbGUgYW5kIGxpbmsKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfQorYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBleGVjdXRhYmxlczogY2Fubm90IGNvbXBpbGUgYW5kIGxpbmsKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiBmaQogcm0gLWYgY29uZnRlc3QgY29uZnRlc3QkYWNfY3ZfZXhlZXh0CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2V4ZWV4dCIgPiY1CkBAIC0zNzA3LDkgKzM3NjUsOSBAQAogICAgIGVsc2UKIAl7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICJjYW5ub3QgcnVuIEMgY29tcGlsZWQgcHJvZ3JhbXMuCithc19mbl9lcnJvciAkPyAiY2Fubm90IHJ1biBDIGNvbXBpbGVkIHByb2dyYW1zLgogSWYgeW91IG1lYW50IHRvIGNyb3NzIGNvbXBpbGUsIHVzZSBcYC0taG9zdCcuCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH0KK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiAgICAgZmkKICAgZmkKIGZpCkBAIC0zNzIwLDcgKzM3NzgsNyBAQAogYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3Zfb2JqZXh0K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3Zfb2JqZXh0Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMzc2MCw4ICszODE4LDggQEAKIAogeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAiY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIG9iamVjdCBmaWxlczogY2Fubm90IGNvbXBpbGUKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfQorYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXM6IGNhbm5vdCBjb21waWxlCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogZmkKIHJtIC1mIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKQEAgLTM3NzEsNyArMzgyOSw3IEBACiBhY19vYmpleHQ9JE9CSkVYVAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2NfY29tcGlsZXJfZ251K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfY19jb21waWxlcl9nbnUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0zODA4LDcgKzM4NjYsNyBAQAogYWNfc2F2ZV9DRkxBR1M9JENGTEFHUwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWcuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jY19nK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19jY19nKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfc2F2ZV9jX3dlcnJvcl9mbGFnPSRhY19jX3dlcnJvcl9mbGFnCkBAIC0zODg2LDcgKzM5NDQsNyBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IElTTyBDODkiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IElTTyBDODkuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jY19jODkrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2NjX2M4OSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2N2X3Byb2dfY2NfYzg5PW5vCkBAIC00MDMyLDYgKzQwOTAsNyBAQAogaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuCiAgIGFtX2RlcGNvbXA9IiRhY19hdXhfZGlyL2RlcGNvbXAiCiAgIEFNREVQQkFDS1NMQVNIPSdcJworICBhbV9fbm9kZXA9J19ubycKIGZpCiAgaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuCiAgIEFNREVQX1RSVUU9CkBAIC00MDQ3LDcgKzQxMDYsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGRlcGVuZGVuY3kgc3R5bGUgb2YgJGRlcGNjIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGRlcGVuZGVuY3kgc3R5bGUgb2YgJGRlcGNjLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC16ICIkQU1ERVBfVFJVRSIgJiYgdGVzdCAtZiAiJGFtX2RlcGNvbXAiOyB0aGVuCkBAIC00MDU2LDYgKzQxMTUsNyBAQAogICAjIGluc3RhbmNlIGl0IHdhcyByZXBvcnRlZCB0aGF0IG9uIEhQLVVYIHRoZSBnY2MgdGVzdCB3aWxsIGVuZCB1cAogICAjIG1ha2luZyBhIGR1bW15IGZpbGUgbmFtZWQgYEQnIC0tIGJlY2F1c2UgYC1NRCcgbWVhbnMgYHB1dCB0aGUgb3V0cHV0CiAgICMgaW4gRCcuCisgIHJtIC1yZiBjb25mdGVzdC5kaXIKICAgbWtkaXIgY29uZnRlc3QuZGlyCiAgICMgQ29weSBkZXBjb21wIHRvIHN1YmRpciBiZWNhdXNlIG90aGVyd2lzZSB3ZSB3b24ndCBmaW5kIGl0IGlmIHdlJ3JlCiAgICMgdXNpbmcgYSByZWxhdGl2ZSBkaXJlY3RvcnkuCkBAIC00MTE1LDcgKzQxNzUsNyBAQAogCWJyZWFrCiAgICAgICBmaQogICAgICAgOzsKLSAgICBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQorICAgIG1zdmM3IHwgbXN2Yzdtc3lzIHwgbXN2aXN1YWxjcHAgfCBtc3ZjbXN5cykKICAgICAgICMgVGhpcyBjb21waWxlciB3b24ndCBncm9rIGAtYyAtbycsIGJ1dCBhbHNvLCB0aGUgbWludXNvIHRlc3QgaGFzCiAgICAgICAjIG5vdCBydW4geWV0LiAgVGhlc2UgZGVwbW9kZXMgYXJlIGxhdGUgZW5vdWdoIGluIHRoZSBnYW1lLCBhbmQKICAgICAgICMgc28gd2VhayB0aGF0IHRoZWlyIGZ1bmN0aW9uaW5nIHNob3VsZCBub3QgYmUgaW1wYWN0ZWQuCkBAIC00MTcwLDYgKzQyMzAsNyBAQAogZmkKIAogCitDRkxBR1M9JHNhdmVfQ0ZMQUdTCiAKIAogCkBAIC00MTg2LDcgKzQyNDcsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGRlcGVuZGVuY3kgc3R5bGUgb2YgJGRlcGNjIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGRlcGVuZGVuY3kgc3R5bGUgb2YgJGRlcGNjLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FtX2N2X0NDQVNfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthbV9jdl9DQ0FTX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAteiAiJEFNREVQX1RSVUUiICYmIHRlc3QgLWYgIiRhbV9kZXBjb21wIjsgdGhlbgpAQCAtNDE5NSw2ICs0MjU2LDcgQEAKICAgIyBpbnN0YW5jZSBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBvbiBIUC1VWCB0aGUgZ2NjIHRlc3Qgd2lsbCBlbmQgdXAKICAgIyBtYWtpbmcgYSBkdW1teSBmaWxlIG5hbWVkIGBEJyAtLSBiZWNhdXNlIGAtTUQnIG1lYW5zIGBwdXQgdGhlIG91dHB1dAogICAjIGluIEQnLgorICBybSAtcmYgY29uZnRlc3QuZGlyCiAgIG1rZGlyIGNvbmZ0ZXN0LmRpcgogICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3QgZmluZCBpdCBpZiB3ZSdyZQogICAjIHVzaW5nIGEgcmVsYXRpdmUgZGlyZWN0b3J5LgpAQCAtNDI1Miw3ICs0MzE0LDcgQEAKIAlicmVhawogICAgICAgZmkKICAgICAgIDs7Ci0gICAgbXN2aXN1YWxjcHAgfCBtc3ZjbXN5cykKKyAgICBtc3ZjNyB8IG1zdmM3bXN5cyB8IG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpCiAgICAgICAjIFRoaXMgY29tcGlsZXIgd29uJ3QgZ3JvayBgLWMgLW8nLCBidXQgYWxzbywgdGhlIG1pbnVzbyB0ZXN0IGhhcwogICAgICAgIyBub3QgcnVuIHlldC4gIFRoZXNlIGRlcG1vZGVzIGFyZSBsYXRlIGVub3VnaCBpbiB0aGUgZ2FtZSwgYW5kCiAgICAgICAjIHNvIHdlYWsgdGhhdCB0aGVpciBmdW5jdGlvbmluZyBzaG91bGQgbm90IGJlIGltcGFjdGVkLgpAQCAtNDMxNiw3ICs0Mzc4LDcgQEAKIGZpCiBzZXQgZHVtbXkgJENDOyBhY19jYz1gJGFzX2VjaG8gIiQyIiB8CiAJCSAgICAgIHNlZCAncy9bXmEtekEtWjAtOV9dL18vZztzL15bMC05XS9fLydgCi1pZiB7IGFzX3Zhcj1hY19jdl9wcm9nX2NjXyR7YWNfY2N9X2NfbzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CitpZiBldmFsIFwke2FjX2N2X3Byb2dfY2NfJHthY19jY31fY19vKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtNDQ0MSw4ICs0NTAzLDggQEAKIAogCiAKLW1hY3JvX3ZlcnNpb249JzIuMi42JwotbWFjcm9fcmV2aXNpb249JzEuMzAxMicKK21hY3JvX3ZlcnNpb249JzIuNC4yJworbWFjcm9fcmV2aXNpb249JzEuMzMzNycKIAogCiAKQEAgLTQ0NTgsOSArNDUyMCw3OCBAQAogCiBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKIAorIyBCYWNrc2xhc2hpZnkgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbgorIyBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCitzZWRfcXVvdGVfc3Vic3Q9J3MvXChbImAkXFxdXCkvXFxcMS9nJworCisjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KK2RvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFsiYFxcXVwpL1xcXDEvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNoZWxsIHZhcmlhYmxlIGluIGEKKyMgZG91YmxlX3F1b3RlX3N1YnN0J2VkIHN0cmluZy4KK2RlbGF5X3ZhcmlhYmxlX3N1YnN0PSdzL1xcXFxcXFxcXFxcJC9cXFxcXFwkL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaW5nbGUgcXVvdGUuCitkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3Q9J3MvJ1wnJy8nXCdcXFxcXFxcJ1wnJy9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gYXZvaWQgYWNjaWRlbnRhbCBnbG9iYmluZyBpbiBldmFsZWQgZXhwcmVzc2lvbnMKK25vX2dsb2Jfc3Vic3Q9J3MvXCovXFxcKi9nJworCitFQ0hPPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJworRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCitFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgRUNITz0ncHJpbnQgLXIgLS0nCitlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICBFQ0hPPSdwcmludGYgJXNcbicKK2Vsc2UKKyAgIyBVc2UgdGhpcyBmdW5jdGlvbiBhcyBhIGZhbGxiYWNrIHRoYXQgYWx3YXlzIHdvcmtzLgorICBmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKKyAgeworICAgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCiskMQorX0xURUNIT19FT0YnCisgIH0KKyAgRUNITz0nZnVuY19mYWxsYmFja19lY2hvJworZmkKKworIyBmdW5jX2VjaG9fYWxsIGFyZy4uLgorIyBJbnZva2UgJEVDSE8gd2l0aCBhbGwgYXJncywgc3BhY2Utc2VwYXJhdGVkLgorZnVuY19lY2hvX2FsbCAoKQoreworICAgICRFQ0hPICIiCit9CisKK2Nhc2UgIiRFQ0hPIiBpbgorICBwcmludGYqKSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogcHJpbnRmIiA+JjUKKyRhc19lY2hvICJwcmludGYiID4mNjsgfSA7OworICBwcmludCopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBwcmludCAtciIgPiY1CiskYXNfZWNobyAicHJpbnQgLXIiID4mNjsgfSA7OworICAqKSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogY2F0IiA+JjUKKyRhc19lY2hvICJjYXQiID4mNjsgfSA7OworZXNhYworCisKKworCisKKworCisKKworCisKKworCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wYXRoX1NFRCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3BhdGhfU0VEKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgICAgICAgICAgIGFjX3NjcmlwdD1zL2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhL2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYi8KQEAgLTQ1MTUsNyArNDY0Niw3IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKICAgaWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfU0VEIjsgdGhlbgotICAgIGFzX2ZuX2Vycm9yICJubyBhY2NlcHRhYmxlIHNlZCBjb3VsZCBiZSBmb3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgc2VkIGNvdWxkIGJlIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKICAgZmkKIGVsc2UKICAgYWNfY3ZfcGF0aF9TRUQ9JFNFRApAQCAtNDU0Miw3ICs0NjczLDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3BhdGhfR1JFUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3BhdGhfR1JFUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLXogIiRHUkVQIjsgdGhlbgpAQCAtNDU5MSw3ICs0NzIyLDcgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9HUkVQIjsgdGhlbgotICAgIGFzX2ZuX2Vycm9yICJubyBhY2NlcHRhYmxlIGdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQogICBmaQogZWxzZQogICBhY19jdl9wYXRoX0dSRVA9JEdSRVAKQEAgLTQ2MDUsNyArNDczNiw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGVncmVwIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBlZ3JlcC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wYXRoX0VHUkVQK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9FR1JFUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIGVjaG8gYSB8ICRHUkVQIC1FICcoYXxiKScgPi9kZXYvbnVsbCAyPiYxCkBAIC00NjU3LDcgKzQ3ODgsNyBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0VHUkVQIjsgdGhlbgotICAgIGFzX2ZuX2Vycm9yICJubyBhY2NlcHRhYmxlIGVncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBlZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CiAgIGZpCiBlbHNlCiAgIGFjX2N2X3BhdGhfRUdSRVA9JEVHUkVQCkBAIC00NjcyLDcgKzQ4MDMsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBmZ3JlcCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZmdyZXAuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9GR1JFUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3BhdGhfRkdSRVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiBlY2hvICdhYipjJyB8ICRHUkVQIC1GICdhYipjJyA+L2Rldi9udWxsIDI+JjEKQEAgLTQ3MjQsNyArNDg1NSw3IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKICAgaWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfRkdSRVAiOyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgZmdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGZncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKICAgZmkKIGVsc2UKICAgYWNfY3ZfcGF0aF9GR1JFUD0kRkdSRVAKQEAgLTQ4MDMsNyArNDkzNCw3IEBACiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG5vbi1HTlUgbGQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG5vbi1HTlUgbGQuLi4gIiA+JjY7IH0KIGZpCi1pZiB0ZXN0ICIke2x0X2N2X3BhdGhfTEQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wYXRoX0xEKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAteiAiJExEIjsgdGhlbgpAQCAtNDg0MCwxMCArNDk3MSwxMCBAQAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCi10ZXN0IC16ICIkTEQiICYmIGFzX2ZuX2Vycm9yICJubyBhY2NlcHRhYmxlIGxkIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKK3Rlc3QgLXogIiRMRCIgJiYgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgbGQgZm91bmQgaW4gXCRQQVRIIiAiJExJTkVOTyIgNQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wcm9nX2dudV9sZCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3Byb2dfZ251X2xkKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgIyBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24gaGVyZSwgYnV0IGFwcGFyZW50bHkgc29tZSBHTlUgbGRzIG9ubHkgYWNjZXB0IC12LgpAQCAtNDg3MCw3ICs1MDAxLDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQlNELSBvciBNUy1jb21wYXRpYmxlIG5hbWUgbGlzdGVyIChubSkiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEJTRC0gb3IgTVMtY29tcGF0aWJsZSBuYW1lIGxpc3RlciAobm0pLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3BhdGhfTk0rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wYXRoX05NKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJE5NIjsgdGhlbgpAQCAtNDkyMywxNCArNTA1NCwxNyBAQAogICBOTT0iJGx0X2N2X3BhdGhfTk0iCiBlbHNlCiAgICMgRGlkbid0IGZpbmQgYW55IEJTRCBjb21wYXRpYmxlIG5hbWUgbGlzdGVyLCBsb29rIGZvciBkdW1wYmluLgotICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gIGZvciBhY19wcm9nIGluICJkdW1wYmluIC1zeW1ib2xzIiAibGluayAtZHVtcCAtc3ltYm9scyIKKyAgaWYgdGVzdCAtbiAiJERVTVBCSU4iOyB0aGVuIDoKKyAgICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKyAgZWxzZQorICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gZHVtcGJpbiAibGluayAtZHVtcCIKICAgZG8KICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfRFVNUEJJTitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfRFVNUEJJTis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiREVU1QQklOIjsgdGhlbgpAQCAtNDk2OCwxMyArNTEwMiwxMyBAQAogZmkKIGlmIHRlc3QgLXogIiREVU1QQklOIjsgdGhlbgogICBhY19jdF9EVU1QQklOPSREVU1QQklOCi0gIGZvciBhY19wcm9nIGluICJkdW1wYmluIC1zeW1ib2xzIiAibGluayAtZHVtcCAtc3ltYm9scyIKKyAgZm9yIGFjX3Byb2cgaW4gZHVtcGJpbiAibGluayAtZHVtcCIKIGRvCiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9EVU1QQklOK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9EVU1QQklOKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X0RVTVBCSU4iOyB0aGVuCkBAIC01MDIzLDYgKzUxNTcsMTUgQEAKICAgZmkKIGZpCiAKKyAgICBjYXNlIGAkRFVNUEJJTiAtc3ltYm9scyAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgorICAgICpDT0ZGKikKKyAgICAgIERVTVBCSU49IiREVU1QQklOIC1zeW1ib2xzIgorICAgICAgOzsKKyAgICAqKQorICAgICAgRFVNUEJJTj06CisgICAgICA7OworICAgIGVzYWMKKyAgZmkKIAogICBpZiB0ZXN0ICIkRFVNUEJJTiIgIT0gIjoiOyB0aGVuCiAgICAgTk09IiREVU1QQklOIgpAQCAtNTAzNywxOCArNTE4MCwxOCBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRoZSBuYW1lIGxpc3RlciAoJE5NKSBpbnRlcmZhY2UiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgdGhlIG5hbWUgbGlzdGVyICgkTk0pIGludGVyZmFjZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9ubV9pbnRlcmZhY2Urc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9ubV9pbnRlcmZhY2UrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9ubV9pbnRlcmZhY2U9IkJTRCBubSIKICAgZWNobyAiaW50IHNvbWVfdmFyaWFibGUgPSAwOyIgPiBjb25mdGVzdC4kYWNfZXh0Ci0gIChldmFsIGVjaG8gIlwiXCRhc19tZTo1MDQ1OiAkYWNfY29tcGlsZVwiIiA+JjUpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkYWNfY29tcGlsZVwiIiA+JjUpCiAgIChldmFsICIkYWNfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIChldmFsIGVjaG8gIlwiXCRhc19tZTo1MDQ4OiAkTk0gXFxcImNvbmZ0ZXN0LiRhY19vYmpleHRcXFwiXCIiID4mNSkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICROTSBcXFwiY29uZnRlc3QuJGFjX29iamV4dFxcXCJcIiIgPiY1KQogICAoZXZhbCAiJE5NIFwiY29uZnRlc3QuJGFjX29iamV4dFwiIiAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dCkKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjUwNTE6IG91dHB1dFwiIiA+JjUpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiBvdXRwdXRcIiIgPiY1KQogICBjYXQgY29uZnRlc3Qub3V0ID4mNQogICBpZiAkR1JFUCAnRXh0ZXJuYWwuKnNvbWVfdmFyaWFibGUnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgogICAgIGx0X2N2X25tX2ludGVyZmFjZT0iTVMgZHVtcGJpbiIKQEAgLTUwNzIsNyArNTIxNSw3IEBACiAjIGZpbmQgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3Zfc3lzX21heF9jbWRfbGVuK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3Zfc3lzX21heF9jbWRfbGVuKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgICBpPTAKQEAgLTUxMDUsNiArNTI0OCwxMSBAQAogICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyOwogICAgIDs7CiAKKyAgbWludCopCisgICAgIyBPbiBNaU5UIHRoaXMgY2FuIHRha2UgYSBsb25nIHRpbWUgYW5kIHJ1biBvdXQgb2YgbWVtb3J5LgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyOworICAgIDs7CisKICAgYW1pZ2FvcyopCiAgICAgIyBPbiBBbWlnYU9TIHdpdGggcGRrc2gsIHRoaXMgdGVzdCB0YWtlcyBob3VycywgbGl0ZXJhbGx5LgogICAgICMgU28gd2UganVzdCBwdW50IGFuZCB1c2UgYSBtaW5pbXVtIGxpbmUgbGVuZ3RoIG9mIDgxOTIuCkBAIC01MTMwLDYgKzUyNzgsMTEgQEAKICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49MTk2NjA4CiAgICAgOzsKIAorICBvczIqKQorICAgICMgVGhlIHRlc3QgdGFrZXMgYSBsb25nIHRpbWUgb24gT1MvMi4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MgorICAgIDs7CisKICAgb3NmKikKICAgICAjIERyLiBIYW5zIEVra2VoYXJkIFBsZXNzZXIgcmVwb3J0cyBzZWVpbmcgYSBrZXJuZWwgcGFuaWMgcnVubmluZyBjb25maWd1cmUKICAgICAjIGR1ZSB0byB0aGlzIHRlc3Qgd2hlbiBleGVjX2Rpc2FibGVfYXJnX2xpbWl0IGlzIDEgb24gVHJ1NjQuIEl0IGlzIG5vdApAQCAtNTE2OSw4ICs1MzIyLDggQEAKICAgICAgICMgSWYgdGVzdCBpcyBub3QgYSBzaGVsbCBidWlsdC1pbiwgd2UnbGwgcHJvYmFibHkgZW5kIHVwIGNvbXB1dGluZyBhCiAgICAgICAjIG1heGltdW0gbGVuZ3RoIHRoYXQgaXMgb25seSBoYWxmIG9mIHRoZSBhY3R1YWwgbWF4aW11bSBsZW5ndGgsIGJ1dAogICAgICAgIyB3ZSBjYW4ndCB0ZWxsLgotICAgICAgd2hpbGUgeyB0ZXN0ICJYImAkU0hFTEwgJDAgLS1mYWxsYmFjay1lY2hvICJYJHRlc3RzdHJpbmckdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKLQkgICAgICAgICA9ICJYWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgorICAgICAgd2hpbGUgeyB0ZXN0ICJYImBlbnYgZWNobyAiJHRlc3RzdHJpbmckdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKKwkgICAgICAgICA9ICJYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCiAJICAgICAgdGVzdCAkaSAhPSAxNyAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCiAgICAgICBkbwogICAgICAgICBpPWBleHByICRpICsgMWAKQEAgLTUyMTIsOCArNTM2NSw4IEBACiAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwogeHNpX3NoZWxsPW5vCiAoIF9sdF9kdW1teT0iYS9iL2MiCi0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0gICAgICA9IGMsYS9iLCwgXAorICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorICAgICAgPSBjLGEvYixiL2MsIFwKICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCiAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKICAgJiYgeHNpX3NoZWxsPXllcwpAQCAtNTI2Miw5ICs1NDE1LDgzIEBACiAKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgICA7OworICAgICAgKi0qLWN5Z3dpbiogKQorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKyAgICAgICAgOzsKKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgICotKi1jeWd3aW4qICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisgICAgICAgIDs7CisgICAgICAqLSotY3lnd2luKiApCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorICAgICAgICA7OworICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKyAgICA7OworZXNhYworCitmaQorCit0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKworCisKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCitjYXNlICRob3N0IGluCisgICotKi1taW5ndyogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKK2VzYWMKKworZmkKKwordG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisKKworCisKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X2xkX3JlbG9hZF9mbGFnPSctcicKQEAgLTUyNzgsNiArNTUwNSwxMSBAQAogZXNhYwogcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogY2FzZSAkaG9zdF9vcyBpbgorICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgICByZWxvYWRfY21kcz1mYWxzZQorICAgIGZpCisgICAgOzsKICAgZGFyd2luKikKICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwpAQCAtNTMwMCw3ICs1NTMyLDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9iamR1bXA7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX09CSkRVTVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX09CSkRVTVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkT0JKRFVNUCI7IHRoZW4KQEAgLTUzNDAsNyArNTU3Miw3IEBACiBzZXQgZHVtbXkgb2JqZHVtcDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0JKRFVNUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfT0JKRFVNUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9PQkpEVU1QIjsgdGhlbgpAQCAtNTM5OSw3ICs1NjMxLDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcmVjb2duaXplIGRlcGVuZGVudCBsaWJyYXJpZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHJlY29nbml6ZSBkZXBlbmRlbnQgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE1BR0lDX0NNRCcKQEAgLTU0NDEsMTYgKzU2NzMsMTggQEAKICAgIyBCYXNlIE1TWVMvTWluR1cgZG8gbm90IHByb3ZpZGUgdGhlICdmaWxlJyBjb21tYW5kIG5lZWRlZCBieQogICAjIGZ1bmNfd2luMzJfbGliaWQgc2hlbGwgZnVuY3Rpb24sIHNvIHVzZSBhIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJywKICAgIyB1bmxlc3Mgd2UgZmluZCAnZmlsZScsIGZvciBleGFtcGxlIGJlY2F1c2Ugd2UgYXJlIGNyb3NzLWNvbXBpbGluZy4KLSAgaWYgKCBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgIyBmdW5jX3dpbjMyX2xpYmlkIGFzc3VtZXMgQlNEIG5tLCBzbyBkaXNhbGxvdyBpdCBpZiB1c2luZyBNUyBkdW1wYmluLgorICBpZiAoIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIkJTRCBubSIgJiYgZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgZWxzZQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCiAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICBmaQogICA7OwogCi1jZWdjYykKK2NlZ2NjKikKICAgIyB1c2UgdGhlIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJy4gU2VlIG1pbmd3Ki4KICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGUtYXJtLS4qbGl0dGxlKC4qYXJjaGl0ZWN0dXJlOiBhcm0pPycKICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwpAQCAtNTQ4MCw2ICs1NzE0LDEwIEBACiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKK2hhaWt1KikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKwogaHB1eDEwLjIwKiB8IGhwdXgxMSopCiAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPS91c3IvYmluL2ZpbGUKICAgY2FzZSAkaG9zdF9jcHUgaW4KQEAgLTU0ODgsMTEgKzU3MjYsMTEgQEAKICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9ocHV4MzIvbGliYy5zbwogICAgIDs7CiAgIGhwcGEqNjQqKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzWzAtOV1bMC05XVswLTldfEVMRi1bMC05XVswLTldKSBzaGFyZWQgb2JqZWN0IGZpbGUgLSBQQS1SSVNDIFswLTldLlswLTldJworICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzWzAtOV1bMC05XVswLTldfEVMRlsgLV1bMC05XVswLTldKSgtYml0KT8oIFtMTV1TQik/IHNoYXJlZCBvYmplY3QoIGZpbGUpP1ssIC1dKiBQQS1SSVNDIFswLTldXC5bMC05XScKICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9wYTIwXzY0L2xpYmMuc2wKICAgICA7OwogICAqKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzWzAtOV1bMC05XVswLTldfFBBLVJJU0NbMC05XS5bMC05XSkgc2hhcmVkIGxpYnJhcnknCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18UEEtUklTQ1swLTldXC5bMC05XSkgc2hhcmVkIGxpYnJhcnknCiAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvbGliYy5zbAogICAgIDs7CiAgIGVzYWMKQEAgLTU1MTMsMTIgKzU3NTEsMTIgQEAKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAotIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotbGludXgqIHwgaypic2QqLWdudSkKKyMgVGhpcyBtdXN0IGJlIGdsaWJjL0VMRi4KK2xpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAotbmV0YnNkKikKK25ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfF9waWNcLmEpJCcKICAgZWxzZQpAQCAtNTU5NSw2ICs1ODMzLDIxIEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CiAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKworZmlsZV9tYWdpY19nbG9iPQord2FudF9ub2Nhc2VnbG9iPW5vCitpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorICBjYXNlICRob3N0X29zIGluCisgIG1pbmd3KiB8IHB3MzIqKQorICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKyAgICBlbHNlCisgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorICAgIGZpCisgICAgOzsKKyAgZXNhYworZmkKKwogZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCiBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgpAQCAtNTYxMCwxMiArNTg2MywxNjYgQEAKIAogCiAKKworCisKKworCisKKworCisKKwogaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorICBhY19jdF9ETExUT09MPSRETExUT09MCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisgICAgRExMVE9PTD0iZmFsc2UiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorICBmaQorZWxzZQorICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorZmkKKwordGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorCisKKworCisKKworCisKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworCitjYXNlICRob3N0X29zIGluCitjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKyAgICA7OworICAqKQorICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworICAgIDs7CisgIGVzYWMKKyAgOzsKKyopCisgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisgIDs7Citlc2FjCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCit0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisKKworCisKKworCisKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBhcgorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRBUiI7IHRoZW4KQEAgLTU2MjgsNyArNjAzNSw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKICAgZmkKQEAgLTU2NDgsMTQgKzYwNTUsMTggQEAKIGZpCiAKIAorICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKyAgZG9uZQogZmkKLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgoraWYgdGVzdCAteiAiJEFSIjsgdGhlbgogICBhY19jdF9BUj0kQVIKLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKyAgZm9yIGFjX3Byb2cgaW4gYXIKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuCkBAIC01NjY4LDcgKzYwNzksNyBAQAogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTY4Nyw2ICs2MDk4LDEwIEBACiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAorCisgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKK2RvbmUKKwogICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KICAgICBBUj0iZmFsc2UiCiAgIGVsc2UKQEAgLTU2OTgsMTIgKzYxMTMsMTAgQEAKIGVzYWMKICAgICBBUj0kYWNfY3RfQVIKICAgZmkKLWVsc2UKLSAgQVI9IiRhY19jdl9wcm9nX0FSIgogZmkKIAotdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKzogJHtBUj1hcn0KKzogJHtBUl9GTEFHUz1jcnV9CiAKIAogCkBAIC01NzE1LDEyICs2MTI4LDcwIEBACiAKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CitpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9hcl9hdF9maWxlPW5vCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorICAgICAgICBmaQorICAgICAgZmkKKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKworaWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorICBhcmNoaXZlcl9saXN0X3NwZWM9CitlbHNlCisgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorZmkKKworCisKKworCisKKwogaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX1NUUklQK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19TVFJJUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4KQEAgLTU3NjAsNyArNjIzMSw3IEBACiBzZXQgZHVtbXkgc3RyaXA7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X1NUUklQK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9TVFJJUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9TVFJJUCI7IHRoZW4KQEAgLTU4MTksNyArNjI5MCw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1yYW5saWI7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX1JBTkxJQitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfUkFOTElCKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KQEAgLTU4NTksNyArNjMzMCw3IEBACiBzZXQgZHVtbXkgcmFubGliOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X1JBTkxJQis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuCkBAIC01OTIxLDE1ICs2MzkyLDI3IEBACiBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgogICBjYXNlICRob3N0X29zIGluCiAgIG9wZW5ic2QqKQotICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgLXQgXCRvbGRsaWIiCisgICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiAtdCBcJHRvb2xfb2xkbGliIgogICAgIDs7CiAgICopCi0gICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKKyAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIFwkdG9vbF9vbGRsaWIiCiAgICAgOzsKICAgZXNhYwotICBvbGRfYXJjaGl2ZV9jbWRzPSIkb2xkX2FyY2hpdmVfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKKyAgb2xkX2FyY2hpdmVfY21kcz0iJG9sZF9hcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCR0b29sX29sZGxpYiIKIGZpCiAKK2Nhc2UgJGhvc3Rfb3MgaW4KKyAgZGFyd2luKikKKyAgICBsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249eWVzIDs7CisgICopCisgICAgbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPW5vIDs7Citlc2FjCisKKworCisKKworCiAKIAogCkBAIC01OTc2LDcgKzY0NTksNyBAQAogIyBDaGVjayBmb3IgY29tbWFuZCB0byBncmFiIHRoZSByYXcgc3ltYm9sIG5hbWUgZm9sbG93ZWQgYnkgQyBzeW1ib2wgZnJvbSBubS4KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgY29tbWFuZCB0byBwYXJzZSAkTk0gb3V0cHV0IGZyb20gJGNvbXBpbGVyIG9iamVjdCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBjb21tYW5kIHRvIHBhcnNlICROTSBvdXRwdXQgZnJvbSAkY29tcGlsZXIgb2JqZWN0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKIApAQCAtNjAzNyw4ICs2NTIwLDggQEAKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAKICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgogCiAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KIG9wdF9jcj0KQEAgLTYwNjIsNiArNjU0NSw3IEBACiAgICAgIyB3aGljaCBzdGFydCB3aXRoIEAgb3IgPy4KICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkQVdLICciXAogIiAgICAge2xhc3Rfc2VjdGlvbj1zZWN0aW9uOyBzZWN0aW9uPVwkIDN9OyJcCisiICAgICAvXkNPRkYgU1lNQk9MIFRBQkxFL3tmb3IoaSBpbiBoaWRlKSBkZWxldGUgaGlkZVtpXX07IlwKICIgICAgIC9TZWN0aW9uIGxlbmd0aCAuKiNyZWxvY3MuKihwaWNrIGFueSkve2hpZGVbbGFzdF9zZWN0aW9uXT0xfTsiXAogIiAgICAgXCQgMCF+L0V4dGVybmFsICpcfC97bmV4dH07IlwKICIgICAgIC8gMCsgVU5ERUYgL3tuZXh0fTsgLyBVTkRFRiBcKFtefF1cKSooKS97bmV4dH07IlwKQEAgLTYwNzQsNiArNjU1OCw3IEBACiAgIGVsc2UKICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICBmaQorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCiAKICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCiAgIHBpcGVfd29ya3M9bm8KQEAgLTYwOTksOCArNjU4NCw4IEBACiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KICAgICAjIE5vdyB0cnkgdG8gZ3JhYiB0aGUgc3ltYm9scy4KICAgICBubGlzdD1jb25mdGVzdC5ubQotICAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiROTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRubGlzdFwiIjsgfSA+JjUKLSAgKGV2YWwgJE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXD4gJG5saXN0KSAyPiY1CisgICAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiBcPiAkbmxpc3RcIiI7IH0gPiY1CisgIChldmFsICROTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgXD4gJG5saXN0KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zICIkbmxpc3QiOyB0aGVuCkBAIC02MTE1LDYgKzY2MDAsMTggQEAKICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorI2VsaWYgZGVmaW5lZChfX29zZl9fKQorLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorI2Vsc2UKKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAtNjEyNiw3ICs2NjIzLDcgQEAKIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogCiAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi1jb25zdCBzdHJ1Y3QgeworTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKICAgY29uc3QgY2hhciAqbmFtZTsKICAgdm9pZCAgICAgICAqYWRkcmVzczsKIH0KQEAgLTYxNTIsOCArNjY0OSw4IEBACiBfTFRfRU9GCiAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgogCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgogCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgogCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CkBAIC02MTYzLDggKzY2NjAsOCBAQAogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KIAkgICAgcGlwZV93b3Jrcz15ZXMKIAkgIGZpCi0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCiAJZWxzZQogCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CiAJZmkKQEAgLTYyMDEsNiArNjY5OCwxMiBAQAogJGFzX2VjaG8gIm9rIiA+JjY7IH0KIGZpCiAKKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgoraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCitlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworZmkKIAogCiAKQEAgLTYyMjMsNiArNjcyNiw0OCBAQAogCiAKIAorCisKKworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zeXNyb290IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgd2l0aHZhbD0kd2l0aF9zeXNyb290OworZWxzZQorICB3aXRoX3N5c3Jvb3Q9bm8KK2ZpCisKKworbHRfc3lzcm9vdD0KK2Nhc2UgJHt3aXRoX3N5c3Jvb3R9IGluICMoCisgeWVzKQorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKyAgIGZpCisgICA7OyAjKAorIC8qKQorICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgOzsgIygKKyBub3wnJykKKyAgIDs7ICMoCisgKikKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfc3lzcm9vdH0iID4mNQorJGFzX2VjaG8gIiR7d2l0aF9zeXNyb290fSIgPiY2OyB9CisgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKyAgIDs7Citlc2FjCisKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKworCisKKworCiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX2xpYnRvb2xfbG9jaytzZXR9IiA9IHNldDsgdGhlbiA6CiAgIGVuYWJsZXZhbD0kZW5hYmxlX2xpYnRvb2xfbG9jazsKQEAgLTYyNTQsNyArNjc5OSw3IEBACiAgIDs7CiAqLSotaXJpeDYqKQogICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCi0gIGVjaG8gJyNsaW5lIDYyNTcgImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAorICBlY2hvICcjbGluZSAnJExJTkVOTycgImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC02MzQ4LDcgKzY4OTMsNyBAQAogICBDRkxBR1M9IiRDRkxBR1MgLWJlbGYiCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBuZWVkcyAtYmVsZiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIG5lZWRzIC1iZWxmLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X2NjX25lZWRzX2JlbGYrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9jY19uZWVkc19iZWxmKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfZXh0PWMKQEAgLTYzODksNyArNjkzNCw3IEBACiAgICAgQ0ZMQUdTPSIkU0FWRV9DRkxBR1MiCiAgIGZpCiAgIDs7Ci1zcGFyYyotKnNvbGFyaXMqKQorKi0qc29sYXJpcyopCiAgICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KICAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CkBAIC02NDAwLDcgKzY5NDUsMjAgQEAKICAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0Lm9gIGluCiAgICAgKjY0LWJpdCopCiAgICAgICBjYXNlICRsdF9jdl9wcm9nX2dudV9sZCBpbgotICAgICAgeWVzKikgTEQ9IiR7TEQtbGR9IC1tIGVsZjY0X3NwYXJjIiA7OworICAgICAgeWVzKikKKyAgICAgICAgY2FzZSAkaG9zdCBpbgorICAgICAgICBpPzg2LSotc29sYXJpcyopCisgICAgICAgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl94ODZfNjQiCisgICAgICAgICAgOzsKKyAgICAgICAgc3BhcmMqLSotc29sYXJpcyopCisgICAgICAgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZjY0X3NwYXJjIgorICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgIyBHTlUgbGQgMi4yMSBpbnRyb2R1Y2VkIF9zb2wyIGVtdWxhdGlvbnMuICBVc2UgdGhlbSBpZiBhdmFpbGFibGUuCisgICAgICAgIGlmICR7TEQtbGR9IC1WIHwgZ3JlcCBfc29sMiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgICAgICBMRD0iJHtMRC1sZH1fc29sMiIKKyAgICAgICAgZmkKKyAgICAgICAgOzsKICAgICAgICopCiAJaWYgJHtMRC1sZH0gLTY0IC1yIC1vIGNvbmZ0ZXN0Mi5vIGNvbmZ0ZXN0Lm8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAJICBMRD0iJHtMRC1sZH0gLTY0IgpAQCAtNjQxNiw2ICs2OTc0LDEyMyBAQAogCiBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKIAoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCitpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCitpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorICAgIE1BTklGRVNUX1RPT0w9IjoiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorICBmaQorZWxzZQorICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorZmkKKwordGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisgIGZpCisgIHJtIC1mIGNvbmZ0ZXN0KgorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisgIE1BTklGRVNUX1RPT0w9OgorZmkKKworCisKKworCiAKICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCkBAIC02NDI0LDcgKzcwOTksNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZHN5bXV0aWw7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0RTWU1VVElMK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19EU1lNVVRJTCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiREU1lNVVRJTCI7IHRoZW4KQEAgLTY0NjQsNyArNzEzOSw3IEBACiBzZXQgZHVtbXkgZHN5bXV0aWw7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RTWU1VVElMK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9EU1lNVVRJTCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9EU1lNVVRJTCI7IHRoZW4KQEAgLTY1MTYsNyArNzE5MSw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1ubWVkaXQ7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX05NRURJVCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfTk1FRElUKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJE5NRURJVCI7IHRoZW4KQEAgLTY1NTYsNyArNzIzMSw3IEBACiBzZXQgZHVtbXkgbm1lZGl0OyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9OTUVESVQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X05NRURJVCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9OTUVESVQiOyB0aGVuCkBAIC02NjA4LDcgKzcyODMsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bGlwbzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfTElQTytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfTElQTys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRMSVBPIjsgdGhlbgpAQCAtNjY0OCw3ICs3MzIzLDcgQEAKIHNldCBkdW1teSBsaXBvOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9MSVBPK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9MSVBPKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X0xJUE8iOyB0aGVuCkBAIC02NzAwLDcgKzczNzUsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b3Rvb2w7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX09UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19PVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRPVE9PTCI7IHRoZW4KQEAgLTY3NDAsNyArNzQxNSw3IEBACiBzZXQgZHVtbXkgb3Rvb2w7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X09UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9PVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9PVE9PTCI7IHRoZW4KQEAgLTY3OTIsNyArNzQ2Nyw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1vdG9vbDY0OyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19PVE9PTDY0K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19PVE9PTDY0Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJE9UT09MNjQiOyB0aGVuCkBAIC02ODMyLDcgKzc1MDcsNyBAQAogc2V0IGR1bW15IG90b29sNjQ7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X09UT09MNjQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X09UT09MNjQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfT1RPT0w2NCI7IHRoZW4KQEAgLTY5MDcsNyArNzU4Miw3IEBACiAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtc2luZ2xlX21vZHVsZSBsaW5rZXIgZmxhZyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLXNpbmdsZV9tb2R1bGUgbGlua2VyIGZsYWcuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2QrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPW5vCkBAIC02OTIzLDcgKzc1OTgsMTMgQEAKIAkkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gbGliY29uZnRlc3QuZHlsaWIgXAogCSAgLWR5bmFtaWNsaWIgLVdsLC1zaW5nbGVfbW9kdWxlIGNvbmZ0ZXN0LmMgMj5jb25mdGVzdC5lcnIKICAgICAgICAgX2x0X3Jlc3VsdD0kPwotCWlmIHRlc3QgLWYgbGliY29uZnRlc3QuZHlsaWIgJiYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVyciAmJiB0ZXN0ICRfbHRfcmVzdWx0ID0gMDsgdGhlbgorCSMgSWYgdGhlcmUgaXMgYSBub24tZW1wdHkgZXJyb3IgbG9nLCBhbmQgInNpbmdsZV9tb2R1bGUiCisJIyBhcHBlYXJzIGluIGl0LCBhc3N1bWUgdGhlIGZsYWcgY2F1c2VkIGEgbGlua2VyIHdhcm5pbmcKKyAgICAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnIgJiYgJEdSRVAgc2luZ2xlX21vZHVsZSBjb25mdGVzdC5lcnI7IHRoZW4KKwkgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisJIyBPdGhlcndpc2UsIGlmIHRoZSBvdXRwdXQgd2FzIGNyZWF0ZWQgd2l0aCBhIDAgZXhpdCBjb2RlIGZyb20KKwkjIHRoZSBjb21waWxlciwgaXQgd29ya2VkLgorCWVsaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYiAmJiB0ZXN0ICRfbHRfcmVzdWx0IC1lcSAwOyB0aGVuCiAJICBsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPXllcwogCWVsc2UKIAkgIGNhdCBjb25mdGVzdC5lcnIgPiY1CkBAIC02OTM0LDkgKzc2MTUsMTAgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2QiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kIiA+JjY7IH0KKwogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1leHBvcnRlZF9zeW1ib2xzX2xpc3QgbGlua2VyIGZsYWciID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC1leHBvcnRlZF9zeW1ib2xzX2xpc3QgbGlua2VyIGZsYWcuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PW5vCkBAIC02OTY2LDYgKzc2NDgsNDEgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdCIgPiY1CiAkYXNfZWNobyAiJGx0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdCIgPiY2OyB9CisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtZm9yY2VfbG9hZCBsaW5rZXIgZmxhZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgLWZvcmNlX2xvYWQgbGlua2VyIGZsYWcuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfbGRfZm9yY2VfbG9hZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X2xkX2ZvcmNlX2xvYWQ9bm8KKyAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgoraW50IGZvcmNlZF9sb2FkZWQoKSB7IHJldHVybiAyO30KK19MVF9FT0YKKyAgICAgIGVjaG8gIiRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMiID4mNQorICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgoraW50IG1haW4oKSB7IHJldHVybiAwO30KK19MVF9FT0YKKyAgICAgIGVjaG8gIiRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jIC1XbCwtZm9yY2VfbG9hZCwuL2xpYmNvbmZ0ZXN0LmEiID4mNQorICAgICAgJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgLVdsLC1mb3JjZV9sb2FkLC4vbGliY29uZnRlc3QuYSAyPmNvbmZ0ZXN0LmVycgorICAgICAgX2x0X3Jlc3VsdD0kPworICAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnIgJiYgJEdSRVAgZm9yY2VfbG9hZCBjb25mdGVzdC5lcnI7IHRoZW4KKwljYXQgY29uZnRlc3QuZXJyID4mNQorICAgICAgZWxpZiB0ZXN0IC1mIGNvbmZ0ZXN0ICYmIHRlc3QgJF9sdF9yZXN1bHQgLWVxIDAgJiYgJEdSRVAgZm9yY2VkX2xvYWQgY29uZnRlc3QgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCWx0X2N2X2xkX2ZvcmNlX2xvYWQ9eWVzCisgICAgICBlbHNlCisJY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgICAgIGZpCisgICAgICAgIHJtIC1mIGNvbmZ0ZXN0LmVyciBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMKKyAgICAgICAgcm0gLXJmIGNvbmZ0ZXN0LmRTWU0KKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPiY1CiskYXNfZWNobyAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID4mNjsgfQogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICByaGFwc29keSogfCBkYXJ3aW4xLlswMTJdKQogICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OwpAQCAtNjk5Myw3ICs3NzEwLDcgQEAKICAgICBlbHNlCiAgICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPSd+JE5NRURJVCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKICAgICBmaQotICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiOyB0aGVuCisgICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiIgJiYgdGVzdCAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID0gIm5vIjsgdGhlbgogICAgICAgX2x0X2RzeW11dGlsPSd+JERTWU1VVElMICRsaWIgfHwgOicKICAgICBlbHNlCiAgICAgICBfbHRfZHN5bXV0aWw9CkBAIC03MDEzLDcgKzc3MzAsNyBAQAogICBDUFA9CiBmaQogaWYgdGVzdCAteiAiJENQUCI7IHRoZW4KLSAgaWYgdGVzdCAiJHthY19jdl9wcm9nX0NQUCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIGlmICR7YWNfY3ZfcHJvZ19DUFArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAgICAgIyBEb3VibGUgcXVvdGVzIGJlY2F1c2UgQ1BQIG5lZWRzIHRvIGJlIGV4cGFuZGVkCkBAIC03MDQzLDcgKzc3NjAsNyBAQAogICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCiBjb250aW51ZQogZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CiAKICAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKICAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KQEAgLTcwNTksMTEgKzc3NzYsMTEgQEAKIGFjX3ByZXByb2Nfb2s9OgogYnJlYWsKIGZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAogCiBkb25lCiAjIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4KLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CiBpZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6CiAgIGJyZWFrCiBmaQpAQCAtNzEwMiw3ICs3ODE5LDcgQEAKICAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgogY29udGludWUKIGZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAogCiAgICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlzdGVudCBoZWFkZXJzCiAgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCkBAIC03MTE4LDE4ICs3ODM1LDE4IEBACiBhY19wcmVwcm9jX29rPToKIGJyZWFrCiBmaQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKIAogZG9uZQogIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAogaWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4gOgogCiBlbHNlCiAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgIkMgcHJlcHJvY2Vzc29yIFwiJENQUFwiIGZhaWxzIHNhbml0eSBjaGVjawotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9Cithc19mbl9lcnJvciAkPyAiQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogZmkKIAogYWNfZXh0PWMKQEAgLTcxNDEsNyArNzg1OCw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N0ZGMrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9oZWFkZXJfc3RkYys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTcyNTgsOCArNzk3NSw3IEBACiAgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0CiAiCi1ldmFsIGFzX3ZhbD1cJCRhc19hY19IZWFkZXIKLSAgIGlmIHRlc3QgIngkYXNfdmFsIiA9IHgiInllczsgdGhlbiA6CitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CiAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKICNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQogX0FDRU9GCkBAIC03MjczLDcgKzc5ODksNyBAQAogZG8gOgogICBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiZGxmY24uaCIgImFjX2N2X2hlYWRlcl9kbGZjbl9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQKICIKLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2RsZmNuX2giID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2RsZmNuX2giID0geHllczsgdGhlbiA6CiAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKICNkZWZpbmUgSEFWRV9ETEZDTl9IIDEKIF9BQ0VPRgpAQCAtNzI4NCw2ICs4MDAwLDggQEAKIAogCiAKKworCiAjIFNldCBvcHRpb25zCiAKIApAQCAtNzM1OSw3ICs4MDc3LDIyIEBACiAKICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcGljIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7d2l0aF9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX3BpYzsgcGljX21vZGU9IiR3aXRodmFsIgorICB3aXRodmFsPSR3aXRoX3BpYzsgbHRfcD0ke1BBQ0tBR0UtZGVmYXVsdH0KKyAgICBjYXNlICR3aXRodmFsIGluCisgICAgeWVzfG5vKSBwaWNfbW9kZT0kd2l0aHZhbCA7OworICAgICopCisgICAgICBwaWNfbW9kZT1kZWZhdWx0CisgICAgICAjIExvb2sgYXQgdGhlIGFyZ3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNlcGFyYXRvcnMuCisgICAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKKyAgICAgIGZvciBsdF9wa2cgaW4gJHdpdGh2YWw7IGRvCisJSUZTPSIkbHRfc2F2ZV9pZnMiCisJaWYgdGVzdCAiWCRsdF9wa2ciID0gIlgkbHRfcCI7IHRoZW4KKwkgIHBpY19tb2RlPXllcworCWZpCisgICAgICBkb25lCisgICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIDs7CisgICAgZXNhYwogZWxzZQogICBwaWNfbW9kZT1kZWZhdWx0CiBmaQpAQCAtNzQzNiw2ICs4MTY5LDExIEBACiAKIAogCisKKworCisKKwogdGVzdCAteiAiJExOX1MiICYmIExOX1M9ImxuIC1zIgogCiAKQEAgLTc0NTcsNyArODE5NSw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG9iamRpciIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Igb2JqZGlyLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X29iamRpcitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X29iamRpcis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIHJtIC1mIC5saWJzIDI+L2Rldi9udWxsCkBAIC03NDg1LDE5ICs4MjIzLDYgQEAKIAogCiAKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQogY2FzZSAkaG9zdF9vcyBpbgogYWl4MyopCiAgICMgQUlYIHNvbWV0aW1lcyBoYXMgcHJvYmxlbXMgd2l0aCB0aGUgR0NDIGNvbGxlY3QyIHByb2dyYW0uICBGb3Igc29tZQpAQCAtNzUxMCwyMyArODIzNSw2IEBACiAgIDs7CiBlc2FjCiAKLSMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKLSMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1zZWRfcXVvdGVfc3Vic3Q9J3MvXChbImAkXFxdXCkvXFxcMS9nJwotCi0jIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KLWRvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFsiYFxcXVwpL1xcXDEvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNoZWxsIHZhcmlhYmxlIGluIGEKLSMgZG91YmxlX3F1b3RlX3N1YnN0J2VkIHN0cmluZy4KLWRlbGF5X3ZhcmlhYmxlX3N1YnN0PSdzL1xcXFxcXFxcXFxcJC9cXFxcXFwkL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaW5nbGUgcXVvdGUuCi1kZWxheV9zaW5nbGVfcXVvdGVfc3Vic3Q9J3MvJ1wnJy8nXCdcXFxcXFxcJ1wnJy9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gYXZvaWQgYWNjaWRlbnRhbCBnbG9iYmluZyBpbiBldmFsZWQgZXhwcmVzc2lvbnMKLW5vX2dsb2Jfc3Vic3Q9J3MvXCovXFxcKi9nJwotCiAjIEdsb2JhbCB2YXJpYWJsZXM6CiBvZmlsZT1saWJ0b29sCiBjYW5fYnVpbGRfc2hhcmVkPXllcwpAQCAtNzU1NSw3ICs4MjYzLDcgQEAKICAgICAqKSBicmVhazs7CiAgIGVzYWMKIGRvbmUKLWNjX2Jhc2VuYW1lPWAkRUNITyAiWCRjY190ZW1wIiB8ICRYc2VkIC1lICdzJS4qLyUlJyAtZSAicyVeJGhvc3RfYWxpYXMtJSUiYAorY2NfYmFzZW5hbWU9YCRFQ0hPICIkY2NfdGVtcCIgfCAkU0VEICJzJS4qLyUlOyBzJV4kaG9zdF9hbGlhcy0lJSJgCiAKIAogIyBPbmx5IHBlcmZvcm0gdGhlIGNoZWNrIGZvciBmaWxlLCBpZiB0aGUgY2hlY2sgbWV0aG9kIHJlcXVpcmVzIGl0CkBAIC03NTY1LDcgKzgyNzMsNyBAQAogICBpZiB0ZXN0ICIkZmlsZV9tYWdpY19jbWQiID0gJyRNQUdJQ19DTUQnOyB0aGVuCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJHthY190b29sX3ByZWZpeH1maWxlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAke2FjX3Rvb2xfcHJlZml4fWZpbGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcGF0aF9NQUdJQ19DTUQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wYXRoX01BR0lDX0NNRCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhc2UgJE1BR0lDX0NNRCBpbgpAQCAtNzYzMSw3ICs4MzM5LDcgQEAKICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGZpbGUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGZpbGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcGF0aF9NQUdJQ19DTUQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wYXRoX01BR0lDX0NNRCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhc2UgJE1BR0lDX0NNRCBpbgpAQCAtNzc2NCwxMSArODQ3MiwxNiBAQAogbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9CiAKIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPScgLWZuby1idWlsdGluJworICBjYXNlICRjY19iYXNlbmFtZSBpbgorICBudmNjKikKKyAgICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nIC1YY29tcGlsZXIgLWZuby1idWlsdGluJyA7OworICAqKQorICAgIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPScgLWZuby1idWlsdGluJyA7OworICBlc2FjCiAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9ucyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9ucy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnM9bm8KQEAgLTc3ODQsMTUgKzg0OTcsMTUgQEAKICAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKICAgIC1lICdzOiBbXiBdKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKICAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCi0gICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6Nzc4NzogJGx0X2NvbXBpbGVcIiIgPiY1KQorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRsdF9jb21waWxlXCIiID4mNSkKICAgIChldmFsICIkbHRfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCiAgICBhY19zdGF0dXM9JD8KICAgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gICBlY2hvICIkYXNfbWU6Nzc5MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgICBpZiAoZXhpdCAkYWNfc3RhdHVzKSAmJiB0ZXN0IC1zICIkYWNfb3V0ZmlsZSI7IHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzIG90aGVyIHRoYW4gdGhlIHVzdWFsIG91dHB1dC4KLSAgICAgJEVDSE8gIlgkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPmNvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPmNvbmZ0ZXN0LmV4cAogICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKICAgICAgaWYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVyMiB8fCBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zPXllcwpAQCAtNzgyMSw4ICs4NTM0LDYgQEAKIGx0X3Byb2dfY29tcGlsZXJfcGljPQogbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KIAogICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCkBAIC03ODcwLDYgKzg1ODEsMTIgQEAKICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctZm5vLWNvbW1vbicKICAgICAgIDs7CiAKKyAgICBoYWlrdSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgSGFpa3UuCisgICAgICAjIFRoZSAiLXN0YXRpYyIgZmxhZyBleGlzdHMsIGJ1dCBpcyBicm9rZW4uCisgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAgICAgIDs7CisKICAgICBocHV4KikKICAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciA2NC1iaXQgUEEgSFAtVVgsIGJ1dCBub3QgZm9yIDMyLWJpdAogICAgICAgIyBQQSBIUC1VWC4gIE9uIElBNjQgSFAtVVgsIFBJQyBpcyB0aGUgZGVmYXVsdCBidXQgdGhlIHBpYyBmbGFnCkBAIC03OTEyLDYgKzg2MjksMTUgQEAKICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctZlBJQycKICAgICAgIDs7CiAgICAgZXNhYworCisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICBudmNjKikgIyBDdWRhIENvbXBpbGVyIERyaXZlciAyLjIKKyAgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1YbGlua2VyICcKKyAgICAgIGlmIHRlc3QgLW4gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyI7IHRoZW4KKyAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Ii1YY29tcGlsZXIgJGx0X3Byb2dfY29tcGlsZXJfcGljIgorICAgICAgZmkKKyAgICAgIDs7CisgICAgZXNhYwogICBlbHNlCiAgICAgIyBQT1JUTUUgQ2hlY2sgZm9yIGZsYWcgdG8gcGFzcyBsaW5rZXIgZmxhZ3MgdGhyb3VnaCB0aGUgc3lzdGVtIGNvbXBpbGVyLgogICAgIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTc5NTMsNyArODY3OSw3IEBACiAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLW5vbl9zaGFyZWQnCiAgICAgICA7OwogCi0gICAgbGludXgqIHwgaypic2QqLWdudSkKKyAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgIyBvbGQgSW50ZWwgZm9yIHg4Nl82NCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCiAgICAgICBlY2MqKQpAQCAtNzk3NCw3ICs4NzAwLDEzIEBACiAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwogCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKIAk7OwotICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCisgICAgICBuYWdmb3IqKQorCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworCTs7CisgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCiAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCiAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwpAQCAtNzk4NiwyNSArODcxOCw0MCBAQAogICAgICAgICAjIEFsbCBBbHBoYSBjb2RlIGlzIFBJQy4KICAgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1ub25fc2hhcmVkJwogICAgICAgICA7OwotICAgICAgeGwqKQotCSMgSUJNIFhMIEMgOC4wL0ZvcnRyYW4gMTAuMSBvbiBQUEMKKyAgICAgIHhsKiB8IGJneGwqIHwgYmdmKiB8IG1waXhsKikKKwkjIElCTSBYTCBDIDguMC9Gb3J0cmFuIDEwLjEsIDExLjEgb24gUFBDIGFuZCBCbHVlR2VuZQogCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCiAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1xcGljJwogCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctcXN0YXRpY2xpbmsnCiAJOzsKICAgICAgICopCiAJY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCisJKlN1blwgQ2VyZXNcIEZvcnRyYW4qIHwgKlN1bipGb3J0cmFuKlwgWzEtN10uKiB8ICpTdW4qRm9ydHJhbipcIDguWzAtM10qKQorCSAgIyBTdW4gRm9ydHJhbiA4LjMgcGFzc2VzIGFsbCB1bnJlY29nbml6ZWQgZmxhZ3MgdG8gdGhlIGxpbmtlcgorCSAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworCSAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworCSAgbHRfcHJvZ19jb21waWxlcl93bD0nJworCSAgOzsKKwkqU3VuXCBGKiB8ICpTdW4qRm9ydHJhbiopCisJICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisJICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisJICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnCisJICA7OwogCSpTdW5cIEMqKQogCSAgIyBTdW4gQyA1LjkKIAkgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKIAkgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKIAkgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCiAJICA7OwotCSpTdW5cIEYqKQotCSAgIyBTdW4gRm9ydHJhbiA4LjMgcGFzc2VzIGFsbCB1bnJlY29nbml6ZWQgZmxhZ3MgdG8gdGhlIGxpbmtlcgotCSAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgICAqSW50ZWwqXCBbQ0ZdKkNvbXBpbGVyKikKKwkgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCisJICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLWZQSUMnCisJICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLXN0YXRpYycKKwkgIDs7CisJKlBvcnRsYW5kXCBHcm91cCopCisJICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworCSAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1mcGljJwogCSAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotCSAgbHRfcHJvZ19jb21waWxlcl93bD0nJwogCSAgOzsKIAllc2FjCiAJOzsKQEAgLTgwMzYsNyArODc4Myw3IEBACiAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCiAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQogCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwogICAgICAgKikKIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CkBAIC04MDkzLDEzICs4ODQwLDE3IEBACiAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKICAgICA7OwogZXNhYwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KIAotCi0KLQotCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwogCiAjCiAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCkBAIC04MTA3LDcgKzg4NTgsNyBAQAogaWYgdGVzdCAtbiAiJGx0X3Byb2dfY29tcGlsZXJfcGljIjsgdGhlbgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRjb21waWxlciBQSUMgZmxhZyAkbHRfcHJvZ19jb21waWxlcl9waWMgd29ya3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJGNvbXBpbGVyIFBJQyBmbGFnICRsdF9wcm9nX2NvbXBpbGVyX3BpYyB3b3Jrcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3JrcytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3M9bm8KQEAgLTgxMjMsMTUgKzg4NzQsMTUgQEAKICAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKICAgIC1lICdzOiBbXiBdKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKICAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCi0gICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6ODEyNjogJGx0X2NvbXBpbGVcIiIgPiY1KQorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRsdF9jb21waWxlXCIiID4mNSkKICAgIChldmFsICIkbHRfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCiAgICBhY19zdGF0dXM9JD8KICAgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gICBlY2hvICIkYXNfbWU6ODEzMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgICBpZiAoZXhpdCAkYWNfc3RhdHVzKSAmJiB0ZXN0IC1zICIkYWNfb3V0ZmlsZSI7IHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzIG90aGVyIHRoYW4gdGhlIHVzdWFsIG91dHB1dC4KLSAgICAgJEVDSE8gIlgkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPmNvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPmNvbmZ0ZXN0LmV4cAogICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKICAgICAgaWYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVyMiB8fCBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzPXllcwpAQCAtODE2MCwxMyArODkxMSwxOCBAQAogCiAKIAorCisKKworCisKICMKICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICMKIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgbHRfdG1wX3N0YXRpY19mbGFnPVwiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljXCIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN0YXRpYyBmbGFnICRsdF90bXBfc3RhdGljX2ZsYWcgd29ya3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN0YXRpYyBmbGFnICRsdF90bXBfc3RhdGljX2ZsYWcgd29ya3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrcys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzPW5vCkBAIC04MTc5LDcgKzg5MzUsNyBAQAogICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgogICAgICAgICMgQXBwZW5kIGFueSBlcnJvcnMgdG8gdGhlIGNvbmZpZy5sb2cuCiAgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1Ci0gICAgICAgJEVDSE8gIlgkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gY29uZnRlc3QuZXhwCisgICAgICAgJEVDSE8gIiRfbHRfbGlua2VyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAogICAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgogICAgICAgIGlmIGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrcz15ZXMKQEAgLTgyMDksNyArODk2NSw3IEBACiAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWMgLW8gZmlsZS4kYWNfb2JqZXh0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGlmICRjb21waWxlciBzdXBwb3J0cyAtYyAtbyBmaWxlLiRhY19vYmpleHQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9jX28rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPW5vCkBAIC04MjI4LDE2ICs4OTg0LDE2IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW14gXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCiAgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjgyMzE6ICRsdF9jb21waWxlXCIiID4mNSkKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkbHRfY29tcGlsZVwiIiA+JjUpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+b3V0L2NvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IG91dC9jb25mdGVzdC5lcnIgPiY1Ci0gICBlY2hvICIkYXNfbWU6ODIzNTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgICBpZiAoZXhpdCAkYWNfc3RhdHVzKSAmJiB0ZXN0IC1zIG91dC9jb25mdGVzdDIuJGFjX29iamV4dAogICAgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3MKLSAgICAgJEVDSE8gIlgkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIG91dC9jb25mdGVzdC5lcnIgPm91dC9jb25mdGVzdC5lcjIKICAgICAgaWYgdGVzdCAhIC1zIG91dC9jb25mdGVzdC5lcjIgfHwgZGlmZiBvdXQvY29uZnRlc3QuZXhwIG91dC9jb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPXllcwpAQCAtODI2NCw3ICs5MDIwLDcgQEAKIAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRjb21waWxlciBzdXBwb3J0cyAtYyAtbyBmaWxlLiRhY19vYmpleHQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4dC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfY19vKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289bm8KQEAgLTgyODMsMTYgKzkwMzksMTYgQEAKICAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKICAgIC1lICdzOiBbXiBdKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKICAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCi0gICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6ODI4NjogJGx0X2NvbXBpbGVcIiIgPiY1KQorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRsdF9jb21waWxlXCIiID4mNSkKICAgIChldmFsICIkbHRfY29tcGlsZSIgMj5vdXQvY29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgb3V0L2NvbmZ0ZXN0LmVyciA+JjUKLSAgIGVjaG8gIiRhc19tZTo4MjkwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgb3V0L2NvbmZ0ZXN0Mi4kYWNfb2JqZXh0CiAgICB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncwotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAogICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgb3V0L2NvbmZ0ZXN0LmVyciA+b3V0L2NvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgb3V0L2NvbmZ0ZXN0LmVyMiB8fCBkaWZmIG91dC9jb25mdGVzdC5leHAgb3V0L2NvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289eWVzCkBAIC04MzU4LDcgKzkxMTQsNiBAQAogICBoYXJkY29kZV9kaXJlY3Q9bm8KICAgaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPW5vCiAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9CiAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9CiAgIGhhcmRjb2RlX21pbnVzX0w9bm8KICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj11bnN1cHBvcnRlZApAQCAtODQwMiwxMCArOTE1NywzOSBAQAogICBvcGVuYnNkKikKICAgICB3aXRoX2dudV9sZD1ubwogICAgIDs7CisgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBnbnUqKQorICAgIGxpbmtfYWxsX2RlcGxpYnM9bm8KKyAgICA7OwogICBlc2FjCiAKICAgbGRfc2hsaWJzPXllcworCisgICMgT24gc29tZSB0YXJnZXRzLCBHTlUgbGQgaXMgY29tcGF0aWJsZSBlbm91Z2ggd2l0aCB0aGUgbmF0aXZlIGxpbmtlcgorICAjIHRoYXQgd2UncmUgYmV0dGVyIG9mZiB1c2luZyB0aGUgbmF0aXZlIGludGVyZmFjZSBmb3IgYm90aC4KKyAgbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9bm8KICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIGFpeCopCisJIyBUaGUgQUlYIHBvcnQgb2YgR05VIGxkIGhhcyBhbHdheXMgYXNwaXJlZCB0byBjb21wYXRpYmlsaXR5CisJIyB3aXRoIHRoZSBuYXRpdmUgbGlua2VyLiAgSG93ZXZlciwgYXMgdGhlIHdhcm5pbmcgaW4gdGhlIEdOVSBsZAorCSMgYmxvY2sgc2F5cywgdmVyc2lvbnMgYmVmb3JlIDIuMTkuNSogY291bGRuJ3QgcmVhbGx5IGNyZWF0ZSB3b3JraW5nCisJIyBzaGFyZWQgbGlicmFyaWVzLCByZWdhcmRsZXNzIG9mIHRoZSBpbnRlcmZhY2UgdXNlZC4KKwljYXNlIGAkTEQgLXYgMj4mMWAgaW4KKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCAyLjE5LjUqKSA7OworCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIDIuWzItOV0qKSA7OworCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIFszLTldKikgOzsKKwkgICopCisJICAgIGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPXllcworCSAgICA7OworCWVzYWMKKwk7OworICAgICAgKikKKwlsdF91c2VfZ251X2xkX2ludGVyZmFjZT15ZXMKKwk7OworICAgIGVzYWMKKyAgZmkKKworICBpZiB0ZXN0ICIkbHRfdXNlX2dudV9sZF9pbnRlcmZhY2UiID0geWVzOyB0aGVuCiAgICAgIyBJZiBhcmNoaXZlX2NtZHMgcnVucyBMRCwgbm90IENDLCB3bGFyYyBzaG91bGQgYmUgZW1wdHkKICAgICB3bGFyYz0nJHt3bH0nCiAKQEAgLTg0MjMsNiArOTIwNyw3IEBACiAgICAgZmkKICAgICBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9bm8KICAgICBjYXNlIGAkTEQgLXYgMj4mMWAgaW4KKyAgICAgICpHTlVcIGdvbGQqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7CiAgICAgICAqXCBbMDFdLiogfCAqXCAyLlswLTldLiogfCAqXCAyLjEwLiopIDs7ICMgY2F0Y2ggdmVyc2lvbnMgPCAyLjExCiAgICAgICAqXCAyLjExLjkzLjAuMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIFJINy4zIC4uLgogICAgICAgKlwgMi4xMS45Mi4wLjEyXCAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7ICMgTWFuZHJha2UgOC4yIC4uLgpAQCAtODQzOCwxMSArOTIyMywxMiBAQAogCWxkX3NobGlicz1ubwogCWNhdCA8PF9MVF9FT0YgMT4mMgogCi0qKiogV2FybmluZzogdGhlIEdOVSBsaW5rZXIsIGF0IGxlYXN0IHVwIHRvIHJlbGVhc2UgMi45LjEsIGlzIHJlcG9ydGVkCisqKiogV2FybmluZzogdGhlIEdOVSBsaW5rZXIsIGF0IGxlYXN0IHVwIHRvIHJlbGVhc2UgMi4xOSwgaXMgcmVwb3J0ZWQKICoqKiB0byBiZSB1bmFibGUgdG8gcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gQUlYLgogKioqIFRoZXJlZm9yZSwgbGlidG9vbCBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgSWYgeW91Ci0qKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBtb2RpZnkgeW91ciBQQVRICi0qKiogc28gdGhhdCBhIG5vbi1HTlUgbGlua2VyIGlzIGZvdW5kLCBhbmQgdGhlbiByZXN0YXJ0LgorKioqIHJlYWxseSBjYXJlIGZvciBzaGFyZWQgbGlicmFyaWVzLCB5b3UgbWF5IHdhbnQgdG8gaW5zdGFsbCBiaW51dGlscworKioqIDIuMjAgb3IgYWJvdmUsIG9yIG1vZGlmeSB5b3VyIFBBVEggc28gdGhhdCBhIG5vbi1HTlUgbGlua2VyIGlzIGZvdW5kLgorKioqIFlvdSB3aWxsIHRoZW4gbmVlZCB0byByZXN0YXJ0IHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MuCiAKIF9MVF9FT0YKICAgICAgIGZpCkBAIC04NDc4LDEwICs5MjY0LDEyIEBACiAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCiAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCiAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAogICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCiAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCiAKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKQEAgLTg0OTksNiArOTI4NywxMSBAQAogICAgICAgZmkKICAgICAgIDs7CiAKKyAgICBoYWlrdSopCisgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgbGlua19hbGxfZGVwbGlicz15ZXMKKyAgICAgIDs7CisKICAgICBpbnRlcml4WzMtOV0qKQogICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCiAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCkBAIC04NTE0LDcgKzkzMDcsNyBAQAogICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nc2VkICJzLF4sXywiICRleHBvcnRfc3ltYm9scyA+JG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW1+JENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1oLCRzb25hbWUgJHt3bH0tLXJldGFpbi1zeW1ib2xzLWZpbGUsJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW0gJHt3bH0tLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKICAgICAgIDs7CiAKLSAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUpCisgICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICAgICB0bXBfZGlldD1ubwogICAgICAgaWYgdGVzdCAiJGhvc3Rfb3MiID0gbGludXgtZGlldGxpYmM7IHRoZW4KIAljYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtODUyNCwxNSArOTMxNywxNiBAQAogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEVHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGwgXAogCSAmJiB0ZXN0ICIkdG1wX2RpZXQiID0gbm8KICAgICAgIHRoZW4KLQl0bXBfYWRkZmxhZz0KKwl0bXBfYWRkZmxhZz0nICRwaWNfZmxhZycKIAl0bXBfc2hhcmVkZmxhZz0nLXNoYXJlZCcKIAljYXNlICRjY19iYXNlbmFtZSwkaG9zdF9jcHUgaW4KICAgICAgICAgcGdjYyopCQkJCSMgUG9ydGxhbmQgR3JvdXAgQyBjb21waWxlcgotCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCSAgOzsKLQlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCSMgUG9ydGxhbmQgR3JvdXAgZjc3IGFuZCBmOTAgY29tcGlsZXJzCi0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCXBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisJCQkJCSMgUG9ydGxhbmQgR3JvdXAgZjc3IGFuZCBmOTAgY29tcGlsZXJzCisJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZyAtTW5vbWFpbicgOzsKIAllY2MqLGlhNjQqIHwgaWNjKixpYTY0KikJIyBJbnRlbCBDIGNvbXBpbGVyIG9uIGlhNjQKIAkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYycgOzsKQEAgLTg1NDMsMTMgKzkzMzcsMTcgQEAKIAlsZjk1KikJCQkJIyBMYWhleSBGb3J0cmFuIDguMQogCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9CiAJICB0bXBfc2hhcmVkZmxhZz0nLS1zaGFyZWQnIDs7Ci0JeGxbY0NdKikJCQkjIElCTSBYTCBDIDguMCBvbiBQUEMgKGRlYWwgd2l0aCB4bGYgYmVsb3cpCisJeGxbY0NdKiB8IGJneGxbY0NdKiB8IG1waXhsW2NDXSopICMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKIAkgIHRtcF9zaGFyZWRmbGFnPSctcW1rc2hyb2JqJwogCSAgdG1wX2FkZGZsYWc9IDs7CisJbnZjYyopCSMgQ3VkYSBDb21waWxlciBEcml2ZXIgMi4yCisJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBjb21waWxlcl9uZWVkc19vYmplY3Q9eWVzCisJICA7OwogCWVzYWMKIAljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KIAkqU3VuXCBDKikJCQkjIFN1biBDIDUuOQotCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICBjb21waWxlcl9uZWVkc19vYmplY3Q9eWVzCiAJICB0bXBfc2hhcmVkZmxhZz0nLUcnIDs7CiAJKlN1blwgRiopCQkJIyBTdW4gRm9ydHJhbiA4LjMKQEAgLTg1NjUsMTcgKzkzNjMsMTYgQEAKICAgICAgICAgZmkKIAogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JeGxmKikKKwl4bGYqIHwgYmdmKiB8IGJneGxmKiB8IG1waXhsZiopCiAJICAjIElCTSBYTCBGb3J0cmFuIDEwLjEgb24gUFBDIGNhbm5vdCBjcmVhdGUgc2hhcmVkIGxpYnMgaXRzZWxmCiAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLQkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0JICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwogCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgogCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgogCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCiAJICBmaQogCSAgOzsKIAllc2FjCkBAIC04NTg0LDEzICs5MzgxLDEzIEBACiAgICAgICBmaQogICAgICAgOzsKIAotICAgIG5ldGJzZCopCisgICAgbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogICAgICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCiAJd2xhcmM9CiAgICAgICBlbHNlCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBmaQogICAgICAgOzsKIApAQCAtODYwOCw4ICs5NDA1LDggQEAKIAogX0xUX0VPRgogICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBlbHNlCiAJbGRfc2hsaWJzPW5vCiAgICAgICBmaQpAQCAtODY1NSw4ICs5NDUyLDggQEAKIAogICAgICopCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBlbHNlCiAJbGRfc2hsaWJzPW5vCiAgICAgICBmaQpAQCAtODY5Niw4ICs5NDkzLDEwIEBACiAgICAgICBlbHNlCiAJIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCiAJIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorCSMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbAorCSMgZGVmaW5lZCBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KIAlpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0JICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKHN1YnN0cihcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworCSAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSkgJiYgKHN1YnN0cihcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogCWVsc2UKIAkgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKHN1YnN0cihcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogCWZpCkBAIC04NzU5LDYgKzk1NTgsNyBAQAogCWlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgogCSAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCiAJZmkKKwlsaW5rX2FsbF9kZXBsaWJzPW5vCiAgICAgICBlbHNlCiAJIyBub3QgdXNpbmcgZ2NjCiAJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KQEAgLTg3ODQsNyArOTU4NCwxMyBAQAogCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCiAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKK2Vsc2UKKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludApAQCAtODc5NywyNSArOTYwMywzMiBAQAogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAKLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotCS9eMC8gewotCSAgICBzL14wICAqXCguKlwpJC9cMS8KLQkgICAgcAotCX0KLSAgICB9JwotYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotZmkKKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKwkgIC9eMC8geworCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisJICAgICAgcAorCSAgfQorICAgICAgfScKKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorICBmaQogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisgIGZpCisKK2ZpCisKKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworZmkKIAogICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiAkRUNITyAiWCR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iIHwgJFhzZWQ7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKICAgICAgIGVsc2UKIAlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgogCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCkBAIC04ODI0LDcgKzk2MzcsMTMgQEAKIAllbHNlCiAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKK2Vsc2UKKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludApAQCAtODgzNywzMCArOTY1Niw0MiBAQAogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAKLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotCS9eMC8gewotCSAgICBzL14wICAqXCguKlwpJC9cMS8KLQkgICAgcAotCX0KLSAgICB9JwotYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotZmkKKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKwkgIC9eMC8geworCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisJICAgICAgcAorCSAgfQorICAgICAgfScKKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorICBmaQogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisgIGZpCisKK2ZpCisKKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworZmkKIAogCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KIAkgIG5vX3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tYmVybm90b2snCiAJICBhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWJlcm9rJwotCSAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCi0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJGNvbnZlbmllbmNlJworCSAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorCSAgICAjIFdlIG9ubHkgdXNlIHRoaXMgY29kZSBmb3IgR05VIGxkcyB0aGF0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlLgorCSAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBlbHNlCisJICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcworCSAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJGNvbnZlbmllbmNlJworCSAgZmkKIAkgIGFyY2hpdmVfY21kc19uZWVkX2xjPXllcwogCSAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkIGxpYnJhcmllcy4KIAkgIGFyY2hpdmVfZXhwc3ltX2NtZHM9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAke3dsfS1ibm9lbnRyeSAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzJHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKQEAgLTg4OTIsMjAgKzk3MjMsNjQgQEAKICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotICAgICAgbGliZXh0PWxpYgotICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGAkRUNITyAiWCRkZXBsaWJzIiB8ICRYc2VkIC1lICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgY2wqKQorCSMgTmF0aXZlIE1TVkMKKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworCWZpbGVfbGlzdF9zcGVjPSdAJworCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisJbGliZXh0PWxpYgorCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorCXNocmV4dF9jbWRzPSIuZGxsIgorCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisJICBlbHNlCisJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisJICBmaX4KKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKwkgIGxpbmtuYW1lcz0nCisJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisJZXhjbHVkZV9leHBzeW1zPSdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUnxfSU1QT1JUX0RFU0NSSVBUT1JfLionCisJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworCSMgRG9uJ3QgdXNlIHJhbmxpYgorCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorCSAgICAqLmV4ZXwqLkVYRSkgOzsKKwkgICAgKikKKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKwkgICAgICA7OworCSAgZXNhY34KKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworCSAgZmknCisJOzsKKyAgICAgICopCisJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisJbGliZXh0PWxpYgorCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorCXNocmV4dF9jbWRzPSIuZGxsIgorCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworCTs7CisgICAgICBlc2FjCiAgICAgICA7OwogCiAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKQEAgLTg5MTUsNyArOTc5MCwxMiBAQAogICBoYXJkY29kZV9kaXJlY3Q9bm8KICAgaGFyZGNvZGVfYXV0b21hdGljPXllcwogICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPXVuc3VwcG9ydGVkCi0gIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScnCisgIGlmIHRlc3QgIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA9ICJ5ZXMiOyB0aGVuCisgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9J2Bmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSAke3dsfS1mb3JjZV9sb2FkLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgJworCisgIGVsc2UKKyAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJworICBmaQogICBsaW5rX2FsbF9kZXBsaWJzPXllcwogICBhbGxvd191bmRlZmluZWRfZmxhZz0iJF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkIgogICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtODkyMyw3ICs5ODAzLDcgQEAKICAgICAgKikgX2x0X2Rhcl9jYW5fc2hhcmVkPSRHQ0MgOzsKICAgZXNhYwogICBpZiB0ZXN0ICIkX2x0X2Rhcl9jYW5fc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCi0gICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZWNobworICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWZ1bmNfZWNob19hbGwKICAgICBhcmNoaXZlX2NtZHM9IlwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2Qke19sdF9kc3ltdXRpbH0iCiAgICAgbW9kdWxlX2NtZHM9IlwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyR7X2x0X2RzeW11dGlsfSIKICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSJzZWQgJ3MsXixfLCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICR7X2x0X2Rhcl9zaW5nbGVfbW9kfSR7X2x0X2Rhcl9leHBvcnRfc3ltc30ke19sdF9kc3ltdXRpbH0iCkBAIC04OTQxLDEwICs5ODIxLDYgQEAKICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KICAgICAgIDs7CiAKLSAgICBmcmVlYnNkMSopCi0gICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIDs7Ci0KICAgICAjIEZyZWVCU0QgMi4yLlswMTJdIGFsbG93cyB1cyB0byBpbmNsdWRlIGMrK3J0MC5vIHRvIGdldCBDKysgY29uc3RydWN0b3IKICAgICAjIHN1cHBvcnQuICBGdXR1cmUgdmVyc2lvbnMgZG8gdGhpcyBhdXRvbWF0aWNhbGx5LCBidXQgYW4gZXhwbGljaXQgYysrcnQwLm8KICAgICAjIGRvZXMgbm90IGJyZWFrIGFueXRoaW5nLCBhbmQgaGVscHMgc2lnbmlmaWNhbnRseSAoYXQgdGhlIGNvc3Qgb2YgYSBsaXR0bGUKQEAgLTg5NTcsNyArOTgzMyw3IEBACiAgICAgICA7OwogCiAgICAgIyBVbmZvcnR1bmF0ZWx5LCBvbGRlciB2ZXJzaW9ucyBvZiBGcmVlQlNEIDIgZG8gbm90IGhhdmUgdGhpcyBmZWF0dXJlLgotICAgIGZyZWVic2QyKikKKyAgICBmcmVlYnNkMi4qKQogICAgICAgYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwogICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKQEAgLTg5NjYsNyArOTg0Miw3IEBACiAKICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwogICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwogICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwpAQCAtODk3NCw3ICs5ODUwLDcgQEAKIAogICAgIGhwdXg5KikKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICBlbHNlCiAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgIGZpCkBAIC04OTg5LDE0ICs5ODY1LDEzIEBACiAgICAgICA7OwogCiAgICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgZWxzZQogCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKLQloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPScrYiAkbGliZGlyJwogCWhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgogCWhhcmRjb2RlX2RpcmVjdD15ZXMKIAloYXJkY29kZV9kaXJlY3RfYWJzb2x1dGU9eWVzCkBAIC05MDA4LDE2ICs5ODgzLDE2IEBACiAgICAgICA7OwogCiAgICAgaHB1eDExKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCWNhc2UgJGhvc3RfY3B1IGluCiAJaHBwYSo2NCopCiAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAlpYTY0KikKLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCWVzYWMKICAgICAgIGVsc2UKQEAgLTkwMjksNyArOTkwNCw0NiBAQAogCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCi0JICBhcmNoaXZlX2NtZHM9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCisJICAjIE9sZGVyIHZlcnNpb25zIG9mIHRoZSAxMS4wMCBjb21waWxlciBkbyBub3QgdW5kZXJzdGFuZCAtYiB5ZXQKKwkgICMgKEhQOTI0NTMtMDEgQS4xMS4wMS4yMCBkb2Vzbid0LCBIUDkyNDUzLTAxIEIuMTEuWC4zNTE3NS0zNTE3Ni5HUCBkb2VzKQorCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkQ0MgdW5kZXJzdGFuZHMgLWIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJENDIHVuZGVyc3RhbmRzIC1iLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfX2IrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9wcm9nX2NvbXBpbGVyX19iPW5vCisgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICAgTERGTEFHUz0iJExERkxBR1MgLWIiCisgICBlY2hvICIkbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgIGlmIChldmFsICRhY19saW5rIDI+Y29uZnRlc3QuZXJyKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dDsgdGhlbgorICAgICAjIFRoZSBsaW5rZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKKyAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCisgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgICAgIyBBcHBlbmQgYW55IGVycm9ycyB0byB0aGUgY29uZmlnLmxvZy4KKyAgICAgICBjYXQgY29uZnRlc3QuZXJyIDE+JjUKKyAgICAgICAkRUNITyAiJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gY29uZnRlc3QuZXhwCisgICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCisgICAgICAgaWYgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfX2I9eWVzCisgICAgICAgZmkKKyAgICAgZWxzZQorICAgICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfX2I9eWVzCisgICAgIGZpCisgICBmaQorICAgJFJNIC1yIGNvbmZ0ZXN0KgorICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9fYiIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfX2IiID4mNjsgfQorCitpZiB0ZXN0IHgiJGx0X2N2X3Byb2dfY29tcGlsZXJfX2IiID0geHllczsgdGhlbgorICAgIGFyY2hpdmVfY21kcz0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCitlbHNlCisgICAgYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworZmkKKwogCSAgOzsKIAllc2FjCiAgICAgICBmaQpAQCAtOTA1NywyNiArOTk3MSwzOSBAQAogCiAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCiAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLWludCBmb28odm9pZCkge30KK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KIF9BQ0VPRgogaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotCisgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworZWxzZQorICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CiskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlmaQogICAgICAgZWxzZQotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjPSdubycKICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKQEAgLTkwODUsNyArMTAwMTIsNyBAQAogICAgICAgbGlua19hbGxfZGVwbGlicz15ZXMKICAgICAgIDs7CiAKLSAgICBuZXRic2QqKQorICAgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKICAgICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCiAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJyAgIyBhLm91dAogICAgICAgZWxzZQpAQCAtOTEzOCwxNyArMTAwNjUsMTcgQEAKICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCiAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgYXJjaGl2ZV9jbWRzPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiIFNJTkdMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBhcmNoaXZlX2NtZHM9JyRFQ0hPICJMSUJSQVJZICRsaWJuYW1lIElOSVRJTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyAiIFNJTkdMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVteGV4cCAkbGlib2JqcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JENDIC1aZGxsIC1aY3J0ZGxsIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKICAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKICAgICAgIDs7CiAKICAgICBvc2YzKikKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogICAgICAgZWxzZQogCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjPSdubycKICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKQEAgLTkxNTgsMTMgKzEwMDg1LDEzIEBACiAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgIGVsc2UKIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdmb3IgaSBpbiBgY2F0ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiJXMgJXNcXG4iIC1leHBvcnRlZF9zeW1ib2wgIlwkaSIgPj4gJGxpYi5leHA7IGRvbmU7IHByaW50ZiAiJXNcXG4iICItaGlkZGVuIj4+ICRsaWIuZXhwfgotCSRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAkY29tcGlsZXJfZmxhZ3MgJGxpYm9ianMgJGRlcGxpYnMgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+JFJNICRsaWIuZXhwJworCSRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAkY29tcGlsZXJfZmxhZ3MgJGxpYm9ianMgJGRlcGxpYnMgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+JFJNICRsaWIuZXhwJwogCiAJIyBCb3RoIGMgYW5kIGN4eCBjb21waWxlciBzdXBwb3J0IC1ycGF0aCBkaXJlY3RseQogCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1ycGF0aCAkbGliZGlyJwpAQCAtOTE3Nyw5ICsxMDEwNCw5IEBACiAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCXdsYXJjPScke3dsfScKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKICAgICAgIGVsc2UKIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KIAkqIkNvbXBpbGVycyA1LjAiKikKQEAgLTkzNjcsNDQgKzEwMjk0LDUwIEBACiAgICAgICAjIHRvIGxkLCBkb24ndCBhZGQgLWxjIGJlZm9yZSAtbGdjYy4KICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAtbGMgc2hvdWxkIGJlIGV4cGxpY2l0bHkgbGlua2VkIGluIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgLWxjIHNob3VsZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbi4uLiAiID4mNjsgfQotICAgICAgJFJNIGNvbmZ0ZXN0KgotICAgICAgZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CitpZiAke2x0X2N2X2FyY2hpdmVfY21kc19uZWVkX2xjKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgJFJNIGNvbmZ0ZXN0KgorCWVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAogCi0gICAgICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKwlpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9IDI+Y29uZnRlc3QuZXJyOyB0aGVuCi0gICAgICAgIHNvbmFtZT1jb25mdGVzdAotICAgICAgICBsaWI9Y29uZnRlc3QKLSAgICAgICAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0Ci0gICAgICAgIGRlcGxpYnM9Ci0gICAgICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsCi0JcGljX2ZsYWc9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPS12Ci0gICAgICAgIGxpbmtlcl9mbGFncz0tdgotICAgICAgICB2ZXJzdHJpbmc9Ci0gICAgICAgIG91dHB1dF9vYmpkaXI9LgotICAgICAgICBsaWJuYW1lPWNvbmZ0ZXN0Ci0gICAgICAgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JGFsbG93X3VuZGVmaW5lZF9mbGFnCi0gICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPQotICAgICAgICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYXJjaGl2ZV9jbWRzIDJcPlwmMSBcfCAkR1JFUCBcIiAtbGMgXCIgXD4vZGV2L251bGwgMlw+XCYxXCIiOyB9ID4mNQorCSAgc29uYW1lPWNvbmZ0ZXN0CisJICBsaWI9Y29uZnRlc3QKKwkgIGxpYm9ianM9Y29uZnRlc3QuJGFjX29iamV4dAorCSAgZGVwbGlicz0KKwkgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsCisJICBwaWNfZmxhZz0kbHRfcHJvZ19jb21waWxlcl9waWMKKwkgIGNvbXBpbGVyX2ZsYWdzPS12CisJICBsaW5rZXJfZmxhZ3M9LXYKKwkgIHZlcnN0cmluZz0KKwkgIG91dHB1dF9vYmpkaXI9LgorCSAgbGlibmFtZT1jb25mdGVzdAorCSAgbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZz0kYWxsb3dfdW5kZWZpbmVkX2ZsYWcKKwkgIGFsbG93X3VuZGVmaW5lZF9mbGFnPQorCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFyY2hpdmVfY21kcyAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMVwiIjsgfSA+JjUKICAgKGV2YWwgJGFyY2hpdmVfY21kcyAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSAgICAgICAgdGhlbgotCSAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9bm8KLSAgICAgICAgZWxzZQotCSAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9eWVzCi0gICAgICAgIGZpCi0gICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCi0gICAgICBlbHNlCi0gICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQotICAgICAgZmkKLSAgICAgICRSTSBjb25mdGVzdCoKLSAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXJjaGl2ZV9jbWRzX25lZWRfbGMiID4mNQotJGFzX2VjaG8gIiRhcmNoaXZlX2NtZHNfbmVlZF9sYyIgPiY2OyB9CisJICB0aGVuCisJICAgIGx0X2N2X2FyY2hpdmVfY21kc19uZWVkX2xjPW5vCisJICBlbHNlCisJICAgIGx0X2N2X2FyY2hpdmVfY21kc19uZWVkX2xjPXllcworCSAgZmkKKwkgIGFsbG93X3VuZGVmaW5lZF9mbGFnPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCisJZWxzZQorCSAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1CisJZmkKKwkkUk0gY29uZnRlc3QqCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyY2hpdmVfY21kc19uZWVkX2xjIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGMiID4mNjsgfQorICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9JGx0X2N2X2FyY2hpdmVfY21kc19uZWVkX2xjCiAgICAgICA7OwogICAgIGVzYWMKICAgZmkKQEAgLTk1NjIsMTEgKzEwNDk1LDYgQEAKIAogCiAKLQotCi0KLQotCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGR5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljcy4uLiAiID4mNjsgfQogCkBAIC05NTc1LDE2ICsxMDUwMywyMyBAQAogICAgIGRhcndpbiopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8sL0xSLyIgOzsKICAgICAqKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovIiA7OwogICBlc2FjCi0gIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBhd2sgJGx0X2F3a19hcmcgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyJgCi0gIGlmICRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnOycgPi9kZXYvbnVsbCA7IHRoZW4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VkX3N0cmlwX2VxPSJzLD1cKFtBLVphLXpdOlwpLFwxLGciIDs7CisgICAgKikgbHRfc2VkX3N0cmlwX2VxPSJzLD0vLC8sZyIgOzsKKyAgZXNhYworICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAkbHRfc2VkX3N0cmlwX2VxYAorICBjYXNlICRsdF9zZWFyY2hfcGF0aF9zcGVjIGluCisgICpcOyopCiAgICAgIyBpZiB0aGUgcGF0aCBjb250YWlucyAiOyIgdGhlbiB3ZSBhc3N1bWUgaXQgdG8gYmUgdGhlIHNlcGFyYXRvcgogICAgICMgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdGhlIHN0YW5kYXJkIHBhdGggc2VwYXJhdG9yIChpLmUuICI6IikgLSBpdCBpcwogICAgICMgYXNzdW1lZCB0aGF0IG5vIHBhcnQgb2YgYSBub3JtYWwgcGF0aG5hbWUgY29udGFpbnMgIjsiIGJ1dCB0aGF0IHNob3VsZAogICAgICMgb2theSBpbiB0aGUgcmVhbCB3b3JsZCB3aGVyZSAiOyIgaW4gZGlycGF0aHMgaXMgaXRzZWxmIHByb2JsZW1hdGljLgotICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSAgZWxzZQotICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSAgZmkKKyAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAncy87LyAvZydgCisgICAgOzsKKyAgKikKKyAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICA7OworICBlc2FjCiAgICMgT2ssIG5vdyB3ZSBoYXZlIHRoZSBwYXRoLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLCB3ZSBjYW4gc3RlcCB0aHJvdWdoIGl0CiAgICMgYW5kIGFkZCBtdWx0aWxpYiBkaXIgaWYgbmVjZXNzYXJ5LgogICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0KQEAgLTk1OTcsNyArMTA1MzIsNyBAQAogCWx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoIgogICAgIGZpCiAgIGRvbmUKLSAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjIHwgYXdrICcKKyAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCBhd2sgJwogQkVHSU4ge1JTPSIgIjsgRlM9Ii98XG4iO30gewogICBsdF9mb289IiI7CiAgIGx0X2NvdW50PTA7CkBAIC05NjE3LDcgKzEwNTUyLDEzIEBACiAgIGlmIChsdF9mb28gIT0gIiIpIHsgbHRfZnJlcVtsdF9mb29dKys7IH0KICAgaWYgKGx0X2ZyZXFbbHRfZm9vXSA9PSAxKSB7IHByaW50IGx0X2ZvbzsgfQogfSdgCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gJGx0X3NlYXJjaF9wYXRoX3NwZWNgCisgICMgQVdLIHByb2dyYW0gYWJvdmUgZXJyb25lb3VzbHkgcHJlcGVuZHMgJy8nIHRvIEM6L2Rvcy9wYXRocworICAjIGZvciB0aGVzZSBob3N0cy4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8XAorICAgICAgJFNFRCAncywvXChbQS1aYS16XTpcKSxcMSxnJ2AgOzsKKyAgZXNhYworICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkbHRfTkwyU1BgCiBlbHNlCiAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKIGZpCkBAIC05NjQzLDcgKzEwNTg0LDcgQEAKIAogY2FzZSAkaG9zdF9vcyBpbgogYWl4MyopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZS5hJwogICBzaGxpYnBhdGhfdmFyPUxJQlBBVEgKIApAQCAtOTY1Miw3ICsxMDU5Myw3IEBACiAgIDs7CiAKIGFpeFs0LTldKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCkBAIC05NzA1LDcgKzEwNjQ2LDcgQEAKICAgbTY4aykKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLml4bGlicmFyeSAkbGlibmFtZS5hJwogICAgICMgQ3JlYXRlICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgZW50cmllcyBpbiAvc3lzL2xpYnMuCi0gICAgZmluaXNoX2V2YWw9J2ZvciBsaWIgaW4gYGxzICRsaWJkaXIvKi5peGxpYnJhcnkgMj4vZGV2L251bGxgOyBkbyBsaWJuYW1lPWAkRUNITyAiWCRsaWIiIHwgJFhzZWQgLWUgJ1wnJ3MlXi4qL1woW14vXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCisgICAgZmluaXNoX2V2YWw9J2ZvciBsaWIgaW4gYGxzICRsaWJkaXIvKi5peGxpYnJhcnkgMj4vZGV2L251bGxgOyBkbyBsaWJuYW1lPWBmdW5jX2VjaG9fYWxsICIkbGliIiB8ICRTRUQgJ1wnJ3MlXi4qL1woW14vXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCiAgICAgOzsKICAgZXNhYwogICA7OwpAQCAtOTcxNyw3ICsxMDY1OCw3IEBACiAgIDs7CiAKIGJzZGlbNDVdKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwpAQCAtOTczNiw4ICsxMDY3Nyw5IEBACiAgIG5lZWRfdmVyc2lvbj1ubwogICBuZWVkX2xpYl9wcmVmaXg9bm8KIAotICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorICB5ZXMsKikKKyAgICAjIGdjYwogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwogICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgpAQCAtOTc1OCwzNiArMTA3MDAsODMgQEAKICAgICBjeWd3aW4qKQogICAgICAgIyBDeWd3aW4gRExMcyB1c2UgJ2N5ZycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCiAgICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL2N5Zy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliIC9saWIvdzMyYXBpIC9saWIgL3Vzci9sb2NhbC9saWIiCisKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAvdXNyL2xpYi93MzJhcGkiCiAgICAgICA7OwogICAgIG1pbmd3KiB8IGNlZ2NjKikKICAgICAgICMgTWluR1cgRExMcyB1c2UgdHJhZGl0aW9uYWwgJ2xpYicgcHJlZml4CiAgICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCAkR1JFUCAiXmxpYnJhcmllczoiIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAotICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0gICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEggcHJpbnRlZCBieQotICAgICAgICAjIG1pbmd3IGdjYywgYnV0IHdlIGFyZSBydW5uaW5nIG9uIEN5Z3dpbi4gR2NjIHByaW50cyBpdHMgc2VhcmNoCi0gICAgICAgICMgcGF0aCB3aXRoIDsgc2VwYXJhdG9ycywgYW5kIHdpdGggZHJpdmUgbGV0dGVycy4gV2UgY2FuIGhhbmRsZSB0aGUKLSAgICAgICAgIyBkcml2ZSBsZXR0ZXJzIChjeWd3aW4gZmlsZXV0aWxzIHVuZGVyc3RhbmRzIHRoZW0pLCBzbyBsZWF2ZSB0aGVtLAotICAgICAgICAjIGVzcGVjaWFsbHkgYXMgd2UgbWlnaHQgcGFzcyBmaWxlcyBmb3VuZCB0aGVyZSB0byBhIG1pbmd3IG9iamR1bXAsCi0gICAgICAgICMgd2hpY2ggd291bGRuJ3QgdW5kZXJzdGFuZCBhIGN5Z3dpbmlmaWVkIHBhdGguIEFoaC4KLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSAgICAgIGVsc2UKLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSAgICAgIGZpCiAgICAgICA7OwogICAgIHB3MzIqKQogICAgICAgIyBwdzMyIERMTHMgdXNlICdwdycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCiAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCiAgICAgICA7OwogICAgIGVzYWMKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIDs7CisKKyAgKixjbCopCisgICAgIyBOYXRpdmUgTVNWQworICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworCisgICAgY2FzZSAkYnVpbGRfb3MgaW4KKyAgICBtaW5ndyopCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisgICAgICBsdF9zYXZlX2lmcz0kSUZTCisgICAgICBJRlM9JzsnCisgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisgICAgICBkbworICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisgICAgICBkb25lCisgICAgICBJRlM9JGx0X3NhdmVfaWZzCisgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorICAgICAgOzsKKyAgICBjeWd3aW4qKQorICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICA7OworICAgICopCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKyAgICAgIGVsc2UKKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgICAgZmkKKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorICAgICAgOzsKKyAgICBlc2FjCisKKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisgICAgICAgJFJNIFwkZGxwYXRoJworICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCiAgICAgOzsKIAogICAqKQorICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCiAgICAgOzsKICAgZXNhYwotICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwogICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgc2hsaWJwYXRoX3Zhcj1QQVRICiAgIDs7CkBAIC05ODA4LDcgKzEwNzk3LDcgQEAKICAgOzsKIAogZGd1eCopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwpAQCAtOTgxNiwxMCArMTA4MDUsNiBAQAogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICA7OwogCi1mcmVlYnNkMSopCi0gIGR5bmFtaWNfbGlua2VyPW5vCi0gIDs7Ci0KIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKICAgIyBEcmFnb25GbHkgZG9lcyBub3QgaGF2ZSBhb3V0LiAgV2hlbi9pZiB0aGV5IGltcGxlbWVudCBhIG5ldwogICAjIHZlcnNpb25pbmcgbWVjaGFuaXNtLCBhZGp1c3QgdGhpcy4KQEAgLTk4MjcsNyArMTA4MTIsNyBAQAogICAgIG9iamZvcm1hdD1gL3Vzci9iaW4vb2JqZm9ybWF0YAogICBlbHNlCiAgICAgY2FzZSAkaG9zdF9vcyBpbgotICAgIGZyZWVic2RbMTIzXSopIG9iamZvcm1hdD1hb3V0IDs7CisgICAgZnJlZWJzZFsyM10uKikgb2JqZm9ybWF0PWFvdXQgOzsKICAgICAqKSBvYmpmb3JtYXQ9ZWxmIDs7CiAgICAgZXNhYwogICBmaQpAQCAtOTg0NSw3ICsxMDgzMCw3IEBACiAgIGVzYWMKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgY2FzZSAkaG9zdF9vcyBpbgotICBmcmVlYnNkMiopCisgIGZyZWVic2QyLiopCiAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwogICAgIDs7CiAgIGZyZWVic2QzLlswMV0qIHwgZnJlZWJzZGVsZjMuWzAxXSopCkBAIC05ODY1LDEyICsxMDg1MCwyNiBAQAogICA7OwogCiBnbnUqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKworaGFpa3UqKQorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIHJ1bnRpbWVfbG9hZGVyIgorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHttYWpvcn0gJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgOzsKIApAQCAtOTkxNiwxMiArMTA5MTUsMTQgQEAKICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgIDs7CiAgIGVzYWMKLSAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUuCisgICMgSFAtVVggcnVucyAqcmVhbGx5KiBzbG93bHkgdW5sZXNzIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG1vZGUgNTU1LCAuLi4KICAgcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNTU1ICRsaWInCisgICMgb3IgZmFpbHMgb3V0cmlnaHQsIHNvIG92ZXJyaWRlIGF0b21pY2FsbHk6CisgIGluc3RhbGxfb3ZlcnJpZGVfbW9kZT01NTUKICAgOzsKIAogaW50ZXJpeFszLTldKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwpAQCAtOTkzNyw3ICsxMDkzOCw3IEBACiAgICAgbm9uc3RvcHV4KikgdmVyc2lvbl90eXBlPW5vbnN0b3B1eCA7OwogICAgICopCiAJaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgotCQl2ZXJzaW9uX3R5cGU9bGludXgKKwkJdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogCWVsc2UKIAkJdmVyc2lvbl90eXBlPWlyaXgKIAlmaSA7OwpAQCAtOTk3NCw5ICsxMDk3NSw5IEBACiAgIGR5bmFtaWNfbGlua2VyPW5vCiAgIDs7CiAKLSMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KLWxpbnV4KiB8IGsqYnNkKi1nbnUpCi0gIHZlcnNpb25fdHlwZT1saW51eAorIyBUaGlzIG11c3QgYmUgZ2xpYmMvRUxGLgorbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCkBAIC05OTg0LDEyICsxMDk4NSwxNyBAQAogICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbiAkbGliZGlyJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKwogICAjIFNvbWUgYmludXRpbHMgbGQgYXJlIHBhdGNoZWQgdG8gc2V0IERUX1JVTlBBVEgKLSAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCi0gIHNhdmVfbGliZGlyPSRsaWJkaXIKLSAgZXZhbCAibGliZGlyPS9mb287IHdsPVwiJGx0X3Byb2dfY29tcGlsZXJfd2xcIjsgXAotICAgICAgIExERkxBR1M9XCJcJExERkxBR1MgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorICBpZiAke2x0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICAgIHNhdmVfTERGTEFHUz0kTERGTEFHUworICAgIHNhdmVfbGliZGlyPSRsaWJkaXIKKyAgICBldmFsICJsaWJkaXI9L2Zvbzsgd2w9XCIkbHRfcHJvZ19jb21waWxlcl93bFwiOyBcCisJIExERkxBR1M9XCJcJExERkxBR1MgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKyAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludApAQCAtMTAwMDIsMjYgKzExMDA4LDI3IEBACiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAgaWYgICgkT0JKRFVNUCAtcCBjb25mdGVzdCRhY19leGVleHQpIDI+L2Rldi9udWxsIHwgZ3JlcCAiUlVOUEFUSC4qJGxpYmRpciIgPi9kZXYvbnVsbDsgdGhlbiA6Ci0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwogZmkKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotICBMREZMQUdTPSRzYXZlX0xERkxBR1MKLSAgbGliZGlyPSRzYXZlX2xpYmRpcgorICAgIExERkxBR1M9JHNhdmVfTERGTEFHUworICAgIGxpYmRpcj0kc2F2ZV9saWJkaXIKKworZmkKKworICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9JGx0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aAogCiAgICMgVGhpcyBpbXBsaWVzIG5vIGZhc3RfaW5zdGFsbCwgd2hpY2ggaXMgdW5hY2NlcHRhYmxlLgogICAjIFNvbWUgcmV3b3JrIHdpbGwgYmUgbmVlZGVkIHRvIGFsbG93IGZvciBmYXN0X2luc3RhbGwKICAgIyBiZWZvcmUgdGhpcyBjYW4gYmUgZW5hYmxlZC4KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogCi0gICMgQWRkIEFCSS1zcGVjaWZpYyBkaXJlY3RvcmllcyB0byB0aGUgc3lzdGVtIGxpYnJhcnkgcGF0aC4KLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWI2NCAvdXNyL2xpYjY0IC9saWIgL3Vzci9saWIiCi0KICAgIyBBcHBlbmQgbGQuc28uY29uZiBjb250ZW50cyB0byB0aGUgc2VhcmNoIHBhdGgKICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KLSAgICBsdF9sZF9leHRyYT1gYXdrICcvXmluY2x1ZGUgLyB7IHN5c3RlbShzcHJpbnRmKCJjZCAvZXRjOyBjYXQgJXMgMj4vZGV2L251bGwiLCBcJDIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFwkMDsgc2tpcCA9IDA7IH0nIDwgL2V0Yy9sZC5zby5jb25mIHwgJFNFRCAtZSAncy8jLiovLzsvXlsJIF0qaHdjYXBbCSBdL2Q7cy9bOiwJXS8gL2c7cy89W149XSokLy87cy89W149IF0qIC8gL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCi0gICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyAkbHRfbGRfZXh0cmEiCisgICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXCQyKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcJDA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nO3MvIi8vZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKKyAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAkbHRfbGRfZXh0cmEiCiAgIGZpCiAKICAgIyBXZSB1c2VkIHRvIHRlc3QgZm9yIC9saWIvbGQuc28uMSBhbmQgZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIG9uCkBAIC0xMDAzMyw2ICsxMTA0MCwxOCBAQAogICBkeW5hbWljX2xpbmtlcj0nR05VL0xpbnV4IGxkLnNvJwogICA7OwogCituZXRic2RlbGYqLWdudSkKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgZHluYW1pY19saW5rZXI9J05ldEJTRCBsZC5lbGZfc28nCisgIDs7CisKIG5ldGJzZCopCiAgIHZlcnNpb25fdHlwZT1zdW5vcwogICBuZWVkX2xpYl9wcmVmaXg9bm8KQEAgLTEwMDUyLDcgKzExMDcxLDcgQEAKICAgOzsKIAogbmV3c29zNikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKQEAgLTEwMTIxLDcgKzExMTQwLDcgQEAKICAgOzsKIAogc29sYXJpcyopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCkBAIC0xMDE0Niw3ICsxMTE2NSw3IEBACiAgIDs7CiAKIHN5c3Y0IHwgc3lzdjQuMyopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMTAxNzAsNyArMTExODksNyBAQAogCiBzeXN2NCpNUCopCiAgIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KLSAgICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9LiRtYWpvcicKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMTAyMDEsNyArMTEyMjAsNyBAQAogCiB0cGYqKQogICAjIFRQRiBpcyBhIGNyb3NzLXRhcmdldCBvbmx5LiAgUHJlZmVycmVkIGNyb3NzLWhvc3QgPSBHTlUvTGludXguCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCkBAIC0xMDIxMSw3ICsxMTIzMCw3IEBACiAgIDs7CiAKIHV0czQqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKQEAgLTEwMzIzLDYgKzExMzQyLDExIEBACiAKIAogCisKKworCisKKwogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBoYXJkY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gcHJvZ3JhbXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGhhcmRjb2RlIGxpYnJhcnkgcGF0aHMgaW50byBwcm9ncmFtcy4uLiAiID4mNjsgfQogaGFyZGNvZGVfYWN0aW9uPQpAQCAtMTAzOTUsNyArMTE0MTksNyBAQAogICAjIGlmIGxpYmRsIGlzIGluc3RhbGxlZCB3ZSBuZWVkIHRvIGxpbmsgYWdhaW5zdCBpdAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9saWJfZGxfZGxvcGVuK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfbGliX2RsX2Rsb3Blbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKQEAgLTEwNDI5LDcgKzExNDUzLDcgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9kbF9kbG9wZW4iID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjY7IH0KLWlmIHRlc3QgIngkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9saWJfZGxfZGxvcGVuIiA9IHh5ZXM7IHRoZW4gOgogICBsdF9jdl9kbG9wZW49ImRsb3BlbiIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sZGwiCiBlbHNlCiAKQEAgLTEwNDQzLDEyICsxMTQ2NywxMiBAQAogCiAgICopCiAgICAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAic2hsX2xvYWQiICJhY19jdl9mdW5jX3NobF9sb2FkIgotaWYgdGVzdCAieCRhY19jdl9mdW5jX3NobF9sb2FkIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc2hsX2xvYWQiID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiCiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNobF9sb2FkIGluIC1sZGxkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBzaGxfbG9hZCBpbiAtbGRsZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9saWJfZGxkX3NobF9sb2FkK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfbGliX2RsZF9zaGxfbG9hZCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKQEAgLTEwNDgyLDE2ICsxMTUwNiwxNiBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2RsZF9zaGxfbG9hZCIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9kbGRfc2hsX2xvYWQiID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfZGxkX3NobF9sb2FkIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbGRfc2hsX2xvYWQiID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsZCIKIGVsc2UKICAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiZGxvcGVuIiAiYWNfY3ZfZnVuY19kbG9wZW4iCi1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZGxvcGVuIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZGxvcGVuIiA9IHh5ZXM7IHRoZW4gOgogICBsdF9jdl9kbG9wZW49ImRsb3BlbiIKIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2xpYl9kbF9kbG9wZW4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9saWJfZGxfZGxvcGVuKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpAQCAtMTA1MjUsMTIgKzExNTQ5LDEyIEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbF9kbG9wZW4iID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsIgogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxzdmxkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxzdmxkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2xpYl9zdmxkX2Rsb3BlbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2xpYl9zdmxkX2Rsb3Blbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKQEAgLTEwNTY0LDEyICsxMTU4OCwxMiBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3N2bGRfZGxvcGVuIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX3N2bGRfZGxvcGVuIiA+JjY7IH0KLWlmIHRlc3QgIngkYWNfY3ZfbGliX3N2bGRfZGxvcGVuIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9zdmxkX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbHN2bGQiCiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRsZF9saW5rIGluIC1sZGxkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBkbGRfbGluayBpbiAtbGRsZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9saWJfZGxkX2RsZF9saW5rK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfbGliX2RsZF9kbGRfbGluays6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKQEAgLTEwNjAzLDcgKzExNjI3LDcgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9kbGRfZGxkX2xpbmsiID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfZGxkX2RsZF9saW5rIiA+JjY7IH0KLWlmIHRlc3QgIngkYWNfY3ZfbGliX2RsZF9kbGRfbGluayIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9saWJfZGxkX2RsZF9saW5rIiA9IHh5ZXM7IHRoZW4gOgogICBsdF9jdl9kbG9wZW49ImRsZF9saW5rIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiCiBmaQogCkBAIC0xMDY0NCw3ICsxMTY2OCw3IEBACiAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgYSBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgYSBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X2Rsb3Blbl9zZWxmK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfZGxvcGVuX3NlbGYrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAJICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CkBAIC0xMDY1Myw3ICsxMTY3Nyw3IEBACiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLSNsaW5lIDEwNjU2ICJjb25maWd1cmUiCisjbGluZSAkTElORU5PICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmIEhBVkVfRExGQ05fSApAQCAtMTA2OTQsNyArMTE3MTgsMTMgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotdm9pZCBmbm9yZCgpIHsgaW50IGk9NDI7fQorLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCitpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisjZW5kaWYKKworaW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CiBpbnQgbWFpbiAoKQogewogICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKQEAgLTEwNzAzLDcgKzExNzMzLDExIEBACiAgIGlmIChzZWxmKQogICAgIHsKICAgICAgIGlmIChkbHN5bSAoc2VsZiwiZm5vcmQiKSkgICAgICAgc3RhdHVzID0gJGx0X2Rsbm9fdXNjb3JlOwotICAgICAgZWxzZSBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgIGVsc2UKKyAgICAgICAgeworCSAgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQiKSkgIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgICAgIGVsc2UgcHV0cyAoZGxlcnJvciAoKSk7CisJfQogICAgICAgLyogZGxjbG9zZSAoc2VsZik7ICovCiAgICAgfQogICBlbHNlCkBAIC0xMDc0MCw3ICsxMTc3NCw3IEBACiAgICAgICB3bD0kbHRfcHJvZ19jb21waWxlcl93bCBldmFsIExERkxBR1M9XCJcJExERkxBR1MgJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljXCIKICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBhIHN0YXRpY2FsbHkgbGlua2VkIHByb2dyYW0gY2FuIGRsb3BlbiBpdHNlbGYiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBhIHN0YXRpY2FsbHkgbGlua2VkIHByb2dyYW0gY2FuIGRsb3BlbiBpdHNlbGYuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgCSAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgpAQCAtMTA3NDksNyArMTE3ODMsNyBAQAogICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCiAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0jbGluZSAxMDc1MiAiY29uZmlndXJlIgorI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZiBIQVZFX0RMRkNOX0gKQEAgLTEwNzkwLDcgKzExODI0LDEzIEBACiAjICBlbmRpZgogI2VuZGlmCiAKLXZvaWQgZm5vcmQoKSB7IGludCBpPTQyO30KKy8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQoraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworI2VuZGlmCisKK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQogaW50IG1haW4gKCkKIHsKICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CkBAIC0xMDc5OSw3ICsxMTgzOSwxMSBAQAogICBpZiAoc2VsZikKICAgICB7CiAgICAgICBpZiAoZGxzeW0gKHNlbGYsImZub3JkIikpICAgICAgIHN0YXR1cyA9ICRsdF9kbG5vX3VzY29yZTsKLSAgICAgIGVsc2UgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQiKSkgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICBlbHNlCisgICAgICAgIHsKKwkgIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpICBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgICAgICBlbHNlIHB1dHMgKGRsZXJyb3IgKCkpOworCX0KICAgICAgIC8qIGRsY2xvc2UgKHNlbGYpOyAqLwogICAgIH0KICAgZWxzZQpAQCAtMTA5NjgsNiArMTIwMTIsOCBAQAogCiAKIAorCisKICAgICAgICAgYWNfY29uZmlnX2NvbW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIGxpYnRvb2wiCiAKIApAQCAtMTA5NzgsNiArMTIwMjQsOTc3IEBACiAKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIHZlbmRvciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQyBjb21waWxlciB2ZW5kb3IuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfY19jb21waWxlcl92ZW5kb3IrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICAjIG5vdGU6IGRvbid0IGNoZWNrIGZvciBnY2MgZmlyc3Qgc2luY2Ugc29tZSBvdGhlciBjb21waWxlcnMgZGVmaW5lIF9fR05VQ19fCisgIHZlbmRvcnM9ImludGVsOiAgICAgX19JQ0MsX19FQ0MsX19JTlRFTF9DT01QSUxFUgorICAgICAgICAgICBpYm06ICAgICAgIF9feGxjX18sX194bENfXyxfX0lCTUNfXyxfX0lCTUNQUF9fCisgICAgICAgICAgIHBhdGhzY2FsZTogX19QQVRIQ0NfXyxfX1BBVEhTQ0FMRV9fCisgICAgICAgICAgIGNsYW5nOiAgICAgX19jbGFuZ19fCisgICAgICAgICAgIGdudTogICAgICAgX19HTlVDX18KKyAgICAgICAgICAgc3VuOiAgICAgICBfX1NVTlBST19DLF9fU1VOUFJPX0NDCisgICAgICAgICAgIGhwOiAgICAgICAgX19IUF9jYyxfX0hQX2FDQworICAgICAgICAgICBkZWM6ICAgICAgIF9fREVDQyxfX0RFQ0NYWCxfX0RFQ0NfVkVSLF9fREVDQ1hYX1ZFUgorICAgICAgICAgICBib3JsYW5kOiAgIF9fQk9STEFORENfXyxfX1RVUkJPQ19fCisgICAgICAgICAgIGNvbWVhdTogICAgX19DT01PX18KKyAgICAgICAgICAgY3JheTogICAgICBfQ1JBWUMKKyAgICAgICAgICAga2FpOiAgICAgICBfX0tDQworICAgICAgICAgICBsY2M6ICAgICAgIF9fTENDX18KKyAgICAgICAgICAgc2dpOiAgICAgICBfX3NnaSxzZ2kKKyAgICAgICAgICAgbWljcm9zb2Z0OiBfTVNDX1ZFUgorICAgICAgICAgICBtZXRyb3dlcmtzOiBfX01XRVJLU19fCisgICAgICAgICAgIHdhdGNvbTogICAgX19XQVRDT01DX18KKyAgICAgICAgICAgcG9ydGxhbmQ6ICBfX1BHSQorICAgICAgICAgICB1bmtub3duOiAgIFVOS05PV04iCisgIGZvciB2ZW50ZXN0IGluICR2ZW5kb3JzOyBkbworICAgIGNhc2UgJHZlbnRlc3QgaW4KKyAgICAgICo6KSB2ZW5kb3I9JHZlbnRlc3Q7IGNvbnRpbnVlIDs7CisgICAgICAqKSAgdmVuY3BwPSJkZWZpbmVkKCJgZWNobyAkdmVudGVzdCB8IHNlZCAncy8sLykgfHwgZGVmaW5lZCgvZydgIikiIDs7CisgICAgZXNhYworICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgICAgICNpZiAhKCR2ZW5jcHApCisgICAgICAgIHRoaXNpc2FuZXJyb3I7CisgICAgICAjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGJyZWFrCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIGRvbmUKKyAgYXhfY3ZfY19jb21waWxlcl92ZW5kb3I9YGVjaG8gJHZlbmRvciB8IGN1dCAtZDogLWYxYAorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9jX2NvbXBpbGVyX3ZlbmRvciIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2NfY29tcGlsZXJfdmVuZG9yIiA+JjY7IH0KKworCisKKworCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb3J0YWJsZS1iaW5hcnkgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfcG9ydGFibGVfYmluYXJ5K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfcG9ydGFibGVfYmluYXJ5OyBhY3hfbWF4b3B0X3BvcnRhYmxlPSR3aXRodmFsCitlbHNlCisgIGFjeF9tYXhvcHRfcG9ydGFibGU9bm8KK2ZpCisKKworIyBUcnkgdG8gZGV0ZXJtaW5lICJnb29kIiBuYXRpdmUgY29tcGlsZXIgZmxhZ3MgaWYgbm9uZSBzcGVjaWZpZWQgdmlhIENGTEFHUworaWYgdGVzdCAiJGFjX3Rlc3RfQ0ZMQUdTIiAhPSAic2V0IjsgdGhlbgorICBDRkxBR1M9IiIKKyAgY2FzZSAkYXhfY3ZfY19jb21waWxlcl92ZW5kb3IgaW4KKyAgICBkZWMpIENGTEFHUz0iLW5ld2MgLXcwIC1PNSAtYW5zaV9hbGlhcyAtYW5zaV9hcmdzIC1mcF9yZW9yZGVyIC10dW5lIGhvc3QiCisJIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4bm87IHRoZW4KKyAgICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1hcmNoIGhvc3QiCisgICAgICAgICBmaTs7CisKKyAgICBzdW4pIENGTEFHUz0iLW5hdGl2ZSAtZmFzdCAteE81IC1kYWxpZ24iCisJIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4eWVzOyB0aGVuCisJICAgQ0ZMQUdTPSIkQ0ZMQUdTIC14YXJjaD1nZW5lcmljIgorICAgICAgICAgZmk7OworCisgICAgaHApICBDRkxBR1M9IitPYWxsICtPcHRyc19hbnNpICtEU25hdGl2ZSIKKwkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHh5ZXM7IHRoZW4KKwkgICBDRkxBR1M9IiRDRkxBR1MgK0RBcG9ydGFibGUiCisJIGZpOzsKKworICAgIGlibSkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHhubzsgdGhlbgorICAgICAgICAgICB4bGNfb3B0PSItcWFyY2g9YXV0byAtcXR1bmU9YXV0byIKKwkgZWxzZQorICAgICAgICAgICB4bGNfb3B0PSItcXR1bmU9YXV0byIKKwkgZmkKKyAgICAgICAgIGFzX0NBQ0hFVkFSPWAkYXNfZWNobyAiYXhfY3ZfY2hlY2tfY2ZsYWdzX18keGxjX29wdCIgfCAkYXNfdHJfc2hgCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzICR4bGNfb3B0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzICR4bGNfb3B0Li4uICIgPiY2OyB9CitpZiBldmFsIFwkeyRhc19DQUNIRVZBUis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kQ0ZMQUdTCisgIENGTEFHUz0iJENGTEFHUyAgJHhsY19vcHQiCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBldmFsICIkYXNfQ0FDSEVWQVI9eWVzIgorZWxzZQorICBldmFsICIkYXNfQ0FDSEVWQVI9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIENGTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFncworZmkKK2V2YWwgYWNfcmVzPVwkJGFzX0NBQ0hFVkFSCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KK2lmIHRlc3QgeCJgZXZhbCAnYXNfdmFsPSR7JyRhc19DQUNIRVZBUid9OyRhc19lY2hvICIkYXNfdmFsIidgIiA9IHh5ZXM7IHRoZW4gOgorICBDRkxBR1M9Ii1PMyAtcWFuc2lhbGlhcyAtdyAkeGxjX29wdCIKK2Vsc2UKKyAgQ0ZMQUdTPSItTzMgLXFhbnNpYWxpYXMgLXciCisgICAgICAgICAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIFlvdSBzZWVtIHRvIGhhdmUgdGhlIElCTSAgQyBjb21waWxlci4gIEl0IGlzICAgICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICByZWNvbW1lbmRlZCBmb3IgYmVzdCBwZXJmb3JtYW5jZSB0aGF0IHlvdSB1c2U6ICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogICAgQ0ZMQUdTPS1PMyAtcWFyY2g9eHh4IC1xdHVuZT14eHggLXFhbnNpYWxpYXMgLXcgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICAgICAgICAgICAgICAgICAgICAgIF5eXiAgICAgICAgXl5eICAgICAgICAgICAgICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgd2hlcmUgeHh4IGlzIHB3cjIsIHB3cjMsIDYwNCwgb3Igd2hhdGV2ZXIga2luZCBvZiAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIENQVSB5b3UgaGF2ZS4gIChTZXQgdGhlIENGTEFHUyBlbnZpcm9ubWVudCB2YXIuICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICBhbmQgcmUtcnVuIGNvbmZpZ3VyZS4pICBGb3IgbW9yZSBpbmZvLCBtYW4gY2MuICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorZmkKKworICAgICAgICAgOzsKKworICAgIGludGVsKSBDRkxBR1M9Ii1PMyAtYW5zaV9hbGlhcyIKKwlpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geG5vOyB0aGVuCisJICBpY2NfYXJjaGZsYWc9dW5rbm93bgorCSAgaWNjX2ZsYWdzPSIiCisJICBjYXNlICRob3N0X2NwdSBpbgorCSAgICBpNjg2Knx4ODZfNjQqKQorICAgICAgICAgICAgICAjIGljYyBhY2NlcHRzIGdjYyBhc3NlbWJseSBzeW50YXgsIHNvIHRoZXNlIHNob3VsZCB3b3JrOgorCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAwIG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgeDg2IGNwdWlkIDAgb3V0cHV0Li4uICIgPiY2OyB9CitpZiAke2F4X2N2X2djY194ODZfY3B1aWRfMCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wPXVua25vd24KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKKworICAgICBpbnQgb3AgPSAwLCBlYXgsIGVieCwgZWN4LCBlZHg7CisgICAgIEZJTEUgKmY7CisgICAgICBfX2FzbV9fKCJjcHVpZCIKKyAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpLCAiPWMiIChlY3gpLCAiPWQiIChlZHgpCisgICAgICAgIDogImEiIChvcCkpOworICAgICBmID0gZm9wZW4oImNvbmZ0ZXN0X2NwdWlkIiwgInciKTsgaWYgKCFmKSByZXR1cm4gMTsKKyAgICAgZnByaW50ZihmLCAiJXg6JXg6JXg6JXhcbiIsIGVheCwgZWJ4LCBlY3gsIGVkeCk7CisgICAgIGZjbG9zZShmKTsKKyAgICAgcmV0dXJuIDA7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMD1gY2F0IGNvbmZ0ZXN0X2NwdWlkYDsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2Vsc2UKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wPXVua25vd247IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIiA+JjY7IH0KK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeDg2IGNwdWlkIDEgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB4ODYgY3B1aWQgMSBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzE9dW5rbm93bgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworCisgICAgIGludCBvcCA9IDEsIGVheCwgZWJ4LCBlY3gsIGVkeDsKKyAgICAgRklMRSAqZjsKKyAgICAgIF9fYXNtX18oImNwdWlkIgorICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCksICI9YyIgKGVjeCksICI9ZCIgKGVkeCkKKyAgICAgICAgOiAiYSIgKG9wKSk7CisgICAgIGYgPSBmb3BlbigiY29uZnRlc3RfY3B1aWQiLCAidyIpOyBpZiAoIWYpIHJldHVybiAxOworICAgICBmcHJpbnRmKGYsICIleDoleDoleDoleFxuIiwgZWF4LCBlYngsIGVjeCwgZWR4KTsKKyAgICAgZmNsb3NlKGYpOworICAgICByZXR1cm4gMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xPWBjYXQgY29uZnRlc3RfY3B1aWRgOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZWxzZQorICBheF9jdl9nY2NfeDg2X2NwdWlkXzE9dW5rbm93bjsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9nY2NfeDg2X2NwdWlkXzEiID4mNQorJGFzX2VjaG8gIiRheF9jdl9nY2NfeDg2X2NwdWlkXzEiID4mNjsgfQorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKKwkgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzAgaW4gIyBzZWUgQVhfR0NDX0FSQ0hGTEFHCisgICAgICAgICAgICAgICAgKjo3NTZlNjU0NzoqOiopICMgSW50ZWwKKyAgICAgICAgICAgICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorICAgICAgICAgICAgICAgICAgICAqNmE/OipbMjM0XToqOip8KjZbNzg5Yl0/Oio6KjoqKSBpY2NfZmxhZ3M9Ii14SyI7OworICAgICAgICAgICAgICAgICAgICAqZjNbMzQ3XToqOio6KnwqZjQxMzQ3Oio6KjoqKSBpY2NfZmxhZ3M9Ii14UCAteE4gLXhXIC14SyI7OworICAgICAgICAgICAgICAgICAgICAqZj8/Oio6KjoqKSBpY2NfZmxhZ3M9Ii14TiAteFcgLXhLIjs7CisgICAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgaWYgdGVzdCAieCRpY2NfZmxhZ3MiICE9IHg7IHRoZW4KKyAgICAgICAgICAgIGZvciBmbGFnIGluICRpY2NfZmxhZ3M7IGRvCisgICAgICAgICAgICAgIGFzX0NBQ0hFVkFSPWAkYXNfZWNobyAiYXhfY3ZfY2hlY2tfY2ZsYWdzX18kZmxhZyIgfCAkYXNfdHJfc2hgCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzICRmbGFnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzICRmbGFnLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyRhc19DQUNIRVZBUis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kQ0ZMQUdTCisgIENGTEFHUz0iJENGTEFHUyAgJGZsYWciCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBldmFsICIkYXNfQ0FDSEVWQVI9eWVzIgorZWxzZQorICBldmFsICIkYXNfQ0FDSEVWQVI9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIENGTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFncworZmkKK2V2YWwgYWNfcmVzPVwkJGFzX0NBQ0hFVkFSCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KK2lmIHRlc3QgeCJgZXZhbCAnYXNfdmFsPSR7JyRhc19DQUNIRVZBUid9OyRhc19lY2hvICIkYXNfdmFsIidgIiA9IHh5ZXM7IHRoZW4gOgorICBpY2NfYXJjaGZsYWc9JGZsYWc7IGJyZWFrCitlbHNlCisgIDoKK2ZpCisKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGljYyBhcmNoaXRlY3R1cmUgZmxhZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgaWNjIGFyY2hpdGVjdHVyZSBmbGFnLi4uICIgPiY2OyB9CisJICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGljY19hcmNoZmxhZyIgPiY1CiskYXNfZWNobyAiJGljY19hcmNoZmxhZyIgPiY2OyB9CisgICAgICAgICAgaWYgdGVzdCAieCRpY2NfYXJjaGZsYWciICE9IHh1bmtub3duOyB0aGVuCisgICAgICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJGljY19hcmNoZmxhZyIKKyAgICAgICAgICBmaQorICAgICAgICBmaQorCTs7CisKKyAgICBnbnUpCisgICAgICMgZGVmYXVsdCBvcHRpbWl6YXRpb24gZmxhZ3MgZm9yIGdjYyBvbiBhbGwgc3lzdGVtcworICAgICBDRkxBR1M9Ii1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciIKKworICAgICAjIC1tYWxpZ24tZG91YmxlIGZvciB4ODYgc3lzdGVtcworICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzIC1tYWxpZ24tZG91YmxlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzIC1tYWxpZ24tZG91YmxlLi4uICIgPiY2OyB9CitpZiAke2F4X2N2X2NoZWNrX2NmbGFnc19fX21hbGlnbl9kb3VibGUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JENGTEFHUworICBDRkxBR1M9IiRDRkxBR1MgIC1tYWxpZ24tZG91YmxlIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfY2hlY2tfY2ZsYWdzX19fbWFsaWduX2RvdWJsZT15ZXMKK2Vsc2UKKyAgYXhfY3ZfY2hlY2tfY2ZsYWdzX19fbWFsaWduX2RvdWJsZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2NoZWNrX2NmbGFnc19fX21hbGlnbl9kb3VibGUiID4mNQorJGFzX2VjaG8gIiRheF9jdl9jaGVja19jZmxhZ3NfX19tYWxpZ25fZG91YmxlIiA+JjY7IH0KK2lmIHRlc3QgeCIkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fbWFsaWduX2RvdWJsZSIgPSB4eWVzOyB0aGVuIDoKKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1tYWxpZ24tZG91YmxlIgorZWxzZQorICA6CitmaQorCisKKyAgICAgIyAgLWZzdHJpY3QtYWxpYXNpbmcgZm9yIGdjYy0yLjk1KworICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzIC1mc3RyaWN0LWFsaWFzaW5nIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzIC1mc3RyaWN0LWFsaWFzaW5nLi4uICIgPiY2OyB9CitpZiAke2F4X2N2X2NoZWNrX2NmbGFnc19fX2ZzdHJpY3RfYWxpYXNpbmcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JENGTEFHUworICBDRkxBR1M9IiRDRkxBR1MgIC1mc3RyaWN0LWFsaWFzaW5nIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZnN0cmljdF9hbGlhc2luZz15ZXMKK2Vsc2UKKyAgYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZnN0cmljdF9hbGlhc2luZz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZzdHJpY3RfYWxpYXNpbmciID4mNQorJGFzX2VjaG8gIiRheF9jdl9jaGVja19jZmxhZ3NfX19mc3RyaWN0X2FsaWFzaW5nIiA+JjY7IH0KK2lmIHRlc3QgeCIkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZnN0cmljdF9hbGlhc2luZyIgPSB4eWVzOyB0aGVuIDoKKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1mc3RyaWN0LWFsaWFzaW5nIgorZWxzZQorICA6CitmaQorCisKKyAgICAgIyBub3RlIHRoYXQgd2UgZW5hYmxlICJ1bnNhZmUiIGZwIG9wdGltaXphdGlvbiB3aXRoIG90aGVyIGNvbXBpbGVycywgdG9vCisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgLWZmYXN0LW1hdGgiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgLWZmYXN0LW1hdGguLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfY2hlY2tfY2ZsYWdzX19fZmZhc3RfbWF0aCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kQ0ZMQUdTCisgIENGTEFHUz0iJENGTEFHUyAgLWZmYXN0LW1hdGgiCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9jaGVja19jZmxhZ3NfX19mZmFzdF9tYXRoPXllcworZWxzZQorICBheF9jdl9jaGVja19jZmxhZ3NfX19mZmFzdF9tYXRoPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIENGTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFncworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZmZhc3RfbWF0aCIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZmYXN0X21hdGgiID4mNjsgfQoraWYgdGVzdCB4IiRheF9jdl9jaGVja19jZmxhZ3NfX19mZmFzdF9tYXRoIiA9IHh5ZXM7IHRoZW4gOgorICBDRkxBR1M9IiRDRkxBR1MgLWZmYXN0LW1hdGgiCitlbHNlCisgIDoKK2ZpCisKKworCisKKworCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWdjYy1hcmNoIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9nY2NfYXJjaCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfZ2NjX2FyY2g7IGF4X2djY19hcmNoPSR3aXRodmFsCitlbHNlCisgIGF4X2djY19hcmNoPXllcworZmkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBnY2MgYXJjaGl0ZWN0dXJlIGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdjYyBhcmNoaXRlY3R1cmUgZmxhZy4uLiAiID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICIgPiY1CiskYXNfZWNobyAiIiA+JjY7IH0KK2lmICR7YXhfY3ZfZ2NjX2FyY2hmbGFnKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworYXhfY3ZfZ2NjX2FyY2hmbGFnPSJ1bmtub3duIgorCitpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCitpZiB0ZXN0ICJ4JGF4X2djY19hcmNoIiA9IHh5ZXM7IHRoZW4KK2F4X2djY19hcmNoPSIiCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG5vOyB0aGVuCitjYXNlICRob3N0X2NwdSBpbgorICBpWzM0NTZdODYqfHg4Nl82NCopICMgdXNlIGNwdWlkIGNvZGVzLCBpbiBwYXJ0IGZyb20geDg2aW5mby0xLjcgYnkgRC4gSm9uZXMKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB4ODYgY3B1aWQgMCBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAwIG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9nY2NfeDg2X2NwdWlkXzArOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMD11bmtub3duCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CisKKyAgICAgaW50IG9wID0gMCwgZWF4LCBlYngsIGVjeCwgZWR4OworICAgICBGSUxFICpmOworICAgICAgX19hc21fXygiY3B1aWQiCisgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KSwgIj1jIiAoZWN4KSwgIj1kIiAoZWR4KQorICAgICAgICA6ICJhIiAob3ApKTsKKyAgICAgZiA9IGZvcGVuKCJjb25mdGVzdF9jcHVpZCIsICJ3Iik7IGlmICghZikgcmV0dXJuIDE7CisgICAgIGZwcmludGYoZiwgIiV4OiV4OiV4OiV4XG4iLCBlYXgsIGVieCwgZWN4LCBlZHgpOworICAgICBmY2xvc2UoZik7CisgICAgIHJldHVybiAwOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzA9YGNhdCBjb25mdGVzdF9jcHVpZGA7IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitlbHNlCisgIGF4X2N2X2djY194ODZfY3B1aWRfMD11bmtub3duOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2djY194ODZfY3B1aWRfMCIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2djY194ODZfY3B1aWRfMCIgPiY2OyB9CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAxIG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgeDg2IGNwdWlkIDEgb3V0cHV0Li4uICIgPiY2OyB9CitpZiAke2F4X2N2X2djY194ODZfY3B1aWRfMSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xPXVua25vd24KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKKworICAgICBpbnQgb3AgPSAxLCBlYXgsIGVieCwgZWN4LCBlZHg7CisgICAgIEZJTEUgKmY7CisgICAgICBfX2FzbV9fKCJjcHVpZCIKKyAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpLCAiPWMiIChlY3gpLCAiPWQiIChlZHgpCisgICAgICAgIDogImEiIChvcCkpOworICAgICBmID0gZm9wZW4oImNvbmZ0ZXN0X2NwdWlkIiwgInciKTsgaWYgKCFmKSByZXR1cm4gMTsKKyAgICAgZnByaW50ZihmLCAiJXg6JXg6JXg6JXhcbiIsIGVheCwgZWJ4LCBlY3gsIGVkeCk7CisgICAgIGZjbG9zZShmKTsKKyAgICAgcmV0dXJuIDA7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMT1gY2F0IGNvbmZ0ZXN0X2NwdWlkYDsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2Vsc2UKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xPXVua25vd247IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIiA+JjY7IH0KK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworCisgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMCBpbgorICAgICAgICo6NzU2ZTY1NDc6KjoqKSAjIEludGVsCisgICAgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisJICAgICo1WzQ4XT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtLW1teCBwZW50aXVtIiA7OworCSAgICAqNT8/Oio6KjoqKSBheF9nY2NfYXJjaD1wZW50aXVtIDs7CisJICAgICo2WzM0NTZdPzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0yIHBlbnRpdW1wcm8iIDs7CisJICAgICo2YT86KlswMV06KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTIgcGVudGl1bXBybyIgOzsKKwkgICAgKjZhPzoqWzIzNF06KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTMgcGVudGl1bXBybyIgOzsKKwkgICAgKjZbOWRdPzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0tbSBwZW50aXVtMyBwZW50aXVtcHJvIiA7OworCSAgICAqNls3OGJdPzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0zIHBlbnRpdW1wcm8iIDs7CisJICAgICo2Pz86KjoqOiopIGF4X2djY19hcmNoPXBlbnRpdW1wcm8gOzsKKyAgICAgICAgICAgICpmM1szNDddOio6KjoqfCpmNDEzNDc6KjoqOiopCisJCWNhc2UgJGhvc3RfY3B1IGluCisgICAgICAgICAgICAgICAgICB4ODZfNjQqKSBheF9nY2NfYXJjaD0ibm9jb25hIHBlbnRpdW00IHBlbnRpdW1wcm8iIDs7CisgICAgICAgICAgICAgICAgICAqKSBheF9nY2NfYXJjaD0icHJlc2NvdHQgcGVudGl1bTQgcGVudGl1bXBybyIgOzsKKyAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICAqZj8/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTQgcGVudGl1bXBybyI7OworICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAqOjY4NzQ3NTQxOio6KikgIyBBTUQKKyAgICAgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKwkgICAgKjVbNjddPzoqOio6KikgYXhfZ2NjX2FyY2g9azYgOzsKKwkgICAgKjVbOGRdPzoqOio6KikgYXhfZ2NjX2FyY2g9Ims2LTIgazYiIDs7CisJICAgICo1WzldPzoqOio6KikgYXhfZ2NjX2FyY2g9Ims2LTMgazYiIDs7CisJICAgICo2MD86KjoqOiopIGF4X2djY19hcmNoPWs3IDs7CisJICAgICo2WzEyXT86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24gazciIDs7CisJICAgICo2WzM0XT86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24tdGJpcmQgazciIDs7CisJICAgICo2Nz86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24tNCBhdGhsb24gazciIDs7CisJICAgICo2WzY4YV0/Oio6KjoqKQorCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAweDgwMDAwMDA2IG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgeDg2IGNwdWlkIDB4ODAwMDAwMDYgb3V0cHV0Li4uICIgPiY2OyB9CitpZiAke2F4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2PXVua25vd24KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKKworICAgICBpbnQgb3AgPSAweDgwMDAwMDA2LCBlYXgsIGVieCwgZWN4LCBlZHg7CisgICAgIEZJTEUgKmY7CisgICAgICBfX2FzbV9fKCJjcHVpZCIKKyAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpLCAiPWMiIChlY3gpLCAiPWQiIChlZHgpCisgICAgICAgIDogImEiIChvcCkpOworICAgICBmID0gZm9wZW4oImNvbmZ0ZXN0X2NwdWlkIiwgInciKTsgaWYgKCFmKSByZXR1cm4gMTsKKyAgICAgZnByaW50ZihmLCAiJXg6JXg6JXg6JXhcbiIsIGVheCwgZWJ4LCBlY3gsIGVkeCk7CisgICAgIGZjbG9zZShmKTsKKyAgICAgcmV0dXJuIDA7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNj1gY2F0IGNvbmZ0ZXN0X2NwdWlkYDsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2Vsc2UKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2PXVua25vd247IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2IiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2IiA+JjY7IH0KK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworICMgTDIgY2FjaGUgc2l6ZQorCSAgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDYgaW4KKyAgICAgICAgICAgICAgICAgKjoqOipbMS05YS1mXT8/Pz8/PzoqKSAjIChMMiA9IGVjeCA+PiAxNikgPj0gMjU2CisJCQlheF9nY2NfYXJjaD0iYXRobG9uLXhwIGF0aGxvbi00IGF0aGxvbiBrNyIgOzsKKyAgICAgICAgICAgICAgICAgKikgYXhfZ2NjX2FyY2g9ImF0aGxvbi00IGF0aGxvbiBrNyIgOzsKKwkgICAgICAgZXNhYyA7OworCSAgICAqZls0Y2VmOGJdPzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbjY0IGs4IiA7OworCSAgICAqZjU/Oio6KjoqKSBheF9nY2NfYXJjaD0ib3B0ZXJvbiBrOCIgOzsKKwkgICAgKmY3PzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbi1meCBvcHRlcm9uIGs4IiA7OworCSAgICAqZj8/Oio6KjoqKSBheF9nY2NfYXJjaD0iazgiIDs7CisgICAgICAgICAgZXNhYyA7OworCSo6NzQ2ZTY1NDM6KjoqKSAjIElEVAorCSAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorCSAgICAgKjU0PzoqOio6KikgYXhfZ2NjX2FyY2g9d2luY2hpcC1jNiA7OworCSAgICAgKjU4PzoqOio6KikgYXhfZ2NjX2FyY2g9d2luY2hpcDIgOzsKKwkgICAgICo2Wzc4XT86KjoqOiopIGF4X2djY19hcmNoPWMzIDs7CisJICAgICAqNjk/Oio6KjoqKSBheF9nY2NfYXJjaD0iYzMtMiBjMyIgOzsKKwkgICBlc2FjIDs7CisgICAgIGVzYWMKKyAgICAgaWYgdGVzdCB4IiRheF9nY2NfYXJjaCIgPSB4OyB0aGVuICMgZmFsbGJhY2sKKwljYXNlICRob3N0X2NwdSBpbgorCSAgaTU4NiopIGF4X2djY19hcmNoPXBlbnRpdW0gOzsKKwkgIGk2ODYqKSBheF9nY2NfYXJjaD1wZW50aXVtcHJvIDs7CisgICAgICAgIGVzYWMKKyAgICAgZmkKKyAgICAgOzsKKworICBzcGFyYyopCisgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicHJ0ZGlhZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgcHJ0ZGlhZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfUFJURElBRys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFBSVERJQUcgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfUFJURElBRz0iJFBSVERJQUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCithc19kdW1teT0iJFBBVEg6L3Vzci9wbGF0Zm9ybS9gdW5hbWUgLWlgL3NiaW4vOi91c3IvcGxhdGZvcm0vYHVuYW1lIC1tYC9zYmluLyIKK2ZvciBhc19kaXIgaW4gJGFzX2R1bW15CitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX1BSVERJQUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfUFJURElBRyIgJiYgYWNfY3ZfcGF0aF9QUlRESUFHPSJwcnRkaWFnIgorICA7OworZXNhYworZmkKK1BSVERJQUc9JGFjX2N2X3BhdGhfUFJURElBRworaWYgdGVzdCAtbiAiJFBSVERJQUciOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUFJURElBRyIgPiY1CiskYXNfZWNobyAiJFBSVERJQUciID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICAgICBjcHV0eXBlPWAoKChncmVwIGNwdSAvcHJvYy9jcHVpbmZvIHwgY3V0IC1kOiAtZjIpIDsgKCRQUlRESUFHIC12IHxncmVwIC1pIHNwYXJjKSA7IGdyZXAgLWkgY3B1IC92YXIvcnVuL2RtZXNnLmJvb3QgKSB8IGhlYWQgLW4gMSkgMj4gL2Rldi9udWxsYAorICAgICBjcHV0eXBlPWBlY2hvICIkY3B1dHlwZSIgfCB0ciAtZCAnIC0nIHx0ciAkYXNfY3JfTEVUVEVSUyAkYXNfY3JfbGV0dGVyc2AKKyAgICAgY2FzZSAkY3B1dHlwZSBpbgorICAgICAgICAgKnVsdHJhc3BhcmNpdiopIGF4X2djY19hcmNoPSJ1bHRyYXNwYXJjNCB1bHRyYXNwYXJjMyB1bHRyYXNwYXJjIHY5IiA7OworICAgICAgICAgKnVsdHJhc3BhcmNpaWkqKSBheF9nY2NfYXJjaD0idWx0cmFzcGFyYzMgdWx0cmFzcGFyYyB2OSIgOzsKKyAgICAgICAgICp1bHRyYXNwYXJjKikgYXhfZ2NjX2FyY2g9InVsdHJhc3BhcmMgdjkiIDs7CisgICAgICAgICAqc3VwZXJzcGFyYyp8KnRtczM5MHo1WzA1XSopIGF4X2djY19hcmNoPSJzdXBlcnNwYXJjIHY4IiA7OworICAgICAgICAgKmh5cGVyc3BhcmMqfCpydDYyWzA1Nl0qKSBheF9nY2NfYXJjaD0iaHlwZXJzcGFyYyB2OCIgOzsKKyAgICAgICAgICpjeXByZXNzKikgYXhfZ2NjX2FyY2g9Y3lwcmVzcyA7OworICAgICBlc2FjIDs7CisKKyAgYWxwaGFldjUpIGF4X2djY19hcmNoPWV2NSA7OworICBhbHBoYWV2NTYpIGF4X2djY19hcmNoPWV2NTYgOzsKKyAgYWxwaGFwY2E1NikgYXhfZ2NjX2FyY2g9InBjYTU2IGV2NTYiIDs7CisgIGFscGhhcGNhNTcpIGF4X2djY19hcmNoPSJwY2E1NyBwY2E1NiBldjU2IiA7OworICBhbHBoYWV2NikgYXhfZ2NjX2FyY2g9ZXY2IDs7CisgIGFscGhhZXY2NykgYXhfZ2NjX2FyY2g9ZXY2NyA7OworICBhbHBoYWV2NjgpIGF4X2djY19hcmNoPSJldjY4IGV2NjciIDs7CisgIGFscGhhZXY2OSkgYXhfZ2NjX2FyY2g9ImV2NjkgZXY2OCBldjY3IiA7OworICBhbHBoYWV2NykgYXhfZ2NjX2FyY2g9ImV2NyBldjY5IGV2NjggZXY2NyIgOzsKKyAgYWxwaGFldjc5KSBheF9nY2NfYXJjaD0iZXY3OSBldjcgZXY2OSBldjY4IGV2NjciIDs7CisKKyAgcG93ZXJwYyopCisgICAgIGNwdXR5cGU9YCgoZ3JlcCBjcHUgL3Byb2MvY3B1aW5mbyB8IGhlYWQgLW4gMSB8IGN1dCAtZDogLWYyIHwgY3V0IC1kLCAtZjEgfCBzZWQgJ3MvIC8vZycpIDsgL3Vzci9iaW4vbWFjaGluZSA7IC9iaW4vbWFjaGluZTsgZ3JlcCBDUFUgL3Zhci9ydW4vZG1lc2cuYm9vdCB8IGhlYWQgLW4gMSB8IGN1dCAtZCIgIiAtZjIpIDI+IC9kZXYvbnVsbGAKKyAgICAgY3B1dHlwZT1gZWNobyAkY3B1dHlwZSB8IHNlZCAtZSAncy9wcGMvL2c7cy8gKi8vZydgCisgICAgIGNhc2UgJGNwdXR5cGUgaW4KKyAgICAgICAqNzUwKikgYXhfZ2NjX2FyY2g9Ijc1MCBHMyIgOzsKKyAgICAgICAqNzQwWzAtOV0qKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgNzQwMCBHNCIgOzsKKyAgICAgICAqNzRbNC01XVswLTldKikgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIDc0NTAgRzQiIDs7CisgICAgICAgKjc0WzAtOV1bMC05XSopIGF4X2djY19hcmNoPSIkY3B1dHlwZSBHNCIgOzsKKyAgICAgICAqOTcwKikgYXhfZ2NjX2FyY2g9Ijk3MCBHNSBwb3dlcjQiOzsKKyAgICAgICAqUE9XRVI0KnwqcG93ZXI0KnwqZ3EqKSBheF9nY2NfYXJjaD0icG93ZXI0IDk3MCI7OworICAgICAgICpQT1dFUjUqfCpwb3dlcjUqfCpncip8KmdzKikgYXhfZ2NjX2FyY2g9InBvd2VyNSBwb3dlcjQgOTcwIjs7CisgICAgICAgNjAzZXZ8ODI0MCkgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIDYwM2UgNjAzIjs7CisgICAgICAgKikgYXhfZ2NjX2FyY2g9JGNwdXR5cGUgOzsKKyAgICAgZXNhYworICAgICBheF9nY2NfYXJjaD0iJGF4X2djY19hcmNoIHBvd2VycGMiCisgICAgIDs7Citlc2FjCitmaSAjIG5vdCBjcm9zcy1jb21waWxpbmcKK2ZpICMgZ3Vlc3MgYXJjaAorCitpZiB0ZXN0ICJ4JGF4X2djY19hcmNoIiAhPSB4IC1hICJ4JGF4X2djY19hcmNoIiAhPSB4bm87IHRoZW4KK2ZvciBhcmNoIGluICRheF9nY2NfYXJjaDsgZG8KKyAgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHh5ZXM7IHRoZW4gIyBpZiB3ZSByZXF1aXJlIHBvcnRhYmxlIGNvZGUKKyAgICBmbGFncz0iLW10dW5lPSRhcmNoIgorICAgICMgLW1jcHU9JGFyY2ggYW5kIG0kYXJjaCBnZW5lcmF0ZSBub25wb3J0YWJsZSBjb2RlIG9uIGV2ZXJ5IGFyY2ggZXhjZXB0CisgICAgIyB4ODYuICBBbmQgc29tZSBvdGhlciBhcmNoZXMgKGUuZy4gQWxwaGEpIGRvbid0IGFjY2VwdCAtbXR1bmUuICBHcnJyLgorICAgIGNhc2UgJGhvc3RfY3B1IGluIGkqODZ8eDg2XzY0KikgZmxhZ3M9IiRmbGFncyAtbWNwdT0kYXJjaCAtbSRhcmNoIjs7IGVzYWMKKyAgZWxzZQorICAgIGZsYWdzPSItbWFyY2g9JGFyY2ggLW1jcHU9JGFyY2ggLW0kYXJjaCIKKyAgZmkKKyAgZm9yIGZsYWcgaW4gJGZsYWdzOyBkbworICAgIGFzX0NBQ0hFVkFSPWAkYXNfZWNobyAiYXhfY3ZfY2hlY2tfY2ZsYWdzX18kZmxhZyIgfCAkYXNfdHJfc2hgCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzICRmbGFnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzICRmbGFnLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyRhc19DQUNIRVZBUis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kQ0ZMQUdTCisgIENGTEFHUz0iJENGTEFHUyAgJGZsYWciCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBldmFsICIkYXNfQ0FDSEVWQVI9eWVzIgorZWxzZQorICBldmFsICIkYXNfQ0FDSEVWQVI9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIENGTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFncworZmkKK2V2YWwgYWNfcmVzPVwkJGFzX0NBQ0hFVkFSCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KK2lmIHRlc3QgeCJgZXZhbCAnYXNfdmFsPSR7JyRhc19DQUNIRVZBUid9OyRhc19lY2hvICIkYXNfdmFsIidgIiA9IHh5ZXM7IHRoZW4gOgorICBheF9jdl9nY2NfYXJjaGZsYWc9JGZsYWc7IGJyZWFrCitlbHNlCisgIDoKK2ZpCisKKyAgZG9uZQorICB0ZXN0ICJ4JGF4X2N2X2djY19hcmNoZmxhZyIgPSB4dW5rbm93biB8fCBicmVhaworZG9uZQorZmkKKworZmkgIyAkR0NDPXllcworCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBnY2MgYXJjaGl0ZWN0dXJlIGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdjYyBhcmNoaXRlY3R1cmUgZmxhZy4uLiAiID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9nY2NfYXJjaGZsYWciID4mNQorJGFzX2VjaG8gIiRheF9jdl9nY2NfYXJjaGZsYWciID4mNjsgfQoraWYgdGVzdCAieCRheF9jdl9nY2NfYXJjaGZsYWciID0geHVua25vd247IHRoZW4KKyAgOgorZWxzZQorICBDRkxBR1M9IiRDRkxBR1MgJGF4X2N2X2djY19hcmNoZmxhZyIKK2ZpCisKKyAgICAgOzsKKyAgZXNhYworCisgIGlmIHRlc3QgLXogIiRDRkxBR1MiOyB0aGVuCisJZWNobyAiIgorCWVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorICAgICAgICBlY2hvICIqIFdBUk5JTkc6IERvbid0IGtub3cgdGhlIGJlc3QgQ0ZMQUdTIGZvciB0aGlzIHN5c3RlbSAgKiIKKyAgICAgICAgZWNobyAiKiBVc2UgLi9jb25maWd1cmUgQ0ZMQUdTPS4uLiB0byBzcGVjaWZ5IHlvdXIgb3duIGZsYWdzICoiCisJZWNobyAiKiAob3RoZXJ3aXNlLCBhIGRlZmF1bHQgb2YgQ0ZMQUdTPS1PMyB3aWxsIGJlIHVzZWQpICAgICoiCisJZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisJZWNobyAiIgorICAgICAgICBDRkxBR1M9Ii1PMyIKKyAgZmkKKworICBhc19DQUNIRVZBUj1gJGFzX2VjaG8gImF4X2N2X2NoZWNrX2NmbGFnc19fJENGTEFHUyIgfCAkYXNfdHJfc2hgCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzICRDRkxBR1MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJENGTEFHUy4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskYXNfQ0FDSEVWQVIrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JENGTEFHUworICBDRkxBR1M9IiRDRkxBR1MgICRDRkxBR1MiCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBldmFsICIkYXNfQ0FDSEVWQVI9eWVzIgorZWxzZQorICBldmFsICIkYXNfQ0FDSEVWQVI9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIENGTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFncworZmkKK2V2YWwgYWNfcmVzPVwkJGFzX0NBQ0hFVkFSCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KK2lmIHRlc3QgeCJgZXZhbCAnYXNfdmFsPSR7JyRhc19DQUNIRVZBUid9OyRhc19lY2hvICIkYXNfdmFsIidgIiA9IHh5ZXM7IHRoZW4gOgorICA6CitlbHNlCisKKwllY2hvICIiCisgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorICAgICAgICBlY2hvICIqIFdBUk5JTkc6IFRoZSBndWVzc2VkIENGTEFHUyBkb24ndCBzZWVtIHRvIHdvcmsgd2l0aCAgKiIKKyAgICAgICAgZWNobyAiKiB5b3VyIGNvbXBpbGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiCisgICAgICAgIGVjaG8gIiogVXNlIC4vY29uZmlndXJlIENGTEFHUz0uLi4gdG8gc3BlY2lmeSB5b3VyIG93biBmbGFncyAqIgorICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgZWNobyAiIgorICAgICAgICBDRkxBR1M9IiIKKworZmkKKworCitmaQorCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgQ0ZMQUdTIGZvciBtYXhpbXVtIHdhcm5pbmdzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIENGTEFHUyBmb3IgbWF4aW11bSB3YXJuaW5ncy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9jZmxhZ3Nfd2Fybl9hbGwrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jdl9jZmxhZ3Nfd2Fybl9hbGw9Im5vLCB1bmtub3duIgorYWNfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCitmb3IgYWNfYXJnIGluICItd2FybiBhbGwgICUgLXdhcm4gYWxsIiAgICAgICItcGVkYW50aWMgICUgLVdhbGwiICAgICAgICAgICIteHN0cmNvbnN0ICUgLXYiICAgICAgICAgICAgICItc3RkMSAgICAgICUgLXZlcmJvc2UgLXcwIC13YXJucHJvdG9zIiAgICAiLXFsYW5nbHZsPWFuc2kgJSAtcXNyY21zZyAtcWluZm89YWxsOm5vcHB0Om5vcHBjOm5vb2JzOm5vY25kIiAgICAiLWFuc2kgLWFuc2lFICUgLWZ1bGx3YXJuIiAgICAiK0VTbGl0ICAgICAlICt3MSIgICAgICAgICAgICAiLVhjICAgICAgICAlIC1wdmN0bCxmdWxsbXNnIiAgICAiLWggY29uZm9ybSAlIC1oIG1zZ2xldmVsIDIiICAgICMKK2RvIENGTEFHUz0iJGFjX3NhdmVfQ0ZMQUdTICJgZWNobyAkYWNfYXJnIHwgc2VkIC1lICdzLCUlLiosLCcgLWUgJ3MsJSwsJ2AKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jZmxhZ3Nfd2Fybl9hbGw9YGVjaG8gJGFjX2FyZyB8IHNlZCAtZSAncywuKiUgKiwsJ2AgOyBicmVhaworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZG9uZQorQ0ZMQUdTPSIkYWNfc2F2ZV9DRkxBR1MiCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NmbGFnc193YXJuX2FsbCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2NmbGFnc193YXJuX2FsbCIgPiY2OyB9CitjYXNlICIuJGFjX2N2X2NmbGFnc193YXJuX2FsbCIgaW4KKyAgICAgLm9rfC5vaywqKSAgOzsKKyAgIC58Lm5vfC5ubywqKSAgOzsKKyAgICopIGlmICR7Q0ZMQUdTKzp9IGZhbHNlOyB0aGVuIDoKKyAgY2FzZSAiICRDRkxBR1MgIiBpbgorICAgICoiICRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwgIiopCisgICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogOiBDRkxBR1MgYWxyZWFkeSBjb250YWlucyBcJGFjX2N2X2NmbGFnc193YXJuX2FsbCI7IH0gPiY1CisgICg6IENGTEFHUyBhbHJlYWR5IGNvbnRhaW5zICRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisgICAgICA7OworICAgICopCisgICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogOiBDRkxBR1M9XCJcJENGTEFHUyBcJGFjX2N2X2NmbGFnc193YXJuX2FsbFwiIjsgfSA+JjUKKyAgKDogQ0ZMQUdTPSIkQ0ZMQUdTICRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwiCisgICAgICA7OworICAgZXNhYworZWxzZQorICBDRkxBR1M9IiRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwiCitmaQorIDs7Citlc2FjCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworCitpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1mZXhjZXB0aW9ucyIKK2ZpCisKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlcy4uLiAiID4mNjsgfQpAQCAtMTEwMDUsNyArMTMwMjIsNyBAQAogZm9yIGFjX2hlYWRlciBpbiBzeXMvbW1hbi5oCiBkbyA6CiAgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJzeXMvbW1hbi5oIiAiYWNfY3ZfaGVhZGVyX3N5c19tbWFuX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19tbWFuX2giID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19tbWFuX2giID0geHllczsgdGhlbiA6CiAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKICNkZWZpbmUgSEFWRV9TWVNfTU1BTl9IIDEKIF9BQ0VPRgpAQCAtMTEwMTcsNyArMTMwMzQsNyBAQAogZm9yIGFjX2Z1bmMgaW4gbW1hcAogZG8gOgogICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJtbWFwIiAiYWNfY3ZfZnVuY19tbWFwIgotaWYgdGVzdCAieCRhY19jdl9mdW5jX21tYXAiID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19tbWFwIiA9IHh5ZXM7IHRoZW4gOgogICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAjZGVmaW5lIEhBVkVfTU1BUCAxCiBfQUNFT0YKQEAgLTExMDI3LDcgKzEzMDQ0LDcgQEAKIAogCiBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic3lzL21tYW4uaCIgImFjX2N2X2hlYWRlcl9zeXNfbW1hbl9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfbW1hbl9oIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfbW1hbl9oIiA9IHh5ZXM7IHRoZW4gOgogICBsaWJmZmlfaGVhZGVyX3N5c19tbWFuX2g9eWVzCiBlbHNlCiAgIGxpYmZmaV9oZWFkZXJfc3lzX21tYW5faD1ubwpAQCAtMTEwMzUsNyArMTMwNTIsNyBAQAogCiAKIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1tYXAiICJhY19jdl9mdW5jX21tYXAiCi1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbW1hcCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9mdW5jX21tYXAiID0geHllczsgdGhlbiA6CiAgIGxpYmZmaV9mdW5jX21tYXA9eWVzCiBlbHNlCiAgIGxpYmZmaV9mdW5jX21tYXA9bm8KQEAgLTExMDQ5LDcgKzEzMDY2LDcgQEAKIGVsc2UKICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciByZWFkLW9ubHkgbW1hcCBvZiBhIHBsYWluIGZpbGUgd29ya3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciByZWFkLW9ubHkgbW1hcCBvZiBhIHBsYWluIGZpbGUgd29ya3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfZnVuY19tbWFwX2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9mdW5jX21tYXBfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICMgQWRkIGEgc3lzdGVtIHRvIHRoaXMgYmxhY2tsaXN0IGlmCkBAIC0xMTA2OCw3ICsxMzA4NSw3IEBACiAkYXNfZWNobyAiJGFjX2N2X2Z1bmNfbW1hcF9maWxlIiA+JjY7IH0KICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBtbWFwIGZyb20gL2Rldi96ZXJvIHdvcmtzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgbW1hcCBmcm9tIC9kZXYvemVybyB3b3Jrcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9mdW5jX21tYXBfZGV2X3plcm8rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9mdW5jX21tYXBfZGV2X3plcm8rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAjIEFkZCBhIHN5c3RlbSB0byB0aGlzIGJsYWNrbGlzdCBpZiBpdCBoYXMgbW1hcCgpIGJ1dCAvZGV2L3plcm8KQEAgLTExMDk0LDcgKzEzMTExLDcgQEAKICAgICMgVW5saWtlIC9kZXYvemVybywgdGhlIE1BUF9BTk9OKFlNT1VTKSBkZWZpbmVzIGNhbiBiZSBwcm9iZWQgZm9yLgogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgTUFQX0FOT04oWU1PVVMpIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBNQVBfQU5PTihZTU9VUykuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfZGVjbF9tYXBfYW5vbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2RlY2xfbWFwX2Fub24rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xMTEzMCw3ICsxMzE0Nyw3IEBACiAgICBlbHNlCiAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBtbWFwIHdpdGggTUFQX0FOT04oWU1PVVMpIHdvcmtzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgbW1hcCB3aXRoIE1BUF9BTk9OKFlNT1VTKSB3b3Jrcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9mdW5jX21tYXBfYW5vbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2Z1bmNfbW1hcF9hbm9uKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgIyBBZGQgYSBzeXN0ZW0gdG8gdGhpcyBibGFja2xpc3QgaWYgaXQgaGFzIG1tYXAoKSBhbmQgTUFQX0FOT04gb3IKQEAgLTExMTgwLDcgKzEzMTk3LDcgQEAKIGNhc2UgIiRob3N0IiBpbgogICBhbHBoYSotKi0qKQogCVRBUkdFVD1BTFBIQTsgVEFSR0VURElSPWFscGhhOwotCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlLCBjaGFuZ2FibGUgdmlhIGNvbW1hbmQtbGluZSBzd2l0Y2guCisJIyBTdXBwb3J0IDEyOC1iaXQgbG9uZyBkb3VibGUsIGNoYW5nZWFibGUgdmlhIGNvbW1hbmQtbGluZSBzd2l0Y2guCiAJSEFWRV9MT05HX0RPVUJMRT0nZGVmaW5lZChfX0xPTkdfRE9VQkxFXzEyOF9fKScKIAk7OwogCkBAIC0xMTIwOCw3ICsxMzIyNSw3IEBACiAJVEFSR0VUPUZSVjsgVEFSR0VURElSPWZydgogCTs7CiAKLSAgaHBwYSotKi1saW51eCogfCBwYXJpc2MqLSotbGludXgqKQorICBocHBhKi0qLWxpbnV4KiB8IHBhcmlzYyotKi1saW51eCogfCBocHBhKi0qLW9wZW5ic2QqKQogCVRBUkdFVD1QQV9MSU5VWDsgVEFSR0VURElSPXBhCiAJOzsKICAgaHBwYSo2NC0qLWhwdXgqKQpAQCAtMTEyMjEsMTAgKzEzMjM4LDE3IEBACiAgIGk/ODYtKi1mcmVlYnNkKiB8IGk/ODYtKi1vcGVuYnNkKikKIAlUQVJHRVQ9WDg2X0ZSRUVCU0Q7IFRBUkdFVERJUj14ODYKIAk7OwotICBpPzg2LXdpbjMyKiB8IGk/ODYtKi1jeWd3aW4qIHwgaT84Ni0qLW1pbmd3KikKKyAgaT84Ni13aW4zMiogfCBpPzg2LSotY3lnd2luKiB8IGk/ODYtKi1taW5ndyogfCBpPzg2LSotb3MyKiB8IGk/ODYtKi1pbnRlcml4KikKIAlUQVJHRVQ9WDg2X1dJTjMyOyBUQVJHRVRESVI9eDg2Ci0JIyBBbGwgbWluZ3cvY3lnd2luL3dpbjMyIGJ1aWxkcyByZXF1aXJlIHRoaXMgZm9yIHNoYXJlZGxpYgotCUFNX0xUTERGTEFHUz0iLW5vLXVuZGVmaW5lZCIKKwkjIEFsbCBtaW5ndy9jeWd3aW4vd2luMzIgYnVpbGRzIHJlcXVpcmUgLW5vLXVuZGVmaW5lZCBmb3Igc2hhcmVkbGliLgorCSMgV2UgbXVzdCBhbHNvIGNoZWNrIHdpdGhfY3Jvc3NfaG9zdCB0byBkZWNpZGUgaWYgdGhpcyBpcyBhIG5hdGl2ZQorCSMgb3IgY3Jvc3MtYnVpbGQgYW5kIHNlbGVjdCB3aGVyZSB0byBpbnN0YWxsIGRsbHMgYXBwcm9wcmlhdGVseS4KKwlpZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgorCSAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQodG9vbGV4ZWNsaWJkaXIpIic7CisJZWxzZQorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQoYmluZGlyKSInOworCWZpCiAJOzsKICAgaT84Ni0qLWRhcndpbiopCiAJVEFSR0VUPVg4Nl9EQVJXSU47IFRBUkdFVERJUj14ODYKQEAgLTExMjM2LDcgKzEzMjYwLDcgQEAKICAgICAgICAgVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgogICAgICAgICA7OwogICBpPzg2LSotKikKLQlUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2CisJVEFSR0VUPVg4Nl82NDsgVEFSR0VURElSPXg4NgogCTs7CiAKICAgaWE2NCotKi0qKQpAQCAtMTEyNTEsMzAgKzEzMjc1LDQwIEBACiAJVEFSR0VUPU02OEs7IFRBUkdFVERJUj1tNjhrCiAJOzsKIAotICBtaXBzLXNnaS1pcml4NS4qIHwgbWlwcy1zZ2ktaXJpeDYuKikKKyAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiogfCBtaXBzKi0qLXJ0ZW1zKikKIAlUQVJHRVQ9TUlQU19JUklYOyBUQVJHRVRESVI9bWlwcwogCTs7Ci0gIG1pcHMqLSotbGludXgqKQorICBtaXBzKi0qLWxpbnV4KiB8IG1pcHMqLSotb3BlbmJzZCopCiAJIyBTdXBwb3J0IDEyOC1iaXQgbG9uZyBkb3VibGUgZm9yIE5ld0FCSS4KIAlIQVZFX0xPTkdfRE9VQkxFPSdkZWZpbmVkKF9fbWlwczY0KScKIAlUQVJHRVQ9TUlQU19JUklYOyBUQVJHRVRESVI9bWlwcwogCTs7CiAKKyAgbW94aWUtKi0qKQorICAgICAgICBUQVJHRVQ9TU9YSUU7IFRBUkdFVERJUj1tb3hpZQorCTs7CisKICAgcG93ZXJwYyotKi1saW51eCogfCBwb3dlcnBjLSotc3lzdiopCiAJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKKyAgcG93ZXJwYy0qLWFtaWdhb3MqKQorCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYworCTs7CiAgIHBvd2VycGMtKi1iZW9zKikKIAlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKIAk7OwotICBwb3dlcnBjLSotZGFyd2luKikKKyAgcG93ZXJwYy0qLWRhcndpbiogfCBwb3dlcnBjNjQtKi1kYXJ3aW4qKQogCVRBUkdFVD1QT1dFUlBDX0RBUldJTjsgVEFSR0VURElSPXBvd2VycGMKIAk7OwogICBwb3dlcnBjLSotYWl4KiB8IHJzNjAwMC0qLWFpeCopCiAJVEFSR0VUPVBPV0VSUENfQUlYOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7Ci0gIHBvd2VycGMtKi1mcmVlYnNkKikKKyAgcG93ZXJwYy0qLWZyZWVic2QqIHwgcG93ZXJwYy0qLW9wZW5ic2QqKQogCVRBUkdFVD1QT1dFUlBDX0ZSRUVCU0Q7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKKyAgcG93ZXJwYzY0LSotZnJlZWJzZCopCisJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCisJOzsKICAgcG93ZXJwYyotKi1ydGVtcyopCiAJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKQEAgLTExMzAwLDYgKzEzMzM0LDE1IEBACiAKICAgeDg2XzY0LSotY3lnd2luKiB8IHg4Nl82NC0qLW1pbmd3KikKIAlUQVJHRVQ9WDg2X1dJTjY0OyBUQVJHRVRESVI9eDg2CisJIyBBbGwgbWluZ3cvY3lnd2luL3dpbjMyIGJ1aWxkcyByZXF1aXJlIC1uby11bmRlZmluZWQgZm9yIHNoYXJlZGxpYi4KKwkjIFdlIG11c3QgYWxzbyBjaGVjayB3aXRoX2Nyb3NzX2hvc3QgdG8gZGVjaWRlIGlmIHRoaXMgaXMgYSBuYXRpdmUKKwkjIG9yIGNyb3NzLWJ1aWxkIGFuZCBzZWxlY3Qgd2hlcmUgdG8gaW5zdGFsbCBkbGxzIGFwcHJvcHJpYXRlbHkuCisJaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKKwkgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKHRvb2xleGVjbGliZGlyKSInOworCWVsc2UKKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKGJpbmRpcikiJzsKKwlmaQogCTs7CiAKICAgeDg2XzY0LSotKikKQEAgLTExMzExLDcgKzEzMzU0LDcgQEAKIAogCiBpZiB0ZXN0ICRUQVJHRVRESVIgPSB1bmtub3duOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJcImxpYmZmaSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvICRob3N0LlwiIiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAiXCJsaWJmZmkgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byAkaG9zdC5cIiIgIiRMSU5FTk8iIDUKIGZpCiAKICBpZiBleHByIHgkVEFSR0VUIDogJ3hNSVBTJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtMTE0MDIsNiArMTM0NDUsMTQgQEAKICAgTTY4S19GQUxTRT0KIGZpCiAKKyBpZiB0ZXN0IHgkVEFSR0VUID0geE1PWElFOyB0aGVuCisgIE1PWElFX1RSVUU9CisgIE1PWElFX0ZBTFNFPScjJworZWxzZQorICBNT1hJRV9UUlVFPScjJworICBNT1hJRV9GQUxTRT0KK2ZpCisKICBpZiB0ZXN0IHgkVEFSR0VUID0geFBPV0VSUEM7IHRoZW4KICAgUE9XRVJQQ19UUlVFPQogICBQT1dFUlBDX0ZBTFNFPScjJwpAQCAtMTE1MjUsNyArMTM1NzYsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zdGRjK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfaGVhZGVyX3N0ZGMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xMTYzOCw3ICsxMzY4OSw3IEBACiBmb3IgYWNfZnVuYyBpbiBtZW1jcHkKIGRvIDoKICAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibWVtY3B5IiAiYWNfY3ZfZnVuY19tZW1jcHkiCi1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWVtY3B5IiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWVtY3B5IiA9IHh5ZXM7IHRoZW4gOgogICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAjZGVmaW5lIEhBVkVfTUVNQ1BZIDEKIF9BQ0VPRgpAQCAtMTE2NDYsMTEgKzEzNjk3LDIyIEBACiBmaQogZG9uZQogCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJzaXplX3QiICJhY19jdl90eXBlX3NpemVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl90eXBlX3NpemVfdCIgPSB4eWVzOyB0aGVuIDoKKworZWxzZQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIHNpemVfdCB1bnNpZ25lZCBpbnQKK19BQ0VPRgorCitmaQorCiAjIFRoZSBVbHRyaXggNC4yIG1pcHMgYnVpbHRpbiBhbGxvY2EgZGVjbGFyZWQgYnkgYWxsb2NhLmggb25seSB3b3JrcwogIyBmb3IgY29uc3RhbnQgYXJndW1lbnRzLiAgVXNlbGVzcyEKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2NhLmgiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2NhLmguLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3Zfd29ya2luZ19hbGxvY2FfaCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3dvcmtpbmdfYWxsb2NhX2grOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xMTY4Myw3ICsxMzc0NSw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFsbG9jYSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgYWxsb2NhLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xMTcwMiw3ICsxMzc2NCw3IEBACiAgI3ByYWdtYSBhbGxvY2EKICMgICBlbHNlCiAjICAgIGlmbmRlZiBhbGxvY2EgLyogcHJlZGVmaW5lZCBieSBIUCBjYyArT2xpYmNhbGxzICovCi1jaGFyICphbGxvY2EgKCk7Cit2b2lkICphbGxvY2EgKHNpemVfdCk7CiAjICAgIGVuZGlmCiAjICAgZW5kaWYKICMgIGVuZGlmCkBAIC0xMTc0Niw3ICsxMzgwOCw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBcYGFsbG9jYS5jJyBuZWVkcyBDcmF5IGhvb2tzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgXGBhbGxvY2EuYycgbmVlZHMgQ3JheSBob29rcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9vc19jcmF5K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3Zfb3NfY3JheSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExNzczLDggKzEzODM1LDcgQEAKICAgZm9yIGFjX2Z1bmMgaW4gX2dldGI2NyBHRVRCNjcgZ2V0YjY3OyBkbwogICAgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAogYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgotZXZhbCBhc192YWw9XCQkYXNfYWNfdmFyCi0gICBpZiB0ZXN0ICJ4JGFzX3ZhbCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192YXIiXCIgPSB4InllcyI7IHRoZW4gOgogCiBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAjZGVmaW5lIENSQVlfU1RBQ0tTRUdfRU5EICRhY19mdW5jCkBAIC0xMTc4OCw3ICsxMzg0OSw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc3RhY2sgZGlyZWN0aW9uIGZvciBDIGFsbG9jYSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBzdGFjayBkaXJlY3Rpb24gZm9yIEMgYWxsb2NhLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfY19zdGFja19kaXJlY3Rpb24rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CkBAIC0xMTg0Myw3ICsxMzkwNCw3IEBACiAjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIGRvdWJsZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIGRvdWJsZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9zaXplb2ZfZG91YmxlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3Zfc2l6ZW9mX2RvdWJsZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGRvdWJsZSkpIiAiYWNfY3Zfc2l6ZW9mX2RvdWJsZSIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgpAQCAtMTE4NTIsOSArMTM5MTMsOCBAQAogICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9kb3VibGUiID0geWVzOyB0aGVuCiAgICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQoteyBhc19mbl9zZXRfc3RhdHVzIDc3Ci1hc19mbl9lcnJvciAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChkb3VibGUpCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH07IH0KK2FzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGRvdWJsZSkKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiAgICBlbHNlCiAgICAgIGFjX2N2X3NpemVvZl9kb3VibGU9MAogICAgZmkKQEAgLTExODc3LDcgKzEzOTM3LDcgQEAKICMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2YgbG9uZyBkb3VibGUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGRvdWJsZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9zaXplb2ZfbG9uZ19kb3VibGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9zaXplb2ZfbG9uZ19kb3VibGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mIChsb25nIGRvdWJsZSkpIiAiYWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlIiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CkBAIC0xMTg4Niw5ICsxMzk0Niw4IEBACiAgIGlmIHRlc3QgIiRhY19jdl90eXBlX2xvbmdfZG91YmxlIiA9IHllczsgdGhlbgogICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLXsgYXNfZm5fc2V0X3N0YXR1cyA3NwotYXNfZm5fZXJyb3IgImNhbm5vdCBjb21wdXRlIHNpemVvZiAobG9uZyBkb3VibGUpCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH07IH0KK2FzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGxvbmcgZG91YmxlKQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KICAgIGVsc2UKICAgICAgYWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlPTAKICAgIGZpCkBAIC0xMTkyMiw3ICsxMzk4MSw3IEBACiAKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgYnl0ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4iID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbi4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9jX2JpZ2VuZGlhbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2NfYmlnZW5kaWFuKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY3ZfY19iaWdlbmRpYW49dW5rbm93bgpAQCAtMTIxNDAsMTggKzE0MTk5LDE4IEBACiAKICAgICAgOzsgIygKICAgICopCi0gICAgIGFzX2ZuX2Vycm9yICJ1bmtub3duIGVuZGlhbm5lc3MKKyAgICAgYXNfZm5fZXJyb3IgJD8gInVua25vd24gZW5kaWFubmVzcwogIHByZXNldHRpbmcgYWNfY3ZfY19iaWdlbmRpYW49bm8gKG9yIHllcykgd2lsbCBoZWxwIiAiJExJTkVOTyIgNSA7OwogIGVzYWMKIAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciAuY2ZpIHBzZXVkby1vcCBzdXBwb3J0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciAuY2ZpIHBzZXVkby1vcCBzdXBwb3J0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2xpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7Z2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3ArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCi0gICAgbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3A9dW5rbm93bgorICAgIGdjY19jdl9hc19jZmlfcHNldWRvX29wPXVua25vd24KICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiBhc20gKCIuY2ZpX3N0YXJ0cHJvY1xuXHQuY2ZpX2VuZHByb2MiKTsKQEAgLTEyMTY0LDI1ICsxNDIyMywyNiBAQAogfQogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wPXllcworICBnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcD15ZXMKIGVsc2UKLSAgbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3A9bm8KKyAgZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3A9bm8KIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAogZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID4mNQotJGFzX2VjaG8gIiRsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID4mNQorJGFzX2VjaG8gIiRnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPiY2OyB9CisgaWYgdGVzdCAieCRnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfQVNfQ0ZJX1BTRVVET19PUCAxIiA+PmNvbmZkZWZzLmgKIAotZmkKKyBmaQorCiAKIGlmIHRlc3QgeCRUQVJHRVQgPSB4U1BBUkM7IHRoZW4KICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciBhbmQgbGlua2VyIHN1cHBvcnQgdW5hbGlnbmVkIHBjIHJlbGF0ZWQgcmVsb2NzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciBhbmQgbGlua2VyIHN1cHBvcnQgdW5hbGlnbmVkIHBjIHJlbGF0ZWQgcmVsb2NzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2xpYmZmaV9jdl9hc19zcGFyY191YV9wY3JlbCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2xpYmZmaV9jdl9hc19zcGFyY191YV9wY3JlbCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKQEAgLTEyMjIxLDcgKzE0MjgxLDcgQEAKIAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIC5yZWdpc3RlciBwc2V1ZG8tb3Agc3VwcG9ydCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgLnJlZ2lzdGVyIHBzZXVkby1vcCBzdXBwb3J0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2xpYmZmaV9jdl9hc19yZWdpc3Rlcl9wc2V1ZG9fb3Arc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsaWJmZmlfY3ZfYXNfcmVnaXN0ZXJfcHNldWRvX29wKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKIApAQCAtMTIyNTgsMTMgKzE0MzE4LDEzIEBACiBpZiB0ZXN0IHgkVEFSR0VUID0geFg4NiB8fCB0ZXN0IHgkVEFSR0VUID0geFg4Nl9XSU4zMiB8fCB0ZXN0IHgkVEFSR0VUID0geFg4Nl82NDsgdGhlbgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIHN1cHBvcnRzIHBjIHJlbGF0ZWQgcmVsb2NzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciBzdXBwb3J0cyBwYyByZWxhdGVkIHJlbG9jcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bGliZmZpX2N2X2FzX3g4Nl9wY3JlbCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKIAlsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsPXllcwogCWVjaG8gJy50ZXh0OyBmb286IG5vcDsgLmRhdGE7IC5sb25nIGZvby0uOyAudGV4dCcgPiBjb25mdGVzdC5zCi0JaWYgJENDICRDRkxBR1MgLWMgY29uZnRlc3QucyAyPiYxIHwgZ3JlcCAtaSB3YXJuaW5nID4gL2Rldi9udWxsOyB0aGVuCisJaWYgJENDICRDRkxBR1MgLWMgY29uZnRlc3QucyAyPiYxIHwgJEVHUkVQIC1pICdpbGxlZ2FsfHdhcm5pbmcnID4gL2Rldi9udWxsOyB0aGVuCiAJICAgIGxpYmZmaV9jdl9hc194ODZfcGNyZWw9bm8KIAlmaQogCkBAIC0xMjI3Niw3NyArMTQzMzYsMjQ0IEBACiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX1g4Nl9QQ1JFTCAxIiA+PmNvbmZkZWZzLmgKIAogICAgIGZpCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciAuYXNjaWkgcHNldWRvLW9wIHN1cHBvcnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIC5hc2NpaSBwc2V1ZG8tb3Agc3VwcG9ydC4uLiAiID4mNjsgfQoraWYgJHtsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICAgICAgIGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3A9dW5rbm93bgorICAgICAgICMgQ2hlY2sgaWYgd2UgaGF2ZSAuYXNjaWkKKyAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCithc20gKCIuYXNjaWkgXFwic3RyaW5nXFwiIik7CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3A9eWVzCitlbHNlCisgIGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3A9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCIgPiY1CiskYXNfZWNobyAiJGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3AiID4mNjsgfQorICAgIGlmIHRlc3QgIngkbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQVNfQVNDSUlfUFNFVURPX09QIDEiID4+Y29uZmRlZnMuaAorCisgICAgZmkKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIC5zdHJpbmcgcHNldWRvLW9wIHN1cHBvcnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIC5zdHJpbmcgcHNldWRvLW9wIHN1cHBvcnQuLi4gIiA+JjY7IH0KK2lmICR7bGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3ArOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgICAgICAgbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3A9dW5rbm93bgorICAgICAgICMgQ2hlY2sgaWYgd2UgaGF2ZSAuc3RyaW5nCisgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworYXNtICgiLnN0cmluZyBcXCJzdHJpbmdcXCIiKTsKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3A9eWVzCitlbHNlCisgIGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wIiA+JjUKKyRhc19lY2hvICIkbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3AiID4mNjsgfQorICAgIGlmIHRlc3QgIngkbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3AiID0geHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX1NUUklOR19QU0VVRE9fT1AgMSIgPj5jb25mZGVmcy5oCisKKyAgICBmaQogZmkKIAoraWYgdGVzdCB4JFRBUkdFVCA9IHhYODZfV0lONjQ7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfIHByZWZpeCBpbiBjb21waWxlZCBzeW1ib2xzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfIHByZWZpeCBpbiBjb21waWxlZCBzeW1ib2xzLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZT1ubworICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgordm9pZCBubV90ZXN0X2Z1bmMoKXt9CitpbnQgbWFpbigpe25tX3Rlc3RfZnVuYztyZXR1cm4gMDt9CitfTFRfRU9GCisgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgICAjIE5vdyB0cnkgdG8gZ3JhYiB0aGUgc3ltYm9scy4KKyAgICBhY19ubGlzdD1jb25mdGVzdC5ubQorICAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiROTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRhY19ubGlzdFwiIjsgfSA+JjUKKyAgKGV2YWwgJE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXD4gJGFjX25saXN0KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zICIkYWNfbmxpc3QiOyB0aGVuCisgICAgICAjIFNlZSB3aGV0aGVyIHRoZSBzeW1ib2xzIGhhdmUgYSBsZWFkaW5nIHVuZGVyc2NvcmUuCisgICAgICBpZiBncmVwICdeLiBfbm1fdGVzdF9mdW5jJyAiJGFjX25saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZT15ZXMKKyAgICAgIGVsc2UKKyAgICAgICAgaWYgZ3JlcCAnXi4gbm1fdGVzdF9mdW5jICcgIiRhY19ubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorCSAgOgorICAgICAgICBlbHNlCisJICBlY2hvICJjb25maWd1cmU6IGNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkYWNfbmxpc3QiID4mNQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBlbHNlCisgICAgICBlY2hvICJjb25maWd1cmU6IGNhbm5vdCBydW4gJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiID4mNQorICAgIGZpCisgIGVsc2UKKyAgICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICAgIGNhdCBjb25mdGVzdC5jID4mNQorICBmaQorICBybSAtcmYgY29uZnRlc3QqCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZSIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZSIgPiY2OyB9CisgIHN5c19zeW1ib2xfdW5kZXJzY29yZT0kbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlCisKKworICAgIGlmIHRlc3QgIngkc3lzX3N5bWJvbF91bmRlcnNjb3JlIiA9IHh5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgU1lNQk9MX1VOREVSU0NPUkUgMSIgPj5jb25mZGVmcy5oCisKKyAgICBmaQorZmkKKworCitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFPTAKIGNhc2UgIiR0YXJnZXQiIGluCi0gICAgICotYXBwbGUtZGFyd2luMTAqIHwgKi0qLWZyZWVic2QqIHwgKi0qLW9wZW5ic2QqIHwgKi1wYy1zb2xhcmlzKikKKyAgICAgKmFybSotYXBwbGUtZGFyd2luKikKKyAgICAgICBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFPTEKKworJGFzX2VjaG8gIiNkZWZpbmUgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSAxIiA+PmNvbmZkZWZzLmgKKworICAgICA7OworICAgICAqLWFwcGxlLWRhcndpbjFbMTBdKiB8ICotKi1mcmVlYnNkKiB8ICotKi1rZnJlZWJzZCogfCAqLSotb3BlbmJzZCogfCAqLXBjLXNvbGFyaXMqKQogCiAkYXNfZWNobyAiI2RlZmluZSBGRklfTU1BUF9FWEVDX1dSSVQgMSIgPj5jb25mZGVmcy5oCiAKICAgICAgOzsKIGVzYWMKKyBpZiB0ZXN0IHgkRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSA9IHgxOyB0aGVuCisgIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfVFJVRT0KKyAgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9GQUxTRT0nIycKK2Vsc2UKKyAgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9UUlVFPScjJworICBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX0ZBTFNFPQorZmkKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIC5laF9mcmFtZSBzZWN0aW9uIHNob3VsZCBiZSByZWFkLW9ubHkiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAuZWhfZnJhbWUgc2VjdGlvbiBzaG91bGQgYmUgcmVhZC1vbmx5Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2xpYmZmaV9jdl9yb19laF9mcmFtZStzZXR9IiA9IHNldDsgdGhlbiA6CisKKworaWYgdGVzdCB4JFRBUkdFVCA9IHhYODZfNjQ7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciBzdXBwb3J0cyB1bndpbmQgc2VjdGlvbiB0eXBlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciBzdXBwb3J0cyB1bndpbmQgc2VjdGlvbiB0eXBlLi4uICIgPiY2OyB9CitpZiAke2xpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKLQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9bm8KLQllY2hvICdleHRlcm4gdm9pZCBmb28gKHZvaWQpOyB2b2lkIGJhciAodm9pZCkgeyBmb28gKCk7IGZvbyAoKTsgfScgPiBjb25mdGVzdC5jCi0JaWYgJENDICRDRkxBR1MgLVMgLWZwaWMgLWZleGNlcHRpb25zIC1vIGNvbmZ0ZXN0LnMgY29uZnRlc3QuYyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICAgIGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qImEiJyBjb25mdGVzdC5zID4gL2Rldi9udWxsOyB0aGVuCi0JCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKLQkgICAgZWxpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiNhbGxvYycgY29uZnRlc3QuYyBcCi0JCSB8IGdyZXAgLXYgJyN3cml0ZScgPiAvZGV2L251bGw7IHRoZW4KLQkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcwotCSAgICBmaQorCWxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZT15ZXMKKwllY2hvICcuc2VjdGlvbiAuZWhfZnJhbWUsImEiLEB1bndpbmQnID4gY29uZnRlc3QucworCWlmICRDQyAkQ0ZMQUdTIC1jIGNvbmZ0ZXN0LnMgMj4mMSB8IGdyZXAgLWkgd2FybmluZyA+IC9kZXYvbnVsbDsgdGhlbgorCSAgICBsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGU9bm8KIAlmaQotCXJtIC1mIGNvbmZ0ZXN0LioKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlIiA+JjUKKyRhc19lY2hvICIkbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlIiA+JjY7IH0KKyAgICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSIgPSB4eWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQVNfWDg2XzY0X1VOV0lORF9TRUNUSU9OX1RZUEUgMSIgPj5jb25mZGVmcy5oCisKKyAgICBmaQorZmkKKworaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAuZWhfZnJhbWUgc2VjdGlvbiBzaG91bGQgYmUgcmVhZC1vbmx5IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24gc2hvdWxkIGJlIHJlYWQtb25seS4uLiAiID4mNjsgfQoraWYgJHtsaWJmZmlfY3Zfcm9fZWhfZnJhbWUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIAlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9bm8KKyAgCWVjaG8gJ2V4dGVybiB2b2lkIGZvbyAodm9pZCk7IHZvaWQgYmFyICh2b2lkKSB7IGZvbyAoKTsgZm9vICgpOyB9JyA+IGNvbmZ0ZXN0LmMKKyAgCWlmICRDQyAkQ0ZMQUdTIC1TIC1mcGljIC1mZXhjZXB0aW9ucyAtbyBjb25mdGVzdC5zIGNvbmZ0ZXN0LmMgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAJICAgIGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qImEiJyBjb25mdGVzdC5zID4gL2Rldi9udWxsOyB0aGVuCisgIAkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcworICAJICAgIGVsaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLiojYWxsb2MnIGNvbmZ0ZXN0LmMgXAorICAJCSB8IGdyZXAgLXYgJyN3cml0ZScgPiAvZGV2L251bGw7IHRoZW4KKyAgCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCisgIAkgICAgZmkKKyAgCWZpCisgIAlybSAtZiBjb25mdGVzdC4qCiAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9yb19laF9mcmFtZSIgPiY1CiAkYXNfZWNobyAiJGxpYmZmaV9jdl9yb19laF9mcmFtZSIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGxpYmZmaV9jdl9yb19laF9mcmFtZSIgPSB4eWVzOyB0aGVuCisgIGlmIHRlc3QgIngkbGliZmZpX2N2X3JvX2VoX2ZyYW1lIiA9IHh5ZXM7IHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9ST19FSF9GUkFNRSAxIiA+PmNvbmZkZWZzLmgKIAogCiAkYXNfZWNobyAiI2RlZmluZSBFSF9GUkFNRV9GTEFHUyBcImFcIiIgPj5jb25mZGVmcy5oCiAKLWVsc2UKKyAgZWxzZQogCiAkYXNfZWNobyAiI2RlZmluZSBFSF9GUkFNRV9GTEFHUyBcImF3XCIiID4+Y29uZmRlZnMuaAogCi1maQorICBmaQogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KFwiaGlkZGVuXCIpKSkiID4mNQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KFwiaGlkZGVuXCIpKSkiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoXCJoaWRkZW5cIikpKS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKLQllY2hvICdpbnQgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpIGZvbyAodm9pZCkgeyByZXR1cm4gMTsgfScgPiBjb25mdGVzdC5jCi0JbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT1ubwotCWlmIHsgYWNfdHJ5PScke0NDLWNjfSAtV2Vycm9yIC1TIGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QucyAxPiY1JworICAJZWNobyAnaW50IF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKSBmb28gKHZvaWQpIHsgcmV0dXJuIDEgIDsgfScgPiBjb25mdGVzdC5jCisgIAlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPW5vCisgIAlpZiB7IGFjX3RyeT0nJHtDQy1jY30gLVdlcnJvciAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mNScKICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX3RyeVwiIjsgfSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IH07IHRoZW4KLQkgICAgaWYgZ3JlcCAnXC5oaWRkZW4uKmZvbycgY29uZnRlc3QucyA+L2Rldi9udWxsOyB0aGVuCi0JCWxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGU9eWVzCi0JICAgIGZpCi0JZmkKLQlybSAtZiBjb25mdGVzdC4qCisgIAkgICAgaWYgZ3JlcCAnXC5oaWRkZW4uKmZvbycgY29uZnRlc3QucyA+L2Rldi9udWxsOyB0aGVuCisgIAkJbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT15ZXMKKyAgCSAgICBmaQorICAJZmkKKyAgCXJtIC1mIGNvbmZ0ZXN0LioKIAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSIgPiY1CiAkYXNfZWNobyAiJGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUiID4mNjsgfQotaWYgdGVzdCAkbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSA9IHllczsgdGhlbgorICBpZiB0ZXN0ICRsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlID0geWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfSElEREVOX1ZJU0lCSUxJVFlfQVRUUklCVVRFIDEiID4+Y29uZmRlZnMuaAogCisgIGZpCiBmaQogCiAKQEAgLTEyMzY1LDYgKzE0NTkyLDE0IEBACiAgIGZpCiBmaQogCisgaWYgdGVzdCAiJGVuYWJsZV9kZWJ1ZyIgPSAieWVzIjsgdGhlbgorICBGRklfREVCVUdfVFJVRT0KKyAgRkZJX0RFQlVHX0ZBTFNFPScjJworZWxzZQorICBGRklfREVCVUdfVFJVRT0nIycKKyAgRkZJX0RFQlVHX0ZBTFNFPQorZmkKKwogCiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtc3RydWN0cyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9zdHJ1Y3RzK3NldH0iID0gc2V0OyB0aGVuIDoKQEAgLTEyMzk2LDIxICsxNDYzMSwyNSBAQAogZmkKIAogCi1pZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgotICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCi0gIHRvb2xleGVjZGlyPSckKGV4ZWNfcHJlZml4KS8kKHRhcmdldF9hbGlhcyknCi0gIHRvb2xleGVjbGliZGlyPSckKHRvb2xleGVjZGlyKS9saWInCi1lbHNlCi0gIHRvb2xleGVjZGlyPSckKGxpYmRpcikvZ2NjLWxpYi8kKHRhcmdldF9hbGlhcyknCi0gIHRvb2xleGVjbGliZGlyPSckKGxpYmRpciknCisjIFRoZXNlIHZhcmlhYmxlcyBhcmUgb25seSBldmVyIHVzZWQgd2hlbiB3ZSBjcm9zcy1idWlsZCB0byBYODZfV0lOMzIuCisjIEFuZCB3ZSBvbmx5IHN1cHBvcnQgdGhpcyB3aXRoIEdDQywgc28uLi4KK2lmIHRlc3QgeCIkR0NDIiAhPSB4Im5vIjsgdGhlbgorICBpZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgorICAgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KKyAgICB0b29sZXhlY2Rpcj0nJChleGVjX3ByZWZpeCkvJCh0YXJnZXRfYWxpYXMpJworICAgIHRvb2xleGVjbGliZGlyPSckKHRvb2xleGVjZGlyKS9saWInCisgIGVsc2UKKyAgICB0b29sZXhlY2Rpcj0nJChsaWJkaXIpL2djYy1saWIvJCh0YXJnZXRfYWxpYXMpJworICAgIHRvb2xleGVjbGliZGlyPSckKGxpYmRpciknCisgIGZpCisgIG11bHRpX29zX2RpcmVjdG9yeT1gJENDIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCisgIGNhc2UgJG11bHRpX29zX2RpcmVjdG9yeSBpbgorICAgIC4pIDs7ICMgQXZvaWQgdHJhaWxpbmcgLy4KKyAgICAqKSB0b29sZXhlY2xpYmRpcj0kdG9vbGV4ZWNsaWJkaXIvJG11bHRpX29zX2RpcmVjdG9yeSA7OworICBlc2FjCisKKwogZmkKLW11bHRpX29zX2RpcmVjdG9yeT1gJENDIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCi1jYXNlICRtdWx0aV9vc19kaXJlY3RvcnkgaW4KLSAgLikgOzsgIyBBdm9pZCB0cmFpbGluZyAvLgotICAqKSB0b29sZXhlY2xpYmRpcj0kdG9vbGV4ZWNsaWJkaXIvJG11bHRpX29zX2RpcmVjdG9yeSA7OwotZXNhYwotCi0KIAogaWYgdGVzdCAiJHttdWx0aWxpYn0iID0gInllcyI7IHRoZW4KICAgbXVsdGlsaWJfYXJnPSItLWVuYWJsZS1tdWx0aWxpYiIKQEAgLTEyNDk5LDEwICsxNDczOCwyMSBAQAogICAgICA6ZW5kJyA+PmNvbmZjYWNoZQogaWYgZGlmZiAiJGNhY2hlX2ZpbGUiIGNvbmZjYWNoZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQogICBpZiB0ZXN0IC13ICIkY2FjaGVfZmlsZSI7IHRoZW4KLSAgICB0ZXN0ICJ4JGNhY2hlX2ZpbGUiICE9ICJ4L2Rldi9udWxsIiAmJgorICAgIGlmIHRlc3QgIngkY2FjaGVfZmlsZSIgIT0gIngvZGV2L251bGwiOyB0aGVuCiAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUKICRhc19lY2hvICIkYXNfbWU6IHVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQotICAgIGNhdCBjb25mY2FjaGUgPiRjYWNoZV9maWxlCisgICAgICBpZiB0ZXN0ICEgLWYgIiRjYWNoZV9maWxlIiB8fCB0ZXN0IC1oICIkY2FjaGVfZmlsZSI7IHRoZW4KKwljYXQgY29uZmNhY2hlID4iJGNhY2hlX2ZpbGUiCisgICAgICBlbHNlCisgICAgICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4gIygKKyAgICAgICAgKi8qIHwgPzoqKQorCSAgbXYgLWYgY29uZmNhY2hlICIkY2FjaGVfZmlsZSIkJCAmJgorCSAgbXYgLWYgIiRjYWNoZV9maWxlIiQkICIkY2FjaGVfZmlsZSIgOzsgIygKKyAgICAgICAgKikKKwkgIG12IC1mIGNvbmZjYWNoZSAiJGNhY2hlX2ZpbGUiIDs7CisJZXNhYworICAgICAgZmkKKyAgICBmaQogICBlbHNlCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBub3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBub3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KQEAgLTEyNTE4LDYgKzE0NzY4LDcgQEAKIAogYWNfbGlib2Jqcz0KIGFjX2x0bGlib2Jqcz0KK1U9CiBmb3IgYWNfaSBpbiA6ICRMSUJPQkpTOyBkbyB0ZXN0ICJ4JGFjX2kiID0geDogJiYgY29udGludWUKICAgIyAxLiBSZW1vdmUgdGhlIGV4dGVuc2lvbiwgYW5kICRVIGlmIGFscmVhZHkgaW5zdGFsbGVkLgogICBhY19zY3JpcHQ9J3MvXCRVXC4vLi87cy9cLm8kLy87cy9cLm9iaiQvLycKQEAgLTEyNTQxLDEzMiArMTQ3OTIsMTQ0IEBACiBmaQogCiBpZiB0ZXN0IC16ICIke0FNREVQX1RSVUV9IiAmJiB0ZXN0IC16ICIke0FNREVQX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiQU1ERVBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiQU1ERVBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0NfVFJVRX0iICYmIHRlc3QgLXogIiR7YW1fX2Zhc3RkZXBDQ19GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcImFtX19mYXN0ZGVwQ0NcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiYW1fX2Zhc3RkZXBDQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7YW1fX2Zhc3RkZXBDQ0FTX1RSVUV9IiAmJiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0NBU19GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcImFtX19mYXN0ZGVwQ0NBU1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJhbV9fZmFzdGRlcENDQVNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke01BSU5UQUlORVJfTU9ERV9UUlVFfSIgJiYgdGVzdCAteiAiJHtNQUlOVEFJTkVSX01PREVfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJNQUlOVEFJTkVSX01PREVcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiTUFJTlRBSU5FUl9NT0RFXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtURVNUU1VCRElSX1RSVUV9IiAmJiB0ZXN0IC16ICIke1RFU1RTVUJESVJfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJURVNUU1VCRElSXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlRFU1RTVUJESVJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke01JUFNfVFJVRX0iICYmIHRlc3QgLXogIiR7TUlQU19GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIk1JUFNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiTUlQU1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7U1BBUkNfVFJVRX0iICYmIHRlc3QgLXogIiR7U1BBUkNfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJTUEFSQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJTUEFSQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7WDg2X1RSVUV9IiAmJiB0ZXN0IC16ICIke1g4Nl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlg4NlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJYODZcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1g4Nl9GUkVFQlNEX1RSVUV9IiAmJiB0ZXN0IC16ICIke1g4Nl9GUkVFQlNEX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiWDg2X0ZSRUVCU0RcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiWDg2X0ZSRUVCU0RcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1g4Nl9XSU4zMl9UUlVFfSIgJiYgdGVzdCAteiAiJHtYODZfV0lOMzJfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJYODZfV0lOMzJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiWDg2X1dJTjMyXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtYODZfV0lONjRfVFJVRX0iICYmIHRlc3QgLXogIiR7WDg2X1dJTjY0X0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiWDg2X1dJTjY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlg4Nl9XSU42NFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7WDg2X0RBUldJTl9UUlVFfSIgJiYgdGVzdCAteiAiJHtYODZfREFSV0lOX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiWDg2X0RBUldJTlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJYODZfREFSV0lOXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtBTFBIQV9UUlVFfSIgJiYgdGVzdCAteiAiJHtBTFBIQV9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkFMUEhBXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkFMUEhBXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtJQTY0X1RSVUV9IiAmJiB0ZXN0IC16ICIke0lBNjRfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJJQTY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIklBNjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke00zMlJfVFJVRX0iICYmIHRlc3QgLXogIiR7TTMyUl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIk0zMlJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiTTMyUlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7TTY4S19UUlVFfSIgJiYgdGVzdCAteiAiJHtNNjhLX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiTTY4S1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJNNjhLXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQoraWYgdGVzdCAteiAiJHtNT1hJRV9UUlVFfSIgJiYgdGVzdCAteiAiJHtNT1hJRV9GQUxTRX0iOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIk1PWElFXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQT1dFUlBDX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BPV0VSUENfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJQT1dFUlBDXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBPV0VSUENcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BPV0VSUENfQUlYX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BPV0VSUENfQUlYX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19BSVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19BSVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BPV0VSUENfREFSV0lOX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BPV0VSUENfREFSV0lOX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19EQVJXSU5cIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19EQVJXSU5cIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BPV0VSUENfRlJFRUJTRF9UUlVFfSIgJiYgdGVzdCAteiAiJHtQT1dFUlBDX0ZSRUVCU0RfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJQT1dFUlBDX0ZSRUVCU0RcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19GUkVFQlNEXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtBUk1fVFJVRX0iICYmIHRlc3QgLXogIiR7QVJNX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiQVJNXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkFSTVwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7QVZSMzJfVFJVRX0iICYmIHRlc3QgLXogIiR7QVZSMzJfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJBVlIzMlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJBVlIzMlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7TElCRkZJX0NSSVNfVFJVRX0iICYmIHRlc3QgLXogIiR7TElCRkZJX0NSSVNfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJMSUJGRklfQ1JJU1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJMSUJGRklfQ1JJU1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7RlJWX1RSVUV9IiAmJiB0ZXN0IC16ICIke0ZSVl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkZSVlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJGUlZcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1MzOTBfVFJVRX0iICYmIHRlc3QgLXogIiR7UzM5MF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlMzOTBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUzM5MFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7WDg2XzY0X1RSVUV9IiAmJiB0ZXN0IC16ICIke1g4Nl82NF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlg4Nl82NFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJYODZfNjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1NIX1RSVUV9IiAmJiB0ZXN0IC16ICIke1NIX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiU0hcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiU0hcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1NINjRfVFJVRX0iICYmIHRlc3QgLXogIiR7U0g2NF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlNINjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiU0g2NFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UEFfTElOVVhfVFJVRX0iICYmIHRlc3QgLXogIiR7UEFfTElOVVhfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJQQV9MSU5VWFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJQQV9MSU5VWFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UEFfSFBVWF9UUlVFfSIgJiYgdGVzdCAteiAiJHtQQV9IUFVYX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUEFfSFBVWFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJQQV9IUFVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQQTY0X0hQVVhfVFJVRX0iICYmIHRlc3QgLXogIiR7UEE2NF9IUFVYX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUEE2NF9IUFVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBBNjRfSFBVWFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIAoraWYgdGVzdCAteiAiJHtGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX1RSVUV9IiAmJiB0ZXN0IC16ICIke0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQoraWYgdGVzdCAteiAiJHtGRklfREVCVUdfVFJVRX0iICYmIHRlc3QgLXogIiR7RkZJX0RFQlVHX0ZBTFNFfSI7IHRoZW4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiRkZJX0RFQlVHXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQogCi06ICR7Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9Cis6ICIke0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfSIKIGFjX3dyaXRlX2ZhaWw9MAogYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKIGFjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJR19TVEFUVVMiCkBAIC0xMjc2Nyw2ICsxNTAzMCw3IEBACiBJRlM9IiAiIgkkYXNfbmwiCiAKICMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRpcmVjdG9yeSBzZXBhcmF0b3IuCithc19teXNlbGY9CiBjYXNlICQwIGluICMoKAogICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7CiAgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKQEAgLTEyODEyLDE5ICsxNTA3NiwxOSBAQAogKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAogCiAKLSMgYXNfZm5fZXJyb3IgRVJST1IgW0xJTkVOTyBMT0dfRkRdCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBhc19mbl9lcnJvciBTVEFUVVMgRVJST1IgW0xJTkVOTyBMT0dfRkRdCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgT3V0cHV0ICJgYmFzZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFuZCBMT0dfRkQgYXJlCiAjIHByb3ZpZGVkLCBhbHNvIG91dHB1dCB0aGUgZXJyb3IgdG8gTE9HX0ZELCByZWZlcmVuY2luZyBMSU5FTk8uIFRoZW4gZXhpdCB0aGUKLSMgc2NyaXB0IHdpdGggc3RhdHVzICQ/LCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuCisjIHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgogYXNfZm5fZXJyb3IgKCkKIHsKLSAgYXNfc3RhdHVzPSQ/OyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKLSAgaWYgdGVzdCAiJDMiOyB0aGVuCi0gICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMiJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMSIgPiYkMworICBhc19zdGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQorICBpZiB0ZXN0ICIkNCI7IHRoZW4KKyAgICBhc19saW5lbm89JHthc19saW5lbm8tIiQzIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQyIiA+JiQ0CiAgIGZpCi0gICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiAkMSIgPiYyCisgICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiAkMiIgPiYyCiAgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cwogfSAjIGFzX2ZuX2Vycm9yCiAKQEAgLTEzMDIwLDcgKzE1Mjg0LDcgQEAKICAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrCiAgICAgZG9uZQogICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyIKLSAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKKyAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKIAogCiB9ICMgYXNfZm5fbWtkaXJfcApAQCAtMTMwNzMsOCArMTUzMzcsOCBAQAogIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCiAjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgogYWNfbG9nPSIKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgbGliZmZpICRhc19tZSAzLjAuMTByYzAsIHdoaWNoIHdhcwotZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY1LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IGxpYmZmaSAkYXNfbWUgMy4wLjExLCB3aGljaCB3YXMKK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKICAgQ09ORklHX0hFQURFUlMgID0gJENPTkZJR19IRUFERVJTCkBAIC0xMzEzNywxNyArMTU0MDEsMTcgQEAKIENvbmZpZ3VyYXRpb24gY29tbWFuZHM6CiAkY29uZmlnX2NvbW1hbmRzCiAKLVJlcG9ydCBidWdzIHRvIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sPi4iCitSZXBvcnQgYnVncyB0byA8aHR0cDovL2dpdGh1Yi5jb20vYXRncmVlbi9saWJmZmkvaXNzdWVzPi4iCiAKIF9BQ0VPRgogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBhY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgIgogYWNfY3NfdmVyc2lvbj0iXFwKLWxpYmZmaSBjb25maWcuc3RhdHVzIDMuMC4xMHJjMAotY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY1LAorbGliZmZpIGNvbmZpZy5zdGF0dXMgMy4wLjExCitjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgsCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCi1Db3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiBUaGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCiAKQEAgLTEzMTY1LDExICsxNTQyOSwxNiBAQAogd2hpbGUgdGVzdCAkIyAhPSAwCiBkbwogICBjYXNlICQxIGluCi0gIC0tKj0qKQorICAtLSo9PyopCiAgICAgYWNfb3B0aW9uPWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2AKICAgICBhY19vcHRhcmc9YGV4cHIgIlgkMSIgOiAnWFtePV0qPVwoLipcKSdgCiAgICAgYWNfc2hpZnQ9OgogICAgIDs7CisgIC0tKj0pCisgICAgYWNfb3B0aW9uPWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2AKKyAgICBhY19vcHRhcmc9CisgICAgYWNfc2hpZnQ9OgorICAgIDs7CiAgICopCiAgICAgYWNfb3B0aW9uPSQxCiAgICAgYWNfb3B0YXJnPSQyCkBAIC0xMzE5MSw2ICsxNTQ2MCw3IEBACiAgICAgJGFjX3NoaWZ0CiAgICAgY2FzZSAkYWNfb3B0YXJnIGluCiAgICAgKlwnKikgYWNfb3B0YXJnPWAkYXNfZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAgOzsKKyAgICAnJykgYXNfZm5fZXJyb3IgJD8gIm1pc3NpbmcgZmlsZSBhcmd1bWVudCIgOzsKICAgICBlc2FjCiAgICAgYXNfZm5fYXBwZW5kIENPTkZJR19GSUxFUyAiICckYWNfb3B0YXJnJyIKICAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKQEAgLTEzMjAzLDcgKzE1NDczLDcgQEAKICAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKICAgLS1oZSB8IC0taCkKICAgICAjIENvbmZsaWN0IGJldHdlZW4gLS1oZWxwIGFuZCAtLWhlYWRlcgotICAgIGFzX2ZuX2Vycm9yICJhbWJpZ3VvdXMgb3B0aW9uOiBcYCQxJworICAgIGFzX2ZuX2Vycm9yICQ/ICJhbWJpZ3VvdXMgb3B0aW9uOiBcYCQxJwogVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iOzsKICAgLS1oZWxwIHwgLS1oZWwgfCAtaCApCiAgICAgJGFzX2VjaG8gIiRhY19jc191c2FnZSI7IGV4aXQgOzsKQEAgLTEzMjEyLDcgKzE1NDgyLDcgQEAKICAgICBhY19jc19zaWxlbnQ9OiA7OwogCiAgICMgVGhpcyBpcyBhbiBlcnJvci4KLSAgLSopIGFzX2ZuX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCQxJworICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBvcHRpb246IFxgJDEnCiBUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgOzsKIAogICAqKSBhc19mbl9hcHBlbmQgYWNfY29uZmlnX3RhcmdldHMgIiAkMSIKQEAgLTEzMjU2LDYgKzE1NTI2LDE0IEBACiAjCiAjIElOSVQtQ09NTUFORFMKICMKK2F4X2VuYWJsZV9idWlsZGRpcl9zcmNkaXI9IiRzcmNkaXIiICAgICAgICAgICAgICAgICAgICAjICRzcmNkaXIKK2F4X2VuYWJsZV9idWlsZGRpcl9ob3N0PSIkSE9TVCIgICAgICAgICAgICAgICAgICAgICAgICAjICRIT1NUIC8gJGhvc3QKK2F4X2VuYWJsZV9idWlsZGRpcl92ZXJzaW9uPSIkVkVSU0lPTiIgICAgICAgICAgICAgICAgICAjICRWRVJTSU9OCitheF9lbmFibGVfYnVpbGRkaXJfcGFja2FnZT0iJFBBQ0tBR0UiICAgICAgICAgICAgICAgICAgIyAkUEFDS0FHRQorYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpcj0iJGF4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXIiICMgJEFVWAorYXhfZW5hYmxlX2J1aWxkZGlyX3NlZD0iJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiICAgICAgICMgJFNFRAorYXhfZW5hYmxlX2J1aWxkZGlyPSIkYXhfZW5hYmxlX2J1aWxkZGlyIiAgICAgICAgICAgICAgICMgJFNVQgorCiBBTURFUF9UUlVFPSIkQU1ERVBfVFJVRSIgYWNfYXV4X2Rpcj0iJGFjX2F1eF9kaXIiCiAKIApAQCAtMTMyNjYsMTMxICsxNTU0NCwxNTQgQEAKIHNlZF9xdW90ZV9zdWJzdD0nJHNlZF9xdW90ZV9zdWJzdCcKIGRvdWJsZV9xdW90ZV9zdWJzdD0nJGRvdWJsZV9xdW90ZV9zdWJzdCcKIGRlbGF5X3ZhcmlhYmxlX3N1YnN0PSckZGVsYXlfdmFyaWFibGVfc3Vic3QnCi1tYWNyb192ZXJzaW9uPSdgJEVDSE8gIlgkbWFjcm9fdmVyc2lvbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbWFjcm9fcmV2aXNpb249J2AkRUNITyAiWCRtYWNyb19yZXZpc2lvbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX3NoYXJlZD0nYCRFQ0hPICJYJGVuYWJsZV9zaGFyZWQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWVuYWJsZV9zdGF0aWM9J2AkRUNITyAiWCRlbmFibGVfc3RhdGljIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1waWNfbW9kZT0nYCRFQ0hPICJYJHBpY19tb2RlIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1lbmFibGVfZmFzdF9pbnN0YWxsPSdgJEVDSE8gIlgkZW5hYmxlX2Zhc3RfaW5zdGFsbCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaG9zdF9hbGlhcz0nYCRFQ0hPICJYJGhvc3RfYWxpYXMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhvc3Q9J2AkRUNITyAiWCRob3N0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1ob3N0X29zPSdgJEVDSE8gIlgkaG9zdF9vcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYnVpbGRfYWxpYXM9J2AkRUNITyAiWCRidWlsZF9hbGlhcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYnVpbGQ9J2AkRUNITyAiWCRidWlsZCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYnVpbGRfb3M9J2AkRUNITyAiWCRidWlsZF9vcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotU0VEPSdgJEVDSE8gIlgkU0VEIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1Yc2VkPSdgJEVDSE8gIlgkWHNlZCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotR1JFUD0nYCRFQ0hPICJYJEdSRVAiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUVHUkVQPSdgJEVDSE8gIlgkRUdSRVAiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUZHUkVQPSdgJEVDSE8gIlgkRkdSRVAiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUxEPSdgJEVDSE8gIlgkTEQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLU5NPSdgJEVDSE8gIlgkTk0iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUxOX1M9J2AkRUNITyAiWCRMTl9TIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1tYXhfY21kX2xlbj0nYCRFQ0hPICJYJG1heF9jbWRfbGVuIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1hY19vYmpleHQ9J2AkRUNITyAiWCRhY19vYmpleHQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWV4ZWV4dD0nYCRFQ0hPICJYJGV4ZWV4dCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfdW5zZXQ9J2AkRUNITyAiWCRsdF91bnNldCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfU1AyTkw9J2AkRUNITyAiWCRsdF9TUDJOTCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfTkwyU1A9J2AkRUNITyAiWCRsdF9OTDJTUCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcmVsb2FkX2ZsYWc9J2AkRUNITyAiWCRyZWxvYWRfZmxhZyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcmVsb2FkX2NtZHM9J2AkRUNITyAiWCRyZWxvYWRfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotT0JKRFVNUD0nYCRFQ0hPICJYJE9CSkRVTVAiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIlgkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIlgkZmlsZV9tYWdpY19jbWQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUFSPSdgJEVDSE8gIlgkQVIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUFSX0ZMQUdTPSdgJEVDSE8gIlgkQVJfRkxBR1MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLVNUUklQPSdgJEVDSE8gIlgkU1RSSVAiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLVJBTkxJQj0nYCRFQ0hPICJYJFJBTkxJQiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiWCRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2xkX3Bvc3R1bmluc3RhbGxfY21kcz0nYCRFQ0hPICJYJG9sZF9wb3N0dW5pbnN0YWxsX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9sZF9hcmNoaXZlX2NtZHM9J2AkRUNITyAiWCRvbGRfYXJjaGl2ZV9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1DQz0nYCRFQ0hPICJYJENDIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1DRkxBR1M9J2AkRUNITyAiWCRDRkxBR1MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWNvbXBpbGVyPSdgJEVDSE8gIlgkY29tcGlsZXIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUdDQz0nYCRFQ0hPICJYJEdDQyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICJYJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIlgkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIlgkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiWCRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1vYmpkaXI9J2AkRUNITyAiWCRvYmpkaXIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLVNIRUxMPSdgJEVDSE8gIlgkU0hFTEwiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUVDSE89J2AkRUNITyAiWCRFQ0hPIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1NQUdJQ19DTUQ9J2AkRUNITyAiWCRNQUdJQ19DTUQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIlgkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiWCRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICJYJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICJYJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICJYJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1uZWVkX2xvY2tzPSdgJEVDSE8gIlgkbmVlZF9sb2NrcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotRFNZTVVUSUw9J2AkRUNITyAiWCREU1lNVVRJTCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotTk1FRElUPSdgJEVDSE8gIlgkTk1FRElUIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1MSVBPPSdgJEVDSE8gIlgkTElQTyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotT1RPT0w9J2AkRUNITyAiWCRPVE9PTCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotT1RPT0w2ND0nYCRFQ0hPICJYJE9UT09MNjQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWxpYmV4dD0nYCRFQ0hPICJYJGxpYmV4dCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc2hyZXh0X2NtZHM9J2AkRUNITyAiWCRzaHJleHRfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZXh0cmFjdF9leHBzeW1zX2NtZHM9J2AkRUNITyAiWCRleHRyYWN0X2V4cHN5bXNfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYXJjaGl2ZV9jbWRzX25lZWRfbGM9J2AkRUNITyAiWCRhcmNoaXZlX2NtZHNfbmVlZF9sYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz0nYCRFQ0hPICJYJGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nYCRFQ0hPICJYJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9J2AkRUNITyAiWCR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotY29tcGlsZXJfbmVlZHNfb2JqZWN0PSdgJEVDSE8gIlgkY29tcGlsZXJfbmVlZHNfb2JqZWN0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1vbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSdgJEVDSE8gIlgkb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHM9J2AkRUNITyAiWCRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYXJjaGl2ZV9jbWRzPSdgJEVDSE8gIlgkYXJjaGl2ZV9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1hcmNoaXZlX2V4cHN5bV9jbWRzPSdgJEVDSE8gIlgkYXJjaGl2ZV9leHBzeW1fY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbW9kdWxlX2NtZHM9J2AkRUNITyAiWCRtb2R1bGVfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbW9kdWxlX2V4cHN5bV9jbWRzPSdgJEVDSE8gIlgkbW9kdWxlX2V4cHN5bV9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi13aXRoX2dudV9sZD0nYCRFQ0hPICJYJHdpdGhfZ251X2xkIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1hbGxvd191bmRlZmluZWRfZmxhZz0nYCRFQ0hPICJYJGFsbG93X3VuZGVmaW5lZF9mbGFnIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1ub191bmRlZmluZWRfZmxhZz0nYCRFQ0hPICJYJG5vX3VuZGVmaW5lZF9mbGFnIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgJEVDSE8gIlgkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nYCRFQ0hPICJYJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9J2AkRUNITyAiWCRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9kaXJlY3Q9J2AkRUNITyAiWCRoYXJkY29kZV9kaXJlY3QiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT0nYCRFQ0hPICJYJGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfbWludXNfTD0nYCRFQ0hPICJYJGhhcmRjb2RlX21pbnVzX0wiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiWCRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiWCRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWluaGVyaXRfcnBhdGg9J2AkRUNITyAiWCRpbmhlcml0X3JwYXRoIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1saW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIlgkbGlua19hbGxfZGVwbGlicyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICJYJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICJYJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICJYJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICJYJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIlgkaW5jbHVkZV9leHBzeW1zIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1wcmVsaW5rX2NtZHM9J2AkRUNITyAiWCRwcmVsaW5rX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIlgkZmlsZV9saXN0X3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIlgkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICJYJG5lZWRfbGliX3ByZWZpeCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbmVlZF92ZXJzaW9uPSdgJEVDSE8gIlgkbmVlZF92ZXJzaW9uIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi12ZXJzaW9uX3R5cGU9J2AkRUNITyAiWCR2ZXJzaW9uX3R5cGUiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXJ1bnBhdGhfdmFyPSdgJEVDSE8gIlgkcnVucGF0aF92YXIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXNobGlicGF0aF92YXI9J2AkRUNITyAiWCRzaGxpYnBhdGhfdmFyIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9J2AkRUNITyAiWCRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWxpYm5hbWVfc3BlYz0nYCRFQ0hPICJYJGxpYm5hbWVfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbGlicmFyeV9uYW1lc19zcGVjPSdgJEVDSE8gIlgkbGlicmFyeV9uYW1lc19zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zb25hbWVfc3BlYz0nYCRFQ0hPICJYJHNvbmFtZV9zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIlgkcG9zdGluc3RhbGxfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcG9zdHVuaW5zdGFsbF9jbWRzPSdgJEVDSE8gIlgkcG9zdHVuaW5zdGFsbF9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1maW5pc2hfY21kcz0nYCRFQ0hPICJYJGZpbmlzaF9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1maW5pc2hfZXZhbD0nYCRFQ0hPICJYJGZpbmlzaF9ldmFsIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9pbnRvX2xpYnM9J2AkRUNITyAiWCRoYXJkY29kZV9pbnRvX2xpYnMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0nYCRFQ0hPICJYJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9J2AkRUNITyAiWCRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfYWN0aW9uPSdgJEVDSE8gIlgkaGFyZGNvZGVfYWN0aW9uIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1lbmFibGVfZGxvcGVuPSdgJEVDSE8gIlgkZW5hYmxlX2Rsb3BlbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX2Rsb3Blbl9zZWxmPSdgJEVDSE8gIlgkZW5hYmxlX2Rsb3Blbl9zZWxmIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1lbmFibGVfZGxvcGVuX3NlbGZfc3RhdGljPSdgJEVDSE8gIlgkZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2xkX3N0cmlwbGliPSdgJEVDSE8gIlgkb2xkX3N0cmlwbGliIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zdHJpcGxpYj0nYCRFQ0hPICJYJHN0cmlwbGliIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCittYWNyb192ZXJzaW9uPSdgJEVDSE8gIiRtYWNyb192ZXJzaW9uIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK21hY3JvX3JldmlzaW9uPSdgJEVDSE8gIiRtYWNyb19yZXZpc2lvbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfc2hhcmVkPSdgJEVDSE8gIiRlbmFibGVfc2hhcmVkIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2VuYWJsZV9zdGF0aWM9J2AkRUNITyAiJGVuYWJsZV9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcGljX21vZGU9J2AkRUNITyAiJHBpY19tb2RlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2VuYWJsZV9mYXN0X2luc3RhbGw9J2AkRUNITyAiJGVuYWJsZV9mYXN0X2luc3RhbGwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworU0hFTEw9J2AkRUNITyAiJFNIRUxMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0VDSE89J2AkRUNITyAiJEVDSE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworUEFUSF9TRVBBUkFUT1I9J2AkRUNITyAiJFBBVEhfU0VQQVJBVE9SIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hvc3RfYWxpYXM9J2AkRUNITyAiJGhvc3RfYWxpYXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaG9zdD0nYCRFQ0hPICIkaG9zdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitob3N0X29zPSdgJEVDSE8gIiRob3N0X29zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2J1aWxkX2FsaWFzPSdgJEVDSE8gIiRidWlsZF9hbGlhcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitidWlsZD0nYCRFQ0hPICIkYnVpbGQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYnVpbGRfb3M9J2AkRUNITyAiJGJ1aWxkX29zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1NFRD0nYCRFQ0hPICIkU0VEIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1hzZWQ9J2AkRUNITyAiJFhzZWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworR1JFUD0nYCRFQ0hPICIkR1JFUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitFR1JFUD0nYCRFQ0hPICIkRUdSRVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworRkdSRVA9J2AkRUNITyAiJEZHUkVQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0xEPSdgJEVDSE8gIiRMRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitOTT0nYCRFQ0hPICIkTk0iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworTE5fUz0nYCRFQ0hPICIkTE5fUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCittYXhfY21kX2xlbj0nYCRFQ0hPICIkbWF4X2NtZF9sZW4iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYWNfb2JqZXh0PSdgJEVDSE8gIiRhY19vYmpleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3JlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCityZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0FSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1JBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK29sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvbGRfcG9zdHVuaW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdHVuaW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK29sZF9hcmNoaXZlX2NtZHM9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPSdgJEVDSE8gIiRsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb24iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQ0M9J2AkRUNITyAiJENDIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0NGTEFHUz0nYCRFQ0hPICIkQ0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2NvbXBpbGVyPSdgJEVDSE8gIiRjb21waWxlciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitHQ0M9J2AkRUNITyAiJEdDQyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCituZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK05NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0xJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworT1RPT0w9J2AkRUNITyAiJE9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK09UT09MNjQ9J2AkRUNITyAiJE9UT09MNjQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbGliZXh0PSdgJEVDSE8gIiRsaWJleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc2hyZXh0X2NtZHM9J2AkRUNITyAiJHNocmV4dF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2V4dHJhY3RfZXhwc3ltc19jbWRzPSdgJEVDSE8gIiRleHRyYWN0X2V4cHN5bXNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCithcmNoaXZlX2NtZHNfbmVlZF9sYz0nYCRFQ0hPICIkYXJjaGl2ZV9jbWRzX25lZWRfbGMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz0nYCRFQ0hPICIkZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9J2AkRUNITyAiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCit3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nYCRFQ0hPICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworY29tcGlsZXJfbmVlZHNfb2JqZWN0PSdgJEVDSE8gIiRjb21waWxlcl9uZWVkc19vYmplY3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0nYCRFQ0hPICIkb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcz0nYCRFQ0hPICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYXJjaGl2ZV9jbWRzPSdgJEVDSE8gIiRhcmNoaXZlX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYXJjaGl2ZV9leHBzeW1fY21kcz0nYCRFQ0hPICIkYXJjaGl2ZV9leHBzeW1fY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCittb2R1bGVfY21kcz0nYCRFQ0hPICIkbW9kdWxlX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbW9kdWxlX2V4cHN5bV9jbWRzPSdgJEVDSE8gIiRtb2R1bGVfZXhwc3ltX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJword2l0aF9nbnVfbGQ9J2AkRUNITyAiJHdpdGhfZ251X2xkIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2FsbG93X3VuZGVmaW5lZF9mbGFnPSdgJEVDSE8gIiRhbGxvd191bmRlZmluZWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitub191bmRlZmluZWRfZmxhZz0nYCRFQ0hPICIkbm9fdW5kZWZpbmVkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nYCRFQ0hPICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSdgJEVDSE8gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX2RpcmVjdD0nYCRFQ0hPICIkaGFyZGNvZGVfZGlyZWN0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT0nYCRFQ0hPICIkaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX21pbnVzX0w9J2AkRUNITyAiJGhhcmRjb2RlX21pbnVzX0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2xpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCit2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbmVlZF92ZXJzaW9uPSdgJEVDSE8gIiRuZWVkX3ZlcnNpb24iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwordmVyc2lvbl90eXBlPSdgJEVDSE8gIiR2ZXJzaW9uX3R5cGUiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcnVucGF0aF92YXI9J2AkRUNITyAiJHJ1bnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NobGlicGF0aF92YXI9J2AkRUNITyAiJHNobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPSdgJEVDSE8gIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbGlibmFtZV9zcGVjPSdgJEVDSE8gIiRsaWJuYW1lX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbGlicmFyeV9uYW1lc19zcGVjPSdgJEVDSE8gIiRsaWJyYXJ5X25hbWVzX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc29uYW1lX3NwZWM9J2AkRUNITyAiJHNvbmFtZV9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2luc3RhbGxfb3ZlcnJpZGVfbW9kZT0nYCRFQ0hPICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJHBvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcG9zdHVuaW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRwb3N0dW5pbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZmluaXNoX2NtZHM9J2AkRUNITyAiJGZpbmlzaF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2ZpbmlzaF9ldmFsPSdgJEVDSE8gIiRmaW5pc2hfZXZhbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9pbnRvX2xpYnM9J2AkRUNITyAiJGhhcmRjb2RlX2ludG9fbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9J2AkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nYCRFQ0hPICIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfYWN0aW9uPSdgJEVDSE8gIiRoYXJkY29kZV9hY3Rpb24iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX2Rsb3Blbj0nYCRFQ0hPICIkZW5hYmxlX2Rsb3BlbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfZGxvcGVuX3NlbGY9J2AkRUNITyAiJGVuYWJsZV9kbG9wZW5fc2VsZiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfZGxvcGVuX3NlbGZfc3RhdGljPSdgJEVDSE8gIiRlbmFibGVfZGxvcGVuX3NlbGZfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK29sZF9zdHJpcGxpYj0nYCRFQ0hPICIkb2xkX3N0cmlwbGliIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3N0cmlwbGliPSdgJEVDSE8gIiRzdHJpcGxpYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAKIExUQ0M9JyRMVENDJwogTFRDRkxBR1M9JyRMVENGTEFHUycKIGNvbXBpbGVyPSckY29tcGlsZXJfREVGQVVMVCcKIAorIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50IGJ1aWx0aW4gb3IgcHJpbnRmLgorZnVuY19mYWxsYmFja19lY2hvICgpCit7CisgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCitcJDEKK19MVEVDSE9fRU9GJworfQorCiAjIFF1b3RlIGV2YWxlZCBzdHJpbmdzLgotZm9yIHZhciBpbiBTRUQgXAorZm9yIHZhciBpbiBTSEVMTCBcCitFQ0hPIFwKK1BBVEhfU0VQQVJBVE9SIFwKK1NFRCBcCiBHUkVQIFwKIEVHUkVQIFwKIEZHUkVQIFwKQEAgLTEzNDAzLDggKzE1NzA0LDEzIEBACiBPQkpEVU1QIFwKIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKIGZpbGVfbWFnaWNfY21kIFwKK2ZpbGVfbWFnaWNfZ2xvYiBcCit3YW50X25vY2FzZWdsb2IgXAorRExMVE9PTCBcCitzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCiBBUiBcCiBBUl9GTEFHUyBcCithcmNoaXZlcl9saXN0X3NwZWMgXAogU1RSSVAgXAogUkFOTElCIFwKIENDIFwKQEAgLTEzNDE0LDE0ICsxNTcyMCwxNCBAQAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi1TSEVMTCBcCi1FQ0hPIFwKK25tX2ZpbGVfbGlzdF9zcGVjIFwKIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLWx0X3Byb2dfY29tcGlsZXJfd2wgXAogbHRfcHJvZ19jb21waWxlcl9waWMgXAorbHRfcHJvZ19jb21waWxlcl93bCBcCiBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCiBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCiBuZWVkX2xvY2tzIFwKK01BTklGRVNUX1RPT0wgXAogRFNZTVVUSUwgXAogTk1FRElUIFwKIExJUE8gXApAQCAtMTM0MzUsOSArMTU3NDEsNyBAQAogYWxsb3dfdW5kZWZpbmVkX2ZsYWcgXAogbm9fdW5kZWZpbmVkX2ZsYWcgXAogaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotZml4X3NyY2ZpbGVfcGF0aCBcCiBleGNsdWRlX2V4cHN5bXMgXAogaW5jbHVkZV9leHBzeW1zIFwKIGZpbGVfbGlzdF9zcGVjIFwKQEAgLTEzNDQ1LDEyICsxNTc0OSwxMyBAQAogbGlibmFtZV9zcGVjIFwKIGxpYnJhcnlfbmFtZXNfc3BlYyBcCiBzb25hbWVfc3BlYyBcCitpbnN0YWxsX292ZXJyaWRlX21vZGUgXAogZmluaXNoX2V2YWwgXAogb2xkX3N0cmlwbGliIFwKIHN0cmlwbGliOyBkbwotICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gIlhcXFxcXCRcJHZhciJcYCBpbgorICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgogICAgICpbXFxcXFxcXGBcXCJcXFwkXSopCi0gICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlhcXFwkXCR2YXJcXCIgfCBcXFwkWHNlZCAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgogICAgICAgOzsKICAgICAqKQogICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXCRcJHZhclxcXFxcXCIiCkBAIC0xMzQ3MiwxNCArMTU3NzcsMTUgQEAKIG1vZHVsZV9leHBzeW1fY21kcyBcCiBleHBvcnRfc3ltYm9sc19jbWRzIFwKIHByZWxpbmtfY21kcyBcCitwb3N0bGlua19jbWRzIFwKIHBvc3RpbnN0YWxsX2NtZHMgXAogcG9zdHVuaW5zdGFsbF9jbWRzIFwKIGZpbmlzaF9jbWRzIFwKIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyBcCiBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYzsgZG8KLSAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPICJYXFxcXFwkXCR2YXIiXGAgaW4KKyAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtMTM0ODcsMTIgKzE1NzkzLDYgQEAKICAgICBlc2FjCiBkb25lCiAKLSMgRml4LXVwIGZhbGxiYWNrIGVjaG8gaWYgaXQgd2FzIG1hbmdsZWQgYnkgdGhlIGFib3ZlIHF1b3RpbmcgcnVsZXMuCi1jYXNlIFwkbHRfRUNITyBpbgotKidcXFwkMCAtLWZhbGxiYWNrLWVjaG8iJykgIGx0X0VDSE89XGBcJEVDSE8gIlhcJGx0X0VDSE8iIHwgXCRYc2VkIC1lICdzL1xcXFxcXFxcXFxcXFxcXCQwIC0tZmFsbGJhY2stZWNobyJcJC9cJDAgLS1mYWxsYmFjay1lY2hvIi8nXGAKLSAgOzsKLWVzYWMKLQogYWNfYXV4X2Rpcj0nJGFjX2F1eF9kaXInCiB4c2lfc2hlbGw9JyR4c2lfc2hlbGwnCiBsdF9zaGVsbF9hcHBlbmQ9JyRsdF9zaGVsbF9hcHBlbmQnCkBAIC0xMzUyMyw2ICsxNTgyMyw3IEBACiBkbwogICBjYXNlICRhY19jb25maWdfdGFyZ2V0IGluCiAgICAgImZmaWNvbmZpZy5oIikgQ09ORklHX0hFQURFUlM9IiRDT05GSUdfSEVBREVSUyBmZmljb25maWcuaCIgOzsKKyAgICAiYnVpbGRpciIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBidWlsZGlyIiA7OwogICAgICJkZXBmaWxlcyIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBkZXBmaWxlcyIgOzsKICAgICAibGlidG9vbCIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBsaWJ0b29sIiA7OwogICAgICJpbmNsdWRlIikgQ09ORklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIGluY2x1ZGUiIDs7CkBAIC0xMzUzNyw3ICsxNTgzOCw3IEBACiAgICAgImluY2x1ZGUvZmZpX2NvbW1vbi5oIikgQ09ORklHX0xJTktTPSIkQ09ORklHX0xJTktTIGluY2x1ZGUvZmZpX2NvbW1vbi5oOmluY2x1ZGUvZmZpX2NvbW1vbi5oIiA7OwogICAgICJmZmljb25maWcucHkiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZmZpY29uZmlnLnB5IiA7OwogCi0gICopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50OiBcYCRhY19jb25maWdfdGFyZ2V0JyIgIiRMSU5FTk8iIDU7OworICAqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3RhcmdldCciICIkTElORU5PIiA1OzsKICAgZXNhYwogZG9uZQogCkBAIC0xMzU2MSw5ICsxNTg2MiwxMCBAQAogIyBhZnRlciBpdHMgY3JlYXRpb24gYnV0IGJlZm9yZSBpdHMgbmFtZSBoYXMgYmVlbiBhc3NpZ25lZCB0byBgJHRtcCcuCiAkZGVidWcgfHwKIHsKLSAgdG1wPQorICB0bXA9IGFjX3RtcD0KICAgdHJhcCAnZXhpdF9zdGF0dXM9JD8KLSAgeyB0ZXN0IC16ICIkdG1wIiB8fCB0ZXN0ICEgLWQgIiR0bXAiIHx8IHJtIC1mciAiJHRtcCI7IH0gJiYgZXhpdCAkZXhpdF9zdGF0dXMKKyAgOiAiJHthY190bXA6PSR0bXB9IgorICB7IHRlc3QgISAtZCAiJGFjX3RtcCIgfHwgcm0gLWZyICIkYWNfdG1wIjsgfSAmJiBleGl0ICRleGl0X3N0YXR1cwogJyAwCiAgIHRyYXAgJ2FzX2ZuX2V4aXQgMScgMSAyIDEzIDE1CiB9CkBAIC0xMzU3MSwxMiArMTU4NzMsMTMgQEAKIAogewogICB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIuL2NvbmZYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYKLSAgdGVzdCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIKKyAgdGVzdCAtZCAiJHRtcCIKIH0gIHx8CiB7CiAgIHRtcD0uL2NvbmYkJC0kUkFORE9NCiAgICh1bWFzayAwNzcgJiYgbWtkaXIgIiR0bXAiKQotfSB8fCBhc19mbl9lcnJvciAiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gLiIgIiRMSU5FTk8iIDUKK30gfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIC4iICIkTElORU5PIiA1CithY190bXA9JHRtcAogCiAjIFNldCB1cCB0aGUgc2NyaXB0cyBmb3IgQ09ORklHX0ZJTEVTIHNlY3Rpb24uCiAjIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBpZiB0aGVyZSBhcmUgbm8gQ09ORklHX0ZJTEVTLgpAQCAtMTM1OTMsMTIgKzE1ODk2LDEyIEBACiBmaQogYWNfY3NfYXdrX2NyPWAkQVdLICdCRUdJTiB7IHByaW50ICJhXHJiIiB9JyA8L2Rldi9udWxsIDI+L2Rldi9udWxsYAogaWYgdGVzdCAiJGFjX2NzX2F3a19jciIgPSAiYSR7YWNfY3J9YiI7IHRoZW4KLSAgYWNfY3NfYXdrX2NyPSdccicKKyAgYWNfY3NfYXdrX2NyPSdcXHInCiBlbHNlCiAgIGFjX2NzX2F3a19jcj0kYWNfY3IKIGZpCiAKLWVjaG8gJ0JFR0lOIHsnID4iJHRtcC9zdWJzMS5hd2siICYmCitlY2hvICdCRUdJTiB7JyA+IiRhY190bXAvc3ViczEuYXdrIiAmJgogX0FDRU9GCiAKIApAQCAtMTM2MDcsMTggKzE1OTEwLDE4IEBACiAgIGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IHNlZCAncy8uKi8mISQmJGFjX2RlbGltLycgJiYKICAgZWNobyAiX0FDRU9GIgogfSA+Y29uZiQkc3Vicy5zaCB8fAotICBhc19mbl9lcnJvciAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1Ci1hY19kZWxpbV9udW09YGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IGdyZXAgLWMgJyQnYAorICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CithY19kZWxpbV9udW09YGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IGdyZXAgLWMgJ14nYAogYWNfZGVsaW09JyUhXyEjICcKIGZvciBhY19sYXN0X3RyeSBpbiBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSA6OyBkbwogICAuIC4vY29uZiQkc3Vicy5zaCB8fAotICAgIGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CiAKICAgYWNfZGVsaW1fbj1gc2VkIC1uICJzLy4qJGFjX2RlbGltXCQvWC9wIiBjb25mJCRzdWJzLmF3ayB8IGdyZXAgLWMgWGAKICAgaWYgdGVzdCAkYWNfZGVsaW1fbiA9ICRhY19kZWxpbV9udW07IHRoZW4KICAgICBicmVhawogICBlbGlmICRhY19sYXN0X3RyeTsgdGhlbgotICAgIGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CiAgIGVsc2UKICAgICBhY19kZWxpbT0iJGFjX2RlbGltISRhY19kZWxpbSBfJGFjX2RlbGltISEgIgogICBmaQpAQCAtMTM2MjYsNyArMTU5MjksNyBAQAogcm0gLWYgY29uZiQkc3Vicy5zaAogCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLWNhdCA+PiJcJHRtcC9zdWJzMS5hd2siIDw8XFxfQUNBV0sgJiYKK2NhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8XFxfQUNBV0sgJiYKIF9BQ0VPRgogc2VkIC1uICcKIGgKQEAgLTEzNjc0LDcgKzE1OTc3LDcgQEAKIHJtIC1mIGNvbmYkJHN1YnMuYXdrCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIF9BQ0FXSwotY2F0ID4+IlwkdG1wL3N1YnMxLmF3ayIgPDxfQUNBV0sgJiYKK2NhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8X0FDQVdLICYmCiAgIGZvciAoa2V5IGluIFMpIFNfaXNfc2V0W2tleV0gPSAxCiAgIEZTID0gIgciCiAKQEAgLTEzNzA2LDIxICsxNjAwOSwyOSBAQAogICBzZWQgInMvJGFjX2NyXCQvLzsgcy8kYWNfY3IvJGFjX2NzX2F3a19jci9nIgogZWxzZQogICBjYXQKLWZpIDwgIiR0bXAvc3ViczEuYXdrIiA+ICIkdG1wL3N1YnMuYXdrIiBcCi0gIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGZpbGVzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKK2ZpIDwgIiRhY190bXAvc3ViczEuYXdrIiA+ICIkYWNfdG1wL3N1YnMuYXdrIiBcCisgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGZpbGVzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKIF9BQ0VPRgogCi0jIFZQQVRIIG1heSBjYXVzZSB0cm91YmxlIHdpdGggc29tZSBtYWtlcywgc28gd2UgcmVtb3ZlICQoc3JjZGlyKSwKLSMgJHtzcmNkaXJ9IGFuZCBAc3JjZGlyQCBmcm9tIFZQQVRIIGlmIHNyY2RpciBpcyAiLiIsIHN0cmlwIGxlYWRpbmcgYW5kCisjIFZQQVRIIG1heSBjYXVzZSB0cm91YmxlIHdpdGggc29tZSBtYWtlcywgc28gd2UgcmVtb3ZlIHNvbGUgJChzcmNkaXIpLAorIyAke3NyY2Rpcn0gYW5kIEBzcmNkaXJAIGVudHJpZXMgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBzdHJpcCBsZWFkaW5nIGFuZAogIyB0cmFpbGluZyBjb2xvbnMgYW5kIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBsaW5lIGlmIFZQQVRIIGJlY29tZXMgZW1wdHkKICMgKGFjdHVhbGx5IHdlIGxlYXZlIGFuIGVtcHR5IGxpbmUgdG8gcHJlc2VydmUgbGluZSBudW1iZXJzKS4KIGlmIHRlc3QgIngkc3JjZGlyIiA9IHguOyB0aGVuCi0gIGFjX3Zwc3ViPScvXlsJIF0qVlBBVEhbCSBdKj0vewotcy86KlwkKHNyY2Rpcik6Ki86Lwotcy86Klwke3NyY2Rpcn06Ki86Lwotcy86KkBzcmNkaXJAOiovOi8KLXMvXlwoW149XSo9WwkgXSpcKToqL1wxLworICBhY192cHN1Yj0nL15bCSBdKlZQQVRIWwkgXSo9WwkgXSoveworaAorcy8vLworcy9eLzovCitzL1sJIF0qJC86Lworcy86XCQoc3JjZGlyKTovOi9nCitzLzpcJHtzcmNkaXJ9Oi86L2cKK3MvOkBzcmNkaXJAOi86L2cKK3MvXjoqLy8KIHMvOiokLy8KK3gKK3MvXCg9WwkgXSpcKS4qL1wxLworRworcy9cbi8vCiBzL15bXj1dKj1bCSBdKiQvLwogfScKIGZpCkBAIC0xMzczMiw3ICsxNjA0Myw3IEBACiAjIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBpZiB0aGVyZSBhcmUgbm8gQ09ORklHX0hFQURFUlMuCiAjIFRoaXMgaGFwcGVucyBmb3IgaW5zdGFuY2Ugd2l0aCBgLi9jb25maWcuc3RhdHVzIE1ha2VmaWxlJy4KIGlmIHRlc3QgLW4gIiRDT05GSUdfSEVBREVSUyI7IHRoZW4KLWNhdCA+IiR0bXAvZGVmaW5lcy5hd2siIDw8XF9BQ0FXSyB8fAorY2F0ID4iJGFjX3RtcC9kZWZpbmVzLmF3ayIgPDxcX0FDQVdLIHx8CiBCRUdJTiB7CiBfQUNFT0YKIApAQCAtMTM3NDQsMTEgKzE2MDU1LDExIEBACiAjIGhhbmRsaW5nIG9mIGxvbmcgbGluZXMuCiBhY19kZWxpbT0nJSFfISMgJwogZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIDo7IGRvCi0gIGFjX3Q9YHNlZCAtbiAiLyRhY19kZWxpbS9wIiBjb25mZGVmcy5oYAotICBpZiB0ZXN0IC16ICIkYWNfdCI7IHRoZW4KKyAgYWNfdHQ9YHNlZCAtbiAiLyRhY19kZWxpbS9wIiBjb25mZGVmcy5oYAorICBpZiB0ZXN0IC16ICIkYWNfdHQiOyB0aGVuCiAgICAgYnJlYWsKICAgZWxpZiAkYWNfbGFzdF90cnk7IHRoZW4KLSAgICBhc19mbl9lcnJvciAiY291bGQgbm90IG1ha2UgJENPTkZJR19IRUFERVJTIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX0hFQURFUlMiICIkTElORU5PIiA1CiAgIGVsc2UKICAgICBhY19kZWxpbT0iJGFjX2RlbGltISRhY19kZWxpbSBfJGFjX2RlbGltISEgIgogICBmaQpAQCAtMTM4MzMsNyArMTYxNDQsNyBAQAogX0FDQVdLCiBfQUNFT0YKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLSAgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBzZXR1cCBjb25maWcgaGVhZGVycyBtYWNoaW5lcnkiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGhlYWRlcnMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQogZmkgIyB0ZXN0IC1uICIkQ09ORklHX0hFQURFUlMiCiAKIApAQCAtMTM4NDYsNyArMTYxNTcsNyBAQAogICBlc2FjCiAgIGNhc2UgJGFjX21vZGUkYWNfdGFnIGluCiAgIDpbRkhMXSo6Kik7OwotICA6TCogfCA6Qyo6KikgYXNfZm5fZXJyb3IgImludmFsaWQgdGFnIFxgJGFjX3RhZyciICIkTElORU5PIiA1OzsKKyAgOkwqIHwgOkMqOiopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHRhZyBcYCRhY190YWcnIiAiJExJTkVOTyIgNTs7CiAgIDpbRkhdLSkgYWNfdGFnPS06LTs7CiAgIDpbRkhdKikgYWNfdGFnPSRhY190YWc6JGFjX3RhZy5pbjs7CiAgIGVzYWMKQEAgLTEzODY1LDcgKzE2MTc2LDcgQEAKICAgICBmb3IgYWNfZgogICAgIGRvCiAgICAgICBjYXNlICRhY19mIGluCi0gICAgICAtKSBhY19mPSIkdG1wL3N0ZGluIjs7CisgICAgICAtKSBhY19mPSIkYWNfdG1wL3N0ZGluIjs7CiAgICAgICAqKSAjIExvb2sgZm9yIHRoZSBmaWxlIGZpcnN0IGluIHRoZSBidWlsZCB0cmVlLCB0aGVuIGluIHRoZSBzb3VyY2UgdHJlZQogCSAjIChpZiB0aGUgcGF0aCBpcyBub3QgYWJzb2x1dGUpLiAgVGhlIGFic29sdXRlIHBhdGggY2Fubm90IGJlIERPUy1zdHlsZSwKIAkgIyBiZWNhdXNlICRhY19mIGNhbm5vdCBjb250YWluIGA6Jy4KQEAgLTEzODc0LDcgKzE2MTg1LDcgQEAKIAkgICBbXFwvJF0qKSBmYWxzZTs7CiAJICAgKikgdGVzdCAtZiAiJHNyY2Rpci8kYWNfZiIgJiYgYWNfZj0iJHNyY2Rpci8kYWNfZiI7OwogCSAgIGVzYWMgfHwKLQkgICBhc19mbl9lcnJvciAiY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogXGAkYWNfZiciICIkTElORU5PIiA1OzsKKwkgICBhc19mbl9lcnJvciAxICJjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiBcYCRhY19mJyIgIiRMSU5FTk8iIDU7OwogICAgICAgZXNhYwogICAgICAgY2FzZSAkYWNfZiBpbiAqXCcqKSBhY19mPWAkYXNfZWNobyAiJGFjX2YiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgZXNhYwogICAgICAgYXNfZm5fYXBwZW5kIGFjX2ZpbGVfaW5wdXRzICIgJyRhY19mJyIKQEAgLTEzOTAwLDggKzE2MjExLDggQEAKICAgICBlc2FjCiAKICAgICBjYXNlICRhY190YWcgaW4KLSAgICAqOi06KiB8ICo6LSkgY2F0ID4iJHRtcC9zdGRpbiIgXAotICAgICAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1IDs7CisgICAgKjotOiogfCAqOi0pIGNhdCA+IiRhY190bXAvc3RkaW4iIFwKKyAgICAgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNSA7OwogICAgIGVzYWMKICAgICA7OwogICBlc2FjCkBAIC0xNDAzNywyMyArMTYzNDgsMjQgQEAKIHMmQE1LRElSX1BAJiRhY19NS0RJUl9QJjt0IHQKICRhY19kYXRhcm9vdGRpcl9oYWNrCiAiCi1ldmFsIHNlZCBcIlwkYWNfc2VkX2V4dHJhXCIgIiRhY19maWxlX2lucHV0cyIgfCAkQVdLIC1mICIkdG1wL3N1YnMuYXdrIiA+JHRtcC9vdXQgXAotICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKK2V2YWwgc2VkIFwiXCRhY19zZWRfZXh0cmFcIiAiJGFjX2ZpbGVfaW5wdXRzIiB8ICRBV0sgLWYgIiRhY190bXAvc3Vicy5hd2siIFwKKyAgPiRhY190bXAvb3V0IHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQogCiB0ZXN0IC16ICIkYWNfZGF0YXJvb3RkaXJfaGFjayRhY19kYXRhcm9vdGRpcl9zZWVuIiAmJgotICB7IGFjX291dD1gc2VkIC1uICcvXCR7ZGF0YXJvb3RkaXJ9L3AnICIkdG1wL291dCJgOyB0ZXN0IC1uICIkYWNfb3V0IjsgfSAmJgotICB7IGFjX291dD1gc2VkIC1uICcvXlsJIF0qZGF0YXJvb3RkaXJbCSBdKjoqPS9wJyAiJHRtcC9vdXQiYDsgdGVzdCAteiAiJGFjX291dCI7IH0gJiYKKyAgeyBhY19vdXQ9YHNlZCAtbiAnL1wke2RhdGFyb290ZGlyfS9wJyAiJGFjX3RtcC9vdXQiYDsgdGVzdCAtbiAiJGFjX291dCI7IH0gJiYKKyAgeyBhY19vdXQ9YHNlZCAtbiAnL15bCSBdKmRhdGFyb290ZGlyWwkgXSo6Kj0vcCcgXAorICAgICAgIiRhY190bXAvb3V0ImA7IHRlc3QgLXogIiRhY19vdXQiOyB9ICYmCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJGFjX2ZpbGUgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIFxgZGF0YXJvb3RkaXInCi13aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQuIiA+JjUKK3doaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVmaW5lZCIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfZmlsZSBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUgXGBkYXRhcm9vdGRpcicKLXdoaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVmaW5lZC4iID4mMjt9Cit3aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQiID4mMjt9CiAKLSAgcm0gLWYgIiR0bXAvc3RkaW4iCisgIHJtIC1mICIkYWNfdG1wL3N0ZGluIgogICBjYXNlICRhY19maWxlIGluCi0gIC0pIGNhdCAiJHRtcC9vdXQiICYmIHJtIC1mICIkdG1wL291dCI7OwotICAqKSBybSAtZiAiJGFjX2ZpbGUiICYmIG12ICIkdG1wL291dCIgIiRhY19maWxlIjs7CisgIC0pIGNhdCAiJGFjX3RtcC9vdXQiICYmIHJtIC1mICIkYWNfdG1wL291dCI7OworICAqKSBybSAtZiAiJGFjX2ZpbGUiICYmIG12ICIkYWNfdG1wL291dCIgIiRhY19maWxlIjs7CiAgIGVzYWMgXAotICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CiAgOzsKICAgOkgpCiAgICMKQEAgLTE0MDYyLDIxICsxNjM3NCwyMSBAQAogICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCiAgICAgewogICAgICAgJGFzX2VjaG8gIi8qICRjb25maWd1cmVfaW5wdXQgICovIiBcCi0gICAgICAmJiBldmFsICckQVdLIC1mICIkdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIKLSAgICB9ID4iJHRtcC9jb25maWcuaCIgXAotICAgICAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1Ci0gICAgaWYgZGlmZiAiJGFjX2ZpbGUiICIkdG1wL2NvbmZpZy5oIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgICYmIGV2YWwgJyRBV0sgLWYgIiRhY190bXAvZGVmaW5lcy5hd2siJyAiJGFjX2ZpbGVfaW5wdXRzIgorICAgIH0gPiIkYWNfdG1wL2NvbmZpZy5oIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyAgICBpZiBkaWZmICIkYWNfZmlsZSIgIiRhY190bXAvY29uZmlnLmgiID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfZmlsZSBpcyB1bmNoYW5nZWQiID4mNQogJGFzX2VjaG8gIiRhc19tZTogJGFjX2ZpbGUgaXMgdW5jaGFuZ2VkIiA+JjY7fQogICAgIGVsc2UKICAgICAgIHJtIC1mICIkYWNfZmlsZSIKLSAgICAgIG12ICIkdG1wL2NvbmZpZy5oIiAiJGFjX2ZpbGUiIFwKLQl8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyAgICAgIG12ICIkYWNfdG1wL2NvbmZpZy5oIiAiJGFjX2ZpbGUiIFwKKwl8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKICAgICBmaQogICBlbHNlCiAgICAgJGFzX2VjaG8gIi8qICRjb25maWd1cmVfaW5wdXQgICovIiBcCi0gICAgICAmJiBldmFsICckQVdLIC1mICIkdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIgXAotICAgICAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgLSIgIiRMSU5FTk8iIDUKKyAgICAgICYmIGV2YWwgJyRBV0sgLWYgIiRhY190bXAvZGVmaW5lcy5hd2siJyAiJGFjX2ZpbGVfaW5wdXRzIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAtIiAiJExJTkVOTyIgNQogICBmaQogIyBDb21wdXRlICIkYWNfZmlsZSIncyBpbmRleCBpbiAkY29uZmlnX2hlYWRlcnMuCiBfYW1fYXJnPSIkYWNfZmlsZSIKQEAgLTE0MTMwLDE5ICsxNjQ0MiwxOSBAQAogJGFzX2VjaG8gIiRhc19tZTogbGlua2luZyAkYWNfc291cmNlIHRvICRhY19maWxlIiA+JjY7fQogCiAgICAgaWYgdGVzdCAhIC1yICIkYWNfc291cmNlIjsgdGhlbgotICAgICAgYXNfZm5fZXJyb3IgIiRhY19zb3VyY2U6IGZpbGUgbm90IGZvdW5kIiAiJExJTkVOTyIgNQorICAgICAgYXNfZm5fZXJyb3IgJD8gIiRhY19zb3VyY2U6IGZpbGUgbm90IGZvdW5kIiAiJExJTkVOTyIgNQogICAgIGZpCiAgICAgcm0gLWYgIiRhY19maWxlIgogCiAgICAgIyBUcnkgYSByZWxhdGl2ZSBzeW1saW5rLCB0aGVuIGEgaGFyZCBsaW5rLCB0aGVuIGEgY29weS4KLSAgICBjYXNlICRzcmNkaXIgaW4KKyAgICBjYXNlICRhY19zb3VyY2UgaW4KICAgICBbXFwvJF0qIHwgPzpbXFwvXSogKSBhY19yZWxfc291cmNlPSRhY19zb3VyY2UgOzsKIAkqKSBhY19yZWxfc291cmNlPSRhY190b3BfYnVpbGRfcHJlZml4JGFjX3NvdXJjZSA7OwogICAgIGVzYWMKICAgICBsbiAtcyAiJGFjX3JlbF9zb3VyY2UiICIkYWNfZmlsZSIgMj4vZGV2L251bGwgfHwKICAgICAgIGxuICIkYWNfc291cmNlIiAiJGFjX2ZpbGUiIDI+L2Rldi9udWxsIHx8CiAgICAgICBjcCAtcCAiJGFjX3NvdXJjZSIgIiRhY19maWxlIiB8fAotICAgICAgYXNfZm5fZXJyb3IgImNhbm5vdCBsaW5rIG9yIGNvcHkgJGFjX3NvdXJjZSB0byAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgbGluayBvciBjb3B5ICRhY19zb3VyY2UgdG8gJGFjX2ZpbGUiICIkTElORU5PIiA1CiAgIGZpCiAgOzsKICAgOkMpICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGV4ZWN1dGluZyAkYWNfZmlsZSBjb21tYW5kcyIgPiY1CkBAIC0xNDE1Miw2ICsxNjQ2NCwxNTAgQEAKIAogCiAgIGNhc2UgJGFjX2ZpbGUkYWNfbW9kZSBpbgorICAgICJidWlsZGlyIjpDKSAgIGFjX3RvcF9zcmNkaXI9IiRheF9lbmFibGVfYnVpbGRkaXJfc3JjZGlyIgorICBpZiB0ZXN0ICIuJGF4X2VuYWJsZV9idWlsZGRpciIgPSAiLi4iIDsgdGhlbgorICAgIGlmIHRlc3QgLWYgIiR0b3Bfc3JjZGlyL01ha2VmaWxlIiA7IHRoZW4KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogc2tpcHBpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSAtIGxlZnQgdW50b3VjaGVkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IHNraXBwaW5nIHRvcF9zcmNkaXIvTWFrZWZpbGUgLSBsZWZ0IHVudG91Y2hlZCIgPiY2O30KKyAgICBlbHNlCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHNraXBwaW5nIHRvcF9zcmNkaXIvTWFrZWZpbGUgLSBub3QgY3JlYXRlZCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBza2lwcGluZyB0b3Bfc3JjZGlyL01ha2VmaWxlIC0gbm90IGNyZWF0ZWQiID4mNjt9CisgICAgZmkKKyAgZWxzZQorICAgIGlmIHRlc3QgLWYgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIiA7IHRoZW4KKyAgICAgIGE9YGdyZXAgIl5WRVJTSU9OICIgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlImAgOyBiPWBncmVwICJeVkVSU0lPTiAiIE1ha2VmaWxlYAorICAgICAgdGVzdCAiJGEiICE9ICIkYiIgJiYgcm0gIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIgorICAgIGZpCisgICAgaWYgdGVzdCAtZiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiIDsgdGhlbgorCWVjaG8gIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIDogJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUuaW4iID4gJHRtcC9jb25mdGVtcC5taworCWVjaG8gIglAIGVjaG8gJ1JFTU9WRUQsLCwnID5cJEAiID4+ICR0bXAvY29uZnRlbXAubWsKKyAgICAgIGV2YWwgIiR7TUFLRS1tYWtlfSAtZiAkdG1wL2NvbmZ0ZW1wLm1rIDI+L2Rldi9udWxsID4vZGV2L251bGwiCisgICAgICBpZiBncmVwICdeUkVNT1ZFRCwsLCcgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIiA+L2Rldi9udWxsCisgICAgICB0aGVuIHJtICRhY190b3Bfc3JjZGlyL01ha2VmaWxlIDsgZmkKKyAgICAgIGNwICR0bXAvY29uZnRlbXAubWsgJGFjX3RvcF9zcmNkaXIvbWFrZWZpbGVzLm1rfiAgICAgICMjIERFQlVHR0lORworICAgIGZpCisgICAgaWYgdGVzdCAhIC1mICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIgOyB0aGVuCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0ZSB0b3Bfc3JjZGlyL01ha2VmaWxlIGd1ZXNzZWQgZnJvbSBsb2NhbCBNYWtlZmlsZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBjcmVhdGUgdG9wX3NyY2Rpci9NYWtlZmlsZSBndWVzc2VkIGZyb20gbG9jYWwgTWFrZWZpbGUiID4mNjt9CisgICAgICB4PSdgJyA7IGNhdCA+JHRtcC9jb25mdGVtcC5zZWQgPDxfRU9GCisvXlwkL24KK3gKKy9eXCQvYlMKK3gKKy9cXFxcXCQve0g7ZDt9Cit7SDtzLy4qLy87eDt9CitiTQorOlMKK3gKKy9cXFxcXCQve2g7ZDt9Cit7aDtzLy4qLy87eDt9Cis6TQorcy9cXChcXG5cXCkJL1xcMSAvZworL14JL2QKKy9eWwkgXSpbXFwjXS9kCisvXlZQQVRIICo9L2QKK3MvXnNyY2RpciAqPS4qL3NyY2RpciA9IC4vCitzL150b3Bfc3JjZGlyICo9LiovdG9wX3NyY2RpciA9IC4vCisvWzo9XS8hZAorL15cXC4vZAorLyA9IC9iCisvIC49IC9iCisvOi8hYgorcy86LiovOi8KK3MvIC8gIC9nCitzLyBcXChbYS16XVthLXotXSpbYS16QS1aMC05XVxcKVxcKFsgOl1cXCkvIFxcMSBcXDEtYWxsXFwyL2cKK3MvXlxcKFthLXpdW2Etei1dKlthLXpBLVowLTldXFwpXFwoWyA6XVxcKS9cXDEgXFwxLWFsbFxcMi8KK3MvICAvIC9nCisvXmFsbCBhbGwtYWxsWyA6XS9pXFwKK2FsbC1jb25maWd1cmVkIDogYWxsLWFsbAorcy8gW2EtekEtWjAtOS1dKi1hbGwgW2EtekEtWjAtOS1dKi1hbGwtYWxsLy9nCisvLWFsbC1hbGwvZAorYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoICRheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIFwkXCRIT1NUICIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgdXNlPSR4IGJhc2VuYW1lICJcJFxAIiAtYWxsICR4OyBuPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJG4gKiBcJFxAIjsgaWYgdGVzdCAiXCRcJG4iIC1lcSAiMCIgOyB0aGVuIDogXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIy4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggOyBmaSBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkQlVJTEQiID0gIi4iICYmIEJVSUxEPSIuIiBcXFxcXFwKKwk7IHRlc3QgIlwkXCR1c2UiID0gIlwkXEAiICYmIEJVSUxEPSR4IGVjaG8gIlwkXCRCVUlMRCIgfCB0YWlsIC0xICR4IFxcXFxcXAorCTsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IChjZCAiXCRcJGkiICYmIHRlc3QgISAtZiBjb25maWd1cmUgJiYgXCQoTUFLRSkgXCRcJHVzZSkgfHwgZXhpdDsgZG9uZQorL2Rpc3QtYWxsICo6L2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAkYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpci9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZvdW5kPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJGZvdW5kIFwkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLnRhci4qIiBcXFxcXFwKKwk7IGlmIHRlc3QgIlwkXCRmb3VuZCIgLWVxICIwIiA7IHRoZW4gOiBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIC4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmaSA7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBmb3IgZiBpbiBcJFwkaS9cJChQQUNLQUdFKS1cJChWRVJTSU9OKS50YXIuKiBcXFxcXFwKKwk7IGRvIHRlc3QgLWYgIlwkXCRmIiAmJiBtdiAiXCRcJGYiIFwkKFBVQikuIDsgZG9uZSA7IGJyZWFrIDsgZG9uZQorL2Rpc3QtW2EtekEtWjAtOV0qLWFsbCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggLi9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZvdW5kPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJGZvdW5kIFwkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLioiIFxcXFxcXAorCTsgaWYgdGVzdCAiXCRcJGZvdW5kIiAtZXEgIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8dGFpbCAtMXwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZpIDsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGZvciBmIGluIFwkXCRpL1wkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLiogXFxcXFxcCisJOyBkbyB0ZXN0IC1mICJcJFwkZiIgJiYgbXYgIlwkXCRmIiBcJChQVUIpLiA7IGRvbmUgOyBicmVhayA7IGRvbmUKKy9kaXN0Y2xlYW4tYWxsICo6L2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAkYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpci9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyAuKnwiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IHVzZT0keCBiYXNlbmFtZSAiXCRcQCIgLWFsbCAkeDsgbj0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRuICogXCRcQCAoYWxsIGxvY2FsIGJ1aWxkcykiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRCVUlMRCIgPSAiLiIgJiYgQlVJTEQ9Ii4iIFxcXFxcXAorCTsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gIiMgcm0gLXIgXCRcJGkiOyBkb25lIDsgZWNobyAiIyAoc2xlZXAgMykiIDsgc2xlZXAgMyBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJcJFwkaSIgfCBncmVwICJeLyIgPiAvZGV2L251bGwgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJcJFwkaSIgfCBncmVwICJeLi4vIiA+IC9kZXYvbnVsbCAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gInJtIC1yIFwkXCRpIjsgKHJtIC1yICJcJFwkaSIpIDsgZG9uZSA7IHJtIE1ha2VmaWxlCitfRU9GCisgICAgICBjcCAiJHRtcC9jb25mdGVtcC5zZWQiICIkYWNfdG9wX3NyY2Rpci9tYWtlZmlsZS5zZWR+IiAgICAgICAgICAgICMjIERFQlVHR0lORworICAgICAgJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQgLWYgJHRtcC9jb25mdGVtcC5zZWQgTWFrZWZpbGUgPiRhY190b3Bfc3JjZGlyL01ha2VmaWxlCisgICAgICBpZiB0ZXN0IC1mICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZS5tayIgOyB0aGVuCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXh0ZW5kIHRvcF9zcmNkaXIvTWFrZWZpbGUgd2l0aCB0b3Bfc3JjZGlyL01ha2VmaWxlLm1rIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGV4dGVuZCB0b3Bfc3JjZGlyL01ha2VmaWxlIHdpdGggdG9wX3NyY2Rpci9NYWtlZmlsZS5tayIgPiY2O30KKyAgICAgICAgY2F0ICRhY190b3Bfc3JjZGlyL01ha2VmaWxlLm1rID4+JGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUKKyAgICAgIGZpIDsgeHh4eD0iIyMjIyIKKyAgICAgIGVjaG8gIiR4eHh4IENPTkZJR1VSQVRJT05TIEZPUiBUT1BMRVZFTCBNQUtFRklMRTogIiA+PiRhY190b3Bfc3JjZGlyL01ha2VmaWxlCisgICAgICAjIHNhbml0eSBjaGVjaworICAgICAgaWYgZ3JlcCAnXjsgZWNobyAiTUFLRSAnICRhY190b3Bfc3JjZGlyL01ha2VmaWxlID4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogYnVnZ3kgc2VkIGZvdW5kIC0gaXQgZGVsZXRlcyB0YWIgaW4gXCJhXCIgdGV4dCBwYXJ0cyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBidWdneSBzZWQgZm91bmQgLSBpdCBkZWxldGVzIHRhYiBpbiBcImFcIiB0ZXh0IHBhcnRzIiA+JjY7fQorICAgICAgICAkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCAtZSAnL15AIEhPU1Q9L3MvXi8JLycgLWUgJy9eOyAvcy9eLwkvJyAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSBcCisgICAgICAgICAgPiRhY190b3Bfc3JjZGlyL01ha2VmaWxlfgorICAgICAgICAodGVzdCAtcyAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZX4gJiYgbXYgJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGV+ICRhY190b3Bfc3JjZGlyL01ha2VmaWxlKSAyPi9kZXYvbnVsbAorICAgICAgZmkKKyAgICBlbHNlCisgICAgICB4eHh4PSJcXCNcXCNcXCNcXCMiCisgICAgICAjIGVjaG8gIi9eJHh4eHggKiRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCAvZCIgPiR0bXAvY29uZnRlbXAuc2VkCisgICAgICBlY2hvICJzIV4keHh4eCBbXnxdKiB8ICokYXhfZW5hYmxlX2J1aWxkZGlyICpcJCEkeHh4eCAuLi4uLi4gJGF4X2VuYWJsZV9idWlsZGRpciEiID4kdG1wL2NvbmZ0ZW1wLnNlZAorICAgICAgJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQgLWYgIiR0bXAvY29uZnRlbXAuc2VkIiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiID4kdG1wL21rZmlsZS50bXAKKyAgICAgICAgY3AgIiR0bXAvY29uZnRlbXAuc2VkIiAiJGFjX3RvcF9zcmNkaXIvbWFrZWZpbGVzLnNlZH4iICAgICAgICAgIyMgREVCVUdHSU5HCisgICAgICAgIGNwICIkdG1wL21rZmlsZS50bXAiICAgIiRhY190b3Bfc3JjZGlyL21ha2VmaWxlcy5vdXR+IiAgICAgICAgICMjIERFQlVHR0lORworICAgICAgaWYgY21wIC1zICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIgIiR0bXAvbWtmaWxlLnRtcCIgMj4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfToga2VlcGluZyB0b3Bfc3JjZGlyL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmUiID4mNQorJGFzX2VjaG8gIiRhc19tZToga2VlcGluZyB0b3Bfc3JjZGlyL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmUiID4mNjt9CisgICAgICAgIHJtICIkdG1wL21rZmlsZS50bXAiCisgICAgICBlbHNlCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmV1c2luZyB0b3Bfc3JjZGlyL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogcmV1c2luZyB0b3Bfc3JjZGlyL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmUiID4mNjt9CisgICAgICAgIG12ICIkdG1wL21rZmlsZS50bXAiICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIKKyAgICAgIGZpCisgICAgZmkKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGJ1aWxkIGluICRheF9lbmFibGVfYnVpbGRkaXIgKEhPU1Q9JGF4X2VuYWJsZV9idWlsZGRpcl9ob3N0KSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBidWlsZCBpbiAkYXhfZW5hYmxlX2J1aWxkZGlyIChIT1NUPSRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCkiID4mNjt9CisgICAgeHh4eD0iIyMjIyIKKyAgICBlY2hvICIkeHh4eCIgIiRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCIgInwkYXhfZW5hYmxlX2J1aWxkZGlyIiA+PiRhY190b3Bfc3JjZGlyL01ha2VmaWxlCisgIGZpCisgOzsKICAgICAiZGVwZmlsZXMiOkMpIHRlc3QgeCIkQU1ERVBfVFJVRSIgIT0geCIiIHx8IHsKICAgIyBBdXRvY29uZiAyLjYyIHF1b3RlcyAtLWZpbGUgYXJndW1lbnRzIGZvciBldmFsLCBidXQgbm90IHdoZW4gZmlsZXMKICAgIyBhcmUgbGlzdGVkIHdpdGhvdXQgLS1maWxlLiAgTGV0J3MgcGxheSBzYWZlIGFuZCBvbmx5IGVuYWJsZSB0aGUgZXZhbApAQCAtMTQyNjgsNyArMTY3MjQsOCBAQAogIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCiAjCiAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyAgICAgICAgICAgICAgICAgRm91bmRhdGlvbiwgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICMKICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KQEAgLTE0MzE2LDYgKzE2NzczLDE1IEBACiAjIFdoZXRoZXIgb3Igbm90IHRvIG9wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbi4KIGZhc3RfaW5zdGFsbD0kZW5hYmxlX2Zhc3RfaW5zdGFsbAogCisjIFNoZWxsIHRvIHVzZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHMuCitTSEVMTD0kbHRfU0hFTEwKKworIyBBbiBlY2hvIHByb2dyYW0gdGhhdCBwcm90ZWN0cyBiYWNrc2xhc2hlcy4KK0VDSE89JGx0X0VDSE8KKworIyBUaGUgUEFUSCBzZXBhcmF0b3IgZm9yIHRoZSBidWlsZCBzeXN0ZW0uCitQQVRIX1NFUEFSQVRPUj0kbHRfUEFUSF9TRVBBUkFUT1IKKwogIyBUaGUgaG9zdCBzeXN0ZW0uCiBob3N0X2FsaWFzPSRob3N0X2FsaWFzCiBob3N0PSRob3N0CkBAIC0xNDM2NSw5ICsxNjgzMSwxMSBAQAogIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgogTkwyU1A9JGx0X2x0X05MMlNQCiAKLSMgSG93IHRvIGNyZWF0ZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4KLXJlbG9hZF9mbGFnPSRsdF9yZWxvYWRfZmxhZwotcmVsb2FkX2NtZHM9JGx0X3JlbG9hZF9jbWRzCisjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCit0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisKKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCit0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCiAKICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCiBPQkpEVU1QPSRsdF9PQkpEVU1QCkBAIC0xNDM3NSwxMyArMTY4NDMsMzAgQEAKICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCiBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKIAotIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAogCisjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKworIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCit3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorCisjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorRExMVE9PTD0kbHRfRExMVE9PTAorCisjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCitzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKwogIyBUaGUgYXJjaGl2ZXIuCiBBUj0kbHRfQVIKKworIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwogCisjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisKICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCiBTVFJJUD0kbHRfU1RSSVAKIApAQCAtMTQzOTAsNiArMTY4NzUsOSBAQAogb2xkX3Bvc3RpbnN0YWxsX2NtZHM9JGx0X29sZF9wb3N0aW5zdGFsbF9jbWRzCiBvbGRfcG9zdHVuaW5zdGFsbF9jbWRzPSRsdF9vbGRfcG9zdHVuaW5zdGFsbF9jbWRzCiAKKyMgV2hldGhlciB0byB1c2UgYSBsb2NrIGZvciBvbGQgYXJjaGl2ZSBleHRyYWN0aW9uLgorbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPSRsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb24KKwogIyBBIEMgY29tcGlsZXIuCiBMVENDPSRsdF9DQwogCkBAIC0xNDQwOCwyMSArMTY4OTYsMjQgQEAKICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCiBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKIAorIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCitubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKworIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKwogIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCiBvYmpkaXI9JG9iamRpcgogCi0jIFNoZWxsIHRvIHVzZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHMuCi1TSEVMTD0kbHRfU0hFTEwKLQotIyBBbiBlY2hvIHByb2dyYW0gdGhhdCBkb2VzIG5vdCBpbnRlcnByZXQgYmFja3NsYXNoZXMuCi1FQ0hPPSRsdF9FQ0hPCi0KICMgVXNlZCB0byBleGFtaW5lIGxpYnJhcmllcyB3aGVuIGZpbGVfbWFnaWNfY21kIGJlZ2lucyB3aXRoICJmaWxlIi4KIE1BR0lDX0NNRD0kTUFHSUNfQ01ECiAKICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CiBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCiAKKyMgTWFuaWZlc3QgdG9vbC4KK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKwogIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgogRFNZTVVUSUw9JGx0X0RTWU1VVElMCiAKQEAgLTE0NDc5LDYgKzE2OTcwLDkgQEAKICMgVGhlIGNvZGVkIG5hbWUgb2YgdGhlIGxpYnJhcnksIGlmIGRpZmZlcmVudCBmcm9tIHRoZSByZWFsIG5hbWUuCiBzb25hbWVfc3BlYz0kbHRfc29uYW1lX3NwZWMKIAorIyBQZXJtaXNzaW9uIG1vZGUgb3ZlcnJpZGUgZm9yIGluc3RhbGxhdGlvbiBvZiBzaGFyZWQgbGlicmFyaWVzLgoraW5zdGFsbF9vdmVycmlkZV9tb2RlPSRsdF9pbnN0YWxsX292ZXJyaWRlX21vZGUKKwogIyBDb21tYW5kIHRvIHVzZSBhZnRlciBpbnN0YWxsYXRpb24gb2YgYSBzaGFyZWQgYXJjaGl2ZS4KIHBvc3RpbnN0YWxsX2NtZHM9JGx0X3Bvc3RpbnN0YWxsX2NtZHMKIApAQCAtMTQ1MTgsNiArMTcwMTIsMTAgQEAKICMgVGhlIGxpbmtlciB1c2VkIHRvIGJ1aWxkIGxpYnJhcmllcy4KIExEPSRsdF9MRAogCisjIEhvdyB0byBjcmVhdGUgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuCityZWxvYWRfZmxhZz0kbHRfcmVsb2FkX2ZsYWcKK3JlbG9hZF9jbWRzPSRsdF9yZWxvYWRfY21kcworCiAjIENvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYW4gb2xkLXN0eWxlIGFyY2hpdmUuCiBvbGRfYXJjaGl2ZV9jbWRzPSRsdF9vbGRfYXJjaGl2ZV9jbWRzCiAKQEAgLTE0NTMwLDEyICsxNzAyOCwxMiBAQAogIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgogbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwogCi0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotCiAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwogCisjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCit3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorCiAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCiBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwogCkBAIC0xNDU4NSwxMCArMTcwODMsNiBAQAogIyBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0CiBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSRsdF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjCiAKLSMgSWYgbGQgaXMgdXNlZCB3aGVuIGxpbmtpbmcsIGZsYWcgdG8gaGFyZGNvZGUgXCRsaWJkaXIgaW50byBhIGJpbmFyeQotIyBkdXJpbmcgbGlua2luZy4gIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgXCRsaWJkaXIgZG9lcyBub3QgZXhpc3QuCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSRsdF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkCi0KICMgV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlICItcnBhdGgiIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JGx0X2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IKIApAQCAtMTQ2MjIsOSArMTcxMTYsNiBAQAogIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCiAKLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLQogIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCiBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwogCkBAIC0xNDY0MCw2ICsxNzEzMSw5IEBACiAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKIAorIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworCiAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwogCkBAIC0xNDY3MiwyMTIgKzE3MTY2LDE2OSBAQAogICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQogCi0gIGNhc2UgJHhzaV9zaGVsbCBpbgotICB5ZXMpCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLWZ1bmNfZGlybmFtZSAoKQotewotICBjYXNlICR7MX0gaW4KLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSAgZXNhYwotfQotCi0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotZnVuY19iYXNlbmFtZSAoKQotewotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi19Ci0KLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLSMgY2FsbDoKLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gIGVzYWMKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotfQotCi0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLWZ1bmNfc3RyaXBuYW1lICgpCi17Ci0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotfQotCi0jIGZ1bmNfb3B0X3NwbGl0Ci1mdW5jX29wdF9zcGxpdCAoKQotewotICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLX0KLQotIyBmdW5jX2xvMm8gb2JqZWN0Ci1mdW5jX2xvMm8gKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLSAgZXNhYwotfQotCi0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotZnVuY194Zm9ybSAoKQotewotICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi19Ci0KLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLWZ1bmNfYXJpdGggKCkKLXsKLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi19Ci0KLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQotewotICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLX0KLQotX0xUX0VPRgotICAgIDs7Ci0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCi0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSAgZWxzZQotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSAgZmkKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKLX0KKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorZnVuY19kaXJuYW1lICgpXAore1wKK1wgICAgY2FzZSAkezF9IGluXAorXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCitcICAgIGVzYWNcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CiAKIAotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICBjYXNlICR7Mn0gaW4KLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiWCR7M30iIFwKLSAgICAgICAgICAgfCAkWHNlZCAtZSAicyVeJHsxfSUlIiAtZSAicyVcXFxcJHsyfVwkJSUiYDs7Ci0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezN9IiBcCi0gICAgICAgICAgIHwgJFhzZWQgLWUgInMlXiR7MX0lJSIgLWUgInMlJHsyfVwkJSUiYDs7Ci0gIGVzYWMKLX0KLQotIyBzZWQgc2NyaXB0czoKLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0KLSMgZnVuY19vcHRfc3BsaXQKLWZ1bmNfb3B0X3NwbGl0ICgpCi17Ci0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfb3B0ImAKLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRteV9zZWRfbG9uZ19hcmciYAotfQotCi0jIGZ1bmNfbG8ybyBvYmplY3QKLWZ1bmNfbG8ybyAoKQotewotICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRsbzJvImAKLX0KLQotIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLWZ1bmNfeGZvcm0gKCkKLXsKLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAncy9cLlteLl0qJC8ubG8vJ2AKLX0KLQotIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotZnVuY19hcml0aCAoKQotewotICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotfQotCi0jIGZ1bmNfbGVuIHN0cmluZwotIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotZnVuY19sZW4gKCkKLXsKLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotfQotCi1fTFRfRU9GCi1lc2FjCi0KLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotICB5ZXMpCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotZnVuY19hcHBlbmQgKCkKLXsKLSAgZXZhbCAiJDErPVwkMiIKLX0KLV9MVF9FT0YKLSAgICA7OwotICAqKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLWZ1bmNfYXBwZW5kICgpCi17Ci0gIGV2YWwgIiQxPVwkJDFcJDIiCi19Ci0KLV9MVF9FT0YKLSAgICA7OwotICBlc2FjCisgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKK2Z1bmNfYmFzZW5hbWUgKClcCit7XAorXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKIAogCi0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCitmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAore1wKK1wgICAgY2FzZSAkezF9IGluXAorXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCitcICAgIGVzYWNcCitcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgogCi0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKworICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKK2Z1bmNfc3RyaXBuYW1lICgpXAore1wKK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCitcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorZnVuY19zcGxpdF9sb25nX29wdCAoKVwKK3tcCitcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAore1wKK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCitcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCitmdW5jX2xvMm8gKClcCit7XAorXCAgICBjYXNlICR7MX0gaW5cCitcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCitcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorXCAgICBlc2FjXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorZnVuY194Zm9ybSAoKVwKK3tcCisgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCitmdW5jX2FyaXRoICgpXAore1wKKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCitmdW5jX2xlbiAoKVwKK3tcCisgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKK2ZpCisKK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCitmdW5jX2FwcGVuZCAoKVwKK3tcCisgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKK3tcCitcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorZWxzZQorICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKK2ZpCisKK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorZmkKKworCisgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKICAgY2htb2QgK3ggIiRvZmlsZSIKIApAQCAtMTQ4OTcsNyArMTczNDgsNyBAQAogYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKIAogdGVzdCAkYWNfd3JpdGVfZmFpbCA9IDAgfHwKLSAgYXNfZm5fZXJyb3IgIndyaXRlIGZhaWx1cmUgY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJ3cml0ZSBmYWlsdXJlIGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQogCiAKICMgY29uZmlndXJlIGlzIHdyaXRpbmcgdG8gY29uZmlnLmxvZywgYW5kIHRoZW4gY2FsbHMgY29uZmlnLnN0YXR1cy4KQEAgLTE0OTE4LDcgKzE3MzY5LDcgQEAKICAgZXhlYyA1Pj5jb25maWcubG9nCiAgICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJvbSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCiAgICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFpbCBpZiB0aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLgotICAkYWNfY3Nfc3VjY2VzcyB8fCBhc19mbl9leGl0ICQ/CisgICRhY19jc19zdWNjZXNzIHx8IGFzX2ZuX2V4aXQgMQogZmkKIGlmIHRlc3QgLW4gIiRhY191bnJlY29nbml6ZWRfb3B0cyIgJiYgdGVzdCAiJGVuYWJsZV9vcHRpb25fY2hlY2tpbmciICE9IG5vOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiY1CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZS5hYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlLmFjCmluZGV4IDg3YzYzZTEuLmQ4NjUyYWEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlLmFjCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlLmFjCkBAIC0zLDkgKzMsOSBAQAogIyBmaWxlIGZyb20gbGliZmZpIC0gc2xpZ2h0bHkgcGF0Y2hlZCBmb3IgY3R5cGVzCiAjCiAKLUFDX1BSRVJFUSgyLjYzKQorQUNfUFJFUkVRKDIuNjgpCiAKLUFDX0lOSVQoW2xpYmZmaV0sIFszLjAuMTByYzBdLCBbaHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbF0pCitBQ19JTklUKFtsaWJmZmldLCBbMy4wLjExXSwgW2h0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3Vlc10pCiBBQ19DT05GSUdfSEVBREVSUyhbZmZpY29uZmlnLmhdKQogCiBBQ19DQU5PTklDQUxfU1lTVEVNCkBAIC0xMywxNiArMTMsMjIgQEAKIAogLiAke3NyY2Rpcn0vY29uZmlndXJlLmhvc3QKIAorQVhfRU5BQkxFX0JVSUxERElSCisKIEFNX0lOSVRfQVVUT01BS0UKIAogIyBUaGUgc2FtZSBhcyBpbiBib2VobS1nYyBhbmQgbGlic3RkYysrLiBIYXZlIHRvIGJvcnJvdyBpdCBmcm9tIHRoZXJlLgogIyBXZSBtdXN0IGZvcmNlIENDIHRvIC9ub3QvIGJlIHByZWNpb3VzIHZhcmlhYmxlczsgb3RoZXJ3aXNlCiAjIHRoZSB3cm9uZywgbm9uLW11bHRpbGliLWFkanVzdGVkIHZhbHVlIHdpbGwgYmUgdXNlZCBpbiBtdWx0aWxpYnMuCiAjIEFzIGEgc2lkZSBlZmZlY3QsIHdlIGhhdmUgdG8gc3Vic3QgQ0ZMQUdTIG91cnNlbHZlcy4KKyMgQWxzbyBzYXZlIGFuZCByZXN0b3JlIENGTEFHUywgc2luY2UgQUNfUFJPR19DQyB3aWxsIGNvbWUgdXAgd2l0aAorIyBkZWZhdWx0cyBvZiBpdHMgb3duIGlmIG5vbmUgYXJlIHByb3ZpZGVkLgogCiBtNF9yZW5hbWUoW19BQ19BUkdfVkFSX1BSRUNJT1VTXSxbcmVhbF9QUkVDSU9VU10pCiBtNF9kZWZpbmUoW19BQ19BUkdfVkFSX1BSRUNJT1VTXSxbXSkKK3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIEFDX1BST0dfQ0MKK0NGTEFHUz0kc2F2ZV9DRkxBR1MKIG00X3VuZGVmaW5lKFtfQUNfQVJHX1ZBUl9QUkVDSU9VU10pCiBtNF9yZW5hbWUoW3JlYWxfUFJFQ0lPVVNdLFtfQUNfQVJHX1ZBUl9QUkVDSU9VU10pCiAKQEAgLTMzLDYgKzM5LDEyIEBACiBBQ19QUk9HX0xJQlRPT0wKIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKIAorQVhfQ0NfTUFYT1BUCitBWF9DRkxBR1NfV0FSTl9BTEwKK2lmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorICBDRkxBR1M9IiRDRkxBR1MgLWZleGNlcHRpb25zIgorZmkKKwogQU1fTUFJTlRBSU5FUl9NT0RFCiAKIEFDX0NIRUNLX0hFQURFUlMoc3lzL21tYW4uaCkKQEAgLTQ2LDcgKzU4LDcgQEAKIGNhc2UgIiRob3N0IiBpbgogICBhbHBoYSotKi0qKQogCVRBUkdFVD1BTFBIQTsgVEFSR0VURElSPWFscGhhOwotCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlLCBjaGFuZ2FibGUgdmlhIGNvbW1hbmQtbGluZSBzd2l0Y2guCisJIyBTdXBwb3J0IDEyOC1iaXQgbG9uZyBkb3VibGUsIGNoYW5nZWFibGUgdmlhIGNvbW1hbmQtbGluZSBzd2l0Y2guCiAJSEFWRV9MT05HX0RPVUJMRT0nZGVmaW5lZChfX0xPTkdfRE9VQkxFXzEyOF9fKScKIAk7OwogCkBAIC03NCw3ICs4Niw3IEBACiAJVEFSR0VUPUZSVjsgVEFSR0VURElSPWZydgogCTs7CiAKLSAgaHBwYSotKi1saW51eCogfCBwYXJpc2MqLSotbGludXgqKQorICBocHBhKi0qLWxpbnV4KiB8IHBhcmlzYyotKi1saW51eCogfCBocHBhKi0qLW9wZW5ic2QqKQogCVRBUkdFVD1QQV9MSU5VWDsgVEFSR0VURElSPXBhCiAJOzsKICAgaHBwYSo2NC0qLWhwdXgqKQpAQCAtODcsMTAgKzk5LDE3IEBACiAgIGk/ODYtKi1mcmVlYnNkKiB8IGk/ODYtKi1vcGVuYnNkKikKIAlUQVJHRVQ9WDg2X0ZSRUVCU0Q7IFRBUkdFVERJUj14ODYKIAk7OwotICBpPzg2LXdpbjMyKiB8IGk/ODYtKi1jeWd3aW4qIHwgaT84Ni0qLW1pbmd3KikKKyAgaT84Ni13aW4zMiogfCBpPzg2LSotY3lnd2luKiB8IGk/ODYtKi1taW5ndyogfCBpPzg2LSotb3MyKiB8IGk/ODYtKi1pbnRlcml4KikKIAlUQVJHRVQ9WDg2X1dJTjMyOyBUQVJHRVRESVI9eDg2Ci0JIyBBbGwgbWluZ3cvY3lnd2luL3dpbjMyIGJ1aWxkcyByZXF1aXJlIHRoaXMgZm9yIHNoYXJlZGxpYgotCUFNX0xUTERGTEFHUz0iLW5vLXVuZGVmaW5lZCIKKwkjIEFsbCBtaW5ndy9jeWd3aW4vd2luMzIgYnVpbGRzIHJlcXVpcmUgLW5vLXVuZGVmaW5lZCBmb3Igc2hhcmVkbGliLgorCSMgV2UgbXVzdCBhbHNvIGNoZWNrIHdpdGhfY3Jvc3NfaG9zdCB0byBkZWNpZGUgaWYgdGhpcyBpcyBhIG5hdGl2ZQorCSMgb3IgY3Jvc3MtYnVpbGQgYW5kIHNlbGVjdCB3aGVyZSB0byBpbnN0YWxsIGRsbHMgYXBwcm9wcmlhdGVseS4KKwlpZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgorCSAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQodG9vbGV4ZWNsaWJkaXIpIic7CisJZWxzZQorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQoYmluZGlyKSInOworCWZpCiAJOzsKICAgaT84Ni0qLWRhcndpbiopCiAJVEFSR0VUPVg4Nl9EQVJXSU47IFRBUkdFVERJUj14ODYKQEAgLTEwMiw3ICsxMjEsNyBAQAogICAgICAgICBUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2CiAgICAgICAgIDs7CiAgIGk/ODYtKi0qKQotCVRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKKwlUQVJHRVQ9WDg2XzY0OyBUQVJHRVRESVI9eDg2CiAJOzsKIAogICBpYTY0Ki0qLSopCkBAIC0xMTcsMzAgKzEzNiw0MCBAQAogCVRBUkdFVD1NNjhLOyBUQVJHRVRESVI9bTY4awogCTs7CiAKLSAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiopCisgIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qIHwgbWlwcyotKi1ydGVtcyopCiAJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKIAk7OwotICBtaXBzKi0qLWxpbnV4KikKKyAgbWlwcyotKi1saW51eCogfCBtaXBzKi0qLW9wZW5ic2QqKQogCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlIGZvciBOZXdBQkkuCiAJSEFWRV9MT05HX0RPVUJMRT0nZGVmaW5lZChfX21pcHM2NCknCiAJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKIAk7OwogCisgIG1veGllLSotKikKKyAgICAgICAgVEFSR0VUPU1PWElFOyBUQVJHRVRESVI9bW94aWUKKwk7OworCiAgIHBvd2VycGMqLSotbGludXgqIHwgcG93ZXJwYy0qLXN5c3YqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CisgIHBvd2VycGMtKi1hbWlnYW9zKikKKwlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKKwk7OwogICBwb3dlcnBjLSotYmVvcyopCiAJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKLSAgcG93ZXJwYy0qLWRhcndpbiopCisgIHBvd2VycGMtKi1kYXJ3aW4qIHwgcG93ZXJwYzY0LSotZGFyd2luKikKIAlUQVJHRVQ9UE9XRVJQQ19EQVJXSU47IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKICAgcG93ZXJwYy0qLWFpeCogfCByczYwMDAtKi1haXgqKQogCVRBUkdFVD1QT1dFUlBDX0FJWDsgVEFSR0VURElSPXBvd2VycGMKIAk7OwotICBwb3dlcnBjLSotZnJlZWJzZCopCisgIHBvd2VycGMtKi1mcmVlYnNkKiB8IHBvd2VycGMtKi1vcGVuYnNkKikKIAlUQVJHRVQ9UE9XRVJQQ19GUkVFQlNEOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CisgIHBvd2VycGM2NC0qLWZyZWVic2QqKQorCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYworCTs7CiAgIHBvd2VycGMqLSotcnRlbXMqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CkBAIC0xNjYsNiArMTk1LDE1IEBACiAKICAgeDg2XzY0LSotY3lnd2luKiB8IHg4Nl82NC0qLW1pbmd3KikKIAlUQVJHRVQ9WDg2X1dJTjY0OyBUQVJHRVRESVI9eDg2CisJIyBBbGwgbWluZ3cvY3lnd2luL3dpbjMyIGJ1aWxkcyByZXF1aXJlIC1uby11bmRlZmluZWQgZm9yIHNoYXJlZGxpYi4KKwkjIFdlIG11c3QgYWxzbyBjaGVjayB3aXRoX2Nyb3NzX2hvc3QgdG8gZGVjaWRlIGlmIHRoaXMgaXMgYSBuYXRpdmUKKwkjIG9yIGNyb3NzLWJ1aWxkIGFuZCBzZWxlY3Qgd2hlcmUgdG8gaW5zdGFsbCBkbGxzIGFwcHJvcHJpYXRlbHkuCisJaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKKwkgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKHRvb2xleGVjbGliZGlyKSInOworCWVsc2UKKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKGJpbmRpcikiJzsKKwlmaQogCTs7CiAKICAgeDg2XzY0LSotKikKQEAgLTE5MSw2ICsyMjksNyBAQAogQU1fQ09ORElUSU9OQUwoSUE2NCwgdGVzdCB4JFRBUkdFVCA9IHhJQTY0KQogQU1fQ09ORElUSU9OQUwoTTMyUiwgdGVzdCB4JFRBUkdFVCA9IHhNMzJSKQogQU1fQ09ORElUSU9OQUwoTTY4SywgdGVzdCB4JFRBUkdFVCA9IHhNNjhLKQorQU1fQ09ORElUSU9OQUwoTU9YSUUsIHRlc3QgeCRUQVJHRVQgPSB4TU9YSUUpCiBBTV9DT05ESVRJT05BTChQT1dFUlBDLCB0ZXN0IHgkVEFSR0VUID0geFBPV0VSUEMpCiBBTV9DT05ESVRJT05BTChQT1dFUlBDX0FJWCwgdGVzdCB4JFRBUkdFVCA9IHhQT1dFUlBDX0FJWCkKIEFNX0NPTkRJVElPTkFMKFBPV0VSUENfREFSV0lOLCB0ZXN0IHgkVEFSR0VUID0geFBPV0VSUENfREFSV0lOKQpAQCAtMjI4LDE3ICsyNjcsNyBAQAogCiBBQ19DX0JJR0VORElBTgogCi1BQ19DQUNIRV9DSEVDSyhbYXNzZW1ibGVyIC5jZmkgcHNldWRvLW9wIHN1cHBvcnRdLAotICAgIGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wLCBbCi0gICAgbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3A9dW5rbm93bgotICAgIEFDX1RSWV9DT01QSUxFKFthc20gKCIuY2ZpX3N0YXJ0cHJvY1xuXHQuY2ZpX2VuZHByb2MiKTtdLCwKLQkJICAgW2xpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wPXllc10sCi0JCSAgIFtsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcD1ub10pCi1dKQotaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCi0gICAgQUNfREVGSU5FKEhBVkVfQVNfQ0ZJX1BTRVVET19PUCwgMSwKLQkgICAgICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5jZmlfKiBkaXJlY3RpdmVzLl0pCi1maQorR0NDX0FTX0NGSV9QU0VVRE9fT1AKIAogaWYgdGVzdCB4JFRBUkdFVCA9IHhTUEFSQzsgdGhlbgogICAgIEFDX0NBQ0hFX0NIRUNLKFthc3NlbWJsZXIgYW5kIGxpbmtlciBzdXBwb3J0IHVuYWxpZ25lZCBwYyByZWxhdGVkIHJlbG9jc10sCkBAIC0yNzYsNyArMzA1LDcgQEAKIAlsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsLCBbCiAJbGliZmZpX2N2X2FzX3g4Nl9wY3JlbD15ZXMKIAllY2hvICcudGV4dDsgZm9vOiBub3A7IC5kYXRhOyAubG9uZyBmb28tLjsgLnRleHQnID4gY29uZnRlc3QucwotCWlmICRDQyAkQ0ZMQUdTIC1jIGNvbmZ0ZXN0LnMgMj4mMSB8IGdyZXAgLWkgd2FybmluZyA+IC9kZXYvbnVsbDsgdGhlbgorCWlmICRDQyAkQ0ZMQUdTIC1jIGNvbmZ0ZXN0LnMgMj4mMSB8ICRFR1JFUCAtaSAnaWxsZWdhbHx3YXJuaW5nJyA+IC9kZXYvbnVsbDsgdGhlbgogCSAgICBsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsPW5vCiAJZmkKIAldKQpAQCAtMjg0LDU0ICszMTMsMTE0IEBACiAJQUNfREVGSU5FKEhBVkVfQVNfWDg2X1BDUkVMLCAxLAogCQkgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgUEMgcmVsYXRpdmUgcmVsb2NzLl0pCiAgICAgZmkKKworICAgIEFDX0NBQ0hFX0NIRUNLKFthc3NlbWJsZXIgLmFzY2lpIHBzZXVkby1vcCBzdXBwb3J0XSwKKyAgICAgICBsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wLCBbCisgICAgICAgbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcD11bmtub3duCisgICAgICAgIyBDaGVjayBpZiB3ZSBoYXZlIC5hc2NpaQorICAgICAgIEFDX1RSWV9DT01QSUxFKFthc20gKCIuYXNjaWkgXFwic3RyaW5nXFwiIik7XSwsCisJCSAgICAgICBbbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcD15ZXNdLAorCQkgICAgICAgW2xpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3A9bm9dKQorICAgIF0pCisgICAgaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KKyAgICAgICBBQ19ERUZJTkUoSEFWRV9BU19BU0NJSV9QU0VVRE9fT1AsIDEsCisJICAgICAgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLmFzY2lpLl0pCisgICAgZmkKKworICAgIEFDX0NBQ0hFX0NIRUNLKFthc3NlbWJsZXIgLnN0cmluZyBwc2V1ZG8tb3Agc3VwcG9ydF0sCisgICAgICAgbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3AsIFsKKyAgICAgICBsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcD11bmtub3duCisgICAgICAgIyBDaGVjayBpZiB3ZSBoYXZlIC5zdHJpbmcKKyAgICAgICBBQ19UUllfQ09NUElMRShbYXNtICgiLnN0cmluZyBcXCJzdHJpbmdcXCIiKTtdLCwKKwkJICAgICAgIFtsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcD15ZXNdLAorCQkgICAgICAgW2xpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPW5vXSkKKyAgICBdKQorICAgIGlmIHRlc3QgIngkbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3AiID0geHllczsgdGhlbgorICAgICAgIEFDX0RFRklORShIQVZFX0FTX1NUUklOR19QU0VVRE9fT1AsIDEsCisJICAgICAgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLnN0cmluZy5dKQorICAgIGZpCiBmaQogCitpZiB0ZXN0IHgkVEFSR0VUID0geFg4Nl9XSU42NDsgdGhlbgorICAgIExUX1NZU19TWU1CT0xfVVNDT1JFCisgICAgaWYgdGVzdCAieCRzeXNfc3ltYm9sX3VuZGVyc2NvcmUiID0geHllczsgdGhlbgorICAgICAgICBBQ19ERUZJTkUoU1lNQk9MX1VOREVSU0NPUkUsIDEsIFtEZWZpbmUgaWYgc3ltYm9scyBhcmUgdW5kZXJzY29yZWQuXSkKKyAgICBmaQorZmkKKworCitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFPTAKIGNhc2UgIiR0YXJnZXQiIGluCi0gICAgICotYXBwbGUtZGFyd2luMTAqIHwgKi0qLWZyZWVic2QqIHwgKi0qLW9wZW5ic2QqIHwgKi1wYy1zb2xhcmlzKikKKyAgICAgKmFybSotYXBwbGUtZGFyd2luKikKKyAgICAgICBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFPTEKKyAgICAgICBBQ19ERUZJTkUoRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSwgMSwKKyAgICAgICAgICAgICAgICAgW0Nhbm5vdCB1c2UgUFJPVF9FWEVDIG9uIHRoaXMgdGFyZ2V0LCBzbywgd2UgcmV2ZXJ0IHRvCisgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmUgbWVhbnNdKQorICAgICA7OworICAgICAqLWFwcGxlLWRhcndpbjFbWzEwXV0qIHwgKi0qLWZyZWVic2QqIHwgKi0qLWtmcmVlYnNkKiB8ICotKi1vcGVuYnNkKiB8ICotcGMtc29sYXJpcyopCiAgICAgICAgQUNfREVGSU5FKEZGSV9NTUFQX0VYRUNfV1JJVCwgMSwKICAgICAgICAgICAgICAgICAgW0Nhbm5vdCB1c2UgbWFsbG9jIG9uIHRoaXMgdGFyZ2V0LCBzbywgd2UgcmV2ZXJ0IHRvCiAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmUgbWVhbnNdKQogICAgICA7OwogZXNhYworQU1fQ09ORElUSU9OQUwoRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSwgdGVzdCB4JEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSB4MSkKK0FDX1NVQlNUKEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUpCiAKLUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIC5laF9mcmFtZSBzZWN0aW9uIHNob3VsZCBiZSByZWFkLW9ubHldLAotICAgIGxpYmZmaV9jdl9yb19laF9mcmFtZSwgWwotCWxpYmZmaV9jdl9yb19laF9mcmFtZT1ubwotCWVjaG8gJ2V4dGVybiB2b2lkIGZvbyAodm9pZCk7IHZvaWQgYmFyICh2b2lkKSB7IGZvbyAoKTsgZm9vICgpOyB9JyA+IGNvbmZ0ZXN0LmMKLQlpZiAkQ0MgJENGTEFHUyAtUyAtZnBpYyAtZmV4Y2VwdGlvbnMgLW8gY29uZnRlc3QucyBjb25mdGVzdC5jID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KLQkgICAgaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLioiYSInIGNvbmZ0ZXN0LnMgPiAvZGV2L251bGw7IHRoZW4KLQkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcwotCSAgICBlbGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qI2FsbG9jJyBjb25mdGVzdC5jIFwKLQkJIHwgZ3JlcCAtdiAnI3dyaXRlJyA+IC9kZXYvbnVsbDsgdGhlbgotCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCi0JICAgIGZpCitpZiB0ZXN0IHgkVEFSR0VUID0geFg4Nl82NDsgdGhlbgorICAgIEFDX0NBQ0hFX0NIRUNLKFthc3NlbWJsZXIgc3VwcG9ydHMgdW53aW5kIHNlY3Rpb24gdHlwZV0sCisJbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlLCBbCisJbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlPXllcworCWVjaG8gJy5zZWN0aW9uIC5laF9mcmFtZSwiYSIsQHVud2luZCcgPiBjb25mdGVzdC5zCisJaWYgJENDICRDRkxBR1MgLWMgY29uZnRlc3QucyAyPiYxIHwgZ3JlcCAtaSB3YXJuaW5nID4gL2Rldi9udWxsOyB0aGVuCisJICAgIGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZT1ubwogCWZpCi0Jcm0gLWYgY29uZnRlc3QuKgotICAgIF0pCi1pZiB0ZXN0ICJ4JGxpYmZmaV9jdl9yb19laF9mcmFtZSIgPSB4eWVzOyB0aGVuCi0gICAgQUNfREVGSU5FKEhBVkVfUk9fRUhfRlJBTUUsIDEsCi0JICAgICAgW0RlZmluZSBpZiAuZWhfZnJhbWUgc2VjdGlvbnMgc2hvdWxkIGJlIHJlYWQtb25seS5dKQotICAgIEFDX0RFRklORShFSF9GUkFNRV9GTEFHUywgImEiLAotCSAgICAgIFtEZWZpbmUgdG8gdGhlIGZsYWdzIG5lZWRlZCBmb3IgdGhlIC5zZWN0aW9uIC5laF9mcmFtZSBkaXJlY3RpdmUuXSkKLWVsc2UKLSAgICBBQ19ERUZJTkUoRUhfRlJBTUVfRkxBR1MsICJhdyIsCi0JICAgICAgW0RlZmluZSB0byB0aGUgZmxhZ3MgbmVlZGVkIGZvciB0aGUgLnNlY3Rpb24gLmVoX2ZyYW1lIGRpcmVjdGl2ZS5dKQorCV0pCisgICAgaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGUiID0geHllczsgdGhlbgorCUFDX0RFRklORShIQVZFX0FTX1g4Nl82NF9VTldJTkRfU0VDVElPTl9UWVBFLCAxLAorCQkgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgdW53aW5kIHNlY3Rpb24gdHlwZS5dKQorICAgIGZpCiBmaQogCi1BQ19DQUNIRV9DSEVDSyhbZm9yIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSldLAotICAgIGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUsIFsKLQllY2hvICdpbnQgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpIGZvbyAodm9pZCkgeyByZXR1cm4gMTsgfScgPiBjb25mdGVzdC5jCi0JbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT1ubwotCWlmIEFDX1RSWV9DT01NQU5EKCR7Q0MtY2N9IC1XZXJyb3IgLVMgY29uZnRlc3QuYyAtbyBjb25mdGVzdC5zIDE+JkFTX01FU1NBR0VfTE9HX0ZEKTsgdGhlbgotCSAgICBpZiBncmVwICdcLmhpZGRlbi4qZm9vJyBjb25mdGVzdC5zID4vZGV2L251bGw7IHRoZW4KLQkJbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT15ZXMKLQkgICAgZmkKLQlmaQotCXJtIC1mIGNvbmZ0ZXN0LioKLSAgICBdKQotaWYgdGVzdCAkbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSA9IHllczsgdGhlbgotICAgIEFDX0RFRklORShIQVZFX0hJRERFTl9WSVNJQklMSVRZX0FUVFJJQlVURSwgMSwKLQkgICAgICBbRGVmaW5lIGlmIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkgaXMgc3VwcG9ydGVkLl0pCitpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24gc2hvdWxkIGJlIHJlYWQtb25seV0sCisgICAgICBsaWJmZmlfY3Zfcm9fZWhfZnJhbWUsIFsKKyAgCWxpYmZmaV9jdl9yb19laF9mcmFtZT1ubworICAJZWNobyAnZXh0ZXJuIHZvaWQgZm9vICh2b2lkKTsgdm9pZCBiYXIgKHZvaWQpIHsgZm9vICgpOyBmb28gKCk7IH0nID4gY29uZnRlc3QuYworICAJaWYgJENDICRDRkxBR1MgLVMgLWZwaWMgLWZleGNlcHRpb25zIC1vIGNvbmZ0ZXN0LnMgY29uZnRlc3QuYyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIAkgICAgaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLioiYSInIGNvbmZ0ZXN0LnMgPiAvZGV2L251bGw7IHRoZW4KKyAgCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCisgIAkgICAgZWxpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiNhbGxvYycgY29uZnRlc3QuYyBcCisgIAkJIHwgZ3JlcCAtdiAnI3dyaXRlJyA+IC9kZXYvbnVsbDsgdGhlbgorICAJCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKKyAgCSAgICBmaQorICAJZmkKKyAgCXJtIC1mIGNvbmZ0ZXN0LioKKyAgICAgIF0pCisgIGlmIHRlc3QgIngkbGliZmZpX2N2X3JvX2VoX2ZyYW1lIiA9IHh5ZXM7IHRoZW4KKyAgICAgIEFDX0RFRklORShIQVZFX1JPX0VIX0ZSQU1FLCAxLAorICAJICAgICAgW0RlZmluZSBpZiAuZWhfZnJhbWUgc2VjdGlvbnMgc2hvdWxkIGJlIHJlYWQtb25seS5dKQorICAgICAgQUNfREVGSU5FKEVIX0ZSQU1FX0ZMQUdTLCAiYSIsCisgIAkgICAgICBbRGVmaW5lIHRvIHRoZSBmbGFncyBuZWVkZWQgZm9yIHRoZSAuc2VjdGlvbiAuZWhfZnJhbWUgZGlyZWN0aXZlLiAgXSkKKyAgZWxzZQorICAgICAgQUNfREVGSU5FKEVIX0ZSQU1FX0ZMQUdTLCAiYXciLAorICAJICAgICAgW0RlZmluZSB0byB0aGUgZmxhZ3MgbmVlZGVkIGZvciB0aGUgLnNlY3Rpb24gLmVoX2ZyYW1lIGRpcmVjdGl2ZS4gIF0pCisgIGZpCisKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpXSwKKyAgICAgIGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUsIFsKKyAgCWVjaG8gJ2ludCBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSkgZm9vICh2b2lkKSB7IHJldHVybiAxICA7IH0nID4gY29uZnRlc3QuYworICAJbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT1ubworICAJaWYgQUNfVFJZX0NPTU1BTkQoJHtDQy1jY30gLVdlcnJvciAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mQVNfTUVTU0FHRV9MT0dfRkQpOyB0aGVuCisgIAkgICAgaWYgZ3JlcCAnXC5oaWRkZW4uKmZvbycgY29uZnRlc3QucyA+L2Rldi9udWxsOyB0aGVuCisgIAkJbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT15ZXMKKyAgCSAgICBmaQorICAJZmkKKyAgCXJtIC1mIGNvbmZ0ZXN0LioKKyAgICAgIF0pCisgIGlmIHRlc3QgJGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUgPSB5ZXM7IHRoZW4KKyAgICAgIEFDX0RFRklORShIQVZFX0hJRERFTl9WSVNJQklMSVRZX0FUVFJJQlVURSwgMSwKKyAgCSAgICAgIFtEZWZpbmUgaWYgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKSBpcyBzdXBwb3J0ZWQuXSkKKyAgZmkKIGZpCiAKIEFIX0JPVFRPTShbCkBAIC0zNjAsNiArNDQ5LDcgQEAKICAgaWYgdGVzdCAiJGVuYWJsZV9kZWJ1ZyIgPSAieWVzIjsgdGhlbgogICAgIEFDX0RFRklORShGRklfREVCVUcsIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCBleHRyYSBkZWJ1Z2dpbmcuXSkKICAgZmkpCitBTV9DT05ESVRJT05BTChGRklfREVCVUcsIHRlc3QgIiRlbmFibGVfZGVidWciID0gInllcyIpCiAKIEFDX0FSR19FTkFCTEUoc3RydWN0cywKIFsgIC0tZGlzYWJsZS1zdHJ1Y3RzICAgICAgIG9taXQgY29kZSBmb3Igc3RydWN0IHN1cHBvcnRdLApAQCAtMzc5LDIxICs0NjksMjUgQEAKICAgICBBQ19ERUZJTkUoVVNJTkdfUFVSSUZZLCAxLCBbRGVmaW5lIHRoaXMgaWYgeW91IGFyZSB1c2luZyBQdXJpZnkgYW5kIHdhbnQgdG8gc3VwcHJlc3Mgc3B1cmlvdXMgbWVzc2FnZXMuXSkKICAgZmkpCiAKLWlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCi0gICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KLSAgdG9vbGV4ZWNkaXI9JyQoZXhlY19wcmVmaXgpLyQodGFyZ2V0X2FsaWFzKScKLSAgdG9vbGV4ZWNsaWJkaXI9JyQodG9vbGV4ZWNkaXIpL2xpYicKLWVsc2UKLSAgdG9vbGV4ZWNkaXI9JyQobGliZGlyKS9nY2MtbGliLyQodGFyZ2V0X2FsaWFzKScKLSAgdG9vbGV4ZWNsaWJkaXI9JyQobGliZGlyKScKKyMgVGhlc2UgdmFyaWFibGVzIGFyZSBvbmx5IGV2ZXIgdXNlZCB3aGVuIHdlIGNyb3NzLWJ1aWxkIHRvIFg4Nl9XSU4zMi4KKyMgQW5kIHdlIG9ubHkgc3VwcG9ydCB0aGlzIHdpdGggR0NDLCBzby4uLgoraWYgdGVzdCB4IiRHQ0MiICE9IHgibm8iOyB0aGVuCisgIGlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCisgICAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorICAgIHRvb2xleGVjZGlyPSckKGV4ZWNfcHJlZml4KS8kKHRhcmdldF9hbGlhcyknCisgICAgdG9vbGV4ZWNsaWJkaXI9JyQodG9vbGV4ZWNkaXIpL2xpYicKKyAgZWxzZQorICAgIHRvb2xleGVjZGlyPSckKGxpYmRpcikvZ2NjLWxpYi8kKHRhcmdldF9hbGlhcyknCisgICAgdG9vbGV4ZWNsaWJkaXI9JyQobGliZGlyKScKKyAgZmkKKyAgbXVsdGlfb3NfZGlyZWN0b3J5PWAkQ0MgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKKyAgY2FzZSAkbXVsdGlfb3NfZGlyZWN0b3J5IGluCisgICAgLikgOzsgIyBBdm9pZCB0cmFpbGluZyAvLgorICAgICopIHRvb2xleGVjbGliZGlyPSR0b29sZXhlY2xpYmRpci8kbXVsdGlfb3NfZGlyZWN0b3J5IDs7CisgIGVzYWMKKyAgQUNfU1VCU1QodG9vbGV4ZWNkaXIpCisgIEFDX1NVQlNUKHRvb2xleGVjbGliZGlyKQogZmkKLW11bHRpX29zX2RpcmVjdG9yeT1gJENDIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCi1jYXNlICRtdWx0aV9vc19kaXJlY3RvcnkgaW4KLSAgLikgOzsgIyBBdm9pZCB0cmFpbGluZyAvLgotICAqKSB0b29sZXhlY2xpYmRpcj0kdG9vbGV4ZWNsaWJkaXIvJG11bHRpX29zX2RpcmVjdG9yeSA7OwotZXNhYwotQUNfU1VCU1QodG9vbGV4ZWNkaXIpCi1BQ19TVUJTVCh0b29sZXhlY2xpYmRpcikKIAogaWYgdGVzdCAiJHttdWx0aWxpYn0iID0gInllcyI7IHRoZW4KICAgbXVsdGlsaWJfYXJnPSItLWVuYWJsZS1tdWx0aWxpYiIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZGVwY29tcCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZGVwY29tcAppbmRleCBjYTVlYTRlLi5kZjhlZWE3IDEwMDc1NQotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RlcGNvbXAKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kZXBjb21wCkBAIC0xLDEwICsxLDEwIEBACiAjISAvYmluL3NoCiAjIGRlcGNvbXAgLSBjb21waWxlIGEgcHJvZ3JhbSBnZW5lcmF0aW5nIGRlcGVuZGVuY2llcyBhcyBzaWRlLWVmZmVjdHMKIAotc2NyaXB0dmVyc2lvbj0yMDA2LTEwLTE1LjE4CitzY3JpcHR2ZXJzaW9uPTIwMDktMDQtMjguMjE7ICMgVVRDCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDkgRnJlZQorIyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTE3LDkgKzE3LDcgQEAKICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIAogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCi0jIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKICMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQogIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKQEAgLTg3LDYgKzg1LDE1IEBACiAgICBkZXBtb2RlPWRhc2htc3Rkb3V0CiBmaQogCitjeWdwYXRoX3U9ImN5Z3BhdGggLXUgLWYgLSIKK2lmIHRlc3QgIiRkZXBtb2RlIiA9IG1zdmNtc3lzOyB0aGVuCisgICAjIFRoaXMgaXMganVzdCBsaWtlIG1zdmlzdWFsY3BwIGJ1dCB3L28gY3lncGF0aCB0cmFuc2xhdGlvbi4KKyAgICMgSnVzdCBjb252ZXJ0IHRoZSBiYWNrc2xhc2gtZXNjYXBlZCBiYWNrc2xhc2hlcyB0byBzaW5nbGUgZm9yd2FyZAorICAgIyBzbGFzaGVzIHRvIHNhdGlzZnkgZGVwZW5kLm00CisgICBjeWdwYXRoX3U9InNlZCBzLFxcXFxcXFxcLC8sZyIKKyAgIGRlcG1vZGU9bXN2aXN1YWxjcHAKK2ZpCisKIGNhc2UgIiRkZXBtb2RlIiBpbgogZ2NjMykKICMjIGdjYyAzIGltcGxlbWVudHMgZGVwZW5kZW5jeSB0cmFja2luZyB0aGF0IGRvZXMgZXhhY3RseSB3aGF0CkBAIC0xOTIsMTQgKzE5OSwxNCBAQAogJyA8ICIkdG1wZGVwZmlsZSIgXAogICAgIHwgc2VkIC1lICdzL14uKlwubzovLycgLWUgJ3MvIy4qJC8vJyAtZSAnL14kLyBkJyB8IFwKICAgICB0ciAnCi0nICcgJyA+PiAkZGVwZmlsZQotICAgIGVjaG8gPj4gJGRlcGZpbGUKKycgJyAnID4+ICIkZGVwZmlsZSIKKyAgICBlY2hvID4+ICIkZGVwZmlsZSIKIAogICAgICMgVGhlIHNlY29uZCBwYXNzIGdlbmVyYXRlcyBhIGR1bW15IGVudHJ5IGZvciBlYWNoIGhlYWRlciBmaWxlLgogICAgIHRyICcgJyAnCiAnIDwgIiR0bXBkZXBmaWxlIiBcCiAgICB8IHNlZCAtZSAncy9eLipcLm86Ly8nIC1lICdzLyMuKiQvLycgLWUgJy9eJC8gZCcgLWUgJ3MvJC86LycgXAotICAgPj4gJGRlcGZpbGUKKyAgID4+ICIkZGVwZmlsZSIKICAgZWxzZQogICAgICMgVGhlIHNvdXJjZWZpbGUgZG9lcyBub3QgY29udGFpbiBhbnkgZGVwZW5kZW5jaWVzLCBzbyBqdXN0CiAgICAgIyBzdG9yZSBhIGR1bW15IGNvbW1lbnQgbGluZSwgdG8gYXZvaWQgZXJyb3JzIHdpdGggdGhlIE1ha2VmaWxlCkBAIC0yMTUsMzQgKzIyMiwzOSBAQAogICAjIGN1cnJlbnQgZGlyZWN0b3J5LiAgQWxzbywgdGhlIEFJWCBjb21waWxlciBwdXRzIGAkb2JqZWN0OicgYXQgdGhlCiAgICMgc3RhcnQgb2YgZWFjaCBsaW5lOyAkb2JqZWN0IGRvZXNuJ3QgaGF2ZSBkaXJlY3RvcnkgaW5mb3JtYXRpb24uCiAgICMgVmVyc2lvbiA2IHVzZXMgdGhlIGRpcmVjdG9yeSBpbiBib3RoIGNhc2VzLgotICBzdHJpcHBlZD1gZWNobyAiJG9iamVjdCIgfCBzZWQgJ3MvXCguKlwpXC4uKiQvXDEvJ2AKLSAgdG1wZGVwZmlsZT0iJHN0cmlwcGVkLnUiCisgIGRpcj1gZWNobyAiJG9iamVjdCIgfCBzZWQgLWUgJ3N8L1teL10qJHwvfCdgCisgIHRlc3QgIngkZGlyIiA9ICJ4JG9iamVjdCIgJiYgZGlyPQorICBiYXNlPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAtZSAnc3xeLiovfHwnIC1lICdzL1wubyQvLycgLWUgJ3MvXC5sbyQvLydgCiAgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHRtcGRlcGZpbGUxPSRkaXIkYmFzZS51CisgICAgdG1wZGVwZmlsZTI9JGJhc2UudQorICAgIHRtcGRlcGZpbGUzPSRkaXIubGlicy8kYmFzZS51CiAgICAgIiRAIiAtV2MsLU0KICAgZWxzZQorICAgIHRtcGRlcGZpbGUxPSRkaXIkYmFzZS51CisgICAgdG1wZGVwZmlsZTI9JGRpciRiYXNlLnUKKyAgICB0bXBkZXBmaWxlMz0kZGlyJGJhc2UudQogICAgICIkQCIgLU0KICAgZmkKICAgc3RhdD0kPwogCi0gIGlmIHRlc3QgLWYgIiR0bXBkZXBmaWxlIjsgdGhlbiA6Ci0gIGVsc2UKLSAgICBzdHJpcHBlZD1gZWNobyAiJHN0cmlwcGVkIiB8IHNlZCAncyxeLiovLCwnYAotICAgIHRtcGRlcGZpbGU9IiRzdHJpcHBlZC51IgotICBmaQotCiAgIGlmIHRlc3QgJHN0YXQgLWVxIDA7IHRoZW4gOgogICBlbHNlCi0gICAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICAgIHJtIC1mICIkdG1wZGVwZmlsZTEiICIkdG1wZGVwZmlsZTIiICIkdG1wZGVwZmlsZTMiCiAgICAgZXhpdCAkc3RhdAogICBmaQogCisgIGZvciB0bXBkZXBmaWxlIGluICIkdG1wZGVwZmlsZTEiICIkdG1wZGVwZmlsZTIiICIkdG1wZGVwZmlsZTMiCisgIGRvCisgICAgdGVzdCAtZiAiJHRtcGRlcGZpbGUiICYmIGJyZWFrCisgIGRvbmUKICAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuCi0gICAgb3V0bmFtZT0iJHN0cmlwcGVkLm8iCiAgICAgIyBFYWNoIGxpbmUgaXMgb2YgdGhlIGZvcm0gYGZvby5vOiBkZXBlbmRlbnQuaCcuCiAgICAgIyBEbyB0d28gcGFzc2VzLCBvbmUgdG8ganVzdCBjaGFuZ2UgdGhlc2UgdG8KICAgICAjIGAkb2JqZWN0OiBkZXBlbmRlbnQuaCcgYW5kIG9uZSB0byBzaW1wbHkgYGRlcGVuZGVudC5oOicuCi0gICAgc2VkIC1lICJzLF4kb3V0bmFtZTosJG9iamVjdCA6LCIgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgotICAgIHNlZCAtZSAicyxeJG91dG5hbWU6IFwoLipcKSQsXDE6LCIgPCAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKKyAgICBzZWQgLWUgInMsXi4qXC5bYS16XSo6LCRvYmplY3Q6LCIgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICAgICMgVGhhdCdzIGEgdGFiIGFuZCBhIHNwYWNlIGluIHRoZSBbXS4KKyAgICBzZWQgLWUgJ3MsXi4qXC5bYS16XSo6WwkgXSosLCcgLWUgJ3MsJCw6LCcgPCAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKICAgZWxzZQogICAgICMgVGhlIHNvdXJjZWZpbGUgZG9lcyBub3QgY29udGFpbiBhbnkgZGVwZW5kZW5jaWVzLCBzbyBqdXN0CiAgICAgIyBzdG9yZSBhIGR1bW15IGNvbW1lbnQgbGluZSwgdG8gYXZvaWQgZXJyb3JzIHdpdGggdGhlIE1ha2VmaWxlCkBAIC0zMjMsNyArMzM1LDEyIEBACiAgIGlmIHRlc3QgLWYgIiR0bXBkZXBmaWxlIjsgdGhlbgogICAgIHNlZCAtZSAicyxeLipcLlthLXpdKjosJG9iamVjdDosIiAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgogICAgICMgQWRkIGBkZXBlbmRlbnQuaDonIGxpbmVzLgotICAgIHNlZCAtbmUgJzIsJHs7IHMvXiAqLy87IHMvIFxcKiQvLzsgcy8kLzovOyBwO30nICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgorICAgIHNlZCAtbmUgJzIsJHsKKwkgICAgICAgcy9eICovLworCSAgICAgICBzLyBcXCokLy8KKwkgICAgICAgcy8kLzovCisJICAgICAgIHAKKwkgICAgIH0nICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgogICBlbHNlCiAgICAgZWNobyAiI2R1bW15IiA+ICIkZGVwZmlsZSIKICAgZmkKQEAgLTM5OSw3ICs0MTYsNyBAQAogCiAgICMgUmVtb3ZlIHRoZSBjYWxsIHRvIExpYnRvb2wuCiAgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgotICAgIHdoaWxlIHRlc3QgJDEgIT0gJy0tbW9kZT1jb21waWxlJzsgZG8KKyAgICB3aGlsZSB0ZXN0ICJYJDEiICE9ICdYLS1tb2RlPWNvbXBpbGUnOyBkbwogICAgICAgc2hpZnQKICAgICBkb25lCiAgICAgc2hpZnQKQEAgLTQ1MCwzMiArNDY3LDM5IEBACiAgICIkQCIgfHwgZXhpdCAkPwogICAjIFJlbW92ZSBhbnkgTGlidG9vbCBjYWxsCiAgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgotICAgIHdoaWxlIHRlc3QgJDEgIT0gJy0tbW9kZT1jb21waWxlJzsgZG8KKyAgICB3aGlsZSB0ZXN0ICJYJDEiICE9ICdYLS1tb2RlPWNvbXBpbGUnOyBkbwogICAgICAgc2hpZnQKICAgICBkb25lCiAgICAgc2hpZnQKICAgZmkKICAgIyBYIG1ha2VkZXBlbmQKICAgc2hpZnQKLSAgY2xlYXJlZD1ubwotICBmb3IgYXJnIGluICIkQCI7IGRvCisgIGNsZWFyZWQ9bm8gZWF0PW5vCisgIGZvciBhcmcKKyAgZG8KICAgICBjYXNlICRjbGVhcmVkIGluCiAgICAgbm8pCiAgICAgICBzZXQgIiI7IHNoaWZ0CiAgICAgICBjbGVhcmVkPXllcyA7OwogICAgIGVzYWMKKyAgICBpZiB0ZXN0ICRlYXQgPSB5ZXM7IHRoZW4KKyAgICAgIGVhdD1ubworICAgICAgY29udGludWUKKyAgICBmaQogICAgIGNhc2UgIiRhcmciIGluCiAgICAgLUQqfC1JKikKICAgICAgIHNldCBmbm9yZCAiJEAiICIkYXJnIjsgc2hpZnQgOzsKICAgICAjIFN0cmlwIGFueSBvcHRpb24gdGhhdCBtYWtlZGVwZW5kIG1heSBub3QgdW5kZXJzdGFuZC4gIFJlbW92ZQogICAgICMgdGhlIG9iamVjdCB0b28sIG90aGVyd2lzZSBtYWtlZGVwZW5kIHdpbGwgcGFyc2UgaXQgYXMgYSBzb3VyY2UgZmlsZS4KKyAgICAtYXJjaCkKKyAgICAgIGVhdD15ZXMgOzsKICAgICAtKnwkb2JqZWN0KQogICAgICAgOzsKICAgICAqKQogICAgICAgc2V0IGZub3JkICIkQCIgIiRhcmciOyBzaGlmdCA7OwogICAgIGVzYWMKICAgZG9uZQotICBvYmpfc3VmZml4PSJgZWNobyAkb2JqZWN0IHwgc2VkICdzL14uKlwuLy4vJ2AiCisgIG9ial9zdWZmaXg9YGVjaG8gIiRvYmplY3QiIHwgc2VkICdzL14uKlwuLy4vJ2AKICAgdG91Y2ggIiR0bXBkZXBmaWxlIgogICAke01BS0VERVBFTkQtbWFrZWRlcGVuZH0gLW8iJG9ial9zdWZmaXgiIC1mIiR0bXBkZXBmaWxlIiAiJEAiCiAgIHJtIC1mICIkZGVwZmlsZSIKQEAgLTQ5NSw3ICs1MTksNyBAQAogCiAgICMgUmVtb3ZlIHRoZSBjYWxsIHRvIExpYnRvb2wuCiAgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgotICAgIHdoaWxlIHRlc3QgJDEgIT0gJy0tbW9kZT1jb21waWxlJzsgZG8KKyAgICB3aGlsZSB0ZXN0ICJYJDEiICE9ICdYLS1tb2RlPWNvbXBpbGUnOyBkbwogICAgICAgc2hpZnQKICAgICBkb25lCiAgICAgc2hpZnQKQEAgLTUzMywxMyArNTU3LDI3IEBACiAKIG1zdmlzdWFsY3BwKQogICAjIEltcG9ydGFudCBub3RlOiBpbiBvcmRlciB0byBzdXBwb3J0IHRoaXMgbW9kZSwgYSBjb21waWxlciAqbXVzdCoKLSAgIyBhbHdheXMgd3JpdGUgdGhlIHByZXByb2Nlc3NlZCBmaWxlIHRvIHN0ZG91dCwgcmVnYXJkbGVzcyBvZiAtbywKLSAgIyBiZWNhdXNlIHdlIG11c3QgdXNlIC1vIHdoZW4gcnVubmluZyBsaWJ0b29sLgorICAjIGFsd2F5cyB3cml0ZSB0aGUgcHJlcHJvY2Vzc2VkIGZpbGUgdG8gc3Rkb3V0LgogICAiJEAiIHx8IGV4aXQgJD8KKworICAjIFJlbW92ZSB0aGUgY2FsbCB0byBMaWJ0b29sLgorICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICB3aGlsZSB0ZXN0ICJYJDEiICE9ICdYLS1tb2RlPWNvbXBpbGUnOyBkbworICAgICAgc2hpZnQKKyAgICBkb25lCisgICAgc2hpZnQKKyAgZmkKKwogICBJRlM9IiAiCiAgIGZvciBhcmcKICAgZG8KICAgICBjYXNlICIkYXJnIiBpbgorICAgIC1vKQorICAgICAgc2hpZnQKKyAgICAgIDs7CisgICAgJG9iamVjdCkKKyAgICAgIHNoaWZ0CisgICAgICA7OwogICAgICItR20ifCIvR20ifCItR2kifCIvR2kifCItWkkifCIvWkkiKQogCXNldCBmbm9yZCAiJEAiCiAJc2hpZnQKQEAgLTU1MiwxNiArNTkwLDIzIEBACiAJOzsKICAgICBlc2FjCiAgIGRvbmUKLSAgIiRAIiAtRSB8Ci0gIHNlZCAtbiAnL14jbGluZSBbMC05XVswLTldKiAiXChbXiJdKlwpIi8gczo6ZWNobyAiYGN5Z3BhdGggLXUgXFwiXDFcXCJgIjpwJyB8IHNvcnQgfCB1bmlxID4gIiR0bXBkZXBmaWxlIgorICAiJEAiIC1FIDI+L2Rldi9udWxsIHwKKyAgc2VkIC1uICcvXiNsaW5lIFswLTldWzAtOV0qICJcKFteIl0qXCkiLyBzOjpcMTpwJyB8ICRjeWdwYXRoX3UgfCBzb3J0IC11ID4gIiR0bXBkZXBmaWxlIgogICBybSAtZiAiJGRlcGZpbGUiCiAgIGVjaG8gIiRvYmplY3QgOiBcXCIgPiAiJGRlcGZpbGUiCi0gIC4gIiR0bXBkZXBmaWxlIiB8IHNlZCAncyUgJVxcICVnJyB8IHNlZCAtbiAnL15cKC4qXCkkLyBzOjoJXDEgXFw6cCcgPj4gIiRkZXBmaWxlIgorICBzZWQgPCAiJHRtcGRlcGZpbGUiIC1uIC1lICdzJSAlXFwgJWcnIC1lICcvXlwoLipcKSQvIHM6OglcMSBcXDpwJyA+PiAiJGRlcGZpbGUiCiAgIGVjaG8gIgkiID4+ICIkZGVwZmlsZSIKLSAgLiAiJHRtcGRlcGZpbGUiIHwgc2VkICdzJSAlXFwgJWcnIHwgc2VkIC1uICcvXlwoLipcKSQvIHM6OlwxXDo6cCcgPj4gIiRkZXBmaWxlIgorICBzZWQgPCAiJHRtcGRlcGZpbGUiIC1uIC1lICdzJSAlXFwgJWcnIC1lICcvXlwoLipcKSQvIHM6OlwxXDo6cCcgPj4gIiRkZXBmaWxlIgogICBybSAtZiAiJHRtcGRlcGZpbGUiCiAgIDs7CiAKK21zdmNtc3lzKQorICAjIFRoaXMgY2FzZSBleGlzdHMgb25seSB0byBsZXQgZGVwZW5kLm00IGRvIGl0cyB3b3JrLiAgSXQgd29ya3MgYnkKKyAgIyBsb29raW5nIGF0IHRoZSB0ZXh0IG9mIHRoaXMgc2NyaXB0LiAgVGhpcyBjYXNlIHdpbGwgbmV2ZXIgYmUgcnVuLAorICAjIHNpbmNlIGl0IGlzIGNoZWNrZWQgZm9yIGFib3ZlLgorICBleGl0IDEKKyAgOzsKKwogbm9uZSkKICAgZXhlYyAiJEAiCiAgIDs7CkBAIC01ODAsNSArNjI1LDYgQEAKICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQogIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCiAjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgotIyB0aW1lLXN0YW1wLWVuZDogIiQiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyB0aW1lLXN0YW1wLWVuZDogIjsgIyBVVEMiCiAjIEVuZDoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS5pbmZvIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLmluZm8KaW5kZXggODk2YTVlYy4uNDAyZjc2MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLmluZm8KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLmluZm8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLnRleGkgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkudGV4aQppbmRleCA5ZmE1YjE3Li5mMGU2NTE3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkudGV4aQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkudGV4aQpAQCAtMTksNyArMTksNyBAQAogVGhpcyBtYW51YWwgaXMgZm9yIExpYmZmaSwgYSBwb3J0YWJsZSBmb3JlaWduLWZ1bmN0aW9uIGludGVyZmFjZQogbGlicmFyeS4KIAotQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAyMDA4LCAyMDEwIFJlZCBIYXQsIEluYy4KK0NvcHlyaWdodCBAY29weXJpZ2h0e30gMjAwOCwgMjAxMCwgMjAxMSBSZWQgSGF0LCBJbmMuCiAKIEBxdW90YXRpb24KIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudApAQCAtMTMzLDggKzEzMyw2IEBACiB5b3Ugd2FudC4gIEByZWZ7TXVsdGlwbGUgQUJJc30gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIEB2YXJ7bmFyZ3N9IGlzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHRoYXQgdGhpcyBmdW5jdGlvbiBhY2NlcHRzLgotQHNhbXB7bGliZmZpfSBkb2VzIG5vdCB5ZXQgaGFuZGxlIHZhcmFyZ3MgZnVuY3Rpb25zOyBzZWUgQHJlZntNaXNzaW5nCi1GZWF0dXJlc30gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIEB2YXJ7cnR5cGV9IGlzIGEgcG9pbnRlciB0byBhbiBAY29kZXtmZmlfdHlwZX0gc3RydWN0dXJlIHRoYXQKIGRlc2NyaWJlcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uLiAgQHhyZWZ7VHlwZXN9LgpAQCAtMTUwLDYgKzE0OCwzMCBAQAogaXMgaW52YWxpZC4KIEBlbmQgZGVmdW4KIAorSWYgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBpcyB2YXJpYWRpYyAodmFyYXJncykgdGhlbgorQGNvZGV7ZmZpX3ByZXBfY2lmX3Zhcn0gbXVzdCBiZSB1c2VkIGluc3RlYWQgb2YgQGNvZGV7ZmZpX3ByZXBfY2lmfS4KKworQGZpbmRleCBmZmlfcHJlcF9jaWZfdmFyCitAZGVmdW4gZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfdmFyIChmZmlfY2lmICpAdmFye2NpZn0sIGZmaV9hYmkgdmFye2FiaX0sIHVuc2lnbmVkIGludCBAdmFye25maXhlZGFyZ3N9LCB1bnNpZ25lZCBpbnQgdmFye250b3RhbGFyZ3N9LCBmZmlfdHlwZSAqQHZhcntydHlwZX0sIGZmaV90eXBlICoqQHZhcnthcmd0eXBlc30pCitUaGlzIGluaXRpYWxpemVzIEB2YXJ7Y2lmfSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHBhcmFtZXRlcnMgZm9yCithIGNhbGwgdG8gYSB2YXJpYWRpYyBmdW5jdGlvbi4gIEluIGdlbmVyYWwgaXQncyBvcGVyYXRpb24gaXMgdGhlCitzYW1lIGFzIGZvciBAY29kZXtmZmlfcHJlcF9jaWZ9IGV4Y2VwdCB0aGF0OgorCitAdmFye25maXhlZGFyZ3N9IGlzIHRoZSBudW1iZXIgb2YgZml4ZWQgYXJndW1lbnRzLCBwcmlvciB0byBhbnkKK3ZhcmlhZGljIGFyZ3VtZW50cy4gIEl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uCisKK0B2YXJ7bnRvdGFsYXJnc30gdGhlIHRvdGFsIG51bWJlciBvZiBhcmd1bWVudHMsIGluY2x1ZGluZyB2YXJpYWRpYworYW5kIGZpeGVkIGFyZ3VtZW50cy4KKworTm90ZSB0aGF0LCBkaWZmZXJlbnQgY2lmJ3MgbXVzdCBiZSBwcmVwcGVkIGZvciBjYWxscyB0byB0aGUgc2FtZQorZnVuY3Rpb24gd2hlbiBkaWZmZXJlbnQgbnVtYmVycyBvZiBhcmd1bWVudHMgYXJlIHBhc3NlZC4KKworQWxzbyBub3RlIHRoYXQgYSBjYWxsIHRvIEBjb2Rle2ZmaV9wcmVwX2NpZl92YXJ9IHdpdGgKK0B2YXJ7bmZpeGVkYXJnc309QHZhcntub3RvdGFsYXJnc30gaXMgTk9UIGVxdWl2YWxlbnQgdG8gYSBjYWxsIHRvCitAY29kZXtmZmlfcHJlcF9jaWZ9LgorCitAZW5kIGRlZnVuCisKIAogVG8gY2FsbCBhIGZ1bmN0aW9uIHVzaW5nIGFuIGluaXRpYWxpemVkIEBjb2Rle2ZmaV9jaWZ9LCB1c2UgdGhlCiBAY29kZXtmZmlfY2FsbH0gZnVuY3Rpb246CkBAIC0xNzEsNyArMTkzLDkgQEAKIEB2YXJ7YXZhbHVlc30gaXMgYSB2ZWN0b3Igb2YgQGNvZGV7dm9pZCAqfSBwb2ludGVycyB0aGF0IHBvaW50IHRvIHRoZQogbWVtb3J5IGxvY2F0aW9ucyBob2xkaW5nIHRoZSBhcmd1bWVudCB2YWx1ZXMgZm9yIGEgY2FsbC4gIElmIEB2YXJ7Y2lmfQogZGVjbGFyZXMgdGhhdCB0aGUgZnVuY3Rpb24gaGFzIG5vIGFyZ3VtZW50cyAoaS5lLiwgQHZhcntuYXJnc30gd2FzIDApLAotdGhlbiBAdmFye2F2YWx1ZXN9IGlzIGlnbm9yZWQuCit0aGVuIEB2YXJ7YXZhbHVlc30gaXMgaWdub3JlZC4gIE5vdGUgdGhhdCBhcmd1bWVudCB2YWx1ZXMgbWF5IGJlCittb2RpZmllZCBieSB0aGUgY2FsbGVlIChmb3IgaW5zdGFuY2UsIHN0cnVjdHMgcGFzc2VkIGJ5IHZhbHVlKTsgdGhlCitidXJkZW4gb2YgY29weWluZyBwYXNzLWJ5LXZhbHVlIGFyZ3VtZW50cyBpcyBwbGFjZWQgb24gdGhlIGNhbGxlci4KIEBlbmQgZGVmdW4KIAogCkBAIC00MzgsNyArNDYyLDcgQEAKIGhlYXAuICBNZW1vcnkgbWFuYWdlbWVudCBmb3IgY2xvc3VyZXMgaXMgaGFuZGxlZCBieSBhIHBhaXIgb2YKIGZ1bmN0aW9uczoKIAotQGZpbmRleCBmZmlfY2xvc3VyZV9hbGxvY2EKK0BmaW5kZXggZmZpX2Nsb3N1cmVfYWxsb2MKIEBkZWZ1biB2b2lkICpmZmlfY2xvc3VyZV9hbGxvYyAoc2l6ZV90IEB2YXJ7c2l6ZX0sIHZvaWQgKipAdmFye2NvZGV9KQogQWxsb2NhdGUgYSBjaHVuayBvZiBtZW1vcnkgaG9sZGluZyBAdmFye3NpemV9IGJ5dGVzLiAgVGhpcyByZXR1cm5zIGEKIHBvaW50ZXIgdG8gdGhlIHdyaXRhYmxlIGFkZHJlc3MsIGFuZCBzZXRzICpAdmFye2NvZGV9IHRvIHRoZQpAQCAtNTcwLDkgKzU5NCw3IEBACiAKIEBpdGVtaXplIEBidWxsZXQKIEBpdGVtCi1UaGVyZSBpcyBubyBzdXBwb3J0IGZvciBjYWxsaW5nIHZhcmFyZ3MgZnVuY3Rpb25zLiAgVGhpcyBtYXkgd29yayBvbgotc29tZSBwbGF0Zm9ybXMsIGRlcGVuZGluZyBvbiBob3cgdGhlIEFCSSBpcyBkZWZpbmVkLCBidXQgaXQgaXMgbm90Ci1yZWxpYWJsZS4KK1ZhcmlhZGljIGNsb3N1cmVzLgogCiBAaXRlbQogVGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgYml0IGZpZWxkcyBpbiBzdHJ1Y3R1cmVzLgpAQCAtNTg5LDYgKzYxMSw4IEBACiBAYyBhbnl0aGluZyBlbHNlPwogQGVuZCBpdGVtaXplCiAKK05vdGUgdGhhdCB2YXJpYWRpYyBzdXBwb3J0IGlzIHZlcnkgbmV3IGFuZCB0ZXN0ZWQgb24gYSByZWxhdGl2ZWx5CitzbWFsbCBudW1iZXIgb2YgcGxhdGZvcm1zLgogCiBAbm9kZSBJbmRleAogQHVubnVtYmVyZWQgSW5kZXgKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3N0YW1wLXZ0aSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3N0YW1wLXZ0aQppbmRleCA4MWQwYjc5Li5lMjU5YTEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9zdGFtcC12dGkKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2Mvc3RhbXAtdnRpCkBAIC0xLDQgKzEsNCBAQAotQHNldCBVUERBVEVEIDE0IEZlYnJ1YXJ5IDIwMDgKLUBzZXQgVVBEQVRFRC1NT05USCBGZWJydWFyeSAyMDA4Ci1Ac2V0IEVESVRJT04gMy4wLjgKLUBzZXQgVkVSU0lPTiAzLjAuOAorQHNldCBVUERBVEVEIDExIEFwcmlsIDIwMTIKK0BzZXQgVVBEQVRFRC1NT05USCBBcHJpbCAyMDEyCitAc2V0IEVESVRJT04gMy4wLjExCitAc2V0IFZFUlNJT04gMy4wLjExCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy92ZXJzaW9uLnRleGkgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy92ZXJzaW9uLnRleGkKaW5kZXggODFkMGI3OS4uZTI1OWExMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvdmVyc2lvbi50ZXhpCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3ZlcnNpb24udGV4aQpAQCAtMSw0ICsxLDQgQEAKLUBzZXQgVVBEQVRFRCAxNCBGZWJydWFyeSAyMDA4Ci1Ac2V0IFVQREFURUQtTU9OVEggRmVicnVhcnkgMjAwOAotQHNldCBFRElUSU9OIDMuMC44Ci1Ac2V0IFZFUlNJT04gMy4wLjgKK0BzZXQgVVBEQVRFRCAxMSBBcHJpbCAyMDEyCitAc2V0IFVQREFURUQtTU9OVEggQXByaWwgMjAxMgorQHNldCBFRElUSU9OIDMuMC4xMQorQHNldCBWRVJTSU9OIDMuMC4xMQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9mZmljb25maWcuaC5pbiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZmZpY29uZmlnLmguaW4KaW5kZXggZTAzYmJmOS4uMTY4ZWJjMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9mZmljb25maWcuaC5pbgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2ZmaWNvbmZpZy5oLmluCkBAIC0xNyw2ICsxNyw5IEBACiAvKiBEZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCBleHRyYSBkZWJ1Z2dpbmcuICovCiAjdW5kZWYgRkZJX0RFQlVHCiAKKy8qIENhbm5vdCB1c2UgUFJPVF9FWEVDIG9uIHRoaXMgdGFyZ2V0LCBzbywgd2UgcmV2ZXJ0IHRvIGFsdGVybmF0aXZlIG1lYW5zICovCisjdW5kZWYgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQorCiAvKiBDYW5ub3QgdXNlIG1hbGxvYyBvbiB0aGlzIHRhcmdldCwgc28sIHdlIHJldmVydCB0byBhbHRlcm5hdGl2ZSBtZWFucyAqLwogI3VuZGVmIEZGSV9NTUFQX0VYRUNfV1JJVAogCkBAIC0zMyw2ICszNiw5IEBACiAgICAqLwogI3VuZGVmIEhBVkVfQUxMT0NBX0gKIAorLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5hc2NpaS4gKi8KKyN1bmRlZiBIQVZFX0FTX0FTQ0lJX1BTRVVET19PUAorCiAvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLmNmaV8qIGRpcmVjdGl2ZXMuICovCiAjdW5kZWYgSEFWRV9BU19DRklfUFNFVURPX09QCiAKQEAgLTQzLDYgKzQ5LDEyIEBACiAgICAqLwogI3VuZGVmIEhBVkVfQVNfU1BBUkNfVUFfUENSRUwKIAorLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5zdHJpbmcuICovCisjdW5kZWYgSEFWRV9BU19TVFJJTkdfUFNFVURPX09QCisKKy8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyB1bndpbmQgc2VjdGlvbiB0eXBlLiAqLworI3VuZGVmIEhBVkVfQVNfWDg2XzY0X1VOV0lORF9TRUNUSU9OX1RZUEUKKwogLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIFBDIHJlbGF0aXZlIHJlbG9jcy4gKi8KICN1bmRlZiBIQVZFX0FTX1g4Nl9QQ1JFTAogCkBAIC0xNDgsNiArMTYwLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLwogI3VuZGVmIFNURENfSEVBREVSUwogCisvKiBEZWZpbmUgaWYgc3ltYm9scyBhcmUgdW5kZXJzY29yZWQuICovCisjdW5kZWYgU1lNQk9MX1VOREVSU0NPUkUKKwogLyogRGVmaW5lIHRoaXMgaWYgeW91IGFyZSB1c2luZyBQdXJpZnkgYW5kIHdhbnQgdG8gc3VwcHJlc3Mgc3B1cmlvdXMgbWVzc2FnZXMuCiAgICAqLwogI3VuZGVmIFVTSU5HX1BVUklGWQpAQCAtMTY3LDYgKzE4Miw5IEBACiAjIGVuZGlmCiAjZW5kaWYKIAorLyogRGVmaW5lIHRvIGB1bnNpZ25lZCBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLworI3VuZGVmIHNpemVfdAorCiAKICNpZmRlZiBIQVZFX0hJRERFTl9WSVNJQklMSVRZX0FUVFJJQlVURQogI2lmZGVmIExJQkZGSV9BU00KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmJjYTczCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9nZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5CkBAIC0wLDAgKzEsMTYwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCByZQoraW1wb3J0IG9zCitpbXBvcnQgZXJybm8KK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IHN5cworCitjbGFzcyBQbGF0Zm9ybShvYmplY3QpOgorICAgIHBhc3MKKworc2RrX3JlID0gcmUuY29tcGlsZShyJy4qLXNkayAoW2EtekEtWjAtOS5dKiknKQorCitkZWYgc2RraW5mbyhzZGtuYW1lKToKKyAgICByZXQgPSB7fQorICAgIGZvciBsaW5lIGluIHN1YnByb2Nlc3MuUG9wZW4oWyd4Y29kZWJ1aWxkJywgJy1zZGsnLCBzZGtuYW1lLCAnLXZlcnNpb24nXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0OgorICAgICAgICBrdiA9IGxpbmUuc3RyaXAoKS5zcGxpdCgnOiAnLCAxKQorICAgICAgICBpZiBsZW4oa3YpID09IDI6CisgICAgICAgICAgICBrLHYgPSBrdgorICAgICAgICAgICAgcmV0W2tdID0gdgorICAgIHJldHVybiByZXQKKworc2ltX3Nka19pbmZvID0gc2RraW5mbygnaXBob25lc2ltdWxhdG9yJykKK2RldmljZV9zZGtfaW5mbyA9IHNka2luZm8oJ2lwaG9uZW9zJykKKworZGVmIGxhdGVzdF9zZGtzKCk6CisgICAgbGF0ZXN0X3NpbSA9IE5vbmUKKyAgICBsYXRlc3RfZGV2aWNlID0gTm9uZQorICAgIGZvciBsaW5lIGluIHN1YnByb2Nlc3MuUG9wZW4oWyd4Y29kZWJ1aWxkJywgJy1zaG93c2RrcyddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQ6CisgICAgICAgIG1hdGNoID0gc2RrX3JlLm1hdGNoKGxpbmUpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgaWYgJ1NpbXVsYXRvcicgaW4gbGluZToKKyAgICAgICAgICAgICAgICBsYXRlc3Rfc2ltID0gbWF0Y2guZ3JvdXAoMSkKKyAgICAgICAgICAgIGVsaWYgJ2lPUycgaW4gbGluZToKKyAgICAgICAgICAgICAgICBsYXRlc3RfZGV2aWNlID0gbWF0Y2guZ3JvdXAoMSkKKworICAgIHJldHVybiBsYXRlc3Rfc2ltLCBsYXRlc3RfZGV2aWNlCisKK3NpbV9zZGssIGRldmljZV9zZGsgPSBsYXRlc3Rfc2RrcygpCisKK2NsYXNzIHNpbXVsYXRvcl9wbGF0Zm9ybShQbGF0Zm9ybSk6CisgICAgc2RrPSdpcGhvbmVzaW11bGF0b3InCisgICAgYXJjaCA9ICdpMzg2JworICAgIG5hbWUgPSAnc2ltdWxhdG9yJworICAgIHRyaXBsZSA9ICdpMzg2LWFwcGxlLWRhcndpbjEwJworICAgIHNka3Jvb3QgPSBzaW1fc2RrX2luZm9bJ1BhdGgnXQorCisgICAgcHJlZml4ID0gIiNpZiAhZGVmaW5lZChfX2FybV9fKSAmJiBkZWZpbmVkKF9faTM4Nl9fKVxuXG4iCisgICAgc3VmZml4ID0gIlxuXG4jZW5kaWYiCisKK2NsYXNzIGRldmljZV9wbGF0Zm9ybShQbGF0Zm9ybSk6CisgICAgc2RrPSdpcGhvbmVvcycKKyAgICBuYW1lID0gJ2lvcycKKyAgICBhcmNoID0gJ2FybXY3JworICAgIHRyaXBsZSA9ICdhcm0tYXBwbGUtZGFyd2luMTAnCisgICAgc2Rrcm9vdCA9IGRldmljZV9zZGtfaW5mb1snUGF0aCddCisKKyAgICBwcmVmaXggPSAiI2lmZGVmIF9fYXJtX19cblxuIgorICAgIHN1ZmZpeCA9ICJcblxuI2VuZGlmIgorCisKK2RlZiBtb3ZlX2ZpbGUoc3JjX2RpciwgZHN0X2RpciwgZmlsZW5hbWUsIGZpbGVfc3VmZml4PU5vbmUsIHByZWZpeD0nJywgc3VmZml4PScnKToKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6CisgICAgICAgIG9zLm1ha2VkaXJzKGRzdF9kaXIpCisKKyAgICBvdXRfZmlsZW5hbWUgPSBmaWxlbmFtZQorCisgICAgaWYgZmlsZV9zdWZmaXg6CisgICAgICAgIHNwbGl0X25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKQorICAgICAgICBvdXRfZmlsZW5hbWUgPSAgIiVzXyVzJXMiICUgKHNwbGl0X25hbWVbMF0sIGZpbGVfc3VmZml4LCBzcGxpdF9uYW1lWzFdKQorCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzcmNfZGlyLCBmaWxlbmFtZSkpIGFzIGluX2ZpbGU6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZHN0X2Rpciwgb3V0X2ZpbGVuYW1lKSwgJ3cnKSBhcyBvdXRfZmlsZToKKyAgICAgICAgICAgIGlmIHByZWZpeDoKKyAgICAgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShwcmVmaXgpCisKKyAgICAgICAgICAgIG91dF9maWxlLndyaXRlKGluX2ZpbGUucmVhZCgpKQorCisgICAgICAgICAgICBpZiBzdWZmaXg6CisgICAgICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoc3VmZml4KQorCitoZWFkZXJzX3NlZW4gPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChzZXQpCisKK2RlZiBtb3ZlX3NvdXJjZV90cmVlKHNyY19kaXIsIGRlc3RfZGlyLCBkZXN0X2luY2x1ZGVfZGlyLCBhcmNoPU5vbmUsIHByZWZpeD1Ob25lLCBzdWZmaXg9Tm9uZSk6CisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3JjX2RpciwgZm9sbG93bGlua3M9VHJ1ZSk6CisgICAgICAgIHJlbHJvb3QgPSBvcy5wYXRoLnJlbHBhdGgocm9vdCxzcmNfZGlyKQorCisgICAgICAgIGRlZiBtb3ZlX2RpcihhcmNoLCBwcmVmaXg9JycsIHN1ZmZpeD0nJywgZmlsZXM9W10pOgorICAgICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgZmlsZV9zdWZmaXggPSBOb25lCisgICAgICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgnLmgnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZGVzdF9pbmNsdWRlX2RpcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc3VmZml4ID0gYXJjaAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJjaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzX3NlZW5bZmlsZV0uYWRkKGFyY2gpCisgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlX2ZpbGUocm9vdCwgZGVzdF9pbmNsdWRlX2RpciwgZmlsZSwgYXJjaCwgcHJlZml4PXByZWZpeCwgc3VmZml4PXN1ZmZpeCkKKworICAgICAgICAgICAgICAgIGVsaWYgZGVzdF9kaXI6CisgICAgICAgICAgICAgICAgICAgIG91dHJvb3QgPSBvcy5wYXRoLmpvaW4oZGVzdF9kaXIsIHJlbHJvb3QpCisgICAgICAgICAgICAgICAgICAgIG1vdmVfZmlsZShyb290LCBvdXRyb290LCBmaWxlLCBwcmVmaXg9cHJlZml4LCBzdWZmaXg9c3VmZml4KQorCisgICAgICAgIGlmIHJlbHJvb3QgPT0gJy4nOgorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD1hcmNoLAorICAgICAgICAgICAgICAgICAgICAgZmlsZXM9ZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9cHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PXN1ZmZpeCkKKyAgICAgICAgZWxpZiByZWxyb290ID09ICdhcm0nOgorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD0nYXJtJywKKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD0iI2lmZGVmIF9fYXJtX19cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD0iXG5cbiNlbmRpZiIsCisgICAgICAgICAgICAgICAgICAgICBmaWxlcz1maWxlcykKKyAgICAgICAgZWxpZiByZWxyb290ID09ICd4ODYnOgorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD0naTM4NicsCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9IiNpZiAhZGVmaW5lZChfX2FybV9fKSAmJiBkZWZpbmVkKF9faTM4Nl9fKVxuXG4iLAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PSJcblxuI2VuZGlmIiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzPWZpbGVzKQorCitkZWYgYnVpbGRfdGFyZ2V0KHBsYXRmb3JtKToKKyAgICBkZWYgeGNydW5fY21kKGNtZCk6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3hjcnVuJywgJy1zZGsnLCBwbGF0Zm9ybS5zZGtyb290LCAnLWZpbmQnLCBjbWRdKS5zdHJpcCgpCisKKyAgICBidWlsZF9kaXIgPSAnYnVpbGRfJyArIHBsYXRmb3JtLm5hbWUKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYnVpbGRfZGlyKToKKyAgICAgICAgb3MubWFrZWRpcnMoYnVpbGRfZGlyKQorICAgICAgICBlbnYgPSBkaWN0KENDPXhjcnVuX2NtZCgnY2xhbmcnKSwKKyAgICAgICAgICAgICAgICAgICBMRD14Y3J1bl9jbWQoJ2xkJyksCisgICAgICAgICAgICAgICAgICAgQ0ZMQUdTPSctYXJjaCAlcyAtaXN5c3Jvb3QgJXMgLW1pcGhvbmVvcy12ZXJzaW9uLW1pbj00LjAnICUgKHBsYXRmb3JtLmFyY2gsIHBsYXRmb3JtLnNka3Jvb3QpKQorICAgICAgICB3b3JraW5nX2Rpcj1vcy5nZXRjd2QoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5jaGRpcihidWlsZF9kaXIpCisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWycuLi9jb25maWd1cmUnLCAnLWhvc3QnLCBwbGF0Zm9ybS50cmlwbGVdLCBlbnY9ZW52KQorICAgICAgICAgICAgbW92ZV9zb3VyY2VfdHJlZSgnLicsIE5vbmUsICcuLi9pb3MvaW5jbHVkZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2g9cGxhdGZvcm0uYXJjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4PXBsYXRmb3JtLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4PXBsYXRmb3JtLnN1ZmZpeCkKKyAgICAgICAgICAgIG1vdmVfc291cmNlX3RyZWUoJy4vaW5jbHVkZScsIE5vbmUsICcuLi9pb3MvaW5jbHVkZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaD1wbGF0Zm9ybS5hcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeD1wbGF0Zm9ybS5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4PXBsYXRmb3JtLnN1ZmZpeCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNoZGlyKHdvcmtpbmdfZGlyKQorCisgICAgICAgIGZvciBoZWFkZXJfbmFtZSwgYXJjaHMgaW4gaGVhZGVyc19zZWVuLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgYmFzZW5hbWUsIHN1ZmZpeCA9IG9zLnBhdGguc3BsaXRleHQoaGVhZGVyX25hbWUpCisKK2RlZiBtYWluKCk6CisgICAgbW92ZV9zb3VyY2VfdHJlZSgnc3JjJywgJ2lvcy9zcmMnLCAnaW9zL2luY2x1ZGUnKQorICAgIG1vdmVfc291cmNlX3RyZWUoJ2luY2x1ZGUnLCBOb25lLCAnaW9zL2luY2x1ZGUnKQorICAgIGJ1aWxkX3RhcmdldChzaW11bGF0b3JfcGxhdGZvcm0pCisgICAgYnVpbGRfdGFyZ2V0KGRldmljZV9wbGF0Zm9ybSkKKworICAgIGZvciBoZWFkZXJfbmFtZSwgYXJjaHMgaW4gaGVhZGVyc19zZWVuLml0ZXJpdGVtcygpOgorICAgICAgICBiYXNlbmFtZSwgc3VmZml4ID0gb3MucGF0aC5zcGxpdGV4dChoZWFkZXJfbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbignaW9zL2luY2x1ZGUnLCBoZWFkZXJfbmFtZSksICd3JykgYXMgaGVhZGVyOgorICAgICAgICAgICAgZm9yIGFyY2ggaW4gYXJjaHM6CisgICAgICAgICAgICAgICAgaGVhZGVyLndyaXRlKCcjaW5jbHVkZSA8JXNfJXMlcz5cbicgJSAoYmFzZW5hbWUsIGFyY2gsIHN1ZmZpeCkpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2dlbmVyYXRlLW9zeC1zb3VyY2UtYW5kLWhlYWRlcnMucHkgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2dlbmVyYXRlLW9zeC1zb3VyY2UtYW5kLWhlYWRlcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQzMTNjMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZ2VuZXJhdGUtb3N4LXNvdXJjZS1hbmQtaGVhZGVycy5weQpAQCAtMCwwICsxLDE1MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHJlCitpbXBvcnQgb3MKK2ltcG9ydCBlcnJubworaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgc3lzCisKK2NsYXNzIFBsYXRmb3JtKG9iamVjdCk6CisgICAgcGFzcworCitzZGtfcmUgPSByZS5jb21waWxlKHInLiotc2RrIChbYS16QS1aMC05Ll0qKScpCisKK2RlZiBzZGtpbmZvKHNka25hbWUpOgorICAgIHJldCA9IHt9CisgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5Qb3BlbihbJ3hjb2RlYnVpbGQnLCAnLXNkaycsIHNka25hbWUsICctdmVyc2lvbiddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQ6CisgICAgICAgIGt2ID0gbGluZS5zdHJpcCgpLnNwbGl0KCc6ICcsIDEpCisgICAgICAgIGlmIGxlbihrdikgPT0gMjoKKyAgICAgICAgICAgIGssdiA9IGt2CisgICAgICAgICAgICByZXRba10gPSB2CisgICAgcmV0dXJuIHJldAorCitkZXNrdG9wX3Nka19pbmZvID0gc2RraW5mbygnbWFjb3N4JykKKworZGVmIGxhdGVzdF9zZGtzKCk6CisgICAgbGF0ZXN0X2Rlc2t0b3AgPSBOb25lCisgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5Qb3BlbihbJ3hjb2RlYnVpbGQnLCAnLXNob3dzZGtzJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dDoKKyAgICAgICAgbWF0Y2ggPSBzZGtfcmUubWF0Y2gobGluZSkKKyAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICBpZiAnT1MgWCcgaW4gbGluZToKKyAgICAgICAgICAgICAgICBsYXRlc3RfZGVza3RvcCA9IG1hdGNoLmdyb3VwKDEpCisKKyAgICByZXR1cm4gbGF0ZXN0X2Rlc2t0b3AKKworZGVza3RvcF9zZGsgPSBsYXRlc3Rfc2RrcygpCisKK2NsYXNzIGRlc2t0b3BfcGxhdGZvcm1fMzIoUGxhdGZvcm0pOgorICAgIHNkaz0nbWFjb3N4JworICAgIGFyY2ggPSAnaTM4NicKKyAgICBuYW1lID0gJ21hYzMyJworICAgIHRyaXBsZSA9ICdpMzg2LWFwcGxlLWRhcndpbjEwJworICAgIHNka3Jvb3QgPSBkZXNrdG9wX3Nka19pbmZvWydQYXRoJ10KKworICAgIHByZWZpeCA9ICIjaWYgZGVmaW5lZChfX2kzODZfXykgJiYgIWRlZmluZWQoX194ODZfNjRfXylcblxuIgorICAgIHN1ZmZpeCA9ICJcblxuI2VuZGlmIgorCitjbGFzcyBkZXNrdG9wX3BsYXRmb3JtXzY0KFBsYXRmb3JtKToKKyAgICBzZGs9J21hY29zeCcKKyAgICBhcmNoID0gJ3g4Nl82NCcKKyAgICBuYW1lID0gJ21hYycKKyAgICB0cmlwbGUgPSAneDg2XzY0LWFwcGxlLWRhcndpbjEwJworICAgIHNka3Jvb3QgPSBkZXNrdG9wX3Nka19pbmZvWydQYXRoJ10KKworICAgIHByZWZpeCA9ICIjaWYgIWRlZmluZWQoX19pMzg2X18pICYmIGRlZmluZWQoX194ODZfNjRfXylcblxuIgorICAgIHN1ZmZpeCA9ICJcblxuI2VuZGlmIgorCitkZWYgbW92ZV9maWxlKHNyY19kaXIsIGRzdF9kaXIsIGZpbGVuYW1lLCBmaWxlX3N1ZmZpeD1Ob25lLCBwcmVmaXg9JycsIHN1ZmZpeD0nJyk6CisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdF9kaXIpOgorICAgICAgICBvcy5tYWtlZGlycyhkc3RfZGlyKQorCisgICAgb3V0X2ZpbGVuYW1lID0gZmlsZW5hbWUKKworICAgIGlmIGZpbGVfc3VmZml4OgorICAgICAgICBzcGxpdF9uYW1lID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSkKKyAgICAgICAgb3V0X2ZpbGVuYW1lID0gICIlc18lcyVzIiAlIChzcGxpdF9uYW1lWzBdLCBmaWxlX3N1ZmZpeCwgc3BsaXRfbmFtZVsxXSkKKworICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3JjX2RpciwgZmlsZW5hbWUpKSBhcyBpbl9maWxlOgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRzdF9kaXIsIG91dF9maWxlbmFtZSksICd3JykgYXMgb3V0X2ZpbGU6CisgICAgICAgICAgICBpZiBwcmVmaXg6CisgICAgICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUocHJlZml4KQorCisgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShpbl9maWxlLnJlYWQoKSkKKworICAgICAgICAgICAgaWYgc3VmZml4OgorICAgICAgICAgICAgICAgIG91dF9maWxlLndyaXRlKHN1ZmZpeCkKKworaGVhZGVyc19zZWVuID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3Qoc2V0KQorCitkZWYgbW92ZV9zb3VyY2VfdHJlZShzcmNfZGlyLCBkZXN0X2RpciwgZGVzdF9pbmNsdWRlX2RpciwgYXJjaD1Ob25lLCBwcmVmaXg9Tm9uZSwgc3VmZml4PU5vbmUpOgorICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNyY19kaXIsIGZvbGxvd2xpbmtzPVRydWUpOgorICAgICAgICByZWxyb290ID0gb3MucGF0aC5yZWxwYXRoKHJvb3Qsc3JjX2RpcikKKworICAgICAgICBkZWYgbW92ZV9kaXIoYXJjaCwgcHJlZml4PScnLCBzdWZmaXg9JycsIGZpbGVzPVtdKToKKyAgICAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIGZpbGVfc3VmZml4ID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoJy5oJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGRlc3RfaW5jbHVkZV9kaXI6CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3N1ZmZpeCA9IGFyY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFyY2g6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc19zZWVuW2ZpbGVdLmFkZChhcmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgbW92ZV9maWxlKHJvb3QsIGRlc3RfaW5jbHVkZV9kaXIsIGZpbGUsIGFyY2gsIHByZWZpeD1wcmVmaXgsIHN1ZmZpeD1zdWZmaXgpCisKKyAgICAgICAgICAgICAgICBlbGlmIGRlc3RfZGlyOgorICAgICAgICAgICAgICAgICAgICBvdXRyb290ID0gb3MucGF0aC5qb2luKGRlc3RfZGlyLCByZWxyb290KQorICAgICAgICAgICAgICAgICAgICBtb3ZlX2ZpbGUocm9vdCwgb3V0cm9vdCwgZmlsZSwgcHJlZml4PXByZWZpeCwgc3VmZml4PXN1ZmZpeCkKKworICAgICAgICBpZiByZWxyb290ID09ICcuJzoKKyAgICAgICAgICAgIG1vdmVfZGlyKGFyY2g9YXJjaCwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzPWZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PXByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD1zdWZmaXgpCisgICAgICAgIGVsaWYgcmVscm9vdCA9PSAneDg2JzoKKyAgICAgICAgICAgIG1vdmVfZGlyKGFyY2g9J2kzODYnLAorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSIjaWYgZGVmaW5lZChfX2kzODZfXykgJiYgIWRlZmluZWQoX194ODZfNjRfXylcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD0iXG5cbiNlbmRpZiIsCisgICAgICAgICAgICAgICAgICAgICBmaWxlcz1maWxlcykKKyAgICAgICAgICAgIG1vdmVfZGlyKGFyY2g9J3g4Nl82NCcsCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9IiNpZiAhZGVmaW5lZChfX2kzODZfXykgJiYgZGVmaW5lZChfX3g4Nl82NF9fKVxuXG4iLAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PSJcblxuI2VuZGlmIiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzPWZpbGVzKQorCitkZWYgYnVpbGRfdGFyZ2V0KHBsYXRmb3JtKToKKyAgICBkZWYgeGNydW5fY21kKGNtZCk6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3hjcnVuJywgJy1zZGsnLCBwbGF0Zm9ybS5zZGtyb290LCAnLWZpbmQnLCBjbWRdKS5zdHJpcCgpCisKKyAgICBidWlsZF9kaXIgPSAnYnVpbGRfJyArIHBsYXRmb3JtLm5hbWUKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYnVpbGRfZGlyKToKKyAgICAgICAgb3MubWFrZWRpcnMoYnVpbGRfZGlyKQorICAgICAgICBlbnYgPSBkaWN0KENDPXhjcnVuX2NtZCgnY2xhbmcnKSwKKyAgICAgICAgICAgICAgICAgICBMRD14Y3J1bl9jbWQoJ2xkJyksCisgICAgICAgICAgICAgICAgICAgQ0ZMQUdTPSctYXJjaCAlcyAtaXN5c3Jvb3QgJXMgLW1tYWNvc3gtdmVyc2lvbi1taW49MTAuNicgJSAocGxhdGZvcm0uYXJjaCwgcGxhdGZvcm0uc2Rrcm9vdCkpCisgICAgICAgIHdvcmtpbmdfZGlyPW9zLmdldGN3ZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKGJ1aWxkX2RpcikKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJy4uL2NvbmZpZ3VyZScsICctaG9zdCcsIHBsYXRmb3JtLnRyaXBsZV0sIGVudj1lbnYpCisgICAgICAgICAgICBtb3ZlX3NvdXJjZV90cmVlKCcuJywgTm9uZSwgJy4uL29zeC9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaD1wbGF0Zm9ybS5hcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9cGxhdGZvcm0ucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9cGxhdGZvcm0uc3VmZml4KQorICAgICAgICAgICAgbW92ZV9zb3VyY2VfdHJlZSgnLi9pbmNsdWRlJywgTm9uZSwgJy4uL29zeC9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaD1wbGF0Zm9ybS5hcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9cGxhdGZvcm0ucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9cGxhdGZvcm0uc3VmZml4KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hkaXIod29ya2luZ19kaXIpCisKKyAgICAgICAgZm9yIGhlYWRlcl9uYW1lLCBhcmNocyBpbiBoZWFkZXJzX3NlZW4uaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBiYXNlbmFtZSwgc3VmZml4ID0gb3MucGF0aC5zcGxpdGV4dChoZWFkZXJfbmFtZSkKKworZGVmIG1haW4oKToKKyAgICBtb3ZlX3NvdXJjZV90cmVlKCdzcmMnLCAnb3N4L3NyYycsICdvc3gvaW5jbHVkZScpCisgICAgbW92ZV9zb3VyY2VfdHJlZSgnaW5jbHVkZScsIE5vbmUsICdvc3gvaW5jbHVkZScpCisgICAgYnVpbGRfdGFyZ2V0KGRlc2t0b3BfcGxhdGZvcm1fMzIpCisgICAgYnVpbGRfdGFyZ2V0KGRlc2t0b3BfcGxhdGZvcm1fNjQpCisKKyAgICBmb3IgaGVhZGVyX25hbWUsIGFyY2hzIGluIGhlYWRlcnNfc2Vlbi5pdGVyaXRlbXMoKToKKyAgICAgICAgYmFzZW5hbWUsIHN1ZmZpeCA9IG9zLnBhdGguc3BsaXRleHQoaGVhZGVyX25hbWUpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ29zeC9pbmNsdWRlJywgaGVhZGVyX25hbWUpLCAndycpIGFzIGhlYWRlcjoKKyAgICAgICAgICAgIGZvciBhcmNoIGluIGFyY2hzOgorICAgICAgICAgICAgICAgIGhlYWRlci53cml0ZSgnI2luY2x1ZGUgPCVzXyVzJXM+XG4nICUgKGJhc2VuYW1lLCBhcmNoLCBzdWZmaXgpKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL01ha2VmaWxlLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL01ha2VmaWxlLmluCmluZGV4IDEzNmYzNmMuLjc5ZDQ5M2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9NYWtlZmlsZS5pbgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvTWFrZWZpbGUuaW4KQEAgLTEsOSArMSw5IEBACi0jIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExIGZyb20gTWFrZWZpbGUuYW0uCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjMgZnJvbSBNYWtlZmlsZS5hbS4KICMgQGNvbmZpZ3VyZV9pbnB1dEAKIAogIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCi0jIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSMgSW5jLgorIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpAQCAtMzcsNyArMzcsNyBAQAogdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAogc3ViZGlyID0gaW5jbHVkZQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChzcmNkaXIpL01ha2VmaWxlLmluIFwKLQkkKHNyY2RpcikvZmZpLmguaW4KKwkkKHNyY2RpcikvZmZpLmguaW4gJChzcmNkaXIpL2ZmaV9jb21tb24uaAogQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAogYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvYWNpbmNsdWRlLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwpAQCAtNDYsNyArNDYsNyBAQAogbWtpbnN0YWxsZGlycyA9ICQoaW5zdGFsbF9zaCkgLWQKIENPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvZmZpY29uZmlnLmgKIENPTkZJR19DTEVBTl9GSUxFUyA9IGZmaS5oIGZmaXRhcmdldC5oCi1DT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPQorQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0gZmZpX2NvbW1vbi5oCiBTT1VSQ0VTID0KIERJU1RfU09VUkNFUyA9CiBhbV9fdnBhdGhfYWRqX3NldHVwID0gc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8LnwufGcnYDsKQEAgLTcwLDYgKzcwLDEyIEBACiBhbV9fYmFzZV9saXN0ID0gXAogICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnIHwgXAogICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnCithbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyID0geyBcCisgIHRlc3QgLXogIiQkZmlsZXMiIFwKKyAgICB8fCB7IHRlc3QgISAtZCAiJCRkaXIiICYmIHRlc3QgISAtZiAiJCRkaXIiICYmIHRlc3QgISAtciAiJCRkaXIiOyB9IFwKKyAgICB8fCB7IGVjaG8gIiAoIGNkICckJGRpcicgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCisgICAgICAgICAkKGFtX19jZCkgIiQkZGlyIiAmJiBybSAtZiAkJGZpbGVzOyB9OyBcCisgIH0KIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChpbmNsdWRlc2RpcikiCiBIRUFERVJTID0gJChub2Rpc3RfaW5jbHVkZXNfSEVBREVSUykKIEVUQUdTID0gZXRhZ3MKQEAgLTc4LDYgKzg0LDcgQEAKIEFDTE9DQUwgPSBAQUNMT0NBTEAKIEFMTE9DQSA9IEBBTExPQ0FACiBBTVRBUiA9IEBBTVRBUkAKK0FNX0xUTERGTEFHUyA9IEBBTV9MVExERkxBR1NACiBBTV9SVU5URVNURkxBR1MgPSBAQU1fUlVOVEVTVEZMQUdTQAogQVIgPSBAQVJACiBBVVRPQ09ORiA9IEBBVVRPQ09ORkAKQEAgLTk1LDYgKzEwMiw3IEBACiBDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAogREVGUyA9IEBERUZTQAogREVQRElSID0gQERFUERJUkAKK0RMTFRPT0wgPSBARExMVE9PTEAKIERTWU1VVElMID0gQERTWU1VVElMQAogRFVNUEJJTiA9IEBEVU1QQklOQAogRUNIT19DID0gQEVDSE9fQ0AKQEAgLTEwMiw2ICsxMTAsNyBAQAogRUNIT19UID0gQEVDSE9fVEAKIEVHUkVQID0gQEVHUkVQQAogRVhFRVhUID0gQEVYRUVYVEAKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKIEZHUkVQID0gQEZHUkVQQAogR1JFUCA9IEBHUkVQQAogSEFWRV9MT05HX0RPVUJMRSA9IEBIQVZFX0xPTkdfRE9VQkxFQApAQCAtMTIwLDYgKzEyOSw3IEBACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKK01BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKIE1LRElSX1AgPSBATUtESVJfUEAKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKQEAgLTEzMiw2ICsxNDIsNyBAQAogUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKIFBBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAogUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAogUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKIFBBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAogUkFOTElCID0gQFJBTkxJQkAKQEAgLTE0Niw2ICsxNTcsNyBAQAogYWJzX3NyY2RpciA9IEBhYnNfc3JjZGlyQAogYWJzX3RvcF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxkZGlyQAogYWJzX3RvcF9zcmNkaXIgPSBAYWJzX3RvcF9zcmNkaXJACithY19jdF9BUiA9IEBhY19jdF9BUkAKIGFjX2N0X0NDID0gQGFjX2N0X0NDQAogYWNfY3RfRFVNUEJJTiA9IEBhY19jdF9EVU1QQklOQAogYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACkBAIC0xNzgsNyArMTkwLDYgQEAKIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKIGxvY2FsZWRpciA9IEBsb2NhbGVkaXJACiBsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACi1sdF9FQ0hPID0gQGx0X0VDSE9ACiBtYW5kaXIgPSBAbWFuZGlyQAogbWtkaXJfcCA9IEBta2Rpcl9wQAogb2xkaW5jbHVkZWRpciA9IEBvbGRpbmNsdWRlZGlyQApAQCAtMjYzLDkgKzI3NCw3IEBACiAJQCQoTk9STUFMX1VOSU5TVEFMTCkKIAlAbGlzdD0nJChub2Rpc3RfaW5jbHVkZXNfSEVBREVSUyknOyB0ZXN0IC1uICIkKGluY2x1ZGVzZGlyKSIgfHwgbGlzdD07IFwKIAlmaWxlcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IHNlZCAtZSAnc3xeLiovfHwnYDsgXAotCXRlc3QgLW4gIiQkZmlsZXMiIHx8IGV4aXQgMDsgXAotCWVjaG8gIiAoIGNkICckKERFU1RESVIpJChpbmNsdWRlc2RpciknICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAotCWNkICIkKERFU1RESVIpJChpbmNsdWRlc2RpcikiICYmIHJtIC1mICQkZmlsZXMKKwlkaXI9JyQoREVTVERJUikkKGluY2x1ZGVzZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKIAogSUQ6ICQoSEVBREVSUykgJChTT1VSQ0VTKSAkKExJU1ApICQoVEFHU19GSUxFUykKIAlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVSUykgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXApAQCAtMzY2LDEwICszNzUsMTUgQEAKIAogaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stYW0KIGluc3RhbGwtc3RyaXA6Ci0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKLQkgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAotCSAgYHRlc3QgLXogJyQoU1RSSVApJyB8fCBcCi0JICAgIGVjaG8gIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciYCBpbnN0YWxsCisJaWYgdGVzdCAteiAnJChTVFJJUCknOyB0aGVuIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAgIGluc3RhbGw7IFwKKwllbHNlIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyIgaW5zdGFsbDsgXAorCWZpCiBtb3N0bHljbGVhbi1nZW5lcmljOgogCiBjbGVhbi1nZW5lcmljOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaS5oLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaS5oLmluCmluZGV4IGRmN2QyY2QuLmE1MTU4M2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmkuaC5pbgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpLmguaW4KQEAgLTEsMTYgKzEsMTcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBsaWJmZmkgQFZFUlNJT05AIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMsIDIwMDcsIDIwMDggIFJlZCBIYXQsIEluYy4KKyAgIGxpYmZmaSBAVkVSU0lPTkAgLSBDb3B5cmlnaHQgKGMpIDIwMTEgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICAgICAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzLCAyMDA3LCAyMDA4IFJlZCBIYXQsIEluYy4KIAotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCisgICBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorICAgZmlsZXMgKHRoZSBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0CisgICByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwKKyAgIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcworICAgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAKLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCisgICBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KIAogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKICAgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgpAQCAtNTcsNyArNTgsOSBAQAogI2VuZGlmCiAKIC8qIFNwZWNpZnkgd2hpY2ggYXJjaGl0ZWN0dXJlIGxpYmZmaSBpcyBjb25maWd1cmVkIGZvci4gKi8KKyNpZm5kZWYgQFRBUkdFVEAKICNkZWZpbmUgQFRBUkdFVEAKKyNlbmRpZgogCiAvKiAtLS0tIFN5c3RlbSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC03NSwxNSArNzgsMzEgQEAKIC8qIExPTkdfTE9OR19NQVggaXMgbm90IGFsd2F5cyBkZWZpbmVkIChub3QgaWYgU1RSSUNUX0FOU0ksIGZvciBleGFtcGxlKS4KICAgIEJ1dCB3ZSBjYW4gZmluZCBpdCBlaXRoZXIgdW5kZXIgdGhlIGNvcnJlY3QgQU5TSSBuYW1lLCBvciB1bmRlciBHTlUKICAgIEMncyBpbnRlcm5hbCBuYW1lLiAgKi8KKworI2RlZmluZSBGRklfNjRfQklUX01BWCA5MjIzMzcyMDM2ODU0Nzc1ODA3CisKICNpZmRlZiBMT05HX0xPTkdfTUFYCiAjIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBMT05HX0xPTkdfTUFYCiAjZWxzZQogIyBpZmRlZiBMTE9OR19NQVgKICMgIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBMTE9OR19NQVgKKyMgIGlmZGVmIF9BSVg1MiAvKiBvciBuZXdlciBoYXMgQzk5IExMT05HX01BWCAqLworIyAgIHVuZGVmIEZGSV82NF9CSVRfTUFYCisjICAgZGVmaW5lIEZGSV82NF9CSVRfTUFYIDkyMjMzNzIwMzY4NTQ3NzU4MDdMTAorIyAgZW5kaWYgLyogX0FJWDUyIG9yIG5ld2VyICovCiAjIGVsc2UKICMgIGlmZGVmIF9fR05VQ19fCiAjICAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIF9fTE9OR19MT05HX01BWF9fCiAjICBlbmRpZgorIyAgaWZkZWYgX0FJWCAvKiBBSVggNS4xIGFuZCBlYXJsaWVyIGhhdmUgTE9OR0xPTkdfTUFYICovCisjICAgaWZuZGVmIF9fUFBDNjRfXworIyAgICBpZiBkZWZpbmVkIChfX0lCTUNfXykgfHwgZGVmaW5lZCAoX19JQk1DUFBfXykKKyMgICAgIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBMT05HTE9OR19NQVgKKyMgICAgZW5kaWYKKyMgICBlbmRpZiAvKiBfX1BQQzY0X18gKi8KKyMgICB1bmRlZiAgRkZJXzY0X0JJVF9NQVgKKyMgICBkZWZpbmUgRkZJXzY0X0JJVF9NQVggOTIyMzM3MjAzNjg1NDc3NTgwN0xMCisjICBlbmRpZgogIyBlbmRpZgogI2VuZGlmCiAKQEAgLTEzMCwzOSArMTQ5LDUzIEBACiAjZW5kaWYKIAogI2lmIExPTkdfTUFYID09IDIxNDc0ODM2NDcKLSMgaWYgRkZJX0xPTkdfTE9OR19NQVggIT0gOTIyMzM3MjAzNjg1NDc3NTgwNworIyBpZiBGRklfTE9OR19MT05HX01BWCAhPSBGRklfNjRfQklUX01BWAogICNlcnJvciAibm8gNjQtYml0IGRhdGEgdHlwZSBzdXBwb3J0ZWQiCiAjIGVuZGlmCi0jZWxpZiBMT05HX01BWCAhPSA5MjIzMzcyMDM2ODU0Nzc1ODA3CisjZWxpZiBMT05HX01BWCAhPSBGRklfNjRfQklUX01BWAogICNlcnJvciAibG9uZyBzaXplIG5vdCBzdXBwb3J0ZWQiCiAjZW5kaWYKIAogI2lmIExPTkdfTUFYID09IDIxNDc0ODM2NDcKICMgZGVmaW5lIGZmaV90eXBlX3Vsb25nICAgICAgICBmZmlfdHlwZV91aW50MzIKICMgZGVmaW5lIGZmaV90eXBlX3Nsb25nICAgICAgICBmZmlfdHlwZV9zaW50MzIKLSNlbGlmIExPTkdfTUFYID09IDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyNlbGlmIExPTkdfTUFYID09IEZGSV82NF9CSVRfTUFYCiAjIGRlZmluZSBmZmlfdHlwZV91bG9uZyAgICAgICAgZmZpX3R5cGVfdWludDY0CiAjIGRlZmluZSBmZmlfdHlwZV9zbG9uZyAgICAgICAgZmZpX3R5cGVfc2ludDY0CiAjZWxzZQogICNlcnJvciAibG9uZyBzaXplIG5vdCBzdXBwb3J0ZWQiCiAjZW5kaWYKIAorLyogTmVlZCBtaW5pbWFsIGRlY29yYXRpb25zIGZvciBETExzIHRvIHdvcmtzIG9uIFdpbmRvd3MuICovCisvKiBHQ0MgaGFzIGF1dG9pbXBvcnQgYW5kIGF1dG9leHBvcnQuICBSZWx5IG9uIExpYnRvb2wgdG8gKi8KKy8qIGhlbHAgTVNWQyBleHBvcnQgZnJvbSBhIERMTCwgYnV0IGFsd2F5cyBkZWNsYXJlIGRhdGEgICAqLworLyogdG8gYmUgaW1wb3J0ZWQgZm9yIE1TVkMgY2xpZW50cy4gIFRoaXMgY29zdHMgYW4gZXh0cmEgICovCisvKiBpbmRpcmVjdGlvbiBmb3IgTVNWQyBjbGllbnRzIHVzaW5nIHRoZSBzdGF0aWMgdmVyc2lvbiAgKi8KKy8qIG9mIHRoZSBsaWJyYXJ5LCBidXQgZG9uJ3Qgd29ycnkgYWJvdXQgdGhhdC4gIEJlc2lkZXMsICAqLworLyogYXMgYSB3b3JrYXJvdW5kLCB0aGV5IGNhbiBkZWZpbmUgRkZJX0JVSUxESU5HIGlmIHRoZXkgICovCisvKiAqa25vdyogdGhleSBhcmUgZ29pbmcgdG8gbGluayB3aXRoIHRoZSBzdGF0aWMgbGlicmFyeS4gKi8KKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmICFkZWZpbmVkIEZGSV9CVUlMRElORworI2RlZmluZSBGRklfRVhURVJOIGV4dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNlbHNlCisjZGVmaW5lIEZGSV9FWFRFUk4gZXh0ZXJuCisjZW5kaWYKKwogLyogVGhlc2UgYXJlIGRlZmluZWQgaW4gdHlwZXMuYyAqLwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3ZvaWQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDg7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDg7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDE2OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQxNjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MzI7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDMyOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ2NDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50NjQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfZmxvYXQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfZG91YmxlOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3BvaW50ZXI7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3ZvaWQ7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ4OworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50ODsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDE2OworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50MTY7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3VpbnQzMjsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDMyOworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV91aW50NjQ7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3NpbnQ2NDsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfZmxvYXQ7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX2RvdWJsZTsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfcG9pbnRlcjsKIAogI2lmIEBIQVZFX0xPTkdfRE9VQkxFQAotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX2xvbmdkb3VibGU7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX2xvbmdkb3VibGU7CiAjZWxzZQogI2RlZmluZSBmZmlfdHlwZV9sb25nZG91YmxlIGZmaV90eXBlX2RvdWJsZQogI2VuZGlmCkBAIC0xODgsMTIgKzIyMSwyMSBAQAogI2VuZGlmCiB9IGZmaV9jaWY7CiAKKy8qIFVzZWQgaW50ZXJuYWxseSwgYnV0IG92ZXJyaWRkZW4gYnkgc29tZSBhcmNoaXRlY3R1cmVzICovCitmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9jb3JlKGZmaV9jaWYgKmNpZiwKKwkJCSAgICAgZmZpX2FiaSBhYmksCisJCQkgICAgIHVuc2lnbmVkIGludCBpc3ZhcmlhZGljLAorCQkJICAgICB1bnNpZ25lZCBpbnQgbmZpeGVkYXJncywKKwkJCSAgICAgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MsCisJCQkgICAgIGZmaV90eXBlICpydHlwZSwKKwkJCSAgICAgZmZpX3R5cGUgKiphdHlwZXMpOworCiAvKiAtLS0tIERlZmluaXRpb25zIGZvciB0aGUgcmF3IEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIEZGSV9TSVpFT0ZfQVJHCiAjIGlmIExPTkdfTUFYID09IDIxNDc0ODM2NDcKICMgIGRlZmluZSBGRklfU0laRU9GX0FSRyAgICAgICAgNAotIyBlbGlmIExPTkdfTUFYID09IDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyMgZWxpZiBMT05HX01BWCA9PSBGRklfNjRfQklUX01BWAogIyAgZGVmaW5lIEZGSV9TSVpFT0ZfQVJHICAgICAgICA4CiAjIGVuZGlmCiAjZW5kaWYKQEAgLTI1NSw3ICsyOTcsMTIgQEAKIF9fZGVjbHNwZWMoYWxpZ24oOCkpCiAjZW5kaWYKIHR5cGVkZWYgc3RydWN0IHsKKyNpZiBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKKyAgdm9pZCAqdHJhbXBvbGluZV90YWJsZTsKKyAgdm9pZCAqdHJhbXBvbGluZV90YWJsZV9lbnRyeTsKKyNlbHNlCiAgIGNoYXIgdHJhbXBbRkZJX1RSQU1QT0xJTkVfU0laRV07CisjZW5kaWYKICAgZmZpX2NpZiAgICpjaWY7CiAgIHZvaWQgICAgICgqZnVuKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopOwogICB2b2lkICAgICAgKnVzZXJfZGF0YTsKQEAgLTI2Myw2ICszMTAsOSBAQAogfSBmZmlfY2xvc3VyZSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkICg4KSkpOwogI2Vsc2UKIH0gZmZpX2Nsb3N1cmU7CisjIGlmZGVmIF9fc2dpCisjICBwcmFnbWEgcGFjayAwCisjIGVuZGlmCiAjZW5kaWYKIAogdm9pZCAqZmZpX2Nsb3N1cmVfYWxsb2MgKHNpemVfdCBzaXplLCB2b2lkICoqY29kZSk7CkBAIC0yODEsOSArMzMxLDE2IEBACiAJCSAgICAgIHZvaWQgKnVzZXJfZGF0YSwKIAkJICAgICAgdm9pZCpjb2RlbG9jKTsKIAorI2lmZGVmIF9fc2dpCisjIHByYWdtYSBwYWNrIDgKKyNlbmRpZgogdHlwZWRlZiBzdHJ1Y3QgeworI2lmIEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAorICB2b2lkICp0cmFtcG9saW5lX3RhYmxlOworICB2b2lkICp0cmFtcG9saW5lX3RhYmxlX2VudHJ5OworI2Vsc2UKICAgY2hhciB0cmFtcFtGRklfVFJBTVBPTElORV9TSVpFXTsKLQorI2VuZGlmCiAgIGZmaV9jaWYgICAqY2lmOwogCiAjaWYgIUZGSV9OQVRJVkVfUkFXX0FQSQpAQCAtMzAzLDcgKzM2MCwxMiBAQAogfSBmZmlfcmF3X2Nsb3N1cmU7CiAKIHR5cGVkZWYgc3RydWN0IHsKKyNpZiBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKKyAgdm9pZCAqdHJhbXBvbGluZV90YWJsZTsKKyAgdm9pZCAqdHJhbXBvbGluZV90YWJsZV9lbnRyeTsKKyNlbHNlCiAgIGNoYXIgdHJhbXBbRkZJX1RSQU1QT0xJTkVfU0laRV07CisjZW5kaWYKIAogICBmZmlfY2lmICAgKmNpZjsKIApAQCAtMzU5LDYgKzQyMSwxMyBAQAogCQkJZmZpX3R5cGUgKnJ0eXBlLAogCQkJZmZpX3R5cGUgKiphdHlwZXMpOwogCitmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl92YXIoZmZpX2NpZiAqY2lmLAorCQkJICAgIGZmaV9hYmkgYWJpLAorCQkJICAgIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLAorCQkJICAgIHVuc2lnbmVkIGludCBudG90YWxhcmdzLAorCQkJICAgIGZmaV90eXBlICpydHlwZSwKKwkJCSAgICBmZmlfdHlwZSAqKmF0eXBlcyk7CisKIHZvaWQgZmZpX2NhbGwoZmZpX2NpZiAqY2lmLAogCSAgICAgIHZvaWQgKCpmbikodm9pZCksCiAJICAgICAgdm9pZCAqcnZhbHVlLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaV9jb21tb24uaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmlfY29tbW9uLmgKaW5kZXggNDJjYWNlOS4uYzE3OWQ2OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaV9jb21tb24uaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpX2NvbW1vbi5oCkBAIC0xLDcgKzEsOCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaV9jb21tb24uaCAtIENvcHlyaWdodCAoYykgMTk5NiAgUmVkIEhhdCwgSW5jLgotICAgQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCi0KKyAgIGZmaV9jb21tb24uaCAtIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA3ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYworICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2ICBSZWQgSGF0LCBJbmMuCisgICAgICAgICAgICAgICAgICAKICAgIENvbW1vbiBpbnRlcm5hbCBkZWZpbml0aW9ucyBhbmQgbWFjcm9zLiBPbmx5IG5lY2Vzc2FyeSBmb3IgYnVpbGRpbmcKICAgIGxpYmZmaS4KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC03NCw2ICs3NSw4IEBACiAKIC8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KIGZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXAoZmZpX2NpZiAqY2lmKTsKK2ZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXBfdmFyKGZmaV9jaWYgKmNpZiwKKwkgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsIHVuc2lnbmVkIGludCBudG90YWxhcmdzKTsKIAogLyogRXh0ZW5kZWQgY2lmLCB1c2VkIGluIGNhbGxiYWNrIGZyb20gYXNzZW1ibHkgcm91dGluZSAqLwogdHlwZWRlZiBzdHJ1Y3QKQEAgLTExMiwxMSArMTE1LDE0IEBACiAKIHR5cGVkZWYgZmxvYXQgRkxPQVQzMjsKIAorI2lmbmRlZiBfX0dOVUNfXworI2RlZmluZSBfX2J1aWx0aW5fZXhwZWN0KHgsIGV4cGVjdGVkX3ZhbHVlKSAoeCkKKyNlbmRpZgorI2RlZmluZSBMSUtFTFkoeCkgICAgX19idWlsdGluX2V4cGVjdCghISh4KSwxKQorI2RlZmluZSBVTkxJS0VMWSh4KSAgX19idWlsdGluX2V4cGVjdCgoeCkhPTAsMCkKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKIAogI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbnN0YWxsLXNoIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbnN0YWxsLXNoCmluZGV4IDZlYmU0NmQuLjY3ODFiOTggMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5zdGFsbC1zaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luc3RhbGwtc2gKQEAgLTEsNyArMSw3IEBACiAjIS9iaW4vc2gKICMgaW5zdGFsbCAtIGluc3RhbGwgYSBwcm9ncmFtLCBzY3JpcHQsIG9yIGRhdGFmaWxlCiAKLXNjcmlwdHZlcnNpb249MjAwNC0xMi0xNy4wOQorc2NyaXB0dmVyc2lvbj0yMDA5LTA0LTI4LjIxOyAjIFVUQwogCiAjIFRoaXMgb3JpZ2luYXRlcyBmcm9tIFgxMVI1IChtaXQvdXRpbC9zY3JpcHRzL2luc3RhbGwuc2gpLCB3aGljaCB3YXMKICMgbGF0ZXIgcmVsZWFzZWQgaW4gWDExUjYgKHhjL2NvbmZpZy91dGlsL2luc3RhbGwuc2gpIHdpdGggdGhlCkBAIC0zOSwzOCArMzksNjggQEAKICMgd2hlbiB0aGVyZSBpcyBubyBNYWtlZmlsZS4KICMKICMgVGhpcyBzY3JpcHQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBCU0QgaW5zdGFsbCBzY3JpcHQsIGJ1dCB3YXMgd3JpdHRlbgotIyBmcm9tIHNjcmF0Y2guICBJdCBjYW4gb25seSBpbnN0YWxsIG9uZSBmaWxlIGF0IGEgdGltZSwgYSByZXN0cmljdGlvbgotIyBzaGFyZWQgd2l0aCBtYW55IE9TJ3MgaW5zdGFsbCBwcm9ncmFtcy4KKyMgZnJvbSBzY3JhdGNoLgorCitubD0nCisnCitJRlM9IiAiIgkkbmwiCiAKICMgc2V0IERPSVRQUk9HIHRvIGVjaG8gdG8gdGVzdCB0aGlzIHNjcmlwdAogCiAjIERvbid0IHVzZSA6LSBzaW5jZSA0LjNCU0QgYW5kIGVhcmxpZXIgc2hlbGxzIGRvbid0IGxpa2UgaXQuCi1kb2l0PSIke0RPSVRQUk9HLX0iCitkb2l0PSR7RE9JVFBST0ctfQoraWYgdGVzdCAteiAiJGRvaXQiOyB0aGVuCisgIGRvaXRfZXhlYz1leGVjCitlbHNlCisgIGRvaXRfZXhlYz0kZG9pdAorZmkKIAotIyBwdXQgaW4gYWJzb2x1dGUgcGF0aHMgaWYgeW91IGRvbid0IGhhdmUgdGhlbSBpbiB5b3VyIHBhdGg7IG9yIHVzZSBlbnYuIHZhcnMuCisjIFB1dCBpbiBhYnNvbHV0ZSBmaWxlIG5hbWVzIGlmIHlvdSBkb24ndCBoYXZlIHRoZW0gaW4geW91ciBwYXRoOworIyBvciB1c2UgZW52aXJvbm1lbnQgdmFycy4KIAotbXZwcm9nPSIke01WUFJPRy1tdn0iCi1jcHByb2c9IiR7Q1BQUk9HLWNwfSIKLWNobW9kcHJvZz0iJHtDSE1PRFBST0ctY2htb2R9IgotY2hvd25wcm9nPSIke0NIT1dOUFJPRy1jaG93bn0iCi1jaGdycHByb2c9IiR7Q0hHUlBQUk9HLWNoZ3JwfSIKLXN0cmlwcHJvZz0iJHtTVFJJUFBST0ctc3RyaXB9Igotcm1wcm9nPSIke1JNUFJPRy1ybX0iCi1ta2RpcnByb2c9IiR7TUtESVJQUk9HLW1rZGlyfSIKK2NoZ3JwcHJvZz0ke0NIR1JQUFJPRy1jaGdycH0KK2NobW9kcHJvZz0ke0NITU9EUFJPRy1jaG1vZH0KK2Nob3ducHJvZz0ke0NIT1dOUFJPRy1jaG93bn0KK2NtcHByb2c9JHtDTVBQUk9HLWNtcH0KK2NwcHJvZz0ke0NQUFJPRy1jcH0KK21rZGlycHJvZz0ke01LRElSUFJPRy1ta2Rpcn0KK212cHJvZz0ke01WUFJPRy1tdn0KK3JtcHJvZz0ke1JNUFJPRy1ybX0KK3N0cmlwcHJvZz0ke1NUUklQUFJPRy1zdHJpcH0KIAotY2htb2RjbWQ9IiRjaG1vZHByb2cgMDc1NSIKLWNob3duY21kPQorcG9zaXhfZ2xvYj0nPycKK2luaXRpYWxpemVfcG9zaXhfZ2xvYj0nCisgIHRlc3QgIiRwb3NpeF9nbG9iIiAhPSAiPyIgfHwgeworICAgIGlmIChzZXQgLWYpIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICBwb3NpeF9nbG9iPQorICAgIGVsc2UKKyAgICAgIHBvc2l4X2dsb2I9OgorICAgIGZpCisgIH0KKycKKworcG9zaXhfbWtkaXI9CisKKyMgRGVzaXJlZCBtb2RlIG9mIGluc3RhbGxlZCBmaWxlLgorbW9kZT0wNzU1CisKIGNoZ3JwY21kPQotc3RyaXBjbWQ9CitjaG1vZGNtZD0kY2htb2Rwcm9nCitjaG93bmNtZD0KK212Y21kPSRtdnByb2cKIHJtY21kPSIkcm1wcm9nIC1mIgotbXZjbWQ9IiRtdnByb2ciCitzdHJpcGNtZD0KKwogc3JjPQogZHN0PQogZGlyX2FyZz0KLWRzdGFyZz0KK2RzdF9hcmc9CisKK2NvcHlfb25fY2hhbmdlPWZhbHNlCiBub190YXJnZXRfZGlyZWN0b3J5PQogCi11c2FnZT0iVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFstVF0gU1JDRklMRSBEU1RGSUxFCit1c2FnZT0iXAorVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFstVF0gU1JDRklMRSBEU1RGSUxFCiAgICBvcjogJDAgW09QVElPTl0uLi4gU1JDRklMRVMuLi4gRElSRUNUT1JZCiAgICBvcjogJDAgW09QVElPTl0uLi4gLXQgRElSRUNUT1JZIFNSQ0ZJTEVTLi4uCiAgICBvcjogJDAgW09QVElPTl0uLi4gLWQgRElSRUNUT1JJRVMuLi4KQEAgLTgwLDgxICsxMTAsODYgQEAKIEluIHRoZSA0dGgsIGNyZWF0ZSBESVJFQ1RPUklFUy4KIAogT3B0aW9uczoKLS1jICAgICAgICAgKGlnbm9yZWQpCi0tZCAgICAgICAgIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnN0ZWFkIG9mIGluc3RhbGxpbmcgZmlsZXMuCi0tZyBHUk9VUCAgICRjaGdycHByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIEdST1VQLgotLW0gTU9ERSAgICAkY2htb2Rwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBNT0RFLgotLW8gVVNFUiAgICAkY2hvd25wcm9nIGluc3RhbGxlZCBmaWxlcyB0byBVU0VSLgotLXMgICAgICAgICAkc3RyaXBwcm9nIGluc3RhbGxlZCBmaWxlcy4KLS10IERJUkVDVE9SWSAgaW5zdGFsbCBpbnRvIERJUkVDVE9SWS4KLS1UICAgICAgICAgcmVwb3J0IGFuIGVycm9yIGlmIERTVEZJTEUgaXMgYSBkaXJlY3RvcnkuCi0tLWhlbHAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0LgotLS12ZXJzaW9uICBkaXNwbGF5IHZlcnNpb24gaW5mbyBhbmQgZXhpdC4KKyAgICAgLS1oZWxwICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdC4KKyAgICAgLS12ZXJzaW9uICBkaXNwbGF5IHZlcnNpb24gaW5mbyBhbmQgZXhpdC4KKworICAtYyAgICAgICAgICAgIChpZ25vcmVkKQorICAtQyAgICAgICAgICAgIGluc3RhbGwgb25seSBpZiBkaWZmZXJlbnQgKHByZXNlcnZlIHRoZSBsYXN0IGRhdGEgbW9kaWZpY2F0aW9uIHRpbWUpCisgIC1kICAgICAgICAgICAgY3JlYXRlIGRpcmVjdG9yaWVzIGluc3RlYWQgb2YgaW5zdGFsbGluZyBmaWxlcy4KKyAgLWcgR1JPVVAgICAgICAkY2hncnBwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBHUk9VUC4KKyAgLW0gTU9ERSAgICAgICAkY2htb2Rwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBNT0RFLgorICAtbyBVU0VSICAgICAgICRjaG93bnByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIFVTRVIuCisgIC1zICAgICAgICAgICAgJHN0cmlwcHJvZyBpbnN0YWxsZWQgZmlsZXMuCisgIC10IERJUkVDVE9SWSAgaW5zdGFsbCBpbnRvIERJUkVDVE9SWS4KKyAgLVQgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IgaWYgRFNURklMRSBpcyBhIGRpcmVjdG9yeS4KIAogRW52aXJvbm1lbnQgdmFyaWFibGVzIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNvbW1hbmRzOgotICBDSEdSUFBST0cgQ0hNT0RQUk9HIENIT1dOUFJPRyBDUFBST0cgTUtESVJQUk9HIE1WUFJPRyBSTVBST0cgU1RSSVBQUk9HCisgIENIR1JQUFJPRyBDSE1PRFBST0cgQ0hPV05QUk9HIENNUFBST0cgQ1BQUk9HIE1LRElSUFJPRyBNVlBST0cKKyAgUk1QUk9HIFNUUklQUFJPRwogIgogCi13aGlsZSB0ZXN0IC1uICIkMSI7IGRvCit3aGlsZSB0ZXN0ICQjIC1uZSAwOyBkbwogICBjYXNlICQxIGluCi0gICAgLWMpIHNoaWZ0Ci0gICAgICAgIGNvbnRpbnVlOzsKKyAgICAtYykgOzsKIAotICAgIC1kKSBkaXJfYXJnPXRydWUKLSAgICAgICAgc2hpZnQKLSAgICAgICAgY29udGludWU7OworICAgIC1DKSBjb3B5X29uX2NoYW5nZT10cnVlOzsKKworICAgIC1kKSBkaXJfYXJnPXRydWU7OwogCiAgICAgLWcpIGNoZ3JwY21kPSIkY2hncnBwcm9nICQyIgotICAgICAgICBzaGlmdAotICAgICAgICBzaGlmdAotICAgICAgICBjb250aW51ZTs7CisJc2hpZnQ7OwogCi0gICAgLS1oZWxwKSBlY2hvICIkdXNhZ2UiOyBleGl0IDA7OworICAgIC0taGVscCkgZWNobyAiJHVzYWdlIjsgZXhpdCAkPzs7CiAKLSAgICAtbSkgY2htb2RjbWQ9IiRjaG1vZHByb2cgJDIiCi0gICAgICAgIHNoaWZ0Ci0gICAgICAgIHNoaWZ0Ci0gICAgICAgIGNvbnRpbnVlOzsKKyAgICAtbSkgbW9kZT0kMgorCWNhc2UgJG1vZGUgaW4KKwkgIConICcqIHwgKicJJyogfCAqJworJyoJICB8IConKicqIHwgKic/JyogfCAqJ1snKikKKwkgICAgZWNobyAiJDA6IGludmFsaWQgbW9kZTogJG1vZGUiID4mMgorCSAgICBleGl0IDE7OworCWVzYWMKKwlzaGlmdDs7CiAKICAgICAtbykgY2hvd25jbWQ9IiRjaG93bnByb2cgJDIiCi0gICAgICAgIHNoaWZ0Ci0gICAgICAgIHNoaWZ0Ci0gICAgICAgIGNvbnRpbnVlOzsKKwlzaGlmdDs7CiAKLSAgICAtcykgc3RyaXBjbWQ9JHN0cmlwcHJvZwotICAgICAgICBzaGlmdAotICAgICAgICBjb250aW51ZTs7CisgICAgLXMpIHN0cmlwY21kPSRzdHJpcHByb2c7OwogCi0gICAgLXQpIGRzdGFyZz0kMgotCXNoaWZ0Ci0Jc2hpZnQKLQljb250aW51ZTs7CisgICAgLXQpIGRzdF9hcmc9JDIKKwlzaGlmdDs7CiAKLSAgICAtVCkgbm9fdGFyZ2V0X2RpcmVjdG9yeT10cnVlCi0Jc2hpZnQKLQljb250aW51ZTs7CisgICAgLVQpIG5vX3RhcmdldF9kaXJlY3Rvcnk9dHJ1ZTs7CiAKLSAgICAtLXZlcnNpb24pIGVjaG8gIiQwICRzY3JpcHR2ZXJzaW9uIjsgZXhpdCAwOzsKKyAgICAtLXZlcnNpb24pIGVjaG8gIiQwICRzY3JpcHR2ZXJzaW9uIjsgZXhpdCAkPzs7CiAKLSAgICAqKSAgIyBXaGVuIC1kIGlzIHVzZWQsIGFsbCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBkaXJlY3RvcmllcyB0byBjcmVhdGUuCi0JIyBXaGVuIC10IGlzIHVzZWQsIHRoZSBkZXN0aW5hdGlvbiBpcyBhbHJlYWR5IHNwZWNpZmllZC4KLQl0ZXN0IC1uICIkZGlyX2FyZyRkc3RhcmciICYmIGJyZWFrCi0gICAgICAgICMgT3RoZXJ3aXNlLCB0aGUgbGFzdCBhcmd1bWVudCBpcyB0aGUgZGVzdGluYXRpb24uICBSZW1vdmUgaXQgZnJvbSAkQC4KLQlmb3IgYXJnCi0JZG8KLSAgICAgICAgICBpZiB0ZXN0IC1uICIkZHN0YXJnIjsgdGhlbgotCSAgICAjICRAIGlzIG5vdCBlbXB0eTogaXQgY29udGFpbnMgYXQgbGVhc3QgJGFyZy4KLQkgICAgc2V0IGZub3JkICIkQCIgIiRkc3RhcmciCi0JICAgIHNoaWZ0ICMgZm5vcmQKLQkgIGZpCi0JICBzaGlmdCAjIGFyZwotCSAgZHN0YXJnPSRhcmcKLQlkb25lCisgICAgLS0pCXNoaWZ0CiAJYnJlYWs7OworCisgICAgLSopCWVjaG8gIiQwOiBpbnZhbGlkIG9wdGlvbjogJDEiID4mMgorCWV4aXQgMTs7CisKKyAgICAqKSAgYnJlYWs7OwogICBlc2FjCisgIHNoaWZ0CiBkb25lCiAKLWlmIHRlc3QgLXogIiQxIjsgdGhlbgoraWYgdGVzdCAkIyAtbmUgMCAmJiB0ZXN0IC16ICIkZGlyX2FyZyRkc3RfYXJnIjsgdGhlbgorICAjIFdoZW4gLWQgaXMgdXNlZCwgYWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZS4KKyAgIyBXaGVuIC10IGlzIHVzZWQsIHRoZSBkZXN0aW5hdGlvbiBpcyBhbHJlYWR5IHNwZWNpZmllZC4KKyAgIyBPdGhlcndpc2UsIHRoZSBsYXN0IGFyZ3VtZW50IGlzIHRoZSBkZXN0aW5hdGlvbi4gIFJlbW92ZSBpdCBmcm9tICRALgorICBmb3IgYXJnCisgIGRvCisgICAgaWYgdGVzdCAtbiAiJGRzdF9hcmciOyB0aGVuCisgICAgICAjICRAIGlzIG5vdCBlbXB0eTogaXQgY29udGFpbnMgYXQgbGVhc3QgJGFyZy4KKyAgICAgIHNldCBmbm9yZCAiJEAiICIkZHN0X2FyZyIKKyAgICAgIHNoaWZ0ICMgZm5vcmQKKyAgICBmaQorICAgIHNoaWZ0ICMgYXJnCisgICAgZHN0X2FyZz0kYXJnCisgIGRvbmUKK2ZpCisKK2lmIHRlc3QgJCMgLWVxIDA7IHRoZW4KICAgaWYgdGVzdCAteiAiJGRpcl9hcmciOyB0aGVuCiAgICAgZWNobyAiJDA6IG5vIGlucHV0IGZpbGUgc3BlY2lmaWVkLiIgPiYyCiAgICAgZXhpdCAxCkBAIC0xNjQsMjQgKzE5OSw0NyBAQAogICBleGl0IDAKIGZpCiAKK2lmIHRlc3QgLXogIiRkaXJfYXJnIjsgdGhlbgorICB0cmFwICcoZXhpdCAkPyk7IGV4aXQnIDEgMiAxMyAxNQorCisgICMgU2V0IHVtYXNrIHNvIGFzIG5vdCB0byBjcmVhdGUgdGVtcHMgd2l0aCB0b28tZ2VuZXJvdXMgbW9kZXMuCisgICMgSG93ZXZlciwgJ3N0cmlwJyByZXF1aXJlcyBib3RoIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byB0ZW1wcy4KKyAgY2FzZSAkbW9kZSBpbgorICAgICMgT3B0aW1pemUgY29tbW9uIGNhc2VzLgorICAgICo2NDQpIGNwX3VtYXNrPTEzMzs7CisgICAgKjc1NSkgY3BfdW1hc2s9MjI7OworCisgICAgKlswLTddKQorICAgICAgaWYgdGVzdCAteiAiJHN0cmlwY21kIjsgdGhlbgorCXVfcGx1c19ydz0KKyAgICAgIGVsc2UKKwl1X3BsdXNfcnc9JyUgMjAwJworICAgICAgZmkKKyAgICAgIGNwX3VtYXNrPWBleHByICcoJyA3NzcgLSAkbW9kZSAlIDEwMDAgJyknICR1X3BsdXNfcndgOzsKKyAgICAqKQorICAgICAgaWYgdGVzdCAteiAiJHN0cmlwY21kIjsgdGhlbgorCXVfcGx1c19ydz0KKyAgICAgIGVsc2UKKwl1X3BsdXNfcnc9LHUrcncKKyAgICAgIGZpCisgICAgICBjcF91bWFzaz0kbW9kZSR1X3BsdXNfcnc7OworICBlc2FjCitmaQorCiBmb3Igc3JjCiBkbwogICAjIFByb3RlY3QgbmFtZXMgc3RhcnRpbmcgd2l0aCBgLScuCiAgIGNhc2UgJHNyYyBpbgotICAgIC0qKSBzcmM9Li8kc3JjIDs7CisgICAgLSopIHNyYz0uLyRzcmM7OwogICBlc2FjCiAKICAgaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCiAgICAgZHN0PSRzcmMKLSAgICBzcmM9Ci0KLSAgICBpZiB0ZXN0IC1kICIkZHN0IjsgdGhlbgotICAgICAgbWtkaXJjbWQ9OgotICAgICAgY2htb2RjbWQ9Ci0gICAgZWxzZQotICAgICAgbWtkaXJjbWQ9JG1rZGlycHJvZwotICAgIGZpCisgICAgZHN0ZGlyPSRkc3QKKyAgICB0ZXN0IC1kICIkZHN0ZGlyIgorICAgIGRzdGRpcl9zdGF0dXM9JD8KICAgZWxzZQorCiAgICAgIyBXYWl0aW5nIGZvciB0aGlzIHRvIGJlIGRldGVjdGVkIGJ5IHRoZSAiJGNwcHJvZyAkc3JjICRkc3R0bXAiIGNvbW1hbmQKICAgICAjIG1pZ2h0IGNhdXNlIGRpcmVjdG9yaWVzIHRvIGJlIGNyZWF0ZWQsIHdoaWNoIHdvdWxkIGJlIGVzcGVjaWFsbHkgYmFkCiAgICAgIyBpZiAkc3JjIChhbmQgdGh1cyAkZHN0dG1wKSBjb250YWlucyAnKicuCkBAIC0xOTAsNzEgKzI0OCwxOTkgQEAKICAgICAgIGV4aXQgMQogICAgIGZpCiAKLSAgICBpZiB0ZXN0IC16ICIkZHN0YXJnIjsgdGhlbgorICAgIGlmIHRlc3QgLXogIiRkc3RfYXJnIjsgdGhlbgogICAgICAgZWNobyAiJDA6IG5vIGRlc3RpbmF0aW9uIHNwZWNpZmllZC4iID4mMgogICAgICAgZXhpdCAxCiAgICAgZmkKIAotICAgIGRzdD0kZHN0YXJnCisgICAgZHN0PSRkc3RfYXJnCiAgICAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgogICAgIGNhc2UgJGRzdCBpbgotICAgICAgLSopIGRzdD0uLyRkc3QgOzsKKyAgICAgIC0qKSBkc3Q9Li8kZHN0OzsKICAgICBlc2FjCiAKICAgICAjIElmIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5LCBhcHBlbmQgdGhlIGlucHV0IGZpbGVuYW1lOyB3b24ndCB3b3JrCiAgICAgIyBpZiBkb3VibGUgc2xhc2hlcyBhcmVuJ3QgaWdub3JlZC4KICAgICBpZiB0ZXN0IC1kICIkZHN0IjsgdGhlbgogICAgICAgaWYgdGVzdCAtbiAiJG5vX3RhcmdldF9kaXJlY3RvcnkiOyB0aGVuCi0JZWNobyAiJDA6ICRkc3Rhcmc6IElzIGEgZGlyZWN0b3J5IiA+JjIKKwllY2hvICIkMDogJGRzdF9hcmc6IElzIGEgZGlyZWN0b3J5IiA+JjIKIAlleGl0IDEKICAgICAgIGZpCi0gICAgICBkc3Q9JGRzdC9gYmFzZW5hbWUgIiRzcmMiYAorICAgICAgZHN0ZGlyPSRkc3QKKyAgICAgIGRzdD0kZHN0ZGlyL2BiYXNlbmFtZSAiJHNyYyJgCisgICAgICBkc3RkaXJfc3RhdHVzPTAKKyAgICBlbHNlCisgICAgICAjIFByZWZlciBkaXJuYW1lLCBidXQgZmFsbCBiYWNrIG9uIGEgc3Vic3RpdHV0ZSBpZiBkaXJuYW1lIGZhaWxzLgorICAgICAgZHN0ZGlyPWAKKwkoZGlybmFtZSAiJGRzdCIpIDI+L2Rldi9udWxsIHx8CisJZXhwciBYIiRkc3QiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisJICAgICBYIiRkc3QiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJICAgICBYIiRkc3QiIDogJ1hcKC8vXCkkJyBcfCBcCisJICAgICBYIiRkc3QiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorCWVjaG8gWCIkZHN0IiB8CisJICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSAvXlhcKFwvXC9cKVteL10uKi97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSAvXlhcKFwvXC9cKSQveworCQkgICBzLy9cMS8KKwkJICAgcQorCQkgfQorCQkgL15YXChcL1wpLioveworCQkgICBzLy9cMS8KKwkJICAgcQorCQkgfQorCQkgcy8uKi8uLzsgcScKKyAgICAgIGAKKworICAgICAgdGVzdCAtZCAiJGRzdGRpciIKKyAgICAgIGRzdGRpcl9zdGF0dXM9JD8KICAgICBmaQogICBmaQogCi0gICMgVGhpcyBzZWQgY29tbWFuZCBlbXVsYXRlcyB0aGUgZGlybmFtZSBjb21tYW5kLgotICBkc3RkaXI9YGVjaG8gIiRkc3QiIHwgc2VkIC1lICdzLC8qJCwsO3MsW14vXSokLCw7cywvKiQsLDtzLF4kLC4sJ2AKKyAgb2Jzb2xldGVfbWtkaXJfdXNlZD1mYWxzZQogCi0gICMgTWFrZSBzdXJlIHRoYXQgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBleGlzdHMuCisgIGlmIHRlc3QgJGRzdGRpcl9zdGF0dXMgIT0gMDsgdGhlbgorICAgIGNhc2UgJHBvc2l4X21rZGlyIGluCisgICAgICAnJykKKwkjIENyZWF0ZSBpbnRlcm1lZGlhdGUgZGlycyB1c2luZyBtb2RlIDc1NSBhcyBtb2RpZmllZCBieSB0aGUgdW1hc2suCisJIyBUaGlzIGlzIGxpa2UgRnJlZUJTRCAnaW5zdGFsbCcgYXMgb2YgMTk5Ny0xMC0yOC4KKwl1bWFzaz1gdW1hc2tgCisJY2FzZSAkc3RyaXBjbWQuJHVtYXNrIGluCisJICAjIE9wdGltaXplIGNvbW1vbiBjYXNlcy4KKwkgICpbMjM2N11bMjM2N10pIG1rZGlyX3VtYXNrPSR1bWFzazs7CisJICAuKjBbMDJdWzAyXSB8IC5bMDJdWzAyXSB8IC5bMDJdKSBta2Rpcl91bWFzaz0yMjs7CiAKLSAgIyBTa2lwIGxvdHMgb2Ygc3RhdCBjYWxscyBpbiB0aGUgdXN1YWwgY2FzZS4KLSAgaWYgdGVzdCAhIC1kICIkZHN0ZGlyIjsgdGhlbgotICAgIGRlZmF1bHRJRlM9JwotCSAnCi0gICAgSUZTPSIke0lGUy0kZGVmYXVsdElGU30iCisJICAqWzAtN10pCisJICAgIG1rZGlyX3VtYXNrPWBleHByICR1bWFzayArIDIyIFwKKwkgICAgICAtICR1bWFzayAlIDEwMCAlIDQwICsgJHVtYXNrICUgMjAgXAorCSAgICAgIC0gJHVtYXNrICUgMTAgJSA0ICsgJHVtYXNrICUgMgorCSAgICBgOzsKKwkgICopIG1rZGlyX3VtYXNrPSR1bWFzayxnby13OzsKKwllc2FjCiAKLSAgICBvSUZTPSRJRlMKLSAgICAjIFNvbWUgc2gncyBjYW4ndCBoYW5kbGUgSUZTPS8gZm9yIHNvbWUgcmVhc29uLgotICAgIElGUz0nJScKLSAgICBzZXQgeCBgZWNobyAiJGRzdGRpciIgfCBzZWQgLWUgJ3NAL0AlQGcnIC1lICdzQF4lQC9AJ2AKLSAgICBzaGlmdAotICAgIElGUz0kb0lGUworCSMgV2l0aCAtZCwgY3JlYXRlIHRoZSBuZXcgZGlyZWN0b3J5IHdpdGggdGhlIHVzZXItc3BlY2lmaWVkIG1vZGUuCisJIyBPdGhlcndpc2UsIHJlbHkgb24gJG1rZGlyX3VtYXNrLgorCWlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgorCSAgbWtkaXJfbW9kZT0tbSRtb2RlCisJZWxzZQorCSAgbWtkaXJfbW9kZT0KKwlmaQogCi0gICAgcGF0aGNvbXA9CisJcG9zaXhfbWtkaXI9ZmFsc2UKKwljYXNlICR1bWFzayBpbgorCSAgKlsxMjM1NjddWzAtN11bMC03XSkKKwkgICAgIyBQT1NJWCBta2RpciAtcCBzZXRzIHUrd3ggYml0cyByZWdhcmRsZXNzIG9mIHVtYXNrLCB3aGljaAorCSAgICAjIGlzIGluY29tcGF0aWJsZSB3aXRoIEZyZWVCU0QgJ2luc3RhbGwnIHdoZW4gKHVtYXNrICYgMzAwKSAhPSAwLgorCSAgICA7OworCSAgKikKKwkgICAgdG1wZGlyPSR7VE1QRElSLS90bXB9L2lucyRSQU5ET00tJCQKKwkgICAgdHJhcCAncmV0PSQ/OyBybWRpciAiJHRtcGRpci9kIiAiJHRtcGRpciIgMj4vZGV2L251bGw7IGV4aXQgJHJldCcgMAogCi0gICAgd2hpbGUgdGVzdCAkIyAtbmUgMCA7IGRvCi0gICAgICBwYXRoY29tcD0kcGF0aGNvbXAkMQorCSAgICBpZiAodW1hc2sgJG1rZGlyX3VtYXNrICYmCisJCWV4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJHRtcGRpci9kIikgPi9kZXYvbnVsbCAyPiYxCisJICAgIHRoZW4KKwkgICAgICBpZiB0ZXN0IC16ICIkZGlyX2FyZyIgfHwgeworCQkgICAjIENoZWNrIGZvciBQT1NJWCBpbmNvbXBhdGliaWxpdGllcyB3aXRoIC1tLgorCQkgICAjIEhQLVVYIDExLjIzIGFuZCBJUklYIDYuNSBta2RpciAtbSAtcCBzZXRzIGdyb3VwLSBvcgorCQkgICAjIG90aGVyLXdyaXRlYWJsZSBiaXQgb2YgcGFyZW50IGRpcmVjdG9yeSB3aGVuIGl0IHNob3VsZG4ndC4KKwkJICAgIyBGcmVlQlNEIDYuMSBta2RpciAtbSAtcCBzZXRzIG1vZGUgb2YgZXhpc3RpbmcgZGlyZWN0b3J5LgorCQkgICBsc19sZF90bXBkaXI9YGxzIC1sZCAiJHRtcGRpciJgCisJCSAgIGNhc2UgJGxzX2xkX3RtcGRpciBpbgorCQkgICAgIGQ/Pz8/LT9yLSopIGRpZmZlcmVudF9tb2RlPTcwMDs7CisJCSAgICAgZD8/Pz8tPy0tKikgZGlmZmVyZW50X21vZGU9NzU1OzsKKwkJICAgICAqKSBmYWxzZTs7CisJCSAgIGVzYWMgJiYKKwkJICAgJG1rZGlycHJvZyAtbSRkaWZmZXJlbnRfbW9kZSAtcCAtLSAiJHRtcGRpciIgJiYgeworCQkgICAgIGxzX2xkX3RtcGRpcl8xPWBscyAtbGQgIiR0bXBkaXIiYAorCQkgICAgIHRlc3QgIiRsc19sZF90bXBkaXIiID0gIiRsc19sZF90bXBkaXJfMSIKKwkJICAgfQorCQkgfQorCSAgICAgIHRoZW4gcG9zaXhfbWtkaXI9OgorCSAgICAgIGZpCisJICAgICAgcm1kaXIgIiR0bXBkaXIvZCIgIiR0bXBkaXIiCisJICAgIGVsc2UKKwkgICAgICAjIFJlbW92ZSBhbnkgZGlycyBsZWZ0IGJlaGluZCBieSBhbmNpZW50IG1rZGlyIGltcGxlbWVudGF0aW9ucy4KKwkgICAgICBybWRpciAuLyRta2Rpcl9tb2RlIC4vLXAgLi8tLSAyPi9kZXYvbnVsbAorCSAgICBmaQorCSAgICB0cmFwICcnIDA7OworCWVzYWM7OworICAgIGVzYWMKKworICAgIGlmCisgICAgICAkcG9zaXhfbWtkaXIgJiYgKAorCXVtYXNrICRta2Rpcl91bWFzayAmJgorCSRkb2l0X2V4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJGRzdGRpciIKKyAgICAgICkKKyAgICB0aGVuIDoKKyAgICBlbHNlCisKKyAgICAgICMgVGhlIHVtYXNrIGlzIHJpZGljdWxvdXMsIG9yIG1rZGlyIGRvZXMgbm90IGNvbmZvcm0gdG8gUE9TSVgsCisgICAgICAjIG9yIGl0IGZhaWxlZCBwb3NzaWJseSBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbi4gIENyZWF0ZSB0aGUKKyAgICAgICMgZGlyZWN0b3J5IHRoZSBzbG93IHdheSwgc3RlcCBieSBzdGVwLCBjaGVja2luZyBmb3IgcmFjZXMgYXMgd2UgZ28uCisKKyAgICAgIGNhc2UgJGRzdGRpciBpbgorCS8qKSBwcmVmaXg9Jy8nOzsKKwktKikgcHJlZml4PScuLyc7OworCSopICBwcmVmaXg9Jyc7OworICAgICAgZXNhYworCisgICAgICBldmFsICIkaW5pdGlhbGl6ZV9wb3NpeF9nbG9iIgorCisgICAgICBvSUZTPSRJRlMKKyAgICAgIElGUz0vCisgICAgICAkcG9zaXhfZ2xvYiBzZXQgLWYKKyAgICAgIHNldCBmbm9yZCAkZHN0ZGlyCiAgICAgICBzaGlmdAotICAgICAgaWYgdGVzdCAhIC1kICIkcGF0aGNvbXAiOyB0aGVuCi0gICAgICAgICRta2RpcnByb2cgIiRwYXRoY29tcCIKLQkjIG1rZGlyIGNhbiBmYWlsIHdpdGggYSBgRmlsZSBleGlzdCcgZXJyb3IgaW4gY2FzZSBzZXZlcmFsCi0JIyBpbnN0YWxsLXNoIGFyZSBjcmVhdGluZyB0aGUgZGlyZWN0b3J5IGNvbmN1cnJlbnRseS4gIFRoaXMKLQkjIGlzIE9LLgotCXRlc3QgLWQgIiRwYXRoY29tcCIgfHwgZXhpdAorICAgICAgJHBvc2l4X2dsb2Igc2V0ICtmCisgICAgICBJRlM9JG9JRlMKKworICAgICAgcHJlZml4ZXM9CisKKyAgICAgIGZvciBkCisgICAgICBkbworCXRlc3QgLXogIiRkIiAmJiBjb250aW51ZQorCisJcHJlZml4PSRwcmVmaXgkZAorCWlmIHRlc3QgLWQgIiRwcmVmaXgiOyB0aGVuCisJICBwcmVmaXhlcz0KKwllbHNlCisJICBpZiAkcG9zaXhfbWtkaXI7IHRoZW4KKwkgICAgKHVtYXNrPSRta2Rpcl91bWFzayAmJgorCSAgICAgJGRvaXRfZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkZHN0ZGlyIikgJiYgYnJlYWsKKwkgICAgIyBEb24ndCBmYWlsIGlmIHR3byBpbnN0YW5jZXMgYXJlIHJ1bm5pbmcgY29uY3VycmVudGx5LgorCSAgICB0ZXN0IC1kICIkcHJlZml4IiB8fCBleGl0IDEKKwkgIGVsc2UKKwkgICAgY2FzZSAkcHJlZml4IGluCisJICAgICAgKlwnKikgcXByZWZpeD1gZWNobyAiJHByZWZpeCIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OworCSAgICAgICopIHFwcmVmaXg9JHByZWZpeDs7CisJICAgIGVzYWMKKwkgICAgcHJlZml4ZXM9IiRwcmVmaXhlcyAnJHFwcmVmaXgnIgorCSAgZmkKKwlmaQorCXByZWZpeD0kcHJlZml4LworICAgICAgZG9uZQorCisgICAgICBpZiB0ZXN0IC1uICIkcHJlZml4ZXMiOyB0aGVuCisJIyBEb24ndCBmYWlsIGlmIHR3byBpbnN0YW5jZXMgYXJlIHJ1bm5pbmcgY29uY3VycmVudGx5LgorCSh1bWFzayAkbWtkaXJfdW1hc2sgJiYKKwkgZXZhbCAiXCRkb2l0X2V4ZWMgXCRta2RpcnByb2cgJHByZWZpeGVzIikgfHwKKwkgIHRlc3QgLWQgIiRkc3RkaXIiIHx8IGV4aXQgMQorCW9ic29sZXRlX21rZGlyX3VzZWQ9dHJ1ZQogICAgICAgZmkKLSAgICAgIHBhdGhjb21wPSRwYXRoY29tcC8KLSAgICBkb25lCisgICAgZmkKICAgZmkKIAogICBpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KLSAgICAkZG9pdCAkbWtkaXJjbWQgIiRkc3QiIFwKLSAgICAgICYmIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3QiOyB9IFwKLSAgICAgICYmIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hncnBjbWQgIiRkc3QiOyB9IFwKLSAgICAgICYmIHsgdGVzdCAteiAiJHN0cmlwY21kIiB8fCAkZG9pdCAkc3RyaXBjbWQgIiRkc3QiOyB9IFwKLSAgICAgICYmIHsgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgIiRkc3QiOyB9Ci0KKyAgICB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIkZHN0IjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hncnBjbWQgIiRkc3QiOyB9ICYmCisgICAgeyB0ZXN0ICIkb2Jzb2xldGVfbWtkaXJfdXNlZCRjaG93bmNtZCRjaGdycGNtZCIgPSBmYWxzZSB8fAorICAgICAgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgJG1vZGUgIiRkc3QiOyB9IHx8IGV4aXQgMQogICBlbHNlCi0gICAgZHN0ZmlsZT1gYmFzZW5hbWUgIiRkc3QiYAogCiAgICAgIyBNYWtlIGEgY291cGxlIG9mIHRlbXAgZmlsZSBuYW1lcyBpbiB0aGUgcHJvcGVyIGRpcmVjdG9yeS4KICAgICBkc3R0bXA9JGRzdGRpci9faW5zdC4kJF8KQEAgLTI2MiwxMCArNDQ4LDkgQEAKIAogICAgICMgVHJhcCB0byBjbGVhbiB1cCB0aG9zZSB0ZW1wIGZpbGVzIGF0IGV4aXQuCiAgICAgdHJhcCAncmV0PSQ/OyBybSAtZiAiJGRzdHRtcCIgIiRybXRtcCIgJiYgZXhpdCAkcmV0JyAwCi0gICAgdHJhcCAnKGV4aXQgJD8pOyBleGl0JyAxIDIgMTMgMTUKIAogICAgICMgQ29weSB0aGUgZmlsZSBuYW1lIHRvIHRoZSB0ZW1wIG5hbWUuCi0gICAgJGRvaXQgJGNwcHJvZyAiJHNyYyIgIiRkc3R0bXAiICYmCisgICAgKHVtYXNrICRjcF91bWFzayAmJiAkZG9pdF9leGVjICRjcHByb2cgIiRzcmMiICIkZHN0dG1wIikgJiYKIAogICAgICMgYW5kIHNldCBhbnkgb3B0aW9uczsgZG8gY2htb2QgbGFzdCB0byBwcmVzZXJ2ZSBzZXR1aWQgYml0cy4KICAgICAjCkBAIC0yNzMsNTEgKzQ1OCw2MyBAQAogICAgICMgaWdub3JlIGVycm9ycyBmcm9tIGFueSBvZiB0aGVzZSwganVzdCBtYWtlIHN1cmUgbm90IHRvIGlnbm9yZQogICAgICMgZXJyb3JzIGZyb20gdGhlIGFib3ZlICIkZG9pdCAkY3Bwcm9nICRzcmMgJGRzdHRtcCIgY29tbWFuZC4KICAgICAjCi0gICAgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdHRtcCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdHRtcCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkc3RyaXBjbWQiIHx8ICRkb2l0ICRzdHJpcGNtZCAiJGRzdHRtcCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hncnBjbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkc3RyaXBjbWQiIHx8ICRkb2l0ICRzdHJpcGNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRjaG1vZGNtZCIgfHwgJGRvaXQgJGNobW9kY21kICRtb2RlICIkZHN0dG1wIjsgfSAmJgogCi0gICAgIyBOb3cgcmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgotICAgIHsgJGRvaXQgJG12Y21kIC1mICIkZHN0dG1wIiAiJGRzdGRpci8kZHN0ZmlsZSIgMj4vZGV2L251bGwgXAotICAgICAgfHwgewotCSAgICMgVGhlIHJlbmFtZSBmYWlsZWQsIHBlcmhhcHMgYmVjYXVzZSBtdiBjYW4ndCByZW5hbWUgc29tZXRoaW5nIGVsc2UKLQkgICAjIHRvIGl0c2VsZiwgb3IgcGVyaGFwcyBiZWNhdXNlIG12IGlzIHNvIGFuY2llbnQgdGhhdCBpdCBkb2VzIG5vdAotCSAgICMgc3VwcG9ydCAtZi4KKyAgICAjIElmIC1DLCBkb24ndCBib3RoZXIgdG8gY29weSBpZiBpdCB3b3VsZG4ndCBjaGFuZ2UgdGhlIGZpbGUuCisgICAgaWYgJGNvcHlfb25fY2hhbmdlICYmCisgICAgICAgb2xkPWBMQ19BTEw9QyBscyAtZGxMICIkZHN0IgkyPi9kZXYvbnVsbGAgJiYKKyAgICAgICBuZXc9YExDX0FMTD1DIGxzIC1kbEwgIiRkc3R0bXAiCTI+L2Rldi9udWxsYCAmJgogCi0JICAgIyBOb3cgcmVtb3ZlIG9yIG1vdmUgYXNpZGUgYW55IG9sZCBmaWxlIGF0IGRlc3RpbmF0aW9uIGxvY2F0aW9uLgotCSAgICMgV2UgdHJ5IHRoaXMgdHdvIHdheXMgc2luY2Ugcm0gY2FuJ3QgdW5saW5rIGl0c2VsZiBvbiBzb21lCi0JICAgIyBzeXN0ZW1zIGFuZCB0aGUgZGVzdGluYXRpb24gZmlsZSBtaWdodCBiZSBidXN5IGZvciBvdGhlcgotCSAgICMgcmVhc29ucy4gIEluIHRoaXMgY2FzZSwgdGhlIGZpbmFsIGNsZWFudXAgbWlnaHQgZmFpbCBidXQgdGhlIG5ldwotCSAgICMgZmlsZSBzaG91bGQgc3RpbGwgaW5zdGFsbCBzdWNjZXNzZnVsbHkuCi0JICAgewotCSAgICAgaWYgdGVzdCAtZiAiJGRzdGRpci8kZHN0ZmlsZSI7IHRoZW4KLQkgICAgICAgJGRvaXQgJHJtY21kIC1mICIkZHN0ZGlyLyRkc3RmaWxlIiAyPi9kZXYvbnVsbCBcCi0JICAgICAgIHx8ICRkb2l0ICRtdmNtZCAtZiAiJGRzdGRpci8kZHN0ZmlsZSIgIiRybXRtcCIgMj4vZGV2L251bGwgXAotCSAgICAgICB8fCB7Ci0JCSBlY2hvICIkMDogY2Fubm90IHVubGluayBvciByZW5hbWUgJGRzdGRpci8kZHN0ZmlsZSIgPiYyCi0JCSAoZXhpdCAxKTsgZXhpdCAxCi0JICAgICAgIH0KLQkgICAgIGVsc2UKLQkgICAgICAgOgotCSAgICAgZmkKLQkgICB9ICYmCisgICAgICAgZXZhbCAiJGluaXRpYWxpemVfcG9zaXhfZ2xvYiIgJiYKKyAgICAgICAkcG9zaXhfZ2xvYiBzZXQgLWYgJiYKKyAgICAgICBzZXQgWCAkb2xkICYmIG9sZD06JDI6JDQ6JDU6JDYgJiYKKyAgICAgICBzZXQgWCAkbmV3ICYmIG5ldz06JDI6JDQ6JDU6JDYgJiYKKyAgICAgICAkcG9zaXhfZ2xvYiBzZXQgK2YgJiYKIAotCSAgICMgTm93IHJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KLQkgICAkZG9pdCAkbXZjbWQgIiRkc3R0bXAiICIkZHN0ZGlyLyRkc3RmaWxlIgotCSB9Ci0gICAgfQotICBmaSB8fCB7IChleGl0IDEpOyBleGl0IDE7IH0KKyAgICAgICB0ZXN0ICIkb2xkIiA9ICIkbmV3IiAmJgorICAgICAgICRjbXBwcm9nICIkZHN0IiAiJGRzdHRtcCIgPi9kZXYvbnVsbCAyPiYxCisgICAgdGhlbgorICAgICAgcm0gLWYgIiRkc3R0bXAiCisgICAgZWxzZQorICAgICAgIyBSZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCisgICAgICAkZG9pdCAkbXZjbWQgLWYgIiRkc3R0bXAiICIkZHN0IiAyPi9kZXYvbnVsbCB8fAorCisgICAgICAjIFRoZSByZW5hbWUgZmFpbGVkLCBwZXJoYXBzIGJlY2F1c2UgbXYgY2FuJ3QgcmVuYW1lIHNvbWV0aGluZyBlbHNlCisgICAgICAjIHRvIGl0c2VsZiwgb3IgcGVyaGFwcyBiZWNhdXNlIG12IGlzIHNvIGFuY2llbnQgdGhhdCBpdCBkb2VzIG5vdAorICAgICAgIyBzdXBwb3J0IC1mLgorICAgICAgeworCSMgTm93IHJlbW92ZSBvciBtb3ZlIGFzaWRlIGFueSBvbGQgZmlsZSBhdCBkZXN0aW5hdGlvbiBsb2NhdGlvbi4KKwkjIFdlIHRyeSB0aGlzIHR3byB3YXlzIHNpbmNlIHJtIGNhbid0IHVubGluayBpdHNlbGYgb24gc29tZQorCSMgc3lzdGVtcyBhbmQgdGhlIGRlc3RpbmF0aW9uIGZpbGUgbWlnaHQgYmUgYnVzeSBmb3Igb3RoZXIKKwkjIHJlYXNvbnMuICBJbiB0aGlzIGNhc2UsIHRoZSBmaW5hbCBjbGVhbnVwIG1pZ2h0IGZhaWwgYnV0IHRoZSBuZXcKKwkjIGZpbGUgc2hvdWxkIHN0aWxsIGluc3RhbGwgc3VjY2Vzc2Z1bGx5LgorCXsKKwkgIHRlc3QgISAtZiAiJGRzdCIgfHwKKwkgICRkb2l0ICRybWNtZCAtZiAiJGRzdCIgMj4vZGV2L251bGwgfHwKKwkgIHsgJGRvaXQgJG12Y21kIC1mICIkZHN0IiAiJHJtdG1wIiAyPi9kZXYvbnVsbCAmJgorCSAgICB7ICRkb2l0ICRybWNtZCAtZiAiJHJtdG1wIiAyPi9kZXYvbnVsbDsgOjsgfQorCSAgfSB8fAorCSAgeyBlY2hvICIkMDogY2Fubm90IHVubGluayBvciByZW5hbWUgJGRzdCIgPiYyCisJICAgIChleGl0IDEpOyBleGl0IDEKKwkgIH0KKwl9ICYmCisKKwkjIE5vdyByZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCisJJGRvaXQgJG12Y21kICIkZHN0dG1wIiAiJGRzdCIKKyAgICAgIH0KKyAgICBmaSB8fCBleGl0IDEKKworICAgIHRyYXAgJycgMAorICBmaQogZG9uZQogCi0jIFRoZSBmaW5hbCBsaXR0bGUgdHJpY2sgdG8gImNvcnJlY3RseSIgcGFzcyB0aGUgZXhpdCBzdGF0dXMgdG8gdGhlIGV4aXQgdHJhcC4KLXsKLSAgKGV4aXQgMCk7IGV4aXQgMAotfQotCiAjIExvY2FsIHZhcmlhYmxlczoKICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQogIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCiAjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgotIyB0aW1lLXN0YW1wLWVuZDogIiQiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyB0aW1lLXN0YW1wLWVuZDogIjsgIyBVVEMiCiAjIEVuZDoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2xpYmZmaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZTQ5MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2xpYmZmaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsNTk1IEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJNkM0M0NCREMxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQkQxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jICovOyB9OworCQk2QzQzQ0JERDE1MzRGNzZGMDAxNjIzNjQgLyogc3lzdi5TIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQkYxNTM0Rjc2RjAwMTYyMzY0IC8qIHN5c3YuUyAqLzsgfTsKKwkJNkM0M0NCREUxNTM0Rjc2RjAwMTYyMzY0IC8qIHRyYW1wb2xpbmUuUyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQkMwMTUzNEY3NkYwMDE2MjM2NCAvKiB0cmFtcG9saW5lLlMgKi87IH07CisJCTZDNDNDQkU2MTUzNEY3NkYwMDE2MjM2NCAvKiBkYXJ3aW4uUyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQkM5MTUzNEY3NkYwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLzsgfTsKKwkJNkM0M0NCRTgxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQ0IxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jICovOyB9OworCQk2QzQzQ0JFOTE1MzRGNzZGMDAxNjIzNjQgLyogZmZpNjQuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQkNDMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmk2NC5jICovOyB9OworCQk2QzQzQ0MxRjE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luLlMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MwNTE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luLlMgKi87IH07CisJCTZDNDNDQzIwMTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW42NC5TIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMDYxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbjY0LlMgKi87IH07CisJCTZDNDNDQzIxMTUzNEY3NzgwMDE2MjM2NCAvKiBmZmkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzA3MTUzNEY3NzgwMDE2MjM2NCAvKiBmZmkuYyAqLzsgfTsKKwkJNkM0M0NDMjIxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaTY0LmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MwODE1MzRGNzc4MDAxNjIzNjQgLyogZmZpNjQuYyAqLzsgfTsKKwkJNkM0M0NDMkYxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyODE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyAqLzsgfTsKKwkJNkM0M0NDMzAxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyODE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyAqLzsgfTsKKwkJNkM0M0NDMzExNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyOTE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyAqLzsgfTsKKwkJNkM0M0NDMzIxNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyOTE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyAqLzsgfTsKKwkJNkM0M0NDMzMxNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQTE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyAqLzsgfTsKKwkJNkM0M0NDMzQxNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQTE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyAqLzsgfTsKKwkJNkM0M0NDMzUxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkIxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jICovOyB9OworCQk2QzQzQ0MzNjE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQjE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgKi87IH07CisJCTZDNDNDQzM3MTUzNEY3QkUwMDE2MjM2NCAvKiBwcmVwX2NpZi5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkMxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgKi87IH07CisJCTZDNDNDQzM4MTUzNEY3QkUwMDE2MjM2NCAvKiBwcmVwX2NpZi5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkMxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgKi87IH07CisJCTZDNDNDQzM5MTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyRDE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jICovOyB9OworCQk2QzQzQ0MzQTE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkQxNTM0RjdCRTAwMTYyMzY0IC8qIHJhd19hcGkuYyAqLzsgfTsKKwkJNkM0M0NDM0IxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyRTE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyAqLzsgfTsKKwkJNkM0M0NDM0MxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyRTE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyAqLzsgfTsKKwkJNkM0M0NDOTcxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOEQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDOTgxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzhFMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0M5OTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2kzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzhGMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDOUExNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV94ODZfNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzkwMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfeDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0M5QjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M5MTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggKi87IH07CisJCTZDNDNDQzlDMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOTIxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggKi87IH07CisJCTZDNDNDQzlEMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfeDg2XzY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M5MzE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX3g4Nl82NC5oICovOyB9OworCQk2QzQzQ0M5RTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M5NDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0M5RjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzk1MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQTAxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF94ODZfNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzk2MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfeDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NBRDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBMjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NBRTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2FybXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBMzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2FybXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NBRjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTQxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0IwMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTUxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NCMTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBNjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggKi87IH07CisJCTZDNDNDQ0IyMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfYXJtdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0E3MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfYXJtdjcuaCAqLzsgfTsKKwkJNkM0M0NDQjMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBODE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCAqLzsgfTsKKwkJNkM0M0NDQjQxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTkxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQjUxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0FBMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NCNjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBQjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NCNzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0FDMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJNkM0M0NCM0QxNTM0RTlEMTAwMTYyMzY0IC8qIGxpYmZmaS5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJmZmkuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNkM0M0NCQkQxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBmZmkuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NCQkYxNTM0Rjc2RjAwMTYyMzY0IC8qIHN5c3YuUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtOyBwYXRoID0gc3lzdi5TOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0JDMDE1MzRGNzZGMDAxNjIzNjQgLyogdHJhbXBvbGluZS5TICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc207IHBhdGggPSB0cmFtcG9saW5lLlM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQkM5MTUzNEY3NkYwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtOyBwYXRoID0gZGFyd2luLlM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQkNCMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gZmZpLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQkNDMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmk2NC5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBmZmk2NC5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0MwNTE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luLlMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbTsgcGF0aCA9IGRhcndpbi5TOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0MwNjE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luNjQuUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtOyBwYXRoID0gZGFyd2luNjQuUzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDMDcxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBmZmkuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDMDgxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaTY0LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IGZmaTY0LmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzI4MTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBjbG9zdXJlcy5jOyBwYXRoID0gc3JjL2Nsb3N1cmVzLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDMjkxNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IGRlYnVnLmM7IHBhdGggPSBzcmMvZGVidWcuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0MyQTE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gZGxtYWxsb2MuYzsgcGF0aCA9IHNyYy9kbG1hbGxvYy5jOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTZDNDNDQzJCMTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gamF2YV9yYXdfYXBpLmM7IHBhdGggPSBzcmMvamF2YV9yYXdfYXBpLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDMkMxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHByZXBfY2lmLmM7IHBhdGggPSBzcmMvcHJlcF9jaWYuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0MyRDE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSByYXdfYXBpLmM7IHBhdGggPSBzcmMvcmF3X2FwaS5jOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTZDNDNDQzJFMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSB0eXBlcy5jOyBwYXRoID0gc3JjL3R5cGVzLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDOEQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOEUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpX2NvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M4RjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2kzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpX2kzODYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOTAxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV94ODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpX3g4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5MTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaWNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5MjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnX2kzODYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOTMxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ194ODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnX3g4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5NDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaXRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5NTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0X2kzODYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOTYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF94ODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0X3g4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBMjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBMzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2FybXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaV9hcm12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBNDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmlfY29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0E1MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmlfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBNjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaWNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBNzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2FybXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaWNvbmZpZ19hcm12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBODE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnX2kzODYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQTkxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQUExNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0X2FybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBQjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaXRhcmdldF9hcm12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBQzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0X2kzODYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZGOTgwQkExNDczODYxMzAwMDhGMTIxIC8qIGxpYmZmaS5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJmZmkuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKy8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk2QzQzQ0IzQTE1MzRFOUQxMDAxNjIzNjQgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQlGNkY5ODBCNzE0NzM4NjEzMDAwOEYxMjEgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLworCQk2QzQzQ0JBRjE1MzRGNzZGMDAxNjIzNjQgLyogaU9TICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0NBMTE1MzUwMzk2MDAxNjIzNjQgLyogaW5jbHVkZSAqLywKKwkJCQk2QzQzQ0JCQjE1MzRGNzZGMDAxNjIzNjQgLyogc3JjICovLAorCQkJKTsKKwkJCW5hbWUgPSBpT1M7CisJCQlwYXRoID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NCQkIxNTM0Rjc2RjAwMTYyMzY0IC8qIHNyYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NCQzgxNTM0Rjc2RjAwMTYyMzY0IC8qIHg4NiAqLywKKwkJCQk2QzQzQ0JCQzE1MzRGNzZGMDAxNjIzNjQgLyogYXJtICovLAorCQkJKTsKKwkJCXBhdGggPSBzcmM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0JCQzE1MzRGNzZGMDAxNjIzNjQgLyogYXJtICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0JCRDE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgKi8sCisJCQkJNkM0M0NCQkYxNTM0Rjc2RjAwMTYyMzY0IC8qIHN5c3YuUyAqLywKKwkJCQk2QzQzQ0JDMDE1MzRGNzZGMDAxNjIzNjQgLyogdHJhbXBvbGluZS5TICovLAorCQkJKTsKKwkJCXBhdGggPSBhcm07CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0JDODE1MzRGNzZGMDAxNjIzNjQgLyogeDg2ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0JDOTE1MzRGNzZGMDAxNjIzNjQgLyogZGFyd2luLlMgKi8sCisJCQkJNkM0M0NCQ0IxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jICovLAorCQkJCTZDNDNDQkNDMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmk2NC5jICovLAorCQkJKTsKKwkJCXBhdGggPSB4ODY7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0JGMDE1MzRGNzc4MDAxNjIzNjQgLyogT1MgWCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDOEMxNTM1MDMyNjAwMTYyMzY0IC8qIGluY2x1ZGUgKi8sCisJCQkJNkM0M0NCRkMxNTM0Rjc3ODAwMTYyMzY0IC8qIHNyYyAqLywKKwkJCSk7CisJCQluYW1lID0gIk9TIFgiOworCQkJcGF0aCA9IG9zeDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQkZDMTUzNEY3NzgwMDE2MjM2NCAvKiBzcmMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQzA0MTUzNEY3NzgwMDE2MjM2NCAvKiB4ODYgKi8sCisJCQkpOworCQkJcGF0aCA9IHNyYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQzA0MTUzNEY3NzgwMDE2MjM2NCAvKiB4ODYgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQzA1MTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLywKKwkJCQk2QzQzQ0MwNjE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luNjQuUyAqLywKKwkJCQk2QzQzQ0MwNzE1MzRGNzc4MDAxNjIzNjQgLyogZmZpLmMgKi8sCisJCQkJNkM0M0NDMDgxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaTY0LmMgKi8sCisJCQkpOworCQkJcGF0aCA9IHg4NjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQzNEMTUzNEY3QzQwMDE2MjM2NCAvKiBzcmMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQzI4MTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jICovLAorCQkJCTZDNDNDQzI5MTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jICovLAorCQkJCTZDNDNDQzJBMTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jICovLAorCQkJCTZDNDNDQzJCMTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyAqLywKKwkJCQk2QzQzQ0MyQzE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyAqLywKKwkJCQk2QzQzQ0MyRDE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jICovLAorCQkJCTZDNDNDQzJFMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jICovLAorCQkJKTsKKwkJCW5hbWUgPSBzcmM7CisJCQlwYXRoID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NDOEMxNTM1MDMyNjAwMTYyMzY0IC8qIGluY2x1ZGUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQzhEMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmkuaCAqLywKKwkJCQk2QzQzQ0M4RTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oICovLAorCQkJCTZDNDNDQzhGMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oICovLAorCQkJCTZDNDNDQzkwMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfeDg2XzY0LmggKi8sCisJCQkJNkM0M0NDOTExNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oICovLAorCQkJCTZDNDNDQzkyMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oICovLAorCQkJCTZDNDNDQzkzMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfeDg2XzY0LmggKi8sCisJCQkJNkM0M0NDOTQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oICovLAorCQkJCTZDNDNDQzk1MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovLAorCQkJCTZDNDNDQzk2MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfeDg2XzY0LmggKi8sCisJCQkpOworCQkJcGF0aCA9IGluY2x1ZGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0NBMTE1MzUwMzk2MDAxNjIzNjQgLyogaW5jbHVkZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDQTIxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaS5oICovLAorCQkJCTZDNDNDQ0EzMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfYXJtdjcuaCAqLywKKwkJCQk2QzQzQ0NBNDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oICovLAorCQkJCTZDNDNDQ0E1MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oICovLAorCQkJCTZDNDNDQ0E2MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWcuaCAqLywKKwkJCQk2QzQzQ0NBNzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2FybXY3LmggKi8sCisJCQkJNkM0M0NDQTgxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggKi8sCisJCQkJNkM0M0NDQTkxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oICovLAorCQkJCTZDNDNDQ0FBMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtLmggKi8sCisJCQkJNkM0M0NDQUIxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm12Ny5oICovLAorCQkJCTZDNDNDQ0FDMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovLAorCQkJKTsKKwkJCXBhdGggPSBpbmNsdWRlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJRjZCMDgzOTUxNDcyMUVFNTAwMzFEOEExID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0MzRDE1MzRGN0M0MDAxNjIzNjQgLyogc3JjICovLAorCQkJCTZDNDNDQkFGMTUzNEY3NkYwMDE2MjM2NCAvKiBpT1MgKi8sCisJCQkJNkM0M0NCRjAxNTM0Rjc3ODAwMTYyMzY0IC8qIE9TIFggKi8sCisJCQkJRjZGOTgwQzYxNDczODYyNjAwMDhGMTIxIC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUY2Rjk4MEM2MTQ3Mzg2MjYwMDA4RjEyMSAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRjZGOTgwQkExNDczODYxMzAwMDhGMTIxIC8qIGxpYmZmaS5hICovLAorCQkJCTZDNDNDQjNEMTUzNEU5RDEwMDE2MjM2NCAvKiBsaWJmZmkuYSAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlwYXRoID0gLi4vLi47CisJCQlzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk2QzQzQ0IzQjE1MzRFOUQxMDAxNjIzNjQgLyogSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTZDNDNDQzk3MTUzNTAzMjYwMDE2MjM2NCAvKiBmZmkuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzk4MTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5OTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlBMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfeDg2XzY0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5RTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5RjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0EwMTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfeDg2XzY0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5QjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5QzE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlEMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfeDg2XzY0LmggaW4gSGVhZGVycyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJRjZGOTgwQjgxNDczODYxMzAwMDhGMTIxIC8qIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk2QzQzQ0NBRDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NBRTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2FybXY3LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NBRjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQjAxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCNDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCNTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQjYxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm12Ny5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQjcxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCMTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCMjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2FybXY3LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCMzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJNkM0M0NCM0MxNTM0RTlEMTAwMTYyMzY0IC8qIGxpYmZmaSBPUyBYICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDZDNDNDQjRBMTUzNEU5RDEwMDE2MjM2NCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGliZmZpIE9TIFgiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJNkM0M0NDNDAxNTM0RkYzQjAwMTYyMzY0IC8qIEdlbmVyYXRlIFNvdXJjZSBhbmQgSGVhZGVycyAqLywKKwkJCQk2QzQzQ0IzOTE1MzRFOUQxMDAxNjIzNjQgLyogU291cmNlcyAqLywKKwkJCQk2QzQzQ0IzQTE1MzRFOUQxMDAxNjIzNjQgLyogRnJhbWV3b3JrcyAqLywKKwkJCQk2QzQzQ0IzQjE1MzRFOUQxMDAxNjIzNjQgLyogSGVhZGVycyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gImxpYmZmaSBPUyBYIjsKKwkJCXByb2R1Y3ROYW1lID0gImZmaSBPUyBYIjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA2QzQzQ0IzRDE1MzRFOUQxMDAxNjIzNjQgLyogbGliZmZpLmEgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKKwkJRjZGOTgwQjkxNDczODYxMzAwMDhGMTIxIC8qIGxpYmZmaSBpT1MgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gRjZGOTgwQzQxNDczODYxMzAwMDhGMTIxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsaWJmZmkgaU9TIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTZDNDNDQzNFMTUzNEY4RTIwMDE2MjM2NCAvKiBHZW5lcmF0ZSBUcmFtcG9saW5lICovLAorCQkJCTZDNDNDQzNGMTUzNEZGMUIwMDE2MjM2NCAvKiBHZW5lcmF0ZSBTb3VyY2UgYW5kIEhlYWRlcnMgKi8sCisJCQkJRjZGOTgwQjYxNDczODYxMzAwMDhGMTIxIC8qIFNvdXJjZXMgKi8sCisJCQkJRjZGOTgwQjcxNDczODYxMzAwMDhGMTIxIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJRjZGOTgwQjgxNDczODYxMzAwMDhGMTIxIC8qIEhlYWRlcnMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJsaWJmZmkgaU9TIjsKKwkJCXByb2R1Y3ROYW1lID0gZmZpOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IEY2Rjk4MEJBMTQ3Mzg2MTMwMDA4RjEyMSAvKiBsaWJmZmkuYSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQlGNkIwODM5NzE0NzIxRUU1MDAzMUQ4QTEgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDQzMDsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gRjZCMDgzOUExNDcyMUVFNTAwMzFEOEExIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGliZmZpIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCSk7CisJCQltYWluR3JvdXAgPSBGNkIwODM5NTE0NzIxRUU1MDAzMUQ4QTE7CisJCQlwcm9kdWN0UmVmR3JvdXAgPSBGNkIwODM5NTE0NzIxRUU1MDAzMUQ4QTE7CisJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJCQkJRjZGOTgwQjkxNDczODYxMzAwMDhGMTIxIC8qIGxpYmZmaSBpT1MgKi8sCisJCQkJNkM0M0NCM0MxNTM0RTlEMTAwMTYyMzY0IC8qIGxpYmZmaSBPUyBYICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJNkM0M0NDM0UxNTM0RjhFMjAwMTYyMzY0IC8qIEdlbmVyYXRlIFRyYW1wb2xpbmUgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIFRyYW1wb2xpbmUiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvdXNyL2Jpbi9weXRob247CisJCQlzaGVsbFNjcmlwdCA9ICJpbXBvcnQgc3VicHJvY2Vzc1xuaW1wb3J0IHJlXG5pbXBvcnQgb3NcbmltcG9ydCBlcnJub1xuaW1wb3J0IHN5c1xuXG5kZWYgbWFpbigpOlxuICAgIHdpdGggb3Blbignc3JjL2FybS90cmFtcG9saW5lLlMnLCAndycpIGFzIHRyYW1wX291dDpcbiAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWydiYXNoJywgJ3NyYy9hcm0vZ2VudHJhbXAuc2gnXSwgc3Rkb3V0PXRyYW1wX291dClcbiAgICAgICAgcC53YWl0KClcblxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBtYWluKCkiOworCQl9OworCQk2QzQzQ0MzRjE1MzRGRjFCMDAxNjIzNjQgLyogR2VuZXJhdGUgU291cmNlIGFuZCBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBTb3VyY2UgYW5kIEhlYWRlcnMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiL3Vzci9iaW4vcHl0aG9uIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkiOworCQl9OworCQk2QzQzQ0M0MDE1MzRGRjNCMDAxNjIzNjQgLyogR2VuZXJhdGUgU291cmNlIGFuZCBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBTb3VyY2UgYW5kIEhlYWRlcnMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiL3Vzci9iaW4vcHl0aG9uIGdlbmVyYXRlLW9zeC1zb3VyY2UtYW5kLWhlYWRlcnMucHkiOworCQl9OworLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJNkM0M0NCMzkxNTM0RTlEMTAwMTYyMzY0IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk2QzQzQ0MxRjE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luLlMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MyMDE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luNjQuUyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzIxMTUzNEY3NzgwMDE2MjM2NCAvKiBmZmkuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzIyMTUzNEY3NzgwMDE2MjM2NCAvKiBmZmk2NC5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzAxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzMjE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzM0MTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzYxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzgxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzQTE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDM0MxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJRjZGOTgwQjYxNDczODYxMzAwMDhGMTIxIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk2QzQzQ0JEQzE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0JERDE1MzRGNzZGMDAxNjIzNjQgLyogc3lzdi5TIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NCREUxNTM0Rjc2RjAwMTYyMzY0IC8qIHRyYW1wb2xpbmUuUyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQkU2MTUzNEY3NkYwMDE2MjM2NCAvKiBkYXJ3aW4uUyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQkU4MTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQkU5MTUzNEY3NkYwMDE2MjM2NCAvKiBmZmk2NC5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMkYxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzMTE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzMzMTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzUxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzcxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzOTE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDM0IxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJNkM0M0NCNEIxNTM0RTlEMTAwMTYyMzY0IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUKSI7CisJCQkJRFNUUk9PVCA9IC90bXAvZmZpLmRzdDsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIlwiJChTWVNURU1fQVBQU19ESVIpL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvTGlicmFyeS9GcmFtZXdvcmtzXCIiLAorCQkJCSk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNjsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9IGZmaTsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNkM0M0NCNEMxNTM0RTlEMTAwMTYyMzY0IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF8zMl82NF9CSVQpIjsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlEU1RST09UID0gL3RtcC9mZmkuZHN0OworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiXCIkKFNZU1RFTV9BUFBTX0RJUikvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9MaWJyYXJ5L0ZyYW1ld29ya3NcIiIsCisJCQkJKTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC42OworCQkJCVBST0RVQ1RfTkFNRSA9IGZmaTsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlGNkIwODNBQjE0NzIxRUU1MDAzMUQ4QTEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF8zMl9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFMVUUgPSBOTzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9IGlvcy9pbmNsdWRlOworCQkJCVNES1JPT1QgPSBpcGhvbmVvczsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUY2QjA4M0FDMTQ3MjFFRTUwMDMxRDhBMSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfMzJfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAiIjsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFMVUUgPSBOTzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9IGlvcy9pbmNsdWRlOworCQkJCVNES1JPT1QgPSBpcGhvbmVvczsKKwkJCQlWQUxJREFURV9QUk9EVUNUID0gWUVTOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlGNkY5ODBDMjE0NzM4NjEzMDAwOEYxMjEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQVJDSFMgPSAoCisJCQkJCWFybXY2LAorCQkJCQlhcm12NywKKwkJCQkpOworCQkJCURTVFJPT1QgPSAvdG1wL2ZmaS5kc3Q7CisJCQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKKwkJCQlHQ0NfVEhVTUJfU1VQUE9SVCA9IE5POworCQkJCUlQSE9ORU9TX0RFUExPWU1FTlRfVEFSR0VUID0gNC4wOworCQkJCU9USEVSX0xERkxBR1MgPSAiLU9iakMiOworCQkJCVBST0RVQ1RfTkFNRSA9IGZmaTsKKwkJCQlTS0lQX0lOU1RBTEwgPSBZRVM7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQlGNkY5ODBDMzE0NzM4NjEzMDAwOEYxMjEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBUkNIUyA9ICgKKwkJCQkJYXJtdjYsCisJCQkJCWFybXY3LAorCQkJCSk7CisJCQkJRFNUUk9PVCA9IC90bXAvZmZpLmRzdDsKKwkJCQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOworCQkJCUdDQ19USFVNQl9TVVBQT1JUID0gTk87CisJCQkJSVBIT05FT1NfREVQTE9ZTUVOVF9UQVJHRVQgPSA0LjA7CisJCQkJT1RIRVJfTERGTEFHUyA9ICItT2JqQyI7CisJCQkJUFJPRFVDVF9OQU1FID0gZmZpOworCQkJCVNLSVBfSU5TVEFMTCA9IFlFUzsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQk2QzQzQ0I0QTE1MzRFOUQxMDAxNjIzNjQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxpYmZmaSBPUyBYIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTZDNDNDQjRCMTUzNEU5RDEwMDE2MjM2NCAvKiBEZWJ1ZyAqLywKKwkJCQk2QzQzQ0I0QzE1MzRFOUQxMDAxNjIzNjQgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQlGNkIwODM5QTE0NzIxRUU1MDAzMUQ4QTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJsaWJmZmkiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJRjZCMDgzQUIxNDcyMUVFNTAwMzFEOEExIC8qIERlYnVnICovLAorCQkJCUY2QjA4M0FDMTQ3MjFFRTUwMDMxRDhBMSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUY2Rjk4MEM0MTQ3Mzg2MTMwMDA4RjEyMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGliZmZpIGlPUyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQlGNkY5ODBDMjE0NzM4NjEzMDAwOEYxMjEgLyogRGVidWcgKi8sCisJCQkJRjZGOTgwQzMxNDczODYxMzAwMDhGMTIxIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RPYmplY3QgPSBGNkIwODM5NzE0NzIxRUU1MDAzMUQ4QTEgLyogUHJvamVjdCBvYmplY3QgKi87Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2xpYnRvb2wtdmVyc2lvbiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGlidG9vbC12ZXJzaW9uCmluZGV4IGI4YjgwZTAuLjk1ZjQ4YzUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGlidG9vbC12ZXJzaW9uCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGlidG9vbC12ZXJzaW9uCkBAIC0yNiw0ICsyNiw0IEBACiAjICAgIHJlbGVhc2UsIHRoZW4gc2V0IGFnZSB0byAwLgogIwogIyBDVVJSRU5UOlJFVklTSU9OOkFHRQotNToxMDowCis2OjA6MApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9sdG1haW4uc2ggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2x0bWFpbi5zaApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDY5MzlkY2MuLmMyODUyZDgKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9sdG1haW4uc2gKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9sdG1haW4uc2gKQEAgLTEsOSArMSw5IEBACi0jIEdlbmVyYXRlZCBmcm9tIGx0bWFpbi5tNHNoLgogCi0jIGx0bWFpbi5zaCAoR05VIGxpYnRvb2wpIDIuMi42CisjIGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQuMgogIyBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgogCi0jIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCisjIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCiAjIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgogCkBAIC0zMiw1MCArMzIsNTcgQEAKICMKICMgUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCiAjCi0jICAgICAtLWNvbmZpZyAgICAgICAgICAgICBzaG93IGFsbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIyAgICAgLS1kZWJ1ZyAgICAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZwotIyAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKLSMgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAotIyAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKLSMgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKLSMgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKLSMgICAgIC0tdGFnPVRBRyAgICAgICAgICAgIHVzZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmcm9tIHRhZyBUQUcKLSMgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgIHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgKGRlZmF1bHQpCi0jICAgICAtLXZlcnNpb24gICAgICAgICAgICBwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uCi0jIC1oLCAtLWhlbHAgICAgICAgICAgICAgICBwcmludCBzaG9ydCBvciBsb25nIGhlbHAgbWVzc2FnZQorIyAgICAgICAtLWNvbmZpZyAgICAgICAgICAgICBzaG93IGFsbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcworIyAgICAgICAtLWRlYnVnICAgICAgICAgICAgICBlbmFibGUgdmVyYm9zZSBzaGVsbCB0cmFjaW5nCisjICAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCisjICAgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAorIyAgICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQorIyAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCisjICAgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKKyMgICAgICAgLS1uby1xdWlldCwgLS1uby1zaWxlbnQKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyAoZGVmYXVsdCkKKyMgICAgICAgLS1uby13YXJuICAgICAgICAgICAgZG9uJ3QgZGlzcGxheSB3YXJuaW5nIG1lc3NhZ2VzCisjICAgICAgIC0tdGFnPVRBRyAgICAgICAgICAgIHVzZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmcm9tIHRhZyBUQUcKKyMgICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgcHJpbnQgbW9yZSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIHRoYW4gZGVmYXVsdAorIyAgICAgICAtLW5vLXZlcmJvc2UgICAgICAgICBkb24ndCBwcmludCB0aGUgZXh0cmEgaW5mb3JtYXRpb25hbCBtZXNzYWdlcworIyAgICAgICAtLXZlcnNpb24gICAgICAgICAgICBwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uCisjICAgLWgsIC0taGVscCwgLS1oZWxwLWFsbCAgIHByaW50IHNob3J0LCBsb25nLCBvciBkZXRhaWxlZCBoZWxwIG1lc3NhZ2UKICMKICMgTU9ERSBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogIwotIyAgICAgICBjbGVhbiAgICAgICAgICAgICAgcmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeQotIyAgICAgICBjb21waWxlICAgICAgICAgICAgY29tcGlsZSBhIHNvdXJjZSBmaWxlIGludG8gYSBsaWJ0b29sIG9iamVjdAotIyAgICAgICBleGVjdXRlICAgICAgICAgICAgYXV0b21hdGljYWxseSBzZXQgbGlicmFyeSBwYXRoLCB0aGVuIHJ1biBhIHByb2dyYW0KLSMgICAgICAgZmluaXNoICAgICAgICAgICAgIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMKLSMgICAgICAgaW5zdGFsbCAgICAgICAgICAgIGluc3RhbGwgbGlicmFyaWVzIG9yIGV4ZWN1dGFibGVzCi0jICAgICAgIGxpbmsgICAgICAgICAgICAgICBjcmVhdGUgYSBsaWJyYXJ5IG9yIGFuIGV4ZWN1dGFibGUKLSMgICAgICAgdW5pbnN0YWxsICAgICAgICAgIHJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsZWQgZGlyZWN0b3J5CisjICAgICAgICAgY2xlYW4gICAgICAgICAgICAgIHJlbW92ZSBmaWxlcyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkKKyMgICAgICAgICBjb21waWxlICAgICAgICAgICAgY29tcGlsZSBhIHNvdXJjZSBmaWxlIGludG8gYSBsaWJ0b29sIG9iamVjdAorIyAgICAgICAgIGV4ZWN1dGUgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQorIyAgICAgICAgIGZpbmlzaCAgICAgICAgICAgICBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzCisjICAgICAgICAgaW5zdGFsbCAgICAgICAgICAgIGluc3RhbGwgbGlicmFyaWVzIG9yIGV4ZWN1dGFibGVzCisjICAgICAgICAgbGluayAgICAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQorIyAgICAgICAgIHVuaW5zdGFsbCAgICAgICAgICByZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGVkIGRpcmVjdG9yeQogIwotIyBNT0RFLUFSR1MgdmFyeSBkZXBlbmRpbmcgb24gdGhlIE1PREUuCisjIE1PREUtQVJHUyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgTU9ERS4gIFdoZW4gcGFzc2VkIGFzIGZpcnN0IG9wdGlvbiwKKyMgYC0tbW9kZT1NT0RFJyBtYXkgYmUgYWJicmV2aWF0ZWQgYXMgYE1PREUnIG9yIGEgdW5pcXVlIGFiYnJldmlhdGlvbiBvZiB0aGF0LgogIyBUcnkgYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPU1PREUnIGZvciBhIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgTU9ERS4KICMKICMgV2hlbiByZXBvcnRpbmcgYSBidWcsIHBsZWFzZSBkZXNjcmliZSBhIHRlc3QgY2FzZSB0byByZXByb2R1Y2UgaXQgYW5kCiAjIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKICMKLSMgICAgICAgaG9zdC10cmlwbGV0OgkkaG9zdAotIyAgICAgICBzaGVsbDoJCSRTSEVMTAotIyAgICAgICBjb21waWxlcjoJCSRMVENDCi0jICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCi0jICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCi0jICAgICAgICRwcm9nbmFtZToJCShHTlUgbGlidG9vbCkgMi4yLjYKLSMgICAgICAgYXV0b21ha2U6CQkkYXV0b21ha2VfdmVyc2lvbgotIyAgICAgICBhdXRvY29uZjoJCSRhdXRvY29uZl92ZXJzaW9uCisjICAgICAgICAgaG9zdC10cmlwbGV0OgkkaG9zdAorIyAgICAgICAgIHNoZWxsOgkJJFNIRUxMCisjICAgICAgICAgY29tcGlsZXI6CQkkTFRDQworIyAgICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCisjICAgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKKyMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCkgMi40LjIgRGViaWFuLTIuNC4yLTF1YnVudHUxCisjICAgICAgICAgYXV0b21ha2U6CSRhdXRvbWFrZV92ZXJzaW9uCisjICAgICAgICAgYXV0b2NvbmY6CSRhdXRvY29uZl92ZXJzaW9uCiAjCiAjIFJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KKyMgR05VIGxpYnRvb2wgaG9tZSBwYWdlOiA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRvb2wvPi4KKyMgR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCiAKLVBST0dSQU09bHRtYWluLnNoCitQUk9HUkFNPWxpYnRvb2wKIFBBQ0tBR0U9bGlidG9vbAotVkVSU0lPTj0yLjIuNgorVkVSU0lPTj0iMi40LjIgRGViaWFuLTIuNC4yLTF1YnVudHUxIgogVElNRVNUQU1QPSIiCi1wYWNrYWdlX3JldmlzaW9uPTEuMzAxMgorcGFja2FnZV9yZXZpc2lvbj0xLjMzMzcKIAogIyBCZSBCb3VybmUgY29tcGF0aWJsZQogaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCkBAIC05MSwxMCArOTgsMTUgQEAKIEJJTl9TSD14cGc0OyBleHBvcnQgQklOX1NIICMgZm9yIFRydTY0CiBEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoCiAKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorJDEKK19MVEVDSE9fRU9GJworfQorCiAjIE5MUyBudWlzYW5jZXM6IFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgotIyBPbmx5IHNldCBMQU5HIGFuZCBMQ19BTEwgdG8gQyBpZiBhbHJlYWR5IHNldC4KLSMgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5kCi0jIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCiBsdF91c2VyX2xvY2FsZT0KIGx0X3NhZmVfbG9jYWxlPQogZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCkBAIC0xMDcsMjQgKzExOSwyOCBAQAogCSAgbHRfc2FmZV9sb2NhbGU9XCIkbHRfdmFyPUM7IFwkbHRfc2FmZV9sb2NhbGVcIgogCWZpIgogZG9uZQorTENfQUxMPUMKK0xBTkdVQUdFPUMKK2V4cG9ydCBMQU5HVUFHRSBMQ19BTEwKIAogJGx0X3Vuc2V0IENEUEFUSAogCiAKKyMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAorIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKKyMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCisjIHBvc2l0aW9uYWwgcGFyYW1ldGVyICQwLCB3aXRoaW4gYSBmdW5jdGlvbiBjYWxsLCBpcyB0aGUgbmFtZSBvZiB0aGUKKyMgZnVuY3Rpb24uCitwcm9ncGF0aD0iJDAiCiAKIAogCiA6ICR7Q1A9ImNwIC1mIn0KLTogJHtFQ0hPPSJlY2hvIn0KLTogJHtFR1JFUD0iL2Jpbi9ncmVwIC1FIn0KLTogJHtGR1JFUD0iL2Jpbi9ncmVwIC1GIn0KLTogJHtHUkVQPSIvYmluL2dyZXAifQotOiAke0xOX1M9ImxuIC1zIn0KK3Rlc3QgIiR7RUNITytzZXR9IiA9IHNldCB8fCBFQ0hPPSR7YXNfZWNoby0ncHJpbnRmICVzXG4nfQogOiAke01BS0U9Im1ha2UifQogOiAke01LRElSPSJta2RpciJ9CiA6ICR7TVY9Im12IC1mIn0KIDogJHtSTT0icm0gLWYifQotOiAke1NFRD0iL2Jpbi9zZWQifQogOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9CiA6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KIApAQCAtMTQ0LDYgKzE2MCwyNyBAQAogZGlybmFtZT0icywvW14vXSokLCwiCiBiYXNlbmFtZT0icyxeLiovLCwiCiAKKyMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCitmdW5jX2Rpcm5hbWUgKCkKK3sKKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCisgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCisgICAgZWxzZQorICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorICAgIGZpCit9ICMgZnVuY19kaXJuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19iYXNlbmFtZSBmaWxlCitmdW5jX2Jhc2VuYW1lICgpCit7CisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCit9ICMgZnVuY19iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCiAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CiAjIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCiAjIGNhbGw6CkBAIC0xNTgsMzMgKzE5NSwxODMgQEAKICMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgogZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQogewotICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotICBlbHNlCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotICBmaQotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorICAgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCisgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAorICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorICAgIGVsc2UKKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKyAgICBmaQorICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAorfSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCisjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCisjIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCitmdW5jX3N0cmlwbmFtZSAoKQoreworICAgIGNhc2UgJHsyfSBpbgorICAgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKyAgICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKyAgICBlc2FjCit9ICMgZnVuY19zdHJpcG5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBUaGVzZSBTRUQgc2NyaXB0cyBwcmVzdXBwb3NlIGFuIGFic29sdXRlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgorcGF0aGNhcj0ncyxeL1woW14vXSpcKS4qJCxcMSwnCitwYXRoY2RyPSdzLF4vW14vXSosLCcKK3JlbW92ZWRvdHBhcnRzPSc6ZG90c2wKKwkJc0AvXC4vQC9AZworCQl0IGRvdHNsCisJCXMsL1wuJCwvLCcKK2NvbGxhcHNlc2xhc2hlcz0nc0AvXHsxLFx9QC9AZycKK2ZpbmFsc2xhc2g9J3MsLyokLC8sJworCisjIGZ1bmNfbm9ybWFsX2Fic3BhdGggUEFUSAorIyBSZW1vdmUgZG91YmxlZC11cCBhbmQgdHJhaWxpbmcgc2xhc2hlcywgIi4iIHBhdGggY29tcG9uZW50cywKKyMgYW5kIGNhbmNlbCBvdXQgYW55ICIuLiIgcGF0aCBjb21wb25lbnRzIGluIFBBVEggYWZ0ZXIgbWFraW5nCisjIGl0IGFuIGFic29sdXRlIHBhdGguCisjICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQiCitmdW5jX25vcm1hbF9hYnNwYXRoICgpCit7CisgICMgU3RhcnQgZnJvbSByb290IGRpciBhbmQgcmVhc3NlbWJsZSB0aGUgcGF0aC4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9CisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9JDEKKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2U9CisgIGNhc2UgJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGggaW4KKyAgICAiIikKKyAgICAgICMgRW1wdHkgcGF0aCwgdGhhdCBqdXN0IG1lYW5zICRjd2QuCisgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgImBwd2RgIgorICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgICAgcmV0dXJuCisgICAgOzsKKyAgICAjIFRoZSBuZXh0IHRocmVlIGVudHJpZXMgYXJlIHVzZWQgdG8gc3BvdCBhIHJ1biBvZiBwcmVjaXNlbHkKKyAgICAjIHR3byBsZWFkaW5nIHNsYXNoZXMgd2l0aG91dCB1c2luZyBuZWdhdGVkIGNoYXJhY3RlciBjbGFzc2VzOworICAgICMgd2UgdGFrZSBhZHZhbnRhZ2Ugb2YgY2FzZSdzIGZpcnN0LW1hdGNoIGJlaGF2aW91ci4KKyAgICAvLy8qKQorICAgICAgIyBVbnVzdWFsIGZvcm0gb2YgYWJzb2x1dGUgcGF0aCwgZG8gbm90aGluZy4KKyAgICA7OworICAgIC8vKikKKyAgICAgICMgTm90IG5lY2Vzc2FyaWx5IGFuIG9yZGluYXJ5IHBhdGg7IFBPU0lYIHJlc2VydmVzIGxlYWRpbmcgJy8vJworICAgICAgIyBhbmQgZm9yIGV4YW1wbGUgQ3lnd2luIHVzZXMgaXQgdG8gYWNjZXNzIHJlbW90ZSBmaWxlIHNoYXJlcworICAgICAgIyBvdmVyIENJRlMvU01CLCBzbyB3ZSBjb25zZXJ2ZSBhIGxlYWRpbmcgZG91YmxlIHNsYXNoIGlmIGZvdW5kLgorICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2U9LworICAgIDs7CisgICAgLyopCisgICAgICAjIEFic29sdXRlIHBhdGgsIGRvIG5vdGhpbmcuCisgICAgOzsKKyAgICAqKQorICAgICAgIyBSZWxhdGl2ZSBwYXRoLCBwcmVwZW5kICRjd2QuCisgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWBwd2RgLyRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoCisgICAgOzsKKyAgZXNhYworICAjIENhbmNlbCBvdXQgYWxsIHRoZSBzaW1wbGUgc3R1ZmYgdG8gc2F2ZSBpdGVyYXRpb25zLiAgV2UgYWxzbyB3YW50CisgICMgdGhlIHBhdGggdG8gZW5kIHdpdGggYSBzbGFzaCBmb3IgZWFzZSBvZiBwYXJzaW5nLCBzbyBtYWtlIHN1cmUKKyAgIyB0aGVyZSBpcyBvbmUgKGFuZCBvbmx5IG9uZSkgaGVyZS4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAorICAgICAgICAtZSAiJHJlbW92ZWRvdHBhcnRzIiAtZSAiJGNvbGxhcHNlc2xhc2hlcyIgLWUgIiRmaW5hbHNsYXNoImAKKyAgd2hpbGUgOjsgZG8KKyAgICAjIFByb2Nlc3NlZCBpdCBhbGwgeWV0PworICAgIGlmIHRlc3QgIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiA9IC8gOyB0aGVuCisgICAgICAjIElmIHdlIGFzY2VuZGVkIHRvIHRoZSByb290IHVzaW5nICIuLiIgdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkgbm93LgorICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IiA7IHRoZW4KKyAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9LworICAgICAgZmkKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Rjb21wb25lbnQ9YCRFQ0hPICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgfCAkU0VEIFwKKyAgICAgICAgLWUgIiRwYXRoY2FyImAKKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCisgICAgICAgIC1lICIkcGF0aGNkciJgCisgICAgIyBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gd2l0aCBpdAorICAgIGNhc2UgJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudCBpbgorICAgICAgIiIpCisgICAgICAgICMgVHJhaWxpbmcgZW1wdHkgcGF0aCBjb21wb25lbnQsIGlnbm9yZSBpdC4KKyAgICAgIDs7CisgICAgICAuLikKKyAgICAgICAgIyBQYXJlbnQgZGlyOyBzdHJpcCBsYXN0IGFzc2VtYmxlZCBjb21wb25lbnQgZnJvbSByZXN1bHQuCisgICAgICAgIGZ1bmNfZGlybmFtZSAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IgorICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19kaXJuYW1lX3Jlc3VsdAorICAgICAgOzsKKyAgICAgICopCisgICAgICAgICMgQWN0dWFsIHBhdGggY29tcG9uZW50LCBhcHBlbmQgaXQuCisgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdC8kZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50CisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorICAjIFJlc3RvcmUgbGVhZGluZyBkb3VibGUtc2xhc2ggaWYgb25lIHdhcyBmb3VuZCBvbiBlbnRyeS4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CiB9CiAKLSMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLgorIyBmdW5jX3JlbGF0aXZlX3BhdGggU1JDRElSIERTVERJUgorIyBnZW5lcmF0ZXMgYSByZWxhdGl2ZSBwYXRoIGZyb20gU1JDRElSIHRvIERTVERJUiwgd2l0aCBhIHRyYWlsaW5nCisjIHNsYXNoIGlmIG5vbi1lbXB0eSwgc3VpdGFibGUgZm9yIGltbWVkaWF0ZWx5IGFwcGVuZGluZyBhIGZpbGVuYW1lCisjIHdpdGhvdXQgbmVlZGluZyB0byBhcHBlbmQgYSBzZXBhcmF0b3IuCisjICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCIKK2Z1bmNfcmVsYXRpdmVfcGF0aCAoKQoreworICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PQorICBmdW5jX25vcm1hbF9hYnNwYXRoICIkMSIKKyAgZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiQyIgorICBmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKIAotIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCi0jIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgotIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKLSMgcG9zaXRpb25hbCBwYXJhbWV0ZXIgJDAsIHdpdGhpbiBhIGZ1bmN0aW9uIGNhbGwsIGlzIHRoZSBuYW1lIG9mIHRoZQotIyBmdW5jdGlvbi4KLXByb2dwYXRoPSIkMCIKKyAgIyBBc2NlbmQgdGhlIHRyZWUgc3RhcnRpbmcgZnJvbSBsaWJkaXIKKyAgd2hpbGUgOjsgZG8KKyAgICAjIGNoZWNrIGlmIHdlIGhhdmUgZm91bmQgYSBwcmVmaXggb2YgYmluZGlyCisgICAgY2FzZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIgaW4KKyAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcikKKyAgICAgICAgIyBmb3VuZCBhbiBleGFjdCBtYXRjaAorICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0KKyAgICAgICAgYnJlYWsKKyAgICAgICAgOzsKKyAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciopCisgICAgICAgICMgZm91bmQgYSBtYXRjaGluZyBwcmVmaXgKKyAgICAgICAgZnVuY19zdHJpcG5hbWUgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciIgJycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpciIKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCI7IHRoZW4KKyAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4KKyAgICAgICAgZmkKKyAgICAgICAgYnJlYWsKKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIGZ1bmNfZGlybmFtZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXI9JHtmdW5jX2Rpcm5hbWVfcmVzdWx0fQorICAgICAgICBpZiB0ZXN0ICJ4JGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyIiA9IHggOyB0aGVuCisgICAgICAgICAgIyBIYXZlIHRvIGRlc2NlbmQgYWxsIHRoZSB3YXkgdG8gdGhlIHJvb3QhCisgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uLi8kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdAorICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkPSRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpcgorICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpCisgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9Li4vJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAjIE5vdyBjYWxjdWxhdGUgcGF0aDsgdGFrZSBjYXJlIHRvIGF2b2lkIGRvdWJsaW5nLXVwIHNsYXNoZXMuCisgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiCisgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICBmdW5jX3N0cmlwbmFtZSAnLycgJy8nICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQiCisgIGlmIHRlc3QgIngkZnVuY19zdHJpcG5hbWVfcmVzdWx0IiAhPSB4IDsgdGhlbgorICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JHtmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0fS8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0KKyAgZmkKKworICAjIE5vcm1hbGlzYXRpb24uIElmIGJpbmRpciBpcyBsaWJkaXIsIHJldHVybiBlbXB0eSBzdHJpbmcsCisgICMgZWxzZSByZWxhdGl2ZSBwYXRoIGVuZGluZyB3aXRoIGEgc2xhc2g7IGVpdGhlciB3YXksIHRhcmdldAorICAjIGZpbGUgbmFtZSBjYW4gYmUgZGlyZWN0bHkgYXBwZW5kZWQuCisgIGlmIHRlc3QgISAteiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiOyB0aGVuCisgICAgZnVuY19zdHJpcG5hbWUgJy4vJyAnJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQvIgorICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICBmaQorfQogCiAjIFRoZSBuYW1lIG9mIHRoaXMgcHJvZ3JhbToKLSMgSW4gdGhlIHVubGlrZWx5IGV2ZW50ICRwcm9nbmFtZSBiZWdhbiB3aXRoIGEgJy0nLCBpdCB3b3VsZCBwbGF5IGhhdm9jIHdpdGgKLSMgZnVuY19lY2hvIChpbWFnaW5lIHByb2duYW1lPS1uKSwgc28gd2UgcHJlcGVuZCAuLyBpbiB0aGF0IGNhc2U6CiBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkcHJvZ3BhdGgiCiBwcm9nbmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKLWNhc2UgJHByb2duYW1lIGluCi0gIC0qKSBwcm9nbmFtZT0uLyRwcm9nbmFtZSA7OwotZXNhYwogCiAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGFic29sdXRlIHBhdGggZm9yIHJlZXhlY3V0aW9uOgogY2FzZSAkcHJvZ3BhdGggaW4KQEAgLTE5Niw3ICszODMsNyBAQAogICAgICA7OwogICAqKQogICAgICBzYXZlX0lGUz0iJElGUyIKLSAgICAgSUZTPToKKyAgICAgSUZTPSR7UEFUSF9TRVBBUkFUT1ItOn0KICAgICAgZm9yIHByb2dkaXIgaW4gJFBBVEg7IGRvCiAgICAgICAgSUZTPSIkc2F2ZV9JRlMiCiAgICAgICAgdGVzdCAteCAiJHByb2dkaXIvJHByb2duYW1lIiAmJiBicmVhawpAQCAtMjE1LDYgKzQwMiwxNSBAQAogIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCiBkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCiAKKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IHR1cm5zIGEgc3RyaW5nIGludG8gYSByZWdleCBtYXRjaGluZyBmb3IgdGhlCisjIHN0cmluZyBsaXRlcmFsbHkuCitzZWRfbWFrZV9saXRlcmFsX3JlZ2V4PSdzLFtdLlteJFxcKlwvXSxcXCYsZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgY29udmVydHMgYSB3MzIgZmlsZSBuYW1lIG9yIHBhdGgKKyMgd2hpY2ggY29udGFpbnMgZm9yd2FyZCBzbGFzaGVzLCBpbnRvIG9uZSB0aGF0IGNvbnRhaW5zCisjIChlc2NhcGVkKSBiYWNrc2xhc2hlcy4gIEEgdmVyeSBuYWl2ZSBpbXBsZW1lbnRhdGlvbi4KK2x0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKKwogIyBSZS1gXCcgcGFyYW1ldGVyIGV4cGFuc2lvbnMgaW4gb3V0cHV0IG9mIGRvdWJsZV9xdW90ZV9zdWJzdCB0aGF0IHdlcmUKICMgYFwnLWVkIGluIGlucHV0IHRvIHRoZSBzYW1lLiAgSWYgYW4gb2RkIG51bWJlciBvZiBgXCcgcHJlY2VkZWQgYSAnJCcKICMgaW4gaW5wdXQgdG8gZG91YmxlX3F1b3RlX3N1YnN0LCB0aGF0ICckJyB3YXMgcHJvdGVjdGVkIGZyb20gZXhwYW5zaW9uLgpAQCAtMjQzLDcgKzQzOSw3IEBACiAjIG5hbWUgaWYgaXQgaGFzIGJlZW4gc2V0IHlldC4KIGZ1bmNfZWNobyAoKQogewotICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICQqIgorICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9JCoiCiB9CiAKICMgZnVuY192ZXJib3NlIGFyZy4uLgpAQCAtMjU4LDE4ICs0NTQsMjUgQEAKICAgICA6CiB9CiAKKyMgZnVuY19lY2hvX2FsbCBhcmcuLi4KKyMgSW52b2tlICRFQ0hPIHdpdGggYWxsIGFyZ3MsIHNwYWNlLXNlcGFyYXRlZC4KK2Z1bmNfZWNob19hbGwgKCkKK3sKKyAgICAkRUNITyAiJCoiCit9CisKICMgZnVuY19lcnJvciBhcmcuLi4KICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KIGZ1bmNfZXJyb3IgKCkKIHsKLSAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAiJHsxKyIkQCJ9IDE+JjIKKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSIkezErIiRAIn0gMT4mMgogfQogCiAjIGZ1bmNfd2FybmluZyBhcmcuLi4KICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgogZnVuY193YXJuaW5nICgpCiB7Ci0gICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6IHdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgorICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfXdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgogCiAgICAgIyBiYXNoIGJ1ZyBhZ2FpbjoKICAgICA6CkBAIC0zMjYsOSArNTI5LDkgQEAKICAgICAgICAgY2FzZSAkbXlfZGlyZWN0b3J5X3BhdGggaW4gKi8qKSA7OyAqKSBicmVhayA7OyBlc2FjCiAKICAgICAgICAgIyAuLi5vdGhlcndpc2UgdGhyb3cgYXdheSB0aGUgY2hpbGQgZGlyZWN0b3J5IGFuZCBsb29wCi0gICAgICAgIG15X2RpcmVjdG9yeV9wYXRoPWAkRUNITyAiWCRteV9kaXJlY3RvcnlfcGF0aCIgfCAkWHNlZCAtZSAiJGRpcm5hbWUiYAorICAgICAgICBteV9kaXJlY3RvcnlfcGF0aD1gJEVDSE8gIiRteV9kaXJlY3RvcnlfcGF0aCIgfCAkU0VEIC1lICIkZGlybmFtZSJgCiAgICAgICBkb25lCi0gICAgICBteV9kaXJfbGlzdD1gJEVDSE8gIlgkbXlfZGlyX2xpc3QiIHwgJFhzZWQgLWUgJ3MsOiokLCwnYAorICAgICAgbXlfZGlyX2xpc3Q9YCRFQ0hPICIkbXlfZGlyX2xpc3QiIHwgJFNFRCAncyw6KiQsLCdgCiAKICAgICAgIHNhdmVfbWtkaXJfcF9JRlM9IiRJRlMiOyBJRlM9JzonCiAgICAgICBmb3IgbXlfZGlyIGluICRteV9kaXJfbGlzdDsgZG8KQEAgLTM3OCw3ICs1ODEsNyBAQAogICAgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgXGAkbXlfdG1wZGlyJyIKICAgICBmaQogCi0gICAgJEVDSE8gIlgkbXlfdG1wZGlyIiB8ICRYc2VkCisgICAgJEVDSE8gIiRteV90bXBkaXIiCiB9CiAKIApAQCAtMzkyLDcgKzU5NSw3IEBACiB7CiAgICAgY2FzZSAkMSBpbgogICAgICAgKltcXFxgXCJcJF0qKQotCWZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PWAkRUNITyAiWCQxIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAgOzsKKwlmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYCA7OwogICAgICAgKikKICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQ9IiQxIiA7OwogICAgIGVzYWMKQEAgLTQxOSw3ICs2MjIsNyBAQAogewogICAgIGNhc2UgJDEgaW4KICAgICAgICpbXFxcYFwiXSopCi0JbXlfYXJnPWAkRUNITyAiWCQxIiB8ICRYc2VkIFwKKwlteV9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEIFwKIAkgICAgLWUgIiRkb3VibGVfcXVvdGVfc3Vic3QiIC1lICIkc2VkX2RvdWJsZV9iYWNrc2xhc2giYCA7OwogICAgICAgKikKICAgICAgICAgbXlfYXJnPSIkMSIgOzsKQEAgLTQ4OCwxNSArNjkxLDM5IEBACiAgICAgZmkKIH0KIAotCi0KKyMgZnVuY190cl9zaAorIyBUdXJuICQxIGludG8gYSBzdHJpbmcgc3VpdGFibGUgZm9yIGEgc2hlbGwgdmFyaWFibGUgbmFtZS4KKyMgUmVzdWx0IGlzIHN0b3JlZCBpbiAkZnVuY190cl9zaF9yZXN1bHQuICBBbGwgY2hhcmFjdGVycworIyBub3QgaW4gdGhlIHNldCBhLXpBLVowLTlfIGFyZSByZXBsYWNlZCB3aXRoICdfJy4gRnVydGhlciwKKyMgaWYgJDEgYmVnaW5zIHdpdGggYSBkaWdpdCwgYSAnXycgaXMgcHJlcGVuZGVkIGFzIHdlbGwuCitmdW5jX3RyX3NoICgpCit7CisgIGNhc2UgJDEgaW4KKyAgWzAtOV0qIHwgKlshYS16QS1aMC05X10qKQorICAgIGZ1bmNfdHJfc2hfcmVzdWx0PWAkRUNITyAiJDEiIHwgJFNFRCAncy9eXChbMC05XVwpL19cMS87IHMvW15hLXpBLVowLTlfXS9fL2cnYAorICAgIDs7CisgICogKQorICAgIGZ1bmNfdHJfc2hfcmVzdWx0PSQxCisgICAgOzsKKyAgZXNhYworfQogCiAKICMgZnVuY192ZXJzaW9uCiAjIEVjaG8gdmVyc2lvbiBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KIGZ1bmNfdmVyc2lvbiAoKQogewotICAgICRTRUQgLW4gJy9eIyAnJFBST0dSQU0nIChHTlUgLywvIyB3YXJyYW50eTsgLyB7CisgICAgJG9wdF9kZWJ1ZworCisgICAgJFNFRCAtbiAnLyhDKS8hYiBnbworCTptb3JlCisJL1wuLyF7CisJICBOCisJICBzL1xuIyAvIC8KKwkgIGIgbW9yZQorCX0KKwk6Z28KKwkvXiMgJyRQUk9HUkFNJyAoR05VIC8sLyMgd2FycmFudHk7IC8gewogICAgICAgICBzL14jIC8vCiAJcy9eIyAqJC8vCiAgICAgICAgIHMvXCgoQylcKVsgMC05LC1dKlwoIFsxLTldWzAtOV0qXCkvXDFcMi8KQEAgLTUwOSwyMiArNzM2LDI4IEBACiAjIEVjaG8gc2hvcnQgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KIGZ1bmNfdXNhZ2UgKCkKIHsKLSAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvIyAtaC8geworICAgICRvcHRfZGVidWcKKworICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi4qLS1oZWxwLyB7CiAgICAgICAgIHMvXiMgLy8KIAlzL14jICokLy8KIAlzL1wkcHJvZ25hbWUvJyRwcm9nbmFtZScvCiAJcAogICAgIH0nIDwgIiRwcm9ncGF0aCIKLSAgICAkRUNITworICAgIGVjaG8KICAgICAkRUNITyAicnVuIFxgJHByb2duYW1lIC0taGVscCB8IG1vcmUnIGZvciBmdWxsIHVzYWdlIgogICAgIGV4aXQgJD8KIH0KIAotIyBmdW5jX2hlbHAKLSMgRWNobyBsb25nIGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCisjIGZ1bmNfaGVscCBbTk9FWElUXQorIyBFY2hvIGxvbmcgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdCwKKyMgdW5sZXNzICdub2V4aXQnIGlzIHBhc3NlZCBhcyBhcmd1bWVudC4KIGZ1bmNfaGVscCAoKQogeworICAgICRvcHRfZGVidWcKKwogICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIFJlcG9ydCBidWdzIHRvLyB7CisJOnByaW50CiAgICAgICAgIHMvXiMgLy8KIAlzL14jICokLy8KIAlzKlwkcHJvZ25hbWUqJyRwcm9nbmFtZScqCkBAIC01MzQsMTEgKzc2NywxOCBAQAogCXMqXCRMVENGTEFHUyonIiRMVENGTEFHUyInKgogCXMqXCRMRConIiRMRCInKgogCXMvXCR3aXRoX2dudV9sZC8nIiR3aXRoX2dudV9sZCInLwotCXMvXCRhdXRvbWFrZV92ZXJzaW9uLyciYChhdXRvbWFrZSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwotCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYChhdXRvY29uZiAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLworCXMvXCRhdXRvbWFrZV92ZXJzaW9uLyciYCgke0FVVE9NQUtFLWF1dG9tYWtlfSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLworCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYCgke0FVVE9DT05GLWF1dG9jb25mfSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwogCXAKLSAgICAgfScgPCAiJHByb2dwYXRoIgotICAgIGV4aXQgJD8KKwlkCisgICAgIH0KKyAgICAgL14jIC4qIGhvbWUgcGFnZTovYiBwcmludAorICAgICAvXiMgR2VuZXJhbCBoZWxwIHVzaW5nL2IgcHJpbnQKKyAgICAgJyA8ICIkcHJvZ3BhdGgiCisgICAgcmV0PSQ/CisgICAgaWYgdGVzdCAteiAiJDEiOyB0aGVuCisgICAgICBleGl0ICRyZXQKKyAgICBmaQogfQogCiAjIGZ1bmNfbWlzc2luZ19hcmcgYXJnbmFtZQpAQCAtNTQ2LDYzICs3ODYsMTA2IEBACiAjIGV4aXRfY21kLgogZnVuY19taXNzaW5nX2FyZyAoKQogewotICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxIgorICAgICRvcHRfZGVidWcKKworICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxLiIKICAgICBleGl0X2NtZD1leGl0CiB9CiAKKworIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBzaG9ydG9wdAorIyBTZXQgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIHNoZWxsCisjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgU0hPUlRPUFQgYWZ0ZXIgdGhlIDJuZCBjaGFyYWN0ZXIuCitmdW5jX3NwbGl0X3Nob3J0X29wdCAoKQoreworICAgIG15X3NlZF9zaG9ydF9vcHQ9JzFzL15cKC4uXCkuKiQvXDEvO3EnCisgICAgbXlfc2VkX3Nob3J0X3Jlc3Q9JzFzL14uLlwoLipcKSQvXDEvO3EnCisKKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9vcHQiYAorICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfcmVzdCJgCit9ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX3NwbGl0X2xvbmdfb3B0IGxvbmdvcHQKKyMgU2V0IGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9sb25nX29wdF9hcmcgc2hlbGwKKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBMT05HT1BUIGF0IHRoZSBgPScgc2lnbi4KK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKCkKK3sKKyAgICBteV9zZWRfbG9uZ19vcHQ9JzFzL15cKC0tW149XSpcKT0uKi9cMS87cScKKyAgICBteV9zZWRfbG9uZ19hcmc9JzFzL14tLVtePV0qPS8vJworCisgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCisgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKK30gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCiBleGl0X2NtZD06CiAKIAogCiAKIAotIyBDaGVjayB0aGF0IHdlIGhhdmUgYSB3b3JraW5nICRFQ0hPLgotaWYgdGVzdCAiWCQxIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgc2hpZnQKLWVsaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgotICA6Ci1lbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgotICAjIFlpcHBlZSwgJEVDSE8gd29ya3MhCi0gIDoKLWVsc2UKLSAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSAkRUNITyB3aWxsIHdvcmsuCi0gIGV4ZWMgJFNIRUxMICIkcHJvZ3BhdGgiIC0tbm8tcmVleGVjICR7MSsiJEAifQotZmkKLQotaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyB1c2VkIGFzIGZhbGxiYWNrIGVjaG8KLSAgc2hpZnQKLSAgY2F0IDw8RU9GCi0kKgotRU9GCi0gIGV4aXQgJEVYSVRfU1VDQ0VTUwotZmkKLQogbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgogbWFnaWNfZXhlPSIlJSVNQUdJQyBFWEUgdmFyaWFibGUlJSUiCiAKICMgR2xvYmFsIHZhcmlhYmxlcy4KLSMgJG1vZGUgaXMgdW5zZXQKIG5vbm9wdD0KLWV4ZWN1dGVfZGxmaWxlcz0KIHByZXNlcnZlX2FyZ3M9CiBsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCiBvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCiBleHRyYWN0ZWRfYXJjaGl2ZXM9CiBleHRyYWN0ZWRfc2VyaWFsPTAKIAotb3B0X2RyeV9ydW49ZmFsc2UKLW9wdF9kdXBsaWNhdGVfZGVwcz1mYWxzZQotb3B0X3NpbGVudD1mYWxzZQotb3B0X2RlYnVnPToKLQogIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0CiAjIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKICMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KIGV4ZWNfY21kPQogCisjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCitmdW5jX2FwcGVuZCAoKQoreworICAgIGV2YWwgIiR7MX09XCQkezF9XCR7Mn0iCit9ICMgZnVuY19hcHBlbmQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKyMgZnVuY19hcHBlbmRfcXVvdGVkIHZhciB2YWx1ZQorIyBRdW90ZSBWQUxVRSBhbmQgYXBwZW5kIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLCBzZXBhcmF0ZWQKKyMgYnkgYSBzcGFjZS4KK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKQoreworICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCisgICAgZXZhbCAiJHsxfT1cJCR7MX1cXCBcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorfSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCitmdW5jX2FyaXRoICgpCit7CisgICAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiR7QH0iYAorfSAjIGZ1bmNfYXJpdGggbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2xlbiBzdHJpbmcKKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KK2Z1bmNfbGVuICgpCit7CisgICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkezF9IiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCit9ICMgZnVuY19sZW4gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2xvMm8gb2JqZWN0CitmdW5jX2xvMm8gKCkKK3sKKyAgICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCit9ICMgZnVuY19sbzJvIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCitmdW5jX3hmb3JtICgpCit7CisgICAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCit9ICMgZnVuY194Zm9ybSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCiAjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBhcmcuLi4KICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgZm9sbG93ZWQgYnkKICMgYSBjb25maWd1cmF0aW9uIGZhaWx1cmUgaGludCwgYW5kIGV4aXQuCkBAIC02MzYsMTYgKzkxOSwxNiBAQAogIyBEaXNwbGF5IHRoZSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgdGhpcyBzY3JpcHQuCiBmdW5jX2ZlYXR1cmVzICgpCiB7Ci0gICAgJEVDSE8gImhvc3Q6ICRob3N0IgorICAgIGVjaG8gImhvc3Q6ICRob3N0IgogICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICAkRUNITyAiZW5hYmxlIHNoYXJlZCBsaWJyYXJpZXMiCisgICAgICBlY2hvICJlbmFibGUgc2hhcmVkIGxpYnJhcmllcyIKICAgICBlbHNlCi0gICAgICAkRUNITyAiZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIgorICAgICAgZWNobyAiZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIgogICAgIGZpCiAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgotICAgICAgJEVDSE8gImVuYWJsZSBzdGF0aWMgbGlicmFyaWVzIgorICAgICAgZWNobyAiZW5hYmxlIHN0YXRpYyBsaWJyYXJpZXMiCiAgICAgZWxzZQotICAgICAgJEVDSE8gImRpc2FibGUgc3RhdGljIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImRpc2FibGUgc3RhdGljIGxpYnJhcmllcyIKICAgICBmaQogCiAgICAgZXhpdCAkPwpAQCAtNjkyLDEzMyArOTc1LDYgQEAKICAgZXNhYwogfQogCi0jIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbgotIyB0aGUgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYGxpYnRvb2wgLS12ZXJzaW9uJyBoYXBwZW4gcXVpY2tseS4KLXsKLQotICAjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKLSAgY2FzZSAkMSBpbgotICBjbGVhbnxjbGVhfGNsZXxjbCkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBsaW5rfGxpbnxsaXxsKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgZXNhYwotCi0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgotICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCi0gICAgb3B0PSIkMSIKLSAgICBzaGlmdAotCi0gICAgY2FzZSAkb3B0IGluCi0gICAgICAtLWNvbmZpZykJCWZ1bmNfY29uZmlnCQkJCQk7OwotCi0gICAgICAtLWRlYnVnKQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLQkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKLQkJCW9wdF9kZWJ1Zz0nc2V0IC14JwotCQkJJG9wdF9kZWJ1ZwotCQkJOzsKLQotICAgICAgLWRsb3BlbikJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotCQkJZXhlY3V0ZV9kbGZpbGVzPSIkZXhlY3V0ZV9kbGZpbGVzICQxIgotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgIC0tZHJ5LXJ1biB8IC1uKQlvcHRfZHJ5X3J1bj06CQkJCQk7OwotICAgICAgLS1mZWF0dXJlcykgICAgICAgZnVuY19mZWF0dXJlcwkJCQkJOzsKLSAgICAgIC0tZmluaXNoKQkJbW9kZT0iZmluaXNoIgkJCQkJOzsKLQotICAgICAgLS1tb2RlKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0JCQljYXNlICQxIGluCi0JCQkgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6Ci0JCQkgIGNsZWFuKQk7OwotCQkJICBjb21waWxlKQk7OwotCQkJICBleGVjdXRlKQk7OwotCQkJICBmaW5pc2gpCTs7Ci0JCQkgIGluc3RhbGwpCTs7Ci0JCQkgIGxpbmspCQk7OwotCQkJICByZWxpbmspCTs7Ci0JCQkgIHVuaW5zdGFsbCkJOzsKLQotCQkJICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKLQkJCSAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKLQkJCSAgICAgZXhpdF9jbWQ9ZXhpdAotCQkJICAgICBicmVhawotCQkJICAgICA7OwotCQkgICAgICAgIGVzYWMKLQotCQkJbW9kZT0iJDEiCi0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKLQkJCW9wdF9kdXBsaWNhdGVfZGVwcz06CQkJCTs7Ci0KLSAgICAgIC0tcXVpZXR8LS1zaWxlbnQpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0JCQlvcHRfc2lsZW50PToKLQkJCTs7Ci0KLSAgICAgIC0tdmVyYm9zZXwgLXYpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0JCQlvcHRfc2lsZW50PWZhbHNlCi0JCQk7OwotCi0gICAgICAtLXRhZykJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCAkMSIKLQkJCWZ1bmNfZW5hYmxlX3RhZyAiJDEiCSMgdGFnbmFtZSBpcyBzZXQgaGVyZQotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6Ci0gICAgICAtZGxvcGVuPSp8LS1tb2RlPSp8LS10YWc9KikKLQkJCWZ1bmNfb3B0X3NwbGl0ICIkb3B0IgotCQkJc2V0IGR1bW15ICIkZnVuY19vcHRfc3BsaXRfb3B0IiAiJGZ1bmNfb3B0X3NwbGl0X2FyZyIgJHsxKyIkQCJ9Ci0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQkJOzsKLSAgICAgIC0taGVscCkJCW9wdF9oZWxwPToJCQkJCTs7Ci0gICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQkJOzsKLQotICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIJOzsKLQotICAgICAgKikJCW5vbm9wdD0iJG9wdCIKLQkJCWJyZWFrCi0JCQk7OwotICAgIGVzYWMKLSAgZG9uZQotCi0KLSAgY2FzZSAkaG9zdCBpbgotICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyopCi0gICAgICAjIGRvbid0IGVsaW1pbmF0ZSBkdXBsaWNhdGlvbnMgaW4gJHBvc3RkZXBzIGFuZCAkcHJlZGVwcwotICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06Ci0gICAgICA7OwotICAgICopCi0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfZHVwbGljYXRlX2RlcHMKLSAgICAgIDs7Ci0gIGVzYWMKLQotICAjIEhhdmluZyB3YXJuZWQgYWJvdXQgYWxsIG1pcy1zcGVjaWZpZWQgb3B0aW9ucywgYmFpbCBvdXQgaWYKLSAgIyBhbnl0aGluZyB3YXMgd3JvbmcuCi0gICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCi19Ci0KICMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCiAjIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCiAjIHJlbGVhc2Ugb2YgbGlidG9vbC4KQEAgLTg1NSwzOCArMTAxMSwyMTkgQEAKIH0KIAogCisjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKK2Nhc2UgJDEgaW4KK2NsZWFufGNsZWF8Y2xlfGNsKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0CisgIDs7Citjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2V4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAorICA7OworZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisgIDs7CitpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2xpbmt8bGlufGxpfGwpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAorICA7OwordW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisgIDs7Citlc2FjCisKKworCisjIE9wdGlvbiBkZWZhdWx0czoKK29wdF9kZWJ1Zz06CitvcHRfZHJ5X3J1bj1mYWxzZQorb3B0X2NvbmZpZz1mYWxzZQorb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCitvcHRfZmVhdHVyZXM9ZmFsc2UKK29wdF9maW5pc2g9ZmFsc2UKK29wdF9oZWxwPWZhbHNlCitvcHRfaGVscF9hbGw9ZmFsc2UKK29wdF9zaWxlbnQ9Ogorb3B0X3dhcm5pbmc9Ogorb3B0X3ZlcmJvc2U9Ogorb3B0X3NpbGVudD1mYWxzZQorb3B0X3ZlcmJvc2U9ZmFsc2UKKworCisjIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiB0aGUKKyMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgoreworICAjIHRoaXMganVzdCBlYXNlcyBleGl0IGhhbmRsaW5nCisgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgb3B0PSIkMSIKKyAgICBzaGlmdAorICAgIGNhc2UgJG9wdCBpbgorICAgICAgLS1kZWJ1Z3wteCkJb3B0X2RlYnVnPSdzZXQgLXgnCisJCQlmdW5jX2VjaG8gImVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCisJCQkkb3B0X2RlYnVnCisJCQk7OworICAgICAgLS1kcnktcnVufC0tZHJ5cnVufC1uKQorCQkJb3B0X2RyeV9ydW49OgorCQkJOzsKKyAgICAgIC0tY29uZmlnKQorCQkJb3B0X2NvbmZpZz06CitmdW5jX2NvbmZpZworCQkJOzsKKyAgICAgIC0tZGxvcGVufC1kbG9wZW4pCisJCQlvcHRhcmc9IiQxIgorCQkJb3B0X2Rsb3Blbj0iJHtvcHRfZGxvcGVuKyRvcHRfZGxvcGVuCit9JG9wdGFyZyIKKwkJCXNoaWZ0CisJCQk7OworICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKKwkJCW9wdF9wcmVzZXJ2ZV9kdXBfZGVwcz06CisJCQk7OworICAgICAgLS1mZWF0dXJlcykKKwkJCW9wdF9mZWF0dXJlcz06CitmdW5jX2ZlYXR1cmVzCisJCQk7OworICAgICAgLS1maW5pc2gpCisJCQlvcHRfZmluaXNoPToKK3NldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKwkJCTs7CisgICAgICAtLWhlbHApCisJCQlvcHRfaGVscD06CisJCQk7OworICAgICAgLS1oZWxwLWFsbCkKKwkJCW9wdF9oZWxwX2FsbD06CitvcHRfaGVscD0nOiBoZWxwLWFsbCcKKwkJCTs7CisgICAgICAtLW1vZGUpCisJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKwkJCW9wdGFyZz0iJDEiCisJCQlvcHRfbW9kZT0iJG9wdGFyZyIKK2Nhc2UgJG9wdGFyZyBpbgorICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorICBjbGVhbnxjb21waWxlfGV4ZWN1dGV8ZmluaXNofGluc3RhbGx8bGlua3xyZWxpbmt8dW5pbnN0YWxsKSA7OworCisgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgorICAgICBleGl0X2NtZD1leGl0CisgICAgIGJyZWFrCisgICAgIDs7Citlc2FjCisJCQlzaGlmdAorCQkJOzsKKyAgICAgIC0tbm8tc2lsZW50fC0tbm8tcXVpZXQpCisJCQlvcHRfc2lsZW50PWZhbHNlCitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKwkJCTs7CisgICAgICAtLW5vLXdhcm5pbmd8LS1uby13YXJuKQorCQkJb3B0X3dhcm5pbmc9ZmFsc2UKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorCQkJOzsKKyAgICAgIC0tbm8tdmVyYm9zZSkKKwkJCW9wdF92ZXJib3NlPWZhbHNlCitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKwkJCTs7CisgICAgICAtLXNpbGVudHwtLXF1aWV0KQorCQkJb3B0X3NpbGVudD06CitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKyAgICAgICAgb3B0X3ZlcmJvc2U9ZmFsc2UKKwkJCTs7CisgICAgICAtLXZlcmJvc2V8LXYpCisJCQlvcHRfdmVyYm9zZT06CitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKK29wdF9zaWxlbnQ9ZmFsc2UKKwkJCTs7CisgICAgICAtLXRhZykKKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhaworCQkJb3B0YXJnPSIkMSIKKwkJCW9wdF90YWc9IiRvcHRhcmciCitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCAkb3B0YXJnIgorZnVuY19lbmFibGVfdGFnICIkb3B0YXJnIgorCQkJc2hpZnQKKwkJCTs7CisKKyAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJOzsKKyAgICAgIC0taGVscCkJCWZ1bmNfaGVscAkJCQk7OworICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJOzsKKworICAgICAgIyBTZXBhcmF0ZSBvcHRhcmdzIHRvIGxvbmcgb3B0aW9uczoKKyAgICAgIC0tKj0qKQorCQkJZnVuY19zcGxpdF9sb25nX29wdCAiJG9wdCIKKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSIgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyIgJHsxKyIkQCJ9CisJCQlzaGlmdAorCQkJOzsKKworICAgICAgIyBTZXBhcmF0ZSBub24tYXJndW1lbnQgc2hvcnQgb3B0aW9uczoKKyAgICAgIC1cPyp8LWgqfC1uKnwtdiopCisJCQlmdW5jX3NwbGl0X3Nob3J0X29wdCAiJG9wdCIKKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUiICItJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyIgJHsxKyIkQCJ9CisJCQlzaGlmdAorCQkJOzsKKworICAgICAgLS0pCQlicmVhawkJCQkJOzsKKyAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciIDs7CisgICAgICAqKQkJc2V0IGR1bW15ICIkb3B0IiAkezErIiRAIn07CXNoaWZ0OyBicmVhayAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAjIFZhbGlkYXRlIG9wdGlvbnM6CisKKyAgIyBzYXZlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQKKyAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCisgICAgbm9ub3B0PSIkb3B0IgorICAgIHNoaWZ0CisgIGZpCisKKyAgIyBwcmVzZXJ2ZSAtLWRlYnVnCisgIHRlc3QgIiRvcHRfZGVidWciID0gOiB8fCBmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgLS1kZWJ1ZyIKKworICBjYXNlICRob3N0IGluCisgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqIHwgKmNlZ2NjKikKKyAgICAgICMgZG9uJ3QgZWxpbWluYXRlIGR1cGxpY2F0aW9ucyBpbiAkcG9zdGRlcHMgYW5kICRwcmVkZXBzCisgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPToKKyAgICAgIDs7CisgICAgKikKKyAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcworICAgICAgOzsKKyAgZXNhYworCisgICRvcHRfaGVscCB8fCB7CisgICAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgorICAgIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAorCisgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCisgICAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCisgICAgZmkKKworICAgICMgRGFyd2luIHN1Y2tzCisgICAgZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKKworICAgICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCisgICAgaWYgdGVzdCAtbiAiJG9wdF9kbG9wZW4iICYmIHRlc3QgIiRvcHRfbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgorICAgICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgorICAgICAgJEVDSE8gIiRoZWxwIiAxPiYyCisgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKyAgICBmaQorCisgICAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgorICAgIGdlbmVyaWNfaGVscD0iJGhlbHAiCisgICAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG9wdF9tb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisgIH0KKworCisgICMgQmFpbCBpZiB0aGUgb3B0aW9ucyB3ZXJlIHNjcmV3ZWQKKyAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKK30KKworCisKKwogIyMgLS0tLS0tLS0tLS0gIyMKICMjICAgIE1haW4uICAgICMjCiAjIyAtLS0tLS0tLS0tLSAjIwogCi0kb3B0X2hlbHAgfHwgewotICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6Ci0gIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotCi0gIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgotICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKLSAgZmkKLQotICB0ZXN0IC16ICIkbW9kZSIgJiYgZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IHlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFLiIKLQotCi0gICMgRGFyd2luIHN1Y2tzCi0gIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCi0KLQotICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgotICBpZiB0ZXN0IC1uICIkZXhlY3V0ZV9kbGZpbGVzIiAmJiB0ZXN0ICIkbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgotICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKLSAgICAkRUNITyAiJGhlbHAiIDE+JjIKLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgZmkKLQotICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCi0gIGdlbmVyaWNfaGVscD0iJGhlbHAiCi0gIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRtb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCi19Ci0KLQogIyBmdW5jX2xhbGliX3AgZmlsZQogIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCBgLmxhJyBsaWJyYXJ5IG9yIGAubG8nIG9iamVjdCBmaWxlLgogIyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYSBiYXNpYyBzYW5pdHkgY2hlY2s7IGl0IHdpbGwgaGFyZGx5IGZsdXNoIG91dApAQCAtOTUwLDEyICsxMjg3LDkgQEAKICMgdGVtcG9yYXJ5IGx0d3JhcHBlcl9zY3JpcHQuCiBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICgpCiB7Ci0gICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiIKLSAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiQxIjsgdGhlbgotCWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKLQlmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLQlmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCi0gICAgZmkKKyAgICBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCisgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgogfQogCiAjIGZ1bmNfbHR3cmFwcGVyX3AgZmlsZQpAQCAtMTAwMSw2ICsxMzM1LDM3IEBACiB9CiAKIAorIyBmdW5jX3Jlc29sdmVfc3lzcm9vdCBQQVRICisjIFJlcGxhY2UgYSBsZWFkaW5nID0gaW4gUEFUSCB3aXRoIGEgc3lzcm9vdC4gIFN0b3JlIHRoZSByZXN1bHQgaW50bworIyBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKK2Z1bmNfcmVzb2x2ZV9zeXNyb290ICgpCit7CisgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kMQorICBjYXNlICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgaW4KKyAgPSopCisgICAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICA7OworICBlc2FjCit9CisKKyMgZnVuY19yZXBsYWNlX3N5c3Jvb3QgUEFUSAorIyBJZiBQQVRIIGJlZ2lucyB3aXRoIHRoZSBzeXNyb290LCByZXBsYWNlIGl0IHdpdGggPSBhbmQKKyMgc3RvcmUgdGhlIHJlc3VsdCBpbnRvIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdC4KK2Z1bmNfcmVwbGFjZV9zeXNyb290ICgpCit7CisgIGNhc2UgIiRsdF9zeXNyb290OiQxIiBpbgorICA/KjoiJGx0X3N5c3Jvb3QiKikKKyAgICBmdW5jX3N0cmlwbmFtZSAiJGx0X3N5c3Jvb3QiICcnICIkMSIKKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9Ij0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorICAgIDs7CisgICopCisgICAgIyBJbmNsdWRpbmcgbm8gc3lzcm9vdC4KKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9JDEKKyAgICA7OworICBlc2FjCit9CisKICMgZnVuY19pbmZlcl90YWcgYXJnCiAjIEluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uIHRvIHVzZSBpZiBhbnkgYXJlIGF2YWlsYWJsZSBhbmQKICMgaWYgb25lIHdhc24ndCBjaG9zZW4gdmlhIHRoZSAiLS10YWciIGNvbW1hbmQgbGluZSBvcHRpb24uCkBAIC0xMDEzLDEzICsxMzc4LDE1IEBACiAgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KICAgICAgIENDX3F1b3RlZD0KICAgICAgIGZvciBhcmcgaW4gJENDOyBkbwotICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotCUNDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKICAgICAgIGRvbmUKKyAgICAgIENDX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ2AKKyAgICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAogICAgICAgY2FzZSAkQCBpbgogICAgICAgIyBCbGFua3MgaW4gdGhlIGNvbW1hbmQgbWF5IGhhdmUgYmVlbiBzdHJpcHBlZCBieSB0aGUgY2FsbGluZyBzaGVsbCwKICAgICAgICMgYnV0IG5vdCBmcm9tIHRoZSBDQyBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIGNvbmZpZ3VyZSB3YXMgcnVuLgotICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJEVDSE8gJENDYCAiKiB8ICJgJEVDSE8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkRUNITyAkQ0NfcXVvdGVkYCAiKiB8ICJgJEVDSE8gJENDX3F1b3RlZGAgIiopIDs7CisgICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiICRDQ19leHBhbmRlZCAiKiB8ICIkQ0NfZXhwYW5kZWQgIiogfCBcCisgICAgICAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiAkQ0NfcXVvdGVkX2V4cGFuZGVkICIqIHwgIiRDQ19xdW90ZWRfZXhwYW5kZWQgIiopIDs7CiAgICAgICAjIEJsYW5rcyBhdCB0aGUgc3RhcnQgb2YgJGJhc2VfY29tcGlsZSB3aWxsIGNhdXNlIHRoaXMgdG8gZmFpbAogICAgICAgIyBpZiB3ZSBkb24ndCBjaGVjayBmb3IgdGhlbSBhcyB3ZWxsLgogICAgICAgKikKQEAgLTEwMzAsMTEgKzEzOTcsMTMgQEAKIAkgICAgQ0NfcXVvdGVkPQogCSAgICBmb3IgYXJnIGluICRDQzsgZG8KIAkgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCi0JICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLQkgICAgICBDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCiAJICAgIGRvbmUKKwkgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAorCSAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKIAkgICAgY2FzZSAiJEAgIiBpbgotCSAgICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgYCRFQ0hPICRDQ2AgIiogfCAiYCRFQ0hPICRDQ2AgIiogfCAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiBgJEVDSE8gJENDX3F1b3RlZGAgIiogfCAiYCRFQ0hPICRDQ19xdW90ZWRgICIqKQorCSAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiICRDQ19leHBhbmRlZCAiKiB8ICIkQ0NfZXhwYW5kZWQgIiogfCBcCisJICAgICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiICRDQ19xdW90ZWRfZXhwYW5kZWQgIiogfCAiJENDX3F1b3RlZF9leHBhbmRlZCAiKikKIAkgICAgICAjIFRoZSBjb21waWxlciBpbiB0aGUgYmFzZSBjb21waWxlIGNvbW1hbmQgbWF0Y2hlcwogCSAgICAgICMgdGhlIG9uZSBpbiB0aGUgdGFnZ2VkIGNvbmZpZ3VyYXRpb24uCiAJICAgICAgIyBBc3N1bWUgdGhpcyBpcyB0aGUgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gd2Ugd2FudC4KQEAgLTEwOTcsNiArMTQ2Niw0ODYgQEAKICAgICB9CiB9CiAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgRklMRSBOQU1FIEFORCBQQVRIIENPTlZFUlNJT04gSEVMUEVSIEZVTkNUSU9OUyAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgQVJHCisjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LAorIyBhbmQgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhCisjIGNvcnJlY3RseSBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtCisjIGluICRidWlsZCdzICRQQVRILgorIworIyBBUkcgaXMgdGhlICRidWlsZCBmaWxlIG5hbWUgdG8gYmUgY29udmVydGVkIHRvIHczMiBmb3JtYXQuCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0LCBhbmQgd2lsbAorIyBiZSBlbXB0eSBvbiBlcnJvciAob3Igd2hlbiBBUkcgaXMgZW1wdHkpCitmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvIGVycm9yIGNvZGUsIHNvIHdlCisgICAgIyBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZiBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUKKyAgICAjIGNvbW1hbmQgaXMgbm90IGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKKyAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGggZXJyb3IgY29kZSBvZgorICAgICMgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246CisgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXA9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCisgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXB9IjsgdGhlbgorICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9YCRFQ0hPICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXAiIHwKKyAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorICAgIGVsc2UKKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PQorICAgIGZpCisgIGZpCit9CisjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiBBUkcKKyMgSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LCBhbmQKKyMgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhIGNvcnJlY3RseQorIyBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtIGluICRidWlsZCdzCisjICRQQVRILiBBc3N1bWVzIEFSRyBoYXMgbm8gbGVhZGluZyBvciB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzLgorIworIyBBUkcgaXMgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHdpbjMyLgorIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdC4KKyMgVW5jb252ZXJ0aWJsZSBmaWxlIChkaXJlY3RvcnkpIG5hbWVzIGluIEFSRyBhcmUgc2tpcHBlZDsgaWYgbm8gZGlyZWN0b3J5IG5hbWVzCisjIGFyZSBjb252ZXJ0aWJsZSwgdGhlbiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eS4KK2Z1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRocywgb25seSBmaWxlIG5hbWVzCisgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgIG9sZElGUz0kSUZTCisgICAgSUZTPToKKyAgICBmb3IgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIGluICQxOyBkbworICAgICAgSUZTPSRvbGRJRlMKKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YiCisgICAgICBpZiB0ZXN0IC1uICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiIDsgdGhlbgorICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiOyB0aGVuCisgICAgICAgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICAgICAgZWxzZQorICAgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0ICI7JGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICAgICAgICBmaQorICAgICAgZmkKKyAgICBkb25lCisgICAgSUZTPSRvbGRJRlMKKyAgZmkKK30KKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyCisKKworIyBmdW5jX2N5Z3BhdGggQVJHUy4uLgorIyBXcmFwcGVyIGFyb3VuZCBjYWxsaW5nIHRoZSBjeWdwYXRoIHByb2dyYW0gdmlhIExUX0NZR1BBVEguIFRoaXMgaXMgdXNlZCB3aGVuCisjIHdoZW4gKDEpICRidWlsZCBpcyAqbml4IGFuZCBDeWd3aW4gaXMgaG9zdGVkIHZpYSBhIHdpbmUgZW52aXJvbm1lbnQ7IG9yICgyKQorIyAkYnVpbGQgaXMgTVNZUyBhbmQgJGhvc3QgaXMgQ3lnd2luLCBvciAoMykgJGJ1aWxkIGlzIEN5Z3dpbi4gSW4gY2FzZSAoMSkgb3IKKyMgKDIpLCByZXR1cm5zIHRoZSBDeWd3aW4gZmlsZSBuYW1lIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQKKyMgZmlsZSBuYW1lIG9yIHBhdGggaXMgYXNzdW1lZCB0byBiZSBpbiB3MzIgZm9ybWF0LCBhcyBwcmV2aW91c2x5IGNvbnZlcnRlZAorIyBmcm9tICRidWlsZCdzICpuaXggb3IgTVNZUyBmb3JtYXQpLiBJbiBjYXNlICgzKSwgcmV0dXJucyB0aGUgdzMyIGZpbGUgbmFtZQorIyBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0IGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4KKyMgQ3lnd2luIGZvcm1hdCkuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIG9uIGVycm9yLgorIworIyBBUkdTIGFyZSBwYXNzZWQgdG8gY3lncGF0aCwgd2l0aCB0aGUgbGFzdCBvbmUgYmVpbmcgdGhlIGZpbGUgbmFtZSBvciBwYXRoIHRvCisjIGJlIGNvbnZlcnRlZC4KKyMKKyMgU3BlY2lmeSB0aGUgYWJzb2x1dGUgKm5peCAob3IgdzMyKSBuYW1lIHRvIGN5Z3BhdGggaW4gdGhlIExUX0NZR1BBVEgKKyMgZW52aXJvbm1lbnQgdmFyaWFibGU7IGRvIG5vdCBwdXQgaXQgaW4gJFBBVEguCitmdW5jX2N5Z3BhdGggKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBpZiB0ZXN0IC1uICIkTFRfQ1lHUEFUSCIgJiYgdGVzdCAtZiAiJExUX0NZR1BBVEgiOyB0aGVuCisgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD1gJExUX0NZR1BBVEggIiRAIiAyPi9kZXYvbnVsbGAKKyAgICBpZiB0ZXN0ICIkPyIgLW5lIDA7IHRoZW4KKyAgICAgICMgb24gZmFpbHVyZSwgZW5zdXJlIHJlc3VsdCBpcyBlbXB0eQorICAgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KKyAgICBmaQorICBlbHNlCisgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KKyAgICBmdW5jX2Vycm9yICJMVF9DWUdQQVRIIGlzIGVtcHR5IG9yIHNwZWNpZmllcyBub24tZXhpc3RlbnQgZmlsZTogXGAkTFRfQ1lHUEFUSCciCisgIGZpCit9CisjZW5kOiBmdW5jX2N5Z3BhdGgKKworCisjIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBvciBwYXRoIEFSRyBmcm9tIE1TWVMgZm9ybWF0IHRvIHczMiBmb3JtYXQuICBSZXR1cm4KKyMgcmVzdWx0IGluIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0CisgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKKyAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCit9CisjZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgQVJHMSBBUkcyCisjIFZlcmlmeSB0aGF0IEFSRzEgKGEgZmlsZSBuYW1lIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKKyMgZm9ybWF0IGluIEFSRzIuIE90aGVyd2lzZSwgZW1pdCBhbiBlcnJvciBtZXNzYWdlLCBidXQgY29udGludWUgKHJlc2V0dGluZworIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gQVJHMSkuCitmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIHRlc3QgLXogIiQyIiAmJiB0ZXN0IC1uICIkMSIgOyB0aGVuCisgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IGZpbGUgbmFtZSBjb3JyZXNwb25kaW5nIHRvIgorICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCisgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisgICAgIyBGYWxsYmFjazoKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sKKworCisjIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIEZST01fUEFUSFNFUCBUT19QQVRIU0VQIEZST01fUEFUSCBUT19QQVRICisjIFZlcmlmeSB0aGF0IEZST01fUEFUSCAoYSBwYXRoIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKKyMgZm9ybWF0IGluIFRPX1BBVEguIE90aGVyd2lzZSwgZW1pdCBhbiBlcnJvciBtZXNzYWdlLCBidXQgY29udGludWUsIHJlc2V0dGluZworIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gYSBzaW1wbGlzdGljIGZhbGxiYWNrIHZhbHVlIChzZWUgYmVsb3cpLgorZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBpZiB0ZXN0IC16ICIkNCIgJiYgdGVzdCAtbiAiJDMiOyB0aGVuCisgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSB0aGUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCisgICAgZnVuY19lcnJvciAiICBcYCQzJyIKKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKyAgICAjIEZhbGxiYWNrLiAgVGhpcyBpcyBhIGRlbGliZXJhdGVseSBzaW1wbGlzdGljICJjb252ZXJzaW9uIiBhbmQKKyAgICAjIHNob3VsZCBub3QgYmUgImltcHJvdmVkIi4gIFNlZSBsaWJ0b29sLmluZm8uCisgICAgaWYgdGVzdCAieCQxIiAhPSAieCQyIjsgdGhlbgorICAgICAgbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzPSJzfCQxfCQyfGciCisgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiQzIiB8CisgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnMiYAorICAgIGVsc2UKKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMiCisgICAgZmkKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgRlJPTlRQQVQgQkFDS1BBVCBSRVBMIE9SSUcKKyMgTW9kaWZpZXMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IGJ5IHByZXBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgRlJPTlRQQVQKKyMgYW5kIGFwcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBCQUNLUEFULgorZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICgpCit7CisgICRvcHRfZGVidWcKKyAgY2FzZSAkNCBpbgorICAkMSApIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIDs7CisgIGVzYWMKKyAgY2FzZSAkNCBpbgorICAkMiApIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCAiJDMiCisgICAgOzsKKyAgZXNhYworfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgJGJ1aWxkIHRvICRob3N0IEZJTEUgTkFNRSBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfZmlsZV9jbWQgQVJHJworIworIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgorIyBSZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKworCisjIGZ1bmNfdG9faG9zdF9maWxlIEFSRworIyBDb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0CisjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfdG9faG9zdF9maWxlICgpCit7CisgICRvcHRfZGVidWcKKyAgJHRvX2hvc3RfZmlsZV9jbWQgIiQxIgorfQorIyBlbmQgZnVuY190b19ob3N0X2ZpbGUKKworCisjIGZ1bmNfdG9fdG9vbF9maWxlIEFSRyBMQVpZCisjIGNvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB0b29sY2hhaW4gZm9ybWF0LiBSZXR1cm4KKyMgcmVzdWx0IGluIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdC4gIElmIHRoZSBjb252ZXJzaW9uIGluIHVzZSBpcyBsaXN0ZWQKKyMgaW4gKHRoZSBjb21tYSBzZXBhcmF0ZWQpIExBWlksIG5vIGNvbnZlcnNpb24gdGFrZXMgcGxhY2UuCitmdW5jX3RvX3Rvb2xfZmlsZSAoKQoreworICAkb3B0X2RlYnVnCisgIGNhc2UgLCQyLCBpbgorICAgICosIiR0b190b29sX2ZpbGVfY21kIiwqKQorICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSQxCisgICAgICA7OworICAgICopCisgICAgICAkdG9fdG9vbF9maWxlX2NtZCAiJDEiCisgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdAorICAgICAgOzsKKyAgZXNhYworfQorIyBlbmQgZnVuY190b190b29sX2ZpbGUKKworCisjIGZ1bmNfY29udmVydF9maWxlX25vb3AgQVJHCisjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX25vb3AgKCkKK3sKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25vb3AKKworCisjIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKworCisjIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgYmVjYXVzZSAkYnVpbGQgaXMgY3lnd2luLCB3ZSBjYWxsICJ0aGUiIGN5Z3BhdGggaW4gJFBBVEg7IG5vIG5lZWQgdG8gdXNlCisgICAgIyBMVF9DWUdQQVRIIGluIHRoaXMgY2FzZS4KKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9YGN5Z3BhdGggLW0gIiQxImAKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKworCisjIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIgQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudAorIyBhbmQgYSB3b3JraW5nIHdpbmVwYXRoLiBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gTVNZUyB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgTFRfQ1lHUEFUSCBzZXQuCisjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgorICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKworCisjIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQKKyMgaW4gYSB3aW5lIGVudmlyb25tZW50LCB3b3JraW5nIHdpbmVwYXRoLCBhbmQgTFRfQ1lHUEFUSCBzZXQuICBSZXR1cm5zIHJlc3VsdAorIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBjb252ZXJ0IGZyb20gKm5peCB0byB3MzIsIHRoZW4gdXNlIGN5Z3BhdGggdG8gY29udmVydCBmcm9tIHczMiB0byBjeWd3aW4uCisgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCisgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgJGJ1aWxkIHRvICRob3N0IFBBVEggQ09OVkVSU0lPTiBGVU5DVElPTlMgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIGludm9rZWQgdmlhIGAkdG9faG9zdF9wYXRoX2NtZCBBUkcnCisjCisjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCisjIFRoZSByZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKyMKKyMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiAgSWYKKyMgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0CisjIGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpIG9uIG91dHB1dC4KKyMKKyMgQWxsIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIG5hbWVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbjoKKyMgICBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbiAgICA6IGZ1bmNfY29udmVydF9maWxlX1hfdG9fWSAoKQorIyAgIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbiAgICAgICAgIDogZnVuY19jb252ZXJ0X3BhdGhfWF90b19ZICgpCisjIHdoZXJlLCBmb3IgYW55IGdpdmVuICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbiB0aGUgJ1hfdG9fWScgdmFsdWUgaXMgdGhlCisjIHNhbWUuICBJZiBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgYWRkZWQgZm9yIG5ldyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zLAorIyB0aGUgdHdvIG5ldyBmdW5jdGlvbnMgbXVzdCBmb2xsb3cgdGhpcyBwYXR0ZXJuLCBvciBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorIyB3aWxsIGJyZWFrLgorCisKKyMgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKyMgRW5zdXJlcyB0aGF0IGZ1bmN0aW9uICJwb2ludGVyIiB2YXJpYWJsZSAkdG9faG9zdF9wYXRoX2NtZCBpcyBzZXQgdG8gdGhlCisjIGFwcHJvcHJpYXRlIHZhbHVlLCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgJHRvX2hvc3RfZmlsZV9jbWQuCit0b19ob3N0X3BhdGhfY21kPQorZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBpZiB0ZXN0IC16ICIkdG9faG9zdF9wYXRoX2NtZCI7IHRoZW4KKyAgICBmdW5jX3N0cmlwbmFtZSAnZnVuY19jb252ZXJ0X2ZpbGVfJyAnJyAiJHRvX2hvc3RfZmlsZV9jbWQiCisgICAgdG9faG9zdF9wYXRoX2NtZD0iZnVuY19jb252ZXJ0X3BhdGhfJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9IgorICBmaQorfQorCisKKyMgZnVuY190b19ob3N0X3BhdGggQVJHCisjIENvbnZlcnRzIHRoZSBwYXRoIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0CisjIGluIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KK2Z1bmNfdG9faG9zdF9wYXRoICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKyAgJHRvX2hvc3RfcGF0aF9jbWQgIiQxIgorfQorIyBlbmQgZnVuY190b19ob3N0X3BhdGgKKworCisjIGZ1bmNfY29udmVydF9wYXRoX25vb3AgQVJHCisjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX25vb3AgKCkKK3sKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25vb3AKKworCisjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCisjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tIEFSRy4gIE1TWVMKKyAgICAjIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlOyBjeWdwYXRoIHR1cm5zIHRoZW0gaW50byAnLjsnIGFuZCAnOy4nOworICAgICMgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGN5Z3BhdGggLW0gLXAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxImAKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIKKworCisjIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIgQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQgYW5kCisjIGEgd29ya2luZyB3aW5lcGF0aC4gIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX25peF90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4gQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4gKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4KKworCisjIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkIGluIGEKKyMgYSB3aW5lIGVudmlyb25tZW50LCB3b3JraW5nIHdpbmVwYXRoLCBhbmQgTFRfQ1lHUEFUSCBzZXQuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCisgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQorICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luCisKKwogIyBmdW5jX21vZGVfY29tcGlsZSBhcmcuLi4KIGZ1bmNfbW9kZV9jb21waWxlICgpCiB7CkBAIC0xMTM3LDEyICsxOTg2LDEyIEBACiAJICA7OwogCiAJLXBpZSB8IC1mcGllIHwgLWZQSUUpCi0gICAgICAgICAgcGllX2ZsYWc9IiRwaWVfZmxhZyAkYXJnIgorICAgICAgICAgIGZ1bmNfYXBwZW5kIHBpZV9mbGFnICIgJGFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCiAJLXNoYXJlZCB8IC1zdGF0aWMgfCAtcHJlZmVyLXBpYyB8IC1wcmVmZXItbm9uLXBpYykKLQkgIGxhdGVyPSIkbGF0ZXIgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGxhdGVyICIgJGFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCkBAIC0xMTYzLDE1ICsyMDEyLDE0IEBACiAJICBzYXZlX2lmcz0iJElGUyI7IElGUz0nLCcKIAkgIGZvciBhcmcgaW4gJGFyZ3M7IGRvCiAJICAgIElGUz0iJHNhdmVfaWZzIgotCSAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotCSAgICBsYXN0YXJnPSIkbGFzdGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBsYXN0YXJnICIkYXJnIgogCSAgZG9uZQogCSAgSUZTPSIkc2F2ZV9pZnMiCiAJICBmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRsYXN0YXJnIgogCSAgbGFzdGFyZz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAKIAkgICMgQWRkIHRoZSBhcmd1bWVudHMgdG8gYmFzZV9jb21waWxlLgotCSAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRsYXN0YXJnIgorCSAgZnVuY19hcHBlbmQgYmFzZV9jb21waWxlICIgJGxhc3RhcmciCiAJICBjb250aW51ZQogCSAgOzsKIApAQCAtMTE4Nyw4ICsyMDM1LDcgQEAKICAgICAgIGVzYWMgICAgIyAgY2FzZSAkYXJnX21vZGUKIAogICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBwcmV2aW91cyBhcmd1bWVudC4KLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRsYXN0YXJnIgotICAgICAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBiYXNlX2NvbXBpbGUgIiRsYXN0YXJnIgogICAgIGRvbmUgIyBmb3IgYXJnCiAKICAgICBjYXNlICRhcmdfbW9kZSBpbgpAQCAtMTIxMyw3ICsyMDYwLDcgQEAKICAgICAqLltjQ0ZTaWZtc29dIHwgXAogICAgICouYWRhIHwgKi5hZGIgfCAqLmFkcyB8ICouYXNtIHwgXAogICAgICouYysrIHwgKi5jYyB8ICouaWkgfCAqLmNsYXNzIHwgKi5jcHAgfCAqLmN4eCB8IFwKLSAgICAqLltmRl1bMDldPyB8ICouZm9yIHwgKi5qYXZhIHwgKi5vYmogfCAqLnN4KQorICAgICouW2ZGXVswOV0/IHwgKi5mb3IgfCAqLmphdmEgfCAqLmdvIHwgKi5vYmogfCAqLnN4IHwgKi5jdSB8ICouY3VwKQogICAgICAgZnVuY194Zm9ybSAiJGxpYm9iaiIKICAgICAgIGxpYm9iaj0kZnVuY194Zm9ybV9yZXN1bHQKICAgICAgIDs7CkBAIC0xMjg4LDcgKzIxMzUsNyBAQAogICAgICMgQ2FsY3VsYXRlIHRoZSBmaWxlbmFtZSBvZiB0aGUgb3V0cHV0IG9iamVjdCBpZiBjb21waWxlciBkb2VzCiAgICAgIyBub3Qgc3VwcG9ydCAtbyB3aXRoIC1jCiAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSBubzsgdGhlbgotICAgICAgb3V0cHV0X29iaj1gJEVDSE8gIlgkc3JjZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnIC1lICdzJVwuW14uXSokJSUnYC4ke29iamV4dH0KKyAgICAgIG91dHB1dF9vYmo9YCRFQ0hPICIkc3JjZmlsZSIgfCAkU0VEICdzJV4uKi8lJTsgcyVcLlteLl0qJCUlJ2AuJHtvYmpleHR9CiAgICAgICBsb2NrZmlsZT0iJG91dHB1dF9vYmoubG9jayIKICAgICBlbHNlCiAgICAgICBvdXRwdXRfb2JqPQpAQCAtMTMxOSwxNyArMjE2NiwxNiBAQAogCSRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKIAlleGl0ICRFWElUX0ZBSUxVUkUKICAgICAgIGZpCi0gICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkb3V0cHV0X29iaiIKKyAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkb3V0cHV0X29iaiIKICAgICAgICRFQ0hPICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgogICAgIGZpCiAKICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0Ci0gICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJGxvY2tmaWxlIgorICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkbG9ja2ZpbGUiCiAgICAgdHJhcCAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJyAxIDIgMTUKIAotICAgIGlmIHRlc3QgLW4gIiRmaXhfc3JjZmlsZV9wYXRoIjsgdGhlbgotICAgICAgZXZhbCBzcmNmaWxlPVwiJGZpeF9zcmNmaWxlX3BhdGhcIgotICAgIGZpCisgICAgZnVuY190b190b29sX2ZpbGUgIiRzcmNmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgIHNyY2ZpbGU9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRzcmNmaWxlIgogICAgIHFzcmNmaWxlPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAogCkBAIC0xMzQ5LDcgKzIxOTUsNyBAQAogCiAgICAgICBpZiB0ZXN0IC16ICIkb3V0cHV0X29iaiI7IHRoZW4KIAkjIFBsYWNlIFBJQyBvYmplY3RzIGluICRvYmpkaXIKLQljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJGxvYmoiCiAgICAgICBmaQogCiAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIglcCkBAIC0xMzk2LDExICsyMjQyLDExIEBACiAJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUgJHBpY19mbGFnIgogICAgICAgZmkKICAgICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0geWVzOyB0aGVuCi0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJG9iaiIKKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJG9iaiIKICAgICAgIGZpCiAKICAgICAgICMgU3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGlmIHdlIGFscmVhZHkgZGlkIGEgUElDIGNvbXBpbGF0aW9uLgotICAgICAgY29tbWFuZD0iJGNvbW1hbmQkc3VwcHJlc3Nfb3V0cHV0IgorICAgICAgZnVuY19hcHBlbmQgY29tbWFuZCAiJHN1cHByZXNzX291dHB1dCIKICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiIFwKICAgICAgICAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScKIApAQCAtMTQ0NSwxMyArMjI5MSwxMyBAQAogfQogCiAkb3B0X2hlbHAgfHwgewotdGVzdCAiJG1vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KKyAgdGVzdCAiJG9wdF9tb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9CiB9CiAKIGZ1bmNfbW9kZV9oZWxwICgpCiB7CiAgICAgIyBXZSBuZWVkIHRvIGRpc3BsYXkgaGVscCBmb3IgZWFjaCBvZiB0aGUgbW9kZXMuCi0gICAgY2FzZSAkbW9kZSBpbgorICAgIGNhc2UgJG9wdF9tb2RlIGluCiAgICAgICAiIikKICAgICAgICAgIyBHZW5lcmljIGhlbHAgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHVzYWdlIGNvbW1lbnRzCiAgICAgICAgICMgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgZmlsZS4KQEAgLTE0ODIsMTAgKzIzMjgsMTEgQEAKIAogICAtbyBPVVRQVVQtRklMRSAgICBzZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gT1VUUFVULUZJTEUKICAgLW5vLXN1cHByZXNzICAgICAgZG8gbm90IHN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBmb3IgbXVsdGlwbGUgcGFzc2VzCi0gIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZGluZyBQSUMgb2JqZWN0cyBvbmx5Ci0gIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQorICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGQgUElDIG9iamVjdHMgb25seQorICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGQgbm9uLVBJQyBvYmplY3RzIG9ubHkKICAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKICAgLXN0YXRpYyAgICAgICAgICAgb25seSBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCisgIC1XYyxGTEFHICAgICAgICAgIHBhc3MgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKIAogQ09NUElMRS1DT01NQU5EIGlzIGEgY29tbWFuZCB0byBiZSB1c2VkIGluIGNyZWF0aW5nIGEgXGBzdGFuZGFyZCcgb2JqZWN0IGZpbGUKIGZyb20gdGhlIGdpdmVuIFNPVVJDRUZJTEUuCkBAIC0xNTM4LDcgKzIzODUsNyBAQAogCiBUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgb2YgSU5TVEFMTC1DT01NQU5EIGFyZSB0cmVhdGVkIHNwZWNpYWxseToKIAotICAtaW5zdC1wcmVmaXggUFJFRklYLURJUiAgVXNlIFBSRUZJWC1ESVIgYXMgYSBzdGFnaW5nIGFyZWEgZm9yIGluc3RhbGxhdGlvbgorICAtaW5zdC1wcmVmaXgtZGlyIFBSRUZJWC1ESVIgIFVzZSBQUkVGSVgtRElSIGFzIGEgc3RhZ2luZyBhcmVhIGZvciBpbnN0YWxsYXRpb24KIAogVGhlIHJlc3Qgb2YgdGhlIGNvbXBvbmVudHMgYXJlIGludGVycHJldGVkIGFzIGFyZ3VtZW50cyB0byB0aGF0IGNvbW1hbmQgKG9ubHkKIEJTRC1jb21wYXRpYmxlIGluc3RhbGwgb3B0aW9ucyBhcmUgcmVjb2duaXplZCkuIgpAQCAtMTU1OCw2ICsyNDA1LDggQEAKIAogICAtYWxsLXN0YXRpYyAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBhdCBhbGwKICAgLWF2b2lkLXZlcnNpb24gICAgZG8gbm90IGFkZCBhIHZlcnNpb24gc3VmZml4IGlmIHBvc3NpYmxlCisgIC1iaW5kaXIgQklORElSICAgIHNwZWNpZnkgcGF0aCB0byBiaW5hcmllcyBkaXJlY3RvcnkgKGZvciBzeXN0ZW1zIHdoZXJlCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyBtdXN0IGJlIGZvdW5kIGluIHRoZSBQQVRIIHNldHRpbmcgYXQgcnVudGltZSkKICAgLWRsb3BlbiBGSUxFICAgICAgXGAtZGxwcmVvcGVuJyBGSUxFIGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZCBhdCBydW50aW1lCiAgIC1kbHByZW9wZW4gRklMRSAgIGxpbmsgaW4gRklMRSBhbmQgYWRkIGl0cyBzeW1ib2xzIHRvIGx0X3ByZWxvYWRlZF9zeW1ib2xzCiAgIC1leHBvcnQtZHluYW1pYyAgIGFsbG93IHN5bWJvbHMgZnJvbSBPVVRQVVQtRklMRSB0byBiZSByZXNvbHZlZCB3aXRoIGRsc3ltKDMpCkBAIC0xNTg2LDYgKzI0MzUsMTEgQEAKICAgLXZlcnNpb24taW5mbyBDVVJSRU5UWzpSRVZJU0lPTls6QUdFXV0KICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSBsaWJyYXJ5IHZlcnNpb24gaW5mbyBbZWFjaCB2YXJpYWJsZSBkZWZhdWx0cyB0byAwXQogICAtd2VhayBMSUJOQU1FICAgICBkZWNsYXJlIHRoYXQgdGhlIHRhcmdldCBwcm92aWRlcyB0aGUgTElCTkFNRSBpbnRlcmZhY2UKKyAgLVdjLEZMQUcKKyAgLVhjb21waWxlciBGTEFHICAgcGFzcyBsaW5rZXItc3BlY2lmaWMgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKKyAgLVdsLEZMQUcKKyAgLVhsaW5rZXIgRkxBRyAgICAgcGFzcyBsaW5rZXItc3BlY2lmaWMgRkxBRyBkaXJlY3RseSB0byB0aGUgbGlua2VyCisgIC1YQ0NsaW5rZXIgRkxBRyAgIHBhc3MgbGluay1zcGVjaWZpYyBGTEFHIHRvIHRoZSBjb21waWxlciBkcml2ZXIgKENDKQogCiBBbGwgb3RoZXIgb3B0aW9ucyAoYXJndW1lbnRzIGJlZ2lubmluZyB3aXRoIFxgLScpIGFyZSBpZ25vcmVkLgogCkBAIC0xNjE5LDE4ICsyNDczLDQ0IEBACiAgICAgICAgIDs7CiAKICAgICAgICopCi0gICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKyAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKICAgICAgICAgOzsKICAgICBlc2FjCiAKLSAgICAkRUNITworICAgIGVjaG8KICAgICAkRUNITyAiVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgbW9kZXMuIgotCi0gICAgZXhpdCAkPwogfQogCi0gICMgTm93IHRoYXQgd2UndmUgY29sbGVjdGVkIGEgcG9zc2libGUgLS1tb2RlIGFyZywgc2hvdyBoZWxwIGlmIG5lY2Vzc2FyeQotICAkb3B0X2hlbHAgJiYgZnVuY19tb2RlX2hlbHAKKyMgTm93IHRoYXQgd2UndmUgY29sbGVjdGVkIGEgcG9zc2libGUgLS1tb2RlIGFyZywgc2hvdyBoZWxwIGlmIG5lY2Vzc2FyeQoraWYgJG9wdF9oZWxwOyB0aGVuCisgIGlmIHRlc3QgIiRvcHRfaGVscCIgPSA6OyB0aGVuCisgICAgZnVuY19tb2RlX2hlbHAKKyAgZWxzZQorICAgIHsKKyAgICAgIGZ1bmNfaGVscCBub2V4aXQKKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisJZnVuY19tb2RlX2hlbHAKKyAgICAgIGRvbmUKKyAgICB9IHwgc2VkIC1uICcxcDsgMiwkcy9eVXNhZ2U6LyAgb3I6IC9wJworICAgIHsKKyAgICAgIGZ1bmNfaGVscCBub2V4aXQKKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisJZWNobworCWZ1bmNfbW9kZV9oZWxwCisgICAgICBkb25lCisgICAgfSB8CisgICAgc2VkICcxZAorICAgICAgL15XaGVuIHJlcG9ydGluZy8sL15SZXBvcnQveworCUgKKwlkCisgICAgICB9CisgICAgICAkeAorICAgICAgL2luZm9ybWF0aW9uIGFib3V0IG90aGVyIG1vZGVzL2QKKyAgICAgIC9tb3JlIGRldGFpbGVkIC4qTU9ERS9kCisgICAgICBzL15Vc2FnZTouKi0tbW9kZT1cKFteIF0qXCkgLiovRGVzY3JpcHRpb24gb2YgXDEgbW9kZTovJworICBmaQorICBleGl0ICQ/CitmaQogCiAKICMgZnVuY19tb2RlX2V4ZWN1dGUgYXJnLi4uCkBAIC0xNjQzLDEzICsyNTIzLDE2IEBACiAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBDT01NQU5EIgogCiAgICAgIyBIYW5kbGUgLWRsb3BlbiBmbGFncyBpbW1lZGlhdGVseS4KLSAgICBmb3IgZmlsZSBpbiAkZXhlY3V0ZV9kbGZpbGVzOyBkbworICAgIGZvciBmaWxlIGluICRvcHRfZGxvcGVuOyBkbwogICAgICAgdGVzdCAtZiAiJGZpbGUiIFwKIAl8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiCiAKICAgICAgIGRpcj0KICAgICAgIGNhc2UgJGZpbGUgaW4KICAgICAgICoubGEpCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgorCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorCiAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAogCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKQEAgLTE2NzEsNyArMjU1NCw3IEBACiAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKIAogCWlmIHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgotCSAgZGlyPSIkZGlyLyRvYmpkaXIiCisJICBmdW5jX2FwcGVuZCBkaXIgIi8kb2JqZGlyIgogCWVsc2UKIAkgIGlmIHRlc3QgISAtZiAiJGRpci8kZGxuYW1lIjsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgpAQCAtMTcxMiw3ICsyNTk1LDcgQEAKICAgICBmb3IgZmlsZQogICAgIGRvCiAgICAgICBjYXNlICRmaWxlIGluCi0gICAgICAtKikgOzsKKyAgICAgIC0qIHwgKi5sYSB8ICoubG8gKSA7OwogICAgICAgKikKIAkjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyByZWFsbHkgYSBsaWJ0b29sIHByb2dyYW0uCiAJaWYgZnVuY19sdHdyYXBwZXJfc2NyaXB0X3AgIiRmaWxlIjsgdGhlbgpAQCAtMTcyOCw4ICsyNjExLDcgQEAKIAk7OwogICAgICAgZXNhYwogICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmaWxlIgotICAgICAgYXJncz0iJGFyZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGFyZ3MgIiRmaWxlIgogICAgIGRvbmUKIAogICAgIGlmIHRlc3QgIlgkb3B0X2RyeV9ydW4iID0gWGZhbHNlOyB0aGVuCkBAIC0xNzU0LDI5ICsyNjM2LDY2IEBACiAgICAgICAjIERpc3BsYXkgd2hhdCB3b3VsZCBiZSBkb25lLgogICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAJZXZhbCAiXCRFQ0hPIFwiXCRzaGxpYnBhdGhfdmFyPVwkJHNobGlicGF0aF92YXJcIiIKLQkkRUNITyAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorCWVjaG8gImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKICAgICAgIGZpCiAgICAgICAkRUNITyAiJGNtZCRhcmdzIgogICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgZmkKIH0KIAotdGVzdCAiJG1vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KK3Rlc3QgIiRvcHRfbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQogCiAKICMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KIGZ1bmNfbW9kZV9maW5pc2ggKCkKIHsKICAgICAkb3B0X2RlYnVnCi0gICAgbGliZGlycz0iJG5vbm9wdCIKKyAgICBsaWJzPQorICAgIGxpYmRpcnM9CiAgICAgYWRtaW5jbWRzPQogCi0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSAgICAgIGZvciBkaXIKLSAgICAgIGRvCi0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKLSAgICAgIGRvbmUKKyAgICBmb3Igb3B0IGluICIkbm9ub3B0IiAkezErIiRAIn0KKyAgICBkbworICAgICAgaWYgdGVzdCAtZCAiJG9wdCI7IHRoZW4KKwlmdW5jX2FwcGVuZCBsaWJkaXJzICIgJG9wdCIKIAorICAgICAgZWxpZiB0ZXN0IC1mICIkb3B0IjsgdGhlbgorCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRvcHQiOyB0aGVuCisJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKKwllbHNlCisJICBmdW5jX3dhcm5pbmcgIlxgJG9wdCcgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCWZpCisKKyAgICAgIGVsc2UKKwlmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IFxgJG9wdCciCisgICAgICBmaQorICAgIGRvbmUKKworICAgIGlmIHRlc3QgLW4gIiRsaWJzIjsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJGx0X3N5c3Jvb3QiOyB0aGVuCisgICAgICAgIHN5c3Jvb3RfcmVnZXg9YCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisgICAgICAgIHN5c3Jvb3RfY21kPSJzL1woWyAnXVwpJHN5c3Jvb3RfcmVnZXgvXDEvZzsiCisgICAgICBlbHNlCisgICAgICAgIHN5c3Jvb3RfY21kPQorICAgICAgZmkKKworICAgICAgIyBSZW1vdmUgc3lzcm9vdCByZWZlcmVuY2VzCisgICAgICBpZiAkb3B0X2RyeV9ydW47IHRoZW4KKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKyAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCBcYD0nIHByZWZpeGVzIGZyb20gJGxpYiIKKyAgICAgICAgZG9uZQorICAgICAgZWxzZQorICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAorICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbworCSAgc2VkIC1lICIke3N5c3Jvb3RfY21kfSBzL1woWyAnXS1bTFJdXCk9L1wxL2c7IHMvXChbICddXCk9L1wxL2ciICRsaWIgXAorCSAgICA+ICR0bXBkaXIvdG1wLWxhCisJICBtdiAtZiAkdG1wZGlyL3RtcC1sYSAkbGliCisJZG9uZQorICAgICAgICAke1JNfXIgIiR0bXBkaXIiCisgICAgICBmaQorICAgIGZpCisKKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgogICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KIAlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCiAJICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgZmluaXNoIGNvbW1hbmRzLgpAQCAtMTc4Niw3ICsyNzA1LDcgQEAKIAlpZiB0ZXN0IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCiAJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCiAJICBldmFsIGNtZHM9XCIkZmluaXNoX2V2YWxcIgotCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgZnVuY19hcHBlbmQgYWRtaW5jbWRzICIKICAgICAgICAkY21kcyIKIAlmaQogICAgICAgZG9uZQpAQCAtMTc5NSw1MyArMjcxNCw1NSBAQAogICAgICMgRXhpdCBoZXJlIGlmIHRoZXkgd2FudGVkIHNpbGVudCBtb2RlLgogICAgICRvcHRfc2lsZW50ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUwogCi0gICAgJEVDSE8gIlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8ICRYc2VkCi0gICAgJEVDSE8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLSAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotICAgICAgJEVDSE8gIiAgICRsaWJkaXIiCi0gICAgZG9uZQotICAgICRFQ0hPCi0gICAgJEVDSE8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotICAgICRFQ0hPICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKLSAgICAkRUNITyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKLSAgICAkRUNITyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0gICAgICAkRUNITyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgotICAgIGZpCi0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotICAgICAgJEVDSE8gIiAgICAgZHVyaW5nIGxpbmtpbmciCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSAgICAgIGxpYmRpcj1MSUJESVIKLSAgICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgorICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKKyAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCisJJEVDSE8gIiAgICRsaWJkaXIiCisgICAgICBkb25lCisgICAgICBlY2hvCisgICAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgorICAgICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKKyAgICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisJZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKwllY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorCWxpYmRpcj1MSUJESVIKKwlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCiAKLSAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgotICAgIGZpCi0gICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KLSAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKLSAgICBmaQotICAgICRFQ0hPCisJJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorCSRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorCWVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgorICAgICAgZmkKKyAgICAgIGVjaG8KIAotICAgICRFQ0hPICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKLSAgICBjYXNlICRob3N0IGluCi0gICAgICBzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQotICAgICAgICAkRUNITyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKLQkkRUNITyAicGFnZXMuIgotCTs7Ci0gICAgICAqKQotICAgICAgICAkRUNITyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICAgICRFQ0hPICJYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCAkWHNlZAorICAgICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCisgICAgICBjYXNlICRob3N0IGluCisJc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCisJICBlY2hvICJwYWdlcy4iCisJICA7OworCSopCisJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKKwkgIDs7CisgICAgICBlc2FjCisgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorICAgIGZpCiAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiB9CiAKLXRlc3QgIiRtb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQordGVzdCAiJG9wdF9tb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQogCiAKICMgZnVuY19tb2RlX2luc3RhbGwgYXJnLi4uCkBAIC0xODUyLDcgKzI3NzMsNyBAQAogICAgICMgaW5zdGFsbF9wcm9nIChlc3BlY2lhbGx5IG9uIFdpbmRvd3MgTlQpLgogICAgIGlmIHRlc3QgIiRub25vcHQiID0gIiRTSEVMTCIgfHwgdGVzdCAiJG5vbm9wdCIgPSAvYmluL3NoIHx8CiAgICAgICAgIyBBbGxvdyB0aGUgdXNlIG9mIEdOVSBzaHRvb2wncyBpbnN0YWxsIGNvbW1hbmQuCi0gICAgICAgJEVDSE8gIlgkbm9ub3B0IiB8ICRHUkVQIHNodG9vbCA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgY2FzZSAkbm9ub3B0IGluICpzaHRvb2wqKSA6OzsgKikgZmFsc2U7OyBlc2FjOyB0aGVuCiAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCiAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbm9ub3B0IgogICAgICAgaW5zdGFsbF9wcm9nPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQgIgpAQCAtMTg2Niw3ICsyNzg3LDEyIEBACiAgICAgIyBUaGUgcmVhbCBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxhdGlvbiBwcm9ncmFtLgogICAgICMgQWVzdGhldGljYWxseSBxdW90ZSBpdC4KICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSRpbnN0YWxsX3Byb2cKKyAgICBjYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCisgICAgICAqW1xcXCAvXWNwXCAqKSBpbnN0YWxsX2NwPTogOzsKKyAgICAgICopIGluc3RhbGxfY3A9ZmFsc2UgOzsKKyAgICBlc2FjCiAKICAgICAjIFdlIG5lZWQgdG8gYWNjZXB0IGF0IGxlYXN0IGFsbCB0aGUgQlNEIGluc3RhbGwgZmxhZ3MuCiAgICAgZGVzdD0KQEAgLTE4NzYsMTAgKzI4MDIsMTIgQEAKICAgICBpbnN0YWxsX3R5cGU9CiAgICAgaXNkaXI9bm8KICAgICBzdHJpcG1lPQorICAgIG5vX21vZGU9OgogICAgIGZvciBhcmcKICAgICBkbworICAgICAgYXJnMj0KICAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgotCWZpbGVzPSIkZmlsZXMgJGRlc3QiCisJZnVuY19hcHBlbmQgZmlsZXMgIiAkZGVzdCIKIAlkZXN0PSRhcmcKIAljb250aW51ZQogICAgICAgZmkKQEAgLTE4ODcsMTAgKzI4MTUsOSBAQAogICAgICAgY2FzZSAkYXJnIGluCiAgICAgICAtZCkgaXNkaXI9eWVzIDs7CiAgICAgICAtZikKLQljYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCi0JKltcXFwgL11jcFwgKikgOzsKLQkqKSBwcmV2PSRhcmcgOzsKLQllc2FjCisJaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQorCSAgcHJldj0kYXJnCisJZmkKIAk7OwogICAgICAgLWcgfCAtbSB8IC1vKQogCXByZXY9JGFyZwpAQCAtMTkwNCw2ICsyODMxLDEwIEBACiAgICAgICAqKQogCSMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkZWQgYW4gYXJndW1lbnQsIHRoZW4gc2tpcCBpdC4KIAlpZiB0ZXN0IC1uICIkcHJldiI7IHRoZW4KKwkgIGlmIHRlc3QgIngkcHJldiIgPSB4LW0gJiYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSI7IHRoZW4KKwkgICAgYXJnMj0kaW5zdGFsbF9vdmVycmlkZV9tb2RlCisJICAgIG5vX21vZGU9ZmFsc2UKKwkgIGZpCiAJICBwcmV2PQogCWVsc2UKIAkgIGRlc3Q9JGFyZwpAQCAtMTkxNCw3ICsyODQ1LDExIEBACiAKICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgYXJndW1lbnQuCiAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGlmIHRlc3QgLW4gIiRhcmcyIjsgdGhlbgorCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmcyIgorICAgICAgZmkKKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAgICAgZG9uZQogCiAgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXApAQCAtMTkyMyw2ICsyODU4LDEzIEBACiAgICAgdGVzdCAtbiAiJHByZXYiICYmIFwKICAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXYnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKIAorICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiICYmICRub19tb2RlOyB0aGVuCisgICAgICBpZiAkaW5zdGFsbF9jcDsgdGhlbiA6OyBlbHNlCisJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIKKwlmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZmkKKyAgICBmaQorCiAgICAgaWYgdGVzdCAteiAiJGZpbGVzIjsgdGhlbgogICAgICAgaWYgdGVzdCAteiAiJGRlc3QiOyB0aGVuCiAJZnVuY19mYXRhbF9oZWxwICJubyBmaWxlIG9yIGRlc3RpbmF0aW9uIHNwZWNpZmllZCIKQEAgLTE5NzcsMTAgKzI5MTksMTMgQEAKICAgICAgIGNhc2UgJGZpbGUgaW4KICAgICAgICouJGxpYmV4dCkKIAkjIERvIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxhdGVyLgotCXN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgorCWZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZmlsZSIKIAk7OwogCiAgICAgICAqLmxhKQorCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKwogCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCiAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgpAQCAtMTk5NCwyMyArMjkzOSwyMyBAQAogCWlmIHRlc3QgIlgkZGVzdGRpciIgPSAiWCRsaWJkaXIiOyB0aGVuCiAJICBjYXNlICIkY3VycmVudF9saWJkaXJzICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBjdXJyZW50X2xpYmRpcnM9IiRjdXJyZW50X2xpYmRpcnMgJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIGN1cnJlbnRfbGliZGlycyAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZWxzZQogCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgogCSAgY2FzZSAiJGZ1dHVyZV9saWJkaXJzICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmdXR1cmVfbGliZGlycyAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZmkKIAogCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIvIiAiIgogCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0JZGlyPSIkZGlyJG9iamRpciIKKwlmdW5jX2FwcGVuZCBkaXIgIiRvYmpkaXIiCiAKIAlpZiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCiAJICAjIERldGVybWluZSB0aGUgcHJlZml4IHRoZSB1c2VyIGhhcyBhcHBsaWVkIHRvIG91ciBmdXR1cmUgZGlyLgotCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiWCRkZXN0ZGlyIiB8ICRYc2VkIC1lICJzJSRsaWJkaXJcJCUlImAKKwkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIiRkZXN0ZGlyIiB8ICRTRUQgLWUgInMlJGxpYmRpclwkJSUiYAogCiAJICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCiAJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0CkBAIC0yMDIzLDkgKzI5NjgsOSBAQAogCiAJICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgogCSAgICAjIFN0aWNrIHRoZSBpbnN0X3ByZWZpeF9kaXIgZGF0YSBpbnRvIHRoZSBsaW5rIGNvbW1hbmQuCi0JICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAaW5zdF9wcmVmaXhfZGlyQCUtaW5zdC1wcmVmaXgtZGlyICRpbnN0X3ByZWZpeF9kaXIlImAKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAicyVAaW5zdF9wcmVmaXhfZGlyQCUtaW5zdC1wcmVmaXgtZGlyICRpbnN0X3ByZWZpeF9kaXIlImAKIAkgIGVsc2UKLQkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBpbnN0X3ByZWZpeF9kaXJAJSUiYAorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICJzJUBpbnN0X3ByZWZpeF9kaXJAJSUiYAogCSAgZmkKIAogCSAgZnVuY193YXJuaW5nICJyZWxpbmtpbmcgXGAkZmlsZSciCkBAIC0yMDQzLDcgKzI5ODgsNyBAQAogCSAgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIiAmJiBzcmNuYW1lPSIkcmVhbG5hbWUiVAogCiAJICAjIEluc3RhbGwgdGhlIHNoYXJlZCBsaWJyYXJ5IGFuZCBidWlsZCB0aGUgc3ltbGlua3MuCi0JICBmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyAkZGlyLyRzcmNuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIgXAorCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3NoYXJlZF9wcm9nICRkaXIvJHNyY25hbWUgJGRlc3RkaXIvJHJlYWxuYW1lIiBcCiAJICAgICAgJ2V4aXQgJD8nCiAJICB0c3RyaXBtZT0iJHN0cmlwbWUiCiAJICBjYXNlICRob3N0X29zIGluCkBAIC0yMDgzLDcgKzMwMjgsNyBAQAogCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCiAKIAkjIE1heWJlIGluc3RhbGwgdGhlIHN0YXRpYyBsaWJyYXJ5LCB0b28uCi0JdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKIAk7OwogCiAgICAgICAqLmxvKQpAQCAtMjE4Myw3ICszMTI4LDcgQEAKIAkgICAgaWYgdGVzdCAtZiAiJGxpYiI7IHRoZW4KIAkgICAgICBmdW5jX3NvdXJjZSAiJGxpYiIKIAkgICAgZmkKLQkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRFQ0hPICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisJICAgIGxpYmZpbGU9IiRsaWJkaXIvImAkRUNITyAiJGxpYiIgfCAkU0VEICdzJV4uKi8lJWcnYCAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKIAkgICAgaWYgdGVzdCAtbiAiJGxpYmRpciIgJiYgdGVzdCAhIC1mICIkbGliZmlsZSI7IHRoZW4KIAkgICAgICBmdW5jX3dhcm5pbmcgIlxgJGxpYicgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBcYCRsaWJkaXInIgogCSAgICAgIGZpbmFsaXplPW5vCkBAIC0yMjAyLDcgKzMxNDcsNyBAQAogCQlmaWxlPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAJICAgICAgICBvdXRwdXRuYW1lPSIkdG1wZGlyLyRmaWxlIgogCSAgICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCSAgICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dG5hbWUiJyVnJ2AKKwkgICAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0bmFtZSInJWcnYAogCiAJICAgICAgICAkb3B0X3NpbGVudCB8fCB7CiAJICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJHJlbGlua19jb21tYW5kIgpAQCAtMjIyMSw3ICszMTY2LDcgQEAKIAkgICAgfQogCSAgZWxzZQogCSAgICAjIEluc3RhbGwgdGhlIGJpbmFyeSB0aGF0IHdlIGNvbXBpbGVkIGVhcmxpZXIuCi0JICAgIGZpbGU9YCRFQ0hPICJYJGZpbGUkc3RyaXBwZWRfZXh0IiB8ICRYc2VkIC1lICJzJVwoW14vXSpcKSQlJG9iamRpci9cMSUiYAorCSAgICBmaWxlPWAkRUNITyAiJGZpbGUkc3RyaXBwZWRfZXh0IiB8ICRTRUQgInMlXChbXi9dKlwpJCUkb2JqZGlyL1wxJSJgCiAJICBmaQogCWZpCiAKQEAgLTIyNTcsMTEgKzMyMDIsMTMgQEAKIAogICAgICAgIyBTZXQgdXAgdGhlIHJhbmxpYiBwYXJhbWV0ZXJzLgogICAgICAgb2xkbGliPSIkZGVzdGRpci8kbmFtZSIKKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2xkbGliIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgdG9vbF9vbGRsaWI9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogCiAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyBcJGZpbGUgXCRvbGRsaWIiICdleGl0ICQ/JwogCiAgICAgICBpZiB0ZXN0IC1uICIkc3RyaXBtZSIgJiYgdGVzdCAtbiAiJG9sZF9zdHJpcGxpYiI7IHRoZW4KLQlmdW5jX3Nob3dfZXZhbCAiJG9sZF9zdHJpcGxpYiAkb2xkbGliIiAnZXhpdCAkPycKKwlmdW5jX3Nob3dfZXZhbCAiJG9sZF9zdHJpcGxpYiAkdG9vbF9vbGRsaWIiICdleGl0ICQ/JwogICAgICAgZmkKIAogICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3RpbnN0YWxsIGNvbW1hbmRzLgpAQCAtMjI4MCw3ICszMjI3LDcgQEAKICAgICBmaQogfQogCi10ZXN0ICIkbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQordGVzdCAiJG9wdF9tb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9CiAKIAogIyBmdW5jX2dlbmVyYXRlX2Rsc3ltcyBvdXRwdXRuYW1lIG9yaWdpbmF0b3IgcGljX3AKQEAgLTIzMjMsNiArMzI3MCwyMiBAQAogZXh0ZXJuIFwiQ1wiIHsKICNlbmRpZgogCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDQpKSB8fCAoX19HTlVDX18gPiA0KSkKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1Xc3RyaWN0LXByb3RvdHlwZXNcIgorI2VuZGlmCisKKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKyNlbHNlCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorI2VuZGlmCisKIC8qIEV4dGVybmFsIHN5bWJvbCBkZWNsYXJhdGlvbnMgZm9yIHRoZSBjb21waWxlci4gKi9cCiAiCiAKQEAgLTIzMzIsMTAgKzMyOTUsMTEgQEAKIAkgICRvcHRfZHJ5X3J1biB8fCBlY2hvICc6IEBQUk9HUkFNQCAnID4gIiRubGlzdCIKIAogCSAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgotCSAgcHJvZ2ZpbGVzPWAkRUNITyAiWCRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJICBwcm9nZmlsZXM9YCRFQ0hPICIkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCiAJICBmb3IgcHJvZ2ZpbGUgaW4gJHByb2dmaWxlczsgZG8KLQkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRwcm9nZmlsZSciCi0JICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJHByb2dmaWxlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRwcm9nZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQnIgorCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgogCSAgZG9uZQogCiAJICBpZiB0ZXN0IC1uICIkZXhjbHVkZV9leHBzeW1zIjsgdGhlbgpAQCAtMjM3MSw3ICszMzM1LDcgQEAKIAkgICAgICBldmFsICckR1JFUCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUJwogCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCiAJICAgICAgY2FzZSAkaG9zdCBpbgotCSAgICAgICAgKmN5Z3dpbiB8ICptaW5ndyogfCAqY2VnY2MqICkKKwkgICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQogCSAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwogCSAgICAgICAgICBldmFsICdjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCiAJICAgICAgICAgIDs7CkBAIC0yMzg0LDEwICszMzQ4LDUyIEBACiAJICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGRscHJlZmlsZSciCiAJICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlIgogCSAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotCSAgJG9wdF9kcnlfcnVuIHx8IHsKLQkgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKLQkgICAgZXZhbCAiJE5NICRkbHByZWZpbGUgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotCSAgfQorICAgICAgICAgIGNhc2UgJGhvc3QgaW4KKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisJICAgICAgIyBpZiBhbiBpbXBvcnQgbGlicmFyeSwgd2UgbmVlZCB0byBvYnRhaW4gZGxuYW1lCisJICAgICAgaWYgZnVuY193aW4zMl9pbXBvcnRfbGliX3AgIiRkbHByZWZpbGUiOyB0aGVuCisJICAgICAgICBmdW5jX3RyX3NoICIkZGxwcmVmaWxlIgorCSAgICAgICAgZXZhbCAiY3Vycl9sYWZpbGU9XCRsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdCIKKwkgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIiCisJICAgICAgICBpZiB0ZXN0IC1uICIkY3Vycl9sYWZpbGUiICYmIGZ1bmNfbGFsaWJfcCAiJGN1cnJfbGFmaWxlIjsgdGhlbgorCSAgICAgICAgICAjIFVzZSBzdWJzaGVsbCwgdG8gYXZvaWQgY2xvYmJlcmluZyBjdXJyZW50IHZhcmlhYmxlIHZhbHVlcworCSAgICAgICAgICBkbHByZWZpbGVfZGxuYW1lPWBzb3VyY2UgIiRjdXJyX2xhZmlsZSIgJiYgZWNobyAiJGRsbmFtZSJgCisJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxuYW1lIiA7IHRoZW4KKwkgICAgICAgICAgICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlX2RsbmFtZSIKKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgICAgICAgICBlbHNlCisJICAgICAgICAgICAgIyBubyBsYWZpbGUuIHVzZXIgZXhwbGljaXRseSByZXF1ZXN0ZWQgLWRscHJlb3BlbiA8aW1wb3J0IGxpYnJhcnk+LgorCSAgICAgICAgICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCAiJGRscHJlZmlsZSIKKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0kc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKKwkgICAgICAgICAgZmkKKwkgICAgICAgIGZpCisJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsYmFzZW5hbWUiIDsgdGhlbgorCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRkbHByZWZpbGVfZGxiYXNlbmFtZSIgPj4gIiRubGlzdCInCisJICAgICAgICAgIGVsc2UKKwkgICAgICAgICAgICBmdW5jX3dhcm5pbmcgIkNvdWxkIG5vdCBjb21wdXRlIERMTCBuYW1lIGZyb20gJG5hbWUiCisJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKwkgICAgICAgICAgZmkKKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJICAgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfAorCSAgICAgICAgICAgICRTRUQgLWUgJy9JIF9faW1wL2QnIC1lICdzL0kgX19ubV8vRCAvO3MvX25tX18vLycgPj4gJyRubGlzdCciCisJICAgICAgICB9CisJICAgICAgZWxzZSAjIG5vdCBhbiBpbXBvcnQgbGliCisJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworCSAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKwkgICAgICAgIH0KKwkgICAgICBmaQorCSAgICA7OworCSAgICAqKQorCSAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworCSAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorCSAgICAgIH0KKwkgICAgOzsKKyAgICAgICAgICBlc2FjCiAJZG9uZQogCiAJJG9wdF9kcnlfcnVuIHx8IHsKQEAgLTI0MTUsMzYgKzM0MjEsMTkgQEAKIAkgIGlmIHRlc3QgLWYgIiRubGlzdCJTOyB0aGVuCiAJICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NkZWNsIicgPCAiJG5saXN0IlMgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiJwogCSAgZWxzZQotCSAgICAkRUNITyAnLyogTk9ORSAqLycgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCisJICAgIGVjaG8gJy8qIE5PTkUgKi8nID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgogCSAgZmkKIAotCSAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCisJICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAogCiAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgIHZvaWQgKmFkZHJlc3M7CiB9IGx0X2Rsc3ltbGlzdDsKLSIKLQkgIGNhc2UgJGhvc3QgaW4KLQkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotCSAgICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UKLSAgIHJ1bnRpbWUgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uCi0gICBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8iCi0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OwotCSAgKm9zZjUqKQotCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YSAqLyIKLQkgICAgbHRfZGxzeW1fY29uc3Q9IDs7Ci0JICAqKQotCSAgICBsdF9kbHN5bV9jb25zdD1jb25zdCA7OwotCSAgZXNhYwotCi0JICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLWV4dGVybiAkbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CitleHRlcm4gTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0CiBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW107Ci0kbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CitMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXSA9CiB7XAogICB7IFwiJG15X29yaWdpbmF0b3JcIiwgKHZvaWQgKikgMCB9LCIKQEAgLTI0NTcsNyArMzQ0Niw3IEBACiAJICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIDwgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCiAJICAgIDs7CiAJICBlc2FjCi0JICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKwkgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCiAgIHswLCAodm9pZCAqKSAwfQogfTsKIApAQCAtMjQ4NCw3ICszNDczLDcgQEAKIAkgICMgbGlua2VkIGJlZm9yZSBhbnkgb3RoZXIgUElDIG9iamVjdC4gIEJ1dCB3ZSBtdXN0IG5vdCB1c2UKIAkgICMgcGljX2ZsYWcgd2hlbiBsaW5raW5nIHdpdGggLXN0YXRpYy4gIFRoZSBwcm9ibGVtIGV4aXN0cyBpbgogCSAgIyBGcmVlQlNEIDIuMi42IGFuZCBpcyBmaXhlZCBpbiBGcmVlQlNEIDMuMS4KLQkgICotKi1mcmVlYnNkMip8Ki0qLWZyZWVic2QzLjAqfCotKi1mcmVlYnNkZWxmMy4wKikKKwkgICotKi1mcmVlYnNkMi4qfCotKi1mcmVlYnNkMy4wKnwqLSotZnJlZWJzZGVsZjMuMCopCiAJICAgIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNfZmxhZyAtREZSRUVCU0RfV09SS0FST1VORCIgOzsKIAkgICotKi1ocHV4KikKIAkgICAgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIiAgOzsKQEAgLTI1MDAsNyArMzQ4OSw3IEBACiAJZm9yIGFyZyBpbiAkTFRDRkxBR1M7IGRvCiAJICBjYXNlICRhcmcgaW4KIAkgIC1waWUgfCAtZnBpZSB8IC1mUElFKSA7OwotCSAgKikgc3ltdGFiX2NmbGFncz0iJHN5bXRhYl9jZmxhZ3MgJGFyZyIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIHN5bXRhYl9jZmxhZ3MgIiAkYXJnIiA7OwogCSAgZXNhYwogCWRvbmUKIApAQCAtMjUxNSwxNiArMzUwNCwxNiBAQAogCWNhc2UgJGhvc3QgaW4KIAkqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKIAkgIGlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiI7IHRoZW4KLQkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAotCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKKwkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKKwkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAogCSAgZWxzZQotCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKLQkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKIAkgIGZpCiAJICA7OwogCSopCi0JICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKLQkgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKIAkgIDs7CiAJZXNhYwogCTs7CkBAIC0yNTM4LDggKzM1MjcsOCBAQAogICAgICAgIyByZWFsbHkgd2FzIHJlcXVpcmVkLgogCiAgICAgICAjIE51bGxpZnkgdGhlIHN5bWJvbCBmaWxlLgotICAgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlIEBTWU1GSUxFQCUlImAKLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlIEBTWU1GSUxFQCUlImAKKyAgICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAicyUgQFNZTUZJTEVAJSUiYAorICAgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlIEBTWU1GSUxFQCUlImAKICAgICBmaQogfQogCkBAIC0yNTQ5LDYgKzM1MzgsNyBAQAogIyBOZWVkIGEgbG90IG9mIGdvbyB0byBoYW5kbGUgKmJvdGgqIERMTHMgYW5kIGltcG9ydCBsaWJzCiAjIEhhcyB0byBiZSBhIHNoZWxsIGZ1bmN0aW9uIGluIG9yZGVyIHRvICdlYXQnIHRoZSBhcmd1bWVudAogIyB0aGF0IGlzIHN1cHBsaWVkIHdoZW4gJGZpbGVfbWFnaWNfY29tbWFuZCBpcyBjYWxsZWQuCisjIERlc3BpdGUgdGhlIG5hbWUsIGFsc28gZGVhbCB3aXRoIDY0IGJpdCBiaW5hcmllcy4KIGZ1bmNfd2luMzJfbGliaWQgKCkKIHsKICAgJG9wdF9kZWJ1ZwpAQCAtMjU1OSw5ICszNTQ5LDExIEBACiAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IGFyY2hpdmUgaW1wb3J0IgogICAgIDs7CiAgICphclwgYXJjaGl2ZSopICMgY291bGQgYmUgYW4gaW1wb3J0LCBvciBzdGF0aWMKKyAgICAjIEtlZXAgdGhlIGVncmVwIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gX0xUX0NIRUNLX01BR0lDX01FVEhPRC4KICAgICBpZiBldmFsICRPQkpEVU1QIC1mICQxIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8Ci0gICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCBwZS1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nID4vZGV2L251bGwgOyB0aGVuCi0gICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgJDEgfAorICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCisgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgfAogCSRTRUQgLW4gLWUgJwogCSAgICAxLDEwMHsKIAkJLyBJIC97CkBAIC0yNTkwLDYgKzM1ODIsMTMxIEBACiAgICRFQ0hPICIkd2luMzJfbGliaWRfdHlwZSIKIH0KIAorIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgQVJHCisjCisjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCisjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorIyBpbXBvcnQgbGlicmFyeSBBUkcuCisjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliICgpCit7CisgICRvcHRfZGVidWcKKyAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YCRETExUT09MIC0taWRlbnRpZnktc3RyaWN0IC0taWRlbnRpZnkgIiQxImAKK30KKworIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSBTRUNUSU9OX05BTUUgTElCTkFNRXMKKyMKKyMgVGhlIGlzIHRoZSBjb3JlIG9mIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgYQorIyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBuYW1lIG9mIHRoZQorIyBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkgTElCTkFNRS4KKyMKKyMgU0VDVElPTl9OQU1FIGlzIGVpdGhlciAuaWRhdGEkNiBvciAuaWRhdGEkNywgZGVwZW5kaW5nCisjIG9uIHRoZSBwbGF0Zm9ybSBhbmQgY29tcGlsZXIgdGhhdCBjcmVhdGVkIHRoZSBpbXBsaWIuCisjCisjIEVjaG9zIHRoZSBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZQorIyBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkuCitmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAoKQoreworICAkb3B0X2RlYnVnCisgIG1hdGNoX2xpdGVyYWw9YCRFQ0hPICIkMSIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisgICRPQkpEVU1QIC1zIC0tc2VjdGlvbiAiJDEiICIkMiIgMj4vZGV2L251bGwgfAorICAgICRTRUQgJy9eQ29udGVudHMgb2Ygc2VjdGlvbiAnIiRtYXRjaF9saXRlcmFsIic6L3sKKyAgICAgICMgUGxhY2UgbWFya2VyIGF0IGJlZ2lubmluZyBvZiBhcmNoaXZlIG1lbWJlciBkbGxuYW1lIHNlY3Rpb24KKyAgICAgIHMvLiovPT09PU1BUks9PT09LworICAgICAgcAorICAgICAgZAorICAgIH0KKyAgICAjIFRoZXNlIGxpbmVzIGNhbiBzb21ldGltZXMgYmUgbG9uZ2VyIHRoYW4gNDMgY2hhcmFjdGVycywgYnV0CisgICAgIyBhcmUgYWx3YXlzIHVuaW50ZXJlc3RpbmcKKyAgICAvOlsJIF0qZmlsZSBmb3JtYXQgcGVbaV1ceywxXH0tL2QKKyAgICAvXkluIGFyY2hpdmUgW146XSo6L2QKKyAgICAjIEVuc3VyZSBtYXJrZXIgaXMgcHJpbnRlZAorICAgIC9ePT09PU1BUks9PT09L3AKKyAgICAjIFJlbW92ZSBhbGwgbGluZXMgd2l0aCBsZXNzIHRoYW4gNDMgY2hhcmFjdGVycworICAgIC9eLlx7NDNcfS8hZAorICAgICMgRnJvbSByZW1haW5pbmcgbGluZXMsIHJlbW92ZSBmaXJzdCA0MyBjaGFyYWN0ZXJzCisgICAgcy9eLlx7NDNcfS8vJyB8CisgICAgJFNFRCAtbiAnCisgICAgICAjIEpvaW4gbWFya2VyIGFuZCBhbGwgbGluZXMgdW50aWwgbmV4dCBtYXJrZXIgaW50byBhIHNpbmdsZSBsaW5lCisgICAgICAvXj09PT1NQVJLPT09PS8gYiBwYXJhCisgICAgICBICisgICAgICAkIGIgcGFyYQorICAgICAgYgorICAgICAgOnBhcmEKKyAgICAgIHgKKyAgICAgIHMvXG4vL2cKKyAgICAgICMgUmVtb3ZlIHRoZSBtYXJrZXIKKyAgICAgIHMvXj09PT1NQVJLPT09PS8vCisgICAgICAjIFJlbW92ZSB0cmFpbGluZyBkb3RzIGFuZCB3aGl0ZXNwYWNlCisgICAgICBzL1tcLiBcdF0qJC8vCisgICAgICAjIFByaW50CisgICAgICAvLi9wJyB8CisgICAgIyB3ZSBub3cgaGF2ZSBhIGxpc3QsIG9uZSBlbnRyeSBwZXIgbGluZSwgb2YgdGhlIHN0cmluZ2lmaWVkCisgICAgIyBjb250ZW50cyBvZiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiBvZiBhbGwgbWVtYmVycyBvZiB0aGUKKyAgICAjIGFyY2hpdmUgd2hpY2ggcG9zc2VzcyB0aGF0IHNlY3Rpb24uIEhldXJpc3RpYzogZWxpbWluYXRlCisgICAgIyBhbGwgdGhvc2Ugd2hpY2ggaGF2ZSBhIGZpcnN0IG9yIHNlY29uZCBjaGFyYWN0ZXIgdGhhdCBpcworICAgICMgYSAnLicgKHRoYXQgaXMsIG9iamR1bXAncyByZXByZXNlbnRhdGlvbiBvZiBhbiB1bnByaW50YWJsZQorICAgICMgY2hhcmFjdGVyLikgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIGFyY2hpdmVzIHdpdGggbGVzcyB0aGFuCisgICAgIyAweDMwMmYgZXhwb3J0cyAtLSBidXQgd2lsbCBmYWlsIGZvciBETExzIHdob3NlIG5hbWUgYWN0dWFsbHkKKyAgICAjIGJlZ2lucyB3aXRoIGEgbGl0ZXJhbCAnLicgb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5CisgICAgIyBhICcuJy4KKyAgICAjCisgICAgIyBPZiB0aG9zZSB0aGF0IHJlbWFpbiwgcHJpbnQgdGhlIGZpcnN0IG9uZS4KKyAgICAkU0VEIC1lICcvXlwuL2Q7L14uXC4vZDtxJworfQorCisjIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCisjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKKyMgQVJHIGlzIGEgR05VL2JpbnV0aWxzLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCitmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRFR1JFUCAnIChfaGVhZF9bQS1aYS16MC05X10rX1thZF1sKnxbQS1aYS16MC05X10rX1thZF1sKl9pbmFtZSkkJ2AKKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcCIKK30KKworIyBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgQVJHCisjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKKyMgQVJHIGlzIGFuIE1TLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCitmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkR1JFUCAnX05VTExfSU1QT1JUX0RFU0NSSVBUT1InYAorICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCit9CisKKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrIEFSRworIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQorIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorIworIyBUaGlzIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGZvciB1c2Ugd2hlbiAkRExMVE9PTAorIyBkb2VzIG5vdCBzdXBwb3J0IHRoZSAtLWlkZW50aWZ5LXN0cmljdCBvcHRpb24uCisjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAiJDEiIDsgdGhlbgorICAgICMgYmludXRpbHMgaW1wb3J0IGxpYnJhcnkKKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ3JyAiJDEiYAorICBlbGlmIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAiJDEiIDsgdGhlbgorICAgICMgbXMtZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5CisgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNicgIiQxImAKKyAgZWxzZQorICAgICMgdW5rbm93bgorICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PSIiCisgIGZpCit9CiAKIAogIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCkBAIC0yNTk4LDcgKzM3MTUsMTggQEAKICAgICAkb3B0X2RlYnVnCiAgICAgZl9leF9hbl9hcl9kaXI9IiQxIjsgc2hpZnQKICAgICBmX2V4X2FuX2FyX29sZGxpYj0iJDEiCi0gICAgZnVuY19zaG93X2V2YWwgIihjZCBcJGZfZXhfYW5fYXJfZGlyICYmICRBUiB4IFwiXCRmX2V4X2FuX2FyX29sZGxpYlwiKSIgJ2V4aXQgJD8nCisgICAgaWYgdGVzdCAiJGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbiIgPSB5ZXM7IHRoZW4KKyAgICAgIGxvY2tmaWxlPSRmX2V4X2FuX2FyX29sZGxpYi5sb2NrCisgICAgICB1bnRpbCAkb3B0X2RyeV9ydW4gfHwgbG4gIiRwcm9ncGF0aCIgIiRsb2NrZmlsZSIgMj4vZGV2L251bGw7IGRvCisJZnVuY19lY2hvICJXYWl0aW5nIGZvciAkbG9ja2ZpbGUgdG8gYmUgcmVtb3ZlZCIKKwlzbGVlcCAyCisgICAgICBkb25lCisgICAgZmkKKyAgICBmdW5jX3Nob3dfZXZhbCAiKGNkIFwkZl9leF9hbl9hcl9kaXIgJiYgJEFSIHggXCJcJGZfZXhfYW5fYXJfb2xkbGliXCIpIiBcCisJCSAgICdzdGF0PSQ/OyBybSAtZiAiJGxvY2tmaWxlIjsgZXhpdCAkc3RhdCcKKyAgICBpZiB0ZXN0ICIkbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uIiA9IHllczsgdGhlbgorICAgICAgJG9wdF9kcnlfcnVuIHx8IHJtIC1mICIkbG9ja2ZpbGUiCisgICAgZmkKICAgICBpZiAoJEFSIHQgIiRmX2V4X2FuX2FyX29sZGxpYiIgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgogICAgICA6CiAgICAgZWxzZQpAQCAtMjY2OSw3ICszNzk3LDcgQEAKIAkgICAgZGFyd2luX2ZpbGU9CiAJICAgIGRhcndpbl9maWxlcz0KIAkgICAgZm9yIGRhcndpbl9maWxlIGluICRkYXJ3aW5fZmlsZWxpc3Q7IGRvCi0JICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCAkTkwyU1BgCisJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAogCSAgICAgICRMSVBPIC1jcmVhdGUgLW91dHB1dCAiJGRhcndpbl9maWxlIiAkZGFyd2luX2ZpbGVzCiAJICAgIGRvbmUgIyAkZGFyd2luX2ZpbGVsaXN0CiAJICAgICRSTSAtcmYgdW5mYXQtJCQKQEAgLTI2ODQsMjUgKzM4MTIsMzAgQEAKICAgICAgICAgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgIiRteV94ZGlyIiAiJG15X3hhYnMiCiAJOzsKICAgICAgIGVzYWMKLSAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkTkwyU1BgCisgICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgc29ydCB8ICROTDJTUGAKICAgICBkb25lCiAKICAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKIH0KIAogCi0KLSMgZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgW2FyZz1ub10KKyMgZnVuY19lbWl0X3dyYXBwZXIgW2FyZz1ub10KICMKLSMgRW1pdCB0aGUgZmlyc3QgcGFydCBvZiBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgotIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBkZXNjcmlwdGlvbiBhc3NvY2lhdGVkIHdpdGgKLSMgZnVuY19lbWl0X3dyYXBwZXIoKSwgYmVsb3cuCi1mdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSAoKQorIyBFbWl0IGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCisjIERvbid0IGRpcmVjdGx5IG9wZW4gYSBmaWxlIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8KKyMgaW5jb3Jwb3JhdGUgdGhlIHNjcmlwdCBjb250ZW50cyB3aXRoaW4gYSBjeWd3aW4vbWluZ3cKKyMgd3JhcHBlciBleGVjdXRhYmxlLiAgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbgorIyBmdW5jX21vZGVfbGluayBiZWNhdXNlIGl0IGRlcGVuZHMgb24gYSBudW1iZXIgb2YgdmFyaWFibGVzCisjIHNldCB0aGVyZWluLgorIworIyBBUkcgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSCisjIHZhcmlhYmxlIHdpbGwgdGFrZS4gIElmICd5ZXMnLCB0aGVuIHRoZSBlbWl0dGVkIHNjcmlwdAorIyB3aWxsIGFzc3VtZSB0aGF0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgaXMgc3RvcmVkIGlzCisjIHRoZSAkb2JqZGlyIGRpcmVjdG9yeS4gIFRoaXMgaXMgYSBjeWd3aW4vbWluZ3ctc3BlY2lmaWMKKyMgYmVoYXZpb3IuCitmdW5jX2VtaXRfd3JhcHBlciAoKQogewotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxX2FyZzE9bm8KLQlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0JICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MV9hcmcxPSQxCi0JZmkKKwlmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPSR7MS1ub30KIAogCSRFQ0hPICJcCiAjISAkU0hFTEwKQEAgLTI3MTgsNyArMzg1MSw2IEBACiAKICMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKICMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1Yc2VkPScke1NFRH0gLWUgMXMvXlgvLycKIHNlZF9xdW90ZV9zdWJzdD0nJHNlZF9xdW90ZV9zdWJzdCcKIAogIyBCZSBCb3VybmUgY29tcGF0aWJsZQpAQCAtMjc0OSwzMSArMzg4MSwxMzUgQEAKIGVsc2UKICAgIyBXaGVuIHdlIGFyZSBzb3VyY2VkIGluIGV4ZWN1dGUgbW9kZSwgXCRmaWxlIGFuZCBcJEVDSE8gYXJlIGFscmVhZHkgc2V0LgogICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCi0gICAgRUNITz1cIiRxZWNob1wiCi0gICAgZmlsZT1cIlwkMFwiCi0gICAgIyBNYWtlIHN1cmUgZWNobyB3b3Jrcy4KLSAgICBpZiB0ZXN0IFwiWFwkMVwiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICAgICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgICAgIHNoaWZ0Ci0gICAgZWxpZiB0ZXN0IFwiWFxgeyBcJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbFxgXCIgPSAnWFx0JzsgdGhlbgotICAgICAgIyBZaXBwZWUsIFwkRUNITyB3b3JrcyEKLSAgICAgIDoKLSAgICBlbHNlCi0gICAgICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwsIGFuZCB0aGVuIG1heWJlIFwkRUNITyB3aWxsIHdvcmsuCi0gICAgICBleGVjICRTSEVMTCBcIlwkMFwiIC0tbm8tcmVleGVjIFwkezErXCJcJEBcIn0KLSAgICBmaQotICBmaVwKKyAgICBmaWxlPVwiXCQwXCIiCisKKyAgICBxRUNITz1gJEVDSE8gIiRFQ0hPIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgICRFQ0hPICJcCisKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorXCQxCitfTFRFQ0hPX0VPRicKK30KKyAgICBFQ0hPPVwiJHFFQ0hPXCIKKyAgZmkKKworIyBWZXJ5IGJhc2ljIG9wdGlvbiBwYXJzaW5nLiBUaGVzZSBvcHRpb25zIGFyZSAoYSkgc3BlY2lmaWMgdG8KKyMgdGhlIGxpYnRvb2wgd3JhcHBlciwgKGIpIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUgd3JhcHBlcgorIyAvc2NyaXB0LyBhbmQgdGhlIHdyYXBwZXIgL2V4ZWN1dGFibGUvIHdoaWNoIGlzIHVzZWQgb25seSBvbgorIyB3aW5kb3dzIHBsYXRmb3JtcywgYW5kIChjKSBhbGwgYmVnaW4gd2l0aCB0aGUgc3RyaW5nICItLWx0LSIKKyMgKGFwcGxpY2F0aW9uIHByb2dyYW1zIGFyZSB1bmxpa2VseSB0byBoYXZlIG9wdGlvbnMgd2hpY2ggbWF0Y2gKKyMgdGhpcyBwYXR0ZXJuKS4KKyMKKyMgVGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCBvcHRpb25zOiAtLWx0LWRlYnVnIGFuZAorIyAtLWx0LWR1bXAtc2NyaXB0LiBUaGVyZSBpcywgZGVsaWJlcmF0ZWx5LCBubyAtLWx0LWhlbHAuCisjCisjIFRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGlzIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHRoZQorIyBzY3JpcHQncyAkMCB2YWx1ZSwgZm9sbG93ZWQgYnkgIiRAIi4KK2x0X29wdGlvbl9kZWJ1Zz0KK2Z1bmNfcGFyc2VfbHRfb3B0aW9ucyAoKQoreworICBsdF9zY3JpcHRfYXJnMD1cJDAKKyAgc2hpZnQKKyAgZm9yIGx0X29wdAorICBkbworICAgIGNhc2UgXCJcJGx0X29wdFwiIGluCisgICAgLS1sdC1kZWJ1ZykgbHRfb3B0aW9uX2RlYnVnPTEgOzsKKyAgICAtLWx0LWR1bXAtc2NyaXB0KQorICAgICAgICBsdF9kdW1wX0Q9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyUvW14vXSokJSUnXGAKKyAgICAgICAgdGVzdCBcIlhcJGx0X2R1bXBfRFwiID0gXCJYXCRsdF9zY3JpcHRfYXJnMFwiICYmIGx0X2R1bXBfRD0uCisgICAgICAgIGx0X2R1bXBfRj1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJV4uKi8lJSdcYAorICAgICAgICBjYXQgXCJcJGx0X2R1bXBfRC9cJGx0X2R1bXBfRlwiCisgICAgICAgIGV4aXQgMAorICAgICAgOzsKKyAgICAtLWx0LSopCisgICAgICAgIFwkRUNITyBcIlVucmVjb2duaXplZCAtLWx0LSBvcHRpb246ICdcJGx0X29wdCdcIiAxPiYyCisgICAgICAgIGV4aXQgMQorICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAjIFByaW50IHRoZSBkZWJ1ZyBiYW5uZXIgaW1tZWRpYXRlbHk6CisgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisgICAgZWNobyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cIiAxPiYyCisgIGZpCit9CisKKyMgVXNlZCB3aGVuIC0tbHQtZGVidWcuIFByaW50cyBpdHMgYXJndW1lbnRzIHRvIHN0ZG91dAorIyAocmVkaXJlY3Rpb24gaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIpCitmdW5jX2x0X2R1bXBfYXJncyAoKQoreworICBsdF9kdW1wX2FyZ3NfTj0xOworICBmb3IgbHRfYXJnCisgIGRvCisgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndltcJGx0X2R1bXBfYXJnc19OXTogXCRsdF9hcmdcIgorICAgIGx0X2R1bXBfYXJnc19OPVxgZXhwciBcJGx0X2R1bXBfYXJnc19OICsgMVxgCisgIGRvbmUKK30KKworIyBDb3JlIGZ1bmN0aW9uIGZvciBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorZnVuY19leGVjX3Byb2dyYW1fY29yZSAoKQorewogIgotCSRFQ0hPICJcCisgIGNhc2UgJGhvc3QgaW4KKyAgIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCisgICotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCisgICAgJEVDSE8gIlwKKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiAxPiYyCisgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorICAgICAgZmkKKyAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorIgorICAgIDs7CisKKyAgKikKKyAgICAkRUNITyAiXAorICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCisgICAgICBmaQorICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisiCisgICAgOzsKKyAgZXNhYworICAkRUNITyAiXAorICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgorICAgICAgZXhpdCAxCit9CisKKyMgQSBmdW5jdGlvbiB0byBlbmNhcHN1bGF0ZSBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorIyBTdHJpcHMgb3B0aW9ucyBpbiB0aGUgLS1sdC0qIG5hbWVzcGFjZSBmcm9tIFwkQCBhbmQKKyMgbGF1bmNoZXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuCitmdW5jX2V4ZWNfcHJvZ3JhbSAoKQoreworICBjYXNlIFwiIFwkKiBcIiBpbgorICAqXFwgLS1sdC0qKQorICAgIGZvciBsdF93cl9hcmcKKyAgICBkbworICAgICAgY2FzZSBcJGx0X3dyX2FyZyBpbgorICAgICAgLS1sdC0qKSA7OworICAgICAgKikgc2V0IHggXCJcJEBcIiBcIlwkbHRfd3JfYXJnXCI7IHNoaWZ0OzsKKyAgICAgIGVzYWMKKyAgICAgIHNoaWZ0CisgICAgZG9uZSA7OworICBlc2FjCisgIGZ1bmNfZXhlY19wcm9ncmFtX2NvcmUgXCR7MStcIlwkQFwifQorfQorCisgICMgUGFyc2Ugb3B0aW9ucworICBmdW5jX3BhcnNlX2x0X29wdGlvbnMgXCJcJDBcIiBcJHsxK1wiXCRAXCJ9CiAKICAgIyBGaW5kIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGlzIHNjcmlwdCBsaXZlcyBpbi4KLSAgdGhpc2Rpcj1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyUvW14vXSokJSUnXGAKKyAgdGhpc2Rpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSokJSUnXGAKICAgdGVzdCBcInhcJHRoaXNkaXJcIiA9IFwieFwkZmlsZVwiICYmIHRoaXNkaXI9LgogCiAgICMgRm9sbG93IHN5bWJvbGljIGxpbmtzIHVudGlsIHdlIGdldCB0byB0aGUgcmVhbCB0aGlzZGlyLgotICBmaWxlPVxgbHMgLWxkIFwiXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKKyAgZmlsZT1cYGxzIC1sZCBcIlwkZmlsZVwiIHwgJFNFRCAtbiAncy8uKi0+IC8vcCdcYAogICB3aGlsZSB0ZXN0IC1uIFwiXCRmaWxlXCI7IGRvCi0gICAgZGVzdGRpcj1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyUvW14vXSpcJCUlJ1xgCisgICAgZGVzdGRpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSpcJCUlJ1xgCiAKICAgICAjIElmIHRoZXJlIHdhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gY2hhbmdlIHRoaXNkaXIuCiAgICAgaWYgdGVzdCBcInhcJGRlc3RkaXJcIiAhPSBcInhcJGZpbGVcIjsgdGhlbgpAQCAtMjc4MywzMCArNDAxOSwxMyBAQAogICAgICAgZXNhYwogICAgIGZpCiAKLSAgICBmaWxlPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJV4uKi8lJSdcYAotICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKKyAgICBmaWxlPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJV4uKi8lJSdcYAorICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAkU0VEIC1uICdzLy4qLT4gLy9wJ1xgCiAgIGRvbmUKLSIKLX0KLSMgZW5kOiBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MQotCi0jIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyIFthcmc9bm9dCi0jCi0jIEVtaXQgdGhlIHNlY29uZCBwYXJ0IG9mIGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCi0jIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGRlc2NyaXB0aW9uIGFzc29jaWF0ZWQgd2l0aAotIyBmdW5jX2VtaXRfd3JhcHBlcigpLCBiZWxvdy4KLWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyICgpCi17Ci0JZnVuY19lbWl0X3dyYXBwZXJfcGFydDJfYXJnMT1ubwotCWlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLQkgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyX2FyZzE9JDEKLQlmaQotCi0JJEVDSE8gIlwKIAogICAjIFVzdWFsbHkgJ25vJywgZXhjZXB0IG9uIGN5Z3dpbi9taW5ndyB3aGVuIGVtYmVkZGVkIGludG8KICAgIyB0aGUgY3dyYXBwZXIuCi0gIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSPSRmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0Ml9hcmcxCisgIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSPSRmdW5jX2VtaXRfd3JhcHBlcl9hcmcxCiAgIGlmIHRlc3QgXCJcJFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSXCIgPSBcInllc1wiOyB0aGVuCiAgICAgIyBzcGVjaWFsIGNhc2UgZm9yICcuJwogICAgIGlmIHRlc3QgXCJcJHRoaXNkaXJcIiA9IFwiLlwiOyB0aGVuCkBAIC0yODE0LDcgKzQwMzMsNyBAQAogICAgIGZpCiAgICAgIyByZW1vdmUgLmxpYnMgZnJvbSB0aGlzZGlyCiAgICAgY2FzZSBcIlwkdGhpc2RpclwiIGluCi0gICAgKltcXFxcL10kb2JqZGlyICkgdGhpc2Rpcj1cYFwkRUNITyBcIlhcJHRoaXNkaXJcIiB8IFwkWHNlZCAtZSAncyVbXFxcXC9dW15cXFxcL10qJCUlJ1xgIDs7CisgICAgKltcXFxcL10kb2JqZGlyICkgdGhpc2Rpcj1cYFwkRUNITyBcIlwkdGhpc2RpclwiIHwgJFNFRCAncyVbXFxcXC9dW15cXFxcL10qJCUlJ1xgIDs7CiAgICAgJG9iamRpciApICAgdGhpc2Rpcj0uIDs7CiAgICAgZXNhYwogICBmaQpAQCAtMjg2OSw2ICs0MDg4LDE4IEBACiAKICAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKIAorCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCisJIworCSMgRml4IHRoZSBETEwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLiAgRG8gdGhpcyBiZWZvcmUgcHJlcGVuZGluZworCSMgdG8gc2hsaWJwYXRoLCBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggYXJlIFBBVEggYW5kIHVuaW5zdGFsbGVkCisJIyBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LgorCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorCSAgJEVDSE8gIlwKKyAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICisiCisJZmkKKwogCSMgRXhwb3J0IG91ciBzaGxpYnBhdGhfdmFyIGlmIHdlIGhhdmUgb25lLgogCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KIAkgICRFQ0hPICJcCkBAIC0yODc3LDI1NCArNDEwOCwyOSBAQAogCiAgICAgIyBTb21lIHN5c3RlbXMgY2Fubm90IGNvcGUgd2l0aCBjb2xvbi10ZXJtaW5hdGVkICRzaGxpYnBhdGhfdmFyCiAgICAgIyBUaGUgc2Vjb25kIGNvbG9uIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gQmVPUyBSNCBzZWQKLSAgICAkc2hsaWJwYXRoX3Zhcj1cYFwkRUNITyBcIlhcJCRzaGxpYnBhdGhfdmFyXCIgfCBcJFhzZWQgLWUgJ3MvOjoqXCQvLydcYAorICAgICRzaGxpYnBhdGhfdmFyPVxgXCRFQ0hPIFwiXCQkc2hsaWJwYXRoX3ZhclwiIHwgJFNFRCAncy86OipcJC8vJ1xgCiAKICAgICBleHBvcnQgJHNobGlicGF0aF92YXIKICIKIAlmaQogCi0JIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KLQlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLQkgICRFQ0hPICJcCi0gICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKLSAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAotIgotCWZpCi0KIAkkRUNITyAiXAogICAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KICAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCi0iCi0JY2FzZSAkaG9zdCBpbgotCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cwotCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0JICAkRUNITyAiXAotICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0iCi0JICA7OwotCi0JKikKLQkgICRFQ0hPICJcCi0gICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLSIKLQkgIDs7Ci0JZXNhYwotCSRFQ0hPICJcCi0gICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCi0gICAgICBleGl0IDEKKyAgICAgIGZ1bmNfZXhlY19wcm9ncmFtIFwkezErXCJcJEBcIn0KICAgICBmaQogICBlbHNlCiAgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgogICAgIFwkRUNITyBcIlwkMDogZXJyb3I6IFxcXGBcJHByb2dkaXIvXCRwcm9ncmFtJyBkb2VzIG5vdCBleGlzdFwiIDE+JjIKICAgICBcJEVDSE8gXCJUaGlzIHNjcmlwdCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgXCRwcm9ncmFtLlwiIDE+JjIKLSAgICAkRUNITyBcIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiAxPiYyCisgICAgXCRFQ0hPIFwiU2VlIHRoZSAkUEFDS0FHRSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiIDE+JjIKICAgICBleGl0IDEKICAgZmkKIGZpXAogIgogfQotIyBlbmQ6IGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyCiAKIAotIyBmdW5jX2VtaXRfd3JhcHBlciBbYXJnPW5vXQotIwotIyBFbWl0IGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCi0jIERvbid0IGRpcmVjdGx5IG9wZW4gYSBmaWxlIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8KLSMgaW5jb3Jwb3JhdGUgdGhlIHNjcmlwdCBjb250ZW50cyB3aXRoaW4gYSBjeWd3aW4vbWluZ3cKLSMgd3JhcHBlciBleGVjdXRhYmxlLiAgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbgotIyBmdW5jX21vZGVfbGluayBiZWNhdXNlIGl0IGRlcGVuZHMgb24gYSBudW1iZXIgb2YgdmFyaWFibGVzCi0jIHNldCB0aGVyZWluLgotIwotIyBBUkcgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSCi0jIHZhcmlhYmxlIHdpbGwgdGFrZS4gIElmICd5ZXMnLCB0aGVuIHRoZSBlbWl0dGVkIHNjcmlwdAotIyB3aWxsIGFzc3VtZSB0aGF0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgaXMgc3RvcmVkIGlzCi0jIHRoZSAkb2JqZGlyIGRpcmVjdG9yeS4gIFRoaXMgaXMgYSBjeWd3aW4vbWluZ3ctc3BlY2lmaWMKLSMgYmVoYXZpb3IuCi1mdW5jX2VtaXRfd3JhcHBlciAoKQotewotCWZ1bmNfZW1pdF93cmFwcGVyX2FyZzE9bm8KLQlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0JICBmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPSQxCi0JZmkKLQotCSMgc3BsaXQgdGhpcyB1cCBzbyB0aGF0IGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKLQkjIGNhbiBjYWxsIGVhY2ggcGFydCBpbmRlcGVuZGVudGx5LgotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxICIke2Z1bmNfZW1pdF93cmFwcGVyX2FyZzF9IgotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyICIke2Z1bmNfZW1pdF93cmFwcGVyX2FyZzF9IgotfQotCi0KLSMgZnVuY190b19ob3N0X3BhdGggYXJnCi0jCi0jIENvbnZlcnQgcGF0aHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCi0jIEludGVuZGVkIGZvciB1c2Ugd2l0aCAibmF0aXZlIiBtaW5ndyAod2hlcmUgbGlidG9vbCBpdHNlbGYKLSMgaXMgcnVubmluZyB1bmRlciB0aGUgbXN5cyBzaGVsbCksIG9yIGluIHRoZSBmb2xsb3dpbmcgY3Jvc3MtCi0jIGJ1aWxkIGVudmlyb25tZW50czoKLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0Ci0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQotIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3Ci0jIHdoZXJlIHdpbmUgaXMgZXF1aXBwZWQgd2l0aCB0aGUgYHdpbmVwYXRoJyBleGVjdXRhYmxlLgotIyBJbiB0aGUgbmF0aXZlIG1pbmd3IGNhc2UsIHRoZSAobXN5cykgc2hlbGwgYXV0b21hdGljYWxseQotIyBjb252ZXJ0cyBwYXRocyBmb3IgYW55IG5vbi1tc3lzIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcywKLSMgYnV0IHRoYXQgZmFjaWxpdHkgaXNuJ3QgYXZhaWxhYmxlIGZyb20gaW5zaWRlIHRoZSBjd3JhcHBlci4KLSMgU2ltaWxhciBhY2NvbW1vZGF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciAkaG9zdCBtaW5ndyBhbmQKLSMgJGJ1aWxkIGN5Z3dpbi4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vIGhhcm0gZm9yIG90aGVyCi0jICRob3N0LyRidWlsZCBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBhYm92ZS4KLSMKLSMgQVJHIGlzIHRoZSBwYXRoIChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIGZvciAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLWZ1bmNfdG9faG9zdF9wYXRoICgpCi17Ci0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0gIGlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLSAgICBjYXNlICRob3N0IGluCi0gICAgICAqbWluZ3cqICkKLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotICAgICAgICBjYXNlICRidWlsZCBpbgotICAgICAgICAgICptaW5ndyogKSAjIGFjdHVhbGx5LCBtc3lzCi0gICAgICAgICAgICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKLSAgICAgICAgICAgIGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXM9InMvWyBdKlwkLy8iCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWAoIGNtZCAvL2MgZWNobyAiJDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzIiApIDI+L2Rldi9udWxsIHx8IGVjaG8gIiJgCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICA7OwotICAgICAgICAgICpjeWd3aW4qICkKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YGN5Z3BhdGggLXcgIiQxImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgKiApCi0gICAgICAgICAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvCi0gICAgICAgICAgICAjIGVycm9yIGNvZGUsIHNvIHdlIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mCi0gICAgICAgICAgICAjIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjb21tYW5kIGlzIG5vdAotICAgICAgICAgICAgIyBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50Ci0gICAgICAgICAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGgKLSAgICAgICAgICAgICMgZXJyb3IgY29kZSBvZiB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucwotICAgICAgICAgICAgIyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCi0gICAgICAgICAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX3RvX2hvc3RfcGF0aF90bXAxfSI7IHRoZW4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfFwKLSAgICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICMgQWxsb3cgd2FybmluZyBiZWxvdy4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIiCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgJyQxJyIKLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSAgICAgICAgICAjIEZhbGxiYWNrOgotICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0gICAgICAgIGZpCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotfQotIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRoCi0KLSMgZnVuY190b19ob3N0X3BhdGhsaXN0IGFyZwotIwotIyBDb252ZXJ0IHBhdGhsaXN0cyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KLSMgU2VlIGZ1bmNfdG9faG9zdF9wYXRoKCksIGFib3ZlLiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZQotIyBmb2xsb3dpbmcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucyAoYnV0IGRvZXMgbm8gaGFybSBmb3IKLSMgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgaGVyZSk6Ci0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAotIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3Ci0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndwotIwotIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0bwotIyAkaG9zdCBmb3JtYXQuIElmIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IKLSMgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dCBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KQotIyBvbiBvdXRwdXQuCi0jCi0jIEFSRyBpcyBhIHBhdGhsaXN0IChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIG9uICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAotIyBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdC4KLWZ1bmNfdG9faG9zdF9wYXRobGlzdCAoKQotewotICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkMSIKLSAgaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICptaW5ndyogKQotICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0gICAgICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQotICAgICAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCi0gICAgICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCi0gICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyPSIkMSIKLSAgICAgICAgIyBPbmNlIHNldCBmb3IgdGhpcyBjYWxsLCB0aGlzIHZhcmlhYmxlIHNob3VsZCBub3QgYmUKLSAgICAgICAgIyByZWFzc2lnbmVkLiBJdCBpcyB1c2VkIGluIHRoYSBmYWxsYmFjayBjYXNlLgotICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMT1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyIiB8XAotICAgICAgICAgICRTRUQgLWUgJ3N8XjoqfHwnIC1lICdzfDoqJHx8J2AKLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KLSAgICAgICAgICAqbWluZ3cqICkgIyBBY3R1YWxseSwgbXN5cy4KLSAgICAgICAgICAgICMgQXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdC4KLSAgICAgICAgICAgIGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXM9InMvWyBdKlwkLy8iCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj1gKCBjbWQgLy9jIGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXMiICkgMj4vZGV2L251bGwgfHwgZWNobyAiImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqY3lnd2luKiApCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj1gY3lncGF0aCAtdyAtcCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqICkKLSAgICAgICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhsaXN0cwotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iIgotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUz0kSUZTCi0gICAgICAgICAgICBJRlM9OgotICAgICAgICAgICAgZm9yIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSA7IGRvCi0gICAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUwotICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiIDsgdGhlbgotICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0gICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0OyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0gICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgIElGUz06Ci0gICAgICAgICAgICBkb25lCi0gICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgotICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aChzKSBjb3JyZXNwb25kaW5nIHRvIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgJyQxJyIKLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSAgICAgICAgICAjIEZhbGxiYWNrLiBUaGlzIG1heSBicmVhayBpZiAkMSBjb250YWlucyBET1Mtc3R5bGUgZHJpdmUKLSAgICAgICAgICAjIHNwZWNpZmljYXRpb25zLiBUaGUgZml4IGlzIG5vdCB0byBjb21wbGljYXRlIHRoZSBleHByZXNzaW9uCi0gICAgICAgICAgIyBiZWxvdywgYnV0IGZvciB0aGUgdXNlciB0byBwcm92aWRlIGEgd29ya2luZyB3aW5lIGluc3RhbGxhdGlvbgotICAgICAgICAgICMgd2l0aCB3aW5lcGF0aCBzbyB0aGF0IHBhdGggdHJhbnNsYXRpb24gaW4gdGhlIGNyb3NzLXRvLW1pbmd3Ci0gICAgICAgICAgIyBjYXNlIHdvcmtzIHByb3Blcmx5LgotICAgICAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zPSJzfDp8O3xnIgotICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKLSAgICAgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2RvcyJgCi0gICAgICAgIGZpCi0gICAgICAgICMgTm93LCBhZGQgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9ycyBiYWNrCi0gICAgICAgIGNhc2UgIiQxIiBpbgotICAgICAgICAgIDoqICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iOyRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IgotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICBjYXNlICIkMSIgaW4KLSAgICAgICAgICAqOiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0OyIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi19Ci0jIGVuZDogZnVuY190b19ob3N0X3BhdGhsaXN0Ci0KICMgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYwogIyBlbWl0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSB3cmFwcGVyIGV4ZWN1dGFibGUgb24gc3Rkb3V0CiAjIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gZnVuY19tb2RlX2xpbmsgYmVjYXVzZQpAQCAtMzE0MSwzMSArNDE0NywyMyBAQAogCiAgICBUaGlzIHdyYXBwZXIgZXhlY3V0YWJsZSBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCiAgICBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCi0KLSAgIEN1cnJlbnRseSwgaXQgc2ltcGx5IGV4ZWNzIHRoZSB3cmFwcGVyICpzY3JpcHQqICIkU0hFTEwgJG91dHB1dCIsCi0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCi0gICBleGVjICRvYmpkaXIvJG91dHB1dG5hbWUgZGlyZWN0bHkuCiAqLwogRU9GCiAJICAgIGNhdCA8PCJFT0YiCisjaWZkZWYgX01TQ19WRVIKKyMgZGVmaW5lIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSAxCisjZW5kaWYKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2lmZGVmIF9NU0NfVkVSCiAjIGluY2x1ZGUgPGRpcmVjdC5oPgogIyBpbmNsdWRlIDxwcm9jZXNzLmg+CiAjIGluY2x1ZGUgPGlvLmg+Ci0jIGRlZmluZSBzZXRtb2RlIF9zZXRtb2RlCiAjZWxzZQogIyBpbmNsdWRlIDx1bmlzdGQuaD4KICMgaW5jbHVkZSA8c3RkaW50Lmg+CiAjIGlmZGVmIF9fQ1lHV0lOX18KICMgIGluY2x1ZGUgPGlvLmg+Ci0jICBkZWZpbmUgSEFWRV9TRVRFTlYKLSMgIGlmZGVmIF9fU1RSSUNUX0FOU0lfXwotY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKLWludCBwdXRlbnYgKGNoYXIgKik7Ci1pbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKICNpbmNsdWRlIDxtYWxsb2MuaD4KQEAgLTMxNzcsNiArNDE3NSw0NCBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAorLyogZGVjbGFyYXRpb25zIG9mIG5vbi1BTlNJIGZ1bmN0aW9ucyAqLworI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCisjIGlmZGVmIF9fU1RSSUNUX0FOU0lfXworaW50IF9wdXRlbnYgKGNvbnN0IGNoYXIgKik7CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCisjIGlmZGVmIF9fU1RSSUNUX0FOU0lfXworY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKK2ludCBwdXRlbnYgKGNoYXIgKik7CitpbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyMgZW5kaWYKKy8qICNlbGlmIGRlZmluZWQgKG90aGVyIHBsYXRmb3JtcykgLi4uICovCisjZW5kaWYKKworLyogcG9ydGFiaWxpdHkgZGVmaW5lcywgZXhjbHVkaW5nIHBhdGggaGFuZGxpbmcgbWFjcm9zICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKKyMgZGVmaW5lIHN0YXQgICAgX3N0YXQKKyMgZGVmaW5lIGNobW9kICAgX2NobW9kCisjIGRlZmluZSBnZXRjd2QgIF9nZXRjd2QKKyMgZGVmaW5lIHB1dGVudiAgX3B1dGVudgorIyBkZWZpbmUgU19JWFVTUiBfU19JRVhFQworIyBpZm5kZWYgX0lOVFBUUl9UX0RFRklORUQKKyMgIGRlZmluZSBfSU5UUFRSX1RfREVGSU5FRAorIyAgZGVmaW5lIGludHB0cl90IGludAorIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKKyMgZGVmaW5lIHN0YXQgICAgX3N0YXQKKyMgZGVmaW5lIGNobW9kICAgX2NobW9kCisjIGRlZmluZSBnZXRjd2QgIF9nZXRjd2QKKyMgZGVmaW5lIHB1dGVudiAgX3B1dGVudgorI2VsaWYgZGVmaW5lZChfX0NZR1dJTl9fKQorIyBkZWZpbmUgSEFWRV9TRVRFTlYKKyMgZGVmaW5lIEZPUEVOX1dCICJ3YiIKKy8qICNlbGlmIGRlZmluZWQgKG90aGVyIHBsYXRmb3JtcykgLi4uICovCisjZW5kaWYKKwogI2lmIGRlZmluZWQoUEFUSF9NQVgpCiAjIGRlZmluZSBMVF9QQVRITUFYIFBBVEhfTUFYCiAjZWxpZiBkZWZpbmVkKE1BWFBBVEhMRU4pCkBAIC0zMTkyLDE0ICs0MjI4LDcgQEAKICMgZGVmaW5lIFNfSVhHUlAgMAogI2VuZGlmCiAKLSNpZmRlZiBfTVNDX1ZFUgotIyBkZWZpbmUgU19JWFVTUiBfU19JRVhFQwotIyBkZWZpbmUgc3RhdCBfc3RhdAotIyBpZm5kZWYgX0lOVFBUUl9UX0RFRklORUQKLSMgIGRlZmluZSBpbnRwdHJfdCBpbnQKLSMgZW5kaWYKLSNlbmRpZgotCisvKiBwYXRoIGhhbmRsaW5nIHBvcnRhYmlsaXR5IG1hY3JvcyAqLwogI2lmbmRlZiBESVJfU0VQQVJBVE9SCiAjIGRlZmluZSBESVJfU0VQQVJBVE9SICcvJwogIyBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgJzonCkBAIC0zMjMwLDEwICs0MjU5LDYgQEAKICMgZGVmaW5lIElTX1BBVEhfU0VQQVJBVE9SKGNoKSAoKGNoKSA9PSBQQVRIX1NFUEFSQVRPUl8yKQogI2VuZGlmIC8qIFBBVEhfU0VQQVJBVE9SXzIgKi8KIAotI2lmZGVmIF9fQ1lHV0lOX18KLSMgZGVmaW5lIEZPUEVOX1dCICJ3YiIKLSNlbmRpZgotCiAjaWZuZGVmIEZPUEVOX1dCCiAjIGRlZmluZSBGT1BFTl9XQiAidyIKICNlbmRpZgpAQCAtMzI0NiwyMiArNDI3MSwxMyBAQAogICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAogfSB3aGlsZSAoMCkKIAotI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgotI2lmIGRlZmluZWQgREVCVUdXUkFQUEVSCi0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykgbHR3cmFwcGVyX2RlYnVncHJpbnRmIGFyZ3MKLXN0YXRpYyB2b2lkCi1sdHdyYXBwZXJfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLSAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKLSAgICB2YV9lbmQgKGFyZ3MpOwotfQorI2lmIGRlZmluZWQoTFRfREVCVUdXUkFQUEVSKQorc3RhdGljIGludCBsdF9kZWJ1ZyA9IDE7CiAjZWxzZQotIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpCitzdGF0aWMgaW50IGx0X2RlYnVnID0gMDsKICNlbmRpZgogCi1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOworY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gImxpYnRvb2wtd3JhcHBlciI7IC8qIGluIGNhc2UgeHN0cmR1cCBmYWlscyAqLwogCiB2b2lkICp4bWFsbG9jIChzaXplX3QgbnVtKTsKIGNoYXIgKnhzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZyk7CkBAIC0zMjcxLDQxICs0Mjg3LDI3IEBACiBpbnQgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKIGludCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKIGNoYXIgKnN0cmVuZHphcCAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpOwotdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKK3ZvaWQgbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cit2b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKK3N0YXRpYyBjb25zdCBjaGFyICpub25udWxsIChjb25zdCBjaGFyICpzKTsKK3N0YXRpYyBjb25zdCBjaGFyICpub25lbXB0eSAoY29uc3QgY2hhciAqcyk7CiB2b2lkIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwogY2hhciAqbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKTsKLXZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoY29uc3QgY2hhciAqYXJnKTsKLXZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKGNvbnN0IGNoYXIgKmFyZyk7Ci12b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGNvbnN0IGNoYXIgKmFyZyk7Ci1pbnQgbHRfc3BsaXRfbmFtZV92YWx1ZSAoY29uc3QgY2hhciAqYXJnLCBjaGFyKiogbmFtZSwgY2hhcioqIHZhbHVlKTsKIHZvaWQgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CiB2b2lkIGx0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwotCi1zdGF0aWMgY29uc3QgY2hhciAqc2NyaXB0X3RleHRfcGFydDEgPQorY2hhciAqKnByZXBhcmVfc3Bhd24gKGNoYXIgKiphcmd2KTsKK3ZvaWQgbHRfZHVtcF9zY3JpcHQgKEZJTEUgKmYpOwogRU9GCiAKLQkgICAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgeWVzIHwKLQkgICAgICAgICRTRUQgLWUgJ3MvXChbXFwiXVwpL1xcXDEvZycgXAotCSAgICAgICAgICAgICAtZSAncy9eLyAgIi8nIC1lICdzLyQvXFxuIi8nCi0JICAgIGVjaG8gIjsiCiAJICAgIGNhdCA8PEVPRgotCi1zdGF0aWMgY29uc3QgY2hhciAqc2NyaXB0X3RleHRfcGFydDIgPQotRU9GCi0JICAgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyIHllcyB8Ci0JICAgICAgICAkU0VEIC1lICdzL1woW1xcIl1cKS9cXFwxL2cnIFwKLQkgICAgICAgICAgICAgLWUgJ3MvXi8gICIvJyAtZSAncy8kL1xcbiIvJwotCSAgICBlY2hvICI7IgotCi0JICAgIGNhdCA8PEVPRgotY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKK3ZvbGF0aWxlIGNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7CiBjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7CiBFT0YKIAogCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCi0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJHRlbXBfcnBhdGgiCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkdGVtcF9ycGF0aCIKIAkgICAgICBjYXQgPDxFT0YKLWNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwogRU9GCiAJICAgIGVsc2UKIAkgICAgICBjYXQgPDwiRU9GIgpAQCAtMzMxNCwxMCArNDMxNiwxMCBAQAogCSAgICBmaQogCiAJICAgIGlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiRkbGxzZWFyY2hwYXRoOiIKKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRkbGxzZWFyY2hwYXRoOiIKIAkgICAgICBjYXQgPDxFT0YKIGNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQVJOQU1FID0gIlBBVEgiOwotY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7CiBFT0YKIAkgICAgZWxzZQogCSAgICAgIGNhdCA8PCJFT0YiCkBAIC0zMzQwLDI0ICs0MzQyLDEwIEBACiAJICAgIGNhdCA8PCJFT0YiCiAKICNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCi0jZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCAgNQogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7CiBzdGF0aWMgY29uc3QgY2hhciAqbHR3cmFwcGVyX29wdGlvbl9wcmVmaXggPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWDsKLQogc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKLQotc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfc2V0X29wdF9sZW4gICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgNzsKLXN0YXRpYyBjb25zdCBjaGFyICplbnZfc2V0X29wdCAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtc2V0IjsKLSAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgdmFsdWUgb2YgZm9vIGlzIHNldCB0byBiYXIgKi8KLQotc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfcHJlcGVuZF9vcHRfbGVuID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgMTE7Ci1zdGF0aWMgY29uc3QgY2hhciAqZW52X3ByZXBlbmRfb3B0ICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZW52LXByZXBlbmQiOwotICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCBuZXcgdmFsdWUgb2YgZm9vIGlzIGJhciR7Zm9vfSAqLwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9hcHBlbmRfb3B0X2xlbiAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyAxMDsKLXN0YXRpYyBjb25zdCBjaGFyICplbnZfYXBwZW5kX29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtYXBwZW5kIjsKLSAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgbmV3IHZhbHVlIG9mIGZvbyBpcyAke2Zvb31iYXIgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpkZWJ1Z19vcHQgICAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkZWJ1ZyI7CiAKIGludAogbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKQEAgLTMzNzQsMTAgKzQzNjIsMTMgQEAKICAgaW50IGk7CiAKICAgcHJvZ3JhbV9uYW1lID0gKGNoYXIgKikgeHN0cmR1cCAoYmFzZV9uYW1lIChhcmd2WzBdKSk7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgYXJndlswXSAgICAgIDogJXNcbiIsIGFyZ3ZbMF0pKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBwcm9ncmFtX25hbWUgOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKSk7CisgIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKIAotICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdCAqLworICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdAorICAgKiBhbHNvLCBjb3B5IGFsbCBub24gY3dyYXBwZXIgb3B0aW9ucyB0byBuZXdhcmd6LCBleGNlcHQKKyAgICogYXJnelswXSwgd2hpY2ggaXMgaGFuZGxlZCBkaWZmZXJlbnRseQorICAgKi8KKyAgbmV3YXJnYz0wOwogICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQogICAgIHsKICAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQpAQCAtMzM5MSwyNSArNDM4Miw1NyBAQAogCSAgICAgIGVzYWMKIAogCSAgICBjYXQgPDwiRU9GIgotCSAgcHJpbnRmICgiJXMiLCBzY3JpcHRfdGV4dF9wYXJ0MSk7Ci0JICBwcmludGYgKCIlcyIsIHNjcmlwdF90ZXh0X3BhcnQyKTsKKwkgIGx0X2R1bXBfc2NyaXB0IChzdGRvdXQpOwogCSAgcmV0dXJuIDA7CiAJfQorICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZGVidWdfb3B0KSA9PSAwKQorCXsKKyAgICAgICAgICBsdF9kZWJ1ZyA9IDE7CisgICAgICAgICAgY29udGludWU7CisJfQorICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAorICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCisgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKyAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgInVucmVjb2duaXplZCAlcyBvcHRpb246ICclcyciLAorICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7CisgICAgICAgIH0KKyAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KKyAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOwogICAgIH0KKyAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKIAotICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CitFT0YKKwkgICAgY2F0IDw8RU9GCisgIC8qIFRoZSBHTlUgYmFubmVyIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1lcnJvciBkZWJ1ZyBtZXNzYWdlICovCisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICJsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXG4iKTsKK0VPRgorCSAgICBjYXQgPDwiRU9GIgorICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGFyZ3ZbMF06ICVzXG4iLCBhcmd2WzBdKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBwcm9ncmFtX25hbWU6ICVzXG4iLCBwcm9ncmFtX25hbWUpOworCiAgIHRtcF9wYXRoc3BlYyA9IGZpbmRfZXhlY3V0YWJsZSAoYXJndlswXSk7CiAgIGlmICh0bXBfcGF0aHNwZWMgPT0gTlVMTCkKLSAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAotCQkJICB0bXBfcGF0aHNwZWMpKTsKKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiY291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisJCSAgdG1wX3BhdGhzcGVjKTsKIAogICBhY3R1YWxfY3dyYXBwZXJfcGF0aCA9IGNoYXNlX3N5bWxpbmtzICh0bXBfcGF0aHNwZWMpOwotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLQkJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpOwogICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKIAotICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAoIGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwIChiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CiAgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKIAogICAvKiB3cmFwcGVyIG5hbWUgdHJhbnNmb3JtcyAqLwpAQCAtMzQyNyw4ICs0NDUwLDkgQEAKICAgdGFyZ2V0X25hbWUgPSB0bXBfcGF0aHNwZWM7CiAgIHRtcF9wYXRoc3BlYyA9IDA7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKLQkJCSAgdGFyZ2V0X25hbWUpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAorCQkgIHRhcmdldF9uYW1lKTsKIEVPRgogCiAJICAgIGNhdCA8PEVPRgpAQCAtMzQ3OCw4MCArNDUwMiwxOSBAQAogCiAgIGx0X3NldGVudiAoIkJJTl9TSCIsICJ4cGc0Iik7IC8qIGZvciBUcnU2NCAqLwogICBsdF9zZXRlbnYgKCJEVUFMQ0FTRSIsICIxIik7ICAvKiBmb3IgTVNLIHNoICovCi0gIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOworICAvKiBVcGRhdGUgdGhlIERMTCBzZWFyY2hwYXRoLiAgRVhFX1BBVEhfVkFMVUUgKCRkbGxzZWFyY2hwYXRoKSBtdXN0CisgICAgIGJlIHByZXBlbmRlZCBiZWZvcmUgKHRoYXQgaXMsIGFwcGVhciBhZnRlcikgTElCX1BBVEhfVkFMVUUgKCR0ZW1wX3JwYXRoKQorICAgICBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggKl9WQVJOQU1FcyBhcmUgUEFUSCBidXQgdW5pbnN0YWxsZWQKKyAgICAgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4gKi8KICAgbHRfdXBkYXRlX2V4ZV9wYXRoIChFWEVfUEFUSF9WQVJOQU1FLCBFWEVfUEFUSF9WQUxVRSk7CisgIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOwogCi0gIG5ld2FyZ2M9MDsKLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X3NldF9vcHQsIGVudl9zZXRfb3B0X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9zZXRfb3B0X2xlbl0gPT0gJz0nKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9zZXRfb3B0X2xlbiArIDE7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKHApOwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3NldF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoYXJndlsrK2ldKTsgLyogZG9uJ3QgY29weSAqLwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGx0X2ZhdGFsICgiJXMgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGVudl9zZXRfb3B0KTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9wcmVwZW5kX29wdCwgZW52X3ByZXBlbmRfb3B0X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9wcmVwZW5kX29wdF9sZW5dID09ICc9JykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfcHJlcGVuZF9vcHRfbGVuICsgMTsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKHApOwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3ByZXBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChhcmd2WysraV0pOyAvKiBkb24ndCBjb3B5ICovCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbHRfZmF0YWwgKCIlcyBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgZW52X3ByZXBlbmRfb3B0KTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9hcHBlbmRfb3B0LCBlbnZfYXBwZW5kX29wdF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoYXJndltpXVtlbnZfYXBwZW5kX29wdF9sZW5dID09ICc9JykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfYXBwZW5kX29wdF9sZW4gKyAxOwotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldW2Vudl9hcHBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGFyZ3ZbKytpXSk7IC8qIGRvbid0IGNvcHkgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsdF9mYXRhbCAoIiVzIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBlbnZfYXBwZW5kX29wdCk7Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0gICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAotICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCi0gICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQotICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0gICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKLSAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KLSAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KLSAgICAgICAgICAgKi8KLSAgICAgICAgICBsdF9mYXRhbCAoIlVucmVjb2duaXplZCBvcHRpb24gaW4gJXMgbmFtZXNwYWNlOiAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOwotICAgICAgICB9Ci0gICAgICAvKiBvdGhlcndpc2UgLi4uICovCi0gICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKLSAgICB9Ci0gIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7Ci0KLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICAgICAoKCIobWFpbikgbHRfYXJndl96ZXJvIDogJXNcbiIsIChsdF9hcmd2X3plcm8gPyBsdF9hcmd2X3plcm8gOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBsdF9hcmd2X3plcm86ICVzXG4iLAorCQkgIG5vbm51bGwgKGx0X2FyZ3ZfemVybykpOwogICBmb3IgKGkgPSAwOyBpIDwgbmV3YXJnYzsgaSsrKQogICAgIHsKLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbmV3YXJnelslZF0gICA6ICVzXG4iLCBpLCAobmV3YXJneltpXSA/IG5ld2FyZ3pbaV0gOiAiPE5VTEw+IikpKTsKKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbmV3YXJnelslZF06ICVzXG4iLAorCQkgICAgICBpLCBub25udWxsIChuZXdhcmd6W2ldKSk7CiAgICAgfQogCiBFT0YKQEAgLTM1NjAsMTEgKzQ1MjMsMTQgQEAKIAkgICAgICBtaW5ndyopCiAJCWNhdCA8PCJFT0YiCiAgIC8qIGV4ZWN2IGRvZXNuJ3QgYWN0dWFsbHkgd29yayBvbiBtaW5ndyBhcyBleHBlY3RlZCBvbiB1bml4ICovCisgIG5ld2FyZ3ogPSBwcmVwYXJlX3NwYXduIChuZXdhcmd6KTsKICAgcnZhbCA9IF9zcGF3bnYgKF9QX1dBSVQsIGx0X2FyZ3ZfemVybywgKGNvbnN0IGNoYXIgKiBjb25zdCAqKSBuZXdhcmd6KTsKICAgaWYgKHJ2YWwgPT0gLTEpCiAgICAgewogICAgICAgLyogZmFpbGVkIHRvIHN0YXJ0IHByb2Nlc3MgKi8KLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiBlcnJubyA9ICVkXG4iLCBsdF9hcmd2X3plcm8sIGVycm5vKSk7CisgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgICAiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogJXNcbiIsCisJCSAgICAgIGx0X2FyZ3ZfemVybywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwogICAgICAgcmV0dXJuIDEyNzsKICAgICB9CiAgIHJldHVybiBydmFsOwpAQCAtMzU4Niw3ICs0NTUyLDcgQEAKIHsKICAgdm9pZCAqcCA9ICh2b2lkICopIG1hbGxvYyAobnVtKTsKICAgaWYgKCFwKQotICAgIGx0X2ZhdGFsICgiTWVtb3J5IGV4aGF1c3RlZCIpOworICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJtZW1vcnkgZXhoYXVzdGVkIik7CiAKICAgcmV0dXJuIHA7CiB9CkBAIC0zNjIwLDggKzQ1ODYsOCBAQAogewogICBzdHJ1Y3Qgc3RhdCBzdDsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLAotCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihjaGVja19leGVjdXRhYmxlKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOwogICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKICAgICByZXR1cm4gMDsKIApAQCAtMzYzOCw4ICs0NjA0LDggQEAKICAgaW50IHJ2YWwgPSAwOwogICBzdHJ1Y3Qgc3RhdCBzdDsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1ha2VfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAotCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWtlX2V4ZWN1dGFibGUpOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CiAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQogICAgIHJldHVybiAwOwogCkBAIC0zNjY1LDggKzQ2MzEsOCBAQAogICBpbnQgdG1wX2xlbjsKICAgY2hhciAqY29uY2F0X25hbWU7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihmaW5kX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKLQkJCSAgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoZmluZF9leGVjdXRhYmxlKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBub25lbXB0eSAod3JhcHBlcikpOwogCiAgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCiAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNzE5LDcgKzQ2ODUsOCBAQAogCQl7CiAJCSAgLyogZW1wdHkgcGF0aDogY3VycmVudCBkaXJlY3RvcnkgKi8KIAkJICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0JCSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKwkJICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAJCSAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKIAkJICBjb25jYXRfbmFtZSA9CiAJCSAgICBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKQEAgLTM3NDQsNyArNDcxMSw4IEBACiAgICAgfQogICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCiAgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKLSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CiAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CiAgIG1lbWNweSAoY29uY2F0X25hbWUsIHRtcCwgdG1wX2xlbik7CkBAIC0zNzcwLDggKzQ3MzgsOSBAQAogICBpbnQgaGFzX3N5bWxpbmtzID0gMDsKICAgd2hpbGUgKHN0cmxlbiAodG1wX3BhdGhzcGVjKSAmJiAhaGFzX3N5bWxpbmtzKQogICAgIHsKLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAotCQkJICAgICAgdG1wX3BhdGhzcGVjKSk7CisgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgICAiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKKwkJICAgICAgdG1wX3BhdGhzcGVjKTsKICAgICAgIGlmIChsc3RhdCAodG1wX3BhdGhzcGVjLCAmcykgPT0gMCkKIAl7CiAJICBpZiAoU19JU0xOSyAocy5zdF9tb2RlKSAhPSAwKQpAQCAtMzc5Myw4ICs0NzYyLDkgQEAKIAl9CiAgICAgICBlbHNlCiAJewotCSAgY2hhciAqZXJyc3RyID0gc3RyZXJyb3IgKGVycm5vKTsKLQkgIGx0X2ZhdGFsICgiRXJyb3IgYWNjZXNzaW5nIGZpbGUgJXMgKCVzKSIsIHRtcF9wYXRoc3BlYywgZXJyc3RyKTsKKwkgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgICAiZXJyb3IgYWNjZXNzaW5nIGZpbGUgXCIlc1wiOiAlcyIsCisJCSAgICB0bXBfcGF0aHNwZWMsIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKIAl9CiAgICAgfQogICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKQEAgLTM4MDcsNyArNDc3Nyw4IEBACiAgIHRtcF9wYXRoc3BlYyA9IHJlYWxwYXRoIChwYXRoc3BlYywgYnVmKTsKICAgaWYgKHRtcF9wYXRoc3BlYyA9PSAwKQogICAgIHsKLSAgICAgIGx0X2ZhdGFsICgiQ291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CisgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorCQkiY291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CiAgICAgfQogICByZXR1cm4geHN0cmR1cCAodG1wX3BhdGhzcGVjKTsKICNlbmRpZgpAQCAtMzgzMywxMSArNDgwNCwyNSBAQAogICByZXR1cm4gc3RyOwogfQogCit2b2lkCitsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworICB2YV9saXN0IGFyZ3M7CisgIGlmIChsdF9kZWJ1ZykKKyAgICB7CisgICAgICAodm9pZCkgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSk7CisgICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKKyAgICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOworICAgICAgdmFfZW5kIChhcmdzKTsKKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkCi1sdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCitsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKmZpbGUsCisJICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICptb2RlLAogCSAgICAgICBjb25zdCBjaGFyICptZXNzYWdlLCB2YV9saXN0IGFwKQogewotICBmcHJpbnRmIChzdGRlcnIsICIlczogJXM6ICIsIHByb2dyYW1fbmFtZSwgbW9kZSk7CisgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lLCBtb2RlKTsKICAgdmZwcmludGYgKHN0ZGVyciwgbWVzc2FnZSwgYXApOwogICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKIApAQCAtMzg0NiwyMCArNDgzMSwzMiBAQAogfQogCiB2b2lkCi1sdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQorbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCiB7CiAgIHZhX2xpc3QgYXA7CiAgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7Ci0gIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsIGZpbGUsIGxpbmUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKICAgdmFfZW5kIChhcCk7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICoKK25vbm51bGwgKGNvbnN0IGNoYXIgKnMpCit7CisgIHJldHVybiBzID8gcyA6ICIobnVsbCkiOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqCitub25lbXB0eSAoY29uc3QgY2hhciAqcykKK3sKKyAgcmV0dXJuIChzICYmICEqcykgPyAiKGVtcHR5KSIgOiBub25udWxsIChzKTsKK30KKwogdm9pZAogbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CiAgIHsKICNpZmRlZiBIQVZFX1NFVEVOVgogICAgIC8qIGFsd2F5cyBtYWtlIGEgY29weSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggIUhBVkVfU0VURU5WICovCkBAIC0zOTA0LDk1ICs0OTAxLDEyIEBACiAgIHJldHVybiBuZXdfdmFsdWU7CiB9CiAKLWludAotbHRfc3BsaXRfbmFtZV92YWx1ZSAoY29uc3QgY2hhciAqYXJnLCBjaGFyKiogbmFtZSwgY2hhcioqIHZhbHVlKQotewotICBjb25zdCBjaGFyICpwOwotICBpbnQgbGVuOwotICBpZiAoIWFyZyB8fCAhKmFyZykKLSAgICByZXR1cm4gMTsKLQotICBwID0gc3RyY2hyIChhcmcsIChpbnQpJz0nKTsKLQotICBpZiAoIXApCi0gICAgcmV0dXJuIDE7Ci0KLSAgKnZhbHVlID0geHN0cmR1cCAoKytwKTsKLQotICBsZW4gPSBzdHJsZW4gKGFyZykgLSBzdHJsZW4gKCp2YWx1ZSk7Ci0gICpuYW1lID0gWE1BTExPQyAoY2hhciwgbGVuKTsKLSAgc3RybmNweSAoKm5hbWUsIGFyZywgbGVuLTEpOwotICAoKm5hbWUpW2xlbiAtIDFdID0gJ1wwJzsKLQotICByZXR1cm4gMDsKLX0KLQotdm9pZAotbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoY29uc3QgY2hhciAqYXJnKQotewotICBjaGFyICpuYW1lID0gTlVMTDsKLSAgY2hhciAqdmFsdWUgPSBOVUxMOwotCi0gIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCi0gICAgewotICAgICAgWEZSRUUgKG5hbWUpOwotICAgICAgWEZSRUUgKHZhbHVlKTsKLSAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9zZXRfb3B0LCBhcmcpOwotICAgIH0KLQotICBsdF9zZXRlbnYgKG5hbWUsIHZhbHVlKTsKLSAgWEZSRUUgKG5hbWUpOwotICBYRlJFRSAodmFsdWUpOwotfQotCi12b2lkCi1sdF9vcHRfcHJvY2Vzc19lbnZfcHJlcGVuZCAoY29uc3QgY2hhciAqYXJnKQotewotICBjaGFyICpuYW1lID0gTlVMTDsKLSAgY2hhciAqdmFsdWUgPSBOVUxMOwotICBjaGFyICpuZXdfdmFsdWUgPSBOVUxMOwotCi0gIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCi0gICAgewotICAgICAgWEZSRUUgKG5hbWUpOwotICAgICAgWEZSRUUgKHZhbHVlKTsKLSAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9wcmVwZW5kX29wdCwgYXJnKTsKLSAgICB9Ci0KLSAgbmV3X3ZhbHVlID0gbHRfZXh0ZW5kX3N0ciAoZ2V0ZW52IChuYW1lKSwgdmFsdWUsIDApOwotICBsdF9zZXRlbnYgKG5hbWUsIG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuZXdfdmFsdWUpOwotICBYRlJFRSAobmFtZSk7Ci0gIFhGUkVFICh2YWx1ZSk7Ci19Ci0KLXZvaWQKLWx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGNvbnN0IGNoYXIgKmFyZykKLXsKLSAgY2hhciAqbmFtZSA9IE5VTEw7Ci0gIGNoYXIgKnZhbHVlID0gTlVMTDsKLSAgY2hhciAqbmV3X3ZhbHVlID0gTlVMTDsKLQotICBpZiAobHRfc3BsaXRfbmFtZV92YWx1ZSAoYXJnLCAmbmFtZSwgJnZhbHVlKSAhPSAwKQotICAgIHsKLSAgICAgIFhGUkVFIChuYW1lKTsKLSAgICAgIFhGUkVFICh2YWx1ZSk7Ci0gICAgICBsdF9mYXRhbCAoImJhZCBhcmd1bWVudCBmb3IgJXM6ICclcyciLCBlbnZfYXBwZW5kX29wdCwgYXJnKTsKLSAgICB9Ci0KLSAgbmV3X3ZhbHVlID0gbHRfZXh0ZW5kX3N0ciAoZ2V0ZW52IChuYW1lKSwgdmFsdWUsIDEpOwotICBsdF9zZXRlbnYgKG5hbWUsIG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuZXdfdmFsdWUpOwotICBYRlJFRSAobmFtZSk7Ci0gIFhGUkVFICh2YWx1ZSk7Ci19Ci0KIHZvaWQKIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCiB7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CiAKICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQogICAgIHsKQEAgLTQwMTEsOSArNDkyNSw5IEBACiB2b2lkCiBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQogewotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwogCiAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKICAgICB7CkBAIC00MDIzLDExICs0OTM3LDE1OCBAQAogICAgIH0KIH0KIAorRU9GCisJICAgIGNhc2UgJGhvc3Rfb3MgaW4KKwkgICAgICBtaW5ndyopCisJCWNhdCA8PCJFT0YiCiAKKy8qIFByZXBhcmVzIGFuIGFyZ3VtZW50IHZlY3RvciBiZWZvcmUgY2FsbGluZyBzcGF3bigpLgorICAgTm90ZSB0aGF0IHNwYXduKCkgZG9lcyBub3QgYnkgaXRzZWxmIGNhbGwgdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIKKyAgICAgKGdldGVudiAoIkNPTVNQRUMiKSAhPSBOVUxMID8gZ2V0ZW52ICgiQ09NU1BFQyIpIDoKKyAgICAgICh7IE9TVkVSU0lPTklORk8gdjsgdi5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKE9TVkVSU0lPTklORk8pOworICAgICAgICAgR2V0VmVyc2lvbkV4KCZ2KTsKKyAgICAgICAgIHYuZHdQbGF0Zm9ybUlkID09IFZFUl9QTEFURk9STV9XSU4zMl9OVDsKKyAgICAgIH0pID8gImNtZC5leGUiIDogImNvbW1hbmQuY29tIikuCisgICBJbnN0ZWFkIGl0IHNpbXBseSBjb25jYXRlbmF0ZXMgdGhlIGFyZ3VtZW50cywgc2VwYXJhdGVkIGJ5ICcgJywgYW5kIGNhbGxzCisgICBDcmVhdGVQcm9jZXNzKCkuICBXZSBtdXN0IHF1b3RlIHRoZSBhcmd1bWVudHMgc2luY2UgV2luMzIgQ3JlYXRlUHJvY2VzcygpCisgICBpbnRlcnByZXRzIGNoYXJhY3RlcnMgbGlrZSAnICcsICdcdCcsICdcXCcsICciJyAoYnV0IG5vdCAnPCcgYW5kICc+JykgaW4gYQorICAgc3BlY2lhbCB3YXk6CisgICAtIFNwYWNlIGFuZCB0YWIgYXJlIGludGVycHJldGVkIGFzIGRlbGltaXRlcnMuIFRoZXkgYXJlIG5vdCB0cmVhdGVkIGFzCisgICAgIGRlbGltaXRlcnMgaWYgdGhleSBhcmUgc3Vycm91bmRlZCBieSBkb3VibGUgcXVvdGVzOiAiLi4uIi4KKyAgIC0gVW5lc2NhcGVkIGRvdWJsZSBxdW90ZXMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaW5wdXQuIFRoZWlyIG9ubHkgZWZmZWN0IGlzCisgICAgIHRoYXQgd2l0aGluIGRvdWJsZSBxdW90ZXMsIHNwYWNlIGFuZCB0YWIgYXJlIHRyZWF0ZWQgbGlrZSBub3JtYWwKKyAgICAgY2hhcmFjdGVycy4KKyAgIC0gQmFja3NsYXNoZXMgbm90IGZvbGxvd2VkIGJ5IGRvdWJsZSBxdW90ZXMgYXJlIG5vdCBzcGVjaWFsLgorICAgLSBCdXQgMipuKzEgYmFja3NsYXNoZXMgZm9sbG93ZWQgYnkgYSBkb3VibGUgcXVvdGUgYmVjb21lCisgICAgIG4gYmFja3NsYXNoZXMgZm9sbG93ZWQgYnkgYSBkb3VibGUgcXVvdGUgKG4gPj0gMCk6CisgICAgICAgXCIgLT4gIgorICAgICAgIFxcXCIgLT4gXCIKKyAgICAgICBcXFxcXCIgLT4gXFwiCisgKi8KKyNkZWZpbmUgU0hFTExfU1BFQ0lBTF9DSEFSUyAiXCJcXCBcMDAxXDAwMlwwMDNcMDA0XDAwNVwwMDZcMDA3XDAxMFwwMTFcMDEyXDAxM1wwMTRcMDE1XDAxNlwwMTdcMDIwXDAyMVwwMjJcMDIzXDAyNFwwMjVcMDI2XDAyN1wwMzBcMDMxXDAzMlwwMzNcMDM0XDAzNVwwMzZcMDM3IgorI2RlZmluZSBTSEVMTF9TUEFDRV9DSEFSUyAiIFwwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlwwMDdcMDEwXDAxMVwwMTJcMDEzXDAxNFwwMTVcMDE2XDAxN1wwMjBcMDIxXDAyMlwwMjNcMDI0XDAyNVwwMjZcMDI3XDAzMFwwMzFcMDMyXDAzM1wwMzRcMDM1XDAzNlwwMzciCitjaGFyICoqCitwcmVwYXJlX3NwYXduIChjaGFyICoqYXJndikKK3sKKyAgc2l6ZV90IGFyZ2M7CisgIGNoYXIgKipuZXdfYXJndjsKKyAgc2l6ZV90IGk7CisKKyAgLyogQ291bnQgbnVtYmVyIG9mIGFyZ3VtZW50cy4gICovCisgIGZvciAoYXJnYyA9IDA7IGFyZ3ZbYXJnY10gIT0gTlVMTDsgYXJnYysrKQorICAgIDsKKworICAvKiBBbGxvY2F0ZSBuZXcgYXJndW1lbnQgdmVjdG9yLiAgKi8KKyAgbmV3X2FyZ3YgPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKKworICAvKiBQdXQgcXVvdGVkIGFyZ3VtZW50cyBpbnRvIHRoZSBuZXcgYXJndW1lbnQgdmVjdG9yLiAgKi8KKyAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKyAgICB7CisgICAgICBjb25zdCBjaGFyICpzdHJpbmcgPSBhcmd2W2ldOworCisgICAgICBpZiAoc3RyaW5nWzBdID09ICdcMCcpCisJbmV3X2FyZ3ZbaV0gPSB4c3RyZHVwICgiXCJcIiIpOworICAgICAgZWxzZSBpZiAoc3RycGJyayAoc3RyaW5nLCBTSEVMTF9TUEVDSUFMX0NIQVJTKSAhPSBOVUxMKQorCXsKKwkgIGludCBxdW90ZV9hcm91bmQgPSAoc3RycGJyayAoc3RyaW5nLCBTSEVMTF9TUEFDRV9DSEFSUykgIT0gTlVMTCk7CisJICBzaXplX3QgbGVuZ3RoOworCSAgdW5zaWduZWQgaW50IGJhY2tzbGFzaGVzOworCSAgY29uc3QgY2hhciAqczsKKwkgIGNoYXIgKnF1b3RlZF9zdHJpbmc7CisJICBjaGFyICpwOworCisJICBsZW5ndGggPSAwOworCSAgYmFja3NsYXNoZXMgPSAwOworCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgbGVuZ3RoKys7CisJICBmb3IgKHMgPSBzdHJpbmc7ICpzICE9ICdcMCc7IHMrKykKKwkgICAgeworCSAgICAgIGNoYXIgYyA9ICpzOworCSAgICAgIGlmIChjID09ICciJykKKwkJbGVuZ3RoICs9IGJhY2tzbGFzaGVzICsgMTsKKwkgICAgICBsZW5ndGgrKzsKKwkgICAgICBpZiAoYyA9PSAnXFwnKQorCQliYWNrc2xhc2hlcysrOworCSAgICAgIGVsc2UKKwkJYmFja3NsYXNoZXMgPSAwOworCSAgICB9CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICBsZW5ndGggKz0gYmFja3NsYXNoZXMgKyAxOworCisJICBxdW90ZWRfc3RyaW5nID0gWE1BTExPQyAoY2hhciwgbGVuZ3RoICsgMSk7CisKKwkgIHAgPSBxdW90ZWRfc3RyaW5nOworCSAgYmFja3NsYXNoZXMgPSAwOworCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgKnArKyA9ICciJzsKKwkgIGZvciAocyA9IHN0cmluZzsgKnMgIT0gJ1wwJzsgcysrKQorCSAgICB7CisJICAgICAgY2hhciBjID0gKnM7CisJICAgICAgaWYgKGMgPT0gJyInKQorCQl7CisJCSAgdW5zaWduZWQgaW50IGo7CisJCSAgZm9yIChqID0gYmFja3NsYXNoZXMgKyAxOyBqID4gMDsgai0tKQorCQkgICAgKnArKyA9ICdcXCc7CisJCX0KKwkgICAgICAqcCsrID0gYzsKKwkgICAgICBpZiAoYyA9PSAnXFwnKQorCQliYWNrc2xhc2hlcysrOworCSAgICAgIGVsc2UKKwkJYmFja3NsYXNoZXMgPSAwOworCSAgICB9CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICB7CisJICAgICAgdW5zaWduZWQgaW50IGo7CisJICAgICAgZm9yIChqID0gYmFja3NsYXNoZXM7IGogPiAwOyBqLS0pCisJCSpwKysgPSAnXFwnOworCSAgICAgICpwKysgPSAnIic7CisJICAgIH0KKwkgICpwID0gJ1wwJzsKKworCSAgbmV3X2FyZ3ZbaV0gPSBxdW90ZWRfc3RyaW5nOworCX0KKyAgICAgIGVsc2UKKwluZXdfYXJndltpXSA9IChjaGFyICopIHN0cmluZzsKKyAgICB9CisgIG5ld19hcmd2W2FyZ2NdID0gTlVMTDsKKworICByZXR1cm4gbmV3X2FyZ3Y7Cit9CitFT0YKKwkJOzsKKwkgICAgZXNhYworCisgICAgICAgICAgICBjYXQgPDwiRU9GIgordm9pZCBsdF9kdW1wX3NjcmlwdCAoRklMRSogZikKK3sKK0VPRgorCSAgICBmdW5jX2VtaXRfd3JhcHBlciB5ZXMgfAorCSAgICAgICRTRUQgLW4gLWUgJworcy9eXCguXHs3OVx9XClcKC4uKlwpL1wxXAorXDIvCitoCitzL1woW1xcIl1cKS9cXFwxL2cKK3MvJC9cXG4vCitzL1woW15cbl0qXCkuKi8gIGZwdXRzICgiXDEiLCBmKTsvcAorZworRCcKKyAgICAgICAgICAgIGNhdCA8PCJFT0YiCit9CiBFT0YKIH0KICMgZW5kOiBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCiAKKyMgZnVuY193aW4zMl9pbXBvcnRfbGliX3AgQVJHCisjIFRydWUgaWYgQVJHIGlzIGFuIGltcG9ydCBsaWIsIGFzIGluZGljYXRlZCBieSAkZmlsZV9tYWdpY19jbWQKK2Z1bmNfd2luMzJfaW1wb3J0X2xpYl9wICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgIGNhc2UgYGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCQxXCIgMj4vZGV2L251bGwgfCAkU0VEIC1lIDEwcWAgaW4KKyAgICAqaW1wb3J0KikgOiA7OworICAgICopIGZhbHNlIDs7CisgICAgZXNhYworfQorCiAjIGZ1bmNfbW9kZV9saW5rIGFyZy4uLgogZnVuY19tb2RlX2xpbmsgKCkKIHsKQEAgLTQwNzIsNiArNTEzMyw3IEBACiAgICAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9CiAKICAgICBhdm9pZF92ZXJzaW9uPW5vCisgICAgYmluZGlyPQogICAgIGRsZmlsZXM9CiAgICAgZGxwcmVmaWxlcz0KICAgICBkbHNlbGY9bm8KQEAgLTQxNjQsNiArNTIyNiwxMSBAQAogCWVzYWMKIAogCWNhc2UgJHByZXYgaW4KKwliaW5kaXIpCisJICBiaW5kaXI9IiRhcmciCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CiAJZGxmaWxlc3xkbHByZWZpbGVzKQogCSAgaWYgdGVzdCAiJHByZWxvYWQiID0gbm87IHRoZW4KIAkgICAgIyBBZGQgdGhlIHN5bWJvbCBvYmplY3QgaW50byB0aGUgbGlua2luZyBjb21tYW5kcy4KQEAgLTQxOTUsOSArNTI2Miw5IEBACiAJICAgIDs7CiAJICAqKQogCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0JICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKKwkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGFyZyIKIAkgICAgZWxzZQotCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCisJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRhcmciCiAJICAgIGZpCiAJICAgIHByZXY9CiAJICAgIGNvbnRpbnVlCkBAIC00MjIxLDcgKzUyODgsNyBAQAogCSAgICAqLSotZGFyd2luKikKIAkgICAgICBjYXNlICIkZGVwbGlicyAiIGluCiAJCSoiICRxYXJnLmx0ZnJhbWV3b3JrICIqKSA7OwotCQkqKSBkZXBsaWJzPSIkZGVwbGlicyAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCisJCSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCiAJCSAgIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CkBAIC00MjQwLDcgKzUzMDcsNyBAQAogCSAgICBtb3JlYXJncz0KIAkgICAgZm9yIGZpbCBpbiBgY2F0ICIkc2F2ZV9hcmciYAogCSAgICBkbwotIwkgICAgICBtb3JlYXJncz0iJG1vcmVhcmdzICRmaWwiCisjCSAgICAgIGZ1bmNfYXBwZW5kIG1vcmVhcmdzICIgJGZpbCIKIAkgICAgICBhcmc9JGZpbAogCSAgICAgICMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgb2JqZWN0LgogCkBAIC00MjY5LDcgKzUzMzYsNyBAQAogCiAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgogCQkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgotCQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKKwkJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgogCQkgICAgICBwcmV2PQogCQkgICAgICBjb250aW51ZQogCQkgICAgZWxzZQpAQCAtNDI4MSw3ICs1MzQ4LDcgQEAKIAkJICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQogCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KIAkJICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLQkJICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorCQkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgogCQkgICAgcHJldj0KIAkJICBmaQogCkBAIC00MzUxLDEyICs1NDE4LDEyIEBACiAJICBpZiB0ZXN0ICIkcHJldiIgPSBycGF0aDsgdGhlbgogCSAgICBjYXNlICIkcnBhdGggIiBpbgogCSAgICAqIiAkYXJnICIqKSA7OwotCSAgICAqKSBycGF0aD0iJHJwYXRoICRhcmciIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGFyZyIgOzsKIAkgICAgZXNhYwogCSAgZWxzZQogCSAgICBjYXNlICIkeHJwYXRoICIgaW4KIAkgICAgKiIgJGFyZyAiKikgOzsKLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRhcmciIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRhcmciIDs7CiAJICAgIGVzYWMKIAkgIGZpCiAJICBwcmV2PQpAQCAtNDM2OCwyOCArNTQzNSwyOCBAQAogCSAgY29udGludWUKIAkgIDs7CiAJd2VhaykKLQkgIHdlYWtfbGlicz0iJHdlYWtfbGlicyAkYXJnIgorCSAgZnVuY19hcHBlbmQgd2Vha19saWJzICIgJGFyZyIKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKIAl4Y2NsaW5rZXIpCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgogCSAgcHJldj0KIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgogCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAJeGNvbXBpbGVyKQotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCiAJICBwcmV2PQogCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCiAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCiAJICBjb250aW51ZQogCSAgOzsKIAl4bGlua2VyKQotCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkcWFyZyIKIAkgIHByZXY9CiAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkd2wkcWFyZyIKIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkd2wkcWFyZyIKQEAgLTQ0MjUsNiArNTQ5MiwxMSBAQAogCWNvbnRpbnVlCiAJOzsKIAorICAgICAgLWJpbmRpcikKKwlwcmV2PWJpbmRpcgorCWNvbnRpbnVlCisJOzsKKwogICAgICAgLWRsb3BlbikKIAlwcmV2PWRsZmlsZXMKIAljb250aW51ZQpAQCAtNDQ3NSwxNSArNTU0NywxNiBAQAogCTs7CiAKICAgICAgIC1MKikKLQlmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkYXJnIgotCWRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0JaWYgdGVzdCAteiAiJGRpciI7IHRoZW4KKwlmdW5jX3N0cmlwbmFtZSAiLUwiICcnICIkYXJnIgorCWlmIHRlc3QgLXogIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOyB0aGVuCiAJICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KIAkgICAgZnVuY19mYXRhbF9lcnJvciAicmVxdWlyZSBubyBzcGFjZSBiZXR3ZWVuIFxgLUwnIGFuZCBcYCQxJyIKIAkgIGVsc2UKIAkgICAgZnVuY19mYXRhbF9lcnJvciAibmVlZCBwYXRoIGZvciBcYC1MJyBvcHRpb24iCiAJICBmaQogCWZpCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAljYXNlICRkaXIgaW4KIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CkBAIC00NDk1LDI0ICs1NTY4LDMwIEBACiAJICA7OwogCWVzYWMKIAljYXNlICIkZGVwbGlicyAiIGluCi0JKiIgLUwkZGlyICIqKSA7OworCSoiIC1MJGRpciAiKiB8ICoiICRhcmcgIiopCisJICAjIFdpbGwgb25seSBoYXBwZW4gZm9yIGFic29sdXRlIG9yIHN5c3Jvb3QgYXJndW1lbnRzCisJICA7OwogCSopCi0JICBkZXBsaWJzPSIkZGVwbGlicyAtTCRkaXIiCi0JICBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIKKwkgICMgUHJlc2VydmUgc3lzcm9vdCwgYnV0IG5ldmVyIGluY2x1ZGUgcmVsYXRpdmUgZGlyZWN0b3JpZXMKKwkgIGNhc2UgJGRpciBpbgorCSAgICBbXFwvXSogfCBbQS1aYS16XTpbXFwvXSogfCA9KikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtTCRkaXIiIDs7CisJICBlc2FjCisJICBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIgogCSAgOzsKIAllc2FjCiAJY2FzZSAkaG9zdCBpbgogCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0JICB0ZXN0YmluZGlyPWAkRUNITyAiWCRkaXIiIHwgJFhzZWQgLWUgJ3MqL2xpYiQqL2JpbionYAorCSAgdGVzdGJpbmRpcj1gJEVDSE8gIiRkaXIiIHwgJFNFRCAncyovbGliJCovYmluKidgCiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiRkaXI6IiopIDs7CiAJICA6OikgZGxsc2VhcmNocGF0aD0kZGlyOzsKLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRkaXIiOzsKKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokZGlyIjs7CiAJICBlc2FjCiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OwogCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwotCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OwogCSAgZXNhYwogCSAgOzsKIAllc2FjCkBAIC00NTIyLDcgKzU2MDEsNyBAQAogICAgICAgLWwqKQogCWlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiB8fCB0ZXN0ICJYJGFyZyIgPSAiWC1sbSI7IHRoZW4KIAkgIGNhc2UgJGhvc3QgaW4KLQkgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqKQorCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyogfCAqLSotaGFpa3UqKQogCSAgICAjIFRoZXNlIHN5c3RlbXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIEMgb3IgbWF0aCBsaWJyYXJ5IChhcyBzdWNoKQogCSAgICBjb250aW51ZQogCSAgICA7OwpAQCAtNDUzNiw3ICs1NjE1LDcgQEAKIAkgICAgOzsKIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICAgIyBSaGFwc29keSBDIGFuZCBtYXRoIGxpYnJhcmllcyBhcmUgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgorCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgogCSAgICBjb250aW51ZQogCSAgICA7OwogCSAgKi0qLXNjbzMuMnY1KiB8ICotKi1zY281djYqKQpAQCAtNDU1Niw3ICs1NjM1LDcgQEAKIAkgICA7OwogCSBlc2FjCiAJZmkKLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgogCWNvbnRpbnVlCiAJOzsKIApAQCAtNDU2OCwyMSArNTY0NywyMiBAQAogICAgICAgIyBUcnU2NCBVTklYIHVzZXMgLW1vZGVsIFthcmddIHRvIGRldGVybWluZSB0aGUgbGF5b3V0IG9mIEMrKwogICAgICAgIyBjbGFzc2VzLCBuYW1lIG1hbmdsaW5nLCBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLgogICAgICAgIyBEYXJ3aW4gdXNlcyB0aGUgLWFyY2ggZmxhZyB0byBkZXRlcm1pbmUgb3V0cHV0IGFyY2hpdGVjdHVyZS4KLSAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3QpCi0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdHwtLXN5c3Jvb3QpCisJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgogCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCiAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAJcHJldj14Y29tcGlsZXIKIAljb250aW51ZQogCTs7CiAKLSAgICAgIC1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmV8LXRocmVhZHMpCi0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZSBcCisgICAgICB8LXRocmVhZHN8LWZvcGVubXB8LW9wZW5tcHwtbXB8LXhvcGVubXB8LW9tcHwtcXNtcD0qKQorCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKIAlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgogCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgogCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCiAJICAgICoiICRhcmcgIiopIDs7Ci0JICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRhcmciIDs7CisJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRhcmciIDs7CiAJZXNhYwogCWNvbnRpbnVlCiAJOzsKQEAgLTQ2NDksMTMgKzU3MjksMTcgQEAKIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAljYXNlICRkaXIgaW4KIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CisJPSopCisJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRkaXIiCisJICBkaXI9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0CisJICA7OwogCSopCiAJICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGFic29sdXRlIHJ1bi1wYXRocyBhcmUgYWxsb3dlZCIKIAkgIDs7CiAJZXNhYwogCWNhc2UgIiR4cnBhdGggIiBpbgogCSoiICRkaXIgIiopIDs7Ci0JKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7CisJKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKIAllc2FjCiAJY29udGludWUKIAk7OwpAQCAtNDcwOCw4ICs1NzkyLDggQEAKIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KIAkgIElGUz0iJHNhdmVfaWZzIgogICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgotCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgYXJnICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJZG9uZQogCUlGUz0iJHNhdmVfaWZzIgogCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKQEAgLTQ3MjQsOSArNTgwOCw5IEBACiAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCiAJICBJRlM9IiRzYXZlX2lmcyIKICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKLQkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBhcmcgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAlkb25lCiAJSUZTPSIkc2F2ZV9pZnMiCiAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgpAQCAtNDc1NCwyMyArNTgzOCwyNyBAQAogCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCTs7CiAKLSAgICAgICMgLTY0LCAtbWlwc1swLTldIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU0dJIGNvbXBpbGVyCi0gICAgICAjIC1yWzAtOV1bMC05XSogc3BlY2lmaWVzIHRoZSBwcm9jZXNzb3Igb24gdGhlIFNHSSBjb21waWxlcgotICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFN1biBjb21waWxlcgotICAgICAgIyArREEqLCArREQqIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgSFAgY29tcGlsZXIKLSAgICAgICMgLXEqIHBhc3MgdGhyb3VnaCBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCi0gICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIHBhc3MgdGhyb3VnaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMKLSAgICAgICMgY29tcGlsZXIgYXJncyBmb3IgR0NDCi0gICAgICAjIC1GL3BhdGggZ2l2ZXMgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCi0gICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qIHBhc3MgdGhyb3VnaCBwcm9maWxpbmcgZmxhZyBmb3IgR0NDCi0gICAgICAjIEBmaWxlIEdDQyByZXNwb25zZSBmaWxlcworICAgICAgIyBGbGFncyB0byBiZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQsIHdpdGggcmF0aW9uYWxlOgorICAgICAgIyAtNjQsIC1taXBzWzAtOV0gICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTR0kgY29tcGlsZXIKKyAgICAgICMgLXJbMC05XVswLTldKiAgICAgICAgc3BlY2lmeSBwcm9jZXNzb3IgZm9yIHRoZSBTR0kgY29tcGlsZXIKKyAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgU3VuIGNvbXBpbGVyCisgICAgICAjICtEQSosICtERCogICAgICAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIEhQIGNvbXBpbGVyCisgICAgICAjIC1xKiAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKKyAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGZsYWdzIGZvciBHQ0MKKyAgICAgICMgLUYvcGF0aCAgICAgICAgICAgICAgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCisgICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qICBwcm9maWxpbmcgZmxhZ3MgZm9yIEdDQworICAgICAgIyBAZmlsZSAgICAgICAgICAgICAgICBHQ0MgcmVzcG9uc2UgZmlsZXMKKyAgICAgICMgLXRwPSogICAgICAgICAgICAgICAgUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgorICAgICAgIyAtLXN5c3Jvb3Q9KiAgICAgICAgICBmb3Igc3lzcm9vdCBzdXBwb3J0CisgICAgICAjIC1PKiwgLWZsdG8qLCAtZndob3ByKiwgLWZ1c2UtbGlua2VyLXBsdWdpbiBHQ0MgbGluay10aW1lIG9wdGltaXphdGlvbgogICAgICAgLTY0fC1taXBzWzAtOV18LXJbMC05XVswLTldKnwteGFyY2g9KnwteHRhcmdldD0qfCtEQSp8K0REKnwtcSp8LW0qfCBcCi0gICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCopCisgICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSp8LS1zeXNyb290PSp8IFwKKyAgICAgIC1PKnwtZmx0byp8LWZ3aG9wcip8LWZ1c2UtbGlua2VyLXBsdWdpbikKICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKICAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKICAgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKyAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgogICAgICAgICBjb250aW51ZQogICAgICAgICA7OwogCkBAIC00NzgyLDcgKzU4NzAsNyBAQAogCiAgICAgICAqLiRvYmpleHQpCiAJIyBBIHN0YW5kYXJkIG9iamVjdC4KLQlvYmpzPSIkb2JqcyAkYXJnIgorCWZ1bmNfYXBwZW5kIG9ianMgIiAkYXJnIgogCTs7CiAKICAgICAgICoubG8pCkBAIC00ODEzLDcgKzU5MDEsNyBAQAogCiAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0JCWRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorCQlmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCiAJCXByZXY9CiAJCWNvbnRpbnVlCiAJICAgICAgZWxzZQpAQCAtNDgyNSw3ICs1OTEzLDcgQEAKIAkgICAgIyBDSEVDSyBNRTogIEkgdGhpbmsgSSBidXN0ZWQgdGhpcy4gIC1Pc3NhbWEKIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgogCSAgICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLQkgICAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkcGljX29iamVjdCIKKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCiAJICAgICAgcHJldj0KIAkgICAgZmkKIApAQCAtNDg3MCwyNCArNTk1OCwyNSBAQAogCiAgICAgICAqLiRsaWJleHQpCiAJIyBBbiBhcmNoaXZlLgotCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCi0Jb2xkX2RlcGxpYnM9IiRvbGRfZGVwbGlicyAkYXJnIgorCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgorCWZ1bmNfYXBwZW5kIG9sZF9kZXBsaWJzICIgJGFyZyIKIAljb250aW51ZQogCTs7CiAKICAgICAgICoubGEpCiAJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBsaWJyYXJ5LgogCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRhcmciCiAJaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgogCSAgIyBUaGlzIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbG9wZW4uCi0JICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorCSAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICBwcmV2PQogCWVsaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgogCSAgIyBUaGUgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KLQkgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCisJICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIHByZXY9CiAJZWxzZQotCSAgZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCWZpCiAJY29udGludWUKIAk7OwpAQCAtNDkyNSw3ICs2MDE0LDcgQEAKIAogICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgogICAgICAgIyBnZXQgdGhlIGRpcmVjdG9yaWVzIGxpc3RlZCBpbiAkc2hsaWJwYXRoX3ZhcgotICAgICAgZXZhbCBzaGxpYl9zZWFyY2hfcGF0aD1cYFwkRUNITyBcIlhcJHskc2hsaWJwYXRoX3Zhcn1cIiBcfCBcJFhzZWQgLWUgXCdzLzovIC9nXCdcYAorICAgICAgZXZhbCBzaGxpYl9zZWFyY2hfcGF0aD1cYFwkRUNITyBcIlwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkU0VEIFwncy86LyAvZ1wnXGAKICAgICBlbHNlCiAgICAgICBzaGxpYl9zZWFyY2hfcGF0aD0KICAgICBmaQpAQCAtNDkzNCw2ICs2MDIzLDggQEAKIAogICAgIGZ1bmNfZGlybmFtZSAiJG91dHB1dCIgIi8iICIiCiAgICAgb3V0cHV0X29iamRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkb2JqZGlyIgorICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8iCisgICAgdG9vbF9vdXRwdXRfb2JqZGlyPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKICAgICAjIENyZWF0ZSB0aGUgb2JqZWN0IGRpcmVjdG9yeS4KICAgICBmdW5jX21rZGlyX3AgIiRvdXRwdXRfb2JqZGlyIgogCkBAIC00OTU0LDEyICs2MDQ1LDEyIEBACiAgICAgIyBGaW5kIGFsbCBpbnRlcmRlcGVuZGVudCBkZXBsaWJzIGJ5IHNlYXJjaGluZyBmb3IgbGlicmFyaWVzCiAgICAgIyB0aGF0IGFyZSBsaW5rZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gLWxhIC1sYiAtbGEpCiAgICAgZm9yIGRlcGxpYiBpbiAkZGVwbGliczsgZG8KLSAgICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgogCWNhc2UgIiRsaWJzICIgaW4KLQkqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwogCWVzYWMKICAgICAgIGZpCi0gICAgICBsaWJzPSIkbGlicyAkZGVwbGliIgorICAgICAgZnVuY19hcHBlbmQgbGlicyAiICRkZXBsaWIiCiAgICAgZG9uZQogCiAgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgpAQCAtNDk3Miw5ICs2MDYzLDkgQEAKICAgICAgIGlmICRvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzOyB0aGVuCiAJZm9yIHByZV9wb3N0X2RlcCBpbiAkcHJlZGVwcyAkcG9zdGRlcHM7IGRvCiAJICBjYXNlICIkcHJlX3Bvc3RfZGVwcyAiIGluCi0JICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OworCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkcHJlX3Bvc3RfZGVwcyIgOzsKIAkgIGVzYWMKLQkgIHByZV9wb3N0X2RlcHM9IiRwcmVfcG9zdF9kZXBzICRwcmVfcG9zdF9kZXAiCisJICBmdW5jX2FwcGVuZCBwcmVfcG9zdF9kZXBzICIgJHByZV9wb3N0X2RlcCIKIAlkb25lCiAgICAgICBmaQogICAgICAgcHJlX3Bvc3RfZGVwcz0KQEAgLTUwMzMsNyArNjEyNCwxMCBAQAogCWNhc2UgJHBhc3MgaW4KIAlkbG9wZW4pIGxpYnM9IiRkbGZpbGVzIiA7OwogCWRscHJlb3BlbikgbGlicz0iJGRscHJlZmlsZXMiIDs7Ci0JbGluaykgbGlicz0iJGRlcGxpYnMgJURFUExJQlMlICRkZXBlbmRlbmN5X2xpYnMiIDs7CisJbGluaykKKwkgIGxpYnM9IiRkZXBsaWJzICVERVBMSUJTJSIKKwkgIHRlc3QgIlgkbGlua19hbGxfZGVwbGlicyIgIT0gWG5vICYmIGxpYnM9IiRsaWJzICRkZXBlbmRlbmN5X2xpYnMiCisJICA7OwogCWVzYWMKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixkbHByZW9wZW4iOyB0aGVuCkBAIC01MDQxLDE3ICs2MTM1LDE5IEBACiAJZm9yIGxpYiBpbiAkZGxwcmVmaWxlczsgZG8KIAkgICMgSWdub3JlIG5vbi1saWJ0b29sLWxpYnMKIAkgIGRlcGVuZGVuY3lfbGlicz0KKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgogCSAgY2FzZSAkbGliIGluCi0JICAqLmxhKQlmdW5jX3NvdXJjZSAiJGxpYiIgOzsKKwkgICoubGEpCWZ1bmNfc291cmNlICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OwogCSAgZXNhYwogCiAJICAjIENvbGxlY3QgcHJlb3BlbmVkIGxpYnRvb2wgZGVwbGlicywgZXhjZXB0IGFueSB0aGlzIGxpYnJhcnkKIAkgICMgaGFzIGRlY2xhcmVkIGFzIHdlYWsgbGlicwogCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotICAgICAgICAgICAgZGVwbGliX2Jhc2U9YCRFQ0hPICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKKwkgICAgZnVuY19iYXNlbmFtZSAiJGRlcGxpYiIKKyAgICAgICAgICAgIGRlcGxpYl9iYXNlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCSAgICBjYXNlICIgJHdlYWtfbGlicyAiIGluCiAJICAgICoiICRkZXBsaWJfYmFzZSAiKikgOzsKLQkgICAgKikgZGVwbGlicz0iJGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAlkb25lCkBAIC01MDY3LDE2ICs2MTYzLDE3IEBACiAJbGliPQogCWZvdW5kPW5vCiAJY2FzZSAkZGVwbGliIGluCi0JLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKKwktbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlIFwKKyAgICAgICAgfC10aHJlYWRzfC1mb3Blbm1wfC1vcGVubXB8LW1wfC14b3Blbm1wfC1vbXB8LXFzbXA9KikKIAkgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgogCSAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgIGVsc2UKLQkgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRkZXBsaWIiCiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCiAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCiAJCSAgICAqIiAkZGVwbGliICIqKSA7OwotCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CiAJCWVzYWMKIAkgICAgZmkKIAkgIGZpCkBAIC01MTYxLDcgKzYyNTgsNyBAQAogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgogCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7CisJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OwogCQllc2FjCiAJICAgIGZpCiAJICBmaQpAQCAtNTE3NCw3ICs2MjcxLDggQEAKIAkgICAgdGVzdCAiJHBhc3MiID0gY29udiAmJiBjb250aW51ZQogCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgICA7OwogCSAgcHJvZykKIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgpAQCAtNTE4OCw3ICs2Mjg2LDggQEAKIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgICBmaQogCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICAgIDs7CiAJICAqKQogCSAgICBmdW5jX3dhcm5pbmcgIlxgLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiCkBAIC01MTk5LDE3ICs2Mjk4LDIxIEBACiAJLVIqKQogCSAgaWYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgogCSAgICBmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkZGVwbGliIgotCSAgICBkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKIAkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCiAJICAgICoiICRkaXIgIiopIDs7Ci0JICAgICopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OwogCSAgICBlc2FjCiAJICBmaQogCSAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKIAkgIGNvbnRpbnVlCiAJICA7OwotCSoubGEpIGxpYj0iJGRlcGxpYiIgOzsKKwkqLmxhKQorCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisJICBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorCSAgOzsKIAkqLiRsaWJleHQpCiAJICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCiAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCkBAIC01MjI3LDcgKzYzMzAsNyBAQAogCQltYXRjaF9wYXR0ZXJuKikKIAkJICBzZXQgZHVtbXkgJGRlcGxpYnNfY2hlY2tfbWV0aG9kOyBzaGlmdAogCQkgIG1hdGNoX3BhdHRlcm5fcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDEgXCguKlwpImAKLQkJICBpZiBldmFsICJcJEVDSE8gXCJYJGRlcGxpYlwiIiAyPi9kZXYvbnVsbCB8ICRYc2VkIC1lIDEwcSBcCisJCSAgaWYgZXZhbCAiXCRFQ0hPIFwiJGRlcGxpYlwiIiAyPi9kZXYvbnVsbCB8ICRTRUQgMTBxIFwKIAkJICAgIHwgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KIAkJICAgIHZhbGlkX2FfbGliPXllcwogCQkgIGZpCkBAIC01MjM3LDE1ICs2MzQwLDE1IEBACiAJCTs7CiAJICAgICAgZXNhYwogCSAgICAgIGlmIHRlc3QgIiR2YWxpZF9hX2xpYiIgIT0geWVzOyB0aGVuCi0JCSRFQ0hPCisJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBUcnlpbmcgdG8gbGluayB3aXRoIHN0YXRpYyBsaWIgYXJjaGl2ZSAkZGVwbGliLiIKLQkJJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkRUNITyAiKioqIGJlY2F1c2UgdGhlIGZpbGUgZXh0ZW5zaW9ucyAuJGxpYmV4dCBvZiB0aGlzIGFyZ3VtZW50IG1ha2VzIG1lIGJlbGlldmUiCi0JCSRFQ0hPICIqKiogdGhhdCBpdCBpcyBqdXN0IGEgc3RhdGljIGFyY2hpdmUgdGhhdCBJIHNob3VsZCBub3QgdXNlIGhlcmUuIgorCQllY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQllY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQllY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCWVjaG8gIioqKiBiZWNhdXNlIHRoZSBmaWxlIGV4dGVuc2lvbnMgLiRsaWJleHQgb2YgdGhpcyBhcmd1bWVudCBtYWtlcyBtZSBiZWxpZXZlIgorCQllY2hvICIqKiogdGhhdCBpdCBpcyBqdXN0IGEgc3RhdGljIGFyY2hpdmUgdGhhdCBJIHNob3VsZCBub3QgdXNlIGhlcmUuIgogCSAgICAgIGVsc2UKLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUiCiAJCSRFQ0hPICIqKiogc3RhdGljIGxpYnJhcnkgJGRlcGxpYiBpcyBub3QgcG9ydGFibGUhIgogCQlkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgpAQCAtNTI3MiwxMSArNjM3NSwxMSBAQAogCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW4gfHwgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgogCSAgICAgICMgSWYgdGhlcmUgaXMgbm8gZGxvcGVuIHN1cHBvcnQgb3Igd2UncmUgbGlua2luZyBzdGF0aWNhbGx5LAogCSAgICAgICMgd2UgbmVlZCB0byBwcmVsb2FkLgotCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkZXBsaWIiCiAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCiAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgICAgZWxzZQotCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRkZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRkZXBsaWIiCiAJICAgIGZpCiAJICBmaQogCSAgY29udGludWUKQEAgLTUzMTgsMjAgKzY0MjEsMjAgQEAKIAogCSMgQ29udmVydCAiLWZyYW1ld29yayBmb28iIHRvICJmb28ubHRmcmFtZXdvcmsiCiAJaWYgdGVzdCAtbiAiJGluaGVyaXRlZF9saW5rZXJfZmxhZ3MiOyB0aGVuCi0JICB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIlgkaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncy8tZnJhbWV3b3JrIFwoW14gJF0qXCkvXDEubHRmcmFtZXdvcmsvZydgCisJICB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIiRpbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRTRUQgJ3MvLWZyYW1ld29yayBcKFteICRdKlwpL1wxLmx0ZnJhbWV3b3JrL2cnYAogCSAgZm9yIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgaW4gJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzOyBkbwogCSAgICBjYXNlICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKLQkgICAgICAqKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CisJICAgICAgKikgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OwogCSAgICBlc2FjCiAJICBkb25lCiAJZmkKLQlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICJYICRkZXBlbmRlbmN5X2xpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiICRkZXBlbmRlbmN5X2xpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAogCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAogCSAgIHsgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB9OyB0aGVuCi0JICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBkbGZpbGVzPSIkZGxmaWxlcyAkZGxvcGVuIgotCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGRscHJlb3BlbiIKKwkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZGxvcGVuIgorCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRkbHByZW9wZW4iCiAJZmkKIAogCWlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KQEAgLTUzNDIsMzAgKzY0NDUsMzYgQEAKIAkgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKIAkgICAgZmkKIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgotCSAgICBjb252ZW5pZW5jZT0iJGNvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLQkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgZnVuY19hcHBlbmQgY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisJICAgIGZ1bmNfYXBwZW5kIG9sZF9jb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgdG1wX2xpYnM9CisJICAgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKwkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisJCWNhc2UgIiR0bXBfbGlicyAiIGluCisJCSoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKKwkJZXNhYworCSAgICAgIGZpCisJICAgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgorCSAgICBkb25lCiAJICBlbGlmIHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiCiAJICBmaQotCSAgdG1wX2xpYnM9Ci0JICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0JICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCi0JICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7Ci0JICAgICAgZXNhYwotCSAgICBmaQotCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCi0JICBkb25lCiAJICBjb250aW51ZQogCWZpICMgJHBhc3MgPSBjb252CiAKIAogCSMgR2V0IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IHdlIGxpbmsgYWdhaW5zdC4KIAlsaW5rbGliPQotCWZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KLQkgIGxpbmtsaWI9IiRsIgotCWRvbmUKKwlpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmCisJICAgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IHllcyB8fAorCSAgICAgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicywkaW5zdGFsbGVkIiA9ICJidWlsdCxubyI7IH07IHRoZW4KKwkgIGxpbmtsaWI9JG9sZF9saWJyYXJ5CisJZWxzZQorCSAgZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbworCSAgICBsaW5rbGliPSIkbCIKKwkgIGRvbmUKKwlmaQogCWlmIHRlc3QgLXogIiRsaW5rbGliIjsgdGhlbgogCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCiAJZmkKQEAgLTUzODIsOSArNjQ5MSw5IEBACiAJICAgICMgc3RhdGljYWxseSwgd2UgbmVlZCB0byBwcmVsb2FkLiAgV2UgYWxzbyBuZWVkIHRvIHByZWxvYWQgYW55CiAJICAgICMgZGVwZW5kZW50IGxpYnJhcmllcyBzbyBsaWJsdGRsJ3MgZGVwbGliIHByZWxvYWRlciBkb2Vzbid0CiAJICAgICMgYm9tYiBvdXQgaW4gdGhlIGxvYWQgZGVwbGlicyBwaGFzZS4KLQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgorCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgogCSAgZWxzZQotCSAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIgorCSAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIKIAkgIGZpCiAJICBjb250aW51ZQogCWZpICMgJHBhc3MgPSBkbG9wZW4KQEAgLTU0MDYsMTQgKzY1MTUsMTQgQEAKIAogCSMgRmluZCB0aGUgcmVsZXZhbnQgb2JqZWN0IGRpcmVjdG9yeSBhbmQgbGlicmFyeSBuYW1lLgogCWlmIHRlc3QgIlgkaW5zdGFsbGVkIiA9IFh5ZXM7IHRoZW4KLQkgIGlmIHRlc3QgISAtZiAiJGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KKwkgIGlmIHRlc3QgISAtZiAiJGx0X3N5c3Jvb3QkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgogCSAgICBmdW5jX3dhcm5pbmcgImxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIgogCSAgICBkaXI9IiRsYWRpciIKIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgogCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCiAJICBlbHNlCi0JICAgIGRpcj0iJGxpYmRpciIKLQkgICAgYWJzZGlyPSIkbGliZGlyIgorCSAgICBkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKKwkgICAgYWJzZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCiAJICBmaQogCSAgdGVzdCAiWCRoYXJkY29kZV9hdXRvbWF0aWMiID0gWHllcyAmJiBhdm9pZHRlbXBycGF0aD15ZXMKIAllbHNlCkBAIC01NDIxLDEyICs2NTMwLDEyIEBACiAJICAgIGRpcj0iJGxhZGlyIgogCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCiAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCisJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCiAJICBlbHNlCiAJICAgIGRpcj0iJGxhZGlyLyRvYmpkaXIiCiAJICAgIGFic2Rpcj0iJGFic19sYWRpci8kb2JqZGlyIgogCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCi0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgorCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgogCSAgZmkKIAlmaSAjICRpbnN0YWxsZWQgPSB5ZXMKIAlmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmxhJyAiJGxhbmFtZSIKQEAgLTU0MzcsMjAgKzY1NDYsNDYgQEAKIAkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgbGlicmFyaWVzIG1heSAtZGxwcmVvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogXGAkbGliJyIKIAkgIGZpCi0JICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKLQkgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgotCSAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgotCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRvbGRfbGlicmFyeSIKLQkgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCi0JICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgotCSAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0JCWRscHJlY29udmVuaWVuY2VsaWJzPSIkZGxwcmVjb252ZW5pZW5jZWxpYnMgJGRpci8kb2xkX2xpYnJhcnkiCi0JICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgotCSAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRkbG5hbWUiCi0JICBlbHNlCi0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGxpbmtsaWIiCi0JICBmaQorCSAgY2FzZSAiJGhvc3QiIGluCisJICAgICMgc3BlY2lhbCBoYW5kbGluZyBmb3IgcGxhdGZvcm1zIHdpdGggUEUtRExMcy4KKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisJICAgICAgIyBMaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyeSBpZiBib3RoCisJICAgICAgIyBzdGF0aWMgYW5kIHNoYXJlZCBhcmUgcHJlc2VudC4gIFRoZXJlZm9yZSwgZW5zdXJlIHdlIGV4dHJhY3QKKwkgICAgICAjIHN5bWJvbHMgZnJvbSB0aGUgaW1wb3J0IGxpYnJhcnkgaWYgYSBzaGFyZWQgbGlicmFyeSBpcyBwcmVzZW50CisJICAgICAgIyAob3RoZXJ3aXNlLCB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIHdpbGwgYmUgaW5jb3JyZWN0KS4gIFdlIGRvCisJICAgICAgIyB0aGlzIGJ5IHB1dHRpbmcgdGhlIGltcG9ydCBsaWJyYXJ5IG5hbWUgaW50byAkbmV3ZGxwcmVmaWxlcy4KKwkgICAgICAjIFdlIHJlY292ZXIgdGhlIGRsb3BlbiBtb2R1bGUgbmFtZSBieSAnc2F2aW5nJyB0aGUgbGEgZmlsZQorCSAgICAgICMgbmFtZSBpbiBhIHNwZWNpYWwgcHVycG9zZSB2YXJpYWJsZSwgYW5kIChsYXRlcikgZXh0cmFjdGluZyB0aGUKKwkgICAgICAjIGRsbmFtZSBmcm9tIHRoZSBsYSBmaWxlLgorCSAgICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCisJICAgICAgICBmdW5jX3RyX3NoICIkZGlyLyRsaW5rbGliIgorCSAgICAgICAgZXZhbCAibGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQ9XCRhYnNfbGFkaXIvXCRsYW5hbWUiCisJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kbGlua2xpYiIKKwkgICAgICBlbHNlCisJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgorCSAgICAgIGZpCisJICAgIDs7CisJICAgICogKQorCSAgICAgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scworCSAgICAgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgorCSAgICAgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCisJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KKwkgICAgICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCisJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kZGxuYW1lIgorCSAgICAgIGVsc2UKKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorCSAgICAgIGZpCisJICAgIDs7CisJICBlc2FjCiAJZmkgIyAkcGFzcyA9IGRscHJlb3BlbgogCiAJaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KQEAgLTU0NjgsNyArNjYwMyw3IEBACiAKIAogCWlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nICYmIHRlc3QgIiRwYXNzIiAhPSBsaW5rOyB0aGVuCi0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGxhZGlyIgorCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGxhZGlyIgogCSAgZGVwbGlicz0iJGxpYiAkZGVwbGlicyIKIAogCSAgbGlua2FsbGRlcGxpYnM9bm8KQEAgLTU0ODEsNyArNjYxNiw4IEBACiAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAJICAgIGNhc2UgJGRlcGxpYiBpbgogCSAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0JICAgICAgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgICAgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkJIDs7CiAJICAgIGVzYWMKIAkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPwpAQCAtNTQ5MiwxMiArNjYyOCwxMiBAQAogCSAgICAgICMgb3IvYW5kIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCiAJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAgIGZpCi0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCiAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCiAJICBkb25lICMgZm9yIGRlcGxpYgogCSAgY29udGludWUKIAlmaSAjICRsaW5rbW9kZSA9IHByb2cuLi4KQEAgLTU1MTIsNyArNjY0OCw3IEBACiAJICAgICAgIyBNYWtlIHN1cmUgdGhlIHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgogCSAgICAgIGNhc2UgIiR0ZW1wX3JwYXRoOiIgaW4KIAkgICAgICAqIiRhYnNkaXI6IiopIDs7Ci0JICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGgkYWJzZGlyOiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX3JwYXRoICIkYWJzZGlyOiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAKQEAgLTU1MjQsNyArNjY2MCw3IEBACiAJICAgICopCiAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgogCSAgICAgICoiICRhYnNkaXIgIiopIDs7Ci0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKIAkgICAgZXNhYwpAQCAtNTUzMyw3ICs2NjY5LDcgQEAKIAkgICAgKikKIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgogCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgorCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKIAkgICAgZXNhYwpAQCAtNTU1OCwxMiArNjY5NCwxMiBAQAogCSAgY2FzZSAkaG9zdCBpbgogCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKikKIAkgICAgICAjIE5vIHBvaW50IGluIHJlbGlua2luZyBETExzIGJlY2F1c2UgcGF0aHMgYXJlIG5vdCBlbmNvZGVkCi0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKIAkgICAgICBuZWVkX3JlbGluaz1ubwogCSAgICA7OwogCSAgKikKIAkgICAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgotCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCiAJICAgICAgbmVlZF9yZWxpbms9eWVzCiAJICAgIGZpCiAJICAgIDs7CkBAIC01NTgwLDcgKzY3MTYsNyBAQAogCSAgICBmaQogCSAgZG9uZQogCSAgaWYgdGVzdCAteiAiJGRsb3Blbm1vZHVsZSIgJiYgdGVzdCAiJHNob3VsZG5vdGxpbmsiID0geWVzICYmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KLQkgICAgJEVDSE8KKwkgICAgZWNobwogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgogCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgZXhlY3V0YWJsZSAkb3V0cHV0IGFnYWluc3QgdGhlIGxvYWRhYmxlIG1vZHVsZSIKIAkgICAgZWxzZQpAQCAtNTU5OCw3ICs2NzM0LDcgQEAKIAkgICAgKikKIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NjA3LDcgKzY3NDMsNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NjYxLDcgKzY3OTcsNyBAQAogCSAgICBsaW5rbGliPSRuZXdsaWIKIAkgIGZpICMgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIgogCi0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgogCSAgICBhZGRfc2hsaWJwYXRoPQogCSAgICBhZGRfZGlyPQogCSAgICBhZGQ9CkBAIC01NjgzLDkgKzY4MTksOSBAQAogCQkgICAgICBpZiB0ZXN0ICJYJGRsb3Blbm1vZHVsZSIgIT0gIlgkbGliIjsgdGhlbgogCQkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaWIgJGxpbmtsaWIgaXMgYSBtb2R1bGUsIG5vdCBhIHNoYXJlZCBsaWJyYXJ5IgogCQkJaWYgdGVzdCAteiAiJG9sZF9saWJyYXJ5IiA7IHRoZW4KLQkJCSAgJEVDSE8KLQkJCSAgJEVDSE8gIioqKiBBbmQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgc3RhdGljIGFyY2hpdmUgYXZhaWxhYmxlIgotCQkJICAkRUNITyAiKioqIFRoZSBsaW5rIHdpbGwgcHJvYmFibHkgZmFpbCwgc29ycnkiCisJCQkgIGVjaG8KKwkJCSAgZWNobyAiKioqIEFuZCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBzdGF0aWMgYXJjaGl2ZSBhdmFpbGFibGUiCisJCQkgIGVjaG8gIioqKiBUaGUgbGluayB3aWxsIHByb2JhYmx5IGZhaWwsIHNvcnJ5IgogCQkJZWxzZQogCQkJICBhZGQ9IiRkaXIvJG9sZF9saWJyYXJ5IgogCQkJZmkKQEAgLTU3MTIsMTIgKzY4NDgsMTIgQEAKIAkgICAgICAgICB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlIiA9IG5vOyB0aGVuCiAJCWFkZD0iJGRpci8kbGlua2xpYiIKIAkgICAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiA9IHllczsgdGhlbgotCQlhZGRfZGlyPSItTCRkaXIiCisJCWFkZF9kaXI9Ii1MJGFic2RpciIKIAkJIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgogCQlpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgogCQkgIGNhc2UgJGxpYmRpciBpbgogCQkgICAgW1xcL10qKQotCQkgICAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorCQkgICAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKIAkJICAgICAgOzsKIAkJICBlc2FjCiAJCWZpCkBAIC01NzM5LDcgKzY4NzUsNyBAQAogCSAgICBpZiB0ZXN0IC1uICIkYWRkX3NobGlicGF0aCI7IHRoZW4KIAkgICAgICBjYXNlIDokY29tcGlsZV9zaGxpYnBhdGg6IGluCiAJICAgICAgKiI6JGFkZF9zaGxpYnBhdGg6IiopIDs7Ci0JICAgICAgKikgY29tcGlsZV9zaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRhZGRfc2hsaWJwYXRoOiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3NobGlicGF0aCAiJGFkZF9zaGxpYnBhdGg6IiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KQEAgLTU3NTMsMTMgKzY4ODksMTMgQEAKIAkJIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgogCQljYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgogCQkqIjokbGliZGlyOiIqKSA7OwotCQkqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKwkJKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKIAkJZXNhYwogCSAgICAgIGZpCiAJICAgIGZpCiAJICBmaQogCi0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KIAkgICAgYWRkX3NobGlicGF0aD0KIAkgICAgYWRkX2Rpcj0KIAkgICAgYWRkPQpAQCAtNTc3Myw3ICs2OTA5LDcgQEAKIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KIAkgICAgICBjYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgogCSAgICAgICoiOiRsaWJkaXI6IiopIDs7Ci0JICAgICAgKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgYWRkPSItbCRuYW1lIgogCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzOyB0aGVuCkBAIC01NzkwLDcgKzY5MjYsNyBAQAogCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCiAJCWNhc2UgJGxpYmRpciBpbgogCQkgIFtcXC9dKikKLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisJCSAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKIAkJICAgIDs7CiAJCWVzYWMKIAkgICAgICBmaQpAQCAtNTgyNSwyMSArNjk2MSwyMSBAQAogCiAJICAgICMgSnVzdCBwcmludCBhIHdhcm5pbmcgYW5kIGFkZCB0aGUgbGlicmFyeSB0byBkZXBlbmRlbmN5X2xpYnMgc28KIAkgICAgIyB0aGF0IHRoZSBwcm9ncmFtIGNhbiBiZSBsaW5rZWQgYWdhaW5zdCB0aGUgc3RhdGljIGxpYnJhcnkuCi0JICAgICRFQ0hPCisJICAgIGVjaG8KIAkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBUaGlzIHN5c3RlbSBjYW4gbm90IGxpbmsgdG8gc3RhdGljIGxpYiBhcmNoaXZlICRsaWIuIgotCSAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkgICAgJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JICAgICRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUuIgorCSAgICBlY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCSAgICBlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCSAgICBlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUuIgogCSAgICBpZiB0ZXN0ICIkbW9kdWxlIiA9IHllczsgdGhlbgotCSAgICAgICRFQ0hPICIqKiogQnV0IGFzIHlvdSB0cnkgdG8gYnVpbGQgYSBtb2R1bGUgbGlicmFyeSwgbGlidG9vbCB3aWxsIHN0aWxsIGNyZWF0ZSAiCi0JICAgICAgJEVDSE8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIGFwcGxpY2F0aW9uIgotCSAgICAgICRFQ0hPICIqKiogaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZyB0byByZXNvbHZlIHN5bWJvbHMgYXQgcnVudGltZS4iCisJICAgICAgZWNobyAiKioqIEJ1dCBhcyB5b3UgdHJ5IHRvIGJ1aWxkIGEgbW9kdWxlIGxpYnJhcnksIGxpYnRvb2wgd2lsbCBzdGlsbCBjcmVhdGUgIgorCSAgICAgIGVjaG8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIGFwcGxpY2F0aW9uIgorCSAgICAgIGVjaG8gIioqKiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnIHRvIHJlc29sdmUgc3ltYm9scyBhdCBydW50aW1lLiIKIAkgICAgICBpZiB0ZXN0IC16ICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgotCQkkRUNITwotCQkkRUNITyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCi0JCSRFQ0hPICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgotCQkkRUNITyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgotCQkkRUNITyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCisJCWVjaG8KKwkJZWNobyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCisJCWVjaG8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCisJCWVjaG8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKKwkJZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KIAkJYnVpbGRfbGlidG9vbF9saWJzPW1vZHVsZQpAQCAtNTg2NywzNyArNzAwMyw0NiBAQAogCSAgICAgICAgICAgdGVtcF94cnBhdGg9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCQkgICBjYXNlICIgJHhycGF0aCAiIGluCiAJCSAgICoiICR0ZW1wX3hycGF0aCAiKikgOzsKLQkJICAgKikgeHJwYXRoPSIkeHJwYXRoICR0ZW1wX3hycGF0aCI7OworCQkgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkdGVtcF94cnBhdGgiOzsKIAkJICAgZXNhYzs7Ci0JICAgICAgKikgdGVtcF9kZXBsaWJzPSIkdGVtcF9kZXBsaWJzICRsaWJkaXIiOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX2RlcGxpYnMgIiAkbGliZGlyIjs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCiAJICAgIGRlcGVuZGVuY3lfbGlicz0iJHRlbXBfZGVwbGlicyIKIAkgIGZpCiAKLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkYWJzZGlyIgorCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGFic2RpciIKIAkgICMgTGluayBhZ2FpbnN0IHRoaXMgbGlicmFyeQogCSAgdGVzdCAiJGxpbmtfc3RhdGljIiA9IG5vICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGFic19sYWRpci8kbGFuYW1lICRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAjIC4uLiBhbmQgaXRzIGRlcGVuZGVuY3lfbGlicwogCSAgdG1wX2xpYnM9CiAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgotCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorCSAgICBjYXNlICRkZXBsaWIgaW4KKyAgICAgICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgorICAgICAgICAgICAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ijs7CisgICAgICAgICAgICAgICopIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIiA7OworICAgICAgICAgICAgZXNhYworCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgogCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OworCSAgICAgICoiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgIiopCisgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICBkb25lCiAKIAkgIGlmIHRlc3QgIiRsaW5rX2FsbF9kZXBsaWJzIiAhPSBubzsgdGhlbgogCSAgICAjIEFkZCB0aGUgc2VhcmNoIHBhdGhzIG9mIGFsbCBkZXBlbmRlbmN5IGxpYnJhcmllcwogCSAgICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisJICAgICAgcGF0aD0KIAkgICAgICBjYXNlICRkZXBsaWIgaW4KIAkgICAgICAtTCopIHBhdGg9IiRkZXBsaWIiIDs7CiAJICAgICAgKi5sYSkKKwkgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorCSAgICAgICAgZGVwbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKIAkgICAgICAgIGZ1bmNfZGlybmFtZSAiJGRlcGxpYiIgIiIgIi4iCi0JCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJCWRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAogCQkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAkJY2FzZSAkZGlyIGluCiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzZGlyPSIkZGlyIiA7OwpAQCAtNTkyNCw4ICs3MDY5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZGFyd2luX2luc3RhbGxfbmFtZSI7IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJHtPVE9PTDY0fSAtTCAkZGVwZGVwbCAgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCiAgICAgICAgICAgICAgICAgICAgICAgZmkKLQkJICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotCQkgICAgICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorCQkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCisJCSAgICAgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKIAkJICAgICAgcGF0aD0KIAkJICAgIGZpCiAJCSAgZmkKQEAgLTU5NTgsNyArNzEwMyw3IEBACiAJICBjb21waWxlX2RlcGxpYnM9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkY29tcGlsZV9kZXBsaWJzIgogCSAgZmluYWxpemVfZGVwbGlicz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRmaW5hbGl6ZV9kZXBsaWJzIgogCWVsc2UKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgImAkRUNITyAiWCAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICJgJEVDSE8gIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAlmaQogICAgICAgZmkKICAgICAgIGRlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyIKQEAgLTU5NzUsNyArNzEyMCw3IEBACiAJICBmb3IgZGlyIGluICRuZXdsaWJfc2VhcmNoX3BhdGg7IGRvCiAJICAgIGNhc2UgIiRsaWJfc2VhcmNoX3BhdGggIiBpbgogCSAgICAqIiAkZGlyICIqKSA7OwotCSAgICAqKSBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIgOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCSAgbmV3bGliX3NlYXJjaF9wYXRoPQpAQCAtNjAzMywxMCArNzE3OCwxMCBAQAogCSAgICAtTCopCiAJICAgICAgY2FzZSAiICR0bXBfbGlicyAiIGluCiAJICAgICAgKiIgJGRlcGxpYiAiKikgOzsKLQkgICAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwotCSAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCSAgZXZhbCAkdmFyPVwiJHRtcF9saWJzXCIKQEAgLTYwNTIsNyArNzE5Nyw3IEBACiAJICA7OwogCWVzYWMKIAlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCi0JICB0bXBfbGlicz0iJHRtcF9saWJzICRpIgorCSAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkaSIKIAlmaQogICAgICAgZG9uZQogICAgICAgZGVwZW5kZW5jeV9saWJzPSR0bXBfbGlicwpAQCAtNjA5Myw3ICs3MjM4LDcgQEAKICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgogICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCiAgICAgICBvbGRsaWJzPSIkb3V0cHV0IgotICAgICAgb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMiCisgICAgICBmdW5jX2FwcGVuZCBvYmpzICIkb2xkX2RlcGxpYnMiCiAgICAgICA7OwogCiAgICAgbGliKQpAQCAtNjEyNiwxMCArNzI3MSwxMCBAQAogCWlmIHRlc3QgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgIT0gcGFzc19hbGw7IHRoZW4KIAkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBidWlsZCBsaWJ0b29sIGxpYnJhcnkgXGAkb3V0cHV0JyBmcm9tIG5vbi1saWJ0b29sIG9iamVjdHMgb24gdGhpcyBob3N0OiRvYmpzIgogCWVsc2UKLQkgICRFQ0hPCisJICBlY2hvCiAJICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbm9uLWxpYnRvb2wiCiAJICAkRUNITyAiKioqIG9iamVjdHMgJG9ianMgaXMgbm90IHBvcnRhYmxlISIKLQkgIGxpYm9ianM9IiRsaWJvYmpzICRvYmpzIgorCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRvYmpzIgogCWZpCiAgICAgICBmaQogCkBAIC02MTg4LDEzICs3MzMzLDE0IEBACiAJICAjIHdoaWNoIGhhcyBhbiBleHRyYSAxIGFkZGVkIGp1c3QgZm9yIGZ1bgogCSAgIwogCSAgY2FzZSAkdmVyc2lvbl90eXBlIGluCisJICAjIGNvcnJlY3QgbGludXggdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKIAkgIGRhcndpbnxsaW51eHxvc2Z8d2luZG93c3xub25lKQogCSAgICBmdW5jX2FyaXRoICRudW1iZXJfbWFqb3IgKyAkbnVtYmVyX21pbm9yCiAJICAgIGN1cnJlbnQ9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJICAgIGFnZT0iJG51bWJlcl9taW5vciIKIAkgICAgcmV2aXNpb249IiRudW1iZXJfcmV2aXNpb24iCiAJICAgIDs7Ci0JICBmcmVlYnNkLWFvdXR8ZnJlZWJzZC1lbGZ8c3Vub3MpCisJICBmcmVlYnNkLWFvdXR8ZnJlZWJzZC1lbGZ8cW54fHN1bm9zKQogCSAgICBjdXJyZW50PSIkbnVtYmVyX21ham9yIgogCSAgICByZXZpc2lvbj0iJG51bWJlcl9taW5vciIKIAkgICAgYWdlPSIwIgpAQCAtNjIwNiw2ICs3MzUyLDkgQEAKIAkgICAgcmV2aXNpb249IiRudW1iZXJfbWlub3IiCiAJICAgIGx0X2lyaXhfaW5jcmVtZW50PW5vCiAJICAgIDs7CisJICAqKQorCSAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIiRtb2RlbmFtZTogdW5rbm93biBsaWJyYXJ5IHZlcnNpb24gdHlwZSBcYCR2ZXJzaW9uX3R5cGUnIgorCSAgICA7OwogCSAgZXNhYwogCSAgOzsKIAlubykKQEAgLTYzMDQsNyArNzQ1Myw3IEBACiAJICB2ZXJzdWZmaXg9IiRtYWpvci4kcmV2aXNpb24iCiAJICA7OwogCi0JbGludXgpCisJbGludXgpICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogCSAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKIAkgIG1ham9yPS4kZnVuY19hcml0aF9yZXN1bHQKIAkgIHZlcnN1ZmZpeD0iJG1ham9yLiRhZ2UuJHJldmlzaW9uIgpAQCAtNjMyNyw3ICs3NDc2LDcgQEAKIAkgIGRvbmUKIAogCSAgIyBNYWtlIGV4ZWN1dGFibGVzIGRlcGVuZCBvbiBvdXIgY3VycmVudCB2ZXJzaW9uLgotCSAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7Y3VycmVudH0uMCIKKwkgIGZ1bmNfYXBwZW5kIHZlcnN0cmluZyAiOiR7Y3VycmVudH0uMCIKIAkgIDs7CiAKIAlxbngpCkBAIC02Mzk1LDEwICs3NTQ0LDEwIEBACiAgICAgICBmaQogCiAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJGxpYm5hbWUiICIkbGlibmFtZSIgInllcyIKLSAgICAgIGxpYm9ianM9IiRsaWJvYmpzICRzeW1maWxlb2JqIgorICAgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRzeW1maWxlb2JqIgogICAgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAotICAgICAgaWYgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgorICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KIAkjIFJlbW92ZSBvdXIgb3V0cHV0cywgYnV0IGRvbid0IHJlbW92ZSBvYmplY3QgZmlsZXMgc2luY2UgdGhleQogCSMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIFBJQyBvYmplY3RzLgogCXJlbW92ZWxpc3Q9CkBAIC02NDE0LDcgKzc1NjMsNyBAQAogCQkgICBjb250aW51ZQogCQkgZmkKIAkgICAgICAgZmkKLQkgICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJHAiCisJICAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkcCIKIAkgICAgICAgOzsKIAkgICAgKikgOzsKIAkgIGVzYWMKQEAgLTY0MjUsMjcgKzc1NzQsMjggQEAKIAogICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCiAgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzICYmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IGNvbnZlbmllbmNlIDsgdGhlbgotCW9sZGxpYnM9IiRvbGRsaWJzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCisJZnVuY19hcHBlbmQgb2xkbGlicyAiICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCiAKIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCi0Jb2xkb2Jqcz0iJG9ianMgImAkRUNITyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICcvXC4nJHtsaWJleHR9JyQvZCcgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7ICRsbzJvIiB8ICROTDJTUGAKICAgICAgIGZpCiAKICAgICAgICMgRWxpbWluYXRlIGFsbCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMuCiAgICAgICAjZm9yIHBhdGggaW4gJG5vdGluc3RfcGF0aDsgZG8KLSAgICAgICMJbGliX3NlYXJjaF9wYXRoPWAkRUNITyAiWCRsaWJfc2VhcmNoX3BhdGggIiB8ICRYc2VkIC1lICJzJSAkcGF0aCAlICVnImAKLSAgICAgICMJZGVwbGlicz1gJEVDSE8gIlgkZGVwbGlicyAiIHwgJFhzZWQgLWUgInMlIC1MJHBhdGggJSAlZyJgCi0gICAgICAjCWRlcGVuZGVuY3lfbGlicz1gJEVDSE8gIlgkZGVwZW5kZW5jeV9saWJzICIgfCAkWHNlZCAtZSAicyUgLUwkcGF0aCAlICVnImAKKyAgICAgICMJbGliX3NlYXJjaF9wYXRoPWAkRUNITyAiJGxpYl9zZWFyY2hfcGF0aCAiIHwgJFNFRCAicyUgJHBhdGggJSAlZyJgCisgICAgICAjCWRlcGxpYnM9YCRFQ0hPICIkZGVwbGlicyAiIHwgJFNFRCAicyUgLUwkcGF0aCAlICVnImAKKyAgICAgICMJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiJGRlcGVuZGVuY3lfbGlicyAiIHwgJFNFRCAicyUgLUwkcGF0aCAlICVnImAKICAgICAgICNkb25lCiAKICAgICAgIGlmIHRlc3QgLW4gIiR4cnBhdGgiOyB0aGVuCiAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgogCXRlbXBfeHJwYXRoPQogCWZvciBsaWJkaXIgaW4gJHhycGF0aDsgZG8KLQkgIHRlbXBfeHJwYXRoPSIkdGVtcF94cnBhdGggLVIkbGliZGlyIgorCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCisJICBmdW5jX2FwcGVuZCB0ZW1wX3hycGF0aCAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWRvbmUKIAlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgpAQCAtNjQ1OSw3ICs3NjA5LDcgQEAKICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbGZpbGVzOyBkbwogCWNhc2UgIiAkZGxwcmVmaWxlcyAkZGxmaWxlcyAiIGluCiAJKiIgJGxpYiAiKikgOzsKLQkqKSBkbGZpbGVzPSIkZGxmaWxlcyAkbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkbGliIiA7OwogCWVzYWMKICAgICAgIGRvbmUKIApAQCAtNjQ2OSwxOSArNzYxOSwxOSBAQAogICAgICAgZm9yIGxpYiBpbiAkb2xkX2RscHJlZmlsZXM7IGRvCiAJY2FzZSAiJGRscHJlZmlsZXMgIiBpbgogCSoiICRsaWIgIiopIDs7Ci0JKikgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiIgOzsKKwkqKSBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAKICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCiAJaWYgdGVzdCAtbiAiJHJwYXRoIjsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgotCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKikKKwkgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyogfCAqLSotaGFpa3UqKQogCSAgICAjIHRoZXNlIHN5c3RlbXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIGMgbGlicmFyeSAoYXMgc3VjaCkhCiAJICAgIDs7CiAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJICAgICMgUmhhcHNvZHkgQyBsaWJyYXJ5IGlzIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKIAkgICAgOzsKIAkgICotKi1uZXRic2QqKQogCSAgICAjIERvbid0IGxpbmsgd2l0aCBsaWJjIHVudGlsIHRoZSBhLm91dCBsZC5zbyBpcyBmaXhlZC4KQEAgLTY0OTgsNyArNzY0OCw3IEBACiAJICAqKQogCSAgICAjIEFkZCBsaWJjIHRvIGRlcGxpYnMgb24gYWxsIG90aGVyIHN5c3RlbXMgaWYgbmVjZXNzYXJ5LgogCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9uZWVkX2xjIiA9ICJ5ZXMiOyB0aGVuCi0JICAgICAgZGVwbGlicz0iJGRlcGxpYnMgLWxjIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtbGMiCiAJICAgIGZpCiAJICAgIDs7CiAJICBlc2FjCkBAIC02NTQ3LDcgKzc2OTcsNyBAQAogCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCSAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSAgKiIgJGkgIiopCi0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICAgIGk9IiIKIAkJICAgIDs7CiAJCSAgZXNhYwpAQCAtNjU1OCwyMSArNzcwOCwyMSBAQAogCQkgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CiAJCSAgZGVwbGliX21hdGNoPSQxCiAJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCSAgZWxzZQogCQkgICAgZHJvcHBlZGRlcHM9eWVzCi0JCSAgICAkRUNITworCQkgICAgZWNobwogCQkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBkeW5hbWljIGxpbmtlciBkb2VzIG5vdCBhY2NlcHQgbmVlZGVkIGxpYnJhcnkgJGkuIgotCQkgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSAgICAkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJICAgICRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIEkgYmVsaWV2ZSB5b3UgZG8gbm90IGhhdmUiCi0JCSAgICAkRUNITyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgaXQgZm9yIgotCQkgICAgJEVDSE8gIioqKiBpdHMgZHluYW1pYyBkZXBlbmRlbmN5IGxpc3QgdGhhdCBwcm9ncmFtcyBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKKwkJICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSAgICBlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkgICAgZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCBJIGJlbGlldmUgeW91IGRvIG5vdCBoYXZlIgorCQkgICAgZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgaXQgZm9yIgorCQkgICAgZWNobyAiKioqIGl0cyBkeW5hbWljIGRlcGVuZGVuY3kgbGlzdCB0aGF0IHByb2dyYW1zIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgogCQkgIGZpCiAJCWZpCiAJCTs7CiAJICAgICAgKikKLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKQEAgLTY1OTAsNyArNzc0MCw3IEBACiAJCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQkgICAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSAgICAqIiAkaSAiKikKLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICAgICAgaT0iIgogCQkgICAgICA7OwogCQkgICAgZXNhYwpAQCAtNjYwMSwyOSArNzc1MSwyOSBAQAogCQkgICAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKIAkJICAgIGRlcGxpYl9tYXRjaD0kMQogCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgICAgZWxzZQogCQkgICAgICBkcm9wcGVkZGVwcz15ZXMKLQkJICAgICAgJEVDSE8KKwkJICAgICAgZWNobwogCQkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IGR5bmFtaWMgbGlua2VyIGRvZXMgbm90IGFjY2VwdCBuZWVkZWQgbGlicmFyeSAkaS4iCi0JCSAgICAgICRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkgICAgICAkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJICAgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJICAgICAgJEVDSE8gIioqKiBiZWNhdXNlIGEgdGVzdF9jb21waWxlIGRpZCByZXZlYWwgdGhhdCB0aGUgbGlua2VyIGRpZCBub3QgdXNlIHRoaXMgb25lIgotCQkgICAgICAkRUNITyAiKioqIGFzIGEgZHluYW1pYyBkZXBlbmRlbmN5IHRoYXQgcHJvZ3JhbXMgY2FuIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgorCQkgICAgICBlY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQkgICAgICBlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkgICAgICBlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCSAgICAgIGVjaG8gIioqKiBiZWNhdXNlIGEgdGVzdF9jb21waWxlIGRpZCByZXZlYWwgdGhhdCB0aGUgbGlua2VyIGRpZCBub3QgdXNlIHRoaXMgb25lIgorCQkgICAgICBlY2hvICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCiAJCSAgICBmaQogCQkgIGZpCiAJCWVsc2UKIAkJICBkcm9wcGVkZGVwcz15ZXMKLQkJICAkRUNITworCQkgIGVjaG8KIAkJICAkRUNITyAiKioqIFdhcm5pbmchICBMaWJyYXJ5ICRpIGlzIG5lZWRlZCBieSB0aGlzIGxpYnJhcnkgYnV0IEkgd2FzIG5vdCBhYmxlIHRvIgotCQkgICRFQ0hPICIqKiogbWFrZSBpdCBsaW5rIGluISAgWW91IHdpbGwgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGl0IG9yIHNvbWUiCi0JCSAgJEVDSE8gIioqKiBsaWJyYXJ5IHRoYXQgaXQgZGVwZW5kcyBvbiBiZWZvcmUgdGhpcyBsaWJyYXJ5IHdpbGwgYmUgZnVsbHkiCi0JCSAgJEVDSE8gIioqKiBmdW5jdGlvbmFsLiAgSW5zdGFsbGluZyBpdCBiZWZvcmUgY29udGludWluZyB3b3VsZCBiZSBldmVuIGJldHRlci4iCisJCSAgZWNobyAiKioqIG1ha2UgaXQgbGluayBpbiEgIFlvdSB3aWxsIHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBpdCBvciBzb21lIgorCQkgIGVjaG8gIioqKiBsaWJyYXJ5IHRoYXQgaXQgZGVwZW5kcyBvbiBiZWZvcmUgdGhpcyBsaWJyYXJ5IHdpbGwgYmUgZnVsbHkiCisJCSAgZWNobyAiKioqIGZ1bmN0aW9uYWwuICBJbnN0YWxsaW5nIGl0IGJlZm9yZSBjb250aW51aW5nIHdvdWxkIGJlIGV2ZW4gYmV0dGVyLiIKIAkJZmkKIAkJOzsKIAkgICAgICAqKQotCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQpAQCAtNjY0MCwxNSArNzc5MCwyNyBAQAogCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSoiICRhX2RlcGxpYiAiKikKLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJICBhX2RlcGxpYj0iIgogCQkgIDs7CiAJCWVzYWMKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCiAJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorCQlpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY19nbG9iIjsgdGhlbgorCQkgIGxpYm5hbWVnbG9iPWBmdW5jX2VjaG9fYWxsICIkbGlibmFtZSIgfCAkU0VEIC1lICRmaWxlX21hZ2ljX2dsb2JgCisJCWVsc2UKKwkJICBsaWJuYW1lZ2xvYj0kbGlibmFtZQorCQlmaQorCQl0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllcyAmJiBub2Nhc2VnbG9iPWBzaG9wdCAtcCBub2Nhc2VnbG9iYAogCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KLQkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKKwkJICBpZiB0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllczsgdGhlbgorCQkgICAgc2hvcHQgLXMgbm9jYXNlZ2xvYgorCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAorCQkgICAgJG5vY2FzZWdsb2IKKwkJICBlbHNlCisJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCisJCSAgZmkKIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCiAJCSAgICAgICMgRm9sbG93IHNvZnQgbGlua3MuCiAJCSAgICAgIGlmIGxzIC1sTGQgIiRwb3RlbnRfbGliIiAyPi9kZXYvbnVsbCB8CkBAIC02NjY1LDEzICs3ODI3LDEzIEBACiAJCQlwb3RsaWJsaW5rPWBscyAtbGQgJHBvdGxpYiB8ICR7U0VEfSAncy8uKiAtPiAvLydgCiAJCQljYXNlICRwb3RsaWJsaW5rIGluCiAJCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHBvdGxpYj0iJHBvdGxpYmxpbmsiOzsKLQkJCSopIHBvdGxpYj1gJEVDSE8gIlgkcG90bGliIiB8ICRYc2VkIC1lICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKKwkJCSopIHBvdGxpYj1gJEVDSE8gIiRwb3RsaWIiIHwgJFNFRCAncyxbXi9dKiQsLCdgIiRwb3RsaWJsaW5rIjs7CiAJCQllc2FjCiAJCSAgICAgIGRvbmUKIAkJICAgICAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIDI+L2Rldi9udWxsIHwKIAkJCSAkU0VEIC1lIDEwcSB8CiAJCQkgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLQkJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJCQlhX2RlcGxpYj0iIgogCQkJYnJlYWsgMgogCQkgICAgICBmaQpAQCAtNjY4MCwxMiArNzg0MiwxMiBAQAogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KIAkJZHJvcHBlZGRlcHM9eWVzCi0JCSRFQ0hPCisJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaW5rZXIgcGF0aCBkb2VzIG5vdCBoYXZlIHJlYWwgZmlsZSBmb3IgbGlicmFyeSAkYV9kZXBsaWIuIgotCQkkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JCSRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCi0JCSRFQ0hPICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgorCQllY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQllY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQllY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCWVjaG8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCiAJCWlmIHRlc3QgLXogIiRwb3RsaWIiIDsgdGhlbgogCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBidXQgbm8gY2FuZGlkYXRlcyB3ZXJlIGZvdW5kLiAoLi4uZm9yIGZpbGUgbWFnaWMgdGVzdCkiCiAJCWVsc2UKQEAgLTY2OTYsNyArNzg1OCw3IEBACiAJICAgICAgOzsKIAkgICAgKikKIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCSAgICAgIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCkBAIC02NzEyLDcgKzc4NzQsNyBAQAogCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSoiICRhX2RlcGxpYiAiKikKLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJICBhX2RlcGxpYj0iIgogCQkgIDs7CiAJCWVzYWMKQEAgLTY3MjMsOSArNzg4NSw5IEBACiAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCiAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwogCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKLQkJICAgIGlmIGV2YWwgIlwkRUNITyBcIlgkcG90ZW50X2xpYlwiIiAyPi9kZXYvbnVsbCB8ICRYc2VkIC1lIDEwcSB8IFwKKwkJICAgIGlmIGV2YWwgIlwkRUNITyBcIiRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgfCBcCiAJCSAgICAgICAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJCSAgICAgIGFfZGVwbGliPSIiCiAJCSAgICAgIGJyZWFrIDIKIAkJICAgIGZpCkBAIC02NzM0LDEyICs3ODk2LDEyIEBACiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgogCQlkcm9wcGVkZGVwcz15ZXMKLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCi0JCSRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJJEVDSE8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCisJCWVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCWVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCWVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKIAkJaWYgdGVzdCAteiAiJHBvdGxpYiIgOyB0aGVuCiAJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgcmVnZXggcGF0dGVybiB0ZXN0KSIKIAkJZWxzZQpAQCAtNjc1MCwzMiArNzkxMiwzMiBAQAogCSAgICAgIDs7CiAJICAgICopCiAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkgICAgICA7OwogCSAgICBlc2FjCiAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgogCSAgOzsKIAlub25lIHwgdW5rbm93biB8ICopCiAJICBuZXdkZXBsaWJzPSIiCi0JICB0bXBfZGVwbGlicz1gJEVDSE8gIlggJGRlcGxpYnMiIHwgJFhzZWQgXAotCSAgICAgIC1lICdzLyAtbGMkLy8nIC1lICdzLyAtW0xSXVteIF0qLy9nJ2AKKwkgIHRtcF9kZXBsaWJzPWAkRUNITyAiICRkZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyQvLzsgcy8gLVtMUl1bXiBdKi8vZydgCiAJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJICAgIGZvciBpIGluICRwcmVkZXBzICRwb3N0ZGVwcyA7IGRvCiAJICAgICAgIyBjYW4ndCB1c2UgWHNlZCBiZWxvdywgYmVjYXVzZSAkaSBtaWdodCBjb250YWluICcvJwotCSAgICAgIHRtcF9kZXBsaWJzPWAkRUNITyAiWCAkdG1wX2RlcGxpYnMiIHwgJFhzZWQgLWUgInMsJGksLCJgCisJICAgICAgdG1wX2RlcGxpYnM9YCRFQ0hPICIgJHRtcF9kZXBsaWJzIiB8ICRTRUQgInMsJGksLCJgCiAJICAgIGRvbmUKIAkgIGZpCi0JICBpZiAkRUNITyAiWCAkdG1wX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvWwkgXS8vZycgfAotCSAgICAgJEdSRVAgLiA+L2Rldi9udWxsOyB0aGVuCi0JICAgICRFQ0hPCisJICBjYXNlICR0bXBfZGVwbGlicyBpbgorCSAgKlshXAlcIF0qKQorCSAgICBlY2hvCiAJICAgIGlmIHRlc3QgIlgkZGVwbGlic19jaGVja19tZXRob2QiID0gIlhub25lIjsgdGhlbgotCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBwbGF0Zm9ybS4iCisJICAgICAgZWNobyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcGxhdGZvcm0uIgogCSAgICBlbHNlCi0JICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IGtub3duIHRvIGJlIHN1cHBvcnRlZC4iCisJICAgICAgZWNobyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdG8gYmUgc3VwcG9ydGVkLiIKIAkgICAgZmkKLQkgICAgJEVDSE8gIioqKiBBbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIGJlaW5nIGRyb3BwZWQuIgorCSAgICBlY2hvICIqKiogQWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBiZWluZyBkcm9wcGVkLiIKIAkgICAgZHJvcHBlZGRlcHM9eWVzCi0JICBmaQorCSAgICA7OworCSAgZXNhYwogCSAgOzsKIAllc2FjCiAJdmVyc3VmZml4PSR2ZXJzdWZmaXhfc2F2ZQpAQCAtNjc4NywyMyArNzk0OSwyMyBAQAogCWNhc2UgJGhvc3QgaW4KIAkqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJICAjIE9uIFJoYXBzb2R5IHJlcGxhY2UgdGhlIEMgbGlicmFyeSB3aXRoIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICBuZXdkZXBsaWJzPWAkRUNITyAiWCAkbmV3ZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAorCSAgbmV3ZGVwbGlicz1gJEVDSE8gIiAkbmV3ZGVwbGlicyIgfCAkU0VEICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCiAJICA7OwogCWVzYWMKIAogCWlmIHRlc3QgIiRkcm9wcGVkZGVwcyIgPSB5ZXM7IHRoZW4KIAkgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCi0JICAgICRFQ0hPCi0JICAgICRFQ0hPICIqKiogV2FybmluZzogbGlidG9vbCBjb3VsZCBub3Qgc2F0aXNmeSBhbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSIKKwkgICAgZWNobworCSAgICBlY2hvICIqKiogV2FybmluZzogbGlidG9vbCBjb3VsZCBub3Qgc2F0aXNmeSBhbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSIKIAkgICAgJEVDSE8gIioqKiBkZXBlbmRlbmNpZXMgb2YgbW9kdWxlICRsaWJuYW1lLiAgVGhlcmVmb3JlLCBsaWJ0b29sIHdpbGwgY3JlYXRlIgotCSAgICAkRUNITyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmciCi0JICAgICRFQ0hPICIqKiogYXBwbGljYXRpb24gaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZy4iCisJICAgIGVjaG8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIgorCSAgICBlY2hvICIqKiogYXBwbGljYXRpb24gaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZy4iCiAJICAgIGlmIHRlc3QgLXogIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCi0JICAgICAgJEVDSE8KLQkgICAgICAkRUNITyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCi0JICAgICAgJEVDSE8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCi0JICAgICAgJEVDSE8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKLQkgICAgICAkRUNITyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCisJICAgICAgZWNobworCSAgICAgIGVjaG8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgorCSAgICAgIGVjaG8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCisJICAgICAgZWNobyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgorCSAgICAgIGVjaG8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgogCSAgICBmaQogCSAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KIAkgICAgICBvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgpAQCAtNjgxMywxNiArNzk3NSwxNiBAQAogCSAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwogCSAgICBmaQogCSAgZWxzZQotCSAgICAkRUNITyAiKioqIFRoZSBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGhhdmUgYmVlbiBkcm9wcGVkIGhlcmUgd2lsbCBiZSIKLQkgICAgJEVDSE8gIioqKiBhdXRvbWF0aWNhbGx5IGFkZGVkIHdoZW5ldmVyIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCB0aGlzIGxpYnJhcnkiCi0JICAgICRFQ0hPICIqKiogb3IgaXMgZGVjbGFyZWQgdG8gLWRsb3BlbiBpdC4iCisJICAgIGVjaG8gIioqKiBUaGUgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgdGhhdCBoYXZlIGJlZW4gZHJvcHBlZCBoZXJlIHdpbGwgYmUiCisJICAgIGVjaG8gIioqKiBhdXRvbWF0aWNhbGx5IGFkZGVkIHdoZW5ldmVyIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCB0aGlzIGxpYnJhcnkiCisJICAgIGVjaG8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKIAogCSAgICBpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkIiA9IG5vOyB0aGVuCi0JICAgICAgJEVDSE8KLQkgICAgICAkRUNITyAiKioqIFNpbmNlIHRoaXMgbGlicmFyeSBtdXN0IG5vdCBjb250YWluIHVuZGVmaW5lZCBzeW1ib2xzLCIKLQkgICAgICAkRUNITyAiKioqIGJlY2F1c2UgZWl0aGVyIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IHRoZW0gb3IiCi0JICAgICAgJEVDSE8gIioqKiBpdCB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCAtbm8tdW5kZWZpbmVkLCIKLQkgICAgICAkRUNITyAiKioqIGxpYnRvb2wgd2lsbCBvbmx5IGNyZWF0ZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGl0LiIKKwkgICAgICBlY2hvCisJICAgICAgZWNobyAiKioqIFNpbmNlIHRoaXMgbGlicmFyeSBtdXN0IG5vdCBjb250YWluIHVuZGVmaW5lZCBzeW1ib2xzLCIKKwkgICAgICBlY2hvICIqKiogYmVjYXVzZSBlaXRoZXIgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlbSBvciIKKwkgICAgICBlY2hvICIqKiogaXQgd2FzIGV4cGxpY2l0bHkgcmVxdWVzdGVkIHdpdGggLW5vLXVuZGVmaW5lZCwiCisJICAgICAgZWNobyAiKioqIGxpYnRvb2wgd2lsbCBvbmx5IGNyZWF0ZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGl0LiIKIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KIAkJb2xkbGlicz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKIAkJYnVpbGRfbGlidG9vbF9saWJzPW1vZHVsZQpAQCAtNjgzOSw5ICs4MDAxLDkgQEAKICAgICAgICMgVGltZSB0byBjaGFuZ2UgYWxsIG91ciAiZm9vLmx0ZnJhbWV3b3JrIiBzdHVmZiBiYWNrIHRvICItZnJhbWV3b3JrIGZvbyIKICAgICAgIGNhc2UgJGhvc3QgaW4KIAkqLSotZGFyd2luKikKLQkgIG5ld2RlcGxpYnM9YCRFQ0hPICJYICRuZXdkZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAotCSAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICJYICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKLQkgIGRlcGxpYnM9YCRFQ0hPICJYICRkZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgbmV3ZGVwbGlicz1gJEVDSE8gIiAkbmV3ZGVwbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBkZXBsaWJzPWAkRUNITyAiICRkZXBsaWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCiAJICA7OwogICAgICAgZXNhYwogCkBAIC02ODU0LDcgKzgwMTYsNyBAQAogCSopCiAJICBjYXNlICIgJGRlcGxpYnMgIiBpbgogCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQotCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7CiAJICBlc2FjCiAJICA7OwogCWVzYWMKQEAgLTY4NjQsMTAgKzgwMjYsMTAgQEAKIAktTCopCiAJICBjYXNlICIgJG5ld19saWJzICIgaW4KIAkgICoiICRkZXBsaWIgIiopIDs7Ci0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJICBlc2FjCiAJICA7OwotCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQogICAgICAgZGVwbGlicz0iJG5ld19saWJzIgpAQCAtNjg3OSwxNSArODA0MSwyMiBAQAogCiAgICAgICAjIFRlc3QgYWdhaW4sIHdlIG1heSBoYXZlIGRlY2lkZWQgbm90IHRvIGJ1aWxkIGl0IGFueSBtb3JlCiAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgorCSMgUmVtb3ZlICR7d2x9IGluc3RhbmNlcyB3aGVuIGxpbmtpbmcgd2l0aCBsZC4KKwkjIEZJWE1FOiBzaG91bGQgdGVzdCB0aGUgcmlnaHQgX2NtZHMgdmFyaWFibGUuCisJY2FzZSAkYXJjaGl2ZV9jbWRzIGluCisJICAqXCRMRFwgKikgd2w9IDs7CisgICAgICAgIGVzYWMKIAlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiA9IHllczsgdGhlbgogCSAgIyBIYXJkY29kZSB0aGUgbGlicmFyeSBwYXRocwogCSAgaGFyZGNvZGVfbGliZGlycz0KIAkgIGRlcF9ycGF0aD0KIAkgIHJwYXRoPSIkZmluYWxpemVfcnBhdGgiCi0JICB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKwkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbwogCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCisJCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CiAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgogCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCiAJCWVsc2UKQEAgLTY4OTYsMTggKzgwNjUsMTggQEAKIAkJICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCiAJCSAgICA7OwogCQkgICopCi0JCSAgICBoYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKwkJICAgIGZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKIAkJICAgIDs7CiAJCSAgZXNhYwogCQlmaQogCSAgICAgIGVsc2UKIAkJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCQlkZXBfcnBhdGg9IiRkZXBfcnBhdGggJGZsYWciCisJCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgogCSAgICAgIGZpCiAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgogCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotCSAgICAgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQogCSAgZG9uZQpAQCAtNjkxNSwxNyArODA4NCwxMyBAQAogCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCiAJICAgICB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KIAkgICAgbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKLQkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQiOyB0aGVuCi0JICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZFwiCi0JICAgIGVsc2UKLQkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLQkgICAgZmkKKwkgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKIAkgIGZpCiAJICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiICYmIHRlc3QgLW4gIiRwZXJtX3JwYXRoIjsgdGhlbgogCSAgICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgogCSAgICBycGF0aD0KIAkgICAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KLQkgICAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICAgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgogCSAgICBkb25lCiAJICAgIGV2YWwgIiRydW5wYXRoX3Zhcj0nJHJwYXRoXCQkcnVucGF0aF92YXInOyBleHBvcnQgJHJ1bnBhdGhfdmFyIgogCSAgZmkKQEAgLTY5MzMsNyArODA5OCw3IEBACiAJZmkKIAogCXNobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCIKLQl0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKKwl0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCiAJaWYgdGVzdCAtbiAiJHNobGlicGF0aCI7IHRoZW4KIAkgIGV2YWwgIiRzaGxpYnBhdGhfdmFyPSckc2hsaWJwYXRoXCQkc2hsaWJwYXRoX3Zhcic7IGV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKIAlmaQpAQCAtNjk1OSwxOCArODEyNCwxOCBAQAogCWxpbmtuYW1lcz0KIAlmb3IgbGluawogCWRvCi0JICBsaW5rbmFtZXM9IiRsaW5rbmFtZXMgJGxpbmsiCisJICBmdW5jX2FwcGVuZCBsaW5rbmFtZXMgIiAkbGluayIKIAlkb25lCiAKIAkjIFVzZSBzdGFuZGFyZCBvYmplY3RzIGlmIHRoZXkgYXJlIHBpYwotCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKIAl0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCiAJZGVsZmlsZXM9CiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgJG9wdF9kcnlfcnVuIHx8IGNwICIkZXhwb3J0X3N5bWJvbHMiICIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgogCSAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCi0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyIKKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzIgogCWZpCiAKIAlvcmlnX2V4cG9ydF9zeW1ib2xzPQpAQCAtNzAwMSwxNCArODE2Niw0NiBAQAogCSAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRleHBvcnRfc3ltYm9scwogCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCiAJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgICBmb3IgY21kIGluICRjbWRzOyBkbworCSAgICBmb3IgY21kMSBpbiAkY21kczsgZG8KIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgICBldmFsIGNtZD1cIiRjbWRcIgotCSAgICAgIGZ1bmNfbGVuICIgJGNtZCIKLQkgICAgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAotCSAgICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorCSAgICAgICMgVGFrZSB0aGUgbm9ybWFsIGJyYW5jaCBpZiB0aGUgbm1fZmlsZV9saXN0X3NwZWMgYnJhbmNoCisJICAgICAgIyBkb2Vzbid0IHdvcmsgb3IgaWYgdG9vbCBjb252ZXJzaW9uIGlzIG5vdCBuZWVkZWQuCisJICAgICAgY2FzZSAkbm1fZmlsZV9saXN0X3NwZWN+JHRvX3Rvb2xfZmlsZV9jbWQgaW4KKwkJKn5mdW5jX2NvbnZlcnRfZmlsZV9ub29wIHwgKn5mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiB8IH4qKQorCQkgIHRyeV9ub3JtYWxfYnJhbmNoPXllcworCQkgIGV2YWwgY21kPVwiJGNtZDFcIgorCQkgIGZ1bmNfbGVuICIgJGNtZCIKKwkJICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAorCQkgIDs7CisJCSopCisJCSAgdHJ5X25vcm1hbF9icmFuY2g9bm8KKwkJICA7OworCSAgICAgIGVzYWMKKwkgICAgICBpZiB0ZXN0ICIkdHJ5X25vcm1hbF9icmFuY2giID0geWVzIFwKKwkJICYmIHsgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIFwKKwkJICAgICAgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IH0KKwkgICAgICB0aGVuCiAJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKIAkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKKwkgICAgICBlbGlmIHRlc3QgLW4gIiRubV9maWxlX2xpc3Rfc3BlYyI7IHRoZW4KKwkJZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKKwkJb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorCQlzYXZlX2xpYm9ianM9JGxpYm9ianMKKwkJc2F2ZV9vdXRwdXQ9JG91dHB1dAorCQlvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubm0KKwkJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJCWxpYm9ianM9JG5tX2ZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorCQlmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisJCWZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJE5NIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKKwkJZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzOyBkbworCQkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCQkgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorCQlkb25lID4gIiRvdXRwdXQiCisJCWV2YWwgY21kPVwiJGNtZDFcIgorCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCisJCW91dHB1dD0kc2F2ZV9vdXRwdXQKKwkJbGlib2Jqcz0kc2F2ZV9saWJvYmpzCisJCXNraXBwZWRfZXhwb3J0PWZhbHNlCiAJICAgICAgZWxzZQogCQkjIFRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gZXhlY3V0ZSBpbiBvbmUgc3RlcC4KIAkJZnVuY192ZXJib3NlICJ1c2luZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlIGZvciBleHBvcnQgbGlzdC4uLiIKQEAgLTcwMjksNyArODIyNiw3IEBACiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCiAJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKLQkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCiAJZmkKIAogCWlmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCkBAIC03MDQxLDcgKzgyMzgsNyBAQAogCSAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKIAkgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCiAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKIAkgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgogCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKIAlmaQpAQCAtNzA1MSw3ICs4MjQ4LDcgQEAKIAkgIGNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgogCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OwogCSAgKikKLQkgICAgdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9kZXBsaWJzICIgJHRlc3RfZGVwbGliIgogCSAgICA7OwogCSAgZXNhYwogCWRvbmUKQEAgLTcwNzEsMjEgKzgyNjgsMjEgQEAKIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAkgIGVsc2UKIAkgICAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICAgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCi0JICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJICBmaQogCWZpCiAKIAlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCiAJICBldmFsIGZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZmxhZyIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmbGFnIgogCWZpCiAKIAkjIE1ha2UgYSBiYWNrdXAgb2YgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgd2hlbiByZWxpbmtpbmcKLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/CiAJZmkKIApAQCAtNzEzMCw3ICs4MzI3LDggQEAKIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCiAJICBmaQogCSAgc2F2ZV9vdXRwdXQ9JG91dHB1dAotCSAgb3V0cHV0X2xhPWAkRUNITyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisJICBmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgorCSAgb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCiAJICAjIENsZWFyIHRoZSByZWxvYWRhYmxlIG9iamVjdCBjcmVhdGlvbiBjb21tYW5kIHF1ZXVlIGFuZAogCSAgIyBpbml0aWFsaXplIGsgdG8gb25lLgpAQCAtNzE0MywxMyArODM0MSwxNiBAQAogCSAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCiAJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmtzY3JpcHQKIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBHTlUgbGQgc2NyaXB0OiAkb3V0cHV0IgotCSAgICAkRUNITyAnSU5QVVQgKCcgPiAkb3V0cHV0CisJICAgIGVjaG8gJ0lOUFVUICgnID4gJG91dHB1dAogCSAgICBmb3Igb2JqIGluICRzYXZlX2xpYm9ianMKIAkgICAgZG8KLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CiAJICAgIGRvbmUKLQkgICAgJEVDSE8gJyknID4+ICRvdXRwdXQKLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorCSAgICBlY2hvICcpJyA+PiAkb3V0cHV0CisJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJICAgIG91dHB1dD0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAJICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiWCRmaWxlX2xpc3Rfc3BlYyIgIT0gWDsgdGhlbgogCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rCiAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgbGlua2VyIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKQEAgLTcxNjMsMTAgKzgzNjQsMTIgQEAKIAkgICAgZmkKIAkgICAgZm9yIG9iagogCSAgICBkbwotCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0CisJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKIAkgICAgZG9uZQotCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCi0JICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRvdXRwdXRcIgorCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIKIAkgIGVsc2UKIAkgICAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyI7IHRoZW4KIAkgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLi4uIgpAQCAtNzE5MCwxNyArODM5MywxOSBAQAogCQkgICMgY29tbWFuZCB0byB0aGUgcXVldWUuCiAJCSAgaWYgdGVzdCAiJGsiIC1lcSAxIDsgdGhlbgogCQkgICAgIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KLQkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ialwiCisJCSAgICByZWxvYWRfb2Jqcz0kb2JqbGlzdAorCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiCiAJCSAgZWxzZQogCQkgICAgIyBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdCBmaWxlcyB3aWxsIGxpbmsgaW4KIAkJICAgICMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCi0JCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ian5cJFJNICRsYXN0X3JvYmpcIgorCQkgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCisJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKIAkJICBmaQogCQkgIGxhc3Rfcm9iaj0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAogCQkgIGZ1bmNfYXJpdGggJGsgKyAxCiAJCSAgaz0kZnVuY19hcml0aF9yZXN1bHQKIAkJICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKLQkJICBvYmpsaXN0PSRvYmoKKwkJICBvYmpsaXN0PSIgJG9iaiIKIAkJICBmdW5jX2xlbiAiICRsYXN0X3JvYmoiCiAJCSAgZnVuY19hcml0aCAkbGVuMCArICRmdW5jX2xlbl9yZXN1bHQKIAkJICBsZW49JGZ1bmNfYXJpdGhfcmVzdWx0CkBAIC03MjEwLDExICs4NDE1LDEyIEBACiAJICAgICAgIyByZWxvYWRhYmxlIG9iamVjdCBmaWxlLiAgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QKIAkgICAgICAjIGZpbGVzIHdpbGwgbGluayBpbiB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLQkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgorCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIgogCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCiAJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCiAJICAgICAgZmkKLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgogCiAJICAgIGVsc2UKIAkgICAgICBvdXRwdXQ9CkBAIC03MjQ4LDcgKzg0NTQsNyBAQAogCQlsdF9leGl0PSQ/CiAKIAkJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJCSAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKIAkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCiAJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQpAQCAtNzI2OSw3ICs4NDc1LDcgQEAKIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgICAgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgogCSAgICAgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgotCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwogCSAgICBmaQogCiAJICAgIGlmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgpAQCAtNzI4MSw3ICs4NDg3LDcgQEAKIAkgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQogCSAgICAgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCiAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCi0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKIAkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwogCSAgICBmaQpAQCAtNzMyMiwxMCArODUyOCwxMCBAQAogCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwogCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLQkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAlmaQogCkBAIC03MzQxLDcgKzg1NDcsNyBAQAogCSAgICBsdF9leGl0PSQ/CiAKIAkgICAgIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCSAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAgICAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKIAkgICAgICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCiAJCSRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCkBAIC03MzUzLDcgKzg1NTksNyBAQAogCUlGUz0iJHNhdmVfaWZzIgogCiAJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScgfHwgZXhpdCAkPwogCiAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCkBAIC03NDM0LDE4ICs4NjQwLDIxIEBACiAgICAgICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCiAJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgogCSAgZXZhbCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0JICByZWxvYWRfY29udl9vYmpzPSRyZWxvYWRfb2Jqc1wgYCRFQ0hPICJYJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRYc2VkIC1lICdzfCx8IHxnJ2AKKwkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJEVDSE8gIiR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkU0VEICdzfCx8IHxnJ2AKIAllbHNlCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b2JqfXgiCi0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQogCSAgcmVsb2FkX2NvbnZfb2Jqcz0iJHJlbG9hZF9vYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCWZpCiAgICAgICBmaQogCisgICAgICAjIElmIHdlJ3JlIG5vdCBidWlsZGluZyBzaGFyZWQsIHdlIG5lZWQgdG8gdXNlIG5vbl9waWNfb2JqcworICAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIGxpYm9ianM9IiRub25fcGljX29iamVjdHMiCisKICAgICAgICMgQ3JlYXRlIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAnL1wuJyR7bGliZXh0fSQnL2QnIC1lICcvXC5saWIkL2QnIC1lICIkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKIAogICAgICAgb3V0cHV0PSIkb2JqIgogICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRyZWxvYWRfY21kcyIgJ2V4aXQgJD8nCkBAIC03NTA1LDggKzg3MTQsOCBAQAogICAgICAgY2FzZSAkaG9zdCBpbgogICAgICAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IGlzIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCi0JZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIlggJGZpbmFsaXplX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKKwljb21waWxlX2RlcGxpYnM9YCRFQ0hPICIgJGNvbXBpbGVfZGVwbGlicyIgfCAkU0VEICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIiAkZmluYWxpemVfZGVwbGlicyIgfCAkU0VEICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCiAJOzsKICAgICAgIGVzYWMKIApAQCAtNzUxNywxNCArODcyNiwxNCBAQAogCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KIAkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KIAkgICAgMTAuWzAxMjNdKQotCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCi0JICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgorCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKKwkgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgogCSAgICA7OwogCSAgZXNhYwogCWZpCiAJIyBUaW1lIHRvIGNoYW5nZSBhbGwgb3VyICJmb28ubHRmcmFtZXdvcmsiIHN0dWZmIGJhY2sgdG8gIi1mcmFtZXdvcmsgZm9vIgotCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIlggJGNvbXBpbGVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKLQlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwljb21waWxlX2RlcGxpYnM9YCRFQ0hPICIgJGNvbXBpbGVfZGVwbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCWZpbmFsaXplX2RlcGxpYnM9YCRFQ0hPICIgJGZpbmFsaXplX2RlcGxpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAk7OwogICAgICAgZXNhYwogCkBAIC03NTM4LDcgKzg3NDcsNyBAQAogCSopCiAJICBjYXNlICIgJGNvbXBpbGVfZGVwbGlicyAiIGluCiAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNzU0OCwxNyArODc1NywxNyBAQAogCS1MKikKIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgogCSAgKiIgJGRlcGxpYiAiKikgOzsKLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAkgIGVzYWMKIAkgIDs7Ci0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAgICAgICBjb21waWxlX2RlcGxpYnM9IiRuZXdfbGlicyIKIAogCi0gICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGNvbXBpbGVfZGVwbGlicyIKLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRmaW5hbGl6ZV9kZXBsaWJzIgorICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGNvbXBpbGVfZGVwbGlicyIKKyAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkZmluYWxpemVfZGVwbGlicyIKIAogICAgICAgaWYgdGVzdCAtbiAiJHJwYXRoJHhycGF0aCI7IHRoZW4KIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCkBAIC03NTY2LDcgKzg3NzUsNyBAQAogCSAgIyBUaGlzIGlzIHRoZSBtYWdpYyB0byB1c2UgLXJwYXRoLgogCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZG9uZQogICAgICAgZmkKQEAgLTc1ODUsMTggKzg3OTQsMTggQEAKIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCiAJCTs7CiAJICAgICAgKikKLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBlbHNlCiAJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKIAkgIGZpCiAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWZpCiAJY2FzZSAkaG9zdCBpbgpAQCAtNzYwNSwxMiArODgxNCwxMiBAQAogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokbGliZGlyOiIqKSA7OwogCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7Ci0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokbGliZGlyIjs7CisJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGxpYmRpciI7OwogCSAgZXNhYwogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CisJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNzYzNiwxOCArODg0NSwxOCBAQAogCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKIAkJOzsKIAkgICAgICAqKQotCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIAkgIGVsc2UKIAkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgorCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgogCSAgZmkKIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9wZXJtX3JwYXRoPSIkZmluYWxpemVfcGVybV9ycGF0aCAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZmkKICAgICAgIGRvbmUKQEAgLTc2NjEsOCArODg3MCw4IEBACiAKICAgICAgIGlmIHRlc3QgLW4gIiRsaWJvYmpzIiAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCiAJIyBUcmFuc2Zvcm0gYWxsIHRoZSBsaWJyYXJ5IG9iamVjdHMgaW50byBzdGFuZGFyZCBvYmplY3RzLgotCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCi0JZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAorCWZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCiAgICAgICBmaQogCiAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJG91dHB1dG5hbWUiICJAUFJPR1JBTUAiICJubyIKQEAgLTc2NzQsMTUgKzg4ODMsMTUgQEAKIAogICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9eWVzCiAgICAgICBjYXNlICRob3N0IGluCisgICAgICAqY2VnY2MqIHwgKm1pbmd3MzJjZSopCisgICAgICAgICMgRGlzYWJsZSB3cmFwcGVycyBmb3IgY2VnY2MgYW5kIG1pbmd3MzJjZSBob3N0cywgd2UgYXJlIGNyb3NzIGNvbXBpbGluZyBhbnl3YXkuCisgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCisgICAgICAgIDs7CiAgICAgICAqY3lnd2luKiB8ICptaW5ndyogKQogICAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KICAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubwogICAgICAgICBmaQogICAgICAgICA7OwotICAgICAgKmNlZ2NjKQotICAgICAgICAjIERpc2FibGUgd3JhcHBlcnMgZm9yIGNlZ2NjLCB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIGFueXdheS4KLSAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KLSAgICAgICAgOzsKICAgICAgICopCiAgICAgICAgIGlmIHRlc3QgIiRuZWVkX3JlbGluayIgPSBubyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KICAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubwpAQCAtNzY5MSwxMyArODkwMCwxOSBAQAogICAgICAgZXNhYwogICAgICAgaWYgdGVzdCAiJHdyYXBwZXJzX3JlcXVpcmVkIiA9IG5vOyB0aGVuCiAJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAorCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKIAlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKIAogCSMgV2UgaGF2ZSBubyB1bmluc3RhbGxlZCBsaWJyYXJ5IGRlcGVuZGVuY2llcywgc28gZmluYWxpemUgcmlnaHQgbm93LgogCWV4aXRfc3RhdHVzPTAKIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXRfc3RhdHVzPSQ/JwogCisJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisJZmkKKwogCSMgRGVsZXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCiAJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IjsgdGhlbgogCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKQEAgLTc3MjAsNyArODkzNSw3IEBACiAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgogCSAgcnBhdGg9CiAJICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbwotCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKIAkgIGRvbmUKIAkgIGNvbXBpbGVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKIAlmaQpAQCAtNzcyOCw3ICs4OTQzLDcgQEAKIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCiAJICBycGF0aD0KIAkgIGZvciBkaXIgaW4gJGZpbmFsaXplX3Blcm1fcnBhdGg7IGRvCi0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgogCSAgZG9uZQogCSAgZmluYWxpemVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKIAlmaQpAQCAtNzczOCwxMSArODk1MywxOCBAQAogCSMgV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSB3cmFwcGVyIHNjcmlwdC4KIAlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKIAkjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0JbGlua19jb21tYW5kPWAkRUNITyAiWCRsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCisJbGlua19jb21tYW5kPWAkRUNITyAiJGxpbmtfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAogCSMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGUuCiAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0CiAJIyBMaW5rIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0CiAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JworCisJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisJZmkKKwogCWV4aXQgJEVYSVRfU1VDQ0VTUwogICAgICAgZmkKIApAQCAtNzc1Nyw3ICs4OTc5LDcgQEAKIAlpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiAhPSBubzsgdGhlbgogCSAgbGlua19jb21tYW5kPSIkZmluYWxpemVfdmFyJGNvbXBpbGVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aCIKIAkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCi0JICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCVcJHByb2dkaXIvXCRmaWxlJWcnYAorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIgfCAkU0VEICdzJUBPVVRQVVRAJVwkcHJvZ2Rpci9cJGZpbGUlZydgCiAJICBlbHNlCiAJICAgICMgZmFzdF9pbnN0YWxsIGlzIHNldCB0byBuZWVkbGVzcwogCSAgICByZWxpbmtfY29tbWFuZD0KQEAgLTc3NjksMTMgKzg5OTEsMTkgQEAKICAgICAgIGZpCiAKICAgICAgICMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLSAgICAgIGxpbmtfY29tbWFuZD1gJEVDSE8gIlgkbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJ2AKKyAgICAgIGxpbmtfY29tbWFuZD1gJEVDSE8gIiRsaW5rX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZydgCiAKICAgICAgICMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGVzLgogICAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0ICRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lICRvdXRwdXRfb2JqZGlyL2x0LSRvdXRwdXRuYW1lCiAKICAgICAgIGZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKIAorICAgICAgaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIgorCXBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisJZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKyAgICAgIGZpCisKICAgICAgICMgTm93IGNyZWF0ZSB0aGUgd3JhcHBlciBzY3JpcHQuCiAgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCiAKQEAgLTc3OTMsMTggKzkwMjEsNyBAQAogCSAgZmkKIAlkb25lCiAJcmVsaW5rX2NvbW1hbmQ9IihjZCBgcHdkYDsgJHJlbGlua19jb21tYW5kKSIKLQlyZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgICAgZmkKLQotICAgICAgIyBRdW90ZSAkRUNITyBmb3Igc2hpcHBpbmcuCi0gICAgICBpZiB0ZXN0ICJYJEVDSE8iID0gIlgkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KLQljYXNlICRwcm9ncGF0aCBpbgotCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcWVjaG89IiRTSEVMTCAkcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjs7Ci0JKikgcWVjaG89IiRTSEVMTCBgcHdkYC8kcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjs7Ci0JZXNhYwotCXFlY2hvPWAkRUNITyAiWCRxZWNobyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgICBlbHNlCi0JcWVjaG89YCRFQ0hPICJYJEVDSE8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorCXJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICAgZmkKIAogICAgICAgIyBPbmx5IGFjdHVhbGx5IGRvIHRoaW5ncyBpZiBub3QgaW4gZHJ5IHJ1biBtb2RlLgpAQCAtNzg4NCw3ICs5MTAxLDcgQEAKIAllbHNlCiAJICBvbGRvYmpzPSIkb2xkX2RlcGxpYnMgJG5vbl9waWNfb2JqZWN0cyIKIAkgIGlmIHRlc3QgIiRwcmVsb2FkIiA9IHllcyAmJiB0ZXN0IC1mICIkc3ltZmlsZW9iaiI7IHRoZW4KLQkgICAgb2xkb2Jqcz0iJG9sZG9ianMgJHN5bWZpbGVvYmoiCisJICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKIAkgIGZpCiAJZmkKIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgpAQCAtNzg5MiwxMCArOTEwOSwxMCBAQAogCiAgICAgICBpZiB0ZXN0IC1uICIkYWRkbGlicyI7IHRoZW4KIAlnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCWdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCWZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAlmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkYWRkbGlicwotCW9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCWZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKICAgICAgIGZpCiAKICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgpAQCAtNzkwNiwxMCArOTEyMywxMCBAQAogCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwogCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLQkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCWZpCiAKIAkjIFBPU0lYIGRlbWFuZHMgbm8gcGF0aHMgdG8gYmUgZW5jb2RlZCBpbiBhcmNoaXZlcy4gIFdlIGhhdmUKQEAgLTc5MjUsOSArOTE0Miw5IEBACiAJICAgIGRvbmUgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgogCSAgOgogCWVsc2UKLQkgICRFQ0hPICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCisJICBlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCSAgZnVuY19ta2Rpcl9wICIkZ2VudG9wIgogCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCiAJICBvbGRvYmpzPQpAQCAtNzk1MSwxOCArOTE2OCwzMCBAQAogCQllc2FjCiAJICAgICAgZG9uZQogCSAgICAgIGZ1bmNfc2hvd19ldmFsICJsbiAkb2JqICRnZW50b3AvJG5ld29iaiB8fCBjcCAkb2JqICRnZW50b3AvJG5ld29iaiIKLQkgICAgICBvbGRvYmpzPSIkb2xkb2JqcyAkZ2VudG9wLyRuZXdvYmoiCisJICAgICAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRnZW50b3AvJG5ld29iaiIKIAkgICAgICA7OwotCSAgICAqKSBvbGRvYmpzPSIkb2xkb2JqcyAkb2JqIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJG9iaiIgOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCWZpCisJZnVuY190b190b29sX2ZpbGUgIiRvbGRsaWIiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJdG9vbF9vbGRsaWI9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogCWV2YWwgY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKIAogCWZ1bmNfbGVuICIgJGNtZHMiCiAJbGVuPSRmdW5jX2xlbl9yZXN1bHQKIAlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KIAkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKKwllbGlmIHRlc3QgLW4gIiRhcmNoaXZlcl9saXN0X3NwZWMiOyB0aGVuCisJICBmdW5jX3ZlcmJvc2UgInVzaW5nIGNvbW1hbmQgZmlsZSBhcmNoaXZlIGxpbmtpbmcuLi4iCisJICBmb3Igb2JqIGluICRvbGRvYmpzCisJICBkbworCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKwkgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisJICBkb25lID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kIgorCSAgb2xkb2Jqcz0iICRhcmNoaXZlcl9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcwogCWVsc2UKIAkgICMgdGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIGluIHBhcnRzCiAJICBmdW5jX3ZlcmJvc2UgInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCkBAIC04MDM2LDcgKzkyNjUsNyBAQAogICAgICAgZG9uZQogICAgICAgIyBRdW90ZSB0aGUgbGluayBjb21tYW5kIGZvciBzaGlwcGluZy4KICAgICAgIHJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1tb2RlPXJlbGluayAkbGlidG9vbF9hcmdzIEBpbnN0X3ByZWZpeF9kaXJAKSIKLSAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAKICAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzIDsgdGhlbgogCXJlbGlua19jb21tYW5kPQogICAgICAgZmkKQEAgLTgwNTYsMTIgKzkyODUsMjMgQEAKIAkgICAgICAqLmxhKQogCQlmdW5jX2Jhc2VuYW1lICIkZGVwbGliIgogCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCiAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0JCW5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkbGliZGlyLyRuYW1lIgorCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKLQkgICAgICAqKSBuZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAtTCopCisJCWZ1bmNfc3RyaXBuYW1lIC1MICcnICIkZGVwbGliIgorCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLUwkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorCQk7OworCSAgICAgIC1SKikKKwkJZnVuY19zdHJpcG5hbWUgLVIgJycgIiRkZXBsaWIiCisJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtUiRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCisJCTs7CisJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJGRlcGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgpAQCAtODA3NSw5ICs5MzE1LDkgQEAKIAkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAogCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotCQluZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliZGlyLyRuYW1lIgorCQlmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCiAJCTs7Ci0JICAgICAgKikgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCkBAIC04MDk0LDcgKzkzMzQsNyBAQAogCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCiAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0JCW5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCisJCWZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKQEAgLTgxMDYsNyArOTM0Niw3IEBACiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwogCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CiAJICAgICAgZXNhYwotCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRhYnMiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRhYnMiCiAJICAgIGRvbmUKIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCiAJICAgIG5ld2RscHJlZmlsZXM9CkBAIC04MTE1LDE1ICs5MzU1LDMzIEBACiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwogCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CiAJICAgICAgZXNhYwotCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRhYnMiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRhYnMiCiAJICAgIGRvbmUKIAkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCiAJICBmaQogCSAgJFJNICRvdXRwdXQKIAkgICMgcGxhY2UgZGxuYW1lIGluIGNvcnJlY3QgcG9zaXRpb24gZm9yIGN5Z3dpbgorCSAgIyBJbiBmYWN0LCBpdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGNvdWxkIHVzZSB0aGlzIGNvZGUgZm9yIGFsbCB0YXJnZXQKKwkgICMgc3lzdGVtcyB0aGF0IGNhbid0IGhhcmQtY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gdGhlaXIgZXhlY3V0YWJsZXMKKwkgICMgYW5kIHRoYXQgaGF2ZSBubyBzaGFyZWQgbGlicmFyeSBwYXRoIHZhcmlhYmxlIGluZGVwZW5kZW50IG9mIFBBVEgsCisJICAjIGJ1dCBpdCB0dXJucyBvdXQgd2UgY2FuJ3QgZWFzaWx5IGRldGVybWluZSB0aGF0IGZyb20gaW5zcGVjdGluZworCSAgIyBsaWJ0b29sIHZhcmlhYmxlcywgc28gd2UgaGF2ZSB0byBoYXJkLWNvZGUgdGhlIE9TcyB0byB3aGljaCBpdAorCSAgIyBhcHBsaWVzIGhlcmU7IGF0IHRoZSBtb21lbnQsIHRoYXQgbWVhbnMgcGxhdGZvcm1zIHRoYXQgdXNlIHRoZSBQRQorCSAgIyBvYmplY3QgZm9ybWF0IHdpdGggRExMIGZpbGVzLiAgU2VlIHRoZSBsb25nIGNvbW1lbnQgYXQgdGhlIHRvcCBvZgorCSAgIyB0ZXN0cy9iaW5kaXIuYXQgZm9yIGZ1bGwgZGV0YWlscy4KIAkgIHRkbG5hbWU9JGRsbmFtZQogCSAgY2FzZSAkaG9zdCwkb3V0cHV0LCRpbnN0YWxsZWQsJG1vZHVsZSwkZGxuYW1lIGluCi0JICAgICpjeWd3aW4qLCpsYWkseWVzLG5vLCouZGxsIHwgKm1pbmd3KiwqbGFpLHllcyxubywqLmRsbCB8ICpjZWdjYyosKmxhaSx5ZXMsbm8sKi5kbGwpIHRkbG5hbWU9Li4vYmluLyRkbG5hbWUgOzsKKwkgICAgKmN5Z3dpbiosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqbWluZ3cqLCpsYWkseWVzLG5vLCouZGxsIHwgKmNlZ2NjKiwqbGFpLHllcyxubywqLmRsbCkKKwkgICAgICAjIElmIGEgLWJpbmRpciBhcmd1bWVudCB3YXMgc3VwcGxpZWQsIHBsYWNlIHRoZSBkbGwgdGhlcmUuCisJICAgICAgaWYgdGVzdCAieCRiaW5kaXIiICE9IHggOworCSAgICAgIHRoZW4KKwkJZnVuY19yZWxhdGl2ZV9wYXRoICIkaW5zdGFsbF9saWJkaXIiICIkYmluZGlyIgorCQl0ZGxuYW1lPSRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0JGRsbmFtZQorCSAgICAgIGVsc2UKKwkJIyBPdGhlcndpc2UgZmFsbCBiYWNrIG9uIGhldXJpc3RpYy4KKwkJdGRsbmFtZT0uLi9iaW4vJGRsbmFtZQorCSAgICAgIGZpCisJICAgICAgOzsKIAkgIGVzYWMKIAkgICRFQ0hPID4gJG91dHB1dCAiXAogIyAkb3V0cHV0bmFtZSAtIGEgbGlidG9vbCBsaWJyYXJ5IGZpbGUKQEAgLTgxODIsNyArOTQ0MCw3IEBACiAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiB9CiAKLXsgdGVzdCAiJG1vZGUiID0gbGluayB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IH0gJiYKK3sgdGVzdCAiJG9wdF9tb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgfSAmJgogICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQogCiAKQEAgLTgyMDIsOSArOTQ2MCw5IEBACiAgICAgZm9yIGFyZwogICAgIGRvCiAgICAgICBjYXNlICRhcmcgaW4KLSAgICAgIC1mKSBSTT0iJFJNICRhcmciOyBybWZvcmNlPXllcyA7OwotICAgICAgLSopIFJNPSIkUk0gJGFyZyIgOzsKLSAgICAgICopIGZpbGVzPSIkZmlsZXMgJGFyZyIgOzsKKyAgICAgIC1mKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciOyBybWZvcmNlPXllcyA7OworICAgICAgLSopIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyIgOzsKKyAgICAgICopIGZ1bmNfYXBwZW5kIGZpbGVzICIgJGFyZyIgOzsKICAgICAgIGVzYWMKICAgICBkb25lCiAKQEAgLTgyMTMsMjQgKzk0NzEsMjMgQEAKIAogICAgIHJtZGlycz0KIAotICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCiAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwogICAgICAgZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCiAgICAgICBkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogICAgICAgaWYgdGVzdCAiWCRkaXIiID0gWC47IHRoZW4KLQlvYmpkaXI9IiRvcmlnb2JqZGlyIgorCW9kaXI9IiRvYmpkaXIiCiAgICAgICBlbHNlCi0Jb2JqZGlyPSIkZGlyLyRvcmlnb2JqZGlyIgorCW9kaXI9IiRkaXIvJG9iamRpciIKICAgICAgIGZpCiAgICAgICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKICAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSAgICAgIHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCAmJiBvYmpkaXI9IiRkaXIiCisgICAgICB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsICYmIG9kaXI9IiRkaXIiCiAKLSAgICAgICMgUmVtZW1iZXIgb2JqZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKLSAgICAgIGlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB0aGVuCisgICAgICAjIFJlbWVtYmVyIG9kaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcworICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB0aGVuCiAJY2FzZSAiICRybWRpcnMgIiBpbgotCSAgKiIgJG9iamRpciAiKikgOzsKLQkgICopIHJtZGlycz0iJHJtZGlycyAkb2JqZGlyIiA7OworCSAgKiIgJG9kaXIgIiopIDs7CisJICAqKSBmdW5jX2FwcGVuZCBybWRpcnMgIiAkb2RpciIgOzsKIAllc2FjCiAgICAgICBmaQogCkBAIC04MjU2LDE4ICs5NTEzLDE3IEBACiAKIAkgICMgRGVsZXRlIHRoZSBsaWJ0b29sIGxpYnJhcmllcyBhbmQgc3ltbGlua3MuCiAJICBmb3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbiIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuIgogCSAgZG9uZQotCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRvbGRfbGlicmFyeSIKIAotCSAgY2FzZSAiJG1vZGUiIGluCisJICBjYXNlICIkb3B0X21vZGUiIGluCiAJICBjbGVhbikKLQkgICAgY2FzZSAiICAkbGlicmFyeV9uYW1lcyAiIGluCi0JICAgICMgIiAgIiBpbiB0aGUgYmVnaW5uaW5nIGNhdGNoZXMgZW1wdHkgJGRsbmFtZQorCSAgICBjYXNlICIgJGxpYnJhcnlfbmFtZXMgIiBpbgogCSAgICAqIiAkZGxuYW1lICIqKSA7OwotCSAgICAqKSBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRkbG5hbWUiIDs7CisJICAgICopIHRlc3QgLW4gIiRkbG5hbWUiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZGxuYW1lIiA7OwogCSAgICBlc2FjCi0JICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9aSIKKwkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1pIgogCSAgICA7OwogCSAgdW5pbnN0YWxsKQogCSAgICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IHRoZW4KQEAgLTgyOTUsMTkgKzk1NTEsMTkgQEAKIAkgICMgQWRkIFBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgogCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCiAJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRwaWNfb2JqZWN0IgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kcGljX29iamVjdCIKIAkgIGZpCiAKIAkgICMgQWRkIG5vbi1QSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KIAkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKIAkgICAgIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRub25fcGljX29iamVjdCIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJG5vbl9waWNfb2JqZWN0IgogCSAgZmkKIAlmaQogCTs7CiAKICAgICAgICopCi0JaWYgdGVzdCAiJG1vZGUiID0gY2xlYW4gOyB0aGVuCisJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuIDsgdGhlbgogCSAgbm9leGVuYW1lPSRuYW1lCiAJICBjYXNlICRmaWxlIGluCiAJICAqLmV4ZSkKQEAgLTgzMTcsNyArOTU3Myw3IEBACiAJICAgIG5vZXhlbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICAgICMgJGZpbGUgd2l0aCAuZXhlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gcm1maWxlcywKIAkgICAgIyBhZGQgJGZpbGUgd2l0aG91dCAuZXhlCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRmaWxlIgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZpbGUiCiAJICAgIDs7CiAJICBlc2FjCiAJICAjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyBhIGxpYnRvb2wgcHJvZ3JhbS4KQEAgLTgzMjYsNyArOTU4Miw3IEBACiAJICAgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAiJGZpbGUiCiAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CiAJICAgICAgZnVuY19zb3VyY2UgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0Ci0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgorCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCiAJICAgIGVsc2UKIAkgICAgICByZWxpbmtfY29tbWFuZD0KIAkgICAgICBmdW5jX3NvdXJjZSAkZGlyLyRub2V4ZW5hbWUKQEAgLTgzMzQsMTIgKzk1OTAsMTIgQEAKIAogCSAgICAjIG5vdGUgJG5hbWUgc3RpbGwgY29udGFpbnMgLmV4ZSBpZiBpdCB3YXMgaW4gJGZpbGUgb3JpZ2luYWxseQogCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcwotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfVMuJHtvYmpleHR9IgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfVMuJHtvYmpleHR9IgogCSAgICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllcyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCi0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0kbmFtZSIKKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJG5hbWUiCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSR7bm9leGVuYW1lfS5jIgorCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0ke25vZXhlbmFtZX0uYyIKIAkgICAgZmkKIAkgIGZpCiAJZmkKQEAgLTgzNDcsNyArOTYwMyw2IEBACiAgICAgICBlc2FjCiAgICAgICBmdW5jX3Nob3dfZXZhbCAiJFJNICRybWZpbGVzIiAnZXhpdF9zdGF0dXM9MScKICAgICBkb25lCi0gICAgb2JqZGlyPSIkb3JpZ29iamRpciIKIAogICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJHtvYmpkaXJ9cyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcwogICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KQEAgLTgzNTksMTYgKzk2MTQsMTYgQEAKICAgICBleGl0ICRleGl0X3N0YXR1cwogfQogCi17IHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgfSAmJgoreyB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgfSAmJgogICAgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9CiAKLXRlc3QgLXogIiRtb2RlIiAmJiB7Cit0ZXN0IC16ICIkb3B0X21vZGUiICYmIHsKICAgaGVscD0iJGdlbmVyaWNfaGVscCIKICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIKIH0KIAogdGVzdCAteiAiJGV4ZWNfY21kIiAmJiBcCi0gIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKyAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKIAogaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgogICBldmFsIGV4ZWMgIiRleGVjX2NtZCIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXNtY2ZpLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9hc21jZmkubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmNzNhMAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXNtY2ZpLm00CkBAIC0wLDAgKzEsMTMgQEAKK0FDX0RFRlVOKFtHQ0NfQVNfQ0ZJX1BTRVVET19PUF0sCitbQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciAuY2ZpIHBzZXVkby1vcCBzdXBwb3J0XSwKKyAgICBnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcCwgWworICAgIGdjY19jdl9hc19jZmlfcHNldWRvX29wPXVua25vd24KKyAgICBBQ19UUllfQ09NUElMRShbYXNtICgiLmNmaV9zdGFydHByb2Ncblx0LmNmaV9lbmRwcm9jIik7XSwsCisJCSAgIFtnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcD15ZXNdLAorCQkgICBbZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3A9bm9dKQorIF0pCisgaWYgdGVzdCAieCRnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfQVNfQ0ZJX1BTRVVET19PUCwgMSwKKwkgICAgICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5jZmlfKiBkaXJlY3RpdmVzLl0pCisgZmkKK10pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2FwcGVuZF9mbGFnLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9hcHBlbmRfZmxhZy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDM4Yjc2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9hcHBlbmRfZmxhZy5tNApAQCAtMCwwICsxLDY5IEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2FwcGVuZF9mbGFnLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfQVBQRU5EX0ZMQUcoRkxBRywgW0ZMQUdTLVZBUklBQkxFXSkKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBGTEFHIGlzIGFwcGVuZGVkIHRvIHRoZSBGTEFHUy1WQVJJQUJMRSBzaGVsbCB2YXJpYWJsZSwgd2l0aCBhIHNwYWNlCisjICAgYWRkZWQgaW4gYmV0d2Vlbi4KKyMKKyMgICBJZiBGTEFHUy1WQVJJQUJMRSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgY3VycmVudCBsYW5ndWFnZSdzIGZsYWdzIChlLmcuCisjICAgQ0ZMQUdTKSBpcyB1c2VkLiAgRkxBR1MtVkFSSUFCTEUgaXMgbm90IGNoYW5nZWQgaWYgaXQgYWxyZWFkeSBjb250YWlucworIyAgIEZMQUcuICBJZiBGTEFHUy1WQVJJQUJMRSBpcyB1bnNldCBpbiB0aGUgc2hlbGwsIGl0IGlzIHNldCB0byBleGFjdGx5CisjICAgRkxBRy4KKyMKKyMgICBOT1RFOiBJbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBBWF9DRkxBR1NfR0NDX09QVElPTi4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgorIyAgIENvcHlyaWdodCAoYykgMjAxMSBNYWFydGVuIEJvc21hbnMgPG1rYm9zbWFuc0BnbWFpbC5jb20+CisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDIKKworQUNfREVGVU4oW0FYX0FQUEVORF9GTEFHXSwKK1tBQ19QUkVSRVEoMi41OSlkbmwgZm9yIF9BQ19MQU5HX1BSRUZJWAorQVNfVkFSX1BVU0hERUYoW0ZMQUdTXSwgW200X2RlZmF1bHQoJDIsX0FDX0xBTkdfUFJFRklYW0ZMQUdTXSldKWRubAorQVNfVkFSX1NFVF9JRihGTEFHUywKKyAgW2Nhc2UgIiBBU19WQVJfR0VUKEZMQUdTKSAiIGluCisgICAgKiIgJDEgIiopCisgICAgICBBQ19SVU5fTE9HKFs6IEZMQUdTIGFscmVhZHkgY29udGFpbnMgJDFdKQorICAgICAgOzsKKyAgICAqKQorICAgICAgQUNfUlVOX0xPRyhbOiBGTEFHUz0iJEZMQUdTICQxIl0pCisgICAgICBBU19WQVJfU0VUKEZMQUdTLCBbIkFTX1ZBUl9HRVQoRkxBR1MpICQxIl0pCisgICAgICA7OworICAgZXNhY10sCisgIFtBU19WQVJfU0VUKEZMQUdTLFsiJDEiXSldKQorQVNfVkFSX1BPUERFRihbRkxBR1NdKWRubAorXSlkbmwgQVhfQVBQRU5EX0ZMQUcKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2NfbWF4b3B0Lm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jY19tYXhvcHQubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU3NTMyNwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2NfbWF4b3B0Lm00CkBAIC0wLDAgKzEsMTgwIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jY19tYXhvcHQuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9DQ19NQVhPUFQKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBUcnkgdG8gdHVybiBvbiAiZ29vZCIgQyBvcHRpbWl6YXRpb24gZmxhZ3MgZm9yIHZhcmlvdXMgY29tcGlsZXJzIGFuZAorIyAgIGFyY2hpdGVjdHVyZXMsIGZvciBzb21lIGRlZmluaXRpb24gb2YgImdvb2QiLiAoSW4gb3VyIGNhc2UsIGdvb2QgZm9yCisjICAgRkZUVyBhbmQgaG9wZWZ1bGx5IGZvciBvdGhlciBzY2llbnRpZmljIGNvZGVzLiBNb2RpZnkgYXMgbmVlZGVkLikKKyMKKyMgICBUaGUgdXNlciBjYW4gb3ZlcnJpZGUgdGhlIGZsYWdzIGJ5IHNldHRpbmcgdGhlIENGTEFHUyBlbnZpcm9ubWVudAorIyAgIHZhcmlhYmxlLiBUaGUgdXNlciBjYW4gYWxzbyBzcGVjaWZ5IC0tZW5hYmxlLXBvcnRhYmxlLWJpbmFyeSBpbiBvcmRlciB0bworIyAgIGRpc2FibGUgYW55IG9wdGltaXphdGlvbiBmbGFncyB0aGF0IG1pZ2h0IHJlc3VsdCBpbiBhIGJpbmFyeSB0aGF0IG9ubHkKKyMgICBydW5zIG9uIHRoZSBob3N0IGFyY2hpdGVjdHVyZS4KKyMKKyMgICBOb3RlIGFsc28gdGhhdCB0aGUgZmxhZ3MgYXNzdW1lIHRoYXQgQU5TSSBDIGFsaWFzaW5nIHJ1bGVzIGFyZSBmb2xsb3dlZAorIyAgIGJ5IHRoZSBjb2RlIChlLmcuIGZvciBnY2MncyAtZnN0cmljdC1hbGlhc2luZyksIGFuZCB0aGF0IGZsb2F0aW5nLXBvaW50CisjICAgY29tcHV0YXRpb25zIGNhbiBiZSByZS1vcmRlcmVkIGFzIG5lZWRlZC4KKyMKKyMgICBSZXF1aXJlcyBtYWNyb3M6IEFYX0NIRUNLX0NPTVBJTEVfRkxBRywgQVhfQ09NUElMRVJfVkVORE9SLAorIyAgIEFYX0dDQ19BUkNIRkxBRywgQVhfR0NDX1g4Nl9DUFVJRC4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVuakBhbHVtLm1pdC5lZHU+CisjICAgQ29weXJpZ2h0IChjKSAyMDA4IE1hdHRlbyBGcmlnbworIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCAxMgorCitBQ19ERUZVTihbQVhfQ0NfTUFYT1BUXSwKK1sKK0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQorQUNfUkVRVUlSRShbQVhfQ09NUElMRVJfVkVORE9SXSkKK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKKworQUNfQVJHX0VOQUJMRShwb3J0YWJsZS1iaW5hcnksIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9ydGFibGUtYmluYXJ5XSwgW2Rpc2FibGUgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0IHdvdWxkIHByb2R1Y2UgdW5wb3J0YWJsZSBiaW5hcmllc10pXSwKKwlhY3hfbWF4b3B0X3BvcnRhYmxlPSR3aXRodmFsLCBhY3hfbWF4b3B0X3BvcnRhYmxlPW5vKQorCisjIFRyeSB0byBkZXRlcm1pbmUgImdvb2QiIG5hdGl2ZSBjb21waWxlciBmbGFncyBpZiBub25lIHNwZWNpZmllZCB2aWEgQ0ZMQUdTCitpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiICE9ICJzZXQiOyB0aGVuCisgIENGTEFHUz0iIgorICBjYXNlICRheF9jdl9jX2NvbXBpbGVyX3ZlbmRvciBpbgorICAgIGRlYykgQ0ZMQUdTPSItbmV3YyAtdzAgLU81IC1hbnNpX2FsaWFzIC1hbnNpX2FyZ3MgLWZwX3Jlb3JkZXIgLXR1bmUgaG9zdCIKKwkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHhubzsgdGhlbgorICAgICAgICAgICBDRkxBR1M9IiRDRkxBR1MgLWFyY2ggaG9zdCIKKyAgICAgICAgIGZpOzsKKworICAgIHN1bikgQ0ZMQUdTPSItbmF0aXZlIC1mYXN0IC14TzUgLWRhbGlnbiIKKwkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHh5ZXM7IHRoZW4KKwkgICBDRkxBR1M9IiRDRkxBR1MgLXhhcmNoPWdlbmVyaWMiCisgICAgICAgICBmaTs7CisKKyAgICBocCkgIENGTEFHUz0iK09hbGwgK09wdHJzX2Fuc2kgK0RTbmF0aXZlIgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geHllczsgdGhlbgorCSAgIENGTEFHUz0iJENGTEFHUyArREFwb3J0YWJsZSIKKwkgZmk7OworCisgICAgaWJtKSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geG5vOyB0aGVuCisgICAgICAgICAgIHhsY19vcHQ9Ii1xYXJjaD1hdXRvIC1xdHVuZT1hdXRvIgorCSBlbHNlCisgICAgICAgICAgIHhsY19vcHQ9Ii1xdHVuZT1hdXRvIgorCSBmaQorICAgICAgICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKCR4bGNfb3B0LAorCQlDRkxBR1M9Ii1PMyAtcWFuc2lhbGlhcyAtdyAkeGxjX29wdCIsCisgICAgICAgICAgICAgICBbQ0ZMQUdTPSItTzMgLXFhbnNpYWxpYXMgLXciCisgICAgICAgICAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIFlvdSBzZWVtIHRvIGhhdmUgdGhlIElCTSAgQyBjb21waWxlci4gIEl0IGlzICAgICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICByZWNvbW1lbmRlZCBmb3IgYmVzdCBwZXJmb3JtYW5jZSB0aGF0IHlvdSB1c2U6ICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogICAgQ0ZMQUdTPS1PMyAtcWFyY2g9eHh4IC1xdHVuZT14eHggLXFhbnNpYWxpYXMgLXcgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICAgICAgICAgICAgICAgICAgICAgIF5eXiAgICAgICAgXl5eICAgICAgICAgICAgICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgd2hlcmUgeHh4IGlzIHB3cjIsIHB3cjMsIDYwNCwgb3Igd2hhdGV2ZXIga2luZCBvZiAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIENQVSB5b3UgaGF2ZS4gIChTZXQgdGhlIENGTEFHUyBlbnZpcm9ubWVudCB2YXIuICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICBhbmQgcmUtcnVuIGNvbmZpZ3VyZS4pICBGb3IgbW9yZSBpbmZvLCBtYW4gY2MuICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIl0pCisgICAgICAgICA7OworCisgICAgaW50ZWwpIENGTEFHUz0iLU8zIC1hbnNpX2FsaWFzIgorCWlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4bm87IHRoZW4KKwkgIGljY19hcmNoZmxhZz11bmtub3duCisJICBpY2NfZmxhZ3M9IiIKKwkgIGNhc2UgJGhvc3RfY3B1IGluCisJICAgIGk2ODYqfHg4Nl82NCopCisgICAgICAgICAgICAgICMgaWNjIGFjY2VwdHMgZ2NjIGFzc2VtYmx5IHN5bnRheCwgc28gdGhlc2Ugc2hvdWxkIHdvcms6CisJICAgICAgQVhfR0NDX1g4Nl9DUFVJRCgwKQorICAgICAgICAgICAgICBBWF9HQ0NfWDg2X0NQVUlEKDEpCisJICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIGluICMgc2VlIEFYX0dDQ19BUkNIRkxBRworICAgICAgICAgICAgICAgICo6NzU2ZTY1NDc6KjoqKSAjIEludGVsCisgICAgICAgICAgICAgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKyAgICAgICAgICAgICAgICAgICAgKjZhPzoqW1syMzRdXToqOip8KjZbWzc4OWJdXT86KjoqOiopIGljY19mbGFncz0iLXhLIjs7CisgICAgICAgICAgICAgICAgICAgICpmM1tbMzQ3XV06KjoqOip8KmY0WzEzNDddOio6KjoqKSBpY2NfZmxhZ3M9Ii14UCAteE4gLXhXIC14SyI7OworICAgICAgICAgICAgICAgICAgICAqZj8/Oio6KjoqKSBpY2NfZmxhZ3M9Ii14TiAteFcgLXhLIjs7CisgICAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgaWYgdGVzdCAieCRpY2NfZmxhZ3MiICE9IHg7IHRoZW4KKyAgICAgICAgICAgIGZvciBmbGFnIGluICRpY2NfZmxhZ3M7IGRvCisgICAgICAgICAgICAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygkZmxhZywgW2ljY19hcmNoZmxhZz0kZmxhZzsgYnJlYWtdKQorICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgaWNjIGFyY2hpdGVjdHVyZSBmbGFnXSkKKwkgIEFDX01TR19SRVNVTFQoJGljY19hcmNoZmxhZykKKyAgICAgICAgICBpZiB0ZXN0ICJ4JGljY19hcmNoZmxhZyIgIT0geHVua25vd247IHRoZW4KKyAgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAkaWNjX2FyY2hmbGFnIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisJOzsKKworICAgIGdudSkKKyAgICAgIyBkZWZhdWx0IG9wdGltaXphdGlvbiBmbGFncyBmb3IgZ2NjIG9uIGFsbCBzeXN0ZW1zCisgICAgIENGTEFHUz0iLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIgorCisgICAgICMgLW1hbGlnbi1kb3VibGUgZm9yIHg4NiBzeXN0ZW1zCisgICAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygtbWFsaWduLWRvdWJsZSwgQ0ZMQUdTPSIkQ0ZMQUdTIC1tYWxpZ24tZG91YmxlIikKKworICAgICAjICAtZnN0cmljdC1hbGlhc2luZyBmb3IgZ2NjLTIuOTUrCisgICAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygtZnN0cmljdC1hbGlhc2luZywKKwlDRkxBR1M9IiRDRkxBR1MgLWZzdHJpY3QtYWxpYXNpbmciKQorCisgICAgICMgbm90ZSB0aGF0IHdlIGVuYWJsZSAidW5zYWZlIiBmcCBvcHRpbWl6YXRpb24gd2l0aCBvdGhlciBjb21waWxlcnMsIHRvbworICAgICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoLWZmYXN0LW1hdGgsIENGTEFHUz0iJENGTEFHUyAtZmZhc3QtbWF0aCIpCisKKyAgICAgQVhfR0NDX0FSQ0hGTEFHKCRhY3hfbWF4b3B0X3BvcnRhYmxlKQorICAgICA7OworICBlc2FjCisKKyAgaWYgdGVzdCAteiAiJENGTEFHUyI7IHRoZW4KKwllY2hvICIiCisJZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiogV0FSTklORzogRG9uJ3Qga25vdyB0aGUgYmVzdCBDRkxBR1MgZm9yIHRoaXMgc3lzdGVtICAqIgorICAgICAgICBlY2hvICIqIFVzZSAuL2NvbmZpZ3VyZSBDRkxBR1M9Li4uIHRvIHNwZWNpZnkgeW91ciBvd24gZmxhZ3MgKiIKKwllY2hvICIqIChvdGhlcndpc2UsIGEgZGVmYXVsdCBvZiBDRkxBR1M9LU8zIHdpbGwgYmUgdXNlZCkgICAgKiIKKwllY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKwllY2hvICIiCisgICAgICAgIENGTEFHUz0iLU8zIgorICBmaQorCisgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygkQ0ZMQUdTLCBbXSwgWworCWVjaG8gIiIKKyAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiogV0FSTklORzogVGhlIGd1ZXNzZWQgQ0ZMQUdTIGRvbid0IHNlZW0gdG8gd29yayB3aXRoICAqIgorICAgICAgICBlY2hvICIqIHlvdXIgY29tcGlsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiIKKyAgICAgICAgZWNobyAiKiBVc2UgLi9jb25maWd1cmUgQ0ZMQUdTPS4uLiB0byBzcGVjaWZ5IHlvdXIgb3duIGZsYWdzICoiCisgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorICAgICAgICBlY2hvICIiCisgICAgICAgIENGTEFHUz0iIgorICBdKQorCitmaQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2ZsYWdzX3dhcm5fYWxsLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jZmxhZ3Nfd2Fybl9hbGwubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIyZTM3ZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2ZsYWdzX3dhcm5fYWxsLm00CkBAIC0wLDAgKzEsMTIxIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jZmxhZ3Nfd2Fybl9hbGwuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9DRkxBR1NfV0FSTl9BTEwgICBbKHNoZWxsdmFyIFssZGVmYXVsdCwgW0EvTkFdXSldCisjICAgQVhfQ1hYRkxBR1NfV0FSTl9BTEwgWyhzaGVsbHZhciBbLGRlZmF1bHQsIFtBL05BXV0pXQorIyAgIEFYX0ZDRkxBR1NfV0FSTl9BTEwgIFsoc2hlbGx2YXIgWyxkZWZhdWx0LCBbQS9OQV1dKV0KKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBUcnkgdG8gZmluZCBhIGNvbXBpbGVyIG9wdGlvbiB0aGF0IGVuYWJsZXMgbW9zdCByZWFzb25hYmxlIHdhcm5pbmdzLgorIworIyAgIEZvciB0aGUgR05VIGNvbXBpbGVyIGl0IHdpbGwgYmUgLVdhbGwgKGFuZCAtYW5zaSAtcGVkYW50aWMpIFRoZSByZXN1bHQKKyMgICBpcyBhZGRlZCB0byB0aGUgc2hlbGx2YXIgYmVpbmcgQ0ZMQUdTLCBDWFhGTEFHUywgb3IgRkNGTEFHUyBieSBkZWZhdWx0LgorIworIyAgIEN1cnJlbnRseSB0aGlzIG1hY3JvIGtub3dzIGFib3V0IHRoZSBHQ0MsIFNvbGFyaXMsIERpZ2l0YWwgVW5peCwgQUlYLAorIyAgIEhQLVVYLCBJUklYLCBORUMgU1gtNSAoU3VwZXItVVggMTApLCBDcmF5IEo5MCAoVW5pY29zIDEwLjAuMC44KSwgYW5kCisjICAgSW50ZWwgY29tcGlsZXJzLiAgRm9yIGEgZ2l2ZW4gY29tcGlsZXIsIHRoZSBGb3J0cmFuIGZsYWdzIGFyZSBtdWNoIG1vcmUKKyMgICBleHBlcmltZW50YWwgdGhhbiB0aGVpciBDIGVxdWl2YWxlbnRzLgorIworIyAgICAtICQxIHNoZWxsLXZhcmlhYmxlLXRvLWFkZC10byA6IENGTEFHUywgQ1hYRkxBR1MsIG9yIEZDRkxBR1MKKyMgICAgLSAkMiBhZGQtdmFsdWUtaWYtbm90LWZvdW5kIDogbm90aGluZworIyAgICAtICQzIGFjdGlvbi1pZi1mb3VuZCA6IGFkZCB2YWx1ZSB0byBzaGVsbHZhcmlhYmxlCisjICAgIC0gJDQgYWN0aW9uLWlmLW5vdC1mb3VuZCA6IG5vdGhpbmcKKyMKKyMgICBOT1RFOiBUaGVzZSBtYWNyb3MgZGVwZW5kIG9uIEFYX0FQUEVORF9GTEFHLgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+CisjICAgQ29weXJpZ2h0IChjKSAyMDEwIFJoeXMgVWxlcmljaCA8cmh5cy51bGVyaWNoQGdtYWlsLmNvbT4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMTMKKworQUNfREVGVU4oW0FYX0ZMQUdTX1dBUk5fQUxMXSxbZG5sCitBU19WQVJfUFVTSERFRihbRkxBR1NdLFtfQUNfTEFOR19QUkVGSVhbXUZMQUdTXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtWQVJdLFthY19jdl9bXV9BQ19MQU5HX0FCQlJFVltdZmxhZ3Nfd2Fybl9hbGxdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW200X2lmdmFsKCQxLCQxLEZMQUdTKSBmb3IgbWF4aW11bSB3YXJuaW5nc10sCitWQVIsW1ZBUj0ibm8sIHVua25vd24iCithY19zYXZlX1tdRkxBR1M9IiRbXUZMQUdTIgorZm9yIGFjX2FyZyBkbmwKK2luICItd2FybiBhbGwgICUgLXdhcm4gYWxsIiAgIGRubCBJbnRlbAorICAgIi1wZWRhbnRpYyAgJSAtV2FsbCIgICAgICAgZG5sIEdDQworICAgIi14c3RyY29uc3QgJSAtdiIgICAgICAgICAgZG5sIFNvbGFyaXMgQworICAgIi1zdGQxICAgICAgJSAtdmVyYm9zZSAtdzAgLXdhcm5wcm90b3MiIGRubCBEaWdpdGFsIFVuaXgKKyAgICItcWxhbmdsdmw9YW5zaSAlIC1xc3JjbXNnIC1xaW5mbz1hbGw6bm9wcHQ6bm9wcGM6bm9vYnM6bm9jbmQiIGRubCBBSVgKKyAgICItYW5zaSAtYW5zaUUgJSAtZnVsbHdhcm4iIGRubCBJUklYCisgICAiK0VTbGl0ICAgICAlICt3MSIgICAgICAgICBkbmwgSFAtVVggQworICAgIi1YYyAgICAgICAgJSAtcHZjdGxbLF1mdWxsbXNnIiBkbmwgTkVDIFNYLTUgKFN1cGVyLVVYIDEwKQorICAgIi1oIGNvbmZvcm0gJSAtaCBtc2dsZXZlbCAyIiBkbmwgQ3JheSBDIChVbmljb3MpCisgICAjCitkbyBGTEFHUz0iJGFjX3NhdmVfW11GTEFHUyAiYGVjaG8gJGFjX2FyZyB8IHNlZCAtZSAncywlJS4qLCwnIC1lICdzLCUsLCdgCisgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSwKKyAgICAgICAgICAgICAgICAgICAgIFtWQVI9YGVjaG8gJGFjX2FyZyB8IHNlZCAtZSAncywuKiUgKiwsJ2AgOyBicmVha10pCitkb25lCitGTEFHUz0iJGFjX3NhdmVfW11GTEFHUyIKK10pCitBU19WQVJfUE9QREVGKFtGTEFHU10pZG5sCitjYXNlICIuJFZBUiIgaW4KKyAgICAgLm9rfC5vaywqKSBtNF9pZnZhbG4oJDMsJDMpIDs7CisgICAufC5ub3wubm8sKikgbTRfZGVmYXVsdCgkNCxbbTRfaWZ2YWwoJDIsW0FYX0FQUEVORF9GTEFHKFskMl0sIFskMV0pXSldKSA7OworICAgKikgbTRfZGVmYXVsdCgkMyxbQVhfQVBQRU5EX0ZMQUcoWyRWQVJdLCBbJDFdKV0pIDs7Citlc2FjCitBU19WQVJfUE9QREVGKFtWQVJdKWRubAorXSlkbmwgQVhfRkxBR1NfV0FSTl9BTEwKK2RubCAgaW1wbGVtZW50YXRpb24gdGFjdGljczoKK2RubCAgIHRoZSBmb3ItYXJndW1lbnQgY29udGFpbnMgYSBsaXN0IG9mIG9wdGlvbnMuIFRoZSBmaXJzdCBwYXJ0IG9mCitkbmwgICB0aGVzZSBkb2VzIG9ubHkgZXhpc3QgdG8gZGV0ZWN0IHRoZSBjb21waWxlciAtIHVzdWFsbHkgaXQgaXMKK2RubCAgIGEgZ2xvYmFsIG9wdGlvbiB0byBlbmFibGUgLWFuc2kgb3IgLWV4dHJhd2FybmluZ3MuIEFsbCBvdGhlcgorZG5sICAgY29tcGlsZXJzIHdpbGwgZmFpbCBhYm91dCBpdC4gVGhhdCB3YXMgbmVlZGVkIHNpbmNlIGEgbG90IG9mCitkbmwgICBjb21waWxlcnMgd2lsbCBnaXZlIGZhbHNlIHBvc2l0aXZlcyBmb3Igc29tZSBvcHRpb24tc3ludGF4CitkbmwgICBsaWtlIC1Xb3B0aW9uIG9yIC1Yb3B0aW9uIGFzIHRoZXkgdGhpbmsgb2YgaXQgaXMgYSBwYXNzLXRocm91Z2gKK2RubCAgIHRvIGxhdGVyIGNvbXBpbGUgc3RhZ2VzIG9yIHNvbWV0aGluZy4gVGhlICIlIiBpcyB1c2VkIGFzIGEKK2RubCAgIGRlbGltaXRlci4gQSBub24tb3B0aW9uIGNvbW1lbnQgY2FuIGJlIGdpdmVuIGFmdGVyICIlJSIgbWFya3MKK2RubCAgIHdoaWNoIHdpbGwgYmUgc2hvd24gYnV0IG5vdCBhZGRlZCB0byB0aGUgcmVzcGVjdGl2ZSBDL0NYWEZMQUdTLgorCitBQ19ERUZVTihbQVhfQ0ZMQUdTX1dBUk5fQUxMXSxbZG5sCitBQ19MQU5HX1BVU0goW0NdKQorQVhfRkxBR1NfV0FSTl9BTEwoWyQxXSwgWyQyXSwgWyQzXSwgWyQ0XSkKK0FDX0xBTkdfUE9QKFtDXSkKK10pCisKK0FDX0RFRlVOKFtBWF9DWFhGTEFHU19XQVJOX0FMTF0sW2RubAorQUNfTEFOR19QVVNIKFtDKytdKQorQVhfRkxBR1NfV0FSTl9BTEwoWyQxXSwgWyQyXSwgWyQzXSwgWyQ0XSkKK0FDX0xBTkdfUE9QKFtDKytdKQorXSkKKworQUNfREVGVU4oW0FYX0ZDRkxBR1NfV0FSTl9BTExdLFtkbmwKK0FDX0xBTkdfUFVTSChbRm9ydHJhbl0pCitBWF9GTEFHU19XQVJOX0FMTChbJDFdLCBbJDJdLCBbJDNdLCBbJDRdKQorQUNfTEFOR19QT1AoW0ZvcnRyYW5dKQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNhOGQ2OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00CkBAIC0wLDAgKzEsNzIgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY2hlY2tfY29tcGlsZV9mbGFnLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKEZMQUcsIFtBQ1RJT04tU1VDQ0VTU10sIFtBQ1RJT04tRkFJTFVSRV0sIFtFWFRSQS1GTEFHU10pCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gRkxBRyB3b3JrcyB3aXRoIHRoZSBjdXJyZW50IGxhbmd1YWdlJ3MgY29tcGlsZXIKKyMgICBvciBnaXZlcyBhbiBlcnJvci4gIChXYXJuaW5ncywgaG93ZXZlciwgYXJlIGlnbm9yZWQpCisjCisjICAgQUNUSU9OLVNVQ0NFU1MvQUNUSU9OLUZBSUxVUkUgYXJlIHNoZWxsIGNvbW1hbmRzIHRvIGV4ZWN1dGUgb24KKyMgICBzdWNjZXNzL2ZhaWx1cmUuCisjCisjICAgSWYgRVhUUkEtRkxBR1MgaXMgZGVmaW5lZCwgaXQgaXMgYWRkZWQgdG8gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UncyBkZWZhdWx0CisjICAgZmxhZ3MgKGUuZy4gQ0ZMQUdTKSB3aGVuIHRoZSBjaGVjayBpcyBkb25lLiAgVGhlIGNoZWNrIGlzIHRodXMgbWFkZSB3aXRoCisjICAgdGhlIGZsYWdzOiAiQ0ZMQUdTIEVYVFJBLUZMQUdTIEZMQUciLiAgVGhpcyBjYW4gZm9yIGV4YW1wbGUgYmUgdXNlZCB0bworIyAgIGZvcmNlIHRoZSBjb21waWxlciB0byBpc3N1ZSBhbiBlcnJvciB3aGVuIGEgYmFkIGZsYWcgaXMgZ2l2ZW4uCisjCisjICAgTk9URTogSW1wbGVtZW50YXRpb24gYmFzZWQgb24gQVhfQ0ZMQUdTX0dDQ19PUFRJT04uIFBsZWFzZSBrZWVwIHRoaXMKKyMgICBtYWNybyBpbiBzeW5jIHdpdGggQVhfQ0hFQ0tfe1BSRVBST0MsTElOS31fRkxBRy4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgorIyAgIENvcHlyaWdodCAoYykgMjAxMSBNYWFydGVuIEJvc21hbnMgPG1rYm9zbWFuc0BnbWFpbC5jb20+CisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDIKKworQUNfREVGVU4oW0FYX0NIRUNLX0NPTVBJTEVfRkxBR10sCitbQUNfUFJFUkVRKDIuNTkpZG5sIGZvciBfQUNfTEFOR19QUkVGSVgKK0FTX1ZBUl9QVVNIREVGKFtDQUNIRVZBUl0sW2F4X2N2X2NoZWNrX1tdX0FDX0xBTkdfQUJCUkVWW11mbGFnc18kNF8kMV0pZG5sCitBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBfQUNfTEFORyBjb21waWxlciBhY2NlcHRzICQxXSwgQ0FDSEVWQVIsIFsKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kW11fQUNfTEFOR19QUkVGSVhbXUZMQUdTCisgIF9BQ19MQU5HX1BSRUZJWFtdRkxBR1M9IiRbXV9BQ19MQU5HX1BSRUZJWFtdRkxBR1MgJDQgJDEiCisgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oKV0sCisgICAgW0FTX1ZBUl9TRVQoQ0FDSEVWQVIsW3llc10pXSwKKyAgICBbQVNfVkFSX1NFVChDQUNIRVZBUixbbm9dKV0pCisgIF9BQ19MQU5HX1BSRUZJWFtdRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3NdKQorQVNfSUYoW3Rlc3QgeCJBU19WQVJfR0VUKENBQ0hFVkFSKSIgPSB4eWVzXSwKKyAgW200X2RlZmF1bHQoWyQyXSwgOildLAorICBbbTRfZGVmYXVsdChbJDNdLCA6KV0pCitBU19WQVJfUE9QREVGKFtDQUNIRVZBUl0pZG5sCitdKWRubCBBWF9DSEVDS19DT01QSUxFX0ZMQUdTCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NvbXBpbGVyX3ZlbmRvci5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29tcGlsZXJfdmVuZG9yLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZTMyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NvbXBpbGVyX3ZlbmRvci5tNApAQCAtMCwwICsxLDg0IEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jb21waWxlcl92ZW5kb3IuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9DT01QSUxFUl9WRU5ET1IKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBEZXRlcm1pbmUgdGhlIHZlbmRvciBvZiB0aGUgQy9DKysgY29tcGlsZXIsIGUuZy4sIGdudSwgaW50ZWwsIGlibSwgc3VuLAorIyAgIGhwLCBib3JsYW5kLCBjb21lYXUsIGRlYywgY3JheSwga2FpLCBsY2MsIG1ldHJvd2Vya3MsIHNnaSwgbWljcm9zb2Z0LAorIyAgIHdhdGNvbSwgZXRjLiBUaGUgdmVuZG9yIGlzIHJldHVybmVkIGluIHRoZSBjYWNoZSB2YXJpYWJsZQorIyAgICRheF9jdl9jX2NvbXBpbGVyX3ZlbmRvciBmb3IgQyBhbmQgJGF4X2N2X2N4eF9jb21waWxlcl92ZW5kb3IgZm9yIEMrKy4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVuakBhbHVtLm1pdC5lZHU+CisjICAgQ29weXJpZ2h0IChjKSAyMDA4IE1hdHRlbyBGcmlnbworIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCAxMQorCitBQ19ERUZVTihbQVhfQ09NUElMRVJfVkVORE9SXSwKK1tBQ19DQUNIRV9DSEVDSyhbZm9yIF9BQ19MQU5HIGNvbXBpbGVyIHZlbmRvcl0sIGF4X2N2X1tdX0FDX0xBTkdfQUJCUkVWW11fY29tcGlsZXJfdmVuZG9yLAorICBbIyBub3RlOiBkb24ndCBjaGVjayBmb3IgZ2NjIGZpcnN0IHNpbmNlIHNvbWUgb3RoZXIgY29tcGlsZXJzIGRlZmluZSBfX0dOVUNfXworICB2ZW5kb3JzPSJpbnRlbDogICAgIF9fSUNDLF9fRUNDLF9fSU5URUxfQ09NUElMRVIKKyAgICAgICAgICAgaWJtOiAgICAgICBfX3hsY19fLF9feGxDX18sX19JQk1DX18sX19JQk1DUFBfXworICAgICAgICAgICBwYXRoc2NhbGU6IF9fUEFUSENDX18sX19QQVRIU0NBTEVfXworICAgICAgICAgICBjbGFuZzogICAgIF9fY2xhbmdfXworICAgICAgICAgICBnbnU6ICAgICAgIF9fR05VQ19fCisgICAgICAgICAgIHN1bjogICAgICAgX19TVU5QUk9fQyxfX1NVTlBST19DQworICAgICAgICAgICBocDogICAgICAgIF9fSFBfY2MsX19IUF9hQ0MKKyAgICAgICAgICAgZGVjOiAgICAgICBfX0RFQ0MsX19ERUNDWFgsX19ERUNDX1ZFUixfX0RFQ0NYWF9WRVIKKyAgICAgICAgICAgYm9ybGFuZDogICBfX0JPUkxBTkRDX18sX19UVVJCT0NfXworICAgICAgICAgICBjb21lYXU6ICAgIF9fQ09NT19fCisgICAgICAgICAgIGNyYXk6ICAgICAgX0NSQVlDCisgICAgICAgICAgIGthaTogICAgICAgX19LQ0MKKyAgICAgICAgICAgbGNjOiAgICAgICBfX0xDQ19fCisgICAgICAgICAgIHNnaTogICAgICAgX19zZ2ksc2dpCisgICAgICAgICAgIG1pY3Jvc29mdDogX01TQ19WRVIKKyAgICAgICAgICAgbWV0cm93ZXJrczogX19NV0VSS1NfXworICAgICAgICAgICB3YXRjb206ICAgIF9fV0FUQ09NQ19fCisgICAgICAgICAgIHBvcnRsYW5kOiAgX19QR0kKKyAgICAgICAgICAgdW5rbm93bjogICBVTktOT1dOIgorICBmb3IgdmVudGVzdCBpbiAkdmVuZG9yczsgZG8KKyAgICBjYXNlICR2ZW50ZXN0IGluCisgICAgICAqOikgdmVuZG9yPSR2ZW50ZXN0OyBjb250aW51ZSA7OworICAgICAgKikgIHZlbmNwcD0iZGVmaW5lZCgiYGVjaG8gJHZlbnRlc3QgfCBzZWQgJ3MvLC8pIHx8IGRlZmluZWQoL2cnYCIpIiA7OworICAgIGVzYWMKKyAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKCxbCisgICAgICAjaWYgISgkdmVuY3BwKQorICAgICAgICB0aGlzaXNhbmVycm9yOworICAgICAgI2VuZGlmCisgICAgXSldLCBbYnJlYWtdKQorICBkb25lCisgIGF4X2N2X1tdX0FDX0xBTkdfQUJCUkVWW11fY29tcGlsZXJfdmVuZG9yPWBlY2hvICR2ZW5kb3IgfCBjdXQgLWQ6IC1mMWAKKyBdKQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29uZmlndXJlX2FyZ3MubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NvbmZpZ3VyZV9hcmdzLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MjZiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NvbmZpZ3VyZV9hcmdzLm00CkBAIC0wLDAgKzEsNzAgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jb25maWd1cmVfYXJncy5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0NPTkZJR1VSRV9BUkdTCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgSGVscGVyIG1hY3JvIGZvciBBWF9FTkFCTEVfQlVJTERESVIuCisjCisjICAgVGhlIHRyYWRpdGlvbmFsIHdheSBvZiBzdGFydGluZyBhIHN1YmRpci1jb25maWd1cmUgaXMgcnVubmluZyB0aGUgc2NyaXB0CisjICAgd2l0aCAkezErIiRAIn0gYnV0IHNpbmNlIGF1dG9jb25mIDIuNjAgdGhpcyBpcyBicm9rZW4uIEluc3RlYWQgd2UgaGF2ZQorIyAgIHRvIHJlbHkgb24gZXZhbCdpbmcgJGFjX2NvbmZpZ3VyZV9hcmdzIGhvd2V2ZXIgc29tZSBvbGQgYXV0b2NvbmYKKyMgICB2ZXJzaW9ucyBkbyBub3QgcHJvdmlkZSB0aGF0LiBUbyBlbnN1cmUgbWF4aW11bSBwb3J0YWJpbGl0eSBvZiBhdXRvY29uZgorIyAgIGV4dGVuc2lvbiBtYWNyb3MgdGhpcyBoZWxwZXIgY2FuIGJlIEFDX1JFUVVJUkUnZCBzbyB0aGF0CisjICAgJGFjX2NvbmZpZ3VyZV9hcmdzIHdpbGwgYWxzd2F5cyBiZSBwcmVzZW50LgorIworIyAgIFNhZGx5LCB0aGUgdHJhZGl0aW9uYWwgImV4ZWMgJFNIRUxMIiBvZiB0aGUgZW5hYmxlX2J1aWxkZGlyIG1hY3JvcyBpcworIyAgIHNwb2lsZWQgbm93IGFuZCBtdXN0IGJlIHJlcGxhY2VkIGJ5ICJldmFsICsgZXhpdCAkPyIuCisjCisjICAgRXhhbXBsZToKKyMKKyMgICAgIEFDX0RFRlVOKFtBWF9FTkFCTEVfU1VCRElSXSxbZG5sCisjICAgICAgIEFDX1JFUVVJUkUoW0FYX0NPTkZJR1VSRV9BUkdTXSlkbmwKKyMgICAgICAgZXZhbCAkU0hFTEwgJGFjX2NvbmZpZ3VyZV9hcmdzIHx8IGV4aXQgJD8KKyMgICAgICAgLi4uXSkKKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCA5CisKK0FDX0RFRlVOKFtBWF9DT05GSUdVUkVfQVJHU10sWworICAgIyBbJF1AIGlzIHVuc2FibGUgaW4gMi42MCsgYnV0IGVhcmxpZXIgYXV0b2NvbmYgaGFkIG5vIGFjX2NvbmZpZ3VyZV9hcmdzCisgICBpZiB0ZXN0ICIke2FjX2NvbmZpZ3VyZV9hcmdzK3NldH0iICE9ICJzZXQiIDsgdGhlbgorICAgICAgYWNfY29uZmlndXJlX2FyZ3M9CisgICAgICBmb3IgYWNfYXJnIGluICR7MSsiWyRdQCJ9OyBkbworICAgICAgICAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAnJGFjX2FyZyciCisgICAgICBkb25lCisgICBmaQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZW5hYmxlX2J1aWxkZGlyLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9lbmFibGVfYnVpbGRkaXIubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZiODczMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZW5hYmxlX2J1aWxkZGlyLm00CkBAIC0wLDAgKzEsMzAwIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9lbmFibGVfYnVpbGRkaXIuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9FTkFCTEVfQlVJTERESVIgWyhkaXJzdHJpbmctb3ItY29tbWFuZCBbLE1ha2VmaWxlLm1rIFssLWFsbF1dKV0KKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBJZiB0aGUgY3VycmVudCBjb25maWd1cmUgd2FzIHJ1biB3aXRoaW4gdGhlIHNyY2RpciB0aGVuIHdlIG1vdmUgYWxsCisjICAgY29uZmlndXJlLWZpbGVzIGludG8gYSBzdWJkaXIgYW5kIGxldCB0aGUgY29uZmlndXJlIHN0ZXBzIGNvbnRpbnVlCisjICAgdGhlcmUuIFdlIHByb3ZpZGUgYW4gb3B0aW9uIC0tZGlzYWJsZS1idWlsZGRpciB0byBzdXBwcmVzcyB0aGUgbW92ZSBpbnRvCisjICAgYSBzZXBhcmF0ZSBidWlsZGRpci4KKyMKKyMgICBEZWZhdWx0czoKKyMKKyMgICAgICQxID0gJGhvc3QgKG92ZXJyaWRkZW4gd2l0aCAkSE9TVCkKKyMgICAgICQyID0gTWFrZWZpbGUubWsKKyMgICAgICQzID0gLWFsbAorIworIyAgIFRoaXMgbWFjcm8gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIEFNX0lOSVRfQVVUT01BS0UuIEl0IGNyZWF0ZXMgYSBkZWZhdWx0CisjICAgdG9wbGV2ZWwgc3JjZGlyIE1ha2VmaWxlIGZyb20gdGhlIGluZm9ybWF0aW9uIGZvdW5kIGluIHRoZSBjcmVhdGVkCisjICAgdG9wbGV2ZWwgYnVpbGRkaXIgTWFrZWZpbGUuIEl0IGp1c3QgY29waWVzIHRoZSB2YXJpYWJsZXMgYW5kCisjICAgcnVsZS10YXJnZXRzLCBlYWNoIGV4dGVuZGVkIHdpdGggYSBkZWZhdWx0IHJ1bGUtZXhlY3V0aW9uIHRoYXQgcmVjdXJzZXMKKyMgICBpbnRvIHRoZSBidWlsZCBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgIkhPU1QiLiBZb3UgY2FuIG92ZXJyaWRlIHRoZQorIyAgIGF1dG8tZGVjdGlvbiB0aHJvdWdoIGBjb25maWcuZ3Vlc3NgIGFuZCBidWlsZC10aW1lIG9mIGNvdXJzZSwgYXMgaW4KKyMKKyMgICAgIG1ha2UgSE9TVD1pMzg2LW1pbmd3LWNyb3NzCisjCisjICAgd2hpY2ggY2FuIG9mIGNvdXJzZSBzZXQgYXQgY29uZmlndXJlIHRpbWUgYXMgd2VsbCB1c2luZworIworIyAgICAgY29uZmlndXJlIC0taG9zdD1pMzg2LW1pbmd3LWNyb3NzCisjCisjICAgQWZ0ZXIgdGhlIGRlZmF1bHQgaGFzIGJlZW4gY3JlYXRlZCwgYWRkaXRpb25hbCBydWxlcyBjYW4gYmUgYXBwZW5kZWQKKyMgICB0aGF0IHdpbGwgbm90IGp1c3QgcmVjdXJzZSBpbnRvIHRoZSBzdWJkaXJlY3RvcmllcyBhbmQgb25seSBldmVyIGV4aXN0CisjICAgaW4gdGhlIHNyY2RpciB0b3BsZXZlbCBtYWtlZmlsZSAtIHRoZXNlIHBhcnRzIGFyZSByZWFkIGZyb20gdGhlICQyID0KKyMgICBNYWtlZmlsZS5tayBmaWxlCisjCisjICAgVGhlIGF1dG9tYXRpYyBydWxlcyBhcmUgdXN1YWxseSBzY2FubmluZyB0aGUgdG9wbGV2ZWwgTWFrZWZpbGUgZm9yIGxpbmVzCisjICAgbGlrZSAnIyMjIyAkaG9zdCB8JGJ1aWxkZGlyJyB0byByZWNvZ25pemUgdGhlIHBsYWNlIHdoZXJlIHRvIHJlY3Vyc2UKKyMgICBpbnRvLiBVc3VhbGx5LCB0aGUgbGFzdCBvbmUgaXMgdGhlIG9ubHkgb25lIHVzZWQuIEhvd2V2ZXIsIGFsbW9zdCBhbGwKKyMgICB0YXJnZXRzIGhhdmUgYW4gYWRkaXRpb25hbCAiKi1hbGwiIHJ1bGUgd2hpY2ggbWFrZXMgdGhlIHNjcmlwdCB0bworIyAgIHJlY3Vyc2UgaW50byBfYWxsXyB2YXJpYW50cyBvZiB0aGUgY3VycmVudCBIT1NUICghISkgc2V0dGluZy4gVGhlICItYWxsIgorIyAgIHN1ZmZpeCBjYW4gYmUgb3ZlcnJpZGVuIGZvciB0aGUgbWFjcm8gYXMgd2VsbC4KKyMKKyMgICBhIHNwZWNpYWwgcnVsZSBpcyBvbmx5IGdpdmVuIGZvciB0aGluZ3MgbGlrZSAiZGlzdCIgdGhhdCB3aWxsIGNvcHkgdGhlCisjICAgdGFyYmFsbCBmcm9tIHRoZSBidWlsZGRpciB0byB0aGUgc291cmNlZGlyIChvciAkKFBVQikpIGZvciByZWFzb24gb2YKKyMgICBjb252ZW5pZW5jZS4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOSBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgorIyAgIENvcHlyaWdodCAoYykgMjAwOSBBbGFuIEplbmtpbnMgPGFsYW4tamVua2luc0B0dWZmbWFpbC5jby51az4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMjMKKworQUNfREVGVU4oW0FYX0VOQUJMRV9CVUlMRERJUl0sWworQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKVtdZG5sCitBQ19SRVFVSVJFKFtBWF9DT05GSUdVUkVfQVJHU10pW11kbmwKK0FDX1JFUVVJUkUoW0FNX0FVWF9ESVJfRVhQQU5EXSlbXWRubAorQUNfQkVGT1JFKFskMF0sW0FNX0lOSVRfQVVUT01BS0VdKWRubAorQVNfVkFSX1BVU0hERUYoW1NVQl0sW2F4X2VuYWJsZV9idWlsZGRpcl0pZG5sCitBU19WQVJfUFVTSERFRihbQVVYXSxbYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpcl0pZG5sCitBU19WQVJfUFVTSERFRihbU0VEXSxbYXhfZW5hYmxlX2J1aWxkZGlyX3NlZF0pZG5sCitTVUI9Ii4iCitBQ19BUkdfRU5BQkxFKFtidWlsZGRpcl0sIEFTX0hFTFBfU1RSSU5HKAorICBbLS1kaXNhYmxlLWJ1aWxkZGlyXSxbZGlzYWJsZSBhdXRvbWF0aWMgYnVpbGQgaW4gc3ViZGlyIG9mIHNvdXJjZXNdKQorICAsW1NVQj0iJGVuYWJsZXZhbCJdLCBbU1VCPSJhdXRvIl0pCitpZiB0ZXN0ICIuJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiICE9ICIubm8iIDsgdGhlbgoraWYgdGVzdCAiLiRzcmNkaXIiID0gIi4uIiA7IHRoZW4KKyAgaWYgdGVzdCAtZiBjb25maWcuc3RhdHVzIDsgdGhlbgorICAgIEFDX01TR19OT1RJQ0UodG9wbGV2ZWwgc3JjZGlyIGFscmVhZHkgY29uZmlndXJlZC4uLiBza2lwcGluZyBzdWJkaXIgYnVpbGQpCisgIGVsc2UKKyAgICB0ZXN0ICIuJFNVQiIgPSAiLiIgICYmIFNVQj0iLiIKKyAgICB0ZXN0ICIuJFNVQiIgPSAiLm5vIiAgJiYgU1VCPSIuIgorICAgIHRlc3QgIi4kVEFSR0VUIiA9ICIuIiAmJiBUQVJHRVQ9IiR0YXJnZXQiCisgICAgdGVzdCAiLiRTVUIiID0gIi5hdXRvIiAmJiBTVUI9Im00X2lmdmFsKFskMV0sIFskMV0sWyRUQVJHRVRdKSIKKyAgICBpZiB0ZXN0ICIuJFNVQiIgIT0gIi4uIiA7IHRoZW4gICAgIyB3ZSBrbm93IHdoZXJlIHRvIGdvIGFuZAorICAgICAgQVNfTUtESVJfUChbJFNVQl0pCisgICAgICBlY2hvIF9fLiRTVUIuX18gPiAkU1VCL2NvbmZ0ZXN0LnRtcAorICAgICAgY2QgJFNVQgorICAgICAgaWYgZ3JlcCBfXy4kU1VCLl9fIGNvbmZ0ZXN0LnRtcCA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgorICAgICAgICBybSBjb25mdGVzdC50bXAKKyAgICAgICAgQUNfTVNHX1JFU1VMVChbY29udGludWUgY29uZmlndXJlIGluIGRlZmF1bHQgYnVpbGRkaXIgIi4vJFNVQiJdKQorICAgICAgZWxzZQorICAgICAgICBBQ19NU0dfRVJST1IoW2NvdWxkIG5vdCBjaGFuZ2UgdG8gZGVmYXVsdCBidWlsZGRpciAiLi8kU1VCIl0pCisgICAgICBmaQorICAgICAgc3JjZGlyPWBlY2hvICIkU1VCIiB8CisgICAgICAgICAgICAgIHNlZCAtZSAncyxeXC4vLCw7cyxbW14vXV0kLCYvLDtzLFtbXi9dXSovLC4uLyxnO3MsW1svXV0kLCw7J2AKKyAgICAgICMgZ29pbmcgdG8gcmVzdGFydCBmcm9tIHN1YmRpcmVjdG9yeSBsb2NhdGlvbgorICAgICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZpZy5sb2cgICAmJiBtdiAkc3JjZGlyL2NvbmZpZy5sb2cgICAuCisgICAgICB0ZXN0IC1mICRzcmNkaXIvY29uZmRlZnMuaCAgICYmIG12ICRzcmNkaXIvY29uZmRlZnMuaCAgIC4KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci9jb25mdGVzdC5sb2cgJiYgbXYgJHNyY2Rpci9jb25mdGVzdC5sb2cgLgorICAgICAgdGVzdCAtZiAkc3JjZGlyLyRjYWNoZV9maWxlICAmJiBtdiAkc3JjZGlyLyRjYWNoZV9maWxlICAuCisgICAgICBBQ19NU0dfUkVTVUxUKC4uLi5leGVjICRTSEVMTCAkc3JjZGlyL1skXTAgIi0tc3JjZGlyPSRzcmNkaXIiICItLWVuYWJsZS1idWlsZGRpcj0kU1VCIiAkezErIlskXUAifSkKKyAgICAgIGNhc2UgIlskXTAiIGluICMgcmVzdGFydAorICAgICAgIFsvXFxdKikgZXZhbCAkU0hFTEwgIidbJF0wJyIgIictLXNyY2Rpcj0kc3JjZGlyJyIgIictLWVuYWJsZS1idWlsZGRpcj0kU1VCJyIgJGFjX2NvbmZpZ3VyZV9hcmdzIDs7CisgICAgICAgKikgZXZhbCAkU0hFTEwgIickc3JjZGlyL1skXTAnIiAiJy0tc3JjZGlyPSRzcmNkaXInIiAiJy0tZW5hYmxlLWJ1aWxkZGlyPSRTVUInIiAkYWNfY29uZmlndXJlX2FyZ3MgOzsKKyAgICAgIGVzYWMgOyBleGl0ICQ/CisgICAgZmkKKyAgZmkKK2ZpIGZpCit0ZXN0ICIuJFNVQiIgPSAiLmF1dG8iICYmIFNVQj0iLiIKK2RubCBhY19wYXRoX3Byb2cgdXNlcyAic2V0IGR1bW15IiB0byBvdmVycmlkZSAkQCB3aGljaCB3b3VsZCBkZWZlYXQgdGhlICJleGVjIgorQUNfUEFUSF9QUk9HKFNFRCxnc2VkIHNlZCwgc2VkKQorQVVYPSIkYW1fYXV4X2RpciIKK0FTX1ZBUl9QT1BERUYoW1NFRF0pZG5sCitBU19WQVJfUE9QREVGKFtBVVhdKWRubAorQVNfVkFSX1BPUERFRihbU1VCXSlkbmwKK0FDX0NPTkZJR19DT01NQU5EUyhbYnVpbGRpcl0sW2RubCAuLi4uLi4uLi4uLi4uLiBjb25maWcuc3RhdHVzIC4uLi4uLi4uLi4uLi4uCitBU19WQVJfUFVTSERFRihbU1VCXSxbYXhfZW5hYmxlX2J1aWxkZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtUT1BdLFt0b3Bfc3JjZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtTUkNdLFthY190b3Bfc3JjZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtBVVhdLFtheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtTRURdLFtheF9lbmFibGVfYnVpbGRkaXJfc2VkXSlkbmwKK3B1c2hkZWYoW0VORF0sW01ha2VmaWxlLm1rXSlkbmwKK3B1c2hkZWYoW19BTExdLFtpZmVsc2UoWyQzXSwsWy1hbGxdLFskM10pXSlkbmwKKyAgU1JDPSIkYXhfZW5hYmxlX2J1aWxkZGlyX3NyY2RpciIKKyAgaWYgdGVzdCAiLiRTVUIiID0gIi4uIiA7IHRoZW4KKyAgICBpZiB0ZXN0IC1mICIkVE9QL01ha2VmaWxlIiA7IHRoZW4KKyAgICAgIEFDX01TR19OT1RJQ0UoW3NraXBwaW5nIFRPUC9NYWtlZmlsZSAtIGxlZnQgdW50b3VjaGVkXSkKKyAgICBlbHNlCisgICAgICBBQ19NU0dfTk9USUNFKFtza2lwcGluZyBUT1AvTWFrZWZpbGUgLSBub3QgY3JlYXRlZF0pCisgICAgZmkKKyAgZWxzZQorICAgIGlmIHRlc3QgLWYgIiRTUkMvTWFrZWZpbGUiIDsgdGhlbgorICAgICAgYT1gZ3JlcCAiXlZFUlNJT04gIiAiJFNSQy9NYWtlZmlsZSJgIDsgYj1gZ3JlcCAiXlZFUlNJT04gIiBNYWtlZmlsZWAKKyAgICAgIHRlc3QgIiRhIiAhPSAiJGIiICYmIHJtICIkU1JDL01ha2VmaWxlIgorICAgIGZpCisgICAgaWYgdGVzdCAtZiAiJFNSQy9NYWtlZmlsZSIgOyB0aGVuCisJZWNobyAiJFNSQy9NYWtlZmlsZSA6ICRTUkMvTWFrZWZpbGUuaW4iID4gJHRtcC9jb25mdGVtcC5taworCWVjaG8gIglbXUAgZWNobyAnUkVNT1ZFRCwsLCcgPlwkW11AIiA+PiAkdG1wL2NvbmZ0ZW1wLm1rCisgICAgICBldmFsICIke01BS0UtbWFrZX0gLWYgJHRtcC9jb25mdGVtcC5tayAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIgorICAgICAgaWYgZ3JlcCAnXlJFTU9WRUQsLCwnICIkU1JDL01ha2VmaWxlIiA+L2Rldi9udWxsCisgICAgICB0aGVuIHJtICRTUkMvTWFrZWZpbGUgOyBmaQorICAgICAgY3AgJHRtcC9jb25mdGVtcC5tayAkU1JDL21ha2VmaWxlcy5ta34gICAgICAjIyBERUJVR0dJTkcKKyAgICBmaQorICAgIGlmIHRlc3QgISAtZiAiJFNSQy9NYWtlZmlsZSIgOyB0aGVuCisgICAgICBBQ19NU0dfTk9USUNFKFtjcmVhdGUgVE9QL01ha2VmaWxlIGd1ZXNzZWQgZnJvbSBsb2NhbCBNYWtlZmlsZV0pCisgICAgICB4PSdgJyA7IGNhdCA+JHRtcC9jb25mdGVtcC5zZWQgPDxfRU9GCisvXlwkL24KK3gKKy9eXCQvYlMKK3gKKy9cXFxcXCQve0g7ZDt9Cit7SDtzLy4qLy87eDt9CitiTQorOlMKK3gKKy9cXFxcXCQve2g7ZDt9Cit7aDtzLy4qLy87eDt9Cis6TQorcy9cXChcXG5cXCkJL1xcMSAvZworL14JL2QKKy9eW1sJIF1dKltbXFwjXV0vZAorL15WUEFUSCAqPS9kCitzL15zcmNkaXIgKj0uKi9zcmNkaXIgPSAuLworcy9edG9wX3NyY2RpciAqPS4qL3RvcF9zcmNkaXIgPSAuLworL1tbOj1dXS8hZAorL15cXC4vZAorZG5sIE5vdyBoYW5kbGUgcnVsZXMgKGkuZS4gbGluZXMgY29udGFpbmluZyAiOiIgYnV0IG5vdCAiID0gIikuCisvID0gL2IKKy8gLj0gL2IKKy86LyFiCitzLzouKi86Lworcy8gLyAgL2cKK3MvIFxcKFtbYS16XV1bW2Etei1dXSpbW2EtekEtWjAtOV1dXFwpXFwoW1sgOl1dXFwpLyBcXDEgXFwxW11fQUxMXFwyL2cKK3MvXlxcKFtbYS16XV1bW2Etei1dXSpbW2EtekEtWjAtOV1dXFwpXFwoW1sgOl1dXFwpL1xcMSBcXDFbXV9BTExcXDIvCitzLyAgLyAvZworL15hbGwgYWxsW11fQUxMW1sgOl1dL2lcXAorYWxsLWNvbmZpZ3VyZWQgOiBhbGxbXV9BTEwKK2RubCBkaXN0LWFsbCBleGlzdHMuLi4gYW5kIHdvdWxkIG1ha2UgZm9yIGRpc3QtYWxsLWFsbAorcy8gW1thLXpBLVowLTktXV0qW11fQUxMIFtbYS16QS1aMC05LV1dKltdX0FMTFtdX0FMTC8vZworL1tdX0FMTFtdX0FMTC9kCithXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJEFVWC9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IHVzZT0keCBiYXNlbmFtZSAiXCRcQCIgX0FMTCAkeDsgbj0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRuICogXCRcQCI7IGlmIHRlc3QgIlwkXCRuIiAtZXEgIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMuKnwiIE1ha2VmaWxlIHx0YWlsIC0xfCBzZWQgLWUgJ3MvLip8Ly8nICR4IDsgZmkgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEJVSUxEIiA9ICIuIiAmJiBCVUlMRD0iLiIgXFxcXFxcCisJOyB0ZXN0ICJcJFwkdXNlIiA9ICJcJFxAIiAmJiBCVUlMRD0keCBlY2hvICJcJFwkQlVJTEQiIHwgdGFpbCAtMSAkeCBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyAoY2QgIlwkXCRpIiAmJiB0ZXN0ICEgLWYgY29uZmlndXJlICYmIFwkKE1BS0UpIFwkXCR1c2UpIHx8IGV4aXQ7IGRvbmUKK2RubCBzcGVjaWFsIHJ1bGUgYWRkLW9uOiAiZGlzdCIgY29waWVzIHRoZSB0YXJiYWxsIHRvICQoUFVCKS4gKHNvdXJjZSB0cmVlKQorL2Rpc3RbXV9BTEwgKjovYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoICRBVVgvY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgXCRcJEhPU1QgIiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmb3VuZD0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRmb3VuZCBcJChQQUNLQUdFKS1cJChWRVJTSU9OKS50YXIuKiIgXFxcXFxcCisJOyBpZiB0ZXN0ICJcJFwkZm91bmQiIC1lcSAiMCIgOyB0aGVuIDogXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyAuKnwiIE1ha2VmaWxlIHx0YWlsIC0xfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgZmkgOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZm9yIGYgaW4gXCRcJGkvXCQoUEFDS0FHRSktXCQoVkVSU0lPTikudGFyLiogXFxcXFxcCisJOyBkbyB0ZXN0IC1mICJcJFwkZiIgJiYgbXYgIlwkXCRmIiBcJChQVUIpLiA7IGRvbmUgOyBicmVhayA7IGRvbmUKK2RubCBzcGVjaWFsIHJ1bGUgYWRkLW9uOiAiZGlzdC1mb28iIGNvcGllcyBhbGwgdGhlIGFyY2hpdmVzIHRvICQoUFVCKS4gKHNvdXJjZSB0cmVlKQorL2Rpc3QtW1thLXpBLVowLTldXSpbXV9BTEwgKjovYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoIC4vY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgXCRcJEhPU1QgIiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmb3VuZD0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRmb3VuZCBcJChQQUNLQUdFKS1cJChWRVJTSU9OKS4qIiBcXFxcXFwKKwk7IGlmIHRlc3QgIlwkXCRmb3VuZCIgLWVxICIwIiA7IHRoZW4gOiBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIC4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmaSA7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBmb3IgZiBpbiBcJFwkaS9cJChQQUNLQUdFKS1cJChWRVJTSU9OKS4qIFxcXFxcXAorCTsgZG8gdGVzdCAtZiAiXCRcJGYiICYmIG12ICJcJFwkZiIgXCQoUFVCKS4gOyBkb25lIDsgYnJlYWsgOyBkb25lCitkbmwgc3BlY2lhbCBydWxlIGFkZC1vbjogImRpc3RjbGVhbiIgcmVtb3ZlcyBhbGwgbG9jYWwgYnVpbGRkaXJzIGNvbXBsZXRlbHkKKy9kaXN0Y2xlYW5bXV9BTEwgKjovYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoICRBVVgvY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyB1c2U9JHggYmFzZW5hbWUgIlwkXEAiIF9BTEwgJHg7IG49JHggZWNobyBcJFwkQlVJTEQgfCB3YyAtdyAkeCBcXFxcXFwKKwk7IGVjaG8gIk1BS0UgXCRcJEhPU1QgOiBcJFwkbiAqIFwkXEAgKGFsbCBsb2NhbCBidWlsZHMpIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkQlVJTEQiID0gIi4iICYmIEJVSUxEPSIuIiBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICIjIHJtIC1yIFwkXCRpIjsgZG9uZSA7IGVjaG8gIiMgKHNsZWVwIDMpIiA7IHNsZWVwIDMgXFxcXFxcCisJOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAiXCRcJGkiIHwgZ3JlcCAiXi8iID4gL2Rldi9udWxsICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAiXCRcJGkiIHwgZ3JlcCAiXi4uLyIgPiAvZGV2L251bGwgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJybSAtciBcJFwkaSI7IChybSAtciAiXCRcJGkiKSA7IGRvbmUgOyBybSBNYWtlZmlsZQorX0VPRgorICAgICAgY3AgIiR0bXAvY29uZnRlbXAuc2VkIiAiJFNSQy9tYWtlZmlsZS5zZWR+IiAgICAgICAgICAgICMjIERFQlVHR0lORworICAgICAgJFNFRCAtZiAkdG1wL2NvbmZ0ZW1wLnNlZCBNYWtlZmlsZSA+JFNSQy9NYWtlZmlsZQorICAgICAgaWYgdGVzdCAtZiAiJFNSQy9tNF9pZnZhbChbJDJdLFskMl0sW0VORF0pIiA7IHRoZW4KKyAgICAgICAgQUNfTVNHX05PVElDRShbZXh0ZW5kIFRPUC9NYWtlZmlsZSB3aXRoIFRPUC9tNF9pZnZhbChbJDJdLFskMl0sW0VORF0pXSkKKyAgICAgICAgY2F0ICRTUkMvRU5EID4+JFNSQy9NYWtlZmlsZQorICAgICAgZmkgOyB4eHh4PSIjIyMjIgorICAgICAgZWNobyAiJHh4eHggQ09ORklHVVJBVElPTlMgRk9SIFRPUExFVkVMIE1BS0VGSUxFOiAiID4+JFNSQy9NYWtlZmlsZQorICAgICAgIyBzYW5pdHkgY2hlY2sKKyAgICAgIGlmIGdyZXAgJ147IGVjaG8gIk1BS0UgJyAkU1JDL01ha2VmaWxlID4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIEFDX01TR19OT1RJQ0UoW2J1Z2d5IHNlZCBmb3VuZCAtIGl0IGRlbGV0ZXMgdGFiIGluICJhIiB0ZXh0IHBhcnRzXSkKKyAgICAgICAgJFNFRCAtZSAnL15AIEhPU1Q9L3MvXi8JLycgLWUgJy9eOyAvcy9eLwkvJyAkU1JDL01ha2VmaWxlIFwKKyAgICAgICAgICA+JFNSQy9NYWtlZmlsZX4KKyAgICAgICAgKHRlc3QgLXMgJFNSQy9NYWtlZmlsZX4gJiYgbXYgJFNSQy9NYWtlZmlsZX4gJFNSQy9NYWtlZmlsZSkgMj4vZGV2L251bGwKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgeHh4eD0iXFwjXFwjXFwjXFwjIgorICAgICAgIyBlY2hvICIvXiR4eHh4ICokYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QgL2QiID4kdG1wL2NvbmZ0ZW1wLnNlZAorICAgICAgZWNobyAicyFeJHh4eHggW1tefF1dKiB8ICokU1VCICpcJCEkeHh4eCAuLi4uLi4gJFNVQiEiID4kdG1wL2NvbmZ0ZW1wLnNlZAorICAgICAgJFNFRCAtZiAiJHRtcC9jb25mdGVtcC5zZWQiICIkU1JDL01ha2VmaWxlIiA+JHRtcC9ta2ZpbGUudG1wCisgICAgICAgIGNwICIkdG1wL2NvbmZ0ZW1wLnNlZCIgIiRTUkMvbWFrZWZpbGVzLnNlZH4iICAgICAgICAgIyMgREVCVUdHSU5HCisgICAgICAgIGNwICIkdG1wL21rZmlsZS50bXAiICAgIiRTUkMvbWFrZWZpbGVzLm91dH4iICAgICAgICAgIyMgREVCVUdHSU5HCisgICAgICBpZiBjbXAgLXMgIiRTUkMvTWFrZWZpbGUiICIkdG1wL21rZmlsZS50bXAiIDI+L2Rldi9udWxsIDsgdGhlbgorICAgICAgICBBQ19NU0dfTk9USUNFKFtrZWVwaW5nIFRPUC9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlXSkKKyAgICAgICAgcm0gIiR0bXAvbWtmaWxlLnRtcCIKKyAgICAgIGVsc2UKKyAgICAgICAgQUNfTVNHX05PVElDRShbcmV1c2luZyBUT1AvTWFrZWZpbGUgZnJvbSBlYXJsaWVyIGNvbmZpZ3VyZV0pCisgICAgICAgIG12ICIkdG1wL21rZmlsZS50bXAiICIkU1JDL01ha2VmaWxlIgorICAgICAgZmkKKyAgICBmaQorICAgIEFDX01TR19OT1RJQ0UoW2J1aWxkIGluICRTVUIgKEhPU1Q9JGF4X2VuYWJsZV9idWlsZGRpcl9ob3N0KV0pCisgICAgeHh4eD0iIyMjIyIKKyAgICBlY2hvICIkeHh4eCIgIiRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCIgInwkU1VCIiA+PiRTUkMvTWFrZWZpbGUKKyAgZmkKK3BvcGRlZihbRU5EXSlkbmwKK0FTX1ZBUl9QT1BERUYoW1NFRF0pZG5sCitBU19WQVJfUE9QREVGKFtBVVhdKWRubAorQVNfVkFSX1BPUERFRihbU1JDXSlkbmwKK0FTX1ZBUl9QT1BERUYoW1RPUF0pZG5sCitBU19WQVJfUE9QREVGKFtTVUJdKWRubAorXSxbZG5sCitheF9lbmFibGVfYnVpbGRkaXJfc3JjZGlyPSIkc3JjZGlyIiAgICAgICAgICAgICAgICAgICAgIyAkc3JjZGlyCitheF9lbmFibGVfYnVpbGRkaXJfaG9zdD0iJEhPU1QiICAgICAgICAgICAgICAgICAgICAgICAgIyAkSE9TVCAvICRob3N0CitheF9lbmFibGVfYnVpbGRkaXJfdmVyc2lvbj0iJFZFUlNJT04iICAgICAgICAgICAgICAgICAgIyAkVkVSU0lPTgorYXhfZW5hYmxlX2J1aWxkZGlyX3BhY2thZ2U9IiRQQUNLQUdFIiAgICAgICAgICAgICAgICAgICMgJFBBQ0tBR0UKK2F4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXI9IiRheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyIiAjICRBVVgKK2F4X2VuYWJsZV9idWlsZGRpcl9zZWQ9IiRheF9lbmFibGVfYnVpbGRkaXJfc2VkIiAgICAgICAjICRTRUQKK2F4X2VuYWJsZV9idWlsZGRpcj0iJGF4X2VuYWJsZV9idWlsZGRpciIgICAgICAgICAgICAgICAjICRTVUIKK10pZG5sCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9nY2NfYXJjaGZsYWcubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2djY19hcmNoZmxhZy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjExYmFiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9nY2NfYXJjaGZsYWcubTQKQEAgLTAsMCArMSwyMTUgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfZ2NjX2FyY2hmbGFnLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfR0NDX0FSQ0hGTEFHKFtQT1JUQUJMRT9dLCBbQUNUSU9OLVNVQ0NFU1NdLCBbQUNUSU9OLUZBSUxVUkVdKQorIworIyBERVNDUklQVElPTgorIworIyAgIFRoaXMgbWFjcm8gdHJpZXMgdG8gZ3Vlc3MgdGhlICJuYXRpdmUiIGFyY2ggY29ycmVzcG9uZGluZyB0byB0aGUgdGFyZ2V0CisjICAgYXJjaGl0ZWN0dXJlIGZvciB1c2Ugd2l0aCBnY2MncyAtbWFyY2g9YXJjaCBvciAtbXR1bmU9YXJjaCBmbGFncy4gSWYKKyMgICBmb3VuZCwgdGhlIGNhY2hlIHZhcmlhYmxlICRheF9jdl9nY2NfYXJjaGZsYWcgaXMgc2V0IHRvIHRoaXMgZmxhZyBhbmQKKyMgICBBQ1RJT04tU1VDQ0VTUyBpcyBleGVjdXRlZDsgb3RoZXJ3aXNlICRheF9jdl9nY2NfYXJjaGZsYWcgaXMgc2V0IHRvCisjICAgInVua25vd24iIGFuZCBBQ1RJT04tRkFJTFVSRSBpcyBleGVjdXRlZC4gVGhlIGRlZmF1bHQgQUNUSU9OLVNVQ0NFU1MgaXMKKyMgICB0byBhZGQgJGF4X2N2X2djY19hcmNoZmxhZyB0byB0aGUgZW5kIG9mICRDRkxBR1MuCisjCisjICAgUE9SVEFCTEU/IHNob3VsZCBiZSBlaXRoZXIgW3llc10gKGRlZmF1bHQpIG9yIFtub10uIEluIHRoZSBmb3JtZXIgY2FzZSwKKyMgICB0aGUgZmxhZyBpcyBzZXQgdG8gLW10dW5lIChvciBlcXVpdmFsZW50KSBzbyB0aGF0IHRoZSBhcmNoaXRlY3R1cmUgaXMKKyMgICBvbmx5IHVzZWQgZm9yIHR1bmluZywgYnV0IHRoZSBpbnN0cnVjdGlvbiBzZXQgdXNlZCBpcyBzdGlsbCBwb3J0YWJsZS4gSW4KKyMgICB0aGUgbGF0dGVyIGNhc2UsIHRoZSBmbGFnIGlzIHNldCB0byAtbWFyY2ggKG9yIGVxdWl2YWxlbnQpIHNvIHRoYXQKKyMgICBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIGFyZSBlbmFibGVkLgorIworIyAgIFRoZSB1c2VyIGNhbiBzcGVjaWZ5IC0td2l0aC1nY2MtYXJjaD08YXJjaD4gaW4gb3JkZXIgdG8gb3ZlcnJpZGUgdGhlCisjICAgbWFjcm8ncyBjaG9pY2Ugb2YgYXJjaGl0ZWN0dXJlLCBvciAtLXdpdGhvdXQtZ2NjLWFyY2ggdG8gZGlzYWJsZSB0aGlzLgorIworIyAgIFdoZW4gY3Jvc3MtY29tcGlsaW5nLCBvciBpZiAkQ0MgaXMgbm90IGdjYywgdGhlbiBBQ1RJT04tRkFJTFVSRSBpcworIyAgIGNhbGxlZCB1bmxlc3MgdGhlIHVzZXIgc3BlY2lmaWVkIC0td2l0aC1nY2MtYXJjaCBtYW51YWxseS4KKyMKKyMgICBSZXF1aXJlcyBtYWNyb3M6IEFYX0NIRUNLX0NPTVBJTEVfRkxBRywgQVhfR0NDX1g4Nl9DUFVJRAorIworIyAgIChUaGUgbWFpbiBlbXBoYXNpcyBoZXJlIGlzIG9uIHJlY2VudCBDUFVzLCBvbiB0aGUgcHJpbmNpcGxlIHRoYXQgZG9pbmcKKyMgICBoaWdoLXBlcmZvcm1hbmNlIGNvbXB1dGluZyBvbiBvbGQgaGFyZHdhcmUgaXMgdW5jb21tb24uKQorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggTWF0dGVvIEZyaWdvCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDEwCisKK0FDX0RFRlVOKFtBWF9HQ0NfQVJDSEZMQUddLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorCitBQ19BUkdfV0lUSChnY2MtYXJjaCwgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtZ2NjLWFyY2g9PGFyY2g+XSwgW3VzZSBhcmNoaXRlY3R1cmUgPGFyY2g+IGZvciBnY2MgLW1hcmNoLy1tdHVuZSwgaW5zdGVhZCBvZiBndWVzc2luZ10pXSwKKwlheF9nY2NfYXJjaD0kd2l0aHZhbCwgYXhfZ2NjX2FyY2g9eWVzKQorCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnY2MgYXJjaGl0ZWN0dXJlIGZsYWddKQorQUNfTVNHX1JFU1VMVChbXSkKK0FDX0NBQ0hFX1ZBTChheF9jdl9nY2NfYXJjaGZsYWcsCitbCitheF9jdl9nY2NfYXJjaGZsYWc9InVua25vd24iCisKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisKK2lmIHRlc3QgIngkYXhfZ2NjX2FyY2giID0geHllczsgdGhlbgorYXhfZ2NjX2FyY2g9IiIKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbm87IHRoZW4KK2Nhc2UgJGhvc3RfY3B1IGluCisgIGlbWzM0NTZdXTg2Knx4ODZfNjQqKSAjIHVzZSBjcHVpZCBjb2RlcywgaW4gcGFydCBmcm9tIHg4NmluZm8tMS43IGJ5IEQuIEpvbmVzCisgICAgIEFYX0dDQ19YODZfQ1BVSUQoMCkKKyAgICAgQVhfR0NDX1g4Nl9DUFVJRCgxKQorICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzAgaW4KKyAgICAgICAqOjc1NmU2NTQ3Oio6KikgIyBJbnRlbAorICAgICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorCSAgICAqNVtbNDhdXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtLW1teCBwZW50aXVtIiA7OworCSAgICAqNT8/Oio6KjoqKSBheF9nY2NfYXJjaD1wZW50aXVtIDs7CisJICAgICo2W1szNDU2XV0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTIgcGVudGl1bXBybyIgOzsKKwkgICAgKjZhPzoqW1swMV1dOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0yIHBlbnRpdW1wcm8iIDs7CisJICAgICo2YT86KltbMjM0XV06KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTMgcGVudGl1bXBybyIgOzsKKwkgICAgKjZbWzlkXV0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bS1tIHBlbnRpdW0zIHBlbnRpdW1wcm8iIDs7CisJICAgICo2W1s3OGJdXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMyBwZW50aXVtcHJvIiA7OworCSAgICAqNj8/Oio6KjoqKSBheF9nY2NfYXJjaD1wZW50aXVtcHJvIDs7CisgICAgICAgICAgICAqZjNbWzM0N11dOio6KjoqfCpmNFsxMzQ3XToqOio6KikKKwkJY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgICAgICAgICAgICAgIHg4Nl82NCopIGF4X2djY19hcmNoPSJub2NvbmEgcGVudGl1bTQgcGVudGl1bXBybyIgOzsKKyAgICAgICAgICAgICAgICAgICopIGF4X2djY19hcmNoPSJwcmVzY290dCBwZW50aXVtNCBwZW50aXVtcHJvIiA7OworICAgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICAgICpmPz86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtNCBwZW50aXVtcHJvIjs7CisgICAgICAgICAgZXNhYyA7OworICAgICAgICo6Njg3NDc1NDE6KjoqKSAjIEFNRAorICAgICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorCSAgICAqNVtbNjddXT86KjoqOiopIGF4X2djY19hcmNoPWs2IDs7CisJICAgICo1W1s4ZF1dPzoqOio6KikgYXhfZ2NjX2FyY2g9Ims2LTIgazYiIDs7CisJICAgICo1W1s5XV0/Oio6KjoqKSBheF9nY2NfYXJjaD0iazYtMyBrNiIgOzsKKwkgICAgKjYwPzoqOio6KikgYXhfZ2NjX2FyY2g9azcgOzsKKwkgICAgKjZbWzEyXV0/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uIGs3IiA7OworCSAgICAqNltbMzRdXT86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24tdGJpcmQgazciIDs7CisJICAgICo2Nz86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24tNCBhdGhsb24gazciIDs7CisJICAgICo2W1s2OGFdXT86KjoqOiopCisJICAgICAgIEFYX0dDQ19YODZfQ1BVSUQoMHg4MDAwMDAwNikgIyBMMiBjYWNoZSBzaXplCisJICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNiBpbgorICAgICAgICAgICAgICAgICAqOio6KltbMS05YS1mXV0/Pz8/Pz86KikgIyAoTDIgPSBlY3ggPj4gMTYpID49IDI1NgorCQkJYXhfZ2NjX2FyY2g9ImF0aGxvbi14cCBhdGhsb24tNCBhdGhsb24gazciIDs7CisgICAgICAgICAgICAgICAgICopIGF4X2djY19hcmNoPSJhdGhsb24tNCBhdGhsb24gazciIDs7CisJICAgICAgIGVzYWMgOzsKKwkgICAgKmZbWzRjZWY4Yl1dPzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbjY0IGs4IiA7OworCSAgICAqZjU/Oio6KjoqKSBheF9nY2NfYXJjaD0ib3B0ZXJvbiBrOCIgOzsKKwkgICAgKmY3PzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbi1meCBvcHRlcm9uIGs4IiA7OworCSAgICAqZj8/Oio6KjoqKSBheF9nY2NfYXJjaD0iazgiIDs7CisgICAgICAgICAgZXNhYyA7OworCSo6NzQ2ZTY1NDM6KjoqKSAjIElEVAorCSAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorCSAgICAgKjU0PzoqOio6KikgYXhfZ2NjX2FyY2g9d2luY2hpcC1jNiA7OworCSAgICAgKjU4PzoqOio6KikgYXhfZ2NjX2FyY2g9d2luY2hpcDIgOzsKKwkgICAgICo2W1s3OF1dPzoqOio6KikgYXhfZ2NjX2FyY2g9YzMgOzsKKwkgICAgICo2OT86KjoqOiopIGF4X2djY19hcmNoPSJjMy0yIGMzIiA7OworCSAgIGVzYWMgOzsKKyAgICAgZXNhYworICAgICBpZiB0ZXN0IHgiJGF4X2djY19hcmNoIiA9IHg7IHRoZW4gIyBmYWxsYmFjaworCWNhc2UgJGhvc3RfY3B1IGluCisJICBpNTg2KikgYXhfZ2NjX2FyY2g9cGVudGl1bSA7OworCSAgaTY4NiopIGF4X2djY19hcmNoPXBlbnRpdW1wcm8gOzsKKyAgICAgICAgZXNhYworICAgICBmaQorICAgICA7OworCisgIHNwYXJjKikKKyAgICAgQUNfUEFUSF9QUk9HKFtQUlRESUFHXSwgW3BydGRpYWddLCBbcHJ0ZGlhZ10sIFskUEFUSDovdXNyL3BsYXRmb3JtL2B1bmFtZSAtaWAvc2Jpbi86L3Vzci9wbGF0Zm9ybS9gdW5hbWUgLW1gL3NiaW4vXSkKKyAgICAgY3B1dHlwZT1gKCgoZ3JlcCBjcHUgL3Byb2MvY3B1aW5mbyB8IGN1dCAtZDogLWYyKSA7ICgkUFJURElBRyAtdiB8Z3JlcCAtaSBzcGFyYykgOyBncmVwIC1pIGNwdSAvdmFyL3J1bi9kbWVzZy5ib290ICkgfCBoZWFkIC1uIDEpIDI+IC9kZXYvbnVsbGAKKyAgICAgY3B1dHlwZT1gZWNobyAiJGNwdXR5cGUiIHwgdHIgLWQgJyAtJyB8dHIgJGFzX2NyX0xFVFRFUlMgJGFzX2NyX2xldHRlcnNgCisgICAgIGNhc2UgJGNwdXR5cGUgaW4KKyAgICAgICAgICp1bHRyYXNwYXJjaXYqKSBheF9nY2NfYXJjaD0idWx0cmFzcGFyYzQgdWx0cmFzcGFyYzMgdWx0cmFzcGFyYyB2OSIgOzsKKyAgICAgICAgICp1bHRyYXNwYXJjaWlpKikgYXhfZ2NjX2FyY2g9InVsdHJhc3BhcmMzIHVsdHJhc3BhcmMgdjkiIDs7CisgICAgICAgICAqdWx0cmFzcGFyYyopIGF4X2djY19hcmNoPSJ1bHRyYXNwYXJjIHY5IiA7OworICAgICAgICAgKnN1cGVyc3BhcmMqfCp0bXMzOTB6NVtbMDVdXSopIGF4X2djY19hcmNoPSJzdXBlcnNwYXJjIHY4IiA7OworICAgICAgICAgKmh5cGVyc3BhcmMqfCpydDYyW1swNTZdXSopIGF4X2djY19hcmNoPSJoeXBlcnNwYXJjIHY4IiA7OworICAgICAgICAgKmN5cHJlc3MqKSBheF9nY2NfYXJjaD1jeXByZXNzIDs7CisgICAgIGVzYWMgOzsKKworICBhbHBoYWV2NSkgYXhfZ2NjX2FyY2g9ZXY1IDs7CisgIGFscGhhZXY1NikgYXhfZ2NjX2FyY2g9ZXY1NiA7OworICBhbHBoYXBjYTU2KSBheF9nY2NfYXJjaD0icGNhNTYgZXY1NiIgOzsKKyAgYWxwaGFwY2E1NykgYXhfZ2NjX2FyY2g9InBjYTU3IHBjYTU2IGV2NTYiIDs7CisgIGFscGhhZXY2KSBheF9nY2NfYXJjaD1ldjYgOzsKKyAgYWxwaGFldjY3KSBheF9nY2NfYXJjaD1ldjY3IDs7CisgIGFscGhhZXY2OCkgYXhfZ2NjX2FyY2g9ImV2NjggZXY2NyIgOzsKKyAgYWxwaGFldjY5KSBheF9nY2NfYXJjaD0iZXY2OSBldjY4IGV2NjciIDs7CisgIGFscGhhZXY3KSBheF9nY2NfYXJjaD0iZXY3IGV2NjkgZXY2OCBldjY3IiA7OworICBhbHBoYWV2NzkpIGF4X2djY19hcmNoPSJldjc5IGV2NyBldjY5IGV2NjggZXY2NyIgOzsKKworICBwb3dlcnBjKikKKyAgICAgY3B1dHlwZT1gKChncmVwIGNwdSAvcHJvYy9jcHVpbmZvIHwgaGVhZCAtbiAxIHwgY3V0IC1kOiAtZjIgfCBjdXQgLWQsIC1mMSB8IHNlZCAncy8gLy9nJykgOyAvdXNyL2Jpbi9tYWNoaW5lIDsgL2Jpbi9tYWNoaW5lOyBncmVwIENQVSAvdmFyL3J1bi9kbWVzZy5ib290IHwgaGVhZCAtbiAxIHwgY3V0IC1kIiAiIC1mMikgMj4gL2Rldi9udWxsYAorICAgICBjcHV0eXBlPWBlY2hvICRjcHV0eXBlIHwgc2VkIC1lICdzL3BwYy8vZztzLyAqLy9nJ2AKKyAgICAgY2FzZSAkY3B1dHlwZSBpbgorICAgICAgICo3NTAqKSBheF9nY2NfYXJjaD0iNzUwIEczIiA7OworICAgICAgICo3NDBbWzAtOV1dKikgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIDc0MDAgRzQiIDs7CisgICAgICAgKjc0W1s0LTVdXVtbMC05XV0qKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgNzQ1MCBHNCIgOzsKKyAgICAgICAqNzRbWzAtOV1dW1swLTldXSopIGF4X2djY19hcmNoPSIkY3B1dHlwZSBHNCIgOzsKKyAgICAgICAqOTcwKikgYXhfZ2NjX2FyY2g9Ijk3MCBHNSBwb3dlcjQiOzsKKyAgICAgICAqUE9XRVI0KnwqcG93ZXI0KnwqZ3EqKSBheF9nY2NfYXJjaD0icG93ZXI0IDk3MCI7OworICAgICAgICpQT1dFUjUqfCpwb3dlcjUqfCpncip8KmdzKikgYXhfZ2NjX2FyY2g9InBvd2VyNSBwb3dlcjQgOTcwIjs7CisgICAgICAgNjAzZXZ8ODI0MCkgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIDYwM2UgNjAzIjs7CisgICAgICAgKikgYXhfZ2NjX2FyY2g9JGNwdXR5cGUgOzsKKyAgICAgZXNhYworICAgICBheF9nY2NfYXJjaD0iJGF4X2djY19hcmNoIHBvd2VycGMiCisgICAgIDs7Citlc2FjCitmaSAjIG5vdCBjcm9zcy1jb21waWxpbmcKK2ZpICMgZ3Vlc3MgYXJjaAorCitpZiB0ZXN0ICJ4JGF4X2djY19hcmNoIiAhPSB4IC1hICJ4JGF4X2djY19hcmNoIiAhPSB4bm87IHRoZW4KK2ZvciBhcmNoIGluICRheF9nY2NfYXJjaDsgZG8KKyAgaWYgdGVzdCAieFtdbTRfZGVmYXVsdChbJDFdLHllcykiID0geHllczsgdGhlbiAjIGlmIHdlIHJlcXVpcmUgcG9ydGFibGUgY29kZQorICAgIGZsYWdzPSItbXR1bmU9JGFyY2giCisgICAgIyAtbWNwdT0kYXJjaCBhbmQgbSRhcmNoIGdlbmVyYXRlIG5vbnBvcnRhYmxlIGNvZGUgb24gZXZlcnkgYXJjaCBleGNlcHQKKyAgICAjIHg4Ni4gIEFuZCBzb21lIG90aGVyIGFyY2hlcyAoZS5nLiBBbHBoYSkgZG9uJ3QgYWNjZXB0IC1tdHVuZS4gIEdycnIuCisgICAgY2FzZSAkaG9zdF9jcHUgaW4gaSo4Nnx4ODZfNjQqKSBmbGFncz0iJGZsYWdzIC1tY3B1PSRhcmNoIC1tJGFyY2giOzsgZXNhYworICBlbHNlCisgICAgZmxhZ3M9Ii1tYXJjaD0kYXJjaCAtbWNwdT0kYXJjaCAtbSRhcmNoIgorICBmaQorICBmb3IgZmxhZyBpbiAkZmxhZ3M7IGRvCisgICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKCRmbGFnLCBbYXhfY3ZfZ2NjX2FyY2hmbGFnPSRmbGFnOyBicmVha10pCisgIGRvbmUKKyAgdGVzdCAieCRheF9jdl9nY2NfYXJjaGZsYWciID0geHVua25vd24gfHwgYnJlYWsKK2RvbmUKK2ZpCisKK2ZpICMgJEdDQz15ZXMKK10pCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnY2MgYXJjaGl0ZWN0dXJlIGZsYWddKQorQUNfTVNHX1JFU1VMVCgkYXhfY3ZfZ2NjX2FyY2hmbGFnKQoraWYgdGVzdCAieCRheF9jdl9nY2NfYXJjaGZsYWciID0geHVua25vd247IHRoZW4KKyAgbTRfZGVmYXVsdChbJDNdLDopCitlbHNlCisgIG00X2RlZmF1bHQoWyQyXSwgW0NGTEFHUz0iJENGTEFHUyAkYXhfY3ZfZ2NjX2FyY2hmbGFnIl0pCitmaQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZ2NjX3g4Nl9jcHVpZC5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZ2NjX3g4Nl9jcHVpZC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDQ2ZmVlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9nY2NfeDg2X2NwdWlkLm00CkBAIC0wLDAgKzEsNzkgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9nY2NfeDg2X2NwdWlkLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfR0NDX1g4Nl9DUFVJRChPUCkKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBPbiBQZW50aXVtIGFuZCBsYXRlciB4ODYgcHJvY2Vzc29ycywgd2l0aCBnY2Mgb3IgYSBjb21waWxlciB0aGF0IGhhcyBhCisjICAgY29tcGF0aWJsZSBzeW50YXggZm9yIGlubGluZSBhc3NlbWJseSBpbnN0cnVjdGlvbnMsIHJ1biBhIHNtYWxsIHByb2dyYW0KKyMgICB0aGF0IGV4ZWN1dGVzIHRoZSBjcHVpZCBpbnN0cnVjdGlvbiB3aXRoIGlucHV0IE9QLiBUaGlzIGNhbiBiZSB1c2VkIHRvCisjICAgZGV0ZWN0IHRoZSBDUFUgdHlwZS4KKyMKKyMgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZXMgb2YgdGhlIGVheCwgZWJ4LCBlY3gsIGFuZCBlZHggcmVnaXN0ZXJzIGFyZSBzdG9yZWQKKyMgICBhcyBoZXhhZGVjaW1hbCBzdHJpbmdzIGFzICJlYXg6ZWJ4OmVjeDplZHgiIGluIHRoZSBjYWNoZSB2YXJpYWJsZQorIyAgIGF4X2N2X2djY194ODZfY3B1aWRfT1AuCisjCisjICAgSWYgdGhlIGNwdWlkIGluc3RydWN0aW9uIGZhaWxzIChiZWNhdXNlIHlvdSBhcmUgcnVubmluZyBhCisjICAgY3Jvc3MtY29tcGlsZXIsIG9yIGJlY2F1c2UgeW91IGFyZSBub3QgdXNpbmcgZ2NjLCBvciBiZWNhdXNlIHlvdSBhcmUgb24KKyMgICBhIHByb2Nlc3NvciB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGlzIGluc3RydWN0aW9uKSwgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF9PUAorIyAgIGlzIHNldCB0byB0aGUgc3RyaW5nICJ1bmtub3duIi4KKyMKKyMgICBUaGlzIG1hY3JvIG1haW5seSBleGlzdHMgdG8gYmUgdXNlZCBpbiBBWF9HQ0NfQVJDSEZMQUcuCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggU3RldmVuIEcuIEpvaG5zb24gPHN0ZXZlbmpAYWx1bS5taXQuZWR1PgorIyAgIENvcHlyaWdodCAoYykgMjAwOCBNYXR0ZW8gRnJpZ28KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgNworCitBQ19ERUZVTihbQVhfR0NDX1g4Nl9DUFVJRF0sCitbQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCitBQ19MQU5HX1BVU0goW0NdKQorQUNfQ0FDSEVfQ0hFQ0soZm9yIHg4NiBjcHVpZCAkMSBvdXRwdXQsIGF4X2N2X2djY194ODZfY3B1aWRfJDEsCisgW0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPHN0ZGlvLmg+XSwgWworICAgICBpbnQgb3AgPSAkMSwgZWF4LCBlYngsIGVjeCwgZWR4OworICAgICBGSUxFICpmOworICAgICAgX19hc21fXygiY3B1aWQiCisgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KSwgIj1jIiAoZWN4KSwgIj1kIiAoZWR4KQorICAgICAgICA6ICJhIiAob3ApKTsKKyAgICAgZiA9IGZvcGVuKCJjb25mdGVzdF9jcHVpZCIsICJ3Iik7IGlmICghZikgcmV0dXJuIDE7CisgICAgIGZwcmludGYoZiwgIiV4OiV4OiV4OiV4XG4iLCBlYXgsIGVieCwgZWN4LCBlZHgpOworICAgICBmY2xvc2UoZik7CisgICAgIHJldHVybiAwOworXSldLAorICAgICBbYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8kMT1gY2F0IGNvbmZ0ZXN0X2NwdWlkYDsgcm0gLWYgY29uZnRlc3RfY3B1aWRdLAorICAgICBbYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8kMT11bmtub3duOyBybSAtZiBjb25mdGVzdF9jcHVpZF0sCisgICAgIFtheF9jdl9nY2NfeDg2X2NwdWlkXyQxPXVua25vd25dKV0pCitBQ19MQU5HX1BPUChbQ10pCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9saWJ0b29sLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9saWJ0b29sLm00CmluZGV4IDY3MWNkZTEuLjgyODEwNGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbGlidG9vbC5tNAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2xpYnRvb2wubTQKQEAgLTEsNyArMSw4IEBACiAjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQogIwogIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgICAgICAgICAgICAgICAgIEZvdW5kYXRpb24sIEluYy4KICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCkBAIC0xMCw3ICsxMSw4IEBACiAKIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCiAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyAgICAgICAgICAgICAgICAgRm91bmRhdGlvbiwgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICMKICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KQEAgLTM3LDcgKzM5LDcgQEAKICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiBdKQogCi0jIHNlcmlhbCA1NiBMVF9JTklUCisjIHNlcmlhbCA1NyBMVF9JTklUCiAKIAogIyBMVF9QUkVSRVEoVkVSU0lPTikKQEAgLTY2LDYgKzY4LDcgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tCiBBQ19ERUZVTihbTFRfSU5JVF0sCiBbQUNfUFJFUkVRKFsyLjU4XSlkbmwgV2UgdXNlIEFDX0lOQ0xVREVTX0RFRkFVTFQKK0FDX1JFUVVJUkUoW0FDX0NPTkZJR19BVVhfRElSX0RFRkFVTFRdKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVF9MQU5HXSlkbmwKIEFDX0JFRk9SRShbJDBdLCBbTFRfT1VUUFVUXSlkbmwKIEFDX0JFRk9SRShbJDBdLCBbTFRETF9JTklUXSlkbmwKQEAgLTgyLDYgKzg1LDggQEAKIEFDX1JFUVVJUkUoW0xUT0JTT0xFVEVfVkVSU0lPTl0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfUFJPR19MVE1BSU5dKWRubAogCitfTFRfU0hFTExfSU5JVChbU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH1dKQorCiBkbmwgUGFyc2UgT1BUSU9OUwogX0xUX1NFVF9PUFRJT05TKFskMF0sIFskMV0pCiAKQEAgLTExOCw3ICsxMjMsNyBAQAogICAgICopIGJyZWFrOzsKICAgZXNhYwogZG9uZQotY2NfYmFzZW5hbWU9YCRFQ0hPICJYJGNjX3RlbXAiIHwgJFhzZWQgLWUgJ3MlLiovJSUnIC1lICJzJV4kaG9zdF9hbGlhcy0lJSJgCitjY19iYXNlbmFtZT1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKIF0pCiAKIApAQCAtMTM4LDYgKzE0MywxMSBAQAogbTRfZGVmdW4oW19MVF9TRVRVUF0sCiBbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAogQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKK0FDX1JFUVVJUkUoW19MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTXSlkbmwKK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSlkbmwKKworX0xUX0RFQ0woW10sIFtQQVRIX1NFUEFSQVRPUl0sIFsxXSwgW1RoZSBQQVRIIHNlcGFyYXRvciBmb3IgdGhlIGJ1aWxkIHN5c3RlbV0pZG5sCitkbmwKIF9MVF9ERUNMKFtdLCBbaG9zdF9hbGlhc10sIFswXSwgW1RoZSBob3N0IHN5c3RlbV0pZG5sCiBfTFRfREVDTChbXSwgW2hvc3RdLCBbMF0pZG5sCiBfTFRfREVDTChbXSwgW2hvc3Rfb3NdLCBbMF0pZG5sCkBAIC0xNjAsMTAgKzE3MCwxMyBAQAogZG5sCiBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCittNF9yZXF1aXJlKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ01EX1JFTE9BRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DTURfT0xEX0FSQ0hJVkVdKWRubAogbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCittNF9yZXF1aXJlKFtfTFRfV0lUSF9TWVNST09UXSlkbmwKIAogX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWwogIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgpAQCAtMTc5LDcgKzE5Miw2IEBACiBfTFRfQ0hFQ0tfT0JKRElSCiAKIG00X3JlcXVpcmUoW19MVF9UQUdfQ09NUElMRVJdKWRubAotX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKIAogY2FzZSAkaG9zdF9vcyBpbgogYWl4MyopCkBAIC0xOTMsMjMgKzIwNSw2IEBACiAgIDs7CiBlc2FjCiAKLSMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKLSMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1zZWRfcXVvdGVfc3Vic3Q9J3MvXChbWyJgJFxcXV1cKS9cXFwxL2cnCi0KLSMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgotZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1siYFxcXV1cKS9cXFwxL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCi0jIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCi1kZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgotZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCi1ub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKLQogIyBHbG9iYWwgdmFyaWFibGVzOgogb2ZpbGU9bGlidG9vbAogY2FuX2J1aWxkX3NoYXJlZD15ZXMKQEAgLTI1MCw2ICsyNDUsMjggQEAKIF0pIyBfTFRfU0VUVVAKIAogCisjIF9MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBhIGZldyBzZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscCB1cyBkbyByb2J1c3QgcXVvdGluZy4KK200X2RlZnVuKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10sCitbIyBCYWNrc2xhc2hpZnkgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbgorIyBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCitzZWRfcXVvdGVfc3Vic3Q9J3MvXChbWyJgJFxcXV1cKS9cXFwxL2cnCisKKyMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgorZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1siYFxcXV1cKS9cXFwxL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCisjIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCitkZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgorZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCitub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKK10pCisKICMgX0xUX1BST0dfTFRNQUlOCiAjIC0tLS0tLS0tLS0tLS0tLQogIyBOb3RlIHRoYXQgdGhpcyBjb2RlIGlzIGNhbGxlZCBib3RoIGZyb20gYGNvbmZpZ3VyZScsIGFuZCBgY29uZmlnLnN0YXR1cycKQEAgLTQwOCw3ICs0MjUsNyBAQAogIyBkZWNsYXJhdGlvbiB0aGVyZSB3aWxsIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgaW4gYGNvbmZpZ3VyZScuICBWQVJOQU1FCiAjIG11c3QgaGF2ZSBhIHNpbmdsZSBxdW90ZSBkZWxpbWl0ZWQgdmFsdWUgZm9yIHRoaXMgdG8gd29yay4KIG00X2RlZmluZShbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRV0sCi1bJDE9J2AkRUNITyAiWCRdWyQxIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnXSkKK1skMT0nYCRFQ0hPICIkXVskMSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnXSkKIAogCiAjIF9MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OUwpAQCAtNDE4LDcgKzQzNSw3IEBACiAjIGVtYmVkZGVkIHNpbmdsZSBxdW90ZXMgcHJvcGVybHkuICBJbiBjb25maWd1cmUsIHRoaXMgbWFjcm8gZXhwYW5kcwogIyBlYWNoIHZhcmlhYmxlIGRlY2xhcmVkIHdpdGggX0xUX0RFQ0wgKGFuZCBfTFRfVEFHREVDTCkgaW50bzoKICMKLSMgICAgPHZhcj49J2AkRUNITyAiWCQ8dmFyPiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIyAgICA8dmFyPj0nYCRFQ0hPICIkPHZhcj4iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogbTRfZGVmdW4oW19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OU10sCiBbbTRfZm9yZWFjaChbX2x0X3Zhcl0sIG00X3F1b3RlKGx0X2RlY2xfYWxsX3Zhcm5hbWVzKSwKICAgICBbbTRfbihbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRShfbHRfdmFyKV0pXSldKQpAQCAtNTE3LDEyICs1MzQsMjAgQEAKIExUQ0ZMQUdTPSckTFRDRkxBR1MnCiBjb21waWxlcj0nJGNvbXBpbGVyX0RFRkFVTFQnCiAKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorXCRbXTEKK19MVEVDSE9fRU9GJworfQorCiAjIFF1b3RlIGV2YWxlZCBzdHJpbmdzLgogZm9yIHZhciBpbiBsdF9kZWNsX2FsbF92YXJuYW1lcyhbWyBcCiBdXSwgbHRfZGVjbF9xdW90ZV92YXJuYW1lcyk7IGRvCi0gICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltbXFxcXFxcXGBcXCJcXFwkXV0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtNTMzLDkgKzU1OCw5IEBACiAjIERvdWJsZS1xdW90ZSBkb3VibGUtZXZhbGVkIHN0cmluZ3MuCiBmb3IgdmFyIGluIGx0X2RlY2xfYWxsX3Zhcm5hbWVzKFtbIFwKIF1dLCBsdF9kZWNsX2RxdW90ZV92YXJuYW1lcyk7IGRvCi0gICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltbXFxcXFxcXGBcXCJcXFwkXV0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtNTQzLDE2ICs1NjgsMzggQEAKICAgICBlc2FjCiBkb25lCiAKLSMgRml4LXVwIGZhbGxiYWNrIGVjaG8gaWYgaXQgd2FzIG1hbmdsZWQgYnkgdGhlIGFib3ZlIHF1b3RpbmcgcnVsZXMuCi1jYXNlIFwkbHRfRUNITyBpbgotKidcXFxbJF0wIC0tZmFsbGJhY2stZWNobyInKWRubCAiCi0gIGx0X0VDSE89XGBcJEVDSE8gIlhcJGx0X0VDSE8iIHwgXCRYc2VkIC1lICdzL1xcXFxcXFxcXFxcXFxcXFskXTAgLS1mYWxsYmFjay1lY2hvIlxbJF0vXFskXTAgLS1mYWxsYmFjay1lY2hvIi8nXGAKLSAgOzsKLWVzYWMKLQogX0xUX09VVFBVVF9MSUJUT09MX0lOSVQKIF0pCiAKKyMgX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVQoRklMRSwgW0NPTU1FTlRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgR2VuZXJhdGUgYSBjaGlsZCBzY3JpcHQgRklMRSB3aXRoIGFsbCBpbml0aWFsaXphdGlvbiBuZWNlc3NhcnkgdG8KKyMgcmV1c2UgdGhlIGVudmlyb25tZW50IGxlYXJuZWQgYnkgdGhlIHBhcmVudCBzY3JpcHQsIGFuZCBtYWtlIHRoZQorIyBmaWxlIGV4ZWN1dGFibGUuICBJZiBDT01NRU5UIGlzIHN1cHBsaWVkLCBpdCBpcyBpbnNlcnRlZCBhZnRlciB0aGUKKyMgYCMhJyBzZXF1ZW5jZSBidXQgYmVmb3JlIGluaXRpYWxpemF0aW9uIHRleHQgYmVnaW5zLiAgQWZ0ZXIgdGhpcworIyBtYWNybywgYWRkaXRpb25hbCB0ZXh0IGNhbiBiZSBhcHBlbmRlZCB0byBGSUxFIHRvIGZvcm0gdGhlIGJvZHkgb2YKKyMgdGhlIGNoaWxkIHNjcmlwdC4gIFRoZSBtYWNybyBlbmRzIHdpdGggbm9uLXplcm8gc3RhdHVzIGlmIHRoZQorIyBmaWxlIGNvdWxkIG5vdCBiZSBmdWxseSB3cml0dGVuIChzdWNoIGFzIGlmIHRoZSBkaXNrIGlzIGZ1bGwpLgorbTRfaWZkZWYoW0FTX0lOSVRfR0VORVJBVEVEXSwKK1ttNF9kZWZ1bihbX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVRdLFtBU19JTklUX0dFTkVSQVRFRCgkQCldKV0sCitbbTRfZGVmdW4oW19MVF9HRU5FUkFURURfRklMRV9JTklUXSwKK1ttNF9yZXF1aXJlKFtBU19QUkVQQVJFXSldZG5sCitbbTRfcHVzaGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV1kbmwKK1tsdF93cml0ZV9mYWlsPTAKK2NhdCA+JDEgPDxfQVNFT0YgfHwgbHRfd3JpdGVfZmFpbD0xCisjISAkU0hFTEwKKyMgR2VuZXJhdGVkIGJ5ICRhc19tZS4KKyQyCitTSEVMTD1cJHtDT05GSUdfU0hFTEwtJFNIRUxMfQorZXhwb3J0IFNIRUxMCitfQVNFT0YKK2NhdCA+PiQxIDw8XF9BU0VPRiB8fCBsdF93cml0ZV9mYWlsPTEKK0FTX1NIRUxMX1NBTklUSVpFCitfQVNfUFJFUEFSRQorZXhlYyBBU19NRVNTQUdFX0ZEPiYxCitfQVNFT0YKK3Rlc3QgJGx0X3dyaXRlX2ZhaWwgPSAwICYmIGNobW9kICt4ICQxW11kbmwKK200X3BvcGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV0pXSkjIF9MVF9HRU5FUkFURURfRklMRV9JTklUCiAKICMgTFRfT1VUUFVUCiAjIC0tLS0tLS0tLQpAQCAtNTYyLDIwICs2MDksMTEgQEAKIEFDX0RFRlVOKFtMVF9PVVRQVVRdLAogWzogJHtDT05GSUdfTFQ9Li9jb25maWcubHR9CiBBQ19NU0dfTk9USUNFKFtjcmVhdGluZyAkQ09ORklHX0xUXSkKLWNhdCA+IiRDT05GSUdfTFQiIDw8X0xURU9GCi0jISAkU0hFTEwKLSMgR2VuZXJhdGVkIGJ5ICRhc19tZS4KLSMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSBhIGxpYnRvb2wgc3R1YiB3aXRoIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0KLWx0X2NsX3NpbGVudD1mYWxzZQotU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KLV9MVEVPRgorX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVQoWyIkQ09ORklHX0xUIl0sCitbIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIGEgbGlidG9vbCBzdHViIHdpdGggdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5dKQogCiBjYXQgPj4iJENPTkZJR19MVCIgPDxcX0xURU9GCi1BU19TSEVMTF9TQU5JVElaRQotX0FTX1BSRVBBUkUKLQotZXhlYyBBU19NRVNTQUdFX0ZEPiYxCitsdF9jbF9zaWxlbnQ9ZmFsc2UKIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKIHsKICAgZWNobwpAQCAtNjAxLDcgKzYzOSw3IEBACiBtNF9pZnNldChbQUNfUEFDS0FHRV9WRVJTSU9OXSwgWyBBQ19QQUNLQUdFX1ZFUlNJT05dKQogY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCiAKLUNvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIFRoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCiAKQEAgLTY0NiwxNSArNjg0LDEzIEBACiAjIGFwcGVuZGluZyB0byBjb25maWcubG9nLCB3aGljaCBmYWlscyBvbiBET1MsIGFzIGNvbmZpZy5sb2cgaXMgc3RpbGwga2VwdAogIyBvcGVuIGJ5IGNvbmZpZ3VyZS4gIEhlcmUgd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLCBlZmZlY3RpdmVseSBjbG9zaW5nCiAjIGNvbmZpZy5sb2csIHNvIGl0IGNhbiBiZSBwcm9wZXJseSAocmUpb3BlbmVkIGFuZCBhcHBlbmRlZCB0byBieSBjb25maWcubHQuCi1pZiB0ZXN0ICIkbm9fY3JlYXRlIiAhPSB5ZXM7IHRoZW4KLSAgbHRfY2xfc3VjY2Vzcz06Ci0gIHRlc3QgIiRzaWxlbnQiID0geWVzICYmCi0gICAgbHRfY29uZmlnX2x0X2FyZ3M9IiRsdF9jb25maWdfbHRfYXJncyAtLXF1aWV0IgotICBleGVjIEFTX01FU1NBR0VfTE9HX0ZEPi9kZXYvbnVsbAotICAkU0hFTEwgIiRDT05GSUdfTFQiICRsdF9jb25maWdfbHRfYXJncyB8fCBsdF9jbF9zdWNjZXNzPWZhbHNlCi0gIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKLSAgJGx0X2NsX3N1Y2Nlc3MgfHwgQVNfRVhJVCgxKQotZmkKK2x0X2NsX3N1Y2Nlc3M9OgordGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYKKyAgbHRfY29uZmlnX2x0X2FyZ3M9IiRsdF9jb25maWdfbHRfYXJncyAtLXF1aWV0IgorZXhlYyBBU19NRVNTQUdFX0xPR19GRD4vZGV2L251bGwKKyRTSEVMTCAiJENPTkZJR19MVCIgJGx0X2NvbmZpZ19sdF9hcmdzIHx8IGx0X2NsX3N1Y2Nlc3M9ZmFsc2UKK2V4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKKyRsdF9jbF9zdWNjZXNzIHx8IEFTX0VYSVQoMSkKIF0pIyBMVF9PVVRQVVQKIAogCkBAIC03MTcsMTUgKzc1MywxMiBAQAogICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQogCi0gIF9MVF9QUk9HX1hTSV9TSEVMTEZOUworICBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCiAKLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0KLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgIGNobW9kICt4ICIkb2ZpbGUiCiBdLApAQCAtNzcwLDYgKzgwMyw3IEBACiBtNF9jYXNlKFskMV0sCiAgIFtDXSwJCQlbX0xUX0xBTkcoQyldLAogICBbQysrXSwJCVtfTFRfTEFORyhDWFgpXSwKKyAgW0dvXSwJCQlbX0xUX0xBTkcoR08pXSwKICAgW0phdmFdLAkJW19MVF9MQU5HKEdDSildLAogICBbRm9ydHJhbiA3N10sCQlbX0xUX0xBTkcoRjc3KV0sCiAgIFtGb3J0cmFuXSwJCVtfTFRfTEFORyhGQyldLApAQCAtNzkxLDYgKzgyNSwzMSBAQAogXSkjIF9MVF9MQU5HCiAKIAorbTRfaWZuZGVmKFtBQ19QUk9HX0dPXSwgWworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIE5PVEU6IFRoaXMgbWFjcm8gaGFzIGJlZW4gc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW50byAgICMKKyMgIEdOVSBBdXRvY29uZiBhcyBBQ19QUk9HX0dPLiAgV2hlbiBpdCBpcyBhdmFpbGFibGUgaW4gICAgIworIyAgYSByZWxlYXNlZCB2ZXJzaW9uIG9mIEF1dG9jb25mIHdlIHNob3VsZCByZW1vdmUgdGhpcyAgICAjCisjICBtYWNybyBhbmQgdXNlIGl0IGluc3RlYWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbTRfZGVmdW4oW0FDX1BST0dfR09dLAorW0FDX0xBTkdfUFVTSChHbylkbmwKK0FDX0FSR19WQVIoW0dPQ10sICAgICBbR28gY29tcGlsZXIgY29tbWFuZF0pZG5sCitBQ19BUkdfVkFSKFtHT0ZMQUdTXSwgW0dvIGNvbXBpbGVyIGZsYWdzXSlkbmwKK19BQ19BUkdfVkFSX0xERkxBR1MoKWRubAorQUNfQ0hFQ0tfVE9PTChHT0MsIGdjY2dvKQoraWYgdGVzdCAteiAiJEdPQyI7IHRoZW4KKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgIEFDX0NIRUNLX1BST0coR09DLCBbJHthY190b29sX3ByZWZpeH1nY2Nnb10sIFske2FjX3Rvb2xfcHJlZml4fWdjY2dvXSkKKyAgZmkKK2ZpCitpZiB0ZXN0IC16ICIkR09DIjsgdGhlbgorICBBQ19DSEVDS19QUk9HKEdPQywgZ2NjZ28sIGdjY2dvLCBmYWxzZSkKK2ZpCitdKSNtNF9kZWZ1bgorXSkjbTRfaWZuZGVmCisKKwogIyBfTFRfTEFOR19ERUZBVUxUX0NPTkZJRwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbTRfZGVmdW4oW19MVF9MQU5HX0RFRkFVTFRfQ09ORklHXSwKQEAgLTgyMSw2ICs4ODAsMTAgQEAKICAgICAgICBtNF9pZmRlZihbTFRfUFJPR19HQ0pdLAogCVttNF9kZWZpbmUoW0xUX1BST0dfR0NKXSwgZGVmbihbTFRfUFJPR19HQ0pdKVtMVF9MQU5HKEdDSildKV0pXSldKV0pCiAKK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0dPXSwKKyAgW0xUX0xBTkcoR08pXSwKKyAgW200X2RlZmluZShbQUNfUFJPR19HT10sIGRlZm4oW0FDX1BST0dfR09dKVtMVF9MQU5HKEdPKV0pXSkKKwogQUNfUFJPVklERV9JRkVMU0UoW0xUX1BST0dfUkNdLAogICBbTFRfTEFORyhSQyldLAogICBbbTRfZGVmaW5lKFtMVF9QUk9HX1JDXSwgZGVmbihbTFRfUFJPR19SQ10pW0xUX0xBTkcoUkMpXSldKQpAQCAtODMxLDExICs4OTQsMTMgQEAKIEFVX0RFRlVOKFtBQ19MSUJUT09MX0Y3N10sIFtMVF9MQU5HKEZvcnRyYW4gNzcpXSkKIEFVX0RFRlVOKFtBQ19MSUJUT09MX0ZDXSwgW0xUX0xBTkcoRm9ydHJhbildKQogQVVfREVGVU4oW0FDX0xJQlRPT0xfR0NKXSwgW0xUX0xBTkcoSmF2YSldKQorQVVfREVGVU4oW0FDX0xJQlRPT0xfUkNdLCBbTFRfTEFORyhXaW5kb3dzIFJlc291cmNlKV0pCiBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfQ1hYXSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRkNdLCBbXSkKIGRubCBBQ19ERUZVTihbQUNfTElCVE9PTF9HQ0pdLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9SQ10sIFtdKQogCiAKICMgX0xUX1RBR19DT01QSUxFUgpAQCAtOTIxLDcgKzk4NiwxMyBAQAogCSRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBsaWJjb25mdGVzdC5keWxpYiBcCiAJICAtZHluYW1pY2xpYiAtV2wsLXNpbmdsZV9tb2R1bGUgY29uZnRlc3QuYyAyPmNvbmZ0ZXN0LmVycgogICAgICAgICBfbHRfcmVzdWx0PSQ/Ci0JaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYiAmJiB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyICYmIHRlc3QgJF9sdF9yZXN1bHQgPSAwOyB0aGVuCisJIyBJZiB0aGVyZSBpcyBhIG5vbi1lbXB0eSBlcnJvciBsb2csIGFuZCAic2luZ2xlX21vZHVsZSIKKwkjIGFwcGVhcnMgaW4gaXQsIGFzc3VtZSB0aGUgZmxhZyBjYXVzZWQgYSBsaW5rZXIgd2FybmluZworICAgICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVyciAmJiAkR1JFUCBzaW5nbGVfbW9kdWxlIGNvbmZ0ZXN0LmVycjsgdGhlbgorCSAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisJIyBPdGhlcndpc2UsIGlmIHRoZSBvdXRwdXQgd2FzIGNyZWF0ZWQgd2l0aCBhIDAgZXhpdCBjb2RlIGZyb20KKwkjIHRoZSBjb21waWxlciwgaXQgd29ya2VkLgorCWVsaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYiAmJiB0ZXN0ICRfbHRfcmVzdWx0IC1lcSAwOyB0aGVuCiAJICBsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPXllcwogCWVsc2UKIAkgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRApAQCAtOTI5LDYgKzEwMDAsNyBAQAogCXJtIC1yZiBsaWJjb25mdGVzdC5keWxpYioKIAlybSAtZiBjb25mdGVzdC4qCiAgICAgICBmaV0pCisKICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIC1leHBvcnRlZF9zeW1ib2xzX2xpc3QgbGlua2VyIGZsYWddLAogICAgICAgW2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdF0sCiAgICAgICBbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PW5vCkBAIC05NDAsNiArMTAxMiwzNCBAQAogCVtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9bm9dKQogCUxERkxBR1M9IiRzYXZlX0xERkxBR1MiCiAgICAgXSkKKworICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgLWZvcmNlX2xvYWQgbGlua2VyIGZsYWddLFtsdF9jdl9sZF9mb3JjZV9sb2FkXSwKKyAgICAgIFtsdF9jdl9sZF9mb3JjZV9sb2FkPW5vCisgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKK2ludCBmb3JjZWRfbG9hZGVkKCkgeyByZXR1cm4gMjt9CitfTFRfRU9GCisgICAgICBlY2hvICIkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKK2ludCBtYWluKCkgeyByZXR1cm4gMDt9CitfTFRfRU9GCisgICAgICBlY2hvICIkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAtV2wsLWZvcmNlX2xvYWQsLi9saWJjb25mdGVzdC5hIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAtV2wsLWZvcmNlX2xvYWQsLi9saWJjb25mdGVzdC5hIDI+Y29uZnRlc3QuZXJyCisgICAgICBfbHRfcmVzdWx0PSQ/CisgICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVyciAmJiAkR1JFUCBmb3JjZV9sb2FkIGNvbmZ0ZXN0LmVycjsgdGhlbgorCWNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgZWxpZiB0ZXN0IC1mIGNvbmZ0ZXN0ICYmIHRlc3QgJF9sdF9yZXN1bHQgLWVxIDAgJiYgJEdSRVAgZm9yY2VkX2xvYWQgY29uZnRlc3QgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCWx0X2N2X2xkX2ZvcmNlX2xvYWQ9eWVzCisgICAgICBlbHNlCisJY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBmaQorICAgICAgICBybSAtZiBjb25mdGVzdC5lcnIgbGliY29uZnRlc3QuYSBjb25mdGVzdCBjb25mdGVzdC5jCisgICAgICAgIHJtIC1yZiBjb25mdGVzdC5kU1lNCisgICAgXSkKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgcmhhcHNvZHkqIHwgZGFyd2luMS5bWzAxMl1dKQogICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OwpAQCAtOTY3LDcgKzEwNjcsNyBAQAogICAgIGVsc2UKICAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9J34kTk1FRElUIC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JwogICAgIGZpCi0gICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiI7IHRoZW4KKyAgICBpZiB0ZXN0ICIkRFNZTVVUSUwiICE9ICI6IiAmJiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAibm8iOyB0aGVuCiAgICAgICBfbHRfZHN5bXV0aWw9J34kRFNZTVVUSUwgJGxpYiB8fCA6JwogICAgIGVsc2UKICAgICAgIF9sdF9kc3ltdXRpbD0KQEAgLTk3Nyw4ICsxMDc3LDggQEAKIF0pCiAKIAotIyBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUyhbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIENoZWNrcyBmb3IgbGlua2VyIGFuZCBjb21waWxlciBmZWF0dXJlcyBvbiBkYXJ3aW4KIG00X2RlZnVuKFtfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFU10sCiBbCkBAIC05ODcsNyArMTA4NywxMyBAQAogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9eWVzCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCi0gIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJworICBpZiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAieWVzIjsgdGhlbgorICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR7d2x9LWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCisgICAgbTRfY2FzZShbJDFdLCBbRjc3XSwgW19MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzXSwKKyAgICAgICAgICAgICAgICAgIFtGQ10sICBbX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXNdKQorICBlbHNlCisgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScnCisgIGZpCiAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwogICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9IiRfbHRfZGFyX2FsbG93X3VuZGVmaW5lZCIKICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTk5NSw3ICsxMTAxLDcgQEAKICAgICAgKikgX2x0X2Rhcl9jYW5fc2hhcmVkPSRHQ0MgOzsKICAgZXNhYwogICBpZiB0ZXN0ICIkX2x0X2Rhcl9jYW5fc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCi0gICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZWNobworICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWZ1bmNfZWNob19hbGwKICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSJcJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAkX2x0X2Rhcl9zaW5nbGVfbW9kJHtfbHRfZHN5bXV0aWx9IgogICAgIF9MVF9UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgogICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJzZWQgJ3MsXixfLCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICR7X2x0X2Rhcl9zaW5nbGVfbW9kfSR7X2x0X2Rhcl9leHBvcnRfc3ltc30ke19sdF9kc3ltdXRpbH0iCkBAIC0xMDExLDIwMyArMTExNywxNDIgQEAKICAgZmkKIF0pCiAKLSMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIExpbmtzIGEgbWluaW1hbCBwcm9ncmFtIGFuZCBjaGVja3MgdGhlIGV4ZWN1dGFibGUKICMgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCBoYXJkY29kZWQgbGlicmFyeSBwYXRoLiBJbiBtb3N0IGNhc2VzLAogIyB0aGlzIGlzIC91c3IvbGliOi9saWIsIGJ1dCB3aGVuIHRoZSBNUEkgY29tcGlsZXJzIGFyZSB1c2VkCiAjIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbiBhbmQgTVBJIGxpYnMgYXJlIGluY2x1ZGVkIHRvby4KICMgSWYgd2UgZG9uJ3QgZmluZCBhbnl0aGluZywgdXNlIHRoZSBkZWZhdWx0IGxpYnJhcnkgcGF0aCBhY2NvcmRpbmcKICMgdG8gdGhlIGFpeCBsZCBtYW51YWwuCisjIFN0b3JlIHRoZSByZXN1bHRzIGZyb20gdGhlIGRpZmZlcmVudCBjb21waWxlcnMgZm9yIGVhY2ggVEFHTkFNRS4KKyMgQWxsb3cgdG8gb3ZlcnJpZGUgdGhlbSBmb3IgYWxsIHRhZ3MgdGhyb3VnaCBsdF9jdl9haXhfbGlicGF0aC4KIG00X2RlZnVuKFtfTFRfU1lTX01PRFVMRV9QQVRIX0FJWF0sCiBbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKLUFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSxbCi1sdF9haXhfbGlicGF0aF9zZWQ9JwotICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLQkvXjAvIHsKLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0JICAgIHAKLQl9Ci0gICAgfScKLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLWZpXSxbXSkKLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQoraWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKK2Vsc2UKKyAgQUNfQ0FDSEVfVkFMKFtfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKV0sCisgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSxbCisgIGx0X2FpeF9saWJwYXRoX3NlZD0nWworICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworCSAgL14wLyB7CisJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKwkgICAgICBwCisJICB9CisgICAgICB9XScKKyAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKyAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgorICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorICBmaV0sW10pCisgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KKyAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT0iL3Vzci9saWI6L2xpYiIKKyAgZmkKKyAgXSkKKyAgYWl4X2xpYnBhdGg9JF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pCitmaQogXSkjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCiAKIAogIyBfTFRfU0hFTExfSU5JVChBUkcpCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0KIG00X2RlZmluZShbX0xUX1NIRUxMX0lOSVRdLAotW2lmZGVmKFtBQ19ESVZFUlNJT05fTk9USUNFXSwKLQkgICAgIFtBQ19ESVZFUlRfUFVTSChBQ19ESVZFUlNJT05fTk9USUNFKV0sCi0JIFtBQ19ESVZFUlRfUFVTSChOT1RJQ0UpXSkKLSQxCi1BQ19ESVZFUlRfUE9QCi1dKSMgX0xUX1NIRUxMX0lOSVQKK1ttNF9kaXZlcnRfdGV4dChbTTRTSC1JTklUXSwgWyQxCitdKV0pIyBfTFRfU0hFTExfSU5JVAorCiAKIAogIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBBZGQgc29tZSBjb2RlIHRvIHRoZSBzdGFydCBvZiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2gKLSMgd2lsbCBmaW5kIGFuIGVjaG8gY29tbWFuZCB3aGljaCBkb2Vzbid0IGludGVycHJldCBiYWNrc2xhc2hlcy4KKyMgRmluZCBob3cgd2UgY2FuIGZha2UgYW4gZWNobyBjb21tYW5kIHRoYXQgZG9lcyBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaC4KKyMgSW4gcGFydGljdWxhciwgd2l0aCBBdXRvY29uZiAyLjYwIG9yIGxhdGVyIHdlIGFkZCBzb21lIGNvZGUgdG8gdGhlIHN0YXJ0CisjIG9mIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJlIHNjcmlwdCB3aGljaCB3aWxsIGZpbmQgYSBzaGVsbCB3aXRoIGEgYnVpbHRpbgorIyBwcmludGYgKHdoaWNoIHdlIGNhbiB1c2UgYXMgYW4gZWNobyBjb21tYW5kKS4KIG00X2RlZnVuKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0sCi1bX0xUX1NIRUxMX0lOSVQoWwotIyBDaGVjayB0aGF0IHdlIGFyZSBydW5uaW5nIHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgotU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KK1tFQ0hPPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJworRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCitFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwogCi1jYXNlIFgkbHRfRUNITyBpbgotWCotLWZhbGxiYWNrLWVjaG8pCi0gICMgUmVtb3ZlIG9uZSBsZXZlbCBvZiBxdW90YXRpb24gKHdoaWNoIHdhcyByZXF1aXJlZCBmb3IgTWFrZSkuCi0gIEVDSE89YGVjaG8gIiRsdF9FQ0hPIiB8IHNlZCAncyxcXFxcXFskXVxcWyRdMCwnWyRdMCcsJ2AKLSAgOzsKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIHByaW50IHN0cmluZ3NdKQorIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCitpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgIEVDSE89J3ByaW50IC1yIC0tJworZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgRUNITz0ncHJpbnRmICVzXG4nCitlbHNlCisgICMgVXNlIHRoaXMgZnVuY3Rpb24gYXMgYSBmYWxsYmFjayB0aGF0IGFsd2F5cyB3b3Jrcy4KKyAgZnVuY19mYWxsYmFja19lY2hvICgpCisgIHsKKyAgICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorJFtdMQorX0xURUNIT19FT0YnCisgIH0KKyAgRUNITz0nZnVuY19mYWxsYmFja19lY2hvJworZmkKKworIyBmdW5jX2VjaG9fYWxsIGFyZy4uLgorIyBJbnZva2UgJEVDSE8gd2l0aCBhbGwgYXJncywgc3BhY2Utc2VwYXJhdGVkLgorZnVuY19lY2hvX2FsbCAoKQoreworICAgICRFQ0hPICIkKiIgCit9CisKK2Nhc2UgIiRFQ0hPIiBpbgorICBwcmludGYqKSBBQ19NU0dfUkVTVUxUKFtwcmludGZdKSA7OworICBwcmludCopIEFDX01TR19SRVNVTFQoW3ByaW50IC1yXSkgOzsKKyAgKikgQUNfTVNHX1JFU1VMVChbY2F0XSkgOzsKIGVzYWMKIAotRUNITz0ke2x0X0VDSE8tZWNob30KLWlmIHRlc3QgIlhbJF0xIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgc2hpZnQKLWVsaWYgdGVzdCAiWFskXTEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIEF2b2lkIGlubGluZSBkb2N1bWVudCBoZXJlLCBpdCBtYXkgYmUgbGVmdCBvdmVyCi0gIDoKLWVsaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnIDsgdGhlbgotICAjIFlpcHBlZSwgJEVDSE8gd29ya3MhCi0gIDoKLWVsc2UKLSAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgotICBleGVjICRTSEVMTCAiWyRdMCIgLS1uby1yZWV4ZWMgJHsxKyJbJF1AIn0KLWZpCittNF9pZmRlZihbX0FTX0RFVEVDVF9TVUdHRVNURURdLAorW19BU19ERVRFQ1RfU1VHR0VTVEVEKFsKKyAgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9JHtCQVNIX1ZFUlNJT04rc2V0fSIgfHwgKAorICAgIEVDSE89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCisgICAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgICAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyAgICBQQVRIPS9lbXB0eSBGUEFUSD0vZW1wdHk7IGV4cG9ydCBQQVRIIEZQQVRICisgICAgdGVzdCAiWGBwcmludGYgJXMgJEVDSE9gIiA9ICJYJEVDSE8iIFwKKyAgICAgIHx8IHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE9gIiA9ICJYJEVDSE8iICldKV0pCiAKLWlmIHRlc3QgIlhbJF0xIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyB1c2VkIGFzIGZhbGxiYWNrIGVjaG8KLSAgc2hpZnQKLSAgY2F0IDw8X0xUX0VPRgotWyRdKgotX0xUX0VPRgotICBleGl0IDAKLWZpCi0KLSMgVGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gc3Rkb3V0Ci0jIGlmIENEUEFUSCBpcyBzZXQuCi0odW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICi0KLWlmIHRlc3QgLXogIiRsdF9FQ0hPIjsgdGhlbgotICBpZiB0ZXN0ICJYJHtlY2hvX3Rlc3Rfc3RyaW5nK3NldH0iICE9IFhzZXQ7IHRoZW4KLSAgICAjIGZpbmQgYSBzdHJpbmcgYXMgbGFyZ2UgYXMgcG9zc2libGUsIGFzIGxvbmcgYXMgdGhlIHNoZWxsIGNhbiBjb3BlIHdpdGggaXQKLSAgICBmb3IgY21kIGluICdzZWQgNTBxICJbJF0wIicgJ3NlZCAyMHEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMnEgIlskXTAiJyAnZWNobyB0ZXN0JzsgZG8KLSAgICAgICMgZXhwZWN0ZWQgc2l6ZXM6IGxlc3MgdGhhbiAyS2IsIDFLYiwgNTEyIGJ5dGVzLCAxNiBieXRlcywgLi4uCi0gICAgICBpZiB7IGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJGNtZGA7IH0gMj4vZGV2L251bGwgJiYKLQkgeyB0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGwKLSAgICAgIHRoZW4KLSAgICAgICAgYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICBmaQotCi0gIGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7ICRFQ0hPICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCi0gICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgIDoKLSAgZWxzZQotICAgICMgVGhlIFNvbGFyaXMsIEFJWCwgYW5kIERpZ2l0YWwgVW5peCBkZWZhdWx0IGVjaG8gcHJvZ3JhbXMgdW5xdW90ZQotICAgICMgYmFja3NsYXNoZXMuICBUaGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gcXVvdGUgYmFja3NsYXNoZXMgdXNpbmcKLSAgICAjICAgZWNobyAiJHNvbWV0aGluZyIgfCBzZWQgJ3MvXFwvXFxcXC9nJwotICAgICMKLSAgICAjIFNvLCBmaXJzdCB3ZSBsb29rIGZvciBhIHdvcmtpbmcgZWNobyBpbiB0aGUgdXNlcidzIFBBVEguCi0KLSAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKLSAgICBmb3IgZGlyIGluICRQQVRIIC91c3IvdWNiOyBkbwotICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCi0gICAgICBpZiAodGVzdCAtZiAkZGlyL2VjaG8gfHwgdGVzdCAtZiAkZGlyL2VjaG8kYWNfZXhlZXh0KSAmJgotICAgICAgICAgdGVzdCAiWGAoJGRpci9lY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRkaXIvZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgICAgICBFQ0hPPSIkZGlyL2VjaG8iCi0gICAgICAgIGJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLQotICAgIGlmIHRlc3QgIlgkRUNITyIgPSBYZWNobzsgdGhlbgotICAgICAgIyBXZSBkaWRuJ3QgZmluZCBhIGJldHRlciBlY2hvLCBzbyBsb29rIGZvciBhbHRlcm5hdGl2ZXMuCi0gICAgICBpZiB0ZXN0ICJYYHsgcHJpbnQgLXIgJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgcHJpbnQgLXIgIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgICAgICAjIFRoaXMgc2hlbGwgaGFzIGEgYnVpbHRpbiBwcmludCAtciB0aGF0IGRvZXMgdGhlIHRyaWNrLgotICAgICAgICBFQ0hPPSdwcmludCAtcicKLSAgICAgIGVsaWYgeyB0ZXN0IC1mIC9iaW4va3NoIHx8IHRlc3QgLWYgL2Jpbi9rc2gkYWNfZXhlZXh0OyB9ICYmCi0JICAgdGVzdCAiWCRDT05GSUdfU0hFTEwiICE9IFgvYmluL2tzaDsgdGhlbgotICAgICAgICAjIElmIHdlIGhhdmUga3NoLCB0cnkgcnVubmluZyBjb25maWd1cmUgYWdhaW4gd2l0aCBpdC4KLSAgICAgICAgT1JJR0lOQUxfQ09ORklHX1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9Ci0gICAgICAgIGV4cG9ydCBPUklHSU5BTF9DT05GSUdfU0hFTEwKLSAgICAgICAgQ09ORklHX1NIRUxMPS9iaW4va3NoCi0gICAgICAgIGV4cG9ydCBDT05GSUdfU0hFTEwKLSAgICAgICAgZXhlYyAkQ09ORklHX1NIRUxMICJbJF0wIiAtLW5vLXJlZXhlYyAkezErIlskXUAifQotICAgICAgZWxzZQotICAgICAgICAjIFRyeSB1c2luZyBwcmludGYuCi0gICAgICAgIEVDSE89J3ByaW50ZiAlc1xuJwotICAgICAgICBpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLQkgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7ICRFQ0hPICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCi0JICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICAjIENvb2wsIHByaW50ZiB3b3JrcwotCSAgOgotICAgICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkT1JJR0lOQUxfQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKLQkgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkT1JJR0lOQUxfQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgIENPTkZJR19TSEVMTD0kT1JJR0lOQUxfQ09ORklHX1NIRUxMCi0JICBleHBvcnQgQ09ORklHX1NIRUxMCi0JICBTSEVMTD0iJENPTkZJR19TSEVMTCIKLQkgIGV4cG9ydCBTSEVMTAotCSAgRUNITz0iJENPTkZJR19TSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyIKLSAgICAgICAgZWxpZiBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJENPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCi0JICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJENPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICBFQ0hPPSIkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIgotICAgICAgICBlbHNlCi0JICAjIG1heWJlIHdpdGggYSBzbWFsbGVyIHN0cmluZy4uLgotCSAgcHJldj06Ci0KLQkgIGZvciBjbWQgaW4gJ2VjaG8gdGVzdCcgJ3NlZCAycSAiWyRdMCInICdzZWQgMTBxICJbJF0wIicgJ3NlZCAyMHEgIlskXTAiJyAnc2VkIDUwcSAiWyRdMCInOyBkbwotCSAgICBpZiB7IHRlc3QgIlgkZWNob190ZXN0X3N0cmluZyIgPSAiWGBldmFsICRjbWRgIjsgfSAyPi9kZXYvbnVsbAotCSAgICB0aGVuCi0JICAgICAgYnJlYWsKLQkgICAgZmkKLQkgICAgcHJldj0iJGNtZCIKLQkgIGRvbmUKLQotCSAgaWYgdGVzdCAiJHByZXYiICE9ICdzZWQgNTBxICJbJF0wIic7IHRoZW4KLQkgICAgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkcHJldmAKLQkgICAgZXhwb3J0IGVjaG9fdGVzdF9zdHJpbmcKLQkgICAgZXhlYyAke09SSUdJTkFMX0NPTkZJR19TSEVMTC0ke0NPTkZJR19TSEVMTC0vYmluL3NofX0gIlskXTAiICR7MSsiWyRdQCJ9Ci0JICBlbHNlCi0JICAgICMgT29wcy4gIFdlIGxvc3QgY29tcGxldGVseSwgc28ganVzdCBzdGljayB3aXRoIGVjaG8uCi0JICAgIEVDSE89ZWNobwotCSAgZmkKLSAgICAgICAgZmkKLSAgICAgIGZpCi0gICAgZmkKLSAgZmkKLWZpCi0KLSMgQ29weSBlY2hvIGFuZCBxdW90ZSB0aGUgY29weSBzdWl0YWJseSBmb3IgcGFzc2luZyB0byBsaWJ0b29sIGZyb20KLSMgdGhlIE1ha2VmaWxlLCBpbnN0ZWFkIG9mIHF1b3RpbmcgdGhlIG9yaWdpbmFsLCB3aGljaCBpcyB1c2VkIGxhdGVyLgotbHRfRUNITz0kRUNITwotaWYgdGVzdCAiWCRsdF9FQ0hPIiA9ICJYJENPTkZJR19TSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KLSAgIGx0X0VDSE89IiRDT05GSUdfU0hFTEwgXFxcJFxbJF0wIC0tZmFsbGJhY2stZWNobyIKLWZpCi0KLUFDX1NVQlNUKGx0X0VDSE8pCi1dKQogX0xUX0RFQ0woW10sIFtTSEVMTF0sIFsxXSwgW1NoZWxsIHRvIHVzZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHNdKQotX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLAotICAgIFtBbiBlY2hvIHByb2dyYW0gdGhhdCBkb2VzIG5vdCBpbnRlcnByZXQgYmFja3NsYXNoZXNdKQorX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLCBbQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXNdKQogXSkjIF9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICiAKIAorIyBfTFRfV0lUSF9TWVNST09UCisjIC0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtfTFRfV0lUSF9TWVNST09UXSwKK1tBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzeXNyb290XSkKK0FDX0FSR19XSVRIKFtzeXNyb290XSwKK1sgIC0td2l0aC1zeXNyb290Wz1ESVJdIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS5dLAorW10sIFt3aXRoX3N5c3Jvb3Q9bm9dKQorCitkbmwgbHRfc3lzcm9vdCB3aWxsIGFsd2F5cyBiZSBwYXNzZWQgdW5xdW90ZWQuICBXZSBxdW90ZSBpdCBoZXJlCitkbmwgaW4gY2FzZSB0aGUgdXNlciBwYXNzZWQgYSBkaXJlY3RvcnkgbmFtZS4KK2x0X3N5c3Jvb3Q9CitjYXNlICR7d2l0aF9zeXNyb290fSBpbiAjKAorIHllcykKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisgICBmaQorICAgOzsgIygKKyAvKikKKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKyAgIDs7ICMoCisgbm98JycpCisgICA7OyAjKAorICopCisgICBBQ19NU0dfUkVTVUxUKFske3dpdGhfc3lzcm9vdH1dKQorICAgQUNfTVNHX0VSUk9SKFtUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXSkKKyAgIDs7Citlc2FjCisKKyBBQ19NU0dfUkVTVUxUKFske2x0X3N5c3Jvb3Q6LW5vfV0pCitfTFRfREVDTChbXSwgW2x0X3N5c3Jvb3RdLCBbMF0sIFtUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIF1kbmwKK1tkZXBlbmRlbnQgbGlicmFyaWVzLCBhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLl0pXSkKKwogIyBfTFRfRU5BQkxFX0xPQ0sKICMgLS0tLS0tLS0tLS0tLS0tCiBtNF9kZWZ1bihbX0xUX0VOQUJMRV9MT0NLXSwKQEAgLTEyMzYsNyArMTI4MSw3IEBACiAgIDs7CiAqLSotaXJpeDYqKQogICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCi0gIGVjaG8gJ1sjXWxpbmUgX19vbGluZV9fICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgZWNobyAnWyNdbGluZSAnJExJTkVOTycgImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgogICAgIGlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KICAgICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KQEAgLTEzMjksMTQgKzEzNzQsMjcgQEAKICAgICBDRkxBR1M9IiRTQVZFX0NGTEFHUyIKICAgZmkKICAgOzsKLXNwYXJjKi0qc29sYXJpcyopCisqLSpzb2xhcmlzKikKICAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgogICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgogICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3Qub2AgaW4KICAgICAqNjQtYml0KikKICAgICAgIGNhc2UgJGx0X2N2X3Byb2dfZ251X2xkIGluCi0gICAgICB5ZXMqKSBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiIDs7CisgICAgICB5ZXMqKQorICAgICAgICBjYXNlICRob3N0IGluCisgICAgICAgIGk/ODYtKi1zb2xhcmlzKikKKyAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKKyAgICAgICAgICA7OworICAgICAgICBzcGFyYyotKi1zb2xhcmlzKikKKyAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiCisgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICAjIEdOVSBsZCAyLjIxIGludHJvZHVjZWQgX3NvbDIgZW11bGF0aW9ucy4gIFVzZSB0aGVtIGlmIGF2YWlsYWJsZS4KKyAgICAgICAgaWYgJHtMRC1sZH0gLVYgfCBncmVwIF9zb2wyID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICAgIExEPSIke0xELWxkfV9zb2wyIgorICAgICAgICBmaQorICAgICAgICA7OwogICAgICAgKikKIAlpZiAke0xELWxkfSAtNjQgLXIgLW8gY29uZnRlc3QyLm8gY29uZnRlc3QubyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KIAkgIExEPSIke0xELWxkfSAtNjQiCkBAIC0xMzU0LDE0ICsxNDEyLDQ3IEBACiBdKSMgX0xUX0VOQUJMRV9MT0NLCiAKIAorIyBfTFRfUFJPR19BUgorIyAtLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9QUk9HX0FSXSwKK1tBQ19DSEVDS19UT09MUyhBUiwgW2FyXSwgZmFsc2UpCis6ICR7QVI9YXJ9Cis6ICR7QVJfRkxBR1M9Y3J1fQorX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCitfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQorCitBQ19DQUNIRV9DSEVDSyhbZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnRdLCBbbHRfY3ZfYXJfYXRfZmlsZV0sCisgIFtsdF9jdl9hcl9hdF9maWxlPW5vCisgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSwKKyAgICAgW2VjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJworICAgICAgQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCisgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisJQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCisJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAgICAgXSkKKyAgXSkKKworaWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorICBhcmNoaXZlcl9saXN0X3NwZWM9CitlbHNlCisgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorZmkKK19MVF9ERUNMKFtdLCBbYXJjaGl2ZXJfbGlzdF9zcGVjXSwgWzFdLAorICBbSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyXSkKK10pIyBfTFRfUFJPR19BUgorCisKICMgX0xUX0NNRF9PTERfQVJDSElWRQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tCiBtNF9kZWZ1bihbX0xUX0NNRF9PTERfQVJDSElWRV0sCi1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQotdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQotX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSkKK1tfTFRfUFJPR19BUgogCiBBQ19DSEVDS19UT09MKFNUUklQLCBzdHJpcCwgOikKIHRlc3QgLXogIiRTVFJJUCIgJiYgU1RSSVA9OgpAQCAtMTM4MCwxOCArMTQ3MSwyNyBAQAogaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KICAgY2FzZSAkaG9zdF9vcyBpbgogICBvcGVuYnNkKikKLSAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkb2xkbGliIgorICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgLXQgXCR0b29sX29sZGxpYiIKICAgICA7OwogICAqKQotICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgXCRvbGRsaWIiCisgICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiBcJHRvb2xfb2xkbGliIgogICAgIDs7CiAgIGVzYWMKLSAgb2xkX2FyY2hpdmVfY21kcz0iJG9sZF9hcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRvbGRsaWIiCisgIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkdG9vbF9vbGRsaWIiCiBmaQorCitjYXNlICRob3N0X29zIGluCisgIGRhcndpbiopCisgICAgbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPXllcyA7OworICAqKQorICAgIGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj1ubyA7OworZXNhYwogX0xUX0RFQ0woW10sIFtvbGRfcG9zdGluc3RhbGxfY21kc10sIFsyXSkKIF9MVF9ERUNMKFtdLCBbb2xkX3Bvc3R1bmluc3RhbGxfY21kc10sIFsyXSkKIF9MVF9UQUdERUNMKFtdLCBbb2xkX2FyY2hpdmVfY21kc10sIFsyXSwKICAgICBbQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhbiBvbGQtc3R5bGUgYXJjaGl2ZV0pCitfTFRfREVDTChbXSwgW2xvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbl0sIFswXSwKKyAgICBbV2hldGhlciB0byB1c2UgYSBsb2NrIGZvciBvbGQgYXJjaGl2ZSBleHRyYWN0aW9uXSkKIF0pIyBfTFRfQ01EX09MRF9BUkNISVZFCiAKIApAQCAtMTQxNiwxNSArMTUxNiwxNSBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFtbXiBdXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCiAgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPmNvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0gICBlY2hvICIkYXNfbWU6X19vbGluZV9fOiBcJD8gPSAkYWNfc3RhdHVzIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyAiJGFjX291dGZpbGUiOyB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncyBvdGhlciB0aGFuIHRoZSB1c3VhbCBvdXRwdXQuCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID5jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID5jb25mdGVzdC5leHAKICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBjb25mdGVzdC5lcjIgfHwgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICAkMj15ZXMKQEAgLTE0NjQsNyArMTU2NCw3IEBACiAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICAgICAgIyBBcHBlbmQgYW55IGVycm9ycyB0byB0aGUgY29uZmlnLmxvZy4KICAgICAgICBjYXQgY29uZnRlc3QuZXJyIDE+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAgICAgJEVDSE8gIlgkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gY29uZnRlc3QuZXhwCisgICAgICAgJEVDSE8gIiRfbHRfbGlua2VyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAogICAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgogICAgICAgIGlmIGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgICAkMj15ZXMKQEAgLTE1MjcsNiArMTYyNywxMSBAQAogICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyOwogICAgIDs7CiAKKyAgbWludCopCisgICAgIyBPbiBNaU5UIHRoaXMgY2FuIHRha2UgYSBsb25nIHRpbWUgYW5kIHJ1biBvdXQgb2YgbWVtb3J5LgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyOworICAgIDs7CisKICAgYW1pZ2FvcyopCiAgICAgIyBPbiBBbWlnYU9TIHdpdGggcGRrc2gsIHRoaXMgdGVzdCB0YWtlcyBob3VycywgbGl0ZXJhbGx5LgogICAgICMgU28gd2UganVzdCBwdW50IGFuZCB1c2UgYSBtaW5pbXVtIGxpbmUgbGVuZ3RoIG9mIDgxOTIuCkBAIC0xNTUyLDYgKzE2NTcsMTEgQEAKICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49MTk2NjA4CiAgICAgOzsKIAorICBvczIqKQorICAgICMgVGhlIHRlc3QgdGFrZXMgYSBsb25nIHRpbWUgb24gT1MvMi4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MgorICAgIDs7CisKICAgb3NmKikKICAgICAjIERyLiBIYW5zIEVra2VoYXJkIFBsZXNzZXIgcmVwb3J0cyBzZWVpbmcgYSBrZXJuZWwgcGFuaWMgcnVubmluZyBjb25maWd1cmUKICAgICAjIGR1ZSB0byB0aGlzIHRlc3Qgd2hlbiBleGVjX2Rpc2FibGVfYXJnX2xpbWl0IGlzIDEgb24gVHJ1NjQuIEl0IGlzIG5vdApAQCAtMTU5MSw4ICsxNzAxLDggQEAKICAgICAgICMgSWYgdGVzdCBpcyBub3QgYSBzaGVsbCBidWlsdC1pbiwgd2UnbGwgcHJvYmFibHkgZW5kIHVwIGNvbXB1dGluZyBhCiAgICAgICAjIG1heGltdW0gbGVuZ3RoIHRoYXQgaXMgb25seSBoYWxmIG9mIHRoZSBhY3R1YWwgbWF4aW11bSBsZW5ndGgsIGJ1dAogICAgICAgIyB3ZSBjYW4ndCB0ZWxsLgotICAgICAgd2hpbGUgeyB0ZXN0ICJYImAkU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8gIlgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAotCSAgICAgICAgID0gIlhYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCisgICAgICB3aGlsZSB7IHRlc3QgIlgiYGVudiBlY2hvICIkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAorCSAgICAgICAgID0gIlgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIjsgfSA+L2Rldi9udWxsIDI+JjEgJiYKIAkgICAgICB0ZXN0ICRpICE9IDE3ICMgMS8yIE1CIHNob3VsZCBiZSBlbm91Z2gKICAgICAgIGRvCiAgICAgICAgIGk9YGV4cHIgJGkgKyAxYApAQCAtMTY0Myw3ICsxNzUzLDcgQEAKICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgogICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgorWyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWYgSEFWRV9ETEZDTl9ICkBAIC0xNjg0LDcgKzE3OTQsMTMgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotdm9pZCBmbm9yZCgpIHsgaW50IGk9NDI7fQorLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCitpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisjZW5kaWYKKworaW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CiBpbnQgbWFpbiAoKQogewogICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKQEAgLTE2OTMsNyArMTgwOSwxMSBAQAogICBpZiAoc2VsZikKICAgICB7CiAgICAgICBpZiAoZGxzeW0gKHNlbGYsImZub3JkIikpICAgICAgIHN0YXR1cyA9ICRsdF9kbG5vX3VzY29yZTsKLSAgICAgIGVsc2UgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQiKSkgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICBlbHNlCisgICAgICAgIHsKKwkgIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpICBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgICAgICBlbHNlIHB1dHMgKGRsZXJyb3IgKCkpOworCX0KICAgICAgIC8qIGRsY2xvc2UgKHNlbGYpOyAqLwogICAgIH0KICAgZWxzZQpAQCAtMTg2OSwxNiArMTk4OSwxNiBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFtbXiBdXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCiAgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPm91dC9jb25mdGVzdC5lcnIpCiAgICBhY19zdGF0dXM9JD8KICAgIGNhdCBvdXQvY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgIGVjaG8gIiRhc19tZTpfX29saW5lX186IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JkFTX01FU1NBR0VfTE9HX0ZECiAgICBpZiAoZXhpdCAkYWNfc3RhdHVzKSAmJiB0ZXN0IC1zIG91dC9jb25mdGVzdDIuJGFjX29iamV4dAogICAgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3MKLSAgICAgJEVDSE8gIlgkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIG91dC9jb25mdGVzdC5lcnIgPm91dC9jb25mdGVzdC5lcjIKICAgICAgaWYgdGVzdCAhIC1zIG91dC9jb25mdGVzdC5lcjIgfHwgZGlmZiBvdXQvY29uZnRlc3QuZXhwIG91dC9jb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgIF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKT15ZXMKQEAgLTIwMzcsNiArMjE1Nyw3IEBACiBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX09CSkRVTVBdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCiBBQ19NU0dfQ0hFQ0tJTkcoW2R5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljc10pCiBtNF9pZihbJDFdLAogCVtdLCBbCkBAIC0yMDQ1LDE2ICsyMTY2LDIzIEBACiAgICAgZGFyd2luKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LywvTFIvIiA7OwogICAgICopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8iIDs7CiAgIGVzYWMKLSAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgaWYgJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7JyA+L2Rldi9udWxsIDsgdGhlbgorICBjYXNlICRob3N0X29zIGluCisgICAgbWluZ3cqIHwgY2VnY2MqKSBsdF9zZWRfc3RyaXBfZXE9InMsPVwoW1tBLVphLXpdXTpcKSxcMSxnIiA7OworICAgICopIGx0X3NlZF9zdHJpcF9lcT0icyw9LywvLGciIDs7CisgIGVzYWMKKyAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgJGx0X3NlZF9zdHJpcF9lcWAKKyAgY2FzZSAkbHRfc2VhcmNoX3BhdGhfc3BlYyBpbgorICAqXDsqKQogICAgICMgaWYgdGhlIHBhdGggY29udGFpbnMgIjsiIHRoZW4gd2UgYXNzdW1lIGl0IHRvIGJlIHRoZSBzZXBhcmF0b3IKICAgICAjIG90aGVyd2lzZSBkZWZhdWx0IHRvIHRoZSBzdGFuZGFyZCBwYXRoIHNlcGFyYXRvciAoaS5lLiAiOiIpIC0gaXQgaXMKICAgICAjIGFzc3VtZWQgdGhhdCBubyBwYXJ0IG9mIGEgbm9ybWFsIHBhdGhuYW1lIGNvbnRhaW5zICI7IiBidXQgdGhhdCBzaG91bGQKICAgICAjIG9rYXkgaW4gdGhlIHJlYWwgd29ybGQgd2hlcmUgIjsiIGluIGRpcnBhdGhzIGlzIGl0c2VsZiBwcm9ibGVtYXRpYy4KLSAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0gIGVsc2UKLSAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0gIGZpCisgICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgJ3MvOy8gL2cnYAorICAgIDs7CisgICopCisgICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgOzsKKyAgZXNhYwogICAjIE9rLCBub3cgd2UgaGF2ZSB0aGUgcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcywgd2UgY2FuIHN0ZXAgdGhyb3VnaCBpdAogICAjIGFuZCBhZGQgbXVsdGlsaWIgZGlyIGlmIG5lY2Vzc2FyeS4KICAgbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9CkBAIC0yMDY3LDcgKzIxOTUsNyBAQAogCWx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoIgogICAgIGZpCiAgIGRvbmUKLSAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjIHwgYXdrICcKKyAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCBhd2sgJwogQkVHSU4ge1JTPSIgIjsgRlM9Ii98XG4iO30gewogICBsdF9mb289IiI7CiAgIGx0X2NvdW50PTA7CkBAIC0yMDg3LDcgKzIyMTUsMTMgQEAKICAgaWYgKGx0X2ZvbyAhPSAiIikgeyBsdF9mcmVxW1tsdF9mb29dXSsrOyB9CiAgIGlmIChsdF9mcmVxW1tsdF9mb29dXSA9PSAxKSB7IHByaW50IGx0X2ZvbzsgfQogfSdgCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gJGx0X3NlYXJjaF9wYXRoX3NwZWNgCisgICMgQVdLIHByb2dyYW0gYWJvdmUgZXJyb25lb3VzbHkgcHJlcGVuZHMgJy8nIHRvIEM6L2Rvcy9wYXRocworICAjIGZvciB0aGVzZSBob3N0cy4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8XAorICAgICAgJFNFRCAncywvXChbW0EtWmEtel1dOlwpLFwxLGcnYCA7OworICBlc2FjCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRsdF9OTDJTUGAKIGVsc2UKICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliIgogZmldKQpAQCAtMjExMyw3ICsyMjQ3LDcgQEAKIAogY2FzZSAkaG9zdF9vcyBpbgogYWl4MyopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZS5hJwogICBzaGxpYnBhdGhfdmFyPUxJQlBBVEgKIApAQCAtMjEyMiw3ICsyMjU2LDcgQEAKICAgOzsKIAogYWl4W1s0LTldXSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwpAQCAtMjE3NSw3ICsyMzA5LDcgQEAKICAgbTY4aykKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLml4bGlicmFyeSAkbGlibmFtZS5hJwogICAgICMgQ3JlYXRlICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgZW50cmllcyBpbiAvc3lzL2xpYnMuCi0gICAgZmluaXNoX2V2YWw9J2ZvciBsaWIgaW4gYGxzICRsaWJkaXIvKi5peGxpYnJhcnkgMj4vZGV2L251bGxgOyBkbyBsaWJuYW1lPWAkRUNITyAiWCRsaWIiIHwgJFhzZWQgLWUgJ1wnJ3MlXi4qL1woW1teL11dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKKyAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbW14vXV0qXClcLml4bGlicmFyeSQlXDElJ1wnJ2A7IHRlc3QgJFJNIC9zeXMvbGlicy8ke2xpYm5hbWV9X2l4bGlicmFyeS5hOyAkc2hvdyAiY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSI7IGNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgfHwgZXhpdCAxOyBkb25lJwogICAgIDs7CiAgIGVzYWMKICAgOzsKQEAgLTIxODcsNyArMjMyMSw3IEBACiAgIDs7CiAKIGJzZGlbWzQ1XV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCkBAIC0yMjA2LDggKzIzNDAsOSBAQAogICBuZWVkX3ZlcnNpb249bm8KICAgbmVlZF9saWJfcHJlZml4PW5vCiAKLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKyAgeWVzLCopCisgICAgIyBnY2MKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KQEAgLTIyMjgsMzYgKzIzNjMsODMgQEAKICAgICBjeWd3aW4qKQogICAgICAgIyBDeWd3aW4gRExMcyB1c2UgJ2N5ZycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCiAgICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL2N5Zy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIgL2xpYi93MzJhcGkgL2xpYiAvdXNyL2xvY2FsL2xpYiIKK200X2lmKFskMV0sIFtdLFsKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAvdXNyL2xpYi93MzJhcGkiXSkKICAgICAgIDs7CiAgICAgbWluZ3cqIHwgY2VnY2MqKQogICAgICAgIyBNaW5HVyBETExzIHVzZSB0cmFkaXRpb25hbCAnbGliJyBwcmVmaXgKICAgICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgJEdSRVAgIl5saWJyYXJpZXM6IiB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IFskR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGxdOyB0aGVuCi0gICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEggcHJpbnRlZCBieQotICAgICAgICAjIG1pbmd3IGdjYywgYnV0IHdlIGFyZSBydW5uaW5nIG9uIEN5Z3dpbi4gR2NjIHByaW50cyBpdHMgc2VhcmNoCi0gICAgICAgICMgcGF0aCB3aXRoIDsgc2VwYXJhdG9ycywgYW5kIHdpdGggZHJpdmUgbGV0dGVycy4gV2UgY2FuIGhhbmRsZSB0aGUKLSAgICAgICAgIyBkcml2ZSBsZXR0ZXJzIChjeWd3aW4gZmlsZXV0aWxzIHVuZGVyc3RhbmRzIHRoZW0pLCBzbyBsZWF2ZSB0aGVtLAotICAgICAgICAjIGVzcGVjaWFsbHkgYXMgd2UgbWlnaHQgcGFzcyBmaWxlcyBmb3VuZCB0aGVyZSB0byBhIG1pbmd3IG9iamR1bXAsCi0gICAgICAgICMgd2hpY2ggd291bGRuJ3QgdW5kZXJzdGFuZCBhIGN5Z3dpbmlmaWVkIHBhdGguIEFoaC4KLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSAgICAgIGVsc2UKLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSAgICAgIGZpCiAgICAgICA7OwogICAgIHB3MzIqKQogICAgICAgIyBwdzMyIERMTHMgdXNlICdwdycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCiAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgIDs7CiAgICAgZXNhYworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgOzsKKworICAqLGNsKikKKyAgICAjIE5hdGl2ZSBNU1ZDCisgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKworICAgIGNhc2UgJGJ1aWxkX29zIGluCisgICAgbWluZ3cqKQorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorICAgICAgbHRfc2F2ZV9pZnM9JElGUworICAgICAgSUZTPSc7JworICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorICAgICAgZG8KKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorICAgICAgZG9uZQorICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorICAgICAgOzsKKyAgICBjeWd3aW4qKQorICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICA7OworICAgICopCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgorICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorICAgICAgZWxzZQorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICBmaQorICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisgICAgICA7OworICAgIGVzYWMKKworICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKyAgICAgICAkUk0gXCRkbHBhdGgnCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKICAgICA7OwogCiAgICopCisgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwogICAgIDs7CiAgIGVzYWMKLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgIHNobGlicGF0aF92YXI9UEFUSAogICA7OwpAQCAtMjI3OCw3ICsyNDYwLDcgQEAKICAgOzsKIAogZGd1eCopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwpAQCAtMjI4NiwxMCArMjQ2OCw2IEBACiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIDs7CiAKLWZyZWVic2QxKikKLSAgZHluYW1pY19saW5rZXI9bm8KLSAgOzsKLQogZnJlZWJzZCogfCBkcmFnb25mbHkqKQogICAjIERyYWdvbkZseSBkb2VzIG5vdCBoYXZlIGFvdXQuICBXaGVuL2lmIHRoZXkgaW1wbGVtZW50IGEgbmV3CiAgICMgdmVyc2lvbmluZyBtZWNoYW5pc20sIGFkanVzdCB0aGlzLgpAQCAtMjI5Nyw3ICsyNDc1LDcgQEAKICAgICBvYmpmb3JtYXQ9YC91c3IvYmluL29iamZvcm1hdGAKICAgZWxzZQogICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBmcmVlYnNkW1sxMjNdXSopIG9iamZvcm1hdD1hb3V0IDs7CisgICAgZnJlZWJzZFtbMjNdXS4qKSBvYmpmb3JtYXQ9YW91dCA7OwogICAgICopIG9iamZvcm1hdD1lbGYgOzsKICAgICBlc2FjCiAgIGZpCkBAIC0yMzE1LDcgKzI0OTMsNyBAQAogICBlc2FjCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgZnJlZWJzZDIqKQorICBmcmVlYnNkMi4qKQogICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgICA7OwogICBmcmVlYnNkMy5bWzAxXV0qIHwgZnJlZWJzZGVsZjMuW1swMV1dKikKQEAgLTIzMzUsMTIgKzI1MTMsMjYgQEAKICAgOzsKIAogZ251KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHttYWpvcn0gJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIDs7CisKK2hhaWt1KikKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBydW50aW1lX2xvYWRlciIKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIDs7CiAKQEAgLTIzODYsMTIgKzI1NzgsMTQgQEAKICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgIDs7CiAgIGVzYWMKLSAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUuCisgICMgSFAtVVggcnVucyAqcmVhbGx5KiBzbG93bHkgdW5sZXNzIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG1vZGUgNTU1LCAuLi4KICAgcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNTU1ICRsaWInCisgICMgb3IgZmFpbHMgb3V0cmlnaHQsIHNvIG92ZXJyaWRlIGF0b21pY2FsbHk6CisgIGluc3RhbGxfb3ZlcnJpZGVfbW9kZT01NTUKICAgOzsKIAogaW50ZXJpeFtbMy05XV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCkBAIC0yNDA3LDcgKzI2MDEsNyBAQAogICAgIG5vbnN0b3B1eCopIHZlcnNpb25fdHlwZT1ub25zdG9wdXggOzsKICAgICAqKQogCWlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KLQkJdmVyc2lvbl90eXBlPWxpbnV4CisJCXZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKIAllbHNlCiAJCXZlcnNpb25fdHlwZT1pcml4CiAJZmkgOzsKQEAgLTI0NDQsOSArMjYzOCw5IEBACiAgIGR5bmFtaWNfbGlua2VyPW5vCiAgIDs7CiAKLSMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KLWxpbnV4KiB8IGsqYnNkKi1nbnUpCi0gIHZlcnNpb25fdHlwZT1saW51eAorIyBUaGlzIG11c3QgYmUgZ2xpYmMvRUxGLgorbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCkBAIC0yNDU0LDI5ICsyNjQ4LDMxIEBACiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1uICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworCiAgICMgU29tZSBiaW51dGlscyBsZCBhcmUgcGF0Y2hlZCB0byBzZXQgRFRfUlVOUEFUSAotICBzYXZlX0xERkxBR1M9JExERkxBR1MKLSAgc2F2ZV9saWJkaXI9JGxpYmRpcgotICBldmFsICJsaWJkaXI9L2Zvbzsgd2w9XCIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSlcIjsgXAotICAgICAgIExERkxBR1M9XCJcJExERkxBR1MgJF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpXCIiCi0gIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sW10pXSwKLSAgICBbQVNfSUYoWyAoJE9CSkRVTVAgLXAgY29uZnRlc3QkYWNfZXhlZXh0KSAyPi9kZXYvbnVsbCB8IGdyZXAgIlJVTlBBVEguKiRsaWJkaXIiID4vZGV2L251bGxdLAotICAgICAgIFtzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzXSldKQotICBMREZMQUdTPSRzYXZlX0xERkxBR1MKLSAgbGliZGlyPSRzYXZlX2xpYmRpcgorICBBQ19DQUNIRV9WQUwoW2x0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aF0sCisgICAgW2x0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICAgIHNhdmVfTERGTEFHUz0kTERGTEFHUworICAgIHNhdmVfbGliZGlyPSRsaWJkaXIKKyAgICBldmFsICJsaWJkaXI9L2Zvbzsgd2w9XCIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSlcIjsgXAorCSBMREZMQUdTPVwiXCRMREZMQUdTICRfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKVwiIgorICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sW10pXSwKKyAgICAgIFtBU19JRihbICgkT0JKRFVNUCAtcCBjb25mdGVzdCRhY19leGVleHQpIDI+L2Rldi9udWxsIHwgZ3JlcCAiUlVOUEFUSC4qJGxpYmRpciIgPi9kZXYvbnVsbF0sCisJIFtsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzXSldKQorICAgIExERkxBR1M9JHNhdmVfTERGTEFHUworICAgIGxpYmRpcj0kc2F2ZV9saWJkaXIKKyAgICBdKQorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9JGx0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aAogCiAgICMgVGhpcyBpbXBsaWVzIG5vIGZhc3RfaW5zdGFsbCwgd2hpY2ggaXMgdW5hY2NlcHRhYmxlLgogICAjIFNvbWUgcmV3b3JrIHdpbGwgYmUgbmVlZGVkIHRvIGFsbG93IGZvciBmYXN0X2luc3RhbGwKICAgIyBiZWZvcmUgdGhpcyBjYW4gYmUgZW5hYmxlZC4KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogCi0gICMgQWRkIEFCSS1zcGVjaWZpYyBkaXJlY3RvcmllcyB0byB0aGUgc3lzdGVtIGxpYnJhcnkgcGF0aC4KLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWI2NCAvdXNyL2xpYjY0IC9saWIgL3Vzci9saWIiCi0KICAgIyBBcHBlbmQgbGQuc28uY29uZiBjb250ZW50cyB0byB0aGUgc2VhcmNoIHBhdGgKICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KLSAgICBsdF9sZF9leHRyYT1gYXdrICcvXmluY2x1ZGUgLyB7IHN5c3RlbShzcHJpbnRmKCJjZCAvZXRjOyBjYXQgJXMgMj4vZGV2L251bGwiLCBcWyRdMikpOyBza2lwID0gMTsgfSB7IGlmICghc2tpcCkgcHJpbnQgXFskXTA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nOy9eJC9kJyB8IHRyICdcbicgJyAnYAotICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMgJGx0X2xkX2V4dHJhIgorICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFxbJF0yKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcWyRdMDsgc2tpcCA9IDA7IH0nIDwgL2V0Yy9sZC5zby5jb25mIHwgJFNFRCAtZSAncy8jLiovLzsvXlsJIF0qaHdjYXBbCSBdL2Q7cy9bOiwJXS8gL2c7cy89W149XSokLy87cy89W149IF0qIC8gL2c7cy8iLy9nOy9eJC9kJyB8IHRyICdcbicgJyAnYAorICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliICRsdF9sZF9leHRyYSIKICAgZmkKIAogICAjIFdlIHVzZWQgdG8gdGVzdCBmb3IgL2xpYi9sZC5zby4xIGFuZCBkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMgb24KQEAgLTI0ODgsNiArMjY4NCwxOCBAQAogICBkeW5hbWljX2xpbmtlcj0nR05VL0xpbnV4IGxkLnNvJwogICA7OwogCituZXRic2RlbGYqLWdudSkKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgZHluYW1pY19saW5rZXI9J05ldEJTRCBsZC5lbGZfc28nCisgIDs7CisKIG5ldGJzZCopCiAgIHZlcnNpb25fdHlwZT1zdW5vcwogICBuZWVkX2xpYl9wcmVmaXg9bm8KQEAgLTI1MDcsNyArMjcxNSw3IEBACiAgIDs7CiAKIG5ld3NvczYpCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC0yNTc2LDcgKzI3ODQsNyBAQAogICA7OwogCiBzb2xhcmlzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTI2MDEsNyArMjgwOSw3IEBACiAgIDs7CiAKIHN5c3Y0IHwgc3lzdjQuMyopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMjYyNSw3ICsyODMzLDcgQEAKIAogc3lzdjQqTVAqKQogICBpZiB0ZXN0IC1kIC91c3IvbmVjIDt0aGVuCi0gICAgdmVyc2lvbl90eXBlPWxpbnV4CisgICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9LiR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9LiRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3InCiAgICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKQEAgLTI2NTYsNyArMjg2NCw3IEBACiAKIHRwZiopCiAgICMgVFBGIGlzIGEgY3Jvc3MtdGFyZ2V0IG9ubHkuICBQcmVmZXJyZWQgY3Jvc3MtaG9zdCA9IEdOVS9MaW51eC4KLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTI2NjYsNyArMjg3NCw3IEBACiAgIDs7CiAKIHV0czQqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKQEAgLTI3MDgsNiArMjkxNiw4IEBACiAgICAgVGhlIGxhc3QgbmFtZSBpcyB0aGUgb25lIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3aXRoIC1sTkFNRV1dKQogX0xUX0RFQ0woW10sIFtzb25hbWVfc3BlY10sIFsxXSwKICAgICBbW1RoZSBjb2RlZCBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBuYW1lXV0pCitfTFRfREVDTChbXSwgW2luc3RhbGxfb3ZlcnJpZGVfbW9kZV0sIFsxXSwKKyAgICBbUGVybWlzc2lvbiBtb2RlIG92ZXJyaWRlIGZvciBpbnN0YWxsYXRpb24gb2Ygc2hhcmVkIGxpYnJhcmllc10pCiBfTFRfREVDTChbXSwgW3Bvc3RpbnN0YWxsX2NtZHNdLCBbMl0sCiAgICAgW0NvbW1hbmQgdG8gdXNlIGFmdGVyIGluc3RhbGxhdGlvbiBvZiBhIHNoYXJlZCBhcmNoaXZlXSkKIF9MVF9ERUNMKFtdLCBbcG9zdHVuaW5zdGFsbF9jbWRzXSwgWzJdLApAQCAtMjgyMCw2ICszMDMwLDcgQEAKIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorbTRfcmVxdWlyZShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKWRubAogCiBBQ19BUkdfV0lUSChbZ251LWxkXSwKICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nbnUtbGRdLApAQCAtMjk0MSw2ICszMTUyLDExIEBACiBlc2FjCiByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiBjYXNlICRob3N0X29zIGluCisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisgICAgZmkKKyAgICA7OwogICBkYXJ3aW4qKQogICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCkBAIC0yOTQ5LDggKzMxNjUsOCBAQAogICAgIGZpCiAgICAgOzsKIGVzYWMKLV9MVF9ERUNMKFtdLCBbcmVsb2FkX2ZsYWddLCBbMV0sIFtIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzXSlkbmwKLV9MVF9ERUNMKFtdLCBbcmVsb2FkX2NtZHNdLCBbMl0pZG5sCitfTFRfVEFHREVDTChbXSwgW3JlbG9hZF9mbGFnXSwgWzFdLCBbSG93IHRvIGNyZWF0ZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlc10pZG5sCitfTFRfVEFHREVDTChbXSwgW3JlbG9hZF9jbWRzXSwgWzJdKWRubAogXSkjIF9MVF9DTURfUkVMT0FECiAKIApAQCAtMzAwMiwxNiArMzIxOCwxOCBAQAogICAjIEJhc2UgTVNZUy9NaW5HVyBkbyBub3QgcHJvdmlkZSB0aGUgJ2ZpbGUnIGNvbW1hbmQgbmVlZGVkIGJ5CiAgICMgZnVuY193aW4zMl9saWJpZCBzaGVsbCBmdW5jdGlvbiwgc28gdXNlIGEgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLAogICAjIHVubGVzcyB3ZSBmaW5kICdmaWxlJywgZm9yIGV4YW1wbGUgYmVjYXVzZSB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLgotICBpZiAoIGZpbGUgLyApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAjIGZ1bmNfd2luMzJfbGliaWQgYXNzdW1lcyBCU0Qgbm0sIHNvIGRpc2FsbG93IGl0IGlmIHVzaW5nIE1TIGR1bXBiaW4uCisgIGlmICggdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiQlNEIG5tIiAmJiBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICBlbHNlCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCiAgIGZpCiAgIDs7CiAKLWNlZ2NjKQorY2VnY2MqKQogICAjIHVzZSB0aGUgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLiBTZWUgbWluZ3cqLgogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZS1hcm0tLipsaXR0bGUoLiphcmNoaXRlY3R1cmU6IGFybSk/JwogICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCkBAIC0zMDQxLDYgKzMyNTksMTAgQEAKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAoraGFpa3UqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCiBocHV4MTAuMjAqIHwgaHB1eDExKikKICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQogICBjYXNlICRob3N0X2NwdSBpbgpAQCAtMzA0OSwxMSArMzI3MSwxMSBAQAogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2hwdXgzMi9saWJjLnNvCiAgICAgOzsKICAgaHBwYSo2NCopCi0gICAgW2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzWzAtOV1bMC05XVswLTldfEVMRi1bMC05XVswLTldKSBzaGFyZWQgb2JqZWN0IGZpbGUgLSBQQS1SSVNDIFswLTldLlswLTldJ10KKyAgICBbbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGWyAtXVswLTldWzAtOV0pKC1iaXQpPyggW0xNXVNCKT8gc2hhcmVkIG9iamVjdCggZmlsZSk/WywgLV0qIFBBLVJJU0MgWzAtOV1cLlswLTldJ10KICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9wYTIwXzY0L2xpYmMuc2wKICAgICA7OwogICAqKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzW1swLTldXVtbMC05XV1bWzAtOV1dfFBBLVJJU0NbWzAtOV1dLltbMC05XV0pIHNoYXJlZCBsaWJyYXJ5JworICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzW1swLTldXVtbMC05XV1bWzAtOV1dfFBBLVJJU0NbWzAtOV1dXC5bWzAtOV1dKSBzaGFyZWQgbGlicmFyeScKICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJjLnNsCiAgICAgOzsKICAgZXNhYwpAQCAtMzA3NCwxMiArMzI5NiwxMiBAQAogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCi0jIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCi1saW51eCogfCBrKmJzZCotZ251KQorIyBUaGlzIG11c3QgYmUgZ2xpYmMvRUxGLgorbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCi1uZXRic2QqKQorbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW1teL11dKyhcLnNvXC5bWzAtOV1dK1wuW1swLTldXSt8X3BpY1wuYSkkJwogICBlbHNlCkBAIC0zMTUzLDYgKzMzNzUsMjEgQEAKICAgOzsKIGVzYWMKIF0pCisKK2ZpbGVfbWFnaWNfZ2xvYj0KK3dhbnRfbm9jYXNlZ2xvYj1ubworaWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICBtaW5ndyogfCBwdzMyKikKKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisgICAgZWxzZQorICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bW1wxXV1cL1tbXDFdXVwvZzsvZyJgCisgICAgZmkKKyAgICA7OworICBlc2FjCitmaQorCiBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCkBAIC0zMTYwLDcgKzMzOTcsMTEgQEAKIF9MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCiAgICAgW01ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzXSkKIF9MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19jbWRdLCBbMV0sCi0gICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKKyAgICBbQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCitfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfZ2xvYl0sIFsxXSwKKyAgICBbSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorX0xUX0RFQ0woW10sIFt3YW50X25vY2FzZWdsb2JdLCBbMV0sCisgICAgW0ZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCiBdKSMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAogCiAKQEAgLTMyMTcsNyArMzQ1OCwxOSBAQAogICBOTT0iJGx0X2N2X3BhdGhfTk0iCiBlbHNlCiAgICMgRGlkbid0IGZpbmQgYW55IEJTRCBjb21wYXRpYmxlIG5hbWUgbGlzdGVyLCBsb29rIGZvciBkdW1wYmluLgotICBBQ19DSEVDS19UT09MUyhEVU1QQklOLCBbImR1bXBiaW4gLXN5bWJvbHMiICJsaW5rIC1kdW1wIC1zeW1ib2xzIl0sIDopCisgIGlmIHRlc3QgLW4gIiREVU1QQklOIjsgdGhlbiA6CisgICAgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGVsc2UKKyAgICBBQ19DSEVDS19UT09MUyhEVU1QQklOLCBbZHVtcGJpbiAibGluayAtZHVtcCJdLCA6KQorICAgIGNhc2UgYCREVU1QQklOIC1zeW1ib2xzIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCisgICAgKkNPRkYqKQorICAgICAgRFVNUEJJTj0iJERVTVBCSU4gLXN5bWJvbHMiCisgICAgICA7OworICAgICopCisgICAgICBEVU1QQklOPToKKyAgICAgIDs7CisgICAgZXNhYworICBmaQogICBBQ19TVUJTVChbRFVNUEJJTl0pCiAgIGlmIHRlc3QgIiREVU1QQklOIiAhPSAiOiI7IHRoZW4KICAgICBOTT0iJERVTVBCSU4iCkBAIC0zMjMwLDEzICszNDgzLDEzIEBACiBBQ19DQUNIRV9DSEVDSyhbdGhlIG5hbWUgbGlzdGVyICgkTk0pIGludGVyZmFjZV0sIFtsdF9jdl9ubV9pbnRlcmZhY2VdLAogICBbbHRfY3Zfbm1faW50ZXJmYWNlPSJCU0Qgbm0iCiAgIGVjaG8gImludCBzb21lX3ZhcmlhYmxlID0gMDsiID4gY29uZnRlc3QuJGFjX2V4dAotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkYWNfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGFjX2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgKGV2YWwgIiRhY19jb21waWxlIiAyPmNvbmZ0ZXN0LmVycikKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0gIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICROTSBcXFwiY29uZnRlc3QuJGFjX29iamV4dFxcXCJcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICROTSBcXFwiY29uZnRlc3QuJGFjX29iamV4dFxcXCJcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgKGV2YWwgIiROTSBcImNvbmZ0ZXN0LiRhY19vYmpleHRcIiIgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQpCiAgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiBvdXRwdXRcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86IG91dHB1dFwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICBjYXQgY29uZnRlc3Qub3V0ID4mQVNfTUVTU0FHRV9MT0dfRkQKICAgaWYgJEdSRVAgJ0V4dGVybmFsLipzb21lX3ZhcmlhYmxlJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KICAgICBsdF9jdl9ubV9pbnRlcmZhY2U9Ik1TIGR1bXBiaW4iCkBAIC0zMjUxLDYgKzM1MDQsNjcgQEAKIGRubCBBQ19ERUZVTihbQU1fUFJPR19OTV0sIFtdKQogZG5sIEFDX0RFRlVOKFtBQ19QUk9HX05NXSwgW10pCiAKKyMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgaG93IHRvIGRldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkKKyMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgbGluayBsaWJyYXJ5LgorIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcworbTRfZGVmdW4oW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSwKK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pCittNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSkKK200X3JlcXVpcmUoW19MVF9ERUNMX0RMTFRPT0xdKQorQUNfQ0FDSEVfQ0hFQ0soW2hvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXNdLAorbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQsCitbbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisKK2Nhc2UgJGhvc3Rfb3MgaW4KK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorICAqLS1pZGVudGlmeS1zdHJpY3QqKQorICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorICAgIDs7CisgICopCisgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisgICAgOzsKKyAgZXNhYworICA7OworKikKKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKyAgOzsKK2VzYWMKK10pCitzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKworX0xUX0RFQ0woW10sIFtzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZF0sIFsxXSwKKyAgICBbQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllc10pCitdKSMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKKworCisjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBsb2NhdGUgdGhlIG1hbmlmZXN0IHRvb2wKK200X2RlZnVuKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSwKK1tBQ19DSEVDS19UT09MKE1BTklGRVNUX1RPT0wsIG10LCA6KQordGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKK0FDX0NBQ0hFX0NIRUNLKFtpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2xdLCBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sXSwKKyAgW2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworICBmaQorICBybSAtZiBjb25mdGVzdCpdKQoraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKyAgTUFOSUZFU1RfVE9PTD06CitmaQorX0xUX0RFQ0woW10sIFtNQU5JRkVTVF9UT09MXSwgWzFdLCBbTWFuaWZlc3QgdG9vbF0pZG5sCitdKSMgX0xUX1BBVEhfTUFOSUZFU1RfVE9PTAorCiAKICMgTFRfTElCX00KICMgLS0tLS0tLS0KQEAgLTMyNTksNyArMzU3Myw3IEBACiBbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAogTElCTT0KIGNhc2UgJGhvc3QgaW4KLSotKi1iZW9zKiB8ICotKi1jeWd3aW4qIHwgKi0qLXB3MzIqIHwgKi0qLWRhcndpbiopCisqLSotYmVvcyogfCAqLSotY2VnY2MqIHwgKi0qLWN5Z3dpbiogfCAqLSotaGFpa3UqIHwgKi0qLXB3MzIqIHwgKi0qLWRhcndpbiopCiAgICMgVGhlc2Ugc3lzdGVtIGRvbid0IGhhdmUgbGlibSwgb3IgZG9uJ3QgbmVlZCBpdAogICA7OwogKi1uY3Itc3lzdjQuMyopCkBAIC0zMjg3LDcgKzM2MDEsMTIgQEAKIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0KIAogaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLWZuby1idWlsdGluJworICBjYXNlICRjY19iYXNlbmFtZSBpbgorICBudmNjKikKKyAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtWGNvbXBpbGVyIC1mbm8tYnVpbHRpbicgOzsKKyAgKikKKyAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtZm5vLWJ1aWx0aW4nIDs7CisgIGVzYWMKIAogICBfTFRfQ09NUElMRVJfT1BUSU9OKFtpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9uc10sCiAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnMsCkBAIC0zMzA0LDYgKzM2MjMsNyBAQAogbTRfZGVmdW4oW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdLAogW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19BV0tdKWRubAogQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCiBBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCkBAIC0zMzcxLDggKzM2OTEsOCBAQAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKIAogIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKVtbIF1dKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCiAKICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogb3B0X2NyPQpAQCAtMzM5Niw2ICszNzE2LDcgQEAKICAgICAjIHdoaWNoIHN0YXJ0IHdpdGggQCBvciA/LgogICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRBV0sgWyciXAogIiAgICAge2xhc3Rfc2VjdGlvbj1zZWN0aW9uOyBzZWN0aW9uPVwkIDN9OyJcCisiICAgICAvXkNPRkYgU1lNQk9MIFRBQkxFL3tmb3IoaSBpbiBoaWRlKSBkZWxldGUgaGlkZVtpXX07IlwKICIgICAgIC9TZWN0aW9uIGxlbmd0aCAuKiNyZWxvY3MuKihwaWNrIGFueSkve2hpZGVbbGFzdF9zZWN0aW9uXT0xfTsiXAogIiAgICAgXCQgMCF+L0V4dGVybmFsICpcfC97bmV4dH07IlwKICIgICAgIC8gMCsgVU5ERUYgL3tuZXh0fTsgLyBVTkRFRiBcKFtefF1cKSooKS97bmV4dH07IlwKQEAgLTM0MDgsNiArMzcyOSw3IEBACiAgIGVsc2UKICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICBmaQorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCiAKICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCiAgIHBpcGVfd29ya3M9bm8KQEAgLTM0MjksNyArMzc1MSw3IEBACiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCiAgICAgbmxpc3Q9Y29uZnRlc3Qubm0KLSAgICBpZiBBQ19UUllfRVZBTChOTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRubGlzdCkgJiYgdGVzdCAtcyAiJG5saXN0IjsgdGhlbgorICAgIGlmIEFDX1RSWV9FVkFMKE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiBcPiAkbmxpc3QpICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KICAgICAgICMgVHJ5IHNvcnRpbmcgYW5kIHVuaXF1aWZ5aW5nIHRoZSBvdXRwdXQuCiAgICAgICBpZiBzb3J0ICIkbmxpc3QiIHwgdW5pcSA+ICIkbmxpc3QiVDsgdGhlbgogCW12IC1mICIkbmxpc3QiVCAiJG5saXN0IgpAQCAtMzQ0MSw2ICszNzYzLDE4IEBACiAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAorI2Vsc2UKKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVCBjb25zdAorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTM0NTIsNyArMzc4Niw3IEBACiAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKIAogLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotY29uc3Qgc3RydWN0IHsKK0xUQCZ0QF9ETFNZTV9DT05TVCBzdHJ1Y3QgewogICBjb25zdCBjaGFyICpuYW1lOwogICB2b2lkICAgICAgICphZGRyZXNzOwogfQpAQCAtMzQ3OCwxNSArMzgxMiwxNSBAQAogX0xUX0VPRgogCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwogCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCiAJICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAJICAgIHBpcGVfd29ya3M9eWVzCiAJICBmaQotCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwogCWVsc2UKIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKIAlmaQpAQCAtMzUxOSw2ICszODUzLDEzIEBACiAgIEFDX01TR19SRVNVTFQob2spCiBmaQogCisjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW1tAXV1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworZmkKKwogX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAogICAgIFtUYWtlIHRoZSBvdXRwdXQgb2Ygbm0gYW5kIHByb2R1Y2UgYSBsaXN0aW5nIG9mIHJhdyBzeW1ib2xzIGFuZCBDIG5hbWVzXSkKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgWzFdLApAQCAtMzUyOSw2ICszODcwLDggQEAKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAogICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwgWzFdLAogICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCitfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAorICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yICROTV0pCiBdKSAjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKIAogCkBAIC0zNTQwLDcgKzM4ODMsNiBAQAogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQogCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSkKIG00X2lmKFskMV0sIFtDWFhdLCBbCiAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KQEAgLTM1OTEsNiArMzkzMywxMSBAQAogICAgICAgIyBESkdQUCBkb2VzIG5vdCBzdXBwb3J0IHNoYXJlZCBsaWJyYXJpZXMgYXQgYWxsCiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CiAgICAgICA7OworICAgIGhhaWt1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciBIYWlrdS4KKyAgICAgICMgVGhlICItc3RhdGljIiBmbGFnIGV4aXN0cywgYnV0IGlzIGJyb2tlbi4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0KKyAgICAgIDs7CiAgICAgaW50ZXJpeFtbMy05XV0qKQogICAgICAgIyBJbnRlcml4IDMueCBnY2MgLWZwaWMvLWZQSUMgb3B0aW9ucyBnZW5lcmF0ZSBicm9rZW4gY29kZS4KICAgICAgICMgSW5zdGVhZCwgd2UgcmVsb2NhdGUgc2hhcmVkIGxpYnJhcmllcyBhdCBydW50aW1lLgpAQCAtMzY0MCw2ICszOTg3LDEyIEBACiAJICA7OwogCWVzYWMKIAk7OworICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKKwkjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCisJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKwltNF9pZihbJDFdLCBbR0NKXSwgW10sCisJICBbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKKwk7OwogICAgICAgZGd1eCopCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KIAkgIGVjKysqKQpAQCAtMzY5Niw3ICs0MDQ5LDcgQEAKIAkgICAgOzsKIAllc2FjCiAJOzsKLSAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KIAkgIEtDQyopCiAJICAgICMgS0FJIEMrKyBDb21waWxlcgpAQCAtMzcyOSw4ICs0MDgyLDggQEAKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwogCSAgICA7OwotCSAgeGxjKiB8IHhsQyopCi0JICAgICMgSUJNIFhMIDguMCBvbiBQUEMKKwkgIHhsYyogfCB4bEMqIHwgYmd4bFtbY0NdXSogfCBtcGl4bFtbY0NdXSopCisJICAgICMgSUJNIFhMIDguMCwgOS4wIG9uIFBQQyBhbmQgQmx1ZUdlbmUKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXFwaWMnCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXFzdGF0aWNsaW5rJwpAQCAtMzc2MCw3ICs0MTEzLDcgQEAKIAkgICAgOzsKIAllc2FjCiAJOzsKLSAgICAgIG5ldGJzZCopCisgICAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAJOzsKICAgICAgICpxbngqIHwgKm50byopCiAgICAgICAgICMgUU5YIHVzZXMgR05VIEMrKywgYnV0IG5lZWQgdG8gZGVmaW5lIC1zaGFyZWQgb3B0aW9uIHRvbywgb3RoZXJ3aXNlCkBAIC0zNzkyLDcgKzQxNDUsNyBAQAogCTs7CiAgICAgICBzb2xhcmlzKikKIAljYXNlICRjY19iYXNlbmFtZSBpbgotCSAgQ0MqKQorCSAgQ0MqIHwgc3VuQ0MqKQogCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCkBAIC0zODk2LDYgKzQyNDksMTIgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZuby1jb21tb24nCiAgICAgICA7OwogCisgICAgaGFpa3UqKQorICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIEhhaWt1LgorICAgICAgIyBUaGUgIi1zdGF0aWMiIGZsYWcgZXhpc3RzLCBidXQgaXMgYnJva2VuLgorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQorICAgICAgOzsKKwogICAgIGhwdXgqKQogICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIDY0LWJpdCBQQSBIUC1VWCwgYnV0IG5vdCBmb3IgMzItYml0CiAgICAgICAjIFBBIEhQLVVYLiAgT24gSUE2NCBIUC1VWCwgUElDIGlzIHRoZSBkZWZhdWx0IGJ1dCB0aGUgcGljIGZsYWcKQEAgLTM5MzgsNiArNDI5NywxNSBAQAogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKICAgICAgIDs7CiAgICAgZXNhYworCisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICBudmNjKikgIyBDdWRhIENvbXBpbGVyIERyaXZlciAyLjIKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctWGxpbmtlciAnCisgICAgICBpZiB0ZXN0IC1uICIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIjsgdGhlbgorICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Ii1YY29tcGlsZXIgJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKSIKKyAgICAgIGZpCisgICAgICA7OworICAgIGVzYWMKICAgZWxzZQogICAgICMgUE9SVE1FIENoZWNrIGZvciBmbGFnIHRvIHBhc3MgbGlua2VyIGZsYWdzIHRocm91Z2ggdGhlIHN5c3RlbSBjb21waWxlci4KICAgICBjYXNlICRob3N0X29zIGluCkBAIC0zOTgwLDcgKzQzNDgsNyBAQAogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKICAgICAgIDs7CiAKLSAgICBsaW51eCogfCBrKmJzZCotZ251KQorICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAjIG9sZCBJbnRlbCBmb3IgeDg2XzY0IHdoaWNoIHN0aWxsIHN1cHBvcnRlZCAtS1BJQy4KICAgICAgIGVjYyopCkBAIC00MDAxLDcgKzQzNjksMTMgQEAKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy0tc2hhcmVkJwogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLS1zdGF0aWMnCiAJOzsKLSAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqKQorICAgICAgbmFnZm9yKikKKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwtV2wsLCcKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1QSUMnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwk7OworICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCkBAIC00MDEzLDI1ICs0Mzg3LDQwIEBACiAgICAgICAgICMgQWxsIEFscGhhIGNvZGUgaXMgUElDLgogICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwogICAgICAgICA7OwotICAgICAgeGwqKQotCSMgSUJNIFhMIEMgOC4wL0ZvcnRyYW4gMTAuMSBvbiBQUEMKKyAgICAgIHhsKiB8IGJneGwqIHwgYmdmKiB8IG1waXhsKikKKwkjIElCTSBYTCBDIDguMC9Gb3J0cmFuIDEwLjEsIDExLjEgb24gUFBDIGFuZCBCbHVlR2VuZQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXFwaWMnCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctcXN0YXRpY2xpbmsnCiAJOzsKICAgICAgICopCiAJY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCisJKlN1blwgQ2VyZXNcIEZvcnRyYW4qIHwgKlN1bipGb3J0cmFuKlwgW1sxLTddXS4qIHwgKlN1bipGb3J0cmFuKlwgOC5bWzAtM11dKikKKwkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9JycKKwkgIDs7CisJKlN1blwgRiogfCAqU3VuKkZvcnRyYW4qKQorCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJworCSAgOzsKIAkqU3VuXCBDKikKIAkgICMgU3VuIEMgNS45CiAJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwogCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKIAkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwogCSAgOzsKLQkqU3VuXCBGKikKLQkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKLQkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgICAgICAgICpJbnRlbCpcIFtbQ0ZdXSpDb21waWxlciopCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCisJICA7OworCSpQb3J0bGFuZFwgR3JvdXAqKQorCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mcGljJwogCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLQkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPScnCiAJICA7OwogCWVzYWMKIAk7OwpAQCAtNDA2Myw3ICs0NDUyLDcgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAqKQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJzs7CkBAIC00MTIwLDkgKzQ1MDksMTEgQEAKICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKICAgICA7OwogZXNhYwotQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCi1fTFRfVEFHREVDTChbd2xdLCBbbHRfcHJvZ19jb21waWxlcl93bF0sIFsxXSwKLQlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCisKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10sCisgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSldLAorICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQorX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKIAogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgpAQCAtNDE0MSw2ICs0NTMyLDggQEAKIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKIAlbQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzXSkKIAorX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCisJW0hvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXJdKQogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgogIwpAQCAtNDE2MSw2ICs0NTU0LDcgQEAKIG00X2RlZnVuKFtfTFRfTElOS0VSX1NITElCU10sCiBbQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCiBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAogbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubApAQCAtNDE2OSwyNyArNDU2Myw0MCBAQAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQogbTRfaWYoWyQxXSwgW0NYWF0sIFsKICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgYWl4W1s0LTldXSopCiAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCiAgICAgIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorICAgICMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbCBkZWZpbmVkCisgICAgIyBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KICAgICBpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogICAgIGVsc2UKICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogICAgIGZpCiAgICAgOzsKICAgcHczMiopCiAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgotICA7OworICAgIDs7CiAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCi0gICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87L14uKltbIF1dX19ubV9fL3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotICA7OworICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgY2wqKQorICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT0nX05VTExfSU1QT1JUX0RFU0NSSVBUT1J8X0lNUE9SVF9ERVNDUklQVE9SXy4qJworICAgICAgOzsKKyAgICAqKQorICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KKyAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBnbnUqKQorICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPW5vCisgICAgOzsKICAgKikKICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotICA7OworICAgIDs7CiAgIGVzYWMKLSAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCiBdLCBbCiAgIHJ1bnBhdGhfdmFyPQogICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CkBAIC00MjA0LDcgKzQ2MTEsNiBAQAogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci0gIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKQEAgLTQyNDksMTAgKzQ2NTUsMzkgQEAKICAgb3BlbmJzZCopCiAgICAgd2l0aF9nbnVfbGQ9bm8KICAgICA7OworICBsaW51eCogfCBrKmJzZCotZ251IHwgZ251KikKKyAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT1ubworICAgIDs7CiAgIGVzYWMKIAogICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcworCisgICMgT24gc29tZSB0YXJnZXRzLCBHTlUgbGQgaXMgY29tcGF0aWJsZSBlbm91Z2ggd2l0aCB0aGUgbmF0aXZlIGxpbmtlcgorICAjIHRoYXQgd2UncmUgYmV0dGVyIG9mZiB1c2luZyB0aGUgbmF0aXZlIGludGVyZmFjZSBmb3IgYm90aC4KKyAgbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9bm8KICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIGFpeCopCisJIyBUaGUgQUlYIHBvcnQgb2YgR05VIGxkIGhhcyBhbHdheXMgYXNwaXJlZCB0byBjb21wYXRpYmlsaXR5CisJIyB3aXRoIHRoZSBuYXRpdmUgbGlua2VyLiAgSG93ZXZlciwgYXMgdGhlIHdhcm5pbmcgaW4gdGhlIEdOVSBsZAorCSMgYmxvY2sgc2F5cywgdmVyc2lvbnMgYmVmb3JlIDIuMTkuNSogY291bGRuJ3QgcmVhbGx5IGNyZWF0ZSB3b3JraW5nCisJIyBzaGFyZWQgbGlicmFyaWVzLCByZWdhcmRsZXNzIG9mIHRoZSBpbnRlcmZhY2UgdXNlZC4KKwljYXNlIGAkTEQgLXYgMj4mMWAgaW4KKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCAyLjE5LjUqKSA7OworCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIDIuW1syLTldXSopIDs7CisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgW1szLTldXSopIDs7CisJICAqKQorCSAgICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT15ZXMKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgICopCisJbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9eWVzCisJOzsKKyAgICBlc2FjCisgIGZpCisKKyAgaWYgdGVzdCAiJGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlIiA9IHllczsgdGhlbgogICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CiAgICAgd2xhcmM9JyR7d2x9JwogCkBAIC00MjcwLDYgKzQ3MDUsNyBAQAogICAgIGZpCiAgICAgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPW5vCiAgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCisgICAgICAqR05VXCBnb2xkKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OwogICAgICAgKlwgW1swMV1dLiogfCAqXCAyLltbMC05XV0uKiB8ICpcIDIuMTAuKikgOzsgIyBjYXRjaCB2ZXJzaW9ucyA8IDIuMTEKICAgICAgICpcIDIuMTEuOTMuMC4yXCAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7ICMgUkg3LjMgLi4uCiAgICAgICAqXCAyLjExLjkyLjAuMTJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBNYW5kcmFrZSA4LjIgLi4uCkBAIC00Mjg1LDExICs0NzIxLDEyIEBACiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogCWNhdCA8PF9MVF9FT0YgMT4mMgogCi0qKiogV2FybmluZzogdGhlIEdOVSBsaW5rZXIsIGF0IGxlYXN0IHVwIHRvIHJlbGVhc2UgMi45LjEsIGlzIHJlcG9ydGVkCisqKiogV2FybmluZzogdGhlIEdOVSBsaW5rZXIsIGF0IGxlYXN0IHVwIHRvIHJlbGVhc2UgMi4xOSwgaXMgcmVwb3J0ZWQKICoqKiB0byBiZSB1bmFibGUgdG8gcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gQUlYLgogKioqIFRoZXJlZm9yZSwgbGlidG9vbCBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgSWYgeW91Ci0qKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBtb2RpZnkgeW91ciBQQVRICi0qKiogc28gdGhhdCBhIG5vbi1HTlUgbGlua2VyIGlzIGZvdW5kLCBhbmQgdGhlbiByZXN0YXJ0LgorKioqIHJlYWxseSBjYXJlIGZvciBzaGFyZWQgbGlicmFyaWVzLCB5b3UgbWF5IHdhbnQgdG8gaW5zdGFsbCBiaW51dGlscworKioqIDIuMjAgb3IgYWJvdmUsIG9yIG1vZGlmeSB5b3VyIFBBVEggc28gdGhhdCBhIG5vbi1HTlUgbGlua2VyIGlzIGZvdW5kLgorKioqIFlvdSB3aWxsIHRoZW4gbmVlZCB0byByZXN0YXJ0IHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MuCiAKIF9MVF9FT0YKICAgICAgIGZpCkBAIC00MzI1LDEwICs0NzYyLDEyIEBACiAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAogICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwogICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCiAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCiAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZSddCiAKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCkBAIC00MzQ2LDYgKzQ3ODUsMTEgQEAKICAgICAgIGZpCiAgICAgICA7OwogCisgICAgaGFpa3UqKQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgICAgIDs7CisKICAgICBpbnRlcml4W1szLTldXSopCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwpAQCAtNDM2MSw3ICs0ODA1LDcgQEAKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgInMsXixfLCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwogICAgICAgOzsKIAotICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSkKKyAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgIHRtcF9kaWV0PW5vCiAgICAgICBpZiB0ZXN0ICIkaG9zdF9vcyIgPSBsaW51eC1kaWV0bGliYzsgdGhlbgogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC00MzcxLDE1ICs0ODE1LDE2IEBACiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkRUdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbCBcCiAJICYmIHRlc3QgIiR0bXBfZGlldCIgPSBubwogICAgICAgdGhlbgotCXRtcF9hZGRmbGFnPQorCXRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCXRtcF9zaGFyZWRmbGFnPSctc2hhcmVkJwogCWNhc2UgJGNjX2Jhc2VuYW1lLCRob3N0X2NwdSBpbgogICAgICAgICBwZ2NjKikJCQkJIyBQb3J0bGFuZCBHcm91cCBDIGNvbXBpbGVyCi0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZycKIAkgIDs7Ci0JcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqKQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycwotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKwkJCQkJIyBQb3J0bGFuZCBHcm91cCBmNzcgYW5kIGY5MCBjb21waWxlcnMKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZyAtTW5vbWFpbicgOzsKIAllY2MqLGlhNjQqIHwgaWNjKixpYTY0KikJIyBJbnRlbCBDIGNvbXBpbGVyIG9uIGlhNjQKIAkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYycgOzsKQEAgLTQzOTAsMTMgKzQ4MzUsMTcgQEAKIAlsZjk1KikJCQkJIyBMYWhleSBGb3J0cmFuIDguMQogCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogCSAgdG1wX3NoYXJlZGZsYWc9Jy0tc2hhcmVkJyA7OwotCXhsW1tjQ11dKikJCQkjIElCTSBYTCBDIDguMCBvbiBQUEMgKGRlYWwgd2l0aCB4bGYgYmVsb3cpCisJeGxbW2NDXV0qIHwgYmd4bFtbY0NdXSogfCBtcGl4bFtbY0NdXSopICMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKIAkgIHRtcF9zaGFyZWRmbGFnPSctcW1rc2hyb2JqJwogCSAgdG1wX2FkZGZsYWc9IDs7CisJbnZjYyopCSMgQ3VkYSBDb21waWxlciBEcml2ZXIgMi4yCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKKwkgIDs7CiAJZXNhYwogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgogCSpTdW5cIEMqKQkJCSMgU3VuIEMgNS45Ci0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKIAkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKIAkqU3VuXCBGKikJCQkjIFN1biBGb3J0cmFuIDguMwpAQCAtNDQxMiwxNyArNDg2MSwxNiBAQAogICAgICAgICBmaQogCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQl4bGYqKQorCXhsZiogfCBiZ2YqIHwgYmd4bGYqIHwgbXBpeGxmKikKIAkgICMgSUJNIFhMIEZvcnRyYW4gMTAuMSBvbiBQUEMgY2Fubm90IGNyZWF0ZSBzaGFyZWQgbGlicyBpdHNlbGYKIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLQkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQotCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCiAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgogCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCiAJICBmaQogCSAgOzsKIAllc2FjCkBAIC00NDMxLDEzICs0ODc5LDEzIEBACiAgICAgICBmaQogICAgICAgOzsKIAotICAgIG5ldGJzZCopCisgICAgbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogICAgICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogCXdsYXJjPQogICAgICAgZWxzZQotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICA7OwogCkBAIC00NDU1LDggKzQ5MDMsOCBAQAogCiBfTFRfRU9GCiAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogICAgICAgZmkKQEAgLTQ1MDIsOCArNDk1MCw4IEBACiAKICAgICAqKQogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAgICAgICBmaQpAQCAtNDU0Myw4ICs0OTkxLDEwIEBACiAgICAgICBlbHNlCiAJIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCiAJIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorCSMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbAorCSMgZGVmaW5lZCBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KIAlpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0JICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogCWVsc2UKIAkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogCWZpCkBAIC00NjA2LDYgKzUwNTYsNyBAQAogCWlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgogCSAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCiAJZmkKKwlfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT1ubwogICAgICAgZWxzZQogCSMgbm90IHVzaW5nIGdjYwogCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCkBAIC00NjMxLDkgKzUwODIsOSBAQAogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwogICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuICRFQ0hPICJYJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgfCAkWHNlZDsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKICAgICAgIGVsc2UKIAlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwpAQCAtNDY0MiwxNCArNTA5MywxOSBAQAogCWVsc2UKIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKwkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKIAkgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgogCSAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCiAJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKLQkgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcwotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisJICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBlbHNlCisJICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgIGZpCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCiAJICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQgbGlicmFyaWVzLgogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAke3dsfS1ibm9lbnRyeSAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzJHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKQEAgLTQ2ODEsMjAgKzUxMzcsNjQgQEAKICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0gICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0gICAgICBsaWJleHQ9bGliCi0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGAkRUNITyAiWCRkZXBsaWJzIiB8ICRYc2VkIC1lICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSAgICAgIF9MVF9UQUdWQVIoZml4X3NyY2ZpbGVfcGF0aCwgJDEpPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLSAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIGNsKikKKwkjIE5hdGl2ZSBNU1ZDCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZWxzZQorCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZml+CisJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisJICBsaW5rbmFtZXM9JworCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCV9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9J19OVUxMX0lNUE9SVF9ERVNDUklQVE9SfF9JTVBPUlRfREVTQ1JJUFRPUl8uKicKKwlfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltbQUlUV11dW1sgXV0vcy8uKltbIF1dLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisJIyBEb24ndCB1c2UgcmFubGliCisJX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKKwlfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKwkgICAgKi5leGV8Ki5FWEUpIDs7CisJICAgICopCisJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisJICAgICAgOzsKKwkgIGVzYWN+CisJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKwkgIGZpJworCTs7CisgICAgICAqKQorCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisJbGliZXh0PWxpYgorCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorCXNocmV4dF9jbWRzPSIuZGxsIgorCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKwk7OworICAgICAgZXNhYwogICAgICAgOzsKIAogICAgIGRhcndpbiogfCByaGFwc29keSopCkBAIC00NzA3LDEwICs1MjA3LDYgQEAKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCiAgICAgICA7OwogCi0gICAgZnJlZWJzZDEqKQotICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgOzsKLQogICAgICMgRnJlZUJTRCAyLjIuWzAxMl0gYWxsb3dzIHVzIHRvIGluY2x1ZGUgYysrcnQwLm8gdG8gZ2V0IEMrKyBjb25zdHJ1Y3RvcgogICAgICMgc3VwcG9ydC4gIEZ1dHVyZSB2ZXJzaW9ucyBkbyB0aGlzIGF1dG9tYXRpY2FsbHksIGJ1dCBhbiBleHBsaWNpdCBjKytydDAubwogICAgICMgZG9lcyBub3QgYnJlYWsgYW55dGhpbmcsIGFuZCBoZWxwcyBzaWduaWZpY2FudGx5IChhdCB0aGUgY29zdCBvZiBhIGxpdHRsZQpAQCAtNDcyMyw3ICs1MjE5LDcgQEAKICAgICAgIDs7CiAKICAgICAjIFVuZm9ydHVuYXRlbHksIG9sZGVyIHZlcnNpb25zIG9mIEZyZWVCU0QgMiBkbyBub3QgaGF2ZSB0aGlzIGZlYXR1cmUuCi0gICAgZnJlZWJzZDIqKQorICAgIGZyZWVic2QyLiopCiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwpAQCAtNDczMiw3ICs1MjI4LDcgQEAKIAogICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KQEAgLTQ3NDAsNyArNTIzNiw3IEBACiAKICAgICBocHV4OSopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICBmaQpAQCAtNDc1NSwxNCArNTI1MSwxMyBAQAogICAgICAgOzsKIAogICAgIGhwdXgxMCopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBmaQogICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPScrYiAkbGliZGlyJwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCkBAIC00Nzc0LDE2ICs1MjY5LDE2IEBACiAgICAgICA7OwogCiAgICAgaHB1eDExKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCWNhc2UgJGhvc3RfY3B1IGluCiAJaHBwYSo2NCopCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJaWE2NCopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJZXNhYwogICAgICAgZWxzZQpAQCAtNDc5NSw3ICs1MjkwLDE0IEBACiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwltNF9pZigkMSwgW10sIFsKKwkgICMgT2xkZXIgdmVyc2lvbnMgb2YgdGhlIDExLjAwIGNvbXBpbGVyIGRvIG5vdCB1bmRlcnN0YW5kIC1iIHlldAorCSAgIyAoSFA5MjQ1My0wMSBBLjExLjAxLjIwIGRvZXNuJ3QsIEhQOTI0NTMtMDEgQi4xMS5YLjM1MTc1LTM1MTc2LkdQIGRvZXMpCisJICBfTFRfTElOS0VSX09QVElPTihbaWYgJENDIHVuZGVyc3RhbmRzIC1iXSwKKwkgICAgX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX19iLCAkMSksIFstYl0sCisJICAgIFtfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyddLAorCSAgICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyddKV0sCisJICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnXSkKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKQEAgLTQ4MjMsMTkgKzUzMjUsMzQgQEAKIAogICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCiAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotICAgICAgICBBQ19MSU5LX0lGRUxTRShpbnQgZm9vKHZvaWQpIHt9LAotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgICApCi0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKwlBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbF0sCisJICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2xdLAorCSAgW3NhdmVfTERGTEFHUz0iJExERkxBR1MiCisJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorCSAgIEFDX0xJTktfSUZFTFNFKAorCSAgICAgW0FDX0xBTkdfU09VUkNFKAorCSAgICAgICAgW0FDX0xBTkdfQ0FTRShbQ10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorCQkJICAgICAgW0MrK10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorCQkJICAgICAgW0ZvcnRyYW4gNzddLCBbWworICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGVuZF1dLAorCQkJICAgICAgW0ZvcnRyYW5dLCBbWworICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGVuZF1dKV0pXSwKKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzXSwKKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm9dKQorICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIl0pCisJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWZpCiAgICAgICBlbHNlCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0nbm8nCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwpAQCAtNDg0NCw3ICs1MzYxLDcgQEAKICAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwogICAgICAgOzsKIAotICAgIG5ldGJzZCopCisgICAgbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogICAgICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJyAgIyBhLm91dAogICAgICAgZWxzZQpAQCAtNDg5NywxNyArNTQxNCwxNyBAQAogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwogICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiIFNJTkdMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvIERBVEEgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCiAgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0nZW14aW1wIC1vICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwogICAgICAgOzsKIAogICAgIG9zZjMqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBmaQogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCkBAIC00OTE3LDEzICs1NDM0LDEzIEBACiAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZTsgcHJpbnRmICIlc1xcbiIgIi1oaWRkZW4iPj4gJGxpYi5leHB+Ci0JJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCisJJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCiAKIAkjIEJvdGggYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwpAQCAtNDkzNiw5ICs1NDUzLDkgQEAKICAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16IGRlZnMnCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCXdsYXJjPScke3dsfScKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKICAgICAgIGVsc2UKIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KIAkqIkNvbXBpbGVycyA1LjAiKikKQEAgLTUxMTQsMzYgKzU2MzEsMzggQEAKICAgICAgICMgVGVzdCB3aGV0aGVyIHRoZSBjb21waWxlciBpbXBsaWNpdGx5IGxpbmtzIHdpdGggLWxjIHNpbmNlIG9uIHNvbWUKICAgICAgICMgc3lzdGVtcywgLWxnY2MgaGFzIHRvIGNvbWUgYmVmb3JlIC1sYy4gSWYgZ2NjIGFscmVhZHkgcGFzc2VzIC1sYwogICAgICAgIyB0byBsZCwgZG9uJ3QgYWRkIC1sYyBiZWZvcmUgLWxnY2MuCi0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgLWxjIHNob3VsZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbl0pCi0gICAgICAkUk0gY29uZnRlc3QqCi0gICAgICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW5dLAorCVtsdF9jdl9dX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpLAorCVskUk0gY29uZnRlc3QqCisJZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CiAKLSAgICAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXJyOyB0aGVuCi0gICAgICAgIHNvbmFtZT1jb25mdGVzdAotICAgICAgICBsaWI9Y29uZnRlc3QKLSAgICAgICAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0Ci0gICAgICAgIGRlcGxpYnM9Ci0gICAgICAgIHdsPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKQotCXBpY19mbGFnPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9LXYKLSAgICAgICAgbGlua2VyX2ZsYWdzPS12Ci0gICAgICAgIHZlcnN0cmluZz0KLSAgICAgICAgb3V0cHV0X29iamRpcj0uCi0gICAgICAgIGxpYm5hbWU9Y29uZnRlc3QKLSAgICAgICAgbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZz0kX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpCi0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KLSAgICAgICAgaWYgQUNfVFJZX0VWQUwoX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKLSAgICAgICAgdGhlbgotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi0gICAgICAgIGVsc2UKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKLSAgICAgICAgZmkKLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCi0gICAgICBlbHNlCi0gICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQotICAgICAgZmkKLSAgICAgICRSTSBjb25mdGVzdCoKLSAgICAgIEFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSldKQorCWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXJyOyB0aGVuCisJICBzb25hbWU9Y29uZnRlc3QKKwkgIGxpYj1jb25mdGVzdAorCSAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0CisJICBkZXBsaWJzPQorCSAgd2w9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpCisJICBwaWNfZmxhZz0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCisJICBjb21waWxlcl9mbGFncz0tdgorCSAgbGlua2VyX2ZsYWdzPS12CisJICB2ZXJzdHJpbmc9CisJICBvdXRwdXRfb2JqZGlyPS4KKwkgIGxpYm5hbWU9Y29uZnRlc3QKKwkgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKQorCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorCSAgaWYgQUNfVFJZX0VWQUwoX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKKwkgIHRoZW4KKwkgICAgbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKwkgIGVsc2UKKwkgICAgbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCisJICBmaQorCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCisJZWxzZQorCSAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1CisJZmkKKwkkUk0gY29uZnRlc3QqCisJXSkKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0kbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSkKICAgICAgIDs7CiAgICAgZXNhYwogICBmaQpAQCAtNTE4MCw5ICs1Njk5LDYgQEAKIF9MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY10sIFsxXSwKICAgICBbRmxhZyB0byBoYXJkY29kZSAkbGliZGlyIGludG8gYSBiaW5hcnkgZHVyaW5nIGxpbmtpbmcuCiAgICAgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiAkbGliZGlyIGRvZXMgbm90IGV4aXN0XSkKLV9MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF0sIFsxXSwKLSAgICBbW0lmIGxkIGlzIHVzZWQgd2hlbiBsaW5raW5nLCBmbGFnIHRvIGhhcmRjb2RlICRsaWJkaXIgaW50byBhIGJpbmFyeQotICAgIGR1cmluZyBsaW5raW5nLiAgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiAkbGliZGlyIGRvZXMgbm90IGV4aXN0XV0pCiBfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JdLCBbMV0sCiAgICAgW1doZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAiLXJwYXRoIiBmbGFnIHdpdGggYSBzZXBhcmF0ZWQgYXJndW1lbnRdKQogX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9kaXJlY3RdLCBbMF0sCkBAIC01MjA4LDggKzU3MjQsNiBAQAogICAgIHRvIHJ1bnRpbWUgcGF0aCBsaXN0XSkKIF9MVF9UQUdERUNMKFtdLCBbbGlua19hbGxfZGVwbGlic10sIFswXSwKICAgICBbV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzXSkKLV9MVF9UQUdERUNMKFtdLCBbZml4X3NyY2ZpbGVfcGF0aF0sIFsxXSwKLSAgICBbRml4IHRoZSBzaGVsbCB2YXJpYWJsZSAkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyXSkKIF9MVF9UQUdERUNMKFtdLCBbYWx3YXlzX2V4cG9ydF9zeW1ib2xzXSwgWzBdLAogICAgIFtTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWRdKQogX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfc3ltYm9sc19jbWRzXSwgWzJdLApAQCAtNTIyMCw2ICs1NzM0LDggQEAKICAgICBbU3ltYm9scyB0aGF0IG11c3QgYWx3YXlzIGJlIGV4cG9ydGVkXSkKIF9MVF9UQUdERUNMKFtdLCBbcHJlbGlua19jbWRzXSwgWzJdLAogICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlc10pCitfTFRfVEFHREVDTChbXSwgW3Bvc3RsaW5rX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXNdKQogX0xUX1RBR0RFQ0woW10sIFtmaWxlX2xpc3Rfc3BlY10sIFsxXSwKICAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzXSkKIGRubCBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZApAQCAtNTMxMywxNCArNTgyOSwxNSBAQAogXSkjIF9MVF9MQU5HX0NfQ09ORklHCiAKIAotIyBfTFRfUFJPR19DWFgKLSMgLS0tLS0tLS0tLS0tCi0jIFNpbmNlIEFDX1BST0dfQ1hYIGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIGcrKyBpZiB0aGVyZSBpcyBubyBjKysKLSMgY29tcGlsZXIsIHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uIGhlcmUuCi1tNF9kZWZ1bihbX0xUX1BST0dfQ1hYXSwKLVsKLXB1c2hkZWYoW0FDX01TR19FUlJPUl0sIFtfbHRfY2F1Z2h0X0NYWF9lcnJvcj15ZXNdKQotQUNfUFJPR19DWFgKKyMgX0xUX0xBTkdfQ1hYX0NPTkZJRyhbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEMrKyBjb21waWxlciBhcmUgc3VpdGFibHkKKyMgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRyB0byB3cml0ZQorIyB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCittNF9kZWZ1bihbX0xUX0xBTkdfQ1hYX0NPTkZJR10sCitbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCittNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKIGlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCAiWCRDWFgiICE9ICJYbm8iICYmCiAgICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8CiAgICAgKHRlc3QgIlgkQ1hYIiAhPSAiWGcrKyIpKSkgOyB0aGVuCkBAIC01MzI4LDIyICs1ODQ1LDYgQEAKIGVsc2UKICAgX2x0X2NhdWdodF9DWFhfZXJyb3I9eWVzCiBmaQotcG9wZGVmKFtBQ19NU0dfRVJST1JdKQotXSkjIF9MVF9QUk9HX0NYWAotCi1kbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6Ci1kbmwgQUNfREVGVU4oW19MVF9QUk9HX0NYWF0sIFtdKQotCi0KLSMgX0xUX0xBTkdfQ1hYX0NPTkZJRyhbVEFHXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEMrKyBjb21waWxlciBhcmUgc3VpdGFibHkKLSMgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRyB0byB3cml0ZQotIyB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCi1tNF9kZWZ1bihbX0xUX0xBTkdfQ1hYX0NPTkZJR10sCi1bQUNfUkVRVUlSRShbX0xUX1BST0dfQ1hYXSlkbmwKLW00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAotbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAogCiBBQ19MQU5HX1BVU0goQysrKQogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCkBAIC01MzU1LDcgKzU4NTYsNiBAQAogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCkBAIC01MzY1LDYgKzU4NjUsOCBAQAogX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCiBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9CiBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubwpAQCAtNTM5Niw2ICs1ODk4LDcgQEAKIAogICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgogICBsdF9zYXZlX0NDPSRDQworICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgIGx0X3NhdmVfTEQ9JExECiAgIGx0X3NhdmVfR0NDPSRHQ0MKICAgR0NDPSRHWFgKQEAgLTU0MTMsNiArNTkxNiw3IEBACiAgIGZpCiAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCiAgIENDPSR7Q1hYLSJjKysifQorICBDRkxBR1M9JENYWEZMQUdTCiAgIGNvbXBpbGVyPSRDQwogICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCiAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKQEAgLTU0MzQsOCArNTkzOCw4IEBACiAgICAgICAjIENoZWNrIGlmIEdOVSBDKysgdXNlcyBHTlUgbGQgYXMgdGhlIHVuZGVybHlpbmcgbGlua2VyLCBzaW5jZSB0aGUKICAgICAgICMgYXJjaGl2aW5nIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGF0IEdOVSBsZCBpcyBiZWluZyB1c2VkLgogICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0gICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAkcGljX2ZsYWcgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgJHBpY19mbGFnIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKQEAgLTU0NjcsNyArNTk3MSw3IEBACiAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KICAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAtdiAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgJEdSRVAgIlwtTCInCiAKICAgICBlbHNlCiAgICAgICBHWFg9bm8KQEAgLTU1NzYsMTAgKzYwODAsMTAgQEAKICAgICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKICAgICAgICAgICAjIGV4ZWN1dGFibGUuCi0gICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKyAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQogICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCi0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuICRFQ0hPICJYJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgfCAkWHNlZDsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgogICAgICAgICBlbHNlCiAgICAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwpAQCAtNTU4OCwxNCArNjA5MiwxOSBAQAogICAgICAgICAgIGVsc2UKIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLQkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKwkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCiAJICAgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KIAkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCiAJICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm9rJwotCSAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKLQkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkgICAgICAjIFdlIG9ubHkgdXNlIHRoaXMgY29kZSBmb3IgR05VIGxkcyB0aGF0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlLgorCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgIGVsc2UKKwkgICAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKKwkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgICAgZmkKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcwogCSAgICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQKIAkgICAgIyBsaWJyYXJpZXMuCkBAIC01NjI1LDI4ICs2MTM0LDc1IEBACiAgICAgICAgIDs7CiAKICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKLSAgICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KLSAgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgorCSxjbCogfCBubyxjbCopCisJICAjIE5hdGl2ZSBNU1ZDCisJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisJICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisJICBfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorCSAgbGliZXh0PWxpYgorCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJICBzaHJleHRfY21kcz0iLmRsbCIKKwkgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisJICAgICAgJFNFRCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisJICAgIGVsc2UKKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgICAgZml+CisJICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKwkgICAgbGlua25hbWVzPScKKwkgICMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKwkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKwkgICMgRG9uJ3QgdXNlIHJhbmxpYgorCSAgX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKKwkgIF9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisJICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKwkgICAgICAqLmV4ZXwqLkVYRSkgOzsKKwkgICAgICAqKQorCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisJCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisJCTs7CisJICAgIGVzYWN+CisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+CisJICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKwkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKwkgICAgZmknCisJICA7OworCSopCisJICAjIGcrKworCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCiAKLSAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSAgICAgICAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0gICAgICAgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQkgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotICAgICAgICAgIGVsc2UKLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0gICAgICAgICAgZml+Ci0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotICAgICAgICBlbHNlCi0gICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgICBmaQotICAgICAgICA7OworCSAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKwkgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgICBlbHNlCisJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwkgICAgZml+CisJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKwkgIGVsc2UKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgZmkKKwkgIDs7CisJZXNhYworCTs7CiAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQogICAgICAgICBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUygkMSkKIAk7OwpAQCAtNTY2OSw3ICs2MjI1LDcgQEAKICAgICAgICAgZXNhYwogICAgICAgICA7OwogCi0gICAgICBmcmVlYnNkW1sxMl1dKikKKyAgICAgIGZyZWVic2QyLiopCiAgICAgICAgICMgQysrIHNoYXJlZCBsaWJyYXJpZXMgcmVwb3J0ZWQgdG8gYmUgZmFpcmx5IGJyb2tlbiBiZWZvcmUKIAkjIHN3aXRjaCB0byBFTEYKICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwpAQCAtNTY4OCw2ICs2MjQ0LDExIEBACiAgICAgICBnbnUqKQogICAgICAgICA7OwogCisgICAgICBoYWlrdSopCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgICAgICAgOzsKKwogICAgICAgaHB1eDkqKQogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKQEAgLTU3MTIsMTEgKzYyNzMsMTEgQEAKICAgICAgICAgICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAgICAgICAgICAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAgICAgICAgICAgICAjIGRlcGVuZGVuY2llcy4KLSAgICAgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkRUdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKyAgICAgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkRUdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogICAgICAgICAgICAgOzsKICAgICAgICAgICAqKQogICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CiAgICAgICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KQEAgLTU3NzcsNyArNjMzOCw3IEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCSAgICA7OwogICAgICAgICAgICopCiAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCkBAIC01Nzg3LDEwICs2MzQ4LDEwIEBACiAJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICAgIGlhNjQqKQotCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICAgICopCi0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICBlc2FjCiAJICAgICAgZmkKQEAgLTU4MjAsNyArNjM4MSw3IEBACiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgQ0MqKQogCSAgICAjIFNHSSBDKysKLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWFsbCAtbXVsdGlnb3QgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtYWxsIC1tdWx0aWdvdCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAogCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgIyAiQ0MgLWFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgSVJJWCBDKysgY29tcGlsZXIuICBUaGlzIGlzCkBAIC01ODMxLDkgKzYzOTIsOSBAQAogICAgICAgICAgICopCiAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCiAJICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkgICAgICBlbHNlCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKIAkgICAgICBmaQogCSAgICBmaQogCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKQEAgLTU4NDQsNyArNjQwNSw3IEBACiAgICAgICAgIF9MVF9UQUdWQVIoaW5oZXJpdF9ycGF0aCwgJDEpPXllcwogICAgICAgICA7OwogCi0gICAgICBsaW51eCogfCBrKmJzZCotZ251KQorICAgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgICAgIEtDQyopCiAJICAgICMgS3VjayBhbmQgQXNzb2NpYXRlcywgSW5jLiAoS0FJKSBDKysgQ29tcGlsZXIKQEAgLTU4NjIsNyArNjQyMyw3IEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgcm0gLWYgbGliY29uZnRlc3Qkc2hhcmVkX2V4dDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgcm0gLWYgbGliY29uZnRlc3Qkc2hhcmVkX2V4dDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKIAogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKIAkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwpAQCAtNTg5OSwyNiArNjQ2MCwyNiBAQAogICAgICAgICAgIHBnQ0MqIHwgcGdjcHAqKQogICAgICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBDKysgY29tcGlsZXIKIAkgICAgY2FzZSBgJENDIC1WYCBpbgotCSAgICAqcGdDQ1wgW1sxLTVdXSogfCAqcGdjcHBcIFtbMS01XV0qKQorCSAgICAqcGdDQ1wgW1sxLTVdXS4qIHwgKnBnY3BwXCBbWzEtNV1dLiopCiAJICAgICAgX0xUX1RBR1ZBUihwcmVsaW5rX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KIAkJcm0gLXJmICR0cGxkaXJ+CiAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJworCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJwogCSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgogCQlybSAtcmYgJHRwbGRpcn4KIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KLQkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYH4KKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+CiAJCSRSQU5MSUIgJG9sZGxpYicKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgogCQlybSAtcmYgJHRwbGRpcn4KIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgogCQlybSAtcmYgJHRwbGRpcn4KIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAkgICAgICA7OwotCSAgICAqKSAjIFZlcnNpb24gNiB3aWxsIHVzZSB3ZWFrIHN5bWJvbHMKKwkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAkgICAgICA7OwpAQCAtNTkyNiw3ICs2NDg3LDcgQEAKIAogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXJwYXRoICR7d2x9JGxpYmRpcicKIAkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwotCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKICAgICAgICAgICAgIDs7CiAJICBjeHgqKQogCSAgICAjIENvbXBhcSBDKysKQEAgLTU5NDUsOSArNjUwNiw5IEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgdGVtcGxpc3Q9YCRFQ0hPICJYJHRlbXBsaXN0IiB8ICRYc2VkIC1lICJzL1woXi4qbGQuKlwpXCggLipsZCAuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgdGVtcGxpc3Q9YGZ1bmNfZWNob19hbGwgIiR0ZW1wbGlzdCIgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZCAuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIlgkbGlzdCIgfCAkWHNlZCcKIAkgICAgOzsKLQkgIHhsKikKKwkgIHhsKiB8IG1waXhsKiB8IGJneGwqKQogCSAgICAjIElCTSBYTCA4LjAgb24gUFBDLCB3aXRoIEdOVSBsZAogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCkBAIC01OTY3LDEzICs2NTI4LDEzIEBACiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scycKIAkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgICAgIF9MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzCiAKIAkgICAgICAjIE5vdCBzdXJlIHdoZXRoZXIgc29tZXRoaW5nIGJhc2VkIG9uCiAJICAgICAgIyAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMQogCSAgICAgICMgd291bGQgYmUgYmV0dGVyLgotCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJworCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdmdW5jX2VjaG9fYWxsJwogCiAJICAgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCiAJICAgICAgIyAiQ0MgLXhhciIsIHdoZXJlICJDQyIgaXMgdGhlIFN1biBDKysgY29tcGlsZXIuICBUaGlzIGlzCkBAIC02MDQyLDcgKzY2MDMsNyBAQAogCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJwogCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCiAJICBmaQotCSAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZWNobworCSAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAogCWVsc2UKIAkgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KIAlmaQpAQCAtNjA3NywxNSArNjYzOCwxNSBAQAogCSAgICBjYXNlICRob3N0IGluCiAJICAgICAgb3NmMyopCiAJICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogCQk7OwogCSAgICAgICopCiAJICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lfgogCSAgICAgICAgICBlY2hvICItaGlkZGVuIj4+ICRsaWIuZXhwfgotCSAgICAgICAgICAkQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+CisJICAgICAgICAgICRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4KIAkgICAgICAgICAgJFJNICRsaWIuZXhwJwogCSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwogCQk7OwpAQCAtNjEwMSwxNyArNjY2MiwxNyBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkIiB8ICRHUkVQIC12ICJsZDoiYDsgdGVtcGxpc3Q9YCRFQ0hPICJYJHRlbXBsaXN0IiB8ICRYc2VkIC1lICJzL1woXi4qbGQuKlwpXCggLipsZC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKIAkgICAgOzsKIAkgICopCiAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCiAJICAgICAgY2FzZSAkaG9zdCBpbgogCSAgICAgICAgb3NmMyopCi0JICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkJICA7OwogCSAgICAgICAgKikKLQkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkJICA7OwogCSAgICAgIGVzYWMKIApAQCAtNjEyMSw3ICs2NjgyLDcgQEAKIAkgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAJICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAJICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0JICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisJICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCiAJICAgIGVsc2UKIAkgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKQEAgLTYxNTcsNyArNjcxOCw3IEBACiAKICAgICAgIHNvbGFyaXMqKQogICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICAgIENDKikKKyAgICAgICAgICBDQyogfCBzdW5DQyopCiAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsJDEpPXllcwogCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCkBAIC02MTc4LDcgKzY3MzksNyBAQAogCSAgICBlc2FjCiAJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwogCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZnVuY19lY2hvX2FsbCcKIAogCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgIyAiQ0MgLXhhciIsIHdoZXJlICJDQyIgaXMgdGhlIFN1biBDKysgY29tcGlsZXIuICBUaGlzIGlzCkBAIC02MTk4LDE0ICs2NzU5LDE0IEBACiAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LXogJHt3bH1kZWZzJwogCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCiAJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKwkJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogCiAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KIAkgICAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAtdiAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgJEdSRVAgIlwtTCInCiAJICAgICAgZWxzZQogCSAgICAgICAgIyBnKysgMi43IGFwcGVhcnMgdG8gcmVxdWlyZSBgLUcnIE5PVCBgLXNoYXJlZCcgb24gdGhpcwogCSAgICAgICAgIyBwbGF0Zm9ybS4KQEAgLTYyMTYsNyArNjc3Nyw3IEBACiAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KIAkgICAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtRyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtRyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAkgICAgICBmaQogCiAJICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJHdsJGxpYmRpcicKQEAgLTYyNzAsNiArNjgzMSwxMCBAQAogICAgICAgICAgIENDKikKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLVRwcmVsaW5rX29iamVjdHMgJG9sZG9ianN+CisJICAgICAgJyIkX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSkiCisJICAgIF9MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0nJENDIC1UcHJlbGlua19vYmplY3RzICRyZWxvYWRfb2Jqc34KKwkgICAgICAnIiRfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSkiCiAJICAgIDs7CiAJICAqKQogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCkBAIC02MzI1LDYgKzY4OTAsNyBAQAogICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKIAogICBDQz0kbHRfc2F2ZV9DQworICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCiAgIExEQ1hYPSRMRAogICBMRD0kbHRfc2F2ZV9MRAogICBHQ0M9JGx0X3NhdmVfR0NDCkBAIC02MzM5LDYgKzY5MDUsMjkgQEAKIF0pIyBfTFRfTEFOR19DWFhfQ09ORklHCiAKIAorIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgZnVuY19zdHJpcG5hbWVfY25mIHByZWZpeCBzdWZmaXggbmFtZQorIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKyMKKyMgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gdGhlIChub24tWFNJKSB2ZXJzaW9uIG9mIGZ1bmNfc3RyaXBuYW1lLAorIyBleGNlcHQgdGhpcyBvbmUgY2FuIGJlIHVzZWQgYnkgbTQgY29kZSB0aGF0IG1heSBiZSBleGVjdXRlZCBieSBjb25maWd1cmUsCisjIHJhdGhlciB0aGFuIHRoZSBsaWJ0b29sIHNjcmlwdC4KK200X2RlZnVuKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSxbZG5sCitBQ19SRVFVSVJFKFtfTFRfREVDTF9TRURdKQorQUNfUkVRVUlSRShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKQorZnVuY19zdHJpcG5hbWVfY25mICgpCit7CisgIGNhc2UgJHsyfSBpbgorICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisgIGVzYWMKK30gIyBmdW5jX3N0cmlwbmFtZV9jbmYKK10pIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCisKICMgX0xUX1NZU19ISURERU5fTElCREVQUyhbVEFHTkFNRV0pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQpAQCAtNjM0Nyw2ICs2OTM2LDcgQEAKICMgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgogbTRfZGVmdW4oW19MVF9TWVNfSElEREVOX0xJQkRFUFNdLAogW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorQUNfUkVRVUlSRShbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0pZG5sCiAjIERlcGVuZGVuY2llcyB0byBwbGFjZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBvYmplY3QgYmVpbmcgbGlua2VkOgogX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPQogX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0KQEAgLTYzOTYsNyArNjk4NiwyMCBAQAogICB9CiB9OwogX0xUX0VPRgorXSwgWyQxXSwgW0dPXSwgW2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCitwYWNrYWdlIGZvbworZnVuYyBmb28oKSB7Cit9CitfTFRfRU9GCiBdKQorCitfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitjYXNlICIkQ0MgJENGTEFHUyAiIGluICMoCisqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKKypcIC1mdXNlLWxpbmtlci1wbHVnaW4qXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby11c2UtbGlua2VyLXBsdWdpbiIgOzsKK2VzYWMKKwogZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQogZG5sIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCkBAIC02NDA4LDcgKzcwMTEsNyBAQAogICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCiAKICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbwotICAgIGNhc2UgJHAgaW4KKyAgICBjYXNlICR7cHJldn0ke3B9IGluCiAKICAgICAtTCogfCAtUiogfCAtbCopCiAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KQEAgLTY0MTcsMTMgKzcwMjAsMjIgQEAKICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgogCSBwcmV2PSRwCiAJIGNvbnRpbnVlCi0gICAgICAgZWxzZQotCSBwcmV2PQogICAgICAgIGZpCiAKKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgorICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgorICAgICAgICAgY2FzZSAkcCBpbgorICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworICAgICAgICAgZXNhYworICAgICAgIGZpCisgICAgICAgY2FzZSAkcCBpbgorICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgZXNhYwogICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCi0JIGNhc2UgJHAgaW4KLQkgLUwqIHwgLVIqKQorCSBjYXNlICR7cHJldn0gaW4KKwkgLUwgfCAtUikKIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KQEAgLTY0NDMsOCArNzA1NSwxMCBAQAogCSAgIF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSl9ICR7cHJldn0ke3B9IgogCSBmaQogICAgICAgIGZpCisgICAgICAgcHJldj0KICAgICAgICA7OwogCisgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCiAgICAgKi4kb2JqZXh0KQogICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAogICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgpAQCAtNjQ4MCw2ICs3MDk0LDcgQEAKIGZpCiAKICRSTSAtZiBjb25mZXN0LiRvYmpleHQKK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKIAogIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KIG00X2lmKFskMV0sIFtDWFhdLApAQCAtNjUxNiw3ICs3MTMxLDcgQEAKIAogc29sYXJpcyopCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gIENDKikKKyAgQ0MqIHwgc3VuQ0MqKQogICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwogICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwogICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKQEAgLTY1NjAsMzIgKzcxNzUsMTYgQEAKIF0pIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTCiAKIAotIyBfTFRfUFJPR19GNzcKLSMgLS0tLS0tLS0tLS0tCi0jIFNpbmNlIEFDX1BST0dfRjc3IGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcKLSMgaWYgdGhlcmUgaXMgbm8gZm9ydHJhbiBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KLW00X2RlZnVuKFtfTFRfUFJPR19GNzddLAotWwotcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9kaXNhYmxlX0Y3Nz15ZXNdKQotQUNfUFJPR19GNzcKLWlmIHRlc3QgLXogIiRGNzciIHx8IHRlc3QgIlgkRjc3IiA9ICJYbm8iOyB0aGVuCi0gIF9sdF9kaXNhYmxlX0Y3Nz15ZXMKLWZpCi1wb3BkZWYoW0FDX01TR19FUlJPUl0pCi1dKSMgX0xUX1BST0dfRjc3Ci0KLWRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKLWRubCBBQ19ERUZVTihbX0xUX1BST0dfRjc3XSwgW10pCi0KLQogIyBfTFRfTEFOR19GNzdfQ09ORklHKFtUQUddKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgRm9ydHJhbiA3NyBjb21waWxlciBhcmUKICMgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRwogIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfRjc3X0NPTkZJR10sCi1bQUNfUkVRVUlSRShbX0xUX1BST0dfRjc3XSlkbmwKLUFDX0xBTkdfUFVTSChGb3J0cmFuIDc3KQorW0FDX0xBTkdfUFVTSChGb3J0cmFuIDc3KQoraWYgdGVzdCAteiAiJEY3NyIgfHwgdGVzdCAiWCRGNzciID0gIlhubyI7IHRoZW4KKyAgX2x0X2Rpc2FibGVfRjc3PXllcworZmkKIAogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CkBAIC02NTk1LDcgKzcxOTQsNiBAQAogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KQEAgLTY2MDQsNiArNzIwMiw4IEBACiBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQogX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9dW5rbm93bgogX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKK19MVF9UQUdWQVIocmVsb2FkX2ZsYWcsICQxKT0kcmVsb2FkX2ZsYWcKK19MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0kcmVsb2FkX2NtZHMKIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0KIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPW5vCkBAIC02NjQzLDcgKzcyNDMsOSBAQAogICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgogICBsdF9zYXZlX0NDPSIkQ0MiCiAgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogICBDQz0ke0Y3Ny0iZjc3In0KKyAgQ0ZMQUdTPSRGRkxBR1MKICAgY29tcGlsZXI9JENDCiAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQpAQCAtNjY5NywzOCArNzI5OSwyNCBAQAogCiAgIEdDQz0kbHRfc2F2ZV9HQ0MKICAgQ0M9IiRsdF9zYXZlX0NDIgorICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzCiAKIEFDX0xBTkdfUE9QCiBdKSMgX0xUX0xBTkdfRjc3X0NPTkZJRwogCiAKLSMgX0xUX1BST0dfRkMKLSMgLS0tLS0tLS0tLS0KLSMgU2luY2UgQUNfUFJPR19GQyBpcyBicm9rZW4sIGluIHRoYXQgaXQgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nCi0jIGlmIHRoZXJlIGlzIG5vIGZvcnRyYW4gY29tcGlsZXIsIHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uIGhlcmUuCi1tNF9kZWZ1bihbX0xUX1BST0dfRkNdLAotWwotcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9kaXNhYmxlX0ZDPXllc10pCi1BQ19QUk9HX0ZDCi1pZiB0ZXN0IC16ICIkRkMiIHx8IHRlc3QgIlgkRkMiID0gIlhubyI7IHRoZW4KLSAgX2x0X2Rpc2FibGVfRkM9eWVzCi1maQotcG9wZGVmKFtBQ19NU0dfRVJST1JdKQotXSkjIF9MVF9QUk9HX0ZDCi0KLWRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKLWRubCBBQ19ERUZVTihbX0xUX1BST0dfRkNdLCBbXSkKLQotCiAjIF9MVF9MQU5HX0ZDX0NPTkZJRyhbVEFHXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgRm9ydHJhbiBjb21waWxlciBhcmUKICMgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRwogIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfRkNfQ09ORklHXSwKLVtBQ19SRVFVSVJFKFtfTFRfUFJPR19GQ10pZG5sCi1BQ19MQU5HX1BVU0goRm9ydHJhbikKK1tBQ19MQU5HX1BVU0goRm9ydHJhbikKKworaWYgdGVzdCAteiAiJEZDIiB8fCB0ZXN0ICJYJEZDIiA9ICJYbm8iOyB0aGVuCisgIF9sdF9kaXNhYmxlX0ZDPXllcworZmkKIAogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CkBAIC02NzM4LDcgKzczMjYsNiBAQAogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KQEAgLTY3NDcsNiArNzMzNCw4IEBACiBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQogX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9dW5rbm93bgogX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKK19MVF9UQUdWQVIocmVsb2FkX2ZsYWcsICQxKT0kcmVsb2FkX2ZsYWcKK19MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0kcmVsb2FkX2NtZHMKIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0KIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPW5vCkBAIC02Nzg2LDcgKzczNzUsOSBAQAogICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgogICBsdF9zYXZlX0NDPSIkQ0MiCiAgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogICBDQz0ke0ZDLSJmOTUifQorICBDRkxBR1M9JEZDRkxBR1MKICAgY29tcGlsZXI9JENDCiAgIEdDQz0kYWNfY3ZfZmNfY29tcGlsZXJfZ251CiAKQEAgLTY4NDIsNyArNzQzMyw4IEBACiAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgogCiAgIEdDQz0kbHRfc2F2ZV9HQ0MKLSAgQ0M9IiRsdF9zYXZlX0NDIgorICBDQz0kbHRfc2F2ZV9DQworICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCiBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzCiAKIEFDX0xBTkdfUE9QCkBAIC02ODc5LDEwICs3NDcxLDEyIEBACiBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCiAKICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi1sdF9zYXZlX0NDPSIkQ0MiCitsdF9zYXZlX0NDPSRDQworbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogbHRfc2F2ZV9HQ0M9JEdDQwogR0NDPXllcwogQ0M9JHtHQ0otImdjaiJ9CitDRkxBR1M9JEdDSkZMQUdTCiBjb21waWxlcj0kQ0MKIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKIF9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgpAQCAtNjg5Miw2ICs3NDg2LDggQEAKIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwogCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogCiAjIyBDQVZFQVQgRU1QVE9SOgogIyMgVGhlcmUgaXMgbm8gZW5jYXBzdWxhdGlvbiB3aXRoaW4gdGhlIGZvbGxvd2luZyBtYWNyb3MsIGRvIG5vdCBjaGFuZ2UKQEAgLTY5MTEsMTAgKzc1MDcsODIgQEAKIEFDX0xBTkdfUkVTVE9SRQogCiBHQ0M9JGx0X3NhdmVfR0NDCi1DQz0iJGx0X3NhdmVfQ0MiCitDQz0kbHRfc2F2ZV9DQworQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwogXSkjIF9MVF9MQU5HX0dDSl9DT05GSUcKIAogCisjIF9MVF9MQU5HX0dPX0NPTkZJRyhbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciB0aGUgR05VIEdvIGNvbXBpbGVyCisjIGFyZSBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCisjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19HT19DT05GSUddLAorW0FDX1JFUVVJUkUoW0xUX1BST0dfR09dKWRubAorQUNfTEFOR19TQVZFCisKKyMgU291cmNlIGZpbGUgZXh0ZW5zaW9uIGZvciBHbyB0ZXN0IHNvdXJjZXMuCithY19leHQ9Z28KKworIyBPYmplY3QgZmlsZSBleHRlbnNpb24gZm9yIGNvbXBpbGVkIEdvIHRlc3Qgc291cmNlcy4KK29iamV4dD1vCitfTFRfVEFHVkFSKG9iamV4dCwgJDEpPSRvYmpleHQKKworIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKK2x0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0icGFja2FnZSBtYWluOyBmdW5jIG1haW4oKSB7IH0iCisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCitsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J3BhY2thZ2UgbWFpbjsgZnVuYyBtYWluKCkgeyB9JworCisjIGx0bWFpbiBvbmx5IHVzZXMgJENDIGZvciB0YWdnZWQgY29uZmlndXJhdGlvbnMgc28gbWFrZSBzdXJlICRDQyBpcyBzZXQuCitfTFRfVEFHX0NPTVBJTEVSCisKKyMgc2F2ZSB3YXJuaW5ncy9ib2lsZXJwbGF0ZSBvZiBzaW1wbGUgdGVzdCBjb2RlCitfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKK19MVF9MSU5LRVJfQk9JTEVSUExBVEUKKworIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KK2x0X3NhdmVfQ0M9JENDCitsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCitsdF9zYXZlX0dDQz0kR0NDCitHQ0M9eWVzCitDQz0ke0dPQy0iZ2NjZ28ifQorQ0ZMQUdTPSRHT0ZMQUdTCitjb21waWxlcj0kQ0MKK19MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKK19MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorCisjIEdvIGRpZCBub3QgZXhpc3QgYXQgdGhlIHRpbWUgR0NDIGRpZG4ndCBpbXBsaWNpdGx5IGxpbmsgbGliYyBpbi4KK19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworCitfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcworCisjIyBDQVZFQVQgRU1QVE9SOgorIyMgVGhlcmUgaXMgbm8gZW5jYXBzdWxhdGlvbiB3aXRoaW4gdGhlIGZvbGxvd2luZyBtYWNyb3MsIGRvIG5vdCBjaGFuZ2UKKyMjIHRoZSBydW5uaW5nIG9yZGVyIG9yIG90aGVyd2lzZSBtb3ZlIHRoZW0gYXJvdW5kIHVubGVzcyB5b3Uga25vdyBleGFjdGx5CisjIyB3aGF0IHlvdSBhcmUgZG9pbmcuLi4KK2lmIHRlc3QgLW4gIiRjb21waWxlciI7IHRoZW4KKyAgX0xUX0NPTVBJTEVSX05PX1JUVEkoJDEpCisgIF9MVF9DT01QSUxFUl9QSUMoJDEpCisgIF9MVF9DT01QSUxFUl9DX08oJDEpCisgIF9MVF9DT01QSUxFUl9GSUxFX0xPQ0tTKCQxKQorICBfTFRfTElOS0VSX1NITElCUygkMSkKKyAgX0xUX0xJTktFUl9IQVJEQ09ERV9MSUJQQVRIKCQxKQorCisgIF9MVF9DT05GSUcoJDEpCitmaQorCitBQ19MQU5HX1JFU1RPUkUKKworR0NDPSRsdF9zYXZlX0dDQworQ0M9JGx0X3NhdmVfQ0MKK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKK10pIyBfTFRfTEFOR19HT19DT05GSUcKKworCiAjIF9MVF9MQU5HX1JDX0NPTkZJRyhbVEFHXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIHRoZSBXaW5kb3dzIHJlc291cmNlIGNvbXBpbGVyCkBAIC02OTQ2LDkgKzc2MTQsMTEgQEAKIAogIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KIGx0X3NhdmVfQ0M9IiRDQyIKK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIGx0X3NhdmVfR0NDPSRHQ0MKIEdDQz0KIENDPSR7UkMtIndpbmRyZXMifQorQ0ZMQUdTPQogY29tcGlsZXI9JENDCiBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCiBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCkBAIC02OTYxLDcgKzc2MzEsOCBAQAogCiBHQ0M9JGx0X3NhdmVfR0NDCiBBQ19MQU5HX1JFU1RPUkUKLUNDPSIkbHRfc2F2ZV9DQyIKK0NDPSRsdF9zYXZlX0NDCitDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCiBdKSMgX0xUX0xBTkdfUkNfQ09ORklHCiAKIApAQCAtNjk4MSw2ICs3NjUyLDEzIEBACiBkbmwgQUNfREVGVU4oW0xUX0FDX1BST0dfR0NKXSwgW10pCiAKIAorIyBMVF9QUk9HX0dPCisjIC0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9QUk9HX0dPXSwKK1tBQ19DSEVDS19UT09MKEdPQywgZ2NjZ28sKQorXSkKKworCiAjIExUX1BST0dfUkMKICMgLS0tLS0tLS0tLQogQUNfREVGVU4oW0xUX1BST0dfUkNdLApAQCAtNzAyMCw2ICs3Njk4LDE1IEBACiBBQ19TVUJTVChbT0JKRFVNUF0pCiBdKQogCisjIF9MVF9ERUNMX0RMTFRPT0wKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgRExMVE9PTCB2YXJpYWJsZSBpcyBzZXQuCittNF9kZWZ1bihbX0xUX0RFQ0xfRExMVE9PTF0sCitbQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKK19MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFsxXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSkKK0FDX1NVQlNUKFtETExUT09MXSkKK10pCiAKICMgX0xUX0RFQ0xfU0VECiAjIC0tLS0tLS0tLS0tLQpAQCAtNzExMyw4ICs3ODAwLDggQEAKICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiB4c2lfc2hlbGw9bm8KICggX2x0X2R1bW15PSJhL2IvYyIKLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSAgICAgID0gYyxhL2IsLCBcCisgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisgICAgICA9IGMsYS9iLGIvYywgXAogICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAmJiB4c2lfc2hlbGw9eWVzCkBAIC03MTUzLDIwOCArNzg0MCwxNjIgQEAKIF0pIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKIAogCi0jIF9MVF9QUk9HX1hTSV9TSEVMTEZOUwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQm91cm5lIGFuZCBYU0kgY29tcGF0aWJsZSB2YXJpYW50cyBvZiBzb21lIHVzZWZ1bCBzaGVsbCBmdW5jdGlvbnMuCi1tNF9kZWZ1bihbX0xUX1BST0dfWFNJX1NIRUxMRk5TXSwKLVtjYXNlICR4c2lfc2hlbGwgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotfQotCi0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0jIGNhbGw6Ci0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotICBlc2FjCi0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLX0KLQotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLX0KLQotIyBmdW5jX29wdF9zcGxpdAotZnVuY19vcHRfc3BsaXQgKCkKLXsKLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci19Ci0KLSMgZnVuY19sbzJvIG9iamVjdAotZnVuY19sbzJvICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLWZ1bmNfeGZvcm0gKCkKLXsKLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotfQotCi0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi1mdW5jX2FyaXRoICgpCi17Ci0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpCi19Ci0KLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQotewotICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLX0KLQotX0xUX0VPRgotICAgIDs7Ci0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCi0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSAgZWxzZQotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSAgZmkKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKLX0KLQotZG5sIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUKLWRubCBBIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZ2VuZXJhbC5tNHNoCi1kbmwgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgaXQgaGVyZS4KLQotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICBjYXNlICR7Mn0gaW4KLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiWCR7M30iIFwKLSAgICAgICAgICAgfCAkWHNlZCAtZSAicyVeJHsxfSUlIiAtZSAicyVcXFxcJHsyfVwkJSUiYDs7Ci0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezN9IiBcCi0gICAgICAgICAgIHwgJFhzZWQgLWUgInMlXiR7MX0lJSIgLWUgInMlJHsyfVwkJSUiYDs7Ci0gIGVzYWMKLX0KLQotIyBzZWQgc2NyaXB0czoKLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtbXj1dXSpcKT0uKi9cMS87cScKLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bW149XV0qPS8vJwotCi0jIGZ1bmNfb3B0X3NwbGl0Ci1mdW5jX29wdF9zcGxpdCAoKQotewotICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJG15X3NlZF9sb25nX29wdCJgCi0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfYXJnImAKLX0KLQotIyBmdW5jX2xvMm8gb2JqZWN0Ci1mdW5jX2xvMm8gKCkKLXsKLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbG8ybyJgCi19Ci0KLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi1mdW5jX3hmb3JtICgpCi17Ci0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgJ3MvXC5bW14uXV0qJC8ubG8vJ2AKLX0KLQotIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotZnVuY19hcml0aCAoKQotewotICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJFtAXSJgCi19Ci0KLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQotewotICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiRbMV0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLX0KLQotX0xUX0VPRgotZXNhYwotCi1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLWZ1bmNfYXBwZW5kICgpCi17Ci0gIGV2YWwgIiRbMV0rPVwkWzJdIgotfQotX0xUX0VPRgotICAgIDs7Ci0gICopCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotZnVuY19hcHBlbmQgKCkKLXsKLSAgZXZhbCAiJFsxXT1cJCRbMV1cJFsyXSIKLX0KLQotX0xUX0VPRgotICAgIDs7Ci0gIGVzYWMKKyMgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRSAoRlVOQ05BTUUsIFJFUExBQ0VNRU5ULUJPRFkpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJbiBgJGNmZ2ZpbGUnLCBsb29rIGZvciBmdW5jdGlvbiBGVU5DTkFNRSBkZWxpbWl0ZWQgYnkgYF5GVU5DTkFNRSAoKSQnIGFuZAorIyAnXn0gRlVOQ05BTUUgJywgYW5kIHJlcGxhY2UgaXRzIGJvZHkgd2l0aCBSRVBMQUNFTUVOVC1CT0RZLgorbTRfZGVmdW4oW19MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0VdLAorW2RubCB7CitzZWQgLWUgJy9eJDEgKCkkLywvXn0gIyAkMSAvY1wKKyQxICgpXAore1wKK200X2JwYXRzdWJzdHMoWyQyXSwgWyRdLCBbXFxdLCBbXlwoWwkgXVwpXSwgW1xcXDFdKQorfSAjIEV4dGVuZGVkLXNoZWxsICQxIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CiBdKQorCisKKyMgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlcGxhY2UgZXhpc3RpbmcgcG9ydGFibGUgaW1wbGVtZW50YXRpb25zIG9mIHNldmVyYWwgc2hlbGwgZnVuY3Rpb25zIHdpdGgKKyMgZXF1aXZhbGVudCBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgdGhvc2UgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZS4uCittNF9kZWZ1bihbX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOU10sCitbaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVdLCBbZG5sCisgICAgY2FzZSAkezF9IGluCisgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworICAgIGVzYWNdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYmFzZW5hbWVdLCBbZG5sCisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZV0sIFtkbmwKKyAgICBjYXNlICR7MX0gaW4KKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CisgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisgICAgZXNhYworICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3RyaXBuYW1lXSwgW2RubAorICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKyAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCisgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X2xvbmdfb3B0XSwgW2RubAorICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfQorICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfc2hvcnRfb3B0XSwgW2RubAorICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99CisgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifV0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sbzJvXSwgW2RubAorICAgIGNhc2UgJHsxfSBpbgorICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKyAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworICAgIGVzYWNdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfeGZvcm1dLCBbICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXJpdGhdLCBbICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xlbl0sIFsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XSkKK2ZpCisKK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRdLCBbICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kX3F1b3RlZF0sIFtkbmwKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgorZG5sIG00IGV4cGFuc2lvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCB0aGVuIHRoZSBzaGVsbCBldmFsIHR1cm5zIHRoYXQgaW50byBcCisgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJdKQorCisgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CitlbHNlCisgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CitmaQorCitpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorICBBQ19NU0dfV0FSTihbVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZV0pCitmaQorXSkKKworIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZXRlcm1pbmUgd2hpY2ggZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGJ5CisjIGZ1bmNfdG9faG9zdF9maWxlIChhbmQsIGltcGxpY2l0bHksIGJ5IGZ1bmNfdG9faG9zdF9wYXRoKS4gIFRoZXNlIGFyZSBuZWVkZWQKKyMgZm9yIGNlcnRhaW4gY3Jvc3MtY29tcGlsZSBjb25maWd1cmF0aW9ucyBhbmQgbmF0aXZlIG1pbmd3LgorbTRfZGVmdW4oW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAorQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKQorQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQsCitbY2FzZSAkaG9zdCBpbgorICAqLSotbWluZ3cqICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICAgIDs7CisgICAgICAqLSotY3lnd2luKiApCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorICAgICAgICA7OworICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgKi0qLWN5Z3dpbiogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKyAgICAgICAgOzsKKyAgICAgICotKi1jeWd3aW4qICkKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisgICAgICAgIDs7CisgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorICAgIDs7Citlc2FjCitdKQordG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWRdKQorX0xUX0RFQ0woW3RvX2hvc3RfZmlsZV9jbWRdLCBbbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0sCisgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pZG5sCisKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pCitBQ19DQUNIRV9WQUwobHRfY3ZfdG9fdG9vbF9maWxlX2NtZCwKK1sjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCitsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKK2Nhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworZXNhYworXSkKK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b190b29sX2ZpbGVfY21kXSkKK19MVF9ERUNMKFt0b190b29sX2ZpbGVfY21kXSwgW2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdLAorICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pZG5sCitdKSMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHRvcHRpb25zLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdG9wdGlvbnMubTQKaW5kZXggMzQxNTFhMy4uNWQ5YWNkOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdG9wdGlvbnMubTQKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdG9wdGlvbnMubTQKQEAgLTEsMTMgKzEsMTQgQEAKICMgSGVscGVyIGZ1bmN0aW9ucyBmb3Igb3B0aW9uIGhhbmRsaW5nLiAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQogIwotIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyAgIEluYy4KICMgICBXcml0dGVuIGJ5IEdhcnkgVi4gVmF1Z2hhbiwgMjAwNAogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwogIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDYgbHRvcHRpb25zLm00CisjIHNlcmlhbCA3IGx0b3B0aW9ucy5tNAogCiAjIFRoaXMgaXMgdG8gaGVscCBhY2xvY2FsIGZpbmQgdGhlc2UgbWFjcm9zLCBhcyBpdCBjYW4ndCBzZWUgbTRfZGVmaW5lLgogQUNfREVGVU4oW0xUT1BUSU9OU19WRVJTSU9OXSwgW200X2lmKFsxXSldKQpAQCAtMTI1LDcgKzEyNiw3IEBACiBbZW5hYmxlX3dpbjMyX2RsbD15ZXMKIAogY2FzZSAkaG9zdCBpbgotKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi1jZWdjYyopCisqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotY2VnY2MqKQogICBBQ19DSEVDS19UT09MKEFTLCBhcywgZmFsc2UpCiAgIEFDX0NIRUNLX1RPT0woRExMVE9PTCwgZGxsdG9vbCwgZmFsc2UpCiAgIEFDX0NIRUNLX1RPT0woT0JKRFVNUCwgb2JqZHVtcCwgZmFsc2UpCkBAIC0xMzMsMTMgKzEzNCwxMyBAQAogZXNhYwogCiB0ZXN0IC16ICIkQVMiICYmIEFTPWFzCi1fTFRfREVDTChbXSwgW0FTXSwgICAgICBbMF0sIFtBc3NlbWJsZXIgcHJvZ3JhbV0pZG5sCitfTFRfREVDTChbXSwgW0FTXSwgICAgICBbMV0sIFtBc3NlbWJsZXIgcHJvZ3JhbV0pZG5sCiAKIHRlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLV9MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFswXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSlkbmwKK19MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFsxXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSlkbmwKIAogdGVzdCAteiAiJE9CSkRVTVAiICYmIE9CSkRVTVA9b2JqZHVtcAotX0xUX0RFQ0woW10sIFtPQkpEVU1QXSwgWzBdLCBbT2JqZWN0IGR1bXBlciBwcm9ncmFtXSlkbmwKK19MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFsxXSwgW09iamVjdCBkdW1wZXIgcHJvZ3JhbV0pZG5sCiBdKSMgd2luMzItZGxsCiAKIEFVX0RFRlVOKFtBQ19MSUJUT09MX1dJTjMyX0RMTF0sCkBAIC0zMjUsOSArMzI2LDI0IEBACiAjIE1PREUgaXMgZWl0aGVyIGB5ZXMnIG9yIGBubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYm90aCcuCiBtNF9kZWZpbmUoW19MVF9XSVRIX1BJQ10sCiBbQUNfQVJHX1dJVEgoW3BpY10sCi0gICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGljXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1waWNAPDpAPVBLR1NAOj5AXSwKIAlbdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgQDw6QGRlZmF1bHQ9dXNlIGJvdGhAOj5AXSldLAotICAgIFtwaWNfbW9kZT0iJHdpdGh2YWwiXSwKKyAgICBbbHRfcD0ke1BBQ0tBR0UtZGVmYXVsdH0KKyAgICBjYXNlICR3aXRodmFsIGluCisgICAgeWVzfG5vKSBwaWNfbW9kZT0kd2l0aHZhbCA7OworICAgICopCisgICAgICBwaWNfbW9kZT1kZWZhdWx0CisgICAgICAjIExvb2sgYXQgdGhlIGFyZ3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNlcGFyYXRvcnMuCisgICAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKKyAgICAgIGZvciBsdF9wa2cgaW4gJHdpdGh2YWw7IGRvCisJSUZTPSIkbHRfc2F2ZV9pZnMiCisJaWYgdGVzdCAiWCRsdF9wa2ciID0gIlgkbHRfcCI7IHRoZW4KKwkgIHBpY19tb2RlPXllcworCWZpCisgICAgICBkb25lCisgICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIDs7CisgICAgZXNhY10sCiAgICAgW3BpY19tb2RlPWRlZmF1bHRdKQogCiB0ZXN0IC16ICIkcGljX21vZGUiICYmIHBpY19tb2RlPW00X2RlZmF1bHQoWyQxXSwgW2RlZmF1bHRdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdHZlcnNpb24ubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0dmVyc2lvbi5tNAppbmRleCBiOGUxNTRmLi4wN2E4NjAyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0dmVyc2lvbi5tNAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0dmVyc2lvbi5tNApAQCAtNywxNyArNywxNyBAQAogIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgR2VuZXJhdGVkIGZyb20gbHR2ZXJzaW9uLmluLgorIyBAY29uZmlndXJlX2lucHV0QAogCi0jIHNlcmlhbCAzMDEyIGx0dmVyc2lvbi5tNAorIyBzZXJpYWwgMzMzNyBsdHZlcnNpb24ubTQKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wKIAotbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi4yLjZdKQotbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzAxMl0pCittNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjQuMl0pCittNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMzM3XSkKIAogQUNfREVGVU4oW0xUVkVSU0lPTl9WRVJTSU9OXSwKLVttYWNyb192ZXJzaW9uPScyLjIuNicKLW1hY3JvX3JldmlzaW9uPScxLjMwMTInCitbbWFjcm9fdmVyc2lvbj0nMi40LjInCittYWNyb19yZXZpc2lvbj0nMS4zMzM3JwogX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCiBfTFRfREVDTCgsIG1hY3JvX3JldmlzaW9uLCAwKQogXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR+b2Jzb2xldGUubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0fm9ic29sZXRlLm00CmluZGV4IDYzN2JiMjAuLmM1NzNkYTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR+b2Jzb2xldGUubTQKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdH5vYnNvbGV0ZS5tNApAQCAtMSwxMyArMSwxMyBAQAogIyBsdH5vYnNvbGV0ZS5tNCAtLSBhY2xvY2FsIHNhdGlzZnlpbmcgb2Jzb2xldGUgZGVmaW5pdGlvbnMuICAgIC0qLUF1dG9jb25mLSotCiAjCi0jICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgICBXcml0dGVuIGJ5IFNjb3R0IEphbWVzIFJlbW5hbnQsIDIwMDQuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCiAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBzZXJpYWwgNCBsdH5vYnNvbGV0ZS5tNAorIyBzZXJpYWwgNSBsdH5vYnNvbGV0ZS5tNAogCiAjIFRoZXNlIGV4aXN0IGVudGlyZWx5IHRvIGZvb2wgYWNsb2NhbCB3aGVuIGJvb3RzdHJhcHBpbmcgbGlidG9vbC4KICMKQEAgLTc3LDcgKzc3LDYgQEAKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfQ1hYXSwJCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfQ1hYXSldKQogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19GNzddLAkJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19GNzddKV0pCiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX0dDSl0sCQlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0dDSl0pXSkKLW00X2lmbmRlZihbQUNfTElCVE9PTF9SQ10sCQlbQUNfREVGVU4oW0FDX0xJQlRPT0xfUkNdKV0pCiBtNF9pZm5kZWYoW0FDX0xJQlRPT0xfTEFOR19DX0NPTkZJR10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHXSldKQogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19DX0NPTkZJR10sCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfQ19DT05GSUddKV0pCiBtNF9pZm5kZWYoW0FDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJR10pXSkKQEAgLTkwLDMgKzg5LDEwIEBACiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX1JDX0NPTkZJR10sCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfUkNfQ09ORklHXSldKQogbTRfaWZuZGVmKFtBQ19MSUJUT09MX0NPTkZJR10sCQlbQUNfREVGVU4oW0FDX0xJQlRPT0xfQ09ORklHXSldKQogbTRfaWZuZGVmKFtfTFRfQUNfRklMRV9MVERMTF9DXSwJW0FDX0RFRlVOKFtfTFRfQUNfRklMRV9MVERMTF9DXSldKQorbTRfaWZuZGVmKFtfTFRfUkVRVUlSRURfREFSV0lOX0NIRUNLU10sCVtBQ19ERUZVTihbX0xUX1JFUVVJUkVEX0RBUldJTl9DSEVDS1NdKV0pCittNF9pZm5kZWYoW19MVF9BQ19QUk9HX0NYWENQUF0sCQlbQUNfREVGVU4oW19MVF9BQ19QUk9HX0NYWENQUF0pXSkKK200X2lmbmRlZihbX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlNdLAlbQUNfREVGVU4oW19MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTXSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0sCVtBQ19ERUZVTihbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0Y3N10sCQlbQUNfREVGVU4oW19MVF9QUk9HX0Y3N10pXSkKK200X2lmbmRlZihbX0xUX1BST0dfRkNdLAkJW0FDX0RFRlVOKFtfTFRfUFJPR19GQ10pXSkKK200X2lmbmRlZihbX0xUX1BST0dfQ1hYXSwJCVtBQ19ERUZVTihbX0xUX1BST0dfQ1hYXSldKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuYW0gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5hbQppbmRleCAyNTE5Mjc3Li5hZmNiZmI2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5hbQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5hbQpAQCAtMiw3ICsyLDcgQEAKIAogQVVUT01BS0VfT1BUSU9OUz1mb3JlaWduCiAKLUVYVFJBX0RJU1QgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zCitFWFRSQV9ESVNUID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMyBmZmlfcHJlcF9jaWZfdmFyLjMKIAotbWFuX01BTlMgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zCittYW5fTUFOUyA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMgZmZpX3ByZXBfY2lmX3Zhci4zCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuaW4KaW5kZXggM2U0MGJlMi4uYjI5ZmIxNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuaW4KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuaW4KQEAgLTEsOSArMSw5IEBACi0jIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExIGZyb20gTWFrZWZpbGUuYW0uCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjMgZnJvbSBNYWtlZmlsZS5hbS4KICMgQGNvbmZpZ3VyZV9pbnB1dEAKIAogIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCi0jIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSMgSW5jLgorIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpAQCAtNjgsNiArNjgsMTIgQEAKIGFtX19iYXNlX2xpc3QgPSBcCiAgIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycgfCBcCiAgIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycKK2FtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIgPSB7IFwKKyAgdGVzdCAteiAiJCRmaWxlcyIgXAorICAgIHx8IHsgdGVzdCAhIC1kICIkJGRpciIgJiYgdGVzdCAhIC1mICIkJGRpciIgJiYgdGVzdCAhIC1yICIkJGRpciI7IH0gXAorICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKKyAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKKyAgfQogbWFuM2RpciA9ICQobWFuZGlyKS9tYW4zCiBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQobWFuM2RpcikiCiBOUk9GRiA9IG5yb2ZmCkBAIC03Niw2ICs4Miw3IEBACiBBQ0xPQ0FMID0gQEFDTE9DQUxACiBBTExPQ0EgPSBAQUxMT0NBQAogQU1UQVIgPSBAQU1UQVJACitBTV9MVExERkxBR1MgPSBAQU1fTFRMREZMQUdTQAogQU1fUlVOVEVTVEZMQUdTID0gQEFNX1JVTlRFU1RGTEFHU0AKIEFSID0gQEFSQAogQVVUT0NPTkYgPSBAQVVUT0NPTkZACkBAIC05Myw2ICsxMDAsNyBAQAogQ1lHUEFUSF9XID0gQENZR1BBVEhfV0AKIERFRlMgPSBAREVGU0AKIERFUERJUiA9IEBERVBESVJACitETExUT09MID0gQERMTFRPT0xACiBEU1lNVVRJTCA9IEBEU1lNVVRJTEAKIERVTVBCSU4gPSBARFVNUEJJTkAKIEVDSE9fQyA9IEBFQ0hPX0NACkBAIC0xMDAsNiArMTA4LDcgQEAKIEVDSE9fVCA9IEBFQ0hPX1RACiBFR1JFUCA9IEBFR1JFUEAKIEVYRUVYVCA9IEBFWEVFWFRACitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFID0gQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVACiBGR1JFUCA9IEBGR1JFUEAKIEdSRVAgPSBAR1JFUEAKIEhBVkVfTE9OR19ET1VCTEUgPSBASEFWRV9MT05HX0RPVUJMRUAKQEAgLTExOCw2ICsxMjcsNyBAQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACitNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACiBNS0RJUl9QID0gQE1LRElSX1BACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACkBAIC0xMzAsNiArMTQwLDcgQEAKIFBBQ0tBR0VfTkFNRSA9IEBQQUNLQUdFX05BTUVACiBQQUNLQUdFX1NUUklORyA9IEBQQUNLQUdFX1NUUklOR0AKIFBBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVACitQQUNLQUdFX1VSTCA9IEBQQUNLQUdFX1VSTEAKIFBBQ0tBR0VfVkVSU0lPTiA9IEBQQUNLQUdFX1ZFUlNJT05ACiBQQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkAKIFJBTkxJQiA9IEBSQU5MSUJACkBAIC0xNDQsNiArMTU1LDcgQEAKIGFic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKIGFic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKIGFic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorYWNfY3RfQVIgPSBAYWNfY3RfQVJACiBhY19jdF9DQyA9IEBhY19jdF9DQ0AKIGFjX2N0X0RVTVBCSU4gPSBAYWNfY3RfRFVNUEJJTkAKIGFtX19pbmNsdWRlID0gQGFtX19pbmNsdWRlQApAQCAtMTc2LDcgKzE4OCw2IEBACiBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACiBsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAogbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAotbHRfRUNITyA9IEBsdF9FQ0hPQAogbWFuZGlyID0gQG1hbmRpckAKIG1rZGlyX3AgPSBAbWtkaXJfcEAKIG9sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKQEAgLTE5OSw4ICsyMTAsOCBAQAogdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIEFVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCi1FWFRSQV9ESVNUID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMwotbWFuX01BTlMgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zCitFWFRSQV9ESVNUID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMyBmZmlfcHJlcF9jaWZfdmFyLjMKK21hbl9NQU5TID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMyBmZmlfcHJlcF9jaWZfdmFyLjMKIGFsbDogYWxsLWFtCiAKIC5TVUZGSVhFUzoKQEAgLTI3NSw5ICsyODYsNyBAQAogCSAgc2VkIC1uICcvXC4zW2Etel0qJCQvcCc7IFwKIAl9IHwgc2VkIC1lICdzLC4qLywsO2g7cywuKlwuLCw7cyxeW14zXVswLTlhLXpdKiQkLDMsO3gnIFwKIAkgICAgICAtZSAncyxcLlswLTlhLXpdKiQkLCw7JCh0cmFuc2Zvcm0pO0c7cyxcbiwuLCdgOyBcCi0JdGVzdCAteiAiJCRmaWxlcyIgfHwgeyBcCi0JICBlY2hvICIgKCBjZCAnJChERVNURElSKSQobWFuM2RpciknICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAotCSAgY2QgIiQoREVTVERJUikkKG1hbjNkaXIpIiAmJiBybSAtZiAkJGZpbGVzOyB9CisJZGlyPSckKERFU1RESVIpJChtYW4zZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKIHRhZ3M6IFRBR1MKIFRBR1M6CiAKQEAgLTM0NSwxMCArMzU0LDE1IEBACiAKIGluc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLWFtCiBpbnN0YWxsLXN0cmlwOgotCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCi0JICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKLQkgIGB0ZXN0IC16ICckKFNUUklQKScgfHwgXAotCSAgICBlY2hvICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknImAgaW5zdGFsbAorCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgICBpbnN0YWxsOyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKKwlmaQogbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKIAogY2xlYW4tZ2VuZXJpYzoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaS4zIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpLjMKaW5kZXggMThiNWQ1ZC4uMWYxZDMwMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpLjMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpLjMKQEAgLTE2LDYgKzE2LDE1IEBACiAuRmEgImZmaV90eXBlICoqYXR5cGVzIgogLkZjCiAuRnQgdm9pZAorLkZvIGZmaV9wcmVwX2NpZl92YXIKKy5GYSAiZmZpX2NpZiAqY2lmIgorLkZhICJmZmlfYWJpIGFiaSIKKy5GYSAidW5zaWduZWQgaW50IG5maXhlZGFyZ3MiCisuRmEgInVuc2lnbmVkIGludCBudG90YWxhcmdzIgorLkZhICJmZmlfdHlwZSAqcnR5cGUiCisuRmEgImZmaV90eXBlICoqYXR5cGVzIgorLkZjCisuRnQgdm9pZAogLkZvIGZmaV9jYWxsCiAuRmEgImZmaV9jaWYgKmNpZiIKIC5GYSAidm9pZCAoKmZuKSh2b2lkKSIKQEAgLTI4LDQgKzM3LDUgQEAKIHRoZSBjYWxsZWQgZnVuY3Rpb24ncyBpbnRlcmZhY2UgYXQgY29tcGlsZSB0aW1lLgogLlNoIFNFRSBBTFNPCiAuWHIgZmZpX3ByZXBfY2lmIDMgLAorLlhyIGZmaV9wcmVwX2NpZl92YXIgMyAsCiAuWHIgZmZpX2NhbGwgMwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpX3ByZXBfY2lmLjMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWYuMwppbmRleCA5NDM2YjMxLi5lMWJkYmQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWYuMworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWYuMwpAQCAtMzcsNyArMzcsOSBAQAogcG9pbnRzIHRvIGFuCiAuTm0gZmZpX3R5cGUKIHRoYXQgZGVzY3JpYmVzIHRoZSBkYXRhIHR5cGUsIHNpemUgYW5kIGFsaWdubWVudCBvZiB0aGUKLXJldHVybiB2YWx1ZS4KK3JldHVybiB2YWx1ZS4gTm90ZSB0aGF0IHRvIGNhbGwgYSB2YXJpYWRpYyBmdW5jdGlvbgorLk5tIGZmaV9wcmVwX2NpZl92YXIKK211c3QgYmUgdXNlZCBpbnN0ZWFkLgogLlNoIFJFVFVSTiBWQUxVRVMKIFVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLAogLk5tIGZmaV9wcmVwX2NpZgpAQCAtNjMsNCArNjUsNiBAQAogLgogLlNoIFNFRSBBTFNPCiAuWHIgZmZpIDMgLAotLlhyIGZmaV9jYWxsIDMgCisuWHIgZmZpX2NhbGwgMyAsCisuWHIgZmZpX3ByZXBfY2lmX3ZhciAzCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZl92YXIuMyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZl92YXIuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTE5ZDBiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpX3ByZXBfY2lmX3Zhci4zCkBAIC0wLDAgKzEsNzMgQEAKKy5EZCBKYW51YXJ5IDI1LCAyMDExCisuRHQgZmZpX3ByZXBfY2lmX3ZhciAzCisuU2ggTkFNRQorLk5tIGZmaV9wcmVwX2NpZl92YXIKKy5OZCBQcmVwYXJlIGEKKy5ObSBmZmlfY2lmCitzdHJ1Y3R1cmUgZm9yIHVzZSB3aXRoCisuTm0gZmZpX2NhbGwKK2ZvciB2YXJpYWRpYyBmdW5jdGlvbnMuCisuU2ggU1lOT1BTSVMKKy5JbiBmZmkuaAorLkZ0IGZmaV9zdGF0dXMKKy5GbyBmZmlfcHJlcF9jaWZfdmFyCisuRmEgImZmaV9jaWYgKmNpZiIKKy5GYSAiZmZpX2FiaSBhYmkiCisuRmEgInVuc2lnbmVkIGludCBuZml4ZWRhcmdzIgorLkZhICJ1bnNpZ25lZCBpbnQgbnRvdGFsYXJncyIKKy5GYSAiZmZpX3R5cGUgKnJ0eXBlIgorLkZhICJmZmlfdHlwZSAqKmF0eXBlcyIKKy5GYworLlNoIERFU0NSSVBUSU9OCitUaGUKKy5ObSBmZmlfcHJlcF9jaWZfdmFyCitmdW5jdGlvbiBwcmVwYXJlcyBhCisuTm0gZmZpX2NpZgorc3RydWN0dXJlIGZvciB1c2Ugd2l0aAorLk5tIGZmaV9jYWxsCitmb3IgdmFyaWFkaWMgZnVuY3Rpb25zLgorLkZhIGFiaQorc3BlY2lmaWVzIGEgc2V0IG9mIGNhbGxpbmcgY29udmVudGlvbnMgdG8gdXNlLgorLkZhIGF0eXBlcworaXMgYW4gYXJyYXkgb2YKKy5GYSBudG90YWxhcmdzCitwb2ludGVycyB0bworLk5tIGZmaV90eXBlCitzdHJ1Y3RzIHRoYXQgZGVzY3JpYmUgdGhlIGRhdGEgdHlwZSwgc2l6ZSBhbmQgYWxpZ25tZW50IG9mIGVhY2ggYXJndW1lbnQuCisuRmEgcnR5cGUKK3BvaW50cyB0byBhbgorLk5tIGZmaV90eXBlCit0aGF0IGRlc2NyaWJlcyB0aGUgZGF0YSB0eXBlLCBzaXplIGFuZCBhbGlnbm1lbnQgb2YgdGhlCityZXR1cm4gdmFsdWUuCisuRmEgbmZpeGVkYXJncworbXVzdCBjb250YWluIHRoZSBudW1iZXIgb2YgZml4ZWQgKG5vbi12YXJpYWRpYykgYXJndW1lbnRzLgorTm90ZSB0aGF0IHRvIGNhbGwgYSBub24tdmFyaWFkaWMgZnVuY3Rpb24KKy5ObSBmZmlfcHJlcF9jaWYKK211c3QgYmUgdXNlZC4KKy5TaCBSRVRVUk4gVkFMVUVTCitVcG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiwKKy5ObSBmZmlfcHJlcF9jaWZfdmFyCityZXR1cm5zCisuTm0gRkZJX09LIC4KK0l0IHdpbGwgcmV0dXJuCisuTm0gRkZJX0JBRF9UWVBFREVGCitpZgorLkZhIGNpZgoraXMKKy5ObSBOVUxMCitvcgorLkZhIGF0eXBlcworb3IKKy5GYSBydHlwZQoraXMgbWFsZm9ybWVkLiBJZgorLkZhIGFiaQorZG9lcyBub3QgcmVmZXIgdG8gYSB2YWxpZCBBQkksCisuTm0gRkZJX0JBRF9BQkkKK3dpbGwgYmUgcmV0dXJuZWQuIEF2YWlsYWJsZSBBQklzIGFyZQorZGVmaW5lZCBpbgorLk5tIDxmZml0YXJnZXQuaD4KKy4KKy5TaCBTRUUgQUxTTworLlhyIGZmaSAzICwKKy5YciBmZmlfY2FsbCAzICwKKy5YciBmZmlfcHJlcF9jaWYgMwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9taXNzaW5nIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9taXNzaW5nCmluZGV4IDg5NGU3ODYuLjI4MDU1ZDIgMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWlzc2luZworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21pc3NpbmcKQEAgLTEsMTAgKzEsMTAgQEAKICMhIC9iaW4vc2gKICMgQ29tbW9uIHN0dWIgZm9yIGEgZmV3IG1pc3NpbmcgR05VIHByb2dyYW1zIHdoaWxlIGluc3RhbGxpbmcuCiAKLXNjcmlwdHZlcnNpb249MjAwNS0wNi0wOC4yMQorc2NyaXB0dmVyc2lvbj0yMDA5LTA0LTI4LjIxOyAjIFVUQwogCi0jIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OSwgMjAwMCwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNQotIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTksIDIwMDAsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCisjIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjIE9yaWdpbmFsbHkgYnkgRnJhbixjb2lzIFBpbmFyZCA8cGluYXJkQGlyby51bW9udHJlYWwuY2E+LCAxOTk2LgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0xOCw5ICsxOCw3IEBACiAjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQotIyAwMjExMC0xMzAxLCBVU0EuCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCiAjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKICMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCkBAIC0zMyw2ICszMSw4IEBACiBmaQogCiBydW49Ogorc2VkX291dHB1dD0ncy8uKiAtLW91dHB1dFsgPV1cKFteIF0qXCkuKi9cMS9wJworc2VkX21pbnVzbz0ncy8uKiAtbyBcKFteIF0qXCkuKi9cMS9wJwogCiAjIEluIHRoZSBjYXNlcyB3aGVyZSB0aGlzIG1hdHRlcnMsIGBtaXNzaW5nJyBpcyBiZWluZyBydW4gaW4gdGhlCiAjIHNyY2RpciBhbHJlYWR5LgpAQCAtNDQsNyArNDQsNyBAQAogCiBtc2c9Im1pc3Npbmcgb24geW91ciBzeXN0ZW0iCiAKLWNhc2UgIiQxIiBpbgorY2FzZSAkMSBpbgogLS1ydW4pCiAgICMgVHJ5IHRvIHJ1biByZXF1ZXN0ZWQgcHJvZ3JhbSwgYW5kIGp1c3QgZXhpdCBpZiBpdCBzdWNjZWVkcy4KICAgcnVuPQpAQCAtNzcsNiArNzcsNyBAQAogICBhY2xvY2FsICAgICAgdG91Y2ggZmlsZSBcYGFjbG9jYWwubTQnCiAgIGF1dG9jb25mICAgICB0b3VjaCBmaWxlIFxgY29uZmlndXJlJwogICBhdXRvaGVhZGVyICAgdG91Y2ggZmlsZSBcYGNvbmZpZy5oLmluJworICBhdXRvbTR0ZSAgICAgdG91Y2ggdGhlIG91dHB1dCBmaWxlLCBvciBjcmVhdGUgYSBzdHViIG9uZQogICBhdXRvbWFrZSAgICAgdG91Y2ggYWxsIFxgTWFrZWZpbGUuaW4nIGZpbGVzCiAgIGJpc29uICAgICAgICBjcmVhdGUgXGB5LnRhYi5bY2hdJywgaWYgcG9zc2libGUsIGZyb20gZXhpc3RpbmcgLltjaF0KICAgZmxleCAgICAgICAgIGNyZWF0ZSBcYGxleC55eS5jJywgaWYgcG9zc2libGUsIGZyb20gZXhpc3RpbmcgLmMKQEAgLTg2LDYgKzg3LDkgQEAKICAgdGFyICAgICAgICAgIHRyeSB0YXIsIGdudXRhciwgZ3RhciwgdGhlbiB0YXIgd2l0aG91dCBub24tcG9ydGFibGUgZmxhZ3MKICAgeWFjYyAgICAgICAgIGNyZWF0ZSBcYHkudGFiLltjaF0nLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuW2NoXQogCitWZXJzaW9uIHN1ZmZpeGVzIHRvIFBST0dSQU0gYXMgd2VsbCBhcyB0aGUgcHJlZml4ZXMgXGBnbnUtJywgXGBnbnUnLCBhbmQKK1xgZycgYXJlIGlnbm9yZWQgd2hlbiBjaGVja2luZyB0aGUgbmFtZS4KKwogU2VuZCBidWcgcmVwb3J0cyB0byA8YnVnLWF1dG9tYWtlQGdudS5vcmc+LiIKICAgICBleGl0ICQ/CiAgICAgOzsKQEAgLTEwMywxNSArMTA3LDIyIEBACiAKIGVzYWMKIAorIyBub3JtYWxpemUgcHJvZ3JhbSBuYW1lIHRvIGNoZWNrIGZvci4KK3Byb2dyYW09YGVjaG8gIiQxIiB8IHNlZCAnCisgIHMvXmdudS0vLzsgdAorICBzL15nbnUvLzsgdAorICBzL15nLy87IHQnYAorCiAjIE5vdyBleGl0IGlmIHdlIGhhdmUgaXQsIGJ1dCBpdCBmYWlsZWQuICBBbHNvIGV4aXQgbm93IGlmIHdlCiAjIGRvbid0IGhhdmUgaXQgYW5kIC0tdmVyc2lvbiB3YXMgcGFzc2VkIChtb3N0IGxpa2VseSB0byBkZXRlY3QKLSMgdGhlIHByb2dyYW0pLgotY2FzZSAiJDEiIGluCi0gIGxleHx5YWNjKQorIyB0aGUgcHJvZ3JhbSkuICBUaGlzIGlzIGFib3V0IG5vbi1HTlUgcHJvZ3JhbXMsIHNvIHVzZSAkMSBub3QKKyMgJHByb2dyYW0uCitjYXNlICQxIGluCisgIGxleCp8eWFjYyopCiAgICAgIyBOb3QgR05VIHByb2dyYW1zLCB0aGV5IGRvbid0IGhhdmUgLS12ZXJzaW9uLgogICAgIDs7CiAKLSAgdGFyKQorICB0YXIqKQogICAgIGlmIHRlc3QgLW4gIiRydW4iOyB0aGVuCiAgICAgICAgZWNobyAxPiYyICJFUlJPUjogXGB0YXInIHJlcXVpcmVzIC0tcnVuIgogICAgICAgIGV4aXQgMQpAQCAtMTM1LDcgKzE0Niw3IEBACiAKICMgSWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIGZhaWxzIHRvIHJ1biAocG9zc2libHkgYW4gb3V0ZGF0ZWQgdmVyc2lvbiksCiAjIHRyeSB0byBlbXVsYXRlIGl0LgotY2FzZSAiJDEiIGluCitjYXNlICRwcm9ncmFtIGluCiAgIGFjbG9jYWwqKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCkBAIC0xNDUsNyArMTU2LDcgQEAKICAgICB0b3VjaCBhY2xvY2FsLm00CiAgICAgOzsKIAotICBhdXRvY29uZikKKyAgYXV0b2NvbmYqKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCiAgICAgICAgICB5b3UgbW9kaWZpZWQgXGAke2NvbmZpZ3VyZV9hY30nLiAgWW91IG1pZ2h0IHdhbnQgdG8gaW5zdGFsbCB0aGUKQEAgLTE1NCw3ICsxNjUsNyBAQAogICAgIHRvdWNoIGNvbmZpZ3VyZQogICAgIDs7CiAKLSAgYXV0b2hlYWRlcikKKyAgYXV0b2hlYWRlciopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKICAgICAgICAgIHlvdSBtb2RpZmllZCBcYGFjY29uZmlnLmgnIG9yIFxgJHtjb25maWd1cmVfYWN9Jy4gIFlvdSBtaWdodCB3YW50CkBAIC0xNjQsNyArMTc1LDcgQEAKICAgICB0ZXN0IC16ICIkZmlsZXMiICYmIGZpbGVzPSJjb25maWcuaCIKICAgICB0b3VjaF9maWxlcz0KICAgICBmb3IgZiBpbiAkZmlsZXM7IGRvCi0gICAgICBjYXNlICIkZiIgaW4KKyAgICAgIGNhc2UgJGYgaW4KICAgICAgICo6KikgdG91Y2hfZmlsZXM9IiR0b3VjaF9maWxlcyAiYGVjaG8gIiRmIiB8CiAJCQkJICAgICAgIHNlZCAtZSAncy9eW146XSo6Ly8nIC1lICdzLzouKi8vJ2A7OwogICAgICAgKikgdG91Y2hfZmlsZXM9IiR0b3VjaF9maWxlcyAkZi5pbiI7OwpAQCAtMTg0LDcgKzE5NSw3IEBACiAJICAgd2hpbGUgcmVhZCBmOyBkbyB0b3VjaCAiJGYiOyBkb25lCiAgICAgOzsKIAotICBhdXRvbTR0ZSkKKyAgYXV0b200dGUqKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgaXMgbmVlZGVkLCBidXQgaXMgJG1zZy4KICAgICAgICAgIFlvdSBtaWdodCBoYXZlIG1vZGlmaWVkIHNvbWUgZmlsZXMgd2l0aG91dCBoYXZpbmcgdGhlCkBAIC0xOTIsOCArMjAzLDggQEAKICAgICAgICAgIFlvdSBjYW4gZ2V0IFxgJDEnIGFzIHBhcnQgb2YgXGBBdXRvY29uZicgZnJvbSBhbnkgR05VCiAgICAgICAgICBhcmNoaXZlIHNpdGUuIgogCi0gICAgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICdzLy4qLS1vdXRwdXRbID1dKlwoW14gXSpcKS4qL1wxL3AnYAotICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotb1sgXSpcKFteIF0qXCkuKi9cMS9wJ2AKKyAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfb3V0cHV0ImAKKyAgICB0ZXN0IC16ICIkZmlsZSIgJiYgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICIkc2VkX21pbnVzbyJgCiAgICAgaWYgdGVzdCAtZiAiJGZpbGUiOyB0aGVuCiAJdG91Y2ggJGZpbGUKICAgICBlbHNlCkBAIC0yMDcsODAgKzIxOCw3OCBAQAogICAgIGZpCiAgICAgOzsKIAotICBiaXNvbnx5YWNjKQorICBiaXNvbip8eWFjYyopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKICAgICAgICAgIHlvdSBtb2RpZmllZCBhIFxgLnknIGZpbGUuICBZb3UgbWF5IG5lZWQgdGhlIFxgQmlzb24nIHBhY2thZ2UKICAgICAgICAgIGluIG9yZGVyIGZvciB0aG9zZSBtb2RpZmljYXRpb25zIHRvIHRha2UgZWZmZWN0LiAgWW91IGNhbiBnZXQKICAgICAgICAgIFxgQmlzb24nIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgogICAgIHJtIC1mIHkudGFiLmMgeS50YWIuaAotICAgIGlmIFsgJCMgLW5lIDEgXTsgdGhlbgorICAgIGlmIHRlc3QgJCMgLW5lIDE7IHRoZW4KICAgICAgICAgZXZhbCBMQVNUQVJHPSJcJHskI30iCi0JY2FzZSAiJExBU1RBUkciIGluCisJY2FzZSAkTEFTVEFSRyBpbgogCSoueSkKIAkgICAgU1JDRklMRT1gZWNobyAiJExBU1RBUkciIHwgc2VkICdzL3kkL2MvJ2AKLQkgICAgaWYgWyAtZiAiJFNSQ0ZJTEUiIF07IHRoZW4KKwkgICAgaWYgdGVzdCAtZiAiJFNSQ0ZJTEUiOyB0aGVuCiAJICAgICAgICAgY3AgIiRTUkNGSUxFIiB5LnRhYi5jCiAJICAgIGZpCiAJICAgIFNSQ0ZJTEU9YGVjaG8gIiRMQVNUQVJHIiB8IHNlZCAncy95JC9oLydgCi0JICAgIGlmIFsgLWYgIiRTUkNGSUxFIiBdOyB0aGVuCisJICAgIGlmIHRlc3QgLWYgIiRTUkNGSUxFIjsgdGhlbgogCSAgICAgICAgIGNwICIkU1JDRklMRSIgeS50YWIuaAogCSAgICBmaQogCSAgOzsKIAllc2FjCiAgICAgZmkKLSAgICBpZiBbICEgLWYgeS50YWIuaCBdOyB0aGVuCisgICAgaWYgdGVzdCAhIC1mIHkudGFiLmg7IHRoZW4KIAllY2hvID55LnRhYi5oCiAgICAgZmkKLSAgICBpZiBbICEgLWYgeS50YWIuYyBdOyB0aGVuCisgICAgaWYgdGVzdCAhIC1mIHkudGFiLmM7IHRoZW4KIAllY2hvICdtYWluKCkgeyByZXR1cm4gMDsgfScgPnkudGFiLmMKICAgICBmaQogICAgIDs7CiAKLSAgbGV4fGZsZXgpCisgIGxleCp8ZmxleCopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKICAgICAgICAgIHlvdSBtb2RpZmllZCBhIFxgLmwnIGZpbGUuICBZb3UgbWF5IG5lZWQgdGhlIFxgRmxleCcgcGFja2FnZQogICAgICAgICAgaW4gb3JkZXIgZm9yIHRob3NlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZSBlZmZlY3QuICBZb3UgY2FuIGdldAogICAgICAgICAgXGBGbGV4JyBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKICAgICBybSAtZiBsZXgueXkuYwotICAgIGlmIFsgJCMgLW5lIDEgXTsgdGhlbgorICAgIGlmIHRlc3QgJCMgLW5lIDE7IHRoZW4KICAgICAgICAgZXZhbCBMQVNUQVJHPSJcJHskI30iCi0JY2FzZSAiJExBU1RBUkciIGluCisJY2FzZSAkTEFTVEFSRyBpbgogCSoubCkKIAkgICAgU1JDRklMRT1gZWNobyAiJExBU1RBUkciIHwgc2VkICdzL2wkL2MvJ2AKLQkgICAgaWYgWyAtZiAiJFNSQ0ZJTEUiIF07IHRoZW4KKwkgICAgaWYgdGVzdCAtZiAiJFNSQ0ZJTEUiOyB0aGVuCiAJICAgICAgICAgY3AgIiRTUkNGSUxFIiBsZXgueXkuYwogCSAgICBmaQogCSAgOzsKIAllc2FjCiAgICAgZmkKLSAgICBpZiBbICEgLWYgbGV4Lnl5LmMgXTsgdGhlbgorICAgIGlmIHRlc3QgISAtZiBsZXgueXkuYzsgdGhlbgogCWVjaG8gJ21haW4oKSB7IHJldHVybiAwOyB9JyA+bGV4Lnl5LmMKICAgICBmaQogICAgIDs7CiAKLSAgaGVscDJtYW4pCisgIGhlbHAybWFuKikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgogCSB5b3UgbW9kaWZpZWQgYSBkZXBlbmRlbmN5IG9mIGEgbWFudWFsIHBhZ2UuICBZb3UgbWF5IG5lZWQgdGhlCiAJIFxgSGVscDJtYW4nIHBhY2thZ2UgaW4gb3JkZXIgZm9yIHRob3NlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZQogCSBlZmZlY3QuICBZb3UgY2FuIGdldCBcYEhlbHAybWFuJyBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKIAotICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi1vIFwoW14gXSpcKS4qL1wxL3AnYAotICAgIGlmIHRlc3QgLXogIiRmaWxlIjsgdGhlbgotCWZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi0tb3V0cHV0PVwoW14gXSpcKS4qL1wxL3AnYAotICAgIGZpCi0gICAgaWYgWyAtZiAiJGZpbGUiIF07IHRoZW4KKyAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfb3V0cHV0ImAKKyAgICB0ZXN0IC16ICIkZmlsZSIgJiYgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICIkc2VkX21pbnVzbyJgCisgICAgaWYgdGVzdCAtZiAiJGZpbGUiOyB0aGVuCiAJdG91Y2ggJGZpbGUKICAgICBlbHNlCiAJdGVzdCAteiAiJGZpbGUiIHx8IGV4ZWMgPiRmaWxlCiAJZWNobyAiLmFiIGhlbHAybWFuIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIHRoaXMgcGFnZSIKLQlleGl0IDEKKwlleGl0ICQ/CiAgICAgZmkKICAgICA7OwogCi0gIG1ha2VpbmZvKQorICBtYWtlaW5mbyopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKICAgICAgICAgIHlvdSBtb2RpZmllZCBhIFxgLnRleGknIG9yIFxgLnRleGluZm8nIGZpbGUsIG9yIGFueSBvdGhlciBmaWxlCkBAIC0yODksMTEgKzI5OCwxNyBAQAogICAgICAgICAgRFUsIElSSVgpLiAgWW91IG1pZ2h0IHdhbnQgdG8gaW5zdGFsbCB0aGUgXGBUZXhpbmZvJyBwYWNrYWdlIG9yCiAgICAgICAgICB0aGUgXGBHTlUgbWFrZScgcGFja2FnZS4gIEdyYWIgZWl0aGVyIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgogICAgICMgVGhlIGZpbGUgdG8gdG91Y2ggaXMgdGhhdCBzcGVjaWZpZWQgd2l0aCAtbyAuLi4KLSAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotbyBcKFteIF0qXCkuKi9cMS9wJ2AKKyAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfb3V0cHV0ImAKKyAgICB0ZXN0IC16ICIkZmlsZSIgJiYgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICIkc2VkX21pbnVzbyJgCiAgICAgaWYgdGVzdCAteiAiJGZpbGUiOyB0aGVuCiAgICAgICAjIC4uLiBvciBpdCBpcyB0aGUgb25lIHNwZWNpZmllZCB3aXRoIEBzZXRmaWxlbmFtZSAuLi4KICAgICAgIGluZmlsZT1gZWNobyAiJCoiIHwgc2VkICdzLy4qIFwoW14gXSpcKSAqJC9cMS8nYAotICAgICAgZmlsZT1gc2VkIC1uICcvXkBzZXRmaWxlbmFtZS8geyBzLy4qIFwoW14gXSpcKSAqJC9cMS87IHA7IHE7IH0nICRpbmZpbGVgCisgICAgICBmaWxlPWBzZWQgLW4gJworCS9eQHNldGZpbGVuYW1lL3sKKwkgIHMvLiogXChbXiBdKlwpICokL1wxLworCSAgcAorCSAgcQorCX0nICRpbmZpbGVgCiAgICAgICAjIC4uLiBvciBpdCBpcyBkZXJpdmVkIGZyb20gdGhlIHNvdXJjZSBuYW1lIChkaXIvZi50ZXhpIGJlY29tZXMgZi5pbmZvKQogICAgICAgdGVzdCAteiAiJGZpbGUiICYmIGZpbGU9YGVjaG8gIiRpbmZpbGUiIHwgc2VkICdzLC4qLywsO3MsLlteLl0qJCwsJ2AuaW5mbwogICAgIGZpCkBAIC0zMDMsNyArMzE4LDcgQEAKICAgICB0b3VjaCAkZmlsZQogICAgIDs7CiAKLSAgdGFyKQorICB0YXIqKQogICAgIHNoaWZ0CiAKICAgICAjIFdlIGhhdmUgYWxyZWFkeSB0cmllZCB0YXIgaW4gdGhlIGdlbmVyaWMgcGFydC4KQEAgLTMxNywxMyArMzMyLDEzIEBACiAgICAgZmkKICAgICBmaXJzdGFyZz0iJDEiCiAgICAgaWYgc2hpZnQ7IHRoZW4KLQljYXNlICIkZmlyc3RhcmciIGluCisJY2FzZSAkZmlyc3RhcmcgaW4KIAkqbyopCiAJICAgIGZpcnN0YXJnPWBlY2hvICIkZmlyc3RhcmciIHwgc2VkIHMvby8vYAogCSAgICB0YXIgIiRmaXJzdGFyZyIgIiRAIiAmJiBleGl0IDAKIAkgICAgOzsKIAllc2FjCi0JY2FzZSAiJGZpcnN0YXJnIiBpbgorCWNhc2UgJGZpcnN0YXJnIGluCiAJKmgqKQogCSAgICBmaXJzdGFyZz1gZWNobyAiJGZpcnN0YXJnIiB8IHNlZCBzL2gvL2AKIAkgICAgdGFyICIkZmlyc3RhcmciICIkQCIgJiYgZXhpdCAwCkBAIC0zNTYsNSArMzcxLDYgQEAKICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQogIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCiAjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgotIyB0aW1lLXN0YW1wLWVuZDogIiQiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyB0aW1lLXN0YW1wLWVuZDogIjsgIyBVVEMiCiAjIEVuZDoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbXN2Y2Muc2ggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21zdmNjLnNoCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggODMwMTgzOS4uZGNkYmVhYgotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21zdmNjLnNoCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbXN2Y2Muc2gKQEAgLTQyLDEzICs0MiwxMSBAQAogIyBmb3JtYXQgYW5kIHRyYW5zbGF0ZWQgaW50byBzb21ldGhpbmcgc2Vuc2libGUgZm9yIGNsIG9yIG1sLgogIwogCi0jIERpc2FibGUgc3BlY2lmaWMgd2FybmluZ3MsIGFuZCBlbmFibGUgd2FybmluZ3MtYXMtZXJyb3JzIHNvIHdlIGNhdGNoIGFueQotIyBtaXN0cmFuc2xhdGVkIGFyZ3MuCi1ub3dhcm49Ii13ZDQxMjcgLXdkNDgyMCAtd2Q0NzA2IC13ZDQxMDAgLXdkNDI1NSAtd2Q0NjY4IC13ZDQwNTMgLXdkNDMyNCIKLWFyZ3M9Ii1ub2xvZ28gLVczIC1XWCAkbm93YXJuIgorYXJncz0iLW5vbG9nbyAtVzMiCiBtZD0tTUQKIGNsPSJjbCIKIG1sPSJtbCIKK3NhZmVzZWg9Ii1zYWZlc2VoIgogb3V0cHV0PQogCiB3aGlsZSBbICQjIC1ndCAwIF0KQEAgLTY2LDE1ICs2NCwyOCBAQAogICAgIC1tNjQpCiAgICAgICBjbD0iY2wiICAgIyAiJE1TVkMveDg2X2FtZDY0L2NsIgogICAgICAgbWw9Im1sNjQiICMgIiRNU1ZDL3g4Nl9hbWQ2NC9tbDY0IgorICAgICAgc2FmZXNlaD0KKyAgICAgIHNoaWZ0IDEKKyAgICA7OworICAgIC1PMCkKKyAgICAgIGFyZ3M9IiRhcmdzIC1PZCIKICAgICAgIHNoaWZ0IDEKICAgICA7OwogICAgIC1PKikKLSAgICAgIGFyZ3M9IiRhcmdzICQxIgorICAgICAgIyBJZiB3ZSdyZSBvcHRpbWl6aW5nLCBtYWtlIHN1cmUgd2UgZXhwbGljaXRseSB0dXJuIG9uIHNvbWUgb3B0aW1pemF0aW9ucworICAgICAgIyB0aGF0IGFyZSBpbXBsaWNpdGx5IGRpc2FibGVkIGJ5IGRlYnVnIHN5bWJvbHMgKC1aaSkuCisgICAgICBhcmdzPSIkYXJncyAkMSAtT1BUOlJFRiAtT1BUOklDRiAtSU5DUkVNRU5UQUw6Tk8iCiAgICAgICBzaGlmdCAxCiAgICAgOzsKICAgICAtZykKLSAgICAgICMgQ2FuJ3Qgc3BlY2lmeSAtUlRDMSBvciAtWmkgaW4gb3B0LiAtR3kgaXMgb2suIFVzZSAtT1BUOlJFRj8KLSAgICAgIGFyZ3M9IiRhcmdzIC1EX0RFQlVHIC1SVEMxIC1aaSIKKyAgICAgICMgRW5hYmxlIGRlYnVnIHN5bWJvbCBnZW5lcmF0aW9uLgorICAgICAgYXJncz0iJGFyZ3MgLVppIC1ERUJVRyIKKyAgICAgIHNoaWZ0IDEKKyAgICA7OworICAgIC1ERkZJX0RFQlVHKQorICAgICAgIyBMaW5rIGFnYWluc3QgZGVidWcgQ1JUIGFuZCBlbmFibGUgcnVudGltZSBlcnJvciBjaGVja3MuCisgICAgICBhcmdzPSIkYXJncyAtUlRDMSIKKyAgICAgIGRlZmluZXM9IiRkZWZpbmVzICQxIgogICAgICAgbWQ9LU1EZAogICAgICAgc2hpZnQgMQogICAgIDs7CkBAIC0xMTEsNyArMTIyLDggQEAKICAgICAgIHNoaWZ0IDEKICAgICA7OwogICAgIC1XYWxsKQotICAgICAgYXJncz0iJGFyZ3MgLVdhbGwiCisgICAgICAjIC1XYWxsIG9uIE1TVkMgaXMgb3ZlcnplYWxvdXMsIGFuZCB3ZSBhbHJlYWR5IGJ1aWxkIHdpdGggLVczLiBOb3RoaW5nCisgICAgICAjIHRvIGRvIGhlcmUuCiAgICAgICBzaGlmdCAxCiAgICAgOzsKICAgICAtV2Vycm9yKQpAQCAtMTY2LDcgKzE3OCw3IEBACiAgICAgZWNobyAiJGNsIC1ub2xvZ28gLUVQICRpbmNsdWRlcyAkZGVmaW5lcyAkc3JjID4gJHBwc3JjIgogICAgICIkY2wiIC1ub2xvZ28gLUVQICRpbmNsdWRlcyAkZGVmaW5lcyAkc3JjID4gJHBwc3JjIHx8IGV4aXQgJD8KICAgICBvdXRwdXQ9IiQoZWNobyAkb3V0cHV0IHwgc2VkICdzJS9GW2RwYV1bXiBdKiUlZycpIgotICAgIGFyZ3M9Ii1ub2xvZ28gLXNhZmVzZWggJHNpbmdsZSAkb3V0cHV0ICRwcHNyYyIKKyAgICBhcmdzPSItbm9sb2dvICRzYWZlc2VoICRzaW5nbGUgJG91dHB1dCAkcHBzcmMiCiAKICAgICBlY2hvICIkbWwgJGFyZ3MiCiAgICAgZXZhbCAiXCIkbWxcIiAkYXJncyIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpLmMKaW5kZXggOGQ2YjJiYS4uMTkyZjY5MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpLmMKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDEsIDIwMDcsIDIwMDggIFJlZCBIYXQsIEluYy4KKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5OCwgMjAwMSwgMjAwNywgMjAwOCAgUmVkIEhhdCwgSW5jLgogICAgCiAgICBBbHBoYSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIApAQCAtMTc4LDYgKzE3OSw5IEBACiB7CiAgIHVuc2lnbmVkIGludCAqdHJhbXA7CiAKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9PU0YpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOworCiAgIHRyYW1wID0gKHVuc2lnbmVkIGludCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07CiAgIHRyYW1wWzBdID0gMHg0N2ZiMDQwMTsJLyogbW92ICQyNywkMQkJKi8KICAgdHJhbXBbMV0gPSAweGE3N2IwMDEwOwkvKiBsZHEgJDI3LDE2KCQyNykJKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpdGFyZ2V0LmgKaW5kZXggN2QwNmViMC4uYWYxNDViYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgQWxwaGEuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CiB0eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9vc2YuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL29zZi5TCmluZGV4IGQwZTc3ODIuLjZiOWY0ZGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL29zZi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL29zZi5TCkBAIC0xLDUgKzEsNSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIG9zZi5TIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDAxLCAyMDA3LCAyMDA4IFJlZCBIYXQKKyAgIG9zZi5TIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDAxLCAyMDA3LCAyMDA4LCAyMDExIFJlZCBIYXQKICAgIAogICAgQWxwaGEvT1NGIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC0yOTksMzMgKzI5OSw1MSBAQAogI2VuZGlmCiAKICNpZmRlZiBfX0VMRl9fCisjIGRlZmluZSBVQV9TSQkJLjRieXRlCisjIGRlZmluZSBGREVfRU5DT0RJTkcJMHgxYgkvKiBwY3JlbCBzZGF0YTQgKi8KKyMgZGVmaW5lIEZERV9FTkNPREUoWCkJLjRieXRlIFgtLgorIyBkZWZpbmUgRkRFX0FSQU5HRShYKQkuNGJ5dGUgWAorI2VsaWYgZGVmaW5lZCBfX29zZl9fCisjIGRlZmluZSBVQV9TSQkJLmFsaWduIDA7IC5sb25nCisjIGRlZmluZSBGREVfRU5DT0RJTkcJMHg1MAkvKiBhbGlnbmVkIGFic29sdXRlICovCisjIGRlZmluZSBGREVfRU5DT0RFKFgpCS5hbGlnbiAzOyAucXVhZCBYCisjIGRlZmluZSBGREVfQVJBTkdFKFgpCS5hbGlnbiAwOyAucXVhZCBYCisjZW5kaWYKKworI2lmZGVmIF9fRUxGX18KIAkuc2VjdGlvbgkuZWhfZnJhbWUsRUhfRlJBTUVfRkxBR1MsQHByb2diaXRzCisjZWxpZiBkZWZpbmVkIF9fb3NmX18KKwkuZGF0YQorCS5hbGlnbiAzCisJLmdsb2JsIF9HTE9CQUxfX0ZfZmZpX2NhbGxfb3NmCitfR0xPQkFMX19GX2ZmaV9jYWxsX29zZjoKKyNlbmRpZgogX19GUkFNRV9CRUdJTl9fOgotCS40Ynl0ZQkkTEVDSUUxLSRMU0NJRTEJIyBMZW5ndGggb2YgQ29tbW9uIEluZm9ybWF0aW9uIEVudHJ5CisJVUFfU0kJJExFQ0lFMS0kTFNDSUUxCSMgTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlvbiBFbnRyeQogJExTQ0lFMToKLQkuNGJ5dGUJMHgwCQkjIENJRSBJZGVudGlmaWVyIFRhZworCVVBX1NJCTB4MAkJIyBDSUUgSWRlbnRpZmllciBUYWcKIAkuYnl0ZQkweDEJCSMgQ0lFIFZlcnNpb24KIAkuYXNjaWkgInpSXDAiCQkjIENJRSBBdWdtZW50YXRpb24KIAkuYnl0ZQkweDEJCSMgdWxlYjEyOCAweDE7IENJRSBDb2RlIEFsaWdubWVudCBGYWN0b3IKIAkuYnl0ZQkweDc4CQkjIHNsZWIxMjggLTg7IENJRSBEYXRhIEFsaWdubWVudCBGYWN0b3IKIAkuYnl0ZQkyNgkJIyBDSUUgUkEgQ29sdW1uCiAJLmJ5dGUJMHgxCQkjIHVsZWIxMjggMHgxOyBBdWdtZW50YXRpb24gc2l6ZQotCS5ieXRlCTB4MWIJCSMgRkRFIEVuY29kaW5nIChwY3JlbCBzZGF0YTQpCisJLmJ5dGUJRkRFX0VOQ09ESU5HCSMgRkRFIEVuY29kaW5nCiAJLmJ5dGUJMHhjCQkjIERXX0NGQV9kZWZfY2ZhCiAJLmJ5dGUJMzAJCSMgdWxlYjEyOCBjb2x1bW4gMzAKIAkuYnl0ZQkwCQkjIHVsZWIxMjggb2Zmc2V0IDAKIAkuYWxpZ24gMwogJExFQ0lFMToKICRMU0ZERTE6Ci0JLjRieXRlCSRMRUZERTEtJExBU0ZERTEJCSMgRkRFIExlbmd0aAorCVVBX1NJCSRMRUZERTEtJExBU0ZERTEJCSMgRkRFIExlbmd0aAogJExBU0ZERTE6Ci0JLjRieXRlCSRMQVNGREUxLV9fRlJBTUVfQkVHSU5fXwkjIEZERSBDSUUgb2Zmc2V0Ci0JLjRieXRlCSRMRkIxLS4JCSMgRkRFIGluaXRpYWwgbG9jYXRpb24KLQkuNGJ5dGUJJExGRTEtJExGQjEJIyBGREUgYWRkcmVzcyByYW5nZQorCVVBX1NJCSRMQVNGREUxLV9fRlJBTUVfQkVHSU5fXwkjIEZERSBDSUUgb2Zmc2V0CisJRkRFX0VOQ09ERSgkTEZCMSkJCQkjIEZERSBpbml0aWFsIGxvY2F0aW9uCisJRkRFX0FSQU5HRSgkTEZFMS0kTEZCMSkJCQkjIEZERSBhZGRyZXNzIHJhbmdlCiAJLmJ5dGUJMHgwCQkjIHVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZQogCiAJLmJ5dGUJMHg0CQkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLQkuNGJ5dGUJJExDRkkxLSRMRkIxCisJVUFfU0kJJExDRkkxLSRMRkIxCiAJLmJ5dGUJMHg5YQkJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMjYKIAkuYnl0ZQk0CQkjIHVsZWIxMjggNCotOAogCS5ieXRlCTB4OGYJCSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDE1CkBAIC0zMzUsMzIgKzM1MywzNSBAQAogCS5ieXRlCTMyCQkjIHVsZWIxMjggb2Zmc2V0IDMyCiAKIAkuYnl0ZQkweDQJCSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotCS40Ynl0ZQkkTENGSTItJExDRkkxCisJVUFfU0kJJExDRkkyLSRMQ0ZJMQogCS5ieXRlCTB4ZGEJCSMgRFdfQ0ZBX3Jlc3RvcmUsIGNvbHVtbiAyNgogCS5hbGlnbiAzCiAkTEVGREUxOgogCiAkTFNGREUzOgotCS40Ynl0ZQkkTEVGREUzLSRMQVNGREUzCQkjIEZERSBMZW5ndGgKKwlVQV9TSQkkTEVGREUzLSRMQVNGREUzCQkjIEZERSBMZW5ndGgKICRMQVNGREUzOgotCS40Ynl0ZQkkTEFTRkRFMy1fX0ZSQU1FX0JFR0lOX18JIyBGREUgQ0lFIG9mZnNldAotCS40Ynl0ZQkkTEZCMi0uCQkjIEZERSBpbml0aWFsIGxvY2F0aW9uCi0JLjRieXRlCSRMRkUyLSRMRkIyCSMgRkRFIGFkZHJlc3MgcmFuZ2UKKwlVQV9TSQkkTEFTRkRFMy1fX0ZSQU1FX0JFR0lOX18JIyBGREUgQ0lFIG9mZnNldAorCUZERV9FTkNPREUoJExGQjIpCQkJIyBGREUgaW5pdGlhbCBsb2NhdGlvbgorCUZERV9BUkFOR0UoJExGRTItJExGQjIpCQkJIyBGREUgYWRkcmVzcyByYW5nZQogCS5ieXRlCTB4MAkJIyB1bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUKIAogCS5ieXRlCTB4NAkJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0JLjRieXRlCSRMQ0ZJNS0kTEZCMgorCVVBX1NJCSRMQ0ZJNS0kTEZCMgogCS5ieXRlCTB4ZQkJIyBEV19DRkFfZGVmX2NmYV9vZmZzZXQKIAkuYnl0ZQkweDgwLDB4MQkjIHVsZWIxMjggMTI4CiAKIAkuYnl0ZQkweDQJCSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotCS40Ynl0ZQkkTENGSTYtJExDRkk1CisJVUFfU0kJJExDRkk2LSRMQ0ZJNQogCS5ieXRlCTB4OWEJCSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDI2CiAJLmJ5dGUJMTYJCSMgdWxlYjEyOCBvZmZzZXQgMTYqLTgKIAkuYWxpZ24gMwogJExFRkRFMzoKLQotI2lmZGVmIF9fbGludXhfXwotCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKKyNpZiBkZWZpbmVkIF9fb3NmX18KKwkuYWxpZ24gMAorCS5sb25nCTAJCSMgRW5kIG9mIFRhYmxlCiAjZW5kaWYKKworI2lmIGRlZmluZWQgX19FTEZfXyAmJiBkZWZpbmVkIF9fbGludXhfXworCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaS5jCmluZGV4IGY2YTY0NzUuLjNjY2NlYjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpLmMKQEAgLTEsNiArMSwxMCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDA4ICBSZWQgSGF0LCBJbmMuCi0gICAKKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDExIFRpbW90aHkgV2FsbAorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTEgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDExIEFudGhvbnkgR3JlZW4KKwkgICBDb3B5cmlnaHQgKGMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5OCwgMjAwOCwgMjAxMSAgUmVkIEhhdCwgSW5jLgorCSAgIAogICAgQVJNIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI5LDEyICszMywyMCBAQAogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKLS8qIGZmaV9wcmVwX2FyZ3MgaXMgY2FsbGVkIGJ5IHRoZSBhc3NlbWJseSByb3V0aW5lIG9uY2Ugc3RhY2sgc3BhY2UKLSAgIGhhcyBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzICovCisvKiBGb3J3YXJkIGRlY2xhcmVzLiAqLworc3RhdGljIGludCB2ZnBfdHlwZV9wIChmZmlfdHlwZSAqKTsKK3N0YXRpYyB2b2lkIGxheW91dF92ZnBfYXJncyAoZmZpX2NpZiAqKTsKIAotdm9pZCBmZmlfcHJlcF9hcmdzKGNoYXIgKnN0YWNrLCBleHRlbmRlZF9jaWYgKmVjaWYpCisvKiBmZmlfcHJlcF9hcmdzIGlzIGNhbGxlZCBieSB0aGUgYXNzZW1ibHkgcm91dGluZSBvbmNlIHN0YWNrIHNwYWNlCisgICBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9yIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cworICAgCisgICBUaGUgdmZwX3NwYWNlIHBhcmFtZXRlciBpcyB0aGUgbG9hZCBhcmVhIGZvciBWRlAgcmVncywgdGhlIHJldHVybgorICAgdmFsdWUgaXMgY2lmLT52ZnBfdXNlZCAod29yZCBiaXRzZXQgb2YgVkZQIHJlZ3MgdXNlZCBmb3IgcGFzc2luZworICAgYXJndW1lbnRzKS4gVGhlc2UgYXJlIG9ubHkgdXNlZCBmb3IgdGhlIFZGUCBoYXJkLWZsb2F0IEFCSS4KKyovCitpbnQgZmZpX3ByZXBfYXJncyhjaGFyICpzdGFjaywgZXh0ZW5kZWRfY2lmICplY2lmLCBmbG9hdCAqdmZwX3NwYWNlKQogewotICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaTsKKyAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGksIHZpID0gMDsKICAgcmVnaXN0ZXIgdm9pZCAqKnBfYXJndjsKICAgcmVnaXN0ZXIgY2hhciAqYXJncDsKICAgcmVnaXN0ZXIgZmZpX3R5cGUgKipwX2FyZzsKQEAgLTUzLDEwICs2NSwzMSBAQAogICAgICAgIGktLSwgcF9hcmcrKykKICAgICB7CiAgICAgICBzaXplX3QgejsKKyAgICAgIHNpemVfdCBhbGlnbm1lbnQ7CisKKyAgICAgIC8qIEFsbG9jYXRlZCBpbiBWRlAgcmVnaXN0ZXJzLiAqLworICAgICAgaWYgKGVjaWYtPmNpZi0+YWJpID09IEZGSV9WRlAKKwkgICYmIHZpIDwgZWNpZi0+Y2lmLT52ZnBfbmFyZ3MgJiYgdmZwX3R5cGVfcCAoKnBfYXJnKSkKKwl7CisJICBmbG9hdCogdmZwX3Nsb3QgPSB2ZnBfc3BhY2UgKyBlY2lmLT5jaWYtPnZmcF9hcmdzW3ZpKytdOworCSAgaWYgKCgqcF9hcmcpLT50eXBlID09IEZGSV9UWVBFX0ZMT0FUKQorCSAgICAqKChmbG9hdCopdmZwX3Nsb3QpID0gKigoZmxvYXQqKSpwX2FyZ3YpOworCSAgZWxzZSBpZiAoKCpwX2FyZyktPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQorCSAgICAqKChkb3VibGUqKXZmcF9zbG90KSA9ICooKGRvdWJsZSopKnBfYXJndik7CisJICBlbHNlCisJICAgIG1lbWNweSh2ZnBfc2xvdCwgKnBfYXJndiwgKCpwX2FyZyktPnNpemUpOworCSAgcF9hcmd2Kys7CisJICBjb250aW51ZTsKKwl9CiAKICAgICAgIC8qIEFsaWduIGlmIG5lY2Vzc2FyeSAqLwotICAgICAgaWYgKCgoKnBfYXJnKS0+YWxpZ25tZW50IC0gMSkgJiAodW5zaWduZWQpIGFyZ3ApIHsKLQlhcmdwID0gKGNoYXIgKikgQUxJR04oYXJncCwgKCpwX2FyZyktPmFsaWdubWVudCk7CisgICAgICBhbGlnbm1lbnQgPSAoKnBfYXJnKS0+YWxpZ25tZW50OworI2lmZGVmIF9XSU4zMl9XQ0UKKyAgICAgIGlmIChhbGlnbm1lbnQgPiA0KQorCWFsaWdubWVudCA9IDQ7CisjZW5kaWYKKyAgICAgIGlmICgoYWxpZ25tZW50IC0gMSkgJiAodW5zaWduZWQpIGFyZ3ApIHsKKwlhcmdwID0gKGNoYXIgKikgQUxJR04oYXJncCwgYWxpZ25tZW50KTsKICAgICAgIH0KIAogICAgICAgaWYgKCgqcF9hcmcpLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKQEAgLTEwMywxMyArMTM2LDE1IEBACiAJICBwX2FyZ3YrKzsKIAkgIGFyZ3AgKz0gejsKICAgICB9Ci0gIAotICByZXR1cm47CisKKyAgLyogSW5kaWNhdGUgdGhlIFZGUCByZWdpc3RlcnMgdXNlZC4gKi8KKyAgcmV0dXJuIGVjaWYtPmNpZi0+dmZwX3VzZWQ7CiB9CiAKIC8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KIGZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXAoZmZpX2NpZiAqY2lmKQogeworICBpbnQgdHlwZV9jb2RlOwogICAvKiBSb3VuZCB0aGUgc3RhY2sgdXAgdG8gYSBtdWx0aXBsZSBvZiA4IGJ5dGVzLiAgVGhpcyBpc24ndCBuZWVkZWQgCiAgICAgIGV2ZXJ5d2hlcmUsIGJ1dCBpdCBpcyBvbiBzb21lIHBsYXRmb3JtcywgYW5kIGl0IGRvZXNuJ3QgaGFybSBhbnl0aGluZwogICAgICB3aGVuIGl0IGlzbid0IG5lZWRlZC4gICovCkBAIC0xMzAsNyArMTY1LDE0IEBACiAgICAgICBicmVhazsKIAogICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgotICAgICAgaWYgKGNpZi0+cnR5cGUtPnNpemUgPD0gNCkKKyAgICAgIGlmIChjaWYtPmFiaSA9PSBGRklfVkZQCisJICAmJiAodHlwZV9jb2RlID0gdmZwX3R5cGVfcCAoY2lmLT5ydHlwZSkpICE9IDApCisJeworCSAgLyogQSBDb21wb3NpdGUgVHlwZSBwYXNzZWQgaW4gVkZQIHJlZ2lzdGVycywgZWl0aGVyCisJICAgICBGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUIG9yIEZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFLiAqLworCSAgY2lmLT5mbGFncyA9ICh1bnNpZ25lZCkgdHlwZV9jb2RlOworCX0KKyAgICAgIGVsc2UgaWYgKGNpZi0+cnR5cGUtPnNpemUgPD0gNCkKIAkvKiBBIENvbXBvc2l0ZSBUeXBlIG5vdCBsYXJnZXIgdGhhbiA0IGJ5dGVzIGlzIHJldHVybmVkIGluIHIwLiAgKi8KIAljaWYtPmZsYWdzID0gKHVuc2lnbmVkKUZGSV9UWVBFX0lOVDsKICAgICAgIGVsc2UKQEAgLTE0NSwxMSArMTg3LDMwIEBACiAgICAgICBicmVhazsKICAgICB9CiAKKyAgLyogTWFwIG91dCB0aGUgcmVnaXN0ZXIgcGxhY2VtZW50cyBvZiBWRlAgcmVnaXN0ZXIgYXJncy4KKyAgICAgVGhlIFZGUCBoYXJkLWZsb2F0IGNhbGxpbmcgY29udmVudGlvbnMgYXJlIHNsaWdodGx5IG1vcmUgc29waGlzdGljYXRlZCB0aGFuCisgICAgIHRoZSBiYXNlIGNhbGxpbmcgY29udmVudGlvbnMsIHNvIHdlIGRvIGl0IGhlcmUgaW5zdGVhZCBvZiBpbiBmZmlfcHJlcF9hcmdzKCkuICovCisgIGlmIChjaWYtPmFiaSA9PSBGRklfVkZQKQorICAgIGxheW91dF92ZnBfYXJncyAoY2lmKTsKKwogICByZXR1cm4gRkZJX09LOwogfQogCi1leHRlcm4gdm9pZCBmZmlfY2FsbF9TWVNWKHZvaWQgKCopKGNoYXIgKiwgZXh0ZW5kZWRfY2lmICopLCBleHRlbmRlZF9jaWYgKiwKLQkJCSAgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLCB2b2lkICgqZm4pKHZvaWQpKTsKKy8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgZm9yIHZhcmlhZGljIGNhbGxzICovCitmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9tYWNoZGVwX3ZhcihmZmlfY2lmICpjaWYsCisJCQkJICAgIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLAorCQkJCSAgICB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncykKK3sKKyAgLyogVkZQIHZhcmlhZGljIGNhbGxzIGFjdHVhbGx5IHVzZSB0aGUgU1lTViBBQkkgKi8KKyAgaWYgKGNpZi0+YWJpID09IEZGSV9WRlApCisJY2lmLT5hYmkgPSBGRklfU1lTVjsKKworICByZXR1cm4gZmZpX3ByZXBfY2lmX21hY2hkZXAoY2lmKTsKK30KKworLyogUHJvdG90eXBlcyBmb3IgYXNzZW1ibHkgZnVuY3Rpb25zLCBpbiBzeXN2LlMgKi8KK2V4dGVybiB2b2lkIGZmaV9jYWxsX1NZU1YgKHZvaWQgKCpmbikodm9pZCksIGV4dGVuZGVkX2NpZiAqLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICopOworZXh0ZXJuIHZvaWQgZmZpX2NhbGxfVkZQICh2b2lkICgqZm4pKHZvaWQpLCBleHRlbmRlZF9jaWYgKiwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCAqKTsKIAogdm9pZCBmZmlfY2FsbChmZmlfY2lmICpjaWYsIHZvaWQgKCpmbikodm9pZCksIHZvaWQgKnJ2YWx1ZSwgdm9pZCAqKmF2YWx1ZSkKIHsKQEAgLTE1Nyw2ICsyMTgsOCBAQAogCiAgIGludCBzbWFsbF9zdHJ1Y3QgPSAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9JTlQgCiAJCSAgICAgICYmIGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKTsKKyAgaW50IHZmcF9zdHJ1Y3QgPSAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUCisJCSAgICB8fCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFKTsKIAogICBlY2lmLmNpZiA9IGNpZjsKICAgZWNpZi5hdmFsdWUgPSBhdmFsdWU7CkBAIC0xNzMsMzggKzIzNiw1MyBAQAogICAgIH0KICAgZWxzZSBpZiAoc21hbGxfc3RydWN0KQogICAgIGVjaWYucnZhbHVlID0gJnRlbXA7CisgIGVsc2UgaWYgKHZmcF9zdHJ1Y3QpCisgICAgeworICAgICAgLyogTGFyZ2VzdCBjYXNlIGlzIGRvdWJsZSB4IDQuICovCisgICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYSgzMik7CisgICAgfQogICBlbHNlCiAgICAgZWNpZi5ydmFsdWUgPSBydmFsdWU7CiAKICAgc3dpdGNoIChjaWYtPmFiaSkgCiAgICAgewogICAgIGNhc2UgRkZJX1NZU1Y6Ci0gICAgICBmZmlfY2FsbF9TWVNWKGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwKLQkJICAgIGZuKTsKLQorICAgICAgZmZpX2NhbGxfU1lTViAoZm4sICZlY2lmLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSk7CiAgICAgICBicmVhazsKKworICAgIGNhc2UgRkZJX1ZGUDoKKyNpZmRlZiBfX0FSTV9FQUJJX18KKyAgICAgIGZmaV9jYWxsX1ZGUCAoZm4sICZlY2lmLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSk7CisgICAgICBicmVhazsKKyNlbmRpZgorCiAgICAgZGVmYXVsdDoKICAgICAgIEZGSV9BU1NFUlQoMCk7CiAgICAgICBicmVhazsKICAgICB9CiAgIGlmIChzbWFsbF9zdHJ1Y3QpCiAgICAgbWVtY3B5IChydmFsdWUsICZ0ZW1wLCBjaWYtPnJ0eXBlLT5zaXplKTsKKyAgZWxzZSBpZiAodmZwX3N0cnVjdCkKKyAgICBtZW1jcHkgKHJ2YWx1ZSwgZWNpZi5ydmFsdWUsIGNpZi0+cnR5cGUtPnNpemUpOwogfQogCiAvKiogcHJpdmF0ZSBtZW1iZXJzICoqLwogCiBzdGF0aWMgdm9pZCBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YgKGNoYXIgKnN0YWNrLCB2b2lkICoqcmV0LAotCQkJCQkgdm9pZCoqIGFyZ3MsIGZmaV9jaWYqIGNpZik7CisJCQkJCSB2b2lkKiogYXJncywgZmZpX2NpZiogY2lmLCBmbG9hdCAqdmZwX3N0YWNrKTsKIAogdm9pZCBmZmlfY2xvc3VyZV9TWVNWIChmZmlfY2xvc3VyZSAqKTsKIAordm9pZCBmZmlfY2xvc3VyZV9WRlAgKGZmaV9jbG9zdXJlICopOworCiAvKiBUaGlzIGZ1bmN0aW9uIGlzIGp1bXBlZCB0byBieSB0aGUgdHJhbXBvbGluZSAqLwogCiB1bnNpZ25lZCBpbnQKLWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIgKGNsb3N1cmUsIHJlc3BwLCBhcmdzKQorZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoY2xvc3VyZSwgcmVzcHAsIGFyZ3MsIHZmcF9hcmdzKQogICAgICBmZmlfY2xvc3VyZSAqY2xvc3VyZTsKICAgICAgdm9pZCAqKnJlc3BwOwogICAgICB2b2lkICphcmdzOworICAgICB2b2lkICp2ZnBfYXJnczsKIHsKICAgLy8gb3VyIHZhcmlvdXMgdGhpbmdzLi4uCiAgIGZmaV9jaWYgICAgICAgKmNpZjsKQEAgLTIxOSw3ICsyOTcsNyBAQAogICAgKiBhIHN0cnVjdHVyZSwgaXQgd2lsbCByZS1zZXQgUkVTUCB0byBwb2ludCB0byB0aGUKICAgICogc3RydWN0dXJlIHJldHVybiBhZGRyZXNzLiAgKi8KIAotICBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoYXJncywgcmVzcHAsIGFyZ19hcmVhLCBjaWYpOworICBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoYXJncywgcmVzcHAsIGFyZ19hcmVhLCBjaWYsIHZmcF9hcmdzKTsKIAogICAoY2xvc3VyZS0+ZnVuKSAoY2lmLCAqcmVzcHAsIGFyZ19hcmVhLCBjbG9zdXJlLT51c2VyX2RhdGEpOwogCkBAIC0yMjksMTAgKzMwNywxMiBAQAogLypALWV4cG9ydGhlYWRlckAqLwogc3RhdGljIHZvaWQgCiBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoY2hhciAqc3RhY2ssIHZvaWQgKipydmFsdWUsCi0JCQkgICAgdm9pZCAqKmF2YWx1ZSwgZmZpX2NpZiAqY2lmKQorCQkJICAgIHZvaWQgKiphdmFsdWUsIGZmaV9jaWYgKmNpZiwKKwkJCSAgICAvKiBVc2VkIG9ubHkgdW5kZXIgVkZQIGhhcmQtZmxvYXQgQUJJLiAqLworCQkJICAgIGZsb2F0ICp2ZnBfc3RhY2spCiAvKkA9ZXhwb3J0aGVhZGVyQCovCiB7Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBpOworICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaSwgdmkgPSAwOwogICByZWdpc3RlciB2b2lkICoqcF9hcmd2OwogICByZWdpc3RlciBjaGFyICphcmdwOwogICByZWdpc3RlciBmZmlfdHlwZSAqKnBfYXJnOwpAQCAtMjQ5LDEwICszMjksMjMgQEAKICAgZm9yIChpID0gY2lmLT5uYXJncywgcF9hcmcgPSBjaWYtPmFyZ190eXBlczsgKGkgIT0gMCk7IGktLSwgcF9hcmcrKykKICAgICB7CiAgICAgICBzaXplX3QgejsKKyAgICAgIHNpemVfdCBhbGlnbm1lbnQ7CisgIAorICAgICAgaWYgKGNpZi0+YWJpID09IEZGSV9WRlAKKwkgICYmIHZpIDwgY2lmLT52ZnBfbmFyZ3MgJiYgdmZwX3R5cGVfcCAoKnBfYXJnKSkKKwl7CisJICAqcF9hcmd2KysgPSAodm9pZCopKHZmcF9zdGFjayArIGNpZi0+dmZwX2FyZ3NbdmkrK10pOworCSAgY29udGludWU7CisJfQogCi0gICAgICBzaXplX3QgYWxpZ25tZW50ID0gKCpwX2FyZyktPmFsaWdubWVudDsKKyAgICAgIGFsaWdubWVudCA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7CiAgICAgICBpZiAoYWxpZ25tZW50IDwgNCkKIAlhbGlnbm1lbnQgPSA0OworI2lmZGVmIF9XSU4zMl9XQ0UKKyAgICAgIGVsc2UKKwlpZiAoYWxpZ25tZW50ID4gNCkKKwkgIGFsaWdubWVudCA9IDQ7CisjZW5kaWYKICAgICAgIC8qIEFsaWduIGlmIG5lY2Vzc2FyeSAqLwogICAgICAgaWYgKChhbGlnbm1lbnQgLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgewogCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCBhbGlnbm1lbnQpOwpAQCAtMjczLDE4ICszNjYsMjM3IEBACiAKIC8qIEhvdyB0byBtYWtlIGEgdHJhbXBvbGluZS4gICovCiAKK2V4dGVybiB1bnNpZ25lZCBpbnQgZmZpX2FybV90cmFtcG9saW5lWzNdOworCisjaWYgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQorCisjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKK2V4dGVybiB2b2lkICpmZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2U7CisKK3R5cGVkZWYgc3RydWN0IGZmaV90cmFtcG9saW5lX3RhYmxlIGZmaV90cmFtcG9saW5lX3RhYmxlOwordHlwZWRlZiBzdHJ1Y3QgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnk7CisKK3N0cnVjdCBmZmlfdHJhbXBvbGluZV90YWJsZSB7CisgIC8qIGNvbnRpZ2lvdXMgd3JpdGFibGUgYW5kIGV4ZWN1dGFibGUgcGFnZXMgKi8KKyAgdm1fYWRkcmVzc190IGNvbmZpZ19wYWdlOworICB2bV9hZGRyZXNzX3QgdHJhbXBvbGluZV9wYWdlOworCisgIC8qIGZyZWUgbGlzdCB0cmFja2luZyAqLworICB1aW50MTZfdCBmcmVlX2NvdW50OworICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqZnJlZV9saXN0OworICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqZnJlZV9saXN0X3Bvb2w7CisKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGUgKnByZXY7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlICpuZXh0OworfTsKKworc3RydWN0IGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5IHsKKyAgdm9pZCAqKCp0cmFtcG9saW5lKSgpOworICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqbmV4dDsKK307CisKKy8qIE92ZXJyaWRlIHRoZSBzdGFuZGFyZCBhcmNoaXRlY3R1cmUgdHJhbXBvbGluZSBzaXplICovCisvLyBYWFggVE9ETyAtIEZpeAorI3VuZGVmIEZGSV9UUkFNUE9MSU5FX1NJWkUKKyNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAxMgorCisvKiBUaGUgdHJhbXBvbGluZSBjb25maWd1cmF0aW9uIGlzIHBsYWNlZCBhdCA0MDgwIGJ5dGVzIHByaW9yIHRvIHRoZSB0cmFtcG9saW5lJ3MgZW50cnkgcG9pbnQgKi8KKyNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfQ09ERUxPQ19DT05GSUcoY29kZWxvYykgKCh2b2lkICoqKSAoKCh1aW50OF90ICopIGNvZGVsb2MpIC0gNDA4MCkpOworCisvKiBUaGUgZmlyc3QgMTYgYnl0ZXMgb2YgdGhlIGNvbmZpZyBwYWdlIGFyZSB1bnVzZWQsIGFzIHRoZXkgYXJlIHVuYWRkcmVzc2FibGUgZnJvbSB0aGUgdHJhbXBvbGluZSBwYWdlLiAqLworI2RlZmluZSBGRklfVFJBTVBPTElORV9DT05GSUdfUEFHRV9PRkZTRVQgMTYKKworLyogVG90YWwgbnVtYmVyIG9mIHRyYW1wb2xpbmVzIHRoYXQgZml0IGluIG9uZSB0cmFtcG9saW5lIHRhYmxlICovCisjZGVmaW5lIEZGSV9UUkFNUE9MSU5FX0NPVU5UICgoUEFHRV9TSVpFIC0gRkZJX1RSQU1QT0xJTkVfQ09ORklHX1BBR0VfT0ZGU0VUKSAvIEZGSV9UUkFNUE9MSU5FX1NJWkUpCisKK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgZmZpX3RyYW1wb2xpbmVfbG9jayA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CitzdGF0aWMgZmZpX3RyYW1wb2xpbmVfdGFibGUgKmZmaV90cmFtcG9saW5lX3RhYmxlcyA9IE5VTEw7CisKK3N0YXRpYyBmZmlfdHJhbXBvbGluZV90YWJsZSAqCitmZmlfdHJhbXBvbGluZV90YWJsZV9hbGxvYyAoKQoreworICBmZmlfdHJhbXBvbGluZV90YWJsZSAqdGFibGUgPSBOVUxMOworCisgIC8qIExvb3AgdW50aWwgd2UgY2FuIGFsbG9jYXRlIHR3byBjb250aWdpb3VzIHBhZ2VzICovCisgIHdoaWxlICh0YWJsZSA9PSBOVUxMKSB7CisgICAgdm1fYWRkcmVzc190IGNvbmZpZ19wYWdlID0gMHgwOworICAgIGtlcm5fcmV0dXJuX3Qga3Q7CisKKyAgICAvKiBUcnkgdG8gYWxsb2NhdGUgdHdvIHBhZ2VzICovCisgICAga3QgPSB2bV9hbGxvY2F0ZSAobWFjaF90YXNrX3NlbGYgKCksICZjb25maWdfcGFnZSwgUEFHRV9TSVpFKjIsIFZNX0ZMQUdTX0FOWVdIRVJFKTsKKyAgICBpZiAoa3QgIT0gS0VSTl9TVUNDRVNTKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgInZtX2FsbG9jYXRlKCkgZmFpbHVyZTogJWQgYXQgJXM6JWRcbiIsIGt0LCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyogTm93IGRyb3AgdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBhbGxvY2F0aW9uIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHRyYW1wb2xpbmUgdGFibGUgKi8KKyAgICB2bV9hZGRyZXNzX3QgdHJhbXBvbGluZV9wYWdlID0gY29uZmlnX3BhZ2UrUEFHRV9TSVpFOworICAgIGt0ID0gdm1fZGVhbGxvY2F0ZSAobWFjaF90YXNrX3NlbGYgKCksIHRyYW1wb2xpbmVfcGFnZSwgUEFHRV9TSVpFKTsKKyAgICBpZiAoa3QgIT0gS0VSTl9TVUNDRVNTKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgInZtX2RlYWxsb2NhdGUoKSBmYWlsdXJlOiAlZCBhdCAlczolZFxuIiwga3QsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvKiBSZW1hcCB0aGUgdHJhbXBvbGluZSB0YWJsZSB0byBkaXJlY3RseSBmb2xsb3cgdGhlIGNvbmZpZyBwYWdlICovCisgICAgdm1fcHJvdF90IGN1cl9wcm90OworICAgIHZtX3Byb3RfdCBtYXhfcHJvdDsKKworICAgIGt0ID0gdm1fcmVtYXAgKG1hY2hfdGFza19zZWxmICgpLCAmdHJhbXBvbGluZV9wYWdlLCBQQUdFX1NJWkUsIDB4MCwgRkFMU0UsIG1hY2hfdGFza19zZWxmICgpLCAodm1fYWRkcmVzc190KSAmZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlLCBGQUxTRSwgJmN1cl9wcm90LCAmbWF4X3Byb3QsIFZNX0lOSEVSSVRfU0hBUkUpOworCisgICAgLyogSWYgd2UgbG9zdCBhY2Nlc3MgdG8gdGhlIGRlc3RpbmF0aW9uIHRyYW1wb2xpbmUgcGFnZSwgZHJvcCBvdXIgY29uZmlnIGFsbG9jYXRpb24gbWFwcGluZyBhbmQgcmV0cnkgKi8KKyAgICBpZiAoa3QgIT0gS0VSTl9TVUNDRVNTKSB7CisgICAgICAvKiBMb2cgdW5leHBlY3RlZCBmYWlsdXJlcyAqLworICAgICAgaWYgKGt0ICE9IEtFUk5fTk9fU1BBQ0UpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJ2bV9yZW1hcCgpIGZhaWx1cmU6ICVkIGF0ICVzOiVkXG4iLCBrdCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgIH0KKworICAgICAgdm1fZGVhbGxvY2F0ZSAobWFjaF90YXNrX3NlbGYgKCksIGNvbmZpZ19wYWdlLCBQQUdFX1NJWkUpOworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgLyogV2UgaGF2ZSB2YWxpZCB0cmFtcG9saW5lIGFuZCBjb25maWcgcGFnZXMgKi8KKyAgICB0YWJsZSA9IGNhbGxvYyAoMSwgc2l6ZW9mKGZmaV90cmFtcG9saW5lX3RhYmxlKSk7CisgICAgdGFibGUtPmZyZWVfY291bnQgPSBGRklfVFJBTVBPTElORV9DT1VOVDsKKyAgICB0YWJsZS0+Y29uZmlnX3BhZ2UgPSBjb25maWdfcGFnZTsKKyAgICB0YWJsZS0+dHJhbXBvbGluZV9wYWdlID0gdHJhbXBvbGluZV9wYWdlOworCisgICAgLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBmcmVlIGxpc3QgKi8KKyAgICB0YWJsZS0+ZnJlZV9saXN0X3Bvb2wgPSBjYWxsb2MoRkZJX1RSQU1QT0xJTkVfQ09VTlQsIHNpemVvZihmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSkpOworCisgICAgdWludDE2X3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgdGFibGUtPmZyZWVfY291bnQ7IGkrKykgeworICAgICAgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgKmVudHJ5ID0gJnRhYmxlLT5mcmVlX2xpc3RfcG9vbFtpXTsKKyAgICAgIGVudHJ5LT50cmFtcG9saW5lID0gKHZvaWQgKikgKHRhYmxlLT50cmFtcG9saW5lX3BhZ2UgKyAoaSAqIEZGSV9UUkFNUE9MSU5FX1NJWkUpKTsKKworICAgICAgaWYgKGkgPCB0YWJsZS0+ZnJlZV9jb3VudCAtIDEpCisgICAgICAgIGVudHJ5LT5uZXh0ID0gJnRhYmxlLT5mcmVlX2xpc3RfcG9vbFtpKzFdOworICAgIH0KKworICAgIHRhYmxlLT5mcmVlX2xpc3QgPSB0YWJsZS0+ZnJlZV9saXN0X3Bvb2w7CisgIH0KKworICByZXR1cm4gdGFibGU7Cit9CisKK3ZvaWQgKgorZmZpX2Nsb3N1cmVfYWxsb2MgKHNpemVfdCBzaXplLCB2b2lkICoqY29kZSkKK3sKKyAgLyogQ3JlYXRlIHRoZSBjbG9zdXJlICovCisgIGZmaV9jbG9zdXJlICpjbG9zdXJlID0gbWFsbG9jKHNpemUpOworICBpZiAoY2xvc3VyZSA9PSBOVUxMKQorICAgIHJldHVybiBOVUxMOworCisgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZmZpX3RyYW1wb2xpbmVfbG9jayk7CisKKyAgLyogQ2hlY2sgZm9yIGFuIGFjdGl2ZSB0cmFtcG9saW5lIHRhYmxlIHdpdGggYXZhaWxhYmxlIGVudHJpZXMuICovCisgIGZmaV90cmFtcG9saW5lX3RhYmxlICp0YWJsZSA9IGZmaV90cmFtcG9saW5lX3RhYmxlczsKKyAgaWYgKHRhYmxlID09IE5VTEwgfHwgdGFibGUtPmZyZWVfbGlzdCA9PSBOVUxMKSB7CisgICAgdGFibGUgPSBmZmlfdHJhbXBvbGluZV90YWJsZV9hbGxvYyAoKTsKKyAgICBpZiAodGFibGUgPT0gTlVMTCkgeworICAgICAgZnJlZShjbG9zdXJlKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIEluc2VydCB0aGUgbmV3IHRhYmxlIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QgKi8KKyAgICB0YWJsZS0+bmV4dCA9IGZmaV90cmFtcG9saW5lX3RhYmxlczsKKyAgICBpZiAodGFibGUtPm5leHQgIT0gTlVMTCkKKyAgICAgICAgdGFibGUtPm5leHQtPnByZXYgPSB0YWJsZTsKKworICAgIGZmaV90cmFtcG9saW5lX3RhYmxlcyA9IHRhYmxlOworICB9CisKKyAgLyogQ2xhaW0gdGhlIGZyZWUgZW50cnkgKi8KKyAgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgKmVudHJ5ID0gZmZpX3RyYW1wb2xpbmVfdGFibGVzLT5mcmVlX2xpc3Q7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlcy0+ZnJlZV9saXN0ID0gZW50cnktPm5leHQ7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlcy0+ZnJlZV9jb3VudC0tOworICBlbnRyeS0+bmV4dCA9IE5VTEw7CisKKyAgcHRocmVhZF9tdXRleF91bmxvY2soJmZmaV90cmFtcG9saW5lX2xvY2spOworCisgIC8qIEluaXRpYWxpemUgdGhlIHJldHVybiB2YWx1ZXMgKi8KKyAgKmNvZGUgPSBlbnRyeS0+dHJhbXBvbGluZTsKKyAgY2xvc3VyZS0+dHJhbXBvbGluZV90YWJsZSA9IHRhYmxlOworICBjbG9zdXJlLT50cmFtcG9saW5lX3RhYmxlX2VudHJ5ID0gZW50cnk7CisKKyAgcmV0dXJuIGNsb3N1cmU7Cit9CisKK3ZvaWQKK2ZmaV9jbG9zdXJlX2ZyZWUgKHZvaWQgKnB0cikKK3sKKyAgZmZpX2Nsb3N1cmUgKmNsb3N1cmUgPSBwdHI7CisKKyAgcHRocmVhZF9tdXRleF9sb2NrKCZmZmlfdHJhbXBvbGluZV9sb2NrKTsKKworICAvKiBGZXRjaCB0aGUgdGFibGUgYW5kIGVudHJ5IHJlZmVyZW5jZXMgKi8KKyAgZmZpX3RyYW1wb2xpbmVfdGFibGUgKnRhYmxlID0gY2xvc3VyZS0+dHJhbXBvbGluZV90YWJsZTsKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgKmVudHJ5ID0gY2xvc3VyZS0+dHJhbXBvbGluZV90YWJsZV9lbnRyeTsKKworICAvKiBSZXR1cm4gdGhlIGVudHJ5IHRvIHRoZSBmcmVlIGxpc3QgKi8KKyAgZW50cnktPm5leHQgPSB0YWJsZS0+ZnJlZV9saXN0OworICB0YWJsZS0+ZnJlZV9saXN0ID0gZW50cnk7CisgIHRhYmxlLT5mcmVlX2NvdW50Kys7CisKKyAgLyogSWYgYWxsIHRyYW1wb2xpbmVzIHdpdGhpbiB0aGlzIHRhYmxlIGFyZSBmcmVlLCBhbmQgYXQgbGVhc3Qgb25lIG90aGVyIHRhYmxlIGV4aXN0cywgZGVhbGxvY2F0ZQorICAgKiB0aGUgdGFibGUgKi8KKyAgaWYgKHRhYmxlLT5mcmVlX2NvdW50ID09IEZGSV9UUkFNUE9MSU5FX0NPVU5UICYmIGZmaV90cmFtcG9saW5lX3RhYmxlcyAhPSB0YWJsZSkgeworICAgIC8qIFJlbW92ZSBmcm9tIHRoZSBsaXN0ICovCisgICAgaWYgKHRhYmxlLT5wcmV2ICE9IE5VTEwpCisgICAgICB0YWJsZS0+cHJldi0+bmV4dCA9IHRhYmxlLT5uZXh0OworCisgICAgaWYgKHRhYmxlLT5uZXh0ICE9IE5VTEwpCisgICAgICB0YWJsZS0+bmV4dC0+cHJldiA9IHRhYmxlLT5wcmV2OworCisgICAgLyogRGVhbGxvY2F0ZSBwYWdlcyAqLworICAgIGtlcm5fcmV0dXJuX3Qga3Q7CisgICAga3QgPSB2bV9kZWFsbG9jYXRlIChtYWNoX3Rhc2tfc2VsZiAoKSwgdGFibGUtPmNvbmZpZ19wYWdlLCBQQUdFX1NJWkUpOworICAgIGlmIChrdCAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICBmcHJpbnRmKHN0ZGVyciwgInZtX2RlYWxsb2NhdGUoKSBmYWlsdXJlOiAlZCBhdCAlczolZFxuIiwga3QsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisKKyAgICBrdCA9IHZtX2RlYWxsb2NhdGUgKG1hY2hfdGFza19zZWxmICgpLCB0YWJsZS0+dHJhbXBvbGluZV9wYWdlLCBQQUdFX1NJWkUpOworICAgIGlmIChrdCAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICBmcHJpbnRmKHN0ZGVyciwgInZtX2RlYWxsb2NhdGUoKSBmYWlsdXJlOiAlZCBhdCAlczolZFxuIiwga3QsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisKKyAgICAvKiBEZWFsbG9jYXRlIGZyZWUgbGlzdCAqLworICAgIGZyZWUgKHRhYmxlLT5mcmVlX2xpc3RfcG9vbCk7CisgICAgZnJlZSAodGFibGUpOworICB9IGVsc2UgaWYgKGZmaV90cmFtcG9saW5lX3RhYmxlcyAhPSB0YWJsZSkgeworICAgIC8qIE90aGVyd2lzZSwgYnVtcCB0aGlzIHRhYmxlIHRvIHRoZSB0b3Agb2YgdGhlIGxpc3QgKi8KKyAgICB0YWJsZS0+cHJldiA9IE5VTEw7CisgICAgdGFibGUtPm5leHQgPSBmZmlfdHJhbXBvbGluZV90YWJsZXM7CisgICAgaWYgKGZmaV90cmFtcG9saW5lX3RhYmxlcyAhPSBOVUxMKQorICAgICAgZmZpX3RyYW1wb2xpbmVfdGFibGVzLT5wcmV2ID0gdGFibGU7CisKKyAgICBmZmlfdHJhbXBvbGluZV90YWJsZXMgPSB0YWJsZTsKKyAgfQorCisgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZmZpX3RyYW1wb2xpbmVfbG9jayk7CisKKyAgLyogRnJlZSB0aGUgY2xvc3VyZSAqLworICBmcmVlIChjbG9zdXJlKTsKK30KKworI2Vsc2UKKwogI2RlZmluZSBGRklfSU5JVF9UUkFNUE9MSU5FKFRSQU1QLEZVTixDVFgpCQkJCVwKICh7IHVuc2lnbmVkIGNoYXIgKl9fdHJhbXAgPSAodW5zaWduZWQgY2hhciopKFRSQU1QKTsJCQlcCiAgICB1bnNpZ25lZCBpbnQgIF9fZnVuID0gKHVuc2lnbmVkIGludCkoRlVOKTsJCQkJXAogICAgdW5zaWduZWQgaW50ICBfX2N0eCA9ICh1bnNpZ25lZCBpbnQpKENUWCk7CQkJCVwKLSAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbMF0gPSAweGU5MmQwMDBmOyAvKiBzdG1mZCBzcCEsIHtyMC1yM30gKi8JXAotICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFs0XSA9IDB4ZTU5ZjAwMDA7IC8qIGxkciByMCwgW3BjXSAqLwlcCi0gICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1wWzhdID0gMHhlNTlmZjAwMDsgLyogbGRyIHBjLCBbcGNdICovCVwKKyAgIHVuc2lnbmVkIGNoYXIgKmluc25zID0gKHVuc2lnbmVkIGNoYXIgKikoQ1RYKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIG1lbWNweSAoX190cmFtcCwgZmZpX2FybV90cmFtcG9saW5lLCBzaXplb2YgZmZpX2FybV90cmFtcG9saW5lKTsgICAgIFwKICAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbMTJdID0gX19jdHg7CQkJCVwKICAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbMTZdID0gX19mdW47CQkJCVwKLSAgIF9fY2xlYXJfY2FjaGUoKCZfX3RyYW1wWzBdKSwgKCZfX3RyYW1wWzE5XSkpOwkJCVwKKyAgIF9fY2xlYXJfY2FjaGUoKCZfX3RyYW1wWzBdKSwgKCZfX3RyYW1wWzE5XSkpOyAvKiBDbGVhciBkYXRhIG1hcHBpbmcuICAqLyBcCisgICBfX2NsZWFyX2NhY2hlKGluc25zLCBpbnNucyArIDMgKiBzaXplb2YgKHVuc2lnbmVkIGludCkpOyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2xlYXIgaW5zdHJ1Y3Rpb24gICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy4gICovICAgICAgICBcCiAgfSkKIAorI2VuZGlmCiAKIC8qIHRoZSBjaWYgbXVzdCBhbHJlYWR5IGJlIHByZXAnZWQgKi8KIApAQCAtMjk1LDE1ICs2MDcsMTUwIEBACiAJCSAgICAgIHZvaWQgKnVzZXJfZGF0YSwKIAkJICAgICAgdm9pZCAqY29kZWxvYykKIHsKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1NZU1YpOworICB2b2lkICgqY2xvc3VyZV9mdW5jKShmZmlfY2xvc3VyZSopID0gTlVMTDsKIAotICBGRklfSU5JVF9UUkFNUE9MSU5FICgmY2xvc3VyZS0+dHJhbXBbMF0sIFwKLQkJICAgICAgICZmZmlfY2xvc3VyZV9TWVNWLCAgXAotCQkgICAgICAgY29kZWxvYyk7CisgIGlmIChjaWYtPmFiaSA9PSBGRklfU1lTVikKKyAgICBjbG9zdXJlX2Z1bmMgPSAmZmZpX2Nsb3N1cmVfU1lTVjsKKyNpZmRlZiBfX0FSTV9FQUJJX18KKyAgZWxzZSBpZiAoY2lmLT5hYmkgPT0gRkZJX1ZGUCkKKyAgICBjbG9zdXJlX2Z1bmMgPSAmZmZpX2Nsb3N1cmVfVkZQOworI2VuZGlmCisgIGVsc2UKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgICAgCisjaWYgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQorICB2b2lkICoqY29uZmlnID0gRkZJX1RSQU1QT0xJTkVfQ09ERUxPQ19DT05GSUcoY29kZWxvYyk7CisgIGNvbmZpZ1swXSA9IGNsb3N1cmU7CisgIGNvbmZpZ1sxXSA9IGNsb3N1cmVfZnVuYzsKKyNlbHNlCisgIEZGSV9JTklUX1RSQU1QT0xJTkUgKCZjbG9zdXJlLT50cmFtcFswXSwgXAorCQkgICAgICAgY2xvc3VyZV9mdW5jLCAgXAorCQkgICAgICAgY29kZWxvYyk7CisjZW5kaWYKKwogICBjbG9zdXJlLT5jaWYgID0gY2lmOwogICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CiAgIGNsb3N1cmUtPmZ1biAgPSBmdW47CiAKICAgcmV0dXJuIEZGSV9PSzsKIH0KKworLyogQmVsb3cgYXJlIHJvdXRpbmVzIGZvciBWRlAgaGFyZC1mbG9hdCBzdXBwb3J0LiAqLworCitzdGF0aWMgaW50IHJlY192ZnBfdHlwZV9wIChmZmlfdHlwZSAqdCwgaW50ICplbHQsIGludCAqZWxudW0pCit7CisgIHN3aXRjaCAodC0+dHlwZSkKKyAgICB7CisgICAgY2FzZSBGRklfVFlQRV9GTE9BVDoKKyAgICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKKyAgICAgICplbHQgPSAoaW50KSB0LT50eXBlOworICAgICAgKmVsbnVtID0gMTsKKyAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUOgorICAgICAgKmVsdCA9IEZGSV9UWVBFX0ZMT0FUOworICAgICAgKmVsbnVtID0gdC0+c2l6ZSAvIHNpemVvZiAoZmxvYXQpOworICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFOgorICAgICAgKmVsdCA9IEZGSV9UWVBFX0RPVUJMRTsKKyAgICAgICplbG51bSA9IHQtPnNpemUgLyBzaXplb2YgKGRvdWJsZSk7CisgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOjsKKyAgICAgIHsKKwlpbnQgYmFzZV9lbHQgPSAwLCB0b3RhbF9lbG51bSA9IDA7CisJZmZpX3R5cGUgKiplbCA9IHQtPmVsZW1lbnRzOworCXdoaWxlICgqZWwpCisJICB7CisJICAgIGludCBlbF9lbHQgPSAwLCBlbF9lbG51bSA9IDA7CisJICAgIGlmICghIHJlY192ZnBfdHlwZV9wICgqZWwsICZlbF9lbHQsICZlbF9lbG51bSkKKwkJfHwgKGJhc2VfZWx0ICYmIGJhc2VfZWx0ICE9IGVsX2VsdCkKKwkJfHwgdG90YWxfZWxudW0gKyBlbF9lbG51bSA+IDQpCisJICAgICAgcmV0dXJuIDA7CisJICAgIGJhc2VfZWx0ID0gZWxfZWx0OworCSAgICB0b3RhbF9lbG51bSArPSBlbF9lbG51bTsKKwkgICAgZWwrKzsKKwkgIH0KKwkqZWxudW0gPSB0b3RhbF9lbG51bTsKKwkqZWx0ID0gYmFzZV9lbHQ7CisJcmV0dXJuIDE7CisgICAgICB9CisgICAgZGVmYXVsdDogOworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdmZwX3R5cGVfcCAoZmZpX3R5cGUgKnQpCit7CisgIGludCBlbHQsIGVsbnVtOworICBpZiAocmVjX3ZmcF90eXBlX3AgKHQsICZlbHQsICZlbG51bSkpCisgICAgeworICAgICAgaWYgKHQtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorCXsKKwkgIGlmIChlbG51bSA9PSAxKQorCSAgICB0LT50eXBlID0gZWx0OworCSAgZWxzZQorCSAgICB0LT50eXBlID0gKGVsdCA9PSBGRklfVFlQRV9GTE9BVAorCQkgICAgICAgPyBGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUCisJCSAgICAgICA6IEZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFKTsKKwl9CisgICAgICByZXR1cm4gKGludCkgdC0+dHlwZTsKKyAgICB9CisgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBwbGFjZV92ZnBfYXJnIChmZmlfY2lmICpjaWYsIGZmaV90eXBlICp0KQoreworICBpbnQgcmVnID0gY2lmLT52ZnBfcmVnX2ZyZWU7CisgIGludCBucmVncyA9IHQtPnNpemUgLyBzaXplb2YgKGZsb2F0KTsKKyAgaW50IGFsaWduID0gKCh0LT50eXBlID09IEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQKKwkJfHwgdC0+dHlwZSA9PSBGRklfVFlQRV9GTE9BVCkgPyAxIDogMik7CisgIC8qIEFsaWduIHJlZ2lzdGVyIG51bWJlci4gKi8KKyAgaWYgKChyZWcgJiAxKSAmJiBhbGlnbiA9PSAyKQorICAgIHJlZysrOworICB3aGlsZSAocmVnICsgbnJlZ3MgPD0gMTYpCisgICAgeworICAgICAgaW50IHMsIG5ld191c2VkID0gMDsKKyAgICAgIGZvciAocyA9IHJlZzsgcyA8IHJlZyArIG5yZWdzOyBzKyspCisJeworCSAgbmV3X3VzZWQgfD0gKDEgPDwgcyk7CisJICBpZiAoY2lmLT52ZnBfdXNlZCAmICgxIDw8IHMpKQorCSAgICB7CisJICAgICAgcmVnICs9IGFsaWduOworCSAgICAgIGdvdG8gbmV4dF9yZWc7CisJICAgIH0KKwl9CisgICAgICAvKiBGb3VuZCByZWdzIHRvIGFsbG9jYXRlLiAqLworICAgICAgY2lmLT52ZnBfdXNlZCB8PSBuZXdfdXNlZDsKKyAgICAgIGNpZi0+dmZwX2FyZ3NbY2lmLT52ZnBfbmFyZ3MrK10gPSByZWc7CisKKyAgICAgIC8qIFVwZGF0ZSB2ZnBfcmVnX2ZyZWUuICovCisgICAgICBpZiAoY2lmLT52ZnBfdXNlZCAmICgxIDw8IGNpZi0+dmZwX3JlZ19mcmVlKSkKKwl7CisJICByZWcgKz0gbnJlZ3M7CisJICB3aGlsZSAoY2lmLT52ZnBfdXNlZCAmICgxIDw8IHJlZykpCisJICAgIHJlZyArPSAxOworCSAgY2lmLT52ZnBfcmVnX2ZyZWUgPSByZWc7CisJfQorICAgICAgcmV0dXJuOworICAgIG5leHRfcmVnOiA7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBsYXlvdXRfdmZwX2FyZ3MgKGZmaV9jaWYgKmNpZikKK3sKKyAgaW50IGk7CisgIC8qIEluaXQgVkZQIGZpZWxkcyAqLworICBjaWYtPnZmcF91c2VkID0gMDsKKyAgY2lmLT52ZnBfbmFyZ3MgPSAwOworICBjaWYtPnZmcF9yZWdfZnJlZSA9IDA7CisgIG1lbXNldCAoY2lmLT52ZnBfYXJncywgLTEsIDE2KTsgLyogSW5pdCB0byAtMS4gKi8KKworICBmb3IgKGkgPSAwOyBpIDwgY2lmLT5uYXJnczsgaSsrKQorICAgIHsKKyAgICAgIGZmaV90eXBlICp0ID0gY2lmLT5hcmdfdHlwZXNbaV07CisgICAgICBpZiAodmZwX3R5cGVfcCAodCkpCisJcGxhY2VfdmZwX2FyZyAoY2lmLCB0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpdGFyZ2V0LmgKaW5kZXggYTk1NzQyNi4uMjZkNDk0ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDggQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTAgIENvZGVTb3VyY2VyeQorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIEFSTS4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICszMCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKQEAgLTM0LDExICs0MSwyNyBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCisgIEZGSV9WRlAsCisgIEZGSV9MQVNUX0FCSSwKKyNpZmRlZiBfX0FSTV9QQ1NfVkZQCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9WRlAsCisjZWxzZQogICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorI2VuZGlmCiB9IGZmaV9hYmk7CiAjZW5kaWYKIAorI2RlZmluZSBGRklfRVhUUkFfQ0lGX0ZJRUxEUwkJCVwKKyAgaW50IHZmcF91c2VkOwkJCQkJXAorICBzaG9ydCB2ZnBfcmVnX2ZyZWUsIHZmcF9uYXJnczsJCVwKKyAgc2lnbmVkIGNoYXIgdmZwX2FyZ3NbMTZdCQkJXAorCisvKiBJbnRlcm5hbGx5IHVzZWQuICovCisjZGVmaW5lIEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQgIChGRklfVFlQRV9MQVNUICsgMSkKKyNkZWZpbmUgRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUgKEZGSV9UWVBFX0xBU1QgKyAyKQorCisjZGVmaW5lIEZGSV9UQVJHRVRfU1BFQ0lGSUNfVkFSSUFESUMKKwogLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgY2xvc3VyZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2RlZmluZSBGRklfQ0xPU1VSRVMgMQpAQCAtNDYsNCArNjksMyBAQAogI2RlZmluZSBGRklfTkFUSVZFX1JBV19BUEkgMAogCiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2dlbnRyYW1wLnNoIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2dlbnRyYW1wLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZjBiODYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZ2VudHJhbXAuc2gKQEAgLTAsMCArMSwxMTggQEAKKyMhL2Jpbi9zaAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICBnZW50cmFtcC5zaCAtIENvcHlyaWdodCAoYykgMjAxMCwgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KKyMgIAorIyAgQVJNIFRyYW1wb2xpbmUgUGFnZSBHZW5lcmF0b3IKKyMKKyMgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworIyAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisjICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyMgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyMgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworIyAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisjICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorIyAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisjCisjICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorIyAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisjICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorIyAgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCisjICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyMgIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorIyAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorIyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUFJPR05BTUU9JDAKKworIyBFYWNoIHRyYW1wb2xpbmUgaXMgZXhhY3RseSAzIGluc3RydWN0aW9ucywgb3IgMTIgYnl0ZXMuIElmIGFueSBvZiB0aGVzZSB2YWx1ZXMgY2hhbmdlLAorIyB0aGUgZW50aXJlIGFybSB0cmFtcG9saW5lIGltcGxlbWVudGF0aW9uIG11c3QgYmUgdXBkYXRlZCB0byBtYXRjaCwgdG9vLgorCisjIFNpemUgb2YgYW4gaW5kaXZpZHVhbCB0cmFtcG9saW5lLCBpbiBieXRlcworVFJBTVBPTElORV9TSVpFPTEyCisKKyMgUGFnZSBzaXplLCBpbiBieXRlcworUEFHRV9TSVpFPTQwOTYKKworIyBDb21wdXRlIHRoZSBzaXplIG9mIHRoZSByZWFjaGFibGUgY29uZmlnIHBhZ2U7IFRoZSBmaXJzdCAxNiBieXRlcyBvZiB0aGUgY29uZmlnIHBhZ2UKKyMgYXJlIHVucmVhY2hhYmxlIGR1ZSB0byBvdXIgbWF4aW11bSBwYy1yZWxhdGl2ZSBsZHIgb2Zmc2V0LgorUEFHRV9BVkFJTD1gZXhwciAkUEFHRV9TSVpFIC0gMTZgCisKKyMgQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIG9mIGF2YWlsYWJsZSB0cmFtcG9saW5lcy4gCitUUkFNUE9MSU5FX0NPVU5UPWBleHByICRQQUdFX0FWQUlMIC8gJFRSQU1QT0xJTkVfU0laRWAKKworaGVhZGVyICgpIHsKKyAgICBlY2hvICIjIEdFTkVSQVRFRCBDT0RFIC0gRE8gTk9UIEVESVQiCisgICAgZWNobyAiIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSAkUFJPR05BTUUiCisgICAgZWNobyAiIgorCisgICAgIyBXcml0ZSBvdXQgdGhlIGxpY2Vuc2UgaGVhZGVyCitjYXQgPDwgRU9GCisjICBDb3B5cmlnaHQgKGMpIDIwMTAsIFBsYXVzaWJsZSBMYWJzIENvb3BlcmF0aXZlLCBJbmMuCisjICAKKyMgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworIyAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisjICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyMgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyMgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworIyAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisjICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorIyAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisjCisjICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorIyAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisjICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorIyAgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCisjICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyMgIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorIyAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorIyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRU9GCisKKyAgICAjIFdyaXRlIG91dCB0aGUgdHJhbXBvbGluZSB0YWJsZSwgYWxpZ25lZCB0byB0aGUgcGFnZSBib3VuZGFyeQorICAgIGVjaG8gIi50ZXh0IgorICAgIGVjaG8gIi5hbGlnbiAxMiIKKyAgICBlY2hvICIuZ2xvYmwgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGVfcGFnZSIKKyAgICBlY2hvICJfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlOiIKK30KKworCisjIFdBUk5JTkcgLSBEb24ndCBtb2RpZnkgdGhlIHRyYW1wb2xpbmUgY29kZSBzaXplIHdpdGhvdXQgYWxzbyB1cGRhdGluZyB0aGUgcmVsZXZlbnQgbGliZmZpIGNvZGUKK3RyYW1wb2xpbmUgKCkgeworICAgIGNhdCA8PCBFTkQKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCitFTkQKK30KKworbWFpbiAoKSB7CisgICAgIyBXcml0ZSBvdXQgdGhlIGhlYWRlcgorICAgIGhlYWRlcgorCisgICAgIyBXcml0ZSBvdXQgdGhlIHRyYW1wb2xpbmVzCisgICAgbG9jYWwgaT0wCisgICAgd2hpbGUgWyAkaSAtbHQgJHtUUkFNUE9MSU5FX0NPVU5UfSBdOyBkbworICAgICAgICB0cmFtcG9saW5lCisgICAgICAgIGxvY2FsIGk9YGV4cHIgJGkgKyAxYAorICAgIGRvbmUKK30KKworbWFpbgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3N5c3YuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9zeXN2LlMKaW5kZXggOTA2NDMxOC4uZmIzOGNkNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3N5c3YuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vc3lzdi5TCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5OCwgMjAwOCBSZWQgSGF0LCBJbmMuCisgICBzeXN2LlMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDgsIDIwMTEgUmVkIEhhdCwgSW5jLgorCSAgICBDb3B5cmlnaHQgKGMpIDIwMTEgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KICAgIAogICAgQVJNIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC0zOSw3ICs0MCwxMSBAQAogI2Vsc2UKICNkZWZpbmUgQ05BTUUoeCkgeAogI2VuZGlmCisjaWZkZWYgX19BUFBMRV9fCisjZGVmaW5lIEVOVFJZKHgpIC5nbG9ibCBfIyN4OyBfIyN4OgorI2Vsc2UKICNkZWZpbmUgRU5UUlkoeCkgLmdsb2JsIENOQU1FKHgpOyAudHlwZSBDTkFNRSh4KSwlZnVuY3Rpb247IENOQU1FKHgpOgorI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwogI2VuZGlmCiAKICNpZmRlZiBfX0VMRl9fCkBAIC00OCw2ICs1MywxMiBAQAogI2RlZmluZSBMU1lNKHgpIHgKICNlbmRpZgogCisvKiBVc2UgdGhlIFNPRlRGUCByZXR1cm4gdmFsdWUgQUJJIG9uIE1hYyBPUyBYLCBhcyBwZXIgdGhlIGlPUyBBQkkKKyAgRnVuY3Rpb24gQ2FsbCBHdWlkZSAqLworI2lmZGVmIF9fQVBQTEVfXworI2RlZmluZSBfX1NPRlRGUF9fCisjZW5kaWYKKwogLyogV2UgbmVlZCBhIGJldHRlciB3YXkgb2YgdGVzdGluZyBmb3IgdGhpcywgYnV0IGZvciBub3csIHRoaXMgaXMgYWxsIAogICAgd2UgY2FuIGRvLiAgKi8KIEAgVGhpcyBzZWxlY3RzIHRoZSBtaW5pbXVtIGFyY2hpdGVjdHVyZSBsZXZlbCByZXF1aXJlZC4KQEAgLTEwNSwyMSArMTE2LDMzIEBACiAJLmFsaWduIDAKIAkudGh1bWIKIAkudGh1bWJfZnVuYworI2lmZGVmIF9fQVBQTEVfXworCUVOVFJZKCQwKQorI2Vsc2UKIAlFTlRSWShcbmFtZSkKKyNlbmRpZgogCWJ4CXBjCiAJbm9wCiAJLmFybQogCVVOV0lORCAuZm5zdGFydAogLyogQSBob29rIHRvIHRlbGwgZ2RiIHRoYXQgd2UndmUgc3dpdGNoZWQgdG8gQVJNIG1vZGUuICBBbHNvIHVzZWQgdG8gY2FsbAogICAgZGlyZWN0bHkgZnJvbSBvdGhlciBsb2NhbCBhcm0gcm91dGluZXMuICAqLwotX0xfX1xuYW1lOgkJCisjaWZkZWYgX19BUFBMRV9fCitfTF9fJDA6CisjZWxzZQorX0xfX1xuYW1lOgorI2VuZGlmCiAuZW5kbQogI2Vsc2UKIC5tYWNybwlBUk1fRlVOQ19TVEFSVCBuYW1lCiAJLnRleHQKIAkuYWxpZ24gMAogCS5hcm0KKyNpZmRlZiBfX0FQUExFX18KKwlFTlRSWSgkMCkKKyNlbHNlCiAJRU5UUlkoXG5hbWUpCisjZW5kaWYKIAlVTldJTkQgLmZuc3RhcnQKIC5lbmRtCiAjZW5kaWYKQEAgLTE0MSwxMyArMTY0LDExIEBACiAjZW5kaWYKIC5lbmRtCiAKLQogCUAgcjA6ICAgZmZpX3ByZXBfYXJncwogCUAgcjE6ICAgJmVjaWYKIAlAIHIyOiAgIGNpZi0+Ynl0ZXMKIAlAIHIzOiAgIGZpZy0+ZmxhZ3MKIAlAIHNwKzA6IGVjaWYucnZhbHVlCi0JQCBzcCs0OiBmbgogCiAJQCBUaGlzIGFzc3VtZXMgd2UgYXJlIHVzaW5nIGdhcy4KIEFSTV9GVU5DX1NUQVJUIGZmaV9jYWxsX1NZU1YKQEAgLTE2MiwyNCArMTgzLDIzIEBACiAJc3ViCXNwLCBmcCwgcjIKIAogCUAgUGxhY2UgYWxsIG9mIHRoZSBmZmlfcHJlcF9hcmdzIGluIHBvc2l0aW9uCi0JbW92CWlwLCByMAogCW1vdglyMCwgc3AKIAlAICAgICByMSBhbHJlYWR5IHNldAogCiAJQCBDYWxsIGZmaV9wcmVwX2FyZ3Moc3RhY2ssICZlY2lmKQotCWNhbGxfcmVnKGlwKQorCWJsCUNOQU1FKGZmaV9wcmVwX2FyZ3MpCiAKIAlAIG1vdmUgZmlyc3QgNCBwYXJhbWV0ZXJzIGluIHJlZ2lzdGVycwogCWxkbWlhCXNwLCB7cjAtcjN9CiAKIAlAIGFuZCBhZGp1c3Qgc3RhY2sKLQlsZHIJaXAsIFtmcCwgIzhdCi0gICAgICAgIGNtcAlpcCwgIzE2Ci0JbW92aHMJaXAsICMxNgotICAgICAgICBhZGQJc3AsIHNwLCBpcAorCXN1YglsciwgZnAsIHNwCUAgY2lmLT5ieXRlcyA9PSBmcCAtIHNwCisJbGRyCWlwLCBbZnBdCUAgbG9hZCBmbigpIGluIGFkdmFuY2UKKwljbXAJbHIsICMxNgorCW1vdmhzCWxyLCAjMTYKKwlhZGQJc3AsIHNwLCBscgogCiAJQCBjYWxsIChmbikgKC4uLikKLQlsZHIJaXAsIFtmcCwgIzI4XQogCWNhbGxfcmVnKGlwKQogCQogCUAgUmVtb3ZlIHRoZSBzcGFjZSB3ZSBwdXNoZWQgZm9yIHRoZSBhcmdzCkBAIC0yMjQsMTEgKzI0NCwxOSBAQAogI2VuZGlmCiAKIExTWU0oTGVwaWxvZ3VlKToKLQlSRVRMRE0JInIwLXIzLGZwIgorI2lmIGRlZmluZWQgKF9fSU5URVJXT1JLSU5HX18pCisJbGRtaWEgICBzcCEsIHtyMC1yMyxmcCwgbHJ9CisJYngJbHIKKyNlbHNlCisJbGRtaWEgICBzcCEsIHtyMC1yMyxmcCwgcGN9CisjZW5kaWYKIAogLmZmaV9jYWxsX1NZU1ZfZW5kOgogCVVOV0lORCAuZm5lbmQKKyNpZmRlZiBfX0VMRl9fCiAgICAgICAgIC5zaXplICAgIENOQU1FKGZmaV9jYWxsX1NZU1YpLC5mZmlfY2FsbF9TWVNWX2VuZC1DTkFNRShmZmlfY2FsbF9TWVNWKQorI2VuZGlmCisKIAogLyoKIAl1bnNpZ25lZCBpbnQgRkZJX0hJRERFTgpAQCAtMjQ0LDExICsyNzIsMTEgQEAKIAlzdG1mZAlzcCEsIHtpcCwgbHJ9CiAJVU5XSU5EIC5zYXZlCXtyMCwgbHJ9CiAJYWRkCXIyLCBzcCwgIzgKLQkucGFkICMxNgorCVVOV0lORCAucGFkICMxNgogCXN1YglzcCwgc3AsICMxNgogCXN0cglzcCwgW3NwLCAjOF0KIAlhZGQJcjEsIHNwLCAjOAotCWJsCWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIKKwlibAlDTkFNRShmZmlfY2xvc3VyZV9TWVNWX2lubmVyKQogCWNtcAlyMCwgI0ZGSV9UWVBFX0lOVAogCWJlcQkuTHJldGludAogCkBAIC0zMDAsNyArMzI4LDE3NyBAQAogCiAuZmZpX2Nsb3N1cmVfU1lTVl9lbmQ6CiAJVU5XSU5EIC5mbmVuZAorI2lmZGVmIF9fRUxGX18KICAgICAgICAgLnNpemUgICAgQ05BTUUoZmZpX2Nsb3N1cmVfU1lTViksLmZmaV9jbG9zdXJlX1NZU1ZfZW5kLUNOQU1FKGZmaV9jbG9zdXJlX1NZU1YpCisjZW5kaWYKKworCisvKiBCZWxvdyBhcmUgVkZQIGhhcmQtZmxvYXQgQUJJIGNhbGwgYW5kIGNsb3N1cmUgaW1wbGVtZW50YXRpb25zLgorICAgQWRkIFZGUCBGUFUgZGlyZWN0aXZlIGhlcmUuIFRoaXMgaXMgb25seSBjb21waWxlZCBpbnRvIHRoZSBsaWJyYXJ5CisgICB1bmRlciBFQUJJLiAgKi8KKyNpZmRlZiBfX0FSTV9FQUJJX18KKwkuZnB1CXZmcAorCisJQCByMDogICBmbgorCUAgcjE6ICAgJmVjaWYKKwlAIHIyOiAgIGNpZi0+Ynl0ZXMKKwlAIHIzOiAgIGZpZy0+ZmxhZ3MKKwlAIHNwKzA6IGVjaWYucnZhbHVlCisKK0FSTV9GVU5DX1NUQVJUIGZmaV9jYWxsX1ZGUAorCUAgU2F2ZSByZWdpc3RlcnMKKyAgICAgICAgc3RtZmQJc3AhLCB7cjAtcjMsIGZwLCBscn0KKwlVTldJTkQgLnNhdmUJe3IwLXIzLCBmcCwgbHJ9CisJbW92CWZwLCBzcAorCVVOV0lORCAuc2V0ZnAJZnAsIHNwCisKKwlAIE1ha2Ugcm9vbSBmb3IgYWxsIG9mIHRoZSBuZXcgYXJncy4KKwlzdWIJc3AsIHNwLCByMgorCisJQCBNYWtlIHJvb20gZm9yIGxvYWRpbmcgVkZQIGFyZ3MKKwlzdWIJc3AsIHNwLCAjNjQKKworCUAgUGxhY2UgYWxsIG9mIHRoZSBmZmlfcHJlcF9hcmdzIGluIHBvc2l0aW9uCisJbW92CXIwLCBzcAorCUAgICAgIHIxIGFscmVhZHkgc2V0CisJc3ViCXIyLCBmcCwgIzY0ICAgQCBWRlAgc2NyYXRjaCBzcGFjZQorCisJQCBDYWxsIGZmaV9wcmVwX2FyZ3Moc3RhY2ssICZlY2lmLCB2ZnBfc3BhY2UpCisJYmwJQ05BTUUoZmZpX3ByZXBfYXJncykKKworCUAgTG9hZCBWRlAgcmVnaXN0ZXIgYXJncyBpZiBuZWVkZWQKKwljbXAJcjAsICMwCisJYmVxCUxTWU0oTGJhc2VfYXJncykKKworCUAgTG9hZCBvbmx5IGQwIGlmIHBvc3NpYmxlCisJY21wCXIwLCAjMworCXN1YglpcCwgZnAsICM2NAorCWZsZGRsZQlkMCwgW2lwXQorCWZsZG1pYWRndAlpcCwge2QwLWQ3fQorCitMU1lNKExiYXNlX2FyZ3MpOgorCUAgbW92ZSBmaXJzdCA0IHBhcmFtZXRlcnMgaW4gcmVnaXN0ZXJzCisJbGRtaWEJc3AsIHtyMC1yM30KKworCUAgYW5kIGFkanVzdCBzdGFjaworCXN1YglsciwgaXAsIHNwCUAgY2lmLT5ieXRlcyA9PSAoZnAgLSA2NCkgLSBzcAorCWxkcglpcCwgW2ZwXQlAIGxvYWQgZm4oKSBpbiBhZHZhbmNlCisgICAgICAgIGNtcAlsciwgIzE2CisJbW92aHMJbHIsICMxNgorICAgICAgICBhZGQJc3AsIHNwLCBscgorCisJQCBjYWxsIChmbikgKC4uLikKKwljYWxsX3JlZyhpcCkKKworCUAgUmVtb3ZlIHRoZSBzcGFjZSB3ZSBwdXNoZWQgZm9yIHRoZSBhcmdzCisJbW92CXNwLCBmcAorCisJQCBMb2FkIHIyIHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IKKwlAIHRoZSByZXR1cm4gdmFsdWUKKwlsZHIJcjIsIFtzcCwgIzI0XQorCisJQCBMb2FkIHIzIHdpdGggdGhlIHJldHVybiB0eXBlIGNvZGUgCisJbGRyCXIzLCBbc3AsICMxMl0KKworCUAgSWYgdGhlIHJldHVybiB2YWx1ZSBwb2ludGVyIGlzIE5VTEwsCisJQCBhc3N1bWUgbm8gcmV0dXJuIHZhbHVlLgorCWNtcAlyMiwgIzAKKwliZXEJTFNZTShMZXBpbG9ndWVfdmZwKQorCisJY21wCXIzLCAjRkZJX1RZUEVfSU5UCisJc3RyZXEJcjAsIFtyMl0KKwliZXEJTFNZTShMZXBpbG9ndWVfdmZwKQorCisJY21wCXIzLCAjRkZJX1RZUEVfU0lOVDY0CisJc3RtZXFpYQlyMiwge3IwLCByMX0KKwliZXEJTFNZTShMZXBpbG9ndWVfdmZwKQorCisJY21wCXIzLCAjRkZJX1RZUEVfRkxPQVQKKwlmc3RzZXEJczAsIFtyMl0KKwliZXEJTFNZTShMZXBpbG9ndWVfdmZwKQorCQorCWNtcAlyMywgI0ZGSV9UWVBFX0RPVUJMRQorCWZzdGRlcQlkMCwgW3IyXQorCWJlcQlMU1lNKExlcGlsb2d1ZV92ZnApCisKKwljbXAJcjMsICNGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUCisJY21wbmUJcjMsICNGRklfVFlQRV9TVFJVQ1RfVkZQX0RPVUJMRQorCWZzdG1pYWRlcQlyMiwge2QwLWQzfQorCitMU1lNKExlcGlsb2d1ZV92ZnApOgorCVJFVExETQkicjAtcjMsZnAiCisKKy5mZmlfY2FsbF9WRlBfZW5kOgorCVVOV0lORCAuZm5lbmQKKyAgICAgICAgLnNpemUgICAgQ05BTUUoZmZpX2NhbGxfVkZQKSwuZmZpX2NhbGxfVkZQX2VuZC1DTkFNRShmZmlfY2FsbF9WRlApCisKKworQVJNX0ZVTkNfU1RBUlQgZmZpX2Nsb3N1cmVfVkZQCisJZnN0bWZkZAlzcCEsIHtkMC1kN30KKwlAIHIwLXIzLCB0aGVuIGQwLWQ3CisJVU5XSU5EIC5wYWQgIzgwCisJYWRkCWlwLCBzcCwgIzgwCisJc3RtZmQJc3AhLCB7aXAsIGxyfQorCVVOV0lORCAuc2F2ZQl7cjAsIGxyfQorCWFkZAlyMiwgc3AsICM3MgorCWFkZAlyMywgc3AsICM4CisJVU5XSU5EIC5wYWQgIzcyCisJc3ViCXNwLCBzcCwgIzcyCisJc3RyCXNwLCBbc3AsICM2NF0KKwlhZGQJcjEsIHNwLCAjNjQKKwlibAlDTkFNRShmZmlfY2xvc3VyZV9TWVNWX2lubmVyKQorCisJY21wCXIwLCAjRkZJX1RZUEVfSU5UCisJYmVxCS5McmV0aW50X3ZmcAorCisJY21wCXIwLCAjRkZJX1RZUEVfRkxPQVQKKwliZXEJLkxyZXRmbG9hdF92ZnAKKworCWNtcAlyMCwgI0ZGSV9UWVBFX0RPVUJMRQorCWNtcG5lCXIwLCAjRkZJX1RZUEVfTE9OR0RPVUJMRQorCWJlcQkuTHJldGRvdWJsZV92ZnAKKworCWNtcAlyMCwgI0ZGSV9UWVBFX1NJTlQ2NAorCWJlcQkuTHJldGxvbmdsb25nX3ZmcAorCisJY21wCXIwLCAjRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVAorCWJlcQkuTHJldGZsb2F0X3N0cnVjdF92ZnAKKworCWNtcAlyMCwgI0ZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFCisJYmVxCS5McmV0ZG91YmxlX3N0cnVjdF92ZnAKKwkKKy5MY2xvc3VyZV9lcGlsb2d1ZV92ZnA6CisJYWRkCXNwLCBzcCwgIzcyCisJbGRtZmQJc3AsIHtzcCwgcGN9CisKKy5McmV0ZmxvYXRfdmZwOgorCWZsZHMJczAsIFtzcF0KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKy5McmV0ZG91YmxlX3ZmcDoKKwlmbGRkCWQwLCBbc3BdCisJYgkuTGNsb3N1cmVfZXBpbG9ndWVfdmZwCisuTHJldGludF92ZnA6CisJbGRyCXIwLCBbc3BdCisJYgkuTGNsb3N1cmVfZXBpbG9ndWVfdmZwCisuTHJldGxvbmdsb25nX3ZmcDoKKwlsZG1pYQlzcCwge3IwLCByMX0KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKy5McmV0ZmxvYXRfc3RydWN0X3ZmcDoKKwlmbGRtaWFkCXNwLCB7ZDAtZDF9CisJYgkuTGNsb3N1cmVfZXBpbG9ndWVfdmZwCisuTHJldGRvdWJsZV9zdHJ1Y3RfdmZwOgorCWZsZG1pYWQJc3AsIHtkMC1kM30KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKworLmZmaV9jbG9zdXJlX1ZGUF9lbmQ6CisJVU5XSU5EIC5mbmVuZAorICAgICAgICAuc2l6ZSAgICBDTkFNRShmZmlfY2xvc3VyZV9WRlApLC5mZmlfY2xvc3VyZV9WRlBfZW5kLUNOQU1FKGZmaV9jbG9zdXJlX1ZGUCkKKyNlbmRpZgorCitFTlRSWShmZmlfYXJtX3RyYW1wb2xpbmUpCisJc3RtZmQgc3AhLCB7cjAtcjN9CisJbGRyIHIwLCBbcGNdCisJbGRyIHBjLCBbcGNdCiAKICNpZiBkZWZpbmVkIF9fRUxGX18gJiYgZGVmaW5lZCBfX2xpbnV4X18KIAkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsJXByb2diaXRzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vdHJhbXBvbGluZS5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3RyYW1wb2xpbmUuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzVlOGRlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3RyYW1wb2xpbmUuUwpAQCAtMCwwICsxLDQ0NTAgQEAKKyMgR0VORVJBVEVEIENPREUgLSBETyBOT1QgRURJVAorIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBzcmMvYXJtL2dlbnRyYW1wLnNoCisKKyMgIENvcHlyaWdodCAoYykgMjAxMCwgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KKyMgIAorIyAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisjICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyMgIFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyMgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyMgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworIyAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisjICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorIyAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisjCisjICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyMgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorIyAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKyMgIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAorIyAgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCisjICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyMgIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyMgIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy50ZXh0CisuYWxpZ24gMTIKKy5nbG9ibCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlCitfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlOgorCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpLmMKaW5kZXggMzlmYmEyYi4uM2Q0MzM5NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpLmMKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDkgIEJyYWRsZXkgU21pdGggPGJyYWRAYnJhZC1zbWl0aC5jby51az4KKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDExICBBbnRob255IEdyZWVuCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOSAgQnJhZGxleSBTbWl0aCA8YnJhZEBicmFkLXNtaXRoLmNvLnVrPgogCiAgICBBVlIzMiBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZQogCkBAIC0zOTQsNyArMzk1LDggQEAKICAgICB2b2lkICgqZnVuKShmZmlfY2lmKiwgdm9pZCosIHZvaWQqKiwgdm9pZCopLCB2b2lkICp1c2VyX2RhdGEsCiAgICAgdm9pZCAqY29kZWxvYykKIHsKLSAgICBGRklfQVNTRVJUKGNpZi0+YWJpID09IEZGSV9TWVNWKTsKKyAgICBpZiAoY2lmLT5hYmkgIT0gRkZJX1NZU1YpCisgICAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAKICAgICB1bnNpZ25lZCBjaGFyICpfX3RyYW1wID0gKHVuc2lnbmVkIGNoYXIqKSgmY2xvc3VyZS0+dHJhbXBbMF0pOwogICAgIHVuc2lnbmVkIGludCAgX19mdW4gPSAodW5zaWduZWQgaW50KSgmZmZpX2Nsb3N1cmVfU1lTVik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaXRhcmdldC5oCmluZGV4IDFjNzk5YjEuLmQwYzc1ODYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDA5ICBCcmFkbGV5IFNtaXRoIDxicmFkQGJyYWQtc21pdGguY28udWs+CisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDkgIEJyYWRsZXkgU21pdGggPGJyYWRAYnJhZC1zbWl0aC5jby51az4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgQVZSMzIuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CiB0eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7CkBAIC0zNCw4ICszOSw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Nsb3N1cmVzLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jbG9zdXJlcy5jCmluZGV4IDBiMTU2ZTAuLjFiMzc4MjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Nsb3N1cmVzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY2xvc3VyZXMuYwpAQCAtMSw2ICsxLDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBjbG9zdXJlcy5jIC0gQ29weXJpZ2h0IChjKSAyMDA3ICBSZWQgSGF0LCBJbmMuCi0gICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKKyAgIGNsb3N1cmVzLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDksIDIwMTAgIFJlZCBIYXQsIEluYy4KKyAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKKyAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTEgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KIAogICAgQ29kZSB0byBhbGxvY2F0ZSBhbmQgZGVhbGxvY2F0ZSBtZW1vcnkgZm9yIGNsb3N1cmVzLgogCkBAIC0zMiw3ICszMyw3IEBACiAjaW5jbHVkZSA8ZmZpLmg+CiAjaW5jbHVkZSA8ZmZpX2NvbW1vbi5oPgogCi0jaWZuZGVmIEZGSV9NTUFQX0VYRUNfV1JJVAorI2lmICFGRklfTU1BUF9FWEVDX1dSSVQgJiYgIUZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUKICMgaWYgX19nbnVfbGludXhfXwogLyogVGhpcyBtYWNybyBpbmRpY2F0ZXMgaXQgbWF5IGJlIGZvcmJpZGRlbiB0byBtYXAgYW5vbnltb3VzIG1lbW9yeQogICAgd2l0aCBib3RoIHdyaXRlIGFuZCBleGVjdXRlIHBlcm1pc3Npb24uICBDb2RlIGNvbXBpbGVkIHdoZW4gdGhpcwpAQCAtNDQsNyArNDUsNyBAQAogIyAgZGVmaW5lIEZGSV9NTUFQX0VYRUNfV1JJVCAxCiAjICBkZWZpbmUgSEFWRV9NTlRFTlQgMQogIyBlbmRpZgotIyBpZiBkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpCisjIGlmIGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkgfHwgZGVmaW5lZChfX09TMl9fKQogLyogV2luZG93cyBzeXN0ZW1zIG1heSBoYXZlIERhdGEgRXhlY3V0aW9uIFByb3RlY3Rpb24gKERFUCkgZW5hYmxlZCwgCiAgICB3aGljaCByZXF1aXJlcyB0aGUgdXNlIG9mIFZpcnR1YWxNYWxsb2MvVmlydHVhbEZyZWUgdG8gYWxsb2MvZnJlZQogICAgZXhlY3V0YWJsZSBtZW1vcnkuICovCkBAIC02Myw3ICs2NCwxMSBAQAogCiAjaWYgRkZJX0NMT1NVUkVTCiAKLSMgaWYgRkZJX01NQVBfRVhFQ19XUklUCisjIGlmIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUKKworLy8gUGVyLXRhcmdldCBpbXBsZW1lbnRhdGlvbjsgSXQncyB1bmNsZWFyIHdoYXQgY2FuIHJlYXNvbmFibGUgYmUgc2hhcmVkIGJldHdlZW4gdHdvIE9TL2FyY2hpdGVjdHVyZSBpbXBsZW1lbnRhdGlvbnMuCisKKyMgZWxpZiBGRklfTU1BUF9FWEVDX1dSSVQgLyogIUZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgKi8KIAogI2RlZmluZSBVU0VfTE9DS1MgMQogI2RlZmluZSBVU0VfRExfUFJFRklYIDEKQEAgLTE0Niw3ICsxNTEsNyBAQAogICAgICAgcCA9IHN0cmNociAocCArIDEsICcgJyk7CiAgICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICBicmVhazsKLSAgICAgIGlmIChzdHJuY21wIChwICsgMSwgInNlbGludXhmcyAiLCAxMCkgIT0gMCkKKyAgICAgIGlmIChzdHJuY21wIChwICsgMSwgInNlbGludXhmcyAiLCAxMCkgPT0gMCkKICAgICAgICAgewogICAgICAgICAgIGZyZWUgKGJ1Zik7CiAgICAgICAgICAgZmNsb3NlIChmKTsKQEAgLTE2Nyw3ICsxNzIsNyBAQAogCiAjZW5kaWYgLyogIUZGSV9NTUFQX0VYRUNfU0VMSU5VWCAqLwogCi0jZWxpZiBkZWZpbmVkIChfX0NZR1dJTl9fKQorI2VsaWYgZGVmaW5lZCAoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0lOVEVSSVgpCiAKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgogCkBAIC0xOTMsMTEgKzE5OCwxMSBAQAogc3RhdGljIHNpemVfdCBkbG1hbGxvY191c2FibGVfc2l6ZSh2b2lkKikgTUFZQkVfVU5VU0VEOwogc3RhdGljIHZvaWQgZGxtYWxsb2Nfc3RhdHModm9pZCkgTUFZQkVfVU5VU0VEOwogCi0jaWYgIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKQorI2lmICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSB8fCBkZWZpbmVkKF9fT1MyX18pKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fSU5URVJJWCkKIC8qIFVzZSB0aGVzZSBmb3IgbW1hcCBhbmQgbXVubWFwIHdpdGhpbiBkbG1hbGxvYy5jLiAgKi8KIHN0YXRpYyB2b2lkICpkbG1tYXAodm9pZCAqLCBzaXplX3QsIGludCwgaW50LCBpbnQsIG9mZl90KTsKIHN0YXRpYyBpbnQgZGxtdW5tYXAodm9pZCAqLCBzaXplX3QpOwotI2VuZGlmIC8qICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykgKi8KKyNlbmRpZiAvKiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkgfHwgZGVmaW5lZChfX09TMl9fKSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0lOVEVSSVgpICovCiAKICNkZWZpbmUgbW1hcCBkbG1tYXAKICNkZWZpbmUgbXVubWFwIGRsbXVubWFwCkBAIC0yMDcsNyArMjEyLDcgQEAKICN1bmRlZiBtbWFwCiAjdW5kZWYgbXVubWFwCiAKLSNpZiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pCisjaWYgIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpIHx8IGRlZmluZWQoX19PUzJfXykpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX19JTlRFUklYKQogCiAvKiBBIG11dGV4IHVzZWQgdG8gc3luY2hyb25pemUgYWNjZXNzIHRvICpleGVjKiB2YXJpYWJsZXMgaW4gdGhpcyBmaWxlLiAgKi8KIHN0YXRpYyBwdGhyZWFkX211dGV4X3Qgb3Blbl90ZW1wX2V4ZWNfZmlsZV9tdXRleCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CkBAIC0yOTQsNyArMjk5LDcgQEAKICAgICAgIHN0cnVjdCBtbnRlbnQgbW50OwogICAgICAgY2hhciBidWZbTUFYUEFUSExFTiAqIDNdOwogCi0gICAgICBpZiAoZ2V0bW50ZW50X3IgKGxhc3RfbW50ZW50LCAmbW50LCBidWYsIHNpemVvZiAoYnVmKSkpCisgICAgICBpZiAoZ2V0bW50ZW50X3IgKGxhc3RfbW50ZW50LCAmbW50LCBidWYsIHNpemVvZiAoYnVmKSkgPT0gTlVMTCkKIAlyZXR1cm4gLTE7CiAKICAgICAgIGlmIChoYXNtbnRvcHQgKCZtbnQsICJybyIpCkBAIC01MjIsNyArNTI3LDcgQEAKIH0KICNlbmRpZgogCi0jZW5kaWYgLyogIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKSAqLworI2VuZGlmIC8qICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSB8fCBkZWZpbmVkKF9fT1MyX18pKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fSU5URVJJWCkgKi8KIAogLyogQWxsb2NhdGUgYSBjaHVuayBvZiBtZW1vcnkgd2l0aCB0aGUgZ2l2ZW4gc2l6ZS4gIFJldHVybnMgYSBwb2ludGVyCiAgICB0byB0aGUgd3JpdGFibGUgYWRkcmVzcywgYW5kIHNldHMgKkNPREUgdG8gdGhlIGV4ZWN1dGFibGUKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaS5jCmluZGV4IGU5YzM5NTMuLmFhY2E1YjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZmkuYwpAQCAtMTUzLDIxICsxNTMsMjQgQEAKICAgcmV0dXJuIChzdHJ1Y3RfY291bnQpOwogfQogCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9jaWYgKGZmaV9jaWYgKiBjaWYsCi0JICAgICAgZmZpX2FiaSBhYmksIHVuc2lnbmVkIGludCBuYXJncywKLQkgICAgICBmZmlfdHlwZSAqIHJ0eXBlLCBmZmlfdHlwZSAqKiBhdHlwZXMpCitmZmlfc3RhdHVzIEZGSV9ISURERU4KK2ZmaV9wcmVwX2NpZl9jb3JlIChmZmlfY2lmICogY2lmLAorCSAgICAgICAgICAgZmZpX2FiaSBhYmksIHVuc2lnbmVkIGludCBpc3ZhcmlhZGljLAorCQkgICB1bnNpZ25lZCBpbnQgbmZpeGVkYXJncywgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MsCisJICAgICAgICAgICBmZmlfdHlwZSAqIHJ0eXBlLCBmZmlfdHlwZSAqKiBhdHlwZXMpCiB7CiAgIHVuc2lnbmVkIGJ5dGVzID0gMDsKICAgdW5zaWduZWQgaW50IGk7CiAgIGZmaV90eXBlICoqcHRyOwogCiAgIEZGSV9BU1NFUlQgKGNpZiAhPSBOVUxMKTsKLSAgRkZJX0FTU0VSVCAoKGFiaSA+IEZGSV9GSVJTVF9BQkkpICYmIChhYmkgPD0gRkZJX0RFRkFVTFRfQUJJKSk7CisgIEZGSV9BU1NFUlQoKCFpc3ZhcmlhZGljKSB8fCAobmZpeGVkYXJncyA+PSAxKSk7CisgIEZGSV9BU1NFUlQobmZpeGVkYXJncyA8PSBudG90YWxhcmdzKTsKKyAgRkZJX0FTU0VSVCAoYWJpID4gRkZJX0ZJUlNUX0FCSSAmJiBhYmkgPCBGRklfTEFTVF9BQkkpOwogCiAgIGNpZi0+YWJpID0gYWJpOwogICBjaWYtPmFyZ190eXBlcyA9IGF0eXBlczsKLSAgY2lmLT5uYXJncyA9IG5hcmdzOworICBjaWYtPm5hcmdzID0gbnRvdGFsYXJnczsKICAgY2lmLT5ydHlwZSA9IHJ0eXBlOwogCiAgIGNpZi0+ZmxhZ3MgPSAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpdGFyZ2V0LmgKaW5kZXggNDI1N2YxMC4uYjgzN2U5NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIENSSVMuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CiB0eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7CkBAIC0zNCw4ICszOSw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCmluZGV4IDU4MmRkYzMuLjI3NzM5NTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYwpAQCAtNDY0LDYgKzQ2NCwxNCBAQAogI2RlZmluZSBfR05VX1NPVVJDRSAxCiAjZW5kaWYgIC8qIFdJTjMyICovCiAKKyNpZmRlZiBfX09TMl9fCisjZGVmaW5lIElOQ0xfRE9TCisjaW5jbHVkZSA8b3MyLmg+CisjZGVmaW5lIEhBVkVfTU1BUCAxCisjZGVmaW5lIEhBVkVfTU9SRUNPUkUgMAorI2RlZmluZSBMQUNLU19TWVNfTU1BTl9ICisjZW5kaWYgIC8qIF9fT1MyX18gKi8KKwogI2lmIGRlZmluZWQoREFSV0lOKSB8fCBkZWZpbmVkKF9EQVJXSU4pCiAvKiBNYWMgT1NYIGRvY3MgYWR2aXNlIG5vdCB0byB1c2Ugc2JyazsgaXQgc2VlbXMgYmV0dGVyIHRvIHVzZSBtbWFwICovCiAjaWZuZGVmIEhBVkVfTU9SRUNPUkUKQEAgLTYxOSw2ICs2MjcsOSBAQAogI2luY2x1ZGUgIi91c3IvaW5jbHVkZS9tYWxsb2MuaCIKICNlbHNlIC8qIEhBVkVfVVNSX0lOQ0xVREVfTUFMTE9DX0ggKi8KIAorLyogSFAtVVgncyBzdGRsaWIuaCByZWRlZmluZXMgbWFsbGluZm8gdW5sZXNzIF9TVFJVQ1RfTUFMTElORk8gaXMgZGVmaW5lZCAqLworI2RlZmluZSBfU1RSVUNUX01BTExJTkZPCisKIHN0cnVjdCBtYWxsaW5mbyB7CiAgIE1BTExJTkZPX0ZJRUxEX1RZUEUgYXJlbmE7ICAgIC8qIG5vbi1tbWFwcGVkIHNwYWNlIGFsbG9jYXRlZCBmcm9tIHN5c3RlbSAqLwogICBNQUxMSU5GT19GSUVMRF9UWVBFIG9yZGJsa3M7ICAvKiBudW1iZXIgb2YgZnJlZSBjaHVua3MgKi8KQEAgLTEyOTMsNyArMTMwNCw3IEBACiAjZGVmaW5lIElTX01NQVBQRURfQklUICAgICAgIChTSVpFX1RfT05FKQogI2RlZmluZSBVU0VfTU1BUF9CSVQgICAgICAgICAoU0laRV9UX09ORSkKIAotI2lmbmRlZiBXSU4zMgorI2lmICFkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZCAoX19PUzJfXykKICNkZWZpbmUgQ0FMTF9NVU5NQVAoYSwgcykgICAgbXVubWFwKChhKSwgKHMpKQogI2RlZmluZSBNTUFQX1BST1QgICAgICAgICAgICAoUFJPVF9SRUFEfFBST1RfV1JJVEUpCiAjaWYgIWRlZmluZWQoTUFQX0FOT05ZTU9VUykgJiYgZGVmaW5lZChNQVBfQU5PTikKQEAgLTEzMTYsNiArMTMyNyw0MiBAQAogI2VuZGlmIC8qIE1BUF9BTk9OWU1PVVMgKi8KIAogI2RlZmluZSBESVJFQ1RfTU1BUChzKSAgICAgICBDQUxMX01NQVAocykKKworI2VsaWYgZGVmaW5lZChfX09TMl9fKQorCisvKiBPUy8yIE1NQVAgdmlhIERvc0FsbG9jTWVtICovCitzdGF0aWMgdm9pZCogb3MybW1hcChzaXplX3Qgc2l6ZSkgeworICB2b2lkKiBwdHI7CisgIGlmIChEb3NBbGxvY01lbSgmcHRyLCBzaXplLCBPQkpfQU5ZfFBBR19DT01NSVR8UEFHX1JFQUR8UEFHX1dSSVRFKSAmJgorICAgICAgRG9zQWxsb2NNZW0oJnB0ciwgc2l6ZSwgUEFHX0NPTU1JVHxQQUdfUkVBRHxQQUdfV1JJVEUpKQorICAgIHJldHVybiBNRkFJTDsKKyAgcmV0dXJuIHB0cjsKK30KKworI2RlZmluZSBvczJkaXJlY3RfbW1hcChuKSAgICAgb3MybW1hcChuKQorCisvKiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHJlbGVhc2luZyBjb2FsZXNlZCBzZWdtZW50cyAqLworc3RhdGljIGludCBvczJtdW5tYXAodm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkgeworICB3aGlsZSAoc2l6ZSkgeworICAgIFVMT05HIHVsU2l6ZSA9IHNpemU7CisgICAgVUxPTkcgdWxGbGFncyA9IDA7CisgICAgaWYgKERvc1F1ZXJ5TWVtKHB0ciwgJnVsU2l6ZSwgJnVsRmxhZ3MpICE9IDApCisgICAgICByZXR1cm4gLTE7CisgICAgaWYgKCh1bEZsYWdzICYgUEFHX0JBU0UpID09IDAgfHwodWxGbGFncyAmIFBBR19DT01NSVQpID09IDAgfHwKKyAgICAgICAgdWxTaXplID4gc2l6ZSkKKyAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoRG9zRnJlZU1lbShwdHIpICE9IDApCisgICAgICByZXR1cm4gLTE7CisgICAgcHRyID0gKCB2b2lkICogKSAoICggY2hhciAqICkgcHRyICsgdWxTaXplICk7CisgICAgc2l6ZSAtPSB1bFNpemU7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgQ0FMTF9NTUFQKHMpICAgICAgICAgb3MybW1hcChzKQorI2RlZmluZSBDQUxMX01VTk1BUChhLCBzKSAgICBvczJtdW5tYXAoKGEpLCAocykpCisjZGVmaW5lIERJUkVDVF9NTUFQKHMpICAgICAgIG9zMmRpcmVjdF9tbWFwKHMpCisKICNlbHNlIC8qIFdJTjMyICovCiAKIC8qIFdpbjMyIE1NQVAgdmlhIFZpcnR1YWxBbGxvYyAqLwpAQCAtMTM5Miw3ICsxNDM5LDcgQEAKICAgICB1bmlxdWUgbXBhcmFtcyB2YWx1ZXMgYXJlIGluaXRpYWxpemVkIG9ubHkgb25jZS4KICovCiAKLSNpZm5kZWYgV0lOMzIKKyNpZiAhZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19PUzJfXykKIC8qIEJ5IGRlZmF1bHQgdXNlIHBvc2l4IGxvY2tzICovCiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2RlZmluZSBNTE9DS19UIHB0aHJlYWRfbXV0ZXhfdApAQCAtMTQwNiw2ICsxNDUzLDE2IEBACiAKIHN0YXRpYyBNTE9DS19UIG1hZ2ljX2luaXRfbXV0ZXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwogCisjZWxpZiBkZWZpbmVkKF9fT1MyX18pCisjZGVmaW5lIE1MT0NLX1QgSE1UWAorI2RlZmluZSBJTklUSUFMX0xPQ0sobCkgICAgICBEb3NDcmVhdGVNdXRleFNlbSgwLCBsLCAwLCBGQUxTRSkKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKGwpICAgICAgRG9zUmVxdWVzdE11dGV4U2VtKCpsLCBTRU1fSU5ERUZJTklURV9XQUlUKQorI2RlZmluZSBSRUxFQVNFX0xPQ0sobCkgICAgICBEb3NSZWxlYXNlTXV0ZXhTZW0oKmwpCisjaWYgSEFWRV9NT1JFQ09SRQorc3RhdGljIE1MT0NLX1QgbW9yZWNvcmVfbXV0ZXg7CisjZW5kaWYgLyogSEFWRV9NT1JFQ09SRSAqLworc3RhdGljIE1MT0NLX1QgbWFnaWNfaW5pdF9tdXRleDsKKwogI2Vsc2UgLyogV0lOMzIgKi8KIC8qCiAgICBCZWNhdXNlIGxvY2stcHJvdGVjdGVkIHJlZ2lvbnMgaGF2ZSBib3VuZGVkIHRpbWVzLCBhbmQgdGhlcmUKQEAgLTI0OTcsMTAgKzI1NTQsMTUgQEAKICAgICB9CiAgICAgUkVMRUFTRV9NQUdJQ19JTklUX0xPQ0soKTsKIAotI2lmbmRlZiBXSU4zMgorI2lmICFkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChfX09TMl9fKQogICAgIG1wYXJhbXMucGFnZV9zaXplID0gbWFsbG9jX2dldHBhZ2VzaXplOwogICAgIG1wYXJhbXMuZ3JhbnVsYXJpdHkgPSAoKERFRkFVTFRfR1JBTlVMQVJJVFkgIT0gMCk/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX0dSQU5VTEFSSVRZIDogbXBhcmFtcy5wYWdlX3NpemUpOworI2VsaWYgZGVmaW5lZCAoX19PUzJfXykKKyAvKiBpZiBsb3ctbWVtb3J5IGlzIHVzZWQsIG9zMm11bm1hcCgpIHdvdWxkIGJyZWFrCisgICAgaWYgaXQgd2VyZSBhbnl0aGluZyBvdGhlciB0aGFuIDY0ayAqLworICAgIG1wYXJhbXMucGFnZV9zaXplID0gNDA5NnU7CisgICAgbXBhcmFtcy5ncmFudWxhcml0eSA9IDY1NTM2dTsKICNlbHNlIC8qIFdJTjMyICovCiAgICAgewogICAgICAgU1lTVEVNX0lORk8gc3lzdGVtX2luZm87CkBAIC00MTk3LDcgKzQyNTksNyBAQAogCiB2b2lkIGRsZnJlZSh2b2lkKiBtZW0pIHsKICAgLyoKLSAgICAgQ29uc29saWRhdGUgZnJlZWQgY2h1bmtzIHdpdGggcHJlY2VlZGluZyBvciBzdWNjZWVkaW5nIGJvcmRlcmluZworICAgICBDb25zb2xpZGF0ZSBmcmVlZCBjaHVua3Mgd2l0aCBwcmVjZWRpbmcgb3Igc3VjY2VlZGluZyBib3JkZXJpbmcKICAgICAgZnJlZSBjaHVua3MsIGlmIHRoZXkgZXhpc3QsIGFuZCB0aGVuIHBsYWNlIGluIGEgYmluLiAgSW50ZXJtaXhlZAogICAgICB3aXRoIHNwZWNpYWwgY2FzZXMgZm9yIHRvcCwgZHYsIG1tYXBwZWQgY2h1bmtzLCBhbmQgdXNhZ2UgZXJyb3JzLgogICAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZnJ2L2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZnJ2L2ZmaXRhcmdldC5oCmluZGV4IDFjMzE5ZWEuLmQ0MjU0MGUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Zydi9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9mcnYvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwNCAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDQgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgRlItVgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIExJQkZGSV9BU00KQEAgLTM1LDEzICs0MCw5IEBACiAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCi0KLSNpZmRlZiBGUlYKICAgRkZJX0VBQkksCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9FQUJJLAotI2VuZGlmCi0KLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9FQUJJCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpLmMKaW5kZXggM2Y4ZmNjNS4uOTUzM2VmNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaS5jCkBAIC0xLDYgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDA3LCAyMDA4IFJlZCBIYXQsIEluYy4KKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDA3LCAyMDA4LCAyMDEyIFJlZCBIYXQsIEluYy4KIAkgICBDb3B5cmlnaHQgKGMpIDIwMDAgSGV3bGV0dCBQYWNrYXJkIENvbXBhbnkKKwkgICBDb3B5cmlnaHQgKGMpIDIwMTEgQW50aG9ueSBHcmVlbgogICAgCiAgICBJQTY0IEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC0yMjUsNyArMjI2LDcgQEAKICAgaW50IGZsYWdzOwogCiAgIC8qIEFkanVzdCBjaWYtPmJ5dGVzIHRvIGluY2x1ZGUgc3BhY2UgZm9yIHRoZSBiaXRzIG9mIHRoZSBpYTY0X2FyZ3MgZnJhbWUKLSAgICAgdGhhdCBwcmVjZWVkcyB0aGUgaW50ZWdlciByZWdpc3RlciBwb3J0aW9uLiAgVGhlIGVzdGltYXRlIHRoYXQgdGhlIAorICAgICB0aGF0IHByZWNlZGVzIHRoZSBpbnRlZ2VyIHJlZ2lzdGVyIHBvcnRpb24uICBUaGUgZXN0aW1hdGUgdGhhdCB0aGUKICAgICAgZ2VuZXJpYyBiaXRzIGRpZCBmb3IgdGhlIGFyZ3VtZW50IHNwYWNlIHJlcXVpcmVkIGlzIGdvb2QgZW5vdWdoIGZvciB0aGUKICAgICAgaW50ZWdlciBjb21wb25lbnQuICAqLwogICBjaWYtPmJ5dGVzICs9IG9mZnNldG9mKHN0cnVjdCBpYTY0X2FyZ3MsIGdwX3JlZ3NbMF0pOwpAQCAtMzI0LDEzICszMjUsMTcgQEAKIAljYXNlIEZGSV9UWVBFX0ZMT0FUOgogCSAgaWYgKGdwY291bnQgPCA4ICYmIGZwY291bnQgPCA4KQogCSAgICBzdGZfc3BpbGwgKCZzdGFjay0+ZnBfcmVnc1tmcGNvdW50KytdLCAqKGZsb2F0ICopYXZhbHVlW2ldKTsKLQkgIHN0YWNrLT5ncF9yZWdzW2dwY291bnQrK10gPSAqKFVJTlQzMiAqKWF2YWx1ZVtpXTsKKwkgIHsKKwkgICAgVUlOVDMyIHRtcDsKKwkgICAgbWVtY3B5ICgmdG1wLCBhdmFsdWVbaV0sIHNpemVvZiAoVUlOVDMyKSk7CisJICAgIHN0YWNrLT5ncF9yZWdzW2dwY291bnQrK10gPSB0bXA7CisJICB9CiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgogCSAgaWYgKGdwY291bnQgPCA4ICYmIGZwY291bnQgPCA4KQogCSAgICBzdGZfc3BpbGwgKCZzdGFjay0+ZnBfcmVnc1tmcGNvdW50KytdLCAqKGRvdWJsZSAqKWF2YWx1ZVtpXSk7Ci0JICBzdGFjay0+Z3BfcmVnc1tncGNvdW50KytdID0gKihVSU5UNjQgKilhdmFsdWVbaV07CisJICBtZW1jcHkgKCZzdGFjay0+Z3BfcmVnc1tncGNvdW50KytdLCBhdmFsdWVbaV0sIHNpemVvZiAoVUlOVDY0KSk7CiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKQEAgLTQyNSw3ICs0MzAsOCBAQAogICBzdHJ1Y3QgZmZpX2lhNjRfdHJhbXBvbGluZV9zdHJ1Y3QgKnRyYW1wOwogICBzdHJ1Y3QgaWE2NF9mZCAqZmQ7CiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1VOSVgpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1VOSVgpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgIHRyYW1wID0gKHN0cnVjdCBmZmlfaWE2NF90cmFtcG9saW5lX3N0cnVjdCAqKWNsb3N1cmUtPnRyYW1wOwogICBmZCA9IChzdHJ1Y3QgaWE2NF9mZCAqKSh2b2lkICopZmZpX2Nsb3N1cmVfdW5peDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaXRhcmdldC5oCmluZGV4IGQ4NWMwNDkuLmU2OGNlYTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBJQS02NC4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgICAgICAgICBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7CkBAIC0zNCw4ICszOSw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfVU5JWCwgICAJLyogTGludXggYW5kIGFsbCBVbml4IHZhcmlhbnRzIHVzZSB0aGUgc2FtZSBjb252ZW50aW9ucwkqLwotICBGRklfREVGQVVMVF9BQkkgPSBGRklfVU5JWCwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9VTklYCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvamF2YV9yYXdfYXBpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9qYXZhX3Jhd19hcGkuYwppbmRleCA5YzUzODNlLi41MjJjOGJmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9qYXZhX3Jhd19hcGkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9qYXZhX3Jhd19hcGkuYwpAQCAtMzExLDcgKzMxMSw3IEBACiAgIGZmaV9yYXdfY2xvc3VyZSAqY2wgPSAoZmZpX3Jhd19jbG9zdXJlKil1c2VyX2RhdGE7CiAKICAgZmZpX2phdmFfcHRyYXJyYXlfdG9fcmF3IChjaWYsIGF2YWx1ZSwgcmF3KTsKLSAgKCpjbC0+ZnVuKSAoY2lmLCBydmFsdWUsIHJhdywgY2wtPnVzZXJfZGF0YSk7CisgICgqY2wtPmZ1bikgKGNpZiwgcnZhbHVlLCAoZmZpX3JhdyopcmF3LCBjbC0+dXNlcl9kYXRhKTsKICAgZmZpX2phdmFfcmF3X3RvX3J2YWx1ZSAoY2lmLCBydmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tMzJyL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTMyci9mZml0YXJnZXQuaAppbmRleCA2YTc2MWY2Li42YzM0ODAxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tMzJyL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL20zMnIvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMDQgIFJlbmVzYXMgVGVjaG5vbG9neS4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwNCAgUmVuZXNhcyBUZWNobm9sb2d5LgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBNMzJSLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI2LDYgKzI3LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIEdlbmVyaWMgdHlwZSBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIExJQkZGSV9BU00KQEAgLTM2LDggKzQxLDggQEAKICAgewogICAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICAgIEZGSV9TWVNWLAotICAgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICAgIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgICBGRklfTEFTVF9BQkksCisgICAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKICAgfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaS5jCmluZGV4IDYwMGNmMjAuLjM3YTA3ODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZmkuYwpAQCAtMSw3ICsxLDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBmZmkuYwotICAgCi0gICBtNjhrIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAorCisgICBtNjhrIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaW5jbHVkZSA8ZmZpLmg+CkBAIC05LDggKzksMTcgQEAKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2lmZGVmIF9fcnRlbXNfXwordm9pZCBydGVtc19jYWNoZV9mbHVzaF9tdWx0aXBsZV9kYXRhX2xpbmVzKCBjb25zdCB2b2lkICosIHNpemVfdCApOworI2Vsc2UKICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorI2lmZGVmIF9fTUlOVF9fCisjaW5jbHVkZSA8bWludC9taW50YmluZC5oPgorI2luY2x1ZGUgPG1pbnQvc3N5c3RlbS5oPgorI2Vsc2UKICNpbmNsdWRlIDxhc20vY2FjaGVjdGwuaD4KKyNlbmRpZgorI2VuZGlmCiAKIHZvaWQgZmZpX2NhbGxfU1lTViAoZXh0ZW5kZWRfY2lmICosCiAJCSAgICB1bnNpZ25lZCwgdW5zaWduZWQsCkBAIC0zNSw4ICs0NCwxMiBAQAogCiAgIGFyZ3AgPSBzdGFjazsKIAotICBpZiAoZWNpZi0+Y2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgICYmICFlY2lmLT5jaWYtPmZsYWdzKQorICBpZiAoCisjaWZkZWYgX19NSU5UX18KKyAgICAgIChlY2lmLT5jaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUpIHx8CisjZW5kaWYKKyAgICAgICgoKGVjaWYtPmNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorICAgICAgICAmJiAhZWNpZi0+Y2lmLT5mbGFncykpKQogICAgIHN0cnVjdF92YWx1ZV9wdHIgPSBlY2lmLT5ydmFsdWU7CiAgIGVsc2UKICAgICBzdHJ1Y3RfdmFsdWVfcHRyID0gTlVMTDsKQEAgLTQ3LDEyICs2MCwxMiBAQAogICAgICAgIGkgIT0gMDsKICAgICAgICBpLS0sIHBfYXJnKyspCiAgICAgewotICAgICAgc2l6ZV90IHo7CisgICAgICBzaXplX3QgeiA9ICgqcF9hcmcpLT5zaXplOworICAgICAgaW50IHR5cGUgPSAoKnBfYXJnKS0+dHlwZTsKIAotICAgICAgeiA9ICgqcF9hcmcpLT5zaXplOwogICAgICAgaWYgKHogPCBzaXplb2YgKGludCkpCiAJewotCSAgc3dpdGNoICgoKnBfYXJnKS0+dHlwZSkKKwkgIHN3aXRjaCAodHlwZSkKIAkgICAgewogCSAgICBjYXNlIEZGSV9UWVBFX1NJTlQ4OgogCSAgICAgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpICooU0lOVDggKikgKnBfYXJndjsKQEAgLTcxLDcgKzg0LDE0IEBACiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisjaWZkZWYgX19NSU5UX18KKwkgICAgICBpZiAoeiA9PSAxIHx8IHogPT0gMikKKwkJbWVtY3B5IChhcmdwICsgMiwgKnBfYXJndiwgeik7CisgICAgICAgICAgICAgIGVsc2UKKwkJbWVtY3B5IChhcmdwLCAqcF9hcmd2LCB6KTsKKyNlbHNlCiAJICAgICAgbWVtY3B5IChhcmdwICsgc2l6ZW9mIChpbnQpIC0geiwgKnBfYXJndiwgeik7CisjZW5kaWYKIAkgICAgICBicmVhazsKIAogCSAgICBkZWZhdWx0OgpAQCAtMTE2LDE3ICsxMzYsMzQgQEAKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisgICAgICBpZiAoY2lmLT5ydHlwZS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUICYmCisgICAgICAgICAgY2lmLT5ydHlwZS0+ZWxlbWVudHNbMV0pCisgICAgICAgIHsKKyAgICAgICAgICBjaWYtPmZsYWdzID0gMDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICBzd2l0Y2ggKGNpZi0+cnR5cGUtPnNpemUpCiAJewogCWNhc2UgMToKKyNpZmRlZiBfX01JTlRfXworCSAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19TVFJVQ1QyOworI2Vsc2UKIAkgIGNpZi0+ZmxhZ3MgPSBDSUZfRkxBR1NfU1RSVUNUMTsKKyNlbmRpZgogCSAgYnJlYWs7CiAJY2FzZSAyOgogCSAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19TVFJVQ1QyOwogCSAgYnJlYWs7CisjaWZkZWYgX19NSU5UX18KKwljYXNlIDM6CisjZW5kaWYKIAljYXNlIDQ6CiAJICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX0lOVDsKIAkgIGJyZWFrOworI2lmZGVmIF9fTUlOVF9fCisJY2FzZSA3OgorI2VuZGlmCiAJY2FzZSA4OgogCSAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19ESU5UOwogCSAgYnJlYWs7CkBAIC0xNDQsOSArMTgxLDE1IEBACiAgICAgICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX0RPVUJMRTsKICAgICAgIGJyZWFrOwogCisjaWYgKEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFKQogICAgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKKyNpZmRlZiBfX01JTlRfXworICAgICAgY2lmLT5mbGFncyA9IDA7CisjZWxzZQogICAgICAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19MRE9VQkxFOworI2VuZGlmCiAgICAgICBicmVhazsKKyNlbmRpZgogCiAgICAgY2FzZSBGRklfVFlQRV9QT0lOVEVSOgogICAgICAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19QT0lOVEVSOwpAQCAtMjEyLDYgKzI1NSwyNiBAQAogICAgICAgc2l6ZV90IHo7CiAKICAgICAgIHogPSAoKnBfYXJnKS0+c2l6ZTsKKyNpZmRlZiBfX01JTlRfXworICAgICAgaWYgKGNpZi0+ZmxhZ3MgJiYKKyAgICAgICAgICBjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCAmJgorICAgICAgICAgICh6ID09IDEgfHwgeiA9PSAyKSkKKyAJeworCSAgKnBfYXJndiA9ICh2b2lkICopIChhcmdwICsgMik7CisKKwkgIHogPSA0OworCX0KKyAgICAgIGVsc2UKKyAgICAgIGlmIChjaWYtPmZsYWdzICYmCisgICAgICAgICAgY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QgJiYKKyAgICAgICAgICAoeiA9PSAzIHx8IHogPT0gNCkpCisgCXsKKwkgICpwX2FyZ3YgPSAodm9pZCAqKSAoYXJncCk7CisKKwkgIHogPSA0OworCX0KKyAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgaWYgKHogPD0gNCkKIAl7CiAJICAqcF9hcmd2ID0gKHZvaWQgKikgKGFyZ3AgKyA0IC0geik7CkBAIC0yNTUsMTkgKzMxOCwzMSBAQAogCQkgICAgICB2b2lkICp1c2VyX2RhdGEsCiAJCSAgICAgIHZvaWQgKmNvZGVsb2MpCiB7Ci0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9TWVNWKTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9TWVNWKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICAqKHVuc2lnbmVkIHNob3J0ICopY2xvc3VyZS0+dHJhbXAgPSAweDIwN2M7CiAgICoodm9pZCAqKikoY2xvc3VyZS0+dHJhbXAgKyAyKSA9IGNvZGVsb2M7CiAgICoodW5zaWduZWQgc2hvcnQgKikoY2xvc3VyZS0+dHJhbXAgKyA2KSA9IDB4NGVmOTsKLSAgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0gICAgICAmJiAhY2lmLT5mbGFncykKKworICBpZiAoCisjaWZkZWYgX19NSU5UX18KKyAgICAgIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUpIHx8CisjZW5kaWYKKyAgICAgICgoKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorICAgICAgICAgJiYgIWNpZi0+ZmxhZ3MpKSkKICAgICAqKHZvaWQgKiopKGNsb3N1cmUtPnRyYW1wICsgOCkgPSBmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVjsKICAgZWxzZQogICAgICoodm9pZCAqKikoY2xvc3VyZS0+dHJhbXAgKyA4KSA9IGZmaV9jbG9zdXJlX1NZU1Y7CiAKKyNpZmRlZiBfX3J0ZW1zX18KKyAgcnRlbXNfY2FjaGVfZmx1c2hfbXVsdGlwbGVfZGF0YV9saW5lcyggY29kZWxvYywgRkZJX1RSQU1QT0xJTkVfU0laRSApOworI2VsaWYgZGVmaW5lZChfX01JTlRfXykKKyAgU3N5c3RlbShTX0ZMVVNIQ0FDSEUsIGNvZGVsb2MsIEZGSV9UUkFNUE9MSU5FX1NJWkUpOworI2Vsc2UKICAgc3lzY2FsbChTWVNfY2FjaGVmbHVzaCwgY29kZWxvYywgRkxVU0hfU0NPUEVfTElORSwKIAkgIEZMVVNIX0NBQ0hFX0JPVEgsIEZGSV9UUkFNUE9MSU5FX1NJWkUpOworI2VuZGlmCiAKICAgY2xvc3VyZS0+Y2lmICA9IGNpZjsKICAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwpAQCAtMjc1LDQgKzM1MCwzIEBACiAKICAgcmV0dXJuIEZGSV9PSzsKIH0KLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpdGFyZ2V0LmgKaW5kZXggNjMzNzE3Yi4uZTgxZGRlMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIE1vdG9yb2xhIDY4Sy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKQEAgLTM0LDggKzM5LDggQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9TWVNWLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9zeXN2LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL3N5c3YuUwppbmRleCA1ODgyMmUwLi5mNmY0ZWY5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL3N5c3YuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL3N5c3YuUwpAQCAtMSw1ICsxLDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBzeXN2LlMgLSBDb3B5cmlnaHQgKGMpIDE5OTggQW5kcmVhcyBTY2h3YWIKKwkKKyAgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMjAxMiBBbGFuIEhvdXJpaGFuZQorCSAgICBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMTIgQW5kcmVhcyBTY2h3YWIKIAkgICAgQ29weXJpZ2h0IChjKSAyMDA4IFJlZCBIYXQsIEluYy4gCiAgICAKICAgIG02OGsgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCkBAIC00MSwxMyArNDMsMTkgQEAKICNkZWZpbmUgQ0ZJX0VORFBST0MoKQogI2VuZGlmCiAKKyNpZmRlZiBfX01JTlRfXworI2RlZmluZSBDQUxMRlVOQyhmdW5jbmFtZSkgXyAjIyBmdW5jbmFtZQorI2Vsc2UKKyNkZWZpbmUgQ0FMTEZVTkMoZnVuY25hbWUpIGZ1bmNuYW1lCisjZW5kaWYKKwogCS50ZXh0CiAKLQkuZ2xvYmwJZmZpX2NhbGxfU1lTVgotCS50eXBlCWZmaV9jYWxsX1NZU1YsQGZ1bmN0aW9uCisJLmdsb2JsCUNBTExGVU5DKGZmaV9jYWxsX1NZU1YpCisJLnR5cGUJQ0FMTEZVTkMoZmZpX2NhbGxfU1lTViksQGZ1bmN0aW9uCiAJLmFsaWduCTQKIAotZmZpX2NhbGxfU1lTVjoKK0NBTExGVU5DKGZmaV9jYWxsX1NZU1YpOgogCUNGSV9TVEFSVFBST0MoKQogCWxpbmsJJWZwLCMwCiAJQ0ZJX09GRlNFVCgxNCwtOCkKQEAgLTYyLDE0ICs3MCwxOCBAQAogCW1vdmUubAk4KCVmcCksLSglc3ApCiAJcGVhCTQoJXNwKQogI2lmICFkZWZpbmVkIF9fUElDX18KLQlqc3IJZmZpX3ByZXBfYXJncworCWpzcglDQUxMRlVOQyhmZmlfcHJlcF9hcmdzKQogI2Vsc2UKLQlic3IubAlmZmlfcHJlcF9hcmdzQFBMVFBDCisJYnNyLmwJQ0FMTEZVTkMoZmZpX3ByZXBfYXJnc0BQTFRQQykKICNlbmRpZgogCWFkZHEubAkjOCwlc3AJCiAKIAl8IFBhc3MgcG9pbnRlciB0byBzdHJ1Y3QgdmFsdWUsIGlmIGFueQorI2lmZGVmIF9fTUlOVF9fCisJbW92ZS5sCSVkMCwlYTEKKyNlbHNlCiAJbW92ZS5sCSVhMCwlYTEKKyNlbmRpZgogCiAJfCBDYWxsIHRoZSBmdW5jdGlvbgogCW1vdmUubAkyNCglZnApLCVhMApAQCAtODUsNyArOTcsMTIgQEAKIAltb3ZlLmwJMTYoJWZwKSwlZDIKIAogCXwgSWYgdGhlIHJldHVybiB2YWx1ZSBwb2ludGVyIGlzIE5VTEwsIGFzc3VtZSBubyByZXR1cm4gdmFsdWUuCisJfCBOT1RFOiBPbiB0aGUgbWM2ODAwMCwgdHN0IG9uIGFuIGFkZHJlc3MgcmVnaXN0ZXIgaXMgbm90IHN1cHBvcnRlZC4KKyNpZiAhZGVmaW5lZChfX21jNjgwMjBfXykgJiYgIWRlZmluZWQoX19tYzY4MDMwX18pICYmICFkZWZpbmVkKF9fbWM2ODA0MF9fKSAmJiAhZGVmaW5lZChfX21jNjgwNjBfXykgJiYgIWRlZmluZWQoX19tY29sZGZpcmVfXykKKwljbXAudwkjMCwgJWExCisjZWxzZQogCXRzdC5sCSVhMQorI2VuZGlmCiAJamJlcQlub3JldHZhbAogCiAJYnRzdAkjMCwlZDIKQEAgLTEwMywyNSArMTIwLDQ0IEBACiByZXRmbG9hdDoKIAlidHN0CSMyLCVkMgogCWpiZXEJcmV0ZG91YmxlCisjaWYgZGVmaW5lZChfX01DNjg4ODFfXykgfHwgZGVmaW5lZChfX0hBVkVfNjg4ODFfXykKIAlmbW92ZS5zCSVmcDAsKCVhMSkKKyNlbHNlCisJbW92ZS5sCSVkMCwoJWExKQorI2VuZGlmCiAJamJyYQllcGlsb2d1ZQogCiByZXRkb3VibGU6CiAJYnRzdAkjMywlZDIKIAlqYmVxCXJldGxvbmdkb3VibGUKKyNpZiBkZWZpbmVkKF9fTUM2ODg4MV9fKSB8fCBkZWZpbmVkKF9fSEFWRV82ODg4MV9fKQogCWZtb3ZlLmQJJWZwMCwoJWExKQorI2Vsc2UKKwltb3ZlLmwJJWQwLCglYTEpKworCW1vdmUubAklZDEsKCVhMSkKKyNlbmRpZgogCWpicmEJZXBpbG9ndWUKIAogcmV0bG9uZ2RvdWJsZToKIAlidHN0CSM0LCVkMgogCWpiZXEJcmV0cG9pbnRlcgorI2lmIGRlZmluZWQoX19NQzY4ODgxX18pIHx8IGRlZmluZWQoX19IQVZFXzY4ODgxX18pCiAJZm1vdmUueAklZnAwLCglYTEpCisjZWxzZQorCW1vdmUubAklZDAsKCVhMSkrCisJbW92ZS5sCSVkMSwoJWExKSsKKwltb3ZlLmwJJWQyLCglYTEpCisjZW5kaWYKIAlqYnJhCWVwaWxvZ3VlCiAKIHJldHBvaW50ZXI6CiAJYnRzdAkjNSwlZDIKIAlqYmVxCXJldHN0cnVjdDEKKyNpZmRlZiBfX01JTlRfXworCW1vdmUubAklZDAsKCVhMSkKKyNlbHNlCiAJbW92ZS5sCSVhMCwoJWExKQorI2VuZGlmCiAJamJyYQllcGlsb2d1ZQogCiByZXRzdHJ1Y3QxOgpAQCAtMTQxLDEzICsxNzcsMTMgQEAKIAl1bmxrCSVmcAogCXJ0cwogCUNGSV9FTkRQUk9DKCkKLQkuc2l6ZQlmZmlfY2FsbF9TWVNWLC4tZmZpX2NhbGxfU1lTVgorCS5zaXplCUNBTExGVU5DKGZmaV9jYWxsX1NZU1YpLC4tQ0FMTEZVTkMoZmZpX2NhbGxfU1lTVikKIAotCS5nbG9ibAlmZmlfY2xvc3VyZV9TWVNWCi0JLnR5cGUJZmZpX2Nsb3N1cmVfU1lTViwgQGZ1bmN0aW9uCisJLmdsb2JsCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1YpCisJLnR5cGUJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTViksIEBmdW5jdGlvbgogCS5hbGlnbgk0CiAKLWZmaV9jbG9zdXJlX1NZU1Y6CitDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWKToKIAlDRklfU1RBUlRQUk9DKCkKIAlsaW5rCSVmcCwjLTEyCiAJQ0ZJX09GRlNFVCgxNCwtOCkKQEAgLTE1Nyw5ICsxOTMsOSBAQAogCXBlYQktMTIoJWZwKQogCW1vdmUubAklYTAsLSglc3ApCiAjaWYgIWRlZmluZWQgX19QSUNfXwotCWpzcglmZmlfY2xvc3VyZV9TWVNWX2lubmVyCisJanNyCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIpCiAjZWxzZQotCWJzci5sCWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXJAUExUUEMKKwlic3IubAlDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWX2lubmVyQFBMVFBDKQogI2VuZGlmCiAKIAlsc3IubAkjMSwlZDAKQEAgLTE3OCwxNiArMjE0LDMxIEBACiAJbW92ZS5sCSglYTApLCVkMQogCWpyYQkuTGNsc19lcGlsb2d1ZQogLkxjbHNfcmV0X2Zsb2F0OgorI2lmIGRlZmluZWQoX19NQzY4ODgxX18pIHx8IGRlZmluZWQoX19IQVZFXzY4ODgxX18pCiAJZm1vdmUucwkoJWEwKSwlZnAwCisjZWxzZQorCW1vdmUubAkoJWEwKSwlZDAKKyNlbmRpZgogCWpyYQkuTGNsc19lcGlsb2d1ZQogMToKIAlsc3IubAkjMiwlZDAKIAlqbmUJMWYKIAlqY3MJLkxjbHNfcmV0X2xkb3VibGUKKyNpZiBkZWZpbmVkKF9fTUM2ODg4MV9fKSB8fCBkZWZpbmVkKF9fSEFWRV82ODg4MV9fKQogCWZtb3ZlLmQJKCVhMCksJWZwMAorI2Vsc2UKKwltb3ZlLmwJKCVhMCkrLCVkMAorCW1vdmUubAkoJWEwKSwlZDEKKyNlbmRpZgogCWpyYQkuTGNsc19lcGlsb2d1ZQogLkxjbHNfcmV0X2xkb3VibGU6CisjaWYgZGVmaW5lZChfX01DNjg4ODFfXykgfHwgZGVmaW5lZChfX0hBVkVfNjg4ODFfXykKIAlmbW92ZS54CSglYTApLCVmcDAKKyNlbHNlCisJbW92ZS5sCSglYTApKywlZDAKKwltb3ZlLmwJKCVhMCkrLCVkMQorCW1vdmUubAkoJWEwKSwlZDIKKyNlbmRpZgogCWpyYQkuTGNsc19lcGlsb2d1ZQogMToKIAlsc3IubAkjMiwlZDAKQEAgLTIwNCwxMyArMjU1LDEzIEBACiAJanJhCS5MY2xzX2VwaWxvZ3VlCiAJQ0ZJX0VORFBST0MoKQogCi0JLnNpemUJZmZpX2Nsb3N1cmVfU1lTViwuLWZmaV9jbG9zdXJlX1NZU1YKKwkuc2l6ZQlDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWKSwuLUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1YpCiAKLQkuZ2xvYmwJZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YKLQkudHlwZQlmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTViwgQGZ1bmN0aW9uCisJLmdsb2JsCUNBTExGVU5DKGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWKQorCS50eXBlCUNBTExGVU5DKGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWKSwgQGZ1bmN0aW9uCiAJLmFsaWduCTQKIAotZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1Y6CitDQUxMRlVOQyhmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVik6CiAJQ0ZJX1NUQVJUUFJPQygpCiAJbGluawklZnAsIzAKIAlDRklfT0ZGU0VUKDE0LC04KQpAQCAtMjIwLDE0ICsyNzEsMTQgQEAKIAltb3ZlLmwJJWExLC0oJXNwKQogCW1vdmUubAklYTAsLSglc3ApCiAjaWYgIWRlZmluZWQgX19QSUNfXwotCWpzcglmZmlfY2xvc3VyZV9TWVNWX2lubmVyCisJanNyCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIpCiAjZWxzZQotCWJzci5sCWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXJAUExUUEMKKwlic3IubAlDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWX2lubmVyQFBMVFBDKQogI2VuZGlmCiAJdW5sawklZnAKIAlydHMKIAlDRklfRU5EUFJPQygpCi0JLnNpemUJZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YsLi1mZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVgorCS5zaXplCUNBTExGVU5DKGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWKSwuLUNBTExGVU5DKGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWKQogCiAjaWYgZGVmaW5lZCBfX0VMRl9fICYmIGRlZmluZWQgX19saW51eF9fCiAJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpLmMKaW5kZXggZDcxNGNjOS4uNzljZmY5YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaS5jCkBAIC0xLDYgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAyMDA3LCAyMDA4ICBSZWQgSGF0LCBJbmMuCi0gICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOCAgICAgICBEYXZpZCBEYW5leQorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTEgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA4ICBEYXZpZCBEYW5leQorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYsIDIwMDcsIDIwMDgsIDIwMTEgIFJlZCBIYXQsIEluYy4KICAgIAogICAgTUlQUyBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIApAQCAtMzcsNyArMzgsMTEgQEAKICNlbmRpZgogCiAjaWZuZGVmIFVTRV9fQlVJTFRJTl9fX0NMRUFSX0NBQ0hFCi0jaW5jbHVkZSA8c3lzL2NhY2hlY3RsLmg+CisjICBpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKQorIyAgICBpbmNsdWRlIDxtaXBzNjQvc3lzYXJjaC5oPgorIyAgZWxzZQorIyAgICBpbmNsdWRlIDxzeXMvY2FjaGVjdGwuaD4KKyMgIGVuZGlmCiAjZW5kaWYKIAogI2lmZGVmIEZGSV9ERUJVRwpAQCAtNjYyLDEwICs2NjcsMTIgQEAKICAgY2hhciAqY2xlYXJfbG9jYXRpb24gPSAoY2hhciAqKSBjb2RlbG9jOwogCiAjaWYgZGVmaW5lZChGRklfTUlQU19PMzIpCi0gIEZGSV9BU1NFUlQoY2lmLT5hYmkgPT0gRkZJX08zMiB8fCBjaWYtPmFiaSA9PSBGRklfTzMyX1NPRlRfRkxPQVQpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX08zMiAmJiBjaWYtPmFiaSAhPSBGRklfTzMyX1NPRlRfRkxPQVQpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICBmbiA9IGZmaV9jbG9zdXJlX08zMjsKICNlbHNlIC8qIEZGSV9NSVBTX04zMiAqLwotICBGRklfQVNTRVJUKGNpZi0+YWJpID09IEZGSV9OMzIgfHwgY2lmLT5hYmkgPT0gRkZJX042NCk7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfTjMyICYmIGNpZi0+YWJpICE9IEZGSV9ONjQpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICBmbiA9IGZmaV9jbG9zdXJlX04zMjsKICNlbmRpZiAvKiBGRklfTUlQU19PMzIgKi8KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpdGFyZ2V0LmgKaW5kZXggYzVmNGUwNS4uNzE3ZDY1OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIE1JUFMuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsMTEgKzI4LDIzIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWZkZWYgbGludXgKICMgaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KLSNlbHNlCisjZWxpZiBkZWZpbmVkKF9fcnRlbXNfXykKKy8qCisgKiBTdWJwcm9ncmFtIGNhbGxpbmcgY29udmVudGlvbiAtIGNvcGllZCBmcm9tIHNnaWRlZnMuaAorICovCisjZGVmaW5lIF9NSVBTX1NJTV9BQkkzMgkJMQorI2RlZmluZSBfTUlQU19TSU1fTkFCSTMyCTIKKyNkZWZpbmUgX01JUFNfU0lNX0FCSTY0CQkzCisjZWxpZiAhZGVmaW5lZChfX09wZW5CU0RfXykKICMgaW5jbHVkZSA8c2dpZGVmcy5oPgogI2VuZGlmCisKICMgIGlmbmRlZiBfQUJJTjMyCiAjICAgIGRlZmluZSBfQUJJTjMyIF9NSVBTX1NJTV9OQUJJMzIKICMgIGVuZGlmCkBAIC00Myw3ICs1Niw3IEBACiAjICBlbmRpZgogCiAjaWYgIWRlZmluZWQoX01JUFNfU0lNKQotLS0gc29tZXRoaW5nIGlzIHZlcnkgd3JvbmcgLS0KKyMgZXJyb3IgLS0gc29tZXRoaW5nIGlzIHZlcnkgd3JvbmcgLS0KICNlbHNlCiAjICBpZiAoX01JUFNfU0lNPT1fQUJJTjMyICYmIGRlZmluZWQoX0FCSU4zMikpIHx8IChfTUlQU19TSU09PV9BQkk2NCAmJiBkZWZpbmVkKF9BQkk2NCkpCiAjICAgIGRlZmluZSBGRklfTUlQU19OMzIKQEAgLTUxLDcgKzY0LDcgQEAKICMgICAgaWYgKF9NSVBTX1NJTT09X0FCSU8zMiAmJiBkZWZpbmVkKF9BQklPMzIpKQogIyAgICAgIGRlZmluZSBGRklfTUlQU19PMzIKICMgICAgZWxzZQotLS0gdGhpcyBpcyBhbiB1bnN1cHBvcnRlZCBwbGF0Zm9ybSAtLQorIyAgICAgZXJyb3IgLS0gdGhpcyBpcyBhbiB1bnN1cHBvcnRlZCBwbGF0Zm9ybSAtLQogIyAgICBlbmRpZgogIyAgZW5kaWYKICNlbmRpZgpAQCAtMTg2LDMwICsxOTksMjkgQEAKICAgRkZJX08zMl9TT0ZUX0ZMT0FULAogICBGRklfTjMyX1NPRlRfRkxPQVQsCiAgIEZGSV9ONjRfU09GVF9GTE9BVCwKKyAgRkZJX0xBU1RfQUJJLAogCiAjaWZkZWYgRkZJX01JUFNfTzMyCiAjaWZkZWYgX19taXBzX3NvZnRfZmxvYXQKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX08zMl9TT0ZUX0ZMT0FULAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTzMyX1NPRlRfRkxPQVQKICNlbHNlCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9PMzIsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9PMzIKICNlbmRpZgogI2Vsc2UKICMgaWYgX01JUFNfU0lNPT1fQUJJNjQKICMgIGlmZGVmIF9fbWlwc19zb2Z0X2Zsb2F0Ci0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9ONjRfU09GVF9GTE9BVCwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX042NF9TT0ZUX0ZMT0FUCiAjICBlbHNlCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9ONjQsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9ONjQKICMgIGVuZGlmCiAjIGVsc2UKICMgIGlmZGVmIF9fbWlwc19zb2Z0X2Zsb2F0Ci0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9OMzJfU09GVF9GTE9BVCwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX04zMl9TT0ZUX0ZMT0FUCiAjICBlbHNlCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9OMzIsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9OMzIKICMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKLQotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCiB9IGZmaV9hYmk7CiAKICNkZWZpbmUgRkZJX0VYVFJBX0NJRl9GSUVMRFMgdW5zaWduZWQgcnN0cnVjdF9mbGFnCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL24zMi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9uMzIuUwppbmRleCBhZTIzMDk0Li5mZjRiYmNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL24zMi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvbjMyLlMKQEAgLTQzLDYgKzQzLDcgQEAKICNpZmRlZiBfX0dOVUNfXwogCS5hYmljYWxscwogI2VuZGlmCisJLnNldCBtaXBzNAogCS50ZXh0CiAJLmFsaWduCTIKIAkuZ2xvYmwJZmZpX2NhbGxfTjMyCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tb3hpZS9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21veGllL2ZmaXRhcmdldC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTMwNWQxLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21veGllL2ZmaXRhcmdldC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDA5IEFudGhvbnkgR3JlZW4KLSAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgTW94aWUKLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotICAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotICAgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCi0gICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKLSAgIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotICAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgotICAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIExJQkZGSV9UQVJHRVRfSAotI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKLQotLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBMSUJGRklfQVNNCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKLXR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKLQotdHlwZWRlZiBlbnVtIGZmaV9hYmkgewotICBGRklfRklSU1RfQUJJID0gMCwKLQotI2lmZGVmIE1PWElFCi0gIEZGSV9FQUJJLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfRUFCSSwKLSNlbmRpZgotCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKLX0gZmZpX2FiaTsKLSNlbmRpZgotCi0vKiAtLS0tIERlZmluaXRpb25zIGZvciBjbG9zdXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jZGVmaW5lIEZGSV9DTE9TVVJFUyAwCi0jZGVmaW5lIEZGSV9OQVRJVkVfUkFXX0FQSSAwCi0KLS8qIFRyYW1wb2xpbmVzIGFyZSA1IDQtYnl0ZSBpbnN0cnVjdGlvbnMgbG9uZy4gICovCi0jZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgKDUqNCkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wYS9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaS5jCmluZGV4IDZkNzYwNmYuLjRjZTJiYzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaS5jCkBAIC0xLDkgKzEsMTEgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIChjKSAyMDAzLTIwMDQgUmFuZG9scGggQ2h1bmcgPHRhdXNxQGRlYmlhbi5vcmc+CisgICBmZmkuYyAtIChjKSAyMDExIEFudGhvbnkgR3JlZW4KICAgICAgICAgICAgKGMpIDIwMDggUmVkIEhhdCwgSW5jLgotCisJICAgKGMpIDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAgICAgICAgIChjKSAyMDAzLTIwMDQgUmFuZG9scGggQ2h1bmcgPHRhdXNxQGRlYmlhbi5vcmc+CisgICAgICAgICAgIAogICAgSFBQQSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZQotICAgSFAtVVggUEEgQUJJIHN1cHBvcnQgKGMpIDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBIUC1VWCBQQSBBQkkgc3VwcG9ydCAKIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAgICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKQEAgLTYzMyw3ICs2MzUsOCBAQAogICBVSU5UMzIgKnRtcDsKICNlbmRpZgogCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9QQTMyKTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9QQTMyKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICAvKiBNYWtlIGEgc21hbGwgdHJhbXBvbGluZSB0aGF0IHdpbGwgYnJhbmNoIHRvIG91cgogICAgICBoYW5kbGVyIGZ1bmN0aW9uLiBVc2UgUEMtcmVsYXRpdmUgYWRkcmVzc2luZy4gICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wYS9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaXRhcmdldC5oCmluZGV4IDAwMWY4OTEuLjVlMzY0ZDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIGhwcGEuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gU3lzdGVtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgTElCRkZJX0FTTQpAQCAtMzgsMjEgKzQzLDIyIEBACiAKICNpZmRlZiBQQV9MSU5VWAogICBGRklfUEEzMiwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBMzIsCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBMzIKICNlbmRpZgogCiAjaWZkZWYgUEFfSFBVWAogICBGRklfUEEzMiwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBMzIsCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBMzIKICNlbmRpZgogCiAjaWZkZWYgUEE2NF9IUFVYCiAjZXJyb3IgIlBBNjRfSFBVWCBGRkkgaXMgbm90IHlldCBpbXBsZW1lbnRlZCIKICAgRkZJX1BBNjQsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9QQTY0LAorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9QQTY0CiAjZW5kaWYKLQotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXguUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4LlMKaW5kZXggYzZmODc2NC4uMjEzZjJkYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXguUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeC5TCkBAIC0xLDUgKzEsNSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGFpeC5TIC0gQ29weXJpZ2h0IChjKSAyMDAyLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBhaXguUyAtIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgIGJhc2VkIG9uIGRhcndpbi5TIGJ5IEpvaG4gSG9ybmt2aXN0CiAKICAgIFBvd2VyUEMgQXNzZW1ibHkgZ2x1ZS4KQEAgLTc5LDYgKzc5LDggQEAKIAkuc2V0IGYyMCwyMAogCS5zZXQgZjIxLDIxCiAKKwkuZXh0ZXJuIC5mZmlfcHJlcF9hcmdzCisKICNkZWZpbmUgTElCRkZJX0FTTQogI2luY2x1ZGUgPGZmaWNvbmZpZy5oPgogI2luY2x1ZGUgPGZmaS5oPgpAQCAtMTI1LDYgKzEyNyw3IEBACiAJLyogQ2FsbCBmZmlfcHJlcF9hcmdzLiAgKi8KIAltcglyNCwgcjEKIAlibAkuZmZpX3ByZXBfYXJncworCW5vcAogCiAJLyogTm93IGRvIHRoZSBjYWxsLiAgKi8KIAlsZAlyMCwgMChyMjkpCkBAIC0yMjYsNiArMjI5LDcgQEAKIAkvKiBDYWxsIGZmaV9wcmVwX2FyZ3MuICAqLwogCW1yCXI0LCByMQogCWJsCS5mZmlfcHJlcF9hcmdzCisJbm9wCiAKIAkvKiBOb3cgZG8gdGhlIGNhbGwuICAqLwogCWx3eglyMCwgMChyMjkpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMKaW5kZXggNWM3NDQ0OC4uYWFiZDNjMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUwpAQCAtNzksNiArNzksOCBAQAogCS5zZXQgZjIwLDIwCiAJLnNldCBmMjEsMjEKIAorCS5leHRlcm4gLmZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4KKwogI2RlZmluZSBMSUJGRklfQVNNCiAjZGVmaW5lIEpVTVBUQVJHRVQobmFtZSkgbmFtZQogI2RlZmluZSBMKHgpIHgKQEAgLTE2NSw2ICsxNjcsNyBAQAogCiAJLyogbG9vayB1cCB0aGUgcHJvcGVyIHN0YXJ0aW5nIHBvaW50IGluIHRhYmxlICAqLwogCS8qIGJ5IHVzaW5nIHJldHVybiB0eXBlIGFzIG9mZnNldCAqLworCWxoeglyMywgMTAocjMpCS8qIGxvYWQgdHlwZSBmcm9tIHJldHVybiB0eXBlICovCiAJbGQJcjQsIExDLi42MCgyKQkvKiBnZXQgYWRkcmVzcyBvZiBqdW1wIHRhYmxlICovCiAJc2xkaQlyMywgcjMsIDQJLyogbm93IG11bHRpcGx5IHJldHVybiB0eXBlIGJ5IDE2ICovCiAJbGQJcjAsIDI0MCsxNihyMSkJLyogbG9hZCByZXR1cm4gYWRkcmVzcyAqLwpAQCAtMzM3LDggKzM0MCw5IEBACiAKIAkvKiBsb29rIHVwIHRoZSBwcm9wZXIgc3RhcnRpbmcgcG9pbnQgaW4gdGFibGUgICovCiAJLyogYnkgdXNpbmcgcmV0dXJuIHR5cGUgYXMgb2Zmc2V0ICovCisJbGh6CXIzLCA2KHIzKQkvKiBsb2FkIHR5cGUgZnJvbSByZXR1cm4gdHlwZSAqLwogCWx3eglyNCwgTEMuLjYwKDIpCS8qIGdldCBhZGRyZXNzIG9mIGp1bXAgdGFibGUgKi8KLQlzbHdpCXIzLCByMywgNAkvKiBub3cgbXVsdGlwbHkgcmV0dXJuIHR5cGUgYnkgNCAqLworCXNsd2kJcjMsIHIzLCA0CS8qIG5vdyBtdWx0aXBseSByZXR1cm4gdHlwZSBieSAxNiAqLwogCWx3eglyMCwgMTc2KzgocjEpCS8qIGxvYWQgcmV0dXJuIGFkZHJlc3MgKi8KIAlhZGQJcjMsIHIzLCByNAkvKiBhZGQgY29udGVudHMgb2YgdGFibGUgdG8gdGFibGUgYWRkcmVzcyAqLwogCW10Y3RyCXIzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FzbS5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9hc20uaAppbmRleCBlODZlNmIwLi45OTRmNjJkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FzbS5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYXNtLmgKQEAgLTQyLDcgKzQyLDcgQEAKIAogLyogSWYgY29tcGlsZWQgZm9yIHByb2ZpbGluZywgY2FsbCBgX21jb3VudCcgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggZnVuY3Rpb24uICAqLwogI2lmZGVmCVBST0YKLS8qIFRoZSBtY291bnQgY29kZSByZWxpZXMgb24gYSB0aGUgcmV0dXJuIGFkZHJlc3MgYmVpbmcgb24gdGhlIHN0YWNrCisvKiBUaGUgbWNvdW50IGNvZGUgcmVsaWVzIG9uIHRoZSByZXR1cm4gYWRkcmVzcyBiZWluZyBvbiB0aGUgc3RhY2sKICAgIHRvIGxvY2F0ZSBvdXIgY2FsbGVyIGFuZCBzbyBpdCBjYW4gcmVzdG9yZSBpdDsgc28gc3RvcmUgb25lIGp1c3QKICAgIGZvciBpdHMgYmVuZWZpdC4gICovCiAjaWZkZWYgUElDCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW4uUwppbmRleCBkOGExZGY1Li40Zjk4N2RjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luLlMKQEAgLTEsNiArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgZGFyd2luLlMgLSBDb3B5cmlnaHQgKGMpIDIwMDAgSm9obiBIb3Jua3Zpc3QKLQkgICAgICBDb3B5cmlnaHQgKGMpIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisJICAgICAgQ29weXJpZ2h0IChjKSAyMDA0LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBQb3dlclBDIEFzc2VtYmx5IGdsdWUuCiAKQEAgLTI0LDUxICsyNCw5MiBAQAogICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorI2RlZmluZSBMSUJGRklfQVNNCiAjaWYgZGVmaW5lZChfX3BwYzY0X18pCiAjZGVmaW5lIE1PREVfQ0hPSUNFKHgsIHkpIHkKICNlbHNlCiAjZGVmaW5lIE1PREVfQ0hPSUNFKHgsIHkpIHgKICNlbmRpZgogCi0jZGVmaW5lIGdfbG9uZyAgTU9ERV9DSE9JQ0UobG9uZywgcXVhZCkgICAgICAgICAvKiB1c2FnZSBpcyAiLmdfbG9uZyIgKi8KKyNkZWZpbmUgbWFjaGluZV9jaG9pY2UJTU9ERV9DSE9JQ0UocHBjNzQwMCxwcGM2NCkKIAotI2RlZmluZSBMT0cyX0dQUl9CWVRFUyAgTU9ERV9DSE9JQ0UoMiwzKSAgICAgICAgLyogbG9nMihHUFJfQllURVMpICovCis7IERlZmluZSBzb21lIHBzZXVkby1vcGNvZGVzIGZvciBzaXplLWluZGVwZW5kZW50IGxvYWQgJiBzdG9yZSBvZiBHUFJzIC4uLgorI2RlZmluZSBsZ3UJCU1PREVfQ0hPSUNFKGx3enUsIGxkdSkKKyNkZWZpbmUgbGcJCU1PREVfQ0hPSUNFKGx3eixsZCkKKyNkZWZpbmUgc2cJCU1PREVfQ0hPSUNFKHN0dyxzdGQpCisjZGVmaW5lIHNndQkJTU9ERV9DSE9JQ0Uoc3R3dSxzdGR1KQorI2RlZmluZSBzZ3V4CQlNT0RFX0NIT0lDRShzdHd1eCxzdGR1eCkKIAotI2RlZmluZSBMSUJGRklfQVNNCis7IC4uLiBhbmQgdGhlIHNpemUgb2YgR1BScyBhbmQgdGhlaXIgc3RvcmFnZSBpbmRpY2F0b3IuCisjZGVmaW5lIEdQUl9CWVRFUwlNT0RFX0NIT0lDRSg0LDgpCisjZGVmaW5lIExPRzJfR1BSX0JZVEVTCU1PREVfQ0hPSUNFKDIsMykJLyogbG9nMihHUFJfQllURVMpICovCisjZGVmaW5lIGdfbG9uZwkJTU9ERV9DSE9JQ0UobG9uZywgcXVhZCkJLyogdXNhZ2UgaXMgIi5nX2xvbmciICovCisKKzsgRnJvbSB0aGUgQUJJIGRvYzogIk1hYyBPUyBYIEFCSSBGdW5jdGlvbiBDYWxsIEd1aWRlIiBWZXJzaW9uIDIwMDktMDItMDQuCisjZGVmaW5lIExJTktBR0VfU0laRQlNT0RFX0NIT0lDRSgyNCw0OCkKKyNkZWZpbmUgUEFSQU1fQVJFQQlNT0RFX0NIT0lDRSgzMiw2NCkKKyNkZWZpbmUgU0FWRURfTFJfT0ZGU0VUCU1PREVfQ0hPSUNFKDgsMTYpCS8qIHNhdmUgcG9zaXRpb24gZm9yIGxyICovCisKKy8qIElmIHRoZXJlIGlzIGFueSBGUCBzdHVmZiB3ZSBtYWtlIHNwYWNlIGZvciBhbGwgb2YgdGhlIHJlZ3MuICAqLworI2RlZmluZSBTQVZFRF9GUFJfQ09VTlQgMTMKKyNkZWZpbmUgRlBSX1NJWkUJOAorI2RlZmluZSBSRVNVTFRfQllURVMJMTYKKworLyogVGhpcyBzaG91bGQgYmUga2VwdCBpbiBzdGVwIHdpdGggdGhlIHNhbWUgdmFsdWUgaW4gZmZpX2Rhcndpbi5jLiAgKi8KKyNkZWZpbmUgQVNNX05FRURTX1JFR0lTVEVSUyA0CisjZGVmaW5lIFNBVkVfUkVHU19TSVpFIChBU01fTkVFRFNfUkVHSVNURVJTICogR1BSX0JZVEVTKQorCiAjaW5jbHVkZSA8ZmZpY29uZmlnLmg+CiAjaW5jbHVkZSA8ZmZpLmg+CisKICNkZWZpbmUgSlVNUFRBUkdFVChuYW1lKSBuYW1lCiAjZGVmaW5lIEwoeCkgeAotLnRleHQKLQkuYWxpZ24gMgotLmdsb2JsIF9mZmlfcHJlcF9hcmdzCiAKLS50ZXh0CisJLnRleHQKIAkuYWxpZ24gMgotLmdsb2JsIF9mZmlfY2FsbF9EQVJXSU4KLS50ZXh0CisJLmdsb2JsIF9mZmlfcHJlcF9hcmdzCisKIAkuYWxpZ24gMgorCS5nbG9ibCBfZmZpX2NhbGxfREFSV0lOCisKKwkvKiBXZSBhcnJpdmUgaGVyZSB3aXRoOgorCSAgIHIzID0gcHRyIHRvIGV4dGVuZGVkIGNpZi4KKwkgICByNCA9IC1ieXRlcy4KKwkgICByNSA9IGNpZiBmbGFncy4KKwkgICByNiA9IHB0ciB0byByZXR1cm4gdmFsdWUuCisJICAgcjcgPSBmbiBwb2ludGVyICh1c2VyIGZ1bmMpLgorCSAgIHI4ID0gZm4gcG9pbnRlciAoZmZpX3ByZXBfYXJncykuCisJICAgcjkgPSBmZmlfdHlwZSogZm9yIHRoZSByZXQgdmFsLiAgKi8KKwogX2ZmaV9jYWxsX0RBUldJTjoKLUxGQjA6CitMc3RhcnRjb2RlOgogCW1yICAgCXIxMixyOAkvKiBXZSBvbmx5IG5lZWQgcjEyIHVudGlsIHRoZSBjYWxsLAotCQkJICAgc28gaXQgZG9lc24ndCBoYXZlIHRvIGJlIHNhdmVkLiAgKi8KKwkJCSAgIHNvIGl0IGRvZXMgbm90IGhhdmUgdG8gYmUgc2F2ZWQuICAqLwogTEZCMToKIAkvKiBTYXZlIHRoZSBvbGQgc3RhY2sgcG9pbnRlciBhcyBBUC4gICovCiAJbXIJcjgscjEKIExDRkkwOgorCQorCS8qIFNhdmUgdGhlIHJldHZhbCB0eXBlIGluIHBhcmVudHMgZnJhbWUuICAqLworCXNnCXI5LChMSU5LQUdFX1NJWkUrNipHUFJfQllURVMpKHI4KQorCiAJLyogQWxsb2NhdGUgdGhlIHN0YWNrIHNwYWNlIHdlIG5lZWQuICAqLwotCXN0d3V4CXIxLHIxLHI0CisJc2d1eAlyMSxyMSxyNAogCiAJLyogU2F2ZSByZWdpc3RlcnMgd2UgdXNlLiAgKi8KIAltZmxyCXI5CisJc2cJcjksU0FWRURfTFJfT0ZGU0VUKHI4KQogCi0Jc3R3CXIyOCwtMTYocjgpCQotCXN0dwlyMjksLTEyKHI4KQotCXN0dwlyMzAsLTgocjgpCi0Jc3R3CXIzMSwtNChyOCkKKwlzZwlyMjgsLSg0ICogR1BSX0JZVEVTKShyOCkJCisJc2cJcjI5LC0oMyAqIEdQUl9CWVRFUykocjgpCisJc2cJcjMwLC0oMiAqIEdQUl9CWVRFUykocjgpCisJc2cJcjMxLC0oICAgIEdQUl9CWVRFUykocjgpCiAKLQlzdHcJcjksOChyOCkKLQlzdHcJcjIsMjAocjEpCisjaWYgIWRlZmluZWQoUE9XRVJQQ19EQVJXSU4pCisJLyogVGhlIFRPQyBzbG90IGlzIHJlc2VydmVkIGluIHRoZSBEYXJ3aW4gQUJJIGFuZCByMiBpcyB2b2xhdGlsZS4gICovCisJc2cJcjIsKDUgKiBHUFJfQllURVMpKHIxKQorI2VuZGlmCisKIExDRkkxOgogCiAJLyogU2F2ZSBhcmd1bWVudHMgb3ZlciBjYWxsLiAgKi8KQEAgLTc3LDE0ICsxMTgsMTcgQEAKIAltcglyMjkscjcJLyogZnVuY3Rpb24gYWRkcmVzcywgICovCiAJbXIJcjI4LHI4CS8qIG91ciBBUC4gICovCiBMQ0ZJMjoKLQkvKiBDYWxsIGZmaV9wcmVwX2FyZ3MuICAqLworCS8qIENhbGwgZmZpX3ByZXBfYXJncy4gcjMgPSBleHRlbmRlZCBjaWYsIHI0ID0gc3RhY2sgcHRyIGNvcHkuICAqLwogCW1yCXI0LHIxCiAJbGkJcjksMAogCiAJbXRjdHIJcjEyIC8qIHIxMiBob2xkcyBhZGRyZXNzIG9mIF9mZmlfcHJlcF9hcmdzLiAgKi8KIAliY3RybAotCWx3eiAgICAgcjIsMjAocjEpCiAKKyNpZiAhZGVmaW5lZChQT1dFUlBDX0RBUldJTikKKwkvKiBUaGUgVE9DIHNsb3QgaXMgcmVzZXJ2ZWQgaW4gdGhlIERhcndpbiBBQkkgYW5kIHIyIGlzIHZvbGF0aWxlLiAgKi8KKwlsZyAgICAgcjIsKDUgKiBHUFJfQllURVMpKHIxKQorI2VuZGlmCiAJLyogTm93IGRvIHRoZSBjYWxsLgogCSAgIFNldCB1cCBjcjEgd2l0aCBiaXRzIDQtNyBvZiB0aGUgZmxhZ3MuICAqLwogCW10Y3JmCTB4NDAscjMxCkBAIC05Miw3MSArMTM2LDEzMCBAQAogCW10Y3RyCXIyOQogCS8qIExvYWQgYWxsIHRob3NlIGFyZ3VtZW50IHJlZ2lzdGVycy4KIAkgICBXZSBoYXZlIHNldCB1cCBhIG5pY2Ugc3RhY2sgZnJhbWUsIGp1c3QgbG9hZCBpdCBpbnRvIHJlZ2lzdGVycy4gICovCi0JbHd6ICAgICByMywyMCsoMSo0KShyMSkKLQlsd3ogICAgIHI0LDIwKygyKjQpKHIxKQotCWx3eiAgICAgcjUsMjArKDMqNCkocjEpCi0JbHd6ICAgICByNiwyMCsoNCo0KShyMSkKKwlsZyAgICAgcjMsIChMSU5LQUdFX1NJWkUgICAgICAgICAgICAgICAgKShyMSkKKwlsZyAgICAgcjQsIChMSU5LQUdFX1NJWkUgKyAgICAgR1BSX0JZVEVTKShyMSkKKwlsZyAgICAgcjUsIChMSU5LQUdFX1NJWkUgKyAyICogR1BSX0JZVEVTKShyMSkKKwlsZyAgICAgcjYsIChMSU5LQUdFX1NJWkUgKyAzICogR1BSX0JZVEVTKShyMSkKIAlub3AKLQlsd3ogICAgIHI3LDIwKyg1KjQpKHIxKQotCWx3eiAgICAgcjgsMjArKDYqNCkocjEpCi0JbHd6ICAgICByOSwyMCsoNyo0KShyMSkKLQlsd3ogICAgIHIxMCwyMCsoOCo0KShyMSkKKwlsZyAgICAgcjcsIChMSU5LQUdFX1NJWkUgKyA0ICogR1BSX0JZVEVTKShyMSkKKwlsZyAgICAgcjgsIChMSU5LQUdFX1NJWkUgKyA1ICogR1BSX0JZVEVTKShyMSkKKwlsZyAgICAgcjksIChMSU5LQUdFX1NJWkUgKyA2ICogR1BSX0JZVEVTKShyMSkKKwlsZyAgICAgcjEwLChMSU5LQUdFX1NJWkUgKyA3ICogR1BSX0JZVEVTKShyMSkKIAogTDE6Ci0JLyogTG9hZCBhbGwgdGhlIEZQIHJlZ2lzdGVycy4gICovCisJLyogLi4uIExvYWQgYWxsIHRoZSBGUCByZWdpc3RlcnMuICAqLwogCWJmCTYsTDIJLyogTm8gZmxvYXRzIHRvIGxvYWQuICAqLwotCWxmZAlmMSwtMTYtKDEzKjgpKHIyOCkKLQlsZmQJZjIsLTE2LSgxMio4KShyMjgpCi0JbGZkCWYzLC0xNi0oMTEqOCkocjI4KQotCWxmZAlmNCwtMTYtKDEwKjgpKHIyOCkKKwlsZmQJZjEsIC1TQVZFX1JFR1NfU0laRS0oMTMqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjIsIC1TQVZFX1JFR1NfU0laRS0oMTIqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjMsIC1TQVZFX1JFR1NfU0laRS0oMTEqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjQsIC1TQVZFX1JFR1NfU0laRS0oMTAqRlBSX1NJWkUpKHIyOCkKIAlub3AKLQlsZmQJZjUsLTE2LSg5KjgpKHIyOCkKLQlsZmQJZjYsLTE2LSg4KjgpKHIyOCkKLQlsZmQJZjcsLTE2LSg3KjgpKHIyOCkKLQlsZmQJZjgsLTE2LSg2KjgpKHIyOCkKKwlsZmQJZjUsIC1TQVZFX1JFR1NfU0laRS0oIDkqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjYsIC1TQVZFX1JFR1NfU0laRS0oIDgqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjcsIC1TQVZFX1JFR1NfU0laRS0oIDcqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjgsIC1TQVZFX1JFR1NfU0laRS0oIDYqRlBSX1NJWkUpKHIyOCkKIAlub3AKLQlsZmQgICAgIGY5LC0xNi0oNSo4KShyMjgpCi0JbGZkICAgICBmMTAsLTE2LSg0KjgpKHIyOCkKLQlsZmQgICAgIGYxMSwtMTYtKDMqOCkocjI4KQotCWxmZCAgICAgZjEyLC0xNi0oMio4KShyMjgpCisJbGZkICAgICBmOSwgLVNBVkVfUkVHU19TSVpFLSggNSpGUFJfU0laRSkocjI4KQorCWxmZCAgICAgZjEwLC1TQVZFX1JFR1NfU0laRS0oIDQqRlBSX1NJWkUpKHIyOCkKKwlsZmQgICAgIGYxMSwtU0FWRV9SRUdTX1NJWkUtKCAzKkZQUl9TSVpFKShyMjgpCisJbGZkICAgICBmMTIsLVNBVkVfUkVHU19TSVpFLSggMipGUFJfU0laRSkocjI4KQogCW5vcAotCWxmZCAgICAgZjEzLC0xNi0oMSo4KShyMjgpCisJbGZkICAgICBmMTMsLVNBVkVfUkVHU19TSVpFLSggMSpGUFJfU0laRSkocjI4KQogCiBMMjoKIAltcglyMTIscjI5CS8qIFB1dCB0aGUgdGFyZ2V0IGFkZHJlc3MgaW4gcjEyIGFzIHNwZWNpZmllZC4gICovCiAJbXRjdHIgIAlyMTIKIAlub3AKIAlub3AKKwogCS8qIE1ha2UgdGhlIGNhbGwuICAqLwogCWJjdHJsCiAKIAkvKiBOb3csIGRlYWwgd2l0aCB0aGUgcmV0dXJuIHZhbHVlLiAgKi8KLQltdGNyZgkweDAxLHIzMQogCi0JYnQJMzAsTChkb25lX3JldHVybl92YWx1ZSkKLQlidAkyOSxMKGZwX3JldHVybl92YWx1ZSkKLQlzdHcJcjMsMChyMzApCi0JYmYJMjgsTChkb25lX3JldHVybl92YWx1ZSkKLQlzdHcJcjQsNChyMzApCisJLyogbTY0IHN0cnVjdHVyZSByZXR1cm5zIGNhbiBvY2N1cHkgdGhlIHNhbWUgc2V0IG9mIHJlZ2lzdGVycyBhcworCSAgIHdvdWxkIGJlIHVzZWQgdG8gcGFzcyBzdWNoIGEgc3RydWN0dXJlIGFzIGFyZzAgLSBzbyB0YWtlIGNhcmUgCisJICAgbm90IHRvIHN0ZXAgb24gYW55IHBvc3NpYmx5IGhvdCByZWdzLiAgKi8KIAotCS8qIEZhbGwgdGhyb3VnaC4gICovCisJLyogR2V0IHRoZSBmbGFncy4uICovCisJbXRjcmYJMHgwMyxyMzEgOyB3ZSBuZWVkIGM2ICYgY3I3IG5vdy4KKwk7IEZMQUdfUkVUVVJOU19OT1RISU5HIGFsc28gY292ZXJzIHN0cnVjdCByZXQtYnktcmVmLgorCWJ0CTMwLEwoZG9uZV9yZXR1cm5fdmFsdWUpCSAgOyBGTEFHX1JFVFVSTlNfTk9USElORworCWJmCTI3LEwoc2NhbGFyX3JldHVybl92YWx1ZSkgOyBub3QgRkxBR19SRVRVUk5TX1NUUlVDVAorCQorCS8qIE9LLCBzbyB3ZSBoYXZlIGEgc3RydWN0LiAgKi8KKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlidAkzMSxMKG1heWJlX3JldHVybl8xMjgpIDsgRkxBR19SRVRVUk5TXzEyOEJJVFMsIHNwZWNpYWwgY2FzZSAKIAotTChkb25lX3JldHVybl92YWx1ZSk6Ci0JLyogUmVzdG9yZSB0aGUgcmVnaXN0ZXJzIHdlIHVzZWQgYW5kIHJldHVybi4gICovCi0JbHd6CXI5LDgocjI4KQotCWx3eglyMzEsLTQocjI4KQotCW10bHIJcjkKLQlsd3oJcjMwLC04KHIyOCkKLQlsd3oJcjI5LC0xMihyMjgpCi0JbHd6CXIyOCwtMTYocjI4KQotCWx3eglyMSwwKHIxKQotCWJscgorCS8qIE9LLCB3ZSBoYXZlIHRvIG1hcCB0aGUgcmV0dXJuIGJhY2sgdG8gYSBtZW0gc3RydWN0LgorCSAgIFdlIGFyZSBhYm91dCB0byB0cmFtcGxlIHRoZSBwYXJlbnRzIHBhcmFtIGFyZWEsIHNvIHJlY292ZXIgdGhlCisJICAgcmV0dXJuIHR5cGUuICByMjkgaXMgZnJlZSwgc2luY2UgdGhlIGNhbGwgaXMgZG9uZS4gICovCisJbGcJcjI5LChMSU5LQUdFX1NJWkUgKyA2ICogR1BSX0JZVEVTKShyMjgpCisKKwlzZwlyMywgKExJTktBR0VfU0laRSAgICAgICAgICAgICAgICApKHIyOCkKKwlzZwlyNCwgKExJTktBR0VfU0laRSArICAgICBHUFJfQllURVMpKHIyOCkKKwlzZwlyNSwgKExJTktBR0VfU0laRSArIDIgKiBHUFJfQllURVMpKHIyOCkKKwlzZwlyNiwgKExJTktBR0VfU0laRSArIDMgKiBHUFJfQllURVMpKHIyOCkKKwlub3AKKwlzZwlyNywgKExJTktBR0VfU0laRSArIDQgKiBHUFJfQllURVMpKHIyOCkKKwlzZwlyOCwgKExJTktBR0VfU0laRSArIDUgKiBHUFJfQllURVMpKHIyOCkKKwlzZwlyOSwgKExJTktBR0VfU0laRSArIDYgKiBHUFJfQllURVMpKHIyOCkKKwlzZwlyMTAsKExJTktBR0VfU0laRSArIDcgKiBHUFJfQllURVMpKHIyOCkKKwkvKiBPSywgc28gZG8gdGhlIGJsb2NrIG1vdmUgLSB3ZSB0cnVzdCB0aGF0IG1lbWNweSB3aWxsIG5vdCB0cmFtcGxlCisJICAgdGhlIGZwcnMuLi4gICovCisJbXIgCXIzLHIzMCA7IGRlc3QKKwlhZGRpCXI0LHIyOCxMSU5LQUdFX1NJWkUgOyBzb3VyY2UKKwkvKiBUaGUgc2l6ZSBpcyBhIHNpemVfdCwgc2hvdWxkIGJlIGxvbmcuICAqLworCWxnCXI1LDAocjI5KQorCS8qIEZpZ3VyZSBvdXQgc21hbGwgc3RydWN0cyAqLworCWNtcGkJMCxyNSw0CisJYmd0CUwzCTsgMSwgMiBhbmQgNCBieXRlcyBoYXZlIHNwZWNpYWwgcnVsZXMuCisJY21waQkwLHI1LDMKKwliZXEJTDMJOyBub3QgMworCWFkZGkJcjQscjQsOAorCXN1YmYJcjQscjUscjQKK0wzOgorCWJsCV9tZW1jcHkKKwkKKwkvKiAuLi4gZG8gd2UgbmVlZCB0aGUgRlAgcmVnaXN0ZXJzPyAtIHJlY292ZXIgdGhlIGZsYWdzLi4gKi8KKwltdGNyZgkweDAzLHIzMSA7IHdlIG5lZWQgYzYgJiBjcjcgbm93LgorCWJmCTI5LEwoZG9uZV9yZXR1cm5fdmFsdWUpCS8qIE5vIGZsb2F0cyBpbiB0aGUgc3RydWN0LiAgKi8KKwlzdGZkCWYxLCAtU0FWRV9SRUdTX1NJWkUtKDEzKkZQUl9TSVpFKShyMjgpCisJc3RmZAlmMiwgLVNBVkVfUkVHU19TSVpFLSgxMipGUFJfU0laRSkocjI4KQorCXN0ZmQJZjMsIC1TQVZFX1JFR1NfU0laRS0oMTEqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWY0LCAtU0FWRV9SRUdTX1NJWkUtKDEwKkZQUl9TSVpFKShyMjgpCisJbm9wCisJc3RmZAlmNSwgLVNBVkVfUkVHU19TSVpFLSggOSpGUFJfU0laRSkocjI4KQorCXN0ZmQJZjYsIC1TQVZFX1JFR1NfU0laRS0oIDgqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWY3LCAtU0FWRV9SRUdTX1NJWkUtKCA3KkZQUl9TSVpFKShyMjgpCisJc3RmZAlmOCwgLVNBVkVfUkVHU19TSVpFLSggNipGUFJfU0laRSkocjI4KQorCW5vcAorCXN0ZmQJZjksIC1TQVZFX1JFR1NfU0laRS0oIDUqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWYxMCwtU0FWRV9SRUdTX1NJWkUtKCA0KkZQUl9TSVpFKShyMjgpCisJc3RmZAlmMTEsLVNBVkVfUkVHU19TSVpFLSggMypGUFJfU0laRSkocjI4KQorCXN0ZmQJZjEyLC1TQVZFX1JFR1NfU0laRS0oIDIqRlBSX1NJWkUpKHIyOCkKKwlub3AKKwlzdGZkCWYxMywtU0FWRV9SRUdTX1NJWkUtKCAxKkZQUl9TSVpFKShyMjgpCisKKwltcglyMyxyMjkJOyBmZmlfdHlwZSAqCisJbXIJcjQscjMwCTsgZGVzdAorCWFkZGkJcjUscjI4LC1TQVZFX1JFR1NfU0laRS0oMTMqRlBSX1NJWkUpIDsgZnBycworCXhvcglyNixyNixyNgorCXNnCXI2LChMSU5LQUdFX1NJWkUgKyA3ICogR1BSX0JZVEVTKShyMjgpCisJYWRkaQlyNixyMjgsKExJTktBR0VfU0laRSArIDcgKiBHUFJfQllURVMpIDsgcG9pbnQgdG8gYSB6ZXJvZWQgY291bnRlci4KKwlibCAJX2RhcndpbjY0X3N0cnVjdF9mbG9hdHNfdG9fbWVtCisKKwliIEwoZG9uZV9yZXR1cm5fdmFsdWUpCisjZWxzZQorCXN0dwlyMywwKHIzMCkgOyBtMzIgdGhlIG9ubHkgc3RydWN0IHJldHVybiBpbiByZWcgaXMgNCBieXRlcy4KKyNlbmRpZgorCWIgTChkb25lX3JldHVybl92YWx1ZSkKIAogTChmcF9yZXR1cm5fdmFsdWUpOgogCS8qIERvIHdlIGhhdmUgbG9uZyBkb3VibGUgdG8gc3RvcmU/ICAqLwotCWJmCTMxLEwoZmRfcmV0dXJuX3ZhbHVlKQorCWJmCTMxLEwoZmRfcmV0dXJuX3ZhbHVlKSA7IEZMQUdfUkVUVVJOU18xMjhCSVRTCiAJc3RmZAlmMSwwKHIzMCkKLQlzdGZkCWYyLDgocjMwKQorCXN0ZmQJZjIsRlBSX1NJWkUocjMwKQogCWIJTChkb25lX3JldHVybl92YWx1ZSkKIAogTChmZF9yZXR1cm5fdmFsdWUpOgpAQCAtMTcwLDIxICsyNzMsNTcgQEAKIAlzdGZzCWYxLDAocjMwKQogCWIJTChkb25lX3JldHVybl92YWx1ZSkKIAorTChzY2FsYXJfcmV0dXJuX3ZhbHVlKToKKwlidAkyOSxMKGZwX3JldHVybl92YWx1ZSkJOyBGTEFHX1JFVFVSTlNfRlAKKwk7IGZmaV9hcmcgaXMgZGVmaW5lZCBhcyB1bnNpZ25lZCBsb25nLiAKKwlzZwlyMywwKHIzMCkJCTsgU2F2ZSB0aGUgcmVnLgorCWJmCTI4LEwoZG9uZV9yZXR1cm5fdmFsdWUpIDsgbm90IEZMQUdfUkVUVVJOU182NEJJVFMgCisKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKK0wobWF5YmVfcmV0dXJuXzEyOCk6CisJc3RkCXIzLDAocjMwKQorCWJmCTMxLEwoZG9uZV9yZXR1cm5fdmFsdWUpIDsgbm90IEZMQUdfUkVUVVJOU18xMjhCSVRTIAorCXN0ZAlyNCw4KHIzMCkKKyNlbHNlCisJc3R3CXI0LDQocjMwKQorI2VuZGlmCisKKwkvKiBGYWxsIHRocm91Z2guICAqLworCS8qIFdlIHdhbnQgdGhpcyBhdCB0aGUgZW5kIHRvIHNpbXBsaWZ5IGVoIGVwaWxvZyBjb21wdXRhdGlvbi4gICovCisKK0woZG9uZV9yZXR1cm5fdmFsdWUpOgorCS8qIFJlc3RvcmUgdGhlIHJlZ2lzdGVycyB3ZSB1c2VkIGFuZCByZXR1cm4uICAqLworCWxnCXIyOSxTQVZFRF9MUl9PRkZTRVQocjI4KQorCTsgZXBpbG9nCisJbGcJcjMxLC0oMSAqIEdQUl9CWVRFUykocjI4KQorCW10bHIJcjI5CisJbGcJcjMwLC0oMiAqIEdQUl9CWVRFUykocjI4KQorCWxnCXIyOSwtKDMgKiBHUFJfQllURVMpKHIyOCkKKwlsZwlyMjgsLSg0ICogR1BSX0JZVEVTKShyMjgpCisJbGcJcjEsMChyMSkKKwlibHIKIExGRTE6CisJLmFsaWduCTEKIC8qIEVORChfZmZpX2NhbGxfREFSV0lOKSAgKi8KIAogLyogUHJvdmlkZSBhIG51bGwgZGVmaW5pdGlvbiBvZiBfZmZpX2NhbGxfQUlYLiAgKi8KLS50ZXh0Ci0JLmFsaWduIDIKLS5nbG9ibCBfZmZpX2NhbGxfQUlYCi0udGV4dAorCS50ZXh0CisJLmdsb2JsIF9mZmlfY2FsbF9BSVgKIAkuYWxpZ24gMgogX2ZmaV9jYWxsX0FJWDoKIAlibHIKIC8qIEVORChfZmZpX2NhbGxfQUlYKSAgKi8KIAotLmRhdGEKLS5zZWN0aW9uIF9fVEVYVCxfX2VoX2ZyYW1lLGNvYWxlc2NlZCxub190b2Mrc3RyaXBfc3RhdGljX3N5bXMKKy8qIEVIIHN0dWZmLiAgKi8KKworI2RlZmluZSBFSF9EQVRBX0FMSUdOX0ZBQ1QgTU9ERV9DSE9JQ0UoMHg3YywweDc4KQorCisJLnN0YXRpY19kYXRhCisJLmFsaWduIExPRzJfR1BSX0JZVEVTCitMTEZCMCRub25fbGF6eV9wdHI6CisJLmdfbG9uZyBMc3RhcnRjb2RlCisKKwkuc2VjdGlvbiBfX1RFWFQsX19laF9mcmFtZSxjb2FsZXNjZWQsbm9fdG9jK3N0cmlwX3N0YXRpY19zeW1zK2xpdmVfc3VwcG9ydAogRUhfZnJhbWUxOgogCS5zZXQJTCRzZXQkMCxMRUNJRTEtTFNDSUUxCiAJLmxvbmcJTCRzZXQkMAk7IExlbmd0aCBvZiBDb21tb24gSW5mb3JtYXRpb24gRW50cnkKQEAgLTE5MywxNiArMzMyLDE3IEBACiAJLmJ5dGUJMHgxCTsgQ0lFIFZlcnNpb24KIAkuYXNjaWkJInpSXDAiCTsgQ0lFIEF1Z21lbnRhdGlvbgogCS5ieXRlCTB4MQk7IHVsZWIxMjggMHgxOyBDSUUgQ29kZSBBbGlnbm1lbnQgRmFjdG9yCi0JLmJ5dGUJMHg3Ywk7IHNsZWIxMjggLTQ7IENJRSBEYXRhIEFsaWdubWVudCBGYWN0b3IKKwkuYnl0ZQlFSF9EQVRBX0FMSUdOX0ZBQ1QgOyBzbGViMTI4IC00OyBDSUUgRGF0YSBBbGlnbm1lbnQgRmFjdG9yCiAJLmJ5dGUJMHg0MQk7IENJRSBSQSBDb2x1bW4KIAkuYnl0ZQkweDEJOyB1bGViMTI4IDB4MTsgQXVnbWVudGF0aW9uIHNpemUKLQkuYnl0ZQkweDkwCTsgRkRFIEVuY29kaW5nIChpbmRpcmVjdCBwY3JlbCkKKwkuYnl0ZQkweDEwCTsgRkRFIEVuY29kaW5nIChpbmRpcmVjdCBwY3JlbCkKIAkuYnl0ZQkweGMJOyBEV19DRkFfZGVmX2NmYQogCS5ieXRlCTB4MQk7IHVsZWIxMjggMHgxCiAJLmJ5dGUJMHgwCTsgdWxlYjEyOCAweDAKIAkuYWxpZ24JTE9HMl9HUFJfQllURVMKIExFQ0lFMToKLS5nbG9ibCBfZmZpX2NhbGxfREFSV0lOLmVoCisKKwkuZ2xvYmwgX2ZmaV9jYWxsX0RBUldJTi5laAogX2ZmaV9jYWxsX0RBUldJTi5laDoKIExTRkRFMToKIAkuc2V0CUwkc2V0JDEsTEVGREUxLUxBU0ZERTEKQEAgLTIxMCwxMSArMzUwLDExIEBACiBMQVNGREUxOgogCS5sb25nCUxBU0ZERTEtRUhfZnJhbWUxIDsgRkRFIENJRSBvZmZzZXQKIAkuZ19sb25nCUxMRkIwJG5vbl9sYXp5X3B0ci0uCTsgRkRFIGluaXRpYWwgbG9jYXRpb24KLQkuc2V0CUwkc2V0JDMsTEZFMS1MRkIwCisJLnNldAlMJHNldCQzLExGRTEtTHN0YXJ0Y29kZQogCS5nX2xvbmcJTCRzZXQkMwk7IEZERSBhZGRyZXNzIHJhbmdlCiAJLmJ5dGUgICAweDAgICAgIDsgdWxlYjEyOCAweDA7IEF1Z21lbnRhdGlvbiBzaXplCiAJLmJ5dGUJMHg0CTsgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotCS5zZXQJTCRzZXQkNCxMQ0ZJMC1MRkIxCisJLnNldAlMJHNldCQ0LExDRkkwLUxzdGFydGNvZGUKIAkubG9uZwlMJHNldCQ0CiAJLmJ5dGUJMHhkCTsgRFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIKIAkuYnl0ZQkweDA4CTsgdWxlYjEyOCAweDA4CkBAIC0yMzksNyArMzc5LDUgQEAKIAkuYnl0ZQkweDFjCTsgdWxlYjEyOCAweDFjCiAJLmFsaWduIExPRzJfR1BSX0JZVEVTCiBMRUZERTE6Ci0uZGF0YQotCS5hbGlnbiBMT0cyX0dQUl9CWVRFUwotTExGQjAkbm9uX2xhenlfcHRyOgotCS5nX2xvbmcgTEZCMAorCS5hbGlnbiAxCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUwppbmRleCA3OTU5ODM4Li4zZjY3OTBmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TCkBAIC0xLDYgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGRhcndpbl9jbG9zdXJlLlMgLSBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDMsIDIwMDQsIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAgIEluYy4gYmFzZWQgb24gcHBjX2Nsb3N1cmUuUworICAgZGFyd2luX2Nsb3N1cmUuUyAtIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMywgMjAwNCwgMjAxMCwgCisgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gCisgICBiYXNlZCBvbiBwcGNfY2xvc3VyZS5TCiAKICAgIFBvd2VyUEMgQXNzZW1ibHkgZ2x1ZS4KIApAQCAtMzMsOTEgKzM0LDE3NyBAQAogI2RlZmluZSBNT0RFX0NIT0lDRSh4LCB5KSB4CiAjZW5kaWYKIAotI2RlZmluZSBsZ3UgICAgIE1PREVfQ0hPSUNFKGx3enUsIGxkdSkKKyNkZWZpbmUgbWFjaGluZV9jaG9pY2UJTU9ERV9DSE9JQ0UocHBjNzQwMCxwcGM2NCkKIAotI2RlZmluZSBnX2xvbmcgIE1PREVfQ0hPSUNFKGxvbmcsIHF1YWQpICAgICAgICAgLyogdXNhZ2UgaXMgIi5nX2xvbmciICovCis7IERlZmluZSBzb21lIHBzZXVkby1vcGNvZGVzIGZvciBzaXplLWluZGVwZW5kZW50IGxvYWQgJiBzdG9yZSBvZiBHUFJzIC4uLgorI2RlZmluZSBsZ3UJCU1PREVfQ0hPSUNFKGx3enUsIGxkdSkKKyNkZWZpbmUgbGcJCU1PREVfQ0hPSUNFKGx3eixsZCkKKyNkZWZpbmUgc2cJCU1PREVfQ0hPSUNFKHN0dyxzdGQpCisjZGVmaW5lIHNndQkJTU9ERV9DSE9JQ0Uoc3R3dSxzdGR1KQogCi0jZGVmaW5lIExPRzJfR1BSX0JZVEVTICBNT0RFX0NIT0lDRSgyLDMpICAgICAgICAvKiBsb2cyKEdQUl9CWVRFUykgKi8KKzsgLi4uIGFuZCB0aGUgc2l6ZSBvZiBHUFJzIGFuZCB0aGVpciBzdG9yYWdlIGluZGljYXRvci4KKyNkZWZpbmUgR1BSX0JZVEVTCU1PREVfQ0hPSUNFKDQsOCkKKyNkZWZpbmUgTE9HMl9HUFJfQllURVMJTU9ERV9DSE9JQ0UoMiwzKQkvKiBsb2cyKEdQUl9CWVRFUykgKi8KKyNkZWZpbmUgZ19sb25nCQlNT0RFX0NIT0lDRShsb25nLCBxdWFkKQkvKiB1c2FnZSBpcyAiLmdfbG9uZyIgKi8KKworOyBGcm9tIHRoZSBBQkkgZG9jOiAiTWFjIE9TIFggQUJJIEZ1bmN0aW9uIENhbGwgR3VpZGUiIFZlcnNpb24gMjAwOS0wMi0wNC4KKyNkZWZpbmUgTElOS0FHRV9TSVpFCU1PREVfQ0hPSUNFKDI0LDQ4KQorI2RlZmluZSBQQVJBTV9BUkVBCU1PREVfQ0hPSUNFKDMyLDY0KQorCisjZGVmaW5lIFNBVkVEX0NSX09GRlNFVAlNT0RFX0NIT0lDRSg0LDgpCS8qIHNhdmUgcG9zaXRpb24gZm9yIENSICovCisjZGVmaW5lIFNBVkVEX0xSX09GRlNFVAlNT0RFX0NIT0lDRSg4LDE2KQkvKiBzYXZlIHBvc2l0aW9uIGZvciBsciAqLworCisvKiBXQVJOSU5HOiBpZiBmZmlfdHlwZSBpcyBjaGFuZ2VkLi4uIGhlcmUgYmUgbW9uc3RlcnMuICAKKyAgIE9mZnNldHMgb2YgaXRlbXMgd2l0aGluIHRoZSByZXN1bHQgdHlwZS4gICovCisjZGVmaW5lIEZGSV9UWVBFX1RZUEUJTU9ERV9DSE9JQ0UoNiwxMCkKKyNkZWZpbmUgRkZJX1RZUEVfRUxFTQlNT0RFX0NIT0lDRSg4LDE2KQorCisjZGVmaW5lIFNBVkVEX0ZQUl9DT1VOVCAxMworI2RlZmluZSBGUFJfU0laRQk4CisvKiBiaWdnZXN0IG02NCBzdHJ1Y3QgcmV0IGlzIDhHUFJTICsgMTNGUFJTID0gMTY4IGJ5dGVzIC0gcm91bmRlZCB0byAxNmJ5dGVzID0gMTc2LiAqLworI2RlZmluZSBSRVNVTFRfQllURVMJTU9ERV9DSE9JQ0UoMTYsMTc2KQorCis7IFRoZSB3aG9sZSBzdGFjayBmcmFtZSAqKk1VU1QqKiBiZSAxNmJ5dGUtYWxpZ25lZC4KKyNkZWZpbmUgU0FWRV9TSVpFICgoKExJTktBR0VfU0laRStQQVJBTV9BUkVBK1NBVkVEX0ZQUl9DT1VOVCpGUFJfU0laRStSRVNVTFRfQllURVMpKzE1KSAmIC0xNkxMKQorI2RlZmluZSBQQURfU0laRSAoU0FWRV9TSVpFLShMSU5LQUdFX1NJWkUrUEFSQU1fQVJFQStTQVZFRF9GUFJfQ09VTlQqRlBSX1NJWkUrUkVTVUxUX0JZVEVTKSkKKworI2RlZmluZSBQQVJFTlRfUEFSTV9CQVNFIChTQVZFX1NJWkUrTElOS0FHRV9TSVpFKQorI2RlZmluZSBGUF9TQVZFX0JBU0UgKExJTktBR0VfU0laRStQQVJBTV9BUkVBKQorCisjaWYgZGVmaW5lZChfX0VOVklST05NRU5UX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEX18pICYmIF9fRU5WSVJPTk1FTlRfTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRURfXyA+PSAxMDUwCis7IFdlIG5vIGxvbmdlciBuZWVkIHRoZSBwaWMgc3ltYm9sIHN0dWIgZm9yIERhcndpbiA+PSA5LgorI2RlZmluZSBCTENMU19IRUxQIF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOCisjZGVmaW5lIFNUUlVDVF9SRVRWQUxVRV9QIF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AKKyNkZWZpbmUgUEFTU19TVFJfRkxPQVRTIF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMKKyN1bmRlZiBXQU5UX1NUVUIKKyNlbHNlCisjZGVmaW5lIEJMQ0xTX0hFTFAgTF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJHN0dWIKKyNkZWZpbmUgU1RSVUNUX1JFVFZBTFVFX1AgTF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3Akc3R1YgorI2RlZmluZSBQQVNTX1NUUl9GTE9BVFMgTF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMkc3R1YgorI2RlZmluZSBXQU5UX1NUVUIKKyNlbmRpZgorCisvKiBtMzIvbTY0CisKKyAgIFRoZSBzdGFjayBsYXlvdXQgbG9va3MgbGlrZSB0aGlzOgorCisgICB8ICAgQWRkaXRpb25hbCBwYXJhbXMuLi4JCQl8IHwgICAgIEhpZ2hlciBhZGRyZXNzCisgICB+CQkJCQkJfiB+CisgICB8ICAgUGFyYW1ldGVycyAgICAgIChhdCBsZWFzdCA4KjQvOD0zMi82NCkJfCB8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUworICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgVE9DPVIyIChBSVgpIFJlc2VydmVkIChEYXJ3aW4pICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgIDIqNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgU3BhY2UgZm9yIGNhbGxlZWBzIExSCQk0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBTYXZlZCBDUiBbbG93IHdvcmQgZm9yIG02NF0gICAgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBDdXJyZW50IGJhY2tjaGFpbiBwb2ludGVyCTQvOAl8LS8gUGFyZW50YHMgZnJhbWUuCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IDwrIDw8PCBvbiBlbnRyeSB0bworICAgfCAgIFJlc3VsdCBCeXRlcwkJICAgICAgIDE2LzE3Ngl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfiAgIHBhZGRpbmcgdG8gMTYtYnl0ZSBhbGlnbm1lbnQJCX4gfgorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgTlVNX0ZQUl9BUkdfUkVHSVNURVJTIHNsb3RzCQl8IHwKKyAgIHwgICBoZXJlIGZwMTMgLi4gZnAxCQkgICAgICAgMTMqOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFIzLi5SMTAJCQkgIDgqNC84PTMyLzY0CXwgfCBOVU1fR1BSX0FSR19SRUdJU1RFUlMKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFRPQz1SMiAoQUlYKSBSZXNlcnZlZCAoRGFyd2luKSAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlzdGFjawl8CisgICB8ICAgUmVzZXJ2ZWQgW2NvbXBpbGVyLGJpbmRlcl0gICAgIDIqNC84CXwgfAlncm93cwl8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJZG93bglWCisgICB8ICAgU3BhY2UgZm9yIGNhbGxlZXMgTFIJCTQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlsb3dlciBhZGRyZXNzZXMKKyAgIHwgICBTYXZlZCBDUiBbbG93IHdvcmQgZm9yIG02NF0gICAgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwgICAgIHN0YWNrIHBvaW50ZXIgaGVyZQorICAgfCAgIEN1cnJlbnQgYmFja2NoYWluIHBvaW50ZXIJNC84CXwtLwlkdXJpbmcKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgICA8PDwJY2FsbC4KKworKi8KIAogCS5maWxlCSJkYXJ3aW5fY2xvc3VyZS5TIgotLnRleHQKLQkuYWxpZ24gTE9HMl9HUFJfQllURVMKLS5nbG9ibCBfZmZpX2Nsb3N1cmVfQVNNCiAKLS50ZXh0CisJLm1hY2hpbmUgbWFjaGluZV9jaG9pY2UKKworCS50ZXh0CisJLmdsb2JsIF9mZmlfY2xvc3VyZV9BU00KIAkuYWxpZ24gTE9HMl9HUFJfQllURVMKIF9mZmlfY2xvc3VyZV9BU006CiBMRkIxOgotCW1mbHIJcjAJCS8qIGV4dHJhY3QgcmV0dXJuIGFkZHJlc3MgICovCi0Jc3R3CXIwLDgocjEpCS8qIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzICAqLworTHN0YXJ0Y29kZToKKwltZmxyCXIwCQkJLyogZXh0cmFjdCByZXR1cm4gYWRkcmVzcyAgKi8KKwlzZwlyMCxTQVZFRF9MUl9PRkZTRVQocjEpCS8qIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzICAqLwogTENGSTA6Ci0JLyogMjQgQnl0ZXMgKExpbmthZ2UgQXJlYSkKLQkgICAzMiBCeXRlcyAob3V0Z29pbmcgcGFyYW1ldGVyIGFyZWEsIGFsd2F5cyByZXNlcnZlZCkKLQkgICAxMDQgQnl0ZXMgKDEzKjggZnJvbSBGUFIpCi0JICAgMTYgQnl0ZXMgKHJlc3VsdCkKLQkgICAxNzYgQnl0ZXMgICovCi0KLQlzdHd1CXIxLC0xNzYocjEpCS8qIHNraXAgb3ZlciBjYWxsZXIgc2F2ZSBhcmVhCi0JCQkJa2VlcCBzdGFjayBhbGlnbmVkIHRvIDE2LiAgKi8KKwlzZ3UJcjEsLVNBVkVfU0laRShyMSkJLyogc2tpcCBvdmVyIGNhbGxlciBzYXZlIGFyZWEKKwkJCQkJa2VlcCBzdGFjayBhbGlnbmVkIHRvIDE2LiAgKi8KIExDRkkxOgogCS8qIFdlIHdhbnQgdG8gYnVpbGQgdXAgYW4gYXJlYSBmb3IgdGhlIHBhcmFtZXRlcnMgcGFzc2VkCiAJICAgaW4gcmVnaXN0ZXJzLiAoYm90aCBmbG9hdGluZyBwb2ludCBhbmQgaW50ZWdlcikgICovCiAKLQkvKiBXZSBzdG9yZSBncHIgMyB0byBncHIgMTAgKGFsaWduZWQgdG8gNCkKLQkgICBpbiB0aGUgcGFyZW50cyBvdXRnb2luZyBhcmVhLiAgKi8KLQlzdHcgICByMywyMDAocjEpCi0Jc3R3ICAgcjQsMjA0KHIxKQotCXN0dyAgIHI1LDIwOChyMSkKLQlzdHcgICByNiwyMTIocjEpCi0Jc3R3ICAgcjcsMjE2KHIxKQotCXN0dyAgIHI4LDIyMChyMSkKLQlzdHcgICByOSwyMjQocjEpCi0Jc3R3ICAgcjEwLDIyOChyMSkKKwkvKiBQdXQgZ3ByIDMgdG8gZ3ByIDEwIGluIHRoZSBwYXJlbnRzIG91dGdvaW5nIGFyZWEuLi4KKwkgICAuLi4gdGhlIHJlbWFpbmRlciBvZiBhbnkgcGFyYW1zIHRoYXQgb3ZlcmZsb3dlZCB0aGUgcmVncyB3aWxsCisJICAgZm9sbG93IGhlcmUuICAqLworCXNnCXIzLCAoUEFSRU5UX1BBUk1fQkFTRSAgICAgICAgICAgICAgICApKHIxKQorCXNnCXI0LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAgICApKHIxKQorCXNnCXI1LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDIpKHIxKQorCXNnCXI2LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDMpKHIxKQorCXNnCXI3LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDQpKHIxKQorCXNnCXI4LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDUpKHIxKQorCXNnCXI5LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDYpKHIxKQorCXNnCXIxMCwoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDcpKHIxKQogCi0JLyogV2Ugc2F2ZSBmcHIgMSB0byBmcHIgMTMuIChhbGlnbmVkIHRvIDgpICAqLwotCXN0ZmQgIGYxLDU2KHIxKQotCXN0ZmQgIGYyLDY0KHIxKQotCXN0ZmQgIGYzLDcyKHIxKQotCXN0ZmQgIGY0LDgwKHIxKQotCXN0ZmQgIGY1LDg4KHIxKQotCXN0ZmQgIGY2LDk2KHIxKQotCXN0ZmQgIGY3LDEwNChyMSkKLQlzdGZkICBmOCwxMTIocjEpCi0Jc3RmZCAgZjksMTIwKHIxKQotCXN0ZmQgIGYxMCwxMjgocjEpCi0Jc3RmZCAgZjExLDEzNihyMSkKLQlzdGZkICBmMTIsMTQ0KHIxKQotCXN0ZmQgIGYxMywxNTIocjEpCisJLyogV2Ugc2F2ZSBmcHIgMSB0byBmcHIgMTQgaW4gb3VyIG93biBzYXZlIGZyYW1lLiAgKi8KKwlzdGZkCWYxLCAoRlBfU0FWRV9CQVNFICAgICAgICAgICAgICAgICApKHIxKQorCXN0ZmQJZjIsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgICAgICkocjEpCisJc3RmZAlmMywgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDIgKShyMSkKKwlzdGZkCWY0LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMyApKHIxKQorCXN0ZmQJZjUsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA0ICkocjEpCisJc3RmZAlmNiwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDUgKShyMSkKKwlzdGZkCWY3LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNiApKHIxKQorCXN0ZmQJZjgsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA3ICkocjEpCisJc3RmZAlmOSwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDggKShyMSkKKwlzdGZkCWYxMCwoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogOSApKHIxKQorCXN0ZmQJZjExLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAxMCkocjEpCisJc3RmZAlmMTIsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDExKShyMSkKKwlzdGZkCWYxMywoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMTIpKHIxKQogCiAJLyogU2V0IHVwIHJlZ2lzdGVycyBmb3IgdGhlIHJvdXRpbmUgdGhhdCBhY3R1YWxseSBkb2VzIHRoZSB3b3JrCiAJICAgZ2V0IHRoZSBjb250ZXh0IHBvaW50ZXIgZnJvbSB0aGUgdHJhbXBvbGluZS4gICovCi0JbXIgcjMscjExCisJbXIJcjMscjExCiAKIAkvKiBOb3cgbG9hZCB1cCB0aGUgcG9pbnRlciB0byB0aGUgcmVzdWx0IHN0b3JhZ2UuICAqLwotCWFkZGkgcjQscjEsMTYwCisJYWRkaQlyNCxyMSwoU0FWRV9TSVpFLVJFU1VMVF9CWVRFUykKIAogCS8qIE5vdyBsb2FkIHVwIHRoZSBwb2ludGVyIHRvIHRoZSBzYXZlZCBncHIgcmVnaXN0ZXJzLiAgKi8KLQlhZGRpIHI1LHIxLDIwMAorCWFkZGkJcjUscjEsUEFSRU5UX1BBUk1fQkFTRQogCiAJLyogTm93IGxvYWQgdXAgdGhlIHBvaW50ZXIgdG8gdGhlIHNhdmVkIGZwciByZWdpc3RlcnMuICAqLwotCWFkZGkgcjYscjEsNTYKKwlhZGRpCXI2LHIxLEZQX1NBVkVfQkFTRQogCiAJLyogTWFrZSB0aGUgY2FsbC4gICovCi0JYmwJTGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kc3R1YgorCWJsCUJMQ0xTX0hFTFAKIAotCS8qIE5vdyByMyBjb250YWlucyB0aGUgcmV0dXJuIHR5cGUKLQkgICBzbyB1c2UgaXQgdG8gbG9vayB1cCBpbiBhIHRhYmxlCisJLyogcjMgY29udGFpbnMgdGhlIHJ0eXBlIHBvaW50ZXIuLi4gc2F2ZSBpdCBzaW5jZSB3ZSB3aWxsIG5lZWQKKwkgICBpdCBsYXRlci4gICovCisJc2cJcjMsTElOS0FHRV9TSVpFKHIxKQk7IGZmaV90eXBlICogcmVzdWx0X3R5cGUKKwlsZwlyMCwwKHIzKQkJOyBzaXplID0+IHIwCisJbGh6CXIzLEZGSV9UWVBFX1RZUEUocjMpCTsgdHlwZSA9PiByMworCisJLyogVGhlIGhlbHBlciB3aWxsIGhhdmUgaW50ZXJjZXB0ZWQgc3RydXR1cmUgcmV0dXJucyBhbmQgaW5zZXJ0ZWQKKwkgICB0aGUgY2FsbGVyYHMgZGVzdGluYXRpb24gYWRkcmVzcyBmb3Igc3RydWN0cyByZXR1cm5lZCBieSByZWYuICAqLworCisJLyogcjMgY29udGFpbnMgdGhlIHJldHVybiB0eXBlICBzbyB1c2UgaXQgdG8gbG9vayB1cCBpbiBhIHRhYmxlCiAJICAgc28gd2Uga25vdyBob3cgdG8gZGVhbCB3aXRoIGVhY2ggdHlwZS4gICovCiAKLQkvKiBMb29rIHVwIHRoZSBwcm9wZXIgc3RhcnRpbmcgcG9pbnQgaW4gdGFibGUKLQkgICBieSB1c2luZyByZXR1cm4gdHlwZSBhcyBvZmZzZXQuICAqLwotCWFkZGkgIHI1LHIxLDE2MAkJICAvKiBHZXQgcG9pbnRlciB0byByZXN1bHRzIGFyZWEuICAqLwotCWJsICAgIExnZXRfcmV0X3R5cGUwX2FkZHIgLyogR2V0IHBvaW50ZXIgdG8gTHJldF90eXBlMCBpbnRvIExSLiAgKi8KLQltZmxyICByNAkJICAvKiBNb3ZlIHRvIHI0LiAgKi8KLQlzbHdpICByMyxyMyw0CQkgIC8qIE5vdyBtdWx0aXBseSByZXR1cm4gdHlwZSBieSAxNi4gICovCi0JYWRkICAgcjMscjMscjQJCSAgLyogQWRkIGNvbnRlbnRzIG9mIHRhYmxlIHRvIHRhYmxlIGFkZHJlc3MuICAqLwotCW10Y3RyIHIzCi0JYmN0cgkJCSAgLyogSnVtcCB0byBpdC4gICovCisJYWRkaQlyNSxyMSwoU0FWRV9TSVpFLVJFU1VMVF9CWVRFUykgLyogT3RoZXJ3aXNlLCBvdXIgcmV0dXJuIGlzIGhlcmUuICAqLworCWJsCUxnZXRfcmV0X3R5cGUwX2FkZHIJLyogR2V0IHBvaW50ZXIgdG8gTHJldF90eXBlMCBpbnRvIExSLiAgKi8KKwltZmxyCXI0CQkJLyogTW92ZSB0byByNC4gICovCisJc2x3aQlyMyxyMyw0CQkJLyogTm93IG11bHRpcGx5IHJldHVybiB0eXBlIGJ5IDE2LiAgKi8KKwlhZGQJcjMscjMscjQJCS8qIEFkZCBjb250ZW50cyBvZiB0YWJsZSB0byB0YWJsZSBhZGRyZXNzLiAgKi8KKwltdGN0cglyMworCWJjdHIJCQkgCSAvKiBKdW1wIHRvIGl0LiAgKi8KIExGRTE6CiAvKiBFYWNoIG9mIHRoZSByZXRfdHlwZVggY29kZSBmcmFnbWVudHMgaGFzIHRvIGJlIGV4YWN0bHkgMTYgYnl0ZXMgbG9uZwogICAgKDQgaW5zdHJ1Y3Rpb25zKS4gRm9yIGNhY2hlIGVmZmVjdGl2ZW5lc3Mgd2UgYWxpZ24gdG8gYSAxNiBieXRlIGJvdW5kYXJ5CkBAIC0xNDAsNyArMjI3LDcgQEAKIAogLyogY2FzZSBGRklfVFlQRV9JTlQgICovCiBMcmV0X3R5cGUxOgotCWx3eglyMywwKHI1KQorCWxnCXIzLDAocjUpCiAJYglMZmluaXNoCiAJbm9wCiAJbm9wCkBAIC0xNjgsODUgKzI1NSwyMjQgQEAKIAogLyogY2FzZSBGRklfVFlQRV9VSU5UOCAgKi8KIExyZXRfdHlwZTU6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGJ6CXIzLDcocjUpCisjZWxzZQogCWxieglyMywzKHI1KQorI2VuZGlmCiAJYglMZmluaXNoCiAJbm9wCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfU0lOVDggICovCiBMcmV0X3R5cGU2OgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxieglyMyw3KHI1KQorI2Vsc2UKIAlsYnoJcjMsMyhyNSkKKyNlbmRpZgogCWV4dHNiCXIzLHIzCiAJYglMZmluaXNoCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfVUlOVDE2ICAqLwogTHJldF90eXBlNzoKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsaHoJcjMsNihyNSkKKyNlbHNlCiAJbGh6CXIzLDIocjUpCisjZW5kaWYKIAliCUxmaW5pc2gKIAlub3AKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9TSU5UMTYgICovCiBMcmV0X3R5cGU4OgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxoYQlyMyw2KHI1KQorI2Vsc2UKIAlsaGEJcjMsMihyNSkKKyNlbmRpZgogCWIJTGZpbmlzaAogCW5vcAogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1VJTlQzMiAgKi8KIExyZXRfdHlwZTk6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbHd6CXIzLDQocjUpCisjZWxzZQogCWx3eglyMywwKHI1KQorI2VuZGlmCiAJYglMZmluaXNoCiAJbm9wCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfU0lOVDMyICAqLwogTHJldF90eXBlMTA6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbHd6CXIzLDQocjUpCisjZWxzZQogCWx3eglyMywwKHI1KQorI2VuZGlmCiAJYglMZmluaXNoCiAJbm9wCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfVUlOVDY0ICAqLwogTHJldF90eXBlMTE6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGcJcjMsMChyNSkKKwliCUxmaW5pc2gKKwlub3AKKyNlbHNlCiAJbHd6CXIzLDAocjUpCiAJbHd6CXI0LDQocjUpCiAJYglMZmluaXNoCisjZW5kaWYKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9TSU5UNjQgICovCiBMcmV0X3R5cGUxMjoKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsZwlyMywwKHI1KQorCWIJTGZpbmlzaAorCW5vcAorI2Vsc2UKIAlsd3oJcjMsMChyNSkKIAlsd3oJcjQsNChyNSkKIAliCUxmaW5pc2gKKyNlbmRpZgogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1NUUlVDVCAgKi8KIExyZXRfdHlwZTEzOgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxnCXIzLDAocjUpCQk7IHdlIG5lZWQgYXQgbGVhc3QgdGhpcy4uLgorCWNtcGkJMCxyMCw0CisJYmd0CUxzdHJ1Y3RlbmQJCTsgbm90IGEgc3BlY2lhbCBzbWFsbCBjYXNlCisJYglMc21hbGxzdHJ1Y3QJCTsgc2VlIGlmIHdlIG5lZWQgbW9yZS4KKyNlbHNlCisJY21waQkwLHIwLDQKKwliZ3QJTGZpbmlzaAkJOyBub3QgYnkgdmFsdWUKKwlsZwlyMywwKHI1KQogCWIJTGZpbmlzaAotCW5vcAorI2VuZGlmCisvKiBjYXNlIEZGSV9UWVBFX1BPSU5URVIgICovCitMcmV0X3R5cGUxNDoKKwlsZwlyMywwKHI1KQorCWIJTGZpbmlzaAogCW5vcAogCW5vcAogCi0vKiBjYXNlIEZGSV9UWVBFX1BPSU5URVIgICovCi1McmV0X3R5cGUxNDoKLQlsd3oJcjMsMChyNSkKLQliCUxmaW5pc2gKLQlub3AKLQlub3AKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKK0xzbWFsbHN0cnVjdDoKKwliZXEJTGZvdXIJCQk7IGNvbnRpbnVhdGlvbiBvZiBMcmV0MTMuCisJY21waQkwLHIwLDMKKwliZXEJTGZpbmlzaAkJCTsgZG9uYHQgYWRqdXN0IHRoaXMgLSBjYW5gdCBiZSBhbnkgZmxvYXRzIGhlcmUuLi4KKwlzcmRpCXIzLHIzLDQ4CisJY21waQkwLHIwLDIKKwliZXEJTGZpbmlzaAkJCTsgLi4gb3IgaGVyZSAuLgorCXNyZGkJcjMscjMsOAorCWIgCUxmaW5pc2gJCQk7IC4uIG9yIGhlcmUuCisKK0xmb3VyOgorCWxnCXI2LExJTktBR0VfU0laRShyMSkJOyBnZXQgdGhlIHJlc3VsdCB0eXBlCisJbGcJcjYsRkZJX1RZUEVfRUxFTShyNikJOyBlbGVtZW50cyBhcnJheSBwb2ludGVyCisJbGcJcjYsMChyNikJCTsgZmlyc3QgZWxlbWVudAorCWxoeglyMCxGRklfVFlQRV9UWVBFKHI2KQk7IE9LIGdvIHRoZSB0eXBlCisJY21waQkwLHIwLDIJCQk7IEZGSV9UWVBFX0ZMT0FUCisJYm5lCUxmb3VyaW50CisJbGZzCWYxLDAocjUpCQk7IGp1c3Qgb25lIGZsb2F0IGluIHRoZSBzdHJ1Y3QuCisJYiAJTGZpbmlzaAorCitMZm91cmludDoKKwlzcmRpCXIzLHIzLDMyCQk7IGZvdXIgYnl0ZXMuCisJYiAJTGZpbmlzaAorCitMc3RydWN0ZW5kOgorCWxnCXIzLExJTktBR0VfU0laRShyMSkJOyBnZXQgdGhlIHJlc3VsdCB0eXBlCisJYmwJU1RSVUNUX1JFVFZBTFVFX1AKKwljbXBpCTAscjMsMAorCWJlcQlMZmluaXNoCQkJOyBub3BlLgorCS8qIFJlY292ZXIgYSBwb2ludGVyIHRvIHRoZSByZXN1bHRzLiAgKi8KKwlhZGRpCXIxMSxyMSwoU0FWRV9TSVpFLVJFU1VMVF9CWVRFUykKKwlsZwlyMywwKHIxMSkJCTsgd2UgbmVlZCBhdCBsZWFzdCB0aGlzLi4uCisJbGcJcjQsOChyMTEpCisJY21waQkwLHIwLDE2CisJYmVxCUxmaW5pc2gJCTsgc3BlY2lhbCBjYXNlIDE2IGJ5dGVzIHdlIGRvbid0IGNvbnNpZGVyIGZsb2F0cy4KKworCS8qIE9LLCBmcnVzdHJhdGluZ2x5LCB0aGUgcHJvY2VzcyBvZiBzYXZpbmcgdGhlIHN0cnVjdCB0byBtZW0gbWlnaHQgaGF2ZQorCSAgIG1lc3NlZCB3aXRoIHRoZSBGUFJzLCBzbyB3ZSBoYXZlIHRvIHJlLWxvYWQgdGhlbSA6KC4KKwkgICBXZWBsbCB1c2Ugb3VyIEZQUnMgc3BhY2UgYWdhaW4gLSBjYWxsaW5nOiAKKwkgICB2b2lkIGRhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyAoZmZpX3R5cGUgKnMsIGNoYXIgKnNyYywgCisJCQkJCSAgICAgdW5zaWduZWQgKm5mcHIsIGRvdWJsZSAqKmZwcnMpIAorCSAgIFdlYGxsIHRlbXBvcmFyaWx5IHBpbmNoIHRoZSBmaXJzdCB0d28gc2xvdHMgb2YgdGhlIHBhcmFtIGFyZWEgZm9yIGxvY2FsCisJICAgdmFycyB1c2VkIGJ5IHRoZSByb3V0aW5lLiAgKi8KKwl4b3IJcjYscjYscjYKKwlhZGRpCXI1LHIxLFBBUkVOVF9QQVJNX0JBU0UJCTsgc29tZSBzcGFjZQorCXNnCXI2LDAocjUpCQkJOyAqbmZwciB6ZXJvZWQuCisJYWRkaQlyNixyNSw4CQkJCTsgKipmcHJzCisJYWRkaQlyMyxyMSxGUF9TQVZFX0JBU0UJCTsgcG9pbnRlciB0byBGUFJzIHNwYWNlCisJc2cJcjMsMChyNikKKwltcglyNCxyMTEJCQkJOyB0aGUgc3RydWN0IGlzIGhlcmUuLi4KKwlsZwlyMyxMSU5LQUdFX1NJWkUocjEpCQk7IGZmaV90eXBlICogcmVzdWx0X3R5cGUuCisJYmwJUEFTU19TVFJfRkxPQVRTCQkJOyBnZXQgc3RydWN0IGZsb2F0cyBpbnRvIEZQUiBzYXZlIHNwYWNlLgorCS8qIFNlZSBpZiB3ZSB1c2VkIGFueSBmbG9hdHMgICovCisJbHd6CXIwLChTQVZFX1NJWkUtUkVTVUxUX0JZVEVTKShyMSkJCisJY21waQkwLHIwLDAKKwliZXEJTHN0cnVjdGludHMJCQk7IG5vcGUuCisJLyogT0sgbG9hZCBgZW0gdXAuLi4gKi8KKwlsZmQJZjEsIChGUF9TQVZFX0JBU0UgICAgICAgICAgICAgICAgICkocjEpCisJbGZkCWYyLCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICAgICApKHIxKQorCWxmZAlmMywgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDIgKShyMSkKKwlsZmQJZjQsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAzICkocjEpCisJbGZkCWY1LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNCApKHIxKQorCWxmZAlmNiwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDUgKShyMSkKKwlsZmQJZjcsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA2ICkocjEpCisJbGZkCWY4LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNyApKHIxKQorCWxmZAlmOSwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDggKShyMSkKKwlsZmQJZjEwLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA5ICkocjEpCisJbGZkCWYxMSwoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMTApKHIxKQorCWxmZAlmMTIsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDExKShyMSkKKwlsZmQJZjEzLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAxMikocjEpCisKKwkvKiBwb2ludCBiYWNrIGF0IG91ciBzYXZlZCBzdHJ1Y3QuICAqLworTHN0cnVjdGludHM6CisJYWRkaQlyMTEscjEsKFNBVkVfU0laRS1SRVNVTFRfQllURVMpCisJbGcJcjMsMChyMTEpCQkJOyB3ZSBlbmQgdXAgcGlja2luZyB0aGUKKwlsZwlyNCw4KHIxMSkJCQk7IGZpcnN0IHR3byBhZ2Fpbi4KKwlsZwlyNSwxNihyMTEpCisJbGcJcjYsMjQocjExKQorCWxnCXI3LDMyKHIxMSkKKwlsZwlyOCw0MChyMTEpCisJbGcJcjksNDgocjExKQorCWxnCXIxMCw1NihyMTEpCisjZW5kaWYKIAogLyogY2FzZSBkb25lICAqLwogTGZpbmlzaDoKLQlhZGRpCXIxLHIxLDE3NgkvKiBSZXN0b3JlIHN0YWNrIHBvaW50ZXIuICAqLwotCWx3eglyMCw4KHIxKQkvKiBHZXQgcmV0dXJuIGFkZHJlc3MuICAqLwotCW10bHIJcjAJCS8qIFJlc2V0IGxpbmsgcmVnaXN0ZXIuICAqLworCWFkZGkJcjEscjEsU0FWRV9TSVpFCQkvKiBSZXN0b3JlIHN0YWNrIHBvaW50ZXIuICAqLworCWxnCXIwLFNBVkVEX0xSX09GRlNFVChyMSkJLyogR2V0IHJldHVybiBhZGRyZXNzLiAgKi8KKwltdGxyCXIwCQkJLyogUmVzZXQgbGluayByZWdpc3Rlci4gICovCiAJYmxyCi0KK0xlbmRjb2RlOgorCS5hbGlnbiAxCisJCiAvKiBFTkQoZmZpX2Nsb3N1cmVfQVNNKSAgKi8KIAotLmRhdGEKLS5zZWN0aW9uIF9fVEVYVCxfX2VoX2ZyYW1lLGNvYWxlc2NlZCxub190b2Mrc3RyaXBfc3RhdGljX3N5bXMrbGl2ZV9zdXBwb3J0CisvKiBFSCBmcmFtZSBzdHVmZi4gICovCisjZGVmaW5lIEVIX0RBVEFfQUxJR05fRkFDVCBNT0RFX0NIT0lDRSgweDdjLDB4NzgpCisvKiAxNzYsIDQwMCAqLworI2RlZmluZSBFSF9GUkFNRV9PRkZTRVRBIE1PREVfQ0hPSUNFKDE3NiwweDkwKQorI2RlZmluZSBFSF9GUkFNRV9PRkZTRVRCIE1PREVfQ0hPSUNFKDEsMykKKworCS5zdGF0aWNfZGF0YQorCS5hbGlnbiBMT0cyX0dQUl9CWVRFUworTExGQjEkbm9uX2xhenlfcHRyOgorCS5nX2xvbmcgTHN0YXJ0Y29kZQorCisJLnNlY3Rpb24gX19URVhULF9fZWhfZnJhbWUsY29hbGVzY2VkLG5vX3RvYytzdHJpcF9zdGF0aWNfc3ltcytsaXZlX3N1cHBvcnQKIEVIX2ZyYW1lMToKIAkuc2V0CUwkc2V0JDAsTEVDSUUxLUxTQ0lFMQogCS5sb25nCUwkc2V0JDAJOyBMZW5ndGggb2YgQ29tbW9uIEluZm9ybWF0aW9uIEVudHJ5CkBAIC0yNTUsMTYgKzQ4MSwxNiBAQAogCS5ieXRlCTB4MQk7IENJRSBWZXJzaW9uCiAJLmFzY2lpCSJ6UlwwIgk7IENJRSBBdWdtZW50YXRpb24KIAkuYnl0ZQkweDEJOyB1bGViMTI4IDB4MTsgQ0lFIENvZGUgQWxpZ25tZW50IEZhY3RvcgotCS5ieXRlCTB4N2MJOyBzbGViMTI4IC00OyBDSUUgRGF0YSBBbGlnbm1lbnQgRmFjdG9yCisJLmJ5dGUJRUhfREFUQV9BTElHTl9GQUNUIDsgc2xlYjEyOCAtNDsgQ0lFIERhdGEgQWxpZ25tZW50IEZhY3RvcgogCS5ieXRlCTB4NDEJOyBDSUUgUkEgQ29sdW1uCiAJLmJ5dGUJMHgxCTsgdWxlYjEyOCAweDE7IEF1Z21lbnRhdGlvbiBzaXplCi0JLmJ5dGUJMHg5MAk7IEZERSBFbmNvZGluZyAoaW5kaXJlY3QgcGNyZWwpCisJLmJ5dGUJMHgxMAk7IEZERSBFbmNvZGluZyAoaW5kaXJlY3QgcGNyZWwpCiAJLmJ5dGUJMHhjCTsgRFdfQ0ZBX2RlZl9jZmEKIAkuYnl0ZQkweDEJOyB1bGViMTI4IDB4MQogCS5ieXRlCTB4MAk7IHVsZWIxMjggMHgwCiAJLmFsaWduCUxPRzJfR1BSX0JZVEVTCiBMRUNJRTE6Ci0uZ2xvYmwgX2ZmaV9jbG9zdXJlX0FTTS5laAorCS5nbG9ibCBfZmZpX2Nsb3N1cmVfQVNNLmVoCiBfZmZpX2Nsb3N1cmVfQVNNLmVoOgogTFNGREUxOgogCS5zZXQJTCRzZXQkMSxMRUZERTEtTEFTRkRFMQpAQCAtMjczLDQ1ICs0OTksNzggQEAKIExBU0ZERTE6CiAJLmxvbmcJTEFTRkRFMS1FSF9mcmFtZTEJOyBGREUgQ0lFIG9mZnNldAogCS5nX2xvbmcJTExGQjEkbm9uX2xhenlfcHRyLS4JOyBGREUgaW5pdGlhbCBsb2NhdGlvbgotCS5zZXQJTCRzZXQkMyxMRkUxLUxGQjEKKwkuc2V0CUwkc2V0JDMsTEZFMS1Mc3RhcnRjb2RlCiAJLmdfbG9uZwlMJHNldCQzCTsgRkRFIGFkZHJlc3MgcmFuZ2UKIAkuYnl0ZSAgIDB4MCAgICAgOyB1bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUKIAkuYnl0ZQkweDQJOyBEV19DRkFfYWR2YW5jZV9sb2M0CiAJLnNldAlMJHNldCQzLExDRkkxLUxDRkkwCiAJLmxvbmcJTCRzZXQkMwogCS5ieXRlCTB4ZQk7IERXX0NGQV9kZWZfY2ZhX29mZnNldAotCS5ieXRlCTE3NiwxCTsgdWxlYjEyOCAxNzYKKwkuYnl0ZQlFSF9GUkFNRV9PRkZTRVRBLEVIX0ZSQU1FX09GRlNFVEIJOyB1bGViMTI4IDE3NiwxLzE5MCwzCiAJLmJ5dGUJMHg0CTsgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotCS5zZXQJTCRzZXQkNCxMQ0ZJMC1MRkIxCisJLnNldAlMJHNldCQ0LExDRkkwLUxzdGFydGNvZGUKIAkubG9uZwlMJHNldCQ0CiAJLmJ5dGUgICAweDExICAgIDsgRFdfQ0ZBX29mZnNldF9leHRlbmRlZF9zZgogCS5ieXRlCTB4NDEJOyB1bGViMTI4IDB4NDEKIAkuYnl0ZSAgIDB4N2UgICAgOyBzbGViMTI4IC0yCiAJLmFsaWduCUxPRzJfR1BSX0JZVEVTCiBMRUZERTE6Ci0uZGF0YQotCS5hbGlnbglMT0cyX0dQUl9CWVRFUwotTERGQ00wOgotLnNlY3Rpb24gX19URVhULF9fcGljc3ltYm9sc3R1YjEsc3ltYm9sX3N0dWJzLHB1cmVfaW5zdHJ1Y3Rpb25zLDMyCi0JLmFsaWduCUxPRzJfR1BSX0JZVEVTCi1MZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRzdHViOgotI2lmIDEKKwkuYWxpZ24gCTEKKworI2lmZGVmIFdBTlRfU1RVQgorCS5zZWN0aW9uIF9fVEVYVCxfX3BpY3N5bWJvbHN0dWIxLHN5bWJvbF9zdHVicyxwdXJlX2luc3RydWN0aW9ucywzMgorCS5hbGlnbiA1CitMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kc3R1YjoKIAkuaW5kaXJlY3Rfc3ltYm9sIF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOCi0JbWZscglyMAotCWJjbAkyMCwzMSxMTyRmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOCi1MTyRmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOOgotCW1mbHIJcjExCi0JYWRkaXMJcjExLHIxMSxoYTE2KExfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRsYXp5X3B0ciAtIExPJGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4pCi0JbXRscglyMAotCWxndQlyMTIsbG8xNihMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kbGF6eV9wdHIgLSBMTyRmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOKShyMTEpCi0JbXRjdHIJcjEyCisJbWZsciByMAorCWJjbCAyMCwzMSwiTDAwMDAwMDAwMDAxJHNwYiIKKyJMMDAwMDAwMDAwMDEkc3BiIjoKKwltZmxyIHIxMQorCWFkZGlzIHIxMSxyMTEsaGExNihMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kbGF6eV9wdHItIkwwMDAwMDAwMDAwMSRzcGIiKQorCW10bHIgcjAKKwlsd3p1IHIxMixsbzE2KExfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRsYXp5X3B0ci0iTDAwMDAwMDAwMDAxJHNwYiIpKHIxMSkKKwltdGN0ciByMTIKIAliY3RyCi0ubGF6eV9zeW1ib2xfcG9pbnRlcgorCS5sYXp5X3N5bWJvbF9wb2ludGVyCiBMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kbGF6eV9wdHI6CiAJLmluZGlyZWN0X3N5bWJvbCBfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTgotCS5nX2xvbmcgZHlsZF9zdHViX2JpbmRpbmdfaGVscGVyCisJLmdfbG9uZwlkeWxkX3N0dWJfYmluZGluZ19oZWxwZXIKKworI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCS5zZWN0aW9uIF9fVEVYVCxfX3BpY3N5bWJvbHN0dWIxLHN5bWJvbF9zdHVicyxwdXJlX2luc3RydWN0aW9ucywzMgorCS5hbGlnbiA1CitMX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCRzdHViOgorCS5pbmRpcmVjdF9zeW1ib2wgX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcAorCW1mbHIgcjAKKwliY2wgMjAsMzEsIkwwMDAwMDAwMDAwMiRzcGIiCisiTDAwMDAwMDAwMDAyJHNwYiI6CisJbWZsciByMTEKKwlhZGRpcyByMTEscjExLGhhMTYoTF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AkbGF6eV9wdHItIkwwMDAwMDAwMDAwMiRzcGIiKQorCW10bHIgcjAKKwlsd3p1IHIxMixsbzE2KExfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wJGxhenlfcHRyLSJMMDAwMDAwMDAwMDIkc3BiIikocjExKQorCW10Y3RyIHIxMgorCWJjdHIKKwkubGF6eV9zeW1ib2xfcG9pbnRlcgorTF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AkbGF6eV9wdHI6CisJLmluZGlyZWN0X3N5bWJvbCBfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wCisJLmdfbG9uZwlkeWxkX3N0dWJfYmluZGluZ19oZWxwZXIKKworCS5zZWN0aW9uIF9fVEVYVCxfX3BpY3N5bWJvbHN0dWIxLHN5bWJvbF9zdHVicyxwdXJlX2luc3RydWN0aW9ucywzMgorCS5hbGlnbiA1CitMX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyRzdHViOgorCS5pbmRpcmVjdF9zeW1ib2wgX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cworCW1mbHIgcjAKKwliY2wgMjAsMzEsIkwwMDAwMDAwMDAwMyRzcGIiCisiTDAwMDAwMDAwMDAzJHNwYiI6CisJbWZsciByMTEKKwlhZGRpcyByMTEscjExLGhhMTYoTF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMkbGF6eV9wdHItIkwwMDAwMDAwMDAwMyRzcGIiKQorCW10bHIgcjAKKwlsd3p1IHIxMixsbzE2KExfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzJGxhenlfcHRyLSJMMDAwMDAwMDAwMDMkc3BiIikocjExKQorCW10Y3RyIHIxMgorCWJjdHIKKwkubGF6eV9zeW1ib2xfcG9pbnRlcgorTF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMkbGF6eV9wdHI6CisJLmluZGlyZWN0X3N5bWJvbCBfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzCisJLmdfbG9uZwlkeWxkX3N0dWJfYmluZGluZ19oZWxwZXIKKyMgIGVuZGlmCiAjZW5kaWYKLS5kYXRhCi0JLmFsaWduIExPRzJfR1BSX0JZVEVTCi1MTEZCMSRub25fbGF6eV9wdHI6Ci0JLmdfbG9uZyBMRkIxCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZmkuYwppbmRleCA3NTc4NGE5Li5iYWNhNjk0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpLmMKQEAgLTEsNyArMSw5IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTggR2VvZmZyZXkgS2VhdGluZwotICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCi0gICBDb3B5cmlnaHQgKEMpIDIwMDggUmVkIEhhdCwgSW5jCisgICBmZmkuYyAtIENvcHlyaWdodCAoQykgMjAxMSBBbnRob255IEdyZWVuCisgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAxMSBLeWxlIE1vZmZldHQKKyAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA4IFJlZCBIYXQsIEluYworICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKKwkgICBDb3B5cmlnaHQgKGMpIDE5OTggR2VvZmZyZXkgS2VhdGluZwogCiAgICBQb3dlclBDIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlCiAKQEAgLTM5LDMyICs0MSwyOCBAQAogICAvKiBUaGUgYXNzZW1ibHkgZGVwZW5kcyBvbiB0aGVzZSBleGFjdCBmbGFncy4gICovCiAgIEZMQUdfUkVUVVJOU19TTVNUCT0gMSA8PCAoMzEtMzEpLCAvKiBVc2VkIGZvciBGRklfU1lTViBzbWFsbCBzdHJ1Y3RzLiAgKi8KICAgRkxBR19SRVRVUk5TX05PVEhJTkcgID0gMSA8PCAoMzEtMzApLCAvKiBUaGVzZSBnbyBpbiBjcjcgKi8KKyNpZm5kZWYgX19OT19GUFJTX18KICAgRkxBR19SRVRVUk5TX0ZQICAgICAgID0gMSA8PCAoMzEtMjkpLAorI2VuZGlmCiAgIEZMQUdfUkVUVVJOU182NEJJVFMgICA9IDEgPDwgKDMxLTI4KSwKIAogICBGTEFHX1JFVFVSTlNfMTI4QklUUyAgPSAxIDw8ICgzMS0yNyksIC8qIGNyNiAgKi8KLSAgRkxBR19TWVNWX1NNU1RfUjQgICAgID0gMSA8PCAoMzEtMjYpLCAvKiB1c2UgcjQgZm9yIEZGSV9TWVNWIDggYnl0ZQotCQkJCQkgICBzdHJ1Y3RzLiAgKi8KLSAgRkxBR19TWVNWX1NNU1RfUjMgICAgID0gMSA8PCAoMzEtMjUpLCAvKiB1c2UgcjMgZm9yIEZGSV9TWVNWIDQgYnl0ZQotCQkJCQkgICBzdHJ1Y3RzLiAgKi8KLSAgLyogQml0cyAoMzEtMjQpIHRocm91Z2ggKDMxLTE5KSBzdG9yZSBzaGlmdCB2YWx1ZSBmb3IgU01TVCAqLwogCiAgIEZMQUdfQVJHX05FRURTX0NPUFkgICA9IDEgPDwgKDMxLSA3KSwKKyNpZm5kZWYgX19OT19GUFJTX18KICAgRkxBR19GUF9BUkdVTUVOVFMgICAgID0gMSA8PCAoMzEtIDYpLCAvKiBjcjEuZXE7IHNwZWNpZmllZCBieSBBQkkgKi8KKyNlbmRpZgogICBGTEFHXzRfR1BSX0FSR1VNRU5UUyAgPSAxIDw8ICgzMS0gNSksCiAgIEZMQUdfUkVUVkFMX1JFRkVSRU5DRSA9IDEgPDwgKDMxLSA0KQogfTsKIAogLyogQWJvdXQgdGhlIFNZU1YgQUJJLiAgKi8KLXVuc2lnbmVkIGludCBOVU1fR1BSX0FSR19SRUdJU1RFUlMgPSA4OworI2RlZmluZSBBU01fTkVFRFNfUkVHSVNURVJTIDQKKyNkZWZpbmUgTlVNX0dQUl9BUkdfUkVHSVNURVJTIDgKICNpZm5kZWYgX19OT19GUFJTX18KLXVuc2lnbmVkIGludCBOVU1fRlBSX0FSR19SRUdJU1RFUlMgPSA4OwotI2Vsc2UKLXVuc2lnbmVkIGludCBOVU1fRlBSX0FSR19SRUdJU1RFUlMgPSAwOworIyBkZWZpbmUgTlVNX0ZQUl9BUkdfUkVHSVNURVJTIDgKICNlbmRpZgogCi1lbnVtIHsgQVNNX05FRURTX1JFR0lTVEVSUyA9IDQgfTsKLQogLyogZmZpX3ByZXBfYXJnc19TWVNWIGlzIGNhbGxlZCBieSB0aGUgYXNzZW1ibHkgcm91dGluZSBvbmNlIHN0YWNrIHNwYWNlCiAgICBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9yIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cy4KIApAQCAtMTEzLDEwICsxMTEsMTIgQEAKICAgdmFscCBncHJfYmFzZTsKICAgaW50IGludGFyZ19jb3VudDsKIAorI2lmbmRlZiBfX05PX0ZQUlNfXwogICAvKiAnZnByX2Jhc2UnIHBvaW50cyBhdCB0aGUgc3BhY2UgZm9yIGZwcjEsIGFuZCBncm93cyB1cHdhcmRzIGFzCiAgICAgIHdlIHVzZSBGUFIgcmVnaXN0ZXJzLiAgKi8KICAgdmFscCBmcHJfYmFzZTsKICAgaW50IGZwYXJnX2NvdW50OworI2VuZGlmCiAKICAgLyogJ2NvcHlfc3BhY2UnIGdyb3dzIGRvd24gYXMgd2UgcHV0IHN0cnVjdHVyZXMgaW4gaXQuICBJdCBzaG91bGQKICAgICAgc3RheSAxNi1ieXRlIGFsaWduZWQuICAqLwpAQCAtMTI1LDkgKzEyNSw4IEBACiAgIC8qICduZXh0X2FyZycgZ3Jvd3MgdXAgYXMgd2UgcHV0IHBhcmFtZXRlcnMgaW4gaXQuICAqLwogICB2YWxwIG5leHRfYXJnOwogCi0gIGludCBpLCBpaSBNQVlCRV9VTlVTRUQ7CisgIGludCBpOwogICBmZmlfdHlwZSAqKnB0cjsKLSAgZG91YmxlIGRvdWJsZV90bXA7CiAgIHVuaW9uIHsKICAgICB2b2lkICoqdjsKICAgICBjaGFyICoqYzsKQEAgLTE0MywyMSArMTQyLDIzIEBACiAgIHNpemVfdCBzdHJ1Y3RfY29weV9zaXplOwogICB1bnNpZ25lZCBncHJ2YWx1ZTsKIAotICBpZiAoZWNpZi0+Y2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0gICAgTlVNX0ZQUl9BUkdfUkVHSVNURVJTID0gMDsKLQogICBzdGFja3RvcC5jID0gKGNoYXIgKikgc3RhY2sgKyBieXRlczsKICAgZ3ByX2Jhc2UudSA9IHN0YWNrdG9wLnUgLSBBU01fTkVFRFNfUkVHSVNURVJTIC0gTlVNX0dQUl9BUkdfUkVHSVNURVJTOwogICBpbnRhcmdfY291bnQgPSAwOworI2lmbmRlZiBfX05PX0ZQUlNfXworICBkb3VibGUgZG91YmxlX3RtcDsKICAgZnByX2Jhc2UuZCA9IGdwcl9iYXNlLmQgLSBOVU1fRlBSX0FSR19SRUdJU1RFUlM7CiAgIGZwYXJnX2NvdW50ID0gMDsKICAgY29weV9zcGFjZS5jID0gKChmbGFncyAmIEZMQUdfRlBfQVJHVU1FTlRTKSA/IGZwcl9iYXNlLmMgOiBncHJfYmFzZS5jKTsKKyNlbHNlCisgIGNvcHlfc3BhY2UuYyA9IGdwcl9iYXNlLmM7CisjZW5kaWYKICAgbmV4dF9hcmcudSA9IHN0YWNrICsgMjsKIAogICAvKiBDaGVjayB0aGF0IGV2ZXJ5dGhpbmcgc3RhcnRzIGFsaWduZWQgcHJvcGVybHkuICAqLwotICBGRklfQVNTRVJUICgoKHVuc2lnbmVkKSAoY2hhciAqKSBzdGFjayAmIDB4RikgPT0gMCk7Ci0gIEZGSV9BU1NFUlQgKCgodW5zaWduZWQpIGNvcHlfc3BhY2UuYyAmIDB4RikgPT0gMCk7Ci0gIEZGSV9BU1NFUlQgKCgodW5zaWduZWQpIHN0YWNrdG9wLmMgJiAweEYpID09IDApOworICBGRklfQVNTRVJUICgoKHVuc2lnbmVkIGxvbmcpIChjaGFyICopIHN0YWNrICYgMHhGKSA9PSAwKTsKKyAgRkZJX0FTU0VSVCAoKCh1bnNpZ25lZCBsb25nKSBjb3B5X3NwYWNlLmMgJiAweEYpID09IDApOworICBGRklfQVNTRVJUICgoKHVuc2lnbmVkIGxvbmcpIHN0YWNrdG9wLmMgJiAweEYpID09IDApOwogICBGRklfQVNTRVJUICgoYnl0ZXMgJiAweEYpID09IDApOwogICBGRklfQVNTRVJUIChjb3B5X3NwYWNlLmMgPj0gbmV4dF9hcmcuYyk7CiAKQEAgLTE3NCwxMiArMTc1LDI4IEBACiAgICAgICAgaSA+IDA7CiAgICAgICAgaS0tLCBwdHIrKywgcF9hcmd2LnYrKykKICAgICB7Ci0gICAgICBzd2l0Y2ggKCgqcHRyKS0+dHlwZSkKLQl7CisgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlbnVtID0gKCpwdHIpLT50eXBlOworCisgICAgICAvKiBXZSBtYXkgbmVlZCB0byBoYW5kbGUgc29tZSB2YWx1ZXMgZGVwZW5kaW5nIG9uIEFCSSAqLworICAgICAgaWYgKGVjaWYtPmNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSB7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0ZMT0FUKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQzMjsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQ2NDsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UMTI4OworICAgICAgfSBlbHNlIGlmIChlY2lmLT5jaWYtPmFiaSAhPSBGRklfTElOVVgpIHsKKyNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1NUUlVDVDsKKyNlbmRpZgorICAgICAgfQorCisgICAgICAvKiBOb3cgdGVzdCB0aGUgdHJhbnNsYXRlZCB2YWx1ZSAqLworICAgICAgc3dpdGNoICh0eXBlbnVtKSB7CisjaWZuZGVmIF9fTk9fRlBSU19fCiAJY2FzZSBGRklfVFlQRV9GTE9BVDoKIAkgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZmxvYXRzIGFyZSBoYW5kbGVkIGxpa2UgVUlOVDMyLiAgKi8KLQkgIGlmIChlY2lmLT5jaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgZ290byBzb2Z0X2Zsb2F0X3ByZXA7CiAJICBkb3VibGVfdG1wID0gKipwX2FyZ3YuZjsKIAkgIGlmIChmcGFyZ19jb3VudCA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCiAJICAgIHsKQEAgLTE5NSw4ICsyMTIsNiBAQAogCiAJY2FzZSBGRklfVFlQRV9ET1VCTEU6CiAJICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGRvdWJsZXMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UNjQuICAqLwotCSAgaWYgKGVjaWYtPmNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICBnb3RvIHNvZnRfZG91YmxlX3ByZXA7CiAJICBkb3VibGVfdG1wID0gKipwX2FyZ3YuZDsKIAogCSAgaWYgKGZwYXJnX2NvdW50ID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKQEAgLTIxOCw0MyArMjMzLDYgQEAKIAogI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCiAJY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgotCSAgaWYgKChlY2lmLT5jaWYtPmFiaSAhPSBGRklfTElOVVgpCi0JCSYmIChlY2lmLT5jaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkpCi0JICAgIGdvdG8gZG9fc3RydWN0OwotCSAgLyogVGhlIHNvZnQgZmxvYXQgQUJJIGZvciBsb25nIGRvdWJsZXMgd29ya3MgbGlrZSB0aGlzLAotCSAgICAgYSBsb25nIGRvdWJsZSBpcyBwYXNzZWQgaW4gZm91ciBjb25zZWN1dGl2ZSBncHJzIGlmIGF2YWlsYWJsZS4KLQkgICAgIEEgbWF4aW11bSBvZiAyIGxvbmcgZG91YmxlcyBjYW4gYmUgcGFzc2VkIGluIGdwcnMuCi0JICAgICBJZiB3ZSBkbyBub3QgaGF2ZSA0IGdwcnMgbGVmdCwgdGhlIGxvbmcgZG91YmxlIGlzIHBhc3NlZCBvbiB0aGUKLQkgICAgIHN0YWNrLCA0LWJ5dGUgYWxpZ25lZC4gICovCi0JICBpZiAoZWNpZi0+Y2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIHsKLQkgICAgICB1bnNpZ25lZCBpbnQgaW50X3RtcCA9ICgqcF9hcmd2LnVpKVswXTsKLQkgICAgICBpZiAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIDMpCi0JCXsKLQkJICBpZiAoaW50YXJnX2NvdW50IDwgTlVNX0dQUl9BUkdfUkVHSVNURVJTKQotCQkgICAgaW50YXJnX2NvdW50ICs9IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIGludGFyZ19jb3VudDsKLQkJICAqbmV4dF9hcmcudSA9IGludF90bXA7Ci0JCSAgbmV4dF9hcmcudSsrOwotCQkgIGZvciAoaWkgPSAxOyBpaSA8IDQ7IGlpKyspCi0JCSAgICB7Ci0JCSAgICAgIGludF90bXAgPSAoKnBfYXJndi51aSlbaWldOwotCQkgICAgICAqbmV4dF9hcmcudSA9IGludF90bXA7Ci0JCSAgICAgIG5leHRfYXJnLnUrKzsKLQkJICAgIH0KLQkJfQotCSAgICAgIGVsc2UKLQkJewotCQkgICpncHJfYmFzZS51KysgPSBpbnRfdG1wOwotCQkgIGZvciAoaWkgPSAxOyBpaSA8IDQ7IGlpKyspCi0JCSAgICB7Ci0JCSAgICAgIGludF90bXAgPSAoKnBfYXJndi51aSlbaWldOwotCQkgICAgICAqZ3ByX2Jhc2UudSsrID0gaW50X3RtcDsKLQkJICAgIH0KLQkJfQotCSAgICAgIGludGFyZ19jb3VudCArPTQ7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewogCSAgICAgIGRvdWJsZV90bXAgPSAoKnBfYXJndi5kKVswXTsKIAogCSAgICAgIGlmIChmcGFyZ19jb3VudCA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMgLSAxKQpAQCAtMjgwLDEzICsyNTgsNDAgQEAKIAogCSAgICAgIGZwYXJnX2NvdW50ICs9IDI7CiAJICAgICAgRkZJX0FTU0VSVCAoZmxhZ3MgJiBGTEFHX0ZQX0FSR1VNRU5UUyk7Ci0JICAgIH0KIAkgIGJyZWFrOwogI2VuZGlmCisjZW5kaWYgLyogaGF2ZSBGUFJzICovCisKKwkvKgorCSAqIFRoZSBzb2Z0IGZsb2F0IEFCSSBmb3IgbG9uZyBkb3VibGVzIHdvcmtzIGxpa2UgdGhpcywgYSBsb25nIGRvdWJsZQorCSAqIGlzIHBhc3NlZCBpbiBmb3VyIGNvbnNlY3V0aXZlIEdQUnMgaWYgYXZhaWxhYmxlLiAgQSBtYXhpbXVtIG9mIDIKKwkgKiBsb25nIGRvdWJsZXMgY2FuIGJlIHBhc3NlZCBpbiBncHJzLiAgSWYgd2UgZG8gbm90IGhhdmUgNCBHUFJzCisJICogbGVmdCwgdGhlIGxvbmcgZG91YmxlIGlzIHBhc3NlZCBvbiB0aGUgc3RhY2ssIDQtYnl0ZSBhbGlnbmVkLgorCSAqLworCWNhc2UgRkZJX1RZUEVfVUlOVDEyODogeworCQl1bnNpZ25lZCBpbnQgaW50X3RtcCA9ICgqcF9hcmd2LnVpKVswXTsKKwkJdW5zaWduZWQgaW50IGlpOworCQlpZiAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIDMpIHsKKwkJCWlmIChpbnRhcmdfY291bnQgPCBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCisJCQkJaW50YXJnX2NvdW50ICs9IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIGludGFyZ19jb3VudDsKKwkJCSoobmV4dF9hcmcudSsrKSA9IGludF90bXA7CisJCQlmb3IgKGlpID0gMTsgaWkgPCA0OyBpaSsrKSB7CisJCQkJaW50X3RtcCA9ICgqcF9hcmd2LnVpKVtpaV07CisJCQkJKihuZXh0X2FyZy51KyspID0gaW50X3RtcDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCSooZ3ByX2Jhc2UudSsrKSA9IGludF90bXA7CisJCQlmb3IgKGlpID0gMTsgaWkgPCA0OyBpaSsrKSB7CisJCQkJaW50X3RtcCA9ICgqcF9hcmd2LnVpKVtpaV07CisJCQkJKihncHJfYmFzZS51KyspID0gaW50X3RtcDsKKwkJCX0KKwkJfQorCQlpbnRhcmdfY291bnQgKz0gNDsKKwkJYnJlYWs7CisJfQogCiAJY2FzZSBGRklfVFlQRV9VSU5UNjQ6CiAJY2FzZSBGRklfVFlQRV9TSU5UNjQ6Ci0Jc29mdF9kb3VibGVfcHJlcDoKIAkgIGlmIChpbnRhcmdfY291bnQgPT0gTlVNX0dQUl9BUkdfUkVHSVNURVJTLTEpCiAJICAgIGludGFyZ19jb3VudCsrOwogCSAgaWYgKGludGFyZ19jb3VudCA+PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCkBAIC0zMTksOSArMzI0LDYgQEAKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLQlkb19zdHJ1Y3Q6Ci0jZW5kaWYKIAkgIHN0cnVjdF9jb3B5X3NpemUgPSAoKCpwdHIpLT5zaXplICsgMTUpICYgfjB4RjsKIAkgIGNvcHlfc3BhY2UuYyAtPSBzdHJ1Y3RfY29weV9zaXplOwogCSAgbWVtY3B5IChjb3B5X3NwYWNlLmMsICpwX2FyZ3YuYywgKCpwdHIpLT5zaXplKTsKQEAgLTM0OSw3ICszNTEsNiBAQAogCWNhc2UgRkZJX1RZUEVfVUlOVDMyOgogCWNhc2UgRkZJX1RZUEVfU0lOVDMyOgogCWNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKLQlzb2Z0X2Zsb2F0X3ByZXA6CiAKIAkgIGdwcnZhbHVlID0gKipwX2FyZ3YudWk7CiAKQEAgLTM2Niw4ICszNjcsMTAgQEAKICAgLyogQ2hlY2sgdGhhdCB3ZSBkaWRuJ3Qgb3ZlcnJ1biB0aGUgc3RhY2suLi4gICovCiAgIEZGSV9BU1NFUlQgKGNvcHlfc3BhY2UuYyA+PSBuZXh0X2FyZy5jKTsKICAgRkZJX0FTU0VSVCAoZ3ByX2Jhc2UudSA8PSBzdGFja3RvcC51IC0gQVNNX05FRURTX1JFR0lTVEVSUyk7CisjaWZuZGVmIF9fTk9fRlBSU19fCiAgIEZGSV9BU1NFUlQgKGZwcl9iYXNlLnUKIAkgICAgICA8PSBzdGFja3RvcC51IC0gQVNNX05FRURTX1JFR0lTVEVSUyAtIE5VTV9HUFJfQVJHX1JFR0lTVEVSUyk7CisjZW5kaWYKICAgRkZJX0FTU0VSVCAoZmxhZ3MgJiBGTEFHXzRfR1BSX0FSR1VNRU5UUyB8fCBpbnRhcmdfY291bnQgPD0gNCk7CiB9CiAKQEAgLTYwNCw5ICs2MDcsNiBAQAogICB1bnNpZ25lZCB0eXBlID0gY2lmLT5ydHlwZS0+dHlwZTsKICAgdW5zaWduZWQgc2l6ZSA9IGNpZi0+cnR5cGUtPnNpemU7CiAKLSAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotICAgIE5VTV9GUFJfQVJHX1JFR0lTVEVSUyA9IDA7Ci0KICAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KQogICAgIHsKICAgICAgIC8qIEFsbCB0aGUgbWFjaGluZS1pbmRlcGVuZGVudCBjYWxjdWxhdGlvbiBvZiBjaWYtPmJ5dGVzIHdpbGwgYmUgd3JvbmcuCkBAIC02NDYsNjIgKzY0Niw1NiBAQAogICAgICAtIFNpbmdsZS9kb3VibGUgRlAgdmFsdWVzIGluIGZwcjEsIGxvbmcgZG91YmxlIGluIGZwcjEsZnByMi4KICAgICAgLSBzb2Z0LWZsb2F0IGZsb2F0L2RvdWJsZXMgYXJlIHRyZWF0ZWQgYXMgVUlOVDMyL1VJTlQ2NCByZXNwZWN0aXZsZXkuCiAgICAgIC0gc29mdC1mbG9hdCBsb25nIGRvdWJsZXMgYXJlIHJldHVybmVkIGluIGdwcjMtZ3ByNi4gICovCisgIC8qIEZpcnN0IHRyYW5zbGF0ZSBmb3Igc29mdGZsb2F0L25vbmxpbnV4ICovCisgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkgeworCWlmICh0eXBlID09IEZGSV9UWVBFX0ZMT0FUKQorCQl0eXBlID0gRkZJX1RZUEVfVUlOVDMyOworCWlmICh0eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKKwkJdHlwZSA9IEZGSV9UWVBFX1VJTlQ2NDsKKwlpZiAodHlwZSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQl0eXBlID0gRkZJX1RZUEVfVUlOVDEyODsKKyAgfSBlbHNlIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpIHsKKyNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorCWlmICh0eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCXR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisjZW5kaWYKKyAgfQorCiAgIHN3aXRjaCAodHlwZSkKICAgICB7Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKyNpZm5kZWYgX19OT19GUFJTX18KICAgICBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6Ci0gICAgICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0Ci0JJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JZ290byBieXJlZjsKICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU18xMjhCSVRTOwogICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSNlbmRpZgogICAgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TXzY0QklUUzsKICAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCiAgICAgY2FzZSBGRklfVFlQRV9GTE9BVDoKLSAgICAgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgbm8gZnAgcmVnaXN0ZXJzIGFyZSB1c2VkLiAgKi8KLSAgICAgIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQlmbGFncyB8PSBGTEFHX1JFVFVSTlNfRlA7CisgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfRlA7CiAgICAgICBicmVhazsKKyNlbmRpZgogCisgICAgY2FzZSBGRklfVFlQRV9VSU5UMTI4OgorICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TXzEyOEJJVFM7CisgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwogICAgIGNhc2UgRkZJX1RZUEVfVUlOVDY0OgogICAgIGNhc2UgRkZJX1RZUEVfU0lOVDY0OgogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TXzY0QklUUzsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0gICAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX1NZU1YpCi0JewotCSAgLyogVGhlIGZpbmFsIFNZU1YgQUJJIHNheXMgdGhhdCBzdHJ1Y3R1cmVzIHNtYWxsZXIgb3IgZXF1YWwgOCBieXRlcwotCSAgICAgYXJlIHJldHVybmVkIGluIHIzL3I0LiBUaGUgRkZJX0dDQ19TWVNWIEFCSSBpbnN0ZWFkIHJldHVybnMgdGhlbQotCSAgICAgaW4gbWVtb3J5LiAgKi8KLQotCSAgLyogVHJlYXQgc3RydWN0cyB3aXRoIHNpemUgPD0gOCBieXRlcy4gICovCi0JICBpZiAoc2l6ZSA8PSA4KQotCSAgICB7Ci0JICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX1NNU1Q7Ci0JICAgICAgLyogVGhlc2Ugc3RydWN0cyBhcmUgcmV0dXJuZWQgaW4gcjMuIFdlIHBhY2sgdGhlIHR5cGUgYW5kIHRoZQotCQkgcHJlY2FsY3VsYXRlZCBzaGlmdCB2YWx1ZSAobmVlZGVkIGluIHRoZSBzeXN2LlMpIGludG8gZmxhZ3MuCi0JCSBUaGUgc2FtZSBhcHBsaWVzIGZvciB0aGUgc3RydWN0cyByZXR1cm5lZCBpbiByMy9yNC4gICovCi0JICAgICAgaWYgKHNpemUgPD0gNCkKLQkJewotCQkgIGZsYWdzIHw9IEZMQUdfU1lTVl9TTVNUX1IzOwotCQkgIGZsYWdzIHw9IDggKiAoNCAtIHNpemUpIDw8IDg7Ci0JCSAgYnJlYWs7Ci0JCX0KLQkgICAgICAvKiBUaGVzZSBzdHJ1Y3RzIGFyZSByZXR1cm5lZCBpbiByMyBhbmQgcjQuIFNlZSBhYm92ZS4gICAqLwotCSAgICAgIGlmICAoc2l6ZSA8PSA4KQotCQl7Ci0JCSAgZmxhZ3MgfD0gRkxBR19TWVNWX1NNU1RfUjMgfCBGTEFHX1NZU1ZfU01TVF9SNDsKLQkJICBmbGFncyB8PSA4ICogKDggLSBzaXplKSA8PCA4OwotCQkgIGJyZWFrOwotCQl9Ci0JICAgIH0KLQl9Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLSAgICBieXJlZjoKLSNlbmRpZgorICAgICAgLyoKKyAgICAgICAqIFRoZSBmaW5hbCBTWVNWIEFCSSBzYXlzIHRoYXQgc3RydWN0dXJlcyBzbWFsbGVyIG9yIGVxdWFsIDggYnl0ZXMKKyAgICAgICAqIGFyZSByZXR1cm5lZCBpbiByMy9yNC4gVGhlIEZGSV9HQ0NfU1lTViBBQkkgaW5zdGVhZCByZXR1cm5zIHRoZW0KKyAgICAgICAqIGluIG1lbW9yeS4KKyAgICAgICAqCisgICAgICAgKiBOT1RFOiBUaGUgYXNzZW1ibHkgY29kZSBjYW4gc2FmZWx5IGFzc3VtZSB0aGF0IGl0IGp1c3QgbmVlZHMgdG8KKyAgICAgICAqICAgICAgIHN0b3JlIGJvdGggcjMgYW5kIHI0IGludG8gYSA4LWJ5dGUgd29yZC1hbGlnbmVkIGJ1ZmZlciwgYXMKKyAgICAgICAqICAgICAgIHdlIGFsbG9jYXRlIGEgdGVtcG9yYXJ5IGJ1ZmZlciBpbiBmZmlfY2FsbCgpIGlmIHRoaXMgZmxhZyBpcworICAgICAgICogICAgICAgc2V0LgorICAgICAgICovCisgICAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX1NZU1YgJiYgc2l6ZSA8PSA4KQorCWZsYWdzIHw9IEZMQUdfUkVUVVJOU19TTVNUOwogICAgICAgaW50YXJnX2NvdW50Kys7CiAgICAgICBmbGFncyB8PSBGTEFHX1JFVFZBTF9SRUZFUkVOQ0U7CiAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwpAQCAtNzIyLDM5ICs3MTYsMzYgQEAKICAgICAgICBTdHVmZiBvbiB0aGUgc3RhY2sgbmVlZHMgdG8ga2VlcCBwcm9wZXIgYWxpZ25tZW50LiAgKi8KICAgICBmb3IgKHB0ciA9IGNpZi0+YXJnX3R5cGVzLCBpID0gY2lmLT5uYXJnczsgaSA+IDA7IGktLSwgcHRyKyspCiAgICAgICB7Ci0Jc3dpdGNoICgoKnB0ciktPnR5cGUpCi0JICB7CisJdW5zaWduZWQgc2hvcnQgdHlwZW51bSA9ICgqcHRyKS0+dHlwZTsKKworCS8qIFdlIG1heSBuZWVkIHRvIGhhbmRsZSBzb21lIHZhbHVlcyBkZXBlbmRpbmcgb24gQUJJICovCisJaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSB7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0ZMT0FUKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQzMjsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQ2NDsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UMTI4OworCX0gZWxzZSBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KSB7CisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9TVFJVQ1Q7CisjZW5kaWYKKwl9CisKKwlzd2l0Y2ggKHR5cGVudW0pIHsKKyNpZm5kZWYgX19OT19GUFJTX18KIAkgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6Ci0JICAgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZmxvYXRzIGFyZSBoYW5kbGVkIGxpa2UgVUlOVDMyLiAgKi8KLQkgICAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICAgIGdvdG8gc29mdF9mbG9hdF9jaWY7CiAJICAgIGZwYXJnX2NvdW50Kys7CiAJICAgIC8qIGZsb2F0aW5nIHNpbmdsZXMgYXJlIG5vdCA4LWFsaWduZWQgb24gc3RhY2sgKi8KIAkgICAgYnJlYWs7CiAKICNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQogCSAgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgotCSAgICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICAgIGdvdG8gZG9fc3RydWN0OwotCSAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgICAgewotCQlpZiAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIDMKLQkJICB8fCBpbnRhcmdfY291bnQgPCBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCi0JCSAgLyogQSBsb25nIGRvdWJsZSBpbiBGRklfTElOVVhfU09GVF9GTE9BVCBjYW4gdXNlIG9ubHkKLQkJICAgICBhIHNldCBvZiBmb3VyIGNvbnNlY3V0aXZlIGdwcnMuIElmIHdlIGhhdmUgbm90IGVub3VnaCwKLQkJICAgICB3ZSBoYXZlIHRvIGFkanVzdCB0aGUgaW50YXJnX2NvdW50IHZhbHVlLiAgKi8KLQkJICBpbnRhcmdfY291bnQgKz0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gaW50YXJnX2NvdW50OwotCQlpbnRhcmdfY291bnQgKz0gNDsKLQkJYnJlYWs7Ci0JICAgICAgfQotCSAgICBlbHNlCi0JICAgICAgZnBhcmdfY291bnQrKzsKKwkgICAgZnBhcmdfY291bnQrKzsKIAkgICAgLyogRmFsbCB0aHJ1ICovCiAjZW5kaWYKIAkgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgotCSAgICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGRvdWJsZXMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UNjQuICAqLwotCSAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgICAgZ290byBzb2Z0X2RvdWJsZV9jaWY7CiAJICAgIGZwYXJnX2NvdW50Kys7CiAJICAgIC8qIElmIHRoaXMgRlAgYXJnIGlzIGdvaW5nIG9uIHRoZSBzdGFjaywgaXQgbXVzdCBiZQogCSAgICAgICA4LWJ5dGUtYWxpZ25lZC4gICovCkBAIC03NjMsMTAgKzc1NCwyMSBAQAogCQkmJiBpbnRhcmdfY291bnQgJSAyICE9IDApCiAJICAgICAgaW50YXJnX2NvdW50Kys7CiAJICAgIGJyZWFrOworI2VuZGlmCisJICBjYXNlIEZGSV9UWVBFX1VJTlQxMjg6CisJCS8qCisJCSAqIEEgbG9uZyBkb3VibGUgaW4gRkZJX0xJTlVYX1NPRlRfRkxPQVQgY2FuIHVzZSBvbmx5IGEgc2V0CisJCSAqIG9mIGZvdXIgY29uc2VjdXRpdmUgZ3Bycy4gSWYgd2UgZG8gbm90IGhhdmUgZW5vdWdoLCB3ZQorCQkgKiBoYXZlIHRvIGFkanVzdCB0aGUgaW50YXJnX2NvdW50IHZhbHVlLgorCQkgKi8KKwkJaWYgKGludGFyZ19jb3VudCA+PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgLSAzCisJCQkJJiYgaW50YXJnX2NvdW50IDwgTlVNX0dQUl9BUkdfUkVHSVNURVJTKQorCQkJaW50YXJnX2NvdW50ID0gTlVNX0dQUl9BUkdfUkVHSVNURVJTOworCQlpbnRhcmdfY291bnQgKz0gNDsKKwkJYnJlYWs7CiAKIAkgIGNhc2UgRkZJX1RZUEVfVUlOVDY0OgogCSAgY2FzZSBGRklfVFlQRV9TSU5UNjQ6Ci0JICBzb2Z0X2RvdWJsZV9jaWY6CiAJICAgIC8qICdsb25nIGxvbmcnIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGFzIHR3byB3b3JkcywgYnV0CiAJICAgICAgIGVpdGhlciBib3RoIHdvcmRzIG11c3QgZml0IGluIHJlZ2lzdGVycyBvciBib3RoIGdvCiAJICAgICAgIG9uIHRoZSBzdGFjay4gIElmIHRoZXkgZ28gb24gdGhlIHN0YWNrLCB0aGV5IG11c3QKQEAgLTc4Myw5ICs3ODUsNiBAQAogCSAgICBicmVhazsKIAogCSAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLQkgIGRvX3N0cnVjdDoKLSNlbmRpZgogCSAgICAvKiBXZSBtdXN0IGFsbG9jYXRlIHNwYWNlIGZvciBhIGNvcHkgb2YgdGhlc2UgdG8gZW5mb3JjZQogCSAgICAgICBwYXNzLWJ5LXZhbHVlLiAgUGFkIHRoZSBzcGFjZSB1cCB0byBhIG11bHRpcGxlIG9mIDE2CiAJICAgICAgIGJ5dGVzICh0aGUgbWF4aW11bSBhbGlnbm1lbnQgcmVxdWlyZWQgZm9yIGFueXRoaW5nIHVuZGVyCkBAIC03OTMsMTIgKzc5MiwyMCBAQAogCSAgICBzdHJ1Y3RfY29weV9zaXplICs9ICgoKnB0ciktPnNpemUgKyAxNSkgJiB+MHhGOwogCSAgICAvKiBGYWxsIHRocm91Z2ggKGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgcG9pbnRlcikuICAqLwogCi0JICBkZWZhdWx0OgotCSAgc29mdF9mbG9hdF9jaWY6CisJICBjYXNlIEZGSV9UWVBFX1BPSU5URVI6CisJICBjYXNlIEZGSV9UWVBFX0lOVDoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDMyOgorCSAgY2FzZSBGRklfVFlQRV9TSU5UMzI6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQxNjoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDE2OgorCSAgY2FzZSBGRklfVFlQRV9VSU5UODoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDg6CiAJICAgIC8qIEV2ZXJ5dGhpbmcgZWxzZSBpcyBwYXNzZWQgYXMgYSA0LWJ5dGUgd29yZCBpbiBhIEdQUiwgZWl0aGVyCiAJICAgICAgIHRoZSBvYmplY3QgaXRzZWxmIG9yIGEgcG9pbnRlciB0byBpdC4gICovCiAJICAgIGludGFyZ19jb3VudCsrOwogCSAgICBicmVhazsKKwkgIGRlZmF1bHQ6CisJCUZGSV9BU1NFUlQgKDApOwogCSAgfQogICAgICAgfQogICBlbHNlCkBAIC04MjcsMTYgKzgzNCwyOSBAQAogCSAgICBpbnRhcmdfY291bnQgKz0gKCgqcHRyKS0+c2l6ZSArIDcpIC8gODsKIAkgICAgYnJlYWs7CiAKLQkgIGRlZmF1bHQ6CisJICBjYXNlIEZGSV9UWVBFX1BPSU5URVI6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQ2NDoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDY0OgorCSAgY2FzZSBGRklfVFlQRV9JTlQ6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQzMjoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDMyOgorCSAgY2FzZSBGRklfVFlQRV9VSU5UMTY6CisJICBjYXNlIEZGSV9UWVBFX1NJTlQxNjoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDg6CisJICBjYXNlIEZGSV9UWVBFX1NJTlQ4OgogCSAgICAvKiBFdmVyeXRoaW5nIGVsc2UgaXMgcGFzc2VkIGFzIGEgOC1ieXRlIHdvcmQgaW4gYSBHUFIsIGVpdGhlcgogCSAgICAgICB0aGUgb2JqZWN0IGl0c2VsZiBvciBhIHBvaW50ZXIgdG8gaXQuICAqLwogCSAgICBpbnRhcmdfY291bnQrKzsKIAkgICAgYnJlYWs7CisJICBkZWZhdWx0OgorCQlGRklfQVNTRVJUICgwKTsKIAkgIH0KICAgICAgIH0KIAorI2lmbmRlZiBfX05PX0ZQUlNfXwogICBpZiAoZnBhcmdfY291bnQgIT0gMCkKICAgICBmbGFncyB8PSBGTEFHX0ZQX0FSR1VNRU5UUzsKKyNlbmRpZgogICBpZiAoaW50YXJnX2NvdW50ID4gNCkKICAgICBmbGFncyB8PSBGTEFHXzRfR1BSX0FSR1VNRU5UUzsKICAgaWYgKHN0cnVjdF9jb3B5X3NpemUgIT0gMCkKQEAgLTg0NCwyMSArODY0LDI3IEBACiAKICAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KQogICAgIHsKKyNpZm5kZWYgX19OT19GUFJTX18KICAgICAgIC8qIFNwYWNlIGZvciB0aGUgRlBSIHJlZ2lzdGVycywgaWYgbmVlZGVkLiAgKi8KICAgICAgIGlmIChmcGFyZ19jb3VudCAhPSAwKQogCWJ5dGVzICs9IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyAqIHNpemVvZiAoZG91YmxlKTsKKyNlbmRpZgogCiAgICAgICAvKiBTdGFjayBzcGFjZS4gICovCiAgICAgICBpZiAoaW50YXJnX2NvdW50ID4gTlVNX0dQUl9BUkdfUkVHSVNURVJTKQogCWJ5dGVzICs9IChpbnRhcmdfY291bnQgLSBOVU1fR1BSX0FSR19SRUdJU1RFUlMpICogc2l6ZW9mIChpbnQpOworI2lmbmRlZiBfX05PX0ZQUlNfXwogICAgICAgaWYgKGZwYXJnX2NvdW50ID4gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCWJ5dGVzICs9IChmcGFyZ19jb3VudCAtIE5VTV9GUFJfQVJHX1JFR0lTVEVSUykgKiBzaXplb2YgKGRvdWJsZSk7CisjZW5kaWYKICAgICB9CiAgIGVsc2UKICAgICB7CisjaWZuZGVmIF9fTk9fRlBSU19fCiAgICAgICAvKiBTcGFjZSBmb3IgdGhlIEZQUiByZWdpc3RlcnMsIGlmIG5lZWRlZC4gICovCiAgICAgICBpZiAoZnBhcmdfY291bnQgIT0gMCkKIAlieXRlcyArPSBOVU1fRlBSX0FSR19SRUdJU1RFUlM2NCAqIHNpemVvZiAoZG91YmxlKTsKKyNlbmRpZgogCiAgICAgICAvKiBTdGFjayBzcGFjZS4gICovCiAgICAgICBpZiAoaW50YXJnX2NvdW50ID4gTlVNX0dQUl9BUkdfUkVHSVNURVJTNjQpCkBAIC04ODYsMjggKzkxMiw0MSBAQAogdm9pZAogZmZpX2NhbGwoZmZpX2NpZiAqY2lmLCB2b2lkICgqZm4pKHZvaWQpLCB2b2lkICpydmFsdWUsIHZvaWQgKiphdmFsdWUpCiB7CisgIC8qCisgICAqIFRoZSBmaW5hbCBTWVNWIEFCSSBzYXlzIHRoYXQgc3RydWN0dXJlcyBzbWFsbGVyIG9yIGVxdWFsIDggYnl0ZXMKKyAgICogYXJlIHJldHVybmVkIGluIHIzL3I0LiBUaGUgRkZJX0dDQ19TWVNWIEFCSSBpbnN0ZWFkIHJldHVybnMgdGhlbQorICAgKiBpbiBtZW1vcnkuCisgICAqCisgICAqIEp1c3QgdG8ga2VlcCB0aGluZ3Mgc2ltcGxlIGZvciB0aGUgYXNzZW1ibHkgY29kZSwgd2Ugd2lsbCBhbHdheXMKKyAgICogYm91bmNlLWJ1ZmZlciBzdHJ1Y3QgcmV0dXJuIHZhbHVlcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gOCBieXRlcy4KKyAgICogVGhpcyBhbGxvd3MgdGhlIEFTTSB0byBoYW5kbGUgU1lTViBzbWFsbCBzdHJ1Y3R1cmVzIGJ5IGRpcmVjdGx5CisgICAqIHdyaXRpbmcgcjMgYW5kIHI0IHRvIG1lbW9yeSB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IHN0cnVjdCBzaXplLgorICAgKi8KKyAgdW5zaWduZWQgaW50IHNtc3RfYnVmZmVyWzJdOwogICBleHRlbmRlZF9jaWYgZWNpZjsKKyAgdW5zaWduZWQgaW50IHJzaXplID0gMDsKIAogICBlY2lmLmNpZiA9IGNpZjsKICAgZWNpZi5hdmFsdWUgPSBhdmFsdWU7CiAKLSAgLyogSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdCBhbmQgd2UgZG9uJ3QgaGF2ZSBhIHJldHVybgkqLwotICAvKiB2YWx1ZSBhZGRyZXNzIHRoZW4gd2UgbmVlZCB0byBtYWtlIG9uZQkJICAgICAgICAqLwotCi0gIGlmICgocnZhbHVlID09IE5VTEwpICYmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkpCi0gICAgewotICAgICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EoY2lmLT5ydHlwZS0+c2l6ZSk7Ci0gICAgfQotICBlbHNlCi0gICAgZWNpZi5ydmFsdWUgPSBydmFsdWU7Ci0KKyAgLyogRW5zdXJlIHRoYXQgd2UgaGF2ZSBhIHZhbGlkIHN0cnVjdCByZXR1cm4gdmFsdWUgKi8KKyAgZWNpZi5ydmFsdWUgPSBydmFsdWU7CisgIGlmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkgeworICAgIHJzaXplID0gY2lmLT5ydHlwZS0+c2l6ZTsKKyAgICBpZiAocnNpemUgPD0gOCkKKyAgICAgIGVjaWYucnZhbHVlID0gc21zdF9idWZmZXI7CisgICAgZWxzZSBpZiAoIXJ2YWx1ZSkKKyAgICAgIGVjaWYucnZhbHVlID0gYWxsb2NhKHJzaXplKTsKKyAgfQogCiAgIHN3aXRjaCAoY2lmLT5hYmkpCiAgICAgewogI2lmbmRlZiBQT1dFUlBDNjQKKyMgaWZuZGVmIF9fTk9fRlBSU19fCiAgICAgY2FzZSBGRklfU1lTVjoKICAgICBjYXNlIEZGSV9HQ0NfU1lTVjoKICAgICBjYXNlIEZGSV9MSU5VWDoKKyMgZW5kaWYKICAgICBjYXNlIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUOgogICAgICAgZmZpX2NhbGxfU1lTViAoJmVjaWYsIC1jaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4pOwogICAgICAgYnJlYWs7CkBAIC05MjAsNiArOTU5LDEwIEBACiAgICAgICBGRklfQVNTRVJUICgwKTsKICAgICAgIGJyZWFrOwogICAgIH0KKworICAvKiBDaGVjayBmb3IgYSBib3VuY2UtYnVmZmVyZWQgcmV0dXJuIHZhbHVlICovCisgIGlmIChydmFsdWUgJiYgZWNpZi5ydmFsdWUgPT0gc21zdF9idWZmZXIpCisgICAgbWVtY3B5KHJ2YWx1ZSwgc21zdF9idWZmZXIsIHJzaXplKTsKIH0KIAogCkBAIC05NDksMTQgKzk5MiwxOSBAQAogI2lmZGVmIFBPV0VSUEM2NAogICB2b2lkICoqdHJhbXAgPSAodm9pZCAqKikgJmNsb3N1cmUtPnRyYW1wWzBdOwogCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9MSU5VWDY0KTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgLyogQ29weSBmdW5jdGlvbiBhZGRyZXNzIGFuZCBUT0MgZnJvbSBmZmlfY2xvc3VyZV9MSU5VWDY0LiAgKi8KICAgbWVtY3B5ICh0cmFtcCwgKGNoYXIgKikgZmZpX2Nsb3N1cmVfTElOVVg2NCwgMTYpOwogICB0cmFtcFsyXSA9IGNvZGVsb2M7CiAjZWxzZQogICB1bnNpZ25lZCBpbnQgKnRyYW1wOwogCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9HQ0NfU1lTViB8fCBjaWYtPmFiaSA9PSBGRklfU1lTVik7CisgIGlmICghIChjaWYtPmFiaSA9PSBGRklfR0NDX1NZU1YgCisJIHx8IGNpZi0+YWJpID09IEZGSV9TWVNWCisJIHx8IGNpZi0+YWJpID09IEZGSV9MSU5VWAorCSB8fCBjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgIHRyYW1wID0gKHVuc2lnbmVkIGludCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07CiAgIHRyYW1wWzBdID0gMHg3YzA4MDJhNjsgIC8qICAgbWZsciAgICByMCAqLwpAQCAtMTAxMSwzMiArMTA1OSwzOCBAQAogICB2b2lkICoqICAgICAgICAgIGF2YWx1ZTsKICAgZmZpX3R5cGUgKiogICAgICBhcmdfdHlwZXM7CiAgIGxvbmcgICAgICAgICAgICAgaSwgYXZuOwotICBsb25nICAgICAgICAgICAgIG5mOyAgIC8qIG51bWJlciBvZiBmbG9hdGluZyByZWdpc3RlcnMgYWxyZWFkeSB1c2VkICovCi0gIGxvbmcgICAgICAgICAgICAgbmc7ICAgLyogbnVtYmVyIG9mIGdlbmVyYWwgcmVnaXN0ZXJzIGFscmVhZHkgdXNlZCAqLwotICBmZmlfY2lmICogICAgICAgIGNpZjsKLSAgZG91YmxlICAgICAgICAgICB0ZW1wOwotICB1bnNpZ25lZCAgICAgICAgIHNpemU7CisjaWZuZGVmIF9fTk9fRlBSU19fCisgIGxvbmcgICAgICAgICAgICAgbmYgPSAwOyAgIC8qIG51bWJlciBvZiBmbG9hdGluZyByZWdpc3RlcnMgYWxyZWFkeSB1c2VkICovCisjZW5kaWYKKyAgbG9uZyAgICAgICAgICAgICBuZyA9IDA7ICAgLyogbnVtYmVyIG9mIGdlbmVyYWwgcmVnaXN0ZXJzIGFscmVhZHkgdXNlZCAqLwogCi0gIGNpZiA9IGNsb3N1cmUtPmNpZjsKKyAgZmZpX2NpZiAqY2lmID0gY2xvc3VyZS0+Y2lmOworICB1bnNpZ25lZCAgICAgICBzaXplICAgICA9IGNpZi0+cnR5cGUtPnNpemU7CisgIHVuc2lnbmVkIHNob3J0IHJ0eXBlbnVtID0gY2lmLT5ydHlwZS0+dHlwZTsKKwogICBhdmFsdWUgPSBhbGxvY2EgKGNpZi0+bmFyZ3MgKiBzaXplb2YgKHZvaWQgKikpOwotICBzaXplID0gY2lmLT5ydHlwZS0+c2l6ZTsKIAotICBuZiA9IDA7Ci0gIG5nID0gMDsKKyAgLyogRmlyc3QgdHJhbnNsYXRlIGZvciBzb2Z0ZmxvYXQvbm9ubGludXggKi8KKyAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSB7CisJaWYgKHJ0eXBlbnVtID09IEZGSV9UWVBFX0ZMT0FUKQorCQlydHlwZW51bSA9IEZGSV9UWVBFX1VJTlQzMjsKKwlpZiAocnR5cGVudW0gPT0gRkZJX1RZUEVfRE9VQkxFKQorCQlydHlwZW51bSA9IEZGSV9UWVBFX1VJTlQ2NDsKKwlpZiAocnR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJcnR5cGVudW0gPSBGRklfVFlQRV9VSU5UMTI4OworICB9IGVsc2UgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVg2NCkgeworI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJaWYgKHJ0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCXJ0eXBlbnVtID0gRkZJX1RZUEVfU1RSVUNUOworI2VuZGlmCisgIH0KKwogCiAgIC8qIENvcHkgdGhlIGNhbGxlcidzIHN0cnVjdHVyZSByZXR1cm4gdmFsdWUgYWRkcmVzcyBzbyB0aGF0IHRoZSBjbG9zdXJlCiAgICAgIHJldHVybnMgdGhlIGRhdGEgZGlyZWN0bHkgdG8gdGhlIGNhbGxlci4KICAgICAgRm9yIEZGSV9TWVNWIHRoZSByZXN1bHQgaXMgcGFzc2VkIGluIHIzL3I0IGlmIHRoZSBzdHJ1Y3Qgc2l6ZSBpcyBsZXNzCiAgICAgIG9yIGVxdWFsIDggYnl0ZXMuICAqLwotCi0gIGlmICgoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgICAmJiAhKChjaWYtPmFiaSA9PSBGRklfU1lTVikgJiYgKHNpemUgPD0gOCkpKQotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0gICAgICB8fCAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9MT05HRE9VQkxFCi0JICAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0jZW5kaWYKLSAgICAgICkKLSAgICB7CisgIGlmIChydHlwZW51bSA9PSBGRklfVFlQRV9TVFJVQ1QgJiYgKChjaWYtPmFiaSAhPSBGRklfU1lTVikgfHwgKHNpemUgPiA4KSkpIHsKICAgICAgIHJ2YWx1ZSA9ICh2b2lkICopICpwZ3I7CiAgICAgICBuZysrOwogICAgICAgcGdyKys7CkBAIC0xMDQ3LDEwICsxMTAxLDEwOSBAQAogICBhcmdfdHlwZXMgPSBjaWYtPmFyZ190eXBlczsKIAogICAvKiBHcmFiIHRoZSBhZGRyZXNzZXMgb2YgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBzdGFjayBmcmFtZS4gICovCi0gIHdoaWxlIChpIDwgYXZuKQotICAgIHsKLSAgICAgIHN3aXRjaCAoYXJnX3R5cGVzW2ldLT50eXBlKQotCXsKKyAgd2hpbGUgKGkgPCBhdm4pIHsKKyAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGVudW0gPSBhcmdfdHlwZXNbaV0tPnR5cGU7CisKKyAgICAgIC8qIFdlIG1heSBuZWVkIHRvIGhhbmRsZSBzb21lIHZhbHVlcyBkZXBlbmRpbmcgb24gQUJJICovCisgICAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpIHsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfRkxPQVQpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDMyOworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9ET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDY0OworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQxMjg7CisgICAgICB9IGVsc2UgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVg2NCkgeworI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfU1RSVUNUOworI2VuZGlmCisgICAgICB9CisKKyAgICAgIHN3aXRjaCAodHlwZW51bSkgeworI2lmbmRlZiBfX05PX0ZQUlNfXworCWNhc2UgRkZJX1RZUEVfRkxPQVQ6CisJICAvKiB1bmZvcnR1bmF0ZWx5IGZsb2F0IHZhbHVlcyBhcmUgc3RvcmVkIGFzIGRvdWJsZXMKKwkgICAqIGluIHRoZSBmZmlfY2xvc3VyZV9TWVNWIGNvZGUgKHNpbmNlIHdlIGRvbid0IGNoZWNrCisJICAgKiB0aGUgdHlwZSBpbiB0aGF0IHJvdXRpbmUpLgorCSAgICovCisKKwkgIC8qIHRoZXJlIGFyZSA4IDY0Yml0IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyAqLworCisJICBpZiAobmYgPCA4KQorCSAgICB7CisJICAgICAgZG91YmxlIHRlbXAgPSBwZnItPmQ7CisJICAgICAgcGZyLT5mID0gKGZsb2F0KSB0ZW1wOworCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKKwkgICAgICBuZisrOworCSAgICAgIHBmcisrOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICAvKiBGSVhNRT8gaGVyZSB3ZSBhcmUgcmVhbGx5IGNoYW5naW5nIHRoZSB2YWx1ZXMKKwkgICAgICAgKiBzdG9yZWQgaW4gdGhlIG9yaWdpbmFsIGNhbGxpbmcgcm91dGluZXMgb3V0Z29pbmcKKwkgICAgICAgKiBwYXJhbWV0ZXIgc3RhY2suICBUaGlzIGlzIHByb2JhYmx5IGEgcmVhbGx5CisJICAgICAgICogbmF1Z2h0eSB0aGluZyB0byBkbyBidXQuLi4KKwkgICAgICAgKi8KKwkgICAgICBhdmFsdWVbaV0gPSBwc3Q7CisJICAgICAgcHN0ICs9IDE7CisJICAgIH0KKwkgIGJyZWFrOworCisJY2FzZSBGRklfVFlQRV9ET1VCTEU6CisJICAvKiBPbiB0aGUgb3V0Z29pbmcgc3RhY2sgYWxsIHZhbHVlcyBhcmUgYWxpZ25lZCB0byA4ICovCisJICAvKiB0aGVyZSBhcmUgOCA2NGJpdCBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgKi8KKworCSAgaWYgKG5mIDwgOCkKKwkgICAgeworCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKKwkgICAgICBuZisrOworCSAgICAgIHBmcisrOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBpZiAoKChsb25nKSBwc3QpICYgNCkKKwkJcHN0Kys7CisJICAgICAgYXZhbHVlW2ldID0gcHN0OworCSAgICAgIHBzdCArPSAyOworCSAgICB9CisJICBicmVhazsKKworI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgorCSAgaWYgKG5mIDwgNykKKwkgICAgeworCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKKwkgICAgICBwZnIgKz0gMjsKKwkgICAgICBuZiArPSAyOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBpZiAoKChsb25nKSBwc3QpICYgNCkKKwkJcHN0Kys7CisJICAgICAgYXZhbHVlW2ldID0gcHN0OworCSAgICAgIHBzdCArPSA0OworCSAgICAgIG5mID0gODsKKwkgICAgfQorCSAgYnJlYWs7CisjZW5kaWYKKyNlbmRpZiAvKiBoYXZlIEZQUlMgKi8KKworCWNhc2UgRkZJX1RZUEVfVUlOVDEyODoKKwkJLyoKKwkJICogVGVzdCBpZiBmb3IgdGhlIHdob2xlIGxvbmcgZG91YmxlLCA0IGdwcnMgYXJlIGF2YWlsYWJsZS4KKwkJICogb3RoZXJ3aXNlIHRoZSBzdHVmZiBlbmRzIHVwIG9uIHRoZSBzdGFjay4KKwkJICovCisJCWlmIChuZyA8IDUpIHsKKwkJCWF2YWx1ZVtpXSA9IHBncjsKKwkJCXBnciArPSA0OworCQkJbmcgKz0gNDsKKwkJfSBlbHNlIHsKKwkJCWF2YWx1ZVtpXSA9IHBzdDsKKwkJCXBzdCArPSA0OworCQkJbmcgPSA4KzQ7CisJCX0KKwkJYnJlYWs7CisKIAljYXNlIEZGSV9UWVBFX1NJTlQ4OgogCWNhc2UgRkZJX1RZUEVfVUlOVDg6CiAJICAvKiB0aGVyZSBhcmUgOCBncHIgcmVnaXN0ZXJzIHVzZWQgdG8gcGFzcyB2YWx1ZXMgKi8KQEAgLTEwODYsNyArMTIzOSw2IEBACiAJY2FzZSBGRklfVFlQRV9TSU5UMzI6CiAJY2FzZSBGRklfVFlQRV9VSU5UMzI6CiAJY2FzZSBGRklfVFlQRV9QT0lOVEVSOgotCXNvZnRfZmxvYXRfY2xvc3VyZToKIAkgIC8qIHRoZXJlIGFyZSA4IGdwciByZWdpc3RlcnMgdXNlZCB0byBwYXNzIHZhbHVlcyAqLwogCSAgaWYgKG5nIDwgOCkKIAkgICAgewpAQCAtMTEwMiw5ICsxMjU0LDYgQEAKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLQlkb19zdHJ1Y3Q6Ci0jZW5kaWYKIAkgIC8qIFN0cnVjdHMgYXJlIHBhc3NlZCBieSByZWZlcmVuY2UuIFRoZSBhZGRyZXNzIHdpbGwgYXBwZWFyIGluIGEKIAkgICAgIGdwciBpZiBpdCBpcyBvbmUgb2YgdGhlIGZpcnN0IDggYXJndW1lbnRzLiAgKi8KIAkgIGlmIChuZyA8IDgpCkBAIC0xMTIyLDcgKzEyNzEsNiBAQAogCiAJY2FzZSBGRklfVFlQRV9TSU5UNjQ6CiAJY2FzZSBGRklfVFlQRV9VSU5UNjQ6Ci0Jc29mdF9kb3VibGVfY2xvc3VyZToKIAkgIC8qIHBhc3NpbmcgbG9uZyBsb25nIGludHMgYXJlIGNvbXBsZXgsIHRoZXkgbXVzdAogCSAgICogYmUgcGFzc2VkIGluIHN1aXRhYmxlIHJlZ2lzdGVyIHBhaXJzIHN1Y2ggYXMKIAkgICAqIChyMyxyNCkgb3IgKHI1LHI2KSBvciAocjYscjcpLCBvciAocjcscjgpIG9yIChyOSxyMTApCkBAIC0xMTU0LDk5ICsxMzAyLDggQEAKIAkgICAgfQogCSAgYnJlYWs7CiAKLQljYXNlIEZGSV9UWVBFX0ZMT0FUOgotCSAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBmbG9hdHMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UMzIuICAqLwotCSAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICBnb3RvIHNvZnRfZmxvYXRfY2xvc3VyZTsKLQkgIC8qIHVuZm9ydHVuYXRlbHkgZmxvYXQgdmFsdWVzIGFyZSBzdG9yZWQgYXMgZG91YmxlcwotCSAgICogaW4gdGhlIGZmaV9jbG9zdXJlX1NZU1YgY29kZSAoc2luY2Ugd2UgZG9uJ3QgY2hlY2sKLQkgICAqIHRoZSB0eXBlIGluIHRoYXQgcm91dGluZSkuCi0JICAgKi8KLQotCSAgLyogdGhlcmUgYXJlIDggNjRiaXQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzICovCi0KLQkgIGlmIChuZiA8IDgpCi0JICAgIHsKLQkgICAgICB0ZW1wID0gcGZyLT5kOwotCSAgICAgIHBmci0+ZiA9IChmbG9hdCkgdGVtcDsKLQkgICAgICBhdmFsdWVbaV0gPSBwZnI7Ci0JICAgICAgbmYrKzsKLQkgICAgICBwZnIrKzsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgLyogRklYTUU/IGhlcmUgd2UgYXJlIHJlYWxseSBjaGFuZ2luZyB0aGUgdmFsdWVzCi0JICAgICAgICogc3RvcmVkIGluIHRoZSBvcmlnaW5hbCBjYWxsaW5nIHJvdXRpbmVzIG91dGdvaW5nCi0JICAgICAgICogcGFyYW1ldGVyIHN0YWNrLiAgVGhpcyBpcyBwcm9iYWJseSBhIHJlYWxseQotCSAgICAgICAqIG5hdWdodHkgdGhpbmcgdG8gZG8gYnV0Li4uCi0JICAgICAgICovCi0JICAgICAgYXZhbHVlW2ldID0gcHN0OwotCSAgICAgIHBzdCArPSAxOwotCSAgICB9Ci0JICBicmVhazsKLQotCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgotCSAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBkb3VibGVzIGFyZSBoYW5kbGVkIGxpa2UgVUlOVDY0LiAgKi8KLQkgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgZ290byBzb2Z0X2RvdWJsZV9jbG9zdXJlOwotCSAgLyogT24gdGhlIG91dGdvaW5nIHN0YWNrIGFsbCB2YWx1ZXMgYXJlIGFsaWduZWQgdG8gOCAqLwotCSAgLyogdGhlcmUgYXJlIDggNjRiaXQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzICovCi0KLQkgIGlmIChuZiA8IDgpCi0JICAgIHsKLQkgICAgICBhdmFsdWVbaV0gPSBwZnI7Ci0JICAgICAgbmYrKzsKLQkgICAgICBwZnIrKzsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgaWYgKCgobG9uZykgcHN0KSAmIDQpCi0JCXBzdCsrOwotCSAgICAgIGF2YWx1ZVtpXSA9IHBzdDsKLQkgICAgICBwc3QgKz0gMjsKLQkgICAgfQotCSAgYnJlYWs7Ci0KLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCWNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKLQkgIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIGdvdG8gZG9fc3RydWN0OwotCSAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICB7IC8qIFRlc3QgaWYgZm9yIHRoZSB3aG9sZSBsb25nIGRvdWJsZSwgNCBncHJzIGFyZSBhdmFpbGFibGUuCi0JCSBvdGhlcndpc2UgdGhlIHN0dWZmIGVuZHMgdXAgb24gdGhlIHN0YWNrLiAgKi8KLQkgICAgICBpZiAobmcgPCA1KQotCQl7Ci0JCSAgYXZhbHVlW2ldID0gcGdyOwotCQkgIHBnciArPSA0OwotCQkgIG5nICs9IDQ7Ci0JCX0KLQkgICAgICBlbHNlCi0JCXsKLQkJICBhdmFsdWVbaV0gPSBwc3Q7Ci0JCSAgcHN0ICs9IDQ7Ci0JCSAgbmcgPSA4OwotCQl9Ci0JICAgICAgYnJlYWs7Ci0JICAgIH0KLQkgIGlmIChuZiA8IDcpCi0JICAgIHsKLQkgICAgICBhdmFsdWVbaV0gPSBwZnI7Ci0JICAgICAgcGZyICs9IDI7Ci0JICAgICAgbmYgKz0gMjsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgaWYgKCgobG9uZykgcHN0KSAmIDQpCi0JCXBzdCsrOwotCSAgICAgIGF2YWx1ZVtpXSA9IHBzdDsKLQkgICAgICBwc3QgKz0gNDsKLQkgICAgICBuZiA9IDg7Ci0JICAgIH0KLQkgIGJyZWFrOwotI2VuZGlmCi0KIAlkZWZhdWx0OgotCSAgRkZJX0FTU0VSVCAoMCk7CisJCUZGSV9BU1NFUlQgKDApOwogCX0KIAogICAgICAgaSsrOwpAQCAtMTI2MywzOSArMTMyMCw5IEBACiAgICAgIGFscmVhZHkgdXNlZCBhbmQgd2UgbmV2ZXIgaGF2ZSBhIHN0cnVjdCB3aXRoIHNpemUgemVyby4gVGhhdCBpcyB0aGUgcmVhc29uCiAgICAgIGZvciB0aGUgc3VidHJhY3Rpb24gb2YgMS4gU2VlIHRoZSBjb21tZW50IGluIGZmaXRhcmdldC5oIGFib3V0IG9yZGVyaW5nLgogICAqLwotICBpZiAoY2lmLT5hYmkgPT0gRkZJX1NZU1YgJiYgY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgICYmIHNpemUgPD0gOCkKKyAgaWYgKGNpZi0+YWJpID09IEZGSV9TWVNWICYmIHJ0eXBlbnVtID09IEZGSV9UWVBFX1NUUlVDVCAmJiBzaXplIDw9IDgpCiAgICAgcmV0dXJuIChGRklfU1lTVl9UWVBFX1NNQUxMX1NUUlVDVCAtIDEpICsgc2l6ZTsKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotICBlbHNlIGlmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUKLQkgICAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0gICAgcmV0dXJuIEZGSV9UWVBFX1NUUlVDVDsKLSNlbmRpZgotICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGZsb2F0cyBhbmQgZG91YmxlcyBhcmUgaGFuZGxlZCBsaWtlIFVJTlQzMgotICAgICByZXNwZWN0aXZsZXkgVUlOVDY0LiAgKi8KLSAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotICAgIHsKLSAgICAgIHN3aXRjaCAoY2lmLT5ydHlwZS0+dHlwZSkKLQl7Ci0JY2FzZSBGRklfVFlQRV9GTE9BVDoKLQkgIHJldHVybiBGRklfVFlQRV9VSU5UMzI7Ci0JICBicmVhazsKLQljYXNlIEZGSV9UWVBFX0RPVUJMRToKLQkgIHJldHVybiBGRklfVFlQRV9VSU5UNjQ7Ci0JICBicmVhazsKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCWNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKLQkgIHJldHVybiBGRklfVFlQRV9VSU5UMTI4OwotCSAgYnJlYWs7Ci0jZW5kaWYKLQlkZWZhdWx0OgotCSAgcmV0dXJuIGNpZi0+cnR5cGUtPnR5cGU7Ci0JfQotICAgIH0KLSAgZWxzZQotICAgIHsKLSAgICAgIHJldHVybiBjaWYtPnJ0eXBlLT50eXBlOwotICAgIH0KKyAgcmV0dXJuIHJ0eXBlbnVtOwogfQogCiBpbnQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV9oZWxwZXJfTElOVVg2NCAoZmZpX2Nsb3N1cmUgKiwgdm9pZCAqLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYwppbmRleCBkODRmMWMzLi5kZDg5N2Y0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYwpAQCAtMyw3ICszLDcgQEAKIAogICAgQ29weXJpZ2h0IChDKSAxOTk4IEdlb2ZmcmV5IEtlYXRpbmcKICAgIENvcHlyaWdodCAoQykgMjAwMSBKb2huIEhvcm5rdmlzdAotICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA2LCAyMDA3LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBGRkkgc3VwcG9ydCBmb3IgRGFyd2luIGFuZCBBSVguCiAgICAKQEAgLTM1LDExICszNSwxNyBAQAogZXh0ZXJuIHZvaWQgZmZpX2Nsb3N1cmVfQVNNICh2b2lkKTsKIAogZW51bSB7Ci0gIC8qIFRoZSBhc3NlbWJseSBkZXBlbmRzIG9uIHRoZXNlIGV4YWN0IGZsYWdzLiAgKi8KLSAgRkxBR19SRVRVUk5TX05PVEhJTkcgID0gMSA8PCAoMzEtMzApLCAvKiBUaGVzZSBnbyBpbiBjcjcgICovCi0gIEZMQUdfUkVUVVJOU19GUCAgICAgICA9IDEgPDwgKDMxLTI5KSwKLSAgRkxBR19SRVRVUk5TXzY0QklUUyAgID0gMSA8PCAoMzEtMjgpLAotICBGTEFHX1JFVFVSTlNfMTI4QklUUyAgPSAxIDw8ICgzMS0zMSksCisgIC8qIFRoZSBhc3NlbWJseSBkZXBlbmRzIG9uIHRoZXNlIGV4YWN0IGZsYWdzLiAgCisgICAgIEZvciBEYXJ3aW42NCAod2hlbiBGTEFHX1JFVFVSTlNfU1RSVUNUIGlzIHNldCk6CisgICAgICAgRkxBR19SRVRVUk5TX0ZQIGluZGljYXRlcyB0aGF0IHRoZSBzdHJ1Y3R1cmUgZW1iZWRzIEZQIGRhdGEuCisgICAgICAgRkxBR19SRVRVUk5TXzEyOEJJVFMgc2lnbmFscyBhIHNwZWNpYWwgc3RydWN0IHNpemUgdGhhdCBpcyBub3QKKyAgICAgICBleHBhbmRlZCBmb3IgZmxvYXQgY29udGVudC4gICovCisgIEZMQUdfUkVUVVJOU18xMjhCSVRTCT0gMSA8PCAoMzEtMzEpLCAvKiBUaGVzZSBnbyBpbiBjcjcgICovCisgIEZMQUdfUkVUVVJOU19OT1RISU5HCT0gMSA8PCAoMzEtMzApLAorICBGTEFHX1JFVFVSTlNfRlAJPSAxIDw8ICgzMS0yOSksCisgIEZMQUdfUkVUVVJOU182NEJJVFMJPSAxIDw8ICgzMS0yOCksCisKKyAgRkxBR19SRVRVUk5TX1NUUlVDVAk9IDEgPDwgKDMxLTI3KSwgLyogVGhpcyBnb2VzIGluIGNyNiAgKi8KIAogICBGTEFHX0FSR19ORUVEU19DT1BZICAgPSAxIDw8ICgzMS0gNyksCiAgIEZMQUdfRlBfQVJHVU1FTlRTICAgICA9IDEgPDwgKDMxLSA2KSwgLyogY3IxLmVxOyBzcGVjaWZpZWQgYnkgQUJJICAqLwpAQCAtNTAsNDMgKzU2LDYxIEBACiAvKiBBYm91dCB0aGUgREFSV0lOIEFCSS4gICovCiBlbnVtIHsKICAgTlVNX0dQUl9BUkdfUkVHSVNURVJTID0gOCwKLSAgTlVNX0ZQUl9BUkdfUkVHSVNURVJTID0gMTMKKyAgTlVNX0ZQUl9BUkdfUkVHSVNURVJTID0gMTMsCisgIExJTktBR0VfQVJFQV9HUFJTID0gNgogfTsKLWVudW0geyBBU01fTkVFRFNfUkVHSVNURVJTID0gNCB9OworCitlbnVtIHsgQVNNX05FRURTX1JFR0lTVEVSUyA9IDQgfTsgLyogcjI4LXIzMSAqLwogCiAvKiBmZmlfcHJlcF9hcmdzIGlzIGNhbGxlZCBieSB0aGUgYXNzZW1ibHkgcm91dGluZSBvbmNlIHN0YWNrIHNwYWNlCiAgICBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9yIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cy4KKyAgIAorICAgbTMyL202NAogCiAgICBUaGUgc3RhY2sgbGF5b3V0IHdlIHdhbnQgbG9va3MgbGlrZSB0aGlzOgogCiAgICB8ICAgUmV0dXJuIGFkZHJlc3MgZnJvbSBmZmlfY2FsbF9EQVJXSU4gICAgICB8CWhpZ2hlciBhZGRyZXNzZXMKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLSAgIHwgICBQcmV2aW91cyBiYWNrY2hhaW4gcG9pbnRlcgk0CXwJc3RhY2sgcG9pbnRlciBoZXJlCisgICB8ICAgUHJldmlvdXMgYmFja2NoYWluIHBvaW50ZXIJNC84CXwJc3RhY2sgcG9pbnRlciBoZXJlCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18PCsgPDw8CW9uIGVudHJ5IHRvCi0gICB8ICAgU2F2ZWQgcjI4LXIzMQkJCTQqNAl8IHwJZmZpX2NhbGxfREFSV0lOCisgICB8ICAgQVNNX05FRURTX1JFR0lTVEVSUz1yMjgtcjMxICAgNCooNC84KQl8IHwJZmZpX2NhbGxfREFSV0lOCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKLSAgIHwgICBQYXJhbWV0ZXJzICAgICAgICAgICAgIChhdCBsZWFzdCA4KjQ9MzIpIHwgfAorICAgfCAgIFdoZW4gd2UgaGF2ZSBhbnkgRlAgYWN0aXZpdHkuLi4gdGhlCXwgfAorICAgfCAgIEZQUnMgb2NjdXB5IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyBzbG90cwl8IHwKKyAgIHwgICBoZXJlIGZwMTMgLi4gZnAxIGZyb20gaGlnaCB0byBsb3cgYWRkci4JfCB8CisgICB+CQkJCQkJfiB+CisgICB8ICAgUGFyYW1ldGVycyAgICAgIChhdCBsZWFzdCA4KjQvOD0zMi82NCkJfCB8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUwogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8Ci0gICB8ICAgU3BhY2UgZm9yIEdQUjIgICAgICAgICAgICAgICAgICAgNCAgICAgICB8IHwKKyAgIHwgICBUT0M9UjIgKEFJWCkgUmVzZXJ2ZWQgKERhcndpbikgICA0LzgJfCB8CiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJc3RhY2sJfAotICAgfCAgIFJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAyKjQgICAgICAgfCB8CWdyb3dzCXwKKyAgIHwgICBSZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgMio0LzgJfCB8CWdyb3dzCXwKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlkb3duCVYKLSAgIHwgICBTcGFjZSBmb3IgY2FsbGVlJ3MgTFIJCTQJfCB8CisgICB8ICAgU3BhY2UgZm9yIGNhbGxlZSdzIExSCQk0LzgJfCB8CiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJbG93ZXIgYWRkcmVzc2VzCi0gICB8ICAgU2F2ZWQgQ1IgICAgICAgICAgICAgICAgICAgICAgICAgNCAgICAgICB8IHwKKyAgIHwgICBTYXZlZCBDUiBbbG93IHdvcmQgZm9yIG02NF0gICAgICA0LzgJfCB8CiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwgICAgIHN0YWNrIHBvaW50ZXIgaGVyZQotICAgfCAgIEN1cnJlbnQgYmFja2NoYWluIHBvaW50ZXIJNAl8LS8JZHVyaW5nCisgICB8ICAgQ3VycmVudCBiYWNrY2hhaW4gcG9pbnRlcgk0LzgJfC0vCWR1cmluZwogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAgIDw8PAlmZmlfY2FsbF9EQVJXSU4KIAogICAgKi8KIAorI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKK3N0YXRpYyB2b2lkCitkYXJ3aW42NF9wYXNzX3N0cnVjdF9ieV92YWx1ZSAKKyAgKGZmaV90eXBlICosIGNoYXIgKiwgdW5zaWduZWQsIHVuc2lnbmVkICosIGRvdWJsZSAqKiwgdW5zaWduZWQgbG9uZyAqKik7CisjZW5kaWYKKworLyogVGhpcyBkZXBlbmRzIG9uIEdQUl9TSVpFID0gc2l6ZW9mICh1bnNpZ25lZCBsb25nKSAqLworCiB2b2lkCiBmZmlfcHJlcF9hcmdzIChleHRlbmRlZF9jaWYgKmVjaWYsIHVuc2lnbmVkIGxvbmcgKmNvbnN0IHN0YWNrKQogewogICBjb25zdCB1bnNpZ25lZCBieXRlcyA9IGVjaWYtPmNpZi0+Ynl0ZXM7CiAgIGNvbnN0IHVuc2lnbmVkIGZsYWdzID0gZWNpZi0+Y2lmLT5mbGFnczsKICAgY29uc3QgdW5zaWduZWQgbmFyZ3MgPSBlY2lmLT5jaWYtPm5hcmdzOworI2lmICFkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpIAogICBjb25zdCBmZmlfYWJpIGFiaSA9IGVjaWYtPmNpZi0+YWJpOworI2VuZGlmCiAKICAgLyogJ3N0YWNrdG9wJyBwb2ludHMgYXQgdGhlIHByZXZpb3VzIGJhY2tjaGFpbiBwb2ludGVyLiAgKi8KICAgdW5zaWduZWQgbG9uZyAqY29uc3Qgc3RhY2t0b3AgPSBzdGFjayArIChieXRlcyAvIHNpemVvZih1bnNpZ25lZCBsb25nKSk7CkBAIC05NCwxOCArMTE4LDE5IEBACiAgIC8qICdmcHJfYmFzZScgcG9pbnRzIGF0IHRoZSBzcGFjZSBmb3IgZnByMSwgYW5kIGdyb3dzIHVwd2FyZHMgYXMKICAgICAgd2UgdXNlIEZQUiByZWdpc3RlcnMuICAqLwogICBkb3VibGUgKmZwcl9iYXNlID0gKGRvdWJsZSAqKSAoc3RhY2t0b3AgLSBBU01fTkVFRFNfUkVHSVNURVJTKSAtIE5VTV9GUFJfQVJHX1JFR0lTVEVSUzsKLSAgaW50IGZwYXJnX2NvdW50ID0gMDsKLQorICBpbnQgZ3BfY291bnQgPSAwLCBmcGFyZ19jb3VudCA9IDA7CiAKICAgLyogJ25leHRfYXJnJyBncm93cyB1cCBhcyB3ZSBwdXQgcGFyYW1ldGVycyBpbiBpdC4gICovCi0gIHVuc2lnbmVkIGxvbmcgKm5leHRfYXJnID0gc3RhY2sgKyA2OyAvKiA2IHJlc2VydmVkIHBvc2l0aW9ucy4gICovCisgIHVuc2lnbmVkIGxvbmcgKm5leHRfYXJnID0gc3RhY2sgKyBMSU5LQUdFX0FSRUFfR1BSUzsgLyogNiByZXNlcnZlZCBwb3NpdGlvbnMuICAqLwogCiAgIGludCBpOwogICBkb3VibGUgZG91YmxlX3RtcDsKICAgdm9pZCAqKnBfYXJndiA9IGVjaWYtPmF2YWx1ZTsKICAgdW5zaWduZWQgbG9uZyBncHJ2YWx1ZTsKICAgZmZpX3R5cGUqKiBwdHIgPSBlY2lmLT5jaWYtPmFyZ190eXBlczsKKyNpZiAhZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KSAKICAgY2hhciAqZGVzdF9jcHk7CisjZW5kaWYKICAgdW5zaWduZWQgc2l6ZV9hbCA9IDA7CiAKICAgLyogQ2hlY2sgdGhhdCBldmVyeXRoaW5nIHN0YXJ0cyBhbGlnbmVkIHByb3Blcmx5LiAgKi8KQEAgLTEzMCwyNSArMTU1LDMwIEBACiAJICAgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nLXBvaW50IHBhcmFtZXRlciBhcmUgc2tpcHBlZC4gICovCiAJY2FzZSBGRklfVFlQRV9GTE9BVDoKIAkgIGRvdWJsZV90bXAgPSAqKGZsb2F0ICopICpwX2FyZ3Y7Ci0JICBpZiAoZnBhcmdfY291bnQgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQotCSAgICAqKGRvdWJsZSAqKW5leHRfYXJnID0gZG91YmxlX3RtcDsKLQkgIGVsc2UKKwkgIGlmIChmcGFyZ19jb3VudCA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKIAkgICAgKmZwcl9iYXNlKysgPSBkb3VibGVfdG1wOworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU4pCisJICAqKGZsb2F0ICopbmV4dF9hcmcgPSAqKGZsb2F0ICopICpwX2FyZ3Y7CisjZWxzZQorCSAgKihkb3VibGUgKiluZXh0X2FyZyA9IGRvdWJsZV90bXA7CisjZW5kaWYKIAkgIG5leHRfYXJnKys7CisJICBncF9jb3VudCsrOwogCSAgZnBhcmdfY291bnQrKzsKIAkgIEZGSV9BU1NFUlQoZmxhZ3MgJiBGTEFHX0ZQX0FSR1VNRU5UUyk7CiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgogCSAgZG91YmxlX3RtcCA9ICooZG91YmxlICopICpwX2FyZ3Y7Ci0JICBpZiAoZnBhcmdfY291bnQgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQotCSAgICAqKGRvdWJsZSAqKW5leHRfYXJnID0gZG91YmxlX3RtcDsKLQkgIGVsc2UKKwkgIGlmIChmcGFyZ19jb3VudCA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKIAkgICAgKmZwcl9iYXNlKysgPSBkb3VibGVfdG1wOworCSAgKihkb3VibGUgKiluZXh0X2FyZyA9IGRvdWJsZV90bXA7CiAjaWZkZWYgUE9XRVJQQzY0CiAJICBuZXh0X2FyZysrOworCSAgZ3BfY291bnQrKzsKICNlbHNlCiAJICBuZXh0X2FyZyArPSAyOworCSAgZ3BfY291bnQgKz0gMjsKICNlbmRpZgogCSAgZnBhcmdfY291bnQrKzsKIAkgIEZGSV9BU1NFUlQoZmxhZ3MgJiBGTEFHX0ZQX0FSR1VNRU5UUyk7CkBAIC0xNTcsMzAgKzE4Nyw0MSBAQAogI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCiAKIAljYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6Ci0jaWZkZWYgUE9XRVJQQzY0CisjICBpZiBkZWZpbmVkKFBPV0VSUEM2NCkgJiYgIWRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKwkgIC8qID8/PyBUaGlzIHdpbGwgZXhjZWVkIHRoZSByZWdzIGNvdW50IHdoZW4gdGhlIHZhbHVlIHN0YXJ0cyBhdCBmcDEzCisJICAgICBhbmQgaXQgd2lsbCBub3QgcHV0IHRoZSBleHRyYSBiaXQgb24gdGhlIHN0YWNrLiAgKi8KIAkgIGlmIChmcGFyZ19jb3VudCA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKIAkgICAgKihsb25nIGRvdWJsZSAqKSBmcHJfYmFzZSsrID0gKihsb25nIGRvdWJsZSAqKSAqcF9hcmd2OwogCSAgZWxzZQogCSAgICAqKGxvbmcgZG91YmxlICopIG5leHRfYXJnID0gKihsb25nIGRvdWJsZSAqKSAqcF9hcmd2OwogCSAgbmV4dF9hcmcgKz0gMjsKIAkgIGZwYXJnX2NvdW50ICs9IDI7Ci0jZWxzZQorIyAgZWxzZQogCSAgZG91YmxlX3RtcCA9ICgoZG91YmxlICopICpwX2FyZ3YpWzBdOwogCSAgaWYgKGZwYXJnX2NvdW50IDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCSAgICAqZnByX2Jhc2UrKyA9IGRvdWJsZV90bXA7Ci0JICBlbHNlCi0JICAgICooZG91YmxlICopIG5leHRfYXJnID0gZG91YmxlX3RtcDsKKwkgICooZG91YmxlICopIG5leHRfYXJnID0gZG91YmxlX3RtcDsKKyMgICAgaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCSAgbmV4dF9hcmcrKzsKKwkgIGdwX2NvdW50Kys7CisjICAgIGVsc2UKIAkgIG5leHRfYXJnICs9IDI7CisJICBncF9jb3VudCArPSAyOworIyAgICBlbmRpZgogCSAgZnBhcmdfY291bnQrKzsKLQogCSAgZG91YmxlX3RtcCA9ICgoZG91YmxlICopICpwX2FyZ3YpWzFdOwogCSAgaWYgKGZwYXJnX2NvdW50IDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCSAgICAqZnByX2Jhc2UrKyA9IGRvdWJsZV90bXA7Ci0JICBlbHNlCi0JICAgICooZG91YmxlICopIG5leHRfYXJnID0gZG91YmxlX3RtcDsKKwkgICooZG91YmxlICopIG5leHRfYXJnID0gZG91YmxlX3RtcDsKKyMgICAgaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCSAgbmV4dF9hcmcrKzsKKwkgIGdwX2NvdW50Kys7CisjICAgIGVsc2UKIAkgIG5leHRfYXJnICs9IDI7CisJICBncF9jb3VudCArPSAyOworIyAgICBlbmRpZgogCSAgZnBhcmdfY291bnQrKzsKLSNlbmRpZgorIyAgZW5kaWYKIAkgIEZGSV9BU1NFUlQoZmxhZ3MgJiBGTEFHX0ZQX0FSR1VNRU5UUyk7CiAJICBicmVhazsKICNlbmRpZgpAQCAtMTkyLDYgKzIzMyw3IEBACiAjZWxzZQogCSAgKihsb25nIGxvbmcgKikgbmV4dF9hcmcgPSAqKGxvbmcgbG9uZyAqKSAqcF9hcmd2OwogCSAgbmV4dF9hcmcgKz0gMjsKKwkgIGdwX2NvdW50ICs9IDI7CiAjZW5kaWYKIAkgIGJyZWFrOwogCWNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKQEAgLTIxMSwzMiArMjUzLDM1IEBACiAJICBnb3RvIHB1dGdwcjsKIAogCWNhc2UgRkZJX1RZUEVfU1RSVUNUOgotI2lmZGVmIFBPV0VSUEM2NAotCSAgZGVzdF9jcHkgPSAoY2hhciAqKSBuZXh0X2FyZzsKIAkgIHNpemVfYWwgPSAoKnB0ciktPnNpemU7Ci0JICBpZiAoKCpwdHIpLT5lbGVtZW50c1swXS0+dHlwZSA9PSAzKQotCSAgICBzaXplX2FsID0gQUxJR04oKCpwdHIpLT5zaXplLCA4KTsKLQkgIGlmIChzaXplX2FsIDwgMyAmJiBhYmkgPT0gRkZJX0RBUldJTikKLQkgICAgZGVzdF9jcHkgKz0gNCAtIHNpemVfYWw7Ci0KLQkgIG1lbWNweSAoKGNoYXIgKikgZGVzdF9jcHksIChjaGFyICopICpwX2FyZ3YsIHNpemVfYWwpOwotCSAgbmV4dF9hcmcgKz0gKHNpemVfYWwgKyA3KSAvIDg7CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCSAgbmV4dF9hcmcgPSAodW5zaWduZWQgbG9uZyAqKUFMSUdOKChjaGFyICopbmV4dF9hcmcsICgqcHRyKS0+YWxpZ25tZW50KTsKKwkgIGRhcndpbjY0X3Bhc3Nfc3RydWN0X2J5X3ZhbHVlICgqcHRyLCAoY2hhciAqKSAqcF9hcmd2LCAKKwkJCQkJICh1bnNpZ25lZCkgc2l6ZV9hbCwKKwkJCQkJICh1bnNpZ25lZCBpbnQgKikgJmZwYXJnX2NvdW50LAorCQkJCQkgJmZwcl9iYXNlLCAmbmV4dF9hcmcpOwogI2Vsc2UKIAkgIGRlc3RfY3B5ID0gKGNoYXIgKikgbmV4dF9hcmc7CiAKKwkgIC8qIElmIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhlIHN0cnVjdCBpcyBhIGRvdWJsZSwgdGhlbiBpbmNsdWRlIGVub3VnaAorCSAgICAgcGFkZGluZyBpbiB0aGUgc3RydWN0IHNpemUgdG8gYWxpZ24gaXQgdG8gZG91YmxlLXdvcmQuICAqLworCSAgaWYgKCgqcHRyKS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQorCSAgICBzaXplX2FsID0gQUxJR04oKCpwdHIpLT5zaXplLCA4KTsKKworIyAgaWYgZGVmaW5lZChQT1dFUlBDNjQpIAorCSAgRkZJX0FTU0VSVCAoYWJpICE9IEZGSV9EQVJXSU4pOworCSAgbWVtY3B5ICgoY2hhciAqKSBkZXN0X2NweSwgKGNoYXIgKikgKnBfYXJndiwgc2l6ZV9hbCk7CisJICBuZXh0X2FyZyArPSAoc2l6ZV9hbCArIDcpIC8gODsKKyMgIGVsc2UKIAkgIC8qIFN0cnVjdHVyZXMgdGhhdCBtYXRjaCB0aGUgYmFzaWMgbW9kZXMgKFFJIDEgYnl0ZSwgSEkgMiBieXRlcywKIAkgICAgIFNJIDQgYnl0ZXMpIGFyZSBhbGlnbmVkIGFzIGlmIHRoZXkgd2VyZSB0aG9zZSBtb2Rlcy4KIAkgICAgIFN0cnVjdHVyZXMgd2l0aCAzIGJ5dGUgaW4gc2l6ZSBhcmUgcGFkZGVkIHVwd2FyZHMuICAqLwotCSAgc2l6ZV9hbCA9ICgqcHRyKS0+c2l6ZTsKLQkgIC8qIElmIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhlIHN0cnVjdCBpcyBhIGRvdWJsZSwgdGhlbiBhbGlnbgotCSAgICAgdGhlIHN0cnVjdCB0byBkb3VibGUtd29yZC4gICovCi0JICBpZiAoKCpwdHIpLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCi0JICAgIHNpemVfYWwgPSBBTElHTigoKnB0ciktPnNpemUsIDgpOwogCSAgaWYgKHNpemVfYWwgPCAzICYmIGFiaSA9PSBGRklfREFSV0lOKQogCSAgICBkZXN0X2NweSArPSA0IC0gc2l6ZV9hbDsKIAogCSAgbWVtY3B5KChjaGFyICopIGRlc3RfY3B5LCAoY2hhciAqKSAqcF9hcmd2LCBzaXplX2FsKTsKIAkgIG5leHRfYXJnICs9IChzaXplX2FsICsgMykgLyA0OworIyAgZW5kaWYKICNlbmRpZgogCSAgYnJlYWs7CiAKQEAgLTI0OSw2ICsyOTQsNyBAQAogCSAgZ3BydmFsdWUgPSAqKHVuc2lnbmVkIGludCAqKSAqcF9hcmd2OwogCXB1dGdwcjoKIAkgICpuZXh0X2FyZysrID0gZ3BydmFsdWU7CisJICBncF9jb3VudCsrOwogCSAgYnJlYWs7CiAJZGVmYXVsdDoKIAkgIGJyZWFrOwpAQCAtMjYyLDggKzMwOCwyNjkgQEAKICAgLy9GRklfQVNTRVJUKGZsYWdzICYgRkxBR180X0dQUl9BUkdVTUVOVFMgfHwgaW50YXJnX2NvdW50IDw9IDQpOwogfQogCisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCisvKiBTZWUgaWYgd2UgY2FuIHB1dCBzb21lIG9mIHRoZSBzdHJ1Y3QgaW50byBmcHJzLgorICAgVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3Igc3RydWN0dXJlcyBvZiBzaXplIDE2IGJ5dGVzLCBzaW5jZSB0aGVzZSBhcmUgbm90CisgICBicm9rZW4gb3V0IHRoaXMgd2F5LiAgKi8KK3N0YXRpYyB2b2lkCitkYXJ3aW42NF9zY2FuX3N0cnVjdF9mb3JfZmxvYXRzIChmZmlfdHlwZSAqcywgdW5zaWduZWQgKm5mcHIpCit7CisgIGludCBpOworCisgIEZGSV9BU1NFUlQgKHMtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorCisgIGZvciAoaSA9IDA7IHMtPmVsZW1lbnRzW2ldICE9IE5VTEw7IGkrKykKKyAgICB7CisgICAgICBmZmlfdHlwZSAqcCA9IHMtPmVsZW1lbnRzW2ldOworICAgICAgc3dpdGNoIChwLT50eXBlKQorCXsKKwkgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorCSAgICBkYXJ3aW42NF9zY2FuX3N0cnVjdF9mb3JfZmxvYXRzIChwLCBuZnByKTsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CisJICAgICgqbmZwcikgKz0gMjsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKKwkgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgYnJlYWs7CisJICBkZWZhdWx0OgorCSAgICBicmVhazsgICAgCisJfQorICAgIH0KK30KKworc3RhdGljIGludAorZGFyd2luNjRfc3RydWN0X3NpemVfZXhjZWVkc19ncHJzX3AgKGZmaV90eXBlICpzLCBjaGFyICpzcmMsIHVuc2lnbmVkICpuZnByKQoreworICB1bnNpZ25lZCBzdHJ1Y3Rfb2Zmc2V0PTAsIGk7CisKKyAgZm9yIChpID0gMDsgcy0+ZWxlbWVudHNbaV0gIT0gTlVMTDsgaSsrKQorICAgIHsKKyAgICAgIGNoYXIgKml0ZW1fYmFzZTsKKyAgICAgIGZmaV90eXBlICpwID0gcy0+ZWxlbWVudHNbaV07CisgICAgICAvKiBGaW5kIHRoZSBzdGFydCBvZiB0aGlzIGl0ZW0gKDAgZm9yIHRoZSBmaXJzdCBvbmUpLiAgKi8KKyAgICAgIGlmIChpID4gMCkKKyAgICAgICAgc3RydWN0X29mZnNldCA9IEFMSUdOKHN0cnVjdF9vZmZzZXQsIHAtPmFsaWdubWVudCk7CisKKyAgICAgIGl0ZW1fYmFzZSA9IHNyYyArIHN0cnVjdF9vZmZzZXQ7CisKKyAgICAgIHN3aXRjaCAocC0+dHlwZSkKKwl7CisJICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKKwkgICAgaWYgKGRhcndpbjY0X3N0cnVjdF9zaXplX2V4Y2VlZHNfZ3Byc19wIChwLCBpdGVtX2Jhc2UsIG5mcHIpKQorCSAgICAgIHJldHVybiAxOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKKwkgICAgaWYgKCpuZnByID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICByZXR1cm4gMTsKKwkgICAgKCpuZnByKSArPSAxOworCSAgICBpdGVtX2Jhc2UgKz0gODsKKwkgIC8qIEZBTEwgVEhST1VHSCAqLworCSAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CisJICAgIGlmICgqbmZwciA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgcmV0dXJuIDE7CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgorCSAgICBpZiAoKm5mcHIgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgIHJldHVybiAxOworCSAgICAoKm5mcHIpICs9IDE7CisJICAgIGJyZWFrOworCSAgZGVmYXVsdDoKKwkgICAgLyogSWYgd2UgdHJ5IGFuZCBwbGFjZSBhbnkgaXRlbSwgdGhhdCBpcyBub24tZmxvYXQsIG9uY2Ugd2UndmUKKwkgICAgICAgZXhjZWVkZWQgdGhlIDggR1BSIG1hcmssIHRoZW4gd2UgY2FuJ3QgZml0IHRoZSBzdHJ1Y3QuICAqLworCSAgICBpZiAoKHVuc2lnbmVkIGxvbmcpaXRlbV9iYXNlID49IDgqOCkgCisJICAgICAgcmV0dXJuIDE7CisJICAgIGJyZWFrOyAgICAKKwl9CisgICAgICAvKiBub3cgY291bnQgdGhlIHNpemUgb2Ygd2hhdCB3ZSBqdXN0IHVzZWQuICAqLworICAgICAgc3RydWN0X29mZnNldCArPSBwLT5zaXplOworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisKKy8qIENhbiB0aGlzIHN0cnVjdCBiZSByZXR1cm5lZCBieSB2YWx1ZT8gICovCitpbnQgCitkYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AgKGZmaV90eXBlICpzKQoreworICB1bnNpZ25lZCBuZnAgPSAwOworCisgIEZGSV9BU1NFUlQgKHMgJiYgcy0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpOworICAKKyAgLyogVGhlIGxhcmdlc3Qgc3RydWN0dXJlIHdlIGNhbiByZXR1cm4gaXMgOGxvbmcgKyAxMyBkb3VibGVzLiAgKi8KKyAgaWYgKHMtPnNpemUgPiAxNjgpCisgICAgcmV0dXJuIDA7CisgIAorICAvKiBXZSBjYW4ndCBwYXNzIG1vcmUgdGhhbiAxMyBmbG9hdHMuICAqLworICBkYXJ3aW42NF9zY2FuX3N0cnVjdF9mb3JfZmxvYXRzIChzLCAmbmZwKTsKKyAgaWYgKG5mcCA+IDEzKQorICAgIHJldHVybiAwOworICAKKyAgLyogSWYgdGhlcmUgYXJlIG5vdCB0b28gbWFueSBmbG9hdHMsIGFuZCB0aGUgc3RydWN0IGlzCisgICAgIHNtYWxsIGVub3VnaCB0byBhY2NvbW1vZGF0ZSBpbiB0aGUgR1BScywgdGhlbiBpdCBtdXN0IGJlIE9LLiAgKi8KKyAgaWYgKHMtPnNpemUgPD0gNjQpCisgICAgcmV0dXJuIDE7CisgIAorICAvKiBXZWxsLCB3ZSBoYXZlIHRvIGxvb2sgaGFyZGVyLiAgKi8KKyAgbmZwID0gMDsKKyAgaWYgKGRhcndpbjY0X3N0cnVjdF9zaXplX2V4Y2VlZHNfZ3Byc19wIChzLCBOVUxMLCAmbmZwKSkKKyAgICByZXR1cm4gMDsKKyAgCisgIHJldHVybiAxOworfQorCit2b2lkCitkYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMgKGZmaV90eXBlICpzLCBjaGFyICpzcmMsIAorCQkJICAgICB1bnNpZ25lZCAqbmZwciwgZG91YmxlICoqZnBycykKK3sKKyAgaW50IGk7CisgIGRvdWJsZSAqZnByX2Jhc2UgPSAqZnByczsKKyAgdW5zaWduZWQgc3RydWN0X29mZnNldCA9IDA7CisKKyAgLyogV2UgZG9uJ3QgYXNzdW1lIGFueXRoaW5nIGFib3V0IHRoZSBhbGlnbm1lbnQgb2YgdGhlIHNvdXJjZS4gICovCisgIGZvciAoaSA9IDA7IHMtPmVsZW1lbnRzW2ldICE9IE5VTEw7IGkrKykKKyAgICB7CisgICAgICBjaGFyICppdGVtX2Jhc2U7CisgICAgICBmZmlfdHlwZSAqcCA9IHMtPmVsZW1lbnRzW2ldOworICAgICAgLyogRmluZCB0aGUgc3RhcnQgb2YgdGhpcyBpdGVtICgwIGZvciB0aGUgZmlyc3Qgb25lKS4gICovCisgICAgICBpZiAoaSA+IDApCisgICAgICAgIHN0cnVjdF9vZmZzZXQgPSBBTElHTihzdHJ1Y3Rfb2Zmc2V0LCBwLT5hbGlnbm1lbnQpOworICAgICAgaXRlbV9iYXNlID0gc3JjICsgc3RydWN0X29mZnNldDsKKworICAgICAgc3dpdGNoIChwLT50eXBlKQorCXsKKwkgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorCSAgICBkYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMgKHAsIGl0ZW1fYmFzZSwgbmZwciwKKwkJCQkJICAgJmZwcl9iYXNlKTsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CisJICAgIGlmICgqbmZwciA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICAqZnByX2Jhc2UrKyA9ICooZG91YmxlICopaXRlbV9iYXNlOworCSAgICAoKm5mcHIpICs9IDE7CisJICAgIGl0ZW1fYmFzZSArPSA4OworCSAgLyogRkFMTCBUSFJPVUdIICovCisJICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKKwkgICAgaWYgKCpuZnByIDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgICpmcHJfYmFzZSsrID0gKihkb3VibGUgKilpdGVtX2Jhc2U7CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgorCSAgICBpZiAoKm5mcHIgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgKmZwcl9iYXNlKysgPSAoZG91YmxlKSAqKGZsb2F0ICopaXRlbV9iYXNlOworCSAgICAoKm5mcHIpICs9IDE7CisJICAgIGJyZWFrOworCSAgZGVmYXVsdDoKKwkgICAgYnJlYWs7ICAgIAorCX0KKyAgICAgIC8qIG5vdyBjb3VudCB0aGUgc2l6ZSBvZiB3aGF0IHdlIGp1c3QgdXNlZC4gICovCisgICAgICBzdHJ1Y3Rfb2Zmc2V0ICs9IHAtPnNpemU7CisgICAgfQorICAvKiBVcGRhdGUgdGhlIHNjb3Jlcy4gICovCisgICpmcHJzID0gZnByX2Jhc2U7Cit9CisKKy8qIERhcndpbjY0IHNwZWNpYWwgcnVsZXMuCisgICBCcmVhayBvdXQgYSBzdHJ1Y3QgaW50byBwYXJhbXMgYW5kIGZsb2F0IHJlZ2lzdGVycy4gICovCitzdGF0aWMgdm9pZAorZGFyd2luNjRfcGFzc19zdHJ1Y3RfYnlfdmFsdWUgKGZmaV90eXBlICpzLCBjaGFyICpzcmMsIHVuc2lnbmVkIHNpemUsCisJCQkgICAgICAgdW5zaWduZWQgKm5mcHIsIGRvdWJsZSAqKmZwcnMsIHVuc2lnbmVkIGxvbmcgKiphcmcpCit7CisgIHVuc2lnbmVkIGxvbmcgKm5leHRfYXJnID0gKmFyZzsKKyAgY2hhciAqZGVzdF9jcHkgPSAoY2hhciAqKW5leHRfYXJnOworCisgIEZGSV9BU1NFUlQgKHMtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorCisgIGlmICghc2l6ZSkKKyAgICByZXR1cm47CisKKyAgLyogRmlyc3QuLi4gc3BlY2lhbCBjYXNlcy4gICovCisgIGlmIChzaXplIDwgMworICAgICAgfHwgKHNpemUgPT0gNCAKKwkgICYmIHMtPmVsZW1lbnRzWzBdIAorCSAgJiYgcy0+ZWxlbWVudHNbMF0tPnR5cGUgIT0gRkZJX1RZUEVfRkxPQVQpKQorICAgIHsKKyAgICAgIC8qIE11c3QgYmUgYXQgbGVhc3Qgb25lIEdQUiwgcGFkZGluZyBpcyB1bnNwZWNpZmllZCBpbiB2YWx1ZSwgCisJIGxldCdzIG1ha2UgaXQgemVyby4gICovCisgICAgICAqbmV4dF9hcmcgPSAwVUw7IAorICAgICAgZGVzdF9jcHkgKz0gOCAtIHNpemU7CisgICAgICBtZW1jcHkgKChjaGFyICopIGRlc3RfY3B5LCBzcmMsIHNpemUpOworICAgICAgbmV4dF9hcmcrKzsKKyAgICB9CisgIGVsc2UgaWYgKHNpemUgPT0gMTYpCisgICAgeworICAgICAgbWVtY3B5ICgoY2hhciAqKSBkZXN0X2NweSwgc3JjLCBzaXplKTsKKyAgICAgIG5leHRfYXJnICs9IDI7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgLyogbm93IHRoZSBnZW5lcmFsIGNhc2UsIHdlIGNvbnNpZGVyIGVtYmVkZGVkIGZsb2F0cy4gICovCisgICAgICBtZW1jcHkgKChjaGFyICopIGRlc3RfY3B5LCBzcmMsIHNpemUpOworICAgICAgZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzIChzLCBzcmMsIG5mcHIsIGZwcnMpOworICAgICAgbmV4dF9hcmcgKz0gKHNpemUrNykvODsKKyAgICB9CisgICAgCisgICphcmcgPSBuZXh0X2FyZzsKK30KKworZG91YmxlICoKK2RhcndpbjY0X3N0cnVjdF9mbG9hdHNfdG9fbWVtIChmZmlfdHlwZSAqcywgY2hhciAqZGVzdCwgZG91YmxlICpmcHJzLCB1bnNpZ25lZCAqbmYpCit7CisgIGludCBpOworICB1bnNpZ25lZCBzdHJ1Y3Rfb2Zmc2V0ID0gMDsKKworICAvKiBXZSBkb24ndCBhc3N1bWUgYW55dGhpbmcgYWJvdXQgdGhlIGFsaWdubWVudCBvZiB0aGUgc291cmNlLiAgKi8KKyAgZm9yIChpID0gMDsgcy0+ZWxlbWVudHNbaV0gIT0gTlVMTDsgaSsrKQorICAgIHsKKyAgICAgIGNoYXIgKml0ZW1fYmFzZTsKKyAgICAgIGZmaV90eXBlICpwID0gcy0+ZWxlbWVudHNbaV07CisgICAgICAvKiBGaW5kIHRoZSBzdGFydCBvZiB0aGlzIGl0ZW0gKDAgZm9yIHRoZSBmaXJzdCBvbmUpLiAgKi8KKyAgICAgIGlmIChpID4gMCkKKyAgICAgICAgc3RydWN0X29mZnNldCA9IEFMSUdOKHN0cnVjdF9vZmZzZXQsIHAtPmFsaWdubWVudCk7CisgICAgICBpdGVtX2Jhc2UgPSBkZXN0ICsgc3RydWN0X29mZnNldDsKKworICAgICAgc3dpdGNoIChwLT50eXBlKQorCXsKKwkgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorCSAgICBmcHJzID0gZGFyd2luNjRfc3RydWN0X2Zsb2F0c190b19tZW0gKHAsIGl0ZW1fYmFzZSwgZnBycywgbmYpOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKKwkgICAgaWYgKCpuZiA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICB7CisJCSooZG91YmxlICopaXRlbV9iYXNlID0gKmZwcnMrKyA7CisJCSgqbmYpICs9IDE7CisJICAgICAgfQorCSAgICBpdGVtX2Jhc2UgKz0gODsKKwkgIC8qIEZBTEwgVEhST1VHSCAqLworCSAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CisJICAgIGlmICgqbmYgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgeworCQkqKGRvdWJsZSAqKWl0ZW1fYmFzZSA9ICpmcHJzKysgOworCQkoKm5mKSArPSAxOworCSAgICAgIH0KKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgorCSAgICBpZiAoKm5mIDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgIHsKKwkJKihmbG9hdCAqKWl0ZW1fYmFzZSA9IChmbG9hdCkgKmZwcnMrKyA7CisJCSgqbmYpICs9IDE7CisJICAgICAgfQorCSAgICBicmVhazsKKwkgIGRlZmF1bHQ6CisJICAgIGJyZWFrOyAgICAKKwl9CisgICAgICAvKiBub3cgY291bnQgdGhlIHNpemUgb2Ygd2hhdCB3ZSBqdXN0IHVzZWQuICAqLworICAgICAgc3RydWN0X29mZnNldCArPSBwLT5zaXplOworICAgIH0KKyAgcmV0dXJuIGZwcnM7Cit9CisKKyNlbmRpZgorCiAvKiBBZGp1c3QgdGhlIHNpemUgb2YgUyB0byBiZSBjb3JyZWN0IGZvciBEYXJ3aW4uCi0gICBPbiBEYXJ3aW4sIHRoZSBmaXJzdCBmaWVsZCBvZiBhIHN0cnVjdHVyZSBoYXMgbmF0dXJhbCBhbGlnbm1lbnQuICAqLworICAgT24gRGFyd2luIG0zMiwgdGhlIGZpcnN0IGZpZWxkIG9mIGEgc3RydWN0dXJlIGhhcyBuYXR1cmFsIGFsaWdubWVudC4gIAorICAgT24gRGFyd2luIG02NCwgYWxsIGZpZWxkcyBoYXZlIG5hdHVyYWwgYWxpZ25tZW50LiAgKi8KIAogc3RhdGljIHZvaWQKIGRhcndpbl9hZGp1c3RfYWdncmVnYXRlX3NpemVzIChmZmlfdHlwZSAqcykKQEAgLTI4MCwyMiArNTg3LDI5IEBACiAgICAgICBpbnQgYWxpZ247CiAgICAgICAKICAgICAgIHAgPSBzLT5lbGVtZW50c1tpXTsKLSAgICAgIGRhcndpbl9hZGp1c3RfYWdncmVnYXRlX3NpemVzIChwKTsKLSAgICAgIGlmIChpID09IDAKLQkgICYmIChwLT50eXBlID09IEZGSV9UWVBFX1VJTlQ2NAotCSAgICAgIHx8IHAtPnR5cGUgPT0gRkZJX1RZUEVfU0lOVDY0Ci0JICAgICAgfHwgcC0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUKLQkgICAgICB8fCBwLT5hbGlnbm1lbnQgPT0gOCkpCi0JYWxpZ24gPSA4OworICAgICAgaWYgKHAtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorCWRhcndpbl9hZGp1c3RfYWdncmVnYXRlX3NpemVzIChwKTsKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisgICAgICAvKiBOYXR1cmFsIGFsaWdubWVudCBmb3IgYWxsIGl0ZW1zLiAgKi8KKyAgICAgIGFsaWduID0gcC0+YWxpZ25tZW50OworI2Vsc2UKKyAgICAgIC8qIE5hdHJ1YWwgYWxpZ25tZW50IGZvciB0aGUgZmlyc3QgaXRlbS4uLiAqLworICAgICAgaWYgKGkgPT0gMCkKKwlhbGlnbiA9IHAtPmFsaWdubWVudDsKICAgICAgIGVsc2UgaWYgKHAtPmFsaWdubWVudCA9PSAxNiB8fCBwLT5hbGlnbm1lbnQgPCA0KQorCS8qIC4uIHN1YnNlcXVlbnQgaXRlbXMgd2l0aCB2ZWN0b3Igb3IgYWxpZ24gPCA0IGhhdmUgbmF0dXJhbCBhbGlnbi4gICovCiAJYWxpZ24gPSBwLT5hbGlnbm1lbnQ7CiAgICAgICBlbHNlCisJLyogLi4gb3IgYWxpZ24gaXMgNC4gICovCiAJYWxpZ24gPSA0OworI2VuZGlmCisgICAgICAvKiBQYWQsIGlmIG5lY2Vzc2FyeSwgYmVmb3JlIGFkZGluZyB0aGUgY3VycmVudCBpdGVtLiAgKi8KICAgICAgIHMtPnNpemUgPSBBTElHTihzLT5zaXplLCBhbGlnbikgKyBwLT5zaXplOwogICAgIH0KICAgCiAgIHMtPnNpemUgPSBBTElHTihzLT5zaXplLCBzLT5hbGlnbm1lbnQpOwogICAKKyAgLyogVGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBvbiBtNjQsIGJ1dCBoYXJtbGVzcy4gICovCiAgIGlmIChzLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9VSU5UNjQKICAgICAgIHx8IHMtPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX1NJTlQ2NAogICAgICAgfHwgcy0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFCkBAIC0zNDQsMTAgKzY1OCwxMCBAQAogZmZpX3ByZXBfY2lmX21hY2hkZXAgKGZmaV9jaWYgKmNpZikKIHsKICAgLyogQWxsIHRoaXMgaXMgZm9yIHRoZSBEQVJXSU4gQUJJLiAgKi8KLSAgaW50IGk7CisgIHVuc2lnbmVkIGk7CiAgIGZmaV90eXBlICoqcHRyOwogICB1bnNpZ25lZCBieXRlczsKLSAgaW50IGZwYXJnX2NvdW50ID0gMCwgaW50YXJnX2NvdW50ID0gMDsKKyAgdW5zaWduZWQgZnBhcmdfY291bnQgPSAwLCBpbnRhcmdfY291bnQgPSAwOwogICB1bnNpZ25lZCBmbGFncyA9IDA7CiAgIHVuc2lnbmVkIHNpemVfYWwgPSAwOwogCkBAIC0zNzIsMTYgKzY4NiwyNSBAQAogICAvKiBTcGFjZSBmb3IgdGhlIGZyYW1lIHBvaW50ZXIsIGNhbGxlZSdzIExSLCBDUiwgZXRjLCBhbmQgZm9yCiAgICAgIHRoZSBhc20ncyB0ZW1wIHJlZ3MuICAqLwogCi0gIGJ5dGVzID0gKDYgKyBBU01fTkVFRFNfUkVHSVNURVJTKSAqIHNpemVvZihsb25nKTsKKyAgYnl0ZXMgPSAoTElOS0FHRV9BUkVBX0dQUlMgKyBBU01fTkVFRFNfUkVHSVNURVJTKSAqIHNpemVvZih1bnNpZ25lZCBsb25nKTsKIAotICAvKiBSZXR1cm4gdmFsdWUgaGFuZGxpbmcuICBUaGUgcnVsZXMgYXJlIGFzIGZvbGxvd3M6CisgIC8qIFJldHVybiB2YWx1ZSBoYW5kbGluZy4gIAorICAgIFRoZSBydWxlcyBtMzIgYXJlIGFzIGZvbGxvd3M6CiAgICAgIC0gMzItYml0IChvciBsZXNzKSBpbnRlZ2VyIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gZ3ByMzsKLSAgICAgLSBTdHJ1Y3R1cmVzIG9mIHNpemUgPD0gNCBieXRlcyBhbHNvIHJldHVybmVkIGluIGdwcjM7Ci0gICAgIC0gNjQtYml0IGludGVnZXIgdmFsdWVzIGFuZCBzdHJ1Y3R1cmVzIGJldHdlZW4gNSBhbmQgOCBieXRlcyBhcmUgcmV0dXJuZWQKLSAgICAgICBpbiBncHIzIGFuZCBncHI0OworICAgICAtIHN0cnVjdHVyZXMgb2Ygc2l6ZSA8PSA0IGJ5dGVzIGFsc28gcmV0dXJuZWQgaW4gZ3ByMzsKKyAgICAgLSA2NC1iaXQgaW50ZWdlciB2YWx1ZXMgWz8/PyBhbmQgc3RydWN0dXJlcyBiZXR3ZWVuIDUgYW5kIDggYnl0ZXNdIGFyZQorICAgICAgIHJldHVybmVkIGluIGdwcjMgYW5kIGdwcjQ7CiAgICAgIC0gU2luZ2xlL2RvdWJsZSBGUCB2YWx1ZXMgYXJlIHJldHVybmVkIGluIGZwcjE7CiAgICAgIC0gTG9uZyBkb3VibGUgRlAgKGlmIG5vdCBlcXVpdmFsZW50IHRvIGRvdWJsZSkgdmFsdWVzIGFyZSByZXR1cm5lZCBpbgogICAgICAgIGZwcjEgYW5kIGZwcjI7CisgICAgIG02NDoKKyAgICAgLSA2NC1iaXQgb3Igc21hbGxlciBpbnRlZ3JhbCB2YWx1ZXMgYXJlIHJldHVybmVkIGluIEdQUjMKKyAgICAgLSBTaW5nbGUvZG91YmxlIEZQIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gZnByMTsKKyAgICAgLSBMb25nIGRvdWJsZSBGUCB2YWx1ZXMgYXJlIHJldHVybmVkIGluIGZwcjEgYW5kIGZwcjI7CisgICAgIG02NCBTdHJ1Y3R1cmVzOgorICAgICAtIElmIHRoZSBzdHJ1Y3R1cmUgY291bGQgYmUgYWNjb21tb2RhdGVkIGluIHJlZ2lzdGVycyB3ZXJlIGl0IHRvIGJlIHRoZQorICAgICAgIGZpcnN0IGFyZ3VtZW50IHRvIGEgcm91dGluZSwgdGhlbiBpdCBpcyByZXR1cm5lZCBpbiB0aG9zZSByZWdpc3RlcnMuCisgICAgIG0zMi9tNjQgc3RydWN0dXJlcyBvdGhlcndpc2U6CiAgICAgIC0gTGFyZ2VyIHN0cnVjdHVyZXMgdmFsdWVzIGFyZSBhbGxvY2F0ZWQgc3BhY2UgYW5kIGEgcG9pbnRlciBpcyBwYXNzZWQKICAgICAgICBhcyB0aGUgZmlyc3QgYXJndW1lbnQuICAqLwogICBzd2l0Y2ggKGNpZi0+cnR5cGUtPnR5cGUpCkBAIC00MTAsOSArNzMzLDQyIEBACiAgICAgICBicmVhazsKIAogICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKyAgICAgIHsKKwkvKiBDYW4gd2UgZml0IHRoZSBzdHJ1Y3QgaW50byByZWdzPyAgKi8KKwlpZiAoZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wIChjaWYtPnJ0eXBlKSkKKwkgIHsKKwkgICAgdW5zaWduZWQgbmZwciA9IDA7CisJICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19TVFJVQ1Q7CisJICAgIGlmIChjaWYtPnJ0eXBlLT5zaXplICE9IDE2KQorCSAgICAgIGRhcndpbjY0X3NjYW5fc3RydWN0X2Zvcl9mbG9hdHMgKGNpZi0+cnR5cGUsICZuZnByKSA7CisJICAgIGVsc2UKKwkgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfMTI4QklUUzsKKwkgICAgLyogV2lsbCBiZSAwIGZvciAxNmJ5dGUgc3RydWN0LiAgKi8KKwkgICAgaWYgKG5mcHIpCisJICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX0ZQOworCSAgfQorCWVsc2UgLyogQnkgcmVmLiAqLworCSAgeworCSAgICBmbGFncyB8PSBGTEFHX1JFVFZBTF9SRUZFUkVOQ0U7CisJICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19OT1RISU5HOworCSAgICBpbnRhcmdfY291bnQrKzsKKwkgIH0KKyAgICAgIH0KKyNlbGlmIGRlZmluZWQoREFSV0lOX1BQQykKKyAgICAgIGlmIChjaWYtPnJ0eXBlLT5zaXplIDw9IDQpCisJZmxhZ3MgfD0gRkxBR19SRVRVUk5TX1NUUlVDVDsKKyAgICAgIGVsc2UgLyogZWxzZSBieSByZWZlcmVuY2UuICAqLworCXsKKwkgIGZsYWdzIHw9IEZMQUdfUkVUVkFMX1JFRkVSRU5DRTsKKwkgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19OT1RISU5HOworCSAgaW50YXJnX2NvdW50Kys7CisJfQorI2Vsc2UgLyogYXNzdW1lIHdlIHBhc3MgYnkgcmVmLiAgKi8KICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVkFMX1JFRkVSRU5DRTsKICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19OT1RISU5HOwogICAgICAgaW50YXJnX2NvdW50Kys7CisjZW5kaWYKICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkZJX1RZUEVfVk9JRDoKICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19OT1RISU5HOwpAQCAtNDI1LDU3ICs3ODEsODMgQEAKIAogICAvKiBUaGUgZmlyc3QgTlVNX0dQUl9BUkdfUkVHSVNURVJTIHdvcmRzIG9mIGludGVnZXIgYXJndW1lbnRzLCBhbmQgdGhlCiAgICAgIGZpcnN0IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyBmcCBhcmd1bWVudHMsIGdvIGluIHJlZ2lzdGVyczsgdGhlIHJlc3QKLSAgICAgZ29lcyBvbiB0aGUgc3RhY2suICBTdHJ1Y3R1cmVzIGFyZSBwYXNzZWQgYXMgYSBwb2ludGVyIHRvIGEgY29weSBvZgotICAgICB0aGUgc3RydWN0dXJlLiBTdHVmZiBvbiB0aGUgc3RhY2sgbmVlZHMgdG8ga2VlcCBwcm9wZXIgYWxpZ25tZW50LiAgKi8KKyAgICAgZ29lcyBvbiB0aGUgc3RhY2suICAKKyAgICAgPz8/IFN0cnVjdHVyZXMgYXJlIHBhc3NlZCBhcyBhIHBvaW50ZXIgdG8gYSBjb3B5IG9mIHRoZSBzdHJ1Y3R1cmUuIAorICAgICBTdHVmZiBvbiB0aGUgc3RhY2sgbmVlZHMgdG8ga2VlcCBwcm9wZXIgYWxpZ25tZW50LiAgCisgICAgIEZvciBtNjQgdGhlIGNvdW50IGlzIGVmZmVjdGl2ZWx5IG9mIGhhbGYtR1BScy4gICovCiAgIGZvciAocHRyID0gY2lmLT5hcmdfdHlwZXMsIGkgPSBjaWYtPm5hcmdzOyBpID4gMDsgaS0tLCBwdHIrKykKICAgICB7CisgICAgICB1bnNpZ25lZCBhbGlnbl93b3JkczsKICAgICAgIHN3aXRjaCAoKCpwdHIpLT50eXBlKQogCXsKIAljYXNlIEZGSV9UWVBFX0ZMT0FUOgogCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgogCSAgZnBhcmdfY291bnQrKzsKKyNpZiAhZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQogCSAgLyogSWYgdGhpcyBGUCBhcmcgaXMgZ29pbmcgb24gdGhlIHN0YWNrLCBpdCBtdXN0IGJlCiAJICAgICA4LWJ5dGUtYWxpZ25lZC4gICovCiAJICBpZiAoZnBhcmdfY291bnQgPiBOVU1fRlBSX0FSR19SRUdJU1RFUlMKLQkgICAgICAmJiBpbnRhcmdfY291bnQlMiAhPSAwKQorCSAgICAgICYmIChpbnRhcmdfY291bnQgJiAweDAxKSAhPSAwKQogCSAgICBpbnRhcmdfY291bnQrKzsKKyNlbmRpZgogCSAgYnJlYWs7CiAKICNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCiAJY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgogCSAgZnBhcmdfY291bnQgKz0gMjsKIAkgIC8qIElmIHRoaXMgRlAgYXJnIGlzIGdvaW5nIG9uIHRoZSBzdGFjaywgaXQgbXVzdCBiZQotCSAgICAgOC1ieXRlLWFsaWduZWQuICAqLwotCSAgaWYgKGZwYXJnX2NvdW50ID4gTlVNX0ZQUl9BUkdfUkVHSVNURVJTCi0JICAgICAgJiYgaW50YXJnX2NvdW50JTIgIT0gMCkKLQkgICAgaW50YXJnX2NvdW50Kys7Ci0JICBpbnRhcmdfY291bnQgKz0yOworCSAgICAgMTYtYnl0ZS1hbGlnbmVkLiAgKi8KKwkgIGlmIChmcGFyZ19jb3VudCA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisjaWYgZGVmaW5lZCAoUE9XRVJQQzY0KQorCSAgICBpbnRhcmdfY291bnQgPSBBTElHTihpbnRhcmdfY291bnQsIDIpOworI2Vsc2UKKwkgICAgaW50YXJnX2NvdW50ID0gQUxJR04oaW50YXJnX2NvdW50LCA0KTsKKyNlbmRpZgogCSAgYnJlYWs7CiAjZW5kaWYKIAogCWNhc2UgRkZJX1RZUEVfVUlOVDY0OgogCWNhc2UgRkZJX1RZUEVfU0lOVDY0OgorI2lmIGRlZmluZWQoUE9XRVJQQzY0KQorCSAgaW50YXJnX2NvdW50Kys7CisjZWxzZQogCSAgLyogJ2xvbmcgbG9uZycgYXJndW1lbnRzIGFyZSBwYXNzZWQgYXMgdHdvIHdvcmRzLCBidXQKIAkgICAgIGVpdGhlciBib3RoIHdvcmRzIG11c3QgZml0IGluIHJlZ2lzdGVycyBvciBib3RoIGdvCiAJICAgICBvbiB0aGUgc3RhY2suICBJZiB0aGV5IGdvIG9uIHRoZSBzdGFjaywgdGhleSBtdXN0CiAJICAgICBiZSA4LWJ5dGUtYWxpZ25lZC4gICovCiAJICBpZiAoaW50YXJnX2NvdW50ID09IE5VTV9HUFJfQVJHX1JFR0lTVEVSUy0xCi0JICAgICAgfHwgKGludGFyZ19jb3VudCA+PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgJiYgaW50YXJnX2NvdW50JTIgIT0gMCkpCisJICAgICAgfHwgKGludGFyZ19jb3VudCA+PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgCisJICAgICAgICAgICYmIChpbnRhcmdfY291bnQgJiAweDAxKSAhPSAwKSkKIAkgICAgaW50YXJnX2NvdW50Kys7CiAJICBpbnRhcmdfY291bnQgKz0gMjsKKyNlbmRpZgogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX1NUUlVDVDoKIAkgIHNpemVfYWwgPSAoKnB0ciktPnNpemU7Ci0JICAvKiBJZiB0aGUgZmlyc3QgbWVtYmVyIG9mIHRoZSBzdHJ1Y3QgaXMgYSBkb3VibGUsIHRoZW4gYWxpZ24KLQkgICAgIHRoZSBzdHJ1Y3QgdG8gZG91YmxlLXdvcmQuICAqLwotCSAgaWYgKCgqcHRyKS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQotCSAgICBzaXplX2FsID0gQUxJR04oKCpwdHIpLT5zaXplLCA4KTsKLSNpZmRlZiBQT1dFUlBDNjQKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisJICBhbGlnbl93b3JkcyA9ICgqcHRyKS0+YWxpZ25tZW50ID4+IDM7CisJICBpZiAoYWxpZ25fd29yZHMpCisJICAgIGludGFyZ19jb3VudCA9IEFMSUdOKGludGFyZ19jb3VudCwgYWxpZ25fd29yZHMpOworCSAgLyogQmFzZSBzaXplIG9mIHRoZSBzdHJ1Y3QuICAqLwogCSAgaW50YXJnX2NvdW50ICs9IChzaXplX2FsICsgNykgLyA4OworCSAgLyogSWYgMTYgYnl0ZXMgdGhlbiBkb24ndCB3b3JyeSBhYm91dCBmbG9hdHMuICAqLworCSAgaWYgKHNpemVfYWwgIT0gMTYpCisJICAgIC8qIFNjYW4gdGhyb3VnaCBmb3IgZmxvYXRzIHRvIGJlIHBsYWNlZCBpbiByZWdzLiAgKi8KKwkgICAgZGFyd2luNjRfc2Nhbl9zdHJ1Y3RfZm9yX2Zsb2F0cyAoKnB0ciwgJmZwYXJnX2NvdW50KSA7CiAjZWxzZQorCSAgYWxpZ25fd29yZHMgPSAoKnB0ciktPmFsaWdubWVudCA+PiAyOworCSAgaWYgKGFsaWduX3dvcmRzKQorCSAgICBpbnRhcmdfY291bnQgPSBBTElHTihpbnRhcmdfY291bnQsIGFsaWduX3dvcmRzKTsKKwkgIC8qIElmIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhlIHN0cnVjdCBpcyBhIGRvdWJsZSwgdGhlbiBhbGlnbgorCSAgICAgdGhlIHN0cnVjdCB0byBkb3VibGUtd29yZC4gCisJICBpZiAoKCpwdHIpLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCisJICAgIHNpemVfYWwgPSBBTElHTigoKnB0ciktPnNpemUsIDgpOyAqLworIyAgaWZkZWYgUE9XRVJQQzY0CisJICBpbnRhcmdfY291bnQgKz0gKHNpemVfYWwgKyA3KSAvIDg7CisjICBlbHNlCiAJICBpbnRhcmdfY291bnQgKz0gKHNpemVfYWwgKyAzKSAvIDQ7CisjICBlbmRpZgogI2VuZGlmCiAJICBicmVhazsKIApAQCAtNDkwLDkgKzg3MiwxOCBAQAogICBpZiAoZnBhcmdfY291bnQgIT0gMCkKICAgICBmbGFncyB8PSBGTEFHX0ZQX0FSR1VNRU5UUzsKIAorI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKyAgLyogU3BhY2UgdG8gaW1hZ2UgdGhlIEZQUiByZWdpc3RlcnMsIGlmIG5lZWRlZCAtIHdoaWNoIGluY2x1ZGVzIHdoZW4gdGhleSBtaWdodCBiZQorICAgICB1c2VkIGluIGEgc3RydWN0IHJldHVybi4gICovCisgIGlmIChmcGFyZ19jb3VudCAhPSAwIAorICAgICAgfHwgKChmbGFncyAmIEZMQUdfUkVUVVJOU19TVFJVQ1QpCisJICAgJiYgKGZsYWdzICYgRkxBR19SRVRVUk5TX0ZQKSkpCisgICAgYnl0ZXMgKz0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTICogc2l6ZW9mKGRvdWJsZSk7CisjZWxzZQogICAvKiBTcGFjZSBmb3IgdGhlIEZQUiByZWdpc3RlcnMsIGlmIG5lZWRlZC4gICovCiAgIGlmIChmcGFyZ19jb3VudCAhPSAwKQogICAgIGJ5dGVzICs9IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyAqIHNpemVvZihkb3VibGUpOworI2VuZGlmCiAKICAgLyogU3RhY2sgc3BhY2UuICAqLwogI2lmZGVmIFBPV0VSUEM2NApAQCAtNTA2LDcgKzg5Nyw3IEBACiAgICAgYnl0ZXMgKz0gTlVNX0dQUl9BUkdfUkVHSVNURVJTICogc2l6ZW9mKGxvbmcpOwogCiAgIC8qIFRoZSBzdGFjayBzcGFjZSBhbGxvY2F0ZWQgbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNiBieXRlcy4gICovCi0gIGJ5dGVzID0gKGJ5dGVzICsgMTUpICYgfjB4RjsKKyAgYnl0ZXMgPSBBTElHTihieXRlcywgMTYpIDsKIAogICBjaWYtPmZsYWdzID0gZmxhZ3M7CiAgIGNpZi0+Ynl0ZXMgPSBieXRlczsKQEAgLTUxNiw4ICs5MDcsOSBAQAogCiBleHRlcm4gdm9pZCBmZmlfY2FsbF9BSVgoZXh0ZW5kZWRfY2lmICosIGxvbmcsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLAogCQkJIHZvaWQgKCpmbikodm9pZCksIHZvaWQgKCpmbjIpKHZvaWQpKTsKKwogZXh0ZXJuIHZvaWQgZmZpX2NhbGxfREFSV0lOKGV4dGVuZGVkX2NpZiAqLCBsb25nLCB1bnNpZ25lZCwgdW5zaWduZWQgKiwKLQkJCSAgICB2b2lkICgqZm4pKHZvaWQpLCB2b2lkICgqZm4yKSh2b2lkKSk7CisJCQkgICAgdm9pZCAoKmZuKSh2b2lkKSwgdm9pZCAoKmZuMikodm9pZCksIGZmaV90eXBlKik7CiAKIHZvaWQKIGZmaV9jYWxsIChmZmlfY2lmICpjaWYsIHZvaWQgKCpmbikodm9pZCksIHZvaWQgKnJ2YWx1ZSwgdm9pZCAqKmF2YWx1ZSkKQEAgLTU0MiwxMSArOTM0LDExIEBACiAgICAgewogICAgIGNhc2UgRkZJX0FJWDoKICAgICAgIGZmaV9jYWxsX0FJWCgmZWNpZiwgLShsb25nKWNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbiwKLQkJICAgZmZpX3ByZXBfYXJncyk7CisJCSAgIEZGSV9GTihmZmlfcHJlcF9hcmdzKSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIEZGSV9EQVJXSU46CiAgICAgICBmZmlfY2FsbF9EQVJXSU4oJmVjaWYsIC0obG9uZyljaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4sCi0JCSAgICAgIGZmaV9wcmVwX2FyZ3MpOworCQkgICAgICBGRklfRk4oZmZpX3ByZXBfYXJncyksIGNpZi0+cnR5cGUpOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEZGSV9BU1NFUlQoMCk7CkBAIC01NjYsNTggKzk1OCw0OCBAQAogfSBhaXhfZmQ7CiAKIC8qIGhlcmUgSSdkIGxpa2UgdG8gYWRkIHRoZSBzdGFjayBmcmFtZSBsYXlvdXQgd2UgdXNlIGluIGRhcndpbl9jbG9zdXJlLlMKLSAgIGFuZCBhaXhfY2xzb3VyZS5TCisgICBhbmQgYWl4X2Nsb3N1cmUuUwogCi0gICBTUCBwcmV2aW91cyAtPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8LS0tIGNoaWxkIGZyYW1lCi0JCSAgfCBiYWNrIGNoYWluIHRvIGNhbGxlciA0ICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA0Ci0JCSAgfCBzYXZlZCBDUiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA4Ci0JCSAgfCBzYXZlZCBMUiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxMgotCQkgIHwgcmVzZXJ2ZWQgZm9yIGNvbXBpbGVycyA0ICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTYKLQkJICB8IHJlc2VydmVkIGZvciBiaW5kZXJzIDQgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDIwCi0JCSAgfCBzYXZlZCBUT0MgcG9pbnRlciA0ICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAyNAotCQkgIHwgYWx3YXlzIHJlc2VydmVkIDgqND0zMiAocHJldmlvdXMgR1BScyl8Ci0JCSAgfCBhY2NvcmRpbmcgdG8gdGhlIGxpbmthZ2UgY29udmVudGlvbiAgIHwKLQkJICB8IGZyb20gQUlYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDU2Ci0JCSAgfCBvdXIgRlBSIGFyZWEgMTMqOD0xMDQgICAgICAgICAgICAgICAgIHwKLQkJICB8IGYxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgIHwgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgfCBmMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxNjAKLQkJICB8IHJlc3VsdCBhcmVhIDggICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE2OAotCQkgIHwgYWxpZ25lbWVudCB0byB0aGUgbmV4dCBtdWx0aXBsZSBvZiAxNiB8Ci1TUCBjdXJyZW50IC0tPiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxNzYgPC0gcGFyZW50IGZyYW1lCi0JCSAgfCBiYWNrIGNoYWluIHRvIGNhbGxlciA0ICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxODAKLQkJICB8IHNhdmVkIENSIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE4NAotCQkgIHwgc2F2ZWQgTFIgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTg4Ci0JCSAgfCByZXNlcnZlZCBmb3IgY29tcGlsZXJzIDQgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxOTIKLQkJICB8IHJlc2VydmVkIGZvciBiaW5kZXJzIDQgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE5NgotCQkgIHwgc2F2ZWQgVE9DIHBvaW50ZXIgNCAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMjAwCi0JCSAgfCBhbHdheXMgcmVzZXJ2ZWQgOCo0PTMyICB3ZSBzdG9yZSBvdXIgIHwKLQkJICB8IEdQUnMgaGVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgIHwgcjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgfCAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICB8IHIxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDIzMgotCQkgIHwgb3ZlcmZsb3cgcGFydCAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgeHh4Ci0JCSAgfCA/Pz8/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB4eHgKKyAgIG0zMi9tNjQKKworICAgVGhlIHN0YWNrIGxheW91dCBsb29rcyBsaWtlIHRoaXM6CisKKyAgIHwgICBBZGRpdGlvbmFsIHBhcmFtcy4uLgkJCXwgfCAgICAgSGlnaGVyIGFkZHJlc3MKKyAgIH4JCQkJCQl+IH4KKyAgIHwgICBQYXJhbWV0ZXJzICAgICAgKGF0IGxlYXN0IDgqNC84PTMyLzY0KQl8IHwgTlVNX0dQUl9BUkdfUkVHSVNURVJTCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBUT0M9UjIgKEFJWCkgUmVzZXJ2ZWQgKERhcndpbikgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBSZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgMio0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBTcGFjZSBmb3IgY2FsbGVlJ3MgTFIJCTQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFNhdmVkIENSIFtsb3cgd29yZCBmb3IgbTY0XSAgICAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIEN1cnJlbnQgYmFja2NoYWluIHBvaW50ZXIJNC84CXwtLyBQYXJlbnQncyBmcmFtZS4KKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgPCsgPDw8IG9uIGVudHJ5IHRvIGZmaV9jbG9zdXJlX0FTTQorICAgfCAgIFJlc3VsdCBCeXRlcwkJCTE2CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB+ICAgcGFkZGluZyB0byAxNi1ieXRlIGFsaWdubWVudAkJfiB+CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBOVU1fRlBSX0FSR19SRUdJU1RFUlMgc2xvdHMJCXwgfAorICAgfCAgIGhlcmUgZnAxMyAuLiBmcDEJCSAgICAgICAxMyo4CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgUjMuLlIxMAkJCSAgOCo0Lzg9MzIvNjQJfCB8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUworICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgVE9DPVIyIChBSVgpIFJlc2VydmVkIChEYXJ3aW4pICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CXN0YWNrCXwKKyAgIHwgICBSZXNlcnZlZCBbY29tcGlsZXIsYmluZGVyXSAgICAgMio0LzgJfCB8CWdyb3dzCXwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlkb3duCVYKKyAgIHwgICBTcGFjZSBmb3IgY2FsbGVlJ3MgTFIJCTQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlsb3dlciBhZGRyZXNzZXMKKyAgIHwgICBTYXZlZCBDUiBbbG93IHdvcmQgZm9yIG02NF0gICAgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwgICAgIHN0YWNrIHBvaW50ZXIgaGVyZQorICAgfCAgIEN1cnJlbnQgYmFja2NoYWluIHBvaW50ZXIJNC84CXwtLwlkdXJpbmcKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgICA8PDwJZmZpX2Nsb3N1cmVfQVNNLgogCiAqLworCiBmZmlfc3RhdHVzCiBmZmlfcHJlcF9jbG9zdXJlX2xvYyAoZmZpX2Nsb3N1cmUqIGNsb3N1cmUsCiAJCSAgICAgIGZmaV9jaWYqIGNpZiwKQEAgLTYzMSwzMCArMTAxMyw0NCBAQAogCiAgIHN3aXRjaCAoY2lmLT5hYmkpCiAgICAgewotICAgIGNhc2UgRkZJX0RBUldJTjoKKyAgICAgIGNhc2UgRkZJX0RBUldJTjoKIAotICAgICAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0RBUldJTik7CisJRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0RBUldJTik7CiAKLSAgICAgIHRyYW1wID0gKHVuc2lnbmVkIGludCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07Ci0gICAgICB0cmFtcFswXSA9IDB4N2MwODAyYTY7ICAvKiAgIG1mbHIgICAgcjAgICovCi0gICAgICB0cmFtcFsxXSA9IDB4NDI5ZjAwMGQ7ICAvKiAgIGJjbC0gICAgMjAsNCpjcjcrc28sMHgxMCAgKi8KLSAgICAgIHRyYW1wWzRdID0gMHg3ZDY4MDJhNjsgIC8qICAgbWZsciAgICByMTEgICovCi0gICAgICB0cmFtcFs1XSA9IDB4ODE4YjAwMDA7ICAvKiAgIGx3eiAgICAgcjEyLDAocjExKSBmdW5jdGlvbiBhZGRyZXNzICAqLwotICAgICAgdHJhbXBbNl0gPSAweDdjMDgwM2E2OyAgLyogICBtdGxyICAgIHIwICAgKi8KLSAgICAgIHRyYW1wWzddID0gMHg3ZDg5MDNhNjsgIC8qICAgbXRjdHIgICByMTIgICovCi0gICAgICB0cmFtcFs4XSA9IDB4ODE2YjAwMDQ7ICAvKiAgIGx3eiAgICAgcjExLDQocjExKSBzdGF0aWMgY2hhaW4gICovCi0gICAgICB0cmFtcFs5XSA9IDB4NGU4MDA0MjA7ICAvKiAgIGJjdHIgICovCi0gICAgICB0cmFtcFsyXSA9ICh1bnNpZ25lZCBsb25nKSBmZmlfY2xvc3VyZV9BU007IC8qIGZ1bmN0aW9uICAqLwotICAgICAgdHJhbXBbM10gPSAodW5zaWduZWQgbG9uZykgY29kZWxvYzsgLyogY29udGV4dCAgKi8KKwl0cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikgJmNsb3N1cmUtPnRyYW1wWzBdOworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKwl0cmFtcFswXSA9IDB4N2MwODAyYTY7ICAvKiAgIG1mbHIgICAgcjAgICovCisJdHJhbXBbMV0gPSAweDQyOWYwMDE1OyAgLyogICBiY2wtICAgIDIwLDQqY3I3K3NvLCAgKzB4MTggKEwxKSAgKi8KKwkvKiBXZSBwdXQgdGhlIGFkZHJlc3NlcyBoZXJlLiAgKi8KKwl0cmFtcFs2XSA9IDB4N2Q2ODAyYTY7ICAvKkwxOiAgIG1mbHIgICAgcjExICAqLworCXRyYW1wWzddID0gMHhlOThiMDAwMDsgIC8qICAgbGQgICAgIHIxMiwwKHIxMSkgZnVuY3Rpb24gYWRkcmVzcyAgKi8KKwl0cmFtcFs4XSA9IDB4N2MwODAzYTY7ICAvKiAgIG10bHIgICAgcjAgICAqLworCXRyYW1wWzldID0gMHg3ZDg5MDNhNjsgIC8qICAgbXRjdHIgICByMTIgICovCisJdHJhbXBbMTBdID0gMHhlOTZiMDAwODsgIC8qICAgbHd6ICAgICByMTEsOChyMTEpIHN0YXRpYyBjaGFpbiAgKi8KKwl0cmFtcFsxMV0gPSAweDRlODAwNDIwOyAgLyogICBiY3RyICAqLwogCi0gICAgICBjbG9zdXJlLT5jaWYgPSBjaWY7Ci0gICAgICBjbG9zdXJlLT5mdW4gPSBmdW47Ci0gICAgICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CisJKigodW5zaWduZWQgbG9uZyAqKSZ0cmFtcFsyXSkgPSAodW5zaWduZWQgbG9uZykgZmZpX2Nsb3N1cmVfQVNNOyAvKiBmdW5jdGlvbiAgKi8KKwkqKCh1bnNpZ25lZCBsb25nICopJnRyYW1wWzRdKSA9ICh1bnNpZ25lZCBsb25nKSBjb2RlbG9jOyAvKiBjb250ZXh0ICAqLworI2Vsc2UKKwl0cmFtcFswXSA9IDB4N2MwODAyYTY7ICAvKiAgIG1mbHIgICAgcjAgICovCisJdHJhbXBbMV0gPSAweDQyOWYwMDBkOyAgLyogICBiY2wtICAgIDIwLDQqY3I3K3NvLDB4MTAgICovCisJdHJhbXBbNF0gPSAweDdkNjgwMmE2OyAgLyogICBtZmxyICAgIHIxMSAgKi8KKwl0cmFtcFs1XSA9IDB4ODE4YjAwMDA7ICAvKiAgIGx3eiAgICAgcjEyLDAocjExKSBmdW5jdGlvbiBhZGRyZXNzICAqLworCXRyYW1wWzZdID0gMHg3YzA4MDNhNjsgIC8qICAgbXRsciAgICByMCAgICovCisJdHJhbXBbN10gPSAweDdkODkwM2E2OyAgLyogICBtdGN0ciAgIHIxMiAgKi8KKwl0cmFtcFs4XSA9IDB4ODE2YjAwMDQ7ICAvKiAgIGx3eiAgICAgcjExLDQocjExKSBzdGF0aWMgY2hhaW4gICovCisJdHJhbXBbOV0gPSAweDRlODAwNDIwOyAgLyogICBiY3RyICAqLworCXRyYW1wWzJdID0gKHVuc2lnbmVkIGxvbmcpIGZmaV9jbG9zdXJlX0FTTTsgLyogZnVuY3Rpb24gICovCisJdHJhbXBbM10gPSAodW5zaWduZWQgbG9uZykgY29kZWxvYzsgLyogY29udGV4dCAgKi8KKyNlbmRpZgorCWNsb3N1cmUtPmNpZiA9IGNpZjsKKwljbG9zdXJlLT5mdW4gPSBmdW47CisJY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwogCi0gICAgICAvKiBGbHVzaCB0aGUgaWNhY2hlLiBPbmx5IG5lY2Vzc2FyeSBvbiBEYXJ3aW4uICAqLwotICAgICAgZmx1c2hfcmFuZ2UoY29kZWxvYywgRkZJX1RSQU1QT0xJTkVfU0laRSk7CisJLyogRmx1c2ggdGhlIGljYWNoZS4gT25seSBuZWNlc3Nhcnkgb24gRGFyd2luLiAgKi8KKwlmbHVzaF9yYW5nZShjb2RlbG9jLCBGRklfVFJBTVBPTElORV9TSVpFKTsKIAotICAgICAgYnJlYWs7CisJYnJlYWs7CiAKICAgICBjYXNlIEZGSV9BSVg6CiAKQEAgLTY2OSwxMCArMTA2NSwxMCBAQAogICAgICAgY2xvc3VyZS0+Y2lmID0gY2lmOwogICAgICAgY2xvc3VyZS0+ZnVuID0gZnVuOwogICAgICAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgotCi0gICAgICBGRklfQVNTRVJUKDApOworICAgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICAgICAgYnJlYWs7CiAgICAgfQogICByZXR1cm4gRkZJX09LOwpAQCAtNzA4LDcgKzExMDQsNyBAQAogICBkb3VibGUgZDsKIH0gZmZpX2RibGZsOwogCi1pbnQKK2ZmaV90eXBlICoKIGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4gKGZmaV9jbG9zdXJlICosIHZvaWQgKiwKIAkJCSAgIHVuc2lnbmVkIGxvbmcgKiwgZmZpX2RibGZsICopOwogCkBAIC03MTksNyArMTExNSw3IEBACiAgICB1cCBzcGFjZSBmb3IgYSByZXR1cm4gdmFsdWUsIGZmaV9jbG9zdXJlX0FTTSBpbnZva2VzIHRoZQogICAgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbiB0byBkbyBtb3N0IG9mIHRoZSB3b3JrLiAgKi8KIAotaW50CitmZmlfdHlwZSAqCiBmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOIChmZmlfY2xvc3VyZSAqY2xvc3VyZSwgdm9pZCAqcnZhbHVlLAogCQkJICAgdW5zaWduZWQgbG9uZyAqcGdyLCBmZmlfZGJsZmwgKnBmcikKIHsKQEAgLTc0MSwxNiArMTEzNywzMiBAQAogICBmZmlfY2lmICogICAgICAgIGNpZjsKICAgZmZpX2RibGZsICogICAgICBlbmRfcGZyID0gcGZyICsgTlVNX0ZQUl9BUkdfUkVHSVNURVJTOwogICB1bnNpZ25lZCAgICAgICAgIHNpemVfYWw7CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorICB1bnNpZ25lZCAJICAgZnBzdXNlZCA9IDA7CisjZW5kaWYKIAogICBjaWYgPSBjbG9zdXJlLT5jaWY7CiAgIGF2YWx1ZSA9IGFsbG9jYSAoY2lmLT5uYXJncyAqIHNpemVvZih2b2lkICopKTsKIAotICAvKiBDb3B5IHRoZSBjYWxsZXIncyBzdHJ1Y3R1cmUgcmV0dXJuIHZhbHVlIGFkZHJlc3Mgc28gdGhhdCB0aGUgY2xvc3VyZQotICAgICByZXR1cm5zIHRoZSBkYXRhIGRpcmVjdGx5IHRvIHRoZSBjYWxsZXIuICAqLwogICBpZiAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCiAgICAgeworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKyAgICAgIGlmICghZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wIChjaWYtPnJ0eXBlKSkKKwl7CisgICAgCSAgLyogV29uJ3QgZml0IGludG8gdGhlIHJlZ3MgLSByZXR1cm4gYnkgcmVmLiAgKi8KKwkgIHJ2YWx1ZSA9ICh2b2lkICopICpwZ3I7CisJICBwZ3IrKzsKKwl9CisjZWxpZiBkZWZpbmVkKERBUldJTl9QUEMpCisgICAgICBpZiAoY2lmLT5ydHlwZS0+c2l6ZSA+IDQpCisJeworCSAgcnZhbHVlID0gKHZvaWQgKikgKnBncjsKKwkgIHBncisrOworCX0KKyNlbHNlIC8qIGFzc3VtZSB3ZSByZXR1cm4gYnkgcmVmLiAgKi8KICAgICAgIHJ2YWx1ZSA9ICh2b2lkICopICpwZ3I7CiAgICAgICBwZ3IrKzsKKyNlbmRpZgogICAgIH0KIAogICBpID0gMDsKQEAgLTc2NCw3ICsxMTc2LDcgQEAKIAl7CiAJY2FzZSBGRklfVFlQRV9TSU5UODoKIAljYXNlIEZGSV9UWVBFX1VJTlQ4OgotI2lmZGVmIFBPV0VSUEM2NAorI2lmICBkZWZpbmVkKFBPV0VSUEM2NCkKIAkgIGF2YWx1ZVtpXSA9IChjaGFyICopIHBnciArIDc7CiAjZWxzZQogCSAgYXZhbHVlW2ldID0gKGNoYXIgKikgcGdyICsgMzsKQEAgLTc3NCw3ICsxMTg2LDcgQEAKIAogCWNhc2UgRkZJX1RZUEVfU0lOVDE2OgogCWNhc2UgRkZJX1RZUEVfVUlOVDE2OgotI2lmZGVmIFBPV0VSUEM2NAorI2lmICBkZWZpbmVkKFBPV0VSUEM2NCkKIAkgIGF2YWx1ZVtpXSA9IChjaGFyICopIHBnciArIDY7CiAjZWxzZQogCSAgYXZhbHVlW2ldID0gKGNoYXIgKikgcGdyICsgMjsKQEAgLTc4NCw3ICsxMTk2LDcgQEAKIAogCWNhc2UgRkZJX1RZUEVfU0lOVDMyOgogCWNhc2UgRkZJX1RZUEVfVUlOVDMyOgotI2lmZGVmIFBPV0VSUEM2NAorI2lmICBkZWZpbmVkKFBPV0VSUEM2NCkKIAkgIGF2YWx1ZVtpXSA9IChjaGFyICopIHBnciArIDQ7CiAjZWxzZQogCWNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKQEAgLTc5NCwzNCArMTIwNiw1MyBAQAogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSNpZmRlZiBQT1dFUlBDNjQKIAkgIHNpemVfYWwgPSBhcmdfdHlwZXNbaV0tPnNpemU7Ci0JICBpZiAoYXJnX3R5cGVzW2ldLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCi0JICAgIHNpemVfYWwgPSBBTElHTiAoYXJnX3R5cGVzW2ldLT5zaXplLCA4KTsKLQkgIGlmIChzaXplX2FsIDwgMyAmJiBjaWYtPmFiaSA9PSBGRklfREFSV0lOKQotCSAgICBhdmFsdWVbaV0gPSAodm9pZCAqKSBwZ3IgKyA4IC0gc2l6ZV9hbDsKLQkgIGVsc2UKLQkgICAgYXZhbHVlW2ldID0gKHZvaWQgKikgcGdyOworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKwkgIHBnciA9ICh1bnNpZ25lZCBsb25nICopQUxJR04oKGNoYXIgKilwZ3IsIGFyZ190eXBlc1tpXS0+YWxpZ25tZW50KTsKKwkgIGlmIChzaXplX2FsIDwgMyB8fCBzaXplX2FsID09IDQpCisJICAgIHsKKwkgICAgICBhdmFsdWVbaV0gPSAoKGNoYXIgKilwZ3IpKzgtc2l6ZV9hbDsKKwkgICAgICBpZiAoYXJnX3R5cGVzW2ldLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9GTE9BVAorCQkgICYmIGZwc3VzZWQgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJCXsKKwkJICAqKGZsb2F0ICopcGdyID0gKGZsb2F0KSAqKGRvdWJsZSAqKXBmcjsKKwkJICBwZnIrKzsKKwkJICBmcHN1c2VkKys7CisJCX0KKwkgICAgfQorCSAgZWxzZSAKKwkgICAgeworCSAgICAgIGlmIChzaXplX2FsICE9IDE2KQorCQlwZnIgPSAoZmZpX2RibGZsICopIAorCQkgICAgZGFyd2luNjRfc3RydWN0X2Zsb2F0c190b19tZW0gKGFyZ190eXBlc1tpXSwgKGNoYXIgKilwZ3IsCisJCQkJCQkgICAoZG91YmxlICopcGZyLCAmZnBzdXNlZCk7CisJICAgICAgYXZhbHVlW2ldID0gcGdyOworCSAgICB9CiAJICBwZ3IgKz0gKHNpemVfYWwgKyA3KSAvIDg7CiAjZWxzZQotCSAgLyogU3RydWN0dXJlcyB0aGF0IG1hdGNoIHRoZSBiYXNpYyBtb2RlcyAoUUkgMSBieXRlLCBISSAyIGJ5dGVzLAotCSAgICAgU0kgNCBieXRlcykgYXJlIGFsaWduZWQgYXMgaWYgdGhleSB3ZXJlIHRob3NlIG1vZGVzLiAgKi8KLQkgIHNpemVfYWwgPSBhcmdfdHlwZXNbaV0tPnNpemU7CiAJICAvKiBJZiB0aGUgZmlyc3QgbWVtYmVyIG9mIHRoZSBzdHJ1Y3QgaXMgYSBkb3VibGUsIHRoZW4gYWxpZ24KIAkgICAgIHRoZSBzdHJ1Y3QgdG8gZG91YmxlLXdvcmQuICAqLwogCSAgaWYgKGFyZ190eXBlc1tpXS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQogCSAgICBzaXplX2FsID0gQUxJR04oYXJnX3R5cGVzW2ldLT5zaXplLCA4KTsKKyMgIGlmIGRlZmluZWQoUE9XRVJQQzY0KQorCSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgIT0gRkZJX0RBUldJTik7CisJICBhdmFsdWVbaV0gPSBwZ3I7CisJICBwZ3IgKz0gKHNpemVfYWwgKyA3KSAvIDg7CisjICBlbHNlCisJICAvKiBTdHJ1Y3R1cmVzIHRoYXQgbWF0Y2ggdGhlIGJhc2ljIG1vZGVzIChRSSAxIGJ5dGUsIEhJIDIgYnl0ZXMsCisJICAgICBTSSA0IGJ5dGVzKSBhcmUgYWxpZ25lZCBhcyBpZiB0aGV5IHdlcmUgdGhvc2UgbW9kZXMuICAqLwogCSAgaWYgKHNpemVfYWwgPCAzICYmIGNpZi0+YWJpID09IEZGSV9EQVJXSU4pCi0JICAgIGF2YWx1ZVtpXSA9ICh2b2lkKikgcGdyICsgNCAtIHNpemVfYWw7CisJICAgIGF2YWx1ZVtpXSA9IChjaGFyKikgcGdyICsgNCAtIHNpemVfYWw7CiAJICBlbHNlCi0JICAgIGF2YWx1ZVtpXSA9ICh2b2lkKikgcGdyOworCSAgICBhdmFsdWVbaV0gPSBwZ3I7CiAJICBwZ3IgKz0gKHNpemVfYWwgKyAzKSAvIDQ7CisjICBlbmRpZgogI2VuZGlmCiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfU0lOVDY0OgogCWNhc2UgRkZJX1RZUEVfVUlOVDY0OgotI2lmZGVmIFBPV0VSUEM2NAorI2lmICBkZWZpbmVkKFBPV0VSUEM2NCkKIAljYXNlIEZGSV9UWVBFX1BPSU5URVI6CiAJICBhdmFsdWVbaV0gPSBwZ3I7CiAJICBwZ3IrKzsKQEAgLTkyNCw1ICsxMzU1LDUgQEAKICAgKGNsb3N1cmUtPmZ1bikgKGNpZiwgcnZhbHVlLCBhdmFsdWUsIGNsb3N1cmUtPnVzZXJfZGF0YSk7CiAKICAgLyogVGVsbCBmZmlfY2xvc3VyZV9BU00gdG8gcGVyZm9ybSByZXR1cm4gdHlwZSBwcm9tb3Rpb25zLiAgKi8KLSAgcmV0dXJuIGNpZi0+cnR5cGUtPnR5cGU7CisgIHJldHVybiBjaWYtPnJ0eXBlOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmgKaW5kZXggYjRmOTkyZS4uM2M5ZGI0OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaXRhcmdldC5oCkBAIC0xLDYgKzEsOCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KLSAgIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYworICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisKICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgUG93ZXJQQy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yOCwxNSArMzAsMjggQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gU3lzdGVtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZiBkZWZpbmVkIChQT1dFUlBDKSAmJiBkZWZpbmVkIChfX3Bvd2VycGM2NF9fKQkvKiBsaW51eDY0ICovCisjaWZuZGVmIFBPV0VSUEM2NAogI2RlZmluZSBQT1dFUlBDNjQKLSNlbGlmIGRlZmluZWQgKFBPV0VSUENfREFSV0lOKSAmJiBkZWZpbmVkIChfX3BwYzY0X18pCS8qIERhcndpbiAqLworI2VuZGlmCisjZWxpZiBkZWZpbmVkIChQT1dFUlBDX0RBUldJTikgJiYgZGVmaW5lZCAoX19wcGM2NF9fKQkvKiBEYXJ3aW42NCAqLworI2lmbmRlZiBQT1dFUlBDNjQKICNkZWZpbmUgUE9XRVJQQzY0CisjZW5kaWYKKyNpZm5kZWYgUE9XRVJQQ19EQVJXSU42NAorI2RlZmluZSBQT1dFUlBDX0RBUldJTjY0CisjZW5kaWYKICNlbGlmIGRlZmluZWQgKFBPV0VSUENfQUlYKSAmJiBkZWZpbmVkIChfXzY0QklUX18pCS8qIEFJWDY0ICovCisjaWZuZGVmIFBPV0VSUEM2NAogI2RlZmluZSBQT1dFUlBDNjQKICNlbmRpZgorI2VuZGlmCiAKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CkBAIC01MSwxOCArNjYsMTQgQEAKICAgRkZJX0xJTlVYNjQsCiAgIEZGSV9MSU5VWCwKICAgRkZJX0xJTlVYX1NPRlRfRkxPQVQsCi0jIGlmZGVmIFBPV0VSUEM2NAorIyBpZiBkZWZpbmVkKFBPV0VSUEM2NCkKICAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0xJTlVYNjQsCi0jIGVsc2UKLSMgIGlmICghZGVmaW5lZChfX05PX0ZQUlNfXykgJiYgKF9fTERCTF9NQU5UX0RJR19fID09IDEwNikpCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9MSU5VWCwKLSMgIGVsc2UKLSMgICBpZmRlZiBfX05PX0ZQUlNfXworIyBlbGlmIGRlZmluZWQoX19OT19GUFJTX18pCiAgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FULAotIyAgIGVsc2UKKyMgZWxpZiAoX19MREJMX01BTlRfRElHX18gPT0gMTA2KQorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTElOVVgsCisjIGVsc2UKICAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0dDQ19TWVNWLAotIyAgIGVuZGlmCi0jICBlbmRpZgogIyBlbmRpZgogI2VuZGlmCiAKQEAgLTEwOCw5ICsxMTksMTMgQEAKICNkZWZpbmUgRkZJX1NZU1ZfVFlQRV9TTUFMTF9TVFJVQ1QgKEZGSV9UWVBFX0xBU1QgKyAyKQogCiAjaWYgZGVmaW5lZChQT1dFUlBDNjQpIHx8IGRlZmluZWQoUE9XRVJQQ19BSVgpCi0jZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgMjQKKyMgIGlmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKyMgICAgZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgNDgKKyMgIGVsc2UKKyMgICAgZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgMjQKKyMgIGVuZGlmCiAjZWxzZSAvKiBQT1dFUlBDIHx8IFBPV0VSUENfQUlYICovCi0jZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgNDAKKyMgIGRlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDQwCiAjZW5kaWYKIAogI2lmbmRlZiBMSUJGRklfQVNNCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMKaW5kZXggNTZmN2QxYS4uNDFmYjg4NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUwpAQCAtMTIyLDIyICsxMjIsNDEgQEAKIAlibHIKIAogIyBjYXNlIEZGSV9UWVBFX0ZMT0FUCisjaWZuZGVmIF9fTk9fRlBSU19fCiAJbGZzICVmMSwxMTIrMCglcjEpCiAJbXRsciAlcjAKIAlhZGRpICVyMSwlcjEsMTQ0CisjZWxzZQorCW5vcAorCW5vcAorCW5vcAorI2VuZGlmCiAJYmxyCiAKICMgY2FzZSBGRklfVFlQRV9ET1VCTEUKKyNpZm5kZWYgX19OT19GUFJTX18KIAlsZmQgJWYxLDExMiswKCVyMSkKIAltdGxyICVyMAogCWFkZGkgJXIxLCVyMSwxNDQKKyNlbHNlCisJbm9wCisJbm9wCisJbm9wCisjZW5kaWYKIAlibHIKIAogIyBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEUKKyNpZm5kZWYgX19OT19GUFJTX18KIAlsZmQgJWYxLDExMiswKCVyMSkKIAlsZmQgJWYyLDExMis4KCVyMSkKIAltdGxyICVyMAogCWIgLkxmaW5pc2gKKyNlbHNlCisJbm9wCisJbm9wCisJbm9wCisJYmxyCisjZW5kaWYKIAogIyBjYXNlIEZGSV9UWVBFX1VJTlQ4CiAJbGJ6ICVyMywxMTIrMyglcjEpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3N5c3YuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvc3lzdi5TCmluZGV4IDk2ZWEyMmIuLjY3NWVkMDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvc3lzdi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvc3lzdi5TCkBAIC04Myw2ICs4Myw3IEBACiAJbm9wCiAxOgogCisjaWZuZGVmIF9fTk9fRlBSU19fCiAJLyogTG9hZCBhbGwgdGhlIEZQIHJlZ2lzdGVycy4gICovCiAJYmYtCTYsMmYKIAlsZmQJJWYxLC0xNi0oOCo0KS0oOCo4KSglcjI4KQpAQCAtOTQsNiArOTUsNyBAQAogCWxmZAklZjYsLTE2LSg4KjQpLSgzKjgpKCVyMjgpCiAJbGZkCSVmNywtMTYtKDgqNCktKDIqOCkoJXIyOCkKIAlsZmQJJWY4LC0xNi0oOCo0KS0oMSo4KSglcjI4KQorI2VuZGlmCiAyOgogCiAJLyogTWFrZSB0aGUgY2FsbC4gICovCkBAIC0xMDMsNyArMTA1LDkgQEAKIAltdGNyZgkweDAxLCVyMzEgLyogY3I3ICAqLwogCWJ0LQkzMSxMKHNtYWxsX3N0cnVjdF9yZXR1cm5fdmFsdWUpCiAJYnQtCTMwLEwoZG9uZV9yZXR1cm5fdmFsdWUpCisjaWZuZGVmIF9fTk9fRlBSU19fCiAJYnQtCTI5LEwoZnBfcmV0dXJuX3ZhbHVlKQorI2VuZGlmCiAJc3R3CSVyMywwKCVyMzApCiAJYmYrCTI4LEwoZG9uZV9yZXR1cm5fdmFsdWUpCiAJc3R3CSVyNCw0KCVyMzApCkBAIC0xMjQsNiArMTI4LDcgQEAKIAlsd3oJJXIxLDAoJXIxKQogCWJscgogCisjaWZuZGVmIF9fTk9fRlBSU19fCiBMKGZwX3JldHVybl92YWx1ZSk6CiAJYmYJMjgsTChmbG9hdF9yZXR1cm5fdmFsdWUpCiAJc3RmZAklZjEsMCglcjMwKQpAQCAtMTM0LDIxICsxMzksMTcgQEAKIEwoZmxvYXRfcmV0dXJuX3ZhbHVlKToKIAlzdGZzCSVmMSwwKCVyMzApCiAJYglMKGRvbmVfcmV0dXJuX3ZhbHVlKQorI2VuZGlmCiAKIEwoc21hbGxfc3RydWN0X3JldHVybl92YWx1ZSk6Ci0JZXh0cndpCSVyNiwlcjMxLDIsMTkgICAgICAgICAvKiBudW1iZXIgb2YgYnl0ZXMgcGFkZGluZyA9IHNoaWZ0LzggKi8KLQltdGNyZgkweDAyLCVyMzEJICAgICAgLyogY29weSBmbGFncyB0byBjclsyNDoyN10gKGNyNikgKi8KLQlleHRyd2kJJXI1LCVyMzEsNSwxOSAgICAgICAgIC8qIHI1IDwtIG51bWJlciBvZiBiaXRzIG9mIHBhZGRpbmcgKi8KLQlzdWJmaWMgICVyNiwlcjYsNCAgICAgICAgICAgICAvKiByNiA8LSBudW1iZXIgb2YgdXNlZnVsIGJ5dGVzIGluIHIzICovCi0JYmYtCTI1LEwoZG9uZV9yZXR1cm5fdmFsdWUpIC8qIHN0cnVjdCBpbiByMyA/IGlmIG5vdCwgZG9uZS4gKi8KLS8qIHNtc3Rfb25lX3JlZ2lzdGVyOiAqLwotCXNsdwklcjMsJXIzLCVyNSAgICAgICAgICAgLyogTGVmdC1qdXN0aWZ5IHZhbHVlIGluIHIzICovCi0JbXR4ZXIJJXI2ICAgICAgICAgICAgICAgICAgIC8qIG1vdmUgYnl0ZSBjb3VudCB0byBYRVIgLi4uICovCi0Jc3Rzd3gJJXIzLDAsJXIzMCAgICAgICAgICAgIC8qIC4uLiBhbmQgc3RvcmUgdGhhdCBtYW55IGJ5dGVzICovCi0JYmYrCTI2LEwoZG9uZV9yZXR1cm5fdmFsdWUpICAvKiBzdHJ1Y3QgaW4gcjM6cjQgPyAqLwotCWFkZAklcjYsJXI2LCVyMzAgICAgICAgICAgLyogYWRqdXN0IHBvaW50ZXIgKi8KLQlzdHN3aQklcjQsJXI2LDQgICAgICAgICAgICAgLyogc3RvcmUgbGFzdCBmb3VyIGJ5dGVzICovCi0JYglMKGRvbmVfcmV0dXJuX3ZhbHVlKQorCS8qCisJICogVGhlIEMgY29kZSBhbHdheXMgYWxsb2NhdGVzIGEgcHJvcGVybHktYWxpZ25lZCA4LWJ5dGUgYm91bmNlCisJICogYnVmZmVyIHRvIG1ha2UgdGhpcyBhc3NlbWJseSBjb2RlIHZlcnkgc2ltcGxlLiAgSnVzdCB3cml0ZSBvdXQKKwkgKiByMyBhbmQgcjQgdG8gdGhlIGJ1ZmZlciB0byBhbGxvdyB0aGUgQyBjb2RlIHRvIGhhbmRsZSB0aGUgcmVzdC4KKwkgKi8KKwlzdHcgJXIzLCAwKCVyMzApCisJc3R3ICVyNCwgNCglcjMwKQorCWIgTChkb25lX3JldHVybl92YWx1ZSkKIAogLkxGRTE6CiBFTkQoZmZpX2NhbGxfU1lTVikKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3ByZXBfY2lmLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wcmVwX2NpZi5jCmluZGV4IGMxYzNiOWEuLmViNjgzNDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3ByZXBfY2lmLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcHJlcF9jaWYuYwpAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcmVwX2NpZi5jIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk4LCAyMDA3ICBSZWQgSGF0LCBJbmMuCisgICBwcmVwX2NpZi5jIC0gQ29weXJpZ2h0IChjKSAyMDExLCAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk4LCAyMDA3ICBSZWQgSGF0LCBJbmMuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCkBAIC0zNywxNyArMzgsMjEgQEAKIHsKICAgZmZpX3R5cGUgKipwdHI7CiAKLSAgRkZJX0FTU0VSVChhcmcgIT0gTlVMTCk7CisgIGlmIChVTkxJS0VMWShhcmcgPT0gTlVMTCB8fCBhcmctPmVsZW1lbnRzID09IE5VTEwpKQorICAgIHJldHVybiBGRklfQkFEX1RZUEVERUY7CiAKLSAgRkZJX0FTU0VSVChhcmctPmVsZW1lbnRzICE9IE5VTEwpOwotICBGRklfQVNTRVJUKGFyZy0+c2l6ZSA9PSAwKTsKLSAgRkZJX0FTU0VSVChhcmctPmFsaWdubWVudCA9PSAwKTsKKyAgYXJnLT5zaXplID0gMDsKKyAgYXJnLT5hbGlnbm1lbnQgPSAwOwogCiAgIHB0ciA9ICYoYXJnLT5lbGVtZW50c1swXSk7CiAKKyAgaWYgKFVOTElLRUxZKHB0ciA9PSAwKSkKKyAgICByZXR1cm4gRkZJX0JBRF9UWVBFREVGOworCiAgIHdoaWxlICgoKnB0cikgIT0gTlVMTCkKICAgICB7Ci0gICAgICBpZiAoKCgqcHRyKS0+c2l6ZSA9PSAwKSAmJiAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoKCpwdHIpKSAhPSBGRklfT0spKQorICAgICAgaWYgKFVOTElLRUxZKCgoKnB0ciktPnNpemUgPT0gMCkKKwkJICAgICYmIChpbml0aWFsaXplX2FnZ3JlZ2F0ZSgoKnB0cikpICE9IEZGSV9PSykpKQogCXJldHVybiBGRklfQkFEX1RZUEVERUY7CiAKICAgICAgIC8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gdGhlIGFyZ3VtZW50IHR5cGUgKi8KQEAgLTg1LDE5ICs5MCwzOCBAQAogLyogUGVyZm9ybSBtYWNoaW5lIGluZGVwZW5kZW50IGZmaV9jaWYgcHJlcGFyYXRpb24sIHRoZW4gY2FsbAogICAgbWFjaGluZSBkZXBlbmRlbnQgcm91dGluZS4gKi8KIAotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWYoZmZpX2NpZiAqY2lmLCBmZmlfYWJpIGFiaSwgdW5zaWduZWQgaW50IG5hcmdzLAotCQkJZmZpX3R5cGUgKnJ0eXBlLCBmZmlfdHlwZSAqKmF0eXBlcykKKy8qIEZvciBub24gdmFyaWFkaWMgZnVuY3Rpb25zIGlzdmFyaWFkaWMgc2hvdWxkIGJlIDAgYW5kCisgICBuZml4ZWRhcmdzPT1udG90YWxhcmdzLgorCisgICBGb3IgdmFyaWFkaWMgY2FsbHMsIGlzdmFyaWFkaWMgc2hvdWxkIGJlIDEgYW5kIG5maXhlZGFyZ3MKKyAgIGFuZCBudG90YWxhcmdzIHNldCBhcyBhcHByb3ByaWF0ZS4gbmZpeGVkYXJncyBtdXN0IGFsd2F5cyBiZSA+PTEgKi8KKworCitmZmlfc3RhdHVzIEZGSV9ISURERU4gZmZpX3ByZXBfY2lmX2NvcmUoZmZpX2NpZiAqY2lmLCBmZmlfYWJpIGFiaSwKKwkJCSAgICAgdW5zaWduZWQgaW50IGlzdmFyaWFkaWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncywKKwkJCSAgICAgZmZpX3R5cGUgKnJ0eXBlLCBmZmlfdHlwZSAqKmF0eXBlcykKIHsKICAgdW5zaWduZWQgYnl0ZXMgPSAwOwogICB1bnNpZ25lZCBpbnQgaTsKICAgZmZpX3R5cGUgKipwdHI7CiAKICAgRkZJX0FTU0VSVChjaWYgIT0gTlVMTCk7Ci0gIEZGSV9BU1NFUlQoKGFiaSA+IEZGSV9GSVJTVF9BQkkpICYmIChhYmkgPD0gRkZJX0RFRkFVTFRfQUJJKSk7CisgIEZGSV9BU1NFUlQoKCFpc3ZhcmlhZGljKSB8fCAobmZpeGVkYXJncyA+PSAxKSk7CisgIEZGSV9BU1NFUlQobmZpeGVkYXJncyA8PSBudG90YWxhcmdzKTsKKworI2lmbmRlZiBYODZfV0lOMzIKKyAgaWYgKCEgKGFiaSA+IEZGSV9GSVJTVF9BQkkgJiYgYWJpIDwgRkZJX0xBU1RfQUJJKSkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CisjZWxzZQorICBpZiAoISAoYWJpID4gRkZJX0ZJUlNUX0FCSSAmJiBhYmkgPCBGRklfTEFTVF9BQkkgfHwgYWJpID09IEZGSV9USElTQ0FMTCkpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOworI2VuZGlmCiAKICAgY2lmLT5hYmkgPSBhYmk7CiAgIGNpZi0+YXJnX3R5cGVzID0gYXR5cGVzOwotICBjaWYtPm5hcmdzID0gbmFyZ3M7CisgIGNpZi0+bmFyZ3MgPSBudG90YWxhcmdzOwogICBjaWYtPnJ0eXBlID0gcnR5cGU7CiAKICAgY2lmLT5mbGFncyA9IDA7CkBAIC0xMTAsNyArMTM0LDcgQEAKICAgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKGNpZi0+cnR5cGUpOwogCiAgIC8qIHg4NiwgeDg2LTY0IGFuZCBzMzkwIHN0YWNrIHNwYWNlIGFsbG9jYXRpb24gaXMgaGFuZGxlZCBpbiBwcmVwX21hY2hkZXAuICovCi0jaWYgIWRlZmluZWQgTTY4SyAmJiAhZGVmaW5lZCBfX2kzODZfXyAmJiAhZGVmaW5lZCBfX3g4Nl82NF9fICYmICFkZWZpbmVkIFMzOTAgJiYgIWRlZmluZWQgUEEKKyNpZiAhZGVmaW5lZCBNNjhLICYmICFkZWZpbmVkIFg4Nl9BTlkgJiYgIWRlZmluZWQgUzM5MCAmJiAhZGVmaW5lZCBQQQogICAvKiBNYWtlIHNwYWNlIGZvciB0aGUgcmV0dXJuIHN0cnVjdHVyZSBwb2ludGVyICovCiAgIGlmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAogI2lmZGVmIFNQQVJDCkBAIC0xMzEsNyArMTU1LDcgQEAKIAkgY2hlY2sgYWZ0ZXIgdGhlIGluaXRpYWxpemF0aW9uLiAgKi8KICAgICAgIEZGSV9BU1NFUlRfVkFMSURfVFlQRSgqcHRyKTsKIAotI2lmICFkZWZpbmVkIF9faTM4Nl9fICYmICFkZWZpbmVkIF9feDg2XzY0X18gJiYgIWRlZmluZWQgUzM5MCAmJiAhZGVmaW5lZCBQQQorI2lmICFkZWZpbmVkIFg4Nl9BTlkgJiYgIWRlZmluZWQgUzM5MCAmJiAhZGVmaW5lZCBQQQogI2lmZGVmIFNQQVJDCiAgICAgICBpZiAoKCgqcHRyKS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKIAkgICAmJiAoKCpwdHIpLT5zaXplID4gMTYgfHwgY2lmLT5hYmkgIT0gRkZJX1Y5KSkKQEAgLTE1MywxMCArMTc3LDMxIEBACiAgIGNpZi0+Ynl0ZXMgPSBieXRlczsKIAogICAvKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCisjaWZkZWYgRkZJX1RBUkdFVF9TUEVDSUZJQ19WQVJJQURJQworICBpZiAoaXN2YXJpYWRpYykKKwlyZXR1cm4gZmZpX3ByZXBfY2lmX21hY2hkZXBfdmFyKGNpZiwgbmZpeGVkYXJncywgbnRvdGFsYXJncyk7CisjZW5kaWYKKwogICByZXR1cm4gZmZpX3ByZXBfY2lmX21hY2hkZXAoY2lmKTsKIH0KICNlbmRpZiAvKiBub3QgX19DUklTX18gKi8KIAorZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWYoZmZpX2NpZiAqY2lmLCBmZmlfYWJpIGFiaSwgdW5zaWduZWQgaW50IG5hcmdzLAorCQkJICAgICBmZmlfdHlwZSAqcnR5cGUsIGZmaV90eXBlICoqYXR5cGVzKQoreworICByZXR1cm4gZmZpX3ByZXBfY2lmX2NvcmUoY2lmLCBhYmksIDAsIG5hcmdzLCBuYXJncywgcnR5cGUsIGF0eXBlcyk7Cit9CisKK2ZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX3ZhcihmZmlfY2lmICpjaWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZpX2FiaSBhYmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZpX3R5cGUgKnJ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZmaV90eXBlICoqYXR5cGVzKQoreworICByZXR1cm4gZmZpX3ByZXBfY2lmX2NvcmUoY2lmLCBhYmksIDEsIG5maXhlZGFyZ3MsIG50b3RhbGFyZ3MsIHJ0eXBlLCBhdHlwZXMpOworfQorCiAjaWYgRkZJX0NMT1NVUkVTCiAKIGZmaV9zdGF0dXMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3MzOTAvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zMzkwL2ZmaXRhcmdldC5oCmluZGV4IDc4ZjNjNjUuLjk3ZmE1YzQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3MzOTAvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvczM5MC9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBTMzkwLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDkgKzI4LDE1IEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWYgZGVmaW5lZCAoX19zMzkweF9fKQorI2lmbmRlZiBTMzkwWAogI2RlZmluZSBTMzkwWAogI2VuZGlmCisjZW5kaWYKIAogLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNDAsOCArNDcsOCBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaS5jCmluZGV4IDY5YmQwMjUuLjM1MTViOTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaS5jCkBAIC0xLDUgKzEsNSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEtheiBLb2ppbWEKKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDAyLTIwMDgsIDIwMTIgS2F6IEtvamltYQogICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDggUmVkIEhhdCwgSW5jLgogICAgCiAgICBTdXBlckggRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCkBAIC00NjMsNyArNDYzLDggQEAKICAgdW5zaWduZWQgaW50ICp0cmFtcDsKICAgdW5zaWduZWQgaW50IGluc247CiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0dDQ19TWVNWKTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9TWVNWKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICB0cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikgJmNsb3N1cmUtPnRyYW1wWzBdOwogICAvKiBTZXQgVCBiaXQgaWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBzdHJ1Y3QgcG9pbnRlZCB3aXRoIFIyLiAgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpdGFyZ2V0LmgKaW5kZXggMjE4YWUzZC4uYTM2YmY0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBTdXBlckguCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gR2VuZXJpYyB0eXBlIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgTElCRkZJX0FTTQpAQCAtMzYsOCArNDEsOCBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZmkuYwppbmRleCA4ZmJjMDVjLi4xMjNiODdhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpLmMKQEAgLTEsNSArMSw1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDQsIDIwMDYsIDIwMDcgS2F6IEtvamltYQorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDQsIDIwMDYsIDIwMDcsIDIwMTIgS2F6IEtvamltYQogICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDggQW50aG9ueSBHcmVlbgogICAgCiAgICBTdXBlckggU0htZWRpYSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKQEAgLTMwMiw3ICszMDIsOCBAQAogewogICB1bnNpZ25lZCBpbnQgKnRyYW1wOwogCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9HQ0NfU1lTVik7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfU1lTVikKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAKICAgdHJhbXAgPSAodW5zaWduZWQgaW50ICopICZjbG9zdXJlLT50cmFtcFswXTsKICAgLyogU2luY2UgZmZpX2Nsb3N1cmUgaXMgYW4gYWxpZ25lZCBvYmplY3QsIHRoZSBmZmkgdHJhbXBvbGluZSBpcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpdGFyZ2V0LmgKaW5kZXggNGU5MjJmYy4uMDhhNmZlOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIFN1cGVySCAtIFNIbWVkaWEuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gR2VuZXJpYyB0eXBlIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgTElCRkZJX0FTTQpAQCAtMzYsOCArNDEsOCBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKIH0gZmZpX2FiaTsKIAogI2RlZmluZSBGRklfRVhUUkFfQ0lGX0ZJRUxEUyBsb25nIGxvbmcgZmxhZ3MyCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaS5jCmluZGV4IDFkMDFmNTkuLjFhYzVkNDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaS5jCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAyMDAzLCAyMDA0LCAyMDA3LCAyMDA4IFJlZCBIYXQsIEluYy4KKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDExIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LCAyMDAzLTIwMDQsIDIwMDctMjAwOCBSZWQgSGF0LCBJbmMuCiAgICAKICAgIFNQQVJDIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC00MDYsOCArNDA3LDUwIEBACiAgICAgICAvKiBXZSBkb24ndCB5ZXQgc3VwcG9ydCBjYWxsaW5nIDMyYml0IGNvZGUgZnJvbSA2NGJpdCAqLwogICAgICAgRkZJX0FTU0VSVCgwKTsKICNlbHNlCi0gICAgICBmZmlfY2FsbF92OChmZmlfcHJlcF9hcmdzX3Y4LCAmZWNpZiwgY2lmLT5ieXRlcywgCi0JCSAgY2lmLT5mbGFncywgcnZhbHVlLCBmbik7CisgICAgICBpZiAocnZhbHVlICYmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAorI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJICB8fCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX0xPTkdET1VCTEUKKyNlbmRpZgorCSAgKSkKKwl7CisJICAvKiBGb3IgdjgsIHdlIG5lZWQgYW4gInVuaW1wIiB3aXRoIHNpemUgb2YgcmV0dXJuaW5nIHN0cnVjdCAqLworCSAgLyogYmVoaW5kICJjYWxsIiwgc28gd2UgYWxsb2Mgc29tZSBleGVjdXRhYmxlIHNwYWNlIGZvciBpdC4gKi8KKwkgIC8qIGw3IGlzIHVzZWQsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHY4LlMgZG9lc24ndCB1c2UgJWw3LiAgICovCisJICB1bnNpZ25lZCBpbnQgKmNhbGxfc3RydWN0ID0gTlVMTDsKKwkgIGZmaV9jbG9zdXJlX2FsbG9jKDMyLCAmY2FsbF9zdHJ1Y3QpOworCSAgaWYgKGNhbGxfc3RydWN0KQorCSAgICB7CisJICAgICAgdW5zaWduZWQgbG9uZyBmID0gKHVuc2lnbmVkIGxvbmcpZm47CisJICAgICAgY2FsbF9zdHJ1Y3RbMF0gPSAweGFlMTAwMDFmOwkJIC8qIG1vdiAgICVpNywgJWw3CSAqLworCSAgICAgIGNhbGxfc3RydWN0WzFdID0gMHhiZTEwMDAwZjsJCSAvKiBtb3YgICAlbzcsICVpNwkgKi8KKwkgICAgICBjYWxsX3N0cnVjdFsyXSA9IDB4MDMwMDAwMDAgfCBmID4+IDEwOyAgICAgLyogc2V0aGkgJWhpKGZuKSwgJWcxCSAqLworCSAgICAgIGNhbGxfc3RydWN0WzNdID0gMHg5ZmMwNjAwMCB8IChmICYgMHgzZmYpOyAvKiBqbXAgJWcxKyVsbyhmbiksICVvNyAqLworCSAgICAgIGNhbGxfc3RydWN0WzRdID0gMHgwMTAwMDAwMDsJCSAvKiBub3AJCQkgKi8KKwkgICAgICBpZiAoY2lmLT5ydHlwZS0+c2l6ZSA8IDB4N2YpCisJCWNhbGxfc3RydWN0WzVdID0gY2lmLT5ydHlwZS0+c2l6ZTsJIC8qIHVuaW1wCQkgKi8KKwkgICAgICBlbHNlCisJCWNhbGxfc3RydWN0WzVdID0gMHgwMTAwMDAwMDsJICAgICAJIC8qIG5vcAkJCSAqLworCSAgICAgIGNhbGxfc3RydWN0WzZdID0gMHg4MWM3ZTAwODsJCSAvKiByZXQJCQkgKi8KKwkgICAgICBjYWxsX3N0cnVjdFs3XSA9IDB4YmUxMDAwMTc7CQkgLyogbW92ICAgJWw3LCAlaTcJICovCisJICAgICAgYXNtIHZvbGF0aWxlICgiaWZsdXNoICUwOyBpZmx1c2ggJTArODsgaWZsdXNoICUwKzE2OyBpZmx1c2ggJTArMjQiIDogOgorCQkJICAgICJyIiAoY2FsbF9zdHJ1Y3QpIDogIm1lbW9yeSIpOworCSAgICAgIC8qIFNQQVJDIHY4IHJlcXVpcmVzIDUgaW5zdHJ1Y3Rpb25zIGZvciBmbHVzaCB0byBiZSB2aXNpYmxlICovCisJICAgICAgYXNtIHZvbGF0aWxlICgibm9wOyBub3A7IG5vcDsgbm9wOyBub3AiKTsKKwkgICAgICBmZmlfY2FsbF92OChmZmlfcHJlcF9hcmdzX3Y4LCAmZWNpZiwgY2lmLT5ieXRlcywKKwkJCSAgY2lmLT5mbGFncywgcnZhbHVlLCBjYWxsX3N0cnVjdCk7CisJICAgICAgZmZpX2Nsb3N1cmVfZnJlZShjYWxsX3N0cnVjdCk7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGZmaV9jYWxsX3Y4KGZmaV9wcmVwX2FyZ3NfdjgsICZlY2lmLCBjaWYtPmJ5dGVzLAorCQkJICBjaWYtPmZsYWdzLCBydmFsdWUsIGZuKTsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBmZmlfY2FsbF92OChmZmlfcHJlcF9hcmdzX3Y4LCAmZWNpZiwgY2lmLT5ieXRlcywKKwkJICAgICAgY2lmLT5mbGFncywgcnZhbHVlLCBmbik7CisJfQogI2VuZGlmCiAgICAgICBicmVhazsKICAgICBjYXNlIEZGSV9WOToKQEAgLTQyNSw3ICs0NjgsNiBAQAogICAgICAgRkZJX0FTU0VSVCgwKTsKICAgICAgIGJyZWFrOwogICAgIH0KLQogfQogCiAKQEAgLTQ0Nyw3ICs0ODksOCBAQAogI2lmZGVmIFNQQVJDNjQKICAgLyogVHJhbXBvbGluZSBhZGRyZXNzIGlzIGVxdWFsIHRvIHRoZSBjbG9zdXJlIGFkZHJlc3MuICBXZSB0YWtlIGFkdmFudGFnZQogICAgICBvZiB0aGF0IHRvIHJlZHVjZSB0aGUgdHJhbXBvbGluZSBzaXplIGJ5IDggYnl0ZXMuICovCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9WOSk7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfVjkpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICBmbiA9ICh1bnNpZ25lZCBsb25nKSBmZmlfY2xvc3VyZV92OTsKICAgdHJhbXBbMF0gPSAweDgzNDE0MDAwOwkvKiByZAklcGMsICVnMQkqLwogICB0cmFtcFsxXSA9IDB4Y2E1ODYwMTA7CS8qIGxkeAlbJWcxKzE2XSwgJWc1CSovCkBAIC00NTYsNyArNDk5LDggQEAKICAgKigodW5zaWduZWQgbG9uZyAqKSAmdHJhbXBbNF0pID0gZm47CiAjZWxzZQogICB1bnNpZ25lZCBsb25nIGN0eCA9ICh1bnNpZ25lZCBsb25nKSBjb2RlbG9jOwotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfVjgpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1Y4KQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgZm4gPSAodW5zaWduZWQgbG9uZykgZmZpX2Nsb3N1cmVfdjg7CiAgIHRyYW1wWzBdID0gMHgwMzAwMDAwMCB8IGZuID4+IDEwOwkvKiBzZXRoaSAlaGkoZm4pLCAlZzEJKi8KICAgdHJhbXBbMV0gPSAweDA1MDAwMDAwIHwgY3R4ID4+IDEwOwkvKiBzZXRoaSAlaGkoY3R4KSwgJWcyCSovCkBAIC00NjgsMTMgKzUxMiwxMyBAQAogICBjbG9zdXJlLT5mdW4gPSBmdW47CiAgIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKIAotICAvKiBGbHVzaCB0aGUgSWNhY2hlLiAgRklYTUU6IGFsaWdubWVudCBpc24ndCBjZXJ0YWluLCBhc3N1bWUgOCBieXRlcyAqLworICAvKiBGbHVzaCB0aGUgSWNhY2hlLiAgY2xvc3VyZSBpcyA4IGJ5dGVzIGFsaWduZWQuICAqLwogI2lmZGVmIFNQQVJDNjQKLSAgYXNtIHZvbGF0aWxlICgiZmx1c2gJJTAiIDogOiAiciIgKGNsb3N1cmUpIDogIm1lbW9yeSIpOwotICBhc20gdm9sYXRpbGUgKCJmbHVzaAklMCIgOiA6ICJyIiAoKChjaGFyICopIGNsb3N1cmUpICsgOCkgOiAibWVtb3J5Iik7CisgIGFzbSB2b2xhdGlsZSAoImZsdXNoCSUwOyBmbHVzaCAlMCs4IiA6IDogInIiIChjbG9zdXJlKSA6ICJtZW1vcnkiKTsKICNlbHNlCi0gIGFzbSB2b2xhdGlsZSAoImlmbHVzaAklMCIgOiA6ICJyIiAoY2xvc3VyZSkgOiAibWVtb3J5Iik7Ci0gIGFzbSB2b2xhdGlsZSAoImlmbHVzaAklMCIgOiA6ICJyIiAoKChjaGFyICopIGNsb3N1cmUpICsgOCkgOiAibWVtb3J5Iik7CisgIGFzbSB2b2xhdGlsZSAoImlmbHVzaAklMDsgaWZsdXNoICUwKzgiIDogOiAiciIgKGNsb3N1cmUpIDogIm1lbW9yeSIpOworICAvKiBTUEFSQyB2OCByZXF1aXJlcyA1IGluc3RydWN0aW9ucyBmb3IgZmx1c2ggdG8gYmUgdmlzaWJsZSAqLworICBhc20gdm9sYXRpbGUgKCJub3A7IG5vcDsgbm9wOyBub3A7IG5vcCIpOwogI2VuZGlmCiAKICAgcmV0dXJuIEZGSV9PSzsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpdGFyZ2V0LmgKaW5kZXggMWExYTFhYy4uZDg5Zjc4NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgU1BBUkMuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsMTEgKzI4LDE3IEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWYgZGVmaW5lZChfX2FyY2g2NF9fKSB8fCBkZWZpbmVkKF9fc3BhcmN2OSkKKyNpZm5kZWYgU1BBUkM2NAogI2RlZmluZSBTUEFSQzY0CiAjZW5kaWYKKyNlbmRpZgogCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwpAQCAtNDIsMTIgKzQ5LDEyIEBACiAgIEZGSV9WOCwKICAgRkZJX1Y4UExVUywKICAgRkZJX1Y5LAorICBGRklfTEFTVF9BQkksCiAjaWZkZWYgU1BBUkM2NAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfVjksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9WOQogI2Vsc2UKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1Y4LAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfVjgKICNlbmRpZgotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvdjkuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL3Y5LlMKaW5kZXggNDg5ZmYwMi4uYmYzMWEyYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvdjkuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy92OS5TCkBAIC0zMiw3ICszMiw3IEBACiAvKiBPbmx5IGNvbXBpbGUgdGhpcyBpbiBmb3IgNjRiaXQgYnVpbGRzLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgb2JqZWN0IGZpbGUKICAgIHdpbGwgaGF2ZSBpbnByb3BlciBhcmNoaXRlY3R1cmUgZHVlIHRvIHVzZWQgaW5zdHJ1Y3Rpb25zLiAgKi8KIAotI2RlZmluZSBTVEFDS0ZSQU1FIDEyOAkJLyogTWluaW11bSBzdGFjayBmcmFtZXNpemUgZm9yIFNQQVJDICovCisjZGVmaW5lIFNUQUNLRlJBTUUgMTc2CQkvKiBNaW5pbXVtIHN0YWNrIGZyYW1lc2l6ZSBmb3IgU1BBUkMgNjQtYml0ICovCiAjZGVmaW5lIFNUQUNLX0JJQVMgMjA0NwogI2RlZmluZSBBUkdTICgxMjgpCQkvKiBPZmZzZXQgb2YgcmVnaXN0ZXIgYXJlYSBpbiBmcmFtZSAqLwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpLmMKaW5kZXggODA0OTY1My4uNjExZTIyMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmkuYwpAQCAtMyw3ICszLDcgQEAKICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAyICBSYW5qaXQgTWF0aGV3CiAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwMiAgQm8gVGhvcnNlbgogICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDIgIFJvZ2VyIFNheWxlCi0gICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIHg4NiBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZQogCkBAIC00OCwxMCArNDgsMTggQEAKICAgcmVnaXN0ZXIgdm9pZCAqKnBfYXJndjsKICAgcmVnaXN0ZXIgY2hhciAqYXJncDsKICAgcmVnaXN0ZXIgZmZpX3R5cGUgKipwX2FyZzsKKyNpZmRlZiBYODZfV0lOMzIKKyAgc2l6ZV90IHBfc3RhY2tfYXJnc1syXTsKKyAgdm9pZCAqcF9zdGFja19kYXRhWzJdOworICBjaGFyICphcmdwMiA9IHN0YWNrOworICBpbnQgc3RhY2tfYXJnc19jb3VudCA9IDA7CisgIGludCBjYWJpID0gZWNpZi0+Y2lmLT5hYmk7CisjZW5kaWYKIAogICBhcmdwID0gc3RhY2s7CiAKLSAgaWYgKGVjaWYtPmNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUCisgIGlmICgoZWNpZi0+Y2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QKKyAgICAgICB8fCBlY2lmLT5jaWYtPmZsYWdzID09IEZGSV9UWVBFX01TX1NUUlVDVCkKICNpZmRlZiBYODZfV0lONjQKICAgICAgICYmIChlY2lmLT5jaWYtPnJ0eXBlLT5zaXplICE9IDEgJiYgZWNpZi0+Y2lmLT5ydHlwZS0+c2l6ZSAhPSAyCiAgICAgICAgICAgJiYgZWNpZi0+Y2lmLT5ydHlwZS0+c2l6ZSAhPSA0ICYmIGVjaWYtPmNpZi0+cnR5cGUtPnNpemUgIT0gOCkKQEAgLTU5LDYgKzY3LDE2IEBACiAgICAgICApCiAgICAgewogICAgICAgKih2b2lkICoqKSBhcmdwID0gZWNpZi0+cnZhbHVlOworI2lmZGVmIFg4Nl9XSU4zMgorICAgICAgLyogRm9yIGZhc3RjYWxsL3RoaXNjYWxsIHRoaXMgaXMgZmlyc3QgcmVnaXN0ZXItcGFzc2VkCisgICAgICAgICBhcmd1bWVudC4gICovCisgICAgICBpZiAoY2FiaSA9PSBGRklfVEhJU0NBTEwgfHwgY2FiaSA9PSBGRklfRkFTVENBTEwpCisJeworCSAgcF9zdGFja19hcmdzW3N0YWNrX2FyZ3NfY291bnRdID0gc2l6ZW9mICh2b2lkKik7CisJICBwX3N0YWNrX2RhdGFbc3RhY2tfYXJnc19jb3VudF0gPSBhcmdwOworCSAgKytzdGFja19hcmdzX2NvdW50OworCX0KKyNlbmRpZgogICAgICAgYXJncCArPSBzaXplb2Yodm9pZCopOwogICAgIH0KIApAQCAtMTM0LDYgKzE1MiwyNCBAQAogICAgICAgICB7CiAgICAgICAgICAgbWVtY3B5KGFyZ3AsICpwX2FyZ3YsIHopOwogICAgICAgICB9CisKKyNpZmRlZiBYODZfV0lOMzIKKyAgICAvKiBGb3IgdGhpc2NhbGwvZmFzdGNhbGwgY29udmVudGlvbiByZWdpc3Rlci1wYXNzZWQgYXJndW1lbnRzCisgICAgICAgYXJlIHRoZSBmaXJzdCB0d28gbm9uZS1mbG9hdGluZy1wb2ludCBhcmd1bWVudHMgd2l0aCBhIHNpemUKKyAgICAgICBzbWFsbGVyIG9yIGVxdWFsIHRvIHNpemVvZiAodm9pZCopLiAgKi8KKyAgICBpZiAoKGNhYmkgPT0gRkZJX1RISVNDQUxMICYmIHN0YWNrX2FyZ3NfY291bnQgPCAxKQorICAgICAgICB8fCAoY2FiaSA9PSBGRklfRkFTVENBTEwgJiYgc3RhY2tfYXJnc19jb3VudCA8IDIpKQorICAgICAgeworCWlmICh6IDw9IDQKKwkgICAgJiYgKCgqcF9hcmcpLT50eXBlICE9IEZGSV9UWVBFX0ZMT0FUCisJICAgICAgICAmJiAoKnBfYXJnKS0+dHlwZSAhPSBGRklfVFlQRV9TVFJVQ1QpKQorCSAgeworCSAgICBwX3N0YWNrX2FyZ3Nbc3RhY2tfYXJnc19jb3VudF0gPSB6OworCSAgICBwX3N0YWNrX2RhdGFbc3RhY2tfYXJnc19jb3VudF0gPSBhcmdwOworCSAgICArK3N0YWNrX2FyZ3NfY291bnQ7CisJICB9CisgICAgICB9CisjZW5kaWYKICAgICAgIHBfYXJndisrOwogI2lmZGVmIFg4Nl9XSU42NAogICAgICAgYXJncCArPSAoeiArIHNpemVvZih2b2lkKikgLSAxKSAmIH4oc2l6ZW9mKHZvaWQqKSAtIDEpOwpAQCAtMTQxLDcgKzE3Nyw0NSBAQAogICAgICAgYXJncCArPSB6OwogI2VuZGlmCiAgICAgfQotICAKKworI2lmZGVmIFg4Nl9XSU4zMgorICAvKiBXZSBuZWVkIHRvIG1vdmUgdGhlIHJlZ2lzdGVyLXBhc3NlZCBhcmd1bWVudHMgZm9yIHRoaXNjYWxsL2Zhc3RjYWxsCisgICAgIG9uIHRvcCBvZiBzdGFjaywgc28gdGhhdCB0aG9zZSBjYW4gYmUgbW92ZWQgdG8gcmVnaXN0ZXJzIGVjeC9lZHggYnkKKyAgICAgY2FsbC1oYW5kbGVyLiAgKi8KKyAgaWYgKHN0YWNrX2FyZ3NfY291bnQgPiAwKQorICAgIHsKKyAgICAgIHNpemVfdCB6eiA9IChwX3N0YWNrX2FyZ3NbMF0gKyAzKSAmIH4zOworICAgICAgY2hhciAqaDsKKworICAgICAgLyogTW92ZSBmaXJzdCBhcmd1bWVudCB0byB0b3Atc3RhY2sgcG9zaXRpb24uICAqLworICAgICAgaWYgKHBfc3RhY2tfZGF0YVswXSAhPSBhcmdwMikKKwl7CisJICBoID0gYWxsb2NhICh6eiArIDEpOworCSAgbWVtY3B5IChoLCBwX3N0YWNrX2RhdGFbMF0sIHp6KTsKKwkgIG1lbW1vdmUgKGFyZ3AyICsgenosIGFyZ3AyLAorCSAgICAgICAgICAgKHNpemVfdCkgKChjaGFyICopIHBfc3RhY2tfZGF0YVswXSAtIChjaGFyKilhcmdwMikpOworCSAgbWVtY3B5IChhcmdwMiwgaCwgenopOworCX0KKworICAgICAgYXJncDIgKz0geno7CisgICAgICAtLXN0YWNrX2FyZ3NfY291bnQ7CisgICAgICBpZiAoenogPiA0KQorCXN0YWNrX2FyZ3NfY291bnQgPSAwOworCisgICAgICAvKiBJZiB3ZSBoYXZlIGEgc2Vjb25kIGFyZ3VtZW50LCB0aGVuIG1vdmUgaXQgb24gdG9wCisgICAgICAgICBhZnRlciB0aGUgZmlyc3Qgb25lLiAgKi8KKyAgICAgIGlmIChzdGFja19hcmdzX2NvdW50ID4gMCAmJiBwX3N0YWNrX2RhdGFbMV0gIT0gYXJncDIpCisJeworCSAgenogPSBwX3N0YWNrX2FyZ3NbMV07CisJICB6eiA9ICh6eiArIDMpICYgfjM7CisJICBoID0gYWxsb2NhICh6eiArIDEpOworCSAgaCA9IGFsbG9jYSAoenogKyAxKTsKKwkgIG1lbWNweSAoaCwgcF9zdGFja19kYXRhWzFdLCB6eik7CisJICBtZW1tb3ZlIChhcmdwMiArIHp6LCBhcmdwMiwgKHNpemVfdCkgKChjaGFyKikgcF9zdGFja19kYXRhWzFdIC0gKGNoYXIqKWFyZ3AyKSk7CisJICBtZW1jcHkgKGFyZ3AyLCBoLCB6eik7CisJfQorICAgIH0KKyNlbmRpZgogICByZXR1cm47CiB9CiAKQEAgLTE1NSwxMiArMjI5LDEwIEBACiAgIHN3aXRjaCAoY2lmLT5ydHlwZS0+dHlwZSkKICAgICB7CiAgICAgY2FzZSBGRklfVFlQRV9WT0lEOgotI2lmIGRlZmluZWQoWDg2KSB8fCBkZWZpbmVkIChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X0ZSRUVCU0QpIHx8IGRlZmluZWQoWDg2X0RBUldJTikgfHwgZGVmaW5lZChYODZfV0lONjQpCiAgICAgY2FzZSBGRklfVFlQRV9VSU5UODoKICAgICBjYXNlIEZGSV9UWVBFX1VJTlQxNjoKICAgICBjYXNlIEZGSV9UWVBFX1NJTlQ4OgogICAgIGNhc2UgRkZJX1RZUEVfU0lOVDE2OgotI2VuZGlmCiAjaWZkZWYgWDg2X1dJTjY0CiAgICAgY2FzZSBGRklfVFlQRV9VSU5UMzI6CiAgICAgY2FzZSBGRklfVFlQRV9TSU5UMzI6CkBAIC0yMDgsOCArMjgwLDEzIEBACiAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgewotICAgICAgICAgIGNpZi0+ZmxhZ3MgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0gICAgICAgICAgLy8gYWxsb2NhdGUgc3BhY2UgZm9yIHJldHVybiB2YWx1ZSBwb2ludGVyCisjaWZkZWYgWDg2X1dJTjMyCisgICAgICAgICAgaWYgKGNpZi0+YWJpID09IEZGSV9NU19DREVDTCkKKyAgICAgICAgICAgIGNpZi0+ZmxhZ3MgPSBGRklfVFlQRV9NU19TVFJVQ1Q7CisgICAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgICAgICBjaWYtPmZsYWdzID0gRkZJX1RZUEVfU1RSVUNUOworICAgICAgICAgIC8qIGFsbG9jYXRlIHNwYWNlIGZvciByZXR1cm4gdmFsdWUgcG9pbnRlciAqLwogICAgICAgICAgIGNpZi0+Ynl0ZXMgKz0gQUxJR04oc2l6ZW9mKHZvaWQqKSwgRkZJX1NJWkVPRl9BUkcpOwogICAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTIzNCw3ICszMTEsNyBAQAogICAgIH0KIAogI2lmZGVmIFg4Nl9XSU42NAotICAvLyBlbnN1cmUgc3BhY2UgZm9yIHN0b3JpbmcgZm91ciByZWdpc3RlcnMKKyAgLyogZW5zdXJlIHNwYWNlIGZvciBzdG9yaW5nIGZvdXIgcmVnaXN0ZXJzICovCiAgIGNpZi0+Ynl0ZXMgKz0gNCAqIHNpemVvZihmZmlfYXJnKTsKICNlbmRpZgogCkBAIC0yNTIsNyArMzI5LDcgQEAKICNlbGlmIGRlZmluZWQoWDg2X1dJTjMyKQogZXh0ZXJuIHZvaWQKIGZmaV9jYWxsX3dpbjMyKHZvaWQgKCopKGNoYXIgKiwgZXh0ZW5kZWRfY2lmICopLCBleHRlbmRlZF9jaWYgKiwKLSAgICAgICAgICAgICAgIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQgKiwgdm9pZCAoKmZuKSh2b2lkKSk7CisgICAgICAgICAgICAgICB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLCB2b2lkICgqZm4pKHZvaWQpKTsKICNlbHNlCiBleHRlcm4gdm9pZCBmZmlfY2FsbF9TWVNWKHZvaWQgKCopKGNoYXIgKiwgZXh0ZW5kZWRfY2lmICopLCBleHRlbmRlZF9jaWYgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLCB2b2lkICgqZm4pKHZvaWQpKTsKQEAgLTI3OCw3ICszNTUsOCBAQAogICAgIH0KICNlbHNlCiAgIGlmIChydmFsdWUgPT0gTlVMTAotICAgICAgJiYgY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QpCisgICAgICAmJiAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QKKyAgICAgICAgICB8fCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX01TX1NUUlVDVCkpCiAgICAgewogICAgICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EoY2lmLT5ydHlwZS0+c2l6ZSk7CiAgICAgfQpAQCAtMjkxLDMzICszNjksNDQgQEAKICAgICB7CiAjaWZkZWYgWDg2X1dJTjY0CiAgICAgY2FzZSBGRklfV0lONjQ6Ci0gICAgICB7Ci0gICAgICAgIC8vIE1ha2UgY29waWVzIG9mIGFsbCBzdHJ1Y3QgYXJndW1lbnRzCi0gICAgICAgIC8vIE5PVEU6IG5vdCBzdXJlIGlmIHJlc3BvbnNpYmlsaXR5IHNob3VsZCBiZSBoZXJlIG9yIGluIGNhbGxlcgotICAgICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICAgICAgZm9yIChpPTA7IGkgPCBjaWYtPm5hcmdzO2krKykgewotICAgICAgICAgIHNpemVfdCBzaXplID0gY2lmLT5hcmdfdHlwZXNbaV0tPnNpemU7Ci0gICAgICAgICAgaWYgKChjaWYtPmFyZ190eXBlc1tpXS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgICAgICAgICAgICYmIChzaXplICE9IDEgJiYgc2l6ZSAhPSAyICYmIHNpemUgIT0gNCAmJiBzaXplICE9IDgpKQotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0gICAgICAgICAgICAgIHx8IGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUKLSNlbmRpZgotICAgICAgICAgICAgICApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHZvaWQgKmxvY2FsID0gYWxsb2NhKHNpemUpOwotICAgICAgICAgICAgICBtZW1jcHkobG9jYWwsIGF2YWx1ZVtpXSwgc2l6ZSk7Ci0gICAgICAgICAgICAgIGF2YWx1ZVtpXSA9IGxvY2FsOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZmaV9jYWxsX3dpbjY0KGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBjaWYtPmJ5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4pOwotICAgICAgfQorICAgICAgZmZpX2NhbGxfd2luNjQoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+Ynl0ZXMsCisgICAgICAgICAgICAgICAgICAgICBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4pOwogICAgICAgYnJlYWs7CiAjZWxpZiBkZWZpbmVkKFg4Nl9XSU4zMikKICAgICBjYXNlIEZGSV9TWVNWOgogICAgIGNhc2UgRkZJX1NURENBTEw6Ci0gICAgICBmZmlfY2FsbF93aW4zMihmZmlfcHJlcF9hcmdzLCAmZWNpZiwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywKLSAgICAgICAgICAgICAgICAgICAgIGVjaWYucnZhbHVlLCBmbik7CisgICAgY2FzZSBGRklfTVNfQ0RFQ0w6CisgICAgICBmZmlfY2FsbF93aW4zMihmZmlfcHJlcF9hcmdzLCAmZWNpZiwgY2lmLT5hYmksIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsCisJCSAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRkZJX1RISVNDQUxMOgorICAgIGNhc2UgRkZJX0ZBU1RDQUxMOgorICAgICAgeworCXVuc2lnbmVkIGludCBhYmkgPSBjaWYtPmFiaTsKKwl1bnNpZ25lZCBpbnQgaSwgcGFzc2VkX3JlZ3MgPSAwOworCisJaWYgKGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUKQorCSAgKytwYXNzZWRfcmVnczsKKworCWZvciAoaT0wOyBpIDwgY2lmLT5uYXJncyAmJiBwYXNzZWRfcmVncyA8IDI7aSsrKQorCSAgeworCSAgICBzaXplX3Qgc3o7CisKKwkgICAgaWYgKGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlID09IEZGSV9UWVBFX0ZMT0FUCisJICAgICAgICB8fCBjaWYtPmFyZ190eXBlc1tpXS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisJICAgICAgY29udGludWU7CisJICAgIHN6ID0gKGNpZi0+YXJnX3R5cGVzW2ldLT5zaXplICsgMykgJiB+MzsKKwkgICAgaWYgKHN6ID09IDAgfHwgc3ogPiA0KQorCSAgICAgIGNvbnRpbnVlOworCSAgICArK3Bhc3NlZF9yZWdzOworCSAgfQorCWlmIChwYXNzZWRfcmVncyA8IDIgJiYgYWJpID09IEZGSV9GQVNUQ0FMTCkKKwkgIGFiaSA9IEZGSV9USElTQ0FMTDsKKwlpZiAocGFzc2VkX3JlZ3MgPCAxICYmIGFiaSA9PSBGRklfVEhJU0NBTEwpCisJICBhYmkgPSBGRklfU1REQ0FMTDsKKyAgICAgICAgZmZpX2NhbGxfd2luMzIoZmZpX3ByZXBfYXJncywgJmVjaWYsIGFiaSwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICAgIH0KICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICBjYXNlIEZGSV9TWVNWOgpAQCAtMzQ1LDggKzQzNCwxMiBAQAogdm9pZCBGRklfSElEREVOIGZmaV9jbG9zdXJlX3Jhd19TWVNWIChmZmlfcmF3X2Nsb3N1cmUgKikKICAgICAgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0oMSkpKTsKICNpZmRlZiBYODZfV0lOMzIKK3ZvaWQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwgKGZmaV9yYXdfY2xvc3VyZSAqKQorICAgICBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgxKSkpOwogdm9pZCBGRklfSElEREVOIGZmaV9jbG9zdXJlX1NURENBTEwgKGZmaV9jbG9zdXJlICopCiAgICAgIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDEpKSk7Cit2b2lkIEZGSV9ISURERU4gZmZpX2Nsb3N1cmVfVEhJU0NBTEwgKGZmaV9jbG9zdXJlICopCisgICAgIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDEpKSk7CiAjZW5kaWYKICNpZmRlZiBYODZfV0lONjQKIHZvaWQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV93aW42NCAoZmZpX2Nsb3N1cmUgKik7CkBAIC00MjgsNyArNTIxLDggQEAKICAgICBhcmdwICs9IHNpemVvZih2b2lkICopOwogICB9CiAjZWxzZQotICBpZiAoIGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUICkgeworICBpZiAoIGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUCisgICAgICAgfHwgY2lmLT5mbGFncyA9PSBGRklfVFlQRV9NU19TVFJVQ1QgKSB7CiAgICAgKnJ2YWx1ZSA9ICoodm9pZCAqKikgYXJncDsKICAgICBhcmdwICs9IHNpemVvZih2b2lkICopOwogICB9CkBAIC01MDYsNiArNjAwLDMzIEBACiAgICAqKHVuc2lnbmVkIGludCopICAmX190cmFtcFs2XSA9IF9fZGlzOyAvKiBqbXAgX19mdW4gICovIFwKICB9CiAKKyNkZWZpbmUgRkZJX0lOSVRfVFJBTVBPTElORV9USElTQ0FMTChUUkFNUCxGVU4sQ1RYLFNJWkUpIFwKK3sgdW5zaWduZWQgY2hhciAqX190cmFtcCA9ICh1bnNpZ25lZCBjaGFyKikoVFJBTVApOyBcCisgICB1bnNpZ25lZCBpbnQgIF9fZnVuID0gKHVuc2lnbmVkIGludCkoRlVOKTsgXAorICAgdW5zaWduZWQgaW50ICBfX2N0eCA9ICh1bnNpZ25lZCBpbnQpKENUWCk7IFwKKyAgIHVuc2lnbmVkIGludCAgX19kaXMgPSBfX2Z1biAtIChfX2N0eCArIDQ5KTsgIFwKKyAgIHVuc2lnbmVkIHNob3J0IF9fc2l6ZSA9ICh1bnNpZ25lZCBzaG9ydCkoU0laRSk7IFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzBdID0gMHg4MzI0MDQ4YjsJLyogbW92ICglZXNwKSwgJWVheCAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFs0XSA9IDB4NGM4OTBjZWM7CS8qIHN1YiAkMTIsICVlc3AgKi8gXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbOF0gPSAweDA0ODkwNDI0OwkvKiBtb3YgJWVjeCwgNCglZXNwKSAqLyBcCisgICAqKHVuc2lnbmVkIGNoYXIqKSAmX190cmFtcFsxMl0gPSAweDI0OwkvKiBtb3YgJWVheCwgKCVlc3ApICovIFwKKyAgICoodW5zaWduZWQgY2hhciopICZfX3RyYW1wWzEzXSA9IDB4Yjg7IFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzE0XSA9IF9fc2l6ZTsJLyogbW92IF9fc2l6ZSwgJWVheCAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFsxOF0gPSAweDA4MjQ0YzhkOwkvKiBsZWEgOCglZXNwKSwgJWVjeCAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFsyMl0gPSAweDQ4MDJlOGMxOyAvKiBzaHIgJDIsICVlYXggOyBkZWMgJWVheCAqLyBcCisgICAqKHVuc2lnbmVkIHNob3J0KikgJl9fdHJhbXBbMjZdID0gMHgwYjc0OwkvKiBqeiAxZiAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFsyOF0gPSAweDg5MDg1MThiOwkvKiAyYjogbW92IDgoJWVjeCksICVlZHggKi8gXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbMzJdID0gMHgwNGMxODMxMTsgLyogbW92ICVlZHgsICglZWN4KSA7IGFkZCAkNCwgJWVjeCAqLyBcCisgICAqKHVuc2lnbmVkIGNoYXIqKSAmX190cmFtcFszNl0gPSAweDQ4OwkvKiBkZWMgJWVheCAqLyBcCisgICAqKHVuc2lnbmVkIHNob3J0KikgJl9fdHJhbXBbMzddID0gMHhmNTc1OwkvKiBqbnogMmIgOyAxZjogKi8gXAorICAgKih1bnNpZ25lZCBjaGFyKikgJl9fdHJhbXBbMzldID0gMHhiODsgXAorICAgKih1bnNpZ25lZCBpbnQqKSAgJl9fdHJhbXBbNDBdID0gX19jdHg7IC8qIG1vdmwgX19jdHgsICVlYXggKi8gXAorICAgKih1bnNpZ25lZCBjaGFyICopICAmX190cmFtcFs0NF0gPSAweGU4OyBcCisgICAqKHVuc2lnbmVkIGludCopICAmX190cmFtcFs0NV0gPSBfX2RpczsgLyogY2FsbCBfX2Z1biAgKi8gXAorICAgKih1bnNpZ25lZCBjaGFyKikgICZfX3RyYW1wWzQ5XSA9IDB4YzI7IC8qIHJldCAgKi8gXAorICAgKih1bnNpZ25lZCBzaG9ydCopICAmX190cmFtcFs1MF0gPSAoX19zaXplICsgOCk7IC8qIHJldCAoX19zaXplICsgOCkgICovIFwKKyB9CisKICNkZWZpbmUgRkZJX0lOSVRfVFJBTVBPTElORV9TVERDQUxMKFRSQU1QLEZVTixDVFgsU0laRSkgIFwKIHsgdW5zaWduZWQgY2hhciAqX190cmFtcCA9ICh1bnNpZ25lZCBjaGFyKikoVFJBTVApOyBcCiAgICB1bnNpZ25lZCBpbnQgIF9fZnVuID0gKHVuc2lnbmVkIGludCkoRlVOKTsgXApAQCAtNTQ4LDEyICs2NjksMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiljb2RlbG9jKTsKICAgICB9CiAjaWZkZWYgWDg2X1dJTjMyCisgIGVsc2UgaWYgKGNpZi0+YWJpID09IEZGSV9USElTQ0FMTCkKKyAgICB7CisgICAgICBGRklfSU5JVF9UUkFNUE9MSU5FX1RISVNDQUxMICgmY2xvc3VyZS0+dHJhbXBbMF0sCisJCQkJICAgICZmZmlfY2xvc3VyZV9USElTQ0FMTCwKKwkJCQkgICAgKHZvaWQqKWNvZGVsb2MsCisJCQkJICAgIGNpZi0+Ynl0ZXMpOworICAgIH0KICAgZWxzZSBpZiAoY2lmLT5hYmkgPT0gRkZJX1NURENBTEwpCiAgICAgewogICAgICAgRkZJX0lOSVRfVFJBTVBPTElORV9TVERDQUxMICgmY2xvc3VyZS0+dHJhbXBbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmZmlfY2xvc3VyZV9TVERDQUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopY29kZWxvYywgY2lmLT5ieXRlcyk7CiAgICAgfQorICBlbHNlIGlmIChjaWYtPmFiaSA9PSBGRklfTVNfQ0RFQ0wpCisgICAgeworICAgICAgRkZJX0lOSVRfVFJBTVBPTElORSAoJmNsb3N1cmUtPnRyYW1wWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZmaV9jbG9zdXJlX1NZU1YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopY29kZWxvYyk7CisgICAgfQogI2VuZGlmIC8qIFg4Nl9XSU4zMiAqLwogI2VuZGlmIC8qICFYODZfV0lONjQgKi8KICAgZWxzZQpAQCAtNTgyLDYgKzcxNiw5IEBACiAgIGludCBpOwogCiAgIGlmIChjaWYtPmFiaSAhPSBGRklfU1lTVikgeworI2lmZGVmIFg4Nl9XSU4zMgorICAgIGlmIChjaWYtPmFiaSAhPSBGRklfVEhJU0NBTEwpCisjZW5kaWYKICAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgIH0KIApAQCAtNTk2LDEwICs3MzMsMjAgQEAKICAgICAgIEZGSV9BU1NFUlQgKGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlICE9IEZGSV9UWVBFX0xPTkdET1VCTEUpOwogICAgIH0KICAgCi0KKyNpZmRlZiBYODZfV0lOMzIKKyAgaWYgKGNpZi0+YWJpID09IEZGSV9TWVNWKQorICAgIHsKKyNlbmRpZgogICBGRklfSU5JVF9UUkFNUE9MSU5FICgmY2xvc3VyZS0+dHJhbXBbMF0sICZmZmlfY2xvc3VyZV9yYXdfU1lTViwKICAgICAgICAgICAgICAgICAgICAgICAgY29kZWxvYyk7Ci0gICAgCisjaWZkZWYgWDg2X1dJTjMyCisgICAgfQorICBlbHNlIGlmIChjaWYtPmFiaSA9PSBGRklfVEhJU0NBTEwpCisgICAgeworICAgICAgRkZJX0lOSVRfVFJBTVBPTElORV9USElTQ0FMTCAoJmNsb3N1cmUtPnRyYW1wWzBdLCAmZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMLAorCQkJCSAgICBjb2RlbG9jLCBjaWYtPmJ5dGVzKTsKKyAgICB9CisjZW5kaWYKICAgY2xvc3VyZS0+Y2lmICA9IGNpZjsKICAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwogICBjbG9zdXJlLT5mdW4gID0gZnVuOwpAQCAtNjMwLDggKzc3Nyw5IEBACiAgIC8qIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3QgYW5kIHdlIGRvbid0IGhhdmUgYSByZXR1cm4gKi8KICAgLyogdmFsdWUgYWRkcmVzcyB0aGVuIHdlIG5lZWQgdG8gbWFrZSBvbmUgICAgICAgICAgICAgICAgICAgICAqLwogCi0gIGlmICgocnZhbHVlID09IE5VTEwpICYmIAotICAgICAgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKSkKKyAgaWYgKHJ2YWx1ZSA9PSBOVUxMCisgICAgICAmJiAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QKKyAgICAgICAgICB8fCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX01TX1NUUlVDVCkpCiAgICAgewogICAgICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EoY2lmLT5ydHlwZS0+c2l6ZSk7CiAgICAgfQpAQCAtNjQ0LDggKzc5MiwzOCBAQAogI2lmZGVmIFg4Nl9XSU4zMgogICAgIGNhc2UgRkZJX1NZU1Y6CiAgICAgY2FzZSBGRklfU1REQ0FMTDoKLSAgICAgIGZmaV9jYWxsX3dpbjMyKGZmaV9wcmVwX2FyZ3NfcmF3LCAmZWNpZiwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywKLSAgICAgICAgICAgICAgICAgICAgIGVjaWYucnZhbHVlLCBmbik7CisgICAgY2FzZSBGRklfTVNfQ0RFQ0w6CisgICAgICBmZmlfY2FsbF93aW4zMihmZmlfcHJlcF9hcmdzX3JhdywgJmVjaWYsIGNpZi0+YWJpLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLAorCQkgICAgIGVjaWYucnZhbHVlLCBmbik7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZGSV9USElTQ0FMTDoKKyAgICBjYXNlIEZGSV9GQVNUQ0FMTDoKKyAgICAgIHsKKwl1bnNpZ25lZCBpbnQgYWJpID0gY2lmLT5hYmk7CisJdW5zaWduZWQgaW50IGksIHBhc3NlZF9yZWdzID0gMDsKKworCWlmIChjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVCkKKwkgICsrcGFzc2VkX3JlZ3M7CisKKwlmb3IgKGk9MDsgaSA8IGNpZi0+bmFyZ3MgJiYgcGFzc2VkX3JlZ3MgPCAyO2krKykKKwkgIHsKKwkgICAgc2l6ZV90IHN6OworCisJICAgIGlmIChjaWYtPmFyZ190eXBlc1tpXS0+dHlwZSA9PSBGRklfVFlQRV9GTE9BVAorCSAgICAgICAgfHwgY2lmLT5hcmdfdHlwZXNbaV0tPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorCSAgICAgIGNvbnRpbnVlOworCSAgICBzeiA9IChjaWYtPmFyZ190eXBlc1tpXS0+c2l6ZSArIDMpICYgfjM7CisJICAgIGlmIChzeiA9PSAwIHx8IHN6ID4gNCkKKwkgICAgICBjb250aW51ZTsKKwkgICAgKytwYXNzZWRfcmVnczsKKwkgIH0KKwlpZiAocGFzc2VkX3JlZ3MgPCAyICYmIGFiaSA9PSBGRklfRkFTVENBTEwpCisJICBjaWYtPmFiaSA9IGFiaSA9IEZGSV9USElTQ0FMTDsKKwlpZiAocGFzc2VkX3JlZ3MgPCAxICYmIGFiaSA9PSBGRklfVEhJU0NBTEwpCisJICBjaWYtPmFiaSA9IGFiaSA9IEZGSV9TVERDQUxMOworICAgICAgICBmZmlfY2FsbF93aW4zMihmZmlfcHJlcF9hcmdzX3JhdywgJmVjaWYsIGFiaSwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICAgIH0KICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICBjYXNlIEZGSV9TWVNWOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaTY0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpNjQuYwppbmRleCAwN2EyNjI3Li4xZGFhMWMwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpNjQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpNjQuYwpAQCAtMSw3ICsxLDggQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmk2NC5jIC0gQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA3ICBCbyBUaG9yc2VuIDxib0BzdXNlLmRlPgotICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOCAgUmVkIEhhdCwgSW5jLgotICAgCisgICBmZmk2NC5jIC0gQ29weXJpZ2h0IChjKSAyMDAxMSAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMCAgUmVkIEhhdCwgSW5jLgorICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNyAgQm8gVGhvcnNlbiA8Ym9Ac3VzZS5kZT4KKyAgICAgICAgICAgICAKICAgIHg4Ni02NCBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0zNiwxMSArMzcsMTcgQEAKICNkZWZpbmUgTUFYX0dQUl9SRUdTIDYKICNkZWZpbmUgTUFYX1NTRV9SRUdTIDgKIAorI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKKyNkZWZpbmUgVUlOVDEyOCBfX20xMjgKKyNlbHNlCisjZGVmaW5lIFVJTlQxMjggX19pbnQxMjhfdAorI2VuZGlmCisKIHN0cnVjdCByZWdpc3Rlcl9hcmdzCiB7CiAgIC8qIFJlZ2lzdGVycyBmb3IgYXJndW1lbnQgcGFzc2luZy4gICovCiAgIFVJTlQ2NCBncHJbTUFYX0dQUl9SRUdTXTsKLSAgX19pbnQxMjhfdCBzc2VbTUFYX1NTRV9SRUdTXTsKKyAgVUlOVDEyOCBzc2VbTUFYX1NTRV9SRUdTXTsKIH07CiAKIGV4dGVybiB2b2lkIGZmaV9jYWxsX3VuaXg2NCAodm9pZCAqYXJncywgdW5zaWduZWQgbG9uZyBieXRlcywgdW5zaWduZWQgZmxhZ3MsCkBAIC0zNzgsNyArMzg1LDcgQEAKIAkgIGlmIChhbGlnbiA8IDgpCiAJICAgIGFsaWduID0gODsKIAotCSAgYnl0ZXMgPSBBTElHTihieXRlcywgYWxpZ24pOworCSAgYnl0ZXMgPSBBTElHTiAoYnl0ZXMsIGFsaWduKTsKIAkgIGJ5dGVzICs9IGNpZi0+YXJnX3R5cGVzW2ldLT5zaXplOwogCX0KICAgICAgIGVsc2UKQEAgLTM5MCw3ICszOTcsNyBAQAogICBpZiAoc3NlY291bnQpCiAgICAgZmxhZ3MgfD0gMSA8PCAxMTsKICAgY2lmLT5mbGFncyA9IGZsYWdzOwotICBjaWYtPmJ5dGVzID0gYnl0ZXM7CisgIGNpZi0+Ynl0ZXMgPSBBTElHTiAoYnl0ZXMsIDgpOwogCiAgIHJldHVybiBGRklfT0s7CiB9CkBAIC00MjYsNyArNDMzLDcgQEAKICAgLyogSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBwYXNzZWQgaW4gbWVtb3J5LCBhZGQgdGhlIHBvaW50ZXIgYXMgdGhlCiAgICAgIGZpcnN0IGludGVnZXIgYXJndW1lbnQuICAqLwogICBpZiAocmV0X2luX21lbW9yeSkKLSAgICByZWdfYXJncy0+Z3ByW2dwcmNvdW50KytdID0gKGxvbmcpIHJ2YWx1ZTsKKyAgICByZWdfYXJncy0+Z3ByW2dwcmNvdW50KytdID0gKHVuc2lnbmVkIGxvbmcpIHJ2YWx1ZTsKIAogICBhdm4gPSBjaWYtPm5hcmdzOwogICBhcmdfdHlwZXMgPSBjaWYtPmFyZ190eXBlczsKQEAgLTQ5OCwxMiArNTA1LDIxIEBACiB7CiAgIHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICp0cmFtcDsKIAorICAvKiBTYW5pdHkgY2hlY2sgb24gdGhlIGNpZiBBQkkuICAqLworICB7CisgICAgaW50IGFiaSA9IGNpZi0+YWJpOworICAgIGlmIChVTkxJS0VMWSAoISAoYWJpID4gRkZJX0ZJUlNUX0FCSSAmJiBhYmkgPCBGRklfTEFTVF9BQkkpKSkKKyAgICAgIHJldHVybiBGRklfQkFEX0FCSTsKKyAgfQorCiAgIHRyYW1wID0gKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICZjbG9zdXJlLT50cmFtcFswXTsKIAogICB0cmFtcFswXSA9IDB4YmI0OTsJCS8qIG1vdiA8Y29kZT4sICVyMTEJKi8KLSAgKih2b2lkICogdm9sYXRpbGUgKikgJnRyYW1wWzFdID0gZmZpX2Nsb3N1cmVfdW5peDY0OworICAqKCh1bnNpZ25lZCBsb25nIGxvbmcgKiB2b2xhdGlsZSkgJnRyYW1wWzFdKQorICAgID0gKHVuc2lnbmVkIGxvbmcpIGZmaV9jbG9zdXJlX3VuaXg2NDsKICAgdHJhbXBbNV0gPSAweGJhNDk7CQkvKiBtb3YgPGRhdGE+LCAlcjEwCSovCi0gICoodm9pZCAqIHZvbGF0aWxlICopICZ0cmFtcFs2XSA9IGNvZGVsb2M7CisgICooKHVuc2lnbmVkIGxvbmcgbG9uZyAqIHZvbGF0aWxlKSAmdHJhbXBbNl0pCisgICAgPSAodW5zaWduZWQgbG9uZykgY29kZWxvYzsKIAogICAvKiBTZXQgdGhlIGNhcnJ5IGJpdCBpZmYgdGhlIGZ1bmN0aW9uIHVzZXMgYW55IHNzZSByZWdpc3RlcnMuCiAgICAgIFRoaXMgaXMgY2xjIG9yIHN0YywgdG9nZXRoZXIgd2l0aCB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgam1wLiAgKi8KQEAgLTU0Miw3ICs1NTgsNyBAQAogCXsKIAkgIC8qIFRoZSByZXR1cm4gdmFsdWUgZ29lcyBpbiBtZW1vcnkuICBBcnJhbmdlIGZvciB0aGUgY2xvc3VyZQogCSAgICAgcmV0dXJuIHZhbHVlIHRvIGdvIGRpcmVjdGx5IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNhbGxlci4gICovCi0JICBydmFsdWUgPSAodm9pZCAqKSByZWdfYXJncy0+Z3ByW2dwcmNvdW50KytdOworCSAgcnZhbHVlID0gKHZvaWQgKikgKHVuc2lnbmVkIGxvbmcpIHJlZ19hcmdzLT5ncHJbZ3ByY291bnQrK107CiAJICAvKiBXZSBkb24ndCBoYXZlIHRvIGRvIGFueXRoaW5nIGluIGFzbSBmb3IgdGhlIHJldHVybi4gICovCiAJICByZXQgPSBGRklfVFlQRV9WT0lEOwogCX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZml0YXJnZXQuaAppbmRleCA4OWE4OTgzLi5mNDQyNjU0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaXRhcmdldC5oCkBAIC0xLDYgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMsIDIwMTAgIFJlZCBIYXQsIEluYy4KLSAgIENvcHlyaWdodCAoQykgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMywgMjAxMCAgUmVkIEhhdCwgSW5jLgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIHg4NiBhbmQgeDg2LTY0LgogCkBAIC0yOSw4ICszMCwxNSBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorLyogRm9yIGNvZGUgY29tbW9uIHRvIGFsbCBwbGF0Zm9ybXMgb24geDg2IGFuZCB4ODZfNjQuICovCisjZGVmaW5lIFg4Nl9BTlkKKwogI2lmIGRlZmluZWQgKFg4Nl82NCkgJiYgZGVmaW5lZCAoX19pMzg2X18pCiAjdW5kZWYgWDg2XzY0CiAjZGVmaW5lIFg4NgpAQCAtMzgsNyArNDYsNyBAQAogCiAjaWZkZWYgWDg2X1dJTjY0CiAjZGVmaW5lIEZGSV9TSVpFT0ZfQVJHIDgKLSNkZWZpbmUgVVNFX0JVSUxUSU5fRkZTIDAgLy8gbm90IHlldCBpbXBsZW1lbnRlZCBpbiBtaW5ndy02NCAKKyNkZWZpbmUgVVNFX0JVSUxUSU5fRkZTIDAgLyogbm90IHlldCBpbXBsZW1lbnRlZCBpbiBtaW5ndy02NCAqLwogI2VuZGlmCiAKIC8qIC0tLS0gR2VuZXJpYyB0eXBlIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC01Myw5ICs2MSwxNSBAQAogdHlwZWRlZiBsb25nIGxvbmcgICAgICAgICAgICAgIGZmaV9zYXJnOwogI2VuZGlmCiAjZWxzZQorI2lmIGRlZmluZWQgX194ODZfNjRfXyAmJiAhZGVmaW5lZCBfX0xQNjRfXworI2RlZmluZSBGRklfU0laRU9GX0FSRyA4Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgICAgZmZpX2FyZzsKK3R5cGVkZWYgbG9uZyBsb25nICAgICAgICAgICAgICBmZmlfc2FyZzsKKyNlbHNlCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKICNlbmRpZgorI2VuZGlmCiAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCkBAIC02NCwyOCArNzgsMzIgQEAKICNpZmRlZiBYODZfV0lOMzIKICAgRkZJX1NZU1YsCiAgIEZGSV9TVERDQUxMLAotICAvKiBUT0RPOiBBZGQgZmFzdGNhbGwgc3VwcG9ydCBmb3IgdGhlIHNha2Ugb2YgY29tcGxldGVuZXNzICovCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAorICBGRklfVEhJU0NBTEwsCisgIEZGSV9GQVNUQ0FMTCwKKyAgRkZJX01TX0NERUNMLAorICBGRklfTEFTVF9BQkksCisjaWZkZWYgX01TQ19WRVIKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX01TX0NERUNMCisjZWxzZQorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogI2VuZGlmCiAKLSNpZmRlZiBYODZfV0lONjQKKyNlbGlmIGRlZmluZWQoWDg2X1dJTjY0KQogICBGRklfV0lONjQsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9XSU42NCwKLSNlbHNlCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1dJTjY0CiAKKyNlbHNlCiAgIC8qIC0tLS0gSW50ZWwgeDg2IGFuZCBBTUQgeDg2LTY0IC0gKi8KLSNpZiAhZGVmaW5lZChYODZfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9fYW1kNjQpKQogICBGRklfU1lTViwKICAgRkZJX1VOSVg2NCwgICAvKiBVbml4IHZhcmlhbnRzIGFsbCB1c2UgdGhlIHNhbWUgQUJJIGZvciB4ODYtNjQgICovCisgIEZGSV9MQVNUX0FCSSwKICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9faTM4NikKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiAjZWxzZQotICBGRklfREVGQVVMVF9BQkkgPSBGRklfVU5JWDY0LAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfVU5JWDY0CiAjZW5kaWYKICNlbmRpZgotI2VuZGlmIC8qIFg4Nl9XSU42NCAqLwotCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKIH0gZmZpX2FiaTsKICNlbmRpZgogCkBAIC05NSwxMyArMTEzLDE0IEBACiAjZGVmaW5lIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQiAoRkZJX1RZUEVfTEFTVCArIDEpCiAjZGVmaW5lIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQiAoRkZJX1RZUEVfTEFTVCArIDIpCiAjZGVmaW5lIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QiAoRkZJX1RZUEVfTEFTVCArIDMpCisjZGVmaW5lIEZGSV9UWVBFX01TX1NUUlVDVCAgICAgICAoRkZJX1RZUEVfTEFTVCArIDQpCiAKICNpZiBkZWZpbmVkIChYODZfNjQpIHx8IChkZWZpbmVkIChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkIChYODZfREFSV0lOKSkKICNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAyNAogI2RlZmluZSBGRklfTkFUSVZFX1JBV19BUEkgMAogI2Vsc2UKICNpZmRlZiBYODZfV0lOMzIKLSNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAxMworI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDUyCiAjZWxzZQogI2lmZGVmIFg4Nl9XSU42NAogI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDI5CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvc3lzdi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3N5c3YuUwppbmRleCBmNGI2YzFlLi5mMTA4ZGQ4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvc3lzdi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9zeXN2LlMKQEAgLTEsNSArMSw1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk4LCAyMDAxLTIwMDMsIDIwMDUsIDIwMDggIFJlZCBIYXQsIEluYy4KKyAgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5NiwgMTk5OCwgMjAwMS0yMDAzLCAyMDA1LCAyMDA4LCAyMDEwICBSZWQgSGF0LCBJbmMuCiAgICAKICAgIFg4NiBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIApAQCAtNDgsNiArNDgsOSBAQAogCW1vdmwgIDE2KCVlYnApLCVlY3gKIAlzdWJsICAlZWN4LCVlc3AKIAorICAgICAgICAvKiBBbGlnbiB0aGUgc3RhY2sgcG9pbnRlciB0byAxNi1ieXRlcyAqLworICAgICAgICBhbmRsICAkMHhmZmZmZmZmMCwgJWVzcAorCiAJbW92bCAgJWVzcCwlZWF4CiAKIAkvKiBQbGFjZSBhbGwgb2YgdGhlIGZmaV9wcmVwX2FyZ3MgaW4gcG9zaXRpb24gICovCkBAIC0zMjUsMjMgKzMyOCw1MiBAQAogCS5zaXplCWZmaV9jbG9zdXJlX3Jhd19TWVNWLCAuLWZmaV9jbG9zdXJlX3Jhd19TWVNWCiAjZW5kaWYKIAorI2lmIGRlZmluZWQgX19QSUNfXworIyBpZiBkZWZpbmVkIF9fc3VuX18gJiYgZGVmaW5lZCBfX3N2cjRfXworLyogMzItYml0IFNvbGFyaXMgMi94ODYgdXNlcyBkYXRhcmVsIGVuY29kaW5nIGZvciBQSUMuICBHTlUgbGQgYmVmb3JlIDIuMjIKKyAgIGRvZXNuJ3QgY29ycmVjdGx5IHNvcnQgLmVoX2ZyYW1lX2hkciB3aXRoIG1peGVkIGVuY29kaW5ncywgc28gbWF0Y2ggdGhpcy4gICovCisjICBkZWZpbmUgRkRFX0VOQ09ESU5HCQkweDMwCS8qIGRhdGFyZWwgKi8KKyMgIGRlZmluZSBGREVfRU5DT0RFKFgpCQlYQEdPVE9GRgorIyBlbHNlCisjICBkZWZpbmUgRkRFX0VOQ09ESU5HCQkweDFiCS8qIHBjcmVsIHNkYXRhNCAqLworIyAgaWYgZGVmaW5lZCBIQVZFX0FTX1g4Nl9QQ1JFTAorIyAgIGRlZmluZSBGREVfRU5DT0RFKFgpCVgtLgorIyAgZWxzZQorIyAgIGRlZmluZSBGREVfRU5DT0RFKFgpCVhAcmVsCisjICBlbmRpZgorIyBlbmRpZgorI2Vsc2UKKyMgZGVmaW5lIEZERV9FTkNPRElORwkJMAkvKiBhYnNvbHV0ZSAqLworIyBkZWZpbmUgRkRFX0VOQ09ERShYKQkJWAorI2VuZGlmCisKIAkuc2VjdGlvbgkuZWhfZnJhbWUsRUhfRlJBTUVfRkxBR1MsQHByb2diaXRzCiAuTGZyYW1lMToKIAkubG9uZwkuTEVDSUUxLS5MU0NJRTEJLyogTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlvbiBFbnRyeSAqLwogLkxTQ0lFMToKIAkubG9uZwkweDAJLyogQ0lFIElkZW50aWZpZXIgVGFnICovCiAJLmJ5dGUJMHgxCS8qIENJRSBWZXJzaW9uICovCisjaWZkZWYgSEFWRV9BU19BU0NJSV9QU0VVRE9fT1AKICNpZmRlZiBfX1BJQ19fCiAJLmFzY2lpICJ6UlwwIgkvKiBDSUUgQXVnbWVudGF0aW9uICovCiAjZWxzZQogCS5hc2NpaSAiXDAiCS8qIENJRSBBdWdtZW50YXRpb24gKi8KICNlbmRpZgorI2VsaWYgZGVmaW5lZCBIQVZFX0FTX1NUUklOR19QU0VVRE9fT1AKKyNpZmRlZiBfX1BJQ19fCisJLnN0cmluZyAielIiCS8qIENJRSBBdWdtZW50YXRpb24gKi8KKyNlbHNlCisJLnN0cmluZyAiIgkvKiBDSUUgQXVnbWVudGF0aW9uICovCisjZW5kaWYKKyNlbHNlCisjZXJyb3IgbWlzc2luZyAuYXNjaWkvLnN0cmluZworI2VuZGlmCiAJLmJ5dGUJMHgxCS8qIC51bGViMTI4IDB4MTsgQ0lFIENvZGUgQWxpZ25tZW50IEZhY3RvciAqLwogCS5ieXRlCTB4N2MJLyogLnNsZWIxMjggLTQ7IENJRSBEYXRhIEFsaWdubWVudCBGYWN0b3IgKi8KIAkuYnl0ZQkweDgJLyogQ0lFIFJBIENvbHVtbiAqLwogI2lmZGVmIF9fUElDX18KIAkuYnl0ZQkweDEJLyogLnVsZWIxMjggMHgxOyBBdWdtZW50YXRpb24gc2l6ZSAqLwotCS5ieXRlCTB4MWIJLyogRkRFIEVuY29kaW5nIChwY3JlbCBzZGF0YTQpICovCisJLmJ5dGUJRkRFX0VOQ09ESU5HCiAjZW5kaWYKIAkuYnl0ZQkweGMJLyogRFdfQ0ZBX2RlZl9jZmEgKi8KIAkuYnl0ZQkweDQJLyogLnVsZWIxMjggMHg0ICovCkBAIC0zNTQsMTQgKzM4Niw4IEBACiAJLmxvbmcJLkxFRkRFMS0uTEFTRkRFMQkvKiBGREUgTGVuZ3RoICovCiAuTEFTRkRFMToKIAkubG9uZwkuTEFTRkRFMS0uTGZyYW1lMQkvKiBGREUgQ0lFIG9mZnNldCAqLwotI2lmIGRlZmluZWQgX19QSUNfXyAmJiBkZWZpbmVkIEhBVkVfQVNfWDg2X1BDUkVMCi0JLmxvbmcJLkxGQjEtLgkvKiBGREUgaW5pdGlhbCBsb2NhdGlvbiAqLwotI2VsaWYgZGVmaW5lZCBfX1BJQ19fCi0JLmxvbmcJLkxGQjFAcmVsCi0jZWxzZQotCS5sb25nCS5MRkIxCi0jZW5kaWYKLQkubG9uZwkuTEZFMS0uTEZCMQkvKiBGREUgYWRkcmVzcyByYW5nZSAqLworCS5sb25nCUZERV9FTkNPREUoLkxGQjEpCS8qIEZERSBpbml0aWFsIGxvY2F0aW9uICovCisJLmxvbmcJLkxGRTEtLkxGQjEJCS8qIEZERSBhZGRyZXNzIHJhbmdlICovCiAjaWZkZWYgX19QSUNfXwogCS5ieXRlCTB4MAkvKiAudWxlYjEyOCAweDA7IEF1Z21lbnRhdGlvbiBzaXplICovCiAjZW5kaWYKQEAgLTM4MSwxNCArNDA3LDggQEAKIAkubG9uZwkuTEVGREUyLS5MQVNGREUyCS8qIEZERSBMZW5ndGggKi8KIC5MQVNGREUyOgogCS5sb25nCS5MQVNGREUyLS5MZnJhbWUxCS8qIEZERSBDSUUgb2Zmc2V0ICovCi0jaWYgZGVmaW5lZCBfX1BJQ19fICYmIGRlZmluZWQgSEFWRV9BU19YODZfUENSRUwKLQkubG9uZwkuTEZCMi0uCS8qIEZERSBpbml0aWFsIGxvY2F0aW9uICovCi0jZWxpZiBkZWZpbmVkIF9fUElDX18KLQkubG9uZwkuTEZCMkByZWwKLSNlbHNlCi0JLmxvbmcJLkxGQjIKLSNlbmRpZgotCS5sb25nCS5MRkUyLS5MRkIyCS8qIEZERSBhZGRyZXNzIHJhbmdlICovCisJLmxvbmcJRkRFX0VOQ09ERSguTEZCMikJLyogRkRFIGluaXRpYWwgbG9jYXRpb24gKi8KKwkubG9uZwkuTEZFMi0uTEZCMgkJLyogRkRFIGFkZHJlc3MgcmFuZ2UgKi8KICNpZmRlZiBfX1BJQ19fCiAJLmJ5dGUJMHgwCS8qIC51bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUgKi8KICNlbmRpZgpAQCAtNDE3LDE0ICs0MzcsOCBAQAogCS5sb25nCS5MRUZERTMtLkxBU0ZERTMJLyogRkRFIExlbmd0aCAqLwogLkxBU0ZERTM6CiAJLmxvbmcJLkxBU0ZERTMtLkxmcmFtZTEJLyogRkRFIENJRSBvZmZzZXQgKi8KLSNpZiBkZWZpbmVkIF9fUElDX18gJiYgZGVmaW5lZCBIQVZFX0FTX1g4Nl9QQ1JFTAotCS5sb25nCS5MRkIzLS4JLyogRkRFIGluaXRpYWwgbG9jYXRpb24gKi8KLSNlbGlmIGRlZmluZWQgX19QSUNfXwotCS5sb25nCS5MRkIzQHJlbAotI2Vsc2UKLQkubG9uZwkuTEZCMwotI2VuZGlmCi0JLmxvbmcJLkxGRTMtLkxGQjMJLyogRkRFIGFkZHJlc3MgcmFuZ2UgKi8KKwkubG9uZwlGREVfRU5DT0RFKC5MRkIzKQkvKiBGREUgaW5pdGlhbCBsb2NhdGlvbiAqLworCS5sb25nCS5MRkUzLS5MRkIzCQkvKiBGREUgYWRkcmVzcyByYW5nZSAqLwogI2lmZGVmIF9fUElDX18KIAkuYnl0ZQkweDAJLyogLnVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZSAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvdW5peDY0LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvdW5peDY0LlMKaW5kZXggZmUzZjRmZC4uN2E2NjE5YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3VuaXg2NC5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni91bml4NjQuUwpAQCAtMzI0LDcgKzMyNCwxMSBAQAogLkxVVzk6CiAJLnNpemUJZmZpX2Nsb3N1cmVfdW5peDY0LC4tZmZpX2Nsb3N1cmVfdW5peDY0CiAKKyNpZmRlZiBIQVZFX0FTX1g4Nl82NF9VTldJTkRfU0VDVElPTl9UWVBFCisJLnNlY3Rpb24JLmVoX2ZyYW1lLCJhIixAdW53aW5kCisjZWxzZQogCS5zZWN0aW9uCS5laF9mcmFtZSwiYSIsQHByb2diaXRzCisjZW5kaWYKIC5MZnJhbWUxOgogCS5sb25nCS5MRUNJRTEtLkxTQ0lFMQkJLyogQ0lFIExlbmd0aCAqLwogLkxTQ0lFMToKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni93aW4zMi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjMyLlMKaW5kZXggYWMxZWQ2Zi4uMjRiN2JiZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjMyLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjMyLlMKQEAgLTQ1LDYgKzQ1LDcgQEAKIGZmaV9jYWxsX3dpbjMyIFBST0MgTkVBUiwKICAgICBmZmlfcHJlcF9hcmdzIDogTkVBUiBQVFIgRFdPUkQsCiAgICAgZWNpZiAgICAgICAgICA6IE5FQVIgUFRSIERXT1JELAorICAgIGNpZl9hYmkgICAgICAgOiBEV09SRCwKICAgICBjaWZfYnl0ZXMgICAgIDogRFdPUkQsCiAgICAgY2lmX2ZsYWdzICAgICA6IERXT1JELAogICAgIHJ2YWx1ZSAgICAgICAgOiBORUFSIFBUUiBEV09SRCwKQEAgLTY0LDYgKzY1LDE5IEBACiAgICAgICAgIDs7IFJldHVybiBzdGFjayB0byBwcmV2aW91cyBzdGF0ZSBhbmQgY2FsbCB0aGUgZnVuY3Rpb24KICAgICAgICAgYWRkICBlc3AsIDgKIAorCTs7IEhhbmRsZSB0aGlzY2FsbCBhbmQgZmFzdGNhbGwKKwljbXAgY2lmX2FiaSwgMyA7OyBGRklfVEhJU0NBTEwKKwlqeiBkb190aGlzY2FsbAorCWNtcCBjaWZfYWJpLCA0IDs7IEZGSV9GQVNUQ0FMTAorCWpueiBkb19zdGRjYWxsCisJbW92IGVjeCwgRFdPUkQgUFRSIFtlc3BdCisJbW92IGVkeCwgRFdPUkQgUFRSIFtlc3ArNF0KKwlhZGQgZXNwLCA4CisJam1wIGRvX3N0ZGNhbGwKK2RvX3RoaXNjYWxsOgorCW1vdiBlY3gsIERXT1JEIFBUUiBbZXNwXQorCWFkZCBlc3AsIDQKK2RvX3N0ZGNhbGw6CiAgICAgICAgIGNhbGwgZm4KIAogICAgICAgICA7OyBjZGVjbDogICB3ZSByZXN0b3JlIGVzcCBpbiB0aGUgZXBpbG9ndWUsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0bwpAQCAtOTQsMzEgKzEwOCwzNyBAQAogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0ZmxvYXQgICAgICAgOzsgRkZJX1RZUEVfRkxPQVQKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGRvdWJsZSAgICAgIDs7IEZGSV9UWVBFX0RPVUJMRQogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0bG9uZ2RvdWJsZSAgOzsgRkZJX1RZUEVfTE9OR0RPVUJMRQotICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKLSAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY2FfcmV0dWludDggICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNhX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjYV9yZXR1aW50MTYgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNhX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfU0lOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjYV9lcGlsb2d1ZSAgICAgICA7OyBGRklfVFlQRV9TVFJVQ1QKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1BPSU5URVIKLSAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgotICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCisgICAgICAgIGRkIG9mZnNldCBjYV9yZXRzdHJ1Y3QxYiAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKKyAgICAgICAgZGQgb2Zmc2V0IGNhX3JldHN0cnVjdDJiICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCCisgICAgICAgIGRkIG9mZnNldCBjYV9lcGlsb2d1ZSAgICAgICA7OyBGRklfVFlQRV9NU19TVFJVQ1QKIAotY2FfcmV0aW50ODoKLSAgICAgICAgOzsgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3YgICBlY3gsIHJ2YWx1ZQotICAgICAgICBtb3YgICBbZWN4ICsgMF0sIGFsCi0gICAgICAgIGptcCAgIGNhX2VwaWxvZ3VlCisgICAgICAgIC8qIFNpZ24vemVybyBleHRlbmQgYXMgYXBwcm9wcmlhdGUuICAqLworY2FfcmV0dWludDg6CisgICAgICAgIG1vdnp4IGVheCwgYWwKKyAgICAgICAgam1wICAgY2FfcmV0aW50CiAKLWNhX3JldGludDE2OgotICAgICAgICA7OyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdiAgIGVjeCwgcnZhbHVlCi0gICAgICAgIG1vdiAgIFtlY3ggKyAwXSwgYXgKLSAgICAgICAgam1wICAgY2FfZXBpbG9ndWUKK2NhX3JldHNpbnQ4OgorICAgICAgICBtb3ZzeCBlYXgsIGFsCisgICAgICAgIGptcCAgIGNhX3JldGludAorCitjYV9yZXR1aW50MTY6CisgICAgICAgIG1vdnp4IGVheCwgYXgKKyAgICAgICAgam1wICAgY2FfcmV0aW50CisKK2NhX3JldHNpbnQxNjoKKyAgICAgICAgbW92c3ggZWF4LCBheAorICAgICAgICBqbXAgICBjYV9yZXRpbnQKIAogY2FfcmV0aW50OgogICAgICAgICA7OyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCkBAIC0xNTEsMTEgKzE3MSwzMSBAQAogICAgICAgICBmc3RwICBUQllURSBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY2FfZXBpbG9ndWUKIAorY2FfcmV0c3RydWN0MWI6CisgICAgICAgIDs7IExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKKyAgICAgICAgbW92ICAgZWN4LCBydmFsdWUKKyAgICAgICAgbW92ICAgW2VjeCArIDBdLCBhbAorICAgICAgICBqbXAgICBjYV9lcGlsb2d1ZQorCitjYV9yZXRzdHJ1Y3QyYjoKKyAgICAgICAgOzsgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQorICAgICAgICBtb3YgICBlY3gsIHJ2YWx1ZQorICAgICAgICBtb3YgICBbZWN4ICsgMF0sIGF4CisgICAgICAgIGptcCAgIGNhX2VwaWxvZ3VlCisKIGNhX2VwaWxvZ3VlOgogICAgICAgICA7OyBFcGlsb2d1ZSBjb2RlIGlzIGF1dG9nZW5lcmF0ZWQuCiAgICAgICAgIHJldAogZmZpX2NhbGxfd2luMzIgRU5EUAogCitmZmlfY2xvc3VyZV9USElTQ0FMTCBQUk9DIE5FQVIgRk9SQ0VGUkFNRQorCXN1Ygllc3AsIDQwCisJbGVhCWVkeCwgW2VicCAtMjRdCisJbW92CVtlYnAgLSAxMl0sIGVkeAkvKiByZXNwICovCisJbGVhCWVkeCwgW2VicCArIDEyXSAgLyogYWNjb3VudCBmb3Igc3R1YiByZXR1cm4gYWRkcmVzcyBvbiBzdGFjayAqLworCWptcAlzdHViCitmZmlfY2xvc3VyZV9USElTQ0FMTCBFTkRQCisKIGZmaV9jbG9zdXJlX1NZU1YgUFJPQyBORUFSIEZPUkNFRlJBTUUKICAgICA7OyB0aGUgZmZpX2Nsb3N1cmUgY3R4IGlzIHBhc3NlZCBpbiBlYXggYnkgdGhlIHRyYW1wb2xpbmUuCiAKQEAgLTE2Myw2ICsyMDMsNyBAQAogICAgICAgICBsZWEgIGVkeCwgW2VicCAtIDI0XQogICAgICAgICBtb3YgIFtlYnAgLSAxMl0sIGVkeCAgICAgICAgIDs7IHJlc3AKICAgICAgICAgbGVhICBlZHgsIFtlYnAgKyA4XQorc3R1Yjo6CiAgICAgICAgIG1vdiAgW2VzcCArIDhdLCBlZHggICAgICAgICAgOzsgYXJncwogICAgICAgICBsZWEgIGVkeCwgW2VicCAtIDEyXQogICAgICAgICBtb3YgIFtlc3AgKyA0XSwgZWR4ICAgICAgICAgIDs7ICZyZXNwCkBAIC0xNzksMjYgKzIyMCwzNSBAQAogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0ZmxvYXQgICAgICAgOzsgRkZJX1RZUEVfRkxPQVQKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGRvdWJsZSAgICAgIDs7IEZGSV9UWVBFX0RPVUJMRQogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0bG9uZ2RvdWJsZSAgOzsgRkZJX1RZUEVfTE9OR0RPVUJMRQotICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKLSAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY3NfcmV0dWludDggICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjc19yZXR1aW50MTYgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfU0lOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRzdHJ1Y3QgICAgICA7OyBGRklfVFlQRV9TVFJVQ1QKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1BPSU5URVIKLSAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgotICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCisgICAgICAgIGRkIG9mZnNldCBjc19yZXRzaW50OCAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCCisgICAgICAgIGRkIG9mZnNldCBjc19yZXRtc3N0cnVjdCAgICA7OyBGRklfVFlQRV9NU19TVFJVQ1QKIAotY3NfcmV0aW50ODoKLSAgICAgICAgbW92ICAgYWwsIFtlY3hdCitjc19yZXR1aW50ODoKKyAgICAgICAgbW92enggZWF4LCBCWVRFIFBUUiBbZWN4XQogICAgICAgICBqbXAgICBjc19lcGlsb2d1ZQogCi1jc19yZXRpbnQxNjoKLSAgICAgICAgbW92ICAgYXgsIFtlY3hdCitjc19yZXRzaW50ODoKKyAgICAgICAgbW92c3ggZWF4LCBCWVRFIFBUUiBbZWN4XQorICAgICAgICBqbXAgICBjc19lcGlsb2d1ZQorCitjc19yZXR1aW50MTY6CisgICAgICAgIG1vdnp4IGVheCwgV09SRCBQVFIgW2VjeF0KKyAgICAgICAgam1wICAgY3NfZXBpbG9ndWUKKworY3NfcmV0c2ludDE2OgorICAgICAgICBtb3ZzeCBlYXgsIFdPUkQgUFRSIFtlY3hdCiAgICAgICAgIGptcCAgIGNzX2VwaWxvZ3VlCiAKIGNzX3JldGludDoKQEAgLTIyNyw2ICsyNzcsMTIgQEAKICAgICAgICAgOzsgRXBpbG9ndWUgY29kZSBpcyBhdXRvZ2VuZXJhdGVkLgogICAgICAgICByZXQJNAogCitjc19yZXRtc3N0cnVjdDoKKyAgICAgICAgOzsgQ2FsbGVyIGV4cGVjdHMgdXMgdG8gcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcmVhbCByZXR1cm4gdmFsdWUuCisgICAgICAgIG1vdiAgIGVheCwgZWN4CisgICAgICAgIDs7IENhbGxlciBkb2Vzbid0IGV4cGVjdHMgdXMgdG8gcG9wIHN0cnVjdCByZXR1cm4gdmFsdWUgcG9pbnRlciBoaWRkZW4gYXJnLgorICAgICAgICBqbXAgICBjc19lcGlsb2d1ZQorCiBjc19lcGlsb2d1ZToKICAgICAgICAgOzsgRXBpbG9ndWUgY29kZSBpcyBhdXRvZ2VuZXJhdGVkLgogICAgICAgICByZXQKQEAgLTIzOSw3ICsyOTUsMTYgQEAKICNkZWZpbmUgUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVCAoUkFXX0NMT1NVUkVfRlVOX09GRlNFVCArIDQpCiAjZGVmaW5lIENJRl9GTEFHU19PRkZTRVQgMjAKIAotZmZpX2Nsb3N1cmVfcmF3X1NZU1YgUFJPQyBORUFSIFVTRVMgZXNpCitmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwgUFJPQyBORUFSIFVTRVMgZXNpIEZPUkNFRlJBTUUKKwlzdWIgZXNwLCAzNgorCW1vdiAgZXNpLCBbZWF4ICsgUkFXX0NMT1NVUkVfQ0lGX09GRlNFVF0gICAgICAgIDs7IGNsb3N1cmUtPmNpZgorCW1vdiAgZWR4LCBbZWF4ICsgUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVF0gIDs7IGNsb3N1cmUtPnVzZXJfZGF0YQorCW1vdiBbZXNwICsgMTJdLCBlZHgKKwlsZWEgZWR4LCBbZWJwICsgMTJdCisJam1wIHN0dWJyYXcKK2ZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCBFTkRQCisKK2ZmaV9jbG9zdXJlX3Jhd19TWVNWIFBST0MgTkVBUiBVU0VTIGVzaSBGT1JDRUZSQU1FCiAgICAgOzsgdGhlIGZmaV9jbG9zdXJlIGN0eCBpcyBwYXNzZWQgaW4gZWF4IGJ5IHRoZSB0cmFtcG9saW5lLgogCiAgICAgICAgIHN1YiAgZXNwLCA0MApAQCAtMjQ3LDYgKzMxMiw3IEBACiAgICAgICAgIG1vdiAgZWR4LCBbZWF4ICsgUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVF0gIDs7IGNsb3N1cmUtPnVzZXJfZGF0YQogICAgICAgICBtb3YgIFtlc3AgKyAxMl0sIGVkeCAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB1c2VyX2RhdGEKICAgICAgICAgbGVhICBlZHgsIFtlYnAgKyA4XQorc3R1YnJhdzo6CiAgICAgICAgIG1vdiAgW2VzcCArIDhdLCBlZHggICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHJhd19hcmdzCiAgICAgICAgIGxlYSAgZWR4LCBbZWJwIC0gMjRdCiAgICAgICAgIG1vdiAgW2VzcCArIDRdLCBlZHggICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7ICZyZXMKQEAgLTI2NCwyNiArMzMwLDM1IEBACiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRmbG9hdCAgICAgICA7OyBGRklfVFlQRV9GTE9BVAogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0ZG91YmxlICAgICAgOzsgRkZJX1RZUEVfRE9VQkxFCiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRsb25nZG91YmxlICA7OyBGRklfVFlQRV9MT05HRE9VQkxFCi0gICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9VSU5UOAotICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgotICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CisgICAgICAgIGRkIG9mZnNldCBjcl9yZXR1aW50OCAgICAgICA7OyBGRklfVFlQRV9VSU5UOAorICAgICAgICBkZCBvZmZzZXQgY3JfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNyX3JldHVpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY3JfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9VSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfVUlOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9TSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNyX2VwaWxvZ3VlICAgICAgIDs7IEZGSV9UWVBFX1NUUlVDVAogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfUE9JTlRFUgotICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCi0gICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKKyAgICAgICAgZGQgb2Zmc2V0IGNyX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgorICAgICAgICBkZCBvZmZzZXQgY3JfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIKKyAgICAgICAgZGQgb2Zmc2V0IGNyX2VwaWxvZ3VlICAgICAgIDs7IEZGSV9UWVBFX01TX1NUUlVDVAogCi1jcl9yZXRpbnQ4OgotICAgICAgICBtb3YgICBhbCwgW2VjeF0KK2NyX3JldHVpbnQ4OgorICAgICAgICBtb3Z6eCBlYXgsIEJZVEUgUFRSIFtlY3hdCiAgICAgICAgIGptcCAgIGNyX2VwaWxvZ3VlCiAKLWNyX3JldGludDE2OgotICAgICAgICBtb3YgICBheCwgW2VjeF0KK2NyX3JldHNpbnQ4OgorICAgICAgICBtb3ZzeCBlYXgsIEJZVEUgUFRSIFtlY3hdCisgICAgICAgIGptcCAgIGNyX2VwaWxvZ3VlCisKK2NyX3JldHVpbnQxNjoKKyAgICAgICAgbW92enggZWF4LCBXT1JEIFBUUiBbZWN4XQorICAgICAgICBqbXAgICBjcl9lcGlsb2d1ZQorCitjcl9yZXRzaW50MTY6CisgICAgICAgIG1vdnN4IGVheCwgV09SRCBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY3JfZXBpbG9ndWUKIAogY3JfcmV0aW50OgpAQCAtMzM3LDI2ICs0MTIsMzQgQEAKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGZsb2F0ICAgICAgIDs7IEZGSV9UWVBFX0ZMT0FUCiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRkb3VibGUgICAgICA7OyBGRklfVFlQRV9ET1VCTEUKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGxvbmdkb3VibGUgIDs7IEZGSV9UWVBFX0xPTkdET1VCTEUKLSAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TSU5UOAotICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2Ci0gICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNkX3JldHVpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjZF9yZXRzaW50OCAgICAgICA7OyBGRklfVFlQRV9TSU5UOAorICAgICAgICBkZCBvZmZzZXQgY2RfcmV0dWludDE2ICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2CisgICAgICAgIGRkIG9mZnNldCBjZF9yZXRzaW50MTYgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1VJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9VSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY2RfZXBpbG9ndWUgICAgICAgOzsgRkZJX1RZUEVfU1RSVUNUCiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9QT0lOVEVSCi0gICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKLSAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgorICAgICAgICBkZCBvZmZzZXQgY2RfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCisgICAgICAgIGRkIG9mZnNldCBjZF9yZXRzaW50MTYgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QgogCi1jZF9yZXRpbnQ4OgotICAgICAgICBtb3YgICBhbCwgW2VjeF0KK2NkX3JldHVpbnQ4OgorICAgICAgICBtb3Z6eCBlYXgsIEJZVEUgUFRSIFtlY3hdCiAgICAgICAgIGptcCAgIGNkX2VwaWxvZ3VlCiAKLWNkX3JldGludDE2OgotICAgICAgICBtb3YgICBheCwgW2VjeF0KK2NkX3JldHNpbnQ4OgorICAgICAgICBtb3ZzeCBlYXgsIEJZVEUgUFRSIFtlY3hdCisgICAgICAgIGptcCAgIGNkX2VwaWxvZ3VlCisKK2NkX3JldHVpbnQxNjoKKyAgICAgICAgbW92enggZWF4LCBXT1JEIFBUUiBbZWN4XQorICAgICAgICBqbXAgICBjZF9lcGlsb2d1ZQorCitjZF9yZXRzaW50MTY6CisgICAgICAgIG1vdnN4IGVheCwgV09SRCBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY2RfZXBpbG9ndWUKIAogY2RfcmV0aW50OgpAQCAtMzk1LDcgKzQ3OCw5IEBACiAgICAgICAgICMgVGhpcyBhc3N1bWVzIHdlIGFyZSB1c2luZyBnYXMuCiAgICAgICAgIC5iYWxpZ24gMTYKIAkuZ2xvYmwJX2ZmaV9jYWxsX3dpbjMyCisjaWZuZGVmIF9fT1MyX18KIAkuZGVmCV9mZmlfY2FsbF93aW4zMjsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKIF9mZmlfY2FsbF93aW4zMjoKIC5MRkIxOgogICAgICAgICBwdXNobCAlZWJwCkBAIC00MDMsNyArNDg4LDcgQEAKICAgICAgICAgbW92bCAgJWVzcCwlZWJwCiAuTENGSTE6CiAgICAgICAgICMgTWFrZSByb29tIGZvciBhbGwgb2YgdGhlIG5ldyBhcmdzLgotICAgICAgICBtb3ZsICAxNiglZWJwKSwlZWN4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgbW92bCAgMjAoJWVicCksJWVjeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgIHN1YmwgICVlY3gsJWVzcAogIAogICAgICAgICBtb3ZsICAlZXNwLCVlYXgKQEAgLTQxNSwxOSArNTAwLDM0IEBACiAgCiAgICAgICAgICMgUmV0dXJuIHN0YWNrIHRvIHByZXZpb3VzIHN0YXRlIGFuZCBjYWxsIHRoZSBmdW5jdGlvbgogICAgICAgICBhZGRsICAkOCwlZXNwCi0gCisKKwkjIEhhbmRsZSBmYXN0Y2FsbCBhbmQgdGhpc2NhbGwKKwljbXBsICQzLCAxNiglZWJwKSAgIyBGRklfVEhJU0NBTEwKKwlqeiAuZG9fdGhpc2NhbGwKKwljbXBsICQ0LCAxNiglZWJwKSAjIEZGSV9GQVNUQ0FMTAorCWpueiAuZG9fZm5jYWxsCisJbW92bCAoJWVzcCksICVlY3gKKwltb3ZsIDQoJWVzcCksICVlZHgKKwlhZGRsICQ4LCAlZXNwCisJam1wIC5kb19mbmNhbGwKKy5kb190aGlzY2FsbDoKKwltb3ZsICglZXNwKSwgJWVjeAorCWFkZGwgJDQsICVlc3AKKworLmRvX2ZuY2FsbDoKKwkgCiAgICAgICAgICMgRklYTUU6IEFsaWduIHRoZSBzdGFjayB0byBhIDEyOC1iaXQgYm91bmRhcnkgdG8gYXZvaWQKICAgICAgICAgIyBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaGl0cy4KIAotICAgICAgICBjYWxsICAqMjgoJWVicCkKKyAgICAgICAgY2FsbCAgKjMyKCVlYnApCiAgCiAgICAgICAgICMgc3RkY2FsbCBmdW5jdGlvbnMgcG9wIGFyZ3VtZW50cyBvZmYgdGhlIHN0YWNrIHRoZW1zZWx2ZXMKIAogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSByZXR1cm4gdHlwZSBjb2RlCi0gICAgICAgIG1vdmwgIDIwKCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAogIAogICAgICAgICAjIElmIHRoZSByZXR1cm4gdmFsdWUgcG9pbnRlciBpcyBOVUxMLCBhc3N1bWUgbm8gcmV0dXJuIHZhbHVlLgotICAgICAgICBjbXBsICAkMCwyNCglZWJwKQorICAgICAgICBjbXBsICAkMCwyOCglZWJwKQogICAgICAgICBqbmUgICAwZgogIAogICAgICAgICAjIEV2ZW4gaWYgdGhlcmUgaXMgbm8gc3BhY2UgZm9yIHRoZSByZXR1cm4gdmFsdWUsIHdlIGFyZQpAQCAtNDYwLDYgKzU2MCw3IEBACiAJLmxvbmcJLkxyZXRzdHJ1Y3QxYgkJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCICovCiAJLmxvbmcJLkxyZXRzdHJ1Y3QyYgkJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCICovCiAJLmxvbmcJLkxyZXRzdHJ1Y3Q0YgkJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCICovCisJLmxvbmcJLkxyZXRzdHJ1Y3QJCS8qIEZGSV9UWVBFX01TX1NUUlVDVCAqLwogMToKIAlhZGQJJWVjeCwgJWVjeAogCWFkZAklZWN4LCAlZWN4CkBAIC00ODYsNTAgKzU4Nyw1MCBAQAogCiAuTHJldGludDoKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBtb3ZsICAlZWF4LDAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogIAogLkxyZXRmbG9hdDoKICAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgZnN0cHMgKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKICAKIC5McmV0ZG91YmxlOgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIGZzdHBsICglZWN4KQogICAgICAgICBqbXAgICAuTGVwaWxvZ3VlCiAgCiAuTHJldGxvbmdkb3VibGU6CiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgZnN0cHQgKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKICAKIC5McmV0aW50NjQ6CiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgbW92bCAgJWVheCwwKCVlY3gpCiAgICAgICAgIG1vdmwgICVlZHgsNCglZWN4KQogCWptcCAgIC5MZXBpbG9ndWUKIAogLkxyZXRzdHJ1Y3QxYjoKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBtb3ZiICAlYWwsMCglZWN4KQogICAgICAgICBqbXAgICAuTGVwaWxvZ3VlCiAgCiAuTHJldHN0cnVjdDJiOgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIG1vdncgICVheCwwKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKIAogLkxyZXRzdHJ1Y3Q0YjoKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBtb3ZsICAlZWF4LDAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogCkBAIC01NDIsMTIgKzY0MywyNyBAQAogICAgICAgICBwb3BsICVlYnAKICAgICAgICAgcmV0CiAuZmZpX2NhbGxfd2luMzJfZW5kOgorICAgICAgICAuYmFsaWduIDE2CisJLmdsb2JsCV9mZmlfY2xvc3VyZV9USElTQ0FMTAorI2lmbmRlZiBfX09TMl9fCisJLmRlZglfZmZpX2Nsb3N1cmVfVEhJU0NBTEw7CS5zY2wJMjsJLnR5cGUJMzI7CS5lbmRlZgorI2VuZGlmCitfZmZpX2Nsb3N1cmVfVEhJU0NBTEw6CisJcHVzaGwJJWVicAorCW1vdmwJJWVzcCwgJWVicAorCXN1YmwJJDQwLCAlZXNwCisJbGVhbAktMjQoJWVicCksICVlZHgKKwltb3ZsCSVlZHgsIC0xMiglZWJwKQkvKiByZXNwICovCisJbGVhbAkxMiglZWJwKSwgJWVkeCAgLyogYWNjb3VudCBmb3Igc3R1YiByZXR1cm4gYWRkcmVzcyBvbiBzdGFjayAqLworCWptcAkuc3R1YgogLkxGRTE6CiAKICAgICAgICAgIyBUaGlzIGFzc3VtZXMgd2UgYXJlIHVzaW5nIGdhcy4KICAgICAgICAgLmJhbGlnbiAxNgogCS5nbG9ibAlfZmZpX2Nsb3N1cmVfU1lTVgorI2lmbmRlZiBfX09TMl9fCiAJLmRlZglfZmZpX2Nsb3N1cmVfU1lTVjsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKIF9mZmlfY2xvc3VyZV9TWVNWOgogLkxGQjM6CiAJcHVzaGwJJWVicApAQCAtNTU4LDYgKzY3NCw3IEBACiAJbGVhbAktMjQoJWVicCksICVlZHgKIAltb3ZsCSVlZHgsIC0xMiglZWJwKQkvKiByZXNwICovCiAJbGVhbAk4KCVlYnApLCAlZWR4Cisuc3R1YjoKIAltb3ZsCSVlZHgsIDQoJWVzcCkJLyogYXJncyA9IF9fYnVpbHRpbl9kd2FyZl9jZmEgKCkgKi8KIAlsZWFsCS0xMiglZWJwKSwgJWVkeAogCW1vdmwJJWVkeCwgKCVlc3ApCS8qICZyZXNwICovCkBAIC01ODYsNiArNzAzLDcgQEAKIAkubG9uZwkuTGNsc19yZXRzdHJ1Y3QxCS8qIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQiAqLwogCS5sb25nCS5MY2xzX3JldHN0cnVjdDIJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCICovCiAJLmxvbmcJLkxjbHNfcmV0c3RydWN0NAkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIgKi8KKwkubG9uZwkuTGNsc19yZXRtc3N0cnVjdAkvKiBGRklfVFlQRV9NU19TVFJVQ1QgKi8KIAogMToKIAlhZGQJJWVheCwgJWVheApAQCAtNjUwLDYgKzc2OCwxMiBAQAogCXBvcGwJJWVicAogCXJldAkkMHg0CiAKKy5MY2xzX3JldG1zc3RydWN0OgorCSMgQ2FsbGVyIGV4cGVjdHMgdXMgdG8gcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcmVhbCByZXR1cm4gdmFsdWUuCisJbW92CSVlY3gsICVlYXgKKwkjIENhbGxlciBkb2Vzbid0IGV4cGVjdHMgdXMgdG8gcG9wIHN0cnVjdCByZXR1cm4gdmFsdWUgcG9pbnRlciBoaWRkZW4gYXJnLgorCWptcAkuTGNsc19lcGlsb2d1ZQorCiAuTGNsc19ub3JldHZhbDoKIC5MY2xzX2VwaWxvZ3VlOgogCW1vdmwJJWVicCwgJWVzcApAQCAtNjY0LDExICs3ODgsMjcgQEAKICNkZWZpbmUgUkFXX0NMT1NVUkVfRlVOX09GRlNFVCAoUkFXX0NMT1NVUkVfQ0lGX09GRlNFVCArIDQpCiAjZGVmaW5lIFJBV19DTE9TVVJFX1VTRVJfREFUQV9PRkZTRVQgKFJBV19DTE9TVVJFX0ZVTl9PRkZTRVQgKyA0KQogI2RlZmluZSBDSUZfRkxBR1NfT0ZGU0VUIDIwCi0KKyAgICAgICAgLmJhbGlnbiAxNgorCS5nbG9ibAlfZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMCisjaWZuZGVmIF9fT1MyX18KKwkuZGVmCV9mZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEw7CS5zY2wJMjsJLnR5cGUJMzI7CS5lbmRlZgorI2VuZGlmCitfZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMOgorCXB1c2hsCSVlYnAKKwltb3ZsCSVlc3AsICVlYnAKKwlwdXNobAklZXNpCisJc3VibAkkMzYsICVlc3AKKwltb3ZsCVJBV19DTE9TVVJFX0NJRl9PRkZTRVQoJWVheCksICVlc2kJIC8qIGNsb3N1cmUtPmNpZiAqLworCW1vdmwJUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVCglZWF4KSwgJWVkeCAvKiBjbG9zdXJlLT51c2VyX2RhdGEgKi8KKwltb3ZsCSVlZHgsIDEyKCVlc3ApCS8qIHVzZXJfZGF0YSAqLworCWxlYWwJMTIoJWVicCksICVlZHgJLyogX19idWlsdGluX2R3YXJmX2NmYSAoKSAqLworCWptcAkuc3R1YnJhdwogICAgICAgICAjIFRoaXMgYXNzdW1lcyB3ZSBhcmUgdXNpbmcgZ2FzLgogICAgICAgICAuYmFsaWduIDE2CiAJLmdsb2JsCV9mZmlfY2xvc3VyZV9yYXdfU1lTVgorI2lmbmRlZiBfX09TMl9fCiAJLmRlZglfZmZpX2Nsb3N1cmVfcmF3X1NZU1Y7CS5zY2wJMjsJLnR5cGUJMzI7CS5lbmRlZgorI2VuZGlmCiBfZmZpX2Nsb3N1cmVfcmF3X1NZU1Y6CiAuTEZCNDoKIAlwdXNobAklZWJwCkBAIC02ODIsNiArODIyLDcgQEAKIAltb3ZsCVJBV19DTE9TVVJFX1VTRVJfREFUQV9PRkZTRVQoJWVheCksICVlZHggLyogY2xvc3VyZS0+dXNlcl9kYXRhICovCiAJbW92bAklZWR4LCAxMiglZXNwKQkvKiB1c2VyX2RhdGEgKi8KIAlsZWFsCTgoJWVicCksICVlZHgJLyogX19idWlsdGluX2R3YXJmX2NmYSAoKSAqLworLnN0dWJyYXc6CiAJbW92bAklZWR4LCA4KCVlc3ApCS8qIHJhd19hcmdzICovCiAJbGVhbAktMjQoJWVicCksICVlZHgKIAltb3ZsCSVlZHgsIDQoJWVzcCkJLyogJnJlcyAqLwpAQCAtNzEwLDYgKzg1MSw3IEBACiAJLmxvbmcJLkxyY2xzX3JldHN0cnVjdDEJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCICovCiAJLmxvbmcJLkxyY2xzX3JldHN0cnVjdDIJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCICovCiAJLmxvbmcJLkxyY2xzX3JldHN0cnVjdDQJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCICovCisJLmxvbmcJLkxyY2xzX3JldHN0cnVjdAkvKiBGRklfVFlQRV9NU19TVFJVQ1QgKi8KIDE6CiAJYWRkCSVlYXgsICVlYXgKIAlhZGQJJWVheCwgJWVheApAQCAtNzg0LDcgKzkyNiw5IEBACiAgICAgICAgICMgVGhpcyBhc3N1bWVzIHdlIGFyZSB1c2luZyBnYXMuCiAJLmJhbGlnbgkxNgogCS5nbG9ibAlfZmZpX2Nsb3N1cmVfU1REQ0FMTAorI2lmbmRlZiBfX09TMl9fCiAJLmRlZglfZmZpX2Nsb3N1cmVfU1REQ0FMTDsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKIF9mZmlfY2xvc3VyZV9TVERDQUxMOgogLkxGQjU6CiAJcHVzaGwJJWVicApAQCAtODkwLDcgKzEwMzQsOSBAQAogLmZmaV9jbG9zdXJlX1NURENBTExfZW5kOgogLkxGRTU6CiAKKyNpZm5kZWYgX19PUzJfXwogCS5zZWN0aW9uCS5laF9mcmFtZSwidyIKKyNlbmRpZgogLkxmcmFtZTE6CiAuTFNDSUUxOgogCS5sb25nCS5MRUNJRTEtLkxBU0NJRTEgIC8qIExlbmd0aCBvZiBDb21tb24gSW5mb3JtYXRpb24gRW50cnkgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni93aW42NC5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjY0LlMKaW5kZXggNmU5MTgxOC4uZmNkYjI3MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjY0LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjY0LlMKQEAgLTIzMiwxMCArMjMyLDE4IEBACiBmZmlfY2FsbF93aW42NCBFTkRQCiBfVEVYVAlFTkRTCiBFTkQKLSNlbHNlICAgICAgICAKKworI2Vsc2UKKworI2lmZGVmIFNZTUJPTF9VTkRFUlNDT1JFCisjZGVmaW5lIFNZTUJPTF9OQU1FKG5hbWUpIF8jI25hbWUKKyNlbHNlCisjZGVmaW5lIFNZTUJPTF9OQU1FKG5hbWUpIG5hbWUKKyNlbmRpZgorCiAudGV4dAogCi0uZXh0ZXJuIF9mZmlfY2xvc3VyZV93aW42NF9pbm5lcgorLmV4dGVybiBTWU1CT0xfTkFNRShmZmlfY2xvc3VyZV93aW42NF9pbm5lcikKIAogIyBmZmlfY2xvc3VyZV93aW42NCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZXNlIHJlZ2lzdGVycyBzZXQ6CiAjICAgIHJheCBwb2ludHMgdG8gJ2Nsb3N1cmUnCkBAIC0yNDYsOCArMjU0LDggQEAKICMgY2FsbCBmZmlfY2xvc3VyZV93aW42NF9pbm5lciBmb3IgdGhlIGFjdHVhbCB3b3JrLCB0aGVuIHJldHVybiB0aGUgcmVzdWx0LgogIyAKIAkuYmFsaWduIDE2Ci0gICAgICAgIC5nbG9ibCBfZmZpX2Nsb3N1cmVfd2luNjQJCi1fZmZpX2Nsb3N1cmVfd2luNjQ6ICAgICAKKyAgICAgICAgLmdsb2JsIFNZTUJPTF9OQU1FKGZmaV9jbG9zdXJlX3dpbjY0KQorU1lNQk9MX05BTUUoZmZpX2Nsb3N1cmVfd2luNjQpOgogCSMgY29weSByZWdpc3RlciBhcmd1bWVudHMgb250byBzdGFjawogCXRlc3QJJDEsJXIxMQogCWpuZQkuTGZpcnN0X2lzX2Zsb2F0CQpAQCAtMjg3LDcgKzI5NSw3IEBACiAJbW92CSVyYXgsICVyY3gJIyBjb250ZXh0IGlzIGZpcnN0IHBhcmFtZXRlcgogCW1vdgklcnNwLCAlcmR4CSMgc3RhY2sgaXMgc2Vjb25kIHBhcmFtZXRlcgogCWFkZAkkNDgsICVyZHgJIyBwb2ludCB0byBzdGFydCBvZiBhcmd1bWVudHMKLQltb3YJJF9mZmlfY2xvc3VyZV93aW42NF9pbm5lciwgJXJheAorCW1vdgkkU1lNQk9MX05BTUUoZmZpX2Nsb3N1cmVfd2luNjRfaW5uZXIpLCAlcmF4CiAJY2FsbHEJKiVyYXgJCSMgY2FsbCB0aGUgcmVhbCBjbG9zdXJlIGZ1bmN0aW9uCiAJYWRkCSQ0MCwgJXJzcAogCW1vdnEJJXJheCwgJXhtbTAJIyBJZiB0aGUgY2xvc3VyZSByZXR1cm5lZCBhIGZsb2F0LApAQCAtMjk2LDggKzMwNCw4IEBACiAuZmZpX2Nsb3N1cmVfd2luNjRfZW5kOgogCiAJLmJhbGlnbiAxNgotICAgICAgICAuZ2xvYmwJX2ZmaV9jYWxsX3dpbjY0Ci1fZmZpX2NhbGxfd2luNjQ6ICAgICAgICAKKyAgICAgICAgLmdsb2JsCVNZTUJPTF9OQU1FKGZmaV9jYWxsX3dpbjY0KQorU1lNQk9MX05BTUUoZmZpX2NhbGxfd2luNjQpOgogICAgICAgICAjIGNvcHkgcmVnaXN0ZXJzIG9udG8gc3RhY2sKIAltb3YJJXI5LDMyKCVyc3ApCiAJbW92CSVyOCwyNCglcnNwKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQppbmRleCBlYWUzZDc0Li4xNDZmZGY5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQpAQCAtMTUsNjYgKzE1LDcxIEBACiAKIENMRUFORklMRVMgPSAqLmV4ZSBjb3JlKiAqLmxvZyAqLnN1bQogCi1FWFRSQV9ESVNUID0gbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHAJXAotbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdF9mZmlfY2FsbC5jYyBsaWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0LmNjIFwKLWxpYmZmaS5zcGVjaWFsL2ZmaXRlc3RjeHguaCBjb25maWcvZGVmYXVsdC5leHAgbGliL3RhcmdldC1saWJwYXRoLmV4cCBcCi1saWIvbGliZmZpLWRnLmV4cCBsaWIvd3JhcHBlci5leHAgbGliZmZpLmNhbGwvZmxvYXQuYyBcCi1saWJmZmkuY2FsbC9jbHNfbXVsdGlfc2NoYXIuYyBsaWJmZmkuY2FsbC9mbG9hdDMuYyBcCi1saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jIGxpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jIFwKLWxpYmZmaS5jYWxsL3Byb21vdGlvbi5jIGxpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMS5jIFwKLWxpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMgbGliZmZpLmNhbGwvY2xzX2Zsb2F0LmMgXAotbGliZmZpLmNhbGwvY2xzXzJieXRlLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjQuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwyLmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYyBcCi1saWJmZmkuY2FsbC9jbHNfdWludC5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYyBcCi1saWJmZmkuY2FsbC9mbG9hdDEuYyBsaWJmZmkuY2FsbC9jbHNfMTlieXRlLmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYyBsaWJmZmkuY2FsbC9jbHNfNGJ5dGUuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwxLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMgXAotbGliZmZpLmNhbGwvc3RydWN0Ny5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMgXAotbGliZmZpLmNhbGwvY2xzX3NzaG9ydC5jIGxpYmZmaS5jYWxsL2Nsc191bG9uZ2xvbmcuYyBcCi1saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91Y2hhci5jIFwKLWxpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMgbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDYuYyBsaWJmZmkuY2FsbC9yZXR1cm5fdWMuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGwxLmMgXAotbGliZmZpLmNhbGwvY2xzX3VzaG9ydC5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYyBcCi1saWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0Y2hhci5jIGxpYmZmaS5jYWxsL3JldHVybl9kYmwyLmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9sb2NfZm4wLmMgbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYyBsaWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYwlcCi1saWJmZmkuY2FsbC9yZXR1cm5fbGwuYyBsaWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jIFwKLWxpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMgbGliZmZpLmNhbGwvcmV0dXJuX2RibDEuYyBcCi1saWJmZmkuY2FsbC9jYWxsLmV4cCBsaWJmZmkuY2FsbC9mZml0ZXN0LmggbGliZmZpLmNhbGwvc3RybGVuLmMJXAotbGliZmZpLmNhbGwvcmV0dXJuX3NsLmMgbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3QxLmMgbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jIGxpYmZmaS5jYWxsL3JldHVybl91bC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19kb3VibGUuYyBsaWJmZmkuY2FsbC9tYW55X3dpbjMyLmMgXAotbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYwlcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMgbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jCVwKLWxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnRjaGFyLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydC5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jIGxpYmZmaS5jYWxsL3JldHVybl9mbC5jIFwKLWxpYmZmaS5jYWxsL3N0cmxlbl93aW4zMi5jIGxpYmZmaS5jYWxsL3JldHVybl9sZGwuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYyBsaWJmZmkuY2FsbC9zdHJ1Y3QzLmMgXAotbGliZmZpLmNhbGwvY2xzX3VjaGFyLmMgbGliZmZpLmNhbGwvY2xzX3NpbnQuYyBsaWJmZmkuY2FsbC9mbG9hdDIuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydC5jIFwKLWxpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMgbGliZmZpLmNhbGwvY2xzXzVieXRlLmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2RibC5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYyBcCi1saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYyBsaWJmZmkuY2FsbC9weW9iamMtdGMuYwlcCi1saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMgXAotbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMgbGliZmZpLmNhbGwvY2xzX3NjaGFyLmMgXAotbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4zLmMgXAotbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjIuYwlcCi1saWJmZmkuY2FsbC9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwzLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jCVwKLWxpYmZmaS5jYWxsL3Byb2JsZW0xLmMgbGliZmZpLmNhbGwvZmxvYXQ0LmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jIGxpYmZmaS5jYWxsL3N0cnVjdDkuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX2ZuNS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX2ZuMC5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm42LmMgXAotbGliZmZpLmNhbGwvc3RydWN0NC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMgXAotbGliZmZpLmNhbGwvY2xzXzZieXRlLmMgbGliZmZpLmNhbGwvY2xzXzdieXRlLmMgbGliZmZpLmNhbGwvbWFueS5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDguYyBsaWJmZmkuY2FsbC9uZWdpbnQuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q1LmMgXAotbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYyBcCi1saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYyBcCitFWFRSQV9ESVNUID0gY29uZmlnL2RlZmF1bHQuZXhwIGxpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfbG9jX2ZuMC5jIFwKK2xpYmZmaS5jYWxsL2Nsc19zY2hhci5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4xLmMgXAorbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fdWwuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMgbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvZmZpdGVzdC5oIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydC5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDMuYyBsaWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMgXAorbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jIGxpYmZmaS5jYWxsL3N0cnVjdDguYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnQuYyBcCitsaWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMgbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmMgXAorbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYyBsaWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYyBcCitsaWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYyBcCitsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc2NoYXIuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMgXAorbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMgbGliZmZpLmNhbGwvY2FsbC5leHAgXAorbGliZmZpLmNhbGwvY2xzX2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYyBcCitsaWJmZmkuY2FsbC9jbHNfdWludC5jIGxpYmZmaS5jYWxsL3JldHVybl9sbDEuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9mbjQuYyBsaWJmZmkuY2FsbC9jbHNfdWNoYXIuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvY2xzXzdieXRlLmMgbGliZmZpLmNhbGwvc3RybGVuLmMgXAorbGliZmZpLmNhbGwvbWFueS5jIGxpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsLmMgXAorbGliZmZpLmNhbGwvc3RydWN0NS5jIGxpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0Y2hhci5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jIGxpYmZmaS5jYWxsL3JldHVybl9kYmwyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2ZsMy5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMgbGliZmZpLmNhbGwvYS5vdXQgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9mbjMuYyBsaWJmZmkuY2FsbC9mbG9hdDMuYyBsaWJmZmkuY2FsbC9tYW55Mi5jIFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYyBcCitsaWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjYuYyBcCitsaWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4yLmMgXAorbGliZmZpLmNhbGwvY2xzX3NzaG9ydC5jIGxpYmZmaS5jYWxsL21hbnlfd2luMzIuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VjaGFyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX3VjLmMgbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jIFwKK2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfOGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9wcm9tb3Rpb24uYyBsaWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2RibC5jIGxpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvY2xzXzZieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jIGxpYmZmaS5jYWxsL2Zsb2F0LmMgXAorbGliZmZpLmNhbGwvZmxvYXQxLmMgbGliZmZpLmNhbGwvZmxvYXRfdmEuYyBsaWJmZmkuY2FsbC9uZWdpbnQuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMS5jIGxpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsMS5jIFwKIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxMC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMgXAotbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYworbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jIFwKK2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jIGxpYmZmaS5jYWxsL3JldHVybl9zbC5jIFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm4wLmMgbGliZmZpLmNhbGwvY2xzXzVieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzXzJieXRlLmMgbGliZmZpLmNhbGwvZmxvYXQyLmMgXAorbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMgbGliZmZpLmNhbGwvY2xzX3NpbnQuYyBcCitsaWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jIGxpYmZmaS5jYWxsL2Nsc191bG9uZ2xvbmcuYyBcCitsaWJmZmkuY2FsbC9jbHNfdXNob3J0LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYyBcCitsaWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jIGxpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMgXAorbGliZmZpLmNhbGwvY2xzX2Zsb2F0LmMgbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyBcCitsaWJmZmkuY2FsbC9weW9iamMtdGMuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0Y2hhci5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDEuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jIFwKK2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMgbGliZmZpLmNhbGwvcHJvYmxlbTEuYyBsaWJmZmkuY2FsbC9mbG9hdDQuYyBcCitsaWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGRsLmMgXAorbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm41LmMgXAorbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jIGxpYmZmaS5jYWxsL3N0cnVjdDYuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fbGwuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q5LmMgbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMgXAorbGliZmZpLmNhbGwvc3RydWN0Ny5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYyBcCitsaWJmZmkuY2FsbC9jbHNfNGJ5dGUuYyBsaWJmZmkuY2FsbC9zdHJsZW5fd2luMzIuYyBcCitsaWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYyBsaWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYyBcCitsaWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0LmNjIGxpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwIFwKK2xpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3RfZmZpX2NhbGwuY2MgbGliZmZpLnNwZWNpYWwvZmZpdGVzdGN4eC5oIFwKK2xpYi93cmFwcGVyLmV4cCBsaWIvdGFyZ2V0LWxpYnBhdGguZXhwIGxpYi9saWJmZmkuZXhwCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmluCmluZGV4IDY5OGM0NjEuLjRjZjQwY2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmluCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmluCkBAIC0xLDkgKzEsOSBAQAotIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMSBmcm9tIE1ha2VmaWxlLmFtLgorIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMS4zIGZyb20gTWFrZWZpbGUuYW0uCiAjIEBjb25maWd1cmVfaW5wdXRACiAKICMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAotIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0jIEluYy4KKyMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KQEAgLTUzLDYgKzUzLDcgQEAKIEFDTE9DQUwgPSBAQUNMT0NBTEAKIEFMTE9DQSA9IEBBTExPQ0FACiBBTVRBUiA9IEBBTVRBUkAKK0FNX0xUTERGTEFHUyA9IEBBTV9MVExERkxBR1NACiBBTV9SVU5URVNURkxBR1MgPSAKIEFSID0gQEFSQAogQVVUT0NPTkYgPSBAQVVUT0NPTkZACkBAIC03MCw2ICs3MSw3IEBACiBDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAogREVGUyA9IEBERUZTQAogREVQRElSID0gQERFUERJUkAKK0RMTFRPT0wgPSBARExMVE9PTEAKIERTWU1VVElMID0gQERTWU1VVElMQAogRFVNUEJJTiA9IEBEVU1QQklOQAogRUNIT19DID0gQEVDSE9fQ0AKQEAgLTc3LDYgKzc5LDcgQEAKIEVDSE9fVCA9IEBFQ0hPX1RACiBFR1JFUCA9IEBFR1JFUEAKIEVYRUVYVCA9IEBFWEVFWFRACitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFID0gQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVACiBGR1JFUCA9IEBGR1JFUEAKIEdSRVAgPSBAR1JFUEAKIEhBVkVfTE9OR19ET1VCTEUgPSBASEFWRV9MT05HX0RPVUJMRUAKQEAgLTk1LDYgKzk4LDcgQEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAorTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQAogTUtESVJfUCA9IEBNS0RJUl9QQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQApAQCAtMTA3LDYgKzExMSw3IEBACiBQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAogUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACiBQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAorUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACiBQQUNLQUdFX1ZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAogUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JACiBSQU5MSUIgPSBAUkFOTElCQApAQCAtMTIxLDYgKzEyNiw3IEBACiBhYnNfc3JjZGlyID0gQGFic19zcmNkaXJACiBhYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACiBhYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKK2FjX2N0X0FSID0gQGFjX2N0X0FSQAogYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACiBhY19jdF9EVU1QQklOID0gQGFjX2N0X0RVTVBCSU5ACiBhbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKQEAgLTE1Myw3ICsxNTksNiBAQAogbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAogbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKIGxvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKLWx0X0VDSE8gPSBAbHRfRUNIT0AKIG1hbmRpciA9IEBtYW5kaXJACiBta2Rpcl9wID0gQG1rZGlyX3BACiBvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACkBAIC0xODcsNjkgKzE5Miw3NCBAQAogCSAgICBlbHNlIGVjaG8gcnVudGVzdDsgZmlgCiAKIENMRUFORklMRVMgPSAqLmV4ZSBjb3JlKiAqLmxvZyAqLnN1bQotRVhUUkFfRElTVCA9IGxpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCVwKLWxpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3RfZmZpX2NhbGwuY2MgbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdC5jYyBcCi1saWJmZmkuc3BlY2lhbC9mZml0ZXN0Y3h4LmggY29uZmlnL2RlZmF1bHQuZXhwIGxpYi90YXJnZXQtbGlicGF0aC5leHAgXAotbGliL2xpYmZmaS1kZy5leHAgbGliL3dyYXBwZXIuZXhwIGxpYmZmaS5jYWxsL2Zsb2F0LmMgXAotbGliZmZpLmNhbGwvY2xzX211bHRpX3NjaGFyLmMgbGliZmZpLmNhbGwvZmxvYXQzLmMgXAotbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYyBsaWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYyBcCi1saWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYyBcCi1saWJmZmkuY2FsbC9wcm9tb3Rpb24uYyBsaWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjEuYyBcCi1saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19mbG9hdC5jIFwKLWxpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm40LmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2ZsMi5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMgXAotbGliZmZpLmNhbGwvY2xzX3VpbnQuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMgXAotbGliZmZpLmNhbGwvZmxvYXQxLmMgbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMgbGliZmZpLmNhbGwvY2xzXzRieXRlLmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2ZsMS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDcuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jIFwKLWxpYmZmaS5jYWxsL2Nsc19zc2hvcnQuYyBsaWJmZmkuY2FsbC9jbHNfdWxvbmdsb25nLmMgXAotbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdWNoYXIuYyBcCi1saWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jIGxpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q2LmMgbGliZmZpLmNhbGwvcmV0dXJuX3VjLmMgbGliZmZpLmNhbGwvcmV0dXJuX2xsMS5jIFwKLWxpYmZmaS5jYWxsL2Nsc191c2hvcnQuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMgXAotbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydGNoYXIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMi5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfbG9jX2ZuMC5jIGxpYmZmaS5jYWxsL3JldHVybl9zYy5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMgbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmMJXAotbGliZmZpLmNhbGwvcmV0dXJuX2xsLmMgbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYyBcCi1saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jIGxpYmZmaS5jYWxsL3JldHVybl9kYmwxLmMgXAotbGliZmZpLmNhbGwvY2FsbC5leHAgbGliZmZpLmNhbGwvZmZpdGVzdC5oIGxpYmZmaS5jYWxsL3N0cmxlbi5jCVwKLWxpYmZmaS5jYWxsL3JldHVybl9zbC5jIGxpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMgXAotbGliZmZpLmNhbGwvc3RydWN0MS5jIGxpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYyBsaWJmZmkuY2FsbC9yZXR1cm5fdWwuYyBcCi1saWJmZmkuY2FsbC9jbHNfZG91YmxlLmMgbGliZmZpLmNhbGwvbWFueV93aW4zMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMJXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jIGxpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYwlcCi1saWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0Y2hhci5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnQuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwuYyBcCi1saWJmZmkuY2FsbC9zdHJsZW5fd2luMzIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGRsLmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMgbGliZmZpLmNhbGwvc3RydWN0My5jIFwKLWxpYmZmaS5jYWxsL2Nsc191Y2hhci5jIGxpYmZmaS5jYWxsL2Nsc19zaW50LmMgbGliZmZpLmNhbGwvZmxvYXQyLmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYyBcCi1saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnQuYyBcCi1saWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jIGxpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9kYmwuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlLmMgXAotbGliZmZpLmNhbGwvY2xzXzhieXRlLmMgbGliZmZpLmNhbGwvcHlvYmpjLXRjLmMJXAotbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jIFwKLWxpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19zY2hhci5jIFwKLWxpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMy5jIFwKLWxpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4yLmMJXAotbGliZmZpLmNhbGwvc3RydWN0Mi5jIGxpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2ZsMy5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYwlcCi1saWJmZmkuY2FsbC9wcm9ibGVtMS5jIGxpYmZmaS5jYWxsL2Zsb2F0NC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q5LmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9mbjUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9mbjAuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNi5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jIFwKLWxpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jIGxpYmZmaS5jYWxsL21hbnkuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q4LmMgbGliZmZpLmNhbGwvbmVnaW50LmMgbGliZmZpLmNhbGwvc3RydWN0NS5jIFwKLWxpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMgXAotbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMgXAorRVhUUkFfRElTVCA9IGNvbmZpZy9kZWZhdWx0LmV4cCBsaWJmZmkuY2FsbC9jbHNfMTlieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2xvY19mbjAuYyBcCitsaWJmZmkuY2FsbC9jbHNfc2NoYXIuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMS5jIFwKK2xpYmZmaS5jYWxsL21hbnkyX3dpbjMyLmMgbGliZmZpLmNhbGwvcmV0dXJuX3VsLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jIGxpYmZmaS5jYWxsL3JldHVybl9mbDIuYyBcCitsaWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jIGxpYmZmaS5jYWxsL2ZmaXRlc3QuaCBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnQuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QzLmMgbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jIFwKK2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q4LmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0LmMgXAorbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jIGxpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMgbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMgXAorbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMgXAorbGliZmZpLmNhbGwvY2xzX211bHRpX3NjaGFyLmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL2NhbGwuZXhwIFwKK2xpYmZmaS5jYWxsL2Nsc19kb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMgXAorbGliZmZpLmNhbGwvY2xzX3VpbnQuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGwxLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jIFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm40LmMgbGliZmZpLmNhbGwvY2xzX3VjaGFyLmMgXAorbGliZmZpLmNhbGwvc3RydWN0Mi5jIGxpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jIGxpYmZmaS5jYWxsL3N0cmxlbi5jIFwKK2xpYmZmaS5jYWxsL21hbnkuYyBsaWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jIGxpYmZmaS5jYWxsL3JldHVybl9mbC5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDUuYyBsaWJmZmkuY2FsbC9jbHNfMTJieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydGNoYXIuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMi5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9mbDMuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jIGxpYmZmaS5jYWxsL2Eub3V0IFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm4zLmMgbGliZmZpLmNhbGwvZmxvYXQzLmMgbGliZmZpLmNhbGwvbWFueTIuYyBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMgXAorbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm42LmMgXAorbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19zc2hvcnQuYyBsaWJmZmkuY2FsbC9tYW55X3dpbjMyLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91Y2hhci5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl91Yy5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYyBcCitsaWJmZmkuY2FsbC9jbHNfMThieXRlLmMgbGliZmZpLmNhbGwvY2xzXzhieXRlLmMgXAorbGliZmZpLmNhbGwvcHJvbW90aW9uLmMgbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9kYmwuYyBsaWJmZmkuY2FsbC9jbHNfMjRieXRlLmMgXAorbGliZmZpLmNhbGwvc3RydWN0NC5jIGxpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYyBsaWJmZmkuY2FsbC9mbG9hdC5jIFwKK2xpYmZmaS5jYWxsL2Zsb2F0MS5jIGxpYmZmaS5jYWxsL2Zsb2F0X3ZhLmMgbGliZmZpLmNhbGwvbmVnaW50LmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2RibDEuYyBsaWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jIGxpYmZmaS5jYWxsL3JldHVybl9mbDEuYyBcCiBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NS5jIFwKLWxpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMKK2xpYmZmaS5jYWxsL2Zhc3R0aGlzMV93aW4zMi5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYyBcCitsaWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fc2wuYyBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMC5jIGxpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jIGxpYmZmaS5jYWxsL2Zsb2F0Mi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jIGxpYmZmaS5jYWxsL2Nsc19zaW50LmMgXAorbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYyBsaWJmZmkuY2FsbC9jbHNfdWxvbmdsb25nLmMgXAorbGliZmZpLmNhbGwvY2xzX3VzaG9ydC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMgXAorbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYyBsaWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19mbG9hdC5jIGxpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMgXAorbGliZmZpLmNhbGwvcHlvYmpjLXRjLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydGNoYXIuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QxLmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYyBcCitsaWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jIGxpYmZmaS5jYWxsL3Byb2JsZW0xLmMgbGliZmZpLmNhbGwvZmxvYXQ0LmMgXAorbGliZmZpLmNhbGwvZmFzdHRoaXMzX3dpbjMyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2xkbC5jIFwKK2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNS5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q2LmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2xsLmMgbGliZmZpLmNhbGwvc3RydWN0OS5jIGxpYmZmaS5jYWxsL3JldHVybl9zYy5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDcuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMgXAorbGliZmZpLmNhbGwvY2xzXzRieXRlLmMgbGliZmZpLmNhbGwvc3RybGVuX3dpbjMyLmMgXAorbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMgbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmMgXAorbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdC5jYyBsaWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cCBcCitsaWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0X2ZmaV9jYWxsLmNjIGxpYmZmaS5zcGVjaWFsL2ZmaXRlc3RjeHguaCBcCitsaWIvd3JhcHBlci5leHAgbGliL3RhcmdldC1saWJwYXRoLmV4cCBsaWIvbGliZmZpLmV4cAogCiBhbGw6IGFsbC1hbQogCkBAIC0yOTgsNyArMzA4LDcgQEAKIAogCiBjaGVjay1ERUpBR05VOiBzaXRlLmV4cAotCXNyY2Rpcj1gJChhbV9fY2QpICQoc3JjZGlyKSAmJiBwd2RgOyBleHBvcnQgc3JjZGlyOyBcCisJc3JjZGlyPSckKHNyY2RpciknOyBleHBvcnQgc3JjZGlyOyBcCiAJRVhQRUNUPSQoRVhQRUNUKTsgZXhwb3J0IEVYUEVDVDsgXAogCXJ1bnRlc3Q9JChSVU5URVNUKTsgXAogCWlmICQoU0hFTEwpIC1jICIkJHJ1bnRlc3QgLS12ZXJzaW9uIiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKQEAgLTMwOSwxMiArMzE5LDEyIEBACiAJZWxzZSBlY2hvICJXQVJOSU5HOiBjb3VsZCBub3QgZmluZCBcYHJ1bnRlc3QnIiAxPiYyOyA6O1wKIAlmaTsgXAogCWV4aXQgJCRleGl0X3N0YXR1cwotc2l0ZS5leHA6IE1ha2VmaWxlCitzaXRlLmV4cDogTWFrZWZpbGUgJChFWFRSQV9ERUpBR05VX1NJVEVfQ09ORklHKQogCUBlY2hvICdNYWtpbmcgYSBuZXcgc2l0ZS5leHAgZmlsZS4uLicKIAlAZWNobyAnIyMgdGhlc2UgdmFyaWFibGVzIGFyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBtYWtlICMjJyA+c2l0ZS50bXAKIAlAZWNobyAnIyBEbyBub3QgZWRpdCBoZXJlLiAgSWYgeW91IHdpc2ggdG8gb3ZlcnJpZGUgdGhlc2UgdmFsdWVzJyA+PnNpdGUudG1wCiAJQGVjaG8gJyMgZWRpdCB0aGUgbGFzdCBzZWN0aW9uJyA+PnNpdGUudG1wCi0JQGVjaG8gJ3NldCBzcmNkaXIgJChzcmNkaXIpJyA+PnNpdGUudG1wCisJQGVjaG8gJ3NldCBzcmNkaXIgIiQoc3JjZGlyKSInID4+c2l0ZS50bXAKIAlAZWNobyAic2V0IG9iamRpciBgcHdkYCIgPj5zaXRlLnRtcAogCUBlY2hvICdzZXQgYnVpbGRfYWxpYXMgIiQoYnVpbGRfYWxpYXMpIicgPj5zaXRlLnRtcAogCUBlY2hvICdzZXQgYnVpbGRfdHJpcGxldCAkKGJ1aWxkX3RyaXBsZXQpJyA+PnNpdGUudG1wCkBAIC0zMjIsOSArMzMyLDE2IEBACiAJQGVjaG8gJ3NldCBob3N0X3RyaXBsZXQgJChob3N0X3RyaXBsZXQpJyA+PnNpdGUudG1wCiAJQGVjaG8gJ3NldCB0YXJnZXRfYWxpYXMgIiQodGFyZ2V0X2FsaWFzKSInID4+c2l0ZS50bXAKIAlAZWNobyAnc2V0IHRhcmdldF90cmlwbGV0ICQodGFyZ2V0X3RyaXBsZXQpJyA+PnNpdGUudG1wCi0JQGVjaG8gJyMjIEFsbCB2YXJpYWJsZXMgYWJvdmUgYXJlIGdlbmVyYXRlZCBieSBjb25maWd1cmUuIERvIE5vdCBFZGl0ICMjJyA+PnNpdGUudG1wCi0JQHRlc3QgISAtZiBzaXRlLmV4cCB8fCBcCi0JICBzZWQgJzEsL14jIyBBbGwgdmFyaWFibGVzIGFib3ZlIGFyZS4qIyMvIGQnIHNpdGUuZXhwID4+IHNpdGUudG1wCisJQGxpc3Q9JyQoRVhUUkFfREVKQUdOVV9TSVRFX0NPTkZJRyknOyBmb3IgZiBpbiAkJGxpc3Q7IGRvIFwKKwkgIGVjaG8gIiMjIEJlZ2luIGNvbnRlbnQgaW5jbHVkZWQgZnJvbSBmaWxlICQkZi4gIERvIG5vdCBtb2RpZnkuICMjIiBcCisJICAgJiYgY2F0IGB0ZXN0IC1mICIkJGYiIHx8IGVjaG8gJyQoc3JjZGlyKS8nYCQkZiBcCisJICAgJiYgZWNobyAiIyMgRW5kIGNvbnRlbnQgaW5jbHVkZWQgZnJvbSBmaWxlICQkZi4gIyMiIFwKKwkgICB8fCBleGl0IDE7IFwKKwkgZG9uZSA+PiBzaXRlLnRtcAorCUBlY2hvICIjIyBFbmQgb2YgYXV0by1nZW5lcmF0ZWQgY29udGVudDsgeW91IGNhbiBlZGl0IGZyb20gaGVyZS4gIyMiID4+IHNpdGUudG1wCisJQGlmIHRlc3QgLWYgc2l0ZS5leHA7IHRoZW4gXAorCSAgIHNlZCAtZSAnMSwvXiMjIEVuZCBvZiBhdXRvLWdlbmVyYXRlZCBjb250ZW50LiojIy9kJyBzaXRlLmV4cCA+PiBzaXRlLnRtcDsgXAorCSBmaQogCUAtcm0gLWYgc2l0ZS5iYWsKIAlAdGVzdCAhIC1mIHNpdGUuZXhwIHx8IG12IHNpdGUuZXhwIHNpdGUuYmFrCiAJQG12IHNpdGUudG1wIHNpdGUuZXhwCkBAIC0zODAsMTAgKzM5NywxNSBAQAogCiBpbnN0YWxsY2hlY2s6IGluc3RhbGxjaGVjay1hbQogaW5zdGFsbC1zdHJpcDoKLQkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAotCSAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCi0JICBgdGVzdCAteiAnJChTVFJJUCknIHx8IFwKLQkgICAgZWNobyAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyJgIGluc3RhbGwKKwlpZiB0ZXN0IC16ICckKFNUUklQKSc7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICAgaW5zdGFsbDsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCisJZmkKIG1vc3RseWNsZWFuLWdlbmVyaWM6CiAKIGNsZWFuLWdlbmVyaWM6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvbGliZmZpLWRnLmV4cCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmkuZXhwCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIE1vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmktZGcuZXhwCnJlbmFtZSB0byBNb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvbGliZmZpLmV4cAppbmRleCA4MzhhMzA2Li40YTY1ZWQxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvbGliZmZpLWRnLmV4cAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvbGliZmZpLmV4cApAQCAtMSw0ICsxLDQgQEAKLSMgICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xMSw4ICsxMSw4IEBACiAjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAjCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAogcHJvYyBsb2FkX2djY19saWIgeyBmaWxlbmFtZSB9IHsKICAgICBnbG9iYWwgc3JjZGlyCkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICBnbG9iYWwgdG9vbF9yb290X2RpcgogICAgIGdsb2JhbCBsZF9saWJyYXJ5X3BhdGgKIAotICAgIHNldCBibGRkaXJmZmkgW3B3ZF0vLi4KKyAgICBzZXQgYmxkZGlyZmZpIFtwd2RdLy4uIAogICAgIHZlcmJvc2UgImxpYmZmaSAkYmxkZGlyZmZpIgogCiAgICAgc2V0IGdjY2RpciBbbG9va2Zvcl9maWxlICR0b29sX3Jvb3RfZGlyIGdjYy9saWJnY2MuYV0KQEAgLTI2Niw2ICsyNjYsNTYgQEAKICAgICB9CiB9CiAKK3Byb2MgY2hlY2stZmxhZ3MgeyBhcmdzIH0geworCisgICAgIyBUaGUgYXJncyBhcmUgd2l0aGluIGFub3RoZXIgbGlzdDsgcHVsbCB0aGVtIG91dC4KKyAgICBzZXQgYXJncyBbbGluZGV4ICRhcmdzIDBdCisKKyAgICAjIFRoZSBuZXh0IHR3byBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLiAgSWYgdGhleSB3ZXJlIG5vdCBzcGVjaWZpZWQsCisgICAgIyB1c2UgdGhlIGRlZmF1bHRzLgorICAgIGlmIHsgW2xsZW5ndGggJGFyZ3NdID09IDIgfSB7CisJbGFwcGVuZCAkYXJncyBbbGlzdCAiKiJdCisgICAgfQorICAgIGlmIHsgW2xsZW5ndGggJGFyZ3NdID09IDMgfSB7CisJbGFwcGVuZCAkYXJncyBbbGlzdCAiIl0KKyAgICB9CisKKyAgICAjIElmIHRoZSBvcHRpb24gc3RyaW5ncyBhcmUgdGhlIGRlZmF1bHRzLCBvciB0aGUgc2FtZSBhcyB0aGUKKyAgICAjIGRlZmF1bHRzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgY2hlY2tfY29uZGl0aW9uYWxfeGZhaWwgdG8KKyAgICAjIGNvbXBhcmUgdGhlbSB0byB0aGUgYWN0dWFsIG9wdGlvbnMuCisgICAgaWYgeyBbc3RyaW5nIGNvbXBhcmUgW2xpbmRleCAkYXJncyAyXSAiKiJdID09IDAKKwkgJiYgW3N0cmluZyBjb21wYXJlIFtsaW5kZXggJGFyZ3MgM10gIiIgXSA9PSAwIH0geworCXNldCByZXN1bHQgMSAgICAKKyAgICB9IGVsc2UgeworCSMgVGhlIHRhcmdldCBsaXN0IG1pZ2h0IGJlIGFuIGVmZmVjdGl2ZS10YXJnZXQga2V5d29yZCwgc28gcmVwbGFjZQorCSMgdGhlIG9yaWdpbmFsIGxpc3Qgd2l0aCAiKi0qLSoiLCBzaW5jZSB3ZSBhbHJlYWR5IGtub3cgaXQgbWF0Y2hlcy4KKwlzZXQgcmVzdWx0IFtjaGVja19jb25kaXRpb25hbF94ZmFpbCBbbHJlcGxhY2UgJGFyZ3MgMSAxICIqLSotKiJdXQorICAgIH0KKworICAgIHJldHVybiAkcmVzdWx0Cit9CisKK3Byb2MgZGctc2tpcC1pZiB7IGFyZ3MgfSB7CisgICAgIyBWZXJpZnkgdGhlIG51bWJlciBvZiBhcmd1bWVudHMuICBUaGUgbGFzdCB0d28gYXJlIG9wdGlvbmFsLgorICAgIHNldCBhcmdzIFtscmVwbGFjZSAkYXJncyAwIDBdCisgICAgaWYgeyBbbGxlbmd0aCAkYXJnc10gPCAyIHx8IFtsbGVuZ3RoICRhcmdzXSA+IDQgfSB7CisgICAgICAgIGVycm9yICJkZy1za2lwLWlmIDI6IG5lZWQgMiwgMywgb3IgNCBhcmd1bWVudHMiCisgICAgfQorCisgICAgIyBEb24ndCBib3RoZXIgaWYgd2UncmUgYWxyZWFkeSBza2lwcGluZyB0aGUgdGVzdC4KKyAgICB1cHZhciBkZy1kby13aGF0IGRnLWRvLXdoYXQKKyAgICBpZiB7IFtsaW5kZXggJHtkZy1kby13aGF0fSAxXSA9PSAiTiIgfSB7CisgICAgICByZXR1cm4KKyAgICB9CisKKyAgICBzZXQgc2VsZWN0b3IgW2xpc3QgdGFyZ2V0IFtsaW5kZXggJGFyZ3MgMV1dCisgICAgaWYgeyBbZGctcHJvY2Vzcy10YXJnZXQgJHNlbGVjdG9yXSA9PSAiUyIgfSB7CisgICAgICAgIGlmIFtjaGVjay1mbGFncyAkYXJnc10geworICAgICAgICAgICAgdXB2YXIgZGctZG8td2hhdCBkZy1kby13aGF0CisgICAgICAgICAgICBzZXQgZGctZG8td2hhdCBbbGlzdCBbbGluZGV4ICR7ZGctZG8td2hhdH0gMF0gIk4iICJQIl0KKyAgICAgICAgfQorICAgIH0KK30KIAogIyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGFkZGl0aW9uYWxfZmlsZXMgYW5kIGFkZGl0aW9uYWxfc291cmNlcwogIyBhcmUgYm90aCBjbGVhcmVkIG91dCBhZnRlciBldmVyeSB0ZXN0LiAgSXQgaXMgbm90IGVub3VnaCB0byBjbGVhcgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL3RhcmdldC1saWJwYXRoLmV4cCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi90YXJnZXQtbGlicGF0aC5leHAKaW5kZXggODk5OWFhNC4uNmI3YmViYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL3RhcmdldC1saWJwYXRoLmV4cAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LWxpYnBhdGguZXhwCkBAIC0yNSw3ICsyNSw3IEBACiBzZXQgb3JpZ19sZF9saWJyYXJ5X3BhdGhfMzJfc2F2ZWQgMAogc2V0IG9yaWdfbGRfbGlicmFyeV9wYXRoXzY0X3NhdmVkIDAKIHNldCBvcmlnX2R5bGRfbGlicmFyeV9wYXRoX3NhdmVkIDAKLQorc2V0IG9yaWdfcGF0aF9zYXZlZCAwCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBwcm9jIHNldF9sZF9saWJyYXJ5X3BhdGhfZW52X3ZhcnMgeyB9CkBAIC00Miw2ICs0Miw3IEBACiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF8zMl9zYXZlZAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfNjRfc2F2ZWQKICAgZ2xvYmFsIG9yaWdfZHlsZF9saWJyYXJ5X3BhdGhfc2F2ZWQKKyAgZ2xvYmFsIG9yaWdfcGF0aF9zYXZlZAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGgKICAgZ2xvYmFsIG9yaWdfbGRfcnVuX3BhdGgKICAgZ2xvYmFsIG9yaWdfc2hsaWJfcGF0aApAQCAtNTAsNiArNTEsNyBAQAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfMzIKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzY0CiAgIGdsb2JhbCBvcmlnX2R5bGRfbGlicmFyeV9wYXRoCisgIGdsb2JhbCBvcmlnX3BhdGgKICAgZ2xvYmFsIEdDQ19FWEVDX1BSRUZJWAogCiAgICMgU2V0IHRoZSByZWxvY2F0ZWQgY29tcGlsZXIgcHJlZml4LCBidXQgb25seSBpZiB0aGUgdXNlciBoYXNuJ3Qgc3BlY2lmaWVkIG9uZS4KQEAgLTEwMCw2ICsxMDIsMTAgQEAKICAgICAgIHNldCBvcmlnX2R5bGRfbGlicmFyeV9wYXRoICIkZW52KERZTERfTElCUkFSWV9QQVRIKSIKICAgICAgIHNldCBvcmlnX2R5bGRfbGlicmFyeV9wYXRoX3NhdmVkIDEKICAgICB9CisgICAgaWYgW2luZm8gZXhpc3RzIGVudihQQVRIKV0geworICAgICAgc2V0IG9yaWdfcGF0aCAiJGVudihQQVRIKSIKKyAgICAgIHNldCBvcmlnX3BhdGhfc2F2ZWQgMQorICAgIH0KICAgfQogCiAgICMgV2UgbmVlZCB0byBzZXQgbGQgbGlicmFyeSBwYXRoIGluIHRoZSBlbnZpcm9ubWVudC4gIEN1cnJlbnRseSwKQEAgLTE2OSw2ICsxNzUsMTMgQEAKICAgfSBlbHNlIHsKICAgICBzZXRlbnYgRFlMRF9MSUJSQVJZX1BBVEggIiRsZF9saWJyYXJ5X3BhdGgiCiAgIH0KKyAgaWYgeyBbaXN0YXJnZXQgKi0qLWN5Z3dpbipdIHx8IFtpc3RhcmdldCAqLSotbWluZ3cqXSB9IHsKKyAgICBpZiB7ICRvcmlnX3BhdGhfc2F2ZWQgfSB7CisgICAgICBzZXRlbnYgUEFUSCAiJGxkX2xpYnJhcnlfcGF0aDokb3JpZ19wYXRoIgorICAgIH0gZWxzZSB7CisgICAgICBzZXRlbnYgUEFUSCAiJGxkX2xpYnJhcnlfcGF0aCIKKyAgICB9CisgIH0KIAogICB2ZXJib3NlIC1sb2cgInNldF9sZF9saWJyYXJ5X3BhdGhfZW52X3ZhcnM6IGxkX2xpYnJhcnlfcGF0aD0kbGRfbGlicmFyeV9wYXRoIgogfQpAQCAtMTg3LDYgKzIwMCw3IEBACiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF8zMl9zYXZlZAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfNjRfc2F2ZWQKICAgZ2xvYmFsIG9yaWdfZHlsZF9saWJyYXJ5X3BhdGhfc2F2ZWQKKyAgZ2xvYmFsIG9yaWdfcGF0aF9zYXZlZAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGgKICAgZ2xvYmFsIG9yaWdfbGRfcnVuX3BhdGgKICAgZ2xvYmFsIG9yaWdfc2hsaWJfcGF0aApAQCAtMTk1LDYgKzIwOSw3IEBACiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF8zMgogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfNjQKICAgZ2xvYmFsIG9yaWdfZHlsZF9saWJyYXJ5X3BhdGgKKyAgZ2xvYmFsIG9yaWdfcGF0aAogCiAgIGlmIHsgJG9yaWdfZW52aXJvbm1lbnRfc2F2ZWQgPT0gMCB9IHsKICAgICByZXR1cm4KQEAgLTI0MCw2ICsyNTUsMTEgQEAKICAgfSBlbHNlaWYgW2luZm8gZXhpc3RzIGVudihEWUxEX0xJQlJBUllfUEFUSCldIHsKICAgICB1bnNldGVudiBEWUxEX0xJQlJBUllfUEFUSAogICB9CisgIGlmIHsgJG9yaWdfcGF0aF9zYXZlZCB9IHsKKyAgICBzZXRlbnYgUEFUSCAiJG9yaWdfcGF0aCIKKyAgfSBlbHNlaWYgW2luZm8gZXhpc3RzIGVudihQQVRIKV0geworICAgIHVuc2V0ZW52IFBBVEgKKyAgfQogfQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Eub3V0IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvYS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTNlZTg1YgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Eub3V0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2NhbGwuZXhwIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2FsbC5leHAKaW5kZXggMWU5OTg1ZS4uMjZhY2Q4MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2FsbC5leHAKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2FsbC5leHAKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNCwxMCArMTQsNiBAQAogIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKLSMgbGliZmZpIHRlc3RzdWl0ZSB0aGF0IHVzZXMgdGhlICdkZy5leHAnIGRyaXZlci4KLQotbG9hZF9saWIgbGliZmZpLWRnLmV4cAotCiBkZy1pbml0CiBsaWJmZmktaW5pdAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jCmluZGV4IDZiZmNjMWYuLjE0MDdmMDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jCkBAIC00OSw5ICs0OSwxNyBAQAogICBDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsb3N1cmVfdGVzdF9zdGRjYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSAzIC8qIHVzZXJkYXRhICovLCBjb2RlKSA9PSBGRklfT0spOwogCisjaWZkZWYgX01TQ19WRVIKKyAgX19hc20geyBtb3Ygc3BfcHJlLCBlc3AgfQorI2Vsc2UKICAgYXNtIHZvbGF0aWxlICgiIG1vdmwgJSVlc3AsJTAiIDogIj1nIiAoc3BfcHJlKSk7CisjZW5kaWYKICAgcmVzID0gKCooY2xvc3VyZV90ZXN0X3R5cGUwKWNvZGUpKDAsIDEsIDIsIDMpOworI2lmZGVmIF9NU0NfVkVSCisgIF9fYXNtIHsgbW92IHNwX3Bvc3QsIGVzcCB9CisjZWxzZQogICBhc20gdm9sYXRpbGUgKCIgbW92bCAlJWVzcCwlMCIgOiAiPWciIChzcF9wb3N0KSk7CisjZW5kaWYKICAgLyogeyBkZy1vdXRwdXQgIjAgMSAyIDM6IDkiIH0gKi8KIAogICBwcmludGYoInJlczogJWRcbiIscmVzKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjkzNjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jCkBAIC0wLDAgKzEsNzIgQEAKKy8qIEFyZWE6CWNsb3N1cmVfY2FsbCAodGhpc2NhbGwgY29udmVudGlvbikKKyAgIFB1cnBvc2U6CUNoZWNrIGhhbmRsaW5nIHdoZW4gY2FsbGVyIGV4cGVjdHMgdGhpc2NhbGwgY2FsbGVlCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CTxrdGlldHpAcmVkaGF0LmNvbT4gKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3N0YXRpYyB2b2lkCitjbG9zdXJlX3Rlc3RfdGhpc2NhbGwoZmZpX2NpZiogY2lmIF9fVU5VU0VEX18sIHZvaWQqIHJlc3AsIHZvaWQqKiBhcmdzLAorCQkgICAgICB2b2lkKiB1c2VyZGF0YSkKK3sKKyAgKihmZmlfYXJnKilyZXNwID0KKyAgICAoaW50KSooaW50ICopYXJnc1swXSArIChpbnQpKCooaW50ICopYXJnc1sxXSkKKyAgICArIChpbnQpKCooaW50ICopYXJnc1syXSkgICsgKGludCkoKihpbnQgKilhcmdzWzNdKQorICAgICsgKGludCkoaW50cHRyX3QpdXNlcmRhdGE7CisKKyAgcHJpbnRmKCIlZCAlZCAlZCAlZDogJWRcbiIsCisJIChpbnQpKihpbnQgKilhcmdzWzBdLCAoaW50KSgqKGludCAqKWFyZ3NbMV0pLAorCSAoaW50KSgqKGludCAqKWFyZ3NbMl0pLCAoaW50KSgqKGludCAqKWFyZ3NbM10pLAorICAgICAgICAgKGludCkqKGZmaV9hcmcgKilyZXNwKTsKKworfQorCit0eXBlZGVmIGludCAoX190aGlzY2FsbCAqY2xvc3VyZV90ZXN0X3R5cGUwKShpbnQsIGludCwgaW50LCBpbnQpOworCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIHZvaWQgKmNvZGU7CisgIGZmaV9jbG9zdXJlICpwY2wgPSBmZmlfY2xvc3VyZV9hbGxvYyhzaXplb2YoZmZpX2Nsb3N1cmUpLCAmY29kZSk7CisgIGZmaV90eXBlICogY2xfYXJnX3R5cGVzWzE3XTsKKyAgaW50IHJlczsKKyAgdm9pZCogc3BfcHJlOworICB2b2lkKiBzcF9wb3N0OworICBjaGFyIGJ1ZlsxMDI0XTsKKworICBjbF9hcmdfdHlwZXNbMF0gPSAmZmZpX3R5cGVfdWludDsKKyAgY2xfYXJnX3R5cGVzWzFdID0gJmZmaV90eXBlX3VpbnQ7CisgIGNsX2FyZ190eXBlc1syXSA9ICZmZmlfdHlwZV91aW50OworICBjbF9hcmdfdHlwZXNbM10gPSAmZmZpX3R5cGVfdWludDsKKyAgY2xfYXJnX3R5cGVzWzRdID0gTlVMTDsKKworICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9USElTQ0FMTCwgNCwKKwkJICAgICAmZmZpX3R5cGVfc2ludCwgY2xfYXJnX3R5cGVzKSA9PSBGRklfT0spOworCisgIENIRUNLKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKHBjbCwgJmNpZiwgY2xvc3VyZV90ZXN0X3RoaXNjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSAzIC8qIHVzZXJkYXRhICovLCBjb2RlKSA9PSBGRklfT0spOworCisjaWZkZWYgX01TQ19WRVIKKyAgX19hc20geyBtb3Ygc3BfcHJlLCBlc3AgfQorI2Vsc2UKKyAgYXNtIHZvbGF0aWxlICgiIG1vdmwgJSVlc3AsJTAiIDogIj1nIiAoc3BfcHJlKSk7CisjZW5kaWYKKyAgcmVzID0gKCooY2xvc3VyZV90ZXN0X3R5cGUwKWNvZGUpKDAsIDEsIDIsIDMpOworI2lmZGVmIF9NU0NfVkVSCisgIF9fYXNtIHsgbW92IHNwX3Bvc3QsIGVzcCB9CisjZWxzZQorICBhc20gdm9sYXRpbGUgKCIgbW92bCAlJWVzcCwlMCIgOiAiPWciIChzcF9wb3N0KSk7CisjZW5kaWYKKyAgLyogeyBkZy1vdXRwdXQgIjAgMSAyIDM6IDkiIH0gKi8KKworICBwcmludGYoInJlczogJWRcbiIscmVzKTsKKyAgLyogeyBkZy1vdXRwdXQgIlxucmVzOiA5IiB9ICovCisKKyAgc3ByaW50ZihidWYsICJtaXNtYXRjaDogcHJlPSVwIHZzIHBvc3Q9JXAiLCBzcF9wcmUsIHNwX3Bvc3QpOworICBwcmludGYoInN0YWNrIHBvaW50ZXIgJXNcbiIsIChzcF9wcmUgPT0gc3BfcG9zdCA/ICJtYXRjaCIgOiBidWYpKTsKKyAgLyogeyBkZy1vdXRwdXQgIlxuc3RhY2sgcG9pbnRlciBtYXRjaCIgfSAqLworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jCmluZGV4IGYwYTMzNGYuLmVhMDgyNWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTJieXRlLmMKQEAgLTQ5LDE1ICs0OSwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzEyYnl0ZSBoX2RibCA9IHsgNywgNCwgOSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xMmJ5dGUgal9kYmwgPSB7IDEsIDUsIDMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTJieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzEyYnl0ZSBoX2RibCA9IHsgNywgNCwgOSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xMmJ5dGUgal9kYmwgPSB7IDEsIDUsIDMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTJieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfc2ludDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYwppbmRleCA5YjkyOTJhLi44OWEwOGEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTZieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgaF9kYmwgPSB7IDcsIDguMCwgOSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgal9kYmwgPSB7IDEsIDkuMCwgMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlIGhfZGJsID0geyA3LCA4LjAsIDkgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlIGpfZGJsID0geyAxLCA5LjAsIDMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9zaW50OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jCmluZGV4IDQwYzhjNmQuLjlmNzVkYTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMThieXRlLmMKQEAgLTU0LDE1ICs1NCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSBnX2RibCA9IHsgMS4wLCAxMjcsIDEyNiwgMy4wIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSBmX2RibCA9IHsgNC4wLCAxMjUsIDEyNCwgNS4wIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOGJ5dGUgZ19kYmwgPSB7IDEuMCwgMTI3LCAxMjYsIDMuMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOGJ5dGUgZl9kYmwgPSB7IDQuMCwgMTI1LCAxMjQsIDUuMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOGJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYwppbmRleCBhYTY0MjQ4Li4yNzg3OTRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTlieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jCkBAIC01NywxNSArNTcsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOWJ5dGUgZ19kYmwgPSB7IDEuMCwgMTI3LCAxMjYsIDMuMCwgMTIwIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE5Ynl0ZSBmX2RibCA9IHsgNC4wLCAxMjUsIDEyNCwgNS4wLCAxMTkgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTlieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzE5Ynl0ZSBnX2RibCA9IHsgMS4wLCAxMjcsIDEyNiwgMy4wLCAxMjAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTlieXRlIGZfZGJsID0geyA0LjAsIDEyNSwgMTI0LCA1LjAsIDExOSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jCmluZGV4IGI5NDAyZDYuLjgyNDkyYzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSBnX2RibCA9IHsgMTIgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSBmX2RibCA9IHsgMTc4IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzFfMWJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSBnX2RibCA9IHsgMTIgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSBmX2RibCA9IHsgMTc4IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzFfMWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSBOVUxMOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlLmMKaW5kZXggODBkZDdhYy4uM2Y4YmIyOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGdfZGJsID0geyAxLjAsIDIuMCwgMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZl9kYmwgPSB7IDQuMCwgNS4wLCA3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZ19kYmwgPSB7IDEuMCwgMi4wLCAzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBmX2RibCA9IHsgNC4wLCA1LjAsIDcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3NpbnQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYwppbmRleCA1MGJjYmJmLi42NTYyNzI3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMKQEAgLTUyLDE1ICs1MiwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBnX2RibCA9IHsgMSwgMi4wLCAzLjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGZfZGJsID0geyA0LCA1LjAsIDcuMCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGdfZGJsID0geyAxLCAyLjAsIDMuMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZl9kYmwgPSB7IDQsIDUuMCwgNy4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3NpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jCmluZGV4IDQ2YTZlYjQuLjFkODJmNmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMKQEAgLTYxLDE3ICs2MSwxNyBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0gIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKLSAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7Ci0gIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKLQogICBzdHJ1Y3QgY2xzX3N0cnVjdF8yNGJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LCA1LjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfMjRieXRlIGZfZGJsID0geyAxLjAsIDIuMCwgMywgNy4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzI0Ynl0ZSBnX2RibCA9IHsgNC4wLCA1LjAsIDcsIDkuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF8yNGJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLCA0LjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfMjRieXRlIHJlc19kYmw7CiAKKyAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOworICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKyAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOworCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9zaW50OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzJieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYwppbmRleCAxMDFlMTMwLi44MWJiMGE2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMmJ5dGUgZ19kYmwgPSB7IDEyLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMmJ5dGUgZl9kYmwgPSB7IDEsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzJieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzJieXRlIGdfZGJsID0geyAxMiwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzJieXRlIGZfZGJsID0geyAxLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMKaW5kZXggZmM3ODBjMy4uYjc4Mjc0NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jCkBAIC01NCwxNSArNTQsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8zXzFieXRlIGdfZGJsID0geyAxMiwgMTMsIDE0IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzNfMWJ5dGUgZl9kYmwgPSB7IDE3OCwgMTc5LCAxODAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM18xYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zXzFieXRlIGdfZGJsID0geyAxMiwgMTMsIDE0IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzNfMWJ5dGUgZl9kYmwgPSB7IDE3OCwgMTc5LCAxODAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM18xYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMKaW5kZXggNTcwNWNlMy4uYTAyYzQ2MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGUgZ19kYmwgPSB7IDEyLCAxMTkgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGUgZl9kYmwgPSB7IDEsIDE1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlIGdfZGJsID0geyAxMiwgMTE5IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlIGZfZGJsID0geyAxLCAxNSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYwppbmRleCAwMTc3MGEwLi5jNzI1MWNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZV8xIGdfZGJsID0geyAxNSwgMTI1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEgZl9kYmwgPSB7IDksIDE5IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGVfMSBnX2RibCA9IHsgMTUsIDEyNSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZV8xIGZfZGJsID0geyA5LCAxOSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZV8xIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMKaW5kZXggZjM4MDZkNy4uMmQ2ZDhiNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jCkBAIC01NiwxNSArNTYsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIGdfZGJsID0geyAxMiwgMTMsIDE0LCAxNSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIGZfZGJsID0geyAxNzgsIDE3OSwgMTgwLCAxODEgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNF8xYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIGdfZGJsID0geyAxMiwgMTMsIDE0LCAxNSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIGZfZGJsID0geyAxNzgsIDE3OSwgMTgwLCAxODEgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNF8xYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNGJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jCmluZGV4IGExYWJhM2MuLjRhYzM3ODcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF80Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNGJ5dGUgZl9kYmwgPSB7IDEyLCAxMjggfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNGJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNGJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzRieXRlIGZfZGJsID0geyAxMiwgMTI4IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzRieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMKaW5kZXggMmNlYmEzZC4uYWQ5ZDUxYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMKQEAgLTU4LDE1ICs1OCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMywgNCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMywgNCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwLCAwLCAwIH07CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMywgNCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMywgNCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwLCAwLCAwIH07Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVieXRlLmMKaW5kZXggNjFkNTk1Yy4uNGUwYzAwMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVieXRlLmMKQEAgLTUzLDE1ICs1MywxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwIH07CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwIH07Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jCmluZGV4IDU3NmViZTAuLmE1NWVkYzIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNjRieXRlLmMKQEAgLTY2LDE3ICs2NiwxNyBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0gIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKLSAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7Ci0gIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKLQogICBzdHJ1Y3QgY2xzX3N0cnVjdF82NGJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCA0LjAsIDguMCwgMS4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzY0Ynl0ZSBmX2RibCA9IHsgMS4wLCAyLjAsIDMuMCwgNy4wLCAyLjAsIDUuMCwgNi4wLCA3LjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfNjRieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF82NGJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCAzLjAsIDMuMCwgMS4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzY0Ynl0ZSByZXNfZGJsOwogCisgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKyAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CisgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYwppbmRleCA5ZjJlZmY2Li5iNGRjZGJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYwpAQCAtNjAsMTUgKzYwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAzLCA0LCA1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAzLCA0LCA1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAsIDAsIDAsIDAgfTsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAzLCA0LCA1IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAzLCA0LCA1IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAsIDAsIDAsIDAgfTsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYwppbmRleCA3MzI1N2IwOTguLjc0MDY3ODAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jCkBAIC01NiwxNSArNTYsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDEyOCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMTI4IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCmluZGV4IDUwZDA5YzkuLjE0YTdlOTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCkBAIC02MiwxNSArNjIsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQsIDUsIDYgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQsIDUsIDYgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQsIDUsIDYgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQsIDUsIDYgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN2J5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jCmluZGV4IGY1YzAwMDAuLjE2NDVjYzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jCkBAIC01NSwxNSArNTUsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDI1NCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMjU1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMjU0IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAyNTUgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jCmluZGV4IDRhYTk5ZDEuLmY2YzFlYTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jCkBAIC00OSwxNSArNDksMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF84Ynl0ZSBnX2RibCA9IHsgMSwgMi4wIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzhieXRlIGZfZGJsID0geyA0LCA1LjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOGJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOGJ5dGUgZ19kYmwgPSB7IDEsIDIuMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF84Ynl0ZSBmX2RibCA9IHsgNCwgNS4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzhieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYwppbmRleCBjYzVlOWQ2Li4wYjg1NzIyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBoX2RibCA9IHsgNywgOC4wfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgal9kYmwgPSB7IDEsIDkuMH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGhfZGJsID0geyA3LCA4LjB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBqX2RibCA9IHsgMSwgOS4wfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYwppbmRleCA1YzBiYTBkLi5lZGY5OTFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBoX2RibCA9IHsgNy4wLCA4fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgal9kYmwgPSB7IDEuMCwgOX07CisgIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGhfZGJsID0geyA3LjAsIDh9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBqX2RibCA9IHsgMS4wLCA5fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3NpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYwppbmRleCAyMmI5NGQ1Li5hYWQ1ZjNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jCkBAIC01MiwxNSArNTIsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jCmluZGV4IDYyNjM3ZjIuLjM3ZTA4NTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jCmluZGV4IGFmMzgwNjAuLmIzMzIyZDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYwpAQCAtNTEsMTUgKzUxLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jCmluZGV4IDQyNzRhZjEuLjE1ZjkzNjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYwpAQCAtNiw3ICs2LDcgQEAKIAogLyogeyBkZy1leGNlc3MtZXJyb3JzICJubyBsb25nIGRvdWJsZSBmb3JtYXQiIHsgeGZhaWwgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi0qIH0gfSAqLworLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi1saW51eCogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgpAQCAtODcsMTUgKzg3LDE1IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEsIDIsIDMsIDQsIDUsIDYsIDcgfTsKKwlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0IH07CisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKIAljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKIAljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKIAljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxLCAyLCAzLCA0LCA1LCA2LCA3IH07Ci0Jc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCB9OwotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KIAljbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMKaW5kZXggMDg4ZjBkMy4uY2ExYzM1NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMKQEAgLTcsNyArNyw3IEBACiAKIC8qIHsgZGctZXhjZXNzLWVycm9ycyAibm8gbG9uZyBkb3VibGUgZm9ybWF0IiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogLyogeyBkZy1kbyBydW4geyB4ZmFpbCBzdHJvbmdhcm0qLSotKiB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotKiB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotbGludXgqIH0gfSAqLwogLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIAogI2luY2x1ZGUgImZmaXRlc3QuaCIKQEAgLTY3LDE1ICs2NywxNSBAQAogCWZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKIAlmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxLCAyLCAzLCA0LCA1LCA2LCA3IH07CisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCB9OworCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKIAljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAJY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAJY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAJY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLQlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMSwgMiwgMywgNCwgNSwgNiwgNyB9OwotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQgfTsKLQlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAJY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYwppbmRleCBjYmM0Zjk1Li44ZmJmMzZhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMKQEAgLTU0LDE1ICs1NCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgKHZvaWQgKik0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsICh2b2lkICopOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCAodm9pZCAqKTQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgKHZvaWQgKik5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9wb2ludGVyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYwppbmRleCAzODNlYTQxLi4wMzliODc0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3NzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMKaW5kZXggNzA1ZDc4Yy4uYzk2YzZkMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYwppbmRleCAzMWQ1M2FmLi45YWE3YmRkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jCkBAIC01MSwxNSArNTEsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3NpbnQ2NDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMKaW5kZXggY2I2Yjc0OC4uOTc2MjBiNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jCmluZGV4IGU0NTNkM2UuLjU3NjZmYWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMKaW5kZXggNDk1Yzc5Zi4uYTUyY2I4OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYwpAQCAtNTIsMTUgKzUyLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91aW50NjQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYwppbmRleCA2NjBkYWJiLi5kNjYzNzkxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYwpAQCAtMzcsNiArMzcsOCBAQAogCWZmaV90eXBlCXRzMV90eXBlOwogCWZmaV90eXBlKgl0czFfdHlwZV9lbGVtZW50c1s0XTsKIAorCURibHMgYXJnID0geyAxLjAsIDIuMCB9OworCiAJdHMxX3R5cGUuc2l6ZSA9IDA7CiAJdHMxX3R5cGUuYWxpZ25tZW50ID0gMDsKIAl0czFfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNDgsOCArNTAsNiBAQAogCiAJY2xfYXJnX3R5cGVzWzBdID0gJnRzMV90eXBlOwogCi0JRGJscyBhcmcgPSB7IDEuMCwgMi4wIH07Ci0KIAkvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KIAlDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAxLAogCQkJCSAmZmZpX3R5cGVfdm9pZCwgY2xfYXJnX3R5cGVzKSA9PSBGRklfT0spOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jCmluZGV4IDA2OTU4NzQuLmRiZjIwMDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMKQEAgLTYsNiArNiw4IEBACiAKIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIGF2cjMyKi0qLSogfSB9ICovCisvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIG1pcHMtc2dpLWlyaXg2KiB9IH0gUFIgbGliZmZpLzQ2NjYwICovCisKICNpbmNsdWRlICJmZml0ZXN0LmgiCiAKIHN0YXRpYyB2b2lkCkBAIC0zNCw3ICszNiw4IEBACiAJYXJnX3R5cGVzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKIAlhcmdfdHlwZXNbMl0gPSBOVUxMOwogCi0JQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMiwgJmZmaV90eXBlX3NpbnQsCisJLyogVGhpcyBwcmludGYgY2FsbCBpcyB2YXJpYWRpYyAqLworCUNIRUNLKGZmaV9wcmVwX2NpZl92YXIoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAxLCAyLCAmZmZpX3R5cGVfc2ludCwKIAkJYXJnX3R5cGVzKSA9PSBGRklfT0spOwogCiAJYXJnc1swXSA9ICZmb3JtYXQ7CkBAIC00Niw2ICs0OSw5IEBACiAJcHJpbnRmKCJyZXM6ICVkXG4iLCAoaW50KSByZXMpOwogCS8vIHsgZGctb3V0cHV0ICJcbnJlczogNCIgfQogCisJLyogVGhlIGNhbGwgdG8gY2xzX2RvdWJsZV92YV9mbiBpcyBzdGF0aWMsIHNvIGhhdmUgdG8gdXNlIGEgbm9ybWFsIHByZXBfY2lmICovCisJQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMiwgJmZmaV90eXBlX3NpbnQsIGFyZ190eXBlcykgPT0gRkZJX09LKTsKKwogCUNIRUNLKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKHBjbCwgJmNpZiwgY2xzX2RvdWJsZV92YV9mbiwgTlVMTCwgY29kZSkgPT0gRkZJX09LKTsKIAogCXJlcwk9ICgoaW50KCopKGNoYXIqLCBkb3VibGUpKShjb2RlKSkoZm9ybWF0LCBkb3VibGVBcmcpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMKaW5kZXggNTJhZjZjZi4uZTZiYWMxZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jCkBAIC02LDcgKzYsNyBAQAogCiAvKiB7IGRnLWV4Y2Vzcy1lcnJvcnMgIm5vIGxvbmcgZG91YmxlIGZvcm1hdCIgeyB4ZmFpbCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgYXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLSogfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLWxpbnV4KiB9IH0gKi8KIC8qIHsgZGctb3V0cHV0ICIiIHsgeGZhaWwgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAKICNpbmNsdWRlICJmZml0ZXN0LmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYwppbmRleCAzODU2NGNiLi40ZmExZWEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMKQEAgLTYsNiArNiw4IEBACiAKIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIGF2cjMyKi0qLSogeDg2XzY0LSotbWluZ3cqIH0gfSAqLworLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCBtaXBzLXNnaS1pcml4NiogfSB9IFBSIGxpYmZmaS80NjY2MCAqLworCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgogCiBzdGF0aWMgdm9pZApAQCAtMzQsNyArMzYsOCBAQAogCWFyZ190eXBlc1sxXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogCWFyZ190eXBlc1syXSA9IE5VTEw7CiAKLQlDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCAmZmZpX3R5cGVfc2ludCwKKwkvKiBUaGlzIHByaW50ZiBjYWxsIGlzIHZhcmlhZGljICovCisJQ0hFQ0soZmZpX3ByZXBfY2lmX3ZhcigmY2lmLCBGRklfREVGQVVMVF9BQkksIDEsIDIsICZmZmlfdHlwZV9zaW50LAogCQlhcmdfdHlwZXMpID09IEZGSV9PSyk7CiAKIAlhcmdzWzBdID0gJmZvcm1hdDsKQEAgLTQ2LDYgKzQ5LDEwIEBACiAJcHJpbnRmKCJyZXM6ICVkXG4iLCAoaW50KSByZXMpOwogCS8vIHsgZGctb3V0cHV0ICJcbnJlczogNCIgfQogCisJLyogVGhlIGNhbGwgdG8gY2xzX2xvbmdkb3VibGVfdmFfZm4gaXMgc3RhdGljLCBzbyBoYXZlIHRvIHVzZSBhIG5vcm1hbCBwcmVwX2NpZiAqLworCUNIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfREVGQVVMVF9BQkksIDIsICZmZmlfdHlwZV9zaW50LAorCQlhcmdfdHlwZXMpID09IEZGSV9PSyk7CisKIAlDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsc19sb25nZG91YmxlX3ZhX2ZuLCBOVUxMLCBjb2RlKSA9PSBGRklfT0spOwogCiAJcmVzCT0gKChpbnQoKikoY2hhciosIGxvbmcgZG91YmxlKSkoY29kZSkpKGZvcm1hdCwgbGRBcmcpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMKaW5kZXggZmFkZDM1My4uY2YwMzk5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jCkBAIC02NSw3ICs2NSw3IEBACiAKIAlDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsc19wb2ludGVyX2duLCBOVUxMLCBjb2RlKSA9PSBGRklfT0spOwogCi0JcmVzID0gKGZmaV9hcmcpKCh2b2lkKigqKSh2b2lkKiwgdm9pZCopKShjb2RlKSkoYXJnMSwgYXJnMik7CisJcmVzID0gKGZmaV9hcmcpKHVpbnRwdHJfdCkoKHZvaWQqKCopKHZvaWQqLCB2b2lkKikpKGNvZGUpKShhcmcxLCBhcmcyKTsKIAkvKiB7IGRnLW91dHB1dCAiXG4weDEyMzQ1Njc4IDB4ODlhYmNkZWY6IDB4OWJlMDI0NjciIH0gKi8KIAlwcmludGYoInJlczogMHglMDh4XG4iLCAodW5zaWduZWQgaW50KSByZXMpOwogCS8qIHsgZGctb3V0cHV0ICJcbnJlczogMHg5YmUwMjQ2NyIgfSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMKaW5kZXggNjk3ZjI3MS4uZTMxMTM5ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jCkBAIC0yOCwxMSArMjgsMTIgQEAKIAljaGFyCQl0cmFtcGxlNgk9IHRyYW1wbGU0ICsgKChjaGFyKikmYTIpWzFdOwogCWxvbmcgZG91YmxlCXRyYW1wbGU3CT0gKGludHB0cl90KXRyYW1wbGU1ICsgKGludHB0cl90KXRyYW1wbGUxOwogCWNoYXIJCXRyYW1wbGU4CT0gdHJhbXBsZTYgKyB0cmFtcGxlMjsKKwl2b2lkKgkJcmVzdWx0OwogCiAJZHVtbXlWYXIJPSBkdW1teV9mdW5jKHRyYW1wbGUxLCB0cmFtcGxlMiwgdHJhbXBsZTMsIHRyYW1wbGU0LAogCQl0cmFtcGxlNSwgdHJhbXBsZTYsIHRyYW1wbGU3LCB0cmFtcGxlOCk7CiAKLQl2b2lkKglyZXN1bHQJPSAodm9pZCopKChpbnRwdHJfdClhMSArIChpbnRwdHJfdClhMik7CisJcmVzdWx0CT0gKHZvaWQqKSgoaW50cHRyX3QpYTEgKyAoaW50cHRyX3QpYTIpOwogCiAJcHJpbnRmKCIweCUwOHggMHglMDh4OiAweCUwOHhcbiIsIAogCSAgICAgICAodW5zaWduZWQgaW50KSh1aW50cHRyX3QpIGExLApAQCAtNTIsMTEgKzUzLDEyIEBACiAJY2hhcgkJdHJhbXBsZTYJPSB0cmFtcGxlNCArICgoY2hhciopJmEyKVsxXTsKIAlsb25nIGRvdWJsZQl0cmFtcGxlNwk9IChpbnRwdHJfdCl0cmFtcGxlNSArIChpbnRwdHJfdCl0cmFtcGxlMTsKIAljaGFyCQl0cmFtcGxlOAk9IHRyYW1wbGU2ICsgdHJhbXBsZTI7CisJdm9pZCoJCXJlc3VsdDsKIAogCWR1bW15VmFyCT0gZHVtbXlfZnVuYyh0cmFtcGxlMSwgdHJhbXBsZTIsIHRyYW1wbGUzLCB0cmFtcGxlNCwKIAkJdHJhbXBsZTUsIHRyYW1wbGU2LCB0cmFtcGxlNywgdHJhbXBsZTgpOwogCi0Jdm9pZCoJcmVzdWx0CT0gKHZvaWQqKSgoaW50cHRyX3QpYTEgKyAoaW50cHRyX3QpYTIpOworCXJlc3VsdAk9ICh2b2lkKikoKGludHB0cl90KWExICsgKGludHB0cl90KWEyKTsKIAogCXByaW50ZigiMHglMDh4IDB4JTA4eDogMHglMDh4XG4iLAogICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCkoaW50cHRyX3QpIGExLApAQCAtMTI5LDcgKzEzMSw3IEBACiAKIAlDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsc19wb2ludGVyX2duLCBOVUxMLCBjb2RlKSA9PSBGRklfT0spOwogCi0JcmVzID0gKGZmaV9hcmcpKCh2b2lkKigqKSh2b2lkKiwgdm9pZCopKShjb2RlKSkoYXJnMSwgYXJnMik7CisJcmVzID0gKGZmaV9hcmcpKHVpbnRwdHJfdCkoKHZvaWQqKCopKHZvaWQqLCB2b2lkKikpKGNvZGUpKShhcmcxLCBhcmcyKTsKIAogCXByaW50ZigicmVzOiAweCUwOHhcbiIsICh1bnNpZ25lZCBpbnQpIHJlcyk7CiAJLy8geyBkZy1vdXRwdXQgIlxuMHgwMTIzNDU2NyAweDg5YWJjZGVmOiAweDhhY2YxMzU2IiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYwppbmRleCBhMjFhM2ZkLi5mNWE3MzE3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMKQEAgLTQsNyArNCw4IEBACiAgICBQUjoJCQlub25lLgogICAgT3JpZ2luYXRvcjoJQmxha2UgQ2hhZmZpbiA2LzYvMjAwNwkgKi8KIAotLyogeyBkZy1kbyBydW4geyB4ZmFpbCAqLSotKiB9IH0gKi8KKy8qIHsgZGctZG8gcnVuIH0gKi8KKwogI2luY2x1ZGUgImZmaXRlc3QuaCIKIAogc3RhdGljIHZvaWQKQEAgLTE3LDExICsxOCw5IEBACiAJZmZpX2NpZiBjaWY7CiAgICAgICAgIHZvaWQgKmNvZGU7CiAJZmZpX2Nsb3N1cmUgKnBjbCA9IGZmaV9jbG9zdXJlX2FsbG9jKHNpemVvZihmZmlfY2xvc3VyZSksICZjb2RlKTsKLQl2b2lkKiBhcmdzWzFdOwogCWZmaV90eXBlKiBhcmdfdHlwZXNbMV07CiAKIAlhcmdfdHlwZXNbMF0gPSBOVUxMOwotCWFyZ3NbMF0gPSBOVUxMOwogCiAJQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIDI1NSwgMCwgJmZmaV90eXBlX3ZvaWQsCiAJCWFyZ190eXBlcykgPT0gRkZJX0JBRF9BQkkpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYwppbmRleCBiZDJmYzU0Li5iZjYwMTYxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYwpAQCAtNCw3ICs0LDggQEAKICAgIFBSOgkJCW5vbmUuCiAgICBPcmlnaW5hdG9yOglCbGFrZSBDaGFmZmluIDYvNi8yMDA3CSAqLwogCi0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsICotKi0qIH0gfSAqLworLyogeyBkZy1kbyBydW4gfSAqLworCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgogCiBpbnQgbWFpbiAodm9pZCkKQEAgLTEyLDEwICsxMywxMCBAQAogCWZmaV9jaWYgY2lmOwogCWZmaV90eXBlKiBhcmdfdHlwZXNbMV07CiAKLQlhcmdfdHlwZXNbMF0gPSBOVUxMOwotCiAJZmZpX3R5cGUJYmFkVHlwZQk9IGZmaV90eXBlX3ZvaWQ7CiAKKwlhcmdfdHlwZXNbMF0gPSBOVUxMOworCiAJYmFkVHlwZS5zaXplID0gMDsKIAogCUNIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfREVGQVVMVF9BQkksIDAsICZiYWRUeXBlLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczFfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmM0NzI0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmMKQEAgLTAsMCArMSw1MCBAQAorLyogQXJlYToJZmZpX2NhbGwKKyAgIFB1cnBvc2U6CUNoZWNrIGZhc3RjYWxsIGZjdCBjYWxsIG9uIFg4Nl9XSU4zMiBzeXN0ZW1zLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisKKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3N0YXRpYyBzaXplX3QgX19GQVNUQ0FMTF9fIG15X2Zhc3RjYWxsX2YoY2hhciAqcywgZmxvYXQgYSkKK3sKKyAgcmV0dXJuIChzaXplX3QpICgoaW50KSBzdHJsZW4ocykgKyAoaW50KSBhKTsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIGZmaV9hcmcgcmludDsKKyAgY2hhciAqczsKKyAgZmxvYXQgdjI7CisgIGFyZ3NbMF0gPSAmZmZpX3R5cGVfcG9pbnRlcjsKKyAgYXJnc1sxXSA9ICZmZmlfdHlwZV9mbG9hdDsKKyAgdmFsdWVzWzBdID0gKHZvaWQqKSAmczsKKyAgdmFsdWVzWzFdID0gKHZvaWQqKSAmdjI7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMiwKKwkJICAgICAgICZmZmlfdHlwZV9zaW50LCBhcmdzKSA9PSBGRklfT0spOworICAKKyAgcyA9ICJhIjsKKyAgdjIgPSAwLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMSk7CisgIAorICBzID0gIjEyMzQ1NjciOworICB2MiA9IC0xLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gNik7CisgIAorICBzID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUiOworICB2MiA9IDEuMDsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX2YpLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAyNik7CisgIAorICBwcmludGYoImZhc3RjYWxsIGZjdDEgdGVzdHMgcGFzc2VkXG4iKTsKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JkZDBlMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jCkBAIC0wLDAgKzEsNTAgQEAKKy8qIEFyZWE6CWZmaV9jYWxsCisgICBQdXJwb3NlOglDaGVjayBmYXN0Y2FsbCBmY3QgY2FsbCBvbiBYODZfV0lOMzIgc3lzdGVtcy4KKyAgIExpbWl0YXRpb25zOglub25lLgorICAgUFI6CQlub25lLgorICAgT3JpZ2luYXRvcjoJRnJvbSB0aGUgb3JpZ2luYWwgZmZpdGVzdC5jICAqLworCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotY3lnd2luKiBpPzg2LSotbWluZ3cqIH0gfSAqLworCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCitzdGF0aWMgc2l6ZV90IF9fRkFTVENBTExfXyBteV9mYXN0Y2FsbF9mKGZsb2F0IGEsIGNoYXIgKnMpCit7CisgIHJldHVybiAoc2l6ZV90KSAoKGludCkgc3RybGVuKHMpICsgKGludCkgYSk7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmIGNpZjsKKyAgZmZpX3R5cGUgKmFyZ3NbTUFYX0FSR1NdOworICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOworICBmZmlfYXJnIHJpbnQ7CisgIGNoYXIgKnM7CisgIGZsb2F0IHYyOworICBhcmdzWzFdID0gJmZmaV90eXBlX3BvaW50ZXI7CisgIGFyZ3NbMF0gPSAmZmZpX3R5cGVfZmxvYXQ7CisgIHZhbHVlc1sxXSA9ICh2b2lkKikgJnM7CisgIHZhbHVlc1swXSA9ICh2b2lkKikgJnYyOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDIsCisJCSAgICAgICAmZmZpX3R5cGVfc2ludCwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHMgPSAiYSI7CisgIHYyID0gMC4wOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDEpOworICAKKyAgcyA9ICIxMjM0NTY3IjsKKyAgdjIgPSAtMS4wOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDYpOworICAKKyAgcyA9ICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1IjsKKyAgdjIgPSAxLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMjYpOworICAKKyAgcHJpbnRmKCJmYXN0Y2FsbCBmY3QyIHRlc3RzIHBhc3NlZFxuIik7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzM193aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZDYwNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYwpAQCAtMCwwICsxLDU2IEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgZmFzdGNhbGwgZiBjYWxsIG9uIFg4Nl9XSU4zMiBzeXN0ZW1zLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisKKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3N0YXRpYyBzaXplX3QgX19GQVNUQ0FMTF9fIG15X2Zhc3RjYWxsX2YoZmxvYXQgYSwgY2hhciAqcywgaW50IGkpCit7CisgIHJldHVybiAoc2l6ZV90KSAoKGludCkgc3RybGVuKHMpICsgKGludCkgYSArIGkpOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV90eXBlICphcmdzW01BWF9BUkdTXTsKKyAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKKyAgZmZpX2FyZyByaW50OworICBjaGFyICpzOworICBpbnQgdjE7CisgIGZsb2F0IHYyOworICBhcmdzWzJdID0gJmZmaV90eXBlX3NpbnQ7CisgIGFyZ3NbMV0gPSAmZmZpX3R5cGVfcG9pbnRlcjsKKyAgYXJnc1swXSA9ICZmZmlfdHlwZV9mbG9hdDsKKyAgdmFsdWVzWzJdID0gKHZvaWQqKSAmdjE7CisgIHZhbHVlc1sxXSA9ICh2b2lkKikgJnM7CisgIHZhbHVlc1swXSA9ICh2b2lkKikgJnYyOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDMsCisJCSAgICAgICAmZmZpX3R5cGVfc2ludCwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHMgPSAiYSI7CisgIHYxID0gMTsKKyAgdjIgPSAwLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMik7CisgIAorICBzID0gIjEyMzQ1NjciOworICB2MiA9IC0xLjA7CisgIHYxID0gLTI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gNCk7CisgIAorICBzID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUiOworICB2MiA9IDEuMDsKKyAgdjEgPSAyOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDI4KTsKKyAgCisgIHByaW50ZigiZmFzdGNhbGwgZmN0MyB0ZXN0cyBwYXNzZWRcbiIpOworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oCmluZGV4IDJjYjk4NDkuLmQ4MWQ0ZGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2ZmaXRlc3QuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0LmgKQEAgLTI1LDYgKzI1LDE0IEBACiAjZGVmaW5lIF9fVU5VU0VEX18KICNlbmRpZgogCisvKiBEZWZpbmUgX19GQVNUQ0FMTF9fIHNvIHRoYXQgb3RoZXIgY29tcGlsZXJzIHRoYW4gZ2NjIGNhbiBydW4gdGhlIHRlc3RzLiAgKi8KKyN1bmRlZiBfX0ZBU1RDQUxMX18KKyNpZiBkZWZpbmVkIF9NU0NfVkVSCisjZGVmaW5lIF9fRkFTVENBTExfXyBfX2Zhc3RjYWxsCisjZWxzZQorI2RlZmluZSBfX0ZBU1RDQUxMX18gX19hdHRyaWJ1dGVfXygoZmFzdGNhbGwpKQorI2VuZGlmCisKIC8qIFByZWZlciBNQVBfQU5PTihZTU9VUykgdG8gL2Rldi96ZXJvLCBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIGtlZXAgYQogICAgZmlsZSBvcGVuLiAgKi8KICNpZmRlZiBIQVZFX01NQVBfQU5PTgpAQCAtNjcsNiArNzUsOCBAQAogI2RlZmluZSBQUklkTEwgImxkIgogI3VuZGVmIFBSSXVMTAogI2RlZmluZSBQUkl1TEwgImx1IgorI2RlZmluZSBQUklkOCAiaGQiCisjZGVmaW5lIFBSSXU4ICJodSIKICNkZWZpbmUgUFJJZDY0ICJsZCIKICNkZWZpbmUgUFJJdTY0ICJsdSIKICNkZWZpbmUgUFJJdVBUUiAibHUiCkBAIC03Nyw2ICs4NywyOCBAQAogI2RlZmluZSBQUkl1UFRSICJsdSIKICNlbmRpZgogCisvKiBJUklYIGtsdWRnZS4gICovCisjaWYgZGVmaW5lZChfX3NnaSkKKy8qIElSSVggNi41IDxpbnR0eXBlcy5oPiBwcm92aWRlcyBhbGwgZGVmaW5pdGlvbnMsIGJ1dCBvbmx5IGZvciBDOTkKKyAgIGNvbXBpbGF0aW9ucy4gICovCisjZGVmaW5lIFBSSWQ4ICJoaGQiCisjZGVmaW5lIFBSSXU4ICJoaHUiCisjaWYgKF9NSVBTX1NaTE9ORyA9PSAzMikKKyNkZWZpbmUgUFJJZDY0ICJsbGQiCisjZGVmaW5lIFBSSXU2NCAibGx1IgorI2VuZGlmCisvKiBUaGlzIGRvZXNuJ3QgbWF0Y2ggPGludHR5cGVzLmg+LCB3aGljaCBhbHdheXMgaGFzICJsbGQiIGhlcmUsIGJ1dCB0aGUKKyAgIGFyZ3VtZW50cyBhcmUgdWludDY0X3QsIGludDY0X3QsIHdoaWNoIGFyZSB1bnNpZ25lZCBsb25nLCBsb25nIGZvcgorICAgNjQtYml0IGluIDxzZ2lkZWZzLmg+LiAgKi8KKyNpZiAoX01JUFNfU1pMT05HID09IDY0KQorI2RlZmluZSBQUklkNjQgImxkIgorI2RlZmluZSBQUkl1NjQgImx1IgorI2VuZGlmCisvKiBUaGlzIGRvZXNuJ3QgbWF0Y2ggPGludHR5cGVzLmg+LCB3aGljaCBoYXMgInUiIGhlcmUsIGJ1dCB0aGUgYXJndW1lbnRzCisgICBhcmUgdWludHB0cl90LCB3aGljaCBpcyBhbHdheXMgdW5zaWduZWQgbG9uZy4gICovCisjZGVmaW5lIFBSSXVQVFIgImx1IgorI2VuZGlmCisKIC8qIFNvbGFyaXMgPCAxMCBrbHVkZ2UuICAqLwogI2lmIGRlZmluZWQoX19zdW5fXykgJiYgZGVmaW5lZChfX3N2cjRfXykgJiYgIWRlZmluZWQoUFJJdVBUUikKICNpZiBkZWZpbmVkKF9fYXJjaDY0X18pIHx8IGRlZmluZWQgKF9feDg2XzY0X18pCkBAIC04Niw2ICsxMTgsMTUgQEAKICNlbmRpZgogI2VuZGlmCiAKKy8qIE1TVkMga2x1ZGdlLiAgKi8KKyNpZiBkZWZpbmVkIF9NU0NfVkVSCisjZGVmaW5lIFBSSXVQVFIgImx1IgorI2RlZmluZSBQUkl1OCAidSIKKyNkZWZpbmUgUFJJZDggImQiCisjZGVmaW5lIFBSSXU2NCAiSTY0dSIKKyNkZWZpbmUgUFJJZDY0ICJJNjRkIgorI2VuZGlmCisKICNpZmRlZiBVU0lOR19NTUFQCiBzdGF0aWMgaW5saW5lIHZvaWQgKgogYWxsb2NhdGVfbW1hcCAoc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mbG9hdF92YS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmxvYXRfdmEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWUxNThlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmxvYXRfdmEuYwpAQCAtMCwwICsxLDEwNyBAQAorLyogQXJlYTogICAgICAgIGZwIGFuZCB2YXJpYWRpY3MKKyAgIFB1cnBvc2U6ICAgICBjaGVjayBmcCBpbnB1dHMgYW5kIHJldHVybnMgd29yayBvbiB2YXJpYWRpY3MsIGV2ZW4gdGhlIGZpeGVkIHBhcmFtcworICAgTGltaXRhdGlvbnM6IE5vbmUKKyAgIFBSOiAgICAgICAgICBub25lCisgICBPcmlnaW5hdG9yOiAgPGRhdmlkLmdpbGJlcnRAbGluYXJvLm9yZz4gMjAxMS0wMS0yNQorCisgICBJbnRlbmRlZCB0byBzdHJlc3MgdGhlIGRpZmZlcmVuY2UgaW4gQUJJIG9uIEFSTSB2ZnAKKyovCisKKy8qIHsgZGctZG8gcnVuIH0gKi8KKworI2luY2x1ZGUgPHN0ZGFyZy5oPgorCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCisvKiBwcmludHMgb3V0IGFsbCB0aGUgcGFyYW1ldGVycywgYW5kIHJldHVybnMgdGhlIHN1bSBvZiB0aGVtIGFsbC4KKyAqICd4JyBpcyB0aGUgbnVtYmVyIG9mIHZhcmlhZGljIHBhcmFtZXRlcnMgYWxsIG9mIHdoaWNoIGFyZSBkb3VibGUgaW4gdGhpcyB0ZXN0CisgKi8KK2RvdWJsZSBmbG9hdF92YV9mbih1bnNpZ25lZCBpbnQgeCwgZG91YmxlIHksLi4uKQoreworICBkb3VibGUgdG90YWw9MC4wOworICB2YV9saXN0IGFwOworICB1bnNpZ25lZCBpbnQgaTsKKworICB0b3RhbCs9KGRvdWJsZSl4OworICB0b3RhbCs9eTsKKworICBwcmludGYoIiV1OiAlLjFmIDoiLCB4LCB5KTsKKworICB2YV9zdGFydChhcCwgeSk7CisgIGZvcihpPTA7aTx4O2krKykKKyAgeworICAgIGRvdWJsZSBhcmc9dmFfYXJnKGFwLCBkb3VibGUpOworICAgIHRvdGFsKz1hcmc7CisgICAgcHJpbnRmKCIgJWQ6JS4xZiAiLCBpLCBhcmcpOworICB9CisgIHZhX2VuZChhcCk7CisKKyAgcHJpbnRmKCIgdG90YWw6ICUuMWZcbiIsIHRvdGFsKTsKKworICByZXR1cm4gdG90YWw7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmICAgIGNpZjsKKworICBmZmlfdHlwZSAgICAqYXJnX3R5cGVzWzVdOworICB2b2lkICAgICAgICAqdmFsdWVzWzVdOworICBkb3VibGUgICAgICAgIGRvdWJsZXNbNV07CisgIHVuc2lnbmVkIGludCBmaXJzdGFyZzsKKyAgZG91YmxlICAgICAgICByZXNmcDsKKworICAvKiBGaXJzdCB0ZXN0LCBwYXNzIGZsb2F0X3ZhX2ZuKDAsMi4wKSAtIG5vdGUgdGhlcmUgYXJlIG5vIGFjdHVhbAorICAgKiB2YXJpYWRpYyBwYXJhbWV0ZXJzLCBidXQgaXQncyBkZWNsYXJlZCB2YXJpYWRpYyBzbyB0aGUgQUJJIG1heSBiZQorICAgKiBkaWZmZXJlbnQuICovCisgIC8qIENhbGwgaXQgc3RhdGljYWxseSBhbmQgdGhlbiB2aWEgZmZpICovCisgIHJlc2ZwPWZsb2F0X3ZhX2ZuKDAsMi4wKTsKKyAgLy8geyBkZy1vdXRwdXQgIjA6IDIuMCA6IHRvdGFsOiAyLjAiIH0KKyAgcHJpbnRmKCJjb21waWxlZDogJS4xZlxuIiwgcmVzZnApOworICAvLyB7IGRnLW91dHB1dCAiXG5jb21waWxlZDogMi4wIiB9CisKKyAgYXJnX3R5cGVzWzBdID0gJmZmaV90eXBlX3VpbnQ7CisgIGFyZ190eXBlc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1syXSA9IE5VTEw7CisgIENIRUNLKGZmaV9wcmVwX2NpZl92YXIoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCAyLAorICAgICAgICAmZmZpX3R5cGVfZG91YmxlLCBhcmdfdHlwZXMpID09IEZGSV9PSyk7CisKKyAgZmlyc3RhcmcgPSAwOworICBkb3VibGVzWzBdID0gMi4wOworICB2YWx1ZXNbMF0gPSAmZmlyc3Rhcmc7CisgIHZhbHVlc1sxXSA9ICZkb3VibGVzWzBdOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4oZmxvYXRfdmFfZm4pLCAmcmVzZnAsIHZhbHVlcyk7CisgIC8vIHsgZGctb3V0cHV0ICJcbjA6IDIuMCA6IHRvdGFsOiAyLjAiIH0KKyAgcHJpbnRmKCJmZmk6ICUuMWZcbiIsIHJlc2ZwKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuZmZpOiAyLjAiIH0KKworICAvKiBTZWNvbmQgdGVzdCwgZmxvYXRfdmFfZm4oMiwyLjAsMy4wLDQuMCksIG5vdyB3aXRoIHZhcmlhZGljIHBhcmFtcyAqLworICAvKiBDYWxsIGl0IHN0YXRpY2FsbHkgYW5kIHRoZW4gdmlhIGZmaSAqLworICByZXNmcD1mbG9hdF92YV9mbigyLDIuMCwzLjAsNC4wKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuMjogMi4wIDogMDozLjAgIDE6NC4wICB0b3RhbDogMTEuMCIgfQorICBwcmludGYoImNvbXBpbGVkOiAlLjFmXG4iLCByZXNmcCk7CisgIC8vIHsgZGctb3V0cHV0ICJcbmNvbXBpbGVkOiAxMS4wIiB9CisKKyAgYXJnX3R5cGVzWzBdID0gJmZmaV90eXBlX3VpbnQ7CisgIGFyZ190eXBlc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1szXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1s0XSA9IE5VTEw7CisgIENIRUNLKGZmaV9wcmVwX2NpZl92YXIoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCA0LAorICAgICAgICAmZmZpX3R5cGVfZG91YmxlLCBhcmdfdHlwZXMpID09IEZGSV9PSyk7CisKKyAgZmlyc3RhcmcgPSAyOworICBkb3VibGVzWzBdID0gMi4wOworICBkb3VibGVzWzFdID0gMy4wOworICBkb3VibGVzWzJdID0gNC4wOworICB2YWx1ZXNbMF0gPSAmZmlyc3Rhcmc7CisgIHZhbHVlc1sxXSA9ICZkb3VibGVzWzBdOworICB2YWx1ZXNbMl0gPSAmZG91Ymxlc1sxXTsKKyAgdmFsdWVzWzNdID0gJmRvdWJsZXNbMl07CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihmbG9hdF92YV9mbiksICZyZXNmcCwgdmFsdWVzKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuMjogMi4wIDogMDozLjAgIDE6NC4wICB0b3RhbDogMTEuMCIgfQorICBwcmludGYoImZmaTogJS4xZlxuIiwgcmVzZnApOworICAvLyB7IGRnLW91dHB1dCAiXG5mZmk6IDExLjAiIH0KKworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMKaW5kZXggOWNmZmI3MS4uMzgwZmVkZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jCkBAIC03LDcgKzcsNyBAQAogCiAvKiB7IGRnLWV4Y2Vzcy1lcnJvcnMgIiIgeyB0YXJnZXQgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi0qIH0gfSAqLworLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi1saW51eCogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgpAQCAtMTI5LDE0ICsxMjksMTQgQEAKIAkJCXVpNjRfNCArIDQsIHNpNjRfNCArIDQsIGZfNCArIDQsIGRfNCArIDQsIGxkXzQgKyA0LCAoY2hhciopKChpbnRwdHJfdClwXzQgKyA0KSwgCiAJCXVpOF81ICsgNSwgc2k4XzUgKyA1fTsKIAotCXByaW50ZigiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJWhodSAlaGhkOiAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlaGh1ICVoaGRcbiIsCisJcHJpbnRmKCIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlIiBQUkl1OCAiICUiIFBSSWQ4ICI6ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICUiIFBSSXU4ICIgJSIgUFJJZDggIlxuIiwKIAkgICAgICAgdWk4XzEsIHNpOF8xLCB1aTE2XzEsIHNpMTZfMSwgdWkzMl8xLCBzaTMyXzEsIHVpNjRfMSwgc2k2NF8xLCBmXzEsIGRfMSwgbGRfMSwgKHVuc2lnbmVkIGxvbmcpcF8xLAogCQl1aThfMiwgc2k4XzIsIHVpMTZfMiwgc2kxNl8yLCB1aTMyXzIsIHNpMzJfMiwgdWk2NF8yLCBzaTY0XzIsIGZfMiwgZF8yLCBsZF8yLCAodW5zaWduZWQgbG9uZylwXzIsCiAJCXVpOF8zLCBzaThfMywgdWkxNl8zLCBzaTE2XzMsIHVpMzJfMywgc2kzMl8zLCB1aTY0XzMsIHNpNjRfMywgZl8zLCBkXzMsIGxkXzMsICh1bnNpZ25lZCBsb25nKXBfMywKQEAgLTIyOSw2ICsyMjksMTkgQEAKIAlmZmlfdHlwZSoJc3RfZmllbGRzWzUxXTsKIAlCaWdTdHJ1Y3QJcmV0VmFsOwogCisJdWludDhfdAkJdWk4CQk9IDE7CisJaW50OF90CQlzaTgJCT0gMjsKKwl1aW50MTZfdAl1aTE2CT0gMzsKKwlpbnQxNl90CQlzaTE2CT0gNDsKKwl1aW50MzJfdAl1aTMyCT0gNTsKKwlpbnQzMl90CQlzaTMyCT0gNjsKKwl1aW50NjRfdAl1aTY0CT0gNzsKKwlpbnQ2NF90CQlzaTY0CT0gODsKKwlmbG9hdAkJZgkJPSA5OworCWRvdWJsZQkJZAkJPSAxMDsKKwlsb25nIGRvdWJsZQlsZAkJPSAxMTsKKwljaGFyKgkJcAkJPSAoY2hhciopMHgxMjM0NTY3ODsKKwogCW1lbXNldCAoJnJldFZhbCwgMCwgc2l6ZW9mKHJldFZhbCkpOwogCiAJcmV0X3N0cnVjdF90eXBlLnNpemUgPSAwOwpAQCAtMjUxLDE5ICsyNjQsNiBAQAogCiAJc3RfZmllbGRzWzUwXSA9IE5VTEw7CiAKLQl1aW50OF90CQl1aTgJCT0gMTsKLQlpbnQ4X3QJCXNpOAkJPSAyOwotCXVpbnQxNl90CXVpMTYJPSAzOwotCWludDE2X3QJCXNpMTYJPSA0OwotCXVpbnQzMl90CXVpMzIJPSA1OwotCWludDMyX3QJCXNpMzIJPSA2OwotCXVpbnQ2NF90CXVpNjQJPSA3OwotCWludDY0X3QJCXNpNjQJPSA4OwotCWZsb2F0CQlmCQk9IDk7Ci0JZG91YmxlCQlkCQk9IDEwOwotCWxvbmcgZG91YmxlCWxkCQk9IDExOwotCWNoYXIqCQlwCQk9IChjaGFyKikweDEyMzQ1Njc4OwotCiAJYXJnVHlwZXNbMF0JCT0gYXJnVHlwZXNbMTJdCT0gYXJnVHlwZXNbMjRdCT0gYXJnVHlwZXNbMzZdCT0gYXJnVHlwZXNbNDhdCT0gJmZmaV90eXBlX3VpbnQ4OwogCWFyZ1ZhbHVlc1swXQk9IGFyZ1ZhbHVlc1sxMl0JPSBhcmdWYWx1ZXNbMjRdCT0gYXJnVmFsdWVzWzM2XQk9IGFyZ1ZhbHVlc1s0OF0JPSAmdWk4OwogCWFyZ1R5cGVzWzFdCQk9IGFyZ1R5cGVzWzEzXQk9IGFyZ1R5cGVzWzI1XQk9IGFyZ1R5cGVzWzM3XQk9IGFyZ1R5cGVzWzQ5XQk9ICZmZmlfdHlwZV9zaW50ODsKQEAgLTI5NiwxMCArMjk2LDEwIEBACiAKIAlmZmlfY2FsbCgmY2lmLCBGRklfRk4odGVzdF9sYXJnZV9mbiksICZyZXRWYWwsIGFyZ1ZhbHVlcyk7CiAJLy8geyBkZy1vdXRwdXQgIjEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyOiAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMHgxMjM0NTY3OSAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDB4MTIzNDU2N2EgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMHgxMjM0NTY3YiA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMHgxMjM0NTY3YyA2IDciIH0KLQlwcmludGYoInJlczogJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJWhodSAlaGhkXG4iLAorCXByaW50ZigicmVzOiAlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlIiBQUkl1OCAiICUiIFBSSWQ4ICJcbiIsCiAJCXJldFZhbC5hLCByZXRWYWwuYiwgcmV0VmFsLmMsIHJldFZhbC5kLCByZXRWYWwuZSwgcmV0VmFsLmYsCiAJICAgICAgIHJldFZhbC5nLCByZXRWYWwuaCwgcmV0VmFsLmksIHJldFZhbC5qLCByZXRWYWwuaywgKHVuc2lnbmVkIGxvbmcpcmV0VmFsLmwsCiAJCXJldFZhbC5tLCByZXRWYWwubiwgcmV0VmFsLm8sIHJldFZhbC5wLCByZXRWYWwucSwgcmV0VmFsLnIsCkBAIC0zMjQsMTAgKzMyNCwxMCBAQAogCQl1aTgsIHNpOCwgdWkxNiwgc2kxNiwgdWkzMiwgc2kzMiwgdWk2NCwgc2k2NCwgZiwgZCwgbGQsIHAsCiAJCXVpOCwgc2k4KTsKIAkvLyB7IGRnLW91dHB1dCAiXG4xIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMjogMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDB4MTIzNDU2NzkgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAweDEyMzQ1NjdhIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDB4MTIzNDU2N2IgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDB4MTIzNDU2N2MgNiA3IiB9Ci0JcHJpbnRmKCJyZXM6ICVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICVoaHUgJWhoZFxuIiwKKwlwcmludGYoInJlczogJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJSIgUFJJdTggIiAlIiBQUklkOCAiXG4iLAogCQlyZXRWYWwuYSwgcmV0VmFsLmIsIHJldFZhbC5jLCByZXRWYWwuZCwgcmV0VmFsLmUsIHJldFZhbC5mLAogCSAgICAgICByZXRWYWwuZywgcmV0VmFsLmgsIHJldFZhbC5pLCByZXRWYWwuaiwgcmV0VmFsLmssICh1bnNpZ25lZCBsb25nKXJldFZhbC5sLAogCQlyZXRWYWwubSwgcmV0VmFsLm4sIHJldFZhbC5vLCByZXRWYWwucCwgcmV0VmFsLnEsIHJldFZhbC5yLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA3NzE1OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyLmMKQEAgLTAsMCArMSw1NCBAQAorLyogQXJlYTogICAgICAgIGZmaV9jYWxsCisgICBQdXJwb3NlOiAgICAgQ2hlY2sgdWludDhfdCBhcmd1bWVudHMuCisgICBMaW1pdGF0aW9uczogbm9uZS4KKyAgIFBSOiAgICAgICAgICBQUjQ1Njc3LgorICAgT3JpZ2luYXRvcjogIERhbiBXaXR0ZSA8ZHdpdHRlQGdtYWlsLmNvbT4gMjAxMDA5MTYgICovCisKKy8qIHsgZGctZG8gcnVuIH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworI2RlZmluZSBOQVJHUyA3CisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKKworX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSB1aW50OF90Citmb28gKHVpbnQ4X3QgYSwgdWludDhfdCBiLCB1aW50OF90IGMsIHVpbnQ4X3QgZCwKKyAgICAgdWludDhfdCBlLCB1aW50OF90IGYsIHVpbnQ4X3QgZykKK3sKKyAgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBlICsgZiArIGc7Cit9CisKK3VpbnQ4X3QKK2JhciAodWludDhfdCBhLCB1aW50OF90IGIsIHVpbnQ4X3QgYywgdWludDhfdCBkLAorICAgICB1aW50OF90IGUsIHVpbnQ4X3QgZiwgdWludDhfdCBnKQoreworICByZXR1cm4gZm9vIChhLCBiLCBjLCBkLCBlLCBmLCBnKTsKK30KKworaW50CittYWluICh2b2lkKQoreworICBmZmlfdHlwZSAqZmZpdHlwZXNbTkFSR1NdOworICBpbnQgaTsKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV9hcmcgcmVzdWx0ID0gMDsKKyAgdWludDhfdCBhcmdzW05BUkdTXTsKKyAgdm9pZCAqYXJncHRyc1tOQVJHU107CisKKyAgZm9yIChpID0gMDsgaSA8IE5BUkdTOyArK2kpCisgICAgZmZpdHlwZXNbaV0gPSAmZmZpX3R5cGVfdWludDg7CisKKyAgQ0hFQ0sgKGZmaV9wcmVwX2NpZiAoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCBOQVJHUywKKwkJICAgICAgICZmZmlfdHlwZV91aW50OCwgZmZpdHlwZXMpID09IEZGSV9PSyk7CisKKyAgZm9yIChpID0gMDsgaSA8IE5BUkdTOyArK2kpCisgICAgeworICAgICAgYXJnc1tpXSA9IGk7CisgICAgICBhcmdwdHJzW2ldID0gJmFyZ3NbaV07CisgICAgfQorICBmZmlfY2FsbCAoJmNpZiwgRkZJX0ZOIChiYXIpLCAmcmVzdWx0LCBhcmdwdHJzKTsKKworICBDSEVDSyAocmVzdWx0ID09IDIxKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9tYW55Ml93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWRiZTRkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYwpAQCAtMCwwICsxLDYzIEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgc3RkY2FsbCBtYW55IGNhbGwgb24gWDg2X1dJTjMyIHN5c3RlbXMuCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKyNpbmNsdWRlIDxmbG9hdC5oPgorCitzdGF0aWMgZmxvYXQgX19hdHRyaWJ1dGVfXygoZmFzdGNhbGwpKSBmYXN0Y2FsbF9tYW55KGZsb2F0IGYxLAorCQkJCQkJICAgZmxvYXQgZjIsCisJCQkJCQkgICBmbG9hdCBmMywKKwkJCQkJCSAgIGZsb2F0IGY0LAorCQkJCQkJICAgZmxvYXQgZjUsCisJCQkJCQkgICBmbG9hdCBmNiwKKwkJCQkJCSAgIGZsb2F0IGY3LAorCQkJCQkJICAgZmxvYXQgZjgsCisJCQkJCQkgICBmbG9hdCBmOSwKKwkJCQkJCSAgIGZsb2F0IGYxMCwKKwkJCQkJCSAgIGZsb2F0IGYxMSwKKwkJCQkJCSAgIGZsb2F0IGYxMiwKKwkJCQkJCSAgIGZsb2F0IGYxMykKK3sKKyAgcmV0dXJuICgoZjEvZjIrZjMvZjQrZjUvZjYrZjcvZjgrZjkvZjEwK2YxMS9mMTIpICogZjEzKTsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1sxM107CisgIHZvaWQgKnZhbHVlc1sxM107CisgIGZsb2F0IGZhWzEzXTsKKyAgZmxvYXQgZiwgZmY7CisgIHVuc2lnbmVkIGxvbmcgdWw7CisKKyAgZm9yICh1bCA9IDA7IHVsIDwgMTM7IHVsKyspCisgICAgeworICAgICAgYXJnc1t1bF0gPSAmZmZpX3R5cGVfZmxvYXQ7CisgICAgICB2YWx1ZXNbdWxdID0gJmZhW3VsXTsKKwlmYVt1bF0gPSAoZmxvYXQpIHVsOworICAgIH0KKworICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMTMsCisJCSAgICAgJmZmaV90eXBlX2Zsb2F0LCBhcmdzKSA9PSBGRklfT0spOworCisgIGZmID0gIGZhc3RjYWxsX21hbnkoZmFbMF0sIGZhWzFdLAorCQkgICAgIGZhWzJdLCBmYVszXSwKKwkJICAgICBmYVs0XSwgZmFbNV0sCisJCSAgICAgZmFbNl0sIGZhWzddLAorCQkgICAgIGZhWzhdLCBmYVs5XSwKKwkJICAgICBmYVsxMF0sIGZhWzExXSwgZmFbMTJdKTsKKworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4oZmFzdGNhbGxfbWFueSksICZmLCB2YWx1ZXMpOworCisgIGlmIChmIC0gZmYgPCBGTFRfRVBTSUxPTikKKyAgICBwcmludGYoImZhc3RjYWxsIG1hbnkgYXJnIHRlc3RzIG9rIVxuIik7CisgIGVsc2UKKyAgICBDSEVDSygwKTsKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYwppbmRleCA4YWE1MjdlLi5jMTVlM2EwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jCkBAIC03Nyw2ICs3NywxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgZV9kYmwgPSB7IDkuMCwgMi4wLCA2fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMiBmX2RibCA9IHsgMSwgMi4wLCAzLjB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHt7NC4wLCA1LjAsIDZ9LAorCQkJCSAgICAgIHszLCAxLjAsIDguMH19OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtOTIsMTIgKzk4LDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMi50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUyLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMyOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgZV9kYmwgPSB7IDkuMCwgMi4wLCA2fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMiBmX2RibCA9IHsgMSwgMi4wLCAzLjB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHt7NC4wLCA1LjAsIDZ9LAotCQkJCSAgICAgIHszLCAxLjAsIDguMH19OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3NpbnQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYwppbmRleCAyYTlmNTE1Li4xMDg3ZjdiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMKQEAgLTgxLDYgKzgxLDEzIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMSwgY2xzX3N0cnVjdF90eXBlMjsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMSBlX2RibCA9IHsgOS4wLCAyLjAsIDZ9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUyIGZfZGJsID0geyAxLCAyLjAsIDMuMH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIGdfZGJsID0ge3s0LjAsIDUuMCwgNn0sCisJCQkJICAgICAgezMsIDEuMCwgOC4wfX07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgaF9kYmwgPSB7IDMuMCwgMi4wLCA0fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTk2LDEzICsxMDMsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMSBlX2RibCA9IHsgOS4wLCAyLjAsIDZ9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUyIGZfZGJsID0geyAxLCAyLjAsIDMuMH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIGdfZGJsID0ge3s0LjAsIDUuMCwgNn0sCi0JCQkJICAgICAgezMsIDEuMCwgOC4wfX07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgaF9kYmwgPSB7IDMuMCwgMi4wLCA0fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9zaW50OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEwLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYwppbmRleCBkNmE3MThiLi4zNGE3NGU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYwpAQCAtNjcsNiArNjcsMTIgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxLCBjbHNfc3RydWN0X3R5cGUyOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s0XTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7IDk5LCB7MTJMTCAsIDEyN30sIDI1NX07CisgIHN0cnVjdCBDIGdfZGJsID0geyAyTEwsIDl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC04MiwxMiArODgsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0geyA5OSwgezEyTEwgLCAxMjd9LCAyNTV9OwotICBzdHJ1Y3QgQyBnX2RibCA9IHsgMkxMLCA5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VpbnQ2NDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jCmluZGV4IGRlMTU4NGMuLjY5MjY4Y2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYwpAQCAtNTcsNiArNTcsMTEgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMSwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMiAsIDEyN30sIDk5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNjcsMTEgKzcyLDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUxLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMxOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyICwgMTI3fSwgOTl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWxvbmc7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYwppbmRleCA1OGFhODUzLi5hYjE4Y2FkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMKQEAgLTU4LDYgKzU4LDExIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMkxMICwgMTI3fSwgOTl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC02OCwxMSArNzMsNiBAQAogICBjbHNfc3RydWN0X3R5cGUxLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTEuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczE7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMkxMICwgMTI3fSwgOTl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMKaW5kZXggOThlNDkxZS4uMmZmYjRkNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jCkBAIC01OCw2ICs1OCwxMSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTE7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNjgsMTEgKzczLDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUxLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMxOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OwotICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NS5jCmluZGV4IGQ4ZTM1MzcuLjZjNzk4NDUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDUuYwpAQCAtNTgsNiArNTgsMTEgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMS4wLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTY4LDExICs3Myw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTEudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMTsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMS4wLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMKaW5kZXggMmYyYjI1YS4uNTlkMzU3OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jCkBAIC02Niw2ICs2NiwxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzRdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKKyAgc3RydWN0IEMgZ19kYmwgPSB7IDIsIDl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC04MSwxMiArODcsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDEuMCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OwotICBzdHJ1Y3QgQyBnX2RibCA9IHsgMiwgOX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYwppbmRleCAxNGM3MDIzLi4yNzU5NWU2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMKQEAgLTU4LDYgKzU4LDExIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC02OCwxMSArNzMsNiBAQAogICBjbHNfc3RydWN0X3R5cGUxLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTEuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczE7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMKaW5kZXggYmI3N2VhZC4uMGU2YzY4MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jCkBAIC02Niw2ICs2NiwxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzRdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxTEwsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTJMTCAsIDEyN30sIDk5fTsKKyAgc3RydWN0IEMgZ19kYmwgPSB7IDJMTCwgOX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTgxLDEyICs4Nyw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTIudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMi5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMjsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyTEwgLCAxMjd9LCA5OX07Ci0gIHN0cnVjdCBDIGdfZGJsID0geyAyTEwsIDl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMKaW5kZXggZTlmNTQxYy4uNWY3YWM2NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jCkBAIC02Niw2ICs2NiwxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzRdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxLCA3TEx9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKKyAgc3RydWN0IEMgZ19kYmwgPSB7IDIsIDl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC04MSwxMiArODcsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDEsIDdMTH07Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OwotICBzdHJ1Y3QgQyBnX2RibCA9IHsgMiwgOX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9yZXR1cm5fc2MuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3JldHVybl9zYy5jCmluZGV4IDE5NjA4ZWUuLmEzNmNmM2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3JldHVybl9zYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3JldHVybl9zYy5jCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgc2MgPCAoc2lnbmVkIGNoYXIpIDEyNzsgc2MrKykKICAgICB7CiAgICAgICBmZmlfY2FsbCgmY2lmLCBGRklfRk4ocmV0dXJuX3NjKSwgJnJpbnQsIHZhbHVlcyk7Ci0gICAgICBDSEVDSyhyaW50ID09IChmZmlfYXJnKSBzYyk7CisgICAgICBDSEVDSygoc2lnbmVkIGNoYXIpcmludCA9PSBzYyk7CiAgICAgfQogICBleGl0KDApOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMKaW5kZXggMjNhOTNiOS4uZjMyOTM4YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jCkBAIC04MiwxNyArODIsMTcgQEAKIAlmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAJZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKLQljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0JY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7Ci0KIAlzdHJ1Y3RfMTA4Ynl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDQuMCwgOC4wLCAxLjAsIDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA3IH07CiAJc3RydWN0XzEwOGJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDYuMCwgNy4wLCA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgNCB9OwogCXN0cnVjdF8xMDhieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCwgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMgfTsKIAlzdHJ1Y3RfMTA4Ynl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMuMCwgMy4wLCAxLjAsIDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCAyIH07CiAJc3RydWN0XzEwOGJ5dGUgcmVzX2RibDsKIAorCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKwljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKwljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKwljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYwppbmRleCBlMjU5OWQyLi4zYjBlZjlhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYwpAQCAtODQsMTcgKzg0LDE3IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0JY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAJc3RydWN0XzExNmJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCA0LjAsIDguMCwgMS4wLCAxLjAsIDIuMCwgMy4wLCA3LjAsIDIuMCwgNS4wLCA3IH07CiAJc3RydWN0XzExNmJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDYuMCwgNy4wLCA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgNi4wLCA0IH07CiAJc3RydWN0XzExNmJ5dGUgZ19kYmwgPSB7IDQuMCwgNS4wLCA3LjAsIDkuMCwgMS4wLCAxLjAsIDIuMCwgOS4wLCA4LjAsIDYuMCwgMS4wLCA0LjAsIDAuMCwgNy4wLCAzIH07CiAJc3RydWN0XzExNmJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCAzLjAsIDMuMCwgMS4wLCA5LjAsIDIuMCwgNi4wLCA1LjAsIDMuMCwgOC4wLCAyIH07CiAJc3RydWN0XzExNmJ5dGUgcmVzX2RibDsKIAorCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKwljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKwljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKwljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYwppbmRleCAxZmM2YTllLi45NzNlZTAyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYwpAQCAtNjgsMTcgKzY4LDE3IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0JY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAJc3RydWN0XzcyYnl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDQuMCwgOC4wLCAxLjAsIDcuMCB9OwogCXN0cnVjdF83MmJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDYuMCwgNy4wLCA0LjAgfTsKIAlzdHJ1Y3RfNzJieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCwgMy4wIH07CiAJc3RydWN0XzcyYnl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMuMCwgMy4wLCAxLjAsIDIuMCB9OwogCXN0cnVjdF83MmJ5dGUgcmVzX2RibDsKIAorCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKwljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKwljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKwljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jCmluZGV4IGNiMmYyZmIuLjg0MzIzZDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMKQEAgLTY5LDE3ICs2OSwxNyBAQAogCWZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKIAlmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAotCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKLQljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKLQljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKLQljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKLQogCXN0cnVjdF83MmJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCA0LjAsIDguMCwgMS4wLCA3IH07CiAJc3RydWN0XzcyYnl0ZSBmX2RibCA9IHsgMS4wLCAyLjAsIDMuMCwgNy4wLCAyLjAsIDUuMCwgNi4wLCA3LjAsIDQgfTsKIAlzdHJ1Y3RfNzJieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCwgMyB9OwogCXN0cnVjdF83MmJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCAzLjAsIDMuMCwgMS4wLCAyIH07CiAJc3RydWN0XzcyYnl0ZSByZXNfZGJsOwogCisJY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOworCiAJY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ4MTA2MQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYwpAQCAtMCwwICsxLDQ0IEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgZmFzdGNhbGwgc3RybGVuIGNhbGwgb24gWDg2X1dJTjMyIHN5c3RlbXMuCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworc3RhdGljIHNpemVfdCBfX0ZBU1RDQUxMX18gbXlfZmFzdGNhbGxfc3RybGVuKGNoYXIgKnMpCit7CisgIHJldHVybiAoc3RybGVuKHMpKTsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIGZmaV9hcmcgcmludDsKKyAgY2hhciAqczsKKyAgYXJnc1swXSA9ICZmZmlfdHlwZV9wb2ludGVyOworICB2YWx1ZXNbMF0gPSAodm9pZCopICZzOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDEsCisJCSAgICAgICAmZmZpX3R5cGVfc2ludCwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHMgPSAiYSI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9zdHJsZW4pLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAxKTsKKyAgCisgIHMgPSAiMTIzNDU2NyI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9zdHJsZW4pLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSA3KTsKKyAgCisgIHMgPSAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NSI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9zdHJsZW4pLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAyNSk7CisgIAorICBwcmludGYoImZhc3RjYWxsIHN0cmxlbiB0ZXN0cyBwYXNzZWRcbiIpOworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MS5jCmluZGV4IGVhNzZjODUuLmJmYzIzZjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDEuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxLmMKQEAgLTMwLDYgKzMwLDEzIEBACiAgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CiAgIGZmaV90eXBlIHRzMV90eXBlOwogICBmZmlfdHlwZSAqdHMxX3R5cGVfZWxlbWVudHNbNF07CisKKyAgdGVzdF9zdHJ1Y3R1cmVfMSB0czFfYXJnOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV8xICp0czFfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfMSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8xKSk7CisKICAgdHMxX3R5cGUuc2l6ZSA9IDA7CiAgIHRzMV90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzMV90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zOSwxMSArNDYsNiBAQAogICB0czFfdHlwZV9lbGVtZW50c1syXSA9ICZmZmlfdHlwZV91aW50OwogICB0czFfdHlwZV9lbGVtZW50c1szXSA9IE5VTEw7CiAgIAotICB0ZXN0X3N0cnVjdHVyZV8xIHRzMV9hcmc7Ci0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV8xICp0czFfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzEgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMSkpOwotICAKICAgYXJnc1swXSA9ICZ0czFfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzMV9hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NTZmNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmMKQEAgLTAsMCArMSw2NyBAQAorLyogQXJlYToJZmZpX2NhbGwKKyAgIFB1cnBvc2U6CUNoZWNrIHN0cnVjdHVyZXMgd2l0aCBmYXN0Y2FsbC90aGlzY2FsbCBjb252ZW50aW9uLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCit0eXBlZGVmIHN0cnVjdAoreworICB1bnNpZ25lZCBjaGFyIHVjOworICBkb3VibGUgZDsKKyAgdW5zaWduZWQgaW50IHVpOworfSB0ZXN0X3N0cnVjdHVyZV8xOworCitzdGF0aWMgdGVzdF9zdHJ1Y3R1cmVfMSBfX0ZBU1RDQUxMX18gc3RydWN0MSh0ZXN0X3N0cnVjdHVyZV8xIHRzKQoreworICB0cy51YysrOworICB0cy5kLS07CisgIHRzLnVpKys7CisKKyAgcmV0dXJuIHRzOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV90eXBlICphcmdzW01BWF9BUkdTXTsKKyAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKKyAgZmZpX3R5cGUgdHMxX3R5cGU7CisgIGZmaV90eXBlICp0czFfdHlwZV9lbGVtZW50c1s0XTsKKworICB0ZXN0X3N0cnVjdHVyZV8xIHRzMV9hcmc7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzEgKnRzMV9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV8xICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzEpKTsKKworICB0czFfdHlwZS5zaXplID0gMDsKKyAgdHMxX3R5cGUuYWxpZ25tZW50ID0gMDsKKyAgdHMxX3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKyAgdHMxX3R5cGUuZWxlbWVudHMgPSB0czFfdHlwZV9lbGVtZW50czsKKyAgdHMxX3R5cGVfZWxlbWVudHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CisgIHRzMV90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKKyAgdHMxX3R5cGVfZWxlbWVudHNbMl0gPSAmZmZpX3R5cGVfdWludDsKKyAgdHMxX3R5cGVfZWxlbWVudHNbM10gPSBOVUxMOworICAKKyAgYXJnc1swXSA9ICZ0czFfdHlwZTsKKyAgdmFsdWVzWzBdID0gJnRzMV9hcmc7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMSwgCisJCSAgICAgJnRzMV90eXBlLCBhcmdzKSA9PSBGRklfT0spOworICAKKyAgdHMxX2FyZy51YyA9ICdceDAxJzsKKyAgdHMxX2FyZy5kID0gMy4xNDE1OTsKKyAgdHMxX2FyZy51aSA9IDU1NTsKKworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4oc3RydWN0MSksIHRzMV9yZXN1bHQsIHZhbHVlcyk7CisgIAorICBDSEVDSyh0czFfcmVzdWx0LT51aSA9PSA1NTYpOworICBDSEVDSyh0czFfcmVzdWx0LT5kID09IDMuMTQxNTkgLSAxKTsKKyAKKyAgZnJlZSAodHMxX3Jlc3VsdCk7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyLmMKaW5kZXggMTRiYzlmZC4uZDg1Mzg1ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Mi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDIuYwpAQCAtMjksNiArMjksMTEgQEAKICAgdGVzdF9zdHJ1Y3R1cmVfMiB0czJfYXJnOwogICBmZmlfdHlwZSB0czJfdHlwZTsKICAgZmZpX3R5cGUgKnRzMl90eXBlX2VsZW1lbnRzWzNdOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV8yICp0czJfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfMiAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8yKSk7CisKICAgdHMyX3R5cGUuc2l6ZSA9IDA7CiAgIHRzMl90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzMl90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zNywxMSArNDIsNiBAQAogICB0czJfdHlwZV9lbGVtZW50c1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIHRzMl90eXBlX2VsZW1lbnRzWzJdID0gTlVMTDsKIAotICAKLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzIgKnRzMl9yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfMiAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8yKSk7Ci0gIAogICBhcmdzWzBdID0gJnRzMl90eXBlOwogICB2YWx1ZXNbMF0gPSAmdHMyX2FyZzsKICAgCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQwMjI4NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYwpAQCAtMCwwICsxLDY3IEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgc3RydWN0dXJlcyBpbiBmYXN0Y2FsbC9zdGRjYWxsIGZ1bmN0aW9uCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIGRvdWJsZSBkMTsKKyAgZG91YmxlIGQyOworfSB0ZXN0X3N0cnVjdHVyZV8yOworCitzdGF0aWMgdGVzdF9zdHJ1Y3R1cmVfMiBfX0ZBU1RDQUxMX18gc3RydWN0Mih0ZXN0X3N0cnVjdHVyZV8yIHRzKQoreworICB0cy5kMS0tOworICB0cy5kMi0tOworCisgIHJldHVybiB0czsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIHRlc3Rfc3RydWN0dXJlXzIgdHMyX2FyZzsKKyAgZmZpX3R5cGUgdHMyX3R5cGU7CisgIGZmaV90eXBlICp0czJfdHlwZV9lbGVtZW50c1szXTsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfMiAqdHMyX3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzIgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMikpOworCisgIHRzMl90eXBlLnNpemUgPSAwOworICB0czJfdHlwZS5hbGlnbm1lbnQgPSAwOworICB0czJfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworICB0czJfdHlwZS5lbGVtZW50cyA9IHRzMl90eXBlX2VsZW1lbnRzOworICB0czJfdHlwZV9lbGVtZW50c1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIHRzMl90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKKyAgdHMyX3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOworCisgIGFyZ3NbMF0gPSAmdHMyX3R5cGU7CisgIHZhbHVlc1swXSA9ICZ0czJfYXJnOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDEsICZ0czJfdHlwZSwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHRzMl9hcmcuZDEgPSA1LjU1OworICB0czJfYXJnLmQyID0gNi42NjsKKyAgCisgIHByaW50ZiAoIiVnXG4iLCB0czJfYXJnLmQxKTsKKyAgcHJpbnRmICgiJWdcbiIsIHRzMl9hcmcuZDIpOworICAKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKHN0cnVjdDIpLCB0czJfcmVzdWx0LCB2YWx1ZXMpOworICAKKyAgcHJpbnRmICgiJWdcbiIsIHRzMl9yZXN1bHQtPmQxKTsKKyAgcHJpbnRmICgiJWdcbiIsIHRzMl9yZXN1bHQtPmQyKTsKKyAgCisgIENIRUNLKHRzMl9yZXN1bHQtPmQxID09IDUuNTUgLSAxKTsKKyAgQ0hFQ0sodHMyX3Jlc3VsdC0+ZDIgPT0gNi42NiAtIDEpOworICAKKyAgZnJlZSAodHMyX3Jlc3VsdCk7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QzLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QzLmMKaW5kZXggZTBiYjA5Yi4uZGU4ODNjMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0My5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDMuYwpAQCAtMjcsNiArMjcsMTEgQEAKICAgaW50IGNvbXBhcmVfdmFsdWU7CiAgIGZmaV90eXBlIHRzM190eXBlOwogICBmZmlfdHlwZSAqdHMzX3R5cGVfZWxlbWVudHNbMl07CisKKyAgdGVzdF9zdHJ1Y3R1cmVfMyB0czNfYXJnOworICB0ZXN0X3N0cnVjdHVyZV8zICp0czNfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfMyAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8zKSk7CisKICAgdHMzX3R5cGUuc2l6ZSA9IDA7CiAgIHRzM190eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzM190eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zNCwxMCArMzksNiBAQAogICB0czNfdHlwZV9lbGVtZW50c1swXSA9ICZmZmlfdHlwZV9zaW50OwogICB0czNfdHlwZV9lbGVtZW50c1sxXSA9IE5VTEw7CiAKLSAgdGVzdF9zdHJ1Y3R1cmVfMyB0czNfYXJnOwotICB0ZXN0X3N0cnVjdHVyZV8zICp0czNfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzMgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMykpOwotICAKICAgYXJnc1swXSA9ICZ0czNfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzM19hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NC5jCmluZGV4IDBhZDBhODMuLjQ4ZTAzNDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q0LmMKQEAgLTI4LDIxICsyOCwyMiBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czRfdHlwZTsKICAgZmZpX3R5cGUgKnRzNF90eXBlX2VsZW1lbnRzWzRdOyAgCisKKyAgdGVzdF9zdHJ1Y3R1cmVfNCB0czRfYXJnOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV80ICp0czRfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfNCAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV80KSk7CisKICAgdHM0X3R5cGUuc2l6ZSA9IDA7CiAgIHRzNF90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzNF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0gIHRlc3Rfc3RydWN0dXJlXzQgdHM0X2FyZzsKICAgdHM0X3R5cGUuZWxlbWVudHMgPSB0czRfdHlwZV9lbGVtZW50czsKICAgdHM0X3R5cGVfZWxlbWVudHNbMF0gPSAmZmZpX3R5cGVfdWludDsKICAgdHM0X3R5cGVfZWxlbWVudHNbMV0gPSAmZmZpX3R5cGVfdWludDsKICAgdHM0X3R5cGVfZWxlbWVudHNbMl0gPSAmZmZpX3R5cGVfdWludDsKICAgdHM0X3R5cGVfZWxlbWVudHNbM10gPSBOVUxMOwogCi0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfNCAqdHM0X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV80ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzQpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM0X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czRfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDUuYwppbmRleCBjMDNjYzk3Li4yOGIxZjBjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q1LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NS5jCkBAIC0yNyw2ICsyNywxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czVfdHlwZTsKICAgZmZpX3R5cGUgKnRzNV90eXBlX2VsZW1lbnRzWzNdOworCisgIHRlc3Rfc3RydWN0dXJlXzUgdHM1X2FyZzEsIHRzNV9hcmcyOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV81ICp0czVfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfNSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV81KSk7CisKICAgdHM1X3R5cGUuc2l6ZSA9IDA7CiAgIHRzNV90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzNV90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zNSwxMiArNDIsNiBAQAogICB0czVfdHlwZV9lbGVtZW50c1sxXSA9ICZmZmlfdHlwZV9zY2hhcjsKICAgdHM1X3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOwogCi0gIHRlc3Rfc3RydWN0dXJlXzUgdHM1X2FyZzEsIHRzNV9hcmcyOwotICAKLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzUgKnRzNV9yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfNSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV81KSk7Ci0gIAogICBhcmdzWzBdID0gJnRzNV90eXBlOwogICBhcmdzWzFdID0gJnRzNV90eXBlOwogICB2YWx1ZXNbMF0gPSAmdHM1X2FyZzE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q2LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q2LmMKaW5kZXggODNkYjlhZi4uMGUyNjc0NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ni5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDYuYwpAQCAtMjcsNiArMjcsMTMgQEAKICAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKICAgZmZpX3R5cGUgdHM2X3R5cGU7CiAgIGZmaV90eXBlICp0czZfdHlwZV9lbGVtZW50c1szXTsKKworICB0ZXN0X3N0cnVjdHVyZV82IHRzNl9hcmc7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzYgKnRzNl9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV82ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzYpKTsKKwogICB0czZfdHlwZS5zaXplID0gMDsKICAgdHM2X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgdHM2X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTM1LDEzICs0Miw2IEBACiAgIHRzNl90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgdHM2X3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOwogCi0KLSAgdGVzdF9zdHJ1Y3R1cmVfNiB0czZfYXJnOwotCi0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV82ICp0czZfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzYgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNikpOwotICAKICAgYXJnc1swXSA9ICZ0czZfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzNl9hcmc7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDcuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDcuYwppbmRleCA1OGFhYzRjLi44ZjJiYmZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q3LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ny5jCkBAIC0yOSw2ICsyOSwxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czdfdHlwZTsKICAgZmZpX3R5cGUgKnRzN190eXBlX2VsZW1lbnRzWzRdOworCisgIHRlc3Rfc3RydWN0dXJlXzcgdHM3X2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfNyAqdHM3X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzcgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNykpOworCiAgIHRzN190eXBlLnNpemUgPSAwOwogICB0czdfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czdfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtMzgsMTMgKzQ1LDYgQEAKICAgdHM3X3R5cGVfZWxlbWVudHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwogICB0czdfdHlwZV9lbGVtZW50c1szXSA9IE5VTEw7CiAKLQotICB0ZXN0X3N0cnVjdHVyZV83IHRzN19hcmc7Ci0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfNyAqdHM3X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV83ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzcpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM3X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czdfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDguYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDguYwppbmRleCBjNzczYWM3Li4yNjZlMWYwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q4LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OC5jCkBAIC0zMSw2ICszMSwxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czhfdHlwZTsKICAgZmZpX3R5cGUgKnRzOF90eXBlX2VsZW1lbnRzWzVdOworCisgIHRlc3Rfc3RydWN0dXJlXzggdHM4X2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfOCAqdHM4X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzggKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfOCkpOworCiAgIHRzOF90eXBlLnNpemUgPSAwOwogICB0czhfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czhfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNDEsMTIgKzQ4LDYgQEAKICAgdHM4X3R5cGVfZWxlbWVudHNbM10gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIHRzOF90eXBlX2VsZW1lbnRzWzRdID0gTlVMTDsKIAotICB0ZXN0X3N0cnVjdHVyZV84IHRzOF9hcmc7Ci0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfOCAqdHM4X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV84ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzgpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM4X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czhfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDkuYwppbmRleCBmMzAwOTFmLi5lZmViNzE2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q5LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OS5jCkBAIC0yOCw2ICsyOCwxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czlfdHlwZTsKICAgZmZpX3R5cGUgKnRzOV90eXBlX2VsZW1lbnRzWzNdOworCisgIHRlc3Rfc3RydWN0dXJlXzkgdHM5X2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfOSAqdHM5X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzkgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfOSkpOworCiAgIHRzOV90eXBlLnNpemUgPSAwOwogICB0czlfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czlfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtMzYsMTIgKzQzLDYgQEAKICAgdHM5X3R5cGVfZWxlbWVudHNbMV0gPSAmZmZpX3R5cGVfc2ludDsKICAgdHM5X3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOwogCi0gIHRlc3Rfc3RydWN0dXJlXzkgdHM5X2FyZzsKLSAgCi0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV85ICp0czlfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzkgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfOSkpOwotICAKICAgYXJnc1swXSA9ICZ0czlfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzOV9hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMKaW5kZXggMTYxY2M4OS4uY2EzMTA1NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jCkBAIC00MywxMyArNDMsMTMgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlMDsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgZ19kYmwgPSB7NC4wLCA1LjAsIDEuMCwgOC4wfTsKKwogICBjbHNfc3RydWN0X3R5cGUwLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUwLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZTAudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMC5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMDsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHs0LjAsIDUuMCwgMS4wLCA4LjB9OwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzMFswXSA9ICZmZmlfdHlwZV9mbG9hdDsKICAgY2xzX3N0cnVjdF9maWVsZHMwWzFdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkczBbMl0gPSAmZmZpX3R5cGVfZmxvYXQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCmluZGV4IGUxNjdlODYuLjc0NjcxYjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTQsOCArMTQsNiBAQAogIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKLWxvYWRfbGliIGxpYmZmaS1kZy5leHAKLQogZGctaW5pdAogbGliZmZpLWluaXQKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYyBiL01vZHVsZXMvX2N0eXBlcy9zdGdkaWN0LmMKaW5kZXggMjYyZDBiNC4uZTViMGU0YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvc3RnZGljdC5jCkBAIC00MjYsOSArNDI2LDkgQEAKICAgICAgICAgU3RnRGljdE9iamVjdCAqZGljdDsKICAgICAgICAgaW50IGJpdHNpemUgPSAwOwogCi0gICAgICAgIGlmICghcGFpciB8fCAhUHlBcmdfUGFyc2VUdXBsZShwYWlyLCAiT098aSIsICZuYW1lLCAmZGVzYywgJmJpdHNpemUpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIidfZmllbGRzXycgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIHBhaXJzIik7CisgICAgICAgIGlmICghcGFpciB8fCAhUHlBcmdfUGFyc2VUdXBsZShwYWlyLCAiVU98aSIsICZuYW1lLCAmZGVzYywgJmJpdHNpemUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICInX2ZpZWxkc18nIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiAobmFtZSwgQyB0eXBlKSBwYWlycyIpOwogICAgICAgICAgICAgUHlfWERFQ1JFRihwYWlyKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtNDc4LDYgKzQ3OCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYml0c2l6ZSA9IDA7CisKICAgICAgICAgaWYgKGlzU3RydWN0ICYmICFpc1BhY2tlZCkgewogICAgICAgICAgICAgY2hhciAqZmllbGRmbXQgPSBkaWN0LT5mb3JtYXQgPyBkaWN0LT5mb3JtYXQgOiAiQiI7CiAgICAgICAgICAgICBjaGFyICpmaWVsZG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwpAQCAtNDg3LDEwICs0ODgsNiBAQAogCiAgICAgICAgICAgICBpZiAoZmllbGRuYW1lID09IE5VTEwpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cnVjdHVyZSBmaWVsZCBuYW1lIG11c3QgYmUgc3RyaW5nIG5vdCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUtPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFpcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQpAQCAtNTE1LDYgKzUxMiw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKICAgICAgICAgaWYgKGlzU3RydWN0KSB7CiAgICAgICAgICAgICBwcm9wID0gUHlDRmllbGRfRnJvbURlc2MoZGVzYywgaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpZWxkX3NpemUsIGJpdHNpemUsICZiaXRvZnMsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCmluZGV4IDg1NjFhMmUuLjFjN2QwODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCisrKyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCkBAIC0xNiw4ICsxNiwzNyBAQAogCiAjaW5jbHVkZSA8cGFuZWwuaD4KIAotc3RhdGljIFB5T2JqZWN0ICpQeUN1cnNlc0Vycm9yOwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpQeUN1cnNlc0Vycm9yOworICAgIFB5T2JqZWN0ICpQeUN1cnNlc1BhbmVsX1R5cGU7Cit9IF9jdXJzZXNfcGFuZWxzdGF0ZTsKIAorI2RlZmluZSBfY3Vyc2VzX3BhbmVsc3RhdGUobykgKChfY3Vyc2VzX3BhbmVsc3RhdGUgKilQeU1vZHVsZV9HZXRTdGF0ZShvKSkKKworc3RhdGljIGludAorX2N1cnNlc19wYW5lbF9jbGVhcihQeU9iamVjdCAqbSkKK3sKKyAgICBQeV9DTEVBUihfY3Vyc2VzX3BhbmVsc3RhdGUobSktPlB5Q3Vyc2VzRXJyb3IpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitfY3Vyc2VzX3BhbmVsX3RyYXZlcnNlKFB5T2JqZWN0ICptLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChfY3Vyc2VzX3BhbmVsc3RhdGUobSktPlB5Q3Vyc2VzRXJyb3IpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorX2N1cnNlc19wYW5lbF9mcmVlKHZvaWQgKm0pCit7CisgICAgX2N1cnNlc19wYW5lbF9jbGVhcigoUHlPYmplY3QgKikgbSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2N1cnNlc19wYW5lbG1vZHVsZTsKKworI2RlZmluZSBfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsIFwKKygoX2N1cnNlc19wYW5lbHN0YXRlICopIFB5TW9kdWxlX0dldFN0YXRlKFB5U3RhdGVfRmluZE1vZHVsZSgmX2N1cnNlc19wYW5lbG1vZHVsZSkpKQogCiAvKiBVdGlsaXR5IEZ1bmN0aW9ucyAqLwogCkBAIC0zNCw5ICs2Myw5IEBACiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChmbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlDdXJzZXNFcnJvciwgY2F0Y2hhbGxfRVJSKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCBjYXRjaGFsbF9FUlIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5Q3Vyc2VzRXJyb3IsICIlcygpIHJldHVybmVkIEVSUiIsIGZuYW1lKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCAiJXMoKSByZXR1cm5lZCBFUlIiLCBmbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNTQsOSArODMsOCBAQAogICAgIFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3bzsgICAvKiBmb3IgcmVmZXJlbmNlIGNvdW50cyAqLwogfSBQeUN1cnNlc1BhbmVsT2JqZWN0OwogCi1QeVR5cGVPYmplY3QgUHlDdXJzZXNQYW5lbF9UeXBlOwotCi0jZGVmaW5lIFB5Q3Vyc2VzUGFuZWxfQ2hlY2sodikgICAoUHlfVFlQRSh2KSA9PSAmUHlDdXJzZXNQYW5lbF9UeXBlKQorI2RlZmluZSBQeUN1cnNlc1BhbmVsX0NoZWNrKHYpICBcCisgKFB5X1RZUEUodikgPT0gX2N1cnNlc19wYW5lbHN0YXRlX2dsb2JhbC0+UHlDdXJzZXNQYW5lbF9UeXBlKQogCiAvKiBTb21lIGhlbHBlciBmdW5jdGlvbnMuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlcmUncyBhbHdheXMgYSB3aW5kb3cKICAgIGFzc29jaWF0ZWQgd2l0aCBhIHBhbmVsLiBUbyBlbnN1cmUgdGhhdCBQeXRob24ncyBHQyBkb2Vzbid0IHB1bGwKQEAgLTE3NSw3ICsyMDMsOCBAQAogewogICAgIFB5Q3Vyc2VzUGFuZWxPYmplY3QgKnBvOwogCi0gICAgcG8gPSBQeU9iamVjdF9ORVcoUHlDdXJzZXNQYW5lbE9iamVjdCwgJlB5Q3Vyc2VzUGFuZWxfVHlwZSk7CisgICAgcG8gPSBQeU9iamVjdF9ORVcoUHlDdXJzZXNQYW5lbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAoUHlUeXBlT2JqZWN0ICopKF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwpLT5QeUN1cnNlc1BhbmVsX1R5cGUpOwogICAgIGlmIChwbyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKICAgICBwby0+cGFuID0gcGFuOwogICAgIGlmIChpbnNlcnRfbG9wKHBvKSA8IDApIHsKQEAgLTI4MCw3ICszMDksNyBAQAogCiAgICAgcnRuID0gcmVwbGFjZV9wYW5lbChzZWxmLT5wYW4sIHRlbXAtPndpbik7CiAgICAgaWYgKHJ0biA9PSBFUlIpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsICJyZXBsYWNlX3BhbmVsKCkgcmV0dXJuZWQgRVJSIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCAicmVwbGFjZV9wYW5lbCgpIHJldHVybmVkIEVSUiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfREVDUkVGKHBvLT53byk7CkBAIC0zMDUsNyArMzM0LDcgQEAKICAgICBQeUN1cnNlc0luaXRpYWxpc2VkOwogICAgIG9iaiA9IChQeU9iamVjdCAqKSBwYW5lbF91c2VycHRyKHNlbGYtPnBhbik7CiAgICAgaWYgKG9iaiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUN1cnNlc0Vycm9yLCAibm8gdXNlcnB0ciBzZXQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwtPlB5Q3Vyc2VzRXJyb3IsICJubyB1c2VycHRyIHNldCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTMzNCwzNiArMzYzLDE4IEBACiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi1QeVR5cGVPYmplY3QgUHlDdXJzZXNQYW5lbF9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJfY3Vyc2VzX3BhbmVsLmN1cnNlcyBwYW5lbCIsICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKFB5Q3Vyc2VzUGFuZWxPYmplY3QpLCAgICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKVB5Q3Vyc2VzUGFuZWxfRGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwotICAgIFB5Q3Vyc2VzUGFuZWxfTWV0aG9kcywgLyp0cF9tZXRob2RzKi8KK3N0YXRpYyBQeVR5cGVfU2xvdCBQeUN1cnNlc1BhbmVsX1R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfZGVhbGxvYywgUHlDdXJzZXNQYW5lbF9EZWFsbG9jfSwKKyAgICB7UHlfdHBfbWV0aG9kcywgUHlDdXJzZXNQYW5lbF9NZXRob2RzfSwKKyAgICB7MCwgMH0sCit9OworCitzdGF0aWMgUHlUeXBlX1NwZWMgUHlDdXJzZXNQYW5lbF9UeXBlX3NwZWMgPSB7CisgICAgIl9jdXJzZXNfcGFuZWwuY3Vyc2VzIHBhbmVsIiwKKyAgICBzaXplb2YoUHlDdXJzZXNQYW5lbE9iamVjdCksCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCisgICAgUHlDdXJzZXNQYW5lbF9UeXBlX3Nsb3RzCiB9OwogCiAvKiBXcmFwcGVyIGZvciBwYW5lbF9hYm92ZShOVUxMKS4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBib3R0b20KQEAgLTQwNSw3ICs0MTYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwYW4gPSBuZXdfcGFuZWwod2luLT53aW4pOwogICAgIGlmIChwYW4gPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlDdXJzZXNFcnJvciwgY2F0Y2hhbGxfTlVMTCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCBjYXRjaGFsbF9OVUxMKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1BhbmVsX05ldyhwYW4sIHdpbik7CkBAIC00NjcsMTIgKzQ3OCwxMiBAQAogICAgICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgICAgICJfY3Vyc2VzX3BhbmVsIiwKICAgICAgICAgTlVMTCwKLSAgICAgICAgLTEsCisgICAgICAgIHNpemVvZihfY3Vyc2VzX3BhbmVsc3RhdGUpLAogICAgICAgICBQeUN1cnNlc19tZXRob2RzLAogICAgICAgICBOVUxMLAotICAgICAgICBOVUxMLAotICAgICAgICBOVUxMLAotICAgICAgICBOVUxMCisgICAgICAgIF9jdXJzZXNfcGFuZWxfdHJhdmVyc2UsCisgICAgICAgIF9jdXJzZXNfcGFuZWxfY2xlYXIsCisgICAgICAgIF9jdXJzZXNfcGFuZWxfZnJlZQogfTsKIAogUHlNT0RJTklUX0ZVTkMKQEAgLTQ4MCwyMSArNDkxLDIzIEBACiB7CiAgICAgUHlPYmplY3QgKm0sICpkLCAqdjsKIAotICAgIC8qIEluaXRpYWxpemUgb2JqZWN0IHR5cGUgKi8KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUN1cnNlc1BhbmVsX1R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpbXBvcnRfY3Vyc2VzKCk7Ci0KICAgICAvKiBDcmVhdGUgdGhlIG1vZHVsZSBhbmQgYWRkIHRoZSBmdW5jdGlvbnMgKi8KICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfY3Vyc2VzX3BhbmVsbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBmYWlsOwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwogCisgICAgLyogSW5pdGlhbGl6ZSBvYmplY3QgdHlwZSAqLworICAgIF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNQYW5lbF9UeXBlID0gXAorICAgICAgICBQeVR5cGVfRnJvbVNwZWMoJlB5Q3Vyc2VzUGFuZWxfVHlwZV9zcGVjKTsKKyAgICBpZiAoX2N1cnNlc19wYW5lbHN0YXRlKG0pLT5QeUN1cnNlc1BhbmVsX1R5cGUgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgaW1wb3J0X2N1cnNlcygpOworCiAgICAgLyogRm9yIGV4Y2VwdGlvbiBfY3Vyc2VzX3BhbmVsLmVycm9yICovCi0gICAgUHlDdXJzZXNFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX2N1cnNlc19wYW5lbC5lcnJvciIsIE5VTEwsIE5VTEwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJlcnJvciIsIFB5Q3Vyc2VzRXJyb3IpOworICAgIF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX2N1cnNlc19wYW5lbC5lcnJvciIsIE5VTEwsIE5VTEwpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJlcnJvciIsIF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNFcnJvcik7CiAKICAgICAvKiBNYWtlIHRoZSB2ZXJzaW9uIGF2YWlsYWJsZSAqLwogICAgIHYgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhQeUN1cnNlc1ZlcnNpb24pOwpAQCAtNTAyLDQgKzUxNSw3IEBACiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fdmVyc2lvbl9fIiwgdik7CiAgICAgUHlfREVDUkVGKHYpOwogICAgIHJldHVybiBtOworICBmYWlsOgorICAgIFB5X1hERUNSRUYobSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCmluZGV4IDVlMWFmYTkuLmRlNDVmNTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCkBAIC0xMDUsMTAgKzEwNSw2IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKIAotI2lmZGVmIF9fb3NmX18KLSNkZWZpbmUgU1RSSUNUX1NZU1ZfQ1VSU0VTICAgICAgLyogRG9uJ3QgdXNlIG5jdXJzZXMgZXh0ZW5zaW9ucyAqLwotI2VuZGlmCi0KICNpZmRlZiBfX2hwdXgKICNkZWZpbmUgU1RSSUNUX1NZU1ZfQ1VSU0VTCiAjZW5kaWYKQEAgLTEyNSw2ICsxMjEsMTAgQEAKICNpbmNsdWRlIDx0ZXJtLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTEFOR0lORk9fSAorI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEhBVkVfTkNVUlNFU19IKSAmJiAoZGVmaW5lZChzZ2kpIHx8IGRlZmluZWQoX19zdW4pIHx8IGRlZmluZWQoU0NPNSkpCiAjZGVmaW5lIFNUUklDVF9TWVNWX0NVUlNFUyAgICAgICAvKiBEb24ndCB1c2UgbmN1cnNlcyBleHRlbnNpb25zICovCiB0eXBlZGVmIGNodHlwZSBhdHRyX3Q7ICAgICAgICAgICAvKiBObyBhdHRyX3QgdHlwZSBpcyBhdmFpbGFibGUgKi8KQEAgLTE0Nyw2ICsxNDcsOCBAQAogLyogVGVsbHMgd2hldGhlciBzdGFydF9jb2xvcigpIGhhcyBiZWVuIGNhbGxlZCB0byBpbml0aWFsaXNlIGNvbG9yIHVzYWdlLiAqLwogc3RhdGljIGludCBpbml0aWFsaXNlZGNvbG9ycyA9IEZBTFNFOwogCitzdGF0aWMgY2hhciAqc2NyZWVuX2VuY29kaW5nID0gTlVMTDsKKwogLyogVXRpbGl0eSBNYWNyb3MgKi8KICNkZWZpbmUgUHlDdXJzZXNTZXR1cFRlcm1DYWxsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAoaW5pdGlhbGlzZWRfc2V0dXB0ZXJtICE9IFRSVUUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE3OSw3ICsxODEsNyBAQAogICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUN1cnNlc0NoZWNrRVJSKGludCBjb2RlLCBjaGFyICpmbmFtZSkKK1B5Q3Vyc2VzQ2hlY2tFUlIoaW50IGNvZGUsIGNvbnN0IGNoYXIgKmZuYW1lKQogewogICAgIGlmIChjb2RlICE9IEVSUikgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0xOTQsMjUgKzE5NiwxOTMgQEAKICAgICB9CiB9CiAKKy8qIENvbnZlcnQgYW4gb2JqZWN0IHRvIGEgYnl0ZSAoYW4gaW50ZWdlciBvZiB0eXBlIGNodHlwZSk6CisKKyAgIC0gaW50CisgICAtIGJ5dGVzIG9mIGxlbmd0aCAxCisgICAtIHN0ciBvZiBsZW5ndGggMQorCisgICBSZXR1cm4gMSBvbiBzdWNjZXNzLCAwIG9uIGVycm9yIChpbnZhbGlkIHR5cGUgb3IgaW50ZWdlciBvdmVyZmxvdykuICovCiBzdGF0aWMgaW50Ci1QeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoUHlPYmplY3QgKm9iaiwgY2h0eXBlICpjaCkKK1B5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShQeUN1cnNlc1dpbmRvd09iamVjdCAqd2luLCBQeU9iamVjdCAqb2JqLCBjaHR5cGUgKmNoKQogewotICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7Ci0gICAgICAgIGludCBvdmVyZmxvdzsKLSAgICAgICAgLyogWFhYIHNob3VsZCB0aGUgdHJ1bmNhdGlvbiBieSB0aGUgY2FzdCBhbHNvIGJlIHJlcG9ydGVkCi0gICAgICAgICAgIGFzIGFuIGVycm9yPyAqLwotICAgICAgICAqY2ggPSAoY2h0eXBlKSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOwotICAgICAgICBpZiAob3ZlcmZsb3cpCisgICAgbG9uZyB2YWx1ZTsKKyAgICBpZihQeUJ5dGVzX0NoZWNrKG9iaikgJiYgUHlCeXRlc19TaXplKG9iaikgPT0gMSkgeworICAgICAgICB2YWx1ZSA9ICh1bnNpZ25lZCBjaGFyKVB5Qnl0ZXNfQXNTdHJpbmcob2JqKVswXTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HZXRMZW5ndGgob2JqKSAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3QgYnl0ZXMgb3Igc3RyIG9mIGxlbmd0aCAxLCBvciBpbnQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGEgc3RyIG9mIGxlbmd0aCAlemkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikpOwogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBlbHNlIGlmKFB5Qnl0ZXNfQ2hlY2sob2JqKQotICAgICAgICAgICAgICAmJiAoUHlCeXRlc19TaXplKG9iaikgPT0gMSkpIHsKLSAgICAgICAgKmNoID0gKGNodHlwZSkgKlB5Qnl0ZXNfQXNTdHJpbmcob2JqKTsKLSAgICB9IGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopICYmIFB5VW5pY29kZV9HZXRTaXplKG9iaikgPT0gMSkgewotICAgICAgICAqY2ggPSAoY2h0eXBlKSAqUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKTsKLSAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIHZhbHVlID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOworICAgICAgICBpZiAoMTI4IDwgdmFsdWUpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOworICAgICAgICAgICAgaWYgKHdpbikKKyAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHdpbi0+ZW5jb2Rpbmc7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBzY3JlZW5fZW5jb2Rpbmc7CisgICAgICAgICAgICBieXRlcyA9IFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Qob2JqLCBlbmNvZGluZywgTlVMTCk7CisgICAgICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSA9PSAxKQorICAgICAgICAgICAgICAgIHZhbHVlID0gKHVuc2lnbmVkIGNoYXIpUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpWzBdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHZhbHVlID0gLTE7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgaW50IGxvbmdfb3ZlcmZsb3c7CisgICAgICAgIHZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KG9iaiwgJmxvbmdfb3ZlcmZsb3cpOworICAgICAgICBpZiAobG9uZ19vdmVyZmxvdykKKyAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgZ290ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICAqY2ggPSAoY2h0eXBlKXZhbHVlOworICAgIGlmICgobG9uZykqY2ggIT0gdmFsdWUpCisgICAgICAgIGdvdG8gb3ZlcmZsb3c7CiAgICAgcmV0dXJuIDE7CisKK292ZXJmbG93OgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAiYnl0ZSBkb2Vzbid0IGZpdCBpbiBjaHR5cGUiKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29udmVydCBhbiBvYmplY3QgdG8gYSBieXRlIChjaHR5cGUpIG9yIGEgY2hhcmFjdGVyIChjY2hhcl90KToKKworICAgIC0gaW50CisgICAgLSBieXRlcyBvZiBsZW5ndGggMQorICAgIC0gc3RyIG9mIGxlbmd0aCAxCisKKyAgIFJldHVybjoKKworICAgIC0gMiBpZiBvYmogaXMgYSBjaGFyYWN0ZXIgKHdyaXR0ZW4gaW50byAqd2NoKQorICAgIC0gMSBpZiBvYmogaXMgYSBieXRlICh3cml0dGVuIGludG8gKmNoKQorICAgIC0gMCBvbiBlcnJvcjogcmFpc2UgYW4gZXhjZXB0aW9uICovCitzdGF0aWMgaW50CitQeUN1cnNlc19Db252ZXJ0VG9DY2hhcl90KFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3aW4sIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNodHlwZSAqY2gKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgICAgICAgICAgICAgICAgICAgICwgY2NoYXJfdCAqd2NoCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgIGludCByZXQgPSAwOworICAgIGxvbmcgdmFsdWU7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHdjaGFyX3QgYnVmZmVyWzJdOworI2VuZGlmCisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgIGlmIChQeVVuaWNvZGVfQXNXaWRlQ2hhcihvYmosIGJ1ZmZlciwgMikgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhIHN0ciBvZiBsZW5ndGggJXppIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIG1lbXNldCh3Y2gtPmNoYXJzLCAwLCBzaXplb2Yod2NoLT5jaGFycykpOworICAgICAgICB3Y2gtPmNoYXJzWzBdID0gYnVmZmVyWzBdOworICAgICAgICByZXR1cm4gMjsKKyNlbHNlCisgICAgICAgIHJldHVybiBQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUod2luLCBvYmosIGNoKTsKKyNlbmRpZgorICAgIH0KKyAgICBlbHNlIGlmKFB5Qnl0ZXNfQ2hlY2sob2JqKSAmJiBQeUJ5dGVzX1NpemUob2JqKSA9PSAxKSB7CisgICAgICAgIHZhbHVlID0gKHVuc2lnbmVkIGNoYXIpUHlCeXRlc19Bc1N0cmluZyhvYmopWzBdOworICAgICAgICByZXQgPSAxOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIGludCBvdmVyZmxvdzsKKyAgICAgICAgdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOworICAgICAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZG9lc24ndCBmaXQgaW4gbG9uZyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgIHJldCA9IDI7CisjZWxzZQorICAgICAgICByZXQgPSAxOworI2VuZGlmCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgZ290ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgaWYgKHJldCA9PSAyKSB7CisgICAgICAgIG1lbXNldCh3Y2gtPmNoYXJzLCAwLCBzaXplb2Yod2NoLT5jaGFycykpOworICAgICAgICB3Y2gtPmNoYXJzWzBdID0gKHdjaGFyX3QpdmFsdWU7CisgICAgICAgIGlmICgobG9uZyl3Y2gtPmNoYXJzWzBdICE9IHZhbHVlKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIGRvZXNuJ3QgZml0IGluIHdjaGFyX3QiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgIHsKKyAgICAgICAgKmNoID0gKGNodHlwZSl2YWx1ZTsKKyAgICAgICAgaWYgKChsb25nKSpjaCAhPSB2YWx1ZSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGUgZG9lc24ndCBmaXQgaW4gY2h0eXBlIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmV0OworfQorCisvKiBDb252ZXJ0IGFuIG9iamVjdCB0byBhIGJ5dGUgc3RyaW5nIChjaGFyKikgb3IgYSB3aWRlIGNoYXJhY3RlciBzdHJpbmcKKyAgICh3Y2hhcl90KikuIFJldHVybjoKKworICAgIC0gMiBpZiBvYmogaXMgYSBjaGFyYWN0ZXIgc3RyaW5nICh3cml0dGVuIGludG8gKndjaCkKKyAgICAtIDEgaWYgb2JqIGlzIGEgYnl0ZSBzdHJpbmcgKHdyaXR0ZW4gaW50byAqYnl0ZXMpCisgICAgLSAwIG9uIGVycm9yOiByYWlzZSBhbiBleGNlcHRpb24gKi8KK3N0YXRpYyBpbnQKK1B5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhQeUN1cnNlc1dpbmRvd09iamVjdCAqd2luLCBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqYnl0ZXMsIHdjaGFyX3QgKip3c3RyKQoreworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICAgICAgYXNzZXJ0ICh3c3RyICE9IE5VTEwpOworICAgICAgICAqd3N0ciA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKG9iaiwgTlVMTCk7CisgICAgICAgIGlmICgqd3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAyOworI2Vsc2UKKyAgICAgICAgYXNzZXJ0ICh3c3RyID09IE5VTEwpOworICAgICAgICAqYnl0ZXMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KG9iaiwgd2luLT5lbmNvZGluZywgTlVMTCk7CisgICAgICAgIGlmICgqYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gMTsKKyNlbmRpZgorICAgIH0KKyAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKG9iaikpIHsKKyAgICAgICAgUHlfSU5DUkVGKG9iaik7CisgICAgICAgICpieXRlcyA9IG9iajsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdCBieXRlcyBvciBzdHIsIGdvdCAlcyIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIC8qIEZ1bmN0aW9uIHZlcnNpb25zIG9mIHRoZSAzIGZ1bmN0aW9ucyBmb3IgdGVzdGluZyB3aGV0aGVyIGN1cnNlcyBoYXMgYmVlbgpAQCAtMzU4LDEzICs1MjgsMzcgQEAKIC8qIEFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiBXaW5kb3cgT2JqZWN0cyAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlDdXJzZXNXaW5kb3dfTmV3KFdJTkRPVyAqd2luKQorUHlDdXJzZXNXaW5kb3dfTmV3KFdJTkRPVyAqd2luLCBjb25zdCBjaGFyICplbmNvZGluZykKIHsKICAgICBQeUN1cnNlc1dpbmRvd09iamVjdCAqd287CiAKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICAgICAgY2hhciAqYnVmZmVyWzEwMF07CisgICAgICAgIFVJTlQgY3A7CisgICAgICAgIGNwID0gR2V0Q29uc29sZU91dHB1dENQKCk7CisgICAgICAgIGlmIChjcCAhPSAwKSB7CisgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJjcCV1IiwgY3ApOworICAgICAgICAgICAgZW5jb2RpbmcgPSBidWZmZXI7CisgICAgICAgIH0KKyNlbGlmIGRlZmluZWQoQ09ERVNFVCkKKyAgICAgICAgY29uc3QgY2hhciAqY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworICAgICAgICBpZiAoY29kZXNldCAhPSBOVUxMICYmIGNvZGVzZXRbMF0gIT0gMCkKKyAgICAgICAgICAgIGVuY29kaW5nID0gY29kZXNldDsKKyNlbmRpZgorICAgICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKKyAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IjsKKyAgICB9CisKICAgICB3byA9IFB5T2JqZWN0X05FVyhQeUN1cnNlc1dpbmRvd09iamVjdCwgJlB5Q3Vyc2VzV2luZG93X1R5cGUpOwogICAgIGlmICh3byA9PSBOVUxMKSByZXR1cm4gTlVMTDsKICAgICB3by0+d2luID0gd2luOworICAgIHdvLT5lbmNvZGluZyA9IHN0cmR1cChlbmNvZGluZyk7CisgICAgaWYgKHdvLT5lbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih3byk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopd287CiB9CiAKQEAgLTM3Miw2ICs1NjYsOCBAQAogUHlDdXJzZXNXaW5kb3dfRGVhbGxvYyhQeUN1cnNlc1dpbmRvd09iamVjdCAqd28pCiB7CiAgICAgaWYgKHdvLT53aW4gIT0gc3Rkc2NyKSBkZWx3aW4od28tPndpbik7CisgICAgaWYgKHdvLT5lbmNvZGluZyAhPSBOVUxMKQorICAgICAgICBmcmVlKHdvLT5lbmNvZGluZyk7CiAgICAgUHlPYmplY3RfREVMKHdvKTsKIH0KIApAQCAtMzgxLDI5ICs1NzcsMzQgQEAKIFB5Q3Vyc2VzV2luZG93X0FkZENoKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcnRuLCB4LCB5LCB1c2VfeHkgPSBGQUxTRTsKLSAgICBQeU9iamVjdCAqdGVtcDsKLSAgICBjaHR5cGUgY2ggPSAwOworICAgIFB5T2JqZWN0ICpjaG9iajsKKyAgICBpbnQgdHlwZTsKKyAgICBjaHR5cGUgY2g7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIGNjaGFyX3Qgd2NoOworI2VuZGlmCiAgICAgYXR0cl90IGF0dHIgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOworICAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lOwogCiAgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKICAgICBjYXNlIDE6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTztjaCBvciBpbnQiLCAmdGVtcCkpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTztjaCBvciBpbnQiLCAmY2hvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbDtjaCBvciBpbnQsYXR0ciIsICZ0ZW1wLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sO2NoIG9yIGludCxhdHRyIiwgJmNob2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO3kseCxjaCBvciBpbnQiLCAmeSwgJngsICZ0ZW1wKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpTzt5LHgsY2ggb3IgaW50IiwgJnksICZ4LCAmY2hvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2w7eSx4LGNoIG9yIGludCwgYXR0ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeSwgJngsICZ0ZW1wLCAmbGF0dHIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnksICZ4LCAmY2hvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwpAQCAtNDEzLDE3ICs2MTQsMzMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgdHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb0NjaGFyX3Qoc2VsZiwgY2hvYmosICZjaCwgJndjaCk7CisgICAgaWYgKHR5cGUgPT0gMikgeworICAgICAgICBmdW5jbmFtZSA9ICJhZGRfd2NoIjsKKyAgICAgICAgd2NoLmF0dHIgPSBhdHRyOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRfd2NoKHNlbGYtPndpbix5LHgsICZ3Y2gpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ0biA9IHdhZGRfd2NoKHNlbGYtPndpbiwgJndjaCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorI2Vsc2UKKyAgICB0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvQ2NoYXJfdChzZWxmLCBjaG9iaiwgJmNoKTsKKyNlbmRpZgorICAgIGlmICh0eXBlID09IDEpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkY2giOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRjaChzZWxmLT53aW4seSx4LCBjaCB8IGF0dHIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ0biA9IHdhZGRjaChzZWxmLT53aW4sIGNoIHwgYXR0cik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKLSAgICAgICAgcnRuID0gbXZ3YWRkY2goc2VsZi0+d2luLHkseCwgY2ggfCBhdHRyKTsKLSAgICBlbHNlIHsKLSAgICAgICAgcnRuID0gd2FkZGNoKHNlbGYtPndpbiwgY2ggfCBhdHRyKTsKLSAgICB9Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiYWRkY2giKTsKKyAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sIGZ1bmNuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQzMSwyOSArNjQ4LDM0IEBACiB7CiAgICAgaW50IHJ0bjsKICAgICBpbnQgeCwgeTsKLSAgICBjaGFyICpzdHI7CisgICAgaW50IHN0cnR5cGU7CisgICAgUHlPYmplY3QgKnN0cm9iaiwgKmJ5dGVzb2JqID0gTlVMTDsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisjZW5kaWYKICAgICBhdHRyX3QgYXR0ciA9IEFfTk9STUFMICwgYXR0cl9vbGQgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOwogICAgIGludCB1c2VfeHkgPSBGQUxTRSwgdXNlX2F0dHIgPSBGQUxTRTsKKyAgICBjb25zdCBjaGFyICpmdW5jbmFtZTsKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CiAgICAgY2FzZSAxOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywicztzdHIiLCAmc3RyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87c3RyIiwgJnN0cm9iaikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2w7c3RyLGF0dHIiLCAmc3RyLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2w7c3RyLGF0dHIiLCAmc3Ryb2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX2F0dHIgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXM7aW50LGludCxzdHIiLCAmeSwgJngsICZzdHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO2ludCxpbnQsc3RyIiwgJnksICZ4LCAmc3Ryb2JqKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNsO2ludCxpbnQsc3RyLGF0dHIiLCAmeSwgJngsICZzdHIsICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9sO2ludCxpbnQsc3RyLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC00NjIsNDcgKzY4NCw3NCBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYWRkc3RyIHJlcXVpcmVzIDEgdG8gNCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosICZ3c3RyKTsKKyNlbHNlCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoc3RydHlwZSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndhZGRzdHIoc2VsZi0+d2luLHkseCxzdHIpOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZHdzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGR3c3RyKHNlbGYtPndpbix5LHgsd3N0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGR3c3RyKHNlbGYtPndpbix3c3RyKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CiAgICAgZWxzZQotICAgICAgICBydG4gPSB3YWRkc3RyKHNlbGYtPndpbixzdHIpOworI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlc29iaik7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZHN0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2FkZHN0cihzZWxmLT53aW4seSx4LHN0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGRzdHIoc2VsZi0+d2luLHN0cik7CisgICAgICAgIFB5X0RFQ1JFRihieXRlc29iaik7CisgICAgfQogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKQogICAgICAgICAodm9pZCl3YXR0cnNldChzZWxmLT53aW4sYXR0cl9vbGQpOwotICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgImFkZHN0ciIpOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgZnVuY25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNXaW5kb3dfQWRkTlN0cihQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IHJ0biwgeCwgeSwgbjsKLSAgICBjaGFyICpzdHI7CisgICAgaW50IHN0cnR5cGU7CisgICAgUHlPYmplY3QgKnN0cm9iaiwgKmJ5dGVzb2JqID0gTlVMTDsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisjZW5kaWYKICAgICBhdHRyX3QgYXR0ciA9IEFfTk9STUFMICwgYXR0cl9vbGQgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOwogICAgIGludCB1c2VfeHkgPSBGQUxTRSwgdXNlX2F0dHIgPSBGQUxTRTsKKyAgICBjb25zdCBjaGFyICpmdW5jbmFtZTsKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CiAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2k7c3RyLG4iLCAmc3RyLCAmbikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPaTtzdHIsbiIsICZzdHJvYmosICZuKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzaWw7c3RyLG4sYXR0ciIsICZzdHIsICZuLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2lsO3N0cixuLGF0dHIiLCAmc3Ryb2JqLCAmbiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV9hdHRyID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA0OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzaTt5LHgsc3RyLG4iLCAmeSwgJngsICZzdHIsICZuKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2k7eSx4LHN0cixuIiwgJnksICZ4LCAmc3Ryb2JqLCAmbikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgdXNlX3h5ID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA1OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzaWw7eSx4LHN0cixuLGF0dHIiLCAmeSwgJngsICZzdHIsICZuLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPaWw7eSx4LHN0cixuLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZuLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX3h5ID0gdXNlX2F0dHIgPSBUUlVFOwpAQCAtNTExLDE4ICs3NjAsNDEgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFkZG5zdHIgcmVxdWlyZXMgMiB0byA1IGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosICZ3c3RyKTsKKyNlbHNlCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoc3RydHlwZSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKSB7CiAgICAgICAgIGF0dHJfb2xkID0gZ2V0YXR0cnMoc2VsZi0+d2luKTsKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHIpOwogICAgIH0KLSAgICBpZiAodXNlX3h5ID09IFRSVUUpCi0gICAgICAgIHJ0biA9IG12d2FkZG5zdHIoc2VsZi0+d2luLHkseCxzdHIsbik7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIGlmIChzdHJ0eXBlID09IDIpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkbndzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRud3N0cihzZWxmLT53aW4seSx4LHdzdHIsbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGRud3N0cihzZWxmLT53aW4sd3N0cixuKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CiAgICAgZWxzZQotICAgICAgICBydG4gPSB3YWRkbnN0cihzZWxmLT53aW4sc3RyLG4pOworI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlc29iaik7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZG5zdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRuc3RyKHNlbGYtPndpbix5LHgsc3RyLG4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3YWRkbnN0cihzZWxmLT53aW4sc3RyLG4pOworICAgICAgICBQeV9ERUNSRUYoYnl0ZXNvYmopOworICAgIH0KICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHJfb2xkKTsKLSAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sICJhZGRuc3RyIik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCBmdW5jbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01NDgsMTAgKzgyMCw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZia2dkKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wLCAmYmtnZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHdia2dkKHNlbGYtPndpbiwgYmtnZCB8IGF0dHIpLCAiYmtnZCIpOwogfQpAQCAtNjA2LDEwICs4NzYsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmYmtnZCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IDEgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZia2dkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgd2JrZ2RzZXQoc2VsZi0+d2luLCBia2dkIHwgYXR0cik7CiAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIoMCwgImJrZ2RzZXQiKTsKQEAgLTYzNCwxMSArOTAyLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IoaT0wOyBpPDg7IGkrKykgewotICAgICAgICBpZiAodGVtcFtpXSAhPSBOVUxMICYmICFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcFtpXSwgJmNoW2ldKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgJWkgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIsIGkrMSk7CisgICAgICAgIGlmICh0ZW1wW2ldICE9IE5VTEwgJiYgIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wW2ldLCAmY2hbaV0pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICB3Ym9yZGVyKHNlbGYtPndpbiwKQEAgLTc4Myw3ICsxMDQ4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTgxMSwxMCArMTA3Niw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IDEgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZjaCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogI2lmZGVmIFdJTkRPV19IQVNfRkxBR1MKICAgICBpZiAoc2VsZi0+d2luLT5fZmxhZ3MgJiBfSVNQQUQpCkBAIC05MTAsNiArMTE3Myw0MCBAQAogICAgIH0KIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKK3N0YXRpYyBQeU9iamVjdCAqCitQeUN1cnNlc1dpbmRvd19HZXRfV0NoKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgeCwgeTsKKyAgICBpbnQgY3Q7CisgICAgd2ludF90IHJ0bjsKKworICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CisgICAgY2FzZSAwOgorICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGN0ID0gd2dldF93Y2goc2VsZi0+d2luLCZydG4pOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaTt5LHgiLCZ5LCZ4KSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGN0ID0gbXZ3Z2V0X3djaChzZWxmLT53aW4seSx4LCZydG4pOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2V0X3djaCByZXF1aXJlcyAwIG9yIDIgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoY3QgPT0gRVJSKSB7CisgICAgICAgIC8qIGdldF93Y2goKSByZXR1cm5zIEVSUiBpbiBub2RlbGF5IG1vZGUgKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsICJubyBpbnB1dCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhydG4pOworfQorI2VuZGlmCisKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc1dpbmRvd19HZXRTdHIoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTAwMSwxMSArMTI5OCw4IEBACiAgICAgfQogCiAgICAgaWYgKGNvZGUgIT0gRVJSKSB7Ci0gICAgICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IDEgb3IgMyBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZjaCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUih3aGxpbmUoc2VsZi0+d2luLCBjaCB8IGF0dHIsIG4pLCAiaGxpbmUiKTsKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIoY29kZSwgIndtb3ZlIik7CkBAIC0xMDQ2LDExICsxMzQwLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IDEgb3IgMyBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmNoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQogICAgICAgICBydG4gPSBtdndpbnNjaChzZWxmLT53aW4seSx4LCBjaCB8IGF0dHIpOwpAQCAtMTEyMSwyOSArMTQxMiwzNCBAQAogewogICAgIGludCBydG47CiAgICAgaW50IHgsIHk7Ci0gICAgY2hhciAqc3RyOworICAgIGludCBzdHJ0eXBlOworICAgIFB5T2JqZWN0ICpzdHJvYmosICpieXRlc29iaiA9IE5VTEw7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHdjaGFyX3QgKndzdHIgPSBOVUxMOworI2VuZGlmCiAgICAgYXR0cl90IGF0dHIgPSBBX05PUk1BTCAsIGF0dHJfb2xkID0gQV9OT1JNQUw7CiAgICAgbG9uZyBsYXR0cjsKICAgICBpbnQgdXNlX3h5ID0gRkFMU0UsIHVzZV9hdHRyID0gRkFMU0U7CisgICAgY29uc3QgY2hhciAqZnVuY25hbWU7CiAKICAgICBzd2l0Y2ggKFB5VHVwbGVfU2l6ZShhcmdzKSkgewogICAgIGNhc2UgMToKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInM7c3RyIiwgJnN0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPO3N0ciIsICZzdHJvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNsO3N0cixhdHRyIiwgJnN0ciwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9sO3N0cixhdHRyIiwgJnN0cm9iaiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV9hdHRyID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzO3kseCxzdHIiLCAmeSwgJngsICZzdHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO3kseCxzdHIiLCAmeSwgJngsICZzdHJvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpc2w7eSx4LHN0cixhdHRyIiwgJnksICZ4LCAmc3RyLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPbDt5LHgsc3RyLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC0xMTUzLDQ2ICsxNDQ5LDc1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCAmd3N0cik7CisjZWxzZQorICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosIE5VTEwpOworI2VuZGlmCisgICAgaWYgKHN0cnR5cGUgPT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndpbnNzdHIoc2VsZi0+d2luLHkseCxzdHIpOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImluc3dzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndpbnNfd3N0cihzZWxmLT53aW4seSx4LHdzdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3aW5zX3dzdHIoc2VsZi0+d2luLHdzdHIpOworICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJ0biA9IHdpbnNzdHIoc2VsZi0+d2luLHN0cik7CisjZW5kaWYKKyAgICB7CisgICAgICAgIGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzb2JqKTsKKyAgICAgICAgZnVuY25hbWUgPSAiaW5zc3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3aW5zc3RyKHNlbGYtPndpbix5LHgsc3RyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2luc3N0cihzZWxmLT53aW4sc3RyKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzb2JqKTsKKyAgICB9CiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpCiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyX29sZCk7Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiaW5zc3RyIik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCBmdW5jbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc1dpbmRvd19JbnNOU3RyKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcnRuLCB4LCB5LCBuOwotICAgIGNoYXIgKnN0cjsKKyAgICBpbnQgc3RydHlwZTsKKyAgICBQeU9iamVjdCAqc3Ryb2JqLCAqYnl0ZXNvYmogPSBOVUxMOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB3Y2hhcl90ICp3c3RyID0gTlVMTDsKKyNlbmRpZgogICAgIGF0dHJfdCBhdHRyID0gQV9OT1JNQUwgLCBhdHRyX29sZCA9IEFfTk9STUFMOwogICAgIGxvbmcgbGF0dHI7CiAgICAgaW50IHVzZV94eSA9IEZBTFNFLCB1c2VfYXR0ciA9IEZBTFNFOworICAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lOwogCiAgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKICAgICBjYXNlIDI6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzaTtzdHIsbiIsICZzdHIsICZuKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9pO3N0cixuIiwgJnN0cm9iaiwgJm4pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNpbDtzdHIsbixhdHRyIiwgJnN0ciwgJm4sICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPaWw7c3RyLG4sYXR0ciIsICZzdHJvYmosICZuLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX2F0dHIgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNpO3kseCxzdHIsbiIsICZ5LCAmeCwgJnN0ciwgJm4pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPaTt5LHgsc3RyLG4iLCAmeSwgJngsICZzdHJvYmosICZuKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDU6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNpbDt5LHgsc3RyLG4sYXR0ciIsICZ5LCAmeCwgJnN0ciwgJm4sICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9pbDt5LHgsc3RyLG4sYXR0ciIsICZ5LCAmeCwgJnN0cm9iaiwgJm4sICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC0xMjAyLDE3ICsxNTI3LDQxIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCAmd3N0cik7CisjZWxzZQorICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosIE5VTEwpOworI2VuZGlmCisgICAgaWYgKHN0cnR5cGUgPT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndpbnNuc3RyKHNlbGYtPndpbix5LHgsc3RyLG4pOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImluc25fd3N0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2luc19ud3N0cihzZWxmLT53aW4seSx4LHdzdHIsbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdpbnNfbndzdHIoc2VsZi0+d2luLHdzdHIsbik7CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQogICAgIGVsc2UKLSAgICAgICAgcnRuID0gd2luc25zdHIoc2VsZi0+d2luLHN0cixuKTsKKyNlbmRpZgorICAgIHsKKyAgICAgICAgY2hhciAqc3RyID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXNvYmopOworICAgICAgICBmdW5jbmFtZSA9ICJpbnNuc3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3aW5zbnN0cihzZWxmLT53aW4seSx4LHN0cixuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2luc25zdHIoc2VsZi0+d2luLHN0cixuKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzb2JqKTsKKyAgICB9CiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpCiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyX29sZCk7Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiaW5zbnN0ciIpOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgZnVuY25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTM4NSwxMCArMTczNCwxMiBAQAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGNoYXIgYnVmW0JVRlNJWl07CiAgICAgICAgIFB5X3NzaXplX3QgbiA9IGZyZWFkKGJ1ZiwgMSwgQlVGU0laLCBmcCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogICAgICAgICBpZiAobiA8PSAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHN0cmVhbSwgIndyaXRlIiwgInkjIiwgYnVmLCBuKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzdHJlYW0sICZQeUlkX3dyaXRlLCAieSMiLCBidWYsIG4pOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNDkzLDcgKzE4NDQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIHNlbGYtPmVuY29kaW5nKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1NjksMTYgKzE5MjAsNTEgQEAKICAgICB9CiAKICAgICBpZiAoY29kZSAhPSBFUlIpIHsKLSAgICAgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICAgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmNoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHd2bGluZShzZWxmLT53aW4sIGNoIHwgYXR0ciwgbiksICJ2bGluZSIpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihjb2RlLCAid21vdmUiKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK1B5Q3Vyc2VzV2luZG93X2dldF9lbmNvZGluZyhQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2VsZi0+ZW5jb2RpbmcpOworfQorCitzdGF0aWMgaW50CitQeUN1cnNlc1dpbmRvd19zZXRfZW5jb2RpbmcoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqYXNjaWk7CisgICAgY2hhciAqZW5jb2Rpbmc7CisKKyAgICAvKiBJdCBpcyBpbGxlZ2FsIHRvIGRlbCB3aW4uZW5jb2RpbmcgKi8KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIG1heSBub3QgYmUgZGVsZXRlZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2V0dGluZyBlbmNvZGluZyB0byBhIG5vbi1zdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBhc2NpaSA9IFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHZhbHVlKTsKKyAgICBpZiAoYXNjaWkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVuY29kaW5nID0gc3RyZHVwKFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpKSk7CisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBmcmVlKHNlbGYtPmVuY29kaW5nKTsKKyAgICBzZWxmLT5lbmNvZGluZyA9IGVuY29kaW5nOworICAgIHJldHVybiAwOworfQorCisKIHN0YXRpYyBQeU1ldGhvZERlZiBQeUN1cnNlc1dpbmRvd19NZXRob2RzW10gPSB7CiAgICAgeyJhZGRjaCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfQWRkQ2gsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJhZGRuc3RyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfQWRkTlN0ciwgTUVUSF9WQVJBUkdTfSwKQEAgLTE2MDgsNiArMTk5NCw5IEBACiAgICAgeyJnZXRia2dkIiwgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfR2V0QmtnZCwgTUVUSF9OT0FSR1N9LAogICAgIHsiZ2V0Y2giLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0dldENoLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0a2V5IiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0dldEtleSwgTUVUSF9WQVJBUkdTfSwKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgeyJnZXRfd2NoIiwgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfR2V0X1dDaCwgTUVUSF9WQVJBUkdTfSwKKyNlbmRpZgogICAgIHsiZ2V0bWF4eXgiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X2dldG1heHl4LCBNRVRIX05PQVJHU30sCiAgICAgeyJnZXRwYXJ5eCIsICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfZ2V0cGFyeXgsIE1FVEhfTk9BUkdTfSwKICAgICB7ImdldHN0ciIsICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19HZXRTdHIsIE1FVEhfVkFSQVJHU30sCkBAIC0xNjYzLDYgKzIwNTIsMTQgQEAKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgUHlHZXRTZXREZWYgUHlDdXJzZXNXaW5kb3dfZ2V0c2V0c1tdID0geworICAgIHsiZW5jb2RpbmciLAorICAgICAoZ2V0dGVyKVB5Q3Vyc2VzV2luZG93X2dldF9lbmNvZGluZywKKyAgICAgKHNldHRlcilQeUN1cnNlc1dpbmRvd19zZXRfZW5jb2RpbmcsCisgICAgICJ0aGUgdHlwZWNvZGUgY2hhcmFjdGVyIHVzZWQgdG8gY3JlYXRlIHRoZSBhcnJheSJ9LAorICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0gIC8qIHNlbnRpbmVsICovCit9OworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogUHlUeXBlT2JqZWN0IFB5Q3Vyc2VzV2luZG93X1R5cGUgPSB7CkBAIC0xNjk1LDYgKzIwOTIsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KICAgICBQeUN1cnNlc1dpbmRvd19NZXRob2RzLCAgICAgLyp0cF9tZXRob2RzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIFB5Q3Vyc2VzV2luZG93X2dldHNldHMsICAgICAvKiB0cF9nZXRzZXQgKi8KIH07CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTE4NzUsNiArMjI3NCw3IEBACiAgICAgV0lORE9XICp3aW47CiAKICAgICBQeUN1cnNlc0luaXRpYWxpc2VkOworICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogCiAgICAgc3RyY3B5KGZuLCAiL3RtcC9weS5jdXJzZXMuZ2V0d2luLlhYWFhYWCIpOwogICAgIGZkID0gbWtzdGVtcChmbik7CkBAIC0xODg2LDcgKzIyODYsNyBAQAogICAgICAgICByZW1vdmUoZm4pOwogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsIGZuKTsKICAgICB9Ci0gICAgZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc3RyZWFtLCAicmVhZCIsICIiKTsKKyAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzdHJlYW0sICZQeUlkX3JlYWQsICIiKTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKSB7CiAgICAgICAgIGZjbG9zZShmcCk7CiAgICAgICAgIHJlbW92ZShmbik7CkBAIC0xOTE3LDcgKzIzMTcsNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlDdXJzZXNFcnJvciwgY2F0Y2hhbGxfTlVMTCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTk5NSwxMCArMjM5NSwxMSBAQAogUHlDdXJzZXNfSW5pdFNjcihQeU9iamVjdCAqc2VsZikKIHsKICAgICBXSU5ET1cgKndpbjsKKyAgICBQeUN1cnNlc1dpbmRvd09iamVjdCAqd2lub2JqOwogCiAgICAgaWYgKGluaXRpYWxpc2VkID09IFRSVUUpIHsKICAgICAgICAgd3JlZnJlc2goc3Rkc2NyKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyhzdGRzY3IpOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHN0ZHNjciwgTlVMTCk7CiAgICAgfQogCiAgICAgd2luID0gaW5pdHNjcigpOwpAQCAtMjA5MCw3ICsyNDkxLDkgQEAKICAgICBTZXREaWN0SW50KCJMSU5FUyIsIExJTkVTKTsKICAgICBTZXREaWN0SW50KCJDT0xTIiwgQ09MUyk7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgd2lub2JqID0gKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbiwgTlVMTCk7CisgICAgc2NyZWVuX2VuY29kaW5nID0gd2lub2JqLT5lbmNvZGluZzsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopd2lub2JqOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjI5Miw3ICsyNjk1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIzMjQsNyArMjcyNyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbiwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNDE2LDYgKzI4MTksOCBAQAogewogICAgIFB5T2JqZWN0ICpvOwogICAgIFB5T2JqZWN0ICptID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiY3Vyc2VzIik7CisgICAgX1B5X0lERU5USUZJRVIoTElORVMpOworICAgIF9QeV9JREVOVElGSUVSKENPTFMpOwogCiAgICAgaWYgKCFtKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI0MjUsMTIgKzI4MzAsMTMgQEAKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcobSwgIkxJTkVTIiwgbykpIHsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChtLCAmUHlJZF9MSU5FUywgbykpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICBQeV9ERUNSRUYobyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoTW9kRGljdCwgIkxJTkVTIiwgbykpIHsKKyAgICAvKiBQeUlkX0xJTkVTLm9iamVjdCB3aWxsIGJlIGluaXRpYWxpemVkIGhlcmUuICovCisgICAgaWYgKFB5RGljdF9TZXRJdGVtKE1vZERpY3QsIFB5SWRfTElORVMub2JqZWN0LCBvKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIFB5X0RFQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNDQxLDEyICsyODQ3LDEyIEBACiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKG0sICJDT0xTIiwgbykpIHsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChtLCAmUHlJZF9DT0xTLCBvKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIFB5X0RFQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhNb2REaWN0LCAiQ09MUyIsIG8pKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKE1vZERpY3QsIFB5SWRfQ09MUy5vYmplY3QsIG8pKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlfREVDUkVGKG8pOwogICAgICAgICByZXR1cm4gMDsKQEAgLTI2MzgsMTAgKzMwNDQsOCBAQAogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87Y2ggb3IgaW50IiwmdGVtcCkpIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKE5VTEwsIHRlbXAsICZjaCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmcodW5jdHJsKGNoKSk7CiB9CkBAIC0yNjU0LDE2ICszMDU4LDgwIEBACiAKICAgICBQeUN1cnNlc0luaXRpYWxpc2VkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87Y2ggb3IgaW50IiwmdGVtcCkpIHJldHVybiBOVUxMOwotCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPO2NoIG9yIGludCIsJnRlbXApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisKKyAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShOVUxMLCB0ZW1wLCAmY2gpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHVuZ2V0Y2goY2gpLCAidW5nZXRjaCIpOwogfQogCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworLyogQ29udmVydCBhbiBvYmplY3QgdG8gYSBjaGFyYWN0ZXIgKHdjaGFyX3QpOgorCisgICAgLSBpbnQKKyAgICAtIHN0ciBvZiBsZW5ndGggMQorCisgICBSZXR1cm4gMSBvbiBzdWNjZXNzLCAwIG9uIGVycm9yLiAqLworc3RhdGljIGludAorUHlDdXJzZXNfQ29udmVydFRvV2NoYXJfdChQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICp3Y2gpCit7CisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIHdjaGFyX3QgYnVmZmVyWzJdOworICAgICAgICBpZiAoUHlVbmljb2RlX0FzV2lkZUNoYXIob2JqLCBidWZmZXIsIDIpICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgYSBzdHIgb2YgbGVuZ3RoICV6aSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICAqd2NoID0gYnVmZmVyWzBdOworICAgICAgICByZXR1cm4gMjsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICBsb25nIHZhbHVlOworICAgICAgICBpbnQgb3ZlcmZsb3c7CisgICAgICAgIHZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KG9iaiwgJm92ZXJmbG93KTsKKyAgICAgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IGRvZXNuJ3QgZml0IGluIGxvbmciKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgICp3Y2ggPSAod2NoYXJfdCl2YWx1ZTsKKyAgICAgICAgaWYgKChsb25nKSp3Y2ggIT0gdmFsdWUpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgZG9lc24ndCBmaXQgaW4gd2NoYXJfdCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgZ290ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5Q3Vyc2VzX1VuZ2V0X1djaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICB3Y2hhcl90IHdjaDsKKworICAgIFB5Q3Vyc2VzSW5pdGlhbGlzZWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTyIsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvV2NoYXJfdChvYmosICZ3Y2gpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUih1bmdldF93Y2god2NoKSwgInVuZ2V0X3djaCIpOworfQorI2VuZGlmCisKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc19Vc2VfRW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTI3OTEsNiArMzI1OSw5IEBACiAgICAgeyJ0eXBlYWhlYWQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1R5cGVBaGVhZCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InVuY3RybCIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVW5DdHJsLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidW5nZXRjaCIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19VbmdldENoLCBNRVRIX1ZBUkFSR1N9LAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB7InVuZ2V0X3djaCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVW5nZXRfV2NoLCBNRVRIX1ZBUkFSR1N9LAorI2VuZGlmCiAgICAgeyJ1c2VfZW52IiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VzZV9FbnYsIE1FVEhfVkFSQVJHU30sCiAjaWZuZGVmIFNUUklDVF9TWVNWX0NVUlNFUwogICAgIHsidXNlX2RlZmF1bHRfY29sb3JzIiwgIChQeUNGdW5jdGlvbilQeUN1cnNlc19Vc2VfRGVmYXVsdF9Db2xvcnMsIE1FVEhfTk9BUkdTfSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCmluZGV4IDhmNTcxYWQuLjZkZjVjMDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYwpAQCAtNyw4ICs3LDYgQEAKIAogI2luY2x1ZGUgPHRpbWUuaD4KIAotI2luY2x1ZGUgIl90aW1lLmgiCi0KIC8qIERpZmZlcmVudGlhdGUgYmV0d2VlbiBidWlsZGluZyB0aGUgY29yZSBtb2R1bGUgYW5kIGJ1aWxkaW5nIGV4dGVuc2lvbgogICogbW9kdWxlcy4KICAqLwpAQCAtNzY2LDggKzc2NCwxMCBAQAogICAgIFB5T2JqZWN0ICpuYW1lOwogfSBQeURhdGVUaW1lX1RpbWVab25lOwogCi0vKiBUaGUgaW50ZXJuZWQgVVRDIHRpbWV6b25lIGluc3RhbmNlICovIAorLyogVGhlIGludGVybmVkIFVUQyB0aW1lem9uZSBpbnN0YW5jZSAqLwogc3RhdGljIFB5T2JqZWN0ICpQeURhdGVUaW1lX1RpbWVab25lX1VUQzsKKy8qIFRoZSBpbnRlcm5lZCBFcG9jaCBkYXRldGltZSBpbnN0YW5jZSAqLworc3RhdGljIFB5T2JqZWN0ICpQeURhdGVUaW1lX0Vwb2NoOwogCiAvKiBDcmVhdGUgbmV3IHRpbWV6b25lIGluc3RhbmNlIGNoZWNraW5nIG9mZnNldCByYW5nZS4gIFRoaXMKICAgIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSBuYW1lIGFyZ3VtZW50LiAgQ2FsbGVyIG11c3QgYXNzdXJlCkBAIC04MDksMTQgKzgwOSwxNiBAQAogICAgIH0KICAgICBpZiAoR0VUX1REX01JQ1JPU0VDT05EUyhvZmZzZXQpICE9IDAgfHwgR0VUX1REX1NFQ09ORFMob2Zmc2V0KSAlIDYwICE9IDApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJvZmZzZXQgbXVzdCBiZSBhIHRpbWVkZWx0YSIKLSAgICAgICAgICAgICAgICAgICAgICIgcmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICIgcmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMsIgorICAgICAgICAgICAgICAgICAgICAgIiBub3QgJVIuIiwgb2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICgoR0VUX1REX0RBWVMob2Zmc2V0KSA9PSAtMSAmJiBHRVRfVERfU0VDT05EUyhvZmZzZXQpID09IDApIHx8CiAgICAgICAgIEdFVF9URF9EQVlTKG9mZnNldCkgPCAtMSB8fCBHRVRfVERfREFZUyhvZmZzZXQpID49IDEpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJvZmZzZXQgbXVzdCBiZSBhIHRpbWVkZWx0YSIKICAgICAgICAgICAgICAgICAgICAgICIgc3RyaWN0bHkgYmV0d2VlbiAtdGltZWRlbHRhKGhvdXJzPTI0KSBhbmQiCi0gICAgICAgICAgICAgICAgICAgICAiIHRpbWVkZWx0YShob3Vycz0yNCkuIik7CisgICAgICAgICAgICAgICAgICAgICAiIHRpbWVkZWx0YShob3Vycz0yNCksIgorICAgICAgICAgICAgICAgICAgICAgIiBub3QgJVIuIiwgb2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC05NDYsNiArOTQ4LDcgQEAKIGNhbGxfdHpuYW1lKFB5T2JqZWN0ICp0emluZm8sIFB5T2JqZWN0ICp0emluZm9hcmcpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUih0em5hbWUpOwogCiAgICAgYXNzZXJ0KHR6aW5mbyAhPSBOVUxMKTsKICAgICBhc3NlcnQoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPj0gMCk7CkBAIC05NTQsNyArOTU3LDcgQEAKICAgICBpZiAodHppbmZvID09IFB5X05vbmUpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0emluZm8sICJ0em5hbWUiLCAiTyIsIHR6aW5mb2FyZyk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX3R6bmFtZSwgIk8iLCB0emluZm9hcmcpOwogCiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8IHJlc3VsdCA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTg1LDkgKzk4OCw4IEBACiAgICAgaWYgKHR6aW5mbyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gcmVwcjsKICAgICAvKiBHZXQgcmlkIG9mIHRoZSB0cmFpbGluZyAnKScuICovCi0gICAgYXNzZXJ0KFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHIpW1B5VW5pY29kZV9HRVRfU0laRShyZXByKS0xXSA9PSAnKScpOwotICAgIHRlbXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoUHlVbmljb2RlX0FTX1VOSUNPREUocmVwciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShyZXByKSAtIDEpOworICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRF9DSEFSKHJlcHIsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHIpLTEpID09ICcpJyk7CisgICAgdGVtcCA9IFB5VW5pY29kZV9TdWJzdHJpbmcocmVwciwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwcikgLSAxKTsKICAgICBQeV9ERUNSRUYocmVwcik7CiAgICAgaWYgKHRlbXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMDc5LDYgKzEwODEsOCBAQAogICAgIFB5T2JqZWN0ICp0ZW1wOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBnZXRfdHppbmZvX21lbWJlcihvYmplY3QpOwogICAgIFB5T2JqZWN0ICpacmVwbGFjZW1lbnQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgX1B5X0lERU5USUZJRVIocmVwbGFjZSk7CisKICAgICBpZiAoWnJlcGxhY2VtZW50ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSB8fCB0emluZm8gPT0gTlVMTCkKQEAgLTEwOTksNyArMTEwMyw3IEBACiAgICAgICogc3RyZnRpbWUgZG9lc24ndCB0cmVhdCB0aGVtIGFzIGZvcm1hdCBjb2Rlcy4KICAgICAgKi8KICAgICBQeV9ERUNSRUYoWnJlcGxhY2VtZW50KTsKLSAgICBacmVwbGFjZW1lbnQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRlbXAsICJyZXBsYWNlIiwgInNzIiwgIiUiLCAiJSUiKTsKKyAgICBacmVwbGFjZW1lbnQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRlbXAsICZQeUlkX3JlcGxhY2UsICJzcyIsICIlIiwgIiUlIik7CiAgICAgUHlfREVDUkVGKHRlbXApOwogICAgIGlmIChacmVwbGFjZW1lbnQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTY2LDMxICsxMTcwLDYgQEAKICAgICBpZiAoIXBpbikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBHaXZlIHVwIGlmIHRoZSB5ZWFyIGlzIGJlZm9yZSAxMDAwLgotICAgICAqIFB5dGhvbiBzdHJmdGltZSgpIHBsYXlzIGdhbWVzIHdpdGggdGhlIHllYXIsIGFuZCBkaWZmZXJlbnQKLSAgICAgKiBnYW1lcyBkZXBlbmRpbmcgb24gd2hldGhlciBlbnZhciBQWVRIT04ySyBpcyBzZXQuICBUaGlzIG1ha2VzCi0gICAgICogeWVhcnMgYmVmb3JlIDEwMDAgYSBuaWdodG1hcmUsIGV2ZW4gaWYgdGhlIHBsYXRmb3JtIHN0cmZ0aW1lCi0gICAgICogc3VwcG9ydHMgdGhlbSAoYW5kIG5vdCBhbGwgZG8pLgotICAgICAqIFdlIGNvdWxkIGdldCBhIGxvdCBmYXJ0aGVyIGhlcmUgYnkgYXZvaWRpbmcgUHl0aG9uJ3Mgc3RyZnRpbWUKLSAgICAgKiB3cmFwcGVyIGFuZCBjYWxsaW5nIHRoZSBDIHN0cmZ0aW1lKCkgZGlyZWN0bHksIGJ1dCB0aGF0IGlzbid0Ci0gICAgICogYW4gb3B0aW9uIGluIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtb2R1bGUuCi0gICAgICovCi0gICAgewotICAgICAgICBsb25nIHllYXI7Ci0gICAgICAgIFB5T2JqZWN0ICpweXllYXIgPSBQeVNlcXVlbmNlX0dldEl0ZW0odGltZXR1cGxlLCAwKTsKLSAgICAgICAgaWYgKHB5eWVhciA9PSBOVUxMKSByZXR1cm4gTlVMTDsKLSAgICAgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayhweXllYXIpKTsKLSAgICAgICAgeWVhciA9IFB5TG9uZ19Bc0xvbmcocHl5ZWFyKTsKLSAgICAgICAgUHlfREVDUkVGKHB5eWVhcik7Ci0gICAgICAgIGlmICh5ZWFyIDwgMTAwMCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJ5ZWFyPSVsZCBpcyBiZWZvcmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICIxMDAwOyB0aGUgZGF0ZXRpbWUgc3RyZnRpbWUoKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZHMgcmVxdWlyZSB5ZWFyID49IDEwMDAiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHllYXIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvKiBTY2FuIHRoZSBpbnB1dCBmb3JtYXQsIGxvb2tpbmcgZm9yICV6LyVaLyVmIGVzY2FwZXMsIGJ1aWxkaW5nCiAgICAgICogYSBuZXcgZm9ybWF0LiAgU2luY2UgY29tcHV0aW5nIHRoZSByZXBsYWNlbWVudHMgZm9yIHRob3NlIGNvZGVzCiAgICAgICogaXMgZXhwZW5zaXZlLCBkb24ndCB1bmxlc3MgdGhleSdyZSBhY3R1YWxseSB1c2VkLgpAQCAtMTMwNywxMiArMTI4NiwxNSBAQAogICAgIHsKICAgICAgICAgUHlPYmplY3QgKmZvcm1hdDsKICAgICAgICAgUHlPYmplY3QgKnRpbWUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ0aW1lIik7CisKICAgICAgICAgaWYgKHRpbWUgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gRG9uZTsKICAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlCeXRlc19BU19TVFJJTkcobmV3Zm10KSk7CiAgICAgICAgIGlmIChmb3JtYXQgIT0gTlVMTCkgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0aW1lLCAic3RyZnRpbWUiLCAiT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHRpbWV0dXBsZSwgTlVMTCk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzdHJmdGltZSk7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfc3RyZnRpbWUsICJPTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdGltZXR1cGxlLCBOVUxMKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmb3JtYXQpOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRih0aW1lKTsKQEAgLTEzMzgsNyArMTMyMCw5IEBACiAgICAgUHlPYmplY3QgKnRpbWUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ0aW1lIik7CiAKICAgICBpZiAodGltZSAhPSBOVUxMKSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGltZSwgInRpbWUiLCAiKCkiKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF90aW1lLCAiKCkiKTsKICAgICAgICAgUHlfREVDUkVGKHRpbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTM1NSwxMyArMTMzOSwxNSBAQAogCiAgICAgdGltZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInRpbWUiKTsKICAgICBpZiAodGltZSAhPSBOVUxMKSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGltZSwgInN0cnVjdF90aW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKChpaWlpaWlpaWkpKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgbSwgZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaCwgbW0sIHNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtkYXkoeSwgbSwgZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5c19iZWZvcmVfbW9udGgoeSwgbSkgKyBkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdGZsYWcpOworICAgICAgICBfUHlfSURFTlRJRklFUihzdHJ1Y3RfdGltZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF9zdHJ1Y3RfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKChpaWlpaWlpaWkpKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgbSwgZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaCwgbW0sIHNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtkYXkoeSwgbSwgZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5c19iZWZvcmVfbW9udGgoeSwgbSkgKyBkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdGZsYWcpOwogICAgICAgICBQeV9ERUNSRUYodGltZSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNDYxLDcgKzE0NDcsNyBAQAogICAgICAgICBnb3RvIERvbmU7CiAgICAgUHlfREVDUkVGKHgxKTsKICAgICBQeV9ERUNSRUYoeDIpOwotICAgIHgxID0geDIgPSBOVUxMOworICAgIC8qIHgxID0gKi8geDIgPSBOVUxMOwogCiAgICAgLyogeDMgaGFzIGRheXMrc2Vjb25kcyBpbiBzZWNvbmRzICovCiAgICAgeDEgPSBQeU51bWJlcl9NdWx0aXBseSh4MywgdXNfcGVyX3NlY29uZCk7ICAgICAgICAgIC8qIHVzICovCkBAIC0xNTk0LDExICsxNTgwLDEyIEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnB5dXNfaW4gPSBOVUxMLCAqdGVtcCwgKnB5dXNfb3V0OwogICAgIFB5T2JqZWN0ICpyYXRpbyA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoYXNfaW50ZWdlcl9yYXRpbyk7CiAKICAgICBweXVzX2luID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKGRlbHRhKTsKICAgICBpZiAocHl1c19pbiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByYXRpbyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZmxvYXRvYmosICJhc19pbnRlZ2VyX3JhdGlvIiwgTlVMTCk7CisgICAgcmF0aW8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZsb2F0b2JqLCAmUHlJZF9hc19pbnRlZ2VyX3JhdGlvLCBOVUxMKTsKICAgICBpZiAocmF0aW8gPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICB0ZW1wID0gUHlOdW1iZXJfTXVsdGlwbHkocHl1c19pbiwgUHlUdXBsZV9HRVRfSVRFTShyYXRpbywgMCkpOwpAQCAtMTY5MiwxMSArMTY3OSwxMiBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpweXVzX2luID0gTlVMTCwgKnRlbXAsICpweXVzX291dDsKICAgICBQeU9iamVjdCAqcmF0aW8gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKGFzX2ludGVnZXJfcmF0aW8pOwogCiAgICAgcHl1c19pbiA9IGRlbHRhX3RvX21pY3Jvc2Vjb25kcyhkZWx0YSk7CiAgICAgaWYgKHB5dXNfaW4gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmF0aW8gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJhc19pbnRlZ2VyX3JhdGlvIiwgTlVMTCk7CisgICAgcmF0aW8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2FzX2ludGVnZXJfcmF0aW8sIE5VTEwpOwogICAgIGlmIChyYXRpbyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIHRlbXAgPSBQeU51bWJlcl9NdWx0aXBseShweXVzX2luLCBQeVR1cGxlX0dFVF9JVEVNKHJhdGlvLCAxKSk7CkBAIC0xODM3LDggKzE4MjUsNyBAQAogICAgICAgICByZXR1cm4gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIH0KIApAQCAtMTkzNiwxMCArMTkyMyw4IEBACiAgICAgUHlPYmplY3QgKnB5dXNfcmVtYWluZGVyOwogICAgIFB5T2JqZWN0ICpyZW1haW5kZXI7CiAKLSAgICBpZiAoIVB5RGVsdGFfQ2hlY2sobGVmdCkgfHwgIVB5RGVsdGFfQ2hlY2socmlnaHQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgcHl1c19sZWZ0ID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKChQeURhdGVUaW1lX0RlbHRhICopbGVmdCk7CiAgICAgaWYgKHB5dXNfbGVmdCA9PSBOVUxMKQpAQCAtMTk3NCwxMCArMTk1OSw4IEBACiAgICAgUHlPYmplY3QgKmRlbHRhOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5RGVsdGFfQ2hlY2sobGVmdCkgfHwgIVB5RGVsdGFfQ2hlY2socmlnaHQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgcHl1c19sZWZ0ID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKChQeURhdGVUaW1lX0RlbHRhICopbGVmdCk7CiAgICAgaWYgKHB5dXNfbGVmdCA9PSBOVUxMKQpAQCAtMjQ2MCwyNiArMjQ0MywyOSBAQAogCiAvKiBSZXR1cm4gbmV3IGRhdGUgZnJvbSBsb2NhbHRpbWUodCkuICovCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZV9sb2NhbF9mcm9tX3RpbWVfdChQeU9iamVjdCAqY2xzLCBkb3VibGUgdHMpCitkYXRlX2xvY2FsX2Zyb21fb2JqZWN0KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpvYmopCiB7CiAgICAgc3RydWN0IHRtICp0bTsKICAgICB0aW1lX3QgdDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIHQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQodHMpOwotICAgIGlmICh0ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZ0KSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB0bSA9IGxvY2FsdGltZSgmdCk7Ci0gICAgaWYgKHRtKQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXkpOwotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIGxvY2FsdGltZSgpIGZ1bmN0aW9uIik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAodG0gPT0gTlVMTCkgeworICAgICAgICAvKiB1bmNvbnZlcnRpYmxlIHRpbWUgKi8KKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXkpOwogfQogCiAvKiBSZXR1cm4gbmV3IGRhdGUgZnJvbSBjdXJyZW50IHRpbWUuCkBAIC0yNDkyLDYgKzI0NzgsNyBAQAogewogICAgIFB5T2JqZWN0ICp0aW1lOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoZnJvbXRpbWVzdGFtcCk7CiAKICAgICB0aW1lID0gdGltZV90aW1lKCk7CiAgICAgaWYgKHRpbWUgPT0gTlVMTCkKQEAgLTI1MDMsNyArMjQ5MCw3IEBACiAgICAgICogdGltZS50aW1lKCkgZGVsaXZlcnM7IGlmIHNvbWVvbmUgd2VyZSBnb256byBhYm91dCBvcHRpbWl6YXRpb24sCiAgICAgICogZGF0ZS50b2RheSgpIGNvdWxkIGdldCBhd2F5IHdpdGggcGxhaW4gQyB0aW1lKCkuCiAgICAgICovCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChjbHMsICJmcm9tdGltZXN0YW1wIiwgIk8iLCB0aW1lKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGNscywgJlB5SWRfZnJvbXRpbWVzdGFtcCwgIk8iLCB0aW1lKTsKICAgICBQeV9ERUNSRUYodGltZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1MTIsMTEgKzI0OTksMTEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6ZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQotICAgICAgICByZXN1bHQgPSBkYXRlX2xvY2FsX2Zyb21fdGltZV90KGNscywgdGltZXN0YW1wKTsKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpmcm9tdGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCisgICAgICAgIHJlc3VsdCA9IGRhdGVfbG9jYWxfZnJvbV9vYmplY3QoY2xzLCB0aW1lc3RhbXApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI1NzEsMTAgKzI1NTgsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfYWRkKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgaWYgKFB5RGF0ZVRpbWVfQ2hlY2sobGVmdCkgfHwgUHlEYXRlVGltZV9DaGVjayhyaWdodCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoUHlEYXRlVGltZV9DaGVjayhsZWZ0KSB8fCBQeURhdGVUaW1lX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworCiAgICAgaWYgKFB5RGF0ZV9DaGVjayhsZWZ0KSkgewogICAgICAgICAvKiBkYXRlICsgPz8/ICovCiAgICAgICAgIGlmIChQeURlbHRhX0NoZWNrKHJpZ2h0KSkKQEAgLTI1OTMsMTcgKzI1NzksMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKikgbGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfc3VidHJhY3QoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICBpZiAoUHlEYXRlVGltZV9DaGVjayhsZWZ0KSB8fCBQeURhdGVUaW1lX0NoZWNrKHJpZ2h0KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmIChQeURhdGVUaW1lX0NoZWNrKGxlZnQpIHx8IFB5RGF0ZVRpbWVfQ2hlY2socmlnaHQpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBpZiAoUHlEYXRlX0NoZWNrKGxlZnQpKSB7CiAgICAgICAgIGlmIChQeURhdGVfQ2hlY2socmlnaHQpKSB7CiAgICAgICAgICAgICAvKiBkYXRlIC0gZGF0ZSAqLwpAQCAtMjYyMiw4ICsyNjA2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiAKQEAgLTI2NDgsNyArMjYzMSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZV9zdHIoUHlEYXRlVGltZV9EYXRlICpzZWxmKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJpc29mb3JtYXQiLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihpc29mb3JtYXQpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKIH0KIAogCkBAIC0yNjY3LDEzICsyNjUyLDE0IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqdHVwbGU7CiAgICAgUHlPYmplY3QgKmZvcm1hdDsKKyAgICBfUHlfSURFTlRJRklFUih0aW1ldHVwbGUpOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJmb3JtYXQiLCBOVUxMfTsKIAogICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIlU6c3RyZnRpbWUiLCBrZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdHVwbGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJ0aW1ldHVwbGUiLCAiKCkiKTsKKyAgICB0dXBsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGltZXR1cGxlLCAiKCkiKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmVzdWx0ID0gd3JhcF9zdHJmdGltZSgoUHlPYmplY3QgKilzZWxmLCBmb3JtYXQsIHR1cGxlLApAQCAtMjY4NiwxNSArMjY3MiwxNiBAQAogZGF0ZV9mb3JtYXQoUHlEYXRlVGltZV9EYXRlICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqZm9ybWF0OworICAgIF9QeV9JREVOVElGSUVSKHN0cmZ0aW1lKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpfX2Zvcm1hdF9fIiwgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogaWYgdGhlIGZvcm1hdCBpcyB6ZXJvIGxlbmd0aCwgcmV0dXJuIHN0cihzZWxmKSAqLwotICAgIGlmIChQeVVuaWNvZGVfR2V0U2l6ZShmb3JtYXQpID09IDApCisgICAgaWYgKFB5VW5pY29kZV9HZXRMZW5ndGgoZm9ybWF0KSA9PSAwKQogICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKChQeU9iamVjdCAqKXNlbGYpOwogCi0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgInN0cmZ0aW1lIiwgIk8iLCBmb3JtYXQpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3N0cmZ0aW1lLCAiTyIsIGZvcm1hdCk7CiB9CiAKIC8qIElTTyBtZXRob2RzLiAqLwpAQCAtMjc0MCwxMCArMjcyNyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX0RBVEVfREFUQVNJWkUpOwogICAgICAgICByZXR1cm4gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgZWxzZQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNzc1LDI3ICsyNzYwLDEwIEBACiAgICAgcmV0dXJuIGNsb25lOwogfQogCi0vKgotICAgIEJvcnJvd2VkIGZyb20gc3RyaW5nb2JqZWN0LmMsIG9yaWdpbmFsbHkgaXQgd2FzIHN0cmluZ19oYXNoKCkKLSovCiBzdGF0aWMgUHlfaGFzaF90CiBnZW5lcmljX2hhc2godW5zaWduZWQgY2hhciAqZGF0YSwgaW50IGxlbikKIHsKLSAgICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICpwOwotICAgIHJlZ2lzdGVyIFB5X2hhc2hfdCB4OwotCi0gICAgYXNzZXJ0KF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKTsKLSAgICBwID0gKHVuc2lnbmVkIGNoYXIgKikgZGF0YTsKLSAgICB4ID0gX1B5X0hhc2hTZWNyZXQucHJlZml4OwotICAgIHggXj0gKnAgPDwgNzsKLSAgICB3aGlsZSAoLS1sZW4gPj0gMCkKLSAgICAgICAgeCA9ICgxMDAwMDAzKngpIF4gKnArKzsKLSAgICB4IF49IGxlbjsKLSAgICB4IF49IF9QeV9IYXNoU2VjcmV0LnN1ZmZpeDsKLSAgICBpZiAoeCA9PSAtMSkKLSAgICAgICAgeCA9IC0yOwotCi0gICAgcmV0dXJuIHg7CisgICAgcmV0dXJuIF9QeV9IYXNoQnl0ZXMoZGF0YSwgbGVuKTsKIH0KIAogCkBAIC0zMTAwLDEyICszMDY4LDE0IEBACiB7CiAgICAgUHlPYmplY3QgKmFyZ3MsICpzdGF0ZSwgKnRtcDsKICAgICBQeU9iamVjdCAqZ2V0aW5pdGFyZ3MsICpnZXRzdGF0ZTsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldGluaXRhcmdzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0c3RhdGVfXyk7CiAKICAgICB0bXAgPSBQeVR1cGxlX05ldygwKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZ2V0aW5pdGFyZ3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2dldGluaXRhcmdzX18iKTsKKyAgICBnZXRpbml0YXJncyA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19nZXRpbml0YXJnc19fKTsKICAgICBpZiAoZ2V0aW5pdGFyZ3MgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRpbml0YXJncywgdG1wKTsKICAgICAgICAgUHlfREVDUkVGKGdldGluaXRhcmdzKTsKQEAgLTMxMjAsNyArMzA5MCw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKICAgICB9CiAKLSAgICBnZXRzdGF0ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fZ2V0c3RhdGVfXyIpOworICAgIGdldHN0YXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2dldHN0YXRlX18pOwogICAgIGlmIChnZXRzdGF0ZSAhPSBOVUxMKSB7CiAgICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRzdGF0ZSwgdG1wKTsKICAgICAgICAgUHlfREVDUkVGKGdldHN0YXRlKTsKQEAgLTMyNDMsMTAgKzMyMTMsOCBAQAogdGltZXpvbmVfcmljaGNvbXBhcmUoUHlEYXRlVGltZV9UaW1lWm9uZSAqc2VsZiwKICAgICAgICAgICAgICAgICAgICAgIFB5RGF0ZVRpbWVfVGltZVpvbmUgKm90aGVyLCBpbnQgb3ApCiB7Ci0gICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmV0dXJuIGRlbHRhX3JpY2hjb21wYXJlKHNlbGYtPm9mZnNldCwgb3RoZXItPm9mZnNldCwgb3ApOwogfQogCkBAIC0zMjkxLDcgKzMyNTksNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWV6b25lX3N0cihQeURhdGVUaW1lX1RpbWVab25lICpzZWxmKQogewotICAgIGNoYXIgYnVmWzEwXTsKICAgICBpbnQgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHM7CiAgICAgUHlPYmplY3QgKm9mZnNldDsKICAgICBjaGFyIHNpZ247CkBAIC0zMzE3LDExICszMjg0LDkgQEAKICAgICBQeV9ERUNSRUYob2Zmc2V0KTsKICAgICBtaW51dGVzID0gZGl2bW9kKHNlY29uZHMsIDYwLCAmc2Vjb25kcyk7CiAgICAgaG91cnMgPSBkaXZtb2QobWludXRlcywgNjAsICZtaW51dGVzKTsKLSAgICBhc3NlcnQoc2Vjb25kcyA9PSAwKTsKICAgICAvKiBYWFggaWdub3JlIHN1Yi1taW51dGUgZGF0YSwgY3VyZW50bHkgbm90IGFsbG93ZWQuICovCi0gICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiVVRDJWMlMDJkOiUwMmQiLCBzaWduLCBob3VycywgbWludXRlcyk7Ci0KLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKKyAgICBhc3NlcnQoc2Vjb25kcyA9PSAwKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIlVUQyVjJTAyZDolMDJkIiwgc2lnbiwgaG91cnMsIG1pbnV0ZXMpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzYxOCw3ICszNTgzLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX3N0cihQeURhdGVUaW1lX1RpbWUgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgImlzb2Zvcm1hdCIsICIoKSIpOworICAgIF9QeV9JREVOVElGSUVSKGlzb2Zvcm1hdCk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsICIoKSIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzY5NSwxMCArMzY2Miw4IEBACiAgICAgUHlPYmplY3QgKm9mZnNldDEsICpvZmZzZXQyOwogICAgIGludCBkaWZmOwogCi0gICAgaWYgKCEgUHlUaW1lX0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghIFB5VGltZV9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIGlmIChHRVRfVElNRV9UWklORk8oc2VsZikgPT0gR0VUX1RJTUVfVFpJTkZPKG90aGVyKSkgewogICAgICAgICBkaWZmID0gbWVtY21wKCgoUHlEYXRlVGltZV9UaW1lICopc2VsZiktPmRhdGEsCkBAIC0zNzQ0LDYgKzM3MDksMTQgQEAKICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSUNST1NFQ09ORChvdGhlcik7CiAgICAgICAgIHJlc3VsdCA9IGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQorICAgIGVsc2UgaWYgKG9wID09IFB5X0VRKSB7CisgICAgICAgIHJlc3VsdCA9IFB5X0ZhbHNlOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICB9CisgICAgZWxzZSBpZiAob3AgPT0gUHlfTkUpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlfVHJ1ZTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IGNvbXBhcmUgb2Zmc2V0LW5haXZlIGFuZCAiCkBAIC00MDk5LDMzICs0MDcyLDMzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvKQogewogICAgIHN0cnVjdCB0bSAqdG07Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKICAgICB0bSA9IGYoJnRpbWV0KTsKLSAgICBpZiAodG0pIHsKLSAgICAgICAgLyogVGhlIHBsYXRmb3JtIGxvY2FsdGltZS9nbXRpbWUgbWF5IGluc2VydCBsZWFwIHNlY29uZHMsCi0gICAgICAgICAqIGluZGljYXRlZCBieSB0bS0+dG1fc2VjID4gNTkuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZW0sCi0gICAgICAgICAqIGV4Y2VwdCB0byB0aGUgZXh0ZW50IHRoYXQgcGFzc2luZyB0aGVtIG9uIHRvIHRoZSBkYXRldGltZQotICAgICAgICAgKiBjb25zdHJ1Y3RvciB3b3VsZCByYWlzZSBWYWx1ZUVycm9yIGZvciBhIHJlYXNvbiB0aGF0Ci0gICAgICAgICAqIG1hZGUgbm8gc2Vuc2UgdG8gdGhlIHVzZXIuCi0gICAgICAgICAqLwotICAgICAgICBpZiAodG0tPnRtX3NlYyA+IDU5KQotICAgICAgICAgICAgdG0tPnRtX3NlYyA9IDU5OwotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpaWlpaU8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21vbiArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWRheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9ob3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9zZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7CisgICAgaWYgKHRtID09IE5VTEwpIHsKKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSBsb2NhbHRpbWUoKS9nbXRpbWUoKSBmdW5jdGlvbiIpOwotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAvKiBUaGUgcGxhdGZvcm0gbG9jYWx0aW1lL2dtdGltZSBtYXkgaW5zZXJ0IGxlYXAgc2Vjb25kcywKKyAgICAgKiBpbmRpY2F0ZWQgYnkgdG0tPnRtX3NlYyA+IDU5LiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGVtLAorICAgICAqIGV4Y2VwdCB0byB0aGUgZXh0ZW50IHRoYXQgcGFzc2luZyB0aGVtIG9uIHRvIHRoZSBkYXRldGltZQorICAgICAqIGNvbnN0cnVjdG9yIHdvdWxkIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGEgcmVhc29uIHRoYXQKKyAgICAgKiBtYWRlIG5vIHNlbnNlIHRvIHRoZSB1c2VyLgorICAgICAqLworICAgIGlmICh0bS0+dG1fc2VjID4gNTkpCisgICAgICAgIHRtLT50bV9zZWMgPSA1OTsKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNscywgImlpaWlpaWlPIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1faG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fc2VjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOwogfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIuCkBAIC00MTM2LDMyICs0MTA5LDE1IEBACiAgKiB0byBnZXQgdGhhdCBtdWNoIHByZWNpc2lvbiAoZS5nLiwgQyB0aW1lKCkgaXNuJ3QgZ29vZCBlbm91Z2gpLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoUHlPYmplY3QgKmNscywgVE1fRlVOQyBmLCBkb3VibGUgdGltZXN0YW1wLAorZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoUHlPYmplY3QgKmNscywgVE1fRlVOQyBmLCBQeU9iamVjdCAqdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbykKIHsKICAgICB0aW1lX3QgdGltZXQ7Ci0gICAgZG91YmxlIGZyYWN0aW9uOwotICAgIGludCB1czsKKyAgICBsb25nIHVzOwogCi0gICAgdGltZXQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQodGltZXN0YW1wKTsKLSAgICBpZiAodGltZXQgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXZhbCh0aW1lc3RhbXAsICZ0aW1ldCwgJnVzKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZnJhY3Rpb24gPSB0aW1lc3RhbXAgLSAoZG91YmxlKXRpbWV0OwotICAgIHVzID0gKGludClyb3VuZF90b19sb25nKGZyYWN0aW9uICogMWU2KTsKLSAgICBpZiAodXMgPCAwKSB7Ci0gICAgICAgIC8qIFRydW5jYXRpb24gdG93YXJkcyB6ZXJvIGlzIG5vdCB3aGF0IHdlIHdhbnRlZAotICAgICAgICAgICBmb3IgbmVnYXRpdmUgbnVtYmVycyAoUHl0aG9uJ3MgbW9kIHNlbWFudGljcykgKi8KLSAgICAgICAgdGltZXQgLT0gMTsKLSAgICAgICAgdXMgKz0gMTAwMDAwMDsKLSAgICB9Ci0gICAgLyogSWYgdGltZXN0YW1wIGlzIGxlc3MgdGhhbiBvbmUgbWljcm9zZWNvbmQgc21hbGxlciB0aGFuIGEKLSAgICAgKiBmdWxsIHNlY29uZCwgcm91bmQgdXAuIE90aGVyd2lzZSwgVmFsdWVFcnJvcnMgYXJlIHJhaXNlZAotICAgICAqIGZvciBzb21lIGZsb2F0cy4gKi8KLSAgICBpZiAodXMgPT0gMTAwMDAwMCkgewotICAgICAgICB0aW1ldCArPSAxOwotICAgICAgICB1cyA9IDA7Ci0gICAgfQotICAgIHJldHVybiBkYXRldGltZV9mcm9tX3RpbWV0X2FuZF91cyhjbHMsIGYsIHRpbWV0LCB1cywgdHppbmZvKTsKKyAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0aW1ldCwgKGludCl1cywgdHppbmZvKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLgpAQCAtNDE5OSw3ICs0MTU1LDkgQEAKICAgICBpZiAoc2VsZiAhPSBOVUxMICYmIHR6aW5mbyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIENvbnZlcnQgVVRDIHRvIHR6aW5mbydzIHpvbmUuICovCiAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZjsKLSAgICAgICAgc2VsZiA9IFB5T2JqZWN0X0NhbGxNZXRob2QodHppbmZvLCAiZnJvbXV0YyIsICJPIiwgc2VsZik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGZyb211dGMpOworCisgICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfZnJvbXV0YywgIk8iLCBzZWxmKTsKICAgICAgICAgUHlfREVDUkVGKHRlbXApOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKQEAgLTQyMTksMTEgKzQxNzcsMTEgQEAKIGRhdGV0aW1lX2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBQeU9iamVjdCAqc2VsZjsKLSAgICBkb3VibGUgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICp0aW1lc3RhbXA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InRpbWVzdGFtcCIsICJ0eiIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiZHxPOmZyb210aW1lc3RhbXAiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk98Tzpmcm9tdGltZXN0YW1wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsICZ0aW1lc3RhbXAsICZ0emluZm8pKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPCAwKQpAQCAtNDIzNiw3ICs0MTk0LDkgQEAKICAgICBpZiAoc2VsZiAhPSBOVUxMICYmIHR6aW5mbyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIENvbnZlcnQgVVRDIHRvIHR6aW5mbydzIHpvbmUuICovCiAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZjsKLSAgICAgICAgc2VsZiA9IFB5T2JqZWN0X0NhbGxNZXRob2QodHppbmZvLCAiZnJvbXV0YyIsICJPIiwgc2VsZik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGZyb211dGMpOworCisgICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfZnJvbXV0YywgIk8iLCBzZWxmKTsKICAgICAgICAgUHlfREVDUkVGKHRlbXApOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKQEAgLTQyNDYsMTAgKzQyMDYsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV91dGNmcm9tdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkOnV0Y2Zyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp1dGNmcm9tdGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCiAgICAgICAgIHJlc3VsdCA9IGRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKGNscywgZ210aW1lLCB0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC00MjYwLDkgKzQyMjAsMTAgQEAKIGRhdGV0aW1lX3N0cnB0aW1lKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewogICAgIHN0YXRpYyBQeU9iamVjdCAqbW9kdWxlID0gTlVMTDsKLSAgICBjb25zdCBQeV9VTklDT0RFICpzdHJpbmcsICpmb3JtYXQ7CisgICAgUHlPYmplY3QgKnN0cmluZywgKmZvcm1hdDsKKyAgICBfUHlfSURFTlRJRklFUihfc3RycHRpbWVfZGF0ZXRpbWUpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1dTpzdHJwdGltZSIsICZzdHJpbmcsICZmb3JtYXQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVVU6c3RycHRpbWUiLCAmc3RyaW5nLCAmZm9ybWF0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAobW9kdWxlID09IE5VTEwpIHsKQEAgLTQyNzAsOCArNDIzMSw4IEBACiAgICAgICAgIGlmIChtb2R1bGUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChtb2R1bGUsICJfc3RycHRpbWVfZGF0ZXRpbWUiLCAiT3V1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMsIHN0cmluZywgZm9ybWF0KTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChtb2R1bGUsICZQeUlkX19zdHJwdGltZV9kYXRldGltZSwgIk9PTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMsIHN0cmluZywgZm9ybWF0KTsKIH0KIAogLyogUmV0dXJuIG5ldyBkYXRldGltZSBmcm9tIGRhdGUvZGF0ZXRpbWUgYW5kIHRpbWUgYXJndW1lbnRzLiAqLwpAQCAtNDM4Nyw4ICs0MzQ4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKikgbGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ1MTcsNyArNDQ3Nyw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfc3RyKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgImlzb2Zvcm1hdCIsICIocykiLCAiICIpOworICAgIF9QeV9JREVOVElGSUVSKGlzb2Zvcm1hdCk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsICIocykiLCAiICIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDU5MCw4ICs0NTUyLDcgQEAKICAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICAgICAgICAgIHJldHVybiBjbXBlcnJvcihzZWxmLCBvdGhlcik7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogCiAgICAgaWYgKEdFVF9EVF9UWklORk8oc2VsZikgPT0gR0VUX0RUX1RaSU5GTyhvdGhlcikpIHsKQEAgLTQ2MzMsNiArNDU5NCwxNCBAQAogICAgICAgICBQeV9ERUNSRUYoZGVsdGEpOwogICAgICAgICByZXN1bHQgPSBkaWZmX3RvX2Jvb2woZGlmZiwgb3ApOwogICAgIH0KKyAgICBlbHNlIGlmIChvcCA9PSBQeV9FUSkgeworICAgICAgICByZXN1bHQgPSBQeV9GYWxzZTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgfQorICAgIGVsc2UgaWYgKG9wID09IFB5X05FKSB7CisgICAgICAgIHJlc3VsdCA9IFB5X1RydWU7CisgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBjb21wYXJlIG9mZnNldC1uYWl2ZSBhbmQgIgpAQCAtNDcxOSwxNiArNDY4OCw4MyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorbG9jYWxfdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqdXRjX3RpbWUpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgc3RydWN0IHRtICp0aW1lcDsKKyAgICB0aW1lX3QgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICpkZWx0YTsKKyAgICBQeU9iamVjdCAqb25lX3NlY29uZDsKKyAgICBQeU9iamVjdCAqc2Vjb25kczsKKyAgICBQeU9iamVjdCAqbmFtZW8gPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnpvbmUgPSBOVUxMOworCisgICAgZGVsdGEgPSBkYXRldGltZV9zdWJ0cmFjdCgoUHlPYmplY3QgKil1dGNfdGltZSwgUHlEYXRlVGltZV9FcG9jaCk7CisgICAgaWYgKGRlbHRhID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG9uZV9zZWNvbmQgPSBuZXdfZGVsdGEoMCwgMSwgMCwgMCk7CisgICAgaWYgKG9uZV9zZWNvbmQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBzZWNvbmRzID0gZGl2aWRlX3RpbWVkZWx0YV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGVsdGEgKilkZWx0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvbmVfc2Vjb25kKTsKKyAgICBQeV9ERUNSRUYob25lX3NlY29uZCk7CisgICAgaWYgKHNlY29uZHMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9ERUNSRUYoZGVsdGEpOworICAgIHRpbWVzdGFtcCA9IFB5TG9uZ19Bc0xvbmcoc2Vjb25kcyk7CisgICAgUHlfREVDUkVGKHNlY29uZHMpOworICAgIGlmICh0aW1lc3RhbXAgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdGltZXAgPSBsb2NhbHRpbWUoJnRpbWVzdGFtcCk7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIHpvbmUgPSB0aW1lcC0+dG1fem9uZTsKKyAgICBkZWx0YSA9IG5ld19kZWx0YSgwLCB0aW1lcC0+dG1fZ210b2ZmLCAwLCAxKTsKKyNlbHNlIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICpsb2NhbF90aW1lOworICAgICAgICBsb2NhbF90aW1lID0gbmV3X2RhdGV0aW1lKHRpbWVwLT50bV95ZWFyICsgMTkwMCwgdGltZXAtPnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXAtPnRtX21kYXksIHRpbWVwLT50bV9ob3VyLCB0aW1lcC0+dG1fbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVwLT50bV9zZWMsIERBVEVfR0VUX01JQ1JPU0VDT05EKHV0Y190aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZS0+dHppbmZvKTsKKyAgICAgICAgaWYgKGxvY2FsX3RpbWUgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QobG9jYWxfdGltZSwgKFB5T2JqZWN0Kil1dGNfdGltZSk7CisgICAgICAgIC8qIFhYWDogYmVmb3JlIHJlbHlpbmcgb24gdHpuYW1lLCB3ZSBzaG91bGQgY29tcGFyZSBkZWx0YQorICAgICAgICAgICB0byB0aGUgb2Zmc2V0IGltcGxpZWQgYnkgdGltZXpvbmUvYWx0em9uZSAqLworICAgICAgICBpZiAoZGF5bGlnaHQgJiYgdGltZXAtPnRtX2lzZHN0ID49IDApCisgICAgICAgICAgICB6b25lID0gdHpuYW1lW3RpbWVwLT50bV9pc2RzdCAlIDJdOworICAgICAgICBlbHNlCisgICAgICAgICAgICB6b25lID0gdHpuYW1lWzBdOworICAgICAgICBQeV9ERUNSRUYobG9jYWxfdGltZSk7CisgICAgfQorI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KKyAgICBpZiAoem9uZSAhPSBOVUxMKSB7CisgICAgICAgIG5hbWVvID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSh6b25lLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgIGlmIChuYW1lbyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcmVzdWx0ID0gbmV3X3RpbWV6b25lKGRlbHRhLCBuYW1lbyk7CisgICAgUHlfREVDUkVGKG5hbWVvKTsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlEYXRlVGltZV9EYXRlVGltZSAqCiBkYXRldGltZV9hc3RpbWV6b25lKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeURhdGVUaW1lX0RhdGVUaW1lICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKm9mZnNldDsKICAgICBQeU9iamVjdCAqdGVtcDsKLSAgICBQeU9iamVjdCAqdHppbmZvOworICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOworICAgIF9QeV9JREVOVElGSUVSKGZyb211dGMpOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ0eiIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyE6YXN0aW1lem9uZSIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9UWkluZm9UeXBlLCAmdHppbmZvKSkKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Tzphc3RpbWV6b25lIiwga2V5d29yZHMsCisJCQkJICAgICAgJnR6aW5mbykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKQpAQCAtNDczNyw3ICs0NzczLDcgQEAKICAgICAvKiBDb252ZXJzaW9uIHRvIHNlbGYncyBvd24gdGltZSB6b25lIGlzIGEgTk9QLiAqLwogICAgIGlmIChzZWxmLT50emluZm8gPT0gdHppbmZvKSB7CiAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIHJldHVybiBzZWxmOwogICAgIH0KIAogICAgIC8qIENvbnZlcnQgc2VsZiB0byBVVEMuICovCkBAIC00NzUzLDIwICs0Nzg5LDI5IEBACiAgICAgfQogCiAgICAgLyogcmVzdWx0ID0gc2VsZiAtIG9mZnNldCAqLwotICAgIHJlc3VsdCA9IGFkZF9kYXRldGltZV90aW1lZGVsdGEoc2VsZiwKLSAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCwgLTEpOworICAgIHJlc3VsdCA9IChQeURhdGVUaW1lX0RhdGVUaW1lICopYWRkX2RhdGV0aW1lX3RpbWVkZWx0YShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvZmZzZXQsIC0xKTsKICAgICBQeV9ERUNSRUYob2Zmc2V0KTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogQXR0YWNoIG5ldyB0emluZm8gYW5kIGxldCBmcm9tdXRjKCkgZG8gdGhlIHJlc3QuICovCi0gICAgdGVtcCA9ICgoUHlEYXRlVGltZV9EYXRlVGltZSAqKXJlc3VsdCktPnR6aW5mbzsKLSAgICAoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilyZXN1bHQpLT50emluZm8gPSB0emluZm87Ci0gICAgUHlfSU5DUkVGKHR6aW5mbyk7CisgICAgdGVtcCA9IHJlc3VsdC0+dHppbmZvOworICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSkgeworICAgICAgICB0emluZm8gPSBsb2NhbF90aW1lem9uZShyZXN1bHQpOworICAgICAgICBpZiAodHppbmZvID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CisgICAgcmVzdWx0LT50emluZm8gPSB0emluZm87CiAgICAgUHlfREVDUkVGKHRlbXApOwogCi0gICAgdGVtcCA9IHJlc3VsdDsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHR6aW5mbywgImZyb211dGMiLCAiTyIsIHRlbXApOworICAgIHRlbXAgPSAoUHlPYmplY3QgKilyZXN1bHQ7CisgICAgcmVzdWx0ID0gKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKikKKyAgICAgICAgX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJPIiwgdGVtcCk7CiAgICAgUHlfREVDUkVGKHRlbXApOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQ3OTgsNiArNDg0Myw0NCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorZGF0ZXRpbWVfdGltZXN0YW1wKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGlmIChIQVNUWklORk8oc2VsZikgJiYgc2VsZi0+dHppbmZvICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlPYmplY3QgKmRlbHRhOworICAgICAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KChQeU9iamVjdCAqKXNlbGYsIFB5RGF0ZVRpbWVfRXBvY2gpOworICAgICAgICBpZiAoZGVsdGEgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXN1bHQgPSBkZWx0YV90b3RhbF9zZWNvbmRzKGRlbHRhKTsKKyAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0cnVjdCB0bSB0aW1lOworICAgICAgICB0aW1lX3QgdGltZXN0YW1wOworICAgICAgICBtZW1zZXQoKHZvaWQgKikgJnRpbWUsICdcMCcsIHNpemVvZihzdHJ1Y3QgdG0pKTsKKyAgICAgICAgdGltZS50bV95ZWFyID0gR0VUX1lFQVIoc2VsZikgLSAxOTAwOworICAgICAgICB0aW1lLnRtX21vbiA9IEdFVF9NT05USChzZWxmKSAtIDE7CisgICAgICAgIHRpbWUudG1fbWRheSA9IEdFVF9EQVkoc2VsZik7CisgICAgICAgIHRpbWUudG1faG91ciA9IERBVEVfR0VUX0hPVVIoc2VsZik7CisgICAgICAgIHRpbWUudG1fbWluID0gREFURV9HRVRfTUlOVVRFKHNlbGYpOworICAgICAgICB0aW1lLnRtX3NlYyA9IERBVEVfR0VUX1NFQ09ORChzZWxmKTsKKyAgICAgICAgdGltZS50bV93ZGF5ID0gLTE7CisgICAgICAgIHRpbWUudG1faXNkc3QgPSAtMTsKKyAgICAgICAgdGltZXN0YW1wID0gbWt0aW1lKCZ0aW1lKTsKKyAgICAgICAgLyogUmV0dXJuIHZhbHVlIG9mIC0xIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gYW4gZXJyb3IsIGJ1dCB0bV93ZGF5CisgICAgICAgICAqIGNhbm5vdCByZW1haW4gc2V0IHRvIC0xIGlmIG1rdGltZSBzdWNjZWVkZWQuICovCisgICAgICAgIGlmICh0aW1lc3RhbXAgPT0gKHRpbWVfdCkoLTEpICYmIHRpbWUudG1fd2RheSA9PSAtMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZSh0aW1lc3RhbXAgKyBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSAvIDFlNik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9nZXRkYXRlKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYpCiB7CiAgICAgcmV0dXJuIG5ld19kYXRlKEdFVF9ZRUFSKHNlbGYpLApAQCAtNDk0NCw2ICs1MDI3LDkgQEAKICAgICB7InRpbWV0dXBsZSIsICAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3RpbWV0dXBsZSwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiUmV0dXJuIHRpbWUgdHVwbGUsIGNvbXBhdGlibGUgd2l0aCB0aW1lLmxvY2FsdGltZSgpLiIpfSwKIAorICAgIHsidGltZXN0YW1wIiwgICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfdGltZXN0YW1wLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJSZXR1cm4gUE9TSVggdGltZXN0YW1wIGFzIGZsb2F0LiIpfSwKKwogICAgIHsidXRjdGltZXR1cGxlIiwgICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfdXRjdGltZXR1cGxlLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJSZXR1cm4gVVRDIHRpbWUgdHVwbGUsIGNvbXBhdGlibGUgd2l0aCB0aW1lLmxvY2FsdGltZSgpLiIpfSwKIApAQCAtNTIwMSw2ICs1Mjg3LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKIAorICAgIC8qIEVwb2NoICovCisgICAgUHlEYXRlVGltZV9FcG9jaCA9IG5ld19kYXRldGltZSgxOTcwLCAxLCAxLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEYXRlVGltZV9UaW1lWm9uZV9VVEMpOworICAgIGlmIChQeURhdGVUaW1lX0Vwb2NoID09IE5VTEwpCisgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIG1vZHVsZSBpbml0aWFsaXphdGlvbiAqLwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNSU5ZRUFSIiwgTUlOWUVBUik7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1BWFlFQVIiLCBNQVhZRUFSKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RibW1vZHVsZS5jIGIvTW9kdWxlcy9fZGJtbW9kdWxlLmMKaW5kZXggODI3YWNjZS4uMzI3Yjg3MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZGJtbW9kdWxlLmMKQEAgLTIxMiw2ICsyMTIsNyBAQAogewogICAgIGRibW9iamVjdCAqZHAgPSAoZGJtb2JqZWN0ICopc2VsZjsKICAgICBkYXR1bSBrZXksIHZhbDsKKyAgICBQeV9zc2l6ZV90IHNpemU7CiAKICAgICBpZiAoKGRwKS0+ZGlfZGJtID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKERibUVycm9yLApAQCAtMjE5LDggKzIyMCw5IEBACiAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICBhcmcgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcoYXJnLCBOVUxMKTsKLSAgICAgICAgaWYgKGFyZyA9PSBOVUxMKQorICAgICAgICBrZXkuZHB0ciA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGFyZywgJnNpemUpOworICAgICAgICBrZXkuZHNpemUgPSBzaXplOworICAgICAgICBpZiAoa2V5LmRwdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGFyZykpIHsKQEAgLTIyOSw4ICsyMzEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAga2V5LmRwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpOwotICAgIGtleS5kc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYXJnKTsKKyAgICBlbHNlIHsKKyAgICAgICAga2V5LmRwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpOworICAgICAgICBrZXkuZHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKGFyZyk7CisgICAgfQogICAgIHZhbCA9IGRibV9mZXRjaChkcC0+ZGlfZGJtLCBrZXkpOwogICAgIHJldHVybiB2YWwuZHB0ciAhPSBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9SRUFETUUudHh0IGIvTW9kdWxlcy9fZGVjaW1hbC9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMTdjZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL1JFQURNRS50eHQKQEAgLTAsMCArMSw0NiBAQAorCisKK0Fib3V0Cis9PT09PQorCitfZGVjaW1hbC5jIGlzIGEgd3JhcHBlciBmb3IgdGhlIGxpYm1wZGVjIGxpYnJhcnkuIGxpYm1wZGVjIGlzIGEgZmFzdCBDCitsaWJyYXJ5IGZvciBjb3JyZWN0bHktcm91bmRlZCBhcmJpdHJhcnkgcHJlY2lzaW9uIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQKK2FyaXRobWV0aWMuIEl0IGlzIGEgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgTWlrZSBDb3dsaXNoYXcvSUJNJ3MKK0dlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24uCisKKworQnVpbGQgcHJvY2VzcyBmb3IgdGhlIG1vZHVsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBcyB1c3VhbCwgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIF9kZWNpbWFsLnNvIGlzIGRyaXZlbiBieSBzZXR1cC5weSBpbiB0aGUgdG9wCitsZXZlbCBkaXJlY3RvcnkuIHNldHVwLnB5IGF1dG9kZXRlY3RzIHRoZSBmb2xsb3dpbmcgYnVpbGQgY29uZmlndXJhdGlvbnM6CisKKyAgIDEpIHg2NCAgICAgICAgIC0gNjQtYml0IFB5dGhvbiwgeDg2XzY0IHByb2Nlc3NvciAoQU1ELCBJbnRlbCkKKworICAgMikgdWludDEyOCAgICAgLSA2NC1iaXQgUHl0aG9uLCBjb21waWxlciBwcm92aWRlcyBfX3VpbnQxMjhfdCAoZ2NjKQorCisgICAzKSBhbnNpNjQgICAgICAtIDY0LWJpdCBQeXRob24sIEFOU0kgQworCisgICA0KSBwcHJvICAgICAgICAtIDMyLWJpdCBQeXRob24sIHg4NiBDUFUsIFBlbnRpdW1Qcm8gb3IgbGF0ZXIKKworICAgNSkgYW5zaTMyICAgICAgLSAzMi1iaXQgUHl0aG9uLCBBTlNJIEMKKworICAgNikgYW5zaS1sZWdhY3kgLSAzMi1iaXQgUHl0aG9uLCBjb21waWxlciB3aXRob3V0IHVpbnQ2NF90CisKKyAgIDcpIHVuaXZlcnNhbCAgIC0gTWFjIE9TIG9ubHkgKG11bHRpLWFyY2gpCisKKworSXQgaXMgcG9zc2libGUgdG8gb3ZlcnJpZGUgYXV0b2RldGVjdGlvbiBieSBleHBvcnRpbmc6CisKKyAgIFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORT12YWx1ZSwgd2hlcmUgdmFsdWUgaXMgb25lIG9mIHRoZSBhYm92ZSBvcHRpb25zLgorCisKK05PVEUKKz09PT0KKyAKK2RlY2ltYWwuc28gaXMgbm90IGJ1aWx0IGZyb20gYSBzdGF0aWMgbGlibXBkZWMuYSBzaW5jZSBkb2luZyBzbyBsZWQgdG8KK2ZhaWx1cmVzIG9uIEFJWCAodXNlciByZXBvcnQpIGFuZCBXaW5kb3dzIChtaXhpbmcgc3RhdGljIGFuZCBkeW5hbWljIENSVHMKK2NhdXNlcyBsb2NhbGUgcHJvYmxlbXMgYW5kIG1vcmUpLgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YzY0ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKQEAgLTAsMCArMSw1NjU2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSAibG9uZ2ludHJlcHIuaCIKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2luY2x1ZGUgImNvbXBsZXhvYmplY3QuaCIKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSAiZG9jc3RyaW5ncy5oIgorI2luY2x1ZGUgIm1lbW9yeS5oIgorCisKKy8qCisgKiBUeXBlIHNpemVzIHdpdGggYXNzZXJ0aW9ucyBpbiBtcGRlY2ltYWwuaCBhbmQgcHlwb3J0Lmg6CisgKiAgICBzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YoUHlfc3NpemVfdCkKKyAqICAgIHNpemVvZihzaXplX3QpID09IHNpemVvZihtcGRfdWludF90KSA9PSBzaXplb2YobXBkX3NzaXplX3QpCisgKi8KKworI2lmZGVmIFRFU1RfQ09WRVJBR0UKKyAgI3VuZGVmIFB5X0xPQ0FMX0lOTElORQorICAjZGVmaW5lIFB5X0xPQ0FMX0lOTElORSBQeV9MT0NBTAorI2VuZGlmCisKKyNkZWZpbmUgTVBEX0Zsb2F0X29wZXJhdGlvbiBNUERfTm90X2ltcGxlbWVudGVkCisKKyNkZWZpbmUgQk9VTkRTX0NIRUNLKHgsIE1JTiwgTUFYKSB4ID0gKHggPCBNSU4gfHwgTUFYIDwgeCkgPyBNQVggOiB4CisKKworLyogX1B5X0RFQ19NSU5BTExPQyA+PSBNUERfTUlOQUxMT0MgKi8KKyNkZWZpbmUgX1B5X0RFQ19NSU5BTExPQyA0CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgbXBkX3QgZGVjOworICAgIG1wZF91aW50X3QgZGF0YVtfUHlfREVDX01JTkFMTE9DXTsKK30gUHlEZWNPYmplY3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgdWludDMyX3QgKmZsYWdzOworfSBQeURlY1NpZ25hbERpY3RPYmplY3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgbXBkX2NvbnRleHRfdCBjdHg7CisgICAgUHlPYmplY3QgKnRyYXBzOworICAgIFB5T2JqZWN0ICpmbGFnczsKKyAgICBpbnQgY2FwaXRhbHM7CisjaWZuZGVmIFdJVEhPVVRfVEhSRUFEUworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyNlbmRpZgorfSBQeURlY0NvbnRleHRPYmplY3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmxvY2FsOworICAgIFB5T2JqZWN0ICpnbG9iYWw7Cit9IFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3Q7CisKKworI3VuZGVmIE1QRAorI3VuZGVmIENUWAorc3RhdGljIFB5VHlwZU9iamVjdCBQeURlY19UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCAqUHlEZWNTaWduYWxEaWN0X1R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjQ29udGV4dF9UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBQeURlY0NvbnRleHRNYW5hZ2VyX1R5cGU7CisjZGVmaW5lIFB5RGVjX0NoZWNrRXhhY3QodikgKFB5X1RZUEUodikgPT0gJlB5RGVjX1R5cGUpCisjZGVmaW5lIFB5RGVjX0NoZWNrKHYpIFB5T2JqZWN0X1R5cGVDaGVjayh2LCAmUHlEZWNfVHlwZSkKKyNkZWZpbmUgUHlEZWNTaWduYWxEaWN0X0NoZWNrKHYpIChQeV9UWVBFKHYpID09IFB5RGVjU2lnbmFsRGljdF9UeXBlKQorI2RlZmluZSBQeURlY0NvbnRleHRfQ2hlY2sodikgUHlPYmplY3RfVHlwZUNoZWNrKHYsICZQeURlY0NvbnRleHRfVHlwZSkKKyNkZWZpbmUgTVBEKHYpICgmKChQeURlY09iamVjdCAqKXYpLT5kZWMpCisjZGVmaW5lIFNkRmxhZ0FkZHIodikgKCgoUHlEZWNTaWduYWxEaWN0T2JqZWN0ICopdiktPmZsYWdzKQorI2RlZmluZSBTZEZsYWdzKHYpICgqKChQeURlY1NpZ25hbERpY3RPYmplY3QgKil2KS0+ZmxhZ3MpCisjZGVmaW5lIENUWCh2KSAoJigoUHlEZWNDb250ZXh0T2JqZWN0ICopdiktPmN0eCkKKyNkZWZpbmUgQ3R4Q2Fwcyh2KSAoKChQeURlY0NvbnRleHRPYmplY3QgKil2KS0+Y2FwaXRhbHMpCisKKworUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitpbmNyX3RydWUodm9pZCkKK3sKKyAgICBQeV9JTkNSRUYoUHlfVHJ1ZSk7CisgICAgcmV0dXJuIFB5X1RydWU7Cit9CisKK1B5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQoraW5jcl9mYWxzZSh2b2lkKQoreworICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CisgICAgcmV0dXJuIFB5X0ZhbHNlOworfQorCisKKyNpZmRlZiBXSVRIT1VUX1RIUkVBRFMKKy8qIERlZmF1bHQgbW9kdWxlIGNvbnRleHQgKi8KK3N0YXRpYyBQeU9iamVjdCAqbW9kdWxlX2NvbnRleHQgPSBOVUxMOworI2Vsc2UKKy8qIEtleSBmb3IgdGhyZWFkIHN0YXRlIGRpY3Rpb25hcnkgKi8KK3N0YXRpYyBQeU9iamVjdCAqdGxzX2NvbnRleHRfa2V5ID0gTlVMTDsKKy8qIEludmFyaWFudDogTlVMTCBvciB0aGUgbW9zdCByZWNlbnRseSBhY2Nlc3NlZCB0aHJlYWQgbG9jYWwgY29udGV4dCAqLworc3RhdGljIFB5RGVjQ29udGV4dE9iamVjdCAqY2FjaGVkX2NvbnRleHQgPSBOVUxMOworI2VuZGlmCisKKy8qIFRlbXBsYXRlIGZvciBjcmVhdGluZyBuZXcgdGhyZWFkIGNvbnRleHRzLCBjYWxsaW5nIENvbnRleHQoKSB3aXRob3V0CisgKiBhcmd1bWVudHMgYW5kIGluaXRpYWxpemluZyB0aGUgbW9kdWxlX2NvbnRleHQgb24gZmlyc3QgYWNjZXNzLiAqLworc3RhdGljIFB5T2JqZWN0ICpkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUgPSBOVUxMOworLyogQmFzaWMgYW5kIGV4dGVuZGVkIGNvbnRleHQgdGVtcGxhdGVzICovCitzdGF0aWMgUHlPYmplY3QgKmJhc2ljX2NvbnRleHRfdGVtcGxhdGUgPSBOVUxMOworc3RhdGljIFB5T2JqZWN0ICpleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlID0gTlVMTDsKKworCisvKiBFcnJvciBjb2RlcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIHNpZ25hbHMgb3IgY29uZGl0aW9ucyAqLworI2RlZmluZSBERUNfSU5WQUxJRF9TSUdOQUxTIChNUERfTWF4X3N0YXR1cysxVSkKKyNkZWZpbmUgREVDX0VSUl9PQ0NVUlJFRCAoREVDX0lOVkFMSURfU0lHTkFMUzw8MSkKKyNkZWZpbmUgREVDX0VSUk9SUyAoREVDX0lOVkFMSURfU0lHTkFMU3xERUNfRVJSX09DQ1VSUkVEKQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciAqbmFtZTsgICAvKiBjb25kaXRpb24gb3Igc2lnbmFsIG5hbWUgKi8KKyAgICBjb25zdCBjaGFyICpmcW5hbWU7IC8qIGZ1bGx5IHF1YWxpZmllZCBuYW1lICovCisgICAgdWludDMyX3QgZmxhZzsgICAgICAvKiBsaWJtcGRlYyBmbGFnICovCisgICAgUHlPYmplY3QgKmV4OyAgICAgICAvKiBjb3JyZXNwb25kaW5nIGV4Y2VwdGlvbiAqLworfSBEZWNDb25kTWFwOworCisvKiBUb3AgbGV2ZWwgRXhjZXB0aW9uOyBpbmhlcml0cyBmcm9tIEFyaXRobWV0aWNFcnJvciAqLworc3RhdGljIFB5T2JqZWN0ICpEZWNpbWFsRXhjZXB0aW9uID0gTlVMTDsKKworLyogRXhjZXB0aW9ucyB0aGF0IGNvcnJlc3BvbmQgdG8gSUVFRSBzaWduYWxzICovCisjZGVmaW5lIFNVQk5PUk1BTCA1CisjZGVmaW5lIElORVhBQ1QgNgorI2RlZmluZSBST1VOREVEIDcKKyNkZWZpbmUgU0lHTkFMX01BUF9MRU4gOQorc3RhdGljIERlY0NvbmRNYXAgc2lnbmFsX21hcFtdID0geworICB7IkludmFsaWRPcGVyYXRpb24iLCAiZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uIiwgTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24sIE5VTEx9LAorICB7IkZsb2F0T3BlcmF0aW9uIiwgImRlY2ltYWwuRmxvYXRPcGVyYXRpb24iLCBNUERfRmxvYXRfb3BlcmF0aW9uLCBOVUxMfSwKKyAgeyJEaXZpc2lvbkJ5WmVybyIsICJkZWNpbWFsLkRpdmlzaW9uQnlaZXJvIiwgTVBEX0RpdmlzaW9uX2J5X3plcm8sIE5VTEx9LAorICB7Ik92ZXJmbG93IiwgImRlY2ltYWwuT3ZlcmZsb3ciLCBNUERfT3ZlcmZsb3csIE5VTEx9LAorICB7IlVuZGVyZmxvdyIsICJkZWNpbWFsLlVuZGVyZmxvdyIsIE1QRF9VbmRlcmZsb3csIE5VTEx9LAorICB7IlN1Ym5vcm1hbCIsICJkZWNpbWFsLlN1Ym5vcm1hbCIsIE1QRF9TdWJub3JtYWwsIE5VTEx9LAorICB7IkluZXhhY3QiLCAiZGVjaW1hbC5JbmV4YWN0IiwgTVBEX0luZXhhY3QsIE5VTEx9LAorICB7IlJvdW5kZWQiLCAiZGVjaW1hbC5Sb3VuZGVkIiwgTVBEX1JvdW5kZWQsIE5VTEx9LAorICB7IkNsYW1wZWQiLCAiZGVjaW1hbC5DbGFtcGVkIiwgTVBEX0NsYW1wZWQsIE5VTEx9LAorICB7TlVMTH0KK307CisKKy8qIEV4Y2VwdGlvbnMgdGhhdCBpbmhlcml0IGZyb20gSW52YWxpZE9wZXJhdGlvbiAqLworc3RhdGljIERlY0NvbmRNYXAgY29uZF9tYXBbXSA9IHsKKyAgeyJJbnZhbGlkT3BlcmF0aW9uIiwgImRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbiIsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgTlVMTH0sCisgIHsiQ29udmVyc2lvblN5bnRheCIsICJkZWNpbWFsLkNvbnZlcnNpb25TeW50YXgiLCBNUERfQ29udmVyc2lvbl9zeW50YXgsIE5VTEx9LAorICB7IkRpdmlzaW9uSW1wb3NzaWJsZSIsICJkZWNpbWFsLkRpdmlzaW9uSW1wb3NzaWJsZSIsIE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlLCBOVUxMfSwKKyAgeyJEaXZpc2lvblVuZGVmaW5lZCIsICJkZWNpbWFsLkRpdmlzaW9uVW5kZWZpbmVkIiwgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCwgTlVMTH0sCisgIHsiSW52YWxpZENvbnRleHQiLCAiZGVjaW1hbC5JbnZhbGlkQ29udGV4dCIsIE1QRF9JbnZhbGlkX2NvbnRleHQsIE5VTEx9LAorI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgeyJNYWxsb2NFcnJvciIsICJkZWNpbWFsLk1hbGxvY0Vycm9yIiwgTVBEX01hbGxvY19lcnJvciwgTlVMTH0sCisjZW5kaWYKKyAge05VTEx9Cit9OworCitzdGF0aWMgY29uc3QgY2hhciAqZGVjX3NpZ25hbF9zdHJpbmdbTVBEX05VTV9GTEFHU10gPSB7CisgICAgIkNsYW1wZWQiLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiRGl2aXNpb25CeVplcm8iLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiSW52YWxpZE9wZXJhdGlvbiIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJJbmV4YWN0IiwKKyAgICAiSW52YWxpZE9wZXJhdGlvbiIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiRmxvYXRPcGVyYXRpb24iLAorICAgICJPdmVyZmxvdyIsCisgICAgIlJvdW5kZWQiLAorICAgICJTdWJub3JtYWwiLAorICAgICJVbmRlcmZsb3ciLAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmludmFsaWRfcm91bmRpbmdfZXJyID0KKyJ2YWxpZCB2YWx1ZXMgZm9yIHJvdW5kaW5nIGFyZTpcblwKKyAgW1JPVU5EX0NFSUxJTkcsIFJPVU5EX0ZMT09SLCBST1VORF9VUCwgUk9VTkRfRE9XTixcblwKKyAgIFJPVU5EX0hBTEZfVVAsIFJPVU5EX0hBTEZfRE9XTiwgUk9VTkRfSEFMRl9FVkVOLFxuXAorICAgUk9VTkRfMDVVUF0iOworCitzdGF0aWMgY29uc3QgY2hhciAqaW52YWxpZF9zaWduYWxzX2VyciA9CisidmFsaWQgdmFsdWVzIGZvciBzaWduYWxzIGFyZTpcblwKKyAgW0ludmFsaWRPcGVyYXRpb24sIEZsb2F0T3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybyxcblwKKyAgIE92ZXJmbG93LCBVbmRlcmZsb3csIFN1Ym5vcm1hbCwgSW5leGFjdCwgUm91bmRlZCxcblwKKyAgIENsYW1wZWRdIjsKKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyBjb25zdCBjaGFyICppbnZhbGlkX2ZsYWdzX2VyciA9CisidmFsaWQgdmFsdWVzIGZvciBfZmxhZ3Mgb3IgX3RyYXBzIGFyZTpcblwKKyAgc2lnbmFsczpcblwKKyAgICBbRGVjSUVFRUludmFsaWRPcGVyYXRpb24sIERlY0Zsb2F0T3BlcmF0aW9uLCBEZWNEaXZpc2lvbkJ5WmVybyxcblwKKyAgICAgRGVjT3ZlcmZsb3csIERlY1VuZGVyZmxvdywgRGVjU3Vibm9ybWFsLCBEZWNJbmV4YWN0LCBEZWNSb3VuZGVkLFxuXAorICAgICBEZWNDbGFtcGVkXVxuXAorICBjb25kaXRpb25zIHdoaWNoIHRyaWdnZXIgRGVjSUVFRUludmFsaWRPcGVyYXRpb246XG5cCisgICAgW0RlY0ludmFsaWRPcGVyYXRpb24sIERlY0NvbnZlcnNpb25TeW50YXgsIERlY0RpdmlzaW9uSW1wb3NzaWJsZSxcblwKKyAgICAgRGVjRGl2aXNpb25VbmRlZmluZWQsIERlY0ZwdUVycm9yLCBEZWNJbnZhbGlkQ29udGV4dCwgRGVjTWFsbG9jRXJyb3JdIjsKKyNlbmRpZgorCitzdGF0aWMgaW50Cit2YWx1ZV9lcnJvcl9pbnQoY29uc3QgY2hhciAqbWVzZykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgbWVzZyk7CisgICAgcmV0dXJuIC0xOworfQorCisjaWZkZWYgQ09ORklHXzMyCitzdGF0aWMgUHlPYmplY3QgKgordmFsdWVfZXJyb3JfcHRyKGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIG1lc2cpOworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK3R5cGVfZXJyb3JfaW50KGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzZyk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHlwZV9lcnJvcl9wdHIoY29uc3QgY2hhciAqbWVzZykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtZXNnKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludAorcnVudGltZV9lcnJvcl9pbnQoY29uc3QgY2hhciAqbWVzZykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtZXNnKTsKKyAgICByZXR1cm4gLTE7Cit9CisjZGVmaW5lIElOVEVSTkFMX0VSUk9SX0lOVChmdW5jbmFtZSkgXAorICAgIHJldHVybiBydW50aW1lX2Vycm9yX2ludCgiaW50ZXJuYWwgZXJyb3IgaW4gIiBmdW5jbmFtZSkKKworc3RhdGljIFB5T2JqZWN0ICoKK3J1bnRpbWVfZXJyb3JfcHRyKGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgbWVzZyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZGVmaW5lIElOVEVSTkFMX0VSUk9SX1BUUihmdW5jbmFtZSkgXAorICAgIHJldHVybiBydW50aW1lX2Vycm9yX3B0cigiaW50ZXJuYWwgZXJyb3IgaW4gIiBmdW5jbmFtZSkKKworc3RhdGljIHZvaWQKK2RlY190cmFwaGFuZGxlcihtcGRfY29udGV4dF90ICpjdHggVU5VU0VEKSAvKiBHQ09WX05PVF9SRUFDSEVEICovCit7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICByZXR1cm47IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZsYWdzX2FzX2V4Y2VwdGlvbih1aW50MzJfdCBmbGFncykKK3sKKyAgICBEZWNDb25kTWFwICpjbTsKKworICAgIGZvciAoY20gPSBzaWduYWxfbWFwOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIGlmIChmbGFncyZjbS0+ZmxhZykgeworICAgICAgICAgICAgcmV0dXJuIGNtLT5leDsKKyAgICAgICAgfQorICAgIH0KKworICAgIElOVEVSTkFMX0VSUk9SX1BUUigiZmxhZ3NfYXNfZXhjZXB0aW9uIik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KK30KKworUHlfTE9DQUxfSU5MSU5FKHVpbnQzMl90KQorZXhjZXB0aW9uX2FzX2ZsYWcoUHlPYmplY3QgKmV4KQoreworICAgIERlY0NvbmRNYXAgKmNtOworCisgICAgZm9yIChjbSA9IHNpZ25hbF9tYXA7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgaWYgKGNtLT5leCA9PSBleCkgeworICAgICAgICAgICAgcmV0dXJuIGNtLT5mbGFnOworICAgICAgICB9CisgICAgfQorCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCBpbnZhbGlkX3NpZ25hbHNfZXJyKTsKKyAgICByZXR1cm4gREVDX0lOVkFMSURfU0lHTkFMUzsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZsYWdzX2FzX2xpc3QodWludDMyX3QgZmxhZ3MpCit7CisgICAgUHlPYmplY3QgKmxpc3Q7CisgICAgRGVjQ29uZE1hcCAqY207CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoY20gPSBjb25kX21hcDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBpZiAoZmxhZ3MmY20tPmZsYWcpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIGNtLT5leCkgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGNtID0gc2lnbmFsX21hcCsxOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIGlmIChmbGFncyZjbS0+ZmxhZykgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgY20tPmV4KSA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbHNfYXNfbGlzdCh1aW50MzJfdCBmbGFncykKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBEZWNDb25kTWFwICpjbTsKKworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChsaXN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChjbSA9IHNpZ25hbF9tYXA7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgaWYgKGZsYWdzJmNtLT5mbGFnKSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCBjbS0+ZXgpIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgdWludDMyX3QKK2xpc3RfYXNfZmxhZ3MoUHlPYmplY3QgKmxpc3QpCit7CisgICAgUHlPYmplY3QgKml0ZW07CisgICAgdWludDMyX3QgZmxhZ3MsIHg7CisgICAgUHlfc3NpemVfdCBuLCBqOworCisgICAgYXNzZXJ0KFB5TGlzdF9DaGVjayhsaXN0KSk7CisKKyAgICBuID0gUHlMaXN0X1NpemUobGlzdCk7CisgICAgZmxhZ3MgPSAwOworICAgIGZvciAoaiA9IDA7IGogPCBuOyBqKyspIHsKKyAgICAgICAgaXRlbSA9IFB5TGlzdF9HZXRJdGVtKGxpc3QsIGopOworICAgICAgICB4ID0gZXhjZXB0aW9uX2FzX2ZsYWcoaXRlbSk7CisgICAgICAgIGlmICh4ICYgREVDX0VSUk9SUykgeworICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KKyAgICAgICAgZmxhZ3MgfD0geDsKKyAgICB9CisKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmbGFnc19hc19kaWN0KHVpbnQzMl90IGZsYWdzKQoreworICAgIERlY0NvbmRNYXAgKmNtOworICAgIFB5T2JqZWN0ICpkaWN0OworCisgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoY20gPSBzaWduYWxfbWFwOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpiID0gZmxhZ3MmY20tPmZsYWcgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShkaWN0LCBjbS0+ZXgsIGIpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGRpY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZGljdDsKK30KKworc3RhdGljIHVpbnQzMl90CitkaWN0X2FzX2ZsYWdzKFB5T2JqZWN0ICp2YWwpCit7CisgICAgUHlPYmplY3QgKmI7CisgICAgRGVjQ29uZE1hcCAqY207CisgICAgdWludDMyX3QgZmxhZ3MgPSAwOworICAgIGludCB4OworCisgICAgaWYgKCFQeURpY3RfQ2hlY2sodmFsKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgYSBzaWduYWwgZGljdCIpOworICAgICAgICByZXR1cm4gREVDX0lOVkFMSURfU0lHTkFMUzsKKyAgICB9CisKKyAgICBpZiAoUHlEaWN0X1NpemUodmFsKSAhPSBTSUdOQUxfTUFQX0xFTikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsCisgICAgICAgICAgICAiaW52YWxpZCBzaWduYWwgZGljdCIpOworICAgICAgICByZXR1cm4gREVDX0lOVkFMSURfU0lHTkFMUzsKKyAgICB9CisKKyAgICBmb3IgKGNtID0gc2lnbmFsX21hcDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBiID0gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IodmFsLCBjbS0+ZXgpOworICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBERUNfRVJSX09DQ1VSUkVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHNpZ25hbCBkaWN0Iik7CisgICAgICAgICAgICByZXR1cm4gREVDX0lOVkFMSURfU0lHTkFMUzsKKyAgICAgICAgfQorCisgICAgICAgIHggPSBQeU9iamVjdF9Jc1RydWUoYik7CisgICAgICAgIGlmICh4IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIERFQ19FUlJfT0NDVVJSRUQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHggPT0gMSkgeworICAgICAgICAgICAgZmxhZ3MgfD0gY20tPmZsYWc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitzdGF0aWMgdWludDMyX3QKK2xvbmdfYXNfZmxhZ3MoUHlPYmplY3QgKnYpCit7CisgICAgbG9uZyB4OworCisgICAgeCA9IFB5TG9uZ19Bc0xvbmcodik7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gREVDX0VSUl9PQ0NVUlJFRDsKKyAgICB9CisgICAgaWYgKHggPCAwIHx8IHggPiAobG9uZylNUERfTWF4X3N0YXR1cykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBpbnZhbGlkX2ZsYWdzX2Vycik7CisgICAgICAgIHJldHVybiBERUNfSU5WQUxJRF9TSUdOQUxTOworICAgIH0KKworICAgIHJldHVybiB4OworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK2RlY19hZGRzdGF0dXMoUHlPYmplY3QgKmNvbnRleHQsIHVpbnQzMl90IHN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHggPSBDVFgoY29udGV4dCk7CisKKyAgICBjdHgtPnN0YXR1cyB8PSBzdGF0dXM7CisgICAgaWYgKHN0YXR1cyAmIChjdHgtPnRyYXBzfE1QRF9NYWxsb2NfZXJyb3IpKSB7CisgICAgICAgIFB5T2JqZWN0ICpleCwgKnNpZ2xpc3Q7CisKKyAgICAgICAgaWYgKHN0YXR1cyAmIE1QRF9NYWxsb2NfZXJyb3IpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIGV4ID0gZmxhZ3NfYXNfZXhjZXB0aW9uKGN0eC0+dHJhcHMmc3RhdHVzKTsKKyAgICAgICAgaWYgKGV4ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAxOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICAgICAgc2lnbGlzdCA9IGZsYWdzX2FzX2xpc3QoY3R4LT50cmFwcyZzdGF0dXMpOworICAgICAgICBpZiAoc2lnbGlzdCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIFB5RXJyX1NldE9iamVjdChleCwgc2lnbGlzdCk7CisgICAgICAgIFB5X0RFQ1JFRihzaWdsaXN0KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYWxEaWN0IE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogVGhlIFNpZ25hbERpY3QgaXMgYSBNdXRhYmxlTWFwcGluZyB0aGF0IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUKKyAgIG1wZF9jb250ZXh0X3QgZmxhZ3MsIHdoaWNoIHJlc2lkZSBpbiB0aGUgY29udGV4dCBvYmplY3QuIFdoZW4gYQorICAgbmV3IGNvbnRleHQgaXMgY3JlYXRlZCwgY29udGV4dC50cmFwcyBhbmQgY29udGV4dC5mbGFncyBhcmUKKyAgIGluaXRpYWxpemVkIHRvIG5ldyBTaWduYWxEaWN0cy4gT25jZSBhIFNpZ25hbERpY3QgaXMgdGllZCB0bworICAgYSBjb250ZXh0LCBpdCBjYW5ub3QgYmUgZGVsZXRlZC4gKi8KKworc3RhdGljIGludAorc2lnbmFsZGljdF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQsIFB5T2JqZWN0ICprd2RzIFVOVVNFRCkKK3sKKyAgICBTZEZsYWdBZGRyKHNlbGYpID0gTlVMTDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK3NpZ25hbGRpY3RfbGVuKFB5T2JqZWN0ICpzZWxmIFVOVVNFRCkKK3sKKyAgICByZXR1cm4gU0lHTkFMX01BUF9MRU47Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqU2lnbmFsVHVwbGU7CitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsZGljdF9pdGVyKFB5T2JqZWN0ICpzZWxmIFVOVVNFRCkKK3sKKyAgICByZXR1cm4gUHlUdXBsZV9UeXBlLnRwX2l0ZXIoU2lnbmFsVHVwbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsZGljdF9nZXRpdGVtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5KQoreworICAgIHVpbnQzMl90IGZsYWc7CisKKyAgICBmbGFnID0gZXhjZXB0aW9uX2FzX2ZsYWcoa2V5KTsKKyAgICBpZiAoZmxhZyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFNkRmxhZ3Moc2VsZikmZmxhZyA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOworfQorCitzdGF0aWMgaW50CitzaWduYWxkaWN0X3NldGl0ZW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICB1aW50MzJfdCBmbGFnOworICAgIGludCB4OworCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgic2lnbmFsIGtleXMgY2Fubm90IGJlIGRlbGV0ZWQiKTsKKyAgICB9CisKKyAgICBmbGFnID0gZXhjZXB0aW9uX2FzX2ZsYWcoa2V5KTsKKyAgICBpZiAoZmxhZyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHggPSBQeU9iamVjdF9Jc1RydWUodmFsdWUpOworICAgIGlmICh4IDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHggPT0gMSkgeworICAgICAgICBTZEZsYWdzKHNlbGYpIHw9IGZsYWc7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBTZEZsYWdzKHNlbGYpICY9IH5mbGFnOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsZGljdF9yZXByKFB5T2JqZWN0ICpzZWxmKQoreworICAgIERlY0NvbmRNYXAgKmNtOworICAgIGNvbnN0IGNoYXIgKm5bU0lHTkFMX01BUF9MRU5dOyAvKiBuYW1lICovCisgICAgY29uc3QgY2hhciAqYltTSUdOQUxfTUFQX0xFTl07IC8qIGJvb2wgKi8KKyAgICBpbnQgaTsKKworICAgIGFzc2VydChTSUdOQUxfTUFQX0xFTiA9PSA5KTsKKworICAgIGZvciAoY209c2lnbmFsX21hcCwgaT0wOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrLCBpKyspIHsKKyAgICAgICAgbltpXSA9IGNtLT5mcW5hbWU7CisgICAgICAgIGJbaV0gPSBTZEZsYWdzKHNlbGYpJmNtLT5mbGFnID8gIlRydWUiIDogIkZhbHNlIjsKKyAgICB9CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAiezxjbGFzcyAnJXMnPjolcywgPGNsYXNzICclcyc+OiVzLCA8Y2xhc3MgJyVzJz46JXMsICIKKyAgICAgICAgICI8Y2xhc3MgJyVzJz46JXMsIDxjbGFzcyAnJXMnPjolcywgPGNsYXNzICclcyc+OiVzLCAiCisgICAgICAgICAiPGNsYXNzICclcyc+OiVzLCA8Y2xhc3MgJyVzJz46JXMsIDxjbGFzcyAnJXMnPjolc30iLAorICAgICAgICAgICAgblswXSwgYlswXSwgblsxXSwgYlsxXSwgblsyXSwgYlsyXSwKKyAgICAgICAgICAgIG5bM10sIGJbM10sIG5bNF0sIGJbNF0sIG5bNV0sIGJbNV0sCisgICAgICAgICAgICBuWzZdLCBiWzZdLCBuWzddLCBiWzddLCBuWzhdLCBiWzhdKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbGRpY3RfcmljaGNvbXBhcmUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApCit7CisgICAgUHlPYmplY3QgKnJlcyA9IFB5X05vdEltcGxlbWVudGVkOworCisgICAgYXNzZXJ0KFB5RGVjU2lnbmFsRGljdF9DaGVjayh2KSk7CisKKyAgICBpZiAob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpIHsKKyAgICAgICAgaWYgKFB5RGVjU2lnbmFsRGljdF9DaGVjayh3KSkgeworICAgICAgICAgICAgcmVzID0gKFNkRmxhZ3Modik9PVNkRmxhZ3ModykpIF4gKG9wPT1QeV9ORSkgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlEaWN0X0NoZWNrKHcpKSB7CisgICAgICAgICAgICB1aW50MzJfdCBmbGFncyA9IGRpY3RfYXNfZmxhZ3Modyk7CisgICAgICAgICAgICBpZiAoZmxhZ3MgJiBERUNfRVJST1JTKSB7CisgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgREVDX0lOVkFMSURfU0lHTkFMUykgeworICAgICAgICAgICAgICAgICAgICAvKiBub24tY29tcGFyYWJsZTogUHlfTm90SW1wbGVtZW50ZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJlcyA9IChTZEZsYWdzKHYpPT1mbGFncykgXiAob3A9PVB5X05FKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X0lOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxkaWN0X2NvcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICByZXR1cm4gZmxhZ3NfYXNfZGljdChTZEZsYWdzKHNlbGYpKTsKK30KKworCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBzaWduYWxkaWN0X2FzX21hcHBpbmcgPSB7CisgICAgKGxlbmZ1bmMpc2lnbmFsZGljdF9sZW4sICAgICAgICAgIC8qIG1wX2xlbmd0aCAqLworICAgIChiaW5hcnlmdW5jKXNpZ25hbGRpY3RfZ2V0aXRlbSwgICAvKiBtcF9zdWJzY3JpcHQgKi8KKyAgICAob2Jqb2JqYXJncHJvYylzaWduYWxkaWN0X3NldGl0ZW0gLyogbXBfYXNzX3N1YnNjcmlwdCAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIHNpZ25hbGRpY3RfbWV0aG9kc1tdID0geworICAgIHsgImNvcHkiLCAoUHlDRnVuY3Rpb24pc2lnbmFsZGljdF9jb3B5LCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAge05VTEwsIE5VTEx9Cit9OworCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEZWNTaWduYWxEaWN0TWl4aW5fVHlwZSA9Cit7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKDAsIDApCisgICAgImRlY2ltYWwuU2lnbmFsRGljdE1peGluIiwgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeURlY1NpZ25hbERpY3RPYmplY3QpLCAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgKGdldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIChzZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYykgc2lnbmFsZGljdF9yZXByLCAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgICZzaWduYWxkaWN0X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQsICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIChyZXByZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgKHNldGF0dHJvZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAoUHlCdWZmZXJQcm9jcyAqKSAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFR8UHlfVFBGTEFHU19CQVNFVFlQRXwKKyAgICBQeV9UUEZMQUdTX0hBVkVfR0MsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICBzaWduYWxkaWN0X3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgKGdldGl0ZXJmdW5jKXNpZ25hbGRpY3RfaXRlciwgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgc2lnbmFsZGljdF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2Mpc2lnbmFsZGljdF9pbml0LCAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQgT2JqZWN0LCBQYXJ0IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIERlY19DT05URVhUX0dFVF9TU0laRShtZW0pIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY29udGV4dF9nZXQjI21lbShQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG1wZF9nZXQjI21lbShDVFgoc2VsZikpKTsgXAorfQorCisjZGVmaW5lIERlY19DT05URVhUX0dFVF9VTE9ORyhtZW0pIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitjb250ZXh0X2dldCMjbWVtKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcobXBkX2dldCMjbWVtKENUWChzZWxmKSkpOyBcCit9CisKK0RlY19DT05URVhUX0dFVF9TU0laRShwcmVjKQorRGVjX0NPTlRFWFRfR0VUX1NTSVpFKGVtYXgpCitEZWNfQ09OVEVYVF9HRVRfU1NJWkUoZW1pbikKK0RlY19DT05URVhUX0dFVF9TU0laRShyb3VuZCkKK0RlY19DT05URVhUX0dFVF9TU0laRShjbGFtcCkKKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK0RlY19DT05URVhUX0dFVF9VTE9ORyh0cmFwcykKK0RlY19DT05URVhUX0dFVF9VTE9ORyhzdGF0dXMpCisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfZ2V0Y2FwaXRhbHMoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoQ3R4Q2FwcyhzZWxmKSk7Cit9CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9nZXRhbGxjcihQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhtcGRfZ2V0Y3IoQ1RYKHNlbGYpKSk7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfZ2V0ZXRpbnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChtcGRfZXRpbnkoQ1RYKHNlbGYpKSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2dldGV0b3AoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChtcGRfZXRvcChDVFgoc2VsZikpKTsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXRwcmVjKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0cHJlYyhjdHgsIHgpKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoCisgICAgICAgICAgICAidmFsaWQgcmFuZ2UgZm9yIHByZWMgaXMgWzEsIE1BWF9QUkVDXSIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldGVtaW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRlbWluKGN0eCwgeCkpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgKKyAgICAgICAgICAgICJ2YWxpZCByYW5nZSBmb3IgRW1pbiBpcyBbTUlOX0VNSU4sIDBdIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0ZW1heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldGVtYXgoY3R4LCB4KSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KAorICAgICAgICAgICAgInZhbGlkIHJhbmdlIGZvciBFbWF4IGlzIFswLCBNQVhfRU1BWF0iKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworI2lmZGVmIENPTkZJR18zMgorc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfdW5zYWZlX3NldHByZWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHggPSBDVFgoc2VsZik7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICh4IDwgMSB8fCB4ID4gMTA3MDAwMDAwMEwpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX3B0cigKKyAgICAgICAgICAgICJ2YWxpZCByYW5nZSBmb3IgdW5zYWZlIHByZWMgaXMgWzEsIDEwNzAwMDAwMDBdIik7CisgICAgfQorCisgICAgY3R4LT5wcmVjID0geDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfdW5zYWZlX3NldGVtaW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHggPSBDVFgoc2VsZik7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICh4IDwgLTEwNzAwMDAwMDBMIHx8IHggPiAwKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9wdHIoCisgICAgICAgICAgICAidmFsaWQgcmFuZ2UgZm9yIHVuc2FmZSBlbWluIGlzIFstMTA3MDAwMDAwMCwgMF0iKTsKKyAgICB9CisKKyAgICBjdHgtPmVtaW4gPSB4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF91bnNhZmVfc2V0ZW1heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eCA9IENUWChzZWxmKTsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHggPCAwIHx8IHggPiAxMDcwMDAwMDAwTCkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfcHRyKAorICAgICAgICAgICAgInZhbGlkIHJhbmdlIGZvciB1bnNhZmUgZW1heCBpcyBbMCwgMTA3MDAwMDAwMF0iKTsKKyAgICB9CisKKyAgICBjdHgtPmVtYXggPSB4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0cm91bmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEJPVU5EU19DSEVDSyh4LCBJTlRfTUlOLCBJTlRfTUFYKTsKKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0cm91bmQoY3R4LCAoaW50KXgpKSB7CisgICAgICAgIHJldHVybiB0eXBlX2Vycm9yX2ludChpbnZhbGlkX3JvdW5kaW5nX2Vycik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0Y2FwaXRhbHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoeCAhPSAwICYmIHggIT0gMSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KAorICAgICAgICAgICAgInZhbGlkIHZhbHVlcyBmb3IgY2FwaXRhbHMgYXJlIDAgb3IgMSIpOworICAgIH0KKyAgICBDdHhDYXBzKHNlbGYpID0gKGludCl4OworCisgICAgcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitzdGF0aWMgaW50Citjb250ZXh0X3NldHRyYXBzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICB1aW50MzJfdCBmbGFnczsKKworICAgIGZsYWdzID0gbG9uZ19hc19mbGFncyh2YWx1ZSk7CisgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXR0cmFwcyhjdHgsIGZsYWdzKSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9JTlQoImNvbnRleHRfc2V0dHJhcHMiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50Citjb250ZXh0X3NldHRyYXBzX2xpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgdWludDMyX3QgZmxhZ3M7CisKKyAgICBmbGFncyA9IGxpc3RfYXNfZmxhZ3ModmFsdWUpOworICAgIGlmIChmbGFncyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0dHJhcHMoY3R4LCBmbGFncykpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHRyYXBzX2xpc3QiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXR0cmFwc19kaWN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIHVpbnQzMl90IGZsYWdzOworCisgICAgaWYgKFB5RGVjU2lnbmFsRGljdF9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgZmxhZ3MgPSBTZEZsYWdzKHZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZsYWdzID0gZGljdF9hc19mbGFncyh2YWx1ZSk7CisgICAgICAgIGlmIChmbGFncyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0dHJhcHMoY3R4LCBmbGFncykpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHRyYXBzX2RpY3QiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0c3RhdHVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICB1aW50MzJfdCBmbGFnczsKKworICAgIGZsYWdzID0gbG9uZ19hc19mbGFncyh2YWx1ZSk7CisgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRzdGF0dXMoY3R4LCBmbGFncykpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHN0YXR1cyIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0c3RhdHVzX2xpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgdWludDMyX3QgZmxhZ3M7CisKKyAgICBmbGFncyA9IGxpc3RfYXNfZmxhZ3ModmFsdWUpOworICAgIGlmIChmbGFncyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0c3RhdHVzKGN0eCwgZmxhZ3MpKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX0lOVCgiY29udGV4dF9zZXRzdGF0dXNfbGlzdCIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldHN0YXR1c19kaWN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIHVpbnQzMl90IGZsYWdzOworCisgICAgaWYgKFB5RGVjU2lnbmFsRGljdF9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgZmxhZ3MgPSBTZEZsYWdzKHZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZsYWdzID0gZGljdF9hc19mbGFncyh2YWx1ZSk7CisgICAgICAgIGlmIChmbGFncyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0c3RhdHVzKGN0eCwgZmxhZ3MpKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX0lOVCgiY29udGV4dF9zZXRzdGF0dXNfZGljdCIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldGNsYW1wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBCT1VORFNfQ0hFQ0soeCwgSU5UX01JTiwgSU5UX01BWCk7CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldGNsYW1wKGN0eCwgKGludCl4KSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KCJ2YWxpZCB2YWx1ZXMgZm9yIGNsYW1wIGFyZSAwIG9yIDEiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0YWxsY3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEJPVU5EU19DSEVDSyh4LCBJTlRfTUlOLCBJTlRfTUFYKTsKKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0Y3IoY3R4LCAoaW50KXgpKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoInZhbGlkIHZhbHVlcyBmb3IgX2FsbGNyIGFyZSAwIG9yIDEiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9nZXRhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgInRyYXBzIikgPT0gMCkgeworICAgICAgICAgICAgcmV0dmFsID0gKChQeURlY0NvbnRleHRPYmplY3QgKilzZWxmKS0+dHJhcHM7CisgICAgICAgICAgICBQeV9JTkNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJmbGFncyIpID09IDApIHsKKyAgICAgICAgICAgIHJldHZhbCA9ICgoUHlEZWNDb250ZXh0T2JqZWN0ICopc2VsZiktPmZsYWdzOworICAgICAgICAgICAgUHlfSU5DUkVGKHJldHZhbCk7CisgICAgICAgICAgICByZXR1cm4gcmV0dmFsOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKHNlbGYsIG5hbWUpOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgImNvbnRleHQgYXR0cmlidXRlcyBjYW5ub3QgYmUgZGVsZXRlZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgInRyYXBzIikgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHRfc2V0dHJhcHNfZGljdChzZWxmLCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJmbGFncyIpID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0X3NldHN0YXR1c19kaWN0KHNlbGYsIHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQeU9iamVjdF9HZW5lcmljU2V0QXR0cihzZWxmLCBuYW1lLCB2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2NsZWFyX3RyYXBzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIENUWChzZWxmKS0+dHJhcHMgPSAwOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9jbGVhcl9mbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBDVFgoc2VsZiktPnN0YXR1cyA9IDA7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNkZWZpbmUgREVDX0RGTFRfRU1BWCA5OTk5OTkKKyNkZWZpbmUgREVDX0RGTFRfRU1JTiAtOTk5OTk5CisKK3N0YXRpYyBtcGRfY29udGV4dF90IGRmbHRfY3R4ID0geworICAyOCwgREVDX0RGTFRfRU1BWCwgREVDX0RGTFRfRU1JTiwKKyAgTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb258TVBEX0RpdmlzaW9uX2J5X3plcm98TVBEX092ZXJmbG93LAorICAwLCAwLCBNUERfUk9VTkRfSEFMRl9FVkVOLCAwLCAxCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncyBVTlVTRUQsIFB5T2JqZWN0ICprd2RzIFVOVVNFRCkKK3sKKyAgICBQeURlY0NvbnRleHRPYmplY3QgKnNlbGYgPSBOVUxMOworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKworICAgIGlmICh0eXBlID09ICZQeURlY0NvbnRleHRfVHlwZSkgeworICAgICAgICBzZWxmID0gUHlPYmplY3RfTmV3KFB5RGVjQ29udGV4dE9iamVjdCwgJlB5RGVjQ29udGV4dF9UeXBlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNlbGYgPSAoUHlEZWNDb250ZXh0T2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgfQorCisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmLT50cmFwcyA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopUHlEZWNTaWduYWxEaWN0X1R5cGUsIE5VTEwpOworICAgIGlmIChzZWxmLT50cmFwcyA9PSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmZsYWdzID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2VsZi0+ZmxhZ3MgPSBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKVB5RGVjU2lnbmFsRGljdF9UeXBlLCBOVUxMKTsKKyAgICBpZiAoc2VsZi0+ZmxhZ3MgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKworICAgIGlmIChkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUpIHsKKyAgICAgICAgKmN0eCA9ICpDVFgoZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgICpjdHggPSBkZmx0X2N0eDsKKyAgICB9CisKKyAgICBTZEZsYWdBZGRyKHNlbGYtPnRyYXBzKSA9ICZjdHgtPnRyYXBzOworICAgIFNkRmxhZ0FkZHIoc2VsZi0+ZmxhZ3MpID0gJmN0eC0+c3RhdHVzOworCisgICAgQ3R4Q2FwcyhzZWxmKSA9IDE7CisjaWZuZGVmIFdJVEhPVVRfVEhSRUFEUworICAgIHNlbGYtPnRzdGF0ZSA9IE5VTEw7CisjZW5kaWYKKworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworfQorCitzdGF0aWMgdm9pZAorY29udGV4dF9kZWFsbG9jKFB5RGVjQ29udGV4dE9iamVjdCAqc2VsZikKK3sKKyNpZm5kZWYgV0lUSE9VVF9USFJFQURTCisgICAgaWYgKHNlbGYgPT0gY2FjaGVkX2NvbnRleHQpIHsKKyAgICAgICAgY2FjaGVkX2NvbnRleHQgPSBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIFB5X1hERUNSRUYoc2VsZi0+dHJhcHMpOworICAgIFB5X1hERUNSRUYoc2VsZi0+ZmxhZ3MpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7Cit9CisKK3N0YXRpYyBpbnQKK2dldHJvdW5kKFB5T2JqZWN0ICp2KQoreworICAgIGNvbnN0IGNoYXIgKnM7CisgICAgbG9uZyB4OworICAgIGludCBpOworCisgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICB4ID0gUHlMb25nX0FzTG9uZyh2KTsKKyAgICAgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIEJPVU5EU19DSEVDSyh4LCAwLCBJTlRfTUFYKTsKKyAgICAgICAgcmV0dXJuIChpbnQpeDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBNUERfUk9VTkRfR1VBUkQ7IGkrKykgeworICAgICAgICAgICAgcyA9IG1wZF9yb3VuZF9zdHJpbmdbaV07CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcodiwgcykgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHR5cGVfZXJyb3JfaW50KCJpbnZhbGlkIHJvdW5kaW5nIG1vZGUiKTsKK30KKworc3RhdGljIGludAorY29udGV4dF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geworICAgICAgInByZWMiLCAicm91bmRpbmciLCAiRW1pbiIsICJFbWF4IiwgImNhcGl0YWxzIiwgImNsYW1wIiwKKyAgICAgICJmbGFncyIsICJ0cmFwcyIsIE5VTEwKKyAgICB9OworICAgIFB5T2JqZWN0ICpyb3VuZGluZyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRyYXBzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RhdHVzID0gTlVMTDsKKyAgICBtcGRfY29udGV4dF90ICpjdHgsIHQ7CisgICAgaW50IGNhcGl0YWxzID0gMTsKKyAgICBpbnQgcmV0OworCisgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOworICAgIGN0eCA9IENUWChzZWxmKTsKKworICAgIHQgPSAqY3R4OworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKAorICAgICAgICAgICAgYXJncywga3dkcywKKyAgICAgICAgICAgICJ8bk9ubmlpT08iLCBrd2xpc3QsCisgICAgICAgICAgICAmdC5wcmVjLCAmcm91bmRpbmcsICZ0LmVtaW4sICZ0LmVtYXgsICZjYXBpdGFscywgJnQuY2xhbXAsCisgICAgICAgICAgICAmc3RhdHVzLCAmdHJhcHMKKyAgICAgICAgICkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAocm91bmRpbmcgIT0gTlVMTCkgeworICAgICAgICB0LnJvdW5kID0gZ2V0cm91bmQocm91bmRpbmcpOworICAgICAgICBpZiAodC5yb3VuZCA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbXBkX3FzZXRwcmVjKGN0eCwgdC5wcmVjKSB8fAorICAgICAgICAhbXBkX3FzZXRlbWluKGN0eCwgdC5lbWluKSB8fAorICAgICAgICAhbXBkX3FzZXRlbWF4KGN0eCwgdC5lbWF4KSB8fAorICAgICAgICAhbXBkX3FzZXRjbGFtcChjdHgsIHQuY2xhbXApKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoImludmFsaWQgY29udGV4dCIpOworICAgIH0KKyAgICBpZiAoIW1wZF9xc2V0cm91bmQoY3R4LCB0LnJvdW5kKSB8fAorICAgICAgICAhbXBkX3FzZXR0cmFwcyhjdHgsIHQudHJhcHMpIHx8CisgICAgICAgICFtcGRfcXNldHN0YXR1cyhjdHgsIHQuc3RhdHVzKSkgeworICAgICAgICByZXR1cm4gdHlwZV9lcnJvcl9pbnQoImludmFsaWQgY29udGV4dCIpOworICAgIH0KKworICAgIGlmIChjYXBpdGFscyAhPSAwICYmIGNhcGl0YWxzICE9IDEpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgiaW52YWxpZCBjb250ZXh0Iik7CisgICAgfQorICAgIEN0eENhcHMoc2VsZikgPSBjYXBpdGFsczsKKworICAgIGlmICh0cmFwcyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeUxpc3RfQ2hlY2sodHJhcHMpKSB7CisgICAgICAgICAgICByZXQgPSBjb250ZXh0X3NldHRyYXBzX2xpc3Qoc2VsZiwgdHJhcHMpOworICAgICAgICB9CisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorICAgICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2sodHJhcHMpKSB7CisgICAgICAgICAgICByZXQgPSBjb250ZXh0X3NldHRyYXBzKHNlbGYsIHRyYXBzLCBOVUxMKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0ID0gY29udGV4dF9zZXR0cmFwc19kaWN0KHNlbGYsIHRyYXBzKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3RhdHVzICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5TGlzdF9DaGVjayhzdGF0dXMpKSB7CisgICAgICAgICAgICByZXQgPSBjb250ZXh0X3NldHN0YXR1c19saXN0KHNlbGYsIHN0YXR1cyk7CisgICAgICAgIH0KKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisgICAgICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhzdGF0dXMpKSB7CisgICAgICAgICAgICByZXQgPSBjb250ZXh0X3NldHN0YXR1cyhzZWxmLCBzdGF0dXMsIE5VTEwpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXQgPSBjb250ZXh0X3NldHN0YXR1c19kaWN0KHNlbGYsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfcmVwcihQeURlY0NvbnRleHRPYmplY3QgKnNlbGYpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIGNoYXIgZmxhZ3NbTVBEX01BWF9TSUdOQUxfTElTVF07CisgICAgY2hhciB0cmFwc1tNUERfTUFYX1NJR05BTF9MSVNUXTsKKyAgICBpbnQgbiwgbWVtOworCisgICAgYXNzZXJ0KFB5RGVjQ29udGV4dF9DaGVjayhzZWxmKSk7CisgICAgY3R4ID0gQ1RYKHNlbGYpOworCisgICAgbWVtID0gTVBEX01BWF9TSUdOQUxfTElTVDsKKyAgICBuID0gbXBkX2xzbnByaW50X3NpZ25hbHMoZmxhZ3MsIG1lbSwgY3R4LT5zdGF0dXMsIGRlY19zaWduYWxfc3RyaW5nKTsKKyAgICBpZiAobiA8IDAgfHwgbiA+PSBtZW0pIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfUFRSKCJjb250ZXh0X3JlcHIiKTsKKyAgICB9CisKKyAgICBuID0gbXBkX2xzbnByaW50X3NpZ25hbHModHJhcHMsIG1lbSwgY3R4LT50cmFwcywgZGVjX3NpZ25hbF9zdHJpbmcpOworICAgIGlmIChuIDwgMCB8fCBuID49IG1lbSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9QVFIoImNvbnRleHRfcmVwciIpOworICAgIH0KKworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIkNvbnRleHQocHJlYz0lemQsIHJvdW5kaW5nPSVzLCBFbWluPSV6ZCwgRW1heD0lemQsICIKKyAgICAgICAgICAgICAgICAiY2FwaXRhbHM9JWQsIGNsYW1wPSVkLCBmbGFncz0lcywgdHJhcHM9JXMpIiwKKyAgICAgICAgIGN0eC0+cHJlYywgbXBkX3JvdW5kX3N0cmluZ1tjdHgtPnJvdW5kXSwgY3R4LT5lbWluLCBjdHgtPmVtYXgsCisgICAgICAgICBzZWxmLT5jYXBpdGFscywgY3R4LT5jbGFtcCwgZmxhZ3MsIHRyYXBzKTsKK30KKworc3RhdGljIHZvaWQKK2luaXRfYmFzaWNfY29udGV4dChQeU9iamVjdCAqdikKK3sKKyAgICBtcGRfY29udGV4dF90IGN0eCA9IGRmbHRfY3R4OworCisgICAgY3R4LnByZWMgPSA5OworICAgIGN0eC50cmFwcyB8PSAoTVBEX1VuZGVyZmxvd3xNUERfQ2xhbXBlZCk7CisgICAgY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfVVA7CisKKyAgICAqQ1RYKHYpID0gY3R4OworICAgIEN0eENhcHModikgPSAxOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9leHRlbmRlZF9jb250ZXh0KFB5T2JqZWN0ICp2KQoreworICAgIG1wZF9jb250ZXh0X3QgY3R4ID0gZGZsdF9jdHg7CisKKyAgICBjdHgucHJlYyA9IDk7CisgICAgY3R4LnRyYXBzID0gMDsKKworICAgICpDVFgodikgPSBjdHg7CisgICAgQ3R4Q2Fwcyh2KSA9IDE7Cit9CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisvKiBGYWN0b3J5IGZ1bmN0aW9uIGZvciBjcmVhdGluZyBJRUVFIGludGVyY2hhbmdlIGZvcm1hdCBjb250ZXh0cyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2llZWVfY29udGV4dChQeU9iamVjdCAqZHVtbXkgVU5VU0VELCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKyAgICBtcGRfc3NpemVfdCBiaXRzOworICAgIG1wZF9jb250ZXh0X3QgY3R4OworCisgICAgYml0cyA9IFB5TG9uZ19Bc1NzaXplX3Qodik7CisgICAgaWYgKGJpdHMgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGJpdHMgPD0gMCB8fCBiaXRzID4gSU5UX01BWCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAobXBkX2llZWVfY29udGV4dCgmY3R4LCAoaW50KWJpdHMpIDwgMCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGNvbnRleHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKSZQeURlY0NvbnRleHRfVHlwZSwgTlVMTCk7CisgICAgaWYgKGNvbnRleHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgKkNUWChjb250ZXh0KSA9IGN0eDsKKworICAgIHJldHVybiBjb250ZXh0OworCitlcnJvcjoKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMiwgd2l0aCBhIG1heGltdW0gb2YgJWQiLAorICAgICAgICBNUERfSUVFRV9DT05URVhUX01BWF9CSVRTKTsKKworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2NvcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqY29weTsKKworICAgIGNvcHkgPSBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKSZQeURlY0NvbnRleHRfVHlwZSwgTlVMTCk7CisgICAgaWYgKGNvcHkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAqQ1RYKGNvcHkpID0gKkNUWChzZWxmKTsKKyAgICBDVFgoY29weSktPm5ld3RyYXAgPSAwOworICAgIEN0eENhcHMoY29weSkgPSBDdHhDYXBzKHNlbGYpOworCisgICAgcmV0dXJuIGNvcHk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X3JlZHVjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpmbGFnczsKKyAgICBQeU9iamVjdCAqdHJhcHM7CisgICAgUHlPYmplY3QgKnJldDsKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisKKyAgICBmbGFncyA9IHNpZ25hbHNfYXNfbGlzdChjdHgtPnN0YXR1cyk7CisgICAgaWYgKGZsYWdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHRyYXBzID0gc2lnbmFsc19hc19saXN0KGN0eC0+dHJhcHMpOworICAgIGlmICh0cmFwcyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihmbGFncyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldCA9IFB5X0J1aWxkVmFsdWUoCisgICAgICAgICAgICAiTyhuc25uaWlPTykiLAorICAgICAgICAgICAgUHlfVFlQRShzZWxmKSwKKyAgICAgICAgICAgIGN0eC0+cHJlYywgbXBkX3JvdW5kX3N0cmluZ1tjdHgtPnJvdW5kXSwgY3R4LT5lbWluLCBjdHgtPmVtYXgsCisgICAgICAgICAgICBDdHhDYXBzKHNlbGYpLCBjdHgtPmNsYW1wLCBmbGFncywgdHJhcHMKKyAgICApOworCisgICAgUHlfREVDUkVGKGZsYWdzKTsKKyAgICBQeV9ERUNSRUYodHJhcHMpOworICAgIHJldHVybiByZXQ7Cit9CisKKworc3RhdGljIFB5R2V0U2V0RGVmIGNvbnRleHRfZ2V0c2V0cyBbXSA9Cit7CisgIHsgInByZWMiLCAoZ2V0dGVyKWNvbnRleHRfZ2V0cHJlYywgKHNldHRlciljb250ZXh0X3NldHByZWMsIE5VTEwsIE5VTEx9LAorICB7ICJFbWF4IiwgKGdldHRlciljb250ZXh0X2dldGVtYXgsIChzZXR0ZXIpY29udGV4dF9zZXRlbWF4LCBOVUxMLCBOVUxMfSwKKyAgeyAiRW1pbiIsIChnZXR0ZXIpY29udGV4dF9nZXRlbWluLCAoc2V0dGVyKWNvbnRleHRfc2V0ZW1pbiwgTlVMTCwgTlVMTH0sCisgIHsgInJvdW5kaW5nIiwgKGdldHRlciljb250ZXh0X2dldHJvdW5kLCAoc2V0dGVyKWNvbnRleHRfc2V0cm91bmQsIE5VTEwsIE5VTEx9LAorICB7ICJjYXBpdGFscyIsIChnZXR0ZXIpY29udGV4dF9nZXRjYXBpdGFscywgKHNldHRlciljb250ZXh0X3NldGNhcGl0YWxzLCBOVUxMLCBOVUxMfSwKKyAgeyAiY2xhbXAiLCAoZ2V0dGVyKWNvbnRleHRfZ2V0Y2xhbXAsIChzZXR0ZXIpY29udGV4dF9zZXRjbGFtcCwgTlVMTCwgTlVMTH0sCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorICB7ICJfYWxsY3IiLCAoZ2V0dGVyKWNvbnRleHRfZ2V0YWxsY3IsIChzZXR0ZXIpY29udGV4dF9zZXRhbGxjciwgTlVMTCwgTlVMTH0sCisgIHsgIl90cmFwcyIsIChnZXR0ZXIpY29udGV4dF9nZXR0cmFwcywgKHNldHRlciljb250ZXh0X3NldHRyYXBzLCBOVUxMLCBOVUxMfSwKKyAgeyAiX2ZsYWdzIiwgKGdldHRlciljb250ZXh0X2dldHN0YXR1cywgKHNldHRlciljb250ZXh0X3NldHN0YXR1cywgTlVMTCwgTlVMTH0sCisjZW5kaWYKKyAge05VTEx9Cit9OworCisKKyNkZWZpbmUgQ09OVEVYVF9DSEVDSyhvYmopIFwKKyAgICBpZiAoIVB5RGVjQ29udGV4dF9DaGVjayhvYmopKSB7ICAgICAgICBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICAgXAorICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgYSBjb250ZXh0Iik7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENPTlRFWFRfQ0hFQ0tfVkEob2JqKSBcCisgICAgaWYgKCFQeURlY0NvbnRleHRfQ2hlY2sob2JqKSkgeyAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICJvcHRpb25hbCBhcmd1bWVudCBtdXN0IGJlIGEgY29udGV4dCIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgR2xvYmFsLCB0aHJlYWQgbG9jYWwgYW5kIHRlbXBvcmFyeSBjb250ZXh0cyAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBXSVRIT1VUX1RIUkVBRFMKKy8qIFJldHVybiBib3Jyb3dlZCByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY29udGV4dC4gV2hlbiBjb21waWxlZAorICogd2l0aG91dCB0aHJlYWRzLCB0aGlzIGlzIGFsd2F5cyB0aGUgbW9kdWxlIGNvbnRleHQuICovCitzdGF0aWMgaW50IG1vZHVsZV9jb250ZXh0X3NldCA9IDA7CitzdGF0aWMgUHlPYmplY3QgKgorY3VycmVudF9jb250ZXh0KHZvaWQpCit7CisgICAgLyogSW4gZGVjaW1hbC5weSwgdGhlIG1vZHVsZSBjb250ZXh0IGlzIGF1dG9tYXRpY2FsbHkgaW5pdGlhbGl6ZWQKKyAgICAgKiBmcm9tIHRoZSBEZWZhdWx0Q29udGV4dCB3aGVuIGl0IGlzIGZpcnN0IGFjY2Vzc2VkLiBUaGlzCisgICAgICogY29tcGxpY2F0ZXMgdGhlIGNvZGUgYW5kIGhhcyBhIHNwZWVkIHBlbmFsdHkgb2YgMS0yJS4gKi8KKyAgICBpZiAobW9kdWxlX2NvbnRleHRfc2V0KSB7CisgICAgICAgIHJldHVybiBtb2R1bGVfY29udGV4dDsKKyAgICB9CisKKyAgICAqQ1RYKG1vZHVsZV9jb250ZXh0KSA9ICpDVFgoZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlKTsKKyAgICBDVFgobW9kdWxlX2NvbnRleHQpLT5zdGF0dXMgPSAwOworICAgIENUWChtb2R1bGVfY29udGV4dCktPm5ld3RyYXAgPSAwOworICAgIEN0eENhcHMobW9kdWxlX2NvbnRleHQpID0gQ3R4Q2FwcyhkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUpOworCisgICAgbW9kdWxlX2NvbnRleHRfc2V0ID0gMTsKKyAgICByZXR1cm4gbW9kdWxlX2NvbnRleHQ7Cit9CisKKy8qIGN0eG9iaiA6PSBib3Jyb3dlZCByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY29udGV4dCAqLworI2RlZmluZSBDVVJSRU5UX0NPTlRFWFQoY3R4b2JqKSBcCisgICAgY3R4b2JqID0gY3VycmVudF9jb250ZXh0KCkKKworLyogY3R4IDo9IHBvaW50ZXIgdG8gdGhlIG1wZF9jb250ZXh0X3Qgc3RydWN0IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgKi8KKyNkZWZpbmUgQ1VSUkVOVF9DT05URVhUX0FERFIoY3R4KSBcCisgICAgY3R4ID0gQ1RYKGN1cnJlbnRfY29udGV4dCgpKQorCisvKiBSZXR1cm4gYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGNvbnRleHQgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19HZXRDdXJyZW50Q29udGV4dChQeU9iamVjdCAqc2VsZiBVTlVTRUQsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKworICAgIFB5X0lOQ1JFRihjb250ZXh0KTsKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworLyogU2V0IHRoZSBtb2R1bGUgY29udGV4dCB0byBhIG5ldyBjb250ZXh0LCBkZWNyZW1lbnQgb2xkIHJlZmVyZW5jZSAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX1NldEN1cnJlbnRDb250ZXh0KFB5T2JqZWN0ICpzZWxmIFVOVVNFRCwgUHlPYmplY3QgKnYpCit7CisgICAgQ09OVEVYVF9DSEVDSyh2KTsKKworICAgIC8qIElmIHRoZSBuZXcgY29udGV4dCBpcyBvbmUgb2YgdGhlIHRlbXBsYXRlcywgbWFrZSBhIGNvcHkuCisgICAgICogVGhpcyBpcyB0aGUgY3VycmVudCBiZWhhdmlvciBvZiBkZWNpbWFsLnB5LiAqLworICAgIGlmICh2ID09IGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSB8fAorICAgICAgICB2ID09IGJhc2ljX2NvbnRleHRfdGVtcGxhdGUgfHwKKyAgICAgICAgdiA9PSBleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlKSB7CisgICAgICAgIHYgPSBjb250ZXh0X2NvcHkodiwgTlVMTCk7CisgICAgICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIENUWCh2KS0+c3RhdHVzID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICB9CisKKyAgICBQeV9YREVDUkVGKG1vZHVsZV9jb250ZXh0KTsKKyAgICBtb2R1bGVfY29udGV4dCA9IHY7CisgICAgbW9kdWxlX2NvbnRleHRfc2V0ID0gMTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbHNlCisvKgorICogVGhyZWFkIGxvY2FsIHN0b3JhZ2UgY3VycmVudGx5IGhhcyBhIHNwZWVkIHBlbmFsdHkgb2YgYWJvdXQgNCUuCisgKiBBbGwgZnVuY3Rpb25zIHRoYXQgbWFwIFB5dGhvbidzIGFyaXRobWV0aWMgb3BlcmF0b3JzIHRvIG1wZGVjaW1hbAorICogZnVuY3Rpb25zIGhhdmUgdG8gbG9vayB1cCB0aGUgY3VycmVudCBjb250ZXh0IGZvciBlYWNoIGFuZCBldmVyeQorICogb3BlcmF0aW9uLgorICovCisKKy8qIEdldCB0aGUgY29udGV4dCBmcm9tIHRoZSB0aHJlYWQgc3RhdGUgZGljdGlvbmFyeS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjdXJyZW50X2NvbnRleHRfZnJvbV9kaWN0KHZvaWQpCit7CisgICAgUHlPYmplY3QgKmRpY3Q7CisgICAgUHlPYmplY3QgKnRsX2NvbnRleHQ7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgZGljdCA9IFB5VGhyZWFkU3RhdGVfR2V0RGljdCgpOworICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgZ2V0IHRocmVhZCBzdGF0ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB0bF9jb250ZXh0ID0gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoZGljdCwgdGxzX2NvbnRleHRfa2V5KTsKKyAgICBpZiAodGxfY29udGV4dCAhPSBOVUxMKSB7CisgICAgICAgIC8qIFdlIGFscmVhZHkgaGF2ZSBhIHRocmVhZCBsb2NhbCBjb250ZXh0LiAqLworICAgICAgICBDT05URVhUX0NIRUNLKHRsX2NvbnRleHQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLyogU2V0IHVwIGEgbmV3IHRocmVhZCBsb2NhbCBjb250ZXh0LiAqLworICAgICAgICB0bF9jb250ZXh0ID0gY29udGV4dF9jb3B5KGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSwgTlVMTCk7CisgICAgICAgIGlmICh0bF9jb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIENUWCh0bF9jb250ZXh0KS0+c3RhdHVzID0gMDsKKworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oZGljdCwgdGxzX2NvbnRleHRfa2V5LCB0bF9jb250ZXh0KSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0bF9jb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0bF9jb250ZXh0KTsKKyAgICB9CisKKyAgICAvKiBDYWNoZSB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCB0aHJlYWQsIGFzc3VtaW5nIHRoYXQgaXQKKyAgICAgKiB3aWxsIGJlIGFjY2Vzc2VkIHNldmVyYWwgdGltZXMgYmVmb3JlIGEgdGhyZWFkIHN3aXRjaC4gKi8KKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIGlmICh0c3RhdGUpIHsKKyAgICAgICAgY2FjaGVkX2NvbnRleHQgPSAoUHlEZWNDb250ZXh0T2JqZWN0ICopdGxfY29udGV4dDsKKyAgICAgICAgY2FjaGVkX2NvbnRleHQtPnRzdGF0ZSA9IHRzdGF0ZTsKKyAgICB9CisKKyAgICAvKiBCb3Jyb3dlZCByZWZlcmVuY2Ugd2l0aCByZWZjb3VudD09MSAqLworICAgIHJldHVybiB0bF9jb250ZXh0OworfQorCisvKiBSZXR1cm4gYm9ycm93ZWQgcmVmZXJlbmNlIHRvIHRocmVhZCBsb2NhbCBjb250ZXh0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2N1cnJlbnRfY29udGV4dCh2b2lkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgaWYgKGNhY2hlZF9jb250ZXh0ICYmIGNhY2hlZF9jb250ZXh0LT50c3RhdGUgPT0gdHN0YXRlKSB7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiljYWNoZWRfY29udGV4dDsKKyAgICB9CisKKyAgICByZXR1cm4gY3VycmVudF9jb250ZXh0X2Zyb21fZGljdCgpOworfQorCisvKiBjdHhvYmogOj0gYm9ycm93ZWQgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGNvbnRleHQgKi8KKyNkZWZpbmUgQ1VSUkVOVF9DT05URVhUKGN0eG9iaikgXAorICAgIGN0eG9iaiA9IGN1cnJlbnRfY29udGV4dCgpOyBcCisgICAgaWYgKGN0eG9iaiA9PSBOVUxMKSB7ICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgXAorICAgIH0KKworLyogY3R4IDo9IHBvaW50ZXIgdG8gdGhlIG1wZF9jb250ZXh0X3Qgc3RydWN0IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgKi8KKyNkZWZpbmUgQ1VSUkVOVF9DT05URVhUX0FERFIoY3R4KSB7IFwKKyAgICBQeU9iamVjdCAqX2NfdF94X29fYl9qID0gY3VycmVudF9jb250ZXh0KCk7IFwKKyAgICBpZiAoX2NfdF94X29fYl9qID09IE5VTEwpIHsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjdHggPSBDVFgoX2NfdF94X29fYl9qKTsgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogUmV0dXJuIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjb250ZXh0ICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNfR2V0Q3VycmVudENvbnRleHQoUHlPYmplY3QgKnNlbGYgVU5VU0VELCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKyAgICBjb250ZXh0ID0gY3VycmVudF9jb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoY29udGV4dCk7CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKKy8qIFNldCB0aGUgdGhyZWFkIGxvY2FsIGNvbnRleHQgdG8gYSBuZXcgY29udGV4dCwgZGVjcmVtZW50IG9sZCByZWZlcmVuY2UgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19TZXRDdXJyZW50Q29udGV4dChQeU9iamVjdCAqc2VsZiBVTlVTRUQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICpkaWN0OworCisgICAgQ09OVEVYVF9DSEVDSyh2KTsKKworICAgIGRpY3QgPSBQeVRocmVhZFN0YXRlX0dldERpY3QoKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGdldCB0aHJlYWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogSWYgdGhlIG5ldyBjb250ZXh0IGlzIG9uZSBvZiB0aGUgdGVtcGxhdGVzLCBtYWtlIGEgY29weS4KKyAgICAgKiBUaGlzIGlzIHRoZSBjdXJyZW50IGJlaGF2aW9yIG9mIGRlY2ltYWwucHkuICovCisgICAgaWYgKHYgPT0gZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlIHx8CisgICAgICAgIHYgPT0gYmFzaWNfY29udGV4dF90ZW1wbGF0ZSB8fAorICAgICAgICB2ID09IGV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUpIHsKKyAgICAgICAgdiA9IGNvbnRleHRfY29weSh2LCBOVUxMKTsKKyAgICAgICAgaWYgKHYgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgQ1RYKHYpLT5zdGF0dXMgPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKHYpOworICAgIH0KKworICAgIGNhY2hlZF9jb250ZXh0ID0gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oZGljdCwgdGxzX2NvbnRleHRfa2V5LCB2KSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYodik7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKworLyogQ29udGV4dCBtYW5hZ2VyIG9iamVjdCBmb3IgdGhlICd3aXRoJyBzdGF0ZW1lbnQuIFRoZSBtYW5hZ2VyCisgKiBvd25zIG9uZSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCAob3V0ZXIpIGNvbnRleHQgYW5kIG9uZQorICogdG8gdGhlIGxvY2FsIChpbm5lcikgY29udGV4dC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjdHhtYW5hZ2VyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUgVU5VU0VELCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeURlY0NvbnRleHRNYW5hZ2VyT2JqZWN0ICpzZWxmOworICAgIFB5T2JqZWN0ICpsb2NhbDsKKyAgICBQeU9iamVjdCAqZ2xvYmFsOworCisgICAgQ1VSUkVOVF9DT05URVhUKGdsb2JhbCk7CisgICAgbG9jYWwgPSBnbG9iYWw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyIsICZsb2NhbCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENPTlRFWFRfQ0hFQ0tfVkEobG9jYWwpOworCisgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhQeURlY0NvbnRleHRNYW5hZ2VyT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgJlB5RGVjQ29udGV4dE1hbmFnZXJfVHlwZSk7CisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmLT5sb2NhbCA9IGNvbnRleHRfY29weShsb2NhbCwgTlVMTCk7CisgICAgaWYgKHNlbGYtPmxvY2FsID09IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+Z2xvYmFsID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2VsZi0+Z2xvYmFsID0gZ2xvYmFsOworICAgIFB5X0lOQ1JFRihzZWxmLT5nbG9iYWwpOworCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Cit9CisKK3N0YXRpYyB2b2lkCitjdHhtYW5hZ2VyX2RlYWxsb2MoUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9YREVDUkVGKHNlbGYtPmxvY2FsKTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPmdsb2JhbCk7CisgICAgUHlPYmplY3RfRGVsKHNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4bWFuYWdlcl9zZXRfbG9jYWwoUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpyZXQ7CisKKyAgICByZXQgPSBQeURlY19TZXRDdXJyZW50Q29udGV4dChOVUxMLCBzZWxmLT5sb2NhbCk7CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9ERUNSRUYocmV0KTsKKworICAgIFB5X0lOQ1JFRihzZWxmLT5sb2NhbCk7CisgICAgcmV0dXJuIHNlbGYtPmxvY2FsOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4bWFuYWdlcl9yZXN0b3JlX2dsb2JhbChQeURlY0NvbnRleHRNYW5hZ2VyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKnJldDsKKworICAgIHJldCA9IFB5RGVjX1NldEN1cnJlbnRDb250ZXh0KE5VTEwsIHNlbGYtPmdsb2JhbCk7CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9ERUNSRUYocmV0KTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBjdHhtYW5hZ2VyX21ldGhvZHNbXSA9IHsKKyAgeyJfX2VudGVyX18iLCAoUHlDRnVuY3Rpb24pY3R4bWFuYWdlcl9zZXRfbG9jYWwsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbiljdHhtYW5hZ2VyX3Jlc3RvcmVfZ2xvYmFsLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEZWNDb250ZXh0TWFuYWdlcl9UeXBlID0KK3sKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiZGVjaW1hbC5Db250ZXh0TWFuYWdlciIsICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeURlY0NvbnRleHRNYW5hZ2VyT2JqZWN0KSwgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcikgY3R4bWFuYWdlcl9kZWFsbG9jLCAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIChnZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgKHNldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgKGdldGF0dHJvZnVuYykgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsIC8qIHRwX2dldGF0dHJvICovCisgICAgKHNldGF0dHJvZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgKFB5QnVmZmVyUHJvY3MgKikgMCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGN0eG1hbmFnZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBEZWNpbWFsIE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9OZXcoUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIFB5RGVjT2JqZWN0ICpkZWM7CisKKyAgICBpZiAodHlwZSA9PSAmUHlEZWNfVHlwZSkgeworICAgICAgICBkZWMgPSBQeU9iamVjdF9OZXcoUHlEZWNPYmplY3QsICZQeURlY19UeXBlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGRlYyA9IChQeURlY09iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIH0KKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGVjLT5oYXNoID0gLTE7CisKKyAgICBNUEQoZGVjKS0+ZmxhZ3MgPSBNUERfU1RBVElDfE1QRF9TVEFUSUNfREFUQTsKKyAgICBNUEQoZGVjKS0+ZXhwID0gMDsKKyAgICBNUEQoZGVjKS0+ZGlnaXRzID0gMDsKKyAgICBNUEQoZGVjKS0+bGVuID0gMDsKKyAgICBNUEQoZGVjKS0+YWxsb2MgPSBfUHlfREVDX01JTkFMTE9DOworICAgIE1QRChkZWMpLT5kYXRhID0gZGVjLT5kYXRhOworCisgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlYzsKK30KKyNkZWZpbmUgZGVjX2FsbG9jKCkgUHlEZWNUeXBlX05ldygmUHlEZWNfVHlwZSkKKworc3RhdGljIHZvaWQKK2RlY19kZWFsbG9jKFB5T2JqZWN0ICpkZWMpCit7CisgICAgbXBkX2RlbChNUEQoZGVjKSk7CisgICAgUHlfVFlQRShkZWMpLT50cF9mcmVlKGRlYyk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvbnMgdG8gRGVjaW1hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitQeV9MT0NBTF9JTkxJTkUoaW50KQoraXNfc3BhY2UoZW51bSBQeVVuaWNvZGVfS2luZCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IHBvcykKK3sKKyAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKKyAgICByZXR1cm4gUHlfVU5JQ09ERV9JU1NQQUNFKGNoKTsKK30KKworLyogUmV0dXJuIHRoZSBBU0NJSSByZXByZXNlbnRhdGlvbiBvZiBhIG51bWVyaWMgVW5pY29kZSBzdHJpbmcuIFRoZSBudW1lcmljCisgICBzdHJpbmcgbWF5IGNvbnRhaW4gYXNjaWkgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzEsIDEyN10sIGFueSBVbmljb2RlCisgICBzcGFjZSBhbmQgYW55IHVuaWNvZGUgZGlnaXQuIElmIHN0cmlwX3dzIGlzIHRydWUsIGxlYWRpbmcgYW5kIHRyYWlsaW5nCisgICB3aGl0ZXNwYWNlIGlzIHN0cmlwcGVkLgorCisgICBSZXR1cm4gTlVMTCBpZiBtYWxsb2MgZmFpbHMgYW5kIGFuIGVtcHR5IHN0cmluZyBpZiBpbnZhbGlkIGNoYXJhY3RlcnMKKyAgIGFyZSBmb3VuZC4gKi8KK3N0YXRpYyBjaGFyICoKK251bWVyaWNfYXNfYXNjaWkoY29uc3QgUHlPYmplY3QgKnUsIGludCBzdHJpcF93cykKK3sKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9VQ1M0IGNoOworICAgIGNoYXIgKnJlcywgKmNwOworICAgIFB5X3NzaXplX3QgaiwgbGVuOworICAgIGludCBkOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1KSk7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHUpOworICAgIGxlbiA9ICBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1KTsKKworICAgIGNwID0gcmVzID0gUHlNZW1fTWFsbG9jKGxlbisxKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaiA9IDA7CisgICAgaWYgKHN0cmlwX3dzKSB7CisgICAgICAgIHdoaWxlIChsZW4gPiAwICYmIGlzX3NwYWNlKGtpbmQsIGRhdGEsIGxlbi0xKSkgeworICAgICAgICAgICAgbGVuLS07CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGogPCBsZW4gJiYgaXNfc3BhY2Uoa2luZCwgZGF0YSwgaikpIHsKKyAgICAgICAgICAgIGorKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoOyBqIDwgbGVuOyBqKyspIHsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKTsKKyAgICAgICAgaWYgKDAgPCBjaCAmJiBjaCA8PSAxMjcpIHsKKyAgICAgICAgICAgICpjcCsrID0gY2g7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1NQQUNFKGNoKSkgeworICAgICAgICAgICAgKmNwKysgPSAnICc7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBkID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOworICAgICAgICBpZiAoZCA8IDApIHsKKyAgICAgICAgICAgIC8qIGVtcHR5IHN0cmluZyB0cmlnZ2VycyBDb252ZXJzaW9uU3ludGF4ICovCisgICAgICAgICAgICAqcmVzID0gJ1wwJzsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICAgICAgKmNwKysgPSAnMCcgKyBkOworICAgIH0KKyAgICAqY3AgPSAnXDAnOworICAgIHJldHVybiByZXM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBvciBhIHN1YnR5cGUgZnJvbSBhIEMgc3RyaW5nLiBVc2UgdGhlIGNvbnRleHQKKyAgIGR1cmluZyBjb252ZXJzaW9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tQ1N0cmluZyhQeVR5cGVPYmplY3QgKnR5cGUsIGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgZGVjID0gUHlEZWNUeXBlX05ldyh0eXBlKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3FzZXRfc3RyaW5nKE1QRChkZWMpLCBzLCBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gZGVjOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3Qgb3IgYSBzdWJ0eXBlIGZyb20gYSBDIHN0cmluZy4gQXR0ZW1wdCBleGFjdAorICAgY29udmVyc2lvbi4gSWYgdGhlIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LCBzZXQKKyAgIEludmFsaWRPcGVyYXRpb24uICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21DU3RyaW5nRXhhY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworCisgICAgZGVjID0gUHlEZWNUeXBlX05ldyh0eXBlKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisKKyAgICBtcGRfcXNldF9zdHJpbmcoTVBEKGRlYyksIHMsICZtYXhjdHgsICZzdGF0dXMpOworICAgIGlmIChzdGF0dXMgJiAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWR8TVBEX0NsYW1wZWQpKSB7CisgICAgICAgIC8qIHdlIHdhbnQgZXhhY3QgcmVzdWx0cyAqLworICAgICAgICBtcGRfc2V0ZXJyb3IoTVBEKGRlYyksIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgJnN0YXR1cyk7CisgICAgfQorICAgIHN0YXR1cyAmPSBNUERfRXJyb3JzOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBvciBhIHN1YnR5cGUgZnJvbSBhIFB5VW5pY29kZU9iamVjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbVVuaWNvZGUoUHlUeXBlT2JqZWN0ICp0eXBlLCBjb25zdCBQeU9iamVjdCAqdSwKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIGNoYXIgKnM7CisKKyAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAwKTsKKyAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGRlYyA9IFB5RGVjVHlwZV9Gcm9tQ1N0cmluZyh0eXBlLCBzLCBjb250ZXh0KTsKKyAgICBQeU1lbV9GcmVlKHMpOworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBvciBhIHN1YnR5cGUgZnJvbSBhIFB5VW5pY29kZU9iamVjdC4gQXR0ZW1wdCBleGFjdAorICogY29udmVyc2lvbi4gSWYgdGhlIGNvbnZlcnNpb24gaXMgbm90IGV4YWN0LCBmYWlsIHdpdGggSW52YWxpZE9wZXJhdGlvbi4KKyAqIEFsbG93IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgaW4gdGhlIGlucHV0IG9wZXJhbmQuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21Vbmljb2RlRXhhY3RXUyhQeVR5cGVPYmplY3QgKnR5cGUsIGNvbnN0IFB5T2JqZWN0ICp1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIGNoYXIgKnM7CisKKyAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAxKTsKKyAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGRlYyA9IFB5RGVjVHlwZV9Gcm9tQ1N0cmluZ0V4YWN0KHR5cGUsIHMsIGNvbnRleHQpOworICAgIFB5TWVtX0ZyZWUocyk7CisgICAgcmV0dXJuIGRlYzsKK30KKworLyogU2V0IFB5RGVjT2JqZWN0IGZyb20gdHJpcGxlIHdpdGhvdXQgYW55IGVycm9yIGNoZWNraW5nLiAqLworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitfZGVjX3NldHRyaXBsZShQeU9iamVjdCAqZGVjLCB1aW50OF90IHNpZ24sIHVpbnQzMl90IHYsIG1wZF9zc2l6ZV90IGV4cCkKK3sKKworI2lmZGVmIENPTkZJR182NAorICAgIE1QRChkZWMpLT5kYXRhWzBdID0gdjsKKyAgICBNUEQoZGVjKS0+bGVuID0gMTsKKyNlbHNlCisgICAgdWludDMyX3QgcSwgcjsKKyAgICBxID0gdiAvIE1QRF9SQURJWDsKKyAgICByID0gdiAtIHEgKiBNUERfUkFESVg7CisgICAgTVBEKGRlYyktPmRhdGFbMV0gPSBxOworICAgIE1QRChkZWMpLT5kYXRhWzBdID0gcjsKKyAgICBNUEQoZGVjKS0+bGVuID0gcSA/IDIgOiAxOworI2VuZGlmCisgICAgbXBkX3NldF9mbGFncyhNUEQoZGVjKSwgc2lnbik7CisgICAgTVBEKGRlYyktPmV4cCA9IGV4cDsKKyAgICBtcGRfc2V0ZGlnaXRzKE1QRChkZWMpKTsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IGZyb20gYW4gbXBkX3NzaXplX3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21Tc2l6ZShQeVR5cGVPYmplY3QgKnR5cGUsIG1wZF9zc2l6ZV90IHYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xc2V0X3NzaXplKE1QRChkZWMpLCB2LCBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gZGVjOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3QgZnJvbSBhbiBtcGRfc3NpemVfdC4gQ29udmVyc2lvbiBpcyBleGFjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbVNzaXplRXhhY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBtcGRfc3NpemVfdCB2LCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjdHg7CisKKyAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y3R4KTsKKworICAgIG1wZF9xc2V0X3NzaXplKE1QRChkZWMpLCB2LCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGRlYzsKK30KKworLyogQ29udmVydCBmcm9tIGEgUHlMb25nT2JqZWN0LiBUaGUgY29udGV4dCBpcyBub3QgbW9kaWZpZWQ7IGZsYWdzIHNldAorICAgZHVyaW5nIGNvbnZlcnNpb24gYXJlIGFjY3VtdWxhdGVkIGluIHRoZSBzdGF0dXMgcGFyYW1ldGVyLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19mcm9tX2xvbmcoUHlUeXBlT2JqZWN0ICp0eXBlLCBjb25zdCBQeU9iamVjdCAqdiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgUHlMb25nT2JqZWN0ICpsID0gKFB5TG9uZ09iamVjdCAqKXY7CisgICAgUHlfc3NpemVfdCBvYl9zaXplOworICAgIHNpemVfdCBsZW47CisgICAgdWludDhfdCBzaWduOworCisgICAgZGVjID0gUHlEZWNUeXBlX05ldyh0eXBlKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb2Jfc2l6ZSA9IFB5X1NJWkUobCk7CisgICAgaWYgKG9iX3NpemUgPT0gMCkgeworICAgICAgICBfZGVjX3NldHRyaXBsZShkZWMsIE1QRF9QT1MsIDAsIDApOworICAgICAgICByZXR1cm4gZGVjOworICAgIH0KKworICAgIGlmIChvYl9zaXplIDwgMCkgeworICAgICAgICBsZW4gPSAtb2Jfc2l6ZTsKKyAgICAgICAgc2lnbiA9IE1QRF9ORUc7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBsZW4gPSBvYl9zaXplOworICAgICAgICBzaWduID0gTVBEX1BPUzsKKyAgICB9CisKKyAgICBpZiAobGVuID09IDEpIHsKKyAgICAgICAgX2RlY19zZXR0cmlwbGUoZGVjLCBzaWduLCAqbC0+b2JfZGlnaXQsIDApOworICAgICAgICBtcGRfcWZpbmFsaXplKE1QRChkZWMpLCBjdHgsIHN0YXR1cyk7CisgICAgICAgIHJldHVybiBkZWM7CisgICAgfQorCisjaWYgUFlMT05HX0JJVFNfSU5fRElHSVQgPT0gMzAKKyAgICBtcGRfcWltcG9ydF91MzIoTVBEKGRlYyksIGwtPm9iX2RpZ2l0LCBsZW4sIHNpZ24sIFB5TG9uZ19CQVNFLAorICAgICAgICAgICAgICAgICAgICBjdHgsIHN0YXR1cyk7CisjZWxpZiBQWUxPTkdfQklUU19JTl9ESUdJVCA9PSAxNQorICAgIG1wZF9xaW1wb3J0X3UxNihNUEQoZGVjKSwgbC0+b2JfZGlnaXQsIGxlbiwgc2lnbiwgUHlMb25nX0JBU0UsCisgICAgICAgICAgICAgICAgICAgIGN0eCwgc3RhdHVzKTsKKyNlbHNlCisgICNlcnJvciAiUFlMT05HX0JJVFNfSU5fRElHSVQgc2hvdWxkIGJlIDE1IG9yIDMwIgorI2VuZGlmCisKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3QgZnJvbSBhIFB5TG9uZ09iamVjdC4gVXNlIHRoZSBjb250ZXh0IGZvcgorICAgY29udmVyc2lvbi4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbUxvbmcoUHlUeXBlT2JqZWN0ICp0eXBlLCBjb25zdCBQeU9iamVjdCAqcHlsb25nLAorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGRlYyA9IGRlY19mcm9tX2xvbmcodHlwZSwgcHlsb25nLCBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3QgZnJvbSBhIFB5TG9uZ09iamVjdC4gVXNlIGEgbWF4aW11bSBjb250ZXh0CisgICBmb3IgY29udmVyc2lvbi4gSWYgdGhlIGNvbnZlcnNpb24gaXMgbm90IGV4YWN0LCBzZXQgSW52YWxpZE9wZXJhdGlvbi4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbUxvbmdFeGFjdChQeVR5cGVPYmplY3QgKnR5cGUsIGNvbnN0IFB5T2JqZWN0ICpweWxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjdHg7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y3R4KTsKKyAgICBkZWMgPSBkZWNfZnJvbV9sb25nKHR5cGUsIHB5bG9uZywgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzdGF0dXMgJiAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWR8TVBEX0NsYW1wZWQpKSB7CisgICAgICAgIC8qIHdlIHdhbnQgZXhhY3QgcmVzdWx0cyAqLworICAgICAgICBtcGRfc2V0ZXJyb3IoTVBEKGRlYyksIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgJnN0YXR1cyk7CisgICAgfQorICAgIHN0YXR1cyAmPSBNUERfRXJyb3JzOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIFB5RGVjT2JqZWN0IG9yIGEgc3VidHlwZSBmcm9tIGEgUHlGbG9hdE9iamVjdC4KKyAgIENvbnZlcnNpb24gaXMgZXhhY3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21GbG9hdEV4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYywgKnRtcDsKKyAgICBQeU9iamVjdCAqbiwgKmQsICpuX2Q7CisgICAgbXBkX3NzaXplX3QgazsKKyAgICBkb3VibGUgeDsKKyAgICBpbnQgc2lnbjsKKyAgICBtcGRfdCAqZDEsICpkMjsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworCisKKyAgICBhc3NlcnQoUHlUeXBlX0lzU3VidHlwZSh0eXBlLCAmUHlEZWNfVHlwZSkpOworCisgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21Mb25nRXhhY3QodHlwZSwgdiwgY29udGV4dCk7CisgICAgfQorICAgIGlmICghUHlGbG9hdF9DaGVjayh2KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgaW50IG9mIGZsb2F0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOworICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2lnbiA9IChjb3B5c2lnbigxLjAsIHgpID09IDEuMCkgPyAwIDogMTsKKworICAgIGlmIChQeV9JU19OQU4oeCkgfHwgUHlfSVNfSU5GSU5JVFkoeCkpIHsKKyAgICAgICAgZGVjID0gUHlEZWNUeXBlX05ldyh0eXBlKTsKKyAgICAgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlfSVNfTkFOKHgpKSB7CisgICAgICAgICAgICAvKiBkZWNpbWFsLnB5IGNhbGxzIHJlcHIoZmxvYXQoKy1uYW4pKSwKKyAgICAgICAgICAgICAqIHdoaWNoIGFsd2F5cyBnaXZlcyBhIHBvc2l0aXZlIHJlc3VsdC4gKi8KKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKE1QRChkZWMpLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKE1QRChkZWMpLCBzaWduLCBNUERfSU5GKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGVjOworICAgIH0KKworICAgIC8qIGFic29sdXRlIHZhbHVlIG9mIHRoZSBmbG9hdCAqLworICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodiwgIl9fYWJzX18iLCBOVUxMKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogZmxvYXQgYXMgaW50ZWdlciByYXRpbzogbnVtZXJhdG9yL2Rlbm9taW5hdG9yICovCisgICAgbl9kID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0bXAsICJhc19pbnRlZ2VyX3JhdGlvIiwgTlVMTCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgaWYgKG5fZCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuID0gUHlUdXBsZV9HRVRfSVRFTShuX2QsIDApOworICAgIGQgPSBQeVR1cGxlX0dFVF9JVEVNKG5fZCwgMSk7CisKKyAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGQsICJiaXRfbGVuZ3RoIiwgTlVMTCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihuX2QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgayA9IFB5TG9uZ19Bc1NzaXplX3QodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAoayA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihuX2QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgay0tOworCisgICAgZGVjID0gUHlEZWNUeXBlX0Zyb21Mb25nRXhhY3QodHlwZSwgbiwgY29udGV4dCk7CisgICAgUHlfREVDUkVGKG5fZCk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGQxID0gbXBkX3FuZXcoKTsKKyAgICBpZiAoZDEgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGQyID0gbXBkX3FuZXcoKTsKKyAgICBpZiAoZDIgPT0gTlVMTCkgeworICAgICAgICBtcGRfZGVsKGQxKTsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjdHgpOworICAgIG1wZF9xc2V0X3VpbnQoZDEsIDUsICZtYXhjdHgsICZzdGF0dXMpOworICAgIG1wZF9xc2V0X3NzaXplKGQyLCBrLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBtcGRfcXBvdyhkMSwgZDEsIGQyLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIG1wZF9kZWwoZDEpOworICAgICAgICBtcGRfZGVsKGQyKTsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIHJlc3VsdCA9IG4gKiA1KiprICovCisgICAgbXBkX3FtdWwoTVBEKGRlYyksIE1QRChkZWMpLCBkMSwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgbXBkX2RlbChkMSk7CisgICAgbXBkX2RlbChkMik7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIC8qIHJlc3VsdCA9ICstIG4gKiA1KiprICogMTAqKi1rICovCisgICAgbXBkX3NldF9zaWduKE1QRChkZWMpLCBzaWduKTsKKyAgICBNUEQoZGVjKS0+ZXhwID0gLWs7CisKKyAgICByZXR1cm4gZGVjOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21GbG9hdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2LAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBkZWMgPSBQeURlY1R5cGVfRnJvbUZsb2F0RXhhY3QodHlwZSwgdiwgY29udGV4dCk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xZmluYWxpemUoTVBEKGRlYyksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGRlYzsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NlcXVlbmNlX2FzX3R1cGxlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqZXgsIGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2sodikpIHsKKyAgICAgICAgUHlfSU5DUkVGKHYpOworICAgICAgICByZXR1cm4gdjsKKyAgICB9CisgICAgaWYgKFB5TGlzdF9DaGVjayh2KSkgeworICAgICAgICByZXR1cm4gUHlMaXN0X0FzVHVwbGUodik7CisgICAgfQorCisgICAgUHlFcnJfU2V0U3RyaW5nKGV4LCBtZXNnKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogUmV0dXJuIGEgbmV3IEMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRGVjaW1hbFR1cGxlLiAqLworc3RhdGljIGNoYXIgKgorZGVjdHVwbGVfYXNfc3RyKFB5T2JqZWN0ICpkZWN0dXBsZSkKK3sKKyAgICBQeU9iamVjdCAqZGlnaXRzID0gTlVMTCwgKnRtcDsKKyAgICBjaGFyICpkZWNzdHJpbmcgPSBOVUxMOworICAgIGNoYXIgc2lnbl9zcGVjaWFsWzZdOworICAgIGNoYXIgKmNwOworICAgIGxvbmcgc2lnbiwgbDsKKyAgICBtcGRfc3NpemVfdCBleHAgPSAwOworICAgIFB5X3NzaXplX3QgaSwgbWVtLCB0c2l6ZTsKKyAgICBpbnQgbjsKKworICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGRlY3R1cGxlKSk7CisKKyAgICBpZiAoUHlUdXBsZV9TaXplKGRlY3R1cGxlKSAhPSAzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBsZW5ndGggMyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIHNpZ24gKi8KKyAgICB0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKGRlY3R1cGxlLCAwKTsKKyAgICBpZiAoIVB5TG9uZ19DaGVjayh0bXApKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInNpZ24gbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGggdGhlIHZhbHVlIDAgb3IgMSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzaWduID0gUHlMb25nX0FzTG9uZyh0bXApOworICAgIGlmIChzaWduID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKHNpZ24gIT0gMCAmJiBzaWduICE9IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAic2lnbiBtdXN0IGJlIGFuIGludGVnZXIgd2l0aCB0aGUgdmFsdWUgMCBvciAxIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNpZ25fc3BlY2lhbFswXSA9IHNpZ24gPyAnLScgOiAnKyc7CisgICAgc2lnbl9zcGVjaWFsWzFdID0gJ1wwJzsKKworICAgIC8qIGV4cG9uZW50IG9yIGVuY29kaW5nIGZvciBhIHNwZWNpYWwgbnVtYmVyICovCisgICAgdG1wID0gUHlUdXBsZV9HRVRfSVRFTShkZWN0dXBsZSwgMik7CisgICAgaWYgKFB5VW5pY29kZV9DaGVjayh0bXApKSB7CisgICAgICAgIC8qIHNwZWNpYWwgKi8KKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHRtcCwgIkYiKSA9PSAwKSB7CisgICAgICAgICAgICBzdHJjYXQoc2lnbl9zcGVjaWFsLCAiSW5mIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcodG1wLCAibiIpID09IDApIHsKKyAgICAgICAgICAgIHN0cmNhdChzaWduX3NwZWNpYWwsICJOYU4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyh0bXAsICJOIikgPT0gMCkgeworICAgICAgICAgICAgc3RyY2F0KHNpZ25fc3BlY2lhbCwgInNOYU4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJzdHJpbmcgYXJndW1lbnQgaW4gdGhlIHRoaXJkIHBvc2l0aW9uICIKKyAgICAgICAgICAgICAgICAibXVzdCBiZSAnRicsICduJyBvciAnTiciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGV4cG9uZW50ICovCisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJleHBvbmVudCBtdXN0IGJlIGFuIGludGVnZXIiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZXhwID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgICAgICBpZiAoZXhwID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBjb2VmZmljaWVudCAqLworICAgIGRpZ2l0cyA9IHNlcXVlbmNlX2FzX3R1cGxlKFB5VHVwbGVfR0VUX0lURU0oZGVjdHVwbGUsIDEpLCBQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2VmZmljaWVudCBtdXN0IGJlIGEgdHVwbGUgb2YgZGlnaXRzIik7CisgICAgaWYgKGRpZ2l0cyA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgdHNpemUgPSBQeVR1cGxlX1NpemUoZGlnaXRzKTsKKyAgICAvKiBbc2lnbl1bY29lZmZkaWdpdHMrMV1bRV1bLV1bZXhwZGlnaXRzKzFdWydcMCddICovCisgICAgbWVtID0gMSArIHRzaXplICsgMyArIE1QRF9FWFBESUdJVFMgKyAyOworICAgIGNwID0gZGVjc3RyaW5nID0gUHlNZW1fTWFsbG9jKG1lbSk7CisgICAgaWYgKGRlY3N0cmluZyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgbiA9IHNucHJpbnRmKGNwLCBtZW0sICIlcyIsIHNpZ25fc3BlY2lhbCk7CisgICAgaWYgKG4gPCAwIHx8IG4gPj0gbWVtKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3IgaW4gZGVjX3NlcXVlbmNlX2FzX3N0ciIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBjcCArPSBuOworCisgICAgaWYgKHRzaXplID09IDAgJiYgc2lnbl9zcGVjaWFsWzFdID09ICdcMCcpIHsKKyAgICAgICAgLyogZW1wdHkgdHVwbGU6IHplcm8gY29lZmZpY2llbnQsIGV4Y2VwdCBmb3Igc3BlY2lhbCBudW1iZXJzICovCisgICAgICAgICpjcCsrID0gJzAnOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgdHNpemU7IGkrKykgeworICAgICAgICB0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKGRpZ2l0cywgaSk7CisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJjb2VmZmljaWVudCBtdXN0IGJlIGEgdHVwbGUgb2YgZGlnaXRzIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGwgPSBQeUxvbmdfQXNMb25nKHRtcCk7CisgICAgICAgIGlmIChsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGwgPCAwIHx8IGwgPiA5KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY29lZmZpY2llbnQgbXVzdCBiZSBhIHR1cGxlIG9mIGRpZ2l0cyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICAqY3ArKyA9IChjaGFyKWwgKyAnMCc7CisgICAgfQorICAgICpjcCA9ICdcMCc7CisKKyAgICBpZiAoc2lnbl9zcGVjaWFsWzFdID09ICdcMCcpIHsKKyAgICAgICAgLyogbm90IGEgc3BlY2lhbCBudW1iZXIgKi8KKyAgICAgICAgKmNwKysgPSAnRSc7CisgICAgICAgIG4gPSBzbnByaW50ZihjcCwgTVBEX0VYUERJR0lUUysyLCAiJSIgUFJJX21wZF9zc2l6ZV90LCBleHApOworICAgICAgICBpZiAobiA8IDAgfHwgbiA+PSBNUERfRVhQRElHSVRTKzIpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImludGVybmFsIGVycm9yIGluIGRlY19zZXF1ZW5jZV9hc19zdHIiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9YREVDUkVGKGRpZ2l0cyk7CisgICAgcmV0dXJuIGRlY3N0cmluZzsKKworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGRpZ2l0cyk7CisgICAgaWYgKGRlY3N0cmluZykgUHlNZW1fRnJlZShkZWNzdHJpbmcpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBDdXJyZW50bHkgYWNjZXB0cyB0dXBsZXMgYW5kIGxpc3RzLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tU2VxdWVuY2UoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlY3R1cGxlOworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgY2hhciAqczsKKworICAgIGRlY3R1cGxlID0gc2VxdWVuY2VfYXNfdHVwbGUodiwgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CisgICAgaWYgKGRlY3R1cGxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcyA9IGRlY3R1cGxlX2FzX3N0cihkZWN0dXBsZSk7CisgICAgUHlfREVDUkVGKGRlY3R1cGxlKTsKKyAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGRlYyA9IFB5RGVjVHlwZV9Gcm9tQ1N0cmluZyh0eXBlLCBzLCBjb250ZXh0KTsKKworICAgIFB5TWVtX0ZyZWUocyk7CisgICAgcmV0dXJuIGRlYzsKK30KKworLyogQ3VycmVudGx5IGFjY2VwdHMgdHVwbGVzIGFuZCBsaXN0cy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbVNlcXVlbmNlRXhhY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjdHVwbGU7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICBjaGFyICpzOworCisgICAgZGVjdHVwbGUgPSBzZXF1ZW5jZV9hc190dXBsZSh2LCBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CisgICAgaWYgKGRlY3R1cGxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcyA9IGRlY3R1cGxlX2FzX3N0cihkZWN0dXBsZSk7CisgICAgUHlfREVDUkVGKGRlY3R1cGxlKTsKKyAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGRlYyA9IFB5RGVjVHlwZV9Gcm9tQ1N0cmluZ0V4YWN0KHR5cGUsIHMsIGNvbnRleHQpOworCisgICAgUHlNZW1fRnJlZShzKTsKKyAgICByZXR1cm4gZGVjOworfQorCisjZGVmaW5lIFB5RGVjX0Zyb21DU3RyaW5nKHN0ciwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbUNTdHJpbmcoJlB5RGVjX1R5cGUsIHN0ciwgY29udGV4dCkKKyNkZWZpbmUgUHlEZWNfRnJvbUNTdHJpbmdFeGFjdChzdHIsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21DU3RyaW5nRXhhY3QoJlB5RGVjX1R5cGUsIHN0ciwgY29udGV4dCkKKworI2RlZmluZSBQeURlY19Gcm9tVW5pY29kZSh1bmljb2RlLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tVW5pY29kZSgmUHlEZWNfVHlwZSwgdW5pY29kZSwgY29udGV4dCkKKyNkZWZpbmUgUHlEZWNfRnJvbVVuaWNvZGVFeGFjdCh1bmljb2RlLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tVW5pY29kZUV4YWN0KCZQeURlY19UeXBlLCB1bmljb2RlLCBjb250ZXh0KQorI2RlZmluZSBQeURlY19Gcm9tVW5pY29kZUV4YWN0V1ModW5pY29kZSwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbVVuaWNvZGVFeGFjdFdTKCZQeURlY19UeXBlLCB1bmljb2RlLCBjb250ZXh0KQorCisjZGVmaW5lIFB5RGVjX0Zyb21Tc2l6ZSh2LCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tU3NpemUoJlB5RGVjX1R5cGUsIHYsIGNvbnRleHQpCisjZGVmaW5lIFB5RGVjX0Zyb21Tc2l6ZUV4YWN0KHYsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21Tc2l6ZUV4YWN0KCZQeURlY19UeXBlLCB2LCBjb250ZXh0KQorCisjZGVmaW5lIFB5RGVjX0Zyb21Mb25nKHB5bG9uZywgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbUxvbmcoJlB5RGVjX1R5cGUsIHB5bG9uZywgY29udGV4dCkKKyNkZWZpbmUgUHlEZWNfRnJvbUxvbmdFeGFjdChweWxvbmcsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21Mb25nRXhhY3QoJlB5RGVjX1R5cGUsIHB5bG9uZywgY29udGV4dCkKKworI2RlZmluZSBQeURlY19Gcm9tRmxvYXQocHlmbG9hdCwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbUZsb2F0KCZQeURlY19UeXBlLCBweWZsb2F0LCBjb250ZXh0KQorI2RlZmluZSBQeURlY19Gcm9tRmxvYXRFeGFjdChweWZsb2F0LCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tRmxvYXRFeGFjdCgmUHlEZWNfVHlwZSwgcHlmbG9hdCwgY29udGV4dCkKKworI2RlZmluZSBQeURlY19Gcm9tU2VxdWVuY2Uoc2VxdWVuY2UsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21TZXF1ZW5jZSgmUHlEZWNfVHlwZSwgc2VxdWVuY2UsIGNvbnRleHQpCisjZGVmaW5lIFB5RGVjX0Zyb21TZXF1ZW5jZUV4YWN0KHNlcXVlbmNlLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tU2VxdWVuY2VFeGFjdCgmUHlEZWNfVHlwZSwgc2VxdWVuY2UsIGNvbnRleHQpCisKKy8qIGNsYXNzIG1ldGhvZCAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19mcm9tX2Zsb2F0KFB5T2JqZWN0ICpkZWMsIFB5T2JqZWN0ICpweWZsb2F0KQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIHJldHVybiBQeURlY1R5cGVfRnJvbUZsb2F0RXhhY3QoKFB5VHlwZU9iamVjdCAqKWRlYywgcHlmbG9hdCwgY29udGV4dCk7Cit9CisKKy8qIGNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfZnJvbV9mbG9hdChQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpCit7CisgICAgcmV0dXJuIFB5RGVjX0Zyb21GbG9hdCh2LCBjb250ZXh0KTsKK30KKworLyogQXBwbHkgdGhlIGNvbnRleHQgdG8gdGhlIGlucHV0IG9wZXJhbmQuIFJldHVybiBhIG5ldyBQeURlY09iamVjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfYXBwbHkoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWNvcHkoTVBEKHJlc3VsdCksIE1QRCh2KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShNUEQocmVzdWx0KSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiAndicgY2FuIGhhdmUgYW55IHR5cGUgYWNjZXB0ZWQgYnkgdGhlIERlY2ltYWwgY29uc3RydWN0b3IuIEF0dGVtcHQKKyAgIGFuIGV4YWN0IGNvbnZlcnNpb24uIElmIHRoZSByZXN1bHQgZG9lcyBub3QgbWVldCB0aGUgcmVzdHJpY3Rpb25zCisgICBmb3IgYW4gbXBkX3QsIGZhaWwgd2l0aCBJbnZhbGlkT3BlcmF0aW9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tT2JqZWN0RXhhY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdiwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgaWYgKHYgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21Tc2l6ZUV4YWN0KHR5cGUsIDAsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeURlY19DaGVjayh2KSkgeworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tVW5pY29kZUV4YWN0V1ModHlwZSwgdiwgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21Mb25nRXhhY3QodHlwZSwgdiwgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2sodikgfHwgUHlMaXN0X0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeURlY1R5cGVfRnJvbVNlcXVlbmNlRXhhY3QodHlwZSwgdiwgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2sodikpIHsKKyAgICAgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgTVBEX0Zsb2F0X29wZXJhdGlvbikpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeURlY1R5cGVfRnJvbUZsb2F0RXhhY3QodHlwZSwgdiwgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNvbnZlcnNpb24gZnJvbSAlcyB0byBEZWNpbWFsIGlzIG5vdCBzdXBwb3J0ZWQiLAorICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworLyogVGhlIGNvbnRleHQgaXMgdXNlZCBkdXJpbmcgY29udmVyc2lvbi4gVGhpcyBmdW5jdGlvbiBpcyB0aGUKKyAgIGVxdWl2YWxlbnQgb2YgY29udGV4dC5jcmVhdGVfZGVjaW1hbCgpLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX0Zyb21PYmplY3QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjX0Zyb21Tc2l6ZSgwLCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlEZWNfQ2hlY2sodikpIHsKKyAgICAgICAgbXBkX2NvbnRleHRfdCAqY3R4ID0gQ1RYKGNvbnRleHQpOworICAgICAgICBpZiAobXBkX2lzbmFuKE1QRCh2KSkgJiYKKyAgICAgICAgICAgIE1QRCh2KS0+ZGlnaXRzID4gY3R4LT5wcmVjIC0gY3R4LT5jbGFtcCkgeworICAgICAgICAgICAgLyogU3BlY2lhbCBjYXNlOiB0b28gbWFueSBOYU4gcGF5bG9hZCBkaWdpdHMgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgICAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBNUERfQ29udmVyc2lvbl9zeW50YXgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwoTVBEKHJlc3VsdCksIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGVjX2FwcGx5KHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjX0Zyb21Vbmljb2RlKHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjX0Zyb21Mb25nKHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHYpIHx8IFB5TGlzdF9DaGVjayh2KSkgeworICAgICAgICByZXR1cm4gUHlEZWNfRnJvbVNlcXVlbmNlKHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrKHYpKSB7CisgICAgICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIE1QRF9GbG9hdF9vcGVyYXRpb24pKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlEZWNfRnJvbUZsb2F0KHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjb252ZXJzaW9uIGZyb20gJXMgdG8gRGVjaW1hbCBpcyBub3Qgc3VwcG9ydGVkIiwKKyAgICAgICAgICAgIHYtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsidmFsdWUiLCAiY29udGV4dCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmY29udGV4dCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7CisKKyAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21PYmplY3RFeGFjdCh0eXBlLCB2LCBjb250ZXh0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9jcmVhdGVfZGVjaW1hbChQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnYgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyIsICZ2KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlEZWNfRnJvbU9iamVjdCh2LCBjb250ZXh0KTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICBJbXBsaWNpdCBjb252ZXJzaW9ucyB0byBEZWNpbWFsICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRyeSB0byBjb252ZXJ0IFB5T2JqZWN0IHYgdG8gYSBuZXcgUHlEZWNPYmplY3QgY29udi4gSWYgdGhlIGNvbnZlcnNpb24KKyAgIGZhaWxzLCBzZXQgY29udiB0byBOVUxMIChleGNlcHRpb24gaXMgc2V0KS4gSWYgdGhlIGNvbnZlcnNpb24gaXMgbm90CisgICBpbXBsZW1lbnRlZCwgc2V0IGNvbnYgdG8gUHlfTm90SW1wbGVtZW50ZWQuICovCisjZGVmaW5lIE5PVF9JTVBMIDAKKyNkZWZpbmUgVFlQRV9FUlIgMQorUHlfTE9DQUxfSU5MSU5FKGludCkKK2NvbnZlcnRfb3AoaW50IHR5cGVfZXJyLCBQeU9iamVjdCAqKmNvbnYsIFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqY29udGV4dCkKK3sKKworICAgIGlmIChQeURlY19DaGVjayh2KSkgeworICAgICAgICAqY29udiA9IHY7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgKmNvbnYgPSBQeURlY19Gcm9tTG9uZ0V4YWN0KHYsIGNvbnRleHQpOworICAgICAgICBpZiAoKmNvbnYgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKHR5cGVfZXJyKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY29udmVyc2lvbiBmcm9tICVzIHRvIERlY2ltYWwgaXMgbm90IHN1cHBvcnRlZCIsCisgICAgICAgICAgICB2LT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7CisgICAgICAgICpjb252ID0gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBSZXR1cm4gTm90SW1wbGVtZW50ZWQgZm9yIHVuc3VwcG9ydGVkIHR5cGVzLiAqLworI2RlZmluZSBDT05WRVJUX09QKGEsIHYsIGNvbnRleHQpIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoTk9UX0lNUEwsIGEsIHYsIGNvbnRleHQpKSB7IFwKKyAgICAgICAgcmV0dXJuICooYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgQ09OVkVSVF9CSU5PUChhLCBiLCB2LCB3LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCBhLCB2LCBjb250ZXh0KSkgeyBcCisgICAgICAgIHJldHVybiAqKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCBiLCB3LCBjb250ZXh0KSkgeyBcCisgICAgICAgIFB5X0RFQ1JFRigqKGEpKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiAqKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENPTlZFUlRfVEVSTk9QKGEsIGIsIGMsIHYsIHcsIHgsIGNvbnRleHQpIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoTk9UX0lNUEwsIGEsIHYsIGNvbnRleHQpKSB7ICAgXAorICAgICAgICByZXR1cm4gKihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoTk9UX0lNUEwsIGIsIHcsIGNvbnRleHQpKSB7ICAgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiAqKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghY29udmVydF9vcChOT1RfSU1QTCwgYywgeCwgY29udGV4dCkpIHsgICBcCisgICAgICAgIFB5X0RFQ1JFRigqKGEpKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKCooYikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gKihjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisvKiBSYWlzZSBUeXBlRXJyb3IgZm9yIHVuc3VwcG9ydGVkIHR5cGVzLiAqLworI2RlZmluZSBDT05WRVJUX09QX1JBSVNFKGEsIHYsIGNvbnRleHQpIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoVFlQRV9FUlIsIGEsIHYsIGNvbnRleHQpKSB7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgQ09OVkVSVF9CSU5PUF9SQUlTRShhLCBiLCB2LCB3LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKFRZUEVfRVJSLCBhLCB2LCBjb250ZXh0KSkgeyAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFjb252ZXJ0X29wKFRZUEVfRVJSLCBiLCB3LCBjb250ZXh0KSkgeyAgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENPTlZFUlRfVEVSTk9QX1JBSVNFKGEsIGIsIGMsIHYsIHcsIHgsIGNvbnRleHQpIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoVFlQRV9FUlIsIGEsIHYsIGNvbnRleHQpKSB7ICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoVFlQRV9FUlIsIGIsIHcsIGNvbnRleHQpKSB7ICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghY29udmVydF9vcChUWVBFX0VSUiwgYywgeCwgY29udGV4dCkpIHsgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRigqKGEpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKCooYikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgSW1wbGljaXQgY29udmVyc2lvbnMgdG8gRGVjaW1hbCBmb3IgY29tcGFyaXNvbiAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogQ29udmVydCByYXRpb25hbHMgZm9yIGNvbXBhcmlzb24gKi8KK3N0YXRpYyBQeU9iamVjdCAqUmF0aW9uYWwgPSBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK211bHRpcGx5X2J5X2Rlbm9taW5hdG9yKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqciwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGVub20gPSBOVUxMOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjdHg7CisgICAgbXBkX3NzaXplX3QgZXhwOworICAgIG1wZF90ICp2djsKKworICAgIC8qIHYgaXMgbm90IHNwZWNpYWwsIHIgaXMgYSByYXRpb25hbCAqLworICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcociwgImRlbm9taW5hdG9yIik7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBkZW5vbSA9IFB5RGVjX0Zyb21Mb25nRXhhY3QodG1wLCBjb250ZXh0KTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAoZGVub20gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB2diA9IG1wZF9xbmNvcHkoTVBEKHYpKTsKKyAgICBpZiAodnYgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZGVub20pOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZW5vbSk7CisgICAgICAgIG1wZF9kZWwodnYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y3R4KTsKKyAgICAvKiBQcmV2ZW50IE92ZXJmbG93IGluIHRoZSBmb2xsb3dpbmcgbXVsdGlwbGljYXRpb24uIFRoZSByZXN1bHQgb2YKKyAgICAgICB0aGUgbXVsdGlwbGljYXRpb24gaXMgb25seSB1c2VkIGluIG1wZF9xY21wLCB3aGljaCBjYW4gaGFuZGxlCisgICAgICAgdmFsdWVzIHRoYXQgYXJlIHRlY2huaWNhbGx5IG91dCBvZiBib3VuZHMsIGxpa2UgKGZvciAzMi1iaXQpCisgICAgICAgOTk5OTk5OTk5OTk5OTk5OTk5OTkuLi45OTk5OTk5OWUrNDI1MDAwMDAwLiAqLworICAgIGV4cCA9IHZ2LT5leHA7CisgICAgdnYtPmV4cCA9IDA7CisgICAgbXBkX3FtdWwoTVBEKHJlc3VsdCksIHZ2LCBNUEQoZGVub20pLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBNUEQocmVzdWx0KS0+ZXhwID0gZXhwOworCisgICAgUHlfREVDUkVGKGRlbm9tKTsKKyAgICBtcGRfZGVsKHZ2KTsKKyAgICAvKiBJZiBhbnkgc3RhdHVzIGhhcyBiZWVuIGFjY3VtdWxhdGVkIGR1cmluZyB0aGUgbXVsdGlwbGljYXRpb24sCisgICAgICAgdGhlIHJlc3VsdCBpcyBpbnZhbGlkLiBUaGlzIGlzIHZlcnkgdW5saWtlbHksIHNpbmNlIGV2ZW4gdGhlCisgICAgICAgMzItYml0IHZlcnNpb24gc3VwcG9ydHMgNDI1MDAwMDAwIGRpZ2l0cy4gKi8KKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImV4YWN0IGNvbnZlcnNpb24gZm9yIGNvbXBhcmlzb24gZmFpbGVkIik7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbnVtZXJhdG9yX2FzX2RlY2ltYWwoUHlPYmplY3QgKnIsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICp0bXAsICpudW07CisKKyAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHIsICJudW1lcmF0b3IiKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbnVtID0gUHlEZWNfRnJvbUxvbmdFeGFjdCh0bXAsIGNvbnRleHQpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiBudW07Cit9CisKKy8qIENvbnZlcnQgdiBhbmQgdyBmb3IgY29tcGFyaXNvbi4gdiBpcyBhIERlY2ltYWwuIElmIHcgaXMgYSBSYXRpb25hbCwgYm90aAorICAgdiBhbmQgdyBoYXZlIHRvIGJlIHRyYW5zZm9ybWVkLiBSZXR1cm4gMSBmb3Igc3VjY2Vzcywgd2l0aCBuZXcgcmVmZXJlbmNlcworICAgdG8gdGhlIGNvbnZlcnRlZCBvYmplY3RzIGluIHZjbXAgYW5kIHdjbXAuIFJldHVybiAwIGZvciBmYWlsdXJlLiBJbiB0aGF0CisgICBjYXNlIHdjbXAgaXMgZWl0aGVyIE5VTEwgb3IgUHlfTm90SW1wbGVtZW50ZWQgKG5ldyByZWZlcmVuY2UpIGFuZCB2Y21wCisgICBpcyB1bmRlZmluZWQuICovCitzdGF0aWMgaW50Citjb252ZXJ0X29wX2NtcChQeU9iamVjdCAqKnZjbXAsIFB5T2JqZWN0ICoqd2NtcCwgUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LAorICAgICAgICAgICAgICAgaW50IG9wLCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHggPSBDVFgoY29udGV4dCk7CisKKyAgICAqdmNtcCA9IHY7CisKKyAgICBpZiAoUHlEZWNfQ2hlY2sodykpIHsKKyAgICAgICAgUHlfSU5DUkVGKHcpOworICAgICAgICAqd2NtcCA9IHc7CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayh3KSkgeworICAgICAgICAqd2NtcCA9IFB5RGVjX0Zyb21Mb25nRXhhY3QodywgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2sodykpIHsKKyAgICAgICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FICYmCisgICAgICAgICAgICBkZWNfYWRkc3RhdHVzKGNvbnRleHQsIE1QRF9GbG9hdF9vcGVyYXRpb24pKSB7CisgICAgICAgICAgICAqd2NtcCA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjdHgtPnN0YXR1cyB8PSBNUERfRmxvYXRfb3BlcmF0aW9uOworICAgICAgICAgICAgKndjbXAgPSBQeURlY19Gcm9tRmxvYXRFeGFjdCh3LCBjb250ZXh0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChQeUNvbXBsZXhfQ2hlY2sodykgJiYgKG9wID09IFB5X0VRIHx8IG9wID09IFB5X05FKSkgeworICAgICAgICBQeV9jb21wbGV4IGMgPSBQeUNvbXBsZXhfQXNDQ29tcGxleCh3KTsKKyAgICAgICAgaWYgKGMucmVhbCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICp3Y21wID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjLmltYWcgPT0gMC4wKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlGbG9hdF9Gcm9tRG91YmxlKGMucmVhbCk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqd2NtcCA9IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjdHgtPnN0YXR1cyB8PSBNUERfRmxvYXRfb3BlcmF0aW9uOworICAgICAgICAgICAgICAgICp3Y21wID0gUHlEZWNfRnJvbUZsb2F0RXhhY3QodG1wLCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7CisgICAgICAgICAgICAqd2NtcCA9IFB5X05vdEltcGxlbWVudGVkOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UodywgUmF0aW9uYWwpKSB7CisgICAgICAgICp3Y21wID0gbnVtZXJhdG9yX2FzX2RlY2ltYWwodywgY29udGV4dCk7CisgICAgICAgIGlmICgqd2NtcCAmJiAhbXBkX2lzc3BlY2lhbChNUEQodikpKSB7CisgICAgICAgICAgICAqdmNtcCA9IG11bHRpcGx5X2J5X2Rlbm9taW5hdG9yKHYsIHcsIGNvbnRleHQpOworICAgICAgICAgICAgaWYgKCp2Y21wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUigqd2NtcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7CisgICAgICAgICp3Y21wID0gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgfQorCisgICAgaWYgKCp3Y21wID09IE5VTEwgfHwgKndjbXAgPT0gUHlfTm90SW1wbGVtZW50ZWQpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICgqdmNtcCA9PSB2KSB7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKyNkZWZpbmUgQ09OVkVSVF9CSU5PUF9DTVAodmNtcCwgd2NtcCwgdiwgdywgb3AsIGN0eCkgXAorICAgIGlmICghY29udmVydF9vcF9jbXAodmNtcCwgd2NtcCwgdiwgdywgb3AsIGN0eCkpIHsgIFwKKyAgICAgICAgcmV0dXJuICood2NtcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvbnMgZnJvbSBkZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfZnJvbWFzY2lpKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgcmVzID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1jcHkoUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKSwgcywgc2l6ZSk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyogUHlEZWNPYmplY3QgYXMgYSBzdHJpbmcuIFRoZSBkZWZhdWx0IG1vZHVsZSBjb250ZXh0IGlzIG9ubHkgdXNlZCBmb3IKKyAgIHRoZSB2YWx1ZSBvZiAnY2FwaXRhbHMnLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19zdHIoUHlPYmplY3QgKmRlYykKK3sKKyAgICBQeU9iamVjdCAqcmVzLCAqY29udGV4dDsKKyAgICBtcGRfc3NpemVfdCBzaXplOworICAgIGNoYXIgKmNwOworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIHNpemUgPSBtcGRfdG9fc2NpX3NpemUoJmNwLCBNUEQoZGVjKSwgQ3R4Q2Fwcyhjb250ZXh0KSk7CisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IHVuaWNvZGVfZnJvbWFzY2lpKGNwLCBzaXplKTsKKyAgICBtcGRfZnJlZShjcCk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyogUmVwcmVzZW50YXRpb24gb2YgYSBQeURlY09iamVjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfcmVwcihQeU9iamVjdCAqZGVjKQoreworICAgIFB5T2JqZWN0ICpyZXMsICpjb250ZXh0OworICAgIGNoYXIgKmNwOworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIGNwID0gbXBkX3RvX3NjaShNUEQoZGVjKSwgQ3R4Q2Fwcyhjb250ZXh0KSk7CisgICAgaWYgKGNwID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIkRlY2ltYWwoJyVzJykiLCBjcCk7CisgICAgbXBkX2ZyZWUoY3ApOworICAgIHJldHVybiByZXM7Cit9CisKKy8qIENvbnZlcnQgZGVjaW1hbF9wb2ludCBvciB0aG91c2FuZHNfc2VwLCB3aGljaCBtYXkgYmUgbXVsdGlieXRlIG9yIGluCisgICB0aGUgcmFuZ2UgWzEyOCwgMjU1XSwgdG8gYSBVVEY4IHN0cmluZy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkb3RzZXBfYXNfdXRmOChjb25zdCBjaGFyICpzKQoreworICAgIFB5T2JqZWN0ICp1dGY4OworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgd2NoYXJfdCBidWZbMl07CisgICAgc2l6ZV90IG47CisKKyAgICBuID0gbWJzdG93Y3MoYnVmLCBzLCAyKTsKKyAgICBpZiAobiAhPSAxKSB7IC8qIElzc3VlICM3NDQyICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImludmFsaWQgZGVjaW1hbCBwb2ludCBvciB1bnN1cHBvcnRlZCAiCisgICAgICAgICAgICAiY29tYmluYXRpb24gb2YgTENfQ1RZUEUgYW5kIExDX05VTUVSSUMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHRtcCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoYnVmLCBuKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHV0ZjggPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHV0Zjg7Cit9CisKKy8qIEZvcm1hdHRlZCByZXByZXNlbnRhdGlvbiBvZiBhIFB5RGVjT2JqZWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19mb3JtYXQoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKm92ZXJyaWRlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZG90ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2VwID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZ3JvdXBpbmcgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmbXQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmbXRhcmc7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgbXBkX3NwZWNfdCBzcGVjOworICAgIGNoYXIgKmRlY3N0cmluZz0gTlVMTDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIHNpemVfdCBuOworCisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8iLCAmZm10YXJnLCAmb3ZlcnJpZGUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soZm10YXJnKSkgeworICAgICAgICBmbXQgPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKGZtdGFyZyk7CisgICAgICAgIGlmIChmbXQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiZm9ybWF0IGFyZyBtdXN0IGJlIHN0ciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9wYXJzZV9mbXRfc3RyKCZzcGVjLCBQeUJ5dGVzX0FTX1NUUklORyhmbXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3R4Q2Fwcyhjb250ZXh0KSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgc3RyaW5nIik7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKyAgICBpZiAob3ZlcnJpZGUpIHsKKyAgICAgICAgLyogVmFsdWVzIGZvciBkZWNpbWFsX3BvaW50LCB0aG91c2FuZHNfc2VwIGFuZCBncm91cGluZyBjYW4KKyAgICAgICAgICAgYmUgZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlIG92ZXJyaWRlIGRpY3QuIFRoZXNlIHZhbHVlcworICAgICAgICAgICB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgdmFsdWVzIG9idGFpbmVkIGZyb20gbG9jYWxlY29udigpCisgICAgICAgICAgIGluIG1wZF9wYXJzZV9mbXRfc3RyKCkuIFRoZSBmZWF0dXJlIGlzIG5vdCBkb2N1bWVudGVkIGFuZAorICAgICAgICAgICBpcyBvbmx5IHVzZWQgaW4gdGVzdF9kZWNpbWFsLiAqLworICAgICAgICBpZiAoIVB5RGljdF9DaGVjayhvdmVycmlkZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm9wdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBkaWN0Iik7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGRvdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG92ZXJyaWRlLCAiZGVjaW1hbF9wb2ludCIpKSkgeworICAgICAgICAgICAgaWYgKChkb3QgPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKGRvdCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNwZWMuZG90ID0gUHlCeXRlc19BU19TVFJJTkcoZG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKHNlcCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG92ZXJyaWRlLCAidGhvdXNhbmRzX3NlcCIpKSkgeworICAgICAgICAgICAgaWYgKChzZXAgPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHNlcCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNwZWMuc2VwID0gUHlCeXRlc19BU19TVFJJTkcoc2VwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGdyb3VwaW5nID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcob3ZlcnJpZGUsICJncm91cGluZyIpKSkgeworICAgICAgICAgICAgaWYgKChncm91cGluZyA9IFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoZ3JvdXBpbmcpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcGVjLmdyb3VwaW5nID0gUHlCeXRlc19BU19TVFJJTkcoZ3JvdXBpbmcpOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfdmFsaWRhdGVfbGNvbnYoJnNwZWMpIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImludmFsaWQgb3ZlcnJpZGUgZGljdCIpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG4gPSBzdHJsZW4oc3BlYy5kb3QpOworICAgICAgICBpZiAobiA+IDEgfHwgKG4gPT0gMSAmJiAhaXNhc2NpaSgodWNoYXIpc3BlYy5kb3RbMF0pKSkgeworICAgICAgICAgICAgLyogZml4IGxvY2FsZSBkZXBlbmRlbnQgbm9uLWFzY2lpIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgIGRvdCA9IGRvdHNlcF9hc191dGY4KHNwZWMuZG90KTsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3BlYy5kb3QgPSBQeUJ5dGVzX0FTX1NUUklORyhkb3QpOworICAgICAgICB9CisgICAgICAgIG4gPSBzdHJsZW4oc3BlYy5zZXApOworICAgICAgICBpZiAobiA+IDEgfHwgKG4gPT0gMSAmJiAhaXNhc2NpaSgodWNoYXIpc3BlYy5zZXBbMF0pKSkgeworICAgICAgICAgICAgLyogZml4IGxvY2FsZSBkZXBlbmRlbnQgbm9uLWFzY2lpIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgIHNlcCA9IGRvdHNlcF9hc191dGY4KHNwZWMuc2VwKTsKKyAgICAgICAgICAgIGlmIChzZXAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3BlYy5zZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhzZXApOworICAgICAgICB9CisgICAgfQorCisKKyAgICBkZWNzdHJpbmcgPSBtcGRfcWZvcm1hdF9zcGVjKE1QRChkZWMpLCAmc3BlYywgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjc3RyaW5nID09IE5VTEwpIHsKKyAgICAgICAgZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZVVURjgoZGVjc3RyaW5nLCBzdHJsZW4oZGVjc3RyaW5nKSwgTlVMTCk7CisKKworZmluaXNoOgorICAgIFB5X1hERUNSRUYoZ3JvdXBpbmcpOworICAgIFB5X1hERUNSRUYoc2VwKTsKKyAgICBQeV9YREVDUkVGKGRvdCk7CisgICAgUHlfWERFQ1JFRihmbXQpOworICAgIGlmIChkZWNzdHJpbmcpIG1wZF9mcmVlKGRlY3N0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogUmV0dXJuIGEgUHlMb25nT2JqZWN0IGZyb20gYSBQeURlY09iamVjdCwgdXNpbmcgdGhlIHNwZWNpZmllZCByb3VuZGluZworICogbW9kZS4gVGhlIGNvbnRleHQgcHJlY2lzaW9uIGlzIG5vdCBvYnNlcnZlZC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfYXNfbG9uZyhQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqY29udGV4dCwgaW50IHJvdW5kKQoreworICAgIFB5TG9uZ09iamVjdCAqcHlsb25nOworICAgIGRpZ2l0ICpvYl9kaWdpdDsKKyAgICBzaXplX3QgbjsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgbXBkX3QgKng7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChNUEQoZGVjKSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc25hbihNUEQoZGVjKSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB4ID0gbXBkX3FuZXcoKTsKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB3b3JrY3R4ID0gKkNUWChjb250ZXh0KTsKKyAgICB3b3JrY3R4LnJvdW5kID0gcm91bmQ7CisgICAgbXBkX3Fyb3VuZF90b19pbnQoeCwgTVBEKGRlYyksICZ3b3JrY3R4LCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIG1wZF9kZWwoeCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHN0YXR1cyA9IDA7CisgICAgb2JfZGlnaXQgPSBOVUxMOworI2lmIFBZTE9OR19CSVRTX0lOX0RJR0lUID09IDMwCisgICAgbiA9IG1wZF9xZXhwb3J0X3UzMigmb2JfZGlnaXQsIDAsIFB5TG9uZ19CQVNFLCB4LCAmc3RhdHVzKTsKKyNlbGlmIFBZTE9OR19CSVRTX0lOX0RJR0lUID09IDE1CisgICAgbiA9IG1wZF9xZXhwb3J0X3UxNigmb2JfZGlnaXQsIDAsIFB5TG9uZ19CQVNFLCB4LCAmc3RhdHVzKTsKKyNlbHNlCisgICAgI2Vycm9yICJQWUxPTkdfQklUU19JTl9ESUdJVCBzaG91bGQgYmUgMTUgb3IgMzAiCisjZW5kaWYKKworICAgIGlmIChuID09IFNJWkVfTUFYKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIG1wZF9kZWwoeCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGFzc2VydChuID4gMCk7CisgICAgcHlsb25nID0gX1B5TG9uZ19OZXcobik7CisgICAgaWYgKHB5bG9uZyA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9mcmVlKG9iX2RpZ2l0KTsKKyAgICAgICAgbXBkX2RlbCh4KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtY3B5KHB5bG9uZy0+b2JfZGlnaXQsIG9iX2RpZ2l0LCBuICogc2l6ZW9mKGRpZ2l0KSk7CisgICAgbXBkX2ZyZWUob2JfZGlnaXQpOworCisgICAgaSA9IG47CisgICAgd2hpbGUgKChpID4gMCkgJiYgKHB5bG9uZy0+b2JfZGlnaXRbaS0xXSA9PSAwKSkgeworICAgICAgICBpLS07CisgICAgfQorCisgICAgUHlfU0laRShweWxvbmcpID0gaTsKKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoeCkgJiYgIW1wZF9pc3plcm8oeCkpIHsKKyAgICAgICAgUHlfU0laRShweWxvbmcpID0gLWk7CisgICAgfQorCisgICAgbXBkX2RlbCh4KTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIHB5bG9uZzsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX1RvSW50ZWdyYWxWYWx1ZShQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJyb3VuZGluZyIsICJjb250ZXh0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBpbnQgcm91bmQgPSAtMTsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGlPIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyb3VuZCwgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworCisgICAgd29ya2N0eCA9ICpDVFgoY29udGV4dCk7CisgICAgaWYgKHJvdW5kID49IDApIHsKKyAgICAgICAgaWYgKCFtcGRfcXNldHJvdW5kKCZ3b3JrY3R4LCByb3VuZCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0eXBlX2Vycm9yX3B0cihpbnZhbGlkX3JvdW5kaW5nX2Vycik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fyb3VuZF90b19pbnQoTVBEKHJlc3VsdCksIE1QRChkZWMpLCAmd29ya2N0eCwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX1RvSW50ZWdyYWxFeGFjdChQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJyb3VuZGluZyIsICJjb250ZXh0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBpbnQgcm91bmQgPSAtMTsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGlPIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyb3VuZCwgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworCisgICAgd29ya2N0eCA9ICpDVFgoY29udGV4dCk7CisgICAgaWYgKHJvdW5kID49IDApIHsKKyAgICAgICAgaWYgKCFtcGRfcXNldHJvdW5kKCZ3b3JrY3R4LCByb3VuZCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0eXBlX2Vycm9yX3B0cihpbnZhbGlkX3JvdW5kaW5nX2Vycik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fyb3VuZF90b19pbnR4KE1QRChyZXN1bHQpLCBNUEQoZGVjKSwgJndvcmtjdHgsICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19Bc0Zsb2F0KFB5T2JqZWN0ICpkZWMpCit7CisgICAgUHlPYmplY3QgKmYsICpzOworCisgICAgaWYgKG1wZF9pc25hbihNUEQoZGVjKSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3NuYW4oTVBEKGRlYykpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgc2lnbmFsaW5nIE5hTiB0byBmbG9hdCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKE1QRChkZWMpKSkgeworICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCItbmFuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIm5hbiIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzID0gZGVjX3N0cihkZWMpOworICAgIH0KKworICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZiA9IFB5RmxvYXRfRnJvbVN0cmluZyhzKTsKKyAgICBQeV9ERUNSRUYocyk7CisKKyAgICByZXR1cm4gZjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX1JvdW5kKFB5T2JqZWN0ICpkZWMsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnggPSBOVUxMOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPIiwgJngpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICh4KSB7CisgICAgICAgIG1wZF91aW50X3QgZHFbMV0gPSB7MX07CisgICAgICAgIG1wZF90IHEgPSB7TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwwLDEsMSwxLGRxfTsKKyAgICAgICAgbXBkX3NzaXplX3QgeTsKKworICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh4KSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAib3B0aW9uYWwgYXJnIG11c3QgYmUgYW4gaW50ZWdlciIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICB5ID0gUHlMb25nX0FzU3NpemVfdCh4KTsKKyAgICAgICAgaWYgKHkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBxLmV4cCA9ICh5ID09IE1QRF9TU0laRV9NSU4pID8gTVBEX1NTSVpFX01BWCA6IC15OworICAgICAgICBtcGRfcXF1YW50aXplKE1QRChyZXN1bHQpLCBNUEQoZGVjKSwgJnEsIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGRlY19hc19sb25nKGRlYywgY29udGV4dCwgTVBEX1JPVU5EX0hBTEZfRVZFTik7CisgICAgfQorfQorCitQeU9iamVjdCAqRGVjaW1hbFR1cGxlID0gTlVMTDsKKy8qIFJldHVybiB0aGUgRGVjaW1hbFR1cGxlIHJlcHJlc2VudGF0aW9uIG9mIGEgUHlEZWNPYmplY3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNfQXNUdXBsZShQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzaWduID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY29lZmYgPSBOVUxMOworICAgIFB5T2JqZWN0ICpleHB0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdG1wID0gTlVMTDsKKyAgICBtcGRfdCAqeCA9IE5VTEw7CisgICAgY2hhciAqaW50c3RyaW5nID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGludGxlbiwgaTsKKworCisgICAgeCA9IG1wZF9xbmNvcHkoTVBEKGRlYykpOworICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgc2lnbiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG1wZF9zaWduKE1QRChkZWMpKSk7CisgICAgaWYgKHNpZ24gPT0gTlVMTCkgeworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBpZiAobXBkX2lzaW5maW5pdGUoeCkpIHsKKyAgICAgICAgZXhwdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJGIik7CisgICAgICAgIGlmIChleHB0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIC8qIGRlY2ltYWwucHkgaGFzIG5vbi1jb21wbGlhbnQgaW5maW5pdHkgcGF5bG9hZHMuICovCisgICAgICAgIGNvZWZmID0gUHlfQnVpbGRWYWx1ZSgiKGkpIiwgMCk7CisgICAgICAgIGlmIChjb2VmZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG1wZF9pc25hbih4KSkgeworICAgICAgICAgICAgZXhwdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1wZF9pc3FuYW4oeCk/Im4iOiJOIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBleHB0ID0gUHlMb25nX0Zyb21Tc2l6ZV90KE1QRChkZWMpLT5leHApOworICAgICAgICB9CisgICAgICAgIGlmIChleHB0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgLyogY29lZmZpY2llbnQgaXMgZGVmaW5lZCAqLworICAgICAgICBpZiAoeC0+bGVuID4gMCkgeworCisgICAgICAgICAgICAvKiBtYWtlIGFuIGludGVnZXIgKi8KKyAgICAgICAgICAgIHgtPmV4cCA9IDA7CisgICAgICAgICAgICAvKiBjbGVhciBOYU4gYW5kIHNpZ24gKi8KKyAgICAgICAgICAgIG1wZF9jbGVhcl9mbGFncyh4KTsKKyAgICAgICAgICAgIGludHN0cmluZyA9IG1wZF90b19zY2koeCwgMSk7CisgICAgICAgICAgICBpZiAoaW50c3RyaW5nID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnRsZW4gPSBzdHJsZW4oaW50c3RyaW5nKTsKKyAgICAgICAgICAgIGNvZWZmID0gUHlUdXBsZV9OZXcoaW50bGVuKTsKKyAgICAgICAgICAgIGlmIChjb2VmZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpbnRsZW47IGkrKykgeworICAgICAgICAgICAgICAgIHRtcCA9IFB5TG9uZ19Gcm9tTG9uZyhpbnRzdHJpbmdbaV0tJzAnKTsKKyAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY29lZmYsIGksIHRtcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb2VmZiA9IFB5VHVwbGVfTmV3KDApOworICAgICAgICAgICAgaWYgKGNvZWZmID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoRGVjaW1hbFR1cGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiwgY29lZmYsIGV4cHQsIE5VTEwpOworCitvdXQ6CisgICAgaWYgKHgpIG1wZF9kZWwoeCk7CisgICAgaWYgKGludHN0cmluZykgbXBkX2ZyZWUoaW50c3RyaW5nKTsKKyAgICBQeV9YREVDUkVGKHNpZ24pOworICAgIFB5X1hERUNSRUYoY29lZmYpOworICAgIFB5X1hERUNSRUYoZXhwdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICBNYWNyb3MgZm9yIGNvbnZlcnRpbmcgbXBkZWNpbWFsIGZ1bmN0aW9ucyB0byBEZWNpbWFsIG1ldGhvZHMgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFVuYXJ5IG51bWJlciBtZXRob2QgdGhhdCB1c2VzIHRoZSBkZWZhdWx0IG1vZHVsZSBjb250ZXh0LiAqLworI2RlZmluZSBEZWNfVW5hcnlOdW1iZXJNZXRob2QoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorbm1fIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpjb250ZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChzZWxmKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBCaW5hcnkgbnVtYmVyIG1ldGhvZCB0aGF0IHVzZXMgZGVmYXVsdCBtb2R1bGUgY29udGV4dC4gKi8KKyNkZWZpbmUgRGVjX0JpbmFyeU51bWJlck1ldGhvZChNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK25tXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyKSAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmEsICpiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpjb250ZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KSA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9CSU5PUCgmYSwgJmIsIHNlbGYsIG90aGVyLCBjb250ZXh0KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOyBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBCb29sZWFuIGZ1bmN0aW9uIHdpdGhvdXQgYSBjb250ZXh0IGFyZy4gKi8KKyNkZWZpbmUgRGVjX0Jvb2xGdW5jKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RlY18jI01QREZVTkMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gTVBERlVOQyhNUEQoc2VsZikpID8gaW5jcl90cnVlKCkgOiBpbmNyX2ZhbHNlKCk7IFwKK30KKworLyogQm9vbGVhbiBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIGNvbnRleHQgYXJnLiAqLworI2RlZmluZSBEZWNfQm9vbEZ1bmNWQShNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RlY18jI01QREZVTkMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJjb250ZXh0IiwgTlVMTH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqY29udGV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE8iLCBrd2xpc3QsICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gTVBERlVOQyhNUEQoc2VsZiksIENUWChjb250ZXh0KSkgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsgXAorfQorCisvKiBVbmFyeSBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIGNvbnRleHQgYXJnLiAqLworI2RlZmluZSBEZWNfVW5hcnlGdW5jVkEoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGVjXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKSAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiY29udGV4dCIsIE5VTEx9OyAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpjb250ZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TyIsIGt3bGlzdCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0KSkgeyAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChzZWxmKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgICAgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBVbmFyeSBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIGNvbnRleHQgYXJnLiBUaGUgYWN0dWFsIE1QREZVTkMKKyAgIG9ubHkgdGFrZXMgYSBzdGF0dXMgcGFyYW1ldGVyLiAqLworI2RlZmluZSBEZWNfVW5hcnlGdW5jVkFfTk9fQ1RYKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RlY18jI01QREZVTkMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImNvbnRleHQiLCBOVUxMfTsgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqY29udGV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE8iLCBrd2xpc3QsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dCkpIHsgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoc2VsZiksICZzdGF0dXMpOyAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogQmluYXJ5IGZ1bmN0aW9uIHdpdGggYW4gb3B0aW9uYWwgY29udGV4dCBhcmcuICovCisjZGVmaW5lIERlY19CaW5hcnlGdW5jVkEoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkZWNfIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib3RoZXIiLCAiY29udGV4dCIsIE5VTEx9OyAgICAgICAgICBcCisgICAgUHlPYmplY3QgKm90aGVyLCAqY29udGV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqYSwgKmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TyIsIGt3bGlzdCwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3RoZXIsICZjb250ZXh0KSkgeyAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCBzZWxmLCBvdGhlciwgY29udGV4dCk7ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogQmluYXJ5IGZ1bmN0aW9uIHdpdGggYW4gb3B0aW9uYWwgY29udGV4dCBhcmcuIEFjdHVhbCBNUERGVU5DIGRvZXMKKyAgIE5PVCB0YWtlIGEgY29udGV4dC4gVGhlIGNvbnRleHQgaXMgdXNlZCB0byByZWNvcmQgSW52YWxpZE9wZXJhdGlvbgorICAgaWYgdGhlIHNlY29uZCBvcGVyYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZXhhY3RseS4gKi8KKyNkZWZpbmUgRGVjX0JpbmFyeUZ1bmNWQV9OT19DVFgoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RlY18jI01QREZVTkMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib3RoZXIiLCAiY29udGV4dCIsIE5VTEx9OyAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqb3RoZXIsICpjb250ZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmEsICpiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE8iLCBrd2xpc3QsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3RoZXIsICZjb250ZXh0KSkgeyAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHNlbGYsIG90aGVyLCBjb250ZXh0KTsgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBUZXJuYXJ5IGZ1bmN0aW9uIHdpdGggYW4gb3B0aW9uYWwgY29udGV4dCBhcmcuICovCisjZGVmaW5lIERlY19UZXJuYXJ5RnVuY1ZBKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkZWNfIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im90aGVyIiwgInRoaXJkIiwgImNvbnRleHQiLCBOVUxMfTsgICAgICAgICBcCisgICAgUHlPYmplY3QgKm90aGVyLCAqdGhpcmQsICpjb250ZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphLCAqYiwgKmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PfE8iLCBrd2xpc3QsICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdGhlciwgJnRoaXJkLCAmY29udGV4dCkpIHsgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX1RFUk5PUF9SQUlTRSgmYSwgJmIsICZjLCBzZWxmLCBvdGhlciwgdGhpcmQsIGNvbnRleHQpOyAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgTVBEKGMpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOyBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgTnVtYmVyIG1ldGhvZHMgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitEZWNfVW5hcnlOdW1iZXJNZXRob2QobXBkX3FtaW51cykKK0RlY19VbmFyeU51bWJlck1ldGhvZChtcGRfcXBsdXMpCitEZWNfVW5hcnlOdW1iZXJNZXRob2QobXBkX3FhYnMpCisKK0RlY19CaW5hcnlOdW1iZXJNZXRob2QobXBkX3FhZGQpCitEZWNfQmluYXJ5TnVtYmVyTWV0aG9kKG1wZF9xc3ViKQorRGVjX0JpbmFyeU51bWJlck1ldGhvZChtcGRfcW11bCkKK0RlY19CaW5hcnlOdW1iZXJNZXRob2QobXBkX3FkaXYpCitEZWNfQmluYXJ5TnVtYmVyTWV0aG9kKG1wZF9xcmVtKQorRGVjX0JpbmFyeU51bWJlck1ldGhvZChtcGRfcWRpdmludCkKKworc3RhdGljIFB5T2JqZWN0ICoKK25tX2RlY19hc19sb25nKFB5T2JqZWN0ICpkZWMpCit7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgcmV0dXJuIGRlY19hc19sb25nKGRlYywgY29udGV4dCwgTVBEX1JPVU5EX0RPV04pOworfQorCitzdGF0aWMgaW50CitubV9ub256ZXJvKFB5T2JqZWN0ICp2KQoreworICAgIHJldHVybiAhbXBkX2lzemVybyhNUEQodikpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbm1fbXBkX3FkaXZtb2QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQoreworICAgIFB5T2JqZWN0ICphLCAqYjsKKyAgICBQeU9iamVjdCAqcSwgKnI7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBQeU9iamVjdCAqcmV0OworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIENPTlZFUlRfQklOT1AoJmEsICZiLCB2LCB3LCBjb250ZXh0KTsKKworICAgIHEgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgciA9IGRlY19hbGxvYygpOworICAgIGlmIChyID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgIFB5X0RFQ1JFRihxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3FkaXZtb2QoTVBEKHEpLCBNUEQociksIE1QRChhKSwgTVBEKGIpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocik7CisgICAgICAgIFB5X0RFQ1JFRihxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0ID0gUHlfQnVpbGRWYWx1ZSgiKE9PKSIsIHEsIHIpOworICAgIFB5X0RFQ1JFRihyKTsKKyAgICBQeV9ERUNSRUYocSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIG1wZF91aW50X3QgZGF0YV96ZXJvWzFdID0gezB9Oworc3RhdGljIGNvbnN0IG1wZF90IHplcm8gPSB7TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwgMCwgMSwgMSwgMSwgZGF0YV96ZXJvfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK25tX21wZF9xcG93KFB5T2JqZWN0ICpiYXNlLCBQeU9iamVjdCAqZXhwLCBQeU9iamVjdCAqbW9kKQoreworICAgIFB5T2JqZWN0ICphLCAqYiwgKmMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBDT05WRVJUX0JJTk9QKCZhLCAmYiwgYmFzZSwgZXhwLCBjb250ZXh0KTsKKworICAgIGlmIChtb2QgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIWNvbnZlcnRfb3AoTk9UX0lNUEwsICZjLCBtb2QsIGNvbnRleHQpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgUHlfWERFQ1JFRihjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGMgPT0gTlVMTCkgeworICAgICAgICBtcGRfcXBvdyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksCisgICAgICAgICAgICAgICAgIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfcXBvd21vZChNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksIE1QRChjKSwKKyAgICAgICAgICAgICAgICAgICAgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICAgICAgUHlfREVDUkVGKGMpOworICAgIH0KKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBVbmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KK0RlY19VbmFyeUZ1bmNWQShtcGRfcWV4cCkKK0RlY19VbmFyeUZ1bmNWQShtcGRfcWxuKQorRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xbG9nMTApCitEZWNfVW5hcnlGdW5jVkEobXBkX3FuZXh0X21pbnVzKQorRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xbmV4dF9wbHVzKQorRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xcmVkdWNlKQorRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xc3FydCkKKworLyogQmluYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworRGVjX0JpbmFyeUZ1bmNWQShtcGRfcWNvbXBhcmUpCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xY29tcGFyZV9zaWduYWwpCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xbWF4KQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcW1heF9tYWcpCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xbWluKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcW1pbl9tYWcpCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xbmV4dF90b3dhcmQpCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xcmVtX25lYXIpCisKKy8qIFRlcm5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCitEZWNfVGVybmFyeUZ1bmNWQShtcGRfcWZtYSkKKworLyogQm9vbGVhbiBmdW5jdGlvbnMsIG5vIGNvbnRleHQgYXJnICovCitEZWNfQm9vbEZ1bmMobXBkX2lzY2Fub25pY2FsKQorRGVjX0Jvb2xGdW5jKG1wZF9pc2Zpbml0ZSkKK0RlY19Cb29sRnVuYyhtcGRfaXNpbmZpbml0ZSkKK0RlY19Cb29sRnVuYyhtcGRfaXNuYW4pCitEZWNfQm9vbEZ1bmMobXBkX2lzcW5hbikKK0RlY19Cb29sRnVuYyhtcGRfaXNzbmFuKQorRGVjX0Jvb2xGdW5jKG1wZF9pc3NpZ25lZCkKK0RlY19Cb29sRnVuYyhtcGRfaXN6ZXJvKQorCisvKiBCb29sZWFuIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KK0RlY19Cb29sRnVuY1ZBKG1wZF9pc25vcm1hbCkKK0RlY19Cb29sRnVuY1ZBKG1wZF9pc3N1Ym5vcm1hbCkKKworLyogVW5hcnkgZnVuY3Rpb25zLCBubyBjb250ZXh0IGFyZyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfYWRqZXhwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIG1wZF9zc2l6ZV90IHJldHZhbDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKE1QRChzZWxmKSkpIHsKKyAgICAgICAgcmV0dmFsID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHZhbCA9IG1wZF9hZGpleHAoTVBEKHNlbGYpKTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJldHZhbCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfY2Fub25pY2FsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19jb25qdWdhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHJldHVybiBzZWxmOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX21wZF9yYWRpeChQeU9iamVjdCAqc2VsZiBVTlVTRUQsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBfZGVjX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDEwLCAwKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBVbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnIGZvciBjb252ZXJzaW9uIGVycm9ycyAqLworRGVjX1VuYXJ5RnVuY1ZBX05PX0NUWChtcGRfcWNvcHlfYWJzKQorRGVjX1VuYXJ5RnVuY1ZBX05PX0NUWChtcGRfcWNvcHlfbmVnYXRlKQorCisvKiBVbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCitEZWNfVW5hcnlGdW5jVkEobXBkX3FpbnZlcnQpCitEZWNfVW5hcnlGdW5jVkEobXBkX3Fsb2diKQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX21wZF9jbGFzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiY29udGV4dCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIGNvbnN0IGNoYXIgKmNwOworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7CisKKyAgICBjcCA9IG1wZF9jbGFzcyhNUEQoc2VsZiksIENUWChjb250ZXh0KSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNwKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfdG9fZW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJjb250ZXh0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKyAgICBtcGRfc3NpemVfdCBzaXplOworICAgIGNoYXIgKnM7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsKKworICAgIHNpemUgPSBtcGRfdG9fZW5nX3NpemUoJnMsIE1QRChzZWxmKSwgQ3R4Q2Fwcyhjb250ZXh0KSk7CisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IHVuaWNvZGVfZnJvbWFzY2lpKHMsIHNpemUpOworICAgIG1wZF9mcmVlKHMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogQmluYXJ5IGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgZm9yIGNvbnZlcnNpb24gZXJyb3JzICovCitEZWNfQmluYXJ5RnVuY1ZBX05PX0NUWChtcGRfY29tcGFyZV90b3RhbCkKK0RlY19CaW5hcnlGdW5jVkFfTk9fQ1RYKG1wZF9jb21wYXJlX3RvdGFsX21hZykKKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfcWNvcHlfc2lnbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib3RoZXIiLCAiY29udGV4dCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpvdGhlciwgKmNvbnRleHQ7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdGhlciwgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCBzZWxmLCBvdGhlciwgY29udGV4dCk7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xY29weV9zaWduKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX21wZF9zYW1lX3F1YW50dW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im90aGVyIiwgImNvbnRleHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqb3RoZXIsICpjb250ZXh0OworICAgIFB5T2JqZWN0ICphLCAqYjsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE8iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm90aGVyLCAmY29udGV4dCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7CisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHNlbGYsIG90aGVyLCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IG1wZF9zYW1lX3F1YW50dW0oTVBEKGEpLCBNUEQoYikpID8gaW5jcl90cnVlKCkgOiBpbmNyX2ZhbHNlKCk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIEJpbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xYW5kKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcW9yKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcXhvcikKKworRGVjX0JpbmFyeUZ1bmNWQShtcGRfcXJvdGF0ZSkKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FzY2FsZWIpCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xc2hpZnQpCisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX3FxdWFudGl6ZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZXhwIiwgInJvdW5kaW5nIiwgImNvbnRleHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqdywgKmNvbnRleHQ7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgaW50IHJvdW5kID0gLTE7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98aU8iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJncsICZyb3VuZCwgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworCisgICAgd29ya2N0eCA9ICpDVFgoY29udGV4dCk7CisgICAgaWYgKHJvdW5kID49IDApIHsKKyAgICAgICAgaWYgKCFtcGRfcXNldHJvdW5kKCZ3b3JrY3R4LCByb3VuZCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0eXBlX2Vycm9yX3B0cihpbnZhbGlkX3JvdW5kaW5nX2Vycik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgdiwgdywgY29udGV4dCk7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xcXVhbnRpemUoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCAmd29ya2N0eCwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBTcGVjaWFsIG1ldGhvZHMgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfcmljaGNvbXBhcmUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApCit7CisgICAgUHlPYmplY3QgKmE7CisgICAgUHlPYmplY3QgKmI7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBpbnQgYV9pc3NuYW4sIGJfaXNzbmFuOworICAgIGludCByOworCisgICAgYXNzZXJ0KFB5RGVjX0NoZWNrKHYpKTsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBDT05WRVJUX0JJTk9QX0NNUCgmYSwgJmIsIHYsIHcsIG9wLCBjb250ZXh0KTsKKworICAgIGFfaXNzbmFuID0gbXBkX2lzc25hbihNUEQoYSkpOworICAgIGJfaXNzbmFuID0gbXBkX2lzc25hbihNUEQoYikpOworCisgICAgciA9IG1wZF9xY21wKE1QRChhKSwgTVBEKGIpLCAmc3RhdHVzKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIGlmIChyID09IElOVF9NQVgpIHsKKyAgICAgICAgLyogc05hTnMgb3Igb3A9e2xlLGdlLGx0LGd0fSBhbHdheXMgc2lnbmFsLiAqLworICAgICAgICBpZiAoYV9pc3NuYW4gfHwgYl9pc3NuYW4gfHwgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKSkgeworICAgICAgICAgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qIHFOYU4gY29tcGFyaXNvbiB3aXRoIG9wPXtlcSxuZX0gb3IgY29tcGFyaXNvbgorICAgICAgICAgKiB3aXRoIEludmFsaWRPcGVyYXRpb24gZGlzYWJsZWQuICovCisgICAgICAgIHJldHVybiAob3AgPT0gUHlfTkUpID8gaW5jcl90cnVlKCkgOiBpbmNyX2ZhbHNlKCk7CisgICAgfQorCisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgUHlfRVE6CisgICAgICAgIHIgPSAociA9PSAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeV9ORToKKyAgICAgICAgciA9IChyICE9IDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5X0xFOgorICAgICAgICByID0gKHIgPD0gMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlfR0U6CisgICAgICAgIHIgPSAociA+PSAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeV9MVDoKKyAgICAgICAgciA9IChyID09IC0xKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeV9HVDoKKyAgICAgICAgciA9IChyID09IDEpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHIpOworfQorCisvKiBfX2NlaWxfXyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19jZWlsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIHJldHVybiBkZWNfYXNfbG9uZyhzZWxmLCBjb250ZXh0LCBNUERfUk9VTkRfQ0VJTElORyk7Cit9CisKKy8qIF9fY29tcGxleF9fICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2NvbXBsZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmY7CisgICAgZG91YmxlIHg7CisKKyAgICBmID0gUHlEZWNfQXNGbG9hdChzZWxmKTsKKyAgICBpZiAoZiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHggPSBQeUZsb2F0X0FzRG91YmxlKGYpOworICAgIFB5X0RFQ1JFRihmKTsKKyAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5Q29tcGxleF9Gcm9tRG91Ymxlcyh4LCAwKTsKK30KKworLyogX19jb3B5X18gYW5kIF9fZGVlcGNvcHlfXyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19jb3B5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLyogX19mbG9vcl9fICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2Zsb29yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIHJldHVybiBkZWNfYXNfbG9uZyhzZWxmLCBjb250ZXh0LCBNUERfUk9VTkRfRkxPT1IpOworfQorCisvKiBBbHdheXMgdXNlcyB0aGUgbW9kdWxlIGNvbnRleHQgKi8KK3N0YXRpYyBQeV9oYXNoX3QKK19kZWNfaGFzaChQeURlY09iamVjdCAqdikKK3sKKyNpZiBkZWZpbmVkKENPTkZJR182NCkgJiYgX1B5SEFTSF9CSVRTID09IDYxCisgICAgLyogMioqNjEgLSAxICovCisgICAgbXBkX3VpbnRfdCBwX2RhdGFbMV0gPSB7MjMwNTg0MzAwOTIxMzY5Mzk1MVVMTH07CisgICAgbXBkX3QgcCA9IHtNUERfUE9TfE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIDAsIDE5LCAxLCAxLCBwX2RhdGF9OworICAgIC8qIEludmVyc2Ugb2YgMTAgbW9kdWxvIHAgKi8KKyAgICBtcGRfdWludF90IGludjEwX3BfZGF0YVsxXSA9IHsyMDc1MjU4NzA4MjkyMzI0NTU2VUxMfTsKKyAgICBtcGRfdCBpbnYxMF9wID0ge01QRF9QT1N8TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwKKyAgICAgICAgICAgICAgICAgICAgIDAsIDE5LCAxLCAxLCBpbnYxMF9wX2RhdGF9OworI2VsaWYgZGVmaW5lZChDT05GSUdfMzIpICYmIF9QeUhBU0hfQklUUyA9PSAzMQorICAgIC8qIDIqKjMxIC0gMSAqLworICAgIG1wZF91aW50X3QgcF9kYXRhWzJdID0gezE0NzQ4MzY0N1VMLCAyfTsKKyAgICBtcGRfdCBwID0ge01QRF9QT1N8TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwgMCwgMTAsIDIsIDIsIHBfZGF0YX07CisgICAgLyogSW52ZXJzZSBvZiAxMCBtb2R1bG8gcCAqLworICAgIG1wZF91aW50X3QgaW52MTBfcF9kYXRhWzJdID0gezUwMzIzODU1M1VMLCAxfTsKKyAgICBtcGRfdCBpbnYxMF9wID0ge01QRF9QT1N8TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwKKyAgICAgICAgICAgICAgICAgICAgIDAsIDEwLCAyLCAyLCBpbnYxMF9wX2RhdGF9OworI2Vsc2UKKyAgICAjZXJyb3IgIk5vIHZhbGlkIGNvbWJpbmF0aW9uIG9mIENPTkZJR182NCwgQ09ORklHXzMyIGFuZCBfUHlIQVNIX0JJVFMiCisjZW5kaWYKKyAgICBjb25zdCBQeV9oYXNoX3QgcHlfaGFzaF9pbmYgPSAzMTQxNTk7CisgICAgY29uc3QgUHlfaGFzaF90IHB5X2hhc2hfbmFuID0gMDsKKyAgICBtcGRfdWludF90IHRlbl9kYXRhWzFdID0gezEwfTsKKyAgICBtcGRfdCB0ZW4gPSB7TVBEX1BPU3xNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLAorICAgICAgICAgICAgICAgICAwLCAyLCAxLCAxLCB0ZW5fZGF0YX07CisgICAgUHlfaGFzaF90IHJlc3VsdDsKKyAgICBtcGRfdCAqZXhwX2hhc2ggPSBOVUxMOworICAgIG1wZF90ICp0bXAgPSBOVUxMOworICAgIG1wZF9zc2l6ZV90IGV4cDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisKKyAgICBjb250ZXh0ID0gY3VycmVudF9jb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoTVBEKHYpKSkgeworICAgICAgICBpZiAobXBkX2lzc25hbihNUEQodikpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJDYW5ub3QgaGFzaCBhIHNpZ25hbGluZyBOYU4gdmFsdWUiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcGRfaXNuYW4oTVBEKHYpKSkgeworICAgICAgICAgICAgcmV0dXJuIHB5X2hhc2hfbmFuOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHB5X2hhc2hfaW5mICogbXBkX2FyaXRoX3NpZ24oTVBEKHYpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjdHgpOworICAgIGV4cF9oYXNoID0gbXBkX3FuZXcoKTsKKyAgICBpZiAoZXhwX2hhc2ggPT0gTlVMTCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisgICAgdG1wID0gbXBkX3FuZXcoKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBleHAodik6IGV4cG9uZW50IG9mIHYKKyAgICAgKiBpbnQodik6IGNvZWZmaWNpZW50IG9mIHYKKyAgICAgKi8KKyAgICBleHAgPSBNUEQodiktPmV4cDsKKyAgICBpZiAoZXhwID49IDApIHsKKyAgICAgICAgLyogMTAqKmV4cCh2KSAlIHAgKi8KKyAgICAgICAgbXBkX3Fzc2V0X3NzaXplKHRtcCwgZXhwLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICAgICAgbXBkX3Fwb3dtb2QoZXhwX2hhc2gsICZ0ZW4sIHRtcCwgJnAsICZtYXhjdHgsICZzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogaW52MTBfcCoqKC1leHAodikpICUgcCAqLworICAgICAgICBtcGRfcXNzZXRfc3NpemUodG1wLCAtZXhwLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICAgICAgbXBkX3Fwb3dtb2QoZXhwX2hhc2gsICZpbnYxMF9wLCB0bXAsICZwLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICB9CisKKyAgICAvKiBoYXNoID0gKGludCh2KSAqIGV4cF9oYXNoKSAlIHAgKi8KKyAgICBpZiAoIW1wZF9xY29weSh0bXAsIE1QRCh2KSwgJnN0YXR1cykpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorICAgIHRtcC0+ZXhwID0gMDsKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKHRtcCk7CisKKyAgICBtYXhjdHgucHJlYyA9IE1QRF9NQVhfUFJFQyArIDIxOworICAgIG1heGN0eC5lbWF4ID0gTVBEX01BWF9FTUFYICsgMjE7CisgICAgbWF4Y3R4LmVtaW4gPSBNUERfTUlOX0VNSU4gLSAyMTsKKworICAgIG1wZF9xbXVsKHRtcCwgdG1wLCBleHBfaGFzaCwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgbXBkX3FyZW0odG1wLCB0bXAsICZwLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKworICAgIHJlc3VsdCA9IG1wZF9xZ2V0X3NzaXplKHRtcCwgJnN0YXR1cyk7CisgICAgcmVzdWx0ID0gbXBkX2lzcG9zaXRpdmUoTVBEKHYpKSA/IHJlc3VsdCA6IC1yZXN1bHQ7CisgICAgcmVzdWx0ID0gKHJlc3VsdCA9PSAtMSkgPyAtMiA6IHJlc3VsdDsKKworICAgIGlmIChzdGF0dXMgIT0gMCkgeworICAgICAgICBpZiAoc3RhdHVzICYgTVBEX01hbGxvY19lcnJvcikgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJkZWNfaGFzaDogaW50ZXJuYWwgZXJyb3I6IHBsZWFzZSByZXBvcnQiKTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQgPSAtMTsKKyAgICB9CisKKworZmluaXNoOgorICAgIGlmIChleHBfaGFzaCkgbXBkX2RlbChleHBfaGFzaCk7CisgICAgaWYgKHRtcCkgbXBkX2RlbCh0bXApOworICAgIHJldHVybiByZXN1bHQ7CisKK21hbGxvY19lcnJvcjoKKyAgICBQeUVycl9Ob01lbW9yeSgpOworICAgIHJlc3VsdCA9IC0xOworICAgIGdvdG8gZmluaXNoOworfQorCitzdGF0aWMgUHlfaGFzaF90CitkZWNfaGFzaChQeURlY09iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+aGFzaCA9PSAtMSkgeworICAgICAgICBzZWxmLT5oYXNoID0gX2RlY19oYXNoKHNlbGYpOworICAgIH0KKworICAgIHJldHVybiBzZWxmLT5oYXNoOworfQorCisvKiBfX3JlZHVjZV9fICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX3JlZHVjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqc3RyOworCisgICAgc3RyID0gZGVjX3N0cihzZWxmKTsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiTyhPKSIsIFB5X1RZUEUoc2VsZiksIHN0cik7CisgICAgUHlfREVDUkVGKHN0cik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBfX3NpemVvZl9fICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX3NpemVvZihQeU9iamVjdCAqdiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeV9zc2l6ZV90IHJlczsKKworICAgIHJlcyA9IHNpemVvZihQeURlY09iamVjdCk7CisgICAgaWYgKG1wZF9pc2R5bmFtaWNfZGF0YShNUEQodikpKSB7CisgICAgICAgIHJlcyArPSBNUEQodiktPmFsbG9jICogc2l6ZW9mKG1wZF91aW50X3QpOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7Cit9CisKKy8qIF9fdHJ1bmNfXyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY190cnVuYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICByZXR1cm4gZGVjX2FzX2xvbmcoc2VsZiwgY29udGV4dCwgTVBEX1JPVU5EX0RPV04pOworfQorCisvKiByZWFsIGFuZCBpbWFnICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX3JlYWwoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19pbWFnKFB5T2JqZWN0ICpzZWxmIFVOVVNFRCwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBfZGVjX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDAsIDApOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworc3RhdGljIFB5R2V0U2V0RGVmIGRlY19nZXRzZXRzIFtdID0KK3sKKyAgeyAicmVhbCIsIChnZXR0ZXIpZGVjX3JlYWwsIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJpbWFnIiwgKGdldHRlcilkZWNfaW1hZywgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHtOVUxMfQorfTsKKworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBkZWNfbnVtYmVyX21ldGhvZHMgPQoreworICAgIChiaW5hcnlmdW5jKSBubV9tcGRfcWFkZCwKKyAgICAoYmluYXJ5ZnVuYykgbm1fbXBkX3FzdWIsCisgICAgKGJpbmFyeWZ1bmMpIG5tX21wZF9xbXVsLAorICAgIChiaW5hcnlmdW5jKSBubV9tcGRfcXJlbSwKKyAgICAoYmluYXJ5ZnVuYykgbm1fbXBkX3FkaXZtb2QsCisgICAgKHRlcm5hcnlmdW5jKSBubV9tcGRfcXBvdywKKyAgICAodW5hcnlmdW5jKSBubV9tcGRfcW1pbnVzLAorICAgICh1bmFyeWZ1bmMpIG5tX21wZF9xcGx1cywKKyAgICAodW5hcnlmdW5jKSBubV9tcGRfcWFicywKKyAgICAoaW5xdWlyeSkgbm1fbm9uemVybywKKyAgICAodW5hcnlmdW5jKSAwLCAgIC8qIG5vIGJpdC1jb21wbGVtZW50ICovCisgICAgKGJpbmFyeWZ1bmMpIDAsICAvKiBubyBzaGlmdGwgKi8KKyAgICAoYmluYXJ5ZnVuYykgMCwgIC8qIG5vIHNoaWZ0ciAqLworICAgIChiaW5hcnlmdW5jKSAwLCAgLyogbm8gYml0LWFuZCAqLworICAgIChiaW5hcnlmdW5jKSAwLCAgLyogbm8gYml0LXhvciAqLworICAgIChiaW5hcnlmdW5jKSAwLCAgLyogbm8gYml0LWlvciAqLworICAgICh1bmFyeWZ1bmMpIG5tX2RlY19hc19sb25nLAorICAgIDAsICAgICAgICAgICAgICAgLyogbmJfcmVzZXJ2ZWQgKi8KKyAgICAodW5hcnlmdW5jKSBQeURlY19Bc0Zsb2F0LAorICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX2FkZDsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9zdWJ0cmFjdDsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9tdWx0aXBseTsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9yZW1haW5kZXI7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiB0ZXJuYXJ5ZnVuYyBuYl9pbnBsYWNlX3Bvd2VyOyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX2xzaGlmdDsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9yc2hpZnQ7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfYW5kOyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX3hvcjsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9vcjsgKi8KKyAgICAoYmluYXJ5ZnVuYykgbm1fbXBkX3FkaXZpbnQsICAvKiBiaW5hcnlmdW5jIG5iX2Zsb29yX2RpdmlkZTsgKi8KKyAgICAoYmluYXJ5ZnVuYykgbm1fbXBkX3FkaXYsICAgICAvKiBiaW5hcnlmdW5jIG5iX3RydWVfZGl2aWRlOyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX2Zsb29yX2RpdmlkZTsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV90cnVlX2RpdmlkZTsgKi8KK307CisKK3N0YXRpYyBQeU1ldGhvZERlZiBkZWNfbWV0aG9kcyBbXSA9Cit7CisgIC8qIFVuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworICB7ICJleHAiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xZXhwLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2V4cCB9LAorICB7ICJsbiIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FsbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19sbiB9LAorICB7ICJsb2cxMCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3Fsb2cxMCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19sb2cxMCB9LAorICB7ICJuZXh0X21pbnVzIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcW5leHRfbWludXMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbmV4dF9taW51cyB9LAorICB7ICJuZXh0X3BsdXMiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbmV4dF9wbHVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX25leHRfcGx1cyB9LAorICB7ICJub3JtYWxpemUiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xcmVkdWNlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX25vcm1hbGl6ZSB9LAorICB7ICJ0b19pbnRlZ3JhbCIsIChQeUNGdW5jdGlvbilQeURlY19Ub0ludGVncmFsVmFsdWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfdG9faW50ZWdyYWwgfSwKKyAgeyAidG9faW50ZWdyYWxfZXhhY3QiLCAoUHlDRnVuY3Rpb24pUHlEZWNfVG9JbnRlZ3JhbEV4YWN0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3RvX2ludGVncmFsX2V4YWN0IH0sCisgIHsgInRvX2ludGVncmFsX3ZhbHVlIiwgKFB5Q0Z1bmN0aW9uKVB5RGVjX1RvSW50ZWdyYWxWYWx1ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY190b19pbnRlZ3JhbF92YWx1ZSB9LAorICB7ICJzcXJ0IiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXNxcnQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2Nfc3FydCB9LAorCisgIC8qIEJpbmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KKyAgeyAiY29tcGFyZSIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3Fjb21wYXJlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2NvbXBhcmUgfSwKKyAgeyAiY29tcGFyZV9zaWduYWwiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xY29tcGFyZV9zaWduYWwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfY29tcGFyZV9zaWduYWwgfSwKKyAgeyAibWF4IiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcW1heCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19tYXggfSwKKyAgeyAibWF4X21hZyIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FtYXhfbWFnLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX21heF9tYWcgfSwKKyAgeyAibWluIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcW1pbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19taW4gfSwKKyAgeyAibWluX21hZyIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FtaW5fbWFnLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX21pbl9tYWcgfSwKKyAgeyAibmV4dF90b3dhcmQiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbmV4dF90b3dhcmQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbmV4dF90b3dhcmQgfSwKKyAgeyAicXVhbnRpemUiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xcXVhbnRpemUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfcXVhbnRpemUgfSwKKyAgeyAicmVtYWluZGVyX25lYXIiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xcmVtX25lYXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfcmVtYWluZGVyX25lYXIgfSwKKworICAvKiBUZXJuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworICB7ICJmbWEiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xZm1hLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2ZtYSB9LAorCisgIC8qIEJvb2xlYW4gZnVuY3Rpb25zLCBubyBjb250ZXh0IGFyZyAqLworICB7ICJpc19jYW5vbmljYWwiLCBkZWNfbXBkX2lzY2Fub25pY2FsLCBNRVRIX05PQVJHUywgZG9jX2lzX2Nhbm9uaWNhbCB9LAorICB7ICJpc19maW5pdGUiLCBkZWNfbXBkX2lzZmluaXRlLCBNRVRIX05PQVJHUywgZG9jX2lzX2Zpbml0ZSB9LAorICB7ICJpc19pbmZpbml0ZSIsIGRlY19tcGRfaXNpbmZpbml0ZSwgTUVUSF9OT0FSR1MsIGRvY19pc19pbmZpbml0ZSB9LAorICB7ICJpc19uYW4iLCBkZWNfbXBkX2lzbmFuLCBNRVRIX05PQVJHUywgZG9jX2lzX25hbiB9LAorICB7ICJpc19xbmFuIiwgZGVjX21wZF9pc3FuYW4sIE1FVEhfTk9BUkdTLCBkb2NfaXNfcW5hbiB9LAorICB7ICJpc19zbmFuIiwgZGVjX21wZF9pc3NuYW4sIE1FVEhfTk9BUkdTLCBkb2NfaXNfc25hbiB9LAorICB7ICJpc19zaWduZWQiLCBkZWNfbXBkX2lzc2lnbmVkLCBNRVRIX05PQVJHUywgZG9jX2lzX3NpZ25lZCB9LAorICB7ICJpc196ZXJvIiwgZGVjX21wZF9pc3plcm8sIE1FVEhfTk9BUkdTLCBkb2NfaXNfemVybyB9LAorCisgIC8qIEJvb2xlYW4gZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworICB7ICJpc19ub3JtYWwiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9pc25vcm1hbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19pc19ub3JtYWwgfSwKKyAgeyAiaXNfc3Vibm9ybWFsIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfaXNzdWJub3JtYWwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfaXNfc3Vibm9ybWFsIH0sCisKKyAgLyogVW5hcnkgZnVuY3Rpb25zLCBubyBjb250ZXh0IGFyZyAqLworICB7ICJhZGp1c3RlZCIsIGRlY19tcGRfYWRqZXhwLCBNRVRIX05PQVJHUywgZG9jX2FkanVzdGVkIH0sCisgIHsgImNhbm9uaWNhbCIsIGRlY19jYW5vbmljYWwsIE1FVEhfTk9BUkdTLCBkb2NfY2Fub25pY2FsIH0sCisgIHsgImNvbmp1Z2F0ZSIsIGRlY19jb25qdWdhdGUsIE1FVEhfTk9BUkdTLCBkb2NfY29uanVnYXRlIH0sCisgIHsgInJhZGl4IiwgZGVjX21wZF9yYWRpeCwgTUVUSF9OT0FSR1MsIGRvY19yYWRpeCB9LAorCisgIC8qIFVuYXJ5IGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgZm9yIGNvbnZlcnNpb24gZXJyb3JzICovCisgIHsgImNvcHlfYWJzIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWNvcHlfYWJzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2NvcHlfYWJzIH0sCisgIHsgImNvcHlfbmVnYXRlIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWNvcHlfbmVnYXRlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2NvcHlfbmVnYXRlIH0sCisKKyAgLyogVW5hcnkgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworICB7ICJsb2diIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWxvZ2IsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG9nYiB9LAorICB7ICJsb2dpY2FsX2ludmVydCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FpbnZlcnQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG9naWNhbF9pbnZlcnQgfSwKKyAgeyAibnVtYmVyX2NsYXNzIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfY2xhc3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbnVtYmVyX2NsYXNzIH0sCisgIHsgInRvX2VuZ19zdHJpbmciLCAoUHlDRnVuY3Rpb24pZGVjX21wZF90b19lbmcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfdG9fZW5nX3N0cmluZyB9LAorCisgIC8qIEJpbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnIGZvciBjb252ZXJzaW9uIGVycm9ycyAqLworICB7ICJjb21wYXJlX3RvdGFsIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfY29tcGFyZV90b3RhbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19jb21wYXJlX3RvdGFsIH0sCisgIHsgImNvbXBhcmVfdG90YWxfbWFnIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfY29tcGFyZV90b3RhbF9tYWcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfY29tcGFyZV90b3RhbF9tYWcgfSwKKyAgeyAiY29weV9zaWduIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWNvcHlfc2lnbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19jb3B5X3NpZ24gfSwKKyAgeyAic2FtZV9xdWFudHVtIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfc2FtZV9xdWFudHVtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3NhbWVfcXVhbnR1bSB9LAorCisgIC8qIEJpbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCisgIHsgImxvZ2ljYWxfYW5kIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWFuZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19sb2dpY2FsX2FuZCB9LAorICB7ICJsb2dpY2FsX29yIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcW9yLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2xvZ2ljYWxfb3IgfSwKKyAgeyAibG9naWNhbF94b3IiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xeG9yLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2xvZ2ljYWxfeG9yIH0sCisgIHsgInJvdGF0ZSIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3Fyb3RhdGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2Nfcm90YXRlIH0sCisgIHsgInNjYWxlYiIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FzY2FsZWIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2Nfc2NhbGViIH0sCisgIHsgInNoaWZ0IiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXNoaWZ0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3NoaWZ0IH0sCisKKyAgLyogTWlzY2VsbGFuZW91cyAqLworICB7ICJmcm9tX2Zsb2F0IiwgZGVjX2Zyb21fZmxvYXQsIE1FVEhfT3xNRVRIX0NMQVNTLCBkb2NfZnJvbV9mbG9hdCB9LAorICB7ICJhc190dXBsZSIsIFB5RGVjX0FzVHVwbGUsIE1FVEhfTk9BUkdTLCBkb2NfYXNfdHVwbGUgfSwKKworICAvKiBTcGVjaWFsIG1ldGhvZHMgKi8KKyAgeyAiX19jb3B5X18iLCBkZWNfY29weSwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgeyAiX19kZWVwY29weV9fIiwgZGVjX2NvcHksIE1FVEhfTywgTlVMTCB9LAorICB7ICJfX2Zvcm1hdF9fIiwgZGVjX2Zvcm1hdCwgTUVUSF9WQVJBUkdTLCBOVUxMIH0sCisgIHsgIl9fcmVkdWNlX18iLCBkZWNfcmVkdWNlLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJfX3JvdW5kX18iLCBQeURlY19Sb3VuZCwgTUVUSF9WQVJBUkdTLCBOVUxMIH0sCisgIHsgIl9fY2VpbF9fIiwgZGVjX2NlaWwsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgIHsgIl9fZmxvb3JfXyIsIGRlY19mbG9vciwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgeyAiX190cnVuY19fIiwgZGVjX3RydW5jLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJfX2NvbXBsZXhfXyIsIGRlY19jb21wbGV4LCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJfX3NpemVvZl9fIiwgZGVjX3NpemVvZiwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKworICB7IE5VTEwsIE5VTEwsIDEgfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeURlY19UeXBlID0KK3sKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiZGVjaW1hbC5EZWNpbWFsIiwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeURlY09iamVjdCksICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcikgZGVjX2RlYWxsb2MsICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIChnZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgKHNldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpIGRlY19yZXByLCAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgICZkZWNfbnVtYmVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIChoYXNoZnVuYykgZGVjX2hhc2gsICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAocmVwcmZ1bmMpIGRlY19zdHIsICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgKGdldGF0dHJvZnVuYykgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsIC8qIHRwX2dldGF0dHJvICovCisgICAgKHNldGF0dHJvZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgKFB5QnVmZmVyUHJvY3MgKikgMCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIChQeV9UUEZMQUdTX0RFRkFVTFR8CisgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgZG9jX2RlY2ltYWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIGRlY19yaWNoY29tcGFyZSwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgZGVjX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGRlY19nZXRzZXRzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgZGVjX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0IE9iamVjdCwgUGFydCAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgIE1hY3JvcyBmb3IgY29udmVydGluZyBtcGRlY2ltYWwgZnVuY3Rpb25zIHRvIENvbnRleHQgbWV0aG9kcyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEJvb2xlYW4gY29udGV4dCBtZXRob2QuICovCisjZGVmaW5lIERlY0N0eF9Cb29sRnVuYyhNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY3R4XyMjTVBERlVOQyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmYSwgdiwgY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXQgPSBNUERGVU5DKE1QRChhKSwgQ1RYKGNvbnRleHQpKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOyBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogQm9vbGVhbiBjb250ZXh0IG1ldGhvZC4gTVBERlVOQyBkb2VzIE5PVCB1c2UgYSBjb250ZXh0LiAqLworI2RlZmluZSBEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY3R4XyMjTVBERlVOQyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0ID0gTVBERlVOQyhNUEQoYSkpID8gaW5jcl90cnVlKCkgOiBpbmNyX2ZhbHNlKCk7IFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIFVuYXJ5IGNvbnRleHQgbWV0aG9kLiAqLworI2RlZmluZSBEZWNDdHhfVW5hcnlGdW5jKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2N0eF8jI01QREZVTkMoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KSAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoYSksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7IFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogQmluYXJ5IGNvbnRleHQgbWV0aG9kLiAqLworI2RlZmluZSBEZWNDdHhfQmluYXJ5RnVuYyhNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2N0eF8jI01QREZVTkMoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICphcmdzKSAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnYsICp3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqYSwgKmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmdiwgJncpKSB7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHYsIHcsIGNvbnRleHQpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOyBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKgorICogQmluYXJ5IGNvbnRleHQgbWV0aG9kLiBUaGUgY29udGV4dCBpcyBvbmx5IHVzZWQgZm9yIGNvbnZlcnNpb24uCisgKiBUaGUgYWN0dWFsIE1QREZVTkMgZG9lcyBOT1QgdGFrZSBhIGNvbnRleHQgYXJnLgorICovCisjZGVmaW5lIERlY0N0eF9CaW5hcnlGdW5jX05PX0NUWChNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY3R4XyMjTVBERlVOQyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmFyZ3MpIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnYsICp3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphLCAqYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmdiwgJncpKSB7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgdiwgdywgY29udGV4dCk7ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpKTsgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIFRlcm5hcnkgY29udGV4dCBtZXRob2QuICovCisjZGVmaW5lIERlY0N0eF9UZXJuYXJ5RnVuYyhNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY3R4XyMjTVBERlVOQyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmFyZ3MpICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnYsICp3LCAqeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphLCAqYiwgKmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PTyIsICZ2LCAmdywgJngpKSB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9URVJOT1BfUkFJU0UoJmEsICZiLCAmYywgdiwgdywgeCwgY29udGV4dCk7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksIE1QRChjKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisKKy8qIFVuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zICovCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xYWJzKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcWV4cCkKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FsbikKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3Fsb2cxMCkKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FtaW51cykKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FuZXh0X21pbnVzKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcW5leHRfcGx1cykKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FwbHVzKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcXJlZHVjZSkKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3Fyb3VuZF90b19pbnQpCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xcm91bmRfdG9faW50eCkKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FzcXJ0KQorCisvKiBCaW5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMgKi8KK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xYWRkKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3Fjb21wYXJlKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3Fjb21wYXJlX3NpZ25hbCkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xZGl2KQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FkaXZpbnQpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcW1heCkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xbWF4X21hZykKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xbWluKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FtaW5fbWFnKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FtdWwpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcW5leHRfdG93YXJkKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FxdWFudGl6ZSkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xcmVtKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FyZW1fbmVhcikKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xc3ViKQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9xZGl2bW9kKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqdiwgKnc7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIFB5T2JqZWN0ICpxLCAqcjsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIFB5T2JqZWN0ICpyZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJnYsICZ3KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgdiwgdywgY29udGV4dCk7CisKKyAgICBxID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHEgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHIgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAociA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICBQeV9ERUNSRUYocSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xZGl2bW9kKE1QRChxKSwgTVBEKHIpLCBNUEQoYSksIE1QRChiKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHIpOworICAgICAgICBQeV9ERUNSRUYocSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldCA9IFB5X0J1aWxkVmFsdWUoIihPTykiLCBxLCByKTsKKyAgICBQeV9ERUNSRUYocik7CisgICAgUHlfREVDUkVGKHEpOworICAgIHJldHVybiByZXQ7Cit9CisKKy8qIEJpbmFyeSBvciB0ZXJuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zICovCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9xcG93KFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJhIiwgImIiLCAibW9kdWxvIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmJhc2UsICpleHAsICptb2QgPSBOVUxMOworICAgIFB5T2JqZWN0ICphLCAqYiwgKmMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPT3xPIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZiYXNlLCAmZXhwLCAmbW9kKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgYmFzZSwgZXhwLCBjb250ZXh0KTsKKworICAgIGlmIChtb2QgIT0gTlVMTCkgeworICAgICAgICBpZiAoIWNvbnZlcnRfb3AoVFlQRV9FUlIsICZjLCBtb2QsIGNvbnRleHQpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgUHlfWERFQ1JFRihjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGMgPT0gTlVMTCkgeworICAgICAgICBtcGRfcXBvdyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksCisgICAgICAgICAgICAgICAgIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfcXBvd21vZChNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksIE1QRChjKSwKKyAgICAgICAgICAgICAgICAgICAgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICAgICAgUHlfREVDUkVGKGMpOworICAgIH0KKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFRlcm5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMgKi8KK0RlY0N0eF9UZXJuYXJ5RnVuYyhtcGRfcWZtYSkKKworLyogTm8gYXJndW1lbnQgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfbXBkX3JhZGl4KFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgcmV0dXJuIGRlY19tcGRfcmFkaXgoY29udGV4dCwgZHVtbXkpOworfQorCisvKiBCb29sZWFuIGZ1bmN0aW9uczogc2luZ2xlIGRlY2ltYWwgYXJndW1lbnQgKi8KK0RlY0N0eF9Cb29sRnVuYyhtcGRfaXNub3JtYWwpCitEZWNDdHhfQm9vbEZ1bmMobXBkX2lzc3Vibm9ybWFsKQorRGVjQ3R4X0Jvb2xGdW5jX05PX0NUWChtcGRfaXNmaW5pdGUpCitEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKG1wZF9pc2luZmluaXRlKQorRGVjQ3R4X0Jvb2xGdW5jX05PX0NUWChtcGRfaXNuYW4pCitEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKG1wZF9pc3FuYW4pCitEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKG1wZF9pc3NpZ25lZCkKK0RlY0N0eF9Cb29sRnVuY19OT19DVFgobXBkX2lzc25hbikKK0RlY0N0eF9Cb29sRnVuY19OT19DVFgobXBkX2lzemVybykKKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9pc2Nhbm9uaWNhbChQeU9iamVjdCAqY29udGV4dCBVTlVTRUQsIFB5T2JqZWN0ICp2KQoreworICAgIGlmICghUHlEZWNfQ2hlY2sodikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgRGVjaW1hbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbXBkX2lzY2Fub25pY2FsKE1QRCh2KSkgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsKK30KKworLyogRnVuY3Rpb25zIHdpdGggYSBzaW5nbGUgZGVjaW1hbCBhcmd1bWVudCAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjQ29udGV4dF9BcHBseShQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKmE7CisKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IGRlY19hcHBseShhLCBjb250ZXh0KTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9jYW5vbmljYWwoUHlPYmplY3QgKmNvbnRleHQgVU5VU0VELCBQeU9iamVjdCAqdikKK3sKKyAgICBpZiAoIVB5RGVjX0NoZWNrKHYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIERlY2ltYWwiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKHYpOworICAgIHJldHVybiB2OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9xY29weV9hYnMoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQsICphOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xY29weV9hYnMoTVBEKHJlc3VsdCksIE1QRChhKSwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfY29weV9kZWNpbWFsKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmcmVzdWx0LCB2LCBjb250ZXh0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9xY29weV9uZWdhdGUoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQsICphOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xY29weV9uZWdhdGUoTVBEKHJlc3VsdCksIE1QRChhKSwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3Fsb2diKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcWludmVydCkKKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfY2xhc3MoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICphOworICAgIGNvbnN0IGNoYXIgKmNwOworCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmYSwgdiwgY29udGV4dCk7CisKKyAgICBjcCA9IG1wZF9jbGFzcyhNUEQoYSksIENUWChjb250ZXh0KSk7CisgICAgUHlfREVDUkVGKGEpOworCisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNwKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfdG9fc2NpKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICphOworICAgIG1wZF9zc2l6ZV90IHNpemU7CisgICAgY2hhciAqczsKKworICAgIENPTlZFUlRfT1BfUkFJU0UoJmEsIHYsIGNvbnRleHQpOworCisgICAgc2l6ZSA9IG1wZF90b19zY2lfc2l6ZSgmcywgTVBEKGEpLCBDdHhDYXBzKGNvbnRleHQpKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IHVuaWNvZGVfZnJvbWFzY2lpKHMsIHNpemUpOworICAgIG1wZF9mcmVlKHMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfdG9fZW5nKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICphOworICAgIG1wZF9zc2l6ZV90IHNpemU7CisgICAgY2hhciAqczsKKworICAgIENPTlZFUlRfT1BfUkFJU0UoJmEsIHYsIGNvbnRleHQpOworCisgICAgc2l6ZSA9IG1wZF90b19lbmdfc2l6ZSgmcywgTVBEKGEpLCBDdHhDYXBzKGNvbnRleHQpKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IHVuaWNvZGVfZnJvbWFzY2lpKHMsIHNpemUpOworICAgIG1wZF9mcmVlKHMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogRnVuY3Rpb25zIHdpdGggdHdvIGRlY2ltYWwgYXJndW1lbnRzICovCitEZWNDdHhfQmluYXJ5RnVuY19OT19DVFgobXBkX2NvbXBhcmVfdG90YWwpCitEZWNDdHhfQmluYXJ5RnVuY19OT19DVFgobXBkX2NvbXBhcmVfdG90YWxfbWFnKQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9xY29weV9zaWduKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqdiwgKnc7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmdiwgJncpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCB2LCB3LCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fjb3B5X3NpZ24oTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCAmc3RhdHVzKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xYW5kKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FvcikKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xeG9yKQorCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcXJvdGF0ZSkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xc2NhbGViKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FzaGlmdCkKKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfc2FtZV9xdWFudHVtKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqdiwgKnc7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJnYsICZ3KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgdiwgdywgY29udGV4dCk7CisKKyAgICByZXN1bHQgPSBtcGRfc2FtZV9xdWFudHVtKE1QRChhKSwgTVBEKGIpKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBjb250ZXh0X21ldGhvZHMgW10gPQoreworICAvKiBVbmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucyAqLworICB7ICJhYnMiLCBjdHhfbXBkX3FhYnMsIE1FVEhfTywgZG9jX2N0eF9hYnMgfSwKKyAgeyAiZXhwIiwgY3R4X21wZF9xZXhwLCBNRVRIX08sIGRvY19jdHhfZXhwIH0sCisgIHsgImxuIiwgY3R4X21wZF9xbG4sIE1FVEhfTywgZG9jX2N0eF9sbiB9LAorICB7ICJsb2cxMCIsIGN0eF9tcGRfcWxvZzEwLCBNRVRIX08sIGRvY19jdHhfbG9nMTAgfSwKKyAgeyAibWludXMiLCBjdHhfbXBkX3FtaW51cywgTUVUSF9PLCBkb2NfY3R4X21pbnVzIH0sCisgIHsgIm5leHRfbWludXMiLCBjdHhfbXBkX3FuZXh0X21pbnVzLCBNRVRIX08sIGRvY19jdHhfbmV4dF9taW51cyB9LAorICB7ICJuZXh0X3BsdXMiLCBjdHhfbXBkX3FuZXh0X3BsdXMsIE1FVEhfTywgZG9jX2N0eF9uZXh0X3BsdXMgfSwKKyAgeyAibm9ybWFsaXplIiwgY3R4X21wZF9xcmVkdWNlLCBNRVRIX08sIGRvY19jdHhfbm9ybWFsaXplIH0sCisgIHsgInBsdXMiLCBjdHhfbXBkX3FwbHVzLCBNRVRIX08sIGRvY19jdHhfcGx1cyB9LAorICB7ICJ0b19pbnRlZ3JhbCIsIGN0eF9tcGRfcXJvdW5kX3RvX2ludCwgTUVUSF9PLCBkb2NfY3R4X3RvX2ludGVncmFsIH0sCisgIHsgInRvX2ludGVncmFsX2V4YWN0IiwgY3R4X21wZF9xcm91bmRfdG9faW50eCwgTUVUSF9PLCBkb2NfY3R4X3RvX2ludGVncmFsX2V4YWN0IH0sCisgIHsgInRvX2ludGVncmFsX3ZhbHVlIiwgY3R4X21wZF9xcm91bmRfdG9faW50LCBNRVRIX08sIGRvY19jdHhfdG9faW50ZWdyYWxfdmFsdWUgfSwKKyAgeyAic3FydCIsIGN0eF9tcGRfcXNxcnQsIE1FVEhfTywgZG9jX2N0eF9zcXJ0IH0sCisKKyAgLyogQmluYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zICovCisgIHsgImFkZCIsIGN0eF9tcGRfcWFkZCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2FkZCB9LAorICB7ICJjb21wYXJlIiwgY3R4X21wZF9xY29tcGFyZSwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2NvbXBhcmUgfSwKKyAgeyAiY29tcGFyZV9zaWduYWwiLCBjdHhfbXBkX3Fjb21wYXJlX3NpZ25hbCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2NvbXBhcmVfc2lnbmFsIH0sCisgIHsgImRpdmlkZSIsIGN0eF9tcGRfcWRpdiwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2RpdmlkZSB9LAorICB7ICJkaXZpZGVfaW50IiwgY3R4X21wZF9xZGl2aW50LCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfZGl2aWRlX2ludCB9LAorICB7ICJkaXZtb2QiLCBjdHhfbXBkX3FkaXZtb2QsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9kaXZtb2QgfSwKKyAgeyAibWF4IiwgY3R4X21wZF9xbWF4LCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbWF4IH0sCisgIHsgIm1heF9tYWciLCBjdHhfbXBkX3FtYXhfbWFnLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbWF4X21hZyB9LAorICB7ICJtaW4iLCBjdHhfbXBkX3FtaW4sIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9taW4gfSwKKyAgeyAibWluX21hZyIsIGN0eF9tcGRfcW1pbl9tYWcsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9taW5fbWFnIH0sCisgIHsgIm11bHRpcGx5IiwgY3R4X21wZF9xbXVsLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbXVsdGlwbHkgfSwKKyAgeyAibmV4dF90b3dhcmQiLCBjdHhfbXBkX3FuZXh0X3Rvd2FyZCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X25leHRfdG93YXJkIH0sCisgIHsgInF1YW50aXplIiwgY3R4X21wZF9xcXVhbnRpemUsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9xdWFudGl6ZSB9LAorICB7ICJyZW1haW5kZXIiLCBjdHhfbXBkX3FyZW0sIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9yZW1haW5kZXIgfSwKKyAgeyAicmVtYWluZGVyX25lYXIiLCBjdHhfbXBkX3FyZW1fbmVhciwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3JlbWFpbmRlcl9uZWFyIH0sCisgIHsgInN1YnRyYWN0IiwgY3R4X21wZF9xc3ViLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfc3VidHJhY3QgfSwKKworICAvKiBCaW5hcnkgb3IgdGVybmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucyAqLworICB7ICJwb3dlciIsIChQeUNGdW5jdGlvbiljdHhfbXBkX3Fwb3csIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfY3R4X3Bvd2VyIH0sCisKKyAgLyogVGVybmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucyAqLworICB7ICJmbWEiLCBjdHhfbXBkX3FmbWEsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9mbWEgfSwKKworICAvKiBObyBhcmd1bWVudCAqLworICB7ICJFdGlueSIsIGNvbnRleHRfZ2V0ZXRpbnksIE1FVEhfTk9BUkdTLCBkb2NfY3R4X0V0aW55IH0sCisgIHsgIkV0b3AiLCBjb250ZXh0X2dldGV0b3AsIE1FVEhfTk9BUkdTLCBkb2NfY3R4X0V0b3AgfSwKKyAgeyAicmFkaXgiLCBjdHhfbXBkX3JhZGl4LCBNRVRIX05PQVJHUywgZG9jX2N0eF9yYWRpeCB9LAorCisgIC8qIEJvb2xlYW4gZnVuY3Rpb25zICovCisgIHsgImlzX2Nhbm9uaWNhbCIsIGN0eF9pc2Nhbm9uaWNhbCwgTUVUSF9PLCBkb2NfY3R4X2lzX2Nhbm9uaWNhbCB9LAorICB7ICJpc19maW5pdGUiLCBjdHhfbXBkX2lzZmluaXRlLCBNRVRIX08sIGRvY19jdHhfaXNfZmluaXRlIH0sCisgIHsgImlzX2luZmluaXRlIiwgY3R4X21wZF9pc2luZmluaXRlLCBNRVRIX08sIGRvY19jdHhfaXNfaW5maW5pdGUgfSwKKyAgeyAiaXNfbmFuIiwgY3R4X21wZF9pc25hbiwgTUVUSF9PLCBkb2NfY3R4X2lzX25hbiB9LAorICB7ICJpc19ub3JtYWwiLCBjdHhfbXBkX2lzbm9ybWFsLCBNRVRIX08sIGRvY19jdHhfaXNfbm9ybWFsIH0sCisgIHsgImlzX3FuYW4iLCBjdHhfbXBkX2lzcW5hbiwgTUVUSF9PLCBkb2NfY3R4X2lzX3FuYW4gfSwKKyAgeyAiaXNfc2lnbmVkIiwgY3R4X21wZF9pc3NpZ25lZCwgTUVUSF9PLCBkb2NfY3R4X2lzX3NpZ25lZCB9LAorICB7ICJpc19zbmFuIiwgY3R4X21wZF9pc3NuYW4sIE1FVEhfTywgZG9jX2N0eF9pc19zbmFuIH0sCisgIHsgImlzX3N1Ym5vcm1hbCIsIGN0eF9tcGRfaXNzdWJub3JtYWwsIE1FVEhfTywgZG9jX2N0eF9pc19zdWJub3JtYWwgfSwKKyAgeyAiaXNfemVybyIsIGN0eF9tcGRfaXN6ZXJvLCBNRVRIX08sIGRvY19jdHhfaXNfemVybyB9LAorCisgIC8qIEZ1bmN0aW9ucyB3aXRoIGEgc2luZ2xlIGRlY2ltYWwgYXJndW1lbnQgKi8KKyAgeyAiX2FwcGx5IiwgUHlEZWNDb250ZXh0X0FwcGx5LCBNRVRIX08sIE5VTEwgfSwgLyogYWxpYXMgZm9yIGFwcGx5ICovCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorICB7ICJhcHBseSIsIFB5RGVjQ29udGV4dF9BcHBseSwgTUVUSF9PLCBkb2NfY3R4X2FwcGx5IH0sCisjZW5kaWYKKyAgeyAiY2Fub25pY2FsIiwgY3R4X2Nhbm9uaWNhbCwgTUVUSF9PLCBkb2NfY3R4X2Nhbm9uaWNhbCB9LAorICB7ICJjb3B5X2FicyIsIGN0eF9tcGRfcWNvcHlfYWJzLCBNRVRIX08sIGRvY19jdHhfY29weV9hYnMgfSwKKyAgeyAiY29weV9kZWNpbWFsIiwgY3R4X2NvcHlfZGVjaW1hbCwgTUVUSF9PLCBkb2NfY3R4X2NvcHlfZGVjaW1hbCB9LAorICB7ICJjb3B5X25lZ2F0ZSIsIGN0eF9tcGRfcWNvcHlfbmVnYXRlLCBNRVRIX08sIGRvY19jdHhfY29weV9uZWdhdGUgfSwKKyAgeyAibG9nYiIsIGN0eF9tcGRfcWxvZ2IsIE1FVEhfTywgZG9jX2N0eF9sb2diIH0sCisgIHsgImxvZ2ljYWxfaW52ZXJ0IiwgY3R4X21wZF9xaW52ZXJ0LCBNRVRIX08sIGRvY19jdHhfbG9naWNhbF9pbnZlcnQgfSwKKyAgeyAibnVtYmVyX2NsYXNzIiwgY3R4X21wZF9jbGFzcywgTUVUSF9PLCBkb2NfY3R4X251bWJlcl9jbGFzcyB9LAorICB7ICJ0b19zY2lfc3RyaW5nIiwgY3R4X21wZF90b19zY2ksIE1FVEhfTywgZG9jX2N0eF90b19zY2lfc3RyaW5nIH0sCisgIHsgInRvX2VuZ19zdHJpbmciLCBjdHhfbXBkX3RvX2VuZywgTUVUSF9PLCBkb2NfY3R4X3RvX2VuZ19zdHJpbmcgfSwKKworICAvKiBGdW5jdGlvbnMgd2l0aCB0d28gZGVjaW1hbCBhcmd1bWVudHMgKi8KKyAgeyAiY29tcGFyZV90b3RhbCIsIGN0eF9tcGRfY29tcGFyZV90b3RhbCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2NvbXBhcmVfdG90YWwgfSwKKyAgeyAiY29tcGFyZV90b3RhbF9tYWciLCBjdHhfbXBkX2NvbXBhcmVfdG90YWxfbWFnLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfY29tcGFyZV90b3RhbF9tYWcgfSwKKyAgeyAiY29weV9zaWduIiwgY3R4X21wZF9xY29weV9zaWduLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfY29weV9zaWduIH0sCisgIHsgImxvZ2ljYWxfYW5kIiwgY3R4X21wZF9xYW5kLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbG9naWNhbF9hbmQgfSwKKyAgeyAibG9naWNhbF9vciIsIGN0eF9tcGRfcW9yLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbG9naWNhbF9vciB9LAorICB7ICJsb2dpY2FsX3hvciIsIGN0eF9tcGRfcXhvciwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2xvZ2ljYWxfeG9yIH0sCisgIHsgInJvdGF0ZSIsIGN0eF9tcGRfcXJvdGF0ZSwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3JvdGF0ZSB9LAorICB7ICJzYW1lX3F1YW50dW0iLCBjdHhfbXBkX3NhbWVfcXVhbnR1bSwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3NhbWVfcXVhbnR1bSB9LAorICB7ICJzY2FsZWIiLCBjdHhfbXBkX3FzY2FsZWIsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9zY2FsZWIgfSwKKyAgeyAic2hpZnQiLCBjdHhfbXBkX3FzaGlmdCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3NoaWZ0IH0sCisKKyAgLyogU2V0IGNvbnRleHQgdmFsdWVzICovCisgIHsgImNsZWFyX2ZsYWdzIiwgY29udGV4dF9jbGVhcl9mbGFncywgTUVUSF9OT0FSR1MsIGRvY19jdHhfY2xlYXJfZmxhZ3MgfSwKKyAgeyAiY2xlYXJfdHJhcHMiLCBjb250ZXh0X2NsZWFyX3RyYXBzLCBNRVRIX05PQVJHUywgZG9jX2N0eF9jbGVhcl90cmFwcyB9LAorCisjaWZkZWYgQ09ORklHXzMyCisgIC8qIFVuc2FmZSBzZXQgZnVuY3Rpb25zIHdpdGggcmVsYXhlZCByYW5nZSBjaGVja3MgKi8KKyAgeyAiX3Vuc2FmZV9zZXRwcmVjIiwgY29udGV4dF91bnNhZmVfc2V0cHJlYywgTUVUSF9PLCBOVUxMIH0sCisgIHsgIl91bnNhZmVfc2V0ZW1pbiIsIGNvbnRleHRfdW5zYWZlX3NldGVtaW4sIE1FVEhfTywgTlVMTCB9LAorICB7ICJfdW5zYWZlX3NldGVtYXgiLCBjb250ZXh0X3Vuc2FmZV9zZXRlbWF4LCBNRVRIX08sIE5VTEwgfSwKKyNlbmRpZgorCisgIC8qIE1pc2NlbGxhbmVvdXMgKi8KKyAgeyAiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pY29udGV4dF9jb3B5LCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJfX3JlZHVjZV9fIiwgY29udGV4dF9yZWR1Y2UsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgIHsgImNvcHkiLCAoUHlDRnVuY3Rpb24pY29udGV4dF9jb3B5LCBNRVRIX05PQVJHUywgZG9jX2N0eF9jb3B5IH0sCisgIHsgImNyZWF0ZV9kZWNpbWFsIiwgY3R4X2NyZWF0ZV9kZWNpbWFsLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfY3JlYXRlX2RlY2ltYWwgfSwKKyAgeyAiY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCIsIGN0eF9mcm9tX2Zsb2F0LCBNRVRIX08sIGRvY19jdHhfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCB9LAorCisgIHsgTlVMTCwgTlVMTCwgMSB9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjQ29udGV4dF9UeXBlID0KK3sKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiZGVjaW1hbC5Db250ZXh0IiwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeURlY0NvbnRleHRPYmplY3QpLCAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcikgY29udGV4dF9kZWFsbG9jLCAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIChnZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgKHNldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpIGNvbnRleHRfcmVwciwgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIChoYXNoZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAocmVwcmZ1bmMpIGNvbnRleHRfcmVwciwgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgKGdldGF0dHJvZnVuYykgY29udGV4dF9nZXRhdHRyLCAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgKHNldGF0dHJvZnVuYykgY29udGV4dF9zZXRhdHRyLCAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgKFB5QnVmZmVyUHJvY3MgKikgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVHxQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAvKiB0cF9mbGFncyAqLworICAgIGRvY19jb250ZXh0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGNvbnRleHRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBjb250ZXh0X2dldHNldHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBjb250ZXh0X2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGNvbnRleHRfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworCitzdGF0aWMgUHlNZXRob2REZWYgX2RlY2ltYWxfbWV0aG9kcyBbXSA9Cit7CisgIHsgImdldGNvbnRleHQiLCAoUHlDRnVuY3Rpb24pUHlEZWNfR2V0Q3VycmVudENvbnRleHQsIE1FVEhfTk9BUkdTLCBkb2NfZ2V0Y29udGV4dH0sCisgIHsgInNldGNvbnRleHQiLCAoUHlDRnVuY3Rpb24pUHlEZWNfU2V0Q3VycmVudENvbnRleHQsIE1FVEhfTywgZG9jX3NldGNvbnRleHR9LAorICB7ICJsb2NhbGNvbnRleHQiLCAoUHlDRnVuY3Rpb24pY3R4bWFuYWdlcl9uZXcsIE1FVEhfVkFSQVJHUywgZG9jX2xvY2FsY29udGV4dH0sCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorICB7ICJJRUVFQ29udGV4dCIsIChQeUNGdW5jdGlvbilpZWVlX2NvbnRleHQsIE1FVEhfTywgZG9jX2llZWVfY29udGV4dH0sCisjZW5kaWYKKyAgeyBOVUxMLCBOVUxMLCAxLCBOVUxMIH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2RlY2ltYWxfbW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiZGVjaW1hbCIsCisgICAgZG9jX19kZWNpbWFsLAorICAgIC0xLAorICAgIF9kZWNpbWFsX21ldGhvZHMsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworc3RydWN0IHNzaXplX2NvbnN0bWFwIHsgY29uc3QgY2hhciAqbmFtZTsgbXBkX3NzaXplX3QgdmFsOyB9Oworc3RhdGljIHN0cnVjdCBzc2l6ZV9jb25zdG1hcCBzc2l6ZV9jb25zdGFudHMgW10gPSB7CisgICAgeyJNQVhfUFJFQyIsIE1QRF9NQVhfUFJFQ30sCisgICAgeyJNQVhfRU1BWCIsIE1QRF9NQVhfRU1BWH0sCisgICAgeyJNSU5fRU1JTiIsICBNUERfTUlOX0VNSU59LAorICAgIHsiTUlOX0VUSU5ZIiwgTVBEX01JTl9FVElOWX0sCisgICAge05VTEx9Cit9OworCitzdHJ1Y3QgaW50X2NvbnN0bWFwIHsgY29uc3QgY2hhciAqbmFtZTsgaW50IHZhbDsgfTsKK3N0YXRpYyBzdHJ1Y3QgaW50X2NvbnN0bWFwIGludF9jb25zdGFudHMgW10gPSB7CisgICAgLyogaW50IGNvbnN0YW50cyAqLworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgICB7IkRFQ0lNQUwzMiIsIE1QRF9ERUNJTUFMMzJ9LAorICAgIHsiREVDSU1BTDY0IiwgTVBEX0RFQ0lNQUw2NH0sCisgICAgeyJERUNJTUFMMTI4IiwgTVBEX0RFQ0lNQUwxMjh9LAorICAgIHsiSUVFRV9DT05URVhUX01BWF9CSVRTIiwgTVBEX0lFRUVfQ09OVEVYVF9NQVhfQklUU30sCisjZW5kaWYKKyAgICB7IlJPVU5EX0NFSUxJTkciLCBNUERfUk9VTkRfQ0VJTElOR30sCisgICAgeyJST1VORF9GTE9PUiIsIE1QRF9ST1VORF9GTE9PUn0sCisgICAgeyJST1VORF9VUCIsIE1QRF9ST1VORF9VUH0sCisgICAgeyJST1VORF9ET1dOIiwgTVBEX1JPVU5EX0RPV059LAorICAgIHsiUk9VTkRfSEFMRl9VUCIsIE1QRF9ST1VORF9IQUxGX1VQfSwKKyAgICB7IlJPVU5EX0hBTEZfRE9XTiIsIE1QRF9ST1VORF9IQUxGX0RPV059LAorICAgIHsiUk9VTkRfSEFMRl9FVkVOIiwgTVBEX1JPVU5EX0hBTEZfRVZFTn0sCisgICAgeyJST1VORF8wNVVQIiwgTVBEX1JPVU5EXzA1VVB9LAorI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgICB7IlJPVU5EX1RSVU5DIiwgTVBEX1JPVU5EX1RSVU5DfSwKKyAgICAvKiBpbnQgY29uZGl0aW9uIGZsYWdzICovCisgICAgeyJEZWNDbGFtcGVkIiwgTVBEX0NsYW1wZWR9LAorICAgIHsiRGVjQ29udmVyc2lvblN5bnRheCIsIE1QRF9Db252ZXJzaW9uX3N5bnRheH0sCisgICAgeyJEZWNEaXZpc2lvbkJ5WmVybyIsIE1QRF9EaXZpc2lvbl9ieV96ZXJvfSwKKyAgICB7IkRlY0RpdmlzaW9uSW1wb3NzaWJsZSIsIE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlfSwKKyAgICB7IkRlY0RpdmlzaW9uVW5kZWZpbmVkIiwgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZH0sCisgICAgeyJEZWNGcHVFcnJvciIsIE1QRF9GcHVfZXJyb3J9LAorICAgIHsiRGVjSW5leGFjdCIsIE1QRF9JbmV4YWN0fSwKKyAgICB7IkRlY0ludmFsaWRDb250ZXh0IiwgTVBEX0ludmFsaWRfY29udGV4dH0sCisgICAgeyJEZWNJbnZhbGlkT3BlcmF0aW9uIiwgTVBEX0ludmFsaWRfb3BlcmF0aW9ufSwKKyAgICB7IkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uIiwgTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb259LAorICAgIHsiRGVjTWFsbG9jRXJyb3IiLCBNUERfTWFsbG9jX2Vycm9yfSwKKyAgICB7IkRlY0Zsb2F0T3BlcmF0aW9uIiwgTVBEX0Zsb2F0X29wZXJhdGlvbn0sCisgICAgeyJEZWNPdmVyZmxvdyIsIE1QRF9PdmVyZmxvd30sCisgICAgeyJEZWNSb3VuZGVkIiwgTVBEX1JvdW5kZWR9LAorICAgIHsiRGVjU3Vibm9ybWFsIiwgTVBEX1N1Ym5vcm1hbH0sCisgICAgeyJEZWNVbmRlcmZsb3ciLCBNUERfVW5kZXJmbG93fSwKKyAgICB7IkRlY0Vycm9ycyIsIE1QRF9FcnJvcnN9LAorICAgIHsiRGVjVHJhcHMiLCBNUERfVHJhcHN9LAorI2VuZGlmCisgICAge05VTEx9Cit9OworCisKKyNkZWZpbmUgQ0hFQ0tfSU5UKGV4cHIpIFwKKyAgICBkbyB7IGlmICgoZXhwcikgPCAwKSBnb3RvIGVycm9yOyB9IHdoaWxlICgwKQorI2RlZmluZSBBU1NJR05fUFRSKHJlc3VsdCwgZXhwcikgXAorICAgIGRvIHsgcmVzdWx0ID0gKGV4cHIpOyBpZiAocmVzdWx0ID09IE5VTEwpIGdvdG8gZXJyb3I7IH0gd2hpbGUgKDApCisjZGVmaW5lIENIRUNLX1BUUihleHByKSBcCisgICAgZG8geyBpZiAoKGV4cHIpID09IE5VTEwpIGdvdG8gZXJyb3I7IH0gd2hpbGUgKDApCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX2RlY2ltYWwodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm51bWJlcnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpOdW1iZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjb2xsZWN0aW9ucyA9IE5VTEw7CisgICAgUHlPYmplY3QgKk11dGFibGVNYXBwaW5nID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2JqID0gTlVMTDsKKyAgICBEZWNDb25kTWFwICpjbTsKKyAgICBzdHJ1Y3Qgc3NpemVfY29uc3RtYXAgKnNzaXplX2NtOworICAgIHN0cnVjdCBpbnRfY29uc3RtYXAgKmludF9jbTsKKyAgICBpbnQgaTsKKworCisgICAgLyogSW5pdCBsaWJtcGRlYyAqLworICAgIG1wZF90cmFwaGFuZGxlciA9IGRlY190cmFwaGFuZGxlcjsKKyAgICBtcGRfbWFsbG9jZnVuYyA9IFB5TWVtX01hbGxvYzsKKyAgICBtcGRfcmVhbGxvY2Z1bmMgPSBQeU1lbV9SZWFsbG9jOworICAgIG1wZF9jYWxsb2NmdW5jID0gbXBkX2NhbGxvY2Z1bmNfZW07CisgICAgbXBkX2ZyZWUgPSBQeU1lbV9GcmVlOworICAgIG1wZF9zZXRtaW5hbGxvYyhfUHlfREVDX01JTkFMTE9DKTsKKworCisgICAgLyogSW5pdCB0eXBlcyAqLworICAgIFB5RGVjX1R5cGUudHBfYmFzZSA9ICZQeUJhc2VPYmplY3RfVHlwZTsKKyAgICBQeURlY0NvbnRleHRfVHlwZS50cF9iYXNlID0gJlB5QmFzZU9iamVjdF9UeXBlOworICAgIFB5RGVjQ29udGV4dE1hbmFnZXJfVHlwZS50cF9iYXNlID0gJlB5QmFzZU9iamVjdF9UeXBlOworICAgIFB5RGVjU2lnbmFsRGljdE1peGluX1R5cGUudHBfYmFzZSA9ICZQeUJhc2VPYmplY3RfVHlwZTsKKworICAgIENIRUNLX0lOVChQeVR5cGVfUmVhZHkoJlB5RGVjX1R5cGUpKTsKKyAgICBDSEVDS19JTlQoUHlUeXBlX1JlYWR5KCZQeURlY0NvbnRleHRfVHlwZSkpOworICAgIENIRUNLX0lOVChQeVR5cGVfUmVhZHkoJlB5RGVjU2lnbmFsRGljdE1peGluX1R5cGUpKTsKKyAgICBDSEVDS19JTlQoUHlUeXBlX1JlYWR5KCZQeURlY0NvbnRleHRNYW5hZ2VyX1R5cGUpKTsKKworICAgIEFTU0lHTl9QVFIob2JqLCBQeVVuaWNvZGVfRnJvbVN0cmluZygiZGVjaW1hbCIpKTsKKyAgICBDSEVDS19JTlQoUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlEZWNfVHlwZS50cF9kaWN0LCAiX19tb2R1bGVfXyIsIG9iaikpOworICAgIENIRUNLX0lOVChQeURpY3RfU2V0SXRlbVN0cmluZyhQeURlY0NvbnRleHRfVHlwZS50cF9kaWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19tb2R1bGVfXyIsIG9iaikpOworICAgIFB5X0NMRUFSKG9iaik7CisKKworICAgIC8qIE51bWVyaWMgYWJzdHJhY3QgYmFzZSBjbGFzc2VzICovCisgICAgQVNTSUdOX1BUUihudW1iZXJzLCBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIm51bWJlcnMiKSk7CisgICAgQVNTSUdOX1BUUihOdW1iZXIsIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobnVtYmVycywgIk51bWJlciIpKTsKKyAgICAvKiBSZWdpc3RlciBEZWNpbWFsIHdpdGggdGhlIE51bWJlciBhYnN0cmFjdCBiYXNlIGNsYXNzICovCisgICAgQVNTSUdOX1BUUihvYmosIFB5T2JqZWN0X0NhbGxNZXRob2QoTnVtYmVyLCAicmVnaXN0ZXIiLCAiKE8pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlEZWNfVHlwZSkpOworICAgIFB5X0NMRUFSKG9iaik7CisgICAgLyogUmF0aW9uYWwgaXMgYSBnbG9iYWwgdmFyaWFibGUgdXNlZCBmb3IgZnJhY3Rpb24gY29tcGFyaXNvbnMuICovCisgICAgQVNTSUdOX1BUUihSYXRpb25hbCwgUHlPYmplY3RfR2V0QXR0clN0cmluZyhudW1iZXJzLCAiUmF0aW9uYWwiKSk7CisgICAgLyogRG9uZSB3aXRoIG51bWJlcnMsIE51bWJlciAqLworICAgIFB5X0NMRUFSKG51bWJlcnMpOworICAgIFB5X0NMRUFSKE51bWJlcik7CisKKyAgICAvKiBEZWNpbWFsVHVwbGUgKi8KKyAgICBBU1NJR05fUFRSKGNvbGxlY3Rpb25zLCBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImNvbGxlY3Rpb25zIikpOworICAgIEFTU0lHTl9QVFIoRGVjaW1hbFR1cGxlLCBQeU9iamVjdF9DYWxsTWV0aG9kKGNvbGxlY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVkdHVwbGUiLCAiKHNzKSIsICJEZWNpbWFsVHVwbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ24gZGlnaXRzIGV4cG9uZW50IikpOworICAgIC8qIE11dGFibGVNYXBwaW5nICovCisgICAgQVNTSUdOX1BUUihNdXRhYmxlTWFwcGluZywgUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb2xsZWN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdXRhYmxlTWFwcGluZyIpKTsKKyAgICAvKiBDcmVhdGUgU2lnbmFsRGljdCB0eXBlICovCisgICAgQVNTSUdOX1BUUihQeURlY1NpZ25hbERpY3RfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAoUHlUeXBlT2JqZWN0ICopUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKAorICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVR5cGVfVHlwZSwgInMoT08pe30iLAorICAgICAgICAgICAgICAgICAgICJTaWduYWxEaWN0IiwgJlB5RGVjU2lnbmFsRGljdE1peGluX1R5cGUsCisgICAgICAgICAgICAgICAgICAgTXV0YWJsZU1hcHBpbmcpKTsKKworICAgIC8qIERvbmUgd2l0aCBjb2xsZWN0aW9ucywgTXV0YWJsZU1hcHBpbmcgKi8KKyAgICBQeV9DTEVBUihjb2xsZWN0aW9ucyk7CisgICAgUHlfQ0xFQVIoTXV0YWJsZU1hcHBpbmcpOworCisKKyAgICAvKiBDcmVhdGUgdGhlIG1vZHVsZSAqLworICAgIEFTU0lHTl9QVFIobSwgUHlNb2R1bGVfQ3JlYXRlKCZfZGVjaW1hbF9tb2R1bGUpKTsKKworCisgICAgLyogQWRkIHR5cGVzIHRvIHRoZSBtb2R1bGUgKi8KKyAgICBQeV9JTkNSRUYoJlB5RGVjX1R5cGUpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkRlY2ltYWwiLCAoUHlPYmplY3QgKikmUHlEZWNfVHlwZSkpOworICAgIFB5X0lOQ1JFRigmUHlEZWNDb250ZXh0X1R5cGUpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkNvbnRleHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlKSk7CisgICAgUHlfSU5DUkVGKERlY2ltYWxUdXBsZSk7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRGVjaW1hbFR1cGxlIiwgRGVjaW1hbFR1cGxlKSk7CisKKworICAgIC8qIENyZWF0ZSB0b3AgbGV2ZWwgZXhjZXB0aW9uICovCisgICAgQVNTSUdOX1BUUihEZWNpbWFsRXhjZXB0aW9uLCBQeUVycl9OZXdFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2ltYWwuRGVjaW1hbEV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfQXJpdGhtZXRpY0Vycm9yLCBOVUxMKSk7CisgICAgUHlfSU5DUkVGKERlY2ltYWxFeGNlcHRpb24pOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkRlY2ltYWxFeGNlcHRpb24iLCBEZWNpbWFsRXhjZXB0aW9uKSk7CisKKyAgICAvKiBDcmVhdGUgc2lnbmFsIHR1cGxlICovCisgICAgQVNTSUdOX1BUUihTaWduYWxUdXBsZSwgUHlUdXBsZV9OZXcoU0lHTkFMX01BUF9MRU4pKTsKKworICAgIC8qIEFkZCBleGNlcHRpb25zIHRoYXQgY29ycmVzcG9uZCB0byBJRUVFIHNpZ25hbHMgKi8KKyAgICBmb3IgKGkgPSBTSUdOQUxfTUFQX0xFTi0xOyBpID49IDA7IGktLSkgeworICAgICAgICBQeU9iamVjdCAqYmFzZTsKKworICAgICAgICBjbSA9IHNpZ25hbF9tYXAgKyBpOworCisgICAgICAgIHN3aXRjaCAoY20tPmZsYWcpIHsKKyAgICAgICAgY2FzZSBNUERfRmxvYXRfb3BlcmF0aW9uOgorICAgICAgICAgICAgYmFzZSA9IFB5VHVwbGVfUGFjaygyLCBEZWNpbWFsRXhjZXB0aW9uLCBQeUV4Y19UeXBlRXJyb3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVBEX0RpdmlzaW9uX2J5X3plcm86CisgICAgICAgICAgICBiYXNlID0gUHlUdXBsZV9QYWNrKDIsIERlY2ltYWxFeGNlcHRpb24sIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1QRF9PdmVyZmxvdzoKKyAgICAgICAgICAgIGJhc2UgPSBQeVR1cGxlX1BhY2soMiwgc2lnbmFsX21hcFtJTkVYQUNUXS5leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsX21hcFtST1VOREVEXS5leCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUERfVW5kZXJmbG93OgorICAgICAgICAgICAgYmFzZSA9IFB5VHVwbGVfUGFjaygzLCBzaWduYWxfbWFwW0lORVhBQ1RdLmV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfbWFwW1JPVU5ERURdLmV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfbWFwW1NVQk5PUk1BTF0uZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBiYXNlID0gUHlUdXBsZV9QYWNrKDEsIERlY2ltYWxFeGNlcHRpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYmFzZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgQVNTSUdOX1BUUihjbS0+ZXgsIFB5RXJyX05ld0V4Y2VwdGlvbigoY2hhciAqKWNtLT5mcW5hbWUsIGJhc2UsIE5VTEwpKTsKKyAgICAgICAgUHlfREVDUkVGKGJhc2UpOworCisgICAgICAgIC8qIGFkZCB0byBtb2R1bGUgKi8KKyAgICAgICAgUHlfSU5DUkVGKGNtLT5leCk7CisgICAgICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgY20tPm5hbWUsIGNtLT5leCkpOworCisgICAgICAgIC8qIGFkZCB0byBzaWduYWwgdHVwbGUgKi8KKyAgICAgICAgUHlfSU5DUkVGKGNtLT5leCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oU2lnbmFsVHVwbGUsIGksIGNtLT5leCk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBVbmZvcnR1bmF0ZWx5LCBJbnZhbGlkT3BlcmF0aW9uIGlzIGEgc2lnbmFsIHRoYXQgY29tcHJpc2VzCisgICAgICogc2V2ZXJhbCBjb25kaXRpb25zLCBpbmNsdWRpbmcgSW52YWxpZE9wZXJhdGlvbiEgTmFtaW5nIHRoZQorICAgICAqIHNpZ25hbCBJRUVFSW52YWxpZE9wZXJhdGlvbiB3b3VsZCBwcmV2ZW50IHRoZSBjb25mdXNpb24uCisgICAgICovCisgICAgY29uZF9tYXBbMF0uZXggPSBzaWduYWxfbWFwWzBdLmV4OworCisgICAgLyogQWRkIHJlbWFpbmluZyBleGNlcHRpb25zLCBpbmhlcml0IGZyb20gSW52YWxpZE9wZXJhdGlvbiAqLworICAgIGZvciAoY20gPSBjb25kX21hcCsxOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpiYXNlOworICAgICAgICBpZiAoY20tPmZsYWcgPT0gTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCkgeworICAgICAgICAgICAgYmFzZSA9IFB5VHVwbGVfUGFjaygyLCBzaWduYWxfbWFwWzBdLmV4LCBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBiYXNlID0gUHlUdXBsZV9QYWNrKDEsIHNpZ25hbF9tYXBbMF0uZXgpOworICAgICAgICB9CisgICAgICAgIGlmIChiYXNlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKChjaGFyICopY20tPmZxbmFtZSwgYmFzZSwgTlVMTCkpOworICAgICAgICBQeV9ERUNSRUYoYmFzZSk7CisKKyAgICAgICAgUHlfSU5DUkVGKGNtLT5leCk7CisgICAgICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgY20tPm5hbWUsIGNtLT5leCkpOworICAgIH0KKworCisgICAgLyogSW5pdCBkZWZhdWx0IGNvbnRleHQgdGVtcGxhdGUgZmlyc3QgKi8KKyAgICBBU1NJR05fUFRSKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlLCBOVUxMKSk7CisgICAgUHlfSU5DUkVGKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSk7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRGVmYXVsdENvbnRleHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlKSk7CisKKyNpZmRlZiBXSVRIT1VUX1RIUkVBRFMKKyAgICAvKiBJbml0IG1vZHVsZSBjb250ZXh0ICovCisgICAgQVNTSUdOX1BUUihtb2R1bGVfY29udGV4dCwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlLCBOVUxMKSk7CisgICAgUHlfSU5DUkVGKFB5X0ZhbHNlKTsKKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVZFX1RIUkVBRFMiLCBQeV9GYWxzZSkpOworI2Vsc2UKKyAgICBBU1NJR05fUFRSKHRsc19jb250ZXh0X2tleSwgUHlVbmljb2RlX0Zyb21TdHJpbmcoIl9fX0RFQ0lNQUxfQ1RYX18iKSk7CisgICAgUHlfSU5DUkVGKFB5X1RydWUpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBVkVfVEhSRUFEUyIsIFB5X1RydWUpKTsKKyNlbmRpZgorCisgICAgLyogSW5pdCBiYXNpYyBjb250ZXh0IHRlbXBsYXRlICovCisgICAgQVNTSUdOX1BUUihiYXNpY19jb250ZXh0X3RlbXBsYXRlLAorICAgICAgICAgICAgICAgUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKikmUHlEZWNDb250ZXh0X1R5cGUsIE5VTEwpKTsKKyAgICBpbml0X2Jhc2ljX2NvbnRleHQoYmFzaWNfY29udGV4dF90ZW1wbGF0ZSk7CisgICAgUHlfSU5DUkVGKGJhc2ljX2NvbnRleHRfdGVtcGxhdGUpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJhc2ljQ29udGV4dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNpY19jb250ZXh0X3RlbXBsYXRlKSk7CisKKyAgICAvKiBJbml0IGV4dGVuZGVkIGNvbnRleHQgdGVtcGxhdGUgKi8KKyAgICBBU1NJR05fUFRSKGV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUsCisgICAgICAgICAgICAgICBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKSZQeURlY0NvbnRleHRfVHlwZSwgTlVMTCkpOworICAgIGluaXRfZXh0ZW5kZWRfY29udGV4dChleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlKTsKKyAgICBQeV9JTkNSRUYoZXh0ZW5kZWRfY29udGV4dF90ZW1wbGF0ZSk7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRXh0ZW5kZWRDb250ZXh0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUpKTsKKworCisgICAgLyogSW5pdCBtcGRfc3NpemVfdCBjb25zdGFudHMgKi8KKyAgICBmb3IgKHNzaXplX2NtID0gc3NpemVfY29uc3RhbnRzOyBzc2l6ZV9jbS0+bmFtZSAhPSBOVUxMOyBzc2l6ZV9jbSsrKSB7CisgICAgICAgIEFTU0lHTl9QVFIob2JqLCBQeUxvbmdfRnJvbVNzaXplX3Qoc3NpemVfY20tPnZhbCkpOworICAgICAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sIHNzaXplX2NtLT5uYW1lLCBvYmopKTsKKyAgICAgICAgb2JqID0gTlVMTDsKKyAgICB9CisKKyAgICAvKiBJbml0IGludCBjb25zdGFudHMgKi8KKyAgICBmb3IgKGludF9jbSA9IGludF9jb25zdGFudHM7IGludF9jbS0+bmFtZSAhPSBOVUxMOyBpbnRfY20rKykgeworICAgICAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgaW50X2NtLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X2NtLT52YWwpKTsKKyAgICB9CisKKyAgICAvKiBBZGQgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIG51bWJlciAqLworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiX192ZXJzaW9uX18iLCAiIDEuNzAiKSk7CisKKworICAgIHJldHVybiBtOworCisKK2Vycm9yOgorICAgIFB5X0NMRUFSKG9iaik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUihudW1iZXJzKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIFB5X0NMRUFSKE51bWJlcik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUihSYXRpb25hbCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUihjb2xsZWN0aW9ucyk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUihNdXRhYmxlTWFwcGluZyk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUihTaWduYWxUdXBsZSk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUihEZWNpbWFsVHVwbGUpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisjaWZkZWYgV0lUSE9VVF9USFJFQURTCisgICAgUHlfQ0xFQVIobW9kdWxlX2NvbnRleHQpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisjZWxzZQorICAgIFB5X0NMRUFSKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUih0bHNfY29udGV4dF9rZXkpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisjZW5kaWYKKyAgICBQeV9DTEVBUihiYXNpY19jb250ZXh0X3RlbXBsYXRlKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIFB5X0NMRUFSKGV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIobSk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKworICAgIHJldHVybiBOVUxMOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmggYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjE1MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKQEAgLTAsMCArMSw3NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAxMiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIE1vZGlmaWVkIGFuZCBleHRlbmRlZCBieSBTdGVmYW4gS3JhaC4KKyAqLworCisKKyNpZm5kZWYgRE9DU1RSSU5HU19ICisjZGVmaW5lIERPQ1NUUklOR1NfSAorCisKKyNpbmNsdWRlICJweW1hY3JvLmgiCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2R1bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK1B5RG9jX1NUUlZBUihkb2NfX2RlY2ltYWwsCisiQyBkZWNpbWFsIGFyaXRobWV0aWMgbW9kdWxlIik7CisKK1B5RG9jX1NUUlZBUihkb2NfZ2V0Y29udGV4dCwiXG5cCitnZXRjb250ZXh0KCkgLSBHZXQgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19zZXRjb250ZXh0LCJcblwKK3NldGNvbnRleHQoYykgLSBTZXQgYSBuZXcgZGVmYXVsdCBjb250ZXh0LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19sb2NhbGNvbnRleHQsIlxuXAorbG9jYWxjb250ZXh0KGMpIC0gUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgd2lsbCBzZXQgdGhlIGRlZmF1bHQgY29udGV4dFxuXAordG8gYSBjb3B5IG9mIGMgb24gZW50cnkgdG8gdGhlIHdpdGgtc3RhdGVtZW50IGFuZCByZXN0b3JlIHRoZSBwcmV2aW91cyBkZWZhdWx0XG5cCitjb250ZXh0IHdoZW4gZXhpdGluZyB0aGUgd2l0aC1zdGF0ZW1lbnQuIElmIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkLCBhIGNvcHkgb2ZcblwKK3RoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dCBpcyB1c2VkLlxuXAorXG4iKTsKKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK1B5RG9jX1NUUlZBUihkb2NfaWVlZV9jb250ZXh0LCJcblwKK0lFRUVDb250ZXh0KGJpdHMpIC0gUmV0dXJuIGEgY29udGV4dCBvYmplY3QgaW5pdGlhbGl6ZWQgdG8gdGhlIHByb3BlciB2YWx1ZXMgZm9yXG5cCitvbmUgb2YgdGhlIElFRUUgaW50ZXJjaGFuZ2UgZm9ybWF0cy4gVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMiBhbmRcblwKK2xlc3MgdGhhbiBJRUVFX0NPTlRFWFRfTUFYX0JJVFMuIEZvciB0aGUgbW9zdCBjb21tb24gdmFsdWVzLCB0aGUgY29uc3RhbnRzXG5cCitERUNJTUFMMzIsIERFQ0lNQUw2NCBhbmQgREVDSU1BTDEyOCBhcmUgcHJvdmlkZWQuXG5cCitcbiIpOworI2VuZGlmCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsIE9iamVjdCBhbmQgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitQeURvY19TVFJWQVIoZG9jX2RlY2ltYWwsIlxuXAorRGVjaW1hbChbdmFsdWVbLCBjb250ZXh0XV0pOiBDb25zdHJ1Y3QgYSBuZXcgRGVjaW1hbCBvYmplY3QgZnJvbSB2YWx1ZS5cblwKK1xuXAordmFsdWUgY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsIG9yIGFub3RoZXIgRGVjaW1hbCBvYmplY3QuXG5cCitJZiBubyB2YWx1ZSBpcyBnaXZlbiwgcmV0dXJuIERlY2ltYWwoJzAnKS4gVGhlIGNvbnRleHQgZG9lcyBub3QgYWZmZWN0XG5cCit0aGUgY29udmVyc2lvbiBhbmQgaXMgb25seSBwYXNzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBJbnZhbGlkT3BlcmF0aW9uXG5cCit0cmFwIGlzIGFjdGl2ZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfYWRqdXN0ZWQsIlxuXAorYWRqdXN0ZWQoKSAtIFJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIG51bWJlci5cblwKK1xuXAorRGVmaW5lZCBhcyBleHAgKyBkaWdpdHMgLSAxLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19hc190dXBsZSwiXG5cCithc190dXBsZSgpIC0gUmV0dXJuIGEgdHVwbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlci5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY2Fub25pY2FsLCJcblwKK2Nhbm9uaWNhbCgpIC0gUmV0dXJuIHRoZSBjYW5vbmljYWwgZW5jb2Rpbmcgb2YgdGhlIGFyZ3VtZW50LiBDdXJyZW50bHksXG5cCit0aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uXG5cCityZXR1cm5zIGl0cyBhcmd1bWVudCB1bmNoYW5nZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2NvbXBhcmUsIlxuXAorY29tcGFyZShvdGhlclssIGNvbnRleHRdKSAtIENvbXBhcmUgc2VsZiB0byBvdGhlci4gUmV0dXJuIGEgZGVjaW1hbCB2YWx1ZTpcblwKK1xuXAorICAgIGEgb3IgYiBpcyBhIE5hTiA9PT4gRGVjaW1hbCgnTmFOJylcblwKKyAgICBhIDwgYiAgICAgICAgICAgPT0+IERlY2ltYWwoJy0xJylcblwKKyAgICBhID09IGIgICAgICAgICAgPT0+IERlY2ltYWwoJzAnKVxuXAorICAgIGEgPiBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnMScpXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2NvbXBhcmVfc2lnbmFsLCJcblwKK2NvbXBhcmVfc2lnbmFsKG90aGVyWywgY29udGV4dF0pIC0gSWRlbnRpY2FsIHRvIGNvbXBhcmUsIGV4Y2VwdCB0aGF0XG5cCithbGwgTmFOcyBzaWduYWwuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2NvbXBhcmVfdG90YWwsIlxuXAorY29tcGFyZV90b3RhbChvdGhlcikgLSBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvblxuXAorcmF0aGVyIHRoYW4gdGhlaXIgbnVtZXJpY2FsIHZhbHVlLiBTaW1pbGFyIHRvIHRoZSBjb21wYXJlKCkgbWV0aG9kLCBidXQgdGhlXG5cCityZXN1bHQgZ2l2ZXMgYSB0b3RhbCBvcmRlcmluZyBvbiBEZWNpbWFsIGluc3RhbmNlcy4gVHdvIERlY2ltYWwgaW5zdGFuY2VzIHdpdGhcblwKK3RoZSBzYW1lIG51bWVyaWMgdmFsdWUgYnV0IGRpZmZlcmVudCByZXByZXNlbnRhdGlvbnMgY29tcGFyZSB1bmVxdWFsIGluIHRoaXNcblwKK29yZGVyaW5nOlxuXAorXG5cCisgICAgPj4+IERlY2ltYWwoJzEyLjAnKS5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyJykpXG5cCisgICAgRGVjaW1hbCgnLTEnKVxuXAorXG5cCitRdWlldCBhbmQgc2lnbmFsaW5nIE5hTnMgYXJlIGFsc28gaW5jbHVkZWQgaW4gdGhlIHRvdGFsIG9yZGVyaW5nLiBUaGUgcmVzdWx0XG5cCitvZiB0aGlzIGZ1bmN0aW9uIGlzIERlY2ltYWwoJzAnKSBpZiBib3RoIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24sXG5cCitEZWNpbWFsKCctMScpIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGxvd2VyIGluIHRoZSB0b3RhbCBvcmRlciB0aGFuIHRoZSBzZWNvbmQsXG5cCithbmQgRGVjaW1hbCgnMScpIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGhpZ2hlciBpbiB0aGUgdG90YWwgb3JkZXIgdGhhbiB0aGVcblwKK3NlY29uZCBvcGVyYW5kLiBTZWUgdGhlIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb2YgdGhlIHRvdGFsIG9yZGVyLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlX3RvdGFsX21hZywiXG5cCitjb21wYXJlX3RvdGFsX21hZyhvdGhlcikgLSBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpciBhYnN0cmFjdFxuXAorcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW4gdGhlaXIgdmFsdWUgYXMgaW4gY29tcGFyZV90b3RhbCgpLCBidXRcblwKK2lnbm9yaW5nIHRoZSBzaWduIG9mIGVhY2ggb3BlcmFuZC4gIHguY29tcGFyZV90b3RhbF9tYWcoeSkgaXNcblwKK2VxdWl2YWxlbnQgdG8geC5jb3B5X2FicygpLmNvbXBhcmVfdG90YWwoeS5jb3B5X2FicygpKS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY29uanVnYXRlLCJcblwKK2Nvbmp1Z2F0ZSgpIC0gUmV0dXJuIHNlbGYuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2NvcHlfYWJzLCJcblwKK2NvcHlfYWJzKCkgLSBSZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBhcmd1bWVudC4gVGhpcyBvcGVyYXRpb25cblwKK2lzIHVuYWZmZWN0ZWQgYnkgdGhlIGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm9cblwKK3JvdW5kaW5nIGlzIHBlcmZvcm1lZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY29weV9uZWdhdGUsIlxuXAorY29weV9uZWdhdGUoKSAtIFJldHVybiB0aGUgbmVnYXRpb24gb2YgdGhlIGFyZ3VtZW50LiBUaGlzIG9wZXJhdGlvbiBpc1xuXAordW5hZmZlY3RlZCBieSB0aGUgY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZSBjaGFuZ2VkIGFuZCBub1xuXAorcm91bmRpbmcgaXMgcGVyZm9ybWVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb3B5X3NpZ24sIlxuXAorY29weV9zaWduKG90aGVyKSAtIFJldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXRcblwKK3RvIGJlIHRoZSBzYW1lIGFzIHRoZSBzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gRm9yIGV4YW1wbGU6XG5cCitcblwKKyAgICA+Pj4gRGVjaW1hbCgnMi4zJykuY29weV9zaWduKERlY2ltYWwoJy0xLjUnKSlcblwKKyAgICBEZWNpbWFsKCctMi4zJylcblwKK1xuXAorVGhpcyBvcGVyYXRpb24gaXMgdW5hZmZlY3RlZCBieSB0aGUgY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZVxuXAorY2hhbmdlZCBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19leHAsIlxuXAorZXhwKFtjb250ZXh0XSkgLSBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAobmF0dXJhbCkgZXhwb25lbnRpYWwgZnVuY3Rpb24gZSoqeFxuXAorYXQgdGhlIGdpdmVuIG51bWJlci4gVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmRcblwKK3RoZSByZXN1bHQgaXMgY29ycmVjdGx5IHJvdW5kZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2Zyb21fZmxvYXQsIlxuXAorZnJvbV9mbG9hdChmKSAtIENsYXNzIG1ldGhvZCB0aGF0IGNvbnZlcnRzIGEgZmxvYXQgdG8gYSBkZWNpbWFsIG51bWJlciwgZXhhY3RseS5cblwKK1NpbmNlIDAuMSBpcyBub3QgZXhhY3RseSByZXByZXNlbnRhYmxlIGluIGJpbmFyeSBmbG9hdGluZyBwb2ludCxcblwKK0RlY2ltYWwuZnJvbV9mbG9hdCgwLjEpIGlzIG5vdCB0aGUgc2FtZSBhcyBEZWNpbWFsKCcwLjEnKS5cblwKK1xuXAorICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKVxuXAorICAgIERlY2ltYWwoJzAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMTI1NzgyNzAyMTE4MTU4MzQwNDU0MTAxNTYyNScpXG5cCisgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnbmFuJykpXG5cCisgICAgRGVjaW1hbCgnTmFOJylcblwKKyAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSlcblwKKyAgICBEZWNpbWFsKCdJbmZpbml0eScpXG5cCisgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnLWluZicpKVxuXAorICAgIERlY2ltYWwoJy1JbmZpbml0eScpXG5cCitcblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfZm1hLCJcblwKK2ZtYShvdGhlciwgdGhpcmRbLCBjb250ZXh0XSkgLSBGdXNlZCBtdWx0aXBseS1hZGQuIFJldHVybiBzZWxmKm90aGVyK3RoaXJkXG5cCit3aXRoIG5vIHJvdW5kaW5nIG9mIHRoZSBpbnRlcm1lZGlhdGUgcHJvZHVjdCBzZWxmKm90aGVyLlxuXAorXG5cCisgICAgPj4+IERlY2ltYWwoMikuZm1hKDMsIDUpXG5cCisgICAgRGVjaW1hbCgnMTEnKVxuXAorXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX2Nhbm9uaWNhbCwiXG5cCitpc19jYW5vbmljYWwoKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBjYW5vbmljYWwgYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKK0N1cnJlbnRseSwgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uIGFsd2F5c1xuXAorcmV0dXJucyBUcnVlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19maW5pdGUsIlxuXAoraXNfZmluaXRlKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBmaW5pdGUgbnVtYmVyLCBhbmQgRmFsc2UgaWYgdGhlXG5cCithcmd1bWVudCBpcyBpbmZpbml0ZSBvciBhIE5hTi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfaW5maW5pdGUsIlxuXAoraXNfaW5maW5pdGUoKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBlaXRoZXIgcG9zaXRpdmUgb3IgbmVnYXRpdmVcblwKK2luZmluaXR5IGFuZCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX25hbiwiXG5cCitpc19uYW4oKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIChxdWlldCBvciBzaWduYWxpbmcpIE5hTiBhbmRcblwKK0ZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfbm9ybWFsLCJcblwKK2lzX25vcm1hbChbY29udGV4dF0pIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgbm9ybWFsIGZpbml0ZSBub24temVyb1xuXAorbnVtYmVyIHdpdGggYW4gYWRqdXN0ZWQgZXhwb25lbnQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIEVtaW4uIFJldHVybiBGYWxzZVxuXAoraWYgdGhlIGFyZ3VtZW50IGlzIHplcm8sIHN1Ym5vcm1hbCwgaW5maW5pdGUgb3IgYSBOYU4uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX3FuYW4sIlxuXAoraXNfcW5hbigpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19zaWduZWQsIlxuXAoraXNfc2lnbmVkKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaGFzIGEgbmVnYXRpdmUgc2lnbiBhbmRcblwKK0ZhbHNlIG90aGVyd2lzZS4gTm90ZSB0aGF0IGJvdGggemVyb3MgYW5kIE5hTnMgY2FuIGNhcnJ5IHNpZ25zLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19zbmFuLCJcblwKK2lzX3NuYW4oKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIHNpZ25hbGluZyBOYU4gYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfc3Vibm9ybWFsLCJcblwKK2lzX3N1Ym5vcm1hbChbY29udGV4dF0pIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIHN1Ym5vcm1hbCwgYW5kIEZhbHNlXG5cCitvdGhlcndpc2UuIEEgbnVtYmVyIGlzIHN1Ym5vcm1hbCBpZiBpdCBpcyBub24temVybywgZmluaXRlLCBhbmQgaGFzIGFuXG5cCithZGp1c3RlZCBleHBvbmVudCBsZXNzIHRoYW4gRW1pbi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfemVybywiXG5cCitpc196ZXJvKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocG9zaXRpdmUgb3IgbmVnYXRpdmUpIHplcm8gYW5kXG5cCitGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2xuLCJcblwKK2xuKFtjb250ZXh0XSkgLSBSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLlxuXAorVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpc1xuXAorY29ycmVjdGx5IHJvdW5kZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2xvZzEwLCJcblwKK2xvZzEwKFtjb250ZXh0XSkgLSBSZXR1cm4gdGhlIGJhc2UgdGVuIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC5cblwKK1RoZSBmdW5jdGlvbiBhbHdheXMgdXNlcyB0aGUgUk9VTkRfSEFMRl9FVkVOIG1vZGUgYW5kIHRoZSByZXN1bHQgaXNcblwKK2NvcnJlY3RseSByb3VuZGVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19sb2diLCJcblwKK2xvZ2IoW2NvbnRleHRdKSAtIEZvciBhIG5vbi16ZXJvIG51bWJlciwgcmV0dXJuIHRoZSBhZGp1c3RlZCBleHBvbmVudFxuXAorb2YgdGhlIG9wZXJhbmQgYXMgYSBEZWNpbWFsIGluc3RhbmNlLiBJZiB0aGUgb3BlcmFuZCBpcyBhIHplcm8sIHRoZW5cblwKK0RlY2ltYWwoJy1JbmZpbml0eScpIGlzIHJldHVybmVkIGFuZCB0aGUgRGl2aXNpb25CeVplcm8gY29uZGl0aW9uIGlzXG5cCityYWlzZWQuIElmIHRoZSBvcGVyYW5kIGlzIGFuIGluZmluaXR5IHRoZW4gRGVjaW1hbCgnSW5maW5pdHknKSBpcyByZXR1cm5lZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9hbmQsIlxuXAorbG9naWNhbF9hbmQob3RoZXJbLCBjb250ZXh0XSkgLSBSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgYW5kIG9mIHRoZSB0d29cblwKKyhsb2dpY2FsKSBvcGVyYW5kcy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9pbnZlcnQsIlxuXAorbG9naWNhbF9pbnZlcnQoW2NvbnRleHRdKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBpbnZlcnNpb24gb2YgdGhlXG5cCisobG9naWNhbCkgb3BlcmFuZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9vciwiXG5cCitsb2dpY2FsX29yKG90aGVyWywgY29udGV4dF0pIC0gUmV0dXJuIHRoZSBkaWdpdC13aXNlIG9yIG9mIHRoZSB0d29cblwKKyhsb2dpY2FsKSBvcGVyYW5kcy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF94b3IsIlxuXAorbG9naWNhbF94b3Iob3RoZXJbLCBjb250ZXh0XSkgLSBSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgZXhjbHVzaXZlIG9yIG9mIHRoZVxuXAordHdvIChsb2dpY2FsKSBvcGVyYW5kcy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbWF4LCJcblwKK21heChvdGhlclssIGNvbnRleHRdKSAtIE1heGltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXRcblwKK05hTiBhbmQgdGhlIG90aGVyIGlzIG51bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX21heF9tYWcsIlxuXAorbWF4X21hZyhvdGhlclssIGNvbnRleHRdKSAtIFNpbWlsYXIgdG8gdGhlIG1heCgpIG1ldGhvZCwgYnV0IHRoZSBjb21wYXJpc29uIGlzXG5cCitkb25lIHVzaW5nIHRoZSBhYnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19taW4sIlxuXAorbWluKG90aGVyWywgY29udGV4dF0pIC0gTWluaW11bSBvZiBzZWxmIGFuZCBvdGhlci4gSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldFxuXAorTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtZXJpYywgdGhlIG51bWVyaWMgb3BlcmFuZCBpcyByZXR1cm5lZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbWluX21hZywiXG5cCittaW5fbWFnKG90aGVyWywgY29udGV4dF0pIC0gU2ltaWxhciB0byB0aGUgbWluKCkgbWV0aG9kLCBidXQgdGhlIGNvbXBhcmlzb24gaXNcblwKK2RvbmUgdXNpbmcgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX25leHRfbWludXMsIlxuXAorbmV4dF9taW51cyhbY29udGV4dF0pIC0gUmV0dXJuIHRoZSBsYXJnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZSBnaXZlblxuXAorY29udGV4dCAob3IgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXQgaXNcblwKK3NtYWxsZXIgdGhhbiB0aGUgZ2l2ZW4gb3BlcmFuZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbmV4dF9wbHVzLCJcblwKK25leHRfcGx1cyhbY29udGV4dF0pIC0gUmV0dXJuIHRoZSBzbWFsbGVzdCBudW1iZXIgcmVwcmVzZW50YWJsZSBpbiB0aGUgZ2l2ZW5cblwKK2NvbnRleHQgKG9yIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dCBpZiBubyBjb250ZXh0IGlzIGdpdmVuKSB0aGF0IGlzXG5cCitsYXJnZXIgdGhhbiB0aGUgZ2l2ZW4gb3BlcmFuZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbmV4dF90b3dhcmQsIlxuXAorbmV4dF90b3dhcmQob3RoZXJbLCBjb250ZXh0XSkgLSBJZiB0aGUgdHdvIG9wZXJhbmRzIGFyZSB1bmVxdWFsLCByZXR1cm4gdGhlXG5cCitudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKK0lmIGJvdGggb3BlcmFuZHMgYXJlIG51bWVyaWNhbGx5IGVxdWFsLCByZXR1cm4gYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kXG5cCit3aXRoIHRoZSBzaWduIHNldCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX25vcm1hbGl6ZSwiXG5cCitub3JtYWxpemUoW2NvbnRleHRdKSAtIE5vcm1hbGl6ZSB0aGUgbnVtYmVyIGJ5IHN0cmlwcGluZyB0aGUgcmlnaHRtb3N0IHRyYWlsaW5nXG5cCit6ZXJvcyBhbmQgY29udmVydGluZyBhbnkgcmVzdWx0IGVxdWFsIHRvIERlY2ltYWwoJzAnKSB0byBEZWNpbWFsKCcwZTAnKS4gVXNlZFxuXAorZm9yIHByb2R1Y2luZyBjYW5vbmljYWwgdmFsdWVzIGZvciBtZW1iZXJzIG9mIGFuIGVxdWl2YWxlbmNlIGNsYXNzLiBGb3IgZXhhbXBsZSxcblwKK0RlY2ltYWwoJzMyLjEwMCcpIGFuZCBEZWNpbWFsKCcwLjMyMTAwMGUrMicpIGJvdGggbm9ybWFsaXplIHRvIHRoZSBlcXVpdmFsZW50XG5cCit2YWx1ZSBEZWNpbWFsKCczMi4xJykuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX251bWJlcl9jbGFzcywiXG5cCitudW1iZXJfY2xhc3MoW2NvbnRleHRdKSAtIFJldHVybiBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBjbGFzcyBvZiB0aGUgb3BlcmFuZC5cblwKK1RoZSByZXR1cm5lZCB2YWx1ZSBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyB0ZW4gc3RyaW5nczpcblwKK1xuXAorICAgICogJy1JbmZpbml0eScsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZSBpbmZpbml0eS5cblwKKyAgICAqICctTm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgbmVnYXRpdmUgbm9ybWFsIG51bWJlci5cblwKKyAgICAqICctU3Vibm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIG5lZ2F0aXZlIGFuZCBzdWJub3JtYWwuXG5cCisgICAgKiAnLVplcm8nLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBuZWdhdGl2ZSB6ZXJvLlxuXAorICAgICogJytaZXJvJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcG9zaXRpdmUgemVyby5cblwKKyAgICAqICcrU3Vibm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIHBvc2l0aXZlIGFuZCBzdWJub3JtYWwuXG5cCisgICAgKiAnK05vcm1hbCcsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHBvc2l0aXZlIG5vcm1hbCBudW1iZXIuXG5cCisgICAgKiAnK0luZmluaXR5JywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIHBvc2l0aXZlIGluZmluaXR5LlxuXAorICAgICogJ05hTicsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiAoTm90IGEgTnVtYmVyKS5cblwKKyAgICAqICdzTmFOJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgc2lnbmFsaW5nIE5hTi5cblwKK1xuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19xdWFudGl6ZSwiXG5cCitxdWFudGl6ZShleHBbLCByb3VuZGluZ1ssIGNvbnRleHRdXSkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3RcblwKK29wZXJhbmQgYWZ0ZXIgcm91bmRpbmcgYW5kIGhhdmluZyB0aGUgZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAorXG5cCisgICAgPj4+IERlY2ltYWwoJzEuNDE0MjEzNTYnKS5xdWFudGl6ZShEZWNpbWFsKCcxLjAwMCcpKVxuXAorICAgIERlY2ltYWwoJzEuNDE0JylcblwKK1xuXAorVW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIGlmIHRoZSBsZW5ndGggb2YgdGhlIGNvZWZmaWNpZW50IGFmdGVyIHRoZSBxdWFudGl6ZVxuXAorb3BlcmF0aW9uIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiBwcmVjaXNpb24sIHRoZW4gYW4gSW52YWxpZE9wZXJhdGlvbiBpcyBzaWduYWxlZC5cblwKK1RoaXMgZ3VhcmFudGVlcyB0aGF0LCB1bmxlc3MgdGhlcmUgaXMgYW4gZXJyb3IgY29uZGl0aW9uLCB0aGUgcXVhbnRpemVkIGV4cG9uZW50XG5cCitpcyBhbHdheXMgZXF1YWwgdG8gdGhhdCBvZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kLlxuXAorXG5cCitBbHNvIHVubGlrZSBvdGhlciBvcGVyYXRpb25zLCBxdWFudGl6ZSBuZXZlciBzaWduYWxzIFVuZGVyZmxvdywgZXZlbiBpZiB0aGVcblwKK3Jlc3VsdCBpcyBzdWJub3JtYWwgYW5kIGluZXhhY3QuXG5cCitcblwKK0lmIHRoZSBleHBvbmVudCBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgbGFyZ2VyIHRoYW4gdGhhdCBvZiB0aGUgZmlyc3QsIHRoZW5cblwKK3JvdW5kaW5nIG1heSBiZSBuZWNlc3NhcnkuIEluIHRoaXMgY2FzZSwgdGhlIHJvdW5kaW5nIG1vZGUgaXMgZGV0ZXJtaW5lZCBieSB0aGVcblwKK3JvdW5kaW5nIGFyZ3VtZW50IGlmIGdpdmVuLCBlbHNlIGJ5IHRoZSBnaXZlbiBjb250ZXh0IGFyZ3VtZW50OyBpZiBuZWl0aGVyXG5cCithcmd1bWVudCBpcyBnaXZlbiwgdGhlIHJvdW5kaW5nIG1vZGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgY29udGV4dCBpcyB1c2VkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19yYWRpeCwiXG5cCityYWRpeCgpIC0gUmV0dXJuIERlY2ltYWwoMTApLCB0aGUgcmFkaXggKGJhc2UpIGluIHdoaWNoIHRoZSBEZWNpbWFsIGNsYXNzIGRvZXNcblwKK2FsbCBpdHMgYXJpdGhtZXRpYy4gSW5jbHVkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfcmVtYWluZGVyX25lYXIsIlxuXAorcmVtYWluZGVyX25lYXIob3RoZXJbLCBjb250ZXh0XSkgLSBDb21wdXRlIHRoZSBtb2R1bG8gYXMgZWl0aGVyIGEgcG9zaXRpdmVcblwKK29yIG5lZ2F0aXZlIHZhbHVlIGRlcGVuZGluZyBvbiB3aGljaCBpcyBjbG9zZXN0IHRvIHplcm8uIEZvciBpbnN0YW5jZSxcblwKK0RlY2ltYWwoMTApLnJlbWFpbmRlcl9uZWFyKDYpIHJldHVybnMgRGVjaW1hbCgnLTInKSwgd2hpY2ggaXMgY2xvc2VyIHRvIHplcm9cblwKK3RoYW4gRGVjaW1hbCgnNCcpLlxuXAorXG5cCitJZiBib3RoIGFyZSBlcXVhbGx5IGNsb3NlLCB0aGUgb25lIGNob3NlbiB3aWxsIGhhdmUgdGhlIHNhbWUgc2lnbiBhcyBzZWxmLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19yb3RhdGUsIlxuXAorcm90YXRlKG90aGVyWywgY29udGV4dF0pIC0gUmV0dXJuIHRoZSByZXN1bHQgb2Ygcm90YXRpbmcgdGhlIGRpZ2l0cyBvZiB0aGVcblwKK2ZpcnN0IG9wZXJhbmQgYnkgYW4gYW1vdW50IHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSBzZWNvbmQgb3BlcmFuZFxuXAorbXVzdCBiZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAtcHJlY2lzaW9uIHRocm91Z2ggcHJlY2lzaW9uLiBUaGUgYWJzb2x1dGVcblwKK3ZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byByb3RhdGUuIElmIHRoZSBzZWNvbmRcblwKK29wZXJhbmQgaXMgcG9zaXRpdmUgdGhlbiByb3RhdGlvbiBpcyB0byB0aGUgbGVmdDsgb3RoZXJ3aXNlIHJvdGF0aW9uIGlzIHRvIHRoZVxuXAorcmlnaHQuIFRoZSBjb2VmZmljaWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBwYWRkZWQgb24gdGhlIGxlZnQgd2l0aCB6ZXJvcyB0b1xuXAorbGVuZ3RoIHByZWNpc2lvbiBpZiBuZWNlc3NhcnkuIFRoZSBzaWduIGFuZCBleHBvbmVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmVcblwKK3VuY2hhbmdlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2Nfc2FtZV9xdWFudHVtLCJcblwKK3NhbWVfcXVhbnR1bShvdGhlclssIGNvbnRleHRdKSAtIFRlc3Qgd2hldGhlciBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZVxuXAorc2FtZSBleHBvbmVudCBvciB3aGV0aGVyIGJvdGggYXJlIE5hTi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2Nfc2NhbGViLCJcblwKK3NjYWxlYihvdGhlclssIGNvbnRleHRdKSAtIFJldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoIHRoZSBleHBvbmVudCBhZGp1c3RlZFxuXAordGhlIHNlY29uZC4gRXF1aXZhbGVudGx5LCByZXR1cm4gdGhlIGZpcnN0IG9wZXJhbmQgbXVsdGlwbGllZCBieSAxMCoqb3RoZXIuXG5cCitUaGUgc2Vjb25kIG9wZXJhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19zaGlmdCwiXG5cCitzaGlmdChvdGhlclssIGNvbnRleHRdKSAtIFJldHVybiB0aGUgcmVzdWx0IG9mIHNoaWZ0aW5nIHRoZSBkaWdpdHMgb2ZcblwKK3RoZSBmaXJzdCBvcGVyYW5kIGJ5IGFuIGFtb3VudCBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBvcGVyYW5kLiBUaGUgc2Vjb25kXG5cCitvcGVyYW5kIG11c3QgYmUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgLXByZWNpc2lvbiB0aHJvdWdoIHByZWNpc2lvbi4gVGhlXG5cCithYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgZ2l2ZXMgdGhlIG51bWJlciBvZiBwbGFjZXMgdG8gc2hpZnQuXG5cCitJZiB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgcG9zaXRpdmUsIHRoZW4gdGhlIHNoaWZ0IGlzIHRvIHRoZSBsZWZ0OyBvdGhlcndpc2VcblwKK3RoZSBzaGlmdCBpcyB0byB0aGUgcmlnaHQuIERpZ2l0cyBzaGlmdGVkIGludG8gdGhlIGNvZWZmaWNpZW50IGFyZSB6ZXJvcy5cblwKK1RoZSBzaWduIGFuZCBleHBvbmVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmUgdW5jaGFuZ2VkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19zcXJ0LCJcblwKK3NxcnQoW2NvbnRleHRdKSAtIFJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIGFyZ3VtZW50IHRvIGZ1bGwgcHJlY2lzaW9uLlxuXAorVGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZCB1c2luZyB0aGUgUk9VTkRfSEFMRl9FVkVOIHJvdW5kaW5nIG1vZGUuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3RvX2VuZ19zdHJpbmcsIlxuXAordG9fZW5nX3N0cmluZyhbY29udGV4dF0pIC0gQ29udmVydCB0byBhbiBlbmdpbmVlcmluZy10eXBlIHN0cmluZy5cblwKK0VuZ2luZWVyaW5nIG5vdGF0aW9uIGhhcyBhbiBleHBvbmVudCB3aGljaCBpcyBhIG11bHRpcGxlIG9mIDMsIHNvXG5cCit0aGVyZSBhcmUgdXAgdG8gMyBkaWdpdHMgbGVmdCBvZiB0aGUgZGVjaW1hbCBwbGFjZS4gRm9yIGV4YW1wbGUsXG5cCitEZWNpbWFsKCcxMjNFKzEnKSBpcyBjb252ZXJ0ZWQgdG8gRGVjaW1hbCgnMS4yM0UrMycpXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsLCJcblwKK3RvX2ludGVncmFsKFtyb3VuZGluZ1ssIGNvbnRleHRdXSkgLSBJZGVudGljYWwgdG8gdGhlIHRvX2ludGVncmFsX3ZhbHVlKClcblwKK21ldGhvZC4gVGhlIHRvX2ludGVncmFsIG5hbWUgaGFzIGJlZW4ga2VwdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyXG5cCit2ZXJzaW9ucy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfdG9faW50ZWdyYWxfZXhhY3QsIlxuXAordG9faW50ZWdyYWxfZXhhY3QoW3JvdW5kaW5nWywgY29udGV4dF1dKSAtIFJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIsXG5cCitzaWduYWxpbmcgSW5leGFjdCBvciBSb3VuZGVkIGFzIGFwcHJvcHJpYXRlIGlmIHJvdW5kaW5nIG9jY3Vycy4gVGhlIHJvdW5kaW5nXG5cCittb2RlIGlzIGRldGVybWluZWQgYnkgdGhlIHJvdW5kaW5nIHBhcmFtZXRlciBpZiBnaXZlbiwgZWxzZSBieSB0aGUgZ2l2ZW5cblwKK2NvbnRleHQuIElmIG5laXRoZXIgcGFyYW1ldGVyIGlzIGdpdmVuLCB0aGVuIHRoZSByb3VuZGluZyBtb2RlIG9mIHRoZSBjdXJyZW50XG5cCitkZWZhdWx0IGNvbnRleHQgaXMgdXNlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfdG9faW50ZWdyYWxfdmFsdWUsIlxuXAordG9faW50ZWdyYWxfdmFsdWUoW3JvdW5kaW5nWywgY29udGV4dF1dKSAtIFJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgd2l0aG91dFxuXAorc2lnbmFsaW5nIEluZXhhY3Qgb3IgUm91bmRlZC4gVGhlIHJvdW5kaW5nIG1vZGUgaXMgZGV0ZXJtaW5lZCBieSB0aGUgcm91bmRpbmdcblwKK3BhcmFtZXRlciBpZiBnaXZlbiwgZWxzZSBieSB0aGUgZ2l2ZW4gY29udGV4dC4gSWYgbmVpdGhlciBwYXJhbWV0ZXIgaXMgZ2l2ZW4sXG5cCit0aGVuIHRoZSByb3VuZGluZyBtb2RlIG9mIHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dCBpcyB1c2VkLlxuXAorXG4iKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQgT2JqZWN0IGFuZCBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1B5RG9jX1NUUlZBUihkb2NfY29udGV4dCwiXG5cCitUaGUgY29udGV4dCBhZmZlY3RzIGFsbW9zdCBhbGwgb3BlcmF0aW9ucyBhbmQgY29udHJvbHMgcm91bmRpbmcsXG5cCitPdmVyL1VuZGVyZmxvdywgcmFpc2luZyBvZiBleGNlcHRpb25zIGFuZCBtdWNoIG1vcmUuIEEgbmV3IGNvbnRleHRcblwKK2NhbiBiZSBjb25zdHJ1Y3RlZCBhcyBmb2xsb3dzOlxuXAorXG5cCisgICAgPj4+IGMgPSBDb250ZXh0KHByZWM9MjgsIEVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsXG5cCisgICAgLi4uICAgICAgICAgICAgIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgY2FwaXRhbHM9MSwgY2xhbXA9MSxcblwKKyAgICAuLi4gICAgICAgICAgICAgdHJhcHM9W0ludmFsaWRPcGVyYXRpb24sIERpdmlzaW9uQnlaZXJvLCBPdmVyZmxvd10sXG5cCisgICAgLi4uICAgICAgICAgICAgIGZsYWdzPVtdKVxuXAorICAgID4+PlxuXAorXG5cCitcbiIpOworCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorUHlEb2NfU1RSVkFSKGRvY19jdHhfYXBwbHksIlxuXAorYXBwbHkoeCkgLSBBcHBseSBzZWxmIHRvIERlY2ltYWwgeC5cblwKK1xuIik7CisjZW5kaWYKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY2xlYXJfZmxhZ3MsIlxuXAorY2xlYXJfZmxhZ3MoKSAtIFJlc2V0IGFsbCBmbGFncyB0byBGYWxzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NsZWFyX3RyYXBzLCJcblwKK2NsZWFyX3RyYXBzKCkgLSBTZXQgYWxsIHRyYXBzIHRvIEZhbHNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weSwiXG5cCitjb3B5KCkgLSBSZXR1cm4gYSBkdXBsaWNhdGUgb2YgdGhlIGNvbnRleHQgd2l0aCBhbGwgZmxhZ3MgY2xlYXJlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfZGVjaW1hbCwiXG5cCitjb3B5X2RlY2ltYWwoeCkgLSBSZXR1cm4gYSBjb3B5IG9mIERlY2ltYWwgeC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NyZWF0ZV9kZWNpbWFsLCJcblwKK2NyZWF0ZV9kZWNpbWFsKHgpIC0gQ3JlYXRlIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSB4LCB1c2luZyBzZWxmIGFzIHRoZVxuXAorY29udGV4dC4gVW5saWtlIHRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yLCB0aGlzIGZ1bmN0aW9uIG9ic2VydmVzIHRoZSBjb250ZXh0XG5cCitsaW1pdHMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0LCJcblwKK2NyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoZikgLSBDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIGZsb2F0IGYuXG5cCitVbmxpa2UgdGhlIERlY2ltYWwuZnJvbV9mbG9hdCgpIGNsYXNzIG1ldGhvZCwgdGhpcyBmdW5jdGlvbiBvYnNlcnZlcyB0aGVcblwKK2NvbnRleHQgbGltaXRzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfRXRpbnksIlxuXAorRXRpbnkoKSAtIFJldHVybiBhIHZhbHVlIGVxdWFsIHRvIEVtaW4gLSBwcmVjICsgMSwgd2hpY2ggaXMgdGhlIG1pbmltdW1cblwKK2V4cG9uZW50IHZhbHVlIGZvciBzdWJub3JtYWwgcmVzdWx0cy4gV2hlbiB1bmRlcmZsb3cgb2NjdXJzLCB0aGUgZXhwb25lbnRcblwKK2lzIHNldCB0byBFdGlueS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X0V0b3AsIlxuXAorRXRvcCgpIC0gUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gRW1heCAtIHByZWMgKyAxLiBUaGlzIGlzIHRoZSBtYXhpbXVtIGV4cG9uZW50XG5cCitpZiB0aGUgX2NsYW1wIGZpZWxkIG9mIHRoZSBjb250ZXh0IGlzIHNldCB0byAxIChJRUVFIGNsYW1wIG1vZGUpLiBFdG9wKCkgbXVzdFxuXAorbm90IGJlIG5lZ2F0aXZlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfYWJzLCJcblwKK2Ficyh4KSAtIFJldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgeC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2FkZCwiXG5cCithZGQoeCwgeSkgLSBSZXR1cm4gdGhlIHN1bSBvZiB4IGFuZCB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY2Fub25pY2FsLCJcblwKK2Nhbm9uaWNhbCh4KSAtIFJldHVybiBhIG5ldyBpbnN0YW5jZSBvZiB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY29tcGFyZSwiXG5cCitjb21wYXJlKHgsIHkpIC0gQ29tcGFyZSB4IGFuZCB5IG51bWVyaWNhbGx5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY29tcGFyZV9zaWduYWwsIlxuXAorY29tcGFyZV9zaWduYWwoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuIEFsbCBOYU5zIHNpZ25hbC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvbXBhcmVfdG90YWwsIlxuXAorY29tcGFyZV90b3RhbCh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvbXBhcmVfdG90YWxfbWFnLCJcblwKK2NvbXBhcmVfdG90YWxfbWFnKHgsIHkpIC0gQ29tcGFyZSB4IGFuZCB5IHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uLFxuXAoraWdub3Jpbmcgc2lnbi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfYWJzLCJcblwKK2NvcHlfYWJzKHgpIC0gUmV0dXJuIGEgY29weSBvZiB4IHdpdGggdGhlIHNpZ24gc2V0IHRvIDAuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X25lZ2F0ZSwiXG5cCitjb3B5X25lZ2F0ZSh4KSAtIFJldHVybiBhIGNvcHkgb2YgeCB3aXRoIHRoZSBzaWduIGludmVydGVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9zaWduLCJcblwKK2NvcHlfc2lnbih4LCB5KSAtIENvcHkgdGhlIHNpZ24gZnJvbSB5IHRvIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9kaXZpZGUsIlxuXAorZGl2aWRlKHgsIHkpIC0gUmV0dXJuIHggZGl2aWRlZCBieSB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2aWRlX2ludCwiXG5cCitkaXZpZGVfaW50KHgsIHkpIC0gUmV0dXJuIHggZGl2aWRlZCBieSB5LCB0cnVuY2F0ZWQgdG8gYW4gaW50ZWdlci5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2Rpdm1vZCwiXG5cCitkaXZtb2QoeCwgeSkgLSBSZXR1cm4gcXVvdGllbnQgYW5kIHJlbWFpbmRlciBvZiB0aGUgZGl2aXNpb24geCAvIHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9leHAsIlxuXAorZXhwKHgpIC0gUmV0dXJuIGUgKiogeC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2ZtYSwiXG5cCitmbWEoeCwgeSwgeikgLSBSZXR1cm4geCBtdWx0aXBsaWVkIGJ5IHksIHBsdXMgei5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2Nhbm9uaWNhbCwiXG5cCitpc19jYW5vbmljYWwoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGNhbm9uaWNhbCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfZmluaXRlLCJcblwKK2lzX2Zpbml0ZSh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgZmluaXRlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19pbmZpbml0ZSwiXG5cCitpc19pbmZpbml0ZSh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgaW5maW5pdGUsIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX25hbiwiXG5cCitpc19uYW4oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgcU5hTiBvciBzTmFOLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19ub3JtYWwsIlxuXAoraXNfbm9ybWFsKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBhIG5vcm1hbCBudW1iZXIsIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3FuYW4sIlxuXAoraXNfcW5hbih4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBxdWlldCBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3NpZ25lZCwiXG5cCitpc19zaWduZWQoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIG5lZ2F0aXZlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19zbmFuLCJcblwKK2lzX3NuYW4oKSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBzaWduYWxpbmcgTmFOLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19zdWJub3JtYWwsIlxuXAoraXNfc3Vibm9ybWFsKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBzdWJub3JtYWwsIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3plcm8sIlxuXAoraXNfemVybyh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSB6ZXJvLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9sbiwiXG5cCitsbih4KSAtIFJldHVybiB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2YgeC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZzEwLCJcblwKK2xvZzEwKHgpIC0gUmV0dXJuIHRoZSBiYXNlIDEwIGxvZ2FyaXRobSBvZiB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9nYiwiXG5cCitsb2diKHgpIC0gUmV0dXJuIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9hbmQsIlxuXAorbG9naWNhbF9hbmQoeCwgeSkgLSBEaWdpdC13aXNlIGFuZCBvZiB4IGFuZCB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9pbnZlcnQsIlxuXAorbG9naWNhbF9pbnZlcnQoeCkgLSBJbnZlcnQgYWxsIGRpZ2l0cyBvZiB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9vciwiXG5cCitsb2dpY2FsX29yKHgsIHkpIC0gRGlnaXQtd2lzZSBvciBvZiB4IGFuZCB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF94b3IsIlxuXAorbG9naWNhbF94b3IoeCwgeSkgLSBEaWdpdC13aXNlIHhvciBvZiB4IGFuZCB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4LCJcblwKK21heCh4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4X21hZywiXG5cCittYXhfbWFnKHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluLCJcblwKK21pbih4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtaW5pbXVtLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluX21hZywiXG5cCittaW5fbWFnKHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbWludXMsIlxuXAorbWludXMoeCkgLSBNaW51cyBjb3JyZXNwb25kcyB0byB0aGUgdW5hcnkgcHJlZml4IG1pbnVzIG9wZXJhdG9yIGluIFB5dGhvbixcblwKK2J1dCBhcHBsaWVzIHRoZSBjb250ZXh0IHRvIHRoZSByZXN1bHQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9tdWx0aXBseSwiXG5cCittdWx0aXBseSh4LCB5KSAtIFJldHVybiB0aGUgcHJvZHVjdCBvZiB4IGFuZCB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9taW51cywiXG5cCituZXh0X21pbnVzKHgpIC0gUmV0dXJuIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9wbHVzLCJcblwKK25leHRfcGx1cyh4KSAtIFJldHVybiB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgbGFyZ2VyIHRoYW4geC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X25leHRfdG93YXJkLCJcblwKK25leHRfdG93YXJkKHgpIC0gUmV0dXJuIHRoZSBudW1iZXIgY2xvc2VzdCB0byB4LCBpbiB0aGUgZGlyZWN0aW9uIHRvd2FyZHMgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X25vcm1hbGl6ZSwiXG5cCitub3JtYWxpemUoeCkgLSBSZWR1Y2UgeCB0byBpdHMgc2ltcGxlc3QgZm9ybS4gQWxpYXMgZm9yIHJlZHVjZSh4KS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X251bWJlcl9jbGFzcywiXG5cCitudW1iZXJfY2xhc3MoeCkgLSBSZXR1cm4gYW4gaW5kaWNhdGlvbiBvZiB0aGUgY2xhc3Mgb2YgeC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3BsdXMsIlxuXAorcGx1cyh4KSAtIFBsdXMgY29ycmVzcG9uZHMgdG8gdGhlIHVuYXJ5IHByZWZpeCBwbHVzIG9wZXJhdG9yIGluIFB5dGhvbixcblwKK2J1dCBhcHBsaWVzIHRoZSBjb250ZXh0IHRvIHRoZSByZXN1bHQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9wb3dlciwiXG5cCitwb3dlcih4LCB5KSAtIENvbXB1dGUgeCoqeS4gSWYgeCBpcyBuZWdhdGl2ZSwgdGhlbiB5IG11c3QgYmUgaW50ZWdyYWwuXG5cCitUaGUgcmVzdWx0IHdpbGwgYmUgaW5leGFjdCB1bmxlc3MgeSBpcyBpbnRlZ3JhbCBhbmQgdGhlIHJlc3VsdCBpcyBmaW5pdGVcblwKK2FuZCBjYW4gYmUgZXhwcmVzc2VkIGV4YWN0bHkgaW4gJ3ByZWNpc2lvbicgZGlnaXRzLiBJbiB0aGUgUHl0aG9uIHZlcnNpb25cblwKK3RoZSByZXN1bHQgaXMgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLCBpbiB0aGUgQyB2ZXJzaW9uIHRoZSByZXN1bHQgaXNcblwKK2FsbW9zdCBhbHdheXMgY29ycmVjdGx5IHJvdW5kZWQuXG5cCitcblwKK3Bvd2VyKHgsIHksIG0pIC0gQ29tcHV0ZSAoeCoqeSkgJSBtLiBUaGUgZm9sbG93aW5nIHJlc3RyaWN0aW9ucyBob2xkOlxuXAorXG5cCisgICAgKiBhbGwgdGhyZWUgYXJndW1lbnRzIG11c3QgYmUgaW50ZWdyYWxcblwKKyAgICAqIHkgbXVzdCBiZSBub25uZWdhdGl2ZVxuXAorICAgICogYXQgbGVhc3Qgb25lIG9mIHggb3IgeSBtdXN0IGJlIG5vbnplcm9cblwKKyAgICAqIG0gbXVzdCBiZSBub256ZXJvIGFuZCBsZXNzIHRoYW4gMTAqKnByZWMgaW4gYWJzb2x1dGUgdmFsdWVcblwKK1xuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfcXVhbnRpemUsIlxuXAorcXVhbnRpemUoeCwgeSkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB4IChyb3VuZGVkKSwgaGF2aW5nIHRoZSBleHBvbmVudCBvZiB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfcmFkaXgsIlxuXAorcmFkaXgoKSAtIFJldHVybiAxMC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3JlbWFpbmRlciwiXG5cCityZW1haW5kZXIoeCwgeSkgLSBSZXR1cm4gdGhlIHJlbWFpbmRlciBmcm9tIGludGVnZXIgZGl2aXNpb24uIFRoZSBzaWduIG9mXG5cCit0aGUgcmVzdWx0LCBpZiBub24temVybywgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgb3JpZ2luYWwgZGl2aWRlbmQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9yZW1haW5kZXJfbmVhciwiXG5cCityZW1haW5kZXJfbmVhcih4LCB5KSAtIFJldHVybiB4IC0geSAqIG4sIHdoZXJlIG4gaXMgdGhlIGludGVnZXIgbmVhcmVzdCB0aGVcblwKK2V4YWN0IHZhbHVlIG9mIHggLyB5IChpZiB0aGUgcmVzdWx0IGlzIDAgdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZSBzaWduIG9mIHgpLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfcm90YXRlLCJcblwKK3JvdGF0ZSh4LCB5KSAtIFJldHVybiBhIGNvcHkgb2YgeCwgcm90YXRlZCBieSB5IHBsYWNlcy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NhbWVfcXVhbnR1bSwiXG5cCitzYW1lX3F1YW50dW0oeCwgeSkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgdHdvIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9zY2FsZWIsIlxuXAorc2NhbGViKHgsIHkpIC0gUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIGFmdGVyIGFkZGluZyB0aGUgc2Vjb25kIHZhbHVlXG5cCit0byBpdHMgZXhwLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfc2hpZnQsIlxuXAorc2hpZnQoeCwgeSkgLSBSZXR1cm4gYSBjb3B5IG9mIHgsIHNoaWZ0ZWQgYnkgeSBwbGFjZXMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9zcXJ0LCJcblwKK3NxcnQoeCkgLSBTcXVhcmUgcm9vdCBvZiBhIG5vbi1uZWdhdGl2ZSBudW1iZXIgdG8gY29udGV4dCBwcmVjaXNpb24uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9zdWJ0cmFjdCwiXG5cCitzdWJ0cmFjdCh4LCB5KSAtIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHggYW5kIHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19lbmdfc3RyaW5nLCJcblwKK3RvX2VuZ19zdHJpbmcoeCkgLSBDb252ZXJ0IGEgbnVtYmVyIHRvIGEgc3RyaW5nLCB1c2luZyBlbmdpbmVlcmluZyBub3RhdGlvbi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2ludGVncmFsLCJcblwKK3RvX2ludGVncmFsKHgpIC0gSWRlbnRpY2FsIHRvIHRvX2ludGVncmFsX3ZhbHVlKHgpLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9faW50ZWdyYWxfZXhhY3QsIlxuXAordG9faW50ZWdyYWxfZXhhY3QoeCkgLSBSb3VuZCB0byBhbiBpbnRlZ2VyLiBTaWduYWwgaWYgdGhlIHJlc3VsdCBpc1xuXAorcm91bmRlZCBvciBpbmV4YWN0LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9faW50ZWdyYWxfdmFsdWUsIlxuXAordG9faW50ZWdyYWxfdmFsdWUoeCkgLSBSb3VuZCB0byBhbiBpbnRlZ2VyLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9fc2NpX3N0cmluZywiXG5cCit0b19zY2lfc3RyaW5nKHgpIC0gQ29udmVydCBhIG51bWJlciB0byBhIHN0cmluZyB1c2luZyBzY2llbnRpZmljIG5vdGF0aW9uLlxuXAorXG4iKTsKKworCisjZW5kaWYgLyogRE9DU1RSSU5HU19IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL1JFQURNRS50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ4Zjg4YwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDkwIEBACisKKworbGlibXBkZWMKKz09PT09PT09CisKK2xpYm1wZGVjIGlzIGEgZmFzdCBDL0MrKyBsaWJyYXJ5IGZvciBjb3JyZWN0bHktcm91bmRlZCBhcmJpdHJhcnkgcHJlY2lzaW9uCitkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMuIEl0IGlzIGEgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YKK01pa2UgQ293bGlzaGF3L0lCTSdzIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24uCisKKworRmlsZXMgcmVxdWlyZWQgZm9yIHRoZSBQeXRob24gX2RlY2ltYWwgbW9kdWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICBDb3JlIGZpbGVzIGZvciBzbWFsbCBhbmQgbWVkaXVtIHByZWNpc2lvbiBhcml0aG1ldGljCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIGJhc2Vhcml0aC57YyxofSAgLT4gIENvcmUgYXJpdGhtZXRpYyBpbiBiYXNlIDEwKio5IG9yIDEwKioxOS4KKyAgICBiaXRzLmggICAgICAgICAgIC0+ICBQb3J0YWJsZSBkZXRlY3Rpb24gb2YgbGVhc3QvbW9zdCBzaWduaWZpY2FudCBvbmUtYml0LgorICAgIGNvbnN0YW50cy57YyxofSAgLT4gIENvbnN0YW50cyB0aGF0IGFyZSB1c2VkIGluIG11bHRpcGxlIGZpbGVzLgorICAgIGNvbnRleHQuYyAgICAgICAgLT4gIENvbnRleHQgZnVuY3Rpb25zLgorICAgIGlvLntjLGh9ICAgICAgICAgLT4gIENvbnZlcnNpb25zIGJldHdlZW4gbXBkX3QgYW5kIEFTQ0lJIHN0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3QgZm9ybWF0dGluZyAoYWxsb3dzIFVURi04IGZpbGwgY2hhcmFjdGVyKS4KKyAgICBtZW1vcnkue2MsaH0gICAgIC0+ICBBbGxvY2F0aW9uIGhhbmRsZXJzIHdpdGggb3ZlcmZsb3cgZGV0ZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGZ1bmN0aW9ucyBmb3Igc3dpdGNoaW5nIGJldHdlZW4gc3RhdGljCisgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGR5bmFtaWMgbXBkX3QuCisgICAgbXBkZWNpbWFsLntjLGh9ICAtPiAgQWxsIChxdWlldCkgZnVuY3Rpb25zIG9mIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgIHR5cGVhcml0aC5oICAgICAgLT4gIEZhc3QgcHJpbWl0aXZlcyBmb3IgZG91YmxlIHdvcmQgbXVsdGlwbGljYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgZGl2aXNpb24gZXRjLgorCisgICAgVmlzdWFsIFN0dWRpbyBvbmx5OgorICAgIH5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgIHZjY29tcGF0LmggICAgLT4gIHNucHJpbnRmIDw9PT4gc3ByaW50Zl9zIGFuZCBzaW1pbGFyIHRoaW5ncy4KKyAgICAgIHZjc3RkaW50LmggICAgLT4gIHN0ZGludC5oIChpbmNsdWRlZCBpbiBWUyAyMDEwIGJ1dCBub3QgaW4gVlMgMjAwOCkuCisgICAgICB2Y2RpdjY0LmFzbSAgIC0+ICBEb3VibGUgd29yZCBkaXZpc2lvbiB1c2VkIGluIHR5cGVhcml0aC5oLiBWUyAyMDA4IGRvZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhbGxvdyBpbmxpbmUgYXNtIGZvciB4NjQuIEFsc28sIGl0IGRvZXMgbm90IHByb3ZpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuIGludHJpbnNpYyBmb3IgZG91YmxlIHdvcmQgZGl2aXNpb24uCisKKyAgRmlsZXMgZm9yIGJpZ251bSBhcml0aG1ldGljOgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGUgZm9sbG93aW5nIGZpbGVzIGltcGxlbWVudCB0aGUgRmFzdCBOdW1iZXIgVGhlb3JldGljIFRyYW5zZm9ybQorICAgIHVzZWQgZm9yIG11bHRpcGx5aW5nIGNvZWZmaWNpZW50cyB3aXRoIG1vcmUgdGhhbiAxMDI0IHdvcmRzIChzZWUKKyAgICBtcGRlY2ltYWwuYzogX21wZF9mbnRtdWwoKSkuCisKKyAgICAgIHVtb2Rhcml0aC5oICAgICAgICAtPiAgRmFzdCBsb3cgbGV2ZWwgcm91dGluZXMgZm9yIHVuc2lnbmVkIG1vZHVsYXIgYXJpdGhtZXRpYy4KKyAgICAgIG51bWJlcnRoZW9yeS57YyxofSAtPiAgUm91dGluZXMgZm9yIHNldHRpbmcgdXAgdGhlIE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtLgorICAgICAgZGlmcmFkaXgyLntjLGh9ICAgIC0+ICBEZWNpbWF0aW9uIGluIGZyZXF1ZW5jeSB0cmFuc2Zvcm0sIHVzZWQgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYXNlIGNhc2UiIGJ5IHRoZSBmb2xsb3dpbmcgdGhyZWUgZmlsZXM6CisKKyAgICAgICAgZm50LntjLGh9ICAgICAgICAtPiAgVHJhbnNmb3JtIGFycmF5cyB1cCB0byA0MDk2IHdvcmRzLgorICAgICAgICBzaXhzdGVwLntjLGh9ICAgIC0+ICBUcmFuc2Zvcm0gbGFyZ2VyIGFycmF5cyBvZiBsZW5ndGggMioqbi4KKyAgICAgICAgZm91cnN0ZXAue2MsaH0gICAtPiAgVHJhbnNmb3JtIGxhcmdlciBhcnJheXMgb2YgbGVuZ3RoIDMgKiAyKipuLgorCisgICAgICBjb252b2x1dGUue2MsaH0gICAgLT4gIEZhc3QgY29udm9sdXRpb24gdXNpbmcgb25lIG9mIHRoZSB0aHJlZSB0cmFuc2Zvcm0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLgorICAgICAgdHJhbnNwb3NlLntjLGh9ICAgIC0+ICBUcmFuc3Bvc2l0aW9ucyBuZWVkZWQgZm9yIHRoZSBzaXhzdGVwIGFsZ29yaXRobS4KKyAgICAgIGNydC57YyxofSAgICAgICAgICAtPiAgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbTogdXNlIGluZm9ybWF0aW9uIGZyb20gdGhyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtcyBtb2R1bG8gdGhyZWUgZGlmZmVyZW50IHByaW1lcyB0byBnZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIHJlc3VsdC4KKworCitQb2ludGVycyB0byBsaXRlcmF0dXJlLCBwcm9vZnMgYW5kIG1vcmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIGxpdGVyYXR1cmUvCisgIC0tLS0tLS0tLS0tCisKKyAgICBSRUZFUkVOQ0VTLnR4dCAgLT4gIExpc3Qgb2YgcmVsZXZhbnQgcGFwZXJzLgorICAgIGJpZ251bS50eHQgICAgICAtPiAgRXhwbGFuYXRpb24gb2YgdGhlIEZhc3QgTnVtYmVyIFRoZW9yZXRpYyBUcmFuc2Zvcm0gKEZOVCkuCisgICAgZm50LnB5ICAgICAgICAgIC0+ICBWZXJpZnkgY29uc3RhbnRzIHVzZWQgaW4gdGhlIEZOVDsgUHl0aG9uIGRlbW8gZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgTyhOKioyKSBkaXNjcmV0ZSB0cmFuc2Zvcm0uCisKKyAgICBtYXRyaXgtdHJhbnNmb3JtLnR4dCAtPiBQcm9vZiBmb3IgdGhlIE1hdHJpeCBGb3VyaWVyIFRyYW5zZm9ybSB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91cnN0ZXAuYy4KKyAgICBzaXgtc3RlcC50eHQgICAgICAgICAtPiBTaG93IHRoYXQgdGhlIGFsZ29yaXRobSB1c2VkIGluIHNpeHN0ZXAuYyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgdmFyaWFudCBvZiB0aGUgTWF0cml4IEZvdXJpZXIgVHJhbnNmb3JtLgorICAgIG11bG1vZC02NC50eHQgICAgICAgIC0+IFByb29mIGZvciB0aGUgbXVsbW9kNjQgYWxnb3JpdGhtIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bW9kYXJpdGguaC4KKyAgICBtdWxtb2QtcHByby50eHQgICAgICAtPiBQcm9vZiBmb3IgdGhlIHg4NyBGUFUgbW9kdWxhciBtdWx0aXBsaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdW1vZGFyaXRoLmguCisgICAgdW1vZGFyaXRoLmxpc3AgICAgICAgLT4gQUNMMiBwcm9vZnMgZm9yIG1hbnkgZnVuY3Rpb25zIGZyb20gdW1vZGFyaXRoLmguCisgIAorCitMaWJyYXJ5IEF1dGhvcgorPT09PT09PT09PT09PT0KKworICBTdGVmYW4gS3JhaCA8c2tyYWhAYnl0ZXJlZWYub3JnPgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQyMWE3YQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMKQEAgLTAsMCArMSw2NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgInR5cGVhcml0aC5oIgorI2luY2x1ZGUgImJhc2Vhcml0aC5oIgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICBDYWxjdWxhdGlvbnMgaW4gYmFzZSBNUERfUkFESVggICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKgorICogS251dGgsIFRBT0NQLCBWb2x1bWUgMiwgNC4zLjE6CisgKiAgICB3IDo9IHN1bSBvZiB1IChsZW4gbSkgYW5kIHYgKGxlbiBuKQorICogICAgbiA+IDAgYW5kIG0gPj0gbgorICogVGhlIGNhbGxpbmcgZnVuY3Rpb24gaGFzIHRvIGhhbmRsZSBhIHBvc3NpYmxlIGZpbmFsIGNhcnJ5LgorICovCittcGRfdWludF90CitfbXBkX2Jhc2VhZGQobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICBtcGRfc2l6ZV90IG0sIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfdWludF90IHM7CisgICAgbXBkX3VpbnRfdCBjYXJyeSA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG4gPiAwICYmIG0gPj0gbik7CisKKyAgICAvKiBhZGQgbiBtZW1iZXJzIG9mIHUgYW5kIHYgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIHMgPSB1W2ldICsgKHZbaV0gKyBjYXJyeSk7CisgICAgICAgIGNhcnJ5ID0gKHMgPCB1W2ldKSB8IChzID49IE1QRF9SQURJWCk7CisgICAgICAgIHdbaV0gPSBjYXJyeSA/IHMtTVBEX1JBRElYIDogczsKKyAgICB9CisgICAgLyogaWYgdGhlcmUgaXMgYSBjYXJyeSwgcHJvcGFnYXRlIGl0ICovCisgICAgZm9yICg7IGNhcnJ5ICYmIGkgPCBtOyBpKyspIHsKKyAgICAgICAgcyA9IHVbaV0gKyBjYXJyeTsKKyAgICAgICAgY2FycnkgPSAocyA9PSBNUERfUkFESVgpOworICAgICAgICB3W2ldID0gY2FycnkgPyAwIDogczsKKyAgICB9CisgICAgLyogY29weSB0aGUgcmVzdCBvZiB1ICovCisgICAgZm9yICg7IGkgPCBtOyBpKyspIHsKKyAgICAgICAgd1tpXSA9IHVbaV07CisgICAgfQorCisgICAgcmV0dXJuIGNhcnJ5OworfQorCisvKgorICogQWRkIHRoZSBjb250ZW50cyBvZiB1IHRvIHcuIENhcnJpZXMgYXJlIHByb3BhZ2F0ZWQgZnVydGhlci4gVGhlIGNhbGxlcgorICogaGFzIHRvIG1ha2Ugc3VyZSB0aGF0IHcgaXMgYmlnIGVub3VnaC4KKyAqLwordm9pZAorX21wZF9iYXNlYWRkdG8obXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3QgczsKKyAgICBtcGRfdWludF90IGNhcnJ5ID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBpZiAobiA9PSAwKSByZXR1cm47CisKKyAgICAvKiBhZGQgbiBtZW1iZXJzIG9mIHUgdG8gdyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgcyA9IHdbaV0gKyAodVtpXSArIGNhcnJ5KTsKKyAgICAgICAgY2FycnkgPSAocyA8IHdbaV0pIHwgKHMgPj0gTVBEX1JBRElYKTsKKyAgICAgICAgd1tpXSA9IGNhcnJ5ID8gcy1NUERfUkFESVggOiBzOworICAgIH0KKyAgICAvKiBpZiB0aGVyZSBpcyBhIGNhcnJ5LCBwcm9wYWdhdGUgaXQgKi8KKyAgICBmb3IgKDsgY2Fycnk7IGkrKykgeworICAgICAgICBzID0gd1tpXSArIGNhcnJ5OworICAgICAgICBjYXJyeSA9IChzID09IE1QRF9SQURJWCk7CisgICAgICAgIHdbaV0gPSBjYXJyeSA/IDAgOiBzOworICAgIH0KK30KKworLyoKKyAqIEFkZCB2IHRvIHcgKGxlbiBtKS4gVGhlIGNhbGxpbmcgZnVuY3Rpb24gaGFzIHRvIGhhbmRsZSBhIHBvc3NpYmxlCisgKiBmaW5hbCBjYXJyeS4gQXNzdW1wdGlvbjogbSA+IDAuCisgKi8KK21wZF91aW50X3QKK19tcGRfc2hvcnRhZGQobXBkX3VpbnRfdCAqdywgbXBkX3NpemVfdCBtLCBtcGRfdWludF90IHYpCit7CisgICAgbXBkX3VpbnRfdCBzOworICAgIG1wZF91aW50X3QgY2Fycnk7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG0gPiAwKTsKKworICAgIC8qIGFkZCB2IHRvIHcgKi8KKyAgICBzID0gd1swXSArIHY7CisgICAgY2FycnkgPSAocyA8IHYpIHwgKHMgPj0gTVBEX1JBRElYKTsKKyAgICB3WzBdID0gY2FycnkgPyBzLU1QRF9SQURJWCA6IHM7CisKKyAgICAvKiBpZiB0aGVyZSBpcyBhIGNhcnJ5LCBwcm9wYWdhdGUgaXQgKi8KKyAgICBmb3IgKGkgPSAxOyBjYXJyeSAmJiBpIDwgbTsgaSsrKSB7CisgICAgICAgIHMgPSB3W2ldICsgY2Fycnk7CisgICAgICAgIGNhcnJ5ID0gKHMgPT0gTVBEX1JBRElYKTsKKyAgICAgICAgd1tpXSA9IGNhcnJ5ID8gMCA6IHM7CisgICAgfQorCisgICAgcmV0dXJuIGNhcnJ5OworfQorCisvKiBJbmNyZW1lbnQgdS4gVGhlIGNhbGxpbmcgZnVuY3Rpb24gaGFzIHRvIGhhbmRsZSBhIHBvc3NpYmxlIGNhcnJ5LiAqLworbXBkX3VpbnRfdAorX21wZF9iYXNlaW5jcihtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4pCit7CisgICAgbXBkX3VpbnRfdCBzOworICAgIG1wZF91aW50X3QgY2FycnkgPSAxOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChuID4gMCk7CisKKyAgICAvKiBpZiB0aGVyZSBpcyBhIGNhcnJ5LCBwcm9wYWdhdGUgaXQgKi8KKyAgICBmb3IgKGkgPSAwOyBjYXJyeSAmJiBpIDwgbjsgaSsrKSB7CisgICAgICAgIHMgPSB1W2ldICsgY2Fycnk7CisgICAgICAgIGNhcnJ5ID0gKHMgPT0gTVBEX1JBRElYKTsKKyAgICAgICAgdVtpXSA9IGNhcnJ5ID8gMCA6IHM7CisgICAgfQorCisgICAgcmV0dXJuIGNhcnJ5OworfQorCisvKgorICogS251dGgsIFRBT0NQLCBWb2x1bWUgMiwgNC4zLjE6CisgKiAgICAgdyA6PSBkaWZmZXJlbmNlIG9mIHUgKGxlbiBtKSBhbmQgdiAobGVuIG4pLgorICogICAgIG51bWJlciBpbiB1ID49IG51bWJlciBpbiB2OworICovCit2b2lkCitfbXBkX2Jhc2VzdWIobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICBtcGRfc2l6ZV90IG0sIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfdWludF90IGQ7CisgICAgbXBkX3VpbnRfdCBib3Jyb3cgPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChtID4gMCAmJiBuID4gMCk7CisKKyAgICAvKiBzdWJ0cmFjdCBuIG1lbWJlcnMgb2YgdiBmcm9tIHUgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGQgPSB1W2ldIC0gKHZbaV0gKyBib3Jyb3cpOworICAgICAgICBib3Jyb3cgPSAodVtpXSA8IGQpOworICAgICAgICB3W2ldID0gYm9ycm93ID8gZCArIE1QRF9SQURJWCA6IGQ7CisgICAgfQorICAgIC8qIGlmIHRoZXJlIGlzIGEgYm9ycm93LCBwcm9wYWdhdGUgaXQgKi8KKyAgICBmb3IgKDsgYm9ycm93ICYmIGkgPCBtOyBpKyspIHsKKyAgICAgICAgZCA9IHVbaV0gLSBib3Jyb3c7CisgICAgICAgIGJvcnJvdyA9ICh1W2ldID09IDApOworICAgICAgICB3W2ldID0gYm9ycm93ID8gTVBEX1JBRElYLTEgOiBkOworICAgIH0KKyAgICAvKiBjb3B5IHRoZSByZXN0IG9mIHUgKi8KKyAgICBmb3IgKDsgaSA8IG07IGkrKykgeworICAgICAgICB3W2ldID0gdVtpXTsKKyAgICB9Cit9CisKKy8qCisgKiBTdWJ0cmFjdCB0aGUgY29udGVudHMgb2YgdSBmcm9tIHcuIHcgaXMgbGFyZ2VyIHRoYW4gdS4gQm9ycm93cyBhcmUKKyAqIHByb3BhZ2F0ZWQgZnVydGhlciwgYnV0IGV2ZW50dWFsbHkgdyBjYW4gYWJzb3JiIHRoZSBmaW5hbCBib3Jyb3cuCisgKi8KK3ZvaWQKK19tcGRfYmFzZXN1YmZyb20obXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3QgZDsKKyAgICBtcGRfdWludF90IGJvcnJvdyA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgaWYgKG4gPT0gMCkgcmV0dXJuOworCisgICAgLyogc3VidHJhY3QgbiBtZW1iZXJzIG9mIHUgZnJvbSB3ICovCisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBkID0gd1tpXSAtICh1W2ldICsgYm9ycm93KTsKKyAgICAgICAgYm9ycm93ID0gKHdbaV0gPCBkKTsKKyAgICAgICAgd1tpXSA9IGJvcnJvdyA/IGQgKyBNUERfUkFESVggOiBkOworICAgIH0KKyAgICAvKiBpZiB0aGVyZSBpcyBhIGJvcnJvdywgcHJvcGFnYXRlIGl0ICovCisgICAgZm9yICg7IGJvcnJvdzsgaSsrKSB7CisgICAgICAgIGQgPSB3W2ldIC0gYm9ycm93OworICAgICAgICBib3Jyb3cgPSAod1tpXSA9PSAwKTsKKyAgICAgICAgd1tpXSA9IGJvcnJvdyA/IE1QRF9SQURJWC0xIDogZDsKKyAgICB9Cit9CisKKy8qIHcgOj0gcHJvZHVjdCBvZiB1IChsZW4gbikgYW5kIHYgKHNpbmdsZSB3b3JkKSAqLwordm9pZAorX21wZF9zaG9ydG11bChtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sIG1wZF91aW50X3QgdikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IGNhcnJ5ID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobiA+IDApOworCisgICAgZm9yIChpPTA7IGkgPCBuOyBpKyspIHsKKworICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVtpXSwgdik7CisgICAgICAgIGxvID0gY2FycnkgKyBsbzsKKyAgICAgICAgaWYgKGxvIDwgY2FycnkpIGhpKys7CisKKyAgICAgICAgX21wZF9kaXZfd29yZHNfcigmY2FycnksICZ3W2ldLCBoaSwgbG8pOworICAgIH0KKyAgICB3W2ldID0gY2Fycnk7Cit9CisKKy8qCisgKiBLbnV0aCwgVEFPQ1AsIFZvbHVtZSAyLCA0LjMuMToKKyAqICAgICB3IDo9IHByb2R1Y3Qgb2YgdSAobGVuIG0pIGFuZCB2IChsZW4gbikKKyAqICAgICB3IG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gemVybworICovCit2b2lkCitfbXBkX2Jhc2VtdWwobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICBtcGRfc2l6ZV90IG0sIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IGNhcnJ5OworICAgIG1wZF9zaXplX3QgaSwgajsKKworICAgIGFzc2VydChtID4gMCAmJiBuID4gMCk7CisKKyAgICBmb3IgKGo9MDsgaiA8IG47IGorKykgeworICAgICAgICBjYXJyeSA9IDA7CisgICAgICAgIGZvciAoaT0wOyBpIDwgbTsgaSsrKSB7CisKKyAgICAgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1W2ldLCB2W2pdKTsKKyAgICAgICAgICAgIGxvID0gd1tpK2pdICsgbG87CisgICAgICAgICAgICBpZiAobG8gPCB3W2kral0pIGhpKys7CisgICAgICAgICAgICBsbyA9IGNhcnJ5ICsgbG87CisgICAgICAgICAgICBpZiAobG8gPCBjYXJyeSkgaGkrKzsKKworICAgICAgICAgICAgX21wZF9kaXZfd29yZHNfcigmY2FycnksICZ3W2kral0sIGhpLCBsbyk7CisgICAgICAgIH0KKyAgICAgICAgd1tqK21dID0gY2Fycnk7CisgICAgfQorfQorCisvKgorICogS251dGgsIFRBT0NQIFZvbHVtZSAyLCA0LjMuMSwgZXhlcmNpc2UgMTY6CisgKiAgICAgdyA6PSBxdW90aWVudCBvZiB1IChsZW4gbikgZGl2aWRlZCBieSBhIHNpbmdsZSB3b3JkIHYKKyAqLworbXBkX3VpbnRfdAorX21wZF9zaG9ydGRpdihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sIG1wZF91aW50X3QgdikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IHJlbSA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG4gPiAwKTsKKworICAgIGZvciAoaT1uLTE7IGkgIT0gTVBEX1NJWkVfTUFYOyBpLS0pIHsKKworICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgcmVtLCBNUERfUkFESVgpOworICAgICAgICBsbyA9IHVbaV0gKyBsbzsKKyAgICAgICAgaWYgKGxvIDwgdVtpXSkgaGkrKzsKKworICAgICAgICBfbXBkX2Rpdl93b3Jkcygmd1tpXSwgJnJlbSwgaGksIGxvLCB2KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVtOworfQorCisvKgorICogS251dGgsIFRBT0NQIFZvbHVtZSAyLCA0LjMuMToKKyAqICAgICBxLCByIDo9IHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdWNvbnN0IChsZW4gbnBsdXNtKQorICogICAgICAgICAgICAgZGl2aWRlZCBieSB2Y29uc3QgKGxlbiBuKQorICogICAgIG5wbHVzbSA+PSBuCisgKgorICogSWYgciBpcyBub3QgTlVMTCwgciB3aWxsIGNvbnRhaW4gdGhlIHJlbWFpbmRlci4gSWYgciBpcyBOVUxMLCB0aGUKKyAqIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgaWYgdGhlcmUgaXMgYSByZW1haW5kZXI6IDEgZm9yIHRydWUsIDAgZm9yCisgKiBmYWxzZS4gIEEgcmV0dXJuIHZhbHVlIG9mIC0xIGluZGljYXRlcyBhbiBlcnJvci4KKyAqLworaW50CitfbXBkX2Jhc2VkaXZtb2QobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfdWludF90ICp1Y29uc3QsIGNvbnN0IG1wZF91aW50X3QgKnZjb25zdCwKKyAgICAgICAgICAgICAgICBtcGRfc2l6ZV90IG5wbHVzbSwgbXBkX3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3QgdXN0YXRpY1tNUERfTUlOQUxMT0NfTUFYXTsKKyAgICBtcGRfdWludF90IHZzdGF0aWNbTVBEX01JTkFMTE9DX01BWF07CisgICAgbXBkX3VpbnRfdCAqdSA9IHVzdGF0aWM7CisgICAgbXBkX3VpbnRfdCAqdiA9IHZzdGF0aWM7CisgICAgbXBkX3VpbnRfdCBkLCBxaGF0LCByaGF0LCB3MlsyXTsKKyAgICBtcGRfdWludF90IGhpLCBsbywgeDsKKyAgICBtcGRfdWludF90IGNhcnJ5OworICAgIG1wZF9zaXplX3QgaSwgaiwgbTsKKyAgICBpbnQgcmV0dmFsID0gMDsKKworICAgIGFzc2VydChuID4gMSAmJiBucGx1c20gPj0gbik7CisgICAgbSA9IHN1Yl9zaXplX3QobnBsdXNtLCBuKTsKKworICAgIC8qIEQxOiBub3JtYWxpemUgKi8KKyAgICBkID0gTVBEX1JBRElYIC8gKHZjb25zdFtuLTFdICsgMSk7CisKKyAgICBpZiAobnBsdXNtID49IE1QRF9NSU5BTExPQ19NQVgpIHsKKyAgICAgICAgaWYgKCh1ID0gbXBkX2FsbG9jKG5wbHVzbSsxLCBzaXplb2YgKnUpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG4gPj0gTVBEX01JTkFMTE9DX01BWCkgeworICAgICAgICBpZiAoKHYgPSBtcGRfYWxsb2MobisxLCBzaXplb2YgKnYpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBtcGRfZnJlZSh1KTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9tcGRfc2hvcnRtdWwodSwgdWNvbnN0LCBucGx1c20sIGQpOworICAgIF9tcGRfc2hvcnRtdWwodiwgdmNvbnN0LCBuLCBkKTsKKworICAgIC8qIEQyOiBsb29wICovCisgICAgZm9yIChqPW07IGogIT0gTVBEX1NJWkVfTUFYOyBqLS0pIHsKKworICAgICAgICAvKiBEMzogY2FsY3VsYXRlIHFoYXQgYW5kIHJoYXQgKi8KKyAgICAgICAgcmhhdCA9IF9tcGRfc2hvcnRkaXYodzIsIHUraituLTEsIDIsIHZbbi0xXSk7CisgICAgICAgIHFoYXQgPSB3MlsxXSAqIE1QRF9SQURJWCArIHcyWzBdOworCisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBpZiAocWhhdCA8IE1QRF9SQURJWCkgeworICAgICAgICAgICAgICAgIF9tcGRfc2luZ2xlbXVsKHcyLCBxaGF0LCB2W24tMl0pOworICAgICAgICAgICAgICAgIGlmICh3MlsxXSA8PSByaGF0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3MlsxXSAhPSByaGF0IHx8IHcyWzBdIDw9IHVbaituLTJdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHFoYXQgLT0gMTsKKyAgICAgICAgICAgIHJoYXQgKz0gdltuLTFdOworICAgICAgICAgICAgaWYgKHJoYXQgPCB2W24tMV0gfHwgcmhhdCA+PSBNUERfUkFESVgpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBENDogbXVsdGlwbHkgYW5kIHN1YnRyYWN0ICovCisgICAgICAgIGNhcnJ5ID0gMDsKKyAgICAgICAgZm9yIChpPTA7IGkgPD0gbjsgaSsrKSB7CisKKyAgICAgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCBxaGF0LCB2W2ldKTsKKworICAgICAgICAgICAgbG8gPSBjYXJyeSArIGxvOworICAgICAgICAgICAgaWYgKGxvIDwgY2FycnkpIGhpKys7CisKKyAgICAgICAgICAgIF9tcGRfZGl2X3dvcmRzX3IoJmhpLCAmbG8sIGhpLCBsbyk7CisKKyAgICAgICAgICAgIHggPSB1W2kral0gLSBsbzsKKyAgICAgICAgICAgIGNhcnJ5ID0gKHVbaStqXSA8IHgpOworICAgICAgICAgICAgdVtpK2pdID0gY2FycnkgPyB4K01QRF9SQURJWCA6IHg7CisgICAgICAgICAgICBjYXJyeSArPSBoaTsKKyAgICAgICAgfQorICAgICAgICBxW2pdID0gcWhhdDsKKyAgICAgICAgLyogRDU6IHRlc3QgcmVtYWluZGVyICovCisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgcVtqXSAtPSAxOworICAgICAgICAgICAgLyogRDY6IGFkZCBiYWNrICovCisgICAgICAgICAgICAodm9pZClfbXBkX2Jhc2VhZGQodStqLCB1K2osIHYsIG4rMSwgbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBEODogdW5ub3JtYWxpemUgKi8KKyAgICBpZiAociAhPSBOVUxMKSB7CisgICAgICAgIF9tcGRfc2hvcnRkaXYociwgdSwgbiwgZCk7CisgICAgICAgIC8qIHdlIGFyZSBub3QgaW50ZXJlc3RlZCBpbiB0aGUgcmV0dXJuIHZhbHVlIGhlcmUgKi8KKyAgICAgICAgcmV0dmFsID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHZhbCA9ICFfbXBkX2lzYWxsemVybyh1LCBuKTsKKyAgICB9CisKKworaWYgKHUgIT0gdXN0YXRpYykgbXBkX2ZyZWUodSk7CitpZiAodiAhPSB2c3RhdGljKSBtcGRfZnJlZSh2KTsKK3JldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBMZWZ0IHNoaWZ0IG9mIHNyYyBieSAnc2hpZnQnIGRpZ2l0czsgc3JjIG1heSBlcXVhbCBkZXN0LgorICoKKyAqICBkZXN0IDo9IGFyZWEgb2YgbiBtcGRfdWludF90IHdpdGggc3BhY2UgZm9yIHNyY2RpZ2l0cytzaGlmdCBkaWdpdHMuCisgKiAgc3JjICA6PSBjb2VmZmljaWVudCB3aXRoIGxlbmd0aCBtLgorICoKKyAqIFRoZSBjYXNlIHNwbGl0cyBpbiB0aGUgZnVuY3Rpb24gYXJlIG5vbi1vYnZpb3VzLiBUaGUgZm9sbG93aW5nCisgKiBlcXVhdGlvbnMgbWlnaHQgaGVscDoKKyAqCisgKiAgTGV0IG1zZGlnaXRzIGRlbm90ZSB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgbW9zdCBzaWduaWZpY2FudAorICogIHdvcmQgb2Ygc3JjLiBUaGVuIDEgPD0gbXNkaWdpdHMgPD0gcmRpZ2l0cy4KKyAqCisgKiAgIDEpIHNoaWZ0ID0gcSAqIHJkaWdpdHMgKyByCisgKiAgIDIpIHNyY2RpZ2l0cyA9IHFzcmMgKiByZGlnaXRzICsgbXNkaWdpdHMKKyAqICAgMykgZGVzdGRpZ2l0cyA9IHNoaWZ0ICsgc3JjZGlnaXRzCisgKiAgICAgICAgICAgICAgICAgPSBxICogcmRpZ2l0cyArIHIgKyBxc3JjICogcmRpZ2l0cyArIG1zZGlnaXRzCisgKiAgICAgICAgICAgICAgICAgPSBxICogcmRpZ2l0cyArIChxc3JjICogcmRpZ2l0cyArIChyICsgbXNkaWdpdHMpKQorICoKKyAqICBUaGUgcmVzdWx0IGhhcyBxIHplcm8gd29yZHMsIGZvbGxvd2VkIGJ5IHRoZSBjb2VmZmljaWVudCB0aGF0CisgKiAgaXMgbGVmdC1zaGlmdGVkIGJ5IHIuIFRoZSBjYXNlIHIgPT0gMCBpcyB0cml2aWFsLiBGb3IgciA+IDAsIGl0CisgKiAgaXMgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCB0aGF0IHdlIGFsd2F5cyByZWFkIG0gc291cmNlIHdvcmRzLAorICogIGJ1dCB3cml0ZSBtKzEgZGVzdGluYXRpb24gd29yZHMgaWYgciArIG1zZGlnaXRzID4gcmRpZ2l0cywgbSB3b3JkcworICogIG90aGVyd2lzZS4KKyAqLwordm9pZAorX21wZF9iYXNlc2hpZnRsKG1wZF91aW50X3QgKmRlc3QsIG1wZF91aW50X3QgKnNyYywgbXBkX3NpemVfdCBuLCBtcGRfc2l6ZV90IG0sCisgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBzaGlmdCkKK3sKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgLyogc3B1cmlvdXMgdW5pbml0aWFsaXplZCB3YXJuaW5ncyAqLworICAgIG1wZF91aW50X3QgbD1sLCBscHJldj1scHJldiwgaD1oOworI2Vsc2UKKyAgICBtcGRfdWludF90IGwsIGxwcmV2LCBoOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBxLCByOworICAgIG1wZF91aW50X3QgcGg7CisKKyAgICBhc3NlcnQobSA+IDAgJiYgbiA+PSBtKTsKKworICAgIF9tcGRfZGl2X3dvcmQoJnEsICZyLCAobXBkX3VpbnRfdClzaGlmdCwgTVBEX1JESUdJVFMpOworCisgICAgaWYgKHIgIT0gMCkgeworCisgICAgICAgIHBoID0gbXBkX3BvdzEwW3JdOworCisgICAgICAgIC0tbTsgLS1uOworICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmaCwgJmxwcmV2LCBzcmNbbS0tXSwgTVBEX1JESUdJVFMtcik7CisgICAgICAgIGlmIChoICE9IDApIHsgLyogciArIG1zZGlnaXRzID4gcmRpZ2l0cyA8PT0+IGggIT0gMCAqLworICAgICAgICAgICAgZGVzdFtuLS1dID0gaDsKKyAgICAgICAgfQorICAgICAgICAvKiB3cml0ZSBtLTEgc2hpZnRlZCB3b3JkcyAqLworICAgICAgICBmb3IgKDsgbSAhPSBNUERfU0laRV9NQVg7IG0tLSxuLS0pIHsKKyAgICAgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZoLCAmbCwgc3JjW21dLCBNUERfUkRJR0lUUy1yKTsKKyAgICAgICAgICAgIGRlc3Rbbl0gPSBwaCAqIGxwcmV2ICsgaDsKKyAgICAgICAgICAgIGxwcmV2ID0gbDsKKyAgICAgICAgfQorICAgICAgICAvKiB3cml0ZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkICovCisgICAgICAgIGRlc3RbcV0gPSBwaCAqIGxwcmV2OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd2hpbGUgKC0tbSAhPSBNUERfU0laRV9NQVgpIHsKKyAgICAgICAgICAgIGRlc3RbbStxXSA9IHNyY1ttXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF91aW50X3plcm8oZGVzdCwgcSk7Cit9CisKKy8qCisgKiBSaWdodCBzaGlmdCBvZiBzcmMgYnkgJ3NoaWZ0JyBkaWdpdHM7IHNyYyBtYXkgZXF1YWwgZGVzdC4KKyAqIEFzc3VtcHRpb246IHNyY2RpZ2l0cy1zaGlmdCA+IDAuCisgKgorICogIGRlc3QgOj0gYXJlYSB3aXRoIHNwYWNlIGZvciBzcmNkaWdpdHMtc2hpZnQgZGlnaXRzLgorICogIHNyYyAgOj0gY29lZmZpY2llbnQgd2l0aCBsZW5ndGggJ3NsZW4nLgorICoKKyAqIFRoZSBjYXNlIHNwbGl0cyBpbiB0aGUgZnVuY3Rpb24gcmVseSBvbiB0aGUgZm9sbG93aW5nIGVxdWF0aW9uczoKKyAqCisgKiAgTGV0IG1zZGlnaXRzIGRlbm90ZSB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgbW9zdCBzaWduaWZpY2FudAorICogIHdvcmQgb2Ygc3JjLiBUaGVuIDEgPD0gbXNkaWdpdHMgPD0gcmRpZ2l0cy4KKyAqCisgKiAgMSkgc2hpZnQgPSBxICogcmRpZ2l0cyArIHIKKyAqICAyKSBzcmNkaWdpdHMgPSBxc3JjICogcmRpZ2l0cyArIG1zZGlnaXRzCisgKiAgMykgZGVzdGRpZ2l0cyA9IHNyY2RpZ2l0cyAtIHNoaWZ0CisgKiAgICAgICAgICAgICAgICA9IHFzcmMgKiByZGlnaXRzICsgbXNkaWdpdHMgLSAocSAqIHJkaWdpdHMgKyByKQorICogICAgICAgICAgICAgICAgPSAocXNyYyAtIHEpICogcmRpZ2l0cyArIG1zZGlnaXRzIC0gcgorICoKKyAqIFNpbmNlIGRlc3RkaWdpdHMgPiAwIGFuZCAxIDw9IG1zZGlnaXRzIDw9IHJkaWdpdHM6CisgKgorICogIDQpIHFzcmMgPj0gcQorICogIDUpIHFzcmMgPT0gcSAgPT0+ICBtc2RpZ2l0cyA+IHIKKyAqCisgKiBUaGUgcmVzdWx0IGhhcyBzbGVuLXEgd29yZHMgaWYgbXNkaWdpdHMgPiByLCBzbGVuLXEtMSB3b3JkcyBvdGhlcndpc2UuCisgKi8KK21wZF91aW50X3QKK19tcGRfYmFzZXNoaWZ0cihtcGRfdWludF90ICpkZXN0LCBtcGRfdWludF90ICpzcmMsIG1wZF9zaXplX3Qgc2xlbiwKKyAgICAgICAgICAgICAgICBtcGRfc2l6ZV90IHNoaWZ0KQoreworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAvKiBzcHVyaW91cyB1bmluaXRpYWxpemVkIHdhcm5pbmdzICovCisgICAgbXBkX3VpbnRfdCBsPWwsIGg9aCwgaHByZXY9aHByZXY7IC8qIGxvdywgaGlnaCwgcHJldmlvdXMgaGlnaCAqLworI2Vsc2UKKyAgICBtcGRfdWludF90IGwsIGgsIGhwcmV2OyAvKiBsb3csIGhpZ2gsIHByZXZpb3VzIGhpZ2ggKi8KKyNlbmRpZgorICAgIG1wZF91aW50X3Qgcm5kLCByZXN0OyAgIC8qIHJvdW5kaW5nIGRpZ2l0LCByZXN0ICovCisgICAgbXBkX3VpbnRfdCBxLCByOworICAgIG1wZF9zaXplX3QgaSwgajsKKyAgICBtcGRfdWludF90IHBoOworCisgICAgYXNzZXJ0KHNsZW4gPiAwKTsKKworICAgIF9tcGRfZGl2X3dvcmQoJnEsICZyLCAobXBkX3VpbnRfdClzaGlmdCwgTVBEX1JESUdJVFMpOworCisgICAgcm5kID0gcmVzdCA9IDA7CisgICAgaWYgKHIgIT0gMCkgeworCisgICAgICAgIHBoID0gbXBkX3BvdzEwW01QRF9SRElHSVRTLXJdOworCisgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZocHJldiwgJnJlc3QsIHNyY1txXSwgcik7CisgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZybmQsICZyZXN0LCByZXN0LCByLTEpOworCisgICAgICAgIGlmIChyZXN0ID09IDAgJiYgcSA+IDApIHsKKyAgICAgICAgICAgIHJlc3QgPSAhX21wZF9pc2FsbHplcm8oc3JjLCBxKTsKKyAgICAgICAgfQorICAgICAgICAvKiB3cml0ZSBzbGVuLXEtMSB3b3JkcyAqLworICAgICAgICBmb3IgKGo9MCxpPXErMTsgaTxzbGVuOyBpKyssaisrKSB7CisgICAgICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmaCwgJmwsIHNyY1tpXSwgcik7CisgICAgICAgICAgICBkZXN0W2pdID0gcGggKiBsICsgaHByZXY7CisgICAgICAgICAgICBocHJldiA9IGg7CisgICAgICAgIH0KKyAgICAgICAgLyogd3JpdGUgbW9zdCBzaWduaWZpY2FudCB3b3JkICovCisgICAgICAgIGlmIChocHJldiAhPSAwKSB7IC8qIGFsd2F5cyB0aGUgY2FzZSBpZiBzbGVuPT1xLTEgKi8KKyAgICAgICAgICAgIGRlc3Rbal0gPSBocHJldjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHEgPiAwKSB7CisgICAgICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmcm5kLCAmcmVzdCwgc3JjW3EtMV0sIE1QRF9SRElHSVRTLTEpOworICAgICAgICAgICAgLyogaXMgdGhlcmUgYW55IG5vbi16ZXJvIGRpZ2l0IGJlbG93IHJuZD8gKi8KKyAgICAgICAgICAgIGlmIChyZXN0ID09IDApIHJlc3QgPSAhX21wZF9pc2FsbHplcm8oc3JjLCBxLTEpOworICAgICAgICB9CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBzbGVuLXE7IGorKykgeworICAgICAgICAgICAgZGVzdFtqXSA9IHNyY1txK2pdOworICAgICAgICB9CisgICAgfQorCisgICAgLyogMC00ICA9PT4gcm5kK3Jlc3QgPCAwLjUgICAqLworICAgIC8qIDUgICAgPT0+IHJuZCtyZXN0ID09IDAuNSAgKi8KKyAgICAvKiA2LTkgID09PiBybmQrcmVzdCA+IDAuNSAgICovCisgICAgcmV0dXJuIChybmQgPT0gMCB8fCBybmQgPT0gNSkgPyBybmQgKyAhIXJlc3QgOiBybmQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgIENhbGN1bGF0aW9ucyBpbiBiYXNlIGIgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQWRkIHYgdG8gdyAobGVuIG0pLiBUaGUgY2FsbGluZyBmdW5jdGlvbiBoYXMgdG8gaGFuZGxlIGEgcG9zc2libGUKKyAqIGZpbmFsIGNhcnJ5LiBBc3N1bXB0aW9uOiBtID4gMC4KKyAqLworbXBkX3VpbnRfdAorX21wZF9zaG9ydGFkZF9iKG1wZF91aW50X3QgKncsIG1wZF9zaXplX3QgbSwgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3VpbnRfdCBzOworICAgIG1wZF91aW50X3QgY2Fycnk7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG0gPiAwKTsKKworICAgIC8qIGFkZCB2IHRvIHcgKi8KKyAgICBzID0gd1swXSArIHY7CisgICAgY2FycnkgPSAocyA8IHYpIHwgKHMgPj0gYik7CisgICAgd1swXSA9IGNhcnJ5ID8gcy1iIDogczsKKworICAgIC8qIGlmIHRoZXJlIGlzIGEgY2FycnksIHByb3BhZ2F0ZSBpdCAqLworICAgIGZvciAoaSA9IDE7IGNhcnJ5ICYmIGkgPCBtOyBpKyspIHsKKyAgICAgICAgcyA9IHdbaV0gKyBjYXJyeTsKKyAgICAgICAgY2FycnkgPSAocyA9PSBiKTsKKyAgICAgICAgd1tpXSA9IGNhcnJ5ID8gMCA6IHM7CisgICAgfQorCisgICAgcmV0dXJuIGNhcnJ5OworfQorCisvKiB3IDo9IHByb2R1Y3Qgb2YgdSAobGVuIG4pIGFuZCB2IChzaW5nbGUgd29yZCkuIFJldHVybiBjYXJyeS4gKi8KK21wZF91aW50X3QKK19tcGRfc2hvcnRtdWxfYyhtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sIG1wZF91aW50X3QgdikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IGNhcnJ5ID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobiA+IDApOworCisgICAgZm9yIChpPTA7IGkgPCBuOyBpKyspIHsKKworICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVtpXSwgdik7CisgICAgICAgIGxvID0gY2FycnkgKyBsbzsKKyAgICAgICAgaWYgKGxvIDwgY2FycnkpIGhpKys7CisKKyAgICAgICAgX21wZF9kaXZfd29yZHNfcigmY2FycnksICZ3W2ldLCBoaSwgbG8pOworICAgIH0KKworICAgIHJldHVybiBjYXJyeTsKK30KKworLyogdyA6PSBwcm9kdWN0IG9mIHUgKGxlbiBuKSBhbmQgdiAoc2luZ2xlIHdvcmQpICovCittcGRfdWludF90CitfbXBkX3Nob3J0bXVsX2IobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuLAorICAgICAgICAgICAgICAgIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBiKQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworICAgIG1wZF91aW50X3QgY2FycnkgPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChuID4gMCk7CisKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworCisgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1W2ldLCB2KTsKKyAgICAgICAgbG8gPSBjYXJyeSArIGxvOworICAgICAgICBpZiAobG8gPCBjYXJyeSkgaGkrKzsKKworICAgICAgICBfbXBkX2Rpdl93b3JkcygmY2FycnksICZ3W2ldLCBoaSwgbG8sIGIpOworICAgIH0KKworICAgIHJldHVybiBjYXJyeTsKK30KKworLyoKKyAqIEtudXRoLCBUQU9DUCBWb2x1bWUgMiwgNC4zLjEsIGV4ZXJjaXNlIDE2OgorICogICAgIHcgOj0gcXVvdGllbnQgb2YgdSAobGVuIG4pIGRpdmlkZWQgYnkgYSBzaW5nbGUgd29yZCB2CisgKi8KK21wZF91aW50X3QKK19tcGRfc2hvcnRkaXZfYihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisgICAgbXBkX3VpbnRfdCByZW0gPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChuID4gMCk7CisKKyAgICBmb3IgKGk9bi0xOyBpICE9IE1QRF9TSVpFX01BWDsgaS0tKSB7CisKKyAgICAgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHJlbSwgYik7CisgICAgICAgIGxvID0gdVtpXSArIGxvOworICAgICAgICBpZiAobG8gPCB1W2ldKSBoaSsrOworCisgICAgICAgIF9tcGRfZGl2X3dvcmRzKCZ3W2ldLCAmcmVtLCBoaSwgbG8sIHYpOworICAgIH0KKworICAgIHJldHVybiByZW07Cit9CisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDA0YjJjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguaApAQCAtMCwwICsxLDIxNSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBCQVNFQVJJVEhfSAorI2RlZmluZSBCQVNFQVJJVEhfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgInR5cGVhcml0aC5oIgorCisKK21wZF91aW50X3QgX21wZF9iYXNlYWRkKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIGNvbnN0IG1wZF91aW50X3QgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICBtcGRfc2l6ZV90IG0sIG1wZF9zaXplX3Qgbik7Cit2b2lkIF9tcGRfYmFzZWFkZHRvKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3Qgbik7CittcGRfdWludF90IF9tcGRfc2hvcnRhZGQobXBkX3VpbnRfdCAqdywgbXBkX3NpemVfdCBtLCBtcGRfdWludF90IHYpOworbXBkX3VpbnRfdCBfbXBkX3Nob3J0YWRkX2IobXBkX3VpbnRfdCAqdywgbXBkX3NpemVfdCBtLCBtcGRfdWludF90IHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGRfdWludF90IGIpOworbXBkX3VpbnRfdCBfbXBkX2Jhc2VpbmNyKG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3Qgbik7Cit2b2lkIF9tcGRfYmFzZXN1YihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBtLCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX2Jhc2VzdWJmcm9tKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3Qgbik7Cit2b2lkIF9tcGRfYmFzZW11bChtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBtLCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX3Nob3J0bXVsKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICBtcGRfdWludF90IHYpOworbXBkX3VpbnRfdCBfbXBkX3Nob3J0bXVsX2MobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB2KTsKK21wZF91aW50X3QgX21wZF9zaG9ydG11bF9iKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBiKTsKK21wZF91aW50X3QgX21wZF9zaG9ydGRpdihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB2KTsKK21wZF91aW50X3QgX21wZF9zaG9ydGRpdl9iKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBiKTsKK2ludCBfbXBkX2Jhc2VkaXZtb2QobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgY29uc3QgbXBkX3VpbnRfdCAqdWNvbnN0LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfdWludF90ICp2Y29uc3QsIG1wZF9zaXplX3QgbnBsdXNtLCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX2Jhc2VzaGlmdGwobXBkX3VpbnRfdCAqZGVzdCwgbXBkX3VpbnRfdCAqc3JjLCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgICBtcGRfc2l6ZV90IG0sIG1wZF9zaXplX3Qgc2hpZnQpOworbXBkX3VpbnRfdCBfbXBkX2Jhc2VzaGlmdHIobXBkX3VpbnRfdCAqZGVzdCwgbXBkX3VpbnRfdCAqc3JjLCBtcGRfc2l6ZV90IHNsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGRfc2l6ZV90IHNoaWZ0KTsKKworCisKKyNpZmRlZiBDT05GSUdfNjQKK2V4dGVybiBjb25zdCBtcGRfdWludF90IG1wcmltZV9yZHg7CisKKy8qCisgKiBBbGdvcml0aG0gZnJvbTogRGl2aXNpb24gYnkgSW52YXJpYW50IEludGVnZXJzIHVzaW5nIE11bHRpcGxpY2F0aW9uLAorICogVC4gR3Jhbmx1bmQgYW5kIFAuIEwuIE1vbnRnb21lcnksIFByb2NlZWRpbmdzIG9mIHRoZSBTSUdQTEFOICc5NAorICogQ29uZmVyZW5jZSBvbiBQcm9ncmFtbWluZyBMYW5ndWFnZSBEZXNpZ24gYW5kIEltcGxlbWVudGF0aW9uLgorICoKKyAqIGh0dHA6Ly9nbXBsaWIub3JnL350ZWdlL2RpdmNuc3QtcGxkaTk0LnBkZgorICoKKyAqIFZhcmlhYmxlcyBmcm9tIHRoZSBwYXBlciBhbmQgdGhlaXIgdHJhbnNsYXRpb25zIChTZWUgc2VjdGlvbiA4KToKKyAqCisgKiAgTiA6PSA2NAorICogIGQgOj0gTVBEX1JBRElYCisgKiAgbCA6PSA2NAorICogIG0nIDo9IGZsb29yKCgyKiooNjQrNjQpIC0gMSkvTVBEX1JBRElYKSAtIDIqKjY0CisgKgorICogU2luY2UgTi1sID09IDA6CisgKgorICogIGRub3JtIDo9IGQKKyAqICBuMiA6PSBoaQorICogIG4xMCA6PSBsbworICoKKyAqIEFDTDIgcHJvb2Y6IG1wZC1kaXYtd29yZHMtci1jb3JyZWN0CisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHNfcihtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvKQoreworICAgIG1wZF91aW50X3Qgbl9hZGosIGgsIGwsIHQ7CisgICAgbXBkX3VpbnRfdCBuMV9uZWc7CisKKyAgICAvKiBuMV9uZWcgPSBpZiBsbyA+PSAyKio2MyB0aGVuIE1QRF9VSU5UX01BWCBlbHNlIDAgKi8KKyAgICBuMV9uZWcgPSAobG8gJiAoMVVMTDw8NjMpKSA/IE1QRF9VSU5UX01BWCA6IDA7CisgICAgLyogbl9hZGogPSBpZiBsbyA+PSAyKio2MyB0aGVuIGxvK01QRF9SQURJWCBlbHNlIGxvICovCisgICAgbl9hZGogPSBsbyArIChuMV9uZWcgJiBNUERfUkFESVgpOworCisgICAgLyogKGgsIGwpID0gaWYgbG8gPj0gMioqNjMgdGhlbiBtJyooaGkrMSkgZWxzZSBtJypoaSAqLworICAgIF9tcGRfbXVsX3dvcmRzKCZoLCAmbCwgbXByaW1lX3JkeCwgaGktbjFfbmVnKTsKKyAgICBsID0gbCArIG5fYWRqOworICAgIGlmIChsIDwgbl9hZGopIGgrKzsKKyAgICB0ID0gaCArIGhpOworICAgIC8qIEF0IHRoaXMgcG9pbnQgdCA9PSBxZXN0LCB3aXRoIHEgPT0gcWVzdCBvciBxID09IHFlc3QrMToKKyAgICAgKiAgIDEpIDAgPD0gMioqNjQqaGkgKyBsbyAtIHFlc3QqTVBEX1JBRElYIDwgMipNUERfUkFESVgKKyAgICAgKi8KKworICAgIC8qIHQgPSAyKio2NC0xIC0gcWVzdCA9IDIqKjY0IC0gKHFlc3QrMSkgKi8KKyAgICB0ID0gTVBEX1VJTlRfTUFYIC0gdDsKKworICAgIC8qIChoLCBsKSA9IDIqKjY0Kk1QRF9SQURJWCAtIChxZXN0KzEpKk1QRF9SQURJWCAqLworICAgIF9tcGRfbXVsX3dvcmRzKCZoLCAmbCwgdCwgTVBEX1JBRElYKTsKKyAgICBsID0gbCArIGxvOworICAgIGlmIChsIDwgbG8pIGgrKzsKKyAgICBoICs9IGhpOworICAgIGggLT0gTVBEX1JBRElYOworICAgIC8qIChoLCBsKSA9IDIqKjY0KmhpICsgbG8gLSAocWVzdCsxKSpNUERfUkFESVggKG1vZCAyKioxMjgpCisgICAgICogQ2FzZSBxID09IHFlc3QrMToKKyAgICAgKiAgICAgYSkgaCA9PSAwLCBsID09IHIKKyAgICAgKiAgICAgYikgcSA6PSBoIC0gdCA9PSBxZXN0KzEKKyAgICAgKiAgICAgYykgciA6PSBsCisgICAgICogQ2FzZSBxID09IHFlc3Q6CisgICAgICogICAgIGEpIGggPT0gTVBEX1VJTlRfTUFYLCBsID09IDIqKjY0LShNUERfUkFESVgtcikKKyAgICAgKiAgICAgYikgcSA6PSBoIC0gdCA9PSBxZXN0CisgICAgICogICAgIGMpIHIgOj0gbCArIE1QRF9SQURJWCA9IHIKKyAgICAgKi8KKworICAgICpxID0gKGggLSB0KTsKKyAgICAqciA9IGwgKyAoTVBEX1JBRElYICYgaCk7Cit9CisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3Jkc19yKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8pCit7CisgICAgX21wZF9kaXZfd29yZHMocSwgciwgaGksIGxvLCBNUERfUkFESVgpOworfQorI2VuZGlmCisKKworLyogTXVsdGlwbHkgdHdvIHNpbmdsZSBiYXNlIE1QRF9SQURJWCB3b3Jkcywgc3RvcmUgcmVzdWx0IGluIGFycmF5IHdbMl0uICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfc2luZ2xlbXVsKG1wZF91aW50X3Qgd1syXSwgbXBkX3VpbnRfdCB1LCBtcGRfdWludF90IHYpCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdSwgdik7CisgICAgX21wZF9kaXZfd29yZHNfcigmd1sxXSwgJndbMF0sIGhpLCBsbyk7Cit9CisKKy8qIE11bHRpcGx5IHUgKGxlbiAyKSBhbmQgdiAobGVuIG0sIDEgPD0gbSA8PSAyKS4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfMl9sZTIobXBkX3VpbnRfdCB3WzRdLCBtcGRfdWludF90IHVbMl0sIG1wZF91aW50X3QgdlsyXSwgbXBkX3NzaXplX3QgbSkKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1WzBdLCB2WzBdKTsKKyAgICBfbXBkX2Rpdl93b3Jkc19yKCZ3WzFdLCAmd1swXSwgaGksIGxvKTsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1WzFdLCB2WzBdKTsKKyAgICBsbyA9IHdbMV0gKyBsbzsKKyAgICBpZiAobG8gPCB3WzFdKSBoaSsrOworICAgIF9tcGRfZGl2X3dvcmRzX3IoJndbMl0sICZ3WzFdLCBoaSwgbG8pOworICAgIGlmIChtID09IDEpIHJldHVybjsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1WzBdLCB2WzFdKTsKKyAgICBsbyA9IHdbMV0gKyBsbzsKKyAgICBpZiAobG8gPCB3WzFdKSBoaSsrOworICAgIF9tcGRfZGl2X3dvcmRzX3IoJndbM10sICZ3WzFdLCBoaSwgbG8pOworCisgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHVbMV0sIHZbMV0pOworICAgIGxvID0gd1syXSArIGxvOworICAgIGlmIChsbyA8IHdbMl0pIGhpKys7CisgICAgbG8gPSB3WzNdICsgbG87CisgICAgaWYgKGxvIDwgd1szXSkgaGkrKzsKKyAgICBfbXBkX2Rpdl93b3Jkc19yKCZ3WzNdLCAmd1syXSwgaGksIGxvKTsKK30KKworCisvKgorICogVGVzdCBpZiBhbGwgd29yZHMgZnJvbSBkYXRhW2xlbi0xXSB0byBkYXRhWzBdIGFyZSB6ZXJvLiBJZiBsZW4gaXMgMCwgbm90aGluZworICogaXMgdGVzdGVkIGFuZCB0aGUgY29lZmZpY2llbnQgaXMgcmVnYXJkZWQgYXMgImFsbCB6ZXJvIi4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK19tcGRfaXNhbGx6ZXJvKGNvbnN0IG1wZF91aW50X3QgKmRhdGEsIG1wZF9zc2l6ZV90IGxlbikKK3sKKyAgICB3aGlsZSAoLS1sZW4gPj0gMCkgeworICAgICAgICBpZiAoZGF0YVtsZW5dICE9IDApIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIFRlc3QgaWYgYWxsIGZ1bGwgd29yZHMgZnJvbSBkYXRhW2xlbi0xXSB0byBkYXRhWzBdIGFyZSBNUERfUkFESVgtMQorICogKGFsbCBuaW5lcykuIFJldHVybiB0cnVlIGlmIGxlbiA9PSAwLgorICovCitzdGF0aWMgaW5saW5lIGludAorX21wZF9pc2FsbG5pbmUoY29uc3QgbXBkX3VpbnRfdCAqZGF0YSwgbXBkX3NzaXplX3QgbGVuKQoreworICAgIHdoaWxlICgtLWxlbiA+PSAwKSB7CisgICAgICAgIGlmIChkYXRhW2xlbl0gIT0gTVBEX1JBRElYLTEpIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworCisjZW5kaWYgLyogQkFTRUFSSVRIX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYml0cy5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ5ZWM5NAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYml0cy5oCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIEJJVFNfSAorI2RlZmluZSBCSVRTX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisvKiBDaGVjayBpZiBuIGlzIGEgcG93ZXIgb2YgMi4gKi8KK3N0YXRpYyBpbmxpbmUgaW50Citpc3Bvd2VyMihtcGRfc2l6ZV90IG4pCit7CisgICAgcmV0dXJuIG4gIT0gMCAmJiAobiAmIChuLTEpKSA9PSAwOworfQorCisjaWYgZGVmaW5lZChBTlNJKQorLyoKKyAqIFJldHVybiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgcG9zaXRpb24gb2YgbiBmcm9tIDAgdG8gMzEgKDYzKS4KKyAqIEFzc3VtcHRpb25zOiBuICE9IDAuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CittcGRfYnNyKG1wZF9zaXplX3QgbikKK3sKKyAgICBpbnQgcG9zID0gMDsKKyAgICBtcGRfc2l6ZV90IHRtcDsKKworI2lmZGVmIENPTkZJR182NAorICAgIHRtcCA9IG4gPj4gMzI7CisgICAgaWYgKHRtcCAhPSAwKSB7IG4gPSB0bXA7IHBvcyArPSAzMjsgfQorI2VuZGlmCisgICAgdG1wID0gbiA+PiAxNjsKKyAgICBpZiAodG1wICE9IDApIHsgbiA9IHRtcDsgcG9zICs9IDE2OyB9CisgICAgdG1wID0gbiA+PiA4OworICAgIGlmICh0bXAgIT0gMCkgeyBuID0gdG1wOyBwb3MgKz0gODsgfQorICAgIHRtcCA9IG4gPj4gNDsKKyAgICBpZiAodG1wICE9IDApIHsgbiA9IHRtcDsgcG9zICs9IDQ7IH0KKyAgICB0bXAgPSBuID4+IDI7CisgICAgaWYgKHRtcCAhPSAwKSB7IG4gPSB0bXA7IHBvcyArPSAyOyB9CisgICAgdG1wID0gbiA+PiAxOworICAgIGlmICh0bXAgIT0gMCkgeyBuID0gdG1wOyBwb3MgKz0gMTsgfQorCisgICAgcmV0dXJuIHBvcyArIChpbnQpbiAtIDE7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBwb3NpdGlvbiBvZiBuIGZyb20gMCB0byAzMSAoNjMpLgorICogQXNzdW1wdGlvbnM6IG4gIT0gMC4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK21wZF9ic2YobXBkX3NpemVfdCBuKQoreworICAgIGludCBwb3M7CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBwb3MgPSA2MzsKKyAgICBpZiAobiAmIDB4MDAwMDAwMDBGRkZGRkZGRlVMTCkgeyBwb3MgLT0gMzI7IH0gZWxzZSB7IG4gPj49IDMyOyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMEZGRkZVTEwpIHsgcG9zIC09IDE2OyB9IGVsc2UgeyBuID4+PSAxNjsgfQorICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDAwMEZGVUxMKSB7IHBvcyAtPSAgODsgfSBlbHNlIHsgbiA+Pj0gIDg7IH0KKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwMDAwRlVMTCkgeyBwb3MgLT0gIDQ7IH0gZWxzZSB7IG4gPj49ICA0OyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwMDNVTEwpIHsgcG9zIC09ICAyOyB9IGVsc2UgeyBuID4+PSAgMjsgfQorICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDAwMDAxVUxMKSB7IHBvcyAtPSAgMTsgfQorI2Vsc2UKKyAgICBwb3MgPSAzMTsKKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwRkZGRlVMKSB7IHBvcyAtPSAxNjsgfSBlbHNlIHsgbiA+Pj0gMTY7IH0KKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwMDBGRlVMKSB7IHBvcyAtPSAgODsgfSBlbHNlIHsgbiA+Pj0gIDg7IH0KKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwMDAwRlVMKSB7IHBvcyAtPSAgNDsgfSBlbHNlIHsgbiA+Pj0gIDQ7IH0KKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwMDAwM1VMKSB7IHBvcyAtPSAgMjsgfSBlbHNlIHsgbiA+Pj0gIDI7IH0KKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwMDAwMVVMKSB7IHBvcyAtPSAgMTsgfQorI2VuZGlmCisgICAgcmV0dXJuIHBvczsKK30KKy8qIEVORCBBTlNJICovCisKKyNlbGlmIGRlZmluZWQoQVNNKQorLyoKKyAqIEJpdCBzY2FuIHJldmVyc2UuIEFzc3VtcHRpb25zOiBhICE9IDAuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CittcGRfYnNyKG1wZF9zaXplX3QgYSkKK3sKKyAgICBtcGRfc2l6ZV90IHJldHZhbDsKKworICAgIF9fYXNtX18gKAorI2lmZGVmIENPTkZJR182NAorICAgICAgICAiYnNycSAlMSwgJTBcblx0IgorI2Vsc2UKKyAgICAgICAgImJzciAlMSwgJTBcblx0IgorI2VuZGlmCisgICAgICAgIDoiPXIiIChyZXR2YWwpCisgICAgICAgIDoiciIgKGEpCisgICAgICAgIDoiY2MiCisgICAgKTsKKworICAgIHJldHVybiAoaW50KXJldHZhbDsKK30KKworLyoKKyAqIEJpdCBzY2FuIGZvcndhcmQuIEFzc3VtcHRpb25zOiBhICE9IDAuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CittcGRfYnNmKG1wZF9zaXplX3QgYSkKK3sKKyAgICBtcGRfc2l6ZV90IHJldHZhbDsKKworICAgIF9fYXNtX18gKAorI2lmZGVmIENPTkZJR182NAorICAgICAgICAiYnNmcSAlMSwgJTBcblx0IgorI2Vsc2UKKyAgICAgICAgImJzZiAlMSwgJTBcblx0IgorI2VuZGlmCisgICAgICAgIDoiPXIiIChyZXR2YWwpCisgICAgICAgIDoiciIgKGEpCisgICAgICAgIDoiY2MiCisgICAgKTsKKworICAgIHJldHVybiAoaW50KXJldHZhbDsKK30KKy8qIEVORCBBU00gKi8KKworI2VsaWYgZGVmaW5lZChNQVNNKQorI2luY2x1ZGUgPGludHJpbi5oPgorLyoKKyAqIEJpdCBzY2FuIHJldmVyc2UuIEFzc3VtcHRpb25zOiBhICE9IDAuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IF9fY2RlY2wKK21wZF9ic3IobXBkX3NpemVfdCBhKQoreworICAgIHVuc2lnbmVkIGxvbmcgcmV0dmFsOworCisjaWZkZWYgQ09ORklHXzY0CisgICAgX0JpdFNjYW5SZXZlcnNlNjQoJnJldHZhbCwgYSk7CisjZWxzZQorICAgIF9CaXRTY2FuUmV2ZXJzZSgmcmV0dmFsLCBhKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIChpbnQpcmV0dmFsOworfQorCisvKgorICogQml0IHNjYW4gZm9yd2FyZC4gQXNzdW1wdGlvbnM6IGEgIT0gMC4KKyAqLworc3RhdGljIGlubGluZSBpbnQgX19jZGVjbAorbXBkX2JzZihtcGRfc2l6ZV90IGEpCit7CisgICAgdW5zaWduZWQgbG9uZyByZXR2YWw7CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBfQml0U2NhbkZvcndhcmQ2NCgmcmV0dmFsLCBhKTsKKyNlbHNlCisgICAgX0JpdFNjYW5Gb3J3YXJkKCZyZXR2YWwsIGEpOworI2VuZGlmCisKKyAgICByZXR1cm4gKGludClyZXR2YWw7Cit9CisvKiBFTkQgTUFTTSAoX01TQ19WRVIpICovCisjZWxzZQorICAjZXJyb3IgIm1pc3NpbmcgcHJlcHJvY2Vzc29yIGRlZmluaXRpb25zIgorI2VuZGlmIC8qIEJTUi9CU0YgKi8KKworCisjZW5kaWYgLyogQklUU19IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmY1ODkxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuYwpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSAiY29uc3RhbnRzLmgiCisKKworI2lmIGRlZmluZWQoQ09ORklHXzY0KQorCisgIC8qIG51bWJlci10aGVvcnkuYyAqLworICBjb25zdCBtcGRfdWludF90IG1wZF9tb2R1bGlbM10gPSB7CisgICAgMTg0NDY3NDQwNjk0MTQ1ODQzMjFVTEwsIDE4NDQ2NzQ0MDU2NTI5NjgyNDMzVUxMLCAxODQ0Njc0Mjk3NDE5NzkyMzg0MVVMTAorICB9OworICBjb25zdCBtcGRfdWludF90IG1wZF9yb290c1szXSAgPSB7N1VMTCwgMTBVTEwsIDE5VUxMfTsKKworICAvKiBjcnQuYyAqLworICBjb25zdCBtcGRfdWludF90IElOVl9QMV9NT0RfUDIgICA9IDE4NDQ2NzQ0MDU1MDk4MDI2NjY5VUxMOworICBjb25zdCBtcGRfdWludF90IElOVl9QMVAyX01PRF9QMyA9IDI4NzA2NDE0MzcwODE2MFVMTDsKKyAgY29uc3QgbXBkX3VpbnRfdCBMSF9QMVAyID0gMTg0NDY3NDQwNTIyMzQ3MTUxMzdVTEw7ICAgICAvKiAoUDEqUDIpICUgMl42NCAqLworICBjb25zdCBtcGRfdWludF90IFVIX1AxUDIgPSAxODQ0Njc0NDA1MjIzNDcxNTE0MVVMTDsgICAgIC8qIChQMSpQMikgLyAyXjY0ICovCisKKyAgLyogdHJhbnNwb3NlLmMgKi8KKyAgY29uc3QgbXBkX3NpemVfdCBtcGRfYml0c1s2NF0gPSB7CisgICAgMSwgMiwgNCwgOCwgMTYsIDMyLCA2NCwgMTI4LCAyNTYsIDUxMiwgMTAyNCwgIDIwNDgsIDQwOTYsIDgxOTIsIDE2Mzg0LAorICAgIDMyNzY4LCA2NTUzNiwgMTMxMDcyLCAyNjIxNDQsIDUyNDI4OCwgMTA0ODU3NiwgMjA5NzE1MiwgNDE5NDMwNCwgODM4ODYwOCwKKyAgICAxNjc3NzIxNiwgMzM1NTQ0MzIsIDY3MTA4ODY0LCAxMzQyMTc3MjgsIDI2ODQzNTQ1NiwgNTM2ODcwOTEyLCAxMDczNzQxODI0LAorICAgIDIxNDc0ODM2NDhVTEwsIDQyOTQ5NjcyOTZVTEwsIDg1ODk5MzQ1OTJVTEwsIDE3MTc5ODY5MTg0VUxMLCAzNDM1OTczODM2OFVMTCwKKyAgICA2ODcxOTQ3NjczNlVMTCwgMTM3NDM4OTUzNDcyVUxMLCAyNzQ4Nzc5MDY5NDRVTEwsIDU0OTc1NTgxMzg4OFVMTCwKKyAgICAxMDk5NTExNjI3Nzc2VUxMLCAyMTk5MDIzMjU1NTUyVUxMLCA0Mzk4MDQ2NTExMTA0LCA4Nzk2MDkzMDIyMjA4VUxMLAorICAgIDE3NTkyMTg2MDQ0NDE2VUxMLCAzNTE4NDM3MjA4ODgzMlVMTCwgNzAzNjg3NDQxNzc2NjRVTEwsIDE0MDczNzQ4ODM1NTMyOFVMTCwKKyAgICAyODE0NzQ5NzY3MTA2NTZVTEwsIDU2Mjk0OTk1MzQyMTMxMlVMTCwgMTEyNTg5OTkwNjg0MjYyNFVMTCwKKyAgICAyMjUxNzk5ODEzNjg1MjQ4VUxMLCA0NTAzNTk5NjI3MzcwNDk2VUxMLCA5MDA3MTk5MjU0NzQwOTkyVUxMLAorICAgIDE4MDE0Mzk4NTA5NDgxOTg0VUxMLCAzNjAyODc5NzAxODk2Mzk2OFVMTCwgNzIwNTc1OTQwMzc5Mjc5MzZVTEwsCisgICAgMTQ0MTE1MTg4MDc1ODU1ODcyVUxMLCAyODgyMzAzNzYxNTE3MTE3NDRVTEwsIDU3NjQ2MDc1MjMwMzQyMzQ4OFVMTCwKKyAgICAxMTUyOTIxNTA0NjA2ODQ2OTc2VUxMLCAyMzA1ODQzMDA5MjEzNjkzOTUyVUxMLCA0NjExNjg2MDE4NDI3Mzg3OTA0VUxMLAorICAgIDkyMjMzNzIwMzY4NTQ3NzU4MDhVTEwKKyAgfTsKKworICAvKiBtcGRlY2ltYWwuYyAqLworICBjb25zdCBtcGRfdWludF90IG1wZF9wb3cxMFtNUERfUkRJR0lUUysxXSA9IHsKKyAgICAxLDEwLDEwMCwxMDAwLDEwMDAwLDEwMDAwMCwxMDAwMDAwLDEwMDAwMDAwLDEwMDAwMDAwMCwxMDAwMDAwMDAwLAorICAgIDEwMDAwMDAwMDAwVUxMLDEwMDAwMDAwMDAwMFVMTCwxMDAwMDAwMDAwMDAwVUxMLDEwMDAwMDAwMDAwMDAwVUxMLAorICAgIDEwMDAwMDAwMDAwMDAwMFVMTCwxMDAwMDAwMDAwMDAwMDAwVUxMLDEwMDAwMDAwMDAwMDAwMDAwVUxMLAorICAgIDEwMDAwMDAwMDAwMDAwMDAwMFVMTCwxMDAwMDAwMDAwMDAwMDAwMDAwVUxMLDEwMDAwMDAwMDAwMDAwMDAwMDAwVUxMCisgIH07CisKKyAgLyogbWFnaWMgbnVtYmVyIGZvciBjb25zdGFudCBkaXZpc2lvbiBieSBNUERfUkFESVggKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBtcHJpbWVfcmR4ID0gMTU1ODE0OTI2MTgzODQyOTQ3MzBVTEw7CisKKyNlbGlmIGRlZmluZWQoQ09ORklHXzMyKQorCisgIC8qIG51bWJlci10aGVvcnkuYyAqLworICBjb25zdCBtcGRfdWludF90IG1wZF9tb2R1bGlbM10gID0gezIxMTM5MjkyMTdVTCwgMjAxMzI2NTkyMVVMLCAxODExOTM5MzI5VUx9OworICBjb25zdCBtcGRfdWludF90IG1wZF9yb290c1szXSAgID0gezVVTCwgMzFVTCwgMTNVTH07CisKKyAgLyogUGVudGl1bVBybyBtb2R1bGFyIG11bHRpcGxpY2F0aW9uOiBUaGVzZSBjb25zdGFudHMgaGF2ZSB0byBiZSBsb2FkZWQgYXMKKyAgICogODAgYml0IGxvbmcgZG91Ymxlcywgd2hpY2ggYXJlIG5vdCBzdXBwb3J0ZWQgYnkgY2VydGFpbiBjb21waWxlcnMuICovCisgIGNvbnN0IHVpbnQzMl90IG1wZF9pbnZtb2R1bGlbM11bM10gPSB7CisgICAgezQyOTM4ODUxNzBVLCAyMTgxNTcwNjg4VSwgMTYzNTJVfSwgIC8qICgobG9uZyBkb3VibGUpIDEgLyAyMTEzOTI5MjE3VUwpICovCisgICAgezE2OTg4OTgxNzdVLCAyMjkwNjQ5MjIzVSwgMTYzNTJVfSwgIC8qICgobG9uZyBkb3VibGUpIDEgLyAyMDEzMjY1OTIxVUwpICovCisgICAgezI3MTYwMjE4NDZVLCAyNTQ1MTY1ODAzVSwgMTYzNTJVfSAgIC8qICgobG9uZyBkb3VibGUpIDEgLyAxODExOTM5MzI5VUwpICovCisgIH07CisKKyAgY29uc3QgZmxvYXQgTVBEX1RXTzYzID0gOTIyMzM3MjAzNjg1NDc3NTgwOC4wOyAvKiAyXjYzICovCisKKyAgLyogY3J0LmMgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBJTlZfUDFfTU9EX1AyICAgPSAyMDEzMjY1OTAxVUw7CisgIGNvbnN0IG1wZF91aW50X3QgSU5WX1AxUDJfTU9EX1AzID0gNTRVTDsKKyAgY29uc3QgbXBkX3VpbnRfdCBMSF9QMVAyID0gNDEyNzE5NTEzN1VMOyAgLyogKFAxKlAyKSAlIDJeMzIgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBVSF9QMVAyID0gOTkwOTA0MzIwVUw7ICAgLyogKFAxKlAyKSAvIDJeMzIgKi8KKworICAvKiB0cmFuc3Bvc2UuYyAqLworICBjb25zdCBtcGRfc2l6ZV90IG1wZF9iaXRzWzMyXSA9IHsKKyAgICAxLCAyLCA0LCA4LCAxNiwgMzIsIDY0LCAxMjgsIDI1NiwgNTEyLCAgMTAyNCwgIDIwNDgsIDQwOTYsIDgxOTIsIDE2Mzg0LAorICAgIDMyNzY4LCA2NTUzNiwgMTMxMDcyLCAyNjIxNDQsIDUyNDI4OCwgMTA0ODU3NiwgMjA5NzE1MiwgNDE5NDMwNCwgODM4ODYwOCwKKyAgICAxNjc3NzIxNiwgMzM1NTQ0MzIsIDY3MTA4ODY0LCAxMzQyMTc3MjgsIDI2ODQzNTQ1NiwgNTM2ODcwOTEyLCAxMDczNzQxODI0LAorICAgIDIxNDc0ODM2NDhVTAorICB9OworCisgIC8qIG1wZGVjaW1hbC5jICovCisgIGNvbnN0IG1wZF91aW50X3QgbXBkX3BvdzEwW01QRF9SRElHSVRTKzFdID0geworICAgIDEsMTAsMTAwLDEwMDAsMTAwMDAsMTAwMDAwLDEwMDAwMDAsMTAwMDAwMDAsMTAwMDAwMDAwLDEwMDAwMDAwMDAKKyAgfTsKKworI2Vsc2UKKyAgI2Vycm9yICJDT05GSUdfNjQgb3IgQ09ORklHXzMyIG11c3QgYmUgZGVmaW5lZC4iCisjZW5kaWYKKworY29uc3QgY2hhciAqbXBkX3JvdW5kX3N0cmluZ1tNUERfUk9VTkRfR1VBUkRdID0geworICAgICJST1VORF9VUCIsICAgICAgICAgIC8qIHJvdW5kIGF3YXkgZnJvbSAwICAgICAgICAgICAgICAgKi8KKyAgICAiUk9VTkRfRE9XTiIsICAgICAgICAvKiByb3VuZCB0b3dhcmQgMCAodHJ1bmNhdGUpICAgICAgICovCisgICAgIlJPVU5EX0NFSUxJTkciLCAgICAgLyogcm91bmQgdG93YXJkICtpbmZpbml0eSAgICAgICAgICAqLworICAgICJST1VORF9GTE9PUiIsICAgICAgIC8qIHJvdW5kIHRvd2FyZCAtaW5maW5pdHkgICAgICAgICAgKi8KKyAgICAiUk9VTkRfSEFMRl9VUCIsICAgICAvKiAwLjUgaXMgcm91bmRlZCB1cCAgICAgICAgICAgICAgICovCisgICAgIlJPVU5EX0hBTEZfRE9XTiIsICAgLyogMC41IGlzIHJvdW5kZWQgZG93biAgICAgICAgICAgICAqLworICAgICJST1VORF9IQUxGX0VWRU4iLCAgIC8qIDAuNSBpcyByb3VuZGVkIHRvIGV2ZW4gICAgICAgICAgKi8KKyAgICAiUk9VTkRfMDVVUCIsICAgICAgICAvKiByb3VuZCB6ZXJvIG9yIGZpdmUgYXdheSBmcm9tIDAgICovCisgICAgIlJPVU5EX1RSVU5DIiwgICAgICAgLyogdHJ1bmNhdGUsIGJ1dCBzZXQgaW5maW5pdHkgICAgICAqLworfTsKKworY29uc3QgY2hhciAqbXBkX2NsYW1wX3N0cmluZ1tNUERfQ0xBTVBfR1VBUkRdID0geworICAgICJDTEFNUF9ERUZBVUxUIiwKKyAgICAiQ0xBTVBfSUVFRV83NTQiCit9OworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29uc3RhbnRzLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNjNkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgQ09OU1RBTlRTX0gKKyNkZWZpbmUgQ09OU1RBTlRTX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisKKworLyogY2hvaWNlIG9mIG9wdGltaXplZCBmdW5jdGlvbnMgKi8KKyNpZiBkZWZpbmVkKENPTkZJR182NCkKKy8qIHg2NCAqLworICAjZGVmaW5lIE1VTE1PRChhLCBiKSB4NjRfbXVsbW9kKGEsIGIsIHVtb2QpCisgICNkZWZpbmUgTVVMTU9EMkMoYTAsIGExLCB3KSB4NjRfbXVsbW9kMmMoYTAsIGExLCB3LCB1bW9kKQorICAjZGVmaW5lIE1VTE1PRDIoYTAsIGIwLCBhMSwgYjEpIHg2NF9tdWxtb2QyKGEwLCBiMCwgYTEsIGIxLCB1bW9kKQorICAjZGVmaW5lIFBPV01PRChiYXNlLCBleHApIHg2NF9wb3dtb2QoYmFzZSwgZXhwLCB1bW9kKQorICAjZGVmaW5lIFNFVE1PRFVMVVMobW9kbnVtKSBzdGRfc2V0bW9kdWx1cyhtb2RudW0sICZ1bW9kKQorICAjZGVmaW5lIFNJWkUzX05UVCh4MCwgeDEsIHgyLCB3M3RhYmxlKSBzdGRfc2l6ZTNfbnR0KHgwLCB4MSwgeDIsIHczdGFibGUsIHVtb2QpCisjZWxpZiBkZWZpbmVkKFBQUk8pCisvKiBQZW50aXVtUHJvIChvciBsYXRlcikgZ2NjIGlubGluZSBhc20gKi8KKyAgI2RlZmluZSBNVUxNT0QoYSwgYikgcHByb19tdWxtb2QoYSwgYiwgJmRtb2QsIGRpbnZtb2QpCisgICNkZWZpbmUgTVVMTU9EMkMoYTAsIGExLCB3KSBwcHJvX211bG1vZDJjKGEwLCBhMSwgdywgJmRtb2QsIGRpbnZtb2QpCisgICNkZWZpbmUgTVVMTU9EMihhMCwgYjAsIGExLCBiMSkgcHByb19tdWxtb2QyKGEwLCBiMCwgYTEsIGIxLCAmZG1vZCwgZGludm1vZCkKKyAgI2RlZmluZSBQT1dNT0QoYmFzZSwgZXhwKSBwcHJvX3Bvd21vZChiYXNlLCBleHAsICZkbW9kLCBkaW52bW9kKQorICAjZGVmaW5lIFNFVE1PRFVMVVMobW9kbnVtKSBwcHJvX3NldG1vZHVsdXMobW9kbnVtLCAmdW1vZCwgJmRtb2QsIGRpbnZtb2QpCisgICNkZWZpbmUgU0laRTNfTlRUKHgwLCB4MSwgeDIsIHczdGFibGUpIHBwcm9fc2l6ZTNfbnR0KHgwLCB4MSwgeDIsIHczdGFibGUsIHVtb2QsICZkbW9kLCBkaW52bW9kKQorI2Vsc2UKKyAgLyogQU5TSSBDOTkgKi8KKyAgI2RlZmluZSBNVUxNT0QoYSwgYikgc3RkX211bG1vZChhLCBiLCB1bW9kKQorICAjZGVmaW5lIE1VTE1PRDJDKGEwLCBhMSwgdykgc3RkX211bG1vZDJjKGEwLCBhMSwgdywgdW1vZCkKKyAgI2RlZmluZSBNVUxNT0QyKGEwLCBiMCwgYTEsIGIxKSBzdGRfbXVsbW9kMihhMCwgYjAsIGExLCBiMSwgdW1vZCkKKyAgI2RlZmluZSBQT1dNT0QoYmFzZSwgZXhwKSBzdGRfcG93bW9kKGJhc2UsIGV4cCwgdW1vZCkKKyAgI2RlZmluZSBTRVRNT0RVTFVTKG1vZG51bSkgc3RkX3NldG1vZHVsdXMobW9kbnVtLCAmdW1vZCkKKyAgI2RlZmluZSBTSVpFM19OVFQoeDAsIHgxLCB4MiwgdzN0YWJsZSkgc3RkX3NpemUzX250dCh4MCwgeDEsIHgyLCB3M3RhYmxlLCB1bW9kKQorI2VuZGlmCisKKy8qIFBlbnRpdW1Qcm8gKG9yIGxhdGVyKSBnY2MgaW5saW5lIGFzbSAqLworZXh0ZXJuIGNvbnN0IGZsb2F0IE1QRF9UV082MzsKK2V4dGVybiBjb25zdCB1aW50MzJfdCBtcGRfaW52bW9kdWxpWzNdWzNdOworCitlbnVtIHtQMSwgUDIsIFAzfTsKKworZXh0ZXJuIGNvbnN0IG1wZF91aW50X3QgbXBkX21vZHVsaVtdOworZXh0ZXJuIGNvbnN0IG1wZF91aW50X3QgbXBkX3Jvb3RzW107CitleHRlcm4gY29uc3QgbXBkX3NpemVfdCBtcGRfYml0c1tdOworZXh0ZXJuIGNvbnN0IG1wZF91aW50X3QgbXBkX3BvdzEwW107CisKK2V4dGVybiBjb25zdCBtcGRfdWludF90IElOVl9QMV9NT0RfUDI7CitleHRlcm4gY29uc3QgbXBkX3VpbnRfdCBJTlZfUDFQMl9NT0RfUDM7CitleHRlcm4gY29uc3QgbXBkX3VpbnRfdCBMSF9QMVAyOworZXh0ZXJuIGNvbnN0IG1wZF91aW50X3QgVUhfUDFQMjsKKworCisjZW5kaWYgLyogQ09OU1RBTlRTX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udGV4dC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb250ZXh0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU5Zjg4YwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udGV4dC5jCkBAIC0wLDAgKzEsMjg2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKworCit2b2lkCittcGRfZGZsdF90cmFwaGFuZGxlcihtcGRfY29udGV4dF90ICpjdHggVU5VU0VEKQoreworICAgIHJhaXNlKFNJR0ZQRSk7Cit9CisKK3ZvaWQgKCogbXBkX3RyYXBoYW5kbGVyKShtcGRfY29udGV4dF90ICopID0gbXBkX2RmbHRfdHJhcGhhbmRsZXI7CisKKworLyogU2V0IGd1YXJhbnRlZWQgbWluaW11bSBudW1iZXIgb2YgY29lZmZpY2llbnQgd29yZHMuIFRoZSBmdW5jdGlvbiBtYXkKKyAgIGJlIHVzZWQgb25jZSBhdCBwcm9ncmFtIHN0YXJ0LiBTZXR0aW5nIE1QRF9NSU5BTExPQyB0byBvdXQtb2YtYm91bmRzCisgICB2YWx1ZXMgaXMgYSBjYXRhc3Ryb3BoaWMgZXJyb3IsIHNvIGluIHRoYXQgY2FzZSB0aGUgZnVuY3Rpb24gZXhpdHMgcmF0aGVyCisgICB0aGFuIHJlbHlpbmcgb24gdGhlIHVzZXIgdG8gY2hlY2sgYSByZXR1cm4gdmFsdWUuICovCit2b2lkCittcGRfc2V0bWluYWxsb2MobXBkX3NzaXplX3QgbikKK3sKKyAgICBzdGF0aWMgaW50IG1pbmFsbG9jX2lzX3NldCA9IDA7CisKKyAgICBpZiAobWluYWxsb2NfaXNfc2V0KSB7CisgICAgICAgIG1wZF9lcnJfd2FybigibXBkX3NldG1pbmFsbG9jOiBpZ25vcmluZyByZXF1ZXN0IHRvIHNldCAiCisgICAgICAgICAgICAgICAgICAgICAiTVBEX01JTkFMTE9DIGEgc2Vjb25kIHRpbWVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChuIDwgTVBEX01JTkFMTE9DX01JTiB8fCBuID4gTVBEX01JTkFMTE9DX01BWCkgeworICAgICAgICBtcGRfZXJyX2ZhdGFsKCJpbGxlZ2FsIHZhbHVlIGZvciBNUERfTUlOQUxMT0MiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICBNUERfTUlOQUxMT0MgPSBuOworICAgIG1pbmFsbG9jX2lzX3NldCA9IDE7Cit9CisKK3ZvaWQKK21wZF9pbml0KG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgcHJlYykKK3sKKyAgICBtcGRfc3NpemVfdCBpZGVhbF9taW5hbGxvYzsKKworICAgIG1wZF9kZWZhdWx0Y29udGV4dChjdHgpOworCisgICAgaWYgKCFtcGRfcXNldHByZWMoY3R4LCBwcmVjKSkgeworICAgICAgICBtcGRfYWRkc3RhdHVzX3JhaXNlKGN0eCwgTVBEX0ludmFsaWRfY29udGV4dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZGVhbF9taW5hbGxvYyA9IDIgKiAoKHByZWMrTVBEX1JESUdJVFMtMSkgLyBNUERfUkRJR0lUUyk7CisgICAgaWYgKGlkZWFsX21pbmFsbG9jIDwgTVBEX01JTkFMTE9DX01JTikgaWRlYWxfbWluYWxsb2MgPSBNUERfTUlOQUxMT0NfTUlOOworICAgIGlmIChpZGVhbF9taW5hbGxvYyA+IE1QRF9NSU5BTExPQ19NQVgpIGlkZWFsX21pbmFsbG9jID0gTVBEX01JTkFMTE9DX01BWDsKKworICAgIG1wZF9zZXRtaW5hbGxvYyhpZGVhbF9taW5hbGxvYyk7Cit9CisKK3ZvaWQKK21wZF9tYXhjb250ZXh0KG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBjdHgtPnByZWM9TVBEX01BWF9QUkVDOworICAgIGN0eC0+ZW1heD1NUERfTUFYX0VNQVg7CisgICAgY3R4LT5lbWluPU1QRF9NSU5fRU1JTjsKKyAgICBjdHgtPnJvdW5kPU1QRF9ST1VORF9IQUxGX0VWRU47CisgICAgY3R4LT50cmFwcz1NUERfVHJhcHM7CisgICAgY3R4LT5zdGF0dXM9MDsKKyAgICBjdHgtPm5ld3RyYXA9MDsKKyAgICBjdHgtPmNsYW1wPTA7CisgICAgY3R4LT5hbGxjcj0xOworfQorCit2b2lkCittcGRfZGVmYXVsdGNvbnRleHQobXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIGN0eC0+cHJlYz0yKk1QRF9SRElHSVRTOworICAgIGN0eC0+ZW1heD1NUERfTUFYX0VNQVg7CisgICAgY3R4LT5lbWluPU1QRF9NSU5fRU1JTjsKKyAgICBjdHgtPnJvdW5kPU1QRF9ST1VORF9IQUxGX1VQOworICAgIGN0eC0+dHJhcHM9TVBEX1RyYXBzOworICAgIGN0eC0+c3RhdHVzPTA7CisgICAgY3R4LT5uZXd0cmFwPTA7CisgICAgY3R4LT5jbGFtcD0wOworICAgIGN0eC0+YWxsY3I9MTsKK30KKwordm9pZAorbXBkX2Jhc2ljY29udGV4dChtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgY3R4LT5wcmVjPTk7CisgICAgY3R4LT5lbWF4PU1QRF9NQVhfRU1BWDsKKyAgICBjdHgtPmVtaW49TVBEX01JTl9FTUlOOworICAgIGN0eC0+cm91bmQ9TVBEX1JPVU5EX0hBTEZfVVA7CisgICAgY3R4LT50cmFwcz1NUERfVHJhcHN8TVBEX0NsYW1wZWQ7CisgICAgY3R4LT5zdGF0dXM9MDsKKyAgICBjdHgtPm5ld3RyYXA9MDsKKyAgICBjdHgtPmNsYW1wPTA7CisgICAgY3R4LT5hbGxjcj0xOworfQorCitpbnQKK21wZF9pZWVlX2NvbnRleHQobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgYml0cykKK3sKKyAgICBpZiAoYml0cyA8PSAwIHx8IGJpdHMgPiBNUERfSUVFRV9DT05URVhUX01BWF9CSVRTIHx8IGJpdHMgJSAzMikgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4LT5wcmVjID0gOSAqIChiaXRzLzMyKSAtIDI7CisgICAgY3R4LT5lbWF4ID0gMyAqICgobXBkX3NzaXplX3QpMTw8KGJpdHMvMTYrMykpOworICAgIGN0eC0+ZW1pbiA9IDEgLSBjdHgtPmVtYXg7CisgICAgY3R4LT5yb3VuZD1NUERfUk9VTkRfSEFMRl9FVkVOOworICAgIGN0eC0+dHJhcHM9MDsKKyAgICBjdHgtPnN0YXR1cz0wOworICAgIGN0eC0+bmV3dHJhcD0wOworICAgIGN0eC0+Y2xhbXA9MTsKKyAgICBjdHgtPmFsbGNyPTE7CisKKyAgICByZXR1cm4gMDsKK30KKworbXBkX3NzaXplX3QKK21wZF9nZXRwcmVjKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5wcmVjOworfQorCittcGRfc3NpemVfdAorbXBkX2dldGVtYXgoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPmVtYXg7Cit9CisKK21wZF9zc2l6ZV90CittcGRfZ2V0ZW1pbihjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgcmV0dXJuIGN0eC0+ZW1pbjsKK30KKworaW50CittcGRfZ2V0cm91bmQoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPnJvdW5kOworfQorCit1aW50MzJfdAorbXBkX2dldHRyYXBzKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT50cmFwczsKK30KKwordWludDMyX3QKK21wZF9nZXRzdGF0dXMoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPnN0YXR1czsKK30KKworaW50CittcGRfZ2V0Y2xhbXAoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPmNsYW1wOworfQorCitpbnQKK21wZF9nZXRjcihjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgcmV0dXJuIGN0eC0+YWxsY3I7Cit9CisKKworaW50CittcGRfcXNldHByZWMobXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBwcmVjKQoreworICAgIGlmIChwcmVjIDw9IDAgfHwgcHJlYyA+IE1QRF9NQVhfUFJFQykgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3R4LT5wcmVjID0gcHJlYzsKKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcXNldGVtYXgobXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBlbWF4KQoreworICAgIGlmIChlbWF4IDwgMCB8fCBlbWF4ID4gTVBEX01BWF9FTUFYKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjdHgtPmVtYXggPSBlbWF4OworICAgIHJldHVybiAxOworfQorCitpbnQKK21wZF9xc2V0ZW1pbihtcGRfY29udGV4dF90ICpjdHgsIG1wZF9zc2l6ZV90IGVtaW4pCit7CisgICAgaWYgKGVtaW4gPiAwIHx8IGVtaW4gPCBNUERfTUlOX0VNSU4pIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+ZW1pbiA9IGVtaW47CisgICAgcmV0dXJuIDE7Cit9CisKK2ludAorbXBkX3FzZXRyb3VuZChtcGRfY29udGV4dF90ICpjdHgsIGludCByb3VuZCkKK3sKKyAgICBpZiAoISgwIDw9IHJvdW5kICYmIHJvdW5kIDwgTVBEX1JPVU5EX0dVQVJEKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3R4LT5yb3VuZCA9IHJvdW5kOworICAgIHJldHVybiAxOworfQorCitpbnQKK21wZF9xc2V0dHJhcHMobXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCB0cmFwcykKK3sKKyAgICBpZiAodHJhcHMgPiBNUERfTWF4X3N0YXR1cykgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3R4LT50cmFwcyA9IHRyYXBzOworICAgIHJldHVybiAxOworfQorCitpbnQKK21wZF9xc2V0c3RhdHVzKG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgZmxhZ3MpCit7CisgICAgaWYgKGZsYWdzID4gTVBEX01heF9zdGF0dXMpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+c3RhdHVzID0gZmxhZ3M7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludAorbXBkX3FzZXRjbGFtcChtcGRfY29udGV4dF90ICpjdHgsIGludCBjKQoreworICAgIGlmIChjICE9IDAgJiYgYyAhPSAxKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjdHgtPmNsYW1wID0gYzsKKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcXNldGNyKG1wZF9jb250ZXh0X3QgKmN0eCwgaW50IGMpCit7CisgICAgaWYgKGMgIT0gMCAmJiBjICE9IDEpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+YWxsY3IgPSBjOworICAgIHJldHVybiAxOworfQorCisKK3ZvaWQKK21wZF9hZGRzdGF0dXNfcmFpc2UobXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCBmbGFncykKK3sKKyAgICBjdHgtPnN0YXR1cyB8PSBmbGFnczsKKyAgICBpZiAoZmxhZ3MmY3R4LT50cmFwcykgeworICAgICAgICBjdHgtPm5ld3RyYXAgPSAoZmxhZ3MmY3R4LT50cmFwcyk7CisgICAgICAgIG1wZF90cmFwaGFuZGxlcihjdHgpOworICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnZvbHV0ZS5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZlMTMxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuYwpAQCAtMCwwICsxLDE3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2luY2x1ZGUgImZudC5oIgorI2luY2x1ZGUgImZvdXJzdGVwLmgiCisjaW5jbHVkZSAibnVtYmVydGhlb3J5LmgiCisjaW5jbHVkZSAic2l4c3RlcC5oIgorI2luY2x1ZGUgInVtb2Rhcml0aC5oIgorI2luY2x1ZGUgImNvbnZvbHV0ZS5oIgorCisKKy8qIEJpZ251bTogRmFzdCBjb252b2x1dGlvbiB1c2luZyB0aGUgTnVtYmVyIFRoZW9yZXRpYyBUcmFuc2Zvcm0uIFVzZWQgZm9yCisgICB0aGUgbXVsdGlwbGljYXRpb24gb2YgdmVyeSBsYXJnZSBjb2VmZmljaWVudHMuICovCisKKworLyogQ29udm9sdXRlIHRoZSBkYXRhIGluIGMxIGFuZCBjMi4gUmVzdWx0IGlzIGluIGMxLiAqLworaW50CitmbnRfY29udm9sdXRlKG1wZF91aW50X3QgKmMxLCBtcGRfdWludF90ICpjMiwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIGludCAoKmZudCkobXBkX3VpbnRfdCAqLCBtcGRfc2l6ZV90LCBpbnQpOworICAgIGludCAoKmludl9mbnQpKG1wZF91aW50X3QgKiwgbXBkX3NpemVfdCwgaW50KTsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3Qgbl9pbnYsIHVtb2Q7CisgICAgbXBkX3NpemVfdCBpOworCisKKyAgICBTRVRNT0RVTFVTKG1vZG51bSk7CisgICAgbl9pbnYgPSBQT1dNT0QobiwgKHVtb2QtMikpOworCisgICAgaWYgKGlzcG93ZXIyKG4pKSB7CisgICAgICAgIGlmIChuID4gU0lYX1NURVBfVEhSRVNIT0xEKSB7CisgICAgICAgICAgICBmbnQgPSBzaXhfc3RlcF9mbnQ7CisgICAgICAgICAgICBpbnZfZm50ID0gaW52X3NpeF9zdGVwX2ZudDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZudCA9IHN0ZF9mbnQ7CisgICAgICAgICAgICBpbnZfZm50ID0gc3RkX2ludl9mbnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZudCA9IGZvdXJfc3RlcF9mbnQ7CisgICAgICAgIGludl9mbnQgPSBpbnZfZm91cl9zdGVwX2ZudDsKKyAgICB9CisKKyAgICBpZiAoIWZudChjMSwgbiwgbW9kbnVtKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCFmbnQoYzIsIG4sIG1vZG51bSkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBuLTE7IGkgKz0gMikgeworICAgICAgICBtcGRfdWludF90IHgwID0gYzFbaV07CisgICAgICAgIG1wZF91aW50X3QgeTAgPSBjMltpXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGMxW2krMV07CisgICAgICAgIG1wZF91aW50X3QgeTEgPSBjMltpKzFdOworICAgICAgICBNVUxNT0QyKCZ4MCwgeTAsICZ4MSwgeTEpOworICAgICAgICBjMVtpXSA9IHgwOworICAgICAgICBjMVtpKzFdID0geDE7CisgICAgfQorCisgICAgaWYgKCFpbnZfZm50KGMxLCBuLCBtb2RudW0pKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbi0zOyBpICs9IDQpIHsKKyAgICAgICAgbXBkX3VpbnRfdCB4MCA9IGMxW2ldOworICAgICAgICBtcGRfdWludF90IHgxID0gYzFbaSsxXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MiA9IGMxW2krMl07CisgICAgICAgIG1wZF91aW50X3QgeDMgPSBjMVtpKzNdOworICAgICAgICBNVUxNT0QyQygmeDAsICZ4MSwgbl9pbnYpOworICAgICAgICBNVUxNT0QyQygmeDIsICZ4Mywgbl9pbnYpOworICAgICAgICBjMVtpXSA9IHgwOworICAgICAgICBjMVtpKzFdID0geDE7CisgICAgICAgIGMxW2krMl0gPSB4MjsKKyAgICAgICAgYzFbaSszXSA9IHgzOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisvKiBBdXRvY29udm9sdXRlIHRoZSBkYXRhIGluIGMxLiBSZXN1bHQgaXMgaW4gYzEuICovCitpbnQKK2ZudF9hdXRvY29udm9sdXRlKG1wZF91aW50X3QgKmMxLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pCit7CisgICAgaW50ICgqZm50KShtcGRfdWludF90ICosIG1wZF9zaXplX3QsIGludCk7CisgICAgaW50ICgqaW52X2ZudCkobXBkX3VpbnRfdCAqLCBtcGRfc2l6ZV90LCBpbnQpOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBuX2ludiwgdW1vZDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBuX2ludiA9IFBPV01PRChuLCAodW1vZC0yKSk7CisKKyAgICBpZiAoaXNwb3dlcjIobikpIHsKKyAgICAgICAgaWYgKG4gPiBTSVhfU1RFUF9USFJFU0hPTEQpIHsKKyAgICAgICAgICAgIGZudCA9IHNpeF9zdGVwX2ZudDsKKyAgICAgICAgICAgIGludl9mbnQgPSBpbnZfc2l4X3N0ZXBfZm50OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm50ID0gc3RkX2ZudDsKKyAgICAgICAgICAgIGludl9mbnQgPSBzdGRfaW52X2ZudDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZm50ID0gZm91cl9zdGVwX2ZudDsKKyAgICAgICAgaW52X2ZudCA9IGludl9mb3VyX3N0ZXBfZm50OworICAgIH0KKworICAgIGlmICghZm50KGMxLCBuLCBtb2RudW0pKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbi0xOyBpICs9IDIpIHsKKyAgICAgICAgbXBkX3VpbnRfdCB4MCA9IGMxW2ldOworICAgICAgICBtcGRfdWludF90IHgxID0gYzFbaSsxXTsKKyAgICAgICAgTVVMTU9EMigmeDAsIHgwLCAmeDEsIHgxKTsKKyAgICAgICAgYzFbaV0gPSB4MDsKKyAgICAgICAgYzFbaSsxXSA9IHgxOworICAgIH0KKworICAgIGlmICghaW52X2ZudChjMSwgbiwgbW9kbnVtKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IG4tMzsgaSArPSA0KSB7CisgICAgICAgIG1wZF91aW50X3QgeDAgPSBjMVtpXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGMxW2krMV07CisgICAgICAgIG1wZF91aW50X3QgeDIgPSBjMVtpKzJdOworICAgICAgICBtcGRfdWludF90IHgzID0gYzFbaSszXTsKKyAgICAgICAgTVVMTU9EMkMoJngwLCAmeDEsIG5faW52KTsKKyAgICAgICAgTVVMTU9EMkMoJngyLCAmeDMsIG5faW52KTsKKyAgICAgICAgYzFbaV0gPSB4MDsKKyAgICAgICAgYzFbaSsxXSA9IHgxOworICAgICAgICBjMVtpKzJdID0geDI7CisgICAgICAgIGMxW2krM10gPSB4MzsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnZvbHV0ZS5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjhkNmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIENPTlZPTFVURV9ICisjZGVmaW5lIENPTlZPTFVURV9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNkZWZpbmUgU0lYX1NURVBfVEhSRVNIT0xEIDQwOTYKKworCitpbnQgZm50X2NvbnZvbHV0ZShtcGRfdWludF90ICpjMSwgbXBkX3VpbnRfdCAqYzIsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSk7CitpbnQgZm50X2F1dG9jb252b2x1dGUobXBkX3VpbnRfdCAqYzEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSk7CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NydC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jcnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzFjNGVlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jcnQuYwpAQCAtMCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSAibnVtYmVydGhlb3J5LmgiCisjaW5jbHVkZSAidW1vZGFyaXRoLmgiCisjaW5jbHVkZSAiY3J0LmgiCisKKworLyogQmlnbnVtOiBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtLCBleHRlbmRzIHRoZSBtYXhpbXVtIHRyYW5zZm9ybSBsZW5ndGguICovCisKKworLyogTXVsdGlwbHkgUDFQMiBieSB2LCBzdG9yZSByZXN1bHQgaW4gdy4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX2NydF9tdWxQMVAyXzMobXBkX3VpbnRfdCB3WzNdLCBtcGRfdWludF90IHYpCit7CisgICAgbXBkX3VpbnRfdCBoaTEsIGhpMiwgbG87CisKKyAgICBfbXBkX211bF93b3JkcygmaGkxLCAmbG8sIExIX1AxUDIsIHYpOworICAgIHdbMF0gPSBsbzsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaTIsICZsbywgVUhfUDFQMiwgdik7CisgICAgbG8gPSBoaTEgKyBsbzsKKyAgICBpZiAobG8gPCBoaTEpIGhpMisrOworCisgICAgd1sxXSA9IGxvOworICAgIHdbMl0gPSBoaTI7Cit9CisKKy8qIEFkZCAzIHdvcmRzIGZyb20gdiB0byB3LiBUaGUgcmVzdWx0IGlzIGtub3duIHRvIGZpdCBpbiB3LiAqLworc3RhdGljIGlubGluZSB2b2lkCitfY3J0X2FkZDMobXBkX3VpbnRfdCB3WzNdLCBtcGRfdWludF90IHZbM10pCit7CisgICAgbXBkX3VpbnRfdCBjYXJyeTsKKyAgICBtcGRfdWludF90IHM7CisKKyAgICBzID0gd1swXSArIHZbMF07CisgICAgY2FycnkgPSAocyA8IHdbMF0pOworICAgIHdbMF0gPSBzOworCisgICAgcyA9IHdbMV0gKyAodlsxXSArIGNhcnJ5KTsKKyAgICBjYXJyeSA9IChzIDwgd1sxXSk7CisgICAgd1sxXSA9IHM7CisKKyAgICB3WzJdID0gd1syXSArICh2WzJdICsgY2FycnkpOworfQorCisvKiBEaXZpZGUgMyB3b3JkcyBpbiB1IGJ5IHYsIHN0b3JlIHJlc3VsdCBpbiB3LCByZXR1cm4gcmVtYWluZGVyLiAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitfY3J0X2RpdjMobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3VpbnRfdCB2KQoreworICAgIG1wZF91aW50X3QgcjEgPSB1WzJdOworICAgIG1wZF91aW50X3QgcjI7CisKKyAgICBpZiAocjEgPCB2KSB7CisgICAgICAgIHdbMl0gPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX21wZF9kaXZfd29yZCgmd1syXSwgJnIxLCB1WzJdLCB2KTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKworICAgIF9tcGRfZGl2X3dvcmRzKCZ3WzFdLCAmcjIsIHIxLCB1WzFdLCB2KTsKKyAgICBfbXBkX2Rpdl93b3Jkcygmd1swXSwgJnIxLCByMiwgdVswXSwgdik7CisKKyAgICByZXR1cm4gcjE7Cit9CisKKworLyoKKyAqIENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW06CisgKiBBbGdvcml0aG0gZnJvbSBKb2VyZyBBcm5kdCwgIk1hdHRlcnMgQ29tcHV0YXRpb25hbCIsCisgKiBDaGFwdGVyIDM3LjQuMSBbaHR0cDovL3d3dy5qamouZGUvZnh0L10KKyAqCisgKiBTZWUgYWxzbyBLbnV0aCwgVEFPQ1AsIFZvbHVtZSAyLCA0LjMuMiwgZXhlcmNpc2UgNy4KKyAqLworCisvKgorICogQ1JUIHdpdGggY2Fycnk6IHgxLCB4MiwgeDMgY29udGFpbiBudW1iZXJzIG1vZHVsbyBwMSwgcDIsIHAzLiBGb3IgZWFjaAorICogdHJpcGxlIG9mIG1lbWJlcnMgb2YgdGhlIGFycmF5cywgZmluZCB0aGUgdW5pcXVlIHogbW9kdWxvIHAxKnAyKnAzLCB3aXRoCisgKiB6bWF4ID0gcDEqcDIqcDMgLSAxLgorICoKKyAqIEluIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBsb29wLCBzcGxpdCB6IGludG8gcmVzdWx0W2ldID0geiAlIE1QRF9SQURJWAorICogYW5kIGNhcnJ5ID0geiAvIE1QRF9SQURJWC4gTGV0IE4gYmUgdGhlIHNpemUgb2YgY2FycnlbXSBhbmQgY21heCB0aGUKKyAqIG1heGltdW0gY2FycnkuCisgKgorICogTGltaXRzIGZvciB0aGUgMzItYml0IGJ1aWxkOgorICoKKyAqICAgTiAgICA9IDIqKjk2CisgKiAgIGNtYXggPSA3NzExNDM1NTkxMzEyMzgwMjc0CisgKgorICogTGltaXRzIGZvciB0aGUgNjQgYml0IGJ1aWxkOgorICoKKyAqICAgTiAgICA9IDIqKjE5MgorICogICBjbWF4ID0gNjI3NzEwMTM1MzkzNDc1Mzg1OTA0MTI0NDAxMjIwMDQ2MzcxNzEwCisgKgorICogVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnRzIGhvbGQgZm9yIGJvdGggdmVyc2lvbnM6CisgKgorICogICAxKSBjbWF4ICsgem1heCA8IE4sIHNvIHRoZSBhZGRpdGlvbiBkb2VzIG5vdCBvdmVyZmxvdy4KKyAqCisgKiAgIDIpIChjbWF4ICsgem1heCkgLyBNUERfUkFESVggPT0gY21heC4KKyAqCisgKiAgIDMpIElmIGMgPD0gY21heCwgdGhlbiBjX25leHQgPSAoYyArIHptYXgpIC8gTVBEX1JBRElYIDw9IGNtYXguCisgKi8KK3ZvaWQKK2NydDMobXBkX3VpbnRfdCAqeDEsIG1wZF91aW50X3QgKngyLCBtcGRfdWludF90ICp4MywgbXBkX3NpemVfdCByc2l6ZSkKK3sKKyAgICBtcGRfdWludF90IHAxID0gbXBkX21vZHVsaVtQMV07CisgICAgbXBkX3VpbnRfdCB1bW9kOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBhMSwgYTIsIGEzOworICAgIG1wZF91aW50X3QgczsKKyAgICBtcGRfdWludF90IHpbM10sIHRbM107CisgICAgbXBkX3VpbnRfdCBjYXJyeVszXSA9IHswLDAsMH07CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisgICAgbXBkX3NpemVfdCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IHJzaXplOyBpKyspIHsKKworICAgICAgICBhMSA9IHgxW2ldOworICAgICAgICBhMiA9IHgyW2ldOworICAgICAgICBhMyA9IHgzW2ldOworCisgICAgICAgIFNFVE1PRFVMVVMoUDIpOworICAgICAgICBzID0gZXh0X3N1Ym1vZChhMiwgYTEsIHVtb2QpOworICAgICAgICBzID0gTVVMTU9EKHMsIElOVl9QMV9NT0RfUDIpOworCisgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCBzLCBwMSk7CisgICAgICAgIGxvID0gbG8gKyBhMTsKKyAgICAgICAgaWYgKGxvIDwgYTEpIGhpKys7CisKKyAgICAgICAgU0VUTU9EVUxVUyhQMyk7CisgICAgICAgIHMgPSBkd19zdWJtb2QoYTMsIGhpLCBsbywgdW1vZCk7CisgICAgICAgIHMgPSBNVUxNT0QocywgSU5WX1AxUDJfTU9EX1AzKTsKKworICAgICAgICB6WzBdID0gbG87CisgICAgICAgIHpbMV0gPSBoaTsKKyAgICAgICAgelsyXSA9IDA7CisKKyAgICAgICAgX2NydF9tdWxQMVAyXzModCwgcyk7CisgICAgICAgIF9jcnRfYWRkMyh6LCB0KTsKKyAgICAgICAgX2NydF9hZGQzKGNhcnJ5LCB6KTsKKworICAgICAgICB4MVtpXSA9IF9jcnRfZGl2MyhjYXJyeSwgY2FycnksIE1QRF9SQURJWCk7CisgICAgfQorCisgICAgYXNzZXJ0KGNhcnJ5WzBdID09IDAgJiYgY2FycnlbMV0gPT0gMCAmJiBjYXJyeVsyXSA9PSAwKTsKK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NydC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTAzZTVkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jcnQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIENSVF9ICisjZGVmaW5lIENSVF9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKwordm9pZCBjcnQzKG1wZF91aW50X3QgKngxLCBtcGRfdWludF90ICp4MiwgbXBkX3VpbnRfdCAqeDMsIG1wZF9zaXplX3Qgbm1lbWIpOworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9kaWZyYWRpeDIuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGViYjBiNQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmMKQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJudW1iZXJ0aGVvcnkuaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKyNpbmNsdWRlICJkaWZyYWRpeDIuaCIKKworCisvKiBCaWdudW06IFRoZSBhY3R1YWwgdHJhbnNmb3JtIHJvdXRpbmUgKGRlY2ltYXRpb24gaW4gZnJlcXVlbmN5KS4gKi8KKworCisvKgorICogR2VuZXJhdGUgaW5kZXggcGFpcnMgKHgsIGJpdHJldmVyc2UoeCkpIGFuZCBjYXJyeSBvdXQgdGhlIHBlcm11dGF0aW9uLgorICogbiBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgorICogQWxnb3JpdGhtIGR1ZSB0byBCcmVudC9MZWhtYW5uLCBzZWUgSm9lcmcgQXJuZHQsICJNYXR0ZXJzIENvbXB1dGF0aW9uYWwiLAorICogQ2hhcHRlciAxLjE0LjQuIFtodHRwOi8vd3d3Lmpqai5kZS9meHQvXQorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2JpdHJldmVyc2VfcGVybXV0ZShtcGRfdWludF90IGFbXSwgbXBkX3NpemVfdCBuKQoreworICAgIG1wZF9zaXplX3QgeCA9IDA7CisgICAgbXBkX3NpemVfdCByID0gMDsKKyAgICBtcGRfdWludF90IHQ7CisKKyAgICBkbyB7IC8qIEludmFyaWFudDogciA9IGJpdHJldmVyc2UoeCkgKi8KKyAgICAgICAgaWYgKHIgPiB4KSB7CisgICAgICAgICAgICB0ID0gYVt4XTsKKyAgICAgICAgICAgIGFbeF0gPSBhW3JdOworICAgICAgICAgICAgYVtyXSA9IHQ7CisgICAgICAgIH0KKyAgICAgICAgLyogRmxpcCB0cmFpbGluZyBjb25zZWN1dGl2ZSAxIGJpdHMgYW5kIHRoZSBmaXJzdCB6ZXJvIGJpdAorICAgICAgICAgKiB0aGF0IGFic29yYnMgYSBwb3NzaWJsZSBjYXJyeS4gKi8KKyAgICAgICAgeCArPSAxOworICAgICAgICAvKiBNaXJyb3IgdGhlIG9wZXJhdGlvbiBvbiByOiBGbGlwIG5fdHJhaWxpbmdfemVyb3MoeCkrMQorICAgICAgICAgICBoaWdoIGJpdHMgb2Ygci4gKi8KKyAgICAgICAgciBePSAobiAtIChuID4+IChtcGRfYnNmKHgpKzEpKSk7CisgICAgICAgIC8qIFRoZSBsb29wIGludmFyaWFudCBpcyBwcmVzZXJ2ZWQuICovCisgICAgfSB3aGlsZSAoeCA8IG4pOworfQorCisKKy8qIEZhc3QgTnVtYmVyIFRoZW9yZXRpYyBUcmFuc2Zvcm0sIGRlY2ltYXRpb24gaW4gZnJlcXVlbmN5LiAqLwordm9pZAorZm50X2RpZjIobXBkX3VpbnRfdCBhW10sIG1wZF9zaXplX3Qgbiwgc3RydWN0IGZudF9wYXJhbXMgKnRwYXJhbXMpCit7CisgICAgbXBkX3VpbnRfdCAqd3RhYmxlID0gdHBhcmFtcy0+d3RhYmxlOworICAgIG1wZF91aW50X3QgdW1vZDsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3QgdTAsIHUxLCB2MCwgdjE7CisgICAgbXBkX3VpbnRfdCB3LCB3MCwgdzEsIHdzdGVwOworICAgIG1wZF9zaXplX3QgbSwgbWhhbGY7CisgICAgbXBkX3NpemVfdCBqLCByOworCisKKyAgICBhc3NlcnQoaXNwb3dlcjIobikpOworICAgIGFzc2VydChuID49IDQpOworCisgICAgU0VUTU9EVUxVUyh0cGFyYW1zLT5tb2RudW0pOworCisgICAgLyogbSA9PSBuICovCisgICAgbWhhbGYgPSBuIC8gMjsKKyAgICBmb3IgKGogPSAwOyBqIDwgbWhhbGY7IGogKz0gMikgeworCisgICAgICAgIHcwID0gd3RhYmxlW2pdOworICAgICAgICB3MSA9IHd0YWJsZVtqKzFdOworCisgICAgICAgIHUwID0gYVtqXTsKKyAgICAgICAgdjAgPSBhW2orbWhhbGZdOworCisgICAgICAgIHUxID0gYVtqKzFdOworICAgICAgICB2MSA9IGFbaisxK21oYWxmXTsKKworICAgICAgICBhW2pdID0gYWRkbW9kKHUwLCB2MCwgdW1vZCk7CisgICAgICAgIHYwID0gc3VibW9kKHUwLCB2MCwgdW1vZCk7CisKKyAgICAgICAgYVtqKzFdID0gYWRkbW9kKHUxLCB2MSwgdW1vZCk7CisgICAgICAgIHYxID0gc3VibW9kKHUxLCB2MSwgdW1vZCk7CisKKyAgICAgICAgTVVMTU9EMigmdjAsIHcwLCAmdjEsIHcxKTsKKworICAgICAgICBhW2orbWhhbGZdID0gdjA7CisgICAgICAgIGFbaisxK21oYWxmXSA9IHYxOworCisgICAgfQorCisgICAgd3N0ZXAgPSAyOworICAgIGZvciAobSA9IG4vMjsgbSA+PSAyOyBtPj49MSwgd3N0ZXA8PD0xKSB7CisKKyAgICAgICAgbWhhbGYgPSBtIC8gMjsKKworICAgICAgICAvKiBqID09IDAgKi8KKyAgICAgICAgZm9yIChyID0gMDsgciA8IG47IHIgKz0gMiptKSB7CisKKyAgICAgICAgICAgIHUwID0gYVtyXTsKKyAgICAgICAgICAgIHYwID0gYVtyK21oYWxmXTsKKworICAgICAgICAgICAgdTEgPSBhW20rcl07CisgICAgICAgICAgICB2MSA9IGFbbStyK21oYWxmXTsKKworICAgICAgICAgICAgYVtyXSA9IGFkZG1vZCh1MCwgdjAsIHVtb2QpOworICAgICAgICAgICAgdjAgPSBzdWJtb2QodTAsIHYwLCB1bW9kKTsKKworICAgICAgICAgICAgYVttK3JdID0gYWRkbW9kKHUxLCB2MSwgdW1vZCk7CisgICAgICAgICAgICB2MSA9IHN1Ym1vZCh1MSwgdjEsIHVtb2QpOworCisgICAgICAgICAgICBhW3IrbWhhbGZdID0gdjA7CisgICAgICAgICAgICBhW20rcittaGFsZl0gPSB2MTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaiA9IDE7IGogPCBtaGFsZjsgaisrKSB7CisKKyAgICAgICAgICAgIHcgPSB3dGFibGVbaip3c3RlcF07CisKKyAgICAgICAgICAgIGZvciAociA9IDA7IHIgPCBuOyByICs9IDIqbSkgeworCisgICAgICAgICAgICAgICAgdTAgPSBhW3Iral07CisgICAgICAgICAgICAgICAgdjAgPSBhW3IraittaGFsZl07CisKKyAgICAgICAgICAgICAgICB1MSA9IGFbbStyK2pdOworICAgICAgICAgICAgICAgIHYxID0gYVttK3IraittaGFsZl07CisKKyAgICAgICAgICAgICAgICBhW3Iral0gPSBhZGRtb2QodTAsIHYwLCB1bW9kKTsKKyAgICAgICAgICAgICAgICB2MCA9IHN1Ym1vZCh1MCwgdjAsIHVtb2QpOworCisgICAgICAgICAgICAgICAgYVttK3Iral0gPSBhZGRtb2QodTEsIHYxLCB1bW9kKTsKKyAgICAgICAgICAgICAgICB2MSA9IHN1Ym1vZCh1MSwgdjEsIHVtb2QpOworCisgICAgICAgICAgICAgICAgTVVMTU9EMkMoJnYwLCAmdjEsIHcpOworCisgICAgICAgICAgICAgICAgYVtyK2orbWhhbGZdID0gdjA7CisgICAgICAgICAgICAgICAgYVttK3IraittaGFsZl0gPSB2MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9CisKKyAgICB9CisKKyAgICBiaXRyZXZlcnNlX3Blcm11dGUoYSwgbik7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9kaWZyYWRpeDIuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU5NDQyYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBESUZfUkFESVgyX0gKKyNkZWZpbmUgRElGX1JBRElYMl9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSAibnVtYmVydGhlb3J5LmgiCisKKwordm9pZCBmbnRfZGlmMihtcGRfdWludF90IGFbXSwgbXBkX3NpemVfdCBuLCBzdHJ1Y3QgZm50X3BhcmFtcyAqdHBhcmFtcyk7CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZudC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzExNjUzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mbnQuYwpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJiaXRzLmgiCisjaW5jbHVkZSAiZGlmcmFkaXgyLmgiCisjaW5jbHVkZSAibnVtYmVydGhlb3J5LmgiCisjaW5jbHVkZSAiZm50LmgiCisKKworLyogQmlnbnVtOiBGYXN0IHRyYW5zZm9ybSBmb3IgbWVkaXVtLXNpemVkIGNvZWZmaWNpZW50cy4gKi8KKworCisvKiBmb3J3YXJkIHRyYW5zZm9ybSwgc2lnbiA9IC0xICovCitpbnQKK3N0ZF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIHN0cnVjdCBmbnRfcGFyYW1zICp0cGFyYW1zOworCisgICAgYXNzZXJ0KGlzcG93ZXIyKG4pKTsKKyAgICBhc3NlcnQobiA+PSA0KTsKKyAgICBhc3NlcnQobiA8PSAzKk1QRF9NQVhUUkFOU0ZPUk1fMk4pOworCisgICAgaWYgKCh0cGFyYW1zID0gX21wZF9pbml0X2ZudF9wYXJhbXMobiwgLTEsIG1vZG51bSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZudF9kaWYyKGEsIG4sIHRwYXJhbXMpOworCisgICAgbXBkX2ZyZWUodHBhcmFtcyk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIHJldmVyc2UgdHJhbnNmb3JtLCBzaWduID0gMSAqLworaW50CitzdGRfaW52X2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pCit7CisgICAgc3RydWN0IGZudF9wYXJhbXMgKnRwYXJhbXM7CisKKyAgICBhc3NlcnQoaXNwb3dlcjIobikpOworICAgIGFzc2VydChuID49IDQpOworICAgIGFzc2VydChuIDw9IDMqTVBEX01BWFRSQU5TRk9STV8yTik7CisKKyAgICBpZiAoKHRwYXJhbXMgPSBfbXBkX2luaXRfZm50X3BhcmFtcyhuLCAxLCBtb2RudW0pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmbnRfZGlmMihhLCBuLCB0cGFyYW1zKTsKKworICAgIG1wZF9mcmVlKHRwYXJhbXMpOworICAgIHJldHVybiAxOworfQorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mbnQuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ3MDFiNgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm50LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBGTlRfSAorI2RlZmluZSBGTlRfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisKK2ludCBzdGRfZm50KG1wZF91aW50X3QgYVtdLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworaW50IHN0ZF9pbnZfZm50KG1wZF91aW50X3QgYVtdLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEzMmMwZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuYwpAQCAtMCwwICsxLDI1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorI2luY2x1ZGUgInNpeHN0ZXAuaCIKKyNpbmNsdWRlICJ0cmFuc3Bvc2UuaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKyNpbmNsdWRlICJmb3Vyc3RlcC5oIgorCisKKy8qIEJpZ251bTogQ2FjaGUgZWZmaWNpZW50IE1hdHJpeCBGb3VyaWVyIFRyYW5zZm9ybSBmb3IgYXJyYXlzIG9mIHRoZQorICAgZm9ybSAzICogMioqbiAoU2VlIGxpdGVyYXR1cmUvbWF0cml4LXRyYW5zZm9ybS50eHQpLiAqLworCisKKyNpZm5kZWYgUFBSTworc3RhdGljIGlubGluZSB2b2lkCitzdGRfc2l6ZTNfbnR0KG1wZF91aW50X3QgKngxLCBtcGRfdWludF90ICp4MiwgbXBkX3VpbnRfdCAqeDMsCisgICAgICAgICAgICAgIG1wZF91aW50X3QgdzN0YWJsZVszXSwgbXBkX3VpbnRfdCB1bW9kKQoreworICAgIG1wZF91aW50X3QgcjEsIHIyOworICAgIG1wZF91aW50X3QgdzsKKyAgICBtcGRfdWludF90IHMsIHRtcDsKKworCisgICAgLyogayA9IDAgLT4gdyA9IDEgKi8KKyAgICBzID0gKngxOworICAgIHMgPSBhZGRtb2QocywgKngyLCB1bW9kKTsKKyAgICBzID0gYWRkbW9kKHMsICp4MywgdW1vZCk7CisKKyAgICByMSA9IHM7CisKKyAgICAvKiBrID0gMSAqLworICAgIHMgPSAqeDE7CisKKyAgICB3ID0gdzN0YWJsZVsxXTsKKyAgICB0bXAgPSBNVUxNT0QoKngyLCB3KTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICB3ID0gdzN0YWJsZVsyXTsKKyAgICB0bXAgPSBNVUxNT0QoKngzLCB3KTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICByMiA9IHM7CisKKyAgICAvKiBrID0gMiAqLworICAgIHMgPSAqeDE7CisKKyAgICB3ID0gdzN0YWJsZVsyXTsKKyAgICB0bXAgPSBNVUxNT0QoKngyLCB3KTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICB3ID0gdzN0YWJsZVsxXTsKKyAgICB0bXAgPSBNVUxNT0QoKngzLCB3KTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICAqeDMgPSBzOworICAgICp4MiA9IHIyOworICAgICp4MSA9IHIxOworfQorI2Vsc2UgLyogUFBSTyAqLworc3RhdGljIGlubGluZSB2b2lkCitwcHJvX3NpemUzX250dChtcGRfdWludF90ICp4MSwgbXBkX3VpbnRfdCAqeDIsIG1wZF91aW50X3QgKngzLCBtcGRfdWludF90IHczdGFibGVbM10sCisgICAgICAgICAgICAgICBtcGRfdWludF90IHVtb2QsIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgZGludm1vZFszXSkKK3sKKyAgICBtcGRfdWludF90IHIxLCByMjsKKyAgICBtcGRfdWludF90IHc7CisgICAgbXBkX3VpbnRfdCBzLCB0bXA7CisKKworICAgIC8qIGsgPSAwIC0+IHcgPSAxICovCisgICAgcyA9ICp4MTsKKyAgICBzID0gYWRkbW9kKHMsICp4MiwgdW1vZCk7CisgICAgcyA9IGFkZG1vZChzLCAqeDMsIHVtb2QpOworCisgICAgcjEgPSBzOworCisgICAgLyogayA9IDEgKi8KKyAgICBzID0gKngxOworCisgICAgdyA9IHczdGFibGVbMV07CisgICAgdG1wID0gcHByb19tdWxtb2QoKngyLCB3LCBkbW9kLCBkaW52bW9kKTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICB3ID0gdzN0YWJsZVsyXTsKKyAgICB0bXAgPSBwcHJvX211bG1vZCgqeDMsIHcsIGRtb2QsIGRpbnZtb2QpOworICAgIHMgPSBhZGRtb2QocywgdG1wLCB1bW9kKTsKKworICAgIHIyID0gczsKKworICAgIC8qIGsgPSAyICovCisgICAgcyA9ICp4MTsKKworICAgIHcgPSB3M3RhYmxlWzJdOworICAgIHRtcCA9IHBwcm9fbXVsbW9kKCp4MiwgdywgZG1vZCwgZGludm1vZCk7CisgICAgcyA9IGFkZG1vZChzLCB0bXAsIHVtb2QpOworCisgICAgdyA9IHczdGFibGVbMV07CisgICAgdG1wID0gcHByb19tdWxtb2QoKngzLCB3LCBkbW9kLCBkaW52bW9kKTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICAqeDMgPSBzOworICAgICp4MiA9IHIyOworICAgICp4MSA9IHIxOworfQorI2VuZGlmCisKKworLyogZm9yd2FyZCB0cmFuc2Zvcm0sIHNpZ24gPSAtMTsgdHJhbnNmb3JtIGxlbmd0aCA9IDMgKiAyKipuICovCitpbnQKK2ZvdXJfc3RlcF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIG1wZF9zaXplX3QgUiA9IDM7IC8qIG51bWJlciBvZiByb3dzICovCisgICAgbXBkX3NpemVfdCBDID0gbiAvIDM7IC8qIG51bWJlciBvZiBjb2x1bW5zICovCisgICAgbXBkX3VpbnRfdCB3M3RhYmxlWzNdOworICAgIG1wZF91aW50X3Qga2VybmVsLCB3MCwgdzEsIHdzdGVwOworICAgIG1wZF91aW50X3QgKnMsICpwMCwgKnAxLCAqcDI7CisgICAgbXBkX3VpbnRfdCB1bW9kOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3NpemVfdCBpLCBrOworCisKKyAgICBhc3NlcnQobiA+PSA0OCk7CisgICAgYXNzZXJ0KG4gPD0gMypNUERfTUFYVFJBTlNGT1JNXzJOKTsKKworCisgICAgLyogTGVuZ3RoIFIgdHJhbnNmb3JtIG9uIHRoZSBjb2x1bW5zLiAqLworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBfbXBkX2luaXRfdzN0YWJsZSh3M3RhYmxlLCAtMSwgbW9kbnVtKTsKKyAgICBmb3IgKHAwPWEsIHAxPXAwK0MsIHAyPXAwKzIqQzsgcDA8YStDOyBwMCsrLHAxKysscDIrKykgeworCisgICAgICAgIFNJWkUzX05UVChwMCwgcDEsIHAyLCB3M3RhYmxlKTsKKyAgICB9CisKKyAgICAvKiBNdWx0aXBseSBlYWNoIG1hdHJpeCBlbGVtZW50IChhZGRyZXNzZWQgYnkgaSpDK2spIGJ5IHIqKihpKmspLiAqLworICAgIGtlcm5lbCA9IF9tcGRfZ2V0a2VybmVsKG4sIC0xLCBtb2RudW0pOworICAgIGZvciAoaSA9IDE7IGkgPCBSOyBpKyspIHsKKyAgICAgICAgdzAgPSAxOyAgICAgICAgICAgICAgICAgIC8qIHIqKihpKjApOiBpbml0aWFsIHZhbHVlIGZvciBrPTAgKi8KKyAgICAgICAgdzEgPSBQT1dNT0Qoa2VybmVsLCBpKTsgIC8qIHIqKihpKjEpOiBpbml0aWFsIHZhbHVlIGZvciBrPTEgKi8KKyAgICAgICAgd3N0ZXAgPSBNVUxNT0QodzEsIHcxKTsgIC8qIHIqKigyKmkpICovCisgICAgICAgIGZvciAoayA9IDA7IGsgPCBDLTE7IGsgKz0gMikgeworICAgICAgICAgICAgbXBkX3VpbnRfdCB4MCA9IGFbaSpDK2tdOworICAgICAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGFbaSpDK2srMV07CisgICAgICAgICAgICBNVUxNT0QyKCZ4MCwgdzAsICZ4MSwgdzEpOworICAgICAgICAgICAgTVVMTU9EMkMoJncwLCAmdzEsIHdzdGVwKTsgIC8qIHIqKihpKihrKzIpKSA9IHIqKihpKmspICogcioqKDIqaSkgKi8KKyAgICAgICAgICAgIGFbaSpDK2tdID0geDA7CisgICAgICAgICAgICBhW2kqQytrKzFdID0geDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBMZW5ndGggQyB0cmFuc2Zvcm0gb24gdGhlIHJvd3MuICovCisgICAgZm9yIChzID0gYTsgcyA8IGErbjsgcyArPSBDKSB7CisgICAgICAgIGlmICghc2l4X3N0ZXBfZm50KHMsIEMsIG1vZG51bSkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisjaWYgMAorICAgIC8qIEFuIHVub3JkZXJlZCB0cmFuc2Zvcm0gaXMgc3VmZmljaWVudCBmb3IgY29udm9sdXRpb24uICovCisgICAgLyogVHJhbnNwb3NlIHRoZSBtYXRyaXguICovCisgICAgdHJhbnNwb3NlXzN4cG93MihhLCBSLCBDKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIGJhY2t3YXJkIHRyYW5zZm9ybSwgc2lnbiA9IDE7IHRyYW5zZm9ybSBsZW5ndGggPSAzICogMioqbiAqLworaW50CitpbnZfZm91cl9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pCit7CisgICAgbXBkX3NpemVfdCBSID0gMzsgLyogbnVtYmVyIG9mIHJvd3MgKi8KKyAgICBtcGRfc2l6ZV90IEMgPSBuIC8gMzsgLyogbnVtYmVyIG9mIGNvbHVtbnMgKi8KKyAgICBtcGRfdWludF90IHczdGFibGVbM107CisgICAgbXBkX3VpbnRfdCBrZXJuZWwsIHcwLCB3MSwgd3N0ZXA7CisgICAgbXBkX3VpbnRfdCAqcywgKnAwLCAqcDEsICpwMjsKKyAgICBtcGRfdWludF90IHVtb2Q7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfc2l6ZV90IGksIGs7CisKKworICAgIGFzc2VydChuID49IDQ4KTsKKyAgICBhc3NlcnQobiA8PSAzKk1QRF9NQVhUUkFOU0ZPUk1fMk4pOworCisKKyNpZiAwCisgICAgLyogQW4gdW5vcmRlcmVkIHRyYW5zZm9ybSBpcyBzdWZmaWNpZW50IGZvciBjb252b2x1dGlvbi4gKi8KKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeCwgcHJvZHVjaW5nIGFuIFIqQyBtYXRyaXguICovCisgICAgdHJhbnNwb3NlXzN4cG93MihhLCBDLCBSKTsKKyNlbmRpZgorCisgICAgLyogTGVuZ3RoIEMgdHJhbnNmb3JtIG9uIHRoZSByb3dzLiAqLworICAgIGZvciAocyA9IGE7IHMgPCBhK247IHMgKz0gQykgeworICAgICAgICBpZiAoIWludl9zaXhfc3RlcF9mbnQocywgQywgbW9kbnVtKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBNdWx0aXBseSBlYWNoIG1hdHJpeCBlbGVtZW50IChhZGRyZXNzZWQgYnkgaSpDK2spIGJ5IHIqKihpKmspLiAqLworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBrZXJuZWwgPSBfbXBkX2dldGtlcm5lbChuLCAxLCBtb2RudW0pOworICAgIGZvciAoaSA9IDE7IGkgPCBSOyBpKyspIHsKKyAgICAgICAgdzAgPSAxOworICAgICAgICB3MSA9IFBPV01PRChrZXJuZWwsIGkpOworICAgICAgICB3c3RlcCA9IE1VTE1PRCh3MSwgdzEpOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgQzsgayArPSAyKSB7CisgICAgICAgICAgICBtcGRfdWludF90IHgwID0gYVtpKkMra107CisgICAgICAgICAgICBtcGRfdWludF90IHgxID0gYVtpKkMraysxXTsKKyAgICAgICAgICAgIE1VTE1PRDIoJngwLCB3MCwgJngxLCB3MSk7CisgICAgICAgICAgICBNVUxNT0QyQygmdzAsICZ3MSwgd3N0ZXApOworICAgICAgICAgICAgYVtpKkMra10gPSB4MDsKKyAgICAgICAgICAgIGFbaSpDK2srMV0gPSB4MTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIExlbmd0aCBSIHRyYW5zZm9ybSBvbiB0aGUgY29sdW1ucy4gKi8KKyAgICBfbXBkX2luaXRfdzN0YWJsZSh3M3RhYmxlLCAxLCBtb2RudW0pOworICAgIGZvciAocDA9YSwgcDE9cDArQywgcDI9cDArMipDOyBwMDxhK0M7IHAwKysscDErKyxwMisrKSB7CisKKyAgICAgICAgU0laRTNfTlRUKHAwLCBwMSwgcDIsIHczdGFibGUpOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWQ5ZDZhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgRk9VUl9TVEVQX0gKKyNkZWZpbmUgRk9VUl9TVEVQX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworCitpbnQgZm91cl9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworaW50IGludl9mb3VyX3N0ZXBfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSk7CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY0ODEzNQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYwpAQCAtMCwwICsxLDE1NzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxsb2NhbGUuaD4KKyNpbmNsdWRlICJiaXRzLmgiCisjaW5jbHVkZSAiY29uc3RhbnRzLmgiCisjaW5jbHVkZSAibWVtb3J5LmgiCisjaW5jbHVkZSAidHlwZWFyaXRoLmgiCisjaW5jbHVkZSAiaW8uaCIKKworCisvKiBUaGlzIGZpbGUgY29udGFpbnMgZnVuY3Rpb25zIGZvciBkZWNpbWFsIDwtPiBzdHJpbmcgY29udmVyc2lvbnMsIGluY2x1ZGluZworICAgUEVQLTMxMDEgZm9ybWF0dGluZyBmb3IgbnVtZXJpYyB0eXBlcy4gKi8KKworCisvKgorICogV29yayBhcm91bmQgdGhlIGJlaGF2aW9yIG9mIHRvbG93ZXIoKSBhbmQgc3RyY2FzZWNtcCgpIGluIGNlcnRhaW4KKyAqIGxvY2FsZXMuIEZvciBleGFtcGxlLCBpbiB0cl9UUi51dGY4OgorICoKKyAqIHRvbG93ZXIoKHVuc2lnbmVkIGNoYXIpJ0knKSA9PSAnSScKKyAqCisgKiB1IGlzIHRoZSBleGFjdCB1cHBlcmNhc2UgdmVyc2lvbiBvZiBsOyBuIGlzIHN0cmxlbihsKSBvciBzdHJsZW4obCkrMQorICovCitzdGF0aWMgaW5saW5lIGludAorX21wZF9zdHJuZXEoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqbCwgY29uc3QgY2hhciAqdSwgc2l6ZV90IG4pCit7CisgICAgd2hpbGUgKC0tbiAhPSBTSVpFX01BWCkgeworICAgICAgICBpZiAoKnMgIT0gKmwgJiYgKnMgIT0gKnUpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHMrKzsgdSsrOyBsKys7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBtcGRfc3NpemVfdAorc3RydG9leHAoY29uc3QgY2hhciAqcykKK3sKKyAgICBjaGFyICplbmQ7CisgICAgbXBkX3NzaXplX3QgcmV0dmFsOworCisgICAgZXJybm8gPSAwOworICAgIHJldHZhbCA9IG1wZF9zdHJ0b3NzaXplKHMsICZlbmQsIDEwKTsKKyAgICBpZiAoZXJybm8gPT0gMCAmJiAhKCpzICE9ICdcMCcgJiYgKmVuZCA9PSAnXDAnKSkKKyAgICAgICAgZXJybm8gPSBFSU5WQUw7CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorCisvKgorICogU2NhbiAnbGVuJyB3b3Jkcy4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCBjb250YWlucyAncicgZGlnaXRzLAorICogdGhlIHJlbWFpbmluZyB3b3JkcyBhcmUgZnVsbCB3b3Jkcy4gU2tpcCBkcG9pbnQuIFRoZSBzdHJpbmcgJ3MnIG11c3QKKyAqIGNvbnNpc3Qgb2YgZGlnaXRzIGFuZCBhbiBvcHRpb25hbCBzaW5nbGUgZGVjaW1hbCBwb2ludCBhdCAnZHBvaW50Jy4KKyAqLworc3RhdGljIHZvaWQKK3N0cmluZ190b19jb2VmZihtcGRfdWludF90ICpkYXRhLCBjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpkcG9pbnQsIGludCByLAorICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pCit7CisgICAgaW50IGo7CisKKyAgICBpZiAociA+IDApIHsKKyAgICAgICAgZGF0YVstLWxlbl0gPSAwOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgcjsgaisrLCBzKyspIHsKKyAgICAgICAgICAgIGlmIChzID09IGRwb2ludCkgcysrOworICAgICAgICAgICAgZGF0YVtsZW5dID0gMTAgKiBkYXRhW2xlbl0gKyAoKnMgLSAnMCcpOworICAgICAgICB9CisgICAgfQorCisgICAgd2hpbGUgKC0tbGVuICE9IFNJWkVfTUFYKSB7CisgICAgICAgIGRhdGFbbGVuXSA9IDA7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBNUERfUkRJR0lUUzsgaisrLCBzKyspIHsKKyAgICAgICAgICAgIGlmIChzID09IGRwb2ludCkgcysrOworICAgICAgICAgICAgZGF0YVtsZW5dID0gMTAgKiBkYXRhW2xlbl0gKyAoKnMgLSAnMCcpOworICAgICAgICB9CisgICAgfQorfQorCisvKgorICogUGFydGlhbGx5IHZlcmlmeSBhIG51bWVyaWMgc3RyaW5nIG9mIHRoZSBmb3JtOgorICoKKyAqICAgICBbY2RpZ2l0c11bLl1bY2RpZ2l0c11bZUVdWystXVtlZGlnaXRzXQorICoKKyAqIElmIHN1Y2Nlc3NmdWwsIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdAorICogcmVsZXZhbnQgY29lZmZpY2llbnQgZGlnaXQuIFRoaXMgZGlnaXQgaXMgZWl0aGVyIG5vbi16ZXJvIG9yCisgKiBwYXJ0IG9mIG9uZSBvZiB0aGUgZm9sbG93aW5nIHBhdHRlcm5zOgorICoKKyAqICAgICBbIjBceDAwIiwgIjAuXHgwMCIsICIwLkUiLCAiMC5lIiwgIjBFIiwgIjBlIl0KKyAqCisgKiBUaGUgbG9jYXRpb25zIG9mIGEgc2luZ2xlIG9wdGlvbmFsIGRvdCBvciBpbmRpY2F0b3IgYXJlIHN0b3JlZAorICogaW4gJ2Rwb2ludCcgYW5kICdleHAnLgorICoKKyAqIFRoZSBlbmQgb2YgdGhlIHN0cmluZyBpcyBzdG9yZWQgaW4gJ2VuZCcuIElmIGFuIGluZGljYXRvciBbZUVdCisgKiBvY2N1cnMgd2l0aG91dCB0cmFpbGluZyBbZWRpZ2l0c10sIHRoZSBjb25kaXRpb24gaXMgY2F1Z2h0CisgKiBsYXRlciBieSBzdHJ0b2V4cCgpLgorICovCitzdGF0aWMgY29uc3QgY2hhciAqCitzY2FuX2Rwb2ludF9leHAoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqKmRwb2ludCwgY29uc3QgY2hhciAqKmV4cCwKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZW5kKQoreworICAgIGNvbnN0IGNoYXIgKmNvZWZmID0gTlVMTDsKKworICAgICpkcG9pbnQgPSBOVUxMOworICAgICpleHAgPSBOVUxMOworICAgIGZvciAoOyAqcyAhPSAnXDAnOyBzKyspIHsKKyAgICAgICAgc3dpdGNoICgqcykgeworICAgICAgICBjYXNlICcuJzoKKyAgICAgICAgICAgIGlmICgqZHBvaW50ICE9IE5VTEwgfHwgKmV4cCAhPSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgKmRwb2ludCA9IHM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnRSc6IGNhc2UgJ2UnOgorICAgICAgICAgICAgaWYgKCpleHAgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICpleHAgPSBzOworICAgICAgICAgICAgaWYgKCoocysxKSA9PSAnKycgfHwgKihzKzEpID09ICctJykKKyAgICAgICAgICAgICAgICBzKys7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICghaXNkaWdpdCgodWNoYXIpKnMpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgaWYgKGNvZWZmID09IE5VTEwgJiYgKmV4cCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKCpzID09ICcwJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzZGlnaXQoKHVjaGFyKSoocysxKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgqKHMrMSkgPT0gJy4nICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2RpZ2l0KCh1Y2hhcikqKHMrMikpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZiA9IHM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb2VmZiA9IHM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgfQorICAgIH0KKworICAgICplbmQgPSBzOworICAgIHJldHVybiBjb2VmZjsKK30KKworLyogc2NhbiB0aGUgcGF5bG9hZCBvZiBhIE5hTiAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorc2Nhbl9wYXlsb2FkKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKiplbmQpCit7CisgICAgY29uc3QgY2hhciAqY29lZmY7CisKKyAgICB3aGlsZSAoKnMgPT0gJzAnKQorICAgICAgICBzKys7CisgICAgY29lZmYgPSBzOworCisgICAgd2hpbGUgKGlzZGlnaXQoKHVjaGFyKSpzKSkKKyAgICAgICAgcysrOworICAgICplbmQgPSBzOworCisgICAgcmV0dXJuICgqcyA9PSAnXDAnKSA/IGNvZWZmIDogTlVMTDsKK30KKworLyogY29udmVydCBhIGNoYXJhY3RlciBzdHJpbmcgdG8gYSBkZWNpbWFsICovCit2b2lkCittcGRfcXNldF9zdHJpbmcobXBkX3QgKmRlYywgY29uc3QgY2hhciAqcywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3QgcSwgciwgbGVuOworICAgIGNvbnN0IGNoYXIgKmNvZWZmLCAqZW5kOworICAgIGNvbnN0IGNoYXIgKmRwb2ludCA9IE5VTEwsICpleHAgPSBOVUxMOworICAgIHNpemVfdCBkaWdpdHM7CisgICAgdWludDhfdCBzaWduID0gTVBEX1BPUzsKKworICAgIG1wZF9zZXRfZmxhZ3MoZGVjLCAwKTsKKyAgICBkZWMtPmxlbiA9IDA7CisgICAgZGVjLT5leHAgPSAwOworCisgICAgLyogc2lnbiAqLworICAgIGlmICgqcyA9PSAnKycpIHsKKyAgICAgICAgcysrOworICAgIH0KKyAgICBlbHNlIGlmICgqcyA9PSAnLScpIHsKKyAgICAgICAgbXBkX3NldF9uZWdhdGl2ZShkZWMpOworICAgICAgICBzaWduID0gTVBEX05FRzsKKyAgICAgICAgcysrOworICAgIH0KKworICAgIGlmIChfbXBkX3N0cm5lcShzLCAibmFuIiwgIk5BTiIsIDMpKSB7IC8qIE5hTiAqLworICAgICAgICBzICs9IDM7CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKGRlYywgc2lnbiwgTVBEX05BTik7CisgICAgICAgIGlmICgqcyA9PSAnXDAnKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvKiB2YWxpZGF0ZSBwYXlsb2FkOiBkaWdpdHMgb25seSAqLworICAgICAgICBpZiAoKGNvZWZmID0gc2Nhbl9wYXlsb2FkKHMsICZlbmQpKSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgICAgICAvKiBwYXlsb2FkIGNvbnNpc3RzIGVudGlyZWx5IG9mIHplcm9zICovCisgICAgICAgIGlmICgqY29lZmYgPT0gJ1wwJykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGlnaXRzID0gZW5kIC0gY29lZmY7CisgICAgICAgIC8qIHByZWMgPj0gMSwgY2xhbXAgaXMgMCBvciAxICovCisgICAgICAgIGlmIChkaWdpdHMgPiAoc2l6ZV90KShjdHgtPnByZWMtY3R4LT5jbGFtcCkpCisgICAgICAgICAgICBnb3RvIGNvbnZlcnNpb25fZXJyb3I7CisgICAgfSAvKiBzTmFOICovCisgICAgZWxzZSBpZiAoX21wZF9zdHJuZXEocywgInNuYW4iLCAiU05BTiIsIDQpKSB7CisgICAgICAgIHMgKz0gNDsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwoZGVjLCBzaWduLCBNUERfU05BTik7CisgICAgICAgIGlmICgqcyA9PSAnXDAnKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvKiB2YWxpZGF0ZSBwYXlsb2FkOiBkaWdpdHMgb25seSAqLworICAgICAgICBpZiAoKGNvZWZmID0gc2Nhbl9wYXlsb2FkKHMsICZlbmQpKSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgICAgICAvKiBwYXlsb2FkIGNvbnNpc3RzIGVudGlyZWx5IG9mIHplcm9zICovCisgICAgICAgIGlmICgqY29lZmYgPT0gJ1wwJykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGlnaXRzID0gZW5kIC0gY29lZmY7CisgICAgICAgIGlmIChkaWdpdHMgPiAoc2l6ZV90KShjdHgtPnByZWMtY3R4LT5jbGFtcCkpCisgICAgICAgICAgICBnb3RvIGNvbnZlcnNpb25fZXJyb3I7CisgICAgfQorICAgIGVsc2UgaWYgKF9tcGRfc3RybmVxKHMsICJpbmYiLCAiSU5GIiwgMykpIHsKKyAgICAgICAgcyArPSAzOworICAgICAgICBpZiAoKnMgPT0gJ1wwJyB8fCBfbXBkX3N0cm5lcShzLCAiaW5pdHkiLCAiSU5JVFkiLCA2KSkgeworICAgICAgICAgICAgLyogbnVtZXJpYy12YWx1ZTogaW5maW5pdHkgKi8KKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKGRlYywgc2lnbiwgTVBEX0lORik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogc2NhbiBmb3Igc3RhcnQgb2YgY29lZmZpY2llbnQsIGRlY2ltYWwgcG9pbnQsIGluZGljYXRvciwgZW5kICovCisgICAgICAgIGlmICgoY29lZmYgPSBzY2FuX2Rwb2ludF9leHAocywgJmRwb2ludCwgJmV4cCwgJmVuZCkpID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGNvbnZlcnNpb25fZXJyb3I7CisKKyAgICAgICAgLyogbnVtZXJpYy12YWx1ZTogW2V4cG9uZW50LXBhcnRdICovCisgICAgICAgIGlmIChleHApIHsKKyAgICAgICAgICAgIC8qIGV4cG9uZW50LXBhcnQgKi8KKyAgICAgICAgICAgIGVuZCA9IGV4cDsgZXhwKys7CisgICAgICAgICAgICBkZWMtPmV4cCA9IHN0cnRvZXhwKGV4cCk7CisgICAgICAgICAgICBpZiAoZXJybm8pIHsKKyAgICAgICAgICAgICAgICBpZiAoIShlcnJubyA9PSBFUkFOR0UgJiYKKyAgICAgICAgICAgICAgICAgICAgIChkZWMtPmV4cCA9PSBNUERfU1NJWkVfTUFYIHx8CisgICAgICAgICAgICAgICAgICAgICAgZGVjLT5leHAgPT0gTVBEX1NTSVpFX01JTikpKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGNvbnZlcnNpb25fZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAgICAgZGlnaXRzID0gZW5kIC0gY29lZmY7CisgICAgICAgIGlmIChkcG9pbnQpIHsKKyAgICAgICAgICAgIHNpemVfdCBmcmFjZGlnaXRzID0gZW5kLWRwb2ludC0xOworICAgICAgICAgICAgaWYgKGRwb2ludCA+IGNvZWZmKSBkaWdpdHMtLTsKKworICAgICAgICAgICAgaWYgKGZyYWNkaWdpdHMgPiBNUERfTUFYX1BSRUMpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGNvbnZlcnNpb25fZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGVjLT5leHAgPCBNUERfU1NJWkVfTUlOKyhtcGRfc3NpemVfdClmcmFjZGlnaXRzKSB7CisgICAgICAgICAgICAgICAgZGVjLT5leHAgPSBNUERfU1NJWkVfTUlOOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZGVjLT5leHAgLT0gKG1wZF9zc2l6ZV90KWZyYWNkaWdpdHM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRpZ2l0cyA+IE1QRF9NQVhfUFJFQykgeworICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChkZWMtPmV4cCA+IE1QRF9FWFBfSU5GKSB7CisgICAgICAgICAgICBkZWMtPmV4cCA9IE1QRF9FWFBfSU5GOworICAgICAgICB9CisgICAgICAgIGlmIChkZWMtPmV4cCA9PSBNUERfU1NJWkVfTUlOKSB7CisgICAgICAgICAgICBkZWMtPmV4cCA9IE1QRF9TU0laRV9NSU4rMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9tcGRfaWRpdl93b3JkKCZxLCAmciwgKG1wZF9zc2l6ZV90KWRpZ2l0cywgTVBEX1JESUdJVFMpOworCisgICAgbGVuID0gKHIgPT0gMCkgPyBxIDogcSsxOworICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICBnb3RvIGNvbnZlcnNpb25fZXJyb3I7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgaWYgKCFtcGRfcXJlc2l6ZShkZWMsIGxlbiwgc3RhdHVzKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IoZGVjLCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRlYy0+bGVuID0gbGVuOworCisgICAgc3RyaW5nX3RvX2NvZWZmKGRlYy0+ZGF0YSwgY29lZmYsIGRwb2ludCwgKGludClyLCBsZW4pOworCisgICAgbXBkX3NldGRpZ2l0cyhkZWMpOworICAgIG1wZF9xZmluYWxpemUoZGVjLCBjdHgsIHN0YXR1cyk7CisgICAgcmV0dXJuOworCitjb252ZXJzaW9uX2Vycm9yOgorICAgIC8qIHN0YW5kYXJkIHdhbnRzIGEgcG9zaXRpdmUgTmFOICovCisgICAgbXBkX3NldGVycm9yKGRlYywgTVBEX0NvbnZlcnNpb25fc3ludGF4LCBzdGF0dXMpOworfQorCisvKiBQcmludCB3b3JkIHggd2l0aCBuIGRlY2ltYWwgZGlnaXRzIHRvIHN0cmluZyBzLiBkb3QgaXMgZWl0aGVyIE5VTEwKKyAgIG9yIHRoZSBsb2NhdGlvbiBvZiBhIGRlY2ltYWwgcG9pbnQuICovCisjZGVmaW5lIEVYVFJBQ1RfRElHSVQocywgeCwgZCwgZG90KSBcCisgICAgICAgIGlmIChzID09IGRvdCkgKnMrKyA9ICcuJzsgKnMrKyA9ICcwJyArIChjaGFyKSh4IC8gZCk7IHggJT0gZAorc3RhdGljIGlubGluZSBjaGFyICoKK3dvcmRfdG9fc3RyaW5nKGNoYXIgKnMsIG1wZF91aW50X3QgeCwgaW50IG4sIGNoYXIgKmRvdCkKK3sKKyAgICBzd2l0Y2gobikgeworI2lmZGVmIENPTkZJR182NAorICAgIGNhc2UgMjA6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMDAwMDAwMDBVTEwsIGRvdCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBjYXNlIDE5OiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDAwMDAwMDAwMDBVTEwsIGRvdCk7CisgICAgY2FzZSAxODogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDAwMDAwMDBVTEwsIGRvdCk7CisgICAgY2FzZSAxNzogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDAwMDAwMFVMTCwgZG90KTsKKyAgICBjYXNlIDE2OiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDAwMDAwMDBVTEwsIGRvdCk7CisgICAgY2FzZSAxNTogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDAwMDBVTEwsIGRvdCk7CisgICAgY2FzZSAxNDogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDAwMFVMTCwgZG90KTsKKyAgICBjYXNlIDEzOiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDAwMDBVTEwsIGRvdCk7CisgICAgY2FzZSAxMjogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDBVTEwsIGRvdCk7CisgICAgY2FzZSAxMTogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMFVMTCwgZG90KTsKKyNlbmRpZgorICAgIGNhc2UgMTA6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMFVMLCBkb3QpOworICAgIGNhc2UgOTogIEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwVUwsIGRvdCk7CisgICAgY2FzZSA4OiAgRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMFVMLCBkb3QpOworICAgIGNhc2UgNzogIEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMFVMLCBkb3QpOworICAgIGNhc2UgNjogIEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwVUwsIGRvdCk7CisgICAgY2FzZSA1OiAgRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMFVMLCBkb3QpOworICAgIGNhc2UgNDogIEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMFVMLCBkb3QpOworICAgIGNhc2UgMzogIEVYVFJBQ1RfRElHSVQocywgeCwgMTAwVUwsIGRvdCk7CisgICAgY2FzZSAyOiAgRVhUUkFDVF9ESUdJVChzLCB4LCAxMFVMLCBkb3QpOworICAgIGRlZmF1bHQ6IGlmIChzID09IGRvdCkgKnMrKyA9ICcuJzsgKnMrKyA9ICcwJyArIChjaGFyKXg7CisgICAgfQorIAorICAgICpzID0gJ1wwJzsKKyAgICByZXR1cm4gczsKK30KKworLyogUHJpbnQgZXhwb25lbnQgeCB0byBzdHJpbmcgcy4gVW5kZWZpbmVkIGZvciBNUERfU1NJWkVfTUlOLiAqLworc3RhdGljIGlubGluZSBjaGFyICoKK2V4cF90b19zdHJpbmcoY2hhciAqcywgbXBkX3NzaXplX3QgeCkKK3sKKyAgICBjaGFyIHNpZ24gPSAnKyc7CisKKyAgICBpZiAoeCA8IDApIHsKKyAgICAgICAgc2lnbiA9ICctJzsKKyAgICAgICAgeCA9IC14OworICAgIH0KKyAgICAqcysrID0gc2lnbjsKKworICAgIHJldHVybiB3b3JkX3RvX3N0cmluZyhzLCB4LCBtcGRfd29yZF9kaWdpdHMoeCksIE5VTEwpOworfQorCisvKiBQcmludCB0aGUgY29lZmZpY2llbnQgb2YgZGVjIHRvIHN0cmluZyBzLiBsZW4oZGVjKSA+IDAuICovCitzdGF0aWMgaW5saW5lIGNoYXIgKgorY29lZmZfdG9fc3RyaW5nKGNoYXIgKnMsIGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgbXBkX3VpbnRfdCB4OworICAgIG1wZF9zc2l6ZV90IGk7CisKKyAgICAvKiBtb3N0IHNpZ25pZmljYW50IHdvcmQgKi8KKyAgICB4ID0gbXBkX21zd29yZChkZWMpOworICAgIHMgPSB3b3JkX3RvX3N0cmluZyhzLCB4LCBtcGRfd29yZF9kaWdpdHMoeCksIE5VTEwpOworCisgICAgLyogcmVtYWluaW5nIGZ1bGwgd29yZHMgKi8KKyAgICBmb3IgKGk9ZGVjLT5sZW4tMjsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgeCA9IGRlYy0+ZGF0YVtpXTsKKyAgICAgICAgcyA9IHdvcmRfdG9fc3RyaW5nKHMsIHgsIE1QRF9SRElHSVRTLCBOVUxMKTsKKyAgICB9CisKKyAgICByZXR1cm4gczsKK30KKworLyogUHJpbnQgdGhlIGNvZWZmaWNpZW50IG9mIGRlYyB0byBzdHJpbmcgcy4gbGVuKGRlYykgPiAwLiBkb3QgaXMgZWl0aGVyCisgICBOVUxMIG9yIGEgcG9pbnRlciB0byB0aGUgbG9jYXRpb24gb2YgYSBkZWNpbWFsIHBvaW50LiAqLworc3RhdGljIGlubGluZSBjaGFyICoKK2NvZWZmX3RvX3N0cmluZ19kb3QoY2hhciAqcywgY2hhciAqZG90LCBjb25zdCBtcGRfdCAqZGVjKQoreworICAgIG1wZF91aW50X3QgeDsKKyAgICBtcGRfc3NpemVfdCBpOworCisgICAgLyogbW9zdCBzaWduaWZpY2FudCB3b3JkICovCisgICAgeCA9IG1wZF9tc3dvcmQoZGVjKTsKKyAgICBzID0gd29yZF90b19zdHJpbmcocywgeCwgbXBkX3dvcmRfZGlnaXRzKHgpLCBkb3QpOworCisgICAgLyogcmVtYWluaW5nIGZ1bGwgd29yZHMgKi8KKyAgICBmb3IgKGk9ZGVjLT5sZW4tMjsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgeCA9IGRlYy0+ZGF0YVtpXTsKKyAgICAgICAgcyA9IHdvcmRfdG9fc3RyaW5nKHMsIHgsIE1QRF9SRElHSVRTLCBkb3QpOworICAgIH0KKworICAgIHJldHVybiBzOworfQorCisvKiBGb3JtYXQgdHlwZSAqLworI2RlZmluZSBNUERfRk1UX0xPV0VSICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBNUERfRk1UX1VQUEVSICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBNUERfRk1UX1RPU0NJICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBNUERfRk1UX1RPRU5HICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBNUERfRk1UX0VYUCAgICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBNUERfRk1UX0ZJWEVEICAgICAgMHgwMDAwMDAxMAorI2RlZmluZSBNUERfRk1UX1BFUkNFTlQgICAgMHgwMDAwMDAyMAorI2RlZmluZSBNUERfRk1UX1NJR05fU1BBQ0UgMHgwMDAwMDA0MAorI2RlZmluZSBNUERfRk1UX1NJR05fUExVUyAgMHgwMDAwMDA4MAorCisvKiBEZWZhdWx0IHBsYWNlIG9mIHRoZSBkZWNpbWFsIHBvaW50IGZvciBNUERfRk1UX1RPU0NJLCBNUERfRk1UX0VYUCAqLworI2RlZmluZSBNUERfREVGQVVMVF9ET1RQTEFDRSAxCisKKy8qCisgKiBTZXQgKnJlc3VsdCB0byB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZGVjaW1hbC4gUmV0dXJuIHRoZSBsZW5ndGgKKyAqIG9mICpyZXN1bHQsIG5vdCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nICdcMCcgY2hhcmFjdGVyLgorICoKKyAqIEZvcm1hdHRpbmcgaXMgZG9uZSBhY2NvcmRpbmcgdG8gJ2ZsYWdzJy4gQSByZXR1cm4gdmFsdWUgb2YgLTEgd2l0aCAqcmVzdWx0CisgKiBzZXQgdG8gTlVMTCBpbmRpY2F0ZXMgTVBEX01hbGxvY19lcnJvci4KKyAqCisgKiAnZHBsYWNlJyBpcyB0aGUgZGVmYXVsdCBwbGFjZSBvZiB0aGUgZGVjaW1hbCBwb2ludC4gSXQgaXMgYWx3YXlzIHNldCB0bworICogTVBEX0RFRkFVTFRfRE9UUExBQ0UgZXhjZXB0IGZvciB6ZXJvcyBpbiBjb21iaW5hdGlvbiB3aXRoIE1QRF9GTVRfRVhQLgorICovCitzdGF0aWMgbXBkX3NzaXplX3QKK19tcGRfdG9fc3RyaW5nKGNoYXIgKipyZXN1bHQsIGNvbnN0IG1wZF90ICpkZWMsIGludCBmbGFncywgbXBkX3NzaXplX3QgZHBsYWNlKQoreworICAgIGNoYXIgKmRlY3N0cmluZyA9IE5VTEwsICpjcCA9IE5VTEw7CisgICAgbXBkX3NzaXplX3QgbGRpZ2l0czsKKyAgICBtcGRfc3NpemVfdCBtZW0gPSAwLCBrOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoZGVjKSkgeworCisgICAgICAgIG1lbSA9IHNpemVvZiAiLUluZmluaXR5IjsKKyAgICAgICAgaWYgKG1wZF9pc25hbihkZWMpICYmIGRlYy0+bGVuID4gMCkgeworICAgICAgICAgICAgLyogZGlhZ25vc3RpYyBjb2RlICovCisgICAgICAgICAgICBtZW0gKz0gZGVjLT5kaWdpdHM7CisgICAgICAgIH0KKyAgICAgICAgY3AgPSBkZWNzdHJpbmcgPSBtcGRfYWxsb2MobWVtLCBzaXplb2YgKmRlY3N0cmluZyk7CisgICAgICAgIGlmIChjcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAqcmVzdWx0ID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShkZWMpKSB7CisgICAgICAgICAgICAqY3ArKyA9ICctJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmbGFncyZNUERfRk1UX1NJR05fU1BBQ0UpIHsKKyAgICAgICAgICAgICpjcCsrID0gJyAnOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZsYWdzJk1QRF9GTVRfU0lHTl9QTFVTKSB7CisgICAgICAgICAgICAqY3ArKyA9ICcrJzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtcGRfaXNuYW4oZGVjKSkgeworICAgICAgICAgICAgaWYgKG1wZF9pc3FuYW4oZGVjKSkgeworICAgICAgICAgICAgICAgIHN0cmNweShjcCwgIk5hTiIpOworICAgICAgICAgICAgICAgIGNwICs9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdHJjcHkoY3AsICJzTmFOIik7CisgICAgICAgICAgICAgICAgY3AgKz0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkZWMtPmxlbiA+IDApIHsgLyogZGlhZ25vc3RpYyBjb2RlICovCisgICAgICAgICAgICAgICAgY3AgPSBjb2VmZl90b19zdHJpbmcoY3AsIGRlYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzaW5maW5pdGUoZGVjKSkgeworICAgICAgICAgICAgc3RyY3B5KGNwLCAiSW5maW5pdHkiKTsKKyAgICAgICAgICAgIGNwICs9IDg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7IC8qIGRlYnVnICovCisgICAgICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChkZWMtPmxlbiA+IDApOworCisgICAgICAgIC8qCisgICAgICAgICAqIEZvciBlYXNpZXIgbWFuaXB1bGF0aW9uIG9mIHRoZSBkZWNpbWFsIHBvaW50J3MgbG9jYXRpb24KKyAgICAgICAgICogYW5kIHRoZSBleHBvbmVudCB0aGF0IGlzIGZpbmFsbHkgcHJpbnRlZCwgdGhlIG51bWJlciBpcworICAgICAgICAgKiByZXNjYWxlZCB0byBhIHZpcnR1YWwgcmVwcmVzZW50YXRpb24gd2l0aCBleHAgPSAwLiBIZXJlCisgICAgICAgICAqIGxkaWdpdHMgZGVub3RlcyB0aGUgbnVtYmVyIG9mIGRlY2ltYWwgZGlnaXRzIHRvIHRoZSBsZWZ0CisgICAgICAgICAqIG9mIHRoZSBkZWNpbWFsIHBvaW50IGFuZCByZW1haW5zIGNvbnN0YW50IG9uY2UgaW5pdGlhbGl6ZWQuCisgICAgICAgICAqCisgICAgICAgICAqIGRwbGFjZSBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIGRlY2ltYWwgcG9pbnQgcmVsYXRpdmUgdG8KKyAgICAgICAgICogdGhlIHN0YXJ0IG9mIHRoZSBjb2VmZmljaWVudC4gTm90ZSB0aGF0IDMpIGFsd2F5cyBob2xkcworICAgICAgICAgKiB3aGVuIGRwbGFjZSBpcyBzaGlmdGVkLgorICAgICAgICAgKgorICAgICAgICAgKiAgIDEpIGxkaWdpdHMgOj0gZGVjLT5kaWdpdHMgLSBkZWMtPmV4cAorICAgICAgICAgKiAgIDIpIGRwbGFjZSAgOj0gbGRpZ2l0cyAgICAgICAgICAgIChpbml0aWFsbHkpCisgICAgICAgICAqICAgMykgZXhwICAgICA6PSBsZGlnaXRzIC0gZHBsYWNlICAgKGluaXRpYWxseSBleHAgPSAwKQorICAgICAgICAgKgorICAgICAgICAgKiAgIDAuMDAwMDBfLl9fX18uX19fX18wMDAwMDAuCisgICAgICAgICAqICAgIF4gICAgICBeICAgIF4gICAgICAgICAgIF4KKyAgICAgICAgICogICAgfCAgICAgIHwgICAgfCAgICAgICAgICAgfAorICAgICAgICAgKiAgICB8ICAgICAgfCAgICB8ICAgICAgICAgICBgLSBkcGxhY2UgPj0gZGlnaXRzCisgICAgICAgICAqICAgIHwgICAgICB8ICAgIGAtIGRwbGFjZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBjb2VmZmljaWVudAorICAgICAgICAgKiAgICB8ICAgICAgYCBkcGxhY2UgPSAxIChhZnRlciB0aGUgZmlyc3QgY29lZmZpY2llbnQgZGlnaXQpCisgICAgICAgICAqICAgIGAtIGRwbGFjZSA8PSAwCisgICAgICAgICAqLworCisgICAgICAgIGxkaWdpdHMgPSBkZWMtPmRpZ2l0cyArIGRlYy0+ZXhwOworCisgICAgICAgIGlmIChmbGFncyZNUERfRk1UX0VYUCkgeworICAgICAgICAgICAgOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZsYWdzJk1QRF9GTVRfRklYRUQgfHwgKGRlYy0+ZXhwIDw9IDAgJiYgbGRpZ2l0cyA+IC02KSkgeworICAgICAgICAgICAgLyogTVBEX0ZNVF9GSVhFRDogYWx3YXlzIHVzZSBmaXhlZCBwb2ludCBub3RhdGlvbi4KKyAgICAgICAgICAgICAqIE1QRF9GTVRfVE9TQ0ksIE1QRF9GTVRfVE9FTkc6IGZvciBhIGNlcnRhaW4gcmFuZ2UsCisgICAgICAgICAgICAgKiBvdmVycmlkZSBleHBvbmVudCBub3RhdGlvbi4gKi8KKyAgICAgICAgICAgIGRwbGFjZSA9IGxkaWdpdHM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZmxhZ3MmTVBEX0ZNVF9UT0VORykgeworICAgICAgICAgICAgaWYgKG1wZF9pc3plcm8oZGVjKSkgeworICAgICAgICAgICAgICAgIC8qIElmIHRoZSBleHBvbmVudCBpcyBkaXZpc2libGUgYnkgdGhyZWUsCisgICAgICAgICAgICAgICAgICogZHBsYWNlID0gMS4gT3RoZXJ3aXNlLCBtb3ZlIGRwbGFjZSBvbmUKKyAgICAgICAgICAgICAgICAgKiBvciB0d28gcGxhY2VzIHRvIHRoZSBsZWZ0LiAqLworICAgICAgICAgICAgICAgIGRwbGFjZSA9IC0xICsgbW9kX21wZF9zc2l6ZV90KGRlYy0+ZXhwKzIsIDMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7IC8qIGxkaWdpdHMtMSBpcyB0aGUgYWRqdXN0ZWQgZXhwb25lbnQsIHdoaWNoCisgICAgICAgICAgICAgICAgKiBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IHRocmVlLiBJZiBub3QsIG1vdmUKKyAgICAgICAgICAgICAgICAqIGRwbGFjZSBvbmUgb3IgdHdvIHBsYWNlcyB0byB0aGUgcmlnaHQuICovCisgICAgICAgICAgICAgICAgZHBsYWNlICs9IG1vZF9tcGRfc3NpemVfdChsZGlnaXRzLTEsIDMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQmFzaWMgc3BhY2UgcmVxdWlyZW1lbnRzOgorICAgICAgICAgKgorICAgICAgICAgKiBbLV1bLl1bY29lZmZkaWdpdHNdW0VdWy1dW2V4cGRpZ2l0cysxXVslXVsnXDAnXQorICAgICAgICAgKgorICAgICAgICAgKiBJZiB0aGUgZGVjaW1hbCBwb2ludCBsaWVzIG91dHNpZGUgb2YgdGhlIGNvZWZmaWNpZW50IGRpZ2l0cywKKyAgICAgICAgICogc3BhY2UgaXMgYWRqdXN0ZWQgYWNjb3JkaW5nbHkuCisgICAgICAgICAqLworICAgICAgICBpZiAoZHBsYWNlIDw9IDApIHsKKyAgICAgICAgICAgIG1lbSA9IC1kcGxhY2UgKyBkZWMtPmRpZ2l0cyArIDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZHBsYWNlID49IGRlYy0+ZGlnaXRzKSB7CisgICAgICAgICAgICBtZW0gPSBkcGxhY2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW0gPSBkZWMtPmRpZ2l0czsKKyAgICAgICAgfQorICAgICAgICBtZW0gKz0gKE1QRF9FWFBESUdJVFMrMSs2KTsKKworICAgICAgICBjcCA9IGRlY3N0cmluZyA9IG1wZF9hbGxvYyhtZW0sIHNpemVvZiAqZGVjc3RyaW5nKTsKKyAgICAgICAgaWYgKGNwID09IE5VTEwpIHsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKworICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoZGVjKSkgeworICAgICAgICAgICAgKmNwKysgPSAnLSc7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZmxhZ3MmTVBEX0ZNVF9TSUdOX1NQQUNFKSB7CisgICAgICAgICAgICAqY3ArKyA9ICcgJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmbGFncyZNUERfRk1UX1NJR05fUExVUykgeworICAgICAgICAgICAgKmNwKysgPSAnKyc7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZHBsYWNlIDw9IDApIHsKKyAgICAgICAgICAgIC8qIHNwYWNlOiAtZHBsYWNlK2RlYy0+ZGlnaXRzKzIgKi8KKyAgICAgICAgICAgICpjcCsrID0gJzAnOworICAgICAgICAgICAgKmNwKysgPSAnLic7CisgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgLWRwbGFjZTsgaysrKSB7CisgICAgICAgICAgICAgICAgKmNwKysgPSAnMCc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjcCA9IGNvZWZmX3RvX3N0cmluZyhjcCwgZGVjKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChkcGxhY2UgPj0gZGVjLT5kaWdpdHMpIHsKKyAgICAgICAgICAgIC8qIHNwYWNlOiBkcGxhY2UgKi8KKyAgICAgICAgICAgIGNwID0gY29lZmZfdG9fc3RyaW5nKGNwLCBkZWMpOworICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IGRwbGFjZS1kZWMtPmRpZ2l0czsgaysrKSB7CisgICAgICAgICAgICAgICAgKmNwKysgPSAnMCc7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBzcGFjZTogZGVjLT5kaWdpdHMrMSAqLworICAgICAgICAgICAgY3AgPSBjb2VmZl90b19zdHJpbmdfZG90KGNwLCBjcCtkcGxhY2UsIGRlYyk7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBDb25kaXRpb25zIGZvciBwcmludGluZyBhbiBleHBvbmVudDoKKyAgICAgICAgICoKKyAgICAgICAgICogICBNUERfRk1UX1RPU0NJLCBNUERfRk1UX1RPRU5HOiBvbmx5IGlmIGxkaWdpdHMgIT0gZHBsYWNlCisgICAgICAgICAqICAgTVBEX0ZNVF9GSVhFRDogICAgICAgICAgICAgICAgbmV2ZXIgKGxkaWdpdHMgPT0gZHBsYWNlKQorICAgICAgICAgKiAgIE1QRF9GTVRfRVhQOiAgICAgICAgICAgICAgICAgIGFsd2F5cworICAgICAgICAgKi8KKyAgICAgICAgaWYgKGxkaWdpdHMgIT0gZHBsYWNlIHx8IGZsYWdzJk1QRF9GTVRfRVhQKSB7CisgICAgICAgICAgICAvKiBzcGFjZTogZXhwZGlnaXRzKzIgKi8KKyAgICAgICAgICAgICpjcCsrID0gKGZsYWdzJk1QRF9GTVRfVVBQRVIpID8gJ0UnIDogJ2UnOworICAgICAgICAgICAgY3AgPSBleHBfdG9fc3RyaW5nKGNwLCBsZGlnaXRzLWRwbGFjZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmxhZ3MmTVBEX0ZNVF9QRVJDRU5UKSB7CisgICAgICAgICAgICAqY3ArKyA9ICclJzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydChjcCA8IGRlY3N0cmluZyttZW0pOworICAgIGFzc2VydChjcC1kZWNzdHJpbmcgPCBNUERfU1NJWkVfTUFYKTsKKworICAgICpjcCA9ICdcMCc7CisgICAgKnJlc3VsdCA9IGRlY3N0cmluZzsKKyAgICByZXR1cm4gKG1wZF9zc2l6ZV90KShjcC1kZWNzdHJpbmcpOworfQorCitjaGFyICoKK21wZF90b19zY2koY29uc3QgbXBkX3QgKmRlYywgaW50IGZtdCkKK3sKKyAgICBjaGFyICpyZXM7CisgICAgaW50IGZsYWdzID0gTVBEX0ZNVF9UT1NDSTsKKworICAgIGZsYWdzIHw9IGZtdCA/IE1QRF9GTVRfVVBQRVIgOiBNUERfRk1UX0xPV0VSOworICAgICh2b2lkKV9tcGRfdG9fc3RyaW5nKCZyZXMsIGRlYywgZmxhZ3MsIE1QRF9ERUZBVUxUX0RPVFBMQUNFKTsKKyAgICByZXR1cm4gcmVzOworfQorCitjaGFyICoKK21wZF90b19lbmcoY29uc3QgbXBkX3QgKmRlYywgaW50IGZtdCkKK3sKKyAgICBjaGFyICpyZXM7CisgICAgaW50IGZsYWdzID0gTVBEX0ZNVF9UT0VORzsKKworICAgIGZsYWdzIHw9IGZtdCA/IE1QRF9GTVRfVVBQRVIgOiBNUERfRk1UX0xPV0VSOworICAgICh2b2lkKV9tcGRfdG9fc3RyaW5nKCZyZXMsIGRlYywgZmxhZ3MsIE1QRF9ERUZBVUxUX0RPVFBMQUNFKTsKKyAgICByZXR1cm4gcmVzOworfQorCittcGRfc3NpemVfdAorbXBkX3RvX3NjaV9zaXplKGNoYXIgKipyZXMsIGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpCit7CisgICAgaW50IGZsYWdzID0gTVBEX0ZNVF9UT1NDSTsKKworICAgIGZsYWdzIHw9IGZtdCA/IE1QRF9GTVRfVVBQRVIgOiBNUERfRk1UX0xPV0VSOworICAgIHJldHVybiBfbXBkX3RvX3N0cmluZyhyZXMsIGRlYywgZmxhZ3MsIE1QRF9ERUZBVUxUX0RPVFBMQUNFKTsKK30KKworbXBkX3NzaXplX3QKK21wZF90b19lbmdfc2l6ZShjaGFyICoqcmVzLCBjb25zdCBtcGRfdCAqZGVjLCBpbnQgZm10KQoreworICAgIGludCBmbGFncyA9IE1QRF9GTVRfVE9FTkc7CisKKyAgICBmbGFncyB8PSBmbXQgPyBNUERfRk1UX1VQUEVSIDogTVBEX0ZNVF9MT1dFUjsKKyAgICByZXR1cm4gX21wZF90b19zdHJpbmcocmVzLCBkZWMsIGZsYWdzLCBNUERfREVGQVVMVF9ET1RQTEFDRSk7Cit9CisKKy8qIENvcHkgYSBzaW5nbGUgVVRGLTggY2hhciB0byBkZXN0LiBTZWU6IFRoZSBVbmljb2RlIFN0YW5kYXJkLCB2ZXJzaW9uIDUuMiwKKyAgIGNoYXB0ZXIgMy45OiBXZWxsLWZvcm1lZCBVVEYtOCBieXRlIHNlcXVlbmNlcy4gKi8KK3N0YXRpYyBpbnQKK19tcGRfY29weV91dGY4KGNoYXIgZGVzdFs1XSwgY29uc3QgY2hhciAqcykKK3sKKyAgICBjb25zdCB1Y2hhciAqY3AgPSAoY29uc3QgdWNoYXIgKilzOworICAgIHVjaGFyIGxiLCB1YjsKKyAgICBpbnQgY291bnQsIGk7CisKKworICAgIGlmICgqY3AgPT0gMCkgeworICAgICAgICAvKiBlbXB0eSBzdHJpbmcgKi8KKyAgICAgICAgZGVzdFswXSA9ICdcMCc7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPD0gMHg3ZikgeworICAgICAgICAvKiBhc2NpaSAqLworICAgICAgICBkZXN0WzBdID0gKmNwOworICAgICAgICBkZXN0WzFdID0gJ1wwJzsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGVsc2UgaWYgKDB4YzIgPD0gKmNwICYmICpjcCA8PSAweGRmKSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDI7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA9PSAweGUwKSB7CisgICAgICAgIGxiID0gMHhhMDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDM7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA8PSAweGVjKSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDM7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA9PSAweGVkKSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweDlmOworICAgICAgICBjb3VudCA9IDM7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA8PSAweGVmKSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDM7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA9PSAweGYwKSB7CisgICAgICAgIGxiID0gMHg5MDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA8PSAweGYzKSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA9PSAweGY0KSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweDhmOworICAgICAgICBjb3VudCA9IDQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBpbnZhbGlkICovCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZGVzdFswXSA9ICpjcCsrOworICAgIGlmICgqY3AgPCBsYiB8fCB1YiA8ICpjcCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBkZXN0WzFdID0gKmNwKys7CisgICAgZm9yIChpID0gMjsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKCpjcCA8IDB4ODAgfHwgMHhiZiA8ICpjcCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBkZXN0W2ldID0gKmNwKys7CisgICAgfQorICAgIGRlc3RbaV0gPSAnXDAnOworCisgICAgcmV0dXJuIGNvdW50OworCitlcnJvcjoKKyAgICBkZXN0WzBdID0gJ1wwJzsKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludAorbXBkX3ZhbGlkYXRlX2xjb252KG1wZF9zcGVjX3QgKnNwZWMpCit7CisgICAgc2l6ZV90IG47CisjaWYgQ0hBUl9NQVggPT0gU0NIQVJfTUFYCisgICAgY29uc3QgY2hhciAqY3AgPSBzcGVjLT5ncm91cGluZzsKKyAgICB3aGlsZSAoKmNwICE9ICdcMCcpIHsKKyAgICAgICAgaWYgKCpjcCsrIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisgICAgbiA9IHN0cmxlbihzcGVjLT5kb3QpOworICAgIGlmIChuID09IDAgfHwgbiA+IDQpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoc3RybGVuKHNwZWMtPnNlcCkgPiA0KSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CittcGRfcGFyc2VfZm10X3N0cihtcGRfc3BlY190ICpzcGVjLCBjb25zdCBjaGFyICpmbXQsIGludCBjYXBzKQoreworICAgIGNoYXIgKmNwID0gKGNoYXIgKilmbXQ7CisgICAgaW50IGhhdmVfYWxpZ24gPSAwLCBuOworCisgICAgLyogZGVmYXVsdHMgKi8KKyAgICBzcGVjLT5taW5fd2lkdGggPSAwOworICAgIHNwZWMtPnByZWMgPSAtMTsKKyAgICBzcGVjLT50eXBlID0gY2FwcyA/ICdHJyA6ICdnJzsKKyAgICBzcGVjLT5hbGlnbiA9ICc+JzsKKyAgICBzcGVjLT5zaWduID0gJy0nOworICAgIHNwZWMtPmRvdCA9ICIiOworICAgIHNwZWMtPnNlcCA9ICIiOworICAgIHNwZWMtPmdyb3VwaW5nID0gIiI7CisKKworICAgIC8qIHByZXN1bWUgdGhhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIGEgVVRGLTggZmlsbCBjaGFyYWN0ZXIgKi8KKyAgICBpZiAoKG4gPSBfbXBkX2NvcHlfdXRmOChzcGVjLT5maWxsLCBjcCkpIDwgMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBhbGlnbm1lbnQgZGlyZWN0aXZlLCBwcmVmaXhlZCBieSBhIGZpbGwgY2hhcmFjdGVyICovCisgICAgaWYgKCpjcCAmJiAoKihjcCtuKSA9PSAnPCcgfHwgKihjcCtuKSA9PSAnPicgfHwKKyAgICAgICAgICAgICAgICAqKGNwK24pID09ICc9JyB8fCAqKGNwK24pID09ICdeJykpIHsKKyAgICAgICAgY3AgKz0gbjsKKyAgICAgICAgc3BlYy0+YWxpZ24gPSAqY3ArKzsKKyAgICAgICAgaGF2ZV9hbGlnbiA9IDE7CisgICAgfSAvKiBhbGlnbm1lbnQgZGlyZWN0aXZlICovCisgICAgZWxzZSB7CisgICAgICAgIC8qIGRlZmF1bHQgZmlsbCBjaGFyYWN0ZXIgKi8KKyAgICAgICAgc3BlYy0+ZmlsbFswXSA9ICcgJzsKKyAgICAgICAgc3BlYy0+ZmlsbFsxXSA9ICdcMCc7CisgICAgICAgIGlmICgqY3AgPT0gJzwnIHx8ICpjcCA9PSAnPicgfHwKKyAgICAgICAgICAgICpjcCA9PSAnPScgfHwgKmNwID09ICdeJykgeworICAgICAgICAgICAgc3BlYy0+YWxpZ24gPSAqY3ArKzsKKyAgICAgICAgICAgIGhhdmVfYWxpZ24gPSAxOworICAgICAgICB9CisgICAgfQorCisgICAgLyogc2lnbiBmb3JtYXR0aW5nICovCisgICAgaWYgKCpjcCA9PSAnKycgfHwgKmNwID09ICctJyB8fCAqY3AgPT0gJyAnKSB7CisgICAgICAgIHNwZWMtPnNpZ24gPSAqY3ArKzsKKyAgICB9CisKKyAgICAvKiB6ZXJvIHBhZGRpbmcgKi8KKyAgICBpZiAoKmNwID09ICcwJykgeworICAgICAgICAvKiB6ZXJvIHBhZGRpbmcgaW1wbGllcyBhbGlnbm1lbnQsIHdoaWNoIHNob3VsZCBub3QgYmUKKyAgICAgICAgICogc3BlY2lmaWVkIHR3aWNlLiAqLworICAgICAgICBpZiAoaGF2ZV9hbGlnbikgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc3BlYy0+YWxpZ24gPSAneic7CisgICAgICAgIHNwZWMtPmZpbGxbMF0gPSAqY3ArKzsKKyAgICAgICAgc3BlYy0+ZmlsbFsxXSA9ICdcMCc7CisgICAgfQorCisgICAgLyogbWluaW11bSB3aWR0aCAqLworICAgIGlmIChpc2RpZ2l0KCh1Y2hhcikqY3ApKSB7CisgICAgICAgIGlmICgqY3AgPT0gJzAnKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBlcnJubyA9IDA7CisgICAgICAgIHNwZWMtPm1pbl93aWR0aCA9IG1wZF9zdHJ0b3NzaXplKGNwLCAmY3AsIDEwKTsKKyAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSB8fCBlcnJubyA9PSBFSU5WQUwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyogdGhvdXNhbmRzIHNlcGFyYXRvciAqLworICAgIGlmICgqY3AgPT0gJywnKSB7CisgICAgICAgIHNwZWMtPmRvdCA9ICIuIjsKKyAgICAgICAgc3BlYy0+c2VwID0gIiwiOworICAgICAgICBzcGVjLT5ncm91cGluZyA9ICJcMDAzXDAwMyI7CisgICAgICAgIGNwKys7CisgICAgfQorCisgICAgLyogZnJhY3Rpb24gZGlnaXRzIG9yIHNpZ25pZmljYW50IGRpZ2l0cyAqLworICAgIGlmICgqY3AgPT0gJy4nKSB7CisgICAgICAgIGNwKys7CisgICAgICAgIGlmICghaXNkaWdpdCgodWNoYXIpKmNwKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBzcGVjLT5wcmVjID0gbXBkX3N0cnRvc3NpemUoY3AsICZjcCwgMTApOworICAgICAgICBpZiAoZXJybm8gPT0gRVJBTkdFIHx8IGVycm5vID09IEVJTlZBTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiB0eXBlICovCisgICAgaWYgKCpjcCA9PSAnRScgfHwgKmNwID09ICdlJyB8fCAqY3AgPT0gJ0YnIHx8ICpjcCA9PSAnZicgfHwKKyAgICAgICAgKmNwID09ICdHJyB8fCAqY3AgPT0gJ2cnIHx8ICpjcCA9PSAnJScpIHsKKyAgICAgICAgc3BlYy0+dHlwZSA9ICpjcCsrOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPT0gJ04nIHx8ICpjcCA9PSAnbicpIHsKKyAgICAgICAgLyogbG9jYWxlIHNwZWNpZmljIGNvbnZlcnNpb24gKi8KKyAgICAgICAgc3RydWN0IGxjb252ICpsYzsKKyAgICAgICAgLyogc2VwYXJhdG9yIGhhcyBhbHJlYWR5IGJlZW4gc3BlY2lmaWVkICovCisgICAgICAgIGlmICgqc3BlYy0+c2VwKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzcGVjLT50eXBlID0gKmNwKys7CisgICAgICAgIHNwZWMtPnR5cGUgPSAoc3BlYy0+dHlwZSA9PSAnTicpID8gJ0cnIDogJ2cnOworICAgICAgICBsYyA9IGxvY2FsZWNvbnYoKTsKKyAgICAgICAgc3BlYy0+ZG90ID0gbGMtPmRlY2ltYWxfcG9pbnQ7CisgICAgICAgIHNwZWMtPnNlcCA9IGxjLT50aG91c2FuZHNfc2VwOworICAgICAgICBzcGVjLT5ncm91cGluZyA9IGxjLT5ncm91cGluZzsKKyAgICAgICAgaWYgKG1wZF92YWxpZGF0ZV9sY29udihzcGVjKSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiAwOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBjaGVjayBjb3JyZWN0bmVzcyAqLworICAgIGlmICgqY3AgIT0gJ1wwJykgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHNwZWMtPm1pbl93aWR0aCA8PSBNUERfTUFYX1BSRUMsIHdoaWNoCisgKiBpcyBtYWRlIHN1cmUgaW4gbXBkX3Fmb3JtYXRfc3BlYy4gVGhlbiwgZXZlbiB3aXRoIGEgc3BlYyB0aGF0IGluc2VydHMgYQorICogZm91ci1ieXRlIHNlcGFyYXRvciBhZnRlciBlYWNoIGRpZ2l0LCBuYnl0ZXMgaW4gdGhlIGZvbGxvd2luZyBzdHJ1Y3QKKyAqIGNhbm5vdCBvdmVyZmxvdy4KKyAqLworCisvKiBNdWx0aWJ5dGUgc3RyaW5nICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgbXBkX3NzaXplX3QgbmJ5dGVzOyAvKiBsZW5ndGggaW4gYnl0ZXMgKi8KKyAgICBtcGRfc3NpemVfdCBuY2hhcnM7IC8qIGxlbmd0aCBpbiBjaGFycyAqLworICAgIG1wZF9zc2l6ZV90IGN1cjsgICAgLyogY3VycmVudCB3cml0ZSBpbmRleCAqLworICAgIGNoYXIgKmRhdGE7Cit9IG1wZF9tYnN0cl90OworCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfYmNvcHkoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBtcGRfc3NpemVfdCBuKQoreworICAgIHdoaWxlICgtLW4gPj0gMCkgeworICAgICAgICBkZXN0W25dID0gc3JjW25dOworICAgIH0KK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbWJzdHJfY29weV9jaGFyKG1wZF9tYnN0cl90ICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIG1wZF9zc2l6ZV90IG4pCit7CisgICAgZGVzdC0+bmJ5dGVzICs9IG47CisgICAgZGVzdC0+bmNoYXJzICs9IChuID4gMCA/IDEgOiAwKTsKKyAgICBkZXN0LT5jdXIgLT0gbjsKKworICAgIGlmIChkZXN0LT5kYXRhICE9IE5VTEwpIHsKKyAgICAgICAgX21wZF9iY29weShkZXN0LT5kYXRhK2Rlc3QtPmN1ciwgc3JjLCBuKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21ic3RyX2NvcHlfYXNjaWkobXBkX21ic3RyX3QgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgbXBkX3NzaXplX3QgbikKK3sKKyAgICBkZXN0LT5uYnl0ZXMgKz0gbjsKKyAgICBkZXN0LT5uY2hhcnMgKz0gbjsKKyAgICBkZXN0LT5jdXIgLT0gbjsKKworICAgIGlmIChkZXN0LT5kYXRhICE9IE5VTEwpIHsKKyAgICAgICAgX21wZF9iY29weShkZXN0LT5kYXRhK2Rlc3QtPmN1ciwgc3JjLCBuKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21ic3RyX2NvcHlfcGFkKG1wZF9tYnN0cl90ICpkZXN0LCBtcGRfc3NpemVfdCBuKQoreworICAgIGRlc3QtPm5ieXRlcyArPSBuOworICAgIGRlc3QtPm5jaGFycyArPSBuOworICAgIGRlc3QtPmN1ciAtPSBuOworCisgICAgaWYgKGRlc3QtPmRhdGEgIT0gTlVMTCkgeworICAgICAgICBjaGFyICpjcCA9IGRlc3QtPmRhdGEgKyBkZXN0LT5jdXI7CisgICAgICAgIHdoaWxlICgtLW4gPj0gMCkgeworICAgICAgICAgICAgY3Bbbl0gPSAnMCc7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBDb3B5IGEgbnVtZXJpYyBzdHJpbmcgdG8gZGVzdC0+ZGF0YSwgYWRkaW5nIHNlcGFyYXRvcnMgaW4gdGhlIGludGVnZXIKKyAqIHBhcnQgYWNjb3JkaW5nIHRvIHNwZWMtPmdyb3VwaW5nLiBJZiBsZWFkaW5nIHplcm8gcGFkZGluZyBpcyBlbmFibGVkCisgKiBhbmQgdGhlIHJlc3VsdCBpcyBzbWFsbGVyIHRoYW4gc3BlYy0+bWluX3dpZHRoLCBjb250aW51ZSBhZGRpbmcgemVyb3MKKyAqIGFuZCBzZXBhcmF0b3JzIHVudGlsIHRoZSBtaW5pbXVtIHdpZHRoIGlzIHJlYWNoZWQuCisgKgorICogVGhlIGZpbmFsIGxlbmd0aCBvZiBkZXN0LT5kYXRhIGlzIHN0b3JlZCBpbiBkZXN0LT5uYnl0ZXMuIFRoZSBudW1iZXIKKyAqIG9mIFVURi04IGNoYXJhY3RlcnMgaXMgc3RvcmVkIGluIGRlc3QtPm5jaGFycy4KKyAqCisgKiBGaXJzdCBydW4gKGRlc3QtPmRhdGEgPT0gTlVMTCk6IGRldGVybWluZSB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQKKyAqIHN0cmluZyBhbmQgc3RvcmUgaXQgaW4gZGVzdC0+bmJ5dGVzLgorICoKKyAqIFNlY29uZCBydW4gKHdyaXRlIHRvIGRlc3QtPmRhdGEpOiBkYXRhIGlzIHdyaXR0ZW4gaW4gY2h1bmtzIGFuZCBpbgorICogcmV2ZXJzZSBvcmRlciwgc3RhcnRpbmcgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbnVtZXJpYyBzdHJpbmcuCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX2FkZF9zZXBfZG90KG1wZF9tYnN0cl90ICpkZXN0LAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaWduLCAvKiBsb2NhdGlvbiBvZiBvcHRpb25hbCBzaWduICovCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYywgbXBkX3NzaXplX3Qgbl9zcmMsIC8qIGludGVnZXIgcGFydCBhbmQgbGVuZ3RoICovCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRvdCwgLyogbG9jYXRpb24gb2Ygb3B0aW9uYWwgZGVjaW1hbCBwb2ludCAqLworICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZXN0LCBtcGRfc3NpemVfdCBuX3Jlc3QsIC8qIHJlbWFpbmluZyBwYXJ0IGFuZCBsZW5ndGggKi8KKyAgICAgICAgICAgICAgICAgY29uc3QgbXBkX3NwZWNfdCAqc3BlYykKK3sKKyAgICBtcGRfc3NpemVfdCBuX3NlcCwgbl9zaWduLCBjb25zdW1lOworICAgIGNvbnN0IGNoYXIgKmc7CisgICAgaW50IHBhZCA9IDA7CisKKyAgICBuX3NpZ24gPSBzaWduID8gMSA6IDA7CisgICAgbl9zZXAgPSAobXBkX3NzaXplX3Qpc3RybGVuKHNwZWMtPnNlcCk7CisgICAgLyogSW5pdGlhbCB3cml0ZSBpbmRleDogc2V0IHRvIGxvY2F0aW9uIG9mICdcMCcgaW4gdGhlIG91dHB1dCBzdHJpbmcuCisgICAgICogSXJyZWxldmFudCBmb3IgdGhlIGZpcnN0IHJ1bi4gKi8KKyAgICBkZXN0LT5jdXIgPSBkZXN0LT5uYnl0ZXM7CisgICAgZGVzdC0+bmJ5dGVzID0gZGVzdC0+bmNoYXJzID0gMDsKKworICAgIF9tYnN0cl9jb3B5X2FzY2lpKGRlc3QsIHJlc3QsIG5fcmVzdCk7CisKKyAgICBpZiAoZG90KSB7CisgICAgICAgIF9tYnN0cl9jb3B5X2NoYXIoZGVzdCwgZG90LCAobXBkX3NzaXplX3Qpc3RybGVuKGRvdCkpOworICAgIH0KKworICAgIGcgPSBzcGVjLT5ncm91cGluZzsKKyAgICBjb25zdW1lID0gKmc7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgLyogSWYgdGhlIGdyb3VwIGxlbmd0aCBpcyAwIG9yIENIQVJfTUFYIG9yIGdyZWF0ZXIgdGhhbiB0aGUKKyAgICAgICAgICogbnVtYmVyIG9mIHNvdXJjZSBieXRlcywgY29uc3VtZSBhbGwgcmVtYWluaW5nIGJ5dGVzLiAqLworICAgICAgICBpZiAoKmcgPT0gMCB8fCAqZyA9PSBDSEFSX01BWCB8fCBjb25zdW1lID4gbl9zcmMpIHsKKyAgICAgICAgICAgIGNvbnN1bWUgPSBuX3NyYzsKKyAgICAgICAgfQorICAgICAgICBuX3NyYyAtPSBjb25zdW1lOworICAgICAgICBpZiAocGFkKSB7CisgICAgICAgICAgICBfbWJzdHJfY29weV9wYWQoZGVzdCwgY29uc3VtZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfbWJzdHJfY29weV9hc2NpaShkZXN0LCBzcmMrbl9zcmMsIGNvbnN1bWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5fc3JjID09IDApIHsKKyAgICAgICAgICAgIC8qIEVpdGhlciB0aGUgcmVhbCBzb3VyY2Ugb2YgaW50cGFydCBkaWdpdHMgb3IgdGhlIHZpcnR1YWwKKyAgICAgICAgICAgICAqIHNvdXJjZSBvZiBwYWRkaW5nIHplcm9zIGlzIGV4aGF1c3RlZC4gKi8KKyAgICAgICAgICAgIGlmIChzcGVjLT5hbGlnbiA9PSAneicgJiYKKyAgICAgICAgICAgICAgICBkZXN0LT5uY2hhcnMgKyBuX3NpZ24gPCBzcGVjLT5taW5fd2lkdGgpIHsKKyAgICAgICAgICAgICAgICAvKiBaZXJvIHBhZGRpbmcgaXMgc2V0IGFuZCBsZW5ndGggPCBtaW5fd2lkdGg6CisgICAgICAgICAgICAgICAgICogR2VuZXJhdGUgbl9zcmMgYWRkaXRpb25hbCBjaGFyYWN0ZXJzLiAqLworICAgICAgICAgICAgICAgIG5fc3JjID0gc3BlYy0+bWluX3dpZHRoIC0gKGRlc3QtPm5jaGFycyArIG5fc2lnbik7CisgICAgICAgICAgICAgICAgLyogTmV4dCBpdGVyYXRpb246CisgICAgICAgICAgICAgICAgICogICBjYXNlICpnID09IDAgfHwgKmcgPT0gQ0hBUl9NQVg6CisgICAgICAgICAgICAgICAgICogICAgICBjb25zdW1lIGFsbCBwYWRkaW5nIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICAgKiAgIGNhc2UgY29uc3VtZSA8IGcqOgorICAgICAgICAgICAgICAgICAqICAgICAgZmlsbCByZW1haW5kZXIgb2YgY3VycmVudCBncm91cAorICAgICAgICAgICAgICAgICAqICAgY2FzZSBjb25zdW1lID09IGcqCisgICAgICAgICAgICAgICAgICogICAgICBjb3B5aW5nIGlzIGEgbm8tb3AgKi8KKyAgICAgICAgICAgICAgICBjb25zdW1lID0gKmcgLSBjb25zdW1lOworICAgICAgICAgICAgICAgIC8qIFN3aXRjaCBvbiB2aXJ0dWFsIHNvdXJjZSBvZiB6ZXJvcy4gKi8KKyAgICAgICAgICAgICAgICBwYWQgPSAxOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAobl9zZXAgPiAwKSB7CisgICAgICAgICAgICAvKiBJZiBwYWRkaW5nIGlzIHN3aXRjaGVkIG9uLCBzZXBhcmF0b3JzIGFyZSBjb3VudGVkCisgICAgICAgICAgICAgKiBhcyBwYWRkaW5nIGNoYXJhY3RlcnMuIFRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSBpZgorICAgICAgICAgICAgICogdGhlIHNlcGFyYXRvciB3b3VsZCBiZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZQorICAgICAgICAgICAgICogcmVzdWx0IHN0cmluZy4gKi8KKyAgICAgICAgICAgIGlmIChwYWQgJiYgbl9zcmMgPiAxKSBuX3NyYyAtPSAxOworICAgICAgICAgICAgX21ic3RyX2NvcHlfY2hhcihkZXN0LCBzcGVjLT5zZXAsIG5fc2VwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIElmIG5vbi1OVUwsIHVzZSB0aGUgbmV4dCB2YWx1ZSBmb3IgZ3JvdXBpbmcuICovCisgICAgICAgIGlmICgqZyAmJiAqKGcrMSkpIGcrKzsKKyAgICAgICAgY29uc3VtZSA9ICpnOworICAgIH0KKworICAgIGlmIChzaWduKSB7CisgICAgICAgIF9tYnN0cl9jb3B5X2FzY2lpKGRlc3QsIHNpZ24sIDEpOworICAgIH0KKworICAgIGlmIChkZXN0LT5kYXRhKSB7CisgICAgICAgIGRlc3QtPmRhdGFbZGVzdC0+bmJ5dGVzXSA9ICdcMCc7CisgICAgfQorfQorCisvKgorICogQ29udmVydCBhIG51bWVyaWMtc3RyaW5nIHRvIGl0cyBsb2NhbGUtc3BlY2lmaWMgYXBwZWFyYW5jZS4KKyAqIFRoZSBzdHJpbmcgbXVzdCBoYXZlIG9uZSBvZiB0aGVzZSBmb3JtczoKKyAqCisgKiAgICAgMSkgW3NpZ25dIGRpZ2l0cyBbZXhwb25lbnQtcGFydF0KKyAqICAgICAyKSBbc2lnbl0gZGlnaXRzICcuJyBbZGlnaXRzXSBbZXhwb25lbnQtcGFydF0KKyAqCisgKiBOb3QgYWxsb3dlZCwgc2luY2UgX21wZF90b19zdHJpbmcoKSBuZXZlciByZXR1cm5zIHRoaXMgZm9ybToKKyAqCisgKiAgICAgMykgW3NpZ25dICcuJyBkaWdpdHMgW2V4cG9uZW50LXBhcnRdCisgKiAKKyAqIElucHV0OiByZXN1bHQtPmRhdGEgOj0gb3JpZ2luYWwgbnVtZXJpYyBzdHJpbmcgKEFTQ0lJKQorICogICAgICAgIHJlc3VsdC0+Ynl0ZXMgOj0gc3RybGVuKHJlc3VsdC0+ZGF0YSkKKyAqICAgICAgICByZXN1bHQtPm5jaGFycyA6PSBzdHJsZW4ocmVzdWx0LT5kYXRhKQorICoKKyAqIE91dHB1dDogcmVzdWx0LT5kYXRhIDo9IG1vZGlmaWVkIG9yIG9yaWdpbmFsIHN0cmluZworICogICAgICAgICByZXN1bHQtPmJ5dGVzIDo9IHN0cmxlbihyZXN1bHQtPmRhdGEpCisgKiAgICAgICAgIHJlc3VsdC0+bmNoYXJzIDo9IG51bWJlciBvZiBjaGFyYWN0ZXJzIChwb3NzaWJseSBVVEYtOCkKKyAqLworc3RhdGljIGludAorX21wZF9hcHBseV9sY29udihtcGRfbWJzdHJfdCAqcmVzdWx0LCBjb25zdCBtcGRfc3BlY190ICpzcGVjLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGNvbnN0IGNoYXIgKnNpZ24gPSBOVUxMLCAqaW50cGFydCA9IE5VTEwsICpkb3QgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnJlc3QsICpkcDsKKyAgICBjaGFyICpkZWNzdHJpbmc7CisgICAgbXBkX3NzaXplX3Qgbl9pbnQsIG5fcmVzdDsKKworICAgIC8qIG9yaWdpbmFsIG51bWVyaWMgc3RyaW5nICovCisgICAgZHAgPSByZXN1bHQtPmRhdGE7CisKKyAgICAvKiBzaWduICovCisgICAgaWYgKCpkcCA9PSAnKycgfHwgKmRwID09ICctJyB8fCAqZHAgPT0gJyAnKSB7CisgICAgICAgIHNpZ24gPSBkcCsrOworICAgIH0KKyAgICAvKiBpbnRlZ2VyIHBhcnQgKi8KKyAgICBhc3NlcnQoaXNkaWdpdCgodWNoYXIpKmRwKSk7CisgICAgaW50cGFydCA9IGRwKys7CisgICAgd2hpbGUgKGlzZGlnaXQoKHVjaGFyKSpkcCkpIHsKKyAgICAgICAgZHArKzsKKyAgICB9CisgICAgbl9pbnQgPSAobXBkX3NzaXplX3QpKGRwLWludHBhcnQpOworICAgIC8qIGRlY2ltYWwgcG9pbnQgKi8KKyAgICBpZiAoKmRwID09ICcuJykgeworICAgICAgICBkcCsrOyBkb3QgPSBzcGVjLT5kb3Q7CisgICAgfQorICAgIC8qIHJlc3QgKi8KKyAgICByZXN0ID0gZHA7CisgICAgbl9yZXN0ID0gcmVzdWx0LT5uYnl0ZXMgLSAobXBkX3NzaXplX3QpKGRwLXJlc3VsdC0+ZGF0YSk7CisKKyAgICBpZiAoZG90ID09IE5VTEwgJiYgKCpzcGVjLT5zZXAgPT0gJ1wwJyB8fCAqc3BlYy0+Z3JvdXBpbmcgPT0gJ1wwJykpIHsKKyAgICAgICAgLyogX21wZF9hZGRfc2VwX2RvdCgpIHdvdWxkIG5vdCBjaGFuZ2UgYW55dGhpbmcgKi8KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogRGV0ZXJtaW5lIHRoZSBzaXplIG9mIHRoZSBuZXcgZGVjaW1hbCBzdHJpbmcgYWZ0ZXIgaW5zZXJ0aW5nIHRoZQorICAgICAqIGRlY2ltYWwgcG9pbnQsIG9wdGlvbmFsIHNlcGFyYXRvcnMgYW5kIG9wdGlvbmFsIHBhZGRpbmcuICovCisgICAgZGVjc3RyaW5nID0gcmVzdWx0LT5kYXRhOworICAgIHJlc3VsdC0+ZGF0YSA9IE5VTEw7CisgICAgX21wZF9hZGRfc2VwX2RvdChyZXN1bHQsIHNpZ24sIGludHBhcnQsIG5faW50LCBkb3QsCisgICAgICAgICAgICAgICAgICAgICByZXN0LCBuX3Jlc3QsIHNwZWMpOworCisgICAgcmVzdWx0LT5kYXRhID0gbXBkX2FsbG9jKHJlc3VsdC0+bmJ5dGVzKzEsIDEpOworICAgIGlmIChyZXN1bHQtPmRhdGEgPT0gTlVMTCkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgIG1wZF9mcmVlKGRlY3N0cmluZyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIFBlcmZvcm0gYWN0dWFsIHdyaXRlcy4gKi8KKyAgICBfbXBkX2FkZF9zZXBfZG90KHJlc3VsdCwgc2lnbiwgaW50cGFydCwgbl9pbnQsIGRvdCwKKyAgICAgICAgICAgICAgICAgICAgIHJlc3QsIG5fcmVzdCwgc3BlYyk7CisKKyAgICBtcGRfZnJlZShkZWNzdHJpbmcpOworICAgIHJldHVybiAxOworfQorCisvKiBBZGQgcGFkZGluZyB0byB0aGUgZm9ybWF0dGVkIHN0cmluZyBpZiBuZWNlc3NhcnkuICovCitzdGF0aWMgaW50CitfbXBkX2FkZF9wYWQobXBkX21ic3RyX3QgKnJlc3VsdCwgY29uc3QgbXBkX3NwZWNfdCAqc3BlYywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAocmVzdWx0LT5uY2hhcnMgPCBzcGVjLT5taW5fd2lkdGgpIHsKKyAgICAgICAgbXBkX3NzaXplX3QgYWRkX2NoYXJzLCBhZGRfYnl0ZXM7CisgICAgICAgIHNpemVfdCBscGFkID0gMCwgcnBhZCA9IDA7CisgICAgICAgIHNpemVfdCBuX2ZpbGwsIGxlbiwgaSwgajsKKyAgICAgICAgY2hhciBhbGlnbiA9IHNwZWMtPmFsaWduOworICAgICAgICB1aW50OF90IGVyciA9IDA7CisgICAgICAgIGNoYXIgKmNwOworCisgICAgICAgIG5fZmlsbCA9IHN0cmxlbihzcGVjLT5maWxsKTsKKyAgICAgICAgYWRkX2NoYXJzID0gKHNwZWMtPm1pbl93aWR0aCAtIHJlc3VsdC0+bmNoYXJzKTsKKyAgICAgICAgLyogbWF4IHZhbHVlOiBNUERfTUFYX1BSRUMgKiA0ICovCisgICAgICAgIGFkZF9ieXRlcyA9IGFkZF9jaGFycyAqIChtcGRfc3NpemVfdCluX2ZpbGw7CisKKyAgICAgICAgY3AgPSByZXN1bHQtPmRhdGEgPSBtcGRfcmVhbGxvYyhyZXN1bHQtPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5uYnl0ZXMrYWRkX2J5dGVzKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICpyZXN1bHQtPmRhdGEsICZlcnIpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgICAgICBtcGRfZnJlZShyZXN1bHQtPmRhdGEpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYWxpZ24gPT0gJ3onKSB7CisgICAgICAgICAgICBhbGlnbiA9ICc9JzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhbGlnbiA9PSAnPCcpIHsKKyAgICAgICAgICAgIHJwYWQgPSBhZGRfY2hhcnM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYWxpZ24gPT0gJz4nIHx8IGFsaWduID09ICc9JykgeworICAgICAgICAgICAgbHBhZCA9IGFkZF9jaGFyczsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsgLyogYWxpZ24gPT0gJ14nICovCisgICAgICAgICAgICBscGFkID0gYWRkX2NoYXJzLzI7CisgICAgICAgICAgICBycGFkID0gYWRkX2NoYXJzLWxwYWQ7CisgICAgICAgIH0KKworICAgICAgICBsZW4gPSByZXN1bHQtPm5ieXRlczsKKyAgICAgICAgaWYgKGFsaWduID09ICc9JyAmJiAoKmNwID09ICctJyB8fCAqY3AgPT0gJysnIHx8ICpjcCA9PSAnICcpKSB7CisgICAgICAgICAgICAvKiBsZWF2ZSBzaWduIGluIHRoZSBsZWFkaW5nIHBvc2l0aW9uICovCisgICAgICAgICAgICBjcCsrOyBsZW4tLTsKKyAgICAgICAgfQorCisgICAgICAgIG1lbW1vdmUoY3Arbl9maWxsKmxwYWQsIGNwLCBsZW4pOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbHBhZDsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9maWxsOyBqKyspIHsKKyAgICAgICAgICAgICAgICBjcFtpKm5fZmlsbCtqXSA9IHNwZWMtPmZpbGxbal07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY3AgKz0gKG5fZmlsbCpscGFkICsgbGVuKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHJwYWQ7IGkrKykgeworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG5fZmlsbDsgaisrKSB7CisgICAgICAgICAgICAgICAgY3BbaSpuX2ZpbGwral0gPSBzcGVjLT5maWxsW2pdOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LT5uYnl0ZXMgKz0gYWRkX2J5dGVzOworICAgICAgICByZXN1bHQtPm5jaGFycyArPSBhZGRfY2hhcnM7CisgICAgICAgIHJlc3VsdC0+ZGF0YVtyZXN1bHQtPm5ieXRlc10gPSAnXDAnOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisvKiBSb3VuZCBhIG51bWJlciB0byBwcmVjIGRpZ2l0cy4gVGhlIGFkanVzdGVkIGV4cG9uZW50IHN0YXlzIHRoZSBzYW1lCisgICBvciBpbmNyZWFzZXMgYnkgb25lIGlmIHJvdW5kaW5nIHVwIGNyb3NzZXMgYSBwb3dlciBvZiB0ZW4gYm91bmRhcnkuCisgICBJZiByZXN1bHQtPmRpZ2l0cyB3b3VsZCBleGNlZWQgTVBEX01BWF9QUkVDKzEsIE1QRF9JbnZhbGlkX29wZXJhdGlvbgorICAgaXMgc2V0IGFuZCB0aGUgcmVzdWx0IGlzIE5hTi4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9yb3VuZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgcHJlYywKKyAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IGV4cCA9IGEtPmV4cCArIGEtPmRpZ2l0cyAtIHByZWM7CisKKyAgICBpZiAocHJlYyA8PSAwKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICByZXR1cm47IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzemVybyhhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIHJldHVybjsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKworICAgIG1wZF9xcmVzY2FsZV9mbXQocmVzdWx0LCBhLCBleHAsIGN0eCwgc3RhdHVzKTsKKyAgICBpZiAocmVzdWx0LT5kaWdpdHMgPiBwcmVjKSB7CisgICAgICAgIG1wZF9xcmVzY2FsZV9mbXQocmVzdWx0LCByZXN1bHQsIGV4cCsxLCBjdHgsIHN0YXR1cyk7CisgICAgfQorfQorCisvKgorICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gbXBkX3QsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gJ3NwZWMnLgorICogVGhlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGlzIGFzc3VtZWQgdG8gYmUgdmFsaWQuIE1lbW9yeSBlcnJvcnMgYXJlIGluZGljYXRlZAorICogYXMgdXN1YWwuIFRoaXMgZnVuY3Rpb24gaXMgcXVpZXQuCisgKi8KK2NoYXIgKgorbXBkX3Fmb3JtYXRfc3BlYyhjb25zdCBtcGRfdCAqZGVjLCBjb25zdCBtcGRfc3BlY190ICpzcGVjLAorICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCBkdFtNUERfTUlOQUxMT0NfTUFYXTsKKyAgICBtcGRfdCB0bXAgPSB7TVBEX1NUQVRJQ3xNUERfU1RBVElDX0RBVEEsMCwwLDAsTVBEX01JTkFMTE9DX01BWCxkdH07CisgICAgbXBkX3NzaXplX3QgZHBsYWNlID0gTVBEX0RFRkFVTFRfRE9UUExBQ0U7CisgICAgbXBkX21ic3RyX3QgcmVzdWx0OworICAgIG1wZF9zcGVjX3Qgc3RhY2tzcGVjOworICAgIGNoYXIgdHlwZSA9IHNwZWMtPnR5cGU7CisgICAgaW50IGZsYWdzID0gMDsKKworCisgICAgaWYgKHNwZWMtPm1pbl93aWR0aCA+IE1QRF9NQVhfUFJFQykgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGlzdXBwZXIoKHVjaGFyKXR5cGUpKSB7CisgICAgICAgIHR5cGUgPSB0b2xvd2VyKCh1Y2hhcil0eXBlKTsKKyAgICAgICAgZmxhZ3MgfD0gTVBEX0ZNVF9VUFBFUjsKKyAgICB9CisgICAgaWYgKHNwZWMtPnNpZ24gPT0gJyAnKSB7CisgICAgICAgIGZsYWdzIHw9IE1QRF9GTVRfU0lHTl9TUEFDRTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3BlYy0+c2lnbiA9PSAnKycpIHsKKyAgICAgICAgZmxhZ3MgfD0gTVBEX0ZNVF9TSUdOX1BMVVM7CisgICAgfQorCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoZGVjKSkgeworICAgICAgICBpZiAoc3BlYy0+YWxpZ24gPT0gJ3onKSB7CisgICAgICAgICAgICBzdGFja3NwZWMgPSAqc3BlYzsKKyAgICAgICAgICAgIHN0YWNrc3BlYy5maWxsWzBdID0gJyAnOworICAgICAgICAgICAgc3RhY2tzcGVjLmZpbGxbMV0gPSAnXDAnOworICAgICAgICAgICAgc3RhY2tzcGVjLmFsaWduID0gJz4nOworICAgICAgICAgICAgc3BlYyA9ICZzdGFja3NwZWM7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgICAgICBtcGRfc3NpemVfdCBwcmVjOworCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlICdnJzogZmxhZ3MgfD0gTVBEX0ZNVF9UT1NDSTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2UnOiBmbGFncyB8PSBNUERfRk1UX0VYUDsgYnJlYWs7CisgICAgICAgIGNhc2UgJyUnOiBmbGFncyB8PSBNUERfRk1UX1BFUkNFTlQ7CisgICAgICAgICAgICAgICAgICBpZiAoIW1wZF9xY29weSgmdG1wLCBkZWMsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIHRtcC5leHAgKz0gMjsKKyAgICAgICAgICAgICAgICAgIGRlYyA9ICZ0bXA7CisgICAgICAgICAgICAgICAgICB0eXBlID0gJ2YnOyAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSAnZic6IGZsYWdzIHw9IE1QRF9GTVRfRklYRUQ7IGJyZWFrOworICAgICAgICBkZWZhdWx0OiBhYm9ydCgpOyAvKiBkZWJ1ZzogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNwZWMtPnByZWMgPj0gMCkgeworICAgICAgICAgICAgaWYgKHNwZWMtPnByZWMgPiBNUERfTUFYX1BSRUMpIHsKKyAgICAgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgJ2cnOgorICAgICAgICAgICAgICAgIHByZWMgPSAoc3BlYy0+cHJlYyA9PSAwKSA/IDEgOiBzcGVjLT5wcmVjOworICAgICAgICAgICAgICAgIGlmIChkZWMtPmRpZ2l0cyA+IHByZWMpIHsKKyAgICAgICAgICAgICAgICAgICAgX21wZF9yb3VuZCgmdG1wLCBkZWMsIHByZWMsIGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd29ya3N0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgIGRlYyA9ICZ0bXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZSc6CisgICAgICAgICAgICAgICAgaWYgKG1wZF9pc3plcm8oZGVjKSkgeworICAgICAgICAgICAgICAgICAgICBkcGxhY2UgPSAxLXNwZWMtPnByZWM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBfbXBkX3JvdW5kKCZ0bXAsIGRlYywgc3BlYy0+cHJlYysxLCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndvcmtzdGF0dXMpOworICAgICAgICAgICAgICAgICAgICBkZWMgPSAmdG1wOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2YnOgorICAgICAgICAgICAgICAgIG1wZF9xcmVzY2FsZSgmdG1wLCBkZWMsIC1zcGVjLT5wcmVjLCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBkZWMgPSAmdG1wOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5cGUgPT0gJ2YnKSB7CisgICAgICAgICAgICBpZiAobXBkX2lzemVybyhkZWMpICYmIGRlYy0+ZXhwID4gMCkgeworICAgICAgICAgICAgICAgIG1wZF9xcmVzY2FsZSgmdG1wLCBkZWMsIDAsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICAgICAgICAgICAgIGRlYyA9ICZ0bXA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAod29ya3N0YXR1cyZNUERfRXJyb3JzKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9ICh3b3Jrc3RhdHVzJk1QRF9FcnJvcnMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogQXQgdGhpcyBwb2ludCwgZm9yIGFsbCBzY2FsZWQgb3Igbm9uLXNjYWxlZCBkZWNpbWFsczoKKyAgICAgKiAgIDEpIDEgPD0gZGlnaXRzIDw9IE1BWF9QUkVDKzEKKyAgICAgKiAgIDIpIGFkamV4cChzY2FsZWQpID0gYWRqZXhwKG9yaWcpIFsrMV0KKyAgICAgKiAgIDMpICAgY2FzZSAnZyc6IE1JTl9FVElOWSA8PSBleHAgPD0gTUFYX0VNQVgrMQorICAgICAqICAgICAgICBjYXNlICdlJzogTUlOX0VUSU5ZLU1BWF9QUkVDIDw9IGV4cCA8PSBNQVhfRU1BWCsxCisgICAgICogICAgICAgIGNhc2UgJ2YnOiBNSU5fRVRJTlkgPD0gZXhwIDw9IE1BWF9FTUFYKzEKKyAgICAgKiAgIDQpIG1heCBtZW1vcnkgYWxsb2MgaW4gX21wZF90b19zdHJpbmc6CisgICAgICogICAgICAgIGNhc2UgJ2cnOiBNQVhfUFJFQyszNgorICAgICAqICAgICAgICBjYXNlICdlJzogTUFYX1BSRUMrMzYKKyAgICAgKiAgICAgICAgY2FzZSAnZic6IDIqTVBEX01BWF9QUkVDKzMwCisgICAgICovCisgICAgcmVzdWx0Lm5ieXRlcyA9IF9tcGRfdG9fc3RyaW5nKCZyZXN1bHQuZGF0YSwgZGVjLCBmbGFncywgZHBsYWNlKTsKKyAgICByZXN1bHQubmNoYXJzID0gcmVzdWx0Lm5ieXRlczsKKyAgICBpZiAocmVzdWx0Lm5ieXRlcyA8IDApIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICgqc3BlYy0+ZG90ICE9ICdcMCcgJiYgIW1wZF9pc3NwZWNpYWwoZGVjKSkgeworICAgICAgICBpZiAocmVzdWx0Lm5jaGFycyA+IE1QRF9NQVhfUFJFQyszNikgeworICAgICAgICAgICAgLyogU2luY2UgYSBncm91cCBsZW5ndGggb2Ygb25lIGlzIG5vdCBleHBsaWNpdGx5CisgICAgICAgICAgICAgKiBkaXNhbGxvd2VkLCBlbnN1cmUgdGhhdCBpdCBpcyBhbHdheXMgcG9zc2libGUgdG8KKyAgICAgICAgICAgICAqIGluc2VydCBhIGZvdXIgYnl0ZSBzZXBhcmF0b3IgYWZ0ZXIgZWFjaCBkaWdpdC4gKi8KKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgbXBkX2ZyZWUocmVzdWx0LmRhdGEpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIV9tcGRfYXBwbHlfbGNvbnYoJnJlc3VsdCwgc3BlYywgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzcGVjLT5taW5fd2lkdGgpIHsKKyAgICAgICAgaWYgKCFfbXBkX2FkZF9wYWQoJnJlc3VsdCwgc3BlYywgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9kZWwoJnRtcCk7CisgICAgcmV0dXJuIHJlc3VsdC5kYXRhOworCitlcnJvcjoKKyAgICBtcGRfZGVsKCZ0bXApOworICAgIHJldHVybiBOVUxMOworfQorCitjaGFyICoKK21wZF9xZm9ybWF0KGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IGNoYXIgKmZtdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3BlY190IHNwZWM7CisKKyAgICBpZiAoIW1wZF9wYXJzZV9mbXRfc3RyKCZzcGVjLCBmbXQsIDEpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbXBkX3Fmb3JtYXRfc3BlYyhkZWMsICZzcGVjLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBUaGUgc3BlY2lmaWNhdGlvbiBoYXMgYSAqY29uZGl0aW9uKiBjYWxsZWQgSW52YWxpZF9vcGVyYXRpb24gYW5kIGFuCisgKiBJRUVFICpzaWduYWwqIGNhbGxlZCBJbnZhbGlkX29wZXJhdGlvbi4gVGhlIGZvcm1lciBjb3JyZXNwb25kcyB0bworICogTVBEX0ludmFsaWRfb3BlcmF0aW9uLCB0aGUgbGF0dGVyIHRvIE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uLgorICogTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24gY29tcHJpc2VzIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBbTVBEX0NvbnZlcnNpb25fc3ludGF4LCBNUERfRGl2aXNpb25faW1wb3NzaWJsZSwgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCwKKyAqICBNUERfRnB1X2Vycm9yLCBNUERfSW52YWxpZF9jb250ZXh0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sCisgKiAgTVBEX01hbGxvY19lcnJvcl0KKyAqCisgKiBJbiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucywgJ2ZsYWcnIGRlbm90ZXMgdGhlIGNvbmRpdGlvbiwgJ3NpZ25hbCcKKyAqIGRlbm90ZXMgdGhlIElFRUUgc2lnbmFsLgorICovCisKK3N0YXRpYyBjb25zdCBjaGFyICptcGRfZmxhZ19zdHJpbmdbTVBEX05VTV9GTEFHU10gPSB7CisgICAgIkNsYW1wZWQiLAorICAgICJDb252ZXJzaW9uX3N5bnRheCIsCisgICAgIkRpdmlzaW9uX2J5X3plcm8iLAorICAgICJEaXZpc2lvbl9pbXBvc3NpYmxlIiwKKyAgICAiRGl2aXNpb25fdW5kZWZpbmVkIiwKKyAgICAiRnB1X2Vycm9yIiwKKyAgICAiSW5leGFjdCIsCisgICAgIkludmFsaWRfY29udGV4dCIsCisgICAgIkludmFsaWRfb3BlcmF0aW9uIiwKKyAgICAiTWFsbG9jX2Vycm9yIiwKKyAgICAiTm90X2ltcGxlbWVudGVkIiwKKyAgICAiT3ZlcmZsb3ciLAorICAgICJSb3VuZGVkIiwKKyAgICAiU3Vibm9ybWFsIiwKKyAgICAiVW5kZXJmbG93IiwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICptcGRfc2lnbmFsX3N0cmluZ1tNUERfTlVNX0ZMQUdTXSA9IHsKKyAgICAiQ2xhbXBlZCIsCisgICAgIklFRUVfSW52YWxpZF9vcGVyYXRpb24iLAorICAgICJEaXZpc2lvbl9ieV96ZXJvIiwKKyAgICAiSUVFRV9JbnZhbGlkX29wZXJhdGlvbiIsCisgICAgIklFRUVfSW52YWxpZF9vcGVyYXRpb24iLAorICAgICJJRUVFX0ludmFsaWRfb3BlcmF0aW9uIiwKKyAgICAiSW5leGFjdCIsCisgICAgIklFRUVfSW52YWxpZF9vcGVyYXRpb24iLAorICAgICJJRUVFX0ludmFsaWRfb3BlcmF0aW9uIiwKKyAgICAiSUVFRV9JbnZhbGlkX29wZXJhdGlvbiIsCisgICAgIk5vdF9pbXBsZW1lbnRlZCIsCisgICAgIk92ZXJmbG93IiwKKyAgICAiUm91bmRlZCIsCisgICAgIlN1Ym5vcm1hbCIsCisgICAgIlVuZGVyZmxvdyIsCit9OworCisvKiBwcmludCBjb25kaXRpb25zIHRvIGJ1ZmZlciwgc2VwYXJhdGVkIGJ5IHNwYWNlcyAqLworaW50CittcGRfc25wcmludF9mbGFncyhjaGFyICpkZXN0LCBpbnQgbm1lbWIsIHVpbnQzMl90IGZsYWdzKQoreworICAgIGNoYXIgKmNwOworICAgIGludCBuLCBqOworCisgICAgYXNzZXJ0KG5tZW1iID49IE1QRF9NQVhfRkxBR19TVFJJTkcpOworCisgICAgKmRlc3QgPSAnXDAnOyBjcCA9IGRlc3Q7CisgICAgZm9yIChqID0gMDsgaiA8IE1QRF9OVU1fRkxBR1M7IGorKykgeworICAgICAgICBpZiAoZmxhZ3MgJiAoMVU8PGopKSB7CisgICAgICAgICAgICBuID0gc25wcmludGYoY3AsIG5tZW1iLCAiJXMgIiwgbXBkX2ZsYWdfc3RyaW5nW2pdKTsKKyAgICAgICAgICAgIGlmIChuIDwgMCB8fCBuID49IG5tZW1iKSByZXR1cm4gLTE7CisgICAgICAgICAgICBjcCArPSBuOyBubWVtYiAtPSBuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNwICE9IGRlc3QpIHsKKyAgICAgICAgKigtLWNwKSA9ICdcMCc7CisgICAgfQorCisgICAgcmV0dXJuIChpbnQpKGNwLWRlc3QpOworfQorCisvKiBwcmludCBjb25kaXRpb25zIHRvIGJ1ZmZlciwgaW4gbGlzdCBmb3JtICovCitpbnQKK21wZF9sc25wcmludF9mbGFncyhjaGFyICpkZXN0LCBpbnQgbm1lbWIsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBjaGFyICpmbGFnX3N0cmluZ1tdKQoreworICAgIGNoYXIgKmNwOworICAgIGludCBuLCBqOworCisgICAgYXNzZXJ0KG5tZW1iID49IE1QRF9NQVhfRkxBR19MSVNUKTsKKyAgICBpZiAoZmxhZ19zdHJpbmcgPT0gTlVMTCkgeworICAgICAgICBmbGFnX3N0cmluZyA9IG1wZF9mbGFnX3N0cmluZzsKKyAgICB9CisKKyAgICAqZGVzdCA9ICdbJzsKKyAgICAqKGRlc3QrMSkgPSAnXDAnOworICAgIGNwID0gZGVzdCsxOworICAgIC0tbm1lbWI7CisKKyAgICBmb3IgKGogPSAwOyBqIDwgTVBEX05VTV9GTEFHUzsgaisrKSB7CisgICAgICAgIGlmIChmbGFncyAmICgxVTw8aikpIHsKKyAgICAgICAgICAgIG4gPSBzbnByaW50ZihjcCwgbm1lbWIsICIlcywgIiwgZmxhZ19zdHJpbmdbal0pOworICAgICAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gbm1lbWIpIHJldHVybiAtMTsKKyAgICAgICAgICAgIGNwICs9IG47IG5tZW1iIC09IG47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBlcmFzZSB0aGUgbGFzdCAiLCAiICovCisgICAgaWYgKGNwICE9IGRlc3QrMSkgeworICAgICAgICBjcCAtPSAyOworICAgIH0KKworICAgICpjcCsrID0gJ10nOworICAgICpjcCA9ICdcMCc7CisKKyAgICByZXR1cm4gKGludCkoY3AtZGVzdCk7IC8qIHN0cmxlbiwgd2l0aG91dCBOVUwgdGVybWluYXRvciAqLworfQorCisvKiBwcmludCBzaWduYWxzIHRvIGJ1ZmZlciwgaW4gbGlzdCBmb3JtICovCitpbnQKK21wZF9sc25wcmludF9zaWduYWxzKGNoYXIgKmRlc3QsIGludCBubWVtYiwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IGNoYXIgKnNpZ25hbF9zdHJpbmdbXSkKK3sKKyAgICBjaGFyICpjcDsKKyAgICBpbnQgbiwgajsKKyAgICBpbnQgaWVlZV9pbnZhbGlkX2RvbmUgPSAwOworCisgICAgYXNzZXJ0KG5tZW1iID49IE1QRF9NQVhfU0lHTkFMX0xJU1QpOworICAgIGlmIChzaWduYWxfc3RyaW5nID09IE5VTEwpIHsKKyAgICAgICAgc2lnbmFsX3N0cmluZyA9IG1wZF9zaWduYWxfc3RyaW5nOworICAgIH0KKworICAgICpkZXN0ID0gJ1snOworICAgICooZGVzdCsxKSA9ICdcMCc7CisgICAgY3AgPSBkZXN0KzE7CisgICAgLS1ubWVtYjsKKworICAgIGZvciAoaiA9IDA7IGogPCBNUERfTlVNX0ZMQUdTOyBqKyspIHsKKyAgICAgICAgdWludDMyX3QgZiA9IGZsYWdzICYgKDFVPDxqKTsKKyAgICAgICAgaWYgKGYpIHsKKyAgICAgICAgICAgIGlmIChmJk1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKGllZWVfaW52YWxpZF9kb25lKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZWVlX2ludmFsaWRfZG9uZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuID0gc25wcmludGYoY3AsIG5tZW1iLCAiJXMsICIsIHNpZ25hbF9zdHJpbmdbal0pOworICAgICAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gbm1lbWIpIHJldHVybiAtMTsKKyAgICAgICAgICAgIGNwICs9IG47IG5tZW1iIC09IG47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBlcmFzZSB0aGUgbGFzdCAiLCAiICovCisgICAgaWYgKGNwICE9IGRlc3QrMSkgeworICAgICAgICBjcCAtPSAyOworICAgIH0KKworICAgICpjcCsrID0gJ10nOworICAgICpjcCA9ICdcMCc7CisKKyAgICByZXR1cm4gKGludCkoY3AtZGVzdCk7IC8qIHN0cmxlbiwgd2l0aG91dCBOVUwgdGVybWluYXRvciAqLworfQorCisvKiBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgYXJlIG1haW5seSBpbnRlbmRlZCBmb3IgZGVidWdnaW5nLiAqLwordm9pZAorbXBkX2ZwcmludChGSUxFICpmaWxlLCBjb25zdCBtcGRfdCAqZGVjKQoreworICAgIGNoYXIgKmRlY3N0cmluZzsKKworICAgIGRlY3N0cmluZyA9IG1wZF90b19zY2koZGVjLCAxKTsKKyAgICBpZiAoZGVjc3RyaW5nICE9IE5VTEwpIHsKKyAgICAgICAgZnByaW50ZihmaWxlLCAiJXNcbiIsIGRlY3N0cmluZyk7CisgICAgICAgIG1wZF9mcmVlKGRlY3N0cmluZyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmcHV0cygibXBkX2ZwcmludDogb3V0cHV0IGVycm9yXG4iLCBmaWxlKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KK30KKwordm9pZAorbXBkX3ByaW50KGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgY2hhciAqZGVjc3RyaW5nOworCisgICAgZGVjc3RyaW5nID0gbXBkX3RvX3NjaShkZWMsIDEpOworICAgIGlmIChkZWNzdHJpbmcgIT0gTlVMTCkgeworICAgICAgICBwcmludGYoIiVzXG4iLCBkZWNzdHJpbmcpOworICAgICAgICBtcGRfZnJlZShkZWNzdHJpbmcpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZnB1dHMoIm1wZF9mcHJpbnQ6IG91dHB1dCBlcnJvclxuIiwgc3RkZXJyKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RmY2U3MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIElPX0gKKyNkZWZpbmUgSU9fSAorCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisKKyNpZiBTSVpFX01BWCA9PSBNUERfU0laRV9NQVgKKyAgI2RlZmluZSBtcGRfc3RydG9zc2l6ZSBfbXBkX3N0cnRvc3NpemUKKyNlbHNlCitzdGF0aWMgaW5saW5lIG1wZF9zc2l6ZV90CittcGRfc3RydG9zc2l6ZShjb25zdCBjaGFyICpzLCBjaGFyICoqZW5kLCBpbnQgYmFzZSkKK3sKKyAgICBpbnQ2NF90IHJldHZhbDsKKworICAgIGVycm5vID0gMDsKKyAgICByZXR2YWwgPSBfbXBkX3N0cnRvc3NpemUocywgZW5kLCBiYXNlKTsKKyAgICBpZiAoZXJybm8gPT0gMCAmJiAocmV0dmFsID4gTVBEX1NTSVpFX01BWCB8fCByZXR2YWwgPCBNUERfU1NJWkVfTUlOKSkgeworICAgICAgICBlcnJubyA9IEVSQU5HRTsKKyAgICB9CisgICAgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICByZXR1cm4gKHJldHZhbCA8IDApID8gTVBEX1NTSVpFX01JTiA6IE1QRF9TU0laRV9NQVg7CisgICAgfQorCisgICAgcmV0dXJuIChtcGRfc3NpemVfdClyZXR2YWw7Cit9CisjZW5kaWYKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9SRUZFUkVOQ0VTLnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9SRUZFUkVOQ0VTLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWQ1NzgyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL1JFRkVSRU5DRVMudHh0CkBAIC0wLDAgKzEsNTEgQEAKKworCitUaGlzIGRvY3VtZW50IGNvbnRhaW5zIGxpbmtzIHRvIHRoZSBsaXRlcmF0dXJlIHVzZWQgaW4gdGhlIHByb2Nlc3Mgb2YKK2NyZWF0aW5nIHRoZSBsaWJyYXJ5LiBUaGUgbGlzdCBpcyBwcm9iYWJseSBub3QgY29tcGxldGUuCisKKworTWlrZSBDb3dsaXNoYXc6IEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24KK2h0dHA6Ly9zcGVsZW90cm92ZS5jb20vZGVjaW1hbC9kZWNhcml0aC5odG1sCisKKworSmVhbi1NaWNoZWwgTXVsbGVyOiBPbiB0aGUgZGVmaW5pdGlvbiBvZiB1bHAgKHgpCitsYXJhLmluaXN0LmZyL2JpdHN0cmVhbS8yMzMyLzUxOC8xL0xJUC1SUjIwMDUtMDkucGRmCisKKworVC4gRS4gSHVsbCwgQS4gQWJyaGFtOiBQcm9wZXJseSByb3VuZGVkIHZhcmlhYmxlIHByZWNpc2lvbiBzcXVhcmUgcm9vdAoraHR0cDovL3BvcnRhbC5hY20ub3JnL2NpdGF0aW9uLmNmbT9pZD0yMTQ0MTMKKworCitULiBFLiBIdWxsLCBBLiBBYnJoYW06IFZhcmlhYmxlIHByZWNpc2lvbiBleHBvbmVudGlhbCBmdW5jdGlvbgoraHR0cDovL3BvcnRhbC5hY20ub3JnL2NpdGF0aW9uLmNmbT9pZD02NDk4CisKKworUm9tYW4gRS4gTWFlZGVyOiBTdG9yYWdlIGFsbG9jYXRpb24gZm9yIHRoZSBLYXJhdHN1YmEgaW50ZWdlciBtdWx0aXBsaWNhdGlvbgorYWxnb3JpdGhtLiAgaHR0cDovL3d3dy5zcHJpbmdlcmxpbmsuY29tL2NvbnRlbnQvdzE1MDU4bWo2djU5dDU2NS8KKworCitKLiBNLiBQb2xsYXJkOiBUaGUgZmFzdCBGb3VyaWVyIHRyYW5zZm9ybSBpbiBhIGZpbml0ZSBmaWVsZAoraHR0cDovL3d3dy5hbXMub3JnL2pvdXJuYWxzL21jb20vMTk3MS0yNS0xMTQvUzAwMjUtNTcxOC0xOTcxLTAzMDE5NjYtMC9ob21lLmh0bWwKKworCitEYXZpZCBILiBCYWlsZXk6IEZGVHMgaW4gRXh0ZXJuYWwgb3IgSGllcmFyY2hpY2FsIE1lbW9yeQoraHR0cDovL2NyZC5sYmwuZ292L35kaGJhaWxleS9kaGJwYXBlcnMvCisKKworVy4gTW9ydmVuIEdlbnRsZW1hbjogTWF0cml4IE11bHRpcGxpY2F0aW9uIGFuZCBGYXN0IEZvdXJpZXIgVHJhbnNmb3JtcworaHR0cDovL3d3dy5hbGNhdGVsLWx1Y2VudC5jb20vYnN0ai92b2w0Ny0xOTY4L2FydGljbGVzL2JzdGo0Ny02LTEwOTkucGRmCisKKworTWlra28gVG9tbWlsYTogQXBmbG9hdCBkb2N1bWVudGF0aW9uCitodHRwOi8vd3d3LmFwZmxvYXQub3JnL2FwZmxvYXQvMi40MS9hcGZsb2F0LnBkZgorCisKK0pvZXJnIEFybmR0OiAiTWF0dGVycyBDb21wdXRhdGlvbmFsIgoraHR0cDovL3d3dy5qamouZGUvZnh0LworCisKK0thcmwgSGFzc2Vsc3Ryb206IEZhc3QgRGl2aXNpb24gb2YgTGFyZ2UgSW50ZWdlcnMKK3d3dy50cmVza2FsLmNvbS9rYWxsZS9leGpvYmIvb3JpZ2luYWwtcmVwb3J0LnBkZgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL2JpZ251bS50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvYmlnbnVtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTg3MzFkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL2JpZ251bS50eHQKQEAgLTAsMCArMSw4MyBAQAorCisKK0JpZ251bSBzdXBwb3J0IChGYXN0IE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtIG9yIEZOVCk6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitCaWdudW0gYXJpdGhtZXRpYyBpbiBsaWJtcGRlYyB1c2VzIHRoZSBzY2hlbWUgZm9yIGZhc3QgY29udm9sdXRpb24KK29mIGludGVnZXIgc2VxdWVuY2VzIGZyb206CisKK0ouIE0uIFBvbGxhcmQ6IFRoZSBmYXN0IEZvdXJpZXIgdHJhbnNmb3JtIGluIGEgZmluaXRlIGZpZWxkCitodHRwOi8vd3d3LmFtcy5vcmcvam91cm5hbHMvbWNvbS8xOTcxLTI1LTExNC9TMDAyNS01NzE4LTE5NzEtMDMwMTk2Ni0wL2hvbWUuaHRtbAorCisKK1RoZSB0cmFuc2Zvcm0gaW4gYSBmaW5pdGUgZmllbGQgY2FuIGJlIHVzZWQgZm9yIGNvbnZvbHV0aW9uIGluIHRoZSBzYW1lCit3YXkgYXMgdGhlIEZvdXJpZXIgVHJhbnNmb3JtLiBUaGUgbWFpbiBhZHZhbnRhZ2VzIG9mIHRoZSBOdW1iZXIgVGhlb3JldGljCitUcmFuc2Zvcm0gYXJlIHRoYXQgaXQgaXMgYm90aCBleGFjdCBhbmQgdmVyeSBtZW1vcnkgZWZmaWNpZW50LgorCisKK0NvbnZvbHV0aW9uIGluIHBzZXVkby1jb2RlOgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKyAgZm50X2NvbnZvbHV0ZShhLCBiKToKKyAgICB4ID0gZm50KGEpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvcndhcmQgdHJhbnNmb3JtIG9mIGEKKyAgICB5ID0gZm50KGIpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvcndhcmQgdHJhbnNmb3JtIG9mIGIKKyAgICB6ID0gcGFpcndpc2UgbXVsdGlwbHkgeFtpXSBhbmQgeVtpXQorICAgIHJlc3VsdCA9IGludl9mbnQoeikgICAgICAgICAgICAgICAgICMgYmFja3dhcmQgdHJhbnNmb3JtIG9mIHouCisgCisKK0V4dGVuZGluZyB0aGUgbWF4aW11bSB0cmFuc2Zvcm0gbGVuZ3RoIChDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtKToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1heGltdW0gdHJhbnNmb3JtIGxlbmd0aCBpcyBxdWl0ZSBsaW1pdGVkIHdoZW4gdXNpbmcgYSBzaW5nbGUKK3ByaW1lIGZpZWxkLiBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgbXVsdGlwbGUgcHJpbWVzIGFuZAorcmVjb3ZlciB0aGUgcmVzdWx0IHVzaW5nIHRoZSBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtLgorCisKK011bHRpcGxpY2F0aW9uIGluIHBzZXVkby1jb2RlOgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKyAgX21wZF9mbnRtdWwodSwgdik6CisgICAgYzEgPSBmbnRfY29udm9sdXRlKHUsIHYsIFAxKSAgIyBjb252b2x1dGUgbW9kdWxvIHByaW1lMQorICAgIGMyID0gZm50X2NvbnZvbHV0ZSh1LCB2LCBQMikgICMgY29udm9sdXRlIG1vZHVsbyBwcmltZTIKKyAgICBjMyA9IGZudF9jb252b2x1dGUodSwgdiwgUDMpICAjIGNvbnZvbHV0ZSBtb2R1bG8gcHJpbWUzCisgICAgcmVzdWx0ID0gY3J0MyhjMSwgYzIsIGMzKSAgICAgIyBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtCisKKworT3B0aW1pemVkIHRyYW5zZm9ybSBmdW5jdGlvbnM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHRocmVlIGRpZmZlcmVudCBmbnQoKSBmdW5jdGlvbnM6CisKKyAgIHN0ZF9mbnQ6ICJzdGFuZGFyZCIgZGVjaW1hdGlvbiBpbiBmcmVxdWVuY3kgdHJhbnNmb3JtIGZvciBhcnJheSBsZW5ndGhzCisgICAgICAgICAgICBvZiAyKipuLiBQZXJmb3JtcyB3ZWxsIHVwIHRvIDEwMjQgd29yZHMuCisKKyAgIHNpeHN0ZXA6IENhY2hlLWZyaWVuZGx5IGFsZ29yaXRobSBmb3IgYXJyYXkgbGVuZ3RocyBvZiAyKipuLiBPdXRwZXJmb3JtcworICAgICAgICAgICAgc3RkX2ZudCBmb3IgbGFyZ2UgYXJyYXlzLgorCisgICBmb3Vyc3RlcDogQWxnb3JpdGhtIGZvciBhcnJheSBsZW5ndGhzIG9mIDMgKiAyKipuLiBBbHNvIGNhY2hlIGZyaWVuZGx5CisgICAgICAgICAgICAgaW4gbGFyZ2UgcGFydHMuCisKKworTGlzdCBvZiBiaWdudW0tb25seSBmaWxlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Z1bmN0aW9ucyBmcm9tIHRoZXNlIGZpbGVzIGFyZSBvbmx5IHVzZWQgaW4gX21wZF9mbnRtdWwoKS4KKworICB1bW9kYXJpdGguaCAgICAtPiBmYXN0IGxvdyBsZXZlbCByb3V0aW5lcyBmb3IgdW5zaWduZWQgbW9kdWxhciBhcml0aG1ldGljCisgIG51bWJlcnRoZW9yeS5jIC0+IHJvdXRpbmVzIGZvciBzZXR0aW5nIHVwIHRoZSBGTlQKKyAgZGlmcmFkaXgyLmMgICAgLT4gZGVjaW1hdGlvbiBpbiBmcmVxdWVuY3kgdHJhbnNmb3JtLCB1c2VkIGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAiYmFzZSBjYXNlIiBieSB0aGUgZm9sbG93aW5nIHRocmVlIGZpbGVzOgorCisgICAgICBmbnQuYyAgICAgICAgICAtPiBzdGFuZGFyZCB0cmFuc2Zvcm0gZm9yIHNtYWxsZXIgYXJyYXlzCisgICAgICBzaXhzdGVwLmMgICAgICAtPiB0cmFuc2Zvcm0gbGFyZ2UgYXJyYXlzIG9mIGxlbmd0aCAyKipuCisgICAgICBmb3Vyc3RlcC5jICAgICAtPiB0cmFuc2Zvcm0gYXJyYXlzIG9mIGxlbmd0aCAzICogMioqbgorCisgIGNvbnZvbHV0ZS5jICAgIC0+IGRvIHRoZSBhY3R1YWwgZmFzdCBjb252b2x1dGlvbiwgdXNpbmcgb25lIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSB0aHJlZSB0cmFuc2Zvcm0gZnVuY3Rpb25zLgorICB0cmFuc3Bvc2UuYyAgICAtPiB0cmFuc3Bvc2l0aW9ucyBuZWVkZWQgZm9yIHRoZSBzaXhzdGVwIGFsZ29yaXRobS4KKyAgY3J0LmMgICAgICAgICAgLT4gQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbTogdXNlIGluZm9ybWF0aW9uIGZyb20gdGhyZWUKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtcyBtb2R1bG8gdGhyZWUgZGlmZmVyZW50IHByaW1lcyB0byBnZXQgdGhlCisgICAgICAgICAgICAgICAgICAgIGZpbmFsIHJlc3VsdC4KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9mbnQucHkgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvZm50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmOTM3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvZm50LnB5CkBAIC0wLDAgKzEsMjA4IEBACisjCisjIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMKKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisjIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisjIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KKyMKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICBUaGlzIGZpbGUgbGlzdHMgYW5kIGNoZWNrcyBzb21lIG9mIHRoZSBjb25zdGFudHMgYW5kIGxpbWl0cyB1c2VkICAjCisjICBpbiBsaWJtcGRlYydzIE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtLiBBdCB0aGUgZW5kIG9mIHRoZSBmaWxlICAjCisjICB0aGVyZSBpcyBhbiBleGFtcGxlIGZ1bmN0aW9uIGZvciB0aGUgcGxhaW4gREZUIHRyYW5zZm9ybS4gICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKworIworIyBOdW1iZXIgdGhlb3JldGljIHRyYW5zZm9ybXMgYXJlIGRvbmUgaW4gc3ViZmllbGRzIG9mIEYocCkuIFBbaV0KKyMgYXJlIHRoZSBwcmltZXMsIERbaV0gPSBQW2ldIC0gMSBhcmUgaGlnaGx5IGNvbXBvc2l0ZSBhbmQgd1tpXQorIyBhcmUgdGhlIHJlc3BlY3RpdmUgcHJpbWl0aXZlIHJvb3RzIG9mIEYocCkuCisjCisjIFRoZSBzdHJhdGVneSBpcyB0byBjb252b2x1dGUgdHdvIGNvZWZmaWNpZW50cyBtb2R1bG8gYWxsIHRocmVlCisjIHByaW1lcywgdGhlbiB1c2UgdGhlIENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW0gb24gdGhlIHRocmVlCisjIHJlc3VsdCBhcnJheXMgdG8gcmVjb3ZlciB0aGUgcmVzdWx0IGluIHRoZSB1c3VhbCBiYXNlIFJBRElYCisjIGZvcm0uCisjCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZSByb290cworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMKKyMgVmVyaWZ5IHByaW1pdGl2ZSByb290czoKKyMKKyMgRm9yIGEgcHJpbWUgZmllbGQsIHIgaXMgYSBwcmltaXRpdmUgcm9vdCBpZiBhbmQgb25seSBpZiBmb3IgYWxsIHByaW1lCisjIGZhY3RvcnMgZiBvZiBwLTEsIHIqKigocC0xKS9mKSA9Lz0gMSAgKG1vZCBwKS4KKyMKK2RlZiBwcm9kKEYsIEUpOgorICAgICIiIkNoZWNrIHRoYXQgdGhlIGZhY3Rvcml6YXRpb24gb2YgUC0xIGlzIGNvcnJlY3QuIEYgaXMgdGhlIGxpc3Qgb2YKKyAgICAgICBmYWN0b3JzIG9mIFAtMSwgRSBsaXN0cyB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIGVhY2ggZmFjdG9yLiIiIgorICAgIHggPSAxCisgICAgZm9yIHksIHogaW4gemlwKEYsIEUpOgorICAgICAgICB4ICo9IHkqKnoKKyAgICByZXR1cm4geAorCitkZWYgaXNfcHJpbWl0aXZlX3Jvb3QociwgcCwgZmFjdG9ycywgZXhwb25lbnRzKToKKyAgICAiIiJDaGVjayBpZiByIGlzIGEgcHJpbWl0aXZlIHJvb3Qgb2YgRihwKS4iIiIKKyAgICBpZiBwICE9IHByb2QoZmFjdG9ycywgZXhwb25lbnRzKSArIDE6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGZvciBmIGluIGZhY3RvcnM6CisgICAgICAgIHEsIGNvbnRyb2wgPSBkaXZtb2QocC0xLCBmKQorICAgICAgICBpZiBjb250cm9sICE9IDA6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgcG93KHIsIHEsIHApID09IDE6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgQ29uc3RhbnRzIGFuZCBsaW1pdHMgZm9yIHRoZSA2NC1iaXQgdmVyc2lvbgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSQURJWCA9IDEwKioxOQorCisjIFByaW1lcyBQMSwgUDIgYW5kIFAzOgorUCA9IFsyKio2NC0yKiozMisxLCAyKio2NC0yKiozNCsxLCAyKio2NC0yKio0MCsxXQorCisjIFAtMSwgaGlnaGx5IGNvbXBvc2l0ZS4gVGhlIHRyYW5zZm9ybSBsZW5ndGggZCBpcyB2YXJpYWJsZSBhbmQKKyMgbXVzdCBkaXZpZGUgRCA9IFAtMS4gU2luY2UgYWxsIEQgYXJlIGRpdmlzaWJsZSBieSAzICogMioqMzIsCisjIHRyYW5zZm9ybSBsZW5ndGhzIGNhbiBiZSAyKipuIG9yIDMgKiAyKipuICh3aGVyZSBuIDw9IDMyKS4KK0QgPSBbMioqMzIgKiAzICAgICogKDUgKiAxNyAqIDI1NyAqIDY1NTM3KSwKKyAgICAgMioqMzQgKiAzKioyICogKDcgKiAxMSAqIDMxICogMTUxICogMzMxKSwKKyAgICAgMioqNDAgKiAzKioyICogKDUgKiA3ICogMTMgKiAxNyAqIDI0MSldCisKKyMgUHJpbWUgZmFjdG9ycyBvZiBQLTEgYW5kIHRoZWlyIGV4cG9uZW50czoKK0YgPSBbKDIsMyw1LDE3LDI1Nyw2NTUzNyksICgyLDMsNywxMSwzMSwxNTEsMzMxKSwgKDIsMyw1LDcsMTMsMTcsMjQxKV0KK0UgPSBbKDMyLDEsMSwxLDEsMSksICgzNCwyLDEsMSwxLDEsMSksICg0MCwyLDEsMSwxLDEsMSldCisKKyMgTWF4aW11bSB0cmFuc2Zvcm0gbGVuZ3RoIGZvciAyKipuLiBBYm92ZSB0aGF0IG9ubHkgMyAqIDIqKjMxCisjIG9yIDMgKiAyKiozMiBhcmUgcG9zc2libGUuCitNUERfTUFYVFJBTlNGT1JNXzJOID0gMioqMzIKKworCisjIExpbWl0cyBpbiB0aGUgdGVybWlub2xvZ3kgb2YgUG9sbGFyZCdzIHBhcGVyOgorbTIgPSAoTVBEX01BWFRSQU5TRk9STV8yTiAqIDMpIC8vIDIgIyBNYXhpbXVtIGxlbmd0aCBvZiB0aGUgc21hbGxlciBhcnJheS4KK00xID0gTTIgPSBSQURJWC0xICAgICAgICAgICAgICAgICAgICMgTWF4aW11bSB2YWx1ZSBwZXIgc2luZ2xlIHdvcmQuCitMID0gbTIgKiBNMSAqIE0yCitQWzBdICogUFsxXSAqIFBbMl0gPiAyICogTAorCisKKyMgUHJpbWl0aXZlIHJvb3RzIG9mIEYoUDEpLCBGKFAyKSBhbmQgRihQMyk6Cit3ID0gWzcsIDEwLCAxOV0KKworIyBUaGUgcHJpbWl0aXZlIHJvb3RzIGFyZSBjb3JyZWN0OgorZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgaWYgbm90IGlzX3ByaW1pdGl2ZV9yb290KHdbaV0sIFBbaV0sIEZbaV0sIEVbaV0pOgorICAgICAgICBwcmludCgiRkFJTCIpCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICBDb25zdGFudHMgYW5kIGxpbWl0cyBmb3IgdGhlIDMyLWJpdCB2ZXJzaW9uCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JBRElYID0gMTAqKjkKKworIyBQcmltZXMgUDEsIFAyIGFuZCBQMzoKK1AgPSBbMjExMzkyOTIxNywgMjAxMzI2NTkyMSwgMTgxMTkzOTMyOV0KKworIyBQLTEsIGhpZ2hseSBjb21wb3NpdGUuIEFsbCBEID0gUC0xIGFyZSBkaXZpc2libGUgYnkgMyAqIDIqKjI1LAorIyBhbGxvd2luZyBmb3IgdHJhbnNmb3JtIGxlbmd0aHMgdXAgdG8gMyAqIDIqKjI1IHdvcmRzLgorRCA9IFsyKioyNSAqIDMqKjIgKiA3LAorICAgICAyKioyNyAqIDMgICAgKiA1LAorICAgICAyKioyNiAqIDMqKjNdCisKKyMgUHJpbWUgZmFjdG9ycyBvZiBQLTEgYW5kIHRoZWlyIGV4cG9uZW50czoKK0YgPSBbKDIsMyw3KSwgKDIsMyw1KSwgKDIsMyldCitFID0gWygyNSwyLDEpLCAoMjcsMSwxKSwgKDI2LDMpXQorCisjIE1heGltdW0gdHJhbnNmb3JtIGxlbmd0aCBmb3IgMioqbi4gQWJvdmUgdGhhdCBvbmx5IDMgKiAyKioyNCBvcgorIyAzICogMioqMjUgYXJlIHBvc3NpYmxlLgorTVBEX01BWFRSQU5TRk9STV8yTiA9IDIqKjI1CisKKworIyBMaW1pdHMgaW4gdGhlIHRlcm1pbm9sb2d5IG9mIFBvbGxhcmQncyBwYXBlcjoKK20yID0gKE1QRF9NQVhUUkFOU0ZPUk1fMk4gKiAzKSAvLyAyICMgTWF4aW11bSBsZW5ndGggb2YgdGhlIHNtYWxsZXIgYXJyYXkuCitNMSA9IE0yID0gUkFESVgtMSAgICAgICAgICAgICAgICAgICAjIE1heGltdW0gdmFsdWUgcGVyIHNpbmdsZSB3b3JkLgorTCA9IG0yICogTTEgKiBNMgorUFswXSAqIFBbMV0gKiBQWzJdID4gMiAqIEwKKworCisjIFByaW1pdGl2ZSByb290cyBvZiBGKFAxKSwgRihQMikgYW5kIEYoUDMpOgordyA9IFs1LCAzMSwgMTNdCisKKyMgVGhlIHByaW1pdGl2ZSByb290cyBhcmUgY29ycmVjdDoKK2ZvciBpIGluIHJhbmdlKDMpOgorICAgIGlmIG5vdCBpc19wcmltaXRpdmVfcm9vdCh3W2ldLCBQW2ldLCBGW2ldLCBFW2ldKToKKyAgICAgICAgcHJpbnQoIkZBSUwiKQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgRXhhbXBsZSB0cmFuc2Zvcm0gdXNpbmcgYSBzaW5nbGUgcHJpbWUKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZWYgbnR0KGxzdCwgZGlyKToKKyAgICAiIiJQZXJmb3JtIGEgdHJhbnNmb3JtIG9uIHRoZSBlbGVtZW50cyBvZiBsc3QuIGxlbihsc3QpIG11c3QKKyAgICAgICBiZSAyKipuIG9yIDMgKiAyKipuLCB3aGVyZSBuIDw9IDI1LiBUaGlzIGlzIHRoZSBzbG93IERGVC4iIiIKKyAgICBwID0gMjExMzkyOTIxNyAgICAgICAgICAgICAjIHByaW1lCisgICAgZCA9IGxlbihsc3QpICAgICAgICAgICAgICAgIyB0cmFuc2Zvcm0gbGVuZ3RoCisgICAgZF9wcmltZSA9IHBvdyhkLCAocC0yKSwgcCkgIyBpbnZlcnNlIG9mIGQKKyAgICB4aSA9IChwLTEpLy9kCisgICAgdyA9IDUgICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmltaXRpdmUgcm9vdCBvZiBGKHApCisgICAgciA9IHBvdyh3LCB4aSwgcCkgICAgICAgICAgICAgIyBwcmltaXRpdmUgcm9vdCBvZiB0aGUgc3ViZmllbGQKKyAgICByX3ByaW1lID0gcG93KHcsIChwLTEteGkpLCBwKSAjIGludmVyc2Ugb2YgcgorICAgIGlmIGRpciA9PSAxOiAgICAgICMgZm9yd2FyZCB0cmFuc2Zvcm0KKyAgICAgICAgYSA9IGxzdCAgICAgICAjIGlucHV0IGFycmF5CisgICAgICAgIEEgPSBbMF0gKiBkICAgIyB0cmFuc2Zvcm1lZCB2YWx1ZXMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoZCk6CisgICAgICAgICAgICBzID0gMAorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoZCk6CisgICAgICAgICAgICAgICAgcyArPSBhW2pdICogcG93KHIsIGkqaiwgcCkKKyAgICAgICAgICAgIEFbaV0gPSBzICUgcAorICAgICAgICByZXR1cm4gQQorICAgIGVsaWYgZGlyID09IC0xOiAjIGJhY2t3YXJkIHRyYW5zZm9ybQorICAgICAgICBBID0gbHN0ICAgICAjIGlucHV0IGFycmF5CisgICAgICAgIGEgPSBbMF0gKiBkICMgdHJhbnNmb3JtZWQgdmFsdWVzCisgICAgICAgIGZvciBqIGluIHJhbmdlKGQpOgorICAgICAgICAgICAgcyA9IDAKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGQpOgorICAgICAgICAgICAgICAgIHMgKz0gQVtpXSAqIHBvdyhyX3ByaW1lLCBpKmosIHApCisgICAgICAgICAgICBhW2pdID0gKGRfcHJpbWUgKiBzKSAlIHAKKyAgICAgICAgcmV0dXJuIGEKKworZGVmIG50dF9jb252b2x1dGUoYSwgYik6CisgICAgIiIiY29udm9sdXRlIGFycmF5cyBhIGFuZCBiLiIiIgorICAgIGFzc2VydChsZW4oYSkgPT0gbGVuKGIpKQorICAgIHggPSBudHQoYSwgMSkKKyAgICB5ID0gbnR0KGIsIDEpCisgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGEpKToKKyAgICAgICAgeVtpXSA9IHlbaV0gKiB4W2ldCisgICAgciA9IG50dCh5LCAtMSkKKyAgICByZXR1cm4gcgorCisKKyMgRXhhbXBsZTogVHdvIGFycmF5cyByZXByZXNlbnRpbmcgMjEgYW5kIDgxIGluIGxpdHRsZS1lbmRpYW46CithID0gWzEsIDIsIDAsIDBdCitiID0gWzEsIDgsIDAsIDBdCisKK2Fzc2VydChudHRfY29udm9sdXRlKGEsIGIpID09IFsxLCAgICAgICAgMTAsICAgICAgICAxNiwgICAgICAgIDBdKQorYXNzZXJ0KDIxICogODEgICAgICAgICAgICAgPT0gKDEqMTAqKjAgKyAxMCoxMCoqMSArIDE2KjEwKioyICsgMCoxMCoqMykpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbWF0cml4LXRyYW5zZm9ybS50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbWF0cml4LXRyYW5zZm9ybS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY2MjE5OAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tYXRyaXgtdHJhbnNmb3JtLnR4dApAQCAtMCwwICsxLDI1NiBAQAorCisKKygqIENvcHlyaWdodCAoYykgMjAxMSBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKikKKworCitUaGUgTWF0cml4IEZvdXJpZXIgVHJhbnNmb3JtOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW4gbGlibXBkZWMsIHRoZSBNYXRyaXggRm91cmllciBUcmFuc2Zvcm0gWzFdIGlzIGNhbGxlZCBmb3VyLXN0ZXAgdHJhbnNmb3JtCithZnRlciBhIHZhcmlhbnQgdGhhdCBhcHBlYXJzIGluIFsyXS4gVGhlIGFsZ29yaXRobSByZXF1aXJlcyB0aGF0IHRoZSBpbnB1dAorYXJyYXkgY2FuIGJlIHZpZXdlZCBhcyBhbiBSKkMgbWF0cml4LgorCitBbGwgb3BlcmF0aW9ucyBhcmUgZG9uZSBtb2R1bG8gcC4gRm9yIHJlYWRhYmlsaXR5LCB0aGUgcHJvb2ZzIGRyb3AgYWxsCitpbnN0YW5jZXMgb2YgKG1vZCBwKS4KKworCitBbGdvcml0aG0gZm91ci1zdGVwIChmb3J3YXJkIHRyYW5zZm9ybSk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgYSA6PSBpbnB1dCBhcnJheQorICBkIDo9IGxlbihhKSA9IFIgKiBDCisgIHAgOj0gcHJpbWUKKyAgdyA6PSBwcmltaXRpdmUgcm9vdCBvZiB1bml0eSBvZiB0aGUgcHJpbWUgZmllbGQKKyAgciA6PSB3KiooKHAtMSkvZCkKKyAgQSA6PSBvdXRwdXQgYXJyYXkKKworICAxKSBBcHBseSBhIGxlbmd0aCBSIEZOVCB0byBlYWNoIGNvbHVtbi4KKworICAyKSBNdWx0aXBseSBlYWNoIG1hdHJpeCBlbGVtZW50IChhZGRyZXNzZWQgYnkgaipDK20pIGJ5IHIqKihqKm0pLgorCisgIDMpIEFwcGx5IGEgbGVuZ3RoIEMgRk5UIHRvIGVhY2ggcm93LgorCisgIDQpIFRyYW5zcG9zZSB0aGUgbWF0cml4LgorCisKK1Byb29mIChmb3J3YXJkIHRyYW5zZm9ybSk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZSBhbGdvcml0aG0gY2FuIGJlIGRlcml2ZWQgc3RhcnRpbmcgZnJvbSB0aGUgcmVndWxhciBkZWZpbml0aW9uIG9mCisgIHRoZSBmaW5pdGUtZmllbGQgdHJhbnNmb3JtIG9mIGxlbmd0aCBkOgorCisgICAgICAgICAgICBkLTEKKyAgICAgICAgICAgLC0tLS0KKyAgICAgICAgICAgXAorICAgIEFba10gPSAgfCAgYVtsXSAgKiByKiooayAqIGwpCisgICAgICAgICAgIC8KKyAgICAgICAgICAgYC0tLS0KKyAgICAgICAgICAgbCA9IDAKKworCisgIFRoZSBzdW0gY2FuIGJlIHJlYXJyYW5nZWQgaW50byB0aGUgc3VtIG9mIHRoZSBzdW1zIG9mIGNvbHVtbnM6CisKKyAgICAgICAgICAgIEMtMSAgICAgUi0xCisgICAgICAgICAgICwtLS0tICAgLC0tLS0KKyAgICAgICAgICAgXCAgICAgICBcCisgICAgICAgICA9ICB8ICAgICAgIHwgIGFbaSAqIEMgKyBqXSAqIHIqKihrICogKGkgKiBDICsgaikpCisgICAgICAgICAgIC8gICAgICAgLworICAgICAgICAgICBgLS0tLSAgIGAtLS0tCisgICAgICAgICAgIGogPSAwICAgaSA9IDAKKworCisgIEV4dHJhY3RpbmcgYSBjb25zdGFudCBmcm9tIHRoZSBpbm5lciBzdW06CisKKyAgICAgICAgICAgIEMtMSAgICAgICAgICAgUi0xCisgICAgICAgICAgICwtLS0tICAgICAgICAgLC0tLS0KKyAgICAgICAgICAgXCAgICAgICAgICAgICBcCisgICAgICAgICA9ICB8ICByKiprKmogICogIHwgIGFbaSAqIEMgKyBqXSAqIHIqKihrICogaSAqIEMpCisgICAgICAgICAgIC8gICAgICAgICAgICAgLworICAgICAgICAgICBgLS0tLSAgICAgICAgIGAtLS0tCisgICAgICAgICAgIGogPSAwICAgICAgICAgaSA9IDAKKworCisgIFdpdGhvdXQgYW55IGxvc3Mgb2YgZ2VuZXJhbGl0eSwgbGV0IGsgPSBuICogUiArIG0sCisgIHdoZXJlIG4gPCBDIGFuZCBtIDwgUjoKKworICAgICAgICAgICAgICAgIEMtMSAgICAgICAgICAgICAgICAgICAgICAgICAgUi0xCisgICAgICAgICAgICAgICAsLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICwtLS0tCisgICAgICAgICAgICAgICBcICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBW24qUittXSA9ICB8ICByKiooUipuKmopICogcioqKG0qaikgICogIHwgIGFbaSpDK2pdICogcioqKFIqQypuKmkpICogcioqKEMqbSppKQorICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvCisgICAgICAgICAgICAgICBgLS0tLSAgICAgICAgICAgICAgICAgICAgICAgIGAtLS0tCisgICAgICAgICAgICAgICBqID0gMCAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwCisKKworICBTaW5jZSByID0gdyAqKiAoKHAtMSkgLyAoUipDKSk6CisKKyAgICAgYSkgcioqKFIqQypuKmkpID0gdyoqKChwLTEpKm4qaSkgPSAxCisKKyAgICAgYikgcioqKEMqbSppKSA9IHcqKigocC0xKSAvIFIpICoqIChtKmkpID0gcl9SICoqIChtKmkpCisKKyAgICAgYykgcioqKFIqbipqKSA9IHcqKigocC0xKSAvIEMpICoqIChuKmopID0gcl9DICoqIChuKmopCisKKyAgICAgcl9SIDo9IHJvb3Qgb2YgdGhlIHN1YmZpZWxkIG9mIGxlbmd0aCBSLgorICAgICByX0MgOj0gcm9vdCBvZiB0aGUgc3ViZmllbGQgb2YgbGVuZ3RoIEMuCisKKworICAgICAgICAgICAgICAgIEMtMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUi0xCisgICAgICAgICAgICAgICAsLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICwtLS0tCisgICAgICAgICAgICAgICBcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBW24qUittXSA9ICB8ICByX0MqKihuKmopICogWyByKioobSpqKSAgKiAgIHwgIGFbaSpDK2pdICogcl9SKioobSppKSBdCisgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgIC8KKyAgICAgICAgICAgICAgIGAtLS0tICAgICAgICAgICAgICAgICB8ICAgICAgICAgYC0tLS0gICAgMSkgdHJhbnNmb3JtIHRoZSBjb2x1bW5zCisgICAgICAgICAgICAgICBqID0gMCAgICAgICAgICAgICAgICAgfCAgICAgICAgIGkgPSAwCisgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIGAtLSAyKSBtdWx0aXBseQorICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgIGAtLSAzKSB0cmFuc2Zvcm0gdGhlIHJvd3MKKworCisgICBOb3RlIHRoYXQgdGhlIGVudGlyZSBSSFMgaXMgYSBmdW5jdGlvbiBvZiBuIGFuZCBtIGFuZCB0aGF0IHRoZSByZXN1bHRzCisgICBmb3IgZWFjaCBwYWlyIChuLCBtKSBhcmUgc3RvcmVkIGluIEZvcnRyYW4gb3JkZXIuCisKKyAgIExldCB0aGUgdGVybSBpbiBzcXVhcmUgYnJhY2tldHMgYmUgZihtLCBqKS4gU3RlcCAxKSBhbmQgMikgcHJlY2FsY3VsYXRlCisgICB0aGUgdGVybSBmb3IgYWxsIChtLCBqKS4gQWZ0ZXIgdGhhdCwgdGhlIG9yaWdpbmFsIG1hdHJpeCBpcyBub3cgYSBsb29rdXAKKyAgIHRhYmxlIHdpdGggdGhlIG10aCBlbGVtZW50IGluIHRoZSBqdGggY29sdW1uIGF0IGxvY2F0aW9uIG0gKiBDICsgai4KKworICAgTGV0IHRoZSBjb21wbGV0ZSBSSFMgYmUgZyhtLCBuKS4gU3RlcCAzKSBkb2VzIGFuIGluLXBsYWNlIHRyYW5zZm9ybSBvZgorICAgbGVuZ3RoIG4gb24gYWxsIHJvd3MuIEFmdGVyIHRoYXQsIHRoZSBvcmlnaW5hbCBtYXRyaXggaXMgbm93IGEgbG9va3VwCisgICB0YWJsZSB3aXRoIHRoZSBtdGggZWxlbWVudCBpbiB0aGUgbnRoIGNvbHVtbiBhdCBsb2NhdGlvbiBtICogQyArIG4uCisKKyAgIEJ1dCBlYWNoIChtLCBuKSBwYWlyIHNob3VsZCBiZSB3cml0dGVuIHRvIGxvY2F0aW9uIG4gKiBSICsgbS4gVGhlcmVmb3JlLAorICAgc3RlcCA0KSB0cmFuc3Bvc2VzIHRoZSByZXN1bHQgb2Ygc3RlcCAzKS4KKworCisKK0FsZ29yaXRobSBmb3VyLXN0ZXAgKGludmVyc2UgdHJhbnNmb3JtKToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBBICA6PSBpbnB1dCBhcnJheQorICBkICA6PSBsZW4oQSkgPSBSICogQworICBwICA6PSBwcmltZQorICBkJyA6PSBkKioocC0yKSAgICAgICAgICAgICAjIGludmVyc2Ugb2YgZAorICB3ICA6PSBwcmltaXRpdmUgcm9vdCBvZiB1bml0eSBvZiB0aGUgcHJpbWUgZmllbGQKKyAgciAgOj0gdyoqKChwLTEpL2QpICAgICAgICAgIyByb290IG9mIHRoZSBzdWJmaWVsZAorICByJyA6PSB3KiooKHAtMSkgLSAocC0xKS9kKSAjIGludmVyc2Ugb2YgcgorICBhICA6PSBvdXRwdXQgYXJyYXkKKworICAwKSBWaWV3IHRoZSBtYXRyaXggYXMgYSBDKlIgbWF0cml4LgorCisgIDEpIFRyYW5zcG9zZSB0aGUgbWF0cml4LCBwcm9kdWNpbmcgYW4gUipDIG1hdHJpeC4KKworICAyKSBBcHBseSBhIGxlbmd0aCBDIEZOVCB0byBlYWNoIHJvdy4KKworICAzKSBNdWx0aXBseSBlYWNoIG1hdHJpeCBlbGVtZW50IChhZGRyZXNzZWQgYnkgaSpDK24pIGJ5IHIqKihpKm4pLgorCisgIDQpIEFwcGx5IGEgbGVuZ3RoIFIgRk5UIHRvIGVhY2ggY29sdW1uLgorCisKK1Byb29mIChpbnZlcnNlIHRyYW5zZm9ybSk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZSBhbGdvcml0aG0gY2FuIGJlIGRlcml2ZWQgc3RhcnRpbmcgZnJvbSB0aGUgcmVndWxhciBkZWZpbml0aW9uIG9mCisgIHRoZSBmaW5pdGUtZmllbGQgaW52ZXJzZSB0cmFuc2Zvcm0gb2YgbGVuZ3RoIGQ6CisKKyAgICAgICAgICAgICAgICAgIGQtMQorICAgICAgICAgICAgICAgICAsLS0tLQorICAgICAgICAgICAgICAgICBcCisgICAgYVtrXSA9ICBkJyAqICB8ICBBW2xdICAqIHInICoqIChrICogbCkKKyAgICAgICAgICAgICAgICAgLworICAgICAgICAgICAgICAgICBgLS0tLQorICAgICAgICAgICAgICAgICBsID0gMAorCisKKyAgVGhlIHN1bSBjYW4gYmUgcmVhcnJhbmdlZCBpbnRvIHRoZSBzdW0gb2YgdGhlIHN1bXMgb2YgY29sdW1ucy4gTm90ZQorICB0aGF0IGF0IHRoaXMgc3RhZ2Ugd2Ugc3RpbGwgaGF2ZSBhIEMqUiBtYXRyaXgsIHNvIEMgZGVub3RlcyB0aGUgbnVtYmVyCisgIG9mIHJvd3M6CisKKyAgICAgICAgICAgICAgICAgIFItMSAgICAgQy0xCisgICAgICAgICAgICAgICAgICwtLS0tICAgLC0tLS0KKyAgICAgICAgICAgICAgICAgXCAgICAgICBcCisgICAgICAgICA9ICBkJyAqICB8ICAgICAgIHwgIGFbaiAqIFIgKyBpXSAqIHInICoqIChrICogKGogKiBSICsgaSkpCisgICAgICAgICAgICAgICAgIC8gICAgICAgLworICAgICAgICAgICAgICAgICBgLS0tLSAgIGAtLS0tCisgICAgICAgICAgICAgICAgIGkgPSAwICAgaiA9IDAKKworCisgIEV4dHJhY3RpbmcgYSBjb25zdGFudCBmcm9tIHRoZSBpbm5lciBzdW06CisKKyAgICAgICAgICAgICAgICAgIFItMSAgICAgICAgICAgICAgICBDLTEKKyAgICAgICAgICAgICAgICAgLC0tLS0gICAgICAgICAgICAgICwtLS0tCisgICAgICAgICAgICAgICAgIFwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICA9ICBkJyAqICB8ICByJyAqKiAoayppKSAgKiAgfCAgYVtqICogUiArIGldICogcicgKiogKGsgKiBqICogUikKKyAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgIC8KKyAgICAgICAgICAgICAgICAgYC0tLS0gICAgICAgICAgICAgIGAtLS0tCisgICAgICAgICAgICAgICAgIGkgPSAwICAgICAgICAgICAgICBqID0gMAorCisKKyAgV2l0aG91dCBhbnkgbG9zcyBvZiBnZW5lcmFsaXR5LCBsZXQgayA9IG0gKiBDICsgbiwKKyAgd2hlcmUgbSA8IFIgYW5kIG4gPCBDOgorCisgICAgICAgICAgICAgICAgICAgICBSLTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQy0xCisgICAgICAgICAgICAgICAgICAgICwtLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsLS0tLQorICAgICAgICAgICAgICAgICAgICBcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFbbSpDK25dID0gZCcgKiAgfCAgcicgKiogKEMqbSppKSAqICByJyAqKiAobippKSAgICogIHwgIGFbaipSK2ldICogcicgKiogKFIqQyptKmopICogcicgKiogKFIqbipqKQorICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLworICAgICAgICAgICAgICAgICAgICBgLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYC0tLS0KKyAgICAgICAgICAgICAgICAgICAgaSA9IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSAwCisKKworICBTaW5jZSByJyA9IHcqKigocC0xKSAtIChwLTEpL2QpIGFuZCBkID0gUipDOgorCisgICAgIGEpIHInICoqIChSKkMqbSpqKSA9IHcqKigocC0xKSpSKkMqbSpqIC0gKHAtMSkqbSpqKSA9IDEKKworICAgICBiKSByJyAqKiAoQyptKmkpID0gdyoqKChwLTEpKkMgLSAocC0xKS9SKSAqKiAobSppKSA9IHJfUicgKiogKG0qaSkKKworICAgICBjKSByJyAqKiAoUipuKmopID0gcl9DJyAqKiAobipqKQorCisgICAgIGQpIGQnID0gZCoqKHAtMikgPSAoUipDKSAqKiAocC0yKSA9IFIqKihwLTIpICogQyoqKHAtMikgPSBSJyAqIEMnCisKKyAgICAgcl9SJyA6PSBpbnZlcnNlIG9mIHRoZSByb290IG9mIHRoZSBzdWJmaWVsZCBvZiBsZW5ndGggUi4KKyAgICAgcl9DJyA6PSBpbnZlcnNlIG9mIHRoZSByb290IG9mIHRoZSBzdWJmaWVsZCBvZiBsZW5ndGggQy4KKyAgICAgUicgICA6PSBpbnZlcnNlIG9mIFIKKyAgICAgQycgICA6PSBpbnZlcnNlIG9mIEMKKworCisgICAgICAgICAgICAgICAgICAgICBSLTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMtMQorICAgICAgICAgICAgICAgICAgICAsLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwtLS0tICAyKSB0cmFuc2Zvcm0gdGhlIHJvd3Mgb2YgYV5UCisgICAgICAgICAgICAgICAgICAgIFwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFbbSpDK25dID0gUicgKiAgfCAgcl9SJyAqKiAobSppKSAqIFsgcicgKiogKG4qaSkgKiBDJyAqICB8ICBhW2oqUitpXSAqIHJfQycgKiogKG4qaikgXQorICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgIC8gICAgICAgXgorICAgICAgICAgICAgICAgICAgICBgLS0tLSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIGAtLS0tICAgfAorICAgICAgICAgICAgICAgICAgICBpID0gMCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIGogPSAwICAgfAorICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgYC0tIDEpIFRyYW5zcG9zZSBpbnB1dCBtYXRyaXgKKyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIGAtLSAzKSBtdWx0aXBseSAgICAgICAgICAgICB0byBhZGRyZXNzIGVsZW1lbnRzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAqIEMgKyBqCisgICAgICAgICAgICAgICAgICAgICAgYC0tIDMpIHRyYW5zZm9ybSB0aGUgY29sdW1ucworCisKKworICAgTm90ZSB0aGF0IHRoZSBlbnRpcmUgUkhTIGlzIGEgZnVuY3Rpb24gb2YgbSBhbmQgbiBhbmQgdGhhdCB0aGUgcmVzdWx0cworICAgZm9yIGVhY2ggcGFpciAobSwgbikgYXJlIHN0b3JlZCBpbiBDIG9yZGVyLgorCisgICBMZXQgdGhlIHRlcm0gaW4gc3F1YXJlIGJyYWNrZXRzIGJlIGYobiwgaSkuIFdpdGhvdXQgc3RlcCAxKSwgdGhlIHN1bQorICAgd291bGQgcGVyZm9ybSBhIGxlbmd0aCBDIHRyYW5zZm9ybSBvbiB0aGUgY29sdW1ucyBvZiB0aGUgaW5wdXQgbWF0cml4LgorICAgVGhpcyBpcyBhKSBpbmVmZmljaWVudCBhbmQgYikgdGhlIHJlc3VsdHMgYXJlIG5lZWRlZCBpbiBDIG9yZGVyLCBzbworICAgc3RlcCAxKSBleGNoYW5nZXMgcm93cyBhbmQgY29sdW1ucy4KKworICAgU3RlcCAyKSBhbmQgMykgcHJlY2FsY3VsYXRlIGYobiwgaSkgZm9yIGFsbCAobiwgaSkuIEFmdGVyIHRoYXQsIHRoZQorICAgb3JpZ2luYWwgbWF0cml4IGlzIG5vdyBhIGxvb2t1cCB0YWJsZSB3aXRoIHRoZSBpdGggZWxlbWVudCBpbiB0aGUgbnRoCisgICBjb2x1bW4gYXQgbG9jYXRpb24gaSAqIEMgKyBuLgorCisgICBMZXQgdGhlIGNvbXBsZXRlIFJIUyBiZSBnKG0sIG4pLiBTdGVwIDQpIGRvZXMgYW4gaW4tcGxhY2UgdHJhbnNmb3JtIG9mCisgICBsZW5ndGggbSBvbiBhbGwgY29sdW1ucy4gQWZ0ZXIgdGhhdCwgdGhlIG9yaWdpbmFsIG1hdHJpeCBpcyBub3cgYSBsb29rdXAKKyAgIHRhYmxlIHdpdGggdGhlIG10aCBlbGVtZW50IGluIHRoZSBudGggY29sdW1uIGF0IGxvY2F0aW9uIG0gKiBDICsgbiwKKyAgIHdoaWNoIG1lYW5zIHRoYXQgYWxsIEFba10gPSBBW20gKiBDICsgbl0gYXJlIGluIHRoZSBjb3JyZWN0IG9yZGVyLgorCisKKy0tIAorCisgIFsxXSBKb2VyZyBBcm5kdDogIk1hdHRlcnMgQ29tcHV0YXRpb25hbCIKKyAgICAgIGh0dHA6Ly93d3cuampqLmRlL2Z4dC8KKyAgWzJdIERhdmlkIEguIEJhaWxleTogRkZUcyBpbiBFeHRlcm5hbCBvciBIaWVyYXJjaGljYWwgTWVtb3J5CisgICAgICBodHRwOi8vY3JkLmxibC5nb3YvfmRoYmFpbGV5L2RoYnBhcGVycy8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtNjQudHh0IGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL211bG1vZC02NC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNiZjIyZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtNjQudHh0CkBAIC0wLDAgKzEsMTI3IEBACisKKworKCogQ29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAqKQorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgICAgQ2FsY3VsYXRlIChhICogYikgJSBwIHVzaW5nIHNwZWNpYWwgcHJpbWVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIGRlc2NyaXB0aW9uIG9mIHRoZSBhbGdvcml0aG0gY2FuIGJlIGZvdW5kIGluIHRoZSBhcGZsb2F0IG1hbnVhbCBieQorVG9tbWlsYSBbMV0uCisKKworRGVmaW5pdGlvbnM6CistLS0tLS0tLS0tLS0KKworSW4gdGhlIHdob2xlIGRvY3VtZW50LCAiPT0iIHN0YW5kcyBmb3IgImlzIGNvbmdydWVudCB3aXRoIi4KKworUmVzdWx0IG9mIGEgKiBiIGluIHRlcm1zIG9mIGhpZ2gvbG93IHdvcmRzOgorCisgICAoMSkgaGkgKiAyKio2NCArIGxvID0gYSAqIGIKKworU3BlY2lhbCBwcmltZXM6CisKKyAgICgyKSBwID0gMioqNjQgLSB6ICsgMSwgd2hlcmUgeiA9IDIqKm4KKworU2luZ2xlIHN0ZXAgbW9kdWxhciByZWR1Y3Rpb246CisKKyAgICgzKSBSKGhpLCBsbykgPSBoaSAqIHogLSBoaSArIGxvCisKKworU3RyYXRlZ3k6CistLS0tLS0tLS0KKworICAgYSkgU2V0IChoaSwgbG8pIHRvIHRoZSByZXN1bHQgb2YgYSAqIGIuCisKKyAgIGIpIFNldCAoaGknLCBsbycpIHRvIHRoZSByZXN1bHQgb2YgUihoaSwgbG8pLgorCisgICBjKSBSZXBlYXQgc3RlcCBiKSB1bnRpbCAwIDw9IGhpJyAqIDIqKjY0ICsgbG8nIDwgMipwLgorCisgICBkKSBJZiB0aGUgcmVzdWx0IGlzIGxlc3MgdGhhbiBwLCByZXR1cm4gbG8nLiBPdGhlcndpc2UgcmV0dXJuIGxvJyAtIHAuCisKKworVGhlIHJlZHVjdGlvbiBzdGVwIGIpIHByZXNlcnZlcyBjb25ncnVlbmNlOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgaGkgKiAyKio2NCArIGxvID09IGhpICogeiAtIGhpICsgbG8gICAobW9kIHApCisKKyAgICBQcm9vZjoKKyAgICB+fn5+fn4KKworICAgICAgIGhpICogMioqNjQgKyBsbyA9ICgyKio2NCAtIHogKyAxKSAqIGhpICsgeiAqIGhpIC0gaGkgKyBsbworCisgICAgICAgICAgICAgICAgICAgICAgID0gcCAqIGhpICAgICAgICAgICAgICAgKyB6ICogaGkgLSBoaSArIGxvCisKKyAgICAgICAgICAgICAgICAgICAgICAgPT0geiAqIGhpIC0gaGkgKyBsbyAgIChtb2QgcCkKKworCitNYXhpbXVtIG51bWJlcnMgb2Ygc3RlcCBiKToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFRvIGF2b2lkIHVubmVjY2Vzc2FyeSBmb3JtYWxpc20sIGRlZmluZToKKworZGVmIFIoaGksIGxvLCB6KToKKyAgICAgcmV0dXJuIGRpdm1vZChoaSAqIHogLSBoaSArIGxvLCAyKio2NCkKKworIyBGb3Igc2ltcGxpY2l0eSwgYXNzdW1lIGhpPTIqKjY0LTEsIGxvPTIqKjY0LTEgYWZ0ZXIgdGhlCisjIGluaXRpYWwgbXVsdGlwbGljYXRpb24gYSAqIGIuIFRoaXMgaXMgb2YgY291cnNlIGltcG9zc2libGUKKyMgYnV0IGNlcnRhaW5seSBjb3ZlcnMgYWxsIGNhc2VzLgorCisjIFRoZW4sIGZvciBwMToKK2hpPTIqKjY0LTE7IGxvPTIqKjY0LTE7IHo9MioqMzIKK3AxID0gMioqNjQgLSB6ICsgMQorCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBGaXJzdCByZWR1Y3Rpb24KK2hpLCBsbyA9IFIoaGksIGxvLCB6KSAgICAjIFNlY29uZCByZWR1Y3Rpb24KK2hpICogMioqNjQgKyBsbyA8IDIgKiBwMSAjIFRydWUKKworIyBGb3IgcDI6CitoaT0yKio2NC0xOyBsbz0yKio2NC0xOyB6PTIqKjM0CitwMiA9IDIqKjY0IC0geiArIDEKKworaGksIGxvID0gUihoaSwgbG8sIHopICAgICMgRmlyc3QgcmVkdWN0aW9uCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBTZWNvbmQgcmVkdWN0aW9uCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBUaGlyZCByZWR1Y3Rpb24KK2hpICogMioqNjQgKyBsbyA8IDIgKiBwMiAjIFRydWUKKworIyBGb3IgcDM6CitoaT0yKio2NC0xOyBsbz0yKio2NC0xOyB6PTIqKjQwCitwMyA9IDIqKjY0IC0geiArIDEKKworaGksIGxvID0gUihoaSwgbG8sIHopICAgICMgRmlyc3QgcmVkdWN0aW9uCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBTZWNvbmQgcmVkdWN0aW9uCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBUaGlyZCByZWR1Y3Rpb24KK2hpICogMioqNjQgKyBsbyA8IDIgKiBwMyAjIFRydWUKKworCitTdGVwIGQpIHByZXNlcnZlcyBjb25ncnVlbmNlIGFuZCB5aWVsZHMgYSByZXN1bHQgPCBwOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgQ2FzZSBoaSA9IDA6CisKKyAgICAgICBDYXNlIGxvIDwgcDogdHJpdmlhbC4KKworICAgICAgIENhc2UgbG8gPj0gcDoKKworICAgICAgICAgIGxvID09IGxvIC0gcCAgIChtb2QgcCkgICAgICAgICAgICAgIyByZXN1bHQgaXMgY29uZ3J1ZW50CisKKyAgICAgICAgICBwIDw9IGxvIDwgMipwICAtPiAgMCA8PSBsbyAtIHAgPCBwICMgcmVzdWx0IGlzIGluIHRoZSBjb3JyZWN0IHJhbmdlCisKKyAgIENhc2UgaGkgPSAxOgorCisgICAgICAgcCA8IDIqKjY0IC9cIDIqKjY0ICsgbG8gPCAyKnAgIC0+ICBsbyA8IHAgICMgbG8gaXMgYWx3YXlzIGxlc3MgdGhhbiBwCisKKyAgICAgICAyKio2NCArIGxvID09IDIqKjY0ICsgKGxvIC0gcCkgICAobW9kIHApICAgIyByZXN1bHQgaXMgY29uZ3J1ZW50CisKKyAgICAgICAgICAgICAgICAgID0gbG8gLSBwICAgIyBleGFjdGx5IHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBwcmV2aW91cyBSSFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiB1aW50NjRfdCBhcml0aG1ldGljLgorCisgICAgICAgcCA8IDIqKjY0ICsgbG8gPCAyKnAgIC0+ICAwIDwgMioqNjQgKyAobG8gLSBwKSA8IHAgICMgY29ycmVjdCByYW5nZQorCisKKworWzFdICBodHRwOi8vd3d3LmFwZmxvYXQub3JnL2FwZmxvYXQvMi40MC9hcGZsb2F0LnBkZgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL211bG1vZC1wcHJvLnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtcHByby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNlNmU0ZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtcHByby50eHQKQEAgLTAsMCArMSwyNjkgQEAKKworCisoKiBDb3B5cmlnaHQgKGMpIDIwMTEgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuICopCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgQ2FsY3VsYXRlIChhICogYikgJSBwIHVzaW5nIHRoZSA4MC1iaXQgeDg3IEZQVQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0EgZGVzY3JpcHRpb24gb2YgdGhlIGFsZ29yaXRobSBjYW4gYmUgZm91bmQgaW4gdGhlIGFwZmxvYXQgbWFudWFsIGJ5CitUb21taWxhIFsxXS4KKworVGhlIHByb29mIGZvbGxvd3MgYW4gYXJndW1lbnQgbWFkZSBieSBHcmFubHVuZC9Nb250Z29tZXJ5IGluIFsyXS4KKworCitEZWZpbml0aW9ucyBhbmQgYXNzdW1wdGlvbnM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA4MC1iaXQgZXh0ZW5kZWQgcHJlY2lzaW9uIGZvcm1hdCB1c2VzIDY0IGJpdHMgZm9yIHRoZSBzaWduaWZpY2FuZDoKKworICAoMSkgRiA9IDY0CisKK1RoZSBtb2R1bHVzIGlzIHByaW1lIGFuZCBsZXNzIHRoYW4gMioqMzE6CisKKyAgKDIpIDIgPD0gcCA8IDIqKjMxCisKK1RoZSBmYWN0b3JzIGFyZSBsZXNzIHRoYW4gcDoKKworICAoMykgMCA8PSBhIDwgcAorICAoNCkgMCA8PSBiIDwgcAorCitUaGUgcHJvZHVjdCBhICogYiBpcyBsZXNzIHRoYW4gMioqNjIgYW5kIGlzIHRodXMgZXhhY3QgaW4gNjQgYml0czoKKworICAoNSkgbiA9IGEgKiBiCisKK1RoZSBwcm9kdWN0IGNhbiBiZSByZXByZXNlbnRlZCBpbiB0ZXJtcyBvZiBxdW90aWVudCBhbmQgcmVtYWluZGVyOgorCisgICg2KSBuID0gcSAqIHAgKyByCisKK1VzaW5nICgzKSwgKDQpIGFuZCB0aGUgZmFjdCB0aGF0IHAgaXMgcHJpbWUsIHRoZSByZW1haW5kZXIgaXMgYWx3YXlzCitncmVhdGVyIHRoYW4gemVybzoKKworICAoNykgMCA8PSBxIDwgcCAgL1wgIDEgPD0gciA8IHAKKworCitTdHJhdGVneToKKy0tLS0tLS0tLQorCitQcmVjYWxjdWxhdGUgdGhlIDgwLWJpdCBsb25nIGRvdWJsZSBpbnZlcnNlIG9mIHAsIHdpdGggYSBtYXhpbXVtCityZWxhdGl2ZSBlcnJvciBvZiAyKiooMS1GKToKKworICAoOCkgcGludiA9IChsb25nIGRvdWJsZSkxLjAgLyBwCisKK0NhbGN1bGF0ZSBhbiBlc3RpbWF0ZSBmb3IgcSA9IGZsb29yKG4vcCkuIFRoZSBtdWx0aXBsaWNhdGlvbiBoYXMgYW5vdGhlcgorbWF4aW11bSByZWxhdGl2ZSBlcnJvciBvZiAyKiooMS1GKToKKworICAoOSkgcWVzdCA9IG4gKiBwaW52CisKK0lmIHdlIGNhbiBzaG93IHRoYXQgcSA8IHFlc3QgPCBxKzEsIHRoZW4gdHJ1bmMocWVzdCkgPSBxLiBJdCBpcyB0aGVuCitlYXN5IHRvIHJlY292ZXIgdGhlIHJlbWFpbmRlciByLiBUaGUgY29tcGxldGUgYWxnb3JpdGhtIGlzOgorCisgIGEpIFNldCB0aGUgY29udHJvbCB3b3JkIHRvIDY0LWJpdCBwcmVjaXNpb24gYW5kIHRydW5jYXRpb24gbW9kZS4KKworICBiKSBuID0gYSAqIGIgICAgICAgICAgICAgICMgQ2FsY3VsYXRlIGV4YWN0IHByb2R1Y3QuCisKKyAgYykgcWVzdCA9IG4gKiBwaW52ICAgICAgICAjIENhbGN1bGF0ZSBlc3RpbWF0ZSBmb3IgdGhlIHF1b3RpZW50LgorCisgIGQpIHEgPSAocWVzdCsyKio2MyktMioqNjMgIyBUcnVuY2F0ZSBxZXN0IHRvIHRoZSBleGFjdCBxdW90aWVudC4KKworICBmKSByID0gbiAtIHEgKiBwICAgICAgICAgICMgQ2FsY3VsYXRlIHJlbWFpbmRlci4KKworCitQcm9vZiBmb3IgcSA8IHFlc3QgPCBxKzE6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VzaW5nIHRoZSBjdW11bGF0aXZlIGVycm9yLCB0aGUgZXJyb3IgYm91bmRzIGZvciBxZXN0IGFyZToKKworICAgICAgICAgICAgICAgIG4gICAgICAgICAgICAgICAgICAgICAgIG4gKiAoMSArIDIqKigxLUYpKSoqMgorICAoOSkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIDw9IHFlc3QgPD0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgcCAqICgxICsgMioqKDEtRikpKioyICAgICAgICAgICAgICAgICAgICAgICBwCisKKworICBMZW1tYSAxOgorICAtLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICBuICAgICAgICAgICAgICAgICAgIHEgKiBwICsgcgorICAgICgxMCkgcSA8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSA9IC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIHAgKiAoMSArIDIqKigxLUYpKSoqMiAgIHAgKiAoMSArIDIqKigxLUYpKSoqMgorCisKKyAgICBQcm9vZjoKKyAgICB+fn5+fn4KKworICAgIChJKSAgICAgcSAqIHAgKiAoMSArIDIqKigxLUYpKSoqMiA8IHEgKiBwICsgcgorCisgICAgKElJKSAgICBxICogcCAqIDIqKigyLUYpICsgcSAqIHAgKiAyKiooMi0yKkYpIDwgcgorCisgICAgVXNpbmcgKDEpIGFuZCAoNyksIGl0IGlzIHN1ZmZpY2llbnQgdG8gc2hvdyB0aGF0OgorCisgICAgKElJSSkgICBxICogcCAqIDIqKigtNjIpICsgcSAqIHAgKiAyKiooLTEyNikgPCAxIDw9IHIKKworICAgIChJSUkpIGNhbiBlYXNpbHkgYmUgdmVyaWZpZWQgYnkgc3Vic3RpdHV0aW5nIHRoZSBsYXJnZXN0IHBvc3NpYmxlCisgICAgdmFsdWVzIHAgPSAyKiozMS0xIGFuZCBxID0gMioqMzEtMi4KKworICAgIFRoZSBjcml0aWNhbCBjYXNlcyBvY2N1ciB3aGVuIHIgPSAxLCBuID0gbSAqIHAgKyAxLiBUaGVzZSBjYXNlcworICAgIGNhbiBiZSBleGhhdXN0aXZlbHkgdmVyaWZpZWQgd2l0aCBhIHRlc3QgcHJvZ3JhbS4KKworCisgIExlbW1hIDI6CisgIC0tLS0tLS0tCisKKyAgICAgICAgICAgbiAqICgxICsgMioqKDEtRikpKioyICAgICAocSAqIHAgKyByKSAqICgxICsgMioqKDEtRikpKioyCisgICAgKDExKSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgPSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgPCAgcSArIDEKKyAgICAgICAgICAgICAgICAgICAgIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwCisKKyAgICBQcm9vZjoKKyAgICB+fn5+fn4KKworICAgIChJKSAgKHEgKiBwICsgcikgKyAocSAqIHAgKyByKSAqIDIqKigyLUYpICsgKHEgKiBwICsgcikgKiAyKiooMi0yKkYpIDwgcSAqIHAgKyBwCisKKyAgICAoSUkpICAocSAqIHAgKyByKSAqIDIqKigyLUYpICsgKHEgKiBwICsgcikgKiAyKiooMi0yKkYpIDwgcCAtIHIKKworICAgIFVzaW5nICgxKSBhbmQgKDcpLCBpdCBpcyBzdWZmaWNpZW50IHRvIHNob3cgdGhhdDoKKworICAgIChJSUkpIChxICogcCArIHIpICogMioqKC02MikgKyAocSAqIHAgKyByKSAqIDIqKigtMTI2KSA8IDEgPD0gcCAtIHIKKworICAgIChJSUkpIGNhbiBlYXNpbHkgYmUgdmVyaWZpZWQgYnkgc3Vic3RpdHV0aW5nIHRoZSBsYXJnZXN0IHBvc3NpYmxlCisgICAgdmFsdWVzIHAgPSAyKiozMS0xLCBxID0gMioqMzEtMiBhbmQgciA9IDIqKjMxLTIuCisKKyAgICBUaGUgY3JpdGljYWwgY2FzZXMgb2NjdXIgd2hlbiByID0gKHAgLSAxKSwgbiA9IG0gKiBwIC0gMS4gVGhlc2UgY2FzZXMKKyAgICBjYW4gYmUgZXhoYXVzdGl2ZWx5IHZlcmlmaWVkIHdpdGggYSB0ZXN0IHByb2dyYW0uCisKKworWzFdICBodHRwOi8vd3d3LmFwZmxvYXQub3JnL2FwZmxvYXQvMi40MC9hcGZsb2F0LnBkZgorWzJdICBodHRwOi8vZ21wbGliLm9yZy9+dGVnZS9kaXZjbnN0LXBsZGk5NC5wZGYKKyAgICAgW1NlY3Rpb24gNzogIlVzZSBvZiBmbG9hdGluZyBwb2ludCJdCisKKworCisoKiBDb3EgcHJvb2YgZm9yICgxMCkgYW5kICgxMSkgKikKKworUmVxdWlyZSBJbXBvcnQgWkFyaXRoLgorUmVxdWlyZSBJbXBvcnQgUUFyaXRoLgorUmVxdWlyZSBJbXBvcnQgUXBvd2VyLgorUmVxdWlyZSBJbXBvcnQgUWFicy4KK1JlcXVpcmUgSW1wb3J0IFBzYXR6LgorCitPcGVuIFNjb3BlIFFfc2NvcGUuCisKKworTHRhYyBxcmVkdWNlIFQgOj0KKyAgcmV3cml0ZSA8LSAoUXJlZF9jb3JyZWN0IChUKSk7IHNpbXBsIChRcmVkIChUKSkuCisKK1RoZW9yZW0gUWx0X21vdmVfcmlnaHQgOgorICBmb3JhbGwgeCB5IHo6USwgeCArIHogPCB5IDwtPiB4IDwgeSAtIHouCitQcm9vZi4KKyAgaW50cm9zLgorICBzcGxpdC4KKyAgICBpbnRyb3MuCisgICAgcHNhdHpsIFEuCisgICAgaW50cm9zLgorICAgIHBzYXR6bCBRLgorUWVkLgorCitUaGVvcmVtIFFsdF9tdWx0X2J5X3ogOgorICBmb3JhbGwgeCB5IHo6USwgMCA8IHogLT4gKHggPCB5IDwtPiB4ICogeiA8IHkgKiB6KS4KK1Byb29mLgorICBpbnRyb3MuCisgIHNwbGl0LgorICAgIGludHJvcy4KKyAgICBhcHBseSBRbXVsdF9sdF9jb21wYXRfci4gdHJpdmlhbC4gdHJpdmlhbC4KKyAgICBpbnRyb3MuCisgICAgcmV3cml0ZSA8LSAoUWRpdl9tdWx0X2wgeCB6KS4gcmV3cml0ZSA8LSAoUWRpdl9tdWx0X2wgeSB6KS4KKyAgICBhcHBseSBRbXVsdF9sdF9jb21wYXRfci4KKyAgICBhcHBseSBRbHRfc2hpZnRfaW52X2wuCisgICAgdHJpdmlhbC4gcHNhdHpsIFEuIHRyaXZpYWwuIHBzYXR6bCBRLiBwc2F0emwgUS4KK1FlZC4KKworVGhlb3JlbSBRbGVfbXVsdF9xdWFkIDoKKyAgZm9yYWxsIChhIGIgYyBkOlEpLAorICAgIDAgPD0gYSAtPiBhIDw9IGMgLT4KKyAgICAwIDw9IGIgLT4gYiA8PSBkIC0+CisgICAgICBhICogYiA8PSBjICogZC4KKyAgaW50cm9zLgorICBwc2F0eiBRLgorUWVkLgorCisKK1RoZW9yZW0gcV9sdF9xZXN0OgorICBmb3JhbGwgKHAgcSByOlEpLAorICAgICgwIDwgcCkgLT4gKHAgPD0gKDIjMSleMzEgLSAxKSAtPgorICAgICgwIDw9IHEpIC0+IChxIDw9IHAgLSAxKSAtPgorICAgICgxIDw9IHIpIC0+IChyIDw9IHAgLSAxKSAtPgorICAgICAgcSA8IChxICogcCArIHIpIC8gKHAgKiAoMSArICgyIzEpXigtNjMpKV4yKS4KK1Byb29mLgorICBpbnRyb3MuCisgIHJld3JpdGUgUWx0X211bHRfYnlfeiB3aXRoICh6IDo9IChwICogKDEgKyAoMiMxKV4oLTYzKSleMikpLgorCisgIHVuZm9sZCBRZGl2LgorICByZXdyaXRlIDwtIFFtdWx0X2Fzc29jLgorICByZXdyaXRlIChRbXVsdF9jb21tICgvIChwICogKDEgKyAoMiAjIDEpIF4gKC02MykpIF4gMikpIChwICogKDEgKyAoMiAjIDEpIF4gKC02MykpIF4gMikpLgorICByZXdyaXRlIFFtdWx0X2ludl9yLgorICByZXdyaXRlIFFtdWx0XzFfci4KKworICBhc3NlcnQgKHEgKiAocCAqICgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIpID09IHEgKiBwICsgKHEgKiBwKSAqICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKSkuCisgIHFyZWR1Y2UgKCgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIpLgorICBxcmVkdWNlICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKS4KKyAgcmluZ19zaW1wbGlmeS4KKyAgcmVmbGV4aXZpdHkuCisgIHJld3JpdGUgSDUuCisKKyAgcmV3cml0ZSBRcGx1c19jb21tLgorICByZXdyaXRlIFFsdF9tb3ZlX3JpZ2h0LgorICByaW5nX3NpbXBsaWZ5IChxICogcCArIHIgLSBxICogcCkuCisgIHFyZWR1Y2UgKCgyICMgMSkgXiAoLTYyKSArICgyICMgMSkgXiAoLTEyNikpLgorCisgIGFwcGx5IFFsdF9sZV90cmFucyB3aXRoICh5IDo9IDEpLgorICByZXdyaXRlIFFsdF9tdWx0X2J5X3ogd2l0aCAoeiA6PSA4NTA3MDU5MTczMDIzNDYxNTg2NTg0MzY1MTg1Nzk0MjA1Mjg2NCAjIDE4NDQ2NzQ0MDczNzA5NTUxNjE3KS4KKyAgcmluZ19zaW1wbGlmeS4KKworICBhcHBseSBRbGVfbHRfdHJhbnMgd2l0aCAoeSA6PSAoKDIgIyAxKSBeIDMxIC0gKDIjMSkpICogKCgyICMgMSkgXiAzMSAtIDEpKS4KKyAgYXBwbHkgUWxlX211bHRfcXVhZC4KKyAgYXNzdW1wdGlvbi4gcHNhdHpsIFEuIHBzYXR6bCBRLiBwc2F0emwgUS4gcHNhdHpsIFEuIHBzYXR6bCBRLiBhc3N1bXB0aW9uLiBwc2F0emwgUS4gcHNhdHpsIFEuCitRZWQuCisKK1RoZW9yZW0gcWVzdF9sdF9xcGx1czE6CisgIGZvcmFsbCAocCBxIHI6USksCisgICAgKDAgPCBwKSAtPiAocCA8PSAoMiMxKV4zMSAtIDEpIC0+CisgICAgKDAgPD0gcSkgLT4gKHEgPD0gcCAtIDEpIC0+CisgICAgKDEgPD0gcikgLT4gKHIgPD0gcCAtIDEpIC0+CisgICAgICAoKHEgKiBwICsgcikgKiAoMSArICgyIzEpXigtNjMpKV4yKSAvIHAgPCBxICsgMS4KK1Byb29mLgorICBpbnRyb3MuCisgIHJld3JpdGUgUWx0X211bHRfYnlfeiB3aXRoICh6IDo9IHApLgorCisgIHVuZm9sZCBRZGl2LgorICByZXdyaXRlIDwtIFFtdWx0X2Fzc29jLgorICByZXdyaXRlIChRbXVsdF9jb21tICgvIHApIHApLgorICByZXdyaXRlIFFtdWx0X2ludl9yLgorICByZXdyaXRlIFFtdWx0XzFfci4KKworICBhc3NlcnQgKChxICogcCArIHIpICogKDEgKyAoMiAjIDEpIF4gKC02MykpIF4gMiA9PSBxICogcCArIHIgKyAocSAqIHAgKyByKSAqICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKSkuCisgIHFyZWR1Y2UgKCgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIpLgorICBxcmVkdWNlICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKS4KKyAgcmluZ19zaW1wbGlmeS4gcmVmbGV4aXZpdHkuCisgIHJld3JpdGUgSDUuCisKKyAgcmV3cml0ZSA8LSBRcGx1c19hc3NvYy4gcmV3cml0ZSA8LSBRcGx1c19jb21tLiByZXdyaXRlIFFsdF9tb3ZlX3JpZ2h0LgorICByaW5nX3NpbXBsaWZ5ICgocSArIDEpICogcCAtIHEgKiBwKS4KKworICByZXdyaXRlIDwtIFFwbHVzX2NvbW0uIHJld3JpdGUgUWx0X21vdmVfcmlnaHQuCisKKyAgYXBwbHkgUWx0X2xlX3RyYW5zIHdpdGggKHkgOj0gMSkuCisgIHFyZWR1Y2UgKCgyICMgMSkgXiAoLTYyKSArICgyICMgMSkgXiAoLTEyNikpLgorICAKKyAgcmV3cml0ZSBRbHRfbXVsdF9ieV96IHdpdGggKHogOj0gODUwNzA1OTE3MzAyMzQ2MTU4NjU4NDM2NTE4NTc5NDIwNTI4NjQgIyAxODQ0Njc0NDA3MzcwOTU1MTYxNykuCisgIHJpbmdfc2ltcGxpZnkuCisKKyAgcmluZ19zaW1wbGlmeSBpbiBIMC4KKyAgYXBwbHkgUWxlX2x0X3RyYW5zIHdpdGggKHkgOj0gKDIxNDc0ODM2NDYgIyAxKSAqICgyMTQ3NDgzNjQ3ICMgMSkgKyAoMjE0NzQ4MzY0NiAjIDEpKS4KKworICBhcHBseSBRcGx1c19sZV9jb21wYXQuCisgIGFwcGx5IFFsZV9tdWx0X3F1YWQuCisgIGFzc3VtcHRpb24uIHBzYXR6bCBRLiBhdXRvIHdpdGggcWFyaXRoLiBhc3N1bXB0aW9uLiBwc2F0emwgUS4KKyAgYXV0byB3aXRoIHFhcml0aC4gYXV0byB3aXRoIHFhcml0aC4KKyAgcHNhdHpsIFEuIHBzYXR6bCBRLiBhc3N1bXB0aW9uLgorUWVkLgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL3NpeC1zdGVwLnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9zaXgtc3RlcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU5MTQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9zaXgtc3RlcC50eHQKQEAgLTAsMCArMSw2MyBAQAorCisKKygqIENvcHlyaWdodCAoYykgMjAxMSBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKikKKworCitUaGUgU2l4IFN0ZXAgVHJhbnNmb3JtOgorPT09PT09PT09PT09PT09PT09PT09PT0KKworSW4gbGlibXBkZWMsIHRoZSBzaXgtc3RlcCB0cmFuc2Zvcm0gaXMgdGhlIE1hdHJpeCBGb3VyaWVyIFRyYW5zZm9ybSAoU2VlCittYXRyaXgtdHJhbnNmb3JtLnR4dCkgaW4gZGlzZ3Vpc2UuIEl0IGlzIGNhbGxlZCBzaXgtc3RlcCB0cmFuc2Zvcm0gYWZ0ZXIKK2EgdmFyaWFudCB0aGF0IGFwcGVhcnMgaW4gWzFdLiBUaGUgYWxnb3JpdGhtIHJlcXVpcmVzIHRoYXQgdGhlIGlucHV0CithcnJheSBjYW4gYmUgdmlld2VkIGFzIGFuIFIqQyBtYXRyaXguCisKKworQWxnb3JpdGhtIHNpeC1zdGVwIChmb3J3YXJkIHRyYW5zZm9ybSk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAxYSkgVHJhbnNwb3NlIHRoZSBtYXRyaXguCisKKyAgMWIpIEFwcGx5IGEgbGVuZ3RoIFIgRk5UIHRvIGVhY2ggcm93LgorCisgIDFjKSBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4KKworICAyKSBNdWx0aXBseSBlYWNoIG1hdHJpeCBlbGVtZW50IChhZGRyZXNzZWQgYnkgaipDK20pIGJ5IHIqKihqKm0pLgorCisgIDMpIEFwcGx5IGEgbGVuZ3RoIEMgRk5UIHRvIGVhY2ggcm93LgorCisgIDQpIFRyYW5zcG9zZSB0aGUgbWF0cml4LgorCitOb3RlIHRoYXQgc3RlcHMgMWEpIC0gMWMpIGFyZSBleGFjdGx5IGVxdWl2YWxlbnQgdG8gc3RlcCAxKSBvZiB0aGUgTWF0cml4CitGb3VyaWVyIFRyYW5zZm9ybS4gRm9yIGxhcmdlIFIsIGl0IGlzIGZhc3RlciB0byB0cmFuc3Bvc2UgdHdpY2UgYW5kIGRvCithIHRyYW5zZm9ybSBvbiB0aGUgcm93cyB0aGFuIHRvIHBlcmZvcm0gYSBjb2x1bW4gdHJhbnNwb3NlIGRpcmVjdGx5LgorCisKKworQWxnb3JpdGhtIHNpeC1zdGVwIChpbnZlcnNlIHRyYW5zZm9ybSk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAwKSBWaWV3IHRoZSBtYXRyaXggYXMgYSBDKlIgbWF0cml4LgorCisgIDEpIFRyYW5zcG9zZSB0aGUgbWF0cml4LCBwcm9kdWNpbmcgYW4gUipDIG1hdHJpeC4KKworICAyKSBBcHBseSBhIGxlbmd0aCBDIEZOVCB0byBlYWNoIHJvdy4KKworICAzKSBNdWx0aXBseSBlYWNoIG1hdHJpeCBlbGVtZW50IChhZGRyZXNzZWQgYnkgaSpDK24pIGJ5IHIqKihpKm4pLgorCisgIDRhKSBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4KKworICA0YikgQXBwbHkgYSBsZW5ndGggUiBGTlQgdG8gZWFjaCByb3cuCisKKyAgNGMpIFRyYW5zcG9zZSB0aGUgbWF0cml4LgorCitBZ2Fpbiwgc3RlcHMgNGEpIC0gNGMpIGFyZSBlcXVpdmFsZW50IHRvIHN0ZXAgNCkgb2YgdGhlIE1hdHJpeCBGb3VyaWVyCitUcmFuc2Zvcm0uCisKKworCistLSAKKworICBbMV0gRGF2aWQgSC4gQmFpbGV5OiBGRlRzIGluIEV4dGVybmFsIG9yIEhpZXJhcmNoaWNhbCBNZW1vcnkKKyAgICAgIGh0dHA6Ly9jcmQubGJsLmdvdi9+ZGhiYWlsZXkvZGhicGFwZXJzLworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS91bW9kYXJpdGgubGlzcCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS91bW9kYXJpdGgubGlzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGExNGE0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL3Vtb2Rhcml0aC5saXNwCkBAIC0wLDAgKzEsNjkyIEBACis7Cis7IENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorOworOyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKzsgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCis7IGFyZSBtZXQ6Cis7Cis7IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cis7ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzsKKzsgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKzsgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorOyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorOworOyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorOyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKzsgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKzsgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKzsgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKzsgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKzsgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCis7IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCis7IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKzsgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorOyBTVUNIIERBTUFHRS4KKzsKKworCisoaW4tcGFja2FnZSAiQUNMMiIpCisKKyhpbmNsdWRlLWJvb2sgImFyaXRobWV0aWMvdG9wLXdpdGgtbWV0YSIgOmRpciA6c3lzdGVtKQorKGluY2x1ZGUtYm9vayAiYXJpdGhtZXRpYy0yL2Zsb29yLW1vZC9mbG9vci1tb2QiIDpkaXIgOnN5c3RlbSkKKworCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzs7ICAgICAgICAgICAgUHJvb2ZzIGZvciBzZXZlcmFsIGZ1bmN0aW9ucyBpbiB1bW9kYXJpdGguaAorOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzs7ICAgICAgICAgICAgICAgICAgICAgICAgICBIZWxwZXIgdGhlb3JlbXMKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisoZGVmdGhtIGVsaW0tbW9kLW08eDwyKm0KKyAgKGltcGxpZXMgKGFuZCAoPD0gbSB4KQorICAgICAgICAgICAgICAgICg8IHggKCogMiBtKSkKKyAgICAgICAgICAgICAgICAocmF0aW9uYWxwIHgpIChyYXRpb25hbHAgbSkpCisgICAgICAgICAgIChlcXVhbCAobW9kIHggbSkKKyAgICAgICAgICAgICAgICAgICgrIHggKC0gbSkpKSkpCisKKyhkZWZ0aG0gbW9kYXV4LTFhCisgIChpbXBsaWVzIChhbmQgKDwgeCBtKSAoPCAwIHgpICg8IDAgbSkKKyAgICAgICAgICAgICAgICAocmF0aW9uYWxwIHgpIChyYXRpb25hbHAgbSkpCisgICAgICAgICAgIChlcXVhbCAobW9kICgtIHgpIG0pCisgICAgICAgICAgICAgICAgICAoKyAoLSB4KSBtKSkpKQorCisoZGVmdGhtIG1vZGF1eC0xYgorICAoaW1wbGllcyAoYW5kICg8ICgtIHgpIG0pICg8IHggMCkgKDwgMCBtKQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgeCkgKHJhdGlvbmFscCBtKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgeCBtKQorICAgICAgICAgICAgICAgICAgKCsgeCBtKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6dXNlICgoOmluc3RhbmNlIG1vZGF1eC0xYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoLSB4KSkpKSkpKQorCisoZGVmdGhtIG1vZGF1eC0xYworICAoaW1wbGllcyAoYW5kICg8IHggbSkgKDwgMCB4KSAoPCAwIG0pCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCB4KSAocmF0aW9uYWxwIG0pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCB4IG0pCisgICAgICAgICAgICAgICAgICB4KSkpCisKKyhkZWZ0aG0gbW9kYXV4LTJhCisgIChpbXBsaWVzIChhbmQgKDwgMCBiKSAoPCBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgeCkgKG5hdHAgYikgKG5hdHAgbSkKKyAgICAgICAgICAgICAgICAoPCAobW9kICgrIGIgeCkgbSkgYikpCisgICAgICAgICAgIChlcXVhbCAobW9kICgrICgtIG0pIGIgeCkgbSkKKyAgICAgICAgICAgICAgICAgICgrICgtIG0pIGIgKG1vZCB4IG0pKSkpKQorCisoZGVmdGhtIG1vZGF1eC0yYgorICAoaW1wbGllcyAoYW5kICg8IDAgYikgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKDwgKG1vZCAoKyBiIHgpIG0pIGIpKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoKyBiIHgpIG0pCisgICAgICAgICAgICAgICAgICAoKyAoLSBtKSBiIChtb2QgeCBtKSkpKQorICA6aGludHMgKCgiR29hbCIgOnVzZSAobW9kYXV4LTJhKSkpKQorCisoZGVmdGhtIGxpbmVhci1tb2QtMQorICAoaW1wbGllcyAoYW5kICg8IHggbSkgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCBtKSkKKyAgICAgICAgIChlcXVhbCAoPCB4IChtb2QgKCsgKC0gYikgeCkgbSkpCisgICAgICAgICAgICAgICAgKDwgeCBiKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6dXNlICgoOmluc3RhbmNlIG1vZGF1eC0xYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyBiICgtIHgpKSkpKSkpKQorCisoZGVmdGhtIGxpbmVhci1tb2QtMgorICAoaW1wbGllcyAoYW5kICg8IDAgYikgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpCisgICAgICAgICAgICAgICAgKG5hdHAgbSkpCisgICAgICAgICAgIChlcXVhbCAoPCAobW9kIHggbSkKKyAgICAgICAgICAgICAgICAgICAgIChtb2QgKCsgKC0gYikgeCkgbSkpCisgICAgICAgICAgICAgICAgICAoPCAobW9kIHggbSkgYikpKSkKKworKGRlZnRobSBsaW5lYXItbW9kLTMKKyAgKGltcGxpZXMgKGFuZCAoPCB4IG0pICg8IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAobmF0cCBiKQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgbSkpCisgICAgICAgICAgIChlcXVhbCAoPD0gYiAobW9kICgrIGIgeCkgbSkpCisgICAgICAgICAgICAgICAgICAoPCAoKyBiIHgpIG0pKSkKKyAgOmhpbnRzICgoIkdvYWwiIDp1c2UgKCg6aW5zdGFuY2UgZWxpbS1tb2QtbTx4PDIqbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyBiIHgpKSkpKSkpCisKKyhkZWZ0aG0gbW9kYXV4LTJjCisgIChpbXBsaWVzIChhbmQgKDwgMCBiKSAoPCBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgeCkgKG5hdHAgYikgKG5hdHAgbSkKKyAgICAgICAgICAgICAgICAoPD0gYiAobW9kICgrIGIgeCkgbSkpKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoKyBiIHgpIG0pCisgICAgICAgICAgICAgICAgICAoKyBiIChtb2QgeCBtKSkpKQorICA6aGludHMgKCgiU3ViZ29hbCAqMS84JyciIDp1c2UgKGxpbmVhci1tb2QtMykpKSkKKworKGRlZnRobWQgbW9kYXV4LTJkCisgIChpbXBsaWVzIChhbmQgKDwgeCBtKSAoPCAwIHgpICg8IDAgbSkKKyAgICAgICAgICAgICAgICAoPCAoLSBtKSBiKSAoPCBiIDApIChyYXRpb25hbHAgbSkKKyAgICAgICAgICAgICAgICAoPD0geCAobW9kICgrIGIgeCkgbSkpCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCB4KSAocmF0aW9uYWxwIGIpKQorICAgICAgICAgICAoZXF1YWwgKCsgKC0gbSkgKG1vZCAoKyBiIHgpIG0pKQorICAgICAgICAgICAgICAgICAgKCsgYiB4KSkpCisgIDpoaW50cyAoKCJHb2FsIiA6Y2FzZXMgKCg8PSAwICgrIGIgeCkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kYXV4LTFiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgYiB4KSkpKSkpKQorCisoZGVmdGhtIG1vZC1tLWIKKyAgKGltcGxpZXMgKGFuZCAoPCAwIHgpICg8IDAgYikgKDwgMCBtKQorICAgICAgICAgICAgICAgICg8IHggYikgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpIChuYXRwIG0pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoKyAobW9kICgtIHgpIG0pIGIpIG0pCisgICAgICAgICAgICAgICAgICAobW9kICgtIHgpIGIpKSkpCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkbW9kLCBzdWJtb2QKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisoZGVmdW4gYWRkbW9kIChhIGIgbSBiYXNlKQorICAobGV0KiAoKHMgKG1vZCAoKyBhIGIpIGJhc2UpKQorICAgICAgICAgKHMgKGlmICg8IHMgYSkgKG1vZCAoLSBzIG0pIGJhc2UpIHMpKQorICAgICAgICAgKHMgKGlmICg+PSBzIG0pIChtb2QgKC0gcyBtKSBiYXNlKSBzKSkpCisgICAgICAgIHMpKQorCisoZGVmdGhtZCBhZGRtb2QtY29ycmVjdAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBhIG0pICg8PSBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKGVxdWFsIChhZGRtb2QgYSBiIG0gYmFzZSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKCsgYSBiKSBtKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6Y2FzZXMgKCg8PSBiYXNlICgrIGEgYikpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMi4xJyIgOnVzZSAoKDppbnN0YW5jZSBlbGltLW1vZC1tPHg8MiptCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgYSBiKSkpKSkpKQorCisoZGVmdW4gc3VibW9kIChhIGIgbSBiYXNlKQorICAobGV0KiAoKGQgKG1vZCAoLSBhIGIpIGJhc2UpKQorICAgICAgICAgKGQgKGlmICg8IGEgZCkgKG1vZCAoKyBkIG0pIGJhc2UpIGQpKSkKKyAgICAgICAgZCkpCisKKyhkZWZ0aG1kIHN1Ym1vZC1hdXgxCisgIChpbXBsaWVzIChhbmQgKDwgYSAobW9kICgrIGEgKC0gYikpIGJhc2UpKQorICAgICAgICAgICAgICAgICg8IDAgYmFzZSkgKDwgYSBiYXNlKSAoPD0gYiBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGJhc2UpIChuYXRwIGEpIChuYXRwIGIpKQorICAgICAgICAgICAoPCBhIGIpKQorICA6cnVsZS1jbGFzc2VzIDpmb3J3YXJkLWNoYWluaW5nKQorCisoZGVmdGhtZCBzdWJtb2QtYXV4MgorICAoaW1wbGllcyAoYW5kICg8PSAobW9kICgrIGEgKC0gYikpIGJhc2UpIGEpCisgICAgICAgICAgICAgICAgKDwgMCBiYXNlKSAoPCBhIGJhc2UpICg8IGIgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBiYXNlKSAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKDw9IGIgYSkpCisgIDpydWxlLWNsYXNzZXMgOmZvcndhcmQtY2hhaW5pbmcpCisKKyhkZWZ0aG1kIHN1Ym1vZC1jb3JyZWN0CisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisJCSg8IGEgbSkgKDw9IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGEpIChuYXRwIGIpKQorICAgICAgICAgICAoZXF1YWwgKHN1Ym1vZCBhIGIgbSBiYXNlKQorICAgICAgICAgICAgICAgICAgKG1vZCAoLSBhIGIpIG0pKSkKKyAgOmhpbnRzICgoIkdvYWwiIDpjYXNlcyAoKDw9IGJhc2UgKCsgYSBiKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAyLjIiIDp1c2UgKCg6aW5zdGFuY2Ugc3VibW9kLWF1eDEpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMi4yJycnIiA6Y2FzZXMgKChhbmQgKDwgMCAoKyBhICgtIGIpIG0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPCAoKyBhICgtIGIpIG0pIG0pKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDIuMSIgOnVzZSAoKDppbnN0YW5jZSBzdWJtb2QtYXV4MikpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIiIDp1c2UgKCg6aW5zdGFuY2Ugc3VibW9kLWF1eDEpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4xIiA6dXNlICgoOmluc3RhbmNlIHN1Ym1vZC1hdXgyKSkpKSkKKworCisoZGVmdW4gc3VibW9kLTIgKGEgYiBtIGJhc2UpCisgIChsZXQqICgoZCAobW9kICgtIGEgYikgYmFzZSkpCisgICAgICAgICAoZCAoaWYgKDwgYSBiKSAobW9kICgrIGQgbSkgYmFzZSkgZCkpKQorICAgICAgICBkKSkKKworKGRlZnRobSBzdWJtb2QtMi1jb3JyZWN0CisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisJCSg8IGEgbSkgKDw9IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGEpIChuYXRwIGIpKQorICAgICAgICAgICAoZXF1YWwgKHN1Ym1vZC0yIGEgYiBtIGJhc2UpCisgICAgICAgICAgICAgICAgICAobW9kICgtIGEgYikgbSkpKQorICA6aGludHMgKCgiU3ViZ29hbCAyJyIgOmNhc2VzICgoYW5kICg8IDAgKCsgYSAoLSBiKSBtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPCAoKyBhICgtIGIpIG0pIG0pKSkpKSkKKworCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgICAgICAgICAgICAgICBleHQtc3VibW9kIGlzIGNvcnJlY3QKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOyBhIDwgMiptLCBiIDwgMiptCisoZGVmdW4gZXh0LXN1Ym1vZCAoYSBiIG0gYmFzZSkKKyAgKGxldCogKChhIChpZiAoPj0gYSBtKSAoLSBhIG0pIGEpKQorICAgICAgICAgKGIgKGlmICg+PSBiIG0pICgtIGIgbSkgYikpCisgICAgICAgICAoZCAobW9kICgtIGEgYikgYmFzZSkpCisgICAgICAgICAoZCAoaWYgKDwgYSBiKSAobW9kICgrIGQgbSkgYmFzZSkgZCkpKQorICAgICAgICBkKSkKKworOyBhIDwgMiptLCBiIDwgMiptCisoZGVmdW4gZXh0LXN1Ym1vZC0yIChhIGIgbSBiYXNlKQorICAobGV0KiAoKGEgKG1vZCBhIG0pKQorICAgICAgICAgKGIgKG1vZCBiIG0pKQorICAgICAgICAgKGQgKG1vZCAoLSBhIGIpIGJhc2UpKQorICAgICAgICAgKGQgKGlmICg8IGEgYikgKG1vZCAoKyBkIG0pIGJhc2UpIGQpKSkKKyAgICAgICAgZCkpCisKKyhkZWZ0aG1kIGV4dC1zdWJtb2QtZXh0LXN1Ym1vZC0yLWVxdWFsCisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisJCSg8IGEgKCogMiBtKSkgKDwgYiAoKiAyIG0pKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgYSkgKG5hdHAgYikpCisgICAgICAgICAgIChlcXVhbCAoZXh0LXN1Ym1vZCBhIGIgbSBiYXNlKQorICAgICAgICAgICAgICAgICAgKGV4dC1zdWJtb2QtMiBhIGIgbSBiYXNlKSkpKQorCisoZGVmdGhtZCBleHQtc3VibW9kLTItY29ycmVjdAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBhICgqIDIgbSkpICg8IGIgKCogMiBtKSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGEpIChuYXRwIGIpKQorICAgICAgICAgICAoZXF1YWwgKGV4dC1zdWJtb2QtMiBhIGIgbSBiYXNlKQorICAgICAgICAgICAgICAgICAgKG1vZCAoLSBhIGIpIG0pKSkpCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHctcmVkdWNlIGlzIGNvcnJlY3QKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKGRlZnVuIGR3LXJlZHVjZSAoaGkgbG8gbSBiYXNlKQorICAobGV0KiAoKHIxIChtb2QgaGkgbSkpCisgICAgICAgICAocjIgKG1vZCAoKyAoKiByMSBiYXNlKSBsbykgbSkpKQorICAgICAgICByMikpCisKKyhkZWZ0aG1kIGR3LXJlZHVjZS1jb3JyZWN0CisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisJCSg8IGhpIGJhc2UpICg8IGxvIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKGR3LXJlZHVjZSBoaSBsbyBtIGJhc2UpCisgICAgICAgICAgICAgICAgICAobW9kICgrICgqIGhpIGJhc2UpIGxvKSBtKSkpKQorCisoZGVmdGhtZCA8PS1tdWx0aXBseS1ib3RoLXNpZGVzLWJ5LXoKKyAgKGltcGxpZXMgKGFuZCAocmF0aW9uYWxwIHgpIChyYXRpb25hbHAgeSkKKyAgICAgICAgICAgICAgICAoPCAwIHopIChyYXRpb25hbHAgeikpCisgICAgICAgICAgIChlcXVhbCAoPD0geCB5KQorICAgICAgICAgICAgICAgICAgKDw9ICgqIHogeCkgKCogeiB5KSkpKSkKKworKGRlZnRobWQgZHctcmVkdWNlLWF1eDEKKyAgKGltcGxpZXMgKGFuZCAoPCAwIG0pICg8IG0gYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgICg8IGxvIGJhc2UpIChuYXRwIGxvKQorICAgICAgICAgICAgICAgICg8IHggbSkgKG5hdHAgeCkpCisgICAgICAgICAgICg8ICgrIGxvICgqIGJhc2UgeCkpICgqIGJhc2UgbSkpKQorICA6aGludHMgKCgiR29hbCIgOmNhc2VzICgoPD0gKCsgeCAxKSBtKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEnJyIgOmNhc2VzICgoPD0gKCogYmFzZSAoKyB4IDEpKSAoKiBiYXNlIG0pKSkpCisgICAgICAgICAgKCJzdWJnb2FsIDEuMiIgOnVzZSAoKDppbnN0YW5jZSA8PS1tdWx0aXBseS1ib3RoLXNpZGVzLWJ5LXoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrIDEgeCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeSBtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHogYmFzZSkpKSkpKQorCisoZGVmdGhtIGR3LXJlZHVjZS1hdXgyCisgIChpbXBsaWVzIChhbmQgKDwgeCAoKiBiYXNlIG0pKQorICAgICAgICAgICAgICAgICg8IDAgbSkgKDwgbSBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpIChuYXRwIHgpKQorICAgICAgICAgICAoPCAoZmxvb3IgeCBtKSBiYXNlKSkpCisKKzs7IFRoaXMgaXMgdGhlIG5lY2Vzc2FyeSBjb25kaXRpb24gZm9yIHVzaW5nIF9tcGRfZGl2X3dvcmRzKCkuCisoZGVmdGhtZCBkdy1yZWR1Y2Utc2Vjb25kLXF1b3RpZW50LWZpdHMtaW4tc2luZ2xlLXdvcmQKKyAgKGltcGxpZXMgKGFuZCAoPCAwIG0pICg8IG0gYmFzZSkKKyAgICAgICAgICAgICAgICAoPCBoaSBiYXNlKSAoPCBsbyBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKQorICAgICAgICAgICAgICAgIChlcXVhbCByMSAobW9kIGhpIG0pKSkKKyAgICAgICAgICAgKDwgKGZsb29yICgrICgqIHIxIGJhc2UpIGxvKSBtKQorICAgICAgICAgICAgICBiYXNlKSkKKyAgOmhpbnRzICgoIkdvYWwiIDpjYXNlcyAoKDwgcjEgbSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxJyciIDpjYXNlcyAoKDwgKCsgbG8gKCogYmFzZSAobW9kIGhpIG0pKSkgKCogYmFzZSBtKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIiIDp1c2UgKCg6aW5zdGFuY2UgZHctcmVkdWNlLWF1eDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4IChtb2QgaGkgbSkpKSkpKSkKKworCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdy1zdWJtb2QgaXMgY29ycmVjdAorOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisoZGVmdW4gZHctc3VibW9kIChhIGhpIGxvIG0gYmFzZSkKKyAgKGxldCogKChyIChkdy1yZWR1Y2UgaGkgbG8gbSBiYXNlKSkKKyAgICAgICAgIChkIChtb2QgKC0gYSByKSBiYXNlKSkKKyAgICAgICAgIChkIChpZiAoPCBhIHIpIChtb2QgKCsgZCBtKSBiYXNlKSBkKSkpCisgICAgICAgIGQpKQorCisoZGVmdGhtZCBkdy1zdWJtb2QtYXV4MQorICAoaW1wbGllcyAoYW5kIChuYXRwIGEpICg8IDAgbSkgKG5hdHAgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAoZXF1YWwgciAobW9kIHggbSkpKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoLSBhIHgpIG0pCisgICAgICAgICAgICAgICAgICAobW9kICgtIGEgcikgbSkpKSkKKworKGRlZnRobWQgZHctc3VibW9kLWNvcnJlY3QKKyAgKGltcGxpZXMgKGFuZCAoPCAwIG0pICg8IG0gYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBhKSAoPCBhIG0pIAorCQkoPCBoaSBiYXNlKSAoPCBsbyBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKGVxdWFsIChkdy1zdWJtb2QgYSBoaSBsbyBtIGJhc2UpCisgICAgICAgICAgICAgICAgICAobW9kICgtIGEgKCsgKCogYmFzZSBoaSkgbG8pKSBtKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6aW4tdGhlb3J5IChkaXNhYmxlIGR3LXJlZHVjZSkKKyAgICAgICAgICAgICAgICAgIDp1c2UgKCg6aW5zdGFuY2UgZHctc3VibW9kLWF1eDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgbG8gKCogYmFzZSBoaSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAociAoZHctcmVkdWNlIGhpIGxvIG0gYmFzZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKDppbnN0YW5jZSBkdy1yZWR1Y2UtY29ycmVjdCkpKSkpCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgQU5TSSBDIGFyaXRobWV0aWMgZm9yIHVpbnQ2NF90Cis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyhkZWZ1biBhZGQgKGEgYikKKyAgKG1vZCAoKyBhIGIpCisgICAgICAgKGV4cHQgMiA2NCkpKQorCisoZGVmdW4gc3ViIChhIGIpCisgIChtb2QgKC0gYSBiKQorICAgICAgIChleHB0IDIgNjQpKSkKKworKGRlZnVuIDw8ICh3IG4pCisgIChtb2QgKCogdyAoZXhwdCAyIG4pKQorICAgICAgIChleHB0IDIgNjQpKSkKKworKGRlZnVuID4+ICh3IG4pCisgIChmbG9vciB3IChleHB0IDIgbikpKQorCis7OyBqb2luIHVwcGVyIGFuZCBsb3dlciBoYWxmIG9mIGEgZG91YmxlIHdvcmQsIHlpZWxkaW5nIGEgMTI4IGJpdCBudW1iZXIKKyhkZWZ1biBqb2luIChoaSBsbykKKyAgKCsgKCogKGV4cHQgMiA2NCkgaGkpIGxvKSkKKworCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgICBGYXN0IG1vZHVsYXIgcmVkdWN0aW9uCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis7OyBUaGVzZSBhcmUgdGhlIHRocmVlIHByaW1lcyB1c2VkIGluIHRoZSBOdW1iZXIgVGhlb3JldGljIFRyYW5zZm9ybS4KKzs7IEEgZmFzdCBtb2R1bGFyIHJlZHVjdGlvbiBzY2hlbWUgZXhpc3RzIGZvciBhbGwgb2YgdGhlbS4KKyhkZWZtYWNybyBwMSAoKQorICAoKyAoZXhwdCAyIDY0KSAoLSAoZXhwdCAyIDMyKSkgMSkpCisKKyhkZWZtYWNybyBwMiAoKQorICAoKyAoZXhwdCAyIDY0KSAoLSAoZXhwdCAyIDM0KSkgMSkpCisKKyhkZWZtYWNybyBwMyAoKQorICAoKyAoZXhwdCAyIDY0KSAoLSAoZXhwdCAyIDQwKSkgMSkpCisKKworOzsgcmVkdWNlIHRoZSBkb3VibGUgd29yZCBudW1iZXIgaGkqMioqNjQgKyBsbyAobW9kIHAxKQorKGRlZnVuIHNpbXBsZS1tb2QtcmVkdWNlLXAxIChoaSBsbykKKyAgKCsgKCogKGV4cHQgMiAzMikgaGkpICgtIGhpKSBsbykpCisKKzs7IHJlZHVjZSB0aGUgZG91YmxlIHdvcmQgbnVtYmVyIGhpKjIqKjY0ICsgbG8gKG1vZCBwMikKKyhkZWZ1biBzaW1wbGUtbW9kLXJlZHVjZS1wMiAoaGkgbG8pCisgICgrICgqIChleHB0IDIgMzQpIGhpKSAoLSBoaSkgbG8pKQorCis7OyByZWR1Y2UgdGhlIGRvdWJsZSB3b3JkIG51bWJlciBoaSoyKio2NCArIGxvIChtb2QgcDMpCisoZGVmdW4gc2ltcGxlLW1vZC1yZWR1Y2UtcDMgKGhpIGxvKQorICAoKyAoKiAoZXhwdCAyIDQwKSBoaSkgKC0gaGkpIGxvKSkKKworCis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzsgICAgICBUaGUgbW9kdWxhciByZWR1Y3Rpb25zIGdpdmVuIGFib3ZlIGFyZSBjb3JyZWN0Cis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKGRlZnRobWQgY29uZ3J1ZW5jZS1wMS1hdXgKKyAgKGVxdWFsICgqIChleHB0IDIgNjQpIGhpKQorICAgICAgICAgKCsgKCogKHAxKSBoaSkKKyAgICAgICAgICAgICgqIChleHB0IDIgMzIpIGhpKQorICAgICAgICAgICAgKC0gaGkpKSkpCisKKyhkZWZ0aG1kIGNvbmdydWVuY2UtcDItYXV4CisgIChlcXVhbCAoKiAoZXhwdCAyIDY0KSBoaSkKKyAgICAgICAgICgrICgqIChwMikgaGkpCisgICAgICAgICAgICAoKiAoZXhwdCAyIDM0KSBoaSkKKyAgICAgICAgICAgICgtIGhpKSkpKQorCisoZGVmdGhtZCBjb25ncnVlbmNlLXAzLWF1eAorICAoZXF1YWwgKCogKGV4cHQgMiA2NCkgaGkpCisgICAgICAgICAoKyAoKiAocDMpIGhpKQorICAgICAgICAgICAgKCogKGV4cHQgMiA0MCkgaGkpCisgICAgICAgICAgICAoLSBoaSkpKSkKKworKGRlZnRobWQgbW9kLWF1Z21lbnQKKyAgKGltcGxpZXMgKGFuZCAocmF0aW9uYWxwIHgpCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCB5KQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgbSkpCisgICAgICAgICAgIChlcXVhbCAobW9kICgrIHggeSkgbSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKCsgeCAobW9kIHkgbSkpIG0pKSkpCisKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAxLWNvbmdydWVudAorICAoaW1wbGllcyAoYW5kIChpbnRlZ2VycCBoaSkKKyAgICAgICAgICAgICAgICAoaW50ZWdlcnAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDEgaGkgbG8pIChwMSkpCisgICAgICAgICAgICAgICAgICAobW9kIChqb2luIGhpIGxvKSAocDEpKSkpCisgIDpoaW50cyAoKCJHb2FsJyciIDp1c2UgKCg6aW5zdGFuY2UgY29uZ3J1ZW5jZS1wMS1hdXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICg6aW5zdGFuY2UgbW9kLWF1Z21lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAocDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrICgtIGhpKSBsbyAoKiAoZXhwdCAyIDMyKSBoaSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ICgqIChwMSkgaGkpKSkpKSkpCisKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAyLWNvbmdydWVudAorICAoaW1wbGllcyAoYW5kIChpbnRlZ2VycCBoaSkKKyAgICAgICAgICAgICAgICAoaW50ZWdlcnAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDIgaGkgbG8pIChwMikpCisgICAgICAgICAgICAgICAgICAobW9kIChqb2luIGhpIGxvKSAocDIpKSkpCisgIDpoaW50cyAoKCJHb2FsJyciIDp1c2UgKCg6aW5zdGFuY2UgY29uZ3J1ZW5jZS1wMi1hdXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICg6aW5zdGFuY2UgbW9kLWF1Z21lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAocDIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrICgtIGhpKSBsbyAoKiAoZXhwdCAyIDM0KSBoaSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ICgqIChwMikgaGkpKSkpKSkpCisKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAzLWNvbmdydWVudAorICAoaW1wbGllcyAoYW5kIChpbnRlZ2VycCBoaSkKKyAgICAgICAgICAgICAgICAoaW50ZWdlcnAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDMgaGkgbG8pIChwMykpCisgICAgICAgICAgICAgICAgICAobW9kIChqb2luIGhpIGxvKSAocDMpKSkpCisgIDpoaW50cyAoKCJHb2FsJyciIDp1c2UgKCg6aW5zdGFuY2UgY29uZ3J1ZW5jZS1wMy1hdXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICg6aW5zdGFuY2UgbW9kLWF1Z21lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAocDMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrICgtIGhpKSBsbyAoKiAoZXhwdCAyIDQwKSBoaSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ICgqIChwMykgaGkpKSkpKSkpCisKKworOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzsgIFdlIG5lZWQgYSBudW1iZXIgbGVzcyB0aGFuIDIqcCwgc28gdGhhdCB3ZSBjYW4gdXNlIHRoZSB0cmljayBmcm9tCis7ICBlbGltLW1vZC1tPHg8MiptIGZvciB0aGUgZmluYWwgcmVkdWN0aW9uLgorOyAgRm9yIHAxLCB0d28gbW9kdWxhciByZWR1Y3Rpb25zIGFyZSBzdWZmaWNpZW50LCBmb3IgcDIgYW5kIHAzIHRocmVlLgorOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOzsgcDE6IHRoZSBmaXJzdCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqKjk2CisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMS08LTIqKjk2CisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKDwgKHNpbXBsZS1tb2QtcmVkdWNlLXAxIGhpIGxvKQorICAgICAgICAgICAgICAoZXhwdCAyIDk2KSkpKQorCis7OyBwMTogdGhlIHNlY29uZCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqcDEKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAxLTwtMipwMQorICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IChqb2luIGhpIGxvKSAoZXhwdCAyIDk2KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDEgaGkgbG8pCisgICAgICAgICAgICAgICgqIDIgKHAxKSkpKSkKKworCis7OyBwMjogdGhlIGZpcnN0IHJlZHVjdGlvbiBpcyBsZXNzIHRoYW4gMioqOTgKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAyLTwtMioqOTgKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDIgaGkgbG8pCisgICAgICAgICAgICAgIChleHB0IDIgOTgpKSkpCisKKzs7IHAyOiB0aGUgc2Vjb25kIHJlZHVjdGlvbiBpcyBsZXNzIHRoYW4gMioqNjkKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAyLTwtMio2OQorICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IChqb2luIGhpIGxvKSAoZXhwdCAyIDk4KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDIgaGkgbG8pCisgICAgICAgICAgICAgIChleHB0IDIgNjkpKSkpCisKKzs7IHAzOiB0aGUgdGhpcmQgcmVkdWN0aW9uIGlzIGxlc3MgdGhhbiAyKnAyCisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMi08LTIqcDIKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCAoam9pbiBoaSBsbykgKGV4cHQgMiA2OSkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKDwgKHNpbXBsZS1tb2QtcmVkdWNlLXAyIGhpIGxvKQorICAgICAgICAgICAgICAoKiAyIChwMikpKSkpCisKKworOzsgcDM6IHRoZSBmaXJzdCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqKjEwNAorKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDMtPC0yKioxMDQKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDMgaGkgbG8pCisgICAgICAgICAgICAgIChleHB0IDIgMTA0KSkpKQorCis7OyBwMzogdGhlIHNlY29uZCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqKjgxCisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMy08LTIqKjgxCisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgKGpvaW4gaGkgbG8pIChleHB0IDIgMTA0KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDMgaGkgbG8pCisgICAgICAgICAgICAgIChleHB0IDIgODEpKSkpCisKKzs7IHAzOiB0aGUgdGhpcmQgcmVkdWN0aW9uIGlzIGxlc3MgdGhhbiAyKnAzCisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMy08LTIqcDMKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCAoam9pbiBoaSBsbykgKGV4cHQgMiA4MSkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKDwgKHNpbXBsZS1tb2QtcmVkdWNlLXAzIGhpIGxvKQorICAgICAgICAgICAgICAoKiAyIChwMykpKSkpCisKKworOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7ICAgICAgVGhlIHNpbXBsZSBtb2R1bGFyIHJlZHVjdGlvbnMsIGFkYXB0ZWQgZm9yIGNvbXBpbGVyIGZyaWVuZGx5IEMKKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisoZGVmdW4gbW9kLXJlZHVjZS1wMSAoaGkgbG8pCisgIChsZXQqICgoeSBoaSkKKyAgICAgICAgICh4IHkpCisgICAgICAgICAoaGkgKD4+IGhpIDMyKSkKKyAgICAgICAgICh4IChzdWIgbG8geCkpCisgICAgICAgICAoaGkgKGlmICg+IHggbG8pICgrIGhpIC0xKSBoaSkpCisgICAgICAgICAoeSAoPDwgeSAzMikpCisgICAgICAgICAobG8gKGFkZCB5IHgpKQorICAgICAgICAgKGhpIChpZiAoPCBsbyB5KSAoKyBoaSAxKSBoaSkpKQorICAgICAgICAoKyAoKiBoaSAoZXhwdCAyIDY0KSkgbG8pKSkKKworKGRlZnVuIG1vZC1yZWR1Y2UtcDIgKGhpIGxvKQorICAobGV0KiAoKHkgaGkpCisgICAgICAgICAoeCB5KQorICAgICAgICAgKGhpICg+PiBoaSAzMCkpCisgICAgICAgICAoeCAoc3ViIGxvIHgpKQorICAgICAgICAgKGhpIChpZiAoPiB4IGxvKSAoKyBoaSAtMSkgaGkpKQorICAgICAgICAgKHkgKDw8IHkgMzQpKQorICAgICAgICAgKGxvIChhZGQgeSB4KSkKKyAgICAgICAgIChoaSAoaWYgKDwgbG8geSkgKCsgaGkgMSkgaGkpKSkKKyAgICAgICAgKCsgKCogaGkgKGV4cHQgMiA2NCkpIGxvKSkpCisKKyhkZWZ1biBtb2QtcmVkdWNlLXAzIChoaSBsbykKKyAgKGxldCogKCh5IGhpKQorICAgICAgICAgKHggeSkKKyAgICAgICAgIChoaSAoPj4gaGkgMjQpKQorICAgICAgICAgKHggKHN1YiBsbyB4KSkKKyAgICAgICAgIChoaSAoaWYgKD4geCBsbykgKCsgaGkgLTEpIGhpKSkKKyAgICAgICAgICh5ICg8PCB5IDQwKSkKKyAgICAgICAgIChsbyAoYWRkIHkgeCkpCisgICAgICAgICAoaGkgKGlmICg8IGxvIHkpICgrIGhpIDEpIGhpKSkpCisgICAgICAgICgrICgqIGhpIChleHB0IDIgNjQpKSBsbykpKQorCisKKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOyAgICAgVGhlIGNvbXBpbGVyIGZyaWVuZGx5IHZlcnNpb25zIGFyZSBlcXVhbCB0byB0aGUgc2ltcGxlIHZlcnNpb25zCis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKGRlZnRobSBtb2QtcmVkdWNlLWF1eDEKKyAgKGltcGxpZXMgKGFuZCAoPD0gMCBhKSAobmF0cCBhKSAobmF0cCBtKQorICAgICAgICAgICAgICAgICg8ICgtIG0pIGIpICg8PSBiIDApCisgICAgICAgICAgICAgICAgKGludGVnZXJwIGIpCisgICAgICAgICAgICAgICAgKDwgKG1vZCAoKyBiIGEpIG0pCisgICAgICAgICAgICAgICAgICAgKG1vZCBhIG0pKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKCsgYiBhKSBtKQorICAgICAgICAgICAgICAgICAgKCsgYiAobW9kIGEgbSkpKSkKKyAgOmhpbnRzICgoIlN1YmdvYWwgMiIgOnVzZSAoKDppbnN0YW5jZSBtb2RhdXgtMWIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyBhIGIpKSkpKSkpCisKKyhkZWZ0aG0gbW9kLXJlZHVjZS1hdXgyCisgIChpbXBsaWVzIChhbmQgKDw9IDAgYSkgKG5hdHAgYSkgKG5hdHAgbSkKKyAgICAgICAgICAgICAgICAoPCBiIG0pIChuYXRwIGIpCisgICAgICAgICAgICAgICAgKDwgKG1vZCAoKyBiIGEpIG0pCisgICAgICAgICAgICAgICAgICAgKG1vZCBhIG0pKSkKKyAgICAgICAgICAgKGVxdWFsICgrIG0gKG1vZCAoKyBiIGEpIG0pKQorICAgICAgICAgICAgICAgICAgKCsgYiAobW9kIGEgbSkpKSkpCisKKworKGRlZnRobSBtb2QtcmVkdWNlLWF1eDMKKyAgKGltcGxpZXMgKGFuZCAoPCAwIGEpIChuYXRwIGEpIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKDwgKC0gbSkgYikgKDwgYiAwKQorICAgICAgICAgICAgICAgIChpbnRlZ2VycCBiKQorICAgICAgICAgICAgICAgICg8PSAobW9kIGEgbSkKKyAgICAgICAgICAgICAgICAgICAgKG1vZCAoKyBiIGEpIG0pKSkKKyAgICAgICAgICAgKGVxdWFsICgrICgtIG0pIChtb2QgKCsgYiBhKSBtKSkKKyAgICAgICAgICAgICAgICAgICgrIGIgKG1vZCBhIG0pKSkpCisgIDpoaW50cyAoKCJTdWJnb2FsIDEuMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kYXV4LTFiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggYikpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMScnIiA6dXNlICgoOmluc3RhbmNlIG1vZGF1eC0yZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggSSkpKSkpKQorCisKKyhkZWZ0aG0gbW9kLXJlZHVjZS1hdXg0CisgIChpbXBsaWVzIChhbmQgKDwgMCBhKSAobmF0cCBhKSAobmF0cCBtKQorICAgICAgICAgICAgICAgICg8IGIgbSkgKG5hdHAgYikKKyAgICAgICAgICAgICAgICAoPD0gKG1vZCBhIG0pCisgICAgICAgICAgICAgICAgICAgIChtb2QgKCsgYiBhKSBtKSkpCisgICAgICAgICAgIChlcXVhbCAobW9kICgrIGIgYSkgbSkKKyAgICAgICAgICAgICAgICAgICgrIGIgKG1vZCBhIG0pKSkpKQorCisKKyhkZWZ0aG0gbW9kLXJlZHVjZS1wMT09c2ltcGxlLW1vZC1yZWR1Y2UtcDEKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKG1vZC1yZWR1Y2UtcDEgaGkgbG8pCisgICAgICAgICAgICAgICAgICAoc2ltcGxlLW1vZC1yZWR1Y2UtcDEgaGkgbG8pKSkKKyAgOmhpbnRzICgoIkdvYWwiIDppbi10aGVvcnkgKGRpc2FibGUgZXhwdCkKKyAgICAgICAgICAgICAgICAgIDpjYXNlcyAoKDwgMCBoaSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIuMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDMyKSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMi4xJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgMzIpIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4xLjInIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiAzMikgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjEuMSciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXg0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDMyKSBoaSkpKSkpKSkKKworCisoZGVmdGhtIG1vZC1yZWR1Y2UtcDI9PXNpbXBsZS1tb2QtcmVkdWNlLXAyCisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QtcmVkdWNlLXAyIGhpIGxvKQorICAgICAgICAgICAgICAgICAgKHNpbXBsZS1tb2QtcmVkdWNlLXAyIGhpIGxvKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6Y2FzZXMgKCg8IDAgaGkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yLjInIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiAzNCkgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIuMSciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDM0KSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMS4yJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgMzQpIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4xLjEnIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiAzNCkgaGkpKSkpKSkpCisKKworKGRlZnRobSBtb2QtcmVkdWNlLXAzPT1zaW1wbGUtbW9kLXJlZHVjZS1wMworICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgIChlcXVhbCAobW9kLXJlZHVjZS1wMyBoaSBsbykKKyAgICAgICAgICAgICAgICAgIChzaW1wbGUtbW9kLXJlZHVjZS1wMyBoaSBsbykpKQorICA6aGludHMgKCgiR29hbCIgOmNhc2VzICgoPCAwIGhpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMi4yJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgNDApIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yLjEnIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiA0MCkgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjEuMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDQwKSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMS4xJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgNDApIGhpKSkpKSkpKQorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY2MzUwZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMKQEAgLTAsMCArMSwyOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgInR5cGVhcml0aC5oIgorI2luY2x1ZGUgIm1lbW9yeS5oIgorCisKKy8qIEd1YXJhbnRlZWQgbWluaW11bSBhbGxvY2F0aW9uIGZvciBhIGNvZWZmaWNpZW50LiBNYXkgYmUgY2hhbmdlZCBvbmNlCisgICBhdCBwcm9ncmFtIHN0YXJ0IHVzaW5nIG1wZF9zZXRtaW5hbGxvYygpLiAqLworbXBkX3NzaXplX3QgTVBEX01JTkFMTE9DID0gTVBEX01JTkFMTE9DX01JTjsKKworLyogQ3VzdG9tIGFsbG9jYXRpb24gYW5kIGZyZWUgZnVuY3Rpb25zICovCit2b2lkICooKiBtcGRfbWFsbG9jZnVuYykoc2l6ZV90IHNpemUpID0gbWFsbG9jOwordm9pZCAqKCogbXBkX3JlYWxsb2NmdW5jKSh2b2lkICpwdHIsIHNpemVfdCBzaXplKSA9IHJlYWxsb2M7Cit2b2lkICooKiBtcGRfY2FsbG9jZnVuYykoc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSkgPSBjYWxsb2M7Cit2b2lkICgqIG1wZF9mcmVlKSh2b2lkICpwdHIpID0gZnJlZTsKKworCisvKiBlbXVsYXRlIGNhbGxvYyBpZiBpdCBpcyBub3QgYXZhaWxhYmxlICovCit2b2lkICoKK21wZF9jYWxsb2NmdW5jX2VtKHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUpCit7CisgICAgdm9pZCAqcHRyOworICAgIHNpemVfdCByZXE7CisgICAgbXBkX3NpemVfdCBvdmVyZmxvdzsKKworI2lmIE1QRF9TSVpFX01BWCA8IFNJWkVfTUFYCisgICAgLyogZnVsbF9jb3ZlcmFnZSB0ZXN0IG9ubHkgKi8KKyAgICBpZiAobm1lbWIgPiBNUERfU0laRV9NQVggfHwgc2l6ZSA+IE1QRF9TSVpFX01BWCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisjZW5kaWYKKworICAgIHJlcSA9IG11bF9zaXplX3Rfb3ZlcmZsb3coKG1wZF9zaXplX3Qpbm1lbWIsIChtcGRfc2l6ZV90KXNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBwdHIgPSBtcGRfbWFsbG9jZnVuYyhyZXEpOworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgLyogdXNlZCBvbiB1aW50MzJfdCBvciB1aW50NjRfdCAqLworICAgIG1lbXNldChwdHIsIDAsIHJlcSk7CisKKyAgICByZXR1cm4gcHRyOworfQorCisKKy8qIG1hbGxvYyB3aXRoIG92ZXJmbG93IGNoZWNraW5nICovCit2b2lkICoKK21wZF9hbGxvYyhtcGRfc2l6ZV90IG5tZW1iLCBtcGRfc2l6ZV90IHNpemUpCit7CisgICAgbXBkX3NpemVfdCByZXEsIG92ZXJmbG93OworCisgICAgcmVxID0gbXVsX3NpemVfdF9vdmVyZmxvdyhubWVtYiwgc2l6ZSwgJm92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG1wZF9tYWxsb2NmdW5jKHJlcSk7Cit9CisKKy8qIGNhbGxvYyB3aXRoIG92ZXJmbG93IGNoZWNraW5nICovCit2b2lkICoKK21wZF9jYWxsb2MobXBkX3NpemVfdCBubWVtYiwgbXBkX3NpemVfdCBzaXplKQoreworICAgIG1wZF9zaXplX3Qgb3ZlcmZsb3c7CisKKyAgICAodm9pZCltdWxfc2l6ZV90X292ZXJmbG93KG5tZW1iLCBzaXplLCAmb3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbXBkX2NhbGxvY2Z1bmMobm1lbWIsIHNpemUpOworfQorCisvKiByZWFsbG9jIHdpdGggb3ZlcmZsb3cgY2hlY2tpbmcgKi8KK3ZvaWQgKgorbXBkX3JlYWxsb2Modm9pZCAqcHRyLCBtcGRfc2l6ZV90IG5tZW1iLCBtcGRfc2l6ZV90IHNpemUsIHVpbnQ4X3QgKmVycikKK3sKKyAgICB2b2lkICpuZXc7CisgICAgbXBkX3NpemVfdCByZXEsIG92ZXJmbG93OworCisgICAgcmVxID0gbXVsX3NpemVfdF9vdmVyZmxvdyhubWVtYiwgc2l6ZSwgJm92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgKmVyciA9IDE7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgbmV3ID0gbXBkX3JlYWxsb2NmdW5jKHB0ciwgcmVxKTsKKyAgICBpZiAobmV3ID09IE5VTEwpIHsKKyAgICAgICAgKmVyciA9IDE7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgcmV0dXJuIG5ldzsKK30KKworLyogc3RydWN0IGhhY2sgbWFsbG9jIHdpdGggb3ZlcmZsb3cgY2hlY2tpbmcgKi8KK3ZvaWQgKgorbXBkX3NoX2FsbG9jKG1wZF9zaXplX3Qgc3RydWN0X3NpemUsIG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSkKK3sKKyAgICBtcGRfc2l6ZV90IHJlcSwgb3ZlcmZsb3c7CisKKyAgICByZXEgPSBtdWxfc2l6ZV90X292ZXJmbG93KG5tZW1iLCBzaXplLCAmb3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXEgPSBhZGRfc2l6ZV90X292ZXJmbG93KHJlcSwgc3RydWN0X3NpemUsICZvdmVyZmxvdyk7CisgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBtcGRfbWFsbG9jZnVuYyhyZXEpOworfQorCisKKy8qIEFsbG9jYXRlIGEgbmV3IGRlY2ltYWwgd2l0aCBhIGNvZWZmaWNpZW50IG9mIGxlbmd0aCAnbndvcmRzJy4gSW4gY2FzZQorICAgb2YgYW4gZXJyb3IgdGhlIHJldHVybiB2YWx1ZSBpcyBOVUxMLiAqLworbXBkX3QgKgorbXBkX3FuZXdfc2l6ZShtcGRfc3NpemVfdCBud29yZHMpCit7CisgICAgbXBkX3QgKnJlc3VsdDsKKworICAgIG53b3JkcyA9IChud29yZHMgPCBNUERfTUlOQUxMT0MpID8gTVBEX01JTkFMTE9DIDogbndvcmRzOworCisgICAgcmVzdWx0ID0gbXBkX2FsbG9jKDEsIHNpemVvZiAqcmVzdWx0KTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0LT5kYXRhID0gbXBkX2FsbG9jKG53b3Jkcywgc2l6ZW9mICpyZXN1bHQtPmRhdGEpOworICAgIGlmIChyZXN1bHQtPmRhdGEgPT0gTlVMTCkgeworICAgICAgICBtcGRfZnJlZShyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQtPmZsYWdzID0gMDsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5kaWdpdHMgPSAwOworICAgIHJlc3VsdC0+bGVuID0gMDsKKyAgICByZXN1bHQtPmFsbG9jID0gbndvcmRzOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogQWxsb2NhdGUgYSBuZXcgZGVjaW1hbCB3aXRoIGEgY29lZmZpY2llbnQgb2YgbGVuZ3RoIE1QRF9NSU5BTExPQy4KKyAgIEluIGNhc2Ugb2YgYW4gZXJyb3IgdGhlIHJldHVybiB2YWx1ZSBpcyBOVUxMLiAqLworbXBkX3QgKgorbXBkX3FuZXcodm9pZCkKK3sKKyAgICByZXR1cm4gbXBkX3FuZXdfc2l6ZShNUERfTUlOQUxMT0MpOworfQorCisvKiBBbGxvY2F0ZSBuZXcgZGVjaW1hbC4gQ2FsbGVyIGNhbiBjaGVjayBmb3IgTlVMTCBvciBNUERfTWFsbG9jX2Vycm9yLgorICAgUmFpc2VzIG9uIGVycm9yLiAqLworbXBkX3QgKgorbXBkX25ldyhtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgbXBkX3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IG1wZF9xbmV3KCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9hZGRzdGF0dXNfcmFpc2UoY3R4LCBNUERfTWFsbG9jX2Vycm9yKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIElucHV0OiAncmVzdWx0JyBpcyBhIHN0YXRpYyBtcGRfdCB3aXRoIGEgc3RhdGljIGNvZWZmaWNpZW50LgorICogQXNzdW1wdGlvbjogJ253b3JkcycgPj0gcmVzdWx0LT5hbGxvYy4KKyAqCisgKiBSZXNpemUgdGhlIHN0YXRpYyBjb2VmZmljaWVudCB0byBhIGxhcmdlciBkeW5hbWljIG9uZSBhbmQgY29weSB0aGUKKyAqIGV4aXN0aW5nIGRhdGEuIElmIHN1Y2Nlc3NmdWwsIHRoZSB2YWx1ZSBvZiAncmVzdWx0JyBpcyB1bmNoYW5nZWQuCisgKiBPdGhlcndpc2UsIHNldCAncmVzdWx0JyB0byBOYU4gYW5kIHVwZGF0ZSAnc3RhdHVzJyB3aXRoIE1QRF9NYWxsb2NfZXJyb3IuCisgKi8KK2ludAorbXBkX3N3aXRjaF90b19keW4obXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgbndvcmRzLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgKnAgPSByZXN1bHQtPmRhdGE7CisKKyAgICBhc3NlcnQobndvcmRzID49IHJlc3VsdC0+YWxsb2MpOworCisgICAgcmVzdWx0LT5kYXRhID0gbXBkX2FsbG9jKG53b3Jkcywgc2l6ZW9mICpyZXN1bHQtPmRhdGEpOworICAgIGlmIChyZXN1bHQtPmRhdGEgPT0gTlVMTCkgeworICAgICAgICByZXN1bHQtPmRhdGEgPSBwOworICAgICAgICBtcGRfc2V0X3FuYW4ocmVzdWx0KTsKKyAgICAgICAgbXBkX3NldF9wb3NpdGl2ZShyZXN1bHQpOworICAgICAgICByZXN1bHQtPmV4cCA9IHJlc3VsdC0+ZGlnaXRzID0gcmVzdWx0LT5sZW4gPSAwOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1lbWNweShyZXN1bHQtPmRhdGEsIHAsIHJlc3VsdC0+YWxsb2MgKiAoc2l6ZW9mICpyZXN1bHQtPmRhdGEpKTsKKyAgICByZXN1bHQtPmFsbG9jID0gbndvcmRzOworICAgIG1wZF9zZXRfZHluYW1pY19kYXRhKHJlc3VsdCk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBJbnB1dDogJ3Jlc3VsdCcgaXMgYSBzdGF0aWMgbXBkX3Qgd2l0aCBhIHN0YXRpYyBjb2VmZmljaWVudC4KKyAqCisgKiBDb252ZXJ0IHRoZSBjb2VmZmljaWVudCB0byBhIGR5bmFtaWMgb25lIHRoYXQgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4gSWYKKyAqIG1hbGxvYyBmYWlscywgc2V0ICdyZXN1bHQnIHRvIE5hTiBhbmQgdXBkYXRlICdzdGF0dXMnIHdpdGggTVBEX01hbGxvY19lcnJvci4KKyAqLworaW50CittcGRfc3dpdGNoX3RvX2R5bl96ZXJvKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG53b3JkcywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90ICpwID0gcmVzdWx0LT5kYXRhOworCisgICAgcmVzdWx0LT5kYXRhID0gbXBkX2NhbGxvYyhud29yZHMsIHNpemVvZiAqcmVzdWx0LT5kYXRhKTsKKyAgICBpZiAocmVzdWx0LT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgcmVzdWx0LT5kYXRhID0gcDsKKyAgICAgICAgbXBkX3NldF9xbmFuKHJlc3VsdCk7CisgICAgICAgIG1wZF9zZXRfcG9zaXRpdmUocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0LT5leHAgPSByZXN1bHQtPmRpZ2l0cyA9IHJlc3VsdC0+bGVuID0gMDsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXN1bHQtPmFsbG9jID0gbndvcmRzOworICAgIG1wZF9zZXRfZHluYW1pY19kYXRhKHJlc3VsdCk7CisKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIElucHV0OiAncmVzdWx0JyBpcyBhIHN0YXRpYyBvciBhIGR5bmFtaWMgbXBkX3Qgd2l0aCBhIGR5bmFtaWMgY29lZmZpY2llbnQuCisgKiBSZXNpemUgdGhlIGNvZWZmaWNpZW50IHRvIGxlbmd0aCAnbndvcmRzJzoKKyAqICAgQ2FzZSBud29yZHMgPiByZXN1bHQtPmFsbG9jOgorICogICAgIElmIHJlYWxsb2MgaXMgc3VjY2Vzc2Z1bDoKKyAqICAgICAgICdyZXN1bHQnIGhhcyBhIGxhcmdlciBjb2VmZmljaWVudCBidXQgdGhlIHNhbWUgdmFsdWUuIFJldHVybiAxLgorICogICAgIE90aGVyd2lzZToKKyAqICAgICAgIFNldCAncmVzdWx0JyB0byBOYU4sIHVwZGF0ZSBzdGF0dXMgd2l0aCBNUERfTWFsbG9jX2Vycm9yIGFuZCByZXR1cm4gMC4KKyAqICAgQ2FzZSBud29yZHMgPCByZXN1bHQtPmFsbG9jOgorICogICAgIElmIHJlYWxsb2MgaXMgc3VjY2Vzc2Z1bDoKKyAqICAgICAgICdyZXN1bHQnIGhhcyBhIHNtYWxsZXIgY29lZmZpY2llbnQuIHJlc3VsdC0+bGVuIGlzIHVuZGVmaW5lZC4gUmV0dXJuIDEuCisgKiAgICAgT3RoZXJ3aXNlICh1bmxpa2VseSk6CisgKiAgICAgICAncmVzdWx0JyBpcyB1bmNoYW5nZWQuIFJldXNlIHRoZSBub3cgb3ZlcnNpemVkIGNvZWZmaWNpZW50LiBSZXR1cm4gMS4KKyAqLworaW50CittcGRfcmVhbGxvY19keW4obXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgbndvcmRzLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQ4X3QgZXJyID0gMDsKKworICAgIHJlc3VsdC0+ZGF0YSA9IG1wZF9yZWFsbG9jKHJlc3VsdC0+ZGF0YSwgbndvcmRzLCBzaXplb2YgKnJlc3VsdC0+ZGF0YSwgJmVycik7CisgICAgaWYgKCFlcnIpIHsKKyAgICAgICAgcmVzdWx0LT5hbGxvYyA9IG53b3JkczsKKyAgICB9CisgICAgZWxzZSBpZiAobndvcmRzID4gcmVzdWx0LT5hbGxvYykgeworICAgICAgICBtcGRfc2V0X3FuYW4ocmVzdWx0KTsKKyAgICAgICAgbXBkX3NldF9wb3NpdGl2ZShyZXN1bHQpOworICAgICAgICByZXN1bHQtPmV4cCA9IHJlc3VsdC0+ZGlnaXRzID0gcmVzdWx0LT5sZW4gPSAwOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYTRhNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgTUVNT1JZX0gKKyNkZWZpbmUgTUVNT1JZX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisKKworaW50IG1wZF9zd2l0Y2hfdG9fZHluKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9zd2l0Y2hfdG9fZHluX3plcm8obXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3Qgc2l6ZSwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQgbXBkX3JlYWxsb2NfZHluKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIHVpbnQzMl90ICpzdGF0dXMpOworCisKKyNlbmRpZgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU1OGQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKQEAgLTAsMCArMSw4MTQ5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSAiYmFzZWFyaXRoLmgiCisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgImNvbnZvbHV0ZS5oIgorI2luY2x1ZGUgImNydC5oIgorI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgInR5cGVhcml0aC5oIgorI2luY2x1ZGUgInVtb2Rhcml0aC5oIgorCisjaWZkZWYgUFBSTworICAjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgICAjaW5jbHVkZSA8ZmxvYXQuaD4KKyAgICAjcHJhZ21hIGZlbnZfYWNjZXNzKG9uKQorICAjZWxpZiAhZGVmaW5lZChfX09wZW5CU0RfXykgJiYgIWRlZmluZWQoX19OZXRCU0RfXykKKyAgICAvKiBDOTkgKi8KKyAgICAjaW5jbHVkZSA8ZmVudi5oPgorICAgICNwcmFnbWEgU1REQyBGRU5WX0FDQ0VTUyBPTgorICAjZW5kaWYKKyNlbmRpZgorCisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorICAjZGVmaW5lIEFMV0FZU19JTkxJTkUgX19mb3JjZWlubGluZQorI2VsaWYgZGVmaW5lZChMRUdBQ1lfQ09NUElMRVIpCisgICNkZWZpbmUgQUxXQVlTX0lOTElORQorICAjdW5kZWYgaW5saW5lCisgICNkZWZpbmUgaW5saW5lCisjZWxzZQorICAjaWZkZWYgVEVTVF9DT1ZFUkFHRQorICAgICNkZWZpbmUgQUxXQVlTX0lOTElORQorICAjZWxzZQorICAgICNkZWZpbmUgQUxXQVlTX0lOTElORSBpbmxpbmUgX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQorICAjZW5kaWYKKyNlbmRpZgorCisKKyNkZWZpbmUgTVBEX05FV1RPTkRJVl9DVVRPRkYgMTAyNEwKKworI2RlZmluZSBNUERfTkVXX1NUQVRJQyhuYW1lLCBmbGFncywgZXhwLCBkaWdpdHMsIGxlbikgXAorICAgICAgICBtcGRfdWludF90IG5hbWUjI19kYXRhW01QRF9NSU5BTExPQ19NQVhdOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtcGRfdCBuYW1lID0ge2ZsYWdzfE1QRF9TVEFUSUN8TVBEX1NUQVRJQ19EQVRBLCBleHAsIGRpZ2l0cywgXAorICAgICAgICAgICAgICAgICAgICAgIGxlbiwgTVBEX01JTkFMTE9DX01BWCwgbmFtZSMjX2RhdGF9CisKKyNkZWZpbmUgTVBEX05FV19DT05TVChuYW1lLCBmbGFncywgZXhwLCBkaWdpdHMsIGxlbiwgYWxsb2MsIGluaXR2YWwpIFwKKyAgICAgICAgbXBkX3VpbnRfdCBuYW1lIyNfZGF0YVthbGxvY10gPSB7aW5pdHZhbH07ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbXBkX3QgbmFtZSA9IHtmbGFnc3xNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLCBleHAsIGRpZ2l0cywgIFwKKyAgICAgICAgICAgICAgICAgICAgICBsZW4sIGFsbG9jLCBuYW1lIyNfZGF0YX0KKworI2RlZmluZSBNUERfTkVXX1NIQVJFRChuYW1lLCBhKSBcCisgICAgICAgIG1wZF90IG5hbWUgPSB7KGEtPmZsYWdzJn5NUERfREFUQUZMQUdTKXxNUERfU1RBVElDfE1QRF9TSEFSRURfREFUQSwgXAorICAgICAgICAgICAgICAgICAgICAgIGEtPmV4cCwgYS0+ZGlnaXRzLCBhLT5sZW4sIGEtPmFsbG9jLCBhLT5kYXRhfQorCisKK3N0YXRpYyBtcGRfdWludF90IGRhdGFfb25lWzFdID0gezF9Oworc3RhdGljIG1wZF91aW50X3QgZGF0YV96ZXJvWzFdID0gezB9Oworc3RhdGljIGNvbnN0IG1wZF90IG9uZSA9IHtNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLCAwLCAxLCAxLCAxLCBkYXRhX29uZX07CitzdGF0aWMgY29uc3QgbXBkX3QgbWludXNfb25lID0ge01QRF9ORUd8TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwgMCwgMSwgMSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9vbmV9Oworc3RhdGljIGNvbnN0IG1wZF90IHplcm8gPSB7TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwgMCwgMSwgMSwgMSwgZGF0YV96ZXJvfTsKKworc3RhdGljIGlubGluZSB2b2lkIF9tcGRfY2hlY2tfZXhwKG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKTsKK3N0YXRpYyB2b2lkIF9zZXR0cmlwbGUobXBkX3QgKnJlc3VsdCwgdWludDhfdCBzaWduLCBtcGRfdWludF90IGEsCisgICAgICAgICAgICAgICAgICAgICAgIG1wZF9zc2l6ZV90IGV4cCk7CitzdGF0aWMgaW5saW5lIG1wZF9zc2l6ZV90IF9tcGRfcmVhbF9zaXplKG1wZF91aW50X3QgKmRhdGEsIG1wZF9zc2l6ZV90IHNpemUpOworCitzdGF0aWMgdm9pZCBfbXBkX3FhZGQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitzdGF0aWMgaW5saW5lIHZvaWQgX21wZF9xbXVsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3N0YXRpYyB2b2lkIF9tcGRfYmFzZV9uZGl2bW9kKG1wZF90ICpxLCBtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfdCAqYiwgdWludDMyX3QgKnN0YXR1cyk7CitzdGF0aWMgaW5saW5lIHZvaWQgX21wZF9xcG93X3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCBleHAsIHVpbnQ4X3QgcmVzdWx0c2lnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCittcGRfdWludF90IG1wZF9xc3NoaWZ0cihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3Qgbik7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgUGVyZm9ybWFuY2UgY3JpdGljYWwgaW5saW5lIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgQ09ORklHXzY0CisvKiBEaWdpdHMgaW4gYSB3b3JkLCBwcmltYXJpbHkgdXNlZnVsIGZvciB0aGUgbW9zdCBzaWduaWZpY2FudCB3b3JkLiAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF93b3JkX2RpZ2l0cyhtcGRfdWludF90IHdvcmQpCit7CisgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbOV0pIHsKKyAgICAgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbNF0pIHsKKyAgICAgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzJdKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzFdKSA/IDEgOiAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzNdKSA/IDMgOiA0OworICAgICAgICB9CisgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzZdKSB7CisgICAgICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbNV0pID8gNSA6IDY7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbOF0pIHsKKyAgICAgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFs3XSkgPyA3IDogODsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gOTsKKyAgICB9CisgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbMTRdKSB7CisgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzExXSkgeworICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzEwXSkgPyAxMCA6IDExOworICAgICAgICB9CisgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzEzXSkgeworICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzEyXSkgPyAxMiA6IDEzOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxNDsKKyAgICB9CisgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbMThdKSB7CisgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzE2XSkgeworICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzE1XSkgPyAxNSA6IDE2OworICAgICAgICB9CisgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFsxN10pID8gMTcgOiAxODsKKyAgICB9CisKKyAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbMTldKSA/IDE5IDogMjA7Cit9CisjZWxzZQorQUxXQVlTX0lOTElORSBpbnQKK21wZF93b3JkX2RpZ2l0cyhtcGRfdWludF90IHdvcmQpCit7CisgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbNF0pIHsKKyAgICAgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbMl0pIHsKKyAgICAgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFsxXSkgPyAxIDogMjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbM10pID8gMyA6IDQ7CisgICAgfQorICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzZdKSB7CisgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFs1XSkgPyA1IDogNjsKKyAgICB9CisgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbOF0pIHsKKyAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzddKSA/IDcgOiA4OworICAgIH0KKworICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFs5XSkgPyA5IDogMTA7Cit9CisjZW5kaWYKKworCisvKiBBZGp1c3RlZCBleHBvbmVudCAqLworQUxXQVlTX0lOTElORSBtcGRfc3NpemVfdAorbXBkX2FkamV4cChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiAoZGVjLT5leHAgKyBkZWMtPmRpZ2l0cykgLSAxOworfQorCisvKiBFdGlueSAqLworQUxXQVlTX0lOTElORSBtcGRfc3NpemVfdAorbXBkX2V0aW55KGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5lbWluIC0gKGN0eC0+cHJlYyAtIDEpOworfQorCisvKiBFdG9wOiB1c2VkIGZvciBmb2xkaW5nIGRvd24gaW4gSUVFRSBjbGFtcGluZyAqLworQUxXQVlTX0lOTElORSBtcGRfc3NpemVfdAorbXBkX2V0b3AoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPmVtYXggLSAoY3R4LT5wcmVjIC0gMSk7Cit9CisKKy8qIE1vc3Qgc2lnbmlmaWNhbnQgd29yZCAqLworQUxXQVlTX0lOTElORSBtcGRfdWludF90CittcGRfbXN3b3JkKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgYXNzZXJ0KGRlYy0+bGVuID4gMCk7CisgICAgcmV0dXJuIGRlYy0+ZGF0YVtkZWMtPmxlbi0xXTsKK30KKworLyogTW9zdCBzaWduaWZpY2FudCBkaWdpdCBvZiBhIHdvcmQgKi8KK2lubGluZSBtcGRfdWludF90CittcGRfbXNkKG1wZF91aW50X3Qgd29yZCkKK3sKKyAgICBpbnQgbjsKKworICAgIG4gPSBtcGRfd29yZF9kaWdpdHMod29yZCk7CisgICAgcmV0dXJuIHdvcmQgLyBtcGRfcG93MTBbbi0xXTsKK30KKworLyogTGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQgb2YgYSB3b3JkICovCitBTFdBWVNfSU5MSU5FIG1wZF91aW50X3QKK21wZF9sc2QobXBkX3VpbnRfdCB3b3JkKQoreworICAgIHJldHVybiB3b3JkICUgMTA7Cit9CisKKy8qIENvZWZmaWNpZW50IHNpemUgbmVlZGVkIHRvIHN0b3JlICdkaWdpdHMnICovCitBTFdBWVNfSU5MSU5FIG1wZF9zc2l6ZV90CittcGRfZGlnaXRzX3RvX3NpemUobXBkX3NzaXplX3QgZGlnaXRzKQoreworICAgIG1wZF9zc2l6ZV90IHEsIHI7CisKKyAgICBfbXBkX2lkaXZfd29yZCgmcSwgJnIsIGRpZ2l0cywgTVBEX1JESUdJVFMpOworICAgIHJldHVybiAociA9PSAwKSA/IHEgOiBxKzE7Cit9CisKKy8qIE51bWJlciBvZiBkaWdpdHMgaW4gdGhlIGV4cG9uZW50LiBOb3QgZGVmaW5lZCBmb3IgTVBEX1NTSVpFX01JTi4gKi8KK2lubGluZSBpbnQKK21wZF9leHBfZGlnaXRzKG1wZF9zc2l6ZV90IGV4cCkKK3sKKyAgICBleHAgPSAoZXhwIDwgMCkgPyAtZXhwIDogZXhwOworICAgIHJldHVybiBtcGRfd29yZF9kaWdpdHMoZXhwKTsKK30KKworLyogQ2Fub25pY2FsICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzY2Fub25pY2FsKGNvbnN0IG1wZF90ICpkZWMgVU5VU0VEKQoreworICAgIHJldHVybiAxOworfQorCisvKiBGaW5pdGUgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNmaW5pdGUoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gIShkZWMtPmZsYWdzICYgTVBEX1NQRUNJQUwpOworfQorCisvKiBJbmZpbml0ZSAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc2luZmluaXRlKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfSU5GOworfQorCisvKiBOYU4gKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNuYW4oY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIChNUERfTkFOfE1QRF9TTkFOKTsKK30KKworLyogTmVnYXRpdmUgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNuZWdhdGl2ZShjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX05FRzsKK30KKworLyogUG9zaXRpdmUgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNwb3NpdGl2ZShjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiAhKGRlYy0+ZmxhZ3MgJiBNUERfTkVHKTsKK30KKworLyogcU5hTiAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3FuYW4oY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9OQU47Cit9CisKKy8qIFNpZ25lZCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3NpZ25lZChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX05FRzsKK30KKworLyogc05hTiAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3NuYW4oY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9TTkFOOworfQorCisvKiBTcGVjaWFsICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzc3BlY2lhbChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX1NQRUNJQUw7Cit9CisKKy8qIFplcm8gKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXN6ZXJvKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuICFtcGRfaXNzcGVjaWFsKGRlYykgJiYgbXBkX21zd29yZChkZWMpID09IDA7Cit9CisKKy8qIFRlc3QgZm9yIHplcm8gd2hlbiBzcGVjaWFscyBoYXZlIGJlZW4gcnVsZWQgb3V0IGFscmVhZHkgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXN6ZXJvY29lZmYoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gbXBkX21zd29yZChkZWMpID09IDA7Cit9CisKKy8qIE5vcm1hbCAqLworaW5saW5lIGludAorbXBkX2lzbm9ybWFsKGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChkZWMpKSByZXR1cm4gMDsKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGRlYykpIHJldHVybiAwOworCisgICAgcmV0dXJuIG1wZF9hZGpleHAoZGVjKSA+PSBjdHgtPmVtaW47Cit9CisKKy8qIFN1Ym5vcm1hbCAqLworaW5saW5lIGludAorbXBkX2lzc3Vibm9ybWFsKGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChkZWMpKSByZXR1cm4gMDsKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGRlYykpIHJldHVybiAwOworCisgICAgcmV0dXJuIG1wZF9hZGpleHAoZGVjKSA8IGN0eC0+ZW1pbjsKK30KKworLyogT2RkIHdvcmQgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNvZGR3b3JkKG1wZF91aW50X3Qgd29yZCkKK3sKKyAgICByZXR1cm4gd29yZCAmIDE7Cit9CisKKy8qIE9kZCBjb2VmZmljaWVudCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc29kZGNvZWZmKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIG1wZF9pc29kZHdvcmQoZGVjLT5kYXRhWzBdKTsKK30KKworLyogMCBpZiBkZWMgaXMgcG9zaXRpdmUsIDEgaWYgZGVjIGlzIG5lZ2F0aXZlICovCitBTFdBWVNfSU5MSU5FIHVpbnQ4X3QKK21wZF9zaWduKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfTkVHOworfQorCisvKiAxIGlmIGRlYyBpcyBwb3NpdGl2ZSwgLTEgaWYgZGVjIGlzIG5lZ2F0aXZlICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2FyaXRoX3NpZ24oY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gMSAtIDIgKiBtcGRfaXNuZWdhdGl2ZShkZWMpOworfQorCisvKiBSYWRpeCAqLworQUxXQVlTX0lOTElORSBsb25nCittcGRfcmFkaXgodm9pZCkKK3sKKyAgICByZXR1cm4gMTA7Cit9CisKKy8qIER5bmFtaWMgZGVjaW1hbCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc2R5bmFtaWMobXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gIShkZWMtPmZsYWdzICYgTVBEX1NUQVRJQyk7Cit9CisKKy8qIFN0YXRpYyBkZWNpbWFsICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzc3RhdGljKG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfU1RBVElDOworfQorCisvKiBEYXRhIG9mIGRlY2ltYWwgaXMgZHluYW1pYyAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc2R5bmFtaWNfZGF0YShtcGRfdCAqZGVjKQoreworICAgIHJldHVybiAhKGRlYy0+ZmxhZ3MgJiBNUERfREFUQUZMQUdTKTsKK30KKworLyogRGF0YSBvZiBkZWNpbWFsIGlzIHN0YXRpYyAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3N0YXRpY19kYXRhKG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfU1RBVElDX0RBVEE7Cit9CisKKy8qIERhdGEgb2YgZGVjaW1hbCBpcyBzaGFyZWQgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNzaGFyZWRfZGF0YShtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX1NIQVJFRF9EQVRBOworfQorCisvKiBEYXRhIG9mIGRlY2ltYWwgaXMgY29uc3QgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNjb25zdF9kYXRhKG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfQ09OU1RfREFUQTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lIG1lbW9yeSBoYW5kbGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEZpbGwgZGVzdGluYXRpb24gd2l0aCB6ZXJvcyAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfdWludF96ZXJvKG1wZF91aW50X3QgKmRlc3QsIG1wZF9zaXplX3QgbGVuKQoreworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBkZXN0W2ldID0gMDsKKyAgICB9Cit9CisKKy8qIEZyZWUgYSBkZWNpbWFsICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9kZWwobXBkX3QgKmRlYykKK3sKKyAgICBpZiAobXBkX2lzZHluYW1pY19kYXRhKGRlYykpIHsKKyAgICAgICAgbXBkX2ZyZWUoZGVjLT5kYXRhKTsKKyAgICB9CisgICAgaWYgKG1wZF9pc2R5bmFtaWMoZGVjKSkgeworICAgICAgICBtcGRfZnJlZShkZWMpOworICAgIH0KK30KKworLyoKKyAqIFJlc2l6ZSB0aGUgY29lZmZpY2llbnQuIEV4aXN0aW5nIGRhdGEgdXAgdG8gJ253b3JkcycgaXMgbGVmdCB1bnRvdWNoZWQuCisgKiBSZXR1cm4gMSBvbiBzdWNjZXNzLCAwIG90aGVyd2lzZS4KKyAqCisgKiBJbnB1dCBpbnZhcmlhbnQ6IE1QRF9NSU5BTExPQyA8PSByZXN1bHQtPmFsbG9jLgorICoKKyAqIENhc2UgbndvcmRzID09IHJlc3VsdC0+YWxsb2M6CisgKiAgICAgJ3Jlc3VsdCcgaXMgdW5jaGFuZ2VkLiBSZXR1cm4gMS4KKyAqCisgKiBDYXNlIG53b3JkcyA+IHJlc3VsdC0+YWxsb2M6CisgKiAgIENhc2UgcmVhbGxvYyBzdWNjZXNzOgorICogICAgIFRoZSB2YWx1ZSBvZiAncmVzdWx0JyBkb2VzIG5vdCBjaGFuZ2UuIFJldHVybiAxLgorICogICBDYXNlIHJlYWxsb2MgZmFpbHVyZToKKyAqICAgICAncmVzdWx0JyBpcyBOYU4sIHN0YXR1cyBpcyB1cGRhdGVkIHdpdGggTVBEX01hbGxvY19lcnJvci4gUmV0dXJuIDAuCisgKgorICogQ2FzZSBud29yZHMgPCByZXN1bHQtPmFsbG9jOgorICogICBDYXNlIGlzX3N0YXRpY19kYXRhIG9yIHJlYWxsb2MgZmFpbHVyZSBbMV06CisgKiAgICAgJ3Jlc3VsdCcgaXMgdW5jaGFuZ2VkLiBSZXR1cm4gMS4KKyAqICAgQ2FzZSByZWFsbG9jIHN1Y2Nlc3M6CisgKiAgICAgVGhlIHZhbHVlIG9mIHJlc3VsdCBpcyB1bmRlZmluZWQgKGV4cGVjdGVkKS4gUmV0dXJuIDEuCisgKgorICoKKyAqIFsxXSBJbiB0aGF0IGNhc2UgdGhlIG9sZCAobm93IG92ZXJzaXplZCkgYXJlYSBpcyBzdGlsbCB2YWxpZC4KKyAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9xcmVzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG53b3JkcywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBhc3NlcnQoIW1wZF9pc2NvbnN0X2RhdGEocmVzdWx0KSk7IC8qIGlsbGVnYWwgb3BlcmF0aW9uIGZvciBhIGNvbnN0ICovCisgICAgYXNzZXJ0KCFtcGRfaXNzaGFyZWRfZGF0YShyZXN1bHQpKTsgLyogaWxsZWdhbCBvcGVyYXRpb24gZm9yIGEgc2hhcmVkICovCisgICAgYXNzZXJ0KE1QRF9NSU5BTExPQyA8PSByZXN1bHQtPmFsbG9jKTsKKworICAgIG53b3JkcyA9IChud29yZHMgPD0gTVBEX01JTkFMTE9DKSA/IE1QRF9NSU5BTExPQyA6IG53b3JkczsKKyAgICBpZiAobndvcmRzID09IHJlc3VsdC0+YWxsb2MpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChtcGRfaXNzdGF0aWNfZGF0YShyZXN1bHQpKSB7CisgICAgICAgIGlmIChud29yZHMgPiByZXN1bHQtPmFsbG9jKSB7CisgICAgICAgICAgICByZXR1cm4gbXBkX3N3aXRjaF90b19keW4ocmVzdWx0LCBud29yZHMsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIG1wZF9yZWFsbG9jX2R5bihyZXN1bHQsIG53b3Jkcywgc3RhdHVzKTsKK30KKworLyogU2FtZSBhcyBtcGRfcXJlc2l6ZSwgYnV0IHRoZSBjb21wbGV0ZSBjb2VmZmljaWVudCAoaW5jbHVkaW5nIHRoZSBvbGQKKyAqIG1lbW9yeSBhcmVhISkgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4gKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfcXJlc2l6ZV96ZXJvKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG53b3JkcywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBhc3NlcnQoIW1wZF9pc2NvbnN0X2RhdGEocmVzdWx0KSk7IC8qIGlsbGVnYWwgb3BlcmF0aW9uIGZvciBhIGNvbnN0ICovCisgICAgYXNzZXJ0KCFtcGRfaXNzaGFyZWRfZGF0YShyZXN1bHQpKTsgLyogaWxsZWdhbCBvcGVyYXRpb24gZm9yIGEgc2hhcmVkICovCisgICAgYXNzZXJ0KE1QRF9NSU5BTExPQyA8PSByZXN1bHQtPmFsbG9jKTsKKworICAgIG53b3JkcyA9IChud29yZHMgPD0gTVBEX01JTkFMTE9DKSA/IE1QRF9NSU5BTExPQyA6IG53b3JkczsKKyAgICBpZiAobndvcmRzICE9IHJlc3VsdC0+YWxsb2MpIHsKKyAgICAgICAgaWYgKG1wZF9pc3N0YXRpY19kYXRhKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIGlmIChud29yZHMgPiByZXN1bHQtPmFsbG9jKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1wZF9zd2l0Y2hfdG9fZHluX3plcm8ocmVzdWx0LCBud29yZHMsIHN0YXR1cyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIW1wZF9yZWFsbG9jX2R5bihyZXN1bHQsIG53b3Jkcywgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfdWludF96ZXJvKHJlc3VsdC0+ZGF0YSwgbndvcmRzKTsKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIFJlZHVjZSBtZW1vcnkgc2l6ZSBmb3IgdGhlIGNvZWZmaWNpZW50IHRvIE1QRF9NSU5BTExPQy4gSW4gdGhlb3J5LAorICogcmVhbGxvYyBtYXkgZmFpbCBldmVuIHdoZW4gcmVkdWNpbmcgdGhlIG1lbW9yeSBzaXplLiBCdXQgaW4gdGhhdCBjYXNlCisgKiB0aGUgb2xkIG1lbW9yeSBhcmVhIGlzIGFsd2F5cyBiaWcgZW5vdWdoLCBzbyBjaGVja2luZyBmb3IgTVBEX01hbGxvY19lcnJvcgorICogaXMgbm90IGltcGVyYXRpdmUuCisgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX21pbmFsbG9jKG1wZF90ICpyZXN1bHQpCit7CisgICAgYXNzZXJ0KCFtcGRfaXNjb25zdF9kYXRhKHJlc3VsdCkpOyAvKiBpbGxlZ2FsIG9wZXJhdGlvbiBmb3IgYSBjb25zdCAqLworICAgIGFzc2VydCghbXBkX2lzc2hhcmVkX2RhdGEocmVzdWx0KSk7IC8qIGlsbGVnYWwgb3BlcmF0aW9uIGZvciBhIHNoYXJlZCAqLworCisgICAgaWYgKCFtcGRfaXNzdGF0aWNfZGF0YShyZXN1bHQpICYmIHJlc3VsdC0+YWxsb2MgPiBNUERfTUlOQUxMT0MpIHsKKyAgICAgICAgdWludDhfdCBlcnIgPSAwOworICAgICAgICByZXN1bHQtPmRhdGEgPSBtcGRfcmVhbGxvYyhyZXN1bHQtPmRhdGEsIE1QRF9NSU5BTExPQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICpyZXN1bHQtPmRhdGEsICZlcnIpOworICAgICAgICBpZiAoIWVycikgeworICAgICAgICAgICAgcmVzdWx0LT5hbGxvYyA9IE1QRF9NSU5BTExPQzsKKyAgICAgICAgfQorICAgIH0KK30KKworaW50CittcGRfcmVzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG53b3JkcywgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIG53b3JkcywgJnN0YXR1cykpIHsKKyAgICAgICAgbXBkX2FkZHN0YXR1c19yYWlzZShjdHgsIHN0YXR1cyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcmVzaXplX3plcm8obXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgbndvcmRzLCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBpZiAoIW1wZF9xcmVzaXplX3plcm8ocmVzdWx0LCBud29yZHMsICZzdGF0dXMpKSB7CisgICAgICAgIG1wZF9hZGRzdGF0dXNfcmFpc2UoY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXR0cmlidXRlcyBvZiBhIGRlY2ltYWwgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBTZXQgZGlnaXRzLiBBc3N1bXB0aW9uOiByZXN1bHQtPmxlbiBpcyBpbml0aWFsaXplZCBhbmQgPiAwLiAqLworaW5saW5lIHZvaWQKK21wZF9zZXRkaWdpdHMobXBkX3QgKnJlc3VsdCkKK3sKKyAgICBtcGRfc3NpemVfdCB3ZGlnaXRzID0gbXBkX3dvcmRfZGlnaXRzKG1wZF9tc3dvcmQocmVzdWx0KSk7CisgICAgcmVzdWx0LT5kaWdpdHMgPSB3ZGlnaXRzICsgKHJlc3VsdC0+bGVuLTEpICogTVBEX1JESUdJVFM7Cit9CisKKy8qIFNldCBzaWduICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfc2lnbihtcGRfdCAqcmVzdWx0LCB1aW50OF90IHNpZ24pCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX05FRzsKKyAgICByZXN1bHQtPmZsYWdzIHw9IHNpZ247Cit9CisKKy8qIENvcHkgc2lnbiBmcm9tIGFub3RoZXIgZGVjaW1hbCAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2lnbmNweShtcGRfdCAqcmVzdWx0LCBtcGRfdCAqYSkKK3sKKyAgICB1aW50OF90IHNpZ24gPSBhLT5mbGFncyZNUERfTkVHOworCisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX05FRzsKKyAgICByZXN1bHQtPmZsYWdzIHw9IHNpZ247Cit9CisKKy8qIFNldCBpbmZpbml0eSAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X2luZmluaXR5KG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX1NQRUNJQUw7CisgICAgcmVzdWx0LT5mbGFncyB8PSBNUERfSU5GOworfQorCisvKiBTZXQgcU5hTiAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X3FuYW4obXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfU1BFQ0lBTDsKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9OQU47Cit9CisKKy8qIFNldCBzTmFOICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfc25hbihtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9TUEVDSUFMOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gTVBEX1NOQU47Cit9CisKKy8qIFNldCB0byBuZWdhdGl2ZSAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X25lZ2F0aXZlKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyB8PSBNUERfTkVHOworfQorCisvKiBTZXQgdG8gcG9zaXRpdmUgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9wb3NpdGl2ZShtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9ORUc7Cit9CisKKy8qIFNldCB0byBkeW5hbWljICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfZHluYW1pYyhtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9TVEFUSUM7Cit9CisKKy8qIFNldCB0byBzdGF0aWMgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9zdGF0aWMobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9TVEFUSUM7Cit9CisKKy8qIFNldCBkYXRhIHRvIGR5bmFtaWMgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9keW5hbWljX2RhdGEobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfREFUQUZMQUdTOworfQorCisvKiBTZXQgZGF0YSB0byBzdGF0aWMgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9zdGF0aWNfZGF0YShtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9EQVRBRkxBR1M7CisgICAgcmVzdWx0LT5mbGFncyB8PSBNUERfU1RBVElDX0RBVEE7Cit9CisKKy8qIFNldCBkYXRhIHRvIHNoYXJlZCAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X3NoYXJlZF9kYXRhKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX0RBVEFGTEFHUzsKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9TSEFSRURfREFUQTsKK30KKworLyogU2V0IGRhdGEgdG8gY29uc3QgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9jb25zdF9kYXRhKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX0RBVEFGTEFHUzsKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9DT05TVF9EQVRBOworfQorCisvKiBDbGVhciBmbGFncywgcHJlc2VydmluZyBtZW1vcnkgYXR0cmlidXRlcy4gKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX2NsZWFyX2ZsYWdzKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSAoTVBEX1NUQVRJQ3xNUERfREFUQUZMQUdTKTsKK30KKworLyogU2V0IGZsYWdzLCBwcmVzZXJ2aW5nIG1lbW9yeSBhdHRyaWJ1dGVzLiAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X2ZsYWdzKG1wZF90ICpyZXN1bHQsIHVpbnQ4X3QgZmxhZ3MpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSAoTVBEX1NUQVRJQ3xNUERfREFUQUZMQUdTKTsKKyAgICByZXN1bHQtPmZsYWdzIHw9IGZsYWdzOworfQorCisvKiBDb3B5IGZsYWdzLCBwcmVzZXJ2aW5nIG1lbW9yeSBhdHRyaWJ1dGVzIG9mIHJlc3VsdC4gKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX2NvcHlfZmxhZ3MobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEpCit7CisgICAgdWludDhfdCBhZmxhZ3MgPSBhLT5mbGFnczsKKyAgICByZXN1bHQtPmZsYWdzICY9IChNUERfU1RBVElDfE1QRF9EQVRBRkxBR1MpOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gKGFmbGFncyAmIH4oTVBEX1NUQVRJQ3xNUERfREFUQUZMQUdTKSk7Cit9CisKKy8qIEluaXRpYWxpemUgYSB3b3JrY29udGV4dCBmcm9tIGN0eC4gU2V0IHRyYXBzLCBmbGFncyBhbmQgbmV3dHJhcCB0byAwLiAqLworc3RhdGljIGlubGluZSB2b2lkCittcGRfd29ya2NvbnRleHQobXBkX2NvbnRleHRfdCAqd29ya2N0eCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHdvcmtjdHgtPnByZWMgPSBjdHgtPnByZWM7CisgICAgd29ya2N0eC0+ZW1heCA9IGN0eC0+ZW1heDsKKyAgICB3b3JrY3R4LT5lbWluID0gY3R4LT5lbWluOworICAgIHdvcmtjdHgtPnJvdW5kID0gY3R4LT5yb3VuZDsKKyAgICB3b3JrY3R4LT50cmFwcyA9IDA7CisgICAgd29ya2N0eC0+c3RhdHVzID0gMDsKKyAgICB3b3JrY3R4LT5uZXd0cmFwID0gMDsKKyAgICB3b3JrY3R4LT5jbGFtcCA9IGN0eC0+Y2xhbXA7CisgICAgd29ya2N0eC0+YWxsY3IgPSBjdHgtPmFsbGNyOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgIEdldHRpbmcgYW5kIHNldHRpbmcgcGFydHMgb2YgZGVjaW1hbHMgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogRmxpcCB0aGUgc2lnbiBvZiBhIGRlY2ltYWwgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9uZWdhdGUobXBkX3QgKmRlYykKK3sKKyAgICBkZWMtPmZsYWdzIF49IE1QRF9ORUc7Cit9CisKKy8qIFNldCBjb2VmZmljaWVudCB0byB6ZXJvICovCit2b2lkCittcGRfemVyb2NvZWZmKG1wZF90ICpyZXN1bHQpCit7CisgICAgbXBkX21pbmFsbG9jKHJlc3VsdCk7CisgICAgcmVzdWx0LT5kaWdpdHMgPSAxOworICAgIHJlc3VsdC0+bGVuID0gMTsKKyAgICByZXN1bHQtPmRhdGFbMF0gPSAwOworfQorCisvKiBTZXQgdGhlIGNvZWZmaWNpZW50IHRvIGFsbCBuaW5lcy4gKi8KK3ZvaWQKK21wZF9xbWF4Y29lZmYobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IGxlbiwgcjsKKworICAgIF9tcGRfaWRpdl93b3JkKCZsZW4sICZyLCBjdHgtPnByZWMsIE1QRF9SRElHSVRTKTsKKyAgICBsZW4gPSAociA9PSAwKSA/IGxlbiA6IGxlbisxOworCisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIGxlbiwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVzdWx0LT5sZW4gPSBsZW47CisgICAgcmVzdWx0LT5kaWdpdHMgPSBjdHgtPnByZWM7CisKKyAgICAtLWxlbjsKKyAgICBpZiAociA+IDApIHsKKyAgICAgICAgcmVzdWx0LT5kYXRhW2xlbi0tXSA9IG1wZF9wb3cxMFtyXS0xOworICAgIH0KKyAgICBmb3IgKDsgbGVuID49IDA7IC0tbGVuKSB7CisgICAgICAgIHJlc3VsdC0+ZGF0YVtsZW5dID0gTVBEX1JBRElYLTE7CisgICAgfQorfQorCisvKgorICogQ3V0IG9mZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdHMgc28gdGhhdCB0aGUgcmVzdCBmaXRzIGluIGN0eC0+cHJlYy4KKyAqIENhbm5vdCBmYWlsLgorICovCitzdGF0aWMgdm9pZAorX21wZF9jYXAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHVpbnQzMl90IGR1bW15OworICAgIG1wZF9zc2l6ZV90IGxlbiwgcjsKKworICAgIGlmIChyZXN1bHQtPmxlbiA+IDAgJiYgcmVzdWx0LT5kaWdpdHMgPiBjdHgtPnByZWMpIHsKKyAgICAgICAgX21wZF9pZGl2X3dvcmQoJmxlbiwgJnIsIGN0eC0+cHJlYywgTVBEX1JESUdJVFMpOworICAgICAgICBsZW4gPSAociA9PSAwKSA/IGxlbiA6IGxlbisxOworCisgICAgICAgIGlmIChyICE9IDApIHsKKyAgICAgICAgICAgIHJlc3VsdC0+ZGF0YVtsZW4tMV0gJT0gbXBkX3BvdzEwW3JdOworICAgICAgICB9CisKKyAgICAgICAgbGVuID0gX21wZF9yZWFsX3NpemUocmVzdWx0LT5kYXRhLCBsZW4pOworICAgICAgICAvKiByZXNpemUgdG8gZmV3ZXIgd29yZHMgY2Fubm90IGZhaWwgKi8KKyAgICAgICAgbXBkX3FyZXNpemUocmVzdWx0LCBsZW4sICZkdW1teSk7CisgICAgICAgIHJlc3VsdC0+bGVuID0gbGVuOworICAgICAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvKHJlc3VsdCkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIG1wZF9zaWduKHJlc3VsdCksIDAsIHJlc3VsdC0+ZXhwKTsKKyAgICB9Cit9CisKKy8qCisgKiBDdXQgb2ZmIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0cyBvZiBhIE5hTiBwYXlsb2FkIHNvIHRoYXQgdGhlIHJlc3QKKyAqIGZpdHMgaW4gY3R4LT5wcmVjIC0gY3R4LT5jbGFtcC4gQ2Fubm90IGZhaWwuCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX2ZpeF9uYW4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHVpbnQzMl90IGR1bW15OworICAgIG1wZF9zc2l6ZV90IHByZWM7CisgICAgbXBkX3NzaXplX3QgbGVuLCByOworCisgICAgcHJlYyA9IGN0eC0+cHJlYyAtIGN0eC0+Y2xhbXA7CisgICAgaWYgKHJlc3VsdC0+bGVuID4gMCAmJiByZXN1bHQtPmRpZ2l0cyA+IHByZWMpIHsKKyAgICAgICAgaWYgKHByZWMgPT0gMCkgeworICAgICAgICAgICAgbXBkX21pbmFsbG9jKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQtPmxlbiA9IHJlc3VsdC0+ZGlnaXRzID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9tcGRfaWRpdl93b3JkKCZsZW4sICZyLCBwcmVjLCBNUERfUkRJR0lUUyk7CisgICAgICAgICAgICBsZW4gPSAociA9PSAwKSA/IGxlbiA6IGxlbisxOworCisgICAgICAgICAgICBpZiAociAhPSAwKSB7CisgICAgICAgICAgICAgICAgIHJlc3VsdC0+ZGF0YVtsZW4tMV0gJT0gbXBkX3BvdzEwW3JdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZW4gPSBfbXBkX3JlYWxfc2l6ZShyZXN1bHQtPmRhdGEsIGxlbik7CisgICAgICAgICAgICAvKiByZXNpemUgdG8gZmV3ZXIgd29yZHMgY2Fubm90IGZhaWwgKi8KKyAgICAgICAgICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgbGVuLCAmZHVtbXkpOworICAgICAgICAgICAgcmVzdWx0LT5sZW4gPSBsZW47CisgICAgICAgICAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisgICAgICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKHJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICAvKiBOYU4wIGlzIG5vdCBhIHZhbGlkIHJlcHJlc2VudGF0aW9uICovCisgICAgICAgICAgICAgICAgcmVzdWx0LT5sZW4gPSByZXN1bHQtPmRpZ2l0cyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBHZXQgbiBtb3N0IHNpZ25pZmljYW50IGRpZ2l0cyBmcm9tIGEgZGVjaW1hbCwgd2hlcmUgMCA8IG4gPD0gTVBEX1VJTlRfRElHSVRTLgorICogQXNzdW1lcyBNUERfVUlOVF9ESUdJVFMgPT0gTVBEX1JESUdJVFMrMSwgd2hpY2ggaXMgdHJ1ZSBmb3IgMzIgYW5kIDY0IGJpdAorICogbWFjaGluZXMuCisgKgorICogVGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uIHdpbGwgYmUgaW4gbG8uIElmIHRoZSBvcGVyYXRpb24gaXMgaW1wb3NzaWJsZSwKKyAqIGhpIHdpbGwgYmUgbm9uemVyby4gVGhpcyBpcyB1c2VkIHRvIGluZGljYXRlIGFuIGVycm9yLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZ2V0X21zZGlnaXRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgY29uc3QgbXBkX3QgKmRlYywKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuKQoreworICAgIG1wZF91aW50X3QgciwgdG1wOworCisgICAgYXNzZXJ0KDAgPCBuICYmIG4gPD0gTVBEX1JESUdJVFMrMSk7CisKKyAgICBfbXBkX2Rpdl93b3JkKCZ0bXAsICZyLCBkZWMtPmRpZ2l0cywgTVBEX1JESUdJVFMpOworICAgIHIgPSAociA9PSAwKSA/IE1QRF9SRElHSVRTIDogcjsgLyogZGlnaXRzIGluIHRoZSBtb3N0IHNpZ25pZmljYW50IHdvcmQgKi8KKworICAgICpoaSA9IDA7CisgICAgKmxvID0gZGVjLT5kYXRhW2RlYy0+bGVuLTFdOworICAgIGlmIChuIDw9IHIpIHsKKyAgICAgICAgKmxvIC89IG1wZF9wb3cxMFtyLW5dOworICAgIH0KKyAgICBlbHNlIGlmIChkZWMtPmxlbiA+IDEpIHsKKyAgICAgICAgLyogYXQgdGhpcyBwb2ludCAxIDw9IHIgPCBuIDw9IE1QRF9SRElHSVRTKzEgKi8KKyAgICAgICAgX21wZF9tdWxfd29yZHMoaGksIGxvLCAqbG8sIG1wZF9wb3cxMFtuLXJdKTsKKyAgICAgICAgdG1wID0gZGVjLT5kYXRhW2RlYy0+bGVuLTJdIC8gbXBkX3BvdzEwW01QRF9SRElHSVRTLShuLXIpXTsKKyAgICAgICAgKmxvID0gKmxvICsgdG1wOworICAgICAgICBpZiAoKmxvIDwgdG1wKSAoKmhpKSsrOworICAgIH0KK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgR2F0aGVyaW5nIGluZm9ybWF0aW9uIGFib3V0IGEgZGVjaW1hbCAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRoZSByZWFsIHNpemUgb2YgdGhlIGNvZWZmaWNpZW50IHdpdGhvdXQgbGVhZGluZyB6ZXJvIHdvcmRzLiAqLworc3RhdGljIGlubGluZSBtcGRfc3NpemVfdAorX21wZF9yZWFsX3NpemUobXBkX3VpbnRfdCAqZGF0YSwgbXBkX3NzaXplX3Qgc2l6ZSkKK3sKKyAgICB3aGlsZSAoc2l6ZSA+IDEgJiYgZGF0YVtzaXplLTFdID09IDApIHsKKyAgICAgICAgc2l6ZS0tOworICAgIH0KKworICAgIHJldHVybiBzaXplOworfQorCisvKiBSZXR1cm4gbnVtYmVyIG9mIHRyYWlsaW5nIHplcm9zLiBObyBlcnJvcnMgYXJlIHBvc3NpYmxlLiAqLworbXBkX3NzaXplX3QKK21wZF90cmFpbF96ZXJvcyhjb25zdCBtcGRfdCAqZGVjKQoreworICAgIG1wZF91aW50X3Qgd29yZDsKKyAgICBtcGRfc3NpemVfdCBpLCB0eiA9IDA7CisKKyAgICBmb3IgKGk9MDsgaSA8IGRlYy0+bGVuOyArK2kpIHsKKyAgICAgICAgaWYgKGRlYy0+ZGF0YVtpXSAhPSAwKSB7CisgICAgICAgICAgICB3b3JkID0gZGVjLT5kYXRhW2ldOworICAgICAgICAgICAgdHogPSBpICogTVBEX1JESUdJVFM7CisgICAgICAgICAgICB3aGlsZSAod29yZCAlIDEwID09IDApIHsKKyAgICAgICAgICAgICAgICB3b3JkIC89IDEwOworICAgICAgICAgICAgICAgIHR6Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0ejsKK30KKworLyogSW50ZWdlcjogVW5kZWZpbmVkIGZvciBzcGVjaWFscyAqLworc3RhdGljIGludAorX21wZF9pc2ludChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIG1wZF9zc2l6ZV90IHR6OworCisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihkZWMpKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHR6ID0gbXBkX3RyYWlsX3plcm9zKGRlYyk7CisgICAgcmV0dXJuIChkZWMtPmV4cCArIHR6ID49IDApOworfQorCisvKiBJbnRlZ2VyICovCitpbnQKK21wZF9pc2ludGVnZXIoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChkZWMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gX21wZF9pc2ludChkZWMpOworfQorCisvKiBXb3JkIGlzIGEgcG93ZXIgb2YgMTAgKi8KK3N0YXRpYyBpbnQKK21wZF93b3JkX2lzcG93MTAobXBkX3VpbnRfdCB3b3JkKQoreworICAgIGludCBuOworCisgICAgbiA9IG1wZF93b3JkX2RpZ2l0cyh3b3JkKTsKKyAgICBpZiAod29yZCA9PSBtcGRfcG93MTBbbi0xXSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29lZmZpY2llbnQgaXMgYSBwb3dlciBvZiAxMCAqLworc3RhdGljIGludAorbXBkX2NvZWZmX2lzcG93MTAoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBpZiAobXBkX3dvcmRfaXNwb3cxMChtcGRfbXN3b3JkKGRlYykpKSB7CisgICAgICAgIGlmIChfbXBkX2lzYWxsemVybyhkZWMtPmRhdGEsIGRlYy0+bGVuLTEpKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBBbGwgZGlnaXRzIG9mIGEgd29yZCBhcmUgbmluZXMgKi8KK3N0YXRpYyBpbnQKK21wZF93b3JkX2lzYWxsbmluZShtcGRfdWludF90IHdvcmQpCit7CisgICAgaW50IG47CisKKyAgICBuID0gbXBkX3dvcmRfZGlnaXRzKHdvcmQpOworICAgIGlmICh3b3JkID09IG1wZF9wb3cxMFtuXS0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBBbGwgZGlnaXRzIG9mIHRoZSBjb2VmZmljaWVudCBhcmUgbmluZXMgKi8KK3N0YXRpYyBpbnQKK21wZF9jb2VmZl9pc2FsbG5pbmUoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBpZiAobXBkX3dvcmRfaXNhbGxuaW5lKG1wZF9tc3dvcmQoZGVjKSkpIHsKKyAgICAgICAgaWYgKF9tcGRfaXNhbGxuaW5lKGRlYy0+ZGF0YSwgZGVjLT5sZW4tMSkpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIE9kZCBkZWNpbWFsOiBVbmRlZmluZWQgZm9yIG5vbi1pbnRlZ2VycyEgKi8KK2ludAorbXBkX2lzb2RkKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgbXBkX3VpbnRfdCBxLCByOworICAgIGFzc2VydChtcGRfaXNpbnRlZ2VyKGRlYykpOworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoZGVjKSkgcmV0dXJuIDA7CisgICAgaWYgKGRlYy0+ZXhwIDwgMCkgeworICAgICAgICBfbXBkX2Rpdl93b3JkKCZxLCAmciwgLWRlYy0+ZXhwLCBNUERfUkRJR0lUUyk7CisgICAgICAgIHEgPSBkZWMtPmRhdGFbcV0gLyBtcGRfcG93MTBbcl07CisgICAgICAgIHJldHVybiBtcGRfaXNvZGR3b3JkKHEpOworICAgIH0KKyAgICByZXR1cm4gZGVjLT5leHAgPT0gMCAmJiBtcGRfaXNvZGR3b3JkKGRlYy0+ZGF0YVswXSk7Cit9CisKKy8qIEV2ZW46IFVuZGVmaW5lZCBmb3Igbm9uLWludGVnZXJzISAqLworaW50CittcGRfaXNldmVuKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuICFtcGRfaXNvZGQoZGVjKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgIEdldHRpbmcgYW5kIHNldHRpbmcgZGVjaW1hbHMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBJbnRlcm5hbCBmdW5jdGlvbjogU2V0IGEgc3RhdGljIGRlY2ltYWwgZnJvbSBhIHRyaXBsZSwgbm8gZXJyb3IgY2hlY2tpbmcuICovCitzdGF0aWMgdm9pZAorX3NzZXR0cmlwbGUobXBkX3QgKnJlc3VsdCwgdWludDhfdCBzaWduLCBtcGRfdWludF90IGEsIG1wZF9zc2l6ZV90IGV4cCkKK3sKKyAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgc2lnbik7CisgICAgcmVzdWx0LT5leHAgPSBleHA7CisgICAgX21wZF9kaXZfd29yZCgmcmVzdWx0LT5kYXRhWzFdLCAmcmVzdWx0LT5kYXRhWzBdLCBhLCBNUERfUkFESVgpOworICAgIHJlc3VsdC0+bGVuID0gKHJlc3VsdC0+ZGF0YVsxXSA9PSAwKSA/IDEgOiAyOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKK30KKworLyogSW50ZXJuYWwgZnVuY3Rpb246IFNldCBhIGRlY2ltYWwgZnJvbSBhIHRyaXBsZSwgbm8gZXJyb3IgY2hlY2tpbmcuICovCitzdGF0aWMgdm9pZAorX3NldHRyaXBsZShtcGRfdCAqcmVzdWx0LCB1aW50OF90IHNpZ24sIG1wZF91aW50X3QgYSwgbXBkX3NzaXplX3QgZXhwKQoreworICAgIG1wZF9taW5hbGxvYyhyZXN1bHQpOworICAgIG1wZF9zZXRfZmxhZ3MocmVzdWx0LCBzaWduKTsKKyAgICByZXN1bHQtPmV4cCA9IGV4cDsKKyAgICBfbXBkX2Rpdl93b3JkKCZyZXN1bHQtPmRhdGFbMV0sICZyZXN1bHQtPmRhdGFbMF0sIGEsIE1QRF9SQURJWCk7CisgICAgcmVzdWx0LT5sZW4gPSAocmVzdWx0LT5kYXRhWzFdID09IDApID8gMSA6IDI7CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworfQorCisvKiBTZXQgYSBzcGVjaWFsIG51bWJlciBmcm9tIGEgdHJpcGxlICovCit2b2lkCittcGRfc2V0c3BlY2lhbChtcGRfdCAqcmVzdWx0LCB1aW50OF90IHNpZ24sIHVpbnQ4X3QgdHlwZSkKK3sKKyAgICBtcGRfbWluYWxsb2MocmVzdWx0KTsKKyAgICByZXN1bHQtPmZsYWdzICY9IH4oTVBEX05FR3xNUERfU1BFQ0lBTCk7CisgICAgcmVzdWx0LT5mbGFncyB8PSAoc2lnbnx0eXBlKTsKKyAgICByZXN1bHQtPmV4cCA9IHJlc3VsdC0+ZGlnaXRzID0gcmVzdWx0LT5sZW4gPSAwOworfQorCisvKiBTZXQgcmVzdWx0IG9mIE5hTiB3aXRoIGFuIGVycm9yIHN0YXR1cyAqLwordm9pZAorbXBkX3NldGVycm9yKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9taW5hbGxvYyhyZXN1bHQpOworICAgIG1wZF9zZXRfcW5hbihyZXN1bHQpOworICAgIG1wZF9zZXRfcG9zaXRpdmUocmVzdWx0KTsKKyAgICByZXN1bHQtPmV4cCA9IHJlc3VsdC0+ZGlnaXRzID0gcmVzdWx0LT5sZW4gPSAwOworICAgICpzdGF0dXMgfD0gZmxhZ3M7Cit9CisKKy8qIHF1aWV0bHkgc2V0IGEgc3RhdGljIGRlY2ltYWwgZnJvbSBhbiBtcGRfc3NpemVfdCAqLwordm9pZAorbXBkX3Fzc2V0X3NzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgdTsKKyAgICB1aW50OF90IHNpZ24gPSBNUERfUE9TOworCisgICAgaWYgKGEgPCAwKSB7CisgICAgICAgIGlmIChhID09IE1QRF9TU0laRV9NSU4pIHsKKyAgICAgICAgICAgIHUgPSAobXBkX3VpbnRfdClNUERfU1NJWkVfTUFYICsKKyAgICAgICAgICAgICAgICAoLShNUERfU1NJWkVfTUlOK01QRF9TU0laRV9NQVgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHUgPSAtYTsKKyAgICAgICAgfQorICAgICAgICBzaWduID0gTVBEX05FRzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHUgPSBhOworICAgIH0KKyAgICBfc3NldHRyaXBsZShyZXN1bHQsIHNpZ24sIHUsIDApOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgc2V0IGEgc3RhdGljIGRlY2ltYWwgZnJvbSBhbiBtcGRfdWludF90ICovCit2b2lkCittcGRfcXNzZXRfdWludChtcGRfdCAqcmVzdWx0LCBtcGRfdWludF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgX3NzZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCBhLCAwKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IHNldCBhIHN0YXRpYyBkZWNpbWFsIGZyb20gYW4gaW50MzJfdCAqLwordm9pZAorbXBkX3Fzc2V0X2kzMihtcGRfdCAqcmVzdWx0LCBpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXNzZXRfc3NpemUocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgc2V0IGEgc3RhdGljIGRlY2ltYWwgZnJvbSBhIHVpbnQzMl90ICovCit2b2lkCittcGRfcXNzZXRfdTMyKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXNzZXRfdWludChyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKworI2lmZGVmIENPTkZJR182NAorLyogcXVpZXRseSBzZXQgYSBzdGF0aWMgZGVjaW1hbCBmcm9tIGFuIGludDY0X3QgKi8KK3ZvaWQKK21wZF9xc3NldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3Fzc2V0X3NzaXplKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IHNldCBhIHN0YXRpYyBkZWNpbWFsIGZyb20gYSB1aW50NjRfdCAqLwordm9pZAorbXBkX3Fzc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3Fzc2V0X3VpbnQocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisjZW5kaWYKKworLyogcXVpZXRseSBzZXQgYSBkZWNpbWFsIGZyb20gYW4gbXBkX3NzaXplX3QgKi8KK3ZvaWQKK21wZF9xc2V0X3NzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX21pbmFsbG9jKHJlc3VsdCk7CisgICAgbXBkX3Fzc2V0X3NzaXplKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IHNldCBhIGRlY2ltYWwgZnJvbSBhbiBtcGRfdWludF90ICovCit2b2lkCittcGRfcXNldF91aW50KG1wZF90ICpyZXN1bHQsIG1wZF91aW50X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIF9zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCBhLCAwKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IHNldCBhIGRlY2ltYWwgZnJvbSBhbiBpbnQzMl90ICovCit2b2lkCittcGRfcXNldF9pMzIobXBkX3QgKnJlc3VsdCwgaW50MzJfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXNldF9zc2l6ZShyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKworLyogcXVpZXRseSBzZXQgYSBkZWNpbWFsIGZyb20gYSB1aW50MzJfdCAqLwordm9pZAorbXBkX3FzZXRfdTMyKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xc2V0X3VpbnQocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKKyNpZiBkZWZpbmVkKENPTkZJR18zMikgJiYgIWRlZmluZWQoTEVHQUNZX0NPTVBJTEVSKQorLyogc2V0IGEgZGVjaW1hbCBmcm9tIGEgdWludDY0X3QgKi8KK3N0YXRpYyB2b2lkCitfYzMyc2V0dTY0KG1wZF90ICpyZXN1bHQsIHVpbnQ2NF90IHUsIHVpbnQ4X3Qgc2lnbiwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IHdbM107CisgICAgdWludDY0X3QgcTsKKyAgICBpbnQgaSwgbGVuOworCisgICAgbGVuID0gMDsKKyAgICBkbyB7CisgICAgICAgIHEgPSB1IC8gTVBEX1JBRElYOworICAgICAgICB3W2xlbl0gPSAobXBkX3VpbnRfdCkodSAtIHEgKiBNUERfUkFESVgpOworICAgICAgICB1ID0gcTsgbGVuKys7CisgICAgfSB3aGlsZSAodSAhPSAwKTsKKworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBsZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgcmVzdWx0LT5kYXRhW2ldID0gd1tpXTsKKyAgICB9CisKKyAgICBtcGRfc2V0X3NpZ24ocmVzdWx0LCBzaWduKTsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5sZW4gPSBsZW47CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworfQorCitzdGF0aWMgdm9pZAorX2MzMl9xc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgX2MzMnNldHU2NChyZXN1bHQsIGEsIE1QRF9QT1MsIHN0YXR1cyk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogc2V0IGEgZGVjaW1hbCBmcm9tIGFuIGludDY0X3QgKi8KK3N0YXRpYyB2b2lkCitfYzMyX3FzZXRfaTY0KG1wZF90ICpyZXN1bHQsIGludDY0X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQ2NF90IHU7CisgICAgdWludDhfdCBzaWduID0gTVBEX1BPUzsKKworICAgIGlmIChhIDwgMCkgeworICAgICAgICBpZiAoYSA9PSBJTlQ2NF9NSU4pIHsKKyAgICAgICAgICAgIHUgPSAodWludDY0X3QpSU5UNjRfTUFYICsgKC0oSU5UNjRfTUlOK0lOVDY0X01BWCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdSA9IC1hOworICAgICAgICB9CisgICAgICAgIHNpZ24gPSBNUERfTkVHOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdSA9IGE7CisgICAgfQorICAgIF9jMzJzZXR1NjQocmVzdWx0LCB1LCBzaWduLCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisjZW5kaWYgLyogQ09ORklHXzMyICYmICFMRUdBQ1lfQ09NUElMRVIgKi8KKworI2lmbmRlZiBMRUdBQ1lfQ09NUElMRVIKKy8qIHF1aWV0bHkgc2V0IGEgZGVjaW1hbCBmcm9tIGFuIGludDY0X3QgKi8KK3ZvaWQKK21wZF9xc2V0X2k2NChtcGRfdCAqcmVzdWx0LCBpbnQ2NF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworI2lmZGVmIENPTkZJR182NAorICAgIG1wZF9xc2V0X3NzaXplKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworI2Vsc2UKKyAgICBfYzMyX3FzZXRfaTY0KHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworI2VuZGlmCit9CisKKy8qIHF1aWV0bHkgc2V0IGEgZGVjaW1hbCBmcm9tIGEgdWludDY0X3QgKi8KK3ZvaWQKK21wZF9xc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBtcGRfcXNldF91aW50KHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworI2Vsc2UKKyAgICBfYzMyX3FzZXRfdTY0KHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworI2VuZGlmCit9CisjZW5kaWYgLyogIUxFR0FDWV9DT01QSUxFUiAqLworCisKKy8qCisgKiBRdWlldGx5IGdldCBhbiBtcGRfdWludF90IGZyb20gYSBkZWNpbWFsLiBBc3N1bWVzCisgKiBNUERfVUlOVF9ESUdJVFMgPT0gTVBEX1JESUdJVFMrMSwgd2hpY2ggaXMgdHJ1ZSBmb3IKKyAqIDMyIGFuZCA2NCBiaXQgbWFjaGluZXMuCisgKgorICogSWYgdGhlIG9wZXJhdGlvbiBpcyBpbXBvc3NpYmxlLCBNUERfSW52YWxpZF9vcGVyYXRpb24gaXMgc2V0LgorICovCitzdGF0aWMgbXBkX3VpbnRfdAorX21wZF9xZ2V0X3VpbnQoaW50IHVzZV9zaWduLCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdCB0bXA7CisgICAgbXBkX3VpbnRfdCB0bXBfZGF0YVsyXTsKKyAgICBtcGRfdWludF90IGxvLCBoaTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gTVBEX1VJTlRfTUFYOworICAgIH0KKyAgICBpZiAobXBkX2lzemVybyhhKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKHVzZV9zaWduICYmIG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gTVBEX1VJTlRfTUFYOworICAgIH0KKworICAgIGlmIChhLT5kaWdpdHMrYS0+ZXhwID4gTVBEX1JESUdJVFMrMSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIE1QRF9VSU5UX01BWDsKKyAgICB9CisKKyAgICBpZiAoYS0+ZXhwIDwgMCkgeworICAgICAgICBpZiAoIV9tcGRfaXNpbnQoYSkpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIE1QRF9VSU5UX01BWDsKKyAgICAgICAgfQorICAgICAgICAvKiBBdCB0aGlzIHBvaW50IGEtPmRpZ2l0cythLT5leHAgPD0gTVBEX1JESUdJVFMrMSwKKyAgICAgICAgICogc28gdGhlIHNoaWZ0IGZpdHMuICovCisgICAgICAgIHRtcC5kYXRhID0gdG1wX2RhdGE7CisgICAgICAgIHRtcC5mbGFncyA9IE1QRF9TVEFUSUN8TVBEX1NUQVRJQ19EQVRBOworICAgICAgICB0bXAuYWxsb2MgPSAyOworICAgICAgICBtcGRfcXNzaGlmdHIoJnRtcCwgYSwgLWEtPmV4cCk7CisgICAgICAgIHRtcC5leHAgPSAwOworICAgICAgICBhID0gJnRtcDsKKyAgICB9CisKKyAgICBfbXBkX2dldF9tc2RpZ2l0cygmaGksICZsbywgYSwgTVBEX1JESUdJVFMrMSk7CisgICAgaWYgKGhpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gTVBEX1VJTlRfTUFYOworICAgIH0KKworICAgIGlmIChhLT5leHAgPiAwKSB7CisgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCBsbywgbXBkX3BvdzEwW2EtPmV4cF0pOworICAgICAgICBpZiAoaGkpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIE1QRF9VSU5UX01BWDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBsbzsKK30KKworLyoKKyAqIFNldHMgSW52YWxpZF9vcGVyYXRpb24gZm9yOgorICogICAtIHNwZWNpYWxzCisgKiAgIC0gbmVnYXRpdmUgbnVtYmVycyAoZXhjZXB0IG5lZ2F0aXZlIHplcm8pCisgKiAgIC0gbm9uLWludGVnZXJzCisgKiAgIC0gb3ZlcmZsb3cKKyAqLworbXBkX3VpbnRfdAorbXBkX3FnZXRfdWludChjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICByZXR1cm4gX21wZF9xZ2V0X3VpbnQoMSwgYSwgc3RhdHVzKTsKK30KKworLyogU2FtZSBhcyBhYm92ZSwgYnV0IGdldHMgdGhlIGFic29sdXRlIHZhbHVlLCBpLmUuIHRoZSBzaWduIGlzIGlnbm9yZWQuICovCittcGRfdWludF90CittcGRfcWFic191aW50KGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHJldHVybiBfbXBkX3FnZXRfdWludCgwLCBhLCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IGdldCBhbiBtcGRfc3NpemVfdCBmcm9tIGEgZGVjaW1hbCAqLworbXBkX3NzaXplX3QKK21wZF9xZ2V0X3NzaXplKGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgdTsKKyAgICBpbnQgaXNuZWc7CisKKyAgICB1ID0gbXBkX3FhYnNfdWludChhLCBzdGF0dXMpOworICAgIGlmICgqc3RhdHVzJk1QRF9JbnZhbGlkX29wZXJhdGlvbikgeworICAgICAgICByZXR1cm4gTVBEX1NTSVpFX01BWDsKKyAgICB9CisKKyAgICBpc25lZyA9IG1wZF9pc25lZ2F0aXZlKGEpOworICAgIGlmICh1IDw9IE1QRF9TU0laRV9NQVgpIHsKKyAgICAgICAgcmV0dXJuIGlzbmVnID8gLSgobXBkX3NzaXplX3QpdSkgOiAobXBkX3NzaXplX3QpdTsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNuZWcgJiYgdSsoTVBEX1NTSVpFX01JTitNUERfU1NJWkVfTUFYKSA9PSBNUERfU1NJWkVfTUFYKSB7CisgICAgICAgIHJldHVybiBNUERfU1NJWkVfTUlOOworICAgIH0KKworICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgIHJldHVybiBNUERfU1NJWkVfTUFYOworfQorCisjaWZkZWYgQ09ORklHXzY0CisvKiBxdWlldGx5IGdldCBhIHVpbnQ2NF90IGZyb20gYSBkZWNpbWFsICovCit1aW50NjRfdAorbXBkX3FnZXRfdTY0KGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHJldHVybiBtcGRfcWdldF91aW50KGEsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgZ2V0IGFuIGludDY0X3QgZnJvbSBhIGRlY2ltYWwgKi8KK2ludDY0X3QKK21wZF9xZ2V0X2k2NChjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICByZXR1cm4gbXBkX3FnZXRfc3NpemUoYSwgc3RhdHVzKTsKK30KKyNlbHNlCisvKiBxdWlldGx5IGdldCBhIHVpbnQzMl90IGZyb20gYSBkZWNpbWFsICovCit1aW50MzJfdAorbXBkX3FnZXRfdTMyKGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHJldHVybiBtcGRfcWdldF91aW50KGEsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgZ2V0IGFuIGludDMyX3QgZnJvbSBhIGRlY2ltYWwgKi8KK2ludDMyX3QKK21wZF9xZ2V0X2kzMihjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICByZXR1cm4gbXBkX3FnZXRfc3NpemUoYSwgc3RhdHVzKTsKK30KKyNlbmRpZgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgIEZpbHRlcmluZyBpbnB1dCBvZiBmdW5jdGlvbnMsIGZpbmFsaXppbmcgb3V0cHV0IG9mIGZ1bmN0aW9ucyAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIENoZWNrIGlmIHRoZSBvcGVyYW5kIGlzIE5hTiwgY29weSB0byByZXN1bHQgYW5kIHJldHVybiAxIGlmIHRoaXMgaXMKKyAqIHRoZSBjYXNlLiBDb3B5aW5nIGNhbiBmYWlsIHNpbmNlIE5hTnMgYXJlIGFsbG93ZWQgdG8gaGF2ZSBhIHBheWxvYWQgdGhhdAorICogZG9lcyBub3QgZml0IGluIE1QRF9NSU5BTExPQy4KKyAqLworaW50CittcGRfcWNoZWNrX25hbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzbmFuKGEpKSB7CisgICAgICAgICpzdGF0dXMgfD0gbXBkX2lzc25hbihhKSA/IE1QRF9JbnZhbGlkX29wZXJhdGlvbiA6IDA7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIG1wZF9zZXRfcW5hbihyZXN1bHQpOworICAgICAgICBfbXBkX2ZpeF9uYW4ocmVzdWx0LCBjdHgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDaGVjayBpZiBlaXRoZXIgb3BlcmFuZCBpcyBOYU4sIGNvcHkgdG8gcmVzdWx0IGFuZCByZXR1cm4gMSBpZiB0aGlzCisgKiBpcyB0aGUgY2FzZS4gQ29weWluZyBjYW4gZmFpbCBzaW5jZSBOYU5zIGFyZSBhbGxvd2VkIHRvIGhhdmUgYSBwYXlsb2FkCisgKiB0aGF0IGRvZXMgbm90IGZpdCBpbiBNUERfTUlOQUxMT0MuCisgKi8KK2ludAorbXBkX3FjaGVja19uYW5zKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKChhLT5mbGFnc3xiLT5mbGFncykmKE1QRF9OQU58TVBEX1NOQU4pKSB7CisgICAgICAgIGNvbnN0IG1wZF90ICpjaG9pY2UgPSBiOworICAgICAgICBpZiAobXBkX2lzc25hbihhKSkgeworICAgICAgICAgICAgY2hvaWNlID0gYTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3NuYW4oYikpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3FuYW4oYSkpIHsKKyAgICAgICAgICAgIGNob2ljZSA9IGE7CisgICAgICAgIH0KKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgY2hvaWNlLCBzdGF0dXMpOworICAgICAgICBtcGRfc2V0X3FuYW4ocmVzdWx0KTsKKyAgICAgICAgX21wZF9maXhfbmFuKHJlc3VsdCwgY3R4KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKgorICogQ2hlY2sgaWYgb25lIG9mIHRoZSBvcGVyYW5kcyBpcyBOYU4sIGNvcHkgdG8gcmVzdWx0IGFuZCByZXR1cm4gMSBpZiB0aGlzCisgKiBpcyB0aGUgY2FzZS4gQ29weWluZyBjYW4gZmFpbCBzaW5jZSBOYU5zIGFyZSBhbGxvd2VkIHRvIGhhdmUgYSBwYXlsb2FkCisgKiB0aGF0IGRvZXMgbm90IGZpdCBpbiBNUERfTUlOQUxMT0MuCisgKi8KK3N0YXRpYyBpbnQKK21wZF9xY2hlY2tfM25hbnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfdCAqYywKKyAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmICgoYS0+ZmxhZ3N8Yi0+ZmxhZ3N8Yy0+ZmxhZ3MpJihNUERfTkFOfE1QRF9TTkFOKSkgeworICAgICAgICBjb25zdCBtcGRfdCAqY2hvaWNlID0gYzsKKyAgICAgICAgaWYgKG1wZF9pc3NuYW4oYSkpIHsKKyAgICAgICAgICAgIGNob2ljZSA9IGE7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcGRfaXNzbmFuKGIpKSB7CisgICAgICAgICAgICBjaG9pY2UgPSBiOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzc25hbihjKSkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzcW5hbihhKSkgeworICAgICAgICAgICAgY2hvaWNlID0gYTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcGRfaXNxbmFuKGIpKSB7CisgICAgICAgICAgICBjaG9pY2UgPSBiOworICAgICAgICB9CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGNob2ljZSwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3NldF9xbmFuKHJlc3VsdCk7CisgICAgICAgIF9tcGRfZml4X25hbihyZXN1bHQsIGN0eCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyogQ2hlY2sgaWYgcm91bmRpbmcgZGlnaXQgJ3JuZCcgbGVhZHMgdG8gYW4gaW5jcmVtZW50LiAqLworc3RhdGljIGlubGluZSBpbnQKK19tcGRfcm5kX2luY3IoY29uc3QgbXBkX3QgKmRlYywgbXBkX3VpbnRfdCBybmQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBpbnQgbGQ7CisKKyAgICBzd2l0Y2ggKGN0eC0+cm91bmQpIHsKKyAgICBjYXNlIE1QRF9ST1VORF9ET1dOOiBjYXNlIE1QRF9ST1VORF9UUlVOQzoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBNUERfUk9VTkRfSEFMRl9VUDoKKyAgICAgICAgcmV0dXJuIChybmQgPj0gNSk7CisgICAgY2FzZSBNUERfUk9VTkRfSEFMRl9FVkVOOgorICAgICAgICByZXR1cm4gKHJuZCA+IDUpIHx8ICgocm5kID09IDUpICYmIG1wZF9pc29kZGNvZWZmKGRlYykpOworICAgIGNhc2UgTVBEX1JPVU5EX0NFSUxJTkc6CisgICAgICAgIHJldHVybiAhKHJuZCA9PSAwIHx8IG1wZF9pc25lZ2F0aXZlKGRlYykpOworICAgIGNhc2UgTVBEX1JPVU5EX0ZMT09SOgorICAgICAgICByZXR1cm4gIShybmQgPT0gMCB8fCBtcGRfaXNwb3NpdGl2ZShkZWMpKTsKKyAgICBjYXNlIE1QRF9ST1VORF9IQUxGX0RPV046CisgICAgICAgIHJldHVybiAocm5kID4gNSk7CisgICAgY2FzZSBNUERfUk9VTkRfVVA6CisgICAgICAgIHJldHVybiAhKHJuZCA9PSAwKTsKKyAgICBjYXNlIE1QRF9ST1VORF8wNVVQOgorICAgICAgICBsZCA9IChpbnQpbXBkX2xzZChkZWMtPmRhdGFbMF0pOworICAgICAgICByZXR1cm4gKCEocm5kID09IDApICYmIChsZCA9PSAwIHx8IGxkID09IDUpKTsKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiBXaXRob3V0IGEgdmFsaWQgY29udGV4dCwgZnVydGhlciByZXN1bHRzIHdpbGwgYmUgdW5kZWZpbmVkLiAqLworICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KK30KKworLyoKKyAqIEFwcGx5IHJvdW5kaW5nIHRvIGEgZGVjaW1hbCB0aGF0IGhhcyBiZWVuIHJpZ2h0LXNoaWZ0ZWQgaW50byBhIGZ1bGwKKyAqIHByZWNpc2lvbiBkZWNpbWFsLiBJZiBhbiBpbmNyZW1lbnQgbGVhZHMgdG8gYW4gb3ZlcmZsb3cgb2YgdGhlIHByZWNpc2lvbiwKKyAqIGFkanVzdCB0aGUgY29lZmZpY2llbnQgYW5kIHRoZSBleHBvbmVudCBhbmQgY2hlY2sgdGhlIG5ldyBleHBvbmVudCBmb3IKKyAqIG92ZXJmbG93LgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfYXBwbHlfcm91bmQobXBkX3QgKmRlYywgbXBkX3VpbnRfdCBybmQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoX21wZF9ybmRfaW5jcihkZWMsIHJuZCwgY3R4KSkgeworICAgICAgICAvKiBXZSBoYXZlIGEgbnVtYmVyIHdpdGggZXhhY3RseSBjdHgtPnByZWMgZGlnaXRzLiBUaGUgaW5jcmVtZW50CisgICAgICAgICAqIGNhbiBvbmx5IGxlYWQgdG8gYW4gb3ZlcmZsb3cgaWYgdGhlIGRlY2ltYWwgaXMgYWxsIG5pbmVzLiBJbgorICAgICAgICAgKiB0aGF0IGNhc2UsIHRoZSByZXN1bHQgaXMgYSBwb3dlciBvZiB0ZW4gd2l0aCBwcmVjKzEgZGlnaXRzLgorICAgICAgICAgKgorICAgICAgICAgKiBJZiB0aGUgcHJlY2lzaW9uIGlzIGEgbXVsdGlwbGUgb2YgTVBEX1JESUdJVFMsIHRoaXMgc2l0dWF0aW9uIGlzCisgICAgICAgICAqIGRldGVjdGVkIGJ5IF9tcGRfYmFzZWluY3IgcmV0dXJuaW5nIGEgY2FycnkuCisgICAgICAgICAqIElmIHRoZSBwcmVjaXNpb24gaXMgbm90IGEgbXVsdGlwbGUgb2YgTVBEX1JESUdJVFMsIHdlIGhhdmUgdG8KKyAgICAgICAgICogY2hlY2sgaWYgdGhlIHJlc3VsdCBoYXMgb25lIGRpZ2l0IHRvbyBtYW55LgorICAgICAgICAgKi8KKyAgICAgICAgbXBkX3VpbnRfdCBjYXJyeSA9IF9tcGRfYmFzZWluY3IoZGVjLT5kYXRhLCBkZWMtPmxlbik7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgZGVjLT5kYXRhW2RlYy0+bGVuLTFdID0gbXBkX3BvdzEwW01QRF9SRElHSVRTLTFdOworICAgICAgICAgICAgZGVjLT5leHAgKz0gMTsKKyAgICAgICAgICAgIF9tcGRfY2hlY2tfZXhwKGRlYywgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRkaWdpdHMoZGVjKTsKKyAgICAgICAgaWYgKGRlYy0+ZGlnaXRzID4gY3R4LT5wcmVjKSB7CisgICAgICAgICAgICBtcGRfcXNoaWZ0cl9pbnBsYWNlKGRlYywgMSk7CisgICAgICAgICAgICBkZWMtPmV4cCArPSAxOworICAgICAgICAgICAgZGVjLT5kaWdpdHMgPSBjdHgtPnByZWM7CisgICAgICAgICAgICBfbXBkX2NoZWNrX2V4cChkZWMsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLyoKKyAqIEFwcGx5IHJvdW5kaW5nIHRvIGEgZGVjaW1hbC4gQWxsb3cgb3ZlcmZsb3cgb2YgdGhlIHByZWNpc2lvbi4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2FwcGx5X3JvdW5kX2V4Y2VzcyhtcGRfdCAqZGVjLCBtcGRfdWludF90IHJuZCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoX21wZF9ybmRfaW5jcihkZWMsIHJuZCwgY3R4KSkgeworICAgICAgICBtcGRfdWludF90IGNhcnJ5ID0gX21wZF9iYXNlaW5jcihkZWMtPmRhdGEsIGRlYy0+bGVuKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKGRlYywgZGVjLT5sZW4rMSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlYy0+ZGF0YVtkZWMtPmxlbl0gPSAxOworICAgICAgICAgICAgZGVjLT5sZW4gKz0gMTsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0ZGlnaXRzKGRlYyk7CisgICAgfQorfQorCisvKgorICogQXBwbHkgcm91bmRpbmcgdG8gYSBkZWNpbWFsIHRoYXQgaGFzIGJlZW4gcmlnaHQtc2hpZnRlZCBpbnRvIGEgZGVjaW1hbAorICogd2l0aCBmdWxsIHByZWNpc2lvbiBvciBsZXNzLiBSZXR1cm4gZmFpbHVyZSBpZiBhbiBpbmNyZW1lbnQgd291bGQKKyAqIG92ZXJmbG93IHRoZSBwcmVjaXNpb24uCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitfbXBkX2FwcGx5X3JvdW5kX2ZpdChtcGRfdCAqZGVjLCBtcGRfdWludF90IHJuZCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoX21wZF9ybmRfaW5jcihkZWMsIHJuZCwgY3R4KSkgeworICAgICAgICBtcGRfdWludF90IGNhcnJ5ID0gX21wZF9iYXNlaW5jcihkZWMtPmRhdGEsIGRlYy0+bGVuKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKGRlYywgZGVjLT5sZW4rMSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVjLT5kYXRhW2RlYy0+bGVuXSA9IDE7CisgICAgICAgICAgICBkZWMtPmxlbiArPSAxOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRkaWdpdHMoZGVjKTsKKyAgICAgICAgaWYgKGRlYy0+ZGlnaXRzID4gY3R4LT5wcmVjKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IoZGVjLCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworLyogQ2hlY2sgYSBub3JtYWwgbnVtYmVyIGZvciBvdmVyZmxvdywgdW5kZXJmbG93LCBjbGFtcGluZy4gSWYgdGhlIG9wZXJhbmQKKyAgIGlzIG1vZGlmaWVkLCBpdCB3aWxsIGJlIHplcm8sIHNwZWNpYWwgb3IgKHN1Yilub3JtYWwgd2l0aCBhIGNvZWZmaWNpZW50CisgICB0aGF0IGZpdHMgaW50byB0aGUgY3VycmVudCBjb250ZXh0IHByZWNpc2lvbi4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9jaGVja19leHAobXBkX3QgKmRlYywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IGFkamV4cCwgZXRpbnksIHNoaWZ0OworICAgIGludCBybmQ7CisKKyAgICBhZGpleHAgPSBtcGRfYWRqZXhwKGRlYyk7CisgICAgaWYgKGFkamV4cCA+IGN0eC0+ZW1heCkgeworCisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoZGVjKSkgeworICAgICAgICAgICAgZGVjLT5leHAgPSBjdHgtPmVtYXg7CisgICAgICAgICAgICBpZiAoY3R4LT5jbGFtcCkgeworICAgICAgICAgICAgICAgIGRlYy0+ZXhwIC09IChjdHgtPnByZWMtMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtcGRfemVyb2NvZWZmKGRlYyk7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9DbGFtcGVkOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChjdHgtPnJvdW5kKSB7CisgICAgICAgIGNhc2UgTVBEX1JPVU5EX0hBTEZfVVA6IGNhc2UgTVBEX1JPVU5EX0hBTEZfRVZFTjoKKyAgICAgICAgY2FzZSBNUERfUk9VTkRfSEFMRl9ET1dOOiBjYXNlIE1QRF9ST1VORF9VUDoKKyAgICAgICAgY2FzZSBNUERfUk9VTkRfVFJVTkM6CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChkZWMsIG1wZF9zaWduKGRlYyksIE1QRF9JTkYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVBEX1JPVU5EX0RPV046IGNhc2UgTVBEX1JPVU5EXzA1VVA6CisgICAgICAgICAgICBtcGRfcW1heGNvZWZmKGRlYywgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgZGVjLT5leHAgPSBjdHgtPmVtYXggLSBjdHgtPnByZWMgKyAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVBEX1JPVU5EX0NFSUxJTkc6CisgICAgICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoZGVjKSkgeworICAgICAgICAgICAgICAgIG1wZF9xbWF4Y29lZmYoZGVjLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgZGVjLT5leHAgPSBjdHgtPmVtYXggLSBjdHgtPnByZWMgKyAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwoZGVjLCBNUERfUE9TLCBNUERfSU5GKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1QRF9ST1VORF9GTE9PUjoKKyAgICAgICAgICAgIGlmIChtcGRfaXNwb3NpdGl2ZShkZWMpKSB7CisgICAgICAgICAgICAgICAgbXBkX3FtYXhjb2VmZihkZWMsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBkZWMtPmV4cCA9IGN0eC0+ZW1heCAtIGN0eC0+cHJlYyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChkZWMsIE1QRF9ORUcsIE1QRF9JTkYpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6IC8qIGRlYnVnICovCisgICAgICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKworICAgICAgICAqc3RhdHVzIHw9IE1QRF9PdmVyZmxvd3xNUERfSW5leGFjdHxNUERfUm91bmRlZDsKKworICAgIH0gLyogZm9sZCBkb3duICovCisgICAgZWxzZSBpZiAoY3R4LT5jbGFtcCAmJiBkZWMtPmV4cCA+IG1wZF9ldG9wKGN0eCkpIHsKKyAgICAgICAgLyogQXQgdGhpcyBwb2ludCBhZGpleHA9ZXhwK2RpZ2l0cy0xIDw9IGVtYXggYW5kIGV4cCA+IGV0b3A9ZW1heC1wcmVjKzE6CisgICAgICAgICAqICAgKDEpIHNoaWZ0ID0gZXhwIC1lbWF4K3ByZWMtMSA+IDAKKyAgICAgICAgICogICAoMikgZGlnaXRzK3NoaWZ0ID0gZXhwK2RpZ2l0cy0xIC0gZW1heCArIHByZWMgPD0gcHJlYyAqLworICAgICAgICBzaGlmdCA9IGRlYy0+ZXhwIC0gbXBkX2V0b3AoY3R4KTsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bChkZWMsIGRlYywgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkZWMtPmV4cCAtPSBzaGlmdDsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfQ2xhbXBlZDsKKyAgICAgICAgaWYgKCFtcGRfaXN6ZXJvY29lZmYoZGVjKSAmJiBhZGpleHAgPCBjdHgtPmVtaW4pIHsKKyAgICAgICAgICAgIC8qIFVuZGVyZmxvdyBpcyBpbXBvc3NpYmxlLCBzaW5jZSBleHAgPCBldGlueT1lbWluLXByZWMrMQorICAgICAgICAgICAgICogYW5kIGV4cCA+IGV0b3A9ZW1heC1wcmVjKzEgd291bGQgaW1wbHkgZW1heCA8IGVtaW4uICovCisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9TdWJub3JtYWw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoYWRqZXhwIDwgY3R4LT5lbWluKSB7CisKKyAgICAgICAgZXRpbnkgPSBtcGRfZXRpbnkoY3R4KTsKKworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGRlYykpIHsKKyAgICAgICAgICAgIGlmIChkZWMtPmV4cCA8IGV0aW55KSB7CisgICAgICAgICAgICAgICAgZGVjLT5leHAgPSBldGlueTsKKyAgICAgICAgICAgICAgICBtcGRfemVyb2NvZWZmKGRlYyk7CisgICAgICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfQ2xhbXBlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgICpzdGF0dXMgfD0gTVBEX1N1Ym5vcm1hbDsKKyAgICAgICAgaWYgKGRlYy0+ZXhwIDwgZXRpbnkpIHsKKyAgICAgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgYWRqZXhwPWV4cCtkaWdpdHMtMSA8IGVtaW4gYW5kIGV4cCA8IGV0aW55PWVtaW4tcHJlYysxOgorICAgICAgICAgICAgICogICAoMSkgc2hpZnQgPSBlbWluLXByZWMrMSAtIGV4cCA+IDAKKyAgICAgICAgICAgICAqICAgKDIpIGRpZ2l0cy1zaGlmdCA9IGV4cCtkaWdpdHMtMSAtIGVtaW4gKyBwcmVjIDwgcHJlYyAqLworICAgICAgICAgICAgc2hpZnQgPSBldGlueSAtIGRlYy0+ZXhwOworICAgICAgICAgICAgcm5kID0gKGludCltcGRfcXNoaWZ0cl9pbnBsYWNlKGRlYywgc2hpZnQpOworICAgICAgICAgICAgZGVjLT5leHAgPSBldGlueTsKKyAgICAgICAgICAgIC8qIFdlIGFsd2F5cyBoYXZlIGEgc3BhcmUgZGlnaXQgaW4gY2FzZSBvZiBhbiBpbmNyZW1lbnQuICovCisgICAgICAgICAgICBfbXBkX2FwcGx5X3JvdW5kX2V4Y2VzcyhkZWMsIHJuZCwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfUm91bmRlZDsKKyAgICAgICAgICAgIGlmIChybmQpIHsKKyAgICAgICAgICAgICAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfVW5kZXJmbG93KTsKKyAgICAgICAgICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGRlYykpIHsKKyAgICAgICAgICAgICAgICAgICAgbXBkX3plcm9jb2VmZihkZWMpOworICAgICAgICAgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9DbGFtcGVkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBDYXNlIGV4cCA+PSBldGlueT1lbWluLXByZWMrMToKKyAgICAgICAgICogICAoMSkgYWRqZXhwPWV4cCtkaWdpdHMtMSA8IGVtaW4KKyAgICAgICAgICogICAoMikgZGlnaXRzIDwgZW1pbi1leHArMSA8PSBwcmVjICovCisgICAgfQorfQorCisvKiBUcmFuc2NlbmRlbnRhbCBmdW5jdGlvbnMgZG8gbm90IGFsd2F5cyBzZXQgVW5kZXJmbG93IHJlbGlhYmx5LAorICogc2luY2UgdGhleSBvbmx5IHVzZSBhcyBtdWNoIHByZWNpc2lvbiBhcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3QKKyAqIHJvdW5kaW5nLiBJZiBhIHJlc3VsdCBsaWtlIDEuMDAwMDAwMDAwMGUtMTAxIGlzIGZpbmFsaXplZCwgdGhlcmUKKyAqIGlzIG5vIHJvdW5kaW5nIGRpZ2l0IHRoYXQgd291bGQgdHJpZ2dlciBVbmRlcmZsb3cuIEJ1dCB3ZSBjYW4KKyAqIGFzc3VtZSBJbmV4YWN0LCBzbyBhIHNob3J0IGNoZWNrIHN1ZmZpY2VzLiAqLworc3RhdGljIGlubGluZSB2b2lkCittcGRfY2hlY2tfdW5kZXJmbG93KG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2FkamV4cChkZWMpIDwgY3R4LT5lbWluICYmICFtcGRfaXN6ZXJvKGRlYykgJiYKKyAgICAgICAgZGVjLT5leHAgPCBtcGRfZXRpbnkoY3R4KSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9VbmRlcmZsb3c7CisgICAgfQorfQorCisvKiBDaGVjayBpZiBhIG5vcm1hbCBudW1iZXIgbXVzdCBiZSByb3VuZGVkIGFmdGVyIHRoZSBleHBvbmVudCBoYXMgYmVlbiBjaGVja2VkLiAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2NoZWNrX3JvdW5kKG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IHJuZDsKKyAgICBtcGRfc3NpemVfdCBzaGlmdDsKKworICAgIC8qIG11c3QgaGFuZGxlIHNwZWNpYWxzOiBfbXBkX2NoZWNrX2V4cCgpIGNhbiBwcm9kdWNlIGluZmluaXRpZXMgb3IgTmFOcyAqLworICAgIGlmIChtcGRfaXNzcGVjaWFsKGRlYykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWMtPmRpZ2l0cyA+IGN0eC0+cHJlYykgeworICAgICAgICBzaGlmdCA9IGRlYy0+ZGlnaXRzIC0gY3R4LT5wcmVjOworICAgICAgICBybmQgPSBtcGRfcXNoaWZ0cl9pbnBsYWNlKGRlYywgc2hpZnQpOworICAgICAgICBkZWMtPmV4cCArPSBzaGlmdDsKKyAgICAgICAgX21wZF9hcHBseV9yb3VuZChkZWMsIHJuZCwgY3R4LCBzdGF0dXMpOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9Sb3VuZGVkOworICAgICAgICBpZiAocm5kKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbmV4YWN0OworICAgICAgICB9CisgICAgfQorfQorCisvKiBGaW5hbGl6ZSBhbGwgb3BlcmF0aW9ucy4gKi8KK3ZvaWQKK21wZF9xZmluYWxpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkpIHsKKyAgICAgICAgaWYgKG1wZF9pc25hbihyZXN1bHQpKSB7CisgICAgICAgICAgICBfbXBkX2ZpeF9uYW4ocmVzdWx0LCBjdHgpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX2NoZWNrX2V4cChyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICBfbXBkX2NoZWNrX3JvdW5kKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogSW50ZXJuYWwgZnVuY3Rpb246IENvcHkgYSBkZWNpbWFsLCBzaGFyZSBkYXRhIHdpdGggc3JjOiBVU0UgV0lUSCBDQVJFISAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2NvcHlfc2hhcmVkKG1wZF90ICpkZXN0LCBjb25zdCBtcGRfdCAqc3JjKQoreworICAgIGRlc3QtPmZsYWdzID0gc3JjLT5mbGFnczsKKyAgICBkZXN0LT5leHAgPSBzcmMtPmV4cDsKKyAgICBkZXN0LT5kaWdpdHMgPSBzcmMtPmRpZ2l0czsKKyAgICBkZXN0LT5sZW4gPSBzcmMtPmxlbjsKKyAgICBkZXN0LT5hbGxvYyA9IHNyYy0+YWxsb2M7CisgICAgZGVzdC0+ZGF0YSA9IHNyYy0+ZGF0YTsKKworICAgIG1wZF9zZXRfc2hhcmVkX2RhdGEoZGVzdCk7Cit9CisKKy8qCisgKiBDb3B5IGEgZGVjaW1hbC4gSW4gY2FzZSBvZiBhbiBlcnJvciwgc3RhdHVzIGlzIHNldCB0byBNUERfTWFsbG9jX2Vycm9yLgorICovCitpbnQKK21wZF9xY29weShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAocmVzdWx0ID09IGEpIHJldHVybiAxOworCisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIGEtPmxlbiwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBtcGRfY29weV9mbGFncyhyZXN1bHQsIGEpOworICAgIHJlc3VsdC0+ZXhwID0gYS0+ZXhwOworICAgIHJlc3VsdC0+ZGlnaXRzID0gYS0+ZGlnaXRzOworICAgIHJlc3VsdC0+bGVuID0gYS0+bGVuOworICAgIG1lbWNweShyZXN1bHQtPmRhdGEsIGEtPmRhdGEsIGEtPmxlbiAqIChzaXplb2YgKnJlc3VsdC0+ZGF0YSkpOworCisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBDb3B5IHRvIGEgZGVjaW1hbCB3aXRoIGEgc3RhdGljIGJ1ZmZlci4gVGhlIGNhbGxlciBoYXMgdG8gbWFrZSBzdXJlIHRoYXQKKyAqIHRoZSBidWZmZXIgaXMgYmlnIGVub3VnaC4gQ2Fubm90IGZhaWwuCisgKi8KK3N0YXRpYyB2b2lkCittcGRfcWNvcHlfc3RhdGljKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphKQoreworICAgIGlmIChyZXN1bHQgPT0gYSkgcmV0dXJuOworCisgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSwgYS0+ZGF0YSwgYS0+bGVuICogKHNpemVvZiAqcmVzdWx0LT5kYXRhKSk7CisKKyAgICBtcGRfY29weV9mbGFncyhyZXN1bHQsIGEpOworICAgIHJlc3VsdC0+ZXhwID0gYS0+ZXhwOworICAgIHJlc3VsdC0+ZGlnaXRzID0gYS0+ZGlnaXRzOworICAgIHJlc3VsdC0+bGVuID0gYS0+bGVuOworfQorCisvKgorICogUmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGNvcHkgb2YgdGhlIG9wZXJhbmQuIEluIGNhc2Ugb2YgYW4gZXJyb3IsCisgKiBzdGF0dXMgaXMgc2V0IHRvIE1QRF9NYWxsb2NfZXJyb3IgYW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgTlVMTC4KKyAqLworbXBkX3QgKgorbXBkX3FuY29weShjb25zdCBtcGRfdCAqYSkKK3sKKyAgICBtcGRfdCAqcmVzdWx0OworCisgICAgaWYgKChyZXN1bHQgPSBtcGRfcW5ld19zaXplKGEtPmxlbikpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG1lbWNweShyZXN1bHQtPmRhdGEsIGEtPmRhdGEsIGEtPmxlbiAqIChzaXplb2YgKnJlc3VsdC0+ZGF0YSkpOworICAgIG1wZF9jb3B5X2ZsYWdzKHJlc3VsdCwgYSk7CisgICAgcmVzdWx0LT5leHAgPSBhLT5leHA7CisgICAgcmVzdWx0LT5kaWdpdHMgPSBhLT5kaWdpdHM7CisgICAgcmVzdWx0LT5sZW4gPSBhLT5sZW47CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQ29weSBhIGRlY2ltYWwgYW5kIHNldCB0aGUgc2lnbiB0byBwb3NpdGl2ZS4gSW4gY2FzZSBvZiBhbiBlcnJvciwgdGhlCisgKiBzdGF0dXMgaXMgc2V0IHRvIE1QRF9NYWxsb2NfZXJyb3IuCisgKi8KK2ludAorbXBkX3Fjb3B5X2FicyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG1wZF9zZXRfcG9zaXRpdmUocmVzdWx0KTsKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIENvcHkgYSBkZWNpbWFsIGFuZCBuZWdhdGUgdGhlIHNpZ24uIEluIGNhc2Ugb2YgYW4gZXJyb3IsIHRoZQorICogc3RhdHVzIGlzIHNldCB0byBNUERfTWFsbG9jX2Vycm9yLgorICovCitpbnQKK21wZF9xY29weV9uZWdhdGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBfbXBkX25lZ2F0ZShyZXN1bHQpOworICAgIHJldHVybiAxOworfQorCisvKgorICogQ29weSBhIGRlY2ltYWwsIHNldHRpbmcgdGhlIHNpZ24gb2YgdGhlIGZpcnN0IG9wZXJhbmQgdG8gdGhlIHNpZ24gb2YgdGhlCisgKiBzZWNvbmQgb3BlcmFuZC4gSW4gY2FzZSBvZiBhbiBlcnJvciwgdGhlIHN0YXR1cyBpcyBzZXQgdG8gTVBEX01hbGxvY19lcnJvci4KKyAqLworaW50CittcGRfcWNvcHlfc2lnbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDhfdCBzaWduX2IgPSBtcGRfc2lnbihiKTsgLyogcmVzdWx0IG1heSBlcXVhbCBiISAqLworCisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBtcGRfc2V0X3NpZ24ocmVzdWx0LCBzaWduX2IpOworICAgIHJldHVybiAxOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyaXNvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEZvciBhbGwgZnVuY3Rpb25zIHRoYXQgY29tcGFyZSB0d28gb3BlcmFuZHMgYW5kIHJldHVybiBhbiBpbnQgdGhlIHVzdWFsCisgKiBjb252ZW50aW9uIGFwcGxpZXMgdG8gdGhlIHJldHVybiB2YWx1ZToKKyAqCisgKiAtMSBpZiBvcDEgPCBvcDIKKyAqICAwIGlmIG9wMSA9PSBvcDIKKyAqICAxIGlmIG9wMSA+IG9wMgorICoKKyAqICBJTlRfTUFYIGZvciBlcnJvcgorICovCisKKworLyogQ29udmVuaWVuY2UgbWFjcm8uIElmIGEgYW5kIGIgYXJlIG5vdCBlcXVhbCwgcmV0dXJuIGZyb20gdGhlIGNhbGxpbmcKKyAqIGZ1bmN0aW9uIHdpdGggdGhlIGNvcnJlY3QgY29tcGFyaXNvbiB2YWx1ZS4gKi8KKyNkZWZpbmUgQ01QX0VRVUFMX09SX1JFVFVSTihhLCBiKSAgXAorICAgICAgICBpZiAoYSAhPSBiKSB7ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgaWYgKGEgPCBiKSB7ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7ICAgICAgICAgIFwKKyAgICAgICAgfQorCisvKgorICogQ29tcGFyZSB0aGUgZGF0YSBvZiBiaWcgYW5kIHNtYWxsLiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGVxdWl2YWxlbnQKKyAqIG9mIGZpcnN0IHNoaWZ0aW5nIHNtYWxsIHRvIHRoZSBsZWZ0IGFuZCB0aGVuIGNvbXBhcmluZyB0aGUgZGF0YSBvZgorICogYmlnIGFuZCBzbWFsbCwgZXhjZXB0IHRoYXQgbm8gYWxsb2NhdGlvbiBmb3IgdGhlIGxlZnQgc2hpZnQgaXMgbmVlZGVkLgorICovCitzdGF0aWMgaW50CitfbXBkX2Jhc2VjbXAobXBkX3VpbnRfdCAqYmlnLCBtcGRfdWludF90ICpzbWFsbCwgbXBkX3NpemVfdCBuLCBtcGRfc2l6ZV90IG0sCisgICAgICAgICAgICAgbXBkX3NpemVfdCBzaGlmdCkKK3sKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgLyogc3B1cmlvdXMgdW5pbml0aWFsaXplZCB3YXJuaW5ncyAqLworICAgIG1wZF91aW50X3QgbD1sLCBscHJldj1scHJldiwgaD1oOworI2Vsc2UKKyAgICBtcGRfdWludF90IGwsIGxwcmV2LCBoOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBxLCByOworICAgIG1wZF91aW50X3QgcGgsIHg7CisKKyAgICBhc3NlcnQobSA+IDAgJiYgbiA+PSBtICYmIHNoaWZ0ID4gMCk7CisKKyAgICBfbXBkX2Rpdl93b3JkKCZxLCAmciwgKG1wZF91aW50X3Qpc2hpZnQsIE1QRF9SRElHSVRTKTsKKworICAgIGlmIChyICE9IDApIHsKKworICAgICAgICBwaCA9IG1wZF9wb3cxMFtyXTsKKworICAgICAgICAtLW07IC0tbjsKKyAgICAgICAgX21wZF9kaXZtb2RfcG93MTAoJmgsICZscHJldiwgc21hbGxbbS0tXSwgTVBEX1JESUdJVFMtcik7CisgICAgICAgIGlmIChoICE9IDApIHsKKyAgICAgICAgICAgIENNUF9FUVVBTF9PUl9SRVRVUk4oYmlnW25dLCBoKQorICAgICAgICAgICAgLS1uOworICAgICAgICB9CisgICAgICAgIGZvciAoOyBtICE9IE1QRF9TSVpFX01BWDsgbS0tLG4tLSkgeworICAgICAgICAgICAgX21wZF9kaXZtb2RfcG93MTAoJmgsICZsLCBzbWFsbFttXSwgTVBEX1JESUdJVFMtcik7CisgICAgICAgICAgICB4ID0gcGggKiBscHJldiArIGg7CisgICAgICAgICAgICBDTVBfRVFVQUxfT1JfUkVUVVJOKGJpZ1tuXSwgeCkKKyAgICAgICAgICAgIGxwcmV2ID0gbDsKKyAgICAgICAgfQorICAgICAgICB4ID0gcGggKiBscHJldjsKKyAgICAgICAgQ01QX0VRVUFMX09SX1JFVFVSTihiaWdbcV0sIHgpCisgICAgfQorICAgIGVsc2UgeworICAgICAgICB3aGlsZSAoLS1tICE9IE1QRF9TSVpFX01BWCkgeworICAgICAgICAgICAgQ01QX0VRVUFMX09SX1JFVFVSTihiaWdbbStxXSwgc21hbGxbbV0pCisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gIV9tcGRfaXNhbGx6ZXJvKGJpZywgcSk7Cit9CisKKy8qIENvbXBhcmUgdHdvIGRlY2ltYWxzIHdpdGggdGhlIHNhbWUgYWRqdXN0ZWQgZXhwb25lbnQuICovCitzdGF0aWMgaW50CitfbXBkX2NtcF9zYW1lX2FkamV4cChjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgbXBkX3NzaXplX3Qgc2hpZnQsIGk7CisKKyAgICBpZiAoYS0+ZXhwICE9IGItPmV4cCkgeworICAgICAgICAvKiBDYW5ub3Qgd3JhcDogYS0+ZXhwICsgYS0+ZGlnaXRzID0gYi0+ZXhwICsgYi0+ZGlnaXRzLCBzbworICAgICAgICAgKiBhLT5leHAgLSBiLT5leHAgPSBiLT5kaWdpdHMgLSBhLT5kaWdpdHMuICovCisgICAgICAgIHNoaWZ0ID0gYS0+ZXhwIC0gYi0+ZXhwOworICAgICAgICBpZiAoc2hpZnQgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTEgKiBfbXBkX2Jhc2VjbXAoYi0+ZGF0YSwgYS0+ZGF0YSwgYi0+bGVuLCBhLT5sZW4sIHNoaWZ0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBfbXBkX2Jhc2VjbXAoYS0+ZGF0YSwgYi0+ZGF0YSwgYS0+bGVuLCBiLT5sZW4sIC1zaGlmdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIEF0IHRoaXMgcG9pbnQgYWRqZXhwKGEpID09IGFkamV4cChiKSBhbmQgYS0+ZXhwID09IGItPmV4cCwKKyAgICAgKiBzbyBhLT5kaWdpdHMgPT0gYi0+ZGlnaXRzLCB0aGVyZWZvcmUgYS0+bGVuID09IGItPmxlbi4KKyAgICAgKi8KKyAgICBmb3IgKGkgPSBhLT5sZW4tMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgQ01QX0VRVUFMX09SX1JFVFVSTihhLT5kYXRhW2ldLCBiLT5kYXRhW2ldKQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBDb21wYXJlIHR3byBudW1lcmljYWwgdmFsdWVzLiAqLworc3RhdGljIGludAorX21wZF9jbXAoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIG1wZF9zc2l6ZV90IGFkamV4cF9hLCBhZGpleHBfYjsKKworICAgIC8qIGVxdWFsIHBvaW50ZXJzICovCisgICAgaWYgKGEgPT0gYikgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBpbmZpbml0aWVzICovCisgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgcmV0dXJuIG1wZF9pc25lZ2F0aXZlKGIpIC0gbXBkX2lzbmVnYXRpdmUoYSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1wZF9hcml0aF9zaWduKGEpOworICAgIH0KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgcmV0dXJuIC1tcGRfYXJpdGhfc2lnbihiKTsKKyAgICB9CisKKyAgICAvKiB6ZXJvcyAqLworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC1tcGRfYXJpdGhfc2lnbihiKTsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICByZXR1cm4gbXBkX2FyaXRoX3NpZ24oYSk7CisgICAgfQorCisgICAgLyogZGlmZmVyZW50IHNpZ25zICovCisgICAgaWYgKG1wZF9zaWduKGEpICE9IG1wZF9zaWduKGIpKSB7CisgICAgICAgIHJldHVybiBtcGRfc2lnbihiKSAtIG1wZF9zaWduKGEpOworICAgIH0KKworICAgIC8qIGRpZmZlcmVudCBhZGp1c3RlZCBleHBvbmVudHMgKi8KKyAgICBhZGpleHBfYSA9IG1wZF9hZGpleHAoYSk7CisgICAgYWRqZXhwX2IgPSBtcGRfYWRqZXhwKGIpOworICAgIGlmIChhZGpleHBfYSAhPSBhZGpleHBfYikgeworICAgICAgICBpZiAoYWRqZXhwX2EgPCBhZGpleHBfYikgeworICAgICAgICAgICAgcmV0dXJuIC0xICogbXBkX2FyaXRoX3NpZ24oYSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1wZF9hcml0aF9zaWduKGEpOworICAgIH0KKworICAgIC8qIHNhbWUgYWRqdXN0ZWQgZXhwb25lbnRzICovCisgICAgcmV0dXJuIF9tcGRfY21wX3NhbWVfYWRqZXhwKGEsIGIpICogbXBkX2FyaXRoX3NpZ24oYSk7Cit9CisKKy8qIENvbXBhcmUgdGhlIGFic29sdXRlcyBvZiB0d28gbnVtZXJpY2FsIHZhbHVlcy4gKi8KK3N0YXRpYyBpbnQKK19tcGRfY21wX2Ficyhjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgbXBkX3NzaXplX3QgYWRqZXhwX2EsIGFkamV4cF9iOworCisgICAgLyogZXF1YWwgcG9pbnRlcnMgKi8KKyAgICBpZiAoYSA9PSBiKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIGluZmluaXRpZXMgKi8KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiB6ZXJvcyAqLworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGIpKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIGRpZmZlcmVudCBhZGp1c3RlZCBleHBvbmVudHMgKi8KKyAgICBhZGpleHBfYSA9IG1wZF9hZGpleHAoYSk7CisgICAgYWRqZXhwX2IgPSBtcGRfYWRqZXhwKGIpOworICAgIGlmIChhZGpleHBfYSAhPSBhZGpleHBfYikgeworICAgICAgICBpZiAoYWRqZXhwX2EgPCBhZGpleHBfYikgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIHNhbWUgYWRqdXN0ZWQgZXhwb25lbnRzICovCisgICAgcmV0dXJuIF9tcGRfY21wX3NhbWVfYWRqZXhwKGEsIGIpOworfQorCisvKiBDb21wYXJlIHR3byB2YWx1ZXMgYW5kIHJldHVybiBhbiBpbnRlZ2VyIHJlc3VsdC4gKi8KK2ludAorbXBkX3FjbXAoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9pc25hbihhKSB8fCBtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIElOVF9NQVg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gX21wZF9jbXAoYSwgYik7Cit9CisKKy8qCisgKiBDb21wYXJlIGEgYW5kIGIsIGNvbnZlcnQgdGhlIHRoZSB1c3VhbCBpbnRlZ2VyIHJlc3VsdCB0byBhIGRlY2ltYWwgYW5kCisgKiBzdG9yZSBpdCBpbiAncmVzdWx0Jy4gRm9yIGNvbnZlbmllbmNlLCB0aGUgaW50ZWdlciByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24KKyAqIGlzIHJldHVybmVkLiBDb21wYXJpc29ucyBpbnZvbHZpbmcgTmFOcyByZXR1cm4gTmFOL0lOVF9NQVguCisgKi8KK2ludAorbXBkX3Fjb21wYXJlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybiBJTlRfTUFYOworICAgICAgICB9CisgICAgfQorCisgICAgYyA9IF9tcGRfY21wKGEsIGIpOworICAgIF9zZXR0cmlwbGUocmVzdWx0LCAoYyA8IDApLCAoYyAhPSAwKSwgMCk7CisgICAgcmV0dXJuIGM7Cit9CisKKy8qIFNhbWUgYXMgbXBkX2NvbXBhcmUoKSwgYnV0IHNpZ25hbCBmb3IgYWxsIE5hTnMsIGkuZS4gYWxzbyBmb3IgcXVpZXQgTmFOcy4gKi8KK2ludAorbXBkX3Fjb21wYXJlX3NpZ25hbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpbnQgYzsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICByZXR1cm4gSU5UX01BWDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGMgPSBfbXBkX2NtcChhLCBiKTsKKyAgICBfc2V0dHJpcGxlKHJlc3VsdCwgKGMgPCAwKSwgKGMgIT0gMCksIDApOworICAgIHJldHVybiBjOworfQorCisvKiBDb21wYXJlIHRoZSBvcGVyYW5kcyB1c2luZyBhIHRvdGFsIG9yZGVyLiAqLworaW50CittcGRfY21wX3RvdGFsKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYikKK3sKKyAgICBtcGRfdCBhYSwgYmI7CisgICAgaW50IG5hbl9hLCBuYW5fYjsKKyAgICBpbnQgYzsKKworICAgIGlmIChtcGRfc2lnbihhKSAhPSBtcGRfc2lnbihiKSkgeworICAgICAgICByZXR1cm4gbXBkX3NpZ24oYikgLSBtcGRfc2lnbihhKTsKKyAgICB9CisKKworICAgIGlmIChtcGRfaXNuYW4oYSkpIHsKKyAgICAgICAgYyA9IDE7CisgICAgICAgIGlmIChtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgICAgIG5hbl9hID0gKG1wZF9pc3FuYW4oYSkpID8gMSA6IDA7CisgICAgICAgICAgICBuYW5fYiA9IChtcGRfaXNxbmFuKGIpKSA/IDEgOiAwOworICAgICAgICAgICAgaWYgKG5hbl9iID09IG5hbl9hKSB7CisgICAgICAgICAgICAgICAgaWYgKGEtPmxlbiA+IDAgJiYgYi0+bGVuID4gMCkgeworICAgICAgICAgICAgICAgICAgICBfbXBkX2NvcHlfc2hhcmVkKCZhYSwgYSk7CisgICAgICAgICAgICAgICAgICAgIF9tcGRfY29weV9zaGFyZWQoJmJiLCBiKTsKKyAgICAgICAgICAgICAgICAgICAgYWEuZXhwID0gYmIuZXhwID0gMDsKKyAgICAgICAgICAgICAgICAgICAgLyogY29tcGFyZSBwYXlsb2FkICovCisgICAgICAgICAgICAgICAgICAgIGMgPSBfbXBkX2NtcF9hYnMoJmFhLCAmYmIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYyA9IChhLT5sZW4gPiAwKSAtIChiLT5sZW4gPiAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjID0gbmFuX2EgLSBuYW5fYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgYyA9IC0xOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYyA9IF9tcGRfY21wX2FicyhhLCBiKTsKKyAgICAgICAgaWYgKGMgPT0gMCAmJiBhLT5leHAgIT0gYi0+ZXhwKSB7CisgICAgICAgICAgICBjID0gKGEtPmV4cCA8IGItPmV4cCkgPyAtMSA6IDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYyAqIG1wZF9hcml0aF9zaWduKGEpOworfQorCisvKgorICogQ29tcGFyZSBhIGFuZCBiIGFjY29yZGluZyB0byBhIHRvdGFsIG9yZGVyLCBjb252ZXJ0IHRoZSB1c3VhbCBpbnRlZ2VyIHJlc3VsdAorICogdG8gYSBkZWNpbWFsIGFuZCBzdG9yZSBpdCBpbiAncmVzdWx0Jy4gRm9yIGNvbnZlbmllbmNlLCB0aGUgaW50ZWdlciByZXN1bHQKKyAqIG9mIHRoZSBjb21wYXJpc29uIGlzIHJldHVybmVkLgorICovCitpbnQKK21wZF9jb21wYXJlX3RvdGFsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYikKK3sKKyAgICBpbnQgYzsKKworICAgIGMgPSBtcGRfY21wX3RvdGFsKGEsIGIpOworICAgIF9zZXR0cmlwbGUocmVzdWx0LCAoYyA8IDApLCAoYyAhPSAwKSwgMCk7CisgICAgcmV0dXJuIGM7Cit9CisKKy8qIENvbXBhcmUgdGhlIG1hZ25pdHVkZSBvZiB0aGUgb3BlcmFuZHMgdXNpbmcgYSB0b3RhbCBvcmRlci4gKi8KK2ludAorbXBkX2NtcF90b3RhbF9tYWcoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIG1wZF90IGFhLCBiYjsKKworICAgIF9tcGRfY29weV9zaGFyZWQoJmFhLCBhKTsKKyAgICBfbXBkX2NvcHlfc2hhcmVkKCZiYiwgYik7CisKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKCZhYSk7CisgICAgbXBkX3NldF9wb3NpdGl2ZSgmYmIpOworCisgICAgcmV0dXJuIG1wZF9jbXBfdG90YWwoJmFhLCAmYmIpOworfQorCisvKgorICogQ29tcGFyZSB0aGUgbWFnbml0dWRlIG9mIGEgYW5kIGIgYWNjb3JkaW5nIHRvIGEgdG90YWwgb3JkZXIsIGNvbnZlcnQgdGhlCisgKiB0aGUgdXN1YWwgaW50ZWdlciByZXN1bHQgdG8gYSBkZWNpbWFsIGFuZCBzdG9yZSBpdCBpbiAncmVzdWx0Jy4KKyAqIEZvciBjb252ZW5pZW5jZSwgdGhlIGludGVnZXIgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGlzIHJldHVybmVkLgorICovCitpbnQKK21wZF9jb21wYXJlX3RvdGFsX21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgaW50IGM7CisKKyAgICBjID0gbXBkX2NtcF90b3RhbF9tYWcoYSwgYik7CisgICAgX3NldHRyaXBsZShyZXN1bHQsIChjIDwgMCksIChjICE9IDApLCAwKTsKKyAgICByZXR1cm4gYzsKK30KKworLyogRGV0ZXJtaW5lIGFuIG9yZGVyaW5nIGZvciBvcGVyYW5kcyB0aGF0IGFyZSBudW1lcmljYWxseSBlcXVhbC4gKi8KK3N0YXRpYyBpbmxpbmUgaW50CitfbXBkX2NtcF9udW1lcXVhbChjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgaW50IHNpZ25fYSwgc2lnbl9iOworICAgIGludCBjOworCisgICAgc2lnbl9hID0gbXBkX3NpZ24oYSk7CisgICAgc2lnbl9iID0gbXBkX3NpZ24oYik7CisgICAgaWYgKHNpZ25fYSAhPSBzaWduX2IpIHsKKyAgICAgICAgYyA9IHNpZ25fYiAtIHNpZ25fYTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGMgPSAoYS0+ZXhwIDwgYi0+ZXhwKSA/IC0xIDogMTsKKyAgICAgICAgYyAqPSBtcGRfYXJpdGhfc2lnbihhKTsKKyAgICB9CisKKyAgICByZXR1cm4gYzsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgU2hpZnRpbmcgdGhlIGNvZWZmaWNpZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBTaGlmdCB0aGUgY29lZmZpY2llbnQgb2YgdGhlIG9wZXJhbmQgdG8gdGhlIGxlZnQsIG5vIGNoZWNrIGZvciBzcGVjaWFscy4KKyAqIEJvdGggb3BlcmFuZHMgbWF5IGJlIHRoZSBzYW1lIHBvaW50ZXIuIElmIHRoZSByZXN1bHQgbGVuZ3RoIGhhcyB0byBiZQorICogaW5jcmVhc2VkLCBtcGRfcXJlc2l6ZSgpIG1pZ2h0IGZhaWwgd2l0aCBNUERfTWFsbG9jX2Vycm9yLgorICovCitpbnQKK21wZF9xc2hpZnRsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IHNpemU7CisKKyAgICBhc3NlcnQoIW1wZF9pc3NwZWNpYWwoYSkpOworICAgIGFzc2VydChuID49IDApOworCisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSB8fCBuID09IDApIHsKKyAgICAgICAgcmV0dXJuIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorCisgICAgc2l6ZSA9IG1wZF9kaWdpdHNfdG9fc2l6ZShhLT5kaWdpdHMrbik7CisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIHNpemUsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuIDA7IC8qIHJlc3VsdCBpcyBOYU4gKi8KKyAgICB9CisKKyAgICBfbXBkX2Jhc2VzaGlmdGwocmVzdWx0LT5kYXRhLCBhLT5kYXRhLCBzaXplLCBhLT5sZW4sIG4pOworCisgICAgbXBkX2NvcHlfZmxhZ3MocmVzdWx0LCBhKTsKKyAgICByZXN1bHQtPmV4cCA9IGEtPmV4cDsKKyAgICByZXN1bHQtPmRpZ2l0cyA9IGEtPmRpZ2l0cytuOworICAgIHJlc3VsdC0+bGVuID0gc2l6ZTsKKworICAgIHJldHVybiAxOworfQorCisvKiBEZXRlcm1pbmUgdGhlIHJvdW5kaW5nIGluZGljYXRvciBpZiBhbGwgZGlnaXRzIG9mIHRoZSBjb2VmZmljaWVudCBhcmUgc2hpZnRlZAorICogb3V0IG9mIHRoZSBwaWN0dXJlLiAqLworc3RhdGljIG1wZF91aW50X3QKK19tcGRfZ2V0X3JuZChjb25zdCBtcGRfdWludF90ICpkYXRhLCBtcGRfc3NpemVfdCBsZW4sIGludCB1c2VfbXNkKQoreworICAgIG1wZF91aW50X3Qgcm5kID0gMCwgcmVzdCA9IDAsIHdvcmQ7CisKKyAgICB3b3JkID0gZGF0YVtsZW4tMV07CisgICAgLyogc3BlY2lhbCB0cmVhdG1lbnQgZm9yIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IGlmIHNoaWZ0ID09IGRpZ2l0cyAqLworICAgIGlmICh1c2VfbXNkKSB7CisgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZybmQsICZyZXN0LCB3b3JkLCBtcGRfd29yZF9kaWdpdHMod29yZCktMSk7CisgICAgICAgIGlmIChsZW4gPiAxICYmIHJlc3QgPT0gMCkgeworICAgICAgICAgICAgIHJlc3QgPSAhX21wZF9pc2FsbHplcm8oZGF0YSwgbGVuLTEpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN0ID0gIV9tcGRfaXNhbGx6ZXJvKGRhdGEsIGxlbik7CisgICAgfQorCisgICAgcmV0dXJuIChybmQgPT0gMCB8fCBybmQgPT0gNSkgPyBybmQgKyAhIXJlc3QgOiBybmQ7Cit9CisKKy8qCisgKiBTYW1lIGFzIG1wZF9xc2hpZnRyKCksIGJ1dCAncmVzdWx0JyBpcyBhbiBtcGRfdCB3aXRoIGEgc3RhdGljIGNvZWZmaWNpZW50LgorICogSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjb2VmZmljaWVudCBpcyBiaWcKKyAqIGVub3VnaC4gVGhlIGZ1bmN0aW9uIGNhbm5vdCBmYWlsLgorICovCittcGRfdWludF90CittcGRfcXNzaGlmdHIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4pCit7CisgICAgbXBkX3VpbnRfdCBybmQ7CisgICAgbXBkX3NzaXplX3Qgc2l6ZTsKKworICAgIGFzc2VydCghbXBkX2lzc3BlY2lhbChhKSk7CisgICAgYXNzZXJ0KG4gPj0gMCk7CisKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpIHx8IG4gPT0gMCkgeworICAgICAgICBtcGRfcWNvcHlfc3RhdGljKHJlc3VsdCwgYSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChuID49IGEtPmRpZ2l0cykgeworICAgICAgICBybmQgPSBfbXBkX2dldF9ybmQoYS0+ZGF0YSwgYS0+bGVuLCAobj09YS0+ZGlnaXRzKSk7CisgICAgICAgIG1wZF96ZXJvY29lZmYocmVzdWx0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdC0+ZGlnaXRzID0gYS0+ZGlnaXRzLW47CisgICAgICAgIHNpemUgPSBtcGRfZGlnaXRzX3RvX3NpemUocmVzdWx0LT5kaWdpdHMpOworICAgICAgICBybmQgPSBfbXBkX2Jhc2VzaGlmdHIocmVzdWx0LT5kYXRhLCBhLT5kYXRhLCBhLT5sZW4sIG4pOworICAgICAgICByZXN1bHQtPmxlbiA9IHNpemU7CisgICAgfQorCisgICAgbXBkX2NvcHlfZmxhZ3MocmVzdWx0LCBhKTsKKyAgICByZXN1bHQtPmV4cCA9IGEtPmV4cDsKKworICAgIHJldHVybiBybmQ7Cit9CisKKy8qCisgKiBJbnBsYWNlIHNoaWZ0IG9mIHRoZSBjb2VmZmljaWVudCB0byB0aGUgcmlnaHQsIG5vIGNoZWNrIGZvciBzcGVjaWFscy4KKyAqIFJldHVybnMgdGhlIHJvdW5kaW5nIGluZGljYXRvciBmb3IgbXBkX3JuZF9pbmNyKCkuCisgKiBUaGUgZnVuY3Rpb24gY2Fubm90IGZhaWwuCisgKi8KK21wZF91aW50X3QKK21wZF9xc2hpZnRyX2lucGxhY2UobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgbikKK3sKKyAgICB1aW50MzJfdCBkdW1teTsKKyAgICBtcGRfdWludF90IHJuZDsKKyAgICBtcGRfc3NpemVfdCBzaXplOworCisgICAgYXNzZXJ0KCFtcGRfaXNzcGVjaWFsKHJlc3VsdCkpOworICAgIGFzc2VydChuID49IDApOworCisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihyZXN1bHQpIHx8IG4gPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobiA+PSByZXN1bHQtPmRpZ2l0cykgeworICAgICAgICBybmQgPSBfbXBkX2dldF9ybmQocmVzdWx0LT5kYXRhLCByZXN1bHQtPmxlbiwgKG49PXJlc3VsdC0+ZGlnaXRzKSk7CisgICAgICAgIG1wZF96ZXJvY29lZmYocmVzdWx0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJuZCA9IF9tcGRfYmFzZXNoaWZ0cihyZXN1bHQtPmRhdGEsIHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4sIG4pOworICAgICAgICByZXN1bHQtPmRpZ2l0cyAtPSBuOworICAgICAgICBzaXplID0gbXBkX2RpZ2l0c190b19zaXplKHJlc3VsdC0+ZGlnaXRzKTsKKyAgICAgICAgLyogcmVkdWNpbmcgdGhlIHNpemUgY2Fubm90IGZhaWwgKi8KKyAgICAgICAgbXBkX3FyZXNpemUocmVzdWx0LCBzaXplLCAmZHVtbXkpOworICAgICAgICByZXN1bHQtPmxlbiA9IHNpemU7CisgICAgfQorCisgICAgcmV0dXJuIHJuZDsKK30KKworLyoKKyAqIFNoaWZ0IHRoZSBjb2VmZmljaWVudCBvZiB0aGUgb3BlcmFuZCB0byB0aGUgcmlnaHQsIG5vIGNoZWNrIGZvciBzcGVjaWFscy4KKyAqIEJvdGggb3BlcmFuZHMgbWF5IGJlIHRoZSBzYW1lIHBvaW50ZXIuIFJldHVybnMgdGhlIHJvdW5kaW5nIGluZGljYXRvciB0bworICogYmUgdXNlZCBieSBtcGRfcm5kX2luY3IoKS4gSWYgdGhlIHJlc3VsdCBsZW5ndGggaGFzIHRvIGJlIGluY3JlYXNlZCwKKyAqIG1wZF9xY29weSgpIG9yIG1wZF9xcmVzaXplKCkgbWlnaHQgZmFpbCB3aXRoIE1QRF9NYWxsb2NfZXJyb3IuIEluIHRob3NlCisgKiBjYXNlcywgTVBEX1VJTlRfTUFYIGlzIHJldHVybmVkLgorICovCittcGRfdWludF90CittcGRfcXNoaWZ0cihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IHJuZDsKKyAgICBtcGRfc3NpemVfdCBzaXplOworCisgICAgYXNzZXJ0KCFtcGRfaXNzcGVjaWFsKGEpKTsKKyAgICBhc3NlcnQobiA+PSAwKTsKKworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkgfHwgbiA9PSAwKSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuIE1QRF9VSU5UX01BWDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobiA+PSBhLT5kaWdpdHMpIHsKKyAgICAgICAgcm5kID0gX21wZF9nZXRfcm5kKGEtPmRhdGEsIGEtPmxlbiwgKG49PWEtPmRpZ2l0cykpOworICAgICAgICBtcGRfemVyb2NvZWZmKHJlc3VsdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHQtPmRpZ2l0cyA9IGEtPmRpZ2l0cy1uOworICAgICAgICBzaXplID0gbXBkX2RpZ2l0c190b19zaXplKHJlc3VsdC0+ZGlnaXRzKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBhKSB7CisgICAgICAgICAgICBybmQgPSBfbXBkX2Jhc2VzaGlmdHIocmVzdWx0LT5kYXRhLCBhLT5kYXRhLCBhLT5sZW4sIG4pOworICAgICAgICAgICAgLyogcmVkdWNpbmcgdGhlIHNpemUgY2Fubm90IGZhaWwgKi8KKyAgICAgICAgICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgc2l6ZSwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBzaXplLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1QRF9VSU5UX01BWDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJuZCA9IF9tcGRfYmFzZXNoaWZ0cihyZXN1bHQtPmRhdGEsIGEtPmRhdGEsIGEtPmxlbiwgbik7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5sZW4gPSBzaXplOworICAgIH0KKworICAgIG1wZF9jb3B5X2ZsYWdzKHJlc3VsdCwgYSk7CisgICAgcmVzdWx0LT5leHAgPSBhLT5leHA7CisKKyAgICByZXR1cm4gcm5kOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBNaXNjZWxsYW5lb3VzIG9wZXJhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogTG9naWNhbCBBbmQgKi8KK3ZvaWQKK21wZF9xYW5kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBjb25zdCBtcGRfdCAqYmlnID0gYSwgKnNtYWxsID0gYjsKKyAgICBtcGRfdWludF90IHgsIHksIHosIHhiaXQsIHliaXQ7CisgICAgaW50IGssIG1zd2RpZ2l0czsKKyAgICBtcGRfc3NpemVfdCBpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSB8fAorICAgICAgICBtcGRfaXNuZWdhdGl2ZShhKSB8fCBtcGRfaXNuZWdhdGl2ZShiKSB8fAorICAgICAgICBhLT5leHAgIT0gMCB8fCBiLT5leHAgIT0gMCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGItPmRpZ2l0cyA+IGEtPmRpZ2l0cykgeworICAgICAgICBiaWcgPSBiOworICAgICAgICBzbWFsbCA9IGE7CisgICAgfQorICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBiaWctPmxlbiwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvKiBmdWxsIHdvcmRzICovCisgICAgZm9yIChpID0gMDsgaSA8IHNtYWxsLT5sZW4tMTsgaSsrKSB7CisgICAgICAgIHggPSBzbWFsbC0+ZGF0YVtpXTsKKyAgICAgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICAgICAgeiA9IDA7CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgICAgICB4Yml0ID0geCAlIDEwOworICAgICAgICAgICAgeCAvPSAxMDsKKyAgICAgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgICAgICB5IC89IDEwOworICAgICAgICAgICAgaWYgKHhiaXQgPiAxIHx8IHliaXQgPiAxKSB7CisgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHogKz0gKHhiaXQmeWJpdCkgPyBtcGRfcG93MTBba10gOiAwOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZGF0YVtpXSA9IHo7CisgICAgfQorICAgIC8qIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCBvZiBzbWFsbCAqLworICAgIHggPSBzbWFsbC0+ZGF0YVtpXTsKKyAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgIHogPSAwOworICAgIG1zd2RpZ2l0cyA9IG1wZF93b3JkX2RpZ2l0cyh4KTsKKyAgICBmb3IgKGsgPSAwOyBrIDwgbXN3ZGlnaXRzOyBrKyspIHsKKyAgICAgICAgeGJpdCA9IHggJSAxMDsKKyAgICAgICAgeCAvPSAxMDsKKyAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgaWYgKHhiaXQgPiAxIHx8IHliaXQgPiAxKSB7CisgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIHogKz0gKHhiaXQmeWJpdCkgPyBtcGRfcG93MTBba10gOiAwOworICAgIH0KKyAgICByZXN1bHQtPmRhdGFbaSsrXSA9IHo7CisKKyAgICAvKiBzY2FuIHRoZSByZXN0IG9mIHkgZm9yIGRpZ2l0cyA+IDEgKi8KKyAgICBmb3IgKDsgayA8IE1QRF9SRElHSVRTOyBrKyspIHsKKyAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgaWYgKHliaXQgPiAxKSB7CisgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgfQorICAgIC8qIHNjYW4gdGhlIHJlc3Qgb2YgYmlnIGZvciBkaWdpdHMgPiAxICovCisgICAgZm9yICg7IGkgPCBiaWctPmxlbjsgaSsrKSB7CisgICAgICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgICAgIGlmICh5Yml0ID4gMSkgeworICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfY2xlYXJfZmxhZ3MocmVzdWx0KTsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5sZW4gPSBfbXBkX3JlYWxfc2l6ZShyZXN1bHQtPmRhdGEsIHNtYWxsLT5sZW4pOworICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgcmVzdWx0LT5sZW4sIHN0YXR1cyk7CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworICAgIF9tcGRfY2FwKHJlc3VsdCwgY3R4KTsKKyAgICByZXR1cm47CisKK2ludmFsaWRfb3BlcmF0aW9uOgorICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKK30KKworLyogQ2xhc3Mgb2YgYW4gb3BlcmFuZC4gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGNvbnN0YW50IG5hbWUuICovCitjb25zdCBjaGFyICoKK21wZF9jbGFzcyhjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIGlmIChtcGRfaXNuYW4oYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3FuYW4oYSkpCisgICAgICAgICAgICByZXR1cm4gIk5hTiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAic05hTiI7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9pc3Bvc2l0aXZlKGEpKSB7CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkKKyAgICAgICAgICAgIHJldHVybiAiK0luZmluaXR5IjsKKyAgICAgICAgZWxzZSBpZiAobXBkX2lzemVybyhhKSkKKyAgICAgICAgICAgIHJldHVybiAiK1plcm8iOworICAgICAgICBlbHNlIGlmIChtcGRfaXNub3JtYWwoYSwgY3R4KSkKKyAgICAgICAgICAgIHJldHVybiAiK05vcm1hbCI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAiK1N1Ym5vcm1hbCI7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpCisgICAgICAgICAgICByZXR1cm4gIi1JbmZpbml0eSI7CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3plcm8oYSkpCisgICAgICAgICAgICByZXR1cm4gIi1aZXJvIjsKKyAgICAgICAgZWxzZSBpZiAobXBkX2lzbm9ybWFsKGEsIGN0eCkpCisgICAgICAgICAgICByZXR1cm4gIi1Ob3JtYWwiOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gIi1TdWJub3JtYWwiOworICAgIH0KK30KKworLyogTG9naWNhbCBYb3IgKi8KK3ZvaWQKK21wZF9xaW52ZXJ0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgeCwgeiwgeGJpdDsKKyAgICBtcGRfc3NpemVfdCBpLCBkaWdpdHMsIGxlbjsKKyAgICBtcGRfc3NpemVfdCBxLCByOworICAgIGludCBrOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzbmVnYXRpdmUoYSkgfHwgYS0+ZXhwICE9IDApIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZGlnaXRzID0gKGEtPmRpZ2l0cyA8IGN0eC0+cHJlYykgPyBjdHgtPnByZWMgOiBhLT5kaWdpdHM7CisgICAgX21wZF9pZGl2X3dvcmQoJnEsICZyLCBkaWdpdHMsIE1QRF9SRElHSVRTKTsKKyAgICBsZW4gPSAociA9PSAwKSA/IHEgOiBxKzE7CisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIGxlbiwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIHggPSAoaSA8IGEtPmxlbikgPyBhLT5kYXRhW2ldIDogMDsKKyAgICAgICAgeiA9IDA7CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgICAgICB4Yml0ID0geCAlIDEwOworICAgICAgICAgICAgeCAvPSAxMDsKKyAgICAgICAgICAgIGlmICh4Yml0ID4gMSkgeworICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICB6ICs9ICF4Yml0ID8gbXBkX3BvdzEwW2tdIDogMDsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmRhdGFbaV0gPSB6OworICAgIH0KKworICAgIG1wZF9jbGVhcl9mbGFncyhyZXN1bHQpOworICAgIHJlc3VsdC0+ZXhwID0gMDsKKyAgICByZXN1bHQtPmxlbiA9IF9tcGRfcmVhbF9zaXplKHJlc3VsdC0+ZGF0YSwgbGVuKTsKKyAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHJlc3VsdC0+bGVuLCBzdGF0dXMpOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKKyAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgcmV0dXJuOworCitpbnZhbGlkX29wZXJhdGlvbjoKKyAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7Cit9CisKKy8qIEV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUgb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQgb2YgdGhlIG9wZXJhbmQuICovCit2b2lkCittcGRfcWxvZ2IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX0lORik7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9ORUcsIE1QRF9JTkYpOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9EaXZpc2lvbl9ieV96ZXJvOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3FzZXRfc3NpemUocmVzdWx0LCBtcGRfYWRqZXhwKGEpLCBjdHgsIHN0YXR1cyk7CisgICAgfQorfQorCisvKiBMb2dpY2FsIE9yICovCit2b2lkCittcGRfcW9yKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGNvbnN0IG1wZF90ICpiaWcgPSBhLCAqc21hbGwgPSBiOworICAgIG1wZF91aW50X3QgeCwgeSwgeiwgeGJpdCwgeWJpdDsKKyAgICBpbnQgaywgbXN3ZGlnaXRzOworICAgIG1wZF9zc2l6ZV90IGk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpIHx8CisgICAgICAgIG1wZF9pc25lZ2F0aXZlKGEpIHx8IG1wZF9pc25lZ2F0aXZlKGIpIHx8CisgICAgICAgIGEtPmV4cCAhPSAwIHx8IGItPmV4cCAhPSAwKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoYi0+ZGlnaXRzID4gYS0+ZGlnaXRzKSB7CisgICAgICAgIGJpZyA9IGI7CisgICAgICAgIHNtYWxsID0gYTsKKyAgICB9CisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIGJpZy0+bGVuLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIC8qIGZ1bGwgd29yZHMgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgc21hbGwtPmxlbi0xOyBpKyspIHsKKyAgICAgICAgeCA9IHNtYWxsLT5kYXRhW2ldOworICAgICAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgICAgICB6ID0gMDsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IE1QRF9SRElHSVRTOyBrKyspIHsKKyAgICAgICAgICAgIHhiaXQgPSB4ICUgMTA7CisgICAgICAgICAgICB4IC89IDEwOworICAgICAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgICAgIHkgLz0gMTA7CisgICAgICAgICAgICBpZiAoeGJpdCA+IDEgfHwgeWJpdCA+IDEpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeiArPSAoeGJpdHx5Yml0KSA/IG1wZF9wb3cxMFtrXSA6IDA7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5kYXRhW2ldID0gejsKKyAgICB9CisgICAgLyogbW9zdCBzaWduaWZpY2FudCB3b3JkIG9mIHNtYWxsICovCisgICAgeCA9IHNtYWxsLT5kYXRhW2ldOworICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgeiA9IDA7CisgICAgbXN3ZGlnaXRzID0gbXBkX3dvcmRfZGlnaXRzKHgpOworICAgIGZvciAoayA9IDA7IGsgPCBtc3dkaWdpdHM7IGsrKykgeworICAgICAgICB4Yml0ID0geCAlIDEwOworICAgICAgICB4IC89IDEwOworICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICB5IC89IDEwOworICAgICAgICBpZiAoeGJpdCA+IDEgfHwgeWJpdCA+IDEpIHsKKyAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgeiArPSAoeGJpdHx5Yml0KSA/IG1wZF9wb3cxMFtrXSA6IDA7CisgICAgfQorCisgICAgLyogc2NhbiBmb3IgZGlnaXRzID4gMSBhbmQgY29weSB0aGUgcmVzdCBvZiB5ICovCisgICAgZm9yICg7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgIHkgLz0gMTA7CisgICAgICAgIGlmICh5Yml0ID4gMSkgeworICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICB6ICs9IHliaXQqbXBkX3BvdzEwW2tdOworICAgIH0KKyAgICByZXN1bHQtPmRhdGFbaSsrXSA9IHo7CisgICAgLyogc2NhbiBmb3IgZGlnaXRzID4gMSBhbmQgY29weSB0aGUgcmVzdCBvZiBiaWcgKi8KKyAgICBmb3IgKDsgaSA8IGJpZy0+bGVuOyBpKyspIHsKKyAgICAgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IE1QRF9SRElHSVRTOyBrKyspIHsKKyAgICAgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgICAgICB5IC89IDEwOworICAgICAgICAgICAgaWYgKHliaXQgPiAxKSB7CisgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmRhdGFbaV0gPSBiaWctPmRhdGFbaV07CisgICAgfQorCisgICAgbXBkX2NsZWFyX2ZsYWdzKHJlc3VsdCk7CisgICAgcmVzdWx0LT5leHAgPSAwOworICAgIHJlc3VsdC0+bGVuID0gX21wZF9yZWFsX3NpemUocmVzdWx0LT5kYXRhLCBiaWctPmxlbik7CisgICAgbXBkX3FyZXNpemUocmVzdWx0LCByZXN1bHQtPmxlbiwgc3RhdHVzKTsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisgICAgX21wZF9jYXAocmVzdWx0LCBjdHgpOworICAgIHJldHVybjsKKworaW52YWxpZF9vcGVyYXRpb246CisgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworfQorCisvKgorICogUm90YXRlIHRoZSBjb2VmZmljaWVudCBvZiAnYScgYnkgJ2InIGRpZ2l0cy4gJ2InIG11c3QgYmUgYW4gaW50ZWdlciB3aXRoCisgKiBleHBvbmVudCAwLgorICovCit2b2lkCittcGRfcXJvdGF0ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisgICAgTVBEX05FV19TVEFUSUModG1wLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKGJpZywwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyhzbWFsbCwwLDAsMCwwKTsKKyAgICBtcGRfc3NpemVfdCBuLCBsc2hpZnQsIHJzaGlmdDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGlmIChiLT5leHAgIT0gMCB8fCBtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBuID0gbXBkX3FnZXRfc3NpemUoYiwgJndvcmtzdGF0dXMpOworICAgIGlmICh3b3Jrc3RhdHVzJk1QRF9JbnZhbGlkX29wZXJhdGlvbikgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG4gPiBjdHgtPnByZWMgfHwgbiA8IC1jdHgtPnByZWMpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG4gPj0gMCkgeworICAgICAgICBsc2hpZnQgPSBuOworICAgICAgICByc2hpZnQgPSBjdHgtPnByZWMtbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGxzaGlmdCA9IGN0eC0+cHJlYytuOworICAgICAgICByc2hpZnQgPSAtbjsKKyAgICB9CisKKyAgICBpZiAoYS0+ZGlnaXRzID4gY3R4LT5wcmVjKSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KCZ0bXAsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgICAgICBfbXBkX2NhcCgmdG1wLCBjdHgpOworICAgICAgICBhID0gJnRtcDsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9xc2hpZnRsKCZiaWcsIGEsIGxzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisgICAgX21wZF9jYXAoJmJpZywgY3R4KTsKKworICAgIGlmIChtcGRfcXNoaWZ0cigmc21hbGwsIGEsIHJzaGlmdCwgc3RhdHVzKSA9PSBNUERfVUlOVF9NQVgpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorICAgIF9tcGRfcWFkZChyZXN1bHQsICZiaWcsICZzbWFsbCwgY3R4LCBzdGF0dXMpOworCisKK2ZpbmlzaDoKKyAgICBtcGRfZGVsKCZ0bXApOworICAgIG1wZF9kZWwoJmJpZyk7CisgICAgbXBkX2RlbCgmc21hbGwpOworfQorCisvKgorICogYiBtdXN0IGJlIGFuIGludGVnZXIgd2l0aCBleHBvbmVudCAwIGFuZCBpbiB0aGUgcmFuZ2UgKy0yKihlbWF4ICsgcHJlYykuCisgKiBYWFg6IEluIG15IG9waW5pb24gKy0oMiplbWF4ICsgcHJlYykgd291bGQgYmUgbW9yZSBzZW5zaWJsZS4KKyAqIFRoZSByZXN1bHQgaXMgYSB3aXRoIHRoZSB2YWx1ZSBvZiBiIGFkZGVkIHRvIGl0cyBleHBvbmVudC4KKyAqLwordm9pZAorbXBkX3FzY2FsZWIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF91aW50X3QgbiwgbWF4anVtcDsKKyNpZm5kZWYgTEVHQUNZX0NPTVBJTEVSCisgICAgaW50NjRfdCBleHA7CisjZWxzZQorICAgIG1wZF91aW50X3QgeDsKKyAgICBpbnQgeF9zaWduLCBuX3NpZ247CisgICAgbXBkX3NzaXplX3QgZXhwOworI2VuZGlmCisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoYi0+ZXhwICE9IDAgfHwgbXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbiA9IG1wZF9xYWJzX3VpbnQoYiwgJndvcmtzdGF0dXMpOworICAgIC8qIHRoZSBzcGVjIGRlbWFuZHMgdGhpcyAqLworICAgIG1heGp1bXAgPSAyICogKG1wZF91aW50X3QpKGN0eC0+ZW1heCArIGN0eC0+cHJlYyk7CisKKyAgICBpZiAobiA+IG1heGp1bXAgfHwgd29ya3N0YXR1cyZNUERfSW52YWxpZF9vcGVyYXRpb24pIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWZuZGVmIExFR0FDWV9DT01QSUxFUgorICAgIGV4cCA9IGEtPmV4cCArIChpbnQ2NF90KW4gKiBtcGRfYXJpdGhfc2lnbihiKTsKKyAgICBleHAgPSAoZXhwID4gTVBEX0VYUF9JTkYpID8gTVBEX0VYUF9JTkYgOiBleHA7CisgICAgZXhwID0gKGV4cCA8IE1QRF9FWFBfQ0xBTVApID8gTVBEX0VYUF9DTEFNUCA6IGV4cDsKKyNlbHNlCisgICAgeCA9IChhLT5leHAgPCAwKSA/IC1hLT5leHAgOiBhLT5leHA7CisgICAgeF9zaWduID0gKGEtPmV4cCA8IDApID8gMSA6IDA7CisgICAgbl9zaWduID0gbXBkX2lzbmVnYXRpdmUoYikgPyAxIDogMDsKKworICAgIGlmICh4X3NpZ24gPT0gbl9zaWduKSB7CisgICAgICAgIHggPSB4ICsgbjsKKyAgICAgICAgaWYgKHggPCBuKSB4ID0gTVBEX1VJTlRfTUFYOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgeF9zaWduID0gKHggPj0gbikgPyB4X3NpZ24gOiBuX3NpZ247CisgICAgICAgIHggPSAoeCA+PSBuKSA/IHggLSBuIDogbiAtIHg7CisgICAgfQorICAgIGlmICgheF9zaWduICYmIHggPiBNUERfRVhQX0lORikgeCA9IE1QRF9FWFBfSU5GOworICAgIGlmICh4X3NpZ24gJiYgeCA+IC1NUERfRVhQX0NMQU1QKSB4ID0gLU1QRF9FWFBfQ0xBTVA7CisgICAgZXhwID0geF9zaWduID8gLSgobXBkX3NzaXplX3QpeCkgOiAobXBkX3NzaXplX3QpeDsKKyNlbmRpZgorCisgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICByZXN1bHQtPmV4cCA9IChtcGRfc3NpemVfdClleHA7CisKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKgorICogU2hpZnQgdGhlIGNvZWZmaWNpZW50IGJ5IG4gZGlnaXRzLCBwb3NpdGl2ZSBuIGlzIGEgbGVmdCBzaGlmdC4gSW4gdGhlIGNhc2UKKyAqIG9mIGEgbGVmdCBzaGlmdCwgdGhlIHJlc3VsdCBpcyBkZWNhcGl0YXRlZCB0byBmaXQgdGhlIGNvbnRleHQgcHJlY2lzaW9uLiBJZgorICogeW91IGRvbid0IHdhbnQgdGhhdCwgdXNlIG1wZF9zaGlmdGwoKS4KKyAqLwordm9pZAorbXBkX3FzaGlmdG4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4sIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChuID49IDAgJiYgbiA8PSBjdHgtPnByZWMpIHsKKyAgICAgICAgbXBkX3FzaGlmdGwocmVzdWx0LCBhLCBuLCBzdGF0dXMpOworICAgICAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgfQorICAgIGVsc2UgaWYgKG4gPCAwICYmIG4gPj0gLWN0eC0+cHJlYykgeworICAgICAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgICAgIG1wZF9xc2hpZnRyX2lucGxhY2UocmVzdWx0LCAtbik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgfQorfQorCisvKgorICogU2FtZSBhcyBtcGRfc2hpZnRuKCksIGJ1dCB0aGUgc2hpZnQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBkZWNpbWFsIGIsIHdoaWNoCisgKiBtdXN0IGJlIGFuIGludGVnZXIgd2l0aCBhIHplcm8gZXhwb25lbnQuIEluZmluaXRpZXMgcmVtYWluIGluZmluaXRpZXMuCisgKi8KK3ZvaWQKK21wZF9xc2hpZnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisgICAgbXBkX3NzaXplX3QgbjsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGlmIChiLT5leHAgIT0gMCB8fCBtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBuID0gbXBkX3FnZXRfc3NpemUoYiwgJndvcmtzdGF0dXMpOworICAgIGlmICh3b3Jrc3RhdHVzJk1QRF9JbnZhbGlkX29wZXJhdGlvbikgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG4gPiBjdHgtPnByZWMgfHwgbiA8IC1jdHgtPnByZWMpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG4gPj0gMCkgeworICAgICAgICBtcGRfcXNoaWZ0bChyZXN1bHQsIGEsIG4sIHN0YXR1cyk7CisgICAgICAgIF9tcGRfY2FwKHJlc3VsdCwgY3R4KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIF9tcGRfY2FwKHJlc3VsdCwgY3R4KTsKKyAgICAgICAgbXBkX3FzaGlmdHJfaW5wbGFjZShyZXN1bHQsIC1uKTsKKyAgICB9Cit9CisKKy8qIExvZ2ljYWwgWG9yICovCit2b2lkCittcGRfcXhvcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBjb25zdCBtcGRfdCAqYmlnID0gYSwgKnNtYWxsID0gYjsKKyAgICBtcGRfdWludF90IHgsIHksIHosIHhiaXQsIHliaXQ7CisgICAgaW50IGssIG1zd2RpZ2l0czsKKyAgICBtcGRfc3NpemVfdCBpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSB8fAorICAgICAgICBtcGRfaXNuZWdhdGl2ZShhKSB8fCBtcGRfaXNuZWdhdGl2ZShiKSB8fAorICAgICAgICBhLT5leHAgIT0gMCB8fCBiLT5leHAgIT0gMCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGItPmRpZ2l0cyA+IGEtPmRpZ2l0cykgeworICAgICAgICBiaWcgPSBiOworICAgICAgICBzbWFsbCA9IGE7CisgICAgfQorICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBiaWctPmxlbiwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvKiBmdWxsIHdvcmRzICovCisgICAgZm9yIChpID0gMDsgaSA8IHNtYWxsLT5sZW4tMTsgaSsrKSB7CisgICAgICAgIHggPSBzbWFsbC0+ZGF0YVtpXTsKKyAgICAgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICAgICAgeiA9IDA7CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgICAgICB4Yml0ID0geCAlIDEwOworICAgICAgICAgICAgeCAvPSAxMDsKKyAgICAgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgICAgICB5IC89IDEwOworICAgICAgICAgICAgaWYgKHhiaXQgPiAxIHx8IHliaXQgPiAxKSB7CisgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHogKz0gKHhiaXReeWJpdCkgPyBtcGRfcG93MTBba10gOiAwOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZGF0YVtpXSA9IHo7CisgICAgfQorICAgIC8qIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCBvZiBzbWFsbCAqLworICAgIHggPSBzbWFsbC0+ZGF0YVtpXTsKKyAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgIHogPSAwOworICAgIG1zd2RpZ2l0cyA9IG1wZF93b3JkX2RpZ2l0cyh4KTsKKyAgICBmb3IgKGsgPSAwOyBrIDwgbXN3ZGlnaXRzOyBrKyspIHsKKyAgICAgICAgeGJpdCA9IHggJSAxMDsKKyAgICAgICAgeCAvPSAxMDsKKyAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgaWYgKHhiaXQgPiAxIHx8IHliaXQgPiAxKSB7CisgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIHogKz0gKHhiaXReeWJpdCkgPyBtcGRfcG93MTBba10gOiAwOworICAgIH0KKworICAgIC8qIHNjYW4gZm9yIGRpZ2l0cyA+IDEgYW5kIGNvcHkgdGhlIHJlc3Qgb2YgeSAqLworICAgIGZvciAoOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICB5IC89IDEwOworICAgICAgICBpZiAoeWJpdCA+IDEpIHsKKyAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgeiArPSB5Yml0Km1wZF9wb3cxMFtrXTsKKyAgICB9CisgICAgcmVzdWx0LT5kYXRhW2krK10gPSB6OworICAgIC8qIHNjYW4gZm9yIGRpZ2l0cyA+IDEgYW5kIGNvcHkgdGhlIHJlc3Qgb2YgYmlnICovCisgICAgZm9yICg7IGkgPCBiaWctPmxlbjsgaSsrKSB7CisgICAgICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgICAgIGlmICh5Yml0ID4gMSkgeworICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5kYXRhW2ldID0gYmlnLT5kYXRhW2ldOworICAgIH0KKworICAgIG1wZF9jbGVhcl9mbGFncyhyZXN1bHQpOworICAgIHJlc3VsdC0+ZXhwID0gMDsKKyAgICByZXN1bHQtPmxlbiA9IF9tcGRfcmVhbF9zaXplKHJlc3VsdC0+ZGF0YSwgYmlnLT5sZW4pOworICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgcmVzdWx0LT5sZW4sIHN0YXR1cyk7CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworICAgIF9tcGRfY2FwKHJlc3VsdCwgY3R4KTsKKyAgICByZXR1cm47CisKK2ludmFsaWRfb3BlcmF0aW9uOgorICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgQXJpdGhtZXRpYyBvcGVyYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBUaGUgYWJzb2x1dGUgdmFsdWUgb2YgYS4gSWYgYSBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZQorICogYXMgdGhlIHJlc3VsdCBvZiB0aGUgbWludXMgb3BlcmF0aW9uLiBPdGhlcndpc2UsIHRoZSByZXN1bHQgaXMgdGhlCisgKiByZXN1bHQgb2YgdGhlIHBsdXMgb3BlcmF0aW9uLgorICovCit2b2lkCittcGRfcWFicyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICBtcGRfcW1pbnVzKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3FwbHVzKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworICAgIH0KK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX3B0cnN3YXAobXBkX3QgKiphLCBtcGRfdCAqKmIpCit7CisgICAgbXBkX3QgKnQgPSAqYTsKKyAgICAqYSA9ICpiOworICAgICpiID0gdDsKK30KKworLyogQWRkIG9yIHN1YnRyYWN0IGluZmluaXRpZXMuICovCitzdGF0aWMgdm9pZAorX21wZF9xYWRkc3ViX2luZihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIHVpbnQ4X3Qgc2lnbl9iLAorICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICBpZiAobXBkX3NpZ24oYSkgIT0gc2lnbl9iICYmIG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIG1wZF9zaWduKGEpLCBNUERfSU5GKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChtcGRfaXNpbmZpbml0ZShiKSk7CisgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBzaWduX2IsIE1QRF9JTkYpOworfQorCisvKiBBZGQgb3Igc3VidHJhY3Qgbm9uLXNwZWNpYWwgbnVtYmVycy4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FhZGRzdWIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCB1aW50OF90IHNpZ25fYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3QgKmJpZywgKnNtYWxsOworICAgIE1QRF9ORVdfU1RBVElDKGJpZ19hbGlnbmVkLDAsMCwwLDApOworICAgIE1QRF9ORVdfQ09OU1QodGlueSwwLDAsMSwxLDEsMSk7CisgICAgbXBkX3VpbnRfdCBjYXJyeTsKKyAgICBtcGRfc3NpemVfdCBuZXdzaXplLCBzaGlmdDsKKyAgICBtcGRfc3NpemVfdCBleHAsIGk7CisgICAgaW50IHN3YXAgPSAwOworCisKKyAgICAvKiBjb21wYXJlIGV4cG9uZW50cyAqLworICAgIGJpZyA9IChtcGRfdCAqKWE7IHNtYWxsID0gKG1wZF90ICopYjsKKyAgICBpZiAoYmlnLT5leHAgIT0gc21hbGwtPmV4cCkgeworICAgICAgICBpZiAoc21hbGwtPmV4cCA+IGJpZy0+ZXhwKSB7CisgICAgICAgICAgICBfbXBkX3B0cnN3YXAoJmJpZywgJnNtYWxsKTsKKyAgICAgICAgICAgIHN3YXArKzsKKyAgICAgICAgfQorICAgICAgICAvKiBhbGlnbiB0aGUgY29lZmZpY2llbnRzICovCisgICAgICAgIGlmICghbXBkX2lzemVyb2NvZWZmKGJpZykpIHsKKyAgICAgICAgICAgIGV4cCA9IGJpZy0+ZXhwIC0gMTsKKyAgICAgICAgICAgIGV4cCArPSAoYmlnLT5kaWdpdHMgPiBjdHgtPnByZWMpID8gMCA6IGJpZy0+ZGlnaXRzLWN0eC0+cHJlYy0xOworICAgICAgICAgICAgaWYgKG1wZF9hZGpleHAoc21hbGwpIDwgZXhwKSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBBdm9pZCBodWdlIHNoaWZ0cyBieSBzdWJzdGl0dXRpbmcgYSB2YWx1ZSBmb3Igc21hbGwgdGhhdCBpcworICAgICAgICAgICAgICAgICAqIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSB0aGUgc2FtZSByZXN1bHRzLgorICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogYWRqZXhwKHNtYWxsKSA8IGV4cCBpZiBhbmQgb25seSBpZjoKKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqICAgYmRpZ2l0cyA8PSBwcmVjIEFORAorICAgICAgICAgICAgICAgICAqICAgYmRpZ2l0cytzaGlmdCA+PSBwcmVjKzIrc2RpZ2l0cyBBTkQKKyAgICAgICAgICAgICAgICAgKiAgIGV4cCA9IGJleHArYmRpZ2l0cy1wcmVjLTIKKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqICAgICAxMjM0NTY3MDAwMDAwMDAwICAtPiAgYmRpZ2l0cyArIHNoaWZ0CisgICAgICAgICAgICAgICAgICogICAgIC0tLS0tLS0tLS1YWDEyMzQgIC0+ICBzZGlnaXRzCisgICAgICAgICAgICAgICAgICogICAgIC0tLS0tLS0tLS1YMSAgICAgIC0+ICB0aW55LWRpZ2l0cworICAgICAgICAgICAgICAgICAqICAgICB8LSBwcmVjIC18CisgICAgICAgICAgICAgICAgICogICAgIAorICAgICAgICAgICAgICAgICAqICAgICAgT1IKKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqICAgYmRpZ2l0cyA+IHByZWMgQU5ECisgICAgICAgICAgICAgICAgICogICBzaGlmdCA+IHNkaWdpdHMgQU5ECisgICAgICAgICAgICAgICAgICogICBleHAgPSBiZXhwLTEKKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqICAgICAxMjM0NTY3ODkyMTAwMDAwICAtPiAgYmRpZ2l0cyArIHNoaWZ0CisgICAgICAgICAgICAgICAgICogICAgIC0tLS0tLS0tLS1YWDEyMzQgIC0+ICBzZGlnaXRzCisgICAgICAgICAgICAgICAgICogICAgIC0tLS0tLS0tLS1YMSAgICAgIC0+ICB0aW55LWRpZ2l0cworICAgICAgICAgICAgICAgICAqICAgICB8LSBwcmVjIC18CisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiBJZiB0aW55IGlzIHplcm8sIGFkZGluZyBvciBzdWJ0cmFjdGluZyBpcyBhIG5vLW9wLgorICAgICAgICAgICAgICAgICAqIE90aGVyd2lzZSwgYWRkaW5nIHRpbnkgZ2VuZXJhdGVzIGEgbm9uLXplcm8gZGlnaXQgZWl0aGVyCisgICAgICAgICAgICAgICAgICogYmVsb3cgdGhlIHJvdW5kaW5nIGRpZ2l0IG9yIHRoZSBsZWFzdCBzaWduaWZpY2FudCBkaWdpdAorICAgICAgICAgICAgICAgICAqIG9mIGJpZy4gV2hlbiBzdWJ0cmFjdGluZywgdGlueSBpcyBpbiB0aGUgc2FtZSBwb3NpdGlvbiBhcworICAgICAgICAgICAgICAgICAqIHRoZSBjYXJyeSB0aGF0IHdvdWxkIGJlIGdlbmVyYXRlZCBieSBzdWJ0cmFjdGluZyBzZGlnaXRzLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIG1wZF9jb3B5X2ZsYWdzKCZ0aW55LCBzbWFsbCk7CisgICAgICAgICAgICAgICAgdGlueS5leHAgPSBleHA7CisgICAgICAgICAgICAgICAgdGlueS5kaWdpdHMgPSAxOworICAgICAgICAgICAgICAgIHRpbnkubGVuID0gMTsKKyAgICAgICAgICAgICAgICB0aW55LmRhdGFbMF0gPSBtcGRfaXN6ZXJvY29lZmYoc21hbGwpID8gMCA6IDE7CisgICAgICAgICAgICAgICAgc21hbGwgPSAmdGlueTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFRoaXMgY2Fubm90IHdyYXA6IHRoZSBkaWZmZXJlbmNlIGlzIHBvc2l0aXZlIGFuZCA8PSBtYXhwcmVjICovCisgICAgICAgICAgICBzaGlmdCA9IGJpZy0+ZXhwIC0gc21hbGwtPmV4cDsKKyAgICAgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJmJpZ19hbGlnbmVkLCBiaWcsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJpZyA9ICZiaWdfYWxpZ25lZDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXN1bHQtPmV4cCA9IHNtYWxsLT5leHA7CisKKworICAgIC8qIGNvbXBhcmUgbGVuZ3RoIG9mIGNvZWZmaWNpZW50cyAqLworICAgIGlmIChiaWctPmxlbiA8IHNtYWxsLT5sZW4pIHsKKyAgICAgICAgX21wZF9wdHJzd2FwKCZiaWcsICZzbWFsbCk7CisgICAgICAgIHN3YXArKzsKKyAgICB9CisKKyAgICBuZXdzaXplID0gYmlnLT5sZW47CisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIG5ld3NpemUsIHN0YXR1cykpIHsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorCisgICAgaWYgKG1wZF9zaWduKGEpID09IHNpZ25fYikgeworCisgICAgICAgIGNhcnJ5ID0gX21wZF9iYXNlYWRkKHJlc3VsdC0+ZGF0YSwgYmlnLT5kYXRhLCBzbWFsbC0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlnLT5sZW4sIHNtYWxsLT5sZW4pOworCisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgbmV3c2l6ZSA9IGJpZy0+bGVuICsgMTsKKyAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBuZXdzaXplLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQtPmRhdGFbbmV3c2l6ZS0xXSA9IGNhcnJ5OworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LT5sZW4gPSBuZXdzaXplOworICAgICAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgc2lnbl9iKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChiaWctPmxlbiA9PSBzbWFsbC0+bGVuKSB7CisgICAgICAgICAgICBmb3IgKGk9YmlnLT5sZW4tMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYmlnLT5kYXRhW2ldICE9IHNtYWxsLT5kYXRhW2ldKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChiaWctPmRhdGFbaV0gPCBzbWFsbC0+ZGF0YVtpXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgX21wZF9wdHJzd2FwKCZiaWcsICZzbWFsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2FwKys7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgX21wZF9iYXNlc3ViKHJlc3VsdC0+ZGF0YSwgYmlnLT5kYXRhLCBzbWFsbC0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIGJpZy0+bGVuLCBzbWFsbC0+bGVuKTsKKyAgICAgICAgbmV3c2l6ZSA9IF9tcGRfcmVhbF9zaXplKHJlc3VsdC0+ZGF0YSwgYmlnLT5sZW4pOworICAgICAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgICAgICAodm9pZCltcGRfcXJlc2l6ZShyZXN1bHQsIG5ld3NpemUsIHN0YXR1cyk7CisKKyAgICAgICAgcmVzdWx0LT5sZW4gPSBuZXdzaXplOworICAgICAgICBzaWduX2IgPSAoc3dhcCAmIDEpID8gc2lnbl9iIDogbXBkX3NpZ24oYSk7CisgICAgICAgIG1wZF9zZXRfZmxhZ3MocmVzdWx0LCBzaWduX2IpOworCisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYocmVzdWx0KSkgeworICAgICAgICAgICAgbXBkX3NldF9wb3NpdGl2ZShyZXN1bHQpOworICAgICAgICAgICAgaWYgKGN0eC0+cm91bmQgPT0gTVBEX1JPVU5EX0ZMT09SKSB7CisgICAgICAgICAgICAgICAgbXBkX3NldF9uZWdhdGl2ZShyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworCitmaW5pc2g6CisgICAgbXBkX2RlbCgmYmlnX2FsaWduZWQpOworfQorCisvKiBBZGQgYSBhbmQgYi4gTm8gc3BlY2lhbHMsIG5vIGZpbmFsaXppbmcuICovCitzdGF0aWMgdm9pZAorX21wZF9xYWRkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgX21wZF9xYWRkc3ViKHJlc3VsdCwgYSwgYiwgbXBkX3NpZ24oYiksIGN0eCwgc3RhdHVzKTsKK30KKworLyogU3VidHJhY3QgYiBmcm9tIGEuIE5vIHNwZWNpYWxzLCBubyBmaW5hbGl6aW5nLiAqLworc3RhdGljIHZvaWQKK19tcGRfcXN1YihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgICBfbXBkX3FhZGRzdWIocmVzdWx0LCBhLCBiLCAhbXBkX3NpZ24oYiksIGN0eCwgc3RhdHVzKTsKK30KKworLyogQWRkIGEgYW5kIGIuICovCit2b2lkCittcGRfcWFkZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgX21wZF9xYWRkc3ViX2luZihyZXN1bHQsIGEsIGIsIG1wZF9zaWduKGIpLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX21wZF9xYWRkc3ViKHJlc3VsdCwgYSwgYiwgbXBkX3NpZ24oYiksIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBBZGQgYSBhbmQgYi4gU2V0IE5hTi9JbnZhbGlkX29wZXJhdGlvbiBpZiB0aGUgcmVzdWx0IGlzIGluZXhhY3QuICovCitzdGF0aWMgdm9pZAorX21wZF9xYWRkX2V4YWN0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisKKyAgICBtcGRfcWFkZChyZXN1bHQsIGEsIGIsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICpzdGF0dXMgfD0gd29ya3N0YXR1czsKKyAgICBpZiAod29ya3N0YXR1cyAmIChNUERfSW5leGFjdHxNUERfUm91bmRlZHxNUERfQ2xhbXBlZCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgIH0KK30KKworLyogU3VidHJhY3QgYiBmcm9tIGEuICovCit2b2lkCittcGRfcXN1YihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgX21wZF9xYWRkc3ViX2luZihyZXN1bHQsIGEsIGIsICFtcGRfc2lnbihiKSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9tcGRfcWFkZHN1YihyZXN1bHQsIGEsIGIsICFtcGRfc2lnbihiKSwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIFN1YnRyYWN0IGIgZnJvbSBhLiBTZXQgTmFOL0ludmFsaWRfb3BlcmF0aW9uIGlmIHRoZSByZXN1bHQgaXMgaW5leGFjdC4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FzdWJfZXhhY3QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKworICAgIG1wZF9xc3ViKHJlc3VsdCwgYSwgYiwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgKnN0YXR1cyB8PSB3b3Jrc3RhdHVzOworICAgIGlmICh3b3Jrc3RhdHVzICYgKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkfE1QRF9DbGFtcGVkKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgfQorfQorCisvKiBBZGQgZGVjaW1hbCBhbmQgbXBkX3NzaXplX3QuICovCit2b2lkCittcGRfcWFkZF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwKKyAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3NzaXplKCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FhZGQocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKKy8qIEFkZCBkZWNpbWFsIGFuZCBtcGRfdWludF90LiAqLwordm9pZAorbXBkX3FhZGRfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGJiLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9xc3NldF91aW50KCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FhZGQocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKKy8qIFN1YnRyYWN0IG1wZF9zc2l6ZV90IGZyb20gZGVjaW1hbC4gKi8KK3ZvaWQKK21wZF9xc3ViX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLAorICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyhiYiwwLDAsMCwwKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfcXNzZXRfc3NpemUoJmJiLCBiLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcXN1YihyZXN1bHQsIGEsICZiYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJmJiKTsKK30KKworLyogU3VidHJhY3QgbXBkX3VpbnRfdCBmcm9tIGRlY2ltYWwuICovCit2b2lkCittcGRfcXN1Yl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3VpbnQoJmJiLCBiLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcXN1YihyZXN1bHQsIGEsICZiYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJmJiKTsKK30KKworLyogQWRkIGRlY2ltYWwgYW5kIGludDMyX3QuICovCit2b2lkCittcGRfcWFkZF9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FhZGRfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIEFkZCBkZWNpbWFsIGFuZCB1aW50MzJfdC4gKi8KK3ZvaWQKK21wZF9xYWRkX3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FhZGRfdWludChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworI2lmZGVmIENPTkZJR182NAorLyogQWRkIGRlY2ltYWwgYW5kIGludDY0X3QuICovCit2b2lkCittcGRfcWFkZF9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FhZGRfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIEFkZCBkZWNpbWFsIGFuZCB1aW50NjRfdC4gKi8KK3ZvaWQKK21wZF9xYWRkX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FhZGRfdWludChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKyNlbmRpZgorCisvKiBTdWJ0cmFjdCBpbnQzMl90IGZyb20gZGVjaW1hbC4gKi8KK3ZvaWQKK21wZF9xc3ViX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXN1Yl9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworLyogU3VidHJhY3QgdWludDMyX3QgZnJvbSBkZWNpbWFsLiAqLwordm9pZAorbXBkX3FzdWJfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXN1Yl91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisjaWZkZWYgQ09ORklHXzY0CisvKiBTdWJ0cmFjdCBpbnQ2NF90IGZyb20gZGVjaW1hbC4gKi8KK3ZvaWQKK21wZF9xc3ViX2k2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50NjRfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXN1Yl9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworLyogU3VidHJhY3QgdWludDY0X3QgZnJvbSBkZWNpbWFsLiAqLwordm9pZAorbXBkX3FzdWJfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXN1Yl91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorI2VuZGlmCisKKworLyogRGl2aWRlIGluZmluaXRpZXMuICovCitzdGF0aWMgdm9pZAorX21wZF9xZGl2X2luZihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBtcGRfc2lnbihhKV5tcGRfc2lnbihiKSwgTVBEX0lORik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KG1wZF9pc2luZmluaXRlKGIpKTsKKyAgICBfc2V0dHJpcGxlKHJlc3VsdCwgbXBkX3NpZ24oYSlebXBkX3NpZ24oYiksIDAsIG1wZF9ldGlueShjdHgpKTsKKyAgICAqc3RhdHVzIHw9IE1QRF9DbGFtcGVkOworfQorCitlbnVtIHtOT19JREVBTF9FWFAsIFNFVF9JREVBTF9FWFB9OworLyogRGl2aWRlIGEgYnkgYi4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FkaXYoaW50IGFjdGlvbiwgbXBkX3QgKnEsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TVEFUSUMoYWxpZ25lZCwwLDAsMCwwKTsKKyAgICBtcGRfdWludF90IGxkOworICAgIG1wZF9zc2l6ZV90IHNoaWZ0LCBleHAsIHR6OworICAgIG1wZF9zc2l6ZV90IG5ld3NpemU7CisgICAgbXBkX3NzaXplX3QgaWRlYWxfZXhwOworICAgIG1wZF91aW50X3QgcmVtOworICAgIHVpbnQ4X3Qgc2lnbl9hID0gbXBkX3NpZ24oYSk7CisgICAgdWludDhfdCBzaWduX2IgPSBtcGRfc2lnbihiKTsKKworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHEsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIF9tcGRfcWRpdl9pbmYocSwgYSwgYiwgY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHEsIE1QRF9EaXZpc2lvbl91bmRlZmluZWQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChxLCBzaWduX2Fec2lnbl9iLCBNUERfSU5GKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0RpdmlzaW9uX2J5X3plcm87CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIGV4cCA9IGEtPmV4cCAtIGItPmV4cDsKKyAgICAgICAgX3NldHRyaXBsZShxLCBzaWduX2Fec2lnbl9iLCAwLCBleHApOworICAgICAgICBtcGRfcWZpbmFsaXplKHEsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNoaWZ0ID0gKGItPmRpZ2l0cyAtIGEtPmRpZ2l0cykgKyBjdHgtPnByZWMgKyAxOworICAgIGlkZWFsX2V4cCA9IGEtPmV4cCAtIGItPmV4cDsKKyAgICBleHAgPSBpZGVhbF9leHAgLSBzaGlmdDsKKyAgICBpZiAoc2hpZnQgPiAwKSB7CisgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJmFsaWduZWQsIGEsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgICAgIGEgPSAmYWxpZ25lZDsKKyAgICB9CisgICAgZWxzZSBpZiAoc2hpZnQgPCAwKSB7CisgICAgICAgIHNoaWZ0ID0gLXNoaWZ0OworICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKCZhbGlnbmVkLCBiLCBzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHEsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgICAgICBiID0gJmFsaWduZWQ7CisgICAgfQorCisKKyAgICBuZXdzaXplID0gYS0+bGVuIC0gYi0+bGVuICsgMTsKKyAgICBpZiAoKHEgIT0gYiAmJiBxICE9IGEpIHx8IChxID09IGIgJiYgbmV3c2l6ZSA+IGItPmxlbikpIHsKKyAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZShxLCBuZXdzaXplLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgfQorCisKKyAgICBpZiAoYi0+bGVuID09IDEpIHsKKyAgICAgICAgcmVtID0gX21wZF9zaG9ydGRpdihxLT5kYXRhLCBhLT5kYXRhLCBhLT5sZW4sIGItPmRhdGFbMF0pOworICAgIH0KKyAgICBlbHNlIGlmIChiLT5sZW4gPD0gTVBEX05FV1RPTkRJVl9DVVRPRkYpIHsKKyAgICAgICAgaW50IHJldCA9IF9tcGRfYmFzZWRpdm1vZChxLT5kYXRhLCBOVUxMLCBhLT5kYXRhLCBiLT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEtPmxlbiwgYi0+bGVuKTsKKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihxLCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICAgICAgcmVtID0gcmV0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgTVBEX05FV19TVEFUSUMociwwLDAsMCwwKTsKKyAgICAgICAgX21wZF9iYXNlX25kaXZtb2QocSwgJnIsIGEsIGIsIHN0YXR1cyk7CisgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHEpIHx8IG1wZF9pc3NwZWNpYWwoJnIpKSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChxLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgIG1wZF9kZWwoJnIpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICAgICAgcmVtID0gIW1wZF9pc3plcm9jb2VmZigmcik7CisgICAgICAgIG1wZF9kZWwoJnIpOworICAgICAgICBuZXdzaXplID0gcS0+bGVuOworICAgIH0KKworICAgIG5ld3NpemUgPSBfbXBkX3JlYWxfc2l6ZShxLT5kYXRhLCBuZXdzaXplKTsKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xcmVzaXplKHEsIG5ld3NpemUsIHN0YXR1cyk7CisgICAgbXBkX3NldF9mbGFncyhxLCBzaWduX2Fec2lnbl9iKTsKKyAgICBxLT5sZW4gPSBuZXdzaXplOworICAgIG1wZF9zZXRkaWdpdHMocSk7CisKKyAgICBzaGlmdCA9IGlkZWFsX2V4cCAtIGV4cDsKKyAgICBpZiAocmVtKSB7CisgICAgICAgIGxkID0gbXBkX2xzZChxLT5kYXRhWzBdKTsKKyAgICAgICAgaWYgKGxkID09IDAgfHwgbGQgPT0gNSkgeworICAgICAgICAgICAgcS0+ZGF0YVswXSArPSAxOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBTRVRfSURFQUxfRVhQICYmIHNoaWZ0ID4gMCkgeworICAgICAgICB0eiA9IG1wZF90cmFpbF96ZXJvcyhxKTsKKyAgICAgICAgc2hpZnQgPSAodHogPiBzaGlmdCkgPyBzaGlmdCA6IHR6OworICAgICAgICBtcGRfcXNoaWZ0cl9pbnBsYWNlKHEsIHNoaWZ0KTsKKyAgICAgICAgZXhwICs9IHNoaWZ0OworICAgIH0KKworICAgIHEtPmV4cCA9IGV4cDsKKworCitmaW5pc2g6CisgICAgbXBkX2RlbCgmYWxpZ25lZCk7CisgICAgbXBkX3FmaW5hbGl6ZShxLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIERpdmlkZSBhIGJ5IGIuICovCit2b2lkCittcGRfcWRpdihtcGRfdCAqcSwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIF9tcGRfcWRpdihTRVRfSURFQUxfRVhQLCBxLCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIEludGVybmFsIGZ1bmN0aW9uLiAqLworc3RhdGljIHZvaWQKK19tcGRfcWRpdm1vZChtcGRfdCAqcSwgbXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TVEFUSUMoYWxpZ25lZCwwLDAsMCwwKTsKKyAgICBtcGRfc3NpemVfdCBxc2l6ZSwgcnNpemU7CisgICAgbXBkX3NzaXplX3QgaWRlYWxfZXhwLCBleHBkaWZmLCBzaGlmdDsKKyAgICB1aW50OF90IHNpZ25fYSA9IG1wZF9zaWduKGEpOworICAgIHVpbnQ4X3Qgc2lnbl9hYiA9IG1wZF9zaWduKGEpXm1wZF9zaWduKGIpOworCisKKyAgICBpZGVhbF9leHAgPSAoYS0+ZXhwID4gYi0+ZXhwKSA/ICBiLT5leHAgOiBhLT5leHA7CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBpZiAoIW1wZF9xY29weShyLCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgICAgIHItPmV4cCA9IGlkZWFsX2V4cDsKKyAgICAgICAgX3NldHRyaXBsZShxLCBzaWduX2FiLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGV4cGRpZmYgPSBtcGRfYWRqZXhwKGEpIC0gbXBkX2FkamV4cChiKTsKKyAgICBpZiAoZXhwZGlmZiA8IDApIHsKKyAgICAgICAgaWYgKGEtPmV4cCA+IGItPmV4cCkgeworICAgICAgICAgICAgLyogcG9zaXRpdmUgYW5kIGxlc3MgdGhhbiBiLT5kaWdpdHMgLSBhLT5kaWdpdHMgKi8KKyAgICAgICAgICAgIHNoaWZ0ID0gYS0+ZXhwIC0gYi0+ZXhwOworICAgICAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bChyLCBhLCBzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgci0+ZXhwID0gaWRlYWxfZXhwOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFtcGRfcWNvcHkociwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIF9zZXR0cmlwbGUocSwgc2lnbl9hYiwgMCwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGV4cGRpZmYgPiBjdHgtPnByZWMpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfRGl2aXNpb25faW1wb3NzaWJsZTsKKyAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgfQorCisKKyAgICAvKgorICAgICAqIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZToKKyAgICAgKiAgICgxKSAwIDw9IGEtPmV4cCArIGEtPmRpZ2l0cyAtIGItPmV4cCAtIGItPmRpZ2l0cyA8PSBwcmVjCisgICAgICogICAoMikgYS0+ZXhwIC0gYi0+ZXhwID49IGItPmRpZ2l0cyAtIGEtPmRpZ2l0cworICAgICAqICAgKDMpIGEtPmV4cCAtIGItPmV4cCA8PSBwcmVjICsgYi0+ZGlnaXRzIC0gYS0+ZGlnaXRzCisgICAgICovCisgICAgaWYgKGEtPmV4cCAhPSBiLT5leHApIHsKKyAgICAgICAgc2hpZnQgPSBhLT5leHAgLSBiLT5leHA7CisgICAgICAgIGlmIChzaGlmdCA+IDApIHsKKyAgICAgICAgICAgIC8qIGJ5ICgzKSwgYWZ0ZXIgdGhlIHNoaWZ0IGEtPmRpZ2l0cyA8PSBwcmVjICsgYi0+ZGlnaXRzICovCisgICAgICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKCZhbGlnbmVkLCBhLCBzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYSA9ICZhbGlnbmVkOworICAgICAgICB9CisgICAgICAgIGVsc2UgIHsKKyAgICAgICAgICAgIHNoaWZ0ID0gLXNoaWZ0OworICAgICAgICAgICAgLyogYnkgKDIpLCBhZnRlciB0aGUgc2hpZnQgYi0+ZGlnaXRzIDw9IGEtPmRpZ2l0cyAqLworICAgICAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmYWxpZ25lZCwgYiwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGIgPSAmYWxpZ25lZDsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgcXNpemUgPSBhLT5sZW4gLSBiLT5sZW4gKyAxOworICAgIGlmICghKHEgPT0gYSAmJiBxc2l6ZSA8IGEtPmxlbikgJiYgIShxID09IGIgJiYgcXNpemUgPCBiLT5sZW4pKSB7CisgICAgICAgIGlmICghbXBkX3FyZXNpemUocSwgcXNpemUsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgcnNpemUgPSBiLT5sZW47CisgICAgaWYgKCEociA9PSBhICYmIHJzaXplIDwgYS0+bGVuKSkgeworICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHIsIHJzaXplLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChiLT5sZW4gPT0gMSkgeworICAgICAgICBpZiAoYS0+bGVuID09IDEpIHsKKyAgICAgICAgICAgIF9tcGRfZGl2X3dvcmQoJnEtPmRhdGFbMF0sICZyLT5kYXRhWzBdLCBhLT5kYXRhWzBdLCBiLT5kYXRhWzBdKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHItPmRhdGFbMF0gPSBfbXBkX3Nob3J0ZGl2KHEtPmRhdGEsIGEtPmRhdGEsIGEtPmxlbiwgYi0+ZGF0YVswXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoYi0+bGVuIDw9IE1QRF9ORVdUT05ESVZfQ1VUT0ZGKSB7CisgICAgICAgIGludCByZXQ7CisgICAgICAgIHJldCA9IF9tcGRfYmFzZWRpdm1vZChxLT5kYXRhLCByLT5kYXRhLCBhLT5kYXRhLCBiLT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS0+bGVuLCBiLT5sZW4pOworICAgICAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX21wZF9iYXNlX25kaXZtb2QocSwgciwgYSwgYiwgc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocSkgfHwgbXBkX2lzc3BlY2lhbChyKSkgeworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcXNpemUgPSBxLT5sZW47CisgICAgICAgIHJzaXplID0gci0+bGVuOworICAgIH0KKworICAgIHFzaXplID0gX21wZF9yZWFsX3NpemUocS0+ZGF0YSwgcXNpemUpOworICAgIC8qIHJlc2l6ZSB0byBzbWFsbGVyIGNhbm5vdCBmYWlsICovCisgICAgbXBkX3FyZXNpemUocSwgcXNpemUsIHN0YXR1cyk7CisgICAgcS0+bGVuID0gcXNpemU7CisgICAgbXBkX3NldGRpZ2l0cyhxKTsKKyAgICBtcGRfc2V0X2ZsYWdzKHEsIHNpZ25fYWIpOworICAgIHEtPmV4cCA9IDA7CisgICAgaWYgKHEtPmRpZ2l0cyA+IGN0eC0+cHJlYykgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlOworICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICB9CisKKyAgICByc2l6ZSA9IF9tcGRfcmVhbF9zaXplKHItPmRhdGEsIHJzaXplKTsKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xcmVzaXplKHIsIHJzaXplLCBzdGF0dXMpOworICAgIHItPmxlbiA9IHJzaXplOworICAgIG1wZF9zZXRkaWdpdHMocik7CisgICAgbXBkX3NldF9mbGFncyhyLCBzaWduX2EpOworICAgIHItPmV4cCA9IGlkZWFsX2V4cDsKKworb3V0OgorICAgIG1wZF9kZWwoJmFsaWduZWQpOworICAgIHJldHVybjsKKworbmFucmVzdWx0OgorICAgIG1wZF9zZXRzcGVjaWFsKHEsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgIG1wZF9zZXRzcGVjaWFsKHIsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgIGdvdG8gb3V0OworfQorCisvKiBJbnRlZ2VyIGRpdmlzaW9uIHdpdGggcmVtYWluZGVyLiAqLwordm9pZAorbXBkX3FkaXZtb2QobXBkX3QgKnEsIG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDhfdCBzaWduID0gbXBkX3NpZ24oYSlebXBkX3NpZ24oYik7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocSwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkociwgcSwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHEsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocSwgc2lnbiwgTVBEX0lORik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgaWYgKCFtcGRfcWNvcHkociwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIG1wZF9zZXRlcnJvcihxLCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1wZF9xZmluYWxpemUociwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgX3NldHRyaXBsZShxLCBzaWduLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvKiBkZWJ1ZyAqLworICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocSwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0RpdmlzaW9uX3VuZGVmaW5lZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHEsIHNpZ24sIE1QRF9JTkYpOworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwociwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgICAgICAqc3RhdHVzIHw9IChNUERfRGl2aXNpb25fYnlfemVyb3xNUERfSW52YWxpZF9vcGVyYXRpb24pOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX3FkaXZtb2QocSwgciwgYSwgYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocSwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUociwgY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcWRpdmludChtcGRfdCAqcSwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfU1RBVElDKHIsMCwwLDAsMCk7CisgICAgdWludDhfdCBzaWduID0gbXBkX3NpZ24oYSlebXBkX3NpZ24oYik7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocSwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpICYmIG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocSwgc2lnbiwgTVBEX0lORik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHEsIHNpZ24sIDAsIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8qIGRlYnVnICovCisgICAgICAgIGFib3J0KCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHEsIHNpZ24sIE1QRF9JTkYpOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfRGl2aXNpb25fYnlfemVybzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICBfbXBkX3FkaXZtb2QocSwgJnIsIGEsIGIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZyKTsKKyAgICBtcGRfcWZpbmFsaXplKHEsIGN0eCwgc3RhdHVzKTsKK30KKworLyogRGl2aWRlIGRlY2ltYWwgYnkgbXBkX3NzaXplX3QuICovCit2b2lkCittcGRfcWRpdl9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwKKyAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3NzaXplKCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FkaXYocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKKy8qIERpdmlkZSBkZWNpbWFsIGJ5IG1wZF91aW50X3QuICovCit2b2lkCittcGRfcWRpdl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3VpbnQoJmJiLCBiLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcWRpdihyZXN1bHQsIGEsICZiYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJmJiKTsKK30KKworLyogRGl2aWRlIGRlY2ltYWwgYnkgaW50MzJfdC4gKi8KK3ZvaWQKK21wZF9xZGl2X2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcWRpdl9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworLyogRGl2aWRlIGRlY2ltYWwgYnkgdWludDMyX3QuICovCit2b2lkCittcGRfcWRpdl91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xZGl2X3VpbnQocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKyNpZmRlZiBDT05GSUdfNjQKKy8qIERpdmlkZSBkZWNpbWFsIGJ5IGludDY0X3QuICovCit2b2lkCittcGRfcWRpdl9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FkaXZfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIERpdmlkZSBkZWNpbWFsIGJ5IHVpbnQ2NF90LiAqLwordm9pZAorbXBkX3FkaXZfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcWRpdl91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorI2VuZGlmCisKKy8qIFBhZCB0aGUgcmVzdWx0IHdpdGggdHJhaWxpbmcgemVyb3MgaWYgaXQgaGFzIGZld2VyIGRpZ2l0cyB0aGFuIHByZWMuICovCitzdGF0aWMgdm9pZAorX21wZF96ZXJvcGFkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoIW1wZF9pc3NwZWNpYWwocmVzdWx0KSAmJiAhbXBkX2lzemVybyhyZXN1bHQpICYmCisgICAgICAgIHJlc3VsdC0+ZGlnaXRzIDwgY3R4LT5wcmVjKSB7CisgICAgICAgbXBkX3NzaXplX3Qgc2hpZnQgPSBjdHgtPnByZWMgLSByZXN1bHQtPmRpZ2l0czsKKyAgICAgICBtcGRfcXNoaWZ0bChyZXN1bHQsIHJlc3VsdCwgc2hpZnQsIHN0YXR1cyk7CisgICAgICAgcmVzdWx0LT5leHAgLT0gc2hpZnQ7CisgICAgfQorfQorCisvKiBDaGVjayBpZiB0aGUgcmVzdWx0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb25lLiAqLworc3RhdGljIGludAorX21wZF9xZXhwX2NoZWNrX29uZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfQ09OU1QobGltLDAsLShjdHgtPnByZWMrMSksMSwxLDEsOSk7CisgICAgTVBEX05FV19TSEFSRUQoYWEsIGEpOworCisgICAgbXBkX3NldF9wb3NpdGl2ZSgmYWEpOworCisgICAgLyogYWJzKGEpIDw9IDkgKiAxMCoqKC1wcmVjLTEpICovCisgICAgaWYgKF9tcGRfY21wKCZhYSwgJmxpbSkgPD0gMCkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgMCwgMSwgMCk7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX1JvdW5kZWR8TVBEX0luZXhhY3Q7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICogR2V0IHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBmb3IgdGhlIEhvcm5lciBzY2hlbWUgaW4gX21wZF9xZXhwKCkuCisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3NzaXplX3QKK19tcGRfZ2V0X2V4cF9pdGVyYXRpb25zKGNvbnN0IG1wZF90ICpyLCBtcGRfc3NpemVfdCBwKQoreworICAgIG1wZF9zc2l6ZV90IGxvZzEwcGJ5cjsgLyogbG93ZXIgYm91bmQgZm9yIGxvZzEwKHAgLyBhYnMocikpICovCisgICAgbXBkX3NzaXplX3QgbjsKKworICAgIGFzc2VydChwID49IDEwKTsKKyAgICBhc3NlcnQoIW1wZF9pc3plcm8ocikpOworICAgIGFzc2VydCgtcCA8IG1wZF9hZGpleHAocikgJiYgbXBkX2FkamV4cChyKSA8PSAtMSk7CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBpZiAocCA+IChtcGRfc3NpemVfdCkoMVVMTDw8NTIpKSB7CisgICAgICAgIHJldHVybiBNUERfU1NJWkVfTUFYOworICAgIH0KKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBMb3dlciBib3VuZCBmb3IgbG9nMTAocCAvIGFicyhyKSk6IGFkamV4cChwKSAtIChhZGpleHAocikgKyAxKQorICAgICAqIEF0IHRoaXMgcG9pbnQgKGZvciBDT05GSUdfNjQsIENPTkZJR18zMiBpcyBub3QgcHJvYmxlbWF0aWMpOgorICAgICAqICAgIDEpIDEwIDw9IHAgPD0gMioqNTIKKyAgICAgKiAgICAyKSAtcCA8IGFkamV4cChyKSA8PSAtMQorICAgICAqICAgIDMpIDEgPD0gbG9nMTBwYnlyIDw9IDIqKjUyICsgMTQKKyAgICAgKi8KKyAgICBsb2cxMHBieXIgPSAobXBkX3dvcmRfZGlnaXRzKHApLTEpIC0gKG1wZF9hZGpleHAocikrMSk7CisKKyAgICAvKgorICAgICAqIFRoZSBudW1lcmF0b3IgaW4gdGhlIHBhcGVyIGlzIDEuNDM1ICogcCAtIDEuMTgyLCBjYWxjdWxhdGVkCisgICAgICogZXhhY3RseS4gV2UgY29tcGVuc2F0ZSBmb3Igcm91bmRpbmcgZXJyb3JzIGJ5IHVzaW5nIDEuNDM1MDMuCisgICAgICogQUNMMiBwcm9vZnM6CisgICAgICogICAgMSkgZXhwLWl0ZXItYXBwcm94LWxvd2VyLWJvdW5kOiBUaGUgdGVybSBiZWxvdyBldmFsdWF0ZWQKKyAgICAgKiAgICAgICBpbiA1My1iaXQgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBpcyBncmVhdGVyIHRoYW4gb3IKKyAgICAgKiAgICAgICBlcXVhbCB0byB0aGUgZXhhY3QgdGVybSB1c2VkIGluIHRoZSBwYXBlci4KKyAgICAgKiAgICAyKSBleHAtaXRlci1hcHByb3gtdXBwZXItYm91bmQ6IFRoZSB0ZXJtIGJlbG93IGlzIGxlc3MgdGhhbgorICAgICAqICAgICAgIG9yIGVxdWFsIHRvIDMvMiAqIHAgPD0gMy8yICogMioqNTIuCisgICAgICovCisgICAgbiA9IChtcGRfc3NpemVfdCljZWlsKCgxLjQzNTAzKihkb3VibGUpcCAtIDEuMTgyKSAvIChkb3VibGUpbG9nMTBwYnlyKTsKKyAgICByZXR1cm4gbiA+PSAzID8gbiA6IDM7Cit9CisKKy8qCisgKiBJbnRlcm5hbCBmdW5jdGlvbiwgc3BlY2lhbHMgaGF2ZSBiZWVuIGRlYWx0IHdpdGguIEFwYXJ0IGZyb20gT3ZlcmZsb3cKKyAqIGFuZCBVbmRlcmZsb3csIHR3byBjYXNlcyBtdXN0IGJlIGNvbnNpZGVyZWQgZm9yIHRoZSBlcnJvciBvZiB0aGUgcmVzdWx0OgorICoKKyAqICAgMSkgYWJzKGEpIDw9IDkgKiAxMCoqKC1wcmVjLTEpICA9PT4gIHJlc3VsdCA9PSAxCisgKgorICogICAgICBBYnNvbHV0ZSBlcnJvcjogYWJzKDEgLSBlKip4KSA8IDEwKiooLXByZWMpCisgKiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiAgIDIpIGFicyhhKSA+IDkgKiAxMCoqKC1wcmVjLTEpCisgKgorICogICAgICBSZWxhdGl2ZSBlcnJvcjogYWJzKHJlc3VsdCAtIGUqKngpIDwgMC41ICogMTAqKigtcHJlYykgKiBlKip4CisgKiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGUgYWxnb3JpdGhtIGlzIGZyb20gSHVsbCZBYnJoYW0sIFZhcmlhYmxlIFByZWNpc2lvbiBFeHBvbmVudGlhbCBGdW5jdGlvbiwKKyAqIEFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlLCBWb2wuIDEyLCBOby4gMiwgSnVuZSAxOTg2LgorICoKKyAqIE1haW4gZGlmZmVyZW5jZXM6CisgKgorICogIC0gVGhlIG51bWJlciBvZiBpdGVyYXRpb25zIGZvciB0aGUgSG9ybmVyIHNjaGVtZSBpcyBjYWxjdWxhdGVkIHVzaW5nCisgKiAgICA1My1iaXQgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYy4KKyAqCisgKiAgLSBJbiB0aGUgZXJyb3IgYW5hbHlzaXMgZm9yIEVSIChyZWxhdGl2ZSBlcnJvciBhY2N1bXVsYXRlZCBpbiB0aGUKKyAqICAgIGV2YWx1YXRpb24gb2YgdGhlIHRydW5jYXRlZCBzZXJpZXMpIHRoZSByZWR1Y2VkIG9wZXJhbmQgciBtYXkKKyAqICAgIGhhdmUgYW55IG51bWJlciBvZiBkaWdpdHMuCisgKiAgICBBQ0wyIHByb29mOiBleHBvbmVudC1yZWxhdGl2ZS1lcnJvcgorICoKKyAqICAtIFRoZSBhbmFseXNpcyBmb3IgZWFybHkgYWJvcnRpb24gaGFzIGJlZW4gYWRhcHRlZCBmb3IgdGhlIG1wZF90CisgKiAgICByYW5nZXMuCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FleHAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBNUERfTkVXX1NUQVRJQyh0bXAsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUMoc3VtLDAsMCwwLDApOworICAgIE1QRF9ORVdfQ09OU1Qod29yZCwwLDAsMSwxLDEsMSk7CisgICAgbXBkX3NzaXplX3QgaiwgbiwgdDsKKworICAgIGFzc2VydCghbXBkX2lzc3BlY2lhbChhKSk7CisKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAxLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogV2UgYXJlIGNhbGN1bGF0aW5nIGVeeCA9IGVeKHIqMTBedCkgPSAoZV5yKV4oMTBedCksIHdoZXJlIGFicyhyKSA8IDEgYW5kIHQgPj0gMC4KKyAgICAgKgorICAgICAqIElmIHQgPiAwLCB3ZSBoYXZlOgorICAgICAqCisgICAgICogICAoMSkgMC4xIDw9IHIgPCAxLCBzbyBlXjAuMSA8PSBlXnIuIElmIHQgPiBNQVhfVCwgb3ZlcmZsb3cgb2NjdXJzOgorICAgICAqCisgICAgICogICAgIE1BWC1FTUFYKzEgPCBsb2cxMChlXigwLjEqMTAqdCkpIDw9IGxvZzEwKGVeKHIqMTBedCkpIDwgYWRqZXhwKGVeKHIqMTBedCkpKzEKKyAgICAgKgorICAgICAqICAgKDIpIC0xIDwgciA8PSAtMC4xLCBzbyBlXnIgPD0gZV4tMC4xLiBJZiB0ID4gTUFYX1QsIHVuZGVyZmxvdyBvY2N1cnM6CisgICAgICoKKyAgICAgKiAgICAgYWRqZXhwKGVeKHIqMTBedCkpIDw9IGxvZzEwKGVeKHIqMTBedCkpIDw9IGxvZzEwKGVeKC0wLjEqMTBedCkpIDwgTUlOLUVUSU5ZCisgICAgICovCisjaWYgZGVmaW5lZChDT05GSUdfNjQpCisgICAgI2RlZmluZSBNUERfRVhQX01BWF9UIDE5CisjZWxpZiBkZWZpbmVkKENPTkZJR18zMikKKyAgICAjZGVmaW5lIE1QRF9FWFBfTUFYX1QgMTAKKyNlbmRpZgorICAgIHQgPSBhLT5kaWdpdHMgKyBhLT5leHA7CisgICAgdCA9ICh0ID4gMCkgPyB0IDogMDsKKyAgICBpZiAodCA+IE1QRF9FWFBfTUFYX1QpIHsKKyAgICAgICAgaWYgKG1wZF9pc3Bvc2l0aXZlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9JTkYpOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfT3ZlcmZsb3d8TVBEX0luZXhhY3R8TVBEX1JvdW5kZWQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgTVBEX1BPUywgMCwgbXBkX2V0aW55KGN0eCkpOworICAgICAgICAgICAgKnN0YXR1cyB8PSAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWR8TVBEX1N1Ym5vcm1hbHwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1QRF9VbmRlcmZsb3d8TVBEX0NsYW1wZWQpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBhYnMoYSkgPD0gOSAqIDEwKiooLXByZWMtMSkgKi8KKyAgICBpZiAoX21wZF9xZXhwX2NoZWNrX29uZShyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJndvcmtjdHgpOworICAgIHdvcmtjdHgucHJlYyA9IGN0eC0+cHJlYyArIHQgKyAyOworICAgIHdvcmtjdHgucHJlYyA9ICh3b3JrY3R4LnByZWMgPCAxMCkgPyAxMCA6IHdvcmtjdHgucHJlYzsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKworICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdC0+ZXhwIC09IHQ7CisKKyAgICAvKgorICAgICAqIEF0IHRoaXMgcG9pbnQ6CisgICAgICogICAgMSkgOSAqIDEwKiooLXByZWMtMSkgPCBhYnMoYSkKKyAgICAgKiAgICAyKSA5ICogMTAqKigtcHJlYy10LTEpIDwgYWJzKHIpCisgICAgICogICAgMykgbG9nMTAoOSkgLSBwcmVjIC0gdCAtIDEgPCBsb2cxMChhYnMocikpIDwgYWRqZXhwKGFicyhyKSkgKyAxCisgICAgICogICAgNCkgLSBwcmVjIC0gdCAtIDIgPCBhZGpleHAoYWJzKHIpKSA8PSAtMQorICAgICAqLworICAgIG4gPSBfbXBkX2dldF9leHBfaXRlcmF0aW9ucyhyZXN1bHQsIHdvcmtjdHgucHJlYyk7CisgICAgaWYgKG4gPT0gTVBEX1NTSVpFX01BWCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgcmV0dXJuOyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgfQorCisgICAgX3NldHRyaXBsZSgmc3VtLCBNUERfUE9TLCAxLCAwKTsKKworICAgIGZvciAoaiA9IG4tMTsgaiA+PSAxOyBqLS0pIHsKKyAgICAgICAgd29yZC5kYXRhWzBdID0gajsKKyAgICAgICAgbXBkX3NldGRpZ2l0cygmd29yZCk7CisgICAgICAgIG1wZF9xZGl2KCZ0bXAsIHJlc3VsdCwgJndvcmQsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICBtcGRfcWZtYSgmc3VtLCAmc3VtLCAmdG1wLCAmb25lLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICB9CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBfbXBkX3Fwb3dfdWludChyZXN1bHQsICZzdW0sIG1wZF9wb3cxMFt0XSwgTVBEX1BPUywgJndvcmtjdHgsIHN0YXR1cyk7CisjZWxzZQorICAgIGlmICh0IDw9IE1QRF9NQVhfUE9XMTApIHsKKyAgICAgICAgX21wZF9xcG93X3VpbnQocmVzdWx0LCAmc3VtLCBtcGRfcG93MTBbdF0sIE1QRF9QT1MsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdCAtPSBNUERfTUFYX1BPVzEwOworICAgICAgICBfbXBkX3Fwb3dfdWludCgmdG1wLCAmc3VtLCBtcGRfcG93MTBbTVBEX01BWF9QT1cxMF0sIE1QRF9QT1MsCisgICAgICAgICAgICAgICAgICAgICAgICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBfbXBkX3Fwb3dfdWludChyZXN1bHQsICZ0bXAsIG1wZF9wb3cxMFt0XSwgTVBEX1BPUywgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgfQorI2VuZGlmCisKKyAgICBtcGRfZGVsKCZ0bXApOworICAgIG1wZF9kZWwoJnN1bSk7CisgICAgKnN0YXR1cyB8PSAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycyk7CisgICAgKnN0YXR1cyB8PSAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWQpOworfQorCisvKiBleHAoYSkgKi8KK3ZvaWQKK21wZF9xZXhwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDAsIDApOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfSU5GKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDEsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisKKyAgICBpZiAoY3R4LT5hbGxjcikgeworICAgICAgICBNUERfTkVXX1NUQVRJQyh0MSwgMCwwLDAsMCk7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHQyLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUModWxwLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUMoYWEsIDAsMCwwLDApOworICAgICAgICBtcGRfc3NpemVfdCBwcmVjOworICAgICAgICBtcGRfc3NpemVfdCB1bHBleHA7CisgICAgICAgIHVpbnQzMl90IHdvcmtzdGF0dXM7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBhKSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xY29weSgmYWEsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGEgPSAmYWE7CisgICAgICAgIH0KKworICAgICAgICB3b3JrY3R4LmNsYW1wID0gMDsKKyAgICAgICAgcHJlYyA9IGN0eC0+cHJlYyArIDM7CisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICB3b3JrY3R4LnByZWMgPSBwcmVjOworICAgICAgICAgICAgd29ya3N0YXR1cyA9IDA7CisKKyAgICAgICAgICAgIF9tcGRfcWV4cChyZXN1bHQsIGEsICZ3b3JrY3R4LCAmd29ya3N0YXR1cyk7CisgICAgICAgICAgICAqc3RhdHVzIHw9IHdvcmtzdGF0dXM7CisKKyAgICAgICAgICAgIHVscGV4cCA9IHJlc3VsdC0+ZXhwICsgcmVzdWx0LT5kaWdpdHMgLSB3b3JrY3R4LnByZWM7CisgICAgICAgICAgICBpZiAod29ya3N0YXR1cyAmIE1QRF9VbmRlcmZsb3cpIHsKKyAgICAgICAgICAgICAgICAvKiBUaGUgZWZmZWN0aXZlIHdvcmsgcHJlY2lzaW9uIGlzIHJlc3VsdC0+ZGlnaXRzLiAqLworICAgICAgICAgICAgICAgIHVscGV4cCA9IHJlc3VsdC0+ZXhwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgX3NzZXR0cmlwbGUoJnVscCwgTVBEX1BPUywgMSwgdWxwZXhwKTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEF0IHRoaXMgcG9pbnQgWzFdOgorICAgICAgICAgICAgICogICAxKSBhYnMocmVzdWx0IC0gZSoqeCkgPCAwLjUgKiAxMCoqKC1wcmVjKSAqIGUqKngKKyAgICAgICAgICAgICAqICAgMikgcmVzdWx0IC0gdWxwIDwgZSoqeCA8IHJlc3VsdCArIHVscAorICAgICAgICAgICAgICogICAzKSByZXN1bHQgLSB1bHAgPCByZXN1bHQgPCByZXN1bHQgKyB1bHAKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBJZiByb3VuZChyZXN1bHQtdWxwKT09cm91bmQocmVzdWx0K3VscCksIHRoZW4KKyAgICAgICAgICAgICAqIHJvdW5kKHJlc3VsdCk9PXJvdW5kKGUqKngpLiBUaGVyZWZvcmUgdGhlIHJlc3VsdAorICAgICAgICAgICAgICogaXMgY29ycmVjdGx5IHJvdW5kZWQuCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogWzFdIElmIGFicyhhKSA8PSA5ICogMTAqKigtcHJlYy0xKSwgdXNlIHRoZSBhYnNvbHV0ZQorICAgICAgICAgICAgICogICAgIGVycm9yIGZvciBhIHNpbWlsYXIgYXJndW1lbnQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHdvcmtjdHgucHJlYyA9IGN0eC0+cHJlYzsKKyAgICAgICAgICAgIG1wZF9xYWRkKCZ0MSwgcmVzdWx0LCAmdWxwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIG1wZF9xc3ViKCZ0MiwgcmVzdWx0LCAmdWxwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkgfHwgbXBkX2lzemVyb2NvZWZmKHJlc3VsdCkgfHwKKyAgICAgICAgICAgICAgICBtcGRfcWNtcCgmdDEsICZ0Miwgc3RhdHVzKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgd29ya2N0eC5jbGFtcCA9IGN0eC0+Y2xhbXA7CisgICAgICAgICAgICAgICAgX21wZF96ZXJvcGFkKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgbXBkX2NoZWNrX3VuZGVyZmxvdyhyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZWMgKz0gTVBEX1JESUdJVFM7CisgICAgICAgIH0KKyAgICAgICAgbXBkX2RlbCgmdDEpOworICAgICAgICBtcGRfZGVsKCZ0Mik7CisgICAgICAgIG1wZF9kZWwoJnVscCk7CisgICAgICAgIG1wZF9kZWwoJmFhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9tcGRfcWV4cChyZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBfbXBkX3plcm9wYWQocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX2NoZWNrX3VuZGVyZmxvdyhyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgfQorfQorCisvKiBGdXNlZCBtdWx0aXBseS1hZGQ6IChhICogYikgKyBjLCB3aXRoIGEgc2luZ2xlIGZpbmFsIHJvdW5kaW5nLiAqLwordm9pZAorbXBkX3FmbWEobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfdCAqYywKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICBtcGRfdCAqY2MgPSAobXBkX3QgKiljOworCisgICAgaWYgKHJlc3VsdCA9PSBjKSB7CisgICAgICAgIGlmICgoY2MgPSBtcGRfcW5jb3B5KGMpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgX21wZF9xbXVsKHJlc3VsdCwgYSwgYiwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgaWYgKCEod29ya3N0YXR1cyZNUERfSW52YWxpZF9vcGVyYXRpb24pKSB7CisgICAgICAgIG1wZF9xYWRkKHJlc3VsdCwgcmVzdWx0LCBjYywgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgfQorCisgICAgaWYgKGNjICE9IGMpIG1wZF9kZWwoY2MpOworICAgICpzdGF0dXMgfD0gd29ya3N0YXR1czsKK30KKworLyoKKyAqIFNjaGVkdWxlIHRoZSBvcHRpbWFsIHByZWNpc2lvbiBpbmNyZWFzZSBmb3IgdGhlIE5ld3RvbiBpdGVyYXRpb24uCisgKiAgIHYgOj0gaW5wdXQgb3BlcmFuZAorICogICB6XzAgOj0gaW5pdGlhbCBhcHByb3hpbWF0aW9uCisgKiAgIGluaXRwcmVjIDo9IG5hdHVyYWwgbnVtYmVyIHN1Y2ggdGhhdCBhYnMobG9nKHYpIC0gel8wKSA8IDEwKiotaW5pdHByZWMKKyAqICAgbWF4cHJlYyA6PSB0YXJnZXQgcHJlY2lzaW9uCisgKgorICogRm9yIGNvbnZlbmllbmNlIHRoZSBvdXRwdXQga2xpc3QgY29udGFpbnMgdGhlIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXI6CisgKiAgIGtsaXN0IDo9IFtrX24tMSwgLi4uLCBrXzBdLCB3aGVyZQorICogICAgIDEpIGtfMCA8PSBpbml0cHJlYyBhbmQKKyAqICAgICAyKSBhYnMobG9nKHYpIC0gcmVzdWx0KSA8IDEwKiooLTIqa19uLTEgKyAxKSA8PSAxMCoqLW1heHByZWMuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50Citsbl9zY2hlZHVsZV9wcmVjKG1wZF9zc2l6ZV90IGtsaXN0W01QRF9NQVhfUFJFQ19MT0cyXSwgbXBkX3NzaXplX3QgbWF4cHJlYywKKyAgICAgICAgICAgICAgICAgbXBkX3NzaXplX3QgaW5pdHByZWMpCit7CisgICAgbXBkX3NzaXplX3QgazsKKyAgICBpbnQgaTsKKworICAgIGFzc2VydChtYXhwcmVjID49IDIgJiYgaW5pdHByZWMgPj0gMik7CisgICAgaWYgKG1heHByZWMgPD0gaW5pdHByZWMpIHJldHVybiAtMTsKKworICAgIGkgPSAwOyBrID0gbWF4cHJlYzsKKyAgICBkbyB7CisgICAgICAgIGsgPSAoaysyKSAvIDI7CisgICAgICAgIGtsaXN0W2krK10gPSBrOworICAgIH0gd2hpbGUgKGsgPiBpbml0cHJlYyk7CisKKyAgICByZXR1cm4gaS0xOworfQorCisvKiBUaGUgY29uc3RhbnRzIGhhdmUgYmVlbiB2ZXJpZmllZCB3aXRoIGJvdGggZGVjaW1hbC5weSBhbmQgbXBmci4gKi8KKyNpZmRlZiBDT05GSUdfNjQKKyNpZiBNUERfUkRJR0lUUyAhPSAxOQorICAjZXJyb3IgIm1wZGVjaW1hbC5jOiBNUERfUkRJR0lUUyBtdXN0IGJlIDE5LiIKKyNlbmRpZgorc3RhdGljIGNvbnN0IG1wZF91aW50X3QgbXBkX2xuMTBfZGF0YVtNUERfTUlOQUxMT0NfTUFYXSA9IHsKKyAgNjk4MzcxNjMyODk4MjE3NDQwN1VMTCwgOTA4OTcwNDI4MTk3NjMzNjU4M1VMTCwgMTUxNTk2MTEzNTY0ODQ2NTQ2MVVMTCwKKyAgNDQxNjgxNjMzNTcyNzU1NTcwM1VMTCwgMjkwMDk4ODAzOTE5NDE3MDI2NVVMTCwgMjMwNzkyNTAzNzQ3Mjk4NjUwOVVMTCwKKyAgIDEwNzU5ODQzODMxOTE5MTI5MlVMTCwgMzQ2NjYyNDEwNzE4NDY2OTIzMVVMTCwgNDQ1MDA5OTc4MTMxMTQ2OTE1OVVMTCwKKyAgOTgwNzgyODA1OTc1MTE5Mzg1NFVMTCwgNzcxMzQ1Njg2MjA5MTY3MDU4NFVMTCwgMTQ5MjE5ODg0OTk3ODc0ODg3M1VMTCwKKyAgNjUyODcyODY5NjUxMTA4NjI1N1VMTCwgMjM4NTM5MjA1MTQ0NjM0MTk3MlVMTCwgODY5MjE4MDIwNTE4OTMzOTUwN1VMTCwKKyAgNjUxODc2OTc1MTAzNzQ5NzA4OFVMTCwgMjM3NTI1MzU3NzA5NzUwNTM5NVVMTCwgOTA5NTYxMDI5OTI5MTgyNDMxOFVMTCwKKyAgIDk4Mjc0ODIzODUwNDU2NDgwMVVMTCwgNTQzODYzNTkxNzc4MTE3MDU0M1VMTCwgNzU0NzMzMTU0MTQyMTgwODQyN1VMTCwKKyAgIDc1MjM3MTAzMzMxMDExOTc4NVVMTCwgMzE3MTY0MzA5NTA1OTk1MDg3OFVMTCwgOTc4NTI2NTM4MzIwNzYwNjcyNlVMTCwKKyAgMjkzMjI1ODI3OTg1MDI1ODU1MFVMTCwgNTQ5NzM0NzcyNjYyNDI1NzA5NFVMTCwgMjk3Njk3OTUyMjExMDcxODI2NFVMTCwKKyAgOTIyMTQ3NzY1Njc2MzY5Mzg2NlVMTCwgMTk3OTY1MDA0NzE0OTUxMDUwNFVMTCwgNjY3NDE4MzQ4NTcwNDQyMjUwN1VMTCwKKyAgOTcwMjc2Njg2MDU5NTI0OTY3MVVMTCwgOTI3ODA5Njc2MjcxMjc1Nzc1M1VMTCwgOTMxNDg0ODUyNDk0ODY0NDg3MVVMTCwKKyAgNjgyNjkyODI4MDg0ODExODQyOFVMTCwgIDc1NDQwMzcwODQ3NDY5OTQwMVVMTCwgIDIzMDEwNTcwMzA4OTYzNDU3MlVMTCwKKyAgMTkyOTIwMzMzNzY1ODcxNDE2NlVMTCwgNzU4OTQwMjU2Nzc2MzExMzU2OVVMTCwgNDIwODI0MTMxNDY5NTY4OTAxNlVMTCwKKyAgMjkyMjQ1NTQ0MDU3NTg5MjU3MlVMTCwgOTM1NjczNDIwNjcwNTgxMTM2NFVMTCwgMjY4NDkxNjc0NjU1MDU4Njg1NlVMTCwKKyAgIDY0NDUwNzA2NDgwMDAyNzc1MFVMTCwgOTQ3NjgzNDYzNjE2NzkyMTAxOFVMTCwgNTY1OTEyMTM3MzQ1MDc0Nzg1NlVMTCwKKyAgMjgzNTUyMjAxMTQ4MDQ2NjM3MVVMTCwgNjQ3MDgwNjg1NTY3NzQzMjE2MlVMTCwgNzE0MTc0ODAwMzY4ODA4NDAxMlVMTCwKKyAgOTYxOTQwNDQwMDIyMjEwNTEwMVVMTCwgNTUwNDg5MzQzMTQ5MzkzOTE0N1VMTCwgNjY3NDc0NDA0MjQzMjc0MzY1MVVMTCwKKyAgMjI4NzY5ODIxOTg4Njc0NjU0M1VMTCwgNzc3MzI2Mjg4NDYxNjMzNjYyMlVMTCwgMTk4NTI4MzkzNTA1MzA4OTY1M1VMTCwKKyAgNDY4MDg0Mzc5OTg5NDgyNjIzM1VMTCwgODE2ODk0ODI5MDcyMDgzMjU1NVVMTCwgODA2NzU2NjY2Mjg3MzY5MDk4N1VMTCwKKyAgNjI0ODYzMzQwOTUyNTQ2NTA4MlVMTCwgOTgyOTgzNDE5Njc3ODQwNDIyOFVMTCwgMzUyNDgwMjM1OTk3MjA1MDg5NVVMTCwKKyAgMzMyNzkwMDk2NzU3MjYwOTY3N1VMTCwgIDExMDE0ODg2Mjg3NzI5NzYwM1VMTCwgIDE3OTkxNDU0Njg0MzY0MjA3NlVMTCwKKyAgMjMwMjU4NTA5Mjk5NDA0NTY4NFVMTAorfTsKKyNlbHNlCisjaWYgTVBEX1JESUdJVFMgIT0gOQorICAjZXJyb3IgIm1wZGVjaW1hbC5jOiBNUERfUkRJR0lUUyBtdXN0IGJlIDkuIgorI2VuZGlmCitzdGF0aWMgY29uc3QgbXBkX3VpbnRfdCBtcGRfbG4xMF9kYXRhW01QRF9NSU5BTExPQ19NQVhdID0geworICA0MDE2ODI2OTJVTCwgNzA4NDc0Njk5VUwsIDcyMDc1NDQwM1VMLCAgMzA4OTYzNDVVTCwgNjAyMzAxMDU3VUwsIDc2NTg3MTQxNlVMLAorICAxOTI5MjAzMzNVTCwgNzYzMTEzNTY5VUwsIDU4OTQwMjU2N1VMLCA5NTY4OTAxNjdVTCwgIDgyNDEzMTQ2VUwsIDU4OTI1NzI0MlVMLAorICAyNDU1NDQwNTdVTCwgODExMzY0MjkyVUwsIDczNDIwNjcwNVVMLCA4Njg1NjkzNTZVTCwgMTY3NDY1NTA1VUwsIDc3NTAyNjg0OVVMLAorICA3MDY0ODAwMDJVTCwgIDE4MDY0NDUwVUwsIDYzNjE2NzkyMVVMLCA1Njk0NzY4MzRVTCwgNzM0NTA3NDc4VUwsIDE1NjU5MTIxM1VMLAorICAxNDgwNDY2MzdVTCwgMjgzNTUyMjAxVUwsIDY3NzQzMjE2MlVMLCA0NzA4MDY4NTVVTCwgODgwODQwMTI2VUwsIDQxNzQ4MDAzNlVMLAorICAyMTA1MTAxNzFVTCwgOTQwNDQwMDIyVUwsIDkzOTE0Nzk2MVVMLCA4OTM0MzE0OTNVTCwgNDM2NTE1NTA0VUwsIDQ0MDQyNDMyN1VMLAorICA2NTQzNjY3NDdVTCwgODIxOTg4Njc0VUwsIDYyMjIyODc2OVVMLCA4ODQ2MTYzMzZVTCwgNTM3NzczMjYyVUwsIDM1MDUzMDg5NlVMLAorICAzMTk4NTI4MzlVTCwgOTg5NDgyNjIzVUwsIDQ2ODA4NDM3OVVMLCA3MjA4MzI1NTVVTCwgMTY4OTQ4MjkwVUwsIDczNjkwOTg3OFVMLAorICA2NzU2NjY2MjhVTCwgNTQ2NTA4MjgwVUwsIDg2MzM0MDk1MlVMLCA0MDQyMjg2MjRVTCwgODM0MTk2Nzc4VUwsIDUwODk1OTgyOVVMLAorICAgMjM1OTk3MjBVTCwgOTY3NzM1MjQ4VUwsICA5Njc1NzI2MFVMLCA2MDMzMzI3OTBVTCwgODYyODc3Mjk3VUwsIDc2MDExMDE0OFVMLAorICA0Njg0MzY0MjBVTCwgNDAxNzk5MTQ1VUwsIDI5OTQwNDU2OFVMLCAyMzAyNTg1MDlVTAorfTsKKyNlbmRpZgorLyogX21wZF9sbjEwIGlzIHVzZWQgZGlyZWN0bHkgZm9yIHByZWNpc2lvbnMgc21hbGxlciB0aGFuIE1JTkFMTE9DX01BWCpSRElHSVRTLgorICAgT3RoZXJ3aXNlLCBpdCBzZXJ2ZXMgYXMgdGhlIGluaXRpYWwgYXBwcm94aW1hdGlvbiBmb3IgY2FsY3VsYXRpbmcgbG4oMTApLiAqLworc3RhdGljIGNvbnN0IG1wZF90IF9tcGRfbG4xMCA9IHsKKyAgTVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwgLShNUERfTUlOQUxMT0NfTUFYKk1QRF9SRElHSVRTLTEpLAorICBNUERfTUlOQUxMT0NfTUFYKk1QRF9SRElHSVRTLCBNUERfTUlOQUxMT0NfTUFYLCBNUERfTUlOQUxMT0NfTUFYLAorICAobXBkX3VpbnRfdCAqKW1wZF9sbjEwX2RhdGEKK307CisKKy8qCisgKiBTZXQgJ3Jlc3VsdCcgdG8gbG9nKDEwKS4KKyAqICAgVWxwIGVycm9yOiBhYnMocmVzdWx0IC0gbG9nKDEwKSkgPCB1bHAobG9nKDEwKSkKKyAqICAgUmVsYXRpdmUgZXJyb3I6IGFicyhyZXN1bHQgLSBsb2coMTApKSA8IDUgKiAxMCoqLXByZWMgKiBsb2coMTApCisgKgorICogTk9URTogVGhlIHJlbGF0aXZlIGVycm9yIGlzIG5vdCBkZXJpdmVkIGZyb20gdGhlIHVscCBlcnJvciwgYnV0CisgKiBjYWxjdWxhdGVkIHNlcGFyYXRlbHkgdXNpbmcgdGhlIGZhY3QgdGhhdCAyMy8xMCA8IGxvZygxMCkgPCAyNC8xMC4KKyAqLwordm9pZAorbXBkX3FsbjEwKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHByZWMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB2YXJjb250ZXh0LCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKHRtcCwgMCwwLDAsMCk7CisgICAgTVBEX05FV19DT05TVChzdGF0aWMxMCwgMCwwLDIsMSwxLDEwKTsKKyAgICBtcGRfc3NpemVfdCBrbGlzdFtNUERfTUFYX1BSRUNfTE9HMl07CisgICAgbXBkX3VpbnRfdCBybmQ7CisgICAgbXBkX3NzaXplX3Qgc2hpZnQ7CisgICAgaW50IGk7CisKKyAgICBhc3NlcnQocHJlYyA+PSAxKTsKKworICAgIHNoaWZ0ID0gTVBEX01JTkFMTE9DX01BWCpNUERfUkRJR0lUUy1wcmVjOworICAgIHNoaWZ0ID0gc2hpZnQgPCAwID8gMCA6IHNoaWZ0OworCisgICAgcm5kID0gbXBkX3FzaGlmdHIocmVzdWx0LCAmX21wZF9sbjEwLCBzaGlmdCwgc3RhdHVzKTsKKyAgICBpZiAocm5kID09IE1QRF9VSU5UX01BWCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdC0+ZXhwID0gLShyZXN1bHQtPmRpZ2l0cy0xKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBpZiAocHJlYyA8IE1QRF9NSU5BTExPQ19NQVgqTVBEX1JESUdJVFMpIHsKKyAgICAgICAgbWF4Y29udGV4dC5wcmVjID0gcHJlYzsKKyAgICAgICAgX21wZF9hcHBseV9yb3VuZF9leGNlc3MocmVzdWx0LCBybmQsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfUm91bmRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmdmFyY29udGV4dCk7CisgICAgdmFyY29udGV4dC5yb3VuZCA9IE1QRF9ST1VORF9UUlVOQzsKKworICAgIGkgPSBsbl9zY2hlZHVsZV9wcmVjKGtsaXN0LCBwcmVjKzIsIC1yZXN1bHQtPmV4cCk7CisgICAgZm9yICg7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIHZhcmNvbnRleHQucHJlYyA9IDIqa2xpc3RbaV0rMzsKKyAgICAgICAgcmVzdWx0LT5mbGFncyBePSBNUERfTkVHOworICAgICAgICBfbXBkX3FleHAoJnRtcCwgcmVzdWx0LCAmdmFyY29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgcmVzdWx0LT5mbGFncyBePSBNUERfTkVHOworICAgICAgICBtcGRfcW11bCgmdG1wLCAmc3RhdGljMTAsICZ0bXAsICZ2YXJjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBtcGRfcXN1YigmdG1wLCAmdG1wLCAmb25lLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FhZGQocmVzdWx0LCByZXN1bHQsICZ0bXAsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9kZWwoJnRtcCk7CisgICAgbWF4Y29udGV4dC5wcmVjID0gcHJlYzsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJm1heGNvbnRleHQsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBJbml0aWFsIGFwcHJveGltYXRpb25zIGZvciB0aGUgbG4oKSBpdGVyYXRpb24uIFRoZSB2YWx1ZXMgaGF2ZSB0aGUKKyAqIGZvbGxvd2luZyBwcm9wZXJ0aWVzIChlc3RhYmxpc2hlZCB3aXRoIGJvdGggZGVjaW1hbC5weSBhbmQgbXBmcik6CisgKgorICogSW5kZXggMCAtIDQwMCwgbG9nYXJpdGhtcyBvZiB4IGluIFsxLjAwLCA1LjAwXToKKyAqICAgYWJzKGxuYXBwcm94W2ldICogMTAqKi0zIC0gbG9nKChpKzEwMCkvMTAwKSkgPCAxMCoqLTIKKyAqICAgYWJzKGxuYXBwcm94W2ldICogMTAqKi0zIC0gbG9nKChpKzErMTAwKS8xMDApKSA8IDEwKiotMgorICoKKyAqIEluZGV4IDQwMSAtIDg5OSwgbG9nYXJpdGhtcyBvZiB4IGluICgwLjUwMCwgMC45OTldOgorICogICBhYnMoLWxuYXBwcm94W2ldICogMTAqKi0zIC0gbG9nKChpKzEwMCkvMTAwMCkpIDwgMTAqKi0yCisgKiAgIGFicygtbG5hcHByb3hbaV0gKiAxMCoqLTMgLSBsb2coKGkrMSsxMDApLzEwMDApKSA8IDEwKiotMgorICovCitzdGF0aWMgY29uc3QgdWludDE2X3QgbG5hcHByb3hbOTAwXSA9IHsKKyAgLyogaW5kZXggMCAtIDQwMDogbG9nKChpKzEwMCkvMTAwKSAqIDEwMDAgKi8KKyAgMCwgMTAsIDIwLCAzMCwgMzksIDQ5LCA1OCwgNjgsIDc3LCA4NiwgOTUsIDEwNCwgMTEzLCAxMjIsIDEzMSwgMTQwLCAxNDgsIDE1NywKKyAgMTY2LCAxNzQsIDE4MiwgMTkxLCAxOTksIDIwNywgMjE1LCAyMjMsIDIzMSwgMjM5LCAyNDcsIDI1NSwgMjYyLCAyNzAsIDI3OCwKKyAgMjg1LCAyOTMsIDMwMCwgMzA4LCAzMTUsIDMyMiwgMzI5LCAzMzYsIDM0NCwgMzUxLCAzNTgsIDM2NSwgMzcyLCAzNzgsIDM4NSwKKyAgMzkyLCAzOTksIDQwNiwgNDEyLCA0MTksIDQyNSwgNDMyLCA0MzgsIDQ0NSwgNDUxLCA0NTcsIDQ2NCwgNDcwLCA0NzYsIDQ4MiwKKyAgNDg5LCA0OTUsIDUwMSwgNTA3LCA1MTMsIDUxOSwgNTI1LCA1MzEsIDUzNiwgNTQyLCA1NDgsIDU1NCwgNTYwLCA1NjUsIDU3MSwKKyAgNTc3LCA1ODIsIDU4OCwgNTkzLCA1OTksIDYwNCwgNjEwLCA2MTUsIDYyMSwgNjI2LCA2MzEsIDYzNywgNjQyLCA2NDcsIDY1MiwKKyAgNjU4LCA2NjMsIDY2OCwgNjczLCA2NzgsIDY4MywgNjg4LCA2OTMsIDY5OCwgNzAzLCA3MDgsIDcxMywgNzE4LCA3MjMsIDcyOCwKKyAgNzMyLCA3MzcsIDc0MiwgNzQ3LCA3NTEsIDc1NiwgNzYxLCA3NjYsIDc3MCwgNzc1LCA3NzksIDc4NCwgNzg4LCA3OTMsIDc5OCwKKyAgODAyLCA4MDYsIDgxMSwgODE1LCA4MjAsIDgyNCwgODI5LCA4MzMsIDgzNywgODQyLCA4NDYsIDg1MCwgODU0LCA4NTksIDg2MywKKyAgODY3LCA4NzEsIDg3NiwgODgwLCA4ODQsIDg4OCwgODkyLCA4OTYsIDkwMCwgOTA0LCA5MDgsIDkxMiwgOTE2LCA5MjAsIDkyNCwKKyAgOTI4LCA5MzIsIDkzNiwgOTQwLCA5NDQsIDk0OCwgOTUyLCA5NTYsIDk1OSwgOTYzLCA5NjcsIDk3MSwgOTc1LCA5NzgsIDk4MiwKKyAgOTg2LCA5OTAsIDk5MywgOTk3LCAxMDAxLCAxMDA0LCAxMDA4LCAxMDEyLCAxMDE1LCAxMDE5LCAxMDIyLCAxMDI2LCAxMDMwLAorICAxMDMzLCAxMDM3LCAxMDQwLCAxMDQ0LCAxMDQ3LCAxMDUxLCAxMDU0LCAxMDU4LCAxMDYxLCAxMDY1LCAxMDY4LCAxMDcyLCAxMDc1LAorICAxMDc4LCAxMDgyLCAxMDg1LCAxMDg5LCAxMDkyLCAxMDk1LCAxMDk5LCAxMTAyLCAxMTA1LCAxMTA5LCAxMTEyLCAxMTE1LCAxMTE4LAorICAxMTIyLCAxMTI1LCAxMTI4LCAxMTMxLCAxMTM1LCAxMTM4LCAxMTQxLCAxMTQ0LCAxMTQ3LCAxMTUxLCAxMTU0LCAxMTU3LCAxMTYwLAorICAxMTYzLCAxMTY2LCAxMTY5LCAxMTcyLCAxMTc2LCAxMTc5LCAxMTgyLCAxMTg1LCAxMTg4LCAxMTkxLCAxMTk0LCAxMTk3LCAxMjAwLAorICAxMjAzLCAxMjA2LCAxMjA5LCAxMjEyLCAxMjE1LCAxMjE4LCAxMjIxLCAxMjI0LCAxMjI3LCAxMjMwLCAxMjMzLCAxMjM1LCAxMjM4LAorICAxMjQxLCAxMjQ0LCAxMjQ3LCAxMjUwLCAxMjUzLCAxMjU2LCAxMjU4LCAxMjYxLCAxMjY0LCAxMjY3LCAxMjcwLCAxMjczLCAxMjc1LAorICAxMjc4LCAxMjgxLCAxMjg0LCAxMjg2LCAxMjg5LCAxMjkyLCAxMjk1LCAxMjk3LCAxMzAwLCAxMzAzLCAxMzA2LCAxMzA4LCAxMzExLAorICAxMzE0LCAxMzE2LCAxMzE5LCAxMzIyLCAxMzI0LCAxMzI3LCAxMzMwLCAxMzMyLCAxMzM1LCAxMzM4LCAxMzQwLCAxMzQzLCAxMzQ1LAorICAxMzQ4LCAxMzUxLCAxMzUzLCAxMzU2LCAxMzU4LCAxMzYxLCAxMzY0LCAxMzY2LCAxMzY5LCAxMzcxLCAxMzc0LCAxMzc2LCAxMzc5LAorICAxMzgxLCAxMzg0LCAxMzg2LCAxMzg5LCAxMzkxLCAxMzk0LCAxMzk2LCAxMzk5LCAxNDAxLCAxNDA0LCAxNDA2LCAxNDA5LCAxNDExLAorICAxNDEzLCAxNDE2LCAxNDE4LCAxNDIxLCAxNDIzLCAxNDI2LCAxNDI4LCAxNDMwLCAxNDMzLCAxNDM1LCAxNDM3LCAxNDQwLCAxNDQyLAorICAxNDQ1LCAxNDQ3LCAxNDQ5LCAxNDUyLCAxNDU0LCAxNDU2LCAxNDU5LCAxNDYxLCAxNDYzLCAxNDY2LCAxNDY4LCAxNDcwLCAxNDcyLAorICAxNDc1LCAxNDc3LCAxNDc5LCAxNDgyLCAxNDg0LCAxNDg2LCAxNDg4LCAxNDkxLCAxNDkzLCAxNDk1LCAxNDk3LCAxNTAwLCAxNTAyLAorICAxNTA0LCAxNTA2LCAxNTA5LCAxNTExLCAxNTEzLCAxNTE1LCAxNTE3LCAxNTIwLCAxNTIyLCAxNTI0LCAxNTI2LCAxNTI4LCAxNTMwLAorICAxNTMzLCAxNTM1LCAxNTM3LCAxNTM5LCAxNTQxLCAxNTQzLCAxNTQ1LCAxNTQ4LCAxNTUwLCAxNTUyLCAxNTU0LCAxNTU2LCAxNTU4LAorICAxNTYwLCAxNTYyLCAxNTY0LCAxNTY3LCAxNTY5LCAxNTcxLCAxNTczLCAxNTc1LCAxNTc3LCAxNTc5LCAxNTgxLCAxNTgzLCAxNTg1LAorICAxNTg3LCAxNTg5LCAxNTkxLCAxNTkzLCAxNTk1LCAxNTk3LCAxNTk5LCAxNjAxLCAxNjAzLCAxNjA1LCAxNjA3LCAxNjA5LAorICAvKiBpbmRleCA0MDEgLSA4OTk6IC1sb2coKGkrMTAwKS8xMDAwKSAqIDEwMDAgKi8KKyAgNjkxLCA2ODksIDY4NywgNjg1LCA2ODMsIDY4MSwgNjc5LCA2NzcsIDY3NSwgNjczLCA2NzEsIDY2OSwgNjY4LCA2NjYsIDY2NCwKKyAgNjYyLCA2NjAsIDY1OCwgNjU2LCA2NTQsIDY1MiwgNjUwLCA2NDgsIDY0NiwgNjQ0LCA2NDIsIDY0MSwgNjM5LCA2MzcsIDYzNSwKKyAgNjMzLCA2MzEsIDYyOSwgNjI3LCA2MjYsIDYyNCwgNjIyLCA2MjAsIDYxOCwgNjE2LCA2MTQsIDYxMiwgNjExLCA2MDksIDYwNywKKyAgNjA1LCA2MDMsIDYwMiwgNjAwLCA1OTgsIDU5NiwgNTk0LCA1OTIsIDU5MSwgNTg5LCA1ODcsIDU4NSwgNTgzLCA1ODIsIDU4MCwKKyAgNTc4LCA1NzYsIDU3NCwgNTczLCA1NzEsIDU2OSwgNTY3LCA1NjYsIDU2NCwgNTYyLCA1NjAsIDU1OSwgNTU3LCA1NTUsIDU1MywKKyAgNTUyLCA1NTAsIDU0OCwgNTQ2LCA1NDUsIDU0MywgNTQxLCA1NDAsIDUzOCwgNTM2LCA1MzQsIDUzMywgNTMxLCA1MjksIDUyOCwKKyAgNTI2LCA1MjQsIDUyMywgNTIxLCA1MTksIDUxOCwgNTE2LCA1MTQsIDUxMiwgNTExLCA1MDksIDUwOCwgNTA2LCA1MDQsIDUwMiwKKyAgNTAxLCA0OTksIDQ5OCwgNDk2LCA0OTQsIDQ5MywgNDkxLCA0ODksIDQ4OCwgNDg2LCA0ODQsIDQ4MywgNDgxLCA0ODAsIDQ3OCwKKyAgNDc2LCA0NzUsIDQ3MywgNDcyLCA0NzAsIDQ2OCwgNDY3LCA0NjUsIDQ2NCwgNDYyLCA0NjAsIDQ1OSwgNDU3LCA0NTYsIDQ1NCwKKyAgNDUzLCA0NTEsIDQ0OSwgNDQ4LCA0NDYsIDQ0NSwgNDQzLCA0NDIsIDQ0MCwgNDM4LCA0MzcsIDQzNSwgNDM0LCA0MzIsIDQzMSwKKyAgNDI5LCA0MjgsIDQyNiwgNDI1LCA0MjMsIDQyMiwgNDIwLCA0MTksIDQxNywgNDE2LCA0MTQsIDQxMiwgNDExLCA0MTAsIDQwOCwKKyAgNDA2LCA0MDUsIDQwNCwgNDAyLCA0MDAsIDM5OSwgMzk4LCAzOTYsIDM5NCwgMzkzLCAzOTIsIDM5MCwgMzg5LCAzODcsIDM4NiwKKyAgMzg0LCAzODMsIDM4MSwgMzgwLCAzNzgsIDM3NywgMzc1LCAzNzQsIDM3MiwgMzcxLCAzNzAsIDM2OCwgMzY3LCAzNjUsIDM2NCwKKyAgMzYyLCAzNjEsIDM2MCwgMzU4LCAzNTcsIDM1NSwgMzU0LCAzNTIsIDM1MSwgMzUwLCAzNDgsIDM0NywgMzQ1LCAzNDQsIDM0MiwKKyAgMzQxLCAzNDAsIDMzOCwgMzM3LCAzMzYsIDMzNCwgMzMzLCAzMzEsIDMzMCwgMzI4LCAzMjcsIDMyNiwgMzI0LCAzMjMsIDMyMiwKKyAgMzIwLCAzMTksIDMxOCwgMzE2LCAzMTUsIDMxMywgMzEyLCAzMTEsIDMwOSwgMzA4LCAzMDYsIDMwNSwgMzA0LCAzMDIsIDMwMSwKKyAgMzAwLCAyOTgsIDI5NywgMjk2LCAyOTQsIDI5MywgMjkyLCAyOTAsIDI4OSwgMjg4LCAyODYsIDI4NSwgMjg0LCAyODIsIDI4MSwKKyAgMjgwLCAyNzgsIDI3NywgMjc2LCAyNzQsIDI3MywgMjcyLCAyNzAsIDI2OSwgMjY4LCAyNjcsIDI2NSwgMjY0LCAyNjMsIDI2MSwKKyAgMjYwLCAyNTksIDI1OCwgMjU2LCAyNTUsIDI1NCwgMjUyLCAyNTEsIDI1MCwgMjQ4LCAyNDcsIDI0NiwgMjQ1LCAyNDMsIDI0MiwKKyAgMjQxLCAyNDAsIDIzOCwgMjM3LCAyMzYsIDIzNCwgMjMzLCAyMzIsIDIzMSwgMjI5LCAyMjgsIDIyNywgMjI2LCAyMjQsIDIyMywKKyAgMjIyLCAyMjEsIDIxOSwgMjE4LCAyMTcsIDIxNiwgMjE0LCAyMTMsIDIxMiwgMjExLCAyMTAsIDIwOCwgMjA3LCAyMDYsIDIwNSwKKyAgMjAzLCAyMDIsIDIwMSwgMjAwLCAxOTgsIDE5NywgMTk2LCAxOTUsIDE5NCwgMTkyLCAxOTEsIDE5MCwgMTg5LCAxODgsIDE4NiwKKyAgMTg1LCAxODQsIDE4MywgMTgyLCAxODAsIDE3OSwgMTc4LCAxNzcsIDE3NiwgMTc0LCAxNzMsIDE3MiwgMTcxLCAxNzAsIDE2OCwKKyAgMTY3LCAxNjYsIDE2NSwgMTY0LCAxNjIsIDE2MSwgMTYwLCAxNTksIDE1OCwgMTU3LCAxNTYsIDE1NCwgMTUzLCAxNTIsIDE1MSwKKyAgMTUwLCAxNDgsIDE0NywgMTQ2LCAxNDUsIDE0NCwgMTQzLCAxNDIsIDE0MCwgMTM5LCAxMzgsIDEzNywgMTM2LCAxMzUsIDEzNCwKKyAgMTMyLCAxMzEsIDEzMCwgMTI5LCAxMjgsIDEyNywgMTI2LCAxMjQsIDEyMywgMTIyLCAxMjEsIDEyMCwgMTE5LCAxMTgsIDExNiwKKyAgMTE1LCAxMTQsIDExMywgMTEyLCAxMTEsIDExMCwgMTA5LCAxMDgsIDEwNiwgMTA1LCAxMDQsIDEwMywgMTAyLCAxMDEsIDEwMCwKKyAgOTksIDk4LCA5NywgOTUsIDk0LCA5MywgOTIsIDkxLCA5MCwgODksIDg4LCA4NywgODYsIDg0LCA4MywgODIsIDgxLCA4MCwgNzksCisgIDc4LCA3NywgNzYsIDc1LCA3NCwgNzMsIDcyLCA3MCwgNjksIDY4LCA2NywgNjYsIDY1LCA2NCwgNjMsIDYyLCA2MSwgNjAsIDU5LAorICA1OCwgNTcsIDU2LCA1NCwgNTMsIDUyLCA1MSwgNTAsIDQ5LCA0OCwgNDcsIDQ2LCA0NSwgNDQsIDQzLCA0MiwgNDEsIDQwLCAzOSwKKyAgMzgsIDM3LCAzNiwgMzUsIDM0LCAzMywgMzEsIDMwLCAyOSwgMjgsIDI3LCAyNiwgMjUsIDI0LCAyMywgMjIsIDIxLCAyMCwgMTksCisgIDE4LCAxNywgMTYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEKK307CisKKy8qCisgKiBJbnRlcm5hbCBsbigpIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3QgY2hlY2sgZm9yIHNwZWNpYWxzLCB6ZXJvIG9yIG9uZS4KKyAqIFJlbGF0aXZlIGVycm9yOiBhYnMocmVzdWx0IC0gbG9nKGEpKSA8IDAuMSAqIDEwKiotcHJlYyAqIGFicyhsb2coYSkpCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FsbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHZhcmNvbnRleHQsIG1heGNvbnRleHQ7CisgICAgbXBkX3QgKnogPSAobXBkX3QgKikgcmVzdWx0OworICAgIE1QRF9ORVdfU1RBVElDKHYsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUModnRtcCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyh0bXAsMCwwLDAsMCk7CisgICAgbXBkX3NzaXplX3Qga2xpc3RbTVBEX01BWF9QUkVDX0xPRzJdOworICAgIG1wZF9zc2l6ZV90IG1heHByZWMsIHNoaWZ0LCB0OworICAgIG1wZF9zc2l6ZV90IGFfZGlnaXRzLCBhX2V4cDsKKyAgICBtcGRfdWludF90IGR1bW15LCB4OworICAgIGludCBpOworCisgICAgYXNzZXJ0KCFtcGRfaXNzcGVjaWFsKGEpICYmICFtcGRfaXN6ZXJvY29lZmYoYSkpOworCisgICAgLyoKKyAgICAgKiBXZSBhcmUgY2FsY3VsYXRpbmcgbG4oYSkgPSBsbih2ICogMTBedCkgPSBsbih2KSArIHQqbG4oMTApLAorICAgICAqIHdoZXJlIDAuNSA8IHYgPD0gNS4KKyAgICAgKi8KKyAgICBpZiAoIW1wZF9xY29weSgmdiwgYSwgc3RhdHVzKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisKKyAgICAvKiBJbml0aWFsIGFwcHJveGltYXRpb246IHdlIGhhdmUgYXQgbGVhc3Qgb25lIG5vbi16ZXJvIGRpZ2l0ICovCisgICAgX21wZF9nZXRfbXNkaWdpdHMoJmR1bW15LCAmeCwgJnYsIDMpOworICAgIGlmICh4IDwgMTApIHggKj0gMTA7CisgICAgaWYgKHggPCAxMDApIHggKj0gMTA7CisgICAgeCAtPSAxMDA7CisKKyAgICAvKiBhIG1heSBlcXVhbCB6ICovCisgICAgYV9kaWdpdHMgPSBhLT5kaWdpdHM7CisgICAgYV9leHAgPSBhLT5leHA7CisKKyAgICBtcGRfbWluYWxsb2Moeik7CisgICAgbXBkX2NsZWFyX2ZsYWdzKHopOworICAgIHotPmRhdGFbMF0gPSBsbmFwcHJveFt4XTsKKyAgICB6LT5sZW4gPSAxOworICAgIHotPmV4cCA9IC0zOworICAgIG1wZF9zZXRkaWdpdHMoeik7CisKKyAgICBpZiAoeCA8PSA0MDApIHsKKyAgICAgICAgLyogUmVkdWNlIHRoZSBpbnB1dCBvcGVyYW5kIHRvIDEuMDAgPD0gdiA8PSA1LjAwLiBMZXQgeSA9IHggKyAxMDAsCisgICAgICAgICAqIHNvIDEwMCA8PSB5IDw9IDUwMC4gU2luY2UgeSBjb250YWlucyB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdHMKKyAgICAgICAgICogb2YgdiwgeS8xMDAgPD0gdiA8ICh5KzEpLzEwMCBhbmQgYWJzKHogLSBsb2codikpIDwgMTAqKi0yLiAqLworICAgICAgICB2LmV4cCA9IC0oYV9kaWdpdHMgLSAxKTsKKyAgICAgICAgdCA9IGFfZXhwICsgYV9kaWdpdHMgLSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogUmVkdWNlIHRoZSBpbnB1dCBvcGVyYW5kIHRvIDAuNTAwIDwgdiA8PSAwLjk5OS4gTGV0IHkgPSB4ICsgMTAwLAorICAgICAgICAgKiBzbyA1MDAgPCB5IDw9IDk5OS4gU2luY2UgeSBjb250YWlucyB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdHMKKyAgICAgICAgICogb2YgdiwgeS8xMDAwIDw9IHYgPCAoeSsxKS8xMDAwIGFuZCBhYnMoeiAtIGxvZyh2KSkgPCAxMCoqLTIuICovCisgICAgICAgIHYuZXhwID0gLWFfZGlnaXRzOworICAgICAgICB0ID0gYV9leHAgKyBhX2RpZ2l0czsKKyAgICAgICAgbXBkX3NldF9uZWdhdGl2ZSh6KTsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX21heGNvbnRleHQoJnZhcmNvbnRleHQpOworICAgIHZhcmNvbnRleHQucm91bmQgPSBNUERfUk9VTkRfVFJVTkM7CisKKyAgICBtYXhwcmVjID0gY3R4LT5wcmVjICsgMjsKKyAgICBpZiAodCA9PSAwICYmICh4IDw9IDE1IHx8IHggPj0gODAwKSkgeworICAgICAgICAvKiAwLjkwMCA8PSB2IDw9IDEuMTU6IEVzdGltYXRlIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGxvZ2FyaXRobS4KKyAgICAgICAgICogSWYgbG4odikgd2lsbCB1bmRlcmZsb3csIHNraXAgdGhlIGxvb3AuIE90aGVyd2lzZSwgYWRqdXN0IHRoZQorICAgICAgICAgKiBwcmVjaXNpb24gdXB3YXJkcyBpbiBvcmRlciB0byBvYnRhaW4gYSBzdWZmaWNpZW50IG51bWJlciBvZgorICAgICAgICAgKiBzaWduaWZpY2FudCBkaWdpdHMuCisgICAgICAgICAqCisgICAgICAgICAqICAgQ2FzZSB2ID4gMToKKyAgICAgICAgICogICAgICBhYnMoKHYtMSkvMTApIDwgYWJzKCh2LTEpL3YpIDwgYWJzKGxuKHYpKSA8IGFicyh2LTEpCisgICAgICAgICAqICAgQ2FzZSB2IDwgMToKKyAgICAgICAgICogICAgICBhYnModi0xKSA8IGFicyhsbih2KSkgPCBhYnMoKHYtMSkvdikgPCBhYnMoKHYtMSkqMTApCisgICAgICAgICAqLworICAgICAgICBpbnQgY21wID0gX21wZF9jbXAoJnYsICZvbmUpOworCisgICAgICAgIC8qIFVwcGVyIGJvdW5kIChhc3N1bWUgdiA+IDEpOiBhYnModi0xKSwgdW5yb3VuZGVkICovCisgICAgICAgIF9tcGRfcXN1YigmdG1wLCAmdiwgJm9uZSwgJm1heGNvbnRleHQsICZtYXhjb250ZXh0LnN0YXR1cyk7CisgICAgICAgIGlmIChtYXhjb250ZXh0LnN0YXR1cyAmIE1QRF9FcnJvcnMpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjbXAgPCAwKSB7CisgICAgICAgICAgICAvKiB2IDwgMTogYWJzKCh2LTEpKjEwKSAqLworICAgICAgICAgICAgdG1wLmV4cCArPSAxOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfYWRqZXhwKCZ0bXApIDwgbXBkX2V0aW55KGN0eCkpIHsKKyAgICAgICAgICAgIC8qIFRoZSB1cHBlciBib3VuZCBpcyBsZXNzIHRoYW4gZXRpbnk6IFVuZGVyZmxvdyB0byB6ZXJvICovCisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgKGNtcDwwKSwgMSwgbXBkX2V0aW55KGN0eCktMSk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgICAgICAvKiBMb3dlciBib3VuZDogYWJzKCh2LTEpLzEwKSBvciBhYnModi0xKSAqLworICAgICAgICB0bXAuZXhwIC09IDE7CisgICAgICAgIGlmIChtcGRfYWRqZXhwKCZ0bXApIDwgMCkgeworICAgICAgICAgICAgLyogQWJzb2x1dGUgZXJyb3Igb2YgdGhlIGxvb3A6IGFicyh6IC0gbG9nKHYpKSA8IDEwKiotcC4gSWYKKyAgICAgICAgICAgICAqIHAgPSBjdHgtPnByZWMrMi1hZGpleHAobG93ZXIpLCB0aGVuIHRoZSByZWxhdGl2ZSBlcnJvciBvZgorICAgICAgICAgICAgICogdGhlIHJlc3VsdCBpcyAodXNpbmcgMTAqKmFkamV4cCh4KSA8PSBhYnMoeCkpOgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqICAgYWJzKHogLSBsb2codikpIC8gYWJzKGxvZyh2KSkgPCAxMCoqLXAgLyBhYnMobG9nKHYpKQorICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PSAxMCoqKC1jdHgtPnByZWMtMikKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbWF4cHJlYyA9IG1heHByZWMgLSBtcGRfYWRqZXhwKCZ0bXApOworICAgICAgICB9CisgICAgfQorCisgICAgaSA9IGxuX3NjaGVkdWxlX3ByZWMoa2xpc3QsIG1heHByZWMsIDIpOworICAgIGZvciAoOyBpID49IDA7IGktLSkgeworICAgICAgICB2YXJjb250ZXh0LnByZWMgPSAyKmtsaXN0W2ldKzM7CisgICAgICAgIHotPmZsYWdzIF49IE1QRF9ORUc7CisgICAgICAgIF9tcGRfcWV4cCgmdG1wLCB6LCAmdmFyY29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgei0+ZmxhZ3MgXj0gTVBEX05FRzsKKworICAgICAgICBpZiAodi5kaWdpdHMgPiB2YXJjb250ZXh0LnByZWMpIHsKKyAgICAgICAgICAgIHNoaWZ0ID0gdi5kaWdpdHMgLSB2YXJjb250ZXh0LnByZWM7CisgICAgICAgICAgICBtcGRfcXNoaWZ0cigmdnRtcCwgJnYsIHNoaWZ0LCBzdGF0dXMpOworICAgICAgICAgICAgdnRtcC5leHAgKz0gc2hpZnQ7CisgICAgICAgICAgICBtcGRfcW11bCgmdG1wLCAmdnRtcCwgJnRtcCwgJnZhcmNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfcW11bCgmdG1wLCAmdiwgJnRtcCwgJnZhcmNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIH0KKworICAgICAgICBtcGRfcXN1YigmdG1wLCAmdG1wLCAmb25lLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FhZGQoeiwgeiwgJnRtcCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHopKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogQ2FzZSB0ID09IDA6CisgICAgICogICAgdCAqIGxvZygxMCkgPT0gMCwgdGhlIHJlc3VsdCBkb2VzIG5vdCBjaGFuZ2UgYW5kIHRoZSBhbmFseXNpcworICAgICAqICAgIGFib3ZlIGFwcGxpZXMuIElmIHYgPCAwLjkwMCBvciB2ID4gMS4xNSwgdGhlIHJlbGF0aXZlIGVycm9yIGlzCisgICAgICogICAgbGVzcyB0aGFuIDEwKiooLWN0eC5wcmVjLTEpLgorICAgICAqIENhc2UgdCAhPSAwOgorICAgICAqICAgICAgeiA6PSBhcHByb3gobG9nKHYpKQorICAgICAqICAgICAgeSA6PSBhcHByb3gobG9nKDEwKSkKKyAgICAgKiAgICAgIHAgOj0gbWF4cHJlYyA9IGN0eC0+cHJlYyArIDIKKyAgICAgKiAgIEFic29sdXRlIGVycm9yczoKKyAgICAgKiAgICAgIDEpIGFicyh6IC0gbG9nKHYpKSA8IDEwKiotcAorICAgICAqICAgICAgMikgYWJzKHkgLSBsb2coMTApKSA8IDEwKiotcAorICAgICAqICAgVGhlIG11bHRpcGxpY2F0aW9uIGlzIGV4YWN0LCBzbzoKKyAgICAgKiAgICAgIDMpIGFicyh0KnkgLSB0KmxvZygxMCkpIDwgdCoxMCoqLXAKKyAgICAgKiAgIFRoZSBzdW0gaXMgZXhhY3QsIHNvOgorICAgICAqICAgICAgNCkgYWJzKCh6ICsgdCp5KSAtIChsb2codikgKyB0KmxvZygxMCkpKSA8IChhYnModCkgKyAxKSAqIDEwKiotcAorICAgICAqICAgQm91bmRzIGZvciBsb2codikgYW5kIGxvZygxMCk6CisgICAgICogICAgICA1KSAtNy8xMCA8IGxvZyh2KSA8IDE3LzEwCisgICAgICogICAgICA2KSAyMy8xMCA8IGxvZygxMCkgPCAyNC8xMAorICAgICAqICAgVXNpbmcgNCksIDUpLCA2KSBhbmQgdCAhPSAwLCB0aGUgcmVsYXRpdmUgZXJyb3IgaXM6CisgICAgICoKKyAgICAgKiAgICAgIDcpIHJlbGVyciA8ICgoYWJzKHQpICsgMSkqMTAqKi1wKSAvIGFicyhsb2codikgKyB0KmxvZygxMCkpCisgICAgICogICAgICAgICAgICAgICAgPCAwLjUgKiAxMCoqKC1wICsgMSkgPSAwLjUgKiAxMCoqKC1jdHgtPnByZWMtMSkKKyAgICAgKi8KKyAgICBtcGRfcWxuMTAoJnYsIG1heHByZWMrMSwgc3RhdHVzKTsKKyAgICBtcGRfcW11bF9zc2l6ZSgmdG1wLCAmdiwgdCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FhZGQocmVzdWx0LCAmdG1wLCB6LCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKworCitmaW5pc2g6CisgICAgKnN0YXR1cyB8PSAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWQpOworICAgIG1wZF9kZWwoJnYpOworICAgIG1wZF9kZWwoJnZ0bXApOworICAgIG1wZF9kZWwoJnRtcCk7Cit9CisKKy8qIGxuKGEpICovCit2b2lkCittcGRfcWxuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIG1wZF9zc2l6ZV90IGFkamV4cCwgdDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX0lORik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9ORUcsIE1QRF9JTkYpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKF9tcGRfY21wKGEsICZvbmUpID09IDApIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8qCisgICAgICogQ2hlY2sgaWYgdGhlIHJlc3VsdCB3aWxsIG92ZXJmbG93ICgwIDwgeCwgeCAhPSAxKToKKyAgICAgKiAgIDEpIGxvZzEwKHgpIDwgMCBpZmYgYWRqZXhwKHgpIDwgMAorICAgICAqICAgMikgMCA8IHggL1wgeCA8PSB5ID09PiBhZGpleHAoeCkgPD0gYWRqZXhwKHkpCisgICAgICogICAzKSAwIDwgeCAvXCB4ICE9IDEgPT0+IDIgKiBhYnMobG9nMTAoeCkpIDwgYWJzKGxvZyh4KSkKKyAgICAgKiAgIDQpIGFkamV4cCh4KSA8PSBsb2cxMCh4KSA8IGFkamV4cCh4KSArIDEKKyAgICAgKgorICAgICAqIENhc2UgYWRqZXhwKHgpID49IDA6CisgICAgICogICA1KSAyICogYWRqZXhwKHgpIDwgYWJzKGxvZyh4KSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpID4gMDoKKyAgICAgKiAgICAgNikgYWRqZXhwKDIgKiBhZGpleHAoeCkpIDw9IGFkamV4cChhYnMobG9nKHgpKSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpID09IDA6CisgICAgICogICAgIG1wZF9leHBfZGlnaXRzKHQpLTEgPT0gMCA8PSBlbWF4ICh0aGUgc2hvcnRjdXQgaXMgbm90IHRyaWdnZXJlZCkKKyAgICAgKgorICAgICAqIENhc2UgYWRqZXhwKHgpIDwgMDoKKyAgICAgKiAgIDcpIDIgKiAoLWFkamV4cCh4KSAtIDEpIDwgYWJzKGxvZyh4KSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpIDwgLTE6CisgICAgICogICAgIDgpIGFkamV4cCgyICogKC1hZGpleHAoeCkgLSAxKSkgPD0gYWRqZXhwKGFicyhsb2coeCkpKQorICAgICAqICAgQ2FzZSBhZGpleHAoeCkgPT0gLTE6CisgICAgICogICAgIG1wZF9leHBfZGlnaXRzKHQpLTEgPT0gMCA8PSBlbWF4ICh0aGUgc2hvcnRjdXQgaXMgbm90IHRyaWdnZXJlZCkKKyAgICAgKi8KKyAgICBhZGpleHAgPSBtcGRfYWRqZXhwKGEpOworICAgIHQgPSAoYWRqZXhwIDwgMCkgPyAtYWRqZXhwLTEgOiBhZGpleHA7CisgICAgdCAqPSAyOworICAgIGlmIChtcGRfZXhwX2RpZ2l0cyh0KS0xID4gY3R4LT5lbWF4KSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX092ZXJmbG93fE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkOworICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIChhZGpleHA8MCksIE1QRF9JTkYpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisKKyAgICBpZiAoY3R4LT5hbGxjcikgeworICAgICAgICBNUERfTkVXX1NUQVRJQyh0MSwgMCwwLDAsMCk7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHQyLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUModWxwLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUMoYWEsIDAsMCwwLDApOworICAgICAgICBtcGRfc3NpemVfdCBwcmVjOworCisgICAgICAgIGlmIChyZXN1bHQgPT0gYSkgeworICAgICAgICAgICAgaWYgKCFtcGRfcWNvcHkoJmFhLCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhID0gJmFhOworICAgICAgICB9CisKKyAgICAgICAgd29ya2N0eC5jbGFtcCA9IDA7CisgICAgICAgIHByZWMgPSBjdHgtPnByZWMgKyAzOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgd29ya2N0eC5wcmVjID0gcHJlYzsKKyAgICAgICAgICAgIF9tcGRfcWxuKHJlc3VsdCwgYSwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICBfc3NldHRyaXBsZSgmdWxwLCBNUERfUE9TLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5leHAgKyByZXN1bHQtPmRpZ2l0cy13b3JrY3R4LnByZWMpOworCisgICAgICAgICAgICB3b3JrY3R4LnByZWMgPSBjdHgtPnByZWM7CisgICAgICAgICAgICBtcGRfcWFkZCgmdDEsIHJlc3VsdCwgJnVscCwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcXN1YigmdDIsIHJlc3VsdCwgJnVscCwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpIHx8IG1wZF9pc3plcm9jb2VmZihyZXN1bHQpIHx8CisgICAgICAgICAgICAgICAgbXBkX3FjbXAoJnQxLCAmdDIsIHN0YXR1cykgPT0gMCkgeworICAgICAgICAgICAgICAgIHdvcmtjdHguY2xhbXAgPSBjdHgtPmNsYW1wOworICAgICAgICAgICAgICAgIG1wZF9jaGVja191bmRlcmZsb3cocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmVjICs9IE1QRF9SRElHSVRTOworICAgICAgICB9CisgICAgICAgIG1wZF9kZWwoJnQxKTsKKyAgICAgICAgbXBkX2RlbCgmdDIpOworICAgICAgICBtcGRfZGVsKCZ1bHApOworICAgICAgICBtcGRfZGVsKCZhYSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfbXBkX3FsbihyZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBtcGRfY2hlY2tfdW5kZXJmbG93KHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qCisgKiBJbnRlcm5hbCBsb2cxMCgpIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3QgY2hlY2sgZm9yIHNwZWNpYWxzLCB6ZXJvIG9yIG9uZS4KKyAqIENhc2UgU0tJUF9GSU5BTElaRToKKyAqICAgUmVsYXRpdmUgZXJyb3I6IGFicyhyZXN1bHQgLSBsb2cxMChhKSkgPCAwLjEgKiAxMCoqLXByZWMgKiBhYnMobG9nMTAoYSkpCisgKiBDYXNlIERPX0ZJTkFMSVpFOgorICogICBVbHAgZXJyb3I6IGFicyhyZXN1bHQgLSBsb2cxMChhKSkgPCB1bHAobG9nMTAoYSkpCisgKi8KK2VudW0ge1NLSVBfRklOQUxJWkUsIERPX0ZJTkFMSVpFfTsKK3N0YXRpYyB2b2lkCitfbXBkX3Fsb2cxMChpbnQgYWN0aW9uLCBtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwKKyAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgTVBEX05FV19TVEFUSUMobG4xMCwwLDAsMCwwKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZ3b3JrY3R4KTsKKyAgICB3b3JrY3R4LnByZWMgPSBjdHgtPnByZWMgKyAzOworICAgIC8qIHJlbGF0aXZlIGVycm9yOiAwLjEgKiAxMCoqKC1wLTMpLiBUaGUgc3BlY2lmaWMgdW5kZXJmbG93IHNob3J0Y3V0CisgICAgICogaW4gX21wZF9xbG4oKSBkb2VzIG5vdCBjaGFuZ2UgdGhlIGZpbmFsIHJlc3VsdC4gKi8KKyAgICBfbXBkX3FsbihyZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIC8qIHJlbGF0aXZlIGVycm9yOiA1ICogMTAqKigtcC0zKSAqLworICAgIG1wZF9xbG4xMCgmbG4xMCwgd29ya2N0eC5wcmVjLCBzdGF0dXMpOworCisgICAgaWYgKGFjdGlvbiA9PSBET19GSU5BTElaRSkgeworICAgICAgICB3b3JrY3R4ID0gKmN0eDsKKyAgICAgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisgICAgfQorICAgIC8qIFNLSVBfRklOQUxJWkU6IHJlbGF0aXZlIGVycm9yOiA1ICogMTAqKigtcC0zKSAqLworICAgIF9tcGRfcWRpdihOT19JREVBTF9FWFAsIHJlc3VsdCwgcmVzdWx0LCAmbG4xMCwgJndvcmtjdHgsIHN0YXR1cyk7CisKKyAgICBtcGRfZGVsKCZsbjEwKTsKK30KKworLyogbG9nMTAoYSkgKi8KK3ZvaWQKK21wZF9xbG9nMTAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgbXBkX3NzaXplX3QgYWRqZXhwLCB0OworCisgICAgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9JTkYpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfTkVHLCBNUERfSU5GKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfY29lZmZfaXNwb3cxMChhKSkgeworICAgICAgICB1aW50OF90IHNpZ24gPSAwOworICAgICAgICBhZGpleHAgPSBtcGRfYWRqZXhwKGEpOworICAgICAgICBpZiAoYWRqZXhwIDwgMCkgeworICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAgICBhZGpleHAgPSAtYWRqZXhwOworICAgICAgICB9CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBzaWduLCBhZGpleHAsIDApOworICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLyoKKyAgICAgKiBDaGVjayBpZiB0aGUgcmVzdWx0IHdpbGwgb3ZlcmZsb3cgKDAgPCB4LCB4ICE9IDEpOgorICAgICAqICAgMSkgbG9nMTAoeCkgPCAwIGlmZiBhZGpleHAoeCkgPCAwCisgICAgICogICAyKSAwIDwgeCAvXCB4IDw9IHkgPT0+IGFkamV4cCh4KSA8PSBhZGpleHAoeSkKKyAgICAgKiAgIDMpIGFkamV4cCh4KSA8PSBsb2cxMCh4KSA8IGFkamV4cCh4KSArIDEKKyAgICAgKgorICAgICAqIENhc2UgYWRqZXhwKHgpID49IDA6CisgICAgICogICA0KSBhZGpleHAoeCkgPD0gYWJzKGxvZzEwKHgpKQorICAgICAqICAgQ2FzZSBhZGpleHAoeCkgPiAwOgorICAgICAqICAgICA1KSBhZGpleHAoYWRqZXhwKHgpKSA8PSBhZGpleHAoYWJzKGxvZzEwKHgpKSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpID09IDA6CisgICAgICogICAgIG1wZF9leHBfZGlnaXRzKHQpLTEgPT0gMCA8PSBlbWF4ICh0aGUgc2hvcnRjdXQgaXMgbm90IHRyaWdnZXJlZCkKKyAgICAgKgorICAgICAqIENhc2UgYWRqZXhwKHgpIDwgMDoKKyAgICAgKiAgIDYpIC1hZGpleHAoeCkgLSAxIDwgYWJzKGxvZzEwKHgpKQorICAgICAqICAgQ2FzZSBhZGpleHAoeCkgPCAtMToKKyAgICAgKiAgICAgNykgYWRqZXhwKC1hZGpleHAoeCkgLSAxKSA8PSBhZGpleHAoYWJzKGxvZyh4KSkpCisgICAgICogICBDYXNlIGFkamV4cCh4KSA9PSAtMToKKyAgICAgKiAgICAgbXBkX2V4cF9kaWdpdHModCktMSA9PSAwIDw9IGVtYXggKHRoZSBzaG9ydGN1dCBpcyBub3QgdHJpZ2dlcmVkKQorICAgICAqLworICAgIGFkamV4cCA9IG1wZF9hZGpleHAoYSk7CisgICAgdCA9IChhZGpleHAgPCAwKSA/IC1hZGpleHAtMSA6IGFkamV4cDsKKyAgICBpZiAobXBkX2V4cF9kaWdpdHModCktMSA+IGN0eC0+ZW1heCkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9PdmVyZmxvd3xNUERfSW5leGFjdHxNUERfUm91bmRlZDsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCAoYWRqZXhwPDApLCBNUERfSU5GKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChjdHgtPmFsbGNyKSB7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHQxLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUModDIsIDAsMCwwLDApOworICAgICAgICBNUERfTkVXX1NUQVRJQyh1bHAsIDAsMCwwLDApOworICAgICAgICBNUERfTkVXX1NUQVRJQyhhYSwgMCwwLDAsMCk7CisgICAgICAgIG1wZF9zc2l6ZV90IHByZWM7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBhKSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xY29weSgmYWEsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGEgPSAmYWE7CisgICAgICAgIH0KKworICAgICAgICB3b3JrY3R4LmNsYW1wID0gMDsKKyAgICAgICAgcHJlYyA9IGN0eC0+cHJlYyArIDM7CisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICB3b3JrY3R4LnByZWMgPSBwcmVjOworICAgICAgICAgICAgX21wZF9xbG9nMTAoU0tJUF9GSU5BTElaRSwgcmVzdWx0LCBhLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIF9zc2V0dHJpcGxlKCZ1bHAsIE1QRF9QT1MsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQtPmV4cCArIHJlc3VsdC0+ZGlnaXRzLXdvcmtjdHgucHJlYyk7CisKKyAgICAgICAgICAgIHdvcmtjdHgucHJlYyA9IGN0eC0+cHJlYzsKKyAgICAgICAgICAgIG1wZF9xYWRkKCZ0MSwgcmVzdWx0LCAmdWxwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIG1wZF9xc3ViKCZ0MiwgcmVzdWx0LCAmdWxwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkgfHwgbXBkX2lzemVyb2NvZWZmKHJlc3VsdCkgfHwKKyAgICAgICAgICAgICAgICBtcGRfcWNtcCgmdDEsICZ0Miwgc3RhdHVzKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgd29ya2N0eC5jbGFtcCA9IGN0eC0+Y2xhbXA7CisgICAgICAgICAgICAgICAgbXBkX2NoZWNrX3VuZGVyZmxvdyhyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZWMgKz0gTVBEX1JESUdJVFM7CisgICAgICAgIH0KKyAgICAgICAgbXBkX2RlbCgmdDEpOworICAgICAgICBtcGRfZGVsKCZ0Mik7CisgICAgICAgIG1wZF9kZWwoJnVscCk7CisgICAgICAgIG1wZF9kZWwoJmFhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9tcGRfcWxvZzEwKERPX0ZJTkFMSVpFLCByZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBtcGRfY2hlY2tfdW5kZXJmbG93KHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgfQorfQorCisvKgorICogTWF4aW11bSBvZiB0aGUgdHdvIG9wZXJhbmRzLiBBdHRlbnRpb246IElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUKKyAqIG90aGVyIGlzIG51bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuIFRoaXMgbWF5IG5vdCBiZSB3aGF0IG9uZQorICogZXhwZWN0cy4KKyAqLwordm9pZAorbXBkX3FtYXgobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGludCBjOworCisgICAgaWYgKG1wZF9pc3FuYW4oYSkgJiYgIW1wZF9pc25hbihiKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBiLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfaXNxbmFuKGIpICYmICFtcGRfaXNuYW4oYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGMgPSBfbXBkX2NtcChhLCBiKTsKKyAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgYyA9IF9tcGRfY21wX251bWVxdWFsKGEsIGIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBiLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBNYXhpbXVtIG1hZ25pdHVkZTogU2FtZSBhcyBtcGRfbWF4KCksIGJ1dCBjb21wYXJlcyB0aGUgb3BlcmFuZHMgd2l0aCB0aGVpcgorICogc2lnbiBpZ25vcmVkLgorICovCit2b2lkCittcGRfcW1heF9tYWcobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpbnQgYzsKKworICAgIGlmIChtcGRfaXNxbmFuKGEpICYmICFtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYiwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX2lzcW5hbihiKSAmJiAhbXBkX2lzbmFuKGEpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjID0gX21wZF9jbXBfYWJzKGEsIGIpOworICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICBjID0gX21wZF9jbXBfbnVtZXF1YWwoYSwgYik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYyA8IDApIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGIsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIE1pbmltdW0gb2YgdGhlIHR3byBvcGVyYW5kcy4gQXR0ZW50aW9uOiBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlCisgKiBvdGhlciBpcyBudW1lcmljLCB0aGUgbnVtZXJpYyBvcGVyYW5kIGlzIHJldHVybmVkLiBUaGlzIG1heSBub3QgYmUgd2hhdCBvbmUKKyAqIGV4cGVjdHMuCisgKi8KK3ZvaWQKK21wZF9xbWluKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpbnQgYzsKKworICAgIGlmIChtcGRfaXNxbmFuKGEpICYmICFtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYiwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX2lzcW5hbihiKSAmJiAhbXBkX2lzbmFuKGEpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjID0gX21wZF9jbXAoYSwgYik7CisgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgIGMgPSBfbXBkX2NtcF9udW1lcXVhbChhLCBiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjIDwgMCkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGIsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKgorICogTWluaW11bSBtYWduaXR1ZGU6IFNhbWUgYXMgbXBkX21pbigpLCBidXQgY29tcGFyZXMgdGhlIG9wZXJhbmRzIHdpdGggdGhlaXIKKyAqIHNpZ24gaWdub3JlZC4KKyAqLwordm9pZAorbXBkX3FtaW5fbWFnKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX2lzcW5hbihhKSAmJiAhbXBkX2lzbmFuKGIpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGIsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9pc3FuYW4oYikgJiYgIW1wZF9pc25hbihhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYyA9IF9tcGRfY21wX2FicyhhLCBiKTsKKyAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgYyA9IF9tcGRfY21wX251bWVxdWFsKGEsIGIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYiwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIE1pbmltdW0gc3BhY2UgbmVlZGVkIGZvciB0aGUgcmVzdWx0IGFycmF5IGluIF9rYXJhdHN1YmFfcmVjKCkuICovCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK19rbXVsX3Jlc3VsdHNpemUobXBkX3NpemVfdCBsYSwgbXBkX3NpemVfdCBsYikKK3sKKyAgICBtcGRfc2l6ZV90IG4sIG07CisKKyAgICBuID0gYWRkX3NpemVfdChsYSwgbGIpOworICAgIG4gPSBhZGRfc2l6ZV90KG4sIDEpOworCisgICAgbSA9IChsYSsxKS8yICsgMTsKKyAgICBtID0gbXVsX3NpemVfdChtLCAzKTsKKworICAgIHJldHVybiAobSA+IG4pID8gbSA6IG47Cit9CisKKy8qIFdvcmsgc3BhY2UgbmVlZGVkIGluIF9rYXJhdHN1YmFfcmVjKCkuIGxpbSA+PSA0ICovCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK19rbXVsX3dvcmtzaXplKG1wZF9zaXplX3QgbiwgbXBkX3NpemVfdCBsaW0pCit7CisgICAgbXBkX3NpemVfdCBtOworCisgICAgaWYgKG4gPD0gbGltKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG0gPSAobisxKS8yICsgMTsKKworICAgIHJldHVybiBhZGRfc2l6ZV90KG11bF9zaXplX3QobSwgMiksIF9rbXVsX3dvcmtzaXplKG0sIGxpbSkpOworfQorCisKKyNkZWZpbmUgTVBEX0tBUkFUU1VCQV9CQVNFQ0FTRSAxNiAgLyogbXVzdCBiZSA+PSA0ICovCisKKy8qCisgKiBBZGQgdGhlIHByb2R1Y3Qgb2YgYSBhbmQgYiB0byBjLgorICogYyBtdXN0IGJlIF9rbXVsX3Jlc3VsdHNpemUobGEsIGxiKSBpbiBzaXplLgorICogdyBpcyB1c2VkIGFzIGEgd29yayBhcnJheSBhbmQgbXVzdCBiZSBfa211bF93b3Jrc2l6ZShhLCBsaW0pIGluIHNpemUuCisgKiBSb21hbiBFLiBNYWVkZXIsIFN0b3JhZ2UgQWxsb2NhdGlvbiBmb3IgdGhlIEthcmF0c3ViYSBJbnRlZ2VyIE11bHRpcGxpY2F0aW9uCisgKiBBbGdvcml0aG0uIEluICJEZXNpZ24gYW5kIGltcGxlbWVudGF0aW9uIG9mIHN5bWJvbGljIGNvbXB1dGF0aW9uIHN5c3RlbXMiLAorICogU3ByaW5nZXIsIDE5OTMsIElTQk4gMzU0MDU3MjM1WCwgOTc4MzU0MDU3MjM1MC4KKyAqLworc3RhdGljIHZvaWQKK19rYXJhdHN1YmFfcmVjKG1wZF91aW50X3QgKmMsIGNvbnN0IG1wZF91aW50X3QgKmEsIGNvbnN0IG1wZF91aW50X3QgKmIsCisgICAgICAgICAgICAgICBtcGRfdWludF90ICp3LCBtcGRfc2l6ZV90IGxhLCBtcGRfc2l6ZV90IGxiKQoreworICAgIG1wZF9zaXplX3QgbSwgbHQ7CisKKyAgICBhc3NlcnQobGEgPj0gbGIgJiYgbGIgPiAwKTsKKyAgICBhc3NlcnQobGEgPD0gTVBEX0tBUkFUU1VCQV9CQVNFQ0FTRSB8fCB3ICE9IE5VTEwpOworCisgICAgaWYgKGxhIDw9IE1QRF9LQVJBVFNVQkFfQkFTRUNBU0UpIHsKKyAgICAgICAgX21wZF9iYXNlbXVsKGMsIGEsIGIsIGxhLCBsYik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtID0gKGxhKzEpLzI7ICAvLyBjZWlsKGxhLzIpCisKKyAgICAvKiBsYiA8PSBtIDwgbGEgKi8KKyAgICBpZiAobGIgPD0gbSkgeworCisgICAgICAgIC8qIGxiIGNhbiBub3cgYmUgbGFyZ2VyIHRoYW4gbGEtbSAqLworICAgICAgICBpZiAobGIgPiBsYS1tKSB7CisgICAgICAgICAgICBsdCA9IGxiICsgbGIgKyAxOyAgICAgICAvLyBzcGFjZSBuZWVkZWQgZm9yIHJlc3VsdCBhcnJheQorICAgICAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgLy8gY2xlYXIgcmVzdWx0IGFycmF5CisgICAgICAgICAgICBfa2FyYXRzdWJhX3JlYyh3LCBiLCBhK20sIHcrbHQsIGxiLCBsYS1tKTsgLy8gYiphaAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbHQgPSAobGEtbSkgKyAobGEtbSkgKyAxOyAgLy8gc3BhY2UgbmVlZGVkIGZvciByZXN1bHQgYXJyYXkKKyAgICAgICAgICAgIG1wZF91aW50X3plcm8odywgbHQpOyAgICAgIC8vIGNsZWFyIHJlc3VsdCBhcnJheQorICAgICAgICAgICAgX2thcmF0c3ViYV9yZWModywgYSttLCBiLCB3K2x0LCBsYS1tLCBsYik7IC8vIGFoKmIKKyAgICAgICAgfQorICAgICAgICBfbXBkX2Jhc2VhZGR0byhjK20sIHcsIChsYS1tKStsYik7ICAgICAgLy8gYWRkIGFoKmIqQioqbQorCisgICAgICAgIGx0ID0gbSArIG0gKyAxOyAgICAgICAgIC8vIHNwYWNlIG5lZWRlZCBmb3IgdGhlIHJlc3VsdCBhcnJheQorICAgICAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsgICAvLyBjbGVhciByZXN1bHQgYXJyYXkKKyAgICAgICAgX2thcmF0c3ViYV9yZWModywgYSwgYiwgdytsdCwgbSwgbGIpOyAgLy8gYWwqYgorICAgICAgICBfbXBkX2Jhc2VhZGR0byhjLCB3LCBtK2xiKTsgICAgLy8gYWRkIGFsKmIKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogbGEgPj0gbGIgPiBtICovCisgICAgbWVtY3B5KHcsIGEsIG0gKiBzaXplb2YgKncpOworICAgIHdbbV0gPSAwOworICAgIF9tcGRfYmFzZWFkZHRvKHcsIGErbSwgbGEtbSk7CisKKyAgICBtZW1jcHkodysobSsxKSwgYiwgbSAqIHNpemVvZiAqdyk7CisgICAgd1ttKzErbV0gPSAwOworICAgIF9tcGRfYmFzZWFkZHRvKHcrKG0rMSksIGIrbSwgbGItbSk7CisKKyAgICBfa2FyYXRzdWJhX3JlYyhjK20sIHcsIHcrKG0rMSksIHcrMioobSsxKSwgbSsxLCBtKzEpOworCisgICAgbHQgPSAobGEtbSkgKyAobGEtbSkgKyAxOworICAgIG1wZF91aW50X3plcm8odywgbHQpOworCisgICAgX2thcmF0c3ViYV9yZWModywgYSttLCBiK20sIHcrbHQsIGxhLW0sIGxiLW0pOworCisgICAgX21wZF9iYXNlYWRkdG8oYysyKm0sIHcsIChsYS1tKSArIChsYi1tKSk7CisgICAgX21wZF9iYXNlc3ViZnJvbShjK20sIHcsIChsYS1tKSArIChsYi1tKSk7CisKKyAgICBsdCA9IG0gKyBtICsgMTsKKyAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsKKworICAgIF9rYXJhdHN1YmFfcmVjKHcsIGEsIGIsIHcrbHQsIG0sIG0pOworICAgIF9tcGRfYmFzZWFkZHRvKGMsIHcsIG0rbSk7CisgICAgX21wZF9iYXNlc3ViZnJvbShjK20sIHcsIG0rbSk7CisKKyAgICByZXR1cm47Cit9CisKKy8qCisgKiBNdWx0aXBseSB1IGFuZCB2LCB1c2luZyBLYXJhdHN1YmEgbXVsdGlwbGljYXRpb24uIFJldHVybnMgYSBwb2ludGVyCisgKiB0byB0aGUgcmVzdWx0IG9yIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlIChtYWxsb2MgZXJyb3IpLgorICogQ29uZGl0aW9uczogdWxlbiA+PSB2bGVuLCB1bGVuID49IDQKKyAqLworbXBkX3VpbnRfdCAqCitfbXBkX2ttdWwoY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICBtcGRfc2l6ZV90IHVsZW4sIG1wZF9zaXplX3QgdmxlbiwKKyAgICAgICAgICBtcGRfc2l6ZV90ICpyc2l6ZSkKK3sKKyAgICBtcGRfdWludF90ICpyZXN1bHQgPSBOVUxMLCAqdyA9IE5VTEw7CisgICAgbXBkX3NpemVfdCBtOworCisgICAgYXNzZXJ0KHVsZW4gPj0gNCk7CisgICAgYXNzZXJ0KHVsZW4gPj0gdmxlbik7CisKKyAgICAqcnNpemUgPSBfa211bF9yZXN1bHRzaXplKHVsZW4sIHZsZW4pOworICAgIGlmICgocmVzdWx0ID0gbXBkX2NhbGxvYygqcnNpemUsIHNpemVvZiAqcmVzdWx0KSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtID0gX2ttdWxfd29ya3NpemUodWxlbiwgTVBEX0tBUkFUU1VCQV9CQVNFQ0FTRSk7CisgICAgaWYgKG0gJiYgKCh3ID0gbXBkX2NhbGxvYyhtLCBzaXplb2YgKncpKSA9PSBOVUxMKSkgeworICAgICAgICBtcGRfZnJlZShyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBfa2FyYXRzdWJhX3JlYyhyZXN1bHQsIHUsIHYsIHcsIHVsZW4sIHZsZW4pOworCisKKyAgICBpZiAodykgbXBkX2ZyZWUodyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKgorICogRGV0ZXJtaW5lIHRoZSBtaW5pbXVtIGxlbmd0aCBmb3IgdGhlIG51bWJlciB0aGVvcmV0aWMgdHJhbnNmb3JtLiBWYWxpZAorICogdHJhbnNmb3JtIGxlbmd0aHMgYXJlIDIqKm4gb3IgMyoyKipuLCB3aGVyZSAyKipuIDw9IE1QRF9NQVhUUkFOU0ZPUk1fMk4uCisgKiBUaGUgZnVuY3Rpb24gZmluZHMgdGhlIHNob3J0ZXN0IGxlbmd0aCBtIHN1Y2ggdGhhdCByc2l6ZSA8PSBtLgorICovCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK19tcGRfZ2V0X3RyYW5zZm9ybV9sZW4obXBkX3NpemVfdCByc2l6ZSkKK3sKKyAgICBtcGRfc2l6ZV90IGxvZzJyc2l6ZTsKKyAgICBtcGRfc2l6ZV90IHgsIHN0ZXA7CisKKyAgICBhc3NlcnQocnNpemUgPj0gNCk7CisgICAgbG9nMnJzaXplID0gbXBkX2Jzcihyc2l6ZSk7CisKKyAgICBpZiAocnNpemUgPD0gMTAyNCkgeworICAgICAgICAvKiAyKipuIGlzIGZhc3RlciBpbiB0aGlzIHJhbmdlLiAqLworICAgICAgICB4ID0gKChtcGRfc2l6ZV90KTEpPDxsb2cycnNpemU7CisgICAgICAgIHJldHVybiAocnNpemUgPT0geCkgPyB4IDogeDw8MTsKKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gTVBEX01BWFRSQU5TRk9STV8yTikgeworICAgICAgICB4ID0gKChtcGRfc2l6ZV90KTEpPDxsb2cycnNpemU7CisgICAgICAgIGlmIChyc2l6ZSA9PSB4KSByZXR1cm4geDsKKyAgICAgICAgc3RlcCA9IHg+PjE7CisgICAgICAgIHggKz0gc3RlcDsKKyAgICAgICAgcmV0dXJuIChyc2l6ZSA8PSB4KSA/IHggOiB4ICsgc3RlcDsKKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gTVBEX01BWFRSQU5TRk9STV8yTitNUERfTUFYVFJBTlNGT1JNXzJOLzIpIHsKKyAgICAgICAgcmV0dXJuIE1QRF9NQVhUUkFOU0ZPUk1fMk4rTVBEX01BWFRSQU5TRk9STV8yTi8yOworICAgIH0KKyAgICBlbHNlIGlmIChyc2l6ZSA8PSAzKk1QRF9NQVhUUkFOU0ZPUk1fMk4pIHsKKyAgICAgICAgcmV0dXJuIDMqTVBEX01BWFRSQU5TRk9STV8yTjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBNUERfU0laRV9NQVg7CisgICAgfQorfQorCisjaWZkZWYgUFBSTworI2lmbmRlZiBfTVNDX1ZFUgorc3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydAorX21wZF9nZXRfY29udHJvbDg3KHZvaWQpCit7CisgICAgdW5zaWduZWQgc2hvcnQgY3c7CisKKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZuc3RjdyAlMCIgOiAiPW0iIChjdykpOworICAgIHJldHVybiBjdzsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX3NldF9jb250cm9sODcodW5zaWduZWQgc2hvcnQgY3cpCit7CisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmbGRjdyAlMCIgOiA6ICJtIiAoY3cpKTsKK30KKyNlbmRpZgorCit1bnNpZ25lZCBpbnQKK21wZF9zZXRfZmVudih2b2lkKQoreworICAgIHVuc2lnbmVkIGludCBjdzsKKyNpZmRlZiBfTVNDX1ZFUgorICAgIHVuc2lnbmVkIGludCBmbGFncyA9CisgICAgICAgIF9FTV9JTlZBTElEfF9FTV9ERU5PUk1BTHxfRU1fWkVST0RJVklERXxfRU1fT1ZFUkZMT1d8CisgICAgICAgIF9FTV9VTkRFUkZMT1d8X0VNX0lORVhBQ1R8X1JDX0NIT1B8X1BDXzY0OworICAgIHVuc2lnbmVkIGludCBtYXNrID0gX01DV19FTXxfTUNXX1JDfF9NQ1dfUEM7CisgICAgdW5zaWduZWQgaW50IGR1bW15OworCisgICAgX19jb250cm9sODdfMigwLCAwLCAmY3csIE5VTEwpOworICAgIF9fY29udHJvbDg3XzIoZmxhZ3MsIG1hc2ssICZkdW1teSwgTlVMTCk7CisjZWxzZQorICAgIGN3ID0gX21wZF9nZXRfY29udHJvbDg3KCk7CisgICAgX21wZF9zZXRfY29udHJvbDg3KGN3fDB4RjNGKTsKKyNlbmRpZgorICAgIHJldHVybiBjdzsKK30KKwordm9pZAorbXBkX3Jlc3RvcmVfZmVudih1bnNpZ25lZCBpbnQgY3cpCit7CisjaWZkZWYgX01TQ19WRVIKKyAgICB1bnNpZ25lZCBpbnQgbWFzayA9IF9NQ1dfRU18X01DV19SQ3xfTUNXX1BDOworICAgIHVuc2lnbmVkIGludCBkdW1teTsKKworICAgIF9fY29udHJvbDg3XzIoY3csIG1hc2ssICZkdW1teSwgTlVMTCk7CisjZWxzZQorICAgIF9tcGRfc2V0X2NvbnRyb2w4NygodW5zaWduZWQgc2hvcnQpY3cpOworI2VuZGlmCit9CisjZW5kaWYgLyogUFBSTyAqLworCisvKgorICogTXVsdGlwbHkgdSBhbmQgdiwgdXNpbmcgdGhlIGZhc3QgbnVtYmVyIHRoZW9yZXRpYyB0cmFuc2Zvcm0uIFJldHVybnMKKyAqIGEgcG9pbnRlciB0byB0aGUgcmVzdWx0IG9yIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlIChtYWxsb2MgZXJyb3IpLgorICovCittcGRfdWludF90ICoKK19tcGRfZm50bXVsKGNvbnN0IG1wZF91aW50X3QgKnUsIGNvbnN0IG1wZF91aW50X3QgKnYsCisgICAgICAgICAgICBtcGRfc2l6ZV90IHVsZW4sIG1wZF9zaXplX3QgdmxlbiwKKyAgICAgICAgICAgIG1wZF9zaXplX3QgKnJzaXplKQoreworICAgIG1wZF91aW50X3QgKmMxID0gTlVMTCwgKmMyID0gTlVMTCwgKmMzID0gTlVMTCwgKnZ0bXAgPSBOVUxMOworICAgIG1wZF9zaXplX3QgbjsKKworI2lmZGVmIFBQUk8KKyAgICB1bnNpZ25lZCBpbnQgY3c7CisgICAgY3cgPSBtcGRfc2V0X2ZlbnYoKTsKKyNlbmRpZgorCisgICAgKnJzaXplID0gYWRkX3NpemVfdCh1bGVuLCB2bGVuKTsKKyAgICBpZiAoKG4gPSBfbXBkX2dldF90cmFuc2Zvcm1fbGVuKCpyc2l6ZSkpID09IE1QRF9TSVpFX01BWCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisKKyAgICBpZiAoKGMxID0gbXBkX2NhbGxvYyhuLCBzaXplb2YgKmMxKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisgICAgaWYgKChjMiA9IG1wZF9jYWxsb2Mobiwgc2l6ZW9mICpjMikpID09IE5VTEwpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorICAgIGlmICgoYzMgPSBtcGRfY2FsbG9jKG4sIHNpemVvZiAqYzMpKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKworICAgIG1lbWNweShjMSwgdSwgdWxlbiAqIChzaXplb2YgKmMxKSk7CisgICAgbWVtY3B5KGMyLCB1LCB1bGVuICogKHNpemVvZiAqYzIpKTsKKyAgICBtZW1jcHkoYzMsIHUsIHVsZW4gKiAoc2l6ZW9mICpjMykpOworCisgICAgaWYgKHUgPT0gdikgeworICAgICAgICBpZiAoIWZudF9hdXRvY29udm9sdXRlKGMxLCBuLCBQMSkgfHwKKyAgICAgICAgICAgICFmbnRfYXV0b2NvbnZvbHV0ZShjMiwgbiwgUDIpIHx8CisgICAgICAgICAgICAhZm50X2F1dG9jb252b2x1dGUoYzMsIG4sIFAzKSkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICgodnRtcCA9IG1wZF9jYWxsb2Mobiwgc2l6ZW9mICp2dG1wKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkodnRtcCwgdiwgdmxlbiAqIChzaXplb2YgKnZ0bXApKTsKKyAgICAgICAgaWYgKCFmbnRfY29udm9sdXRlKGMxLCB2dG1wLCBuLCBQMSkpIHsKKyAgICAgICAgICAgIG1wZF9mcmVlKHZ0bXApOworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkodnRtcCwgdiwgdmxlbiAqIChzaXplb2YgKnZ0bXApKTsKKyAgICAgICAgbXBkX3VpbnRfemVybyh2dG1wK3ZsZW4sIG4tdmxlbik7CisgICAgICAgIGlmICghZm50X2NvbnZvbHV0ZShjMiwgdnRtcCwgbiwgUDIpKSB7CisgICAgICAgICAgICBtcGRfZnJlZSh2dG1wKTsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisKKyAgICAgICAgbWVtY3B5KHZ0bXAsIHYsIHZsZW4gKiAoc2l6ZW9mICp2dG1wKSk7CisgICAgICAgIG1wZF91aW50X3plcm8odnRtcCt2bGVuLCBuLXZsZW4pOworICAgICAgICBpZiAoIWZudF9jb252b2x1dGUoYzMsIHZ0bXAsIG4sIFAzKSkgeworICAgICAgICAgICAgbXBkX2ZyZWUodnRtcCk7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIG1wZF9mcmVlKHZ0bXApOworICAgIH0KKworICAgIGNydDMoYzEsIGMyLCBjMywgKnJzaXplKTsKKworb3V0OgorI2lmZGVmIFBQUk8KKyAgICBtcGRfcmVzdG9yZV9mZW52KGN3KTsKKyNlbmRpZgorICAgIGlmIChjMikgbXBkX2ZyZWUoYzIpOworICAgIGlmIChjMykgbXBkX2ZyZWUoYzMpOworICAgIHJldHVybiBjMTsKKworbWFsbG9jX2Vycm9yOgorICAgIGlmIChjMSkgbXBkX2ZyZWUoYzEpOworICAgIGMxID0gTlVMTDsKKyAgICBnb3RvIG91dDsKK30KKworCisvKgorICogS2FyYXRzdWJhIG11bHRpcGxpY2F0aW9uIHdpdGggRk5UL2Jhc2VtdWwgYXMgdGhlIGJhc2UgY2FzZS4KKyAqLworc3RhdGljIGludAorX2thcmF0c3ViYV9yZWNfZm50KG1wZF91aW50X3QgKmMsIGNvbnN0IG1wZF91aW50X3QgKmEsIGNvbnN0IG1wZF91aW50X3QgKmIsCisgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCAqdywgbXBkX3NpemVfdCBsYSwgbXBkX3NpemVfdCBsYikKK3sKKyAgICBtcGRfc2l6ZV90IG0sIGx0OworCisgICAgYXNzZXJ0KGxhID49IGxiICYmIGxiID4gMCk7CisgICAgYXNzZXJ0KGxhIDw9IDMqKE1QRF9NQVhUUkFOU0ZPUk1fMk4vMikgfHwgdyAhPSBOVUxMKTsKKworICAgIGlmIChsYSA8PSAzKihNUERfTUFYVFJBTlNGT1JNXzJOLzIpKSB7CisKKyAgICAgICAgaWYgKGxiIDw9IDE5MikgeworICAgICAgICAgICAgX21wZF9iYXNlbXVsKGMsIGIsIGEsIGxiLCBsYSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfdWludF90ICpyZXN1bHQ7CisgICAgICAgICAgICBtcGRfc2l6ZV90IGR1bW15OworCisgICAgICAgICAgICBpZiAoKHJlc3VsdCA9IF9tcGRfZm50bXVsKGEsIGIsIGxhLCBsYiwgJmR1bW15KSkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtY3B5KGMsIHJlc3VsdCwgKGxhK2xiKSAqIChzaXplb2YgKnJlc3VsdCkpOworICAgICAgICAgICAgbXBkX2ZyZWUocmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBtID0gKGxhKzEpLzI7ICAvLyBjZWlsKGxhLzIpCisKKyAgICAvKiBsYiA8PSBtIDwgbGEgKi8KKyAgICBpZiAobGIgPD0gbSkgeworCisgICAgICAgIC8qIGxiIGNhbiBub3cgYmUgbGFyZ2VyIHRoYW4gbGEtbSAqLworICAgICAgICBpZiAobGIgPiBsYS1tKSB7CisgICAgICAgICAgICBsdCA9IGxiICsgbGIgKyAxOyAgICAgICAvLyBzcGFjZSBuZWVkZWQgZm9yIHJlc3VsdCBhcnJheQorICAgICAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgLy8gY2xlYXIgcmVzdWx0IGFycmF5CisgICAgICAgICAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudCh3LCBiLCBhK20sIHcrbHQsIGxiLCBsYS1tKSkgeyAvLyBiKmFoCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGx0ID0gKGxhLW0pICsgKGxhLW0pICsgMTsgIC8vIHNwYWNlIG5lZWRlZCBmb3IgcmVzdWx0IGFycmF5CisgICAgICAgICAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsgICAgICAvLyBjbGVhciByZXN1bHQgYXJyYXkKKyAgICAgICAgICAgIGlmICghX2thcmF0c3ViYV9yZWNfZm50KHcsIGErbSwgYiwgdytsdCwgbGEtbSwgbGIpKSB7IC8vIGFoKmIKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIF9tcGRfYmFzZWFkZHRvKGMrbSwgdywgKGxhLW0pK2xiKTsgLy8gYWRkIGFoKmIqQioqbQorCisgICAgICAgIGx0ID0gbSArIG0gKyAxOyAgICAgICAgIC8vIHNwYWNlIG5lZWRlZCBmb3IgdGhlIHJlc3VsdCBhcnJheQorICAgICAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsgICAvLyBjbGVhciByZXN1bHQgYXJyYXkKKyAgICAgICAgaWYgKCFfa2FyYXRzdWJhX3JlY19mbnQodywgYSwgYiwgdytsdCwgbSwgbGIpKSB7ICAvLyBhbCpiCisgICAgICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICB9CisgICAgICAgIF9tcGRfYmFzZWFkZHRvKGMsIHcsIG0rbGIpOyAgICAgICAvLyBhZGQgYWwqYgorCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIGxhID49IGxiID4gbSAqLworICAgIG1lbWNweSh3LCBhLCBtICogc2l6ZW9mICp3KTsKKyAgICB3W21dID0gMDsKKyAgICBfbXBkX2Jhc2VhZGR0byh3LCBhK20sIGxhLW0pOworCisgICAgbWVtY3B5KHcrKG0rMSksIGIsIG0gKiBzaXplb2YgKncpOworICAgIHdbbSsxK21dID0gMDsKKyAgICBfbXBkX2Jhc2VhZGR0byh3KyhtKzEpLCBiK20sIGxiLW0pOworCisgICAgaWYgKCFfa2FyYXRzdWJhX3JlY19mbnQoYyttLCB3LCB3KyhtKzEpLCB3KzIqKG0rMSksIG0rMSwgbSsxKSkgeworICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKworICAgIGx0ID0gKGxhLW0pICsgKGxhLW0pICsgMTsKKyAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsKKworICAgIGlmICghX2thcmF0c3ViYV9yZWNfZm50KHcsIGErbSwgYittLCB3K2x0LCBsYS1tLCBsYi1tKSkgeworICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKworICAgIF9tcGRfYmFzZWFkZHRvKGMrMiptLCB3LCAobGEtbSkgKyAobGItbSkpOworICAgIF9tcGRfYmFzZXN1YmZyb20oYyttLCB3LCAobGEtbSkgKyAobGItbSkpOworCisgICAgbHQgPSBtICsgbSArIDE7CisgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7CisKKyAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudCh3LCBhLCBiLCB3K2x0LCBtLCBtKSkgeworICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKyAgICBfbXBkX2Jhc2VhZGR0byhjLCB3LCBtK20pOworICAgIF9tcGRfYmFzZXN1YmZyb20oYyttLCB3LCBtK20pOworCisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBNdWx0aXBseSB1IGFuZCB2LCB1c2luZyBLYXJhdHN1YmEgbXVsdGlwbGljYXRpb24gd2l0aCB0aGUgRk5UIGFzIHRoZQorICogYmFzZSBjYXNlLiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgcmVzdWx0IG9yIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlCisgKiAobWFsbG9jIGVycm9yKS4gQ29uZGl0aW9uczogdWxlbiA+PSB2bGVuLCB1bGVuID49IDQuCisgKi8KK21wZF91aW50X3QgKgorX21wZF9rbXVsX2ZudChjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgICBtcGRfc2l6ZV90IHVsZW4sIG1wZF9zaXplX3QgdmxlbiwKKyAgICAgICAgICAgICAgbXBkX3NpemVfdCAqcnNpemUpCit7CisgICAgbXBkX3VpbnRfdCAqcmVzdWx0ID0gTlVMTCwgKncgPSBOVUxMOworICAgIG1wZF9zaXplX3QgbTsKKworICAgIGFzc2VydCh1bGVuID49IDQpOworICAgIGFzc2VydCh1bGVuID49IHZsZW4pOworCisgICAgKnJzaXplID0gX2ttdWxfcmVzdWx0c2l6ZSh1bGVuLCB2bGVuKTsKKyAgICBpZiAoKHJlc3VsdCA9IG1wZF9jYWxsb2MoKnJzaXplLCBzaXplb2YgKnJlc3VsdCkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbSA9IF9rbXVsX3dvcmtzaXplKHVsZW4sIDMqKE1QRF9NQVhUUkFOU0ZPUk1fMk4vMikpOworICAgIGlmIChtICYmICgodyA9IG1wZF9jYWxsb2MobSwgc2l6ZW9mICp3KSkgPT0gTlVMTCkpIHsKKyAgICAgICAgbXBkX2ZyZWUocmVzdWx0KTsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICByZXR1cm4gTlVMTDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKworICAgIGlmICghX2thcmF0c3ViYV9yZWNfZm50KHJlc3VsdCwgdSwgdiwgdywgdWxlbiwgdmxlbikpIHsKKyAgICAgICAgbXBkX2ZyZWUocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ID0gTlVMTDsKKyAgICB9CisKKworICAgIGlmICh3KSBtcGRfZnJlZSh3KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qIERlYWwgd2l0aCB0aGUgc3BlY2lhbCBjYXNlcyBvZiBtdWx0aXBseWluZyBpbmZpbml0aWVzLiAqLworc3RhdGljIHZvaWQKK19tcGRfcW11bF9pbmYobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICBpZiAobXBkX2lzemVybyhiKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBtcGRfc2lnbihhKV5tcGRfc2lnbihiKSwgTVBEX0lORik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQobXBkX2lzaW5maW5pdGUoYikpOworICAgIGlmIChtcGRfaXN6ZXJvKGEpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgbXBkX3NpZ24oYSlebXBkX3NpZ24oYiksIE1QRF9JTkYpOworICAgIH0KK30KKworLyoKKyAqIEludGVybmFsIGZ1bmN0aW9uOiBNdWx0aXBseSBhIGFuZCBiLiBfbXBkX3FtdWwgZGVhbHMgd2l0aCBzcGVjaWFscyBidXQKKyAqIGRvZXMgTk9UIGZpbmFsaXplIHRoZSByZXN1bHQuIFRoaXMgaXMgZm9yIHVzZSBpbiBtcGRfZm1hKCkuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9xbXVsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3QgKmJpZyA9IChtcGRfdCAqKWEsICpzbWFsbCA9IChtcGRfdCAqKWI7CisgICAgbXBkX3VpbnRfdCAqcmRhdGEgPSBOVUxMOworICAgIG1wZF91aW50X3QgcmJ1ZltNUERfTUlOQUxMT0NfTUFYXTsKKyAgICBtcGRfc2l6ZV90IHJzaXplLCBpOworCisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBfbXBkX3FtdWxfaW5mKHJlc3VsdCwgYSwgYiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzbWFsbC0+bGVuID4gYmlnLT5sZW4pIHsKKyAgICAgICAgX21wZF9wdHJzd2FwKCZiaWcsICZzbWFsbCk7CisgICAgfQorCisgICAgcnNpemUgPSBiaWctPmxlbiArIHNtYWxsLT5sZW47CisKKyAgICBpZiAoYmlnLT5sZW4gPT0gMSkgeworICAgICAgICBfbXBkX3NpbmdsZW11bChyZXN1bHQtPmRhdGEsIGJpZy0+ZGF0YVswXSwgc21hbGwtPmRhdGFbMF0pOworICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisgICAgaWYgKHJzaXplIDw9IChtcGRfc2l6ZV90KU1QRF9NSU5BTExPQ19NQVgpIHsKKyAgICAgICAgaWYgKGJpZy0+bGVuID09IDIpIHsKKyAgICAgICAgICAgIF9tcGRfbXVsXzJfbGUyKHJidWYsIGJpZy0+ZGF0YSwgc21hbGwtPmRhdGEsIHNtYWxsLT5sZW4pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3VpbnRfemVybyhyYnVmLCByc2l6ZSk7CisgICAgICAgICAgICBpZiAoc21hbGwtPmxlbiA9PSAxKSB7CisgICAgICAgICAgICAgICAgX21wZF9zaG9ydG11bChyYnVmLCBiaWctPmRhdGEsIGJpZy0+bGVuLCBzbWFsbC0+ZGF0YVswXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfbXBkX2Jhc2VtdWwocmJ1Ziwgc21hbGwtPmRhdGEsIGJpZy0+ZGF0YSwgc21hbGwtPmxlbiwgYmlnLT5sZW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCByc2l6ZSwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZvcihpID0gMDsgaSA8IHJzaXplOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdC0+ZGF0YVtpXSA9IHJidWZbaV07CisgICAgICAgIH0KKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorCisKKyAgICBpZiAoc21hbGwtPmxlbiA8PSAyNTYpIHsKKyAgICAgICAgcmRhdGEgPSBtcGRfY2FsbG9jKHJzaXplLCBzaXplb2YgKnJkYXRhKTsKKyAgICAgICAgaWYgKHJkYXRhICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChzbWFsbC0+bGVuID09IDEpIHsKKyAgICAgICAgICAgICAgICBfbXBkX3Nob3J0bXVsKHJkYXRhLCBiaWctPmRhdGEsIGJpZy0+bGVuLCBzbWFsbC0+ZGF0YVswXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfbXBkX2Jhc2VtdWwocmRhdGEsIHNtYWxsLT5kYXRhLCBiaWctPmRhdGEsIHNtYWxsLT5sZW4sIGJpZy0+bGVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChyc2l6ZSA8PSAxMDI0KSB7CisgICAgICAgIHJkYXRhID0gX21wZF9rbXVsKGJpZy0+ZGF0YSwgc21hbGwtPmRhdGEsIGJpZy0+bGVuLCBzbWFsbC0+bGVuLCAmcnNpemUpOworICAgIH0KKyAgICBlbHNlIGlmIChyc2l6ZSA8PSAzKk1QRF9NQVhUUkFOU0ZPUk1fMk4pIHsKKyAgICAgICAgcmRhdGEgPSBfbXBkX2ZudG11bChiaWctPmRhdGEsIHNtYWxsLT5kYXRhLCBiaWctPmxlbiwgc21hbGwtPmxlbiwgJnJzaXplKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJkYXRhID0gX21wZF9rbXVsX2ZudChiaWctPmRhdGEsIHNtYWxsLT5kYXRhLCBiaWctPmxlbiwgc21hbGwtPmxlbiwgJnJzaXplKTsKKyAgICB9CisKKyAgICBpZiAocmRhdGEgPT0gTlVMTCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1wZF9pc2R5bmFtaWNfZGF0YShyZXN1bHQpKSB7CisgICAgICAgIG1wZF9mcmVlKHJlc3VsdC0+ZGF0YSk7CisgICAgfQorICAgIHJlc3VsdC0+ZGF0YSA9IHJkYXRhOworICAgIHJlc3VsdC0+YWxsb2MgPSByc2l6ZTsKKyAgICBtcGRfc2V0X2R5bmFtaWNfZGF0YShyZXN1bHQpOworCisKK2ZpbmlzaDoKKyAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgbXBkX3NpZ24oYSlebXBkX3NpZ24oYikpOworICAgIHJlc3VsdC0+ZXhwID0gYmlnLT5leHAgKyBzbWFsbC0+ZXhwOworICAgIHJlc3VsdC0+bGVuID0gX21wZF9yZWFsX3NpemUocmVzdWx0LT5kYXRhLCByc2l6ZSk7CisgICAgLyogcmVzaXplIHRvIHNtYWxsZXIgY2Fubm90IGZhaWwgKi8KKyAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHJlc3VsdC0+bGVuLCBzdGF0dXMpOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKK30KKworLyogTXVsdGlwbHkgYSBhbmQgYi4gKi8KK3ZvaWQKK21wZF9xbXVsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBfbXBkX3FtdWwocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogTXVsdGlwbHkgYSBhbmQgYi4gU2V0IE5hTi9JbnZhbGlkX29wZXJhdGlvbiBpZiB0aGUgcmVzdWx0IGlzIGluZXhhY3QuICovCitzdGF0aWMgdm9pZAorX21wZF9xbXVsX2V4YWN0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisKKyAgICBtcGRfcW11bChyZXN1bHQsIGEsIGIsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICpzdGF0dXMgfD0gd29ya3N0YXR1czsKKyAgICBpZiAod29ya3N0YXR1cyAmIChNUERfSW5leGFjdHxNUERfUm91bmRlZHxNUERfQ2xhbXBlZCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgIH0KK30KKworLyogTXVsdGlwbHkgZGVjaW1hbCBhbmQgbXBkX3NzaXplX3QuICovCit2b2lkCittcGRfcW11bF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwKKyAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3NzaXplKCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FtdWwocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKKy8qIE11bHRpcGx5IGRlY2ltYWwgYW5kIG1wZF91aW50X3QuICovCit2b2lkCittcGRfcW11bF91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3VpbnQoJmJiLCBiLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcW11bChyZXN1bHQsIGEsICZiYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJmJiKTsKK30KKwordm9pZAorbXBkX3FtdWxfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xbXVsX3NzaXplKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcW11bF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xbXVsX3VpbnQocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKyNpZmRlZiBDT05GSUdfNjQKK3ZvaWQKK21wZF9xbXVsX2k2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50NjRfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcW11bF9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3FtdWxfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcW11bF91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorI2VuZGlmCisKKy8qIExpa2UgdGhlIG1pbnVzIG9wZXJhdG9yLiAqLwordm9pZAorbXBkX3FtaW51cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1wZF9pc3plcm8oYSkgJiYgY3R4LT5yb3VuZCAhPSBNUERfUk9VTkRfRkxPT1IpIHsKKyAgICAgICAgbXBkX3Fjb3B5X2FicyhyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfcWNvcHlfbmVnYXRlKHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBMaWtlIHRoZSBwbHVzIG9wZXJhdG9yLiAqLwordm9pZAorbXBkX3FwbHVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtcGRfaXN6ZXJvKGEpICYmIGN0eC0+cm91bmQgIT0gTVBEX1JPVU5EX0ZMT09SKSB7CisgICAgICAgIG1wZF9xY29weV9hYnMocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBUaGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciB0aGF0IGlzIHNtYWxsZXIgdGhhbiB0aGUgb3BlcmFuZC4gKi8KK3ZvaWQKK21wZF9xbmV4dF9taW51cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIE1QRF9ORVdfQ09OU1QodGlueSxNUERfUE9TLG1wZF9ldGlueShjdHgpLTEsMSwxLDEsMSk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGFzc2VydChtcGRfaXNpbmZpbml0ZShhKSk7CisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9jbGVhcl9mbGFncyhyZXN1bHQpOworICAgICAgICAgICAgbXBkX3FtYXhjb2VmZihyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChtcGRfaXNuYW4ocmVzdWx0KSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdC0+ZXhwID0gbXBkX2V0b3AoY3R4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF93b3JrY29udGV4dCgmd29ya2N0eCwgY3R4KTsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0ZMT09SOworCisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgaWYgKHdvcmtjdHguc3RhdHVzJihNUERfSW5leGFjdHxNUERfRXJyb3JzKSkgeworICAgICAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdvcmtjdHguc3RhdHVzID0gMDsKKyAgICBtcGRfcXN1YihyZXN1bHQsIGEsICZ0aW55LCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKK30KKworLyogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHRoYXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG9wZXJhbmQuICovCit2b2lkCittcGRfcW5leHRfcGx1cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgTVBEX05FV19DT05TVCh0aW55LE1QRF9QT1MsbXBkX2V0aW55KGN0eCktMSwxLDEsMSwxKTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0KG1wZF9pc2luZmluaXRlKGEpKTsKKyAgICAgICAgaWYgKG1wZF9pc3Bvc2l0aXZlKGEpKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX2NsZWFyX2ZsYWdzKHJlc3VsdCk7CisgICAgICAgICAgICBtcGRfcW1heGNvZWZmKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgaWYgKG1wZF9pc25hbihyZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIE1QRF9ORUcpOworICAgICAgICAgICAgcmVzdWx0LT5leHAgPSBtcGRfZXRvcChjdHgpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtcGRfd29ya2NvbnRleHQoJndvcmtjdHgsIGN0eCk7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9DRUlMSU5HOworCisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgaWYgKHdvcmtjdHguc3RhdHVzICYgKE1QRF9JbmV4YWN0fE1QRF9FcnJvcnMpKSB7CisgICAgICAgICpzdGF0dXMgfD0gKHdvcmtjdHguc3RhdHVzJk1QRF9FcnJvcnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29ya2N0eC5zdGF0dXMgPSAwOworICAgIG1wZF9xYWRkKHJlc3VsdCwgYSwgJnRpbnksICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICpzdGF0dXMgfD0gKHdvcmtjdHguc3RhdHVzJk1QRF9FcnJvcnMpOworfQorCisvKgorICogVGhlIG51bWJlciBjbG9zZXN0IHRvIHRoZSBmaXJzdCBvcGVyYW5kIHRoYXQgaXMgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzCisgKiB0aGUgc2Vjb25kIG9wZXJhbmQuCisgKi8KK3ZvaWQKK21wZF9xbmV4dF90b3dhcmQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjID0gX21wZF9jbXAoYSwgYik7CisgICAgaWYgKGMgPT0gMCkgeworICAgICAgICBtcGRfcWNvcHlfc2lnbihyZXN1bHQsIGEsIGIsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYyA8IDApIHsKKyAgICAgICAgbXBkX3FuZXh0X3BsdXMocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfcW5leHRfbWludXMocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7CisgICAgfQorCisgICAgaWYgKG1wZF9pc2luZmluaXRlKHJlc3VsdCkpIHsKKyAgICAgICAgKnN0YXR1cyB8PSAoTVBEX092ZXJmbG93fE1QRF9Sb3VuZGVkfE1QRF9JbmV4YWN0KTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX2FkamV4cChyZXN1bHQpIDwgY3R4LT5lbWluKSB7CisgICAgICAgICpzdGF0dXMgfD0gKE1QRF9VbmRlcmZsb3d8TVBEX1N1Ym5vcm1hbHxNUERfUm91bmRlZHxNUERfSW5leGFjdCk7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvKHJlc3VsdCkpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0NsYW1wZWQ7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBJbnRlcm5hbCBmdW5jdGlvbjogSW50ZWdlciBwb3dlciB3aXRoIG1wZF91aW50X3QgZXhwb25lbnQuIFRoZSBmdW5jdGlvbgorICogY2FuIGZhaWwgd2l0aCBNUERfTWFsbG9jX2Vycm9yLgorICoKKyAqIFRoZSBlcnJvciBpcyBlcXVhbCB0byB0aGUgZXJyb3IgaW5jdXJyZWQgaW4gay0xIG11bHRpcGxpY2F0aW9ucy4gQXNzdW1pbmcKKyAqIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlIHJlbGF0aXZlIGVycm9yIGluIGVhY2ggb3BlcmF0aW9uOgorICoKKyAqICAgYWJzKGVycikgPSA1ICogMTAqKi1wcmVjCisgKiAgIHJlc3VsdCA9IHgqKmsgKiAoMSArIGVycikqKihrLTEpCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9xcG93X3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsIG1wZF91aW50X3QgZXhwLAorICAgICAgICAgICAgICAgdWludDhfdCByZXN1bHRzaWduLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisgICAgbXBkX3VpbnRfdCBuOworCisgICAgaWYgKGV4cCA9PSAwKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCAwKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICByZXR1cm47IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisKKyAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGJhc2UsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG4gPSBtcGRfYml0c1ttcGRfYnNyKGV4cCldOworICAgIHdoaWxlIChuID4+PSAxKSB7CisgICAgICAgIG1wZF9xbXVsKHJlc3VsdCwgcmVzdWx0LCByZXN1bHQsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICAgICBpZiAoZXhwICYgbikgeworICAgICAgICAgICAgbXBkX3FtdWwocmVzdWx0LCByZXN1bHQsIGJhc2UsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkgfHwKKyAgICAgICAgICAgIChtcGRfaXN6ZXJvY29lZmYocmVzdWx0KSAmJiAod29ya3N0YXR1cyAmIE1QRF9DbGFtcGVkKSkpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgKnN0YXR1cyB8PSB3b3Jrc3RhdHVzOworICAgIG1wZF9zZXRfc2lnbihyZXN1bHQsIHJlc3VsdHNpZ24pOworfQorCisvKgorICogSW50ZXJuYWwgZnVuY3Rpb246IEludGVnZXIgcG93ZXIgd2l0aCBtcGRfdCBleHBvbmVudCwgdGJhc2UgYW5kIHRleHAKKyAqIGFyZSBtb2RpZmllZCEhIEZ1bmN0aW9uIGNhbiBmYWlsIHdpdGggTVBEX01hbGxvY19lcnJvci4KKyAqCisgKiBUaGUgZXJyb3IgaXMgZXF1YWwgdG8gdGhlIGVycm9yIGluY3VycmVkIGluIGsgbXVsdGlwbGljYXRpb25zLiBBc3N1bWluZworICogdGhlIHVwcGVyIGJvdW5kIGZvciB0aGUgcmVsYXRpdmUgZXJyb3IgaW4gZWFjaCBvcGVyYXRpb246CisgKgorICogICBhYnMoZXJyKSA9IDUgKiAxMCoqLXByZWMKKyAqICAgcmVzdWx0ID0geCoqayAqICgxICsgZXJyKSoqaworICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfcXBvd19tcGQobXBkX3QgKnJlc3VsdCwgbXBkX3QgKnRiYXNlLCBtcGRfdCAqdGV4cCwgdWludDhfdCByZXN1bHRzaWduLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjdHg7CisgICAgTVBEX05FV19DT05TVCh0d28sMCwwLDEsMSwxLDIpOworCisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y3R4KTsKKworICAgIC8qIHJlc2l6ZSB0byBzbWFsbGVyIGNhbm5vdCBmYWlsICovCisgICAgbXBkX3Fjb3B5KHJlc3VsdCwgJm9uZSwgc3RhdHVzKTsKKworICAgIHdoaWxlICghbXBkX2lzemVybyh0ZXhwKSkgeworICAgICAgICBpZiAobXBkX2lzb2RkKHRleHApKSB7CisgICAgICAgICAgICBtcGRfcW11bChyZXN1bHQsIHJlc3VsdCwgdGJhc2UsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICAgICAgICAgKnN0YXR1cyB8PSB3b3Jrc3RhdHVzOworICAgICAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocmVzdWx0KSB8fAorICAgICAgICAgICAgICAgIChtcGRfaXN6ZXJvY29lZmYocmVzdWx0KSAmJiAod29ya3N0YXR1cyAmIE1QRF9DbGFtcGVkKSkpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtcGRfcW11bCh0YmFzZSwgdGJhc2UsIHRiYXNlLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgbXBkX3FkaXZpbnQodGV4cCwgdGV4cCwgJnR3bywgJm1heGN0eCwgJndvcmtzdGF0dXMpOworICAgICAgICBpZiAobXBkX2lzbmFuKHRiYXNlKSB8fCBtcGRfaXNuYW4odGV4cCkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIHdvcmtzdGF0dXMmTVBEX0Vycm9ycywgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBtcGRfc2V0X3NpZ24ocmVzdWx0LCByZXN1bHRzaWduKTsKK30KKworLyoKKyAqIFRoZSBwb3dlciBmdW5jdGlvbiBmb3IgaW50ZWdlciBleHBvbmVudHMuIFJlbGF0aXZlIGVycm9yIF9iZWZvcmVfIHRoZQorICogZmluYWwgcm91bmRpbmcgdG8gcHJlYzoKKyAqICAgYWJzKHJlc3VsdCAtIGJhc2UqKmV4cCkgPCAwLjEgKiAxMCoqLXByZWMgKiBhYnMoYmFzZSoqZXhwKQorICovCitzdGF0aWMgdm9pZAorX21wZF9xcG93X2ludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwKKyAgICAgICAgICAgICAgdWludDhfdCByZXN1bHRzaWduLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIE1QRF9ORVdfU1RBVElDKHRiYXNlLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHRleHAsMCwwLDAsMCk7CisgICAgbXBkX3NzaXplX3QgbjsKKworCisgICAgbXBkX3dvcmtjb250ZXh0KCZ3b3JrY3R4LCBjdHgpOworICAgIHdvcmtjdHgucHJlYyArPSAoZXhwLT5kaWdpdHMgKyBleHAtPmV4cCArIDIpOworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfSEFMRl9FVkVOOworICAgIHdvcmtjdHguY2xhbXAgPSAwOworICAgIGlmIChtcGRfaXNuZWdhdGl2ZShleHApKSB7CisgICAgICAgIHdvcmtjdHgucHJlYyArPSAxOworICAgICAgICBtcGRfcWRpdigmdGJhc2UsICZvbmUsIGJhc2UsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBpZiAoKnN0YXR1cyZNUERfRXJyb3JzKSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KCZ0YmFzZSwgYmFzZSwgc3RhdHVzKSkgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgfQorCisgICAgbiA9IG1wZF9xYWJzX3VpbnQoZXhwLCAmd29ya2N0eC5zdGF0dXMpOworICAgIGlmICh3b3JrY3R4LnN0YXR1cyZNUERfSW52YWxpZF9vcGVyYXRpb24pIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkoJnRleHAsIGV4cCwgc3RhdHVzKSkgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfTkFOKTsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICAgICAgZ290byBmaW5pc2g7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgfQorICAgICAgICBfbXBkX3Fwb3dfbXBkKHJlc3VsdCwgJnRiYXNlLCAmdGV4cCwgcmVzdWx0c2lnbiwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfbXBkX3Fwb3dfdWludChyZXN1bHQsICZ0YmFzZSwgbiwgcmVzdWx0c2lnbiwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgfQorCisgICAgaWYgKG1wZF9pc2luZmluaXRlKHJlc3VsdCkpIHsKKyAgICAgICAgLyogZm9yIFJPVU5EX0RPV04sIFJPVU5EX0ZMT09SLCBldGMuICovCisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCBNUERfRVhQX0lORik7CisgICAgfQorCitmaW5pc2g6CisgICAgbXBkX2RlbCgmdGJhc2UpOworICAgIG1wZF9kZWwoJnRleHApOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIAorICogSWYgdGhlIGV4cG9uZW50IGlzIGluZmluaXRlIGFuZCBiYXNlIGVxdWFscyBvbmUsIHRoZSByZXN1bHQgaXMgb25lCisgKiB3aXRoIGEgY29lZmZpY2llbnQgb2YgbGVuZ3RoIHByZWMuIE90aGVyd2lzZSwgcmVzdWx0IGlzIHVuZGVmaW5lZC4KKyAqIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBhcmlzb24gYWdhaW5zdCBvbmUuCisgKi8KK3N0YXRpYyBpbnQKK19xY2hlY2tfcG93X29uZV9pbmYobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsIHVpbnQ4X3QgcmVzdWx0c2lnbiwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IHNoaWZ0OworICAgIGludCBjbXA7CisKKyAgICBpZiAoKGNtcCA9IF9tcGRfY21wKGJhc2UsICZvbmUpKSA9PSAwKSB7CisgICAgICAgIHNoaWZ0ID0gY3R4LT5wcmVjLTE7CisgICAgICAgIG1wZF9xc2hpZnRsKHJlc3VsdCwgJm9uZSwgc2hpZnQsIHN0YXR1cyk7CisgICAgICAgIHJlc3VsdC0+ZXhwID0gLXNoaWZ0OworICAgICAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgcmVzdWx0c2lnbik7CisgICAgICAgICpzdGF0dXMgfD0gKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkKTsKKyAgICB9CisKKyAgICByZXR1cm4gY21wOworfQorCisvKgorICogSWYgYWJzKGJhc2UpIGVxdWFscyBvbmUsIGNhbGN1bGF0ZSB0aGUgY29ycmVjdCBwb3dlciBvZiBvbmUgcmVzdWx0LgorICogT3RoZXJ3aXNlLCByZXN1bHQgaXMgdW5kZWZpbmVkLiBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBjb21wYXJpc29uCisgKiBhZ2FpbnN0IDEuCisgKgorICogVGhpcyBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiB0aGF0IGRvZXMgbm90IGNoZWNrIGZvciBzcGVjaWFscy4KKyAqLworc3RhdGljIGludAorX3FjaGVja19wb3dfb25lKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLAorICAgICAgICAgICAgICAgIHVpbnQ4X3QgcmVzdWx0c2lnbiwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisgICAgbXBkX3NzaXplX3Qgc2hpZnQ7CisgICAgaW50IGNtcDsKKworICAgIGlmICgoY21wID0gX21wZF9jbXBfYWJzKGJhc2UsICZvbmUpKSA9PSAwKSB7CisgICAgICAgIGlmIChfbXBkX2lzaW50KGV4cCkpIHsKKyAgICAgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShleHApKSB7CisgICAgICAgICAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIHJlc3VsdHNpZ24sIDEsIDApOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogMS4wMDAqKjMgPSAxLjAwMDAwMDAwMCAqLworICAgICAgICAgICAgbXBkX3FtdWxfc3NpemUocmVzdWx0LCBleHAsIC1iYXNlLT5leHAsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICAgICAgICAgaWYgKHdvcmtzdGF0dXMmTVBEX0Vycm9ycykgeworICAgICAgICAgICAgICAgICpzdGF0dXMgfD0gKHdvcmtzdGF0dXMmTVBEX0Vycm9ycyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBkaWdpdHMtMSBhZnRlciBleHBvbmVudGlhdGlvbiAqLworICAgICAgICAgICAgc2hpZnQgPSBtcGRfcWdldF9zc2l6ZShyZXN1bHQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgIC8qIHNoaWZ0IGlzIE1QRF9TU0laRV9NQVggaWYgcmVzdWx0IGlzIHRvbyBsYXJnZSAqLworICAgICAgICAgICAgaWYgKHNoaWZ0ID4gY3R4LT5wcmVjLTEpIHsKKyAgICAgICAgICAgICAgICBzaGlmdCA9IGN0eC0+cHJlYy0xOworICAgICAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX1JvdW5kZWQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzcG9zaXRpdmUoYmFzZSkpIHsKKyAgICAgICAgICAgIHNoaWZ0ID0gY3R4LT5wcmVjLTE7CisgICAgICAgICAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfUm91bmRlZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gLTI7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgfQorICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKHJlc3VsdCwgJm9uZSwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZXhwID0gLXNoaWZ0OworICAgICAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgcmVzdWx0c2lnbik7CisgICAgfQorCisgICAgcmV0dXJuIGNtcDsKK30KKworLyoKKyAqIERldGVjdCBjZXJ0YWluIG92ZXIvdW5kZXJmbG93IG9mIHgqKnkuCisgKiBBQ0wyIHByb29mOiBwb3ctYm91bmRzLmxpc3AuCisgKgorICogICBTeW1ib2xzOgorICoKKyAqICAgICBlOiBFWFBfSU5GIG9yIEVYUF9DTEFNUAorICogICAgIHg6IGJhc2UKKyAqICAgICB5OiBleHBvbmVudAorICoKKyAqICAgICBvbWVnYShlKSA9IGxvZzEwKGFicyhlKSkKKyAqICAgICB6ZXRhKHgpICA9IGxvZzEwKGFicyhsb2cxMCh4KSkpCisgKiAgICAgdGhldGEoeSkgPSBsb2cxMChhYnMoeSkpCisgKgorICogICBVcHBlciBhbmQgbG93ZXIgYm91bmRzOgorICoKKyAqICAgICB1Yl9vbWVnYShlKSA9IGNlaWwobG9nMTAoYWJzKGUpKSkKKyAqICAgICBsYl90aGV0YSh5KSA9IGZsb29yKGxvZzEwKGFicyh5KSkpCisgKgorICogICAgICAgICAgICAgICAgICB8IGZsb29yKGxvZzEwKGZsb29yKGFicyhsb2cxMCh4KSkpKSkgaWYgeCA8IDEvMTAgb3IgeCA+PSAxMAorICogICAgIGxiX3pldGEoeCkgPSB8IGZsb29yKGxvZzEwKGFicyh4LTEpLzEwKSkgaWYgMS8xMCA8PSB4IDwgMQorICogICAgICAgICAgICAgICAgICB8IGZsb29yKGxvZzEwKGFicygoeC0xKS8xMDApKSkgaWYgMSA8IHggPCAxMAorICoKKyAqICAgdWJfb21lZ2EoZSkgYW5kIGxiX3RoZXRhKHkpIGFyZSBvYnZpb3VzbHkgdXBwZXIgYW5kIGxvd2VyIGJvdW5kcworICogICBmb3Igb21lZ2EoZSkgYW5kIHRoZXRhKHkpLgorICoKKyAqICAgbGJfemV0YSBpcyBhIGxvd2VyIGJvdW5kIGZvciB6ZXRhKHgpOgorICoKKyAqICAgICB4IDwgMS8xMCBvciB4ID49IDEwOgorICoKKyAqICAgICAgIGFicyhsb2cxMCh4KSkgPj0gMSwgc28gdGhlIG91dGVyIGxvZzEwIGlzIHdlbGwgZGVmaW5lZC4gU2luY2UgbG9nMTAKKyAqICAgICAgIGlzIHN0cmljdGx5IGluY3JlYXNpbmcsIHRoZSBlbmQgcmVzdWx0IGlzIGEgbG93ZXIgYm91bmQuCisgKgorICogICAgIDEvMTAgPD0geCA8IDE6CisgKgorICogICAgICAgV2UgdXNlOiBsb2cxMCh4KSA8PSAoeC0xKS9sb2coMTApCisgKiAgICAgICAgICAgICAgIGFicyhsb2cxMCh4KSkgPj0gYWJzKHgtMSkvbG9nKDEwKQorICogICAgICAgICAgICAgICBhYnMobG9nMTAoeCkpID49IGFicyh4LTEpLzEwCisgKgorICogICAgIDEgPCB4IDwgMTA6CisgKgorICogICAgICAgV2UgdXNlOiAoeC0xKS8oeCpsb2coMTApKSA8IGxvZzEwKHgpCisgKiAgICAgICAgICAgICAgIGFicygoeC0xKS8xMDApIDwgYWJzKGxvZzEwKHgpKQorICoKKyAqICAgICAgIFhYWDogYWJzKCh4LTEpLzEwKSB3b3VsZCB3b3JrLCBuZWVkIEFDTDIgcHJvb2YuCisgKgorICoKKyAqICAgTGV0ICgwIDwgeCA8IDEgYW5kIHkgPCAwKSBvciAoeCA+IDEgYW5kIHkgPiAwKS4gICAgICAgICAgICAgICAgICAoSDEpCisgKiAgIExldCB1Yl9vbWVnYShleHBfaW5mKSA8IGxiX3pldGEoeCkgKyBsYl90aGV0YSh5KSAgICAgICAgICAgICAgICAgKEgyKQorICoKKyAqICAgVGhlbjoKKyAqICAgICAgIGxvZzEwKGFicyhleHBfaW5mKSkgPCBsb2cxMChhYnMobG9nMTAoeCkpKSArIGxvZzEwKGFicyh5KSkuICAgKDEpCisgKiAgICAgICAgICAgICAgICAgICBleHBfaW5mIDwgbG9nMTAoeCkgKiB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgyKQorICogICAgICAgICAgICAgICAxMCoqZXhwX2luZiA8IHgqKnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMykKKyAqCisgKiAgIExldCAoMCA8IHggPCAxIGFuZCB5ID4gMCkgb3IgKHggPiAxIGFuZCB5IDwgMCkuICAgICAgICAgICAgICAgICAgKEgzKQorICogICBMZXQgdWJfb21lZ2EoZXhwX2NsYW1wKSA8IGxiX3pldGEoeCkgKyBsYl90aGV0YSh5KSAgICAgICAgICAgICAgIChINCkKKyAqCisgKiAgIFRoZW46CisgKiAgICAgbG9nMTAoYWJzKGV4cF9jbGFtcCkpIDwgbG9nMTAoYWJzKGxvZzEwKHgpKSkgKyBsb2cxMChhYnMoeSkpLiAgICg0KQorICogICAgICAgICAgICAgIGxvZzEwKHgpICogeSA8IGV4cF9jbGFtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNSkKKyAqICAgICAgICAgICAgICAgICAgICAgIHgqKnkgPCAxMCoqZXhwX2NsYW1wICAgICAgICAgICAgICAgICAgICAgICAgICAgKDYpCisgKgorICovCitzdGF0aWMgbXBkX3NzaXplX3QKK19sb3dlcl9ib3VuZF96ZXRhKGNvbnN0IG1wZF90ICp4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworICAgIE1QRF9ORVdfU1RBVElDKHNjcmF0Y2gsMCwwLDAsMCk7CisgICAgbXBkX3NzaXplX3QgdCwgdTsKKworICAgIHQgPSBtcGRfYWRqZXhwKHgpOworICAgIGlmICh0ID4gMCkgeworICAgICAgICAvKiB4ID49IDEwIC0+IGZsb29yKGxvZzEwKGZsb29yKGFicyhsb2cxMCh4KSkpKSkgKi8KKyAgICAgICAgcmV0dXJuIG1wZF9leHBfZGlnaXRzKHQpIC0gMTsKKyAgICB9CisgICAgZWxzZSBpZiAodCA8IC0xKSB7CisgICAgICAgIC8qIHggPCAxLzEwIC0+IGZsb29yKGxvZzEwKGZsb29yKGFicyhsb2cxMCh4KSkpKSkgKi8KKyAgICAgICAgcmV0dXJuIG1wZF9leHBfZGlnaXRzKHQrMSkgLSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisgICAgICAgIG1wZF9xc3ViKCZzY3JhdGNoLCB4LCAmb25lLCAmbWF4Y3R4LCBzdGF0dXMpOworICAgICAgICBpZiAobXBkX2lzc3BlY2lhbCgmc2NyYXRjaCkpIHsKKyAgICAgICAgICAgIG1wZF9kZWwoJnNjcmF0Y2gpOworICAgICAgICAgICAgcmV0dXJuIE1QRF9TU0laRV9NQVg7CisgICAgICAgIH0KKyAgICAgICAgdSA9IG1wZF9hZGpleHAoJnNjcmF0Y2gpOworICAgICAgICBtcGRfZGVsKCZzY3JhdGNoKTsKKworICAgICAgICAvKiB0ID09IC0xLCAxLzEwIDw9IHggPCAxIC0+IGZsb29yKGxvZzEwKGFicyh4LTEpLzEwKSkKKyAgICAgICAgICogdCA9PSAwLCAgMSA8IHggPCAxMCAgICAtPiBmbG9vcihsb2cxMChhYnMoeC0xKS8xMDApKSAqLworICAgICAgICByZXR1cm4gKHQgPT0gMCkgPyB1LTIgOiB1LTE7CisgICAgfQorfQorCisvKgorICogRGV0ZWN0IGNhc2VzIG9mIGNlcnRhaW4gb3ZlcmZsb3cvdW5kZXJmbG93IGluIHRoZSBwb3dlciBmdW5jdGlvbi4KKyAqIEFzc3VtcHRpb25zOiB4ICE9IDEsIHkgIT0gMC4gVGhlIHByb29mIGFib3ZlIGlzIGZvciBwb3NpdGl2ZSB4LgorICogSWYgeCBpcyBuZWdhdGl2ZSBhbmQgeSBpcyBhbiBvZGQgaW50ZWdlciwgeCoqeSA9PSAtKGFicyh4KSoqeSksCisgKiBzbyB0aGUgYW5hbHlzaXMgZG9lcyBub3QgY2hhbmdlLgorICovCitzdGF0aWMgaW50CitfcWNoZWNrX3Bvd19ib3VuZHMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKngsIGNvbnN0IG1wZF90ICp5LAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgcmVzdWx0c2lnbiwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TSEFSRUQoYWJzX3gsIHgpOworICAgIG1wZF9zc2l6ZV90IHViX29tZWdhLCBsYl96ZXRhLCBsYl90aGV0YTsKKyAgICB1aW50OF90IHNpZ247CisKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKCZhYnNfeCk7CisKKyAgICBsYl90aGV0YSA9IG1wZF9hZGpleHAoeSk7CisgICAgbGJfemV0YSA9IF9sb3dlcl9ib3VuZF96ZXRhKCZhYnNfeCwgc3RhdHVzKTsKKyAgICBpZiAobGJfemV0YSA9PSBNUERfU1NJWkVfTUFYKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHNpZ24gPSAobXBkX2FkamV4cCgmYWJzX3gpIDwgMCkgXiBtcGRfc2lnbih5KTsKKyAgICBpZiAoc2lnbiA9PSAwKSB7CisgICAgICAgIC8qICgwIDwgfHh8IDwgMSBhbmQgeSA8IDApIG9yICh8eHwgPiAxIGFuZCB5ID4gMCkgKi8KKyAgICAgICAgdWJfb21lZ2EgPSBtcGRfZXhwX2RpZ2l0cyhjdHgtPmVtYXgpOworICAgICAgICBpZiAodWJfb21lZ2EgPCBsYl96ZXRhICsgbGJfdGhldGEpIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCBNUERfRVhQX0lORik7CisgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qICgwIDwgfHh8IDwgMSBhbmQgeSA+IDApIG9yICh8eHwgPiAxIGFuZCB5IDwgMCkuICovCisgICAgICAgIHViX29tZWdhID0gbXBkX2V4cF9kaWdpdHMobXBkX2V0aW55KGN0eCkpOworICAgICAgICBpZiAodWJfb21lZ2EgPCBsYl96ZXRhICsgbGJfdGhldGEpIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCBtcGRfZXRpbnkoY3R4KS0xKTsKKyAgICAgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICogVE9ETzogSW1wbGVtZW50IGFsZ29yaXRobSBmb3IgY29tcHV0aW5nIGV4YWN0IHBvd2VycyBmcm9tIGRlY2ltYWwucHkuCisgKiBJbiBvcmRlciB0byBwcmV2ZW50IGluZmluaXRlIGxvb3BzLCB0aGlzIGhhcyB0byBiZSBjYWxsZWQgYmVmb3JlCisgKiB1c2luZyBaaXYncyBzdHJhdGVneSBmb3IgY29ycmVjdCByb3VuZGluZy4KKyAqLworLyoKK3N0YXRpYyBpbnQKK19tcGRfcXBvd19leGFjdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgcmV0dXJuIDA7Cit9CisqLworCisvKgorICogVGhlIHBvd2VyIGZ1bmN0aW9uIGZvciByZWFsIGV4cG9uZW50cy4KKyAqICAgUmVsYXRpdmUgZXJyb3I6IGFicyhyZXN1bHQgLSBlKip5KSA8IGUqKnkgKiAxLzUgKiAxMCoqKC1wcmVjIC0gMSkKKyAqLworc3RhdGljIHZvaWQKK19tcGRfcXBvd19yZWFsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLAorICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBNUERfTkVXX1NUQVRJQyh0ZXhwLDAsMCwwLDApOworCisgICAgaWYgKCFtcGRfcWNvcHkoJnRleHAsIGV4cCwgc3RhdHVzKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJndvcmtjdHgpOworICAgIHdvcmtjdHgucHJlYyA9IChiYXNlLT5kaWdpdHMgPiBjdHgtPnByZWMpID8gYmFzZS0+ZGlnaXRzIDogY3R4LT5wcmVjOworICAgIHdvcmtjdHgucHJlYyArPSAoNCArIE1QRF9FWFBESUdJVFMpOworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfSEFMRl9FVkVOOworICAgIHdvcmtjdHguYWxsY3IgPSBjdHgtPmFsbGNyOworCisgICAgLyoKKyAgICAgKiBleHRyYSA6PSBNUERfRVhQRElHSVRTID0gTVBEX0VYUF9NQVhfVAorICAgICAqIHdwIDo9IHByZWMgKyA0ICsgZXh0cmEKKyAgICAgKiBhYnMoZXJyKSA8IDUgKiAxMCoqLXdwCisgICAgICogeSA6PSBsb2coYmFzZSkgKiBleHAKKyAgICAgKiBDYWxjdWxhdGU6CisgICAgICogICAxKSAgIGUqKih5ICogKDEgKyBlcnIpKioyKSAqICgxICsgZXJyKQorICAgICAqICAgICAgPSBlKip5ICogZSoqKHkgKiAoMiplcnIgKyBlcnIqKjIpKSAqICgxICsgZXJyKQorICAgICAqICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorICAgICAqIFJlbGF0aXZlIGVycm9yIG9mIHRoZSB1bmRlcmxpbmVkIHRlcm06CisgICAgICogICAyKSBhYnMoZSoqKHkgKiAoMiplcnIgKyBlcnIqKjIpKSAtIDEpCisgICAgICogQ2FzZSBhYnMoeSkgPj0gMTAqKmV4dHJhOgorICAgICAqICAgMykgYWRqZXhwKHkpKzEgPiBsb2cxMChhYnMoeSkpID49IGV4dHJhCisgICAgICogICBUaGlzIHRyaWdnZXJzIHRoZSBPdmVyZmxvdy9VbmRlcmZsb3cgc2hvcnRjdXQgaW4gX21wZF9xZXhwKCksCisgICAgICogICBzbyBubyBmdXJ0aGVyIGFuYWx5c2lzIGlzIG5lY2Vzc2FyeS4KKyAgICAgKiBDYXNlIGFicyh5KSA8IDEwKipleHRyYToKKyAgICAgKiAgIDQpIGFicyh5ICogKDIqZXJyICsgZXJyKioyKSkgPCAxLzUgKiAxMCoqKC1wcmVjIC0gMikKKyAgICAgKiAgIFVzZSAoc2VlIF9tcGRfcWV4cCk6CisgICAgICogICAgIDUpIGFicyh4KSA8PSA5LzEwICogMTAqKi1wID09PiBhYnMoZSoqeCAtIDEpIDwgMTAqKi1wCisgICAgICogICBXaXRoIDIpLCA0KSBhbmQgNSk6CisgICAgICogICAgIDYpIGFicyhlKiooeSAqICgyKmVyciArIGVycioqMikpIC0gMSkgPCAxMCoqKC1wcmVjIC0gMikKKyAgICAgKiAgIFRoZSBjb21wbGV0ZSByZWxhdGl2ZSBlcnJvciBvZiAxKSBpczoKKyAgICAgKiAgICAgNykgYWJzKHJlc3VsdCAtIGUqKnkpIDwgZSoqeSAqIDEvNSAqIDEwKiooLXByZWMgLSAxKQorICAgICAqLworICAgIG1wZF9xbG4ocmVzdWx0LCBiYXNlLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICBtcGRfcW11bChyZXN1bHQsIHJlc3VsdCwgJnRleHAsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgIG1wZF9xZXhwKHJlc3VsdCwgcmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKworICAgIG1wZF9kZWwoJnRleHApOworICAgICpzdGF0dXMgfD0gKHdvcmtjdHguc3RhdHVzJk1QRF9FcnJvcnMpOworICAgICpzdGF0dXMgfD0gKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkKTsKK30KKworLyogVGhlIHBvd2VyIGZ1bmN0aW9uOiBiYXNlKipleHAgKi8KK3ZvaWQKK21wZF9xcG93KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQ4X3QgcmVzdWx0c2lnbiA9IDA7CisgICAgaW50IGludGV4cCA9IDA7CisgICAgaW50IGNtcDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGJhc2UpIHx8IG1wZF9pc3NwZWNpYWwoZXhwKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYmFzZSwgZXhwLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobXBkX2lzaW50ZWdlcihleHApKSB7CisgICAgICAgIGludGV4cCA9IDE7CisgICAgICAgIHJlc3VsdHNpZ24gPSBtcGRfaXNuZWdhdGl2ZShiYXNlKSAmJiBtcGRfaXNvZGQoZXhwKTsKKyAgICB9CisKKyAgICBpZiAobXBkX2lzemVybyhiYXNlKSkgeworICAgICAgICBpZiAobXBkX2lzemVybyhleHApKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzbmVnYXRpdmUoZXhwKSkgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCByZXN1bHRzaWduLCBNUERfSU5GKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAwLCAwKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNuZWdhdGl2ZShiYXNlKSkgeworICAgICAgICBpZiAoIWludGV4cCB8fCBtcGRfaXNpbmZpbml0ZShleHApKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGV4cCkpIHsKKyAgICAgICAgLyogcG93ZXIgb2Ygb25lICovCisgICAgICAgIGNtcCA9IF9xY2hlY2tfcG93X29uZV9pbmYocmVzdWx0LCBiYXNlLCByZXN1bHRzaWduLCBjdHgsIHN0YXR1cyk7CisgICAgICAgIGlmIChjbXAgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY21wICo9IG1wZF9hcml0aF9zaWduKGV4cCk7CisgICAgICAgICAgICBpZiAoY21wIDwgMCkgeworICAgICAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAwLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgcmVzdWx0c2lnbiwgTVBEX0lORik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYmFzZSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm8oZXhwKSkgeworICAgICAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIHJlc3VsdHNpZ24sIDEsIDApOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc25lZ2F0aXZlKGV4cCkpIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAwLCAwKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgcmVzdWx0c2lnbiwgTVBEX0lORik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVybyhleHApKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoX3FjaGVja19wb3dfb25lKHJlc3VsdCwgYmFzZSwgZXhwLCByZXN1bHRzaWduLCBjdHgsIHN0YXR1cykgPT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChfcWNoZWNrX3Bvd19ib3VuZHMocmVzdWx0LCBiYXNlLCBleHAsIHJlc3VsdHNpZ24sIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGludGV4cCkgeworICAgICAgICBfbXBkX3Fwb3dfaW50KHJlc3VsdCwgYmFzZSwgZXhwLCByZXN1bHRzaWduLCBjdHgsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfbXBkX3Fwb3dfcmVhbChyZXN1bHQsIGJhc2UsIGV4cCwgY3R4LCBzdGF0dXMpOworICAgICAgICBpZiAoIW1wZF9pc3NwZWNpYWwocmVzdWx0KSAmJiBfbXBkX2NtcChyZXN1bHQsICZvbmUpID09IDApIHsKKyAgICAgICAgICAgIG1wZF9zc2l6ZV90IHNoaWZ0ID0gY3R4LT5wcmVjLTE7CisgICAgICAgICAgICBtcGRfcXNoaWZ0bChyZXN1bHQsICZvbmUsIHNoaWZ0LCBzdGF0dXMpOworICAgICAgICAgICAgcmVzdWx0LT5leHAgPSAtc2hpZnQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIC8qIGZvciBST1VORF9ET1dOLCBST1VORF9GTE9PUiwgZXRjLiAqLworICAgICAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDEsIE1QRF9FWFBfSU5GKTsKKyAgICAgICAgfQorICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgIH0KK30KKworLyoKKyAqIEludGVybmFsIGZ1bmN0aW9uOiBJbnRlZ2VyIHBvd21vZCB3aXRoIG1wZF91aW50X3QgZXhwb25lbnQsIGJhc2UgaXMgbW9kaWZpZWQhCisgKiBGdW5jdGlvbiBjYW4gZmFpbCB3aXRoIE1QRF9NYWxsb2NfZXJyb3IuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9xcG93bW9kX3VpbnQobXBkX3QgKnJlc3VsdCwgbXBkX3QgKmJhc2UsIG1wZF91aW50X3QgZXhwLAorICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX3QgKm1vZCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xY29weShyZXN1bHQsICZvbmUsIHN0YXR1cyk7CisKKyAgICB3aGlsZSAoZXhwID4gMCkgeworICAgICAgICBpZiAoZXhwICYgMSkgeworICAgICAgICAgICAgX21wZF9xbXVsX2V4YWN0KHJlc3VsdCwgcmVzdWx0LCBiYXNlLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgICAgIG1wZF9xcmVtKHJlc3VsdCwgcmVzdWx0LCBtb2QsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIF9tcGRfcW11bF9leGFjdChiYXNlLCBiYXNlLCBiYXNlLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FyZW0oYmFzZSwgYmFzZSwgbW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgZXhwID4+PSAxOworICAgIH0KK30KKworLyogVGhlIHBvd21vZCBmdW5jdGlvbjogKGJhc2UqKmV4cCkgJSBtb2QgKi8KK3ZvaWQKK21wZF9xcG93bW9kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLAorICAgICAgICAgICAgY29uc3QgbXBkX3QgKm1vZCwKKyAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUModGJhc2UsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUModGV4cCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyh0bW9kLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHRtcCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX0NPTlNUKHR3bywwLDAsMSwxLDEsMik7CisgICAgbXBkX3NzaXplX3QgdGJhc2VfZXhwLCB0ZXhwX2V4cDsKKyAgICBtcGRfc3NpemVfdCBpOworICAgIG1wZF90IHQ7CisgICAgbXBkX3VpbnRfdCByOworICAgIHVpbnQ4X3Qgc2lnbjsKKworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYmFzZSkgfHwgbXBkX2lzc3BlY2lhbChleHApIHx8IG1wZF9pc3NwZWNpYWwobW9kKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja18zbmFucyhyZXN1bHQsIGJhc2UsIGV4cCwgbW9kLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIGlmICghX21wZF9pc2ludChiYXNlKSB8fCAhX21wZF9pc2ludChleHApIHx8ICFfbXBkX2lzaW50KG1vZCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYobW9kKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1vZC0+ZGlnaXRzK21vZC0+ZXhwID4gY3R4LT5wcmVjKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpZ24gPSAobXBkX2lzbmVnYXRpdmUoYmFzZSkpICYmIChtcGRfaXNvZGQoZXhwKSk7CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihleHApKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYmFzZSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByID0gKF9tcGRfY21wX2Ficyhtb2QsICZvbmUpPT0wKSA/IDAgOiAxOworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgc2lnbiwgciwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGV4cCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYmFzZSkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIHNpZ24sIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworCisgICAgbXBkX3FyZXNjYWxlKCZ0bW9kLCBtb2QsIDAsICZtYXhjb250ZXh0LCAmbWF4Y29udGV4dC5zdGF0dXMpOworICAgIGlmIChtYXhjb250ZXh0LnN0YXR1cyZNUERfRXJyb3JzKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIG1heGNvbnRleHQuc3RhdHVzJk1QRF9FcnJvcnMsIHN0YXR1cyk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBtYXhjb250ZXh0LnN0YXR1cyA9IDA7CisgICAgbXBkX3NldF9wb3NpdGl2ZSgmdG1vZCk7CisKKyAgICBtcGRfcXJvdW5kX3RvX2ludCgmdGJhc2UsIGJhc2UsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9zZXRfcG9zaXRpdmUoJnRiYXNlKTsKKyAgICB0YmFzZV9leHAgPSB0YmFzZS5leHA7CisgICAgdGJhc2UuZXhwID0gMDsKKworICAgIG1wZF9xcm91bmRfdG9faW50KCZ0ZXhwLCBleHAsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIHRleHBfZXhwID0gdGV4cC5leHA7CisgICAgdGV4cC5leHAgPSAwOworCisgICAgLyogYmFzZSA9IChiYXNlLmludCAlIG1vZHVsbyAqIHBvdygxMCwgYmFzZS5leHAsIG1vZHVsbykpICUgbW9kdWxvICovCisgICAgbXBkX3FyZW0oJnRiYXNlLCAmdGJhc2UsICZ0bW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcXNoaWZ0bChyZXN1bHQsICZvbmUsIHRiYXNlX2V4cCwgc3RhdHVzKTsKKyAgICBtcGRfcXJlbShyZXN1bHQsIHJlc3VsdCwgJnRtb2QsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIF9tcGRfcW11bF9leGFjdCgmdGJhc2UsICZ0YmFzZSwgcmVzdWx0LCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcXJlbSgmdGJhc2UsICZ0YmFzZSwgJnRtb2QsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIGlmIChtcGRfaXNzcGVjaWFsKCZ0YmFzZSkgfHwKKyAgICAgICAgbXBkX2lzc3BlY2lhbCgmdGV4cCkgfHwKKyAgICAgICAgbXBkX2lzc3BlY2lhbCgmdG1vZCkpIHsKKyAgICAgICAgZ290byBtcGRfZXJyb3JzOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCB0ZXhwX2V4cDsgaSsrKSB7CisgICAgICAgIF9tcGRfcXBvd21vZF91aW50KCZ0bXAsICZ0YmFzZSwgMTAsICZ0bW9kLCBzdGF0dXMpOworICAgICAgICB0ID0gdG1wOworICAgICAgICB0bXAgPSB0YmFzZTsKKyAgICAgICAgdGJhc2UgPSB0OworICAgIH0KKyAgICBpZiAobXBkX2lzc3BlY2lhbCgmdGJhc2UpKSB7CisgICAgICAgIGdvdG8gbXBkX2Vycm9yczsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKworICAgIC8qIHJlc2l6ZSB0byBzbWFsbGVyIGNhbm5vdCBmYWlsICovCisgICAgbXBkX3Fjb3B5KHJlc3VsdCwgJm9uZSwgc3RhdHVzKTsKKyAgICB3aGlsZSAobXBkX2lzZmluaXRlKCZ0ZXhwKSAmJiAhbXBkX2lzemVybygmdGV4cCkpIHsKKyAgICAgICAgaWYgKG1wZF9pc29kZCgmdGV4cCkpIHsKKyAgICAgICAgICAgIF9tcGRfcW11bF9leGFjdChyZXN1bHQsIHJlc3VsdCwgJnRiYXNlLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgICAgIG1wZF9xcmVtKHJlc3VsdCwgcmVzdWx0LCAmdG1vZCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgX21wZF9xbXVsX2V4YWN0KCZ0YmFzZSwgJnRiYXNlLCAmdGJhc2UsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBtcGRfcXJlbSgmdGJhc2UsICZ0YmFzZSwgJnRtb2QsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBtcGRfcWRpdmludCgmdGV4cCwgJnRleHAsICZ0d28sICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIH0KKyAgICBpZiAobXBkX2lzc3BlY2lhbCgmdGV4cCkgfHwgbXBkX2lzc3BlY2lhbCgmdGJhc2UpIHx8CisgICAgICAgIG1wZF9pc3NwZWNpYWwoJnRtb2QpIHx8IG1wZF9pc3NwZWNpYWwocmVzdWx0KSkgeworICAgICAgICAvKiBNUERfTWFsbG9jX2Vycm9yICovCisgICAgICAgIGdvdG8gbXBkX2Vycm9yczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9zZXRfc2lnbihyZXN1bHQsIHNpZ24pOworICAgIH0KKworb3V0OgorICAgIG1wZF9kZWwoJnRiYXNlKTsKKyAgICBtcGRfZGVsKCZ0ZXhwKTsKKyAgICBtcGRfZGVsKCZ0bW9kKTsKKyAgICBtcGRfZGVsKCZ0bXApOworICAgIHJldHVybjsKKworbXBkX2Vycm9yczoKKyAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgIGdvdG8gb3V0OworfQorCit2b2lkCittcGRfcXF1YW50aXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF9zc2l6ZV90IGJfZXhwID0gYi0+ZXhwOworICAgIG1wZF9zc2l6ZV90IGV4cGRpZmYsIHNoaWZ0OworICAgIG1wZF91aW50X3Qgcm5kOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpICYmIG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChiLT5leHAgPiBjdHgtPmVtYXggfHwgYi0+ZXhwIDwgbXBkX2V0aW55KGN0eCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1wZF9pc3plcm8oYSkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIG1wZF9zaWduKGEpLCAwLCBiLT5leHApOworICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICBleHBkaWZmID0gYS0+ZXhwIC0gYi0+ZXhwOworICAgIGlmIChhLT5kaWdpdHMgKyBleHBkaWZmID4gY3R4LT5wcmVjKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChleHBkaWZmID49IDApIHsKKyAgICAgICAgc2hpZnQgPSBleHBkaWZmOworICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKHJlc3VsdCwgYSwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmV4cCA9IGJfZXhwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogQXQgdGhpcyBwb2ludCBleHBkaWZmIDwgMCBhbmQgYS0+ZGlnaXRzK2V4cGRpZmYgPD0gcHJlYywKKyAgICAgICAgICogc28gdGhlIHNoaWZ0IGJlZm9yZSBhbiBpbmNyZW1lbnQgd2lsbCBmaXQgaW4gcHJlYy4gKi8KKyAgICAgICAgc2hpZnQgPSAtZXhwZGlmZjsKKyAgICAgICAgcm5kID0gbXBkX3FzaGlmdHIocmVzdWx0LCBhLCBzaGlmdCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKHJuZCA9PSBNUERfVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmV4cCA9IGJfZXhwOworICAgICAgICBpZiAoIV9tcGRfYXBwbHlfcm91bmRfZml0KHJlc3VsdCwgcm5kLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB3b3Jrc3RhdHVzIHw9IE1QRF9Sb3VuZGVkOworICAgICAgICBpZiAocm5kKSB7CisgICAgICAgICAgICB3b3Jrc3RhdHVzIHw9IE1QRF9JbmV4YWN0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1wZF9hZGpleHAocmVzdWx0KSA+IGN0eC0+ZW1heCB8fAorICAgICAgICBtcGRfYWRqZXhwKHJlc3VsdCkgPCBtcGRfZXRpbnkoY3R4KSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAqc3RhdHVzIHw9IHdvcmtzdGF0dXM7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3FyZWR1Y2UobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3Qgc2hpZnQsIG1heGV4cCwgbWF4c2hpZnQ7CisgICAgdWludDhfdCBzaWduX2EgPSBtcGRfc2lnbihhKTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVybyhyZXN1bHQpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBzaWduX2EsIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hpZnQgPSBtcGRfdHJhaWxfemVyb3MocmVzdWx0KTsKKyAgICBtYXhleHAgPSAoY3R4LT5jbGFtcCkgPyBtcGRfZXRvcChjdHgpIDogY3R4LT5lbWF4OworICAgIC8qIEFmdGVyIHRoZSBmaW5hbGl6aW5nIGFib3ZlIHJlc3VsdC0+ZXhwIDw9IG1heGV4cC4gKi8KKyAgICBtYXhzaGlmdCA9IG1heGV4cCAtIHJlc3VsdC0+ZXhwOworICAgIHNoaWZ0ID0gKHNoaWZ0ID4gbWF4c2hpZnQpID8gbWF4c2hpZnQgOiBzaGlmdDsKKworICAgIG1wZF9xc2hpZnRyX2lucGxhY2UocmVzdWx0LCBzaGlmdCk7CisgICAgcmVzdWx0LT5leHAgKz0gc2hpZnQ7Cit9CisKK3ZvaWQKK21wZF9xcmVtKG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TVEFUSUMocSwwLDAsMCwwKTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyLCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyLCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkociwgYSwgc3RhdHVzKTsKKyAgICAgICAgICAgIG1wZF9xZmluYWxpemUociwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8qIGRlYnVnICovCisgICAgICAgIGFib3J0KCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyLCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9tcGRfcWRpdm1vZCgmcSwgciwgYSwgYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJnEpOworICAgIG1wZF9xZmluYWxpemUociwgY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcXJlbV9uZWFyKG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgTVBEX05FV19TVEFUSUMoYnRtcCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyhxLDAsMCwwLDApOworICAgIG1wZF9zc2l6ZV90IGV4cGRpZmYsIHFkaWdpdHM7CisgICAgaW50IGNtcCwgaXNvZGQsIGFsbG5pbmU7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMociwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHIsIGEsIHN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHIsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvKiBkZWJ1ZyAqLworICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsICBNUERfRGl2aXNpb25fdW5kZWZpbmVkLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsICBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChyID09IGIpIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkoJmJ0bXAsIGIsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyLCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGIgPSAmYnRtcDsKKyAgICB9CisKKyAgICBfbXBkX3FkaXZtb2QoJnEsIHIsIGEsIGIsIGN0eCwgc3RhdHVzKTsKKyAgICBpZiAobXBkX2lzbmFuKCZxKSB8fCBtcGRfaXNuYW4ocikpIHsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYocikpIHsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorCisgICAgZXhwZGlmZiA9IG1wZF9hZGpleHAoYikgLSBtcGRfYWRqZXhwKHIpOworICAgIGlmICgtMSA8PSBleHBkaWZmICYmIGV4cGRpZmYgPD0gMSkgeworCisgICAgICAgIGFsbG5pbmUgPSBtcGRfY29lZmZfaXNhbGxuaW5lKCZxKTsKKyAgICAgICAgcWRpZ2l0cyA9IHEuZGlnaXRzOworICAgICAgICBpc29kZCA9IG1wZF9pc29kZCgmcSk7CisKKyAgICAgICAgbXBkX21heGNvbnRleHQoJndvcmtjdHgpOworICAgICAgICBpZiAobXBkX3NpZ24oYSkgPT0gbXBkX3NpZ24oYikpIHsKKyAgICAgICAgICAgIC8qIHNpZ24ocikgPT0gc2lnbihiKSAqLworICAgICAgICAgICAgX21wZF9xc3ViKCZxLCByLCBiLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIHNpZ24ocikgIT0gc2lnbihiKSAqLworICAgICAgICAgICAgX21wZF9xYWRkKCZxLCByLCBiLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3Iociwgd29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycywgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisKKyAgICAgICAgY21wID0gX21wZF9jbXBfYWJzKCZxLCByKTsKKyAgICAgICAgaWYgKGNtcCA8IDAgfHwgKGNtcCA9PSAwICYmIGlzb2RkKSkgeworICAgICAgICAgICAgLyogYWJzKHIpID4gYWJzKGIpLzIgb3IgYWJzKHIpID09IGFicyhiKS8yIGFuZCBpc29kZChxdW90aWVudCkgKi8KKyAgICAgICAgICAgIGlmIChhbGxuaW5lICYmIHFkaWdpdHMgPT0gY3R4LT5wcmVjKSB7CisgICAgICAgICAgICAgICAgLyogYWJzKHF1b3RpZW50KSArIDEgPT0gMTAqKnByZWMgKi8KKyAgICAgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX0RpdmlzaW9uX2ltcG9zc2libGUsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtcGRfcWNvcHkociwgJnEsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICB9CisKKworZmluaXNoOgorICAgIG1wZF9kZWwoJmJ0bXApOworICAgIG1wZF9kZWwoJnEpOworICAgIG1wZF9xZmluYWxpemUociwgY3R4LCBzdGF0dXMpOworfQorCitzdGF0aWMgdm9pZAorX21wZF9xcmVzY2FsZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgZXhwLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3QgZXhwZGlmZiwgc2hpZnQ7CisgICAgbXBkX3VpbnRfdCBybmQ7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1wZF9pc3plcm8oYSkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIG1wZF9zaWduKGEpLCAwLCBleHApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZXhwZGlmZiA9IGEtPmV4cCAtIGV4cDsKKyAgICBpZiAoZXhwZGlmZiA+PSAwKSB7CisgICAgICAgIHNoaWZ0ID0gZXhwZGlmZjsKKyAgICAgICAgaWYgKGEtPmRpZ2l0cyArIHNoaWZ0ID4gTVBEX01BWF9QUkVDKzEpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKHJlc3VsdCwgYSwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmV4cCA9IGV4cDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNoaWZ0ID0gLWV4cGRpZmY7CisgICAgICAgIHJuZCA9IG1wZF9xc2hpZnRyKHJlc3VsdCwgYSwgc2hpZnQsIHN0YXR1cyk7CisgICAgICAgIGlmIChybmQgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5leHAgPSBleHA7CisgICAgICAgIF9tcGRfYXBwbHlfcm91bmRfZXhjZXNzKHJlc3VsdCwgcm5kLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX1JvdW5kZWQ7CisgICAgICAgIGlmIChybmQpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0luZXhhY3Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobXBkX2lzc3Vibm9ybWFsKHJlc3VsdCwgY3R4KSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9TdWJub3JtYWw7CisgICAgfQorfQorCisvKgorICogUmVzY2FsZSBhIG51bWJlciBzbyB0aGF0IGl0IGhhcyBleHBvbmVudCAnZXhwJy4gRG9lcyBub3QgcmVnYXJkIGNvbnRleHQKKyAqIHByZWNpc2lvbiwgZW1heCwgZW1pbiwgYnV0IHVzZXMgdGhlIHJvdW5kaW5nIG1vZGUuIFNwZWNpYWwgbnVtYmVycyBhcmUKKyAqIHF1aWV0bHkgY29waWVkLiBSZXN0cmljdGlvbnM6CisgKgorICogICAgIE1QRF9NSU5fRVRJTlkgPD0gZXhwIDw9IE1QRF9NQVhfRU1BWCsxCisgKiAgICAgcmVzdWx0LT5kaWdpdHMgPD0gTVBEX01BWF9QUkVDKzEKKyAqLwordm9pZAorbXBkX3FyZXNjYWxlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBleHAsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChleHAgPiBNUERfTUFYX0VNQVgrMSB8fCBleHAgPCBNUERfTUlOX0VUSU5ZKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9tcGRfcXJlc2NhbGUocmVzdWx0LCBhLCBleHAsIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIFNhbWUgYXMgbXBkX3FyZXNjYWxlLCBidXQgd2l0aCByZWxheGVkIHJlc3RyaWN0aW9ucy4gVGhlIHJlc3VsdCBvZiB0aGlzCisgKiBmdW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGZvciBmb3JtYXR0aW5nIGEgbnVtYmVyIGFuZCBuZXZlciBhcyBpbnB1dAorICogZm9yIG90aGVyIG9wZXJhdGlvbnMuCisgKgorICogICAgIE1QRF9NSU5fRVRJTlktTVBEX01BWF9QUkVDIDw9IGV4cCA8PSBNUERfTUFYX0VNQVgrMQorICogICAgIHJlc3VsdC0+ZGlnaXRzIDw9IE1QRF9NQVhfUFJFQysxCisgKi8KK3ZvaWQKK21wZF9xcmVzY2FsZV9mbXQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGV4cCwKKyAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChleHAgPiBNUERfTUFYX0VNQVgrMSB8fCBleHAgPCBNUERfTUlOX0VUSU5ZLU1QRF9NQVhfUFJFQykgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX3FyZXNjYWxlKHJlc3VsdCwgYSwgZXhwLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIFJvdW5kIHRvIGFuIGludGVnZXIgYWNjb3JkaW5nIHRvICdhY3Rpb24nIGFuZCBjdHgtPnJvdW5kLiAqLworZW51bSB7VE9fSU5UX0VYQUNULCBUT19JTlRfU0lMRU5ULCBUT19JTlRfVFJVTkN9Oworc3RhdGljIHZvaWQKK19tcGRfcXJvdW5kX3RvX2ludGVncmFsKGludCBhY3Rpb24sIG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3Qgcm5kOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoYS0+ZXhwID49IDApIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBtcGRfc2lnbihhKSwgMCwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBybmQgPSBtcGRfcXNoaWZ0cihyZXN1bHQsIGEsIC1hLT5leHAsIHN0YXR1cyk7CisgICAgaWYgKHJuZCA9PSBNUERfVUlOVF9NQVgpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXN1bHQtPmV4cCA9IDA7CisKKyAgICBpZiAoYWN0aW9uID09IFRPX0lOVF9FWEFDVCB8fCBhY3Rpb24gPT0gVE9fSU5UX1NJTEVOVCkgeworICAgICAgICBfbXBkX2FwcGx5X3JvdW5kX2V4Y2VzcyhyZXN1bHQsIHJuZCwgY3R4LCBzdGF0dXMpOworICAgICAgICBpZiAoYWN0aW9uID09IFRPX0lOVF9FWEFDVCkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfUm91bmRlZDsKKyAgICAgICAgICAgIGlmIChybmQpIHsKKyAgICAgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbmV4YWN0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkCittcGRfcXJvdW5kX3RvX2ludHgobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgICh2b2lkKV9tcGRfcXJvdW5kX3RvX2ludGVncmFsKFRPX0lOVF9FWEFDVCwgcmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xcm91bmRfdG9faW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgICh2b2lkKV9tcGRfcXJvdW5kX3RvX2ludGVncmFsKFRPX0lOVF9TSUxFTlQsIHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcXRydW5jKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgKHZvaWQpX21wZF9xcm91bmRfdG9faW50ZWdyYWwoVE9fSU5UX1RSVU5DLCByZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3FmbG9vcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9GTE9PUjsKKyAgICAodm9pZClfbXBkX3Fyb3VuZF90b19pbnRlZ3JhbChUT19JTlRfU0lMRU5ULCByZXN1bHQsIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndvcmtjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xY2VpbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4ID0gKmN0eDsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0NFSUxJTkc7CisgICAgKHZvaWQpX21wZF9xcm91bmRfdG9faW50ZWdyYWwoVE9fSU5UX1NJTEVOVCwgcmVzdWx0LCBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3b3JrY3R4LCBzdGF0dXMpOworfQorCitpbnQKK21wZF9zYW1lX3F1YW50dW0oY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgcmV0dXJuICgobXBkX2lzbmFuKGEpICYmIG1wZF9pc25hbihiKSkgfHwKKyAgICAgICAgICAgICAgICAobXBkX2lzaW5maW5pdGUoYSkgJiYgbXBkX2lzaW5maW5pdGUoYikpKTsKKyAgICB9CisKKyAgICByZXR1cm4gYS0+ZXhwID09IGItPmV4cDsKK30KKworLyogU2NoZWR1bGUgdGhlIGluY3JlYXNlIGluIHByZWNpc2lvbiBmb3IgdGhlIE5ld3RvbiBpdGVyYXRpb24uICovCitzdGF0aWMgaW5saW5lIGludAorcmVjcHJfc2NoZWR1bGVfcHJlYyhtcGRfc3NpemVfdCBrbGlzdFtNUERfTUFYX1BSRUNfTE9HMl0sCisgICAgICAgICAgICAgICAgICAgIG1wZF9zc2l6ZV90IG1heHByZWMsIG1wZF9zc2l6ZV90IGluaXRwcmVjKQoreworICAgIG1wZF9zc2l6ZV90IGs7CisgICAgaW50IGk7CisKKyAgICBhc3NlcnQobWF4cHJlYyA+IDAgJiYgaW5pdHByZWMgPiAwKTsKKyAgICBpZiAobWF4cHJlYyA8PSBpbml0cHJlYykgcmV0dXJuIC0xOworCisgICAgaSA9IDA7IGsgPSBtYXhwcmVjOworICAgIGRvIHsKKyAgICAgICAgayA9IChrKzEpIC8gMjsKKyAgICAgICAga2xpc3RbaSsrXSA9IGs7CisgICAgfSB3aGlsZSAoayA+IGluaXRwcmVjKTsKKworICAgIHJldHVybiBpLTE7Cit9CisKKy8qCisgKiBJbml0aWFsIGFwcHJveGltYXRpb24gZm9yIHRoZSByZWNpcHJvY2FsOgorICogICAga18wIDo9IE1QRF9SRElHSVRTLTIKKyAqICAgIHpfMCA6PSAxMCoqKC1rXzApICogZmxvb3IoMTAqKigyKmtfMCArIDIpIC8gZmxvb3IodiAqIDEwKiooa18wICsgMikpKQorICogQWJzb2x1dGUgZXJyb3I6CisgKiAgICB8MS92IC0gel8wfCA8IDEwKiooLWtfMCkKKyAqIEFDTDIgcHJvb2Y6IG1heGVycm9yLWludmVyc2UtYXBwcm94CisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FyZWNpcHJvY2FsX2FwcHJveChtcGRfdCAqeiwgY29uc3QgbXBkX3QgKnYsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCBwMTBkYXRhWzJdID0gezAsIG1wZF9wb3cxMFtNUERfUkRJR0lUUy0yXX07CisgICAgbXBkX3VpbnRfdCBkdW1teSwgd29yZDsKKyAgICBpbnQgbjsKKworICAgIGFzc2VydCh2LT5leHAgPT0gLXYtPmRpZ2l0cyk7CisKKyAgICBfbXBkX2dldF9tc2RpZ2l0cygmZHVtbXksICZ3b3JkLCB2LCBNUERfUkRJR0lUUyk7CisgICAgbiA9IG1wZF93b3JkX2RpZ2l0cyh3b3JkKTsKKyAgICB3b3JkICo9IG1wZF9wb3cxMFtNUERfUkRJR0lUUy1uXTsKKworICAgIG1wZF9xcmVzaXplKHosIDIsIHN0YXR1cyk7CisgICAgKHZvaWQpX21wZF9zaG9ydGRpdih6LT5kYXRhLCBwMTBkYXRhLCAyLCB3b3JkKTsKKworICAgIG1wZF9jbGVhcl9mbGFncyh6KTsKKyAgICB6LT5leHAgPSAtKE1QRF9SRElHSVRTLTIpOworICAgIHotPmxlbiA9ICh6LT5kYXRhWzFdID09IDApID8gMSA6IDI7CisgICAgbXBkX3NldGRpZ2l0cyh6KTsKK30KKworLyoKKyAqIFJlY2lwcm9jYWwsIGNhbGN1bGF0ZWQgd2l0aCBOZXd0b24ncyBNZXRob2QuIEFzc3VtcHRpb246IHJlc3VsdCAhPSBhLgorICogTk9URTogVGhlIGNvbW1lbnRzIGluIHRoZSBmdW5jdGlvbiBzaG93IHRoYXQgY2VydGFpbiBvcGVyYXRpb25zIGFyZQorICogZXhhY3QuIFRoZSBwcm9vZiBmb3IgdGhlIG1heGltdW0gZXJyb3IgaXMgdG9vIGxvbmcgdG8gZml0IGluIGhlcmUuCisgKiBBQ0wyIHByb29mOiBtYXhlcnJvci1pbnZlcnNlLWNvbXBsZXRlCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FyZWNpcHJvY2FsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB2YXJjb250ZXh0LCBtYXhjb250ZXh0OworICAgIG1wZF90ICp6ID0gcmVzdWx0OyAgICAgICAgIC8qIGN1cnJlbnQgYXBwcm94aW1hdGlvbiAqLworICAgIG1wZF90ICp2OyAgICAgICAgICAgICAgICAgIC8qIGEsIG5vcm1hbGl6ZWQgdG8gYSBudW1iZXIgYmV0d2VlbiAwLjEgYW5kIDEgKi8KKyAgICBNUERfTkVXX1NIQVJFRCh2dG1wLCBhKTsgICAvKiB2IHNoYXJlcyBkYXRhIHdpdGggYSAqLworICAgIE1QRF9ORVdfU1RBVElDKHMsMCwwLDAsMCk7IC8qIHRlbXBvcmFyeSB2YXJpYWJsZSAqLworICAgIE1QRF9ORVdfU1RBVElDKHQsMCwwLDAsMCk7IC8qIHRlbXBvcmFyeSB2YXJpYWJsZSAqLworICAgIE1QRF9ORVdfQ09OU1QodHdvLDAsMCwxLDEsMSwyKTsgLyogY29uc3QgMiAqLworICAgIG1wZF9zc2l6ZV90IGtsaXN0W01QRF9NQVhfUFJFQ19MT0cyXTsKKyAgICBtcGRfc3NpemVfdCBhZGosIG1heHByZWMsIGluaXRwcmVjOworICAgIHVpbnQ4X3Qgc2lnbiA9IG1wZF9zaWduKGEpOworICAgIGludCBpOworCisgICAgYXNzZXJ0KHJlc3VsdCAhPSBhKTsKKworICAgIHYgPSAmdnRtcDsKKyAgICBtcGRfY2xlYXJfZmxhZ3Modik7CisgICAgYWRqID0gdi0+ZGlnaXRzICsgdi0+ZXhwOworICAgIHYtPmV4cCA9IC12LT5kaWdpdHM7CisKKyAgICAvKiBJbml0aWFsIGFwcHJveGltYXRpb24gKi8KKyAgICBfbXBkX3FyZWNpcHJvY2FsX2FwcHJveCh6LCB2LCBzdGF0dXMpOworCisgICAgbXBkX21heGNvbnRleHQoJnZhcmNvbnRleHQpOworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICB2YXJjb250ZXh0LnJvdW5kID0gbWF4Y29udGV4dC5yb3VuZCA9IE1QRF9ST1VORF9UUlVOQzsKKyAgICB2YXJjb250ZXh0LmVtYXggPSBtYXhjb250ZXh0LmVtYXggPSBNUERfTUFYX0VNQVggKyAxMDA7CisgICAgdmFyY29udGV4dC5lbWluID0gbWF4Y29udGV4dC5lbWluID0gTVBEX01JTl9FTUlOIC0gMTAwOworICAgIG1heGNvbnRleHQucHJlYyA9IE1QRF9NQVhfUFJFQyArIDEwMDsKKworICAgIG1heHByZWMgPSBjdHgtPnByZWM7CisgICAgbWF4cHJlYyArPSAyOworICAgIGluaXRwcmVjID0gTVBEX1JESUdJVFMtMzsKKworICAgIGkgPSByZWNwcl9zY2hlZHVsZV9wcmVjKGtsaXN0LCBtYXhwcmVjLCBpbml0cHJlYyk7CisgICAgZm9yICg7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAvKiBMb29wIGludmFyaWFudDogei0+ZGlnaXRzIDw9IGtsaXN0W2ldKzcgKi8KKyAgICAgICAgIC8qIExldCBzIDo9IHoqKjIsIGV4YWN0IHJlc3VsdCAqLworICAgICAgICBfbXBkX3FtdWxfZXhhY3QoJnMsIHosIHosICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB2YXJjb250ZXh0LnByZWMgPSAyKmtsaXN0W2ldICsgNTsKKyAgICAgICAgaWYgKHYtPmRpZ2l0cyA+IHZhcmNvbnRleHQucHJlYykgeworICAgICAgICAgICAgLyogTGV0IHQgOj0gdiwgdHJ1bmNhdGVkIHRvIG4gPj0gMiprKzUgZnJhY3Rpb24gZGlnaXRzICovCisgICAgICAgICAgICBtcGRfcXNoaWZ0cigmdCwgdiwgdi0+ZGlnaXRzLXZhcmNvbnRleHQucHJlYywgc3RhdHVzKTsKKyAgICAgICAgICAgIHQuZXhwID0gLXZhcmNvbnRleHQucHJlYzsKKyAgICAgICAgICAgIC8qIExldCB0IDo9IHRydW5jKHYpKnMsIHRydW5jYXRlZCB0byBuID49IDIqaysxIGZyYWN0aW9uIGRpZ2l0cyAqLworICAgICAgICAgICAgbXBkX3FtdWwoJnQsICZ0LCAmcywgJnZhcmNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7IC8qIHYtPmRpZ2l0cyA8PSAyKmsrNSAqLworICAgICAgICAgICAgLyogTGV0IHQgOj0gdipzLCB0cnVuY2F0ZWQgdG8gbiA+PSAyKmsrMSBmcmFjdGlvbiBkaWdpdHMgKi8KKyAgICAgICAgICAgIG1wZF9xbXVsKCZ0LCB2LCAmcywgJnZhcmNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgLyogTGV0IHMgOj0gMip6LCBleGFjdCByZXN1bHQgKi8KKyAgICAgICAgX21wZF9xbXVsX2V4YWN0KCZzLCB6LCAmdHdvLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgLyogcy5kaWdpdHMgPCB0LmRpZ2l0cyA8PSAyKmsrNSwgfGFkamV4cChzKS1hZGpleHAodCl8IDw9IDEsCisgICAgICAgICAqIHNvIHRoZSBzdWJ0cmFjdGlvbiBnZW5lcmF0ZXMgYXQgbW9zdCAyKmsrNiA8PSBrbGlzdFtpKzFdKzcKKyAgICAgICAgICogZGlnaXRzLiBUaGUgbG9vcCBpbnZhcmlhbnQgaXMgcHJlc2VydmVkLiAqLworICAgICAgICBfbXBkX3FzdWJfZXhhY3QoeiwgJnMsICZ0LCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9pc3NwZWNpYWwoeikpIHsKKyAgICAgICAgei0+ZXhwIC09IGFkajsKKyAgICAgICAgbXBkX3NldF9mbGFncyh6LCBzaWduKTsKKyAgICB9CisKKyAgICBtcGRfZGVsKCZzKTsKKyAgICBtcGRfZGVsKCZ0KTsKKyAgICBtcGRfcWZpbmFsaXplKHosIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIEludGVybmFsIGZ1bmN0aW9uIGZvciBsYXJnZSBudW1iZXJzOgorICoKKyAqICAgICBxLCByID0gZGl2bW9kKGNvZWZmKGEpLCBjb2VmZihiKSkKKyAqCisgKiBTdHJhdGVneTogTXVsdGlwbHkgdGhlIGRpdmlkZW5kIGJ5IHRoZSByZWNpcHJvY2FsIG9mIHRoZSBkaXZpc29yLiBUaGUKKyAqIGluZXhhY3QgcmVzdWx0IGlzIGZpeGVkIGJ5IGEgc21hbGwgbG9vcCwgdXNpbmcgYXQgbW9zdCBvbmUgaXRlcmF0aW9uLgorICoKKyAqIEFDTDIgcHJvb2ZzOgorICogLS0tLS0tLS0tLS0tCisgKiAgICAxKSBxIGlzIGEgbmF0dXJhbCBudW1iZXIuICAobmRpdm1vZC1xdW90aWVudC1uYXRwKQorICogICAgMikgciBpcyBhIG5hdHVyYWwgbnVtYmVyLiAgKG5kaXZtb2QtcmVtYWluZGVyLW5hdHApCisgKiAgICAzKSBhID0gcSAqIGIgKyByICAgICAgICAgICAobmRpdm1vZC1xKmIrcj09YSkKKyAqICAgIDQpIHIgPCBiICAgICAgICAgICAgICAgICAgIChuZGl2bW9kLXJlbWFpbmRlci08LWIpCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX2Jhc2VfbmRpdm1vZChtcGRfdCAqcSwgbXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIG1wZF90ICpxcSA9IHEsICpyciA9IHI7CisgICAgbXBkX3QgYWEsIGJiOworICAgIGludCBrOworCisgICAgX21wZF9jb3B5X3NoYXJlZCgmYWEsIGEpOworICAgIF9tcGRfY29weV9zaGFyZWQoJmJiLCBiKTsKKworICAgIG1wZF9zZXRfcG9zaXRpdmUoJmFhKTsKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKCZiYik7CisgICAgYWEuZXhwID0gMDsKKyAgICBiYi5leHAgPSAwOworCisgICAgaWYgKHEgPT0gYSB8fCBxID09IGIpIHsKKyAgICAgICAgaWYgKChxcSA9IG1wZF9xbmV3KCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICB9CisgICAgfQorICAgIGlmIChyID09IGEgfHwgciA9PSBiKSB7CisgICAgICAgIGlmICgocnIgPSBtcGRfcW5ldygpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZ3b3JrY3R4KTsKKworICAgIC8qIExldCBwcmVjIDo9IGFkaWdpdHMgLSBiZGlnaXRzICsgNCAqLworICAgIHdvcmtjdHgucHJlYyA9IGEtPmRpZ2l0cyAtIGItPmRpZ2l0cyArIDEgKyAzOworICAgIGlmIChhLT5kaWdpdHMgPiBNUERfTUFYX1BSRUMgfHwgd29ya2N0eC5wcmVjID4gTVBEX01BWF9QUkVDKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0RpdmlzaW9uX2ltcG9zc2libGU7CisgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgIH0KKworICAgIC8qIExldCB4IDo9IF9tcGRfcXJlY2lwcm9jYWwoYiwgcHJlYykgCisgICAgICogVGhlbiB4IGlzIGJvdW5kZWQgYnk6CisgICAgICogICAgMSkgMS9iIC0gMTAqKigtcHJlYyAtIGJkaWdpdHMpIDwgeCA8IDEvYiArIDEwKiooLXByZWMgLSBiZGlnaXRzKQorICAgICAqICAgIDIpIDEvYiAtIDEwKiooLWFkaWdpdHMgLSA0KSA8IHggPCAxL2IgKyAxMCoqKC1hZGlnaXRzIC0gNCkKKyAgICAgKi8KKyAgICBfbXBkX3FyZWNpcHJvY2FsKHJyLCAmYmIsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworCisgICAgLyogR2V0IGFuIGVzdGltYXRlIGZvciB0aGUgcXVvdGllbnQuIExldCBxIDo9IGEgKiB4CisgICAgICogVGhlbiBxIGlzIGJvdW5kZWQgYnk6CisgICAgICogICAgMykgYS9iIC0gMTAqKi00IDwgcSA8IGEvYiArIDEwKiotNAorICAgICAqLworICAgIF9tcGRfcW11bChxcSwgJmFhLCByciwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgLyogVHJ1bmNhdGUgcSB0byBhbiBpbnRlZ2VyOgorICAgICAqICAgIDQpIGEvYiAtIDIgPCB0cnVuYyhxKSA8IGEvYiArIDEKKyAgICAgKi8KKyAgICBtcGRfcXRydW5jKHFxLCBxcSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisKKyAgICB3b3JrY3R4LnByZWMgPSBhYS5kaWdpdHMgKyAzOworICAgIHdvcmtjdHguZW1heCA9IE1QRF9NQVhfRU1BWCArIDM7CisgICAgd29ya2N0eC5lbWluID0gTVBEX01JTl9FTUlOIC0gMzsKKyAgICAvKiBNdWx0aXBseSB0aGUgZXN0aW1hdGUgZm9yIHEgYnkgYjoKKyAgICAgKiAgICA1KSBhIC0gMiAqIGIgPCB0cnVuYyhxKSAqIGIgPCBhICsgYgorICAgICAqLworICAgIF9tcGRfcW11bChyciwgJmJiLCBxcSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgLyogR2V0IHRoZSBlc3RpbWF0ZSBmb3IgciBzdWNoIHRoYXQgYSA9IHEgKiBiICsgci4gKi8KKyAgICBfbXBkX3FzdWJfZXhhY3QocnIsICZhYSwgcnIsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworCisgICAgLyogRml4IHRoZSByZXN1bHQuIEF0IHRoaXMgcG9pbnQgLWIgPCByIDwgMipiLCBzbyB0aGUgY29ycmVjdGlvbiBsb29wCisgICAgICAgdGFrZXMgYXQgbW9zdCBvbmUgaXRlcmF0aW9uLiAqLworICAgIGZvciAoayA9IDA7OyBrKyspIHsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocXEpIHx8IG1wZF9pc3NwZWNpYWwocnIpKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICB9CisgICAgICAgIGlmIChrID4gMikgeyAvKiBBbGxvdyB0d28gaXRlcmF0aW9ucyBkZXNwaXRlIHRoZSBwcm9vZi4gKi8KKyAgICAgICAgICAgIG1wZF9lcnJfd2FybigibGlibXBkZWM6IGludGVybmFsIGVycm9yIGluICIgICAgICAgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICJfbXBkX2Jhc2VfbmRpdm1vZDogcGxlYXNlIHJlcG9ydCIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsgICAgICAgICAgICAgICAgIC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgICAgIC8qIHIgPCAwICovCisgICAgICAgIGVsc2UgaWYgKF9tcGRfY21wKCZ6ZXJvLCBycikgPT0gMSkgeworICAgICAgICAgICAgX21wZF9xYWRkX2V4YWN0KHJyLCByciwgJmJiLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIF9tcGRfcWFkZF9leGFjdChxcSwgcXEsICZtaW51c19vbmUsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICB9CisgICAgICAgIC8qIDAgPD0gciA8IGIgKi8KKyAgICAgICAgZWxzZSBpZiAoX21wZF9jbXAocnIsICZiYikgPT0gLTEpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8qIHIgPj0gYiAqLworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9tcGRfcXN1Yl9leGFjdChyciwgcnIsICZiYiwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgICAgICBfbXBkX3FhZGRfZXhhY3QocXEsIHFxLCAmb25lLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChxcSAhPSBxKSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KHEsIHFxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICB9CisgICAgICAgIG1wZF9kZWwocXEpOworICAgIH0KKyAgICBpZiAocnIgIT0gcikgeworICAgICAgICBpZiAoIW1wZF9xY29weShyLCByciwgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgfQorICAgICAgICBtcGRfZGVsKHJyKTsKKyAgICB9CisKKyAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKKyAgICByZXR1cm47CisKKworbmFucmVzdWx0OgorICAgIGlmIChxcSAmJiBxcSAhPSBxKSBtcGRfZGVsKHFxKTsKKyAgICBpZiAocnIgJiYgcnIgIT0gcikgbXBkX2RlbChycik7CisgICAgbXBkX3NldHNwZWNpYWwocSwgTVBEX1BPUywgTVBEX05BTik7CisgICAgbXBkX3NldHNwZWNpYWwociwgTVBEX1BPUywgTVBEX05BTik7Cit9CisKKy8qIExJQk1QREVDX09OTFkgKi8KKy8qCisgKiBTY2hlZHVsZSB0aGUgb3B0aW1hbCBwcmVjaXNpb24gaW5jcmVhc2UgZm9yIHRoZSBOZXd0b24gaXRlcmF0aW9uLgorICogICB2IDo9IGlucHV0IG9wZXJhbmQKKyAqICAgel8wIDo9IGluaXRpYWwgYXBwcm94aW1hdGlvbgorICogICBpbml0cHJlYyA6PSBuYXR1cmFsIG51bWJlciBzdWNoIHRoYXQgYWJzKHNxcnQodikgLSB6XzApIDwgMTAqKi1pbml0cHJlYworICogICBtYXhwcmVjIDo9IHRhcmdldCBwcmVjaXNpb24KKyAqCisgKiBGb3IgY29udmVuaWVuY2UgdGhlIG91dHB1dCBrbGlzdCBjb250YWlucyB0aGUgZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlcjoKKyAqICAga2xpc3QgOj0gW2tfbi0xLCAuLi4sIGtfMF0sIHdoZXJlCisgKiAgICAgMSkga18wIDw9IGluaXRwcmVjIGFuZAorICogICAgIDIpIGFicyhzcXJ0KHYpIC0gcmVzdWx0KSA8IDEwKiooLTIqa19uLTEgKyAyKSA8PSAxMCoqLW1heHByZWMuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitpbnZyb290X3NjaGVkdWxlX3ByZWMobXBkX3NzaXplX3Qga2xpc3RbTVBEX01BWF9QUkVDX0xPRzJdLAorICAgICAgICAgICAgICAgICAgICAgIG1wZF9zc2l6ZV90IG1heHByZWMsIG1wZF9zc2l6ZV90IGluaXRwcmVjKQoreworICAgIG1wZF9zc2l6ZV90IGs7CisgICAgaW50IGk7CisKKyAgICBhc3NlcnQobWF4cHJlYyA+PSAzICYmIGluaXRwcmVjID49IDMpOworICAgIGlmIChtYXhwcmVjIDw9IGluaXRwcmVjKSByZXR1cm4gLTE7CisKKyAgICBpID0gMDsgayA9IG1heHByZWM7CisgICAgZG8geworICAgICAgICBrID0gKGsrMykgLyAyOworICAgICAgICBrbGlzdFtpKytdID0gazsKKyAgICB9IHdoaWxlIChrID4gaW5pdHByZWMpOworCisgICAgcmV0dXJuIGktMTsKK30KKworLyoKKyAqIEluaXRpYWwgYXBwcm94aW1hdGlvbiBmb3IgdGhlIGludmVyc2Ugc3F1YXJlIHJvb3QgZnVuY3Rpb24uCisgKiAgIElucHV0OgorICogICAgIHYgOj0gcmF0aW9uYWwgbnVtYmVyLCB3aXRoIDEgPD0gdiA8IDEwMAorICogICAgIHZoYXQgOj0gZmxvb3IodiAqIDEwKio2KQorICogICBPdXRwdXQ6CisgKiAgICAgeiA6PSBhcHByb3hpbWF0aW9uIHRvIDEvc3FydCh2KSwgc3VjaCB0aGF0IGFicyh6IC0gMS9zcXJ0KHYpKSA8IDEwKiotMy4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitfaW52cm9vdF9pbml0X2FwcHJveChtcGRfdCAqeiwgbXBkX3VpbnRfdCB2aGF0KQoreworICAgIG1wZF91aW50X3QgbG8gPSAxMDAwOworICAgIG1wZF91aW50X3QgaGkgPSAxMDAwMDsKKyAgICBtcGRfdWludF90IGEsIHNxOworCisgICAgYXNzZXJ0KGxvKmxvIDw9IHZoYXQgJiYgdmhhdCA8IChoaSsxKSooaGkrMSkpOworCisgICAgZm9yKDs7KSB7CisgICAgICAgIGEgPSAobG8gKyBoaSkgLyAyOworICAgICAgICBzcSA9IGEgKiBhOworICAgICAgICBpZiAodmhhdCA+PSBzcSkgeworICAgICAgICAgICAgaWYgKHZoYXQgPCBzcSArIDIqYSArIDEpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxvID0gYSArIDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBoaSA9IGEgLSAxOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBBZnRlciB0aGUgYmluYXJ5IHNlYXJjaCB3ZSBoYXZlOgorICAgICAqICAxKSBhKioyIDw9IGZsb29yKHYgKiAxMCoqNikgPCAoYSArIDEpKioyCisgICAgICogVGhpcyBpbXBsaWVzOgorICAgICAqICAyKSBhKioyIDw9IHYgKiAxMCoqNiA8IChhICsgMSkqKjIKKyAgICAgKiAgMykgYSA8PSBzcXJ0KHYpICogMTAqKjMgPCBhICsgMQorICAgICAqIFNpbmNlIDEwKiozIDw9IGE6CisgICAgICogIDQpIDAgPD0gMTAqKnByZWMvYSAtIDEvc3FydCh2KSA8IDEwKiotcHJlYworICAgICAqIFdlIGhhdmU6CisgICAgICogIDUpIDEwKiozL2EgLSAxMCoqLTMgPCBmbG9vcigxMCoqOS9hKSAqIDEwKiotNiA8PSAxMCoqMy9hCisgICAgICogTWVyZ2luZyA0KSBhbmQgNSk6CisgICAgICogIDYpIGFicyhmbG9vcigxMCoqOS9hKSAqIDEwKiotNiAtIDEvc3FydCh2KSkgPCAxMCoqLTMKKyAgICAgKi8KKyAgICBtcGRfbWluYWxsb2Moeik7CisgICAgbXBkX2NsZWFyX2ZsYWdzKHopOworICAgIHotPmRhdGFbMF0gPSAxMDAwMDAwMDAwVUwgLyBhOworICAgIHotPmxlbiA9IDE7CisgICAgei0+ZXhwID0gLTY7CisgICAgbXBkX3NldGRpZ2l0cyh6KTsKK30KKworLyoKKyAqIFNldCAncmVzdWx0JyB0byAxL3NxcnQoYSkuCisgKiAgIFJlbGF0aXZlIGVycm9yOiBhYnMocmVzdWx0IC0gMS9zcXJ0KGEpKSA8IDEwKiotcHJlYyAqIDEvc3FydChhKQorICovCitzdGF0aWMgdm9pZAorX21wZF9xaW52cm9vdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgdmFyY29udGV4dCwgbWF4Y29udGV4dDsKKyAgICBtcGRfdCAqeiA9IHJlc3VsdDsgICAgICAgICAvKiBjdXJyZW50IGFwcHJveGltYXRpb24gKi8KKyAgICBtcGRfdCAqdjsgICAgICAgICAgICAgICAgICAvKiBhLCBub3JtYWxpemVkIHRvIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgMTAwICovCisgICAgTVBEX05FV19TSEFSRUQodnRtcCwgYSk7ICAgLyogYnkgZGVmYXVsdCB2IHdpbGwgc2hhcmUgZGF0YSB3aXRoIGEgKi8KKyAgICBNUERfTkVXX1NUQVRJQyhzLDAsMCwwLDApOyAvKiB0ZW1wb3JhcnkgdmFyaWFibGUgKi8KKyAgICBNUERfTkVXX1NUQVRJQyh0LDAsMCwwLDApOyAvKiB0ZW1wb3JhcnkgdmFyaWFibGUgKi8KKyAgICBNUERfTkVXX0NPTlNUKG9uZV9oYWxmLDAsLTEsMSwxLDEsNSk7CisgICAgTVBEX05FV19DT05TVCh0aHJlZSwwLDAsMSwxLDEsMyk7CisgICAgbXBkX3NzaXplX3Qga2xpc3RbTVBEX01BWF9QUkVDX0xPRzJdOworICAgIG1wZF9zc2l6ZV90IGlkZWFsX2V4cCwgc2hpZnQ7CisgICAgbXBkX3NzaXplX3QgYWRqLCB0ejsKKyAgICBtcGRfc3NpemVfdCBtYXhwcmVjLCBmcmFjZGlnaXRzOworICAgIG1wZF91aW50X3QgdmhhdCwgZHVtbXk7CisgICAgaW50IGksIG47CisKKworICAgIGlkZWFsX2V4cCA9IC0oYS0+ZXhwIC0gKGEtPmV4cCAmIDEpKSAvIDI7CisKKyAgICB2ID0gJnZ0bXA7CisgICAgaWYgKHJlc3VsdCA9PSBhKSB7CisgICAgICAgIGlmICgodiA9IG1wZF9xbmNvcHkoYSkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBub3JtYWxpemUgYSB0byAxIDw9IHYgPCAxMDAgKi8KKyAgICBpZiAoKHYtPmRpZ2l0cyt2LT5leHApICYgMSkgeworICAgICAgICBmcmFjZGlnaXRzID0gdi0+ZGlnaXRzIC0gMTsKKyAgICAgICAgdi0+ZXhwID0gLWZyYWNkaWdpdHM7CisgICAgICAgIG4gPSAodi0+ZGlnaXRzID4gNykgPyA3IDogKGludCl2LT5kaWdpdHM7CisgICAgICAgIC8qIExldCB2aGF0IDo9IGZsb29yKHYgKiAxMCoqKDIqaW5pdHByZWMpKSAqLworICAgICAgICBfbXBkX2dldF9tc2RpZ2l0cygmZHVtbXksICZ2aGF0LCB2LCBuKTsKKyAgICAgICAgaWYgKG4gPCA3KSB7CisgICAgICAgICAgICB2aGF0ICo9IG1wZF9wb3cxMFs3LW5dOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmcmFjZGlnaXRzID0gdi0+ZGlnaXRzIC0gMjsKKyAgICAgICAgdi0+ZXhwID0gLWZyYWNkaWdpdHM7CisgICAgICAgIG4gPSAodi0+ZGlnaXRzID4gOCkgPyA4IDogKGludCl2LT5kaWdpdHM7CisgICAgICAgIC8qIExldCB2aGF0IDo9IGZsb29yKHYgKiAxMCoqKDIqaW5pdHByZWMpKSAqLworICAgICAgICBfbXBkX2dldF9tc2RpZ2l0cygmZHVtbXksICZ2aGF0LCB2LCBuKTsKKyAgICAgICAgaWYgKG4gPCA4KSB7CisgICAgICAgICAgICB2aGF0ICo9IG1wZF9wb3cxMFs4LW5dOworICAgICAgICB9CisgICAgfQorICAgIGFkaiA9IChhLT5leHAtdi0+ZXhwKSAvIDI7CisKKyAgICAvKiBpbml0aWFsIGFwcHJveGltYXRpb24gKi8KKyAgICBfaW52cm9vdF9pbml0X2FwcHJveCh6LCB2aGF0KTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfbWF4Y29udGV4dCgmdmFyY29udGV4dCk7CisgICAgdmFyY29udGV4dC5yb3VuZCA9IE1QRF9ST1VORF9UUlVOQzsKKyAgICBtYXhwcmVjID0gY3R4LT5wcmVjICsgMTsKKworICAgIC8qIGluaXRwcmVjID09IDMgKi8KKyAgICBpID0gaW52cm9vdF9zY2hlZHVsZV9wcmVjKGtsaXN0LCBtYXhwcmVjLCAzKTsKKyAgICBmb3IgKDsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgdmFyY29udGV4dC5wcmVjID0gMiprbGlzdFtpXSsyOworICAgICAgICBtcGRfcW11bCgmcywgeiwgeiwgJm1heGNvbnRleHQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgaWYgKHYtPmRpZ2l0cyA+IHZhcmNvbnRleHQucHJlYykgeworICAgICAgICAgICAgc2hpZnQgPSB2LT5kaWdpdHMgLSB2YXJjb250ZXh0LnByZWM7CisgICAgICAgICAgICBtcGRfcXNoaWZ0cigmdCwgdiwgc2hpZnQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgIHQuZXhwICs9IHNoaWZ0OworICAgICAgICAgICAgbXBkX3FtdWwoJnQsICZ0LCAmcywgJnZhcmNvbnRleHQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9xbXVsKCZ0LCB2LCAmcywgJnZhcmNvbnRleHQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBtcGRfcXN1YigmdCwgJnRocmVlLCAmdCwgJm1heGNvbnRleHQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgbXBkX3FtdWwoeiwgeiwgJnQsICZ2YXJjb250ZXh0LCAmd29ya3N0YXR1cyk7CisgICAgICAgIG1wZF9xbXVsKHosIHosICZvbmVfaGFsZiwgJm1heGNvbnRleHQsICZ3b3Jrc3RhdHVzKTsKKyAgICB9CisKKyAgICB6LT5leHAgLT0gYWRqOworCisgICAgdHogPSBtcGRfdHJhaWxfemVyb3MocmVzdWx0KTsKKyAgICBzaGlmdCA9IGlkZWFsX2V4cCAtIHJlc3VsdC0+ZXhwOworICAgIHNoaWZ0ID0gKHR6ID4gc2hpZnQpID8gc2hpZnQgOiB0ejsKKyAgICBpZiAoc2hpZnQgPiAwKSB7CisgICAgICAgIG1wZF9xc2hpZnRyX2lucGxhY2UocmVzdWx0LCBzaGlmdCk7CisgICAgICAgIHJlc3VsdC0+ZXhwICs9IHNoaWZ0OworICAgIH0KKworCisgICAgbXBkX2RlbCgmcyk7CisgICAgbXBkX2RlbCgmdCk7CisgICAgaWYgKHYgIT0gJnZ0bXApIG1wZF9kZWwodik7CisgICAgKnN0YXR1cyB8PSAod29ya3N0YXR1cyZNUERfRXJyb3JzKTsKKyAgICAqc3RhdHVzIHw9IChNUERfUm91bmRlZHxNUERfSW5leGFjdCk7Cit9CisKK3ZvaWQKK21wZF9xaW52cm9vdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLyogcG9zaXRpdmUgaW5maW5pdHkgKi8KKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDAsIG1wZF9ldGlueShjdHgpKTsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfQ2xhbXBlZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVybyhhKSkgeworICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIG1wZF9zaWduKGEpLCBNUERfSU5GKTsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfRGl2aXNpb25fYnlfemVybzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5wcmVjICs9IDI7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisgICAgX21wZF9xaW52cm9vdChyZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisvKiBFTkQgTElCTVBERUNfT05MWSAqLworCisvKiBBbGdvcml0aG0gZnJvbSBkZWNpbWFsLnB5ICovCit2b2lkCittcGRfcXNxcnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyhjLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHEsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUMociwwLDAsMCwwKTsKKyAgICBNUERfTkVXX0NPTlNUKHR3bywwLDAsMSwxLDEsMik7CisgICAgbXBkX3NzaXplX3QgcHJlYywgaWRlYWxfZXhwOworICAgIG1wZF9zc2l6ZV90IGwsIHNoaWZ0OworICAgIGludCBleGFjdCA9IDA7CisKKworICAgIGlkZWFsX2V4cCA9IChhLT5leHAgLSAoYS0+ZXhwICYgMSkpIC8gMjsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX0lORik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm8oYSkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIG1wZF9zaWduKGEpLCAwLCBpZGVhbF9leHApOworICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgcHJlYyA9IGN0eC0+cHJlYyArIDE7CisKKyAgICBpZiAoIW1wZF9xY29weSgmYywgYSwgc3RhdHVzKSkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisgICAgYy5leHAgPSAwOworCisgICAgaWYgKGEtPmV4cCAmIDEpIHsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmYywgJmMsIDEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgICAgIGwgPSAoYS0+ZGlnaXRzID4+IDEpICsgMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGwgPSAoYS0+ZGlnaXRzICsgMSkgPj4gMTsKKyAgICB9CisKKyAgICBzaGlmdCA9IHByZWMgLSBsOworICAgIGlmIChzaGlmdCA+PSAwKSB7CisgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJmMsICZjLCAyKnNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBleGFjdCA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBleGFjdCA9ICFtcGRfcXNoaWZ0cl9pbnBsYWNlKCZjLCAtMipzaGlmdCk7CisgICAgfQorCisgICAgaWRlYWxfZXhwIC09IHNoaWZ0OworCisgICAgLyogZmluZCByZXN1bHQgPSBmbG9vcihzcXJ0KGMpKSB1c2luZyBOZXd0b24ncyBtZXRob2QgKi8KKyAgICBpZiAoIW1wZF9xc2hpZnRsKHJlc3VsdCwgJm9uZSwgcHJlYywgc3RhdHVzKSkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBfbXBkX3FkaXZtb2QoJnEsICZyLCAmYywgcmVzdWx0LCAmbWF4Y29udGV4dCwgJm1heGNvbnRleHQuc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocmVzdWx0KSB8fCBtcGRfaXNzcGVjaWFsKCZxKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgbWF4Y29udGV4dC5zdGF0dXMmTVBEX0Vycm9ycywgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIGlmIChfbXBkX2NtcChyZXN1bHQsICZxKSA8PSAwKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBfbXBkX3FhZGRfZXhhY3QocmVzdWx0LCByZXN1bHQsICZxLCAmbWF4Y29udGV4dCwgJm1heGNvbnRleHQuc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocmVzdWx0KSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgbWF4Y29udGV4dC5zdGF0dXMmTVBEX0Vycm9ycywgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIF9tcGRfcWRpdm1vZChyZXN1bHQsICZyLCByZXN1bHQsICZ0d28sICZtYXhjb250ZXh0LCAmbWF4Y29udGV4dC5zdGF0dXMpOworICAgIH0KKworICAgIGlmIChleGFjdCkgeworICAgICAgICBfbXBkX3FtdWxfZXhhY3QoJnIsIHJlc3VsdCwgcmVzdWx0LCAmbWF4Y29udGV4dCwgJm1heGNvbnRleHQuc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwoJnIpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBtYXhjb250ZXh0LnN0YXR1cyZNUERfRXJyb3JzLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgZXhhY3QgPSAoX21wZF9jbXAoJnIsICZjKSA9PSAwKTsKKyAgICB9CisKKyAgICBpZiAoZXhhY3QpIHsKKyAgICAgICAgaWYgKHNoaWZ0ID49IDApIHsKKyAgICAgICAgICAgIG1wZF9xc2hpZnRyX2lucGxhY2UocmVzdWx0LCBzaGlmdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKHJlc3VsdCwgcmVzdWx0LCAtc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZGVhbF9leHAgKz0gc2hpZnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbnQgbHNkID0gKGludCltcGRfbHNkKHJlc3VsdC0+ZGF0YVswXSk7CisgICAgICAgIGlmIChsc2QgPT0gMCB8fCBsc2QgPT0gNSkgeworICAgICAgICAgICAgcmVzdWx0LT5kYXRhWzBdICs9IDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQtPmV4cCA9IGlkZWFsX2V4cDsKKworCitvdXQ6CisgICAgbXBkX2RlbCgmYyk7CisgICAgbXBkX2RlbCgmcSk7CisgICAgbXBkX2RlbCgmcik7CisgICAgbWF4Y29udGV4dCA9ICpjdHg7CisgICAgbWF4Y29udGV4dC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIHJldHVybjsKKworbWFsbG9jX2Vycm9yOgorICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgZ290byBvdXQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSBjb252ZXJzaW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBTcGFjZSBuZWVkZWQgdG8gcmVwcmVzZW50IGFuIGludGVnZXIgbXBkX3QgaW4gYmFzZSAnYmFzZScuICovCitzaXplX3QKK21wZF9zaXplaW5iYXNlKGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiYXNlKQoreworICAgIGRvdWJsZSB4OworICAgIHNpemVfdCBkaWdpdHM7CisKKyAgICBhc3NlcnQobXBkX2lzaW50ZWdlcihhKSk7CisgICAgYXNzZXJ0KGJhc2UgPj0gMik7CisKKyAgICBpZiAobXBkX2lzemVybyhhKSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBkaWdpdHMgPSBhLT5kaWdpdHMrYS0+ZXhwOworICAgIGFzc2VydChkaWdpdHMgPiAwKTsKKworI2lmZGVmIENPTkZJR182NAorICAgIC8qIGNlaWwoMjcxMTQzNzE1MjU5OTI5NCAvIGxvZzEwKDIpKSArIDQgPT0gMioqNTMgKi8KKyAgICBpZiAoZGlnaXRzID4gMjcxMTQzNzE1MjU5OTI5NFVMTCkgeworICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgfQorI2VuZGlmCisKKyAgICB4ID0gKGRvdWJsZSlkaWdpdHMgLyBsb2cxMChiYXNlKTsKKyAgICByZXR1cm4gKHggPiBTSVpFX01BWC0xKSA/IFNJWkVfTUFYIDogKHNpemVfdCl4ICsgMTsKK30KKworLyogU3BhY2UgbmVlZGVkIHRvIGltcG9ydCBhIGJhc2UgJ2Jhc2UnIGludGVnZXIgb2YgbGVuZ3RoICdzcmNsZW4nLiAqLworc3RhdGljIG1wZF9zc2l6ZV90CitfbXBkX2ltcG9ydHNpemUoc2l6ZV90IHNyY2xlbiwgdWludDMyX3QgYmFzZSkKK3sKKyAgICBkb3VibGUgeDsKKworICAgIGFzc2VydChzcmNsZW4gPiAwKTsKKyAgICBhc3NlcnQoYmFzZSA+PSAyKTsKKworI2lmIFNJWkVfTUFYID09IFVJTlQ2NF9NQVgKKyAgICBpZiAoc3JjbGVuID4gKDFVTEw8PDUzKSkgeworICAgICAgICByZXR1cm4gTVBEX1NTSVpFX01BWDsKKyAgICB9CisjZW5kaWYKKworICAgIHggPSAoZG91YmxlKXNyY2xlbiAqIChsb2cxMChiYXNlKS9NUERfUkRJR0lUUyk7CisgICAgcmV0dXJuICh4ID49IE1QRF9NQVhJTVBPUlQpID8gTVBEX1NTSVpFX01BWCA6IChtcGRfc3NpemVfdCl4ICsgMTsKK30KKworc3RhdGljIHVpbnQ4X3QKK21wZF9yZXNpemVfdTE2KHVpbnQxNl90ICoqdywgc2l6ZV90IG5tZW1iKQoreworICAgIHVpbnQ4X3QgZXJyID0gMDsKKyAgICAqdyA9IG1wZF9yZWFsbG9jKCp3LCBubWVtYiwgc2l6ZW9mICoqdywgJmVycik7CisgICAgcmV0dXJuICFlcnI7Cit9CisKK3N0YXRpYyB1aW50OF90CittcGRfcmVzaXplX3UzMih1aW50MzJfdCAqKncsIHNpemVfdCBubWVtYikKK3sKKyAgICB1aW50OF90IGVyciA9IDA7CisgICAgKncgPSBtcGRfcmVhbGxvYygqdywgbm1lbWIsIHNpemVvZiAqKncsICZlcnIpOworICAgIHJldHVybiAhZXJyOworfQorCitzdGF0aWMgc2l6ZV90CitfYmFzZWNvbnZfdG9fdTE2KHVpbnQxNl90ICoqdywgc2l6ZV90IHdsZW4sIG1wZF91aW50X3Qgd2Jhc2UsCisgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgKnUsIG1wZF9zc2l6ZV90IHVsZW4pCit7CisgICAgc2l6ZV90IG4gPSAwOworCisgICAgYXNzZXJ0KHdsZW4gPiAwICYmIHVsZW4gPiAwKTsKKyAgICBhc3NlcnQod2Jhc2UgPD0gKDFVPDwxNikpOworCisgICAgZG8geworICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICBpZiAoIW1wZF9yZXNpemVfdTE2KHcsIG4rMSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICB9CisgICAgICAgICgqdylbbisrXSA9ICh1aW50MTZfdClfbXBkX3Nob3J0ZGl2KHUsIHUsIHVsZW4sIHdiYXNlKTsKKyAgICAgICAgLyogdWxlbiBpcyBhdCBsZWFzdCAxLiB1W3VsZW4tMV0gY2FuIG9ubHkgYmUgemVybyBpZiB1bGVuID09IDEuICovCisgICAgICAgIHVsZW4gPSBfbXBkX3JlYWxfc2l6ZSh1LCB1bGVuKTsKKworICAgIH0gd2hpbGUgKHVbdWxlbi0xXSAhPSAwKTsKKworICAgIHJldHVybiBuOworfQorCitzdGF0aWMgc2l6ZV90CitfY29lZmZfZnJvbV91MTYobXBkX3QgKncsIG1wZF9zc2l6ZV90IHdsZW4sCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX3VpbnRfdCAqdSwgc2l6ZV90IHVsZW4sIHVpbnQzMl90IHViYXNlLAorICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3QgbiA9IDA7CisgICAgbXBkX3VpbnRfdCBjYXJyeTsKKworICAgIGFzc2VydCh3bGVuID4gMCAmJiB1bGVuID4gMCk7CisgICAgYXNzZXJ0KHViYXNlIDw9ICgxVTw8MTYpKTsKKworICAgIHctPmRhdGFbbisrXSA9IHVbLS11bGVuXTsKKyAgICB3aGlsZSAoLS11bGVuICE9IFNJWkVfTUFYKSB7CisgICAgICAgIGNhcnJ5ID0gX21wZF9zaG9ydG11bF9jKHctPmRhdGEsIHctPmRhdGEsIG4sIHViYXNlKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZSh3LCBuKzEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdy0+ZGF0YVtuKytdID0gY2Fycnk7CisgICAgICAgIH0KKyAgICAgICAgY2FycnkgPSBfbXBkX3Nob3J0YWRkKHctPmRhdGEsIG4sIHVbdWxlbl0pOworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHcsIG4rMSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3LT5kYXRhW24rK10gPSBjYXJyeTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBuOworfQorCisvKiB0YXJnZXQgYmFzZSB3YmFzZSA8IHNvdXJjZSBiYXNlIHViYXNlICovCitzdGF0aWMgc2l6ZV90CitfYmFzZWNvbnZfdG9fc21hbGxlcih1aW50MzJfdCAqKncsIHNpemVfdCB3bGVuLCB1aW50MzJfdCB3YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgKnUsIG1wZF9zc2l6ZV90IHVsZW4sIG1wZF91aW50X3QgdWJhc2UpCit7CisgICAgc2l6ZV90IG4gPSAwOworCisgICAgYXNzZXJ0KHdsZW4gPiAwICYmIHVsZW4gPiAwKTsKKyAgICBhc3NlcnQod2Jhc2UgPCB1YmFzZSk7CisKKyAgICBkbyB7CisgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgIGlmICghbXBkX3Jlc2l6ZV91MzIodywgbisxKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgIH0KKyAgICAgICAgKCp3KVtuKytdID0gKHVpbnQzMl90KV9tcGRfc2hvcnRkaXZfYih1LCB1LCB1bGVuLCB3YmFzZSwgdWJhc2UpOworICAgICAgICAvKiB1bGVuIGlzIGF0IGxlYXN0IDEuIHVbdWxlbi0xXSBjYW4gb25seSBiZSB6ZXJvIGlmIHVsZW4gPT0gMS4gKi8KKyAgICAgICAgdWxlbiA9IF9tcGRfcmVhbF9zaXplKHUsIHVsZW4pOworCisgICAgfSB3aGlsZSAodVt1bGVuLTFdICE9IDApOworCisgICAgcmV0dXJuIG47Cit9CisKKyNpZmRlZiBDT05GSUdfMzIKKy8qIHRhcmdldCBiYXNlICd3YmFzZScgPT0gc291cmNlIGJhc2UgJ3ViYXNlJyAqLworc3RhdGljIHNpemVfdAorX2NvcHlfZXF1YWxfYmFzZSh1aW50MzJfdCAqKncsIHNpemVfdCB3bGVuLAorICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqdSwgc2l6ZV90IHVsZW4pCit7CisgICAgaWYgKHdsZW4gPCB1bGVuKSB7CisgICAgICAgIGlmICghbXBkX3Jlc2l6ZV91MzIodywgdWxlbikpIHsKKyAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1lbWNweSgqdywgdSwgdWxlbiAqIChzaXplb2YgKip3KSk7CisgICAgcmV0dXJuIHVsZW47Cit9CisKKy8qIHRhcmdldCBiYXNlICd3YmFzZScgPiBzb3VyY2UgYmFzZSAndWJhc2UnICovCitzdGF0aWMgc2l6ZV90CitfYmFzZWNvbnZfdG9fbGFyZ2VyKHVpbnQzMl90ICoqdywgc2l6ZV90IHdsZW4sIG1wZF91aW50X3Qgd2Jhc2UsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF91aW50X3QgKnUsIHNpemVfdCB1bGVuLCBtcGRfdWludF90IHViYXNlKQoreworICAgIHNpemVfdCBuID0gMDsKKyAgICBtcGRfdWludF90IGNhcnJ5OworCisgICAgYXNzZXJ0KHdsZW4gPiAwICYmIHVsZW4gPiAwKTsKKyAgICBhc3NlcnQodWJhc2UgPCB3YmFzZSk7CisKKyAgICAoKncpW24rK10gPSB1Wy0tdWxlbl07CisgICAgd2hpbGUgKC0tdWxlbiAhPSBTSVpFX01BWCkgeworICAgICAgICBjYXJyeSA9IF9tcGRfc2hvcnRtdWxfYigqdywgKncsIG4sIHViYXNlLCB3YmFzZSk7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgaWYgKG4gPj0gd2xlbikgeworICAgICAgICAgICAgICAgIGlmICghbXBkX3Jlc2l6ZV91MzIodywgbisxKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAoKncpW24rK10gPSBjYXJyeTsKKyAgICAgICAgfQorICAgICAgICBjYXJyeSA9IF9tcGRfc2hvcnRhZGRfYigqdywgbiwgdVt1bGVuXSwgd2Jhc2UpOworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1wZF9yZXNpemVfdTMyKHcsIG4rMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKCp3KVtuKytdID0gY2Fycnk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbjsKK30KKworLyogdGFyZ2V0IGJhc2Ugd2Jhc2UgPCBzb3VyY2UgYmFzZSB1YmFzZSAqLworc3RhdGljIHNpemVfdAorX2NvZWZmX2Zyb21fbGFyZ2VyX2Jhc2UobXBkX3QgKncsIHNpemVfdCB3bGVuLCBtcGRfdWludF90IHdiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCAqdSwgbXBkX3NzaXplX3QgdWxlbiwgbXBkX3VpbnRfdCB1YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgc2l6ZV90IG4gPSAwOworCisgICAgYXNzZXJ0KHdsZW4gPiAwICYmIHVsZW4gPiAwKTsKKyAgICBhc3NlcnQod2Jhc2UgPCB1YmFzZSk7CisKKyAgICBkbyB7CisgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUodywgbisxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2xlbiA9IG4rMTsKKyAgICAgICAgfQorICAgICAgICB3LT5kYXRhW24rK10gPSAodWludDMyX3QpX21wZF9zaG9ydGRpdl9iKHUsIHUsIHVsZW4sIHdiYXNlLCB1YmFzZSk7CisgICAgICAgIC8qIHVsZW4gaXMgYXQgbGVhc3QgMS4gdVt1bGVuLTFdIGNhbiBvbmx5IGJlIHplcm8gaWYgdWxlbiA9PSAxLiAqLworICAgICAgICB1bGVuID0gX21wZF9yZWFsX3NpemUodSwgdWxlbik7CisKKyAgICB9IHdoaWxlICh1W3VsZW4tMV0gIT0gMCk7CisKKyAgICByZXR1cm4gbjsKK30KKyNlbmRpZgorCisvKiB0YXJnZXQgYmFzZSAnd2Jhc2UnID4gc291cmNlIGJhc2UgJ3ViYXNlJyAqLworc3RhdGljIHNpemVfdAorX2NvZWZmX2Zyb21fc21hbGxlcl9iYXNlKG1wZF90ICp3LCBtcGRfc3NpemVfdCB3bGVuLCBtcGRfdWludF90IHdiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICp1LCBzaXplX3QgdWxlbiwgbXBkX3VpbnRfdCB1YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IG4gPSAwOworICAgIG1wZF91aW50X3QgY2Fycnk7CisKKyAgICBhc3NlcnQod2xlbiA+IDAgJiYgdWxlbiA+IDApOworICAgIGFzc2VydCh3YmFzZSA+IHViYXNlKTsKKworICAgIHctPmRhdGFbbisrXSA9IHVbLS11bGVuXTsKKyAgICB3aGlsZSAoLS11bGVuICE9IFNJWkVfTUFYKSB7CisgICAgICAgIGNhcnJ5ID0gX21wZF9zaG9ydG11bF9iKHctPmRhdGEsIHctPmRhdGEsIG4sIHViYXNlLCB3YmFzZSk7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgaWYgKG4gPj0gd2xlbikgeworICAgICAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUodywgbisxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2xlbiA9IG4rMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHctPmRhdGFbbisrXSA9IGNhcnJ5OworICAgICAgICB9CisgICAgICAgIGNhcnJ5ID0gX21wZF9zaG9ydGFkZF9iKHctPmRhdGEsIG4sIHVbdWxlbl0sIHdiYXNlKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZSh3LCBuKzEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdy0+ZGF0YVtuKytdID0gY2Fycnk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbjsKK30KKworLyoKKyAqIENvbnZlcnQgYW4gaW50ZWdlciBtcGRfdCB0byBhIG11bHRpcHJlY2lzaW9uIGludGVnZXIgd2l0aCBiYXNlIDw9IDIqKjE2LgorICogVGhlIGxlYXN0IHNpZ25pZmljYW50IHdvcmQgb2YgdGhlIHJlc3VsdCBpcyAoKnJkYXRhKVswXS4KKyAqCisgKiBJZiByZGF0YSBpcyBOVUxMLCBzcGFjZSBpcyBhbGxvY2F0ZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCBybGVuIGlzIGlycmVsZXZhbnQuCisgKiBJbiBjYXNlIG9mIGFuIGVycm9yIGFueSBhbGxvY2F0ZWQgc3RvcmFnZSBpcyBmcmVlZCBhbmQgcmRhdGEgaXMgc2V0IGJhY2sgdG8KKyAqIE5VTEwuCisgKgorICogSWYgcmRhdGEgaXMgbm9uLU5VTEwsIGl0IE1VU1QgYmUgYWxsb2NhdGVkIGJ5IG9uZSBvZiBsaWJtcGRlYydzIGFsbG9jYXRpb24KKyAqIGZ1bmN0aW9ucyBhbmQgcmxlbiBNVVNUIGJlIGNvcnJlY3QuIElmIG5lY2Vzc2FyeSwgdGhlIGZ1bmN0aW9uIHdpbGwgcmVzaXplCisgKiByZGF0YS4gSW4gY2FzZSBvZiBhbiBlcnJvciB0aGUgY2FsbGVyIG11c3QgZnJlZSByZGF0YS4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IEluIGNhc2Ugb2Ygc3VjY2VzcywgdGhlIGV4YWN0IGxlbmd0aCBvZiByZGF0YSwgU0laRV9NQVgKKyAqIG90aGVyd2lzZS4KKyAqLworc2l6ZV90CittcGRfcWV4cG9ydF91MTYodWludDE2X3QgKipyZGF0YSwgc2l6ZV90IHJsZW4sIHVpbnQzMl90IHJiYXNlLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF90ICpzcmMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TVEFUSUModHNyYywwLDAsMCwwKTsKKyAgICBpbnQgYWxsb2MgPSAwOyAvKiByZGF0YSA9PSBOVUxMICovCisgICAgc2l6ZV90IG47CisKKyAgICBhc3NlcnQocmJhc2UgPD0gKDFVPDwxNikpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoc3JjKSB8fCAhX21wZF9pc2ludChzcmMpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgfQorCisgICAgaWYgKCpyZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIHJsZW4gPSBtcGRfc2l6ZWluYmFzZShzcmMsIHJiYXNlKTsKKyAgICAgICAgaWYgKHJsZW4gPT0gU0laRV9NQVgpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICB9CisgICAgICAgICpyZGF0YSA9IG1wZF9hbGxvYyhybGVuLCBzaXplb2YgKipyZGF0YSk7CisgICAgICAgIGlmICgqcmRhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgYWxsb2MgPSAxOworICAgIH0KKworICAgIGlmIChtcGRfaXN6ZXJvKHNyYykpIHsKKyAgICAgICAgKipyZGF0YSA9IDA7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmIChzcmMtPmV4cCA+PSAwKSB7CisgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJnRzcmMsIHNyYywgc3JjLT5leHAsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAobXBkX3FzaGlmdHIoJnRzcmMsIHNyYywgLXNyYy0+ZXhwLCBzdGF0dXMpID09IE1QRF9VSU5UX01BWCkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBuID0gX2Jhc2Vjb252X3RvX3UxNihyZGF0YSwgcmxlbiwgcmJhc2UsIHRzcmMuZGF0YSwgdHNyYy5sZW4pOworICAgIGlmIChuID09IFNJWkVfTUFYKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKworCitvdXQ6CisgICAgbXBkX2RlbCgmdHNyYyk7CisgICAgcmV0dXJuIG47CisKK21hbGxvY19lcnJvcjoKKyAgICBpZiAoYWxsb2MpIHsKKyAgICAgICAgbXBkX2ZyZWUoKnJkYXRhKTsKKyAgICAgICAgKnJkYXRhID0gTlVMTDsKKyAgICB9CisgICAgbiA9IFNJWkVfTUFYOworICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICBnb3RvIG91dDsKK30KKworLyoKKyAqIENvbnZlcnQgYW4gaW50ZWdlciBtcGRfdCB0byBhIG11bHRpcHJlY2lzaW9uIGludGVnZXIgd2l0aCBiYXNlPD1VSU5UMzJfTUFYLgorICogVGhlIGxlYXN0IHNpZ25pZmljYW50IHdvcmQgb2YgdGhlIHJlc3VsdCBpcyAoKnJkYXRhKVswXS4KKyAqCisgKiBJZiByZGF0YSBpcyBOVUxMLCBzcGFjZSBpcyBhbGxvY2F0ZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCBybGVuIGlzIGlycmVsZXZhbnQuCisgKiBJbiBjYXNlIG9mIGFuIGVycm9yIGFueSBhbGxvY2F0ZWQgc3RvcmFnZSBpcyBmcmVlZCBhbmQgcmRhdGEgaXMgc2V0IGJhY2sgdG8KKyAqIE5VTEwuCisgKgorICogSWYgcmRhdGEgaXMgbm9uLU5VTEwsIGl0IE1VU1QgYmUgYWxsb2NhdGVkIGJ5IG9uZSBvZiBsaWJtcGRlYydzIGFsbG9jYXRpb24KKyAqIGZ1bmN0aW9ucyBhbmQgcmxlbiBNVVNUIGJlIGNvcnJlY3QuIElmIG5lY2Vzc2FyeSwgdGhlIGZ1bmN0aW9uIHdpbGwgcmVzaXplCisgKiByZGF0YS4gSW4gY2FzZSBvZiBhbiBlcnJvciB0aGUgY2FsbGVyIG11c3QgZnJlZSByZGF0YS4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IEluIGNhc2Ugb2Ygc3VjY2VzcywgdGhlIGV4YWN0IGxlbmd0aCBvZiByZGF0YSwgU0laRV9NQVgKKyAqIG90aGVyd2lzZS4KKyAqLworc2l6ZV90CittcGRfcWV4cG9ydF91MzIodWludDMyX3QgKipyZGF0YSwgc2l6ZV90IHJsZW4sIHVpbnQzMl90IHJiYXNlLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF90ICpzcmMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TVEFUSUModHNyYywwLDAsMCwwKTsKKyAgICBpbnQgYWxsb2MgPSAwOyAvKiByZGF0YSA9PSBOVUxMICovCisgICAgc2l6ZV90IG47CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChzcmMpIHx8ICFfbXBkX2lzaW50KHNyYykpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICB9CisKKyAgICBpZiAoKnJkYXRhID09IE5VTEwpIHsKKyAgICAgICAgcmxlbiA9IG1wZF9zaXplaW5iYXNlKHNyYywgcmJhc2UpOworICAgICAgICBpZiAocmxlbiA9PSBTSVpFX01BWCkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgIH0KKyAgICAgICAgKnJkYXRhID0gbXBkX2FsbG9jKHJsZW4sIHNpemVvZiAqKnJkYXRhKTsKKyAgICAgICAgaWYgKCpyZGF0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBhbGxvYyA9IDE7CisgICAgfQorCisgICAgaWYgKG1wZF9pc3plcm8oc3JjKSkgeworICAgICAgICAqKnJkYXRhID0gMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKHNyYy0+ZXhwID49IDApIHsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmdHNyYywgc3JjLCBzcmMtPmV4cCwgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtcGRfcXNoaWZ0cigmdHNyYywgc3JjLCAtc3JjLT5leHAsIHN0YXR1cykgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworI2lmZGVmIENPTkZJR182NAorICAgIG4gPSBfYmFzZWNvbnZfdG9fc21hbGxlcihyZGF0YSwgcmxlbiwgcmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzcmMuZGF0YSwgdHNyYy5sZW4sIE1QRF9SQURJWCk7CisjZWxzZQorICAgIGlmIChyYmFzZSA9PSBNUERfUkFESVgpIHsKKyAgICAgICAgbiA9IF9jb3B5X2VxdWFsX2Jhc2UocmRhdGEsIHJsZW4sIHRzcmMuZGF0YSwgdHNyYy5sZW4pOworICAgIH0KKyAgICBlbHNlIGlmIChyYmFzZSA8IE1QRF9SQURJWCkgeworICAgICAgICBuID0gX2Jhc2Vjb252X3RvX3NtYWxsZXIocmRhdGEsIHJsZW4sIHJiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNyYy5kYXRhLCB0c3JjLmxlbiwgTVBEX1JBRElYKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG4gPSBfYmFzZWNvbnZfdG9fbGFyZ2VyKHJkYXRhLCBybGVuLCByYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNyYy5kYXRhLCB0c3JjLmxlbiwgTVBEX1JBRElYKTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChuID09IFNJWkVfTUFYKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKworCitvdXQ6CisgICAgbXBkX2RlbCgmdHNyYyk7CisgICAgcmV0dXJuIG47CisKK21hbGxvY19lcnJvcjoKKyAgICBpZiAoYWxsb2MpIHsKKyAgICAgICAgbXBkX2ZyZWUoKnJkYXRhKTsKKyAgICAgICAgKnJkYXRhID0gTlVMTDsKKyAgICB9CisgICAgbiA9IFNJWkVfTUFYOworICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICBnb3RvIG91dDsKK30KKworCisvKgorICogQ29udmVydHMgYSBtdWx0aXByZWNpc2lvbiBpbnRlZ2VyIHdpdGggYmFzZSA8PSBVSU5UMTZfTUFYKzEgdG8gYW4gbXBkX3QuCisgKiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgd29yZCBvZiB0aGUgc291cmNlIGlzIHNyY2RhdGFbMF0uCisgKi8KK3ZvaWQKK21wZF9xaW1wb3J0X3UxNihtcGRfdCAqcmVzdWx0LAorICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzcmNkYXRhLCBzaXplX3Qgc3JjbGVuLAorICAgICAgICAgICAgICAgIHVpbnQ4X3Qgc3Jjc2lnbiwgdWludDMyX3Qgc3JjYmFzZSwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCAqdXNyYzsgLyogdWludDE2X3Qgc3JjIGNvcGllZCB0byBhbiBtcGRfdWludF90IGFycmF5ICovCisgICAgbXBkX3NzaXplX3QgcmxlbjsgLyogbGVuZ3RoIG9mIHRoZSByZXN1bHQgKi8KKyAgICBzaXplX3QgbjsKKworICAgIGFzc2VydChzcmNsZW4gPiAwKTsKKyAgICBhc3NlcnQoc3JjYmFzZSA8PSAoMVU8PDE2KSk7CisKKyAgICBybGVuID0gX21wZF9pbXBvcnRzaXplKHNyY2xlbiwgc3JjYmFzZSk7CisgICAgaWYgKHJsZW4gPT0gTVBEX1NTSVpFX01BWCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1c3JjID0gbXBkX2FsbG9jKChtcGRfc2l6ZV90KXNyY2xlbiwgc2l6ZW9mICp1c3JjKTsKKyAgICBpZiAodXNyYyA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChuID0gMDsgbiA8IHNyY2xlbjsgbisrKSB7CisgICAgICAgIHVzcmNbbl0gPSBzcmNkYXRhW25dOworICAgIH0KKworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBybGVuLCBzdGF0dXMpKSB7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKworICAgIG4gPSBfY29lZmZfZnJvbV91MTYocmVzdWx0LCBybGVuLCB1c3JjLCBzcmNsZW4sIHNyY2Jhc2UsIHN0YXR1cyk7CisgICAgaWYgKG4gPT0gU0laRV9NQVgpIHsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorCisgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIHNyY3NpZ24pOworICAgIHJlc3VsdC0+ZXhwID0gMDsKKyAgICByZXN1bHQtPmxlbiA9IG47CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworCisgICAgbXBkX3FyZXNpemUocmVzdWx0LCByZXN1bHQtPmxlbiwgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworCisKK2ZpbmlzaDoKKyAgICBtcGRfZnJlZSh1c3JjKTsKK30KKworLyoKKyAqIENvbnZlcnRzIGEgbXVsdGlwcmVjaXNpb24gaW50ZWdlciB3aXRoIGJhc2UgPD0gVUlOVDMyX01BWCB0byBhbiBtcGRfdC4KKyAqIFRoZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkIG9mIHRoZSBzb3VyY2UgaXMgc3JjZGF0YVswXS4KKyAqLwordm9pZAorbXBkX3FpbXBvcnRfdTMyKG1wZF90ICpyZXN1bHQsCisgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnNyY2RhdGEsIHNpemVfdCBzcmNsZW4sCisgICAgICAgICAgICAgICAgdWludDhfdCBzcmNzaWduLCB1aW50MzJfdCBzcmNiYXNlLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBybGVuOyAvKiBsZW5ndGggb2YgdGhlIHJlc3VsdCAqLworICAgIHNpemVfdCBuOworCisgICAgYXNzZXJ0KHNyY2xlbiA+IDApOworCisgICAgcmxlbiA9IF9tcGRfaW1wb3J0c2l6ZShzcmNsZW4sIHNyY2Jhc2UpOworICAgIGlmIChybGVuID09IE1QRF9TU0laRV9NQVgpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIHJsZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmZGVmIENPTkZJR182NAorICAgIG4gPSBfY29lZmZfZnJvbV9zbWFsbGVyX2Jhc2UocmVzdWx0LCBybGVuLCBNUERfUkFESVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNkYXRhLCBzcmNsZW4sIHNyY2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOworI2Vsc2UKKyAgICBpZiAoc3JjYmFzZSA9PSBNUERfUkFESVgpIHsKKyAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIHNyY2xlbiwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1lbWNweShyZXN1bHQtPmRhdGEsIHNyY2RhdGEsIHNyY2xlbiAqIChzaXplb2YgKnNyY2RhdGEpKTsKKyAgICAgICAgbiA9IHNyY2xlbjsKKyAgICB9CisgICAgZWxzZSBpZiAoc3JjYmFzZSA8IE1QRF9SQURJWCkgeworICAgICAgICBuID0gX2NvZWZmX2Zyb21fc21hbGxlcl9iYXNlKHJlc3VsdCwgcmxlbiwgTVBEX1JBRElYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2RhdGEsIHNyY2xlbiwgc3JjYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3VpbnRfdCAqdXNyYyA9IG1wZF9hbGxvYygobXBkX3NpemVfdClzcmNsZW4sIHNpemVvZiAqdXNyYyk7CisgICAgICAgIGlmICh1c3JjID09IE5VTEwpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yIChuID0gMDsgbiA8IHNyY2xlbjsgbisrKSB7CisgICAgICAgICAgICB1c3JjW25dID0gc3JjZGF0YVtuXTsKKyAgICAgICAgfQorCisgICAgICAgIG4gPSBfY29lZmZfZnJvbV9sYXJnZXJfYmFzZShyZXN1bHQsIHJsZW4sIE1QRF9SQURJWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzcmMsIChtcGRfc3NpemVfdClzcmNsZW4sIHNyY2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOworICAgICAgICBtcGRfZnJlZSh1c3JjKTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChuID09IFNJWkVfTUFYKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgc3Jjc2lnbik7CisgICAgcmVzdWx0LT5leHAgPSAwOworICAgIHJlc3VsdC0+bGVuID0gbjsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisKKyAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHJlc3VsdC0+bGVuLCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTMxYzcxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaApAQCAtMCwwICsxLDgwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBNUERFQ0lNQUxfSAorI2RlZmluZSBNUERFQ0lNQUxfSAorCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZGVmaW5lIF9fU1REQ19MSU1JVF9NQUNST1MKKyNlbmRpZgorCisKKyNpZm5kZWYgX01TQ19WRVIKKyAgI2luY2x1ZGUgInB5Y29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKKyNpZmRlZiBfTVNDX1ZFUgorICAjaW5jbHVkZSAidmNjb21wYXQuaCIKKyAgI2lmbmRlZiBVTlVTRUQKKyAgICAjZGVmaW5lIFVOVVNFRAorICAjZW5kaWYKKyAgI2RlZmluZSBFWFRJTkxJTkUgZXh0ZXJuIGlubGluZQorI2Vsc2UKKyAgI2lmZGVmIEhBVkVfU1RESU5UX0gKKyAgICAjaW5jbHVkZSA8c3RkaW50Lmg+CisgICNlbmRpZgorICAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICisgICAgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgICNlbmRpZgorICAjaWZuZGVmIF9fR05VQ19TVERDX0lOTElORV9fCisgICAgI2RlZmluZSBfX0dOVUNfU1REQ19JTkxJTkVfXworICAjZW5kaWYKKyAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCisgICAgI2RlZmluZSBVTlVTRUQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKKyAgI2Vsc2UKKyAgICAjZGVmaW5lIFVOVVNFRAorICAjZW5kaWYKKyAgI2RlZmluZSBFWFRJTkxJTkUKKyNlbmRpZgorCisKKyNpZiAhZGVmaW5lZChMRUdBQ1lfQ09NUElMRVIpCisgICNpZiAhZGVmaW5lZChVSU5UNjRfTUFYKQorICAgIC8qIFRoZSBmb2xsb3dpbmcgI2Vycm9yIGlzIGp1c3QgYSB3YXJuaW5nLiBJZiB0aGUgY29tcGlsZXIgaW5kZWVkIGRvZXMKKyAgICAgKiBub3QgaGF2ZSB1aW50NjRfdCwgaXQgaXMgcGVyZmVjdGx5IHNhZmUgdG8gY29tbWVudCBvdXQgdGhlICNlcnJvci4gKi8KKyAgICAjZXJyb3IgIldhcm5pbmc6IENvbXBpbGVyIHdpdGhvdXQgdWludDY0X3QuIENvbW1lbnQgb3V0IHRoaXMgbGluZS4iCisgICAgI2RlZmluZSBMRUdBQ1lfQ09NUElMRVIKKyAgI2VuZGlmCisjZW5kaWYKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZiBkZWZpbmVkKFVOSVZFUlNBTCkKKyAgI2lmIGRlZmluZWQoQ09ORklHXzY0KSB8fCBkZWZpbmVkKENPTkZJR18zMikKKyAgICAjZXJyb3IgImNhbm5vdCB1c2UgQ09ORklHXzY0IG9yIENPTkZJR18zMiB3aXRoIFVOSVZFUlNBTC4iCisgICNlbmRpZgorICAjaWYgZGVmaW5lZChfX3BwY19fKQorICAgICNkZWZpbmUgQ09ORklHXzMyCisgICAgI2RlZmluZSBBTlNJCisgICNlbGlmIGRlZmluZWQoX19wcGM2NF9fKQorICAgICNkZWZpbmUgQ09ORklHXzY0CisgICAgI2RlZmluZSBBTlNJCisgICNlbGlmIGRlZmluZWQoX19pMzg2X18pCisgICAgI2RlZmluZSBDT05GSUdfMzIKKyAgICAjZGVmaW5lIEFOU0kKKyAgI2VsaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorICAgICNkZWZpbmUgQ09ORklHXzY0CisgICAgI2RlZmluZSBBU00KKyAgI2Vsc2UKKyAgICAjZXJyb3IgInVua25vd24gYXJjaGl0ZWN0dXJlIGZvciB1bml2ZXJzYWwgYnVpbGQuIgorICAjZW5kaWYKKyNlbmRpZgorCisKKy8qIEJFR0lOIENPTkZJR182NCAqLworI2lmIGRlZmluZWQoQ09ORklHXzY0KQorLyogdHlwZXMgZm9yIG1vZHVsYXIgYW5kIGJhc2UgYXJpdGhtZXRpYyAqLworI2RlZmluZSBNUERfVUlOVF9NQVggVUlOVDY0X01BWAorI2RlZmluZSBNUERfQklUU19QRVJfVUlOVCA2NAordHlwZWRlZiB1aW50NjRfdCBtcGRfdWludF90OyAgLyogdW5zaWduZWQgbW9kIHR5cGUgKi8KKworI2RlZmluZSBNUERfU0laRV9NQVggU0laRV9NQVgKK3R5cGVkZWYgc2l6ZV90IG1wZF9zaXplX3Q7IC8qIHVuc2lnbmVkIHNpemUgdHlwZSAqLworCisvKiB0eXBlIGZvciBleHAsIGRpZ2l0cywgbGVuLCBwcmVjICovCisjZGVmaW5lIE1QRF9TU0laRV9NQVggSU5UNjRfTUFYCisjZGVmaW5lIE1QRF9TU0laRV9NSU4gSU5UNjRfTUlOCit0eXBlZGVmIGludDY0X3QgbXBkX3NzaXplX3Q7CisjZGVmaW5lIF9tcGRfc3RydG9zc2l6ZSBzdHJ0b2xsCisKKy8qIGRlY2ltYWwgYXJpdGhtZXRpYyAqLworI2RlZmluZSBNUERfUkFESVggMTAwMDAwMDAwMDAwMDAwMDAwMDBVTEwgIC8qIDEwKioxOSAqLworI2RlZmluZSBNUERfUkRJR0lUUyAxOQorI2RlZmluZSBNUERfTUFYX1BPVzEwIDE5CisjZGVmaW5lIE1QRF9FWFBESUdJVFMgMTkgIC8qIE1QRF9FWFBESUdJVFMgPD0gTVBEX1JESUdJVFMrMSAqLworCisjZGVmaW5lIE1QRF9NQVhUUkFOU0ZPUk1fMk4gNDI5NDk2NzI5NlVMTCAgICAgIC8qIDIqKjMyICovCisjZGVmaW5lIE1QRF9NQVhfUFJFQyA5OTk5OTk5OTk5OTk5OTk5OTlMTAorI2RlZmluZSBNUERfTUFYX1BSRUNfTE9HMiA2NAorI2RlZmluZSBNUERfRUxJTUlUICAxMDAwMDAwMDAwMDAwMDAwMDAwTEwKKyNkZWZpbmUgTVBEX01BWF9FTUFYICAgOTk5OTk5OTk5OTk5OTk5OTk5TEwgICAgLyogRUxJTUlULTEgKi8KKyNkZWZpbmUgTVBEX01JTl9FTUlOICAoLTk5OTk5OTk5OTk5OTk5OTk5OUxMKSAgLyogLUVNQVggKi8KKyNkZWZpbmUgTVBEX01JTl9FVElOWSAoTVBEX01JTl9FTUlOLShNUERfTUFYX1BSRUMtMSkpCisjZGVmaW5lIE1QRF9FWFBfSU5GIDIwMDAwMDAwMDAwMDAwMDAwMDFMTAorI2RlZmluZSBNUERfRVhQX0NMQU1QICgtNDAwMDAwMDAwMDAwMDAwMDAwMUxMKQorI2RlZmluZSBNUERfTUFYSU1QT1JUIDEwNTI2MzE1Nzg5NDczNjg0MkwgLyogY2VpbCgoMipNUERfTUFYX1BSRUMpL01QRF9SRElHSVRTKSAqLworCisvKiBjb252ZXJzaW9uIHNwZWNpZmllcnMgKi8KKyNkZWZpbmUgUFJJX21wZF91aW50X3QgUFJJdTY0CisjZGVmaW5lIFBSSV9tcGRfc3NpemVfdCBQUklpNjQKKy8qIEVORCBDT05GSUdfNjQgKi8KKworCisvKiBCRUdJTiBDT05GSUdfMzIgKi8KKyNlbGlmIGRlZmluZWQoQ09ORklHXzMyKQorLyogdHlwZXMgZm9yIG1vZHVsYXIgYW5kIGJhc2UgYXJpdGhtZXRpYyAqLworI2RlZmluZSBNUERfVUlOVF9NQVggVUlOVDMyX01BWAorI2RlZmluZSBNUERfQklUU19QRVJfVUlOVCAzMgordHlwZWRlZiB1aW50MzJfdCBtcGRfdWludF90OyAgLyogdW5zaWduZWQgbW9kIHR5cGUgKi8KKworI2lmbmRlZiBMRUdBQ1lfQ09NUElMRVIKKyNkZWZpbmUgTVBEX1VVSU5UX01BWCBVSU5UNjRfTUFYCit0eXBlZGVmIHVpbnQ2NF90IG1wZF91dWludF90OyAvKiBkb3VibGUgd2lkdGggdW5zaWduZWQgbW9kIHR5cGUgKi8KKyNlbmRpZgorCisjZGVmaW5lIE1QRF9TSVpFX01BWCBTSVpFX01BWAordHlwZWRlZiBzaXplX3QgbXBkX3NpemVfdDsgLyogdW5zaWduZWQgc2l6ZSB0eXBlICovCisKKy8qIHR5cGUgZm9yIGRlYy0+bGVuLCBkZWMtPmV4cCwgY3R4LT5wcmVjICovCisjZGVmaW5lIE1QRF9TU0laRV9NQVggSU5UMzJfTUFYCisjZGVmaW5lIE1QRF9TU0laRV9NSU4gSU5UMzJfTUlOCit0eXBlZGVmIGludDMyX3QgbXBkX3NzaXplX3Q7CisjZGVmaW5lIF9tcGRfc3RydG9zc2l6ZSBzdHJ0b2wKKworLyogZGVjaW1hbCBhcml0aG1ldGljICovCisjZGVmaW5lIE1QRF9SQURJWCAxMDAwMDAwMDAwVUwgIC8qIDEwKio5ICovCisjZGVmaW5lIE1QRF9SRElHSVRTIDkKKyNkZWZpbmUgTVBEX01BWF9QT1cxMCA5CisjZGVmaW5lIE1QRF9FWFBESUdJVFMgMTAgLyogTVBEX0VYUERJR0lUUyA8PSBNUERfUkRJR0lUUysxICovCisKKyNkZWZpbmUgTVBEX01BWFRSQU5TRk9STV8yTiAzMzU1NDQzMlVMIC8qIDIqKjI1ICovCisjZGVmaW5lIE1QRF9NQVhfUFJFQyA0MjUwMDAwMDBMCisjZGVmaW5lIE1QRF9NQVhfUFJFQ19MT0cyIDMyCisjZGVmaW5lIE1QRF9FTElNSVQgNDI1MDAwMDAxTAorI2RlZmluZSBNUERfTUFYX0VNQVggNDI1MDAwMDAwTCAgICAgICAgLyogRUxJTUlULTEgKi8KKyNkZWZpbmUgTVBEX01JTl9FTUlOICgtNDI1MDAwMDAwTCkgICAgIC8qIC1FTUFYICovCisjZGVmaW5lIE1QRF9NSU5fRVRJTlkgKE1QRF9NSU5fRU1JTi0oTVBEX01BWF9QUkVDLTEpKQorI2RlZmluZSBNUERfRVhQX0lORiAxMDAwMDAwMDAxTCAgICAgIC8qIGFsbG93cyBmb3IgZW1heD05OTk5OTk5OTkgaW4gdGhlIHRlc3RzICovCisjZGVmaW5lIE1QRF9FWFBfQ0xBTVAgKC0yMDAwMDAwMDAxTCkgLyogYWxsb3dzIGZvciBlbWluPS05OTk5OTk5OTkgaW4gdGhlIHRlc3RzICovCisjZGVmaW5lIE1QRF9NQVhJTVBPUlQgOTQ0NDQ0NDVMICAgICAgLyogY2VpbCgoMipNUERfTUFYX1BSRUMpL01QRF9SRElHSVRTKSAqLworCisvKiBjb252ZXJzaW9uIHNwZWNpZmllcnMgKi8KKyNkZWZpbmUgUFJJX21wZF91aW50X3QgUFJJdTMyCisjZGVmaW5lIFBSSV9tcGRfc3NpemVfdCBQUklpMzIKKy8qIEVORCBDT05GSUdfMzIgKi8KKworI2Vsc2UKKyAgI2Vycm9yICJkZWZpbmUgQ09ORklHXzY0IG9yIENPTkZJR18zMiIKKyNlbmRpZgorLyogRU5EIENPTkZJRyAqLworCisKKyNpZiBNUERfU0laRV9NQVggIT0gTVBEX1VJTlRfTUFYCisgICNlcnJvciAidW5zdXBwb3J0ZWQgcGxhdGZvcm06IG5lZWQgbXBkX3NpemVfdCA9PSBtcGRfdWludF90IgorI2VuZGlmCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitlbnVtIHsKKyAgICBNUERfUk9VTkRfVVAsICAgICAgICAgIC8qIHJvdW5kIGF3YXkgZnJvbSAwICAgICAgICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfRE9XTiwgICAgICAgIC8qIHJvdW5kIHRvd2FyZCAwICh0cnVuY2F0ZSkgICAgICAgKi8KKyAgICBNUERfUk9VTkRfQ0VJTElORywgICAgIC8qIHJvdW5kIHRvd2FyZCAraW5maW5pdHkgICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfRkxPT1IsICAgICAgIC8qIHJvdW5kIHRvd2FyZCAtaW5maW5pdHkgICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfSEFMRl9VUCwgICAgIC8qIDAuNSBpcyByb3VuZGVkIHVwICAgICAgICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfSEFMRl9ET1dOLCAgIC8qIDAuNSBpcyByb3VuZGVkIGRvd24gICAgICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfSEFMRl9FVkVOLCAgIC8qIDAuNSBpcyByb3VuZGVkIHRvIGV2ZW4gICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfMDVVUCwgICAgICAgIC8qIHJvdW5kIHplcm8gb3IgZml2ZSBhd2F5IGZyb20gMCAgKi8KKyAgICBNUERfUk9VTkRfVFJVTkMsICAgICAgIC8qIHRydW5jYXRlLCBidXQgc2V0IGluZmluaXR5ICAgICAgKi8KKyAgICBNUERfUk9VTkRfR1VBUkQKK307CisKK2VudW0geyBNUERfQ0xBTVBfREVGQVVMVCwgTVBEX0NMQU1QX0lFRUVfNzU0LCBNUERfQ0xBTVBfR1VBUkQgfTsKKworZXh0ZXJuIGNvbnN0IGNoYXIgKm1wZF9yb3VuZF9zdHJpbmdbTVBEX1JPVU5EX0dVQVJEXTsKK2V4dGVybiBjb25zdCBjaGFyICptcGRfY2xhbXBfc3RyaW5nW01QRF9DTEFNUF9HVUFSRF07CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIG1wZF9zc2l6ZV90IHByZWM7ICAgLyogcHJlY2lzaW9uICovCisgICAgbXBkX3NzaXplX3QgZW1heDsgICAvKiBtYXggcG9zaXRpdmUgZXhwICovCisgICAgbXBkX3NzaXplX3QgZW1pbjsgICAvKiBtaW4gbmVnYXRpdmUgZXhwICovCisgICAgdWludDMyX3QgdHJhcHM7ICAgICAvKiBzdGF0dXMgZXZlbnRzIHRoYXQgc2hvdWxkIGJlIHRyYXBwZWQgKi8KKyAgICB1aW50MzJfdCBzdGF0dXM7ICAgIC8qIHN0YXR1cyBmbGFncyAqLworICAgIHVpbnQzMl90IG5ld3RyYXA7ICAgLyogc2V0IGJ5IG1wZF9hZGRzdGF0dXNfcmFpc2UoKSAqLworICAgIGludCAgICAgIHJvdW5kOyAgICAgLyogcm91bmRpbmcgbW9kZSAqLworICAgIGludCAgICAgIGNsYW1wOyAgICAgLyogY2xhbXAgbW9kZSAqLworICAgIGludCAgICAgIGFsbGNyOyAgICAgLyogYWxsIGZ1bmN0aW9ucyBjb3JyZWN0bHkgcm91bmRlZCAqLworfSBtcGRfY29udGV4dF90OworCisKKy8qIFN0YXR1cyBmbGFncyAqLworI2RlZmluZSBNUERfQ2xhbXBlZCAgICAgICAgICAgICAweDAwMDAwMDAxVQorI2RlZmluZSBNUERfQ29udmVyc2lvbl9zeW50YXggICAweDAwMDAwMDAyVQorI2RlZmluZSBNUERfRGl2aXNpb25fYnlfemVybyAgICAweDAwMDAwMDA0VQorI2RlZmluZSBNUERfRGl2aXNpb25faW1wb3NzaWJsZSAweDAwMDAwMDA4VQorI2RlZmluZSBNUERfRGl2aXNpb25fdW5kZWZpbmVkICAweDAwMDAwMDEwVQorI2RlZmluZSBNUERfRnB1X2Vycm9yICAgICAgICAgICAweDAwMDAwMDIwVQorI2RlZmluZSBNUERfSW5leGFjdCAgICAgICAgICAgICAweDAwMDAwMDQwVQorI2RlZmluZSBNUERfSW52YWxpZF9jb250ZXh0ICAgICAweDAwMDAwMDgwVQorI2RlZmluZSBNUERfSW52YWxpZF9vcGVyYXRpb24gICAweDAwMDAwMTAwVQorI2RlZmluZSBNUERfTWFsbG9jX2Vycm9yICAgICAgICAweDAwMDAwMjAwVQorI2RlZmluZSBNUERfTm90X2ltcGxlbWVudGVkICAgICAweDAwMDAwNDAwVQorI2RlZmluZSBNUERfT3ZlcmZsb3cgICAgICAgICAgICAweDAwMDAwODAwVQorI2RlZmluZSBNUERfUm91bmRlZCAgICAgICAgICAgICAweDAwMDAxMDAwVQorI2RlZmluZSBNUERfU3Vibm9ybWFsICAgICAgICAgICAweDAwMDAyMDAwVQorI2RlZmluZSBNUERfVW5kZXJmbG93ICAgICAgICAgICAweDAwMDA0MDAwVQorI2RlZmluZSBNUERfTWF4X3N0YXR1cyAgICAgICAgICgweDAwMDA4MDAwVS0xVSkKKworLyogQ29uZGl0aW9ucyB0aGF0IHJlc3VsdCBpbiBhbiBJRUVFIDc1NCBleGNlcHRpb24gKi8KKyNkZWZpbmUgTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24gKE1QRF9Db252ZXJzaW9uX3N5bnRheCB8ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVBEX0RpdmlzaW9uX2ltcG9zc2libGUgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUERfRGl2aXNpb25fdW5kZWZpbmVkIHwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1QRF9GcHVfZXJyb3IgfCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVBEX0ludmFsaWRfY29udGV4dCB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUERfSW52YWxpZF9vcGVyYXRpb24gfCAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1QRF9NYWxsb2NfZXJyb3IpICAgICAgICAgXAorCisvKiBFcnJvcnMgdGhhdCByZXF1aXJlIHRoZSByZXN1bHQgb2YgYW4gb3BlcmF0aW9uIHRvIGJlIHNldCB0byBOYU4gKi8KKyNkZWZpbmUgTVBEX0Vycm9ycyAoTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24gfCBcCisgICAgICAgICAgICAgICAgICAgIE1QRF9EaXZpc2lvbl9ieV96ZXJvKQorCisvKiBEZWZhdWx0IHRyYXBzICovCisjZGVmaW5lIE1QRF9UcmFwcyAoTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24gfCBcCisgICAgICAgICAgICAgICAgICAgTVBEX0RpdmlzaW9uX2J5X3plcm8gfCAgICAgICBcCisgICAgICAgICAgICAgICAgICAgTVBEX092ZXJmbG93IHwgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgTVBEX1VuZGVyZmxvdykKKworLyogT2ZmaWNpYWwgbmFtZSAqLworI2RlZmluZSBNUERfSW5zdWZmaWNpZW50X3N0b3JhZ2UgTVBEX01hbGxvY19lcnJvcgorCisvKiBJRUVFIDc1NCBpbnRlcmNoYW5nZSBmb3JtYXQgY29udGV4dHMgKi8KKyNkZWZpbmUgTVBEX0lFRUVfQ09OVEVYVF9NQVhfQklUUyA1MTIgLyogMTYqKGxvZzIoTVBEX01BWF9FTUFYIC8gMyktMykgKi8KKyNkZWZpbmUgTVBEX0RFQ0lNQUwzMiAzMgorI2RlZmluZSBNUERfREVDSU1BTDY0IDY0CisjZGVmaW5lIE1QRF9ERUNJTUFMMTI4IDEyOAorCisKKyNkZWZpbmUgTVBEX01JTkFMTE9DX01JTiAyCisjZGVmaW5lIE1QRF9NSU5BTExPQ19NQVggNjQKK2V4dGVybiBtcGRfc3NpemVfdCBNUERfTUlOQUxMT0M7CitleHRlcm4gdm9pZCAoKiBtcGRfdHJhcGhhbmRsZXIpKG1wZF9jb250ZXh0X3QgKik7Cit2b2lkIG1wZF9kZmx0X3RyYXBoYW5kbGVyKG1wZF9jb250ZXh0X3QgKik7CisKK3ZvaWQgbXBkX3NldG1pbmFsbG9jKG1wZF9zc2l6ZV90IG4pOwordm9pZCBtcGRfaW5pdChtcGRfY29udGV4dF90ICpjdHgsIG1wZF9zc2l6ZV90IHByZWMpOworCit2b2lkIG1wZF9tYXhjb250ZXh0KG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kZWZhdWx0Y29udGV4dChtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYmFzaWNjb250ZXh0KG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2llZWVfY29udGV4dChtcGRfY29udGV4dF90ICpjdHgsIGludCBiaXRzKTsKKworbXBkX3NzaXplX3QgbXBkX2dldHByZWMoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK21wZF9zc2l6ZV90IG1wZF9nZXRlbWF4KGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfc3NpemVfdCBtcGRfZ2V0ZW1pbihjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9nZXRyb3VuZChjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOwordWludDMyX3QgbXBkX2dldHRyYXBzKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7Cit1aW50MzJfdCBtcGRfZ2V0c3RhdHVzKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2dldGNsYW1wKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2dldGNyKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CisKK2ludCBtcGRfcXNldHByZWMobXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBwcmVjKTsKK2ludCBtcGRfcXNldGVtYXgobXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBlbWF4KTsKK2ludCBtcGRfcXNldGVtaW4obXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBlbWluKTsKK2ludCBtcGRfcXNldHJvdW5kKG1wZF9jb250ZXh0X3QgKmN0eCwgaW50IG5ld3JvdW5kKTsKK2ludCBtcGRfcXNldHRyYXBzKG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgZmxhZ3MpOworaW50IG1wZF9xc2V0c3RhdHVzKG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgZmxhZ3MpOworaW50IG1wZF9xc2V0Y2xhbXAobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgYyk7CitpbnQgbXBkX3FzZXRjcihtcGRfY29udGV4dF90ICpjdHgsIGludCBjKTsKK3ZvaWQgbXBkX2FkZHN0YXR1c19yYWlzZShtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90IGZsYWdzKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsIEFyaXRobWV0aWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIG1wZF90IGZsYWdzICovCisjZGVmaW5lIE1QRF9QT1MgICAgICAgICAgICAgICAgICgodWludDhfdCkwKQorI2RlZmluZSBNUERfTkVHICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMSkKKyNkZWZpbmUgTVBEX0lORiAgICAgICAgICAgICAgICAgKCh1aW50OF90KTIpCisjZGVmaW5lIE1QRF9OQU4gICAgICAgICAgICAgICAgICgodWludDhfdCk0KQorI2RlZmluZSBNUERfU05BTiAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpOCkKKyNkZWZpbmUgTVBEX1NQRUNJQUwgKE1QRF9JTkZ8TVBEX05BTnxNUERfU05BTikKKyNkZWZpbmUgTVBEX1NUQVRJQyAgICAgICAgICAgICAgKCh1aW50OF90KTE2KQorI2RlZmluZSBNUERfU1RBVElDX0RBVEEgICAgICAgICAoKHVpbnQ4X3QpMzIpCisjZGVmaW5lIE1QRF9TSEFSRURfREFUQSAgICAgICAgICgodWludDhfdCk2NCkKKyNkZWZpbmUgTVBEX0NPTlNUX0RBVEEgICAgICAgICAgKCh1aW50OF90KTEyOCkKKyNkZWZpbmUgTVBEX0RBVEFGTEFHUyAoTVBEX1NUQVRJQ19EQVRBfE1QRF9TSEFSRURfREFUQXxNUERfQ09OU1RfREFUQSkKKworLyogbXBkX3QgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1aW50OF90IGZsYWdzOworICAgIG1wZF9zc2l6ZV90IGV4cDsKKyAgICBtcGRfc3NpemVfdCBkaWdpdHM7CisgICAgbXBkX3NzaXplX3QgbGVuOworICAgIG1wZF9zc2l6ZV90IGFsbG9jOworICAgIG1wZF91aW50X3QgKmRhdGE7Cit9IG1wZF90OworCisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcjsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgIFF1aWV0LCB0aHJlYWQtc2FmZSBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIGZvcm1hdCBzcGVjaWZpY2F0aW9uICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgbXBkX3NzaXplX3QgbWluX3dpZHRoOyAvKiBtaW5pbXVtIGZpZWxkIHdpZHRoICovCisgICAgbXBkX3NzaXplX3QgcHJlYzsgICAgICAvKiBmcmFjdGlvbiBkaWdpdHMgb3Igc2lnbmlmaWNhbnQgZGlnaXRzICovCisgICAgY2hhciB0eXBlOyAgICAgICAgICAgICAvKiBjb252ZXJzaW9uIHNwZWNpZmllciAqLworICAgIGNoYXIgYWxpZ247ICAgICAgICAgICAgLyogYWxpZ25tZW50ICovCisgICAgY2hhciBzaWduOyAgICAgICAgICAgICAvKiBzaWduIHByaW50aW5nL2FsaWdubWVudCAqLworICAgIGNoYXIgZmlsbFs1XTsgICAgICAgICAgLyogZmlsbCBjaGFyYWN0ZXIgKi8KKyAgICBjb25zdCBjaGFyICpkb3Q7ICAgICAgIC8qIGRlY2ltYWwgcG9pbnQgKi8KKyAgICBjb25zdCBjaGFyICpzZXA7ICAgICAgIC8qIHRob3VzYW5kcyBzZXBhcmF0b3IgKi8KKyAgICBjb25zdCBjaGFyICpncm91cGluZzsgIC8qIGdyb3VwaW5nIG9mIGRpZ2l0cyAqLworfSBtcGRfc3BlY190OworCisvKiBvdXRwdXQgdG8gYSBzdHJpbmcgKi8KK2NoYXIgKm1wZF90b19zY2koY29uc3QgbXBkX3QgKmRlYywgaW50IGZtdCk7CitjaGFyICptcGRfdG9fZW5nKGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpOworbXBkX3NzaXplX3QgbXBkX3RvX3NjaV9zaXplKGNoYXIgKipyZXMsIGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpOworbXBkX3NzaXplX3QgbXBkX3RvX2VuZ19zaXplKGNoYXIgKipyZXMsIGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpOworaW50IG1wZF92YWxpZGF0ZV9sY29udihtcGRfc3BlY190ICpzcGVjKTsKK2ludCBtcGRfcGFyc2VfZm10X3N0cihtcGRfc3BlY190ICpzcGVjLCBjb25zdCBjaGFyICpmbXQsIGludCBjYXBzKTsKK2NoYXIgKiBtcGRfcWZvcm1hdF9zcGVjKGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IG1wZF9zcGVjX3QgKnNwZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitjaGFyICptcGRfcWZvcm1hdChjb25zdCBtcGRfdCAqZGVjLCBjb25zdCBjaGFyICpmbXQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CisKKyNkZWZpbmUgTVBEX05VTV9GTEFHUyAxNQorI2RlZmluZSBNUERfTUFYX0ZMQUdfU1RSSU5HIDIwOAorI2RlZmluZSBNUERfTUFYX0ZMQUdfTElTVCAoTVBEX01BWF9GTEFHX1NUUklORysxOCkKKyNkZWZpbmUgTVBEX01BWF9TSUdOQUxfTElTVCAxMjEKK2ludCBtcGRfc25wcmludF9mbGFncyhjaGFyICpkZXN0LCBpbnQgbm1lbWIsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBtcGRfbHNucHJpbnRfZmxhZ3MoY2hhciAqZGVzdCwgaW50IG5tZW1iLCB1aW50MzJfdCBmbGFncywgY29uc3QgY2hhciAqZmxhZ19zdHJpbmdbXSk7CitpbnQgbXBkX2xzbnByaW50X3NpZ25hbHMoY2hhciAqZGVzdCwgaW50IG5tZW1iLCB1aW50MzJfdCBmbGFncywgY29uc3QgY2hhciAqc2lnbmFsX3N0cmluZ1tdKTsKKworLyogb3V0cHV0IHRvIGEgZmlsZSAqLwordm9pZCBtcGRfZnByaW50KEZJTEUgKmZpbGUsIGNvbnN0IG1wZF90ICpkZWMpOwordm9pZCBtcGRfcHJpbnQoY29uc3QgbXBkX3QgKmRlYyk7CisKKy8qIGFzc2lnbm1lbnQgZnJvbSBhIHN0cmluZyAqLwordm9pZCBtcGRfcXNldF9zdHJpbmcobXBkX3QgKmRlYywgY29uc3QgY2hhciAqcywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworLyogc2V0IHRvIE5hTiB3aXRoIGVycm9yIGZsYWdzICovCit2b2lkIG1wZF9zZXRlcnJvcihtcGRfdCAqcmVzdWx0LCB1aW50MzJfdCBmbGFncywgdWludDMyX3QgKnN0YXR1cyk7CisvKiBzZXQgYSBzcGVjaWFsIHdpdGggc2lnbiBhbmQgdHlwZSAqLwordm9pZCBtcGRfc2V0c3BlY2lhbChtcGRfdCAqZGVjLCB1aW50OF90IHNpZ24sIHVpbnQ4X3QgdHlwZSk7CisvKiBzZXQgY29lZmZpY2llbnQgdG8gemVybyBvciBhbGwgbmluZXMgKi8KK3ZvaWQgbXBkX3plcm9jb2VmZihtcGRfdCAqcmVzdWx0KTsKK3ZvaWQgbXBkX3FtYXhjb2VmZihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCisvKiBxdWlldGx5IGFzc2lnbiBhIEMgaW50ZWdlciB0eXBlIHRvIGFuIG1wZF90ICovCit2b2lkIG1wZF9xc2V0X3NzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc2V0X2kzMihtcGRfdCAqcmVzdWx0LCBpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc2V0X3VpbnQobXBkX3QgKnJlc3VsdCwgbXBkX3VpbnRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNldF91MzIobXBkX3QgKnJlc3VsdCwgdWludDMyX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKyNpZm5kZWYgTEVHQUNZX0NPTVBJTEVSCit2b2lkIG1wZF9xc2V0X2k2NChtcGRfdCAqcmVzdWx0LCBpbnQ2NF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworI2VuZGlmCisKKy8qIHF1aWV0bHkgYXNzaWduIGEgQyBpbnRlZ2VyIHR5cGUgdG8gYW4gbXBkX3Qgd2l0aCBhIHN0YXRpYyBjb2VmZmljaWVudCAqLwordm9pZCBtcGRfcXNzZXRfc3NpemUobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fzc2V0X2kzMihtcGRfdCAqcmVzdWx0LCBpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3NldF91aW50KG1wZF90ICpyZXN1bHQsIG1wZF91aW50X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fzc2V0X3UzMihtcGRfdCAqcmVzdWx0LCB1aW50MzJfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCisvKiBxdWlldGx5IGdldCBhIEMgaW50ZWdlciB0eXBlIGZyb20gYW4gbXBkX3QgKi8KK21wZF9zc2l6ZV90IG1wZF9xZ2V0X3NzaXplKGNvbnN0IG1wZF90ICpkZWMsIHVpbnQzMl90ICpzdGF0dXMpOworbXBkX3VpbnRfdCBtcGRfcWdldF91aW50KGNvbnN0IG1wZF90ICpkZWMsIHVpbnQzMl90ICpzdGF0dXMpOworbXBkX3VpbnRfdCBtcGRfcWFic191aW50KGNvbnN0IG1wZF90ICpkZWMsIHVpbnQzMl90ICpzdGF0dXMpOworCisKKy8qIHF1aWV0IGZ1bmN0aW9ucyAqLworaW50IG1wZF9xY2hlY2tfbmFuKG1wZF90ICpuYW5yZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9xY2hlY2tfbmFucyhtcGRfdCAqbmFucmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZmluYWxpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworY29uc3QgY2hhciAqIG1wZF9jbGFzcyhjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKKworaW50IG1wZF9xY29weShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgIHVpbnQzMl90ICpzdGF0dXMpOworbXBkX3QgKm1wZF9xbmNvcHkoY29uc3QgbXBkX3QgKmEpOworaW50IG1wZF9xY29weV9hYnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9xY29weV9uZWdhdGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9xY29weV9zaWduKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgdWludDMyX3QgKnN0YXR1cyk7CisKK3ZvaWQgbXBkX3FhbmQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWludmVydChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fsb2diKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW9yKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzY2FsZWIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXhvcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQgbXBkX3NhbWVfcXVhbnR1bShjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpOworCit2b2lkIG1wZF9xcm90YXRlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcXNoaWZ0bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgdWludDMyX3QgKnN0YXR1cyk7CittcGRfdWludF90IG1wZF9xc2hpZnRyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuLCB1aW50MzJfdCAqc3RhdHVzKTsKK21wZF91aW50X3QgbXBkX3FzaGlmdHJfaW5wbGFjZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBuKTsKK3ZvaWQgbXBkX3FzaGlmdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc2hpZnRuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCitpbnQgbXBkX3FjbXAoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcWNvbXBhcmUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9xY29tcGFyZV9zaWduYWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9jbXBfdG90YWwoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKTsKK2ludCBtcGRfY21wX3RvdGFsX21hZyhjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpOworaW50IG1wZF9jb21wYXJlX3RvdGFsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYik7CitpbnQgbXBkX2NvbXBhcmVfdG90YWxfbWFnKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYik7CisKK3ZvaWQgbXBkX3Fyb3VuZF90b19pbnR4KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJvdW5kX3RvX2ludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3F0cnVuYyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FmbG9vcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FjZWlsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCit2b2lkIG1wZF9xYWJzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW1heChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbWF4X21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbWluKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtaW5fbWFnKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtaW51cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FwbHVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW5leHRfbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbmV4dF9wbHVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW5leHRfdG93YXJkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FxdWFudGl6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xcmVzY2FsZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgZXhwLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJlc2NhbGVfZm10KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBleHAsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xcmVkdWNlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWFkZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xYWRkX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWFkZF9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FhZGRfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWFkZF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3ViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzdWJfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3ViX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXN1Yl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3ViX3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW11bF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWxfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbXVsX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWxfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWZtYShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF90ICpjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdihtcGRfdCAqcSwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdl9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZGl2X3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdmludChtcGRfdCAqcSwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJlbShtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJlbV9uZWFyKG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZGl2bW9kKG1wZF90ICpxLCBtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXBvdyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fwb3dtb2QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsIGNvbnN0IG1wZF90ICpleHAsIGNvbnN0IG1wZF90ICptb2QsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZXhwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWxuMTAobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgcHJlYywgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbG4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbG9nMTAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3FydChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FpbnZyb290KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCisKK3NpemVfdCBtcGRfc2l6ZWluYmFzZShjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYmFzZSk7Cit2b2lkIG1wZF9xaW1wb3J0X3UxNihtcGRfdCAqcmVzdWx0LCBjb25zdCB1aW50MTZfdCAqc3JjZGF0YSwgc2l6ZV90IHNyY2xlbiwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qgc3Jjc2lnbiwgdWludDMyX3Qgc3JjYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xaW1wb3J0X3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCB1aW50MzJfdCAqc3JjZGF0YSwgc2l6ZV90IHNyY2xlbiwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qgc3Jjc2lnbiwgdWludDMyX3Qgc3JjYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitzaXplX3QgbXBkX3FleHBvcnRfdTE2KHVpbnQxNl90ICoqcmRhdGEsIHNpemVfdCBybGVuLCB1aW50MzJfdCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfdCAqc3JjLCB1aW50MzJfdCAqc3RhdHVzKTsKK3NpemVfdCBtcGRfcWV4cG9ydF91MzIodWludDMyX3QgKipyZGF0YSwgc2l6ZV90IHJsZW4sIHVpbnQzMl90IGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF90ICpzcmMsIHVpbnQzMl90ICpzdGF0dXMpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hbGxpbmcgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworY2hhciAqIG1wZF9mb3JtYXQoY29uc3QgbXBkX3QgKmRlYywgY29uc3QgY2hhciAqZm10LCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfaW1wb3J0X3UxNihtcGRfdCAqcmVzdWx0LCBjb25zdCB1aW50MTZfdCAqc3JjZGF0YSwgc2l6ZV90IHNyY2xlbiwgdWludDhfdCBzcmNzaWduLCB1aW50MzJfdCBiYXNlLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfaW1wb3J0X3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCB1aW50MzJfdCAqc3JjZGF0YSwgc2l6ZV90IHNyY2xlbiwgdWludDhfdCBzcmNzaWduLCB1aW50MzJfdCBiYXNlLCBtcGRfY29udGV4dF90ICpjdHgpOworc2l6ZV90IG1wZF9leHBvcnRfdTE2KHVpbnQxNl90ICoqcmRhdGEsIHNpemVfdCBybGVuLCB1aW50MzJfdCBiYXNlLCBjb25zdCBtcGRfdCAqc3JjLCBtcGRfY29udGV4dF90ICpjdHgpOworc2l6ZV90IG1wZF9leHBvcnRfdTMyKHVpbnQzMl90ICoqcmRhdGEsIHNpemVfdCBybGVuLCB1aW50MzJfdCBiYXNlLCBjb25zdCBtcGRfdCAqc3JjLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZmluYWxpemUobXBkX3QgKnJlc3VsdCwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK2ludCBtcGRfY2hlY2tfbmFuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9jaGVja19uYW5zKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NldF9zdHJpbmcobXBkX3QgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX21heGNvZWZmKG1wZF90ICpyZXN1bHQsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zc2V0X3NzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zc2V0X2kzMihtcGRfdCAqcmVzdWx0LCBpbnQzMl90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zc2V0X3VpbnQobXBkX3QgKnJlc3VsdCwgbXBkX3VpbnRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3NldF91MzIobXBkX3QgKnJlc3VsdCwgdWludDMyX3QgYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NldF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc2V0X2kzMihtcGRfdCAqcmVzdWx0LCBpbnQzMl90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zZXRfdWludChtcGRfdCAqcmVzdWx0LCBtcGRfdWludF90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zZXRfdTMyKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CisjaWZuZGVmIExFR0FDWV9DT01QSUxFUgordm9pZCBtcGRfc2V0X2k2NChtcGRfdCAqcmVzdWx0LCBpbnQ2NF90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zZXRfdTY0KG1wZF90ICpyZXN1bHQsIHVpbnQ2NF90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CisjZW5kaWYKK21wZF9zc2l6ZV90IG1wZF9nZXRfc3NpemUoY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfdWludF90IG1wZF9nZXRfdWludChjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK21wZF91aW50X3QgbXBkX2Fic191aW50KGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYW5kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2NvcHkobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9jYW5vbmljYWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9jb3B5X2FicyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2NvcHlfbmVnYXRlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfY29weV9zaWduKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2ludmVydChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2xvZ2IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9vcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9yb3RhdGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc2NhbGViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NoaWZ0bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK21wZF91aW50X3QgbXBkX3NoaWZ0cihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NoaWZ0bihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NoaWZ0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3hvcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9hYnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2NtcChjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2NvbXBhcmUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9jb21wYXJlX3NpZ25hbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9hZGQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWRkX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWRkX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWRkX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2FkZF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zdWIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXYobXBkX3QgKnEsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdl9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdl9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZGl2bW9kKG1wZF90ICpxLCBtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZGl2aW50KG1wZF90ICpxLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9leHAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9mbWEobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfdCAqYywgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2xuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbG9nMTAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tYXgobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbWF4X21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9taW4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbWluX21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9taW51cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX211bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWxfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWxfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWxfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX25leHRfbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9uZXh0X3BsdXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9uZXh0X3Rvd2FyZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9wbHVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcG93KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcG93bW9kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLCBjb25zdCBtcGRfdCAqbW9kLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcXVhbnRpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcmVzY2FsZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgZXhwLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcmVkdWNlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcmVtKG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9yZW1fbmVhcihtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcm91bmRfdG9faW50eChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3JvdW5kX3RvX2ludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3RydW5jKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZmxvb3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9jZWlsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3FydChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2ludnJvb3QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIHNwZWNpZmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgQ09ORklHXzY0Cit2b2lkIG1wZF9xc3NldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNzZXRfdTY0KG1wZF90ICpyZXN1bHQsIHVpbnQ2NF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQ2NF90IG1wZF9xZ2V0X2k2NChjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKK3VpbnQ2NF90IG1wZF9xZ2V0X3U2NChjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKKwordm9pZCBtcGRfcWFkZF9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FhZGRfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXN1Yl9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzdWJfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW11bF9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWxfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdl9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCit2b2lkIG1wZF9zc2V0X2k2NChtcGRfdCAqcmVzdWx0LCBpbnQ2NF90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50NjRfdCBtcGRfZ2V0X2k2NChjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3VpbnQ2NF90IG1wZF9nZXRfdTY0KGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworCit2b2lkIG1wZF9hZGRfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9hZGRfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViX2k2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdl9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdl91NjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQ2NF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWxfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWxfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOworI2Vsc2UKK2ludDMyX3QgbXBkX3FnZXRfaTMyKGNvbnN0IG1wZF90ICpkZWMsIHVpbnQzMl90ICpzdGF0dXMpOwordWludDMyX3QgbXBkX3FnZXRfdTMyKGNvbnN0IG1wZF90ICpkZWMsIHVpbnQzMl90ICpzdGF0dXMpOworaW50MzJfdCBtcGRfZ2V0X2kzMihjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3VpbnQzMl90IG1wZF9nZXRfdTMyKGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworI2VuZGlmCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBHZXQgYXR0cmlidXRlcyBvZiBhIGRlY2ltYWwgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitFWFRJTkxJTkUgbXBkX3NzaXplX3QgbXBkX2FkamV4cChjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBtcGRfc3NpemVfdCBtcGRfZXRpbnkoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK0VYVElOTElORSBtcGRfc3NpemVfdCBtcGRfZXRvcChjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworRVhUSU5MSU5FIG1wZF91aW50X3QgbXBkX21zd29yZChjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX3dvcmRfZGlnaXRzKG1wZF91aW50X3Qgd29yZCk7CisvKiBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIGEgd29yZCAqLworRVhUSU5MSU5FIG1wZF91aW50X3QgbXBkX21zZChtcGRfdWludF90IHdvcmQpOworLyogbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQgb2YgYSB3b3JkICovCitFWFRJTkxJTkUgbXBkX3VpbnRfdCBtcGRfbHNkKG1wZF91aW50X3Qgd29yZCk7CisvKiBjb2VmZmljaWVudCBzaXplIG5lZWRlZCB0byBzdG9yZSAnZGlnaXRzJyAqLworRVhUSU5MSU5FIG1wZF9zc2l6ZV90IG1wZF9kaWdpdHNfdG9fc2l6ZShtcGRfc3NpemVfdCBkaWdpdHMpOworLyogbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZXhwb25lbnQsIHVuZGVmaW5lZCBmb3IgTVBEX1NTSVpFX01JTiAqLworRVhUSU5MSU5FIGludCBtcGRfZXhwX2RpZ2l0cyhtcGRfc3NpemVfdCBleHApOworRVhUSU5MSU5FIGludCBtcGRfaXNjYW5vbmljYWwoY29uc3QgbXBkX3QgKmRlYyBVTlVTRUQpOworRVhUSU5MSU5FIGludCBtcGRfaXNmaW5pdGUoY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc2luZmluaXRlKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNpbnRlZ2VyKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNuYW4oY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc25lZ2F0aXZlKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNwb3NpdGl2ZShjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzcW5hbihjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzc2lnbmVkKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNzbmFuKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNzcGVjaWFsKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXN6ZXJvKGNvbnN0IG1wZF90ICpkZWMpOworLyogdW5kZWZpbmVkIGZvciBzcGVjaWFsIG51bWJlcnMgKi8KK0VYVElOTElORSBpbnQgbXBkX2lzemVyb2NvZWZmKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNub3JtYWwoY29uc3QgbXBkX3QgKmRlYywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK0VYVElOTElORSBpbnQgbXBkX2lzc3Vibm9ybWFsKGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CisvKiBvZGQgd29yZCAqLworRVhUSU5MSU5FIGludCBtcGRfaXNvZGR3b3JkKG1wZF91aW50X3Qgd29yZCk7CisvKiBvZGQgY29lZmZpY2llbnQgKi8KK0VYVElOTElORSBpbnQgbXBkX2lzb2RkY29lZmYoY29uc3QgbXBkX3QgKmRlYyk7CisvKiBvZGQgZGVjaW1hbCwgb25seSBkZWZpbmVkIGZvciBpbnRlZ2VycyAqLworaW50IG1wZF9pc29kZChjb25zdCBtcGRfdCAqZGVjKTsKKy8qIGV2ZW4gZGVjaW1hbCwgb25seSBkZWZpbmVkIGZvciBpbnRlZ2VycyAqLworaW50IG1wZF9pc2V2ZW4oY29uc3QgbXBkX3QgKmRlYyk7CisvKiAwIGlmIGRlYyBpcyBwb3NpdGl2ZSwgMSBpZiBkZWMgaXMgbmVnYXRpdmUgKi8KK0VYVElOTElORSB1aW50OF90IG1wZF9zaWduKGNvbnN0IG1wZF90ICpkZWMpOworLyogMSBpZiBkZWMgaXMgcG9zaXRpdmUsIC0xIGlmIGRlYyBpcyBuZWdhdGl2ZSAqLworRVhUSU5MSU5FIGludCBtcGRfYXJpdGhfc2lnbihjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBsb25nIG1wZF9yYWRpeCh2b2lkKTsKK0VYVElOTElORSBpbnQgbXBkX2lzZHluYW1pYyhtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzc3RhdGljKG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNkeW5hbWljX2RhdGEobXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc3N0YXRpY19kYXRhKG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNzaGFyZWRfZGF0YShtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzY29uc3RfZGF0YShtcGRfdCAqZGVjKTsKK0VYVElOTElORSBtcGRfc3NpemVfdCBtcGRfdHJhaWxfemVyb3MoY29uc3QgbXBkX3QgKmRlYyk7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXR0cmlidXRlcyBvZiBhIGRlY2ltYWwgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBzZXQgbnVtYmVyIG9mIGRlY2ltYWwgZGlnaXRzIGluIHRoZSBjb2VmZmljaWVudCAqLworRVhUSU5MSU5FIHZvaWQgbXBkX3NldGRpZ2l0cyhtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfc2lnbihtcGRfdCAqcmVzdWx0LCB1aW50OF90IHNpZ24pOworLyogY29weSBzaWduIGZyb20gYW5vdGhlciBkZWNpbWFsICovCitFWFRJTkxJTkUgdm9pZCBtcGRfc2lnbmNweShtcGRfdCAqcmVzdWx0LCBtcGRfdCAqYSk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X2luZmluaXR5KG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9xbmFuKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9zbmFuKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9uZWdhdGl2ZShtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfcG9zaXRpdmUobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X2R5bmFtaWMobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X3N0YXRpYyhtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfZHluYW1pY19kYXRhKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9zdGF0aWNfZGF0YShtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfc2hhcmVkX2RhdGEobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X2NvbnN0X2RhdGEobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfY2xlYXJfZmxhZ3MobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X2ZsYWdzKG1wZF90ICpyZXN1bHQsIHVpbnQ4X3QgZmxhZ3MpOworRVhUSU5MSU5FIHZvaWQgbXBkX2NvcHlfZmxhZ3MobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yIE1hY3JvcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBtcGRfZXJyX2ZhdGFsKC4uLikgXAorICAgIGRvIHtmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBlcnJvcjogIiwgX19GSUxFX18sIF9fTElORV9fKTsgXAorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgX19WQV9BUkdTX18pOyAgZnB1dGMoJ1xuJywgc3RkZXJyKTsgICAgXAorICAgICAgICBhYm9ydCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIG1wZF9lcnJfd2FybiguLi4pIFwKKyAgICBkbyB7ZnByaW50ZihzdGRlcnIsICIlczolZDogd2FybmluZzogIiwgX19GSUxFX18sIF9fTElORV9fKTsgXAorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgX19WQV9BUkdTX18pOyBmcHV0YygnXG4nLCBzdGRlcnIpOyAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5IGhhbmRsaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2V4dGVybiB2b2lkICooKiBtcGRfbWFsbG9jZnVuYykoc2l6ZV90IHNpemUpOworZXh0ZXJuIHZvaWQgKigqIG1wZF9jYWxsb2NmdW5jKShzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKTsKK2V4dGVybiB2b2lkICooKiBtcGRfcmVhbGxvY2Z1bmMpKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOworZXh0ZXJuIHZvaWQgKCogbXBkX2ZyZWUpKHZvaWQgKnB0cik7CisKK3ZvaWQgKm1wZF9jYWxsb2NmdW5jX2VtKHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUpOworCit2b2lkICptcGRfYWxsb2MobXBkX3NpemVfdCBubWVtYiwgbXBkX3NpemVfdCBzaXplKTsKK3ZvaWQgKm1wZF9jYWxsb2MobXBkX3NpemVfdCBubWVtYiwgbXBkX3NpemVfdCBzaXplKTsKK3ZvaWQgKm1wZF9yZWFsbG9jKHZvaWQgKnB0ciwgbXBkX3NpemVfdCBubWVtYiwgbXBkX3NpemVfdCBzaXplLCB1aW50OF90ICplcnIpOwordm9pZCAqbXBkX3NoX2FsbG9jKG1wZF9zaXplX3Qgc3RydWN0X3NpemUsIG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSk7CisKK21wZF90ICptcGRfcW5ldyh2b2lkKTsKK21wZF90ICptcGRfbmV3KG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfdCAqbXBkX3FuZXdfc2l6ZShtcGRfc3NpemVfdCBzaXplKTsKK3ZvaWQgbXBkX2RlbChtcGRfdCAqZGVjKTsKKwordm9pZCBtcGRfdWludF96ZXJvKG1wZF91aW50X3QgKmRlc3QsIG1wZF9zaXplX3QgbGVuKTsKK2ludCBtcGRfcXJlc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcXJlc2l6ZV96ZXJvKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfbWluYWxsb2MobXBkX3QgKnJlc3VsdCk7CisKK2ludCBtcGRfcmVzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX3Jlc2l6ZV96ZXJvKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIG1wZF9jb250ZXh0X3QgKmN0eCk7CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9IC8qIEVORCBleHRlcm4gIkMiICovCisjZW5kaWYKKworCisjZW5kaWYgLyogTVBERUNJTUFMX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbnVtYmVydGhlb3J5LmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwY2U2ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5jCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgInVtb2Rhcml0aC5oIgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorCisKKy8qIEJpZ251bTogSW5pdGlhbGl6ZSB0aGUgTnVtYmVyIFRoZW9yZXRpYyBUcmFuc2Zvcm0uICovCisKKworLyoKKyAqIFJldHVybiB0aGUgbnRoIHJvb3Qgb2YgdW5pdHkgaW4gRihwKS4gVGhpcyBjb3JyZXNwb25kcyB0byBlKiooKDIqcGkqaSkvbikKKyAqIGluIHRoZSBGb3VyaWVyIHRyYW5zZm9ybS4gV2UgaGF2ZSB3KipuID09IDEgKG1vZCBwKS4KKyAqICAgIG4gOj0gdHJhbnNmb3JtIGxlbmd0aC4KKyAqICAgIHNpZ24gOj0gLTEgZm9yIGZvcndhcmQgdHJhbnNmb3JtLCAxIGZvciBiYWNrd2FyZCB0cmFuc2Zvcm0uCisgKiAgICBtb2RudW0gOj0gb25lIG9mIHtQMSwgUDIsIFAzfS4KKyAqLworbXBkX3VpbnRfdAorX21wZF9nZXRrZXJuZWwobXBkX3VpbnRfdCBuLCBpbnQgc2lnbiwgaW50IG1vZG51bSkKK3sKKyAgICBtcGRfdWludF90IHVtb2QsIHAsIHIsIHhpOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisKKyAgICBTRVRNT0RVTFVTKG1vZG51bSk7CisgICAgciA9IG1wZF9yb290c1ttb2RudW1dOyAvKiBwcmltaXRpdmUgcm9vdCBvZiBGKHApICovCisgICAgcCA9IHVtb2Q7CisgICAgeGkgPSAocC0xKSAvIG47CisKKyAgICBpZiAoc2lnbiA9PSAtMSkKKyAgICAgICAgcmV0dXJuIFBPV01PRChyLCAocC0xLXhpKSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUE9XTU9EKHIsIHhpKTsKK30KKworLyoKKyAqIEluaXRpYWxpemUgYW5kIHJldHVybiB0cmFuc2Zvcm0gcGFyYW1ldGVycy4KKyAqICAgIG4gOj0gdHJhbnNmb3JtIGxlbmd0aC4KKyAqICAgIHNpZ24gOj0gLTEgZm9yIGZvcndhcmQgdHJhbnNmb3JtLCAxIGZvciBiYWNrd2FyZCB0cmFuc2Zvcm0uCisgKiAgICBtb2RudW0gOj0gb25lIG9mIHtQMSwgUDIsIFAzfS4KKyAqLworc3RydWN0IGZudF9wYXJhbXMgKgorX21wZF9pbml0X2ZudF9wYXJhbXMobXBkX3NpemVfdCBuLCBpbnQgc2lnbiwgaW50IG1vZG51bSkKK3sKKyAgICBzdHJ1Y3QgZm50X3BhcmFtcyAqdHBhcmFtczsKKyAgICBtcGRfdWludF90IHVtb2Q7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfdWludF90IGtlcm5lbCwgdzsKKyAgICBtcGRfdWludF90IGk7CisgICAgbXBkX3NpemVfdCBuaGFsZjsKKworICAgIGFzc2VydChpc3Bvd2VyMihuKSk7CisgICAgYXNzZXJ0KHNpZ24gPT0gLTEgfHwgc2lnbiA9PSAxKTsKKyAgICBhc3NlcnQoUDEgPD0gbW9kbnVtICYmIG1vZG51bSA8PSBQMyk7CisKKyAgICBuaGFsZiA9IG4vMjsKKyAgICB0cGFyYW1zID0gbXBkX3NoX2FsbG9jKHNpemVvZiAqdHBhcmFtcywgbmhhbGYsIHNpemVvZiAobXBkX3VpbnRfdCkpOworICAgIGlmICh0cGFyYW1zID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIGtlcm5lbCA9IF9tcGRfZ2V0a2VybmVsKG4sIHNpZ24sIG1vZG51bSk7CisKKyAgICB0cGFyYW1zLT5tb2RudW0gPSBtb2RudW07CisgICAgdHBhcmFtcy0+bW9kdWx1cyA9IHVtb2Q7CisgICAgdHBhcmFtcy0+a2VybmVsID0ga2VybmVsOworCisgICAgLyogd3RhYmxlW10gOj0gdyoqMCwgdyoqMSwgLi4uLCB3KioobmhhbGYtMSkgKi8KKyAgICB3ID0gMTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmhhbGY7IGkrKykgeworICAgICAgICB0cGFyYW1zLT53dGFibGVbaV0gPSB3OworICAgICAgICB3ID0gTVVMTU9EKHcsIGtlcm5lbCk7CisgICAgfQorCisgICAgcmV0dXJuIHRwYXJhbXM7Cit9CisKKy8qIEluaXRpYWxpemUgd3RhYmxlIG9mIHNpemUgdGhyZWUuICovCit2b2lkCitfbXBkX2luaXRfdzN0YWJsZShtcGRfdWludF90IHczdGFibGVbM10sIGludCBzaWduLCBpbnQgbW9kbnVtKQoreworICAgIG1wZF91aW50X3QgdW1vZDsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3Qga2VybmVsOworCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIGtlcm5lbCA9IF9tcGRfZ2V0a2VybmVsKDMsIHNpZ24sIG1vZG51bSk7CisKKyAgICB3M3RhYmxlWzBdID0gMTsKKyAgICB3M3RhYmxlWzFdID0ga2VybmVsOworICAgIHczdGFibGVbMl0gPSBQT1dNT0Qoa2VybmVsLCAyKTsKK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTRkMTFkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIE5VTUJFUl9USEVPUllfSAorI2RlZmluZSBOVU1CRVJfVEhFT1JZX0gKKworCisjaW5jbHVkZSAiY29uc3RhbnRzLmgiCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisKKworLyogdHJhbnNmb3JtIHBhcmFtZXRlcnMgKi8KK3N0cnVjdCBmbnRfcGFyYW1zIHsKKyAgICBpbnQgbW9kbnVtOworICAgIG1wZF91aW50X3QgbW9kdWx1czsKKyAgICBtcGRfdWludF90IGtlcm5lbDsKKyAgICBtcGRfdWludF90IHd0YWJsZVtdOworfTsKKworCittcGRfdWludF90IF9tcGRfZ2V0a2VybmVsKG1wZF91aW50X3QgbiwgaW50IHNpZ24sIGludCBtb2RudW0pOworc3RydWN0IGZudF9wYXJhbXMgKl9tcGRfaW5pdF9mbnRfcGFyYW1zKG1wZF9zaXplX3QgbiwgaW50IHNpZ24sIGludCBtb2RudW0pOwordm9pZCBfbXBkX2luaXRfdzN0YWJsZShtcGRfdWludF90IHczdGFibGVbM10sIGludCBzaWduLCBpbnQgbW9kbnVtKTsKKworCisjaWZkZWYgUFBSTworc3RhdGljIGlubGluZSB2b2lkCitwcHJvX3NldG1vZHVsdXMoaW50IG1vZG51bSwgbXBkX3VpbnRfdCAqdW1vZCwgZG91YmxlICpkbW9kLCB1aW50MzJfdCBkaW52bW9kWzNdKQoreworICAgICpkbW9kID0gKnVtb2QgPSAgbXBkX21vZHVsaVttb2RudW1dOworICAgIGRpbnZtb2RbMF0gPSBtcGRfaW52bW9kdWxpW21vZG51bV1bMF07CisgICAgZGludm1vZFsxXSA9IG1wZF9pbnZtb2R1bGlbbW9kbnVtXVsxXTsKKyAgICBkaW52bW9kWzJdID0gbXBkX2ludm1vZHVsaVttb2RudW1dWzJdOworfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3RkX3NldG1vZHVsdXMoaW50IG1vZG51bSwgbXBkX3VpbnRfdCAqdW1vZCkKK3sKKyAgICAqdW1vZCA9ICBtcGRfbW9kdWxpW21vZG51bV07Cit9CisjZW5kaWYKKworCisjZW5kaWYKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvc2l4c3RlcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMDU0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuYwpAQCAtMCwwICsxLDIxNCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgImRpZnJhZGl4Mi5oIgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorI2luY2x1ZGUgInRyYW5zcG9zZS5oIgorI2luY2x1ZGUgInVtb2Rhcml0aC5oIgorI2luY2x1ZGUgInNpeHN0ZXAuaCIKKworCisvKiBCaWdudW06IENhY2hlIGVmZmljaWVudCBNYXRyaXggRm91cmllciBUcmFuc2Zvcm0gZm9yIGFycmF5cyBvZiB0aGUKKyAgIGZvcm0gMioqbiAoU2VlIGxpdGVyYXR1cmUvc2l4LXN0ZXAudHh0KS4gKi8KKworCisvKiBmb3J3YXJkIHRyYW5zZm9ybSB3aXRoIHNpZ24gPSAtMSAqLworaW50CitzaXhfc3RlcF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIHN0cnVjdCBmbnRfcGFyYW1zICp0cGFyYW1zOworICAgIG1wZF9zaXplX3QgbG9nMm4sIEMsIFI7CisgICAgbXBkX3VpbnRfdCBrZXJuZWw7CisgICAgbXBkX3VpbnRfdCB1bW9kOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCAqeCwgdzAsIHcxLCB3c3RlcDsKKyAgICBtcGRfc2l6ZV90IGksIGs7CisKKworICAgIGFzc2VydChpc3Bvd2VyMihuKSk7CisgICAgYXNzZXJ0KG4gPj0gMTYpOworICAgIGFzc2VydChuIDw9IE1QRF9NQVhUUkFOU0ZPUk1fMk4pOworCisgICAgbG9nMm4gPSBtcGRfYnNyKG4pOworICAgIEMgPSAoKG1wZF9zaXplX3QpMSkgPDwgKGxvZzJuIC8gMik7ICAvKiBudW1iZXIgb2YgY29sdW1ucyAqLworICAgIFIgPSAoKG1wZF9zaXplX3QpMSkgPDwgKGxvZzJuIC0gKGxvZzJuIC8gMikpOyAvKiBudW1iZXIgb2Ygcm93cyAqLworCisKKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4gKi8KKyAgICBpZiAoIXRyYW5zcG9zZV9wb3cyKGEsIFIsIEMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIExlbmd0aCBSIHRyYW5zZm9ybSBvbiB0aGUgcm93cy4gKi8KKyAgICBpZiAoKHRwYXJhbXMgPSBfbXBkX2luaXRfZm50X3BhcmFtcyhSLCAtMSwgbW9kbnVtKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yICh4ID0gYTsgeCA8IGErbjsgeCArPSBSKSB7CisgICAgICAgIGZudF9kaWYyKHgsIFIsIHRwYXJhbXMpOworICAgIH0KKworICAgIC8qIFRyYW5zcG9zZSB0aGUgbWF0cml4LiAqLworICAgIGlmICghdHJhbnNwb3NlX3BvdzIoYSwgQywgUikpIHsKKyAgICAgICAgbXBkX2ZyZWUodHBhcmFtcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIE11bHRpcGx5IGVhY2ggbWF0cml4IGVsZW1lbnQgKGFkZHJlc3NlZCBieSBpKkMraykgYnkgcioqKGkqaykuICovCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIGtlcm5lbCA9IF9tcGRfZ2V0a2VybmVsKG4sIC0xLCBtb2RudW0pOworICAgIGZvciAoaSA9IDE7IGkgPCBSOyBpKyspIHsKKyAgICAgICAgdzAgPSAxOyAgICAgICAgICAgICAgICAgIC8qIHIqKihpKjApOiBpbml0aWFsIHZhbHVlIGZvciBrPTAgKi8KKyAgICAgICAgdzEgPSBQT1dNT0Qoa2VybmVsLCBpKTsgIC8qIHIqKihpKjEpOiBpbml0aWFsIHZhbHVlIGZvciBrPTEgKi8KKyAgICAgICAgd3N0ZXAgPSBNVUxNT0QodzEsIHcxKTsgIC8qIHIqKigyKmkpICovCisgICAgICAgIGZvciAoayA9IDA7IGsgPCBDOyBrICs9IDIpIHsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDAgPSBhW2kqQytrXTsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDEgPSBhW2kqQytrKzFdOworICAgICAgICAgICAgTVVMTU9EMigmeDAsIHcwLCAmeDEsIHcxKTsKKyAgICAgICAgICAgIE1VTE1PRDJDKCZ3MCwgJncxLCB3c3RlcCk7ICAvKiByKiooaSooaysyKSkgPSByKiooaSprKSAqIHIqKigyKmkpICovCisgICAgICAgICAgICBhW2kqQytrXSA9IHgwOworICAgICAgICAgICAgYVtpKkMraysxXSA9IHgxOworICAgICAgICB9CisgICAgfQorCisgICAgLyogTGVuZ3RoIEMgdHJhbnNmb3JtIG9uIHRoZSByb3dzLiAqLworICAgIGlmIChDICE9IFIpIHsKKyAgICAgICAgbXBkX2ZyZWUodHBhcmFtcyk7CisgICAgICAgIGlmICgodHBhcmFtcyA9IF9tcGRfaW5pdF9mbnRfcGFyYW1zKEMsIC0xLCBtb2RudW0pKSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKHggPSBhOyB4IDwgYStuOyB4ICs9IEMpIHsKKyAgICAgICAgZm50X2RpZjIoeCwgQywgdHBhcmFtcyk7CisgICAgfQorICAgIG1wZF9mcmVlKHRwYXJhbXMpOworCisjaWYgMAorICAgIC8qIEFuIHVub3JkZXJlZCB0cmFuc2Zvcm0gaXMgc3VmZmljaWVudCBmb3IgY29udm9sdXRpb24uICovCisgICAgLyogVHJhbnNwb3NlIHRoZSBtYXRyaXguICovCisgICAgaWYgKCF0cmFuc3Bvc2VfcG93MihhLCBSLCBDKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiAxOworfQorCisKKy8qIHJldmVyc2UgdHJhbnNmb3JtLCBzaWduID0gMSAqLworaW50CitpbnZfc2l4X3N0ZXBfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSkKK3sKKyAgICBzdHJ1Y3QgZm50X3BhcmFtcyAqdHBhcmFtczsKKyAgICBtcGRfc2l6ZV90IGxvZzJuLCBDLCBSOworICAgIG1wZF91aW50X3Qga2VybmVsOworICAgIG1wZF91aW50X3QgdW1vZDsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3QgKngsIHcwLCB3MSwgd3N0ZXA7CisgICAgbXBkX3NpemVfdCBpLCBrOworCisKKyAgICBhc3NlcnQoaXNwb3dlcjIobikpOworICAgIGFzc2VydChuID49IDE2KTsKKyAgICBhc3NlcnQobiA8PSBNUERfTUFYVFJBTlNGT1JNXzJOKTsKKworICAgIGxvZzJuID0gbXBkX2JzcihuKTsKKyAgICBDID0gKChtcGRfc2l6ZV90KTEpIDw8IChsb2cybiAvIDIpOyAvKiBudW1iZXIgb2YgY29sdW1ucyAqLworICAgIFIgPSAoKG1wZF9zaXplX3QpMSkgPDwgKGxvZzJuIC0gKGxvZzJuIC8gMikpOyAvKiBudW1iZXIgb2Ygcm93cyAqLworCisKKyNpZiAwCisgICAgLyogQW4gdW5vcmRlcmVkIHRyYW5zZm9ybSBpcyBzdWZmaWNpZW50IGZvciBjb252b2x1dGlvbi4gKi8KKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeCwgcHJvZHVjaW5nIGFuIFIqQyBtYXRyaXguICovCisgICAgaWYgKCF0cmFuc3Bvc2VfcG93MihhLCBDLCBSKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKworICAgIC8qIExlbmd0aCBDIHRyYW5zZm9ybSBvbiB0aGUgcm93cy4gKi8KKyAgICBpZiAoKHRwYXJhbXMgPSBfbXBkX2luaXRfZm50X3BhcmFtcyhDLCAxLCBtb2RudW0pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmb3IgKHggPSBhOyB4IDwgYStuOyB4ICs9IEMpIHsKKyAgICAgICAgZm50X2RpZjIoeCwgQywgdHBhcmFtcyk7CisgICAgfQorCisgICAgLyogTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGkqQytrKSBieSByKiooaSprKS4gKi8KKyAgICBTRVRNT0RVTFVTKG1vZG51bSk7CisgICAga2VybmVsID0gX21wZF9nZXRrZXJuZWwobiwgMSwgbW9kbnVtKTsKKyAgICBmb3IgKGkgPSAxOyBpIDwgUjsgaSsrKSB7CisgICAgICAgIHcwID0gMTsKKyAgICAgICAgdzEgPSBQT1dNT0Qoa2VybmVsLCBpKTsKKyAgICAgICAgd3N0ZXAgPSBNVUxNT0QodzEsIHcxKTsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IEM7IGsgKz0gMikgeworICAgICAgICAgICAgbXBkX3VpbnRfdCB4MCA9IGFbaSpDK2tdOworICAgICAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGFbaSpDK2srMV07CisgICAgICAgICAgICBNVUxNT0QyKCZ4MCwgdzAsICZ4MSwgdzEpOworICAgICAgICAgICAgTVVMTU9EMkMoJncwLCAmdzEsIHdzdGVwKTsKKyAgICAgICAgICAgIGFbaSpDK2tdID0geDA7CisgICAgICAgICAgICBhW2kqQytrKzFdID0geDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4gKi8KKyAgICBpZiAoIXRyYW5zcG9zZV9wb3cyKGEsIFIsIEMpKSB7CisgICAgICAgIG1wZF9mcmVlKHRwYXJhbXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBMZW5ndGggUiB0cmFuc2Zvcm0gb24gdGhlIHJvd3MuICovCisgICAgaWYgKFIgIT0gQykgeworICAgICAgICBtcGRfZnJlZSh0cGFyYW1zKTsKKyAgICAgICAgaWYgKCh0cGFyYW1zID0gX21wZF9pbml0X2ZudF9wYXJhbXMoUiwgMSwgbW9kbnVtKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yICh4ID0gYTsgeCA8IGErbjsgeCArPSBSKSB7CisgICAgICAgIGZudF9kaWYyKHgsIFIsIHRwYXJhbXMpOworICAgIH0KKyAgICBtcGRfZnJlZSh0cGFyYW1zKTsKKworICAgIC8qIFRyYW5zcG9zZSB0aGUgbWF0cml4LiAqLworICAgIGlmICghdHJhbnNwb3NlX3BvdzIoYSwgQywgUikpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDI1MWRmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBTSVhfU1RFUF9ICisjZGVmaW5lIFNJWF9TVEVQX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworCitpbnQgc2l4X3N0ZXBfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSk7CitpbnQgaW52X3NpeF9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU1ZDRiNgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmMKQEAgLTAsMCArMSwyNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJjb25zdGFudHMuaCIKKyNpbmNsdWRlICJ0eXBlYXJpdGguaCIKKyNpbmNsdWRlICJ0cmFuc3Bvc2UuaCIKKworCisjZGVmaW5lIEJVRlNJWkUgNDA5NgorI2RlZmluZSBTSURFIDEyOAorCisKKy8qIEJpZ251bTogVGhlIHRyYW5zcG9zZSBmdW5jdGlvbnMgYXJlIHVzZWQgZm9yIHZlcnkgbGFyZ2UgdHJhbnNmb3JtcworICAgaW4gc2l4c3RlcC5jIGFuZCBmb3Vyc3RlcC5jLiAqLworCisKKy8qIERlZmluaXRpb24gb2YgdGhlIG1hdHJpeCB0cmFuc3Bvc2UgKi8KK3ZvaWQKK3N0ZF90cmFucyhtcGRfdWludF90IGRlc3RbXSwgbXBkX3VpbnRfdCBzcmNbXSwgbXBkX3NpemVfdCByb3dzLCBtcGRfc2l6ZV90IGNvbHMpCit7CisgICAgbXBkX3NpemVfdCBpZGVzdCwgaXNyYzsKKyAgICBtcGRfc2l6ZV90IHIsIGM7CisKKyAgICBmb3IgKHIgPSAwOyByIDwgcm93czsgcisrKSB7CisgICAgICAgIGlzcmMgPSByICogY29sczsKKyAgICAgICAgaWRlc3QgPSByOworICAgICAgICBmb3IgKGMgPSAwOyBjIDwgY29sczsgYysrKSB7CisgICAgICAgICAgICBkZXN0W2lkZXN0XSA9IHNyY1tpc3JjXTsKKyAgICAgICAgICAgIGlzcmMgKz0gMTsKKyAgICAgICAgICAgIGlkZXN0ICs9IHJvd3M7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBTd2FwIGhhbGYtcm93cyBvZiAyXm4gKiAoMioyXm4pIG1hdHJpeC4KKyAqIEZPUldBUkRfQ1lDTEU6IGV2ZW4vb2RkIHBlcm11dGF0aW9uIG9mIHRoZSBoYWxmcm93cy4KKyAqIEJBQ0tXQVJEX0NZQ0xFOiByZXZlcnNlIHRoZSBldmVuL29kZCBwZXJtdXRhdGlvbi4KKyAqLworc3RhdGljIGludAorc3dhcF9oYWxmcm93c19wb3cyKG1wZF91aW50X3QgKm1hdHJpeCwgbXBkX3NpemVfdCByb3dzLCBtcGRfc2l6ZV90IGNvbHMsIGludCBkaXIpCit7CisgICAgbXBkX3VpbnRfdCBidWYxW0JVRlNJWkVdOworICAgIG1wZF91aW50X3QgYnVmMltCVUZTSVpFXTsKKyAgICBtcGRfdWludF90ICpyZWFkYnVmLCAqd3JpdGVidWYsICpocDsKKyAgICBtcGRfc2l6ZV90ICpkb25lLCBkYml0czsKKyAgICBtcGRfc2l6ZV90IGIgPSBCVUZTSVpFLCBzdHJpZGU7CisgICAgbXBkX3NpemVfdCBobiwgaG1heDsgLyogaGFsZnJvdyBudW1iZXIgKi8KKyAgICBtcGRfc2l6ZV90IG0sIHI9MDsKKyAgICBtcGRfc2l6ZV90IG9mZnNldDsKKyAgICBtcGRfc2l6ZV90IG5leHQ7CisKKworICAgIGFzc2VydChjb2xzID09IG11bF9zaXplX3QoMiwgcm93cykpOworCisgICAgaWYgKGRpciA9PSBGT1JXQVJEX0NZQ0xFKSB7CisgICAgICAgIHIgPSByb3dzOworICAgIH0KKyAgICBlbHNlIGlmIChkaXIgPT0gQkFDS1dBUkRfQ1lDTEUpIHsKKyAgICAgICAgciA9IDI7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorCisgICAgbSA9IGNvbHMgLSAxOworICAgIGhtYXggPSByb3dzOyAvKiBjeWNsZXMgc3RhcnQgYXQgb2RkIGhhbGZyb3dzICovCisgICAgZGJpdHMgPSA4ICogc2l6ZW9mICpkb25lOworICAgIGlmICgoZG9uZSA9IG1wZF9jYWxsb2MoaG1heC8oc2l6ZW9mICpkb25lKSArIDEsIHNpemVvZiAqZG9uZSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZm9yIChobiA9IDE7IGhuIDw9IGhtYXg7IGhuICs9IDIpIHsKKworICAgICAgICBpZiAoZG9uZVtobi9kYml0c10gJiBtcGRfYml0c1tobiVkYml0c10pIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcmVhZGJ1ZiA9IGJ1ZjE7IHdyaXRlYnVmID0gYnVmMjsKKworICAgICAgICBmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8IGNvbHMvMjsgb2Zmc2V0ICs9IGIpIHsKKworICAgICAgICAgICAgc3RyaWRlID0gKG9mZnNldCArIGIgPCBjb2xzLzIpID8gYiA6IGNvbHMvMi1vZmZzZXQ7CisKKyAgICAgICAgICAgIGhwID0gbWF0cml4ICsgaG4qY29scy8yOworICAgICAgICAgICAgbWVtY3B5KHJlYWRidWYsIGhwK29mZnNldCwgc3RyaWRlKihzaXplb2YgKnJlYWRidWYpKTsKKyAgICAgICAgICAgIHBvaW50ZXJzd2FwKCZyZWFkYnVmLCAmd3JpdGVidWYpOworCisgICAgICAgICAgICBuZXh0ID0gbXVsbW9kX3NpemVfdChobiwgciwgbSk7CisgICAgICAgICAgICBocCA9IG1hdHJpeCArIG5leHQqY29scy8yOworCisgICAgICAgICAgICB3aGlsZSAobmV4dCAhPSBobikgeworCisgICAgICAgICAgICAgICAgbWVtY3B5KHJlYWRidWYsIGhwK29mZnNldCwgc3RyaWRlKihzaXplb2YgKnJlYWRidWYpKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoaHArb2Zmc2V0LCB3cml0ZWJ1Ziwgc3RyaWRlKihzaXplb2YgKndyaXRlYnVmKSk7CisgICAgICAgICAgICAgICAgcG9pbnRlcnN3YXAoJnJlYWRidWYsICZ3cml0ZWJ1Zik7CisKKyAgICAgICAgICAgICAgICBkb25lW25leHQvZGJpdHNdIHw9IG1wZF9iaXRzW25leHQlZGJpdHNdOworCisgICAgICAgICAgICAgICAgbmV4dCA9IG11bG1vZF9zaXplX3QobmV4dCwgciwgbSk7CisgICAgICAgICAgICAgICAgICAgIGhwID0gbWF0cml4ICsgbmV4dCpjb2xzLzI7CisKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWVtY3B5KGhwK29mZnNldCwgd3JpdGVidWYsIHN0cmlkZSooc2l6ZW9mICp3cml0ZWJ1ZikpOworCisgICAgICAgICAgICBkb25lW2huL2RiaXRzXSB8PSBtcGRfYml0c1tobiVkYml0c107CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfZnJlZShkb25lKTsKKyAgICByZXR1cm4gMTsKK30KKworLyogSW4tcGxhY2UgdHJhbnNwb3NlIG9mIGEgc3F1YXJlIG1hdHJpeCAqLworc3RhdGljIGlubGluZSB2b2lkCitzcXVhcmV0cmFucyhtcGRfdWludF90ICpidWYsIG1wZF9zaXplX3QgY29scykKK3sKKyAgICBtcGRfdWludF90IHRtcDsKKyAgICBtcGRfc2l6ZV90IGlkZXN0LCBpc3JjOworICAgIG1wZF9zaXplX3QgciwgYzsKKworICAgIGZvciAociA9IDA7IHIgPCBjb2xzOyByKyspIHsKKyAgICAgICAgYyA9IHIrMTsKKyAgICAgICAgaXNyYyA9IHIqY29scyArIGM7CisgICAgICAgIGlkZXN0ID0gYypjb2xzICsgcjsKKyAgICAgICAgZm9yIChjID0gcisxOyBjIDwgY29sczsgYysrKSB7CisgICAgICAgICAgICB0bXAgPSBidWZbaXNyY107CisgICAgICAgICAgICBidWZbaXNyY10gPSBidWZbaWRlc3RdOworICAgICAgICAgICAgYnVmW2lkZXN0XSA9IHRtcDsKKyAgICAgICAgICAgIGlzcmMgKz0gMTsKKyAgICAgICAgICAgIGlkZXN0ICs9IGNvbHM7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBUcmFuc3Bvc2UgMl5uICogMl5uIG1hdHJpeC4gRm9yIGNhY2hlIGVmZmljaWVuY3ksIHRoZSBtYXRyaXggaXMgc3BsaXQgaW50bworICogc3F1YXJlIGJsb2NrcyB3aXRoIHNpZGUgbGVuZ3RoICdTSURFJy4gRmlyc3QsIHRoZSBibG9ja3MgYXJlIHRyYW5zcG9zZWQsCisgKiB0aGVuIGEgc3F1YXJlIHRyYW5wb3NpdGlvbiBpcyBkb25lIG9uIGVhY2ggaW5kaXZpZHVhbCBibG9jay4KKyAqLworc3RhdGljIHZvaWQKK3NxdWFyZXRyYW5zX3BvdzIobXBkX3VpbnRfdCAqbWF0cml4LCBtcGRfc2l6ZV90IHNpemUpCit7CisgICAgbXBkX3VpbnRfdCBidWYxW1NJREUqU0lERV07CisgICAgbXBkX3VpbnRfdCBidWYyW1NJREUqU0lERV07CisgICAgbXBkX3VpbnRfdCAqdG8sICpmcm9tOworICAgIG1wZF9zaXplX3QgYiA9IHNpemU7CisgICAgbXBkX3NpemVfdCByLCBjOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIHdoaWxlIChiID4gU0lERSkgYiA+Pj0gMTsKKworICAgIGZvciAociA9IDA7IHIgPCBzaXplOyByICs9IGIpIHsKKworICAgICAgICBmb3IgKGMgPSByOyBjIDwgc2l6ZTsgYyArPSBiKSB7CisKKyAgICAgICAgICAgIGZyb20gPSBtYXRyaXggKyByKnNpemUgKyBjOworICAgICAgICAgICAgdG8gPSBidWYxOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGI7IGkrKykgeworICAgICAgICAgICAgICAgIG1lbWNweSh0bywgZnJvbSwgYiooc2l6ZW9mICp0bykpOworICAgICAgICAgICAgICAgIGZyb20gKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICB0byArPSBiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3F1YXJldHJhbnMoYnVmMSwgYik7CisKKyAgICAgICAgICAgIGlmIChyID09IGMpIHsKKyAgICAgICAgICAgICAgICB0byA9IG1hdHJpeCArIHIqc2l6ZSArIGM7CisgICAgICAgICAgICAgICAgZnJvbSA9IGJ1ZjE7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGI7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkodG8sIGZyb20sIGIqKHNpemVvZiAqdG8pKTsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSArPSBiOworICAgICAgICAgICAgICAgICAgICB0byArPSBzaXplOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGZyb20gPSBtYXRyaXggKyBjKnNpemUgKyByOworICAgICAgICAgICAgICAgIHRvID0gYnVmMjsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweSh0bywgZnJvbSwgYiooc2l6ZW9mICp0bykpOworICAgICAgICAgICAgICAgICAgICBmcm9tICs9IHNpemU7CisgICAgICAgICAgICAgICAgICAgIHRvICs9IGI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNxdWFyZXRyYW5zKGJ1ZjIsIGIpOworCisgICAgICAgICAgICAgICAgdG8gPSBtYXRyaXggKyBjKnNpemUgKyByOworICAgICAgICAgICAgICAgIGZyb20gPSBidWYxOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBiOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHRvLCBmcm9tLCBiKihzaXplb2YgKnRvKSk7CisgICAgICAgICAgICAgICAgICAgIGZyb20gKz0gYjsKKyAgICAgICAgICAgICAgICAgICAgdG8gKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0byA9IG1hdHJpeCArIHIqc2l6ZSArIGM7CisgICAgICAgICAgICAgICAgZnJvbSA9IGJ1ZjI7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGI7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkodG8sIGZyb20sIGIqKHNpemVvZiAqdG8pKTsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSArPSBiOworICAgICAgICAgICAgICAgICAgICB0byArPSBzaXplOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworfQorCisvKgorICogSW4tcGxhY2UgdHJhbnNwb3NpdGlvbiBvZiBhIDJebiB4IDJebiBvciBhIDJebiB4ICgyKjJebikKKyAqIG9yIGEgKDIqMl5uKSB4IDJebiBtYXRyaXguCisgKi8KK2ludAordHJhbnNwb3NlX3BvdzIobXBkX3VpbnRfdCAqbWF0cml4LCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scykKK3sKKyAgICBtcGRfc2l6ZV90IHNpemUgPSBtdWxfc2l6ZV90KHJvd3MsIGNvbHMpOworCisgICAgYXNzZXJ0KGlzcG93ZXIyKHJvd3MpKTsKKyAgICBhc3NlcnQoaXNwb3dlcjIoY29scykpOworCisgICAgaWYgKGNvbHMgPT0gcm93cykgeworICAgICAgICBzcXVhcmV0cmFuc19wb3cyKG1hdHJpeCwgcm93cyk7CisgICAgfQorICAgIGVsc2UgaWYgKGNvbHMgPT0gbXVsX3NpemVfdCgyLCByb3dzKSkgeworICAgICAgICBpZiAoIXN3YXBfaGFsZnJvd3NfcG93MihtYXRyaXgsIHJvd3MsIGNvbHMsIEZPUldBUkRfQ1lDTEUpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzcXVhcmV0cmFuc19wb3cyKG1hdHJpeCwgcm93cyk7CisgICAgICAgIHNxdWFyZXRyYW5zX3BvdzIobWF0cml4KyhzaXplLzIpLCByb3dzKTsKKyAgICB9CisgICAgZWxzZSBpZiAocm93cyA9PSBtdWxfc2l6ZV90KDIsIGNvbHMpKSB7CisgICAgICAgIHNxdWFyZXRyYW5zX3BvdzIobWF0cml4LCBjb2xzKTsKKyAgICAgICAgc3F1YXJldHJhbnNfcG93MihtYXRyaXgrKHNpemUvMiksIGNvbHMpOworICAgICAgICBpZiAoIXN3YXBfaGFsZnJvd3NfcG93MihtYXRyaXgsIGNvbHMsIHJvd3MsIEJBQ0tXQVJEX0NZQ0xFKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFib3J0KCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3RyYW5zcG9zZS5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDBhZWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFRSQU5TUE9TRV9ICisjZGVmaW5lIFRSQU5TUE9TRV9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworZW51bSB7Rk9SV0FSRF9DWUNMRSwgQkFDS1dBUkRfQ1lDTEV9OworCisKK3ZvaWQgc3RkX3RyYW5zKG1wZF91aW50X3QgZGVzdFtdLCBtcGRfdWludF90IHNyY1tdLCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scyk7CitpbnQgdHJhbnNwb3NlX3BvdzIobXBkX3VpbnRfdCAqbWF0cml4LCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scyk7Cit2b2lkIHRyYW5zcG9zZV8zeHBvdzIobXBkX3VpbnRfdCAqbWF0cml4LCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scyk7CisKKworc3RhdGljIGlubGluZSB2b2lkIHBvaW50ZXJzd2FwKG1wZF91aW50X3QgKiphLCBtcGRfdWludF90ICoqYikKK3sKKyAgICBtcGRfdWludF90ICp0bXA7CisKKyAgICB0bXAgPSAqYjsKKyAgICAqYiA9ICphOworICAgICphID0gdG1wOworfQorCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90eXBlYXJpdGguaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWViYThkZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmgKQEAgLTAsMCArMSw2NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgVFlQRUFSSVRIX0gKKyNkZWZpbmUgVFlQRUFSSVRIX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgIExvdyBsZXZlbCBuYXRpdmUgYXJpdGhtZXRpYyBvbiBiYXNpYyB0eXBlcyAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqKiAgICAgICAgICAgRG91YmxlIHdpZHRoIG11bHRpcGxpY2F0aW9uIGFuZCBkaXZpc2lvbgorICoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZiBkZWZpbmVkKENPTkZJR182NCkKKyNpZiBkZWZpbmVkKEFOU0kpCisjaWYgZGVmaW5lZChIQVZFX1VJTlQxMjhfVCkKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICBfX3VpbnQxMjhfdCBobDsKKworICAgIGhsID0gKF9fdWludDEyOF90KWEgKiBiOworCisgICAgKmhpID0gaGwgPj4gNjQ7CisgICAgKmxvID0gKG1wZF91aW50X3QpaGw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCkKK3sKKyAgICBfX3VpbnQxMjhfdCBobDsKKworICAgIGhsID0gKChfX3VpbnQxMjhfdCloaTw8NjQpICsgbG87CisgICAgKnEgPSAobXBkX3VpbnRfdCkoaGwgLyBkKTsgLyogcXVvdGllbnQgaXMga25vd24gdG8gZml0ICovCisgICAgKnIgPSAobXBkX3VpbnRfdCkoaGwgLSAoX191aW50MTI4X3QpKCpxKSAqIGQpOworfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICB1aW50MzJfdCB3WzRdLCBjYXJyeTsKKyAgICB1aW50MzJfdCBhaCwgYWwsIGJoLCBibDsKKyAgICB1aW50NjRfdCBobDsKKworICAgIGFoID0gKHVpbnQzMl90KShhPj4zMik7IGFsID0gKHVpbnQzMl90KWE7CisgICAgYmggPSAodWludDMyX3QpKGI+PjMyKTsgYmwgPSAodWludDMyX3QpYjsKKworICAgIGhsID0gKHVpbnQ2NF90KWFsICogYmw7CisgICAgd1swXSA9ICh1aW50MzJfdClobDsKKyAgICBjYXJyeSA9ICh1aW50MzJfdCkoaGw+PjMyKTsKKworICAgIGhsID0gKHVpbnQ2NF90KWFoICogYmwgKyBjYXJyeTsKKyAgICB3WzFdID0gKHVpbnQzMl90KWhsOworICAgIHdbMl0gPSAodWludDMyX3QpKGhsPj4zMik7CisKKyAgICBobCA9ICh1aW50NjRfdClhbCAqIGJoICsgd1sxXTsKKyAgICB3WzFdID0gKHVpbnQzMl90KWhsOworICAgIGNhcnJ5ID0gKHVpbnQzMl90KShobD4+MzIpOworCisgICAgaGwgPSAoKHVpbnQ2NF90KWFoICogYmggKyB3WzJdKSArIGNhcnJ5OworICAgIHdbMl0gPSAodWludDMyX3QpaGw7CisgICAgd1szXSA9ICh1aW50MzJfdCkoaGw+PjMyKTsKKworICAgICpoaSA9ICgodWludDY0X3Qpd1szXTw8MzIpICsgd1syXTsKKyAgICAqbG8gPSAoKHVpbnQ2NF90KXdbMV08PDMyKSArIHdbMF07Cit9CisKKy8qCisgKiBCeSBIZW5yeSBTLiBXYXJyZW46IGh0dHA6Ly93d3cuaGFja2Vyc2RlbGlnaHQub3JnL0hEY29kZS9kaXZsdS5jLnR4dAorICogaHR0cDovL3d3dy5oYWNrZXJzZGVsaWdodC5vcmcvcGVybWlzc2lvbnMuaHRtOgorICogIllvdSBhcmUgZnJlZSB0byB1c2UsIGNvcHksIGFuZCBkaXN0cmlidXRlIGFueSBvZiB0aGUgY29kZSBvbiB0aGlzIHdlYgorICogIHNpdGUsIHdoZXRoZXIgbW9kaWZpZWQgYnkgeW91IG9yIG5vdC4gWW91IG5lZWQgbm90IGdpdmUgYXR0cmlidXRpb24uIgorICoKKyAqIFNsaWdodGx5IG1vZGlmaWVkLCBjb21tZW50cyBhcmUgbWluZS4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK25seih1aW50NjRfdCB4KQoreworICAgIGludCBuOworCisgICAgaWYgKHggPT0gMCkgcmV0dXJuKDY0KTsKKworICAgIG4gPSAwOworICAgIGlmICh4IDw9IDB4MDAwMDAwMDBGRkZGRkZGRikge24gPSBuICszMjsgeCA9IHggPDwzMjt9CisgICAgaWYgKHggPD0gMHgwMDAwRkZGRkZGRkZGRkZGKSB7biA9IG4gKzE2OyB4ID0geCA8PDE2O30KKyAgICBpZiAoeCA8PSAweDAwRkZGRkZGRkZGRkZGRkYpIHtuID0gbiArIDg7IHggPSB4IDw8IDg7fQorICAgIGlmICh4IDw9IDB4MEZGRkZGRkZGRkZGRkZGRikge24gPSBuICsgNDsgeCA9IHggPDwgNDt9CisgICAgaWYgKHggPD0gMHgzRkZGRkZGRkZGRkZGRkZGKSB7biA9IG4gKyAyOyB4ID0geCA8PCAyO30KKyAgICBpZiAoeCA8PSAweDdGRkZGRkZGRkZGRkZGRkYpIHtuID0gbiArIDE7fQorCisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB1MSwgbXBkX3VpbnRfdCB1MCwKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgdikKK3sKKyAgICBjb25zdCBtcGRfdWludF90IGIgPSA0Mjk0OTY3Mjk2OworICAgIG1wZF91aW50X3QgdW4xLCB1bjAsCisgICAgICAgICAgICAgICB2bjEsIHZuMCwKKyAgICAgICAgICAgICAgIHExLCBxMCwKKyAgICAgICAgICAgICAgIHVuMzIsIHVuMjEsIHVuMTAsCisgICAgICAgICAgICAgICByaGF0LCB0OworICAgIGludCBzOworCisgICAgYXNzZXJ0KHUxIDwgdik7CisKKyAgICBzID0gbmx6KHYpOworICAgIHYgPSB2IDw8IHM7CisgICAgdm4xID0gdiA+PiAzMjsKKyAgICB2bjAgPSB2ICYgMHhGRkZGRkZGRjsKKworICAgIHQgPSAocyA9PSAwKSA/IDAgOiB1MCA+PiAoNjQgLSBzKTsKKyAgICB1bjMyID0gKHUxIDw8IHMpIHwgdDsKKyAgICB1bjEwID0gdTAgPDwgczsKKworICAgIHVuMSA9IHVuMTAgPj4gMzI7CisgICAgdW4wID0gdW4xMCAmIDB4RkZGRkZGRkY7CisKKyAgICBxMSA9IHVuMzIgLyB2bjE7CisgICAgcmhhdCA9IHVuMzIgLSBxMSp2bjE7CithZ2FpbjE6CisgICAgaWYgKHExID49IGIgfHwgcTEqdm4wID4gYipyaGF0ICsgdW4xKSB7CisgICAgICAgIHExID0gcTEgLSAxOworICAgICAgICByaGF0ID0gcmhhdCArIHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPCBiKSBnb3RvIGFnYWluMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqICBCZWZvcmUgYWdhaW4xIHdlIGhhZDoKKyAgICAgKiAgICAgICgxKSBxMSp2bjEgICArIHJoYXQgICAgICAgICA9IHVuMzIKKyAgICAgKiAgICAgICgyKSBxMSp2bjEqYiArIHJoYXQqYiArIHVuMSA9IHVuMzIqYiArIHVuMQorICAgICAqCisgICAgICogIFRoZSBzdGF0ZW1lbnRzIGluc2lkZSB0aGUgaWYtY2xhdXNlIGRvIG5vdCBjaGFuZ2UgdGhlIHZhbHVlCisgICAgICogIG9mIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiAoMiksIGFuZCB0aGUgbG9vcCBpcyBvbmx5IGV4aXRlZAorICAgICAqICBpZiBxMSp2bjAgPD0gcmhhdCpiICsgdW4xLCBzbzoKKyAgICAgKgorICAgICAqICAgICAgKDMpIHExKnZuMSpiICsgcTEqdm4wIDw9IHVuMzIqYiArIHVuMQorICAgICAqICAgICAgKDQpICAgICAgICAgICAgICBxMSp2IDw9IHVuMzIqYiArIHVuMQorICAgICAqICAgICAgKDUpICAgICAgICAgICAgICAgICAwIDw9IHVuMzIqYiArIHVuMSAtIHExKnYKKyAgICAgKgorICAgICAqICBCeSAoNSkgd2UgYXJlIGNlcnRhaW4gdGhhdCB0aGUgcG9zc2libGUgYWRkLWJhY2sgc3RlcCBmcm9tCisgICAgICogIEtudXRoJ3MgYWxnb3JpdGhtIEQgaXMgbmV2ZXIgcmVxdWlyZWQuCisgICAgICoKKyAgICAgKiAgU2luY2UgdGhlIGZpbmFsIHF1b3RpZW50IGlzIGxlc3MgdGhhbiAyKio2NCwgdGhlIGZvbGxvd2luZworICAgICAqICBtdXN0IGJlIHRydWU6CisgICAgICoKKyAgICAgKiAgICAgICg2KSB1bjMyKmIgKyB1bjEgLSBxMSp2IDw9IFVJTlQ2NF9NQVgKKyAgICAgKgorICAgICAqICBUaGlzIG1lYW5zIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBsaW5lLCB0aGUgaGlnaCB3b3JkcworICAgICAqICBvZiB1bjMyKmIgYW5kIHExKnYgY2FuIGJlIGRpc2NhcmRlZCB3aXRob3V0IGFueSBlZmZlY3QKKyAgICAgKiAgb24gdGhlIHJlc3VsdC4KKyAgICAgKi8KKyAgICB1bjIxID0gdW4zMipiICsgdW4xIC0gcTEqdjsKKworICAgIHEwID0gdW4yMSAvIHZuMTsKKyAgICByaGF0ID0gdW4yMSAtIHEwKnZuMTsKK2FnYWluMjoKKyAgICBpZiAocTAgPj0gYiB8fCBxMCp2bjAgPiBiKnJoYXQgKyB1bjApIHsKKyAgICAgICAgcTAgPSBxMCAtIDE7CisgICAgICAgIHJoYXQgPSByaGF0ICsgdm4xOworICAgICAgICBpZiAocmhhdCA8IGIpIGdvdG8gYWdhaW4yOworICAgIH0KKworICAgICpxID0gcTEqYiArIHEwOworICAgICpyID0gKHVuMjEqYiArIHVuMCAtIHEwKnYpID4+IHM7Cit9CisjZW5kaWYKKworLyogRU5EIEFOU0kgKi8KKyNlbGlmIGRlZmluZWQoQVNNKQorc3RhdGljIGlubGluZSB2b2lkCitfbXBkX211bF93b3JkcyhtcGRfdWludF90ICpoaSwgbXBkX3VpbnRfdCAqbG8sIG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiKQoreworICAgIG1wZF91aW50X3QgaCwgbDsKKworICAgIGFzbSAoICJtdWxxICUzXG5cdCIKKyAgICAgICAgICA6ICI9ZCIgKGgpLCAiPWEiIChsKQorICAgICAgICAgIDogIiVhIiAoYSksICJybSIgKGIpCisgICAgICAgICAgOiAiY2MiCisgICAgKTsKKworICAgICpoaSA9IGg7CisgICAgKmxvID0gbDsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3JkcyhtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvLAorICAgICAgICAgICAgICAgbXBkX3VpbnRfdCBkKQoreworICAgIG1wZF91aW50X3QgcXEsIHJyOworCisgICAgYXNtICggImRpdnEgJTRcblx0IgorICAgICAgICAgIDogIj1hIiAocXEpLCAiPWQiIChycikKKyAgICAgICAgICA6ICJhIiAobG8pLCAiZCIgKGhpKSwgInJtIiAoZCkKKyAgICAgICAgICA6ICJjYyIKKyAgICApOworCisgICAgKnEgPSBxcTsKKyAgICAqciA9IHJyOworfQorLyogRU5EIEdDQyBBU00gKi8KKyNlbGlmIGRlZmluZWQoTUFTTSkKKyNpbmNsdWRlIDxpbnRyaW4uaD4KKyNwcmFnbWEgaW50cmluc2ljKF91bXVsMTI4KQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgKmxvID0gX3VtdWwxMjgoYSwgYiwgaGkpOworfQorCit2b2lkIF9tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCk7CisKKy8qIEVORCBNQVNNIChfTVNDX1ZFUikgKi8KKyNlbHNlCisgICNlcnJvciAibmVlZCBwbGF0Zm9ybSBzcGVjaWZpYyAxMjggYml0IG11bHRpcGxpY2F0aW9uIGFuZCBkaXZpc2lvbiIKKyNlbmRpZgorCisjZGVmaW5lIERJVk1PRChxLCByLCB2LCBkKSAqcSA9IHYgLyBkOyAqciA9IHYgLSAqcSAqIGQKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZtb2RfcG93MTAobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGV4cCkKK3sKKyAgICBhc3NlcnQoZXhwIDw9IDE5KTsKKworICAgIGlmIChleHAgPD0gOSkgeworICAgICAgICBpZiAoZXhwIDw9IDQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDA6ICpxID0gdjsgKnIgPSAwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTogRElWTU9EKHEsIHIsIHYsIDEwVUwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjogRElWTU9EKHEsIHIsIHYsIDEwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6IERJVk1PRChxLCByLCB2LCAxMDAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDogRElWTU9EKHEsIHIsIHYsIDEwMDAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDU6IERJVk1PRChxLCByLCB2LCAxMDAwMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA2OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA5OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChleHAgPD0gMTQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDEwOiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDE1OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNjogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE3OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE4OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOTogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworLyogRU5EIENPTkZJR182NCAqLworI2VsaWYgZGVmaW5lZChDT05GSUdfMzIpCisjaWYgZGVmaW5lZChBTlNJKQorI2lmICFkZWZpbmVkKExFR0FDWV9DT01QSUxFUikKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICBtcGRfdXVpbnRfdCBobDsKKworICAgIGhsID0gKG1wZF91dWludF90KWEgKiBiOworCisgICAgKmhpID0gaGwgPj4gMzI7CisgICAgKmxvID0gKG1wZF91aW50X3QpaGw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCkKK3sKKyAgICBtcGRfdXVpbnRfdCBobDsKKworICAgIGhsID0gKChtcGRfdXVpbnRfdCloaTw8MzIpICsgbG87CisgICAgKnEgPSAobXBkX3VpbnRfdCkoaGwgLyBkKTsgLyogcXVvdGllbnQgaXMga25vd24gdG8gZml0ICovCisgICAgKnIgPSAobXBkX3VpbnRfdCkoaGwgLSAobXBkX3V1aW50X3QpKCpxKSAqIGQpOworfQorLyogRU5EIEFOU0kgKyB1aW50NjRfdCAqLworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICB1aW50MTZfdCB3WzRdLCBjYXJyeTsKKyAgICB1aW50MTZfdCBhaCwgYWwsIGJoLCBibDsKKyAgICB1aW50MzJfdCBobDsKKworICAgIGFoID0gKHVpbnQxNl90KShhPj4xNik7IGFsID0gKHVpbnQxNl90KWE7CisgICAgYmggPSAodWludDE2X3QpKGI+PjE2KTsgYmwgPSAodWludDE2X3QpYjsKKworICAgIGhsID0gKHVpbnQzMl90KWFsICogYmw7CisgICAgd1swXSA9ICh1aW50MTZfdClobDsKKyAgICBjYXJyeSA9ICh1aW50MTZfdCkoaGw+PjE2KTsKKworICAgIGhsID0gKHVpbnQzMl90KWFoICogYmwgKyBjYXJyeTsKKyAgICB3WzFdID0gKHVpbnQxNl90KWhsOworICAgIHdbMl0gPSAodWludDE2X3QpKGhsPj4xNik7CisKKyAgICBobCA9ICh1aW50MzJfdClhbCAqIGJoICsgd1sxXTsKKyAgICB3WzFdID0gKHVpbnQxNl90KWhsOworICAgIGNhcnJ5ID0gKHVpbnQxNl90KShobD4+MTYpOworCisgICAgaGwgPSAoKHVpbnQzMl90KWFoICogYmggKyB3WzJdKSArIGNhcnJ5OworICAgIHdbMl0gPSAodWludDE2X3QpaGw7CisgICAgd1szXSA9ICh1aW50MTZfdCkoaGw+PjE2KTsKKworICAgICpoaSA9ICgodWludDMyX3Qpd1szXTw8MTYpICsgd1syXTsKKyAgICAqbG8gPSAoKHVpbnQzMl90KXdbMV08PDE2KSArIHdbMF07Cit9CisKKy8qCisgKiBCeSBIZW5yeSBTLiBXYXJyZW46IGh0dHA6Ly93d3cuaGFja2Vyc2RlbGlnaHQub3JnL0hEY29kZS9kaXZsdS5jLnR4dAorICogaHR0cDovL3d3dy5oYWNrZXJzZGVsaWdodC5vcmcvcGVybWlzc2lvbnMuaHRtOgorICogIllvdSBhcmUgZnJlZSB0byB1c2UsIGNvcHksIGFuZCBkaXN0cmlidXRlIGFueSBvZiB0aGUgY29kZSBvbiB0aGlzIHdlYgorICogIHNpdGUsIHdoZXRoZXIgbW9kaWZpZWQgYnkgeW91IG9yIG5vdC4gWW91IG5lZWQgbm90IGdpdmUgYXR0cmlidXRpb24uIgorICoKKyAqIFNsaWdodGx5IG1vZGlmaWVkLCBjb21tZW50cyBhcmUgbWluZS4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK25seih1aW50MzJfdCB4KQoreworICAgIGludCBuOworCisgICAgaWYgKHggPT0gMCkgcmV0dXJuKDMyKTsKKworICAgIG4gPSAwOworICAgIGlmICh4IDw9IDB4MDAwMEZGRkYpIHtuID0gbiArMTY7IHggPSB4IDw8MTY7fQorICAgIGlmICh4IDw9IDB4MDBGRkZGRkYpIHtuID0gbiArIDg7IHggPSB4IDw8IDg7fQorICAgIGlmICh4IDw9IDB4MEZGRkZGRkYpIHtuID0gbiArIDQ7IHggPSB4IDw8IDQ7fQorICAgIGlmICh4IDw9IDB4M0ZGRkZGRkYpIHtuID0gbiArIDI7IHggPSB4IDw8IDI7fQorICAgIGlmICh4IDw9IDB4N0ZGRkZGRkYpIHtuID0gbiArIDE7fQorCisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB1MSwgbXBkX3VpbnRfdCB1MCwKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgdikKK3sKKyAgICBjb25zdCBtcGRfdWludF90IGIgPSA2NTUzNjsKKyAgICBtcGRfdWludF90IHVuMSwgdW4wLAorICAgICAgICAgICAgICAgdm4xLCB2bjAsCisgICAgICAgICAgICAgICBxMSwgcTAsCisgICAgICAgICAgICAgICB1bjMyLCB1bjIxLCB1bjEwLAorICAgICAgICAgICAgICAgcmhhdCwgdDsKKyAgICBpbnQgczsKKworICAgIGFzc2VydCh1MSA8IHYpOworCisgICAgcyA9IG5seih2KTsKKyAgICB2ID0gdiA8PCBzOworICAgIHZuMSA9IHYgPj4gMTY7CisgICAgdm4wID0gdiAmIDB4RkZGRjsKKworICAgIHQgPSAocyA9PSAwKSA/IDAgOiB1MCA+PiAoMzIgLSBzKTsKKyAgICB1bjMyID0gKHUxIDw8IHMpIHwgdDsKKyAgICB1bjEwID0gdTAgPDwgczsKKworICAgIHVuMSA9IHVuMTAgPj4gMTY7CisgICAgdW4wID0gdW4xMCAmIDB4RkZGRjsKKworICAgIHExID0gdW4zMiAvIHZuMTsKKyAgICByaGF0ID0gdW4zMiAtIHExKnZuMTsKK2FnYWluMToKKyAgICBpZiAocTEgPj0gYiB8fCBxMSp2bjAgPiBiKnJoYXQgKyB1bjEpIHsKKyAgICAgICAgcTEgPSBxMSAtIDE7CisgICAgICAgIHJoYXQgPSByaGF0ICsgdm4xOworICAgICAgICBpZiAocmhhdCA8IGIpIGdvdG8gYWdhaW4xOworICAgIH0KKworICAgIC8qCisgICAgICogIEJlZm9yZSBhZ2FpbjEgd2UgaGFkOgorICAgICAqICAgICAgKDEpIHExKnZuMSAgICsgcmhhdCAgICAgICAgID0gdW4zMgorICAgICAqICAgICAgKDIpIHExKnZuMSpiICsgcmhhdCpiICsgdW4xID0gdW4zMipiICsgdW4xCisgICAgICoKKyAgICAgKiAgVGhlIHN0YXRlbWVudHMgaW5zaWRlIHRoZSBpZi1jbGF1c2UgZG8gbm90IGNoYW5nZSB0aGUgdmFsdWUKKyAgICAgKiAgb2YgdGhlIGxlZnQtaGFuZCBzaWRlIG9mICgyKSwgYW5kIHRoZSBsb29wIGlzIG9ubHkgZXhpdGVkCisgICAgICogIGlmIHExKnZuMCA8PSByaGF0KmIgKyB1bjEsIHNvOgorICAgICAqCisgICAgICogICAgICAoMykgcTEqdm4xKmIgKyBxMSp2bjAgPD0gdW4zMipiICsgdW4xCisgICAgICogICAgICAoNCkgICAgICAgICAgICAgIHExKnYgPD0gdW4zMipiICsgdW4xCisgICAgICogICAgICAoNSkgICAgICAgICAgICAgICAgIDAgPD0gdW4zMipiICsgdW4xIC0gcTEqdgorICAgICAqCisgICAgICogIEJ5ICg1KSB3ZSBhcmUgY2VydGFpbiB0aGF0IHRoZSBwb3NzaWJsZSBhZGQtYmFjayBzdGVwIGZyb20KKyAgICAgKiAgS251dGgncyBhbGdvcml0aG0gRCBpcyBuZXZlciByZXF1aXJlZC4KKyAgICAgKgorICAgICAqICBTaW5jZSB0aGUgZmluYWwgcXVvdGllbnQgaXMgbGVzcyB0aGFuIDIqKjMyLCB0aGUgZm9sbG93aW5nCisgICAgICogIG11c3QgYmUgdHJ1ZToKKyAgICAgKgorICAgICAqICAgICAgKDYpIHVuMzIqYiArIHVuMSAtIHExKnYgPD0gVUlOVDMyX01BWAorICAgICAqCisgICAgICogIFRoaXMgbWVhbnMgdGhhdCBpbiB0aGUgZm9sbG93aW5nIGxpbmUsIHRoZSBoaWdoIHdvcmRzCisgICAgICogIG9mIHVuMzIqYiBhbmQgcTEqdiBjYW4gYmUgZGlzY2FyZGVkIHdpdGhvdXQgYW55IGVmZmVjdAorICAgICAqICBvbiB0aGUgcmVzdWx0LgorICAgICAqLworICAgIHVuMjEgPSB1bjMyKmIgKyB1bjEgLSBxMSp2OworCisgICAgcTAgPSB1bjIxIC8gdm4xOworICAgIHJoYXQgPSB1bjIxIC0gcTAqdm4xOworYWdhaW4yOgorICAgIGlmIChxMCA+PSBiIHx8IHEwKnZuMCA+IGIqcmhhdCArIHVuMCkgeworICAgICAgICBxMCA9IHEwIC0gMTsKKyAgICAgICAgcmhhdCA9IHJoYXQgKyB2bjE7CisgICAgICAgIGlmIChyaGF0IDwgYikgZ290byBhZ2FpbjI7CisgICAgfQorCisgICAgKnEgPSBxMSpiICsgcTA7CisgICAgKnIgPSAodW4yMSpiICsgdW4wIC0gcTAqdikgPj4gczsKK30KKyNlbmRpZiAvKiBFTkQgQU5TSSArIExFR0FDWV9DT01QSUxFUiAqLworCisvKiBFTkQgQU5TSSAqLworI2VsaWYgZGVmaW5lZChBU00pCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3VpbnRfdCBoLCBsOworCisgICAgYXNtICggIm11bGwgJTNcblx0IgorICAgICAgICAgIDogIj1kIiAoaCksICI9YSIgKGwpCisgICAgICAgICAgOiAiJWEiIChhKSwgInJtIiAoYikKKyAgICAgICAgICA6ICJjYyIKKyAgICApOworCisgICAgKmhpID0gaDsKKyAgICAqbG8gPSBsOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICBtcGRfdWludF90IGQpCit7CisgICAgbXBkX3VpbnRfdCBxcSwgcnI7CisKKyAgICBhc20gKCAiZGl2bCAlNFxuXHQiCisgICAgICAgICAgOiAiPWEiIChxcSksICI9ZCIgKHJyKQorICAgICAgICAgIDogImEiIChsbyksICJkIiAoaGkpLCAicm0iIChkKQorICAgICAgICAgIDogImNjIgorICAgICk7CisKKyAgICAqcSA9IHFxOworICAgICpyID0gcnI7Cit9CisvKiBFTkQgR0NDIEFTTSAqLworI2VsaWYgZGVmaW5lZChNQVNNKQorc3RhdGljIGlubGluZSB2b2lkIF9fY2RlY2wKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3VpbnRfdCBoLCBsOworCisgICAgX19hc20geworICAgICAgICBtb3YgZWF4LCBhCisgICAgICAgIG11bCBiCisgICAgICAgIG1vdiBoLCBlZHgKKyAgICAgICAgbW92IGwsIGVheAorICAgIH0KKworICAgICpoaSA9IGg7CisgICAgKmxvID0gbDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9fY2RlY2wKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICBtcGRfdWludF90IGQpCit7CisgICAgbXBkX3VpbnRfdCBxcSwgcnI7CisKKyAgICBfX2FzbSB7CisgICAgICAgIG1vdiBlYXgsIGxvCisgICAgICAgIG1vdiBlZHgsIGhpCisgICAgICAgIGRpdiBkCisgICAgICAgIG1vdiBxcSwgZWF4CisgICAgICAgIG1vdiByciwgZWR4CisgICAgfQorCisgICAgKnEgPSBxcTsKKyAgICAqciA9IHJyOworfQorLyogRU5EIE1BU00gKF9NU0NfVkVSKSAqLworI2Vsc2UKKyAgI2Vycm9yICJuZWVkIHBsYXRmb3JtIHNwZWNpZmljIDY0IGJpdCBtdWx0aXBsaWNhdGlvbiBhbmQgZGl2aXNpb24iCisjZW5kaWYKKworI2RlZmluZSBESVZNT0QocSwgciwgdiwgZCkgKnEgPSB2IC8gZDsgKnIgPSB2IC0gKnEgKiBkCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2bW9kX3BvdzEwKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBleHApCit7CisgICAgYXNzZXJ0KGV4cCA8PSA5KTsKKworICAgIGlmIChleHAgPD0gNCkgeworICAgICAgICBzd2l0Y2ggKGV4cCkgeworICAgICAgICBjYXNlIDA6ICpxID0gdjsgKnIgPSAwOyBicmVhazsKKyAgICAgICAgY2FzZSAxOiBESVZNT0QocSwgciwgdiwgMTBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDI6IERJVk1PRChxLCByLCB2LCAxMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDM6IERJVk1PRChxLCByLCB2LCAxMDAwVUwpOyBicmVhazsKKyAgICAgICAgY2FzZSA0OiBESVZNT0QocSwgciwgdiwgMTAwMDBVTCk7IGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzd2l0Y2ggKGV4cCkgeworICAgICAgICBjYXNlIDU6IERJVk1PRChxLCByLCB2LCAxMDAwMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDY6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwVUwpOyBicmVhazsKKyAgICAgICAgY2FzZSA3OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDg6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDk6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwVUwpOyBicmVhazsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgfQorfQorLyogRU5EIENPTkZJR18zMiAqLworCisvKiBOTyBDT05GSUcgKi8KKyNlbHNlCisgICNlcnJvciAiZGVmaW5lIENPTkZJR182NCBvciBDT05GSUdfMzIiCisjZW5kaWYgLyogQ09ORklHICovCisKKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3JkKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBkKQoreworICAgICpxID0gdiAvIGQ7CisgICAgKnIgPSB2IC0gKnEgKiBkOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfaWRpdl93b3JkKG1wZF9zc2l6ZV90ICpxLCBtcGRfc3NpemVfdCAqciwgbXBkX3NzaXplX3QgdiwgbXBkX3NzaXplX3QgZCkKK3sKKyAgICAqcSA9IHYgLyBkOworICAgICpyID0gdiAtICpxICogZDsKK30KKworCisvKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiogICAgICAgICAgICAgIEFyaXRobWV0aWMgd2l0aCBvdmVyZmxvdyBjaGVja2luZworICoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGRvIGNhbGwgZXhpdCgpIGluIGNhc2Ugb2YgYW4gb3ZlcmZsb3cuCisgICBJZiB0aGUgbGlicmFyeSBpcyB1c2VkIGNvcnJlY3RseSAoaS5lLiB3aXRoIHZhbGlkIGNvbnRleHQKKyAgIHBhcmFtZXRlcnMpLCBzdWNoIG92ZXJmbG93cyBjYW5ub3Qgb2NjdXIuIFRoZSBtYWNyb3MgYXJlIHVzZWQKKyAgIGFzIHNhbml0eSBjaGVja3MgaW4gYSBjb3VwbGUgb2Ygc3RyYXRlZ2ljIHBsYWNlcyBhbmQgc2hvdWxkCisgICBiZSB2aWV3ZWQgYXMgYSBoYW5kd3JpdHRlbiB2ZXJzaW9uIG9mIGdjYydzIC1mdHJhcHYgb3B0aW9uLiAqLworCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK2FkZF9zaXplX3QobXBkX3NpemVfdCBhLCBtcGRfc2l6ZV90IGIpCit7CisgICAgaWYgKGEgPiBNUERfU0laRV9NQVggLSBiKSB7CisgICAgICAgIG1wZF9lcnJfZmF0YWwoImFkZF9zaXplX3QoKTogb3ZlcmZsb3c6IGNoZWNrIHRoZSBjb250ZXh0Iik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgcmV0dXJuIGEgKyBiOworfQorCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK3N1Yl9zaXplX3QobXBkX3NpemVfdCBhLCBtcGRfc2l6ZV90IGIpCit7CisgICAgaWYgKGIgPiBhKSB7CisgICAgICAgIG1wZF9lcnJfZmF0YWwoInN1Yl9zaXplX3QoKTogb3ZlcmZsb3c6IGNoZWNrIHRoZSBjb250ZXh0Iik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgcmV0dXJuIGEgLSBiOworfQorCisjaWYgTVBEX1NJWkVfTUFYICE9IE1QRF9VSU5UX01BWAorICAjZXJyb3IgImFkYXB0IG11bF9zaXplX3QoKSBhbmQgbXVsbW9kX3NpemVfdCgpIgorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorbXVsX3NpemVfdChtcGRfc2l6ZV90IGEsIG1wZF9zaXplX3QgYikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCAobXBkX3VpbnRfdClhLCAobXBkX3VpbnRfdCliKTsKKyAgICBpZiAoaGkpIHsKKyAgICAgICAgbXBkX2Vycl9mYXRhbCgibXVsX3NpemVfdCgpOiBvdmVyZmxvdzogY2hlY2sgdGhlIGNvbnRleHQiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICByZXR1cm4gbG87Cit9CisKK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorYWRkX3NpemVfdF9vdmVyZmxvdyhtcGRfc2l6ZV90IGEsIG1wZF9zaXplX3QgYiwgbXBkX3NpemVfdCAqb3ZlcmZsb3cpCit7CisgICAgbXBkX3NpemVfdCByZXQ7CisKKyAgICAqb3ZlcmZsb3cgPSAwOworICAgIHJldCA9IGEgKyBiOworICAgIGlmIChyZXQgPCBhKSAqb3ZlcmZsb3cgPSAxOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorbXVsX3NpemVfdF9vdmVyZmxvdyhtcGRfc2l6ZV90IGEsIG1wZF9zaXplX3QgYiwgbXBkX3NpemVfdCAqb3ZlcmZsb3cpCit7CisgICAgbXBkX3VpbnRfdCBsbzsKKworICAgIF9tcGRfbXVsX3dvcmRzKChtcGRfdWludF90ICopb3ZlcmZsb3csICZsbywgKG1wZF91aW50X3QpYSwKKyAgICAgICAgICAgICAgICAgICAobXBkX3VpbnRfdCliKTsKKyAgICByZXR1cm4gbG87Cit9CisKK3N0YXRpYyBpbmxpbmUgbXBkX3NzaXplX3QKK21vZF9tcGRfc3NpemVfdChtcGRfc3NpemVfdCBhLCBtcGRfc3NpemVfdCBtKQoreworICAgIG1wZF9zc2l6ZV90IHIgPSBhICUgbTsKKyAgICByZXR1cm4gKHIgPCAwKSA/IHIgKyBtIDogcjsKK30KKworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CittdWxtb2Rfc2l6ZV90KG1wZF9zaXplX3QgYSwgbXBkX3NpemVfdCBiLCBtcGRfc2l6ZV90IG0pCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisgICAgbXBkX3VpbnRfdCBxLCByOworCisgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIChtcGRfdWludF90KWEsIChtcGRfdWludF90KWIpOworICAgIF9tcGRfZGl2X3dvcmRzKCZxLCAmciwgaGksIGxvLCAobXBkX3VpbnRfdCltKTsKKworICAgIHJldHVybiByOworfQorCisKKyNlbmRpZiAvKiBUWVBFQVJJVEhfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy91bW9kYXJpdGguaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdW1vZGFyaXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZjZGUwYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdW1vZGFyaXRoLmgKQEAgLTAsMCArMSw2NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgVU1PREFSSVRIX0gKKyNkZWZpbmUgVU1PREFSSVRIX0gKKworCisjaW5jbHVkZSAiY29uc3RhbnRzLmgiCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSAidHlwZWFyaXRoLmgiCisKKworLyogQmlnbnVtOiBMb3cgbGV2ZWwgcm91dGluZXMgZm9yIHVuc2lnbmVkIG1vZHVsYXIgYXJpdGhtZXRpYy4gVGhlc2UgYXJlCisgICB1c2VkIGluIHRoZSBmYXN0IGNvbnZvbHV0aW9uIGZ1bmN0aW9ucyBmb3IgdmVyeSBsYXJnZSBjb2VmZmljaWVudHMuICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICBBTlNJIG1vZHVsYXIgYXJpdGhtZXRpYyAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qCisgKiBSZXN0cmljdGlvbnM6IGEgPCBtIGFuZCBiIDwgbQorICogQUNMMiBwcm9vZjogdW1vZGFyaXRoLmxpc3A6IGFkZG1vZC1jb3JyZWN0CisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorYWRkbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCBzOworCisgICAgcyA9IGEgKyBiOworICAgIHMgPSAocyA8IGEpID8gcyAtIG0gOiBzOworICAgIHMgPSAocyA+PSBtKSA/IHMgLSBtIDogczsKKworICAgIHJldHVybiBzOworfQorCisvKgorICogUmVzdHJpY3Rpb25zOiBhIDwgbSBhbmQgYiA8IG0KKyAqIEFDTDIgcHJvb2Y6IHVtb2Rhcml0aC5saXNwOiBzdWJtb2QtMi1jb3JyZWN0CisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorc3VibW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCBkOworCisgICAgZCA9IGEgLSBiOworICAgIGQgPSAoYSA8IGIpID8gZCArIG0gOiBkOworCisgICAgcmV0dXJuIGQ7Cit9CisKKy8qCisgKiBSZXN0cmljdGlvbnM6IGEgPCAybSBhbmQgYiA8IDJtCisgKiBBQ0wyIHByb29mOiB1bW9kYXJpdGgubGlzcDogc2VjdGlvbiBleHQtc3VibW9kCisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorZXh0X3N1Ym1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgZDsKKworICAgIGEgPSAoYSA+PSBtKSA/IGEgLSBtIDogYTsKKyAgICBiID0gKGIgPj0gbSkgPyBiIC0gbSA6IGI7CisKKyAgICBkID0gYSAtIGI7CisgICAgZCA9IChhIDwgYikgPyBkICsgbSA6IGQ7CisKKyAgICByZXR1cm4gZDsKK30KKworLyogCisgKiBSZWR1Y2UgZG91YmxlIHdvcmQgbW9kdWxvIG0uCisgKiBSZXN0cmljdGlvbnM6IG0gIT0gMAorICogQUNMMiBwcm9vZjogdW1vZGFyaXRoLmxpc3A6IHNlY3Rpb24gZHctcmVkdWNlCisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorZHdfcmVkdWNlKG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sIG1wZF91aW50X3QgbSkKK3sKKyAgICBtcGRfdWludF90IHIxLCByMiwgdzsKKworICAgIF9tcGRfZGl2X3dvcmQoJncsICZyMSwgaGksIG0pOworICAgIF9tcGRfZGl2X3dvcmRzKCZ3LCAmcjIsIHIxLCBsbywgbSk7CisKKyAgICByZXR1cm4gcjI7Cit9CisKKy8qCisgKiBTdWJ0cmFjdCBkb3VibGUgd29yZCBmcm9tIGEuCisgKiBSZXN0cmljdGlvbnM6IGEgPCBtCisgKiBBQ0wyIHByb29mOiB1bW9kYXJpdGgubGlzcDogc2VjdGlvbiBkdy1zdWJtb2QKKyAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90Citkd19zdWJtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCBkLCByOworCisgICAgciA9IGR3X3JlZHVjZShoaSwgbG8sIG0pOworICAgIGQgPSBhIC0gcjsKKyAgICBkID0gKGEgPCByKSA/IGQgKyBtIDogZDsKKworICAgIHJldHVybiBkOworfQorCisjaWZkZWYgQ09ORklHXzY0CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgNjQtYml0IG1vZHVsYXIgYXJpdGhtZXRpYyAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEEgcHJvb2Ygb2YgdGhlIGFsZ29yaXRobSBpcyBpbiBsaXRlcmF0dXJlL211bG1vZC02NC50eHQuIEFuIEFDTDIKKyAqIHByb29mIGlzIGluIHVtb2Rhcml0aC5saXNwOiBzZWN0aW9uICJGYXN0IG1vZHVsYXIgcmVkdWN0aW9uIi4KKyAqCisgKiBBbGdvcml0aG06IGNhbGN1bGF0ZSAoYSAqIGIpICUgcDoKKyAqCisgKiAgIGEpIGhpLCBsbyA8LSBhICogYiAgICAgICAjIENhbGN1bGF0ZSBhICogYi4KKyAqCisgKiAgIGIpIGhpLCBsbyA8LSAgUihoaSwgbG8pICAjIFJlZHVjZSBtb2R1bG8gcC4KKyAqCisgKiAgIGMpIFJlcGVhdCBzdGVwIGIpIHVudGlsIDAgPD0gaGkgKiAyKio2NCArIGxvIDwgMipwLgorICoKKyAqICAgZCkgSWYgdGhlIHJlc3VsdCBpcyBsZXNzIHRoYW4gcCwgcmV0dXJuIGxvLiBPdGhlcndpc2UgcmV0dXJuIGxvIC0gcC4KKyAqLworCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3g2NF9tdWxtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIsIG1wZF91aW50X3QgbSkKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbywgeCwgeTsKKworCisgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIGEsIGIpOworCisgICAgaWYgKG0gJiAoMVVMTDw8MzIpKSB7IC8qIFAxICovCisKKyAgICAgICAgLyogZmlyc3QgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAzMjsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDMyOworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIC8qIHNlY29uZCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDMyOworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gMzI7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgcmV0dXJuIChoaSB8fCBsbyA+PSBtID8gbG8gLSBtIDogbG8pOworICAgIH0KKyAgICBlbHNlIGlmIChtICYgKDFVTEw8PDM0KSkgeyAvKiBQMiAqLworCisgICAgICAgIC8qIGZpcnN0IHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMzA7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSAzNDsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICAvKiBzZWNvbmQgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAzMDsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDM0OworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIC8qIHRoaXJkIHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMzA7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSAzNDsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICByZXR1cm4gKGhpIHx8IGxvID49IG0gPyBsbyAtIG0gOiBsbyk7CisgICAgfQorICAgIGVsc2UgeyAvKiBQMyAqLworCisgICAgICAgIC8qIGZpcnN0IHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMjQ7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSA0MDsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICAvKiBzZWNvbmQgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAyNDsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDQwOworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIC8qIHRoaXJkIHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMjQ7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSA0MDsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICByZXR1cm4gKGhpIHx8IGxvID49IG0gPyBsbyAtIG0gOiBsbyk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3g2NF9tdWxtb2QyYyhtcGRfdWludF90ICphLCBtcGRfdWludF90ICpiLCBtcGRfdWludF90IHcsIG1wZF91aW50X3QgbSkKK3sKKyAgICAqYSA9IHg2NF9tdWxtb2QoKmEsIHcsIG0pOworICAgICpiID0geDY0X211bG1vZCgqYiwgdywgbSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAoreDY0X211bG1vZDIobXBkX3VpbnRfdCAqYTAsIG1wZF91aW50X3QgYjAsIG1wZF91aW50X3QgKmExLCBtcGRfdWludF90IGIxLAorICAgICAgICAgICAgbXBkX3VpbnRfdCBtKQoreworICAgICphMCA9IHg2NF9tdWxtb2QoKmEwLCBiMCwgbSk7CisgICAgKmExID0geDY0X211bG1vZCgqYTEsIGIxLCBtKTsKK30KKworc3RhdGljIGlubGluZSBtcGRfdWludF90Cit4NjRfcG93bW9kKG1wZF91aW50X3QgYmFzZSwgbXBkX3VpbnRfdCBleHAsIG1wZF91aW50X3QgdW1vZCkKK3sKKyAgICBtcGRfdWludF90IHIgPSAxOworCisgICAgd2hpbGUgKGV4cCA+IDApIHsKKyAgICAgICAgaWYgKGV4cCAmIDEpCisgICAgICAgICAgICByID0geDY0X211bG1vZChyLCBiYXNlLCB1bW9kKTsKKyAgICAgICAgYmFzZSA9IHg2NF9tdWxtb2QoYmFzZSwgYmFzZSwgdW1vZCk7CisgICAgICAgIGV4cCA+Pj0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gcjsKK30KKworLyogRU5EIENPTkZJR182NCAqLworI2Vsc2UgLyogQ09ORklHXzMyICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAzMi1iaXQgbW9kdWxhciBhcml0aG1ldGljICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWYgZGVmaW5lZChBTlNJKQorI2lmICFkZWZpbmVkKExFR0FDWV9DT01QSUxFUikKKy8qIEhBVkVfVUlOVDY0X1QgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorc3RkX211bG1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgbXBkX3VpbnRfdCBtKQoreworICAgIHJldHVybiAoKG1wZF91dWludF90KSBhICogYikgJSBtOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3N0ZF9tdWxtb2QyYyhtcGRfdWludF90ICphLCBtcGRfdWludF90ICpiLCBtcGRfdWludF90IHcsIG1wZF91aW50X3QgbSkKK3sKKyAgICAqYSA9ICgobXBkX3V1aW50X3QpICphICogdykgJSBtOworICAgICpiID0gKChtcGRfdXVpbnRfdCkgKmIgKiB3KSAlIG07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3RkX211bG1vZDIobXBkX3VpbnRfdCAqYTAsIG1wZF91aW50X3QgYjAsIG1wZF91aW50X3QgKmExLCBtcGRfdWludF90IGIxLAorICAgICAgICAgICAgbXBkX3VpbnRfdCBtKQoreworICAgICphMCA9ICgobXBkX3V1aW50X3QpICphMCAqIGIwKSAlIG07CisgICAgKmExID0gKChtcGRfdXVpbnRfdCkgKmExICogYjEpICUgbTsKK30KKy8qIEVORCBIQVZFX1VJTlQ2NF9UICovCisjZWxzZQorLyogTEVHQUNZX0NPTVBJTEVSICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3N0ZF9tdWxtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIsIG1wZF91aW50X3QgbSkKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbywgcSwgcjsKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgYSwgYik7CisgICAgX21wZF9kaXZfd29yZHMoJnEsICZyLCBoaSwgbG8sIG0pOworICAgIHJldHVybiByOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3N0ZF9tdWxtb2QyYyhtcGRfdWludF90ICphLCBtcGRfdWludF90ICpiLCBtcGRfdWludF90IHcsIG1wZF91aW50X3QgbSkKK3sKKyAgICAqYSA9IHN0ZF9tdWxtb2QoKmEsIHcsIG0pOworICAgICpiID0gc3RkX211bG1vZCgqYiwgdywgbSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3RkX211bG1vZDIobXBkX3VpbnRfdCAqYTAsIG1wZF91aW50X3QgYjAsIG1wZF91aW50X3QgKmExLCBtcGRfdWludF90IGIxLAorICAgICAgICAgICAgbXBkX3VpbnRfdCBtKQoreworICAgICphMCA9IHN0ZF9tdWxtb2QoKmEwLCBiMCwgbSk7CisgICAgKmExID0gc3RkX211bG1vZCgqYTEsIGIxLCBtKTsKK30KKy8qIEVORCBMRUdBQ1lfQ09NUElMRVIgKi8KKyNlbmRpZgorCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3N0ZF9wb3dtb2QobXBkX3VpbnRfdCBiYXNlLCBtcGRfdWludF90IGV4cCwgbXBkX3VpbnRfdCB1bW9kKQoreworICAgIG1wZF91aW50X3QgciA9IDE7CisKKyAgICB3aGlsZSAoZXhwID4gMCkgeworICAgICAgICBpZiAoZXhwICYgMSkKKyAgICAgICAgICAgIHIgPSBzdGRfbXVsbW9kKHIsIGJhc2UsIHVtb2QpOworICAgICAgICBiYXNlID0gc3RkX211bG1vZChiYXNlLCBiYXNlLCB1bW9kKTsKKyAgICAgICAgZXhwID4+PSAxOworICAgIH0KKworICAgIHJldHVybiByOworfQorI2VuZGlmIC8qIEFOU0kgQ09ORklHXzMyICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgIFBlbnRpdW0gUHJvIG1vZHVsYXIgYXJpdGhtZXRpYyAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQSBwcm9vZiBvZiB0aGUgYWxnb3JpdGhtIGlzIGluIGxpdGVyYXR1cmUvbXVsbW9kLXBwcm8udHh0LiBUaGUgRlBVCisgKiBjb250cm9sIHdvcmQgbXVzdCBiZSBzZXQgdG8gNjQtYml0IHByZWNpc2lvbiBhbmQgdHJ1bmNhdGlvbiBtb2RlCisgKiBwcmlvciB0byB1c2luZyB0aGVzZSBmdW5jdGlvbnMuCisgKgorICogQWxnb3JpdGhtOiBjYWxjdWxhdGUgKGEgKiBiKSAlIHA6CisgKgorICogICBwICAgIDo9IHByaW1lIDwgMioqMzEKKyAqICAgcGludiA6PSAobG9uZyBkb3VibGUpMS4wIC8gcCAocHJlY2FsY3VsYXRlZCkKKyAqCisgKiAgIGEpIG4gPSBhICogYiAgICAgICAgICAgICAgIyBDYWxjdWxhdGUgZXhhY3QgcHJvZHVjdC4KKyAqICAgYikgcWVzdCA9IG4gKiBwaW52ICAgICAgICAjIENhbGN1bGF0ZSBlc3RpbWF0ZSBmb3IgcSA9IG4gLyBwLgorICogICBjKSBxID0gKHFlc3QrMioqNjMpLTIqKjYzICMgVHJ1bmNhdGUgcWVzdCB0byB0aGUgZXhhY3QgcXVvdGllbnQuCisgKiAgIGQpIHIgPSBuIC0gcSAqIHAgICAgICAgICAgIyBDYWxjdWxhdGUgcmVtYWluZGVyLgorICoKKyAqIFJlbWFya3M6CisgKgorICogICAtIHAgPSBkbW9kIGFuZCBwaW52ID0gZGludm1vZC4KKyAqICAgLSBkaW52bW9kIHBvaW50cyB0byBhbiBhcnJheSBvZiB0aHJlZSB1aW50MzJfdCwgd2hpY2ggaXMgaW50ZXJwcmV0ZWQKKyAqICAgICBhcyBhbiA4MCBiaXQgbG9uZyBkb3VibGUgYnkgZmxkdC4KKyAqICAgLSBJbnRlbCBjb21waWxlcnMgcHJpb3IgdG8gdmVyc2lvbiAxMSBkbyBub3Qgc2VlbSB0byBoYW5kbGUgdGhlCisgKiAgICAgX19HTlVDX18gaW5saW5lIGFzc2VtYmx5IGNvcnJlY3RseS4KKyAqICAgLSByYW5kb20gdGVzdHMgYXJlIHByb3ZpZGVkIGluIHRlc3RzL2V4dGVuZGVkL3Bwcm9fbXVsbW9kLmMKKyAqLworCisjaWYgZGVmaW5lZChQUFJPKQorI2lmIGRlZmluZWQoQVNNKQorCisvKiBSZXR1cm4gKGEgKiBiKSAlIGRtb2QgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorcHByb19tdWxtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIsIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgKmRpbnZtb2QpCit7CisgICAgbXBkX3VpbnRfdCByZXR2YWw7CisKKyAgICBhc20gKAorICAgICAgICAiZmlsZGwgICUyXG5cdCIKKyAgICAgICAgImZpbGRsICAlMVxuXHQiCisgICAgICAgICJmbXVscCAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICJmbGR0ICAgKCU0KVxuXHQiCisgICAgICAgICJmbXVsICAgJSVzdCgxKSwgJSVzdFxuXHQiCisgICAgICAgICJmbGRzICAgJTVcblx0IgorICAgICAgICAiZmFkZCAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAiZnN1YnJwICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAiZmxkbCAgICglMylcblx0IgorICAgICAgICAiZm11bHAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAiZnN1YnJwICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAiZmlzdHBsICUwXG5cdCIKKyAgICAgICAgOiAiPW0iIChyZXR2YWwpCisgICAgICAgIDogIm0iIChhKSwgIm0iIChiKSwgInIiIChkbW9kKSwgInIiIChkaW52bW9kKSwgIm0iIChNUERfVFdPNjMpCisgICAgICAgIDogInN0IiwgIm1lbW9yeSIKKyAgICApOworCisgICAgcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFR3byBtb2R1bGFyIG11bHRpcGxpY2F0aW9ucyBpbiBwYXJhbGxlbDoKKyAqICAgICAgKmEwID0gKCphMCAqIHcpICUgZG1vZAorICogICAgICAqYTEgPSAoKmExICogdykgJSBkbW9kCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcHByb19tdWxtb2QyYyhtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgdywKKyAgICAgICAgICAgICAgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBhc20gKAorICAgICAgICAiZmlsZGwgICUyXG5cdCIKKyAgICAgICAgImZpbGRsICAoJTEpXG5cdCIKKyAgICAgICAgImZtdWwgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgImZ4Y2ggICAlJXN0KDEpXG5cdCIKKyAgICAgICAgImZpbGRsICAoJTApXG5cdCIKKyAgICAgICAgImZtdWxwICAlJXN0LCAlJXN0KDEpIFxuXHQiCisgICAgICAgICJmbGR0ICAgKCU0KVxuXHQiCisgICAgICAgICJmbGRzICAgJTVcblx0IgorICAgICAgICAiZmxkICAgICUlc3QoMilcblx0IgorICAgICAgICAiZm11bCAgICUlc3QoMilcblx0IgorICAgICAgICAiZmFkZCAgICUlc3QoMSlcblx0IgorICAgICAgICAiZnN1YiAgICUlc3QoMSlcblx0IgorICAgICAgICAiZm11bGwgICglMylcblx0IgorICAgICAgICAiZnN1YnJwICUlc3QsICUlc3QoMylcblx0IgorICAgICAgICAiZnhjaCAgICUlc3QoMilcblx0IgorICAgICAgICAiZmlzdHBsICglMClcblx0IgorICAgICAgICAiZm11bCAgICUlc3QoMilcblx0IgorICAgICAgICAiZmFkZCAgICUlc3QoMSlcblx0IgorICAgICAgICAiZnN1YnAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAiZm11bGwgICglMylcblx0IgorICAgICAgICAiZnN1YnJwICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAiZmlzdHBsICglMSlcblx0IgorICAgICAgICA6IDogInIiIChhMCksICJyIiAoYTEpLCAibSIgKHcpLAorICAgICAgICAgICAgInIiIChkbW9kKSwgInIiIChkaW52bW9kKSwKKyAgICAgICAgICAgICJtIiAoTVBEX1RXTzYzKQorICAgICAgICA6ICJzdCIsICJtZW1vcnkiCisgICAgKTsKK30KKworLyoKKyAqIFR3byBtb2R1bGFyIG11bHRpcGxpY2F0aW9ucyBpbiBwYXJhbGxlbDoKKyAqICAgICAgKmEwID0gKCphMCAqIGIwKSAlIGRtb2QKKyAqICAgICAgKmExID0gKCphMSAqIGIxKSAlIGRtb2QKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitwcHJvX211bG1vZDIobXBkX3VpbnRfdCAqYTAsIG1wZF91aW50X3QgYjAsIG1wZF91aW50X3QgKmExLCBtcGRfdWludF90IGIxLAorICAgICAgICAgICAgIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgKmRpbnZtb2QpCit7CisgICAgYXNtICgKKyAgICAgICAgImZpbGRsICAlM1xuXHQiCisgICAgICAgICJmaWxkbCAgKCUyKVxuXHQiCisgICAgICAgICJmbXVscCAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICJmaWxkbCAgJTFcblx0IgorICAgICAgICAiZmlsZGwgICglMClcblx0IgorICAgICAgICAiZm11bHAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAiZmxkdCAgICglNSlcblx0IgorICAgICAgICAiZmxkICAgICUlc3QoMilcblx0IgorICAgICAgICAiZm11bCAgICUlc3QoMSksICUlc3Rcblx0IgorICAgICAgICAiZnhjaCAgICUlc3QoMSlcblx0IgorICAgICAgICAiZm11bCAgICUlc3QoMiksICUlc3Rcblx0IgorICAgICAgICAiZmxkcyAgICU2XG5cdCIKKyAgICAgICAgImZsZGwgICAoJTQpXG5cdCIKKyAgICAgICAgImZ4Y2ggICAlJXN0KDMpXG5cdCIKKyAgICAgICAgImZhZGQgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgImZ4Y2ggICAlJXN0KDIpXG5cdCIKKyAgICAgICAgImZhZGQgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgImZ4Y2ggICAlJXN0KDIpXG5cdCIKKyAgICAgICAgImZzdWIgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgImZ4Y2ggICAlJXN0KDIpXG5cdCIKKyAgICAgICAgImZzdWJwICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgImZ4Y2ggICAlJXN0KDEpXG5cdCIKKyAgICAgICAgImZtdWwgICAlJXN0KDIpLCAlJXN0XG5cdCIKKyAgICAgICAgImZ4Y2ggICAlJXN0KDEpXG5cdCIKKyAgICAgICAgImZtdWxwICAlJXN0LCAlJXN0KDIpXG5cdCIKKyAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDMpXG5cdCIKKyAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgImZ4Y2ggICAlJXN0KDEpXG5cdCIKKyAgICAgICAgImZpc3RwbCAoJTIpXG5cdCIKKyAgICAgICAgImZpc3RwbCAoJTApXG5cdCIKKyAgICAgICAgOiA6ICJyIiAoYTApLCAibSIgKGIwKSwgInIiIChhMSksICJtIiAoYjEpLAorICAgICAgICAgICAgInIiIChkbW9kKSwgInIiIChkaW52bW9kKSwKKyAgICAgICAgICAgICJtIiAoTVBEX1RXTzYzKQorICAgICAgICA6ICJzdCIsICJtZW1vcnkiCisgICAgKTsKK30KKy8qIEVORCBQUFJPIEdDQyBBU00gKi8KKyNlbGlmIGRlZmluZWQoTUFTTSkKKworLyogUmV0dXJuIChhICogYikgJSBkbW9kICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QgX19jZGVjbAorcHByb19tdWxtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIsIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgKmRpbnZtb2QpCit7CisgICAgbXBkX3VpbnRfdCByZXR2YWw7CisKKyAgICBfX2FzbSB7CisgICAgICAgIG1vdiAgICAgZWF4LCBkaW52bW9kCisgICAgICAgIG1vdiAgICAgZWR4LCBkbW9kCisgICAgICAgIGZpbGQgICAgYgorICAgICAgICBmaWxkICAgIGEKKyAgICAgICAgZm11bHAgICBzdCgxKSwgc3QKKyAgICAgICAgZmxkICAgICBUQllURSBQVFIgW2VheF0KKyAgICAgICAgZm11bCAgICBzdCwgc3QoMSkKKyAgICAgICAgZmxkICAgICBNUERfVFdPNjMKKyAgICAgICAgZmFkZCAgICBzdCgxKSwgc3QKKyAgICAgICAgZnN1YnAgICBzdCgxKSwgc3QKKyAgICAgICAgZmxkICAgICBRV09SRCBQVFIgW2VkeF0KKyAgICAgICAgZm11bHAgICBzdCgxKSwgc3QKKyAgICAgICAgZnN1YnAgICBzdCgxKSwgc3QKKyAgICAgICAgZmlzdHAgICByZXR2YWwKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorCisvKgorICogVHdvIG1vZHVsYXIgbXVsdGlwbGljYXRpb25zIGluIHBhcmFsbGVsOgorICogICAgICAqYTAgPSAoKmEwICogdykgJSBkbW9kCisgKiAgICAgICphMSA9ICgqYTEgKiB3KSAlIGRtb2QKKyAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90IF9fY2RlY2wKK3Bwcm9fbXVsbW9kMmMobXBkX3VpbnRfdCAqYTAsIG1wZF91aW50X3QgKmExLCBtcGRfdWludF90IHcsCisgICAgICAgICAgICAgIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgKmRpbnZtb2QpCit7CisgICAgX19hc20geworICAgICAgICBtb3YgICAgIGVjeCwgZG1vZAorICAgICAgICBtb3YgICAgIGVkeCwgYTEKKyAgICAgICAgbW92ICAgICBlYngsIGRpbnZtb2QKKyAgICAgICAgbW92ICAgICBlYXgsIGEwCisgICAgICAgIGZpbGQgICAgdworICAgICAgICBmaWxkICAgIERXT1JEIFBUUiBbZWR4XQorICAgICAgICBmbXVsICAgIHN0LCBzdCgxKQorICAgICAgICBmeGNoICAgIHN0KDEpCisgICAgICAgIGZpbGQgICAgRFdPUkQgUFRSIFtlYXhdCisgICAgICAgIGZtdWxwICAgc3QoMSksIHN0CisgICAgICAgIGZsZCAgICAgVEJZVEUgUFRSIFtlYnhdCisgICAgICAgIGZsZCAgICAgTVBEX1RXTzYzCisgICAgICAgIGZsZCAgICAgc3QoMikKKyAgICAgICAgZm11bCAgICBzdCwgc3QoMikKKyAgICAgICAgZmFkZCAgICBzdCwgc3QoMSkKKyAgICAgICAgZnN1YiAgICBzdCwgc3QoMSkKKyAgICAgICAgZm11bCAgICBRV09SRCBQVFIgW2VjeF0KKyAgICAgICAgZnN1YnAgICBzdCgzKSwgc3QKKyAgICAgICAgZnhjaCAgICBzdCgyKQorICAgICAgICBmaXN0cCAgIERXT1JEIFBUUiBbZWF4XQorICAgICAgICBmbXVsICAgIHN0LCBzdCgyKQorICAgICAgICBmYWRkICAgIHN0LCBzdCgxKQorICAgICAgICBmc3VicnAgIHN0KDEpLCBzdAorICAgICAgICBmbXVsICAgIFFXT1JEIFBUUiBbZWN4XQorICAgICAgICBmc3VicCAgIHN0KDEpLCBzdAorICAgICAgICBmaXN0cCAgIERXT1JEIFBUUiBbZWR4XQorICAgIH0KK30KKworLyoKKyAqIFR3byBtb2R1bGFyIG11bHRpcGxpY2F0aW9ucyBpbiBwYXJhbGxlbDoKKyAqICAgICAgKmEwID0gKCphMCAqIGIwKSAlIGRtb2QKKyAqICAgICAgKmExID0gKCphMSAqIGIxKSAlIGRtb2QKKyAqLworc3RhdGljIGlubGluZSB2b2lkIF9fY2RlY2wKK3Bwcm9fbXVsbW9kMihtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCBiMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgYjEsCisgICAgICAgICAgICAgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBfX2FzbSB7CisgICAgICAgIG1vdiAgICAgZWN4LCBkbW9kCisgICAgICAgIG1vdiAgICAgZWR4LCBhMQorICAgICAgICBtb3YgICAgIGVieCwgZGludm1vZAorICAgICAgICBtb3YgICAgIGVheCwgYTAKKyAgICAgICAgZmlsZCAgICBiMQorICAgICAgICBmaWxkICAgIERXT1JEIFBUUiBbZWR4XQorICAgICAgICBmbXVscCAgIHN0KDEpLCBzdAorICAgICAgICBmaWxkICAgIGIwCisgICAgICAgIGZpbGQgICAgRFdPUkQgUFRSIFtlYXhdCisgICAgICAgIGZtdWxwICAgc3QoMSksIHN0CisgICAgICAgIGZsZCAgICAgVEJZVEUgUFRSIFtlYnhdCisgICAgICAgIGZsZCAgICAgc3QoMikKKyAgICAgICAgZm11bCAgICBzdCwgc3QoMSkKKyAgICAgICAgZnhjaCAgICBzdCgxKQorICAgICAgICBmbXVsICAgIHN0LCBzdCgyKQorICAgICAgICBmbGQgICAgIERXT1JEIFBUUiBNUERfVFdPNjMKKyAgICAgICAgZmxkICAgICBRV09SRCBQVFIgW2VjeF0KKyAgICAgICAgZnhjaCAgICBzdCgzKQorICAgICAgICBmYWRkICAgIHN0LCBzdCgxKQorICAgICAgICBmeGNoICAgIHN0KDIpCisgICAgICAgIGZhZGQgICAgc3QsIHN0KDEpCisgICAgICAgIGZ4Y2ggICAgc3QoMikKKyAgICAgICAgZnN1YiAgICBzdCwgc3QoMSkKKyAgICAgICAgZnhjaCAgICBzdCgyKQorICAgICAgICBmc3VicnAgIHN0KDEpLCBzdAorICAgICAgICBmeGNoICAgIHN0KDEpCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDIpCisgICAgICAgIGZ4Y2ggICAgc3QoMSkKKyAgICAgICAgZm11bHAgICBzdCgyKSwgc3QKKyAgICAgICAgZnN1YnAgICBzdCgzKSwgc3QKKyAgICAgICAgZnN1YnAgICBzdCgxKSwgc3QKKyAgICAgICAgZnhjaCAgICBzdCgxKQorICAgICAgICBmaXN0cCAgIERXT1JEIFBUUiBbZWR4XQorICAgICAgICBmaXN0cCAgIERXT1JEIFBUUiBbZWF4XQorICAgIH0KK30KKyNlbmRpZiAvKiBQUFJPIE1BU00gKF9NU0NfVkVSKSAqLworCisKKy8qIFJldHVybiAoYmFzZSAqKiBleHApICUgZG1vZCAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitwcHJvX3Bvd21vZChtcGRfdWludF90IGJhc2UsIG1wZF91aW50X3QgZXhwLCBkb3VibGUgKmRtb2QsIHVpbnQzMl90ICpkaW52bW9kKQoreworICAgIG1wZF91aW50X3QgciA9IDE7CisKKyAgICB3aGlsZSAoZXhwID4gMCkgeworICAgICAgICBpZiAoZXhwICYgMSkKKyAgICAgICAgICAgIHIgPSBwcHJvX211bG1vZChyLCBiYXNlLCBkbW9kLCBkaW52bW9kKTsKKyAgICAgICAgYmFzZSA9IHBwcm9fbXVsbW9kKGJhc2UsIGJhc2UsIGRtb2QsIGRpbnZtb2QpOworICAgICAgICBleHAgPj49IDE7CisgICAgfQorCisgICAgcmV0dXJuIHI7Cit9CisjZW5kaWYgLyogUFBSTyAqLworI2VuZGlmIC8qIENPTkZJR18zMiAqLworCisKKyNlbmRpZiAvKiBVTU9EQVJJVEhfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NmUwMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBWQ0NPTVBBVF9ICisjZGVmaW5lIFZDQ09NUEFUX0gKKworCisvKiBWaXN1YWwgQyBmaXhlczogbm8gc3RkaW50LmgsIG5vIHNucHJpbnRmIC4uLiAqLworI2lmZGVmIF9NU0NfVkVSCisgICNpbmNsdWRlICJ2Y3N0ZGludC5oIgorICAjdW5kZWYgaW5saW5lCisgICNkZWZpbmUgaW5saW5lIF9faW5saW5lCisgICN1bmRlZiByYW5kb20KKyAgI2RlZmluZSByYW5kb20gcmFuZAorICAjdW5kZWYgc3JhbmRvbQorICAjZGVmaW5lIHNyYW5kb20gc3JhbmQKKyAgI3VuZGVmIHNucHJpbnRmCisgICNkZWZpbmUgc25wcmludGYgc3ByaW50Zl9zCisgICNkZWZpbmUgSEFWRV9TTlBSSU5URgorICAjdW5kZWYgc3RybmNhc2VjbXAKKyAgI2RlZmluZSBzdHJuY2FzZWNtcCBfc3RybmljbXAKKyAgI3VuZGVmIHN0cmNhc2VjbXAKKyAgI2RlZmluZSBzdHJjYXNlY21wIF9zdHJpY21wCisgICN1bmRlZiBzdHJ0b2xsCisgICNkZWZpbmUgc3RydG9sbCBfc3RydG9pNjQKKyAgI2RlZmluZSBzdHJkdXAgX3N0cmR1cAorICAjZGVmaW5lIFBSSWk2NCAiSTY0aSIKKyAgI2RlZmluZSBQUkl1NjQgIkk2NHUiCisgICNkZWZpbmUgUFJJaTMyICJJMzJpIgorICAjZGVmaW5lIFBSSXUzMiAiSTMydSIKKyNlbmRpZgorCisKKyNlbmRpZiAvKiBWQ0NPTVBBVF9IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjZGl2NjQuYXNtIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2RpdjY0LmFzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWJiYTA4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2RpdjY0LmFzbQpAQCAtMCwwICsxLDQ4IEBACis7Cis7IENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorOworOyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKzsgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCis7IGFyZSBtZXQ6Cis7Cis7IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cis7ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzsKKzsgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKzsgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorOyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorOworOyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorOyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKzsgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKzsgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKzsgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKzsgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKzsgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCis7IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCis7IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKzsgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorOyBTVUNIIERBTUFHRS4KKzsKKworCitQVUJMSUMgICAgX21wZF9kaXZfd29yZHMKK19URVhUICAgIFNFR01FTlQKK3EkID0gOAorciQgPSAxNgoraGkkID0gMjQKK2xvJCA9IDMyCitkJCA9IDQwCitfbXBkX2Rpdl93b3JkcyBQUk9DCisgICAgbW92ICAgIHIxMCwgcmR4CisgICAgbW92ICAgIHJkeCwgcjgKKyAgICBtb3YgICAgcmF4LCByOQorICAgIGRpdiAgICBRV09SRCBQVFIgZCRbcnNwXQorICAgIG1vdiAgICBRV09SRCBQVFIgW3IxMF0sIHJkeAorICAgIG1vdiAgICBRV09SRCBQVFIgW3JjeF0sIHJheAorICAgIHJldCAgICAwCitfbXBkX2Rpdl93b3JkcyBFTkRQCitfVEVYVCAgICBFTkRTCitFTkQKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3Zjc3RkaW50LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3Zjc3RkaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAzMmZmMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNzdGRpbnQuaApAQCAtMCwwICsxLDIzMiBAQAorLy8gSVNPIEM5eCAgY29tcGxpYW50IHN0ZGludC5oIGZvciBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbworLy8gQmFzZWQgb24gSVNPL0lFQyA5ODk5OlRDMiBDb21taXR0ZWUgZHJhZnQgKE1heSA2LCAyMDA1KSBXRzE0L04xMTI0IAorLy8gCisvLyAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDggQWxleGFuZGVyIENoZW1lcmlzCisvLyAKKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLyAKKy8vICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorLy8gICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gCisvLyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vIAorLy8gICAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworLy8gICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vIAorLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorLy8gV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKy8vIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PCisvLyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsKKy8vIE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKy8vIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SCisvLyBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGCisvLyBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vIAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisjaWZuZGVmIF9NU0NfVkVSIC8vIFsKKyNlcnJvciAiVXNlIHRoaXMgaGVhZGVyIG9ubHkgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKyBjb21waWxlcnMhIgorI2VuZGlmIC8vIF9NU0NfVkVSIF0KKworI2lmbmRlZiBfTVNDX1NURElOVF9IXyAvLyBbCisjZGVmaW5lIF9NU0NfU1RESU5UX0hfCisKKyNpZiBfTVNDX1ZFUiA+IDEwMDAKKyNwcmFnbWEgb25jZQorI2VuZGlmCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworLy8gRm9yIFZpc3VhbCBTdHVkaW8gNiBpbiBDKysgbW9kZSB3cmFwIDx3Y2hhci5oPiBpbmNsdWRlIHdpdGggJ2V4dGVybiAiQysrIiB7fScKKy8vIG9yIGNvbXBpbGVyIGdpdmUgbWFueSBlcnJvcnMgbGlrZSB0aGlzOgorLy8gICBlcnJvciBDMjczMzogc2Vjb25kIEMgbGlua2FnZSBvZiBvdmVybG9hZGVkIGZ1bmN0aW9uICd3bWVtY2hyJyBub3QgYWxsb3dlZAorI2lmIChfTVNDX1ZFUiA8IDEzMDApICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCisgICBleHRlcm4gIkMrKyIgeworI2VuZGlmIAorIyAgICAgaW5jbHVkZSA8d2NoYXIuaD4KKyNpZiAoX01TQ19WRVIgPCAxMzAwKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorICAgfQorI2VuZGlmCisKKy8vIERlZmluZSBfVzY0IG1hY3JvcyB0byBtYXJrIHR5cGVzIGNoYW5naW5nIHRoZWlyIHNpemUsIGxpa2UgaW50cHRyX3QuCisjaWZuZGVmIF9XNjQKKyMgIGlmICFkZWZpbmVkKF9fbWlkbCkgJiYgKGRlZmluZWQoX1g4Nl8pIHx8IGRlZmluZWQoX01fSVg4NikpICYmIF9NU0NfVkVSID49IDEzMDAKKyMgICAgIGRlZmluZSBfVzY0IF9fdzY0CisjICBlbHNlCisjICAgICBkZWZpbmUgX1c2NAorIyAgZW5kaWYKKyNlbmRpZgorCisKKy8vIDcuMTguMSBJbnRlZ2VyIHR5cGVzCisKKy8vIDcuMTguMS4xIEV4YWN0LXdpZHRoIGludGVnZXIgdHlwZXMKK3R5cGVkZWYgX19pbnQ4ICAgICAgICAgICAgaW50OF90OwordHlwZWRlZiBfX2ludDE2ICAgICAgICAgICBpbnQxNl90OwordHlwZWRlZiBfX2ludDMyICAgICAgICAgICBpbnQzMl90OwordHlwZWRlZiBfX2ludDY0ICAgICAgICAgICBpbnQ2NF90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDggICB1aW50OF90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDE2ICB1aW50MTZfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQzMiAgdWludDMyX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgIHVpbnQ2NF90OworCisvLyA3LjE4LjEuMiBNaW5pbXVtLXdpZHRoIGludGVnZXIgdHlwZXMKK3R5cGVkZWYgaW50OF90ICAgIGludF9sZWFzdDhfdDsKK3R5cGVkZWYgaW50MTZfdCAgIGludF9sZWFzdDE2X3Q7Cit0eXBlZGVmIGludDMyX3QgICBpbnRfbGVhc3QzMl90OwordHlwZWRlZiBpbnQ2NF90ICAgaW50X2xlYXN0NjRfdDsKK3R5cGVkZWYgdWludDhfdCAgIHVpbnRfbGVhc3Q4X3Q7Cit0eXBlZGVmIHVpbnQxNl90ICB1aW50X2xlYXN0MTZfdDsKK3R5cGVkZWYgdWludDMyX3QgIHVpbnRfbGVhc3QzMl90OwordHlwZWRlZiB1aW50NjRfdCAgdWludF9sZWFzdDY0X3Q7CisKKy8vIDcuMTguMS4zIEZhc3Rlc3QgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzCit0eXBlZGVmIGludDhfdCAgICBpbnRfZmFzdDhfdDsKK3R5cGVkZWYgaW50MTZfdCAgIGludF9mYXN0MTZfdDsKK3R5cGVkZWYgaW50MzJfdCAgIGludF9mYXN0MzJfdDsKK3R5cGVkZWYgaW50NjRfdCAgIGludF9mYXN0NjRfdDsKK3R5cGVkZWYgdWludDhfdCAgIHVpbnRfZmFzdDhfdDsKK3R5cGVkZWYgdWludDE2X3QgIHVpbnRfZmFzdDE2X3Q7Cit0eXBlZGVmIHVpbnQzMl90ICB1aW50X2Zhc3QzMl90OwordHlwZWRlZiB1aW50NjRfdCAgdWludF9mYXN0NjRfdDsKKworLy8gNy4xOC4xLjQgSW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIGhvbGRpbmcgb2JqZWN0IHBvaW50ZXJzCisjaWZkZWYgX1dJTjY0IC8vIFsKKyAgIHR5cGVkZWYgX19pbnQ2NCAgICAgICAgICAgaW50cHRyX3Q7CisgICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgIHVpbnRwdHJfdDsKKyNlbHNlIC8vIF9XSU42NCBdWworICAgdHlwZWRlZiBfVzY0IGludCAgICAgICAgICAgICAgIGludHB0cl90OworICAgdHlwZWRlZiBfVzY0IHVuc2lnbmVkIGludCAgICAgIHVpbnRwdHJfdDsKKyNlbmRpZiAvLyBfV0lONjQgXQorCisvLyA3LjE4LjEuNSBHcmVhdGVzdC13aWR0aCBpbnRlZ2VyIHR5cGVzCit0eXBlZGVmIGludDY0X3QgICBpbnRtYXhfdDsKK3R5cGVkZWYgdWludDY0X3QgIHVpbnRtYXhfdDsKKworCisvLyA3LjE4LjIgTGltaXRzIG9mIHNwZWNpZmllZC13aWR0aCBpbnRlZ2VyIHR5cGVzCisKKyNpZiAhZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgZGVmaW5lZChfX1NURENfTElNSVRfTUFDUk9TKSAvLyBbICAgU2VlIGZvb3Rub3RlIDIyMCBhdCBwYWdlIDI1NyBhbmQgZm9vdG5vdGUgMjIxIGF0IHBhZ2UgMjU5CisKKy8vIDcuMTguMi4xIExpbWl0cyBvZiBleGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzCisjZGVmaW5lIElOVDhfTUlOICAgICAoKGludDhfdClfSThfTUlOKQorI2RlZmluZSBJTlQ4X01BWCAgICAgX0k4X01BWAorI2RlZmluZSBJTlQxNl9NSU4gICAgKChpbnQxNl90KV9JMTZfTUlOKQorI2RlZmluZSBJTlQxNl9NQVggICAgX0kxNl9NQVgKKyNkZWZpbmUgSU5UMzJfTUlOICAgICgoaW50MzJfdClfSTMyX01JTikKKyNkZWZpbmUgSU5UMzJfTUFYICAgIF9JMzJfTUFYCisjZGVmaW5lIElOVDY0X01JTiAgICAoKGludDY0X3QpX0k2NF9NSU4pCisjZGVmaW5lIElOVDY0X01BWCAgICBfSTY0X01BWAorI2RlZmluZSBVSU5UOF9NQVggICAgX1VJOF9NQVgKKyNkZWZpbmUgVUlOVDE2X01BWCAgIF9VSTE2X01BWAorI2RlZmluZSBVSU5UMzJfTUFYICAgX1VJMzJfTUFYCisjZGVmaW5lIFVJTlQ2NF9NQVggICBfVUk2NF9NQVgKKworLy8gNy4xOC4yLjIgTGltaXRzIG9mIG1pbmltdW0td2lkdGggaW50ZWdlciB0eXBlcworI2RlZmluZSBJTlRfTEVBU1Q4X01JTiAgICBJTlQ4X01JTgorI2RlZmluZSBJTlRfTEVBU1Q4X01BWCAgICBJTlQ4X01BWAorI2RlZmluZSBJTlRfTEVBU1QxNl9NSU4gICBJTlQxNl9NSU4KKyNkZWZpbmUgSU5UX0xFQVNUMTZfTUFYICAgSU5UMTZfTUFYCisjZGVmaW5lIElOVF9MRUFTVDMyX01JTiAgIElOVDMyX01JTgorI2RlZmluZSBJTlRfTEVBU1QzMl9NQVggICBJTlQzMl9NQVgKKyNkZWZpbmUgSU5UX0xFQVNUNjRfTUlOICAgSU5UNjRfTUlOCisjZGVmaW5lIElOVF9MRUFTVDY0X01BWCAgIElOVDY0X01BWAorI2RlZmluZSBVSU5UX0xFQVNUOF9NQVggICBVSU5UOF9NQVgKKyNkZWZpbmUgVUlOVF9MRUFTVDE2X01BWCAgVUlOVDE2X01BWAorI2RlZmluZSBVSU5UX0xFQVNUMzJfTUFYICBVSU5UMzJfTUFYCisjZGVmaW5lIFVJTlRfTEVBU1Q2NF9NQVggIFVJTlQ2NF9NQVgKKworLy8gNy4xOC4yLjMgTGltaXRzIG9mIGZhc3Rlc3QgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzCisjZGVmaW5lIElOVF9GQVNUOF9NSU4gICAgSU5UOF9NSU4KKyNkZWZpbmUgSU5UX0ZBU1Q4X01BWCAgICBJTlQ4X01BWAorI2RlZmluZSBJTlRfRkFTVDE2X01JTiAgIElOVDE2X01JTgorI2RlZmluZSBJTlRfRkFTVDE2X01BWCAgIElOVDE2X01BWAorI2RlZmluZSBJTlRfRkFTVDMyX01JTiAgIElOVDMyX01JTgorI2RlZmluZSBJTlRfRkFTVDMyX01BWCAgIElOVDMyX01BWAorI2RlZmluZSBJTlRfRkFTVDY0X01JTiAgIElOVDY0X01JTgorI2RlZmluZSBJTlRfRkFTVDY0X01BWCAgIElOVDY0X01BWAorI2RlZmluZSBVSU5UX0ZBU1Q4X01BWCAgIFVJTlQ4X01BWAorI2RlZmluZSBVSU5UX0ZBU1QxNl9NQVggIFVJTlQxNl9NQVgKKyNkZWZpbmUgVUlOVF9GQVNUMzJfTUFYICBVSU5UMzJfTUFYCisjZGVmaW5lIFVJTlRfRkFTVDY0X01BWCAgVUlOVDY0X01BWAorCisvLyA3LjE4LjIuNCBMaW1pdHMgb2YgaW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIGhvbGRpbmcgb2JqZWN0IHBvaW50ZXJzCisjaWZkZWYgX1dJTjY0IC8vIFsKKyMgIGRlZmluZSBJTlRQVFJfTUlOICAgSU5UNjRfTUlOCisjICBkZWZpbmUgSU5UUFRSX01BWCAgIElOVDY0X01BWAorIyAgZGVmaW5lIFVJTlRQVFJfTUFYICBVSU5UNjRfTUFYCisjZWxzZSAvLyBfV0lONjQgXVsKKyMgIGRlZmluZSBJTlRQVFJfTUlOICAgSU5UMzJfTUlOCisjICBkZWZpbmUgSU5UUFRSX01BWCAgIElOVDMyX01BWAorIyAgZGVmaW5lIFVJTlRQVFJfTUFYICBVSU5UMzJfTUFYCisjZW5kaWYgLy8gX1dJTjY0IF0KKworLy8gNy4xOC4yLjUgTGltaXRzIG9mIGdyZWF0ZXN0LXdpZHRoIGludGVnZXIgdHlwZXMKKyNkZWZpbmUgSU5UTUFYX01JTiAgIElOVDY0X01JTgorI2RlZmluZSBJTlRNQVhfTUFYICAgSU5UNjRfTUFYCisjZGVmaW5lIFVJTlRNQVhfTUFYICBVSU5UNjRfTUFYCisKKy8vIDcuMTguMyBMaW1pdHMgb2Ygb3RoZXIgaW50ZWdlciB0eXBlcworCisjaWZkZWYgX1dJTjY0IC8vIFsKKyMgIGRlZmluZSBQVFJESUZGX01JTiAgX0k2NF9NSU4KKyMgIGRlZmluZSBQVFJESUZGX01BWCAgX0k2NF9NQVgKKyNlbHNlICAvLyBfV0lONjQgXVsKKyMgIGRlZmluZSBQVFJESUZGX01JTiAgX0kzMl9NSU4KKyMgIGRlZmluZSBQVFJESUZGX01BWCAgX0kzMl9NQVgKKyNlbmRpZiAgLy8gX1dJTjY0IF0KKworI2RlZmluZSBTSUdfQVRPTUlDX01JTiAgSU5UX01JTgorI2RlZmluZSBTSUdfQVRPTUlDX01BWCAgSU5UX01BWAorCisjaWZuZGVmIFNJWkVfTUFYIC8vIFsKKyMgIGlmZGVmIF9XSU42NCAvLyBbCisjICAgICBkZWZpbmUgU0laRV9NQVggIF9VSTY0X01BWAorIyAgZWxzZSAvLyBfV0lONjQgXVsKKyMgICAgIGRlZmluZSBTSVpFX01BWCAgX1VJMzJfTUFYCisjICBlbmRpZiAvLyBfV0lONjQgXQorI2VuZGlmIC8vIFNJWkVfTUFYIF0KKworLy8gV0NIQVJfTUlOIGFuZCBXQ0hBUl9NQVggYXJlIGFsc28gZGVmaW5lZCBpbiA8d2NoYXIuaD4KKyNpZm5kZWYgV0NIQVJfTUlOIC8vIFsKKyMgIGRlZmluZSBXQ0hBUl9NSU4gIDAKKyNlbmRpZiAgLy8gV0NIQVJfTUlOIF0KKyNpZm5kZWYgV0NIQVJfTUFYIC8vIFsKKyMgIGRlZmluZSBXQ0hBUl9NQVggIF9VSTE2X01BWAorI2VuZGlmICAvLyBXQ0hBUl9NQVggXQorCisjZGVmaW5lIFdJTlRfTUlOICAwCisjZGVmaW5lIFdJTlRfTUFYICBfVUkxNl9NQVgKKworI2VuZGlmIC8vIF9fU1REQ19MSU1JVF9NQUNST1MgXQorCisKKy8vIDcuMTguNCBMaW1pdHMgb2Ygb3RoZXIgaW50ZWdlciB0eXBlcworCisjaWYgIWRlZmluZWQoX19jcGx1c3BsdXMpIHx8IGRlZmluZWQoX19TVERDX0NPTlNUQU5UX01BQ1JPUykgLy8gWyAgIFNlZSBmb290bm90ZSAyMjQgYXQgcGFnZSAyNjAKKworLy8gNy4xOC40LjEgTWFjcm9zIGZvciBtaW5pbXVtLXdpZHRoIGludGVnZXIgY29uc3RhbnRzCisKKyNkZWZpbmUgSU5UOF9DKHZhbCkgIHZhbCMjaTgKKyNkZWZpbmUgSU5UMTZfQyh2YWwpIHZhbCMjaTE2CisjZGVmaW5lIElOVDMyX0ModmFsKSB2YWwjI2kzMgorI2RlZmluZSBJTlQ2NF9DKHZhbCkgdmFsIyNpNjQKKworI2RlZmluZSBVSU5UOF9DKHZhbCkgIHZhbCMjdWk4CisjZGVmaW5lIFVJTlQxNl9DKHZhbCkgdmFsIyN1aTE2CisjZGVmaW5lIFVJTlQzMl9DKHZhbCkgdmFsIyN1aTMyCisjZGVmaW5lIFVJTlQ2NF9DKHZhbCkgdmFsIyN1aTY0CisKKy8vIDcuMTguNC4yIE1hY3JvcyBmb3IgZ3JlYXRlc3Qtd2lkdGggaW50ZWdlciBjb25zdGFudHMKKyNkZWZpbmUgSU5UTUFYX0MgICBJTlQ2NF9DCisjZGVmaW5lIFVJTlRNQVhfQyAgVUlOVDY0X0MKKworI2VuZGlmIC8vIF9fU1REQ19DT05TVEFOVF9NQUNST1MgXQorCisKKyNlbmRpZiAvLyBfTVNDX1NURElOVF9IXyBdCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL1JFQURNRS50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdiNmZmNgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDE1IEBACisKKworVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgZXh0ZW5kZWQgdGVzdHMgYW5kIGEgYmVuY2htYXJrIGFnYWluc3QgZGVjaW1hbC5weToKKworICBiZW5jaC5weSAgLT4gIEJlbmNobWFyayBmb3Igc21hbGwgYW5kIGxhcmdlIHByZWNpc2lvbnMuCisgIFVzYWdlOiAuLi8uLi8uLi9weXRob24gYmVuY2gucHkKKworICBmb3JtYXRoZWxwZXIucHkgICAtPgorICByYW5kZGVjLnB5ICAgICAgICAtPiAgR2VuZXJhdGUgdGVzdCBjYXNlcyBmb3IgZGVjY2hlY2sucHkuCisgIHJhbmRmbG9hdC5weSAgICAgIC0+CisKKyAgZGVjY2hlY2sucHkgIC0+ICBSdW4gZXh0ZW5kZWQgdGVzdHMuCisgIFVzYWdlOiAuLi8uLi8uLi9weXRob24gZGVjY2hlY2sucHkgWy0tc2hvcnR8LS1tZWRpdW18LS1sb25nfC0tYWxsXQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvYmVuY2gucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2JlbmNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZjg1MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2JlbmNoLnB5CkBAIC0wLDAgKzEsMTE5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIworIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMgTW9kaWZpZWQgYW5kIGV4dGVuZGVkIGJ5IFN0ZWZhbiBLcmFoLgorIworCisjIFVzYWdlOiAuLi8uLi8uLi9weXRob24gYmVuY2gucHkKKworCitpbXBvcnQgdGltZQorZnJvbSBtYXRoIGltcG9ydCBsb2csIGNlaWwKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlCisKK0MgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgZnJlc2g9WydfZGVjaW1hbCddKQorUCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBibG9ja2VkPVsnX2RlY2ltYWwnXSkKKworCisjIFBpIGZ1bmN0aW9uIGZyb20gdGhlIGRlY2ltYWwucHkgZG9jdW1lbnRhdGlvbgorZGVmIHBpX2Zsb2F0KCk6CisgICAgIiIibmF0aXZlIGZsb2F0IiIiCisgICAgbGFzdHMsIHQsIHMsIG4sIG5hLCBkLCBkYSA9IDAsIDMuMCwgMywgMSwgMCwgMCwgMjQKKyAgICB3aGlsZSBzICE9IGxhc3RzOgorICAgICAgICBsYXN0cyA9IHMKKyAgICAgICAgbiwgbmEgPSBuK25hLCBuYSs4CisgICAgICAgIGQsIGRhID0gZCtkYSwgZGErMzIKKyAgICAgICAgdCA9ICh0ICogbikgLyBkCisgICAgICAgIHMgKz0gdAorICAgIHJldHVybiBzCisKK2RlZiBwaV9jZGVjaW1hbCgpOgorICAgICIiImNkZWNpbWFsIiIiCisgICAgRCA9IEMuRGVjaW1hbAorICAgIGxhc3RzLCB0LCBzLCBuLCBuYSwgZCwgZGEgPSBEKDApLCBEKDMpLCBEKDMpLCBEKDEpLCBEKDApLCBEKDApLCBEKDI0KQorICAgIHdoaWxlIHMgIT0gbGFzdHM6CisgICAgICAgIGxhc3RzID0gcworICAgICAgICBuLCBuYSA9IG4rbmEsIG5hKzgKKyAgICAgICAgZCwgZGEgPSBkK2RhLCBkYSszMgorICAgICAgICB0ID0gKHQgKiBuKSAvIGQKKyAgICAgICAgcyArPSB0CisgICAgcmV0dXJuIHMKKworZGVmIHBpX2RlY2ltYWwoKToKKyAgICAiIiJkZWNpbWFsIiIiCisgICAgRCA9IFAuRGVjaW1hbAorICAgIGxhc3RzLCB0LCBzLCBuLCBuYSwgZCwgZGEgPSBEKDApLCBEKDMpLCBEKDMpLCBEKDEpLCBEKDApLCBEKDApLCBEKDI0KQorICAgIHdoaWxlIHMgIT0gbGFzdHM6CisgICAgICAgIGxhc3RzID0gcworICAgICAgICBuLCBuYSA9IG4rbmEsIG5hKzgKKyAgICAgICAgZCwgZGEgPSBkK2RhLCBkYSszMgorICAgICAgICB0ID0gKHQgKiBuKSAvIGQKKyAgICAgICAgcyArPSB0CisgICAgcmV0dXJuIHMKKworZGVmIGZhY3RvcmlhbChuLCBtKToKKyAgICBpZiAobiA+IG0pOgorICAgICAgICByZXR1cm4gZmFjdG9yaWFsKG0sIG4pCisgICAgZWxpZiBtID09IDA6CisgICAgICAgIHJldHVybiAxCisgICAgZWxpZiBuID09IG06CisgICAgICAgIHJldHVybiBuCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGZhY3RvcmlhbChuLCAobittKS8vMikgKiBmYWN0b3JpYWwoKG4rbSkvLzIgKyAxLCBtKQorCisKK3ByaW50KCJcbiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCitwcmludCgiIyAgICAgICAgICAgICAgICAgICBDYWxjdWxhdGluZyBwaSwgMTAwMDAgaXRlcmF0aW9ucyIpCitwcmludCgiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKQorCitmb3IgcHJlYyBpbiBbOSwgMTldOgorICAgIHByaW50KCJcblByZWNpc2lvbjogJWQgZGVjaW1hbCBkaWdpdHNcbiIgJSBwcmVjKQorICAgIGZvciBmdW5jIGluIFtwaV9mbG9hdCwgcGlfY2RlY2ltYWwsIHBpX2RlY2ltYWxdOgorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIEMuZ2V0Y29udGV4dCgpLnByZWMgPSBwcmVjCisgICAgICAgIFAuZ2V0Y29udGV4dCgpLnByZWMgPSBwcmVjCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDAwKToKKyAgICAgICAgICAgIHggPSBmdW5jKCkKKyAgICAgICAgcHJpbnQoIiVzOiIgJSBmdW5jLl9fbmFtZV9fLnJlcGxhY2UoInBpXyIsICIiKSkKKyAgICAgICAgcHJpbnQoInJlc3VsdDogJXMiICUgc3RyKHgpKQorICAgICAgICBwcmludCgidGltZTogJWZzXG4iICUgKHRpbWUudGltZSgpLXN0YXJ0KSkKKworCitwcmludCgiXG4jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQorcHJpbnQoIiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFjdG9yaWFsIikKK3ByaW50KCIjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpCisKK2MgPSBDLmdldGNvbnRleHQoKQorYy5wcmVjID0gQy5NQVhfUFJFQworYy5FbWF4ID0gQy5NQVhfRU1BWAorYy5FbWluID0gQy5NSU5fRU1JTgorCitmb3IgbiBpbiBbMTAwMDAwLCAxMDAwMDAwXToKKworICAgIHByaW50KCJuID0gJWRcbiIgJSBuKQorCisgICAgIyBDIHZlcnNpb24gb2YgZGVjaW1hbAorICAgIHN0YXJ0X2NhbGMgPSB0aW1lLnRpbWUoKQorICAgIHggPSBmYWN0b3JpYWwoQy5EZWNpbWFsKG4pLCAwKQorICAgIGVuZF9jYWxjID0gdGltZS50aW1lKCkKKyAgICBzdGFydF9jb252ID0gdGltZS50aW1lKCkKKyAgICBzeCA9IHN0cih4KQorICAgIGVuZF9jb252ID0gdGltZS50aW1lKCkKKyAgICBwcmludCgiY2RlY2ltYWw6IikKKyAgICBwcmludCgiY2FsY3VsYXRpb24gdGltZTogJWZzIiAlIChlbmRfY2FsYy1zdGFydF9jYWxjKSkKKyAgICBwcmludCgiY29udmVyc2lvbiB0aW1lOiAlZnNcbiIgJSAoZW5kX2NvbnYtc3RhcnRfY29udikpCisKKyAgICAjIFB5dGhvbiBpbnRlZ2VycworICAgIHN0YXJ0X2NhbGMgPSB0aW1lLnRpbWUoKQorICAgIHkgPSBmYWN0b3JpYWwobiwgMCkKKyAgICBlbmRfY2FsYyA9IHRpbWUudGltZSgpCisgICAgc3RhcnRfY29udiA9IHRpbWUudGltZSgpCisgICAgc3kgPSBzdHIoeSkKKyAgICBlbmRfY29udiA9ICB0aW1lLnRpbWUoKQorCisgICAgcHJpbnQoImludDoiKQorICAgIHByaW50KCJjYWxjdWxhdGlvbiB0aW1lOiAlZnMiICUgKGVuZF9jYWxjLXN0YXJ0X2NhbGMpKQorICAgIHByaW50KCJjb252ZXJzaW9uIHRpbWU6ICVmc1xuXG4iICUgKGVuZF9jb252LXN0YXJ0X2NvbnYpKQorCisgICAgYXNzZXJ0KHN4ID09IHN5KQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9iaWdudW0ucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2JpZ251bS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjdlMTYxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9iaWdudW0ucHkKQEAgLTAsMCArMSw0MiBAQAorIworIyBUaGVzZSB0ZXN0cyByZXF1aXJlIGdtcHkgYW5kIHRlc3QgdGhlIGxpbWl0cyBvZiB0aGUgMzItYml0IGJ1aWxkLiBUaGUKKyMgbGltaXRzIG9mIHRoZSA2NC1iaXQgYnVpbGQgYXJlIHNvIGxhcmdlIHRoYXQgdGhleSBjYW5ub3QgYmUgdGVzdGVkCisjIG9uIGFjY2Vzc2libGUgaGFyZHdhcmUuCisjCisKK2ltcG9ydCBzeXMKK2Zyb20gZGVjaW1hbCBpbXBvcnQgKgorZnJvbSBnbXB5IGltcG9ydCBtcHoKKworCitfUHlIQVNIX01PRFVMVVMgPSBzeXMuaGFzaF9pbmZvLm1vZHVsdXMKKyMgaGFzaCB2YWx1ZXMgdG8gdXNlIGZvciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW5maW5pdGllcywgYW5kIG5hbnMKK19QeUhBU0hfSU5GID0gc3lzLmhhc2hfaW5mby5pbmYKK19QeUhBU0hfTkFOID0gc3lzLmhhc2hfaW5mby5uYW4KKworIyBfUHlIQVNIXzEwSU5WIGlzIHRoZSBpbnZlcnNlIG9mIDEwIG1vZHVsbyB0aGUgcHJpbWUgX1B5SEFTSF9NT0RVTFVTCitfUHlIQVNIXzEwSU5WID0gcG93KDEwLCBfUHlIQVNIX01PRFVMVVMgLSAyLCBfUHlIQVNIX01PRFVMVVMpCisKK2RlZiB4aGFzaChjb2VmZiwgZXhwKToKKyAgICBzaWduID0gMQorICAgIGlmIGNvZWZmIDwgMDoKKyAgICAgICAgc2lnbiA9IC0xCisgICAgICAgIGNvZWZmID0gLWNvZWZmCisgICAgaWYgZXhwID49IDA6CisgICAgICAgIGV4cF9oYXNoID0gcG93KDEwLCBleHAsIF9QeUhBU0hfTU9EVUxVUykKKyAgICBlbHNlOgorICAgICAgICBleHBfaGFzaCA9IHBvdyhfUHlIQVNIXzEwSU5WLCAtZXhwLCBfUHlIQVNIX01PRFVMVVMpCisgICAgaGFzaF8gPSBjb2VmZiAqIGV4cF9oYXNoICUgX1B5SEFTSF9NT0RVTFVTCisgICAgYW5zID0gaGFzaF8gaWYgc2lnbiA9PSAxIGVsc2UgLWhhc2hfCisgICAgcmV0dXJuIC0yIGlmIGFucyA9PSAtMSBlbHNlIGFucworCisKK3ggPSBtcHooMTApICoqIDQyNTAwMDAwMCAtIDEKK2NvZWZmID0gaW50KHgpCisKK2QgPSBEZWNpbWFsKCc5JyAqIDQyNTAwMDAwMCArICdlLTg0OTk5OTk5OScpCisKK2gxID0geGhhc2goY29lZmYsIC04NDk5OTk5OTkpCitoMiA9IGhhc2goZCkKKworYXNzZXJ0IGgyID09IGgxCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGRhNGQwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQpAQCAtMCwwICsxLDEwNzUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjCisjIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMKKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisjIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisjIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KKyMKKworIworIyBVc2FnZTogcHl0aG9uIGRlY2NoZWNrLnB5IFstLXNob3J0fC0tbWVkaXVtfC0tbG9uZ3wtLWFsbF0KKyMKKworaW1wb3J0IHN5cywgcmFuZG9tCitmcm9tIGNvcHkgaW1wb3J0IGNvcHkKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X2ZyZXNoX21vZHVsZQorZnJvbSByYW5kZGVjIGltcG9ydCByYW5kZmxvYXQsIGFsbF91bmFyeSwgYWxsX2JpbmFyeSwgYWxsX3Rlcm5hcnkKK2Zyb20gZm9ybWF0aGVscGVyIGltcG9ydCByYW5kX2Zvcm1hdCwgcmFuZF9sb2NhbGUKKworQyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCitQID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGJsb2NrZWQ9WydfZGVjaW1hbCddKQorRVhJVF9TVEFUVVMgPSAwCisKKworIyBDb250YWlucyBhbGwgY2F0ZWdvcmllcyBvZiBEZWNpbWFsIG1ldGhvZHMuCitGdW5jdGlvbnMgPSB7CisgICAgIyBQbGFpbiB1bmFyeToKKyAgICAndW5hcnknOiAoCisgICAgICAgICdfX2Fic19fJywgJ19fYm9vbF9fJywgJ19fY2VpbF9fJywgJ19fY29tcGxleF9fJywgJ19fY29weV9fJywKKyAgICAgICAgJ19fZmxvb3JfXycsICdfX2Zsb2F0X18nLCAnX19oYXNoX18nLCAnX19pbnRfXycsICdfX25lZ19fJywKKyAgICAgICAgJ19fcG9zX18nLCAnX19yZWR1Y2VfXycsICdfX3JlcHJfXycsICdfX3N0cl9fJywgJ19fdHJ1bmNfXycsCisgICAgICAgICdhZGp1c3RlZCcsICdhc190dXBsZScsICdjYW5vbmljYWwnLCAnY29uanVnYXRlJywgJ2NvcHlfYWJzJywKKyAgICAgICAgJ2NvcHlfbmVnYXRlJywgJ2lzX2Nhbm9uaWNhbCcsICdpc19maW5pdGUnLCAnaXNfaW5maW5pdGUnLAorICAgICAgICAnaXNfbmFuJywgJ2lzX3FuYW4nLCAnaXNfc2lnbmVkJywgJ2lzX3NuYW4nLCAnaXNfemVybycsICdyYWRpeCcKKyAgICApLAorICAgICMgVW5hcnkgd2l0aCBvcHRpb25hbCBjb250ZXh0OgorICAgICd1bmFyeV9jdHgnOiAoCisgICAgICAgICdleHAnLCAnaXNfbm9ybWFsJywgJ2lzX3N1Ym5vcm1hbCcsICdsbicsICdsb2cxMCcsICdsb2diJywKKyAgICAgICAgJ2xvZ2ljYWxfaW52ZXJ0JywgJ25leHRfbWludXMnLCAnbmV4dF9wbHVzJywgJ25vcm1hbGl6ZScsCisgICAgICAgICdudW1iZXJfY2xhc3MnLCAnc3FydCcsICd0b19lbmdfc3RyaW5nJworICAgICksCisgICAgIyBVbmFyeSB3aXRoIG9wdGlvbmFsIHJvdW5kaW5nIG1vZGUgYW5kIGNvbnRleHQ6CisgICAgJ3VuYXJ5X3JuZF9jdHgnOiAoJ3RvX2ludGVncmFsJywgJ3RvX2ludGVncmFsX2V4YWN0JywgJ3RvX2ludGVncmFsX3ZhbHVlJyksCisgICAgIyBQbGFpbiBiaW5hcnk6CisgICAgJ2JpbmFyeSc6ICgKKyAgICAgICAgJ19fYWRkX18nLCAnX19kaXZtb2RfXycsICdfX2VxX18nLCAnX19mbG9vcmRpdl9fJywgJ19fZ2VfXycsICdfX2d0X18nLAorICAgICAgICAnX19sZV9fJywgJ19fbHRfXycsICdfX21vZF9fJywgJ19fbXVsX18nLCAnX19uZV9fJywgJ19fcG93X18nLAorICAgICAgICAnX19yYWRkX18nLCAnX19yZGl2bW9kX18nLCAnX19yZmxvb3JkaXZfXycsICdfX3Jtb2RfXycsICdfX3JtdWxfXycsCisgICAgICAgICdfX3Jwb3dfXycsICdfX3JzdWJfXycsICdfX3J0cnVlZGl2X18nLCAnX19zdWJfXycsICdfX3RydWVkaXZfXycsCisgICAgICAgICdjb21wYXJlX3RvdGFsJywgJ2NvbXBhcmVfdG90YWxfbWFnJywgJ2NvcHlfc2lnbicsICdxdWFudGl6ZScsCisgICAgICAgICdzYW1lX3F1YW50dW0nCisgICAgKSwKKyAgICAjIEJpbmFyeSB3aXRoIG9wdGlvbmFsIGNvbnRleHQ6CisgICAgJ2JpbmFyeV9jdHgnOiAoCisgICAgICAgICdjb21wYXJlJywgJ2NvbXBhcmVfc2lnbmFsJywgJ2xvZ2ljYWxfYW5kJywgJ2xvZ2ljYWxfb3InLCAnbG9naWNhbF94b3InLAorICAgICAgICAnbWF4JywgJ21heF9tYWcnLCAnbWluJywgJ21pbl9tYWcnLCAnbmV4dF90b3dhcmQnLCAncmVtYWluZGVyX25lYXInLAorICAgICAgICAncm90YXRlJywgJ3NjYWxlYicsICdzaGlmdCcKKyAgICApLAorICAgICMgUGxhaW4gdGVybmFyeToKKyAgICAndGVybmFyeSc6ICgnX19wb3dfXycsKSwKKyAgICAjIFRlcm5hcnkgd2l0aCBvcHRpb25hbCBjb250ZXh0OgorICAgICd0ZXJuYXJ5X2N0eCc6ICgnZm1hJywpLAorICAgICMgU3BlY2lhbDoKKyAgICAnc3BlY2lhbCc6ICgnX19mb3JtYXRfXycsICdfX3JlZHVjZV9leF9fJywgJ19fcm91bmRfXycsICdmcm9tX2Zsb2F0JywKKyAgICAgICAgICAgICAgICAncXVhbnRpemUnKSwKKyAgICAjIFByb3BlcnRpZXM6CisgICAgJ3Byb3BlcnR5JzogKCdyZWFsJywgJ2ltYWcnKQorfQorCisjIENvbnRhaW5zIGFsbCBjYXRlZ29yaWVzIG9mIENvbnRleHQgbWV0aG9kcy4gVGhlIG4tYXJ5IGNsYXNzaWZpY2F0aW9uCisjIGFwcGxpZXMgdG8gdGhlIG51bWJlciBvZiBEZWNpbWFsIGFyZ3VtZW50cy4KK0NvbnRleHRGdW5jdGlvbnMgPSB7CisgICAgIyBQbGFpbiBudWxsYXJ5OgorICAgICdudWxsYXJ5JzogKCdjb250ZXh0Ll9faGFzaF9fJywgJ2NvbnRleHQuX19yZWR1Y2VfXycsICdjb250ZXh0LnJhZGl4JyksCisgICAgIyBQbGFpbiB1bmFyeToKKyAgICAndW5hcnknOiAoJ2NvbnRleHQuYWJzJywgJ2NvbnRleHQuY2Fub25pY2FsJywgJ2NvbnRleHQuY29weV9hYnMnLAorICAgICAgICAgICAgICAnY29udGV4dC5jb3B5X2RlY2ltYWwnLCAnY29udGV4dC5jb3B5X25lZ2F0ZScsCisgICAgICAgICAgICAgICdjb250ZXh0LmNyZWF0ZV9kZWNpbWFsJywgJ2NvbnRleHQuZXhwJywgJ2NvbnRleHQuaXNfY2Fub25pY2FsJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQuaXNfZmluaXRlJywgJ2NvbnRleHQuaXNfaW5maW5pdGUnLCAnY29udGV4dC5pc19uYW4nLAorICAgICAgICAgICAgICAnY29udGV4dC5pc19ub3JtYWwnLCAnY29udGV4dC5pc19xbmFuJywgJ2NvbnRleHQuaXNfc2lnbmVkJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQuaXNfc25hbicsICdjb250ZXh0LmlzX3N1Ym5vcm1hbCcsICdjb250ZXh0LmlzX3plcm8nLAorICAgICAgICAgICAgICAnY29udGV4dC5sbicsICdjb250ZXh0LmxvZzEwJywgJ2NvbnRleHQubG9nYicsCisgICAgICAgICAgICAgICdjb250ZXh0LmxvZ2ljYWxfaW52ZXJ0JywgJ2NvbnRleHQubWludXMnLCAnY29udGV4dC5uZXh0X21pbnVzJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQubmV4dF9wbHVzJywgJ2NvbnRleHQubm9ybWFsaXplJywgJ2NvbnRleHQubnVtYmVyX2NsYXNzJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQucGx1cycsICdjb250ZXh0LnNxcnQnLCAnY29udGV4dC50b19lbmdfc3RyaW5nJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQudG9faW50ZWdyYWwnLCAnY29udGV4dC50b19pbnRlZ3JhbF9leGFjdCcsCisgICAgICAgICAgICAgICdjb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlJywgJ2NvbnRleHQudG9fc2NpX3N0cmluZycKKyAgICApLAorICAgICMgUGxhaW4gYmluYXJ5OgorICAgICdiaW5hcnknOiAoJ2NvbnRleHQuYWRkJywgJ2NvbnRleHQuY29tcGFyZScsICdjb250ZXh0LmNvbXBhcmVfc2lnbmFsJywKKyAgICAgICAgICAgICAgICdjb250ZXh0LmNvbXBhcmVfdG90YWwnLCAnY29udGV4dC5jb21wYXJlX3RvdGFsX21hZycsCisgICAgICAgICAgICAgICAnY29udGV4dC5jb3B5X3NpZ24nLCAnY29udGV4dC5kaXZpZGUnLCAnY29udGV4dC5kaXZpZGVfaW50JywKKyAgICAgICAgICAgICAgICdjb250ZXh0LmRpdm1vZCcsICdjb250ZXh0LmxvZ2ljYWxfYW5kJywgJ2NvbnRleHQubG9naWNhbF9vcicsCisgICAgICAgICAgICAgICAnY29udGV4dC5sb2dpY2FsX3hvcicsICdjb250ZXh0Lm1heCcsICdjb250ZXh0Lm1heF9tYWcnLAorICAgICAgICAgICAgICAgJ2NvbnRleHQubWluJywgJ2NvbnRleHQubWluX21hZycsICdjb250ZXh0Lm11bHRpcGx5JywKKyAgICAgICAgICAgICAgICdjb250ZXh0Lm5leHRfdG93YXJkJywgJ2NvbnRleHQucG93ZXInLCAnY29udGV4dC5xdWFudGl6ZScsCisgICAgICAgICAgICAgICAnY29udGV4dC5yZW1haW5kZXInLCAnY29udGV4dC5yZW1haW5kZXJfbmVhcicsICdjb250ZXh0LnJvdGF0ZScsCisgICAgICAgICAgICAgICAnY29udGV4dC5zYW1lX3F1YW50dW0nLCAnY29udGV4dC5zY2FsZWInLCAnY29udGV4dC5zaGlmdCcsCisgICAgICAgICAgICAgICAnY29udGV4dC5zdWJ0cmFjdCcKKyAgICApLAorICAgICMgUGxhaW4gdGVybmFyeToKKyAgICAndGVybmFyeSc6ICgnY29udGV4dC5mbWEnLCAnY29udGV4dC5wb3dlcicpLAorICAgICMgU3BlY2lhbDoKKyAgICAnc3BlY2lhbCc6ICgnY29udGV4dC5fX3JlZHVjZV9leF9fJywgJ2NvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCcpCit9CisKKyMgRnVuY3Rpb25zIHRoYXQgcmVxdWlyZSBhIHJlc3RyaWN0ZWQgZXhwb25lbnQgcmFuZ2UgZm9yIHJlYXNvbmFibGUgcnVudGltZXMuCitVbmFyeVJlc3RyaWN0ZWQgPSBbCisgICdfX2NlaWxfXycsICdfX2Zsb29yX18nLCAnX19pbnRfXycsICdfX2xvbmdfXycsICdfX3RydW5jX18nLAorICAndG9faW50ZWdyYWwnLCAndG9faW50ZWdyYWxfdmFsdWUnCitdCisKK0JpbmFyeVJlc3RyaWN0ZWQgPSBbJ19fcm91bmRfXyddCisKK1Rlcm5hcnlSZXN0cmljdGVkID0gWydfX3Bvd19fJywgJ2NvbnRleHQucG93ZXInXQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmaWVkIENvbnRleHQKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIFRyYW5zbGF0ZSBzeW1ib2xzLgorQ29uZE1hcCA9IHsKKyAgICAgICAgQy5DbGFtcGVkOiAgICAgICAgICAgICBQLkNsYW1wZWQsCisgICAgICAgIEMuQ29udmVyc2lvblN5bnRheDogICAgUC5Db252ZXJzaW9uU3ludGF4LAorICAgICAgICBDLkRpdmlzaW9uQnlaZXJvOiAgICAgIFAuRGl2aXNpb25CeVplcm8sCisgICAgICAgIEMuRGl2aXNpb25JbXBvc3NpYmxlOiAgUC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICBDLkRpdmlzaW9uVW5kZWZpbmVkOiAgIFAuRGl2aXNpb25VbmRlZmluZWQsCisgICAgICAgIEMuSW5leGFjdDogICAgICAgICAgICAgUC5JbmV4YWN0LAorICAgICAgICBDLkludmFsaWRDb250ZXh0OiAgICAgIFAuSW52YWxpZENvbnRleHQsCisgICAgICAgIEMuSW52YWxpZE9wZXJhdGlvbjogICAgUC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICBDLk92ZXJmbG93OiAgICAgICAgICAgIFAuT3ZlcmZsb3csCisgICAgICAgIEMuUm91bmRlZDogICAgICAgICAgICAgUC5Sb3VuZGVkLAorICAgICAgICBDLlN1Ym5vcm1hbDogICAgICAgICAgIFAuU3Vibm9ybWFsLAorICAgICAgICBDLlVuZGVyZmxvdzogICAgICAgICAgIFAuVW5kZXJmbG93LAorICAgICAgICBDLkZsb2F0T3BlcmF0aW9uOiAgICAgIFAuRmxvYXRPcGVyYXRpb24sCit9CisKK1JvdW5kTWFwID0geworICAgICAgICBDLlJPVU5EX1VQOiAgICAgICAgICAgUC5ST1VORF9VUCwKKyAgICAgICAgQy5ST1VORF9ET1dOOiAgICAgICAgIFAuUk9VTkRfRE9XTiwKKyAgICAgICAgQy5ST1VORF9DRUlMSU5HOiAgICAgIFAuUk9VTkRfQ0VJTElORywKKyAgICAgICAgQy5ST1VORF9GTE9PUjogICAgICAgIFAuUk9VTkRfRkxPT1IsCisgICAgICAgIEMuUk9VTkRfSEFMRl9VUDogICAgICBQLlJPVU5EX0hBTEZfVVAsCisgICAgICAgIEMuUk9VTkRfSEFMRl9ET1dOOiAgICBQLlJPVU5EX0hBTEZfRE9XTiwKKyAgICAgICAgQy5ST1VORF9IQUxGX0VWRU46ICAgIFAuUk9VTkRfSEFMRl9FVkVOLAorICAgICAgICBDLlJPVU5EXzA1VVA6ICAgICAgICAgUC5ST1VORF8wNVVQCit9CitSb3VuZE1vZGVzID0gUm91bmRNYXAuaXRlbXMoKQorCisKK2NsYXNzIENvbnRleHQob2JqZWN0KToKKyAgICAiIiJQcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IG9mIHN5bmNpbmcgdGhlIEMgYW5kIFAgY29udGV4dHMiIiIKKworICAgIF9fc2xvdHNfXyA9IFsnYycsICdwJ10KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjX2N0eD1Ob25lLCBwX2N0eD1Ob25lKToKKyAgICAgICAgIiIiSW5pdGlhbGl6YXRpb24gaXMgZnJvbSB0aGUgQyBjb250ZXh0IiIiCisgICAgICAgIHNlbGYuYyA9IEMuZ2V0Y29udGV4dCgpIGlmIGNfY3R4IGlzIE5vbmUgZWxzZSBjX2N0eAorICAgICAgICBzZWxmLnAgPSBQLmdldGNvbnRleHQoKSBpZiBwX2N0eCBpcyBOb25lIGVsc2UgcF9jdHgKKyAgICAgICAgc2VsZi5wLnByZWMgPSBzZWxmLmMucHJlYworICAgICAgICBzZWxmLnAuRW1pbiA9IHNlbGYuYy5FbWluCisgICAgICAgIHNlbGYucC5FbWF4ID0gc2VsZi5jLkVtYXgKKyAgICAgICAgc2VsZi5wLnJvdW5kaW5nID0gUm91bmRNYXBbc2VsZi5jLnJvdW5kaW5nXQorICAgICAgICBzZWxmLnAuY2FwaXRhbHMgPSBzZWxmLmMuY2FwaXRhbHMKKyAgICAgICAgc2VsZi5zZXR0cmFwcyhbc2lnIGZvciBzaWcgaW4gc2VsZi5jLnRyYXBzIGlmIHNlbGYuYy50cmFwc1tzaWddXSkKKyAgICAgICAgc2VsZi5zZXRzdGF0dXMoW3NpZyBmb3Igc2lnIGluIHNlbGYuYy5mbGFncyBpZiBzZWxmLmMuZmxhZ3Nbc2lnXV0pCisgICAgICAgIHNlbGYucC5jbGFtcCA9IHNlbGYuYy5jbGFtcAorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZi5jKSArICdcbicgKyBzdHIoc2VsZi5wKQorCisgICAgZGVmIGdldHByZWMoc2VsZik6CisgICAgICAgIGFzc2VydChzZWxmLmMucHJlYyA9PSBzZWxmLnAucHJlYykKKyAgICAgICAgcmV0dXJuIHNlbGYuYy5wcmVjCisKKyAgICBkZWYgc2V0cHJlYyhzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLmMucHJlYyA9IHZhbAorICAgICAgICBzZWxmLnAucHJlYyA9IHZhbAorCisgICAgZGVmIGdldGVtaW4oc2VsZik6CisgICAgICAgIGFzc2VydChzZWxmLmMuRW1pbiA9PSBzZWxmLnAuRW1pbikKKyAgICAgICAgcmV0dXJuIHNlbGYuYy5FbWluCisKKyAgICBkZWYgc2V0ZW1pbihzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLmMuRW1pbiA9IHZhbAorICAgICAgICBzZWxmLnAuRW1pbiA9IHZhbAorCisgICAgZGVmIGdldGVtYXgoc2VsZik6CisgICAgICAgIGFzc2VydChzZWxmLmMuRW1heCA9PSBzZWxmLnAuRW1heCkKKyAgICAgICAgcmV0dXJuIHNlbGYuYy5FbWF4CisKKyAgICBkZWYgc2V0ZW1heChzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLmMuRW1heCA9IHZhbAorICAgICAgICBzZWxmLnAuRW1heCA9IHZhbAorCisgICAgZGVmIGdldHJvdW5kKHNlbGYpOgorICAgICAgICBhc3NlcnQoc2VsZi5jLnJvdW5kaW5nID09IFJvdW5kTWFwW3NlbGYucC5yb3VuZGluZ10pCisgICAgICAgIHJldHVybiBzZWxmLmMucm91bmRpbmcKKworICAgIGRlZiBzZXRyb3VuZChzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLmMucm91bmRpbmcgPSB2YWwKKyAgICAgICAgc2VsZi5wLnJvdW5kaW5nID0gUm91bmRNYXBbdmFsXQorCisgICAgZGVmIGdldGNhcGl0YWxzKHNlbGYpOgorICAgICAgICBhc3NlcnQoc2VsZi5jLmNhcGl0YWxzID09IHNlbGYucC5jYXBpdGFscykKKyAgICAgICAgcmV0dXJuIHNlbGYuYy5jYXBpdGFscworCisgICAgZGVmIHNldGNhcGl0YWxzKHNlbGYsIHZhbCk6CisgICAgICAgIHNlbGYuYy5jYXBpdGFscyA9IHZhbAorICAgICAgICBzZWxmLnAuY2FwaXRhbHMgPSB2YWwKKworICAgIGRlZiBnZXRjbGFtcChzZWxmKToKKyAgICAgICAgYXNzZXJ0KHNlbGYuYy5jbGFtcCA9PSBzZWxmLnAuY2xhbXApCisgICAgICAgIHJldHVybiBzZWxmLmMuY2xhbXAKKworICAgIGRlZiBzZXRjbGFtcChzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLmMuY2xhbXAgPSB2YWwKKyAgICAgICAgc2VsZi5wLmNsYW1wID0gdmFsCisKKyAgICBwcmVjID0gcHJvcGVydHkoZ2V0cHJlYywgc2V0cHJlYykKKyAgICBFbWluID0gcHJvcGVydHkoZ2V0ZW1pbiwgc2V0ZW1pbikKKyAgICBFbWF4ID0gcHJvcGVydHkoZ2V0ZW1heCwgc2V0ZW1heCkKKyAgICByb3VuZGluZyA9IHByb3BlcnR5KGdldHJvdW5kLCBzZXRyb3VuZCkKKyAgICBjbGFtcCA9IHByb3BlcnR5KGdldGNsYW1wLCBzZXRjbGFtcCkKKyAgICBjYXBpdGFscyA9IHByb3BlcnR5KGdldGNhcGl0YWxzLCBzZXRjYXBpdGFscykKKworICAgIGRlZiBjbGVhcl90cmFwcyhzZWxmKToKKyAgICAgICAgc2VsZi5jLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIHRyYXAgaW4gc2VsZi5wLnRyYXBzOgorICAgICAgICAgICAgc2VsZi5wLnRyYXBzW3RyYXBdID0gRmFsc2UKKworICAgIGRlZiBjbGVhcl9zdGF0dXMoc2VsZik6CisgICAgICAgIHNlbGYuYy5jbGVhcl9mbGFncygpCisgICAgICAgIHNlbGYucC5jbGVhcl9mbGFncygpCisKKyAgICBkZWYgc2V0dHJhcHMoc2VsZiwgbHN0KToKKyAgICAgICAgIiIibHN0OiBDIHNpZ25hbCBsaXN0IiIiCisgICAgICAgIHNlbGYuY2xlYXJfdHJhcHMoKQorICAgICAgICBmb3Igc2lnbmFsIGluIGxzdDoKKyAgICAgICAgICAgIHNlbGYuYy50cmFwc1tzaWduYWxdID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5wLnRyYXBzW0NvbmRNYXBbc2lnbmFsXV0gPSBUcnVlCisKKyAgICBkZWYgc2V0c3RhdHVzKHNlbGYsIGxzdCk6CisgICAgICAgICIiImxzdDogQyBzaWduYWwgbGlzdCIiIgorICAgICAgICBzZWxmLmNsZWFyX3N0YXR1cygpCisgICAgICAgIGZvciBzaWduYWwgaW4gbHN0OgorICAgICAgICAgICAgc2VsZi5jLmZsYWdzW3NpZ25hbF0gPSBUcnVlCisgICAgICAgICAgICBzZWxmLnAuZmxhZ3NbQ29uZE1hcFtzaWduYWxdXSA9IFRydWUKKworICAgIGRlZiBhc3NlcnRfZXFfc3RhdHVzKHNlbGYpOgorICAgICAgICAiIiJhc3NlcnQgZXF1YWxpdHkgb2YgQyBhbmQgUCBzdGF0dXMiIiIKKyAgICAgICAgZm9yIHNpZ25hbCBpbiBzZWxmLmMuZmxhZ3M6CisgICAgICAgICAgICBpZiBzZWxmLmMuZmxhZ3Nbc2lnbmFsXSA9PSAobm90IHNlbGYucC5mbGFnc1tDb25kTWFwW3NpZ25hbF1dKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworCisjIFdlIGRvbid0IHdhbnQgZXhjZXB0aW9ucyBzbyB0aGF0IHdlIGNhbiBjb21wYXJlIHRoZSBzdGF0dXMgZmxhZ3MuCitjb250ZXh0ID0gQ29udGV4dCgpCitjb250ZXh0LkVtaW4gPSBDLk1JTl9FTUlOCitjb250ZXh0LkVtYXggPSBDLk1BWF9FTUFYCitjb250ZXh0LmNsZWFyX3RyYXBzKCkKKworIyBXaGVuIGNyZWF0aW5nIGRlY2ltYWxzLCBfZGVjaW1hbCBpcyB1bHRpbWF0ZWx5IGxpbWl0ZWQgYnkgdGhlIG1heGltdW0KKyMgY29udGV4dCB2YWx1ZXMuIFdlIGVtdWxhdGUgdGhpcyByZXN0cmljdGlvbiBmb3IgZGVjaW1hbC5weS4KK21heGNvbnRleHQgPSBQLkNvbnRleHQoCisgICAgcHJlYz1DLk1BWF9QUkVDLAorICAgIEVtaW49Qy5NSU5fRU1JTiwKKyAgICBFbWF4PUMuTUFYX0VNQVgsCisgICAgcm91bmRpbmc9UC5ST1VORF9IQUxGX1VQLAorICAgIGNhcGl0YWxzPTEKKykKK21heGNvbnRleHQuY2xhbXAgPSAwCisKK2RlZiBSZXN0cmljdGVkRGVjaW1hbCh2YWx1ZSk6CisgICAgbWF4Y29udGV4dC50cmFwcyA9IGNvcHkoY29udGV4dC5wLnRyYXBzKQorICAgIG1heGNvbnRleHQuY2xlYXJfZmxhZ3MoKQorICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgIHZhbHVlID0gdmFsdWUuc3RyaXAoKQorICAgIGRlYyA9IG1heGNvbnRleHQuY3JlYXRlX2RlY2ltYWwodmFsdWUpCisgICAgaWYgbWF4Y29udGV4dC5mbGFnc1tQLkluZXhhY3RdIG9yIFwKKyAgICAgICBtYXhjb250ZXh0LmZsYWdzW1AuUm91bmRlZF0gb3IgXAorICAgICAgIG1heGNvbnRleHQuZmxhZ3NbUC5DbGFtcGVkXSBvciBcCisgICAgICAgbWF4Y29udGV4dC5mbGFnc1tQLkludmFsaWRPcGVyYXRpb25dOgorICAgICAgICByZXR1cm4gY29udGV4dC5wLl9yYWlzZV9lcnJvcihQLkludmFsaWRPcGVyYXRpb24pCisgICAgaWYgbWF4Y29udGV4dC5mbGFnc1tQLkZsb2F0T3BlcmF0aW9uXToKKyAgICAgICAgY29udGV4dC5wLmZsYWdzW1AuRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgIHJldHVybiBkZWMKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICBUZXN0U2V0OiBPcmdhbml6ZSBkYXRhIGFuZCBldmVudHMgZHVyaW5nIGEgc2luZ2xlIHRlc3QgY2FzZQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2NsYXNzIFJlc3RyaWN0ZWRMaXN0KGxpc3QpOgorICAgICIiIkxpc3QgdGhhdCBjYW4gb25seSBiZSBtb2RpZmllZCBieSBhcHBlbmRpbmcgaXRlbXMuIiIiCisgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5hbWUgIT0gJ2FwcGVuZCc6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigidW5zdXBwb3J0ZWQgb3BlcmF0aW9uIikKKyAgICAgICAgcmV0dXJuIGxpc3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKQorICAgIGRlZiB1bnN1cHBvcnRlZChzZWxmLCAqXyk6CisgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJ1bnN1cHBvcnRlZCBvcGVyYXRpb24iKQorICAgIF9fYWRkX18gPSBfX2RlbGF0dHJfXyA9IF9fZGVsaXRlbV9fID0gX19pYWRkX18gPSBfX2ltdWxfXyA9IHVuc3VwcG9ydGVkCisgICAgX19tdWxfXyA9IF9fcmV2ZXJzZWRfXyA9IF9fcm11bF9fID0gX19zZXRhdHRyX18gPSBfX3NldGl0ZW1fXyA9IHVuc3VwcG9ydGVkCisKK2NsYXNzIFRlc3RTZXQob2JqZWN0KToKKyAgICAiIiJBIFRlc3RTZXQgY29udGFpbnMgdGhlIG9yaWdpbmFsIGlucHV0IG9wZXJhbmRzLCBjb252ZXJ0ZWQgb3BlcmFuZHMsCisgICAgICAgUHl0aG9uIGV4Y2VwdGlvbnMgdGhhdCBvY2N1cnJlZCBlaXRoZXIgZHVyaW5nIGNvbnZlcnNpb24gb3IgZHVyaW5nCisgICAgICAgZXhlY3V0aW9uIG9mIHRoZSBhY3R1YWwgZnVuY3Rpb24sIGFuZCB0aGUgZmluYWwgcmVzdWx0cy4KKworICAgICAgIEZvciBzYWZldHksIG1vc3QgYXR0cmlidXRlcyBhcmUgbGlzdHMgdGhhdCBvbmx5IHN1cHBvcnQgdGhlIGFwcGVuZAorICAgICAgIG9wZXJhdGlvbi4KKworICAgICAgIElmIGEgZnVuY3Rpb24gbmFtZSBpcyBwcmVmaXhlZCB3aXRoICdjb250ZXh0LicsIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgY29udGV4dCBtZXRob2QgaXMgY2FsbGVkLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jbmFtZSwgb3BlcmFuZHMpOgorICAgICAgICBpZiBmdW5jbmFtZS5zdGFydHN3aXRoKCJjb250ZXh0LiIpOgorICAgICAgICAgICAgc2VsZi5mdW5jbmFtZSA9IGZ1bmNuYW1lLnJlcGxhY2UoImNvbnRleHQuIiwgIiIpCisgICAgICAgICAgICBzZWxmLmNvbnRleHRmdW5jID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mdW5jbmFtZSA9IGZ1bmNuYW1lCisgICAgICAgICAgICBzZWxmLmNvbnRleHRmdW5jID0gRmFsc2UKKyAgICAgICAgc2VsZi5vcCA9IG9wZXJhbmRzICAgICAgICAgICAgICAgIyByYXcgb3BlcmFuZCB0dXBsZQorICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0ICAgICAgICAgICAjIGNvbnRleHQgdXNlZCBmb3IgdGhlIG9wZXJhdGlvbgorICAgICAgICBzZWxmLmNvcCA9IFJlc3RyaWN0ZWRMaXN0KCkgICAgICAjIGNvbnZlcnRlZCBDLkRlY2ltYWwgb3BlcmFuZHMKKyAgICAgICAgc2VsZi5jZXggPSBSZXN0cmljdGVkTGlzdCgpICAgICAgIyBQeXRob24gZXhjZXB0aW9ucyBmb3IgQy5EZWNpbWFsCisgICAgICAgIHNlbGYuY3Jlc3VsdHMgPSBSZXN0cmljdGVkTGlzdCgpICMgQy5EZWNpbWFsIHJlc3VsdHMKKyAgICAgICAgc2VsZi5wb3AgPSBSZXN0cmljdGVkTGlzdCgpICAgICAgIyBjb252ZXJ0ZWQgUC5EZWNpbWFsIG9wZXJhbmRzCisgICAgICAgIHNlbGYucGV4ID0gUmVzdHJpY3RlZExpc3QoKSAgICAgICMgUHl0aG9uIGV4Y2VwdGlvbnMgZm9yIFAuRGVjaW1hbAorICAgICAgICBzZWxmLnByZXN1bHRzID0gUmVzdHJpY3RlZExpc3QoKSAjIFAuRGVjaW1hbCByZXN1bHRzCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgIFNraXBIYW5kbGVyOiBza2lwIGtub3duIGRpc2NyZXBhbmNpZXMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitjbGFzcyBTa2lwSGFuZGxlcjoKKyAgICAiIiJIYW5kbGUga25vd24gZGlzY3JlcGFuY2llcyBiZXR3ZWVuIGRlY2ltYWwucHkgYW5kIF9kZWNpbWFsLnNvLgorICAgICAgIFRoZXNlIGFyZSBlaXRoZXIgVUxQIGRpZmZlcmVuY2VzIGluIHRoZSBwb3dlciBmdW5jdGlvbiBvcgorICAgICAgIGV4dHJlbWVseSBtaW5vciBpc3N1ZXMuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYudWxwZGlmZiA9IDAKKyAgICAgICAgc2VsZi5wb3dtb2RfemVyb3MgPSAwCisgICAgICAgIHNlbGYubWF4Y3R4ID0gUC5Db250ZXh0KEVtYXg9MTAqKjE4LCBFbWluPS0xMCoqMTgpCisKKyAgICBkZWYgZGVmYXVsdChzZWxmLCB0KToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgX19nZV9fID0gIF9fZ3RfXyA9IF9fbGVfXyA9IF9fbHRfXyA9IF9fbmVfXyA9IF9fZXFfXyA9IGRlZmF1bHQKKyAgICBfX3JlZHVjZV9fID0gX19mb3JtYXRfXyA9IF9fcmVwcl9fID0gX19zdHJfXyA9IGRlZmF1bHQKKworICAgIGRlZiBoYXJyaXNvbl91bHAoc2VsZiwgZGVjKToKKyAgICAgICAgIiIiZnRwOi8vZnRwLmlucmlhLmZyL0lOUklBL3B1YmxpY2F0aW9uL3B1YmxpLXBkZi9SUi9SUi01NTA0LnBkZiIiIgorICAgICAgICBhID0gZGVjLm5leHRfcGx1cygpCisgICAgICAgIGIgPSBkZWMubmV4dF9taW51cygpCisgICAgICAgIHJldHVybiBhYnMoYSAtIGIpCisKKyAgICBkZWYgc3RhbmRhcmRfdWxwKHNlbGYsIGRlYywgcHJlYyk6CisgICAgICAgIHJldHVybiBQLl9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBkZWMuX2V4cCtsZW4oZGVjLl9pbnQpLXByZWMpCisKKyAgICBkZWYgcm91bmRpbmdfZGlyZWN0aW9uKHNlbGYsIHgsIG1vZGUpOgorICAgICAgICAiIiJEZXRlcm1pbmUgdGhlIGVmZmVjdGl2ZSBkaXJlY3Rpb24gb2YgdGhlIHJvdW5kaW5nIHdoZW4KKyAgICAgICAgICAgdGhlIGV4YWN0IHJlc3VsdCB4IGlzIHJvdW5kZWQgYWNjb3JkaW5nIHRvIG1vZGUuCisgICAgICAgICAgIFJldHVybiAtMSBmb3IgZG93bndhcmRzLCAwIGZvciB1bmRpcmVjdGVkLCAxIGZvciB1cHdhcmRzLAorICAgICAgICAgICAyIGZvciBST1VORF8wNVVQLiIiIgorICAgICAgICBjbXAgPSAxIGlmIHguY29tcGFyZV90b3RhbChQLkRlY2ltYWwoIiswIikpID49IDAgZWxzZSAtMQorCisgICAgICAgIGlmIG1vZGUgaW4gKFAuUk9VTkRfSEFMRl9FVkVOLCBQLlJPVU5EX0hBTEZfVVAsIFAuUk9VTkRfSEFMRl9ET1dOKToKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGVsaWYgbW9kZSA9PSBQLlJPVU5EX0NFSUxJTkc6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBlbGlmIG1vZGUgPT0gUC5ST1VORF9GTE9PUjoKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBlbGlmIG1vZGUgPT0gUC5ST1VORF9VUDoKKyAgICAgICAgICAgIHJldHVybiBjbXAKKyAgICAgICAgZWxpZiBtb2RlID09IFAuUk9VTkRfRE9XTjoKKyAgICAgICAgICAgIHJldHVybiAtY21wCisgICAgICAgIGVsaWYgbW9kZSA9PSBQLlJPVU5EXzA1VVA6CisgICAgICAgICAgICByZXR1cm4gMgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5leHBlY3RlZCByb3VuZGluZyBtb2RlOiAlcyIgJSBtb2RlKQorCisgICAgZGVmIGNoZWNrX3VscGRpZmYoc2VsZiwgZXhhY3QsIHJvdW5kZWQpOgorICAgICAgICAjIGN1cnJlbnQgcHJlY2lzaW9uCisgICAgICAgIHAgPSBjb250ZXh0LnAucHJlYworCisgICAgICAgICMgQ29udmVydCBpbmZpbml0aWVzIHRvIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyICsgMS4KKyAgICAgICAgeCA9IGV4YWN0CisgICAgICAgIGlmIGV4YWN0LmlzX2luZmluaXRlKCk6CisgICAgICAgICAgICB4ID0gUC5fZGVjX2Zyb21fdHJpcGxlKGV4YWN0Ll9zaWduLCAnMTAnLCBjb250ZXh0LnAuRW1heCkKKyAgICAgICAgeSA9IHJvdW5kZWQKKyAgICAgICAgaWYgcm91bmRlZC5pc19pbmZpbml0ZSgpOgorICAgICAgICAgICAgeSA9IFAuX2RlY19mcm9tX3RyaXBsZShyb3VuZGVkLl9zaWduLCAnMTAnLCBjb250ZXh0LnAuRW1heCkKKworICAgICAgICAjIGVyciA9IChyb3VuZGVkIC0gZXhhY3QpIC8gdWxwKHJvdW5kZWQpCisgICAgICAgIHNlbGYubWF4Y3R4LnByZWMgPSBwICogMgorICAgICAgICB0ID0gc2VsZi5tYXhjdHguc3VidHJhY3QoeSwgeCkKKyAgICAgICAgaWYgY29udGV4dC5jLmZsYWdzW0MuQ2xhbXBlZF0gb3IgXAorICAgICAgICAgICBjb250ZXh0LmMuZmxhZ3NbQy5VbmRlcmZsb3ddOgorICAgICAgICAgICAgIyBUaGUgc3RhbmRhcmQgdWxwIGRvZXMgbm90IHdvcmsgaW4gVW5kZXJmbG93IHRlcnJpdG9yeS4KKyAgICAgICAgICAgIHVscCA9IHNlbGYuaGFycmlzb25fdWxwKHkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB1bHAgPSBzZWxmLnN0YW5kYXJkX3VscCh5LCBwKQorICAgICAgICAjIEVycm9yIGluIHVscHMuCisgICAgICAgIGVyciA9IHNlbGYubWF4Y3R4LmRpdmlkZSh0LCB1bHApCisKKyAgICAgICAgZGlyID0gc2VsZi5yb3VuZGluZ19kaXJlY3Rpb24oeCwgY29udGV4dC5wLnJvdW5kaW5nKQorICAgICAgICBpZiBkaXIgPT0gMDoKKyAgICAgICAgICAgIGlmIFAuRGVjaW1hbCgiLTAuNiIpIDwgZXJyIDwgUC5EZWNpbWFsKCIwLjYiKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbGlmIGRpciA9PSAxOiAjIGRpcmVjdGVkLCB1cHdhcmRzCisgICAgICAgICAgICBpZiBQLkRlY2ltYWwoIi0wLjEiKSA8IGVyciA8IFAuRGVjaW1hbCgiMS4xIik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxpZiBkaXIgPT0gLTE6ICMgZGlyZWN0ZWQsIGRvd253YXJkcworICAgICAgICAgICAgaWYgUC5EZWNpbWFsKCItMS4xIikgPCBlcnIgPCBQLkRlY2ltYWwoIjAuMSIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGVsc2U6ICMgUk9VTkRfMDVVUAorICAgICAgICAgICAgaWYgUC5EZWNpbWFsKCItMS4xIikgPCBlcnIgPCBQLkRlY2ltYWwoIjEuMSIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcHJpbnQoInVscDogJXMgIGVycm9yOiAlcyAgZXhhY3Q6ICVzICBjX3JvdW5kZWQ6ICVzIgorICAgICAgICAgICAgICAlICh1bHAsIGVyciwgZXhhY3QsIHJvdW5kZWQpKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBiaW5fcmVzb2x2ZV91bHAoc2VsZiwgdCk6CisgICAgICAgICIiIkNoZWNrIGlmIHJlc3VsdHMgb2YgX2RlY2ltYWwncyBwb3dlciBmdW5jdGlvbiBhcmUgd2l0aGluIHRoZQorICAgICAgICAgICBhbGxvd2VkIHVscCByYW5nZXMuIiIiCisgICAgICAgICMgTmFOcyBhcmUgYmV5b25kIHJlcGFpci4KKyAgICAgICAgaWYgdC5yYy5pc19uYW4oKSBvciB0LnJwLmlzX25hbigpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyAiZXhhY3QiIHJlc3VsdCwgZG91YmxlIHByZWNpc2lvbiwgaGFsZl9ldmVuCisgICAgICAgIHNlbGYubWF4Y3R4LnByZWMgPSBjb250ZXh0LnAucHJlYyAqIDIKKworICAgICAgICBvcDEsIG9wMiA9IHQucG9wWzBdLCB0LnBvcFsxXQorICAgICAgICBpZiB0LmNvbnRleHRmdW5jOgorICAgICAgICAgICAgZXhhY3QgPSBnZXRhdHRyKHNlbGYubWF4Y3R4LCB0LmZ1bmNuYW1lKShvcDEsIG9wMikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4YWN0ID0gZ2V0YXR0cihvcDEsIHQuZnVuY25hbWUpKG9wMiwgY29udGV4dD1zZWxmLm1heGN0eCkKKworICAgICAgICAjIF9kZWNpbWFsJ3Mgcm91bmRlZCByZXN1bHQKKyAgICAgICAgcm91bmRlZCA9IFAuRGVjaW1hbCh0LmNyZXN1bHRzWzBdKQorCisgICAgICAgIHNlbGYudWxwZGlmZiArPSAxCisgICAgICAgIHJldHVybiBzZWxmLmNoZWNrX3VscGRpZmYoZXhhY3QsIHJvdW5kZWQpCisKKyAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENvcnJlY3Qgcm91bmRpbmcgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBkZWYgcmVzb2x2ZV91bmRlcmZsb3coc2VsZiwgdCk6CisgICAgICAgICIiIkluIGV4dHJlbWVseSByYXJlIGNhc2VzIHdoZXJlIHRoZSBpbmZpbml0ZSBwcmVjaXNpb24gcmVzdWx0IGlzIGp1c3QKKyAgICAgICAgICAgYmVsb3cgZXRpbnksIGNkZWNpbWFsIGRvZXMgbm90IHNldCBTdWJub3JtYWwvVW5kZXJmbG93LiBFeGFtcGxlOgorCisgICAgICAgICAgIHNldGNvbnRleHQoQ29udGV4dChwcmVjPTIxLCByb3VuZGluZz1ST1VORF9VUCwgRW1pbj0tNTUsIEVtYXg9ODUpKQorICAgICAgICAgICBEZWNpbWFsKCIxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIgorICAgICAgICAgICAgICAgICAgICIwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIgorICAgICAgICAgICAgICAgICAgICIwMDAwMDAwMDAwMDAwMDI1IikubG4oKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgdC5jcmVzdWx0cyAhPSB0LnByZXN1bHRzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlICMgUmVzdWx0cyBtdXN0IGJlIGlkZW50aWNhbC4KKyAgICAgICAgaWYgY29udGV4dC5jLmZsYWdzW0MuUm91bmRlZF0gYW5kIFwKKyAgICAgICAgICAgY29udGV4dC5jLmZsYWdzW0MuSW5leGFjdF0gYW5kIFwKKyAgICAgICAgICAgY29udGV4dC5wLmZsYWdzW1AuUm91bmRlZF0gYW5kIFwKKyAgICAgICAgICAgY29udGV4dC5wLmZsYWdzW1AuSW5leGFjdF06CisgICAgICAgICAgICByZXR1cm4gVHJ1ZSAjIFN1Ym5vcm1hbC9VbmRlcmZsb3cgbWF5IGJlIG1pc3NpbmcuCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGV4cChzZWxmLCB0KToKKyAgICAgICAgIiIiUmVzb2x2ZSBVbmRlcmZsb3cgb3IgVUxQIGRpZmZlcmVuY2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnJlc29sdmVfdW5kZXJmbG93KHQpCisKKyAgICBkZWYgbG9nMTAoc2VsZiwgdCk6CisgICAgICAgICIiIlJlc29sdmUgVW5kZXJmbG93IG9yIFVMUCBkaWZmZXJlbmNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5yZXNvbHZlX3VuZGVyZmxvdyh0KQorCisgICAgZGVmIGxuKHNlbGYsIHQpOgorICAgICAgICAiIiJSZXNvbHZlIFVuZGVyZmxvdyBvciBVTFAgZGlmZmVyZW5jZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucmVzb2x2ZV91bmRlcmZsb3codCkKKworICAgIGRlZiBfX3Bvd19fKHNlbGYsIHQpOgorICAgICAgICAiIiJBbHdheXMgY2FsbHMgdGhlIHJlc29sdmUgZnVuY3Rpb24uIEMuRGVjaW1hbCBkb2VzIG5vdCBoYXZlIGNvcnJlY3QKKyAgICAgICAgICAgcm91bmRpbmcgZm9yIHRoZSBwb3dlciBmdW5jdGlvbi4iIiIKKyAgICAgICAgaWYgY29udGV4dC5jLmZsYWdzW0MuUm91bmRlZF0gYW5kIFwKKyAgICAgICAgICAgY29udGV4dC5jLmZsYWdzW0MuSW5leGFjdF0gYW5kIFwKKyAgICAgICAgICAgY29udGV4dC5wLmZsYWdzW1AuUm91bmRlZF0gYW5kIFwKKyAgICAgICAgICAgY29udGV4dC5wLmZsYWdzW1AuSW5leGFjdF06CisgICAgICAgICAgICByZXR1cm4gc2VsZi5iaW5fcmVzb2x2ZV91bHAodCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIHBvd2VyID0gX19ycG93X18gPSBfX3Bvd19fCisKKyAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgVGVjaG5pY2FsaXRpZXMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBkZWYgX19mbG9hdF9fKHNlbGYsIHQpOgorICAgICAgICAiIiJOYU4gY29tcGFyaXNvbiBpbiB0aGUgdmVyaWZ5KCkgZnVuY3Rpb24gb2J2aW91c2x5IGdpdmVzIGFuCisgICAgICAgICAgIGluY29ycmVjdCBhbnN3ZXI6ICBuYW4gPT0gbmFuIC0+IEZhbHNlIiIiCisgICAgICAgIGlmIHQuY29wWzBdLmlzX25hbigpIGFuZCB0LnBvcFswXS5pc19uYW4oKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIF9fY29tcGxleF9fID0gX19mbG9hdF9fCisKKyAgICBkZWYgX19yYWRkX18oc2VsZiwgdCk6CisgICAgICAgICIiImRlY2ltYWwucHkgZ2l2ZXMgcHJlY2VkZW5jZSB0byB0aGUgZmlyc3QgTmFOOyB0aGlzIGlzCisgICAgICAgICAgIG5vdCBpbXBvcnRhbnQsIGFzIF9fcmFkZF9fIHdpbGwgbm90IGJlIGNhbGxlZCBmb3IKKyAgICAgICAgICAgdHdvIGRlY2ltYWwgYXJndW1lbnRzLiIiIgorICAgICAgICBpZiB0LnJjLmlzX25hbigpIGFuZCB0LnJwLmlzX25hbigpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgX19ybXVsX18gPSBfX3JhZGRfXworCisgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgVmFyaW91cyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIF9fcm91bmRfXyhzZWxmLCB0KToKKyAgICAgICAgIiIiRXhjZXB0aW9uOiBEZWNpbWFsKCcxJykuX19yb3VuZF9fKC0xMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDApCisgICAgICAgICAgIFNob3VsZCBpdCByZWFsbHkgYmUgSW52YWxpZE9wZXJhdGlvbj8iIiIKKyAgICAgICAgaWYgdC5yYyBpcyBOb25lIGFuZCB0LnJwLmlzX25hbigpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKK3NoYW5kbGVyID0gU2tpcEhhbmRsZXIoKQorZGVmIHNraXBfZXJyb3IodCk6CisgICAgcmV0dXJuIGdldGF0dHIoc2hhbmRsZXIsIHQuZnVuY25hbWUsIHNoYW5kbGVyLmRlZmF1bHQpKHQpCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgIEhhbmRsaW5nIHZlcmlmaWNhdGlvbiBlcnJvcnMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitjbGFzcyBWZXJpZnlFcnJvcihFeGNlcHRpb24pOgorICAgICIiIlZlcmlmaWNhdGlvbiBmYWlsZWQuIiIiCisgICAgcGFzcworCitkZWYgZnVuY3Rpb25fYXNfc3RyaW5nKHQpOgorICAgIGlmIHQuY29udGV4dGZ1bmM6CisgICAgICAgIGNhcmdzID0gdC5jb3AKKyAgICAgICAgcGFyZ3MgPSB0LnBvcAorICAgICAgICBjZnVuYyA9ICJjX2Z1bmM6ICVzKCIgJSB0LmZ1bmNuYW1lCisgICAgICAgIHBmdW5jID0gInBfZnVuYzogJXMoIiAlIHQuZnVuY25hbWUKKyAgICBlbHNlOgorICAgICAgICBjc2VsZiwgY2FyZ3MgPSB0LmNvcFswXSwgdC5jb3BbMTpdCisgICAgICAgIHBzZWxmLCBwYXJncyA9IHQucG9wWzBdLCB0LnBvcFsxOl0KKyAgICAgICAgY2Z1bmMgPSAiY19mdW5jOiAlcy4lcygiICUgKHJlcHIoY3NlbGYpLCB0LmZ1bmNuYW1lKQorICAgICAgICBwZnVuYyA9ICJwX2Z1bmM6ICVzLiVzKCIgJSAocmVwcihwc2VsZiksIHQuZnVuY25hbWUpCisKKyAgICBlcnIgPSBjZnVuYworICAgIGZvciBhcmcgaW4gY2FyZ3M6CisgICAgICAgIGVyciArPSAiJXMsICIgJSByZXByKGFyZykKKyAgICBlcnIgPSBlcnIucnN0cmlwKCIsICIpCisgICAgZXJyICs9ICIpXG4iCisKKyAgICBlcnIgKz0gcGZ1bmMKKyAgICBmb3IgYXJnIGluIHBhcmdzOgorICAgICAgICBlcnIgKz0gIiVzLCAiICUgcmVwcihhcmcpCisgICAgZXJyID0gZXJyLnJzdHJpcCgiLCAiKQorICAgIGVyciArPSAiKSIKKworICAgIHJldHVybiBlcnIKKworZGVmIHJhaXNlX2Vycm9yKHQpOgorICAgIGdsb2JhbCBFWElUX1NUQVRVUworCisgICAgaWYgc2tpcF9lcnJvcih0KToKKyAgICAgICAgcmV0dXJuCisgICAgRVhJVF9TVEFUVVMgPSAxCisKKyAgICBlcnIgPSAiRXJyb3IgaW4gJXM6XG5cbiIgJSB0LmZ1bmNuYW1lCisgICAgZXJyICs9ICJpbnB1dCBvcGVyYW5kczogJXNcblxuIiAlICh0Lm9wLCkKKyAgICBlcnIgKz0gZnVuY3Rpb25fYXNfc3RyaW5nKHQpCisgICAgZXJyICs9ICJcblxuY19yZXN1bHQ6ICVzXG5wX3Jlc3VsdDogJXNcblxuIiAlICh0LmNyZXN1bHRzLCB0LnByZXN1bHRzKQorICAgIGVyciArPSAiY19leGNlcHRpb25zOiAlc1xucF9leGNlcHRpb25zOiAlc1xuXG4iICUgKHQuY2V4LCB0LnBleCkKKyAgICBlcnIgKz0gIiVzXG5cbiIgJSBzdHIodC5jb250ZXh0KQorCisgICAgcmFpc2UgVmVyaWZ5RXJyb3IoZXJyKQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgIE1haW4gdGVzdGluZyBmdW5jdGlvbnMKKyMKKyMgIFRoZSBwcm9jZWR1cmUgaXMgYWx3YXlzICh0IGlzIHRoZSBUZXN0U2V0KToKKyMKKyMgICBjb252ZXJ0KHQpIC0+IEluaXRpYWxpemUgdGhlIFRlc3RTZXQgYXMgbmVjZXNzYXJ5LgorIworIyAgICAgICAgICAgICAgICAgUmV0dXJuIDAgZm9yIGVhcmx5IGFib3J0aW9uIChlLmcuIGlmIGEgVHlwZUVycm9yCisjICAgICAgICAgICAgICAgICBvY2N1cnMgZHVyaW5nIGNvbnZlcnNpb24sIHRoZXJlIGlzIG5vdGhpbmcgdG8gdGVzdCkuCisjCisjICAgICAgICAgICAgICAgICBSZXR1cm4gMSBmb3IgY29udGludWluZyB3aXRoIHRoZSB0ZXN0IGNhc2UuCisjCisjICAgY2FsbGZ1bmNzKHQpIC0+IENhbGwgdGhlIHJlbGV2YW50IGZ1bmN0aW9uIGZvciBlYWNoIGltcGxlbWVudGF0aW9uCisjICAgICAgICAgICAgICAgICAgIGFuZCByZWNvcmQgdGhlIHJlc3VsdHMgaW4gdGhlIFRlc3RTZXQuCisjCisjICAgdmVyaWZ5KHQpIC0+IFZlcmlmeSB0aGUgcmVzdWx0cy4gSWYgdmVyaWZpY2F0aW9uIGZhaWxzLCBkZXRhaWxzCisjICAgICAgICAgICAgICAgIGFyZSBwcmludGVkIHRvIHN0ZG91dC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZWYgY29udmVydCh0LCBjb252c3RyPVRydWUpOgorICAgICIiIiB0IGlzIHRoZSB0ZXN0c2V0LiBBdCB0aGlzIHN0YWdlIHRoZSB0ZXN0c2V0IGNvbnRhaW5zIGEgdHVwbGUgb2YKKyAgICAgICAgb3BlcmFuZHMgdC5vcCBvZiB2YXJpb3VzIHR5cGVzLiBGb3IgZGVjaW1hbCBtZXRob2RzIHRoZSBmaXJzdAorICAgICAgICBvcGVyYW5kIChzZWxmKSBpcyBhbHdheXMgY29udmVydGVkIHRvIERlY2ltYWwuIElmICdjb252c3RyJyBpcworICAgICAgICB0cnVlLCBzdHJpbmcgb3BlcmFuZHMgYXJlIGNvbnZlcnRlZCBhcyB3ZWxsLgorCisgICAgICAgIENvbnRleHQgb3BlcmFuZHMgYXJlIG9mIHR5cGUgZGVjY2hlY2suQ29udGV4dCwgcm91bmRpbmcgbW9kZQorICAgICAgICBvcGVyYW5kcyBhcmUgZ2l2ZW4gYXMgYSB0dXBsZSAoQy5yb3VuZGluZywgUC5yb3VuZGluZykuCisKKyAgICAgICAgT3RoZXIgdHlwZXMgKGZsb2F0LCBpbnQsIGV0Yy4pIGFyZSBsZWZ0IHVuY2hhbmdlZC4KKyAgICAiIiIKKyAgICBmb3IgaSwgb3AgaW4gZW51bWVyYXRlKHQub3ApOgorCisgICAgICAgIGNvbnRleHQuY2xlYXJfc3RhdHVzKCkKKworICAgICAgICBpZiBub3QgdC5jb250ZXh0ZnVuYyBhbmQgaSA9PSAwIG9yIFwKKyAgICAgICAgICAgY29udnN0ciBhbmQgaXNpbnN0YW5jZShvcCwgc3RyKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjID0gQy5EZWNpbWFsKG9wKQorICAgICAgICAgICAgICAgIGNleCA9IE5vbmUKKyAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgIGMgPSBOb25lCisgICAgICAgICAgICAgICAgY2V4ID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHAgPSBSZXN0cmljdGVkRGVjaW1hbChvcCkKKyAgICAgICAgICAgICAgICBwZXggPSBOb25lCisgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICBwID0gTm9uZQorICAgICAgICAgICAgICAgIHBleCA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgIHQuY29wLmFwcGVuZChjKQorICAgICAgICAgICAgdC5jZXguYXBwZW5kKGNleCkKKyAgICAgICAgICAgIHQucG9wLmFwcGVuZChwKQorICAgICAgICAgICAgdC5wZXguYXBwZW5kKHBleCkKKworICAgICAgICAgICAgaWYgY2V4IGlzIHBleDoKKyAgICAgICAgICAgICAgICBpZiBzdHIoYykgIT0gc3RyKHApIG9yIG5vdCBjb250ZXh0LmFzc2VydF9lcV9zdGF0dXMoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2VfZXJyb3IodCkKKyAgICAgICAgICAgICAgICBpZiBjZXggYW5kIHBleDoKKyAgICAgICAgICAgICAgICAgICAgIyBub3RoaW5nIHRvIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2VfZXJyb3IodCkKKworICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob3AsIENvbnRleHQpOgorICAgICAgICAgICAgdC5jb250ZXh0ID0gb3AKKyAgICAgICAgICAgIHQuY29wLmFwcGVuZChvcC5jKQorICAgICAgICAgICAgdC5wb3AuYXBwZW5kKG9wLnApCisKKyAgICAgICAgZWxpZiBvcCBpbiBSb3VuZE1vZGVzOgorICAgICAgICAgICAgdC5jb3AuYXBwZW5kKG9wWzBdKQorICAgICAgICAgICAgdC5wb3AuYXBwZW5kKG9wWzFdKQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0LmNvcC5hcHBlbmQob3ApCisgICAgICAgICAgICB0LnBvcC5hcHBlbmQob3ApCisKKyAgICByZXR1cm4gMQorCitkZWYgY2FsbGZ1bmNzKHQpOgorICAgICIiIiB0IGlzIHRoZSB0ZXN0c2V0LiBBdCB0aGlzIHN0YWdlIHRoZSB0ZXN0c2V0IGNvbnRhaW5zIG9wZXJhbmQgbGlzdHMKKyAgICAgICAgdC5jb3AgYW5kIHQucG9wIGZvciB0aGUgQyBhbmQgUHl0aG9uIHZlcnNpb25zIG9mIGRlY2ltYWwuCisgICAgICAgIEZvciBEZWNpbWFsIG1ldGhvZHMsIHRoZSBmaXJzdCBvcGVyYW5kcyBhcmUgb2YgdHlwZSBDLkRlY2ltYWwgYW5kCisgICAgICAgIFAuRGVjaW1hbCByZXNwZWN0aXZlbHkuIFRoZSByZW1haW5pbmcgb3BlcmFuZHMgY2FuIGhhdmUgdmFyaW91cyB0eXBlcy4KKyAgICAgICAgRm9yIENvbnRleHQgbWV0aG9kcywgYWxsIG9wZXJhbmRzIGNhbiBoYXZlIGFueSB0eXBlLgorCisgICAgICAgIHQucmMgYW5kIHQucnAgYXJlIHRoZSByZXN1bHRzIG9mIHRoZSBvcGVyYXRpb24uCisgICAgIiIiCisgICAgY29udGV4dC5jbGVhcl9zdGF0dXMoKQorCisgICAgdHJ5OgorICAgICAgICBpZiB0LmNvbnRleHRmdW5jOgorICAgICAgICAgICAgY2FyZ3MgPSB0LmNvcAorICAgICAgICAgICAgdC5yYyA9IGdldGF0dHIoY29udGV4dC5jLCB0LmZ1bmNuYW1lKSgqY2FyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjc2VsZiA9IHQuY29wWzBdCisgICAgICAgICAgICBjYXJncyA9IHQuY29wWzE6XQorICAgICAgICAgICAgdC5yYyA9IGdldGF0dHIoY3NlbGYsIHQuZnVuY25hbWUpKCpjYXJncykKKyAgICAgICAgdC5jZXguYXBwZW5kKE5vbmUpCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIE1lbW9yeUVycm9yKSBhcyBlOgorICAgICAgICB0LnJjID0gTm9uZQorICAgICAgICB0LmNleC5hcHBlbmQoZS5fX2NsYXNzX18pCisKKyAgICB0cnk6CisgICAgICAgIGlmIHQuY29udGV4dGZ1bmM6CisgICAgICAgICAgICBwYXJncyA9IHQucG9wCisgICAgICAgICAgICB0LnJwID0gZ2V0YXR0cihjb250ZXh0LnAsIHQuZnVuY25hbWUpKCpwYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBzZWxmID0gdC5wb3BbMF0KKyAgICAgICAgICAgIHBhcmdzID0gdC5wb3BbMTpdCisgICAgICAgICAgICB0LnJwID0gZ2V0YXR0cihwc2VsZiwgdC5mdW5jbmFtZSkoKnBhcmdzKQorICAgICAgICB0LnBleC5hcHBlbmQoTm9uZSkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgTWVtb3J5RXJyb3IpIGFzIGU6CisgICAgICAgIHQucnAgPSBOb25lCisgICAgICAgIHQucGV4LmFwcGVuZChlLl9fY2xhc3NfXykKKworZGVmIHZlcmlmeSh0LCBzdGF0KToKKyAgICAiIiIgdCBpcyB0aGUgdGVzdHNldC4gQXQgdGhpcyBzdGFnZSB0aGUgdGVzdHNldCBjb250YWlucyB0aGUgZm9sbG93aW5nCisgICAgICAgIHR1cGxlczoKKworICAgICAgICAgICAgdC5vcDogb3JpZ2luYWwgb3BlcmFuZHMKKyAgICAgICAgICAgIHQuY29wOiBDLkRlY2ltYWwgb3BlcmFuZHMgKHNlZSBjb252ZXJ0IGZvciBkZXRhaWxzKQorICAgICAgICAgICAgdC5wb3A6IFAuRGVjaW1hbCBvcGVyYW5kcyAoc2VlIGNvbnZlcnQgZm9yIGRldGFpbHMpCisgICAgICAgICAgICB0LnJjOiBDIHJlc3VsdAorICAgICAgICAgICAgdC5ycDogUHl0aG9uIHJlc3VsdAorCisgICAgICAgIHQucmMgYW5kIHQucnAgY2FuIGhhdmUgdmFyaW91cyB0eXBlcy4KKyAgICAiIiIKKyAgICB0LmNyZXN1bHRzLmFwcGVuZChzdHIodC5yYykpCisgICAgdC5wcmVzdWx0cy5hcHBlbmQoc3RyKHQucnApKQorICAgIGlmIGlzaW5zdGFuY2UodC5yYywgQy5EZWNpbWFsKSBhbmQgaXNpbnN0YW5jZSh0LnJwLCBQLkRlY2ltYWwpOgorICAgICAgICAjIEdlbmVyYWwgY2FzZTogYm90aCByZXN1bHRzIGFyZSBEZWNpbWFscy4KKyAgICAgICAgdC5jcmVzdWx0cy5hcHBlbmQodC5yYy50b19lbmdfc3RyaW5nKCkpCisgICAgICAgIHQuY3Jlc3VsdHMuYXBwZW5kKHQucmMuYXNfdHVwbGUoKSkKKyAgICAgICAgdC5jcmVzdWx0cy5hcHBlbmQoc3RyKHQucmMuaW1hZykpCisgICAgICAgIHQuY3Jlc3VsdHMuYXBwZW5kKHN0cih0LnJjLnJlYWwpKQorICAgICAgICB0LnByZXN1bHRzLmFwcGVuZCh0LnJwLnRvX2VuZ19zdHJpbmcoKSkKKyAgICAgICAgdC5wcmVzdWx0cy5hcHBlbmQodC5ycC5hc190dXBsZSgpKQorICAgICAgICB0LnByZXN1bHRzLmFwcGVuZChzdHIodC5ycC5pbWFnKSkKKyAgICAgICAgdC5wcmVzdWx0cy5hcHBlbmQoc3RyKHQucnAucmVhbCkpCisKKyAgICAgICAgbmMgPSB0LnJjLm51bWJlcl9jbGFzcygpLmxzdHJpcCgnKy1zJykKKyAgICAgICAgc3RhdFtuY10gKz0gMQorICAgIGVsc2U6CisgICAgICAgICMgUmVzdWx0cyBmcm9tIGUuZy4gX19kaXZtb2RfXyBjYW4gb25seSBiZSBjb21wYXJlZCBhcyBzdHJpbmdzLgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0LnJjLCB0dXBsZSkgYW5kIG5vdCBpc2luc3RhbmNlKHQucnAsIHR1cGxlKToKKyAgICAgICAgICAgIGlmIHQucmMgIT0gdC5ycDoKKyAgICAgICAgICAgICAgICByYWlzZV9lcnJvcih0KQorICAgICAgICBzdGF0W3R5cGUodC5yYykuX19uYW1lX19dICs9IDEKKworICAgICMgVGhlIHJldHVybiB2YWx1ZSBsaXN0cyBtdXN0IGJlIGVxdWFsLgorICAgIGlmIHQuY3Jlc3VsdHMgIT0gdC5wcmVzdWx0czoKKyAgICAgICAgcmFpc2VfZXJyb3IodCkKKyAgICAjIFRoZSBQeXRob24gZXhjZXB0aW9uIGxpc3RzIChUeXBlRXJyb3IsIGV0Yy4pIG11c3QgYmUgZXF1YWwuCisgICAgaWYgdC5jZXggIT0gdC5wZXg6CisgICAgICAgIHJhaXNlX2Vycm9yKHQpCisgICAgIyBUaGUgY29udGV4dCBmbGFncyBtdXN0IGJlIGVxdWFsLgorICAgIGlmIG5vdCB0LmNvbnRleHQuYXNzZXJ0X2VxX3N0YXR1cygpOgorICAgICAgICByYWlzZV9lcnJvcih0KQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4gdGVzdCBsb29wcworIworIyAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RmdW5jKSAtPgorIworIyAgICAgTG9vcCB0aHJvdWdoIHZhcmlvdXMgY29udGV4dCBzZXR0aW5ncy4gVGhlIGRlZ3JlZSBvZgorIyAgICAgdGhvcm91Z2huZXNzIGlzIGRldGVybWluZWQgYnkgJ3Rlc3RzcGVjJy4gRm9yIGVhY2gKKyMgICAgIHNldHRpbmcsIGNhbGwgJ3Rlc3RmdW5jJy4gR2VuZXJhbGx5LCAndGVzdGZ1bmMnIGl0c2VsZgorIyAgICAgYSBsb29wLCBpdGVyYXRpbmcgdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMgZ2VuZXJhdGVkCisjICAgICBieSB0aGUgZnVuY3Rpb25zIGluIHJhbmRkZWMucHkuCisjCisjICB0ZXN0X24tYXJ5KG1ldGhvZCwgcHJlYywgZXhwX3JhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpIC0+CisjCisjICAgICAndGVzdF91bmFyeScsICd0ZXN0X2JpbmFyeScgYW5kICd0ZXN0X3Rlcm5hcnknIGFyZSB0aGUKKyMgICAgIG1haW4gdGVzdCBmdW5jdGlvbnMgcGFzc2VkIHRvICd0ZXN0X21ldGhvZCcuIFRoZXkgZGVhbAorIyAgICAgd2l0aCB0aGUgcmVndWxhciBjYXNlcy4gVGhlIHRob3JvdWdobmVzcyBvZiB0ZXN0aW5nIGlzCisjICAgICBkZXRlcm1pbmVkIGJ5ICdpdHInLgorIworIyAgICAgJ3ByZWMnLCAnZXhwX3JhbmdlJyBhbmQgJ3Jlc3RyaWN0ZWRfcmFuZ2UnIGFyZSBwYXNzZWQKKyMgICAgIHRvIHRoZSB0ZXN0LWdlbmVyYXRpbmcgZnVuY3Rpb25zIGFuZCBsaW1pdCB0aGUgZ2VuZXJhdGVkCisjICAgICB2YWx1ZXMuIEluIHNvbWUgY2FzZXMsIGZvciByZWFzb25hYmxlIHJ1biB0aW1lcyBhCisjICAgICBtYXhpbXVtIGV4cG9uZW50IG9mIDk5OTkgaXMgcmVxdWlyZWQuCisjCisjICAgICBUaGUgJ3N0YXQnIHBhcmFtZXRlciBpcyBwYXNzZWQgZG93biB0byB0aGUgJ3ZlcmlmeScKKyMgICAgIGZ1bmN0aW9uLCB3aGljaCByZWNvcmRzIHN0YXRpc3RpY3MgZm9yIHRoZSByZXN1bHQgdmFsdWVzLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBsb2coZm10LCBhcmdzPU5vbmUpOgorICAgIGlmIGFyZ3M6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJycuam9pbigoZm10LCAnXG4nKSkgJSBhcmdzKQorICAgIGVsc2U6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJycuam9pbigoc3RyKGZtdCksICdcbicpKSkKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKworZGVmIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0ZnVuYyk6CisgICAgIiIiSXRlcmF0ZSBhIHRlc3QgZnVuY3Rpb24gdGhyb3VnaCBtYW55IGNvbnRleHQgc2V0dGluZ3MuIiIiCisgICAgbG9nKCJ0ZXN0aW5nICVzIC4uLiIsIG1ldGhvZCkKKyAgICBzdGF0ID0gZGVmYXVsdGRpY3QoaW50KQorICAgIGZvciBzcGVjIGluIHRlc3RzcGVjczoKKyAgICAgICAgaWYgJ3NhbXBsZXMnIGluIHNwZWM6CisgICAgICAgICAgICBzcGVjWydwcmVjJ10gPSBzb3J0ZWQocmFuZG9tLnNhbXBsZShyYW5nZSgxLCAxMDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNbJ3NhbXBsZXMnXSkpCisgICAgICAgIGZvciBwcmVjIGluIHNwZWNbJ3ByZWMnXToKKyAgICAgICAgICAgIGNvbnRleHQucHJlYyA9IHByZWMKKyAgICAgICAgICAgIGZvciBleHB0cyBpbiBzcGVjWydleHB0cyddOgorICAgICAgICAgICAgICAgIGVtaW4sIGVtYXggPSBleHB0cworICAgICAgICAgICAgICAgIGlmIGVtaW4gPT0gJ3JhbmQnOgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LkVtaW4gPSByYW5kb20ucmFuZHJhbmdlKC0xMDAwLCAwKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LkVtYXggPSByYW5kb20ucmFuZHJhbmdlKHByZWMsIDEwMDApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5FbWluLCBjb250ZXh0LkVtYXggPSBlbWluLCBlbWF4CisgICAgICAgICAgICAgICAgaWYgcHJlYyA+IGNvbnRleHQuRW1heDogY29udGludWUKKyAgICAgICAgICAgICAgICBsb2coIiAgICBwcmVjOiAlZCAgZW1pbjogJWQgIGVtYXg6ICVkIiwKKyAgICAgICAgICAgICAgICAgICAgKGNvbnRleHQucHJlYywgY29udGV4dC5FbWluLCBjb250ZXh0LkVtYXgpKQorICAgICAgICAgICAgICAgIHJlc3RyX3JhbmdlID0gOTk5OSBpZiBjb250ZXh0LkVtYXggPiA5OTk5IGVsc2UgY29udGV4dC5FbWF4Kzk5CisgICAgICAgICAgICAgICAgZm9yIHJvdW5kaW5nIGluIHNvcnRlZChSb3VuZE1hcCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNhcGl0YWxzID0gcmFuZG9tLnJhbmRyYW5nZSgyKQorICAgICAgICAgICAgICAgICAgICBpZiBzcGVjWydjbGFtcCddID09ICdyYW5kJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY2xhbXAgPSByYW5kb20ucmFuZHJhbmdlKDIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNsYW1wID0gc3BlY1snY2xhbXAnXQorICAgICAgICAgICAgICAgICAgICBleHByYW5nZSA9IGNvbnRleHQuYy5FbWF4CisgICAgICAgICAgICAgICAgICAgIHRlc3RmdW5jKG1ldGhvZCwgcHJlYywgZXhwcmFuZ2UsIHJlc3RyX3JhbmdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjWydpdGVyJ10sIHN0YXQpCisgICAgbG9nKCIgICAgcmVzdWx0IHR5cGVzOiAlcyIgJSBzb3J0ZWQoW3QgZm9yIHQgaW4gc3RhdC5pdGVtcygpXSkpCisKK2RlZiB0ZXN0X3VuYXJ5KG1ldGhvZCwgcHJlYywgZXhwX3JhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpOgorICAgICIiIkl0ZXJhdGUgYSB1bmFyeSBmdW5jdGlvbiB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcy4iIiIKKyAgICBpZiBtZXRob2QgaW4gVW5hcnlSZXN0cmljdGVkOgorICAgICAgICBleHBfcmFuZ2UgPSByZXN0cmljdGVkX3JhbmdlCisgICAgZm9yIG9wIGluIGFsbF91bmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgb3ApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbG9nKGVycikKKworZGVmIHRlc3RfYmluYXJ5KG1ldGhvZCwgcHJlYywgZXhwX3JhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpOgorICAgICIiIkl0ZXJhdGUgYSBiaW5hcnkgZnVuY3Rpb24gdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMuIiIiCisgICAgaWYgbWV0aG9kIGluIEJpbmFyeVJlc3RyaWN0ZWQ6CisgICAgICAgIGV4cF9yYW5nZSA9IHJlc3RyaWN0ZWRfcmFuZ2UKKyAgICBmb3Igb3AgaW4gYWxsX2JpbmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgb3ApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbG9nKGVycikKKworZGVmIHRlc3RfdGVybmFyeShtZXRob2QsIHByZWMsIGV4cF9yYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIGEgdGVybmFyeSBmdW5jdGlvbiB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcy4iIiIKKyAgICBpZiBtZXRob2QgaW4gVGVybmFyeVJlc3RyaWN0ZWQ6CisgICAgICAgIGV4cF9yYW5nZSA9IHJlc3RyaWN0ZWRfcmFuZ2UKKyAgICBmb3Igb3AgaW4gYWxsX3Rlcm5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIG9wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxvZyhlcnIpCisKK2RlZiB0ZXN0X2Zvcm1hdChtZXRob2QsIHByZWMsIGV4cF9yYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIHRoZSBfX2Zvcm1hdF9fIG1ldGhvZCB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcy4iIiIKKyAgICBmb3Igb3AgaW4gYWxsX3VuYXJ5KHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgZm10MSA9IHJhbmRfZm9ybWF0KGNocihyYW5kb20ucmFuZHJhbmdlKDMyLCAxMjgpKSwgJ0VlR2duJykKKyAgICAgICAgZm10MiA9IHJhbmRfbG9jYWxlKCkKKyAgICAgICAgZm9yIGZtdCBpbiAoZm10MSwgZm10Mik6CisgICAgICAgICAgICBmbXRvcCA9IChvcFswXSwgZm10KQorICAgICAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBmbXRvcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgY29udmVydCh0LCBjb252c3RyPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nKGVycikKKyAgICBmb3Igb3AgaW4gYWxsX3VuYXJ5KHByZWMsIDk5OTksIGl0cik6CisgICAgICAgIGZtdDEgPSByYW5kX2Zvcm1hdChjaHIocmFuZG9tLnJhbmRyYW5nZSgzMiwgMTI4KSksICdGZiUnKQorICAgICAgICBmbXQyID0gcmFuZF9sb2NhbGUoKQorICAgICAgICBmb3IgZm10IGluIChmbXQxLCBmbXQyKToKKyAgICAgICAgICAgIGZtdG9wID0gKG9wWzBdLCBmbXQpCisgICAgICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIGZtdG9wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQsIGNvbnZzdHI9RmFsc2UpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgdGVzdF9yb3VuZChtZXRob2QsIHByZWMsIGV4cHJhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpOgorICAgICIiIkl0ZXJhdGUgdGhlIF9fcm91bmRfXyBtZXRob2QgdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMuIiIiCisgICAgZm9yIG9wIGluIGFsbF91bmFyeShwcmVjLCA5OTk5LCBpdHIpOgorICAgICAgICBuID0gcmFuZG9tLnJhbmRyYW5nZSgxMCkKKyAgICAgICAgcm91bmRvcCA9IChvcFswXSwgbikKKyAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCByb3VuZG9wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxvZyhlcnIpCisKK2RlZiB0ZXN0X2Zyb21fZmxvYXQobWV0aG9kLCBwcmVjLCBleHByYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIHRoZSBfX2Zsb2F0X18gbWV0aG9kIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzLiIiIgorICAgIGZvciByb3VuZGluZyBpbiBzb3J0ZWQoUm91bmRNYXApOgorICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICBmID0gcmFuZGZsb2F0KCkKKyAgICAgICAgICAgIG9wID0gKGYsKSBpZiBtZXRob2Quc3RhcnRzd2l0aCgiY29udGV4dC4iKSBlbHNlICgic05hTiIsIGYpCisgICAgICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIG9wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgcmFuZGNvbnRleHQoZXhwcmFuZ2UpOgorICAgIGMgPSBDb250ZXh0KEMuQ29udGV4dCgpLCBQLkNvbnRleHQoKSkKKyAgICBjLkVtYXggPSByYW5kb20ucmFuZHJhbmdlKDEsIGV4cHJhbmdlKzEpCisgICAgYy5FbWluID0gcmFuZG9tLnJhbmRyYW5nZSgtZXhwcmFuZ2UsIDApCisgICAgbWF4cHJlYyA9IDEwMCBpZiBjLkVtYXggPj0gMTAwIGVsc2UgYy5FbWF4CisgICAgYy5wcmVjID0gcmFuZG9tLnJhbmRyYW5nZSgxLCBtYXhwcmVjKzEpCisgICAgYy5jbGFtcCA9IHJhbmRvbS5yYW5kcmFuZ2UoMikKKyAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICByZXR1cm4gYworCitkZWYgdGVzdF9xdWFudGl6ZV9hcGkobWV0aG9kLCBwcmVjLCBleHByYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIHRoZSAncXVhbnRpemUnIG1ldGhvZCB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcywgdXNpbmcKKyAgICAgICB0aGUgb3B0aW9uYWwgYXJndW1lbnRzLiIiIgorICAgIGZvciBvcCBpbiBhbGxfYmluYXJ5KHByZWMsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0cik6CisgICAgICAgIGZvciByb3VuZGluZyBpbiBSb3VuZE1vZGVzOgorICAgICAgICAgICAgYyA9IHJhbmRjb250ZXh0KGV4cHJhbmdlKQorICAgICAgICAgICAgcXVhbnRpemVvcCA9IChvcFswXSwgb3BbMV0sIHJvdW5kaW5nLCBjKQorICAgICAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBxdWFudGl6ZW9wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2coZXJyKQorCisKK2RlZiBjaGVja191bnRlc3RlZChmdW5jZGljdCwgY19jbHMsIHBfY2xzKToKKyAgICAiIiJEZXRlcm1pbmUgdW50ZXN0ZWQsIEMtb25seSBhbmQgUHl0aG9uLW9ubHkgYXR0cmlidXRlcy4KKyAgICAgICBVbmNvbW1lbnQgcHJpbnQgbGluZXMgZm9yIGRlYnVnZ2luZy4iIiIKKyAgICBjX2F0dHIgPSBzZXQoZGlyKGNfY2xzKSkKKyAgICBwX2F0dHIgPSBzZXQoZGlyKHBfY2xzKSkKKyAgICBpbnRlcnNlY3QgPSBjX2F0dHIgJiBwX2F0dHIKKworICAgIGZ1bmNkaWN0WydjX29ubHknXSA9IHR1cGxlKHNvcnRlZChjX2F0dHItaW50ZXJzZWN0KSkKKyAgICBmdW5jZGljdFsncF9vbmx5J10gPSB0dXBsZShzb3J0ZWQocF9hdHRyLWludGVyc2VjdCkpCisKKyAgICB0ZXN0ZWQgPSBzZXQoKQorICAgIGZvciBsc3QgaW4gZnVuY2RpY3QudmFsdWVzKCk6CisgICAgICAgIGZvciB2IGluIGxzdDoKKyAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoImNvbnRleHQuIiwgIiIpIGlmIGNfY2xzID09IEMuQ29udGV4dCBlbHNlIHYKKyAgICAgICAgICAgIHRlc3RlZC5hZGQodikKKworICAgIGZ1bmNkaWN0Wyd1bnRlc3RlZCddID0gdHVwbGUoc29ydGVkKGludGVyc2VjdC10ZXN0ZWQpKQorCisgICAgI2ZvciBrZXkgaW4gKCd1bnRlc3RlZCcsICdjX29ubHknLCAncF9vbmx5Jyk6CisgICAgIyAgICBzID0gJ0NvbnRleHQnIGlmIGNfY2xzID09IEMuQ29udGV4dCBlbHNlICdEZWNpbWFsJworICAgICMgICAgcHJpbnQoIlxuJXMgJXM6XG4lcyIgJSAocywga2V5LCBmdW5jZGljdFtrZXldKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorCisgICAgaW1wb3J0IHRpbWUKKworICAgIHJhbmRzZWVkID0gaW50KHRpbWUudGltZSgpKQorICAgIHJhbmRvbS5zZWVkKHJhbmRzZWVkKQorCisgICAgIyBTZXQgdXAgdGhlIHRlc3RzcGVjcyBsaXN0LiBBIHRlc3RzcGVjIGlzIHNpbXBseSBhIGRpY3Rpb25hcnkKKyAgICAjIHRoYXQgZGV0ZXJtaW5lcyB0aGUgYW1vdW50IG9mIGRpZmZlcmVudCBjb250ZXh0cyB0aGF0ICd0ZXN0X21ldGhvZCcKKyAgICAjIHdpbGwgZ2VuZXJhdGUuCisgICAgYmFzZV9leHB0cyA9IFsoQy5NSU5fRU1JTiwgQy5NQVhfRU1BWCldCisgICAgaWYgQy5NQVhfRU1BWCA9PSA5OTk5OTk5OTk5OTk5OTk5OTk6CisgICAgICAgIGJhc2VfZXhwdHMuYXBwZW5kKCgtOTk5OTk5OTk5LCA5OTk5OTk5OTkpKQorCisgICAgIyBCYXNpYyBjb250ZXh0cy4KKyAgICBiYXNlID0geworICAgICAgICAnZXhwdHMnOiBiYXNlX2V4cHRzLAorICAgICAgICAncHJlYyc6IFtdLAorICAgICAgICAnY2xhbXAnOiAncmFuZCcsCisgICAgICAgICdpdGVyJzogTm9uZSwKKyAgICAgICAgJ3NhbXBsZXMnOiBOb25lLAorICAgIH0KKyAgICAjIENvbnRleHRzIHdpdGggc21hbGwgdmFsdWVzIGZvciBwcmVjLCBlbWluLCBlbWF4LgorICAgIHNtYWxsID0geworICAgICAgICAncHJlYyc6IFsxLCAyLCAzLCA0LCA1XSwKKyAgICAgICAgJ2V4cHRzJzogWygtMSwgMSksICgtMiwgMiksICgtMywgMyksICgtNCwgNCksICgtNSwgNSldLAorICAgICAgICAnY2xhbXAnOiAncmFuZCcsCisgICAgICAgICdpdGVyJzogTm9uZQorICAgIH0KKyAgICAjIElFRUUgaW50ZXJjaGFuZ2UgZm9ybWF0LgorICAgIGllZWUgPSBbCisgICAgICAgICMgREVDSU1BTDMyCisgICAgICAgIHsncHJlYyc6IFs3XSwgJ2V4cHRzJzogWygtOTUsIDk2KV0sICdjbGFtcCc6IDEsICdpdGVyJzogTm9uZX0sCisgICAgICAgICMgREVDSU1BTDY0CisgICAgICAgIHsncHJlYyc6IFsxNl0sICdleHB0cyc6IFsoLTM4MywgMzg0KV0sICdjbGFtcCc6IDEsICdpdGVyJzogTm9uZX0sCisgICAgICAgICMgREVDSU1BTDEyOAorICAgICAgICB7J3ByZWMnOiBbMzRdLCAnZXhwdHMnOiBbKC02MTQzLCA2MTQ0KV0sICdjbGFtcCc6IDEsICdpdGVyJzogTm9uZX0KKyAgICBdCisKKyAgICBpZiAnLS1tZWRpdW0nIGluIHN5cy5hcmd2OgorICAgICAgICBiYXNlWydleHB0cyddLmFwcGVuZCgoJ3JhbmQnLCAncmFuZCcpKQorICAgICAgICAjIDUgcmFuZG9tIHByZWNpc2lvbnMKKyAgICAgICAgYmFzZVsnc2FtcGxlcyddID0gNQorICAgICAgICB0ZXN0c3BlY3MgPSBbc21hbGxdICsgaWVlZSArIFtiYXNlXQorICAgIGlmICctLWxvbmcnIGluIHN5cy5hcmd2OgorICAgICAgICBiYXNlWydleHB0cyddLmFwcGVuZCgoJ3JhbmQnLCAncmFuZCcpKQorICAgICAgICAjIDEwIHJhbmRvbSBwcmVjaXNpb25zCisgICAgICAgIGJhc2VbJ3NhbXBsZXMnXSA9IDEwCisgICAgICAgIHRlc3RzcGVjcyA9IFtzbWFsbF0gKyBpZWVlICsgW2Jhc2VdCisgICAgZWxpZiAnLS1hbGwnIGluIHN5cy5hcmd2OgorICAgICAgICBiYXNlWydleHB0cyddLmFwcGVuZCgoJ3JhbmQnLCAncmFuZCcpKQorICAgICAgICAjIEFsbCBwcmVjaXNpb25zIGluIFsxLCAxMDBdCisgICAgICAgIGJhc2VbJ3NhbXBsZXMnXSA9IDEwMAorICAgICAgICB0ZXN0c3BlY3MgPSBbc21hbGxdICsgaWVlZSArIFtiYXNlXQorICAgIGVsc2U6ICMgLS1zaG9ydAorICAgICAgICByYW5kX2llZWUgPSByYW5kb20uY2hvaWNlKGllZWUpCisgICAgICAgIGJhc2VbJ2l0ZXInXSA9IHNtYWxsWydpdGVyJ10gPSByYW5kX2llZWVbJ2l0ZXInXSA9IDEKKyAgICAgICAgIyAxIHJhbmRvbSBwcmVjaXNpb24gYW5kIGV4cG9uZW50IHBhaXIKKyAgICAgICAgYmFzZVsnc2FtcGxlcyddID0gMQorICAgICAgICBiYXNlWydleHB0cyddID0gW3JhbmRvbS5jaG9pY2UoYmFzZV9leHB0cyldCisgICAgICAgICMgMSByYW5kb20gcHJlY2lzaW9uIGFuZCBleHBvbmVudCBwYWlyCisgICAgICAgIHByZWMgPSByYW5kb20ucmFuZHJhbmdlKDEsIDYpCisgICAgICAgIHNtYWxsWydwcmVjJ10gPSBbcHJlY10KKyAgICAgICAgc21hbGxbJ2V4cHRzJ10gPSBbKC1wcmVjLCBwcmVjKV0KKyAgICAgICAgdGVzdHNwZWNzID0gW3NtYWxsLCByYW5kX2llZWUsIGJhc2VdCisKKyAgICBjaGVja191bnRlc3RlZChGdW5jdGlvbnMsIEMuRGVjaW1hbCwgUC5EZWNpbWFsKQorICAgIGNoZWNrX3VudGVzdGVkKENvbnRleHRGdW5jdGlvbnMsIEMuQ29udGV4dCwgUC5Db250ZXh0KQorCisKKyAgICBsb2coIlxuXG5SYW5kb20gc2VlZDogJWRcblxuIiwgcmFuZHNlZWQpCisKKyAgICAjIERlY2ltYWwgbWV0aG9kczoKKyAgICBmb3IgbWV0aG9kIGluIEZ1bmN0aW9uc1sndW5hcnknXSArIEZ1bmN0aW9uc1sndW5hcnlfY3R4J10gKyBcCisgICAgICAgICAgICAgICAgICBGdW5jdGlvbnNbJ3VuYXJ5X3JuZF9jdHgnXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfdW5hcnkpCisKKyAgICBmb3IgbWV0aG9kIGluIEZ1bmN0aW9uc1snYmluYXJ5J10gKyBGdW5jdGlvbnNbJ2JpbmFyeV9jdHgnXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfYmluYXJ5KQorCisgICAgZm9yIG1ldGhvZCBpbiBGdW5jdGlvbnNbJ3Rlcm5hcnknXSArIEZ1bmN0aW9uc1sndGVybmFyeV9jdHgnXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfdGVybmFyeSkKKworICAgIHRlc3RfbWV0aG9kKCdfX2Zvcm1hdF9fJywgdGVzdHNwZWNzLCB0ZXN0X2Zvcm1hdCkKKyAgICB0ZXN0X21ldGhvZCgnX19yb3VuZF9fJywgdGVzdHNwZWNzLCB0ZXN0X3JvdW5kKQorICAgIHRlc3RfbWV0aG9kKCdmcm9tX2Zsb2F0JywgdGVzdHNwZWNzLCB0ZXN0X2Zyb21fZmxvYXQpCisgICAgdGVzdF9tZXRob2QoJ3F1YW50aXplJywgdGVzdHNwZWNzLCB0ZXN0X3F1YW50aXplX2FwaSkKKworICAgICMgQ29udGV4dCBtZXRob2RzOgorICAgIGZvciBtZXRob2QgaW4gQ29udGV4dEZ1bmN0aW9uc1sndW5hcnknXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfdW5hcnkpCisKKyAgICBmb3IgbWV0aG9kIGluIENvbnRleHRGdW5jdGlvbnNbJ2JpbmFyeSddOgorICAgICAgICB0ZXN0X21ldGhvZChtZXRob2QsIHRlc3RzcGVjcywgdGVzdF9iaW5hcnkpCisKKyAgICBmb3IgbWV0aG9kIGluIENvbnRleHRGdW5jdGlvbnNbJ3Rlcm5hcnknXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfdGVybmFyeSkKKworICAgIHRlc3RfbWV0aG9kKCdjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQnLCB0ZXN0c3BlY3MsIHRlc3RfZnJvbV9mbG9hdCkKKworCisgICAgc3lzLmV4aXQoRVhJVF9TVEFUVVMpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2Zvcm1hdGhlbHBlci5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZm9ybWF0aGVscGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYTJiMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2Zvcm1hdGhlbHBlci5weQpAQCAtMCwwICsxLDM0NCBAQAorIworIyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisjIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisjIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisjIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisjCisKKworIyBHZW5lcmF0ZSBQRVAtMzEwMSBmb3JtYXQgc3RyaW5ncy4KKworCitpbXBvcnQgb3MsIHN5cywgbG9jYWxlLCByYW5kb20KK2ltcG9ydCBwbGF0Zm9ybSwgc3VicHJvY2VzcworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKK2Zyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKKworQyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCitQID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGJsb2NrZWQ9WydfZGVjaW1hbCddKQorCisKK3dpbmRvd3NfbGFuZ19zdHJpbmdzID0gWworICAiY2hpbmVzZSIsICJjaGluZXNlLXNpbXBsaWZpZWQiLCAiY2hpbmVzZS10cmFkaXRpb25hbCIsICJjemVjaCIsICJkYW5pc2giLAorICAiZHV0Y2giLCAiYmVsZ2lhbiIsICJlbmdsaXNoIiwgImF1c3RyYWxpYW4iLCAiY2FuYWRpYW4iLCAiZW5nbGlzaC1ueiIsCisgICJlbmdsaXNoLXVrIiwgImVuZ2xpc2gtdXMiLCAiZmlubmlzaCIsICJmcmVuY2giLCAiZnJlbmNoLWJlbGdpYW4iLAorICAiZnJlbmNoLWNhbmFkaWFuIiwgImZyZW5jaC1zd2lzcyIsICJnZXJtYW4iLCAiZ2VybWFuLWF1c3RyaWFuIiwKKyAgImdlcm1hbi1zd2lzcyIsICJncmVlayIsICJodW5nYXJpYW4iLCAiaWNlbGFuZGljIiwgIml0YWxpYW4iLCAiaXRhbGlhbi1zd2lzcyIsCisgICJqYXBhbmVzZSIsICJrb3JlYW4iLCAibm9yd2VnaWFuIiwgIm5vcndlZ2lhbi1ib2ttYWwiLCAibm9yd2VnaWFuLW55bm9yc2siLAorICAicG9saXNoIiwgInBvcnR1Z3Vlc2UiLCAicG9ydHVndWVzZS1icmF6aWwiLCAicnVzc2lhbiIsICJzbG92YWsiLCAic3BhbmlzaCIsCisgICJzcGFuaXNoLW1leGljYW4iLCAic3BhbmlzaC1tb2Rlcm4iLCAic3dlZGlzaCIsICJ0dXJraXNoIiwKK10KKworcHJlZmVycmVkX2VuY29kaW5nID0geworICAnY3NfQ1onOiAnSVNPODg1OS0yJywKKyAgJ2NzX0NaLmlzbzg4NTkyJzogJ0lTTzg4NTktMicsCisgICdjemVjaCc6ICdJU084ODU5LTInLAorICAnZWVzdGknOiAnSVNPODg1OS0xJywKKyAgJ2VzdG9uaWFuJzogJ0lTTzg4NTktMScsCisgICdldF9FRSc6ICdJU084ODU5LTE1JywKKyAgJ2V0X0VFLklTTy04ODU5LTE1JzogJ0lTTzg4NTktMTUnLAorICAnZXRfRUUuaXNvODg1OTE1JzogJ0lTTzg4NTktMTUnLAorICAnZXRfRUUuaXNvODg1OTEnOiAnSVNPODg1OS0xJywKKyAgJ2ZpX0ZJLmlzbzg4NTkxJzogJ0lTTzg4NTktMScsCisgICdmaV9GSSc6ICdJU084ODU5LTE1JywKKyAgJ2ZpX0ZJQGV1cm8nOiAnSVNPODg1OS0xNScsCisgICdmaV9GSS5pc284ODU5MTVAZXVybyc6ICdJU084ODU5LTE1JywKKyAgJ2Zpbm5pc2gnOiAnSVNPODg1OS0xJywKKyAgJ2x2X0xWJzogJ0lTTzg4NTktMTMnLAorICAnbHZfTFYuaXNvODg1OTEzJzogJ0lTTzg4NTktMTMnLAorICAnbmJfTk8nOiAnSVNPODg1OS0xJywKKyAgJ25iX05PLmlzbzg4NTkxJzogJ0lTTzg4NTktMScsCisgICdib2ttYWwnOiAnSVNPODg1OS0xJywKKyAgJ25uX05PJzogJ0lTTzg4NTktMScsCisgICdubl9OTy5pc284ODU5MSc6ICdJU084ODU5LTEnLAorICAnbm9fTk8nOiAnSVNPODg1OS0xJywKKyAgJ25vcndlZ2lhbic6ICdJU084ODU5LTEnLAorICAnbnlub3Jzayc6ICdJU084ODU5LTEnLAorICAncnVfUlUnOiAnSVNPODg1OS01JywKKyAgJ3J1X1JVLmlzbzg4NTk1JzogJ0lTTzg4NTktNScsCisgICdydXNzaWFuJzogJ0lTTzg4NTktNScsCisgICdydV9SVS5LT0k4LVInOiAnS09JOC1SJywKKyAgJ3J1X1JVLmtvaThyJzogJ0tPSTgtUicsCisgICdydV9SVS5DUDEyNTEnOiAnQ1AxMjUxJywKKyAgJ3J1X1JVLmNwMTI1MSc6ICdDUDEyNTEnLAorICAnc2tfU0snOiAnSVNPODg1OS0yJywKKyAgJ3NrX1NLLmlzbzg4NTkyJzogJ0lTTzg4NTktMicsCisgICdzbG92YWsnOiAnSVNPODg1OS0yJywKKyAgJ3N2X0ZJJzogJ0lTTzg4NTktMScsCisgICdzdl9GSS5pc284ODU5MSc6ICdJU084ODU5LTEnLAorICAnc3ZfRklAZXVybyc6ICdJU084ODU5LTE1JywKKyAgJ3N2X0ZJLmlzbzg4NTkxNUBldXJvJzogJ0lTTzg4NTktMTUnLAorICAndWtfVUEnOiAnS09JOC1VJywKKyAgJ3VrX1VBLmtvaTh1JzogJ0tPSTgtVScKK30KKworaW50ZWdlcnMgPSBbCisgICIiLAorICAiMSIsCisgICIxMiIsCisgICIxMjMiLAorICAiMTIzNCIsCisgICIxMjM0NSIsCisgICIxMjM0NTYiLAorICAiMTIzNDU2NyIsCisgICIxMjM0NTY3OCIsCisgICIxMjM0NTY3ODkiLAorICAiMTIzNDU2Nzg5MCIsCisgICIxMjM0NTY3ODkwMSIsCisgICIxMjM0NTY3ODkwMTIiLAorICAiMTIzNDU2Nzg5MDEyMyIsCisgICIxMjM0NTY3ODkwMTIzNCIsCisgICIxMjM0NTY3ODkwMTIzNDUiLAorICAiMTIzNDU2Nzg5MDEyMzQ1NiIsCisgICIxMjM0NTY3ODkwMTIzNDU2NyIsCisgICIxMjM0NTY3ODkwMTIzNDU2NzgiLAorICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OSIsCisgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MCIsCisgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEiLAorICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMiIsCitdCisKK251bWJlcnMgPSBbCisgICIwIiwgIi0wIiwgIiswIiwKKyAgIjAuMCIsICItMC4wIiwgIiswLjAiLAorICAiMGUwIiwgIi0wZTAiLCAiKzBlMCIsCisgICIuMCIsICItLjAiLAorICAiLjEiLCAiLS4xIiwKKyAgIjEuMSIsICItMS4xIiwKKyAgIjFlMSIsICItMWUxIgorXQorCisjIEdldCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgbG9jYWxlcy4KK2lmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdXaW5kb3dzJzoKKyAgICBsb2NhbGVfbGlzdCA9IHdpbmRvd3NfbGFuZ19zdHJpbmdzCitlbHNlOgorICAgIGxvY2FsZV9saXN0ID0gWydDJ10KKyAgICBpZiBvcy5wYXRoLmlzZmlsZSgiL3Zhci9saWIvbG9jYWxlcy9zdXBwb3J0ZWQuZC9sb2NhbCIpOgorICAgICAgICAjIE9uIFVidW50dSwgYGxvY2FsZSAtYWAgZ2l2ZXMgdGhlIHdyb25nIGNhc2UgZm9yIHNvbWUgbG9jYWxlcywKKyAgICAgICAgIyBzbyB3ZSBnZXQgdGhlIGNvcnJlY3QgbmFtZXMgZGlyZWN0bHk6CisgICAgICAgIHdpdGggb3BlbigiL3Zhci9saWIvbG9jYWxlcy9zdXBwb3J0ZWQuZC9sb2NhbCIpIGFzIGY6CisgICAgICAgICAgICBsb2NhbGVfbGlzdCA9IFtsb2Muc3BsaXQoKVswXSBmb3IgbG9jIGluIGYucmVhZGxpbmVzKCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxvYy5zdGFydHN3aXRoKCcjJyldCisgICAgZWxpZiBmaW5kX2V4ZWN1dGFibGUoJ2xvY2FsZScpOgorICAgICAgICBsb2NhbGVfbGlzdCA9IHN1YnByb2Nlc3MuUG9wZW4oWyJsb2NhbGUiLCAiLWEiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuY29tbXVuaWNhdGUoKVswXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2NhbGVfbGlzdCA9IGxvY2FsZV9saXN0LmRlY29kZSgpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAjIFNvbWUgZGlzdHJpYnV0aW9ucyBpbnNpc3Qgb24gdXNpbmcgbGF0aW4tMSBjaGFyYWN0ZXJzCisgICAgICAgICAgICAjIGluIHRoZWlyIGxvY2FsZSBuYW1lcy4KKyAgICAgICAgICAgIGxvY2FsZV9saXN0ID0gbG9jYWxlX2xpc3QuZGVjb2RlKCdsYXRpbi0xJykKKyAgICAgICAgbG9jYWxlX2xpc3QgPSBsb2NhbGVfbGlzdC5zcGxpdCgnXG4nKQordHJ5OgorICAgIGxvY2FsZV9saXN0LnJlbW92ZSgnJykKK2V4Y2VwdCBWYWx1ZUVycm9yOgorICAgIHBhc3MKKworIyBEZWJpYW4KK2lmIG9zLnBhdGguaXNmaWxlKCIvZXRjL2xvY2FsZS5hbGlhcyIpOgorICAgIHdpdGggb3BlbigiL2V0Yy9sb2NhbGUuYWxpYXMiKSBhcyBmOgorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxpbmUgPSBmLnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGxpbmUgPT0gIiI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB4ID0gbGluZS5zcGxpdCgpCisgICAgICAgICAgICBpZiBsZW4oeCkgPT0gMjoKKyAgICAgICAgICAgICAgICBpZiB4WzBdIGluIGxvY2FsZV9saXN0OgorICAgICAgICAgICAgICAgICAgICBsb2NhbGVfbGlzdC5yZW1vdmUoeFswXSkKKworIyBGcmVlQlNECitpZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAnRnJlZUJTRCc6CisgICAgIyBodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS9xdWVyeS1wci5jZ2k/cHI9MTQyMTczCisgICAgIyBlbl9HQi5VUy1BU0NJSSBoYXMgMTYzIGFzIHRoZSBjdXJyZW5jeSBzeW1ib2wuCisgICAgZm9yIGxvYyBpbiBbJ2l0X0NILklTTzg4NTktMScsICdpdF9DSC5JU084ODU5LTE1JywgJ2l0X0NILlVURi04JywKKyAgICAgICAgICAgICAgICAnaXRfSVQuSVNPODg1OS0xJywgJ2l0X0lULklTTzg4NTktMTUnLCAnaXRfSVQuVVRGLTgnLAorICAgICAgICAgICAgICAgICdzbF9TSS5JU084ODU5LTInLCAnc2xfU0kuVVRGLTgnLAorICAgICAgICAgICAgICAgICdlbl9HQi5VUy1BU0NJSSddOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2NhbGVfbGlzdC5yZW1vdmUobG9jKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworIyBQcmludCBhIHRlc3RjYXNlIGluIHRoZSBmb3JtYXQgb2YgdGhlIElCTSB0ZXN0cyAoZm9yIHJ1bnRlc3QuYyk6CitkZWYgZ2V0X3ByZWZlcnJlZF9lbmNvZGluZygpOgorICAgIGxvYyA9IGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFKQorICAgIGlmIGxvYyBpbiBwcmVmZXJyZWRfZW5jb2Rpbmc6CisgICAgICAgIHJldHVybiBwcmVmZXJyZWRfZW5jb2RpbmdbbG9jXQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKQorCitkZWYgcHJpbnRpdCh0ZXN0bm8sIHMsIGZtdCwgZW5jb2Rpbmc9Tm9uZSk6CisgICAgaWYgbm90IGVuY29kaW5nOgorICAgICAgICBlbmNvZGluZyA9IGdldF9wcmVmZXJyZWRfZW5jb2RpbmcoKQorICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gZm9ybWF0KFAuRGVjaW1hbChzKSwgZm10KQorICAgICAgICBmbXQgPSBzdHIoZm10LmVuY29kZShlbmNvZGluZykpWzI6LTFdCisgICAgICAgIHJlc3VsdCA9IHN0cihyZXN1bHQuZW5jb2RlKGVuY29kaW5nKSlbMjotMV0KKyAgICAgICAgaWYgIiciIGluIHJlc3VsdDoKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoInhmbXQlZCAgZm9ybWF0ICAlcyAgJyVzJyAgLT4gIFwiJXNcIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh0ZXN0bm8sIHMsIGZtdCwgcmVzdWx0KSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoInhmbXQlZCAgZm9ybWF0ICAlcyAgJyVzJyAgLT4gICclcydcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodGVzdG5vLCBzLCBmbXQsIHJlc3VsdCkpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzICAlcyAgJXNcbiIgJSAoZXJyLCBzLCBmbXQpKQorCisKKyMgQ2hlY2sgaWYgYW4gaW50ZWdlciBjYW4gYmUgY29udmVydGVkIHRvIGEgdmFsaWQgZmlsbCBjaGFyYWN0ZXIuCitkZWYgY2hlY2tfZmlsbGNoYXIoaSk6CisgICAgdHJ5OgorICAgICAgICBjID0gY2hyKGkpCisgICAgICAgIGMuZW5jb2RlKCd1dGYtOCcpLmRlY29kZSgpCisgICAgICAgIGZvcm1hdChQLkRlY2ltYWwoMCksIGMgKyAnPDE5ZycpCisgICAgICAgIGlmIGMgaW4gKCInIiwgJyInLCAnXFwnKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBjCisgICAgZXhjZXB0OgorICAgICAgICByZXR1cm4gTm9uZQorCisjIEdlbmVyYXRlIGFsbCB1bmljb2RlIGNoYXJhY3RlcnMgdGhhdCBhcmUgYWNjZXB0ZWQgYXMKKyMgZmlsbCBjaGFyYWN0ZXJzIGJ5IGRlY2ltYWwucHkuCitkZWYgYWxsX2ZpbGxjaGFycygpOgorICAgIGZvciBpIGluIHJhbmdlKDMyLCAweDExMDAwMik6CisgICAgICAgIGMgPSBjaGVja19maWxsY2hhcihpKQorICAgICAgICBpZiBjOiB5aWVsZCBjCisKKyMgUmV0dXJuIHJhbmRvbSBmaWxsIGNoYXJhY3Rlci4KK2RlZiByYW5kX2ZpbGxjaGFyKCk6CisgICAgd2hpbGUgMToKKyAgICAgICAgaSA9IHJhbmRvbS5yYW5kcmFuZ2UoMzIsIDB4MTEwMDAyKQorICAgICAgICBjID0gY2hlY2tfZmlsbGNoYXIoaSkKKyAgICAgICAgaWYgYzogcmV0dXJuIGMKKworIyBHZW5lcmF0ZSByYW5kb20gZm9ybWF0IHN0cmluZ3MKKyMgW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLnByZWNpc2lvbl1bdHlwZV0KK2RlZiByYW5kX2Zvcm1hdChmaWxsLCB0eXBlc3BlYz0nRWVHZ0ZmbiUnKToKKyAgICBhY3RpdmUgPSBzb3J0ZWQocmFuZG9tLnNhbXBsZShyYW5nZSg3KSwgcmFuZG9tLnJhbmRyYW5nZSg4KSkpCisgICAgaGF2ZV9hbGlnbiA9IDAKKyAgICBzID0gJycKKyAgICBmb3IgZWxlbSBpbiBhY3RpdmU6CisgICAgICAgIGlmIGVsZW0gPT0gMDogIyBmaWxsK2FsaWduCisgICAgICAgICAgICBzICs9IGZpbGwKKyAgICAgICAgICAgIHMgKz0gcmFuZG9tLmNob2ljZSgnPD49XicpCisgICAgICAgICAgICBoYXZlX2FsaWduID0gMQorICAgICAgICBlbGlmIGVsZW0gPT0gMTogIyBzaWduCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoJystICcpCisgICAgICAgIGVsaWYgZWxlbSA9PSAyIGFuZCBub3QgaGF2ZV9hbGlnbjogIyB6ZXJvcGFkCisgICAgICAgICAgICBzICs9ICcwJworICAgICAgICBlbGlmIGVsZW0gPT0gMzogIyB3aWR0aAorICAgICAgICAgICAgcyArPSBzdHIocmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApKQorICAgICAgICBlbGlmIGVsZW0gPT0gNDogIyB0aG91c2FuZHMgc2VwYXJhdG9yCisgICAgICAgICAgICBzICs9ICcsJworICAgICAgICBlbGlmIGVsZW0gPT0gNTogIyBwcmVjCisgICAgICAgICAgICBzICs9ICcuJworICAgICAgICAgICAgcyArPSBzdHIocmFuZG9tLnJhbmRyYW5nZSgxMDApKQorICAgICAgICBlbGlmIGVsZW0gPT0gNjoKKyAgICAgICAgICAgIGlmIDQgaW4gYWN0aXZlOiBjID0gdHlwZXNwZWMucmVwbGFjZSgnbicsICcnKQorICAgICAgICAgICAgZWxzZTogYyA9IHR5cGVzcGVjCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoYykKKyAgICByZXR1cm4gcworCisjIFBhcnRpYWxseSBicnV0ZSBmb3JjZSBhbGwgcG9zc2libGUgZm9ybWF0IHN0cmluZ3MgY29udGFpbmluZyBhIHRob3VzYW5kcworIyBzZXBhcmF0b3IuIEZhbGwgYmFjayB0byByYW5kb20gd2hlcmUgdGhlIHJ1bnRpbWUgd291bGQgYmVjb21lIGV4Y2Vzc2l2ZS4KKyMgW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV0KK2RlZiBhbGxfZm9ybWF0X3NlcCgpOgorICAgIGZvciBhbGlnbiBpbiAoJycsICc8JywgJz4nLCAnPScsICdeJyk6CisgICAgICAgIGZvciBmaWxsIGluICgnJywgJ3gnKToKKyAgICAgICAgICAgIGlmIGFsaWduID09ICcnOiBmaWxsID0gJycKKyAgICAgICAgICAgIGZvciBzaWduIGluICgnJywgJysnLCAnLScsICcgJyk6CisgICAgICAgICAgICAgICAgZm9yIHplcm9wYWQgaW4gKCcnLCAnMCcpOgorICAgICAgICAgICAgICAgICAgICBpZiBhbGlnbiAhPSAnJzogemVyb3BhZCA9ICcnCisgICAgICAgICAgICAgICAgICAgIGZvciB3aWR0aCBpbiBbJyddK1tzdHIoeSkgZm9yIHkgaW4gcmFuZ2UoMSwgMTUpXStbJzEwMSddOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHByZWMgaW4gWycnXStbJy4nK3N0cih5KSBmb3IgeSBpbiByYW5nZSgxNSldOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIHR5cGUgaW4gKCcnLCAnRScsICdlJywgJ0cnLCAnZycsICdGJywgJ2YnLCAnJScpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSByYW5kb20uY2hvaWNlKCgnJywgJ0UnLCAnZScsICdHJywgJ2cnLCAnRicsICdmJywgJyUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAnJy5qb2luKChmaWxsLCBhbGlnbiwgc2lnbiwgemVyb3BhZCwgd2lkdGgsICcsJywgcHJlYywgdHlwZSkpCisKKyMgUGFydGlhbGx5IGJydXRlIGZvcmNlIGFsbCBwb3NzaWJsZSBmb3JtYXQgc3RyaW5ncyB3aXRoIGFuICduJyBzcGVjaWZpZXIuCisjIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdCitkZWYgYWxsX2Zvcm1hdF9sb2MoKToKKyAgICBmb3IgYWxpZ24gaW4gKCcnLCAnPCcsICc+JywgJz0nLCAnXicpOgorICAgICAgICBmb3IgZmlsbCBpbiAoJycsICd4Jyk6CisgICAgICAgICAgICBpZiBhbGlnbiA9PSAnJzogZmlsbCA9ICcnCisgICAgICAgICAgICBmb3Igc2lnbiBpbiAoJycsICcrJywgJy0nLCAnICcpOgorICAgICAgICAgICAgICAgIGZvciB6ZXJvcGFkIGluICgnJywgJzAnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgYWxpZ24gIT0gJyc6IHplcm9wYWQgPSAnJworICAgICAgICAgICAgICAgICAgICBmb3Igd2lkdGggaW4gWycnXStbc3RyKHkpIGZvciB5IGluIHJhbmdlKDEsIDIwKV0rWycxMDEnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwcmVjIGluIFsnJ10rWycuJytzdHIoeSkgZm9yIHkgaW4gcmFuZ2UoMSwgMjApXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAnJy5qb2luKChmaWxsLCBhbGlnbiwgc2lnbiwgemVyb3BhZCwgd2lkdGgsIHByZWMsICduJykpCisKKyMgR2VuZXJhdGUgcmFuZG9tIGZvcm1hdCBzdHJpbmdzIHdpdGggYSB1bmljb2RlIGZpbGwgY2hhcmFjdGVyCisjIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdCitkZWYgcmFuZGZpbGwoZmlsbCk6CisgICAgYWN0aXZlID0gc29ydGVkKHJhbmRvbS5zYW1wbGUocmFuZ2UoNSksIHJhbmRvbS5yYW5kcmFuZ2UoNikpKQorICAgIHMgPSAnJworICAgIHMgKz0gc3RyKGZpbGwpCisgICAgcyArPSByYW5kb20uY2hvaWNlKCc8Pj1eJykKKyAgICBmb3IgZWxlbSBpbiBhY3RpdmU6CisgICAgICAgIGlmIGVsZW0gPT0gMDogIyBzaWduCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoJystICcpCisgICAgICAgIGVsaWYgZWxlbSA9PSAxOiAjIHdpZHRoCisgICAgICAgICAgICBzICs9IHN0cihyYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkpCisgICAgICAgIGVsaWYgZWxlbSA9PSAyOiAjIHRob3VzYW5kcyBzZXBhcmF0b3IKKyAgICAgICAgICAgIHMgKz0gJywnCisgICAgICAgIGVsaWYgZWxlbSA9PSAzOiAjIHByZWMKKyAgICAgICAgICAgIHMgKz0gJy4nCisgICAgICAgICAgICBzICs9IHN0cihyYW5kb20ucmFuZHJhbmdlKDEwMCkpCisgICAgICAgIGVsaWYgZWxlbSA9PSA0OgorICAgICAgICAgICAgaWYgMiBpbiBhY3RpdmU6IGMgPSAnRWVHZ0ZmJScKKyAgICAgICAgICAgIGVsc2U6IGMgPSAnRWVHZ0ZmbiUnCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoYykKKyAgICByZXR1cm4gcworCisjIEdlbmVyYXRlIHJhbmRvbSBmb3JtYXQgc3RyaW5ncyB3aXRoIHJhbmRvbSBsb2NhbGUgc2V0dGluZworIyBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXQorZGVmIHJhbmRfbG9jYWxlKCk6CisgICAgdHJ5OgorICAgICAgICBsb2MgPSByYW5kb20uY2hvaWNlKGxvY2FsZV9saXN0KQorICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwsIGxvYykKKyAgICBleGNlcHQgbG9jYWxlLkVycm9yIGFzIGVycjoKKyAgICAgICAgcGFzcworICAgIGFjdGl2ZSA9IHNvcnRlZChyYW5kb20uc2FtcGxlKHJhbmdlKDUpLCByYW5kb20ucmFuZHJhbmdlKDYpKSkKKyAgICBzID0gJycKKyAgICBoYXZlX2FsaWduID0gMAorICAgIGZvciBlbGVtIGluIGFjdGl2ZToKKyAgICAgICAgaWYgZWxlbSA9PSAwOiAjIGZpbGwrYWxpZ24KKyAgICAgICAgICAgIHMgKz0gY2hyKHJhbmRvbS5yYW5kcmFuZ2UoMzIsIDEyOCkpCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoJzw+PV4nKQorICAgICAgICAgICAgaGF2ZV9hbGlnbiA9IDEKKyAgICAgICAgZWxpZiBlbGVtID09IDE6ICMgc2lnbgorICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKCcrLSAnKQorICAgICAgICBlbGlmIGVsZW0gPT0gMiBhbmQgbm90IGhhdmVfYWxpZ246ICMgemVyb3BhZAorICAgICAgICAgICAgcyArPSAnMCcKKyAgICAgICAgZWxpZiBlbGVtID09IDM6ICMgd2lkdGgKKyAgICAgICAgICAgIHMgKz0gc3RyKHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwKSkKKyAgICAgICAgZWxpZiBlbGVtID09IDQ6ICMgcHJlYworICAgICAgICAgICAgcyArPSAnLicKKyAgICAgICAgICAgIHMgKz0gc3RyKHJhbmRvbS5yYW5kcmFuZ2UoMTAwKSkKKyAgICBzICs9ICduJworICAgIHJldHVybiBzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3JhbmRkZWMucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3JhbmRkZWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA4NThiZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcmFuZGRlYy5weQpAQCAtMCwwICsxLDU1OSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIworIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgorIworCisKKyMgR2VuZXJhdGUgdGVzdCBjYXNlcyBmb3IgZGVjY2hlY2sucHkuCisKKworIworIyBHcmFtbWFyIGZyb20gaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL2RhY29udnMuaHRtbAorIworIyBzaWduICAgICAgICAgICA6Oj0gICcrJyB8ICctJworIyBkaWdpdCAgICAgICAgICA6Oj0gICcwJyB8ICcxJyB8ICcyJyB8ICczJyB8ICc0JyB8ICc1JyB8ICc2JyB8ICc3JyB8CisjICAgICAgICAgICAgICAgICAgICAgJzgnIHwgJzknCisjIGluZGljYXRvciAgICAgIDo6PSAgJ2UnIHwgJ0UnCisjIGRpZ2l0cyAgICAgICAgIDo6PSAgZGlnaXQgW2RpZ2l0XS4uLgorIyBkZWNpbWFsLXBhcnQgICA6Oj0gIGRpZ2l0cyAnLicgW2RpZ2l0c10gfCBbJy4nXSBkaWdpdHMKKyMgZXhwb25lbnQtcGFydCAgOjo9ICBpbmRpY2F0b3IgW3NpZ25dIGRpZ2l0cworIyBpbmZpbml0eSAgICAgICA6Oj0gICdJbmZpbml0eScgfCAnSW5mJworIyBuYW4gICAgICAgICAgICA6Oj0gICdOYU4nIFtkaWdpdHNdIHwgJ3NOYU4nIFtkaWdpdHNdCisjIG51bWVyaWMtdmFsdWUgIDo6PSAgZGVjaW1hbC1wYXJ0IFtleHBvbmVudC1wYXJ0XSB8IGluZmluaXR5CisjIG51bWVyaWMtc3RyaW5nIDo6PSAgW3NpZ25dIG51bWVyaWMtdmFsdWUgfCBbc2lnbl0gbmFuCisjCisKKworZnJvbSByYW5kb20gaW1wb3J0IHJhbmRyYW5nZSwgc2FtcGxlCitmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KK2Zyb20gcmFuZGZsb2F0IGltcG9ydCB1bl9yYW5kZmxvYXQsIGJpbl9yYW5kZmxvYXQsIHRlcm5fcmFuZGZsb2F0CisKKworZGVmIHNpZ24oKToKKyAgICBpZiByYW5kcmFuZ2UoMik6CisgICAgICAgIGlmIHJhbmRyYW5nZSgyKTogcmV0dXJuICcrJworICAgICAgICByZXR1cm4gJycKKyAgICByZXR1cm4gJy0nCisKK2RlZiBpbmRpY2F0b3IoKToKKyAgICByZXR1cm4gImVFIltyYW5kcmFuZ2UoMildCisKK2RlZiBkaWdpdHMobWF4cHJlYyk6CisgICAgaWYgbWF4cHJlYyA9PSAwOiByZXR1cm4gJycKKyAgICByZXR1cm4gc3RyKHJhbmRyYW5nZSgxMCoqbWF4cHJlYykpCisKK2RlZiBkb3QoKToKKyAgICBpZiByYW5kcmFuZ2UoMik6IHJldHVybiAnLicKKyAgICByZXR1cm4gJycKKworZGVmIGRlY2ltYWxfcGFydChtYXhwcmVjKToKKyAgICBpZiByYW5kcmFuZ2UoMTAwKSA+IDYwOiAjIGludGVnZXJzCisgICAgICAgIHJldHVybiBkaWdpdHMobWF4cHJlYykKKyAgICBpZiByYW5kcmFuZ2UoMik6CisgICAgICAgIGludGxlbiA9IHJhbmRyYW5nZSgxLCBtYXhwcmVjKzEpCisgICAgICAgIGZyYWNsZW4gPSBtYXhwcmVjLWludGxlbgorICAgICAgICBpbnRwYXJ0ID0gZGlnaXRzKGludGxlbikKKyAgICAgICAgZnJhY3BhcnQgPSBkaWdpdHMoZnJhY2xlbikKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oKGludHBhcnQsICcuJywgZnJhY3BhcnQpKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2luKChkb3QoKSwgZGlnaXRzKG1heHByZWMpKSkKKworZGVmIGV4cGRpZ2l0cyhtYXhleHApOgorICAgIHJldHVybiBzdHIocmFuZHJhbmdlKG1heGV4cCkpCisKK2RlZiBleHBvbmVudF9wYXJ0KG1heGV4cCk6CisgICAgcmV0dXJuICcnLmpvaW4oKGluZGljYXRvcigpLCBzaWduKCksIGV4cGRpZ2l0cyhtYXhleHApKSkKKworZGVmIGluZmluaXR5KCk6CisgICAgaWYgcmFuZHJhbmdlKDIpOiByZXR1cm4gJ0luZmluaXR5JworICAgIHJldHVybiAnSW5mJworCitkZWYgbmFuKCk6CisgICAgZCA9ICcnCisgICAgaWYgcmFuZHJhbmdlKDIpOgorICAgICAgICBkID0gZGlnaXRzKHJhbmRyYW5nZSg5OSkpCisgICAgaWYgcmFuZHJhbmdlKDIpOgorICAgICAgICByZXR1cm4gJycuam9pbigoJ05hTicsIGQpKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2luKCgnc05hTicsIGQpKQorCitkZWYgbnVtZXJpY192YWx1ZShtYXhwcmVjLCBtYXhleHApOgorICAgIGlmIHJhbmRyYW5nZSgxMDApID4gOTA6CisgICAgICAgIHJldHVybiBpbmZpbml0eSgpCisgICAgZXhwX3BhcnQgPSAnJworICAgIGlmIHJhbmRyYW5nZSgxMDApID4gNjA6CisgICAgICAgIGV4cF9wYXJ0ID0gZXhwb25lbnRfcGFydChtYXhleHApCisgICAgcmV0dXJuICcnLmpvaW4oKGRlY2ltYWxfcGFydChtYXhwcmVjKSwgZXhwX3BhcnQpKQorCitkZWYgbnVtZXJpY19zdHJpbmcobWF4cHJlYywgbWF4ZXhwKToKKyAgICBpZiByYW5kcmFuZ2UoMTAwKSA+IDk1OgorICAgICAgICByZXR1cm4gJycuam9pbigoc2lnbigpLCBuYW4oKSkpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oKHNpZ24oKSwgbnVtZXJpY192YWx1ZShtYXhwcmVjLCBtYXhleHApKSkKKworZGVmIHJhbmRkZWMobWF4cHJlYywgbWF4ZXhwKToKKyAgICByZXR1cm4gbnVtZXJpY19zdHJpbmcobWF4cHJlYywgbWF4ZXhwKQorCitkZWYgcmFuZF9hZGpleHAobWF4cHJlYywgbWF4YWRqZXhwKToKKyAgICBkID0gZGlnaXRzKG1heHByZWMpCisgICAgbWF4ZXhwID0gbWF4YWRqZXhwLWxlbihkKSsxCisgICAgaWYgbWF4ZXhwID09IDA6IG1heGV4cCA9IDEKKyAgICBleHAgPSBzdHIocmFuZHJhbmdlKG1heGV4cC0yKihhYnMobWF4ZXhwKSksIG1heGV4cCkpCisgICAgcmV0dXJuICcnLmpvaW4oKHNpZ24oKSwgZCwgJ0UnLCBleHApKQorCisKK2RlZiBuZGlnaXRzKG4pOgorICAgIGlmIG4gPCAxOiByZXR1cm4gMAorICAgIHJldHVybiByYW5kcmFuZ2UoMTAqKihuLTEpLCAxMCoqbikKKworZGVmIHJhbmR0dXBsZShtYXhwcmVjLCBtYXhleHApOgorICAgIG4gPSByYW5kcmFuZ2UoMTAwKQorICAgIHNpZ24gPSByYW5kcmFuZ2UoMikKKyAgICBjb2VmZiA9IG5kaWdpdHMobWF4cHJlYykKKyAgICBpZiBuID49IDk1OgorICAgICAgICBjb2VmZiA9ICgpCisgICAgICAgIGV4cCA9ICdGJworICAgIGVsaWYgbiA+PSA4NToKKyAgICAgICAgY29lZmYgPSB0dXBsZShtYXAoaW50LCBzdHIobmRpZ2l0cyhtYXhwcmVjKSkpKQorICAgICAgICBleHAgPSAibk4iW3JhbmRyYW5nZSgyKV0KKyAgICBlbHNlOgorICAgICAgICBjb2VmZiA9IHR1cGxlKG1hcChpbnQsIHN0cihuZGlnaXRzKG1heHByZWMpKSkpCisgICAgICAgIGV4cCA9IHJhbmRyYW5nZSgtbWF4ZXhwLCBtYXhleHApCisgICAgcmV0dXJuIChzaWduLCBjb2VmZiwgZXhwKQorCitkZWYgZnJvbV90cmlwbGUoc2lnbiwgY29lZmYsIGV4cCk6CisgICAgcmV0dXJuICcnLmpvaW4oKHN0cihzaWduKmNvZWZmKSwgaW5kaWNhdG9yKCksIHN0cihleHApKSkKKworCisjIENsb3NlIHRvIDEwKipuCitkZWYgdW5fY2xvc2VfdG9fcG93MTAocHJlYywgbWF4ZXhwLCBpdHI9Tm9uZSk6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGxzdCA9IHJhbmdlKHByZWMrMzApCisgICAgZWxzZToKKyAgICAgICAgbHN0ID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgbmluZXMgPSBbMTAqKm4gLSAxIGZvciBuIGluIGxzdF0KKyAgICBwb3cxMCA9IFsxMCoqbiBmb3IgbiBpbiBsc3RdCisgICAgZm9yIGNvZWZmIGluIG5pbmVzOgorICAgICAgICB5aWVsZCBjb2VmZgorICAgICAgICB5aWVsZCAtY29lZmYKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoMSwgY29lZmYsIHJhbmRyYW5nZSgyKm1heGV4cCkpCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKC0xLCBjb2VmZiwgcmFuZHJhbmdlKDIqbWF4ZXhwKSkKKyAgICBmb3IgY29lZmYgaW4gcG93MTA6CisgICAgICAgIHlpZWxkIGNvZWZmCisgICAgICAgIHlpZWxkIC1jb2VmZgorCisjIENsb3NlIHRvIDEwKipuCitkZWYgYmluX2Nsb3NlX3RvX3BvdzEwKHByZWMsIG1heGV4cCwgaXRyPU5vbmUpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdCA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIG5pbmVzID0gWzEwKipuIC0gMSBmb3IgbiBpbiBsc3RdCisgICAgcG93MTAgPSBbMTAqKm4gZm9yIG4gaW4gbHN0XQorICAgIGZvciBjb2VmZiBpbiBuaW5lczoKKyAgICAgICAgeWllbGQgY29lZmYsIDEKKyAgICAgICAgeWllbGQgLWNvZWZmLCAtMQorICAgICAgICB5aWVsZCAxLCBjb2VmZgorICAgICAgICB5aWVsZCAtMSwgLWNvZWZmCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIGNvZWZmLCByYW5kcmFuZ2UoMiptYXhleHApKSwgMQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgtMSwgY29lZmYsIHJhbmRyYW5nZSgyKm1heGV4cCkpLCAtMQorICAgICAgICB5aWVsZCAxLCBmcm9tX3RyaXBsZSgxLCBjb2VmZiwgLXJhbmRyYW5nZSgyKm1heGV4cCkpCisgICAgICAgIHlpZWxkIC0xLCBmcm9tX3RyaXBsZSgtMSwgY29lZmYsIC1yYW5kcmFuZ2UoMiptYXhleHApKQorICAgIGZvciBjb2VmZiBpbiBwb3cxMDoKKyAgICAgICAgeWllbGQgY29lZmYsIC0xCisgICAgICAgIHlpZWxkIC1jb2VmZiwgMQorICAgICAgICB5aWVsZCAxLCAtY29lZmYKKyAgICAgICAgeWllbGQgLWNvZWZmLCAxCisKKyMgQ2xvc2UgdG8gMToKK2RlZiBjbG9zZV90b19vbmVfZ3JlYXRlcihwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCIxLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpKSkKKworZGVmIGNsb3NlX3RvX29uZV9sZXNzKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIjAuOSIsICc5JypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpKSkKKworIyBDbG9zZSB0byAwOgorZGVmIGNsb3NlX3RvX3plcm9fZ3JlYXRlcihwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCIwLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpKSkKKworZGVmIGNsb3NlX3RvX3plcm9fbGVzcyhwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCItMC4iLCAnMCcqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSkpCisKKyMgQ2xvc2UgdG8gZW1heDoKK2RlZiBjbG9zZV90b19lbWF4X2xlc3MocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiOS4iLCAnOScqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZW1heCkpKQorCitkZWYgY2xvc2VfdG9fZW1heF9ncmVhdGVyKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIjEuIiwgJzAnKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGVtYXgrMSkpKQorCisjIENsb3NlIHRvIGVtaW46CitkZWYgY2xvc2VfdG9fZW1pbl9ncmVhdGVyKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIjEuIiwgJzAnKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGVtaW4pKSkKKworZGVmIGNsb3NlX3RvX2VtaW5fbGVzcyhwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCI5LiIsICc5JypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihlbWluLTEpKSkKKworIyBDbG9zZSB0byBldGlueToKK2RlZiBjbG9zZV90b19ldGlueV9ncmVhdGVyKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICBldGlueSA9IGVtaW4gLSAocHJlYyAtIDEpCisgICAgcmV0dXJuICcnLmpvaW4oKCIxLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihldGlueSkpKQorCitkZWYgY2xvc2VfdG9fZXRpbnlfbGVzcyhwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgZXRpbnkgPSBlbWluIC0gKHByZWMgLSAxKQorICAgIHJldHVybiAnJy5qb2luKCgiOS4iLCAnOScqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZXRpbnktMSkpKQorCisKK2RlZiBjbG9zZV90b19taW5fZXRpbnlfZ3JlYXRlcihwcmVjLCBtYXhfcHJlYywgbWluX2VtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICBldGlueSA9IG1pbl9lbWluIC0gKG1heF9wcmVjIC0gMSkKKyAgICByZXR1cm4gJycuam9pbigoIjEuIiwgJzAnKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGV0aW55KSkpCisKK2RlZiBjbG9zZV90b19taW5fZXRpbnlfbGVzcyhwcmVjLCBtYXhfcHJlYywgbWluX2VtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICBldGlueSA9IG1pbl9lbWluIC0gKG1heF9wcmVjIC0gMSkKKyAgICByZXR1cm4gJycuam9pbigoIjkuIiwgJzknKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGV0aW55LTEpKSkKKworCitjbG9zZV9mdW5jcyA9IFsKKyAgY2xvc2VfdG9fb25lX2dyZWF0ZXIsIGNsb3NlX3RvX29uZV9sZXNzLCBjbG9zZV90b196ZXJvX2dyZWF0ZXIsCisgIGNsb3NlX3RvX3plcm9fbGVzcywgY2xvc2VfdG9fZW1heF9sZXNzLCBjbG9zZV90b19lbWF4X2dyZWF0ZXIsCisgIGNsb3NlX3RvX2VtaW5fZ3JlYXRlciwgY2xvc2VfdG9fZW1pbl9sZXNzLCBjbG9zZV90b19ldGlueV9ncmVhdGVyLAorICBjbG9zZV90b19ldGlueV9sZXNzLCBjbG9zZV90b19taW5fZXRpbnlfZ3JlYXRlciwgY2xvc2VfdG9fbWluX2V0aW55X2xlc3MKK10KKworCitkZWYgdW5fY2xvc2VfbnVtYmVycyhwcmVjLCBlbWF4LCBlbWluLCBpdHI9Tm9uZSk6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYyBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgIHlpZWxkIGZ1bmMocHJlYywgZW1heCwgZW1pbikKKworZGVmIGJpbl9jbG9zZV9udW1iZXJzKHByZWMsIGVtYXgsIGVtaW4sIGl0cj1Ob25lKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgaXRyID0gMTAwMAorICAgIGZvciBfIGluIHJhbmdlKGl0cik6CisgICAgICAgIGZvciBmdW5jMSBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgIGZvciBmdW5jMiBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgICAgICB5aWVsZCBmdW5jMShwcmVjLCBlbWF4LCBlbWluKSwgZnVuYzIocHJlYywgZW1heCwgZW1pbikKKyAgICAgICAgZm9yIGZ1bmMgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGVtYXgpLCBmdW5jKHByZWMsIGVtYXgsIGVtaW4pCisgICAgICAgICAgICB5aWVsZCBmdW5jKHByZWMsIGVtYXgsIGVtaW4pLCByYW5kZGVjKHByZWMsIGVtYXgpCisKK2RlZiB0ZXJuX2Nsb3NlX251bWJlcnMocHJlYywgZW1heCwgZW1pbiwgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgaXRyID0gMTAwMAorICAgIGZvciBfIGluIHJhbmdlKGl0cik6CisgICAgICAgIGZvciBmdW5jMSBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgIGZvciBmdW5jMiBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgICAgICBmb3IgZnVuYzMgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIChmdW5jMShwcmVjLCBlbWF4LCBlbWluKSwgZnVuYzIocHJlYywgZW1heCwgZW1pbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jMyhwcmVjLCBlbWF4LCBlbWluKSkKKyAgICAgICAgZm9yIGZ1bmMgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCAocmFuZGRlYyhwcmVjLCBlbWF4KSwgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwKKyAgICAgICAgICAgICAgICAgICBmdW5jKHByZWMsIGVtYXgsIGVtaW4pKQorICAgICAgICAgICAgeWllbGQgKGZ1bmMocHJlYywgZW1heCwgZW1pbiksIHJhbmRkZWMocHJlYywgZW1heCksCisgICAgICAgICAgICAgICAgICAgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSkKKyAgICAgICAgICAgIHlpZWxkIChmdW5jKHByZWMsIGVtYXgsIGVtaW4pLCBmdW5jKHByZWMsIGVtYXgsIGVtaW4pLAorICAgICAgICAgICAgICAgICAgIHJhbmRkZWMocHJlYywgZW1heCkpCisgICAgICAgIGZvciBmdW5jIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgKHJhbmRkZWMocHJlYywgZW1heCksIHJhbmRkZWMocHJlYywgZW1heCksCisgICAgICAgICAgICAgICAgICAgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSkKKyAgICAgICAgICAgIHlpZWxkIChyYW5kZGVjKHByZWMsIGVtYXgpLCBmdW5jKHByZWMsIGVtYXgsIGVtaW4pLAorICAgICAgICAgICAgICAgICAgIHJhbmRkZWMocHJlYywgZW1heCkpCisgICAgICAgICAgICB5aWVsZCAoZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwgcmFuZGRlYyhwcmVjLCBlbWF4KSwKKyAgICAgICAgICAgICAgICAgICByYW5kZGVjKHByZWMsIGVtYXgpKQorCisKKyMgSWYgaXRyID09IE5vbmUsIHRlc3QgYWxsIGRpZ2l0IGxlbmd0aHMgdXAgdG8gcHJlYyArIDMwCitkZWYgdW5faW5jcl9kaWdpdHMocHJlYywgbWF4ZXhwLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdCA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDoKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisKKyMgSWYgaXRyID09IE5vbmUsIHRlc3QgYWxsIGRpZ2l0IGxlbmd0aHMgdXAgdG8gcHJlYyArIDMwCisjIEFsc28gb3V0cHV0IGRlY2ltYWxzIGltIHR1cGxlIGZvcm0uCitkZWYgdW5faW5jcl9kaWdpdHNfdHVwbGUocHJlYywgbWF4ZXhwLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdCA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDoKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICMgdGVzdCBmcm9tIHR1cGxlCisgICAgICAgIHlpZWxkICgwLCB0dXBsZShtYXAoaW50LCBzdHIobmRpZ2l0cyhtKSkpKSwgMCkKKyAgICAgICAgeWllbGQgKDEsIHR1cGxlKG1hcChpbnQsIHN0cihuZGlnaXRzKG0pKSkpLCAwKQorICAgICAgICB5aWVsZCAoMCwgdHVwbGUobWFwKGludCwgc3RyKG5kaWdpdHMobSkpKSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICB5aWVsZCAoMSwgdHVwbGUobWFwKGludCwgc3RyKG5kaWdpdHMobSkpKSksIHJhbmRyYW5nZShtYXhleHApKQorCisjIElmIGl0ciA9PSBOb25lLCB0ZXN0IGFsbCBjb21iaW5hdGlvbnMgb2YgZGlnaXQgbGVuZ3RocyB1cCB0byBwcmVjICsgMzAKK2RlZiBiaW5faW5jcl9kaWdpdHMocHJlYywgbWF4ZXhwLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QxID0gcmFuZ2UocHJlYyszMCkKKyAgICAgICAgbHN0MiA9IHJhbmdlKHByZWMrMzApCisgICAgZWxzZToKKyAgICAgICAgbHN0MSA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgICAgICBsc3QyID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgZm9yIG0gaW4gbHN0MToKKyAgICAgICAgeCA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIHgsIHgKKyAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCB4LCB4CisgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgeWllbGQgeCwgeAorICAgICAgICB4ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICB5aWVsZCB4LCB4CisgICAgZm9yIG0gaW4gbHN0MToKKyAgICAgICAgZm9yIG4gaW4gbHN0MjoKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobiksIDApCisgICAgICAgICAgICB5aWVsZCB4LCB5CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIDApCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhuKSwgMCkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG4pLCAwKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG4pLCAwKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobiksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG4pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhuKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5aWVsZCB4LCB5CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG4pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKworCitkZWYgcmFuZHNpZ24oKToKKyAgICByZXR1cm4gKDEsIC0xKVtyYW5kcmFuZ2UoMildCisKKyMgSWYgaXRyID09IE5vbmUsIHRlc3QgYWxsIGNvbWJpbmF0aW9ucyBvZiBkaWdpdCBsZW5ndGhzIHVwIHRvIHByZWMgKyAzMAorZGVmIHRlcm5faW5jcl9kaWdpdHMocHJlYywgbWF4ZXhwLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QxID0gcmFuZ2UocHJlYyszMCkKKyAgICAgICAgbHN0MiA9IHJhbmdlKHByZWMrMzApCisgICAgICAgIGxzdDMgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdDEgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICAgICAgbHN0MiA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgICAgICBsc3QzID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgZm9yIG0gaW4gbHN0MToKKyAgICAgICAgZm9yIG4gaW4gbHN0MjoKKyAgICAgICAgICAgIGZvciBwIGluIGxzdDM6CisgICAgICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKHJhbmRzaWduKCksIG5kaWdpdHMobSksIDApCisgICAgICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKHJhbmRzaWduKCksIG5kaWdpdHMobiksIDApCisgICAgICAgICAgICAgICAgeiA9IGZyb21fdHJpcGxlKHJhbmRzaWduKCksIG5kaWdpdHMocCksIDApCisgICAgICAgICAgICAgICAgeWllbGQgeCwgeSwgegorCisKKyMgVGVzdHMgZm9yIHRoZSAnbG9naWNhbCcgZnVuY3Rpb25zCitkZWYgYmluZGlnaXRzKHByZWMpOgorICAgIHogPSAwCisgICAgZm9yIGkgaW4gcmFuZ2UocHJlYyk6CisgICAgICAgIHogKz0gcmFuZHJhbmdlKDIpICogMTAqKmkKKyAgICByZXR1cm4gegorCitkZWYgbG9naWNhbF91bl9pbmNyX2RpZ2l0cyhwcmVjLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdCA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDoKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoMSwgYmluZGlnaXRzKG0pLCAwKQorCitkZWYgbG9naWNhbF9iaW5faW5jcl9kaWdpdHMocHJlYywgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0MSA9IHJhbmdlKHByZWMrMzApCisgICAgICAgIGxzdDIgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdDEgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICAgICAgbHN0MiA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDE6CisgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBiaW5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIHgsIHgKKyAgICBmb3IgbSBpbiBsc3QxOgorICAgICAgICBmb3IgbiBpbiBsc3QyOgorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKDEsIGJpbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgxLCBiaW5kaWdpdHMobiksIDApCisgICAgICAgICAgICB5aWVsZCB4LCB5CisKKworZGVmIHJhbmRpbnQoKToKKyAgICBwID0gcmFuZHJhbmdlKDEsIDEwMCkKKyAgICByZXR1cm4gbmRpZ2l0cyhwKSAqICgxLC0xKVtyYW5kcmFuZ2UoMildCisKK2RlZiByYW5kZmxvYXQoKToKKyAgICBwID0gcmFuZHJhbmdlKDEsIDEwMCkKKyAgICBzID0gbnVtZXJpY192YWx1ZShwLCAzODMpCisgICAgdHJ5OgorICAgICAgICBmID0gZmxvYXQobnVtZXJpY192YWx1ZShwLCAzODMpKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICBmID0gMC4wCisgICAgcmV0dXJuIGYKKworZGVmIHJhbmRjb21wbGV4KCk6CisgICAgcmVhbCA9IHJhbmRmbG9hdCgpCisgICAgaWYgcmFuZHJhbmdlKDEwMCkgPiAzMDoKKyAgICAgICAgaW1hZyA9IDAuMAorICAgIGVsc2U6CisgICAgICAgIGltYWcgPSByYW5kZmxvYXQoKQorICAgIHJldHVybiBjb21wbGV4KHJlYWwsIGltYWcpCisKK2RlZiByYW5kZnJhY3Rpb24oKToKKyAgICBudW0gPSByYW5kaW50KCkKKyAgICBkZW5vbSA9IHJhbmRpbnQoKQorICAgIGlmIGRlbm9tID09IDA6CisgICAgICAgIGRlbm9tID0gMQorICAgIHJldHVybiBGcmFjdGlvbihudW0sIGRlbm9tKQorCitudW1iZXJfZnVuY3MgPSBbcmFuZGludCwgcmFuZGZsb2F0LCByYW5kY29tcGxleCwgcmFuZGZyYWN0aW9uXQorCitkZWYgdW5fcmFuZG9tX21peGVkX29wKGl0cj1Ob25lKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgaXRyID0gMTAwMAorICAgIGZvciBfIGluIHJhbmdlKGl0cik6CisgICAgICAgIGZvciBmdW5jIGluIG51bWJlcl9mdW5jczoKKyAgICAgICAgICAgIHlpZWxkIGZ1bmMoKQorICAgICMgVGVzdCBnYXJiYWdlIGlucHV0CisgICAgZm9yIHggaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgeWllbGQgeAorCitkZWYgYmluX3JhbmRvbV9taXhlZF9vcChwcmVjLCBlbWF4LCBlbWluLCBpdHI9Tm9uZSk6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYyBpbiBudW1iZXJfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGVtYXgpLCBmdW5jKCkKKyAgICAgICAgICAgIHlpZWxkIGZ1bmMoKSwgcmFuZGRlYyhwcmVjLCBlbWF4KQorICAgICAgICBmb3IgbnVtYmVyIGluIG51bWJlcl9mdW5jczoKKyAgICAgICAgICAgIGZvciBkZWMgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICAgICAgeWllbGQgZGVjKHByZWMsIGVtYXgsIGVtaW4pLCBudW1iZXIoKQorICAgICMgVGVzdCBnYXJiYWdlIGlucHV0CisgICAgZm9yIHggaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgZm9yIHkgaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKworZGVmIHRlcm5fcmFuZG9tX21peGVkX29wKHByZWMsIGVtYXgsIGVtaW4sIGl0cik6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYyBpbiBudW1iZXJfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGVtYXgpLCByYW5kZGVjKHByZWMsIGVtYXgpLCBmdW5jKCkKKyAgICAgICAgICAgIHlpZWxkIHJhbmRkZWMocHJlYywgZW1heCksIGZ1bmMoKSwgZnVuYygpCisgICAgICAgICAgICB5aWVsZCBmdW5jKCksIGZ1bmMoKSwgZnVuYygpCisgICAgIyBUZXN0IGdhcmJhZ2UgaW5wdXQKKyAgICBmb3IgeCBpbiAoWyd4J10sICgneScsKSwgeyd6J30sIHsxOid6J30pOgorICAgICAgICBmb3IgeSBpbiAoWyd4J10sICgneScsKSwgeyd6J30sIHsxOid6J30pOgorICAgICAgICAgICAgZm9yIHogaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgICAgICAgICB5aWVsZCB4LCB5LCB6CisKK2RlZiBhbGxfdW5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgIGZvciBhIGluIHVuX2Nsb3NlX3RvX3BvdzEwKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgKGEsKQorICAgIGZvciBhIGluIHVuX2Nsb3NlX251bWJlcnMocHJlYywgZXhwX3JhbmdlLCAtZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCAoYSwpCisgICAgZm9yIGEgaW4gdW5faW5jcl9kaWdpdHNfdHVwbGUocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCAoYSwpCisgICAgZm9yIGEgaW4gdW5fcmFuZGZsb2F0KCk6CisgICAgICAgIHlpZWxkIChhLCkKKyAgICBmb3IgYSBpbiB1bl9yYW5kb21fbWl4ZWRfb3AoaXRyKToKKyAgICAgICAgeWllbGQgKGEsKQorICAgIGZvciBhIGluIGxvZ2ljYWxfdW5faW5jcl9kaWdpdHMocHJlYywgaXRyKToKKyAgICAgICAgeWllbGQgKGEsKQorICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgIHlpZWxkIChyYW5kZGVjKHByZWMsIGV4cF9yYW5nZSksKQorICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgIHlpZWxkIChyYW5kdHVwbGUocHJlYywgZXhwX3JhbmdlKSwpCisKK2RlZiBhbGxfYmluYXJ5KHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICBmb3IgYSwgYiBpbiBiaW5fY2xvc2VfdG9fcG93MTAocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIGEsIGIgaW4gYmluX2Nsb3NlX251bWJlcnMocHJlYywgZXhwX3JhbmdlLCAtZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIGEsIGIgaW4gYmluX2luY3JfZGlnaXRzKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYgorICAgIGZvciBhLCBiIGluIGJpbl9yYW5kZmxvYXQoKToKKyAgICAgICAgeWllbGQgYSwgYgorICAgIGZvciBhLCBiIGluIGJpbl9yYW5kb21fbWl4ZWRfb3AocHJlYywgZXhwX3JhbmdlLCAtZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIGEsIGIgaW4gbG9naWNhbF9iaW5faW5jcl9kaWdpdHMocHJlYywgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYgorICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgIHlpZWxkIHJhbmRkZWMocHJlYywgZXhwX3JhbmdlKSwgcmFuZGRlYyhwcmVjLCBleHBfcmFuZ2UpCisKK2RlZiBhbGxfdGVybmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgZm9yIGEsIGIsIGMgaW4gdGVybl9jbG9zZV9udW1iZXJzKHByZWMsIGV4cF9yYW5nZSwgLWV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYiwgYworICAgIGZvciBhLCBiLCBjIGluIHRlcm5faW5jcl9kaWdpdHMocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiLCBjCisgICAgZm9yIGEsIGIsIGMgaW4gdGVybl9yYW5kZmxvYXQoKToKKyAgICAgICAgeWllbGQgYSwgYiwgYworICAgIGZvciBhLCBiLCBjIGluIHRlcm5fcmFuZG9tX21peGVkX29wKHByZWMsIGV4cF9yYW5nZSwgLWV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYiwgYworICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgIGEgPSByYW5kZGVjKHByZWMsIDIqZXhwX3JhbmdlKQorICAgICAgICBiID0gcmFuZGRlYyhwcmVjLCAyKmV4cF9yYW5nZSkKKyAgICAgICAgYyA9IHJhbmRkZWMocHJlYywgMipleHBfcmFuZ2UpCisgICAgICAgIHlpZWxkIGEsIGIsIGMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcmFuZGZsb2F0LnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9yYW5kZmxvYXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY4NzMwMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcmFuZGZsb2F0LnB5CkBAIC0wLDAgKzEsMjUwIEBACisjIENvcHlyaWdodCAoYykgMjAxMCBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMgQWRhcHRlZCBmcm9tIFB5dGhvbidzIExpYi90ZXN0L3Rlc3Rfc3RydG9kLnB5IChieSBNYXJrIERpY2tpbnNvbikKKworIyBNb3JlIHRlc3QgY2FzZXMgZm9yIGRlY2NoZWNrLnB5LgorCitpbXBvcnQgcmFuZG9tCisKK1RFU1RfU0laRSA9IDIKKworCitkZWYgdGVzdF9zaG9ydF9oYWxmd2F5X2Nhc2VzKCk6CisgICAgIyBleGFjdCBoYWxmd2F5IGNhc2VzIHdpdGggYSBzbWFsbCBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzCisgICAgZm9yIGsgaW4gMCwgNSwgMTAsIDE1LCAyMDoKKyAgICAgICAgIyB1cHBlciA9IHNtYWxsZXN0IGludGVnZXIgPj0gMioqNTQvNSoqaworICAgICAgICB1cHBlciA9IC0oLTIqKjU0Ly81KiprKQorICAgICAgICAjIGxvd2VyID0gc21hbGxlc3Qgb2RkIG51bWJlciA+PSAyKio1My81KiprCisgICAgICAgIGxvd2VyID0gLSgtMioqNTMvLzUqKmspCisgICAgICAgIGlmIGxvd2VyICUgMiA9PSAwOgorICAgICAgICAgICAgbG93ZXIgKz0gMQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCAqIFRFU1RfU0laRSk6CisgICAgICAgICAgICAjIFNlbGVjdCBhIHJhbmRvbSBvZGQgbiBpbiBbMioqNTMvNSoqaywKKyAgICAgICAgICAgICMgMioqNTQvNSoqaykuIFRoZW4gbiAqIDEwKiprIGdpdmVzIGEgaGFsZndheSBjYXNlCisgICAgICAgICAgICAjIHdpdGggc21hbGwgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cy4KKyAgICAgICAgICAgIG4sIGUgPSByYW5kb20ucmFuZHJhbmdlKGxvd2VyLCB1cHBlciwgMiksIGsKKworICAgICAgICAgICAgIyBSZW1vdmUgYW55IGFkZGl0aW9uYWwgcG93ZXJzIG9mIDUuCisgICAgICAgICAgICB3aGlsZSBuICUgNSA9PSAwOgorICAgICAgICAgICAgICAgIG4sIGUgPSBuIC8vIDUsIGUgKyAxCisgICAgICAgICAgICBhc3NlcnQgbiAlIDEwIGluICgxLCAzLCA3LCA5KQorCisgICAgICAgICAgICAjIFRyeSBudW1iZXJzIG9mIHRoZSBmb3JtIG4gKiAyKipwMiAqIDEwKiplLCBwMiA+PSAwLAorICAgICAgICAgICAgIyB1bnRpbCBuICogMioqcDIgaGFzIG1vcmUgdGhhbiAyMCBzaWduaWZpY2FudCBkaWdpdHMuCisgICAgICAgICAgICBkaWdpdHMsIGV4cG9uZW50ID0gbiwgZQorICAgICAgICAgICAgd2hpbGUgZGlnaXRzIDwgMTAqKjIwOgorICAgICAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMsIGV4cG9uZW50KQorICAgICAgICAgICAgICAgIHlpZWxkIHMKKyAgICAgICAgICAgICAgICAjIFNhbWUgYWdhaW4sIGJ1dCB3aXRoIGV4dHJhIHRyYWlsaW5nIHplcm9zLgorICAgICAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMgKiAxMCoqNDAsIGV4cG9uZW50IC0gNDApCisgICAgICAgICAgICAgICAgeWllbGQgcworICAgICAgICAgICAgICAgIGRpZ2l0cyAqPSAyCisKKyAgICAgICAgICAgICMgVHJ5IG51bWJlcnMgb2YgdGhlIGZvcm0gbiAqIDUqKnAyICogMTAqKihlIC0gcDUpLCBwNQorICAgICAgICAgICAgIyA+PSAwLCB3aXRoIG4gKiA1KipwNSA8IDEwKioyMC4KKyAgICAgICAgICAgIGRpZ2l0cywgZXhwb25lbnQgPSBuLCBlCisgICAgICAgICAgICB3aGlsZSBkaWdpdHMgPCAxMCoqMjA6CisgICAgICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cywgZXhwb25lbnQpCisgICAgICAgICAgICAgICAgeWllbGQgcworICAgICAgICAgICAgICAgICMgU2FtZSBhZ2FpbiwgYnV0IHdpdGggZXh0cmEgdHJhaWxpbmcgemVyb3MuCisgICAgICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cyAqIDEwKio0MCwgZXhwb25lbnQgLSA0MCkKKyAgICAgICAgICAgICAgICB5aWVsZCBzCisgICAgICAgICAgICAgICAgZGlnaXRzICo9IDUKKyAgICAgICAgICAgICAgICBleHBvbmVudCAtPSAxCisKK2RlZiB0ZXN0X2hhbGZ3YXlfY2FzZXMoKToKKyAgICAjIHRlc3QgaGFsZndheSBjYXNlcyBmb3IgdGhlIHJvdW5kLWhhbGYtdG8tZXZlbiBydWxlCisgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgIGZvciBqIGluIHJhbmdlKFRFU1RfU0laRSk6CisgICAgICAgICAgICAjIGJpdCBwYXR0ZXJuIGZvciBhIHJhbmRvbSBmaW5pdGUgcG9zaXRpdmUgKG9yICswLjApIGZsb2F0CisgICAgICAgICAgICBiaXRzID0gcmFuZG9tLnJhbmRyYW5nZSgyMDQ3KjIqKjUyKQorCisgICAgICAgICAgICAjIGNvbnZlcnQgYml0IHBhdHRlcm4gdG8gYSBudW1iZXIgb2YgdGhlIGZvcm0gbSAqIDIqKmUKKyAgICAgICAgICAgIGUsIG0gPSBkaXZtb2QoYml0cywgMioqNTIpCisgICAgICAgICAgICBpZiBlOgorICAgICAgICAgICAgICAgIG0sIGUgPSBtICsgMioqNTIsIGUgLSAxCisgICAgICAgICAgICBlIC09IDEwNzQKKworICAgICAgICAgICAgIyBhZGQgMC41IHVscHMKKyAgICAgICAgICAgIG0sIGUgPSAyKm0gKyAxLCBlIC0gMQorCisgICAgICAgICAgICAjIGNvbnZlcnQgdG8gYSBkZWNpbWFsIHN0cmluZworICAgICAgICAgICAgaWYgZSA+PSAwOgorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IG0gPDwgZQorICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIG0gKiAyKiplID0gKG0gKiA1KiotZSkgKiAxMCoqZQorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IG0gKiA1KiotZQorICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gZQorICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cywgZXhwb25lbnQpCisgICAgICAgICAgICB5aWVsZCBzCisKK2RlZiB0ZXN0X2JvdW5kYXJpZXMoKToKKyAgICAjIGJvdW5kYXJpZXMgZXhwcmVzc2VkIGFzIHRyaXBsZXMgKG4sIGUsIHUpLCB3aGVyZQorICAgICMgbioxMCoqZSBpcyBhbiBhcHByb3hpbWF0aW9uIHRvIHRoZSBib3VuZGFyeSB2YWx1ZSBhbmQKKyAgICAjIHUqMTAqKmUgaXMgMXVscAorICAgIGJvdW5kYXJpZXMgPSBbCisgICAgICAgICgxMDAwMDAwMDAwMDAwMDAwMDAwMCwgLTE5LCAxMTEwKSwgICAjIGEgcG93ZXIgb2YgMiBib3VuZGFyeSAoMS4wKQorICAgICAgICAoMTc5NzY5MzEzNDg2MjMxNTkwNzcsIDI4OSwgMTk5NSksICAgIyBvdmVyZmxvdyBib3VuZGFyeSAoMi4qKjEwMjQpCisgICAgICAgICgyMjI1MDczODU4NTA3MjAxMzgzMSwgLTMyNywgNDk0MSksICAjIG5vcm1hbC9zdWJub3JtYWwgKDIuKiotMTAyMikKKyAgICAgICAgKDAsIC0zMjcsIDQ5NDEpLCAgICAgICAgICAgICAgICAgICAgICMgemVybworICAgICAgICBdCisgICAgZm9yIG4sIGUsIHUgaW4gYm91bmRhcmllczoKKyAgICAgICAgZm9yIGogaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShURVNUX1NJWkUpOgorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IG4gKyByYW5kb20ucmFuZHJhbmdlKC0zKnUsIDMqdSkKKyAgICAgICAgICAgICAgICBleHBvbmVudCA9IGUKKyAgICAgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzLCBleHBvbmVudCkKKyAgICAgICAgICAgICAgICB5aWVsZCBzCisgICAgICAgICAgICBuICo9IDEwCisgICAgICAgICAgICB1ICo9IDEwCisgICAgICAgICAgICBlIC09IDEKKworZGVmIHRlc3RfdW5kZXJmbG93X2JvdW5kYXJ5KCk6CisgICAgIyB0ZXN0IHZhbHVlcyBjbG9zZSB0byAyKiotMTA3NSwgdGhlIHVuZGVyZmxvdyBib3VuZGFyeTsgc2ltaWxhcgorICAgICMgdG8gYm91bmRhcnlfdGVzdHMsIGV4Y2VwdCB0aGF0IHRoZSByYW5kb20gZXJyb3IgZG9lc24ndCBzY2FsZQorICAgICMgd2l0aCBuCisgICAgZm9yIGV4cG9uZW50IGluIHJhbmdlKC00MDAsIC0zMjApOgorICAgICAgICBiYXNlID0gMTAqKi1leHBvbmVudCAvLyAyKioxMDc1CisgICAgICAgIGZvciBqIGluIHJhbmdlKFRFU1RfU0laRSk6CisgICAgICAgICAgICBkaWdpdHMgPSBiYXNlICsgcmFuZG9tLnJhbmRyYW5nZSgtMTAwMCwgMTAwMCkKKyAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMsIGV4cG9uZW50KQorICAgICAgICAgICAgeWllbGQgcworCitkZWYgdGVzdF9iaWdjb21wKCk6CisgICAgZm9yIG5kaWdzIGluIDUsIDEwLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgNDAsIDQxLCA1MDoKKyAgICAgICAgZGlnMTAgPSAxMCoqbmRpZ3MKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwICogVEVTVF9TSVpFKToKKyAgICAgICAgICAgIGRpZ2l0cyA9IHJhbmRvbS5yYW5kcmFuZ2UoZGlnMTApCisgICAgICAgICAgICBleHBvbmVudCA9IHJhbmRvbS5yYW5kcmFuZ2UoLTQwMCwgNDAwKQorICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cywgZXhwb25lbnQpCisgICAgICAgICAgICB5aWVsZCBzCisKK2RlZiB0ZXN0X3BhcnNpbmcoKToKKyAgICAjIG1ha2UgJzAnIG1vcmUgbGlrZWx5IHRvIGJlIGNob3NlbiB0aGFuIG90aGVyIGRpZ2l0cworICAgIGRpZ2l0cyA9ICcwMDAwMDAxMjM0NTY3ODknCisgICAgc2lnbnMgPSAoJysnLCAnLScsICcnKQorCisgICAgIyBwdXQgdG9nZXRoZXIgcmFuZG9tIHNob3J0IHZhbGlkIHN0cmluZ3MKKyAgICAjIFxkKlsuXGQqXT9lCisgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgIGZvciBqIGluIHJhbmdlKFRFU1RfU0laRSk6CisgICAgICAgICAgICBzID0gcmFuZG9tLmNob2ljZShzaWducykKKyAgICAgICAgICAgIGludHBhcnRfbGVuID0gcmFuZG9tLnJhbmRyYW5nZSg1KQorICAgICAgICAgICAgcyArPSAnJy5qb2luKHJhbmRvbS5jaG9pY2UoZGlnaXRzKSBmb3IgXyBpbiByYW5nZShpbnRwYXJ0X2xlbikpCisgICAgICAgICAgICBpZiByYW5kb20uY2hvaWNlKFtUcnVlLCBGYWxzZV0pOgorICAgICAgICAgICAgICAgIHMgKz0gJy4nCisgICAgICAgICAgICAgICAgZnJhY3BhcnRfbGVuID0gcmFuZG9tLnJhbmRyYW5nZSg1KQorICAgICAgICAgICAgICAgIHMgKz0gJycuam9pbihyYW5kb20uY2hvaWNlKGRpZ2l0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UoZnJhY3BhcnRfbGVuKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZnJhY3BhcnRfbGVuID0gMAorICAgICAgICAgICAgaWYgcmFuZG9tLmNob2ljZShbVHJ1ZSwgRmFsc2VdKToKKyAgICAgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoWydlJywgJ0UnXSkKKyAgICAgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2Uoc2lnbnMpCisgICAgICAgICAgICAgICAgZXhwb25lbnRfbGVuID0gcmFuZG9tLnJhbmRyYW5nZSgxLCA0KQorICAgICAgICAgICAgICAgIHMgKz0gJycuam9pbihyYW5kb20uY2hvaWNlKGRpZ2l0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UoZXhwb25lbnRfbGVuKSkKKworICAgICAgICAgICAgaWYgaW50cGFydF9sZW4gKyBmcmFjcGFydF9sZW46CisgICAgICAgICAgICAgICAgeWllbGQgcworCit0ZXN0X3BhcnRpY3VsYXIgPSBbCisgICAgICMgc3F1YXJlcworICAgICcxLjAwMDAwMDAwMTAwMDAwMDAwMDI1JywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDI1JywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjUnLAorICAgICcxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAyNScsCisgICAgJzAuOTk5OTk5OTk5MDAwMDAwMDAwMjUnLAorICAgICcwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAyNScsCisgICAgJzAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNScsCisKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICc1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1JywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAyNTAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAxJywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAyNDk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk5OTk5OTk5OTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEnLAorCisgICAgJzAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMjQ5OTk5OTk5OTk5OTk5OTk4MDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMScsCisgICAgJzAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMjUwMDAwMDAxOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5MDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMScsCisKKyAgICAjIHRvdWdoIGNhc2VzIGZvciBsbiBldGMuCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDEnLAorICAgICcwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTg5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5JworICAgIF0KKworCitURVNUQ0FTRVMgPSBbCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X3Nob3J0X2hhbGZ3YXlfY2FzZXMoKV0sCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X2hhbGZ3YXlfY2FzZXMoKV0sCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X2JvdW5kYXJpZXMoKV0sCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X3VuZGVyZmxvd19ib3VuZGFyeSgpXSwKKyAgICAgIFt4IGZvciB4IGluIHRlc3RfYmlnY29tcCgpXSwKKyAgICAgIFt4IGZvciB4IGluIHRlc3RfcGFyc2luZygpXSwKKyAgICAgIHRlc3RfcGFydGljdWxhcgorXQorCitkZWYgdW5fcmFuZGZsb2F0KCk6CisgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgIGwgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFU1s6Nl0pCisgICAgICAgIHlpZWxkIHJhbmRvbS5jaG9pY2UobCkKKyAgICBmb3IgdiBpbiB0ZXN0X3BhcnRpY3VsYXI6CisgICAgICAgIHlpZWxkIHYKKworZGVmIGJpbl9yYW5kZmxvYXQoKToKKyAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgbDEgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFUykKKyAgICAgICAgbDIgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFUykKKyAgICAgICAgeWllbGQgcmFuZG9tLmNob2ljZShsMSksIHJhbmRvbS5jaG9pY2UobDIpCisKK2RlZiB0ZXJuX3JhbmRmbG9hdCgpOgorICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICBsMSA9IHJhbmRvbS5jaG9pY2UoVEVTVENBU0VTKQorICAgICAgICBsMiA9IHJhbmRvbS5jaG9pY2UoVEVTVENBU0VTKQorICAgICAgICBsMyA9IHJhbmRvbS5jaG9pY2UoVEVTVENBU0VTKQorICAgICAgICB5aWVsZCByYW5kb20uY2hvaWNlKGwxKSwgcmFuZG9tLmNob2ljZShsMiksIHJhbmRvbS5jaG9pY2UobDMpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC1tZW1vcnlkZWJ1Z2dlci5zaCBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcnVuYWxsLW1lbW9yeWRlYnVnZ2VyLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ0ZmYzYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC1tZW1vcnlkZWJ1Z2dlci5zaApAQCAtMCwwICsxLDE3NSBAQAorIyEvYmluL3NoCisKKyMKKyMgUHVycG9zZTogdGVzdCB3aXRoIGFuZCB3aXRob3V0IHRocmVhZHMsIGFsbCBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zLCBweWRlYnVnLAorIyAgICAgICAgICByZWZsZWFrcywgcmVsZWFzZSBidWlsZCBhbmQgcmVsZWFzZSBidWlsZCB3aXRoIHZhbGdyaW5kLgorIworIyBTeW5vcHNpczogLi9ydW5hbGwtbWVtb3J5ZGVidWdnZXIuc2ggWy0tYWxsLWNvbmZpZ3M2NCB8IC0tYWxsLWNvbmZpZ3MzMl0KKyMKKyMgUmVxdWlyZW1lbnRzOiB2YWxncmluZAorIworCisjIFNldCBhZGRpdGlvbmFsIENGTEFHUyBmb3IgLi9jb25maWd1cmUKK0FERF9DRkxBR1M9CisKKworQ09ORklHU182ND0ieDY0IHVpbnQxMjggYW5zaTY0IHVuaXZlcnNhbCIKK0NPTkZJR1NfMzI9InBwcm8gYW5zaTMyIGFuc2ktbGVnYWN5IHVuaXZlcnNhbCIKKworVkFMR1JJTkQ9InZhbGdyaW5kIC0tdG9vbD1tZW1jaGVjayAtLWxlYWstcmVzb2x1dGlvbj1oaWdoIFwKKyAgICAgICAgICAtLWRiLWF0dGFjaD15ZXMgLS1zdXBwcmVzc2lvbnM9TWlzYy92YWxncmluZC1weXRob24uc3VwcCIKKworIyBHZXQgYXJncworY2FzZSAkQCBpbgorICAgICAqLS1hbGwtY29uZmlnczY0KikKKyAgICAgICAgIENPTkZJR1M9JENPTkZJR1NfNjQKKyAgICAgICAgIDs7CisgICAgICotLWFsbC1jb25maWdzMzIqKQorICAgICAgICAgQ09ORklHUz0kQ09ORklHU18zMgorICAgICAgICAgOzsKKyAgICAgKikKKyAgICAgICAgIENPTkZJR1M9ImF1dG8iCisgICAgICAgICA7OworZXNhYworCisjIGdtYWtlIHJlcXVpcmVkCitHTUFLRT1gd2hpY2ggZ21ha2VgCitpZiBbIFgiJEdNQUtFIiA9IFgiIiBdOyB0aGVuCisgICAgR01BS0U9bWFrZQorZmkKKworIyBQcmV0dHkgcHJpbnQgY29uZmlndXJhdGlvbnMKK3ByaW50X2NvbmZpZyAoKQoreworICAgIGxlbj1gZWNobyAkQCB8IHdjIC1jYAorICAgIG1hcmdpbj0iIyUiYGV4cHIgXCggNzQgLSAkbGVuIFwpIC8gMmAicyIKKworICAgIGVjaG8gIiIKKyAgICBlY2hvICIjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKyAgICBwcmludGYgJG1hcmdpbiAiIgorICAgIGVjaG8gJEAKKyAgICBlY2hvICIjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKyAgICBlY2hvICIiCit9CisKKworY2QgLi4KKworIyB0ZXN0X2RlY2ltYWw6IHJlZmxlYWssIHJlZ3VsYXIgYW5kIFZhbGdyaW5kIHRlc3RzCitmb3IgYXJncyBpbiAiLS13aXRob3V0LXRocmVhZHMiICIiOyBkbworICAgIGZvciBjb25maWcgaW4gJENPTkZJR1M7IGRvCisKKyAgICAgICAgdW5zZXQgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FCisgICAgICAgIGxpYm1wZGVjX2NvbmZpZz0kY29uZmlnCisgICAgICAgIGlmIFsgWCIkY29uZmlnIiAhPSBYImF1dG8iIF07IHRoZW4KKyAgICAgICAgICAgIFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORT0kY29uZmlnCisgICAgICAgICAgICBleHBvcnQgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxpYm1wZGVjX2NvbmZpZz0iIgorICAgICAgICBmaQorCisgICAgICAgICMjIyMjIyMjIyMjIyByZWZsZWFrIHRlc3RzICMjIyMjIyMjIyMjCisgICAgICAgIHByaW50X2NvbmZpZyAicmVmbGVhayB0ZXN0czogY29uZmlnPSRjb25maWciICRhcmdzCisgICAgICAgIHByaW50ZiAiXG5idWlsZGluZyBweXRob24gLi4uXG5cbiIKKworICAgICAgICBjZCAuLi8uLi8KKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiIC0td2l0aC1weWRlYnVnICRhcmdzID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgJEdNQUtFIHwgZ3JlcCBfZGVjaW1hbAorCisgICAgICAgIHByaW50ZiAiXG5cbiMgPT09PT09PT09PT09PT09PT09PT09PT09IHJlZmxlYWsgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgLi9weXRob24gLW0gdGVzdCAtdWFsbCAtUiAyOjIgdGVzdF9kZWNpbWFsCisKKworICAgICAgICAjIyMjIyMjIyMjIyMgcmVndWxhciB0ZXN0cyAjIyMjIyMjIyMjIworICAgICAgICBwcmludF9jb25maWcgInJlZ3VsYXIgdGVzdHM6IGNvbmZpZz0kY29uZmlnIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisKKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiICRhcmdzID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgJEdNQUtFIHwgZ3JlcCBfZGVjaW1hbAorCisgICAgICAgIHByaW50ZiAiXG5cbiMgPT09PT09PT09PT09PT09PT09PT09PT09IHJlZ3VsYXIgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgLi9weXRob24gLW0gdGVzdCAtdWFsbCB0ZXN0X2RlY2ltYWwKKworCisgICAgICAgICMjIyMjIyMjIyMjIHZhbGdyaW5kIHRlc3RzICMjIyMjIyMjIyMjCisgICAgICAgIHZhbGdyaW5kPSRWQUxHUklORAorICAgICAgICBjYXNlICIkY29uZmlnIiBpbgorICAgICAgICAgICAgIyBWYWxncmluZCBoYXMgbm8gc3VwcG9ydCBmb3IgODAgYml0IGxvbmcgZG91YmxlIGFyaXRobWV0aWMuCisgICAgICAgICAgICBwcHJvKSB2YWxncmluZD0gOzsKKyAgICAgICAgICAgIGF1dG8pIGNhc2UgYHVuYW1lIC1tYCBpbgorICAgICAgICAgICAgICAgICAgICAgIGkzODZ8aTQ4NnxpNTg2fGk2ODYpIHZhbGdyaW5kPSA7OworICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICBlc2FjCisKKyAgICAgICAgcHJpbnRfY29uZmlnICJ2YWxncmluZCB0ZXN0czogY29uZmlnPSRjb25maWciICRhcmdzCisgICAgICAgIHByaW50ZiAiXG5idWlsZGluZyBweXRob24gLi4uXG5cbiIKKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiIC0td2l0aG91dC1weW1hbGxvYyAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PSB2YWxncmluZCB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIgorICAgICAgICAkdmFsZ3JpbmQgLi9weXRob24gLW0gdGVzdCAtdWFsbCB0ZXN0X2RlY2ltYWwKKworICAgICAgICBjZCBNb2R1bGVzL19kZWNpbWFsCisgICAgZG9uZQorZG9uZQorCisjIGRlY2NoZWNrCitjZCAuLi8uLi8KK2ZvciBjb25maWcgaW4gJENPTkZJR1M7IGRvCisgICAgZm9yIGFyZ3MgaW4gIi0td2l0aG91dC10aHJlYWRzIiAiIjsgZG8KKworICAgICAgICB1bnNldCBQWVRIT05fREVDSU1BTF9XSVRIX01BQ0hJTkUKKyAgICAgICAgaWYgWyBYIiRjb25maWciICE9IFgiYXV0byIgXTsgdGhlbgorICAgICAgICAgICAgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FPSRjb25maWcKKyAgICAgICAgICAgIGV4cG9ydCBQWVRIT05fREVDSU1BTF9XSVRIX01BQ0hJTkUKKyAgICAgICAgZmkKKworICAgICAgICAjIyMjIyMjIyMjIyMgZGVidWcgIyMjIyMjIyMjIyMjCisgICAgICAgIHByaW50X2NvbmZpZyAiZGVjY2hlY2s6IGNvbmZpZz0kY29uZmlnIC0td2l0aC1weWRlYnVnIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisKKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiIC0td2l0aC1weWRlYnVnICRhcmdzID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgJEdNQUtFIHwgZ3JlcCBfZGVjaW1hbAorCisgICAgICAgIHByaW50ZiAiXG5cbiMgPT09PT09PT09PT09PT09PT09PT09PT09PT0gZGVidWcgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgLi9weXRob24gTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorCisgICAgICAgICMjIyMjIyMjIyMjIHJlZ3VsYXIgIyMjIyMjIyMjIyMKKyAgICAgICAgcHJpbnRfY29uZmlnICJkZWNjaGVjazogY29uZmlnPSRjb25maWcgIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisKKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiICRhcmdzID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgJEdNQUtFIHwgZ3JlcCBfZGVjaW1hbAorCisgICAgICAgIHByaW50ZiAiXG5cbiMgPT09PT09PT09PT09PT09PT09PT09PT09IHJlZ3VsYXIgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgLi9weXRob24gTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorCisgICAgICAgICMjIyMjIyMjIyMjIHZhbGdyaW5kICMjIyMjIyMjIyMjCisgICAgICAgIHZhbGdyaW5kPSRWQUxHUklORAorICAgICAgICBjYXNlICIkY29uZmlnIiBpbgorICAgICAgICAgICAgIyBWYWxncmluZCBoYXMgbm8gc3VwcG9ydCBmb3IgODAgYml0IGxvbmcgZG91YmxlIGFyaXRobWV0aWMuCisgICAgICAgICAgICBwcHJvKSB2YWxncmluZD0gOzsKKyAgICAgICAgICAgIGF1dG8pIGNhc2UgYHVuYW1lIC1tYCBpbgorICAgICAgICAgICAgICAgICAgICAgIGkzODZ8aTQ4NnxpNTg2fGk2ODYpIHZhbGdyaW5kPSA7OworICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICBlc2FjCisKKyAgICAgICAgcHJpbnRfY29uZmlnICJ2YWxncmluZCBkZWNjaGVjazogY29uZmlnPSRjb25maWcgIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisKKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiIC0td2l0aG91dC1weW1hbGxvYyAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PSB2YWxncmluZCA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iCisgICAgICAgICR2YWxncmluZCAuL3B5dGhvbiBNb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CisgICAgZG9uZQorZG9uZQorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9ydW5hbGwuYmF0IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9ydW5hbGwuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjViYzg3MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC5iYXQKQEAgLTAsMCArMSwxMTEgQEAKK0BFQ0hPIE9GRgorCityZW0gVGVzdCBhbGwgbWFjaGluZSBjb25maWd1cmF0aW9ucywgcHlkZWJ1ZywgcmVmbGVha3MsIHJlbGVhc2UgYnVpbGQuCisKK2NkIC4uXC4uXC4uXAorCisKK2VjaG8uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNobyAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkaW5nIFB5dGhvbgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCisKK2NhbGwgIiVWUzEwMENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDY0Cittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgL3RhcmdldDpjbGVhbiBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybVRhcmdldD14NjQKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciAvdGFyZ2V0OmNsZWFuIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybVRhcmdldD14NjQKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT14NjQKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm09eDY0CisKK2NhbGwgIiVWUzEwMENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDg2Cittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09V2luMzIKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm09V2luMzIKK2VjaG8uCitlY2hvLgorCitlY2hvLgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8gIyAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9kZWNpbWFsOiBwbGF0Zm9ybT14NjQKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorCitjZCBQQ2J1aWxkXGFtZDY0CisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSByZWZsZWFrIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uX2QuZXhlIC1tIHRlc3QgLXVhbGwgLVIgMjoyIHRlc3RfZGVjaW1hbAorZWNoby4KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSByZWd1bGFyIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uLmV4ZSAtbSB0ZXN0IC11YWxsIHRlc3RfZGVjaW1hbAorZWNoby4KK2VjaG8uCisKK2NkIC4uCisKK2VjaG8uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNobyAjICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2RlY2ltYWw6IHBsYXRmb3JtPXg4NgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSByZWZsZWFrIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uX2QuZXhlIC1tIHRlc3QgLXVhbGwgLVIgMjoyIHRlc3RfZGVjaW1hbAorZWNoby4KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSByZWd1bGFyIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uLmV4ZSAtbSB0ZXN0IC11YWxsIHRlc3RfZGVjaW1hbAorZWNoby4KK2VjaG8uCisKK2NkIGFtZDY0CisKK2VjaG8uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNobyAjICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2NoZWNrOiBwbGF0Zm9ybT14NjQKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gZGVidWcgYnVpbGQgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob25fZC5leGUgLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFx0ZXN0c1xkZWNjaGVjay5weQorZWNoby4KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09IHJlbGVhc2UgYnVpbGQgPT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbi5leGUgLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFx0ZXN0c1xkZWNjaGVjay5weQorZWNoby4KK2VjaG8uCisKK2NkIC4uCisKK2VjaG8uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNobyAjICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2NoZWNrOiBwbGF0Zm9ybT14ODYKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IGRlYnVnIGJ1aWxkID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uX2QuZXhlIC4uXE1vZHVsZXNcX2RlY2ltYWxcdGVzdHNcZGVjY2hlY2sucHkKK2VjaG8uCitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PSByZWxlYXNlIGJ1aWxkID09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob24uZXhlIC4uXE1vZHVsZXNcX2RlY2ltYWxcdGVzdHNcZGVjY2hlY2sucHkKK2VjaG8uCitlY2hvLgorCisKK2NkIC4uXE1vZHVsZXNcX2RlY2ltYWxcdGVzdHMKKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCmluZGV4IGMzNmFmNWQuLjZmMTdkODAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKKysrIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwpAQCAtNDgsNiArNDgsNyBAQAogLyogU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9wc2YvbGljZW5zZSBmb3IgbGljZW5zaW5nIGRldGFpbHMuICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2RlZmluZSBWRVJTSU9OICIxLjAuNiIKIApAQCAtNTcsOSArNTgsNiBAQAogLyogTGVhdmUgZGVmaW5lZCB0byBpbmNsdWRlIHRoZSBleHBhdC1iYXNlZCBYTUxQYXJzZXIgdHlwZSAqLwogI2RlZmluZSBVU0VfRVhQQVQKIAotLyogRGVmaW5lIHRvIGRvIGFsbCBleHBhdCBjYWxscyB2aWEgcHlleHBhdCdzIGVtYmVkZGVkIGV4cGF0IGxpYnJhcnkgKi8KLS8qICNkZWZpbmUgVVNFX1BZRVhQQVRfQ0FQSSAqLwotCiAvKiBBbiBlbGVtZW50IGNhbiBob2xkIHRoaXMgbWFueSBjaGlsZHJlbiB3aXRob3V0IGV4dHJhIG1lbW9yeQogICAgYWxsb2NhdGlvbnMuICovCiAjZGVmaW5lIFNUQVRJQ19DSElMRFJFTiA0CkBAIC03MCw3ICs2OCw3IEBACiAgICBoZWxwcyBpZiB5b3UgaGF2ZSBsb3RzIG9mIGxlYWYgbm9kZXMgd2l0aCBhdHRyaWJ1dGVzKS4gKi8KIAogLyogQWxzbyBub3RlIHRoYXQgcHltYWxsb2MgYWx3YXlzIGFsbG9jYXRlcyBibG9ja3MgaW4gbXVsdGlwbGVzIG9mCi0gICBlaWdodCBieXRlcy4gIEZvciB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIGNFbGVtZW50VHJlZSwgdGhpcyBtZWFucworICAgZWlnaHQgYnl0ZXMuICBGb3IgdGhlIGN1cnJlbnQgQyB2ZXJzaW9uIG9mIEVsZW1lbnRUcmVlLCB0aGlzIG1lYW5zCiAgICB0aGF0IHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gc2hvdWxkIGJlIGFuIGV2ZW4gbnVtYmVyLCBhdCBsZWFzdCBvbgogICAgMzItYml0IHBsYXRmb3Jtcy4gKi8KIApAQCAtOTQsMjUgKzkyLDYgQEAKICNkZWZpbmUgTE9DQUwodHlwZSkgc3RhdGljIHR5cGUKICNlbmRpZgogCi0vKiBjb21wYXRpYmlsaXR5IG1hY3JvcyAqLwotI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNjAwMDApCi0jZGVmaW5lIFB5X1JFRkNOVChvYikgKCgoUHlPYmplY3QqKShvYikpLT5vYl9yZWZjbnQpCi0jZGVmaW5lIFB5X1RZUEUob2IpICgoKFB5T2JqZWN0Kikob2IpKS0+b2JfdHlwZSkKLSNlbmRpZgotCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCkKLXR5cGVkZWYgaW50IFB5X3NzaXplX3Q7Ci0jZGVmaW5lIGxlbmZ1bmMgaW5xdWlyeQotI2VuZGlmCi0KLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDQwMDAwKQotI2RlZmluZSBQeURpY3RfQ2hlY2tFeGFjdCBQeURpY3RfQ2hlY2sKLQotI2lmICFkZWZpbmVkKFB5X1JFVFVSTl9OT05FKQotI2RlZmluZSBQeV9SRVRVUk5fTk9ORSByZXR1cm4gUHlfSU5DUkVGKFB5X05vbmUpLCBQeV9Ob25lCi0jZW5kaWYKLSNlbmRpZgotCiAvKiBtYWNyb3MgdXNlZCB0byBzdG9yZSAnam9pbicgZmxhZ3MgaW4gc3RyaW5nIG9iamVjdCBwb2ludGVycy4gIG5vdGUKICAgIHRoYXQgYWxsIHVzZSBvZiB0ZXh0IGFuZCB0YWlsIGFzIG9iamVjdCBwb2ludGVycyBtdXN0IGJlIHdyYXBwZWQgaW4KICAgIEpPSU5fT0JKLiAgc2VlIGNvbW1lbnRzIGluIHRoZSBFbGVtZW50T2JqZWN0IGRlZmluaXRpb24gZm9yIG1vcmUKQEAgLTEyMywxMCArMTAyLDcgQEAKIAogLyogZ2x1ZSBmdW5jdGlvbnMgKHNlZSB0aGUgaW5pdCBmdW5jdGlvbiBmb3IgZGV0YWlscykgKi8KIHN0YXRpYyBQeU9iamVjdCogZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmo7Ci1zdGF0aWMgUHlPYmplY3QqIGVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iajsKIHN0YXRpYyBQeU9iamVjdCogZWxlbWVudHRyZWVfZGVlcGNvcHlfb2JqOwotc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50dHJlZV9pdGVyX29iajsKLXN0YXRpYyBQeU9iamVjdCogZWxlbWVudHRyZWVfaXRlcnRleHRfb2JqOwogc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50cGF0aF9vYmo7CiAKIC8qIGhlbHBlcnMgKi8KQEAgLTIxMCw4ICsxODYsMTcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvKiBJcyB0aGUgZ2l2ZW4gb2JqZWN0IGFuIGVtcHR5IGRpY3Rpb25hcnk/CisqLworc3RhdGljIGludAoraXNfZW1wdHlfZGljdChQeU9iamVjdCAqb2JqKQoreworICAgIHJldHVybiBQeURpY3RfQ2hlY2tFeGFjdChvYmopICYmIFB5RGljdF9TaXplKG9iaikgPT0gMDsKK30KKworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogdGhlIGVsZW1lbnQgdHlwZSAqLworLyogdGhlIEVsZW1lbnQgdHlwZSAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAKQEAgLTIyNiw3ICsyMTEsNyBAQAogICAgIFB5T2JqZWN0KiAqY2hpbGRyZW47CiAKICAgICBQeU9iamVjdCogX2NoaWxkcmVuW1NUQVRJQ19DSElMRFJFTl07Ci0gICAgCisKIH0gRWxlbWVudE9iamVjdEV4dHJhOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yNDksNiArMjM0LDggQEAKIAogICAgIEVsZW1lbnRPYmplY3RFeHRyYSogZXh0cmE7CiAKKyAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7IC8qIEZvciB0cF93ZWFrbGlzdG9mZnNldCAqLworCiB9IEVsZW1lbnRPYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudF9UeXBlOwpAQCAtMjU2LDEwICsyNDMsMTAgQEAKICNkZWZpbmUgRWxlbWVudF9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJkVsZW1lbnRfVHlwZSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIGVsZW1lbnQgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgKi8KKy8qIEVsZW1lbnQgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9yICovCiAKIExPQ0FMKGludCkKLWVsZW1lbnRfbmV3X2V4dHJhKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhdHRyaWIpCitjcmVhdGVfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGF0dHJpYikKIHsKICAgICBzZWxmLT5leHRyYSA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoRWxlbWVudE9iamVjdEV4dHJhKSk7CiAgICAgaWYgKCFzZWxmLT5leHRyYSkKQEAgLTI3OSw0NyArMjY2LDQ4IEBACiB9CiAKIExPQ0FMKHZvaWQpCi1lbGVtZW50X2RlYWxsb2NfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZikKK2RlYWxsb2NfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZikKIHsKKyAgICBFbGVtZW50T2JqZWN0RXh0cmEgKm15ZXh0cmE7CiAgICAgaW50IGk7CiAKLSAgICBQeV9ERUNSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYik7CisgICAgaWYgKCFzZWxmLT5leHRyYSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmV4dHJhLT5sZW5ndGg7IGkrKykKLSAgICAgICAgUHlfREVDUkVGKHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXSk7CisgICAgLyogQXZvaWQgREVDUkVGcyBjYWxsaW5nIGludG8gdGhpcyBjb2RlIGFnYWluIChjeWNsZXMsIGV0Yy4pCisgICAgKi8KKyAgICBteWV4dHJhID0gc2VsZi0+ZXh0cmE7CisgICAgc2VsZi0+ZXh0cmEgPSBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiAhPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuKQotICAgICAgICBQeU9iamVjdF9GcmVlKHNlbGYtPmV4dHJhLT5jaGlsZHJlbik7CisgICAgUHlfREVDUkVGKG15ZXh0cmEtPmF0dHJpYik7CiAKLSAgICBQeU9iamVjdF9GcmVlKHNlbGYtPmV4dHJhKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbXlleHRyYS0+bGVuZ3RoOyBpKyspCisgICAgICAgIFB5X0RFQ1JFRihteWV4dHJhLT5jaGlsZHJlbltpXSk7CisKKyAgICBpZiAobXlleHRyYS0+Y2hpbGRyZW4gIT0gbXlleHRyYS0+X2NoaWxkcmVuKQorICAgICAgICBQeU9iamVjdF9GcmVlKG15ZXh0cmEtPmNoaWxkcmVuKTsKKworICAgIFB5T2JqZWN0X0ZyZWUobXlleHRyYSk7CiB9CiAKKy8qIENvbnZlbmllbmNlIGludGVybmFsIGZ1bmN0aW9uIHRvIGNyZWF0ZSBuZXcgRWxlbWVudCBvYmplY3RzIHdpdGggdGhlIGdpdmVuCisgKiB0YWcgYW5kIGF0dHJpYnV0ZXMuCisqLwogTE9DQUwoUHlPYmplY3QqKQotZWxlbWVudF9uZXcoUHlPYmplY3QqIHRhZywgUHlPYmplY3QqIGF0dHJpYikKK2NyZWF0ZV9uZXdfZWxlbWVudChQeU9iamVjdCogdGFnLCBQeU9iamVjdCogYXR0cmliKQogewogICAgIEVsZW1lbnRPYmplY3QqIHNlbGY7CiAKLSAgICBzZWxmID0gUHlPYmplY3RfTmV3KEVsZW1lbnRPYmplY3QsICZFbGVtZW50X1R5cGUpOworICAgIHNlbGYgPSBQeU9iamVjdF9HQ19OZXcoRWxlbWVudE9iamVjdCwgJkVsZW1lbnRfVHlwZSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiB1c2UgTm9uZSBmb3IgZW1wdHkgZGljdGlvbmFyaWVzICovCi0gICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGF0dHJpYikgJiYgIVB5RGljdF9TaXplKGF0dHJpYikpCi0gICAgICAgIGF0dHJpYiA9IFB5X05vbmU7Ci0KICAgICBzZWxmLT5leHRyYSA9IE5VTEw7CiAKLSAgICBpZiAoYXR0cmliICE9IFB5X05vbmUpIHsKLQotICAgICAgICBpZiAoZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgYXR0cmliKSA8IDApIHsKKyAgICBpZiAoYXR0cmliICE9IFB5X05vbmUgJiYgIWlzX2VtcHR5X2RpY3QoYXR0cmliKSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIGF0dHJpYikgPCAwKSB7CiAgICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotCi0gICAgICAgIHNlbGYtPmV4dHJhLT5sZW5ndGggPSAwOwotICAgICAgICBzZWxmLT5leHRyYS0+YWxsb2NhdGVkID0gU1RBVElDX0NISUxEUkVOOwotICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuOwotCiAgICAgfQogCiAgICAgUHlfSU5DUkVGKHRhZyk7CkBAIC0zMzEsMTEgKzMxOSwxMzEgQEAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgc2VsZi0+dGFpbCA9IFB5X05vbmU7CiAKLSAgICBBTExPQyhzaXplb2YoRWxlbWVudE9iamVjdCksICJjcmVhdGUgZWxlbWVudCIpOworICAgIHNlbGYtPndlYWtyZWZsaXN0ID0gTlVMTDsKIAorICAgIEFMTE9DKHNpemVvZihFbGVtZW50T2JqZWN0KSwgImNyZWF0ZSBlbGVtZW50Iik7CisgICAgUHlPYmplY3RfR0NfVHJhY2soc2VsZik7CiAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitlbGVtZW50X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBFbGVtZW50T2JqZWN0ICplID0gKEVsZW1lbnRPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoZSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgZS0+dGFnID0gUHlfTm9uZTsKKworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIGUtPnRleHQgPSBQeV9Ob25lOworCisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgZS0+dGFpbCA9IFB5X05vbmU7CisKKyAgICAgICAgZS0+ZXh0cmEgPSBOVUxMOworICAgICAgICBlLT53ZWFrcmVmbGlzdCA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QgKillOworfQorCisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGV4dHJhY3RpbmcgdGhlIGF0dHJpYiBkaWN0aW9uYXJ5IGZyb20gYSBrZXl3b3JkcyBkaWN0LgorICogVGhpcyBpcyByZXF1aXJlZCBieSBzb21lIGNvbnN0cnVjdG9ycy9mdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgdGhhdCBjYW4KKyAqIGVpdGhlciBhY2NlcHQgYXR0cmliIGFzIGEga2V5d29yZCBhcmd1bWVudCBvciBhbGwgYXR0cmlidXRlcyBzcGxhc2hlZCAKKyAqIGRpcmVjdGx5IGludG8gKmt3ZHMuCisgKiBJZiB0aGVyZSBpcyBubyAnYXR0cmliJyBrZXl3b3JkLCByZXR1cm4gYW4gZW1wdHkgZGljdC4KKyAqLworc3RhdGljIFB5T2JqZWN0KgorZ2V0X2F0dHJpYl9mcm9tX2tleXdvcmRzKFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICphdHRyaWJfc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImF0dHJpYiIpOworICAgIFB5T2JqZWN0ICphdHRyaWIgPSBQeURpY3RfR2V0SXRlbShrd2RzLCBhdHRyaWJfc3RyKTsKKworICAgIGlmIChhdHRyaWIpIHsKKyAgICAgICAgLyogSWYgYXR0cmliIHdhcyBmb3VuZCBpbiBrd2RzLCBjb3B5IGl0cyB2YWx1ZSBhbmQgcmVtb3ZlIGl0IGZyb20KKyAgICAgICAgICoga3dkcworICAgICAgICAgKi8KKyAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2soYXR0cmliKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYl9zdHIpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImF0dHJpYiBtdXN0IGJlIGRpY3QsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoYXR0cmliKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhdHRyaWIgPSBQeURpY3RfQ29weShhdHRyaWIpOworICAgICAgICBQeURpY3RfRGVsSXRlbShrd2RzLCBhdHRyaWJfc3RyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhdHRyaWIgPSBQeURpY3RfTmV3KCk7CisgICAgfQorCisgICAgUHlfREVDUkVGKGF0dHJpYl9zdHIpOworCisgICAgaWYgKGF0dHJpYikKKyAgICAgICAgUHlEaWN0X1VwZGF0ZShhdHRyaWIsIGt3ZHMpOworICAgIHJldHVybiBhdHRyaWI7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICp0YWc7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBQeU9iamVjdCAqYXR0cmliID0gTlVMTDsKKyAgICBFbGVtZW50T2JqZWN0ICpzZWxmX2VsZW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TyE6RWxlbWVudCIsICZ0YWcsICZQeURpY3RfVHlwZSwgJmF0dHJpYikpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChhdHRyaWIpIHsKKyAgICAgICAgLyogYXR0cmliIHBhc3NlZCBhcyBwb3NpdGlvbmFsIGFyZyAqLworICAgICAgICBhdHRyaWIgPSBQeURpY3RfQ29weShhdHRyaWIpOworICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGt3ZHMpIHsKKyAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKGF0dHJpYiwga3dkcykgPCAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrd2RzKSB7CisgICAgICAgIC8qIGhhdmUga2V5d29yZHMgYXJncyAqLworICAgICAgICBhdHRyaWIgPSBnZXRfYXR0cmliX2Zyb21fa2V5d29yZHMoa3dkcyk7CisgICAgICAgIGlmICghYXR0cmliKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIG5vIGF0dHJpYiBhcmcsIG5vIGt3ZHMsIHNvIG5vIGF0dHJpYnV0ZXMgKi8KKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOworICAgIH0KKworICAgIHNlbGZfZWxlbSA9IChFbGVtZW50T2JqZWN0ICopc2VsZjsKKworICAgIGlmIChhdHRyaWIgIT0gUHlfTm9uZSAmJiAhaXNfZW1wdHlfZGljdChhdHRyaWIpKSB7CisgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZl9lbGVtLCBhdHRyaWIpIDwgMCkgeworICAgICAgICAgICAgUHlPYmplY3RfRGVsKHNlbGZfZWxlbSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBXZSBvd24gYSByZWZlcmVuY2UgdG8gYXR0cmliIGhlcmUgYW5kIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZC4gKi8KKyAgICBQeV9ERUNSRUYoYXR0cmliKTsKKworICAgIC8qIFJlcGxhY2UgdGhlIG9iamVjdHMgYWxyZWFkeSBwb2ludGVkIHRvIGJ5IHRhZywgdGV4dCBhbmQgdGFpbC4gKi8KKyAgICB0bXAgPSBzZWxmX2VsZW0tPnRhZzsKKyAgICBzZWxmX2VsZW0tPnRhZyA9IHRhZzsKKyAgICBQeV9JTkNSRUYodGFnKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKworICAgIHRtcCA9IHNlbGZfZWxlbS0+dGV4dDsKKyAgICBzZWxmX2VsZW0tPnRleHQgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICBQeV9ERUNSRUYoSk9JTl9PQkoodG1wKSk7CisKKyAgICB0bXAgPSBzZWxmX2VsZW0tPnRhaWw7CisgICAgc2VsZl9lbGVtLT50YWlsID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgUHlfREVDUkVGKEpPSU5fT0JKKHRtcCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKIExPQ0FMKGludCkKIGVsZW1lbnRfcmVzaXplKEVsZW1lbnRPYmplY3QqIHNlbGYsIGludCBleHRyYSkKIHsKQEAgLTM0Niw3ICs0NTQsNyBAQAogICAgICAgIGVsZW1lbnRzLiAgc2V0IGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIGlmIGFsbG9jYXRpb24gZmFpbGVkICovCiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogCiAgICAgc2l6ZSA9IHNlbGYtPmV4dHJhLT5sZW5ndGggKyBleHRyYTsKIApAQCAtMzU0LDE0ICs0NjIsMTQgQEAKICAgICAgICAgLyogdXNlIFB5dGhvbiAyLjQncyBsaXN0IGdyb3d0aCBzdHJhdGVneSAqLwogICAgICAgICBzaXplID0gKHNpemUgPj4gMykgKyAoc2l6ZSA8IDkgPyAzIDogNikgKyBzaXplOwogICAgICAgICAvKiBDb3Zlcml0eSBDSUQgIzE4MiBzaXplX2Vycm9yOiBBbGxvY2F0aW5nIDEgYnl0ZXMgdG8gcG9pbnRlciAiY2hpbGRyZW4iCi0gICAgICAgICAqIHdoaWNoIG5lZWRzIGF0IGxlYXN0IDQgYnl0ZXMuIAotICAgICAgICAgKiBBbHRob3VnaCBpdCdzIGEgZmFsc2UgYWxhcm0gYWx3YXlzIGFzc3VtZSBhdCBsZWFzdCBvbmUgY2hpbGQgdG8gCisgICAgICAgICAqIHdoaWNoIG5lZWRzIGF0IGxlYXN0IDQgYnl0ZXMuCisgICAgICAgICAqIEFsdGhvdWdoIGl0J3MgYSBmYWxzZSBhbGFybSBhbHdheXMgYXNzdW1lIGF0IGxlYXN0IG9uZSBjaGlsZCB0bwogICAgICAgICAgKiBiZSBzYWZlLgogICAgICAgICAgKi8KICAgICAgICAgc2l6ZSA9IHNpemUgPyBzaXplIDogMTsKICAgICAgICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiAhPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuKSB7CiAgICAgICAgICAgICAvKiBDb3Zlcml0eSBDSUQgIzE4MiBzaXplX2Vycm9yOiBBbGxvY2F0aW5nIDEgYnl0ZXMgdG8gcG9pbnRlcgotICAgICAgICAgICAgICogImNoaWxkcmVuIiwgd2hpY2ggbmVlZHMgYXQgbGVhc3QgNCBieXRlcy4gQWx0aG91Z2ggaXQncyBhIAorICAgICAgICAgICAgICogImNoaWxkcmVuIiwgd2hpY2ggbmVlZHMgYXQgbGVhc3QgNCBieXRlcy4gQWx0aG91Z2ggaXQncyBhCiAgICAgICAgICAgICAgKiBmYWxzZSBhbGFybSBhbHdheXMgYXNzdW1lIGF0IGxlYXN0IG9uZSBjaGlsZCB0byBiZSBzYWZlLgogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjaGlsZHJlbiA9IFB5T2JqZWN0X1JlYWxsb2Moc2VsZi0+ZXh0cmEtPmNoaWxkcmVuLApAQCAtNDY0LDM2ICs1NzIsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQotewotICAgIFB5T2JqZWN0KiBlbGVtOwotCi0gICAgUHlPYmplY3QqIHRhZzsKLSAgICBQeU9iamVjdCogYXR0cmliID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TyE6RWxlbWVudCIsICZ0YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJmF0dHJpYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGF0dHJpYiB8fCBrdykgewotICAgICAgICBhdHRyaWIgPSAoYXR0cmliKSA/IFB5RGljdF9Db3B5KGF0dHJpYikgOiBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmICghYXR0cmliKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChrdykKLSAgICAgICAgICAgIFB5RGljdF9VcGRhdGUoYXR0cmliLCBrdyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwotICAgIH0KLQotICAgIGVsZW0gPSBlbGVtZW50X25ldyh0YWcsIGF0dHJpYik7Ci0KLSAgICBQeV9ERUNSRUYoYXR0cmliKTsKLQotICAgIHJldHVybiBlbGVtOwotfQotCi1zdGF0aWMgUHlPYmplY3QqCi1zdWJlbGVtZW50KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorc3ViZWxlbWVudChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0KiBlbGVtOwogCkBAIC01MDUsMTggKzU4NCwyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEaWN0X1R5cGUsICZhdHRyaWIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChhdHRyaWIgfHwga3cpIHsKLSAgICAgICAgYXR0cmliID0gKGF0dHJpYikgPyBQeURpY3RfQ29weShhdHRyaWIpIDogUHlEaWN0X05ldygpOworICAgIGlmIChhdHRyaWIpIHsKKyAgICAgICAgLyogYXR0cmliIHBhc3NlZCBhcyBwb3NpdGlvbmFsIGFyZyAqLworICAgICAgICBhdHRyaWIgPSBQeURpY3RfQ29weShhdHRyaWIpOwogICAgICAgICBpZiAoIWF0dHJpYikKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoa3cpCi0gICAgICAgICAgICBQeURpY3RfVXBkYXRlKGF0dHJpYiwga3cpOworICAgICAgICBpZiAoa3dkcykgeworICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoYXR0cmliLCBrd2RzKSA8IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa3dkcykgeworICAgICAgICAvKiBoYXZlIGtleXdvcmQgYXJncyAqLworICAgICAgICBhdHRyaWIgPSBnZXRfYXR0cmliX2Zyb21fa2V5d29yZHMoa3dkcyk7CisgICAgICAgIGlmICghYXR0cmliKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgLyogbm8gYXR0cmliIGFyZywgbm8ga3dkcywgc28gbm8gYXR0cmlidXRlICovCiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKICAgICB9CiAKLSAgICBlbGVtID0gZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOworICAgIGVsZW0gPSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOwogCiAgICAgUHlfREVDUkVGKGF0dHJpYik7CiAKQEAgLTUyOCwyMCArNjE3LDY1IEBACiAgICAgcmV0dXJuIGVsZW07CiB9CiAKK3N0YXRpYyBpbnQKK2VsZW1lbnRfZ2NfdHJhdmVyc2UoRWxlbWVudE9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+dGFnKTsKKyAgICBQeV9WSVNJVChKT0lOX09CSihzZWxmLT50ZXh0KSk7CisgICAgUHlfVklTSVQoSk9JTl9PQkooc2VsZi0+dGFpbCkpOworCisgICAgaWYgKHNlbGYtPmV4dHJhKSB7CisgICAgICAgIGludCBpOworICAgICAgICBQeV9WSVNJVChzZWxmLT5leHRyYS0+YXR0cmliKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+ZXh0cmEtPmxlbmd0aDsgKytpKQorICAgICAgICAgICAgUHlfVklTSVQoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfZ2NfY2xlYXIoRWxlbWVudE9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT50YWcpOworCisgICAgLyogVGhlIGZvbGxvd2luZyBpcyBsaWtlIFB5X0NMRUFSIGZvciBzZWxmLT50ZXh0IGFuZCBzZWxmLT50YWlsLCBidXQKKyAgICAgKiB3cml0dGVuIGV4cGxpY2l0aWx5IGJlY2F1c2UgdGhlIHJlYWwgcG9pbnRlcnMgaGlkZSBiZWhpbmQgYWNjZXNzCisgICAgICogbWFjcm9zLgorICAgICovCisgICAgaWYgKHNlbGYtPnRleHQpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IEpPSU5fT0JKKHNlbGYtPnRleHQpOworICAgICAgICBzZWxmLT50ZXh0ID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorCisgICAgaWYgKHNlbGYtPnRhaWwpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IEpPSU5fT0JKKHNlbGYtPnRhaWwpOworICAgICAgICBzZWxmLT50YWlsID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorCisgICAgLyogQWZ0ZXIgZHJvcHBpbmcgYWxsIHJlZmVyZW5jZXMgZnJvbSBleHRyYSwgaXQncyBubyBsb25nZXIgdmFsaWQgYW55d2F5LAorICAgICAqIHNvIGZ1bGx5IGRlYWxsb2NhdGUgaXQuCisgICAgKi8KKyAgICBkZWFsbG9jX2V4dHJhKHNlbGYpOworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZAogZWxlbWVudF9kZWFsbG9jKEVsZW1lbnRPYmplY3QqIHNlbGYpCiB7Ci0gICAgaWYgKHNlbGYtPmV4dHJhKQotICAgICAgICBlbGVtZW50X2RlYWxsb2NfZXh0cmEoc2VsZik7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhzZWxmKTsKIAotICAgIC8qIGRpc2NhcmQgYXR0cmlidXRlcyAqLwotICAgIFB5X0RFQ1JFRihzZWxmLT50YWcpOwotICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7Ci0gICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRhaWwpKTsKKyAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CisKKyAgICAvKiBlbGVtZW50X2djX2NsZWFyIGNsZWFycyBhbGwgcmVmZXJlbmNlcyBhbmQgZGVhbGxvY2F0ZXMgZXh0cmEKKyAgICAqLworICAgIGVsZW1lbnRfZ2NfY2xlYXIoc2VsZik7CiAKICAgICBSRUxFQVNFKHNpemVvZihFbGVtZW50T2JqZWN0KSwgImRlc3Ryb3kgZWxlbWVudCIpOwotCi0gICAgUHlPYmplY3RfRGVsKHNlbGYpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC01NjEsMTUgKzY5NSwxMiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2NsZWFyKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9jbGVhcm1ldGhvZChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpjbGVhciIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5leHRyYSkgewotICAgICAgICBlbGVtZW50X2RlYWxsb2NfZXh0cmEoc2VsZik7Ci0gICAgICAgIHNlbGYtPmV4dHJhID0gTlVMTDsKLSAgICB9CisgICAgZGVhbGxvY19leHRyYShzZWxmKTsKIAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGV4dCkpOwpAQCAtNTkxLDcgKzcyMiw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6X19jb3B5X18iKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBlbGVtZW50ID0gKEVsZW1lbnRPYmplY3QqKSBlbGVtZW50X25ldygKKyAgICBlbGVtZW50ID0gKEVsZW1lbnRPYmplY3QqKSBjcmVhdGVfbmV3X2VsZW1lbnQoCiAgICAgICAgIHNlbGYtPnRhZywgKHNlbGYtPmV4dHJhKSA/IHNlbGYtPmV4dHJhLT5hdHRyaWIgOiBQeV9Ob25lCiAgICAgICAgICk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtNjA2LDcgKzczNyw3IEBACiAgICAgUHlfSU5DUkVGKEpPSU5fT0JKKGVsZW1lbnQtPnRhaWwpKTsKIAogICAgIGlmIChzZWxmLT5leHRyYSkgewotICAgICAgICAKKwogICAgICAgICBpZiAoZWxlbWVudF9yZXNpemUoZWxlbWVudCwgc2VsZi0+ZXh0cmEtPmxlbmd0aCkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTYxOCw3ICs3NDksNyBAQAogICAgICAgICB9CiAKICAgICAgICAgZWxlbWVudC0+ZXh0cmEtPmxlbmd0aCA9IHNlbGYtPmV4dHJhLT5sZW5ndGg7Ci0gICAgICAgIAorCiAgICAgfQogCiAgICAgcmV0dXJuIChQeU9iamVjdCopIGVsZW1lbnQ7CkBAIC02NTQsMTQgKzc4NSwxNCBAQAogICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwogICAgIH0KIAotICAgIGVsZW1lbnQgPSAoRWxlbWVudE9iamVjdCopIGVsZW1lbnRfbmV3KHRhZywgYXR0cmliKTsKKyAgICBlbGVtZW50ID0gKEVsZW1lbnRPYmplY3QqKSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOwogCiAgICAgUHlfREVDUkVGKHRhZyk7CiAgICAgUHlfREVDUkVGKGF0dHJpYik7CiAKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIAorCiAgICAgdGV4dCA9IGRlZXBjb3B5KEpPSU5fT0JKKHNlbGYtPnRleHQpLCBtZW1vKTsKICAgICBpZiAoIXRleHQpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC02NzUsNyArODA2LDcgQEAKICAgICBlbGVtZW50LT50YWlsID0gSk9JTl9TRVQodGFpbCwgSk9JTl9HRVQoc2VsZi0+dGFpbCkpOwogCiAgICAgaWYgKHNlbGYtPmV4dHJhKSB7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChlbGVtZW50X3Jlc2l6ZShlbGVtZW50LCBzZWxmLT5leHRyYS0+bGVuZ3RoKSA8IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC02ODksNyArODIwLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGVsZW1lbnQtPmV4dHJhLT5sZW5ndGggPSBzZWxmLT5leHRyYS0+bGVuZ3RoOwotICAgICAgICAKKwogICAgIH0KIAogICAgIC8qIGFkZCBvYmplY3QgdG8gbWVtbyBkaWN0aW9uYXJ5IChzbyBkZWVwY29weSB3b24ndCB2aXNpdCBpdCBhZ2FpbikgKi8KQEAgLTcxMSw2ICs4NDIsMTkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorZWxlbWVudF9zaXplb2YoUHlPYmplY3QqIF9zZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBFbGVtZW50T2JqZWN0ICpzZWxmID0gKEVsZW1lbnRPYmplY3QqKV9zZWxmOworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gc2l6ZW9mKEVsZW1lbnRPYmplY3QpOworICAgIGlmIChzZWxmLT5leHRyYSkgeworICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEVsZW1lbnRPYmplY3RFeHRyYSk7CisgICAgICAgIGlmIChzZWxmLT5leHRyYS0+Y2hpbGRyZW4gIT0gc2VsZi0+ZXh0cmEtPl9jaGlsZHJlbikKKyAgICAgICAgICAgIHJlc3VsdCArPSBzaXplb2YoUHlPYmplY3QqKSAqIHNlbGYtPmV4dHJhLT5hbGxvY2F0ZWQ7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKwogTE9DQUwoaW50KQogY2hlY2twYXRoKFB5T2JqZWN0KiB0YWcpCiB7CkBAIC03MjMsMTMgKzg2NywxNiBAQAogICAgIChjaCA9PSAnLycgfHwgY2ggPT0gJyonIHx8IGNoID09ICdbJyB8fCBjaCA9PSAnQCcgfHwgY2ggPT0gJy4nKQogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh0YWcpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0YWcpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9TSVpFKHRhZyk7IGkrKykgewotICAgICAgICAgICAgaWYgKHBbaV0gPT0gJ3snKQorICAgICAgICBjb25zdCBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRhZyk7CisgICAgICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQSh0YWcpOworICAgICAgICB1bnNpZ25lZCBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHRhZyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgaWYgKGNoID09ICd7JykKICAgICAgICAgICAgICAgICBjaGVjayA9IDA7Ci0gICAgICAgICAgICBlbHNlIGlmIChwW2ldID09ICd9JykKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICd9JykKICAgICAgICAgICAgICAgICBjaGVjayA9IDE7Ci0gICAgICAgICAgICBlbHNlIGlmIChjaGVjayAmJiBQQVRIQ0hBUihwW2ldKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrICYmIFBBVEhDSEFSKGNoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTc3Miw2ICs5MTksMTUgQEAKICAgICBzZXFsZW4gPSBQeVNlcXVlbmNlX1NpemUoc2VxKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgc2VxbGVuOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGVsZW1lbnQgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKKyAgICAgICAgaWYgKCFQeU9iamVjdF9Jc0luc3RhbmNlKGVsZW1lbnQsIChQeU9iamVjdCAqKSZFbGVtZW50X1R5cGUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VxKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFuIEVsZW1lbnQsIG5vdCBcIiUuMjAwc1wiIiwKKyAgICAgICAgICAgICAgICBQeV9UWVBFKGVsZW1lbnQpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKICAgICAgICAgaWYgKGVsZW1lbnRfYWRkX3N1YmVsZW1lbnQoc2VsZiwgZWxlbWVudCkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VxKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzg0LDIzICs5NDAsMjcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9maW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgaTsKLQogICAgIFB5T2JqZWN0KiB0YWc7CiAgICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPOmZpbmQiLCAmdGFnLCAmbmFtZXNwYWNlcykpCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCAwfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86ZmluZCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmbmFtZXNwYWNlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICJmaW5kIiwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcworICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZmluZCk7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOworICAgIH0KIAogICAgIGlmICghc2VsZi0+ZXh0cmEpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgICAgICAKKwogICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5leHRyYS0+bGVuZ3RoOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGl0ZW0gPSBzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV07CiAgICAgICAgIGlmIChFbGVtZW50X0NoZWNrRXhhY3QoaXRlbSkgJiYKQEAgLTgxNCwxOSArOTc0LDIyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2ZpbmR0ZXh0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgaTsKLQogICAgIFB5T2JqZWN0KiB0YWc7CiAgICAgUHlPYmplY3QqIGRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98T086ZmluZHRleHQiLCAmdGFnLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQorICAgIF9QeV9JREVOVElGSUVSKGZpbmR0ZXh0KTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgMH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPTzpmaW5kdGV4dCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAiZmluZHRleHQiLCAiT09PTyIsIHNlbGYsIHRhZywgZGVmYXVsdF92YWx1ZSwgbmFtZXNwYWNlcworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZHRleHQsICJPT09PIiwgc2VsZiwgdGFnLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkgewpAQCAtODUxLDIwICsxMDE0LDI0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZmluZGFsbChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK2VsZW1lbnRfZmluZGFsbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgaW50IGk7CiAgICAgUHlPYmplY3QqIG91dDsKLQogICAgIFB5T2JqZWN0KiB0YWc7CiAgICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPOmZpbmRhbGwiLCAmdGFnLCAmbmFtZXNwYWNlcykpCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCAwfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86ZmluZGFsbCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmbmFtZXNwYWNlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICJmaW5kYWxsIiwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcworICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZmluZGFsbCk7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kYWxsLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOworICAgIH0KIAogICAgIG91dCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKCFvdXQpCkBAIC04ODgsMTUgKzEwNTUsMTkgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9pdGVyZmluZChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK2VsZW1lbnRfaXRlcmZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0KiB0YWc7CiAgICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPOml0ZXJmaW5kIiwgJnRhZywgJm5hbWVzcGFjZXMpKQorICAgIF9QeV9JREVOVElGSUVSKGl0ZXJmaW5kKTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzppdGVyZmluZCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmbmFtZXNwYWNlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgIGVsZW1lbnRwYXRoX29iaiwgIml0ZXJmaW5kIiwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICBlbGVtZW50cGF0aF9vYmosICZQeUlkX2l0ZXJmaW5kLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCiAgICAgICAgICk7CiB9CiAKQEAgLTk0OSw2NyArMTEyMCwzMiBAQAogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2l0ZXIoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisKK3N0YXRpYyBQeU9iamVjdCAqCitjcmVhdGVfZWxlbWVudGl0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywgaW50IGdldHRleHQpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitlbGVtZW50X2l0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QqIHJlc3VsdDsKLSAgICAKICAgICBQeU9iamVjdCogdGFnID0gUHlfTm9uZTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOml0ZXIiLCAmdGFnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIWVsZW1lbnR0cmVlX2l0ZXJfb2JqKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICJpdGVyIGhlbHBlciBub3QgZm91bmQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMik7Ci0gICAgaWYgKCFhcmdzKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0lOQ1JFRihzZWxmKTsgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCAoUHlPYmplY3QqKSBzZWxmKTsKLSAgICBQeV9JTkNSRUYodGFnKTsgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgKFB5T2JqZWN0KikgdGFnKTsKLQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZWxlbWVudHRyZWVfaXRlcl9vYmosIGFyZ3MpOwotCi0gICAgUHlfREVDUkVGKGFyZ3MpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY3JlYXRlX2VsZW1lbnRpdGVyKHNlbGYsIHRhZywgMCk7CiB9CiAKIAogc3RhdGljIFB5T2JqZWN0KgogZWxlbWVudF9pdGVydGV4dChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKLSAgICBQeU9iamVjdCogcmVzdWx0OwotICAgIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOml0ZXJ0ZXh0IikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFlbGVtZW50dHJlZV9pdGVydGV4dF9vYmopIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgIml0ZXJ0ZXh0IGhlbHBlciBub3QgZm91bmQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMSk7Ci0gICAgaWYgKCFhcmdzKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0lOQ1JFRihzZWxmKTsgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCAoUHlPYmplY3QqKSBzZWxmKTsKLQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZWxlbWVudHRyZWVfaXRlcnRleHRfb2JqLCBhcmdzKTsKLQotICAgIFB5X0RFQ1JFRihhcmdzKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGNyZWF0ZV9lbGVtZW50aXRlcihzZWxmLCBQeV9Ob25lLCAxKTsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QqCiBlbGVtZW50X2dldGl0ZW0oUHlPYmplY3QqIHNlbGZfLCBQeV9zc2l6ZV90IGluZGV4KQogewpAQCAtMTAzOSw3ICsxMTc1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogCiAgICAgaWYgKGluZGV4IDwgMCkgewogICAgICAgICBpbmRleCArPSBzZWxmLT5leHRyYS0+bGVuZ3RoOwpAQCAtMTExMCw3ICsxMjQ2LDcgQEAKICAgICBpZiAoIWF0dHJpYikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBlbGVtID0gZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOworICAgIGVsZW0gPSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOwogCiAgICAgUHlfREVDUkVGKGF0dHJpYik7CiAKQEAgLTExMTgsMzEgKzEyNTQsNiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X3JlZHVjZShFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpfX3JlZHVjZV9fIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogSGFjayBhbGVydDogVGhpcyBtZXRob2QgaXMgdXNlZCB0byB3b3JrIGFyb3VuZCBhIF9fY29weV9fCi0gICAgICAgcHJvYmxlbSBvbiBjZXJ0YWluIDIuMyBhbmQgMi40IHZlcnNpb25zLiAgVG8gc2F2ZSB0aW1lIGFuZAotICAgICAgIHNpbXBsaWZ5IHRoZSBjb2RlLCB3ZSBjcmVhdGUgdGhlIGNvcHkgaW4gaGVyZSwgYW5kIHVzZSBhIGR1bW15Ci0gICAgICAgY29weWVsZW1lbnQgaGVscGVyIHRvIHRyaWNrIHRoZSBjb3B5IG1vZHVsZSBpbnRvIGRvaW5nIHRoZQotICAgICAgIHJpZ2h0IHRoaW5nLiAqLwotCi0gICAgaWYgKCFlbGVtZW50dHJlZV9jb3B5ZWxlbWVudF9vYmopIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgImNvcHllbGVtZW50IGhlbHBlciBub3QgZm91bmQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKLSAgICAgICAgIk8oTikiLCBlbGVtZW50dHJlZV9jb3B5ZWxlbWVudF9vYmosIGVsZW1lbnRfY29weShzZWxmLCBhcmdzKQotICAgICAgICApOwotfQotCi1zdGF0aWMgUHlPYmplY3QqCiBlbGVtZW50X3JlbW92ZShFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBpbnQgaTsKQEAgLTExODksNyArMTMwMCwxMCBAQAogc3RhdGljIFB5T2JqZWN0KgogZWxlbWVudF9yZXByKEVsZW1lbnRPYmplY3QqIHNlbGYpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RWxlbWVudCAlUiBhdCAlcD4iLCBzZWxmLT50YWcsIHNlbGYpOworICAgIGlmIChzZWxmLT50YWcpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPEVsZW1lbnQgJVIgYXQgJXA+Iiwgc2VsZi0+dGFnLCBzZWxmKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPEVsZW1lbnQgYXQgJXA+Iiwgc2VsZik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTEyMDMsNyArMTMxNyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgICAgIGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKTsKIAogICAgIGF0dHJpYiA9IGVsZW1lbnRfZ2V0X2F0dHJpYihzZWxmKTsKICAgICBpZiAoIWF0dHJpYikKQEAgLTEyNTAsMTMgKzEzNjQsOCBAQAogewogICAgIEVsZW1lbnRPYmplY3QqIHNlbGYgPSAoRWxlbWVudE9iamVjdCopIHNlbGZfOwogCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCkKLSAgICBpZiAoUHlJbnRfQ2hlY2soaXRlbSkgfHwgUHlMb25nX0NoZWNrKGl0ZW0pKSB7Ci0gICAgICAgIGxvbmcgaSA9IFB5SW50X0FzTG9uZyhpdGVtKTsKLSNlbHNlCiAgICAgaWYgKFB5SW5kZXhfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBpID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIFB5RXhjX0luZGV4RXJyb3IpOwotI2VuZGlmCiAKICAgICAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzA3LDEzICsxNDE2LDggQEAKIHsKICAgICBFbGVtZW50T2JqZWN0KiBzZWxmID0gKEVsZW1lbnRPYmplY3QqKSBzZWxmXzsKIAotI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNTAwMDApCi0gICAgaWYgKFB5SW50X0NoZWNrKGl0ZW0pIHx8IFB5TG9uZ19DaGVjayhpdGVtKSkgewotICAgICAgICBsb25nIGkgPSBQeUludF9Bc0xvbmcoaXRlbSk7Ci0jZWxzZQogICAgIGlmIChQeUluZGV4X0NoZWNrKGl0ZW0pKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBQeUV4Y19JbmRleEVycm9yKTsKLSNlbmRpZgogCiAgICAgICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTEzMjksNyArMTQzMyw3IEBACiAgICAgICAgIFB5T2JqZWN0KiBzZXEgPSBOVUxMOwogCiAgICAgICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgICAgIGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKTsKIAogICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoaXRlbSwKICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+bGVuZ3RoLApAQCAtMTMzNyw5ICsxNDQxLDc0IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgICAgIG5ld2xlbiA9IDA7CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBEZWxldGUgc2xpY2UgKi8KKyAgICAgICAgICAgIHNpemVfdCBjdXI7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgICAgIGlmIChzbGljZWxlbiA8PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICAvKiBTaW5jZSB3ZSdyZSBkZWxldGluZywgdGhlIGRpcmVjdGlvbiBvZiB0aGUgcmFuZ2UgZG9lc24ndCBtYXR0ZXIsCisgICAgICAgICAgICAgKiBzbyBmb3Igc2ltcGxpY2l0eSBtYWtlIGl0IGFsd2F5cyBhc2NlbmRpbmcuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHN0ZXAgPCAwKSB7CisgICAgICAgICAgICAgICAgc3RvcCA9IHN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICBzdGFydCA9IHN0b3AgKyBzdGVwICogKHNsaWNlbGVuIC0gMSkgLSAxOworICAgICAgICAgICAgICAgIHN0ZXAgPSAtc3RlcDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXNzZXJ0KChzaXplX3Qpc2xpY2VsZW4gPD0gUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpOworCisgICAgICAgICAgICAvKiByZWN5Y2xlIGlzIGEgbGlzdCB0aGF0IHdpbGwgY29udGFpbiBhbGwgdGhlIGNoaWxkcmVuCisgICAgICAgICAgICAgKiBzY2hlZHVsZWQgZm9yIHJlbW92YWwuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCEocmVjeWNsZSA9IFB5TGlzdF9OZXcoc2xpY2VsZW4pKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBUaGlzIGxvb3Agd2Fsa3Mgb3ZlciBhbGwgdGhlIGNoaWxkcmVuIHRoYXQgaGF2ZSB0byBiZSBkZWxldGVkLAorICAgICAgICAgICAgICogd2l0aCBjdXIgcG9pbnRpbmcgYXQgdGhlbS4gbnVtX21vdmVkIGlzIHRoZSBhbW91bnQgb2YgY2hpbGRyZW4KKyAgICAgICAgICAgICAqIHVudGlsIHRoZSBuZXh0IGRlbGV0ZWQgY2hpbGQgdGhhdCBoYXZlIHRvIGJlICJzaGlmdGVkIGRvd24iIHRvCisgICAgICAgICAgICAgKiBvY2N1cHkgdGhlIGRlbGV0ZWQncyBwbGFjZXMuCisgICAgICAgICAgICAgKiBOb3RlIHRoYXQgaW4gdGhlIGl0aCBpdGVyYXRpb24sIHNoaWZ0aW5nIGlzIGRvbmUgaStpIHBsYWNlcyBkb3duCisgICAgICAgICAgICAgKiBiZWNhdXNlIGkgY2hpbGRyZW4gd2VyZSBhbHJlYWR5IHJlbW92ZWQuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgZm9yIChjdXIgPSBzdGFydCwgaSA9IDA7IGN1ciA8IChzaXplX3Qpc3RvcDsgY3VyICs9IHN0ZXAsICsraSkgeworICAgICAgICAgICAgICAgIC8qIENvbXB1dGUgaG93IG1hbnkgY2hpbGRyZW4gaGF2ZSB0byBiZSBtb3ZlZCwgY2xpcHBpbmcgYXQgdGhlCisgICAgICAgICAgICAgICAgICogbGlzdCBlbmQuCisgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG51bV9tb3ZlZCA9IHN0ZXAgLSAxOworICAgICAgICAgICAgICAgIGlmIChjdXIgKyBzdGVwID49IChzaXplX3Qpc2VsZi0+ZXh0cmEtPmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBudW1fbW92ZWQgPSBzZWxmLT5leHRyYS0+bGVuZ3RoIC0gY3VyIC0gMTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0ocmVjeWNsZSwgaSwgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2N1cl0pOworCisgICAgICAgICAgICAgICAgbWVtbW92ZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICsgY3VyIC0gaSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICsgY3VyICsgMSwKKyAgICAgICAgICAgICAgICAgICAgbnVtX21vdmVkICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogTGVmdG92ZXIgInRhaWwiIGFmdGVyIHRoZSBsYXN0IHJlbW92ZWQgY2hpbGQgKi8KKyAgICAgICAgICAgIGN1ciA9IHN0YXJ0ICsgKHNpemVfdClzbGljZWxlbiAqIHN0ZXA7CisgICAgICAgICAgICBpZiAoY3VyIDwgKHNpemVfdClzZWxmLT5leHRyYS0+bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgbWVtbW92ZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICsgY3VyIC0gc2xpY2VsZW4sCisgICAgICAgICAgICAgICAgICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbiArIGN1ciwKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYtPmV4dHJhLT5sZW5ndGggLSBjdXIpICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmxlbmd0aCAtPSBzbGljZWxlbjsKKworICAgICAgICAgICAgLyogRGlzY2FyZCB0aGUgcmVjeWNsZSBsaXN0IHdpdGggYWxsIHRoZSBkZWxldGVkIHN1Yi1lbGVtZW50cyAqLworICAgICAgICAgICAgUHlfWERFQ1JFRihyZWN5Y2xlKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogQSBuZXcgc2xpY2UgaXMgYWN0dWFsbHkgYmVpbmcgYXNzaWduZWQgKi8KICAgICAgICAgICAgIHNlcSA9IFB5U2VxdWVuY2VfRmFzdCh2YWx1ZSwgIiIpOwogICAgICAgICAgICAgaWYgKCFzZXEpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCkBAIC0xMzU0LDE5ICsxNTIzLDEzIEBACiAgICAgICAgIGlmIChzdGVwICE9ICAxICYmIG5ld2xlbiAhPSBzbGljZWxlbikKICAgICAgICAgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCkKLSAgICAgICAgICAgICAgICAiYXR0ZW1wdCB0byBhc3NpZ24gc2VxdWVuY2Ugb2Ygc2l6ZSAlZCAiCi0gICAgICAgICAgICAgICAgInRvIGV4dGVuZGVkIHNsaWNlIG9mIHNpemUgJWQiLAotI2Vsc2UKICAgICAgICAgICAgICAgICAiYXR0ZW1wdCB0byBhc3NpZ24gc2VxdWVuY2Ugb2Ygc2l6ZSAlemQgIgogICAgICAgICAgICAgICAgICJ0byBleHRlbmRlZCBzbGljZSBvZiBzaXplICV6ZCIsCi0jZW5kaWYKICAgICAgICAgICAgICAgICBuZXdsZW4sIHNsaWNlbGVuCiAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0KICAgICAgICAgLyogUmVzaXplIGJlZm9yZSBjcmVhdGluZyB0aGUgcmVjeWNsZSBiaW4sIHRvIHByZXZlbnQgcmVmbGVha3MuICovCiAgICAgICAgIGlmIChuZXdsZW4gPiBzbGljZWxlbikgewogICAgICAgICAgICAgaWYgKGVsZW1lbnRfcmVzaXplKHNlbGYsIG5ld2xlbiAtIHNsaWNlbGVuKSA8IDApIHsKQEAgLTE0MzEsMTQgKzE1OTQsMTQgQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIGVsZW1lbnRfbWV0aG9kc1tdID0gewogCi0gICAgeyJjbGVhciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9jbGVhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImNsZWFyIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2NsZWFybWV0aG9kLCBNRVRIX1ZBUkFSR1N9LAogCiAgICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZ2V0LCBNRVRIX1ZBUkFSR1N9LAogICAgIHsic2V0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X3NldCwgTUVUSF9WQVJBUkdTfSwKIAotICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZmluZHRleHQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZHRleHQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmRhbGwsIE1FVEhfVkFSQVJHU30sCisgICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAorICAgIHsiZmluZHRleHQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZHRleHQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAorICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kYWxsLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKIAogICAgIHsiYXBwZW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2FwcGVuZCwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImV4dGVuZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9leHRlbmQsIE1FVEhfVkFSQVJHU30sCkBAIC0xNDQ3LDcgKzE2MTAsNyBAQAogCiAgICAgeyJpdGVyIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXIsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpdGVydGV4dCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVydGV4dCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiaXRlcmZpbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlcmZpbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAogCiAgICAgeyJnZXRpdGVyYXRvciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0Y2hpbGRyZW4iLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZ2V0Y2hpbGRyZW4sIE1FVEhfVkFSQVJHU30sCkBAIC0xNDU5LDE4ICsxNjIyLDcgQEAKIAogICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfY29weSwgTUVUSF9WQVJBUkdTfSwKICAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9kZWVwY29weSwgTUVUSF9WQVJBUkdTfSwKLQotICAgIC8qIFNvbWUgMi4zIGFuZCAyLjQgdmVyc2lvbnMgZG8gbm90IGhhbmRsZSB0aGUgX19jb3B5X18gbWV0aG9kIG9uCi0gICAgICAgQyBvYmplY3RzIGNvcnJlY3RseSwgc28gd2UgaGF2ZSB0byBmYWtlIGl0IHVzaW5nIGEgX19yZWR1Y2VfXy0KLSAgICAgICBiYXNlZCBoYWNrIChzZWUgdGhlIGVsZW1lbnRfcmVkdWNlIGltcGxlbWVudGF0aW9uIGFib3ZlIGZvcgotICAgICAgIGRldGFpbHMpLiAqLwotCi0gICAgLyogVGhlIGJlaGF2aW91ciBoYXMgYmVlbiBjaGFuZ2VkIGluIDIuMy41IGFuZCAyLjQuMSwgc28gd2UncmUKLSAgICAgICB1c2luZyBhIHJ1bnRpbWUgdGVzdCB0byBmaWd1cmUgb3V0IGlmIHdlIG5lZWQgdG8gZmFrZSB0aGluZ3MKLSAgICAgICBvciBub3cgKHNlZSB0aGUgaW5pdCBjb2RlIGJlbG93KS4gIFRoZSBmb2xsb3dpbmcgZW50cnkgaXMKLSAgICAgICBlbmFibGVkIG9ubHkgaWYgdGhlIGhhY2sgaXMgbmVlZGVkLiAqLwotCi0gICAgeyIhX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9yZWR1Y2UsIE1FVEhfVkFSQVJHU30sCisgICAgeyJfX3NpemVvZl9fIiwgZWxlbWVudF9zaXplb2YsIE1FVEhfTk9BUkdTfSwKIAogICAgIHtOVUxMLCBOVUxMfQogfTsKQEAgLTE0ODMsNyArMTYzNSw3IEBACiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQogICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKLSAgICAKKwogICAgIGlmIChuYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNTEwLDcgKzE2NjIsNyBAQAogICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJhdHRyaWIiKSA9PSAwKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgICAgIGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKTsKICAgICAgICAgcmVzID0gZWxlbWVudF9nZXRfYXR0cmliKHNlbGYpOwogICAgIH0KIApAQCAtMTUyMSwxNiArMTY3MywxNSBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBpbnQKLWVsZW1lbnRfc2V0YXR0cihFbGVtZW50T2JqZWN0KiBzZWxmLCBjb25zdCBjaGFyKiBuYW1lLCBQeU9iamVjdCogdmFsdWUpCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X3NldGF0dHJvKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lb2JqLCBQeU9iamVjdCogdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAiY2FuJ3QgZGVsZXRlIGVsZW1lbnQgYXR0cmlidXRlcyIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgY2hhciAqbmFtZSA9ICIiOworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpCisgICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWVvYmopOworCisgICAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoc3RyY21wKG5hbWUsICJ0YWciKSA9PSAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT50YWcpOwpAQCAtMTU0NiwxNiArMTY5NywxNiBAQAogICAgICAgICBQeV9JTkNSRUYoc2VsZi0+dGFpbCk7CiAgICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgImF0dHJpYiIpID09IDApIHsKICAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYik7CiAgICAgICAgIHNlbGYtPmV4dHJhLT5hdHRyaWIgPSB2YWx1ZTsKICAgICAgICAgUHlfSU5DUkVGKHNlbGYtPmV4dHJhLT5hdHRyaWIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBlbGVtZW50X2FzX3NlcXVlbmNlID0gewpAQCAtMTU3OCw1NiArMTcyOSwzMzEgQEAKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiRWxlbWVudCIsIHNpemVvZihFbGVtZW50T2JqZWN0KSwgMCwKICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpZWxlbWVudF9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAvKiB0cF9nZXRhdHRyICovCi0gICAgKHNldGF0dHJmdW5jKWVsZW1lbnRfc2V0YXR0ciwgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsIC8qIHRwX3Jlc2VydmVkICovCi0gICAgKHJlcHJmdW5jKWVsZW1lbnRfcmVwciwgLyogdHBfcmVwciAqLwotICAgIDAsIC8qIHRwX2FzX251bWJlciAqLwotICAgICZlbGVtZW50X2FzX3NlcXVlbmNlLCAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgICZlbGVtZW50X2FzX21hcHBpbmcsIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAvKiB0cF9oYXNoICovCi0gICAgMCwgLyogdHBfY2FsbCAqLwotICAgIDAsIC8qIHRwX3N0ciAqLwotICAgIChnZXRhdHRyb2Z1bmMpZWxlbWVudF9nZXRhdHRybywgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAvKiB0cF9kb2MgKi8KLSAgICAwLCAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsIC8qIHRwX2NsZWFyICovCi0gICAgMCwgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAvKiB0cF9pdGVybmV4dCAqLwotICAgIGVsZW1lbnRfbWV0aG9kcywgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsIC8qIHRwX21lbWJlcnMgKi8KKyAgICAoZGVzdHJ1Y3RvcillbGVtZW50X2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKWVsZW1lbnRfcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZlbGVtZW50X2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgJmVsZW1lbnRfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgKGdldGF0dHJvZnVuYyllbGVtZW50X2dldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAoc2V0YXR0cm9mdW5jKWVsZW1lbnRfc2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWVsZW1lbnRfZ2NfdHJhdmVyc2UsICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWVsZW1lbnRfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihFbGVtZW50T2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGVsZW1lbnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKWVsZW1lbnRfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgZWxlbWVudF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogRWxlbWVudCBpdGVyYXRvciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBFbGVtZW50SXRlck9iamVjdCByZXByZXNlbnRzIHRoZSBpdGVyYXRpb24gc3RhdGUgb3ZlciBhbiBYTUwgZWxlbWVudCBpbgorICogcHJlLW9yZGVyIHRyYXZlcnNhbC4gVG8ga2VlcCB0cmFjayBvZiB3aGljaCBzdWItZWxlbWVudCBzaG91bGQgYmUgcmV0dXJuZWQKKyAqIG5leHQsIGEgc3RhY2sgb2YgcGFyZW50cyBpcyBtYWludGFpbmVkLiBUaGlzIGlzIGEgc3RhbmRhcmQgc3RhY2stYmFzZWQKKyAqIGl0ZXJhdGl2ZSBwcmUtb3JkZXIgdHJhdmVyc2FsIG9mIGEgdHJlZS4KKyAqIFRoZSBzdGFjayBpcyBtYW5hZ2VkIHVzaW5nIGEgc2luZ2xlLWxpbmtlZCBsaXN0IHN0YXJ0aW5nIGF0IHBhcmVudF9zdGFjay4KKyAqIEVhY2ggc3RhY2sgbm9kZSBjb250YWlucyB0aGUgc2F2ZWQgcGFyZW50IHRvIHdoaWNoIHdlIHNob3VsZCByZXR1cm4gYWZ0ZXIKKyAqIHRoZSBjdXJyZW50IG9uZSBpcyBleGhhdXN0ZWQsIGFuZCB0aGUgbmV4dCBjaGlsZCB0byBleGFtaW5lIGluIHRoYXQgcGFyZW50LgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJlbnRMb2NhdG9yX3QgeworICAgIEVsZW1lbnRPYmplY3QgKnBhcmVudDsKKyAgICBQeV9zc2l6ZV90IGNoaWxkX2luZGV4OworICAgIHN0cnVjdCBQYXJlbnRMb2NhdG9yX3QgKm5leHQ7Cit9IFBhcmVudExvY2F0b3I7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUGFyZW50TG9jYXRvciAqcGFyZW50X3N0YWNrOworICAgIEVsZW1lbnRPYmplY3QgKnJvb3RfZWxlbWVudDsKKyAgICBQeU9iamVjdCAqc291Z2h0X3RhZzsKKyAgICBpbnQgcm9vdF9kb25lOworICAgIGludCBnZXR0ZXh0OworfSBFbGVtZW50SXRlck9iamVjdDsKKworCitzdGF0aWMgdm9pZAorZWxlbWVudGl0ZXJfZGVhbGxvYyhFbGVtZW50SXRlck9iamVjdCAqaXQpCit7CisgICAgUGFyZW50TG9jYXRvciAqcCA9IGl0LT5wYXJlbnRfc3RhY2s7CisgICAgd2hpbGUgKHApIHsKKyAgICAgICAgUGFyZW50TG9jYXRvciAqdGVtcCA9IHA7CisgICAgICAgIFB5X1hERUNSRUYocC0+cGFyZW50KTsKKyAgICAgICAgcCA9IHAtPm5leHQ7CisgICAgICAgIFB5T2JqZWN0X0ZyZWUodGVtcCk7CisgICAgfQorCisgICAgUHlfWERFQ1JFRihpdC0+c291Z2h0X3RhZyk7CisgICAgUHlfWERFQ1JFRihpdC0+cm9vdF9lbGVtZW50KTsKKworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soaXQpOworICAgIFB5T2JqZWN0X0dDX0RlbChpdCk7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRpdGVyX3RyYXZlcnNlKEVsZW1lbnRJdGVyT2JqZWN0ICppdCwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUGFyZW50TG9jYXRvciAqcCA9IGl0LT5wYXJlbnRfc3RhY2s7CisgICAgd2hpbGUgKHApIHsKKyAgICAgICAgUHlfVklTSVQocC0+cGFyZW50KTsKKyAgICAgICAgcCA9IHAtPm5leHQ7CisgICAgfQorCisgICAgUHlfVklTSVQoaXQtPnJvb3RfZWxlbWVudCk7CisgICAgUHlfVklTSVQoaXQtPnNvdWdodF90YWcpOworICAgIHJldHVybiAwOworfQorCisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGVsZW1lbnRpdGVyX25leHQuIEFkZCBhIG5ldyBwYXJlbnQgdG8gdGhlIHBhcmVudCBzdGFjay4KKyAqLworc3RhdGljIFBhcmVudExvY2F0b3IgKgorcGFyZW50X3N0YWNrX3B1c2hfbmV3KFBhcmVudExvY2F0b3IgKnN0YWNrLCBFbGVtZW50T2JqZWN0ICpwYXJlbnQpCit7CisgICAgUGFyZW50TG9jYXRvciAqbmV3X25vZGUgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFBhcmVudExvY2F0b3IpKTsKKyAgICBpZiAobmV3X25vZGUpIHsKKyAgICAgICAgbmV3X25vZGUtPnBhcmVudCA9IHBhcmVudDsKKyAgICAgICAgUHlfSU5DUkVGKHBhcmVudCk7CisgICAgICAgIG5ld19ub2RlLT5jaGlsZF9pbmRleCA9IDA7CisgICAgICAgIG5ld19ub2RlLT5uZXh0ID0gc3RhY2s7CisgICAgfQorICAgIHJldHVybiBuZXdfbm9kZTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2VsZW1lbnRpdGVyX25leHQoRWxlbWVudEl0ZXJPYmplY3QgKml0KQoreworICAgIC8qIFN1Yi1lbGVtZW50IGl0ZXJhdG9yLgorICAgICAqIAorICAgICAqIEEgc2hvcnQgbm90ZSBvbiBnZXR0ZXh0OiB0aGlzIGZ1bmN0aW9uIHNlcnZlcyBib3RoIHRoZSBpdGVyKCkgYW5kCisgICAgICogaXRlcnRleHQoKSBtZXRob2RzIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIGZldworICAgICAqIHNtYWxsIGRpZmZlcmVuY2VzIGluIHRoZSB3YXkgdGhlc2UgaXRlcmF0aW9ucyB3b3JrLiBOYW1lbHk6CisgICAgICogICAtIGl0ZXJ0ZXh0KCkgb25seSB5aWVsZHMgdGV4dCBmcm9tIG5vZGVzIHRoYXQgaGF2ZSBpdCwgYW5kIGNvbnRpbnVlcworICAgICAqICAgICBpdGVyYXRpbmcgd2hlbiBhIG5vZGUgZG9lc24ndCBoYXZlIHRleHQgKHNvIGl0IGRvZXNuJ3QgcmV0dXJuIGFueQorICAgICAqICAgICBub2RlIGxpa2UgaXRlcigpKQorICAgICAqICAgLSBpdGVydGV4dCgpIGFsc28gaGFzIHRvIGhhbmRsZSB0YWlsLCBhZnRlciBmaW5pc2hpbmcgd2l0aCBhbGwgdGhlCisgICAgICogICAgIGNoaWxkcmVuIG9mIGEgbm9kZS4KKyAgICAgKi8KKyAgICBFbGVtZW50T2JqZWN0ICpjdXJfcGFyZW50OworICAgIFB5X3NzaXplX3QgY2hpbGRfaW5kZXg7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICAvKiBIYW5kbGUgdGhlIGNhc2UgcmVhY2hlZCBpbiB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgaXRlcmF0aW9uLCB3aGVyZQorICAgICAgICAgKiB0aGUgcGFyZW50IHN0YWNrIGlzIGVtcHR5LiBUaGUgcm9vdF9kb25lIGZsYWcgZ2l2ZXMgdXMgaW5kaWNhdGlvbgorICAgICAgICAgKiB3aGV0aGVyIHdlJ3ZlIGp1c3Qgc3RhcnRlZCBpdGVyYXRpbmcgKHNvIHJvb3RfZG9uZSBpcyAwKSwgaW4gd2hpY2gKKyAgICAgICAgICogY2FzZSB0aGUgcm9vdCBpcyByZXR1cm5lZC4gSWYgcm9vdF9kb25lIGlzIDEgYW5kIHdlJ3JlIGhlcmUsIHRoZQorICAgICAgICAgKiBpdGVyYXRvciBpcyBleGhhdXN0ZWQuCisgICAgICAgICAqLworICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCkgeworICAgICAgICAgICAgaWYgKGl0LT5yb290X2RvbmUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LT5wYXJlbnRfc3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+cm9vdF9lbGVtZW50KTsKKyAgICAgICAgICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaXQtPnJvb3RfZG9uZSA9IDE7CisgICAgICAgICAgICAgICAgaWYgKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUgfHwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0LT5yb290X2VsZW1lbnQtPnRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gSk9JTl9PQkooaXQtPnJvb3RfZWxlbWVudC0+dGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSXNUcnVlKHRleHQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0LT5yb290X2VsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0LT5yb290X2VsZW1lbnQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBTZWUgaWYgdGhlcmUgYXJlIGNoaWxkcmVuIGxlZnQgdG8gdHJhdmVyc2UgaW4gdGhlIGN1cnJlbnQgcGFyZW50LiBJZgorICAgICAgICAgKiB5ZXMsIHZpc2l0IHRoZSBuZXh0IGNoaWxkLiBJZiBub3QsIHBvcCB0aGUgc3RhY2sgYW5kIHRyeSBhZ2Fpbi4KKyAgICAgICAgICovCisgICAgICAgIGN1cl9wYXJlbnQgPSBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQ7CisgICAgICAgIGNoaWxkX2luZGV4ID0gaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXg7CisgICAgICAgIGlmIChjdXJfcGFyZW50LT5leHRyYSAmJiBjaGlsZF9pbmRleCA8IGN1cl9wYXJlbnQtPmV4dHJhLT5sZW5ndGgpIHsKKyAgICAgICAgICAgIEVsZW1lbnRPYmplY3QgKmNoaWxkID0gKEVsZW1lbnRPYmplY3QgKikKKyAgICAgICAgICAgICAgICBjdXJfcGFyZW50LT5leHRyYS0+Y2hpbGRyZW5bY2hpbGRfaW5kZXhdOworICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXgrKzsKKyAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2tfcHVzaF9uZXcoaXQtPnBhcmVudF9zdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQpOworICAgICAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRleHQgPSBKT0lOX09CSihjaGlsZC0+dGV4dCk7CisgICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0lzVHJ1ZSh0ZXh0KSkgeworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGV4dCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQtPnNvdWdodF90YWcgPT0gUHlfTm9uZSB8fAorICAgICAgICAgICAgICAgIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChjaGlsZC0+dGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+c291Z2h0X3RhZywgUHlfRVEpID09IDEpIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoY2hpbGQpOworICAgICAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiljaGlsZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0YWlsID0gaXQtPmdldHRleHQgPyBKT0lOX09CSihjdXJfcGFyZW50LT50YWlsKSA6IFB5X05vbmU7ICAgICAgICAgICAgCisgICAgICAgICAgICBQYXJlbnRMb2NhdG9yICpuZXh0ID0gaXQtPnBhcmVudF9zdGFjay0+bmV4dDsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoaXQtPnBhcmVudF9zdGFjay0+cGFyZW50KTsKKyAgICAgICAgICAgIFB5T2JqZWN0X0ZyZWUoaXQtPnBhcmVudF9zdGFjayk7CisgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gbmV4dDsKKworICAgICAgICAgICAgLyogTm90ZSB0aGF0IGV4dHJhIGNvbmRpdGlvbiBvbiBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgaGVyZTsKKyAgICAgICAgICAgICAqIHRoaXMgaXMgYmVjYXVzZSBpdGVydGV4dCgpIGlzIHN1cHBvc2VkIHRvIG9ubHkgcmV0dXJuICppbm5lcioKKyAgICAgICAgICAgICAqIHRleHQsIG5vdCB0ZXh0IGZvbGxvd2luZyB0aGUgZWxlbWVudCBpdCBiZWdhbiBpdGVyYXRpb24gd2l0aC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCAmJiBQeU9iamVjdF9Jc1RydWUodGFpbCkpIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGFpbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRhaWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEVsZW1lbnRJdGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9lbGVtZW50dHJlZS5fZWxlbWVudF9pdGVyYXRvciIsICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKEVsZW1lbnRJdGVyT2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWVsZW1lbnRpdGVyX2RlYWxsb2MsICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyllbGVtZW50aXRlcl90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpZWxlbWVudGl0ZXJfbmV4dCwgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2NyZWF0ZV9lbGVtZW50aXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLCBpbnQgZ2V0dGV4dCkKK3sKKyAgICBFbGVtZW50SXRlck9iamVjdCAqaXQ7CisgICAgUHlPYmplY3QgKnN0YXIgPSBOVUxMOworCisgICAgaXQgPSBQeU9iamVjdF9HQ19OZXcoRWxlbWVudEl0ZXJPYmplY3QsICZFbGVtZW50SXRlcl9UeXBlKTsKKyAgICBpZiAoIWl0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIShpdC0+cGFyZW50X3N0YWNrID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQYXJlbnRMb2NhdG9yKSkpKSB7CisgICAgICAgIFB5T2JqZWN0X0dDX0RlbChpdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCA9IE5VTEw7CisgICAgaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXggPSAwOworICAgIGl0LT5wYXJlbnRfc3RhY2stPm5leHQgPSBOVUxMOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayh0YWcpKQorICAgICAgICBzdGFyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIioiKTsKKyAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKHRhZykpCisgICAgICAgIHN0YXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoIioiKTsKKworICAgIGlmIChzdGFyICYmIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCh0YWcsIHN0YXIsIFB5X0VRKSA9PSAxKQorICAgICAgICB0YWcgPSBQeV9Ob25lOworCisgICAgUHlfWERFQ1JFRihzdGFyKTsKKyAgICBpdC0+c291Z2h0X3RhZyA9IHRhZzsKKyAgICBpdC0+cm9vdF9kb25lID0gMDsKKyAgICBpdC0+Z2V0dGV4dCA9IGdldHRleHQ7CisgICAgaXQtPnJvb3RfZWxlbWVudCA9IHNlbGY7CisKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgUHlfSU5DUkVGKHRhZyk7CisKKyAgICBQeU9iamVjdF9HQ19UcmFjayhpdCk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OworfQorCisKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAvKiB0aGUgdHJlZSBidWlsZGVyIHR5cGUgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKIAotICAgIFB5T2JqZWN0KiByb290OyAvKiByb290IG5vZGUgKGZpcnN0IGNyZWF0ZWQgbm9kZSkgKi8KKyAgICBQeU9iamVjdCAqcm9vdDsgLyogcm9vdCBub2RlIChmaXJzdCBjcmVhdGVkIG5vZGUpICovCiAKLSAgICBFbGVtZW50T2JqZWN0KiB0aGlzOyAvKiBjdXJyZW50IG5vZGUgKi8KLSAgICBFbGVtZW50T2JqZWN0KiBsYXN0OyAvKiBtb3N0IHJlY2VudGx5IGNyZWF0ZWQgbm9kZSAqLworICAgIEVsZW1lbnRPYmplY3QgKnRoaXM7IC8qIGN1cnJlbnQgbm9kZSAqLworICAgIEVsZW1lbnRPYmplY3QgKmxhc3Q7IC8qIG1vc3QgcmVjZW50bHkgY3JlYXRlZCBub2RlICovCiAKLSAgICBQeU9iamVjdCogZGF0YTsgLyogZGF0YSBjb2xsZWN0b3IgKHN0cmluZyBvciBsaXN0KSwgb3IgTlVMTCAqLworICAgIFB5T2JqZWN0ICpkYXRhOyAvKiBkYXRhIGNvbGxlY3RvciAoc3RyaW5nIG9yIGxpc3QpLCBvciBOVUxMICovCiAKLSAgICBQeU9iamVjdCogc3RhY2s7IC8qIGVsZW1lbnQgc3RhY2sgKi8KLSAgICBQeV9zc2l6ZV90IGluZGV4OyAvKiBjdXJyZW50IHN0YWNrIHNpemUgKDA9ZW1wdHkpICovCisgICAgUHlPYmplY3QgKnN0YWNrOyAvKiBlbGVtZW50IHN0YWNrICovCisgICAgUHlfc3NpemVfdCBpbmRleDsgLyogY3VycmVudCBzdGFjayBzaXplICgwIG1lYW5zIGVtcHR5KSAqLworCisgICAgUHlPYmplY3QgKmVsZW1lbnRfZmFjdG9yeTsKIAogICAgIC8qIGVsZW1lbnQgdHJhY2luZyAqLwotICAgIFB5T2JqZWN0KiBldmVudHM7IC8qIGxpc3Qgb2YgZXZlbnRzLCBvciBOVUxMIGlmIG5vdCBjb2xsZWN0aW5nICovCi0gICAgUHlPYmplY3QqIHN0YXJ0X2V2ZW50X29iajsgLyogZXZlbnQgb2JqZWN0cyAoTlVMTCB0byBpZ25vcmUpICovCi0gICAgUHlPYmplY3QqIGVuZF9ldmVudF9vYmo7Ci0gICAgUHlPYmplY3QqIHN0YXJ0X25zX2V2ZW50X29iajsKLSAgICBQeU9iamVjdCogZW5kX25zX2V2ZW50X29iajsKLQorICAgIFB5T2JqZWN0ICpldmVudHM7IC8qIGxpc3Qgb2YgZXZlbnRzLCBvciBOVUxMIGlmIG5vdCBjb2xsZWN0aW5nICovCisgICAgUHlPYmplY3QgKnN0YXJ0X2V2ZW50X29iajsgLyogZXZlbnQgb2JqZWN0cyAoTlVMTCB0byBpZ25vcmUpICovCisgICAgUHlPYmplY3QgKmVuZF9ldmVudF9vYmo7CisgICAgUHlPYmplY3QgKnN0YXJ0X25zX2V2ZW50X29iajsKKyAgICBQeU9iamVjdCAqZW5kX25zX2V2ZW50X29iajsKIH0gVHJlZUJ1aWxkZXJPYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgVHJlZUJ1aWxkZXJfVHlwZTsKQEAgLTE2MzcsNDggKzIwNjMsNzAgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciAqLwogCi1MT0NBTChQeU9iamVjdCopCi10cmVlYnVpbGRlcl9uZXcodm9pZCkKK3N0YXRpYyBQeU9iamVjdCAqCit0cmVlYnVpbGRlcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGY7CisgICAgVHJlZUJ1aWxkZXJPYmplY3QgKnQgPSAoVHJlZUJ1aWxkZXJPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAodCAhPSBOVUxMKSB7CisgICAgICAgIHQtPnJvb3QgPSBOVUxMOwogCi0gICAgc2VsZiA9IFB5T2JqZWN0X05ldyhUcmVlQnVpbGRlck9iamVjdCwgJlRyZWVCdWlsZGVyX1R5cGUpOwotICAgIGlmIChzZWxmID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHQtPnRoaXMgPSAoRWxlbWVudE9iamVjdCAqKVB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgdC0+bGFzdCA9IChFbGVtZW50T2JqZWN0ICopUHlfTm9uZTsKIAotICAgIHNlbGYtPnJvb3QgPSBOVUxMOworICAgICAgICB0LT5kYXRhID0gTlVMTDsKKyAgICAgICAgdC0+ZWxlbWVudF9mYWN0b3J5ID0gTlVMTDsKKyAgICAgICAgdC0+c3RhY2sgPSBQeUxpc3RfTmV3KDIwKTsKKyAgICAgICAgaWYgKCF0LT5zdGFjaykgeworICAgICAgICAgICAgUHlfREVDUkVGKHQtPnRoaXMpOworICAgICAgICAgICAgUHlfREVDUkVGKHQtPmxhc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgdC0+aW5kZXggPSAwOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHNlbGYtPnRoaXMgPSAoRWxlbWVudE9iamVjdCopIFB5X05vbmU7Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgc2VsZi0+bGFzdCA9IChFbGVtZW50T2JqZWN0KikgUHlfTm9uZTsKLQotICAgIHNlbGYtPmRhdGEgPSBOVUxMOwotCi0gICAgc2VsZi0+c3RhY2sgPSBQeUxpc3RfTmV3KDIwKTsKLSAgICBzZWxmLT5pbmRleCA9IDA7Ci0KLSAgICBzZWxmLT5ldmVudHMgPSBOVUxMOwotICAgIHNlbGYtPnN0YXJ0X2V2ZW50X29iaiA9IHNlbGYtPmVuZF9ldmVudF9vYmogPSBOVUxMOwotICAgIHNlbGYtPnN0YXJ0X25zX2V2ZW50X29iaiA9IHNlbGYtPmVuZF9uc19ldmVudF9vYmogPSBOVUxMOwotCi0gICAgQUxMT0Moc2l6ZW9mKFRyZWVCdWlsZGVyT2JqZWN0KSwgImNyZWF0ZSB0cmVlYnVpbGRlciIpOwotCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7CisgICAgICAgIHQtPmV2ZW50cyA9IE5VTEw7CisgICAgICAgIHQtPnN0YXJ0X2V2ZW50X29iaiA9IHQtPmVuZF9ldmVudF9vYmogPSBOVUxMOworICAgICAgICB0LT5zdGFydF9uc19ldmVudF9vYmogPSB0LT5lbmRfbnNfZXZlbnRfb2JqID0gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCAqKXQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyKFB5T2JqZWN0KiBzZWxmXywgUHlPYmplY3QqIGFyZ3MpCitzdGF0aWMgaW50Cit0cmVlYnVpbGRlcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6VHJlZUJ1aWxkZXIiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJlbGVtZW50X2ZhY3RvcnkiLCAwfTsKKyAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5ID0gTlVMTDsKKyAgICBUcmVlQnVpbGRlck9iamVjdCAqc2VsZl90YiA9IChUcmVlQnVpbGRlck9iamVjdCAqKXNlbGY7CiAKLSAgICByZXR1cm4gdHJlZWJ1aWxkZXJfbmV3KCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPOlRyZWVCdWlsZGVyIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbGVtZW50X2ZhY3RvcnkpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoZWxlbWVudF9mYWN0b3J5KSB7CisgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50X2ZhY3RvcnkpOworICAgICAgICBQeV9YREVDUkVGKHNlbGZfdGItPmVsZW1lbnRfZmFjdG9yeSk7CisgICAgICAgIHNlbGZfdGItPmVsZW1lbnRfZmFjdG9yeSA9IGVsZW1lbnRfZmFjdG9yeTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQKLXRyZWVidWlsZGVyX2RlYWxsb2MoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYpCitzdGF0aWMgaW50Cit0cmVlYnVpbGRlcl9nY190cmF2ZXJzZShUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+cm9vdCk7CisgICAgUHlfVklTSVQoc2VsZi0+dGhpcyk7CisgICAgUHlfVklTSVQoc2VsZi0+bGFzdCk7CisgICAgUHlfVklTSVQoc2VsZi0+ZGF0YSk7CisgICAgUHlfVklTSVQoc2VsZi0+c3RhY2spOworICAgIFB5X1ZJU0lUKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX2djX2NsZWFyKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmKQogewogICAgIFB5X1hERUNSRUYoc2VsZi0+ZW5kX25zX2V2ZW50X29iaik7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5zdGFydF9uc19ldmVudF9vYmopOwpAQCAtMTY4OSwyNCArMjEzNywyMyBAQAogICAgIFB5X1hERUNSRUYoc2VsZi0+ZGF0YSk7CiAgICAgUHlfREVDUkVGKHNlbGYtPmxhc3QpOwogICAgIFB5X0RFQ1JFRihzZWxmLT50aGlzKTsKKyAgICBQeV9DTEVBUihzZWxmLT5lbGVtZW50X2ZhY3RvcnkpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+cm9vdCk7CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBSRUxFQVNFKHNpemVvZihUcmVlQnVpbGRlck9iamVjdCksICJkZXN0cm95IHRyZWVidWlsZGVyIik7Ci0KLSAgICBQeU9iamVjdF9EZWwoc2VsZik7CitzdGF0aWMgdm9pZAordHJlZWJ1aWxkZXJfZGVhbGxvYyhUcmVlQnVpbGRlck9iamVjdCAqc2VsZikKK3sKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOworICAgIHRyZWVidWlsZGVyX2djX2NsZWFyKHNlbGYpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBoYW5kbGVycyAqLwogCiBMT0NBTChQeU9iamVjdCopCi10cmVlYnVpbGRlcl9oYW5kbGVfeG1sKFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0KiBzdGFuZGFsb25lKQotewotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1MT0NBTChQeU9iamVjdCopCiB0cmVlYnVpbGRlcl9oYW5kbGVfc3RhcnQoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiB0YWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QqIGF0dHJpYikKIHsKQEAgLTE3MjgsOSArMjE3NSwxNCBAQAogICAgICAgICBzZWxmLT5kYXRhID0gTlVMTDsKICAgICB9CiAKLSAgICBub2RlID0gZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOwotICAgIGlmICghbm9kZSkKKyAgICBpZiAoc2VsZi0+ZWxlbWVudF9mYWN0b3J5KSB7CisgICAgICAgIG5vZGUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCAiT08iLCB0YWcsIGF0dHJpYik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbm9kZSA9IGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7CisgICAgfQorICAgIGlmICghbm9kZSkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICB0aGlzID0gKFB5T2JqZWN0Kikgc2VsZi0+dGhpczsKIApAQCAtMTk3NywyMiArMjQyOSwxMCBAQAogICAgIHJldHVybiB0cmVlYnVpbGRlcl9oYW5kbGVfc3RhcnQoc2VsZiwgdGFnLCBhdHRyaWIpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi10cmVlYnVpbGRlcl94bWwoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIFB5T2JqZWN0KiBlbmNvZGluZzsKLSAgICBQeU9iamVjdCogc3RhbmRhbG9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnhtbCIsICZlbmNvZGluZywgJnN0YW5kYWxvbmUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiB0cmVlYnVpbGRlcl9oYW5kbGVfeG1sKHNlbGYsIGVuY29kaW5nLCBzdGFuZGFsb25lKTsKLX0KLQogc3RhdGljIFB5TWV0aG9kRGVmIHRyZWVidWlsZGVyX21ldGhvZHNbXSA9IHsKICAgICB7ImRhdGEiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2RhdGEsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJzdGFydCIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfc3RhcnQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJlbmQiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2VuZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InhtbCIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfeG1sLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2Nsb3NlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCBOVUxMfQogfTsKQEAgLTIwMDEsMzEgKzI0NDEsNDIgQEAKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiVHJlZUJ1aWxkZXIiLCBzaXplb2YoVHJlZUJ1aWxkZXJPYmplY3QpLCAwLAogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvcil0cmVlYnVpbGRlcl9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAvKiB0cF9nZXRhdHRyICovCi0gICAgMCwgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgLyogdHBfcmVwciAqLwotICAgIDAsIC8qIHRwX2FzX251bWJlciAqLwotICAgIDAsIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAvKiB0cF9jYWxsICovCi0gICAgMCwgLyogdHBfc3RyICovCi0gICAgMCwgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAvKiB0cF9kb2MgKi8KLSAgICAwLCAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsIC8qIHRwX2NsZWFyICovCi0gICAgMCwgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAvKiB0cF9pdGVybmV4dCAqLwotICAgIHRyZWVidWlsZGVyX21ldGhvZHMsIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAvKiB0cF9tZW1iZXJzICovCisgICAgKGRlc3RydWN0b3IpdHJlZWJ1aWxkZXJfZGVhbGxvYywgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyl0cmVlYnVpbGRlcl9nY190cmF2ZXJzZSwgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSl0cmVlYnVpbGRlcl9nY19jbGVhciwgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICB0cmVlYnVpbGRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYyl0cmVlYnVpbGRlcl9pbml0LCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIHRyZWVidWlsZGVyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCkBAIC0yMDM0LDQwICsyNDg1LDM5IEBACiAjaWYgZGVmaW5lZChVU0VfRVhQQVQpCiAKICNpbmNsdWRlICJleHBhdC5oIgotCi0jaWYgZGVmaW5lZChVU0VfUFlFWFBBVF9DQVBJKQogI2luY2x1ZGUgInB5ZXhwYXQuaCIKLXN0YXRpYyBzdHJ1Y3QgUHlFeHBhdF9DQVBJKiBleHBhdF9jYXBpOworc3RhdGljIHN0cnVjdCBQeUV4cGF0X0NBUEkgKmV4cGF0X2NhcGk7CiAjZGVmaW5lIEVYUEFUKGZ1bmMpIChleHBhdF9jYXBpLT5mdW5jKQotI2Vsc2UKLSNkZWZpbmUgRVhQQVQoZnVuYykgKFhNTF8jI2Z1bmMpCi0jZW5kaWYKKworc3RhdGljIFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgRXhwYXRNZW1vcnlIYW5kbGVyID0geworICAgIFB5T2JqZWN0X01hbGxvYywgUHlPYmplY3RfUmVhbGxvYywgUHlPYmplY3RfRnJlZX07CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAKICAgICBYTUxfUGFyc2VyIHBhcnNlcjsKIAotICAgIFB5T2JqZWN0KiB0YXJnZXQ7Ci0gICAgUHlPYmplY3QqIGVudGl0eTsKKyAgICBQeU9iamVjdCAqdGFyZ2V0OworICAgIFB5T2JqZWN0ICplbnRpdHk7CiAKLSAgICBQeU9iamVjdCogbmFtZXM7CisgICAgUHlPYmplY3QgKm5hbWVzOwogCi0gICAgUHlPYmplY3QqIGhhbmRsZV94bWw7CisgICAgUHlPYmplY3QgKmhhbmRsZV9zdGFydDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2RhdGE7CisgICAgUHlPYmplY3QgKmhhbmRsZV9lbmQ7CiAKLSAgICBQeU9iamVjdCogaGFuZGxlX3N0YXJ0OwotICAgIFB5T2JqZWN0KiBoYW5kbGVfZGF0YTsKLSAgICBQeU9iamVjdCogaGFuZGxlX2VuZDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2NvbW1lbnQ7CisgICAgUHlPYmplY3QgKmhhbmRsZV9waTsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2RvY3R5cGU7CiAKLSAgICBQeU9iamVjdCogaGFuZGxlX2NvbW1lbnQ7Ci0gICAgUHlPYmplY3QqIGhhbmRsZV9waTsKLQotICAgIFB5T2JqZWN0KiBoYW5kbGVfY2xvc2U7CisgICAgUHlPYmplY3QgKmhhbmRsZV9jbG9zZTsKIAogfSBYTUxQYXJzZXJPYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgWE1MUGFyc2VyX1R5cGU7CiAKKyNkZWZpbmUgWE1MUGFyc2VyX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmWE1MUGFyc2VyX1R5cGUpCisKIC8qIGhlbHBlcnMgKi8KIAogTE9DQUwoUHlPYmplY3QqKQpAQCAtMjExMyw3ICsyNTYzLDcgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICAgICAgdGFnID0ga2V5OwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIC8qIGRlY29kZSB1bml2ZXJzYWwgbmFtZSAqLwogICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcodGFnKTsKICAgICAgICAgdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChwLCBzaXplLCAic3RyaWN0Iik7CkBAIC0yMTM1LDIwICsyNTg1LDM5IEBACiAgICAgcmV0dXJuIHZhbHVlOwogfQogCisvKiBTZXQgdGhlIFBhcnNlRXJyb3IgZXhjZXB0aW9uIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCisgKiBJZiBtZXNzYWdlIGlzIG5vdCBOVUxMLCBpdCdzIHVzZWQgYXMgdGhlIGVycm9yIHN0cmluZy4gT3RoZXJ3aXNlLCB0aGUKKyAqIG1lc3NhZ2Ugc3RyaW5nIGlzIHRoZSBkZWZhdWx0IGZvciB0aGUgZ2l2ZW4gZXJyb3JfY29kZS4KKyovCiBzdGF0aWMgdm9pZAotZXhwYXRfc2V0X2Vycm9yKGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGludCBsaW5lLCBpbnQgY29sdW1uKQorZXhwYXRfc2V0X2Vycm9yKGVudW0gWE1MX0Vycm9yIGVycm9yX2NvZGUsIGludCBsaW5lLCBpbnQgY29sdW1uLCBjaGFyICptZXNzYWdlKQogewotICAgIFB5T2JqZWN0ICplcnJvcjsKLSAgICBQeU9iamVjdCAqcG9zaXRpb247Ci0gICAgY2hhciBidWZmZXJbMjU2XTsKKyAgICBQeU9iamVjdCAqZXJybXNnLCAqZXJyb3IsICpwb3NpdGlvbiwgKmNvZGU7CiAKLSAgICBzcHJpbnRmKGJ1ZmZlciwgIiUuMTAwczogbGluZSAlZCwgY29sdW1uICVkIiwgbWVzc2FnZSwgbGluZSwgY29sdW1uKTsKKyAgICBlcnJtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXM6IGxpbmUgJWQsIGNvbHVtbiAlZCIsCisgICAgICAgICAgICAgICAgbWVzc2FnZSA/IG1lc3NhZ2UgOiBFWFBBVChFcnJvclN0cmluZykoZXJyb3JfY29kZSksCisgICAgICAgICAgICAgICAgbGluZSwgY29sdW1uKTsKKyAgICBpZiAoZXJybXNnID09IE5VTEwpCisgICAgICAgIHJldHVybjsKIAotICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqLCAicyIsIGJ1ZmZlcik7CisgICAgZXJyb3IgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmosICJPIiwgZXJybXNnKTsKKyAgICBQeV9ERUNSRUYoZXJybXNnKTsKICAgICBpZiAoIWVycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICAvKiBhZGQgcG9zaXRpb24gYXR0cmlidXRlICovCisgICAgLyogQWRkIGNvZGUgYW5kIHBvc2l0aW9uIGF0dHJpYnV0ZXMgKi8KKyAgICBjb2RlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKWVycm9yX2NvZGUpOworICAgIGlmICghY29kZSkgeworICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKGVycm9yLCAiY29kZSIsIGNvZGUpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihlcnJvcik7CisgICAgICAgIFB5X0RFQ1JFRihjb2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBQeV9ERUNSRUYoY29kZSk7CisKICAgICBwb3NpdGlvbiA9IFB5X0J1aWxkVmFsdWUoIihpaSkiLCBsaW5lLCBjb2x1bW4pOwogICAgIGlmICghcG9zaXRpb24pIHsKICAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKQEAgLTIyMDAsOSArMjY2OSwxMCBAQAogICAgICAgICBjaGFyIG1lc3NhZ2VbMTI4XSA9ICJ1bmRlZmluZWQgZW50aXR5ICI7CiAgICAgICAgIHN0cm5jYXQobWVzc2FnZSwgZGF0YV9pbiwgZGF0YV9sZW4gPCAxMDA/ZGF0YV9sZW46MTAwKTsKICAgICAgICAgZXhwYXRfc2V0X2Vycm9yKAotICAgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICAgIFhNTF9FUlJPUl9VTkRFRklORURfRU5USVRZLAogICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JMaW5lTnVtYmVyKShzZWxmLT5wYXJzZXIpLAotICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JDb2x1bW5OdW1iZXIpKHNlbGYtPnBhcnNlcikKKyAgICAgICAgICAgIEVYUEFUKEdldEVycm9yQ29sdW1uTnVtYmVyKShzZWxmLT5wYXJzZXIpLAorICAgICAgICAgICAgbWVzc2FnZQogICAgICAgICAgICAgKTsKICAgICB9CiAKQEAgLTIyNTEsMTcgKzI3MjEsMjAgQEAKICAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKICAgICB9CiAKLSAgICBpZiAoVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKQorICAgIC8qIElmIHdlIGdldCBOb25lLCBwYXNzIGFuIGVtcHR5IGRpY3Rpb25hcnkgb24gKi8KKyAgICBpZiAoYXR0cmliID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7CisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFRyZWVCdWlsZGVyX0NoZWNrRXhhY3Qoc2VsZi0+dGFyZ2V0KSkgewogICAgICAgICAvKiBzaG9ydGN1dCAqLwogICAgICAgICByZXMgPSB0cmVlYnVpbGRlcl9oYW5kbGVfc3RhcnQoKFRyZWVCdWlsZGVyT2JqZWN0Kikgc2VsZi0+dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnLCBhdHRyaWIpOworICAgIH0KICAgICBlbHNlIGlmIChzZWxmLT5oYW5kbGVfc3RhcnQpIHsKLSAgICAgICAgaWYgKGF0dHJpYiA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXR0cmliKTsKLSAgICAgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgIGlmICghYXR0cmliKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+aGFuZGxlX3N0YXJ0LCAiT08iLCB0YWcsIGF0dHJpYik7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlcyA9IE5VTEw7CkBAIC0yMzcxLDYgKzI4NDQsNzggQEAKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIAorZXhwYXRfc3RhcnRfZG9jdHlwZV9oYW5kbGVyKFhNTFBhcnNlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqZG9jdHlwZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpzeXNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqcHViaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhhc19pbnRlcm5hbF9zdWJzZXQpCit7CisgICAgUHlPYmplY3QgKnNlbGZfcHlvYmogPSAoUHlPYmplY3QgKilzZWxmOworICAgIFB5T2JqZWN0ICpkb2N0eXBlX25hbWVfb2JqLCAqc3lzaWRfb2JqLCAqcHViaWRfb2JqOworICAgIFB5T2JqZWN0ICpwYXJzZXJfZG9jdHlwZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CisKKyAgICBkb2N0eXBlX25hbWVfb2JqID0gbWFrZXVuaXZlcnNhbChzZWxmLCBkb2N0eXBlX25hbWUpOworICAgIGlmICghZG9jdHlwZV9uYW1lX29iaikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHN5c2lkKSB7CisgICAgICAgIHN5c2lkX29iaiA9IG1ha2V1bml2ZXJzYWwoc2VsZiwgc3lzaWQpOworICAgICAgICBpZiAoIXN5c2lkX29iaikgeworICAgICAgICAgICAgUHlfREVDUkVGKGRvY3R5cGVfbmFtZV9vYmopOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBzeXNpZF9vYmogPSBQeV9Ob25lOworICAgIH0KKworICAgIGlmIChwdWJpZCkgeworICAgICAgICBwdWJpZF9vYmogPSBtYWtldW5pdmVyc2FsKHNlbGYsIHB1YmlkKTsKKyAgICAgICAgaWYgKCFwdWJpZF9vYmopIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkb2N0eXBlX25hbWVfb2JqKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzeXNpZF9vYmopOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBwdWJpZF9vYmogPSBQeV9Ob25lOworICAgIH0KKworICAgIC8qIElmIHRoZSB0YXJnZXQgaGFzIGEgaGFuZGxlciBmb3IgZG9jdHlwZSwgY2FsbCBpdC4gKi8KKyAgICBpZiAoc2VsZi0+aGFuZGxlX2RvY3R5cGUpIHsKKyAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmhhbmRsZV9kb2N0eXBlLCAiT09PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3R5cGVfbmFtZV9vYmosIHB1YmlkX29iaiwgc3lzaWRfb2JqKTsKKyAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICB9CisKKyAgICAvKiBOb3cgc2VlIGlmIHRoZSBwYXJzZXIgaXRzZWxmIGhhcyBhIGRvY3R5cGUgbWV0aG9kLiBJZiB5ZXMgYW5kIGl0J3MKKyAgICAgKiBhIHN1YmNsYXNzLCBjYWxsIGl0IGJ1dCB3YXJuIGFib3V0IGRlcHJlY2F0aW9uLiBJZiBpdCdzIG5vdCBhIHN1YmNsYXNzCisgICAgICogKGkuZS4gdmFuaWxsYSBYTUxQYXJzZXIpLCBkbyBub3RoaW5nLgorICAgICAqLworICAgIHBhcnNlcl9kb2N0eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmX3B5b2JqLCAiZG9jdHlwZSIpOworICAgIGlmIChwYXJzZXJfZG9jdHlwZSkgeworICAgICAgICBpZiAoIVhNTFBhcnNlcl9DaGVja0V4YWN0KHNlbGZfcHlvYmopKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGRlcHJlY2F0ZWQuICBEZWZpbmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBkb2N0eXBlKCkgbWV0aG9kIG9uIHRoZSBUcmVlQnVpbGRlciB0YXJnZXQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGNsZWFyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHBhcnNlcl9kb2N0eXBlLCAiT09PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N0eXBlX25hbWVfb2JqLCBwdWJpZF9vYmosIHN5c2lkX29iaik7CisgICAgICAgICAgICBQeV9DTEVBUihyZXMpOworICAgICAgICB9CisgICAgfQorCitjbGVhcjoKKyAgICBQeV9YREVDUkVGKHBhcnNlcl9kb2N0eXBlKTsKKyAgICBQeV9ERUNSRUYoZG9jdHlwZV9uYW1lX29iaik7CisgICAgUHlfREVDUkVGKHB1YmlkX29iaik7CisgICAgUHlfREVDUkVGKHN5c2lkX29iaik7Cit9CisKIHN0YXRpYyB2b2lkCiBleHBhdF9waV9oYW5kbGVyKFhNTFBhcnNlck9iamVjdCogc2VsZiwgY29uc3QgWE1MX0NoYXIqIHRhcmdldF9pbiwKICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIqIGRhdGFfaW4pCkBAIC0yMzk5LDI5ICsyOTQ0LDMzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0VuY29kaW5nICppbmZvKQogewogICAgIFB5T2JqZWN0KiB1OwotICAgIFB5X1VOSUNPREUqIHA7CiAgICAgdW5zaWduZWQgY2hhciBzWzI1Nl07CiAgICAgaW50IGk7CisgICAgdm9pZCAqZGF0YTsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKIAogICAgIG1lbXNldChpbmZvLCAwLCBzaXplb2YoWE1MX0VuY29kaW5nKSk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCiAgICAgICAgIHNbaV0gPSBpOwotICAgIAorCiAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGUoKGNoYXIqKSBzLCAyNTYsIG5hbWUsICJyZXBsYWNlIik7CiAgICAgaWYgKCF1KQogICAgICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHUpKQorICAgICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKIAotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodSkgIT0gMjU2KSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpICE9IDI1NikgewogICAgICAgICBQeV9ERUNSRUYodSk7CiAgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwogICAgIH0KIAotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1KTsKLQorICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodSk7CiAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0gICAgICAgIGlmIChwW2ldICE9IFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKQotICAgICAgICAgICAgaW5mby0+bWFwW2ldID0gcFtpXTsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggIT0gUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpCisgICAgICAgICAgICBpbmZvLT5tYXBbaV0gPSBjaDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW5mby0+bWFwW2ldID0gLTE7CiAgICAgfQpAQCAtMjQzMiwxMjIgKzI5ODEsMTMxIEBACiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciAqLwogCi1zdGF0aWMgUHlPYmplY3QqCi14bWxwYXJzZXIoUHlPYmplY3QqIHNlbGZfLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorc3RhdGljIFB5T2JqZWN0ICoKK3htbHBhcnNlcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgWE1MUGFyc2VyT2JqZWN0KiBzZWxmOwotICAgIC8qIEZJWE1FOiBkb2VzIHRoaXMgbmVlZCB0byBiZSBzdGF0aWM/ICovCi0gICAgc3RhdGljIFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgbWVtb3J5X2hhbmRsZXI7Ci0KLSAgICBQeU9iamVjdCogdGFyZ2V0ID0gTlVMTDsKLSAgICBjaGFyKiBlbmNvZGluZyA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAidGFyZ2V0IiwgImVuY29kaW5nIiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE96OlhNTFBhcnNlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFyZ2V0LCAmZW5jb2RpbmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotI2lmIGRlZmluZWQoVVNFX1BZRVhQQVRfQ0FQSSkKLSAgICBpZiAoIWV4cGF0X2NhcGkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLCAiY2Fubm90IGxvYWQgZGlzcGF0Y2ggdGFibGUgZnJvbSBweWV4cGF0IgotICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgWE1MUGFyc2VyT2JqZWN0ICpzZWxmID0gKFhNTFBhcnNlck9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChzZWxmKSB7CisgICAgICAgIHNlbGYtPnBhcnNlciA9IE5VTEw7CisgICAgICAgIHNlbGYtPnRhcmdldCA9IHNlbGYtPmVudGl0eSA9IHNlbGYtPm5hbWVzID0gTlVMTDsKKyAgICAgICAgc2VsZi0+aGFuZGxlX3N0YXJ0ID0gc2VsZi0+aGFuZGxlX2RhdGEgPSBzZWxmLT5oYW5kbGVfZW5kID0gTlVMTDsKKyAgICAgICAgc2VsZi0+aGFuZGxlX2NvbW1lbnQgPSBzZWxmLT5oYW5kbGVfcGkgPSBzZWxmLT5oYW5kbGVfY2xvc2UgPSBOVUxMOworICAgICAgICBzZWxmLT5oYW5kbGVfZG9jdHlwZSA9IE5VTEw7CiAgICAgfQotI2VuZGlmCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Cit9CiAKLSAgICBzZWxmID0gUHlPYmplY3RfTmV3KFhNTFBhcnNlck9iamVjdCwgJlhNTFBhcnNlcl9UeXBlKTsKLSAgICBpZiAoc2VsZiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBpbnQKK3htbHBhcnNlcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgWE1MUGFyc2VyT2JqZWN0ICpzZWxmX3hwID0gKFhNTFBhcnNlck9iamVjdCAqKXNlbGY7CisgICAgUHlPYmplY3QgKnRhcmdldCA9IE5VTEwsICpodG1sID0gTlVMTDsKKyAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJodG1sIiwgInRhcmdldCIsICJlbmNvZGluZyIsIDB9OwogCi0gICAgc2VsZi0+ZW50aXR5ID0gUHlEaWN0X05ldygpOwotICAgIGlmICghc2VsZi0+ZW50aXR5KSB7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgICAKLSAgICBzZWxmLT5uYW1lcyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoIXNlbGYtPm5hbWVzKSB7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmLT5lbnRpdHkpOwotICAgICAgICBQeU9iamVjdF9EZWwoc2VsZik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T096OlhNTFBhcnNlciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaHRtbCwgJnRhcmdldCwgJmVuY29kaW5nKSkgeworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgbWVtb3J5X2hhbmRsZXIubWFsbG9jX2ZjbiA9IFB5T2JqZWN0X01hbGxvYzsKLSAgICBtZW1vcnlfaGFuZGxlci5yZWFsbG9jX2ZjbiA9IFB5T2JqZWN0X1JlYWxsb2M7Ci0gICAgbWVtb3J5X2hhbmRsZXIuZnJlZV9mY24gPSBQeU9iamVjdF9GcmVlOworICAgIHNlbGZfeHAtPmVudGl0eSA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoIXNlbGZfeHAtPmVudGl0eSkKKyAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgc2VsZi0+cGFyc2VyID0gRVhQQVQoUGFyc2VyQ3JlYXRlX01NKShlbmNvZGluZywgJm1lbW9yeV9oYW5kbGVyLCAifSIpOwotICAgIGlmICghc2VsZi0+cGFyc2VyKSB7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmLT5uYW1lcyk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmLT5lbnRpdHkpOwotICAgICAgICBQeU9iamVjdF9EZWwoc2VsZik7CisgICAgc2VsZl94cC0+bmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKCFzZWxmX3hwLT5uYW1lcykgeworICAgICAgICBQeV9YREVDUkVGKHNlbGZfeHAtPmVudGl0eSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBzZWxmX3hwLT5wYXJzZXIgPSBFWFBBVChQYXJzZXJDcmVhdGVfTU0pKGVuY29kaW5nLCAmRXhwYXRNZW1vcnlIYW5kbGVyLCAifSIpOworICAgIGlmICghc2VsZl94cC0+cGFyc2VyKSB7CisgICAgICAgIFB5X1hERUNSRUYoc2VsZl94cC0+ZW50aXR5KTsKKyAgICAgICAgUHlfWERFQ1JFRihzZWxmX3hwLT5uYW1lcyk7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgLyogc2V0dXAgdGFyZ2V0IGhhbmRsZXJzICovCi0gICAgaWYgKCF0YXJnZXQpIHsKLSAgICAgICAgdGFyZ2V0ID0gdHJlZWJ1aWxkZXJfbmV3KCk7Ci0gICAgICAgIGlmICghdGFyZ2V0KSB7Ci0gICAgICAgICAgICBFWFBBVChQYXJzZXJGcmVlKShzZWxmLT5wYXJzZXIpOwotICAgICAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPm5hbWVzKTsKLSAgICAgICAgICAgIFB5T2JqZWN0X0RlbChzZWxmLT5lbnRpdHkpOwotICAgICAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKKyAgICBpZiAodGFyZ2V0KSB7CiAgICAgICAgIFB5X0lOQ1JFRih0YXJnZXQpOwotICAgIHNlbGYtPnRhcmdldCA9IHRhcmdldDsKKyAgICB9IGVsc2UgeworICAgICAgICB0YXJnZXQgPSB0cmVlYnVpbGRlcl9uZXcoJlRyZWVCdWlsZGVyX1R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXRhcmdldCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihzZWxmX3hwLT5lbnRpdHkpOworICAgICAgICAgICAgUHlfWERFQ1JFRihzZWxmX3hwLT5uYW1lcyk7CisgICAgICAgICAgICBFWFBBVChQYXJzZXJGcmVlKShzZWxmX3hwLT5wYXJzZXIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIHNlbGZfeHAtPnRhcmdldCA9IHRhcmdldDsKIAotICAgIHNlbGYtPmhhbmRsZV94bWwgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInhtbCIpOwotICAgIHNlbGYtPmhhbmRsZV9zdGFydCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAic3RhcnQiKTsKLSAgICBzZWxmLT5oYW5kbGVfZGF0YSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZGF0YSIpOwotICAgIHNlbGYtPmhhbmRsZV9lbmQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImVuZCIpOwotICAgIHNlbGYtPmhhbmRsZV9jb21tZW50ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjb21tZW50Iik7Ci0gICAgc2VsZi0+aGFuZGxlX3BpID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJwaSIpOwotICAgIHNlbGYtPmhhbmRsZV9jbG9zZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY2xvc2UiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfc3RhcnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInN0YXJ0Iik7CisgICAgc2VsZl94cC0+aGFuZGxlX2RhdGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRhdGEiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfZW5kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJlbmQiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfY29tbWVudCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY29tbWVudCIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9waSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAicGkiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfY2xvc2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNsb3NlIik7CisgICAgc2VsZl94cC0+aGFuZGxlX2RvY3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRvY3R5cGUiKTsKIAogICAgIFB5RXJyX0NsZWFyKCk7Ci0KKyAgICAKICAgICAvKiBjb25maWd1cmUgcGFyc2VyICovCi0gICAgRVhQQVQoU2V0VXNlckRhdGEpKHNlbGYtPnBhcnNlciwgc2VsZik7CisgICAgRVhQQVQoU2V0VXNlckRhdGEpKHNlbGZfeHAtPnBhcnNlciwgc2VsZl94cCk7CiAgICAgRVhQQVQoU2V0RWxlbWVudEhhbmRsZXIpKAotICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgKFhNTF9TdGFydEVsZW1lbnRIYW5kbGVyKSBleHBhdF9zdGFydF9oYW5kbGVyLAogICAgICAgICAoWE1MX0VuZEVsZW1lbnRIYW5kbGVyKSBleHBhdF9lbmRfaGFuZGxlcgogICAgICAgICApOwogICAgIEVYUEFUKFNldERlZmF1bHRIYW5kbGVyRXhwYW5kKSgKLSAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgIChYTUxfRGVmYXVsdEhhbmRsZXIpIGV4cGF0X2RlZmF1bHRfaGFuZGxlcgogICAgICAgICApOwogICAgIEVYUEFUKFNldENoYXJhY3RlckRhdGFIYW5kbGVyKSgKLSAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgIChYTUxfQ2hhcmFjdGVyRGF0YUhhbmRsZXIpIGV4cGF0X2RhdGFfaGFuZGxlcgogICAgICAgICApOwotICAgIGlmIChzZWxmLT5oYW5kbGVfY29tbWVudCkKKyAgICBpZiAoc2VsZl94cC0+aGFuZGxlX2NvbW1lbnQpCiAgICAgICAgIEVYUEFUKFNldENvbW1lbnRIYW5kbGVyKSgKLSAgICAgICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgICAgIChYTUxfQ29tbWVudEhhbmRsZXIpIGV4cGF0X2NvbW1lbnRfaGFuZGxlcgogICAgICAgICAgICAgKTsKLSAgICBpZiAoc2VsZi0+aGFuZGxlX3BpKQorICAgIGlmIChzZWxmX3hwLT5oYW5kbGVfcGkpCiAgICAgICAgIEVYUEFUKFNldFByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIpKAotICAgICAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAgICAgKFhNTF9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKSBleHBhdF9waV9oYW5kbGVyCiAgICAgICAgICAgICApOworICAgIEVYUEFUKFNldFN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKSgKKyAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICAoWE1MX1N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKSBleHBhdF9zdGFydF9kb2N0eXBlX2hhbmRsZXIKKyAgICAgICAgKTsKICAgICBFWFBBVChTZXRVbmtub3duRW5jb2RpbmdIYW5kbGVyKSgKLSAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgIChYTUxfVW5rbm93bkVuY29kaW5nSGFuZGxlcikgZXhwYXRfdW5rbm93bl9lbmNvZGluZ19oYW5kbGVyLCBOVUxMCiAgICAgICAgICk7CiAKLSAgICBBTExPQyhzaXplb2YoWE1MUGFyc2VyT2JqZWN0KSwgImNyZWF0ZSBleHBhdHBhcnNlciIpOwotCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7CisgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkCi14bWxwYXJzZXJfZGVhbGxvYyhYTUxQYXJzZXJPYmplY3QqIHNlbGYpCitzdGF0aWMgaW50Cit4bWxwYXJzZXJfZ2NfdHJhdmVyc2UoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfY2xvc2UpOworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9waSk7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX2NvbW1lbnQpOworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9lbmQpOworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9kYXRhKTsKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfc3RhcnQpOworCisgICAgUHlfVklTSVQoc2VsZi0+dGFyZ2V0KTsKKyAgICBQeV9WSVNJVChzZWxmLT5lbnRpdHkpOworICAgIFB5X1ZJU0lUKHNlbGYtPm5hbWVzKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit4bWxwYXJzZXJfZ2NfY2xlYXIoWE1MUGFyc2VyT2JqZWN0ICpzZWxmKQogewogICAgIEVYUEFUKFBhcnNlckZyZWUpKHNlbGYtPnBhcnNlcik7CiAKQEAgLTI1NTcsMTkgKzMxMTUsMjIgQEAKICAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV9lbmQpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX2RhdGEpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX3N0YXJ0KTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV94bWwpOworICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX2RvY3R5cGUpOwogCi0gICAgUHlfREVDUkVGKHNlbGYtPnRhcmdldCk7Ci0gICAgUHlfREVDUkVGKHNlbGYtPmVudGl0eSk7Ci0gICAgUHlfREVDUkVGKHNlbGYtPm5hbWVzKTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPnRhcmdldCk7CisgICAgUHlfWERFQ1JFRihzZWxmLT5lbnRpdHkpOworICAgIFB5X1hERUNSRUYoc2VsZi0+bmFtZXMpOwogCi0gICAgUkVMRUFTRShzaXplb2YoWE1MUGFyc2VyT2JqZWN0KSwgImRlc3Ryb3kgZXhwYXRwYXJzZXIiKTsKLQotICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKKyAgICByZXR1cm4gMDsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIG1ldGhvZHMgKGluIGFscGhhYmV0aWNhbCBvcmRlcikgKi8KK3N0YXRpYyB2b2lkCit4bWxwYXJzZXJfZGVhbGxvYyhYTUxQYXJzZXJPYmplY3QqIHNlbGYpCit7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhzZWxmKTsKKyAgICB4bWxwYXJzZXJfZ2NfY2xlYXIoc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KIAogTE9DQUwoUHlPYmplY3QqKQogZXhwYXRfcGFyc2UoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBjaGFyKiBkYXRhLCBpbnQgZGF0YV9sZW4sIGludCBmaW5hbCkKQEAgLTI1ODMsOSArMzE0NCwxMCBAQAogCiAgICAgaWYgKCFvaykgewogICAgICAgICBleHBhdF9zZXRfZXJyb3IoCi0gICAgICAgICAgICBFWFBBVChFcnJvclN0cmluZykoRVhQQVQoR2V0RXJyb3JDb2RlKShzZWxmLT5wYXJzZXIpKSwKKyAgICAgICAgICAgIEVYUEFUKEdldEVycm9yQ29kZSkoc2VsZi0+cGFyc2VyKSwKICAgICAgICAgICAgIEVYUEFUKEdldEVycm9yTGluZU51bWJlcikoc2VsZi0+cGFyc2VyKSwKLSAgICAgICAgICAgIEVYUEFUKEdldEVycm9yQ29sdW1uTnVtYmVyKShzZWxmLT5wYXJzZXIpCisgICAgICAgICAgICBFWFBBVChHZXRFcnJvckNvbHVtbk51bWJlcikoc2VsZi0+cGFyc2VyKSwKKyAgICAgICAgICAgIE5VTEwKICAgICAgICAgICAgICk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI2MzYsNiArMzE5OCw3IEBACiAKICAgICBQeU9iamVjdCogcmVhZGVyOwogICAgIFB5T2JqZWN0KiBidWZmZXI7CisgICAgUHlPYmplY3QqIHRlbXA7CiAgICAgUHlPYmplY3QqIHJlczsKIAogICAgIFB5T2JqZWN0KiBmaWxlb2JqOwpAQCAtMjY0NSw3ICszMjA4LDcgQEAKICAgICByZWFkZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGVvYmosICJyZWFkIik7CiAgICAgaWYgKCFyZWFkZXIpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIAorCiAgICAgLyogcmVhZCBmcm9tIG9wZW4gZmlsZSBvYmplY3QgKi8KICAgICBmb3IgKDs7KSB7CiAKQEAgLTI2NTcsNyArMzIyMCwyNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2tFeGFjdChidWZmZXIpIHx8IFB5Qnl0ZXNfR0VUX1NJWkUoYnVmZmVyKSA9PSAwKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChidWZmZXIpKSB7CisgICAgICAgICAgICAvKiBBIHVuaWNvZGUgb2JqZWN0IGlzIGVuY29kZWQgaW50byBieXRlcyB1c2luZyBVVEYtOCAqLworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShidWZmZXIpID09IDApIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRlbXAgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKGJ1ZmZlciwgInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKTsKKyAgICAgICAgICAgIGlmICghdGVtcCkgeworICAgICAgICAgICAgICAgIC8qIFByb3BhZ2F0ZSBleGNlcHRpb24gZnJvbSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nICovCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlYWRlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIEhlcmUgd2Ugbm8gbG9uZ2VyIG5lZWQgdGhlIG9yaWdpbmFsIGJ1ZmZlciBzaW5jZSBpdCBjb250YWlucworICAgICAgICAgICAgICogdW5pY29kZS4gTWFrZSBpdCBwb2ludCB0byB0aGUgZW5jb2RlZCBieXRlcyBvYmplY3QuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgICAgICBidWZmZXIgPSB0ZW1wOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3QoYnVmZmVyKSB8fCBQeUJ5dGVzX0dFVF9TSVpFKGJ1ZmZlcikgPT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjY4OSw3ICszMjcyLDEzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcl9zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3htbHBhcnNlcl9kb2N0eXBlKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3htbHBhcnNlcl9zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICAvKiBhY3RpdmF0ZSBlbGVtZW50IGV2ZW50IHJlcG9ydGluZyAqLwogCkBAIC0yNzA1LDcgKzMyOTQsNyBAQAogICAgIGlmICghVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJldmVudCBoYW5kbGluZyBvbmx5IHN1cHBvcnRlZCBmb3IgY0VsZW1lbnRUcmVlLlRyZWVidWlsZGVyICIKKyAgICAgICAgICAgICJldmVudCBoYW5kbGluZyBvbmx5IHN1cHBvcnRlZCBmb3IgRWxlbWVudFRyZWUuVHJlZUJ1aWxkZXIgIgogICAgICAgICAgICAgInRhcmdldHMiCiAgICAgICAgICAgICApOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3OTMsMTAgKzMzODIsMTEgQEAKICAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfY2xvc2UsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJfcGFyc2UiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9wYXJzZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7Il9zZXRldmVudHMiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9zZXRldmVudHMsIE1FVEhfVkFSQVJHU30sCisgICAgeyJkb2N0eXBlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfZG9jdHlwZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKLXN0YXRpYyBQeU9iamVjdCogIAorc3RhdGljIFB5T2JqZWN0KgogeG1scGFyc2VyX2dldGF0dHJvKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmopCiB7CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkgewpAQCAtMjgyNCwzMSArMzQxNCw0MiBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJYTUxQYXJzZXIiLCBzaXplb2YoWE1MUGFyc2VyT2JqZWN0KSwgMCwKICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpeG1scGFyc2VyX2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAvKiB0cF9wcmludCAqLwotICAgIDAsIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAvKiB0cF9yZXByICovCi0gICAgMCwgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgLyogdHBfaGFzaCAqLwotICAgIDAsIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAvKiB0cF9zdHIgKi8KLSAgICAoZ2V0YXR0cm9mdW5jKXhtbHBhcnNlcl9nZXRhdHRybywgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAvKiB0cF9kb2MgKi8KLSAgICAwLCAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsIC8qIHRwX2NsZWFyICovCi0gICAgMCwgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAvKiB0cF9pdGVybmV4dCAqLwotICAgIHhtbHBhcnNlcl9tZXRob2RzLCAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgLyogdHBfbWVtYmVycyAqLworICAgIChkZXN0cnVjdG9yKXhtbHBhcnNlcl9kZWFsbG9jLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAoZ2V0YXR0cm9mdW5jKXhtbHBhcnNlcl9nZXRhdHRybywgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpeG1scGFyc2VyX2djX3RyYXZlcnNlLCAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpeG1scGFyc2VyX2djX2NsZWFyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgeG1scGFyc2VyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpeG1scGFyc2VyX2luaXQsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICB4bWxwYXJzZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAjZW5kaWYKQEAgLTI4NTcsMTMgKzM0NTgsNyBAQAogLyogcHl0aG9uIG1vZHVsZSBpbnRlcmZhY2UgKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIF9mdW5jdGlvbnNbXSA9IHsKLSAgICB7IkVsZW1lbnQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7IlN1YkVsZW1lbnQiLCAoUHlDRnVuY3Rpb24pIHN1YmVsZW1lbnQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKLSAgICB7IlRyZWVCdWlsZGVyIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlciwgTUVUSF9WQVJBUkdTfSwKLSNpZiBkZWZpbmVkKFVTRV9FWFBBVCkKLSAgICB7IlhNTFBhcnNlciIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCi0gICAgeyJYTUxUcmVlQnVpbGRlciIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCi0jZW5kaWYKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKQEAgLTI4ODMsOSArMzQ3OCw3IEBACiBQeU1PRElOSVRfRlVOQwogUHlJbml0X19lbGVtZW50dHJlZSh2b2lkKQogewotICAgIFB5T2JqZWN0KiBtOwotICAgIFB5T2JqZWN0KiBnOwotICAgIGNoYXIqIGJvb3RzdHJhcDsKKyAgICBQeU9iamVjdCAqbSwgKnRlbXA7CiAKICAgICAvKiBJbml0aWFsaXplIG9iamVjdCB0eXBlcyAqLwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlRyZWVCdWlsZGVyX1R5cGUpIDwgMCkKQEAgLTI5MDEsMjEyICszNDk0LDE1IEBACiAgICAgaWYgKCFtKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIFRoZSBjb2RlIGJlbG93IHJlcXVpcmVzIHRoYXQgdGhlIG1vZHVsZSBnZXRzIGFscmVhZHkgYWRkZWQKLSAgICAgICB0byBzeXMubW9kdWxlcy4gKi8KLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgX2VsZW1lbnR0cmVlbW9kdWxlLm1fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtKTsKKyAgICBpZiAoISh0ZW1wID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJjb3B5IikpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlbGVtZW50dHJlZV9kZWVwY29weV9vYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRlbXAsICJkZWVwY29weSIpOworICAgIFB5X1hERUNSRUYodGVtcCk7CiAKLSAgICAvKiBweXRob24gZ2x1ZSBjb2RlICovCi0KLSAgICBnID0gUHlEaWN0X05ldygpOwotICAgIGlmICghZykKKyAgICBpZiAoIShlbGVtZW50cGF0aF9vYmogPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInhtbC5ldHJlZS5FbGVtZW50UGF0aCIpKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhnLCAiX19idWlsdGluc19fIiwgUHlFdmFsX0dldEJ1aWx0aW5zKCkpOwotCi0gICAgYm9vdHN0cmFwID0gKAotCi0gICAgICAgICJmcm9tIGNvcHkgaW1wb3J0IGNvcHksIGRlZXBjb3B5XG4iCi0KLSAgICAgICAgInRyeTpcbiIKLSAgICAgICAgIiAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlXG4iCi0gICAgICAgICJleGNlcHQgSW1wb3J0RXJyb3I6XG4iCi0gICAgICAgICIgIGltcG9ydCBFbGVtZW50VHJlZVxuIgotICAgICAgICAiRVQgPSBFbGVtZW50VHJlZVxuIgotICAgICAgICAiZGVsIEVsZW1lbnRUcmVlXG4iCi0KLSAgICAgICAgImltcG9ydCBfZWxlbWVudHRyZWUgYXMgY0VsZW1lbnRUcmVlXG4iCi0KLSAgICAgICAgInRyeTpcbiIgLyogY2hlY2sgaWYgY29weSB3b3JrcyBhcyBpcyAqLwotICAgICAgICAiICBjb3B5KGNFbGVtZW50VHJlZS5FbGVtZW50KCd4JykpXG4iCi0gICAgICAgICJleGNlcHQ6XG4iCi0gICAgICAgICIgIGRlZiBjb3B5ZWxlbWVudChlbGVtKTpcbiIKLSAgICAgICAgIiAgICByZXR1cm4gZWxlbVxuIgotCi0gICAgICAgICJjbGFzcyBDb21tZW50UHJveHk6XG4iCi0gICAgICAgICIgZGVmIF9fY2FsbF9fKHNlbGYsIHRleHQ9Tm9uZSk6XG4iCi0gICAgICAgICIgIGVsZW1lbnQgPSBjRWxlbWVudFRyZWUuRWxlbWVudChFVC5Db21tZW50KVxuIgotICAgICAgICAiICBlbGVtZW50LnRleHQgPSB0ZXh0XG4iCi0gICAgICAgICIgIHJldHVybiBlbGVtZW50XG4iCi0gICAgICAgICIgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6XG4iCi0gICAgICAgICIgIHJldHVybiBFVC5Db21tZW50ID09IG90aGVyXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuQ29tbWVudCA9IENvbW1lbnRQcm94eSgpXG4iCi0KLSAgICAgICAgImNsYXNzIEVsZW1lbnRUcmVlKEVULkVsZW1lbnRUcmVlKTpcbiIgLyogcHVibGljICovCi0gICAgICAgICIgIGRlZiBwYXJzZShzZWxmLCBzb3VyY2UsIHBhcnNlcj1Ob25lKTpcbiIKLSAgICAgICAgIiAgICBjbG9zZV9zb3VyY2UgPSBGYWxzZVxuIgotICAgICAgICAiICAgIGlmIG5vdCBoYXNhdHRyKHNvdXJjZSwgJ3JlYWQnKTpcbiIKLSAgICAgICAgIiAgICAgIHNvdXJjZSA9IG9wZW4oc291cmNlLCAncmInKVxuIgotICAgICAgICAiICAgICAgY2xvc2Vfc291cmNlID0gVHJ1ZVxuIgotICAgICAgICAiICAgIHRyeTpcbiIKLSAgICAgICAgIiAgICAgIGlmIHBhcnNlciBpcyBub3QgTm9uZTpcbiIKLSAgICAgICAgIiAgICAgICAgd2hpbGUgMTpcbiIKLSAgICAgICAgIiAgICAgICAgICBkYXRhID0gc291cmNlLnJlYWQoNjU1MzYpXG4iCi0gICAgICAgICIgICAgICAgICAgaWYgbm90IGRhdGE6XG4iCi0gICAgICAgICIgICAgICAgICAgICBicmVha1xuIgotICAgICAgICAiICAgICAgICAgIHBhcnNlci5mZWVkKGRhdGEpXG4iCi0gICAgICAgICIgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuY2xvc2UoKVxuIgotICAgICAgICAiICAgICAgZWxzZTpcbiIgCi0gICAgICAgICIgICAgICAgIHBhcnNlciA9IGNFbGVtZW50VHJlZS5YTUxQYXJzZXIoKVxuIgotICAgICAgICAiICAgICAgICBzZWxmLl9yb290ID0gcGFyc2VyLl9wYXJzZShzb3VyY2UpXG4iCi0gICAgICAgICIgICAgICByZXR1cm4gc2VsZi5fcm9vdFxuIgotICAgICAgICAiICAgIGZpbmFsbHk6XG4iCi0gICAgICAgICIgICAgICBpZiBjbG9zZV9zb3VyY2U6XG4iCi0gICAgICAgICIgICAgICAgIHNvdXJjZS5jbG9zZSgpXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuRWxlbWVudFRyZWUgPSBFbGVtZW50VHJlZVxuIgotCi0gICAgICAgICJkZWYgaXRlcihub2RlLCB0YWc9Tm9uZSk6XG4iIC8qIGhlbHBlciAqLwotICAgICAgICAiICBpZiB0YWcgPT0gJyonOlxuIgotICAgICAgICAiICAgIHRhZyA9IE5vbmVcbiIKLSAgICAgICAgIiAgaWYgdGFnIGlzIE5vbmUgb3Igbm9kZS50YWcgPT0gdGFnOlxuIgotICAgICAgICAiICAgIHlpZWxkIG5vZGVcbiIKLSAgICAgICAgIiAgZm9yIG5vZGUgaW4gbm9kZTpcbiIKLSAgICAgICAgIiAgICBmb3Igbm9kZSBpbiBpdGVyKG5vZGUsIHRhZyk6XG4iCi0gICAgICAgICIgICAgICB5aWVsZCBub2RlXG4iCi0KLSAgICAgICAgImRlZiBpdGVydGV4dChub2RlKTpcbiIgLyogaGVscGVyICovCi0gICAgICAgICIgIGlmIG5vZGUudGV4dDpcbiIKLSAgICAgICAgIiAgICB5aWVsZCBub2RlLnRleHRcbiIKLSAgICAgICAgIiAgZm9yIGUgaW4gbm9kZTpcbiIKLSAgICAgICAgIiAgICBmb3IgcyBpbiBlLml0ZXJ0ZXh0KCk6XG4iCi0gICAgICAgICIgICAgICB5aWVsZCBzXG4iCi0gICAgICAgICIgICAgaWYgZS50YWlsOlxuIgotICAgICAgICAiICAgICAgeWllbGQgZS50YWlsXG4iCi0KLSAgICAgICAgImRlZiBwYXJzZShzb3VyY2UsIHBhcnNlcj1Ob25lKTpcbiIgLyogcHVibGljICovCi0gICAgICAgICIgIHRyZWUgPSBFbGVtZW50VHJlZSgpXG4iCi0gICAgICAgICIgIHRyZWUucGFyc2Uoc291cmNlLCBwYXJzZXIpXG4iCi0gICAgICAgICIgIHJldHVybiB0cmVlXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUucGFyc2UgPSBwYXJzZVxuIgotCi0gICAgICAgICJjbGFzcyBpdGVycGFyc2U6XG4iCi0gICAgICAgICIgcm9vdCA9IE5vbmVcbiIKLSAgICAgICAgIiBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgZXZlbnRzPU5vbmUpOlxuIgotICAgICAgICAiICBzZWxmLl9jbG9zZV9maWxlID0gRmFsc2VcbiIKLSAgICAgICAgIiAgaWYgbm90IGhhc2F0dHIoZmlsZSwgJ3JlYWQnKTpcbiIKLSAgICAgICAgIiAgICBmaWxlID0gb3BlbihmaWxlLCAncmInKVxuIgotICAgICAgICAiICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBUcnVlXG4iCi0gICAgICAgICIgIHNlbGYuX2ZpbGUgPSBmaWxlXG4iCi0gICAgICAgICIgIHNlbGYuX2V2ZW50cyA9IFtdXG4iCi0gICAgICAgICIgIHNlbGYuX2luZGV4ID0gMFxuIgotICAgICAgICAiICBzZWxmLl9lcnJvciA9IE5vbmVcbiIKLSAgICAgICAgIiAgc2VsZi5yb290ID0gc2VsZi5fcm9vdCA9IE5vbmVcbiIKLSAgICAgICAgIiAgYiA9IGNFbGVtZW50VHJlZS5UcmVlQnVpbGRlcigpXG4iCi0gICAgICAgICIgIHNlbGYuX3BhcnNlciA9IGNFbGVtZW50VHJlZS5YTUxQYXJzZXIoYilcbiIKLSAgICAgICAgIiAgc2VsZi5fcGFyc2VyLl9zZXRldmVudHMoc2VsZi5fZXZlbnRzLCBldmVudHMpXG4iCi0gICAgICAgICIgZGVmIF9fbmV4dF9fKHNlbGYpOlxuIgotICAgICAgICAiICB3aGlsZSAxOlxuIgotICAgICAgICAiICAgIHRyeTpcbiIKLSAgICAgICAgIiAgICAgIGl0ZW0gPSBzZWxmLl9ldmVudHNbc2VsZi5faW5kZXhdXG4iCi0gICAgICAgICIgICAgICBzZWxmLl9pbmRleCArPSAxXG4iCi0gICAgICAgICIgICAgICByZXR1cm4gaXRlbVxuIgotICAgICAgICAiICAgIGV4Y2VwdCBJbmRleEVycm9yOlxuIgotICAgICAgICAiICAgICAgcGFzc1xuIgotICAgICAgICAiICAgIGlmIHNlbGYuX2Vycm9yOlxuIgotICAgICAgICAiICAgICAgZSA9IHNlbGYuX2Vycm9yXG4iCi0gICAgICAgICIgICAgICBzZWxmLl9lcnJvciA9IE5vbmVcbiIKLSAgICAgICAgIiAgICAgIHJhaXNlIGVcbiIKLSAgICAgICAgIiAgICBpZiBzZWxmLl9wYXJzZXIgaXMgTm9uZTpcbiIKLSAgICAgICAgIiAgICAgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3RcbiIKLSAgICAgICAgIiAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6XG4iCi0gICAgICAgICIgICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKVxuIgotICAgICAgICAiICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvblxuIgotICAgICAgICAiICAgICMgbG9hZCBldmVudCBidWZmZXJcbiIKLSAgICAgICAgIiAgICBkZWwgc2VsZi5fZXZlbnRzWzpdXG4iCi0gICAgICAgICIgICAgc2VsZi5faW5kZXggPSAwXG4iCi0gICAgICAgICIgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZCgxNjM4NClcbiIKLSAgICAgICAgIiAgICBpZiBkYXRhOlxuIgotICAgICAgICAiICAgICAgdHJ5OlxuIgotICAgICAgICAiICAgICAgICBzZWxmLl9wYXJzZXIuZmVlZChkYXRhKVxuIgotICAgICAgICAiICAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGV4YzpcbiIKLSAgICAgICAgIiAgICAgICAgc2VsZi5fZXJyb3IgPSBleGNcbiIKLSAgICAgICAgIiAgICBlbHNlOlxuIgotICAgICAgICAiICAgICAgc2VsZi5fcm9vdCA9IHNlbGYuX3BhcnNlci5jbG9zZSgpXG4iCi0gICAgICAgICIgICAgICBzZWxmLl9wYXJzZXIgPSBOb25lXG4iCi0gICAgICAgICIgZGVmIF9faXRlcl9fKHNlbGYpOlxuIgotICAgICAgICAiICByZXR1cm4gc2VsZlxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLml0ZXJwYXJzZSA9IGl0ZXJwYXJzZVxuIgotCi0gICAgICAgICJjbGFzcyBQSVByb3h5OlxuIgotICAgICAgICAiIGRlZiBfX2NhbGxfXyhzZWxmLCB0YXJnZXQsIHRleHQ9Tm9uZSk6XG4iCi0gICAgICAgICIgIGVsZW1lbnQgPSBjRWxlbWVudFRyZWUuRWxlbWVudChFVC5QSSlcbiIKLSAgICAgICAgIiAgZWxlbWVudC50ZXh0ID0gdGFyZ2V0XG4iCi0gICAgICAgICIgIGlmIHRleHQ6XG4iCi0gICAgICAgICIgICAgZWxlbWVudC50ZXh0ID0gZWxlbWVudC50ZXh0ICsgJyAnICsgdGV4dFxuIgotICAgICAgICAiICByZXR1cm4gZWxlbWVudFxuIgotICAgICAgICAiIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOlxuIgotICAgICAgICAiICByZXR1cm4gRVQuUEkgPT0gb3RoZXJcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5QSSA9IGNFbGVtZW50VHJlZS5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBQSVByb3h5KClcbiIKLQotICAgICAgICAiZGVmIFhNTCh0ZXh0KTpcbiIgLyogcHVibGljICovCi0gICAgICAgICIgIHBhcnNlciA9IGNFbGVtZW50VHJlZS5YTUxQYXJzZXIoKVxuIgotICAgICAgICAiICBwYXJzZXIuZmVlZCh0ZXh0KVxuIgotICAgICAgICAiICByZXR1cm4gcGFyc2VyLmNsb3NlKClcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5YTUwgPSBjRWxlbWVudFRyZWUuZnJvbXN0cmluZyA9IFhNTFxuIgotCi0gICAgICAgICJkZWYgWE1MSUQodGV4dCk6XG4iIC8qIHB1YmxpYyAqLwotICAgICAgICAiICB0cmVlID0gWE1MKHRleHQpXG4iCi0gICAgICAgICIgIGlkcyA9IHt9XG4iCi0gICAgICAgICIgIGZvciBlbGVtIGluIHRyZWUuaXRlcigpOlxuIgotICAgICAgICAiICAgIGlkID0gZWxlbS5nZXQoJ2lkJylcbiIKLSAgICAgICAgIiAgICBpZiBpZDpcbiIKLSAgICAgICAgIiAgICAgIGlkc1tpZF0gPSBlbGVtXG4iCi0gICAgICAgICIgIHJldHVybiB0cmVlLCBpZHNcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5YTUxJRCA9IFhNTElEXG4iCi0KLSAgICAgICAgInRyeTpcbiIKLSAgICAgICAgIiByZWdpc3Rlcl9uYW1lc3BhY2UgPSBFVC5yZWdpc3Rlcl9uYW1lc3BhY2VcbiIKLSAgICAgICAgImV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjpcbiIKLSAgICAgICAgIiBkZWYgcmVnaXN0ZXJfbmFtZXNwYWNlKHByZWZpeCwgdXJpKTpcbiIKLSAgICAgICAgIiAgRVQuX25hbWVzcGFjZV9tYXBbdXJpXSA9IHByZWZpeFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLnJlZ2lzdGVyX25hbWVzcGFjZSA9IHJlZ2lzdGVyX25hbWVzcGFjZVxuIgotCi0gICAgICAgICJjRWxlbWVudFRyZWUuZHVtcCA9IEVULmR1bXBcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5FbGVtZW50UGF0aCA9IEVsZW1lbnRQYXRoID0gRVQuRWxlbWVudFBhdGhcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5pc2VsZW1lbnQgPSBFVC5pc2VsZW1lbnRcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5RTmFtZSA9IEVULlFOYW1lXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUudG9zdHJpbmcgPSBFVC50b3N0cmluZ1xuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLmZyb21zdHJpbmdsaXN0ID0gRVQuZnJvbXN0cmluZ2xpc3RcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS50b3N0cmluZ2xpc3QgPSBFVC50b3N0cmluZ2xpc3RcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5WRVJTSU9OID0gJyIgVkVSU0lPTiAiJ1xuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLl9fdmVyc2lvbl9fID0gJyIgVkVSU0lPTiAiJ1xuIgotCi0gICAgICAgKTsKLQotICAgIGlmICghUHlSdW5fU3RyaW5nKGJvb3RzdHJhcCwgUHlfZmlsZV9pbnB1dCwgZywgTlVMTCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZWxlbWVudHBhdGhfb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZywgIkVsZW1lbnRQYXRoIik7Ci0KLSAgICBlbGVtZW50dHJlZV9jb3B5ZWxlbWVudF9vYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnLCAiY29weWVsZW1lbnQiKTsKLSAgICBpZiAoZWxlbWVudHRyZWVfY29weWVsZW1lbnRfb2JqKSB7Ci0gICAgICAgIC8qIHJlZHVjZSBoYWNrIG5lZWRlZDsgZW5hYmxlIHJlZHVjZSBtZXRob2QgKi8KLSAgICAgICAgUHlNZXRob2REZWYqIG1wOwotICAgICAgICBmb3IgKG1wID0gZWxlbWVudF9tZXRob2RzOyBtcC0+bWxfbmFtZTsgbXArKykKLSAgICAgICAgICAgIGlmIChtcC0+bWxfbWV0aCA9PSAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfcmVkdWNlKSB7Ci0gICAgICAgICAgICAgICAgbXAtPm1sX25hbWUgPSAiX19yZWR1Y2VfXyI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0KLSAgICBlbGVtZW50dHJlZV9kZWVwY29weV9vYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnLCAiZGVlcGNvcHkiKTsKLSAgICBlbGVtZW50dHJlZV9pdGVyX29iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGcsICJpdGVyIik7Ci0gICAgZWxlbWVudHRyZWVfaXRlcnRleHRfb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZywgIml0ZXJ0ZXh0Iik7Ci0KLSNpZiBkZWZpbmVkKFVTRV9QWUVYUEFUX0NBUEkpCi0gICAgLyogbGluayBhZ2FpbnN0IHB5ZXhwYXQsIGlmIHBvc3NpYmxlICovCisgICAgLyogbGluayBhZ2FpbnN0IHB5ZXhwYXQgKi8KICAgICBleHBhdF9jYXBpID0gUHlDYXBzdWxlX0ltcG9ydChQeUV4cGF0X0NBUFNVTEVfTkFNRSwgMCk7CiAgICAgaWYgKGV4cGF0X2NhcGkpIHsKICAgICAgICAgLyogY2hlY2sgdGhhdCBpdCdzIHVzYWJsZSAqLwpAQCAtMzEyMiwxMyArMzUxOCwyMyBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSNlbmRpZgogCiAgICAgZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmogPSBQeUVycl9OZXdFeGNlcHRpb24oCi0gICAgICAgICJjRWxlbWVudFRyZWUuUGFyc2VFcnJvciIsIFB5RXhjX1N5bnRheEVycm9yLCBOVUxMCisgICAgICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuUGFyc2VFcnJvciIsIFB5RXhjX1N5bnRheEVycm9yLCBOVUxMCiAgICAgICAgICk7CiAgICAgUHlfSU5DUkVGKGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlBhcnNlRXJyb3IiLCBlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iaik7CiAKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopJkVsZW1lbnRfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJFbGVtZW50IiwgKFB5T2JqZWN0ICopJkVsZW1lbnRfVHlwZSk7CisKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopJlRyZWVCdWlsZGVyX1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiVHJlZUJ1aWxkZXIiLCAoUHlPYmplY3QgKikmVHJlZUJ1aWxkZXJfVHlwZSk7CisKKyNpZiBkZWZpbmVkKFVTRV9FWFBBVCkKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopJlhNTFBhcnNlcl9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlhNTFBhcnNlciIsIChQeU9iamVjdCAqKSZYTUxQYXJzZXJfVHlwZSk7CisjZW5kaWYKKwogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jIGIvTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YjI5ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMKQEAgLTAsMCArMSwxNDIgQEAKKy8qIFRoaXMgaXMgYnVpbHQgYXMgYSBzdGFuZC1hbG9uZSBleGVjdXRhYmxlIGJ5IHRoZSBNYWtlZmlsZSwgYW5kIGhlbHBzIHR1cm4KKyAgIExpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBpbnRvIGEgZnJvemVuIG1vZHVsZSBpbiBQeXRob24vaW1wb3J0bGliLmgKKyovCisKKyNpbmNsdWRlIDxQeXRob24uaD4KKyNpbmNsdWRlIDxtYXJzaGFsLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaWZuZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisKKy8qIFRvIGF2b2lkIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBvbiBmcm96ZW4ubywgd2UgY3JlYXRlIG91ciBvd24gc3RydWN0dXJlCisgICBvZiBmcm96ZW4gbW9kdWxlcyBpbnN0ZWFkLCBsZWZ0IGRlbGliZXJhdGVseSBibGFuayBzbyBhcyB0byBhdm9pZAorICAgdW5pbnRlbnRpb25hbCBpbXBvcnQgb2YgYSBzdGFsZSB2ZXJzaW9uIG9mIF9mcm96ZW5faW1wb3J0bGliLiAqLworCitzdGF0aWMgc3RydWN0IF9mcm96ZW4gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXNbXSA9IHsKKyAgICB7MCwgMCwgMH0gLyogc2VudGluZWwgKi8KK307CisKKyNpZm5kZWYgTVNfV0lORE9XUworLyogT24gV2luZG93cywgdGhpcyBsaW5rcyB3aXRoIHRoZSByZWd1bGFyIHB5dGhvblhZLmRsbCwgc28gdGhpcyB2YXJpYWJsZSBjb21lcworICAgZnJvbSBmcm96ZW4ub2JqLiBJbiB0aGUgTWFrZWZpbGUsIGZyb3plbi5vIGlzIG5vdCBsaW5rZWQgaW50byB0aGlzIGV4ZWN1dGFibGUsCisgICBzbyB3ZSBkZWZpbmUgdGhlIHZhcmlhYmxlIGhlcmUuICovCitzdHJ1Y3QgX2Zyb3plbiAqUHlJbXBvcnRfRnJvemVuTW9kdWxlczsKKyNlbmRpZgorCitjb25zdCBjaGFyIGhlYWRlcltdID0gIi8qIEF1dG8tZ2VuZXJhdGVkIGJ5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLyI7CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGNoYXIgKmlucGF0aCwgKm91dHBhdGg7CisgICAgRklMRSAqaW5maWxlLCAqb3V0ZmlsZSA9IE5VTEw7CisgICAgc3RydWN0IHN0YXQgc3Q7CisgICAgc2l6ZV90IHRleHRfc2l6ZSwgZGF0YV9zaXplLCBuOworICAgIGNoYXIgKnRleHQ7CisgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKKyAgICBQeU9iamVjdCAqY29kZSwgKm1hcnNoYWxsZWQ7CisKKyAgICBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzID0gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXM7CisKKyAgICBpZiAoYXJnYyAhPSAzKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibmVlZCB0byBzcGVjaWZ5IGlucHV0IGFuZCBvdXRwdXQgcGF0aHNcbiIpOworICAgICAgICByZXR1cm4gMjsKKyAgICB9CisgICAgaW5wYXRoID0gYXJndlsxXTsKKyAgICBvdXRwYXRoID0gYXJndlsyXTsKKyAgICBpbmZpbGUgPSBmb3BlbihpbnBhdGgsICJyYiIpOworICAgIGlmIChpbmZpbGUgPT0gTlVMTCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBvcGVuICclcycgZm9yIHJlYWRpbmdcbiIsIGlucGF0aCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoZnN0YXQoZmlsZW5vKGluZmlsZSksICZzdCkpIHsKKyAgICAgICAgZmNsb3NlKGluZmlsZSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IGZzdGF0ICclcydcbiIsIGlucGF0aCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICB0ZXh0X3NpemUgPSBzdC5zdF9zaXplOworICAgIHRleHQgPSAoY2hhciAqKSBtYWxsb2ModGV4dF9zaXplICsgMSk7CisgICAgaWYgKHRleHQgPT0gTlVMTCkgeworICAgICAgICBmY2xvc2UoaW5maWxlKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJjb3VsZCBub3QgYWxsb2NhdGUgJWxkIGJ5dGVzXG4iLCAobG9uZykgdGV4dF9zaXplKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIG4gPSBmcmVhZCh0ZXh0LCAxLCB0ZXh0X3NpemUsIGluZmlsZSk7CisgICAgZmNsb3NlKGluZmlsZSk7CisgICAgaW5maWxlID0gTlVMTDsKKyAgICBpZiAobiA8IHRleHRfc2l6ZSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInJlYWQgdG9vIHNob3J0OiBnb3QgJWxkIGluc3RlYWQgb2YgJWxkIGJ5dGVzXG4iLAorICAgICAgICAgICAgICAgIChsb25nKSBuLCAobG9uZykgdGV4dF9zaXplKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHRleHRbdGV4dF9zaXplXSA9ICdcMCc7CisKKyAgICBQeV9Ob1VzZXJTaXRlRGlyZWN0b3J5Kys7CisgICAgUHlfTm9TaXRlRmxhZysrOworICAgIFB5X0lnbm9yZUVudmlyb25tZW50RmxhZysrOworCisgICAgUHlfU2V0UHJvZ3JhbU5hbWUoTCIuL19mcmVlemVfaW1wb3J0bGliIik7CisgICAgLyogRG9uJ3QgaW5zdGFsbCBpbXBvcnRsaWIsIHNpbmNlIGl0IGNvdWxkIGV4ZWN1dGUgb3V0ZGF0ZWQgYnl0ZWNvZGUuICovCisgICAgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKDEsIDApOworCisgICAgY29kZSA9IFB5X0NvbXBpbGVTdHJpbmdFeEZsYWdzKHRleHQsICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2ZpbGVfaW5wdXQsIE5VTEwsIDApOworICAgIGlmIChjb2RlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgbWFyc2hhbGxlZCA9IFB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvU3RyaW5nKGNvZGUsIFB5X01BUlNIQUxfVkVSU0lPTik7CisgICAgUHlfREVDUkVGKGNvZGUpOworICAgIGlmIChtYXJzaGFsbGVkID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBhc3NlcnQoUHlCeXRlc19DaGVja0V4YWN0KG1hcnNoYWxsZWQpKTsKKyAgICBkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgUHlCeXRlc19BU19TVFJJTkcobWFyc2hhbGxlZCk7CisgICAgZGF0YV9zaXplID0gUHlCeXRlc19HRVRfU0laRShtYXJzaGFsbGVkKTsKKworICAgIC8qIE9wZW4gdGhlIGZpbGUgaW4gdGV4dCBtb2RlLiBUaGUgaGcgY2hlY2tvdXQgc2hvdWxkIGJlIHVzaW5nIHRoZSBlb2wgZXh0ZW5zaW9uLAorICAgICAgIHdoaWNoIGluIHR1cm4gc2hvdWxkIGNhdXNlIHRoZSBFT0wgc3R5bGUgbWF0Y2ggdGhlIEMgbGlicmFyeSdzIHRleHQgbW9kZSAqLworICAgIG91dGZpbGUgPSBmb3BlbihvdXRwYXRoLCAidyIpOworICAgIGlmIChvdXRmaWxlID09IE5VTEwpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3Qgb3BlbiAnJXMnIGZvciB3cml0aW5nXG4iLCBvdXRwYXRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGZwcmludGYob3V0ZmlsZSwgIiVzXG4iLCBoZWFkZXIpOworICAgIGZwcmludGYob3V0ZmlsZSwgInVuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYltdID0ge1xuIik7CisgICAgZm9yIChuID0gMDsgbiA8IGRhdGFfc2l6ZTsgbiArPSAxNikgeworICAgICAgICBzaXplX3QgaSwgZW5kID0gUHlfTUlOKG4gKyAxNiwgZGF0YV9zaXplKTsKKyAgICAgICAgZnByaW50ZihvdXRmaWxlLCAiICAgICIpOworICAgICAgICBmb3IgKGkgPSBuOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIGZwcmludGYob3V0ZmlsZSwgIiVkLCIsICh1bnNpZ25lZCBpbnQpIGRhdGFbaV0pOworICAgICAgICB9CisgICAgICAgIGZwcmludGYob3V0ZmlsZSwgIlxuIik7CisgICAgfQorICAgIGZwcmludGYob3V0ZmlsZSwgIn07XG4iKTsKKworICAgIFB5X0RFQ1JFRihtYXJzaGFsbGVkKTsKKworICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKGluZmlsZSkKKyAgICAgICAgZmNsb3NlKGluZmlsZSk7CisgICAgaWYgKG91dGZpbGUpIHsKKyAgICAgICAgaWYgKGZlcnJvcihvdXRmaWxlKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlcnJvciB3aGVuIHdyaXRpbmcgdG8gJyVzJ1xuIiwgb3V0cGF0aCk7CisgICAgICAgICAgICBmY2xvc2Uob3V0ZmlsZSk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBmY2xvc2Uob3V0ZmlsZSk7CisgICAgfQorICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeUVycl9QcmludCgpOworICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKGluZmlsZSkKKyAgICAgICAgZmNsb3NlKGluZmlsZSk7CisgICAgaWYgKG91dGZpbGUpCisgICAgICAgIGZjbG9zZShvdXRmaWxlKTsKKyAgICByZXR1cm4gMTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKaW5kZXggZDhhMjgzYi4uM2ZmMDdiYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKQEAgLTE1NSw0NCArMTU1LDggQEAKICAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKgotcGFydGlhbF9nZXRfZGljdChwYXJ0aWFsb2JqZWN0ICpwdG8pCi17Ci0gICAgaWYgKHB0by0+ZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgIHB0by0+ZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgaWYgKHB0by0+ZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihwdG8tPmRpY3QpOwotICAgIHJldHVybiBwdG8tPmRpY3Q7Ci19Ci0KLXN0YXRpYyBpbnQKLXBhcnRpYWxfc2V0X2RpY3QocGFydGlhbG9iamVjdCAqcHRvLCBQeU9iamVjdCAqdmFsdWUpCi17Ci0gICAgUHlPYmplY3QgKnRtcDsKLQotICAgIC8qIEl0IGlzIGlsbGVnYWwgdG8gZGVsIHAuX19kaWN0X18gKi8KLSAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImEgcGFydGlhbCBvYmplY3QncyBkaWN0aW9uYXJ5IG1heSBub3QgYmUgZGVsZXRlZCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIENhbiBvbmx5IHNldCBfX2RpY3RfXyB0byBhIGRpY3Rpb25hcnkgKi8KLSAgICBpZiAoIVB5RGljdF9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzZXR0aW5nIHBhcnRpYWwgb2JqZWN0J3MgZGljdGlvbmFyeSB0byBhIG5vbi1kaWN0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgdG1wID0gcHRvLT5kaWN0OwotICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgcHRvLT5kaWN0ID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgUHlHZXRTZXREZWYgcGFydGlhbF9nZXRzZXRsaXN0W10gPSB7Ci0gICAgeyJfX2RpY3RfXyIsIChnZXR0ZXIpcGFydGlhbF9nZXRfZGljdCwgKHNldHRlcilwYXJ0aWFsX3NldF9kaWN0fSwKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKICAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTMzMCw2ICsyOTQsMTc2IEBACiB9OwogCiAKKy8qIGNtcF90b19rZXkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICpjbXA7CisgICAgUHlPYmplY3QgKm9iamVjdDsKK30ga2V5b2JqZWN0OworCitzdGF0aWMgdm9pZAora2V5b2JqZWN0X2RlYWxsb2Moa2V5b2JqZWN0ICprbykKK3sKKyAgICBQeV9ERUNSRUYoa28tPmNtcCk7CisgICAgUHlfWERFQ1JFRihrby0+b2JqZWN0KTsKKyAgICBQeU9iamVjdF9GUkVFKGtvKTsKK30KKworc3RhdGljIGludAora2V5b2JqZWN0X3RyYXZlcnNlKGtleW9iamVjdCAqa28sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGtvLT5jbXApOworICAgIGlmIChrby0+b2JqZWN0KQorICAgICAgICBQeV9WSVNJVChrby0+b2JqZWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAora2V5b2JqZWN0X2NsZWFyKGtleW9iamVjdCAqa28pCit7CisgICAgUHlfQ0xFQVIoa28tPmNtcCk7CisgICAgaWYgKGtvLT5vYmplY3QpCisgICAgICAgIFB5X0NMRUFSKGtvLT5vYmplY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNZW1iZXJEZWYga2V5b2JqZWN0X21lbWJlcnNbXSA9IHsKKyAgICB7Im9iaiIsIFRfT0JKRUNULAorICAgICBvZmZzZXRvZihrZXlvYmplY3QsIG9iamVjdCksIDAsCisgICAgIFB5RG9jX1NUUigiVmFsdWUgd3JhcHBlZCBieSBhIGtleSBmdW5jdGlvbi4iKX0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlPYmplY3QgKgora2V5b2JqZWN0X2NhbGwoa2V5b2JqZWN0ICprbywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2tleW9iamVjdF9yaWNoY29tcGFyZShQeU9iamVjdCAqa28sIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBrZXlvYmplY3RfdHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJmdW5jdG9vbHMuS2V5V3JhcHBlciIsICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2Yoa2V5b2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilrZXlvYmplY3RfZGVhbGxvYywgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAodGVybmFyeWZ1bmMpa2V5b2JqZWN0X2NhbGwsICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylrZXlvYmplY3RfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlrZXlvYmplY3RfY2xlYXIsICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIGtleW9iamVjdF9yaWNoY29tcGFyZSwgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAga2V5b2JqZWN0X21lbWJlcnMsICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2tleW9iamVjdF9jYWxsKGtleW9iamVjdCAqa28sIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqb2JqZWN0OworICAgIGtleW9iamVjdCAqcmVzdWx0OworICAgIHN0YXRpYyBjaGFyICprd2FyZ3NbXSA9IHsib2JqIiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiTzpLIiwga3dhcmdzLCAmb2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfTmV3KGtleW9iamVjdCwgJmtleW9iamVjdF90eXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKGtvLT5jbXApOworICAgIHJlc3VsdC0+Y21wID0ga28tPmNtcDsKKyAgICBQeV9JTkNSRUYob2JqZWN0KTsKKyAgICByZXN1bHQtPm9iamVjdCA9IG9iamVjdDsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgora2V5b2JqZWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICprbywgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqeDsKKyAgICBQeU9iamVjdCAqeTsKKyAgICBQeU9iamVjdCAqY29tcGFyZTsKKyAgICBQeU9iamVjdCAqYW5zd2VyOworICAgIHN0YXRpYyBQeU9iamVjdCAqemVybzsKKworICAgIGlmICh6ZXJvID09IE5VTEwpIHsKKyAgICAgICAgemVybyA9IFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICAgICAgaWYgKCF6ZXJvKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5X1RZUEUob3RoZXIpICE9ICZrZXlvYmplY3RfdHlwZSl7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJvdGhlciBhcmd1bWVudCBtdXN0IGJlIEsgaW5zdGFuY2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGNvbXBhcmUgPSAoKGtleW9iamVjdCAqKSBrbyktPmNtcDsKKyAgICBhc3NlcnQoY29tcGFyZSAhPSBOVUxMKTsKKyAgICB4ID0gKChrZXlvYmplY3QgKikga28pLT5vYmplY3Q7CisgICAgeSA9ICgoa2V5b2JqZWN0ICopIG90aGVyKS0+b2JqZWN0OworICAgIGlmICgheCB8fCAheSl7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgIm9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDYWxsIHRoZSB1c2VyJ3MgY29tcGFyaXNvbiBmdW5jdGlvbiBhbmQgdHJhbnNsYXRlIHRoZSAzLXdheQorICAgICAqIHJlc3VsdCBpbnRvIHRydWUgb3IgZmFsc2UgKG9yIGVycm9yKS4KKyAgICAgKi8KKyAgICBhcmdzID0gUHlUdXBsZV9OZXcoMik7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKHgpOworICAgIFB5X0lOQ1JFRih5KTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIHgpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgeSk7CisgICAgcmVzID0gUHlPYmplY3RfQ2FsbChjb21wYXJlLCBhcmdzLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhbnN3ZXIgPSBQeU9iamVjdF9SaWNoQ29tcGFyZShyZXMsIHplcm8sIG9wKTsKKyAgICBQeV9ERUNSRUYocmVzKTsKKyAgICByZXR1cm4gYW5zd2VyOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZnVuY3Rvb2xzX2NtcF90b19rZXkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqY21wOworICAgIHN0YXRpYyBjaGFyICprd2FyZ3NbXSA9IHsibXljbXAiLCBOVUxMfTsKKyAgICBrZXlvYmplY3QgKm9iamVjdDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPOmNtcF90b19rZXkiLCBrd2FyZ3MsICZjbXApKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBvYmplY3QgPSBQeU9iamVjdF9OZXcoa2V5b2JqZWN0LCAma2V5b2JqZWN0X3R5cGUpOworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoY21wKTsKKyAgICBvYmplY3QtPmNtcCA9IGNtcDsKKyAgICBvYmplY3QtPm9iamVjdCA9IE5VTEw7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW9iamVjdDsKK30KKworUHlEb2NfU1RSVkFSKGZ1bmN0b29sc19jbXBfdG9fa2V5X2RvYywKKyJDb252ZXJ0IGEgY21wPSBmdW5jdGlvbiBpbnRvIGEga2V5PSBmdW5jdGlvbi4iKTsKKwogLyogcmVkdWNlICh1c2VkIHRvIGJlIGEgYnVpbHRpbikgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00MTMsNiArNTQ3LDggQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIG1vZHVsZV9tZXRob2RzW10gPSB7CiAgICAgeyJyZWR1Y2UiLCAgICAgICAgICBmdW5jdG9vbHNfcmVkdWNlLCAgICAgTUVUSF9WQVJBUkdTLCBmdW5jdG9vbHNfcmVkdWNlX2RvY30sCisgICAgeyJjbXBfdG9fa2V5IiwgICAgICAoUHlDRnVuY3Rpb24pZnVuY3Rvb2xzX2NtcF90b19rZXksCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGZ1bmN0b29sc19jbXBfdG9fa2V5X2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2dlc3RhbHQuYyBiL01vZHVsZXMvX2dlc3RhbHQuYwppbmRleCBhNDU3ODBmLi5jZDMwNjgzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19nZXN0YWx0LmMKKysrIGIvTW9kdWxlcy9fZ2VzdGFsdC5jCkBAIC0zMyw3ICszMyw3IEBACiBjb252ZXJ0X3RvX09TVHlwZShQeU9iamVjdCAqdiwgT1NUeXBlICpwcikKIHsKICAgICB1aW50MzJfdCB0bXA7Ci0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodikgfHwgUHlVbmljb2RlX0dldFNpemUodikgIT0gNCkgeworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHYpIHx8IFB5VW5pY29kZV9HZXRMZW5ndGgodikgIT0gNCkgewogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJPU1R5cGUgYXJnIG11c3QgYmUgc3RyaW5nIG9mIDQgY2hhcnMiKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCmluZGV4IGRkNDMxN2YuLmQzNzY4OWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKKysrIGIvTW9kdWxlcy9faGFzaG9wZW5zc2wuYwpAQCAtMjAxLDEzICsyMDEsMTEgQEAKIAogICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwogICAgIGZvcihpPWo9MDsgaTxkaWdlc3Rfc2l6ZTsgaSsrKSB7Ci0gICAgICAgIGNoYXIgYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgfQogICAgIHJldHZhbCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShoZXhfZGlnZXN0LCBkaWdlc3Rfc2l6ZSAqIDIpOwogICAgIFB5TWVtX0ZyZWUoaGV4X2RpZ2VzdCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuYyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCmluZGV4IDU5ODc2NzkuLjE1NzgxYWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCkBAIC0xLDkgKzEsOSBAQAogLyoKICAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEkvTyBsaWIgYXMgZGVmaW5lZCBieSBQRVAgMzExNiAtICJOZXcgSS9PIgotICAgIAorCiAgICAgQ2xhc3NlcyBkZWZpbmVkIGhlcmU6IFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBCbG9ja2luZ0lPRXJyb3IuCiAgICAgRnVuY3Rpb25zIGRlZmluZWQgaGVyZTogb3BlbigpLgotICAgIAorCiAgICAgTW9zdGx5IHdyaXR0ZW4gYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMKICovCiAKQEAgLTM2LDYgKzM2LDcgQEAKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZDsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZDE7CiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRhYmxlOworUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkYWxsOwogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkaW50bzsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGxpbmU7CiBQeU9iamVjdCAqX1B5SU9fc3RyX3Jlc2V0OwpAQCAtOTAsOTQgKzkxLDExIEBACiAMCiAKIC8qCi0gKiBCbG9ja2luZ0lPRXJyb3IgZXh0ZW5kcyBJT0Vycm9yCi0gKi8KLQotc3RhdGljIGludAotYmxvY2tpbmdpb2Vycm9yX2luaXQoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgUHlPYmplY3QgKm15ZXJybm8gPSBOVUxMLCAqc3RyZXJyb3IgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpiYXNlYXJncyA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCB3cml0dGVuID0gMDsKLQotICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKLQotICAgIHNlbGYtPndyaXR0ZW4gPSAwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpCbG9ja2luZ0lPRXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbXllcnJubywgJnN0cmVycm9yLCAmd3JpdHRlbikpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGJhc2VhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG15ZXJybm8sIHN0cmVycm9yKTsKLSAgICBpZiAoYmFzZWFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIC8qIFRoaXMgd2lsbCB0YWtlIGNhcmUgb2YgaW5pdGlhbGl6aW5nIG9mIG15ZXJybm8gYW5kIHN0cmVycm9yIG1lbWJlcnMgKi8KLSAgICBpZiAoKChQeVR5cGVPYmplY3QgKilQeUV4Y19JT0Vycm9yKS0+dHBfaW5pdCgKLSAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilzZWxmLCBiYXNlYXJncywga3dkcykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKGJhc2VhcmdzKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9ERUNSRUYoYmFzZWFyZ3MpOwotCi0gICAgc2VsZi0+d3JpdHRlbiA9IHdyaXR0ZW47Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBQeU1lbWJlckRlZiBibG9ja2luZ2lvZXJyb3JfbWVtYmVyc1tdID0gewotICAgIHsiY2hhcmFjdGVyc193cml0dGVuIiwgVF9QWVNTSVpFVCwgb2Zmc2V0b2YoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QsIHdyaXR0ZW4pLCAwfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IF9QeUV4Y19CbG9ja2luZ0lPRXJyb3IgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIkJsb2NraW5nSU9FcnJvciIsIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKFB5QmxvY2tpbmdJT0Vycm9yT2JqZWN0KSwgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKnRwX2ZsYWdzKi8KLSAgICBQeURvY19TVFIoIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBJL08gd291bGQgYmxvY2sgIgotICAgICAgICAgICAgICAib24gYSBub24tYmxvY2tpbmcgSS9PIHN0cmVhbSIpLCAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgYmxvY2tpbmdpb2Vycm9yX21lbWJlcnMsICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpYmxvY2tpbmdpb2Vycm9yX2luaXQsIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi19OwotUHlPYmplY3QgKlB5RXhjX0Jsb2NraW5nSU9FcnJvciA9IChQeU9iamVjdCAqKSZfUHlFeGNfQmxvY2tpbmdJT0Vycm9yOwotDAotCi0vKgogICogVGhlIG1haW4gb3BlbigpIGZ1bmN0aW9uCiAgKi8KIFB5RG9jX1NUUlZBUihvcGVuX2RvYywKICJvcGVuKGZpbGUsIG1vZGU9J3InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsXG4iCi0iICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUpIC0+IGZpbGUgb2JqZWN0XG4iCisiICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKSAtPiBmaWxlIG9iamVjdFxuIgogIlxuIgogIk9wZW4gZmlsZSBhbmQgcmV0dXJuIGEgc3RyZWFtLiAgUmFpc2UgSU9FcnJvciB1cG9uIGZhaWx1cmUuXG4iCiAiXG4iCkBAIC0xOTAsMTggKzEwOCwyMCBAQAogIm1vZGUgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlXG4iCiAiaXMgb3BlbmVkLiBJdCBkZWZhdWx0cyB0byAncicgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0XG4iCiAibW9kZS4gIE90aGVyIGNvbW1vbiB2YWx1ZXMgYXJlICd3JyBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZlxuIgotIml0IGFscmVhZHkgZXhpc3RzKSwgYW5kICdhJyBmb3IgYXBwZW5kaW5nICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcyxcbiIKLSJtZWFucyB0aGF0IGFsbCB3cml0ZXMgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGVcbiIKLSJjdXJyZW50IHNlZWsgcG9zaXRpb24pLiBJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQgdGhlXG4iCi0iZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXdcbiIKLSJieXRlcyB1c2UgYmluYXJ5IG1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZVxuIgotIm1vZGVzIGFyZTpcbiIKKyJpdCBhbHJlYWR5IGV4aXN0cyksICd4JyBmb3IgY3JlYXRpbmcgYW5kIHdyaXRpbmcgdG8gYSBuZXcgZmlsZSwgYW5kXG4iCisiJ2EnIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLCBtZWFucyB0aGF0IGFsbCB3cml0ZXNcbiIKKyJhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLlxuIgorIkluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZCB0aGUgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybVxuIgorImRlcGVuZGVudDogbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBpcyBjYWxsZWQgdG8gZ2V0IHRoZVxuIgorImN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZSBiaW5hcnlcbiIKKyJtb2RlIGFuZCBsZWF2ZSBlbmNvZGluZyB1bnNwZWNpZmllZC4pIFRoZSBhdmFpbGFibGUgbW9kZXMgYXJlOlxuIgogIlxuIgogIj09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIKICJDaGFyYWN0ZXIgTWVhbmluZ1xuIgogIi0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIKICIncicgICAgICAgb3BlbiBmb3IgcmVhZGluZyAoZGVmYXVsdClcbiIKICIndycgICAgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdFxuIgorIid4JyAgICAgICBjcmVhdGUgYSBuZXcgZmlsZSBhbmQgb3BlbiBpdCBmb3Igd3JpdGluZ1xuIgogIidhJyAgICAgICBvcGVuIGZvciB3cml0aW5nLCBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiBpdCBleGlzdHNcbiIKICInYicgICAgICAgYmluYXJ5IG1vZGVcbiIKICIndCcgICAgICAgdGV4dCBtb2RlIChkZWZhdWx0KVxuIgpAQCAtMjEyLDcgKzEzMiw4IEBACiAiXG4iCiAiVGhlIGRlZmF1bHQgbW9kZSBpcyAncnQnIChvcGVuIGZvciByZWFkaW5nIHRleHQpLiBGb3IgYmluYXJ5IHJhbmRvbVxuIgogImFjY2VzcywgdGhlIG1vZGUgJ3crYicgb3BlbnMgYW5kIHRydW5jYXRlcyB0aGUgZmlsZSB0byAwIGJ5dGVzLCB3aGlsZVxuIgotIidyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi5cbiIKKyIncitiJyBvcGVucyB0aGUgZmlsZSB3aXRob3V0IHRydW5jYXRpb24uIFRoZSAneCcgbW9kZSBpbXBsaWVzICd3JyBhbmRcbiIKKyJyYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuXG4iCiAiXG4iCiAiUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBmaWxlcyBvcGVuZWQgaW4gYmluYXJ5IGFuZCB0ZXh0IG1vZGVzLFxuIgogImV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuJ3QuIEZpbGVzIG9wZW5lZCBpblxuIgpAQCAtMjcyLDYgKzE5MywxMiBAQAogIndoZW4gdGhlIGZpbGUgaXMgY2xvc2VkLiBUaGlzIGRvZXMgbm90IHdvcmsgd2hlbiBhIGZpbGUgbmFtZSBpcyBnaXZlblxuIgogImFuZCBtdXN0IGJlIFRydWUgaW4gdGhhdCBjYXNlLlxuIgogIlxuIgorIkEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZVxuIgorInVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieVxuIgorImNhbGxpbmcgKm9wZW5lciogd2l0aCAoKmZpbGUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlblxuIgorImZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eVxuIgorInNpbWlsYXIgdG8gcGFzc2luZyBOb25lKS5cbiIKKyJcbiIKICJvcGVuKCkgcmV0dXJucyBhIGZpbGUgb2JqZWN0IHdob3NlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbW9kZSwgYW5kXG4iCiAidGhyb3VnaCB3aGljaCB0aGUgc3RhbmRhcmQgZmlsZSBvcGVyYXRpb25zIHN1Y2ggYXMgcmVhZGluZyBhbmQgd3JpdGluZ1xuIgogImFyZSBwZXJmb3JtZWQuIFdoZW4gb3BlbigpIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0IG1vZGUgKCd3JyxcbiIKQEAgLTI5MiwxNCArMjE5LDE0IEBACiB7CiAgICAgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAibW9kZSIsICJidWZmZXJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsCi0gICAgICAgICAgICAgICAgICAgICAgImNsb3NlZmQiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqZmlsZTsKKyAgICAgICAgICAgICAgICAgICAgICAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlsZSwgKm9wZW5lciA9IFB5X05vbmU7CiAgICAgY2hhciAqbW9kZSA9ICJyIjsKICAgICBpbnQgYnVmZmVyaW5nID0gLTEsIGNsb3NlZmQgPSAxOwogICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTCwgKmVycm9ycyA9IE5VTEwsICpuZXdsaW5lID0gTlVMTDsKICAgICB1bnNpZ25lZCBpOwogCi0gICAgaW50IHJlYWRpbmcgPSAwLCB3cml0aW5nID0gMCwgYXBwZW5kaW5nID0gMCwgdXBkYXRpbmcgPSAwOworICAgIGludCBjcmVhdGluZyA9IDAsIHJlYWRpbmcgPSAwLCB3cml0aW5nID0gMCwgYXBwZW5kaW5nID0gMCwgdXBkYXRpbmcgPSAwOwogICAgIGludCB0ZXh0ID0gMCwgYmluYXJ5ID0gMCwgdW5pdmVyc2FsID0gMDsKIAogICAgIGNoYXIgcmF3bW9kZVs1XSwgKm07CkBAIC0zMDcsMTAgKzIzNCwxNCBAQAogCiAgICAgUHlPYmplY3QgKnJhdywgKm1vZGVvYmogPSBOVUxMLCAqYnVmZmVyID0gTlVMTCwgKndyYXBwZXIgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2l6enppOm9wZW4iLCBrd2xpc3QsCisgICAgX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKKyAgICBfUHlfSURFTlRJRklFUihmaWxlbm8pOworICAgIF9QeV9JREVOVElGSUVSKG1vZGUpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2l6enppTzpvcGVuIiwga3dsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbG9zZWZkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbG9zZWZkLCAmb3BlbmVyKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTMyNiw2ICsyNTcsOSBAQAogICAgICAgICBjaGFyIGMgPSBtb2RlW2ldOwogCiAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIGNyZWF0aW5nID0gMTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgIHJlYWRpbmcgPSAxOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNjIsNiArMjk2LDcgQEAKICAgICB9CiAKICAgICBtID0gcmF3bW9kZTsKKyAgICBpZiAoY3JlYXRpbmcpICAqKG0rKykgPSAneCc7CiAgICAgaWYgKHJlYWRpbmcpICAgKihtKyspID0gJ3InOwogICAgIGlmICh3cml0aW5nKSAgICoobSsrKSA9ICd3JzsKICAgICBpZiAoYXBwZW5kaW5nKSAqKG0rKykgPSAnYSc7CkBAIC0zODQsOSArMzE5LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMSkgeworICAgIGlmIChjcmVhdGluZyArIHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgcmVhZC93cml0ZS9hcHBlbmQgbW9kZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiBjcmVhdGUvcmVhZC93cml0ZS9hcHBlbmQgbW9kZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTQxMCw3ICszNDUsNyBAQAogCiAgICAgLyogQ3JlYXRlIHRoZSBSYXcgZmlsZSBzdHJlYW0gKi8KICAgICByYXcgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJlB5RmlsZUlPX1R5cGUsCi0JCQkJIk9zaSIsIGZpbGUsIHJhd21vZGUsIGNsb3NlZmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3NpTyIsIGZpbGUsIHJhd21vZGUsIGNsb3NlZmQsIG9wZW5lcik7CiAgICAgaWYgKHJhdyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNDIwLDcgKzM1NSw3IEBACiAKICAgICAvKiBidWZmZXJpbmcgKi8KICAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJhdywgImlzYXR0eSIsIE5VTEwpOworICAgICAgICBQeU9iamVjdCAqcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgTlVMTCk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGlzYXR0eSA9IFB5TG9uZ19Bc0xvbmcocmVzKTsKQEAgLTQ0Miw3ICszNzcsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKICAgICAgICAgICAgIGxvbmcgZmlsZW5vOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmF3LCAiZmlsZW5vIiwgTlVMTCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2ZpbGVubywgTlVMTCk7CiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtNDgwLDcgKzQxNSw3IEBACiAKICAgICAgICAgaWYgKHVwZGF0aW5nKQogICAgICAgICAgICAgQnVmZmVyZWRfY2xhc3MgPSAoUHlPYmplY3QgKikmUHlCdWZmZXJlZFJhbmRvbV9UeXBlOwotICAgICAgICBlbHNlIGlmICh3cml0aW5nIHx8IGFwcGVuZGluZykKKyAgICAgICAgZWxzZSBpZiAoY3JlYXRpbmcgfHwgd3JpdGluZyB8fCBhcHBlbmRpbmcpCiAgICAgICAgICAgICBCdWZmZXJlZF9jbGFzcyA9IChQeU9iamVjdCAqKSZQeUJ1ZmZlcmVkV3JpdGVyX1R5cGU7CiAgICAgICAgIGVsc2UgaWYgKHJlYWRpbmcpCiAgICAgICAgICAgICBCdWZmZXJlZF9jbGFzcyA9IChQeU9iamVjdCAqKSZQeUJ1ZmZlcmVkUmVhZGVyX1R5cGU7CkBAIC01MTMsNyArNDQ4LDcgQEAKICAgICBpZiAod3JhcHBlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcod3JhcHBlciwgIm1vZGUiLCBtb2Rlb2JqKSA8IDApCisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQod3JhcHBlciwgJlB5SWRfbW9kZSwgbW9kZW9iaikgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIFB5X0RFQ1JFRihtb2Rlb2JqKTsKICAgICByZXR1cm4gd3JhcHBlcjsKQEAgLTU3Niw3ICs1MTEsNyBAQAogCiAKIC8qIEJhc2ljYWxseSB0aGUgIm4iIGZvcm1hdCBjb2RlIHdpdGggdGhlIGFiaWxpdHkgdG8gdHVybiBOb25lIGludG8gLTEuICovCi1pbnQgCitpbnQKIF9QeUlPX0NvbnZlcnRTc2l6ZV90KFB5T2JqZWN0ICpvYmosIHZvaWQgKnJlc3VsdCkgewogICAgIFB5X3NzaXplX3QgbGltaXQ7CiAgICAgaWYgKG9iaiA9PSBQeV9Ob25lKSB7CkBAIC02MDMsNyArNTM4LDYgQEAKICAgICBfUHlJT19TdGF0ZSAqc3RhdGUgPSBJT19NT0RfU1RBVEUobW9kKTsKICAgICBpZiAoIXN0YXRlLT5pbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUHlfVklTSVQoc3RhdGUtPm9zX21vZHVsZSk7CiAgICAgaWYgKHN0YXRlLT5sb2NhbGVfbW9kdWxlICE9IE5VTEwpIHsKICAgICAgICAgUHlfVklTSVQoc3RhdGUtPmxvY2FsZV9tb2R1bGUpOwogICAgIH0KQEAgLTYxNyw3ICs1NTEsNiBAQAogICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IElPX01PRF9TVEFURShtb2QpOwogICAgIGlmICghc3RhdGUtPmluaXRpYWxpemVkKQogICAgICAgICByZXR1cm4gMDsKLSAgICBQeV9DTEVBUihzdGF0ZS0+b3NfbW9kdWxlKTsKICAgICBpZiAoc3RhdGUtPmxvY2FsZV9tb2R1bGUgIT0gTlVMTCkKICAgICAgICAgUHlfQ0xFQVIoc3RhdGUtPmxvY2FsZV9tb2R1bGUpOwogICAgIFB5X0NMRUFSKHN0YXRlLT51bnN1cHBvcnRlZF9vcGVyYXRpb24pOwpAQCAtNjYxLDExICs1OTQsNiBAQAogICAgIHN0YXRlID0gSU9fTU9EX1NUQVRFKG0pOwogICAgIHN0YXRlLT5pbml0aWFsaXplZCA9IDA7CiAKLSAgICAvKiBwdXQgb3MgaW4gdGhlIG1vZHVsZSBzdGF0ZSAqLwotICAgIHN0YXRlLT5vc19tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIm9zIik7Ci0gICAgaWYgKHN0YXRlLT5vc19tb2R1bGUgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsOwotCiAjZGVmaW5lIEFERF9UWVBFKHR5cGUsIG5hbWUpIFwKICAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkgXAogICAgICAgICBnb3RvIGZhaWw7IFwKQEAgLTY5MCw5ICs2MTgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT51bnN1cHBvcnRlZF9vcGVyYXRpb24pIDwgMCkKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgLyogQmxvY2tpbmdJT0Vycm9yICovCi0gICAgX1B5RXhjX0Jsb2NraW5nSU9FcnJvci50cF9iYXNlID0gKFB5VHlwZU9iamVjdCAqKSBQeUV4Y19JT0Vycm9yOwotICAgIEFERF9UWVBFKCZfUHlFeGNfQmxvY2tpbmdJT0Vycm9yLCAiQmxvY2tpbmdJT0Vycm9yIik7CisgICAgLyogQmxvY2tpbmdJT0Vycm9yLCBmb3IgY29tcGF0aWJpbGl0eSAqLworICAgIFB5X0lOQ1JFRihQeUV4Y19CbG9ja2luZ0lPRXJyb3IpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJsb2NraW5nSU9FcnJvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikgUHlFeGNfQmxvY2tpbmdJT0Vycm9yKSA8IDApCisgICAgICAgIGdvdG8gZmFpbDsKIAogICAgIC8qIENvbmNyZXRlIGJhc2UgdHlwZXMgb2YgdGhlIElPIEFCQ3MuCiAgICAgICAgKHRoZSBBQkNzIHRoZW1zZWx2ZXMgYXJlIGRlY2xhcmVkIHRocm91Z2ggaW5oZXJpdGFuY2UgaW4gaW8ucHkpCkBAIC03NTgsNiArNjg4LDcgQEAKICAgICBBRERfSU5URVJORUQocmVhZCkKICAgICBBRERfSU5URVJORUQocmVhZDEpCiAgICAgQUREX0lOVEVSTkVEKHJlYWRhYmxlKQorICAgIEFERF9JTlRFUk5FRChyZWFkYWxsKQogICAgIEFERF9JTlRFUk5FRChyZWFkaW50bykKICAgICBBRERfSU5URVJORUQocmVhZGxpbmUpCiAgICAgQUREX0lOVEVSTkVEKHJlc2V0KQpAQCAtNzg4LDcgKzcxOSw2IEBACiAgICAgcmV0dXJuIG07CiAKICAgZmFpbDoKLSAgICBQeV9YREVDUkVGKHN0YXRlLT5vc19tb2R1bGUpOwogICAgIFB5X1hERUNSRUYoc3RhdGUtPnVuc3VwcG9ydGVkX29wZXJhdGlvbik7CiAgICAgUHlfREVDUkVGKG0pOwogICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmggYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAppbmRleCBhYThiZmQ2Li4wZmU5MGEzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAorKysgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaApAQCAtNTAsMTIgKzUwLDEyIEBACiAgICBgKmNvbnN1bWVkYC4KICAgIElmIG5vdCBmb3VuZCwgcmV0dXJucyAtMSBhbmQgc2V0cyBgKmNvbnN1bWVkYCB0byB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMKICAgIHdoaWNoIGNhbiBiZSBzYWZlbHkgcHV0IGFzaWRlIHVudGlsIGFub3RoZXIgc2VhcmNoLgotICAgCi0gICBOT1RFOiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgYGVuZGAgbXVzdCBwb2ludCB0byBhIE5VTCBjaGFyYWN0ZXIgKCdcMCcpLiAKKworICAgTk9URTogZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGBlbmRgIG11c3QgcG9pbnQgdG8gYSBOVUwgY2hhcmFjdGVyICgnXDAnKS4KICAgIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHdpbGwgc2NhbiBmdXJ0aGVyIGFuZCByZXR1cm4gZ2FyYmFnZS4gKi8KIGV4dGVybiBQeV9zc2l6ZV90IF9QeUlPX2ZpbmRfbGluZV9lbmRpbmcoCiAgICAgaW50IHRyYW5zbGF0ZWQsIGludCB1bml2ZXJzYWwsIFB5T2JqZWN0ICpyZWFkbmwsCi0gICAgUHlfVU5JQ09ERSAqc3RhcnQsIFB5X1VOSUNPREUgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpOworICAgIGludCBraW5kLCBjaGFyICpzdGFydCwgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCk7CiAKIC8qIFJldHVybiAxIGlmIGFuIEVudmlyb25tZW50RXJyb3Igd2l0aCBlcnJubyA9PSBFSU5UUiBpcyBzZXQgKGFuZCB0aGVuCiAgICBjbGVhcnMgdGhlIGVycm9yIGluZGljYXRvciksIDAgb3RoZXJ3aXNlLgpAQCAtNjUsMTUgKzY1LDYgQEAKIAogI2RlZmluZSBERUZBVUxUX0JVRkZFUl9TSVpFICg4ICogMTAyNCkgIC8qIGJ5dGVzICovCiAKLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeUV4Y2VwdGlvbl9IRUFECi0gICAgUHlPYmplY3QgKm15ZXJybm87Ci0gICAgUHlPYmplY3QgKnN0cmVycm9yOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsgLyogTm90IHVzZWQsIGJ1dCBwYXJ0IG9mIHRoZSBJT0Vycm9yIG9iamVjdCAqLwotICAgIFB5X3NzaXplX3Qgd3JpdHRlbjsKLX0gUHlCbG9ja2luZ0lPRXJyb3JPYmplY3Q7Ci1leHRlcm4gUHlPYmplY3QgKlB5RXhjX0Jsb2NraW5nSU9FcnJvcjsKLQogLyoKICAqIE9mZnNldCB0eXBlIGZvciBwb3NpdGlvbmluZy4KICAqLwpAQCAtMTM4LDcgKzEyOSw2IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBpbnQgaW5pdGlhbGl6ZWQ7Ci0gICAgUHlPYmplY3QgKm9zX21vZHVsZTsKICAgICBQeU9iamVjdCAqbG9jYWxlX21vZHVsZTsKIAogICAgIFB5T2JqZWN0ICp1bnN1cHBvcnRlZF9vcGVyYXRpb247CkBAIC0xNjAsNiArMTUwLDcgQEAKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWQ7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkMTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRhYmxlOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGFsbDsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRpbnRvOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGxpbmU7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZXNldDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwppbmRleCBiYjc3YWNjLi42N2I3Y2M0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKKysrIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCkBAIC0xLDkgKzEsOSBAQAogLyoKICAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiBCdWZmZXJlZCBJL08gYXMgZGVmaW5lZCBieSBQRVAgMzExNiAtICJOZXcgSS9PIgotICAgIAorCiAgICAgQ2xhc3NlcyBkZWZpbmVkIGhlcmU6IEJ1ZmZlcmVkSU9CYXNlLCBCdWZmZXJlZFJlYWRlciwgQnVmZmVyZWRXcml0ZXIsCiAgICAgQnVmZmVyZWRSYW5kb20uCi0gICAgCisKICAgICBXcml0dGVuIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjIGFuZCBBbnRvaW5lIFBpdHJvdQogKi8KIApAQCAtMTMsNiArMTMsMjAgQEAKICNpbmNsdWRlICJweXRocmVhZC5oIgogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCitfUHlfSURFTlRJRklFUihjbG9zZSk7CitfUHlfSURFTlRJRklFUihfZGVhbGxvY193YXJuKTsKK19QeV9JREVOVElGSUVSKGZsdXNoKTsKK19QeV9JREVOVElGSUVSKGlzYXR0eSk7CitfUHlfSURFTlRJRklFUihtb2RlKTsKK19QeV9JREVOVElGSUVSKG5hbWUpOworX1B5X0lERU5USUZJRVIocGVlayk7CitfUHlfSURFTlRJRklFUihyZWFkKTsKK19QeV9JREVOVElGSUVSKHJlYWQxKTsKK19QeV9JREVOVElGSUVSKHJlYWRhYmxlKTsKK19QeV9JREVOVElGSUVSKHJlYWRpbnRvKTsKK19QeV9JREVOVElGSUVSKHdyaXRhYmxlKTsKK19QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogLyoKICAqIEJ1ZmZlcmVkSU9CYXNlIGNsYXNzLCBpbmhlcml0cyBmcm9tIElPQmFzZS4KICAqLwpAQCAtMzgsMTIgKzUyLDEzIEBACiAgICAgUHlfYnVmZmVyIGJ1ZjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqZGF0YTsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyo6cmVhZGludG8iLCAmYnVmKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBkYXRhID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAicmVhZCIsICJuIiwgYnVmLmxlbik7CisgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcmVhZCwgIm4iLCBidWYubGVuKTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0xOTgsNyArMjEzLDcgQEAKICAgICBpbnQgcmVhZGFibGU7CiAgICAgaW50IHdyaXRhYmxlOwogICAgIGludCBkZWFsbG9jYXRpbmc7Ci0gICAgCisKICAgICAvKiBUcnVlIGlmIHRoaXMgaXMgYSB2YW5pbGxhIEJ1ZmZlcmVkIG9iamVjdCAocmF0aGVyIHRoYW4gYSB1c2VyIGRlcml2ZWQKICAgICAgICBjbGFzcykgKmFuZCogdGhlIHJhdyBzdHJlYW0gaXMgYSB2YW5pbGxhIEZpbGVJTyBvYmplY3QuICovCiAgICAgaW50IGZhc3RfY2xvc2VkX2NoZWNrczsKQEAgLTIzNyw3ICsyNTIsNyBAQAogCiAvKgogICAgIEltcGxlbWVudGF0aW9uIG5vdGVzOgotICAgIAorCiAgICAgKiBCdWZmZXJlZFJlYWRlciwgQnVmZmVyZWRXcml0ZXIgYW5kIEJ1ZmZlcmVkUmFuZG9tIHRyeSB0byBzaGFyZSBtb3N0CiAgICAgICBtZXRob2RzICh0aGlzIGlzIGhlbHBlZCBieSB0aGUgbWVtYmVycyBgcmVhZGFibGVgIGFuZCBgd3JpdGFibGVgLCB3aGljaAogICAgICAgYXJlIGluaXRpYWxpemVkIGluIHRoZSByZXNwZWN0aXZlIGNvbnN0cnVjdG9ycykKQEAgLTI1NSw3ICsyNzAsNyBAQAogICAgIE5PVEU6IHdlIHNob3VsZCB0cnkgdG8gbWFpbnRhaW4gYmxvY2sgYWxpZ25tZW50IG9mIHJlYWRzIGFuZCB3cml0ZXMgdG8gdGhlCiAgICAgcmF3IHN0cmVhbSAoYWNjb3JkaW5nIHRvIHRoZSBidWZmZXIgc2l6ZSksIGJ1dCBmb3Igbm93IGl0IGlzIG9ubHkgZG9uZQogICAgIGluIHJlYWQoKSBhbmQgZnJpZW5kcy4KLSAgICAKKwogKi8KIAogLyogVGhlc2UgbWFjcm9zIHByb3RlY3QgdGhlIGJ1ZmZlcmVkIG9iamVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgb3BlcmF0aW9ucy4gKi8KQEAgLTQyMSw3ICs0MzYsNyBAQAogewogICAgIGlmIChzZWxmLT5vayAmJiBzZWxmLT5yYXcpIHsKICAgICAgICAgUHlPYmplY3QgKnI7Ci0gICAgICAgIHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPnJhdywgIl9kZWFsbG9jX3dhcm4iLCAiTyIsIHNvdXJjZSk7CisgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPnJhdywgJlB5SWRfX2RlYWxsb2Nfd2FybiwgIk8iLCBzb3VyY2UpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtNTU0LDE0ICs1NjksMTQgQEAKIGJ1ZmZlcmVkX25hbWVfZ2V0KGJ1ZmZlcmVkICpzZWxmLCB2b2lkICpjb250ZXh0KQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgcmV0dXJuIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZi0+cmF3LCAibmFtZSIpOworICAgIHJldHVybiBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYtPnJhdywgJlB5SWRfbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZF9tb2RlX2dldChidWZmZXJlZCAqc2VsZiwgdm9pZCAqY29udGV4dCkKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYtPnJhdywgIm1vZGUiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLT5yYXcsICZQeUlkX21vZGUpOwogfQogCiAvKiBMb3dlci1sZXZlbCBBUElzICovCkBAIC02MDAsMTQgKzYxNSwxNSBAQAogc3RhdGljIHZvaWQKIF9idWZmZXJlZHdyaXRlcl9yZXNldF9idWYoYnVmZmVyZWQgKnNlbGYpOwogc3RhdGljIFB5T2JqZWN0ICoKLV9idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90KTsKK19idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKGJ1ZmZlcmVkICpzZWxmKTsKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnVmZmVyZWRyZWFkZXJfcmVhZF9hbGwoYnVmZmVyZWQgKnNlbGYpOwogc3RhdGljIFB5T2JqZWN0ICoKIF9idWZmZXJlZHJlYWRlcl9yZWFkX2Zhc3QoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QpOwogc3RhdGljIFB5T2JqZWN0ICoKIF9idWZmZXJlZHJlYWRlcl9yZWFkX2dlbmVyaWMoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QpOwotCitzdGF0aWMgUHlfc3NpemVfdAorX2J1ZmZlcmVkcmVhZGVyX3Jhd19yZWFkKGJ1ZmZlcmVkICpzZWxmLCBjaGFyICpzdGFydCwgUHlfc3NpemVfdCBsZW4pOwogCiAvKgogICogSGVscGVycwpAQCAtNjMxLDE0ICs2NDcsMTQgQEAKIF9idWZmZXJlZF9jaGVja19ibG9ja2luZ19lcnJvcih2b2lkKQogewogICAgIFB5T2JqZWN0ICp0LCAqdiwgKnRiOwotICAgIFB5QmxvY2tpbmdJT0Vycm9yT2JqZWN0ICplcnI7CisgICAgUHlPU0Vycm9yT2JqZWN0ICplcnI7CiAKICAgICBQeUVycl9GZXRjaCgmdCwgJnYsICZ0Yik7CiAgICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKHYsIFB5RXhjX0Jsb2NraW5nSU9FcnJvcikpIHsKICAgICAgICAgUHlFcnJfUmVzdG9yZSh0LCB2LCB0Yik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcnIgPSAoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QgKikgdjsKKyAgICBlcnIgPSAoUHlPU0Vycm9yT2JqZWN0ICopIHY7CiAgICAgLyogVE9ETzogc2FuaXR5IGNoZWNrIChlcnItPndyaXR0ZW4gPj0gMCkgKi8KICAgICBQeUVycl9SZXN0b3JlKHQsIHYsIHRiKTsKICAgICByZXR1cm4gJmVyci0+d3JpdHRlbjsKQEAgLTY1OCw3ICs2NzQsNyBAQAogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiUmF3IHN0cmVhbSByZXR1cm5lZCBpbnZhbGlkIHBvc2l0aW9uICUiIFBZX1BSSWRPRkYsCi0JCQkgKFBZX09GRl9UX0NPTVBBVCluKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfT0ZGX1RfQ09NUEFUKW4pOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNlbGYtPmFic19wb3MgPSBuOwpAQCAtNjkxLDcgKzcwNyw3IEBACiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJSYXcgc3RyZWFtIHJldHVybmVkIGludmFsaWQgcG9zaXRpb24gJSIgUFlfUFJJZE9GRiwKLQkJCSAoUFlfT0ZGX1RfQ09NUEFUKW4pOworICAgICAgICAgICAgICAgICAgICAgICAgIChQWV9PRkZfVF9DT01QQVQpbik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc2VsZi0+YWJzX3BvcyA9IG47CkBAIC04MzIsNyArODQ4LDcgQEAKICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICBQeV9DTEVBUihyZXMpOwogICAgIH0KLSAgICByZXMgPSBfYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChzZWxmLCBuKTsKKyAgICByZXMgPSBfYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChzZWxmKTsKIAogZW5kOgogICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpCkBAIC04OTYsNjEgKzkxMiwxMTIgQEAKICAgICBpZiAobiA9PSAwKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKIAotICAgIGlmICghRU5URVJfQlVGRkVSRUQoc2VsZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIAogICAgIC8qIFJldHVybiB1cCB0byBuIGJ5dGVzLiAgSWYgYXQgbGVhc3Qgb25lIGJ5dGUgaXMgYnVmZmVyZWQsIHdlCiAgICAgICAgb25seSByZXR1cm4gYnVmZmVyZWQgYnl0ZXMuICBPdGhlcndpc2UsIHdlIGRvIG9uZSByYXcgcmVhZC4gKi8KIAotICAgIC8qIFhYWDogdGhpcyBtaW1pY2tzIHRoZSBpby5weSBpbXBsZW1lbnRhdGlvbiBidXQgaXMgcHJvYmFibHkgd3JvbmcuCi0gICAgICAgSWYgd2UgbmVlZCB0byByZWFkIGZyb20gdGhlIHJhdyBzdHJlYW0sIHRoZW4gd2UgY291bGQgYWN0dWFsbHkgcmVhZAotICAgICAgIGFsbCBgbmAgYnl0ZXMgYXNrZWQgYnkgdGhlIGNhbGxlciAoYW5kIHBvc3NpYmx5IG1vcmUsIHNvIGFzIHRvIGZpbGwKLSAgICAgICBvdXIgYnVmZmVyIGZvciB0aGUgbmV4dCByZWFkcykuICovCi0KICAgICBoYXZlID0gUHlfU0FGRV9ET1dOQ0FTVChSRUFEQUhFQUQoc2VsZiksIFB5X29mZl90LCBQeV9zc2l6ZV90KTsKICAgICBpZiAoaGF2ZSA+IDApIHsKLSAgICAgICAgaWYgKG4gPiBoYXZlKQotICAgICAgICAgICAgbiA9IGhhdmU7Ci0gICAgICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKLSAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgIHNlbGYtPnBvcyArPSBuOwotICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgbiA9IFB5X01JTihoYXZlLCBuKTsKKyAgICAgICAgcmVzID0gX2J1ZmZlcmVkcmVhZGVyX3JlYWRfZmFzdChzZWxmLCBuKTsKKyAgICAgICAgYXNzZXJ0KHJlcyAhPSBQeV9Ob25lKTsKKyAgICAgICAgcmV0dXJuIHJlczsKICAgICB9Ci0KLSAgICBpZiAoc2VsZi0+d3JpdGFibGUpIHsKLSAgICAgICAgcmVzID0gYnVmZmVyZWRfZmx1c2hfYW5kX3Jld2luZF91bmxvY2tlZChzZWxmKTsKLSAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlbmQ7CisgICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghRU5URVJfQlVGRkVSRUQoc2VsZikpIHsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIC8qIEZpbGwgdGhlIGJ1ZmZlciBmcm9tIHRoZSByYXcgc3RyZWFtLCBhbmQgY29weSBpdCB0byB0aGUgcmVzdWx0LiAqLwogICAgIF9idWZmZXJlZHJlYWRlcl9yZXNldF9idWYoc2VsZik7Ci0gICAgciA9IF9idWZmZXJlZHJlYWRlcl9maWxsX2J1ZmZlcihzZWxmKTsKLSAgICBpZiAociA9PSAtMSkKLSAgICAgICAgZ290byBlbmQ7CisgICAgciA9IF9idWZmZXJlZHJlYWRlcl9yYXdfcmVhZChzZWxmLCBQeUJ5dGVzX0FTX1NUUklORyhyZXMpLCBuKTsKKyAgICBMRUFWRV9CVUZGRVJFRChzZWxmKQorICAgIGlmIChyID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHIgPT0gLTIpCiAgICAgICAgIHIgPSAwOwogICAgIGlmIChuID4gcikKLSAgICAgICAgbiA9IHI7Ci0gICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5idWZmZXIsIG4pOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlbmQ7Ci0gICAgc2VsZi0+cG9zID0gbjsKLQotZW5kOgotICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpCisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByKTsKICAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRfcmVhZGludG8oYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIFB5X2J1ZmZlciBidWY7CisgICAgUHlfc3NpemVfdCBuLCB3cml0dGVuID0gMCwgcmVtYWluaW5nOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikKLSAgICAKLSAgICAvKiBUT0RPOiB1c2UgcmF3LnJlYWRpbnRvKCkgKG9yIGEgZGlyZWN0IGNvcHkgZnJvbSBvdXIgYnVmZmVyKSBpbnN0ZWFkISAqLwotICAgIHJldHVybiBidWZmZXJlZGlvYmFzZV9yZWFkaW50bygoUHlPYmplY3QgKilzZWxmLCBhcmdzKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyo6cmVhZGludG8iLCAmYnVmKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuID0gUHlfU0FGRV9ET1dOQ0FTVChSRUFEQUhFQUQoc2VsZiksIFB5X29mZl90LCBQeV9zc2l6ZV90KTsKKyAgICBpZiAobiA+IDApIHsKKyAgICAgICAgaWYgKG4gPj0gYnVmLmxlbikgeworICAgICAgICAgICAgbWVtY3B5KGJ1Zi5idWYsIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgYnVmLmxlbik7CisgICAgICAgICAgICBzZWxmLT5wb3MgKz0gYnVmLmxlbjsKKyAgICAgICAgICAgIHJlcyA9IFB5TG9uZ19Gcm9tU3NpemVfdChidWYubGVuKTsKKyAgICAgICAgICAgIGdvdG8gZW5kX3VubG9ja2VkOworICAgICAgICB9CisgICAgICAgIG1lbWNweShidWYuYnVmLCBzZWxmLT5idWZmZXIgKyBzZWxmLT5wb3MsIG4pOworICAgICAgICBzZWxmLT5wb3MgKz0gbjsKKyAgICAgICAgd3JpdHRlbiA9IG47CisgICAgfQorCisgICAgaWYgKCFFTlRFUl9CVUZGRVJFRChzZWxmKSkKKyAgICAgICAgZ290byBlbmRfdW5sb2NrZWQ7CisKKyAgICBpZiAoc2VsZi0+d3JpdGFibGUpIHsKKyAgICAgICAgcmVzID0gYnVmZmVyZWRfZmx1c2hfYW5kX3Jld2luZF91bmxvY2tlZChzZWxmKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgfQorCisgICAgX2J1ZmZlcmVkcmVhZGVyX3Jlc2V0X2J1ZihzZWxmKTsKKyAgICBzZWxmLT5wb3MgPSAwOworCisgICAgZm9yIChyZW1haW5pbmcgPSBidWYubGVuIC0gd3JpdHRlbjsKKyAgICAgICAgIHJlbWFpbmluZyA+IDA7CisgICAgICAgICB3cml0dGVuICs9IG4sIHJlbWFpbmluZyAtPSBuKSB7CisgICAgICAgIC8qIElmIHJlbWFpbmluZyBieXRlcyBpcyBsYXJnZXIgdGhhbiBpbnRlcm5hbCBidWZmZXIgc2l6ZSwgY29weQorICAgICAgICAgKiBkaXJlY3RseSBpbnRvIGNhbGxlcidzIGJ1ZmZlci4gKi8KKyAgICAgICAgaWYgKHJlbWFpbmluZyA+IHNlbGYtPmJ1ZmZlcl9zaXplKSB7CisgICAgICAgICAgICBuID0gX2J1ZmZlcmVkcmVhZGVyX3Jhd19yZWFkKHNlbGYsIChjaGFyICopIGJ1Zi5idWYgKyB3cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbiA9IF9idWZmZXJlZHJlYWRlcl9maWxsX2J1ZmZlcihzZWxmKTsKKyAgICAgICAgICAgIGlmIChuID4gMCkgeworICAgICAgICAgICAgICAgIGlmIChuID4gcmVtYWluaW5nKQorICAgICAgICAgICAgICAgICAgICBuID0gcmVtYWluaW5nOworICAgICAgICAgICAgICAgIG1lbWNweSgoY2hhciAqKSBidWYuYnVmICsgd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKKyAgICAgICAgICAgICAgICBzZWxmLT5wb3MgKz0gbjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogc2hvcnQgY2lyY3VpdCAqLworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChuID09IDAgfHwgKG4gPT0gLTIgJiYgd3JpdHRlbiA+IDApKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChuIDwgMCkgeworICAgICAgICAgICAgaWYgKG4gPT0gLTIpIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgcmVzID0gUHlfTm9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICB9CisgICAgfQorICAgIHJlcyA9IFB5TG9uZ19Gcm9tU3NpemVfdCh3cml0dGVuKTsKKworZW5kOgorICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpOworZW5kX3VubG9ja2VkOgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgcmV0dXJuIHJlczsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExMDEsOSArMTE2OCwyMCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnNlZWsiLCAmdGFyZ2V0b2JqLCAmd2hlbmNlKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHdoZW5jZSA8IDAgfHwgd2hlbmNlID4gMikgeworCisgICAgLyogRG8gc29tZSBlcnJvciBjaGVja2luZyBpbnN0ZWFkIG9mIHRydXN0aW5nIE9TICdzZWVrKCknCisgICAgKiogZXJyb3IgZGV0ZWN0aW9uLCBqdXN0IGluIGNhc2UuCisgICAgKi8KKyAgICBpZiAoKHdoZW5jZSA8IDAgfHwgd2hlbmNlID4yKQorI2lmZGVmIFNFRUtfSE9MRQorICAgICAgICAmJiAod2hlbmNlICE9IFNFRUtfSE9MRSkKKyNlbmRpZgorI2lmZGVmIFNFRUtfREFUQQorICAgICAgICAmJiAod2hlbmNlICE9IFNFRUtfREFUQSkKKyNlbmRpZgorICAgICAgICApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAid2hlbmNlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyLCBub3QgJWQiLCB3aGVuY2UpOworICAgICAgICAgICAgICAgICAgICAgIndoZW5jZSB2YWx1ZSAlZCB1bnN1cHBvcnRlZCIsIHdoZW5jZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTExNiw3ICsxMTk0LDExIEBACiAgICAgaWYgKHRhcmdldCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICh3aGVuY2UgIT0gMiAmJiBzZWxmLT5yZWFkYWJsZSkgeworICAgIC8qIFNFRUtfU0VUIGFuZCBTRUVLX0NVUiBhcmUgc3BlY2lhbCBiZWNhdXNlIHdlIGNvdWxkIHNlZWsgaW5zaWRlIHRoZQorICAgICAgIGJ1ZmZlci4gT3RoZXIgd2hlbmNlIHZhbHVlcyBtdXN0IGJlIG1hbmFnZWQgd2l0aG91dCB0aGlzIG9wdGltaXphdGlvbi4KKyAgICAgICBTb21lIE9wZXJhdGluZyBTeXN0ZW1zIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwgdmFsdWVzLCBsaWtlCisgICAgICAgU0VFS19IT0xFL1NFRUtfREFUQS4gKi8KKyAgICBpZiAoKCh3aGVuY2UgPT0gMCkgfHwgKHdoZW5jZSA9PSAxKSkgJiYgc2VsZi0+cmVhZGFibGUpIHsKICAgICAgICAgUHlfb2ZmX3QgY3VycmVudCwgYXZhaWw7CiAgICAgICAgIC8qIENoZWNrIGlmIHNlZWtpbmcgbGVhdmVzIHVzIGluc2lkZSB0aGUgY3VycmVudCBidWZmZXIsCiAgICAgICAgICAgIHNvIGFzIHRvIHJldHVybiBxdWlja2x5IGlmIHBvc3NpYmxlLiBBbHNvLCB3ZSBuZWVkbid0IHRha2UgdGhlCkBAIC0xMjQyLDcgKzEzMjQsNyBAQAogewogICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqcmVzOwogCi0gICAgbmFtZW9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopIHNlbGYsICJuYW1lIik7CisgICAgbmFtZW9iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopIHNlbGYsICZQeUlkX25hbWUpOwogICAgIGlmIChuYW1lb2JqID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTEzNjgsMzMgKzE0NTAsNTggQEAKIF9idWZmZXJlZHJlYWRlcl9yZWFkX2FsbChidWZmZXJlZCAqc2VsZikKIHsKICAgICBQeV9zc2l6ZV90IGN1cnJlbnRfc2l6ZTsKLSAgICBQeU9iamVjdCAqcmVzLCAqZGF0YSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmNodW5rcyA9IFB5TGlzdF9OZXcoMCk7Ci0KLSAgICBpZiAoY2h1bmtzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMsICpkYXRhID0gTlVMTCwgKmNodW5rLCAqY2h1bmtzOwogCiAgICAgLyogRmlyc3QgY29weSB3aGF0IHdlIGhhdmUgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiAqLwogICAgIGN1cnJlbnRfc2l6ZSA9IFB5X1NBRkVfRE9XTkNBU1QoUkVBREFIRUFEKHNlbGYpLCBQeV9vZmZfdCwgUHlfc3NpemVfdCk7CiAgICAgaWYgKGN1cnJlbnRfc2l6ZSkgewogICAgICAgICBkYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgKICAgICAgICAgICAgIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgY3VycmVudF9zaXplKTsKLSAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rcyk7CisgICAgICAgIGlmIChkYXRhID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBzZWxmLT5wb3MgKz0gY3VycmVudF9zaXplOwogICAgIH0KICAgICAvKiBXZSdyZSBnb2luZyBwYXN0IHRoZSBidWZmZXIncyBib3VuZHMsIGZsdXNoIGl0ICovCiAgICAgaWYgKHNlbGYtPndyaXRhYmxlKSB7CiAgICAgICAgIHJlcyA9IGJ1ZmZlcmVkX2ZsdXNoX2FuZF9yZXdpbmRfdW5sb2NrZWQoc2VsZik7Ci0gICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rcyk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIFB5X0NMRUFSKHJlcyk7CiAgICAgfQogICAgIF9idWZmZXJlZHJlYWRlcl9yZXNldF9idWYoc2VsZik7CisKKyAgICBpZiAoUHlPYmplY3RfSGFzQXR0cihzZWxmLT5yYXcsIF9QeUlPX3N0cl9yZWFkYWxsKSkgeworICAgICAgICBjaHVuayA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPnJhdywgX1B5SU9fc3RyX3JlYWRhbGwsIE5VTEwpOworICAgICAgICBpZiAoY2h1bmsgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoY2h1bmsgIT0gUHlfTm9uZSAmJiAhUHlCeXRlc19DaGVjayhjaHVuaykpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoZGF0YSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2h1bmspOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlYWRhbGwoKSBzaG91bGQgcmV0dXJuIGJ5dGVzIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2h1bmsgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRfc2l6ZSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBjaHVuazsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjaHVuayk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY3VycmVudF9zaXplKSB7CisgICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdCgmZGF0YSwgY2h1bmspOworICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rKTsKKyAgICAgICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gY2h1bms7CisgICAgfQorCisgICAgY2h1bmtzID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoY2h1bmtzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGNodW5rcywgZGF0YSkgPCAwKSB7CkBAIC0xNTU2LDcgKzE2NjMsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX2J1ZmZlcmVkcmVhZGVyX3BlZWtfdW5sb2NrZWQoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QgbikKK19idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKGJ1ZmZlcmVkICpzZWxmKQogewogICAgIFB5X3NzaXplX3QgaGF2ZSwgcjsKIApAQCAtMTU5OCw2ICsxNzA1LDcgQEAKICAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InBlZWsiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcGVlaywgTUVUSF9WQVJBUkdTfSwKICAgICB7InJlYWQxIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWQxLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZGludG8sIE1FVEhfVkFSQVJHU30sCiAgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkbGluZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2VlaywgTUVUSF9WQVJBUkdTfSwKICAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfdGVsbCwgTUVUSF9OT0FSR1N9LApAQCAtMTY2MywxNSArMTc3MSw2IEBACiAMCiAKIAotc3RhdGljIGludAotY29tcGxhaW5fYWJvdXRfbWF4X2J1ZmZlcl9zaXplKHZvaWQpCi17Ci0gICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAibWF4X2J1ZmZlcl9zaXplIGlzIGRlcHJlY2F0ZWQiLCAxKSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCiAvKgogICogY2xhc3MgQnVmZmVyZWRXcml0ZXIKICAqLwpAQCAtMTY4MCw3ICsxNzc5LDcgQEAKICAgICAiXG4iCiAgICAgIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgQnVmZmVyZWRXcml0ZXIgZm9yIHRoZSBnaXZlbiB3cml0ZWFibGUgcmF3XG4iCiAgICAgInN0cmVhbS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG9cbiIKLSAgICAiREVGQVVMVF9CVUZGRVJfU0laRS4gbWF4X2J1ZmZlcl9zaXplIGlzbid0IHVzZWQgYW55bW9yZS5cbiIKKyAgICAiREVGQVVMVF9CVUZGRVJfU0laRS5cbiIKICAgICApOwogCiBzdGF0aWMgdm9pZApAQCAtMTY5MywyMyArMTc5MiwxOCBAQAogc3RhdGljIGludAogYnVmZmVyZWR3cml0ZXJfaW5pdChidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIC8qIFRPRE86IHByb3Blcmx5IGRlcHJlY2F0ZSBtYXhfYnVmZmVyX3NpemUgKi8KLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgIm1heF9idWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIGNoYXIgKmt3bGlzdFtdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKLSAgICBQeV9zc2l6ZV90IG1heF9idWZmZXJfc2l6ZSA9IC0yMzQ7CiAgICAgUHlPYmplY3QgKnJhdzsKIAogICAgIHNlbGYtPm9rID0gMDsKICAgICBzZWxmLT5kZXRhY2hlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xubjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUsICZtYXhfYnVmZmVyX3NpemUpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobWF4X2J1ZmZlcl9zaXplICE9IC0yMzQgJiYgIWNvbXBsYWluX2Fib3V0X21heF9idWZmZXJfc2l6ZSgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3dyaXRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0yMDkxLDE2ICsyMTg1LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlYWRlciwgKndyaXRlcjsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKLSAgICBQeV9zc2l6ZV90IG1heF9idWZmZXJfc2l6ZSA9IC0yMzQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG5uOkJ1ZmZlcmVkUldQYWlyIiwgJnJlYWRlciwgJndyaXRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZlcl9zaXplLCAmbWF4X2J1ZmZlcl9zaXplKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpCdWZmZXJlZFJXUGFpciIsICZyZWFkZXIsICZ3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZidWZmZXJfc2l6ZSkpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChtYXhfYnVmZmVyX3NpemUgIT0gLTIzNCAmJiAhY29tcGxhaW5fYWJvdXRfbWF4X2J1ZmZlcl9zaXplKCkpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUocmVhZGVyLCBQeV9UcnVlKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKF9QeUlPQmFzZV9jaGVja193cml0YWJsZSh3cml0ZXIsIFB5X1RydWUpID09IE5VTEwpCkBAIC0yMTQ4LDEzICsyMjM4LDEzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZm9yd2FyZF9jYWxsKGJ1ZmZlcmVkICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqYXJncykKK19mb3J3YXJkX2NhbGwoYnVmZmVyZWQgKnNlbGYsIF9QeV9JZGVudGlmaWVyICpuYW1lLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgbmFtZSk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsIG5hbWUpOwogICAgIFB5T2JqZWN0ICpyZXQ7CiAKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZS0+c3RyaW5nKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0yMTY2LDY2ICsyMjU2LDY2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZChyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgInJlYWQiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWQsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcGVlayhyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgInBlZWsiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3BlZWssIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZDEocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJyZWFkMSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfcmVhZDEsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZGludG8ocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJyZWFkaW50byIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfcmVhZGludG8sIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfd3JpdGUocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJ3cml0ZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfd3JpdGUsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfZmx1c2gocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJmbHVzaCIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfZmx1c2gsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZGFibGUocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJyZWFkYWJsZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfcmVhZGFibGUsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfd3JpdGFibGUocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJ3cml0YWJsZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfd3JpdGFibGUsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfY2xvc2UocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqcmV0ID0gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJjbG9zZSIsIGFyZ3MpOworICAgIFB5T2JqZWN0ICpyZXQgPSBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfY2xvc2UsIGFyZ3MpOwogICAgIGlmIChyZXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHJldCk7CiAKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJjbG9zZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfY2xvc2UsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfaXNhdHR5KHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJldCA9IF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAiaXNhdHR5IiwgYXJncyk7CisgICAgUHlPYmplY3QgKnJldCA9IF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAmUHlJZF9pc2F0dHksIGFyZ3MpOwogCiAgICAgaWYgKHJldCAhPSBQeV9GYWxzZSkgewogICAgICAgICAvKiBlaXRoZXIgVHJ1ZSBvciBleGNlcHRpb24gKi8KQEAgLTIyMzMsNyArMjMyMyw3IEBACiAgICAgfQogICAgIFB5X0RFQ1JFRihyZXQpOwogCi0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAiaXNhdHR5IiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAmUHlJZF9pc2F0dHksIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjMyNSwyOCArMjQxNSwyNCBAQAogICAgICJcbiIKICAgICAiVGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSByZWFkZXIgYW5kIHdyaXRlciBmb3IgYSBzZWVrYWJsZSBzdHJlYW0sXG4iCiAgICAgInJhdywgZ2l2ZW4gaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdFxuIgotICAgICJkZWZhdWx0cyB0byBERUZBVUxUX0JVRkZFUl9TSVpFLiBtYXhfYnVmZmVyX3NpemUgaXNuJ3QgdXNlZCBhbnltb3JlLlxuIgorICAgICJkZWZhdWx0cyB0byBERUZBVUxUX0JVRkZFUl9TSVpFLlxuIgogICAgICk7CiAKIHN0YXRpYyBpbnQKIGJ1ZmZlcmVkcmFuZG9tX2luaXQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgIm1heF9idWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIGNoYXIgKmt3bGlzdFtdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKLSAgICBQeV9zc2l6ZV90IG1heF9idWZmZXJfc2l6ZSA9IC0yMzQ7CiAgICAgUHlPYmplY3QgKnJhdzsKIAogICAgIHNlbGYtPm9rID0gMDsKICAgICBzZWxmLT5kZXRhY2hlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xubjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUsICZtYXhfYnVmZmVyX3NpemUpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobWF4X2J1ZmZlcl9zaXplICE9IC0yMzQgJiYgIWNvbXBsYWluX2Fib3V0X21heF9idWZmZXJfc2l6ZSgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3NlZWthYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vYnl0ZXNpby5jIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCmluZGV4IDAzZjRjN2QuLjNkMDI3ZTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYworKysgYi9Nb2R1bGVzL19pby9ieXRlc2lvLmMKQEAgLTk1MCwxMyArOTUwLDExIEBACiBieXRlc2lvYnVmX2dldGJ1ZmZlcihieXRlc2lvYnVmICpvYmosIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQogewogICAgIGludCByZXQ7Ci0gICAgdm9pZCAqcHRyOwogICAgIGJ5dGVzaW8gKmIgPSAoYnl0ZXNpbyAqKSBvYmotPnNvdXJjZTsKICAgICBpZiAodmlldyA9PSBOVUxMKSB7CiAgICAgICAgIGItPmV4cG9ydHMrKzsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHB0ciA9ICh2b2lkICopIG9iajsKICAgICByZXQgPSBQeUJ1ZmZlcl9GaWxsSW5mbyh2aWV3LCAoUHlPYmplY3QqKW9iaiwgYi0+YnVmLCBiLT5zdHJpbmdfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBmbGFncyk7CiAgICAgaWYgKHJldCA+PSAwKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDYwNWFkNTEuLjZlMGJiZWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC00Niw2ICs0Niw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIGludCBmZDsKKyAgICB1bnNpZ25lZCBpbnQgY3JlYXRlZCA6IDE7CiAgICAgdW5zaWduZWQgaW50IHJlYWRhYmxlIDogMTsKICAgICB1bnNpZ25lZCBpbnQgd3JpdGFibGUgOiAxOwogICAgIHNpZ25lZCBpbnQgc2Vla2FibGUgOiAyOyAvKiAtMSBtZWFucyB1bmtub3duICovCkBAIC0xMjIsNiArMTIzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaWxlaW9fY2xvc2UoZmlsZWlvICpzZWxmKQogeworICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKICAgICBpZiAoIXNlbGYtPmNsb3NlZmQpIHsKICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xMzcsOCArMTM5LDggQEAKICAgICBpZiAoZXJybm8gPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCopJlB5UmF3SU9CYXNlX1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsb3NlIiwgIk8iLCBzZWxmKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKSZQeVJhd0lPQmFzZV9UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2Nsb3NlLCAiTyIsIHNlbGYpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTUxLDYgKzE1Myw3IEBACiAgICAgc2VsZiA9IChmaWxlaW8gKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCkgewogICAgICAgICBzZWxmLT5mZCA9IC0xOworICAgICAgICBzZWxmLT5jcmVhdGVkID0gMDsKICAgICAgICAgc2VsZi0+cmVhZGFibGUgPSAwOwogICAgICAgICBzZWxmLT53cml0YWJsZSA9IDA7CiAgICAgICAgIHNlbGYtPnNlZWthYmxlID0gLTE7CkBAIC0yMDQsOSArMjA3LDkgQEAKIGZpbGVpb19pbml0KFB5T2JqZWN0ICpvc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGZpbGVpbyAqc2VsZiA9IChmaWxlaW8gKikgb3NlbGY7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CiAgICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWVvYmosICpzdHJpbmdvYmogPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqc3RyaW5nb2JqID0gTlVMTCwgKm9wZW5lciA9IFB5X05vbmU7CiAgICAgY2hhciAqbW9kZSA9ICJyIjsKICAgICBjaGFyICpzOwogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTIzMCw4ICsyMzMsOSBAQAogICAgICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKICAgICB9CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xzaTpmaWxlaW8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2lPOmZpbGVpbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbmFtZW9iaiwgJm1vZGUsICZjbG9zZWZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcGVuZXIpKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoUHlGbG9hdF9DaGVjayhuYW1lb2JqKSkgewpAQCAtMjU4LDkgKzI2MiwxMCBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgd2lkZW5hbWUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lb2JqKTsKLSAgICB9Ci0gICAgaWYgKHdpZGVuYW1lID09IE5VTEwpCisgICAgICAgIHdpZGVuYW1lID0gUHlVbmljb2RlX0FzVW5pY29kZShuYW1lb2JqKTsKKyAgICAgICAgaWYgKHdpZGVuYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlCiAjZW5kaWYKICAgICBpZiAoZmQgPCAwKQogICAgIHsKQEAgLTI3MywxNSArMjc4LDIzIEBACiAgICAgcyA9IG1vZGU7CiAgICAgd2hpbGUgKCpzKSB7CiAgICAgICAgIHN3aXRjaCAoKnMrKykgewotICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgY2FzZSAneCc6CiAgICAgICAgICAgICBpZiAocndhKSB7CiAgICAgICAgICAgICBiYWRfbW9kZToKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiByZWFkL3dyaXRlL2FwcGVuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgY3JlYXRlL3JlYWQvd3JpdGUvYXBwZW5kICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGUgYW5kIGF0IG1vc3Qgb25lIHBsdXMiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcndhID0gMTsKKyAgICAgICAgICAgIHNlbGYtPmNyZWF0ZWQgPSAxOworICAgICAgICAgICAgc2VsZi0+d3JpdGFibGUgPSAxOworICAgICAgICAgICAgZmxhZ3MgfD0gT19FWENMIHwgT19DUkVBVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgIGlmIChyd2EpCisgICAgICAgICAgICAgICAgZ290byBiYWRfbW9kZTsKKyAgICAgICAgICAgIHJ3YSA9IDE7CiAgICAgICAgICAgICBzZWxmLT5yZWFkYWJsZSA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAndyc6CkBAIC0zNDcsMjAgKzM2MCw0MCBAQAogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgZXJybm8gPSAwOworICAgICAgICBpZiAob3BlbmVyID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmICh3aWRlbmFtZSAhPSBOVUxMKQotICAgICAgICAgICAgc2VsZi0+ZmQgPSBfd29wZW4od2lkZW5hbWUsIGZsYWdzLCAwNjY2KTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKHdpZGVuYW1lICE9IE5VTEwpCisgICAgICAgICAgICAgICAgc2VsZi0+ZmQgPSBfd29wZW4od2lkZW5hbWUsIGZsYWdzLCAwNjY2KTsKKyAgICAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgc2VsZi0+ZmQgPSBvcGVuKG5hbWUsIGZsYWdzLCAwNjY2KTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgICAgICBzZWxmLT5mZCA9IG9wZW4obmFtZSwgZmxhZ3MsIDA2NjYpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmZG9iaiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZXIsICJPaSIsIG5hbWVvYmosIGZsYWdzKTsKKyAgICAgICAgICAgIGlmIChmZG9iaiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayhmZG9iaikpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZmRvYmopOworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgaW50ZWdlciBmcm9tIG9wZW5lciIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNlbGYtPmZkID0gUHlMb25nX0FzTG9uZyhmZG9iaik7CisgICAgICAgICAgICBQeV9ERUNSRUYoZmRvYmopOworICAgICAgICAgICAgaWYgKHNlbGYtPmZkID09IC0xKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGZkX2lzX293biA9IDE7CiAgICAgICAgIGlmIChzZWxmLT5mZCA8IDApIHsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgICAgICBpZiAod2lkZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoVW5pY29kZUZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsIHdpZGVuYW1lKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfSU9FcnJvciwgbmFtZW9iaik7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgbmFtZSk7CkBAIC01MjksMzYgKzU2Miw1MyBAQAogfQogCiBzdGF0aWMgc2l6ZV90Ci1uZXdfYnVmZmVyc2l6ZShmaWxlaW8gKnNlbGYsIHNpemVfdCBjdXJyZW50c2l6ZSkKLXsKK25ld19idWZmZXJzaXplKGZpbGVpbyAqc2VsZiwgc2l6ZV90IGN1cnJlbnRzaXplCiAjaWZkZWYgSEFWRV9GU1RBVAotICAgIG9mZl90IHBvcywgZW5kOwotICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIGlmIChmc3RhdChzZWxmLT5mZCwgJnN0KSA9PSAwKSB7Ci0gICAgICAgIGVuZCA9IHN0LnN0X3NpemU7Ci0gICAgICAgIHBvcyA9IGxzZWVrKHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOworICAgICAgICAgICAgICAgLCBQeV9vZmZfdCBwb3MsIFB5X29mZl90IGVuZAorI2VuZGlmCisgICAgICAgICAgICAgICApCit7CisgICAgc2l6ZV90IGFkZGVuZDsKKyNpZmRlZiBIQVZFX0ZTVEFUCisgICAgaWYgKGVuZCAhPSAoUHlfb2ZmX3QpLTEpIHsKICAgICAgICAgLyogRmlsZXMgY2xhaW1pbmcgYSBzaXplIHNtYWxsZXIgdGhhbiBTTUFMTENIVU5LIG1heQogICAgICAgICAgICBhY3R1YWxseSBiZSBzdHJlYW1pbmcgcHNldWRvLWZpbGVzLiBJbiB0aGlzIGNhc2UsIHdlCiAgICAgICAgICAgIGFwcGx5IHRoZSBtb3JlIGFnZ3Jlc3NpdmUgYWxnb3JpdGhtIGJlbG93LgogICAgICAgICAqLwogICAgICAgICBpZiAoZW5kID49IFNNQUxMQ0hVTksgJiYgZW5kID49IHBvcyAmJiBwb3MgPj0gMCkgewogICAgICAgICAgICAgLyogQWRkIDEgc28gaWYgdGhlIGZpbGUgd2VyZSB0byBncm93IHdlJ2Qgbm90aWNlLiAqLwotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRzaXplICsgZW5kIC0gcG9zICsgMTsKKyAgICAgICAgICAgIFB5X29mZl90IGJ1ZnNpemUgPSBjdXJyZW50c2l6ZSArIGVuZCAtIHBvcyArIDE7CisgICAgICAgICAgICBpZiAoYnVmc2l6ZSA8IFBZX1NTSVpFX1RfTUFYKQorICAgICAgICAgICAgICAgIHJldHVybiAoc2l6ZV90KWJ1ZnNpemU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFBZX1NTSVpFX1RfTUFYOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAgICAgLyogRXhwYW5kIHRoZSBidWZmZXIgYnkgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgY3VycmVudCBzaXplLAotICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuIFVzZSBhIGxlc3MtdGhhbi1kb3VibGUKLSAgICAgICBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLwotICAgIHJldHVybiBjdXJyZW50c2l6ZSArIChjdXJyZW50c2l6ZSA+PiAzKSArIDY7CisgICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gIEZvciBiaWdnZXIgc2l6ZXMsIHVzZSBhCisgICAgICAgbGVzcy10aGFuLWRvdWJsZSBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLworICAgIGlmIChjdXJyZW50c2l6ZSA+IDY1NTM2KQorICAgICAgICBhZGRlbmQgPSBjdXJyZW50c2l6ZSA+PiAzOworICAgIGVsc2UKKyAgICAgICAgYWRkZW5kID0gMjU2ICsgY3VycmVudHNpemU7CisgICAgaWYgKGFkZGVuZCA8IFNNQUxMQ0hVTkspCisgICAgICAgIC8qIEF2b2lkIHRpbnkgcmVhZCgpIGNhbGxzLiAqLworICAgICAgICBhZGRlbmQgPSBTTUFMTENIVU5LOworICAgIHJldHVybiBhZGRlbmQgKyBjdXJyZW50c2l6ZTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGZpbGVpb19yZWFkYWxsKGZpbGVpbyAqc2VsZikKIHsKKyNpZmRlZiBIQVZFX0ZTVEFUCisgICAgc3RydWN0IHN0YXQgc3Q7CisgICAgUHlfb2ZmX3QgcG9zLCBlbmQ7CisjZW5kaWYKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3QgdG90YWwgPSAwOwogICAgIGludCBuOworICAgIHNpemVfdCBuZXdzaXplOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKQEAgLTU2OSw4ICs2MTksMjMgQEAKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisjaWZkZWYgSEFWRV9GU1RBVAorI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBwb3MgPSBfbHNlZWtpNjQoc2VsZi0+ZmQsIDBMLCBTRUVLX0NVUik7CisjZWxzZQorICAgIHBvcyA9IGxzZWVrKHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOworI2VuZGlmCisgICAgaWYgKGZzdGF0KHNlbGYtPmZkLCAmc3QpID09IDApCisgICAgICAgIGVuZCA9IHN0LnN0X3NpemU7CisgICAgZWxzZQorICAgICAgICBlbmQgPSAoUHlfb2ZmX3QpLTE7CisjZW5kaWYKICAgICB3aGlsZSAoMSkgewotICAgICAgICBzaXplX3QgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIHRvdGFsKTsKKyNpZmRlZiBIQVZFX0ZTVEFUCisgICAgICAgIG5ld3NpemUgPSBuZXdfYnVmZmVyc2l6ZShzZWxmLCB0b3RhbCwgcG9zLCBlbmQpOworI2Vsc2UKKyAgICAgICAgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIHRvdGFsKTsKKyNlbmRpZgogICAgICAgICBpZiAobmV3c2l6ZSA+IFBZX1NTSVpFX1RfTUFYIHx8IG5ld3NpemUgPD0gMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgInVuYm91bmRlZCByZWFkIHJldHVybmVkIG1vcmUgYnl0ZXMgIgpAQCAtNjE2LDYgKzY4MSw5IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICB0b3RhbCArPSBuOworI2lmZGVmIEhBVkVfRlNUQVQKKyAgICAgICAgcG9zICs9IG47CisjZW5kaWYKICAgICB9CiAKICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShyZXN1bHQpID4gdG90YWwpIHsKQEAgLTkyOSw2ICs5OTcsMTIgQEAKIHN0YXRpYyBjaGFyICoKIG1vZGVfc3RyaW5nKGZpbGVpbyAqc2VsZikKIHsKKyAgICBpZiAoc2VsZi0+Y3JlYXRlZCkgeworICAgICAgICBpZiAoc2VsZi0+cmVhZGFibGUpCisgICAgICAgICAgICByZXR1cm4gInhiKyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAieGIiOworICAgIH0KICAgICBpZiAoc2VsZi0+cmVhZGFibGUpIHsKICAgICAgICAgaWYgKHNlbGYtPndyaXRhYmxlKQogICAgICAgICAgICAgcmV0dXJuICJyYisiOwpAQCAtOTQyLDEyICsxMDE2LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmlsZWlvX3JlcHIoZmlsZWlvICpzZWxmKQogeworICAgIF9QeV9JREVOVElGSUVSKG5hbWUpOwogICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqcmVzOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLkZpbGVJTyBbY2xvc2VkXT4iKTsKIAotICAgIG5hbWVvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKSBzZWxmLCAibmFtZSIpOworICAgIG5hbWVvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKSBzZWxmLCAmUHlJZF9uYW1lKTsKICAgICBpZiAobmFtZW9iaiA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC05ODcsMTMgKzEwNjIsMTkgQEAKIAogCiBQeURvY19TVFJWQVIoZmlsZWlvX2RvYywKLSJmaWxlKG5hbWU6IHN0clssIG1vZGU6IHN0cl0pIC0+IGZpbGUgSU8gb2JqZWN0XG4iCisiZmlsZShuYW1lOiBzdHJbLCBtb2RlOiBzdHJdWywgb3BlbmVyOiBOb25lXSkgLT4gZmlsZSBJTyBvYmplY3RcbiIKICJcbiIKLSJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicsICd3JyBvciAnYScgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLFxuIgotIndyaXRpbmcgb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiIKLSJ3aGVuIG9wZW5lZCBmb3Igd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkIHdoZW5cbiIKLSJvcGVuZWQgZm9yIHdyaXRpbmcuICBBZGQgYSAnKycgdG8gdGhlIG1vZGUgdG8gYWxsb3cgc2ltdWx0YW5lb3VzXG4iCi0icmVhZGluZyBhbmQgd3JpdGluZy4iKTsKKyJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicsICd3JywgJ3gnIG9yICdhJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksXG4iCisid3JpdGluZywgZXhjbHVzaXZlIGNyZWF0aW9uIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdFxuIgorImRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZFxuIgorIndoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBgRmlsZUV4aXN0c0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiBpdCBhbHJlYWR5XG4iCisiZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nIGltcGxpZXNcbiIKKyJ3cml0aW5nIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gJ3cnLkFkZCBhICcrJyB0byB0aGUgbW9kZVxuIgorInRvIGFsbG93IHNpbXVsdGFuZW91cyByZWFkaW5nIGFuZCB3cml0aW5nLiBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnlcbiIKKyJwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGVcbiIKKyJvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nIG9wZW5lciB3aXRoICgqbmFtZSosICpmbGFncyopLlxuIgorIipvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lcipcbiIKKyJyZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLiIpOwogCiBQeURvY19TVFJWQVIocmVhZF9kb2MsCiAicmVhZChzaXplOiBpbnQpIC0+IGJ5dGVzLiAgcmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vaW9iYXNlLmMgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwppbmRleCAyYmJhMWJmLi5kZDA1MmFlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9pb2Jhc2UuYworKysgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwpAQCAtNTksOCArNTksOSBAQAogICAgb2YgdGhlIElPQmFzZSBvYmplY3QgcmF0aGVyIHRoYW4gdGhlIHZpcnR1YWwgYGNsb3NlZGAgYXR0cmlidXRlIGFzIHJldHVybmVkCiAgICBieSB3aGF0ZXZlciBzdWJjbGFzcy4gKi8KIAorX1B5X0lERU5USUZJRVIoX19JT0Jhc2VfY2xvc2VkKTsKICNkZWZpbmUgSVNfQ0xPU0VEKHNlbGYpIFwKLSAgICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHNlbGYsICJfX0lPQmFzZV9jbG9zZWQiKQorICAgIF9QeU9iamVjdF9IYXNBdHRySWQoc2VsZiwgJlB5SWRfX19JT0Jhc2VfY2xvc2VkKQogCiAvKiBJbnRlcm5hbCBtZXRob2RzICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtOTcsNyArOTgsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGlvYmFzZV90ZWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAic2VlayIsICJpaSIsIDAsIDEpOworICAgIF9QeV9JREVOVElGSUVSKHNlZWspOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfc2VlaywgImlpIiwgMCwgMSk7CiB9CiAKIFB5RG9jX1NUUlZBUihpb2Jhc2VfdHJ1bmNhdGVfZG9jLApAQCAtMTU2LDE5ICsxNTksNiBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoSVNfQ0xPU0VEKHNlbGYpKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9nZXRfZGljdChQeU9iamVjdCAqc2VsZikKLXsKLSAgICBQeU9iamVjdCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihzZWxmKTsKLSAgICBQeU9iamVjdCAqZGljdDsKLSAgICBhc3NlcnQoZGljdHB0cik7Ci0gICAgZGljdCA9ICpkaWN0cHRyOwotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgIGRpY3QgPSAqZGljdHB0ciA9IFB5RGljdF9OZXcoKTsKLSAgICBQeV9YSU5DUkVGKGRpY3QpOwotICAgIHJldHVybiBkaWN0OwotfQotCiBQeU9iamVjdCAqCiBfUHlJT0Jhc2VfY2hlY2tfY2xvc2VkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE5MCwxMiArMTgwLDEzIEBACiBpb2Jhc2VfY2xvc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19JT0Jhc2VfY2xvc2VkKTsKIAogICAgIGlmIChJU19DTE9TRUQoc2VsZikpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogCiAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZiwgX1B5SU9fc3RyX2ZsdXNoLCBOVUxMKTsKLSAgICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHNlbGYsICJfX0lPQmFzZV9jbG9zZWQiLCBQeV9UcnVlKTsKKyAgICBfUHlPYmplY3RfU2V0QXR0cklkKHNlbGYsICZQeUlkX19fSU9CYXNlX2Nsb3NlZCwgUHlfVHJ1ZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQ2NCwxMiArNDU1LDE0IEBACiAgICAgaW50IGhhc19wZWVrID0gMDsKICAgICBQeU9iamVjdCAqYnVmZmVyLCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3Qgb2xkX3NpemUgPSAtMTsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKKyAgICBfUHlfSURFTlRJRklFUihwZWVrKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHNlbGYsICJwZWVrIikpCisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQoc2VsZiwgJlB5SWRfcGVlaykpCiAgICAgICAgIGhhc19wZWVrID0gMTsKIAogICAgIGJ1ZmZlciA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwpAQCAtNDgxLDcgKzQ3NCw3IEBACiAgICAgICAgIFB5T2JqZWN0ICpiOwogCiAgICAgICAgIGlmIChoYXNfcGVlaykgewotICAgICAgICAgICAgUHlPYmplY3QgKnJlYWRhaGVhZCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInBlZWsiLCAiaSIsIDEpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlYWRhaGVhZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcGVlaywgImkiLCAxKTsKICAgICAgICAgICAgIGlmIChyZWFkYWhlYWQgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qIE5PVEU6IFB5RXJyX1NldEZyb21FcnJubygpIGNhbGxzIFB5RXJyX0NoZWNrU2lnbmFscygpCiAgICAgICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC01MjEsNyArNTE0LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWFkYWhlYWQpOwogICAgICAgICB9CiAKLSAgICAgICAgYiA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInJlYWQiLCAibiIsIG5yZWFkYWhlYWQpOworICAgICAgICBiID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkLCAibiIsIG5yZWFkYWhlYWQpOwogICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC02MTMsNyArNjA2LDkgQEAKICAgICAgICAgLyogWFhYIHNwZWNpYWwtY2FzaW5nIHRoaXMgbWFkZSBzZW5zZSBpbiB0aGUgUHl0aG9uIHZlcnNpb24gaW4gb3JkZXIKICAgICAgICAgICAgdG8gcmVtb3ZlIHRoZSBieXRlY29kZSBpbnRlcnByZXRhdGlvbiBvdmVyaGVhZCwgYnV0IGl0IGNvdWxkCiAgICAgICAgICAgIHByb2JhYmx5IGJlIHJlbW92ZWQgaGVyZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnJldCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmVzdWx0LCAiZXh0ZW5kIiwgIk8iLCBzZWxmKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZXh0ZW5kKTsKKyAgICAgICAgUHlPYmplY3QgKnJldCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF9leHRlbmQsICJPIiwgc2VsZik7CisKICAgICAgICAgaWYgKHJldCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzE2LDcgKzcxMSw3IEBACiB9OwogCiBzdGF0aWMgUHlHZXRTZXREZWYgaW9iYXNlX2dldHNldFtdID0gewotICAgIHsiX19kaWN0X18iLCAoZ2V0dGVyKWlvYmFzZV9nZXRfZGljdCwgTlVMTCwgTlVMTH0sCisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBOVUxMLCBOVUxMfSwKICAgICB7ImNsb3NlZCIsIChnZXR0ZXIpaW9iYXNlX2Nsb3NlZF9nZXQsIE5VTEwsIE5VTEx9LAogICAgIHtOVUxMfQogfTsKQEAgLTc5Myw4ICs3ODgsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAicmVhZGFsbCIsIE5VTEwpOworICAgIGlmIChuIDwgMCkgeworICAgICAgICBfUHlfSURFTlRJRklFUihyZWFkYWxsKTsKKworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkYWxsLCBOVUxMKTsKKyAgICB9CiAKICAgICAvKiBUT0RPOiBhbGxvY2F0ZSBhIGJ5dGVzIG9iamVjdCBkaXJlY3RseSBpbnN0ZWFkIGFuZCBtYW51YWxseSBjb25zdHJ1Y3QKICAgICAgICBhIHdyaXRhYmxlIG1lbW9yeXZpZXcgcG9pbnRpbmcgdG8gaXQuICovCkBAIC04MzUsOCArODMzLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBQeU9iamVjdCAqZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInJlYWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImkiLCBERUZBVUxUX0JVRkZFUl9TSVpFKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CisgICAgICAgIFB5T2JqZWN0ICpkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImkiLCBERUZBVUxUX0JVRkZFUl9TSVpFKTsKICAgICAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jIGIvTW9kdWxlcy9faW8vc3RyaW5naW8uYwppbmRleCBjOWQxNGIxLi5hMWMzMWMwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jCisrKyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKQEAgLTEsMTkgKzEsMzIgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2luY2x1ZGUgImFjY3UuaCIKICNpbmNsdWRlICJfaW9tb2R1bGUuaCIKIAogLyogSW1wbGVtZW50YXRpb24gbm90ZTogdGhlIGJ1ZmZlciBpcyBhbHdheXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBsb25nZXIKICAgIHRoYW4gdGhlIGVuY2xvc2VkIHN0cmluZywgZm9yIHByb3BlciBmdW5jdGlvbmluZyBvZiBfUHlJT19maW5kX2xpbmVfZW5kaW5nLgogKi8KIAorI2RlZmluZSBTVEFURV9SRUFMSVpFRCAxCisjZGVmaW5lIFNUQVRFX0FDQ1VNVUxBVElORyAyCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlfVU5JQ09ERSAqYnVmOworICAgIFB5X1VDUzQgKmJ1ZjsKICAgICBQeV9zc2l6ZV90IHBvczsKICAgICBQeV9zc2l6ZV90IHN0cmluZ19zaXplOwogICAgIHNpemVfdCBidWZfc2l6ZTsKIAorICAgIC8qIFRoZSBzdHJpbmdpbyBvYmplY3QgY2FuIGJlIGluIHR3byBzdGF0ZXM6IGFjY3VtdWxhdGluZyBvciByZWFsaXplZC4KKyAgICAgICBJbiBhY2N1bXVsYXRpbmcgc3RhdGUsIHRoZSBpbnRlcm5hbCBidWZmZXIgY29udGFpbnMgbm90aGluZyBhbmQKKyAgICAgICB0aGUgY29udGVudHMgYXJlIGdpdmVuIGJ5IHRoZSBlbWJlZGRlZCBfUHlBY2N1IHN0cnVjdHVyZS4KKyAgICAgICBJbiByZWFsaXplZCBzdGF0ZSwgdGhlIGludGVybmFsIGJ1ZmZlciBpcyBtZWFuaW5nZnVsIGFuZCB0aGUKKyAgICAgICBfUHlBY2N1IGlzIGRlc3Ryb3llZC4KKyAgICAqLworICAgIGludCBzdGF0ZTsKKyAgICBfUHlBY2N1IGFjY3U7CisKICAgICBjaGFyIG9rOyAvKiBpbml0aWFsaXplZD8gKi8KICAgICBjaGFyIGNsb3NlZDsKICAgICBjaGFyIHJlYWR1bml2ZXJzYWw7CkBAIC0yMSw3ICszNCw3IEBACiAgICAgUHlPYmplY3QgKmRlY29kZXI7CiAgICAgUHlPYmplY3QgKnJlYWRubDsKICAgICBQeU9iamVjdCAqd3JpdGVubDsKLSAgICAKKwogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gc3RyaW5naW87CkBAIC00MCw2ICs1MywxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsgXAogICAgIH0KIAorI2RlZmluZSBFTlNVUkVfUkVBTElaRUQoc2VsZikgXAorICAgIGlmIChyZWFsaXplKHNlbGYpIDwgMCkgeyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfQorCiBQeURvY19TVFJWQVIoc3RyaW5naW9fZG9jLAogICAgICJUZXh0IEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnVmZmVyLlxuIgogICAgICJcbiIKQEAgLTU2LDcgKzc0LDcgQEAKICAgICAvKiBIZXJlLCB1bnNpZ25lZCB0eXBlcyBhcmUgdXNlZCB0byBhdm9pZCBkZWFsaW5nIHdpdGggc2lnbmVkIGludGVnZXIKICAgICAgICBvdmVyZmxvdywgd2hpY2ggaXMgdW5kZWZpbmVkIGluIEMuICovCiAgICAgc2l6ZV90IGFsbG9jID0gc2VsZi0+YnVmX3NpemU7Ci0gICAgUHlfVU5JQ09ERSAqbmV3X2J1ZiA9IE5VTEw7CisgICAgUHlfVUNTNCAqbmV3X2J1ZiA9IE5VTEw7CiAKICAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOwogCkBAIC04NCwxMCArMTAyLDkgQEAKICAgICAgICAgYWxsb2MgPSBzaXplICsgMTsKICAgICB9CiAKLSAgICBpZiAoYWxsb2MgPiAoKHNpemVfdCktMSkgLyBzaXplb2YoUHlfVU5JQ09ERSkpCisgICAgaWYgKGFsbG9jID4gUFlfU0laRV9NQVggLyBzaXplb2YoUHlfVUNTNCkpCiAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgbmV3X2J1ZiA9IChQeV9VTklDT0RFICopUHlNZW1fUmVhbGxvYyhzZWxmLT5idWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvYyAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgbmV3X2J1ZiA9IChQeV9VQ1M0ICopUHlNZW1fUmVhbGxvYyhzZWxmLT5idWYsIGFsbG9jICogc2l6ZW9mKFB5X1VDUzQpKTsKICAgICBpZiAobmV3X2J1ZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTEwMywxNCArMTIwLDYyIEBACiAgICAgcmV0dXJuIC0xOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWFrZV9pbnRlcm1lZGlhdGUoc3RyaW5naW8gKnNlbGYpCit7CisgICAgUHlPYmplY3QgKmludGVybWVkaWF0ZSA9IF9QeUFjY3VfRmluaXNoKCZzZWxmLT5hY2N1KTsKKyAgICBzZWxmLT5zdGF0ZSA9IFNUQVRFX1JFQUxJWkVEOworICAgIGlmIChpbnRlcm1lZGlhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9QeUFjY3VfSW5pdCgmc2VsZi0+YWNjdSkgfHwKKyAgICAgICAgX1B5QWNjdV9BY2N1bXVsYXRlKCZzZWxmLT5hY2N1LCBpbnRlcm1lZGlhdGUpKSB7CisgICAgICAgIFB5X0RFQ1JFRihpbnRlcm1lZGlhdGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9BQ0NVTVVMQVRJTkc7CisgICAgcmV0dXJuIGludGVybWVkaWF0ZTsKK30KKworc3RhdGljIGludAorcmVhbGl6ZShzdHJpbmdpbyAqc2VsZikKK3sKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqaW50ZXJtZWRpYXRlOworCisgICAgaWYgKHNlbGYtPnN0YXRlID09IFNUQVRFX1JFQUxJWkVEKQorICAgICAgICByZXR1cm4gMDsKKyAgICBhc3NlcnQoc2VsZi0+c3RhdGUgPT0gU1RBVEVfQUNDVU1VTEFUSU5HKTsKKyAgICBzZWxmLT5zdGF0ZSA9IFNUQVRFX1JFQUxJWkVEOworCisgICAgaW50ZXJtZWRpYXRlID0gX1B5QWNjdV9GaW5pc2goJnNlbGYtPmFjY3UpOworICAgIGlmIChpbnRlcm1lZGlhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogQXBwZW5kIHRoZSBpbnRlcm1lZGlhdGUgc3RyaW5nIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIuCisgICAgICAgVGhlIGxlbmd0aCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLgorICAgICAqLworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGludGVybWVkaWF0ZSk7CisgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgbGVuKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGludGVybWVkaWF0ZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFQeVVuaWNvZGVfQXNVQ1M0KGludGVybWVkaWF0ZSwgc2VsZi0+YnVmLCBsZW4sIDApKSB7CisgICAgICAgIFB5X0RFQ1JFRihpbnRlcm1lZGlhdGUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKGludGVybWVkaWF0ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKIC8qIEludGVybmFsIHJvdXRpbmUgZm9yIHdyaXRpbmcgYSB3aG9sZSBQeVVuaWNvZGUgb2JqZWN0IHRvIHRoZSBidWZmZXIgb2YgYQogICAgU3RyaW5nSU8gb2JqZWN0LiBSZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgLTEgb24gZXJyb3IuICovCiBzdGF0aWMgUHlfc3NpemVfdAogd3JpdGVfc3RyKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqb2JqKQogewotICAgIFB5X1VOSUNPREUgKnN0cjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7CisKICAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOwogICAgIGFzc2VydChzZWxmLT5wb3MgPj0gMCk7CiAKQEAgLTEzMiw5ICsxOTcsMTEgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhkZWNvZGVkKSk7Ci0gICAgc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUoZGVjb2RlZCk7Ci0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGRlY29kZWQpOwotCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShkZWNvZGVkKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoZGVjb2RlZCk7CiAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKIAogICAgIC8qIFRoaXMgb3ZlcmZsb3cgY2hlY2sgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeS4gSG93ZXZlciwgaXQgYXZvaWRzIHVzIHRvCkBAIC0xNDUsNiArMjEyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibmV3IHBvc2l0aW9uIHRvbyBsYXJnZSIpOwogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQorCisgICAgaWYgKHNlbGYtPnN0YXRlID09IFNUQVRFX0FDQ1VNVUxBVElORykgeworICAgICAgICBpZiAoc2VsZi0+c3RyaW5nX3NpemUgPT0gc2VsZi0+cG9zKSB7CisgICAgICAgICAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKCZzZWxmLT5hY2N1LCBkZWNvZGVkKSkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICBnb3RvIHN1Y2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlYWxpemUoc2VsZikpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCiAgICAgaWYgKHNlbGYtPnBvcyArIGxlbiA+IHNlbGYtPnN0cmluZ19zaXplKSB7CiAgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIHNlbGYtPnBvcyArIGxlbikgPCAwKQogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMTYxLDE4ICsyMzksMjIgQEAKIAogICAgICAgICAqLwogICAgICAgICBtZW1zZXQoc2VsZi0+YnVmICsgc2VsZi0+c3RyaW5nX3NpemUsICdcMCcsCi0gICAgICAgICAgICAgICAoc2VsZi0+cG9zIC0gc2VsZi0+c3RyaW5nX3NpemUpICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgICAgICAgIChzZWxmLT5wb3MgLSBzZWxmLT5zdHJpbmdfc2l6ZSkgKiBzaXplb2YoUHlfVUNTNCkpOwogICAgIH0KIAogICAgIC8qIENvcHkgdGhlIGRhdGEgdG8gdGhlIGludGVybmFsIGJ1ZmZlciwgb3ZlcndyaXRpbmcgc29tZSBvZiB0aGUKICAgICAgICBleGlzdGluZyBkYXRhIGlmIHNlbGYtPnBvcyA8IHNlbGYtPnN0cmluZ19zaXplLiAqLwotICAgIG1lbWNweShzZWxmLT5idWYgKyBzZWxmLT5wb3MsIHN0ciwgbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKLSAgICBzZWxmLT5wb3MgKz0gbGVuOworICAgIGlmICghUHlVbmljb2RlX0FzVUNTNChkZWNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5idWYgKyBzZWxmLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmJ1Zl9zaXplIC0gc2VsZi0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAwKSkKKyAgICAgICAgZ290byBmYWlsOwogCitzdWNjZXNzOgogICAgIC8qIFNldCB0aGUgbmV3IGxlbmd0aCBvZiB0aGUgaW50ZXJuYWwgc3RyaW5nIGlmIGl0IGhhcyBjaGFuZ2VkLiAqLwotICAgIGlmIChzZWxmLT5zdHJpbmdfc2l6ZSA8IHNlbGYtPnBvcykgeworICAgIHNlbGYtPnBvcyArPSBsZW47CisgICAgaWYgKHNlbGYtPnN0cmluZ19zaXplIDwgc2VsZi0+cG9zKQogICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSA9IHNlbGYtPnBvczsKLSAgICB9CiAKICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CiAgICAgcmV0dXJuIDA7CkBAIC0xOTAsNyArMjcyLDEwIEBACiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc2VsZi0+YnVmLCBzZWxmLT5zdHJpbmdfc2l6ZSk7CisgICAgaWYgKHNlbGYtPnN0YXRlID09IFNUQVRFX0FDQ1VNVUxBVElORykKKyAgICAgICAgcmV0dXJuIG1ha2VfaW50ZXJtZWRpYXRlKHNlbGYpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBzZWxmLT5idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUpOwogfQogCiBQeURvY19TVFJWQVIoc3RyaW5naW9fdGVsbF9kb2MsCkBAIC0yMTQsNyArMjk5LDcgQEAKIHN0cmluZ2lvX3JlYWQoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3Qgc2l6ZSwgbjsKLSAgICBQeV9VTklDT0RFICpvdXRwdXQ7CisgICAgUHlfVUNTNCAqb3V0cHV0OwogICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CkBAIC0yNDUsMjEgKzMzMCwyOSBAQAogICAgICAgICAgICAgc2l6ZSA9IDA7CiAgICAgfQogCisgICAgLyogT3B0aW1pemF0aW9uIGZvciBzZWVrKDApOyByZWFkKCkgKi8KKyAgICBpZiAoc2VsZi0+c3RhdGUgPT0gU1RBVEVfQUNDVU1VTEFUSU5HICYmIHNlbGYtPnBvcyA9PSAwICYmIHNpemUgPT0gbikgeworICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gbWFrZV9pbnRlcm1lZGlhdGUoc2VsZik7CisgICAgICAgIHNlbGYtPnBvcyA9IHNlbGYtPnN0cmluZ19zaXplOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIEVOU1VSRV9SRUFMSVpFRChzZWxmKTsKICAgICBvdXRwdXQgPSBzZWxmLT5idWYgKyBzZWxmLT5wb3M7CiAgICAgc2VsZi0+cG9zICs9IHNpemU7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShvdXRwdXQsIHNpemUpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBvdXRwdXQsIHNpemUpOwogfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIsIHVzZWQgYnkgc3RyaW5naW9fcmVhZGxpbmUgYW5kIHN0cmluZ2lvX2l0ZXJuZXh0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogX3N0cmluZ2lvX3JlYWRsaW5lKHN0cmluZ2lvICpzZWxmLCBQeV9zc2l6ZV90IGxpbWl0KQogewotICAgIFB5X1VOSUNPREUgKnN0YXJ0LCAqZW5kLCBvbGRfY2hhcjsKKyAgICBQeV9VQ1M0ICpzdGFydCwgKmVuZCwgb2xkX2NoYXI7CiAgICAgUHlfc3NpemVfdCBsZW4sIGNvbnN1bWVkOwogCiAgICAgLyogSW4gY2FzZSBvZiBvdmVyc2VlaywgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgKi8KICAgICBpZiAoc2VsZi0+cG9zID49IHNlbGYtPnN0cmluZ19zaXplKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX05ldygwLCAwKTsKIAogICAgIHN0YXJ0ID0gc2VsZi0+YnVmICsgc2VsZi0+cG9zOwogICAgIGlmIChsaW1pdCA8IDAgfHwgbGltaXQgPiBzZWxmLT5zdHJpbmdfc2l6ZSAtIHNlbGYtPnBvcykKQEAgLTI3MCwxNCArMzYzLDE0IEBACiAgICAgKmVuZCA9ICdcMCc7CiAgICAgbGVuID0gX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICAgICAgc2VsZi0+cmVhZHRyYW5zbGF0ZSwgc2VsZi0+cmVhZHVuaXZlcnNhbCwgc2VsZi0+cmVhZG5sLAotICAgICAgICBzdGFydCwgZW5kLCAmY29uc3VtZWQpOworICAgICAgICBQeVVuaWNvZGVfNEJZVEVfS0lORCwgKGNoYXIqKXN0YXJ0LCAoY2hhciopZW5kLCAmY29uc3VtZWQpOwogICAgICplbmQgPSBvbGRfY2hhcjsKICAgICAvKiBJZiB3ZSBoYXZlbid0IGZvdW5kIGFueSBsaW5lIGVuZGluZywgd2UganVzdCByZXR1cm4gZXZlcnl0aGluZwogICAgICAgIChgY29uc3VtZWRgIGlzIGlnbm9yZWQpLiAqLwogICAgIGlmIChsZW4gPCAwKQogICAgICAgICBsZW4gPSBsaW1pdDsKICAgICBzZWxmLT5wb3MgKz0gbGVuOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc3RhcnQsIGxlbik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsIHN0YXJ0LCBsZW4pOwogfQogCiBQeURvY19TVFJWQVIoc3RyaW5naW9fcmVhZGxpbmVfZG9jLApAQCAtMjk1LDYgKzM4OCw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpyZWFkbGluZSIsICZhcmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CisgICAgRU5TVVJFX1JFQUxJWkVEKHNlbGYpOwogCiAgICAgaWYgKFB5TnVtYmVyX0NoZWNrKGFyZykpIHsKICAgICAgICAgbGltaXQgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKQEAgLTMxNiw2ICs0MTAsNyBAQAogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOworICAgIEVOU1VSRV9SRUFMSVpFRChzZWxmKTsKIAogICAgIGlmIChQeV9UWVBFKHNlbGYpID09ICZQeVN0cmluZ0lPX1R5cGUpIHsKICAgICAgICAgLyogU2tpcCBtZXRob2QgY2FsbCBvdmVyaGVhZCBmb3Igc3BlZWQgKi8KQEAgLTMzNyw3ICs0MzIsNyBAQAogICAgIGlmIChsaW5lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShsaW5lKSA9PSAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmUpID09IDApIHsKICAgICAgICAgLyogUmVhY2hlZCBFT0YgKi8KICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM4Niw2ICs0ODEsNyBAQAogICAgIH0KIAogICAgIGlmIChzaXplIDwgc2VsZi0+c3RyaW5nX3NpemUpIHsKKyAgICAgICAgRU5TVVJFX1JFQUxJWkVEKHNlbGYpOwogICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBzaXplKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSBzaXplOwpAQCAtNDYyLDggKzU1OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKIAogICAgIGlmIChzaXplID4gMCAmJiB3cml0ZV9zdHIoc2VsZiwgb2JqKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDg0LDYgKzU4Miw3IEBACiAgICAgLyogRnJlZSB1cCBzb21lIG1lbW9yeSAqLwogICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIDApIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgX1B5QWNjdV9EZXN0cm95KCZzZWxmLT5hY2N1KTsKICAgICBQeV9DTEVBUihzZWxmLT5yZWFkbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPndyaXRlbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPmRlY29kZXIpOwpAQCAtNTEzLDYgKzYxMiw3IEBACiAgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+YnVmKTsKICAgICAgICAgc2VsZi0+YnVmID0gTlVMTDsKICAgICB9CisgICAgX1B5QWNjdV9EZXN0cm95KCZzZWxmLT5hY2N1KTsKICAgICBQeV9DTEVBUihzZWxmLT5yZWFkbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPndyaXRlbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPmRlY29kZXIpOwpAQCAtNTM1LDcgKzYzNSw3IEBACiAgICAgLyogdHBfYWxsb2MgaW5pdGlhbGl6ZXMgYWxsIHRoZSBmaWVsZHMgdG8gemVyby4gU28gd2UgZG9uJ3QgaGF2ZSB0bwogICAgICAgIGluaXRpYWxpemUgdGhlbSBoZXJlLiAqLwogCi0gICAgc2VsZi0+YnVmID0gKFB5X1VOSUNPREUgKilQeU1lbV9NYWxsb2MoMCk7CisgICAgc2VsZi0+YnVmID0gKFB5X1VDUzQgKilQeU1lbV9NYWxsb2MoMCk7CiAgICAgaWYgKHNlbGYtPmJ1ZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CkBAIC01NTEsNiArNjUxLDcgQEAKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaiA9IE5VTEw7CiAgICAgY2hhciAqbmV3bGluZSA9ICJcbiI7CisgICAgUHlfc3NpemVfdCB2YWx1ZV9sZW47CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9POl9faW5pdF9fIiwga3dsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkKQEAgLTU5Miw2ICs2OTMsNyBAQAogCiAgICAgc2VsZi0+b2sgPSAwOwogCisgICAgX1B5QWNjdV9EZXN0cm95KCZzZWxmLT5hY2N1KTsKICAgICBQeV9DTEVBUihzZWxmLT5yZWFkbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPndyaXRlbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPmRlY29kZXIpOwpAQCAtNjI4LDE5ICs3MzAsMjcgQEAKICAgICAvKiBOb3cgZXZlcnl0aGluZyBpcyBzZXQgdXAsIHJlc2l6ZSBidWZmZXIgdG8gc2l6ZSBvZiBpbml0aWFsIHZhbHVlLAogICAgICAgIGFuZCBjb3B5IGl0ICovCiAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSAwOwotICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dldFNpemUodmFsdWUpOworICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPSBQeV9Ob25lKQorICAgICAgICB2YWx1ZV9sZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlX2xlbiA9IDA7CisgICAgaWYgKHZhbHVlX2xlbiA+IDApIHsKICAgICAgICAgLyogVGhpcyBpcyBhIGhldXJpc3RpYywgZm9yIG5ld2xpbmUgdHJhbnNsYXRpb24gbWlnaHQgY2hhbmdlCiAgICAgICAgICAgIHRoZSBzdHJpbmcgbGVuZ3RoLiAqLwotICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBsZW4pIDwgMCkKKyAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgMCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBzZWxmLT5zdGF0ZSA9IFNUQVRFX1JFQUxJWkVEOwogICAgICAgICBzZWxmLT5wb3MgPSAwOwogICAgICAgICBpZiAod3JpdGVfc3RyKHNlbGYsIHZhbHVlKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGVsc2UgeworICAgICAgICAvKiBFbXB0eSBzdHJpbmdpbyBvYmplY3QsIHdlIGNhbiBzdGFydCBieSBhY2N1bXVsYXRpbmcgKi8KICAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgMCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoX1B5QWNjdV9Jbml0KCZzZWxmLT5hY2N1KSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9BQ0NVTVVMQVRJTkc7CiAgICAgfQogICAgIHNlbGYtPnBvcyA9IDA7CiAKQEAgLTc0NywxMSArODU3LDIyIEBACiAgICAgICAgb25jZSBieSBfX2luaXRfXy4gU28gd2UgZG8gbm90IHRha2UgYW55IGNoYW5jZSBhbmQgcmVwbGFjZSBvYmplY3QncwogICAgICAgIGJ1ZmZlciBjb21wbGV0ZWx5LiAqLwogICAgIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCkpOwotICAgICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCkpOwotICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBidWZzaXplKSA8IDApCisgICAgICAgIFB5T2JqZWN0ICppdGVtOworICAgICAgICBQeV9VQ1M0ICpidWY7CisgICAgICAgIFB5X3NzaXplX3QgYnVmc2l6ZTsKKworICAgICAgICBpdGVtID0gUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCk7CisgICAgICAgIGJ1ZiA9IFB5VW5pY29kZV9Bc1VDUzRDb3B5KGl0ZW0pOworICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZiwgYnVmLCBidWZzaXplICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgYnVmc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworCisgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIGJ1ZnNpemUpIDwgMCkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZiwgYnVmLCBidWZzaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOwogICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSA9IGJ1ZnNpemU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby90ZXh0aW8uYyBiL01vZHVsZXMvX2lvL3RleHRpby5jCmluZGV4IDQ5MDQ4NDIuLmZiOWI2NzQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL3RleHRpby5jCisrKyBiL01vZHVsZXMvX2lvL3RleHRpby5jCkBAIC0xMSw2ICsxMSwyNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCitfUHlfSURFTlRJRklFUihjbG9zZSk7CitfUHlfSURFTlRJRklFUihfZGVhbGxvY193YXJuKTsKK19QeV9JREVOVElGSUVSKGRlY29kZSk7CitfUHlfSURFTlRJRklFUihmaWxlbm8pOworX1B5X0lERU5USUZJRVIoZmx1c2gpOworX1B5X0lERU5USUZJRVIoZ2V0cHJlZmVycmVkZW5jb2RpbmcpOworX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKK19QeV9JREVOVElGSUVSKG1vZGUpOworX1B5X0lERU5USUZJRVIobmFtZSk7CitfUHlfSURFTlRJRklFUihyYXcpOworX1B5X0lERU5USUZJRVIocmVhZCk7CitfUHlfSURFTlRJRklFUihyZWFkMSk7CitfUHlfSURFTlRJRklFUihyZWFkYWJsZSk7CitfUHlfSURFTlRJRklFUihyZXBsYWNlKTsKK19QeV9JREVOVElGSUVSKHJlc2V0KTsKK19QeV9JREVOVElGSUVSKHNlZWspOworX1B5X0lERU5USUZJRVIoc2Vla2FibGUpOworX1B5X0lERU5USUZJRVIoc2V0c3RhdGUpOworX1B5X0lERU5USUZJRVIodGVsbCk7CitfUHlfSURFTlRJRklFUih3cml0YWJsZSk7CisKIC8qIFRleHRJT0Jhc2UgKi8KIAogUHlEb2NfU1RSVkFSKHRleHRpb2Jhc2VfZG9jLApAQCAtMjc0LDE4ICsyOTUsMjYgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBvdXRwdXRfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG91dHB1dCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvdXRwdXQpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgb3V0cHV0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCk7CiAgICAgaWYgKHNlbGYtPnBlbmRpbmdjciAmJiAoZmluYWwgfHwgb3V0cHV0X2xlbiA+IDApKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKm91dDsKLSAgICAgICAgUHlPYmplY3QgKm1vZGlmaWVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIG91dHB1dF9sZW4gKyAxKTsKKyAgICAgICAgLyogUHJlZml4IG91dHB1dCB3aXRoIENSICovCisgICAgICAgIGludCBraW5kOworICAgICAgICBQeU9iamVjdCAqbW9kaWZpZWQ7CisgICAgICAgIGNoYXIgKm91dDsKKworICAgICAgICBtb2RpZmllZCA9IFB5VW5pY29kZV9OZXcob3V0cHV0X2xlbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUob3V0cHV0KSk7CiAgICAgICAgIGlmIChtb2RpZmllZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgb3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUobW9kaWZpZWQpOwotICAgICAgICBvdXRbMF0gPSAnXHInOwotICAgICAgICBtZW1jcHkob3V0ICsgMSwgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KSwKLSAgICAgICAgICAgICAgIG91dHB1dF9sZW4gKiBzaXplb2YoUHlfVU5JQ09ERSkpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobW9kaWZpZWQpOworICAgICAgICBvdXQgPSBQeVVuaWNvZGVfREFUQShtb2RpZmllZCk7CisgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBQeVVuaWNvZGVfREFUQShtb2RpZmllZCksIDAsICdccicpOworICAgICAgICBtZW1jcHkob3V0ICsga2luZCwgUHlVbmljb2RlX0RBVEEob3V0cHV0KSwga2luZCAqIG91dHB1dF9sZW4pOwogICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgb3V0cHV0ID0gbW9kaWZpZWQ7CisgICAgICAgIG91dHB1dCA9IG1vZGlmaWVkOyAvKiBvdXRwdXQgcmVtYWlucyByZWFkeSAqLwogICAgICAgICBzZWxmLT5wZW5kaW5nY3IgPSAwOwogICAgICAgICBvdXRwdXRfbGVuKys7CiAgICAgfQpAQCAtMjk1LDIxICszMjQsMTMgQEAKICAgICAgKi8KICAgICBpZiAoIWZpbmFsKSB7CiAgICAgICAgIGlmIChvdXRwdXRfbGVuID4gMAotICAgICAgICAgICAgJiYgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KVtvdXRwdXRfbGVuIC0gMV0gPT0gJ1xyJykgewotCi0gICAgICAgICAgICBpZiAoUHlfUkVGQ05UKG91dHB1dCkgPT0gMSkgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZvdXRwdXQsIG91dHB1dF9sZW4gLSAxKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kaWZpZWQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKG91dHB1dCksCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dF9sZW4gLSAxKTsKLSAgICAgICAgICAgICAgICBpZiAobW9kaWZpZWQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBtb2RpZmllZDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICYmIFB5VW5pY29kZV9SRUFEX0NIQVIob3V0cHV0LCBvdXRwdXRfbGVuIC0gMSkgPT0gJ1xyJykKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3QgKm1vZGlmaWVkID0gUHlVbmljb2RlX1N1YnN0cmluZyhvdXRwdXQsIDAsIG91dHB1dF9sZW4gLTEpOworICAgICAgICAgICAgaWYgKG1vZGlmaWVkID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOworICAgICAgICAgICAgb3V0cHV0ID0gbW9kaWZpZWQ7CiAgICAgICAgICAgICBzZWxmLT5wZW5kaW5nY3IgPSAxOwogICAgICAgICB9CiAgICAgfQpAQCAtMzE3LDEzICszMzgsMTUgQEAKICAgICAvKiBSZWNvcmQgd2hpY2ggbmV3bGluZXMgYXJlIHJlYWQgYW5kIGRvIG5ld2xpbmUgdHJhbnNsYXRpb24gaWYgZGVzaXJlZCwKICAgICAgICBhbGwgaW4gb25lIHBhc3MuICovCiAgICAgewotICAgICAgICBQeV9VTklDT0RFICppbl9zdHI7CisgICAgICAgIHZvaWQgKmluX3N0cjsKICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgIGludCBzZWVubmwgPSBzZWxmLT5zZWVubmw7CiAgICAgICAgIGludCBvbmx5X2xmID0gMDsKKyAgICAgICAgaW50IGtpbmQ7CiAKLSAgICAgICAgaW5fc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KTsKLSAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG91dHB1dCk7CisgICAgICAgIGluX3N0ciA9IFB5VW5pY29kZV9EQVRBKG91dHB1dCk7CisgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvdXRwdXQpOwogCiAgICAgICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7CkBAIC0zMzIsNyArMzU1LDcgQEAKICAgICAgICAgICAgZm9yIHRoZSBcciAqYnl0ZSogd2l0aCB0aGUgbGliYydzIG9wdGltaXplZCBtZW1jaHIuCiAgICAgICAgICAgICovCiAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9MRiB8fCBzZWVubmwgPT0gMCkgewotICAgICAgICAgICAgb25seV9sZiA9IChtZW1jaHIoaW5fc3RyLCAnXHInLCBsZW4gKiBzaXplb2YoUHlfVU5JQ09ERSkpID09IE5VTEwpOworICAgICAgICAgICAgb25seV9sZiA9IChtZW1jaHIoaW5fc3RyLCAnXHInLCBraW5kICogbGVuKSA9PSBOVUxMKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChvbmx5X2xmKSB7CkBAIC0zNDAsNTEgKzM2Myw1MSBAQAogICAgICAgICAgICAgICAgKHRoZXJlJ3Mgbm90aGluZyBlbHNlIHRvIGJlIGRvbmUsIGV2ZW4gd2hlbiBpbiB0cmFuc2xhdGlvbiBtb2RlKQogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gMCAmJgotICAgICAgICAgICAgICAgIG1lbWNocihpbl9zdHIsICdcbicsIGxlbiAqIHNpemVvZihQeV9VTklDT0RFKSkgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnMsICplbmQ7Ci0gICAgICAgICAgICAgICAgcyA9IGluX3N0cjsKLSAgICAgICAgICAgICAgICBlbmQgPSBpbl9zdHIgKyBsZW47Ci0gICAgICAgICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGM7Ci0gICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgbG9vcCBmb3Igbm9uLWNvbnRyb2wgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKnMgPiAnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBjID0gKnMrKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykgewotICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbm5sIHw9IFNFRU5fTEY7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBtZW1jaHIoaW5fc3RyLCAnXG4nLCBraW5kICogbGVuKSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGkgPSAwOworICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGM7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IGxvb3AgZm9yIG5vbi1jb250cm9sIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBpbl9zdHIsIGkpID4gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKyspOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzID4gZW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogRmluaXNoZWQ6IHdlIGhhdmUgc2Nhbm5lZCBmb3IgbmV3bGluZXMsIGFuZCBub25lIG9mIHRoZW0KICAgICAgICAgICAgICAgIG5lZWQgdHJhbnNsYXRpbmcgKi8KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICghc2VsZi0+dHJhbnNsYXRlKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpzLCAqZW5kOworICAgICAgICAgICAgUHlfc3NpemVfdCBpID0gMDsKICAgICAgICAgICAgIC8qIFdlIGhhdmUgYWxyZWFkeSBzZWVuIGFsbCBuZXdsaW5lIHR5cGVzLCBubyBuZWVkIHRvIHNjYW4gYWdhaW4gKi8KICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9BTEwpCiAgICAgICAgICAgICAgICAgZ290byBlbmRzY2FuOwotICAgICAgICAgICAgcyA9IGluX3N0cjsKLSAgICAgICAgICAgIGVuZCA9IGluX3N0ciArIGxlbjsKICAgICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGM7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjOwogICAgICAgICAgICAgICAgIC8qIEZhc3QgbG9vcCBmb3Igbm9uLWNvbnRyb2wgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgIHdoaWxlICgqcyA+ICdccicpCi0gICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBjID0gKnMrKzsKKyAgICAgICAgICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKSA+ICdccicpCisgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKyspOwogICAgICAgICAgICAgICAgIGlmIChjID09ICdcbicpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoKnMgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKSA9PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9DUkxGOwotICAgICAgICAgICAgICAgICAgICAgICAgcysrOworICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0NSOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocyA+IGVuZCkKKyAgICAgICAgICAgICAgICBpZiAoaSA+PSBsZW4pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9BTEwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzkzLDYxICs0MTYsNTEgQEAKICAgICAgICAgICAgIDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0cmFuc2xhdGVkID0gTlVMTDsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKm91dF9zdHI7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICppbiwgKm91dCwgKmVuZDsKLSAgICAgICAgICAgIGlmIChQeV9SRUZDTlQob3V0cHV0KSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgLyogV2UgY291bGQgdHJ5IHRvIG9wdGltaXplIHRoaXMgc28gdGhhdCB3ZSBvbmx5IGRvIGEgY29weQotICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlcmUgaXMgc29tZXRoaW5nIHRvIHRyYW5zbGF0ZS4gT24gdGhlIG90aGVyIGhhbmQsCi0gICAgICAgICAgICAgICAgICAgbW9zdCBkZWNvZGVycyBzaG91bGQgb25seSBvdXRwdXQgbm9uLXNoYXJlZCBzdHJpbmdzLCBpLmUuCi0gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24gaXMgZG9uZSBpbiBwbGFjZS4gKi8KLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGxlbik7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBhc3NlcnQoUHlfUkVGQ05UKHRyYW5zbGF0ZWQpID09IDEpOwotICAgICAgICAgICAgICAgIG1lbWNweShQeVVuaWNvZGVfQVNfVU5JQ09ERSh0cmFuc2xhdGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgICAgIHZvaWQgKnRyYW5zbGF0ZWQ7CisgICAgICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKG91dHB1dCk7CisgICAgICAgICAgICB2b2lkICppbl9zdHIgPSBQeVVuaWNvZGVfREFUQShvdXRwdXQpOworICAgICAgICAgICAgUHlfc3NpemVfdCBpbiwgb3V0OworICAgICAgICAgICAgLyogWFhYOiBQcmV2aW91cyBpbi1wbGFjZSB0cmFuc2xhdGlvbiBoZXJlIGlzIGRpc2FibGVkIGFzCisgICAgICAgICAgICAgICByZXNpemluZyBpcyBub3QgcG9zc2libGUgYW55bW9yZSAqLworICAgICAgICAgICAgLyogV2UgY291bGQgdHJ5IHRvIG9wdGltaXplIHRoaXMgc28gdGhhdCB3ZSBvbmx5IGRvIGEgY29weQorICAgICAgICAgICAgICAgd2hlbiB0aGVyZSBpcyBzb21ldGhpbmcgdG8gdHJhbnNsYXRlLiBPbiB0aGUgb3RoZXIgaGFuZCwKKyAgICAgICAgICAgICAgIHdlIGFscmVhZHkga25vdyB0aGVyZSBpcyBhIFxyIGJ5dGUsIHNvIGNoYW5jZXMgYXJlIGhpZ2gKKyAgICAgICAgICAgICAgIHRoYXQgc29tZXRoaW5nIG5lZWRzIHRvIGJlIGRvbmUuICovCisgICAgICAgICAgICB0cmFuc2xhdGVkID0gUHlNZW1fTWFsbG9jKGtpbmQgKiBsZW4pOworICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBvdXRwdXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBvdXRfc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUodHJhbnNsYXRlZCk7Ci0gICAgICAgICAgICBpbiA9IGluX3N0cjsKLSAgICAgICAgICAgIG91dCA9IG91dF9zdHI7Ci0gICAgICAgICAgICBlbmQgPSBpbl9zdHIgKyBsZW47CisgICAgICAgICAgICBpbiA9IG91dCA9IDA7CiAgICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjOworICAgICAgICAgICAgICAgIFB5X1VDUzQgYzsKICAgICAgICAgICAgICAgICAvKiBGYXN0IGxvb3AgZm9yIG5vbi1jb250cm9sIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoKGMgPSAqaW4rKykgPiAnXHInKQotICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSBjOworICAgICAgICAgICAgICAgIHdoaWxlICgoYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaW4rKykpID4gJ1xyJykKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIHRyYW5zbGF0ZWQsIG91dCsrLCBjKTsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXG4nKSB7Ci0gICAgICAgICAgICAgICAgICAgICpvdXQrKyA9IGM7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCB0cmFuc2xhdGVkLCBvdXQrKywgYyk7CiAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoKmluID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaW4pID09ICdcbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGluKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9DUkxGOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0NSOwotICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAnXG4nOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgdHJhbnNsYXRlZCwgb3V0KyssICdcbicpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGluID4gZW5kKQorICAgICAgICAgICAgICAgIGlmIChpbiA+IGxlbikKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgKm91dCsrID0gYzsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgdHJhbnNsYXRlZCwgb3V0KyssIGMpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgIT0gb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0gdHJhbnNsYXRlZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChvdXQgLSBvdXRfc3RyICE9IGxlbikgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZvdXRwdXQsIG91dCAtIG91dF9zdHIpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOworICAgICAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShraW5kLCB0cmFuc2xhdGVkLCBvdXQpOworICAgICAgICAgICAgUHlNZW1fRnJlZSh0cmFuc2xhdGVkKTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPnNlZW5ubCB8PSBzZWVubmw7CiAgICAgfQpAQCAtNTE0LDggKzUyNyw4IEBACiAgICAgZmxhZyA+Pj0gMTsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVyICE9IFB5X05vbmUpCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmRlY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXRzdGF0ZSIsICIoKE9LKSkiLCBidWZmZXIsIGZsYWcpOworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9zZXRzdGF0ZSwgIigoT0spKSIsIGJ1ZmZlciwgZmxhZyk7CiAgICAgZWxzZQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTYxNyw3ICs2MzAsNyBAQAogICAgICJDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLlxuIgogICAgICJcbiIKICAgICAiZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlXG4iCi0gICAgImRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcuXG4iCisgICAgImRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLlxuIgogICAgICJcbiIKICAgICAiZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWUgdGhlXG4iCiAgICAgImNvZGVjcy5yZWdpc3RlcikgYW5kIGRlZmF1bHRzIHRvIFwic3RyaWN0XCIuXG4iCkBAIC02ODcsMTIgKzcwMCwxNiBAQAogICAgIFB5T2JqZWN0ICpwZW5kaW5nX2J5dGVzOyAgICAgICAvKiBsaXN0IG9mIGJ5dGVzIG9iamVjdHMgd2FpdGluZyB0byBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0dGVuLCBvciBOVUxMICovCiAgICAgUHlfc3NpemVfdCBwZW5kaW5nX2J5dGVzX2NvdW50OwotICAgIFB5T2JqZWN0ICpzbmFwc2hvdDsKKwogICAgIC8qIHNuYXBzaG90IGlzIGVpdGhlciBOb25lLCBvciBhIHR1cGxlIChkZWNfZmxhZ3MsIG5leHRfaW5wdXQpIHdoZXJlCiAgICAgICogZGVjX2ZsYWdzIGlzIHRoZSBzZWNvbmQgKGludGVnZXIpIGl0ZW0gb2YgdGhlIGRlY29kZXIgc3RhdGUgYW5kCiAgICAgICogbmV4dF9pbnB1dCBpcyB0aGUgY2h1bmsgb2YgaW5wdXQgYnl0ZXMgdGhhdCBjb21lcyBuZXh0IGFmdGVyIHRoZQogICAgICAqIHNuYXBzaG90IHBvaW50LiAgV2UgdXNlIHRoaXMgdG8gcmVjb25zdHJ1Y3QgZGVjb2RlciBzdGF0ZXMgaW4gdGVsbCgpLgogICAgICAqLworICAgIFB5T2JqZWN0ICpzbmFwc2hvdDsKKyAgICAvKiBCeXRlcy10by1jaGFyYWN0ZXJzIHJhdGlvIGZvciB0aGUgY3VycmVudCBjaHVuay4gU2VydmVzIGFzIGlucHV0IGZvcgorICAgICAgIHRoZSBoZXVyaXN0aWMgaW4gdGVsbCgpLiAqLworICAgIGRvdWJsZSBiMmNyYXRpbzsKIAogICAgIC8qIENhY2hlIHJhdyBvYmplY3QgaWYgaXQncyBhIEZpbGVJTyBvYmplY3QgKi8KICAgICBQeU9iamVjdCAqcmF3OwpAQCAtNzA4LDI1ICs3MjUsMjEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhc2NpaV9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUFTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh0ZXh0LCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHV0ZjE2YmVfZW5jb2RlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKnRleHQpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDEpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1dGYxNmxlX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAtMSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAtMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC03NDAsMjUgKzc1MywyMiBAQAogICAgICAgICByZXR1cm4gdXRmMTZsZV9lbmNvZGUoc2VsZiwgdGV4dCk7CiAjZW5kaWYKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDApOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1dGYzMmJlX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAxKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdXRmMzJsZV9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgLTEpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjMyKHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgLTEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzcyLDI1ICs3ODIsMjAgQEAKICAgICAgICAgcmV0dXJuIHV0ZjMybGVfZW5jb2RlKHNlbGYsIHRleHQpOwogI2VuZGlmCiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAwKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdXRmOF9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHRleHQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycykpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogbGF0aW4xX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh0ZXh0LCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKIH0KIAogLyogTWFwIG5vcm1hbGl6ZWQgZW5jb2RpbmcgbmFtZXMgb250byB0aGUgc3BlY2lhbGl6ZWQgZW5jb2RpbmcgZnVuY3MgKi8KQEAgLTg1OSwxMSArODY0LDEyIEBACiAgICAgc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkID0gMDsKICAgICBzZWxmLT5wZW5kaW5nX2J5dGVzX2NvdW50ID0gMDsKICAgICBzZWxmLT5lbmNvZGVmdW5jID0gTlVMTDsKKyAgICBzZWxmLT5iMmNyYXRpbyA9IDAuMDsKIAogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CiAgICAgICAgIC8qIFRyeSBvcy5kZXZpY2VfZW5jb2RpbmcoZmlsZW5vKSAqLwogICAgICAgICBQeU9iamVjdCAqZmlsZW5vOwotICAgICAgICBmaWxlbm8gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGJ1ZmZlciwgImZpbGVubyIsIE5VTEwpOworICAgICAgICBmaWxlbm8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICAgICAgLyogSWdub3JlIG9ubHkgQXR0cmlidXRlRXJyb3IgYW5kIFVuc3VwcG9ydGVkT3BlcmF0aW9uICovCiAgICAgICAgIGlmIChmaWxlbm8gPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpIHx8CkBAIC04NzUsOSArODgxLDEzIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzZWxmLT5lbmNvZGluZyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc3RhdGUtPm9zX21vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV2aWNlX2VuY29kaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTiIsIGZpbGVubyk7CisgICAgICAgICAgICBpbnQgZmQgPSAoaW50KSBQeUxvbmdfQXNMb25nKGZpbGVubyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZmlsZW5vKTsKKyAgICAgICAgICAgIGlmIChmZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VsZi0+ZW5jb2RpbmcgPSBfUHlfZGV2aWNlX2VuY29kaW5nKGZkKTsKICAgICAgICAgICAgIGlmIChzZWxmLT5lbmNvZGluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHNlbGYtPmVuY29kaW5nKSkKQEAgLTg5NCw4ICs5MDQsOCBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgIHVzZV9sb2NhbGU6Ci0gICAgICAgICAgICBzZWxmLT5lbmNvZGluZyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICAgICAgc3RhdGUtPmxvY2FsZV9tb2R1bGUsICJnZXRwcmVmZXJyZWRlbmNvZGluZyIsIE5VTEwpOworICAgICAgICAgICAgc2VsZi0+ZW5jb2RpbmcgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgICAgIHN0YXRlLT5sb2NhbGVfbW9kdWxlLCAmUHlJZF9nZXRwcmVmZXJyZWRlbmNvZGluZywgIk8iLCBQeV9GYWxzZSk7CiAgICAgICAgICAgICBpZiAoc2VsZi0+ZW5jb2RpbmcgPT0gTlVMTCkgewogICAgICAgICAgICAgICBjYXRjaF9JbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICAvKgpAQCAtOTYwLDcgKzk3MCw3IEBACiAjZW5kaWYKIAogICAgIC8qIEJ1aWxkIHRoZSBkZWNvZGVyIG9iamVjdCAqLwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoYnVmZmVyLCAicmVhZGFibGUiLCBOVUxMKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfcmVhZGFibGUsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICByID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CkBAIC05ODUsNyArOTk1LDcgQEAKICAgICB9CiAKICAgICAvKiBCdWlsZCB0aGUgZW5jb2RlciBvYmplY3QgKi8KLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGJ1ZmZlciwgIndyaXRhYmxlIiwgTlVMTCk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChidWZmZXIsICZQeUlkX3dyaXRhYmxlLCBOVUxMKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgciA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtMTAwMiw3ICsxMDEyLDcgQEAKICAgICAgICAgY2kgPSBfUHlDb2RlY19Mb29rdXAoZW5jb2RpbmcpOwogICAgICAgICBpZiAoY2kgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2ksICJuYW1lIik7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2ksICZQeUlkX25hbWUpOwogICAgICAgICBQeV9ERUNSRUYoY2kpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKQEAgLTEwMjksNyArMTAzOSw3IEBACiAgICAgaWYgKFB5X1RZUEUoYnVmZmVyKSA9PSAmUHlCdWZmZXJlZFJlYWRlcl9UeXBlIHx8CiAgICAgICAgIFB5X1RZUEUoYnVmZmVyKSA9PSAmUHlCdWZmZXJlZFdyaXRlcl9UeXBlIHx8CiAgICAgICAgIFB5X1RZUEUoYnVmZmVyKSA9PSAmUHlCdWZmZXJlZFJhbmRvbV9UeXBlKSB7Ci0gICAgICAgIHJhdyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoYnVmZmVyLCAicmF3Iik7CisgICAgICAgIHJhdyA9IF9QeU9iamVjdF9HZXRBdHRySWQoYnVmZmVyLCAmUHlJZF9yYXcpOwogICAgICAgICAvKiBDYWNoZSB0aGUgcmF3IEZpbGVJTyBvYmplY3QgdG8gc3BlZWQgdXAgJ2Nsb3NlZCcgY2hlY2tzICovCiAgICAgICAgIGlmIChyYXcgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQpAQCAtMTA0Myw3ICsxMDUzLDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihyYXcpOwogICAgIH0KIAotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoYnVmZmVyLCAic2Vla2FibGUiLCBOVUxMKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfc2Vla2FibGUsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICByID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CkBAIC0xMDUyLDcgKzEwNjIsNyBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIHNlbGYtPnNlZWthYmxlID0gc2VsZi0+dGVsbGluZyA9IHI7CiAKLSAgICBzZWxmLT5oYXNfcmVhZDEgPSBQeU9iamVjdF9IYXNBdHRyU3RyaW5nKGJ1ZmZlciwgInJlYWQxIik7CisgICAgc2VsZi0+aGFzX3JlYWQxID0gX1B5T2JqZWN0X0hhc0F0dHJJZChidWZmZXIsICZQeUlkX3JlYWQxKTsKIAogICAgIHNlbGYtPmVuY29kaW5nX3N0YXJ0X29mX3N0cmVhbSA9IDA7CiAgICAgaWYgKHNlbGYtPnNlZWthYmxlICYmIHNlbGYtPmVuY29kZXIpIHsKQEAgLTEyMTgsMTggKzEyMjgsNiBAQAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVB5X0xPQ0FMX0lOTElORShjb25zdCBQeV9VTklDT0RFICopCi1maW5kY2hhcihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFB5X1VOSUNPREUgY2gpCi17Ci0gICAgLyogbGlrZSB3Y3NjaHIsIGJ1dCBkb2Vzbid0IHN0b3AgYXQgTlVMTCBjaGFyYWN0ZXJzICovCi0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgaWYgKCpzID09IGNoKQotICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgIHMrKzsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KIC8qIEZsdXNoIHRoZSBpbnRlcm5hbCB3cml0ZSBidWZmZXIuIFRoaXMgZG9lc24ndCBleHBsaWNpdGx5IGZsdXNoIHRoZQogICAgdW5kZXJseWluZyBidWZmZXJlZCBvYmplY3QsIHRob3VnaC4gKi8KIHN0YXRpYyBpbnQKQEAgLTEyNzQsNiArMTI3Miw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodGV4dCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCiAgICAgaWYgKHNlbGYtPmVuY29kZXIgPT0gTlVMTCkKQEAgLTEyODEsMTYgKzEyODIsMTUgQEAKIAogICAgIFB5X0lOQ1JFRih0ZXh0KTsKIAotICAgIHRleHRsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZSh0ZXh0KTsKKyAgICB0ZXh0bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGV4dCk7CiAKICAgICBpZiAoKHNlbGYtPndyaXRldHJhbnNsYXRlICYmIHNlbGYtPndyaXRlbmwgIT0gTlVMTCkgfHwgc2VsZi0+bGluZV9idWZmZXJpbmcpCi0gICAgICAgIGlmIChmaW5kY2hhcihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwgJ1xuJykpCisgICAgICAgIGlmIChQeVVuaWNvZGVfRmluZENoYXIodGV4dCwgJ1xuJywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodGV4dCksIDEpICE9IC0xKQogICAgICAgICAgICAgaGFzbGYgPSAxOwogCiAgICAgaWYgKGhhc2xmICYmIHNlbGYtPndyaXRldHJhbnNsYXRlICYmIHNlbGYtPndyaXRlbmwgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbmV3dGV4dCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICB0ZXh0LCAicmVwbGFjZSIsICJzcyIsICJcbiIsIHNlbGYtPndyaXRlbmwpOworICAgICAgICBQeU9iamVjdCAqbmV3dGV4dCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICB0ZXh0LCAmUHlJZF9yZXBsYWNlLCAic3MiLCAiXG4iLCBzZWxmLT53cml0ZW5sKTsKICAgICAgICAgUHlfREVDUkVGKHRleHQpOwogICAgICAgICBpZiAobmV3dGV4dCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzAxLDggKzEzMDEsNyBAQAogICAgICAgICBuZWVkZmx1c2ggPSAxOwogICAgIGVsc2UgaWYgKHNlbGYtPmxpbmVfYnVmZmVyaW5nICYmCiAgICAgICAgIChoYXNsZiB8fAotICAgICAgICAgZmluZGNoYXIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksICdccicpKSkKKyAgICAgICAgIFB5VW5pY29kZV9GaW5kQ2hhcih0ZXh0LCAnXHInLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0ZXh0KSwgMSkgIT0gLTEpKQogICAgICAgICBuZWVkZmx1c2ggPSAxOwogCiAgICAgLyogWFhYIFdoYXQgaWYgd2Ugd2VyZSBqdXN0IHJlYWRpbmc/ICovCkBAIC0xMzQ2LDcgKzEzNDUsNyBAQAogICAgIFB5X0NMRUFSKHNlbGYtPnNuYXBzaG90KTsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVyKSB7Ci0gICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInJlc2V0IiwgTlVMTCk7CisgICAgICAgIHJldCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+ZGVjb2RlciwgJlB5SWRfcmVzZXQsIE5VTEwpOwogICAgICAgICBpZiAocmV0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfREVDUkVGKHJldCk7CkBAIC0xMzc0LDcgKzEzNzMsOCBAQAogICAgIGlmIChzZWxmLT5kZWNvZGVkX2NoYXJzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKLSAgICBhdmFpbCA9IChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZi0+ZGVjb2RlZF9jaGFycykKKyAgICAvKiBkZWNvZGVkX2NoYXJzIGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5Ii4gKi8KKyAgICBhdmFpbCA9IChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmLT5kZWNvZGVkX2NoYXJzKQogICAgICAgICAgICAgIC0gc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkKTsKIAogICAgIGFzc2VydChhdmFpbCA+PSAwKTsKQEAgLTEzODMsOSArMTM4Myw5IEBACiAgICAgICAgIG4gPSBhdmFpbDsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVkX2NoYXJzX3VzZWQgPiAwIHx8IG4gPCBhdmFpbCkgewotICAgICAgICBjaGFycyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYtPmRlY29kZWRfY2hhcnMpCi0gICAgICAgICAgICArIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCwgbik7CisgICAgICAgIGNoYXJzID0gUHlVbmljb2RlX1N1YnN0cmluZyhzZWxmLT5kZWNvZGVkX2NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkICsgbik7CiAgICAgICAgIGlmIChjaGFycyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTQwMSwxMiArMTQwMSwxMyBAQAogLyogUmVhZCBhbmQgZGVjb2RlIHRoZSBuZXh0IGNodW5rIG9mIGRhdGEgZnJvbSB0aGUgQnVmZmVyZWRSZWFkZXIuCiAgKi8KIHN0YXRpYyBpbnQKLXRleHRpb3dyYXBwZXJfcmVhZF9jaHVuayh0ZXh0aW8gKnNlbGYpCit0ZXh0aW93cmFwcGVyX3JlYWRfY2h1bmsodGV4dGlvICpzZWxmLCBQeV9zc2l6ZV90IHNpemVfaGludCkKIHsKICAgICBQeU9iamVjdCAqZGVjX2J1ZmZlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmRlY19mbGFncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmlucHV0X2NodW5rID0gTlVMTDsKICAgICBQeU9iamVjdCAqZGVjb2RlZF9jaGFycywgKmNodW5rX3NpemU7CisgICAgUHlfc3NpemVfdCBuYnl0ZXMsIG5jaGFyczsKICAgICBpbnQgZW9mOwogCiAgICAgLyogVGhlIHJldHVybiB2YWx1ZSBpcyBUcnVlIHVubGVzcyBFT0Ygd2FzIHJlYWNoZWQuICBUaGUgZGVjb2RlZCBzdHJpbmcgaXMKQEAgLTE0NDIsNyArMTQ0MywxMCBAQAogICAgIH0KIAogICAgIC8qIFJlYWQgYSBjaHVuaywgZGVjb2RlIGl0LCBhbmQgcHV0IHRoZSByZXN1bHQgaW4gc2VsZi5fZGVjb2RlZF9jaGFycy4gKi8KLSAgICBjaHVua19zaXplID0gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPmNodW5rX3NpemUpOworICAgIGlmIChzaXplX2hpbnQgPiAwKSB7CisgICAgICAgIHNpemVfaGludCA9IChQeV9zc2l6ZV90KShQeV9NQVgoc2VsZi0+YjJjcmF0aW8sIDEuMCkgKiBzaXplX2hpbnQpOworICAgIH0KKyAgICBjaHVua19zaXplID0gUHlMb25nX0Zyb21Tc2l6ZV90KFB5X01BWChzZWxmLT5jaHVua19zaXplLCBzaXplX2hpbnQpKTsKICAgICBpZiAoY2h1bmtfc2l6ZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgaW5wdXRfY2h1bmsgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5idWZmZXIsCkBAIC0xNDUzLDcgKzE0NTcsOCBAQAogICAgICAgICBnb3RvIGZhaWw7CiAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2soaW5wdXRfY2h1bmspKTsKIAotICAgIGVvZiA9IChQeUJ5dGVzX1NpemUoaW5wdXRfY2h1bmspID09IDApOworICAgIG5ieXRlcyA9IFB5Qnl0ZXNfU2l6ZShpbnB1dF9jaHVuayk7CisgICAgZW9mID0gKG5ieXRlcyA9PSAwKTsKIAogICAgIGlmIChQeV9UWVBFKHNlbGYtPmRlY29kZXIpID09ICZQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSkgewogICAgICAgICBkZWNvZGVkX2NoYXJzID0gX1B5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUoCkBAIC0xNDY3LDggKzE0NzIsMTUgQEAKICAgICAvKiBUT0RPIHNhbml0eSBjaGVjazogaXNpbnN0YW5jZShkZWNvZGVkX2NoYXJzLCB1bmljb2RlKSAqLwogICAgIGlmIChkZWNvZGVkX2NoYXJzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGRlY29kZWRfY2hhcnMpID09IC0xKQorICAgICAgICBnb3RvIGZhaWw7CiAgICAgdGV4dGlvd3JhcHBlcl9zZXRfZGVjb2RlZF9jaGFycyhzZWxmLCBkZWNvZGVkX2NoYXJzKTsKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGRlY29kZWRfY2hhcnMpID4gMCkKKyAgICBuY2hhcnMgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChkZWNvZGVkX2NoYXJzKTsKKyAgICBpZiAobmNoYXJzID4gMCkKKyAgICAgICAgc2VsZi0+YjJjcmF0aW8gPSAoZG91YmxlKSBuYnl0ZXMgLyBuY2hhcnM7CisgICAgZWxzZQorICAgICAgICBzZWxmLT5iMmNyYXRpbyA9IDAuMDsKKyAgICBpZiAobmNoYXJzID4gMCkKICAgICAgICAgZW9mID0gMDsKIAogICAgIGlmIChzZWxmLT50ZWxsaW5nKSB7CkBAIC0xNTE1LDEyICsxNTI3LDE3IEBACiAKICAgICBpZiAobiA8IDApIHsKICAgICAgICAgLyogUmVhZCBldmVyeXRoaW5nICovCi0gICAgICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAicmVhZCIsIE5VTEwpOworICAgICAgICBQeU9iamVjdCAqYnl0ZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfcmVhZCwgTlVMTCk7CiAgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVkOwogICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgZGVjb2RlZCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPmRlY29kZXIsIF9QeUlPX3N0cl9kZWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcywgUHlfVHJ1ZSwgTlVMTCk7CisKKyAgICAgICAgaWYgKFB5X1RZUEUoc2VsZi0+ZGVjb2RlcikgPT0gJlB5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9UeXBlKQorICAgICAgICAgICAgZGVjb2RlZCA9IF9QeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKHNlbGYtPmRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMsIDEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWNvZGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoCisgICAgICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgX1B5SU9fc3RyX2RlY29kZSwgYnl0ZXMsIFB5X1RydWUsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMTU0NiwxMSArMTU2MywxMyBAQAogICAgICAgICByZXN1bHQgPSB0ZXh0aW93cmFwcGVyX2dldF9kZWNvZGVkX2NoYXJzKHNlbGYsIG4pOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIHJlbWFpbmluZyAtPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXN1bHQpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICByZW1haW5pbmcgLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsKIAogICAgICAgICAvKiBLZWVwIHJlYWRpbmcgY2h1bmtzIHVudGlsIHdlIGhhdmUgbiBjaGFyYWN0ZXJzIHRvIHJldHVybiAqLwogICAgICAgICB3aGlsZSAocmVtYWluaW5nID4gMCkgewotICAgICAgICAgICAgcmVzID0gdGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHNlbGYpOworICAgICAgICAgICAgcmVzID0gdGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHNlbGYsIHJlbWFpbmluZyk7CiAgICAgICAgICAgICBpZiAocmVzIDwgMCkgewogICAgICAgICAgICAgICAgIC8qIE5PVEU6IFB5RXJyX1NldEZyb21FcnJubygpIGNhbGxzIFB5RXJyX0NoZWNrU2lnbmFscygpCiAgICAgICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC0xNTY2LDEzICsxNTg1LDE0IEBACiAgICAgICAgICAgICAgICAgaWYgKGNodW5rcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChjaHVua3MsIHJlc3VsdCkgPCAwKQorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCkgPiAwICYmCisgICAgICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChjaHVua3MsIHJlc3VsdCkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmVzdWx0ID0gdGV4dGlvd3JhcHBlcl9nZXRfZGVjb2RlZF9jaGFycyhzZWxmLCByZW1haW5pbmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIHJlbWFpbmluZyAtPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KTsKKyAgICAgICAgICAgIHJlbWFpbmluZyAtPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChjaHVua3MgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIFB5TGlzdF9BcHBlbmQoY2h1bmtzLCByZXN1bHQpIDwgMCkKQEAgLTE1OTIsMzYgKzE2MTIsMzkgQEAKIH0KIAogCi0vKiBOT1RFOiBgZW5kYCBtdXN0IHBvaW50IHRvIHRoZSByZWFsIGVuZCBvZiB0aGUgUHlfVU5JQ09ERSBzdG9yYWdlLAorLyogTk9URTogYGVuZGAgbXVzdCBwb2ludCB0byB0aGUgcmVhbCBlbmQgb2YgdGhlIFB5X1VDUzQgc3RvcmFnZSwKICAgIHRoYXQgaXMgdG8gdGhlIE5VTCBjaGFyYWN0ZXIuIE90aGVyd2lzZSB0aGUgZnVuY3Rpb24gd2lsbCBwcm9kdWNlCiAgICBpbmNvcnJlY3QgcmVzdWx0cy4gKi8KLXN0YXRpYyBQeV9VTklDT0RFICoKLWZpbmRfY29udHJvbF9jaGFyKFB5X1VOSUNPREUgKnN0YXJ0LCBQeV9VTklDT0RFICplbmQsIFB5X1VOSUNPREUgY2gpCitzdGF0aWMgY2hhciAqCitmaW5kX2NvbnRyb2xfY2hhcihpbnQga2luZCwgY2hhciAqcywgY2hhciAqZW5kLCBQeV9VQ1M0IGNoKQogewotICAgIFB5X1VOSUNPREUgKnMgPSBzdGFydDsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBhc3NlcnQoY2ggPCAyNTYpOworICAgICAgICByZXR1cm4gKGNoYXIgKikgbWVtY2hyKCh2b2lkICopIHMsIChjaGFyKSBjaCwgZW5kIC0gcyk7CisgICAgfQogICAgIGZvciAoOzspIHsKLSAgICAgICAgd2hpbGUgKCpzID4gY2gpCi0gICAgICAgICAgICBzKys7Ci0gICAgICAgIGlmICgqcyA9PSBjaCkKKyAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHMsIDApID4gY2gpCisgICAgICAgICAgICBzICs9IGtpbmQ7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzLCAwKSA9PSBjaCkKICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICBpZiAocyA9PSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcysrOworICAgICAgICBzICs9IGtpbmQ7CiAgICAgfQogfQogCiBQeV9zc2l6ZV90CiBfUHlJT19maW5kX2xpbmVfZW5kaW5nKAogICAgIGludCB0cmFuc2xhdGVkLCBpbnQgdW5pdmVyc2FsLCBQeU9iamVjdCAqcmVhZG5sLAotICAgIFB5X1VOSUNPREUgKnN0YXJ0LCBQeV9VTklDT0RFICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorICAgIGludCBraW5kLCBjaGFyICpzdGFydCwgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIHsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IGVuZCAtIHN0YXJ0OworICAgIFB5X3NzaXplX3QgbGVuID0gKChjaGFyKillbmQgLSAoY2hhciopc3RhcnQpL2tpbmQ7CiAKICAgICBpZiAodHJhbnNsYXRlZCkgewogICAgICAgICAvKiBOZXdsaW5lcyBhcmUgYWxyZWFkeSB0cmFuc2xhdGVkLCBvbmx5IHNlYXJjaCBmb3IgXG4gKi8KLSAgICAgICAgUHlfVU5JQ09ERSAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoc3RhcnQsIGVuZCwgJ1xuJyk7CisgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsICdcbicpOwogICAgICAgICBpZiAocG9zICE9IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gcG9zIC0gc3RhcnQgKyAxOworICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgKmNvbnN1bWVkID0gbGVuOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTYzMSw2MyArMTY1NCw2NiBAQAogICAgICAgICAvKiBVbml2ZXJzYWwgbmV3bGluZSBzZWFyY2guIEZpbmQgYW55IG9mIFxyLCBcclxuLCBcbgogICAgICAgICAgKiBUaGUgZGVjb2RlciBlbnN1cmVzIHRoYXQgXHJcbiBhcmUgbm90IHNwbGl0IGluIHR3byBwaWVjZXMKICAgICAgICAgICovCi0gICAgICAgIFB5X1VOSUNPREUgKnMgPSBzdGFydDsKKyAgICAgICAgY2hhciAqcyA9IHN0YXJ0OwogICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoOworICAgICAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3Igbm9uLWNvbnRyb2wgY2hhcnMuIFRoZSBsb29wIGFsd2F5cyBlbmRzCi0gICAgICAgICAgICAgICBzaW5jZSB0aGUgUHlfVU5JQ09ERSBzdG9yYWdlIGlzIE5VTC10ZXJtaW5hdGVkLiAqLwotICAgICAgICAgICAgd2hpbGUgKCpzID4gJ1xyJykKLSAgICAgICAgICAgICAgICBzKys7CisgICAgICAgICAgICAgICBzaW5jZSB0aGUgVW5pY29kZSBzdHJpbmcgaXMgTlVMLXRlcm1pbmF0ZWQuICovCisgICAgICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgcywgMCkgPiAnXHInKQorICAgICAgICAgICAgICAgIHMgKz0ga2luZDsKICAgICAgICAgICAgIGlmIChzID49IGVuZCkgewogICAgICAgICAgICAgICAgICpjb25zdW1lZCA9IGxlbjsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaCA9ICpzKys7CisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIHMsIDApOworICAgICAgICAgICAgcyArPSBraW5kOwogICAgICAgICAgICAgaWYgKGNoID09ICdcbicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHMgLSBzdGFydDsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHMgLSBzdGFydCkva2luZDsKICAgICAgICAgICAgIGlmIChjaCA9PSAnXHInKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCpzID09ICdcbicpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzIC0gc3RhcnQgKyAxOworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzLCAwKSA9PSAnXG4nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHMgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyAtIHN0YXJ0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHMgLSBzdGFydCkva2luZDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogTm9uLXVuaXZlcnNhbCBtb2RlLiAqLwotICAgICAgICBQeV9zc2l6ZV90IHJlYWRubF9sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVhZG5sKTsKLSAgICAgICAgUHlfVU5JQ09ERSAqbmwgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZWFkbmwpOworICAgICAgICBQeV9zc2l6ZV90IHJlYWRubF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZWFkbmwpOworICAgICAgICBjaGFyICpubCA9IFB5VW5pY29kZV9EQVRBKHJlYWRubCk7CisgICAgICAgIC8qIEFzc3VtZSB0aGF0IHJlYWRubCBpcyBhbiBBU0NJSSBjaGFyYWN0ZXIuICovCisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZWFkbmwpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKICAgICAgICAgaWYgKHJlYWRubF9sZW4gPT0gMSkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoc3RhcnQsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiBwb3MgLSBzdGFydCArIDE7CisgICAgICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgICAgICAqY29uc3VtZWQgPSBsZW47CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpzID0gc3RhcnQ7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICplID0gZW5kIC0gcmVhZG5sX2xlbiArIDE7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpwb3M7CisgICAgICAgICAgICBjaGFyICpzID0gc3RhcnQ7CisgICAgICAgICAgICBjaGFyICplID0gZW5kIC0gKHJlYWRubF9sZW4gLSAxKSpraW5kOworICAgICAgICAgICAgY2hhciAqcG9zOwogICAgICAgICAgICAgaWYgKGUgPCBzKQogICAgICAgICAgICAgICAgIGUgPSBzOwogICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKHMsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHMsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gTlVMTCB8fCBwb3MgPj0gZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IHJlYWRubF9sZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICBpZiAocG9zW2ldICE9IG5sW2ldKQorICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgcG9zLCBpKSAhPSBubFtpXSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoaSA9PSByZWFkbmxfbGVuKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zIC0gc3RhcnQgKyByZWFkbmxfbGVuOwotICAgICAgICAgICAgICAgIHMgPSBwb3MgKyAxOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHBvcyAtIHN0YXJ0KS9raW5kICsgcmVhZG5sX2xlbjsKKyAgICAgICAgICAgICAgICBzID0gcG9zICsga2luZDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGUsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgZSwgZW5kLCBubFswXSk7CiAgICAgICAgICAgICBpZiAocG9zID09IE5VTEwpCiAgICAgICAgICAgICAgICAgKmNvbnN1bWVkID0gbGVuOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICpjb25zdW1lZCA9IHBvcyAtIHN0YXJ0OworICAgICAgICAgICAgICAgICpjb25zdW1lZCA9IChwb3MgLSBzdGFydCkva2luZDsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KQEAgLTE3MDgsMTUgKzE3MzQsMTYgQEAKICAgICBjaHVua2VkID0gMDsKIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnB0cjsKKyAgICAgICAgY2hhciAqcHRyOwogICAgICAgICBQeV9zc2l6ZV90IGxpbmVfbGVuOworICAgICAgICBpbnQga2luZDsKICAgICAgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IDA7CiAKICAgICAgICAgLyogRmlyc3QsIGdldCBzb21lIGRhdGEgaWYgbmVjZXNzYXJ5ICovCiAgICAgICAgIHJlcyA9IDE7CiAgICAgICAgIHdoaWxlICghc2VsZi0+ZGVjb2RlZF9jaGFycyB8fAotICAgICAgICAgICAgICAgIVB5VW5pY29kZV9HRVRfU0laRShzZWxmLT5kZWNvZGVkX2NoYXJzKSkgewotICAgICAgICAgICAgcmVzID0gdGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHNlbGYpOworICAgICAgICAgICAgICAgIVB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYtPmRlY29kZWRfY2hhcnMpKSB7CisgICAgICAgICAgICByZXMgPSB0ZXh0aW93cmFwcGVyX3JlYWRfY2h1bmsoc2VsZiwgMCk7CiAgICAgICAgICAgICBpZiAocmVzIDwgMCkgewogICAgICAgICAgICAgICAgIC8qIE5PVEU6IFB5RXJyX1NldEZyb21FcnJubygpIGNhbGxzIFB5RXJyX0NoZWNrU2lnbmFscygpCiAgICAgICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC0xNzQ2LDE4ICsxNzczLDI0IEBACiAgICAgICAgICAgICBhc3NlcnQoc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkID09IDApOwogICAgICAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Db25jYXQocmVtYWluaW5nLCBzZWxmLT5kZWNvZGVkX2NoYXJzKTsKICAgICAgICAgICAgIHN0YXJ0ID0gMDsKLSAgICAgICAgICAgIG9mZnNldF90b19idWZmZXIgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVtYWluaW5nKTsKKyAgICAgICAgICAgIG9mZnNldF90b19idWZmZXIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZW1haW5pbmcpOwogICAgICAgICAgICAgUHlfQ0xFQVIocmVtYWluaW5nKTsKICAgICAgICAgICAgIGlmIChsaW5lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobGluZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCi0gICAgICAgIHB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKGxpbmUpOwotICAgICAgICBsaW5lX2xlbiA9IFB5VW5pY29kZV9HRVRfU0laRShsaW5lKTsKKyAgICAgICAgcHRyID0gUHlVbmljb2RlX0RBVEEobGluZSk7CisgICAgICAgIGxpbmVfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZSk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChsaW5lKTsKIAogICAgICAgICBlbmRwb3MgPSBfUHlJT19maW5kX2xpbmVfZW5kaW5nKAogICAgICAgICAgICAgc2VsZi0+cmVhZHRyYW5zbGF0ZSwgc2VsZi0+cmVhZHVuaXZlcnNhbCwgc2VsZi0+cmVhZG5sLAotICAgICAgICAgICAgcHRyICsgc3RhcnQsIHB0ciArIGxpbmVfbGVuLCAmY29uc3VtZWQpOworICAgICAgICAgICAga2luZCwKKyAgICAgICAgICAgIHB0ciArIGtpbmQgKiBzdGFydCwKKyAgICAgICAgICAgIHB0ciArIGtpbmQgKiBsaW5lX2xlbiwKKyAgICAgICAgICAgICZjb25zdW1lZCk7CiAgICAgICAgIGlmIChlbmRwb3MgPj0gMCkgewogICAgICAgICAgICAgZW5kcG9zICs9IHN0YXJ0OwogICAgICAgICAgICAgaWYgKGxpbWl0ID49IDAgJiYgKGVuZHBvcyAtIHN0YXJ0KSArIGNodW5rZWQgPj0gbGltaXQpCkBAIC0xNzgxLDIxICsxODE0LDIwIEBACiAgICAgICAgICAgICAgICAgaWYgKGNodW5rcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwdHIgKyBzdGFydCwgZW5kcG9zIC0gc3RhcnQpOworICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9TdWJzdHJpbmcobGluZSwgc3RhcnQsIGVuZHBvcyk7CiAgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChjaHVua3MsIHMpIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2h1bmtlZCArPSBQeVVuaWNvZGVfR0VUX1NJWkUocyk7CisgICAgICAgICAgICBjaHVua2VkICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMpOwogICAgICAgICAgICAgUHlfREVDUkVGKHMpOwogICAgICAgICB9CiAgICAgICAgIC8qIFRoZXJlIG1heSBiZSBzb21lIHJlbWFpbmluZyBieXRlcyB3ZSdsbCBoYXZlIHRvIHByZXBlbmQgdG8gdGhlCiAgICAgICAgICAgIG5leHQgY2h1bmsgb2YgZGF0YSAqLwogICAgICAgICBpZiAoZW5kcG9zIDwgbGluZV9sZW4pIHsKLSAgICAgICAgICAgIHJlbWFpbmluZyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICAgICAgcHRyICsgZW5kcG9zLCBsaW5lX2xlbiAtIGVuZHBvcyk7CisgICAgICAgICAgICByZW1haW5pbmcgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGxpbmUsIGVuZHBvcywgbGluZV9sZW4pOwogICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KQEAgLTE4MDcsMTkgKzE4MzksMTIgQEAKICAgICBpZiAobGluZSAhPSBOVUxMKSB7CiAgICAgICAgIC8qIE91ciBsaW5lIGVuZHMgaW4gdGhlIGN1cnJlbnQgYnVmZmVyICovCiAgICAgICAgIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCA9IGVuZHBvcyAtIG9mZnNldF90b19idWZmZXI7Ci0gICAgICAgIGlmIChzdGFydCA+IDAgfHwgZW5kcG9zIDwgUHlVbmljb2RlX0dFVF9TSVpFKGxpbmUpKSB7Ci0gICAgICAgICAgICBpZiAoc3RhcnQgPT0gMCAmJiBQeV9SRUZDTlQobGluZSkgPT0gMSkgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZsaW5lLCBlbmRwb3MpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUobGluZSkgKyBzdGFydCwgZW5kcG9zIC0gc3RhcnQpOwotICAgICAgICAgICAgICAgIFB5X0NMRUFSKGxpbmUpOwotICAgICAgICAgICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgbGluZSA9IHM7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChzdGFydCA+IDAgfHwgZW5kcG9zIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZSkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzID0gUHlVbmljb2RlX1N1YnN0cmluZyhsaW5lLCBzdGFydCwgZW5kcG9zKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKGxpbmUpOworICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgbGluZSA9IHM7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHJlbWFpbmluZyAhPSBOVUxMKSB7CkBAIC0xODMzLDE2ICsxODU4LDIwIEBACiAgICAgICAgIFB5X0NMRUFSKHJlbWFpbmluZyk7CiAgICAgfQogICAgIGlmIChjaHVua3MgIT0gTlVMTCkgewotICAgICAgICBpZiAobGluZSAhPSBOVUxMICYmIFB5TGlzdF9BcHBlbmQoY2h1bmtzLCBsaW5lKSA8IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBQeV9DTEVBUihsaW5lKTsKKyAgICAgICAgaWYgKGxpbmUgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY2h1bmtzLCBsaW5lKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKKyAgICAgICAgfQogICAgICAgICBsaW5lID0gUHlVbmljb2RlX0pvaW4oX1B5SU9fZW1wdHlfc3RyLCBjaHVua3MpOwogICAgICAgICBpZiAobGluZSA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgUHlfREVDUkVGKGNodW5rcyk7CisgICAgICAgIFB5X0NMRUFSKGNodW5rcyk7CiAgICAgfQotICAgIGlmIChsaW5lID09IE5VTEwpCi0gICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgaWYgKGxpbmUgPT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoX1B5SU9fZW1wdHlfc3RyKTsKKyAgICAgICAgbGluZSA9IF9QeUlPX2VtcHR5X3N0cjsKKyAgICB9CiAKICAgICByZXR1cm4gbGluZTsKIApAQCAtMTk2NSw4ICsxOTk0LDggQEAKICAgICBpZiAoY29va2llLT5zdGFydF9wb3MgPT0gMCAmJiBjb29raWUtPmRlY19mbGFncyA9PSAwKQogICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLCBfUHlJT19zdHJfcmVzZXQsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLCAic2V0c3RhdGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoKHlpKSkiLCAiIiwgY29va2llLT5kZWNfZmxhZ3MpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX3NldHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoKHlpKSkiLCAiIiwgY29va2llLT5kZWNfZmxhZ3MpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMjAzMCwxMyArMjA1OSwxMiBAQAogICAgICAgICAgKiBzeW5jIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciB3aXRoIHRoZSBjdXJyZW50IHBvc2l0aW9uLgogICAgICAgICAgKi8KICAgICAgICAgUHlfREVDUkVGKGNvb2tpZU9iaik7Ci0gICAgICAgIGNvb2tpZU9iaiA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgInRlbGwiLCBOVUxMKTsKKyAgICAgICAgY29va2llT2JqID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF90ZWxsLCBOVUxMKTsKICAgICAgICAgaWYgKGNvb2tpZU9iaiA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgIH0KICAgICBlbHNlIGlmICh3aGVuY2UgPT0gMikgewogICAgICAgICAvKiBzZWVrIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlICovCi0KICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGNvb2tpZU9iaiwgX1B5SU9femVybywgUHlfRVEpOwogICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTIwNDYsNyArMjA3NCw3IEBACiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KIAotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJmbHVzaCIsIE5VTEwpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTIwNTQsMTMgKzIwODIsMTMgQEAKICAgICAgICAgdGV4dGlvd3JhcHBlcl9zZXRfZGVjb2RlZF9jaGFycyhzZWxmLCBOVUxMKTsKICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+c25hcHNob3QpOwogICAgICAgICBpZiAoc2VsZi0+ZGVjb2RlcikgewotICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLCAicmVzZXQiLCBOVUxMKTsKKyAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+ZGVjb2RlciwgJlB5SWRfcmVzZXQsIE5VTEwpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICB9CiAKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJzZWVrIiwgImlpIiwgMCwgMik7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9zZWVrLCAiaWkiLCAwLCAyKTsKICAgICAgICAgUHlfWERFQ1JFRihjb29raWVPYmopOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KQEAgLTIxMTMsOCArMjE0MSw4IEBACiAKICAgICBpZiAoY29va2llLmNoYXJzX3RvX3NraXApIHsKICAgICAgICAgLyogSnVzdCBsaWtlIF9yZWFkX2NodW5rLCBmZWVkIHRoZSBkZWNvZGVyIGFuZCBzYXZlIGEgc25hcHNob3QuICovCi0gICAgICAgIFB5T2JqZWN0ICppbnB1dF9jaHVuayA9IFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICBzZWxmLT5idWZmZXIsICJyZWFkIiwgImkiLCBjb29raWUuYnl0ZXNfdG9fZmVlZCk7CisgICAgICAgIFB5T2JqZWN0ICppbnB1dF9jaHVuayA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBzZWxmLT5idWZmZXIsICZQeUlkX3JlYWQsICJpIiwgY29va2llLmJ5dGVzX3RvX2ZlZWQpOwogICAgICAgICBQeU9iamVjdCAqZGVjb2RlZDsKIAogICAgICAgICBpZiAoaW5wdXRfY2h1bmsgPT0gTlVMTCkKQEAgLTIxMjgsMTYgKzIxNTYsMjAgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQogCi0gICAgICAgIGRlY29kZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmRlY29kZXIsICJkZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT2kiLCBpbnB1dF9jaHVuaywgKGludCljb29raWUubmVlZF9lb2YpOworICAgICAgICBkZWNvZGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLCAmUHlJZF9kZWNvZGUsCisgICAgICAgICAgICAiT2kiLCBpbnB1dF9jaHVuaywgKGludCljb29raWUubmVlZF9lb2YpOwogCiAgICAgICAgIGlmIChkZWNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZGVjb2RlZCkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQogCiAgICAgICAgIHRleHRpb3dyYXBwZXJfc2V0X2RlY29kZWRfY2hhcnMoc2VsZiwgZGVjb2RlZCk7CiAKICAgICAgICAgLyogU2tpcCBjaGFyc190b19za2lwIG9mIHRoZSBkZWNvZGVkIGNoYXJhY3RlcnMuICovCi0gICAgICAgIGlmIChQeVVuaWNvZGVfR2V0U2l6ZShzZWxmLT5kZWNvZGVkX2NoYXJzKSA8IGNvb2tpZS5jaGFyc190b19za2lwKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR2V0TGVuZ3RoKHNlbGYtPmRlY29kZWRfY2hhcnMpIDwgY29va2llLmNoYXJzX3RvX3NraXApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiY2FuJ3QgcmVzdG9yZSBsb2dpY2FsIGZpbGUgcG9zaXRpb24iKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQpAQCAtMjE2OSw4ICsyMjAxLDEyIEBACiAgICAgY29va2llX3R5cGUgY29va2llID0gezAsMCwwLDAsMH07CiAgICAgUHlPYmplY3QgKm5leHRfaW5wdXQ7CiAgICAgUHlfc3NpemVfdCBjaGFyc190b19za2lwLCBjaGFyc19kZWNvZGVkOworICAgIFB5X3NzaXplX3Qgc2tpcF9ieXRlcywgc2tpcF9iYWNrOwogICAgIFB5T2JqZWN0ICpzYXZlZF9zdGF0ZSA9IE5VTEw7CiAgICAgY2hhciAqaW5wdXQsICppbnB1dF9lbmQ7CisgICAgY2hhciAqZGVjX2J1ZmZlcjsKKyAgICBQeV9zc2l6ZV90IGRlY19idWZmZXJfbGVuOworICAgIGludCBkZWNfZmxhZ3M7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CkBAIC0yMTg3LDE3ICsyMjIzLDE3IEBACiAKICAgICBpZiAoX3RleHRpb3dyYXBwZXJfd3JpdGVmbHVzaChzZWxmKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgImZsdXNoIiwgTlVMTCk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgUHlfREVDUkVGKHJlcyk7CiAKLSAgICBwb3NvYmogPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgInRlbGwiLCBOVUxMKTsKKyAgICBwb3NvYmogPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfdGVsbCwgTlVMTCk7CiAgICAgaWYgKHBvc29iaiA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlciA9PSBOVUxMIHx8IHNlbGYtPnNuYXBzaG90ID09IE5VTEwpIHsKLSAgICAgICAgYXNzZXJ0IChzZWxmLT5kZWNvZGVkX2NoYXJzID09IE5VTEwgfHwgUHlVbmljb2RlX0dldFNpemUoc2VsZi0+ZGVjb2RlZF9jaGFycykgPT0gMCk7CisgICAgICAgIGFzc2VydCAoc2VsZi0+ZGVjb2RlZF9jaGFycyA9PSBOVUxMIHx8IFB5VW5pY29kZV9HZXRMZW5ndGgoc2VsZi0+ZGVjb2RlZF9jaGFycykgPT0gMCk7CiAgICAgICAgIHJldHVybiBwb3NvYmo7CiAgICAgfQogCkBAIC0yMjA2LDYgKzIyNDIsNyBAQAogI2Vsc2UKICAgICBjb29raWUuc3RhcnRfcG9zID0gUHlMb25nX0FzTG9uZyhwb3NvYmopOwogI2VuZGlmCisgICAgUHlfREVDUkVGKHBvc29iaik7CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIGdvdG8gZmFpbDsKIApAQCAtMjIyMCw1NyArMjI1Nyw5OSBAQAogICAgIC8qIEhvdyBtYW55IGRlY29kZWQgY2hhcmFjdGVycyBoYXZlIGJlZW4gdXNlZCB1cCBzaW5jZSB0aGUgc25hcHNob3Q/ICovCiAgICAgaWYgKHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCA9PSAwKSAgewogICAgICAgICAvKiBXZSBoYXZlbid0IG1vdmVkIGZyb20gdGhlIHNuYXBzaG90IHBvaW50LiAqLwotICAgICAgICBQeV9ERUNSRUYocG9zb2JqKTsKICAgICAgICAgcmV0dXJuIHRleHRpb3dyYXBwZXJfYnVpbGRfY29va2llKCZjb29raWUpOwogICAgIH0KIAogICAgIGNoYXJzX3RvX3NraXAgPSBzZWxmLT5kZWNvZGVkX2NoYXJzX3VzZWQ7CiAKLSAgICAvKiBTdGFydGluZyBmcm9tIHRoZSBzbmFwc2hvdCBwb3NpdGlvbiwgd2Ugd2lsbCB3YWxrIHRoZSBkZWNvZGVyCi0gICAgICogZm9yd2FyZCB1bnRpbCBpdCBnaXZlcyB1cyBlbm91Z2ggZGVjb2RlZCBjaGFyYWN0ZXJzLgotICAgICAqLworICAgIC8qIERlY29kZXIgc3RhdGUgd2lsbCBiZSByZXN0b3JlZCBhdCB0aGUgZW5kICovCiAgICAgc2F2ZWRfc3RhdGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5SU9fc3RyX2dldHN0YXRlLCBOVUxMKTsKICAgICBpZiAoc2F2ZWRfc3RhdGUgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgLyogTm90ZSBvdXIgaW5pdGlhbCBzdGFydCBwb2ludC4gKi8KLSAgICBpZiAoX3RleHRpb3dyYXBwZXJfZGVjb2Rlcl9zZXRzdGF0ZShzZWxmLCAmY29va2llKSA8IDApCi0gICAgICAgIGdvdG8gZmFpbDsKKyNkZWZpbmUgREVDT0RFUl9HRVRTVEFURSgpIGRvIHsgXAorICAgICAgICBQeU9iamVjdCAqX3N0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwgXAorICAgICAgICAgICAgX1B5SU9fc3RyX2dldHN0YXRlLCBOVUxMKTsgXAorICAgICAgICBpZiAoX3N0YXRlID09IE5VTEwpIFwKKyAgICAgICAgICAgIGdvdG8gZmFpbDsgXAorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKF9zdGF0ZSwgIih5I2kpIiwgJmRlY19idWZmZXIsICZkZWNfYnVmZmVyX2xlbiwgJmRlY19mbGFncykpIHsgXAorICAgICAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKKyAgICAgICAgICAgIGdvdG8gZmFpbDsgXAorICAgICAgICB9IFwKKyAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKKyAgICB9IHdoaWxlICgwKQogCi0gICAgLyogRmVlZCB0aGUgZGVjb2RlciBvbmUgYnl0ZSBhdCBhIHRpbWUuICBBcyB3ZSBnbywgbm90ZSB0aGUKLSAgICAgKiBuZWFyZXN0ICJzYWZlIHN0YXJ0IHBvaW50IiBiZWZvcmUgdGhlIGN1cnJlbnQgbG9jYXRpb24KLSAgICAgKiAoYSBwb2ludCB3aGVyZSB0aGUgZGVjb2RlciBoYXMgbm90aGluZyBidWZmZXJlZCwgc28gc2VlaygpCisgICAgLyogVE9ETzogcmVwbGFjZSBhc3NlcnQgd2l0aCBleGNlcHRpb24gKi8KKyNkZWZpbmUgREVDT0RFUl9ERUNPREUoc3RhcnQsIGxlbiwgcmVzKSBkbyB7IFwKKyAgICAgICAgUHlPYmplY3QgKl9kZWNvZGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCggXAorICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgJlB5SWRfZGVjb2RlLCAieSMiLCBzdGFydCwgbGVuKTsgXAorICAgICAgICBpZiAoX2RlY29kZWQgPT0gTlVMTCkgXAorICAgICAgICAgICAgZ290byBmYWlsOyBcCisgICAgICAgIGFzc2VydCAoUHlVbmljb2RlX0NoZWNrKF9kZWNvZGVkKSk7IFwKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoX2RlY29kZWQpOyBcCisgICAgICAgIFB5X0RFQ1JFRihfZGVjb2RlZCk7IFwKKyAgICB9IHdoaWxlICgwKQorCisgICAgLyogRmFzdCBzZWFyY2ggZm9yIGFuIGFjY2VwdGFibGUgc3RhcnQgcG9pbnQsIGNsb3NlIHRvIG91cgorICAgICAgIGN1cnJlbnQgcG9zICovCisgICAgc2tpcF9ieXRlcyA9IChQeV9zc2l6ZV90KSAoc2VsZi0+YjJjcmF0aW8gKiBjaGFyc190b19za2lwKTsKKyAgICBza2lwX2JhY2sgPSAxOworICAgIGFzc2VydChza2lwX2JhY2sgPD0gUHlCeXRlc19HRVRfU0laRShuZXh0X2lucHV0KSk7CisgICAgaW5wdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhuZXh0X2lucHV0KTsKKyAgICB3aGlsZSAoc2tpcF9ieXRlcyA+IDApIHsKKyAgICAgICAgLyogRGVjb2RlIHVwIHRvIHRlbXB0YXRpdmUgc3RhcnQgcG9pbnQgKi8KKyAgICAgICAgaWYgKF90ZXh0aW93cmFwcGVyX2RlY29kZXJfc2V0c3RhdGUoc2VsZiwgJmNvb2tpZSkgPCAwKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBERUNPREVSX0RFQ09ERShpbnB1dCwgc2tpcF9ieXRlcywgY2hhcnNfZGVjb2RlZCk7CisgICAgICAgIGlmIChjaGFyc19kZWNvZGVkIDw9IGNoYXJzX3RvX3NraXApIHsKKyAgICAgICAgICAgIERFQ09ERVJfR0VUU1RBVEUoKTsKKyAgICAgICAgICAgIGlmIChkZWNfYnVmZmVyX2xlbiA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogQmVmb3JlIHBvcyBhbmQgbm8gYnl0ZXMgYnVmZmVyZWQgaW4gZGVjb2RlciA9PiBPSyAqLworICAgICAgICAgICAgICAgIGNvb2tpZS5kZWNfZmxhZ3MgPSBkZWNfZmxhZ3M7CisgICAgICAgICAgICAgICAgY2hhcnNfdG9fc2tpcCAtPSBjaGFyc19kZWNvZGVkOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogU2tpcCBiYWNrIGJ5IGJ1ZmZlcmVkIGFtb3VudCBhbmQgcmVzZXQgaGV1cmlzdGljICovCisgICAgICAgICAgICBza2lwX2J5dGVzIC09IGRlY19idWZmZXJfbGVuOworICAgICAgICAgICAgc2tpcF9iYWNrID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIFdlJ3JlIHRvbyBmYXIgYWhlYWQsIHNraXAgYmFjayBhIGJpdCAqLworICAgICAgICAgICAgc2tpcF9ieXRlcyAtPSBza2lwX2JhY2s7CisgICAgICAgICAgICBza2lwX2JhY2sgKj0gMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc2tpcF9ieXRlcyA8PSAwKSB7CisgICAgICAgIHNraXBfYnl0ZXMgPSAwOworICAgICAgICBpZiAoX3RleHRpb3dyYXBwZXJfZGVjb2Rlcl9zZXRzdGF0ZShzZWxmLCAmY29va2llKSA8IDApCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgLyogTm90ZSBvdXIgaW5pdGlhbCBzdGFydCBwb2ludC4gKi8KKyAgICBjb29raWUuc3RhcnRfcG9zICs9IHNraXBfYnl0ZXM7CisgICAgY29va2llLmNoYXJzX3RvX3NraXAgPSBjaGFyc190b19za2lwOworICAgIGlmIChjaGFyc190b19za2lwID09IDApCisgICAgICAgIGdvdG8gZmluYWxseTsKKworICAgIC8qIFdlIHNob3VsZCBiZSBjbG9zZSB0byB0aGUgZGVzaXJlZCBwb3NpdGlvbi4gIE5vdyBmZWVkIHRoZSBkZWNvZGVyIG9uZQorICAgICAqIGJ5dGUgYXQgYSB0aW1lIHVudGlsIHdlIHJlYWNoIHRoZSBgY2hhcnNfdG9fc2tpcGAgdGFyZ2V0LgorICAgICAqIEFzIHdlIGdvLCBub3RlIHRoZSBuZWFyZXN0ICJzYWZlIHN0YXJ0IHBvaW50IiBiZWZvcmUgdGhlIGN1cnJlbnQKKyAgICAgKiBsb2NhdGlvbiAoYSBwb2ludCB3aGVyZSB0aGUgZGVjb2RlciBoYXMgbm90aGluZyBidWZmZXJlZCwgc28gc2VlaygpCiAgICAgICogY2FuIHNhZmVseSBzdGFydCBmcm9tIHRoZXJlIGFuZCBhZHZhbmNlIHRvIHRoaXMgbG9jYXRpb24pLgogICAgICAqLwogICAgIGNoYXJzX2RlY29kZWQgPSAwOwogICAgIGlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcobmV4dF9pbnB1dCk7CiAgICAgaW5wdXRfZW5kID0gaW5wdXQgKyBQeUJ5dGVzX0dFVF9TSVpFKG5leHRfaW5wdXQpOworICAgIGlucHV0ICs9IHNraXBfYnl0ZXM7CiAgICAgd2hpbGUgKGlucHV0IDwgaW5wdXRfZW5kKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpzdGF0ZTsKLSAgICAgICAgY2hhciAqZGVjX2J1ZmZlcjsKLSAgICAgICAgUHlfc3NpemVfdCBkZWNfYnVmZmVyX2xlbjsKLSAgICAgICAgaW50IGRlY19mbGFnczsKKyAgICAgICAgUHlfc3NpemVfdCBuOwogCi0gICAgICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIHNlbGYtPmRlY29kZXIsICJkZWNvZGUiLCAieSMiLCBpbnB1dCwgMSk7Ci0gICAgICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIGFzc2VydCAoUHlVbmljb2RlX0NoZWNrKGRlY29kZWQpKTsKLSAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBQeVVuaWNvZGVfR0VUX1NJWkUoZGVjb2RlZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKLQorICAgICAgICBERUNPREVSX0RFQ09ERShpbnB1dCwgMSwgbik7CisgICAgICAgIC8qIFdlIGdvdCBuIGNoYXJzIGZvciAxIGJ5dGUgKi8KKyAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBuOwogICAgICAgICBjb29raWUuYnl0ZXNfdG9fZmVlZCArPSAxOwotCi0gICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfZ2V0c3RhdGUsIE5VTEwpOwotICAgICAgICBpZiAoc3RhdGUgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShzdGF0ZSwgIih5I2kpIiwgJmRlY19idWZmZXIsICZkZWNfYnVmZmVyX2xlbiwgJmRlY19mbGFncykpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdGF0ZSk7Ci0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKKyAgICAgICAgREVDT0RFUl9HRVRTVEFURSgpOwogCiAgICAgICAgIGlmIChkZWNfYnVmZmVyX2xlbiA9PSAwICYmIGNoYXJzX2RlY29kZWQgPD0gY2hhcnNfdG9fc2tpcCkgewogICAgICAgICAgICAgLyogRGVjb2RlciBidWZmZXIgaXMgZW1wdHksIHNvIHRoaXMgaXMgYSBzYWZlIHN0YXJ0IHBvaW50LiAqLwpAQCAtMjI4NiwxMiArMjM2NSwxMiBAQAogICAgIH0KICAgICBpZiAoaW5wdXQgPT0gaW5wdXRfZW5kKSB7CiAgICAgICAgIC8qIFdlIGRpZG4ndCBnZXQgZW5vdWdoIGRlY29kZWQgZGF0YTsgc2lnbmFsIEVPRiB0byBnZXQgbW9yZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgImRlY29kZSIsICJ5aSIsICIiLCAvKiBmaW5hbCA9ICovIDEpOworICAgICAgICBQeU9iamVjdCAqZGVjb2RlZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBzZWxmLT5kZWNvZGVyLCAmUHlJZF9kZWNvZGUsICJ5aSIsICIiLCAvKiBmaW5hbCA9ICovIDEpOwogICAgICAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9DaGVjayhkZWNvZGVkKSk7Ci0gICAgICAgIGNoYXJzX2RlY29kZWQgKz0gUHlVbmljb2RlX0dFVF9TSVpFKGRlY29kZWQpOworICAgICAgICBjaGFyc19kZWNvZGVkICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGRlY29kZWQpOwogICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CiAgICAgICAgIGNvb2tpZS5uZWVkX2VvZiA9IDE7CiAKQEAgLTIzMDIsOSArMjM4MSw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBmaW5hbGx5ICovCi0gICAgUHlfWERFQ1JFRihwb3NvYmopOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInNldHN0YXRlIiwgIihPKSIsIHNhdmVkX3N0YXRlKTsKK2ZpbmFsbHk6CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLCAmUHlJZF9zZXRzdGF0ZSwgIihPKSIsIHNhdmVkX3N0YXRlKTsKICAgICBQeV9ERUNSRUYoc2F2ZWRfc3RhdGUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzE0LDEzICsyMzkyLDEyIEBACiAgICAgY29va2llLmNoYXJzX3RvX3NraXAgPSBQeV9TQUZFX0RPV05DQVNUKGNoYXJzX3RvX3NraXAsIFB5X3NzaXplX3QsIGludCk7CiAgICAgcmV0dXJuIHRleHRpb3dyYXBwZXJfYnVpbGRfY29va2llKCZjb29raWUpOwogCi0gIGZhaWw6Ci0gICAgUHlfWERFQ1JFRihwb3NvYmopOworZmFpbDoKICAgICBpZiAoc2F2ZWRfc3RhdGUpIHsKICAgICAgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRyYWNlYmFjazsKICAgICAgICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRyYWNlYmFjayk7CiAKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLCAic2V0c3RhdGUiLCAiKE8pIiwgc2F2ZWRfc3RhdGUpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX3NldHN0YXRlLCAiKE8pIiwgc2F2ZWRfc3RhdGUpOwogICAgICAgICBQeV9ERUNSRUYoc2F2ZWRfc3RhdGUpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzNjAsNyArMjQzNyw3IEBACiAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxfaW8uVGV4dElPV3JhcHBlciIpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbmFtZW9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopIHNlbGYsICJuYW1lIik7CisgICAgbmFtZW9iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopIHNlbGYsICZQeUlkX25hbWUpOwogICAgIGlmIChuYW1lb2JqID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTIzNzYsNyArMjQ1Myw3IEBACiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtb2Rlb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKikgc2VsZiwgIm1vZGUiKTsKKyAgICBtb2Rlb2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKikgc2VsZiwgJlB5SWRfbW9kZSk7CiAgICAgaWYgKG1vZGVvYmogPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMjQwOCwzNSArMjQ4NSwzNSBAQAogdGV4dGlvd3JhcHBlcl9maWxlbm8odGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJmaWxlbm8iLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZpbGVubywgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXh0aW93cmFwcGVyX3NlZWthYmxlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAic2Vla2FibGUiLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX3NlZWthYmxlLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRleHRpb3dyYXBwZXJfcmVhZGFibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJyZWFkYWJsZSIsIE5VTEwpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfcmVhZGFibGUsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGV4dGlvd3JhcHBlcl93cml0YWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgIndyaXRhYmxlIiwgTlVMTCk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF93cml0YWJsZSwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXh0aW93cmFwcGVyX2lzYXR0eSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgImlzYXR0eSIsIE5VTEwpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfaXNhdHR5LCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0NTUsNyArMjUzMiw3IEBACiAgICAgc2VsZi0+dGVsbGluZyA9IHNlbGYtPnNlZWthYmxlOwogICAgIGlmIChfdGV4dGlvd3JhcHBlcl93cml0ZWZsdXNoKHNlbGYpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAiZmx1c2giLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZsdXNoLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0NzgsMjAgKzI1NTUsMjAgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChzZWxmLT5kZWFsbG9jYXRpbmcpIHsKLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAiX2RlYWxsb2Nfd2FybiIsICJPIiwgc2VsZik7CisgICAgICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfX2RlYWxsb2Nfd2FybiwgIk8iLCBzZWxmKTsKICAgICAgICAgICAgIGlmIChyZXMpCiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgfQotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJmbHVzaCIsIE5VTEwpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKIAotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJjbG9zZSIsIE5VTEwpOworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2Nsb3NlLCBOVUxMKTsKICAgICB9CiB9CiAKQEAgLTI1MTksMTAgKzI1OTYsMTAgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChsaW5lID09IE5VTEwpCisgICAgaWYgKGxpbmUgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkobGluZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShsaW5lKSA9PSAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmUpID09IDApIHsKICAgICAgICAgLyogUmVhY2hlZCBFT0Ygb3Igd291bGQgaGF2ZSBibG9ja2VkICovCiAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+c25hcHNob3QpOwpAQCAtMjUzNyw3ICsyNjE0LDcgQEAKIHRleHRpb3dyYXBwZXJfbmFtZV9nZXQodGV4dGlvICpzZWxmLCB2b2lkICpjb250ZXh0KQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYtPmJ1ZmZlciwgIm5hbWUiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLT5idWZmZXIsICZQeUlkX25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fanNvbi5jIGIvTW9kdWxlcy9fanNvbi5jCmluZGV4IDJhNzFiOWYuLmZiOGJkNTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2pzb24uYworKysgYi9Nb2R1bGVzL19qc29uLmMKQEAgLTEsNSArMSw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaW5jbHVkZSAiYWNjdS5oIgorCiAjaWYgUFlfVkVSU0lPTl9IRVggPCAweDAyMDYwMDAwICYmICFkZWZpbmVkKFB5X1RZUEUpCiAjZGVmaW5lIFB5X1RZUEUob2IpICAgICAoKChQeU9iamVjdCopKG9iKSktPm9iX3R5cGUpCiAjZW5kaWYKQEAgLTc2LDYgKzc4LDIxIEBACiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgoram9pbl9saXN0X3VuaWNvZGUoUHlPYmplY3QgKmxzdCkKK3sKKyAgICAvKiByZXR1cm4gdScnLmpvaW4obHN0KSAqLworICAgIHN0YXRpYyBQeU9iamVjdCAqc2VwID0gTlVMTDsKKyAgICBpZiAoc2VwID09IE5VTEwpIHsKKyAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKKyAgICAgICAgaWYgKHNlcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeVVuaWNvZGVfSm9pbihzZXAsIGxzdCk7Cit9CisKKy8qIEZvcndhcmQgZGVjbHMgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKIGFzY2lpX2VzY2FwZV91bmljb2RlKFB5T2JqZWN0ICpweXN0cik7CiBzdGF0aWMgUHlPYmplY3QgKgogcHlfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkoUHlPYmplY3QqIHNlbGYgVU5VU0VELCBQeU9iamVjdCAqcHlzdHIpOwpAQCAtMTAxLDExICsxMTgsMTEgQEAKIHN0YXRpYyBpbnQKIGVuY29kZXJfY2xlYXIoUHlPYmplY3QgKnNlbGYpOwogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKnNlcSwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsIFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKIHN0YXRpYyBpbnQKLWVuY29kZXJfbGlzdGVuY29kZV9vYmooUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKm9iaiwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihQeUVuY29kZXJPYmplY3QgKnMsIF9QeUFjY3UgKmFjYywgUHlPYmplY3QgKm9iaiwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOwogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKmRjdCwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsIFB5T2JqZWN0ICpkY3QsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKIHN0YXRpYyBQeU9iamVjdCAqCiBfZW5jb2RlZF9jb25zdChQeU9iamVjdCAqb2JqKTsKIHN0YXRpYyB2b2lkCkBAIC0xMjIsMTMgKzEzOSw2IEBACiAjZGVmaW5lIFNfQ0hBUihjKSAoYyA+PSAnICcgJiYgYyA8PSAnficgJiYgYyAhPSAnXFwnICYmIGMgIT0gJyInKQogI2RlZmluZSBJU19XSElURVNQQUNFKGMpICgoKGMpID09ICcgJykgfHwgKChjKSA9PSAnXHQnKSB8fCAoKGMpID09ICdcbicpIHx8ICgoYykgPT0gJ1xyJykpCiAKLSNkZWZpbmUgTUlOX0VYUEFOU0lPTiA2Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0jZGVmaW5lIE1BWF9FWFBBTlNJT04gKDIgKiBNSU5fRVhQQU5TSU9OKQotI2Vsc2UKLSNkZWZpbmUgTUFYX0VYUEFOU0lPTiBNSU5fRVhQQU5TSU9OCi0jZW5kaWYKLQogc3RhdGljIGludAogX2NvbnZlcnRQeUludF9Bc1NzaXplX3QoUHlPYmplY3QgKm8sIFB5X3NzaXplX3QgKnNpemVfcHRyKQogewpAQCAtMTQ3LDcgKzE1Nyw3IEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1hc2NpaV9lc2NhcGVfdW5pY2hhcihQeV9VTklDT0RFIGMsIFB5X1VOSUNPREUgKm91dHB1dCwgUHlfc3NpemVfdCBjaGFycykKK2FzY2lpX2VzY2FwZV91bmljaGFyKFB5X1VDUzQgYywgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBQeV9zc2l6ZV90IGNoYXJzKQogewogICAgIC8qIEVzY2FwZSB1bmljb2RlIGNvZGUgcG9pbnQgYyB0byBBU0NJSSBlc2NhcGUgc2VxdWVuY2VzCiAgICAgaW4gY2hhciAqb3V0cHV0LiBvdXRwdXQgbXVzdCBoYXZlIGF0IGxlYXN0IDEyIGJ5dGVzIHVudXNlZCB0bwpAQCAtMTYyLDI1ICsxNzIsMjMgQEAKICAgICAgICAgY2FzZSAnXHInOiBvdXRwdXRbY2hhcnMrK10gPSAncic7IGJyZWFrOwogICAgICAgICBjYXNlICdcdCc6IG91dHB1dFtjaGFycysrXSA9ICd0JzsgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgICAgICBpZiAoYyA+PSAweDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgLyogVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyICovCi0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSB2ID0gYyAtIDB4MTAwMDA7CisgICAgICAgICAgICAgICAgUHlfVUNTNCB2ID0gYyAtIDB4MTAwMDA7CiAgICAgICAgICAgICAgICAgYyA9IDB4ZDgwMCB8ICgodiA+PiAxMCkgJiAweDNmZik7CiAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJ3UnOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgOCkgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgNCkgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyAgICAgICkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAgOCkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAgNCkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgICkgJiAweGZdOwogICAgICAgICAgICAgICAgIGMgPSAweGRjMDAgfCAodiAmIDB4M2ZmKTsKICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOwogICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAndSc7Ci0gICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgPj4gMTIpICYgMHhmXTsKLSAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgOCkgJiAweGZdOwotICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gIjAxMjM0NTY3ODlhYmNkZWYiWyhjID4+ICA0KSAmIDB4Zl07Ci0gICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgICAgICApICYgMHhmXTsKKyAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gUHlfaGV4ZGlnaXRzWyhjID4+ICA4KSAmIDB4Zl07CisgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgPj4gIDQpICYgMHhmXTsKKyAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgICkgJiAweGZdOwogICAgIH0KICAgICByZXR1cm4gY2hhcnM7CiB9CkBAIC0xOTIsNTQgKzIwMCw1MyBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IGlucHV0X2NoYXJzOwogICAgIFB5X3NzaXplX3Qgb3V0cHV0X3NpemU7Ci0gICAgUHlfc3NpemVfdCBtYXhfb3V0cHV0X3NpemU7CiAgICAgUHlfc3NpemVfdCBjaGFyczsKICAgICBQeU9iamVjdCAqcnZhbDsKLSAgICBQeV9VTklDT0RFICpvdXRwdXQ7Ci0gICAgUHlfVU5JQ09ERSAqaW5wdXRfdW5pY29kZTsKKyAgICB2b2lkICppbnB1dDsKKyAgICB1bnNpZ25lZCBjaGFyICpvdXRwdXQ7CisgICAgaW50IGtpbmQ7CiAKLSAgICBpbnB1dF9jaGFycyA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cik7Ci0gICAgaW5wdXRfdW5pY29kZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHB5c3RyKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBPbmUgY2hhciBpbnB1dCBjYW4gYmUgdXAgdG8gNiBjaGFycyBvdXRwdXQsIGVzdGltYXRlIDQgb2YgdGhlc2UgKi8KLSAgICBvdXRwdXRfc2l6ZSA9IDIgKyAoTUlOX0VYUEFOU0lPTiAqIDQpICsgaW5wdXRfY2hhcnM7Ci0gICAgbWF4X291dHB1dF9zaXplID0gMiArIChpbnB1dF9jaGFycyAqIE1BWF9FWFBBTlNJT04pOwotICAgIHJ2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgb3V0cHV0X3NpemUpOworICAgIGlucHV0X2NoYXJzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpOworICAgIGlucHV0ID0gUHlVbmljb2RlX0RBVEEocHlzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChweXN0cik7CisKKyAgICAvKiBDb21wdXRlIHRoZSBvdXRwdXQgc2l6ZSAqLworICAgIGZvciAoaSA9IDAsIG91dHB1dF9zaXplID0gMjsgaSA8IGlucHV0X2NoYXJzOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5wdXQsIGkpOworICAgICAgICBpZiAoU19DSEFSKGMpKQorICAgICAgICAgICAgb3V0cHV0X3NpemUrKzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2goYykgeworICAgICAgICAgICAgY2FzZSAnXFwnOiBjYXNlICciJzogY2FzZSAnXGInOiBjYXNlICdcZic6CisgICAgICAgICAgICBjYXNlICdcbic6IGNhc2UgJ1xyJzogY2FzZSAnXHQnOgorICAgICAgICAgICAgICAgIG91dHB1dF9zaXplICs9IDI7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBvdXRwdXRfc2l6ZSArPSBjID49IDB4MTAwMDAgPyAxMiA6IDY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBydmFsID0gUHlVbmljb2RlX05ldyhvdXRwdXRfc2l6ZSwgMTI3KTsKICAgICBpZiAocnZhbCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBvdXRwdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShydmFsKTsKKyAgICBvdXRwdXQgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShydmFsKTsKICAgICBjaGFycyA9IDA7CiAgICAgb3V0cHV0W2NoYXJzKytdID0gJyInOwogICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dF9jaGFyczsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9IGlucHV0X3VuaWNvZGVbaV07CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGlucHV0LCBpKTsKICAgICAgICAgaWYgKFNfQ0hBUihjKSkgewogICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gYzsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNoYXJzID0gYXNjaWlfZXNjYXBlX3VuaWNoYXIoYywgb3V0cHV0LCBjaGFycyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG91dHB1dF9zaXplIC0gY2hhcnMgPCAoMSArIE1BWF9FWFBBTlNJT04pKSB7Ci0gICAgICAgICAgICAvKiBUaGVyZSdzIG1vcmUgdGhhbiBmb3VyLCBzbyBsZXQncyByZXNpemUgYnkgYSBsb3QgKi8KLSAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3X291dHB1dF9zaXplID0gb3V0cHV0X3NpemUgKiAyOwotICAgICAgICAgICAgLyogVGhpcyBpcyBhbiB1cHBlciBib3VuZCAqLwotICAgICAgICAgICAgaWYgKG5ld19vdXRwdXRfc2l6ZSA+IG1heF9vdXRwdXRfc2l6ZSkgewotICAgICAgICAgICAgICAgIG5ld19vdXRwdXRfc2l6ZSA9IG1heF9vdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBvdXRwdXQgc2l6ZSBjaGFuZ2VkIGJlZm9yZSByZXNpemluZyAqLwotICAgICAgICAgICAgaWYgKG5ld19vdXRwdXRfc2l6ZSAhPSBvdXRwdXRfc2l6ZSkgewotICAgICAgICAgICAgICAgIG91dHB1dF9zaXplID0gbmV3X291dHB1dF9zaXplOwotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZydmFsLCBvdXRwdXRfc2l6ZSkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJ2YWwpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQogICAgIG91dHB1dFtjaGFycysrXSA9ICciJzsKLSAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmcnZhbCwgY2hhcnMpID09IC0xKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJ2YWwsIDEpKTsKICAgICByZXR1cm4gcnZhbDsKIH0KIApAQCAtMjY3LDE5ICsyNzQsNiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotam9pbl9saXN0X3VuaWNvZGUoUHlPYmplY3QgKmxzdCkKLXsKLSAgICAvKiByZXR1cm4gdScnLmpvaW4obHN0KSAqLwotICAgIHN0YXRpYyBQeU9iamVjdCAqc2VwID0gTlVMTDsKLSAgICBpZiAoc2VwID09IE5VTEwpIHsKLSAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICAgICAgaWYgKHNlcCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfSm9pbihzZXAsIGxzdCk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCiBfYnVpbGRfcnZhbF9pbmRleF90dXBsZShQeU9iamVjdCAqcnZhbCwgUHlfc3NpemVfdCBpZHgpIHsKICAgICAvKiByZXR1cm4gKHJ2YWwsIGlkeCkgdHVwbGUsIHN0ZWFsaW5nIHJlZmVyZW5jZSB0byBydmFsICovCiAgICAgUHlPYmplY3QgKnRwbDsKQEAgLTMzMywyMiArMzI3LDMwIEBACiAgICAgUmV0dXJuIHZhbHVlIGlzIGEgbmV3IFB5VW5pY29kZQogICAgICovCiAgICAgUHlPYmplY3QgKnJ2YWwgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHB5c3RyKTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeV9zc2l6ZV90IGJlZ2luID0gZW5kIC0gMTsKLSAgICBQeV9zc2l6ZV90IG5leHQgPSBiZWdpbjsKLSAgICBjb25zdCBQeV9VTklDT0RFICpidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShweXN0cik7CisgICAgUHlfc3NpemVfdCBuZXh0IC8qID0gYmVnaW4gKi87CisgICAgY29uc3Qgdm9pZCAqYnVmOworICAgIGludCBraW5kOwogICAgIFB5T2JqZWN0ICpjaHVua3MgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjaHVuayA9IE5VTEw7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cik7CisgICAgYnVmID0gUHlVbmljb2RlX0RBVEEocHlzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChweXN0cik7CisKICAgICBpZiAoZW5kIDwgMCB8fCBsZW4gPD0gZW5kKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW5kIGlzIG91dCBvZiBib3VuZHMiKTsKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KICAgICB3aGlsZSAoMSkgewogICAgICAgICAvKiBGaW5kIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBvciB0aGUgbmV4dCBlc2NhcGUgKi8KLSAgICAgICAgUHlfVU5JQ09ERSBjID0gMDsKKyAgICAgICAgUHlfVUNTNCBjID0gMDsKICAgICAgICAgZm9yIChuZXh0ID0gZW5kOyBuZXh0IDwgbGVuOyBuZXh0KyspIHsKLSAgICAgICAgICAgIGMgPSBidWZbbmV4dF07CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgYnVmLCBuZXh0KTsKICAgICAgICAgICAgIGlmIChjID09ICciJyB8fCBjID09ICdcXCcpIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM2NCw3ICszNjYsMTAgQEAKICAgICAgICAgLyogUGljayB1cCB0aGlzIGNodW5rIGlmIGl0J3Mgbm90IHplcm8gbGVuZ3RoICovCiAgICAgICAgIGlmIChuZXh0ICE9IGVuZCkgewogICAgICAgICAgICAgQVBQRU5EX09MRF9DSFVOSwotICAgICAgICAgICAgY2h1bmsgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJmJ1ZltlbmRdLCBuZXh0IC0gZW5kKTsKKyAgICAgICAgICAgICAgICBjaHVuayA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoCisgICAgICAgICAgICAgICAgICAgIGtpbmQsCisgICAgICAgICAgICAgICAgICAgIChjaGFyKilidWYgKyBraW5kICogZW5kLAorICAgICAgICAgICAgICAgICAgICBuZXh0IC0gZW5kKTsKICAgICAgICAgICAgIGlmIChjaHVuayA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgfQpAQCAtMzc4LDcgKzM4Myw3IEBACiAgICAgICAgICAgICByYWlzZV9lcnJtc2coIlVudGVybWluYXRlZCBzdHJpbmcgc3RhcnRpbmcgYXQiLCBweXN0ciwgYmVnaW4pOwogICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICB9Ci0gICAgICAgIGMgPSBidWZbbmV4dF07CisgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBidWYsIG5leHQpOwogICAgICAgICBpZiAoYyAhPSAndScpIHsKICAgICAgICAgICAgIC8qIE5vbi11bmljb2RlIGJhY2tzbGFzaCBlc2NhcGVzICovCiAgICAgICAgICAgICBlbmQgPSBuZXh0ICsgMTsKQEAgLTQwOCw3ICs0MTMsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogRGVjb2RlIDQgaGV4IGRpZ2l0cyAqLwogICAgICAgICAgICAgZm9yICg7IG5leHQgPCBlbmQ7IG5leHQrKykgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgZGlnaXQgPSBidWZbbmV4dF07CisgICAgICAgICAgICAgICAgUHlfVUNTNCBkaWdpdCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCk7CiAgICAgICAgICAgICAgICAgYyA8PD0gNDsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRpZ2l0KSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzoKQEAgLTQyNSwyMiArNDMwLDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICAgICAgLyogU3Vycm9nYXRlIHBhaXIgKi8KICAgICAgICAgICAgIGlmICgoYyAmIDB4ZmMwMCkgPT0gMHhkODAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjMiA9IDA7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjMiA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKGVuZCArIDYgPj0gbGVuKSB7CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiVW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUiLCBweXN0ciwgZW5kIC0gNSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGJ1ZltuZXh0KytdICE9ICdcXCcgfHwgYnVmW25leHQrK10gIT0gJ3UnKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCsrKSAhPSAnXFwnIHx8CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCsrKSAhPSAndScpIHsKICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJVbnBhaXJlZCBoaWdoIHN1cnJvZ2F0ZSIsIHB5c3RyLCBlbmQgLSA1KTsKICAgICAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbmQgKz0gNjsKICAgICAgICAgICAgICAgICAvKiBEZWNvZGUgNCBoZXggZGlnaXRzICovCiAgICAgICAgICAgICAgICAgZm9yICg7IG5leHQgPCBlbmQ7IG5leHQrKykgewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGRpZ2l0ID0gYnVmW25leHRdOworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGRpZ2l0ID0gUHlVbmljb2RlX1JFQUQoa2luZCwgYnVmLCBuZXh0KTsKICAgICAgICAgICAgICAgICAgICAgYzIgPDw9IDQ7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGlnaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzoKQEAgLTQ2NywxMCArNDcyLDkgQEAKICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIlVucGFpcmVkIGxvdyBzdXJyb2dhdGUiLCBweXN0ciwgZW5kIC0gNSk7CiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgQVBQRU5EX09MRF9DSFVOSwotICAgICAgICBjaHVuayA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmYywgMSk7CisgICAgICAgIGNodW5rID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgJmMsIDEpOwogICAgICAgICBpZiAoY2h1bmsgPT0gTlVMTCkgewogICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICB9CkBAIC02MDgsOCArNjEyLDkgQEAKIAogICAgIFJldHVybnMgYSBuZXcgUHlPYmplY3QgKHVzdWFsbHkgYSBkaWN0LCBidXQgb2JqZWN0X2hvb2sgY2FuIGNoYW5nZSB0aGF0KQogICAgICovCi0gICAgUHlfVU5JQ09ERSAqc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocHlzdHIpOwotICAgIFB5X3NzaXplX3QgZW5kX2lkeCA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cikgLSAxOworICAgIHZvaWQgKnN0cjsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGVuZF9pZHg7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJ2YWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICprZXkgPSBOVUxMOwpAQCAtNjE3LDYgKzYyMiwxMyBAQAogICAgIGludCBoYXNfcGFpcnNfaG9vayA9IChzLT5vYmplY3RfcGFpcnNfaG9vayAhPSBQeV9Ob25lKTsKICAgICBQeV9zc2l6ZV90IG5leHRfaWR4OwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShweXN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3RyID0gUHlVbmljb2RlX0RBVEEocHlzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChweXN0cik7CisgICAgZW5kX2lkeCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHB5c3RyKSAtIDE7CisKICAgICBpZiAoaGFzX3BhaXJzX2hvb2spCiAgICAgICAgIHJ2YWwgPSBQeUxpc3RfTmV3KDApOwogICAgIGVsc2UKQEAgLTYyNSwxNSArNjM3LDE1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogc2tpcCB3aGl0ZXNwYWNlIGFmdGVyIHsgKi8KLSAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShzdHJbaWR4XSkpIGlkeCsrOworICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsc3RyLCBpZHgpKSkgaWR4Kys7CiAKICAgICAvKiBvbmx5IGxvb3AgaWYgdGhlIG9iamVjdCBpcyBub24tZW1wdHkgKi8KLSAgICBpZiAoaWR4IDw9IGVuZF9pZHggJiYgc3RyW2lkeF0gIT0gJ30nKSB7CisgICAgaWYgKGlkeCA8PSBlbmRfaWR4ICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnfScpIHsKICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4KSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqbWVtb2tleTsKIAogICAgICAgICAgICAgLyogcmVhZCBrZXkgKi8KLSAgICAgICAgICAgIGlmIChzdHJbaWR4XSAhPSAnIicpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJyInKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIiwgcHlzdHIsIGlkeCk7CiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgfQpAQCAtNjUzLDEzICs2NjUsMTMgQEAKICAgICAgICAgICAgIGlkeCA9IG5leHRfaWR4OwogCiAgICAgICAgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgYmV0d2VlbiBrZXkgYW5kIDogZGVsaW1pdGVyLCByZWFkIDosIHNraXAgd2hpdGVzcGFjZSAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKLSAgICAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IHN0cltpZHhdICE9ICc6JykgeworICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpKSkgaWR4Kys7CisgICAgICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJzonKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3RpbmcgJzonIGRlbGltaXRlciIsIHB5c3RyLCBpZHgpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlkeCsrOwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgICAgICAgICAvKiByZWFkIGFueSBKU09OIHRlcm0gKi8KICAgICAgICAgICAgIHZhbCA9IHNjYW5fb25jZV91bmljb2RlKHMsIHB5c3RyLCBpZHgsICZuZXh0X2lkeCk7CkBAIC02ODcsMjYgKzY5OSwyNiBAQAogICAgICAgICAgICAgaWR4ID0gbmV4dF9pZHg7CiAKICAgICAgICAgICAgIC8qIHNraXAgd2hpdGVzcGFjZSBiZWZvcmUgfSBvciAsICovCi0gICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShzdHJbaWR4XSkpIGlkeCsrOworICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpKSkgaWR4Kys7CiAKICAgICAgICAgICAgIC8qIGJhaWwgaWYgdGhlIG9iamVjdCBpcyBjbG9zZWQgb3Igd2UgZGlkbid0IGdldCB0aGUgLCBkZWxpbWl0ZXIgKi8KICAgICAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4KSBicmVhazsKLSAgICAgICAgICAgIGlmIChzdHJbaWR4XSA9PSAnfScpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJ30nKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChzdHJbaWR4XSAhPSAnLCcpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnLCcpIHsKICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIkV4cGVjdGluZyAnLCcgZGVsaW1pdGVyIiwgcHlzdHIsIGlkeCk7CiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWR4Kys7CiAKICAgICAgICAgICAgIC8qIHNraXAgd2hpdGVzcGFjZSBhZnRlciAsIGRlbGltaXRlciAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLyogdmVyaWZ5IHRoYXQgaWR4IDwgZW5kX2lkeCwgc3RyW2lkeF0gc2hvdWxkIGJlICd9JyAqLwotICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IHN0cltpZHhdICE9ICd9JykgeworICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnfScpIHsKICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3Rpbmcgb2JqZWN0IiwgcHlzdHIsIGVuZF9pZHgpOwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQpAQCAtNzQyLDE5ICs3NTQsMjcgQEAKIAogICAgIFJldHVybnMgYSBuZXcgUHlMaXN0CiAgICAgKi8KLSAgICBQeV9VTklDT0RFICpzdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShweXN0cik7Ci0gICAgUHlfc3NpemVfdCBlbmRfaWR4ID0gUHlVbmljb2RlX0dFVF9TSVpFKHB5c3RyKSAtIDE7CisgICAgdm9pZCAqc3RyOworICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgZW5kX2lkeDsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqcnZhbCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgUHlfc3NpemVfdCBuZXh0X2lkeDsKICAgICBpZiAocnZhbCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocHlzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworICAgIGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cikgLSAxOworCiAgICAgLyogc2tpcCB3aGl0ZXNwYWNlIGFmdGVyIFsgKi8KLSAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShzdHJbaWR4XSkpIGlkeCsrOworICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgLyogb25seSBsb29wIGlmIHRoZSBhcnJheSBpcyBub24tZW1wdHkgKi8KLSAgICBpZiAoaWR4IDw9IGVuZF9pZHggJiYgc3RyW2lkeF0gIT0gJ10nKSB7CisgICAgaWYgKGlkeCA8PSBlbmRfaWR4ICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnXScpIHsKICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4KSB7CiAKICAgICAgICAgICAgIC8qIHJlYWQgYW55IEpTT04gdGVybSAgKi8KQEAgLTc2OSwyNiArNzg5LDI2IEBACiAgICAgICAgICAgICBpZHggPSBuZXh0X2lkeDsKIAogICAgICAgICAgICAgLyogc2tpcCB3aGl0ZXNwYWNlIGJldHdlZW4gdGVybSBhbmQgLCAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBiYWlsIGlmIHRoZSBhcnJheSBpcyBjbG9zZWQgb3Igd2UgZGlkbid0IGdldCB0aGUgLCBkZWxpbWl0ZXIgKi8KICAgICAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4KSBicmVhazsKLSAgICAgICAgICAgIGlmIChzdHJbaWR4XSA9PSAnXScpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJ10nKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChzdHJbaWR4XSAhPSAnLCcpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnLCcpIHsKICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIkV4cGVjdGluZyAnLCcgZGVsaW1pdGVyIiwgcHlzdHIsIGlkeCk7CiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWR4Kys7CiAKICAgICAgICAgICAgIC8qIHNraXAgd2hpdGVzcGFjZSBhZnRlciAsICovCi0gICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShzdHJbaWR4XSkpIGlkeCsrOworICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpKSkgaWR4Kys7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiB2ZXJpZnkgdGhhdCBpZHggPCBlbmRfaWR4LCBzdHJbaWR4XSBzaG91bGQgYmUgJ10nICovCi0gICAgaWYgKGlkeCA+IGVuZF9pZHggfHwgc3RyW2lkeF0gIT0gJ10nKSB7CisgICAgLyogdmVyaWZ5IHRoYXQgaWR4IDwgZW5kX2lkeCwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpIHNob3VsZCBiZSAnXScgKi8KKyAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ10nKSB7CiAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nIG9iamVjdCIsIHB5c3RyLCBlbmRfaWR4KTsKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KQEAgLTgyMCw3ICs4NDAsNyBAQAogCiAgICAgLyogcnZhbCA9IHBhcnNlX2NvbnN0YW50KGNvbnN0YW50KSAqLwogICAgIHJ2YWwgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHMtPnBhcnNlX2NvbnN0YW50LCBjc3RyLCBOVUxMKTsKLSAgICBpZHggKz0gUHlVbmljb2RlX0dFVF9TSVpFKGNzdHIpOworICAgIGlkeCArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChjc3RyKTsKICAgICBQeV9ERUNSRUYoY3N0cik7CiAgICAgKm5leHRfaWR4X3B0ciA9IGlkeDsKICAgICByZXR1cm4gcnZhbDsKQEAgLTgzNywxNSArODU3LDI0IEBACiAgICAgICAgIFB5SW50LCBQeUxvbmcsIG9yIFB5RmxvYXQuCiAgICAgICAgIE1heSByZXR1cm4gb3RoZXIgdHlwZXMgaWYgcGFyc2VfaW50IG9yIHBhcnNlX2Zsb2F0IGFyZSBzZXQKICAgICAqLwotICAgIFB5X1VOSUNPREUgKnN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHB5c3RyKTsKLSAgICBQeV9zc2l6ZV90IGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX1NJWkUocHlzdHIpIC0gMTsKKyAgICB2b2lkICpzdHI7CisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBlbmRfaWR4OwogICAgIFB5X3NzaXplX3QgaWR4ID0gc3RhcnQ7CiAgICAgaW50IGlzX2Zsb2F0ID0gMDsKICAgICBQeU9iamVjdCAqcnZhbDsKLSAgICBQeU9iamVjdCAqbnVtc3RyOworICAgIFB5T2JqZWN0ICpudW1zdHIgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjdXN0b21fZnVuYzsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocHlzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworICAgIGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cikgLSAxOwogCiAgICAgLyogcmVhZCBhIHNpZ24gaWYgaXQncyB0aGVyZSwgbWFrZSBzdXJlIGl0J3Mgbm90IHRoZSBlbmQgb2YgdGhlIHN0cmluZyAqLwotICAgIGlmIChzdHJbaWR4XSA9PSAnLScpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICctJykgewogICAgICAgICBpZHgrKzsKICAgICAgICAgaWYgKGlkeCA+IGVuZF9pZHgpIHsKICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CkBAIC04NTQsMTIgKzg4MywxMiBAQAogICAgIH0KIAogICAgIC8qIHJlYWQgYXMgbWFueSBpbnRlZ2VyIGRpZ2l0cyBhcyB3ZSBmaW5kIGFzIGxvbmcgYXMgaXQgZG9lc24ndCBzdGFydCB3aXRoIDAgKi8KLSAgICBpZiAoc3RyW2lkeF0gPj0gJzEnICYmIHN0cltpZHhdIDw9ICc5JykgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPj0gJzEnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA8PSAnOScpIHsKICAgICAgICAgaWR4Kys7Ci0gICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBzdHJbaWR4XSA+PSAnMCcgJiYgc3RyW2lkeF0gPD0gJzknKSBpZHgrKzsKKyAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA+PSAnMCcgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpIDw9ICc5JykgaWR4Kys7CiAgICAgfQogICAgIC8qIGlmIGl0IHN0YXJ0cyB3aXRoIDAgd2Ugb25seSBleHBlY3Qgb25lIGludGVnZXIgZGlnaXQgKi8KLSAgICBlbHNlIGlmIChzdHJbaWR4XSA9PSAnMCcpIHsKKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJzAnKSB7CiAgICAgICAgIGlkeCsrOwogICAgIH0KICAgICAvKiBubyBpbnRlZ2VyIGRpZ2l0cywgZXJyb3IgKi8KQEAgLTg2OSwyNSArODk4LDI1IEBACiAgICAgfQogCiAgICAgLyogaWYgdGhlIG5leHQgY2hhciBpcyAnLicgZm9sbG93ZWQgYnkgYSBkaWdpdCB0aGVuIHJlYWQgYWxsIGZsb2F0IGRpZ2l0cyAqLwotICAgIGlmIChpZHggPCBlbmRfaWR4ICYmIHN0cltpZHhdID09ICcuJyAmJiBzdHJbaWR4ICsgMV0gPj0gJzAnICYmIHN0cltpZHggKyAxXSA8PSAnOScpIHsKKyAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJy4nICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPj0gJzAnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPD0gJzknKSB7CiAgICAgICAgIGlzX2Zsb2F0ID0gMTsKICAgICAgICAgaWR4ICs9IDI7Ci0gICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBzdHJbaWR4XSA+PSAnMCcgJiYgc3RyW2lkeF0gPD0gJzknKSBpZHgrKzsKKyAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA+PSAnMCcgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpIDw9ICc5JykgaWR4Kys7CiAgICAgfQogCiAgICAgLyogaWYgdGhlIG5leHQgY2hhciBpcyAnZScgb3IgJ0UnIHRoZW4gbWF5YmUgcmVhZCB0aGUgZXhwb25lbnQgKG9yIGJhY2t0cmFjaykgKi8KLSAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiAoc3RyW2lkeF0gPT0gJ2UnIHx8IHN0cltpZHhdID09ICdFJykpIHsKKyAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICdlJyB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJ0UnKSkgewogICAgICAgICBQeV9zc2l6ZV90IGVfc3RhcnQgPSBpZHg7CiAgICAgICAgIGlkeCsrOwogCiAgICAgICAgIC8qIHJlYWQgYW4gZXhwb25lbnQgc2lnbiBpZiBwcmVzZW50ICovCi0gICAgICAgIGlmIChpZHggPCBlbmRfaWR4ICYmIChzdHJbaWR4XSA9PSAnLScgfHwgc3RyW2lkeF0gPT0gJysnKSkgaWR4Kys7CisgICAgICAgIGlmIChpZHggPCBlbmRfaWR4ICYmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJy0nIHx8IFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA9PSAnKycpKSBpZHgrKzsKIAogICAgICAgICAvKiByZWFkIGFsbCBkaWdpdHMgKi8KLSAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIHN0cltpZHhdID49ICcwJyAmJiBzdHJbaWR4XSA8PSAnOScpIGlkeCsrOworICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID49ICcwJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPD0gJzknKSBpZHgrKzsKIAogICAgICAgICAvKiBpZiB3ZSBnb3QgYSBkaWdpdCwgdGhlbiBwYXJzZSBhcyBmbG9hdC4gaWYgbm90LCBiYWNrdHJhY2sgKi8KLSAgICAgICAgaWYgKHN0cltpZHggLSAxXSA+PSAnMCcgJiYgc3RyW2lkeCAtIDFdIDw9ICc5JykgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggLSAxKSA+PSAnMCcgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggLSAxKSA8PSAnOScpIHsKICAgICAgICAgICAgIGlzX2Zsb2F0ID0gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTg5NSwyMiArOTI0LDM5IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBjb3B5IHRoZSBzZWN0aW9uIHdlIGRldGVybWluZWQgdG8gYmUgYSBudW1iZXIgKi8KLSAgICBudW1zdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnN0cltzdGFydF0sIGlkeCAtIHN0YXJ0KTsKLSAgICBpZiAobnVtc3RyID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChpc19mbG9hdCkgewotICAgICAgICAvKiBwYXJzZSBhcyBhIGZsb2F0IHVzaW5nIGEgZmFzdCBwYXRoIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGNhbGwgdXNlciBkZWZpbmVkIG1ldGhvZCAqLwotICAgICAgICBpZiAocy0+cGFyc2VfZmxvYXQgIT0gKFB5T2JqZWN0ICopJlB5RmxvYXRfVHlwZSkgewotICAgICAgICAgICAgcnZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Mocy0+cGFyc2VfZmxvYXQsIG51bXN0ciwgTlVMTCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBydmFsID0gUHlGbG9hdF9Gcm9tU3RyaW5nKG51bXN0cik7Ci0gICAgICAgIH0KKyAgICBpZiAoaXNfZmxvYXQgJiYgcy0+cGFyc2VfZmxvYXQgIT0gKFB5T2JqZWN0ICopJlB5RmxvYXRfVHlwZSkKKyAgICAgICAgY3VzdG9tX2Z1bmMgPSBzLT5wYXJzZV9mbG9hdDsKKyAgICBlbHNlIGlmICghaXNfZmxvYXQgJiYgcy0+cGFyc2VfaW50ICE9IChQeU9iamVjdCAqKSAmUHlMb25nX1R5cGUpCisgICAgICAgIGN1c3RvbV9mdW5jID0gcy0+cGFyc2VfaW50OworICAgIGVsc2UKKyAgICAgICAgY3VzdG9tX2Z1bmMgPSBOVUxMOworCisgICAgaWYgKGN1c3RvbV9mdW5jKSB7CisgICAgICAgIC8qIGNvcHkgdGhlIHNlY3Rpb24gd2UgZGV0ZXJtaW5lZCB0byBiZSBhIG51bWJlciAqLworICAgICAgICBudW1zdHIgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXN0ciArIGtpbmQgKiBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHggLSBzdGFydCk7CisgICAgICAgIGlmIChudW1zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBydmFsID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhjdXN0b21fZnVuYywgbnVtc3RyLCBOVUxMKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIG5vIGZhc3QgcGF0aCBmb3IgdW5pY29kZSAtPiBpbnQsIGp1c3QgY2FsbCAqLwotICAgICAgICBydmFsID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzLT5wYXJzZV9pbnQsIG51bXN0ciwgTlVMTCk7CisgICAgICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICAgICAgY2hhciAqYnVmOworICAgICAgICAvKiBTdHJhaWdodCBjb252ZXJzaW9uIHRvIEFTQ0lJLCB0byBhdm9pZCBjb3N0bHkgY29udmVyc2lvbiBvZgorICAgICAgICAgICBkZWNpbWFsIHVuaWNvZGUgZGlnaXRzICh3aGljaCBjYW5ub3QgYXBwZWFyIGhlcmUpICovCisgICAgICAgIG4gPSBpZHggLSBzdGFydDsKKyAgICAgICAgbnVtc3RyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuKTsKKyAgICAgICAgaWYgKG51bXN0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG51bXN0cik7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGJ1ZltpXSA9IChjaGFyKSBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGkgKyBzdGFydCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzX2Zsb2F0KQorICAgICAgICAgICAgcnZhbCA9IFB5RmxvYXRfRnJvbVN0cmluZyhudW1zdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydmFsID0gUHlMb25nX0Zyb21TdHJpbmcoYnVmLCBOVUxMLCAxMCk7CiAgICAgfQogICAgIFB5X0RFQ1JFRihudW1zdHIpOwogICAgICpuZXh0X2lkeF9wdHIgPSBpZHg7CkBAIC05MjgsMTMgKzk3NCwyMyBAQAogICAgIFJldHVybnMgYSBuZXcgUHlPYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRlcm0uCiAgICAgKi8KICAgICBQeU9iamVjdCAqcmVzOwotICAgIFB5X1VOSUNPREUgKnN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHB5c3RyKTsKLSAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cik7CisgICAgdm9pZCAqc3RyOworICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShweXN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3RyID0gUHlVbmljb2RlX0RBVEEocHlzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChweXN0cik7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpOworCiAgICAgaWYgKGlkeCA+PSBsZW5ndGgpIHsKICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHN3aXRjaCAoc3RyW2lkeF0pIHsKKworICAgIHN3aXRjaCAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpKSB7CiAgICAgICAgIGNhc2UgJyInOgogICAgICAgICAgICAgLyogc3RyaW5nICovCiAgICAgICAgICAgICByZXR1cm4gc2NhbnN0cmluZ191bmljb2RlKHB5c3RyLCBpZHggKyAxLApAQCAtOTU4LDcgKzEwMTQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAvKiBudWxsICovCi0gICAgICAgICAgICBpZiAoKGlkeCArIDMgPCBsZW5ndGgpICYmIHN0cltpZHggKyAxXSA9PSAndScgJiYgc3RyW2lkeCArIDJdID09ICdsJyAmJiBzdHJbaWR4ICsgM10gPT0gJ2wnKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDMgPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ3UnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMikgPT0gJ2wnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMykgPT0gJ2wnKSB7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICAgICAgICAgICpuZXh0X2lkeF9wdHIgPSBpZHggKyA0OwogICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwpAQCAtOTY2LDcgKzEwMjIsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3QnOgogICAgICAgICAgICAgLyogdHJ1ZSAqLwotICAgICAgICAgICAgaWYgKChpZHggKyAzIDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ3InICYmIHN0cltpZHggKyAyXSA9PSAndScgJiYgc3RyW2lkeCArIDNdID09ICdlJykgeworICAgICAgICAgICAgaWYgKChpZHggKyAzIDwgbGVuZ3RoKSAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpID09ICdyJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDIpID09ICd1JyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdlJykgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9UcnVlKTsKICAgICAgICAgICAgICAgICAqbmV4dF9pZHhfcHRyID0gaWR4ICsgNDsKICAgICAgICAgICAgICAgICByZXR1cm4gUHlfVHJ1ZTsKQEAgLTk3NCw3ICsxMDMwLDEwIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnZic6CiAgICAgICAgICAgICAvKiBmYWxzZSAqLwotICAgICAgICAgICAgaWYgKChpZHggKyA0IDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ2EnICYmIHN0cltpZHggKyAyXSA9PSAnbCcgJiYgc3RyW2lkeCArIDNdID09ICdzJyAmJiBzdHJbaWR4ICsgNF0gPT0gJ2UnKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDQgPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ2EnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAnbCcgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdzJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNCkgPT0gJ2UnKSB7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X0ZhbHNlKTsKICAgICAgICAgICAgICAgICAqbmV4dF9pZHhfcHRyID0gaWR4ICsgNTsKICAgICAgICAgICAgICAgICByZXR1cm4gUHlfRmFsc2U7CkBAIC05ODIsMTkgKzEwNDEsMzMgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdOJzoKICAgICAgICAgICAgIC8qIE5hTiAqLwotICAgICAgICAgICAgaWYgKChpZHggKyAyIDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ2EnICYmIHN0cltpZHggKyAyXSA9PSAnTicpIHsKKyAgICAgICAgICAgIGlmICgoaWR4ICsgMiA8IGxlbmd0aCkgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAxKSA9PSAnYScgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDIpID09ICdOJykgewogICAgICAgICAgICAgICAgIHJldHVybiBfcGFyc2VfY29uc3RhbnQocywgIk5hTiIsIGlkeCwgbmV4dF9pZHhfcHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdJJzoKICAgICAgICAgICAgIC8qIEluZmluaXR5ICovCi0gICAgICAgICAgICBpZiAoKGlkeCArIDcgPCBsZW5ndGgpICYmIHN0cltpZHggKyAxXSA9PSAnbicgJiYgc3RyW2lkeCArIDJdID09ICdmJyAmJiBzdHJbaWR4ICsgM10gPT0gJ2knICYmIHN0cltpZHggKyA0XSA9PSAnbicgJiYgc3RyW2lkeCArIDVdID09ICdpJyAmJiBzdHJbaWR4ICsgNl0gPT0gJ3QnICYmIHN0cltpZHggKyA3XSA9PSAneScpIHsKKyAgICAgICAgICAgIGlmICgoaWR4ICsgNyA8IGxlbmd0aCkgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAxKSA9PSAnbicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDIpID09ICdmJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMykgPT0gJ2knICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA0KSA9PSAnbicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDUpID09ICdpJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNikgPT0gJ3QnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA3KSA9PSAneScpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gX3BhcnNlX2NvbnN0YW50KHMsICJJbmZpbml0eSIsIGlkeCwgbmV4dF9pZHhfcHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICctJzoKICAgICAgICAgICAgIC8qIC1JbmZpbml0eSAqLwotICAgICAgICAgICAgaWYgKChpZHggKyA4IDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ0knICYmIHN0cltpZHggKyAyXSA9PSAnbicgJiYgc3RyW2lkeCArIDNdID09ICdmJyAmJiBzdHJbaWR4ICsgNF0gPT0gJ2knICYmIHN0cltpZHggKyA1XSA9PSAnbicgJiYgc3RyW2lkeCArIDZdID09ICdpJyAmJiBzdHJbaWR4ICsgN10gPT0gJ3QnICYmIHN0cltpZHggKyA4XSA9PSAneScpIHsKKyAgICAgICAgICAgIGlmICgoaWR4ICsgOCA8IGxlbmd0aCkgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAxKSA9PSAnSScgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDIpID09ICduJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMykgPT0gJ2YnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA0KSA9PSAnaScgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDUpID09ICduJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNikgPT0gJ2knICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA3KSA9PSAndCcgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDgpID09ICd5JykgewogICAgICAgICAgICAgICAgIHJldHVybiBfcGFyc2VfY29uc3RhbnQocywgIi1JbmZpbml0eSIsIGlkeCwgbmV4dF9pZHhfcHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIxMCwyMiArMTI4MywyMiBAQAogICAgIC8qIFB5dGhvbiBjYWxsYWJsZSBpbnRlcmZhY2UgdG8gZW5jb2RlX2xpc3RlbmNvZGVfb2JqICovCiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvYmoiLCAiX2N1cnJlbnRfaW5kZW50X2xldmVsIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKm9iajsKLSAgICBQeU9iamVjdCAqcnZhbDsKICAgICBQeV9zc2l6ZV90IGluZGVudF9sZXZlbDsKICAgICBQeUVuY29kZXJPYmplY3QgKnM7CisgICAgX1B5QWNjdSBhY2M7CisKICAgICBhc3NlcnQoUHlFbmNvZGVyX0NoZWNrKHNlbGYpKTsKICAgICBzID0gKFB5RW5jb2Rlck9iamVjdCAqKXNlbGY7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PJjpfaXRlcmVuY29kZSIsIGt3bGlzdCwKICAgICAgICAgJm9iaiwgX2NvbnZlcnRQeUludF9Bc1NzaXplX3QsICZpbmRlbnRfbGV2ZWwpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBydmFsID0gUHlMaXN0X05ldygwKTsKLSAgICBpZiAocnZhbCA9PSBOVUxMKQorICAgIGlmIChfUHlBY2N1X0luaXQoJmFjYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIHJ2YWwsIG9iaiwgaW5kZW50X2xldmVsKSkgewotICAgICAgICBQeV9ERUNSRUYocnZhbCk7CisgICAgaWYgKGVuY29kZXJfbGlzdGVuY29kZV9vYmoocywgJmFjYywgb2JqLCBpbmRlbnRfbGV2ZWwpKSB7CisgICAgICAgIF9QeUFjY3VfRGVzdHJveSgmYWNjKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBydmFsOworICAgIHJldHVybiBfUHlBY2N1X0ZpbmlzaEFzTGlzdCgmYWNjKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyOTcsMTggKzEzNzAsMTkgQEAKIH0KIAogc3RhdGljIGludAotX3N0ZWFsX2xpc3RfYXBwZW5kKFB5T2JqZWN0ICpsc3QsIFB5T2JqZWN0ICpzdG9sZW4pCitfc3RlYWxfYWNjdW11bGF0ZShfUHlBY2N1ICphY2MsIFB5T2JqZWN0ICpzdG9sZW4pCiB7CiAgICAgLyogQXBwZW5kIHN0b2xlbiBhbmQgdGhlbiBkZWNyZW1lbnQgaXRzIHJlZmVyZW5jZSBjb3VudCAqLwotICAgIGludCBydmFsID0gUHlMaXN0X0FwcGVuZChsc3QsIHN0b2xlbik7CisgICAgaW50IHJ2YWwgPSBfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBzdG9sZW4pOwogICAgIFB5X0RFQ1JFRihzdG9sZW4pOwogICAgIHJldHVybiBydmFsOwogfQogCiBzdGF0aWMgaW50Ci1lbmNvZGVyX2xpc3RlbmNvZGVfb2JqKFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKnJ2YWwsIFB5T2JqZWN0ICpvYmosIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQorZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihQeUVuY29kZXJPYmplY3QgKnMsIF9QeUFjY3UgKmFjYywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpCiB7Ci0gICAgLyogRW5jb2RlIFB5dGhvbiBvYmplY3Qgb2JqIHRvIGEgSlNPTiB0ZXJtLCBydmFsIGlzIGEgUHlMaXN0ICovCisgICAgLyogRW5jb2RlIFB5dGhvbiBvYmplY3Qgb2JqIHRvIGEgSlNPTiB0ZXJtICovCiAgICAgUHlPYmplY3QgKm5ld29iajsKICAgICBpbnQgcnY7CiAKQEAgLTEzMTYsMzggKzEzOTAsMzggQEAKICAgICAgICAgUHlPYmplY3QgKmNzdHIgPSBfZW5jb2RlZF9jb25zdChvYmopOwogICAgICAgICBpZiAoY3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICByZXR1cm4gX3N0ZWFsX2xpc3RfYXBwZW5kKHJ2YWwsIGNzdHIpOworICAgICAgICByZXR1cm4gX3N0ZWFsX2FjY3VtdWxhdGUoYWNjLCBjc3RyKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpCiAgICAgewogICAgICAgICBQeU9iamVjdCAqZW5jb2RlZCA9IGVuY29kZXJfZW5jb2RlX3N0cmluZyhzLCBvYmopOwogICAgICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICByZXR1cm4gX3N0ZWFsX2xpc3RfYXBwZW5kKHJ2YWwsIGVuY29kZWQpOworICAgICAgICByZXR1cm4gX3N0ZWFsX2FjY3VtdWxhdGUoYWNjLCBlbmNvZGVkKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKG9iaikpIHsKICAgICAgICAgUHlPYmplY3QgKmVuY29kZWQgPSBQeU9iamVjdF9TdHIob2JqKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmV0dXJuIF9zdGVhbF9saXN0X2FwcGVuZChydmFsLCBlbmNvZGVkKTsKKyAgICAgICAgcmV0dXJuIF9zdGVhbF9hY2N1bXVsYXRlKGFjYywgZW5jb2RlZCk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgewogICAgICAgICBQeU9iamVjdCAqZW5jb2RlZCA9IGVuY29kZXJfZW5jb2RlX2Zsb2F0KHMsIG9iaik7CiAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJldHVybiBfc3RlYWxfbGlzdF9hcHBlbmQocnZhbCwgZW5jb2RlZCk7CisgICAgICAgIHJldHVybiBfc3RlYWxfYWNjdW11bGF0ZShhY2MsIGVuY29kZWQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeUxpc3RfQ2hlY2sob2JqKSB8fCBQeVR1cGxlX0NoZWNrKG9iaikpIHsKICAgICAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGVuY29kaW5nIGEgSlNPTiBvYmplY3QiKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcnYgPSBlbmNvZGVyX2xpc3RlbmNvZGVfbGlzdChzLCBydmFsLCBvYmosIGluZGVudF9sZXZlbCk7CisgICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QocywgYWNjLCBvYmosIGluZGVudF9sZXZlbCk7CiAgICAgICAgIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpOwogICAgICAgICByZXR1cm4gcnY7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5RGljdF9DaGVjayhvYmopKSB7CiAgICAgICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBlbmNvZGluZyBhIEpTT04gb2JqZWN0IikpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QocywgcnZhbCwgb2JqLCBpbmRlbnRfbGV2ZWwpOworICAgICAgICBydiA9IGVuY29kZXJfbGlzdGVuY29kZV9kaWN0KHMsIGFjYywgb2JqLCBpbmRlbnRfbGV2ZWwpOwogICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICAgICAgcmV0dXJuIHJ2OwogICAgIH0KQEAgLTEzNzgsNyArMTQ1Miw3IEBACiAKICAgICAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGVuY29kaW5nIGEgSlNPTiBvYmplY3QiKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcnYgPSBlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIHJ2YWwsIG5ld29iaiwgaW5kZW50X2xldmVsKTsKKyAgICAgICAgcnYgPSBlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIGFjYywgbmV3b2JqLCBpbmRlbnRfbGV2ZWwpOwogICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKIAogICAgICAgICBQeV9ERUNSRUYobmV3b2JqKTsKQEAgLTEzOTgsOSArMTQ3MiwxMCBAQAogfQogCiBzdGF0aWMgaW50Ci1lbmNvZGVyX2xpc3RlbmNvZGVfZGljdChQeUVuY29kZXJPYmplY3QgKnMsIFB5T2JqZWN0ICpydmFsLCBQeU9iamVjdCAqZGN0LCBQeV9zc2l6ZV90IGluZGVudF9sZXZlbCkKK2VuY29kZXJfbGlzdGVuY29kZV9kaWN0KFB5RW5jb2Rlck9iamVjdCAqcywgX1B5QWNjdSAqYWNjLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRjdCwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpCiB7Ci0gICAgLyogRW5jb2RlIFB5dGhvbiBkaWN0IGRjdCBhIEpTT04gdGVybSwgcnZhbCBpcyBhIFB5TGlzdCAqLworICAgIC8qIEVuY29kZSBQeXRob24gZGljdCBkY3QgYSBKU09OIHRlcm0gKi8KICAgICBzdGF0aWMgUHlPYmplY3QgKm9wZW5fZGljdCA9IE5VTEw7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpjbG9zZV9kaWN0ID0gTlVMTDsKICAgICBzdGF0aWMgUHlPYmplY3QgKmVtcHR5X2RpY3QgPSBOVUxMOwpAQCAtMTQyMCw3ICsxNDk1LDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKFB5X1NJWkUoZGN0KSA9PSAwKQotICAgICAgICByZXR1cm4gUHlMaXN0X0FwcGVuZChydmFsLCBlbXB0eV9kaWN0KTsKKyAgICAgICAgcmV0dXJuIF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGVtcHR5X2RpY3QpOwogCiAgICAgaWYgKHMtPm1hcmtlcnMgIT0gUHlfTm9uZSkgewogICAgICAgICBpbnQgaGFzX2tleTsKQEAgLTE0MzgsNyArMTUxMyw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBvcGVuX2RpY3QpKQorICAgIGlmIChfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBvcGVuX2RpY3QpKQogICAgICAgICBnb3RvIGJhaWw7CiAKICAgICBpZiAocy0+aW5kZW50ICE9IFB5X05vbmUpIHsKQEAgLTE1MjUsNyArMTYwMCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaWR4KSB7Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBzLT5pdGVtX3NlcGFyYXRvcikpCisgICAgICAgICAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgcy0+aXRlbV9zZXBhcmF0b3IpKQogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQogCkBAIC0xNTMzLDE2ICsxNjA4LDE2IEBACiAgICAgICAgIFB5X0NMRUFSKGtzdHIpOwogICAgICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBiYWlsOwotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBlbmNvZGVkKSkgeworICAgICAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgZW5jb2RlZCkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihlbmNvZGVkKTsKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoZW5jb2RlZCk7Ci0gICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHJ2YWwsIHMtPmtleV9zZXBhcmF0b3IpKQorICAgICAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgcy0+a2V5X3NlcGFyYXRvcikpCiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAKICAgICAgICAgdmFsdWUgPSBQeVR1cGxlX0dFVF9JVEVNKGl0ZW0sIDEpOwotICAgICAgICBpZiAoZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBydmFsLCB2YWx1ZSwgaW5kZW50X2xldmVsKSkKKyAgICAgICAgaWYgKGVuY29kZXJfbGlzdGVuY29kZV9vYmoocywgYWNjLCB2YWx1ZSwgaW5kZW50X2xldmVsKSkKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgaWR4ICs9IDE7CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKQEAgLTE1NTYsMTQgKzE2MzEsMTMgQEAKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgUHlfQ0xFQVIoaWRlbnQpOwogICAgIH0KKyAgICAvKiBUT0RPIERPRVMgTk9UIFJVTjsgZGVhZCBjb2RlCiAgICAgaWYgKHMtPmluZGVudCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIC8qIFRPRE86IERPRVMgTk9UIFJVTiAqLwogICAgICAgICBpbmRlbnRfbGV2ZWwgLT0gMTsKLSAgICAgICAgLyoKLSAgICAgICAgICAgIHlpZWxkICdcbicgKyAoJyAnICogKF9pbmRlbnQgKiBfY3VycmVudF9pbmRlbnRfbGV2ZWwpKQotICAgICAgICAqLwotICAgIH0KLSAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBjbG9zZV9kaWN0KSkKKworICAgICAgICB5aWVsZCAnXG4nICsgKCcgJyAqIChfaW5kZW50ICogX2N1cnJlbnRfaW5kZW50X2xldmVsKSkKKyAgICB9Ki8KKyAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgY2xvc2VfZGljdCkpCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICByZXR1cm4gMDsKIApAQCAtMTU3Nyw5ICsxNjUxLDEwIEBACiAKIAogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKnNlcSwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpCitlbmNvZGVyX2xpc3RlbmNvZGVfbGlzdChQeUVuY29kZXJPYmplY3QgKnMsIF9QeUFjY3UgKmFjYywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQogewotICAgIC8qIEVuY29kZSBQeXRob24gbGlzdCBzZXEgdG8gYSBKU09OIHRlcm0sIHJ2YWwgaXMgYSBQeUxpc3QgKi8KKyAgICAvKiBFbmNvZGUgUHl0aG9uIGxpc3Qgc2VxIHRvIGEgSlNPTiB0ZXJtICovCiAgICAgc3RhdGljIFB5T2JqZWN0ICpvcGVuX2FycmF5ID0gTlVMTDsKICAgICBzdGF0aWMgUHlPYmplY3QgKmNsb3NlX2FycmF5ID0gTlVMTDsKICAgICBzdGF0aWMgUHlPYmplY3QgKmVtcHR5X2FycmF5ID0gTlVMTDsKQEAgLTE2MDMsNyArMTY3OCw3IEBACiAgICAgbnVtX2l0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNfZmFzdCk7CiAgICAgaWYgKG51bV9pdGVtcyA9PSAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzX2Zhc3QpOwotICAgICAgICByZXR1cm4gUHlMaXN0X0FwcGVuZChydmFsLCBlbXB0eV9hcnJheSk7CisgICAgICAgIHJldHVybiBfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBlbXB0eV9hcnJheSk7CiAgICAgfQogCiAgICAgaWYgKHMtPm1hcmtlcnMgIT0gUHlfTm9uZSkgewpAQCAtMTYyMyw3ICsxNjk4LDcgQEAKICAgICB9CiAKICAgICBzZXFfaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoc19mYXN0KTsKLSAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBvcGVuX2FycmF5KSkKKyAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgb3Blbl9hcnJheSkpCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICBpZiAocy0+aW5kZW50ICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogVE9ETzogRE9FUyBOT1QgUlVOICovCkBAIC0xNjM3LDEwICsxNzEyLDEwIEBACiAgICAgZm9yIChpID0gMDsgaSA8IG51bV9pdGVtczsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvYmogPSBzZXFfaXRlbXNbaV07CiAgICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBzLT5pdGVtX3NlcGFyYXRvcikpCisgICAgICAgICAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgcy0+aXRlbV9zZXBhcmF0b3IpKQogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQotICAgICAgICBpZiAoZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBydmFsLCBvYmosIGluZGVudF9sZXZlbCkpCisgICAgICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIGFjYywgb2JqLCBpbmRlbnRfbGV2ZWwpKQogICAgICAgICAgICAgZ290byBiYWlsOwogICAgIH0KICAgICBpZiAoaWRlbnQgIT0gTlVMTCkgewpAQCAtMTY0OCwxNCArMTcyMywxNCBAQAogICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICBQeV9DTEVBUihpZGVudCk7CiAgICAgfQorCisgICAgLyogVE9ETzogRE9FUyBOT1QgUlVOCiAgICAgaWYgKHMtPmluZGVudCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIC8qIFRPRE86IERPRVMgTk9UIFJVTiAqLwogICAgICAgICBpbmRlbnRfbGV2ZWwgLT0gMTsKLSAgICAgICAgLyoKLSAgICAgICAgICAgIHlpZWxkICdcbicgKyAoJyAnICogKF9pbmRlbnQgKiBfY3VycmVudF9pbmRlbnRfbGV2ZWwpKQotICAgICAgICAqLwotICAgIH0KLSAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBjbG9zZV9hcnJheSkpCisKKyAgICAgICAgeWllbGQgJ1xuJyArICgnICcgKiAoX2luZGVudCAqIF9jdXJyZW50X2luZGVudF9sZXZlbCkpCisgICAgfSovCisgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGNsb3NlX2FycmF5KSkKICAgICAgICAgZ290byBiYWlsOwogICAgIFB5X0RFQ1JFRihzX2Zhc3QpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMgYi9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYwppbmRleCAxMDAxZGQyLi5jYzY4OGJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYwpAQCAtNDIsNDMgKzQyLDYgQEAKIAogc3RhdGljIFB5T2JqZWN0ICpFcnJvcjsKIAotLyogQ29udmVydCBhIGNoYXIqIHRvIGEgVW5pY29kZSBvYmplY3QgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZSAqLwotc3RhdGljIFB5T2JqZWN0Kgotc3RyMnVuaShjb25zdCBjaGFyKiBzKQotewotI2lmZGVmIEhBVkVfQlJPS0VOX01CU1RPV0NTCi0gICAgc2l6ZV90IG5lZWRlZCA9IHN0cmxlbihzKTsKLSNlbHNlCi0gICAgc2l6ZV90IG5lZWRlZCA9IG1ic3Rvd2NzKE5VTEwsIHMsIDApOwotI2VuZGlmCi0gICAgc2l6ZV90IHJlczE7Ci0gICAgd2NoYXJfdCBzbWFsbGJ1ZlszMF07Ci0gICAgd2NoYXJfdCAqZGVzdDsKLSAgICBQeU9iamVjdCAqcmVzMjsKLSAgICBpZiAobmVlZGVkID09IChzaXplX3QpLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBieXRlIHRvIHN0cmluZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKG5lZWRlZCpzaXplb2Yod2NoYXJfdCkgPCBzaXplb2Yoc21hbGxidWYpKQotICAgICAgICBkZXN0ID0gc21hbGxidWY7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGRlc3QgPSBQeU1lbV9NYWxsb2MoKG5lZWRlZCsxKSpzaXplb2Yod2NoYXJfdCkpOwotICAgICAgICBpZiAoIWRlc3QpCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgLyogVGhpcyBzaG91bGRuJ3QgZmFpbCBub3cgKi8KLSAgICByZXMxID0gbWJzdG93Y3MoZGVzdCwgcywgbmVlZGVkKzEpOwotI2lmZGVmIEhBVkVfQlJPS0VOX01CU1RPV0NTCi0gICAgYXNzZXJ0KHJlczEgIT0gKHNpemVfdCktMSk7Ci0jZWxzZQotICAgIGFzc2VydChyZXMxID09IG5lZWRlZCk7Ci0jZW5kaWYKLSAgICByZXMyID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihkZXN0LCByZXMxKTsKLSAgICBpZiAoZGVzdCAhPSBzbWFsbGJ1ZikKLSAgICAgICAgUHlNZW1fRnJlZShkZXN0KTsKLSAgICByZXR1cm4gcmVzMjsKLX0KLQogLyogc3VwcG9ydCBmdW5jdGlvbnMgZm9yIGZvcm1hdHRpbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyAqLwogCiBQeURvY19TVFJWQVIoc2V0bG9jYWxlX19kb2NfXywKQEAgLTE0OSw3ICsxMTIsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAidW5zdXBwb3J0ZWQgbG9jYWxlIHNldHRpbmciKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdF9vYmplY3QgPSBzdHIydW5pKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdF9vYmplY3QgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHJlc3VsdCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0X29iamVjdCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7CkBAIC0xNTksNyArMTIyLDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgImxvY2FsZSBxdWVyeSBmYWlsZWQiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdF9vYmplY3QgPSBzdHIydW5pKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdF9vYmplY3QgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHJlc3VsdCwgTlVMTCk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHRfb2JqZWN0OwogfQpAQCAtMTg1LDcgKzE0OCw3IEBACiAgICAgICAgaW52b2x2ZWQgaGVyZWluICovCiAKICNkZWZpbmUgUkVTVUxUX1NUUklORyhzKVwKLSAgICB4ID0gc3RyMnVuaShsLT5zKTsgICBcCisgICAgeCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUobC0+cywgTlVMTCk7ICAgXAogICAgIGlmICgheCkgZ290byBmYWlsZWQ7XAogICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKHJlc3VsdCwgI3MsIHgpO1wKICAgICBQeV9YREVDUkVGKHgpCkBAIC0yNzEsNTEgKzIzNCw0MyBAQAogc3RhdGljIFB5T2JqZWN0KgogUHlMb2NhbGVfc3RyeGZybShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7Ci0gICAgUHlfVU5JQ09ERSAqczA7Ci0gICAgUHlfc3NpemVfdCBuMDsKLSAgICB3Y2hhcl90ICpzLCAqYnVmID0gTlVMTDsKLSAgICBzaXplX3QgbjEsIG4yOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgUHlfc3NpemVfdCBuMTsKKyAgICB3Y2hhcl90ICpzID0gTlVMTCwgKmJ1ZiA9IE5VTEw7CisgICAgc2l6ZV90IG4yOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotI2lmIFB5X1VOSUNPREVfU0laRSAhPSBTSVpFT0ZfV0NIQVJfVAotICAgIFB5X3NzaXplX3QgaTsKLSNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1IzpzdHJ4ZnJtIiwgJnMwLCAmbjApKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpzdHJ4ZnJtIiwgJnN0cikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0jaWYgUHlfVU5JQ09ERV9TSVpFID09IFNJWkVPRl9XQ0hBUl9UCi0gICAgcyA9ICh3Y2hhcl90ICopIHMwOwotI2Vsc2UKLSAgICBzID0gUHlNZW1fTWFsbG9jKChuMCsxKSpzaXplb2Yod2NoYXJfdCkpOwotICAgIGlmICghcykKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgZm9yIChpPTA7IGk8PW4wOyBpKyspCi0gICAgICAgIHNbaV0gPSBzMFtpXTsKLSNlbmRpZgorICAgIHMgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhzdHIsICZuMSk7CisgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgZ290byBleGl0OwogCiAgICAgLyogYXNzdW1lIG5vIGNoYW5nZSBpbiBzaXplLCBmaXJzdCAqLwotICAgIG4xID0gd2NzbGVuKHMpICsgMTsKLSAgICBidWYgPSBQeU1lbV9NYWxsb2MobjEqc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBuMSA9IG4xICsgMTsKKyAgICBidWYgPSBQeU1lbV9NYWxsb2MobjEgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgIGlmICghYnVmKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAgICAgbjIgPSB3Y3N4ZnJtKGJ1ZiwgcywgbjEpOwotICAgIGlmIChuMiA+PSBuMSkgeworICAgIGlmIChuMiA+PSAoc2l6ZV90KW4xKSB7CiAgICAgICAgIC8qIG1vcmUgc3BhY2UgbmVlZGVkICovCi0gICAgICAgIGJ1ZiA9IFB5TWVtX1JlYWxsb2MoYnVmLCAobjIrMSkqc2l6ZW9mKHdjaGFyX3QpKTsKLSAgICAgICAgaWYgKCFidWYpIHsKKyAgICAgICAgd2NoYXJfdCAqIG5ld19idWYgPSBQeU1lbV9SZWFsbG9jKGJ1ZiwgKG4yKzEpKnNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIGlmICghbmV3X2J1ZikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQorICAgICAgICBidWYgPSBuZXdfYnVmOwogICAgICAgICBuMiA9IHdjc3hmcm0oYnVmLCBzLCBuMisxKTsKICAgICB9CiAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihidWYsIG4yKTsKLSBleGl0OgotICAgIGlmIChidWYpIFB5TWVtX0ZyZWUoYnVmKTsKLSNpZiBQeV9VTklDT0RFX1NJWkUgIT0gU0laRU9GX1dDSEFSX1QKLSAgICBQeU1lbV9GcmVlKHMpOwotI2VuZGlmCitleGl0OgorICAgIGlmIChidWYpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICBpZiAocykKKyAgICAgICAgUHlNZW1fRnJlZShzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCkBAIC00ODUsNyArNDQwLDcgQEAKICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgYW4gZW1wdHkgc3RyaW5nIGZvciBubF9sYW5naW5mbyhFUkEpLiAgKi8KICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlc3VsdCA9IG5sX2xhbmdpbmZvKGl0ZW0pOwogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICE9IE5VTEwgPyByZXN1bHQgOiAiIjsKLSAgICAgICAgICAgIHJldHVybiBzdHIydW5pKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZShyZXN1bHQsIE5VTEwpOwogICAgICAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ1bnN1cHBvcnRlZCBsYW5naW5mbyBjb25zdGFudCIpOwogICAgIHJldHVybiBOVUxMOwpAQCAtNTA0LDcgKzQ1OSw3IEBACiAgICAgY2hhciAqaW47CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiwgJmluKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0cjJ1bmkoZ2V0dGV4dChpbikpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGdldHRleHQoaW4pLCBOVUxMKTsKIH0KIAogUHlEb2NfU1RSVkFSKGRnZXR0ZXh0X19kb2NfXywKQEAgLTUxNyw3ICs0NzIsNyBAQAogICAgIGNoYXIgKmRvbWFpbiwgKmluOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAienMiLCAmZG9tYWluLCAmaW4pKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RyMnVuaShkZ2V0dGV4dChkb21haW4sIGluKSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoZGdldHRleHQoZG9tYWluLCBpbiksIE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIoZGNnZXR0ZXh0X19kb2NfXywKQEAgLTUzMSw3ICs0ODYsNyBAQAogICAgIGludCBjYXRlZ29yeTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInpzaSIsICZkb21haW4sICZtc2dpZCwgJmNhdGVnb3J5KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0cjJ1bmkoZGNnZXR0ZXh0KGRvbWFpbixtc2dpZCxjYXRlZ29yeSkpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGRjZ2V0dGV4dChkb21haW4sbXNnaWQsY2F0ZWdvcnkpLCBOVUxMKTsKIH0KIAogUHlEb2NfU1RSVkFSKHRleHRkb21haW5fX2RvY19fLApAQCAtNTQ5LDcgKzUwNCw3IEBACiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBzdHIydW5pKGRvbWFpbik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoZG9tYWluLCBOVUxMKTsKIH0KIAogUHlEb2NfU1RSVkFSKGJpbmR0ZXh0ZG9tYWluX19kb2NfXywKQEAgLTU4MSw3ICs1MzYsNyBAQAogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHQgPSBzdHIydW5pKGN1cnJlbnRfZGlybmFtZSk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZShjdXJyZW50X2Rpcm5hbWUsIE5VTEwpOwogICAgIFB5X1hERUNSRUYoZGlybmFtZV9ieXRlcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTU5OSw3ICs1NTQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjb2Rlc2V0ID0gYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoZG9tYWluLCBjb2Rlc2V0KTsKICAgICBpZiAoY29kZXNldCkKLSAgICAgICAgcmV0dXJuIHN0cjJ1bmkoY29kZXNldCk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGNvZGVzZXQsIE5VTEwpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sc3Byb2YuYyBiL01vZHVsZXMvX2xzcHJvZi5jCmluZGV4IGNjNDEyYmYuLmIwYTIyNmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2xzcHJvZi5jCisrKyBiL01vZHVsZXMvX2xzcHJvZi5jCkBAIC0xNzYsMzYgKzE3NiwyOSBAQAogICAgIGlmIChmbi0+bV9zZWxmID09IE5VTEwpIHsKICAgICAgICAgLyogYnVpbHQtaW4gZnVuY3Rpb246IGxvb2sgdXAgdGhlIG1vZHVsZSBuYW1lICovCiAgICAgICAgIFB5T2JqZWN0ICptb2QgPSBmbi0+bV9tb2R1bGU7Ci0gICAgICAgIGNvbnN0IGNoYXIgKm1vZG5hbWU7Ci0gICAgICAgIGlmIChtb2QgJiYgUHlVbmljb2RlX0NoZWNrKG1vZCkpIHsKLSAgICAgICAgICAgIC8qIFhYWDogVGhlIGZvbGxvd2luZyB3aWxsIHRydW5jYXRlIG1vZHVsZSBuYW1lcyB3aXRoIGVtYmVkZGVkCi0gICAgICAgICAgICAgKiBudWxsLWNoYXJhY3RlcnMuICBJdCBpcyB1bmxpa2VseSB0aGF0IHRoaXMgY2FuIGhhcHBlbiBpbgotICAgICAgICAgICAgICogcHJhY3RpY2UgYW5kIHRoZSBjb25jZXF1ZW5jZXMgYXJlIG5vdCBzZXJpb3VzIGVub3VnaCB0bwotICAgICAgICAgICAgICogaW50cm9kdWNlIGV4dHJhIGNoZWNrcyBoZXJlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBtb2RuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhtb2QpOwotICAgICAgICAgICAgaWYgKG1vZG5hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIG1vZG5hbWUgPSAiPGVuY29kaW5nIGVycm9yPiI7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgUHlPYmplY3QgKm1vZG5hbWUgPSBOVUxMOworICAgICAgICBpZiAobW9kICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobW9kKSkgeworICAgICAgICAgICAgICAgIG1vZG5hbWUgPSBtb2Q7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKG1vZG5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoUHlNb2R1bGVfQ2hlY2sobW9kKSkgeworICAgICAgICAgICAgICAgIG1vZG5hbWUgPSBQeU1vZHVsZV9HZXROYW1lT2JqZWN0KG1vZCk7CisgICAgICAgICAgICAgICAgaWYgKG1vZG5hbWUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChtb2QgJiYgUHlNb2R1bGVfQ2hlY2sobW9kKSkgewotICAgICAgICAgICAgbW9kbmFtZSA9IFB5TW9kdWxlX0dldE5hbWUobW9kKTsKLSAgICAgICAgICAgIGlmIChtb2RuYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIG1vZG5hbWUgPSAiYnVpbHRpbnMiOworICAgICAgICBpZiAobW9kbmFtZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobW9kbmFtZSwgImJ1aWx0aW5zIikgIT0gMCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlVS4lcz4iLCBtb2RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobW9kbmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihtb2RuYW1lKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1vZG5hbWUgPSAiYnVpbHRpbnMiOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzdHJjbXAobW9kbmFtZSwgImJ1aWx0aW5zIikgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzLiVzPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbi0+bV9tbC0+bWxfbmFtZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4tPm1fbWwtPm1sX25hbWUpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcz4iLCBmbi0+bV9tbC0+bWxfbmFtZSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBidWlsdC1pbiBtZXRob2Q6IHRyeSB0byByZXR1cm4KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDgyYTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCkBAIC0wLDAgKzEsMTI4NiBAQAorLyogX2x6bWEgLSBMb3ctbGV2ZWwgUHl0aG9uIGludGVyZmFjZSB0byBsaWJsem1hLgorCisgICBJbml0aWFsIGltcGxlbWVudGF0aW9uIGJ5IFBlciDDmHl2aW5kIEthcmxzZW4uCisgICBSZXdyaXR0ZW4gYnkgTmFkZWVtIFZhd2RhLgorCisqLworCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2lmZGVmIFdJVEhfVEhSRUFECisjaW5jbHVkZSAicHl0aHJlYWQuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxsem1hLmg+CisKKworI2lmbmRlZiBQWV9MT05HX0xPTkcKKyNlcnJvciAiVGhpcyBtb2R1bGUgcmVxdWlyZXMgUFlfTE9OR19MT05HIHRvIGJlIGRlZmluZWQiCisjZW5kaWYKKworCisjaWZkZWYgV0lUSF9USFJFQUQKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikgZG8geyBcCisgICAgaWYgKCFQeVRocmVhZF9hY3F1aXJlX2xvY2soKG9iaiktPmxvY2ssIDApKSB7IFwKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyBcCisgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMSk7IFwKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMgXAorICAgIH0gfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKChvYmopLT5sb2NrKQorI2Vsc2UKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikKKyNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikKKyNlbmRpZgorCisKKy8qIENvbnRhaW5lciBmb3JtYXRzOiAqLworZW51bSB7CisgICAgRk9STUFUX0FVVE8sCisgICAgRk9STUFUX1haLAorICAgIEZPUk1BVF9BTE9ORSwKKyAgICBGT1JNQVRfUkFXLAorfTsKKworI2RlZmluZSBMWk1BX0NIRUNLX1VOS05PV04gKExaTUFfQ0hFQ0tfSURfTUFYICsgMSkKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGx6bWFfc3RyZWFtIGx6czsKKyAgICBpbnQgZmx1c2hlZDsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IENvbXByZXNzb3I7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgbHptYV9zdHJlYW0gbHpzOworICAgIGludCBjaGVjazsKKyAgICBjaGFyIGVvZjsKKyAgICBQeU9iamVjdCAqdW51c2VkX2RhdGE7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKyNlbmRpZgorfSBEZWNvbXByZXNzb3I7CisKKy8qIExaTUFFcnJvciBjbGFzcyBvYmplY3QuICovCitzdGF0aWMgUHlPYmplY3QgKkVycm9yOworCisvKiBBbiBlbXB0eSB0dXBsZSwgdXNlZCBieSB0aGUgZmlsdGVyIHNwZWNpZmllciBwYXJzaW5nIGNvZGUuICovCitzdGF0aWMgUHlPYmplY3QgKmVtcHR5X3R1cGxlOworCisKKy8qIEhlbHBlciBmdW5jdGlvbnMuICovCisKK3N0YXRpYyBpbnQKK2NhdGNoX2x6bWFfZXJyb3IobHptYV9yZXQgbHpyZXQpCit7CisgICAgc3dpdGNoIChsenJldCkgeworICAgICAgICBjYXNlIExaTUFfT0s6CisgICAgICAgIGNhc2UgTFpNQV9HRVRfQ0hFQ0s6CisgICAgICAgIGNhc2UgTFpNQV9OT19DSEVDSzoKKyAgICAgICAgY2FzZSBMWk1BX1NUUkVBTV9FTkQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBMWk1BX1VOU1VQUE9SVEVEX0NIRUNLOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiVW5zdXBwb3J0ZWQgaW50ZWdyaXR5IGNoZWNrIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX01FTV9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX01FTUxJTUlUX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiTWVtb3J5IHVzYWdlIGxpbWl0IGV4Y2VlZGVkIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX0ZPUk1BVF9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIklucHV0IGZvcm1hdCBub3Qgc3VwcG9ydGVkIGJ5IGRlY29kZXIiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfT1BUSU9OU19FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIkludmFsaWQgb3IgdW5zdXBwb3J0ZWQgb3B0aW9ucyIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTFpNQV9EQVRBX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiQ29ycnVwdCBpbnB1dCBkYXRhIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX0JVRl9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIkluc3VmZmljaWVudCBidWZmZXIgc3BhY2UiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfUFJPR19FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIkludGVybmFsIGVycm9yIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChFcnJvciwgIlVucmVjb2duaXplZCBlcnJvciBmcm9tIGxpYmx6bWE6ICVkIiwgbHpyZXQpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCisjaWYgQlVGU0laIDwgODE5MgorI2RlZmluZSBJTklUSUFMX0JVRkZFUl9TSVpFIDgxOTIKKyNlbHNlCisjZGVmaW5lIElOSVRJQUxfQlVGRkVSX1NJWkUgQlVGU0laCisjZW5kaWYKKworc3RhdGljIGludAorZ3Jvd19idWZmZXIoUHlPYmplY3QgKipidWYpCit7CisgICAgc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOworICAgIHJldHVybiBfUHlCeXRlc19SZXNpemUoYnVmLCBzaXplICsgKHNpemUgPj4gMykgKyA2KTsKK30KKworCisvKiBTb21lIGN1c3RvbSB0eXBlIGNvbnZlcnNpb25zIGZvciBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKSwKKyAgIHNpbmNlIHRoZSBwcmVkZWZpbmVkIGNvbnZlcnNpb24gc3BlY2lmaWVycyBkbyBub3Qgc3VpdCBvdXIgbmVlZHM6CisKKyAgICAgIHVpbnQzMl90IC0gdGhlICJJIiAodW5zaWduZWQgaW50KSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0IHNpemUsIGJ1dAorICAgICAgc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvd3Mgb24gY29udmVyc2lvbi4KKworICAgICAgbHptYV92bGkgLSB0aGUgIksiICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQKKyAgICAgIHNpemUsIGJ1dCBsaWtlICJJIiBpdCBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93cyBvbiBjb252ZXJzaW9uLgorCisgICAgICBsem1hX21vZGUgYW5kIGx6bWFfbWF0Y2hfZmluZGVyIC0gdGhlc2UgYXJlIGVudW1lcmF0aW9uIHR5cGVzLCBhbmQKKyAgICAgIHNvIHRoZSBzaXplIG9mIGVhY2ggaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gV29yc2UsIGRpZmZlcmVudAorICAgICAgZW51bSB0eXBlcyBjYW4gYmUgb2YgZGlmZmVyZW50IHNpemVzIHdpdGhpbiB0aGUgc2FtZSBwcm9ncmFtLCBzbworICAgICAgdG8gYmUgc3RyaWN0bHkgY29ycmVjdCwgd2UgbmVlZCB0byBkZWZpbmUgdHdvIHNlcGFyYXRlIGNvbnZlcnRlcnMuCisgKi8KKworI2RlZmluZSBJTlRfVFlQRV9DT05WRVJURVJfRlVOQyhUWVBFLCBGVU5DTkFNRSkgXAorICAgIHN0YXRpYyBpbnQgXAorICAgIEZVTkNOQU1FKFB5T2JqZWN0ICpvYmosIHZvaWQgKnB0cikgXAorICAgIHsgXAorICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOyBcCisgICAgICAgIFwKKyAgICAgICAgdmFsID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhvYmopOyBcCisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSBcCisgICAgICAgICAgICByZXR1cm4gMDsgXAorICAgICAgICBpZiAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoVFlQRSl2YWwgIT0gdmFsKSB7IFwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIHRvbyBsYXJnZSBmb3IgIiAjVFlQRSAiIHR5cGUiKTsgXAorICAgICAgICAgICAgcmV0dXJuIDA7IFwKKyAgICAgICAgfSBcCisgICAgICAgICooVFlQRSAqKXB0ciA9IChUWVBFKXZhbDsgXAorICAgICAgICByZXR1cm4gMTsgXAorICAgIH0KKworSU5UX1RZUEVfQ09OVkVSVEVSX0ZVTkModWludDMyX3QsIHVpbnQzMl9jb252ZXJ0ZXIpCitJTlRfVFlQRV9DT05WRVJURVJfRlVOQyhsem1hX3ZsaSwgbHptYV92bGlfY29udmVydGVyKQorSU5UX1RZUEVfQ09OVkVSVEVSX0ZVTkMobHptYV9tb2RlLCBsem1hX21vZGVfY29udmVydGVyKQorSU5UX1RZUEVfQ09OVkVSVEVSX0ZVTkMobHptYV9tYXRjaF9maW5kZXIsIGx6bWFfbWZfY29udmVydGVyKQorCisjdW5kZWYgSU5UX1RZUEVfQ09OVkVSVEVSX0ZVTkMKKworCisvKiBGaWx0ZXIgc3BlY2lmaWVyIHBhcnNpbmcuCisKKyAgIFRoaXMgY29kZSBoYW5kbGVzIGNvbnZlcnRpbmcgZmlsdGVyIHNwZWNpZmllcnMgKFB5dGhvbiBkaWN0cykgaW50bworICAgdGhlIEMgbHptYV9maWx0ZXIgc3RydWN0cyBleHBlY3RlZCBieSBsaWJsem1hLiAqLworCitzdGF0aWMgdm9pZCAqCitwYXJzZV9maWx0ZXJfc3BlY19sem1hKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHN0YXRpYyBjaGFyICpvcHRuYW1lc1tdID0geyJpZCIsICJwcmVzZXQiLCAiZGljdF9zaXplIiwgImxjIiwgImxwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGIiLCAibW9kZSIsICJuaWNlX2xlbiIsICJtZiIsICJkZXB0aCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppZDsKKyAgICBQeU9iamVjdCAqcHJlc2V0X29iajsKKyAgICB1aW50MzJfdCBwcmVzZXQgPSBMWk1BX1BSRVNFVF9ERUZBVUxUOworICAgIGx6bWFfb3B0aW9uc19sem1hICpvcHRpb25zOworCisgICAgLyogRmlyc3QsIGZpbGwgaW4gZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgb3B0aW9ucyB1c2luZyBhIHByZXNldC4KKyAgICAgICBUaGVuLCBvdmVycmlkZSB0aGUgZGVmYXVsdHMgd2l0aCBhbnkgdmFsdWVzIGdpdmVuIGJ5IHRoZSBjYWxsZXIuICovCisKKyAgICBwcmVzZXRfb2JqID0gUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcoc3BlYywgInByZXNldCIpOworICAgIGlmIChwcmVzZXRfb2JqID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IG9rID0gdWludDMyX2NvbnZlcnRlcihwcmVzZXRfb2JqLCAmcHJlc2V0KTsKKyAgICAgICAgUHlfREVDUkVGKHByZXNldF9vYmopOworICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3B0aW9ucyA9IChsem1hX29wdGlvbnNfbHptYSAqKVB5TWVtX01hbGxvYyhzaXplb2YgKm9wdGlvbnMpOworICAgIGlmIChvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG1lbXNldChvcHRpb25zLCAwLCBzaXplb2YgKm9wdGlvbnMpOworCisgICAgaWYgKGx6bWFfbHptYV9wcmVzZXQob3B0aW9ucywgcHJlc2V0KSkgeworICAgICAgICBQeU1lbV9GcmVlKG9wdGlvbnMpOworICAgICAgICBQeUVycl9Gb3JtYXQoRXJyb3IsICJJbnZhbGlkIGNvbXByZXNzaW9uIHByZXNldDogJWQiLCBwcmVzZXQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhlbXB0eV90dXBsZSwgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifE9PTyZPJk8mTyZPJk8mTyZPJiIsIG9wdG5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpZCwgJnByZXNldF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX2NvbnZlcnRlciwgJm9wdGlvbnMtPmRpY3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfY29udmVydGVyLCAmb3B0aW9ucy0+bGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX2NvbnZlcnRlciwgJm9wdGlvbnMtPmxwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl9jb252ZXJ0ZXIsICZvcHRpb25zLT5wYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsem1hX21vZGVfY29udmVydGVyLCAmb3B0aW9ucy0+bW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfY29udmVydGVyLCAmb3B0aW9ucy0+bmljZV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHptYV9tZl9jb252ZXJ0ZXIsICZvcHRpb25zLT5tZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfY29udmVydGVyLCAmb3B0aW9ucy0+ZGVwdGgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZmlsdGVyIHNwZWNpZmllciBmb3IgTFpNQSBmaWx0ZXIiKTsKKyAgICAgICAgUHlNZW1fRnJlZShvcHRpb25zKTsKKyAgICAgICAgb3B0aW9ucyA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiBvcHRpb25zOworfQorCitzdGF0aWMgdm9pZCAqCitwYXJzZV9maWx0ZXJfc3BlY19kZWx0YShQeU9iamVjdCAqc3BlYykKK3sKKyAgICBzdGF0aWMgY2hhciAqb3B0bmFtZXNbXSA9IHsiaWQiLCAiZGlzdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppZDsKKyAgICB1aW50MzJfdCBkaXN0ID0gMTsKKyAgICBsem1hX29wdGlvbnNfZGVsdGEgKm9wdGlvbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhlbXB0eV90dXBsZSwgc3BlYywgInxPTyYiLCBvcHRuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaWQsIHVpbnQzMl9jb252ZXJ0ZXIsICZkaXN0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZpbHRlciBzcGVjaWZpZXIgZm9yIGRlbHRhIGZpbHRlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvcHRpb25zID0gKGx6bWFfb3B0aW9uc19kZWx0YSAqKVB5TWVtX01hbGxvYyhzaXplb2YgKm9wdGlvbnMpOworICAgIGlmIChvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG1lbXNldChvcHRpb25zLCAwLCBzaXplb2YgKm9wdGlvbnMpOworICAgIG9wdGlvbnMtPnR5cGUgPSBMWk1BX0RFTFRBX1RZUEVfQllURTsKKyAgICBvcHRpb25zLT5kaXN0ID0gZGlzdDsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworc3RhdGljIHZvaWQgKgorcGFyc2VfZmlsdGVyX3NwZWNfYmNqKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHN0YXRpYyBjaGFyICpvcHRuYW1lc1tdID0geyJpZCIsICJzdGFydF9vZmZzZXQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqaWQ7CisgICAgdWludDMyX3Qgc3RhcnRfb2Zmc2V0ID0gMDsKKyAgICBsem1hX29wdGlvbnNfYmNqICpvcHRpb25zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoZW1wdHlfdHVwbGUsIHNwZWMsICJ8T08mIiwgb3B0bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlkLCB1aW50MzJfY29udmVydGVyLCAmc3RhcnRfb2Zmc2V0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZpbHRlciBzcGVjaWZpZXIgZm9yIEJDSiBmaWx0ZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3B0aW9ucyA9IChsem1hX29wdGlvbnNfYmNqICopUHlNZW1fTWFsbG9jKHNpemVvZiAqb3B0aW9ucyk7CisgICAgaWYgKG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgbWVtc2V0KG9wdGlvbnMsIDAsIHNpemVvZiAqb3B0aW9ucyk7CisgICAgb3B0aW9ucy0+c3RhcnRfb2Zmc2V0ID0gc3RhcnRfb2Zmc2V0OworICAgIHJldHVybiBvcHRpb25zOworfQorCitzdGF0aWMgdm9pZCAqCitwYXJzZV9maWx0ZXJfc3BlYyhsem1hX2ZpbHRlciAqZiwgUHlPYmplY3QgKnNwZWMpCit7CisgICAgUHlPYmplY3QgKmlkX29iajsKKworICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKHNwZWMpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiRmlsdGVyIHNwZWNpZmllciBtdXN0IGJlIGEgZGljdCBvciBkaWN0LWxpa2Ugb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZF9vYmogPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyhzcGVjLCAiaWQiKTsKKyAgICBpZiAoaWRfb2JqID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbHRlciBzcGVjaWZpZXIgbXVzdCBoYXZlIGFuIFwiaWRcIiBlbnRyeSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZi0+aWQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKGlkX29iaik7CisgICAgUHlfREVDUkVGKGlkX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3dpdGNoIChmLT5pZCkgeworICAgICAgICBjYXNlIExaTUFfRklMVEVSX0xaTUExOgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0xaTUEyOgorICAgICAgICAgICAgZi0+b3B0aW9ucyA9IHBhcnNlX2ZpbHRlcl9zcGVjX2x6bWEoc3BlYyk7CisgICAgICAgICAgICByZXR1cm4gZi0+b3B0aW9uczsKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9ERUxUQToKKyAgICAgICAgICAgIGYtPm9wdGlvbnMgPSBwYXJzZV9maWx0ZXJfc3BlY19kZWx0YShzcGVjKTsKKyAgICAgICAgICAgIHJldHVybiBmLT5vcHRpb25zOworICAgICAgICBjYXNlIExaTUFfRklMVEVSX1g4NjoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9QT1dFUlBDOgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0lBNjQ6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfQVJNOgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0FSTVRIVU1COgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX1NQQVJDOgorICAgICAgICAgICAgZi0+b3B0aW9ucyA9IHBhcnNlX2ZpbHRlcl9zcGVjX2JjaihzcGVjKTsKKyAgICAgICAgICAgIHJldHVybiBmLT5vcHRpb25zOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGZpbHRlciBJRDogJWxsdSIsIGYtPmlkKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2ZyZWVfZmlsdGVyX2NoYWluKGx6bWFfZmlsdGVyIGZpbHRlcnNbXSkKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGZpbHRlcnNbaV0uaWQgIT0gTFpNQV9WTElfVU5LTk9XTjsgaSsrKQorICAgICAgICBQeU1lbV9GcmVlKGZpbHRlcnNbaV0ub3B0aW9ucyk7Cit9CisKK3N0YXRpYyBpbnQKK3BhcnNlX2ZpbHRlcl9jaGFpbl9zcGVjKGx6bWFfZmlsdGVyIGZpbHRlcnNbXSwgUHlPYmplY3QgKmZpbHRlcnNwZWNzKQoreworICAgIFB5X3NzaXplX3QgaSwgbnVtX2ZpbHRlcnM7CisKKyAgICBudW1fZmlsdGVycyA9IFB5U2VxdWVuY2VfTGVuZ3RoKGZpbHRlcnNwZWNzKTsKKyAgICBpZiAobnVtX2ZpbHRlcnMgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobnVtX2ZpbHRlcnMgPiBMWk1BX0ZJTFRFUlNfTUFYKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIlRvbyBtYW55IGZpbHRlcnMgLSBsaWJsem1hIHN1cHBvcnRzIGEgbWF4aW11bSBvZiAlZCIsCisgICAgICAgICAgICAgICAgICAgICBMWk1BX0ZJTFRFUlNfTUFYKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBudW1fZmlsdGVyczsgaSsrKSB7CisgICAgICAgIGludCBvayA9IDE7CisgICAgICAgIFB5T2JqZWN0ICpzcGVjID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGZpbHRlcnNwZWNzLCBpKTsKKyAgICAgICAgaWYgKHNwZWMgPT0gTlVMTCB8fCBwYXJzZV9maWx0ZXJfc3BlYygmZmlsdGVyc1tpXSwgc3BlYykgPT0gTlVMTCkKKyAgICAgICAgICAgIG9rID0gMDsKKyAgICAgICAgUHlfWERFQ1JFRihzcGVjKTsKKyAgICAgICAgaWYgKCFvaykgeworICAgICAgICAgICAgZmlsdGVyc1tpXS5pZCA9IExaTUFfVkxJX1VOS05PV047CisgICAgICAgICAgICBmcmVlX2ZpbHRlcl9jaGFpbihmaWx0ZXJzKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmaWx0ZXJzW251bV9maWx0ZXJzXS5pZCA9IExaTUFfVkxJX1VOS05PV047CisgICAgcmV0dXJuIDA7Cit9CisKKworLyogRmlsdGVyIHNwZWNpZmllciBjb25zdHJ1Y3Rpb24uCisKKyAgIFRoaXMgY29kZSBoYW5kbGVzIGNvbnZlcnRpbmcgQyBsem1hX2ZpbHRlciBzdHJ1Y3RzIGludG8KKyAgIFB5dGhvbi1sZXZlbCBmaWx0ZXIgc3BlY2lmaWVycyAocmVwcmVzZW50ZWQgYXMgZGljdHMpLiAqLworCitzdGF0aWMgaW50CitzcGVjX2FkZF9maWVsZChQeU9iamVjdCAqc3BlYywgX1B5X0lkZW50aWZpZXIgKmtleSwgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbHVlKQoreworICAgIGludCBzdGF0dXM7CisgICAgUHlPYmplY3QgKnZhbHVlX29iamVjdDsKKworICAgIHZhbHVlX29iamVjdCA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7CisgICAgaWYgKHZhbHVlX29iamVjdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBzdGF0dXMgPSBfUHlEaWN0X1NldEl0ZW1JZChzcGVjLCBrZXksIHZhbHVlX29iamVjdCk7CisgICAgUHlfREVDUkVGKHZhbHVlX29iamVjdCk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWxkX2ZpbHRlcl9zcGVjKGNvbnN0IGx6bWFfZmlsdGVyICpmKQoreworICAgIFB5T2JqZWN0ICpzcGVjOworCisgICAgc3BlYyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoc3BlYyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2RlZmluZSBBRERfRklFTEQoU09VUkNFLCBGSUVMRCkgXAorICAgIGRvIHsgXAorICAgICAgICBfUHlfSURFTlRJRklFUihGSUVMRCk7IFwKKyAgICAgICAgaWYgKHNwZWNfYWRkX2ZpZWxkKHNwZWMsICZQeUlkXyMjRklFTEQsIFNPVVJDRS0+RklFTEQpID09IC0xKSBcCisgICAgICAgICAgICBnb3RvIGVycm9yO1wKKyAgICB9IHdoaWxlICgwKQorCisgICAgQUREX0ZJRUxEKGYsIGlkKTsKKworICAgIHN3aXRjaCAoZi0+aWQpIHsKKyAgICAgICAgLyogRm9yIExaTUExIGZpbHRlcnMsIGx6bWFfcHJvcGVydGllc197ZW5jb2RlLGRlY29kZX0oKSBvbmx5IGxvb2sgYXQgdGhlCisgICAgICAgICAgIGxjLCBscCwgcGIsIGFuZCBkaWN0X3NpemUgZmllbGRzLiBGb3IgTFpNQTIgZmlsdGVycywgb25seSB0aGUKKyAgICAgICAgICAgZGljdF9zaXplIGZpZWxkIGlzIHVzZWQuICovCisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfTFpNQTE6IHsKKyAgICAgICAgICAgIGx6bWFfb3B0aW9uc19sem1hICpvcHRpb25zID0gZi0+b3B0aW9uczsKKyAgICAgICAgICAgIEFERF9GSUVMRChvcHRpb25zLCBsYyk7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgbHApOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIHBiKTsKKyAgICAgICAgICAgIEFERF9GSUVMRChvcHRpb25zLCBkaWN0X3NpemUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9MWk1BMjogeworICAgICAgICAgICAgbHptYV9vcHRpb25zX2x6bWEgKm9wdGlvbnMgPSBmLT5vcHRpb25zOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIGRpY3Rfc2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0RFTFRBOiB7CisgICAgICAgICAgICBsem1hX29wdGlvbnNfZGVsdGEgKm9wdGlvbnMgPSBmLT5vcHRpb25zOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIGRpc3QpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9YODY6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfUE9XRVJQQzoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9JQTY0OgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0FSTToKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9BUk1USFVNQjoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9TUEFSQzogeworICAgICAgICAgICAgbHptYV9vcHRpb25zX2JjaiAqb3B0aW9ucyA9IGYtPm9wdGlvbnM7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgc3RhcnRfb2Zmc2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZmlsdGVyIElEOiAlbGx1IiwgZi0+aWQpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyN1bmRlZiBBRERfRklFTEQKKworICAgIHJldHVybiBzcGVjOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoc3BlYyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworLyogTFpNQUNvbXByZXNzb3IgY2xhc3MuICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitjb21wcmVzcyhDb21wcmVzc29yICpjLCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuLCBsem1hX2FjdGlvbiBhY3Rpb24pCit7CisgICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgSU5JVElBTF9CVUZGRVJfU0laRSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjLT5senMubmV4dF9pbiA9IGRhdGE7CisgICAgYy0+bHpzLmF2YWlsX2luID0gbGVuOworICAgIGMtPmx6cy5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICBjLT5senMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBsenJldCA9IGx6bWFfY29kZSgmYy0+bHpzLCBhY3Rpb24pOworICAgICAgICBkYXRhX3NpemUgPSAoY2hhciAqKWMtPmx6cy5uZXh0X291dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmICgoYWN0aW9uID09IExaTUFfUlVOICYmIGMtPmx6cy5hdmFpbF9pbiA9PSAwKSB8fAorICAgICAgICAgICAgKGFjdGlvbiA9PSBMWk1BX0ZJTklTSCAmJiBsenJldCA9PSBMWk1BX1NUUkVBTV9FTkQpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIGlmIChjLT5senMuYXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgYy0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOworICAgICAgICAgICAgYy0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpID09IC0xKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihDb21wcmVzc29yX2NvbXByZXNzX2RvYywKKyJjb21wcmVzcyhkYXRhKSAtPiBieXRlc1xuIgorIlxuIgorIlByb3ZpZGUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZlxuIgorImNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYlwiXCIgb3RoZXJ3aXNlLlxuIgorIlxuIgorIldoZW4geW91IGhhdmUgZmluaXNoZWQgcHJvdmlkaW5nIGRhdGEgdG8gdGhlIGNvbXByZXNzb3IsIGNhbGwgdGhlXG4iCisiZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb252ZXJzaW9uIHByb2Nlc3MuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0NvbXByZXNzb3JfY29tcHJlc3MoQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIGJ1ZmZlcjsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6Y29tcHJlc3MiLCAmYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPmZsdXNoZWQpCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ29tcHJlc3NvciBoYXMgYmVlbiBmbHVzaGVkIik7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBjb21wcmVzcyhzZWxmLCBidWZmZXIuYnVmLCBidWZmZXIubGVuLCBMWk1BX1JVTik7CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlEb2NfU1RSVkFSKENvbXByZXNzb3JfZmx1c2hfZG9jLAorImZsdXNoKCkgLT4gYnl0ZXNcbiIKKyJcbiIKKyJGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuIFJldHVybnMgdGhlIGNvbXByZXNzZWQgZGF0YSBsZWZ0XG4iCisiaW4gaW50ZXJuYWwgYnVmZmVycy5cbiIKKyJcbiIKKyJUaGUgY29tcHJlc3NvciBvYmplY3QgY2Fubm90IGJlIHVzZWQgYWZ0ZXIgdGhpcyBtZXRob2QgaXMgY2FsbGVkLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitDb21wcmVzc29yX2ZsdXNoKENvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPmZsdXNoZWQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJSZXBlYXRlZCBjYWxsIHRvIGZsdXNoKCkiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzZWxmLT5mbHVzaGVkID0gMTsKKyAgICAgICAgcmVzdWx0ID0gY29tcHJlc3Moc2VsZiwgTlVMTCwgMCwgTFpNQV9GSU5JU0gpOworICAgIH0KKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAorQ29tcHJlc3Nvcl9pbml0X3h6KGx6bWFfc3RyZWFtICpsenMsIGludCBjaGVjaywgdWludDMyX3QgcHJlc2V0LAorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcykKK3sKKyAgICBsem1hX3JldCBsenJldDsKKworICAgIGlmIChmaWx0ZXJzcGVjcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGx6cmV0ID0gbHptYV9lYXN5X2VuY29kZXIobHpzLCBwcmVzZXQsIGNoZWNrKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsem1hX2ZpbHRlciBmaWx0ZXJzW0xaTUFfRklMVEVSU19NQVggKyAxXTsKKworICAgICAgICBpZiAocGFyc2VfZmlsdGVyX2NoYWluX3NwZWMoZmlsdGVycywgZmlsdGVyc3BlY3MpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBsenJldCA9IGx6bWFfc3RyZWFtX2VuY29kZXIobHpzLCBmaWx0ZXJzLCBjaGVjayk7CisgICAgICAgIGZyZWVfZmlsdGVyX2NoYWluKGZpbHRlcnMpOworICAgIH0KKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitDb21wcmVzc29yX2luaXRfYWxvbmUobHptYV9zdHJlYW0gKmx6cywgdWludDMyX3QgcHJlc2V0LCBQeU9iamVjdCAqZmlsdGVyc3BlY3MpCit7CisgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICBpZiAoZmlsdGVyc3BlY3MgPT0gUHlfTm9uZSkgeworICAgICAgICBsem1hX29wdGlvbnNfbHptYSBvcHRpb25zOworCisgICAgICAgIGlmIChsem1hX2x6bWFfcHJlc2V0KCZvcHRpb25zLCBwcmVzZXQpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoRXJyb3IsICJJbnZhbGlkIGNvbXByZXNzaW9uIHByZXNldDogJWQiLCBwcmVzZXQpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGx6cmV0ID0gbHptYV9hbG9uZV9lbmNvZGVyKGx6cywgJm9wdGlvbnMpOworICAgIH0gZWxzZSB7CisgICAgICAgIGx6bWFfZmlsdGVyIGZpbHRlcnNbTFpNQV9GSUxURVJTX01BWCArIDFdOworCisgICAgICAgIGlmIChwYXJzZV9maWx0ZXJfY2hhaW5fc3BlYyhmaWx0ZXJzLCBmaWx0ZXJzcGVjcykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChmaWx0ZXJzWzBdLmlkID09IExaTUFfRklMVEVSX0xaTUExICYmCisgICAgICAgICAgICBmaWx0ZXJzWzFdLmlkID09IExaTUFfVkxJX1VOS05PV04pIHsKKyAgICAgICAgICAgIGx6cmV0ID0gbHptYV9hbG9uZV9lbmNvZGVyKGx6cywgZmlsdGVyc1swXS5vcHRpb25zKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZpbHRlciBjaGFpbiBmb3IgRk9STUFUX0FMT05FIC0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgc2luZ2xlIExaTUExIGZpbHRlciIpOworICAgICAgICAgICAgbHpyZXQgPSBMWk1BX1BST0dfRVJST1I7CisgICAgICAgIH0KKyAgICAgICAgZnJlZV9maWx0ZXJfY2hhaW4oZmlsdGVycyk7CisgICAgfQorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpIHx8IGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorQ29tcHJlc3Nvcl9pbml0X3Jhdyhsem1hX3N0cmVhbSAqbHpzLCBQeU9iamVjdCAqZmlsdGVyc3BlY3MpCit7CisgICAgbHptYV9maWx0ZXIgZmlsdGVyc1tMWk1BX0ZJTFRFUlNfTUFYICsgMV07CisgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICBpZiAoZmlsdGVyc3BlY3MgPT0gUHlfTm9uZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IHNwZWNpZnkgZmlsdGVycyBmb3IgRk9STUFUX1JBVyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChwYXJzZV9maWx0ZXJfY2hhaW5fc3BlYyhmaWx0ZXJzLCBmaWx0ZXJzcGVjcykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBsenJldCA9IGx6bWFfcmF3X2VuY29kZXIobHpzLCBmaWx0ZXJzKTsKKyAgICBmcmVlX2ZpbHRlcl9jaGFpbihmaWx0ZXJzKTsKKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitDb21wcmVzc29yX2luaXQoQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmFyZ19uYW1lc1tdID0geyJmb3JtYXQiLCAiY2hlY2siLCAicHJlc2V0IiwgImZpbHRlcnMiLCBOVUxMfTsKKyAgICBpbnQgZm9ybWF0ID0gRk9STUFUX1haOworICAgIGludCBjaGVjayA9IC0xOworICAgIHVpbnQzMl90IHByZXNldCA9IExaTUFfUFJFU0VUX0RFRkFVTFQ7CisgICAgUHlPYmplY3QgKnByZXNldF9vYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInxpaU9POkxaTUFDb21wcmVzc29yIiwgYXJnX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICZjaGVjaywgJnByZXNldF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpbHRlcnNwZWNzKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKGZvcm1hdCAhPSBGT1JNQVRfWFogJiYgY2hlY2sgIT0gLTEgJiYgY2hlY2sgIT0gTFpNQV9DSEVDS19OT05FKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludGVncml0eSBjaGVja3MgYXJlIG9ubHkgc3VwcG9ydGVkIGJ5IEZPUk1BVF9YWiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHByZXNldF9vYmogIT0gUHlfTm9uZSAmJiBmaWx0ZXJzcGVjcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5IGJvdGggcHJlc2V0IGFuZCBmaWx0ZXIgY2hhaW4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChwcmVzZXRfb2JqICE9IFB5X05vbmUpCisgICAgICAgIGlmICghdWludDMyX2NvbnZlcnRlcihwcmVzZXRfb2JqLCAmcHJlc2V0KSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgIlVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKworICAgIHNlbGYtPmZsdXNoZWQgPSAwOworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgIGNhc2UgRk9STUFUX1haOgorICAgICAgICAgICAgaWYgKGNoZWNrID09IC0xKQorICAgICAgICAgICAgICAgIGNoZWNrID0gTFpNQV9DSEVDS19DUkM2NDsKKyAgICAgICAgICAgIGlmIChDb21wcmVzc29yX2luaXRfeHooJnNlbGYtPmx6cywgY2hlY2ssIHByZXNldCwgZmlsdGVyc3BlY3MpICE9IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIEZPUk1BVF9BTE9ORToKKyAgICAgICAgICAgIGlmIChDb21wcmVzc29yX2luaXRfYWxvbmUoJnNlbGYtPmx6cywgcHJlc2V0LCBmaWx0ZXJzcGVjcykgIT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgRk9STUFUX1JBVzoKKyAgICAgICAgICAgIGlmIChDb21wcmVzc29yX2luaXRfcmF3KCZzZWxmLT5senMsIGZpbHRlcnNwZWNzKSAhPSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGNvbnRhaW5lciBmb3JtYXQ6ICVkIiwgZm9ybWF0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworICAgIHNlbGYtPmxvY2sgPSBOVUxMOworI2VuZGlmCisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgdm9pZAorQ29tcHJlc3Nvcl9kZWFsbG9jKENvbXByZXNzb3IgKnNlbGYpCit7CisgICAgbHptYV9lbmQoJnNlbGYtPmx6cyk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayAhPSBOVUxMKQorICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisjZW5kaWYKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgQ29tcHJlc3Nvcl9tZXRob2RzW10gPSB7CisgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilDb21wcmVzc29yX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIENvbXByZXNzb3JfY29tcHJlc3NfZG9jfSwKKyAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKUNvbXByZXNzb3JfZmx1c2gsIE1FVEhfTk9BUkdTLAorICAgICBDb21wcmVzc29yX2ZsdXNoX2RvY30sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIoQ29tcHJlc3Nvcl9kb2MsCisiTFpNQUNvbXByZXNzb3IoZm9ybWF0PUZPUk1BVF9YWiwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpXG4iCisiXG4iCisiQ3JlYXRlIGEgY29tcHJlc3NvciBvYmplY3QgZm9yIGNvbXByZXNzaW5nIGRhdGEgaW5jcmVtZW50YWxseS5cbiIKKyJcbiIKKyJmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb250YWluZXIgZm9ybWF0IHRvIHVzZSBmb3IgdGhlIG91dHB1dC4gVGhpcyBjYW5cbiIKKyJiZSBGT1JNQVRfWFogKGRlZmF1bHQpLCBGT1JNQVRfQUxPTkUsIG9yIEZPUk1BVF9SQVcuXG4iCisiXG4iCisiY2hlY2sgc3BlY2lmaWVzIHRoZSBpbnRlZ3JpdHkgY2hlY2sgdG8gdXNlLiBGb3IgRk9STUFUX1haLCB0aGUgZGVmYXVsdFxuIgorImlzIENIRUNLX0NSQzY0LiBGT1JNQVRfQUxPTkUgYW5kIEZPUk1BVF9SQVcgZG8gbm90IHN1cG9ydCBpbnRlZ3JpdHlcbiIKKyJjaGVja3M7IGZvciB0aGVzZSBmb3JtYXRzLCBjaGVjayBtdXN0IGJlIG9taXR0ZWQsIG9yIGJlIENIRUNLX05PTkUuXG4iCisiXG4iCisiVGhlIHNldHRpbmdzIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IgY2FuIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYVxuIgorInByZXNldCBjb21wcmVzc2lvbiBsZXZlbCAod2l0aCB0aGUgJ3ByZXNldCcgYXJndW1lbnQpLCBvciBpbiBkZXRhaWxcbiIKKyJhcyBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gKHdpdGggdGhlICdmaWx0ZXJzJyBhcmd1bWVudCkuIEZvciBGT1JNQVRfWFpcbiIKKyJhbmQgRk9STUFUX0FMT05FLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIFBSRVNFVF9ERUZBVUxUIHByZXNldFxuIgorImxldmVsLiBGb3IgRk9STUFUX1JBVywgdGhlIGNhbGxlciBtdXN0IGFsd2F5cyBzcGVjaWZ5IGEgZmlsdGVyIGNoYWluO1xuIgorInRoZSByYXcgY29tcHJlc3NvciBkb2VzIG5vdCBzdXBwb3J0IHByZXNldCBjb21wcmVzc2lvbiBsZXZlbHMuXG4iCisiXG4iCisicHJlc2V0IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAtOSwgb3B0aW9uYWxseVxuIgorIk9SLWVkIHdpdGggdGhlIGNvbnN0YW50IFBSRVNFVF9FWFRSRU1FLlxuIgorIlxuIgorImZpbHRlcnMgKGlmIHByb3ZpZGVkKSBzaG91bGQgYmUgYSBzZXF1ZW5jZSBvZiBkaWN0cy4gRWFjaCBkaWN0IHNob3VsZFxuIgorImhhdmUgYW4gZW50cnkgZm9yIFwiaWRcIiBpbmRpY2F0aW5nIHRoZSBJRCBvZiB0aGUgZmlsdGVyLCBwbHVzXG4iCisiYWRkaXRpb25hbCBlbnRyaWVzIGZvciBvcHRpb25zIHRvIHRoZSBmaWx0ZXIuXG4iCisiXG4iCisiRm9yIG9uZS1zaG90IGNvbXByZXNzaW9uLCB1c2UgdGhlIGNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC5cbiIpOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IENvbXByZXNzb3JfdHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2x6bWEuTFpNQUNvbXByZXNzb3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKENvbXByZXNzb3IpLCAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilDb21wcmVzc29yX2RlYWxsb2MsICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgQ29tcHJlc3Nvcl9kb2MsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBDb21wcmVzc29yX21ldGhvZHMsICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylDb21wcmVzc29yX2luaXQsICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCisvKiBMWk1BRGVjb21wcmVzc29yIGNsYXNzLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorZGVjb21wcmVzcyhEZWNvbXByZXNzb3IgKmQsIHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBsZW4pCit7CisgICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgSU5JVElBTF9CVUZGRVJfU0laRSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBkLT5senMubmV4dF9pbiA9IGRhdGE7CisgICAgZC0+bHpzLmF2YWlsX2luID0gbGVuOworICAgIGQtPmx6cy5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICBkLT5senMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBsenJldCA9IGx6bWFfY29kZSgmZC0+bHpzLCBMWk1BX1JVTik7CisgICAgICAgIGRhdGFfc2l6ZSA9IChjaGFyICopZC0+bHpzLm5leHRfb3V0IC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKGx6cmV0ID09IExaTUFfR0VUX0NIRUNLIHx8IGx6cmV0ID09IExaTUFfTk9fQ0hFQ0spCisgICAgICAgICAgICBkLT5jaGVjayA9IGx6bWFfZ2V0X2NoZWNrKCZkLT5senMpOworICAgICAgICBpZiAobHpyZXQgPT0gTFpNQV9TVFJFQU1fRU5EKSB7CisgICAgICAgICAgICBkLT5lb2YgPSAxOworICAgICAgICAgICAgaWYgKGQtPmx6cy5hdmFpbF9pbiA+IDApIHsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUihkLT51bnVzZWRfZGF0YSk7CisgICAgICAgICAgICAgICAgZC0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKAorICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilkLT5senMubmV4dF9pbiwgZC0+bHpzLmF2YWlsX2luKTsKKyAgICAgICAgICAgICAgICBpZiAoZC0+dW51c2VkX2RhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgaWYgKGQtPmx6cy5hdmFpbF9pbiA9PSAwKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIGlmIChkLT5senMuYXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZC0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOworICAgICAgICAgICAgZC0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpID09IC0xKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfZGVjb21wcmVzc19kb2MsCisiZGVjb21wcmVzcyhkYXRhKSAtPiBieXRlc1xuIgorIlxuIgorIlByb3ZpZGUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC4gUmV0dXJucyBhIGNodW5rIG9mXG4iCisiZGVjb21wcmVzc2VkIGRhdGEgaWYgcG9zc2libGUsIG9yIGJcIlwiIG90aGVyd2lzZS5cbiIKKyJcbiIKKyJBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXNcbiIKKyJyZWFjaGVkIHJhaXNlcyBhbiBFT0ZFcnJvci4gQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGVcbiIKKyJzdHJlYW0gaXMgaWdub3JlZCwgYW5kIHNhdmVkIGluIHRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0RlY29tcHJlc3Nvcl9kZWNvbXByZXNzKERlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIGJ1ZmZlcjsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6ZGVjb21wcmVzcyIsICZidWZmZXIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+ZW9mKQorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsICJBbHJlYWR5IGF0IGVuZCBvZiBzdHJlYW0iKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3Moc2VsZiwgYnVmZmVyLmJ1ZiwgYnVmZmVyLmxlbik7CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAorRGVjb21wcmVzc29yX2luaXRfcmF3KGx6bWFfc3RyZWFtICpsenMsIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcykKK3sKKyAgICBsem1hX2ZpbHRlciBmaWx0ZXJzW0xaTUFfRklMVEVSU19NQVggKyAxXTsKKyAgICBsem1hX3JldCBsenJldDsKKworICAgIGlmIChwYXJzZV9maWx0ZXJfY2hhaW5fc3BlYyhmaWx0ZXJzLCBmaWx0ZXJzcGVjcykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBsenJldCA9IGx6bWFfcmF3X2RlY29kZXIobHpzLCBmaWx0ZXJzKTsKKyAgICBmcmVlX2ZpbHRlcl9jaGFpbihmaWx0ZXJzKTsKKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitEZWNvbXByZXNzb3JfaW5pdChEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICphcmdfbmFtZXNbXSA9IHsiZm9ybWF0IiwgIm1lbWxpbWl0IiwgImZpbHRlcnMiLCBOVUxMfTsKKyAgICBjb25zdCB1aW50MzJfdCBkZWNvZGVyX2ZsYWdzID0gTFpNQV9URUxMX0FOWV9DSEVDSyB8IExaTUFfVEVMTF9OT19DSEVDSzsKKyAgICBpbnQgZm9ybWF0ID0gRk9STUFUX0FVVE87CisgICAgdWludDY0X3QgbWVtbGltaXQgPSBVSU5UNjRfTUFYOworICAgIFB5T2JqZWN0ICptZW1saW1pdF9vYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcyA9IFB5X05vbmU7CisgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInxpT086TFpNQURlY29tcHJlc3NvciIsIGFyZ19uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAmbWVtbGltaXRfb2JqLCAmZmlsdGVyc3BlY3MpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAobWVtbGltaXRfb2JqICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKGZvcm1hdCA9PSBGT1JNQVRfUkFXKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgbWVtb3J5IGxpbWl0IHdpdGggRk9STUFUX1JBVyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG1lbWxpbWl0ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhtZW1saW1pdF9vYmopOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoZm9ybWF0ID09IEZPUk1BVF9SQVcgJiYgZmlsdGVyc3BlY3MgPT0gUHlfTm9uZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IHNwZWNpZnkgZmlsdGVycyBmb3IgRk9STUFUX1JBVyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIGlmIChmb3JtYXQgIT0gRk9STUFUX1JBVyAmJiBmaWx0ZXJzcGVjcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5IGZpbHRlcnMgZXhjZXB0IHdpdGggRk9STUFUX1JBVyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAiVW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorCisgICAgc2VsZi0+Y2hlY2sgPSBMWk1BX0NIRUNLX1VOS05PV047CisgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIGlmIChzZWxmLT51bnVzZWRfZGF0YSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgY2FzZSBGT1JNQVRfQVVUTzoKKyAgICAgICAgICAgIGx6cmV0ID0gbHptYV9hdXRvX2RlY29kZXIoJnNlbGYtPmx6cywgbWVtbGltaXQsIGRlY29kZXJfZmxhZ3MpOworICAgICAgICAgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBGT1JNQVRfWFo6CisgICAgICAgICAgICBsenJldCA9IGx6bWFfc3RyZWFtX2RlY29kZXIoJnNlbGYtPmx6cywgbWVtbGltaXQsIGRlY29kZXJfZmxhZ3MpOworICAgICAgICAgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBGT1JNQVRfQUxPTkU6CisgICAgICAgICAgICBzZWxmLT5jaGVjayA9IExaTUFfQ0hFQ0tfTk9ORTsKKyAgICAgICAgICAgIGx6cmV0ID0gbHptYV9hbG9uZV9kZWNvZGVyKCZzZWxmLT5senMsIG1lbWxpbWl0KTsKKyAgICAgICAgICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgRk9STUFUX1JBVzoKKyAgICAgICAgICAgIHNlbGYtPmNoZWNrID0gTFpNQV9DSEVDS19OT05FOworICAgICAgICAgICAgaWYgKERlY29tcHJlc3Nvcl9pbml0X3Jhdygmc2VsZi0+bHpzLCBmaWx0ZXJzcGVjcykgPT0gLTEpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgY29udGFpbmVyIGZvcm1hdDogJWQiLCBmb3JtYXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCitlcnJvcjoKKyAgICBQeV9DTEVBUihzZWxmLT51bnVzZWRfZGF0YSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisgICAgc2VsZi0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkCitEZWNvbXByZXNzb3JfZGVhbGxvYyhEZWNvbXByZXNzb3IgKnNlbGYpCit7CisgICAgbHptYV9lbmQoJnNlbGYtPmx6cyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+dW51c2VkX2RhdGEpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgIT0gTlVMTCkKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworI2VuZGlmCisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIERlY29tcHJlc3Nvcl9tZXRob2RzW10gPSB7CisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKURlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIERlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2RvY30sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIoRGVjb21wcmVzc29yX2NoZWNrX2RvYywKKyJJRCBvZiB0aGUgaW50ZWdyaXR5IGNoZWNrIHVzZWQgYnkgdGhlIGlucHV0IHN0cmVhbS4iKTsKKworUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl9lb2ZfZG9jLAorIlRydWUgaWYgdGhlIGVuZC1vZi1zdHJlYW0gbWFya2VyIGhhcyBiZWVuIHJlYWNoZWQuIik7CisKK1B5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfZG9jLAorIkRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uIik7CisKK3N0YXRpYyBQeU1lbWJlckRlZiBEZWNvbXByZXNzb3JfbWVtYmVyc1tdID0geworICAgIHsiY2hlY2siLCBUX0lOVCwgb2Zmc2V0b2YoRGVjb21wcmVzc29yLCBjaGVjayksIFJFQURPTkxZLAorICAgICBEZWNvbXByZXNzb3JfY2hlY2tfZG9jfSwKKyAgICB7ImVvZiIsIFRfQk9PTCwgb2Zmc2V0b2YoRGVjb21wcmVzc29yLCBlb2YpLCBSRUFET05MWSwKKyAgICAgRGVjb21wcmVzc29yX2VvZl9kb2N9LAorICAgIHsidW51c2VkX2RhdGEiLCBUX09CSkVDVF9FWCwgb2Zmc2V0b2YoRGVjb21wcmVzc29yLCB1bnVzZWRfZGF0YSksIFJFQURPTkxZLAorICAgICBEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfZG9jfSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfZG9jLAorIkxaTUFEZWNvbXByZXNzb3IoZm9ybWF0PUZPUk1BVF9BVVRPLCBtZW1saW1pdD1Ob25lLCBmaWx0ZXJzPU5vbmUpXG4iCisiXG4iCisiQ3JlYXRlIGEgZGVjb21wcmVzc29yIG9iamVjdCBmb3IgZGVjb21wcmVzc2luZyBkYXRhIGluY3JlbWVudGFsbHkuXG4iCisiXG4iCisiZm9ybWF0IHNwZWNpZmllcyB0aGUgY29udGFpbmVyIGZvcm1hdCBvZiB0aGUgaW5wdXQgc3RyZWFtLiBJZiB0aGlzIGlzXG4iCisiRk9STUFUX0FVVE8gKHRoZSBkZWZhdWx0KSwgdGhlIGRlY29tcHJlc3NvciB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0XG4iCisid2hldGhlciB0aGUgaW5wdXQgaXMgRk9STUFUX1haIG9yIEZPUk1BVF9BTE9ORS4gU3RyZWFtcyBjcmVhdGVkIHdpdGhcbiIKKyJGT1JNQVRfUkFXIGNhbm5vdCBiZSBhdXRvZGV0ZWN0ZWQuXG4iCisiXG4iCisibWVtbGltaXQgY2FuIGJlIHNwZWNpZmllZCB0byBsaW1pdCB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGJ5IHRoZVxuIgorImRlY29tcHJlc3Nvci4gVGhpcyB3aWxsIGNhdXNlIGRlY29tcHJlc3Npb24gdG8gZmFpbCBpZiB0aGUgaW5wdXRcbiIKKyJjYW5ub3QgYmUgZGVjb21wcmVzc2VkIHdpdGhpbiB0aGUgZ2l2ZW4gbGltaXQuXG4iCisiXG4iCisiZmlsdGVycyBzcGVjaWZpZXMgYSBjdXN0b20gZmlsdGVyIGNoYWluLiBUaGlzIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGZvclxuIgorIkZPUk1BVF9SQVcsIGFuZCBub3QgYWNjZXB0ZWQgd2l0aCBhbnkgb3RoZXIgZm9ybWF0LiBXaGVuIHByb3ZpZGVkLFxuIgorInRoaXMgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgZGljdHMsIGVhY2ggaW5kaWNhdGluZyB0aGUgSUQgYW5kIG9wdGlvbnNcbiIKKyJmb3IgYSBzaW5nbGUgZmlsdGVyLlxuIgorIlxuIgorIkZvciBvbmUtc2hvdCBkZWNvbXByZXNzaW9uLCB1c2UgdGhlIGRlY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLlxuIik7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRGVjb21wcmVzc29yX3R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9sem1hLkxaTUFEZWNvbXByZXNzb3IiLCAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihEZWNvbXByZXNzb3IpLCAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpRGVjb21wcmVzc29yX2RlYWxsb2MsICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIERlY29tcHJlc3Nvcl9kb2MsICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgRGVjb21wcmVzc29yX21ldGhvZHMsICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIERlY29tcHJlc3Nvcl9tZW1iZXJzLCAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpRGVjb21wcmVzc29yX2luaXQsICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworLyogTW9kdWxlLWxldmVsIGZ1bmN0aW9ucy4gKi8KKworUHlEb2NfU1RSVkFSKGlzX2NoZWNrX3N1cHBvcnRlZF9kb2MsCisiaXNfY2hlY2tfc3VwcG9ydGVkKGNoZWNrX2lkKSAtPiBib29sXG4iCisiXG4iCisiVGVzdCB3aGV0aGVyIHRoZSBnaXZlbiBpbnRlZ3JpdHkgY2hlY2sgaXMgc3VwcG9ydGVkLlxuIgorIlxuIgorIkFsd2F5cyByZXR1cm5zIFRydWUgZm9yIENIRUNLX05PTkUgYW5kIENIRUNLX0NSQzMyLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitpc19jaGVja19zdXBwb3J0ZWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBjaGVja19pZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTppc19jaGVja19zdXBwb3J0ZWQiLCAmY2hlY2tfaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcobHptYV9jaGVja19pc19zdXBwb3J0ZWQoY2hlY2tfaWQpKTsKK30KKworCitQeURvY19TVFJWQVIoX2VuY29kZV9maWx0ZXJfcHJvcGVydGllc19kb2MsCisiX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyhmaWx0ZXIpIC0+IGJ5dGVzXG4iCisiXG4iCisiUmV0dXJuIGEgYnl0ZXMgb2JqZWN0IGVuY29kaW5nIHRoZSBvcHRpb25zIChwcm9wZXJ0aWVzKSBvZiB0aGUgZmlsdGVyXG4iCisic3BlY2lmaWVkIGJ5ICpmaWx0ZXIqIChhIGRpY3QpLlxuIgorIlxuIgorIlRoZSByZXN1bHQgZG9lcyBub3QgaW5jbHVkZSB0aGUgZmlsdGVyIElEIGl0c2VsZiwgb25seSB0aGUgb3B0aW9ucy5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmZpbHRlcnNwZWM7CisgICAgbHptYV9maWx0ZXIgZmlsdGVyOworICAgIGx6bWFfcmV0IGx6cmV0OworICAgIHVpbnQzMl90IGVuY29kZWRfc2l6ZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgJmZpbHRlcnNwZWMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChwYXJzZV9maWx0ZXJfc3BlYygmZmlsdGVyLCBmaWx0ZXJzcGVjKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGx6cmV0ID0gbHptYV9wcm9wZXJ0aWVzX3NpemUoJmVuY29kZWRfc2l6ZSwgJmZpbHRlcik7CisgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBlbmNvZGVkX3NpemUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGx6cmV0ID0gbHptYV9wcm9wZXJ0aWVzX2VuY29kZSgKKyAgICAgICAgICAgICZmaWx0ZXIsICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSk7CisgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgUHlNZW1fRnJlZShmaWx0ZXIub3B0aW9ucyk7CisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIFB5TWVtX0ZyZWUoZmlsdGVyLm9wdGlvbnMpOworICAgIHJldHVybiBOVUxMOworfQorCisKK1B5RG9jX1NUUlZBUihfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2RvYywKKyJfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGZpbHRlcl9pZCwgZW5jb2RlZF9wcm9wcykgLT4gZGljdFxuIgorIlxuIgorIlJldHVybiBhIGRpY3QgZGVzY3JpYmluZyBhIGZpbHRlciB3aXRoIElEICpmaWx0ZXJfaWQqLCBhbmQgb3B0aW9uc1xuIgorIihwcm9wZXJ0aWVzKSBkZWNvZGVkIGZyb20gdGhlIGJ5dGVzIG9iamVjdCAqZW5jb2RlZF9wcm9wcyouXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBlbmNvZGVkX3Byb3BzOworICAgIGx6bWFfZmlsdGVyIGZpbHRlcjsKKyAgICBsem1hX3JldCBsenJldDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ5KjpfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbHptYV92bGlfY29udmVydGVyLCAmZmlsdGVyLmlkLCAmZW5jb2RlZF9wcm9wcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbHpyZXQgPSBsem1hX3Byb3BlcnRpZXNfZGVjb2RlKAorICAgICAgICAgICAgJmZpbHRlciwgTlVMTCwgZW5jb2RlZF9wcm9wcy5idWYsIGVuY29kZWRfcHJvcHMubGVuKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZlbmNvZGVkX3Byb3BzKTsKKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYnVpbGRfZmlsdGVyX3NwZWMoJmZpbHRlcik7CisKKyAgICAvKiBXZSB1c2UgdmFuaWxsYSBmcmVlKCkgaGVyZSBpbnN0ZWFkIG9mIFB5TWVtX0ZyZWUoKSAtIGZpbHRlci5vcHRpb25zIHdhcworICAgICAgIGFsbG9jYXRlZCBieSBsem1hX3Byb3BlcnRpZXNfZGVjb2RlKCkgdXNpbmcgdGhlIGRlZmF1bHQgYWxsb2NhdG9yLiAqLworICAgIGZyZWUoZmlsdGVyLm9wdGlvbnMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyogTW9kdWxlIGluaXRpYWxpemF0aW9uLiAqLworCitzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKKyAgICB7ImlzX2NoZWNrX3N1cHBvcnRlZCIsIChQeUNGdW5jdGlvbilpc19jaGVja19zdXBwb3J0ZWQsCisgICAgIE1FVEhfVkFSQVJHUywgaXNfY2hlY2tfc3VwcG9ydGVkX2RvY30sCisgICAgeyJfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgKFB5Q0Z1bmN0aW9uKV9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsCisgICAgIE1FVEhfVkFSQVJHUywgX2VuY29kZV9maWx0ZXJfcHJvcGVydGllc19kb2N9LAorICAgIHsiX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIChQeUNGdW5jdGlvbilfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLAorICAgICBNRVRIX1ZBUkFSR1MsIF9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfZG9jfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBfbHptYW1vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl9sem1hIiwKKyAgICBOVUxMLAorICAgIC0xLAorICAgIG1vZHVsZV9tZXRob2RzLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCit9OworCisvKiBTb21lIG9mIG91ciBjb25zdGFudHMgYXJlIG1vcmUgdGhhbiAzMiBiaXRzIHdpZGUsIHNvIFB5TW9kdWxlX0FkZEludENvbnN0YW50CisgICB3b3VsZCBub3Qgd29yayBjb3JyZWN0bHkgb24gcGxhdGZvcm1zIHdpdGggMzItYml0IGxvbmdzLiAqLworc3RhdGljIGludAorbW9kdWxlX2FkZF9pbnRfY29uc3RhbnQoUHlPYmplY3QgKm0sIGNvbnN0IGNoYXIgKm5hbWUsIFBZX0xPTkdfTE9ORyB2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqbyA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcodmFsdWUpOworICAgIGlmIChvID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sIG5hbWUsIG8pID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIFB5X0RFQ1JFRihvKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKyNkZWZpbmUgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgbWFjcm8pIFwKKyAgICBtb2R1bGVfYWRkX2ludF9jb25zdGFudChtLCAjbWFjcm8sIExaTUFfICMjIG1hY3JvKQorCitQeU1PRElOSVRfRlVOQworUHlJbml0X19sem1hKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm07CisKKyAgICBlbXB0eV90dXBsZSA9IFB5VHVwbGVfTmV3KDApOworICAgIGlmIChlbXB0eV90dXBsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9sem1hbW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGT1JNQVRfQVVUTykgPT0gLTEgfHwKKyAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRk9STUFUX1haKSA9PSAtMSB8fAorICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGT1JNQVRfQUxPTkUpID09IC0xIHx8CisgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZPUk1BVF9SQVcpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIENIRUNLX05PTkUpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIENIRUNLX0NSQzMyKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBDSEVDS19DUkM2NCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgQ0hFQ0tfU0hBMjU2KSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBDSEVDS19JRF9NQVgpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIENIRUNLX1VOS05PV04pID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9MWk1BMSkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX0xaTUEyKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfREVMVEEpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9YODYpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9JQTY0KSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfQVJNKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfQVJNVEhVTUIpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9TUEFSQykgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX1BPV0VSUEMpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1GX0hDMykgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTUZfSEM0KSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBNRl9CVDIpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1GX0JUMykgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTUZfQlQ0KSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBNT0RFX0ZBU1QpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1PREVfTk9STUFMKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBQUkVTRVRfREVGQVVMVCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgUFJFU0VUX0VYVFJFTUUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygKKyAgICAgICAgICAgICJfbHptYS5MWk1BRXJyb3IiLCAiQ2FsbCB0byBsaWJsem1hIGZhaWxlZC4iLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAoRXJyb3IgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKEVycm9yKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJMWk1BRXJyb3IiLCBFcnJvcikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmQ29tcHJlc3Nvcl90eXBlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZDb21wcmVzc29yX3R5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkxaTUFDb21wcmVzc29yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZDb21wcmVzc29yX3R5cGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJkRlY29tcHJlc3Nvcl90eXBlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZEZWNvbXByZXNzb3JfdHlwZSk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiTFpNQURlY29tcHJlc3NvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmRGVjb21wcmVzc29yX3R5cGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBtOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24uaCBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMmQ1YWEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDUyNyArMCwwIEBACi0vKgotICogRGVmaW5pdGlvbiBvZiBhIGBDb25uZWN0aW9uYCB0eXBlLgotICogVXNlZCBieSBgc29ja2V0X2Nvbm5lY3Rpb24uY2AgYW5kIGBwaXBlX2Nvbm5lY3Rpb24uY2AuCi0gKgotICogY29ubmVjdGlvbi5oCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyayAtLS0gc2VlIENPUFlJTkcudHh0Ci0gKi8KLQotI2lmbmRlZiBDT05ORUNUSU9OX0gKLSNkZWZpbmUgQ09OTkVDVElPTl9ICi0KLS8qCi0gKiBSZWFkL3dyaXRlIGZsYWdzCi0gKi8KLQotI2RlZmluZSBSRUFEQUJMRSAxCi0jZGVmaW5lIFdSSVRBQkxFIDIKLQotI2RlZmluZSBDSEVDS19SRUFEQUJMRShzZWxmKSBcCi0gICAgaWYgKCEoc2VsZi0+ZmxhZ3MgJiBSRUFEQUJMRSkpIHsgXAotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiY29ubmVjdGlvbiBpcyB3cml0ZS1vbmx5Iik7IFwKLSAgICByZXR1cm4gTlVMTDsgXAotICAgIH0KLQotI2RlZmluZSBDSEVDS19XUklUQUJMRShzZWxmKSBcCi0gICAgaWYgKCEoc2VsZi0+ZmxhZ3MgJiBXUklUQUJMRSkpIHsgXAotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiY29ubmVjdGlvbiBpcyByZWFkLW9ubHkiKTsgXAotICAgIHJldHVybiBOVUxMOyBcCi0gICAgfQotCi0vKgotICogQWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uCi0gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIENvbm5lY3Rpb25PYmplY3QgKnNlbGY7Ci0gICAgSEFORExFIGhhbmRsZTsKLSAgICBCT09MIHJlYWRhYmxlID0gVFJVRSwgd3JpdGFibGUgPSBUUlVFOwotCi0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAicmVhZGFibGUiLCAid3JpdGFibGUiLCBOVUxMfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsIEZfSEFORExFICJ8aWkiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJnJlYWRhYmxlLCAmd3JpdGFibGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUgfHwgKFB5X3NzaXplX3QpaGFuZGxlIDwgMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwgImludmFsaWQgaGFuZGxlICV6ZCIsCi0gICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCloYW5kbGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoIXJlYWRhYmxlICYmICF3cml0YWJsZSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgcmVhZGFibGUgb3Igd3JpdGFibGUgbXVzdCBiZSB0cnVlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoQ29ubmVjdGlvbk9iamVjdCwgdHlwZSk7Ci0gICAgaWYgKHNlbGYgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZWxmLT53ZWFrcmVmbGlzdCA9IE5VTEw7Ci0gICAgc2VsZi0+aGFuZGxlID0gaGFuZGxlOwotICAgIHNlbGYtPmZsYWdzID0gMDsKLQotICAgIGlmIChyZWFkYWJsZSkKLSAgICAgICAgc2VsZi0+ZmxhZ3MgfD0gUkVBREFCTEU7Ci0gICAgaWYgKHdyaXRhYmxlKQotICAgICAgICBzZWxmLT5mbGFncyB8PSBXUklUQUJMRTsKLSAgICBhc3NlcnQoc2VsZi0+ZmxhZ3MgPj0gMSAmJiBzZWxmLT5mbGFncyA8PSAzKTsKLQotICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jb25uZWN0aW9uX2RlYWxsb2MoQ29ubmVjdGlvbk9iamVjdCogc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKLSAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QqKXNlbGYpOwotCi0gICAgaWYgKHNlbGYtPmhhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIENMT1NFKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgfQotICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKLX0KLQotLyoKLSAqIEZ1bmN0aW9ucyBmb3IgdHJhbnNmZXJyaW5nIGJ1ZmZlcnMKLSAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9zZW5kYnl0ZXMoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBidWZmZXI7Ci0gICAgY2hhciAqYnVmZmVyOwotICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBvZmZzZXQ9MCwgc2l6ZT1QWV9TU0laRV9UX01JTjsKLSAgICBpbnQgcmVzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfUkJVRkZFUiAiKnwiIEZfUFlfU1NJWkVfVCBGX1BZX1NTSVpFX1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmZmVyLCAmb2Zmc2V0LCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZmZlciA9IHBidWZmZXIuYnVmOwotICAgIGxlbmd0aCA9IHBidWZmZXIubGVuOwotCi0gICAgQ0hFQ0tfV1JJVEFCTEUoc2VsZik7IC8qIFhYWCByZWxlYXNlIGJ1ZmZlciBpbiBjYXNlIG9mIGZhaWx1cmUgKi8KLQotICAgIGlmIChvZmZzZXQgPCAwKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWZmZXIpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBpcyBuZWdhdGl2ZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKGxlbmd0aCA8IG9mZnNldCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmZmVyKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJidWZmZXIgbGVuZ3RoIDwgb2Zmc2V0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChzaXplID09IFBZX1NTSVpFX1RfTUlOKSB7Ci0gICAgICAgIHNpemUgPSBsZW5ndGggLSBvZmZzZXQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmZmVyKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic2l6ZSBpcyBuZWdhdGl2ZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG9mZnNldCArIHNpemUgPiBsZW5ndGgpIHsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWZmZXIpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlciBsZW5ndGggPCBvZmZzZXQgKyBzaXplIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJlcyA9IGNvbm5fc2VuZF9zdHJpbmcoc2VsZiwgYnVmZmVyICsgb2Zmc2V0LCBzaXplKTsKLQotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWZmZXIpOwotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBtcF9TZXRFcnJvcihQeUV4Y19JT0Vycm9yLCByZXMpOwotICAgIH0KLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9yZWN2Ynl0ZXMoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqZnJlZW1lID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHJlcywgbWF4bGVuZ3RoID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInwiIEZfUFlfU1NJWkVfVCwgJm1heGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgQ0hFQ0tfUkVBREFCTEUoc2VsZik7Ci0KLSAgICBpZiAobWF4bGVuZ3RoIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1heGxlbmd0aCA8IDAiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmVzID0gY29ubl9yZWN2X3N0cmluZyhzZWxmLCBzZWxmLT5idWZmZXIsIENPTk5FQ1RJT05fQlVGRkVSX1NJWkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJlZW1lLCBtYXhsZW5ndGgpOwotCi0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgaWYgKHJlcyA9PSBNUF9CQURfTUVTU0FHRV9MRU5HVEgpIHsKLSAgICAgICAgICAgIGlmICgoc2VsZi0+ZmxhZ3MgJiBXUklUQUJMRSkgPT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBDTE9TRShzZWxmLT5oYW5kbGUpOwotICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNlbGYtPmZsYWdzID0gV1JJVEFCTEU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbXBfU2V0RXJyb3IoUHlFeGNfSU9FcnJvciwgcmVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZnJlZW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyLCByZXMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShmcmVlbWUsIHJlcyk7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKGZyZWVtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9yZWN2Ynl0ZXNfaW50byhDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpmcmVlbWUgPSBOVUxMLCAqYnVmZmVyID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHJlcywgbGVuZ3RoLCBvZmZzZXQgPSAwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5X2J1ZmZlciBwYnVmOwotCi0gICAgQ0hFQ0tfUkVBREFCTEUoc2VsZik7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIncqfCIgRl9QWV9TU0laRV9ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJm9mZnNldCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgYnVmZmVyID0gcGJ1Zi5idWY7Ci0gICAgbGVuZ3RoID0gcGJ1Zi5sZW47Ci0KLSAgICBpZiAob2Zmc2V0IDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIG9mZnNldCIpOwotICAgICAgICBnb3RvIF9lcnJvcjsKLSAgICB9Ci0KLSAgICBpZiAob2Zmc2V0ID4gbGVuZ3RoKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAib2Zmc2V0IHRvbyBsYXJnZSIpOwotICAgICAgICBnb3RvIF9lcnJvcjsKLSAgICB9Ci0KLSAgICByZXMgPSBjb25uX3JlY3Zfc3RyaW5nKHNlbGYsIGJ1ZmZlcitvZmZzZXQsIGxlbmd0aC1vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJlZW1lLCBQWV9TU0laRV9UX01BWCk7Ci0KLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBpZiAocmVzID09IE1QX0JBRF9NRVNTQUdFX0xFTkdUSCkgewotICAgICAgICAgICAgaWYgKChzZWxmLT5mbGFncyAmIFdSSVRBQkxFKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIENMT1NFKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2VsZi0+ZmxhZ3MgPSBXUklUQUJMRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtcF9TZXRFcnJvcihQeUV4Y19JT0Vycm9yLCByZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmcmVlbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlJbnRfRnJvbVNzaXplX3QocmVzKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihCdWZmZXJUb29TaG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGX1JCVUZGRVIgIiMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWVtZSwgcmVzKTsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUoZnJlZW1lKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoQnVmZmVyVG9vU2hvcnQsIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBnb3RvIF9lcnJvcjsKLSAgICAgICAgfQotICAgIH0KLQotX2NsZWFudXA6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLQotX2Vycm9yOgotICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgZ290byBfY2xlYW51cDsKLX0KLQotLyoKLSAqIEZ1bmN0aW9ucyBmb3IgdHJhbnNmZXJyaW5nIG9iamVjdHMKLSAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9zZW5kX29iaihDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQotewotICAgIGNoYXIgKmJ1ZmZlcjsKLSAgICBpbnQgcmVzOwotICAgIFB5X3NzaXplX3QgbGVuZ3RoOwotICAgIFB5T2JqZWN0ICpwaWNrbGVkX3N0cmluZyA9IE5VTEw7Ci0KLSAgICBDSEVDS19XUklUQUJMRShzZWxmKTsKLQotICAgIHBpY2tsZWRfc3RyaW5nID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhwaWNrbGVfZHVtcHMsIG9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlX3Byb3RvY29sLCBOVUxMKTsKLSAgICBpZiAoIXBpY2tsZWRfc3RyaW5nKQotICAgICAgICBnb3RvIGZhaWx1cmU7Ci0KLSAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUocGlja2xlZF9zdHJpbmcsICZidWZmZXIsICZsZW5ndGgpIDwgMCkKLSAgICAgICAgZ290byBmYWlsdXJlOwotCi0gICAgcmVzID0gY29ubl9zZW5kX3N0cmluZyhzZWxmLCBidWZmZXIsIChpbnQpbGVuZ3RoKTsKLQotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIG1wX1NldEVycm9yKFB5RXhjX0lPRXJyb3IsIHJlcyk7Ci0gICAgICAgIGdvdG8gZmFpbHVyZTsKLSAgICB9Ci0KLSAgICBQeV9YREVDUkVGKHBpY2tsZWRfc3RyaW5nKTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLQotICBmYWlsdXJlOgotICAgIFB5X1hERUNSRUYocGlja2xlZF9zdHJpbmcpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9yZWN2X29iaihDb25uZWN0aW9uT2JqZWN0ICpzZWxmKQotewotICAgIGNoYXIgKmZyZWVtZSA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0gICAgUHlPYmplY3QgKnRlbXAgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIENIRUNLX1JFQURBQkxFKHNlbGYpOwotCi0gICAgcmVzID0gY29ubl9yZWN2X3N0cmluZyhzZWxmLCBzZWxmLT5idWZmZXIsIENPTk5FQ1RJT05fQlVGRkVSX1NJWkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJlZW1lLCBQWV9TU0laRV9UX01BWCk7Ci0KLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBpZiAocmVzID09IE1QX0JBRF9NRVNTQUdFX0xFTkdUSCkgewotICAgICAgICAgICAgaWYgKChzZWxmLT5mbGFncyAmIFdSSVRBQkxFKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIENMT1NFKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2VsZi0+ZmxhZ3MgPSBXUklUQUJMRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtcF9TZXRFcnJvcihQeUV4Y19JT0Vycm9yLCByZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmcmVlbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgdGVtcCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyLCByZXMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGVtcCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZnJlZW1lLCByZXMpOwotICAgICAgICAgICAgUHlNZW1fRnJlZShmcmVlbWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHRlbXApCi0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MocGlja2xlX2xvYWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAsIE5VTEwpOwotICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSAqIE90aGVyIGZ1bmN0aW9ucwotICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3BvbGwoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnRpbWVvdXRfb2JqID0gTlVMTDsKLSAgICBkb3VibGUgdGltZW91dCA9IDAuMDsKLSAgICBpbnQgcmVzOwotCi0gICAgQ0hFQ0tfUkVBREFCTEUoc2VsZik7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPIiwgJnRpbWVvdXRfb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAodGltZW91dF9vYmogPT0gTlVMTCkgewotICAgICAgICB0aW1lb3V0ID0gMC4wOwotICAgIH0gZWxzZSBpZiAodGltZW91dF9vYmogPT0gUHlfTm9uZSkgewotICAgICAgICB0aW1lb3V0ID0gLTEuMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBibG9jayBmb3JldmVyICovCi0gICAgfSBlbHNlIHsKLSAgICAgICAgdGltZW91dCA9IFB5RmxvYXRfQXNEb3VibGUodGltZW91dF9vYmopOwotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAodGltZW91dCA8IDAuMCkKLSAgICAgICAgICAgIHRpbWVvdXQgPSAwLjA7Ci0gICAgfQotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGNvbm5fcG9sbChzZWxmLCB0aW1lb3V0LCBfc2F2ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIHN3aXRjaCAocmVzKSB7Ci0gICAgY2FzZSBUUlVFOgotICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICBjYXNlIEZBTFNFOgotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIG1wX1NldEVycm9yKFB5RXhjX0lPRXJyb3IsIHJlcyk7Ci0gICAgfQotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9maWxlbm8oQ29ubmVjdGlvbk9iamVjdCogc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiaGFuZGxlIGlzIGludmFsaWQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUludF9Gcm9tTG9uZygobG9uZylzZWxmLT5oYW5kbGUpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9jbG9zZShDb25uZWN0aW9uT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChzZWxmLT5oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBDTE9TRShzZWxmLT5oYW5kbGUpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICB9Ci0KLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fcmVwcihDb25uZWN0aW9uT2JqZWN0ICpzZWxmKQotewotICAgIHN0YXRpYyBjaGFyICpjb25uX3R5cGVbXSA9IHsicmVhZC1vbmx5IiwgIndyaXRlLW9ubHkiLCAicmVhZC13cml0ZSJ9OwotCi0gICAgYXNzZXJ0KHNlbGYtPmZsYWdzID49IDEgJiYgc2VsZi0+ZmxhZ3MgPD0gMyk7Ci0gICAgcmV0dXJuIEZST01fRk9STUFUKCI8JXMgJXMsIGhhbmRsZSAlemQ+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgY29ubl90eXBlW3NlbGYtPmZsYWdzIC0gMV0sCi0gICAgICAgICAgICAgICAgICAgICAgIENPTk5FQ1RJT05fTkFNRSwgKFB5X3NzaXplX3Qpc2VsZi0+aGFuZGxlKTsKLX0KLQotLyoKLSAqIEdldHRlcnMgYW5kIHNldHRlcnMKLSAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9jbG9zZWQoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLXsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fcmVhZGFibGUoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLXsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5mbGFncyAmIFJFQURBQkxFKSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3dyaXRhYmxlKENvbm5lY3Rpb25PYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi17Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykoc2VsZi0+ZmxhZ3MgJiBXUklUQUJMRSkpOwotfQotCi0vKgotICogVGFibGVzCi0gKi8KLQotc3RhdGljIFB5TWV0aG9kRGVmIGNvbm5lY3Rpb25fbWV0aG9kc1tdID0gewotICAgIHsic2VuZF9ieXRlcyIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3NlbmRieXRlcywgTUVUSF9WQVJBUkdTLAotICAgICAic2VuZCB0aGUgYnl0ZSBkYXRhIGZyb20gYSByZWFkYWJsZSBidWZmZXItbGlrZSBvYmplY3QifSwKLSAgICB7InJlY3ZfYnl0ZXMiLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9yZWN2Ynl0ZXMsIE1FVEhfVkFSQVJHUywKLSAgICAgInJlY2VpdmUgYnl0ZSBkYXRhIGFzIGEgc3RyaW5nIn0sCi0gICAgeyJyZWN2X2J5dGVzX2ludG8iLChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3JlY3ZieXRlc19pbnRvLE1FVEhfVkFSQVJHUywKLSAgICAgInJlY2VpdmUgYnl0ZSBkYXRhIGludG8gYSB3cml0ZWFibGUgYnVmZmVyLWxpa2Ugb2JqZWN0XG4iCi0gICAgICJyZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCJ9LAotCi0gICAgeyJzZW5kIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fc2VuZF9vYmosIE1FVEhfTywKLSAgICAgInNlbmQgYSAocGlja2xhYmxlKSBvYmplY3QifSwKLSAgICB7InJlY3YiLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9yZWN2X29iaiwgTUVUSF9OT0FSR1MsCi0gICAgICJyZWNlaXZlIGEgKHBpY2tsYWJsZSkgb2JqZWN0In0sCi0KLSAgICB7InBvbGwiLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9wb2xsLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJ3aGV0aGVyIHRoZXJlIGlzIGFueSBpbnB1dCBhdmFpbGFibGUgdG8gYmUgcmVhZCJ9LAotICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fZmlsZW5vLCBNRVRIX05PQVJHUywKLSAgICAgImZpbGUgZGVzY3JpcHRvciBvciBoYW5kbGUgb2YgdGhlIGNvbm5lY3Rpb24ifSwKLSAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fY2xvc2UsIE1FVEhfTk9BUkdTLAotICAgICAiY2xvc2UgdGhlIGNvbm5lY3Rpb24ifSwKLQotICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KLX07Ci0KLXN0YXRpYyBQeUdldFNldERlZiBjb25uZWN0aW9uX2dldHNldFtdID0gewotICAgIHsiY2xvc2VkIiwgKGdldHRlciljb25uZWN0aW9uX2Nsb3NlZCwgTlVMTCwKLSAgICAgIlRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkIiwgTlVMTH0sCi0gICAgeyJyZWFkYWJsZSIsIChnZXR0ZXIpY29ubmVjdGlvbl9yZWFkYWJsZSwgTlVMTCwKLSAgICAgIlRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgcmVhZGFibGUiLCBOVUxMfSwKLSAgICB7IndyaXRhYmxlIiwgKGdldHRlciljb25uZWN0aW9uX3dyaXRhYmxlLCBOVUxMLAotICAgICAiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyB3cml0YWJsZSIsIE5VTEx9LAotICAgIHtOVUxMfQotfTsKLQotLyoKLSAqIENvbm5lY3Rpb24gdHlwZQotICovCi0KLVB5RG9jX1NUUlZBUihjb25uZWN0aW9uX2RvYywKLSAgICAgICAgICAgICAiQ29ubmVjdGlvbiB0eXBlIHdob3NlIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSBpc1xuXG4iCi0gICAgICAgICAgICAgIiAgICBDb25uZWN0aW9uKGhhbmRsZSwgcmVhZGFibGU9VHJ1ZSwgd3JpdGFibGU9VHJ1ZSkuXG5cbiIKLSAgICAgICAgICAgICAiVGhlIGNvbnN0cnVjdG9yIGRvZXMgKm5vdCogZHVwbGljYXRlIHRoZSBoYW5kbGUuIik7Ci0KLVB5VHlwZU9iamVjdCBDT05ORUNUSU9OX1RZUEUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgLyogdHBfbmFtZSAgICAgICAgICAgKi8gIl9tdWx0aXByb2Nlc3NpbmcuIiBDT05ORUNUSU9OX05BTUUsCi0gICAgLyogdHBfYmFzaWNzaXplICAgICAgKi8gc2l6ZW9mKENvbm5lY3Rpb25PYmplY3QpLAotICAgIC8qIHRwX2l0ZW1zaXplICAgICAgICovIDAsCi0gICAgLyogdHBfZGVhbGxvYyAgICAgICAgKi8gKGRlc3RydWN0b3IpY29ubmVjdGlvbl9kZWFsbG9jLAotICAgIC8qIHRwX3ByaW50ICAgICAgICAgICovIDAsCi0gICAgLyogdHBfZ2V0YXR0ciAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9zZXRhdHRyICAgICAgICAqLyAwLAotICAgIC8qIHRwX3Jlc2VydmVkICAgICAgICovIDAsCi0gICAgLyogdHBfcmVwciAgICAgICAgICAgKi8gKHJlcHJmdW5jKWNvbm5lY3Rpb25fcmVwciwKLSAgICAvKiB0cF9hc19udW1iZXIgICAgICAqLyAwLAotICAgIC8qIHRwX2FzX3NlcXVlbmNlICAgICovIDAsCi0gICAgLyogdHBfYXNfbWFwcGluZyAgICAgKi8gMCwKLSAgICAvKiB0cF9oYXNoICAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX2NhbGwgICAgICAgICAgICovIDAsCi0gICAgLyogdHBfc3RyICAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9nZXRhdHRybyAgICAgICAqLyAwLAotICAgIC8qIHRwX3NldGF0dHJvICAgICAgICovIDAsCi0gICAgLyogdHBfYXNfYnVmZmVyICAgICAgKi8gMCwKLSAgICAvKiB0cF9mbGFncyAgICAgICAgICAqLyBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UUEZMQUdTX0hBVkVfV0VBS1JFRlMsCi0gICAgLyogdHBfZG9jICAgICAgICAgICAgKi8gY29ubmVjdGlvbl9kb2MsCi0gICAgLyogdHBfdHJhdmVyc2UgICAgICAgKi8gMCwKLSAgICAvKiB0cF9jbGVhciAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX3JpY2hjb21wYXJlICAgICovIDAsCi0gICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8gb2Zmc2V0b2YoQ29ubmVjdGlvbk9iamVjdCwgd2Vha3JlZmxpc3QpLAotICAgIC8qIHRwX2l0ZXIgICAgICAgICAgICovIDAsCi0gICAgLyogdHBfaXRlcm5leHQgICAgICAgKi8gMCwKLSAgICAvKiB0cF9tZXRob2RzICAgICAgICAqLyBjb25uZWN0aW9uX21ldGhvZHMsCi0gICAgLyogdHBfbWVtYmVycyAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9nZXRzZXQgICAgICAgICAqLyBjb25uZWN0aW9uX2dldHNldCwKLSAgICAvKiB0cF9iYXNlICAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX2RpY3QgICAgICAgICAgICovIDAsCi0gICAgLyogdHBfZGVzY3JfZ2V0ICAgICAgKi8gMCwKLSAgICAvKiB0cF9kZXNjcl9zZXQgICAgICAqLyAwLAotICAgIC8qIHRwX2RpY3RvZmZzZXQgICAgICovIDAsCi0gICAgLyogdHBfaW5pdCAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9hbGxvYyAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX25ldyAgICAgICAgICAgICovIGNvbm5lY3Rpb25fbmV3LAotfTsKLQotI2VuZGlmIC8qIENPTk5FQ1RJT05fSCAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCmluZGV4IGVlMjUwZTAuLmViMDVjNjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYworKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKQEAgLTMsMjAgKzMsMTMgQEAKICAqCiAgKiBtdWx0aXByb2Nlc3NpbmcuYwogICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAorICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyaworICogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogICovCiAKICNpbmNsdWRlICJtdWx0aXByb2Nlc3NpbmcuaCIKIAotI2lmIChkZWZpbmVkKENNU0dfTEVOKSAmJiBkZWZpbmVkKFNDTV9SSUdIVFMpKQotICAgICNkZWZpbmUgSEFWRV9GRF9UUkFOU0ZFUiAxCi0jZWxzZQotICAgICNkZWZpbmUgSEFWRV9GRF9UUkFOU0ZFUiAwCi0jZW5kaWYKIAotUHlPYmplY3QgKmNyZWF0ZV93aW4zMl9uYW1lc3BhY2Uodm9pZCk7Ci0KLVB5T2JqZWN0ICpwaWNrbGVfZHVtcHMsICpwaWNrbGVfbG9hZHMsICpwaWNrbGVfcHJvdG9jb2w7CiBQeU9iamVjdCAqUHJvY2Vzc0Vycm9yLCAqQnVmZmVyVG9vU2hvcnQ7CiAKIC8qCkBAIC00OSwxNiArNDIsNiBAQAogICAgIGNhc2UgTVBfTUVNT1JZX0VSUk9SOgogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1QX0VORF9PRl9GSUxFOgotICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX0VPRkVycm9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNUF9FQVJMWV9FTkRfT0ZfRklMRToKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZ290IGVuZCBvZiBmaWxlIGR1cmluZyBtZXNzYWdlIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTVBfQkFEX01FU1NBR0VfTEVOR1RIOgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgImJhZCBtZXNzYWdlIGxlbmd0aCIpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIE1QX0VYQ0VQVElPTl9IQVNfQkVFTl9TRVQ6CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC02OCwxNzAgKzUxLDgyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLQotLyoKLSAqIFdpbmRvd3Mgb25seQotICovCi0KICNpZmRlZiBNU19XSU5ET1dTCi0KLS8qIE9uIFdpbmRvd3Mgd2Ugc2V0IGFuIGV2ZW50IHRvIHNpZ25hbCBDdHJsLUM7IGNvbXBhcmUgd2l0aCB0aW1lbW9kdWxlLmMgKi8KLQotSEFORExFIHNpZ2ludF9ldmVudCA9IE5VTEw7Ci0KLXN0YXRpYyBCT09MIFdJTkFQSQotUHJvY2Vzc2luZ0N0cmxIYW5kbGVyKERXT1JEIGR3Q3RybFR5cGUpCi17Ci0gICAgU2V0RXZlbnQoc2lnaW50X2V2ZW50KTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLS8qCi0gKiBVbml4IG9ubHkKLSAqLwotCi0jZWxzZSAvKiAhTVNfV0lORE9XUyAqLwotCi0jaWYgSEFWRV9GRF9UUkFOU0ZFUgotCi0vKiBGdW5jdGlvbnMgZm9yIHRyYW5zZmVycmluZyBmaWxlIGRlc2NyaXB0b3JzIGJldHdlZW4gcHJvY2Vzc2VzLgotICAgUmVpbXBsZW1lbnRzIHNvbWUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGZkY3JlZAotICAgbW9kdWxlIGF0IGh0dHA6Ly93d3cubWNhLWx0ZC5jb20vcmVzb3VyY2VzL2ZkY3JlZF8xLnRnei4gKi8KLS8qIEJhc2VkIGluIGh0dHA6Ly9yZXNpbi5jc29mdC5uZXQvY2dpLWJpbi9tYW4uY2dpP3NlY3Rpb249MyZ0b3BpYz1DTVNHX0RBVEEgKi8KLQogc3RhdGljIFB5T2JqZWN0ICoKLW11bHRpcHJvY2Vzc2luZ19zZW5kZmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorbXVsdGlwcm9jZXNzaW5nX2Nsb3Nlc29ja2V0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBpbnQgY29ubiwgZmQsIHJlczsKLSAgICBzdHJ1Y3QgaW92ZWMgZHVtbXlfaW92OwotICAgIGNoYXIgZHVtbXlfY2hhcjsKLSAgICBzdHJ1Y3QgbXNnaGRyIG1zZzsKLSAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZzsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCBjbXNnaGRyIGhkcjsKLSAgICAgICAgdW5zaWduZWQgY2hhciBidWZbQ01TR19TUEFDRShzaXplb2YoaW50KSldOwotICAgIH0gY21zZ2J1ZjsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCByZXQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJmNvbm4sICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6Y2xvc2Vzb2NrZXQiICwgJmhhbmRsZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZHVtbXlfaW92Lmlvdl9iYXNlID0gJmR1bW15X2NoYXI7Ci0gICAgZHVtbXlfaW92Lmlvdl9sZW4gPSAxOwotCi0gICAgbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKLSAgICBtc2cubXNnX2NvbnRyb2wgPSAmY21zZ2J1Zi5idWY7Ci0gICAgbXNnLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNtc2didWYuYnVmKTsKLSAgICBtc2cubXNnX2lvdiA9ICZkdW1teV9pb3Y7Ci0gICAgbXNnLm1zZ19pb3ZsZW4gPSAxOwotCi0gICAgY21zZyA9IENNU0dfRklSU1RIRFIoJm1zZyk7Ci0gICAgY21zZy0+Y21zZ19sZW4gPSBDTVNHX0xFTihzaXplb2YoaW50KSk7Ci0gICAgY21zZy0+Y21zZ19sZXZlbCA9IFNPTF9TT0NLRVQ7Ci0gICAgY21zZy0+Y21zZ190eXBlID0gU0NNX1JJR0hUUzsKLSAgICAqIChpbnQgKikgQ01TR19EQVRBKGNtc2cpID0gZmQ7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gc2VuZG1zZyhjb25uLCAmbXNnLCAwKTsKKyAgICByZXQgPSBjbG9zZXNvY2tldCgoU09DS0VUKSBoYW5kbGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICBpZiAocmV0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbXVsdGlwcm9jZXNzaW5nX3JlY3ZmZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCittdWx0aXByb2Nlc3NpbmdfcmVjdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgaW50IGNvbm4sIGZkLCByZXM7Ci0gICAgY2hhciBkdW1teV9jaGFyOwotICAgIHN0cnVjdCBpb3ZlYyBkdW1teV9pb3Y7Ci0gICAgc3RydWN0IG1zZ2hkciBtc2cgPSB7MH07Ci0gICAgc3RydWN0IGNtc2doZHIgKmNtc2c7Ci0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgY21zZ2hkciBoZHI7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYnVmW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkpXTsKLSAgICB9IGNtc2didWY7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgc2l6ZSwgbnJlYWQ7CisgICAgUHlPYmplY3QgKmJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIsICZjb25uKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgImk6cmVjdiIgLCAmaGFuZGxlLCAmc2l6ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZHVtbXlfaW92Lmlvdl9iYXNlID0gJmR1bW15X2NoYXI7Ci0gICAgZHVtbXlfaW92Lmlvdl9sZW4gPSAxOwotCi0gICAgbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKLSAgICBtc2cubXNnX2NvbnRyb2wgPSAmY21zZ2J1Zi5idWY7Ci0gICAgbXNnLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNtc2didWYuYnVmKTsKLSAgICBtc2cubXNnX2lvdiA9ICZkdW1teV9pb3Y7Ci0gICAgbXNnLm1zZ19pb3ZsZW4gPSAxOwotCi0gICAgY21zZyA9IENNU0dfRklSU1RIRFIoJm1zZyk7Ci0gICAgY21zZy0+Y21zZ19sZXZlbCA9IFNPTF9TT0NLRVQ7Ci0gICAgY21zZy0+Y21zZ190eXBlID0gU0NNX1JJR0hUUzsKLSAgICBjbXNnLT5jbXNnX2xlbiA9IENNU0dfTEVOKHNpemVvZihpbnQpKTsKLSAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBjbXNnLT5jbXNnX2xlbjsKKyAgICBidWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgIGlmICghYnVmKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSByZWN2bXNnKGNvbm4sICZtc2csIDApOworICAgIG5yZWFkID0gcmVjdigoU09DS0VUKSBoYW5kbGUsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZiksIHNpemUsIDApOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLQotICAgIGlmIChtc2cubXNnX2NvbnRyb2xsZW4gPCBDTVNHX0xFTihzaXplb2YoaW50KSkgfHwKLSAgICAgICAgKGNtc2cgPSBDTVNHX0ZJUlNUSERSKCZtc2cpKSA9PSBOVUxMIHx8Ci0gICAgICAgIGNtc2ctPmNtc2dfbGV2ZWwgIT0gU09MX1NPQ0tFVCB8fAotICAgICAgICBjbXNnLT5jbXNnX3R5cGUgIT0gU0NNX1JJR0hUUyB8fAotICAgICAgICBjbXNnLT5jbXNnX2xlbiA8IENNU0dfTEVOKHNpemVvZihpbnQpKSkgewotICAgICAgICAvKiBJZiBhdCBsZWFzdCBvbmUgY29udHJvbCBtZXNzYWdlIGlzIHByZXNlbnQsIHRoZXJlIHNob3VsZCBiZQotICAgICAgICAgICBubyByb29tIGZvciBhbnkgZnVydGhlciBkYXRhIGluIHRoZSBidWZmZXIuICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJObyBmaWxlIGRlc2NyaXB0b3IgcmVjZWl2ZWQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKG5yZWFkIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoYnVmKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIFdTQUdldExhc3RFcnJvcigpKTsKICAgICB9Ci0KLSAgICBmZCA9ICogKGludCAqKSBDTVNHX0RBVEEoY21zZyk7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBmZCk7CisgICAgX1B5Qnl0ZXNfUmVzaXplKCZidWYsIG5yZWFkKTsKKyAgICByZXR1cm4gYnVmOwogfQogCi0jZW5kaWYgLyogSEFWRV9GRF9UUkFOU0ZFUiAqLwotCi0jZW5kaWYgLyogIU1TX1dJTkRPV1MgKi8KLQotCi0vKgotICogQWxsIHBsYXRmb3JtcwotICovCi0KLXN0YXRpYyBQeU9iamVjdCoKLW11bHRpcHJvY2Vzc2luZ19hZGRyZXNzX29mX2J1ZmZlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKK3N0YXRpYyBQeU9iamVjdCAqCittdWx0aXByb2Nlc3Npbmdfc2VuZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgdm9pZCAqYnVmZmVyOwotICAgIFB5X3NzaXplX3QgYnVmZmVyX2xlbjsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIFB5X2J1ZmZlciBidWY7CisgICAgaW50IHJldDsKIAotICAgIGlmIChQeU9iamVjdF9Bc1dyaXRlQnVmZmVyKG9iaiwgJmJ1ZmZlciwgJmJ1ZmZlcl9sZW4pIDwgMCkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgInkqOnNlbmQiICwgJmhhbmRsZSwgJmJ1ZikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4iIEZfUFlfU1NJWkVfVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbVZvaWRQdHIoYnVmZmVyKSwgYnVmZmVyX2xlbik7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldCA9IHNlbmQoKFNPQ0tFVCkgaGFuZGxlLCBidWYuYnVmLCBidWYubGVuLCAwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIFdTQUdldExhc3RFcnJvcigpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJldCk7CiB9CiAKKyNlbmRpZgogCiAvKgogICogRnVuY3Rpb24gdGFibGUKICAqLwogCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKLSAgICB7ImFkZHJlc3Nfb2ZfYnVmZmVyIiwgbXVsdGlwcm9jZXNzaW5nX2FkZHJlc3Nfb2ZfYnVmZmVyLCBNRVRIX08sCi0gICAgICJhZGRyZXNzX29mX2J1ZmZlcihvYmopIC0+IGludFxuIgotICAgICAiUmV0dXJuIGFkZHJlc3Mgb2Ygb2JqIGFzc3VtaW5nIG9iaiBzdXBwb3J0cyBidWZmZXIgaW50ZWZhY2UifSwKLSNpZiBIQVZFX0ZEX1RSQU5TRkVSCi0gICAgeyJzZW5kZmQiLCBtdWx0aXByb2Nlc3Npbmdfc2VuZGZkLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJzZW5kZmQoc29ja2ZkLCBmZCkgLT4gTm9uZVxuIgotICAgICAiU2VuZCBmaWxlIGRlc2NyaXB0b3IgZ2l2ZW4gYnkgZmQgb3ZlciB0aGUgdW5peCBkb21haW4gc29ja2V0XG4iCi0gICAgICJ3aG9zZSBmaWxlIGRlY3JpcHRvciBpcyBzb2NrZmQifSwKLSAgICB7InJlY3ZmZCIsIG11bHRpcHJvY2Vzc2luZ19yZWN2ZmQsIE1FVEhfVkFSQVJHUywKLSAgICAgInJlY3ZmZChzb2NrZmQpIC0+IGZkXG4iCi0gICAgICJSZWNlaXZlIGEgZmlsZSBkZXNjcmlwdG9yIG92ZXIgYSB1bml4IGRvbWFpbiBzb2NrZXRcbiIKLSAgICAgIndob3NlIGZpbGUgZGVjcmlwdG9yIGlzIHNvY2tmZCJ9LAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB7ImNsb3Nlc29ja2V0IiwgbXVsdGlwcm9jZXNzaW5nX2Nsb3Nlc29ja2V0LCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7InJlY3YiLCBtdWx0aXByb2Nlc3NpbmdfcmVjdiwgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJzZW5kIiwgbXVsdGlwcm9jZXNzaW5nX3NlbmQsIE1FVEhfVkFSQVJHUywgIiJ9LAogI2VuZGlmCiAgICAge05VTEx9CiB9OwpAQCAtMjU3LDIyICsxNTIsMTMgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfX211bHRpcHJvY2Vzc2luZyh2b2lkKQogewotICAgIFB5T2JqZWN0ICptb2R1bGUsICp0ZW1wLCAqdmFsdWU7CisgICAgUHlPYmplY3QgKm1vZHVsZSwgKnRlbXAsICp2YWx1ZSA9IE5VTEw7CiAKICAgICAvKiBJbml0aWFsaXplIG1vZHVsZSAqLwogICAgIG1vZHVsZSA9IFB5TW9kdWxlX0NyZWF0ZSgmbXVsdGlwcm9jZXNzaW5nX21vZHVsZSk7CiAgICAgaWYgKCFtb2R1bGUpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogR2V0IGNvcHkgb2Ygb2JqZWN0cyBmcm9tIHBpY2tsZSAqLwotICAgIHRlbXAgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoUElDS0xFX01PRFVMRSk7Ci0gICAgaWYgKCF0ZW1wKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwaWNrbGVfZHVtcHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRlbXAsICJkdW1wcyIpOwotICAgIHBpY2tsZV9sb2FkcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGVtcCwgImxvYWRzIik7Ci0gICAgcGlja2xlX3Byb3RvY29sID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0ZW1wLCAiSElHSEVTVF9QUk9UT0NPTCIpOwotICAgIFB5X1hERUNSRUYodGVtcCk7Ci0KICAgICAvKiBHZXQgY29weSBvZiBCdWZmZXJUb29TaG9ydCAqLwogICAgIHRlbXAgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIm11bHRpcHJvY2Vzc2luZyIpOwogICAgIGlmICghdGVtcCkKQEAgLTI4MCwxMiArMTY2LDYgQEAKICAgICBCdWZmZXJUb29TaG9ydCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGVtcCwgIkJ1ZmZlclRvb1Nob3J0Iik7CiAgICAgUHlfWERFQ1JFRih0ZW1wKTsKIAotICAgIC8qIEFkZCBjb25uZWN0aW9uIHR5cGUgdG8gbW9kdWxlICovCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmQ29ubmVjdGlvblR5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKCZDb25uZWN0aW9uVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIkNvbm5lY3Rpb24iLCAoUHlPYmplY3QqKSZDb25uZWN0aW9uVHlwZSk7Ci0KICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKGRlZmluZWQoSEFWRV9TRU1fT1BFTikgJiYgIWRlZmluZWQoUE9TSVhfU0VNQVBIT1JFU19OT1RfRU5BQkxFRCkpCiAgICAgLyogQWRkIFNlbUxvY2sgdHlwZSB0byBtb2R1bGUgKi8KQEAgLTMwOCwzMiArMTg4LDYgQEAKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiU2VtTG9jayIsIChQeU9iamVjdCopJlNlbUxvY2tUeXBlKTsKICNlbmRpZgogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIEFkZCBQaXBlQ29ubmVjdGlvbiB0byBtb2R1bGUgKi8KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZQaXBlQ29ubmVjdGlvblR5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKCZQaXBlQ29ubmVjdGlvblR5cGUpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJQaXBlQ29ubmVjdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCopJlBpcGVDb25uZWN0aW9uVHlwZSk7Ci0KLSAgICAvKiBJbml0aWFsaXplIHdpbjMyIGNsYXNzIGFuZCBhZGQgdG8gbXVsdGlwcm9jZXNzaW5nICovCi0gICAgdGVtcCA9IGNyZWF0ZV93aW4zMl9uYW1lc3BhY2UoKTsKLSAgICBpZiAoIXRlbXApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJ3aW4zMiIsIHRlbXApOwotCi0gICAgLyogSW5pdGlhbGl6ZSB0aGUgZXZlbnQgaGFuZGxlIHVzZWQgdG8gc2lnbmFsIEN0cmwtQyAqLwotICAgIHNpZ2ludF9ldmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBOVUxMKTsKLSAgICBpZiAoIXNpZ2ludF9ldmVudCkgewotICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmICghU2V0Q29uc29sZUN0cmxIYW5kbGVyKFByb2Nlc3NpbmdDdHJsSGFuZGxlciwgVFJVRSkpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSNlbmRpZgotCiAgICAgLyogQWRkIGNvbmZpZ3VyYXRpb24gbWFjcm9zICovCiAgICAgdGVtcCA9IFB5RGljdF9OZXcoKTsKICAgICBpZiAoIXRlbXApCkBAIC0zNDMsNyArMTk3LDcgQEAKICAgICB2YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImkiLCBuYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeyBQeV9ERUNSRUYodGVtcCk7IHJldHVybiBOVUxMOyB9ICAgICAgICAgIFwKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcodGVtcCwgI25hbWUsIHZhbHVlKSA8IDApIHsgICAgICAgICAgIFwKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOyBQeV9ERUNSRUYodmFsdWUpOyByZXR1cm4gTlVMTDsgfSAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYodGVtcCk7IFB5X0RFQ1JFRih2YWx1ZSk7IHJldHVybiBOVUxMOyB9ICAgICAgICAgXAogICAgIFB5X0RFQ1JFRih2YWx1ZSkKIAogI2lmIGRlZmluZWQoSEFWRV9TRU1fT1BFTikgJiYgIWRlZmluZWQoUE9TSVhfU0VNQVBIT1JFU19OT1RfRU5BQkxFRCkKQEAgLTM1Miw5ICsyMDYsNiBAQAogI2lmZGVmIEhBVkVfU0VNX1RJTUVEV0FJVAogICAgIEFERF9GTEFHKEhBVkVfU0VNX1RJTUVEV0FJVCk7CiAjZW5kaWYKLSNpZmRlZiBIQVZFX0ZEX1RSQU5TRkVSCi0gICAgQUREX0ZMQUcoSEFWRV9GRF9UUkFOU0ZFUik7Ci0jZW5kaWYKICNpZmRlZiBIQVZFX0JST0tFTl9TRU1fR0VUVkFMVUUKICAgICBBRERfRkxBRyhIQVZFX0JST0tFTl9TRU1fR0VUVkFMVUUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmggYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKaW5kZXggMTQ0MjVkZS4uZTNkZTliYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCisrKyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaApAQCAtMywxMiArMyw2IEBACiAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogCi0jaWZkZWYgX19zdW4KLS8qIFRoZSBjb250cm9sIG1lc3NhZ2UgQVBJIGlzIG9ubHkgYXZhaWxhYmxlIG9uIFNvbGFyaXMgCi0gICBpZiBYUEcgNC4yIG9yIGxhdGVyIGlzIHJlcXVlc3RlZC4gKi8KLSNkZWZpbmUgX1hPUEVOX1NPVVJDRSA1MDAKLSNlbmRpZgotCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKQEAgLTI5LDEwICsyMyw2IEBACiAjICBkZWZpbmUgU0VNX1ZBTFVFX01BWCBMT05HX01BWAogI2Vsc2UKICMgIGluY2x1ZGUgPGZjbnRsLmg+ICAgICAgICAgICAgICAgICAvKiBPX0NSRUFUIGFuZCBPX0VYQ0wgKi8KLSMgIGluY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSMgIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSMgIGluY2x1ZGUgPHN5cy91aW8uaD4KLSMgIGluY2x1ZGUgPGFycGEvaW5ldC5oPiAgICAgICAgICAgICAvKiBodG9ubCgpIGFuZCBudG9obCgpICovCiAjICBpZiBkZWZpbmVkKEhBVkVfU0VNX09QRU4pICYmICFkZWZpbmVkKFBPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQpCiAjICAgIGluY2x1ZGUgPHNlbWFwaG9yZS5oPgogICAgICB0eXBlZGVmIHNlbV90ICpTRU1fSEFORExFOwpAQCAtNjQsMjAgKzU0LDYgQEAKIAogCiAvKgotICogTWFrZSBzdXJlIFB5X3NzaXplX3QgYXZhaWxhYmxlCi0gKi8KLQotI2lmIFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCAmJiAhZGVmaW5lZChQWV9TU0laRV9UX01JTikKLSAgIHR5cGVkZWYgaW50IFB5X3NzaXplX3Q7Ci0jICBkZWZpbmUgUFlfU1NJWkVfVF9NQVggSU5UX01BWAotIyAgZGVmaW5lIFBZX1NTSVpFX1RfTUlOIElOVF9NSU4KLSMgIGRlZmluZSBGX1BZX1NTSVpFX1QgImkiCi0jICBkZWZpbmUgUHlJbnRfRnJvbVNzaXplX3QobikgUHlJbnRfRnJvbUxvbmcoKGxvbmcpbikKLSNlbHNlCi0jICBkZWZpbmUgRl9QWV9TU0laRV9UICJuIgotI2VuZGlmCi0KLS8qCiAgKiBGb3JtYXQgY29kZXMKICAqLwogCkBAIC0xMDUsMTIgKzgxLDYgQEAKICMgIGRlZmluZSBUX1NFTV9IQU5ETEUgVF9QT0lOVEVSCiAjZW5kaWYKIAotI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDMwMDAwMDAKLSMgIGRlZmluZSBGX1JCVUZGRVIgInkiCi0jZWxzZQotIyAgZGVmaW5lIEZfUkJVRkZFUiAicyIKLSNlbmRpZgotCiAvKgogICogRXJyb3IgY29kZXMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyBjYWxsZWQgd2l0aG91dCBHSUwKICAqLwpAQCAtMTE4LDExICs4OCw4IEBACiAjZGVmaW5lIE1QX1NVQ0NFU1MgKDApCiAjZGVmaW5lIE1QX1NUQU5EQVJEX0VSUk9SICgtMSkKICNkZWZpbmUgTVBfTUVNT1JZX0VSUk9SICgtMTAwMSkKLSNkZWZpbmUgTVBfRU5EX09GX0ZJTEUgKC0xMDAyKQotI2RlZmluZSBNUF9FQVJMWV9FTkRfT0ZfRklMRSAoLTEwMDMpCi0jZGVmaW5lIE1QX0JBRF9NRVNTQUdFX0xFTkdUSCAoLTEwMDQpCi0jZGVmaW5lIE1QX1NPQ0tFVF9FUlJPUiAoLTEwMDUpCi0jZGVmaW5lIE1QX0VYQ0VQVElPTl9IQVNfQkVFTl9TRVQgKC0xMDA2KQorI2RlZmluZSBNUF9TT0NLRVRfRVJST1IgKC0xMDAyKQorI2RlZmluZSBNUF9FWENFUFRJT05fSEFTX0JFRU5fU0VUICgtMTAwMykKIAogUHlPYmplY3QgKm1wX1NldEVycm9yKFB5T2JqZWN0ICpUeXBlLCBpbnQgbnVtKTsKIApAQCAtMTMwLDU3ICs5NywxNCBAQAogICogRXh0ZXJucyAtIG5vdCBhbGwgd2lsbCByZWFsbHkgZXhpc3Qgb24gYWxsIHBsYXRmb3JtcwogICovCiAKLWV4dGVybiBQeU9iamVjdCAqcGlja2xlX2R1bXBzOwotZXh0ZXJuIFB5T2JqZWN0ICpwaWNrbGVfbG9hZHM7Ci1leHRlcm4gUHlPYmplY3QgKnBpY2tsZV9wcm90b2NvbDsKIGV4dGVybiBQeU9iamVjdCAqQnVmZmVyVG9vU2hvcnQ7CiBleHRlcm4gUHlUeXBlT2JqZWN0IFNlbUxvY2tUeXBlOwotZXh0ZXJuIFB5VHlwZU9iamVjdCBDb25uZWN0aW9uVHlwZTsKIGV4dGVybiBQeVR5cGVPYmplY3QgUGlwZUNvbm5lY3Rpb25UeXBlOwotZXh0ZXJuIEhBTkRMRSBzaWdpbnRfZXZlbnQ7Ci0KLS8qCi0gKiBQeTNrIGNvbXBhdGliaWxpdHkKLSAqLwotCi0jaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMzAwMDAwMAotIyAgZGVmaW5lIFBJQ0tMRV9NT0RVTEUgInBpY2tsZSIKLSMgIGRlZmluZSBGUk9NX0ZPUk1BVCBQeVVuaWNvZGVfRnJvbUZvcm1hdAotIyAgZGVmaW5lIFB5SW50X0Zyb21Mb25nIFB5TG9uZ19Gcm9tTG9uZwotIyAgZGVmaW5lIFB5SW50X0Zyb21Tc2l6ZV90IFB5TG9uZ19Gcm9tU3NpemVfdAotI2Vsc2UKLSMgIGRlZmluZSBQSUNLTEVfTU9EVUxFICJjUGlja2xlIgotIyAgZGVmaW5lIEZST01fRk9STUFUIFB5U3RyaW5nX0Zyb21Gb3JtYXQKLSNlbmRpZgotCi0jaWZuZGVmIFB5VmFyT2JqZWN0X0hFQURfSU5JVAotIyAgZGVmaW5lIFB5VmFyT2JqZWN0X0hFQURfSU5JVCh0eXBlLCBzaXplKSBQeU9iamVjdF9IRUFEX0lOSVQodHlwZSkgc2l6ZSwKLSNlbmRpZgotCi0jaWZuZGVmIFB5X1RQRkxBR1NfSEFWRV9XRUFLUkVGUwotIyAgZGVmaW5lIFB5X1RQRkxBR1NfSEFWRV9XRUFLUkVGUyAwCi0jZW5kaWYKLQotLyoKLSAqIENvbm5lY3Rpb24gZGVmaW5pdGlvbgotICovCi0KLSNkZWZpbmUgQ09OTkVDVElPTl9CVUZGRVJfU0laRSAxMDI0Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi0gICAgSEFORExFIGhhbmRsZTsKLSAgICBpbnQgZmxhZ3M7Ci0gICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OwotICAgIGNoYXIgYnVmZmVyW0NPTk5FQ1RJT05fQlVGRkVSX1NJWkVdOwotfSBDb25uZWN0aW9uT2JqZWN0OwogCiAvKgogICogTWlzY2VsbGFuZW91cwogICovCiAKLSNkZWZpbmUgTUFYX01FU1NBR0VfTEVOR1RIIDB4N2ZmZmZmZmYKLQogI2lmbmRlZiBNSU4KICMgIGRlZmluZSBNSU4oeCwgeSkgKCh4KSA8ICh5KSA/IHggOiB5KQogIyAgZGVmaW5lIE1BWCh4LCB5KSAoKHgpID4gKHkpID8geCA6IHkpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvcGlwZV9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvcGlwZV9jb25uZWN0aW9uLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ZGRlMGMuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3BpcGVfY29ubmVjdGlvbi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gKiBBIHR5cGUgd2hpY2ggd3JhcHMgYSBwaXBlIGhhbmRsZSBpbiBtZXNzYWdlIG9yaWVudGVkIG1vZGUKLSAqCi0gKiBwaXBlX2Nvbm5lY3Rpb24uYwotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAotICovCi0KLSNpbmNsdWRlICJtdWx0aXByb2Nlc3NpbmcuaCIKLQotI2RlZmluZSBDTE9TRShoKSBDbG9zZUhhbmRsZShoKQotCi0vKgotICogU2VuZCBzdHJpbmcgdG8gdGhlIHBpcGU7IGFzc3VtZXMgaW4gbWVzc2FnZSBvcmllbnRlZCBtb2RlCi0gKi8KLQotc3RhdGljIFB5X3NzaXplX3QKLWNvbm5fc2VuZF9zdHJpbmcoQ29ubmVjdGlvbk9iamVjdCAqY29ubiwgY2hhciAqc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQotewotICAgIERXT1JEIGFtb3VudF93cml0dGVuOwotICAgIEJPT0wgcmV0OwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IFdyaXRlRmlsZShjb25uLT5oYW5kbGUsIHN0cmluZywgbGVuZ3RoLCAmYW1vdW50X3dyaXR0ZW4sIE5VTEwpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmV0ID09IDAgJiYgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfTk9fU1lTVEVNX1JFU09VUkNFUykgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkNhbm5ub3Qgc2VuZCAlIiBQWV9GT1JNQVRfU0laRV9UICJkIGJ5dGVzIG92ZXIgY29ubmVjdGlvbiIsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0ID8gTVBfU1VDQ0VTUyA6IE1QX1NUQU5EQVJEX0VSUk9SOwotfQotCi0vKgotICogQXR0ZW1wdHMgdG8gcmVhZCBpbnRvIGJ1ZmZlciwgb3IgaWYgYnVmZmVyIHRvbyBzbWFsbCBpbnRvICpuZXdidWZmZXIuCi0gKgotICogUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIEFzc3VtZXMgaW4gbWVzc2FnZSBvcmllbnRlZCBtb2RlLgotICovCi0KLXN0YXRpYyBQeV9zc2l6ZV90Ci1jb25uX3JlY3Zfc3RyaW5nKENvbm5lY3Rpb25PYmplY3QgKmNvbm4sIGNoYXIgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgc2l6ZV90IGJ1Zmxlbmd0aCwgY2hhciAqKm5ld2J1ZmZlciwgc2l6ZV90IG1heGxlbmd0aCkKLXsKLSAgICBEV09SRCBsZWZ0LCBsZW5ndGgsIGZ1bGxfbGVuZ3RoLCBlcnI7Ci0gICAgQk9PTCByZXQ7Ci0gICAgKm5ld2J1ZmZlciA9IE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmV0ID0gUmVhZEZpbGUoY29ubi0+aGFuZGxlLCBidWZmZXIsIE1JTihidWZsZW5ndGgsIG1heGxlbmd0aCksCi0gICAgICAgICAgICAgICAgICAmbGVuZ3RoLCBOVUxMKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXQpCi0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0KLSAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICBpZiAoZXJyICE9IEVSUk9SX01PUkVfREFUQSkgewotICAgICAgICBpZiAoZXJyID09IEVSUk9SX0JST0tFTl9QSVBFKQotICAgICAgICAgICAgcmV0dXJuIE1QX0VORF9PRl9GSUxFOwotICAgICAgICByZXR1cm4gTVBfU1RBTkRBUkRfRVJST1I7Ci0gICAgfQotCi0gICAgaWYgKCFQZWVrTmFtZWRQaXBlKGNvbm4tPmhhbmRsZSwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmxlZnQpKQotICAgICAgICByZXR1cm4gTVBfU1RBTkRBUkRfRVJST1I7Ci0KLSAgICBmdWxsX2xlbmd0aCA9IGxlbmd0aCArIGxlZnQ7Ci0gICAgaWYgKGZ1bGxfbGVuZ3RoID4gbWF4bGVuZ3RoKQotICAgICAgICByZXR1cm4gTVBfQkFEX01FU1NBR0VfTEVOR1RIOwotCi0gICAgKm5ld2J1ZmZlciA9IFB5TWVtX01hbGxvYyhmdWxsX2xlbmd0aCk7Ci0gICAgaWYgKCpuZXdidWZmZXIgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE1QX01FTU9SWV9FUlJPUjsKLQotICAgIG1lbWNweSgqbmV3YnVmZmVyLCBidWZmZXIsIGxlbmd0aCk7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmV0ID0gUmVhZEZpbGUoY29ubi0+aGFuZGxlLCAqbmV3YnVmZmVyK2xlbmd0aCwgbGVmdCwgJmxlbmd0aCwgTlVMTCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmV0KSB7Ci0gICAgICAgIGFzc2VydChsZW5ndGggPT0gbGVmdCk7Ci0gICAgICAgIHJldHVybiBmdWxsX2xlbmd0aDsKLSAgICB9IGVsc2UgewotICAgICAgICBQeU1lbV9GcmVlKCpuZXdidWZmZXIpOwotICAgICAgICByZXR1cm4gTVBfU1RBTkRBUkRfRVJST1I7Ci0gICAgfQotfQotCi0vKgotICogQ2hlY2sgd2hldGhlciBhbnkgZGF0YSBpcyBhdmFpbGFibGUgZm9yIHJlYWRpbmcKLSAqLwotCi1zdGF0aWMgaW50Ci1jb25uX3BvbGwoQ29ubmVjdGlvbk9iamVjdCAqY29ubiwgZG91YmxlIHRpbWVvdXQsIFB5VGhyZWFkU3RhdGUgKl9zYXZlKQotewotICAgIERXT1JEIGJ5dGVzLCBkZWFkbGluZSwgZGVsYXk7Ci0gICAgaW50IGRpZmZlcmVuY2UsIHJlczsKLSAgICBCT09MIGJsb2NrID0gRkFMU0U7Ci0KLSAgICBpZiAoIVBlZWtOYW1lZFBpcGUoY29ubi0+aGFuZGxlLCBOVUxMLCAwLCBOVUxMLCAmYnl0ZXMsIE5VTEwpKQotICAgICAgICByZXR1cm4gTVBfU1RBTkRBUkRfRVJST1I7Ci0KLSAgICBpZiAodGltZW91dCA9PSAwLjApCi0gICAgICAgIHJldHVybiBieXRlcyA+IDA7Ci0KLSAgICBpZiAodGltZW91dCA8IDAuMCkKLSAgICAgICAgYmxvY2sgPSBUUlVFOwotICAgIGVsc2UKLSAgICAgICAgLyogWFhYIGRvZXMgbm90IGNoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgICAgICBkZWFkbGluZSA9IEdldFRpY2tDb3VudCgpICsgKERXT1JEKSgxMDAwICogdGltZW91dCArIDAuNSk7Ci0KLSAgICBTbGVlcCgwKTsKLQotICAgIGZvciAoZGVsYXkgPSAxIDsgOyBkZWxheSArPSAxKSB7Ci0gICAgICAgIGlmICghUGVla05hbWVkUGlwZShjb25uLT5oYW5kbGUsIE5VTEwsIDAsIE5VTEwsICZieXRlcywgTlVMTCkpCi0gICAgICAgICAgICByZXR1cm4gTVBfU1RBTkRBUkRfRVJST1I7Ci0gICAgICAgIGVsc2UgaWYgKGJ5dGVzID4gMCkKLSAgICAgICAgICAgIHJldHVybiBUUlVFOwotCi0gICAgICAgIGlmICghYmxvY2spIHsKLSAgICAgICAgICAgIGRpZmZlcmVuY2UgPSBkZWFkbGluZSAtIEdldFRpY2tDb3VudCgpOwotICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgICAgIGlmICgoaW50KWRlbGF5ID4gZGlmZmVyZW5jZSkKLSAgICAgICAgICAgICAgICBkZWxheSA9IGRpZmZlcmVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGVsYXkgPiAyMCkKLSAgICAgICAgICAgIGRlbGF5ID0gMjA7Ci0KLSAgICAgICAgU2xlZXAoZGVsYXkpOwotCi0gICAgICAgIC8qIGNoZWNrIGZvciBzaWduYWxzICovCi0gICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKLSAgICAgICAgcmVzID0gUHlFcnJfQ2hlY2tTaWduYWxzKCk7Ci0gICAgICAgIFB5X1VOQkxPQ0tfVEhSRUFEUwotCi0gICAgICAgIGlmIChyZXMpCi0gICAgICAgICAgICByZXR1cm4gTVBfRVhDRVBUSU9OX0hBU19CRUVOX1NFVDsKLSAgICB9Ci19Ci0KLS8qCi0gKiAiY29ubmVjdGlvbi5oIiBkZWZpbmVzIHRoZSBQaXBlQ29ubmVjdGlvbiB0eXBlIHVzaW5nIHRoZSBkZWZpbml0aW9ucyBhYm92ZQotICovCi0KLSNkZWZpbmUgQ09OTkVDVElPTl9OQU1FICJQaXBlQ29ubmVjdGlvbiIKLSNkZWZpbmUgQ09OTkVDVElPTl9UWVBFIFBpcGVDb25uZWN0aW9uVHlwZQotCi0jaW5jbHVkZSAiY29ubmVjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NlbWFwaG9yZS5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NlbWFwaG9yZS5jCmluZGV4IDFmMzdkNmEuLjhlYTkyZjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9zZW1hcGhvcmUuYworKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc2VtYXBob3JlLmMKQEAgLTMsNyArMyw4IEBACiAgKgogICogc2VtYXBob3JlLmMKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrIC0tLSBzZWUgQ09QWUlORy50eHQKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKKyAqIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICAqLwogCiAjaW5jbHVkZSAibXVsdGlwcm9jZXNzaW5nLmgiCkBAIC02Miw3ICs2Myw4IEBACiAgICAgaW50IGJsb2NraW5nID0gMTsKICAgICBkb3VibGUgdGltZW91dDsKICAgICBQeU9iamVjdCAqdGltZW91dF9vYmogPSBQeV9Ob25lOwotICAgIERXT1JEIHJlcywgZnVsbF9tc2VjcywgbXNlY3MsIHN0YXJ0LCB0aWNrczsKKyAgICBEV09SRCByZXMsIGZ1bGxfbXNlY3MsIG5oYW5kbGVzOworICAgIEhBTkRMRSBoYW5kbGVzWzJdLCBzaWdpbnRfZXZlbnQ7CiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImJsb2NrIiwgInRpbWVvdXQiLCBOVUxMfTsKIApAQCAtOTYsNTMgKzk4LDQwIEBACiAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgIH0KIAotICAgIC8qIGNoZWNrIHdoZXRoZXIgd2UgY2FuIGFjcXVpcmUgd2l0aG91dCBibG9ja2luZyAqLworICAgIC8qIGNoZWNrIHdoZXRoZXIgd2UgY2FuIGFjcXVpcmUgd2l0aG91dCByZWxlYXNpbmcgdGhlIEdJTCBhbmQgYmxvY2tpbmcgKi8KICAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdChzZWxmLT5oYW5kbGUsIDApID09IFdBSVRfT0JKRUNUXzApIHsKICAgICAgICAgc2VsZi0+bGFzdF90aWQgPSBHZXRDdXJyZW50VGhyZWFkSWQoKTsKICAgICAgICAgKytzZWxmLT5jb3VudDsKICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgfQogCi0gICAgbXNlY3MgPSBmdWxsX21zZWNzOwotICAgIHN0YXJ0ID0gR2V0VGlja0NvdW50KCk7Ci0KLSAgICBmb3IgKCA7IDsgKSB7Ci0gICAgICAgIEhBTkRMRSBoYW5kbGVzWzJdID0ge3NlbGYtPmhhbmRsZSwgc2lnaW50X2V2ZW50fTsKLQotICAgICAgICAvKiBkbyB0aGUgd2FpdCAqLwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIFJlc2V0RXZlbnQoc2lnaW50X2V2ZW50KTsKLSAgICAgICAgcmVzID0gV2FpdEZvck11bHRpcGxlT2JqZWN0cygyLCBoYW5kbGVzLCBGQUxTRSwgbXNlY3MpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIC8qIGhhbmRsZSByZXN1bHQgKi8KLSAgICAgICAgaWYgKHJlcyAhPSBXQUlUX09CSkVDVF8wICsgMSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8qIGdvdCBTSUdJTlQgc28gZ2l2ZSBzaWduYWwgaGFuZGxlciBhIGNoYW5jZSB0byBydW4gKi8KLSAgICAgICAgU2xlZXAoMSk7Ci0KLSAgICAgICAgLyogaWYgdGhpcyBpcyBtYWluIHRocmVhZCBsZXQgS2V5Ym9hcmRJbnRlcnJ1cHQgYmUgcmFpc2VkICovCi0gICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIC8qIHJlY2FsY3VsYXRlIHRpbWVvdXQgKi8KLSAgICAgICAgaWYgKG1zZWNzICE9IElORklOSVRFKSB7Ci0gICAgICAgICAgICB0aWNrcyA9IEdldFRpY2tDb3VudCgpOwotICAgICAgICAgICAgaWYgKChEV09SRCkodGlja3MgLSBzdGFydCkgPj0gZnVsbF9tc2VjcykKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgICAgICAgICBtc2VjcyA9IGZ1bGxfbXNlY3MgLSAodGlja3MgLSBzdGFydCk7Ci0gICAgICAgIH0KKyAgICAvKiBwcmVwYXJlIGxpc3Qgb2YgaGFuZGxlcyAqLworICAgIG5oYW5kbGVzID0gMDsKKyAgICBoYW5kbGVzW25oYW5kbGVzKytdID0gc2VsZi0+aGFuZGxlOworICAgIGlmIChfUHlPU19Jc01haW5UaHJlYWQoKSkgeworICAgICAgICBzaWdpbnRfZXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICBhc3NlcnQoc2lnaW50X2V2ZW50ICE9IE5VTEwpOworICAgICAgICBoYW5kbGVzW25oYW5kbGVzKytdID0gc2lnaW50X2V2ZW50OwogICAgIH0KIAorICAgIC8qIGRvIHRoZSB3YWl0ICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChzaWdpbnRfZXZlbnQgIT0gTlVMTCkKKyAgICAgICAgUmVzZXRFdmVudChzaWdpbnRfZXZlbnQpOworICAgIHJlcyA9IFdhaXRGb3JNdWx0aXBsZU9iamVjdHMobmhhbmRsZXMsIGhhbmRsZXMsIEZBTFNFLCBmdWxsX21zZWNzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCiAgICAgLyogaGFuZGxlIHJlc3VsdCAqLwogICAgIHN3aXRjaCAocmVzKSB7CiAgICAgY2FzZSBXQUlUX1RJTUVPVVQ6CiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICBjYXNlIFdBSVRfT0JKRUNUXzA6CisgICAgY2FzZSBXQUlUX09CSkVDVF8wICsgMDoKICAgICAgICAgc2VsZi0+bGFzdF90aWQgPSBHZXRDdXJyZW50VGhyZWFkSWQoKTsKICAgICAgICAgKytzZWxmLT5jb3VudDsKICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgY2FzZSBXQUlUX09CSkVDVF8wICsgMToKKyAgICAgICAgZXJybm8gPSBFSU5UUjsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICBjYXNlIFdBSVRfRkFJTEVEOgogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgZGVmYXVsdDoKQEAgLTQ4Myw3ICs0NzIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNlbWxvY2tfY291bnQoU2VtTG9ja09iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlJbnRfRnJvbUxvbmcoKGxvbmcpc2VsZi0+Y291bnQpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc2VsZi0+Y291bnQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTA3LDcgKzQ5Niw3IEBACiAgICAgICAgdGhlIG51bWJlciBvZiB3YWl0aW5nIHRocmVhZHMgKi8KICAgICBpZiAoc3ZhbCA8IDApCiAgICAgICAgIHN2YWwgPSAwOwotICAgIHJldHVybiBQeUludF9Gcm9tTG9uZygobG9uZylzdmFsKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXN2YWwpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9zb2NrZXRfY29ubmVjdGlvbi5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNjljMGEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotLyoKLSAqIEEgdHlwZSB3aGljaCB3cmFwcyBhIHNvY2tldAotICoKLSAqIHNvY2tldF9jb25uZWN0aW9uLmMKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrIC0tLSBzZWUgQ09QWUlORy50eHQKLSAqLwotCi0jaW5jbHVkZSAibXVsdGlwcm9jZXNzaW5nLmgiCi0KLSNpZmRlZiBNU19XSU5ET1dTCi0jICBkZWZpbmUgV1JJVEUoaCwgYnVmZmVyLCBsZW5ndGgpIHNlbmQoKFNPQ0tFVCloLCBidWZmZXIsIGxlbmd0aCwgMCkKLSMgIGRlZmluZSBSRUFEKGgsIGJ1ZmZlciwgbGVuZ3RoKSByZWN2KChTT0NLRVQpaCwgYnVmZmVyLCBsZW5ndGgsIDApCi0jICBkZWZpbmUgQ0xPU0UoaCkgY2xvc2Vzb2NrZXQoKFNPQ0tFVCloKQotI2Vsc2UKLSMgIGRlZmluZSBXUklURShoLCBidWZmZXIsIGxlbmd0aCkgd3JpdGUoaCwgYnVmZmVyLCBsZW5ndGgpCi0jICBkZWZpbmUgUkVBRChoLCBidWZmZXIsIGxlbmd0aCkgcmVhZChoLCBidWZmZXIsIGxlbmd0aCkKLSMgIGRlZmluZSBDTE9TRShoKSBjbG9zZShoKQotI2VuZGlmCi0KLS8qCi0gKiBTZW5kIHN0cmluZyB0byBmaWxlIGRlc2NyaXB0b3IKLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotX2Nvbm5fc2VuZGFsbChIQU5ETEUgaCwgY2hhciAqc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQotewotICAgIGNoYXIgKnAgPSBzdHJpbmc7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0KLSAgICB3aGlsZSAobGVuZ3RoID4gMCkgewotICAgICAgICByZXMgPSBXUklURShoLCBwLCBsZW5ndGgpOwotICAgICAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBNUF9TT0NLRVRfRVJST1I7Ci0gICAgICAgIGxlbmd0aCAtPSByZXM7Ci0gICAgICAgIHAgKz0gcmVzOwotICAgIH0KLQotICAgIHJldHVybiBNUF9TVUNDRVNTOwotfQotCi0vKgotICogUmVjZWl2ZSBzdHJpbmcgb2YgZXhhY3QgbGVuZ3RoIGZyb20gZmlsZSBkZXNjcmlwdG9yCi0gKi8KLQotc3RhdGljIFB5X3NzaXplX3QKLV9jb25uX3JlY3ZhbGwoSEFORExFIGgsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBzaXplX3QgcmVtYWluaW5nID0gbGVuZ3RoOwotICAgIFB5X3NzaXplX3QgdGVtcDsKLSAgICBjaGFyICpwID0gYnVmZmVyOwotCi0gICAgd2hpbGUgKHJlbWFpbmluZyA+IDApIHsKLSAgICAgICAgdGVtcCA9IFJFQUQoaCwgcCwgcmVtYWluaW5nKTsKLSAgICAgICAgaWYgKHRlbXAgPD0gMCkgewotICAgICAgICAgICAgaWYgKHRlbXAgPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtYWluaW5nID09IGxlbmd0aCA/Ci0gICAgICAgICAgICAgICAgICAgIE1QX0VORF9PRl9GSUxFIDogTVBfRUFSTFlfRU5EX09GX0ZJTEU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRlbXA7Ci0gICAgICAgIH0KLSAgICAgICAgcmVtYWluaW5nIC09IHRlbXA7Ci0gICAgICAgIHAgKz0gdGVtcDsKLSAgICB9Ci0KLSAgICByZXR1cm4gTVBfU1VDQ0VTUzsKLX0KLQotLyoKLSAqIFNlbmQgYSBzdHJpbmcgcHJlcGVuZGVkIGJ5IHRoZSBzdHJpbmcgbGVuZ3RoIGluIG5ldHdvcmsgYnl0ZSBvcmRlcgotICovCi0KLXN0YXRpYyBQeV9zc2l6ZV90Ci1jb25uX3NlbmRfc3RyaW5nKENvbm5lY3Rpb25PYmplY3QgKmNvbm4sIGNoYXIgKnN0cmluZywgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBQeV9zc2l6ZV90IHJlczsKLSAgICAvKiBUaGUgImhlYWRlciIgb2YgdGhlIG1lc3NhZ2UgaXMgYSAzMiBiaXQgdW5zaWduZWQgbnVtYmVyIChpbgotICAgICAgIG5ldHdvcmsgb3JkZXIpIHdoaWNoIHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSAiYm9keSIuICBJZgotICAgICAgIHRoZSBtZXNzYWdlIGlzIHNob3J0ZXIgdGhhbiBhYm91dCAxNmtiIHRoZW4gaXQgaXMgcXVpY2tlciB0bwotICAgICAgIGNvbWJpbmUgdGhlICJoZWFkZXIiIGFuZCB0aGUgImJvZHkiIG9mIHRoZSBtZXNzYWdlIGFuZCBzZW5kCi0gICAgICAgdGhlbSBhdCBvbmNlLiAqLwotICAgIGlmIChsZW5ndGggPCAoMTYqMTAyNCkpIHsKLSAgICAgICAgY2hhciAqbWVzc2FnZTsKLQotICAgICAgICBtZXNzYWdlID0gUHlNZW1fTWFsbG9jKGxlbmd0aCs0KTsKLSAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBNUF9NRU1PUllfRVJST1I7Ci0KLSAgICAgICAgKihVSU5UMzIqKW1lc3NhZ2UgPSBodG9ubCgoVUlOVDMyKWxlbmd0aCk7Ci0gICAgICAgIG1lbWNweShtZXNzYWdlKzQsIHN0cmluZywgbGVuZ3RoKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXMgPSBfY29ubl9zZW5kYWxsKGNvbm4tPmhhbmRsZSwgbWVzc2FnZSwgbGVuZ3RoKzQpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBQeU1lbV9GcmVlKG1lc3NhZ2UpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVJTlQzMiBsZW5idWZmOwotCi0gICAgICAgIGlmIChsZW5ndGggPiBNQVhfTUVTU0FHRV9MRU5HVEgpCi0gICAgICAgICAgICByZXR1cm4gTVBfQkFEX01FU1NBR0VfTEVOR1RIOwotCi0gICAgICAgIGxlbmJ1ZmYgPSBodG9ubCgoVUlOVDMyKWxlbmd0aCk7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gX2Nvbm5fc2VuZGFsbChjb25uLT5oYW5kbGUsIChjaGFyKikmbGVuYnVmZiwgNCkgfHwKLSAgICAgICAgICAgIF9jb25uX3NlbmRhbGwoY29ubi0+aGFuZGxlLCBzdHJpbmcsIGxlbmd0aCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qCi0gKiBBdHRlbXB0cyB0byByZWFkIGludG8gYnVmZmVyLCBvciBmYWlsaW5nIHRoYXQgaW50byAqbmV3YnVmZmVyCi0gKgotICogUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotY29ubl9yZWN2X3N0cmluZyhDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBjaGFyICpidWZmZXIsCi0gICAgICAgICAgICAgICAgIHNpemVfdCBidWZsZW5ndGgsIGNoYXIgKipuZXdidWZmZXIsIHNpemVfdCBtYXhsZW5ndGgpCi17Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0gICAgVUlOVDMyIHVsZW5ndGg7Ci0KLSAgICAqbmV3YnVmZmVyID0gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBfY29ubl9yZWN2YWxsKGNvbm4tPmhhbmRsZSwgKGNoYXIqKSZ1bGVuZ3RoLCA0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcmVzOwotCi0gICAgdWxlbmd0aCA9IG50b2hsKHVsZW5ndGgpOwotICAgIGlmICh1bGVuZ3RoID4gbWF4bGVuZ3RoKQotICAgICAgICByZXR1cm4gTVBfQkFEX01FU1NBR0VfTEVOR1RIOwotCi0gICAgaWYgKHVsZW5ndGggPiBidWZsZW5ndGgpIHsKLSAgICAgICAgKm5ld2J1ZmZlciA9IGJ1ZmZlciA9IFB5TWVtX01hbGxvYygoc2l6ZV90KXVsZW5ndGgpOwotICAgICAgICBpZiAoYnVmZmVyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTVBfTUVNT1JZX0VSUk9SOwotICAgIH0KLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBfY29ubl9yZWN2YWxsKGNvbm4tPmhhbmRsZSwgYnVmZmVyLCAoc2l6ZV90KXVsZW5ndGgpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzID49IDApIHsKLSAgICAgICAgcmVzID0gKFB5X3NzaXplX3QpdWxlbmd0aDsKLSAgICB9IGVsc2UgaWYgKCpuZXdidWZmZXIgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKCpuZXdidWZmZXIpOwotICAgICAgICAqbmV3YnVmZmVyID0gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotLyoKLSAqIENoZWNrIHdoZXRoZXIgYW55IGRhdGEgaXMgYXZhaWxhYmxlIGZvciByZWFkaW5nIC0tIG5lZyB0aW1lb3V0IGJsb2NrcwotICovCi0KLXN0YXRpYyBpbnQKLWNvbm5fcG9sbChDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBkb3VibGUgdGltZW91dCwgUHlUaHJlYWRTdGF0ZSAqX3NhdmUpCi17Ci0gICAgaW50IHJlczsKLSAgICBmZF9zZXQgcmZkczsKLQotICAgIC8qCi0gICAgICogVmVyaWZ5IHRoZSBoYW5kbGUsIGlzc3VlIDMzMjEuIE5vdCByZXF1aXJlZCBmb3Igd2luZG93cy4KLSAgICAgKi8KLSAgICAjaWZuZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKCgoaW50KWNvbm4tPmhhbmRsZSkgPCAwIHx8ICgoaW50KWNvbm4tPmhhbmRsZSkgPj0gRkRfU0VUU0laRSkgewotICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJoYW5kbGUgb3V0IG9mIHJhbmdlIGluIHNlbGVjdCgpIik7Ci0gICAgICAgICAgICBQeV9VTkJMT0NLX1RIUkVBRFMKLSAgICAgICAgICAgIHJldHVybiBNUF9FWENFUFRJT05fSEFTX0JFRU5fU0VUOwotICAgICAgICB9Ci0gICAgI2VuZGlmCi0KLSAgICBGRF9aRVJPKCZyZmRzKTsKLSAgICBGRF9TRVQoKFNPQ0tFVCljb25uLT5oYW5kbGUsICZyZmRzKTsKLQotICAgIGlmICh0aW1lb3V0IDwgMC4wKSB7Ci0gICAgICAgIHJlcyA9IHNlbGVjdCgoaW50KWNvbm4tPmhhbmRsZSsxLCAmcmZkcywgTlVMTCwgTlVMTCwgTlVMTCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7Ci0gICAgICAgIHR2LnR2X3NlYyA9IChsb25nKXRpbWVvdXQ7Ci0gICAgICAgIHR2LnR2X3VzZWMgPSAobG9uZykoKHRpbWVvdXQgLSB0di50dl9zZWMpICogMWU2ICsgMC41KTsKLSAgICAgICAgcmVzID0gc2VsZWN0KChpbnQpY29ubi0+aGFuZGxlKzEsICZyZmRzLCBOVUxMLCBOVUxMLCAmdHYpOwotICAgIH0KLQotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIHJldHVybiBNUF9TT0NLRVRfRVJST1I7Ci0gICAgfSBlbHNlIGlmIChGRF9JU1NFVChjb25uLT5oYW5kbGUsICZyZmRzKSkgewotICAgICAgICByZXR1cm4gVFJVRTsKLSAgICB9IGVsc2UgewotICAgICAgICBhc3NlcnQocmVzID09IDApOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotfQotCi0vKgotICogImNvbm5lY3Rpb24uaCIgZGVmaW5lcyB0aGUgQ29ubmVjdGlvbiB0eXBlIHVzaW5nIGRlZnMgYWJvdmUKLSAqLwotCi0jZGVmaW5lIENPTk5FQ1RJT05fTkFNRSAiQ29ubmVjdGlvbiIKLSNkZWZpbmUgQ09OTkVDVElPTl9UWVBFIENvbm5lY3Rpb25UeXBlCi0KLSNpbmNsdWRlICJjb25uZWN0aW9uLmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvd2luMzJfZnVuY3Rpb25zLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvd2luMzJfZnVuY3Rpb25zLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMzQ4YzQuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLS8qCi0gKiBXaW4zMiBmdW5jdGlvbnMgdXNlZCBieSBtdWx0aXByb2Nlc3NpbmcgcGFja2FnZQotICoKLSAqIHdpbjMyX2Z1bmN0aW9ucy5jCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyayAtLS0gc2VlIENPUFlJTkcudHh0Ci0gKi8KLQotI2luY2x1ZGUgIm11bHRpcHJvY2Vzc2luZy5oIgotCi0KLSNkZWZpbmUgV0lOMzJfRlVOQ1RJT04oZnVuYykgXAotICAgIHsjZnVuYywgKFB5Q0Z1bmN0aW9uKXdpbjMyXyAjIyBmdW5jLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX1NUQVRJQywgIiJ9Ci0KLSNkZWZpbmUgV0lOMzJfQ09OU1RBTlQoZm10LCBjb24pIFwKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhXaW4zMlR5cGUudHBfZGljdCwgI2NvbiwgUHlfQnVpbGRWYWx1ZShmbXQsIGNvbikpCi0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX0Nsb3NlSGFuZGxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBIQU5ETEUgaE9iamVjdDsKLSAgICBCT09MIHN1Y2Nlc3M7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUsICZoT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc3VjY2VzcyA9IENsb3NlSGFuZGxlKGhPYmplY3QpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEFORExFIGhOYW1lZFBpcGU7Ci0gICAgTFBPVkVSTEFQUEVEIGxwT3ZlcmxhcHBlZDsKLSAgICBCT09MIHN1Y2Nlc3M7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgRl9QT0lOVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJmxwT3ZlcmxhcHBlZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBDb25uZWN0TmFtZWRQaXBlKGhOYW1lZFBpcGUsIGxwT3ZlcmxhcHBlZCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9DcmVhdGVGaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBMUENUU1RSIGxwRmlsZU5hbWU7Ci0gICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzOwotICAgIERXT1JEIGR3U2hhcmVNb2RlOwotICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlczsKLSAgICBEV09SRCBkd0NyZWF0aW9uRGlzcG9zaXRpb247Ci0gICAgRFdPUkQgZHdGbGFnc0FuZEF0dHJpYnV0ZXM7Ci0gICAgSEFORExFIGhUZW1wbGF0ZUZpbGU7Ci0gICAgSEFORExFIGhhbmRsZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyIgRl9EV09SRCBGX0RXT1JEIEZfUE9JTlRFUgotICAgICAgICAgICAgICAgICAgICAgICAgICBGX0RXT1JEIEZfRFdPUkQgRl9IQU5ETEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscEZpbGVOYW1lLCAmZHdEZXNpcmVkQWNjZXNzLCAmZHdTaGFyZU1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscFNlY3VyaXR5QXR0cmlidXRlcywgJmR3Q3JlYXRpb25EaXNwb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmR3RmxhZ3NBbmRBdHRyaWJ1dGVzLCAmaFRlbXBsYXRlRmlsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGhhbmRsZSA9IENyZWF0ZUZpbGUobHBGaWxlTmFtZSwgZHdEZXNpcmVkQWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgZHdTaGFyZU1vZGUsIGxwU2VjdXJpdHlBdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgZHdGbGFnc0FuZEF0dHJpYnV0ZXMsIGhUZW1wbGF0ZUZpbGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX0NyZWF0ZU5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgTFBDVFNUUiBscE5hbWU7Ci0gICAgRFdPUkQgZHdPcGVuTW9kZTsKLSAgICBEV09SRCBkd1BpcGVNb2RlOwotICAgIERXT1JEIG5NYXhJbnN0YW5jZXM7Ci0gICAgRFdPUkQgbk91dEJ1ZmZlclNpemU7Ci0gICAgRFdPUkQgbkluQnVmZmVyU2l6ZTsKLSAgICBEV09SRCBuRGVmYXVsdFRpbWVPdXQ7Ci0gICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzOwotICAgIEhBTkRMRSBoYW5kbGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JECi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JEIEZfUE9JTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwTmFtZSwgJmR3T3Blbk1vZGUsICZkd1BpcGVNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbk1heEluc3RhbmNlcywgJm5PdXRCdWZmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbkluQnVmZmVyU2l6ZSwgJm5EZWZhdWx0VGltZU91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwU2VjdXJpdHlBdHRyaWJ1dGVzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaGFuZGxlID0gQ3JlYXRlTmFtZWRQaXBlKGxwTmFtZSwgZHdPcGVuTW9kZSwgZHdQaXBlTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbk1heEluc3RhbmNlcywgbk91dEJ1ZmZlclNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5JbkJ1ZmZlclNpemUsIG5EZWZhdWx0VGltZU91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBTZWN1cml0eUF0dHJpYnV0ZXMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX0V4aXRQcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBVSU5UIHVFeGl0Q29kZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSSIsICZ1RXhpdENvZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICNpZiBkZWZpbmVkKFB5X0RFQlVHKQotICAgICAgICBTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SU3xTRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHxTRU1fTk9HUEZBVUxURVJST1JCT1h8U0VNX05PT1BFTkZJTEVFUlJPUkJPWCk7Ci0gICAgICAgIF9DcnRTZXRSZXBvcnRNb2RlKF9DUlRfQVNTRVJULCBfQ1JUREJHX01PREVfREVCVUcpOwotICAgICNlbmRpZgotCi0KLSAgICBFeGl0UHJvY2Vzcyh1RXhpdENvZGUpOwotCi0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9HZXRMYXN0RXJyb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfRFdPUkQsIEdldExhc3RFcnJvcigpKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX09wZW5Qcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3M7Ci0gICAgQk9PTCBiSW5oZXJpdEhhbmRsZTsKLSAgICBEV09SRCBkd1Byb2Nlc3NJZDsKLSAgICBIQU5ETEUgaGFuZGxlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfRFdPUkQgImkiIEZfRFdPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkd0Rlc2lyZWRBY2Nlc3MsICZiSW5oZXJpdEhhbmRsZSwgJmR3UHJvY2Vzc0lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBoYW5kbGUgPSBPcGVuUHJvY2Vzcyhkd0Rlc2lyZWRBY2Nlc3MsIGJJbmhlcml0SGFuZGxlLCBkd1Byb2Nlc3NJZCk7Ci0gICAgaWYgKGhhbmRsZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBIQU5ETEUgaE5hbWVkUGlwZTsKLSAgICBQeU9iamVjdCAqb0FyZ3NbM107Ci0gICAgRFdPUkQgZHdBcmdzWzNdLCAqcEFyZ3NbM10gPSB7TlVMTCwgTlVMTCwgTlVMTH07Ci0gICAgaW50IGk7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIk9PTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZoTmFtZWRQaXBlLCAmb0FyZ3NbMF0sICZvQXJnc1sxXSwgJm9BcmdzWzJdKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeUVycl9DbGVhcigpOwotCi0gICAgZm9yIChpID0gMCA7IGkgPCAzIDsgaSsrKSB7Ci0gICAgICAgIGlmIChvQXJnc1tpXSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBkd0FyZ3NbaV0gPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKG9BcmdzW2ldKTsKLSAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgcEFyZ3NbaV0gPSAmZHdBcmdzW2ldOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShoTmFtZWRQaXBlLCBwQXJnc1swXSwgcEFyZ3NbMV0sIHBBcmdzWzJdKSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9XYWl0TmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBMUENUU1RSIGxwTmFtZWRQaXBlTmFtZTsKLSAgICBEV09SRCBuVGltZU91dDsKLSAgICBCT09MIHN1Y2Nlc3M7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQsICZscE5hbWVkUGlwZU5hbWUsICZuVGltZU91dCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBXYWl0TmFtZWRQaXBlKGxwTmFtZWRQaXBlTmFtZSwgblRpbWVPdXQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgd2luMzJfbWV0aG9kc1tdID0gewotICAgIFdJTjMyX0ZVTkNUSU9OKENsb3NlSGFuZGxlKSwKLSAgICBXSU4zMl9GVU5DVElPTihHZXRMYXN0RXJyb3IpLAotICAgIFdJTjMyX0ZVTkNUSU9OKE9wZW5Qcm9jZXNzKSwKLSAgICBXSU4zMl9GVU5DVElPTihFeGl0UHJvY2VzcyksCi0gICAgV0lOMzJfRlVOQ1RJT04oQ29ubmVjdE5hbWVkUGlwZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oQ3JlYXRlRmlsZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oQ3JlYXRlTmFtZWRQaXBlKSwKLSAgICBXSU4zMl9GVU5DVElPTihTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oV2FpdE5hbWVkUGlwZSksCi0gICAge05VTEx9Ci19OwotCi0KLVB5VHlwZU9iamVjdCBXaW4zMlR5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi19OwotCi0KLVB5T2JqZWN0ICoKLWNyZWF0ZV93aW4zMl9uYW1lc3BhY2Uodm9pZCkKLXsKLSAgICBXaW4zMlR5cGUudHBfbmFtZSA9ICJfbXVsdGlwcm9jZXNzaW5nLndpbjMyIjsKLSAgICBXaW4zMlR5cGUudHBfbWV0aG9kcyA9IHdpbjMyX21ldGhvZHM7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmV2luMzJUeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRigmV2luMzJUeXBlKTsKLQotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX0FMUkVBRFlfRVhJU1RTKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9OT19EQVRBKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9QSVBFX0JVU1kpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX1BJUEVfQ09OTkVDVEVEKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9TRU1fVElNRU9VVCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgR0VORVJJQ19SRUFEKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBHRU5FUklDX1dSSVRFKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBJTkZJTklURSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgTk1QV0FJVF9XQUlUX0ZPUkVWRVIpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIE9QRU5fRVhJU1RJTkcpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfQUNDRVNTX0RVUExFWCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9BQ0NFU1NfSU5CT1VORCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9SRUFETU9ERV9NRVNTQUdFKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBQSVBFX1RZUEVfTUVTU0FHRSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9VTkxJTUlURURfSU5TVEFOQ0VTKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBQSVBFX1dBSVQpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBST0NFU1NfQUxMX0FDQ0VTUyk7Ci0KLSAgICBXSU4zMl9DT05TVEFOVCgiaSIsIE5VTEwpOwotCi0gICAgcmV0dXJuIChQeU9iamVjdCopJldpbjMyVHlwZTsKLX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3BpY2tsZS5jIGIvTW9kdWxlcy9fcGlja2xlLmMKaW5kZXggZmM1Zjg3MS4uNWJhNTU5OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcGlja2xlLmMKKysrIGIvTW9kdWxlcy9fcGlja2xlLmMKQEAgLTMxOSw2ICszMTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RzIHRvIHN1cHBvcnQgc2VsZi1yZWZlcmVudGlhbCBvYmplY3RzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsaW5nLiAqLwogICAgIFB5T2JqZWN0ICpwZXJzX2Z1bmM7ICAgICAgICAvKiBwZXJzaXN0ZW50X2lkKCkgbWV0aG9kLCBjYW4gYmUgTlVMTCAqLworICAgIFB5T2JqZWN0ICpkaXNwYXRjaF90YWJsZTsgICAvKiBwcml2YXRlIGRpc3BhdGNoX3RhYmxlLCBjYW4gYmUgTlVMTCAqLwogICAgIFB5T2JqZWN0ICphcmc7CiAKICAgICBQeU9iamVjdCAqd3JpdGU7ICAgICAgICAgICAgLyogd3JpdGUoKSBtZXRob2Qgb2YgdGhlIG91dHB1dCBzdHJlYW0uICovCkBAIC02MDUsNyArNjA2LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBIZWxwZXJzIGZvciBjcmVhdGluZyB0aGUgYXJndW1lbnQgdHVwbGUgcGFzc2VkIHRvIGZ1bmN0aW9ucy4gVGhpcyBoYXMgdGhlCi0gICBwZXJmb3JtYW5jZSBhZHZhbnRhZ2Ugb2YgY2FsbGluZyBQeVR1cGxlX05ldygpIG9ubHkgb25jZS4gCisgICBwZXJmb3JtYW5jZSBhZHZhbnRhZ2Ugb2YgY2FsbGluZyBQeVR1cGxlX05ldygpIG9ubHkgb25jZS4KIAogICAgWFhYKGF2YXNzYWxvdHRpKTogSW5saW5lIGRpcmVjdGx5IGluIF9QaWNrbGVyX0Zhc3RDYWxsKCkgYW5kCiAgICBfVW5waWNrbGVyX0Zhc3RDYWxsKCkuICovCkBAIC03NjQsNiArNzY1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBOVUxMOworICAgIHNlbGYtPmRpc3BhdGNoX3RhYmxlID0gTlVMTDsKICAgICBzZWxmLT5hcmcgPSBOVUxMOwogICAgIHNlbGYtPndyaXRlID0gTlVMTDsKICAgICBzZWxmLT5wcm90byA9IDA7CkBAIC04MTMsNyArODE1LDcgQEAKICAgICBmaXhfaW1wb3J0cyA9IFB5T2JqZWN0X0lzVHJ1ZShmaXhfaW1wb3J0c19vYmopOwogICAgIGlmIChmaXhfaW1wb3J0cyA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIAorCiAgICAgc2VsZi0+cHJvdG8gPSBwcm90bzsKICAgICBzZWxmLT5iaW4gPSBwcm90byA+IDA7CiAgICAgc2VsZi0+Zml4X2ltcG9ydHMgPSBmaXhfaW1wb3J0cyAmJiBwcm90byA8IDM7CkBAIC04MjYsOCArODI4LDkgQEAKIHN0YXRpYyBpbnQKIF9QaWNrbGVyX1NldE91dHB1dFN0cmVhbShQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSkKIHsKKyAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CiAgICAgYXNzZXJ0KGZpbGUgIT0gTlVMTCk7Ci0gICAgc2VsZi0+d3JpdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJ3cml0ZSIpOworICAgIHNlbGYtPndyaXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF93cml0ZSk7CiAgICAgaWYgKHNlbGYtPndyaXRlID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKQEAgLTkwOSw3ICs5MTIsNyBAQAogICAgIFB5X3NzaXplX3QgcmVhZF9zaXplLCBwcmVmZXRjaGVkX3NpemUgPSAwOwogCiAgICAgYXNzZXJ0KHNlbGYtPnJlYWQgIT0gTlVMTCk7Ci0gICAgCisKICAgICBpZiAoX1VucGlja2xlcl9Ta2lwQ29uc3VtZWQoc2VsZikgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTEwMzcsNyArMTA0MCw3IEBACiAgICAgICAgIHNlbGYtPm5leHRfcmVhZF9pZHggPSBudW1fcmVhZDsKICAgICAgICAgcmV0dXJuIF9VbnBpY2tsZXJfQ29weUxpbmUoc2VsZiwgc2VsZi0+aW5wdXRfYnVmZmVyLCBudW1fcmVhZCwgcmVzdWx0KTsKICAgICB9Ci0gCisKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSwgd2UndmUgcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBpbnB1dCBzdHJpbmcuIFJldHVybiB0aGUKICAgICAgICByZW1haW5pbmcgc3RyaW5nIGFuZCBsZXQgdGhlIGNhbGxlciBmaWd1cmUgaXQgb3V0LiAqLwogICAgICpyZXN1bHQgPSBzZWxmLT5pbnB1dF9idWZmZXIgKyBzZWxmLT5uZXh0X3JlYWRfaWR4OwpAQCAtMTE3MywxNSArMTE3NiwxOSBAQAogc3RhdGljIGludAogX1VucGlja2xlcl9TZXRJbnB1dFN0cmVhbShVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlKQogewotICAgIHNlbGYtPnBlZWsgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJwZWVrIik7CisgICAgX1B5X0lERU5USUZJRVIocGVlayk7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CisgICAgX1B5X0lERU5USUZJRVIocmVhZGxpbmUpOworCisgICAgc2VsZi0+cGVlayA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfcGVlayk7CiAgICAgaWYgKHNlbGYtPnBlZWsgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHNlbGYtPnJlYWQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJyZWFkIik7Ci0gICAgc2VsZi0+cmVhZGxpbmUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJyZWFkbGluZSIpOworICAgIHNlbGYtPnJlYWQgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZpbGUsICZQeUlkX3JlYWQpOworICAgIHNlbGYtPnJlYWRsaW5lID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF9yZWFkbGluZSk7CiAgICAgaWYgKHNlbGYtPnJlYWRsaW5lID09IE5VTEwgfHwgc2VsZi0+cmVhZCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCkBAIC0xNTQzLDcgKzE1NTAsMTAgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gc2F2ZV9pbnQoc2VsZiwgdmFsKTsKKyNpZiBTSVpFT0ZfTE9ORyA+IDQKKyAgICAgICAgaWYgKHZhbCA8PSAweDdmZmZmZmZmTCAmJiB2YWwgPj0gLTB4ODAwMDAwMDBMKQorI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gc2F2ZV9pbnQoc2VsZiwgdmFsKTsKIAogICAgIGlmIChzZWxmLT5wcm90byA+PSAyKSB7CiAgICAgICAgIC8qIExpbmVhci10aW1lIHBpY2tsaW5nLiAqLwpAQCAtMTU5OCw3ICsxNjA4LDcgQEAKICAgICAgICAgICogYml0cy4KICAgICAgICAgICovCiAgICAgICAgIGlmIChzaWduIDwgMCAmJgotICAgICAgICAgICAgbmJ5dGVzID4gMSAmJiAKKyAgICAgICAgICAgIG5ieXRlcyA+IDEgJiYKICAgICAgICAgICAgIHBkYXRhW25ieXRlcyAtIDFdID09IDB4ZmYgJiYKICAgICAgICAgICAgIChwZGF0YVtuYnl0ZXMgLSAyXSAmIDB4ODApICE9IDApIHsKICAgICAgICAgICAgIG5ieXRlcy0tOwpAQCAtMTY2NCw3ICsxNjc0LDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgaWYgKF9QaWNrbGVyX1dyaXRlKHNlbGYsIHBkYXRhLCA5KSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICB9IAorICAgfQogICAgIGVsc2UgewogICAgICAgICBpbnQgcmVzdWx0ID0gLTE7CiAgICAgICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CkBAIC0xNzk4LDkwICsxODA4LDY1IEBACiAvKiBBIGNvcHkgb2YgUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoKSB0aGF0IGFsc28gdHJhbnNsYXRlcwogICAgYmFja3NsYXNoIGFuZCBuZXdsaW5lIGNoYXJhY3RlcnMgdG8gXHVYWFhYIGVzY2FwZXMuICovCiBzdGF0aWMgUHlPYmplY3QgKgotcmF3X3VuaWNvZGVfZXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKK3Jhd191bmljb2RlX2VzY2FwZShQeU9iamVjdCAqb2JqKQogewogICAgIFB5T2JqZWN0ICpyZXByLCAqcmVzdWx0OwogICAgIGNoYXIgKnA7Ci0gICAgY2hhciAqcTsKKyAgICBQeV9zc2l6ZV90IGksIHNpemUsIGV4cGFuZHNpemU7CisgICAgdm9pZCAqZGF0YTsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGNvbnN0IFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDEwOwotI2Vsc2UKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSA2OwotI2VuZGlmCi0gICAgCisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKG9iaik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG9iaik7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpCisgICAgICAgIGV4cGFuZHNpemUgPSAxMDsKKyAgICBlbHNlCisgICAgICAgIGV4cGFuZHNpemUgPSA2OworCiAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIAogICAgIHJlcHIgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogc2l6ZSk7CiAgICAgaWYgKHJlcHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPT0gMCkKICAgICAgICAgZ290byBkb25lOwogCi0gICAgcCA9IHEgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVwcik7Ci0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpzKys7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCisgICAgcCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXByKTsKKyAgICBmb3IgKGk9MDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIC8qIE1hcCAzMi1iaXQgY2hhcmFjdGVycyB0byAnXFV4eHh4eHh4eCcgKi8KICAgICAgICAgaWYgKGNoID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0jZWxzZQotICAgICAgICAgICAgLyogTWFwIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgICAgICBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDwgMHhEQzAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDI7Ci0gICAgICAgICAgICAgICAgUHlfVUNTNCB1Y3M7Ci0KLSAgICAgICAgICAgICAgICBjaDIgPSAqcysrOwotICAgICAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgICAgICBpZiAoY2gyID49IDB4REMwMCAmJiBjaDIgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkgKyAweDAwMDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBGYWxsIHRocm91Z2g6IGlzb2xhdGVkIHN1cnJvZ2F0ZXMgYXJlIGNvcGllZCBhcy1pcyAqLwotICAgICAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgICAgICBzaXplKys7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgIGlmIChjaCA+PSAyNTYgfHwgY2ggPT0gJ1xcJyB8fCBjaCA9PSAnXG4nKSB7CisgICAgICAgIGVsc2UgaWYgKGNoID49IDI1NiB8fCBjaCA9PSAnXFwnIHx8IGNoID09ICdcbicpIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMTVdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KICAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KICAgICAgICAgZWxzZQogICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9Ci0gICAgc2l6ZSA9IHAgLSBxOworICAgIHNpemUgPSBwIC0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlcHIpOwogCi0gIGRvbmU6Citkb25lOgogICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlcHIpLCBzaXplKTsKICAgICBQeV9ERUNSRUYocmVwcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE4OTYsOSArMTg4MSw3IEBACiAgICAgaWYgKHNlbGYtPmJpbikgewogICAgICAgICBjaGFyIHBkYXRhWzVdOwogCi0gICAgICAgIGVuY29kZWQgPSBQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG9iaiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlcGFzcyIpOworICAgICAgICBlbmNvZGVkID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhvYmosICJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIik7CiAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0xOTI0LDggKzE5MDcsNyBAQAogICAgIGVsc2UgewogICAgICAgICBjb25zdCBjaGFyIHVuaWNvZGVfb3AgPSBVTklDT0RFOwogCi0gICAgICAgIGVuY29kZWQgPSByYXdfdW5pY29kZV9lc2NhcGUoUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSk7CisgICAgICAgIGVuY29kZWQgPSByYXdfdW5pY29kZV9lc2NhcGUob2JqKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTI1NDQsNyArMjUyNiw5IEBACiAgICAgICAgICAgICBzdGF0dXMgPSBiYXRjaF9kaWN0X2V4YWN0KHNlbGYsIG9iaik7CiAgICAgICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGl0ZW1zID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvYmosICJpdGVtcyIsICIoKSIpOworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOworCisgICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgIigpIik7CiAgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlbXMpOwpAQCAtMjgyOCw2ICsyODEyLDMwIEBACiB9CiAKIHN0YXRpYyBpbnQKK3NhdmVfZWxsaXBzaXMoUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKK3sKKyAgICBQeU9iamVjdCAqc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIkVsbGlwc2lzIik7CisgICAgaW50IHJlczsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXMgPSBzYXZlX2dsb2JhbChzZWxmLCBQeV9FbGxpcHNpcywgc3RyKTsKKyAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgaW50CitzYXZlX25vdGltcGxlbWVudGVkKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCit7CisgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJOb3RJbXBsZW1lbnRlZCIpOworICAgIGludCByZXM7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gc2F2ZV9nbG9iYWwoc2VsZiwgUHlfTm90SW1wbGVtZW50ZWQsIHN0cik7CisgICAgUHlfREVDUkVGKHN0cik7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIGludAogc2F2ZV9wZXJzKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpmdW5jKQogewogICAgIFB5T2JqZWN0ICpwaWQgPSBOVUxMOwpAQCAtMjg4MSw2ICsyODg5LDI4IEBACiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jbGFzcyhQeU9iamVjdCAqb2JqKQoreworICAgIFB5T2JqZWN0ICpjbHM7CisgICAgc3RhdGljIFB5T2JqZWN0ICpzdHJfY2xhc3M7CisKKyAgICBpZiAoc3RyX2NsYXNzID09IE5VTEwpIHsKKyAgICAgICAgc3RyX2NsYXNzID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fY2xhc3NfXyIpOworICAgICAgICBpZiAoc3RyX2NsYXNzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY2xzID0gUHlPYmplY3RfR2V0QXR0cihvYmosIHN0cl9jbGFzcyk7CisgICAgaWYgKGNscyA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIGNscyA9IChQeU9iamVjdCAqKSBQeV9UWVBFKG9iaik7CisgICAgICAgICAgICBQeV9JTkNSRUYoY2xzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY2xzOworfQorCiAvKiBXZSdyZSBzYXZpbmcgb2JqLCBhbmQgYXJncyBpcyB0aGUgMi10aHJ1LTUgdHVwbGUgcmV0dXJuZWQgYnkgdGhlCiAgKiBhcHByb3ByaWF0ZSBfX3JlZHVjZV9fIG1ldGhvZCBmb3Igb2JqLgogICovCkBAIC0yOTQ2LDE3ICsyOTc2LDE4IEBACiAgICAgLyogUHJvdG9jb2wgMiBzcGVjaWFsIGNhc2U6IGlmIGNhbGxhYmxlJ3MgbmFtZSBpcyBfX25ld29ial9fLCB1c2UKICAgICAgICBORVdPQkouICovCiAgICAgaWYgKHVzZV9uZXdvYmopIHsKLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpuZXdvYmpfc3RyID0gTlVMTDsKLSAgICAgICAgUHlPYmplY3QgKm5hbWVfc3RyOworICAgICAgICBzdGF0aWMgUHlPYmplY3QgKm5ld29ial9zdHIgPSBOVUxMLCAqbmFtZV9zdHIgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqbmFtZTsKIAogICAgICAgICBpZiAobmV3b2JqX3N0ciA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXdvYmpfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fbmV3b2JqX18iKTsKLSAgICAgICAgICAgIGlmIChuZXdvYmpfc3RyID09IE5VTEwpCisgICAgICAgICAgICBuYW1lX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25hbWVfXyIpOworICAgICAgICAgICAgaWYgKG5ld29ial9zdHIgPT0gTlVMTCB8fCBuYW1lX3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIG5hbWVfc3RyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjYWxsYWJsZSwgIl9fbmFtZV9fIik7Ci0gICAgICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKSB7CisgICAgICAgIG5hbWUgPSBQeU9iamVjdF9HZXRBdHRyKGNhbGxhYmxlLCBuYW1lX3N0cik7CisgICAgICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgZWxzZQpAQCAtMjk2NCw5ICsyOTk1LDkgQEAKICAgICAgICAgICAgIHVzZV9uZXdvYmogPSAwOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdXNlX25ld29iaiA9IFB5VW5pY29kZV9DaGVjayhuYW1lX3N0cikgJiYgCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0NvbXBhcmUobmFtZV9zdHIsIG5ld29ial9zdHIpID09IDA7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmFtZV9zdHIpOworICAgICAgICAgICAgdXNlX25ld29iaiA9IFB5VW5pY29kZV9DaGVjayhuYW1lKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlKG5hbWUsIG5ld29ial9zdHIpID09IDA7CisgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHVzZV9uZXdvYmopIHsKQEAgLTI5ODIsMjAgKzMwMTMsMTQgQEAKICAgICAgICAgfQogCiAgICAgICAgIGNscyA9IFB5VHVwbGVfR0VUX0lURU0oYXJndHVwLCAwKTsKLSAgICAgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKGNscywgIl9fbmV3X18iKSkgeworICAgICAgICBpZiAoIVB5VHlwZV9DaGVjayhjbHMpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUGlja2xpbmdFcnJvciwgImFyZ3NbMF0gZnJvbSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmV3b2JqX18gYXJncyBoYXMgbm8gX19uZXdfXyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX25ld29ial9fIGFyZ3MgaXMgbm90IGEgdHlwZSIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG9iaiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBvYmpfY2xhc3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fY2xhc3NfXyIpOwotICAgICAgICAgICAgaWYgKG9ial9jbGFzcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQotICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgb2JqX2NsYXNzID0gZ2V0X2NsYXNzKG9iaik7CiAgICAgICAgICAgICBwID0gb2JqX2NsYXNzICE9IGNsczsgICAgLyogdHJ1ZSBpZmYgYSBwcm9ibGVtICovCiAgICAgICAgICAgICBQeV9ERUNSRUYob2JqX2NsYXNzKTsKICAgICAgICAgICAgIGlmIChwKSB7CkBAIC0zMDY5LDcgKzMwOTQsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoc3RhdGUpIHsKLSAgICAgICAgaWYgKHNhdmUoc2VsZiwgc3RhdGUsIDApIDwgMCB8fCAKKyAgICAgICAgaWYgKHNhdmUoc2VsZiwgc3RhdGUsIDApIDwgMCB8fAogICAgICAgICAgICAgX1BpY2tsZXJfV3JpdGUoc2VsZiwgJmJ1aWxkX29wLCAxKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzExMyw2ICszMTM4LDE0IEBACiAgICAgICAgIHN0YXR1cyA9IHNhdmVfbm9uZShzZWxmLCBvYmopOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQorICAgIGVsc2UgaWYgKG9iaiA9PSBQeV9FbGxpcHNpcykgeworICAgICAgICBzdGF0dXMgPSBzYXZlX2VsbGlwc2lzKHNlbGYsIG9iaik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgICAgZWxzZSBpZiAob2JqID09IFB5X05vdEltcGxlbWVudGVkKSB7CisgICAgICAgIHN0YXR1cyA9IHNhdmVfbm90aW1wbGVtZW50ZWQoc2VsZiwgb2JqKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KICAgICBlbHNlIGlmIChvYmogPT0gUHlfRmFsc2UgfHwgb2JqID09IFB5X1RydWUpIHsKICAgICAgICAgc3RhdHVzID0gc2F2ZV9ib29sKHNlbGYsIG9iaik7CiAgICAgICAgIGdvdG8gZG9uZTsKQEAgLTMxNzcsMTcgKzMyMTAsMjQgQEAKICAgICAvKiBYWFg6IFRoaXMgcGFydCBuZWVkcyBzb21lIHVuaXQgdGVzdHMuICovCiAKICAgICAvKiBHZXQgYSByZWR1Y3Rpb24gY2FsbGFibGUsIGFuZCBjYWxsIGl0LiAgVGhpcyBtYXkgY29tZSBmcm9tCi0gICAgICogY29weXJlZy5kaXNwYXRjaF90YWJsZSwgdGhlIG9iamVjdCdzIF9fcmVkdWNlX2V4X18gbWV0aG9kLAotICAgICAqIG9yIHRoZSBvYmplY3QncyBfX3JlZHVjZV9fIG1ldGhvZC4KKyAgICAgKiBzZWxmLmRpc3BhdGNoX3RhYmxlLCBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLCB0aGUgb2JqZWN0J3MKKyAgICAgKiBfX3JlZHVjZV9leF9fIG1ldGhvZCwgb3IgdGhlIG9iamVjdCdzIF9fcmVkdWNlX18gbWV0aG9kLgogICAgICAqLwotICAgIHJlZHVjZV9mdW5jID0gUHlEaWN0X0dldEl0ZW0oZGlzcGF0Y2hfdGFibGUsIChQeU9iamVjdCAqKXR5cGUpOworICAgIGlmIChzZWxmLT5kaXNwYXRjaF90YWJsZSA9PSBOVUxMKSB7CisgICAgICAgIHJlZHVjZV9mdW5jID0gUHlEaWN0X0dldEl0ZW0oZGlzcGF0Y2hfdGFibGUsIChQeU9iamVjdCAqKXR5cGUpOworICAgICAgICAvKiBQeURpY3RfR2V0SXRlbSgpIHVubGlrZSBQeU9iamVjdF9HZXRJdGVtKCkgYW5kCisgICAgICAgICAgIFB5T2JqZWN0X0dldEF0dHIoKSByZXR1cm5zIGEgYm9ycm93ZWQgcmVmICovCisgICAgICAgIFB5X1hJTkNSRUYocmVkdWNlX2Z1bmMpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlZHVjZV9mdW5jID0gUHlPYmplY3RfR2V0SXRlbShzZWxmLT5kaXNwYXRjaF90YWJsZSwgKFB5T2JqZWN0ICopdHlwZSk7CisgICAgICAgIGlmIChyZWR1Y2VfZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQogICAgIGlmIChyZWR1Y2VfZnVuYyAhPSBOVUxMKSB7Ci0gICAgICAgIC8qIEhlcmUsIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHJlZHVjZV9mdW5jIG9iamVjdCByZXR1cm5lZCBieQotICAgICAgICAgICBQeURpY3RfR2V0SXRlbSBuZWVkcyB0byBiZSBpbmNyZWFzZWQgdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZSBvbmUKLSAgICAgICAgICAgcmV0dXJuZWQgYnkgUHlPYmplY3RfR2V0QXR0ci4gVGhpcyBpcyBhbGxvdyB1cyB0byBibGluZGx5IERFQ1JFRgotICAgICAgICAgICByZWR1Y2VfZnVuYyBhdCB0aGUgZW5kIG9mIHRoZSBzYXZlKCkgcm91dGluZS4KLSAgICAgICAgKi8KLSAgICAgICAgUHlfSU5DUkVGKHJlZHVjZV9mdW5jKTsKICAgICAgICAgUHlfSU5DUkVGKG9iaik7CiAgICAgICAgIHJlZHVjZV92YWx1ZSA9IF9QaWNrbGVyX0Zhc3RDYWxsKHNlbGYsIHJlZHVjZV9mdW5jLCBvYmopOwogICAgIH0KQEAgLTMzMjMsNyArMzM2Myw3IEBACiAgICAgICAgRGV2ZWxvcGVycyBvZnRlbiBmb3JnZXQgdG8gY2FsbCBfX2luaXRfXygpIGluIHRoZWlyIHN1YmNsYXNzZXMsIHdoaWNoCiAgICAgICAgd291bGQgdHJpZ2dlciBhIHNlZ2ZhdWx0IHdpdGhvdXQgdGhpcyBjaGVjay4gKi8KICAgICBpZiAoc2VsZi0+d3JpdGUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUGlja2xpbmdFcnJvciwgCisgICAgICAgIFB5RXJyX0Zvcm1hdChQaWNrbGluZ0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgIlBpY2tsZXIuX19pbml0X18oKSB3YXMgbm90IGNhbGxlZCBieSAlcy5fX2luaXRfXygpIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzNjAsNiArMzQwMCw3IEBACiAgICAgUHlfWERFQ1JFRihzZWxmLT5vdXRwdXRfYnVmZmVyKTsKICAgICBQeV9YREVDUkVGKHNlbGYtPndyaXRlKTsKICAgICBQeV9YREVDUkVGKHNlbGYtPnBlcnNfZnVuYyk7CisgICAgUHlfWERFQ1JFRihzZWxmLT5kaXNwYXRjaF90YWJsZSk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5hcmcpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+ZmFzdF9tZW1vKTsKIApAQCAtMzM3Myw2ICszNDE0LDcgQEAKIHsKICAgICBQeV9WSVNJVChzZWxmLT53cml0ZSk7CiAgICAgUHlfVklTSVQoc2VsZi0+cGVyc19mdW5jKTsKKyAgICBQeV9WSVNJVChzZWxmLT5kaXNwYXRjaF90YWJsZSk7CiAgICAgUHlfVklTSVQoc2VsZi0+YXJnKTsKICAgICBQeV9WSVNJVChzZWxmLT5mYXN0X21lbW8pOwogICAgIHJldHVybiAwOwpAQCAtMzM4NCw2ICszNDI2LDcgQEAKICAgICBQeV9DTEVBUihzZWxmLT5vdXRwdXRfYnVmZmVyKTsKICAgICBQeV9DTEVBUihzZWxmLT53cml0ZSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+cGVyc19mdW5jKTsKKyAgICBQeV9DTEVBUihzZWxmLT5kaXNwYXRjaF90YWJsZSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+YXJnKTsKICAgICBQeV9DTEVBUihzZWxmLT5mYXN0X21lbW8pOwogCkBAIC0zNDI3LDYgKzM0NzAsOCBAQAogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIFB5T2JqZWN0ICpwcm90b19vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpmaXhfaW1wb3J0cyA9IFB5X1RydWU7CisgICAgX1B5X0lERU5USUZJRVIocGVyc2lzdGVudF9pZCk7CisgICAgX1B5X0lERU5USUZJRVIoZGlzcGF0Y2hfdGFibGUpOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T086UGlja2xlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmZmlsZSwgJnByb3RvX29iaiwgJmZpeF9pbXBvcnRzKSkKQEAgLTM0NjIsMTIgKzM1MDcsMTkgQEAKICAgICBzZWxmLT5mYXN0X25lc3RpbmcgPSAwOwogICAgIHNlbGYtPmZhc3RfbWVtbyA9IE5VTEw7CiAgICAgc2VsZi0+cGVyc19mdW5jID0gTlVMTDsKLSAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZygoUHlPYmplY3QgKilzZWxmLCAicGVyc2lzdGVudF9pZCIpKSB7Ci0gICAgICAgIHNlbGYtPnBlcnNfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyc2lzdGVudF9pZCIpOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3BlcnNpc3RlbnRfaWQpKSB7CisgICAgICAgIHNlbGYtPnBlcnNfZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9wZXJzaXN0ZW50X2lkKTsKICAgICAgICAgaWYgKHNlbGYtPnBlcnNfZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBzZWxmLT5kaXNwYXRjaF90YWJsZSA9IE5VTEw7CisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfZGlzcGF0Y2hfdGFibGUpKSB7CisgICAgICAgIHNlbGYtPmRpc3BhdGNoX3RhYmxlID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfZGlzcGF0Y2hfdGFibGUpOworICAgICAgICBpZiAoc2VsZi0+ZGlzcGF0Y2hfdGFibGUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM3NDksNiArMzgwMSw3IEBACiBzdGF0aWMgUHlNZW1iZXJEZWYgUGlja2xlcl9tZW1iZXJzW10gPSB7CiAgICAgeyJiaW4iLCBUX0lOVCwgb2Zmc2V0b2YoUGlja2xlck9iamVjdCwgYmluKX0sCiAgICAgeyJmYXN0IiwgVF9JTlQsIG9mZnNldG9mKFBpY2tsZXJPYmplY3QsIGZhc3QpfSwKKyAgICB7ImRpc3BhdGNoX3RhYmxlIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKFBpY2tsZXJPYmplY3QsIGRpc3BhdGNoX3RhYmxlKX0sCiAgICAge05VTEx9CiB9OwogCkBAIC0zODAzLDcgKzM4NTYsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXNfZ2MqLwogfTsKIAotLyogVGVtcG9yYXJ5IGhlbHBlciBmb3IgY2FsbGluZyBzZWxmLmZpbmRfY2xhc3MoKS4gCisvKiBUZW1wb3JhcnkgaGVscGVyIGZvciBjYWxsaW5nIHNlbGYuZmluZF9jbGFzcygpLgogCiAgICBYWFg6IEl0IHdvdWxkIGJlIG5pY2UgdG8gYWJsZSB0byBhdm9pZCBQeXRob24gZnVuY3Rpb24gY2FsbCBvdmVyaGVhZCwgYnkKICAgIHVzaW5nIGRpcmVjdGx5IHRoZSBDIHZlcnNpb24gb2YgZmluZF9jbGFzcygpLCB3aGVuIGZpbmRfY2xhc3MoKSBpcyBub3QKQEAgLTM4MTMsOCArMzg2NiwxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpbmRfY2xhc3MoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbW9kdWxlX25hbWUsIFB5T2JqZWN0ICpnbG9iYWxfbmFtZSkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiZmluZF9jbGFzcyIsICJPTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUsIGdsb2JhbF9uYW1lKTsKKyAgICBfUHlfSURFTlRJRklFUihmaW5kX2NsYXNzKTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2ZpbmRfY2xhc3MsICJPTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUsIGdsb2JhbF9uYW1lKTsKIH0KIAogc3RhdGljIFB5X3NzaXplX3QKQEAgLTM4NTYsNyArMzkxMSw3IEBACiAgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKIAogICAgIGVycm5vID0gMDsKLSAgICAvKiBYWFg6IFNob3VsZCB0aGUgYmFzZSBhcmd1bWVudCBvZiBzdHJ0b2woKSBiZSBleHBsaWNpdGx5IHNldCB0byAxMD8gCisgICAgLyogWFhYOiBTaG91bGQgdGhlIGJhc2UgYXJndW1lbnQgb2Ygc3RydG9sKCkgYmUgZXhwbGljaXRseSBzZXQgdG8gMTA/CiAgICAgICAgWFhYKGF2YXNzYWxvdHRpKTogU2hvdWxkIHRoaXMgdXNlcyBQeU9TX3N0cnRvbCgpPyAqLwogICAgIHggPSBzdHJ0b2wocywgJmVuZHB0ciwgMCk7CiAKQEAgLTQyMjEsNyArNDI3Niw3IEBACiAKICAgICB4ID0gY2FsY19iaW5pbnQocywgNCk7CiAgICAgaWYgKHggPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhVbnBpY2tsaW5nRXJyb3IsIAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIkJJTlNUUklORyBwaWNrbGUgaGFzIG5lZ2F0aXZlIGJ5dGUgY291bnQiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTQ0MTgsMTYgKzQ0NzMsMTkgQEAKIGluc3RhbnRpYXRlKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0aW5pdGFyZ3NfXyk7CiAgICAgLyogQ2FsbGVyIG11c3QgYXNzdXJlIGFyZ3MgYXJlIGEgdHVwbGUuICBOb3JtYWxseSwgYXJncyBjb21lIGZyb20KICAgICAgICBQZGF0YV9wb3B0dXBsZSB3aGljaCBwYWNrcyBvYmplY3RzIGZyb20gdGhlIHRvcCBvZiB0aGUgc3RhY2sKICAgICAgICBpbnRvIGEgbmV3bHkgY3JlYXRlZCB0dXBsZS4gKi8KICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgaWYgKFB5X1NJWkUoYXJncykgPiAwIHx8ICFQeVR5cGVfQ2hlY2soY2xzKSB8fAotICAgICAgICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nKGNscywgIl9fZ2V0aW5pdGFyZ3NfXyIpKSB7CisgICAgICAgIF9QeU9iamVjdF9IYXNBdHRySWQoY2xzLCAmUHlJZF9fX2dldGluaXRhcmdzX18pKSB7CiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoY2xzLCBhcmdzKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoY2xzLCAiX19uZXdfXyIsICJPIiwgY2xzKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChjbHMsICZQeUlkX19fbmV3X18sICJPIiwgY2xzKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQ5NjgsOCArNTAyNiw5IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeU9iamVjdCAqYXBwZW5kX2Z1bmM7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGFwcGVuZCk7CiAKLSAgICAgICAgYXBwZW5kX2Z1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGxpc3QsICJhcHBlbmQiKTsKKyAgICAgICAgYXBwZW5kX2Z1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGxpc3QsICZQeUlkX2FwcGVuZCk7CiAgICAgICAgIGlmIChhcHBlbmRfZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBmb3IgKGkgPSB4OyBpIDwgbGVuOyBpKyspIHsKQEAgLTUwMTUsNyArNTA3NCw3IEBACiAgICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKICAgICBpZiAobGVuID09IHgpICAvKiBub3RoaW5nIHRvIGRvICovCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmICgobGVuIC0geCkgJSAyICE9IDApIHsgCisgICAgaWYgKChsZW4gLSB4KSAlIDIgIT0gMCkgewogICAgICAgICAvKiBDdXJydXB0IG9yIGhvc3RpbGUgcGlja2xlIC0tIHdlIG5ldmVyIHdyaXRlIG9uZSBsaWtlIHRoaXMuICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhVbnBpY2tsaW5nRXJyb3IsICJvZGQgbnVtYmVyIG9mIGl0ZW1zIGZvciBTRVRJVEVNUyIpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC01MDU2LDYgKzUxMTUsNyBAQAogICAgIFB5T2JqZWN0ICpzdGF0ZSwgKmluc3QsICpzbG90c3RhdGU7CiAgICAgUHlPYmplY3QgKnNldHN0YXRlOwogICAgIGludCBzdGF0dXMgPSAwOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0c3RhdGVfXyk7CiAKICAgICAvKiBTdGFjayBpcyAuLi4gaW5zdGFuY2UsIHN0YXRlLiAgV2Ugd2FudCB0byBsZWF2ZSBpbnN0YW5jZSBhdAogICAgICAqIHRoZSBzdGFjayB0b3AsIHBvc3NpYmx5IG11dGF0ZWQgdmlhIGluc3RhbmNlLl9fc2V0c3RhdGVfXyhzdGF0ZSkuCkBAIC01MDY5LDcgKzUxMjksNyBAQAogCiAgICAgaW5zdCA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKLSAgICBzZXRzdGF0ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW5zdCwgIl9fc2V0c3RhdGVfXyIpOworICAgIHNldHN0YXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX3NldHN0YXRlX18pOwogICAgIGlmIChzZXRzdGF0ZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC01MTEyLDEyICs1MTcyLDEzIEBACiAgICAgICAgIFB5T2JqZWN0ICpkaWN0OwogICAgICAgICBQeU9iamVjdCAqZF9rZXksICpkX3ZhbHVlOwogICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKIAogICAgICAgICBpZiAoIVB5RGljdF9DaGVjayhzdGF0ZSkpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhVbnBpY2tsaW5nRXJyb3IsICJzdGF0ZSBpcyBub3QgYSBkaWN0aW9uYXJ5Iik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGluc3QsICJfX2RpY3RfXyIpOworICAgICAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgICAgIGlmIChkaWN0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC01MzcyLDcgKzU0MzMsNyBAQAogICAgICAgIG5vdCBjYWxsIFVucGlja2xlci5fX2luaXRfXygpLiBIZXJlLCB3ZSBzaW1wbHkgZW5zdXJlIHRoYXQgc2VsZi0+cmVhZAogICAgICAgIGlzIG5vdCBOVUxMLiAqLwogICAgIGlmIChzZWxmLT5yZWFkID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFVucGlja2xpbmdFcnJvciwgCisgICAgICAgIFB5RXJyX0Zvcm1hdChVbnBpY2tsaW5nRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiVW5waWNrbGVyLl9faW5pdF9fKCkgd2FzIG5vdCBjYWxsZWQgYnkgJXMuX19pbml0X18oKSIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NDc0LDcgKzU1MzUsNyBAQAogICAgICAgICBnbG9iYWwgPSBQeU9iamVjdF9HZXRBdHRyKG1vZHVsZSwgZ2xvYmFsX25hbWUpOwogICAgICAgICBQeV9ERUNSRUYobW9kdWxlKTsKICAgICB9Ci0gICAgZWxzZSB7IAorICAgIGVsc2UgewogICAgICAgICBnbG9iYWwgPSBQeU9iamVjdF9HZXRBdHRyKG1vZHVsZSwgZ2xvYmFsX25hbWUpOwogICAgIH0KICAgICByZXR1cm4gZ2xvYmFsOwpAQCAtNTU4Miw2ICs1NjQzLDcgQEAKICAgICBQeU9iamVjdCAqZml4X2ltcG9ydHMgPSBQeV9UcnVlOwogICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKHBlcnNpc3RlbnRfbG9hZCk7CiAKICAgICAvKiBYWFg6IFRoYXQgaXMgYW4gaG9ycmlibGUgZXJyb3IgbWVzc2FnZS4gQnV0LCBJIGRvbid0IGtub3cgaG93IHRvIGRvCiAgICAgICAgYmV0dGVyLi4uICovCkBAIC01NjE2LDkgKzU2NzgsOSBAQAogICAgIGlmIChzZWxmLT5maXhfaW1wb3J0cyA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgInBlcnNpc3RlbnRfbG9hZCIpKSB7Ci0gICAgICAgIHNlbGYtPnBlcnNfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyc2lzdGVudF9sb2FkIik7CisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfcGVyc2lzdGVudF9sb2FkKSkgeworICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfcGVyc2lzdGVudF9sb2FkKTsKICAgICAgICAgaWYgKHNlbGYtPnBlcnNfZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTU2NTEsNyArNTcxMyw3IEBACiAgKiBpbnRlbnRpb25hbCwgYXMgdGhlc2Ugc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmxhY2stYm94IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAgKgogICogV2UgZG8sIGhvd2V2ZXIsIGhhdmUgdG8gaW1wbGVtZW50IHBpY2tsaW5nL3VucGlja2xpbmcgc3VwcG9ydCBiZWNhdXNlIG9mCi0gKiByZWFsLXdvcmxkIGNvZGUgbGlrZSBjdnMyc3ZuLiAKKyAqIHJlYWwtd29ybGQgY29kZSBsaWtlIGN2czJzdm4uCiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwppbmRleCA1OTY3M2Y0Li44ZjBmY2YyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYworKysgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwpAQCAtNDcsNyArNDcsOSBAQAogX2VuYWJsZV9nYyhQeU9iamVjdCAqZ2NfbW9kdWxlKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChnY19tb2R1bGUsICJlbmFibGUiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihlbmFibGUpOworCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChnY19tb2R1bGUsICZQeUlkX2VuYWJsZSwgTlVMTCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMTsKICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTc4LDcgKzgwLDcgQEAKICAqIHRoYXQgcHJvcGVybHkgc3VwcG9ydHMgL2Rldi9mZC4KICAqLwogc3RhdGljIGludAotX2lzX2ZkZXNjZnNfbW91bnRlZF9vbl9kZXZfZmQoKQorX2lzX2ZkZXNjZnNfbW91bnRlZF9vbl9kZXZfZmQodm9pZCkKIHsKICAgICBzdHJ1Y3Qgc3RhdCBkZXZfc3RhdDsKICAgICBzdHJ1Y3Qgc3RhdCBkZXZfZmRfc3RhdDsKQEAgLTUwMSw3ICs1MDMsNyBAQAogc3VicHJvY2Vzc19mb3JrX2V4ZWMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpnY19tb2R1bGUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpleGVjdXRhYmxlX2xpc3QsICpweV9jbG9zZV9mZHMsICpweV9mZHNfdG9fa2VlcDsKKyAgICBQeU9iamVjdCAqZXhlY3V0YWJsZV9saXN0LCAqcHlfZmRzX3RvX2tlZXA7CiAgICAgUHlPYmplY3QgKmVudl9saXN0LCAqcHJlZXhlY19mbjsKICAgICBQeU9iamVjdCAqcHJvY2Vzc19hcmdzLCAqY29udmVydGVkX2FyZ3MgPSBOVUxMLCAqZmFzdF9hcmdzID0gTlVMTDsKICAgICBQeU9iamVjdCAqcHJlZXhlY19mbl9hcmdzX3R1cGxlID0gTlVMTDsKQEAgLTUxNiwxNyArNTE4LDE0IEBACiAgICAgUHlfc3NpemVfdCBhcmdfbnVtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKAotICAgICAgICAgICAgYXJncywgIk9PT09PT2lpaWlpaWlpaWlPOmZvcmtfZXhlYyIsCi0gICAgICAgICAgICAmcHJvY2Vzc19hcmdzLCAmZXhlY3V0YWJsZV9saXN0LCAmcHlfY2xvc2VfZmRzLCAmcHlfZmRzX3RvX2tlZXAsCisgICAgICAgICAgICBhcmdzLCAiT09wT09PaWlpaWlpaWlpaU86Zm9ya19leGVjIiwKKyAgICAgICAgICAgICZwcm9jZXNzX2FyZ3MsICZleGVjdXRhYmxlX2xpc3QsICZjbG9zZV9mZHMsICZweV9mZHNfdG9fa2VlcCwKICAgICAgICAgICAgICZjd2Rfb2JqLCAmZW52X2xpc3QsCiAgICAgICAgICAgICAmcDJjcmVhZCwgJnAyY3dyaXRlLCAmYzJwcmVhZCwgJmMycHdyaXRlLAogICAgICAgICAgICAgJmVycnJlYWQsICZlcnJ3cml0ZSwgJmVycnBpcGVfcmVhZCwgJmVycnBpcGVfd3JpdGUsCiAgICAgICAgICAgICAmcmVzdG9yZV9zaWduYWxzLCAmY2FsbF9zZXRzaWQsICZwcmVleGVjX2ZuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBjbG9zZV9mZHMgPSBQeU9iamVjdF9Jc1RydWUocHlfY2xvc2VfZmRzKTsKLSAgICBpZiAoY2xvc2VfZmRzIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGNsb3NlX2ZkcyAmJiBlcnJwaXBlX3dyaXRlIDwgMykgeyAgLyogcHJlY29uZGl0aW9uICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZXJycGlwZV93cml0ZSBtdXN0IGJlID49IDMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NDMsMTAgKzU0MiwxMyBAQAogICAgIC8qIFdlIG5lZWQgdG8gY2FsbCBnYy5kaXNhYmxlKCkgd2hlbiB3ZSdsbCBiZSBjYWxsaW5nIHByZWV4ZWNfZm4gKi8KICAgICBpZiAocHJlZXhlY19mbiAhPSBQeV9Ob25lKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGlzZW5hYmxlZCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGRpc2FibGUpOworICAgICAgICAKICAgICAgICAgZ2NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJnYyIpOwogICAgICAgICBpZiAoZ2NfbW9kdWxlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChnY19tb2R1bGUsICJpc2VuYWJsZWQiLCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChnY19tb2R1bGUsICZQeUlkX2lzZW5hYmxlZCwgTlVMTCk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGdjX21vZHVsZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU1Nyw3ICs1NTksNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGdjX21vZHVsZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGdjX21vZHVsZSwgImRpc2FibGUiLCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChnY19tb2R1bGUsICZQeUlkX2Rpc2FibGUsIE5VTEwpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihnY19tb2R1bGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCmluZGV4IGJjOWIwNGEuLjQyMWEwZDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCkBAIC0yMTAsNyArMjEwLDcgQEAKICAgICBQeU9iamVjdCAqbWFza2xvd2VyID0gTlVMTDsKICAgICBQeU9iamVjdCAqdGhpcnR5dHdvID0gTlVMTDsKICAgICBQeU9iamVjdCAqbiA9IE5VTEw7Ci0gICAgdW5zaWduZWQgbG9uZyAqa2V5ID0gTlVMTDsKKyAgICB1bnNpZ25lZCBsb25nICpuZXdfa2V5LCAqa2V5ID0gTlVMTDsKICAgICB1bnNpZ25lZCBsb25nIGtleW1heDsgICAgICAgICAgICAgICAvKiAjIG9mIGFsbG9jYXRlZCBzbG90cyBpbiBrZXkgKi8KICAgICB1bnNpZ25lZCBsb25nIGtleXVzZWQ7ICAgICAgICAgICAgICAvKiAjIG9mIHVzZWQgc2xvdHMgaW4ga2V5ICovCiAgICAgaW50IGVycjsKQEAgLTIyOCwxNiArMjI4LDE3IEBACiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIC8qIElmIHRoZSBhcmcgaXMgYW4gaW50IG9yIGxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWU7IGVsc2UgdXNlCi0gICAgICogdGhlIGFic29sdXRlIHZhbHVlIG9mIGl0cyBoYXNoIGNvZGUuCisgICAgLyogVGhpcyBhbGdvcml0aG0gcmVsaWVzIG9uIHRoZSBudW1iZXIgYmVpbmcgdW5zaWduZWQuCisgICAgICogU286IGlmIHRoZSBhcmcgaXMgYSBQeUxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWUuCisgICAgICogT3RoZXJ3aXNlIHVzZSBpdHMgaGFzaCB2YWx1ZSwgY2FzdCB0byB1bnNpZ25lZC4KICAgICAgKi8KICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpCiAgICAgICAgIG4gPSBQeU51bWJlcl9BYnNvbHV0ZShhcmcpOwogICAgIGVsc2UgewotICAgICAgICBsb25nIGhhc2ggPSBQeU9iamVjdF9IYXNoKGFyZyk7CisgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gUHlPYmplY3RfSGFzaChhcmcpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gRG9uZTsKLSAgICAgICAgbiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKWhhc2gpOworICAgICAgICBuID0gUHlMb25nX0Zyb21TaXplX3QoKHNpemVfdCloYXNoKTsKICAgICB9CiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZ290byBEb25lOwpAQCAtMjg3LDEwICsyODgsMTEgQEAKICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGtleSA9ICh1bnNpZ25lZCBsb25nICopUHlNZW1fUmVhbGxvYyhrZXksCisgICAgICAgICAgICBuZXdfa2V5ID0gKHVuc2lnbmVkIGxvbmcgKilQeU1lbV9SZWFsbG9jKGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZ2dlciAqIHNpemVvZigqa2V5KSk7Ci0gICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICBpZiAobmV3X2tleSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgICAgIGtleSA9IG5ld19rZXk7CiAgICAgICAgICAgICBrZXltYXggPSBiaWdnZXI7CiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0KGtleXVzZWQgPCBrZXltYXgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwppbmRleCA3MzVhMjQyLi4zNjkzMzYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwpAQCAtMjE3LDggKzIxNyw2IEBACiAgICAgcHlzcWxpdGVfTm9kZSogcHRyOwogICAgIFB5T2JqZWN0KiBwcmV2a2V5OwogICAgIFB5T2JqZWN0KiBuZXh0a2V5OwotICAgIFB5T2JqZWN0KiBmbXRfYXJnczsKLSAgICBQeU9iamVjdCogdGVtcGxhdGU7CiAgICAgUHlPYmplY3QqIGRpc3BsYXlfc3RyOwogCiAgICAgcHRyID0gc2VsZi0+Zmlyc3Q7CkBAIC0yMjksMzYgKzIyNywyMSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJldmtleSA9IFB5X05vbmU7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKHByZXZrZXkpOwogCiAgICAgICAgIGlmIChwdHItPm5leHQpIHsKICAgICAgICAgICAgIG5leHRrZXkgPSBwdHItPm5leHQtPmtleTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG5leHRrZXkgPSBQeV9Ob25lOwogICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRihuZXh0a2V5KTsKIAotICAgICAgICBmbXRfYXJncyA9IFB5X0J1aWxkVmFsdWUoIk9PTyIsIHByZXZrZXksIHB0ci0+a2V5LCBuZXh0a2V5KTsKLSAgICAgICAgaWYgKCFmbXRfYXJncykgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiJXMgPC0gJXMgLT4lc1xuIik7Ci0gICAgICAgIGlmICghdGVtcGxhdGUpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmbXRfYXJncyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBkaXNwbGF5X3N0ciA9IFB5VW5pY29kZV9Gb3JtYXQodGVtcGxhdGUsIGZtdF9hcmdzKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXBsYXRlKTsKLSAgICAgICAgUHlfREVDUkVGKGZtdF9hcmdzKTsKKyAgICAgICAgZGlzcGxheV9zdHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMgPC0gJVMgLT4gJVNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmtleSwgcHRyLT5rZXksIG5leHRrZXkpOwogICAgICAgICBpZiAoIWRpc3BsYXlfc3RyKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBQeU9iamVjdF9QcmludChkaXNwbGF5X3N0ciwgc3Rkb3V0LCBQeV9QUklOVF9SQVcpOwogICAgICAgICBQeV9ERUNSRUYoZGlzcGxheV9zdHIpOwogCi0gICAgICAgIFB5X0RFQ1JFRihwcmV2a2V5KTsKLSAgICAgICAgUHlfREVDUkVGKG5leHRrZXkpOwotCiAgICAgICAgIHB0ciA9IHB0ci0+bmV4dDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCmluZGV4IDlkNGM3MmYuLmJjNGNlNTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwpAQCAtNjcxLDcgKzY3MSw3IEBACiB7CiAgICAgUHlPYmplY3QqIGZ1bmN0aW9uX3Jlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QqKiBhZ2dyZWdhdGVfaW5zdGFuY2U7Ci0gICAgUHlPYmplY3QqIGFnZ3JlZ2F0ZV9jbGFzczsKKyAgICBfUHlfSURFTlRJRklFUihmaW5hbGl6ZSk7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIFB5R0lMU3RhdGVfU1RBVEUgdGhyZWFkc3RhdGU7CkBAIC02NzksOCArNjc5LDYgQEAKICAgICB0aHJlYWRzdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7CiAjZW5kaWYKIAotICAgIGFnZ3JlZ2F0ZV9jbGFzcyA9IChQeU9iamVjdCopc3FsaXRlM191c2VyX2RhdGEoY29udGV4dCk7Ci0KICAgICBhZ2dyZWdhdGVfaW5zdGFuY2UgPSAoUHlPYmplY3QqKilzcWxpdGUzX2FnZ3JlZ2F0ZV9jb250ZXh0KGNvbnRleHQsIHNpemVvZihQeU9iamVjdCopKTsKICAgICBpZiAoISphZ2dyZWdhdGVfaW5zdGFuY2UpIHsKICAgICAgICAgLyogdGhpcyBicmFuY2ggaXMgZXhlY3V0ZWQgaWYgdGhlcmUgd2FzIGFuIGV4Y2VwdGlvbiBpbiB0aGUgYWdncmVnYXRlJ3MKQEAgLTY4OSw3ICs2ODcsNyBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIGZ1bmN0aW9uX3Jlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSwgImZpbmFsaXplIiwgIiIpOworICAgIGZ1bmN0aW9uX3Jlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSwgJlB5SWRfZmluYWxpemUsICIiKTsKICAgICBpZiAoIWZ1bmN0aW9uX3Jlc3VsdCkgewogICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CiAgICAgICAgICAgICBQeUVycl9QcmludCgpOwpAQCAtOTA1LDYgKzkwMywzOCBAQAogICAgIHJldHVybiByYzsKIH0KIAorc3RhdGljIHZvaWQgX3RyYWNlX2NhbGxiYWNrKHZvaWQqIHVzZXJfYXJnLCBjb25zdCBjaGFyKiBzdGF0ZW1lbnRfc3RyaW5nKQoreworICAgIFB5T2JqZWN0ICpweV9zdGF0ZW1lbnQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeUdJTFN0YXRlX1NUQVRFIGdpbHN0YXRlOworCisgICAgZ2lsc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOworI2VuZGlmCisgICAgcHlfc3RhdGVtZW50ID0gUHlVbmljb2RlX0RlY29kZVVURjgoc3RhdGVtZW50X3N0cmluZywKKyAgICAgICAgICAgIHN0cmxlbihzdGF0ZW1lbnRfc3RyaW5nKSwgInJlcGxhY2UiKTsKKyAgICBpZiAocHlfc3RhdGVtZW50KSB7CisgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoKFB5T2JqZWN0Kil1c2VyX2FyZywgcHlfc3RhdGVtZW50LCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKHB5X3N0YXRlbWVudCk7CisgICAgfQorCisgICAgaWYgKHJldCkgeworICAgICAgICBQeV9ERUNSRUYocmV0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CisgICAgICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlHSUxTdGF0ZV9SZWxlYXNlKGdpbHN0YXRlKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X2F1dGhvcml6ZXIocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCiB7CiAgICAgUHlPYmplY3QqIGF1dGhvcml6ZXJfY2I7CkBAIC05NjQsNiArOTk0LDM0IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCogcHlzcWxpdGVfY29ubmVjdGlvbl9zZXRfdHJhY2VfY2FsbGJhY2socHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCit7CisgICAgUHlPYmplY3QqIHRyYWNlX2NhbGxiYWNrOworCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyAidHJhY2VfY2FsbGJhY2siLCBOVUxMIH07CisKKyAgICBpZiAoIXB5c3FsaXRlX2NoZWNrX3RocmVhZChzZWxmKSB8fCAhcHlzcWxpdGVfY2hlY2tfY29ubmVjdGlvbihzZWxmKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNldF90cmFjZV9jYWxsYmFjayIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnRyYWNlX2NhbGxiYWNrKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAodHJhY2VfY2FsbGJhY2sgPT0gUHlfTm9uZSkgeworICAgICAgICAvKiBOb25lIGNsZWFycyB0aGUgdHJhY2UgY2FsbGJhY2sgcHJldmlvdXNseSBzZXQgKi8KKyAgICAgICAgc3FsaXRlM190cmFjZShzZWxmLT5kYiwgMCwgKHZvaWQqKTApOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShzZWxmLT5mdW5jdGlvbl9waW5ib2FyZCwgdHJhY2VfY2FsbGJhY2ssIFB5X05vbmUpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHNxbGl0ZTNfdHJhY2Uoc2VsZi0+ZGIsIF90cmFjZV9jYWxsYmFjaywgdHJhY2VfY2FsbGJhY2spOworICAgIH0KKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKwogI2lmZGVmIEhBVkVfTE9BRF9FWFRFTlNJT04KIHN0YXRpYyBQeU9iamVjdCogcHlzcWxpdGVfZW5hYmxlX2xvYWRfZXh0ZW5zaW9uKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewpAQCAtMTE2OSw4ICsxMjI3LDkgQEAKICAgICBQeU9iamVjdCogY3Vyc29yID0gMDsKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihjdXJzb3IpOwogCi0gICAgY3Vyc29yID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsICJjdXJzb3IiLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTE5OCw4ICsxMjU3LDkgQEAKICAgICBQeU9iamVjdCogY3Vyc29yID0gMDsKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihjdXJzb3IpOwogCi0gICAgY3Vyc29yID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsICJjdXJzb3IiLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTIyNyw4ICsxMjg3LDkgQEAKICAgICBQeU9iamVjdCogY3Vyc29yID0gMDsKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihjdXJzb3IpOwogCi0gICAgY3Vyc29yID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsICJjdXJzb3IiLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTM3NSwxMCArMTQzNiwxMiBAQAogICAgIFB5T2JqZWN0KiB1cHBlcmNhc2VfbmFtZSA9IDA7CiAgICAgUHlPYmplY3QqIG5hbWU7CiAgICAgUHlPYmplY3QqIHJldHZhbDsKLSAgICBQeV9VTklDT0RFKiBjaGs7CiAgICAgUHlfc3NpemVfdCBpLCBsZW47CisgICAgX1B5X0lERU5USUZJRVIodXBwZXIpOwogICAgIGNoYXIgKnVwcGVyY2FzZV9uYW1lX3N0cjsKICAgICBpbnQgcmM7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKIAogICAgIGlmICghcHlzcWxpdGVfY2hlY2tfdGhyZWFkKHNlbGYpIHx8ICFweXNxbGl0ZV9jaGVja19jb25uZWN0aW9uKHNlbGYpKSB7CiAgICAgICAgIGdvdG8gZmluYWxseTsKQEAgLTEzODgsMTcgKzE0NTEsMjEgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIHVwcGVyY2FzZV9uYW1lID0gUHlPYmplY3RfQ2FsbE1ldGhvZChuYW1lLCAidXBwZXIiLCAiIik7CisgICAgdXBwZXJjYXNlX25hbWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG5hbWUsICZQeUlkX3VwcGVyLCAiIik7CiAgICAgaWYgKCF1cHBlcmNhc2VfbmFtZSkgewogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogCi0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHVwcGVyY2FzZV9uYW1lKTsKLSAgICBjaGsgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1cHBlcmNhc2VfbmFtZSk7Ci0gICAgZm9yIChpPTA7IGk8bGVuOyBpKyssIGNoaysrKSB7Ci0gICAgICAgIGlmICgoKmNoayA+PSAnMCcgJiYgKmNoayA8PSAnOScpCi0gICAgICAgICB8fCAoKmNoayA+PSAnQScgJiYgKmNoayA8PSAnWicpCi0gICAgICAgICB8fCAoKmNoayA9PSAnXycpKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodXBwZXJjYXNlX25hbWUpKQorICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodXBwZXJjYXNlX25hbWUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1cHBlcmNhc2VfbmFtZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVwcGVyY2FzZV9uYW1lKTsKKyAgICBmb3IgKGk9MDsgaTxsZW47IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmICgoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykKKyAgICAgICAgIHx8IChjaCA+PSAnQScgJiYgY2ggPD0gJ1onKQorICAgICAgICAgfHwgKGNoID09ICdfJykpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9IGVsc2UgewpAQCAtMTUxNyw2ICsxNTg0LDggQEAKICAgICAjZW5kaWYKICAgICB7InNldF9wcm9ncmVzc19oYW5kbGVyIiwgKFB5Q0Z1bmN0aW9uKXB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X3Byb2dyZXNzX2hhbmRsZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAogICAgICAgICBQeURvY19TVFIoIlNldHMgcHJvZ3Jlc3MgaGFuZGxlciBjYWxsYmFjay4gTm9uLXN0YW5kYXJkLiIpfSwKKyAgICB7InNldF90cmFjZV9jYWxsYmFjayIsIChQeUNGdW5jdGlvbilweXNxbGl0ZV9jb25uZWN0aW9uX3NldF90cmFjZV9jYWxsYmFjaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCisgICAgICAgIFB5RG9jX1NUUigiU2V0cyBhIHRyYWNlIGNhbGxiYWNrIGNhbGxlZCBmb3IgZWFjaCBTUUwgc3RhdGVtZW50IChwYXNzZWQgYXMgdW5pY29kZSkuIE5vbi1zdGFuZGFyZC4iKX0sCiAgICAgeyJleGVjdXRlIiwgKFB5Q0Z1bmN0aW9uKXB5c3FsaXRlX2Nvbm5lY3Rpb25fZXhlY3V0ZSwgTUVUSF9WQVJBUkdTLAogICAgICAgICBQeURvY19TVFIoIkV4ZWN1dGVzIGEgU1FMIHN0YXRlbWVudC4gTm9uLXN0YW5kYXJkLiIpfSwKICAgICB7ImV4ZWN1dGVtYW55IiwgKFB5Q0Z1bmN0aW9uKXB5c3FsaXRlX2Nvbm5lY3Rpb25fZXhlY3V0ZW1hbnksIE1FVEhfVkFSQVJHUywKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmggYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCmluZGV4IGM4ZTJmN2MuLjBjOTczNGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaApAQCAtODMsOCArODMsNyBAQAogCiAgICAgLyogRGV0ZXJtaW5lcyBob3cgYnl0ZXN0cmluZ3MgZnJvbSBTUUxpdGUgYXJlIGNvbnZlcnRlZCB0byBQeXRob24gb2JqZWN0czoKICAgICAgKiAtIFB5VW5pY29kZV9UeXBlOiAgICAgICAgUHl0aG9uIFVuaWNvZGUgb2JqZWN0cyBhcmUgY29uc3RydWN0ZWQgZnJvbSBVVEYtOCBieXRlc3RyaW5ncwotICAgICAqIC0gT3B0aW1pemVkVW5pY29kZTogICAgICBMaWtlIGJlZm9yZSwgYnV0IGZvciBBU0NJSSBkYXRhLCBvbmx5IFB5U3RyaW5ncyBhcmUgY3JlYXRlZC4KLSAgICAgKiAtIFB5Qnl0ZXNfVHlwZTogICAgICAgICBQeVN0cmluZ3MgYXJlIGNyZWF0ZWQgYXMtaXMuCisgICAgICogLSBQeUJ5dGVzX1R5cGU6ICAgICAgICAgIFRoZSBieXRlc3RyaW5ncyBhcmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgICogLSBBbnkgY3VzdG9tIGNhbGxhYmxlOiAgIEFueSBvYmplY3QgcmV0dXJuZWQgZnJvbSB0aGUgY2FsbGFibGUgY2FsbGVkIHdpdGggdGhlIGJ5dGVzdHJpbmcKICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgc2luZ2xlIHBhcmFtZXRlci4KICAgICAgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwppbmRleCA4NmZiZDRlLi44YTU2ZDNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCkBAIC0xMjYsMTEgKzEyNiw5IEBACiAKIHN0YXRpYyB2b2lkIHB5c3FsaXRlX2N1cnNvcl9kZWFsbG9jKHB5c3FsaXRlX0N1cnNvciogc2VsZikKIHsKLSAgICBpbnQgcmM7Ci0KICAgICAvKiBSZXNldCB0aGUgc3RhdGVtZW50IGlmIHRoZSB1c2VyIGhhcyBub3QgY2xvc2VkIHRoZSBjdXJzb3IgKi8KICAgICBpZiAoc2VsZi0+c3RhdGVtZW50KSB7Ci0gICAgICAgIHJjID0gcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CisgICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOwogICAgICAgICBQeV9ERUNSRUYoc2VsZi0+c3RhdGVtZW50KTsKICAgICB9CiAKQEAgLTE1Miw4ICsxNTAsOSBAQAogewogICAgIFB5T2JqZWN0KiB1cGNhc2Vfa2V5OwogICAgIFB5T2JqZWN0KiByZXR2YWw7CisgICAgX1B5X0lERU5USUZJRVIodXBwZXIpOwogCi0gICAgdXBjYXNlX2tleSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoa2V5LCAidXBwZXIiLCAiIik7CisgICAgdXBjYXNlX2tleSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoa2V5LCAmUHlJZF91cHBlciwgIiIpOwogICAgIGlmICghdXBjYXNlX2tleSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yNjgsMTEgKzI2Nyw2IEBACiAgICAgfQogfQogCi1QeU9iamVjdCogcHlzcWxpdGVfdW5pY29kZV9mcm9tX3N0cmluZyhjb25zdCBjaGFyKiB2YWxfc3RyLCBQeV9zc2l6ZV90IHNpemUsIGludCBvcHRpbWl6ZSkKLXsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHZhbF9zdHIsIHNpemUpOwotfQotCiAvKgogICogUmV0dXJucyBhIHJvdyBmcm9tIHRoZSBjdXJyZW50bHkgYWN0aXZlIFNRTGl0ZSBzdGF0ZW1lbnQKICAqCkBAIC0zNTYsMTIgKzM1MCw4IEBACiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHR5cGUgPT0gU1FMSVRFX1RFWFQpIHsKICAgICAgICAgICAgICAgICB2YWxfc3RyID0gKGNvbnN0IGNoYXIqKXNxbGl0ZTNfY29sdW1uX3RleHQoc2VsZi0+c3RhdGVtZW50LT5zdCwgaSk7CiAgICAgICAgICAgICAgICAgbmJ5dGVzID0gc3FsaXRlM19jb2x1bW5fYnl0ZXMoc2VsZi0+c3RhdGVtZW50LT5zdCwgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpCi0gICAgICAgICAgICAgICAgICAgIHx8IChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gcHlzcWxpdGVfT3B0aW1pemVkVW5pY29kZSkpIHsKLQotICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQgPSBweXNxbGl0ZV91bmljb2RlX2Zyb21fc3RyaW5nKHZhbF9zdHIsIG5ieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmNvbm5lY3Rpb24tPnRleHRfZmFjdG9yeSA9PSBweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlID8gMSA6IDApOwotCisgICAgICAgICAgICAgICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPnRleHRfZmFjdG9yeSA9PSAoUHlPYmplY3QqKSZQeVVuaWNvZGVfVHlwZSkgeworICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUodmFsX3N0ciwgbmJ5dGVzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb252ZXJ0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWUgPSBzcWxpdGUzX2NvbHVtbl9uYW1lKHNlbGYtPnN0YXRlbWVudC0+c3QsIGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2xuYW1lKSB7CkBAIC00NjAsNyArNDUwLDYgQEAKICAgICBpbnQgc3RhdGVtZW50X3R5cGU7CiAgICAgUHlPYmplY3QqIGRlc2NyaXB0b3I7CiAgICAgUHlPYmplY3QqIHNlY29uZF9hcmd1bWVudCA9IE5VTEw7Ci0gICAgaW50IGFsbG93XzhiaXRfY2hhcnM7CiAKICAgICBpZiAoIWNoZWNrX2N1cnNvcihzZWxmKSkgewogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNDY5LDEwICs0NTgsNiBAQAogICAgIHNlbGYtPmxvY2tlZCA9IDE7CiAgICAgc2VsZi0+cmVzZXQgPSAwOwogCi0gICAgLyogTWFrZSBzaG9vdGluZyB5b3Vyc2VsZiBpbiB0aGUgZm9vdCB3aXRoIG5vdCB1dGYtOCBkZWNvZGFibGUgOC1iaXQtc3RyaW5ncyBoYXJkZXIgKi8KLSAgICBhbGxvd184Yml0X2NoYXJzID0gKChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgIT0gKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpICYmCi0gICAgICAgIChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgIT0gcHlzcWxpdGVfT3B0aW1pemVkVW5pY29kZSkpOwotCiAgICAgUHlfWERFQ1JFRihzZWxmLT5uZXh0X3Jvdyk7CiAgICAgc2VsZi0+bmV4dF9yb3cgPSBOVUxMOwogCkBAIC01MzYsNyArNTIxLDcgQEAKIAogICAgIGlmIChzZWxmLT5zdGF0ZW1lbnQgIT0gTlVMTCkgewogICAgICAgICAvKiBUaGVyZSBpcyBhbiBhY3RpdmUgc3RhdGVtZW50ICovCi0gICAgICAgIHJjID0gcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CisgICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOwogICAgIH0KIAogICAgIG9wZXJhdGlvbl9jc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUob3BlcmF0aW9uLCAmb3BlcmF0aW9uX2xlbik7CkBAIC02MzEsNyArNjE2LDcgQEAKIAogICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfbWFya19kaXJ0eShzZWxmLT5zdGF0ZW1lbnQpOwogCi0gICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMoc2VsZi0+c3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBhbGxvd184Yml0X2NoYXJzKTsKKyAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVycyhzZWxmLT5zdGF0ZW1lbnQsIHBhcmFtZXRlcnMpOwogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQpAQCAtNzQxLDcgKzcyNiw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAobXVsdGlwbGUpIHsKLSAgICAgICAgICAgIHJjID0gcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CisgICAgICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKHBhcmFtZXRlcnMpOwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5jIGIvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmMKaW5kZXggYzczMGFmYS4uMjI2MWI4MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmMKQEAgLTk1LDcgKzk1LDkgQEAKIAogICAgIC8qIHRyeSB0byBoYXZlIHRoZSBwcm90b2NvbCBhZGFwdCB0aGlzIG9iamVjdCovCiAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcocHJvdG8sICJfX2FkYXB0X18iKSkgewotICAgICAgICBQeU9iamVjdCAqYWRhcHRlZCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocHJvdG8sICJfX2FkYXB0X18iLCAiTyIsIG9iaik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYWRhcHRfXyk7CisgICAgICAgIFB5T2JqZWN0ICphZGFwdGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcm90bywgJlB5SWRfX19hZGFwdF9fLCAiTyIsIG9iaik7CisKICAgICAgICAgaWYgKGFkYXB0ZWQpIHsKICAgICAgICAgICAgIGlmIChhZGFwdGVkICE9IFB5X05vbmUpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gYWRhcHRlZDsKQEAgLTExMCw3ICsxMTIsOSBAQAogCiAgICAgLyogYW5kIGZpbmFsbHkgdHJ5IHRvIGhhdmUgdGhlIG9iamVjdCBhZGFwdCBpdHNlbGYgKi8KICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJfX2NvbmZvcm1fXyIpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphZGFwdGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvYmosICJfX2NvbmZvcm1fXyIsIk8iLCBwcm90byk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fY29uZm9ybV9fKTsKKyAgICAgICAgUHlPYmplY3QgKmFkYXB0ZWQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9iaiwgJlB5SWRfX19jb25mb3JtX18sIk8iLCBwcm90byk7CisKICAgICAgICAgaWYgKGFkYXB0ZWQpIHsKICAgICAgICAgICAgIGlmIChhZGFwdGVkICE9IFB5X05vbmUpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gYWRhcHRlZDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYwppbmRleCBjYmMzYjhlLi5iZWE2ZDZhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCkBAIC0zNyw3ICszNyw3IEBACiAKIFB5T2JqZWN0KiBweXNxbGl0ZV9FcnJvciwgKnB5c3FsaXRlX1dhcm5pbmcsICpweXNxbGl0ZV9JbnRlcmZhY2VFcnJvciwgKnB5c3FsaXRlX0RhdGFiYXNlRXJyb3IsCiAgICAgKnB5c3FsaXRlX0ludGVybmFsRXJyb3IsICpweXNxbGl0ZV9PcGVyYXRpb25hbEVycm9yLCAqcHlzcWxpdGVfUHJvZ3JhbW1pbmdFcnJvciwKLSAgICAqcHlzcWxpdGVfSW50ZWdyaXR5RXJyb3IsICpweXNxbGl0ZV9EYXRhRXJyb3IsICpweXNxbGl0ZV9Ob3RTdXBwb3J0ZWRFcnJvciwgKnB5c3FsaXRlX09wdGltaXplZFVuaWNvZGU7CisgICAgKnB5c3FsaXRlX0ludGVncml0eUVycm9yLCAqcHlzcWxpdGVfRGF0YUVycm9yLCAqcHlzcWxpdGVfTm90U3VwcG9ydGVkRXJyb3I7CiAKIFB5T2JqZWN0KiBjb252ZXJ0ZXJzOwogaW50IF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrczsKQEAgLTE3OSwxMyArMTc5LDE0IEBACiAgICAgUHlPYmplY3QqIG5hbWUgPSBOVUxMOwogICAgIFB5T2JqZWN0KiBjYWxsYWJsZTsKICAgICBQeU9iamVjdCogcmV0dmFsID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUih1cHBlcik7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVPIiwgJm9yaWdfbmFtZSwgJmNhbGxhYmxlKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKiBjb252ZXJ0IHRoZSBuYW1lIHRvIHVwcGVyIGNhc2UgKi8KLSAgICBuYW1lID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvcmlnX25hbWUsICJ1cHBlciIsICIiKTsKKyAgICBuYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvcmlnX25hbWUsICZQeUlkX3VwcGVyLCAiIik7CiAgICAgaWYgKCFuYW1lKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtNDA2LDEzICs0MDcsMTMgQEAKICAgICB9CiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIk5vdFN1cHBvcnRlZEVycm9yIiwgcHlzcWxpdGVfTm90U3VwcG9ydGVkRXJyb3IpOwogCi0gICAgLyogV2UganVzdCBuZWVkICJzb21ldGhpbmciIHVuaXF1ZSBmb3IgcHlzcWxpdGVfT3B0aW1pemVkVW5pY29kZS4gSXQgZG9lcyBub3QgcmVhbGx5Ci0gICAgICogbmVlZCB0byBiZSBhIHN0cmluZyBzdWJjbGFzcy4gSnVzdCBhbnl0aGluZyB0aGF0IGNhbiBhY3QgYXMgYSBzcGVjaWFsCi0gICAgICogbWFya2VyIGZvciB1cy4gU28gSSBwdWxsZWQgUHlDZWxsX1R5cGUgb3V0IG9mIG15IG1hZ2ljIGhhdC4KLSAgICAgKi8KLSAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikmUHlDZWxsX1R5cGUpOwotICAgIHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUgPSAoUHlPYmplY3QqKSZQeUNlbGxfVHlwZTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiT3B0aW1pemVkVW5pY29kZSIsIHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUpOworICAgIC8qIEluIFB5dGhvbiAyLngsIHNldHRpbmcgQ29ubmVjdGlvbi50ZXh0X2ZhY3RvcnkgdG8KKyAgICAgICBPcHRpbWl6ZWRVbmljb2RlIGNhdXNlZCBVbmljb2RlIG9iamVjdHMgdG8gYmUgcmV0dXJuZWQgZm9yCisgICAgICAgbm9uLUFTQ0lJIGRhdGEgYW5kIGJ5dGVzdHJpbmdzIHRvIGJlIHJldHVybmVkIGZvciBBU0NJSSBkYXRhLgorICAgICAgIE5vdyBPcHRpbWl6ZWRVbmljb2RlIGlzIGFuIGFsaWFzIGZvciBzdHIsIHNvIGl0IGhhcyBubworICAgICAgIGVmZmVjdC4gKi8KKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJPcHRpbWl6ZWRVbmljb2RlIiwgKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpOwogCiAgICAgLyogU2V0IGludGVnZXIgY29uc3RhbnRzICovCiAgICAgZm9yIChpID0gMDsgX2ludF9jb25zdGFudHNbaV0uY29uc3RhbnRfbmFtZSAhPSAwOyBpKyspIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuaCBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuaAppbmRleCAwZWRkYjY3Li5iNTE3MjRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5oCkBAIC0zOCw4ICszOCw2IEBACiBleHRlcm4gUHlPYmplY3QqIHB5c3FsaXRlX0RhdGFFcnJvcjsKIGV4dGVybiBQeU9iamVjdCogcHlzcWxpdGVfTm90U3VwcG9ydGVkRXJyb3I7CiAKLWV4dGVybiBQeU9iamVjdCogcHlzcWxpdGVfT3B0aW1pemVkVW5pY29kZTsKLQogLyogdGhlIGZ1bmN0aW9ucyB0aW1lLnRpbWUoKSBhbmQgdGltZS5zbGVlcCgpICovCiBleHRlcm4gUHlPYmplY3QqIHRpbWVfdGltZTsKIGV4dGVybiBQeU9iamVjdCogdGltZV9zbGVlcDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9yb3cuYyBiL01vZHVsZXMvX3NxbGl0ZS9yb3cuYwppbmRleCAzZDQ0MDk0Li5iNTA2NThjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvcm93LmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCkBAIC0xNzMsMTAgKzE3Myw5IEBACiAKIHN0YXRpYyBQeU9iamVjdCogcHlzcWxpdGVfcm93X3JpY2hjb21wYXJlKHB5c3FsaXRlX1JvdyAqc2VsZiwgUHlPYmplY3QgKl9vdGhlciwgaW50IG9waWQpCiB7Ci0gICAgaWYgKG9waWQgIT0gUHlfRVEgJiYgb3BpZCAhPSBQeV9ORSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmIChvcGlkICE9IFB5X0VRICYmIG9waWQgIT0gUHlfTkUpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKwogICAgIGlmIChQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUoX290aGVyKSwgJnB5c3FsaXRlX1Jvd1R5cGUpKSB7CiAgICAgICAgIHB5c3FsaXRlX1JvdyAqb3RoZXIgPSAocHlzcWxpdGVfUm93ICopX290aGVyOwogICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlPYmplY3RfUmljaENvbXBhcmUoc2VsZi0+ZGVzY3JpcHRpb24sIG90aGVyLT5kZXNjcmlwdGlvbiwgb3BpZCk7CkBAIC0xODYsOCArMTg1LDcgQEAKICAgICAgICAgICAgIHJldHVybiBQeU9iamVjdF9SaWNoQ29tcGFyZShzZWxmLT5kYXRhLCBvdGhlci0+ZGF0YSwgb3BpZCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBQeU1hcHBpbmdNZXRob2RzIHB5c3FsaXRlX3Jvd19hc19tYXBwaW5nID0gewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCmluZGV4IDgwYmNjMzguLjk4ODQ4NjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKQEAgLTg3LDcgKzg3LDcgQEAKICAgICByZXR1cm4gcmM7CiB9CiAKLWludCBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBpbnQgcG9zLCBQeU9iamVjdCogcGFyYW1ldGVyLCBpbnQgYWxsb3dfOGJpdF9jaGFycykKK2ludCBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBpbnQgcG9zLCBQeU9iamVjdCogcGFyYW1ldGVyKQogewogICAgIGludCByYyA9IFNRTElURV9PSzsKICAgICBQWV9MT05HX0xPTkcgbG9uZ2xvbmd2YWw7CkBAIC0xNjYsNyArMTY2LDcgQEAKICAgICB9CiB9CiAKLXZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVycyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIFB5T2JqZWN0KiBwYXJhbWV0ZXJzLCBpbnQgYWxsb3dfOGJpdF9jaGFycykKK3ZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVycyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIFB5T2JqZWN0KiBwYXJhbWV0ZXJzKQogewogICAgIFB5T2JqZWN0KiBjdXJyZW50X3BhcmFtOwogICAgIFB5T2JqZWN0KiBhZGFwdGVkOwpAQCAtMjIwLDcgKzIyMCw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcihzZWxmLCBpICsgMSwgYWRhcHRlZCwgYWxsb3dfOGJpdF9jaGFycyk7CisgICAgICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcihzZWxmLCBpICsgMSwgYWRhcHRlZCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYWRhcHRlZCk7CiAKICAgICAgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfT0spIHsKQEAgLTI2NSw3ICsyNjUsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIoc2VsZiwgaSwgYWRhcHRlZCwgYWxsb3dfOGJpdF9jaGFycyk7CisgICAgICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcihzZWxmLCBpLCBhZGFwdGVkKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihhZGFwdGVkKTsKIAogICAgICAgICAgICAgaWYgKHJjICE9IFNRTElURV9PSykgewpAQCAtMzY5LDExICszNjksOSBAQAogCiB2b2lkIHB5c3FsaXRlX3N0YXRlbWVudF9kZWFsbG9jKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZikKIHsKLSAgICBpbnQgcmM7Ci0KICAgICBpZiAoc2VsZi0+c3QpIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByYyA9IHNxbGl0ZTNfZmluYWxpemUoc2VsZi0+c3QpOworICAgICAgICBzcWxpdGUzX2ZpbmFsaXplKHNlbGYtPnN0KTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaCBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaAppbmRleCBlNWRhNDJlLi40NjgxNDQzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCkBAIC00Niw4ICs0Niw4IEBACiBpbnQgcHlzcWxpdGVfc3RhdGVtZW50X2NyZWF0ZShweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIHB5c3FsaXRlX0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIFB5T2JqZWN0KiBzcWwpOwogdm9pZCBweXNxbGl0ZV9zdGF0ZW1lbnRfZGVhbGxvYyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYpOwogCi1pbnQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgaW50IHBvcywgUHlPYmplY3QqIHBhcmFtZXRlciwgaW50IGFsbG93XzhiaXRfY2hhcnMpOwotdm9pZCBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXJzKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgUHlPYmplY3QqIHBhcmFtZXRlcnMsIGludCBhbGxvd184Yml0X2NoYXJzKTsKK2ludCBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBpbnQgcG9zLCBQeU9iamVjdCogcGFyYW1ldGVyKTsKK3ZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVycyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIFB5T2JqZWN0KiBwYXJhbWV0ZXJzKTsKIAogaW50IHB5c3FsaXRlX3N0YXRlbWVudF9yZWNvbXBpbGUocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBQeU9iamVjdCogcGFyYW1ldGVycyk7CiBpbnQgcHlzcWxpdGVfc3RhdGVtZW50X2ZpbmFsaXplKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcmUuYyBiL01vZHVsZXMvX3NyZS5jCmluZGV4IDQ3MmI1YTMuLmNiMWY3OTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NyZS5jCisrKyBiL01vZHVsZXMvX3NyZS5jCkBAIC0xNjMsMjEgKzE2MywxNyBAQAogCiAvKiB1bmljb2RlLXNwZWNpZmljIGNoYXJhY3RlciBwcmVkaWNhdGVzICovCiAKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKLQotI2RlZmluZSBTUkVfVU5JX0lTX0RJR0lUKGNoKSBQeV9VTklDT0RFX0lTREVDSU1BTCgoUHlfVU5JQ09ERSkoY2gpKQotI2RlZmluZSBTUkVfVU5JX0lTX1NQQUNFKGNoKSBQeV9VTklDT0RFX0lTU1BBQ0UoKFB5X1VOSUNPREUpKGNoKSkKLSNkZWZpbmUgU1JFX1VOSV9JU19MSU5FQlJFQUsoY2gpIFB5X1VOSUNPREVfSVNMSU5FQlJFQUsoKFB5X1VOSUNPREUpKGNoKSkKLSNkZWZpbmUgU1JFX1VOSV9JU19BTE5VTShjaCkgUHlfVU5JQ09ERV9JU0FMTlVNKChQeV9VTklDT0RFKShjaCkpCi0jZGVmaW5lIFNSRV9VTklfSVNfV09SRChjaCkgKFNSRV9VTklfSVNfQUxOVU0oKGNoKSkgfHwgKGNoKSA9PSAnXycpCisjZGVmaW5lIFNSRV9VTklfSVNfRElHSVQoY2gpIFB5X1VOSUNPREVfSVNERUNJTUFMKGNoKQorI2RlZmluZSBTUkVfVU5JX0lTX1NQQUNFKGNoKSBQeV9VTklDT0RFX0lTU1BBQ0UoY2gpCisjZGVmaW5lIFNSRV9VTklfSVNfTElORUJSRUFLKGNoKSBQeV9VTklDT0RFX0lTTElORUJSRUFLKGNoKQorI2RlZmluZSBTUkVfVU5JX0lTX0FMTlVNKGNoKSBQeV9VTklDT0RFX0lTQUxOVU0oY2gpCisjZGVmaW5lIFNSRV9VTklfSVNfV09SRChjaCkgKFNSRV9VTklfSVNfQUxOVU0oY2gpIHx8IChjaCkgPT0gJ18nKQogCiBzdGF0aWMgdW5zaWduZWQgaW50IHNyZV9sb3dlcl91bmljb2RlKHVuc2lnbmVkIGludCBjaCkKIHsKLSAgICByZXR1cm4gKHVuc2lnbmVkIGludCkgUHlfVU5JQ09ERV9UT0xPV0VSKChQeV9VTklDT0RFKShjaCkpOworICAgIHJldHVybiAodW5zaWduZWQgaW50KSBQeV9VTklDT0RFX1RPTE9XRVIoY2gpOwogfQogCi0jZW5kaWYKLQogTE9DQUwoaW50KQogc3JlX2NhdGVnb3J5KFNSRV9DT0RFIGNhdGVnb3J5LCB1bnNpZ25lZCBpbnQgY2gpCiB7CkBAIC0yMDUsNyArMjAxLDYgQEAKICAgICBjYXNlIFNSRV9DQVRFR09SWV9MT0NfTk9UX1dPUkQ6CiAgICAgICAgIHJldHVybiAhU1JFX0xPQ19JU19XT1JEKGNoKTsKIAotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9ESUdJVDoKICAgICAgICAgcmV0dXJuIFNSRV9VTklfSVNfRElHSVQoY2gpOwogICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfRElHSVQ6CkBAIC0yMjIsMjQgKzIxNyw2IEBACiAgICAgICAgIHJldHVybiBTUkVfVU5JX0lTX0xJTkVCUkVBSyhjaCk7CiAgICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX05PVF9MSU5FQlJFQUs6CiAgICAgICAgIHJldHVybiAhU1JFX1VOSV9JU19MSU5FQlJFQUsoY2gpOwotI2Vsc2UKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfRElHSVQ6Ci0gICAgICAgIHJldHVybiBTUkVfSVNfRElHSVQoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfRElHSVQ6Ci0gICAgICAgIHJldHVybiAhU1JFX0lTX0RJR0lUKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfU1BBQ0U6Ci0gICAgICAgIHJldHVybiBTUkVfSVNfU1BBQ0UoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfU1BBQ0U6Ci0gICAgICAgIHJldHVybiAhU1JFX0lTX1NQQUNFKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfV09SRDoKLSAgICAgICAgcmV0dXJuIFNSRV9MT0NfSVNfV09SRChjaCk7Ci0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX05PVF9XT1JEOgotICAgICAgICByZXR1cm4gIVNSRV9MT0NfSVNfV09SRChjaCk7Ci0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX0xJTkVCUkVBSzoKLSAgICAgICAgcmV0dXJuIFNSRV9JU19MSU5FQlJFQUsoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfTElORUJSRUFLOgotICAgICAgICByZXR1cm4gIVNSRV9JU19MSU5FQlJFQUsoY2gpOwotI2VuZGlmCiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtMjgwLDYgKzI1Nyw3IEBACiAvKiBnZW5lcmF0ZSA4LWJpdCB2ZXJzaW9uICovCiAKICNkZWZpbmUgU1JFX0NIQVIgdW5zaWduZWQgY2hhcgorI2RlZmluZSBTUkVfQ0hBUkdFVChzdGF0ZSwgYnVmLCBpbmRleCkgKCh1bnNpZ25lZCBjaGFyKilidWYpW2luZGV4XQogI2RlZmluZSBTUkVfQVQgc3JlX2F0CiAjZGVmaW5lIFNSRV9DT1VOVCBzcmVfY291bnQKICNkZWZpbmUgU1JFX0NIQVJTRVQgc3JlX2NoYXJzZXQKQEAgLTI4NywxNSArMjY1LDExIEBACiAjZGVmaW5lIFNSRV9NQVRDSCBzcmVfbWF0Y2gKICNkZWZpbmUgU1JFX01BVENIX0NPTlRFWFQgc3JlX21hdGNoX2NvbnRleHQKICNkZWZpbmUgU1JFX1NFQVJDSCBzcmVfc2VhcmNoCi0jZGVmaW5lIFNSRV9MSVRFUkFMX1RFTVBMQVRFIHNyZV9saXRlcmFsX3RlbXBsYXRlCi0KLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKIAogI2RlZmluZSBTUkVfUkVDVVJTSVZFCiAjaW5jbHVkZSAiX3NyZS5jIgogI3VuZGVmIFNSRV9SRUNVUlNJVkUKIAotI3VuZGVmIFNSRV9MSVRFUkFMX1RFTVBMQVRFCiAjdW5kZWYgU1JFX1NFQVJDSAogI3VuZGVmIFNSRV9NQVRDSAogI3VuZGVmIFNSRV9NQVRDSF9DT05URVhUCkBAIC0zMDQsMTAgKzI3OCwxNSBAQAogI3VuZGVmIFNSRV9DT1VOVAogI3VuZGVmIFNSRV9BVAogI3VuZGVmIFNSRV9DSEFSCisjdW5kZWYgU1JFX0NIQVJHRVQKIAotLyogZ2VuZXJhdGUgMTYtYml0IHVuaWNvZGUgdmVyc2lvbiAqLworLyogZ2VuZXJhdGUgOC8xNi8zMi1iaXQgdW5pY29kZSB2ZXJzaW9uICovCiAKLSNkZWZpbmUgU1JFX0NIQVIgUHlfVU5JQ09ERQorI2RlZmluZSBTUkVfQ0hBUiB2b2lkCisjZGVmaW5lIFNSRV9DSEFSR0VUKHN0YXRlLCBidWYsIGluZGV4KSBcCisgICAgKChzdGF0ZS0+Y2hhcnNpemU9PTEpID8gKChQeV9VQ1MxKilidWYpW2luZGV4XSA6IFwKKyAgICAgKHN0YXRlLT5jaGFyc2l6ZT09MikgPyAoKFB5X1VDUzIqKWJ1ZilbaW5kZXhdIDogXAorICAgICAoKFB5X1VDUzQqKWJ1ZilbaW5kZXhdKQogI2RlZmluZSBTUkVfQVQgc3JlX3VhdAogI2RlZmluZSBTUkVfQ09VTlQgc3JlX3Vjb3VudAogI2RlZmluZSBTUkVfQ0hBUlNFVCBzcmVfdWNoYXJzZXQKQEAgLTMxNSw4ICsyOTQsNiBAQAogI2RlZmluZSBTUkVfTUFUQ0ggc3JlX3VtYXRjaAogI2RlZmluZSBTUkVfTUFUQ0hfQ09OVEVYVCBzcmVfdW1hdGNoX2NvbnRleHQKICNkZWZpbmUgU1JFX1NFQVJDSCBzcmVfdXNlYXJjaAotI2RlZmluZSBTUkVfTElURVJBTF9URU1QTEFURSBzcmVfdWxpdGVyYWxfdGVtcGxhdGUKLSNlbmRpZgogCiAjZW5kaWYgLyogU1JFX1JFQ1VSU0lWRSAqLwogCkBAIC0zMjcsNyArMzA0LDcgQEAKICAgIHNldHRpbmdzICovCiAKIExPQ0FMKGludCkKLVNSRV9BVChTUkVfU1RBVEUqIHN0YXRlLCBTUkVfQ0hBUiogcHRyLCBTUkVfQ09ERSBhdCkKK1NSRV9BVChTUkVfU1RBVEUqIHN0YXRlLCBjaGFyKiBwdHIsIFNSRV9DT0RFIGF0KQogewogICAgIC8qIGNoZWNrIGlmIHBvaW50ZXIgaXMgYXQgZ2l2ZW4gcG9zaXRpb24gKi8KIApAQCAtMzQxLDE2ICszMTgsMTYgQEAKIAogICAgIGNhc2UgU1JFX0FUX0JFR0lOTklOR19MSU5FOgogICAgICAgICByZXR1cm4gKCh2b2lkKikgcHRyID09IHN0YXRlLT5iZWdpbm5pbmcgfHwKLSAgICAgICAgICAgICAgICBTUkVfSVNfTElORUJSRUFLKChpbnQpIHB0clstMV0pKTsKKyAgICAgICAgICAgICAgICBTUkVfSVNfTElORUJSRUFLKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkpOwogCiAgICAgY2FzZSBTUkVfQVRfRU5EOgotICAgICAgICByZXR1cm4gKCgodm9pZCopIChwdHIrMSkgPT0gc3RhdGUtPmVuZCAmJgotICAgICAgICAgICAgICAgICBTUkVfSVNfTElORUJSRUFLKChpbnQpIHB0clswXSkpIHx8CisgICAgICAgIHJldHVybiAoKCh2b2lkKikgKHB0citzdGF0ZS0+Y2hhcnNpemUpID09IHN0YXRlLT5lbmQgJiYKKyAgICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkpIHx8CiAgICAgICAgICAgICAgICAgKCh2b2lkKikgcHRyID09IHN0YXRlLT5lbmQpKTsKIAogICAgIGNhc2UgU1JFX0FUX0VORF9MSU5FOgogICAgICAgICByZXR1cm4gKCh2b2lkKikgcHRyID09IHN0YXRlLT5lbmQgfHwKLSAgICAgICAgICAgICAgICBTUkVfSVNfTElORUJSRUFLKChpbnQpIHB0clswXSkpOworICAgICAgICAgICAgICAgIFNSRV9JU19MSU5FQlJFQUsoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpKTsKIAogICAgIGNhc2UgU1JFX0FUX0VORF9TVFJJTkc6CiAgICAgICAgIHJldHVybiAoKHZvaWQqKSBwdHIgPT0gc3RhdGUtPmVuZCk7CkBAIC0zNTksNTcgKzMzNiw1NSBAQAogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgLTEpKSA6IDA7CiAgICAgICAgIHRoaXNwID0gKCh2b2lkKikgcHRyIDwgc3RhdGUtPmVuZCkgPwotICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgIT0gdGhhdHA7CiAKICAgICBjYXNlIFNSRV9BVF9OT05fQk9VTkRBUlk6CiAgICAgICAgIGlmIChzdGF0ZS0+YmVnaW5uaW5nID09IHN0YXRlLT5lbmQpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgdGhhdHAgPSAoKHZvaWQqKSBwdHIgPiBzdGF0ZS0+YmVnaW5uaW5nKSA/Ci0gICAgICAgICAgICBTUkVfSVNfV09SRCgoaW50KSBwdHJbLTFdKSA6IDA7CisgICAgICAgICAgICBTUkVfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpIDogMDsKICAgICAgICAgdGhpc3AgPSAoKHZvaWQqKSBwdHIgPCBzdGF0ZS0+ZW5kKSA/Ci0gICAgICAgICAgICBTUkVfSVNfV09SRCgoaW50KSBwdHJbMF0pIDogMDsKKyAgICAgICAgICAgIFNSRV9JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSA6IDA7CiAgICAgICAgIHJldHVybiB0aGlzcCA9PSB0aGF0cDsKIAogICAgIGNhc2UgU1JFX0FUX0xPQ19CT1VOREFSWToKICAgICAgICAgaWYgKHN0YXRlLT5iZWdpbm5pbmcgPT0gc3RhdGUtPmVuZCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB0aGF0cCA9ICgodm9pZCopIHB0ciA+IHN0YXRlLT5iZWdpbm5pbmcpID8KLSAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBwdHJbLTFdKSA6IDA7CisgICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgLTEpKSA6IDA7CiAgICAgICAgIHRoaXNwID0gKCh2b2lkKikgcHRyIDwgc3RhdGUtPmVuZCkgPwotICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIHB0clswXSkgOiAwOworICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSA6IDA7CiAgICAgICAgIHJldHVybiB0aGlzcCAhPSB0aGF0cDsKIAogICAgIGNhc2UgU1JFX0FUX0xPQ19OT05fQk9VTkRBUlk6CiAgICAgICAgIGlmIChzdGF0ZS0+YmVnaW5uaW5nID09IHN0YXRlLT5lbmQpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgdGhhdHAgPSAoKHZvaWQqKSBwdHIgPiBzdGF0ZS0+YmVnaW5uaW5nKSA/Ci0gICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkgOiAwOwogICAgICAgICB0aGlzcCA9ICgodm9pZCopIHB0ciA8IHN0YXRlLT5lbmQpID8KLSAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBwdHJbMF0pIDogMDsKKyAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgPT0gdGhhdHA7CiAKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICBjYXNlIFNSRV9BVF9VTklfQk9VTkRBUlk6CiAgICAgICAgIGlmIChzdGF0ZS0+YmVnaW5uaW5nID09IHN0YXRlLT5lbmQpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgdGhhdHAgPSAoKHZvaWQqKSBwdHIgPiBzdGF0ZS0+YmVnaW5uaW5nKSA/Ci0gICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkgOiAwOwogICAgICAgICB0aGlzcCA9ICgodm9pZCopIHB0ciA8IHN0YXRlLT5lbmQpID8KLSAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBwdHJbMF0pIDogMDsKKyAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgIT0gdGhhdHA7CiAKICAgICBjYXNlIFNSRV9BVF9VTklfTk9OX0JPVU5EQVJZOgogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIHB0clstMV0pIDogMDsKKyAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpIDogMDsKICAgICAgICAgdGhpc3AgPSAoKHZvaWQqKSBwdHIgPCBzdGF0ZS0+ZW5kKSA/Ci0gICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpIDogMDsKICAgICAgICAgcmV0dXJuIHRoaXNwID09IHRoYXRwOwotI2VuZGlmCiAKICAgICB9CiAKQEAgLTQ3Niw3ICs0NTEsNyBAQAogICAgICAgICAgICAgY291bnQgPSAqKHNldCsrKTsKIAogICAgICAgICAgICAgaWYgKHNpemVvZihTUkVfQ09ERSkgPT0gMikgewotICAgICAgICAgICAgICAgIGJsb2NrID0gKCh1bnNpZ25lZCBjaGFyKilzZXQpW2NoID4+IDhdOworICAgICAgICAgICAgICAgIGJsb2NrID0gKChjaGFyKilzZXQpW2NoID4+IDhdOwogICAgICAgICAgICAgICAgIHNldCArPSAxMjg7CiAgICAgICAgICAgICAgICAgaWYgKHNldFtibG9jayoxNiArICgoY2ggJiAyNTUpPj40KV0gJiAoMSA8PCAoY2ggJiAxNSkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2s7CkBAIC00ODYsNyArNDYxLDcgQEAKICAgICAgICAgICAgICAgICAvKiAhKGMgJiB+TikgPT0gKGMgPCBOKzEpIGZvciBhbnkgdW5zaWduZWQgYywgdGhpcyBhdm9pZHMKICAgICAgICAgICAgICAgICAgKiB3YXJuaW5ncyB3aGVuIGMncyB0eXBlIHN1cHBvcnRzIG9ubHkgbnVtYmVycyA8IE4rMSAqLwogICAgICAgICAgICAgICAgIGlmICghKGNoICYgfjY1NTM1KSkKLSAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSAoKHVuc2lnbmVkIGNoYXIqKXNldClbY2ggPj4gOF07CisgICAgICAgICAgICAgICAgICAgIGJsb2NrID0gKChjaGFyKilzZXQpW2NoID4+IDhdOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSAtMTsKICAgICAgICAgICAgICAgICBzZXQgKz0gNjQ7CkBAIC01MTIsMjggKzQ4NywyOSBAQAogU1JFX0NPVU5UKFNSRV9TVEFURSogc3RhdGUsIFNSRV9DT0RFKiBwYXR0ZXJuLCBQeV9zc2l6ZV90IG1heGNvdW50KQogewogICAgIFNSRV9DT0RFIGNocjsKLSAgICBTUkVfQ0hBUiogcHRyID0gKFNSRV9DSEFSICopc3RhdGUtPnB0cjsKLSAgICBTUkVfQ0hBUiogZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICBjaGFyKiBwdHIgPSAoY2hhciAqKXN0YXRlLT5wdHI7CisgICAgY2hhciogZW5kID0gKGNoYXIgKilzdGF0ZS0+ZW5kOwogICAgIFB5X3NzaXplX3QgaTsKIAogICAgIC8qIGFkanVzdCBlbmQgKi8KICAgICBpZiAobWF4Y291bnQgPCBlbmQgLSBwdHIgJiYgbWF4Y291bnQgIT0gNjU1MzUpCi0gICAgICAgIGVuZCA9IHB0ciArIG1heGNvdW50OworICAgICAgICBlbmQgPSBwdHIgKyBtYXhjb3VudCpzdGF0ZS0+Y2hhcnNpemU7CiAKICAgICBzd2l0Y2ggKHBhdHRlcm5bMF0pIHsKIAogICAgIGNhc2UgU1JFX09QX0lOOgogICAgICAgICAvKiByZXBlYXRlZCBzZXQgKi8KICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgSU5cbiIsIHBhdHRlcm4sIHB0cikpOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIFNSRV9DSEFSU0VUKHBhdHRlcm4gKyAyLCAqcHRyKSkKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmCisgICAgICAgICAgICAgICBTUkVfQ0hBUlNFVChwYXR0ZXJuICsgMiwgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpKQorICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNSRV9PUF9BTlk6CiAgICAgICAgIC8qIHJlcGVhdGVkIGRvdCB3aWxkY2FyZC4gKi8KICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgQU5ZXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAhU1JFX0lTX0xJTkVCUkVBSygqcHRyKSkKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICFTUkVfSVNfTElORUJSRUFLKFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSkKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTUkVfT1BfQU5ZX0FMTDoKQEAgLTU0NywzOCArNTIzLDM4IEBACiAgICAgICAgIC8qIHJlcGVhdGVkIGxpdGVyYWwgKi8KICAgICAgICAgY2hyID0gcGF0dGVyblsxXTsKICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgTElURVJBTCAlZFxuIiwgcGF0dGVybiwgcHRyLCBjaHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpICpwdHIgPT0gY2hyKQotICAgICAgICAgICAgcHRyKys7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSA9PSBjaHIpCisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU1JFX09QX0xJVEVSQUxfSUdOT1JFOgogICAgICAgICAvKiByZXBlYXRlZCBsaXRlcmFsICovCiAgICAgICAgIGNociA9IHBhdHRlcm5bMV07CiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIExJVEVSQUxfSUdOT1JFICVkXG4iLCBwYXR0ZXJuLCBwdHIsIGNocikpOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgc3RhdGUtPmxvd2VyKCpwdHIpID09IGNocikKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgc3RhdGUtPmxvd2VyKFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSA9PSBjaHIpCisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU1JFX09QX05PVF9MSVRFUkFMOgogICAgICAgICAvKiByZXBlYXRlZCBub24tbGl0ZXJhbCAqLwogICAgICAgICBjaHIgPSBwYXR0ZXJuWzFdOwogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCBOT1RfTElURVJBTCAlZFxuIiwgcGF0dGVybiwgcHRyLCBjaHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpICpwdHIgIT0gY2hyKQotICAgICAgICAgICAgcHRyKys7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSAhPSBjaHIpCisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU1JFX09QX05PVF9MSVRFUkFMX0lHTk9SRToKICAgICAgICAgLyogcmVwZWF0ZWQgbm9uLWxpdGVyYWwgKi8KICAgICAgICAgY2hyID0gcGF0dGVyblsxXTsKICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgTk9UX0xJVEVSQUxfSUdOT1JFICVkXG4iLCBwYXR0ZXJuLCBwdHIsIGNocikpOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgc3RhdGUtPmxvd2VyKCpwdHIpICE9IGNocikKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgc3RhdGUtPmxvd2VyKFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSAhPSBjaHIpCisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8qIHJlcGVhdGVkIHNpbmdsZSBjaGFyYWN0ZXIgcGF0dGVybiAqLwogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCBTVUJQQVRURVJOXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgd2hpbGUgKChTUkVfQ0hBUiopIHN0YXRlLT5wdHIgPCBlbmQpIHsKKyAgICAgICAgd2hpbGUgKChjaGFyKikgc3RhdGUtPnB0ciA8IGVuZCkgewogICAgICAgICAgICAgaSA9IFNSRV9NQVRDSChzdGF0ZSwgcGF0dGVybik7CiAgICAgICAgICAgICBpZiAoaSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CkBAIC01ODYsMTIgKzU2MiwxMiBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UICVkXG4iLCBwYXR0ZXJuLCBwdHIsCi0gICAgICAgICAgICAgICAoU1JFX0NIQVIqKSBzdGF0ZS0+cHRyIC0gcHRyKSk7Ci0gICAgICAgIHJldHVybiAoU1JFX0NIQVIqKSBzdGF0ZS0+cHRyIC0gcHRyOworICAgICAgICAgICAgICAgKChjaGFyKilzdGF0ZS0+cHRyIC0gcHRyKS9zdGF0ZS0+Y2hhcnNpemUpKTsKKyAgICAgICAgcmV0dXJuICgoY2hhciopc3RhdGUtPnB0ciAtIHB0cikvc3RhdGUtPmNoYXJzaXplOwogICAgIH0KIAotICAgIFRSQUNFKCgifCVwfCVwfENPVU5UICVkXG4iLCBwYXR0ZXJuLCBwdHIsIHB0ciAtIChTUkVfQ0hBUiopIHN0YXRlLT5wdHIpKTsKLSAgICByZXR1cm4gcHRyIC0gKFNSRV9DSEFSKikgc3RhdGUtPnB0cjsKKyAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCAlZFxuIiwgcGF0dGVybiwgcHRyLCAocHRyIC0gKGNoYXIqKSBzdGF0ZS0+cHRyKS9zdGF0ZS0+Y2hhcnNpemUpKTsKKyAgICByZXR1cm4gKHB0ciAtIChjaGFyKikgc3RhdGUtPnB0cikvc3RhdGUtPmNoYXJzaXplOwogfQogCiAjaWYgMCAvKiBub3QgdXNlZCBpbiB0aGlzIHJlbGVhc2UgKi8KQEAgLTYwMiw4ICs1NzgsOCBAQAogICAgICAgIHJldHVybnMgdGhlIG51bWJlciBvZiBTUkVfQ09ERSBvYmplY3RzIHRvIHNraXAgaWYgc3VjY2Vzc2Z1bCwgMAogICAgICAgIGlmIG5vIG1hdGNoICovCiAKLSAgICBTUkVfQ0hBUiogZW5kID0gc3RhdGUtPmVuZDsKLSAgICBTUkVfQ0hBUiogcHRyID0gc3RhdGUtPnB0cjsKKyAgICBjaGFyKiBlbmQgPSBzdGF0ZS0+ZW5kOworICAgIGNoYXIqIHB0ciA9IHN0YXRlLT5wdHI7CiAgICAgUHlfc3NpemVfdCBpOwogCiAgICAgLyogY2hlY2sgbWluaW1hbCBsZW5ndGggKi8KQEAgLTYxNCw3ICs1OTAsNyBAQAogICAgIGlmIChwYXR0ZXJuWzJdICYgU1JFX0lORk9fUFJFRklYICYmIHBhdHRlcm5bNV0gPiAxKSB7CiAgICAgICAgIC8qIDxsZW5ndGg+IDxza2lwPiA8cHJlZml4IGRhdGE+IDxvdmVybGFwIGRhdGE+ICovCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwYXR0ZXJuWzVdOyBpKyspCi0gICAgICAgICAgICBpZiAoKFNSRV9DT0RFKSBwdHJbaV0gIT0gcGF0dGVybls3ICsgaV0pCisgICAgICAgICAgICBpZiAoKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCBpKSAhPSBwYXR0ZXJuWzcgKyBpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIHBhdHRlcm5bMF0gKyAyICogcGF0dGVybls2XTsKICAgICB9CkBAIC03ODMsNyArNzU5LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeV9zc2l6ZV90IGxhc3RfY3R4X3BvczsKICAgICBQeV9zc2l6ZV90IGp1bXA7Ci0gICAgU1JFX0NIQVIqIHB0cjsKKyAgICBjaGFyKiBwdHI7CiAgICAgU1JFX0NPREUqIHBhdHRlcm47CiAgICAgUHlfc3NpemVfdCBjb3VudDsKICAgICBQeV9zc2l6ZV90IGxhc3RtYXJrOwpAQCAtNzk5LDcgKzc3NSw3IEBACiBMT0NBTChQeV9zc2l6ZV90KQogU1JFX01BVENIKFNSRV9TVEFURSogc3RhdGUsIFNSRV9DT0RFKiBwYXR0ZXJuKQogewotICAgIFNSRV9DSEFSKiBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOworICAgIGNoYXIqIGVuZCA9IChjaGFyKilzdGF0ZS0+ZW5kOwogICAgIFB5X3NzaXplX3QgYWxsb2NfcG9zLCBjdHhfcG9zID0gLTE7CiAgICAgUHlfc3NpemVfdCBpLCByZXQgPSAwOwogICAgIFB5X3NzaXplX3QganVtcDsKQEAgLTgxOCwxMiArNzk0LDEyIEBACiAKIGVudHJhbmNlOgogCi0gICAgY3R4LT5wdHIgPSAoU1JFX0NIQVIgKilzdGF0ZS0+cHRyOworICAgIGN0eC0+cHRyID0gKGNoYXIgKilzdGF0ZS0+cHRyOwogCiAgICAgaWYgKGN0eC0+cGF0dGVyblswXSA9PSBTUkVfT1BfSU5GTykgewogICAgICAgICAvKiBvcHRpbWl6YXRpb24gaW5mbyBibG9jayAqLwogICAgICAgICAvKiA8SU5GTz4gPDE9c2tpcD4gPDI9ZmxhZ3M+IDwzPW1pbj4gLi4uICovCi0gICAgICAgIGlmIChjdHgtPnBhdHRlcm5bM10gJiYgKGVuZCAtIGN0eC0+cHRyKSA8IGN0eC0+cGF0dGVyblszXSkgeworICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzNdICYmIChlbmQgLSBjdHgtPnB0cikvc3RhdGUtPmNoYXJzaXplIDwgY3R4LT5wYXR0ZXJuWzNdKSB7CiAgICAgICAgICAgICBUUkFDRSgoInJlamVjdCAoZ290ICVkIGNoYXJzLCBuZWVkICVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAoZW5kIC0gY3R4LT5wdHIpLCBjdHgtPnBhdHRlcm5bM10pKTsKICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwpAQCAtODY1LDEwICs4NDEsMTAgQEAKICAgICAgICAgICAgIC8qIDxMSVRFUkFMPiA8Y29kZT4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfExJVEVSQUwgJWRcbiIsIGN0eC0+cGF0dGVybiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciwgKmN0eC0+cGF0dGVybikpOwotICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAoU1JFX0NPREUpIGN0eC0+cHRyWzBdICE9IGN0eC0+cGF0dGVyblswXSkKKyAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApICE9IGN0eC0+cGF0dGVyblswXSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybisrOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX05PVF9MSVRFUkFMOgpAQCAtODc2LDEwICs4NTIsMTAgQEAKICAgICAgICAgICAgIC8qIDxOT1RfTElURVJBTD4gPGNvZGU+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxOT1RfTElURVJBTCAlZFxuIiwgY3R4LT5wYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLCAqY3R4LT5wYXR0ZXJuKSk7Ci0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8IChTUkVfQ09ERSkgY3R4LT5wdHJbMF0gPT0gY3R4LT5wYXR0ZXJuWzBdKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkgPT0gY3R4LT5wYXR0ZXJuWzBdKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuKys7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfU1VDQ0VTUzoKQEAgLTkwMiwxOSArODc4LDE5IEBACiAgICAgICAgICAgICAvKiA8Q0FURUdPUlk+IDxjb2RlPiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q0FURUdPUlkgJWRcbiIsIGN0eC0+cGF0dGVybiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciwgKmN0eC0+cGF0dGVybikpOwotICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAhc3JlX2NhdGVnb3J5KGN0eC0+cGF0dGVyblswXSwgY3R4LT5wdHJbMF0pKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAhc3JlX2NhdGVnb3J5KGN0eC0+cGF0dGVyblswXSwgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4rKzsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9BTlk6CiAgICAgICAgICAgICAvKiBtYXRjaCBhbnl0aGluZyAoZXhjZXB0IGEgbmV3bGluZSkgKi8KICAgICAgICAgICAgIC8qIDxBTlk+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxBTllcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKLSAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgU1JFX0lTX0xJTkVCUkVBSyhjdHgtPnB0clswXSkpCi0gICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgU1JFX0lTX0xJTkVCUkVBSyhTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9BTllfQUxMOgpAQCAtOTIzLDQ3ICs4OTksNDcgQEAKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfEFOWV9BTExcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfSU46CiAgICAgICAgICAgICAvKiBtYXRjaCBzZXQgbWVtYmVyIChvciBub25fbWVtYmVyKSAqLwogICAgICAgICAgICAgLyogPElOPiA8c2tpcD4gPHNldD4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfElOXG4iLCBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyKSk7Ci0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8ICFTUkVfQ0hBUlNFVChjdHgtPnBhdHRlcm4gKyAxLCAqY3R4LT5wdHIpKQotICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOworICAgICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgIVNSRV9DSEFSU0VUKGN0eC0+cGF0dGVybiArIDEsIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpKQorICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybiArPSBjdHgtPnBhdHRlcm5bMF07Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfTElURVJBTF9JR05PUkU6CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxMSVRFUkFMX0lHTk9SRSAlZFxuIiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyLCBjdHgtPnBhdHRlcm5bMF0pKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwKLSAgICAgICAgICAgICAgICBzdGF0ZS0+bG93ZXIoKmN0eC0+cHRyKSAhPSBzdGF0ZS0+bG93ZXIoKmN0eC0+cGF0dGVybikpCisgICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpICE9IHN0YXRlLT5sb3dlcigqY3R4LT5wYXR0ZXJuKSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybisrOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX05PVF9MSVRFUkFMX0lHTk9SRToKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfE5PVF9MSVRFUkFMX0lHTk9SRSAlZFxuIiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyLCAqY3R4LT5wYXR0ZXJuKSk7CiAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8Ci0gICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKCpjdHgtPnB0cikgPT0gc3RhdGUtPmxvd2VyKCpjdHgtPnBhdHRlcm4pKQorICAgICAgICAgICAgICAgIHN0YXRlLT5sb3dlcihTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSA9PSBzdGF0ZS0+bG93ZXIoKmN0eC0+cGF0dGVybikpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4rKzsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9JTl9JR05PUkU6CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxJTl9JR05PUkVcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQKICAgICAgICAgICAgICAgICB8fCAhU1JFX0NIQVJTRVQoY3R4LT5wYXR0ZXJuKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSlzdGF0ZS0+bG93ZXIoKmN0eC0+cHRyKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSlzdGF0ZS0+bG93ZXIoU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkpKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuICs9IGN0eC0+cGF0dGVyblswXTsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9KVU1QOgpAQCAtOTg2LDExICs5NjIsMTEgQEAKICAgICAgICAgICAgIGZvciAoOyBjdHgtPnBhdHRlcm5bMF07IGN0eC0+cGF0dGVybiArPSBjdHgtPnBhdHRlcm5bMF0pIHsKICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzFdID09IFNSRV9PUF9MSVRFUkFMICYmCiAgICAgICAgICAgICAgICAgICAgIChjdHgtPnB0ciA+PSBlbmQgfHwKLSAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSkgKmN0eC0+cHRyICE9IGN0eC0+cGF0dGVyblsyXSkpCisgICAgICAgICAgICAgICAgICAgICAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkgIT0gY3R4LT5wYXR0ZXJuWzJdKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cGF0dGVyblsxXSA9PSBTUkVfT1BfSU4gJiYKICAgICAgICAgICAgICAgICAgICAgKGN0eC0+cHRyID49IGVuZCB8fAotICAgICAgICAgICAgICAgICAgICAgIVNSRV9DSEFSU0VUKGN0eC0+cGF0dGVybiArIDMsIChTUkVfQ09ERSkgKmN0eC0+cHRyKSkpCisgICAgICAgICAgICAgICAgICAgICAhU1JFX0NIQVJTRVQoY3R4LT5wYXR0ZXJuICsgMywgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0cjsKICAgICAgICAgICAgICAgICBET19KVU1QKEpVTVBfQlJBTkNILCBqdW1wX2JyYW5jaCwgY3R4LT5wYXR0ZXJuKzEpOwpAQCAtMTAyMSw3ICs5OTcsNyBAQAogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8UkVQRUFUX09ORSAlZCAlZFxuIiwgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0ciwKICAgICAgICAgICAgICAgICAgICBjdHgtPnBhdHRlcm5bMV0sIGN0eC0+cGF0dGVyblsyXSkpOwogCi0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgKyBjdHgtPnBhdHRlcm5bMV0gPiBlbmQpCisgICAgICAgICAgICBpZiAoY3R4LT5wdHIgKyBzdGF0ZS0+Y2hhcnNpemUgKiBjdHgtPnBhdHRlcm5bMV0gPiBlbmQpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7IC8qIGNhbm5vdCBtYXRjaCAqLwogCiAgICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHI7CkBAIC0xMDMwLDcgKzEwMDYsNyBAQAogICAgICAgICAgICAgUkVUVVJOX09OX0VSUk9SKHJldCk7CiAgICAgICAgICAgICBEQVRBX0xPT0tVUF9BVChTUkVfTUFUQ0hfQ09OVEVYVCwgY3R4LCBjdHhfcG9zKTsKICAgICAgICAgICAgIGN0eC0+Y291bnQgPSByZXQ7Ci0gICAgICAgICAgICBjdHgtPnB0ciArPSBjdHgtPmNvdW50OworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplICogY3R4LT5jb3VudDsKIAogICAgICAgICAgICAgLyogd2hlbiB3ZSBhcnJpdmUgaGVyZSwgY291bnQgY29udGFpbnMgdGhlIG51bWJlciBvZgogICAgICAgICAgICAgICAgbWF0Y2hlcywgYW5kIGN0eC0+cHRyIHBvaW50cyB0byB0aGUgdGFpbCBvZiB0aGUgdGFyZ2V0CkBAIC0xMDU0LDggKzEwMzAsOSBAQAogICAgICAgICAgICAgICAgIGN0eC0+dS5jaHIgPSBjdHgtPnBhdHRlcm5bY3R4LT5wYXR0ZXJuWzBdKzFdOwogICAgICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGN0eC0+Y291bnQgPj0gKFB5X3NzaXplX3QpIGN0eC0+cGF0dGVyblsxXSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC0+cHRyID49IGVuZCB8fCAqY3R4LT5wdHIgIT0gY3R4LT51LmNocikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4LT5wdHIgPj0gZW5kIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSAhPSBjdHgtPnUuY2hyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgLT0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5jb3VudC0tOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChjdHgtPmNvdW50IDwgKFB5X3NzaXplX3QpIGN0eC0+cGF0dGVyblsxXSkKQEAgLTEwNzAsNyArMTA0Nyw3IEBACiAKICAgICAgICAgICAgICAgICAgICAgTEFTVE1BUktfUkVTVE9SRSgpOwogCi0gICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLS07CisgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyIC09IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgY3R4LT5jb3VudC0tOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTA4NCw3ICsxMDYxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9PTl9FUlJPUihyZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX1NVQ0NFU1M7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHItLTsKKyAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgLT0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICBjdHgtPmNvdW50LS07CiAgICAgICAgICAgICAgICAgICAgIExBU1RNQVJLX1JFU1RPUkUoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTA0LDcgKzEwODEsNyBAQAogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8TUlOX1JFUEVBVF9PTkUgJWQgJWRcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIsCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wYXR0ZXJuWzFdLCBjdHgtPnBhdHRlcm5bMl0pKTsKIAotICAgICAgICAgICAgaWYgKGN0eC0+cHRyICsgY3R4LT5wYXR0ZXJuWzFdID4gZW5kKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyICsgc3RhdGUtPmNoYXJzaXplICogY3R4LT5wYXR0ZXJuWzFdID4gZW5kKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOyAvKiBjYW5ub3QgbWF0Y2ggKi8KIAogICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyOwpAQCAtMTEyMSw3ICsxMDk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICAgICAgLyogYWR2YW5jZSBwYXN0IG1pbmltdW0gbWF0Y2hlcyBvZiByZXBlYXQgKi8KICAgICAgICAgICAgICAgICBjdHgtPmNvdW50ID0gcmV0OwotICAgICAgICAgICAgICAgIGN0eC0+cHRyICs9IGN0eC0+Y291bnQ7CisgICAgICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplICogY3R4LT5jb3VudDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGN0eC0+cGF0dGVybltjdHgtPnBhdHRlcm5bMF1dID09IFNSRV9PUF9TVUNDRVNTKSB7CkBAIC0xMTQ4LDcgKzExMjUsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHJldCA9PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICBjdHgtPmNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgIExBU1RNQVJLX1JFU1RPUkUoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMzIwLDE0ICsxMjk3LDE2IEBACiAgICAgICAgICAgICAgICAgaWYgKGdyb3VwcmVmID49IHN0YXRlLT5sYXN0bWFyaykgewogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBTUkVfQ0hBUiogcCA9IChTUkVfQ0hBUiopIHN0YXRlLT5tYXJrW2dyb3VwcmVmXTsKLSAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVIqIGUgPSAoU1JFX0NIQVIqKSBzdGF0ZS0+bWFya1tncm91cHJlZisxXTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciogcCA9IChjaGFyKikgc3RhdGUtPm1hcmtbZ3JvdXByZWZdOworICAgICAgICAgICAgICAgICAgICBjaGFyKiBlID0gKGNoYXIqKSBzdGF0ZS0+bWFya1tncm91cHJlZisxXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFwIHx8ICFlIHx8IGUgPCBwKQogICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAqY3R4LT5wdHIgIT0gKnApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSAhPSBTUkVfQ0hBUkdFVChzdGF0ZSwgcCwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwKys7IGN0eC0+cHRyKys7CisgICAgICAgICAgICAgICAgICAgICAgICBwICs9IHN0YXRlLT5jaGFyc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEzNDQsMTUgKzEzMjMsMTYgQEAKICAgICAgICAgICAgICAgICBpZiAoZ3JvdXByZWYgPj0gc3RhdGUtPmxhc3RtYXJrKSB7CiAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFNSRV9DSEFSKiBwID0gKFNSRV9DSEFSKikgc3RhdGUtPm1hcmtbZ3JvdXByZWZdOwotICAgICAgICAgICAgICAgICAgICBTUkVfQ0hBUiogZSA9IChTUkVfQ0hBUiopIHN0YXRlLT5tYXJrW2dyb3VwcmVmKzFdOworICAgICAgICAgICAgICAgICAgICBjaGFyKiBwID0gKGNoYXIqKSBzdGF0ZS0+bWFya1tncm91cHJlZl07CisgICAgICAgICAgICAgICAgICAgIGNoYXIqIGUgPSAoY2hhciopIHN0YXRlLT5tYXJrW2dyb3VwcmVmKzFdOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXAgfHwgIWUgfHwgZSA8IHApCiAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHAgPCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKCpjdHgtPnB0cikgIT0gc3RhdGUtPmxvd2VyKCpwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bG93ZXIoU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkgIT0gc3RhdGUtPmxvd2VyKCpwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHArKzsgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEzODYsNyArMTM2Niw3IEBACiAgICAgICAgICAgICAvKiA8QVNTRVJUPiA8c2tpcD4gPGJhY2s+IDxwYXR0ZXJuPiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8QVNTRVJUICVkXG4iLCBjdHgtPnBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIsIGN0eC0+cGF0dGVyblsxXSkpOwotICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyIC0gY3R4LT5wYXR0ZXJuWzFdOworICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyIC0gc3RhdGUtPmNoYXJzaXplICogY3R4LT5wYXR0ZXJuWzFdOwogICAgICAgICAgICAgaWYgKHN0YXRlLT5wdHIgPCBzdGF0ZS0+YmVnaW5uaW5nKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgRE9fSlVNUChKVU1QX0FTU0VSVCwganVtcF9hc3NlcnQsIGN0eC0+cGF0dGVybisyKTsKQEAgLTEzOTksNyArMTM3OSw3IEBACiAgICAgICAgICAgICAvKiA8QVNTRVJUX05PVD4gPHNraXA+IDxiYWNrPiA8cGF0dGVybj4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfEFTU0VSVF9OT1QgJWRcbiIsIGN0eC0+cGF0dGVybiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciwgY3R4LT5wYXR0ZXJuWzFdKSk7Ci0gICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHIgLSBjdHgtPnBhdHRlcm5bMV07CisgICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHIgLSBzdGF0ZS0+Y2hhcnNpemUgKiBjdHgtPnBhdHRlcm5bMV07CiAgICAgICAgICAgICBpZiAoc3RhdGUtPnB0ciA+PSBzdGF0ZS0+YmVnaW5uaW5nKSB7CiAgICAgICAgICAgICAgICAgRE9fSlVNUChKVU1QX0FTU0VSVF9OT1QsIGp1bXBfYXNzZXJ0X25vdCwgY3R4LT5wYXR0ZXJuKzIpOwogICAgICAgICAgICAgICAgIGlmIChyZXQpIHsKQEAgLTE0ODEsOCArMTQ2MSw4IEBACiBMT0NBTChQeV9zc2l6ZV90KQogU1JFX1NFQVJDSChTUkVfU1RBVEUqIHN0YXRlLCBTUkVfQ09ERSogcGF0dGVybikKIHsKLSAgICBTUkVfQ0hBUiogcHRyID0gKFNSRV9DSEFSICopc3RhdGUtPnN0YXJ0OwotICAgIFNSRV9DSEFSKiBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOworICAgIGNoYXIqIHB0ciA9IChjaGFyKilzdGF0ZS0+c3RhcnQ7CisgICAgY2hhciogZW5kID0gKGNoYXIqKXN0YXRlLT5lbmQ7CiAgICAgUHlfc3NpemVfdCBzdGF0dXMgPSAwOwogICAgIFB5X3NzaXplX3QgcHJlZml4X2xlbiA9IDA7CiAgICAgUHlfc3NpemVfdCBwcmVmaXhfc2tpcCA9IDA7CkBAIC0xNTAwLDkgKzE0ODAsOSBAQAogICAgICAgICBpZiAocGF0dGVyblszXSA+IDEpIHsKICAgICAgICAgICAgIC8qIGFkanVzdCBlbmQgcG9pbnQgKGJ1dCBtYWtlIHN1cmUgd2UgbGVhdmUgYXQgbGVhc3Qgb25lCiAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgaW4gdGhlcmUsIHNvIGxpdGVyYWwgc2VhcmNoIHdpbGwgd29yaykgKi8KLSAgICAgICAgICAgIGVuZCAtPSBwYXR0ZXJuWzNdLTE7CisgICAgICAgICAgICBlbmQgLT0gKHBhdHRlcm5bM10tMSkgKiBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBpZiAoZW5kIDw9IHB0cikKLSAgICAgICAgICAgICAgICBlbmQgPSBwdHIrMTsKKyAgICAgICAgICAgICAgICBlbmQgPSBwdHIgKyBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19QUkVGSVgpIHsKQEAgLTE1MjgsMTAgKzE1MDgsMTAgQEAKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGtub3duIHByZWZpeC4gIHVzZSB0aGUgb3ZlcmxhcAogICAgICAgICAgICB0YWJsZSB0byBza2lwIGZvcndhcmQgYXMgZmFzdCBhcyB3ZSBwb3NzaWJseSBjYW4gKi8KICAgICAgICAgUHlfc3NpemVfdCBpID0gMDsKLSAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICAgICAgZW5kID0gKGNoYXIgKilzdGF0ZS0+ZW5kOwogICAgICAgICB3aGlsZSAocHRyIDwgZW5kKSB7CiAgICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAgaWYgKChTUkVfQ09ERSkgcHRyWzBdICE9IHByZWZpeFtpXSkgeworICAgICAgICAgICAgICAgIGlmICgoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApICE9IHByZWZpeFtpXSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIWkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMTU0MCw4ICsxNTIwLDggQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKCsraSA9PSBwcmVmaXhfbGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3VuZCBhIHBvdGVudGlhbCBtYXRjaCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIFNDQU5cbiIsIHBhdHRlcm4sIHB0cikpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gcHRyICsgMSAtIHByZWZpeF9sZW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+cHRyID0gcHRyICsgMSAtIHByZWZpeF9sZW4gKyBwcmVmaXhfc2tpcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHB0ciAtIChwcmVmaXhfbGVuIC0gMSkgKiBzdGF0ZS0+Y2hhcnNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+cHRyID0gcHRyIC0gKHByZWZpeF9sZW4gLSBwcmVmaXhfc2tpcCAtIDEpICogc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fTElURVJBTCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogd2UgZ290IGFsbCBvZiBpdCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gU1JFX01BVENIKHN0YXRlLCBwYXR0ZXJuICsgMipwcmVmaXhfc2tpcCk7CkBAIC0xNTUzLDcgKzE1MzMsNyBAQAogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTU2MywxNSArMTU0MywxNiBAQAogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgbGl0ZXJhbCBjaGFyYWN0ZXIuICB0aGlzIGlzIHVzZWQKICAgICAgICAgICAgZm9yIHNob3J0IHByZWZpeGVzLCBhbmQgaWYgZmFzdCBzZWFyY2ggaXMgZGlzYWJsZWQgKi8KICAgICAgICAgU1JFX0NPREUgY2hyID0gcGF0dGVyblsxXTsKLSAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICAgICAgZW5kID0gKGNoYXIqKXN0YXRlLT5lbmQ7CiAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBwdHJbMF0gIT0gY2hyKQotICAgICAgICAgICAgICAgIHB0cisrOworICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApICE9IGNocikKKyAgICAgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgaWYgKHB0ciA+PSBlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0ggTElURVJBTFxuIiwgcGF0dGVybiwgcHRyKSk7CiAgICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBwdHI7Ci0gICAgICAgICAgICBzdGF0ZS0+cHRyID0gKytwdHI7CisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOworICAgICAgICAgICAgc3RhdGUtPnB0ciA9IHB0cjsKICAgICAgICAgICAgIGlmIChmbGFncyAmIFNSRV9JTkZPX0xJVEVSQUwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHdlIGdvdCBhbGwgb2YgaXQgKi8KICAgICAgICAgICAgIHN0YXR1cyA9IFNSRV9NQVRDSChzdGF0ZSwgcGF0dGVybiArIDIpOwpAQCAtMTU4MCwxMCArMTU2MSwxMCBAQAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjaGFyc2V0KSB7CiAgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBjaGFyYWN0ZXIgZnJvbSBhIGtub3duIHNldCAqLwotICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOworICAgICAgICBlbmQgPSAoY2hhciopc3RhdGUtPmVuZDsKICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAhU1JFX0NIQVJTRVQoY2hhcnNldCwgcHRyWzBdKSkKLSAgICAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgIVNSRV9DSEFSU0VUKGNoYXJzZXQsIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSkKKyAgICAgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgaWYgKHB0ciA+PSBlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0ggQ0hBUlNFVFxuIiwgcGF0dGVybiwgcHRyKSk7CkBAIC0xNTkyLDEzICsxNTczLDE0IEBACiAgICAgICAgICAgICBzdGF0dXMgPSBTUkVfTUFUQ0goc3RhdGUsIHBhdHRlcm4pOwogICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIC8qIGdlbmVyYWwgY2FzZSAqLwogICAgICAgICB3aGlsZSAocHRyIDw9IGVuZCkgewogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHN0YXRlLT5wdHIgPSBwdHIrKzsKKyAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHN0YXRlLT5wdHIgPSBwdHI7CisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgc3RhdHVzID0gU1JFX01BVENIKHN0YXRlLCBwYXR0ZXJuKTsKICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE2MDcsMTYgKzE1ODksNiBAQAogICAgIHJldHVybiBzdGF0dXM7CiB9CiAKLUxPQ0FMKGludCkKLVNSRV9MSVRFUkFMX1RFTVBMQVRFKFNSRV9DSEFSKiBwdHIsIFB5X3NzaXplX3QgbGVuKQotewotICAgIC8qIGNoZWNrIGlmIGdpdmVuIHN0cmluZyBpcyBhIGxpdGVyYWwgdGVtcGxhdGUgKGkuZS4gbm8gZXNjYXBlcykgKi8KLSAgICB3aGlsZSAobGVuLS0gPiAwKQotICAgICAgICBpZiAoKnB0cisrID09ICdcXCcpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQogI2lmICFkZWZpbmVkKFNSRV9SRUNVUlNJVkUpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0xNjI0LDcgKzE1OTYsMjQgQEAKIAogLyogc2VlIHNyZS5oIGZvciBvYmplY3QgZGVjbGFyYXRpb25zICovCiBzdGF0aWMgUHlPYmplY3QqcGF0dGVybl9uZXdfbWF0Y2goUGF0dGVybk9iamVjdCosIFNSRV9TVEFURSosIGludCk7Ci1zdGF0aWMgUHlPYmplY3QqcGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QqLCBQeU9iamVjdCopOworc3RhdGljIFB5T2JqZWN0KnBhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiwgUHlPYmplY3QqLCBQeU9iamVjdCoga3cpOworCitzdGF0aWMgaW50CitzcmVfbGl0ZXJhbF90ZW1wbGF0ZShpbnQgY2hhcnNpemUsIGNoYXIqIHB0ciwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgLyogY2hlY2sgaWYgZ2l2ZW4gc3RyaW5nIGlzIGEgbGl0ZXJhbCB0ZW1wbGF0ZSAoaS5lLiBubyBlc2NhcGVzKSAqLworICAgIHN0cnVjdCB7CisgICAgICAgIGludCBjaGFyc2l6ZTsKKyAgICB9IHN0YXRlID0geworICAgICAgICBjaGFyc2l6ZQorICAgIH07CisgICAgd2hpbGUgKGxlbi0tID4gMCkgeworICAgICAgICBpZiAoU1JFX0NIQVJHRVQoKCZzdGF0ZSksIHB0ciwgMCkgPT0gJ1xcJykKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBwdHIgKz0gY2hhcnNpemU7CisgICAgfQorICAgIHJldHVybiAxOworfQogCiBzdGF0aWMgUHlPYmplY3QgKgogc3JlX2NvZGVzaXplKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqdW51c2VkKQpAQCAtMTY0MSwxMSArMTYzMCw3IEBACiAgICAgaWYgKGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFKQogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNyZV9sb3dlcl9sb2NhbGUoY2hhcmFjdGVyKSk7CiAgICAgaWYgKGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXJfdW5pY29kZShjaGFyYWN0ZXIpKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyX2xvY2FsZShjaGFyYWN0ZXIpKTsKLSNlbmRpZgogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyKGNoYXJhY3RlcikpOwogfQogCkBAIC0xNjY0LDcgKzE2NDksOSBAQAogfQogCiBzdGF0aWMgdm9pZCoKLWdldHN0cmluZyhQeU9iamVjdCogc3RyaW5nLCBQeV9zc2l6ZV90KiBwX2xlbmd0aCwgaW50KiBwX2NoYXJzaXplLCBQeV9idWZmZXIgKnZpZXcpCitnZXRzdHJpbmcoUHlPYmplY3QqIHN0cmluZywgUHlfc3NpemVfdCogcF9sZW5ndGgsCisgICAgICAgICAgaW50KiBwX2xvZ2ljYWxfY2hhcnNpemUsIGludCogcF9jaGFyc2l6ZSwKKyAgICAgICAgICBQeV9idWZmZXIgKnZpZXcpCiB7CiAgICAgLyogZ2l2ZW4gYSBweXRob24gb2JqZWN0LCByZXR1cm4gYSBkYXRhIHBvaW50ZXIsIGEgbGVuZ3RoIChpbgogICAgICAgIGNoYXJhY3RlcnMpLCBhbmQgYSBjaGFyYWN0ZXIgc2l6ZS4gIHJldHVybiBOVUxMIGlmIHRoZSBvYmplY3QKQEAgLTE2NzgsMTMgKzE2NjUsMTYgQEAKICAgICAvKiBVbmljb2RlIG9iamVjdHMgZG8gbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBBUEkuIFNvLCBnZXQgdGhlIGRhdGEKICAgICAgICBkaXJlY3RseSBpbnN0ZWFkLiAqLwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSkgewotICAgICAgICBwdHIgPSAodm9pZCAqKVB5VW5pY29kZV9BU19EQVRBKHN0cmluZyk7Ci0gICAgICAgICpwX2xlbmd0aCA9IFB5VW5pY29kZV9HRVRfU0laRShzdHJpbmcpOwotICAgICAgICAqcF9jaGFyc2l6ZSA9IHNpemVvZihQeV9VTklDT0RFKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHB0ciA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgICAgICpwX2xlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CisgICAgICAgICpwX2NoYXJzaXplID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKKyAgICAgICAgKnBfbG9naWNhbF9jaGFyc2l6ZSA9IDQ7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCi0gICAgLyogZ2V0IHBvaW50ZXIgdG8gc3RyaW5nIGJ1ZmZlciAqLworICAgIC8qIGdldCBwb2ludGVyIHRvIGJ5dGUgc3RyaW5nIGJ1ZmZlciAqLwogICAgIHZpZXctPmxlbiA9IC0xOwogICAgIGJ1ZmZlciA9IFB5X1RZUEUoc3RyaW5nKS0+dHBfYXNfYnVmZmVyOwogICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmJmX2dldGJ1ZmZlciB8fApAQCAtMTcwNywxMCArMTY5Nyw2IEBACiAKICAgICBpZiAoUHlCeXRlc19DaGVjayhzdHJpbmcpIHx8IGJ5dGVzID09IHNpemUpCiAgICAgICAgIGNoYXJzaXplID0gMTsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKLSAgICBlbHNlIGlmIChieXRlcyA9PSAoUHlfc3NpemVfdCkgKHNpemUgKiBzaXplb2YoUHlfVU5JQ09ERSkpKQotICAgICAgICBjaGFyc2l6ZSA9IHNpemVvZihQeV9VTklDT0RFKTsKLSNlbmRpZgogICAgIGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnVmZmVyIHNpemUgbWlzbWF0Y2giKTsKICAgICAgICAgZ290byBlcnI7CkBAIC0xNzE4LDYgKzE3MDQsNyBAQAogCiAgICAgKnBfbGVuZ3RoID0gc2l6ZTsKICAgICAqcF9jaGFyc2l6ZSA9IGNoYXJzaXplOworICAgICpwX2xvZ2ljYWxfY2hhcnNpemUgPSBjaGFyc2l6ZTsKIAogICAgIGlmIChwdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC0xNzM4LDcgKzE3MjUsNyBAQAogICAgIC8qIHByZXBhcmUgc3RhdGUgb2JqZWN0ICovCiAKICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKLSAgICBpbnQgY2hhcnNpemU7CisgICAgaW50IGxvZ2ljYWxfY2hhcnNpemUsIGNoYXJzaXplOwogICAgIHZvaWQqIHB0cjsKIAogICAgIG1lbXNldChzdGF0ZSwgMCwgc2l6ZW9mKFNSRV9TVEFURSkpOwpAQCAtMTc0NywxOCArMTczNCwxOCBAQAogICAgIHN0YXRlLT5sYXN0aW5kZXggPSAtMTsKIAogICAgIHN0YXRlLT5idWZmZXIuYnVmID0gTlVMTDsKLSAgICBwdHIgPSBnZXRzdHJpbmcoc3RyaW5nLCAmbGVuZ3RoLCAmY2hhcnNpemUsICZzdGF0ZS0+YnVmZmVyKTsKKyAgICBwdHIgPSBnZXRzdHJpbmcoc3RyaW5nLCAmbGVuZ3RoLCAmbG9naWNhbF9jaGFyc2l6ZSwgJmNoYXJzaXplLCAmc3RhdGUtPmJ1ZmZlcik7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIGdvdG8gZXJyOwogCi0gICAgaWYgKGNoYXJzaXplID09IDEgJiYgcGF0dGVybi0+Y2hhcnNpemUgPiAxKSB7CisgICAgaWYgKGxvZ2ljYWxfY2hhcnNpemUgPT0gMSAmJiBwYXR0ZXJuLT5sb2dpY2FsX2NoYXJzaXplID4gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotCQkJImNhbid0IHVzZSBhIHN0cmluZyBwYXR0ZXJuIG9uIGEgYnl0ZXMtbGlrZSBvYmplY3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgYSBzdHJpbmcgcGF0dGVybiBvbiBhIGJ5dGVzLWxpa2Ugb2JqZWN0Iik7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KLSAgICBpZiAoY2hhcnNpemUgPiAxICYmIHBhdHRlcm4tPmNoYXJzaXplID09IDEpIHsKKyAgICBpZiAobG9naWNhbF9jaGFyc2l6ZSA+IDEgJiYgcGF0dGVybi0+bG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0JCQkiY2FuJ3QgdXNlIGEgYnl0ZXMgcGF0dGVybiBvbiBhIHN0cmluZy1saWtlIG9iamVjdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBhIGJ5dGVzIHBhdHRlcm4gb24gYSBzdHJpbmctbGlrZSBvYmplY3QiKTsKICAgICAgICAgZ290byBlcnI7CiAgICAgfQogCkBAIC0xNzczLDYgKzE3NjAsNyBAQAogICAgIGVsc2UgaWYgKGVuZCA+IGxlbmd0aCkKICAgICAgICAgZW5kID0gbGVuZ3RoOwogCisgICAgc3RhdGUtPmxvZ2ljYWxfY2hhcnNpemUgPSBsb2dpY2FsX2NoYXJzaXplOwogICAgIHN0YXRlLT5jaGFyc2l6ZSA9IGNoYXJzaXplOwogCiAgICAgc3RhdGUtPmJlZ2lubmluZyA9IHB0cjsKQEAgLTE3ODgsMTEgKzE3NzYsNyBAQAogICAgIGlmIChwYXR0ZXJuLT5mbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyX2xvY2FsZTsKICAgICBlbHNlIGlmIChwYXR0ZXJuLT5mbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHN0YXRlLT5sb3dlciA9IHNyZV9sb3dlcl91bmljb2RlOwotI2Vsc2UKLSAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyX2xvY2FsZTsKLSNlbmRpZgogICAgIGVsc2UKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyOwogCkBAIC0xODk5LDEyICsxODgzLDEwIEBACiAKICAgICBUUkFDRSgoInwlcHwlcHxNQVRDSFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKIAotICAgIGlmIChzdGF0ZS5jaGFyc2l6ZSA9PSAxKSB7CisgICAgaWYgKHN0YXRlLmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICBzdGF0dXMgPSBzcmVfbWF0Y2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwogICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHN0YXR1cyA9IHNyZV91bWF0Y2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwotI2VuZGlmCiAgICAgfQogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8RU5EXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwpAQCAtMTkzNiwxMiArMTkxOCwxMCBAQAogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwogCi0gICAgaWYgKHN0YXRlLmNoYXJzaXplID09IDEpIHsKKyAgICBpZiAoc3RhdGUubG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgIHN0YXR1cyA9IHNyZV9zZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwogICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHN0YXR1cyA9IHNyZV91c2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIFRSQUNFKCgifCVwfCVwfEVORFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKQEAgLTIwODMsMTYgKzIwNjMsMTQgQEAKIAogICAgICAgICBzdGF0ZS5wdHIgPSBzdGF0ZS5zdGFydDsKIAotICAgICAgICBpZiAoc3RhdGUuY2hhcnNpemUgPT0gMSkgeworICAgICAgICBpZiAoc3RhdGUubG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICBzdGF0dXMgPSBzcmVfc2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKICAgICAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgICAgIHN0YXR1cyA9IHNyZV91c2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKLSNlbmRpZgogICAgICAgICB9CiAKLQlpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLQkgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIGlmIChzdGF0dXMgPD0gMCkgewogICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAwKQpAQCAtMjE1NCwxMyArMjEzMiwxMyBAQAogCiAjaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMjAyMDAwMAogc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9maW5kaXRlcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncykKK3BhdHRlcm5fZmluZGl0ZXIoUGF0dGVybk9iamVjdCogcGF0dGVybiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKIHsKICAgICBQeU9iamVjdCogc2Nhbm5lcjsKICAgICBQeU9iamVjdCogc2VhcmNoOwogICAgIFB5T2JqZWN0KiBpdGVyYXRvcjsKIAotICAgIHNjYW5uZXIgPSBwYXR0ZXJuX3NjYW5uZXIocGF0dGVybiwgYXJncyk7CisgICAgc2Nhbm5lciA9IHBhdHRlcm5fc2Nhbm5lcihwYXR0ZXJuLCBhcmdzLCBrdyk7CiAgICAgaWYgKCFzY2FubmVyKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjIxMywxNiArMjE5MSwxNCBAQAogCiAgICAgICAgIHN0YXRlLnB0ciA9IHN0YXRlLnN0YXJ0OwogCi0gICAgICAgIGlmIChzdGF0ZS5jaGFyc2l6ZSA9PSAxKSB7CisgICAgICAgIGlmIChzdGF0ZS5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgICAgIHN0YXR1cyA9IHNyZV9zZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwogICAgICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICAgICAgc3RhdHVzID0gc3JlX3VzZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwotI2VuZGlmCiAgICAgICAgIH0KIAotCWlmIChQeUVycl9PY2N1cnJlZCgpKQotCSAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAgICAgaWYgKHN0YXR1cyA8PSAwKSB7CiAgICAgICAgICAgICBpZiAoc3RhdHVzID09IDApCkBAIC0yMzAzLDcgKzIyNzksNyBAQAogICAgIGludCBzdGF0dXM7CiAgICAgUHlfc3NpemVfdCBuOwogICAgIFB5X3NzaXplX3QgaSwgYiwgZTsKLSAgICBpbnQgYmludDsKKyAgICBpbnQgbG9naWNhbF9jaGFyc2l6ZSwgY2hhcnNpemU7CiAgICAgaW50IGZpbHRlcl9pc19jYWxsYWJsZTsKICAgICBQeV9idWZmZXIgdmlldzsKIApAQCAtMjMxNiwxNiArMjI5MiwxMCBAQAogICAgICAgICAvKiBpZiBub3QgY2FsbGFibGUsIGNoZWNrIGlmIGl0J3MgYSBsaXRlcmFsIHN0cmluZyAqLwogICAgICAgICBpbnQgbGl0ZXJhbDsKICAgICAgICAgdmlldy5idWYgPSBOVUxMOwotICAgICAgICBwdHIgPSBnZXRzdHJpbmcocHRlbXBsYXRlLCAmbiwgJmJpbnQsICZ2aWV3KTsKLSAgICAgICAgYiA9IGJpbnQ7CisgICAgICAgIHB0ciA9IGdldHN0cmluZyhwdGVtcGxhdGUsICZuLCAmbG9naWNhbF9jaGFyc2l6ZSwgJmNoYXJzaXplLCAmdmlldyk7CisgICAgICAgIGIgPSBjaGFyc2l6ZTsKICAgICAgICAgaWYgKHB0cikgewotICAgICAgICAgICAgaWYgKGIgPT0gMSkgewotCQkgICAgbGl0ZXJhbCA9IHNyZV9saXRlcmFsX3RlbXBsYXRlKCh1bnNpZ25lZCBjaGFyICopcHRyLCBuKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCi0JCSAgICBsaXRlcmFsID0gc3JlX3VsaXRlcmFsX3RlbXBsYXRlKChQeV9VTklDT0RFICopcHRyLCBuKTsKLSNlbmRpZgotICAgICAgICAgICAgfQorICAgICAgICAgICAgbGl0ZXJhbCA9IHNyZV9saXRlcmFsX3RlbXBsYXRlKGIsIHB0ciwgbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgbGl0ZXJhbCA9IDA7CkBAIC0yMzY5LDE2ICsyMzM5LDE0IEBACiAKICAgICAgICAgc3RhdGUucHRyID0gc3RhdGUuc3RhcnQ7CiAKLSAgICAgICAgaWYgKHN0YXRlLmNoYXJzaXplID09IDEpIHsKKyAgICAgICAgaWYgKHN0YXRlLmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICAgICAgc3RhdHVzID0gc3JlX3NlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgICAgICBzdGF0dXMgPSBzcmVfdXNlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7Ci0jZW5kaWYKICAgICAgICAgfQogCi0JaWYgKFB5RXJyX09jY3VycmVkKCkpCi0JICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgICBpZiAoc3RhdHVzIDw9IDApIHsKICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMCkKQEAgLTI1OTYsMjIgKzI1NjQsMjIgQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHBhdHRlcm5fbWV0aG9kc1tdID0gewogICAgIHsibWF0Y2giLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fbWF0Y2hfZG9jfSwKKyAgICAgICAgcGF0dGVybl9tYXRjaF9kb2N9LAogICAgIHsic2VhcmNoIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NlYXJjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0JcGF0dGVybl9zZWFyY2hfZG9jfSwKKyAgICAgICAgcGF0dGVybl9zZWFyY2hfZG9jfSwKICAgICB7InN1YiIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zdWIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fc3ViX2RvY30sCisgICAgICAgIHBhdHRlcm5fc3ViX2RvY30sCiAgICAgeyJzdWJuIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3N1Ym4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fc3Vibl9kb2N9LAorICAgICAgICBwYXR0ZXJuX3N1Ym5fZG9jfSwKICAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLQlwYXR0ZXJuX3NwbGl0X2RvY30sCisgICAgICAgIHBhdHRlcm5fc3BsaXRfZG9jfSwKICAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fZmluZGFsbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0JcGF0dGVybl9maW5kYWxsX2RvY30sCisgICAgICAgIHBhdHRlcm5fZmluZGFsbF9kb2N9LAogI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDIwMjAwMDAKLSAgICB7ImZpbmRpdGVyIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX1ZBUkFSR1MsCi0JcGF0dGVybl9maW5kaXRlcl9kb2N9LAorICAgIHsiZmluZGl0ZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fZmluZGl0ZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICAgICBwYXR0ZXJuX2ZpbmRpdGVyX2RvY30sCiAjZW5kaWYKLSAgICB7InNjYW5uZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7InNjYW5uZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAogICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fY29weSwgTUVUSF9OT0FSR1N9LAogICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2RlZXBjb3B5LCBNRVRIX099LAogICAgIHtOVUxMLCBOVUxMfQpAQCAtMjYzMCwzMSArMjU5OCwzMSBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJfIiBTUkVfTU9EVUxFICIuU1JFX1BhdHRlcm4iLAogICAgIHNpemVvZihQYXR0ZXJuT2JqZWN0KSwgc2l6ZW9mKFNSRV9DT0RFKSwKLSAgICAoZGVzdHJ1Y3RvcilwYXR0ZXJuX2RlYWxsb2MsCS8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLAkJCQkJLyogdHBfcHJpbnQgKi8KLSAgICAwLAkJCQkJLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsCQkJCQkvKiB0cF9zZXRhdHRyICovCi0gICAgMCwJCQkJCS8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwJCQkJCS8qIHRwX3JlcHIgKi8KLSAgICAwLAkJCQkJLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwJCQkJCS8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwJCQkJCS8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLAkJCQkJLyogdHBfaGFzaCAqLwotICAgIDAsCQkJCQkvKiB0cF9jYWxsICovCi0gICAgMCwJCQkJCS8qIHRwX3N0ciAqLwotICAgIDAsCQkJCQkvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsCQkJCQkvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsCQkJCQkvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkJLyogdHBfZmxhZ3MgKi8KLSAgICBwYXR0ZXJuX2RvYywJCQkvKiB0cF9kb2MgKi8KLSAgICAwLAkJCQkJLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLAkJCQkJLyogdHBfY2xlYXIgKi8KLSAgICAwLAkJCQkJLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihQYXR0ZXJuT2JqZWN0LCB3ZWFrcmVmbGlzdCksCS8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCQkJCS8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJCQkJLyogdHBfaXRlcm5leHQgKi8KLSAgICBwYXR0ZXJuX21ldGhvZHMsCQkJLyogdHBfbWV0aG9kcyAqLwotICAgIHBhdHRlcm5fbWVtYmVycywJCQkvKiB0cF9tZW1iZXJzICovCisgICAgKGRlc3RydWN0b3IpcGF0dGVybl9kZWFsbG9jLCAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIHBhdHRlcm5fZG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKFBhdHRlcm5PYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBwYXR0ZXJuX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgcGF0dGVybl9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogfTsKIAogc3RhdGljIGludCBfdmFsaWRhdGUoUGF0dGVybk9iamVjdCAqc2VsZik7IC8qIEZvcndhcmQgKi8KQEAgLTI3MDgsMTEgKzI2NzYsMTQgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHBhdHRlcm4gPT0gUHlfTm9uZSkKKyAgICBpZiAocGF0dGVybiA9PSBQeV9Ob25lKSB7CisgICAgICAgIHNlbGYtPmxvZ2ljYWxfY2hhcnNpemUgPSAtMTsKICAgICAgICAgc2VsZi0+Y2hhcnNpemUgPSAtMTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X3NzaXplX3QgcF9sZW5ndGg7Ci0gICAgICAgIGlmICghZ2V0c3RyaW5nKHBhdHRlcm4sICZwX2xlbmd0aCwgJnNlbGYtPmNoYXJzaXplLCAmc2VsZi0+dmlldykpIHsKKyAgICAgICAgaWYgKCFnZXRzdHJpbmcocGF0dGVybiwgJnBfbGVuZ3RoLCAmc2VsZi0+bG9naWNhbF9jaGFyc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgJnNlbGYtPmNoYXJzaXplLCAmc2VsZi0+dmlldykpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0yOTc3LDEzICsyOTQ4LDEzIEBACiAgICAgICAgICAgICAgICAgICAgPElORk8+IDwxPXNraXA+IDwyPWZsYWdzPiA8Mz1taW4+IDw0PW1heD47CiAgICAgICAgICAgICAgICAgICAgSWYgU1JFX0lORk9fUFJFRklYIG9yIFNSRV9JTkZPX0NIQVJTRVQgaXMgaW4gdGhlIGZsYWdzLAogICAgICAgICAgICAgICAgICAgIG1vcmUgZm9sbG93cy4gKi8KLSAgICAgICAgICAgICAgICBTUkVfQ09ERSBmbGFncywgbWluLCBtYXgsIGk7CisgICAgICAgICAgICAgICAgU1JFX0NPREUgZmxhZ3MsIGk7CiAgICAgICAgICAgICAgICAgU1JFX0NPREUgKm5ld2NvZGU7CiAgICAgICAgICAgICAgICAgR0VUX1NLSVA7CiAgICAgICAgICAgICAgICAgbmV3Y29kZSA9IGNvZGUrc2tpcC0xOwogICAgICAgICAgICAgICAgIEdFVF9BUkc7IGZsYWdzID0gYXJnOwotICAgICAgICAgICAgICAgIEdFVF9BUkc7IG1pbiA9IGFyZzsKLSAgICAgICAgICAgICAgICBHRVRfQVJHOyBtYXggPSBhcmc7CisgICAgICAgICAgICAgICAgR0VUX0FSRzsKKyAgICAgICAgICAgICAgICBHRVRfQVJHOwogICAgICAgICAgICAgICAgIC8qIENoZWNrIHRoYXQgb25seSB2YWxpZCBmbGFncyBhcmUgcHJlc2VudCAqLwogICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiB+KFNSRV9JTkZPX1BSRUZJWCB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1JFX0lORk9fTElURVJBTCB8CkBAIC0yOTk5LDkgKzI5NzAsOSBAQAogICAgICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgICAgIC8qIFZhbGlkYXRlIHRoZSBwcmVmaXggKi8KICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19QUkVGSVgpIHsKLSAgICAgICAgICAgICAgICAgICAgU1JFX0NPREUgcHJlZml4X2xlbiwgcHJlZml4X3NraXA7CisgICAgICAgICAgICAgICAgICAgIFNSRV9DT0RFIHByZWZpeF9sZW47CiAgICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7IHByZWZpeF9sZW4gPSBhcmc7Ci0gICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7IHByZWZpeF9za2lwID0gYXJnOworICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOwogICAgICAgICAgICAgICAgICAgICAvKiBIZXJlIGNvbWVzIHRoZSBwcmVmaXggc3RyaW5nICovCiAgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlK3ByZWZpeF9sZW4gPCBjb2RlIHx8IGNvZGUrcHJlZml4X2xlbiA+IG5ld2NvZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBGQUlMOwpAQCAtMzA2NSwxMCArMzAzNiw4IEBACiAgICAgICAgICAgICAgICAgR0VUX0FSRzsgbWF4ID0gYXJnOwogICAgICAgICAgICAgICAgIGlmIChtaW4gPiBtYXgpCiAgICAgICAgICAgICAgICAgICAgIEZBSUw7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgICAgICAgICAgaWYgKG1heCA+IDY1NTM1KQogICAgICAgICAgICAgICAgICAgICBGQUlMOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgaWYgKCFfdmFsaWRhdGVfaW5uZXIoY29kZSwgY29kZStza2lwLTQsIGdyb3VwcykpCiAgICAgICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICAgICAgY29kZSArPSBza2lwLTQ7CkBAIC0zMDg2LDEwICszMDU1LDggQEAKICAgICAgICAgICAgICAgICBHRVRfQVJHOyBtYXggPSBhcmc7CiAgICAgICAgICAgICAgICAgaWYgKG1pbiA+IG1heCkKICAgICAgICAgICAgICAgICAgICAgRkFJTDsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKICAgICAgICAgICAgICAgICBpZiAobWF4ID4gNjU1MzUpCiAgICAgICAgICAgICAgICAgICAgIEZBSUw7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICBpZiAoIV92YWxpZGF0ZV9pbm5lcihjb2RlLCBjb2RlK3NraXAtMywgZ3JvdXBzKSkKICAgICAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgICAgICBjb2RlICs9IHNraXAtMzsKQEAgLTMyNTIsOCArMzIxOSw4IEBACiAgICAgUHlfc3NpemVfdCBpOwogCiAgICAgaWYgKGluZGV4ID09IE5VTEwpCi0JLyogRGVmYXVsdCB2YWx1ZSAqLwotCXJldHVybiAwOworICAgICAgICAvKiBEZWZhdWx0IHZhbHVlICovCisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKFB5TG9uZ19DaGVjayhpbmRleCkpCiAgICAgICAgIHJldHVybiBQeUxvbmdfQXNTc2l6ZV90KGluZGV4KTsKQEAgLTM1OTMsNyArMzU2MCw3IEBACiBtYXRjaF9sYXN0aW5kZXhfZ2V0KE1hdGNoT2JqZWN0ICpzZWxmKQogewogICAgIGlmIChzZWxmLT5sYXN0aW5kZXggPj0gMCkKLQlyZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNlbGYtPmxhc3RpbmRleCk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc2VsZi0+bGFzdGluZGV4KTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CkBAIC0zNjQ2LDMyICszNjEzLDMyIEBACiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsMCkKICAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9NYXRjaCIsCiAgICAgc2l6ZW9mKE1hdGNoT2JqZWN0KSwgc2l6ZW9mKFB5X3NzaXplX3QpLAotICAgIChkZXN0cnVjdG9yKW1hdGNoX2RlYWxsb2MsCS8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLAkJCQkvKiB0cF9wcmludCAqLwotICAgIDAsCQkJCS8qIHRwX2dldGF0dHIgKi8KLSAgICAwLAkJCQkvKiB0cF9zZXRhdHRyICovCi0gICAgMCwJCQkJLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLAkJCQkvKiB0cF9yZXByICovCi0gICAgMCwJCQkJLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwJCQkJLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLAkJCQkvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwJCQkJLyogdHBfaGFzaCAqLwotICAgIDAsCQkJCS8qIHRwX2NhbGwgKi8KLSAgICAwLAkJCQkvKiB0cF9zdHIgKi8KLSAgICAwLAkJCQkvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsCQkJCS8qIHRwX3NldGF0dHJvICovCi0gICAgMCwJCQkJLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULAkJLyogdHBfZmxhZ3MgKi8KLSAgICAwLAkJCQkvKiB0cF9kb2MgKi8KLSAgICAwLAkJCQkvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkJCS8qIHRwX2NsZWFyICovCi0gICAgMCwJCQkJLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLAkJCQkvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkJCS8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJCQkvKiB0cF9pdGVybmV4dCAqLwotICAgIG1hdGNoX21ldGhvZHMsCQkvKiB0cF9tZXRob2RzICovCi0gICAgbWF0Y2hfbWVtYmVycywJCS8qIHRwX21lbWJlcnMgKi8KLSAgICBtYXRjaF9nZXRzZXQsICAJICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAoZGVzdHJ1Y3RvciltYXRjaF9kZWFsbG9jLCAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG1hdGNoX21ldGhvZHMsICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgbWF0Y2hfbWVtYmVycywgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBtYXRjaF9nZXRzZXQsICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC0zNzYwLDEyICszNzI3LDEwIEBACiAKICAgICBzdGF0ZS0+cHRyID0gc3RhdGUtPnN0YXJ0OwogCi0gICAgaWYgKHN0YXRlLT5jaGFyc2l6ZSA9PSAxKSB7CisgICAgaWYgKHN0YXRlLT5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgc3RhdHVzID0gc3JlX21hdGNoKHN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZi0+cGF0dGVybikpOwogICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHN0YXR1cyA9IHNyZV91bWF0Y2goc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmLT5wYXR0ZXJuKSk7Ci0jZW5kaWYKICAgICB9CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzc5MywxMiArMzc1OCwxMCBAQAogCiAgICAgc3RhdGUtPnB0ciA9IHN0YXRlLT5zdGFydDsKIAotICAgIGlmIChzdGF0ZS0+Y2hhcnNpemUgPT0gMSkgeworICAgIGlmIChzdGF0ZS0+bG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgIHN0YXR1cyA9IHNyZV9zZWFyY2goc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmLT5wYXR0ZXJuKSk7CiAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgc3RhdHVzID0gc3JlX3VzZWFyY2goc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmLT5wYXR0ZXJuKSk7Ci0jZW5kaWYKICAgICB9CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzgyMiw3ICszNzg1LDcgQEAKIAogI2RlZmluZSBTQ0FOX09GRih4KSBvZmZzZXRvZihTY2FubmVyT2JqZWN0LCB4KQogc3RhdGljIFB5TWVtYmVyRGVmIHNjYW5uZXJfbWVtYmVyc1tdID0gewotICAgIHsicGF0dGVybiIsCVRfT0JKRUNULAlTQ0FOX09GRihwYXR0ZXJuKSwJUkVBRE9OTFl9LAorICAgIHsicGF0dGVybiIsIFRfT0JKRUNULCBTQ0FOX09GRihwYXR0ZXJuKSwgUkVBRE9OTFl9LAogICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTM4MzEsMzUgKzM3OTQsMzUgQEAKICAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9TY2FubmVyIiwKICAgICBzaXplb2YoU2Nhbm5lck9iamVjdCksIDAsCiAgICAgKGRlc3RydWN0b3Ipc2Nhbm5lcl9kZWFsbG9jLC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLAkJCQkvKiB0cF9wcmludCAqLwotICAgIDAsCQkJCS8qIHRwX2dldGF0dHIgKi8KLSAgICAwLAkJCQkvKiB0cF9zZXRhdHRyICovCi0gICAgMCwJCQkJLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLAkJCQkvKiB0cF9yZXByICovCi0gICAgMCwJCQkJLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwJCQkJLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLAkJCQkvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwJCQkJLyogdHBfaGFzaCAqLwotICAgIDAsCQkJCS8qIHRwX2NhbGwgKi8KLSAgICAwLAkJCQkvKiB0cF9zdHIgKi8KLSAgICAwLAkJCQkvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsCQkJCS8qIHRwX3NldGF0dHJvICovCi0gICAgMCwJCQkJLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULAkJLyogdHBfZmxhZ3MgKi8KLSAgICAwLAkJCQkvKiB0cF9kb2MgKi8KLSAgICAwLAkJCQkvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkJCS8qIHRwX2NsZWFyICovCi0gICAgMCwJCQkJLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLAkJCQkvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkJCS8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJCQkvKiB0cF9pdGVybmV4dCAqLwotICAgIHNjYW5uZXJfbWV0aG9kcywJCS8qIHRwX21ldGhvZHMgKi8KLSAgICBzY2FubmVyX21lbWJlcnMsCQkvKiB0cF9tZW1iZXJzICovCi0gICAgMCwJCQkJLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgc2Nhbm5lcl9tZXRob2RzLCAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBzY2FubmVyX21lbWJlcnMsICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncykKK3BhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQogewogICAgIC8qIGNyZWF0ZSBzZWFyY2ggc3RhdGUgb2JqZWN0ICovCiAKQEAgLTM4NjgsNyArMzgzMSw5IEBACiAgICAgUHlPYmplY3QqIHN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xubjpzY2FubmVyIiwgJnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKKyAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJzb3VyY2UiLCAicG9zIiwgImVuZHBvcyIsIE5VTEwgfTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk98bm46c2Nhbm5lciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIGNyZWF0ZSBzY2FubmVyIG9iamVjdCAqLwpAQCAtMzg5NywxNSArMzg2MiwxNSBAQAogfTsKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBzcmVtb2R1bGUgPSB7Ci0JUHlNb2R1bGVEZWZfSEVBRF9JTklULAotCSJfIiBTUkVfTU9EVUxFLAotCU5VTEwsCi0JLTEsCi0JX2Z1bmN0aW9ucywKLQlOVUxMLAotCU5VTEwsCi0JTlVMTCwKLQlOVUxMCisgICAgICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAgICAgIl8iIFNSRV9NT0RVTEUsCisgICAgICAgIE5VTEwsCisgICAgICAgIC0xLAorICAgICAgICBfZnVuY3Rpb25zLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMCiB9OwogCiBQeU1PRElOSVRfRlVOQyBQeUluaXRfX3NyZSh2b2lkKQpAQCAtMzkyMSw3ICszODg2LDcgQEAKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJnNyZW1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKLSAgICAJcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwogCiAgICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTUkVfTUFHSUMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsLmMgYi9Nb2R1bGVzL19zc2wuYwppbmRleCAwYTg0MTE4Li4xMTA0YTRlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zc2wuYworKysgYi9Nb2R1bGVzL19zc2wuYwpAQCAtMTgsMTYgKzE4LDIxIEBACiAKICNpZmRlZiBXSVRIX1RIUkVBRAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZGVmaW5lIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhzYXZlKSBcCisgICAgZG8geyBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKSB7IChzYXZlKSA9IFB5RXZhbF9TYXZlVGhyZWFkKCk7IH0gfSB3aGlsZSAoMCkKKyNkZWZpbmUgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhzYXZlKSBcCisgICAgZG8geyBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKSB7IFB5RXZhbF9SZXN0b3JlVGhyZWFkKHNhdmUpOyB9IH0gd2hpbGUgKDApCiAjZGVmaW5lIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMgeyBcCiAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpfc2F2ZSA9IE5VTEw7ICBcCi0gICAgICAgICAgICBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKSB7X3NhdmUgPSBQeUV2YWxfU2F2ZVRocmVhZCgpO30KLSNkZWZpbmUgUHlTU0xfQkxPQ0tfVEhSRUFEUyAgICAgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCl7UHlFdmFsX1Jlc3RvcmVUaHJlYWQoX3NhdmUpfTsKLSNkZWZpbmUgUHlTU0xfVU5CTE9DS19USFJFQURTICAgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCl7X3NhdmUgPSBQeUV2YWxfU2F2ZVRocmVhZCgpfTsKLSNkZWZpbmUgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCl7UHlFdmFsX1Jlc3RvcmVUaHJlYWQoX3NhdmUpO30gXAotICAgICAgICAgfQorICAgICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKF9zYXZlKTsKKyNkZWZpbmUgUHlTU0xfQkxPQ0tfVEhSRUFEUyAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhfc2F2ZSk7CisjZGVmaW5lIFB5U1NMX1VOQkxPQ0tfVEhSRUFEUyAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhfc2F2ZSk7CisjZGVmaW5lIFB5U1NMX0VORF9BTExPV19USFJFQURTIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MoX3NhdmUpOyB9CiAKICNlbHNlICAgLyogbm8gV0lUSF9USFJFQUQgKi8KIAorI2RlZmluZSBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1Moc2F2ZSkKKyNkZWZpbmUgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhzYXZlKQogI2RlZmluZSBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCiAjZGVmaW5lIFB5U1NMX0JMT0NLX1RIUkVBRFMKICNkZWZpbmUgUHlTU0xfVU5CTE9DS19USFJFQURTCkBAIC03MSw2ICs3NiwxNiBAQAogICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEKIH07CiAKK3N0cnVjdCBweV9zc2xfZXJyb3JfY29kZSB7CisgICAgY29uc3QgY2hhciAqbW5lbW9uaWM7CisgICAgaW50IGxpYnJhcnksIHJlYXNvbjsKK307CisKK3N0cnVjdCBweV9zc2xfbGlicmFyeV9jb2RlIHsKKyAgICBjb25zdCBjaGFyICpsaWJyYXJ5OworICAgIGludCBjb2RlOworfTsKKwogLyogSW5jbHVkZSBzeW1ib2xzIGZyb20gX3NvY2tldCBtb2R1bGUgKi8KICNpbmNsdWRlICJzb2NrZXRtb2R1bGUuaCIKIApAQCAtOTIsOCArMTA3LDIxIEBACiAjaW5jbHVkZSAib3BlbnNzbC9lcnIuaCIKICNpbmNsdWRlICJvcGVuc3NsL3JhbmQuaCIKIAorLyogSW5jbHVkZSBnZW5lcmF0ZWQgZGF0YSAoZXJyb3IgY29kZXMpICovCisjaW5jbHVkZSAiX3NzbF9kYXRhLmgiCisKIC8qIFNTTCBlcnJvciBvYmplY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqUHlTU0xFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xaZXJvUmV0dXJuRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMV2FudFJlYWRFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xXYW50V3JpdGVFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xTeXNjYWxsRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMRU9GRXJyb3JPYmplY3Q7CisKKy8qIEVycm9yIG1hcHBpbmdzICovCitzdGF0aWMgUHlPYmplY3QgKmVycl9jb2Rlc190b19uYW1lczsKK3N0YXRpYyBQeU9iamVjdCAqZXJyX25hbWVzX3RvX2NvZGVzOworc3RhdGljIFB5T2JqZWN0ICpsaWJfY29kZXNfdG9fbmFtZXM7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAogCkBAIC0xMjQsOSArMTUyLDM1IEBACiAjIHVuZGVmIEhBVkVfU1NMX0NUWF9DTEVBUl9PUFRJT05TCiAjZW5kaWYKIAorLyogSW4gY2FzZSBvZiAndGxzLXVuaXF1ZScgaXQgd2lsbCBiZSAxMiBieXRlcyBmb3IgVExTLCAzNiBieXRlcyBmb3IKKyAqIG9sZGVyIFNTTCwgYnV0IGxldCdzIGJlIHNhZmUgKi8KKyNkZWZpbmUgUHlTU0xfQ0JfTUFYTEVOIDEyOAorCisvKiBTU0xfZ2V0X2ZpbmlzaGVkIGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS41ICovCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA1MDBmTAorIyBkZWZpbmUgSEFWRV9PUEVOU1NMX0ZJTklTSEVEIDEKKyNlbHNlCisjIGRlZmluZSBIQVZFX09QRU5TU0xfRklOSVNIRUQgMAorI2VuZGlmCisKKy8qIEVDREggc3VwcG9ydCBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuOCAqLworI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDAwOTA4MDBmTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0VDREgpCisjIGRlZmluZSBPUEVOU1NMX05PX0VDREgKKyNlbmRpZgorCisvKiBjb21wcmVzc2lvbiBzdXBwb3J0IGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS44ICovCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MDA5MDgwMGZMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQ09NUCkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ09NUAorI2VuZGlmCisKKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBTU0xfQ1RYICpjdHg7CisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIGNoYXIgKm5wbl9wcm90b2NvbHM7CisgICAgaW50IG5wbl9wcm90b2NvbHNfbGVuOworI2VuZGlmCiB9IFB5U1NMQ29udGV4dDsKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtMTM1LDYgKzE4OSw3IEBACiAgICAgU1NMICpzc2w7CiAgICAgWDUwOSAqcGVlcl9jZXJ0OwogICAgIGludCBzaHV0ZG93bl9zZWVuX3plcm87CisgICAgZW51bSBweV9zc2xfc2VydmVyX29yX2NsaWVudCBzb2NrZXRfdHlwZTsKIH0gUHlTU0xTb2NrZXQ7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xDb250ZXh0X1R5cGU7CkBAIC0xNjUsMzYgKzIyMCwxNTIgQEAKICNkZWZpbmUgRVJSU1RSMSh4LHkseikgKHggIjoiIHkgIjogIiB6KQogI2RlZmluZSBFUlJTVFIoeCkgRVJSU1RSMSgiX3NzbC5jIiwgU1RSSU5HSUZZMihfX0xJTkVfXyksIHgpCiAKLS8qIFhYWCBJdCBtaWdodCBiZSBoZWxwZnVsIHRvIGF1Z21lbnQgdGhlIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGVkCi0gICBiZWxvdyB3aXRoIHRoZSBuYW1lIG9mIHRoZSBTU0wgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZWQgdGhlIGVycm9yLgotICAgSSBleHBlY3QgaXQncyBvYnZpb3VzIG1vc3Qgb2YgdGhlIHRpbWUuCi0qLworCisvKgorICogU1NMIGVycm9ycy4KKyAqLworCitQeURvY19TVFJWQVIoU1NMRXJyb3JfZG9jLAorIkFuIGVycm9yIG9jY3VycmVkIGluIHRoZSBTU0wgaW1wbGVtZW50YXRpb24uIik7CisKK1B5RG9jX1NUUlZBUihTU0xaZXJvUmV0dXJuRXJyb3JfZG9jLAorIlNTTC9UTFMgc2Vzc2lvbiBjbG9zZWQgY2xlYW5seS4iKTsKKworUHlEb2NfU1RSVkFSKFNTTFdhbnRSZWFkRXJyb3JfZG9jLAorIk5vbi1ibG9ja2luZyBTU0wgc29ja2V0IG5lZWRzIHRvIHJlYWQgbW9yZSBkYXRhXG4iCisiYmVmb3JlIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGNhbiBiZSBjb21wbGV0ZWQuIik7CisKK1B5RG9jX1NUUlZBUihTU0xXYW50V3JpdGVFcnJvcl9kb2MsCisiTm9uLWJsb2NraW5nIFNTTCBzb2NrZXQgbmVlZHMgdG8gd3JpdGUgbW9yZSBkYXRhXG4iCisiYmVmb3JlIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGNhbiBiZSBjb21wbGV0ZWQuIik7CisKK1B5RG9jX1NUUlZBUihTU0xTeXNjYWxsRXJyb3JfZG9jLAorIlN5c3RlbSBlcnJvciB3aGVuIGF0dGVtcHRpbmcgU1NMIG9wZXJhdGlvbi4iKTsKKworUHlEb2NfU1RSVkFSKFNTTEVPRkVycm9yX2RvYywKKyJTU0wvVExTIGNvbm5lY3Rpb24gdGVybWluYXRlZCBhYnJ1cHRseS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NTTEVycm9yX3N0cihQeU9TRXJyb3JPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPnN0cmVycm9yICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKHNlbGYtPnN0cmVycm9yKSkgeworICAgICAgICBQeV9JTkNSRUYoc2VsZi0+c3RyZXJyb3IpOworICAgICAgICByZXR1cm4gc2VsZi0+c3RyZXJyb3I7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X1N0cihzZWxmLT5hcmdzKTsKK30KKworc3RhdGljIFB5VHlwZV9TbG90IHNzbGVycm9yX3R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfYmFzZSwgTlVMTH0sICAvKiBGaWxsZWQgb3V0IGluIG1vZHVsZSBpbml0IGFzIGl0J3Mgbm90IGEgY29uc3RhbnQgKi8KKyAgICB7UHlfdHBfZG9jLCBTU0xFcnJvcl9kb2N9LAorICAgIHtQeV90cF9zdHIsIFNTTEVycm9yX3N0cn0sCisgICAgezAsIDB9LAorfTsKKworc3RhdGljIFB5VHlwZV9TcGVjIHNzbGVycm9yX3R5cGVfc3BlYyA9IHsKKyAgICAic3NsLlNTTEVycm9yIiwKKyAgICBzaXplb2YoUHlPU0Vycm9yT2JqZWN0KSwKKyAgICAwLAorICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsCisgICAgc3NsZXJyb3JfdHlwZV9zbG90cworfTsKKworc3RhdGljIHZvaWQKK2ZpbGxfYW5kX3NldF9zc2xlcnJvcihQeU9iamVjdCAqdHlwZSwgaW50IHNzbF9lcnJubywgY29uc3QgY2hhciAqZXJyc3RyLAorICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIHVuc2lnbmVkIGxvbmcgZXJyY29kZSkKK3sKKyAgICBQeU9iamVjdCAqZXJyX3ZhbHVlID0gTlVMTCwgKnJlYXNvbl9vYmogPSBOVUxMLCAqbGliX29iaiA9IE5VTEw7CisgICAgUHlPYmplY3QgKmluaXRfdmFsdWUsICptc2csICprZXk7CisgICAgX1B5X0lERU5USUZJRVIocmVhc29uKTsKKyAgICBfUHlfSURFTlRJRklFUihsaWJyYXJ5KTsKKworICAgIGlmIChlcnJjb2RlICE9IDApIHsKKyAgICAgICAgaW50IGxpYiwgcmVhc29uOworCisgICAgICAgIGxpYiA9IEVSUl9HRVRfTElCKGVycmNvZGUpOworICAgICAgICByZWFzb24gPSBFUlJfR0VUX1JFQVNPTihlcnJjb2RlKTsKKyAgICAgICAga2V5ID0gUHlfQnVpbGRWYWx1ZSgiaWkiLCBsaWIsIHJlYXNvbik7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgcmVhc29uX29iaiA9IFB5RGljdF9HZXRJdGVtKGVycl9jb2Rlc190b19uYW1lcywga2V5KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIGlmIChyZWFzb25fb2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFhYWCBpZiByZWFzb24gPCAxMDAsIGl0IG1pZ2h0IHJlZmxlY3QgYSBsaWJyYXJ5IG51bWJlciAoISEpICovCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhsaWIpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGxpYl9vYmogPSBQeURpY3RfR2V0SXRlbShsaWJfY29kZXNfdG9fbmFtZXMsIGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICBpZiAobGliX29iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGlmIChlcnJzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIGVycnN0ciA9IEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKGVycmNvZGUpOworICAgIH0KKyAgICBpZiAoZXJyc3RyID09IE5VTEwpCisgICAgICAgIGVycnN0ciA9ICJ1bmtub3duIGVycm9yIjsKKworICAgIGlmIChyZWFzb25fb2JqICYmIGxpYl9vYmopCisgICAgICAgIG1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbJVM6ICVTXSAlcyAoX3NzbC5jOiVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYl9vYmosIHJlYXNvbl9vYmosIGVycnN0ciwgbGluZW5vKTsKKyAgICBlbHNlIGlmIChsaWJfb2JqKQorICAgICAgICBtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiWyVTXSAlcyAoX3NzbC5jOiVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYl9vYmosIGVycnN0ciwgbGluZW5vKTsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyAoX3NzbC5jOiVkKSIsIGVycnN0ciwgbGluZW5vKTsKKworICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIGluaXRfdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJpTiIsIHNzbF9lcnJubywgbXNnKTsKKyAgICBlcnJfdmFsdWUgPSBQeU9iamVjdF9DYWxsT2JqZWN0KHR5cGUsIGluaXRfdmFsdWUpOworICAgIFB5X0RFQ1JFRihpbml0X3ZhbHVlKTsKKyAgICBpZiAoZXJyX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAocmVhc29uX29iaiA9PSBOVUxMKQorICAgICAgICByZWFzb25fb2JqID0gUHlfTm9uZTsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChlcnJfdmFsdWUsICZQeUlkX3JlYXNvbiwgcmVhc29uX29iaikpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAobGliX29iaiA9PSBOVUxMKQorICAgICAgICBsaWJfb2JqID0gUHlfTm9uZTsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChlcnJfdmFsdWUsICZQeUlkX2xpYnJhcnksIGxpYl9vYmopKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgUHlFcnJfU2V0T2JqZWN0KHR5cGUsIGVycl92YWx1ZSk7CitmYWlsOgorICAgIFB5X1hERUNSRUYoZXJyX3ZhbHVlKTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIFB5U1NMX1NldEVycm9yKFB5U1NMU29ja2V0ICpvYmosIGludCByZXQsIGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKQogewotICAgIFB5T2JqZWN0ICp2OwotICAgIGNoYXIgYnVmWzIwNDhdOwotICAgIGNoYXIgKmVycnN0cjsKKyAgICBQeU9iamVjdCAqdHlwZSA9IFB5U1NMRXJyb3JPYmplY3Q7CisgICAgY2hhciAqZXJyc3RyID0gTlVMTDsKICAgICBpbnQgZXJyOwogICAgIGVudW0gcHlfc3NsX2Vycm9yIHAgPSBQWV9TU0xfRVJST1JfTk9ORTsKKyAgICB1bnNpZ25lZCBsb25nIGUgPSAwOwogCiAgICAgYXNzZXJ0KHJldCA8PSAwKTsKKyAgICBlID0gRVJSX3BlZWtfbGFzdF9lcnJvcigpOwogCiAgICAgaWYgKG9iai0+c3NsICE9IE5VTEwpIHsKICAgICAgICAgZXJyID0gU1NMX2dldF9lcnJvcihvYmotPnNzbCwgcmV0KTsKIAogICAgICAgICBzd2l0Y2ggKGVycikgewogICAgICAgICBjYXNlIFNTTF9FUlJPUl9aRVJPX1JFVFVSTjoKLSAgICAgICAgICAgIGVycnN0ciA9ICJUTFMvU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIjsKKyAgICAgICAgICAgIGVycnN0ciA9ICJUTFMvU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIChFT0YpIjsKKyAgICAgICAgICAgIHR5cGUgPSBQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdDsKICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfWkVST19SRVRVUk47CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9SRUFEOgogICAgICAgICAgICAgZXJyc3RyID0gIlRoZSBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZSAocmVhZCkiOworICAgICAgICAgICAgdHlwZSA9IFB5U1NMV2FudFJlYWRFcnJvck9iamVjdDsKICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfV0FOVF9SRUFEOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1dBTlRfV1JJVEU6CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1dBTlRfV1JJVEU7CisgICAgICAgICAgICB0eXBlID0gUHlTU0xXYW50V3JpdGVFcnJvck9iamVjdDsKICAgICAgICAgICAgIGVycnN0ciA9ICJUaGUgb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgKHdyaXRlKSI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9YNTA5X0xPT0tVUDoKQEAgLTIwNyw4MCArMzc4LDY0IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfU1lTQ0FMTDoKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlID0gRVJSX2dldF9lcnJvcigpOwogICAgICAgICAgICAgaWYgKGUgPT0gMCkgewogICAgICAgICAgICAgICAgIFB5U29ja2V0U29ja09iamVjdCAqcwogICAgICAgICAgICAgICAgICAgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3Qob2JqLT5Tb2NrZXQpOwogICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCB8fCAoKChQeU9iamVjdCAqKXMpID09IFB5X05vbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfRU9GOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gUHlTU0xFT0ZFcnJvck9iamVjdDsKICAgICAgICAgICAgICAgICAgICAgZXJyc3RyID0gIkVPRiBvY2N1cnJlZCBpbiB2aW9sYXRpb24gb2YgcHJvdG9jb2wiOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0ID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIHVuZGVybHlpbmcgQklPIHJlcG9ydGVkIGFuIEkvTyBlcnJvciAqLwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYocyk7CiAgICAgICAgICAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOwotICAgICAgICAgICAgICAgICAgICB2ID0gcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB2OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvKiBwb3NzaWJsZT8gKi8KICAgICAgICAgICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9TWVNDQUxMOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gUHlTU0xTeXNjYWxsRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICAgICAgICAgIGVycnN0ciA9ICJTb21lIEkvTyBlcnJvciBvY2N1cnJlZCI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1NZU0NBTEw7Ci0gICAgICAgICAgICAgICAgLyogWFhYIFByb3RlY3RlZCBieSBnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jayAqLwotICAgICAgICAgICAgICAgIGVycnN0ciA9IEVSUl9lcnJvcl9zdHJpbmcoZSwgTlVMTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNTTF9FUlJPUl9TU0w6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZSA9IEVSUl9nZXRfZXJyb3IoKTsKICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfU1NMOwotICAgICAgICAgICAgaWYgKGUgIT0gMCkKLSAgICAgICAgICAgICAgICAvKiBYWFggUHJvdGVjdGVkIGJ5IGdsb2JhbCBpbnRlcnByZXRlciBsb2NrICovCi0gICAgICAgICAgICAgICAgZXJyc3RyID0gRVJSX2Vycm9yX3N0cmluZyhlLCBOVUxMKTsKLSAgICAgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgLyogcG9zc2libGU/ICovCisgICAgICAgICAgICBpZiAoZSA9PSAwKQorICAgICAgICAgICAgICAgIC8qIHBvc3NpYmxlPyAqLwogICAgICAgICAgICAgICAgIGVycnN0ciA9ICJBIGZhaWx1cmUgaW4gdGhlIFNTTCBsaWJyYXJ5IG9jY3VycmVkIjsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX0lOVkFMSURfRVJST1JfQ09ERTsKICAgICAgICAgICAgIGVycnN0ciA9ICJJbnZhbGlkIGVycm9yIGNvZGUiOwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZXJyc3RyID0gRVJSX2Vycm9yX3N0cmluZyhFUlJfcGVla19sYXN0X2Vycm9yKCksIE5VTEwpOwogICAgIH0KLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfc3NsLmM6JWQ6ICVzIiwgbGluZW5vLCBlcnJzdHIpOworICAgIGZpbGxfYW5kX3NldF9zc2xlcnJvcih0eXBlLCBwLCBlcnJzdHIsIGxpbmVubywgZSk7CiAgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0gICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpcykiLCBwLCBidWYpOwotICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5U1NMRXJyb3JPYmplY3QsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgfQogICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NldFNTTEVycm9yIChjaGFyICplcnJzdHIsIGludCBlcnJjb2RlLCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykgewogCi0gICAgY2hhciBidWZbMjA0OF07Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBpZiAoZXJyc3RyID09IE5VTEwpIHsKKyAgICBpZiAoZXJyc3RyID09IE5VTEwpCiAgICAgICAgIGVycmNvZGUgPSBFUlJfcGVla19sYXN0X2Vycm9yKCk7Ci0gICAgICAgIGVycnN0ciA9IEVSUl9lcnJvcl9zdHJpbmcoZXJyY29kZSwgTlVMTCk7Ci0gICAgfQotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIl9zc2wuYzolZDogJXMiLCBsaW5lbm8sIGVycnN0cik7CisgICAgZWxzZQorICAgICAgICBlcnJjb2RlID0gMDsKKyAgICBmaWxsX2FuZF9zZXRfc3NsZXJyb3IoUHlTU0xFcnJvck9iamVjdCwgZXJyY29kZSwgZXJyc3RyLCBsaW5lbm8sIGVycmNvZGUpOwogICAgIEVSUl9jbGVhcl9lcnJvcigpOwotICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaXMpIiwgZXJyY29kZSwgYnVmKTsKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeVNTTEVycm9yT2JqZWN0LCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgIH0KICAgICByZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIFNTTCBvYmplY3RzCisgKi8KKwogc3RhdGljIFB5U1NMU29ja2V0ICoKIG5ld1B5U1NMU29ja2V0KFNTTF9DVFggKmN0eCwgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrLAogICAgICAgICAgICAgICAgZW51bSBweV9zc2xfc2VydmVyX29yX2NsaWVudCBzb2NrZXRfdHlwZSwKQEAgLTMyOCw2ICs0ODMsNyBAQAogICAgICAgICBTU0xfc2V0X2FjY2VwdF9zdGF0ZShzZWxmLT5zc2wpOwogICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCiAKKyAgICBzZWxmLT5zb2NrZXRfdHlwZSA9IHNvY2tldF90eXBlOwogICAgIHNlbGYtPlNvY2tldCA9IFB5V2Vha3JlZl9OZXdSZWYoKFB5T2JqZWN0ICopIHNvY2ssIE5VTEwpOwogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzU2LDcgKzUxMiw2IEBACiAKICAgICAvKiBBY3R1YWxseSBuZWdvdGlhdGUgU1NMIGNvbm5lY3Rpb24gKi8KICAgICAvKiBYWFggSWYgU1NMX2RvX2hhbmRzaGFrZSgpIHJldHVybnMgMCwgaXQncyBhbHNvIGEgZmFpbHVyZS4gKi8KLSAgICBzb2Nrc3RhdGUgPSAwOwogICAgIGRvIHsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICByZXQgPSBTU0xfZG9faGFuZHNoYWtlKHNlbGYtPnNzbCk7CkBAIC04ODIsMTkgKzEwMzcsMTUgQEAKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKICAgICBpbnQgbGVuOwogICAgIGludCB2ZXJpZmljYXRpb247Ci0gICAgUHlPYmplY3QgKmJpbmFyeV9tb2RlID0gUHlfTm9uZTsKLSAgICBpbnQgYjsKKyAgICBpbnQgYmluYXJ5X21vZGUgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpwZWVyX2NlcnRpZmljYXRlIiwgJmJpbmFyeV9tb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOnBlZXJfY2VydGlmaWNhdGUiLCAmYmluYXJ5X21vZGUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghc2VsZi0+cGVlcl9jZXJ0KQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIAotICAgIGIgPSBQeU9iamVjdF9Jc1RydWUoYmluYXJ5X21vZGUpOwotICAgIGlmIChiIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGIpIHsKKyAgICBpZiAoYmluYXJ5X21vZGUpIHsKICAgICAgICAgLyogcmV0dXJuIGNlcnQgaW4gREVSLWVuY29kZWQgZm9ybWF0ICovCiAKICAgICAgICAgdW5zaWduZWQgY2hhciAqYnl0ZXNfYnVmID0gTlVMTDsKQEAgLTk4MCw2ICsxMTMxLDM5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECitzdGF0aWMgUHlPYmplY3QgKlB5U1NMX3NlbGVjdGVkX25wbl9wcm90b2NvbChQeVNTTFNvY2tldCAqc2VsZikgeworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm91dDsKKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOworCisgICAgU1NMX2dldDBfbmV4dF9wcm90b19uZWdvdGlhdGVkKHNlbGYtPnNzbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXQsICZvdXRsZW4pOworCisgICAgaWYgKG91dCA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopIG91dCwgb3V0bGVuKTsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKlB5U1NMX2NvbXByZXNzaW9uKFB5U1NMU29ja2V0ICpzZWxmKSB7CisjaWZkZWYgT1BFTlNTTF9OT19DT01QCisgICAgUHlfUkVUVVJOX05PTkU7CisjZWxzZQorICAgIGNvbnN0IENPTVBfTUVUSE9EICpjb21wX21ldGhvZDsKKyAgICBjb25zdCBjaGFyICpzaG9ydF9uYW1lOworCisgICAgaWYgKHNlbGYtPnNzbCA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBjb21wX21ldGhvZCA9IFNTTF9nZXRfY3VycmVudF9jb21wcmVzc2lvbihzZWxmLT5zc2wpOworICAgIGlmIChjb21wX21ldGhvZCA9PSBOVUxMIHx8IGNvbXBfbWV0aG9kLT50eXBlID09IE5JRF91bmRlZikKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgc2hvcnRfbmFtZSA9IE9CSl9uaWQyc24oY29tcF9tZXRob2QtPnR5cGUpOworICAgIGlmIChzaG9ydF9uYW1lID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHNob3J0X25hbWUpOworI2VuZGlmCit9CisKIHN0YXRpYyB2b2lkIFB5U1NMX2RlYWxsb2MoUHlTU0xTb2NrZXQgKnNlbGYpCiB7CiAgICAgaWYgKHNlbGYtPnBlZXJfY2VydCkgICAgICAgIC8qIFBvc3NpYmxlIG5vdCB0byBoYXZlIG9uZT8gKi8KQEAgLTExMDAsNyArMTI4NCw2IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGRvIHsKLSAgICAgICAgZXJyID0gMDsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBsZW4gPSBTU0xfd3JpdGUoc2VsZi0+c3NsLCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgZXJyID0gU1NMX2dldF9lcnJvcihzZWxmLT5zc2wsIGxlbik7CkBAIC0xMjM2LDcgKzE0MTksNiBAQAogICAgICAgICB9CiAgICAgfQogICAgIGRvIHsKLSAgICAgICAgZXJyID0gMDsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBjb3VudCA9IFNTTF9yZWFkKHNlbGYtPnNzbCwgbWVtLCBsZW4pOwogICAgICAgICBlcnIgPSBTU0xfZ2V0X2Vycm9yKHNlbGYtPnNzbCwgY291bnQpOwpAQCAtMTM4OCw2ICsxNTcwLDQxIEBACiBEb2VzIHRoZSBTU0wgc2h1dGRvd24gaGFuZHNoYWtlIHdpdGggdGhlIHJlbW90ZSBlbmQsIGFuZCByZXR1cm5zXG5cCiB0aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LiIpOwogCisjaWYgSEFWRV9PUEVOU1NMX0ZJTklTSEVECitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfdGxzX3VuaXF1ZV9jYihQeVNTTFNvY2tldCAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKyAgICBjaGFyIGJ1ZltQeVNTTF9DQl9NQVhMRU5dOworICAgIGludCBsZW47CisKKyAgICBpZiAoU1NMX3Nlc3Npb25fcmV1c2VkKHNlbGYtPnNzbCkgXiAhc2VsZi0+c29ja2V0X3R5cGUpIHsKKyAgICAgICAgLyogaWYgc2Vzc2lvbiBpcyByZXN1bWVkIFhPUiB3ZSBhcmUgdGhlIGNsaWVudCAqLworICAgICAgICBsZW4gPSBTU0xfZ2V0X2ZpbmlzaGVkKHNlbGYtPnNzbCwgYnVmLCBQeVNTTF9DQl9NQVhMRU4pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogaWYgYSBuZXcgc2Vzc2lvbiBYT1Igd2UgYXJlIHRoZSBzZXJ2ZXIgKi8KKyAgICAgICAgbGVuID0gU1NMX2dldF9wZWVyX2ZpbmlzaGVkKHNlbGYtPnNzbCwgYnVmLCBQeVNTTF9DQl9NQVhMRU4pOworICAgIH0KKworICAgIC8qIEl0IGNhbm5vdCBiZSBuZWdhdGl2ZSBpbiBjdXJyZW50IE9wZW5TU0wgdmVyc2lvbiBhcyBvZiBKdWx5IDIwMTEgKi8KKyAgICBhc3NlcnQobGVuID49IDApOworICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisKKyAgICByZXR2YWwgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGJ1ZiwgbGVuKTsKKworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF90bHNfdW5pcXVlX2NiX2RvYywKKyJ0bHNfdW5pcXVlX2NiKCkgLT4gYnl0ZXNcblwKK1xuXAorUmV0dXJucyB0aGUgJ3Rscy11bmlxdWUnIGNoYW5uZWwgYmluZGluZyBkYXRhLCBhcyBkZWZpbmVkIGJ5IFJGQyA1OTI5LlxuXAorXG5cCitJZiB0aGUgVExTIGhhbmRzaGFrZSBpcyBub3QgeWV0IGNvbXBsZXRlLCBOb25lIGlzIHJldHVybmVkIik7CisKKyNlbmRpZiAvKiBIQVZFX09QRU5TU0xfRklOSVNIRUQgKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIFB5U1NMTWV0aG9kc1tdID0gewogICAgIHsiZG9faGFuZHNoYWtlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTGRvX2hhbmRzaGFrZSwgTUVUSF9OT0FSR1N9LApAQCAtMTQwMCw4ICsxNjE3LDE2IEBACiAgICAgeyJwZWVyX2NlcnRpZmljYXRlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3BlZXJjZXJ0LCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5U1NMX3BlZXJjZXJ0X2RvY30sCiAgICAgeyJjaXBoZXIiLCAoUHlDRnVuY3Rpb24pUHlTU0xfY2lwaGVyLCBNRVRIX05PQVJHU30sCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIHsic2VsZWN0ZWRfbnBuX3Byb3RvY29sIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3NlbGVjdGVkX25wbl9wcm90b2NvbCwgTUVUSF9OT0FSR1N9LAorI2VuZGlmCisgICAgeyJjb21wcmVzc2lvbiIsIChQeUNGdW5jdGlvbilQeVNTTF9jb21wcmVzc2lvbiwgTUVUSF9OT0FSR1N9LAogICAgIHsic2h1dGRvd24iLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMc2h1dGRvd24sIE1FVEhfTk9BUkdTLAogICAgICBQeVNTTF9TU0xzaHV0ZG93bl9kb2N9LAorI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAorICAgIHsidGxzX3VuaXF1ZV9jYiIsIChQeUNGdW5jdGlvbilQeVNTTF90bHNfdW5pcXVlX2NiLCBNRVRIX05PQVJHUywKKyAgICAgUHlTU0xfdGxzX3VuaXF1ZV9jYl9kb2N9LAorI2VuZGlmCiAgICAge05VTEwsIE5VTEx9CiB9OwogCkBAIC0xNTA1LDYgKzE3MzAsOSBAQAogY29udGV4dF9kZWFsbG9jKFB5U1NMQ29udGV4dCAqc2VsZikKIHsKICAgICBTU0xfQ1RYX2ZyZWUoc2VsZi0+Y3R4KTsKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisgICAgUHlNZW1fRnJlZShzZWxmLT5ucG5fcHJvdG9jb2xzKTsKKyNlbmRpZgogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7CiB9CiAKQEAgLTE1MjksNiArMTc1Nyw4NyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorLyogdGhpcyBjYWxsYmFjayBnZXRzIHBhc3NlZCB0byBTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZlcnRpc2VfY2IgKi8KK3N0YXRpYyBpbnQKK19hZHZlcnRpc2VOUE5fY2IoU1NMICpzLCAKKyAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqKmRhdGEsIHVuc2lnbmVkIGludCAqbGVuLCAKKyAgICAgICAgICAgICAgICAgdm9pZCAqYXJncykKK3sKKyAgICBQeVNTTENvbnRleHQgKnNzbF9jdHggPSAoUHlTU0xDb250ZXh0ICopIGFyZ3M7CisKKyAgICBpZiAoc3NsX2N0eC0+bnBuX3Byb3RvY29scyA9PSBOVUxMKSB7CisgICAgICAgICpkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgIiI7CisgICAgICAgICpsZW4gPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgICpkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKKyAgICAgICAgKmxlbiA9IHNzbF9jdHgtPm5wbl9wcm90b2NvbHNfbGVuOworICAgIH0KKworICAgIHJldHVybiBTU0xfVExTRVhUX0VSUl9PSzsKK30KKy8qIHRoaXMgY2FsbGJhY2sgZ2V0cyBwYXNzZWQgdG8gU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxlY3RfY2IgKi8KK3N0YXRpYyBpbnQKK19zZWxlY3ROUE5fY2IoU1NMICpzLCAKKyAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKm91dCwgdW5zaWduZWQgY2hhciAqb3V0bGVuLAorICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzZXJ2ZXIsIHVuc2lnbmVkIGludCBzZXJ2ZXJfbGVuLAorICAgICAgICAgICAgICB2b2lkICphcmdzKQoreworICAgIFB5U1NMQ29udGV4dCAqc3NsX2N0eCA9IChQeVNTTENvbnRleHQgKikgYXJnczsKKworICAgIHVuc2lnbmVkIGNoYXIgKmNsaWVudCA9ICh1bnNpZ25lZCBjaGFyICopIHNzbF9jdHgtPm5wbl9wcm90b2NvbHM7CisgICAgaW50IGNsaWVudF9sZW47CisKKyAgICBpZiAoY2xpZW50ID09IE5VTEwpIHsKKyAgICAgICAgY2xpZW50ID0gKHVuc2lnbmVkIGNoYXIgKikgIiI7CisgICAgICAgIGNsaWVudF9sZW4gPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGNsaWVudF9sZW4gPSBzc2xfY3R4LT5ucG5fcHJvdG9jb2xzX2xlbjsKKyAgICB9CisKKyAgICBTU0xfc2VsZWN0X25leHRfcHJvdG8ob3V0LCBvdXRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciwgc2VydmVyX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LCBjbGllbnRfbGVuKTsKKworICAgIHJldHVybiBTU0xfVExTRVhUX0VSUl9PSzsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorX3NldF9ucG5fcHJvdG9jb2xzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIFB5X2J1ZmZlciBwcm90b3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOnNldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc2VsZi0+bnBuX3Byb3RvY29scyA9IFB5TWVtX01hbGxvYyhwcm90b3MubGVuKTsKKyAgICBpZiAoc2VsZi0+bnBuX3Byb3RvY29scyA9PSBOVUxMKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIH0KKyAgICBtZW1jcHkoc2VsZi0+bnBuX3Byb3RvY29scywgcHJvdG9zLmJ1ZiwgcHJvdG9zLmxlbik7CisgICAgc2VsZi0+bnBuX3Byb3RvY29sc19sZW4gPSAoaW50KSBwcm90b3MubGVuOworCisgICAgLyogc2V0IGJvdGggc2VydmVyIGFuZCBjbGllbnQgY2FsbGJhY2tzLCBiZWNhdXNlIHRoZSBjb250ZXh0IGNhbgorICAgICAqIGJlIHVzZWQgdG8gY3JlYXRlIGJvdGggdHlwZXMgb2Ygc29ja2V0cyAqLworICAgIFNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZWRfY2Ioc2VsZi0+Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FkdmVydGlzZU5QTl9jYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpOworICAgIFNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiKHNlbGYtPmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZWN0TlBOX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpOworCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKKyNlbHNlCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJUaGUgTlBOIGV4dGVuc2lvbiByZXF1aXJlcyBPcGVuU1NMIDEuMC4xIG9yIGxhdGVyLiIpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmCit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRfdmVyaWZ5X21vZGUoUHlTU0xDb250ZXh0ICpzZWxmLCB2b2lkICpjKQogewpAQCAtMTU5NSwxOSArMTkwNCwxMTggQEAKICAgICByZXR1cm4gMDsKIH0KIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5VGhyZWFkU3RhdGUgKnRocmVhZF9zdGF0ZTsKKyAgICBQeU9iamVjdCAqY2FsbGFibGU7CisgICAgY2hhciAqcGFzc3dvcmQ7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGludCBlcnJvcjsKK30gX1B5U1NMUGFzc3dvcmRJbmZvOworCitzdGF0aWMgaW50CitfcHdpbmZvX3NldChfUHlTU0xQYXNzd29yZEluZm8gKnB3X2luZm8sIFB5T2JqZWN0KiBwYXNzd29yZCwKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJhZF90eXBlX2Vycm9yKQoreworICAgIC8qIFNldCB0aGUgcGFzc3dvcmQgYW5kIHNpemUgZmllbGRzIG9mIGEgX1B5U1NMUGFzc3dvcmRJbmZvIHN0cnVjdAorICAgICAgIGZyb20gYSB1bmljb2RlLCBieXRlcywgb3IgYnl0ZSBhcnJheSBvYmplY3QuCisgICAgICAgVGhlIHBhc3N3b3JkIGZpZWxkIHdpbGwgYmUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBtdXN0IGJlIGZyZWVkCisgICAgICAgYnkgdGhlIGNhbGxlciAqLworICAgIFB5T2JqZWN0ICpwYXNzd29yZF9ieXRlcyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZGF0YSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwYXNzd29yZCkpIHsKKyAgICAgICAgcGFzc3dvcmRfYnl0ZXMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHBhc3N3b3JkLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFwYXNzd29yZF9ieXRlcykgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBkYXRhID0gUHlCeXRlc19BU19TVFJJTkcocGFzc3dvcmRfYnl0ZXMpOworICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShwYXNzd29yZF9ieXRlcyk7CisgICAgfSBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKHBhc3N3b3JkKSkgeworICAgICAgICBkYXRhID0gUHlCeXRlc19BU19TVFJJTkcocGFzc3dvcmQpOworICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShwYXNzd29yZCk7CisgICAgfSBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhwYXNzd29yZCkpIHsKKyAgICAgICAgZGF0YSA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhwYXNzd29yZCk7CisgICAgICAgIHNpemUgPSBQeUJ5dGVBcnJheV9HRVRfU0laRShwYXNzd29yZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgYmFkX3R5cGVfZXJyb3IpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGZyZWUocHdfaW5mby0+cGFzc3dvcmQpOworICAgIHB3X2luZm8tPnBhc3N3b3JkID0gbWFsbG9jKHNpemUpOworICAgIGlmICghcHdfaW5mby0+cGFzc3dvcmQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBhbGxvY2F0ZSBwYXNzd29yZCBidWZmZXIiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgbWVtY3B5KHB3X2luZm8tPnBhc3N3b3JkLCBkYXRhLCBzaXplKTsKKyAgICBwd19pbmZvLT5zaXplID0gc2l6ZTsKKworICAgIFB5X1hERUNSRUYocGFzc3dvcmRfYnl0ZXMpOworICAgIHJldHVybiAxOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHBhc3N3b3JkX2J5dGVzKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX3Bhc3N3b3JkX2NhbGxiYWNrKGNoYXIgKmJ1ZiwgaW50IHNpemUsIGludCByd2ZsYWcsIHZvaWQgKnVzZXJkYXRhKQoreworICAgIF9QeVNTTFBhc3N3b3JkSW5mbyAqcHdfaW5mbyA9IChfUHlTU0xQYXNzd29yZEluZm8qKSB1c2VyZGF0YTsKKyAgICBQeU9iamVjdCAqZm5fcmV0ID0gTlVMTDsKKworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby0+dGhyZWFkX3N0YXRlKTsKKworICAgIGlmIChwd19pbmZvLT5jYWxsYWJsZSkgeworICAgICAgICBmbl9yZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHB3X2luZm8tPmNhbGxhYmxlLCBOVUxMKTsKKyAgICAgICAgaWYgKCFmbl9yZXQpIHsKKyAgICAgICAgICAgIC8qIFRPRE86IEl0IHdvdWxkIGJlIG5pY2UgdG8gbW92ZSBfY3R5cGVzX2FkZF90cmFjZWJhY2soKSBpbnRvIHRoZQorICAgICAgICAgICAgICAgY29yZSBweXRob24gQVBJLCBzbyB3ZSBjb3VsZCB1c2UgaXQgdG8gYWRkIGEgZnJhbWUgaGVyZSAqLworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghX3B3aW5mb19zZXQocHdfaW5mbywgZm5fcmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCBjYWxsYmFjayBtdXN0IHJldHVybiBhIHN0cmluZyIpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X0NMRUFSKGZuX3JldCk7CisgICAgfQorCisgICAgaWYgKHB3X2luZm8tPnNpemUgPiBzaXplKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInBhc3N3b3JkIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAlZCBieXRlcyIsIHNpemUpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLT50aHJlYWRfc3RhdGUpOworICAgIG1lbWNweShidWYsIHB3X2luZm8tPnBhc3N3b3JkLCBwd19pbmZvLT5zaXplKTsKKyAgICByZXR1cm4gcHdfaW5mby0+c2l6ZTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihmbl9yZXQpOworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLT50aHJlYWRfc3RhdGUpOworICAgIHB3X2luZm8tPmVycm9yID0gMTsKKyAgICByZXR1cm4gLTE7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBsb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqY2VydGZpbGUsICprZXlmaWxlID0gTlVMTDsKKyAgICBjaGFyICprd2xpc3RbXSA9IHsiY2VydGZpbGUiLCAia2V5ZmlsZSIsICJwYXNzd29yZCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpjZXJ0ZmlsZSwgKmtleWZpbGUgPSBOVUxMLCAqcGFzc3dvcmQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjZXJ0ZmlsZV9ieXRlcyA9IE5VTEwsICprZXlmaWxlX2J5dGVzID0gTlVMTDsKKyAgICBwZW1fcGFzc3dvcmRfY2IgKm9yaWdfcGFzc3dkX2NiID0gc2VsZi0+Y3R4LT5kZWZhdWx0X3Bhc3N3ZF9jYWxsYmFjazsKKyAgICB2b2lkICpvcmlnX3Bhc3N3ZF91c2VyZGF0YSA9IHNlbGYtPmN0eC0+ZGVmYXVsdF9wYXNzd2RfY2FsbGJhY2tfdXNlcmRhdGE7CisgICAgX1B5U1NMUGFzc3dvcmRJbmZvIHB3X2luZm8gPSB7IE5VTEwsIE5VTEwsIE5VTEwsIDAsIDAgfTsKICAgICBpbnQgcjsKIAogICAgIGVycm5vID0gMDsKICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAotICAgICAgICAiT3xPOmxvYWRfY2VydF9jaGFpbiIsIGt3bGlzdCwKLSAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSkpCisgICAgICAgICJPfE9POmxvYWRfY2VydF9jaGFpbiIsIGt3bGlzdCwKKyAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSwgJnBhc3N3b3JkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGtleWZpbGUgPT0gUHlfTm9uZSkKICAgICAgICAga2V5ZmlsZSA9IE5VTEw7CkBAIC0xNjIxLDEyICsyMDI5LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAia2V5ZmlsZSBzaG91bGQgYmUgYSB2YWxpZCBmaWxlc3lzdGVtIHBhdGgiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChwYXNzd29yZCAmJiBwYXNzd29yZCAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChQeUNhbGxhYmxlX0NoZWNrKHBhc3N3b3JkKSkgeworICAgICAgICAgICAgcHdfaW5mby5jYWxsYWJsZSA9IHBhc3N3b3JkOworICAgICAgICB9IGVsc2UgaWYgKCFfcHdpbmZvX3NldCgmcHdfaW5mbywgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCBzaG91bGQgYmUgYSBzdHJpbmcgb3IgY2FsbGFibGUiKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYihzZWxmLT5jdHgsIF9wYXNzd29yZF9jYWxsYmFjayk7CisgICAgICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiX3VzZXJkYXRhKHNlbGYtPmN0eCwgJnB3X2luZm8pOworICAgIH0KKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIHIgPSBTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9jaGFpbl9maWxlKHNlbGYtPmN0eCwKICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoY2VydGZpbGVfYnl0ZXMpKTsKLSAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIGlmIChyICE9IDEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IDApIHsKKyAgICAgICAgaWYgKHB3X2luZm8uZXJyb3IpIHsKKyAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOworICAgICAgICAgICAgLyogdGhlIHBhc3N3b3JkIGNhbGxiYWNrIGhhcyBhbHJlYWR5IHNldCB0aGUgZXJyb3IgaW5mb3JtYXRpb24gKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlcnJubyAhPSAwKSB7CiAgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgfQpAQCAtMTYzNSwzMyArMjA1Nyw0MyBAQAogICAgICAgICB9CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIHIgPSBTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUoc2VsZi0+Y3R4LAogICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhrZXlmaWxlID8ga2V5ZmlsZV9ieXRlcyA6IGNlcnRmaWxlX2J5dGVzKSwKICAgICAgICAgU1NMX0ZJTEVUWVBFX1BFTSk7Ci0gICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9YREVDUkVGKGtleWZpbGVfYnl0ZXMpOwotICAgIFB5X1hERUNSRUYoY2VydGZpbGVfYnl0ZXMpOworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOworICAgIFB5X0NMRUFSKGtleWZpbGVfYnl0ZXMpOworICAgIFB5X0NMRUFSKGNlcnRmaWxlX2J5dGVzKTsKICAgICBpZiAociAhPSAxKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSAwKSB7CisgICAgICAgIGlmIChwd19pbmZvLmVycm9yKSB7CisgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKyAgICAgICAgICAgIC8qIHRoZSBwYXNzd29yZCBjYWxsYmFjayBoYXMgYWxyZWFkeSBzZXQgdGhlIGVycm9yIGluZm9ybWF0aW9uICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXJybm8gIT0gMCkgewogICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLnRocmVhZF9zdGF0ZSk7CiAgICAgciA9IFNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXkoc2VsZi0+Y3R4KTsKLSAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIGlmIChyICE9IDEpIHsKICAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYihzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX2NiKTsKKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YShzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX3VzZXJkYXRhKTsKKyAgICBmcmVlKHB3X2luZm8ucGFzc3dvcmQpOwogICAgIFB5X1JFVFVSTl9OT05FOwogCiBlcnJvcjoKKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYihzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX2NiKTsKKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YShzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX3VzZXJkYXRhKTsKKyAgICBmcmVlKHB3X2luZm8ucGFzc3dvcmQpOwogICAgIFB5X1hERUNSRUYoa2V5ZmlsZV9ieXRlcyk7CiAgICAgUHlfWERFQ1JFRihjZXJ0ZmlsZV9ieXRlcyk7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNzI0LDYgKzIxNTYsMzggQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2xvYWRfZGhfcGFyYW1zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmZpbGVwYXRoKQoreworICAgIEZJTEUgKmY7CisgICAgREggKmRoOworCisgICAgZiA9IF9QeV9mb3BlbihmaWxlcGF0aCwgInJiIik7CisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgZmlsZXBhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZXJybm8gPSAwOworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBkaCA9IFBFTV9yZWFkX0RIcGFyYW1zKGYsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGRoID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGVycm5vICE9IDApIHsKKyAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIGZpbGVwYXRoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoU1NMX0NUWF9zZXRfdG1wX2RoKHNlbGYtPmN0eCwgZGgpID09IDApCisgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgIERIX2ZyZWUoZGgpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogY29udGV4dF93cmFwX3NvY2tldChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBjaGFyICprd2xpc3RbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKQEAgLTE4MDgsNiArMjI3MiwzNSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorc3RhdGljIFB5T2JqZWN0ICoKK3NldF9lY2RoX2N1cnZlKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm5hbWVfYnl0ZXM7CisgICAgaW50IG5pZDsKKyAgICBFQ19LRVkgKmtleTsKKworICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG5hbWUsICZuYW1lX2J5dGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobmFtZV9ieXRlcykpOworICAgIG5pZCA9IE9CSl9zbjJuaWQoUHlCeXRlc19BU19TVFJJTkcobmFtZV9ieXRlcykpOworICAgIFB5X0RFQ1JFRihuYW1lX2J5dGVzKTsKKyAgICBpZiAobmlkID09IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBlbGxpcHRpYyBjdXJ2ZSBuYW1lICVSIiwgbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBrZXkgPSBFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWUobmlkKTsKKyAgICBpZiAoa2V5ID09IE5VTEwpIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBTU0xfQ1RYX3NldF90bXBfZWNkaChzZWxmLT5jdHgsIGtleSk7CisgICAgRUNfS0VZX2ZyZWUoa2V5KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlHZXRTZXREZWYgY29udGV4dF9nZXRzZXRsaXN0W10gPSB7CiAgICAgeyJvcHRpb25zIiwgKGdldHRlcikgZ2V0X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgKHNldHRlcikgc2V0X29wdGlvbnMsIE5VTEx9LApAQCAtMTgyMSwxNCArMjMxNCwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKICAgICB7InNldF9jaXBoZXJzIiwgKFB5Q0Z1bmN0aW9uKSBzZXRfY2lwaGVycywKICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7Il9zZXRfbnBuX3Byb3RvY29scyIsIChQeUNGdW5jdGlvbikgX3NldF9ucG5fcHJvdG9jb2xzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKICAgICB7ImxvYWRfY2VydF9jaGFpbiIsIChQeUNGdW5jdGlvbikgbG9hZF9jZXJ0X2NoYWluLAogICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCisgICAgeyJsb2FkX2RoX3BhcmFtcyIsIChQeUNGdW5jdGlvbikgbG9hZF9kaF9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCiAgICAgeyJsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCAoUHlDRnVuY3Rpb24pIGxvYWRfdmVyaWZ5X2xvY2F0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAogICAgIHsic2Vzc2lvbl9zdGF0cyIsIChQeUNGdW5jdGlvbikgc2Vzc2lvbl9zdGF0cywKICAgICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAgeyJzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMiLCAoUHlDRnVuY3Rpb24pIHNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyNpZm5kZWYgT1BFTlNTTF9OT19FQ0RICisgICAgeyJzZXRfZWNkaF9jdXJ2ZSIsIChQeUNGdW5jdGlvbikgc2V0X2VjZGhfY3VydmUsCisgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCisjZW5kaWYKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xODk5LDYgKzI0MDAsNjkgQEAKIGJvdW5kIG9uIHRoZSBlbnRyb3B5IGNvbnRhaW5lZCBpbiBzdHJpbmcuICBTZWUgUkZDIDE3NTAuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCitQeVNTTF9SQU5EKGludCBsZW4sIGludCBwc2V1ZG8pCit7CisgICAgaW50IG9rOworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGVycjsKKyAgICBjb25zdCBjaGFyICplcnJzdHI7CisgICAgUHlPYmplY3QgKnY7CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHBzZXVkbykgeworICAgICAgICBvayA9IFJBTkRfcHNldWRvX2J5dGVzKCh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIGxlbik7CisgICAgICAgIGlmIChvayA9PSAwIHx8IG9rID09IDEpCisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk8iLCBieXRlcywgb2sgPT0gMSA/IFB5X1RydWUgOiBQeV9GYWxzZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBvayA9IFJBTkRfYnl0ZXMoKHVuc2lnbmVkIGNoYXIqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgbGVuKTsKKyAgICAgICAgaWYgKG9rID09IDEpCisgICAgICAgICAgICByZXR1cm4gYnl0ZXM7CisgICAgfQorICAgIFB5X0RFQ1JFRihieXRlcyk7CisKKyAgICBlcnIgPSBFUlJfZ2V0X2Vycm9yKCk7CisgICAgZXJyc3RyID0gRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoZXJyKTsKKyAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGtzKSIsIGVyciwgZXJyc3RyKTsKKyAgICBpZiAodiAhPSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeVNTTEVycm9yT2JqZWN0LCB2KTsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX1JBTkRfYnl0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBsZW47CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOlJBTkRfYnl0ZXMiLCAmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5U1NMX1JBTkQobGVuLCAwKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfYnl0ZXNfZG9jLAorIlJBTkRfYnl0ZXMobikgLT4gYnl0ZXNcblwKK1xuXAorR2VuZXJhdGUgbiBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBieXRlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX1JBTkRfcHNldWRvX2J5dGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgbGVuOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpSQU5EX3BzZXVkb19ieXRlcyIsICZsZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlTU0xfUkFORChsZW4sIDEpOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXNfZG9jLAorIlJBTkRfcHNldWRvX2J5dGVzKG4pIC0+IChieXRlcywgaXNfY3J5cHRvZ3JhcGhpYylcblwKK1xuXAorR2VuZXJhdGUgbiBwc2V1ZG8tcmFuZG9tIGJ5dGVzLiBpc19jcnlwdG9ncmFwaGljIGlzIFRydWUgaWYgdGhlIGJ5dGVzXAorZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCiBQeVNTTF9SQU5EX3N0YXR1cyhQeU9iamVjdCAqc2VsZikKIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFJBTkRfc3RhdHVzKCkpOwpAQCAtMTk1MSw2ICsyNTE1LDEwIEBACiAjaWZkZWYgSEFWRV9PUEVOU1NMX1JBTkQKICAgICB7IlJBTkRfYWRkIiwgICAgICAgICAgICBQeVNTTF9SQU5EX2FkZCwgTUVUSF9WQVJBUkdTLAogICAgICBQeVNTTF9SQU5EX2FkZF9kb2N9LAorICAgIHsiUkFORF9ieXRlcyIsICAgICAgICAgIFB5U1NMX1JBTkRfYnl0ZXMsIE1FVEhfVkFSQVJHUywKKyAgICAgUHlTU0xfUkFORF9ieXRlc19kb2N9LAorICAgIHsiUkFORF9wc2V1ZG9fYnl0ZXMiLCAgIFB5U1NMX1JBTkRfcHNldWRvX2J5dGVzLCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5U1NMX1JBTkRfcHNldWRvX2J5dGVzX2RvY30sCiAgICAgeyJSQU5EX2VnZCIsICAgICAgICAgICAgUHlTU0xfUkFORF9lZ2QsIE1FVEhfVkFSQVJHUywKICAgICAgUHlTU0xfUkFORF9lZ2RfZG9jfSwKICAgICB7IlJBTkRfc3RhdHVzIiwgICAgICAgICAoUHlDRnVuY3Rpb24pUHlTU0xfUkFORF9zdGF0dXMsIE1FVEhfTk9BUkdTLApAQCAtMjA3MSw2ICsyNjM5LDggQEAKICAgICB1bnNpZ25lZCBsb25nIGxpYnZlcjsKICAgICB1bnNpZ25lZCBpbnQgbWFqb3IsIG1pbm9yLCBmaXgsIHBhdGNoLCBzdGF0dXM7CiAgICAgUHlTb2NrZXRNb2R1bGVfQVBJT2JqZWN0ICpzb2NrZXRfYXBpOworICAgIHN0cnVjdCBweV9zc2xfZXJyb3JfY29kZSAqZXJyY29kZTsKKyAgICBzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSAqbGliY29kZTsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMQ29udGV4dF9UeXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjEwMCwxMiArMjY3MCwzOCBAQAogICAgIE9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zKCk7CiAKICAgICAvKiBBZGQgc3ltYm9scyB0byBtb2R1bGUgZGljdCAqLwotICAgIFB5U1NMRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb24oInNzbC5TU0xFcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVNvY2tldE1vZHVsZS5lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHNzbGVycm9yX3R5cGVfc2xvdHNbMF0ucGZ1bmMgPSBQeUV4Y19PU0Vycm9yOworICAgIFB5U1NMRXJyb3JPYmplY3QgPSBQeVR5cGVfRnJvbVNwZWMoJnNzbGVycm9yX3R5cGVfc3BlYyk7CiAgICAgaWYgKFB5U1NMRXJyb3JPYmplY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFcnJvciIsIFB5U1NMRXJyb3JPYmplY3QpICE9IDApCisKKyAgICBQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMWmVyb1JldHVybkVycm9yIiwgU1NMWmVyb1JldHVybkVycm9yX2RvYywKKyAgICAgICAgUHlTU0xFcnJvck9iamVjdCwgTlVMTCk7CisgICAgUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygKKyAgICAgICAgInNzbC5TU0xXYW50UmVhZEVycm9yIiwgU1NMV2FudFJlYWRFcnJvcl9kb2MsCisgICAgICAgIFB5U1NMRXJyb3JPYmplY3QsIE5VTEwpOworICAgIFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKAorICAgICAgICAic3NsLlNTTFdhbnRXcml0ZUVycm9yIiwgU1NMV2FudFdyaXRlRXJyb3JfZG9jLAorICAgICAgICBQeVNTTEVycm9yT2JqZWN0LCBOVUxMKTsKKyAgICBQeVNTTFN5c2NhbGxFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMU3lzY2FsbEVycm9yIiwgU1NMU3lzY2FsbEVycm9yX2RvYywKKyAgICAgICAgUHlTU0xFcnJvck9iamVjdCwgTlVMTCk7CisgICAgUHlTU0xFT0ZFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMRU9GRXJyb3IiLCBTU0xFT0ZFcnJvcl9kb2MsCisgICAgICAgIFB5U1NMRXJyb3JPYmplY3QsIE5VTEwpOworICAgIGlmIChQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMV2FudFJlYWRFcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QgPT0gTlVMTAorICAgICAgICB8fCBQeVNTTFN5c2NhbGxFcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMRU9GRXJyb3JPYmplY3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFcnJvciIsIFB5U1NMRXJyb3JPYmplY3QpICE9IDAKKyAgICAgICAgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFplcm9SZXR1cm5FcnJvciIsIFB5U1NMWmVyb1JldHVybkVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xXYW50UmVhZEVycm9yIiwgUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xXYW50V3JpdGVFcnJvciIsIFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QpICE9IDAKKyAgICAgICAgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFN5c2NhbGxFcnJvciIsIFB5U1NMU3lzY2FsbEVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFT0ZFcnJvciIsIFB5U1NMRU9GRXJyb3JPYmplY3QpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX1NTTENvbnRleHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlTU0xDb250ZXh0X1R5cGUpICE9IDApCkBAIC0yMTU4LDYgKzI3NTQsMTYgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fU1NMdjIiLCBTU0xfT1BfTk9fU1NMdjIpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19TU0x2MyIsIFNTTF9PUF9OT19TU0x2Myk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RMU3YxIiwgU1NMX09QX05PX1RMU3YxKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfU0lOR0xFX0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfREhfVVNFKTsKKyNpZmRlZiBTU0xfT1BfU0lOR0xFX0VDREhfVVNFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfRUNESF9VU0UpOworI2VuZGlmCisjaWZkZWYgU1NMX09QX05PX0NPTVBSRVNTSU9OCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX0NPTVBSRVNTSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfTk9fQ09NUFJFU1NJT04pOworI2VuZGlmCiAKICNpZmRlZiBTU0xfQ1RSTF9TRVRfVExTRVhUX0hPU1ROQU1FCiAgICAgciA9IFB5X1RydWU7CkBAIC0yMTY3LDYgKzI3NzMsNzQgQEAKICAgICBQeV9JTkNSRUYocik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfU05JIiwgcik7CiAKKyNpZiBIQVZFX09QRU5TU0xfRklOSVNIRUQKKyAgICByID0gUHlfVHJ1ZTsKKyNlbHNlCisgICAgciA9IFB5X0ZhbHNlOworI2VuZGlmCisgICAgUHlfSU5DUkVGKHIpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX1RMU19VTklRVUUiLCByKTsKKworI2lmZGVmIE9QRU5TU0xfTk9fRUNESAorICAgIHIgPSBQeV9GYWxzZTsKKyNlbHNlCisgICAgciA9IFB5X1RydWU7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfRUNESCIsIHIpOworCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIHIgPSBQeV9UcnVlOworI2Vsc2UKKyAgICByID0gUHlfRmFsc2U7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfTlBOIiwgcik7CisKKyAgICAvKiBNYXBwaW5ncyBmb3IgZXJyb3IgY29kZXMgKi8KKyAgICBlcnJfY29kZXNfdG9fbmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgZXJyX25hbWVzX3RvX2NvZGVzID0gUHlEaWN0X05ldygpOworICAgIGlmIChlcnJfY29kZXNfdG9fbmFtZXMgPT0gTlVMTCB8fCBlcnJfbmFtZXNfdG9fY29kZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZXJyY29kZSA9IGVycm9yX2NvZGVzOworICAgIHdoaWxlIChlcnJjb2RlLT5tbmVtb25pYyAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICptbmVtbywgKmtleTsKKyAgICAgICAgbW5lbW8gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhlcnJjb2RlLT5tbmVtb25pYyk7CisgICAgICAgIGtleSA9IFB5X0J1aWxkVmFsdWUoImlpIiwgZXJyY29kZS0+bGlicmFyeSwgZXJyY29kZS0+cmVhc29uKTsKKyAgICAgICAgaWYgKG1uZW1vID09IE5VTEwgfHwga2V5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGVycl9jb2Rlc190b19uYW1lcywga2V5LCBtbmVtbykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGVycl9uYW1lc190b19jb2RlcywgbW5lbW8sIGtleSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihtbmVtbyk7CisgICAgICAgIGVycmNvZGUrKzsKKyAgICB9CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyX2NvZGVzX3RvX25hbWVzIiwgZXJyX2NvZGVzX3RvX25hbWVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyX25hbWVzX3RvX2NvZGVzIiwgZXJyX25hbWVzX3RvX2NvZGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsaWJfY29kZXNfdG9fbmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGxpYl9jb2Rlc190b19uYW1lcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsaWJjb2RlID0gbGlicmFyeV9jb2RlczsKKyAgICB3aGlsZSAobGliY29kZS0+bGlicmFyeSAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICptbmVtbywgKmtleTsKKyAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKGxpYmNvZGUtPmNvZGUpOworICAgICAgICBtbmVtbyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGxpYmNvZGUtPmxpYnJhcnkpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwgfHwgbW5lbW8gPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obGliX2NvZGVzX3RvX25hbWVzLCBrZXksIG1uZW1vKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgUHlfREVDUkVGKG1uZW1vKTsKKyAgICAgICAgbGliY29kZSsrOworICAgIH0KKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJsaWJfY29kZXNfdG9fbmFtZXMiLCBsaWJfY29kZXNfdG9fbmFtZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAKICAgICAvKiBPcGVuU1NMIHZlcnNpb24gKi8KICAgICAvKiBTU0xlYXkoKSBnaXZlcyB1cyB0aGUgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBsaW5rZWQgYWdhaW5zdCwKICAgICAgICB3aGljaCBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaGVhZGVycyB2ZXJzaW9uLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsX2RhdGEuaCBiL01vZHVsZXMvX3NzbF9kYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFhOGQ3YgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NzbF9kYXRhLmgKQEAgLTAsMCArMSwxNjUzIEBACisvKiBGaWxlIGdlbmVyYXRlZCBieSBUb29scy9zc2wvbWFrZV9zc2xfZGF0YS5weSAqLworLyogR2VuZXJhdGVkIG9uIDIwMTItMDUtMTZUMjM6NTY6NDAuOTgxMzgyICovCisKK3N0YXRpYyBzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSBsaWJyYXJ5X2NvZGVzW10gPSB7CisgICAgeyJQRU0iLCBFUlJfTElCX1BFTX0sCisgICAgeyJTU0wiLCBFUlJfTElCX1NTTH0sCisgICAgeyJYNTA5IiwgRVJSX0xJQl9YNTA5fSwKKyAgICB7IE5VTEwgfQorfTsKKworc3RhdGljIHN0cnVjdCBweV9zc2xfZXJyb3JfY29kZSBlcnJvcl9jb2Rlc1tdID0geworICAjaWZkZWYgUEVNX1JfQkFEX0JBU0U2NF9ERUNPREUKKyAgICB7IkJBRF9CQVNFNjRfREVDT0RFIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9CQVNFNjRfREVDT0RFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9CQVNFNjRfREVDT0RFIiwgRVJSX0xJQl9QRU0sIDEwMH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX0RFQ1JZUFQKKyAgICB7IkJBRF9ERUNSWVBUIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9ERUNSWVBUfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ERUNSWVBUIiwgRVJSX0xJQl9QRU0sIDEwMX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX0VORF9MSU5FCisgICAgeyJCQURfRU5EX0xJTkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfQkFEX0VORF9MSU5FfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9FTkRfTElORSIsIEVSUl9MSUJfUEVNLCAxMDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9JVl9DSEFSUworICAgIHsiQkFEX0lWX0NIQVJTIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9JVl9DSEFSU30sCisgICNlbHNlCisgICAgeyJCQURfSVZfQ0hBUlMiLCBFUlJfTElCX1BFTSwgMTAzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CQURfTUFHSUNfTlVNQkVSCisgICAgeyJCQURfTUFHSUNfTlVNQkVSIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9NQUdJQ19OVU1CRVJ9LAorICAjZWxzZQorICAgIHsiQkFEX01BR0lDX05VTUJFUiIsIEVSUl9MSUJfUEVNLCAxMTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9QQVNTV09SRF9SRUFECisgICAgeyJCQURfUEFTU1dPUkRfUkVBRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9CQURfUEFTU1dPUkRfUkVBRH0sCisgICNlbHNlCisgICAgeyJCQURfUEFTU1dPUkRfUkVBRCIsIEVSUl9MSUJfUEVNLCAxMDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9WRVJTSU9OX05VTUJFUgorICAgIHsiQkFEX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9WRVJTSU9OX05VTUJFUn0sCisgICNlbHNlCisgICAgeyJCQURfVkVSU0lPTl9OVU1CRVIiLCBFUlJfTElCX1BFTSwgMTE3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CSU9fV1JJVEVfRkFJTFVSRQorICAgIHsiQklPX1dSSVRFX0ZBSUxVUkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfQklPX1dSSVRFX0ZBSUxVUkV9LAorICAjZWxzZQorICAgIHsiQklPX1dSSVRFX0ZBSUxVUkUiLCBFUlJfTElCX1BFTSwgMTE4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9DSVBIRVJfSVNfTlVMTAorICAgIHsiQ0lQSEVSX0lTX05VTEwiLCBFUlJfTElCX1BFTSwgUEVNX1JfQ0lQSEVSX0lTX05VTEx9LAorICAjZWxzZQorICAgIHsiQ0lQSEVSX0lTX05VTEwiLCBFUlJfTElCX1BFTSwgMTI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9FUlJPUl9DT05WRVJUSU5HX1BSSVZBVEVfS0VZCisgICAgeyJFUlJPUl9DT05WRVJUSU5HX1BSSVZBVEVfS0VZIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0VSUk9SX0NPTlZFUlRJTkdfUFJJVkFURV9LRVl9LAorICAjZWxzZQorICAgIHsiRVJST1JfQ09OVkVSVElOR19QUklWQVRFX0tFWSIsIEVSUl9MSUJfUEVNLCAxMTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0VYUEVDVElOR19QUklWQVRFX0tFWV9CTE9CCisgICAgeyJFWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9FWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQn0sCisgICNlbHNlCisgICAgeyJFWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQiIsIEVSUl9MSUJfUEVNLCAxMTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0VYUEVDVElOR19QVUJMSUNfS0VZX0JMT0IKKyAgICB7IkVYUEVDVElOR19QVUJMSUNfS0VZX0JMT0IiLCBFUlJfTElCX1BFTSwgUEVNX1JfRVhQRUNUSU5HX1BVQkxJQ19LRVlfQkxPQn0sCisgICNlbHNlCisgICAgeyJFWFBFQ1RJTkdfUFVCTElDX0tFWV9CTE9CIiwgRVJSX0xJQl9QRU0sIDEyMH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfSU5DT05TSVNURU5UX0hFQURFUgorICAgIHsiSU5DT05TSVNURU5UX0hFQURFUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9JTkNPTlNJU1RFTlRfSEVBREVSfSwKKyAgI2Vsc2UKKyAgICB7IklOQ09OU0lTVEVOVF9IRUFERVIiLCBFUlJfTElCX1BFTSwgMTIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9LRVlCTE9CX0hFQURFUl9QQVJTRV9FUlJPUgorICAgIHsiS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1IiLCBFUlJfTElCX1BFTSwgUEVNX1JfS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1J9LAorICAjZWxzZQorICAgIHsiS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1IiLCBFUlJfTElCX1BFTSwgMTIyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9LRVlCTE9CX1RPT19TSE9SVAorICAgIHsiS0VZQkxPQl9UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgUEVNX1JfS0VZQkxPQl9UT09fU0hPUlR9LAorICAjZWxzZQorICAgIHsiS0VZQkxPQl9UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9OT1RfREVLX0lORk8KKyAgICB7Ik5PVF9ERUtfSU5GTyIsIEVSUl9MSUJfUEVNLCBQRU1fUl9OT1RfREVLX0lORk99LAorICAjZWxzZQorICAgIHsiTk9UX0RFS19JTkZPIiwgRVJSX0xJQl9QRU0sIDEwNX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfTk9UX0VOQ1JZUFRFRAorICAgIHsiTk9UX0VOQ1JZUFRFRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9OT1RfRU5DUllQVEVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PVF9FTkNSWVBURUQiLCBFUlJfTElCX1BFTSwgMTA2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9OT1RfUFJPQ19UWVBFCisgICAgeyJOT1RfUFJPQ19UWVBFIiwgRVJSX0xJQl9QRU0sIFBFTV9SX05PVF9QUk9DX1RZUEV9LAorICAjZWxzZQorICAgIHsiTk9UX1BST0NfVFlQRSIsIEVSUl9MSUJfUEVNLCAxMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX05PX1NUQVJUX0xJTkUKKyAgICB7Ik5PX1NUQVJUX0xJTkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfTk9fU1RBUlRfTElORX0sCisgICNlbHNlCisgICAgeyJOT19TVEFSVF9MSU5FIiwgRVJSX0xJQl9QRU0sIDEwOH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfUFJPQkxFTVNfR0VUVElOR19QQVNTV09SRAorICAgIHsiUFJPQkxFTVNfR0VUVElOR19QQVNTV09SRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QUk9CTEVNU19HRVRUSU5HX1BBU1NXT1JEfSwKKyAgI2Vsc2UKKyAgICB7IlBST0JMRU1TX0dFVFRJTkdfUEFTU1dPUkQiLCBFUlJfTElCX1BFTSwgMTA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9QVUJMSUNfS0VZX05PX1JTQQorICAgIHsiUFVCTElDX0tFWV9OT19SU0EiLCBFUlJfTElCX1BFTSwgUEVNX1JfUFVCTElDX0tFWV9OT19SU0F9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9OT19SU0EiLCBFUlJfTElCX1BFTSwgMTEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9QVktfREFUQV9UT09fU0hPUlQKKyAgICB7IlBWS19EQVRBX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QVktfREFUQV9UT09fU0hPUlR9LAorICAjZWxzZQorICAgIHsiUFZLX0RBVEFfVE9PX1NIT1JUIiwgRVJSX0xJQl9QRU0sIDEyNH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfUFZLX1RPT19TSE9SVAorICAgIHsiUFZLX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QVktfVE9PX1NIT1JUfSwKKyAgI2Vsc2UKKyAgICB7IlBWS19UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgMTI1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9SRUFEX0tFWQorICAgIHsiUkVBRF9LRVkiLCBFUlJfTElCX1BFTSwgUEVNX1JfUkVBRF9LRVl9LAorICAjZWxzZQorICAgIHsiUkVBRF9LRVkiLCBFUlJfTElCX1BFTSwgMTExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9TSE9SVF9IRUFERVIKKyAgICB7IlNIT1JUX0hFQURFUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9TSE9SVF9IRUFERVJ9LAorICAjZWxzZQorICAgIHsiU0hPUlRfSEVBREVSIiwgRVJSX0xJQl9QRU0sIDExMn0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfVU5TVVBQT1JURURfQ0lQSEVSCisgICAgeyJVTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1BFTSwgUEVNX1JfVU5TVVBQT1JURURfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfUEVNLCAxMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1VOU1VQUE9SVEVEX0VOQ1JZUFRJT04KKyAgICB7IlVOU1VQUE9SVEVEX0VOQ1JZUFRJT04iLCBFUlJfTElCX1BFTSwgUEVNX1JfVU5TVVBQT1JURURfRU5DUllQVElPTn0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9FTkNSWVBUSU9OIiwgRVJSX0xJQl9QRU0sIDExNH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfVU5TVVBQT1JURURfS0VZX0NPTVBPTkVOVFMKKyAgICB7IlVOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1VOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTIiwgRVJSX0xJQl9QRU0sIDEyNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQVBQX0RBVEFfSU5fSEFORFNIQUtFCisgICAgeyJBUFBfREFUQV9JTl9IQU5EU0hBS0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfQVBQX0RBVEFfSU5fSEFORFNIQUtFfSwKKyAgI2Vsc2UKKyAgICB7IkFQUF9EQVRBX0lOX0hBTkRTSEFLRSIsIEVSUl9MSUJfU1NMLCAxMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0FUVEVNUFRfVE9fUkVVU0VfU0VTU0lPTl9JTl9ESUZGRVJFTlRfQ09OVEVYVAorICAgIHsiQVRURU1QVF9UT19SRVVTRV9TRVNTSU9OX0lOX0RJRkZFUkVOVF9DT05URVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0FUVEVNUFRfVE9fUkVVU0VfU0VTU0lPTl9JTl9ESUZGRVJFTlRfQ09OVEVYVH0sCisgICNlbHNlCisgICAgeyJBVFRFTVBUX1RPX1JFVVNFX1NFU1NJT05fSU5fRElGRkVSRU5UX0NPTlRFWFQiLCBFUlJfTElCX1NTTCwgMjcyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfQUxFUlRfUkVDT1JECisgICAgeyJCQURfQUxFUlRfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9BTEVSVF9SRUNPUkR9LAorICAjZWxzZQorICAgIHsiQkFEX0FMRVJUX1JFQ09SRCIsIEVSUl9MSUJfU1NMLCAxMDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9BVVRIRU5USUNBVElPTl9UWVBFCisgICAgeyJCQURfQVVUSEVOVElDQVRJT05fVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfQVVUSEVOVElDQVRJT05fVFlQRX0sCisgICNlbHNlCisgICAgeyJCQURfQVVUSEVOVElDQVRJT05fVFlQRSIsIEVSUl9MSUJfU1NMLCAxMDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9DSEFOR0VfQ0lQSEVSX1NQRUMKKyAgICB7IkJBRF9DSEFOR0VfQ0lQSEVSX1NQRUMiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0NIQU5HRV9DSVBIRVJfU1BFQ30sCisgICNlbHNlCisgICAgeyJCQURfQ0hBTkdFX0NJUEhFUl9TUEVDIiwgRVJSX0xJQl9TU0wsIDEwM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0NIRUNLU1VNCisgICAgeyJCQURfQ0hFQ0tTVU0iLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0NIRUNLU1VNfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9DSEVDS1NVTSIsIEVSUl9MSUJfU1NMLCAxMDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9EQVRBX1JFVFVSTkVEX0JZX0NBTExCQUNLCisgICAgeyJCQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDSyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDS30sCisgICNlbHNlCisgICAgeyJCQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDSyIsIEVSUl9MSUJfU1NMLCAxMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ERUNPTVBSRVNTSU9OCisgICAgeyJCQURfREVDT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREVDT01QUkVTU0lPTn0sCisgICNlbHNlCisgICAgeyJCQURfREVDT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCAxMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ESF9HX0xFTkdUSAorICAgIHsiQkFEX0RIX0dfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9ESF9HX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfREhfR19MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTA4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfREhfUFVCX0tFWV9MRU5HVEgKKyAgICB7IkJBRF9ESF9QVUJfS0VZX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREhfUFVCX0tFWV9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX0RIX1BVQl9LRVlfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEwOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0RIX1BfTEVOR1RICisgICAgeyJCQURfREhfUF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0RIX1BfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ESF9QX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ESUdFU1RfTEVOR1RICisgICAgeyJCQURfRElHRVNUX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRElHRVNUX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfRElHRVNUX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9EU0FfU0lHTkFUVVJFCisgICAgeyJCQURfRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRFNBX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJCQURfRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAxMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9FQ0NfQ0VSVAorICAgIHsiQkFEX0VDQ19DRVJUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9FQ0NfQ0VSVH0sCisgICNlbHNlCisgICAgeyJCQURfRUNDX0NFUlQiLCBFUlJfTElCX1NTTCwgMzA0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfRUNEU0FfU0lHTkFUVVJFCisgICAgeyJCQURfRUNEU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9FQ0RTQV9TSUdOQVRVUkV9LAorICAjZWxzZQorICAgIHsiQkFEX0VDRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAzMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9FQ1BPSU5UCisgICAgeyJCQURfRUNQT0lOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRUNQT0lOVH0sCisgICNlbHNlCisgICAgeyJCQURfRUNQT0lOVCIsIEVSUl9MSUJfU1NMLCAzMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9IQU5EU0hBS0VfTEVOR1RICisgICAgeyJCQURfSEFORFNIQUtFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfSEFORFNIQUtFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfSEFORFNIQUtFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMzJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9IRUxMT19SRVFVRVNUCisgICAgeyJCQURfSEVMTE9fUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfSEVMTE9fUkVRVUVTVH0sCisgICNlbHNlCisgICAgeyJCQURfSEVMTE9fUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCAxMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9MRU5HVEgKKyAgICB7IkJBRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDI3MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01BQ19ERUNPREUKKyAgICB7IkJBRF9NQUNfREVDT0RFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9NQUNfREVDT0RFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NQUNfREVDT0RFIiwgRVJSX0xJQl9TU0wsIDExM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01BQ19MRU5HVEgKKyAgICB7IkJBRF9NQUNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9NQUNfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NQUNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDMzM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01FU1NBR0VfVFlQRQorICAgIHsiQkFEX01FU1NBR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfTUVTU0FHRV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NRVNTQUdFX1RZUEUiLCBFUlJfTElCX1NTTCwgMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUEFDS0VUX0xFTkdUSAorICAgIHsiQkFEX1BBQ0tFVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1BBQ0tFVF9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX1BBQ0tFVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTE1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUFJPVE9DT0xfVkVSU0lPTl9OVU1CRVIKKyAgICB7IkJBRF9QUk9UT0NPTF9WRVJTSU9OX05VTUJFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUFJPVE9DT0xfVkVSU0lPTl9OVU1CRVJ9LAorICAjZWxzZQorICAgIHsiQkFEX1BST1RPQ09MX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIDExNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1BTS19JREVOVElUWV9ISU5UX0xFTkdUSAorICAgIHsiQkFEX1BTS19JREVOVElUWV9ISU5UX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUFNLX0lERU5USVRZX0hJTlRfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9QU0tfSURFTlRJVFlfSElOVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMzE2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUkVTUE9OU0VfQVJHVU1FTlQKKyAgICB7IkJBRF9SRVNQT05TRV9BUkdVTUVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUkVTUE9OU0VfQVJHVU1FTlR9LAorICAjZWxzZQorICAgIHsiQkFEX1JFU1BPTlNFX0FSR1VNRU5UIiwgRVJSX0xJQl9TU0wsIDExN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JTQV9ERUNSWVBUCisgICAgeyJCQURfUlNBX0RFQ1JZUFQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JTQV9ERUNSWVBUfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SU0FfREVDUllQVCIsIEVSUl9MSUJfU1NMLCAxMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SU0FfRU5DUllQVAorICAgIHsiQkFEX1JTQV9FTkNSWVBUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfRU5DUllQVH0sCisgICNlbHNlCisgICAgeyJCQURfUlNBX0VOQ1JZUFQiLCBFUlJfTElCX1NTTCwgMTE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUlNBX0VfTEVOR1RICisgICAgeyJCQURfUlNBX0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfRV9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX1JTQV9FX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SU0FfTU9EVUxVU19MRU5HVEgKKyAgICB7IkJBRF9SU0FfTU9EVUxVU19MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JTQV9NT0RVTFVTX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfUlNBX01PRFVMVVNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEyMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JTQV9TSUdOQVRVUkUKKyAgICB7IkJBRF9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDEyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1NJR05BVFVSRQorICAgIHsiQkFEX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfU1NMX0ZJTEVUWVBFCisgICAgeyJCQURfU1NMX0ZJTEVUWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9TU0xfRklMRVRZUEV9LAorICAjZWxzZQorICAgIHsiQkFEX1NTTF9GSUxFVFlQRSIsIEVSUl9MSUJfU1NMLCAxMjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9TU0xfU0VTU0lPTl9JRF9MRU5HVEgKKyAgICB7IkJBRF9TU0xfU0VTU0lPTl9JRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1NTTF9TRVNTSU9OX0lEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfU1NMX1NFU1NJT05fSURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEyNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1NUQVRFCisgICAgeyJCQURfU1RBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1NUQVRFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9TVEFURSIsIEVSUl9MSUJfU1NMLCAxMjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9XUklURV9SRVRSWQorICAgIHsiQkFEX1dSSVRFX1JFVFJZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9XUklURV9SRVRSWX0sCisgICNlbHNlCisgICAgeyJCQURfV1JJVEVfUkVUUlkiLCBFUlJfTElCX1NTTCwgMTI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CSU9fTk9UX1NFVAorICAgIHsiQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQklPX05PVF9TRVR9LAorICAjZWxzZQorICAgIHsiQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgMTI4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CTE9DS19DSVBIRVJfUEFEX0lTX1dST05HCisgICAgeyJCTE9DS19DSVBIRVJfUEFEX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JMT0NLX0NJUEhFUl9QQURfSVNfV1JPTkd9LAorICAjZWxzZQorICAgIHsiQkxPQ0tfQ0lQSEVSX1BBRF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCAxMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JOX0xJQgorICAgIHsiQk5fTElCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JOX0xJQn0sCisgICNlbHNlCisgICAgeyJCTl9MSUIiLCBFUlJfTElCX1NTTCwgMTMwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DQV9ETl9MRU5HVEhfTUlTTUFUQ0gKKyAgICB7IkNBX0ROX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DQV9ETl9MRU5HVEhfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiQ0FfRE5fTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDEzMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0FfRE5fVE9PX0xPTkcKKyAgICB7IkNBX0ROX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NBX0ROX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkNBX0ROX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDEzMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZCisgICAgeyJDQ1NfUkVDRUlWRURfRUFSTFkiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZfSwKKyAgI2Vsc2UKKyAgICB7IkNDU19SRUNFSVZFRF9FQVJMWSIsIEVSUl9MSUJfU1NMLCAxMzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUQKKyAgICB7IkNFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0VSVElGSUNBVEVfVkVSSUZZX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJDRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIDEzNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0VSVF9MRU5HVEhfTUlTTUFUQ0gKKyAgICB7IkNFUlRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NFUlRfTEVOR1RIX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IkNFUlRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDEzNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0hBTExFTkdFX0lTX0RJRkZFUkVOVAorICAgIHsiQ0hBTExFTkdFX0lTX0RJRkZFUkVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSEFMTEVOR0VfSVNfRElGRkVSRU5UfSwKKyAgI2Vsc2UKKyAgICB7IkNIQUxMRU5HRV9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMTM2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DSVBIRVJfQ09ERV9XUk9OR19MRU5HVEgKKyAgICB7IkNJUEhFUl9DT0RFX1dST05HX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSVBIRVJfQ09ERV9XUk9OR19MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQ0lQSEVSX0NPREVfV1JPTkdfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEzN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0lQSEVSX09SX0hBU0hfVU5BVkFJTEFCTEUKKyAgICB7IkNJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFfSwKKyAgI2Vsc2UKKyAgICB7IkNJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIDEzOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUgorICAgIHsiQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSVBIRVJfVEFCTEVfU1JDX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IkNJUEhFUl9UQUJMRV9TUkNfRVJST1IiLCBFUlJfTElCX1NTTCwgMTM5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DTElFTlRIRUxMT19UTFNFWFQKKyAgICB7IkNMSUVOVEhFTExPX1RMU0VYVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DTElFTlRIRUxMT19UTFNFWFR9LAorICAjZWxzZQorICAgIHsiQ0xJRU5USEVMTE9fVExTRVhUIiwgRVJSX0xJQl9TU0wsIDIyNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NFRF9MRU5HVEhfVE9PX0xPTkcKKyAgICB7IkNPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDE0MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fRElTQUJMRUQKKyAgICB7IkNPTVBSRVNTSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTVBSRVNTSU9OX0RJU0FCTEVEfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIDM0M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fRkFJTFVSRQorICAgIHsiQ09NUFJFU1NJT05fRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9GQUlMVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgMTQxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT01QUkVTU0lPTl9JRF9OT1RfV0lUSElOX1BSSVZBVEVfUkFOR0UKKyAgICB7IkNPTVBSRVNTSU9OX0lEX05PVF9XSVRISU5fUFJJVkFURV9SQU5HRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9JRF9OT1RfV0lUSElOX1BSSVZBVEVfUkFOR0V9LAorICAjZWxzZQorICAgIHsiQ09NUFJFU1NJT05fSURfTk9UX1dJVEhJTl9QUklWQVRFX1JBTkdFIiwgRVJSX0xJQl9TU0wsIDMwN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fTElCUkFSWV9FUlJPUgorICAgIHsiQ09NUFJFU1NJT05fTElCUkFSWV9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9MSUJSQVJZX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0xJQlJBUllfRVJST1IiLCBFUlJfTElCX1NTTCwgMTQyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT05ORUNUSU9OX0lEX0lTX0RJRkZFUkVOVAorICAgIHsiQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlR9LAorICAjZWxzZQorICAgIHsiQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMTQzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT05ORUNUSU9OX1RZUEVfTk9UX1NFVAorICAgIHsiQ09OTkVDVElPTl9UWVBFX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09OTkVDVElPTl9UWVBFX05PVF9TRVR9LAorICAjZWxzZQorICAgIHsiQ09OTkVDVElPTl9UWVBFX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgMTQ0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT09LSUVfTUlTTUFUQ0gKKyAgICB7IkNPT0tJRV9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT09LSUVfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiQ09PS0lFX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDMwOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREFUQV9CRVRXRUVOX0NDU19BTkRfRklOSVNIRUQKKyAgICB7IkRBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEfSwKKyAgI2Vsc2UKKyAgICB7IkRBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEIiwgRVJSX0xJQl9TU0wsIDE0NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREFUQV9MRU5HVEhfVE9PX0xPTkcKKyAgICB7IkRBVEFfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RBVEFfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkRBVEFfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDE0Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREVDUllQVElPTl9GQUlMRUQKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVEfSwKKyAgI2Vsc2UKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEIiwgRVJSX0xJQl9TU0wsIDE0N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREVDUllQVElPTl9GQUlMRURfT1JfQkFEX1JFQ09SRF9NQUMKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDfSwKKyAgI2Vsc2UKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDIiwgRVJSX0xJQl9TU0wsIDI4MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREhfUFVCTElDX1ZBTFVFX0xFTkdUSF9JU19XUk9ORworICAgIHsiREhfUFVCTElDX1ZBTFVFX0xFTkdUSF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9ESF9QVUJMSUNfVkFMVUVfTEVOR1RIX0lTX1dST05HfSwKKyAgI2Vsc2UKKyAgICB7IkRIX1BVQkxJQ19WQUxVRV9MRU5HVEhfSVNfV1JPTkciLCBFUlJfTElCX1NTTCwgMTQ4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9ESUdFU1RfQ0hFQ0tfRkFJTEVECisgICAgeyJESUdFU1RfQ0hFQ0tfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RJR0VTVF9DSEVDS19GQUlMRUR9LAorICAjZWxzZQorICAgIHsiRElHRVNUX0NIRUNLX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCAxNDl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RUTFNfTUVTU0FHRV9UT09fQklHCisgICAgeyJEVExTX01FU1NBR0VfVE9PX0JJRyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9EVExTX01FU1NBR0VfVE9PX0JJR30sCisgICNlbHNlCisgICAgeyJEVExTX01FU1NBR0VfVE9PX0JJRyIsIEVSUl9MSUJfU1NMLCAzMzR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RVUExJQ0FURV9DT01QUkVTU0lPTl9JRAorICAgIHsiRFVQTElDQVRFX0NPTVBSRVNTSU9OX0lEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RVUExJQ0FURV9DT01QUkVTU0lPTl9JRH0sCisgICNlbHNlCisgICAgeyJEVVBMSUNBVEVfQ09NUFJFU1NJT05fSUQiLCBFUlJfTElCX1NTTCwgMzA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FQ0NfQ0VSVF9OT1RfRk9SX0tFWV9BR1JFRU1FTlQKKyAgICB7IkVDQ19DRVJUX05PVF9GT1JfS0VZX0FHUkVFTUVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FQ0NfQ0VSVF9OT1RfRk9SX0tFWV9BR1JFRU1FTlR9LAorICAjZWxzZQorICAgIHsiRUNDX0NFUlRfTk9UX0ZPUl9LRVlfQUdSRUVNRU5UIiwgRVJSX0xJQl9TU0wsIDMxN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNDX0NFUlRfTk9UX0ZPUl9TSUdOSU5HCisgICAgeyJFQ0NfQ0VSVF9OT1RfRk9SX1NJR05JTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfRUNDX0NFUlRfTk9UX0ZPUl9TSUdOSU5HfSwKKyAgI2Vsc2UKKyAgICB7IkVDQ19DRVJUX05PVF9GT1JfU0lHTklORyIsIEVSUl9MSUJfU1NMLCAzMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VDQ19DRVJUX1NIT1VMRF9IQVZFX1JTQV9TSUdOQVRVUkUKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1JTQV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfRUNDX0NFUlRfU0hPVUxEX0hBVkVfUlNBX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJFQ0NfQ0VSVF9TSE9VTERfSEFWRV9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDMyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNDX0NFUlRfU0hPVUxEX0hBVkVfU0hBMV9TSUdOQVRVUkUKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDMyM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNHUk9VUF9UT09fTEFSR0VfRk9SX0NJUEhFUgorICAgIHsiRUNHUk9VUF9UT09fTEFSR0VfRk9SX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FQ0dST1VQX1RPT19MQVJHRV9GT1JfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IkVDR1JPVVBfVE9PX0xBUkdFX0ZPUl9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMzEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FTkNSWVBURURfTEVOR1RIX1RPT19MT05HCisgICAgeyJFTkNSWVBURURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VOQ1JZUFRFRF9MRU5HVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiRU5DUllQVEVEX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAxNTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVkKKyAgICB7IkVSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfRVJST1JfR0VORVJBVElOR19UTVBfUlNBX0tFWX0sCisgICNlbHNlCisgICAgeyJFUlJPUl9HRU5FUkFUSU5HX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIDI4Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRVJST1JfSU5fUkVDRUlWRURfQ0lQSEVSX0xJU1QKKyAgICB7IkVSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUfSwKKyAgI2Vsc2UKKyAgICB7IkVSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUIiwgRVJSX0xJQl9TU0wsIDE1MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRVhDRVNTSVZFX01FU1NBR0VfU0laRQorICAgIHsiRVhDRVNTSVZFX01FU1NBR0VfU0laRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FWENFU1NJVkVfTUVTU0FHRV9TSVpFfSwKKyAgI2Vsc2UKKyAgICB7IkVYQ0VTU0lWRV9NRVNTQUdFX1NJWkUiLCBFUlJfTElCX1NTTCwgMTUyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FWFRSQV9EQVRBX0lOX01FU1NBR0UKKyAgICB7IkVYVFJBX0RBVEFfSU5fTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FWFRSQV9EQVRBX0lOX01FU1NBR0V9LAorICAjZWxzZQorICAgIHsiRVhUUkFfREFUQV9JTl9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDE1M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfR09UX0FfRklOX0JFRk9SRV9BX0NDUworICAgIHsiR09UX0FfRklOX0JFRk9SRV9BX0NDUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9HT1RfQV9GSU5fQkVGT1JFX0FfQ0NTfSwKKyAgI2Vsc2UKKyAgICB7IkdPVF9BX0ZJTl9CRUZPUkVfQV9DQ1MiLCBFUlJfTElCX1NTTCwgMTU0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9IVFRQU19QUk9YWV9SRVFVRVNUCisgICAgeyJIVFRQU19QUk9YWV9SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0hUVFBTX1BST1hZX1JFUVVFU1R9LAorICAjZWxzZQorICAgIHsiSFRUUFNfUFJPWFlfUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCAxNTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0hUVFBfUkVRVUVTVAorICAgIHsiSFRUUF9SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0hUVFBfUkVRVUVTVH0sCisgICNlbHNlCisgICAgeyJIVFRQX1JFUVVFU1QiLCBFUlJfTElCX1NTTCwgMTU2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTExFR0FMX1BBRERJTkcKKyAgICB7IklMTEVHQUxfUEFERElORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTExFR0FMX1BBRERJTkd9LAorICAjZWxzZQorICAgIHsiSUxMRUdBTF9QQURESU5HIiwgRVJSX0xJQl9TU0wsIDI4M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OCisgICAgeyJJTkNPTlNJU1RFTlRfQ09NUFJFU1NJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IklOQ09OU0lTVEVOVF9DT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCAzNDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfQ0hBTExFTkdFX0xFTkdUSAorICAgIHsiSU5WQUxJRF9DSEFMTEVOR0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfQ0hBTExFTkdFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX0NIQUxMRU5HRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTU4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTlZBTElEX0NPTU1BTkQKKyAgICB7IklOVkFMSURfQ09NTUFORCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX0NPTU1BTkR9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9DT01NQU5EIiwgRVJSX0xJQl9TU0wsIDI4MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9DT01QUkVTU0lPTl9BTEdPUklUSE0KKyAgICB7IklOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNIiwgRVJSX0xJQl9TU0wsIDM0MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9QVVJQT1NFCisgICAgeyJJTlZBTElEX1BVUlBPU0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9QVVJQT1NFfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfUFVSUE9TRSIsIEVSUl9MSUJfU1NMLCAyNzh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfU1RBVFVTX1JFU1BPTlNFCisgICAgeyJJTlZBTElEX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX1NUQVRVU19SRVNQT05TRX0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCAzMjh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfVElDS0VUX0tFWVNfTEVOR1RICisgICAgeyJJTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfVFJVU1QKKyAgICB7IklOVkFMSURfVFJVU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9UUlVTVH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1RSVVNUIiwgRVJSX0xJQl9TU0wsIDI3OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS0VZX0FSR19UT09fTE9ORworICAgIHsiS0VZX0FSR19UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LRVlfQVJHX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IktFWV9BUkdfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMjg0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1CisgICAgeyJLUkI1IiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjV9LAorICAjZWxzZQorICAgIHsiS1JCNSIsIEVSUl9MSUJfU1NMLCAyODV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfQ19DQ19QUklOQworICAgIHsiS1JCNV9DX0NDX1BSSU5DIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfQ19DQ19QUklOQ30sCisgICNlbHNlCisgICAgeyJLUkI1X0NfQ0NfUFJJTkMiLCBFUlJfTElCX1NTTCwgMjg2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X0NfR0VUX0NSRUQKKyAgICB7IktSQjVfQ19HRVRfQ1JFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X0NfR0VUX0NSRUR9LAorICAjZWxzZQorICAgIHsiS1JCNV9DX0dFVF9DUkVEIiwgRVJSX0xJQl9TU0wsIDI4N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9DX0lOSVQKKyAgICB7IktSQjVfQ19JTklUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfQ19JTklUfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfQ19JTklUIiwgRVJSX0xJQl9TU0wsIDI4OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9DX01LX1JFUQorICAgIHsiS1JCNV9DX01LX1JFUSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X0NfTUtfUkVRfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfQ19NS19SRVEiLCBFUlJfTElCX1NTTCwgMjg5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfQkFEX1RJQ0tFVAorICAgIHsiS1JCNV9TX0JBRF9USUNLRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX0JBRF9USUNLRVR9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX0JBRF9USUNLRVQiLCBFUlJfTElCX1NTTCwgMjkwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfSU5JVAorICAgIHsiS1JCNV9TX0lOSVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX0lOSVR9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX0lOSVQiLCBFUlJfTElCX1NTTCwgMjkxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfUkRfUkVRCisgICAgeyJLUkI1X1NfUkRfUkVRIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19SRF9SRVF9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1JEX1JFUSIsIEVSUl9MSUJfU1NMLCAyOTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfU19US1RfRVhQSVJFRAorICAgIHsiS1JCNV9TX1RLVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19US1RfRVhQSVJFRH0sCisgICNlbHNlCisgICAgeyJLUkI1X1NfVEtUX0VYUElSRUQiLCBFUlJfTElCX1NTTCwgMjkzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfVEtUX05ZVgorICAgIHsiS1JCNV9TX1RLVF9OWVYiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX1RLVF9OWVZ9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1RLVF9OWVYiLCBFUlJfTElCX1NTTCwgMjk0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfVEtUX1NLRVcKKyAgICB7IktSQjVfU19US1RfU0tFVyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X1NfVEtUX1NLRVd9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1RLVF9TS0VXIiwgRVJSX0xJQl9TU0wsIDI5NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTEVOR1RIX01JU01BVENICisgICAgeyJMRU5HVEhfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgU1NMX1JfTEVOR1RIX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IkxFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAxNTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0xFTkdUSF9UT09fU0hPUlQKKyAgICB7IkxFTkdUSF9UT09fU0hPUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTEVOR1RIX1RPT19TSE9SVH0sCisgICNlbHNlCisgICAgeyJMRU5HVEhfVE9PX1NIT1JUIiwgRVJSX0xJQl9TU0wsIDE2MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTElCUkFSWV9CVUcKKyAgICB7IkxJQlJBUllfQlVHIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0xJQlJBUllfQlVHfSwKKyAgI2Vsc2UKKyAgICB7IkxJQlJBUllfQlVHIiwgRVJSX0xJQl9TU0wsIDI3NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUworICAgIHsiTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9MSUJSQVJZX0hBU19OT19DSVBIRVJTfSwKKyAgI2Vsc2UKKyAgICB7IkxJQlJBUllfSEFTX05PX0NJUEhFUlMiLCBFUlJfTElCX1NTTCwgMTYxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NRVNTQUdFX1RPT19MT05HCisgICAgeyJNRVNTQUdFX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01FU1NBR0VfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiTUVTU0FHRV9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyOTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfREhfRFNBX0NFUlQKKyAgICB7Ik1JU1NJTkdfREhfRFNBX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19ESF9EU0FfQ0VSVH0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX0RIX0RTQV9DRVJUIiwgRVJSX0xJQl9TU0wsIDE2Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19ESF9LRVkKKyAgICB7Ik1JU1NJTkdfREhfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfREhfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfREhfS0VZIiwgRVJSX0xJQl9TU0wsIDE2M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19ESF9SU0FfQ0VSVAorICAgIHsiTUlTU0lOR19ESF9SU0FfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0RIX1JTQV9DRVJUfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfREhfUlNBX0NFUlQiLCBFUlJfTElCX1NTTCwgMTY0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0RTQV9TSUdOSU5HX0NFUlQKKyAgICB7Ik1JU1NJTkdfRFNBX1NJR05JTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0RTQV9TSUdOSU5HX0NFUlR9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19EU0FfU0lHTklOR19DRVJUIiwgRVJSX0xJQl9TU0wsIDE2NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19FWFBPUlRfVE1QX0RIX0tFWQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX0RIX0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0VYUE9SVF9UTVBfREhfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfRVhQT1JUX1RNUF9ESF9LRVkiLCBFUlJfTElCX1NTTCwgMTY2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0VYUE9SVF9UTVBfUlNBX0tFWQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgMTY3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1JTQV9DRVJUSUZJQ0FURQorICAgIHsiTUlTU0lOR19SU0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19SU0FfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19SU0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMTY4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1JTQV9FTkNSWVBUSU5HX0NFUlQKKyAgICB7Ik1JU1NJTkdfUlNBX0VOQ1JZUFRJTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1JTQV9FTkNSWVBUSU5HX0NFUlR9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19SU0FfRU5DUllQVElOR19DRVJUIiwgRVJSX0xJQl9TU0wsIDE2OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19SU0FfU0lHTklOR19DRVJUCisgICAgeyJNSVNTSU5HX1JTQV9TSUdOSU5HX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19SU0FfU0lHTklOR19DRVJUfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfUlNBX1NJR05JTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCAxNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVE1QX0RIX0tFWQorICAgIHsiTUlTU0lOR19UTVBfREhfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfVE1QX0RIX0tFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1RNUF9ESF9LRVkiLCBFUlJfTElCX1NTTCwgMTcxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1RNUF9FQ0RIX0tFWQorICAgIHsiTUlTU0lOR19UTVBfRUNESF9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19UTVBfRUNESF9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19UTVBfRUNESF9LRVkiLCBFUlJfTElCX1NTTCwgMzExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1RNUF9SU0FfS0VZCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfVE1QX1JTQV9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19UTVBfUlNBX0tFWSIsIEVSUl9MSUJfU1NMLCAxNzJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVE1QX1JTQV9QS0VZCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfUEtFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1RNUF9SU0FfUEtFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfUEtFWSIsIEVSUl9MSUJfU1NMLCAxNzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVkVSSUZZX01FU1NBR0UKKyAgICB7Ik1JU1NJTkdfVkVSSUZZX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19WRVJJRllfTUVTU0FHRX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1ZFUklGWV9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDE3NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9OX1NTTFYyX0lOSVRJQUxfUEFDS0VUCisgICAgeyJOT05fU1NMVjJfSU5JVElBTF9QQUNLRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9OX1NTTFYyX0lOSVRJQUxfUEFDS0VUfSwKKyAgI2Vsc2UKKyAgICB7Ik5PTl9TU0xWMl9JTklUSUFMX1BBQ0tFVCIsIEVSUl9MSUJfU1NMLCAxNzV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NFUlRJRklDQVRFU19SRVRVUk5FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVTX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NFUlRJRklDQVRFU19SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJOT19DRVJUSUZJQ0FURVNfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMTc2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9BU1NJR05FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfQVNTSUdORUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgMTc3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9SRVRVUk5FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMTc4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9TRVQKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1NFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DRVJUSUZJQ0FURV9TRVR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfU0VUIiwgRVJSX0xJQl9TU0wsIDE3OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0VSVElGSUNBVEVfU1BFQ0lGSUVECisgICAgeyJOT19DRVJUSUZJQ0FURV9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfU1BFQ0lGSUVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfQVZBSUxBQkxFCisgICAgeyJOT19DSVBIRVJTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX0FWQUlMQUJMRX0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCAxODF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfUEFTU0VECisgICAgeyJOT19DSVBIRVJTX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX1BBU1NFRH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCAxODJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfU1BFQ0lGSUVECisgICAgeyJOT19DSVBIRVJTX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX1NQRUNJRklFRH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUl9MSVNUCisgICAgeyJOT19DSVBIRVJfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJfTElTVH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJfTElTVCIsIEVSUl9MSUJfU1NMLCAxODR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUl9NQVRDSAorICAgIHsiTk9fQ0lQSEVSX01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NJUEhFUl9NQVRDSH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJfTUFUQ0giLCBFUlJfTElCX1NTTCwgMTg1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DTElFTlRfQ0VSVF9NRVRIT0QKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX01FVEhPRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DTElFTlRfQ0VSVF9NRVRIT0R9LAorICAjZWxzZQorICAgIHsiTk9fQ0xJRU5UX0NFUlRfTUVUSE9EIiwgRVJSX0xJQl9TU0wsIDMzMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0xJRU5UX0NFUlRfUkVDRUlWRUQKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEIiwgRVJSX0xJQl9TU0wsIDE4Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVECisgICAgeyJOT19DT01QUkVTU0lPTl9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NPTVBSRVNTSU9OX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0dPU1RfQ0VSVElGSUNBVEVfU0VOVF9CWV9QRUVSCisgICAgeyJOT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUn0sCisgICNlbHNlCisgICAgeyJOT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUiIsIEVSUl9MSUJfU1NMLCAzMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX01FVEhPRF9TUEVDSUZJRUQKKyAgICB7Ik5PX01FVEhPRF9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fTUVUSE9EX1NQRUNJRklFRH0sCisgICNlbHNlCisgICAgeyJOT19NRVRIT0RfU1BFQ0lGSUVEIiwgRVJSX0xJQl9TU0wsIDE4OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fUFJJVkFURUtFWQorICAgIHsiTk9fUFJJVkFURUtFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19QUklWQVRFS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1BSSVZBVEVLRVkiLCBFUlJfTElCX1NTTCwgMTg5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19QUklWQVRFX0tFWV9BU1NJR05FRAorICAgIHsiTk9fUFJJVkFURV9LRVlfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fUFJJVkFURV9LRVlfQVNTSUdORUR9LAorICAjZWxzZQorICAgIHsiTk9fUFJJVkFURV9LRVlfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgMTkwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19QUk9UT0NPTFNfQVZBSUxBQkxFCisgICAgeyJOT19QUk9UT0NPTFNfQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1BST1RPQ09MU19BVkFJTEFCTEV9LAorICAjZWxzZQorICAgIHsiTk9fUFJPVE9DT0xTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCAxOTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1BVQkxJQ0tFWQorICAgIHsiTk9fUFVCTElDS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1BVQkxJQ0tFWX0sCisgICNlbHNlCisgICAgeyJOT19QVUJMSUNLRVkiLCBFUlJfTElCX1NTTCwgMTkyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19SRU5FR09USUFUSU9OCisgICAgeyJOT19SRU5FR09USUFUSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1JFTkVHT1RJQVRJT059LAorICAjZWxzZQorICAgIHsiTk9fUkVORUdPVElBVElPTiIsIEVSUl9MSUJfU1NMLCAzMzl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1JFUVVJUkVEX0RJR0VTVAorICAgIHsiTk9fUkVRVUlSRURfRElHRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1JFUVVJUkVEX0RJR0VTVH0sCisgICNlbHNlCisgICAgeyJOT19SRVFVSVJFRF9ESUdFU1QiLCBFUlJfTElCX1NTTCwgMzI0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19TSEFSRURfQ0lQSEVSCisgICAgeyJOT19TSEFSRURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1NIQVJFRF9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiTk9fU0hBUkVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCAxOTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1ZFUklGWV9DQUxMQkFDSworICAgIHsiTk9fVkVSSUZZX0NBTExCQUNLIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1ZFUklGWV9DQUxMQkFDS30sCisgICNlbHNlCisgICAgeyJOT19WRVJJRllfQ0FMTEJBQ0siLCBFUlJfTElCX1NTTCwgMTk0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OVUxMX1NTTF9DVFgKKyAgICB7Ik5VTExfU1NMX0NUWCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OVUxMX1NTTF9DVFh9LAorICAjZWxzZQorICAgIHsiTlVMTF9TU0xfQ1RYIiwgRVJSX0xJQl9TU0wsIDE5NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTlVMTF9TU0xfTUVUSE9EX1BBU1NFRAorICAgIHsiTlVMTF9TU0xfTUVUSE9EX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OVUxMX1NTTF9NRVRIT0RfUEFTU0VEfSwKKyAgI2Vsc2UKKyAgICB7Ik5VTExfU1NMX01FVEhPRF9QQVNTRUQiLCBFUlJfTElCX1NTTCwgMTk2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9PTERfU0VTU0lPTl9DSVBIRVJfTk9UX1JFVFVSTkVECisgICAgeyJPTERfU0VTU0lPTl9DSVBIRVJfTk9UX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX09MRF9TRVNTSU9OX0NJUEhFUl9OT1RfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiT0xEX1NFU1NJT05fQ0lQSEVSX05PVF9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAxOTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX09MRF9TRVNTSU9OX0NPTVBSRVNTSU9OX0FMR09SSVRITV9OT1RfUkVUVVJORUQKKyAgICB7Ik9MRF9TRVNTSU9OX0NPTVBSRVNTSU9OX0FMR09SSVRITV9OT1RfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfT0xEX1NFU1NJT05fQ09NUFJFU1NJT05fQUxHT1JJVEhNX05PVF9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJPTERfU0VTU0lPTl9DT01QUkVTU0lPTl9BTEdPUklUSE1fTk9UX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIDM0NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfT05MWV9UTFNfQUxMT1dFRF9JTl9GSVBTX01PREUKKyAgICB7Ik9OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX09OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFfSwKKyAgI2Vsc2UKKyAgICB7Ik9OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFIiwgRVJSX0xJQl9TU0wsIDI5N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfT1BBUVVFX1BSRl9JTlBVVF9UT09fTE9ORworICAgIHsiT1BBUVVFX1BSRl9JTlBVVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9PUEFRVUVfUFJGX0lOUFVUX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7Ik9QQVFVRV9QUkZfSU5QVVRfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMzI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QQUNLRVRfTEVOR1RIX1RPT19MT05HCisgICAgeyJQQUNLRVRfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBQ0tFVF9MRU5HVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUEFDS0VUX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAxOTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BBUlNFX1RMU0VYVAorICAgIHsiUEFSU0VfVExTRVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBUlNFX1RMU0VYVH0sCisgICNlbHNlCisgICAgeyJQQVJTRV9UTFNFWFQiLCBFUlJfTElCX1NTTCwgMjI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QQVRIX1RPT19MT05HCisgICAgeyJQQVRIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUEFUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRElEX05PVF9SRVRVUk5fQV9DRVJUSUZJQ0FURQorICAgIHsiUEVFUl9ESURfTk9UX1JFVFVSTl9BX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRElEX05PVF9SRVRVUk5fQV9DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJQRUVSX0RJRF9OT1RfUkVUVVJOX0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMTk5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SCisgICAgeyJQRUVSX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRVJST1J9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUiIsIEVSUl9MSUJfU1NMLCAyMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRVJST1JfQ0VSVElGSUNBVEUKKyAgICB7IlBFRVJfRVJST1JfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9FUlJPUl9DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJQRUVSX0VSUk9SX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDIwMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEVFUl9FUlJPUl9OT19DRVJUSUZJQ0FURQorICAgIHsiUEVFUl9FUlJPUl9OT19DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0VSUk9SX05PX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlBFRVJfRVJST1JfTk9fQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMjAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SX05PX0NJUEhFUgorICAgIHsiUEVFUl9FUlJPUl9OT19DSVBIRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9FUlJPUl9OT19DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUl9OT19DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjAzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFX1RZUEUKKyAgICB7IlBFRVJfRVJST1JfVU5TVVBQT1JURURfQ0VSVElGSUNBVEVfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0VSUk9SX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFX1RZUEV9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUl9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURV9UWVBFIiwgRVJSX0xJQl9TU0wsIDIwNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFJFX01BQ19MRU5HVEhfVE9PX0xPTkcKKyAgICB7IlBSRV9NQUNfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BSRV9NQUNfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IlBSRV9NQUNfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDIwNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFJPQkxFTVNfTUFQUElOR19DSVBIRVJfRlVOQ1RJT05TCisgICAgeyJQUk9CTEVNU19NQVBQSU5HX0NJUEhFUl9GVU5DVElPTlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFJPQkxFTVNfTUFQUElOR19DSVBIRVJfRlVOQ1RJT05TfSwKKyAgI2Vsc2UKKyAgICB7IlBST0JMRU1TX01BUFBJTkdfQ0lQSEVSX0ZVTkNUSU9OUyIsIEVSUl9MSUJfU1NMLCAyMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BST1RPQ09MX0lTX1NIVVRET1dOCisgICAgeyJQUk9UT0NPTF9JU19TSFVURE9XTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QUk9UT0NPTF9JU19TSFVURE9XTn0sCisgICNlbHNlCisgICAgeyJQUk9UT0NPTF9JU19TSFVURE9XTiIsIEVSUl9MSUJfU1NMLCAyMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BTS19JREVOVElUWV9OT1RfRk9VTkQKKyAgICB7IlBTS19JREVOVElUWV9OT1RfRk9VTkQiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFNLX0lERU5USVRZX05PVF9GT1VORH0sCisgICNlbHNlCisgICAgeyJQU0tfSURFTlRJVFlfTk9UX0ZPVU5EIiwgRVJSX0xJQl9TU0wsIDIyM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFNLX05PX0NMSUVOVF9DQgorICAgIHsiUFNLX05PX0NMSUVOVF9DQiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QU0tfTk9fQ0xJRU5UX0NCfSwKKyAgI2Vsc2UKKyAgICB7IlBTS19OT19DTElFTlRfQ0IiLCBFUlJfTElCX1NTTCwgMjI0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QU0tfTk9fU0VSVkVSX0NCCisgICAgeyJQU0tfTk9fU0VSVkVSX0NCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BTS19OT19TRVJWRVJfQ0J9LAorICAjZWxzZQorICAgIHsiUFNLX05PX1NFUlZFUl9DQiIsIEVSUl9MSUJfU1NMLCAyMjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BVQkxJQ19LRVlfRU5DUllQVF9FUlJPUgorICAgIHsiUFVCTElDX0tFWV9FTkNSWVBUX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BVQkxJQ19LRVlfRU5DUllQVF9FUlJPUn0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX0VOQ1JZUFRfRVJST1IiLCBFUlJfTElCX1NTTCwgMjA4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QVUJMSUNfS0VZX0lTX05PVF9SU0EKKyAgICB7IlBVQkxJQ19LRVlfSVNfTk9UX1JTQSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QVUJMSUNfS0VZX0lTX05PVF9SU0F9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9JU19OT1RfUlNBIiwgRVJSX0xJQl9TU0wsIDIwOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFVCTElDX0tFWV9OT1RfUlNBCisgICAgeyJQVUJMSUNfS0VZX05PVF9SU0EiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFVCTElDX0tFWV9OT1RfUlNBfSwKKyAgI2Vsc2UKKyAgICB7IlBVQkxJQ19LRVlfTk9UX1JTQSIsIEVSUl9MSUJfU1NMLCAyMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQURfQklPX05PVF9TRVQKKyAgICB7IlJFQURfQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVBRF9CSU9fTk9UX1NFVH0sCisgICNlbHNlCisgICAgeyJSRUFEX0JJT19OT1RfU0VUIiwgRVJSX0xJQl9TU0wsIDIxMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVBRF9USU1FT1VUX0VYUElSRUQKKyAgICB7IlJFQURfVElNRU9VVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQURfVElNRU9VVF9FWFBJUkVEfSwKKyAgI2Vsc2UKKyAgICB7IlJFQURfVElNRU9VVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIDMxMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVBRF9XUk9OR19QQUNLRVRfVFlQRQorICAgIHsiUkVBRF9XUk9OR19QQUNLRVRfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUFEX1dST05HX1BBQ0tFVF9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlJFQURfV1JPTkdfUEFDS0VUX1RZUEUiLCBFUlJfTElCX1NTTCwgMjEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRUNPUkRfTEVOR1RIX01JU01BVENICisgICAgeyJSRUNPUkRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQ09SRF9MRU5HVEhfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiUkVDT1JEX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAyMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQ09SRF9UT09fTEFSR0UKKyAgICB7IlJFQ09SRF9UT09fTEFSR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVDT1JEX1RPT19MQVJHRX0sCisgICNlbHNlCisgICAgeyJSRUNPUkRfVE9PX0xBUkdFIiwgRVJSX0xJQl9TU0wsIDIxNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVDT1JEX1RPT19TTUFMTAorICAgIHsiUkVDT1JEX1RPT19TTUFMTCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUNPUkRfVE9PX1NNQUxMfSwKKyAgI2Vsc2UKKyAgICB7IlJFQ09SRF9UT09fU01BTEwiLCBFUlJfTElCX1NTTCwgMjk4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRU5FR09USUFURV9FWFRfVE9PX0xPTkcKKyAgICB7IlJFTkVHT1RJQVRFX0VYVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRU5FR09USUFURV9FWFRfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUkVORUdPVElBVEVfRVhUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDMzNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVORUdPVElBVElPTl9FTkNPRElOR19FUlIKKyAgICB7IlJFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSfSwKKyAgI2Vsc2UKKyAgICB7IlJFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSIiwgRVJSX0xJQl9TU0wsIDMzNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVORUdPVElBVElPTl9NSVNNQVRDSAorICAgIHsiUkVORUdPVElBVElPTl9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRU5FR09USUFUSU9OX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IlJFTkVHT1RJQVRJT05fTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgMzM3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRVFVSVJFRF9DSVBIRVJfTUlTU0lORworICAgIHsiUkVRVUlSRURfQ0lQSEVSX01JU1NJTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVRVUlSRURfQ0lQSEVSX01JU1NJTkd9LAorICAjZWxzZQorICAgIHsiUkVRVUlSRURfQ0lQSEVSX01JU1NJTkciLCBFUlJfTElCX1NTTCwgMjE1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRVFVSVJFRF9DT01QUkVTU1NJT05fQUxHT1JJVEhNX01JU1NJTkcKKyAgICB7IlJFUVVJUkVEX0NPTVBSRVNTU0lPTl9BTEdPUklUSE1fTUlTU0lORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRVFVSVJFRF9DT01QUkVTU1NJT05fQUxHT1JJVEhNX01JU1NJTkd9LAorICAjZWxzZQorICAgIHsiUkVRVUlSRURfQ09NUFJFU1NTSU9OX0FMR09SSVRITV9NSVNTSU5HIiwgRVJSX0xJQl9TU0wsIDM0Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVVU0VfQ0VSVF9MRU5HVEhfTk9UX1pFUk8KKyAgICB7IlJFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPfSwKKyAgI2Vsc2UKKyAgICB7IlJFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIDIxNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPCisgICAgeyJSRVVTRV9DRVJUX1RZUEVfTk9UX1pFUk8iLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPfSwKKyAgI2Vsc2UKKyAgICB7IlJFVVNFX0NFUlRfVFlQRV9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCAyMTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFVVNFX0NJUEhFUl9MSVNUX05PVF9aRVJPCisgICAgeyJSRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVST30sCisgICNlbHNlCisgICAgeyJSRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCAyMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NDU1ZfUkVDRUlWRURfV0hFTl9SRU5FR09USUFUSU5HCisgICAgeyJTQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElOR30sCisgICNlbHNlCisgICAgeyJTQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElORyIsIEVSUl9MSUJfU1NMLCAzNDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NFUlZFUkhFTExPX1RMU0VYVAorICAgIHsiU0VSVkVSSEVMTE9fVExTRVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NFUlZFUkhFTExPX1RMU0VYVH0sCisgICNlbHNlCisgICAgeyJTRVJWRVJIRUxMT19UTFNFWFQiLCBFUlJfTElCX1NTTCwgMjc1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TRVNTSU9OX0lEX0NPTlRFWFRfVU5JTklUSUFMSVpFRAorICAgIHsiU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUR9LAorICAjZWxzZQorICAgIHsiU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgMjc3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TSE9SVF9SRUFECisgICAgeyJTSE9SVF9SRUFEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NIT1JUX1JFQUR9LAorICAjZWxzZQorICAgIHsiU0hPUlRfUkVBRCIsIEVSUl9MSUJfU1NMLCAyMTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NJR05BVFVSRV9GT1JfTk9OX1NJR05JTkdfQ0VSVElGSUNBVEUKKyAgICB7IlNJR05BVFVSRV9GT1JfTk9OX1NJR05JTkdfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU0lHTkFUVVJFX0ZPUl9OT05fU0lHTklOR19DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJTSUdOQVRVUkVfRk9SX05PTl9TSUdOSU5HX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDIyMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMMjNfRE9JTkdfU0VTU0lPTl9JRF9SRVVTRQorICAgIHsiU1NMMjNfRE9JTkdfU0VTU0lPTl9JRF9SRVVTRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wyM19ET0lOR19TRVNTSU9OX0lEX1JFVVNFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDIzX0RPSU5HX1NFU1NJT05fSURfUkVVU0UiLCBFUlJfTElCX1NTTCwgMjIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wyX0NPTk5FQ1RJT05fSURfVE9PX0xPTkcKKyAgICB7IlNTTDJfQ09OTkVDVElPTl9JRF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wyX0NPTk5FQ1RJT05fSURfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMMl9DT05ORUNUSU9OX0lEX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDI5OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9FQ1BPSU5URk9STUFUCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX0VDUE9JTlRGT1JNQVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9FQ1BPSU5URk9STUFUfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDNfRVhUX0lOVkFMSURfRUNQT0lOVEZPUk1BVCIsIEVSUl9MSUJfU1NMLCAzMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRX0sCisgICNlbHNlCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUUiLCBFUlJfTElCX1NTTCwgMzE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUVfVFlQRQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEV9LAorICAjZWxzZQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEUiLCBFUlJfTElCX1NTTCwgMzIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX0xPTkcKKyAgICB7IlNTTDNfU0VTU0lPTl9JRF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMM19TRVNTSU9OX0lEX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDMwMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMM19TRVNTSU9OX0lEX1RPT19TSE9SVAorICAgIHsiU1NMM19TRVNTSU9OX0lEX1RPT19TSE9SVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX1NIT1JUfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDNfU0VTU0lPTl9JRF9UT09fU0hPUlQiLCBFUlJfTElCX1NTTCwgMjIyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9CQURfQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX0JBRF9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9CQURfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQkFEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0JBRF9SRUNPUkRfTUFDCisgICAgeyJTU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQ30sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQyIsIEVSUl9MSUJfU1NMLCAxMDIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9FWFBJUkVECisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX0VYUElSRUR9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfRVhQSVJFRCIsIEVSUl9MSUJfU1NMLCAxMDQ1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9SRVZPS0VECisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9SRVZPS0VEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1JFVk9LRUR9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfUkVWT0tFRCIsIEVSUl9MSUJfU1NMLCAxMDQ0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9VTktOT1dOCisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9VTktOT1dOIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1VOS05PV059LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfVU5LTk9XTiIsIEVSUl9MSUJfU1NMLCAxMDQ2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9ERUNPTVBSRVNTSU9OX0ZBSUxVUkUKKyAgICB7IlNTTFYzX0FMRVJUX0RFQ09NUFJFU1NJT05fRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9ERUNPTVBSRVNTSU9OX0ZBSUxVUkV9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfREVDT01QUkVTU0lPTl9GQUlMVVJFIiwgRVJSX0xJQl9TU0wsIDEwMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0hBTkRTSEFLRV9GQUlMVVJFCisgICAgeyJTU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCAxMDQwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9JTExFR0FMX1BBUkFNRVRFUgorICAgIHsiU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVJ9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVIiLCBFUlJfTElCX1NTTCwgMTA0N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfTk9fQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX1VORVhQRUNURURfTUVTU0FHRQorICAgIHsiU1NMVjNfQUxFUlRfVU5FWFBFQ1RFRF9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX1VORVhQRUNURURfTUVTU0FHRX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9VTkVYUEVDVEVEX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgMTAxMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfVU5TVVBQT1JURURfQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9DVFhfSEFTX05PX0RFRkFVTFRfU1NMX1ZFUlNJT04KKyAgICB7IlNTTF9DVFhfSEFTX05PX0RFRkFVTFRfU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX0NUWF9IQVNfTk9fREVGQVVMVF9TU0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJTU0xfQ1RYX0hBU19OT19ERUZBVUxUX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDIyOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMX0hBTkRTSEFLRV9GQUlMVVJFCisgICAgeyJTU0xfSEFORFNIQUtFX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX0hBTkRTSEFLRV9GQUlMVVJFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCAyMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9MSUJSQVJZX0hBU19OT19DSVBIRVJTCisgICAgeyJTU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSU30sCisgICNlbHNlCisgICAgeyJTU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCAyMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NBTExCQUNLX0ZBSUxFRAorICAgIHsiU1NMX1NFU1NJT05fSURfQ0FMTEJBQ0tfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NBTExCQUNLX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9DQUxMQkFDS19GQUlMRUQiLCBFUlJfTElCX1NTTCwgMzAxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DT05GTElDVAorICAgIHsiU1NMX1NFU1NJT05fSURfQ09ORkxJQ1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX1NFU1NJT05fSURfQ09ORkxJQ1R9LAorICAjZWxzZQorICAgIHsiU1NMX1NFU1NJT05fSURfQ09ORkxJQ1QiLCBFUlJfTElCX1NTTCwgMzAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DT05URVhUX1RPT19MT05HCisgICAgeyJTU0xfU0VTU0lPTl9JRF9DT05URVhUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NPTlRFWFRfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMX1NFU1NJT05fSURfQ09OVEVYVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyNzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0hBU19CQURfTEVOR1RICisgICAgeyJTU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0lTX0RJRkZFUkVOVAorICAgIHsiU1NMX1NFU1NJT05fSURfSVNfRElGRkVSRU5UIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0lTX0RJRkZFUkVOVH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMjMxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9BQ0NFU1NfREVOSUVECisgICAgeyJUTFNWMV9BTEVSVF9BQ0NFU1NfREVOSUVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0FDQ0VTU19ERU5JRUR9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfQUNDRVNTX0RFTklFRCIsIEVSUl9MSUJfU1NMLCAxMDQ5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9ERUNPREVfRVJST1IKKyAgICB7IlRMU1YxX0FMRVJUX0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9ERUNPREVfRVJST1J9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDEwNTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ1JZUFRJT05fRkFJTEVECisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCAxMDIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9ERUNSWVBUX0VSUk9SCisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ1JZUFRfRVJST1J9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfREVDUllQVF9FUlJPUiIsIEVSUl9MSUJfU1NMLCAxMDUxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9FWFBPUlRfUkVTVFJJQ1RJT04KKyAgICB7IlRMU1YxX0FMRVJUX0VYUE9SVF9SRVNUUklDVElPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9FWFBPUlRfUkVTVFJJQ1RJT059LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfRVhQT1JUX1JFU1RSSUNUSU9OIiwgRVJSX0xJQl9TU0wsIDEwNjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0lOU1VGRklDSUVOVF9TRUNVUklUWQorICAgIHsiVExTVjFfQUxFUlRfSU5TVUZGSUNJRU5UX1NFQ1VSSVRZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0lOU1VGRklDSUVOVF9TRUNVUklUWX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9JTlNVRkZJQ0lFTlRfU0VDVVJJVFkiLCBFUlJfTElCX1NTTCwgMTA3MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfSU5URVJOQUxfRVJST1IKKyAgICB7IlRMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDEwODB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX05PX1JFTkVHT1RJQVRJT04KKyAgICB7IlRMU1YxX0FMRVJUX05PX1JFTkVHT1RJQVRJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfTk9fUkVORUdPVElBVElPTn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9OT19SRU5FR09USUFUSU9OIiwgRVJSX0xJQl9TU0wsIDExMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX1BST1RPQ09MX1ZFUlNJT04KKyAgICB7IlRMU1YxX0FMRVJUX1BST1RPQ09MX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfUFJPVE9DT0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9QUk9UT0NPTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDEwNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX1JFQ09SRF9PVkVSRkxPVworICAgIHsiVExTVjFfQUxFUlRfUkVDT1JEX09WRVJGTE9XIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX1JFQ09SRF9PVkVSRkxPV30sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9SRUNPUkRfT1ZFUkZMT1ciLCBFUlJfTElCX1NTTCwgMTAyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfVU5LTk9XTl9DQQorICAgIHsiVExTVjFfQUxFUlRfVU5LTk9XTl9DQSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9VTktOT1dOX0NBfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX1VOS05PV05fQ0EiLCBFUlJfTElCX1NTTCwgMTA0OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfVVNFUl9DQU5DRUxMRUQKKyAgICB7IlRMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEIiwgRVJSX0xJQl9TU0wsIDEwOTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0JBRF9DRVJUSUZJQ0FURV9IQVNIX1ZBTFVFCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRSIsIEVSUl9MSUJfU1NMLCAxMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9CQURfQ0VSVElGSUNBVEVfU1RBVFVTX1JFU1BPTlNFCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfU1RBVFVTX1JFU1BPTlNFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0JBRF9DRVJUSUZJQ0FURV9TVEFUVVNfUkVTUE9OU0V9LAorICAjZWxzZQorICAgIHsiVExTVjFfQkFEX0NFUlRJRklDQVRFX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCAxMTEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9DRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEUKKyAgICB7IlRMU1YxX0NFUlRJRklDQVRFX1VOT0JUQUlOQUJMRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9DRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEV9LAorICAjZWxzZQorICAgIHsiVExTVjFfQ0VSVElGSUNBVEVfVU5PQlRBSU5BQkxFIiwgRVJSX0xJQl9TU0wsIDExMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX1VOUkVDT0dOSVpFRF9OQU1FCisgICAgeyJUTFNWMV9VTlJFQ09HTklaRURfTkFNRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9VTlJFQ09HTklaRURfTkFNRX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9VTlJFQ09HTklaRURfTkFNRSIsIEVSUl9MSUJfU1NMLCAxMTEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9VTlNVUFBPUlRFRF9FWFRFTlNJT04KKyAgICB7IlRMU1YxX1VOU1VQUE9SVEVEX0VYVEVOU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9VTlNVUFBPUlRFRF9FWFRFTlNJT059LAorICAjZWxzZQorICAgIHsiVExTVjFfVU5TVVBQT1JURURfRVhURU5TSU9OIiwgRVJSX0xJQl9TU0wsIDExMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU19DTElFTlRfQ0VSVF9SRVFfV0lUSF9BTk9OX0NJUEhFUgorICAgIHsiVExTX0NMSUVOVF9DRVJUX1JFUV9XSVRIX0FOT05fQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU19DTElFTlRfQ0VSVF9SRVFfV0lUSF9BTk9OX0NJUEhFUn0sCisgICNlbHNlCisgICAgeyJUTFNfQ0xJRU5UX0NFUlRfUkVRX1dJVEhfQU5PTl9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjMyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNfSU5WQUxJRF9FQ1BPSU5URk9STUFUX0xJU1QKKyAgICB7IlRMU19JTlZBTElEX0VDUE9JTlRGT1JNQVRfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfSU5WQUxJRF9FQ1BPSU5URk9STUFUX0xJU1R9LAorICAjZWxzZQorICAgIHsiVExTX0lOVkFMSURfRUNQT0lOVEZPUk1BVF9MSVNUIiwgRVJSX0xJQl9TU0wsIDE1N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTX1BFRVJfRElEX05PVF9SRVNQT05EX1dJVEhfQ0VSVElGSUNBVEVfTElTVAorICAgIHsiVExTX1BFRVJfRElEX05PVF9SRVNQT05EX1dJVEhfQ0VSVElGSUNBVEVfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfUEVFUl9ESURfTk9UX1JFU1BPTkRfV0lUSF9DRVJUSUZJQ0FURV9MSVNUfSwKKyAgI2Vsc2UKKyAgICB7IlRMU19QRUVSX0RJRF9OT1RfUkVTUE9ORF9XSVRIX0NFUlRJRklDQVRFX0xJU1QiLCBFUlJfTElCX1NTTCwgMjMzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNfUlNBX0VOQ1JZUFRFRF9WQUxVRV9MRU5HVEhfSVNfV1JPTkcKKyAgICB7IlRMU19SU0FfRU5DUllQVEVEX1ZBTFVFX0xFTkdUSF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfUlNBX0VOQ1JZUFRFRF9WQUxVRV9MRU5HVEhfSVNfV1JPTkd9LAorICAjZWxzZQorICAgIHsiVExTX1JTQV9FTkNSWVBURURfVkFMVUVfTEVOR1RIX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIDIzNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVFJJRURfVE9fVVNFX1VOU1VQUE9SVEVEX0NJUEhFUgorICAgIHsiVFJJRURfVE9fVVNFX1VOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UUklFRF9UT19VU0VfVU5TVVBQT1JURURfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IlRSSUVEX1RPX1VTRV9VTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjM1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fREVDT0RFX0RIX0NFUlRTCisgICAgeyJVTkFCTEVfVE9fREVDT0RFX0RIX0NFUlRTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfREhfQ0VSVFN9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0RFQ09ERV9ESF9DRVJUUyIsIEVSUl9MSUJfU1NMLCAyMzZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfRUNESF9DRVJUUworICAgIHsiVU5BQkxFX1RPX0RFQ09ERV9FQ0RIX0NFUlRTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfRUNESF9DRVJUU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fREVDT0RFX0VDREhfQ0VSVFMiLCBFUlJfTElCX1NTTCwgMzEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fRVhUUkFDVF9QVUJMSUNfS0VZCisgICAgeyJVTkFCTEVfVE9fRVhUUkFDVF9QVUJMSUNfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19FWFRSQUNUX1BVQkxJQ19LRVl9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0VYVFJBQ1RfUFVCTElDX0tFWSIsIEVSUl9MSUJfU1NMLCAyMzd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19GSU5EX0RIX1BBUkFNRVRFUlMKKyAgICB7IlVOQUJMRV9UT19GSU5EX0RIX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfREhfUEFSQU1FVEVSU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRklORF9ESF9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIDIzOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfRUNESF9QQVJBTUVURVJTCisgICAgeyJVTkFCTEVfVE9fRklORF9FQ0RIX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfRUNESF9QQVJBTUVURVJTfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19GSU5EX0VDREhfUEFSQU1FVEVSUyIsIEVSUl9MSUJfU1NMLCAzMTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19GSU5EX1BVQkxJQ19LRVlfUEFSQU1FVEVSUworICAgIHsiVU5BQkxFX1RPX0ZJTkRfUFVCTElDX0tFWV9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19GSU5EX1BVQkxJQ19LRVlfUEFSQU1FVEVSU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRklORF9QVUJMSUNfS0VZX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgMjM5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fRklORF9TU0xfTUVUSE9ECisgICAgeyJVTkFCTEVfVE9fRklORF9TU0xfTUVUSE9EIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19GSU5EX1NTTF9NRVRIT0R9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0ZJTkRfU1NMX01FVEhPRCIsIEVSUl9MSUJfU1NMLCAyNDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDJfTUQ1X1JPVVRJTkVTCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCAyNDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfTUQ1X1JPVVRJTkVTCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCAyNDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfU0hBMV9ST1VUSU5FUworICAgIHsiVU5BQkxFX1RPX0xPQURfU1NMM19TSEExX1JPVVRJTkVTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfU0hBMV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX1NIQTFfUk9VVElORVMiLCBFUlJfTElCX1NTTCwgMjQzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkVYUEVDVEVEX01FU1NBR0UKKyAgICB7IlVORVhQRUNURURfTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkVYUEVDVEVEX01FU1NBR0V9LAorICAjZWxzZQorICAgIHsiVU5FWFBFQ1RFRF9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDI0NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5FWFBFQ1RFRF9SRUNPUkQKKyAgICB7IlVORVhQRUNURURfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VORVhQRUNURURfUkVDT1JEfSwKKyAgI2Vsc2UKKyAgICB7IlVORVhQRUNURURfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIDI0NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5JTklUSUFMSVpFRAorICAgIHsiVU5JTklUSUFMSVpFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTklOSVRJQUxJWkVEfSwKKyAgI2Vsc2UKKyAgICB7IlVOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgMjc2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX0FMRVJUX1RZUEUKKyAgICB7IlVOS05PV05fQUxFUlRfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0FMRVJUX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9BTEVSVF9UWVBFIiwgRVJSX0xJQl9TU0wsIDI0Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9DRVJUSUZJQ0FURV9UWVBFCisgICAgeyJVTktOT1dOX0NFUlRJRklDQVRFX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9DRVJUSUZJQ0FURV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fQ0VSVElGSUNBVEVfVFlQRSIsIEVSUl9MSUJfU1NMLCAyNDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fQ0lQSEVSX1JFVFVSTkVECisgICAgeyJVTktOT1dOX0NJUEhFUl9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0NJUEhFUl9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0NJUEhFUl9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAyNDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fQ0lQSEVSX1RZUEUKKyAgICB7IlVOS05PV05fQ0lQSEVSX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9DSVBIRVJfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0NJUEhFUl9UWVBFIiwgRVJSX0xJQl9TU0wsIDI0OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9LRVlfRVhDSEFOR0VfVFlQRQorICAgIHsiVU5LTk9XTl9LRVlfRVhDSEFOR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0tFWV9FWENIQU5HRV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fS0VZX0VYQ0hBTkdFX1RZUEUiLCBFUlJfTElCX1NTTCwgMjUwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1BLRVlfVFlQRQorICAgIHsiVU5LTk9XTl9QS0VZX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9QS0VZX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QS0VZX1RZUEUiLCBFUlJfTElCX1NTTCwgMjUxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1BST1RPQ09MCisgICAgeyJVTktOT1dOX1BST1RPQ09MIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fUFJPVE9DT0x9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCAyNTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fUkVNT1RFX0VSUk9SX1RZUEUKKyAgICB7IlVOS05PV05fUkVNT1RFX0VSUk9SX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9SRU1PVEVfRVJST1JfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1JFTU9URV9FUlJPUl9UWVBFIiwgRVJSX0xJQl9TU0wsIDI1M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9TU0xfVkVSU0lPTgorICAgIHsiVU5LTk9XTl9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX1NTTF9WRVJTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgMjU0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1NUQVRFCisgICAgeyJVTktOT1dOX1NUQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fU1RBVEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9TVEFURSIsIEVSUl9MSUJfU1NMLCAyNTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTl9ESVNBQkxFRAorICAgIHsiVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTl9ESVNBQkxFRH0sCisgICNlbHNlCisgICAgeyJVTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT05fRElTQUJMRUQiLCBFUlJfTElCX1NTTCwgMzM4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTlNVUFBPUlRFRF9DSVBIRVIKKyAgICB7IlVOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIDI1Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5TVVBQT1JURURfQ09NUFJFU1NJT05fQUxHT1JJVEhNCisgICAgeyJVTlNVUFBPUlRFRF9DT01QUkVTU0lPTl9BTEdPUklUSE0iLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5TVVBQT1JURURfQ09NUFJFU1NJT05fQUxHT1JJVEhNfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0NPTVBSRVNTSU9OX0FMR09SSVRITSIsIEVSUl9MSUJfU1NMLCAyNTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX0RJR0VTVF9UWVBFCisgICAgeyJVTlNVUFBPUlRFRF9ESUdFU1RfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9ESUdFU1RfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9ESUdFU1RfVFlQRSIsIEVSUl9MSUJfU1NMLCAzMjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX0VMTElQVElDX0NVUlZFCisgICAgeyJVTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRSIsIEVSUl9MSUJfU1NMLCAzMTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1BST1RPQ09MCisgICAgeyJVTlNVUFBPUlRFRF9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9QUk9UT0NPTH0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCAyNTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1NTTF9WRVJTSU9OCisgICAgeyJVTlNVUFBPUlRFRF9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9TU0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCAyNTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1NUQVRVU19UWVBFCisgICAgeyJVTlNVUFBPUlRFRF9TVEFUVVNfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9TVEFUVVNfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9TVEFUVVNfVFlQRSIsIEVSUl9MSUJfU1NMLCAzMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dSSVRFX0JJT19OT1RfU0VUCisgICAgeyJXUklURV9CSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUklURV9CSU9fTk9UX1NFVH0sCisgICNlbHNlCisgICAgeyJXUklURV9CSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCAyNjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX0NJUEhFUl9SRVRVUk5FRAorICAgIHsiV1JPTkdfQ0lQSEVSX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX0NJUEhFUl9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJXUk9OR19DSVBIRVJfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMjYxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9XUk9OR19NRVNTQUdFX1RZUEUKKyAgICB7IldST05HX01FU1NBR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUk9OR19NRVNTQUdFX1RZUEV9LAorICAjZWxzZQorICAgIHsiV1JPTkdfTUVTU0FHRV9UWVBFIiwgRVJSX0xJQl9TU0wsIDI2Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfTlVNQkVSX09GX0tFWV9CSVRTCisgICAgeyJXUk9OR19OVU1CRVJfT0ZfS0VZX0JJVFMiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfTlVNQkVSX09GX0tFWV9CSVRTfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX05VTUJFUl9PRl9LRVlfQklUUyIsIEVSUl9MSUJfU1NMLCAyNjN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX1NJR05BVFVSRV9MRU5HVEgKKyAgICB7IldST05HX1NJR05BVFVSRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfU0lHTkFUVVJFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJXUk9OR19TSUdOQVRVUkVfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDI2NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfU0lHTkFUVVJFX1NJWkUKKyAgICB7IldST05HX1NJR05BVFVSRV9TSVpFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1NJR05BVFVSRV9TSVpFfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1NJR05BVFVSRV9TSVpFIiwgRVJSX0xJQl9TU0wsIDI2NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfU1NMX1ZFUlNJT04KKyAgICB7IldST05HX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1NTTF9WRVJTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDI2Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfVkVSU0lPTl9OVU1CRVIKKyAgICB7IldST05HX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1ZFUlNJT05fTlVNQkVSfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIDI2N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfWDUwOV9MSUIKKyAgICB7Ilg1MDlfTElCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1g1MDlfTElCfSwKKyAgI2Vsc2UKKyAgICB7Ilg1MDlfTElCIiwgRVJSX0xJQl9TU0wsIDI2OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfWDUwOV9WRVJJRklDQVRJT05fU0VUVVBfUFJPQkxFTVMKKyAgICB7Ilg1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1g1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TfSwKKyAgI2Vsc2UKKyAgICB7Ilg1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TIiwgRVJSX0xJQl9TU0wsIDI2OX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0JBRF9YNTA5X0ZJTEVUWVBFCisgICAgeyJCQURfWDUwOV9GSUxFVFlQRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0JBRF9YNTA5X0ZJTEVUWVBFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9YNTA5X0ZJTEVUWVBFIiwgRVJSX0xJQl9YNTA5LCAxMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9CQVNFNjRfREVDT0RFX0VSUk9SCisgICAgeyJCQVNFNjRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfQkFTRTY0X0RFQ09ERV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJCQVNFNjRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCAxMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9DQU5UX0NIRUNLX0RIX0tFWQorICAgIHsiQ0FOVF9DSEVDS19ESF9LRVkiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9DQU5UX0NIRUNLX0RIX0tFWX0sCisgICNlbHNlCisgICAgeyJDQU5UX0NIRUNLX0RIX0tFWSIsIEVSUl9MSUJfWDUwOSwgMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEUKKyAgICB7IkNFUlRfQUxSRUFEWV9JTl9IQVNIX1RBQkxFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEV9LAorICAjZWxzZQorICAgIHsiQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEUiLCBFUlJfTElCX1g1MDksIDEwMX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0VSUl9BU04xX0xJQgorICAgIHsiRVJSX0FTTjFfTElCIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfRVJSX0FTTjFfTElCfSwKKyAgI2Vsc2UKKyAgICB7IkVSUl9BU04xX0xJQiIsIEVSUl9MSUJfWDUwOSwgMTAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfSU5WQUxJRF9ESVJFQ1RPUlkKKyAgICB7IklOVkFMSURfRElSRUNUT1JZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfSU5WQUxJRF9ESVJFQ1RPUll9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9ESVJFQ1RPUlkiLCBFUlJfTElCX1g1MDksIDExM30sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0lOVkFMSURfRklFTERfTkFNRQorICAgIHsiSU5WQUxJRF9GSUVMRF9OQU1FIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfSU5WQUxJRF9GSUVMRF9OQU1FfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfRklFTERfTkFNRSIsIEVSUl9MSUJfWDUwOSwgMTE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfSU5WQUxJRF9UUlVTVAorICAgIHsiSU5WQUxJRF9UUlVTVCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0lOVkFMSURfVFJVU1R9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9UUlVTVCIsIEVSUl9MSUJfWDUwOSwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfS0VZX1RZUEVfTUlTTUFUQ0gKKyAgICB7IktFWV9UWVBFX01JU01BVENIIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfS0VZX1RZUEVfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiS0VZX1RZUEVfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIDExNX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0tFWV9WQUxVRVNfTUlTTUFUQ0gKKyAgICB7IktFWV9WQUxVRVNfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIFg1MDlfUl9LRVlfVkFMVUVTX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IktFWV9WQUxVRVNfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIDExNn0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0xPQURJTkdfQ0VSVF9ESVIKKyAgICB7IkxPQURJTkdfQ0VSVF9ESVIiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9MT0FESU5HX0NFUlRfRElSfSwKKyAgI2Vsc2UKKyAgICB7IkxPQURJTkdfQ0VSVF9ESVIiLCBFUlJfTElCX1g1MDksIDEwM30sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0xPQURJTkdfREVGQVVMVFMKKyAgICB7IkxPQURJTkdfREVGQVVMVFMiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9MT0FESU5HX0RFRkFVTFRTfSwKKyAgI2Vsc2UKKyAgICB7IkxPQURJTkdfREVGQVVMVFMiLCBFUlJfTElCX1g1MDksIDEwNH0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX01FVEhPRF9OT1RfU1VQUE9SVEVECisgICAgeyJNRVRIT0RfTk9UX1NVUFBPUlRFRCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX01FVEhPRF9OT1RfU1VQUE9SVEVEfSwKKyAgI2Vsc2UKKyAgICB7Ik1FVEhPRF9OT1RfU1VQUE9SVEVEIiwgRVJSX0xJQl9YNTA5LCAxMjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9OT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZCisgICAgeyJOT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfTk9fQ0VSVF9TRVRfRk9SX1VTX1RPX1ZFUklGWX0sCisgICNlbHNlCisgICAgeyJOT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZIiwgRVJSX0xJQl9YNTA5LCAxMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9QVUJMSUNfS0VZX0RFQ09ERV9FUlJPUgorICAgIHsiUFVCTElDX0tFWV9ERUNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9QVUJMSUNfS0VZX0RFQ09ERV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfWDUwOSwgMTI1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfUFVCTElDX0tFWV9FTkNPREVfRVJST1IKKyAgICB7IlBVQkxJQ19LRVlfRU5DT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfUFVCTElDX0tFWV9FTkNPREVfRVJST1J9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9FTkNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIDEyNn0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1NIT1VMRF9SRVRSWQorICAgIHsiU0hPVUxEX1JFVFJZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfU0hPVUxEX1JFVFJZfSwKKyAgI2Vsc2UKKyAgICB7IlNIT1VMRF9SRVRSWSIsIEVSUl9MSUJfWDUwOSwgMTA2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTgorICAgIHsiVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTiIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOQUJMRV9UT19GSU5EX1BBUkFNRVRFUlNfSU5fQ0hBSU59LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTiIsIEVSUl9MSUJfWDUwOSwgMTA3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5BQkxFX1RPX0dFVF9DRVJUU19QVUJMSUNfS0VZCisgICAgeyJVTkFCTEVfVE9fR0VUX0NFUlRTX1BVQkxJQ19LRVkiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTkFCTEVfVE9fR0VUX0NFUlRTX1BVQkxJQ19LRVl9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0dFVF9DRVJUU19QVUJMSUNfS0VZIiwgRVJSX0xJQl9YNTA5LCAxMDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX0tFWV9UWVBFCisgICAgeyJVTktOT1dOX0tFWV9UWVBFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5LTk9XTl9LRVlfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0tFWV9UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX05JRAorICAgIHsiVU5LTk9XTl9OSUQiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTktOT1dOX05JRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX05JRCIsIEVSUl9MSUJfWDUwOSwgMTA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5LTk9XTl9QVVJQT1NFX0lECisgICAgeyJVTktOT1dOX1BVUlBPU0VfSUQiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTktOT1dOX1BVUlBPU0VfSUR9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QVVJQT1NFX0lEIiwgRVJSX0xJQl9YNTA5LCAxMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX1RSVVNUX0lECisgICAgeyJVTktOT1dOX1RSVVNUX0lEIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5LTk9XTl9UUlVTVF9JRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1RSVVNUX0lEIiwgRVJSX0xJQl9YNTA5LCAxMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTlNVUFBPUlRFRF9BTEdPUklUSE0KKyAgICB7IlVOU1VQUE9SVEVEX0FMR09SSVRITSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOU1VQUE9SVEVEX0FMR09SSVRITX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9BTEdPUklUSE0iLCBFUlJfTElCX1g1MDksIDExMX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1dST05HX0xPT0tVUF9UWVBFCisgICAgeyJXUk9OR19MT09LVVBfVFlQRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1dST05HX0xPT0tVUF9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX0xPT0tVUF9UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9XUk9OR19UWVBFCisgICAgeyJXUk9OR19UWVBFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfV1JPTkdfVFlQRX0sCisgICNlbHNlCisgICAgeyJXUk9OR19UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMjJ9LAorICAjZW5kaWYKKyAgICB7IE5VTEwgfQorfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3N0cnVjdC5jIGIvTW9kdWxlcy9fc3RydWN0LmMKaW5kZXggNTU4ZDI0Yi4uMGIyMGUyNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fc3RydWN0LmMKQEAgLTU4LDYgKzU4LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBmbG9hdCB4OyB9IHN0X2Zsb2F0OwogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGRvdWJsZSB4OyB9IHN0X2RvdWJsZTsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyB2b2lkICp4OyB9IHN0X3ZvaWRfcDsKK3R5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBzaXplX3QgeDsgfSBzdF9zaXplX3Q7CiAKICNkZWZpbmUgU0hPUlRfQUxJR04gKHNpemVvZihzdF9zaG9ydCkgLSBzaXplb2Yoc2hvcnQpKQogI2RlZmluZSBJTlRfQUxJR04gKHNpemVvZihzdF9pbnQpIC0gc2l6ZW9mKGludCkpCkBAIC02NSw2ICs2Niw3IEBACiAjZGVmaW5lIEZMT0FUX0FMSUdOIChzaXplb2Yoc3RfZmxvYXQpIC0gc2l6ZW9mKGZsb2F0KSkKICNkZWZpbmUgRE9VQkxFX0FMSUdOIChzaXplb2Yoc3RfZG91YmxlKSAtIHNpemVvZihkb3VibGUpKQogI2RlZmluZSBWT0lEX1BfQUxJR04gKHNpemVvZihzdF92b2lkX3ApIC0gc2l6ZW9mKHZvaWQgKikpCisjZGVmaW5lIFNJWkVfVF9BTElHTiAoc2l6ZW9mKHN0X3NpemVfdCkgLSBzaXplb2Yoc2l6ZV90KSkKIAogLyogV2UgY2FuJ3Qgc3VwcG9ydCBxIGFuZCBRIGluIG5hdGl2ZSBtb2RlIHVubGVzcyB0aGUgY29tcGlsZXIgZG9lczsKICAgIGluIHN0ZCBtb2RlLCB0aGV5J3JlIDggYnl0ZXMgb24gYWxsIHBsYXRmb3Jtcy4gKi8KQEAgLTIxMyw2ICsyMTUsNTIgQEAKIAogI2VuZGlmCiAKKy8qIFNhbWUsIGJ1dCBoYW5kbGluZyBQeV9zc2l6ZV90ICovCisKK3N0YXRpYyBpbnQKK2dldF9zc2l6ZV90KFB5T2JqZWN0ICp2LCBQeV9zc2l6ZV90ICpwKQoreworICAgIFB5X3NzaXplX3QgeDsKKworICAgIHYgPSBnZXRfcHlsb25nKHYpOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2KTsKKyAgICBQeV9ERUNSRUYodik7CisgICAgaWYgKHggPT0gKFB5X3NzaXplX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgKnAgPSB4OworICAgIHJldHVybiAwOworfQorCisvKiBTYW1lLCBidXQgaGFuZGxpbmcgc2l6ZV90ICovCisKK3N0YXRpYyBpbnQKK2dldF9zaXplX3QoUHlPYmplY3QgKnYsIHNpemVfdCAqcCkKK3sKKyAgICBzaXplX3QgeDsKKworICAgIHYgPSBnZXRfcHlsb25nKHYpOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKKyAgICB4ID0gUHlMb25nX0FzU2l6ZV90KHYpOworICAgIFB5X0RFQ1JFRih2KTsKKyAgICBpZiAoeCA9PSAoc2l6ZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgICpwID0geDsKKyAgICByZXR1cm4gMDsKK30KKwogCiAjZGVmaW5lIFJBTkdFX0VSUk9SKHgsIGYsIGZsYWcsIG1hc2spIHJldHVybiBfcmFuZ2VfZXJyb3IoZiwgZmxhZykKIApAQCAtMzY5LDYgKzQxNywyMyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyh4KTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK251X3NzaXplX3QoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIFB5X3NzaXplX3QgeDsKKyAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoeCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitudV9zaXplX3QoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHNpemVfdCB4OworICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHgpOworfQorCisKIC8qIE5hdGl2ZSBtb2RlIGRvZXNuJ3Qgc3VwcG9ydCBxIG9yIFEgdW5sZXNzIHRoZSBwbGF0Zm9ybSBDIHN1cHBvcnRzCiAgICBsb25nIGxvbmcgKG9yLCBvbiBXaW5kb3dzLCBfX2ludDY0KS4gKi8KIApAQCAtNTU4LDYgKzYyMywyNiBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitucF9zc2l6ZV90KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgUHlfc3NpemVfdCB4OworICAgIGlmIChnZXRfc3NpemVfdCh2LCAmeCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbWVtY3B5KHAsIChjaGFyICopJngsIHNpemVvZiB4KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbnBfc2l6ZV90KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgc2l6ZV90IHg7CisgICAgaWYgKGdldF9zaXplX3QodiwgJngpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIG1lbWNweShwLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7CisgICAgcmV0dXJuIDA7Cit9CisKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogCiBzdGF0aWMgaW50CkBAIC02NTEsNiArNzM2LDggQEAKICAgICB7J0knLCAgICAgICBzaXplb2YoaW50KSwgICAgSU5UX0FMSUdOLCAgICAgIG51X3VpbnQsICAgICAgICBucF91aW50fSwKICAgICB7J2wnLCAgICAgICBzaXplb2YobG9uZyksICAgTE9OR19BTElHTiwgICAgIG51X2xvbmcsICAgICAgICBucF9sb25nfSwKICAgICB7J0wnLCAgICAgICBzaXplb2YobG9uZyksICAgTE9OR19BTElHTiwgICAgIG51X3Vsb25nLCAgICAgICBucF91bG9uZ30sCisgICAgeyduJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zc2l6ZV90LCAgICAgbnBfc3NpemVfdH0sCisgICAgeydOJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zaXplX3QsICAgICAgbnBfc2l6ZV90fSwKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIHsncScsICAgICAgIHNpemVvZihQWV9MT05HX0xPTkcpLCBMT05HX0xPTkdfQUxJR04sIG51X2xvbmdsb25nLCBucF9sb25nbG9uZ30sCiAgICAgeydRJywgICAgICAgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIExPTkdfTE9OR19BTElHTiwgbnVfdWxvbmdsb25nLG5wX3Vsb25nbG9uZ30sCkBAIC0xOTY0LDcgKzIwNTEsOCBAQAogICBsOmxvbmc7IEw6dW5zaWduZWQgbG9uZzsgZjpmbG9hdDsgZDpkb3VibGUuXG5cCiBTcGVjaWFsIGNhc2VzIChwcmVjZWRpbmcgZGVjaW1hbCBjb3VudCBpbmRpY2F0ZXMgbGVuZ3RoKTpcblwKICAgczpzdHJpbmcgKGFycmF5IG9mIGNoYXIpOyBwOiBwYXNjYWwgc3RyaW5nICh3aXRoIGNvdW50IGJ5dGUpLlxuXAotU3BlY2lhbCBjYXNlIChvbmx5IGF2YWlsYWJsZSBpbiBuYXRpdmUgZm9ybWF0KTpcblwKK1NwZWNpYWwgY2FzZXMgKG9ubHkgYXZhaWxhYmxlIGluIG5hdGl2ZSBmb3JtYXQpOlxuXAorICBuOnNzaXplX3Q7IE46c2l6ZV90O1xuXAogICBQOmFuIGludGVnZXIgdHlwZSB0aGF0IGlzIHdpZGUgZW5vdWdoIHRvIGhvbGQgYSBwb2ludGVyLlxuXAogU3BlY2lhbCBjYXNlIChub3QgaW4gbmF0aXZlIG1vZGUgdW5sZXNzICdsb25nIGxvbmcnIGluIHBsYXRmb3JtIEMpOlxuXAogICBxOmxvbmcgbG9uZzsgUTp1bnNpZ25lZCBsb25nIGxvbmdcblwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RidWZmZXIuYyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2FkYTBhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCkBAIC0wLDAgKzEsMjg3NiBAQAorLyogQyBFeHRlbnNpb24gbW9kdWxlIHRvIHRlc3QgYWxsIGFzcGVjdHMgb2YgUEVQLTMxMTguCisgICBXcml0dGVuIGJ5IFN0ZWZhbiBLcmFoLiAqLworCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKworLyogc3RydWN0IG1vZHVsZSAqLworUHlPYmplY3QgKnN0cnVjdG1vZHVsZSA9IE5VTEw7CitQeU9iamVjdCAqU3RydWN0ID0gTlVMTDsKK1B5T2JqZWN0ICpjYWxjc2l6ZSA9IE5VTEw7CisKKy8qIGNhY2hlIHNpbXBsZSBmb3JtYXQgc3RyaW5nICovCitzdGF0aWMgY29uc3QgY2hhciAqc2ltcGxlX2ZtdCA9ICJCIjsKK1B5T2JqZWN0ICpzaW1wbGVfZm9ybWF0ID0gTlVMTDsKKyNkZWZpbmUgU0lNUExFX0ZPUk1BVChmbXQpIChmbXQgPT0gTlVMTCB8fCBzdHJjbXAoZm10LCAiQiIpID09IDApCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5EQXJyYXkgT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlUeXBlT2JqZWN0IE5EQXJyYXlfVHlwZTsKKyNkZWZpbmUgTkRBcnJheV9DaGVjayh2KSAoUHlfVFlQRSh2KSA9PSAmTkRBcnJheV9UeXBlKQorCisjZGVmaW5lIENIRUNLX0xJU1RfT1JfVFVQTEUodikgXAorICAgIGlmICghUHlMaXN0X0NoZWNrKHYpICYmICFQeVR1cGxlX0NoZWNrKHYpKSB7IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgICAgICAgICBcCisgICAgICAgICAgICAjdiAiIG11c3QgYmUgYSBsaXN0IG9yIGEgdHVwbGUiKTsgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisKKyNkZWZpbmUgUHlNZW1fWEZyZWUodikgXAorICAgIGRvIHsgaWYgKHYpIFB5TWVtX0ZyZWUodik7IH0gd2hpbGUgKDApCisKKy8qIE1heGltdW0gbnVtYmVyIG9mIGRpbWVuc2lvbnMuICovCisjZGVmaW5lIE5EX01BWF9ORElNICgyICogUHlCVUZfTUFYX05ESU0pCisKKy8qIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2Ygc3Vib2Zmc2V0cyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uLiAqLworI2RlZmluZSBIQVZFX1BUUihzdWJvZmZzZXRzKSAoc3Vib2Zmc2V0cyAmJiBzdWJvZmZzZXRzWzBdID49IDApCisvKiBBZGp1c3QgcHRyIGlmIHN1Ym9mZnNldHMgYXJlIHByZXNlbnQuICovCisjZGVmaW5lIEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKSBcCisgICAgKEhBVkVfUFRSKHN1Ym9mZnNldHMpID8gKigoY2hhcioqKXB0cikgKyBzdWJvZmZzZXRzWzBdIDogcHRyKQorCisvKiBEZWZhdWx0OiBOdW1QeSBzdHlsZSAoc3RyaWRlcyksIHJlYWQtb25seSwgbm8gdmFyLWV4cG9ydCwgQy1zdHlsZSBsYXlvdXQgKi8KKyNkZWZpbmUgTkRfREVGQVVMVCAgICAgICAgICAweDAwMAorLyogVXNlciBjb25maWd1cmFibGUgZmxhZ3MgZm9yIHRoZSBuZGFycmF5ICovCisjZGVmaW5lIE5EX1ZBUkVYUE9SVCAgICAgICAgMHgwMDEgICAvKiBjaGFuZ2UgbGF5b3V0IHdoaWxlIGJ1ZmZlcnMgYXJlIGV4cG9ydGVkICovCisvKiBVc2VyIGNvbmZpZ3VyYWJsZSBmbGFncyBmb3IgZWFjaCBiYXNlIGJ1ZmZlciAqLworI2RlZmluZSBORF9XUklUQUJMRSAgICAgICAgIDB4MDAyICAgLyogbWFyayBiYXNlIGJ1ZmZlciBhcyB3cml0YWJsZSAqLworI2RlZmluZSBORF9GT1JUUkFOICAgICAgICAgIDB4MDA0ICAgLyogRm9ydHJhbiBjb250aWd1b3VzIGxheW91dCAqLworI2RlZmluZSBORF9TQ0FMQVIgICAgICAgICAgIDB4MDA4ICAgLyogc2NhbGFyOiBuZGltID0gMCAqLworI2RlZmluZSBORF9QSUwgICAgICAgICAgICAgIDB4MDEwICAgLyogY29udmVydCB0byBQSUwtc3R5bGUgYXJyYXkgKHN1Ym9mZnNldHMpICovCisjZGVmaW5lIE5EX1JFRElSRUNUICAgICAgICAgMHgwMjAgICAvKiByZWRpcmVjdCBidWZmZXIgcmVxdWVzdHMgKi8KKyNkZWZpbmUgTkRfR0VUQlVGX0ZBSUwgICAgICAweDA0MCAgIC8qIHRyaWdnZXIgZ2V0YnVmZmVyIGZhaWx1cmUgKi8KKyNkZWZpbmUgTkRfR0VUQlVGX1VOREVGSU5FRCAweDA4MCAgIC8qIHVuZGVmaW5lZCB2aWV3Lm9iaiAqLworLyogSW50ZXJuYWwgZmxhZ3MgZm9yIHRoZSBiYXNlIGJ1ZmZlciAqLworI2RlZmluZSBORF9DICAgICAgICAgICAgICAgIDB4MTAwICAgLyogQyBjb250aWd1b3VzIGxheW91dCAoZGVmYXVsdCkgKi8KKyNkZWZpbmUgTkRfT1dOX0FSUkFZUyAgICAgICAweDIwMCAgIC8qIGNvbnN1bWVyIG93bnMgYXJyYXlzICovCisKKy8qIG5kYXJyYXkgcHJvcGVydGllcyAqLworI2RlZmluZSBORF9JU19DT05TVU1FUihuZCkgXAorICAgICgoKE5EQXJyYXlPYmplY3QgKiluZCktPmhlYWQgPT0gJigoTkRBcnJheU9iamVjdCAqKW5kKS0+c3RhdGljYnVmKQorCisvKiBuZGJ1Zi0+ZmxhZ3MgcHJvcGVydGllcyAqLworI2RlZmluZSBORF9DX0NPTlRJR1VPVVMoZmxhZ3MpICghIShmbGFncyYoTkRfU0NBTEFSfE5EX0MpKSkKKyNkZWZpbmUgTkRfRk9SVFJBTl9DT05USUdVT1VTKGZsYWdzKSAoISEoZmxhZ3MmKE5EX1NDQUxBUnxORF9GT1JUUkFOKSkpCisjZGVmaW5lIE5EX0FOWV9DT05USUdVT1VTKGZsYWdzKSAoISEoZmxhZ3MmKE5EX1NDQUxBUnxORF9DfE5EX0ZPUlRSQU4pKSkKKworLyogZ2V0YnVmZmVyKCkgcmVxdWVzdHMgKi8KKyNkZWZpbmUgUkVRX0lORElSRUNUKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0lORElSRUNUKSA9PSBQeUJVRl9JTkRJUkVDVCkKKyNkZWZpbmUgUkVRX0NfQ09OVElHVU9VUyhmbGFncykgKChmbGFncyZQeUJVRl9DX0NPTlRJR1VPVVMpID09IFB5QlVGX0NfQ09OVElHVU9VUykKKyNkZWZpbmUgUkVRX0ZfQ09OVElHVU9VUyhmbGFncykgKChmbGFncyZQeUJVRl9GX0NPTlRJR1VPVVMpID09IFB5QlVGX0ZfQ09OVElHVU9VUykKKyNkZWZpbmUgUkVRX0FOWV9DT05USUdVT1VTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0FOWV9DT05USUdVT1VTKSA9PSBQeUJVRl9BTllfQ09OVElHVU9VUykKKyNkZWZpbmUgUkVRX1NUUklERVMoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfU1RSSURFUykgPT0gUHlCVUZfU1RSSURFUykKKyNkZWZpbmUgUkVRX1NIQVBFKGZsYWdzKSAoKGZsYWdzJlB5QlVGX05EKSA9PSBQeUJVRl9ORCkKKyNkZWZpbmUgUkVRX1dSSVRBQkxFKGZsYWdzKSAoZmxhZ3MmUHlCVUZfV1JJVEFCTEUpCisjZGVmaW5lIFJFUV9GT1JNQVQoZmxhZ3MpIChmbGFncyZQeUJVRl9GT1JNQVQpCisKKworLyogU2luZ2xlIG5vZGUgb2YgYSBsaXN0IG9mIGJhc2UgYnVmZmVycy4gVGhlIGxpc3QgaXMgbmVlZGVkIHRvIGltcGxlbWVudAorICAgY2hhbmdlcyBpbiBtZW1vcnkgbGF5b3V0IHdoaWxlIGV4cG9ydGVkIGJ1ZmZlcnMgYXJlIGFjdGl2ZS4gKi8KK3N0YXRpYyBQeVR5cGVPYmplY3QgTkRBcnJheV9UeXBlOworCitzdHJ1Y3QgbmRidWY7Cit0eXBlZGVmIHN0cnVjdCBuZGJ1ZiB7CisgICAgc3RydWN0IG5kYnVmICpuZXh0OworICAgIHN0cnVjdCBuZGJ1ZiAqcHJldjsKKyAgICBQeV9zc2l6ZV90IGxlbjsgICAgIC8qIGxlbmd0aCBvZiBkYXRhICovCisgICAgUHlfc3NpemVfdCBvZmZzZXQ7ICAvKiBzdGFydCBvZiB0aGUgYXJyYXkgcmVsYXRpdmUgdG8gZGF0YSAqLworICAgIGNoYXIgKmRhdGE7ICAgICAgICAgLyogcmF3IGRhdGEgKi8KKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgIC8qIGNhcGFiaWxpdGllcyBvZiB0aGUgYmFzZSBidWZmZXIgKi8KKyAgICBQeV9zc2l6ZV90IGV4cG9ydHM7IC8qIG51bWJlciBvZiBleHBvcnRzICovCisgICAgUHlfYnVmZmVyIGJhc2U7ICAgICAvKiBiYXNlIGJ1ZmZlciAqLworfSBuZGJ1Zl90OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGludCBmbGFnczsgICAgICAgICAgLyogbmRhcnJheSBmbGFncyAqLworICAgIG5kYnVmX3Qgc3RhdGljYnVmOyAgLyogc3RhdGljIGJ1ZmZlciBmb3IgcmUtZXhwb3J0aW5nIG1vZGUgKi8KKyAgICBuZGJ1Zl90ICpoZWFkOyAgICAgIC8qIGN1cnJlbnRseSBhY3RpdmUgYmFzZSBidWZmZXIgKi8KK30gTkRBcnJheU9iamVjdDsKKworCitzdGF0aWMgbmRidWZfdCAqCituZGJ1Zl9uZXcoUHlfc3NpemVfdCBuaXRlbXMsIFB5X3NzaXplX3QgaXRlbXNpemUsIFB5X3NzaXplX3Qgb2Zmc2V0LCBpbnQgZmxhZ3MpCit7CisgICAgbmRidWZfdCAqbmRidWY7CisgICAgUHlfYnVmZmVyICpiYXNlOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgbGVuID0gbml0ZW1zICogaXRlbXNpemU7CisgICAgaWYgKG9mZnNldCAlIGl0ZW1zaXplKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm9mZnNldCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgaXRlbXNpemUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCtpdGVtc2l6ZSA+IGxlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5kYnVmID0gUHlNZW1fTWFsbG9jKHNpemVvZiAqbmRidWYpOworICAgIGlmIChuZGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5kYnVmLT5uZXh0ID0gTlVMTDsKKyAgICBuZGJ1Zi0+cHJldiA9IE5VTEw7CisgICAgbmRidWYtPmxlbiA9IGxlbjsKKyAgICBuZGJ1Zi0+b2Zmc2V0PSBvZmZzZXQ7CisKKyAgICBuZGJ1Zi0+ZGF0YSA9IFB5TWVtX01hbGxvYyhsZW4pOworICAgIGlmIChuZGJ1Zi0+ZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIFB5TWVtX0ZyZWUobmRidWYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuZGJ1Zi0+ZmxhZ3MgPSBmbGFnczsKKyAgICBuZGJ1Zi0+ZXhwb3J0cyA9IDA7CisKKyAgICBiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIGJhc2UtPm9iaiA9IE5VTEw7CisgICAgYmFzZS0+YnVmID0gbmRidWYtPmRhdGE7CisgICAgYmFzZS0+bGVuID0gbGVuOworICAgIGJhc2UtPml0ZW1zaXplID0gMTsKKyAgICBiYXNlLT5yZWFkb25seSA9IDA7CisgICAgYmFzZS0+Zm9ybWF0ID0gTlVMTDsKKyAgICBiYXNlLT5uZGltID0gMTsKKyAgICBiYXNlLT5zaGFwZSA9IE5VTEw7CisgICAgYmFzZS0+c3RyaWRlcyA9IE5VTEw7CisgICAgYmFzZS0+c3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgYmFzZS0+aW50ZXJuYWwgPSBuZGJ1ZjsKKworICAgIHJldHVybiBuZGJ1ZjsKK30KKworc3RhdGljIHZvaWQKK25kYnVmX2ZyZWUobmRidWZfdCAqbmRidWYpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworCisgICAgUHlNZW1fWEZyZWUobmRidWYtPmRhdGEpOworICAgIFB5TWVtX1hGcmVlKGJhc2UtPmZvcm1hdCk7CisgICAgUHlNZW1fWEZyZWUoYmFzZS0+c2hhcGUpOworICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN0cmlkZXMpOworICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN1Ym9mZnNldHMpOworCisgICAgUHlNZW1fRnJlZShuZGJ1Zik7Cit9CisKK3N0YXRpYyB2b2lkCituZGJ1Zl9wdXNoKE5EQXJyYXlPYmplY3QgKm5kLCBuZGJ1Zl90ICplbHQpCit7CisgICAgZWx0LT5uZXh0ID0gbmQtPmhlYWQ7CisgICAgaWYgKG5kLT5oZWFkKSBuZC0+aGVhZC0+cHJldiA9IGVsdDsKKyAgICBuZC0+aGVhZCA9IGVsdDsKKyAgICBlbHQtPnByZXYgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZAorbmRidWZfZGVsZXRlKE5EQXJyYXlPYmplY3QgKm5kLCBuZGJ1Zl90ICplbHQpCit7CisgICAgaWYgKGVsdC0+cHJldikKKyAgICAgICAgZWx0LT5wcmV2LT5uZXh0ID0gZWx0LT5uZXh0OworICAgIGVsc2UKKyAgICAgICAgbmQtPmhlYWQgPSBlbHQtPm5leHQ7CisgICAgCisgICAgaWYgKGVsdC0+bmV4dCkKKyAgICAgICAgZWx0LT5uZXh0LT5wcmV2ID0gZWx0LT5wcmV2OworCisgICAgbmRidWZfZnJlZShlbHQpOworfQorCitzdGF0aWMgdm9pZAorbmRidWZfcG9wKE5EQXJyYXlPYmplY3QgKm5kKQoreworICAgIG5kYnVmX2RlbGV0ZShuZCwgbmQtPmhlYWQpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZDsKKworICAgIG5kID0gUHlPYmplY3RfTmV3KE5EQXJyYXlPYmplY3QsICZOREFycmF5X1R5cGUpOworICAgIGlmIChuZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG5kLT5mbGFncyA9IDA7CisgICAgbmQtPmhlYWQgPSBOVUxMOworICAgIHJldHVybiAoUHlPYmplY3QgKiluZDsKK30KKworc3RhdGljIHZvaWQKK25kYXJyYXlfZGVhbGxvYyhOREFycmF5T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChzZWxmLT5oZWFkKSB7CisgICAgICAgIGlmIChORF9JU19DT05TVU1FUihzZWxmKSkgeworICAgICAgICAgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgICAgICAgICBpZiAoc2VsZi0+aGVhZC0+ZmxhZ3MgJiBORF9PV05fQVJSQVlTKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fWEZyZWUoYmFzZS0+c2hhcGUpOworICAgICAgICAgICAgICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN0cmlkZXMpOworICAgICAgICAgICAgICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN1Ym9mZnNldHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShiYXNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHdoaWxlIChzZWxmLT5oZWFkKQorICAgICAgICAgICAgICAgIG5kYnVmX3BvcChzZWxmKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBpbnQKK25kYXJyYXlfaW5pdF9zdGF0aWNidWYoUHlPYmplY3QgKmV4cG9ydGVyLCBOREFycmF5T2JqZWN0ICpuZCwgaW50IGZsYWdzKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZC0+c3RhdGljYnVmLmJhc2U7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGV4cG9ydGVyLCBiYXNlLCBmbGFncykgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuZC0+aGVhZCA9ICZuZC0+c3RhdGljYnVmOworCisgICAgbmQtPmhlYWQtPm5leHQgPSBOVUxMOworICAgIG5kLT5oZWFkLT5wcmV2ID0gTlVMTDsKKyAgICBuZC0+aGVhZC0+bGVuID0gLTE7CisgICAgbmQtPmhlYWQtPm9mZnNldCA9IC0xOworICAgIG5kLT5oZWFkLT5kYXRhID0gTlVMTDsKKworICAgIG5kLT5oZWFkLT5mbGFncyA9IGJhc2UtPnJlYWRvbmx5ID8gMCA6IE5EX1dSSVRBQkxFOworICAgIG5kLT5oZWFkLT5leHBvcnRzID0gMDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9mbGFncyhuZGJ1Zl90ICpuZGJ1ZikKK3sKKyAgICBpZiAobmRidWYtPmJhc2UubmRpbSA9PSAwKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfU0NBTEFSOworICAgIGlmIChuZGJ1Zi0+YmFzZS5zdWJvZmZzZXRzKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfUElMOworICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJm5kYnVmLT5iYXNlLCAnQycpKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfQzsKKyAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKCZuZGJ1Zi0+YmFzZSwgJ0YnKSkKKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IE5EX0ZPUlRSQU47Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyL0xpc3QgY29udmVyc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlfc3NpemVfdCAqc3RyaWRlc19mcm9tX3NoYXBlKGNvbnN0IG5kYnVmX3QgKiwgaW50IGZsYWdzKTsKKworLyogR2V0IG51bWJlciBvZiBtZW1iZXJzIGluIGEgc3RydWN0OiBzZWUgaXNzdWUgIzEyNzQwICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5X3NzaXplX3Qgc19zaXplOworICAgIFB5X3NzaXplX3Qgc19sZW47Cit9IFB5UGFydGlhbFN0cnVjdE9iamVjdDsKKworc3RhdGljIFB5X3NzaXplX3QKK2dldF9ubWVtYihQeU9iamVjdCAqcykKK3sKKyAgICByZXR1cm4gKChQeVBhcnRpYWxTdHJ1Y3RPYmplY3QgKilzKS0+c19sZW47Cit9CisKKy8qIFBhY2sgYWxsIGl0ZW1zIGludG8gdGhlIGJ1ZmZlciBvZiAnb2JqJy4gVGhlICdmb3JtYXQnIHBhcmFtZXRlciBtdXN0IGJlCisgICBpbiBzdHJ1Y3QgbW9kdWxlIHN5bnRheC4gRm9yIHN0YW5kYXJkIEMgdHlwZXMsIGEgc2luZ2xlIGl0ZW0gaXMgYW4gaW50ZWdlci4KKyAgIEZvciBjb21wb3VuZCB0eXBlcywgYSBzaW5nbGUgaXRlbSBpcyBhIHR1cGxlIG9mIGludGVnZXJzLiAqLworc3RhdGljIGludAorcGFja19mcm9tX2xpc3QoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKml0ZW1zLCBQeU9iamVjdCAqZm9ybWF0LAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpdGVtc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqc3RydWN0b2JqLCAqcGFja19pbnRvOworICAgIFB5T2JqZWN0ICphcmdzLCAqb2Zmc2V0OworICAgIFB5T2JqZWN0ICppdGVtLCAqdG1wOworICAgIFB5X3NzaXplX3Qgbml0ZW1zOyAvKiBudW1iZXIgb2YgaXRlbXMgKi8KKyAgICBQeV9zc2l6ZV90IG5tZW1iOyAgLyogbnVtYmVyIG9mIG1lbWJlcnMgaW4gYSBzaW5nbGUgaXRlbSAqLworICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIGFzc2VydChQeU9iamVjdF9DaGVja0J1ZmZlcihvYmopKTsKKyAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKGl0ZW1zKSB8fCBQeVR1cGxlX0NoZWNrKGl0ZW1zKSk7CisKKyAgICBzdHJ1Y3RvYmogPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFN0cnVjdCwgZm9ybWF0LCBOVUxMKTsKKyAgICBpZiAoc3RydWN0b2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIG5pdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShpdGVtcyk7CisgICAgbm1lbWIgPSBnZXRfbm1lbWIoc3RydWN0b2JqKTsKKyAgICBhc3NlcnQobm1lbWIgPj0gMSk7CisKKyAgICBwYWNrX2ludG8gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG9iaiwgInBhY2tfaW50byIpOworICAgIGlmIChwYWNrX2ludG8gPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoc3RydWN0b2JqKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIG5tZW1iID49IDEgKi8KKyAgICBhcmdzID0gUHlUdXBsZV9OZXcoMiArIG5tZW1iKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihwYWNrX2ludG8pOworICAgICAgICBQeV9ERUNSRUYoc3RydWN0b2JqKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG9mZnNldCA9IE5VTEw7CisgICAgZm9yIChpID0gMDsgaSA8IG5pdGVtczsgaSsrKSB7CisgICAgICAgIC8qIExvb3AgaW52YXJpYW50OiBhcmdzW2pdIGFyZSBib3Jyb3dlZCByZWZlcmVuY2VzIG9yIE5VTEwuICovCisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgb2JqKTsKKyAgICAgICAgZm9yIChqID0gMTsgaiA8IDIrbm1lbWI7IGorKykKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgaiwgTlVMTCk7CisKKyAgICAgICAgUHlfWERFQ1JFRihvZmZzZXQpOworICAgICAgICBvZmZzZXQgPSBQeUxvbmdfRnJvbVNzaXplX3QoaSppdGVtc2l6ZSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0ID0gLTE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIG9mZnNldCk7CisKKyAgICAgICAgaXRlbSA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShpdGVtcywgaSk7CisgICAgICAgIGlmICgoUHlCeXRlc19DaGVjayhpdGVtKSB8fCBQeUxvbmdfQ2hlY2soaXRlbSkgfHwKKyAgICAgICAgICAgICBQeUZsb2F0X0NoZWNrKGl0ZW0pKSAmJiBubWVtYiA9PSAxKSB7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIsIGl0ZW0pOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKChQeUxpc3RfQ2hlY2soaXRlbSkgfHwgUHlUdXBsZV9DaGVjayhpdGVtKSkgJiYKKyAgICAgICAgICAgICAgICAgUHlTZXF1ZW5jZV9MZW5ndGgoaXRlbSkgPT0gbm1lbWIpIHsKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBubWVtYjsgaisrKSB7CisgICAgICAgICAgICAgICAgdG1wID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGl0ZW0sIGopOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMitqLCB0bXApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1pc21hdGNoIGJldHdlZW4gaW5pdGlhbGl6ZXIgZWxlbWVudCBhbmQgZm9ybWF0IHN0cmluZyIpOworICAgICAgICAgICAgcmV0ID0gLTE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxPYmplY3QocGFja19pbnRvLCBhcmdzKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIH0KKworICAgIFB5X0lOQ1JFRihvYmopOyAvKiBhcmdzWzBdICovCisgICAgLyogYXJnc1sxXTogb2Zmc2V0IGlzIGVpdGhlciBOVUxMIG9yIHNob3VsZCBiZSBkZWFsbG9jJ2QgKi8KKyAgICBmb3IgKGkgPSAyOyBpIDwgMitubWVtYjsgaSsrKSB7CisgICAgICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisgICAgICAgIFB5X1hJTkNSRUYodG1wKTsKKyAgICB9CisgICAgUHlfREVDUkVGKGFyZ3MpOworCisgICAgUHlfREVDUkVGKHBhY2tfaW50byk7CisgICAgUHlfREVDUkVGKHN0cnVjdG9iaik7CisgICAgcmV0dXJuIHJldDsKKworfQorCisvKiBQYWNrIHNpbmdsZSBlbGVtZW50ICovCitzdGF0aWMgaW50CitwYWNrX3NpbmdsZShjaGFyICpwdHIsIFB5T2JqZWN0ICppdGVtLCBjb25zdCBjaGFyICpmbXQsIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlPYmplY3QgKnN0cnVjdG9iaiA9IE5VTEwsICpwYWNrX2ludG8gPSBOVUxMLCAqYXJncyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEwsICptdmlldyA9IE5VTEwsICp6ZXJvID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGksIG5tZW1iOworICAgIGludCByZXQgPSAtMTsKKyAgICBQeU9iamVjdCAqeDsKKworICAgIGlmIChmbXQgPT0gTlVMTCkgZm10ID0gIkIiOworCisgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZm10KTsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgc3RydWN0b2JqID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhTdHJ1Y3QsIGZvcm1hdCwgTlVMTCk7CisgICAgaWYgKHN0cnVjdG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIG5tZW1iID0gZ2V0X25tZW1iKHN0cnVjdG9iaik7CisgICAgYXNzZXJ0KG5tZW1iID49IDEpOworCisgICAgbXZpZXcgPSBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeShwdHIsIGl0ZW1zaXplLCBQeUJVRl9XUklURSk7CisgICAgaWYgKG12aWV3ID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgemVybyA9IFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICBpZiAoemVybyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHBhY2tfaW50byA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0b2JqLCAicGFja19pbnRvIik7CisgICAgaWYgKHBhY2tfaW50byA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyK25tZW1iKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbXZpZXcpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgemVybyk7CisKKyAgICBpZiAoKFB5Qnl0ZXNfQ2hlY2soaXRlbSkgfHwgUHlMb25nX0NoZWNrKGl0ZW0pIHx8CisgICAgICAgICBQeUZsb2F0X0NoZWNrKGl0ZW0pKSAmJiBubWVtYiA9PSAxKSB7CisgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIsIGl0ZW0pOworICAgIH0KKyAgICBlbHNlIGlmICgoUHlMaXN0X0NoZWNrKGl0ZW0pIHx8IFB5VHVwbGVfQ2hlY2soaXRlbSkpICYmCisgICAgICAgICAgICAgUHlTZXF1ZW5jZV9MZW5ndGgoaXRlbSkgPT0gbm1lbWIpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5tZW1iOyBpKyspIHsKKyAgICAgICAgICAgIHggPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oaXRlbSwgaSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIraSwgeCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm1pc21hdGNoIGJldHdlZW4gaW5pdGlhbGl6ZXIgZWxlbWVudCBhbmQgZm9ybWF0IHN0cmluZyIpOworICAgICAgICBnb3RvIGFyZ3Nfb3V0OworICAgIH0KKworICAgIHggPSBQeU9iamVjdF9DYWxsT2JqZWN0KHBhY2tfaW50bywgYXJncyk7CisgICAgaWYgKHggIT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgIHJldCA9IDA7CisgICAgfQorCisKK2FyZ3Nfb3V0OgorICAgIGZvciAoaSA9IDA7IGkgPCAyK25tZW1iOyBpKyspCisgICAgICAgIFB5X1hJTkNSRUYoUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKSk7CisgICAgUHlfWERFQ1JFRihhcmdzKTsKK291dDoKKyAgICBQeV9YREVDUkVGKHBhY2tfaW50byk7CisgICAgUHlfWERFQ1JFRih6ZXJvKTsKKyAgICBQeV9YREVDUkVGKG12aWV3KTsKKyAgICBQeV9YREVDUkVGKHN0cnVjdG9iaik7CisgICAgUHlfWERFQ1JFRihmb3JtYXQpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCitjb3B5X3JlYyhjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwgUHlfc3NpemVfdCBuZGltLCBQeV9zc2l6ZV90IGl0ZW1zaXplLAorICAgICAgICAgY2hhciAqZHB0ciwgY29uc3QgUHlfc3NpemVfdCAqZHN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKmRzdWJvZmZzZXRzLAorICAgICAgICAgY2hhciAqc3B0ciwgY29uc3QgUHlfc3NpemVfdCAqc3N0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKnNzdWJvZmZzZXRzLAorICAgICAgICAgY2hhciAqbWVtKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChuZGltID49IDEpOworCisgICAgaWYgKG5kaW0gPT0gMSkgeworICAgICAgICBpZiAoIUhBVkVfUFRSKGRzdWJvZmZzZXRzKSAmJiAhSEFWRV9QVFIoc3N1Ym9mZnNldHMpICYmCisgICAgICAgICAgICBkc3RyaWRlc1swXSA9PSBpdGVtc2l6ZSAmJiBzc3RyaWRlc1swXSA9PSBpdGVtc2l6ZSkgeworICAgICAgICAgICAgbWVtbW92ZShkcHRyLCBzcHRyLCBzaGFwZVswXSAqIGl0ZW1zaXplKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoYXIgKnA7CisgICAgICAgICAgICBhc3NlcnQobWVtICE9IE5VTEwpOworICAgICAgICAgICAgZm9yIChpPTAsIHA9bWVtOyBpPHNoYXBlWzBdOyBwKz1pdGVtc2l6ZSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgeworICAgICAgICAgICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cyk7CisgICAgICAgICAgICAgICAgbWVtY3B5KHAsIHhzcHRyLCBpdGVtc2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGk9MCwgcD1tZW07IGk8c2hhcGVbMF07IHArPWl0ZW1zaXplLCBkcHRyKz1kc3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgICAgICAgICAgY2hhciAqeGRwdHIgPSBBREpVU1RfUFRSKGRwdHIsIGRzdWJvZmZzZXRzKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoeGRwdHIsIHAsIGl0ZW1zaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBkcHRyKz1kc3RyaWRlc1swXSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMpOworICAgICAgICBjaGFyICp4c3B0ciA9IEFESlVTVF9QVFIoc3B0ciwgc3N1Ym9mZnNldHMpOworCisgICAgICAgIGNvcHlfcmVjKHNoYXBlKzEsIG5kaW0tMSwgaXRlbXNpemUsCisgICAgICAgICAgICAgICAgIHhkcHRyLCBkc3RyaWRlcysxLCBkc3Vib2Zmc2V0cyA/IGRzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICB4c3B0ciwgc3N0cmlkZXMrMSwgc3N1Ym9mZnNldHMgPyBzc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgbWVtKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2NtcF9zdHJ1Y3R1cmUoUHlfYnVmZmVyICpkZXN0LCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IHNhbWVfZm10ID0gKChkZXN0LT5mb3JtYXQgPT0gTlVMTCAmJiBzcmMtPmZvcm1hdCA9PSBOVUxMKSB8fCBcCisgICAgICAgICAgICAgICAgICAgIChzdHJjbXAoZGVzdC0+Zm9ybWF0LCBzcmMtPmZvcm1hdCkgPT0gMCkpOworCisgICAgaWYgKCFzYW1lX2ZtdCB8fAorICAgICAgICBkZXN0LT5pdGVtc2l6ZSAhPSBzcmMtPml0ZW1zaXplIHx8CisgICAgICAgIGRlc3QtPm5kaW0gIT0gc3JjLT5uZGltKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZGVzdC0+bmRpbTsgaSsrKSB7CisgICAgICAgIGlmIChkZXN0LT5zaGFwZVtpXSAhPSBzcmMtPnNoYXBlW2ldKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZGVzdC0+c2hhcGVbaV0gPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBDb3B5IHNyYyB0byBkZXN0LiBCb3RoIGJ1ZmZlcnMgbXVzdCBoYXZlIHRoZSBzYW1lIGZvcm1hdCwgaXRlbXNpemUsCisgICBuZGltIGFuZCBzaGFwZS4gQ29weWluZyBpcyBhdG9taWMsIHRoZSBmdW5jdGlvbiBuZXZlciBmYWlscyB3aXRoCisgICBhIHBhcnRpYWwgY29weS4gKi8KK3N0YXRpYyBpbnQKK2NvcHlfYnVmZmVyKFB5X2J1ZmZlciAqZGVzdCwgUHlfYnVmZmVyICpzcmMpCit7CisgICAgY2hhciAqbWVtID0gTlVMTDsKKworICAgIGFzc2VydChkZXN0LT5uZGltID4gMCk7CisKKyAgICBpZiAoY21wX3N0cnVjdHVyZShkZXN0LCBzcmMpIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGFzc2lnbm1lbnQ6IGx2YWx1ZSBhbmQgcnZhbHVlIGhhdmUgZGlmZmVyZW50IHN0cnVjdHVyZXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICgoZGVzdC0+c3Vib2Zmc2V0cyAmJiBkZXN0LT5zdWJvZmZzZXRzW2Rlc3QtPm5kaW0tMV0gPj0gMCkgfHwKKyAgICAgICAgKHNyYy0+c3Vib2Zmc2V0cyAmJiBzcmMtPnN1Ym9mZnNldHNbc3JjLT5uZGltLTFdID49IDApIHx8CisgICAgICAgIGRlc3QtPnN0cmlkZXNbZGVzdC0+bmRpbS0xXSAhPSBkZXN0LT5pdGVtc2l6ZSB8fAorICAgICAgICBzcmMtPnN0cmlkZXNbc3JjLT5uZGltLTFdICE9IHNyYy0+aXRlbXNpemUpIHsKKyAgICAgICAgbWVtID0gUHlNZW1fTWFsbG9jKGRlc3QtPnNoYXBlW2Rlc3QtPm5kaW0tMV0gKiBkZXN0LT5pdGVtc2l6ZSk7CisgICAgICAgIGlmIChtZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvcHlfcmVjKGRlc3QtPnNoYXBlLCBkZXN0LT5uZGltLCBkZXN0LT5pdGVtc2l6ZSwKKyAgICAgICAgICAgICBkZXN0LT5idWYsIGRlc3QtPnN0cmlkZXMsIGRlc3QtPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgc3JjLT5idWYsIHNyYy0+c3RyaWRlcywgc3JjLT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgIG1lbSk7CisKKyAgICBQeU1lbV9YRnJlZShtZW0pOworICAgIHJldHVybiAwOworfQorCisKKy8qIFVucGFjayBzaW5nbGUgZWxlbWVudCAqLworc3RhdGljIFB5T2JqZWN0ICoKK3VucGFja19zaW5nbGUoY2hhciAqcHRyLCBjb25zdCBjaGFyICpmbXQsIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlPYmplY3QgKngsICp1bnBhY2tfZnJvbSwgKm12aWV3OworCisgICAgaWYgKGZtdCA9PSBOVUxMKSB7CisgICAgICAgIGZtdCA9ICJCIjsKKyAgICAgICAgaXRlbXNpemUgPSAxOworICAgIH0KKworICAgIHVucGFja19mcm9tID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3Rtb2R1bGUsICJ1bnBhY2tfZnJvbSIpOworICAgIGlmICh1bnBhY2tfZnJvbSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG12aWV3ID0gUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkocHRyLCBpdGVtc2l6ZSwgUHlCVUZfUkVBRCk7CisgICAgaWYgKG12aWV3ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHVucGFja19mcm9tKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgeCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbih1bnBhY2tfZnJvbSwgInNPIiwgZm10LCBtdmlldyk7CisgICAgUHlfREVDUkVGKHVucGFja19mcm9tKTsKKyAgICBQeV9ERUNSRUYobXZpZXcpOworICAgIGlmICh4ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoeCkgPT0gMSkgeworICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlUdXBsZV9HRVRfSVRFTSh4LCAwKTsKKyAgICAgICAgUHlfSU5DUkVGKHRtcCk7CisgICAgICAgIFB5X0RFQ1JFRih4KTsKKyAgICAgICAgcmV0dXJuIHRtcDsKKyAgICB9CisKKyAgICByZXR1cm4geDsKK30KKworLyogVW5wYWNrIGEgbXVsdGktZGltZW5zaW9uYWwgbWF0cml4IGludG8gYSBuZXN0ZWQgbGlzdC4gUmV0dXJuIGEgc2NhbGFyCisgICBmb3IgbmRpbSA9IDAuICovCitzdGF0aWMgUHlPYmplY3QgKgordW5wYWNrX3JlYyhQeU9iamVjdCAqdW5wYWNrX2Zyb20sIGNoYXIgKnB0ciwgUHlPYmplY3QgKm12aWV3LCBjaGFyICppdGVtLAorICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwgY29uc3QgUHlfc3NpemVfdCAqc3RyaWRlcywKKyAgICAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqc3Vib2Zmc2V0cywgUHlfc3NpemVfdCBuZGltLCBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICpsc3QsICp4OworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChuZGltID49IDApOworICAgIGFzc2VydChzaGFwZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3RyaWRlcyAhPSBOVUxMKTsKKworICAgIGlmIChuZGltID09IDApIHsKKyAgICAgICAgbWVtY3B5KGl0ZW0sIHB0ciwgaXRlbXNpemUpOworICAgICAgICB4ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyh1bnBhY2tfZnJvbSwgbXZpZXcsIE5VTEwpOworICAgICAgICBpZiAoeCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKHgpID09IDEpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHgsIDApOworICAgICAgICAgICAgUHlfSU5DUkVGKHRtcCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgICAgICByZXR1cm4gdG1wOworICAgICAgICB9CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIGxzdCA9IFB5TGlzdF9OZXcoc2hhcGVbMF0pOworICAgIGlmIChsc3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IHB0cis9c3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgIGNoYXIgKm5leHRwdHIgPSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cyk7CisKKyAgICAgICAgeCA9IHVucGFja19yZWModW5wYWNrX2Zyb20sIG5leHRwdHIsIG12aWV3LCBpdGVtLAorICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSsxLCBzdHJpZGVzKzEsIHN1Ym9mZnNldHMgPyBzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICBuZGltLTEsIGl0ZW1zaXplKTsKKyAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShsc3QsIGksIHgpOworICAgIH0KKworICAgIHJldHVybiBsc3Q7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfYXNfbGlzdChOREFycmF5T2JqZWN0ICpuZCkKK3sKKyAgICBQeU9iamVjdCAqc3RydWN0b2JqID0gTlVMTCwgKnVucGFja19mcm9tID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbHN0ID0gTlVMTCwgKm12aWV3ID0gTlVMTDsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmQtPmhlYWQtPmJhc2U7CisgICAgUHlfc3NpemVfdCAqc2hhcGUgPSBiYXNlLT5zaGFwZTsKKyAgICBQeV9zc2l6ZV90ICpzdHJpZGVzID0gYmFzZS0+c3RyaWRlczsKKyAgICBQeV9zc2l6ZV90IHNpbXBsZV9zaGFwZVsxXTsKKyAgICBQeV9zc2l6ZV90IHNpbXBsZV9zdHJpZGVzWzFdOworICAgIGNoYXIgKml0ZW0gPSBOVUxMOworICAgIFB5T2JqZWN0ICpmb3JtYXQ7CisgICAgY2hhciAqZm10ID0gYmFzZS0+Zm9ybWF0OworCisgICAgYmFzZSA9ICZuZC0+aGVhZC0+YmFzZTsKKworICAgIGlmIChmbXQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5OiB0b2xpc3QoKSBkb2VzIG5vdCBzdXBwb3J0IGZvcm1hdD1OVUxMLCB1c2UgIgorICAgICAgICAgICAgInRvYnl0ZXMoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHNoYXBlID09IE5VTEwpIHsKKyAgICAgICAgYXNzZXJ0KE5EX0NfQ09OVElHVU9VUyhuZC0+aGVhZC0+ZmxhZ3MpKTsKKyAgICAgICAgYXNzZXJ0KGJhc2UtPnN0cmlkZXMgPT0gTlVMTCk7CisgICAgICAgIGFzc2VydChiYXNlLT5uZGltIDw9IDEpOworICAgICAgICBzaGFwZSA9IHNpbXBsZV9zaGFwZTsKKyAgICAgICAgc2hhcGVbMF0gPSBiYXNlLT5sZW47CisgICAgICAgIHN0cmlkZXMgPSBzaW1wbGVfc3RyaWRlczsKKyAgICAgICAgc3RyaWRlc1swXSA9IGJhc2UtPml0ZW1zaXplOworICAgIH0KKyAgICBlbHNlIGlmIChzdHJpZGVzID09IE5VTEwpIHsKKyAgICAgICAgYXNzZXJ0KE5EX0NfQ09OVElHVU9VUyhuZC0+aGVhZC0+ZmxhZ3MpKTsKKyAgICAgICAgc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZC0+aGVhZCwgMCk7CisgICAgICAgIGlmIChzdHJpZGVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3JtYXQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhmbXQpOworICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBzdHJ1Y3RvYmogPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFN0cnVjdCwgZm9ybWF0LCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoZm9ybWF0KTsKKyAgICBpZiAoc3RydWN0b2JqID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgdW5wYWNrX2Zyb20gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG9iaiwgInVucGFja19mcm9tIik7CisgICAgaWYgKHVucGFja19mcm9tID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgaXRlbSA9IFB5TWVtX01hbGxvYyhiYXNlLT5pdGVtc2l6ZSk7CisgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBtdmlldyA9IFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KGl0ZW0sIGJhc2UtPml0ZW1zaXplLCBQeUJVRl9XUklURSk7CisgICAgaWYgKG12aWV3ID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgbHN0ID0gdW5wYWNrX3JlYyh1bnBhY2tfZnJvbSwgYmFzZS0+YnVmLCBtdmlldywgaXRlbSwKKyAgICAgICAgICAgICAgICAgICAgIHNoYXBlLCBzdHJpZGVzLCBiYXNlLT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgYmFzZS0+bmRpbSwgYmFzZS0+aXRlbXNpemUpOworCitvdXQ6CisgICAgUHlfWERFQ1JFRihtdmlldyk7CisgICAgUHlNZW1fWEZyZWUoaXRlbSk7CisgICAgUHlfWERFQ1JFRih1bnBhY2tfZnJvbSk7CisgICAgUHlfWERFQ1JFRihzdHJ1Y3RvYmopOworICAgIGlmIChzdHJpZGVzICE9IGJhc2UtPnN0cmlkZXMgJiYgc3RyaWRlcyAhPSBzaW1wbGVfc3RyaWRlcykKKyAgICAgICAgUHlNZW1fWEZyZWUoc3RyaWRlcyk7CisKKyAgICByZXR1cm4gbHN0OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZSBuZGJ1ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAgIFN0YXRlIG9mIGEgbmV3IG5kYnVmIGR1cmluZyBpbml0aWFsaXphdGlvbi4gJ09LJyBtZWFucyB0aGF0IGluaXRpYWxpemF0aW9uCisgICBpcyBjb21wbGV0ZS4gJ1BUUicgbWVhbnMgdGhhdCBhIHBvaW50ZXIgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIGJ1dCB0aGUKKyAgIHN0YXRlIG9mIHRoZSBtZW1vcnkgaXMgc3RpbGwgdW5kZWZpbmVkIGFuZCBuZGJ1Zi0+b2Zmc2V0IGlzIGRpc3JlZ2FyZGVkLgorCisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgICAgICAgICAgICAgICAgIHwgbmRidWZfbmV3IHwgaW5pdF9zaW1wbGUgfCBpbml0X3N0cnVjdHVyZSB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgbmV4dCAgICAgICAgICAgIHwgT0sgKE5VTEwpIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgcHJldiAgICAgICAgICAgIHwgT0sgKE5VTEwpIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgbGVuICAgICAgICAgICAgIHwgICAgT0sgICAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgb2Zmc2V0ICAgICAgICAgIHwgICAgT0sgICAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgZGF0YSAgICAgICAgICAgIHwgICAgUFRSICAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgZmxhZ3MgICAgICAgICAgIHwgICAgdXNlciAgIHwgICAgdXNlciAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgZXhwb3J0cyAgICAgICAgIHwgICBPSyAoMCkgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5vYmogICAgICAgIHwgT0sgKE5VTEwpIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5idWYgICAgICAgIHwgICAgUFRSICAgIHwgICAgIFBUUiAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5sZW4gICAgICAgIHwgbGVuKGRhdGEpIHwgIGxlbihkYXRhKSAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5pdGVtc2l6ZSAgIHwgICAgIDEgICAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5yZWFkb25seSAgIHwgICAgIDAgICAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5mb3JtYXQgICAgIHwgICAgTlVMTCAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8ICAKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLm5kaW0gICAgICAgfCAgICAgMSAgICAgfCAgICAgIDEgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLnNoYXBlICAgICAgfCAgICBOVUxMICAgfCAgICBOVUxMICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLnN0cmlkZXMgICAgfCAgICBOVUxMICAgfCAgICBOVUxMICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLnN1Ym9mZnNldHMgfCAgICBOVUxMICAgfCAgICBOVUxMICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLmludGVybmFsICAgfCAgICBPSyAgICAgfCAgICBPSyAgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKworKi8KKworc3RhdGljIFB5X3NzaXplX3QKK2dldF9pdGVtc2l6ZShQeU9iamVjdCAqZm9ybWF0KQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgUHlfc3NpemVfdCBpdGVtc2l6ZTsKKworICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoY2FsY3NpemUsIGZvcm1hdCwgTlVMTCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaXRlbXNpemUgPSBQeUxvbmdfQXNTc2l6ZV90KHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisKKyAgICByZXR1cm4gaXRlbXNpemU7Cit9CisKK3N0YXRpYyBjaGFyICoKK2dldF9mb3JtYXQoUHlPYmplY3QgKmZvcm1hdCkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIGNoYXIgKmZtdDsKKworICAgIHRtcCA9IFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKGZvcm1hdCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmbXQgPSBQeU1lbV9NYWxsb2MoUHlCeXRlc19HRVRfU0laRSh0bXApKzEpOworICAgIGlmIChmbXQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHN0cmNweShmbXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHRtcCkpOworICAgIFB5X0RFQ1JFRih0bXApOworCisgICAgcmV0dXJuIGZtdDsKK30KKworc3RhdGljIGludAoraW5pdF9zaW1wbGUobmRidWZfdCAqbmRidWYsIFB5T2JqZWN0ICppdGVtcywgUHlPYmplY3QgKmZvcm1hdCwKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlPYmplY3QgKm12aWV3OworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBpbnQgcmV0OworCisgICAgbXZpZXcgPSBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcihiYXNlKTsKKyAgICBpZiAobXZpZXcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0ID0gcGFja19mcm9tX2xpc3QobXZpZXcsIGl0ZW1zLCBmb3JtYXQsIGl0ZW1zaXplKTsKKyAgICBQeV9ERUNSRUYobXZpZXcpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBiYXNlLT5yZWFkb25seSA9ICEobmRidWYtPmZsYWdzICYgTkRfV1JJVEFCTEUpOworICAgIGJhc2UtPml0ZW1zaXplID0gaXRlbXNpemU7CisgICAgYmFzZS0+Zm9ybWF0ID0gZ2V0X2Zvcm1hdChmb3JtYXQpOworICAgIGlmIChiYXNlLT5mb3JtYXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90ICoKK3NlcV9hc19zc2l6ZV9hcnJheShQeU9iamVjdCAqc2VxLCBQeV9zc2l6ZV90IGxlbiwgaW50IGlzX3NoYXBlKQoreworICAgIFB5X3NzaXplX3QgKmRlc3Q7CisgICAgUHlfc3NpemVfdCB4LCBpOworCisgICAgZGVzdCA9IFB5TWVtX01hbGxvYyhsZW4gKiAoc2l6ZW9mICpkZXN0KSk7CisgICAgaWYgKGRlc3QgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzZXEsIGkpOworICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh0bXApKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZWxlbWVudHMgb2YgJXMgbXVzdCBiZSBpbnRlZ2VycyIsCisgICAgICAgICAgICAgICAgaXNfc2hhcGUgPyAic2hhcGUiIDogInN0cmlkZXMiKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChpc19zaGFwZSAmJiB4IDwgMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImVsZW1lbnRzIG9mIHNoYXBlIG11c3QgYmUgaW50ZWdlcnMgPj0gMCIpOworICAgICAgICAgICAgUHlNZW1fRnJlZShkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGRlc3RbaV0gPSB4OworICAgIH0KKworICAgIHJldHVybiBkZXN0OworfQorCitzdGF0aWMgUHlfc3NpemVfdCAqCitzdHJpZGVzX2Zyb21fc2hhcGUoY29uc3QgbmRidWZfdCAqbmRidWYsIGludCBmbGFncykKK3sKKyAgICBjb25zdCBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisgICAgUHlfc3NpemVfdCAqcywgaTsKKworICAgIHMgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKnMpKTsKKyAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmbGFncyAmIE5EX0ZPUlRSQU4pIHsKKyAgICAgICAgc1swXSA9IGJhc2UtPml0ZW1zaXplOworICAgICAgICBmb3IgKGkgPSAxOyBpIDwgYmFzZS0+bmRpbTsgaSsrKQorICAgICAgICAgICAgc1tpXSA9IHNbaS0xXSAqIGJhc2UtPnNoYXBlW2ktMV07CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzW2Jhc2UtPm5kaW0tMV0gPSBiYXNlLT5pdGVtc2l6ZTsKKyAgICAgICAgZm9yIChpID0gYmFzZS0+bmRpbS0yOyBpID49IDA7IGktLSkKKyAgICAgICAgICAgIHNbaV0gPSBzW2krMV0gKiBiYXNlLT5zaGFwZVtpKzFdOworICAgIH0KKworICAgIHJldHVybiBzOworfQorCisvKiBCb3VuZHMgY2hlY2s6CisKKyAgICAgbGVuIDo9IGNvbXBsZXRlIGxlbmd0aCBvZiBhbGxvY2F0ZWQgbWVtb3J5CisgICAgIG9mZnNldCA6PSBzdGFydCBvZiB0aGUgYXJyYXkKKworICAgICBBIHNpbmdsZSBhcnJheSBlbGVtZW50IGlzIGluZGV4ZWQgYnk6CisKKyAgICAgICBpID0gaW5kaWNlc1swXSAqIHN0cmlkZXNbMF0gKyBpbmRpY2VzWzFdICogc3RyaWRlc1sxXSArIC4uLgorCisgICAgIGltaW4gaXMgcmVhY2hlZCB3aGVuIGFsbCBpbmRpY2VzW25dIGNvbWJpbmVkIHdpdGggcG9zaXRpdmUgc3RyaWRlcyBhcmUgMAorICAgICBhbmQgYWxsIGluZGljZXMgY29tYmluZWQgd2l0aCBuZWdhdGl2ZSBzdHJpZGVzIGFyZSBzaGFwZVtuXS0xLCB3aGljaCBpcworICAgICB0aGUgbWF4aW11bSBpbmRleCBmb3IgdGhlIG50aCBkaW1lbnNpb24uCisKKyAgICAgaW1heCBpcyByZWFjaGVkIHdoZW4gYWxsIGluZGljZXNbbl0gY29tYmluZWQgd2l0aCBuZWdhdGl2ZSBzdHJpZGVzIGFyZSAwCisgICAgIGFuZCBhbGwgaW5kaWNlcyBjb21iaW5lZCB3aXRoIHBvc2l0aXZlIHN0cmlkZXMgYXJlIHNoYXBlW25dLTEuCisqLworc3RhdGljIGludAordmVyaWZ5X3N0cnVjdHVyZShQeV9zc2l6ZV90IGxlbiwgUHlfc3NpemVfdCBpdGVtc2l6ZSwgUHlfc3NpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLCBjb25zdCBQeV9zc2l6ZV90ICpzdHJpZGVzLAorICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5kaW0pCit7CisgICAgUHlfc3NpemVfdCBpbWluLCBpbWF4OworICAgIFB5X3NzaXplX3QgbjsKKworICAgIGFzc2VydChuZGltID49IDApOworCisgICAgaWYgKG5kaW0gPT0gMCAmJiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQraXRlbXNpemUgPiBsZW4pKQorICAgICAgICBnb3RvIGludmFsaWRfY29tYmluYXRpb247CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgbmRpbTsgbisrKQorICAgICAgICBpZiAoc3RyaWRlc1tuXSAlIGl0ZW1zaXplKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJzdHJpZGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiBpdGVtc2l6ZSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgbmRpbTsgbisrKQorICAgICAgICBpZiAoc2hhcGVbbl0gPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgaW1pbiA9IGltYXggPSAwOworICAgIGZvciAobiA9IDA7IG4gPCBuZGltOyBuKyspCisgICAgICAgIGlmIChzdHJpZGVzW25dIDw9IDApCisgICAgICAgICAgICBpbWluICs9IChzaGFwZVtuXS0xKSAqIHN0cmlkZXNbbl07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGltYXggKz0gKHNoYXBlW25dLTEpICogc3RyaWRlc1tuXTsKKworICAgIGlmIChpbWluICsgb2Zmc2V0IDwgMCB8fCBpbWF4ICsgb2Zmc2V0ICsgaXRlbXNpemUgPiBsZW4pCisgICAgICAgIGdvdG8gaW52YWxpZF9jb21iaW5hdGlvbjsKKworICAgIHJldHVybiAwOworCisKK2ludmFsaWRfY29tYmluYXRpb246CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICJpbnZhbGlkIGNvbWJpbmF0aW9uIG9mIGJ1ZmZlciwgc2hhcGUgYW5kIHN0cmlkZXMiKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qCisgICBDb252ZXJ0IGEgTnVtUHktc3R5bGUgYXJyYXkgdG8gYW4gYXJyYXkgdXNpbmcgc3Vib2Zmc2V0cyB0byBzdHJpZGUgaW4KKyAgIHRoZSBmaXJzdCBkaW1lbnNpb24uIFJlcXVpcmVtZW50czogbmRpbSA+IDAuCisKKyAgIENvbnRpZ3VvdXMgZXhhbXBsZQorICAgPT09PT09PT09PT09PT09PT09CisKKyAgICAgSW5wdXQ6CisgICAgIC0tLS0tLQorICAgICAgIHNoYXBlICAgICAgPSB7MiwgMiwgM307CisgICAgICAgc3RyaWRlcyAgICA9IHs2LCAzLCAxfTsKKyAgICAgICBzdWJvZmZzZXRzID0gTlVMTDsKKyAgICAgICBkYXRhICAgICAgID0gezAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMX07CisgICAgICAgYnVmICAgICAgICA9ICZkYXRhWzBdCisKKyAgICAgT3V0cHV0OgorICAgICAtLS0tLS0tCisgICAgICAgc2hhcGUgICAgICA9IHsyLCAyLCAzfTsKKyAgICAgICBzdHJpZGVzICAgID0ge3NpemVvZihjaGFyICopLCAzLCAxfTsKKyAgICAgICBzdWJvZmZzZXRzID0gezAsIC0xLCAtMX07CisgICAgICAgZGF0YSAgICAgICA9IHtwMSwgcDIsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMX07CisgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgIF4gICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgIGAtLS0nLS0tJyAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgYC0tLS0tLS0tLS0tLS0tLS0tLS0tLScKKyAgICAgICBidWYgICAgICAgID0gJmRhdGFbMF0KKworICAgICBTbywgaW4gdGhlIGV4YW1wbGUgdGhlIGlucHV0IHJlc2VtYmxlcyB0aGUgdGhyZWUtZGltZW5zaW9uYWwgYXJyYXkKKyAgICAgY2hhciB2WzJdWzJdWzNdLCB3aGlsZSB0aGUgb3V0cHV0IHJlc2VtYmxlcyBhbiBhcnJheSBvZiB0d28gcG9pbnRlcnMKKyAgICAgdG8gdHdvLWRpbWVuc2lvbmFsIGFycmF5czogY2hhciAoKnZbMl0pWzJdWzNdLgorCisKKyAgIE5vbi1jb250aWd1b3VzIGV4YW1wbGU6CisgICA9PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgIElucHV0ICh3aXRoIG9mZnNldCBhbmQgbmVnYXRpdmUgc3RyaWRlcyk6CisgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgc2hhcGUgICAgICA9IHsyLCAyLCAzfTsKKyAgICAgICBzdHJpZGVzICAgID0gey02LCAzLCAtMX07CisgICAgICAgb2Zmc2V0ICAgICA9IDgKKyAgICAgICBzdWJvZmZzZXRzID0gTlVMTDsKKyAgICAgICBkYXRhICAgICAgID0gezAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMX07CisKKyAgICAgT3V0cHV0OgorICAgICAtLS0tLS0tCisgICAgICAgc2hhcGUgICAgICA9IHsyLCAyLCAzfTsKKyAgICAgICBzdHJpZGVzICAgID0gey1zaXplb2YoY2hhciAqKSwgMywgLTF9OworICAgICAgIHN1Ym9mZnNldHMgPSB7MiwgLTEsIC0xfTsKKyAgICAgICBuZXdkYXRhICAgID0ge3AxLCBwMiwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExfTsKKyAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgXiAgICAgXiAgICAgICAgICAgXiAgICAgXgorICAgICAgICAgICAgICAgICAgICAgYC0tLSctLS0nICAgICB8ICAgICAgICAgICB8ICAgICBgLSBwMitzdWJvZmZzZXRzWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIGAtLS0tLS0tLS0tLXwtLS0gcDErc3Vib2Zmc2V0c1swXQorICAgICAgICAgICAgICAgICAgICAgICAgIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0nCisgICAgICAgYnVmICAgICAgICA9ICZuZXdkYXRhWzFdICAjIHN0cmlkaW5nIGJhY2t3YXJkcyBvdmVyIHRoZSBwb2ludGVycy4KKworICAgICBzdWJvZmZzZXRzWzBdIGlzIHRoZSBzYW1lIGFzIHRoZSBvZmZzZXQgdGhhdCBvbmUgd291bGQgc3BlY2lmeSBpZgorICAgICB0aGUgdHdvIHsyLCAzfSBzdWJhcnJheXMgd2VyZSBjcmVhdGVkIGRpcmVjdGx5LCBoZW5jZSB0aGUgbmFtZS4KKyovCitzdGF0aWMgaW50Citpbml0X3N1Ym9mZnNldHMobmRidWZfdCAqbmRidWYpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0ZXA7CisgICAgUHlfc3NpemVfdCBpbWluLCBzdWJvZmZzZXQwOworICAgIFB5X3NzaXplX3QgYWRkc2l6ZTsKKyAgICBQeV9zc2l6ZV90IG47CisgICAgY2hhciAqZGF0YTsKKworICAgIGFzc2VydChiYXNlLT5uZGltID4gMCk7CisgICAgYXNzZXJ0KGJhc2UtPnN1Ym9mZnNldHMgPT0gTlVMTCk7CisKKyAgICAvKiBBbGxvY2F0ZSBuZXcgZGF0YSB3aXRoIGFkZGl0aW9uYWwgc3BhY2UgZm9yIHNoYXBlWzBdIHBvaW50ZXJzLiAqLworICAgIGFkZHNpemUgPSBiYXNlLT5zaGFwZVswXSAqIChzaXplb2YgKGNoYXIgKikpOworCisgICAgLyogQWxpZ24gYXJyYXkgc3RhcnQgdG8gYSBtdWx0aXBsZSBvZiA4LiAqLworICAgIGFkZHNpemUgPSA4ICogKChhZGRzaXplICsgNykgLyA4KTsKKworICAgIGRhdGEgPSBQeU1lbV9NYWxsb2MobmRidWYtPmxlbiArIGFkZHNpemUpOworICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG1lbWNweShkYXRhICsgYWRkc2l6ZSwgbmRidWYtPmRhdGEsIG5kYnVmLT5sZW4pOworCisgICAgUHlNZW1fRnJlZShuZGJ1Zi0+ZGF0YSk7CisgICAgbmRidWYtPmRhdGEgPSBkYXRhOworICAgIG5kYnVmLT5sZW4gKz0gYWRkc2l6ZTsKKyAgICBiYXNlLT5idWYgPSBuZGJ1Zi0+ZGF0YTsKKworICAgIC8qIGltaW46IG1pbmltdW0gaW5kZXggb2YgdGhlIGlucHV0IGFycmF5IHJlbGF0aXZlIHRvIG5kYnVmLT5vZmZzZXQuCisgICAgICAgc3Vib2Zmc2V0MDogb2Zmc2V0IGZvciBlYWNoIHN1Yi1hcnJheSBvZiB0aGUgb3V0cHV0LiBUaGlzIGlzIHRoZQorICAgICAgICAgICAgICAgICAgIHNhbWUgYXMgY2FsY3VsYXRpbmcgLWltaW4nIGZvciBhIHN1Yi1hcnJheSBvZiBuZGltLTEuICovCisgICAgaW1pbiA9IHN1Ym9mZnNldDAgPSAwOworICAgIGZvciAobiA9IDA7IG4gPCBiYXNlLT5uZGltOyBuKyspIHsKKyAgICAgICAgaWYgKGJhc2UtPnNoYXBlW25dID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGJhc2UtPnN0cmlkZXNbbl0gPD0gMCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCB4ID0gKGJhc2UtPnNoYXBlW25dLTEpICogYmFzZS0+c3RyaWRlc1tuXTsKKyAgICAgICAgICAgIGltaW4gKz0geDsKKyAgICAgICAgICAgIHN1Ym9mZnNldDAgKz0gKG4gPj0gMSkgPyAteCA6IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBJbml0aWFsaXplIHRoZSBhcnJheSBvZiBwb2ludGVycyB0byB0aGUgc3ViLWFycmF5cy4gKi8KKyAgICBzdGFydCA9IGFkZHNpemUgKyBuZGJ1Zi0+b2Zmc2V0ICsgaW1pbjsKKyAgICBzdGVwID0gYmFzZS0+c3RyaWRlc1swXSA8IDAgPyAtYmFzZS0+c3RyaWRlc1swXSA6IGJhc2UtPnN0cmlkZXNbMF07CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgYmFzZS0+c2hhcGVbMF07IG4rKykKKyAgICAgICAgKChjaGFyICoqKWJhc2UtPmJ1Zilbbl0gPSAoY2hhciAqKWJhc2UtPmJ1ZiArIHN0YXJ0ICsgbipzdGVwOworCisgICAgLyogSW5pdGlhbGl6ZSBzdWJvZmZzZXRzLiAqLworICAgIGJhc2UtPnN1Ym9mZnNldHMgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKmJhc2UtPnN1Ym9mZnNldHMpKTsKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYmFzZS0+c3Vib2Zmc2V0c1swXSA9IHN1Ym9mZnNldDA7CisgICAgZm9yIChuID0gMTsgbiA8IGJhc2UtPm5kaW07IG4rKykKKyAgICAgICAgYmFzZS0+c3Vib2Zmc2V0c1tuXSA9IC0xOworCisgICAgLyogQWRqdXN0IHN0cmlkZXMgZm9yIHRoZSBmaXJzdCAoemVyb3RoKSBkaW1lbnNpb24uICovCisgICAgaWYgKGJhc2UtPnN0cmlkZXNbMF0gPj0gMCkgeworICAgICAgICBiYXNlLT5zdHJpZGVzWzBdID0gc2l6ZW9mKGNoYXIgKik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBTdHJpZGluZyBiYWNrd2FyZHMuICovCisgICAgICAgIGJhc2UtPnN0cmlkZXNbMF0gPSAtKFB5X3NzaXplX3Qpc2l6ZW9mKGNoYXIgKik7CisgICAgICAgIGlmIChiYXNlLT5zaGFwZVswXSA+IDApCisgICAgICAgICAgICBiYXNlLT5idWYgPSAoY2hhciAqKWJhc2UtPmJ1ZiArIChiYXNlLT5zaGFwZVswXS0xKSAqIHNpemVvZihjaGFyICopOworICAgIH0KKworICAgIG5kYnVmLT5mbGFncyAmPSB+KE5EX0N8TkRfRk9SVFJBTik7CisgICAgbmRidWYtPm9mZnNldCA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0X2xlbihQeV9idWZmZXIgKmJhc2UpCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYmFzZS0+bGVuID0gMTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYmFzZS0+bmRpbTsgaSsrKQorICAgICAgICBiYXNlLT5sZW4gKj0gYmFzZS0+c2hhcGVbaV07CisgICAgYmFzZS0+bGVuICo9IGJhc2UtPml0ZW1zaXplOworfQorCitzdGF0aWMgaW50Citpbml0X3N0cnVjdHVyZShuZGJ1Zl90ICpuZGJ1ZiwgUHlPYmplY3QgKnNoYXBlLCBQeU9iamVjdCAqc3RyaWRlcywKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmRpbSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisKKyAgICBiYXNlLT5uZGltID0gKGludCluZGltOworICAgIGlmIChuZGltID09IDApIHsKKyAgICAgICAgaWYgKG5kYnVmLT5mbGFncyAmIE5EX1BJTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAibmRpbSA9IDAgY2Fubm90IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBORF9QSUwiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gKE5EX1NDQUxBUnxORF9DfE5EX0ZPUlRSQU4pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBzaGFwZSAqLworICAgIGJhc2UtPnNoYXBlID0gc2VxX2FzX3NzaXplX2FycmF5KHNoYXBlLCBuZGltLCAxKTsKKyAgICBpZiAoYmFzZS0+c2hhcGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogc3RyaWRlcyAqLworICAgIGlmIChzdHJpZGVzKSB7CisgICAgICAgIGJhc2UtPnN0cmlkZXMgPSBzZXFfYXNfc3NpemVfYXJyYXkoc3RyaWRlcywgbmRpbSwgMCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBiYXNlLT5zdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kYnVmLCBuZGJ1Zi0+ZmxhZ3MpOworICAgIH0KKyAgICBpZiAoYmFzZS0+c3RyaWRlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHZlcmlmeV9zdHJ1Y3R1cmUoYmFzZS0+bGVuLCBiYXNlLT5pdGVtc2l6ZSwgbmRidWYtPm9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLT5zaGFwZSwgYmFzZS0+c3RyaWRlcywgbmRpbSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBidWYgKi8KKyAgICBiYXNlLT5idWYgPSBuZGJ1Zi0+ZGF0YSArIG5kYnVmLT5vZmZzZXQ7CisKKyAgICAvKiBsZW4gKi8KKyAgICBpbml0X2xlbihiYXNlKTsKKworICAgIC8qIG5kYnVmLT5mbGFncyAqLworICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoYmFzZSwgJ0MnKSkKKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IE5EX0M7CisgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyhiYXNlLCAnRicpKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfRk9SVFJBTjsKKworCisgICAgLyogY29udmVydCBudW1weSBhcnJheSB0byBzdWJvZmZzZXQgcmVwcmVzZW50YXRpb24gKi8KKyAgICBpZiAobmRidWYtPmZsYWdzICYgTkRfUElMKSB7CisgICAgICAgIC8qIG1vZGlmaWVzIGJhc2UtPmJ1ZiwgYmFzZS0+c3RyaWRlcyBhbmQgYmFzZS0+c3Vib2Zmc2V0cyAqKi8KKyAgICAgICAgcmV0dXJuIGluaXRfc3Vib2Zmc2V0cyhuZGJ1Zik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBuZGJ1Zl90ICoKK2luaXRfbmRidWYoUHlPYmplY3QgKml0ZW1zLCBQeU9iamVjdCAqc2hhcGUsIFB5T2JqZWN0ICpzdHJpZGVzLAorICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCwgUHlPYmplY3QgKmZvcm1hdCwgaW50IGZsYWdzKQoreworICAgIG5kYnVmX3QgKm5kYnVmOworICAgIFB5X3NzaXplX3QgbmRpbTsKKyAgICBQeV9zc2l6ZV90IG5pdGVtczsKKyAgICBQeV9zc2l6ZV90IGl0ZW1zaXplOworCisgICAgLyogbmRpbSA9IGxlbihzaGFwZSkgKi8KKyAgICBDSEVDS19MSVNUX09SX1RVUExFKHNoYXBlKQorICAgIG5kaW0gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc2hhcGUpOworICAgIGlmIChuZGltID4gTkRfTUFYX05ESU0pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibmRpbSBtdXN0IG5vdCBleGNlZWQgJWQiLCBORF9NQVhfTkRJTSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGxlbihzdHJpZGVzKSA9IGxlbihzaGFwZSkgKi8KKyAgICBpZiAoc3RyaWRlcykgeworICAgICAgICBDSEVDS19MSVNUX09SX1RVUExFKHN0cmlkZXMpCisgICAgICAgIGlmIChQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc3RyaWRlcykgPT0gMCkKKyAgICAgICAgICAgIHN0cmlkZXMgPSBOVUxMOworICAgICAgICBlbHNlIGlmIChmbGFncyAmIE5EX0ZPUlRSQU4pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIk5EX0ZPUlRSQU4gY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBzdHJpZGVzIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc3RyaWRlcykgIT0gbmRpbSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImxlbihzaGFwZSkgIT0gbGVuKHN0cmlkZXMpIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIGl0ZW1zaXplICovCisgICAgaXRlbXNpemUgPSBnZXRfaXRlbXNpemUoZm9ybWF0KTsKKyAgICBpZiAoaXRlbXNpemUgPD0gMCkgeworICAgICAgICBpZiAoaXRlbXNpemUgPT0gMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIml0ZW1zaXplIG11c3Qgbm90IGJlIHplcm8iKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBjb252ZXJ0IHNjYWxhciB0byBsaXN0ICovCisgICAgaWYgKG5kaW0gPT0gMCkgeworICAgICAgICBpdGVtcyA9IFB5X0J1aWxkVmFsdWUoIihPKSIsIGl0ZW1zKTsKKyAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIENIRUNLX0xJU1RfT1JfVFVQTEUoaXRlbXMpCisgICAgICAgIFB5X0lOQ1JFRihpdGVtcyk7CisgICAgfQorCisgICAgLyogbnVtYmVyIG9mIGl0ZW1zICovCisgICAgbml0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGl0ZW1zKTsKKyAgICBpZiAobml0ZW1zID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiaW5pdGlhbGl6ZXIgbGlzdCBvciB0dXBsZSBtdXN0IG5vdCBiZSBlbXB0eSIpOworICAgICAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuZGJ1ZiA9IG5kYnVmX25ldyhuaXRlbXMsIGl0ZW1zaXplLCBvZmZzZXQsIGZsYWdzKTsKKyAgICBpZiAobmRidWYgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKworICAgIGlmIChpbml0X3NpbXBsZShuZGJ1ZiwgaXRlbXMsIGZvcm1hdCwgaXRlbXNpemUpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoaW5pdF9zdHJ1Y3R1cmUobmRidWYsIHNoYXBlLCBzdHJpZGVzLCBuZGltKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgIHJldHVybiBuZGJ1ZjsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICBuZGJ1Zl9mcmVlKG5kYnVmKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogaW5pdGlhbGl6ZSBhbmQgcHVzaCBhIG5ldyBiYXNlIG9udG8gdGhlIGxpbmtlZCBsaXN0ICovCitzdGF0aWMgaW50CituZGFycmF5X3B1c2hfYmFzZShOREFycmF5T2JqZWN0ICpuZCwgUHlPYmplY3QgKml0ZW1zLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNoYXBlLCBQeU9iamVjdCAqc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0LCBQeU9iamVjdCAqZm9ybWF0LCBpbnQgZmxhZ3MpCit7CisgICAgbmRidWZfdCAqbmRidWY7CisKKyAgICBuZGJ1ZiA9IGluaXRfbmRidWYoaXRlbXMsIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQsIGZvcm1hdCwgZmxhZ3MpOworICAgIGlmIChuZGJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuZGJ1Zl9wdXNoKG5kLCBuZGJ1Zik7CisgICAgcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgUHlCVUZfVU5VU0VEIDB4MTAwMDAKK3N0YXRpYyBpbnQKK25kYXJyYXlfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsKKyAgICAgICAgIm9iaiIsICJzaGFwZSIsICJzdHJpZGVzIiwgIm9mZnNldCIsICJmb3JtYXQiLCAiZmxhZ3MiLCAiZ2V0YnVmIiwgTlVMTAorICAgIH07CisgICAgUHlPYmplY3QgKnYgPSBOVUxMOyAgLyogaW5pdGlhbGl6ZXI6IHNjYWxhciwgbGlzdCwgdHVwbGUgb3IgYmFzZSBvYmplY3QgKi8KKyAgICBQeU9iamVjdCAqc2hhcGUgPSBOVUxMOyAgIC8qIHNpemUgb2YgZWFjaCBkaW1lbnNpb24gKi8KKyAgICBQeU9iamVjdCAqc3RyaWRlcyA9IE5VTEw7IC8qIG51bWJlciBvZiBieXRlcyB0byB0aGUgbmV4dCBlbHQgaW4gZWFjaCBkaW0gKi8KKyAgICBQeV9zc2l6ZV90IG9mZnNldCA9IDA7ICAgICAgICAgICAgLyogYnVmZmVyIG9mZnNldCAqLworICAgIFB5T2JqZWN0ICpmb3JtYXQgPSBzaW1wbGVfZm9ybWF0OyAvKiBzdHJ1Y3QgbW9kdWxlIHNwZWNpZmllcjogIkIiICovCisgICAgaW50IGZsYWdzID0gTkRfREVGQVVMVDsgICAgICAgICAgIC8qIGJhc2UgYnVmZmVyIGFuZCBuZGFycmF5IGZsYWdzICovCisKKyAgICBpbnQgZ2V0YnVmID0gUHlCVUZfVU5VU0VEOyAvKiByZS1leHBvcnRlcjogZ2V0YnVmZmVyIHJlcXVlc3QgZmxhZ3MgKi8KKworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T09uT2lpIiwga3dsaXN0LAorICAgICAgICAgICAgJnYsICZzaGFwZSwgJnN0cmlkZXMsICZvZmZzZXQsICZmb3JtYXQsICZmbGFncywgJmdldGJ1ZikpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIE5EQXJyYXlPYmplY3QgaXMgcmUtZXhwb3J0ZXIgKi8KKyAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIodikgJiYgc2hhcGUgPT0gTlVMTCkgeworICAgICAgICBpZiAoc3RyaWRlcyB8fCBvZmZzZXQgfHwgZm9ybWF0ICE9IHNpbXBsZV9mb3JtYXQgfHwKKyAgICAgICAgICAgICEoZmxhZ3MgPT0gTkRfREVGQVVMVCB8fCBmbGFncyA9PSBORF9SRURJUkVDVCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAiY29uc3RydWN0aW9uIGZyb20gZXhwb3J0ZXIgb2JqZWN0IG9ubHkgdGFrZXMgJ29iaicsICdnZXRidWYnICIKKyAgICAgICAgICAgICAgICJhbmQgJ2ZsYWdzJyBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGdldGJ1ZiA9IChnZXRidWYgPT0gUHlCVUZfVU5VU0VEKSA/IFB5QlVGX0ZVTExfUk8gOiBnZXRidWY7CisKKyAgICAgICAgaWYgKG5kYXJyYXlfaW5pdF9zdGF0aWNidWYodiwgbmQsIGdldGJ1ZikgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIGluaXRfZmxhZ3MobmQtPmhlYWQpOworICAgICAgICBuZC0+aGVhZC0+ZmxhZ3MgfD0gZmxhZ3M7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogTkRBcnJheU9iamVjdCBpcyB0aGUgb3JpZ2luYWwgYmFzZSBvYmplY3QuICovCisgICAgaWYgKGdldGJ1ZiAhPSBQeUJVRl9VTlVTRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJnZXRidWYgYXJndW1lbnQgb25seSB2YWxpZCBmb3IgY29uc3RydWN0aW9uIGZyb20gZXhwb3J0ZXIgIgorICAgICAgICAgICAgIm9iamVjdCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChzaGFwZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAic2hhcGUgaXMgYSByZXF1aXJlZCBhcmd1bWVudCB3aGVuIGNvbnN0cnVjdGluZyBmcm9tICIKKyAgICAgICAgICAgICJsaXN0LCB0dXBsZSBvciBzY2FsYXIiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChmbGFncyAmIE5EX1ZBUkVYUE9SVCkgeworICAgICAgICBuZC0+ZmxhZ3MgfD0gTkRfVkFSRVhQT1JUOworICAgICAgICBmbGFncyAmPSB+TkRfVkFSRVhQT1JUOworICAgIH0KKworICAgIC8qIEluaXRpYWxpemUgYW5kIHB1c2ggdGhlIGZpcnN0IGJhc2UgYnVmZmVyIG9udG8gdGhlIGxpbmtlZCBsaXN0LiAqLworICAgIHJldHVybiBuZGFycmF5X3B1c2hfYmFzZShuZCwgdiwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCwgZm9ybWF0LCBmbGFncyk7Cit9CisKKy8qIFB1c2ggYW4gYWRkaXRpb25hbCBiYXNlIG9udG8gdGhlIGxpbmtlZCBsaXN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfcHVzaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsKKyAgICAgICAgIml0ZW1zIiwgInNoYXBlIiwgInN0cmlkZXMiLCAib2Zmc2V0IiwgImZvcm1hdCIsICJmbGFncyIsIE5VTEwKKyAgICB9OworICAgIFB5T2JqZWN0ICppdGVtcyA9IE5VTEw7ICAgLyogaW5pdGlhbGl6ZXI6IHNjYWxhciwgbGlzdCBvciB0dXBsZSAqLworICAgIFB5T2JqZWN0ICpzaGFwZSA9IE5VTEw7ICAgLyogc2l6ZSBvZiBlYWNoIGRpbWVuc2lvbiAqLworICAgIFB5T2JqZWN0ICpzdHJpZGVzID0gTlVMTDsgLyogbnVtYmVyIG9mIGJ5dGVzIHRvIHRoZSBuZXh0IGVsdCBpbiBlYWNoIGRpbSAqLworICAgIFB5T2JqZWN0ICpmb3JtYXQgPSBzaW1wbGVfZm9ybWF0OyAgLyogc3RydWN0IG1vZHVsZSBzcGVjaWZpZXI6ICJCIiAqLworICAgIFB5X3NzaXplX3Qgb2Zmc2V0ID0gMDsgICAgICAgICAgICAgLyogYnVmZmVyIG9mZnNldCAqLworICAgIGludCBmbGFncyA9IE5EX0RFRkFVTFQ7ICAgICAgICAgICAgLyogYmFzZSBidWZmZXIgZmxhZ3MgKi8KKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPT3xPbk9pIiwga3dsaXN0LAorICAgICAgICAgICAgJml0ZW1zLCAmc2hhcGUsICZzdHJpZGVzLCAmb2Zmc2V0LCAmZm9ybWF0LCAmZmxhZ3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmbGFncyAmIE5EX1ZBUkVYUE9SVCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJORF9WQVJFWFBPUlQgZmxhZyBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBvYmplY3QgY3JlYXRpb24iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChORF9JU19DT05TVU1FUihuZCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgInN0cnVjdHVyZSBvZiByZS1leHBvcnRpbmcgb2JqZWN0IGlzIGltbXV0YWJsZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCEobmQtPmZsYWdzJk5EX1ZBUkVYUE9SVCkgJiYgbmQtPmhlYWQtPmV4cG9ydHMgPiAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgY2hhbmdlIHN0cnVjdHVyZTogJXpkIGV4cG9ydGVkIGJ1ZmZlciVzIiwKKyAgICAgICAgICAgIG5kLT5oZWFkLT5leHBvcnRzLCBuZC0+aGVhZC0+ZXhwb3J0cz09MSA/ICIiIDogInMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKG5kYXJyYXlfcHVzaF9iYXNlKG5kLCBpdGVtcywgc2hhcGUsIHN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwgZm9ybWF0LCBmbGFncykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLyogUG9wIGEgYmFzZSBmcm9tIHRoZSBsaW5rZWQgbGlzdCAoaWYgcG9zc2libGUpLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfcG9wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgaWYgKE5EX0lTX0NPTlNVTUVSKG5kKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAic3RydWN0dXJlIG9mIHJlLWV4cG9ydGluZyBvYmplY3QgaXMgaW1tdXRhYmxlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobmQtPmhlYWQtPmV4cG9ydHMgPiAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgY2hhbmdlIHN0cnVjdHVyZTogJXpkIGV4cG9ydGVkIGJ1ZmZlciVzIiwKKyAgICAgICAgICAgIG5kLT5oZWFkLT5leHBvcnRzLCBuZC0+aGVhZC0+ZXhwb3J0cz09MSA/ICIiIDogInMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChuZC0+aGVhZC0+bmV4dCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJsaXN0IG9ubHkgaGFzIGEgc2luZ2xlIGJhc2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbmRidWZfcG9wKG5kKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50CituZGFycmF5X2dldGJ1ZihOREFycmF5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZiA9IHNlbGYtPmhlYWQ7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIGludCBiYXNlZmxhZ3MgPSBuZGJ1Zi0+ZmxhZ3M7CisKKyAgICAvKiByZWRpcmVjdCBtb2RlICovCisgICAgaWYgKGJhc2UtPm9iaiAhPSBOVUxMICYmIChiYXNlZmxhZ3MmTkRfUkVESVJFQ1QpKSB7CisgICAgICAgIHJldHVybiBQeU9iamVjdF9HZXRCdWZmZXIoYmFzZS0+b2JqLCB2aWV3LCBmbGFncyk7CisgICAgfQorCisgICAgLyogc3RhcnQgd2l0aCBjb21wbGV0ZSBpbmZvcm1hdGlvbiAqLworICAgICp2aWV3ID0gKmJhc2U7CisgICAgdmlldy0+b2JqID0gTlVMTDsKKworICAgIC8qIHJlY29uc3RydWN0IGZvcm1hdCAqLworICAgIGlmICh2aWV3LT5mb3JtYXQgPT0gTlVMTCkKKyAgICAgICAgdmlldy0+Zm9ybWF0ID0gIkIiOworCisgICAgaWYgKGJhc2UtPm5kaW0gIT0gMCAmJgorICAgICAgICAoKFJFUV9TSEFQRShmbGFncykgJiYgYmFzZS0+c2hhcGUgPT0gTlVMTCkgfHwKKyAgICAgICAgIChSRVFfU1RSSURFUyhmbGFncykgJiYgYmFzZS0+c3RyaWRlcyA9PSBOVUxMKSkpIHsKKyAgICAgICAgLyogVGhlIG5kYXJyYXkgaXMgYSByZS1leHBvcnRlciB0aGF0IGhhcyBiZWVuIGNyZWF0ZWQgd2l0aG91dCBmdWxsCisgICAgICAgICAgIGluZm9ybWF0aW9uIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSB0aGUKKyAgICAgICAgICAgbmRhcnJheSBpcyBub3QgYSBQRVAtMzExOCBjb21wbGlhbnQgYnVmZmVyIHByb3ZpZGVyLiAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAicmUtZXhwb3J0ZXIgZG9lcyBub3QgcHJvdmlkZSBmb3JtYXQsIHNoYXBlIG9yIHN0cmlkZXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChiYXNlZmxhZ3MgJiBORF9HRVRCVUZfRkFJTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiTkRfR0VUQlVGX0ZBSUw6IGZvcmNlZCB0ZXN0IGV4Y2VwdGlvbiIpOworICAgICAgICBpZiAoYmFzZWZsYWdzICYgTkRfR0VUQlVGX1VOREVGSU5FRCkKKyAgICAgICAgICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCAqKTB4MTsgLyogd3JvbmcgYnV0IHBlcm1pdHRlZCBpbiA8PSAzLjIgKi8KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChSRVFfV1JJVEFCTEUoZmxhZ3MpICYmIGJhc2UtPnJlYWRvbmx5KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCB3cml0YWJsZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUkVRX0ZPUk1BVChmbGFncykpIHsKKyAgICAgICAgLyogTlVMTCBpbmRpY2F0ZXMgdGhhdCB0aGUgYnVmZmVyJ3MgZGF0YSB0eXBlIGhhcyBiZWVuIGNhc3QgdG8gJ0InLgorICAgICAgICAgICB2aWV3LT5pdGVtc2l6ZSBpcyB0aGUgX3ByZXZpb3VzXyBpdGVtc2l6ZS4gSWYgc2hhcGUgaXMgcHJlc2VudCwKKyAgICAgICAgICAgdGhlIGVxdWFsaXR5IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPSBsZW4gc3RpbGwgaG9sZHMgYXQgdGhpcworICAgICAgICAgICBwb2ludC4gVGhlIGVxdWFsaXR5IGNhbGNzaXplKGZvcm1hdCkgPSBpdGVtc2l6ZSBkb2VzIF9ub3RfIGhvbGQKKyAgICAgICAgICAgZnJvbSBoZXJlIG9uISAqLworICAgICAgICB2aWV3LT5mb3JtYXQgPSBOVUxMOworICAgIH0KKworICAgIGlmIChSRVFfQ19DT05USUdVT1VTKGZsYWdzKSAmJiAhTkRfQ19DT05USUdVT1VTKGJhc2VmbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm5kYXJyYXkgaXMgbm90IEMtY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChSRVFfRl9DT05USUdVT1VTKGZsYWdzKSAmJiAhTkRfRk9SVFJBTl9DT05USUdVT1VTKGJhc2VmbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm5kYXJyYXkgaXMgbm90IEZvcnRyYW4gY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChSRVFfQU5ZX0NPTlRJR1VPVVMoZmxhZ3MpICYmICFORF9BTllfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCBjb250aWd1b3VzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFSRVFfSU5ESVJFQ1QoZmxhZ3MpICYmIChiYXNlZmxhZ3MgJiBORF9QSUwpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGNhbm5vdCBiZSByZXByZXNlbnRlZCB3aXRob3V0IHN1Ym9mZnNldHMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIVJFUV9TVFJJREVTKGZsYWdzKSkgeworICAgICAgICBpZiAoIU5EX0NfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAgICAgIm5kYXJyYXkgaXMgbm90IEMtY29udGlndW91cyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHZpZXctPnN0cmlkZXMgPSBOVUxMOworICAgIH0KKyAgICBpZiAoIVJFUV9TSEFQRShmbGFncykpIHsKKyAgICAgICAgLyogUHlCVUZfU0lNUExFIG9yIFB5QlVGX1dSSVRBQkxFOiBhdCB0aGlzIHBvaW50IGJ1ZiBpcyBDLWNvbnRpZ3VvdXMsCisgICAgICAgICAgIHNvIGJhc2UtPmJ1ZiA9IG5kYnVmLT5kYXRhLiAqLworICAgICAgICBpZiAodmlldy0+Zm9ybWF0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFB5QlVGX1NJTVBMRXxQeUJVRl9GT1JNQVQgYW5kIFB5QlVGX1dSSVRBQkxFfFB5QlVGX0ZPUk1BVCBkbworICAgICAgICAgICAgICAgbm90IG1ha2Ugc2Vuc2UuICovCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAgICAgIm5kYXJyYXk6IGNhbm5vdCBjYXN0IHRvIHVuc2lnbmVkIGJ5dGVzIGlmIHRoZSBmb3JtYXQgZmxhZyAiCisgICAgICAgICAgICAgICAgImlzIHByZXNlbnQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAvKiBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID0gbGVuIGFuZCBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUKKyAgICAgICAgICAgZG8gX25vdF8gaG9sZCBmcm9tIGhlcmUgb24hICovCisgICAgICAgIHZpZXctPm5kaW0gPSAxOworICAgICAgICB2aWV3LT5zaGFwZSA9IE5VTEw7CisgICAgfQorCisgICAgdmlldy0+b2JqID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICBQeV9JTkNSRUYodmlldy0+b2JqKTsKKyAgICBzZWxmLT5oZWFkLT5leHBvcnRzKys7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbmRhcnJheV9yZWxlYXNlYnVmKE5EQXJyYXlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldykKK3sKKyAgICBpZiAoIU5EX0lTX0NPTlNVTUVSKHNlbGYpKSB7CisgICAgICAgIG5kYnVmX3QgKm5kYnVmID0gdmlldy0+aW50ZXJuYWw7CisgICAgICAgIGlmICgtLW5kYnVmLT5leHBvcnRzID09IDAgJiYgbmRidWYgIT0gc2VsZi0+aGVhZCkKKyAgICAgICAgICAgIG5kYnVmX2RlbGV0ZShzZWxmLCBuZGJ1Zik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeUJ1ZmZlclByb2NzIG5kYXJyYXlfYXNfYnVmZmVyID0geworICAgIChnZXRidWZmZXJwcm9jKW5kYXJyYXlfZ2V0YnVmLCAgICAgICAgLyogYmZfZ2V0YnVmZmVyICovCisgICAgKHJlbGVhc2VidWZmZXJwcm9jKW5kYXJyYXlfcmVsZWFzZWJ1ZiAvKiBiZl9yZWxlYXNlYnVmZmVyICovCit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhpbmcvc2xpY2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGNoYXIgKgorcHRyX2Zyb21faW5kZXgoUHlfYnVmZmVyICpiYXNlLCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIGNoYXIgKnB0cjsKKyAgICBQeV9zc2l6ZV90IG5pdGVtczsgLyogaXRlbXMgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbiAqLworCisgICAgaWYgKGJhc2UtPnNoYXBlKQorICAgICAgICBuaXRlbXMgPSBiYXNlLT5zaGFwZVswXTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGJhc2UtPm5kaW0gPT0gMSAmJiBTSU1QTEVfRk9STUFUKGJhc2UtPmZvcm1hdCkpOworICAgICAgICBuaXRlbXMgPSBiYXNlLT5sZW47CisgICAgfQorCisgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICBpbmRleCArPSBuaXRlbXM7CisgICAgfQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbml0ZW1zKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiaW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBwdHIgPSAoY2hhciAqKWJhc2UtPmJ1ZjsKKworICAgIGlmIChiYXNlLT5zdHJpZGVzID09IE5VTEwpCisgICAgICAgICBwdHIgKz0gYmFzZS0+aXRlbXNpemUgKiBpbmRleDsKKyAgICBlbHNlCisgICAgICAgICBwdHIgKz0gYmFzZS0+c3RyaWRlc1swXSAqIGluZGV4OworCisgICAgcHRyID0gQURKVVNUX1BUUihwdHIsIGJhc2UtPnN1Ym9mZnNldHMpOworCisgICAgcmV0dXJuIHB0cjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfaXRlbShOREFycmF5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIG5kYnVmX3QgKm5kYnVmID0gc2VsZi0+aGVhZDsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisgICAgY2hhciAqcHRyOworCisgICAgaWYgKGJhc2UtPm5kaW0gPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBpbmRleGluZyBvZiBzY2FsYXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcHRyID0gcHRyX2Zyb21faW5kZXgoYmFzZSwgaW5kZXgpOworICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoYmFzZS0+bmRpbSA9PSAxKSB7CisgICAgICAgIHJldHVybiB1bnBhY2tfc2luZ2xlKHB0ciwgYmFzZS0+Zm9ybWF0LCBiYXNlLT5pdGVtc2l6ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBOREFycmF5T2JqZWN0ICpuZDsKKyAgICAgICAgUHlfYnVmZmVyICpzdWJ2aWV3OworCisgICAgICAgIG5kID0gKE5EQXJyYXlPYmplY3QgKiluZGFycmF5X25ldygmTkRBcnJheV9UeXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKG5kID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAobmRhcnJheV9pbml0X3N0YXRpY2J1ZigoUHlPYmplY3QgKilzZWxmLCBuZCwgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobmQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBzdWJ2aWV3ID0gJm5kLT5zdGF0aWNidWYuYmFzZTsKKworICAgICAgICBzdWJ2aWV3LT5idWYgPSBwdHI7CisgICAgICAgIHN1YnZpZXctPmxlbiAvPSBzdWJ2aWV3LT5zaGFwZVswXTsKKworICAgICAgICBzdWJ2aWV3LT5uZGltLS07CisgICAgICAgIHN1YnZpZXctPnNoYXBlKys7CisgICAgICAgIGlmIChzdWJ2aWV3LT5zdHJpZGVzKSBzdWJ2aWV3LT5zdHJpZGVzKys7CisgICAgICAgIGlmIChzdWJ2aWV3LT5zdWJvZmZzZXRzKSBzdWJ2aWV3LT5zdWJvZmZzZXRzKys7CisKKyAgICAgICAgaW5pdF9mbGFncygmbmQtPnN0YXRpY2J1Zik7CisKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5kOworICAgIH0KK30KKworLyoKKyAgRm9yIGVhY2ggZGltZW5zaW9uLCB3ZSBnZXQgdmFsaWQgKHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aCkgcXVhZHJ1cGxlcworICBmcm9tIFB5U2xpY2VfR2V0SW5kaWNlc0V4KCkuCisKKyAgU2xpY2luZyBOdW1QeSBhcnJheXMKKyAgPT09PT09PT09PT09PT09PT09PT0KKworICAgIEEgcG9pbnRlciB0byBhbiBlbGVtZW50IGluIGEgTnVtUHkgYXJyYXkgaXMgZGVmaW5lZCBieToKKworICAgICAgcHRyID0gKGNoYXIgKilidWYgKyBpbmRpY2VzWzBdICogc3RyaWRlc1swXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXNbbmRpbS0xXSAqIHN0cmlkZXNbbmRpbS0xXQorCisgICAgQWRqdXN0IGJ1ZjoKKyAgICAtLS0tLS0tLS0tLQorICAgICAgQWRkaW5nIHN0YXJ0W25dIGZvciBlYWNoIGRpbWVuc2lvbiBlZmZlY3RpdmVseSBhZGRzIHRoZSBjb25zdGFudDoKKworICAgICAgICBjID0gc3RhcnRbMF0gKiBzdHJpZGVzWzBdICsgLi4uICsgc3RhcnRbbmRpbS0xXSAqIHN0cmlkZXNbbmRpbS0xXQorCisgICAgICBUaGVyZWZvcmUgaW5pdF9zbGljZSgpIGFkZHMgYWxsIHN0YXJ0W25dIGRpcmVjdGx5IHRvIGJ1Zi4KKworICAgIEFkanVzdCBzaGFwZToKKyAgICAtLS0tLS0tLS0tLS0tCisgICAgICBPYnZpb3VzbHkgc2hhcGVbbl0gPSBzbGljZWxlbmd0aFtuXQorCisgICAgQWRqdXN0IHN0cmlkZXM6CisgICAgLS0tLS0tLS0tLS0tLS0tCisgICAgICBJbiB0aGUgb3JpZ2luYWwgYXJyYXksIHRoZSBuZXh0IGVsZW1lbnQgaW4gYSBkaW1lbnNpb24gaXMgcmVhY2hlZAorICAgICAgYnkgYWRkaW5nIHN0cmlkZXNbbl0gdG8gdGhlIHBvaW50ZXIuIEluIHRoZSBzbGljZWQgYXJyYXksIGVsZW1lbnRzCisgICAgICBtYXkgYmUgc2tpcHBlZCwgc28gdGhlIG5leHQgZWxlbWVudCBpcyByZWFjaGVkIGJ5IGFkZGluZzoKKworICAgICAgICBzdHJpZGVzW25dICogc3RlcFtuXQorCisgIFNsaWNpbmcgUElMIGFycmF5cworICA9PT09PT09PT09PT09PT09PT0KKworICAgIExheW91dDoKKyAgICAtLS0tLS0tCisgICAgICBJbiB0aGUgZmlyc3QgKHplcm90aCkgZGltZW5zaW9uLCBQSUwgYXJyYXlzIGhhdmUgYW4gYXJyYXkgb2YgcG9pbnRlcnMKKyAgICAgIHRvIHN1Yi1hcnJheXMgb2YgbmRpbS0xLiBTdHJpZGluZyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uIGlzIGRvbmUgYnkKKyAgICAgIGdldHRpbmcgdGhlIGluZGV4IG9mIHRoZSBudGggcG9pbnRlciwgZGVyZWZlcmVuY2UgaXQgYW5kIHRoZW4gYWRkIGEKKyAgICAgIHN1Ym9mZnNldCB0byBpdC4gVGhlIGFycmF5cyBwb2ludGVkIHRvIGNhbiBiZXN0IGJlIHNlZW4gYSByZWd1bGFyCisgICAgICBOdW1QeSBhcnJheXMuCisKKyAgICBBZGp1c3QgYnVmOgorICAgIC0tLS0tLS0tLS0tCisgICAgICBJbiB0aGUgb3JpZ2luYWwgYXJyYXksIGJ1ZiBwb2ludHMgdG8gYSBsb2NhdGlvbiAodXN1YWxseSB0aGUgc3RhcnQpCisgICAgICBpbiB0aGUgYXJyYXkgb2YgcG9pbnRlcnMuIEZvciB0aGUgc2xpY2VkIGFycmF5LCBzdGFydFswXSBjYW4gYmUKKyAgICAgIGFkZGVkIHRvIGJ1ZiBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgZm9yIE51bVB5IGFycmF5cy4KKworICAgIEFkanVzdCBzdWJvZmZzZXRzOgorICAgIC0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgRHVlIHRvIHRoZSBkZXJlZmVyZW5jaW5nIHN0ZXAgaW4gdGhlIGFkZHJlc3Npbmcgc2NoZW1lLCBpdCBpcyBub3QKKyAgICAgIHBvc3NpYmxlIHRvIGFkanVzdCBidWYgZm9yIGhpZ2hlciBkaW1lbnNpb25zLiBSZWNhbGwgdGhhdCB0aGUKKyAgICAgIHN1Yi1hcnJheXMgcG9pbnRlZCB0byBhcmUgcmVndWxhciBOdW1QeSBhcnJheXMsIHNvIGZvciBlYWNoIG9mCisgICAgICB0aG9zZSBhcnJheXMgYWRkaW5nIHN0YXJ0W25dIGVmZmVjdGl2ZWx5IGFkZHMgdGhlIGNvbnN0YW50OgorCisgICAgICAgIGMgPSBzdGFydFsxXSAqIHN0cmlkZXNbMV0gKyAuLi4gKyBzdGFydFtuZGltLTFdICogc3RyaWRlc1tuZGltLTFdCisKKyAgICAgIFRoaXMgY29uc3RhbnQgaXMgYWRkZWQgdG8gc3Vib2Zmc2V0c1swXS4gc3Vib2Zmc2V0c1swXSBpbiB0dXJuIGlzCisgICAgICBhZGRlZCB0byBlYWNoIHBvaW50ZXIgcmlnaHQgYWZ0ZXIgZGVyZWZlcmVuY2luZy4KKworICAgIEFkanVzdCBzaGFwZSBhbmQgc3RyaWRlczoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICBTaGFwZSBhbmQgc3RyaWRlcyBhcmUgbm90IGluZmx1ZW5jZWQgYnkgdGhlIGRlcmVmZXJlbmNpbmcgc3RlcCwgc28KKyAgICAgIHRoZXkgYXJlIGFkanVzdGVkIGluIHRoZSBzYW1lIG1hbm5lciBhcyBmb3IgTnVtUHkgYXJyYXlzLgorCisgIE11bHRpcGxlIGxldmVscyBvZiBzdWJvZmZzZXRzCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgIEZvciBhIGNvbnN0cnVjdCBsaWtlIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvIGFycmF5IG9mIHBvaW50ZXJzIHRvCisgICAgICBzdWItYXJyYXlzIG9mIG5kaW0tMjoKKworICAgICAgICBzdWJvZmZzZXRzWzBdID0gc3RhcnRbMV0gKiBzdHJpZGVzWzFdCisgICAgICAgIHN1Ym9mZnNldHNbMV0gPSBzdGFydFsyXSAqIHN0cmlkZXNbMl0gKyAuLi4KKyovCitzdGF0aWMgaW50Citpbml0X3NsaWNlKFB5X2J1ZmZlciAqYmFzZSwgUHlPYmplY3QgKmtleSwgaW50IGRpbSkKK3sKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aDsKKworICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChrZXksIGJhc2UtPnNoYXBlW2RpbV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW5ndGgpIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cyA9PSBOVUxMIHx8IGRpbSA9PSAwKSB7CisgICAgYWRqdXN0X2J1ZjoKKyAgICAgICAgYmFzZS0+YnVmID0gKGNoYXIgKiliYXNlLT5idWYgKyBiYXNlLT5zdHJpZGVzW2RpbV0gKiBzdGFydDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X3NzaXplX3QgbiA9IGRpbS0xOworICAgICAgICB3aGlsZSAobiA+PSAwICYmIGJhc2UtPnN1Ym9mZnNldHNbbl0gPCAwKQorICAgICAgICAgICAgbi0tOworICAgICAgICBpZiAobiA8IDApCisgICAgICAgICAgICBnb3RvIGFkanVzdF9idWY7IC8qIGFsbCBzdWJvZmZzZXRzIGFyZSBuZWdhdGl2ZSAqLworICAgICAgICBiYXNlLT5zdWJvZmZzZXRzW25dID0gYmFzZS0+c3Vib2Zmc2V0c1tuXSArIGJhc2UtPnN0cmlkZXNbZGltXSAqIHN0YXJ0OworICAgIH0KKyAgICBiYXNlLT5zaGFwZVtkaW1dID0gc2xpY2VsZW5ndGg7CisgICAgYmFzZS0+c3RyaWRlc1tkaW1dID0gYmFzZS0+c3RyaWRlc1tkaW1dICogc3RlcDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb3B5X3N0cnVjdHVyZShQeV9idWZmZXIgKmJhc2UpCit7CisgICAgUHlfc3NpemVfdCAqc2hhcGUgPSBOVUxMLCAqc3RyaWRlcyA9IE5VTEwsICpzdWJvZmZzZXRzID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBzaGFwZSA9IFB5TWVtX01hbGxvYyhiYXNlLT5uZGltICogKHNpemVvZiAqc2hhcGUpKTsKKyAgICBzdHJpZGVzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpzdHJpZGVzKSk7CisgICAgaWYgKHNoYXBlID09IE5VTEwgfHwgc3RyaWRlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycl9ub21lbTsKKworICAgIHN1Ym9mZnNldHMgPSBOVUxMOworICAgIGlmIChiYXNlLT5zdWJvZmZzZXRzKSB7CisgICAgICAgIHN1Ym9mZnNldHMgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKnN1Ym9mZnNldHMpKTsKKyAgICAgICAgaWYgKHN1Ym9mZnNldHMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyX25vbWVtOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBiYXNlLT5uZGltOyBpKyspIHsKKyAgICAgICAgc2hhcGVbaV0gPSBiYXNlLT5zaGFwZVtpXTsKKyAgICAgICAgc3RyaWRlc1tpXSA9IGJhc2UtPnN0cmlkZXNbaV07CisgICAgICAgIGlmIChzdWJvZmZzZXRzKQorICAgICAgICAgICAgc3Vib2Zmc2V0c1tpXSA9IGJhc2UtPnN1Ym9mZnNldHNbaV07CisgICAgfQorCisgICAgYmFzZS0+c2hhcGUgPSBzaGFwZTsKKyAgICBiYXNlLT5zdHJpZGVzID0gc3RyaWRlczsKKyAgICBiYXNlLT5zdWJvZmZzZXRzID0gc3Vib2Zmc2V0czsKKworICAgIHJldHVybiAwOworCitlcnJfbm9tZW06CisgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBQeU1lbV9YRnJlZShzaGFwZSk7CisgICAgUHlNZW1fWEZyZWUoc3RyaWRlcyk7CisgICAgUHlNZW1fWEZyZWUoc3Vib2Zmc2V0cyk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9zdWJzY3JpcHQoTkRBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZDsKKyAgICBuZGJ1Zl90ICpuZGJ1ZjsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKworICAgIGlmIChiYXNlLT5uZGltID09IDApIHsKKyAgICAgICAgaWYgKFB5VHVwbGVfQ2hlY2soa2V5KSAmJiBQeVR1cGxlX0dFVF9TSVpFKGtleSkgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIHVucGFja19zaW5nbGUoYmFzZS0+YnVmLCBiYXNlLT5mb3JtYXQsIGJhc2UtPml0ZW1zaXplKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gUHlfRWxsaXBzaXMpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImludmFsaWQgaW5kZXhpbmcgb2Ygc2NhbGFyIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGtleSk7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBuZGFycmF5X2l0ZW0oc2VsZiwgaW5kZXgpOworICAgIH0KKworICAgIG5kID0gKE5EQXJyYXlPYmplY3QgKiluZGFycmF5X25ldygmTkRBcnJheV9UeXBlLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAobmQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBuZXcgbmRhcnJheSBpcyBhIGNvbnN1bWVyICovCisgICAgaWYgKG5kYXJyYXlfaW5pdF9zdGF0aWNidWYoKFB5T2JqZWN0ICopc2VsZiwgbmQsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYobmQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBjb3B5IHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzICovCisgICAgbmRidWYgPSBuZC0+aGVhZDsKKyAgICBiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIGlmIChjb3B5X3N0cnVjdHVyZShiYXNlKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKG5kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5kYnVmLT5mbGFncyB8PSBORF9PV05fQVJSQVlTOworCisgICAgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSkgeworICAgICAgICAvKiBvbmUtZGltZW5zaW9uYWwgc2xpY2UgKi8KKyAgICAgICAgaWYgKGluaXRfc2xpY2UoYmFzZSwga2V5LCAwKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICB9CisgICAgZWxzZSBpZiBQeVR1cGxlX0NoZWNrKGtleSkgeworICAgICAgICAvKiBtdWx0aS1kaW1lbnNpb25hbCBzbGljZSAqLworICAgICAgICBQeU9iamVjdCAqdHVwbGUgPSBrZXk7CisgICAgICAgIFB5X3NzaXplX3QgaSwgbjsKKworICAgICAgICBuID0gUHlUdXBsZV9HRVRfU0laRSh0dXBsZSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGtleSA9IFB5VHVwbGVfR0VUX0lURU0odHVwbGUsIGkpOworICAgICAgICAgICAgaWYgKCFQeVNsaWNlX0NoZWNrKGtleSkpCisgICAgICAgICAgICAgICAgZ290byB0eXBlX2Vycm9yOworICAgICAgICAgICAgaWYgKGluaXRfc2xpY2UoYmFzZSwga2V5LCAoaW50KWkpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZ290byB0eXBlX2Vycm9yOworICAgIH0KKworICAgIGluaXRfbGVuKGJhc2UpOworICAgIGluaXRfZmxhZ3MobmRidWYpOworCisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5kOworCisKK3R5cGVfZXJyb3I6CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgImNhbm5vdCBpbmRleCBtZW1vcnkgdXNpbmcgXCIlLjIwMHNcIiIsCisgICAgICAgIGtleS0+b2JfdHlwZS0+dHBfbmFtZSk7CitlcnJfb2NjdXJyZWQ6CisgICAgUHlfREVDUkVGKG5kKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgaW50CituZGFycmF5X2Fzc19zdWJzY3JpcHQoTkRBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kOworICAgIFB5X2J1ZmZlciAqZGVzdCA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIFB5X2J1ZmZlciBzcmM7CisgICAgY2hhciAqcHRyOworICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgaW50IHJldCA9IC0xOworCisgICAgaWYgKGRlc3QtPnJlYWRvbmx5KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJuZGFycmF5IGlzIG5vdCB3cml0YWJsZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJuZGFycmF5IGRhdGEgY2Fubm90IGJlIGRlbGV0ZWQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoZGVzdC0+bmRpbSA9PSAwKSB7CisgICAgICAgIGlmIChrZXkgPT0gUHlfRWxsaXBzaXMgfHwKKyAgICAgICAgICAgIChQeVR1cGxlX0NoZWNrKGtleSkgJiYgUHlUdXBsZV9HRVRfU0laRShrZXkpID09IDApKSB7CisgICAgICAgICAgICBwdHIgPSAoY2hhciAqKWRlc3QtPmJ1ZjsKKyAgICAgICAgICAgIHJldHVybiBwYWNrX3NpbmdsZShwdHIsIHZhbHVlLCBkZXN0LT5mb3JtYXQsIGRlc3QtPml0ZW1zaXplKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIGluZGV4aW5nIG9mIHNjYWxhciIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGlmIChkZXN0LT5uZGltID09IDEgJiYgUHlJbmRleF9DaGVjayhrZXkpKSB7CisgICAgICAgIC8qIHJ2YWx1ZSBtdXN0IGJlIGEgc2luZ2xlIGl0ZW0gKi8KKyAgICAgICAgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGtleSk7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHB0ciA9IHB0cl9mcm9tX2luZGV4KGRlc3QsIGluZGV4KTsKKyAgICAgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhY2tfc2luZ2xlKHB0ciwgdmFsdWUsIGRlc3QtPmZvcm1hdCwgZGVzdC0+aXRlbXNpemUpOworICAgIH0KKworICAgIC8qIHJ2YWx1ZSBtdXN0IGJlIGFuIGV4cG9ydGVyICovCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih2YWx1ZSwgJnNyYywgUHlCVUZfRlVMTF9STykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIG5kID0gKE5EQXJyYXlPYmplY3QgKiluZGFycmF5X3N1YnNjcmlwdChzZWxmLCBrZXkpOworICAgIGlmIChuZCAhPSBOVUxMKSB7CisgICAgICAgIGRlc3QgPSAmbmQtPmhlYWQtPmJhc2U7CisgICAgICAgIHJldCA9IGNvcHlfYnVmZmVyKGRlc3QsICZzcmMpOworICAgICAgICBQeV9ERUNSRUYobmQpOworICAgIH0KKworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNyYyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NsaWNlX2luZGljZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXQsICprZXksICp0bXA7CisgICAgUHlfc3NpemVfdCBzWzRdOyAvKiBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGggKi8KKyAgICBQeV9zc2l6ZV90IGksIGxlbjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT24iLCAma2V5LCAmbGVuKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFQeVNsaWNlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc2xpY2Ugb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoa2V5LCBsZW4sICZzWzBdLCAmc1sxXSwgJnNbMl0sICZzWzNdKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0ID0gUHlUdXBsZV9OZXcoNCk7CisgICAgaWYgKHJldCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICAgICAgdG1wID0gUHlMb25nX0Zyb21Tc2l6ZV90KHNbaV0pOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJldCwgaSwgdG1wKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYocmV0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBuZGFycmF5X2FzX21hcHBpbmcgPSB7CisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtcF9sZW5ndGggKi8KKyAgICAoYmluYXJ5ZnVuYyluZGFycmF5X3N1YnNjcmlwdCwgICAgICAgIC8qIG1wX3N1YnNjcmlwdCAqLworICAgIChvYmpvYmphcmdwcm9jKW5kYXJyYXlfYXNzX3N1YnNjcmlwdCAgLyogbXBfYXNzX3N1YnNjcmlwdCAqLworfTsKKworc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIG5kYXJyYXlfYXNfc2VxdWVuY2UgPSB7CisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9sZW5ndGggKi8KKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2NvbmNhdCAqLworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfcmVwZWF0ICovCisgICAgICAgIChzc2l6ZWFyZ2Z1bmMpbmRhcnJheV9pdGVtLCAgICAgICAvKiBzcV9pdGVtICovCit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NzaXplX2FycmF5X2FzX3R1cGxlKFB5X3NzaXplX3QgKmFycmF5LCBQeV9zc2l6ZV90IGxlbikKK3sKKyAgICBQeU9iamVjdCAqdHVwbGUsICp4OworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChhcnJheSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlUdXBsZV9OZXcoMCk7CisKKyAgICB0dXBsZSA9IFB5VHVwbGVfTmV3KGxlbik7CisgICAgaWYgKHR1cGxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIHggPSBQeUxvbmdfRnJvbVNzaXplX3QoYXJyYXlbaV0pOworICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0dXBsZSwgaSwgeCk7CisgICAgfQorCisgICAgcmV0dXJuIHR1cGxlOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfZmxhZ3MoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmhlYWQtPmZsYWdzKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X29mZnNldChOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIG5kYnVmX3QgKm5kYnVmID0gc2VsZi0+aGVhZDsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG5kYnVmLT5vZmZzZXQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfb2JqKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisKKyAgICBpZiAoYmFzZS0+b2JqID09IE5VTEwpIHsgCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoYmFzZS0+b2JqKTsKKyAgICByZXR1cm4gYmFzZS0+b2JqOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfbmJ5dGVzKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChiYXNlLT5sZW4pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfcmVhZG9ubHkoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGJhc2UtPnJlYWRvbmx5KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X2l0ZW1zaXplKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChiYXNlLT5pdGVtc2l6ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9mb3JtYXQoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICBjaGFyICpmbXQgPSBiYXNlLT5mb3JtYXQgPyBiYXNlLT5mb3JtYXQgOiAiIjsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoZm10KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X25kaW0oTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGJhc2UtPm5kaW0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfc2hhcGUoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gc3NpemVfYXJyYXlfYXNfdHVwbGUoYmFzZS0+c2hhcGUsIGJhc2UtPm5kaW0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfc3RyaWRlcyhOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBzc2l6ZV9hcnJheV9hc190dXBsZShiYXNlLT5zdHJpZGVzLCBiYXNlLT5uZGltKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X3N1Ym9mZnNldHMoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gc3NpemVfYXJyYXlfYXNfdHVwbGUoYmFzZS0+c3Vib2Zmc2V0cywgYmFzZS0+bmRpbSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2NfY29udGlnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgaW50IHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cygmbmQtPmhlYWQtPmJhc2UsICdDJyk7CisKKyAgICBpZiAocmV0ICE9IE5EX0NfQ09OVElHVU9VUyhuZC0+aGVhZC0+ZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAicmVzdWx0cyBmcm9tIFB5QnVmZmVyX0lzQ29udGlndW91cygpIGFuZCBmbGFncyBkaWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmV0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZm9ydHJhbl9jb250aWcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBpbnQgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKCZuZC0+aGVhZC0+YmFzZSwgJ0YnKTsKKworICAgIGlmIChyZXQgIT0gTkRfRk9SVFJBTl9DT05USUdVT1VTKG5kLT5oZWFkLT5mbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJyZXN1bHRzIGZyb20gUHlCdWZmZXJfSXNDb250aWd1b3VzKCkgYW5kIGZsYWdzIGRpZmZlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9jb250aWcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBpbnQgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKCZuZC0+aGVhZC0+YmFzZSwgJ0EnKTsKKworICAgIGlmIChyZXQgIT0gTkRfQU5ZX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgInJlc3VsdHMgZnJvbSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoKSBhbmQgZmxhZ3MgZGlmZmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJldCk7Cit9CisKKworc3RhdGljIFB5R2V0U2V0RGVmIG5kYXJyYXlfZ2V0c2V0IFtdID0KK3sKKyAgLyogbmRidWYgKi8KKyAgeyAiZmxhZ3MiLCAgICAgICAgKGdldHRlciluZGFycmF5X2dldF9mbGFncywgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAib2Zmc2V0IiwgICAgICAgKGdldHRlciluZGFycmF5X2dldF9vZmZzZXQsICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgLyogbmRidWYuYmFzZSAqLworICB7ICJvYmoiLCAgICAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X29iaiwgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJuYnl0ZXMiLCAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X25ieXRlcywgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJyZWFkb25seSIsICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X3JlYWRvbmx5LCAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJpdGVtc2l6ZSIsICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X2l0ZW1zaXplLCAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJmb3JtYXQiLCAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X2Zvcm1hdCwgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJuZGltIiwgICAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X25kaW0sICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJzaGFwZSIsICAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X3NoYXBlLCAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJzdHJpZGVzIiwgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X3N0cmlkZXMsICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJzdWJvZmZzZXRzIiwgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X3N1Ym9mZnNldHMsIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJjX2NvbnRpZ3VvdXMiLCAoZ2V0dGVyKW5kYXJyYXlfY19jb250aWcsICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJmX2NvbnRpZ3VvdXMiLCAoZ2V0dGVyKW5kYXJyYXlfZm9ydHJhbl9jb250aWcsIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJjb250aWd1b3VzIiwgICAoZ2V0dGVyKW5kYXJyYXlfY29udGlnLCAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7TlVMTH0KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3RvbGlzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIHJldHVybiBuZGFycmF5X2FzX2xpc3QoKE5EQXJyYXlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfdG9ieXRlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIG5kYnVmX3QgKm5kYnVmID0gKChOREFycmF5T2JqZWN0ICopc2VsZiktPmhlYWQ7CisgICAgUHlfYnVmZmVyICpzcmMgPSAmbmRidWYtPmJhc2U7CisgICAgUHlfYnVmZmVyIGRlc3Q7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CisgICAgY2hhciAqbWVtOworCisgICAgaWYgKE5EX0NfQ09OVElHVU9VUyhuZGJ1Zi0+ZmxhZ3MpKQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzcmMtPmJ1Ziwgc3JjLT5sZW4pOworCisgICAgYXNzZXJ0KHNyYy0+c2hhcGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHNyYy0+c3RyaWRlcyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3JjLT5uZGltID4gMCk7CisKKyAgICBtZW0gPSBQeU1lbV9NYWxsb2Moc3JjLT5sZW4pOworICAgIGlmIChtZW0gPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZXN0ID0gKnNyYzsKKyAgICBkZXN0LmJ1ZiA9IG1lbTsKKyAgICBkZXN0LnN1Ym9mZnNldHMgPSBOVUxMOworICAgIGRlc3Quc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGJ1ZiwgMCk7CisgICAgaWYgKGRlc3Quc3RyaWRlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKyAgICBpZiAoY29weV9idWZmZXIoJmRlc3QsIHNyYykgPCAwKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUobWVtLCBzcmMtPmxlbik7CisKK291dDoKKyAgICBQeU1lbV9YRnJlZShkZXN0LnN0cmlkZXMpOworICAgIFB5TWVtX0ZyZWUobWVtKTsKKyAgICByZXR1cm4gcmV0OworfQorCisvKiBhZGQgcmVkdW5kYW50IChuZWdhdGl2ZSkgc3Vib2Zmc2V0cyBmb3IgdGVzdGluZyAqLworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfYWRkX3N1Ym9mZnNldHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmQtPmhlYWQtPmJhc2U7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMgIT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNhbm5vdCBhZGQgc3Vib2Zmc2V0cyB0byBQSUwtc3R5bGUgYXJyYXkiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoYmFzZS0+c3RyaWRlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGFkZCBzdWJvZmZzZXRzIHRvIGFycmF5IHdpdGhvdXQgc3RyaWRlcyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgYmFzZS0+c3Vib2Zmc2V0cyA9IFB5TWVtX01hbGxvYyhiYXNlLT5uZGltICogKHNpemVvZiAqYmFzZS0+c3Vib2Zmc2V0cykpOworICAgIGlmIChiYXNlLT5zdWJvZmZzZXRzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IGJhc2UtPm5kaW07IGkrKykKKyAgICAgICAgYmFzZS0+c3Vib2Zmc2V0c1tpXSA9IC0xOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qIFRlc3QgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoKTogcmV0dXJuIGEgbWVtb3J5dmlldyBmcm9tIGEgc3RhdGljIGJ1ZmZlci4KKyAgIE9idmlvdXNseSB0aGlzIGlzIGZyYWdpbGUgYW5kIG9ubHkgb25lIHN1Y2ggdmlldyBtYXkgYmUgYWN0aXZlIGF0IGFueQorICAgdGltZS4gTmV2ZXIgdXNlIGFueXRoaW5nIGxpa2UgdGhpcyBpbiByZWFsIGNvZGUhICovCitzdGF0aWMgY2hhciAqaW5mb2J1ZiA9IE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgY29uc3QgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgY29uc3QgUHlfYnVmZmVyICp2aWV3ID0gJm5kLT5oZWFkLT5iYXNlOworICAgIGNvbnN0IG5kYnVmX3QgKm5kYnVmOworICAgIHN0YXRpYyBjaGFyIGZvcm1hdFtORF9NQVhfTkRJTSsxXTsKKyAgICBzdGF0aWMgUHlfc3NpemVfdCBzaGFwZVtORF9NQVhfTkRJTV07CisgICAgc3RhdGljIFB5X3NzaXplX3Qgc3RyaWRlc1tORF9NQVhfTkRJTV07CisgICAgc3RhdGljIFB5X3NzaXplX3Qgc3Vib2Zmc2V0c1tORF9NQVhfTkRJTV07CisgICAgc3RhdGljIFB5X2J1ZmZlciBpbmZvOworICAgIGNoYXIgKnA7CisKKyAgICBpZiAoIU5EX0lTX0NPTlNVTUVSKG5kKSkKKyAgICAgICAgbmRidWYgPSBuZC0+aGVhZDsgLyogc2VsZiBpcyBuZGFycmF5L29yaWdpbmFsIGV4cG9ydGVyICovCisgICAgZWxzZSBpZiAoTkRBcnJheV9DaGVjayh2aWV3LT5vYmopICYmICFORF9JU19DT05TVU1FUih2aWV3LT5vYmopKQorICAgICAgICAvKiBzZWxmIGlzIG5kYXJyYXkgYW5kIGNvbnN1bWVyIGZyb20gbmRhcnJheS9vcmlnaW5hbCBleHBvcnRlciAqLworICAgICAgICBuZGJ1ZiA9ICgoTkRBcnJheU9iamVjdCAqKXZpZXctPm9iaiktPmhlYWQ7CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCk6IG5kYXJyYXkgbXVzdCBiZSBvcmlnaW5hbCBleHBvcnRlciBvciAiCisgICAgICAgICJjb25zdW1lciBmcm9tIG5kYXJyYXkvb3JpZ2luYWwgZXhwb3J0ZXIiKTsKKyAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGluZm8gPSAqdmlldzsKKyAgICBwID0gUHlNZW1fUmVhbGxvYyhpbmZvYnVmLCBuZGJ1Zi0+bGVuKTsKKyAgICBpZiAocCA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoaW5mb2J1Zik7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGluZm9idWYgPSBOVUxMOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGluZm9idWYgPSBwOworICAgIH0KKyAgICAvKiBjb3B5IHRoZSBjb21wbGV0ZSByYXcgZGF0YSAqLworICAgIG1lbWNweShpbmZvYnVmLCBuZGJ1Zi0+ZGF0YSwgbmRidWYtPmxlbik7CisgICAgaW5mby5idWYgPSBpbmZvYnVmICsgKChjaGFyICopdmlldy0+YnVmIC0gbmRidWYtPmRhdGEpOworCisgICAgaWYgKHZpZXctPmZvcm1hdCkgeworICAgICAgICBpZiAoc3RybGVuKHZpZXctPmZvcm1hdCkgPiBORF9NQVhfTkRJTSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlld19mcm9tX2J1ZmZlcjogZm9ybWF0IGlzIGxpbWl0ZWQgdG8gJWQgY2hhcmFjdGVycyIsCisgICAgICAgICAgICAgICAgTkRfTUFYX05ESU0pOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHN0cmNweShmb3JtYXQsIHZpZXctPmZvcm1hdCk7CisgICAgICAgIGluZm8uZm9ybWF0ID0gZm9ybWF0OworICAgIH0KKyAgICBpZiAodmlldy0+bmRpbSA+IE5EX01BWF9ORElNKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlld19mcm9tX2J1ZmZlcjogbmRpbSBpcyBsaW1pdGVkIHRvICVkIiwgTkRfTUFYX05ESU0pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICh2aWV3LT5zaGFwZSkgeworICAgICAgICBtZW1jcHkoc2hhcGUsIHZpZXctPnNoYXBlLCB2aWV3LT5uZGltICogc2l6ZW9mKFB5X3NzaXplX3QpKTsKKyAgICAgICAgaW5mby5zaGFwZSA9IHNoYXBlOworICAgIH0KKyAgICBpZiAodmlldy0+c3RyaWRlcykgeworICAgICAgICBtZW1jcHkoc3RyaWRlcywgdmlldy0+c3RyaWRlcywgdmlldy0+bmRpbSAqIHNpemVvZihQeV9zc2l6ZV90KSk7CisgICAgICAgIGluZm8uc3RyaWRlcyA9IHN0cmlkZXM7CisgICAgfQorICAgIGlmICh2aWV3LT5zdWJvZmZzZXRzKSB7CisgICAgICAgIG1lbWNweShzdWJvZmZzZXRzLCB2aWV3LT5zdWJvZmZzZXRzLCB2aWV3LT5uZGltICogc2l6ZW9mKFB5X3NzaXplX3QpKTsKKyAgICAgICAgaW5mby5zdWJvZmZzZXRzID0gc3Vib2Zmc2V0czsKKyAgICB9CisKKyAgICByZXR1cm4gUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoJmluZm8pOworfQorCisvKiBHZXQgYSBzaW5nbGUgaXRlbSBmcm9tIGJ1Zm9iaiBhdCB0aGUgbG9jYXRpb24gc3BlY2lmaWVkIGJ5IHNlcS4KKyAgIHNlcSBpcyBhIGxpc3Qgb3IgdHVwbGUgb2YgaW5kaWNlcy4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBmdW5jdGlvbgorICAgaXMgdG8gY2hlY2sgb3RoZXIgZnVuY3Rpb25zIGFnYWluc3QgUHlCdWZmZXJfR2V0UG9pbnRlcigpLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9wb2ludGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0ID0gTlVMTCwgKmJ1Zm9iaiwgKnNlcTsKKyAgICBQeV9idWZmZXIgdmlldzsKKyAgICBQeV9zc2l6ZV90IGluZGljZXNbTkRfTUFYX05ESU1dOworICAgIFB5X3NzaXplX3QgaTsKKyAgICB2b2lkICpwdHI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJmJ1Zm9iaiwgJnNlcSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgQ0hFQ0tfTElTVF9PUl9UVVBMRShzZXEpOworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYnVmb2JqLCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh2aWV3Lm5kaW0gPiBORF9NQVhfTkRJTSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJnZXRfcG9pbnRlcigpOiBuZGltID4gJWQiLCBORF9NQVhfTkRJTSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBpZiAoUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNlcSkgIT0gdmlldy5uZGltKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImdldF9wb2ludGVyKCk6IGxlbihpbmRpY2VzKSAhPSBuZGltIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCB2aWV3Lm5kaW07IGkrKykgeworICAgICAgICBQeU9iamVjdCAqeCA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzZXEsIGkpOworICAgICAgICBpbmRpY2VzW2ldID0gUHlMb25nX0FzU3NpemVfdCh4KTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgaWYgKGluZGljZXNbaV0gPCAwIHx8IGluZGljZXNbaV0gPj0gdmlldy5zaGFwZVtpXSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImdldF9wb2ludGVyKCk6IGludmFsaWQgaW5kZXggJXpkIGF0IHBvc2l0aW9uICV6ZCIsCisgICAgICAgICAgICAgICAgaW5kaWNlc1tpXSwgaSk7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB0ciA9IFB5QnVmZmVyX0dldFBvaW50ZXIoJnZpZXcsIGluZGljZXMpOworICAgIHJldCA9IHVucGFja19zaW5nbGUocHRyLCB2aWV3LmZvcm1hdCwgdmlldy5pdGVtc2l6ZSk7CisKK291dDoKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X3NpemVvZl92b2lkX3AoUHlPYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHNpemVvZih2b2lkICopKTsKK30KKworc3RhdGljIGNoYXIKK2dldF9hc2NpaV9vcmRlcihQeU9iamVjdCAqb3JkZXIpCit7CisgICAgUHlPYmplY3QgKmFzY2lpX29yZGVyOworICAgIGNoYXIgb3JkOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sob3JkZXIpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAib3JkZXIgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICByZXR1cm4gQ0hBUl9NQVg7CisgICAgfQorCisgICAgYXNjaWlfb3JkZXIgPSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhvcmRlcik7CisgICAgaWYgKGFzY2lpX29yZGVyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIENIQVJfTUFYOworICAgIH0KKworICAgIG9yZCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpX29yZGVyKVswXTsKKyAgICBQeV9ERUNSRUYoYXNjaWlfb3JkZXIpOworCisgICAgaWYgKG9yZCAhPSAnQycgJiYgb3JkICE9ICdGJyAmJiBvcmQgIT0gJ0EnKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImludmFsaWQgb3JkZXIsIG11c3QgYmUgQywgRiBvciBBIik7CisgICAgICAgIHJldHVybiBDSEFSX01BWDsKKyAgICB9CisKKyAgICByZXR1cm4gb3JkOworfQorCisvKiBHZXQgYSBjb250aWd1b3VzIG1lbW9yeXZpZXcuICovCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2NvbnRpZ3VvdXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKmJ1ZmZlcnR5cGU7CisgICAgUHlPYmplY3QgKm9yZGVyOworICAgIGxvbmcgdHlwZTsKKyAgICBjaGFyIG9yZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT09PIiwgJm9iaiwgJmJ1ZmZlcnR5cGUsICZvcmRlcikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeUxvbmdfQ2hlY2soYnVmZmVydHlwZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJidWZmZXJ0eXBlIG11c3QgYmUgUHlCVUZfUkVBRCBvciBQeUJVRl9XUklURSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB0eXBlID0gUHlMb25nX0FzTG9uZyhidWZmZXJ0eXBlKTsKKyAgICBpZiAodHlwZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAodHlwZSAhPSBQeUJVRl9SRUFEICYmIHR5cGUgIT0gUHlCVUZfV1JJVEUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiaW52YWxpZCBidWZmZXIgdHlwZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvcmQgPSBnZXRfYXNjaWlfb3JkZXIob3JkZXIpOworICAgIGlmIChvcmQgPT0gQ0hBUl9NQVgpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKG9iaiwgKGludCl0eXBlLCBvcmQpOworfQorCisvKiBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2J1ZmZlcl90b19jb250aWd1b3VzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5T2JqZWN0ICpvcmRlcjsKKyAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKKyAgICBpbnQgZmxhZ3M7CisgICAgY2hhciBvcmQ7CisgICAgUHlfYnVmZmVyIHZpZXc7CisgICAgY2hhciAqYnVmID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT09pIiwgJm9iaiwgJm9yZGVyLCAmZmxhZ3MpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmdmlldywgZmxhZ3MpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvcmQgPSBnZXRfYXNjaWlfb3JkZXIob3JkZXIpOworICAgIGlmIChvcmQgPT0gQ0hBUl9NQVgpIHsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgYnVmID0gUHlNZW1fTWFsbG9jKHZpZXcubGVuKTsKKyAgICBpZiAoYnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cyhidWYsICZ2aWV3LCB2aWV3Lmxlbiwgb3JkKSA8IDApIHsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIHZpZXcubGVuKTsKKworb3V0OgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIFB5TWVtX1hGcmVlKGJ1Zik7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAorZm10Y21wKGNvbnN0IGNoYXIgKmZtdDEsIGNvbnN0IGNoYXIgKmZtdDIpCit7CisgICAgaWYgKGZtdDEgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gZm10MiA9PSBOVUxMIHx8IHN0cmNtcChmbXQyLCAiQiIpID09IDA7CisgICAgfQorICAgIGlmIChmbXQyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIGZtdDEgPT0gTlVMTCB8fCBzdHJjbXAoZm10MSwgIkIiKSA9PSAwOworICAgIH0KKyAgICByZXR1cm4gc3RyY21wKGZtdDEsIGZtdDIpID09IDA7Cit9CisKK3N0YXRpYyBpbnQKK2FycmF5Y21wKGNvbnN0IFB5X3NzaXplX3QgKmExLCBjb25zdCBQeV9zc2l6ZV90ICphMiwgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsCisgICAgICAgICBQeV9zc2l6ZV90IG5kaW0pCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgaWYgKG5kaW0gPT0gMSAmJiBzaGFwZSAmJiBzaGFwZVswXSA9PSAxKSB7CisgICAgICAgIC8qIFRoaXMgaXMgZm9yIGNvbXBhcmluZyBzdHJpZGVzOiBGb3IgZXhhbXBsZSwgdGhlIGFycmF5CisgICAgICAgICAgIFsxNzVdLCBzaGFwZT1bMV0sIHN0cmlkZXM9Wy01XSBpcyBjb25zaWRlcmVkIGNvbnRpZ3VvdXMuICovCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBuZGltOyBpKyspIHsKKyAgICAgICAgaWYgKGExW2ldICE9IGEyW2ldKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAxOworfQorCisvKiBDb21wYXJlIHR3byBjb250aWd1b3VzIGJ1ZmZlcnMgZm9yIHBoeXNpY2FsIGVxdWFsaXR5LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2NtcF9jb250aWcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpiMSwgKmIyOyAvKiBidWZmZXIgb2JqZWN0cyAqLworICAgIFB5X2J1ZmZlciB2MSwgdjI7CisgICAgUHlPYmplY3QgKnJldDsKKyAgICBpbnQgZXF1YWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZiMSwgJmIyKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGIxLCAmdjEsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNtcF9jb250aWc6IGZpcnN0IGFyZ3VtZW50IGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVmZmVyICIKKyAgICAgICAgICAgICJwcm90b2NvbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihiMiwgJnYyLCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjbXBfY29udGlnOiBzZWNvbmQgYXJndW1lbnQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgIgorICAgICAgICAgICAgInByb3RvY29sIik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnYxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCEoUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2MSwgJ0MnKSYmUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2MiwgJ0MnKSkgJiYKKyAgICAgICAgIShQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJnYxLCAnRicpJiZQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJnYyLCAnRicpKSkgeworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKiByZWFkb25seSBtYXkgZGlmZmVyIGlmIGNyZWF0ZWQgZnJvbSBub24tY29udGlndW91cyAqLworICAgIGlmICh2MS5sZW4gIT0gdjIubGVuIHx8CisgICAgICAgIHYxLml0ZW1zaXplICE9IHYyLml0ZW1zaXplIHx8CisgICAgICAgIHYxLm5kaW0gIT0gdjIubmRpbSB8fAorICAgICAgICAhZm10Y21wKHYxLmZvcm1hdCwgdjIuZm9ybWF0KSB8fAorICAgICAgICAhIXYxLnNoYXBlICE9ICEhdjIuc2hhcGUgfHwKKyAgICAgICAgISF2MS5zdHJpZGVzICE9ICEhdjIuc3RyaWRlcyB8fAorICAgICAgICAhIXYxLnN1Ym9mZnNldHMgIT0gISF2Mi5zdWJvZmZzZXRzKSB7CisgICAgICAgIGdvdG8gcmVzdWx0OworICAgIH0KKworICAgIGlmICgodjEuc2hhcGUgJiYgIWFycmF5Y21wKHYxLnNoYXBlLCB2Mi5zaGFwZSwgTlVMTCwgdjEubmRpbSkpIHx8CisgICAgICAgICh2MS5zdHJpZGVzICYmICFhcnJheWNtcCh2MS5zdHJpZGVzLCB2Mi5zdHJpZGVzLCB2MS5zaGFwZSwgdjEubmRpbSkpIHx8CisgICAgICAgICh2MS5zdWJvZmZzZXRzICYmICFhcnJheWNtcCh2MS5zdWJvZmZzZXRzLCB2Mi5zdWJvZmZzZXRzLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEubmRpbSkpKSB7CisgICAgICAgIGdvdG8gcmVzdWx0OworICAgIH0KKworICAgIGlmIChtZW1jbXAoKGNoYXIgKil2MS5idWYsIChjaGFyICopdjIuYnVmLCB2MS5sZW4pICE9IDApIHsKKyAgICAgICAgZ290byByZXN1bHQ7CisgICAgfQorCisgICAgZXF1YWwgPSAxOworCityZXN1bHQ6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdjEpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnYyKTsKKworICAgIHJldCA9IGVxdWFsID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOyAKKyAgICBQeV9JTkNSRUYocmV0KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraXNfY29udGlndW91cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeU9iamVjdCAqb3JkZXI7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CisgICAgUHlfYnVmZmVyIHZpZXc7CisgICAgY2hhciBvcmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJm9iaiwgJm9yZGVyKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImlzX2NvbnRpZ3VvdXM6IG9iamVjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciAiCisgICAgICAgICAgICAicHJvdG9jb2wiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3JkID0gZ2V0X2FzY2lpX29yZGVyKG9yZGVyKTsKKyAgICBpZiAob3JkID09IENIQVJfTUFYKSB7CisgICAgICAgIGdvdG8gcmVsZWFzZTsKKyAgICB9CisKKyAgICByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJnZpZXcsIG9yZCkgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgUHlfSU5DUkVGKHJldCk7CisKK3JlbGVhc2U6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5X2hhc2hfdAorbmRhcnJheV9oYXNoKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGNvbnN0IE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGNvbnN0IFB5X2J1ZmZlciAqdmlldyA9ICZuZC0+aGVhZC0+YmFzZTsKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlfaGFzaF90IGhhc2g7CisKKyAgICBpZiAoIXZpZXctPnJlYWRvbmx5KSB7CisgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAiY2Fubm90IGhhc2ggd3JpdGFibGUgbmRhcnJheSBvYmplY3QiKTsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZpZXctPm9iaiAhPSBOVUxMICYmIFB5T2JqZWN0X0hhc2godmlldy0+b2JqKSA9PSAtMSkgeworICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGJ5dGVzID0gbmRhcnJheV90b2J5dGVzKHNlbGYsIE5VTEwpOworICAgIGlmIChieXRlcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBoYXNoID0gUHlPYmplY3RfSGFzaChieXRlcyk7CisgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICByZXR1cm4gaGFzaDsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgbmRhcnJheV9tZXRob2RzIFtdID0KK3sKKyAgICB7ICJ0b2xpc3QiLCBuZGFycmF5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7ICJ0b2J5dGVzIiwgbmRhcnJheV90b2J5dGVzLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICAgIHsgInB1c2giLCAoUHlDRnVuY3Rpb24pbmRhcnJheV9wdXNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgTlVMTCB9LAorICAgIHsgInBvcCIsIG5kYXJyYXlfcG9wLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICAgIHsgImFkZF9zdWJvZmZzZXRzIiwgbmRhcnJheV9hZGRfc3Vib2Zmc2V0cywgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7ICJtZW1vcnl2aWV3X2Zyb21fYnVmZmVyIiwgbmRhcnJheV9tZW1vcnl2aWV3X2Zyb21fYnVmZmVyLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBOREFycmF5X1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIm5kYXJyYXkiLCAgICAgICAgICAgICAgICAgICAvKiBOYW1lIG9mIHRoaXMgdHlwZSAqLworICAgIHNpemVvZihOREFycmF5T2JqZWN0KSwgICAgICAgLyogQmFzaWMgb2JqZWN0IHNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEl0ZW0gc2l6ZSBmb3IgdmFyb2JqZWN0ICovCisgICAgKGRlc3RydWN0b3IpbmRhcnJheV9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgJm5kYXJyYXlfYXNfc2VxdWVuY2UsICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgICZuZGFycmF5X2FzX21hcHBpbmcsICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIChoYXNoZnVuYyluZGFycmF5X2hhc2gsICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAmbmRhcnJheV9hc19idWZmZXIsICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgbmRhcnJheV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgbmRhcnJheV9nZXRzZXQsICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgbmRhcnJheV9pbml0LCAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIG5kYXJyYXlfbmV3LCAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljQXJyYXkgT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgU3RhdGljQXJyYXlfVHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBpbnQgbGVnYWN5X21vZGU7IC8qIGlmIHRydWUsIHVzZSB0aGUgdmlldy5vYmo9PU5VTEwgaGFjayAqLworfSBTdGF0aWNBcnJheU9iamVjdDsKKworc3RhdGljIGNoYXIgc3RhdGljX21lbVsxMl0gPSB7MCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMX07CitzdGF0aWMgUHlfc3NpemVfdCBzdGF0aWNfc2hhcGVbMV0gPSB7MTJ9Oworc3RhdGljIFB5X3NzaXplX3Qgc3RhdGljX3N0cmlkZXNbMV0gPSB7MX07CitzdGF0aWMgUHlfYnVmZmVyIHN0YXRpY19idWZmZXIgPSB7CisgICAgc3RhdGljX21lbSwgICAgIC8qIGJ1ZiAqLworICAgIE5VTEwsICAgICAgICAgICAvKiBvYmogKi8KKyAgICAxMiwgICAgICAgICAgICAgLyogbGVuICovCisgICAgMSwgICAgICAgICAgICAgIC8qIGl0ZW1zaXplICovCisgICAgMSwgICAgICAgICAgICAgIC8qIHJlYWRvbmx5ICovCisgICAgMSwgICAgICAgICAgICAgIC8qIG5kaW0gKi8KKyAgICAiQiIsICAgICAgICAgICAgLyogZm9ybWF0ICovCisgICAgc3RhdGljX3NoYXBlLCAgIC8qIHNoYXBlICovCisgICAgc3RhdGljX3N0cmlkZXMsIC8qIHN0cmlkZXMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgLyogc3Vib2Zmc2V0cyAqLworICAgIE5VTEwgICAgICAgICAgICAvKiBpbnRlcm5hbCAqLworfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3N0YXRpY2FycmF5X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlPYmplY3RfTmV3KFN0YXRpY0FycmF5T2JqZWN0LCAmU3RhdGljQXJyYXlfVHlwZSk7Cit9CisKK3N0YXRpYyBpbnQKK3N0YXRpY2FycmF5X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBTdGF0aWNBcnJheU9iamVjdCAqYSA9IChTdGF0aWNBcnJheU9iamVjdCAqKXNlbGY7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geworICAgICAgICAibGVnYWN5X21vZGUiLCBOVUxMCisgICAgfTsKKyAgICBQeU9iamVjdCAqbGVnYWN5X21vZGUgPSBQeV9GYWxzZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TyIsIGt3bGlzdCwgJmxlZ2FjeV9tb2RlKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgYS0+bGVnYWN5X21vZGUgPSAobGVnYWN5X21vZGUgIT0gUHlfRmFsc2UpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorc3RhdGljYXJyYXlfZGVhbGxvYyhTdGF0aWNBcnJheU9iamVjdCAqc2VsZikKK3sKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKKy8qIFJldHVybiBhIGJ1ZmZlciBmb3IgYSBQeUJVRl9GVUxMX1JPIHJlcXVlc3QuIEZsYWdzIGFyZSBub3QgY2hlY2tlZCwKKyAgIHdoaWNoIG1ha2VzIHRoaXMgb2JqZWN0IGEgbm9uLWNvbXBsaWFudCBleHBvcnRlciEgKi8KK3N0YXRpYyBpbnQKK3N0YXRpY2FycmF5X2dldGJ1ZihTdGF0aWNBcnJheU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCit7CisgICAgKnZpZXcgPSBzdGF0aWNfYnVmZmVyOworCisgICAgaWYgKHNlbGYtPmxlZ2FjeV9tb2RlKSB7CisgICAgICAgIHZpZXctPm9iaiA9IE5VTEw7IC8qIERvbid0IHVzZSB0aGlzIGluIG5ldyBjb2RlLiAqLworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmlldy0+b2JqID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgUHlfSU5DUkVGKHZpZXctPm9iaik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeUJ1ZmZlclByb2NzIHN0YXRpY2FycmF5X2FzX2J1ZmZlciA9IHsKKyAgICAoZ2V0YnVmZmVycHJvYylzdGF0aWNhcnJheV9nZXRidWYsIC8qIGJmX2dldGJ1ZmZlciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYmZfcmVsZWFzZWJ1ZmZlciAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBTdGF0aWNBcnJheV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJzdGF0aWNhcnJheSIsICAgICAgICAgICAgICAgICAgIC8qIE5hbWUgb2YgdGhpcyB0eXBlICovCisgICAgc2l6ZW9mKFN0YXRpY0FycmF5T2JqZWN0KSwgICAgICAgLyogQmFzaWMgb2JqZWN0IHNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJdGVtIHNpemUgZm9yIHZhcm9iamVjdCAqLworICAgIChkZXN0cnVjdG9yKXN0YXRpY2FycmF5X2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAmc3RhdGljYXJyYXlfYXNfYnVmZmVyLCAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBzdGF0aWNhcnJheV9pbml0LCAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBzdGF0aWNhcnJheV9uZXcsICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBfdGVzdGJ1ZmZlcl9mdW5jdGlvbnNbXSA9IHsKKyAgICB7InNsaWNlX2luZGljZXMiLCBzbGljZV9pbmRpY2VzLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsiZ2V0X3BvaW50ZXIiLCBnZXRfcG9pbnRlciwgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7ImdldF9zaXplb2Zfdm9pZF9wIiwgKFB5Q0Z1bmN0aW9uKWdldF9zaXplb2Zfdm9pZF9wLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgeyJnZXRfY29udGlndW91cyIsIGdldF9jb250aWd1b3VzLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsicHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMiLCBweV9idWZmZXJfdG9fY29udGlndW91cywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7ImlzX2NvbnRpZ3VvdXMiLCBpc19jb250aWd1b3VzLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsiY21wX2NvbnRpZyIsIGNtcF9jb250aWcsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF90ZXN0YnVmZmVybW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX3Rlc3RidWZmZXIiLAorICAgIE5VTEwsCisgICAgLTEsCisgICAgX3Rlc3RidWZmZXJfZnVuY3Rpb25zLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdGJ1ZmZlcih2b2lkKQoreworICAgIFB5T2JqZWN0ICptOworCisgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX3Rlc3RidWZmZXJtb2R1bGUpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfVFlQRSgmTkRBcnJheV9UeXBlKSA9ICZQeVR5cGVfVHlwZTsKKyAgICBQeV9JTkNSRUYoJk5EQXJyYXlfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJuZGFycmF5IiwgKFB5T2JqZWN0ICopJk5EQXJyYXlfVHlwZSk7CisKKyAgICBQeV9UWVBFKCZTdGF0aWNBcnJheV9UeXBlKSA9ICZQeVR5cGVfVHlwZTsKKyAgICBQeV9JTkNSRUYoJlN0YXRpY0FycmF5X1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RhdGljYXJyYXkiLCAoUHlPYmplY3QgKikmU3RhdGljQXJyYXlfVHlwZSk7CisKKyAgICBzdHJ1Y3Rtb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInN0cnVjdCIpOworICAgIGlmIChzdHJ1Y3Rtb2R1bGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBTdHJ1Y3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG1vZHVsZSwgIlN0cnVjdCIpOworICAgIGNhbGNzaXplID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3Rtb2R1bGUsICJjYWxjc2l6ZSIpOworICAgIGlmIChTdHJ1Y3QgPT0gTlVMTCB8fCBjYWxjc2l6ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHNpbXBsZV9mb3JtYXQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzaW1wbGVfZm10KTsKKyAgICBpZiAoc2ltcGxlX2Zvcm1hdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9NQVhfTkRJTSIsIE5EX01BWF9ORElNKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfVkFSRVhQT1JUIiwgTkRfVkFSRVhQT1JUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfV1JJVEFCTEUiLCBORF9XUklUQUJMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX0ZPUlRSQU4iLCBORF9GT1JUUkFOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfU0NBTEFSIiwgTkRfU0NBTEFSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfUElMIiwgTkRfUElMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfR0VUQlVGX0ZBSUwiLCBORF9HRVRCVUZfRkFJTCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX0dFVEJVRl9VTkRFRklORUQiLCBORF9HRVRCVUZfVU5ERUZJTkVEKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfUkVESVJFQ1QiLCBORF9SRURJUkVDVCk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfU0lNUExFIiwgUHlCVUZfU0lNUExFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfV1JJVEFCTEUiLCBQeUJVRl9XUklUQUJMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0ZPUk1BVCIsIFB5QlVGX0ZPUk1BVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX05EIiwgUHlCVUZfTkQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9TVFJJREVTIiwgUHlCVUZfU1RSSURFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0lORElSRUNUIiwgUHlCVUZfSU5ESVJFQ1QpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9DX0NPTlRJR1VPVVMiLCBQeUJVRl9DX0NPTlRJR1VPVVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9GX0NPTlRJR1VPVVMiLCBQeUJVRl9GX0NPTlRJR1VPVVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9BTllfQ09OVElHVU9VUyIsIFB5QlVGX0FOWV9DT05USUdVT1VTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfRlVMTCIsIFB5QlVGX0ZVTEwpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9GVUxMX1JPIiwgUHlCVUZfRlVMTF9STyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1JFQ09SRFMiLCBQeUJVRl9SRUNPUkRTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfUkVDT1JEU19STyIsIFB5QlVGX1JFQ09SRFNfUk8pOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9TVFJJREVEIiwgUHlCVUZfU1RSSURFRCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1NUUklERURfUk8iLCBQeUJVRl9TVFJJREVEX1JPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQ09OVElHIiwgUHlCVUZfQ09OVElHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQ09OVElHX1JPIiwgUHlCVUZfQ09OVElHX1JPKTsKKworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9SRUFEIiwgUHlCVUZfUkVBRCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1dSSVRFIiwgUHlCVUZfV1JJVEUpOworCisgICAgcmV0dXJuIG07Cit9CisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jIGIvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwppbmRleCA5NGI2ZTY3Li5jZTU4NjUxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKQEAgLTIyLDE0ICsyMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmFpc2VUZXN0RXJyb3IoY29uc3QgY2hhciogdGVzdF9uYW1lLCBjb25zdCBjaGFyKiBtc2cpCiB7Ci0gICAgY2hhciBidWZbMjA0OF07Ci0KLSAgICBpZiAoc3RybGVuKHRlc3RfbmFtZSkgKyBzdHJsZW4obXNnKSA+IHNpemVvZihidWYpIC0gNTApCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhUZXN0RXJyb3IsICJpbnRlcm5hbCBlcnJvciBtc2cgdG9vIGxhcmdlIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVzOiAlcyIsIHRlc3RfbmFtZSwgbXNnKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFRlc3RFcnJvciwgYnVmKTsKLSAgICB9CisgICAgUHlFcnJfRm9ybWF0KFRlc3RFcnJvciwgIiVzOiAlcyIsIHRlc3RfbmFtZSwgbXNnKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNDMsMTEgKzM2LDkgQEAKIHNpemVvZl9lcnJvcihjb25zdCBjaGFyKiBmYXRuYW1lLCBjb25zdCBjaGFyKiB0eXBuYW1lLAogICAgIGludCBleHBlY3RlZCwgaW50IGdvdCkKIHsKLSAgICBjaGFyIGJ1ZlsxMDI0XTsKLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICIlLjIwMHMgI2RlZmluZSA9PSAlZCBidXQgc2l6ZW9mKCUuMjAwcykgPT0gJWQiLAorICAgIFB5RXJyX0Zvcm1hdChUZXN0RXJyb3IsCisgICAgICAgICIlcyAjZGVmaW5lID09ICVkIGJ1dCBzaXplb2YoJXMpID09ICVkIiwKICAgICAgICAgZmF0bmFtZSwgZXhwZWN0ZWQsIHR5cG5hbWUsIGdvdCk7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFRlc3RFcnJvciwgYnVmKTsKICAgICByZXR1cm4gKFB5T2JqZWN0KilOVUxMOwogfQogCkBAIC0yODQsOTUgKzI3NSw2IEBACiB9CiAKIAotLyogSXNzdWUgIzczODU6IENoZWNrIHRoYXQgbWVtb3J5dmlldygpIGRvZXMgbm90IGNyYXNoCi0gKiAgIHdoZW4gYmZfZ2V0YnVmZmVyIHJldHVybnMgYW4gZXJyb3IKLSAqLwotCi1zdGF0aWMgaW50Ci1icm9rZW5fYnVmZmVyX2dldGJ1ZmZlcihQeU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCi17Ci0gICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICBUZXN0RXJyb3IsCi0gICAgICAgICJ0ZXN0X2Jyb2tlbl9tZW1vcnl2aWV3OiBleHBlY3RlZCBlcnJvciBpbiBiZl9nZXRidWZmZXIiKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyBQeUJ1ZmZlclByb2NzIG1lbW9yeXZpZXd0ZXN0ZXJfYXNfYnVmZmVyID0gewotICAgIChnZXRidWZmZXJwcm9jKWJyb2tlbl9idWZmZXJfZ2V0YnVmZmVyLCAgICAgLyogYmZfZ2V0YnVmZmVyICovCi0gICAgMCwgICAgICAgICAgLyogYmZfcmVsZWFzZWJ1ZmZlciAqLwotfTsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBfTWVtb3J5Vmlld1Rlc3Rlcl9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJtZW1vcnl2aWV3dGVzdGVyIiwgICAgICAgICAvKiBOYW1lIG9mIHRoaXMgdHlwZSAqLwotICAgIHNpemVvZihQeU9iamVjdCksICAgICAgICAgICAvKiBCYXNpYyBvYmplY3Qgc2l6ZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJdGVtIHNpemUgZm9yIHZhcm9iamVjdCAqLwotICAgIChkZXN0cnVjdG9yKVB5T2JqZWN0X0RlbCwgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCi0gICAgJm1lbW9yeXZpZXd0ZXN0ZXJfYXNfYnVmZmVyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotfTsKLQotc3RhdGljIFB5T2JqZWN0KgotdGVzdF9icm9rZW5fbWVtb3J5dmlldyhQeU9iamVjdCogc2VsZikKLXsKLSAgICBQeU9iamVjdCAqb2JqID0gUHlPYmplY3RfTmV3KFB5T2JqZWN0LCAmX01lbW9yeVZpZXdUZXN0ZXJfVHlwZSk7Ci0gICAgUHlPYmplY3QgKnJlczsKLQotICAgIGlmIChvYmogPT0gTlVMTCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBUZXN0RXJyb3IsCi0gICAgICAgICAgICAidGVzdF9icm9rZW5fbWVtb3J5dmlldzogZmFpbGVkIHRvIGNyZWF0ZSBvYmplY3QiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmVzID0gUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Qob2JqKTsKLSAgICBpZiAocmVzIHx8ICFQeUVycl9PY2N1cnJlZCgpKXsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgVGVzdEVycm9yLAotICAgICAgICAgICAgInRlc3RfYnJva2VuX21lbW9yeXZpZXc6IG1lbW9yeXZpZXcoKSBkaWRuJ3QgcmFpc2UgYW4gRXhjZXB0aW9uIik7Ci0gICAgICAgIFB5X1hERUNSRUYocmVzKTsKLSAgICAgICAgUHlfREVDUkVGKG9iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgUHlfREVDUkVGKG9iaik7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLQogLyogVGVzdHMgb2YgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmcoKSwgYW5kICgjaWZkZWYgSEFWRV9MT05HX0xPTkcpCiAgICBQeUxvbmdfe0FzLCBGcm9tfXtVbnNpZ25lZCx9TG9uZ0xvbmcoKS4KIApAQCAtNzc4LDYgKzY4MCw2OCBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCisvKiBUZXN0IHRoZSBQeUxvbmdfQXN7U2l6ZSxTc2l6ZX1fdCBBUEkuIEF0IHByZXNlbnQgdGhpcyBqdXN0IHRlc3RzIHRoYXQKKyAgIG5vbi1pbnRlZ2VyIGFyZ3VtZW50cyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuIEl0IHNob3VsZCBiZSBleHRlbmRlZCB0bworICAgdGVzdCBvdmVyZmxvdyBoYW5kbGluZy4KKyAqLworCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9sb25nX2FzX3NpemVfdChQeU9iamVjdCAqc2VsZikKK3sKKyAgICBzaXplX3Qgb3V0X3U7CisgICAgUHlfc3NpemVfdCBvdXRfczsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworICAgIG91dF91ID0gUHlMb25nX0FzU2l6ZV90KFB5X05vbmUpOworICAgIGlmIChvdXRfdSAhPSAoc2l6ZV90KS0xIHx8ICFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfbG9uZ19hc19zaXplX3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5TG9uZ19Bc1NpemVfdChOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNTaXplX3QoTm9uZSkgcmFpc2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21ldGhpbmcgb3RoZXIgdGhhbiBUeXBlRXJyb3IiKTsKKyAgICBQeUVycl9DbGVhcigpOworCisgICAgb3V0X3MgPSBQeUxvbmdfQXNTc2l6ZV90KFB5X05vbmUpOworICAgIGlmIChvdXRfcyAhPSAoUHlfc3NpemVfdCktMSB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNTc2l6ZV90KE5vbmUpIGRpZG4ndCBjb21wbGFpbiIpOworICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfbG9uZ19hc19zaXplX3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5TG9uZ19Bc1NzaXplX3QoTm9uZSkgcmFpc2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21ldGhpbmcgb3RoZXIgdGhhbiBUeXBlRXJyb3IiKTsKKyAgICBQeUVycl9DbGVhcigpOworCisgICAgLyogUHlfSU5DUkVGKFB5X05vbmUpIG9taXR0ZWQgLSB3ZSBhbHJlYWR5IGhhdmUgYSByZWZlcmVuY2UgdG8gaXQuICovCisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKKy8qIFRlc3QgdGhlIFB5TG9uZ19Bc0RvdWJsZSBBUEkuIEF0IHByZXNlbnQgdGhpcyBqdXN0IHRlc3RzIHRoYXQKKyAgIG5vbi1pbnRlZ2VyIGFyZ3VtZW50cyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCisgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfbG9uZ19hc19kb3VibGUoUHlPYmplY3QgKnNlbGYpCit7CisgICAgZG91YmxlIG91dDsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworICAgIG91dCA9IFB5TG9uZ19Bc0RvdWJsZShQeV9Ob25lKTsKKyAgICBpZiAob3V0ICE9IC0xLjAgfHwgIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9sb25nX2FzX2RvdWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlMb25nX0FzRG91YmxlKE5vbmUpIGRpZG4ndCBjb21wbGFpbiIpOworICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfbG9uZ19hc19kb3VibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5TG9uZ19Bc0RvdWJsZShOb25lKSByYWlzZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWV0aGluZyBvdGhlciB0aGFuIFR5cGVFcnJvciIpOworICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICAvKiBQeV9JTkNSRUYoUHlfTm9uZSkgb21pdHRlZCAtIHdlIGFscmVhZHkgaGF2ZSBhIHJlZmVyZW5jZSB0byBpdC4gKi8KKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKwogLyogVGVzdCB0aGUgTCBjb2RlIGZvciBQeUFyZ19QYXJzZVR1cGxlLiAgVGhpcyBzaG91bGQgZGVsaXZlciBhIFBZX0xPTkdfTE9ORwogICAgZm9yIGJvdGggbG9uZyBhbmQgaW50IGFyZ3VtZW50cy4gIFRoZSB0ZXN0IG1heSBsZWFrIGEgbGl0dGxlIG1lbW9yeSBpZgogICAgaXQgZmFpbHMuCkBAIC04MzcsNyArODAxLDggQEAKIH0KIAogLyogdGVzdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgKi8KLXN0YXRpYyBQeU9iamVjdCAqZ2V0YXJnc19rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXJnc19rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImFyZzEiLCJhcmcyIiwiYXJnMyIsImFyZzQiLCJhcmc1IiwgTlVMTH07CiAgICAgc3RhdGljIGNoYXIgKmZtdD0iKGlpKWl8KGkoaWkpKShpaWkpaSI7CkBAIC04NTIsNiArODE3LDIxIEBACiAgICAgICAgIGludF9hcmdzWzVdLCBpbnRfYXJnc1s2XSwgaW50X2FyZ3NbN10sIGludF9hcmdzWzhdLCBpbnRfYXJnc1s5XSk7CiB9CiAKKy8qIHRlc3QgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzIGtleXdvcmQtb25seSBhcmd1bWVudHMgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitnZXRhcmdzX2tleXdvcmRfb25seShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InJlcXVpcmVkIiwgIm9wdGlvbmFsIiwgImtleXdvcmRfb25seSIsIE5VTEx9OworICAgIGludCByZXF1aXJlZCA9IC0xOworICAgIGludCBvcHRpb25hbCA9IC0xOworICAgIGludCBrZXl3b3JkX29ubHkgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIml8aSRpIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcXVpcmVkLCAmb3B0aW9uYWwsICZrZXl3b3JkX29ubHkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaWlpIiwgcmVxdWlyZWQsIG9wdGlvbmFsLCBrZXl3b3JkX29ubHkpOworfQorCiAvKiBGdW5jdGlvbnMgdG8gY2FsbCBQeUFyZ19QYXJzZVR1cGxlIHdpdGggaW50ZWdlciBmb3JtYXQgY29kZXMsCiAgICBhbmQgcmV0dXJuIHRoZSByZXN1bHQuCiAqLwpAQCAtOTM2LDYgKzkxNiwxNSBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QodmFsdWUpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXJnc19wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgdmFsdWU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJwIiwgJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7Cit9CisKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogc3RhdGljIFB5T2JqZWN0ICoKIGdldGFyZ3NfTChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0xMDEyLDYgKzEwMDEsMTUgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3NfYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciBjOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiYyIsICZjKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoJmMsIDEpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZ2V0YXJnc19zKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBjaGFyICpzdHI7CkBAIC0xMTk3LDUxICsxMTk1LDczIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXN0X2J1Z183NDE0KFB5T2JqZWN0ICpzZWxmKQorcGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICAvKiBJc3N1ZSAjNzQxNDogZm9yIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcywgJ0MnIGNvZGUgd2Fzbid0IGJlaW5nCi0gICAgICAgc2tpcHBlZCBwcm9wZXJseSBpbiBza2lwaXRlbSgpICovCi0gICAgaW50IGEgPSAwLCBiID0gMCwgcmVzdWx0OwotICAgIGNoYXIgKmt3bGlzdFtdID0geyJhIiwgImIiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqdHVwbGUgPSBOVUxMLCAqZGljdCA9IE5VTEwsICpiX3N0cjsKKyAgICBQeU9iamVjdCAqc3ViX2FyZ3M7CisgICAgUHlPYmplY3QgKnN1Yl9rd2FyZ3M7CisgICAgY2hhciAqc3ViX2Zvcm1hdDsKKyAgICBQeU9iamVjdCAqc3ViX2tleXdvcmRzOwogCi0gICAgdHVwbGUgPSBQeVR1cGxlX05ldygwKTsKLSAgICBpZiAodHVwbGUgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsdXJlOwotICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKGRpY3QgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsdXJlOwotICAgIGJfc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImIiKTsKLSAgICBpZiAoYl9zdHIgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsdXJlOwotICAgIHJlc3VsdCA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJiIiwgYl9zdHIpOwotICAgIFB5X0RFQ1JFRihiX3N0cik7Ci0gICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgY2hhciAqa2V5d29yZHNbOCArIDFdOyAvKiBzcGFjZSBmb3IgTlVMTCBhdCBlbmQgKi8KKyAgICBQeU9iamVjdCAqbzsKKyAgICBQeU9iamVjdCAqY29udmVydGVkWzhdOwogCi0gICAgcmVzdWx0ID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKHR1cGxlLCBkaWN0LCAifENDIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmYSwgJmIpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBnb3RvIGZhaWx1cmU7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKIAotICAgIGlmIChhICE9IDApCi0gICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9idWdfNzQxNCIsCi0gICAgICAgICAgICAiQyBmb3JtYXQgY29kZSBub3Qgc2tpcHBlZCBwcm9wZXJseSIpOwotICAgIGlmIChiICE9ICdiJykKLSAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2J1Z183NDE0IiwKLSAgICAgICAgICAgICJDIGZvcm1hdCBjb2RlIHJldHVybmVkIHdyb25nIHZhbHVlIik7CisgICAgZG91YmxlIGJ1ZmZlcnNbOF1bNF07IC8qIGRvdWJsZSBlbnN1cmVzIGFsaWdubWVudCB3aGVyZSBuZWNlc3NhcnkgKi8KIAotICAgIFB5X0RFQ1JFRihkaWN0KTsKLSAgICBQeV9ERUNSRUYodHVwbGUpOwotICAgIFB5X1JFVFVSTl9OT05FOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT095TzpwYXJzZV90dXBsZV9hbmRfa2V5d29yZHMiLAorICAgICAgICAmc3ViX2FyZ3MsICZzdWJfa3dhcmdzLAorICAgICAgICAmc3ViX2Zvcm1hdCwgJnN1Yl9rZXl3b3JkcykpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gIGZhaWx1cmU6Ci0gICAgUHlfWERFQ1JFRihkaWN0KTsKLSAgICBQeV9YREVDUkVGKHR1cGxlKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIShQeUxpc3RfQ2hlY2tFeGFjdChzdWJfa2V5d29yZHMpIHx8IFB5VHVwbGVfQ2hlY2tFeGFjdChzdWJfa2V5d29yZHMpKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJwYXJzZV90dXBsZV9hbmRfa2V5d29yZHM6IHN1Yl9rZXl3b3JkcyBtdXN0IGJlIGVpdGhlciBsaXN0IG9yIHR1cGxlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbXNldChidWZmZXJzLCAwLCBzaXplb2YoYnVmZmVycykpOworICAgIG1lbXNldChjb252ZXJ0ZWQsIDAsIHNpemVvZihjb252ZXJ0ZWQpKTsKKyAgICBtZW1zZXQoa2V5d29yZHMsIDAsIHNpemVvZihrZXl3b3JkcykpOworCisgICAgc2l6ZSA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzdWJfa2V5d29yZHMpOworICAgIGlmIChzaXplID4gOCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJwYXJzZV90dXBsZV9hbmRfa2V5d29yZHM6IHRvbyBtYW55IGtleXdvcmRzIGluIHN1Yl9rZXl3b3JkcyIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBvID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKHN1Yl9rZXl3b3JkcywgaSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG8sICh2b2lkICopKGNvbnZlcnRlZCArIGkpKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgInBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkczogY291bGQgbm90IGNvbnZlcnQga2V5d29yZHNbJXNdIHRvIG5hcnJvdyBzdHJpbmciLCBpKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBrZXl3b3Jkc1tpXSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGNvbnZlcnRlZFtpXSk7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKHN1Yl9hcmdzLCBzdWJfa3dhcmdzLAorICAgICAgICBzdWJfZm9ybWF0LCBrZXl3b3JkcywKKyAgICAgICAgYnVmZmVycyArIDAsIGJ1ZmZlcnMgKyAxLCBidWZmZXJzICsgMiwgYnVmZmVycyArIDMsCisgICAgICAgIGJ1ZmZlcnMgKyA0LCBidWZmZXJzICsgNSwgYnVmZmVycyArIDYsIGJ1ZmZlcnMgKyA3KTsKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIH0KKworZXhpdDoKKyAgICBzaXplID0gc2l6ZW9mKGNvbnZlcnRlZCkgLyBzaXplb2YoY29udmVydGVkWzBdKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5X1hERUNSRUYoY29udmVydGVkW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotCiBzdGF0aWMgdm9sYXRpbGUgaW50IHg7CiAKIC8qIFRlc3QgdGhlIHUgYW5kIHUjIGNvZGVzIGZvciBQeUFyZ19QYXJzZVR1cGxlLiBNYXkgbGVhayBtZW1vcnkgaW4gY2FzZQpAQCAtMTI5Myw3ICsxMzEzLDcgQEAKIHRlc3RfWl9jb2RlKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp0dXBsZSwgKm9iajsKLSAgICBQeV9VTklDT0RFICp2YWx1ZTEsICp2YWx1ZTI7CisgICAgY29uc3QgUHlfVU5JQ09ERSAqdmFsdWUxLCAqdmFsdWUyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAogICAgIHR1cGxlID0gUHlUdXBsZV9OZXcoMik7CkBAIC0xMzQ3LDYgKzEzNjcsNyBAQAogI2lmIGRlZmluZWQoU0laRU9GX1dDSEFSX1QpICYmIChTSVpFT0ZfV0NIQVJfVCA9PSA0KQogICAgIGNvbnN0IHdjaGFyX3Qgd3RleHRbMl0gPSB7KHdjaGFyX3QpMHgxMEFCQ0R1fTsKICAgICBzaXplX3Qgd3RleHRsZW4gPSAxOworICAgIGNvbnN0IHdjaGFyX3QgaW52YWxpZFsxXSA9IHsod2NoYXJfdCkweDExMDAwMHV9OwogI2Vsc2UKICAgICBjb25zdCB3Y2hhcl90IHd0ZXh0WzNdID0geyh3Y2hhcl90KTB4REJFQXUsICh3Y2hhcl90KTB4REZDRHV9OwogICAgIHNpemVfdCB3dGV4dGxlbiA9IDI7CkBAIC0xMzYzLDcgKzEzODQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHdpZGUpICE9IFB5VW5pY29kZV9HRVRfU0laRSh1dGY4KSkgeworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh3aWRlKSAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1dGY4KSkgewogICAgICAgICBQeV9ERUNSRUYod2lkZSk7CiAgICAgICAgIFB5X0RFQ1JFRih1dGY4KTsKICAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X3dpZGVjaGFyIiwKQEAgLTEzODIsNiArMTQwMywyMyBAQAogCiAgICAgUHlfREVDUkVGKHdpZGUpOwogICAgIFB5X0RFQ1JFRih1dGY4KTsKKworI2lmIGRlZmluZWQoU0laRU9GX1dDSEFSX1QpICYmIChTSVpFT0ZfV0NIQVJfVCA9PSA0KQorICAgIHdpZGUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGludmFsaWQsIDEpOworICAgIGlmICh3aWRlID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfd2lkZWNoYXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoTFwiXFxVMDAxMTAwMDBcIiwgMSkgZGlkbid0IGZhaWwiKTsKKworICAgIHdpZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoaW52YWxpZCwgMSk7CisgICAgaWYgKHdpZGUgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF93aWRlY2hhciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0Zyb21Vbmljb2RlKExcIlxcVTAwMTEwMDAwXCIsIDEpIGRpZG4ndCBmYWlsIik7CisjZW5kaWYKKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0xNTc2LDcgKzE2MTQsNyBAQAogICAgICAgICAgICAgIHstMHhmZmZmZmZmTCwgMjgsIC0xfX07CiAgICAgaW50IGk7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRlc3RjYXNlcykgLyBzaXplb2Yoc3RydWN0IHRyaXBsZSk7ICsraSkgeworICAgIGZvciAoaSA9IDA7IGkgPCBQeV9BUlJBWV9MRU5HVEgodGVzdGNhc2VzKTsgKytpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpwbG9uZyA9IFB5TG9uZ19Gcm9tTG9uZyh0ZXN0Y2FzZXNbaV0uaW5wdXQpOwogICAgICAgICBzaXplX3QgbmJpdHMgPSBfUHlMb25nX051bUJpdHMocGxvbmcpOwogICAgICAgICBpbnQgc2lnbiA9IF9QeUxvbmdfU2lnbihwbG9uZyk7CkBAIC0xNjMyLDYgKzE2NzAsMjkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3Rfc2V0X2V4Y19pbmZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb3JpZ19leGM7CisgICAgUHlPYmplY3QgKm5ld190eXBlLCAqbmV3X3ZhbHVlLCAqbmV3X3RiOworICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0YjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PTzp0ZXN0X3NldF9leGNfaW5mbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdHlwZSwgJm5ld192YWx1ZSwgJm5ld190YikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlFcnJfR2V0RXhjSW5mbygmdHlwZSwgJnZhbHVlLCAmdGIpOworCisgICAgUHlfSU5DUkVGKG5ld190eXBlKTsKKyAgICBQeV9JTkNSRUYobmV3X3ZhbHVlKTsKKyAgICBQeV9JTkNSRUYobmV3X3RiKTsKKyAgICBQeUVycl9TZXRFeGNJbmZvKG5ld190eXBlLCBuZXdfdmFsdWUsIG5ld190Yik7CisKKyAgICBvcmlnX2V4YyA9IFB5VHVwbGVfUGFjaygzLCB0eXBlID8gdHlwZSA6IFB5X05vbmUsIHZhbHVlID8gdmFsdWUgOiBQeV9Ob25lLCB0YiA/IHRiIDogUHlfTm9uZSk7CisgICAgUHlfWERFQ1JFRih0eXBlKTsKKyAgICBQeV9YREVDUkVGKHZhbHVlKTsKKyAgICBQeV9YREVDUkVGKHRiKTsKKyAgICByZXR1cm4gb3JpZ19leGM7Cit9CiAKIHN0YXRpYyBpbnQgdGVzdF9ydW5fY291bnRlciA9IDA7CiAKQEAgLTE3ODYsMTMgKzE4NDcsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGNoYXIgKm1zZzsKLSAgICBzdGF0aWMgY29uc3QgUHlfVU5JQ09ERSBvbmVbXSA9IHsnMScsIDB9OwogCiAjZGVmaW5lIENIRUNLXzFfRk9STUFUKEZPUk1BVCwgVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChGT1JNQVQsIChUWVBFKTEpOyAgICAgICAgICAgICAgICAgXAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoUHlfVU5JQ09ERV9zdHJjbXAoUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KSwgb25lKSkgeyAgICAgXAorICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhyZXN1bHQsICIxIikpIHsgICAgIFwKICAgICAgICAgbXNnID0gRk9STUFUICIgZmFpbGVkIGF0IDEiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBnb3RvIEZhaWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTIzMTcsNiArMjM3NywxNCBAQAogICAgIFB5VGhyZWFkU3RhdGVfU3dhcChOVUxMKTsKIAogICAgIHN1YnN0YXRlID0gUHlfTmV3SW50ZXJwcmV0ZXIoKTsKKyAgICBpZiAoc3Vic3RhdGUgPT0gTlVMTCkgeworICAgICAgICAvKiBTaW5jZSBubyBuZXcgdGhyZWFkIHN0YXRlIHdhcyBjcmVhdGVkLCB0aGVyZSBpcyBubyBleGNlcHRpb24gdG8KKyAgICAgICAgICAgcHJvcGFnYXRlOyByYWlzZSBhIGZyZXNoIG9uZSBhZnRlciBzd2FwcGluZyBpbiB0aGUgb2xkIHRocmVhZAorICAgICAgICAgICBzdGF0ZS4gKi8KKyAgICAgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKG1haW5zdGF0ZSk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJzdWItaW50ZXJwcmV0ZXIgY3JlYXRpb24gZmFpbGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByID0gUHlSdW5fU2ltcGxlU3RyaW5nKGNvZGUpOwogICAgIFB5X0VuZEludGVycHJldGVyKHN1YnN0YXRlKTsKIApAQCAtMjMyNSw2ICsyMzkzLDQ0IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcHl0aW1lX29iamVjdF90b190aW1lX3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgdGltZV90IHNlYzsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86cHl0aW1lX29iamVjdF90b190aW1lX3QiLCAmb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lX3Qob2JqLCAmc2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeUxvbmdfRnJvbVRpbWVfdChzZWMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgdGltZV90IHNlYzsKKyAgICBsb25nIHVzZWM7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnB5dGltZV9vYmplY3RfdG9fdGltZXZhbCIsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwob2JqLCAmc2VjLCAmdXNlYykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObCIsIF9QeUxvbmdfRnJvbVRpbWVfdChzZWMpLCB1c2VjKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcHl0aW1lX29iamVjdF90b190aW1lc3BlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICB0aW1lX3Qgc2VjOworICAgIGxvbmcgbnNlYzsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86cHl0aW1lX29iamVjdF90b190aW1lc3BlYyIsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKG9iaiwgJnNlYywgJm5zZWMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmwiLCBfUHlMb25nX0Zyb21UaW1lX3Qoc2VjKSwgbnNlYyk7Cit9CisKIAogc3RhdGljIFB5TWV0aG9kRGVmIFRlc3RNZXRob2RzW10gPSB7CiAgICAgeyJyYWlzZV9leGNlcHRpb24iLCAgICAgICAgIHJhaXNlX2V4Y2VwdGlvbiwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0yMzM0LDE0ICsyNDQwLDE1IEBACiAgICAgeyJ0ZXN0X2xpc3RfYXBpIiwgICAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xpc3RfYXBpLCAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfZGljdF9pdGVyYXRpb24iLCAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfZGljdF9pdGVyYXRpb24sTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sYXp5X2hhc2hfaW5oZXJpdGFuY2UiLCAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xhenlfaGFzaF9pbmhlcml0YW5jZSxNRVRIX05PQVJHU30sCi0gICAgeyJ0ZXN0X2Jyb2tlbl9tZW1vcnl2aWV3IiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfYnJva2VuX21lbW9yeXZpZXcsTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2FwaSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FwaSwgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2xvbmdfYW5kX292ZXJmbG93IiwgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19hbmRfb3ZlcmZsb3csCiAgICAgIE1FVEhfTk9BUkdTfSwKKyAgICB7InRlc3RfbG9uZ19hc19kb3VibGUiLCAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19hc19kb3VibGUsTUVUSF9OT0FSR1N9LAorICAgIHsidGVzdF9sb25nX2FzX3NpemVfdCIsICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FzX3NpemVfdCxNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2xvbmdfbnVtYml0cyIsICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfbnVtYml0cywgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3Rfa19jb2RlIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfa19jb2RlLCAgICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9lbXB0eV9hcmdwYXJzZSIsIChQeUNGdW5jdGlvbil0ZXN0X2VtcHR5X2FyZ3BhcnNlLE1FVEhfTk9BUkdTfSwKLSAgICB7InRlc3RfYnVnXzc0MTQiLCAoUHlDRnVuY3Rpb24pdGVzdF9idWdfNzQxNCwgTUVUSF9OT0FSR1N9LAorICAgIHsicGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzIiwgcGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidGVzdF9udWxsX3N0cmluZ3MiLCAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9udWxsX3N0cmluZ3MsICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X3N0cmluZ19mcm9tX2Zvcm1hdCIsIChQeUNGdW5jdGlvbil0ZXN0X3N0cmluZ19mcm9tX2Zvcm1hdCwgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF93aXRoX2RvY3N0cmluZyIsIChQeUNGdW5jdGlvbil0ZXN0X3dpdGhfZG9jc3RyaW5nLCBNRVRIX05PQVJHUywKQEAgLTIzNTIsNiArMjQ1OSw4IEBACiAgICAgeyJnZXRhcmdzX3R1cGxlIiwgICAgICAgICAgIGdldGFyZ3NfdHVwbGUsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2tleXdvcmRzIiwgKFB5Q0Z1bmN0aW9uKWdldGFyZ3Nfa2V5d29yZHMsCiAgICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCisgICAgeyJnZXRhcmdzX2tleXdvcmRfb25seSIsIChQeUNGdW5jdGlvbilnZXRhcmdzX2tleXdvcmRfb25seSwKKyAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7ImdldGFyZ3NfYiIsICAgICAgICAgICAgICAgZ2V0YXJnc19iLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfQiIsICAgICAgICAgICAgICAgZ2V0YXJnc19CLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfaCIsICAgICAgICAgICAgICAgZ2V0YXJnc19oLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTIzNjEsNiArMjQ3MCw3IEBACiAgICAgeyJnZXRhcmdzX2kiLCAgICAgICAgICAgICAgIGdldGFyZ3NfaSwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2wiLCAgICAgICAgICAgICAgIGdldGFyZ3NfbCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX24iLCAgICAgICAgICAgICAgIGdldGFyZ3NfbiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJnZXRhcmdzX3AiLCAgICAgICAgICAgICAgIGdldGFyZ3NfcCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICB7ImdldGFyZ3NfTCIsICAgICAgICAgICAgICAgZ2V0YXJnc19MLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfSyIsICAgICAgICAgICAgICAgZ2V0YXJnc19LLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTIzNjksNiArMjQ3OSw3IEBACiAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfbG9uZ19hbmRfb3ZlcmZsb3csIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfTF9jb2RlIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfTF9jb2RlLCAgICAgICAgTUVUSF9OT0FSR1N9LAogI2VuZGlmCisgICAgeyJnZXRhcmdzX2MiLCAgICAgICAgICAgICAgIGdldGFyZ3NfYywgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3MiLCAgICAgICAgICAgICAgIGdldGFyZ3NfcywgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3Nfc3RhciIsICAgICAgICAgIGdldGFyZ3Nfc19zdGFyLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3NfaGFzaCIsICAgICAgICAgIGdldGFyZ3Nfc19oYXNoLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0yNDA0LDYgKzI1MTUsNyBAQAogI2VuZGlmCiAgICAgeyJ0cmFjZWJhY2tfcHJpbnQiLCAgICAgICAgIHRyYWNlYmFja19wcmludCwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJleGNlcHRpb25fcHJpbnQiLCAgICAgICAgIGV4Y2VwdGlvbl9wcmludCwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJzZXRfZXhjX2luZm8iLCAgICAgICAgICAgIHRlc3Rfc2V0X2V4Y19pbmZvLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJhcmdwYXJzaW5nIiwgICAgICAgICAgICAgIGFyZ3BhcnNpbmcsICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJjb2RlX25ld2VtcHR5IiwgICAgICAgICAgIGNvZGVfbmV3ZW1wdHksICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJtYWtlX2V4Y2VwdGlvbl93aXRoX2RvYyIsIChQeUNGdW5jdGlvbiltYWtlX2V4Y2VwdGlvbl93aXRoX2RvYywKQEAgLTI0MTIsNiArMjUyNCw5IEBACiAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7ImNyYXNoX25vX2N1cnJlbnRfdGhyZWFkIiwgKFB5Q0Z1bmN0aW9uKWNyYXNoX25vX2N1cnJlbnRfdGhyZWFkLCBNRVRIX05PQVJHU30sCiAgICAgeyJydW5faW5fc3ViaW50ZXJwIiwgICAgICAgIHJ1bl9pbl9zdWJpbnRlcnAsICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJweXRpbWVfb2JqZWN0X3RvX3RpbWVfdCIsIHRlc3RfcHl0aW1lX29iamVjdF90b190aW1lX3QsICBNRVRIX1ZBUkFSR1N9LAorICAgIHsicHl0aW1lX29iamVjdF90b190aW1ldmFsIiwgdGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwsICBNRVRIX1ZBUkFSR1N9LAorICAgIHsicHl0aW1lX29iamVjdF90b190aW1lc3BlYyIsIHRlc3RfcHl0aW1lX29iamVjdF90b190aW1lc3BlYywgIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yNTk0LDcgKzI3MDksNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X1RZUEUoJl9IYXNoSW5oZXJpdGFuY2VUZXN0ZXJfVHlwZSk9JlB5VHlwZV9UeXBlOwotICAgIFB5X1RZUEUoJl9NZW1vcnlWaWV3VGVzdGVyX1R5cGUpPSZQeVR5cGVfVHlwZTsKIAogICAgIFB5X1RZUEUoJnRlc3Rfc3RydWN0bWVtYmVyc1R5cGUpPSZQeVR5cGVfVHlwZTsKICAgICBQeV9JTkNSRUYoJnRlc3Rfc3RydWN0bWVtYmVyc1R5cGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGhyZWFkbW9kdWxlLmMgYi9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYwppbmRleCA1Zjc2YTdiLi42M2VmZGMzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYworKysgYi9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYwpAQCAtMjMsNiArMjMsNyBAQAogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9ja19sb2NrOwogICAgIFB5T2JqZWN0ICppbl93ZWFrcmVmbGlzdDsKKyAgICBjaGFyIGxvY2tlZDsgLyogZm9yIHNhbml0eSBjaGVja2luZyAqLwogfSBsb2Nrb2JqZWN0OwogCiBzdGF0aWMgdm9pZApAQCAtMzIsOSArMzMsOCBAQAogICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBzZWxmKTsKICAgICBpZiAoc2VsZi0+bG9ja19sb2NrICE9IE5VTEwpIHsKICAgICAgICAgLyogVW5sb2NrIHRoZSBsb2NrIHNvIGl0J3Mgc2FmZSB0byBmcmVlIGl0ICovCi0gICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrX2xvY2ssIDApOwotICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKLQorICAgICAgICBpZiAoc2VsZi0+bG9ja2VkKQorICAgICAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7CiAgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrX2xvY2spOwogICAgIH0KICAgICBQeU9iamVjdF9EZWwoc2VsZik7CkBAIC01Myw2ICs1Myw3IEBACiAgICAgX1B5VGltZV90aW1ldmFsIGN1cnRpbWU7CiAgICAgX1B5VGltZV90aW1ldmFsIGVuZHRpbWU7CiAKKwogICAgIGlmIChtaWNyb3NlY29uZHMgPiAwKSB7CiAgICAgICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZlbmR0aW1lKTsKICAgICAgICAgZW5kdGltZS50dl9zZWMgKz0gbWljcm9zZWNvbmRzIC8gKDEwMDAgKiAxMDAwKTsKQEAgLTYxLDkgKzYyLDEzIEBACiAKIAogICAgIGRvIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKGxvY2ssIG1pY3Jvc2Vjb25kcywgMSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIC8qIGZpcnN0IGEgc2ltcGxlIG5vbi1ibG9ja2luZyB0cnkgd2l0aG91dCByZWxlYXNpbmcgdGhlIEdJTCAqLworICAgICAgICByID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKGxvY2ssIDAsIDApOworICAgICAgICBpZiAociA9PSBQWV9MT0NLX0ZBSUxVUkUgJiYgbWljcm9zZWNvbmRzICE9IDApIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHIgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQobG9jaywgbWljcm9zZWNvbmRzLCAxKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0gCiAKICAgICAgICAgaWYgKHIgPT0gUFlfTE9DS19JTlRSKSB7CiAgICAgICAgICAgICAvKiBSdW4gc2lnbmFsIGhhbmRsZXJzIGlmIHdlIHdlcmUgaW50ZXJydXB0ZWQuICBQcm9wYWdhdGUKQEAgLTc1LDcgKzgwLDcgQEAKIAogICAgICAgICAgICAgLyogSWYgd2UncmUgdXNpbmcgYSB0aW1lb3V0LCByZWNvbXB1dGUgdGhlIHRpbWVvdXQgYWZ0ZXIgcHJvY2Vzc2luZwogICAgICAgICAgICAgICogc2lnbmFscywgc2luY2UgdGhvc2UgY2FuIHRha2UgdGltZS4gICovCi0gICAgICAgICAgICBpZiAobWljcm9zZWNvbmRzID49IDApIHsKKyAgICAgICAgICAgIGlmIChtaWNyb3NlY29uZHMgPiAwKSB7CiAgICAgICAgICAgICAgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJmN1cnRpbWUpOwogICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9ICgoZW5kdGltZS50dl9zZWMgLSBjdXJ0aW1lLnR2X3NlYykgKiAxMDAwMDAwICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZHRpbWUudHZfdXNlYyAtIGN1cnRpbWUudHZfdXNlYykpOwpAQCAtMTM0LDYgKzEzOSw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChyID09IFBZX0xPQ0tfQUNRVUlSRUQpCisgICAgICAgIHNlbGYtPmxvY2tlZCA9IDE7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyID09IFBZX0xPQ0tfQUNRVUlSRUQpOwogfQogCkBAIC0xNTIsMTMgKzE1OSwxMyBAQAogbG9ja19QeVRocmVhZF9yZWxlYXNlX2xvY2sobG9ja29iamVjdCAqc2VsZikKIHsKICAgICAvKiBTYW5pdHkgY2hlY2s6IHRoZSBsb2NrIG11c3QgYmUgbG9ja2VkICovCi0gICAgaWYgKFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrX2xvY2ssIDApKSB7Ci0gICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrX2xvY2spOworICAgIGlmICghc2VsZi0+bG9ja2VkKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhUaHJlYWRFcnJvciwgInJlbGVhc2UgdW5sb2NrZWQgbG9jayIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKKyAgICBzZWxmLT5sb2NrZWQgPSAwOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KQEAgLTE3NCwxMSArMTgxLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBsb2NrX2xvY2tlZF9sb2NrKGxvY2tvYmplY3QgKnNlbGYpCiB7Ci0gICAgaWYgKFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrX2xvY2ssIDApKSB7Ci0gICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrX2xvY2spOwotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDBMKTsKLSAgICB9Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxTCk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZylzZWxmLT5sb2NrZWQpOwogfQogCiBQeURvY19TVFJWQVIobG9ja2VkX2RvYywKQEAgLTMxMiwxNCArMzE1LDcgQEAKICAgICAgICAgc2VsZi0+cmxvY2tfY291bnQgPSBjb3VudDsKICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgfQotCi0gICAgaWYgKHNlbGYtPnJsb2NrX2NvdW50ID4gMCB8fAotICAgICAgICAhUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPnJsb2NrX2xvY2ssIDApKSB7Ci0gICAgICAgIGlmIChtaWNyb3NlY29uZHMgPT0gMCkgewotICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgICAgICB9Ci0gICAgICAgIHIgPSBhY3F1aXJlX3RpbWVkKHNlbGYtPnJsb2NrX2xvY2ssIG1pY3Jvc2Vjb25kcyk7Ci0gICAgfQorICAgIHIgPSBhY3F1aXJlX3RpbWVkKHNlbGYtPnJsb2NrX2xvY2ssIG1pY3Jvc2Vjb25kcyk7CiAgICAgaWYgKHIgPT0gUFlfTE9DS19BQ1FVSVJFRCkgewogICAgICAgICBhc3NlcnQoc2VsZi0+cmxvY2tfY291bnQgPT0gMCk7CiAgICAgICAgIHNlbGYtPnJsb2NrX293bmVyID0gdGlkOwpAQCAtNDEzLDYgKzQwOSwxMiBAQAogICAgIGxvbmcgb3duZXI7CiAgICAgdW5zaWduZWQgbG9uZyBjb3VudDsKIAorICAgIGlmIChzZWxmLT5ybG9ja19jb3VudCA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jayIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBvd25lciA9IHNlbGYtPnJsb2NrX293bmVyOwogICAgIGNvdW50ID0gc2VsZi0+cmxvY2tfY291bnQ7CiAgICAgc2VsZi0+cmxvY2tfY291bnQgPSAwOwpAQCAtNTQxLDYgKzU0Myw3IEBACiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc2VsZi0+bG9ja19sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIHNlbGYtPmxvY2tlZCA9IDA7CiAgICAgc2VsZi0+aW5fd2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIGlmIChzZWxmLT5sb2NrX2xvY2sgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CkBAIC0xMjI1LDExICsxMjI4LDkgQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHRocmVhZF9tZXRob2RzW10gPSB7CiAgICAgeyJzdGFydF9uZXdfdGhyZWFkIiwgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbmV3X2RvY30sCisgICAgIE1FVEhfVkFSQVJHUywgc3RhcnRfbmV3X2RvY30sCiAgICAgeyJzdGFydF9uZXciLCAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbmV3X2RvY30sCisgICAgIE1FVEhfVkFSQVJHUywgc3RhcnRfbmV3X2RvY30sCiAgICAgeyJhbGxvY2F0ZV9sb2NrIiwgICAgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfUHlUaHJlYWRfYWxsb2NhdGVfbG9jaywKICAgICAgTUVUSF9OT0FSR1MsIGFsbG9jYXRlX2RvY30sCiAgICAgeyJhbGxvY2F0ZSIsICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfUHlUaHJlYWRfYWxsb2NhdGVfbG9jaywKQEAgLTEyNDUsOCArMTI0Niw3IEBACiAgICAgeyJfY291bnQiLCAgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfX2NvdW50LAogICAgICBNRVRIX05PQVJHUywgX2NvdW50X2RvY30sCiAgICAgeyJzdGFja19zaXplIiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfc3RhY2tfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tfc2l6ZV9kb2N9LAorICAgICBNRVRIX1ZBUkFSR1MsIHN0YWNrX3NpemVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xMzEwLDcgKzEzMTAsOSBAQAogCiAgICAgLyogQWRkIGEgc3ltYm9saWMgY29uc3RhbnQgKi8KICAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKLSAgICBUaHJlYWRFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX3RocmVhZC5lcnJvciIsIE5VTEwsIE5VTEwpOworICAgIFRocmVhZEVycm9yID0gUHlFeGNfUnVudGltZUVycm9yOworICAgIFB5X0lOQ1JFRihUaHJlYWRFcnJvcik7CisKICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiZXJyb3IiLCBUaHJlYWRFcnJvcik7CiAgICAgTG9ja3R5cGUudHBfZG9jID0gbG9ja19kb2M7CiAgICAgUHlfSU5DUkVGKCZMb2NrdHlwZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190aW1lLmMgYi9Nb2R1bGVzL190aW1lLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwY2M4ZTEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fdGltZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgIl90aW1lLmgiCi0KLS8qIEV4cG9zZWQgaW4gdGltZWZ1bmNzLmguICovCi10aW1lX3QKLV9QeVRpbWVfRG91YmxlVG9UaW1ldChkb3VibGUgeCkKLXsKLSAgICB0aW1lX3QgcmVzdWx0OwotICAgIGRvdWJsZSBkaWZmOwotCi0gICAgcmVzdWx0ID0gKHRpbWVfdCl4OwotICAgIC8qIEhvdyBtdWNoIGluZm8gZGlkIHdlIGxvc2U/ICB0aW1lX3QgbWF5IGJlIGFuIGludGVncmFsIG9yCi0gICAgICogZmxvYXRpbmcgdHlwZSwgYW5kIHdlIGRvbid0IGtub3cgd2hpY2guICBJZiBpdCdzIGludGVncmFsLAotICAgICAqIHdlIGRvbid0IGtub3cgd2hldGhlciBDIHRydW5jYXRlcywgcm91bmRzLCByZXR1cm5zIHRoZSBmbG9vciwKLSAgICAgKiBldGMuICBJZiB3ZSBsb3N0IGEgc2Vjb25kIG9yIG1vcmUsIHRoZSBDIHJvdW5kaW5nIGlzCi0gICAgICogdW5yZWFzb25hYmxlLCBvciB0aGUgaW5wdXQganVzdCBkb2Vzbid0IGZpdCBpbiBhIHRpbWVfdDsKLSAgICAgKiBjYWxsIGl0IGFuIGVycm9yIHJlZ2FyZGxlc3MuICBOb3RlIHRoYXQgdGhlIG9yaWdpbmFsIGNhc3QgdG8KLSAgICAgKiB0aW1lX3QgY2FuIGNhdXNlIGEgQyBlcnJvciB0b28sIGJ1dCBub3RoaW5nIHdlIGNhbiBkbyB0bwotICAgICAqIHdvcmsgYXJvdW5kIHRoYXQuCi0gICAgICovCi0gICAgZGlmZiA9IHggLSAoZG91YmxlKXJlc3VsdDsKLSAgICBpZiAoZGlmZiA8PSAtMS4wIHx8IGRpZmYgPj0gMS4wKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yIHBsYXRmb3JtIHRpbWVfdCIpOwotICAgICAgICByZXN1bHQgPSAodGltZV90KS0xOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGltZS5oIGIvTW9kdWxlcy9fdGltZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTY1OTNiLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX3RpbWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotLyogWFhYOiBJdCBpcyBwcm9iYWJseSBiZXN0IHRvIG1vdmUgdGltZWZ1bmNzLmggY29udGVudCBpbiBoZXJlLCBhbmQKLSAgIHJlbW92ZSBpdCBidXQgdXNlciBjb2RlIG1heSByZWx5IG9uIGl0LiAqLwotI2luY2x1ZGUgInRpbWVmdW5jcy5oIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGtpbnRlci5jIGIvTW9kdWxlcy9fdGtpbnRlci5jCmluZGV4IDIzOTA2ZGUuLjcwZjQ3MDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RraW50ZXIuYworKysgYi9Nb2R1bGVzL190a2ludGVyLmMKQEAgLTgwLDE4ICs4MCw2IEBACiAjZXJyb3IgIlRrIG9sZGVyIHRoYW4gOC4zLjEgbm90IHN1cHBvcnRlZCIKICNlbmRpZgogCi0vKiBVbmljb2RlIGNvbnZlcnNpb24gYXNzdW1lcyB0aGF0IFRjbF9VbmlDaGFyIGlzIHR3byBieXRlcy4KLSAgIFdlIGNhbm5vdCB0ZXN0IHRoaXMgZGlyZWN0bHksIHNvIHdlIHRlc3QgVVRGLTggc2l6ZSBpbnN0ZWFkLAotICAgZXhwZWN0aW5nIHRoYXQgVENMX1VURl9NQVggaXMgY2hhbmdlZCBpZiBUY2wgZXZlciBzdXBwb3J0cwotICAgZWl0aGVyIFVURi0xNiBvciBVQ1MtNC4KLSAgIFJlZGhhdCA4IHNldHMgVENMX1VURl9NQVggdG8gNiwgYW5kIHVzZXMgd2NoYXJfdCBmb3IKLSAgIFRjbF9VbmljaGFyLiBUaGlzIGlzIGFsc28gb2sgYXMgbG9uZyBhcyBQeXRob24gdXNlcyBVQ1MtNCwKLSAgIGFzIHdlbGwuCi0qLwotI2lmIFRDTF9VVEZfTUFYICE9IDMgJiYgIShkZWZpbmVkKFB5X1VOSUNPREVfV0lERSkgJiYgVENMX1VURl9NQVg9PTYpCi0jZXJyb3IgInVuc3VwcG9ydGVkIFRjbCBjb25maWd1cmF0aW9uIgotI2VuZGlmCi0KICNpZiAhKGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkKICNkZWZpbmUgSEFWRV9DUkVBVEVGSUxFSEFORExFUgogI2VuZGlmCkBAIC05NzUsNDAgKzk2Myw0NiBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKmluYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUodmFsdWUpOwotICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodmFsdWUpOwotICAgICAgICAvKiBUaGlzICNpZmRlZiBhc3N1bWVzIHRoYXQgVGNsIHVzZXMgVUNTLTIuCi0gICAgICAgICAgIFNlZSBUQ0xfVVRGX01BWCB0ZXN0IGFib3ZlLiAqLwotI2lmIGRlZmluZWQoUHlfVU5JQ09ERV9XSURFKSAmJiBUQ0xfVVRGX01BWCA9PSAzCisgICAgICAgIHZvaWQgKmluYnVmOworICAgICAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgICAgIGludCBraW5kOwogICAgICAgICBUY2xfVW5pQ2hhciAqb3V0YnVmID0gTlVMTDsKICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICBzaXplX3QgYWxsb2NzaXplID0gKChzaXplX3Qpc2l6ZSkgKiBzaXplb2YoVGNsX1VuaUNoYXIpOwotICAgICAgICBpZiAoYWxsb2NzaXplID49IHNpemUpCi0gICAgICAgICAgICBvdXRidWYgPSAoVGNsX1VuaUNoYXIqKWNrYWxsb2MoYWxsb2NzaXplKTsKKyAgICAgICAgc2l6ZV90IGFsbG9jc2l6ZTsKKworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGluYnVmID0gUHlVbmljb2RlX0RBVEEodmFsdWUpOworICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodmFsdWUpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodmFsdWUpOworICAgICAgICBhbGxvY3NpemUgPSAoKHNpemVfdClzaXplKSAqIHNpemVvZihUY2xfVW5pQ2hhcik7CisgICAgICAgIG91dGJ1ZiA9IChUY2xfVW5pQ2hhciopY2thbGxvYyhhbGxvY3NpemUpOwogICAgICAgICAvKiBFbHNlIG92ZXJmbG93IG9jY3VycmVkLCBhbmQgd2UgdGFrZSB0aGUgbmV4dCBleGl0ICovCiAgICAgICAgIGlmICghb3V0YnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgaWYgKGluYnVmW2ldID49IDB4MTAwMDApIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBpbmJ1ZiwgaSk7CisgICAgICAgICAgICAvKiBXZSBjYW5ub3QgdGVzdCBmb3Igc2l6ZW9mKFRjbF9VbmlDaGFyKSBkaXJlY3RseSwKKyAgICAgICAgICAgICAgIHNvIHdlIHRlc3QgZm9yIFVURi04IHNpemUgaW5zdGVhZC4gKi8KKyNpZiBUQ0xfVVRGX01BWCA9PSAzCisgICAgICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgewogICAgICAgICAgICAgICAgIC8qIFRjbCBkb2Vzbid0IGRvIFVURi0xNiwgeWV0LiAqLwogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIFUrJXggaXMgYWJvdmUgdGhlIHJhbmdlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihVKzAwMDAtVStGRkZGKSBhbGxvd2VkIGJ5IFRjbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluYnVmW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2gpOwogICAgICAgICAgICAgICAgIGNrZnJlZShGUkVFQ0FTVCBvdXRidWYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgb3V0YnVmW2ldID0gaW5idWZbaV07CisjZW5kaWYKKyAgICAgICAgICAgIG91dGJ1ZltpXSA9IGNoOwogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IFRjbF9OZXdVbmljb2RlT2JqKG91dGJ1Ziwgc2l6ZSk7CiAgICAgICAgIGNrZnJlZShGUkVFQ0FTVCBvdXRidWYpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIFRjbF9OZXdVbmljb2RlT2JqKGluYnVmLCBzaXplKTsKLSNlbmRpZgotCiAgICAgfQogICAgIGVsc2UgaWYoUHlUY2xPYmplY3RfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFRjbF9PYmogKnYgPSAoKFB5VGNsT2JqZWN0Kil2YWx1ZSktPnZhbHVlOwpAQCAtMTA5MCwyNCArMTA4NCwxNCBAQAogICAgIH0KIAogICAgIGlmICh2YWx1ZS0+dHlwZVB0ciA9PSBhcHAtPlN0cmluZ1R5cGUpIHsKLSNpZiBkZWZpbmVkKFB5X1VOSUNPREVfV0lERSkgJiYgVENMX1VURl9NQVg9PTMKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIFRjbF9VbmlDaGFyICppbnB1dDsKLSAgICAgICAgUHlfVU5JQ09ERSAqb3V0cHV0OwotCi0gICAgICAgIHNpemUgPSBUY2xfR2V0Q2hhckxlbmd0aCh2YWx1ZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzaXplKTsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaW5wdXQgPSBUY2xfR2V0VW5pY29kZSh2YWx1ZSk7Ci0gICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgICAgIHdoaWxlIChzaXplLS0pCi0gICAgICAgICAgICAqb3V0cHV0KysgPSAqaW5wdXQrKzsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyNpZiBUQ0xfVVRGX01BWD09MworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YSgKKyAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9LSU5ELCBUY2xfR2V0VW5pY29kZSh2YWx1ZSksCisgICAgICAgICAgICBUY2xfR2V0Q2hhckxlbmd0aCh2YWx1ZSkpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShUY2xfR2V0VW5pY29kZSh2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGNsX0dldENoYXJMZW5ndGgodmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoCisgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfS0lORCwgVGNsX0dldFVuaWNvZGUodmFsdWUpLAorICAgICAgICAgICAgVGNsX0dldENoYXJMZW5ndGgodmFsdWUpKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTM1OSw2ICsxMzQzLDExIEBACiAgICAgY2hhciAqY21kOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsY2FsbCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKKyAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIAogICAgIGNtZCAgPSBNZXJnZShhcmdzKTsKQEAgLTE0MDgsNiArMTM5NywxMSBAQAogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIGludCBlcnI7CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxldmFsIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjQiLAorICAgICAgICAgICAgICAgICAgICAgMSkgPCAwKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpnbG9iYWxldmFsIiwgJnNjcmlwdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xOTcwLDkgKzE5NjQsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBUa2FwcF9NZXJnZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqcyA9IE1lcmdlKGFyZ3MpOworICAgIGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJtZXJnZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKKyAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzID0gTWVyZ2UoYXJncyk7CisKICAgICBpZiAocykgewogICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzKTsKICAgICAgICAgY2tmcmVlKHMpOwpAQCAtMjAwNyw3ICsyMDA4LDcgQEAKIFB5dGhvbkNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKICAgICBQeXRob25DbWRfQ2xpZW50RGF0YSAqZGF0YSA9IChQeXRob25DbWRfQ2xpZW50RGF0YSAqKWNsaWVudERhdGE7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqYXJnLCAqcmVzOworICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJnLCAqcmVzOwogICAgIGludCBpLCBydjsKICAgICBUY2xfT2JqICpvYmpfcmVzOwogCkBAIC0yMDE2LDcgKzIwMTcsNiBAQAogICAgIC8qIFRCRDogbm8gZXJyb3IgY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBrbm93LCB2aWEgdGhlCiAgICAgICogVGthcHBfQ3JlYXRlQ29tbWFuZCgpIHRoYXQgdGhlIGNsaWVudCBkYXRhIGlzIGEgdHdvLXR1cGxlCiAgICAgICovCi0gICAgc2VsZiA9IGRhdGEtPnNlbGY7CiAgICAgZnVuYyA9IGRhdGEtPmZ1bmM7CiAKICAgICAvKiBDcmVhdGUgYXJndW1lbnQgbGlzdCAoYXJndjEsIC4uLiwgYXJndk4pICovCkBAIC0yNDE1LDExICsyNDE1LDkgQEAKIFRrdHRfUmVwcihQeU9iamVjdCAqc2VsZikKIHsKICAgICBUa3R0T2JqZWN0ICp2ID0gKFRrdHRPYmplY3QgKilzZWxmOwotICAgIGNoYXIgYnVmWzEwMF07Ci0KLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICI8dGt0aW1lcnRva2VuIGF0ICVwJXM+IiwgdiwKLSAgICAgICAgICAgICAgICAgICAgdi0+ZnVuYyA9PSBOVUxMID8gIiwgaGFuZGxlciBkZWxldGVkIiA6ICIiKTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjx0a3RpbWVydG9rZW4gYXQgJXAlcz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5mdW5jID09IE5VTEwgPyAiLCBoYW5kbGVyIGRlbGV0ZWQiIDogIiIpOwogfQogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFRrdHRfVHlwZSA9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL193aW5hcGkuYyBiL01vZHVsZXMvX3dpbmFwaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNzQ4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL193aW5hcGkuYwpAQCAtMCwwICsxLDEzMjggQEAKKy8qCisgKiBTdXBwb3J0IHJvdXRpbmVzIGZyb20gdGhlIFdpbmRvd3MgQVBJCisgKgorICogVGhpcyBtb2R1bGUgd2FzIG9yaWdpbmFsbHkgY3JlYXRlZCBieSBtZXJnaW5nIFBDL19zdWJwcm9jZXNzLmMgd2l0aAorICogTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNCBieSBGcmVkcmlrIEx1bmRoIDxmcmVkcmlrQHB5dGhvbndhcmUuY29tPgorICogQ29weXJpZ2h0IChjKSAyMDA0IGJ5IFNlY3JldCBMYWJzIEFCLCBodHRwOi8vd3d3LnB5dGhvbndhcmUuY29tCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgUGV0ZXIgQXN0cmFuZCA8YXN0cmFuZEBseXNhdG9yLmxpdS5zZT4KKyAqCisgKiBCeSBvYnRhaW5pbmcsIHVzaW5nLCBhbmQvb3IgY29weWluZyB0aGlzIHNvZnR3YXJlIGFuZC9vciBpdHMKKyAqIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiwgeW91IGFncmVlIHRoYXQgeW91IGhhdmUgcmVhZCwgdW5kZXJzdG9vZCwKKyAqIGFuZCB3aWxsIGNvbXBseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnM6CisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKKyAqIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcworICogaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbgorICogYWxsIGNvcGllcywgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbgorICogbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIHRoZQorICogYXV0aG9ycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0bworICogZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yCisgKiBwZXJtaXNzaW9uLgorICoKKyAqIFRIRSBBVVRIT1JTIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLAorICogSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MKKyAqIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisgKiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKyAqCisgKi8KKworLyogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LiAqLworLyogU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy8yLjQvbGljZW5zZSBmb3IgbGljZW5zaW5nIGRldGFpbHMuICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKworI2RlZmluZSBXSU5ET1dTX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlICJ3aW5kb3dzLmgiCisjaW5jbHVkZSA8Y3J0ZGJnLmg+CisKKyNpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiAhZGVmaW5lZChNU19XSU42NCkKKyNkZWZpbmUgSEFORExFX1RPX1BZTlVNKGhhbmRsZSkgXAorICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKSBoYW5kbGUpCisjZGVmaW5lIFBZTlVNX1RPX0hBTkRMRShvYmopICgoSEFORExFKVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhvYmopKQorI2RlZmluZSBGX1BPSU5URVIgImsiCisjZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HCisjZWxzZQorI2RlZmluZSBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKSBcCisgICAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCh1bnNpZ25lZCBsb25nIGxvbmcpIGhhbmRsZSkKKyNkZWZpbmUgUFlOVU1fVE9fSEFORExFKG9iaikgKChIQU5ETEUpUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhvYmopKQorI2RlZmluZSBGX1BPSU5URVIgIksiCisjZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HTE9ORworI2VuZGlmCisKKyNkZWZpbmUgRl9IQU5ETEUgRl9QT0lOVEVSCisjZGVmaW5lIEZfRFdPUkQgImsiCisjZGVmaW5lIEZfQk9PTCAiaSIKKyNkZWZpbmUgRl9VSU5UICJJIgorCisjZGVmaW5lIFRfSEFORExFIFRfUE9JTlRFUgorCisvKiBHcmFiIENhbmNlbElvRXggZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLworc3RhdGljIGludCBoYXNfQ2FuY2VsSW9FeCA9IC0xOworc3RhdGljIEJPT0wgKENBTExCQUNLICpQeV9DYW5jZWxJb0V4KShIQU5ETEUsIExQT1ZFUkxBUFBFRCk7CisKK3N0YXRpYyBpbnQKK2NoZWNrX0NhbmNlbElvRXgoKQoreworICAgIGlmIChoYXNfQ2FuY2VsSW9FeCA9PSAtMSkKKyAgICB7CisgICAgICAgIEhJTlNUQU5DRSBoS2VybmVsMzIgPSBHZXRNb2R1bGVIYW5kbGUoIktFUk5FTDMyIik7CisgICAgICAgICogKEZBUlBST0MgKikgJlB5X0NhbmNlbElvRXggPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsSW9FeCIpOworICAgICAgICBoYXNfQ2FuY2VsSW9FeCA9IChQeV9DYW5jZWxJb0V4ICE9IE5VTEwpOworICAgIH0KKyAgICByZXR1cm4gaGFzX0NhbmNlbElvRXg7Cit9CisKKworLyoKKyAqIEEgUHl0aG9uIG9iamVjdCB3cmFwcGluZyBhbiBPVkVSTEFQUEVEIHN0cnVjdHVyZSBhbmQgb3RoZXIgdXNlZnVsIGRhdGEKKyAqIGZvciBvdmVybGFwcGVkIEkvTworICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgT1ZFUkxBUFBFRCBvdmVybGFwcGVkOworICAgIC8qIEZvciBjb252ZW5pZW5jZSwgd2Ugc3RvcmUgdGhlIGZpbGUgaGFuZGxlIHRvbyAqLworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgLyogV2hldGhlciB0aGVyZSdzIEkvTyBpbiBmbGlnaHQgKi8KKyAgICBpbnQgcGVuZGluZzsKKyAgICAvKiBXaGV0aGVyIEkvTyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5ICovCisgICAgaW50IGNvbXBsZXRlZDsKKyAgICAvKiBCdWZmZXIgdXNlZCBmb3IgcmVhZGluZyAob3B0aW9uYWwpICovCisgICAgUHlPYmplY3QgKnJlYWRfYnVmZmVyOworICAgIC8qIEJ1ZmZlciB1c2VkIGZvciB3cml0aW5nIChvcHRpb25hbCkgKi8KKyAgICBQeV9idWZmZXIgd3JpdGVfYnVmZmVyOworfSBPdmVybGFwcGVkT2JqZWN0OworCitzdGF0aWMgdm9pZAorb3ZlcmxhcHBlZF9kZWFsbG9jKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCit7CisgICAgRFdPUkQgYnl0ZXM7CisgICAgaW50IGVyciA9IEdldExhc3RFcnJvcigpOworICAgIGlmIChzZWxmLT5wZW5kaW5nKSB7CisgICAgICAgIC8qIG1ha2UgaXQgYSBwcm9ncmFtbWluZyBlcnJvciB0byBkZWFsbG9jYXRlIHdoaWxlIG9wZXJhdGlvbgorICAgICAgICAgICBpcyBwZW5kaW5nLCBldmVuIGlmIHdlIGNhbiBzYWZlbHkgY2FuY2VsIGl0ICovCisgICAgICAgIGlmIChjaGVja19DYW5jZWxJb0V4KCkgJiYKKyAgICAgICAgICAgICAgICBQeV9DYW5jZWxJb0V4KHNlbGYtPmhhbmRsZSwgJnNlbGYtPm92ZXJsYXBwZWQpKQorICAgICAgICAgICAgR2V0T3ZlcmxhcHBlZFJlc3VsdChzZWxmLT5oYW5kbGUsICZzZWxmLT5vdmVybGFwcGVkLCAmYnl0ZXMsIFRSVUUpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb25zIHN0aWxsIGluIGZsaWdodCB3aGlsZSBkZXN0cm95aW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJPdmVybGFwcGVkIG9iamVjdCwgdGhlIHByb2Nlc3MgbWF5IGNyYXNoIik7CisgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShOVUxMKTsKKyAgICB9CisgICAgQ2xvc2VIYW5kbGUoc2VsZi0+b3ZlcmxhcHBlZC5oRXZlbnQpOworICAgIFNldExhc3RFcnJvcihlcnIpOworICAgIGlmIChzZWxmLT53cml0ZV9idWZmZXIub2JqKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZWxmLT53cml0ZV9idWZmZXIpOworICAgIFB5X0NMRUFSKHNlbGYtPnJlYWRfYnVmZmVyKTsKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitvdmVybGFwcGVkX0dldE92ZXJsYXBwZWRSZXN1bHQoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKndhaXRvYmopCit7CisgICAgaW50IHdhaXQ7CisgICAgQk9PTCByZXM7CisgICAgRFdPUkQgdHJhbnNmZXJyZWQgPSAwOworICAgIERXT1JEIGVycjsKKworICAgIHdhaXQgPSBQeU9iamVjdF9Jc1RydWUod2FpdG9iaik7CisgICAgaWYgKHdhaXQgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gR2V0T3ZlcmxhcHBlZFJlc3VsdChzZWxmLT5oYW5kbGUsICZzZWxmLT5vdmVybGFwcGVkLCAmdHJhbnNmZXJyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0ICE9IDApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBlcnIgPSByZXMgPyBFUlJPUl9TVUNDRVNTIDogR2V0TGFzdEVycm9yKCk7CisgICAgc3dpdGNoIChlcnIpIHsKKyAgICAgICAgY2FzZSBFUlJPUl9TVUNDRVNTOgorICAgICAgICBjYXNlIEVSUk9SX01PUkVfREFUQToKKyAgICAgICAgY2FzZSBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRDoKKyAgICAgICAgICAgIHNlbGYtPmNvbXBsZXRlZCA9IDE7CisgICAgICAgICAgICBzZWxmLT5wZW5kaW5nID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVSUk9SX0lPX0lOQ09NUExFVEU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHNlbGYtPnBlbmRpbmcgPSAwOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIGVycik7CisgICAgfQorICAgIGlmIChzZWxmLT5jb21wbGV0ZWQgJiYgc2VsZi0+cmVhZF9idWZmZXIgIT0gTlVMTCkgeworICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVja0V4YWN0KHNlbGYtPnJlYWRfYnVmZmVyKSk7CisgICAgICAgIGlmICh0cmFuc2ZlcnJlZCAhPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYtPnJlYWRfYnVmZmVyKSAmJgorICAgICAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZzZWxmLT5yZWFkX2J1ZmZlciwgdHJhbnNmZXJyZWQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJJSSIsICh1bnNpZ25lZCkgdHJhbnNmZXJyZWQsICh1bnNpZ25lZCkgZXJyKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK292ZXJsYXBwZWRfZ2V0YnVmZmVyKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBpZiAoIXNlbGYtPmNvbXBsZXRlZCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBnZXQgcmVhZCBidWZmZXIgYmVmb3JlIEdldE92ZXJsYXBwZWRSZXN1bHQoKSAiCisgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFscyB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzID0gc2VsZi0+cmVhZF9idWZmZXIgPyBzZWxmLT5yZWFkX2J1ZmZlciA6IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK292ZXJsYXBwZWRfY2FuY2VsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCit7CisgICAgQk9PTCByZXMgPSBUUlVFOworCisgICAgaWYgKHNlbGYtPnBlbmRpbmcpIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoY2hlY2tfQ2FuY2VsSW9FeCgpKQorICAgICAgICAgICAgcmVzID0gUHlfQ2FuY2VsSW9FeChzZWxmLT5oYW5kbGUsICZzZWxmLT5vdmVybGFwcGVkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gQ2FuY2VsSW8oc2VsZi0+aGFuZGxlKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisKKyAgICAvKiBDYW5jZWxJb0V4IHJldHVybnMgRVJST1JfTk9UX0ZPVU5EIGlmIHRoZSBJL08gY29tcGxldGVkIGluLWJldHdlZW4gKi8KKyAgICBpZiAoIXJlcyAmJiBHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9OT1RfRk9VTkQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICBzZWxmLT5wZW5kaW5nID0gMDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG92ZXJsYXBwZWRfbWV0aG9kc1tdID0geworICAgIHsiR2V0T3ZlcmxhcHBlZFJlc3VsdCIsIChQeUNGdW5jdGlvbikgb3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCisgICAgeyJnZXRidWZmZXIiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfZ2V0YnVmZmVyLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgeyJjYW5jZWwiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfY2FuY2VsLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlNZW1iZXJEZWYgb3ZlcmxhcHBlZF9tZW1iZXJzW10gPSB7CisgICAgeyJldmVudCIsIFRfSEFORExFLAorICAgICBvZmZzZXRvZihPdmVybGFwcGVkT2JqZWN0LCBvdmVybGFwcGVkKSArIG9mZnNldG9mKE9WRVJMQVBQRUQsIGhFdmVudCksCisgICAgIFJFQURPTkxZLCAib3ZlcmxhcHBlZCBldmVudCBoYW5kbGUifSwKKyAgICB7TlVMTH0KK307CisKK1B5VHlwZU9iamVjdCBPdmVybGFwcGVkVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAvKiB0cF9uYW1lICAgICAgICAgICAqLyAiX3dpbmFwaS5PdmVybGFwcGVkIiwKKyAgICAvKiB0cF9iYXNpY3NpemUgICAgICAqLyBzaXplb2YoT3ZlcmxhcHBlZE9iamVjdCksCisgICAgLyogdHBfaXRlbXNpemUgICAgICAgKi8gMCwKKyAgICAvKiB0cF9kZWFsbG9jICAgICAgICAqLyAoZGVzdHJ1Y3Rvcikgb3ZlcmxhcHBlZF9kZWFsbG9jLAorICAgIC8qIHRwX3ByaW50ICAgICAgICAgICovIDAsCisgICAgLyogdHBfZ2V0YXR0ciAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9zZXRhdHRyICAgICAgICAqLyAwLAorICAgIC8qIHRwX3Jlc2VydmVkICAgICAgICovIDAsCisgICAgLyogdHBfcmVwciAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9hc19udW1iZXIgICAgICAqLyAwLAorICAgIC8qIHRwX2FzX3NlcXVlbmNlICAgICovIDAsCisgICAgLyogdHBfYXNfbWFwcGluZyAgICAgKi8gMCwKKyAgICAvKiB0cF9oYXNoICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2NhbGwgICAgICAgICAgICovIDAsCisgICAgLyogdHBfc3RyICAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9nZXRhdHRybyAgICAgICAqLyAwLAorICAgIC8qIHRwX3NldGF0dHJvICAgICAgICovIDAsCisgICAgLyogdHBfYXNfYnVmZmVyICAgICAgKi8gMCwKKyAgICAvKiB0cF9mbGFncyAgICAgICAgICAqLyBQeV9UUEZMQUdTX0RFRkFVTFQsCisgICAgLyogdHBfZG9jICAgICAgICAgICAgKi8gIk9WRVJMQVBQRUQgc3RydWN0dXJlIHdyYXBwZXIiLAorICAgIC8qIHRwX3RyYXZlcnNlICAgICAgICovIDAsCisgICAgLyogdHBfY2xlYXIgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9yaWNoY29tcGFyZSAgICAqLyAwLAorICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovIDAsCisgICAgLyogdHBfaXRlciAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9pdGVybmV4dCAgICAgICAqLyAwLAorICAgIC8qIHRwX21ldGhvZHMgICAgICAgICovIG92ZXJsYXBwZWRfbWV0aG9kcywKKyAgICAvKiB0cF9tZW1iZXJzICAgICAgICAqLyBvdmVybGFwcGVkX21lbWJlcnMsCisgICAgLyogdHBfZ2V0c2V0ICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9iYXNlICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2RpY3QgICAgICAgICAgICovIDAsCisgICAgLyogdHBfZGVzY3JfZ2V0ICAgICAgKi8gMCwKKyAgICAvKiB0cF9kZXNjcl9zZXQgICAgICAqLyAwLAorICAgIC8qIHRwX2RpY3RvZmZzZXQgICAgICovIDAsCisgICAgLyogdHBfaW5pdCAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9hbGxvYyAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX25ldyAgICAgICAgICAgICovIDAsCit9OworCitzdGF0aWMgT3ZlcmxhcHBlZE9iamVjdCAqCituZXdfb3ZlcmxhcHBlZChIQU5ETEUgaGFuZGxlKQoreworICAgIE92ZXJsYXBwZWRPYmplY3QgKnNlbGY7CisKKyAgICBzZWxmID0gUHlPYmplY3RfTmV3KE92ZXJsYXBwZWRPYmplY3QsICZPdmVybGFwcGVkVHlwZSk7CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzZWxmLT5oYW5kbGUgPSBoYW5kbGU7CisgICAgc2VsZi0+cmVhZF9idWZmZXIgPSBOVUxMOworICAgIHNlbGYtPnBlbmRpbmcgPSAwOworICAgIHNlbGYtPmNvbXBsZXRlZCA9IDA7CisgICAgbWVtc2V0KCZzZWxmLT5vdmVybGFwcGVkLCAwLCBzaXplb2YoT1ZFUkxBUFBFRCkpOworICAgIG1lbXNldCgmc2VsZi0+d3JpdGVfYnVmZmVyLCAwLCBzaXplb2YoUHlfYnVmZmVyKSk7CisgICAgLyogTWFudWFsIHJlc2V0LCBpbml0aWFsbHkgbm9uLXNpZ25hbGxlZCAqLworICAgIHNlbGYtPm92ZXJsYXBwZWQuaEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOworICAgIHJldHVybiBzZWxmOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogd2luZG93cyBBUEkgZnVuY3Rpb25zICovCisKK1B5RG9jX1NUUlZBUihDbG9zZUhhbmRsZV9kb2MsCisiQ2xvc2VIYW5kbGUoaGFuZGxlKSAtPiBOb25lXG5cCitcblwKK0Nsb3NlIGhhbmRsZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9DbG9zZUhhbmRsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgSEFORExFIGhPYmplY3Q7CisgICAgQk9PTCBzdWNjZXNzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6Q2xvc2VIYW5kbGUiLCAmaE9iamVjdCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHN1Y2Nlc3MgPSBDbG9zZUhhbmRsZShoT2JqZWN0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgSEFORExFIGhOYW1lZFBpcGU7CisgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKKyAgICBCT09MIHN1Y2Nlc3M7CisgICAgT3ZlcmxhcHBlZE9iamVjdCAqb3ZlcmxhcHBlZCA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGX0hBTkRMRSAifCIgRl9CT09MLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhOYW1lZFBpcGUsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHVzZV9vdmVybGFwcGVkKSB7CisgICAgICAgIG92ZXJsYXBwZWQgPSBuZXdfb3ZlcmxhcHBlZChoTmFtZWRQaXBlKTsKKyAgICAgICAgaWYgKCFvdmVybGFwcGVkKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHN1Y2Nlc3MgPSBDb25uZWN0TmFtZWRQaXBlKGhOYW1lZFBpcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZCA/ICZvdmVybGFwcGVkLT5vdmVybGFwcGVkIDogTlVMTCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChvdmVybGFwcGVkKSB7CisgICAgICAgIGludCBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgLyogT3ZlcmxhcHBlZCBDb25uZWN0TmFtZWRQaXBlIG5ldmVyIHJldHVybnMgYSBzdWNjZXNzIGNvZGUgKi8KKyAgICAgICAgYXNzZXJ0KHN1Y2Nlc3MgPT0gMCk7CisgICAgICAgIGlmIChlcnIgPT0gRVJST1JfSU9fUEVORElORykKKyAgICAgICAgICAgIG92ZXJsYXBwZWQtPnBlbmRpbmcgPSAxOworICAgICAgICBlbHNlIGlmIChlcnIgPT0gRVJST1JfUElQRV9DT05ORUNURUQpCisgICAgICAgICAgICBTZXRFdmVudChvdmVybGFwcGVkLT5vdmVybGFwcGVkLmhFdmVudCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfREVDUkVGKG92ZXJsYXBwZWQpOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvdmVybGFwcGVkOworICAgIH0KKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0NyZWF0ZUZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIExQQ1RTVFIgbHBGaWxlTmFtZTsKKyAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3M7CisgICAgRFdPUkQgZHdTaGFyZU1vZGU7CisgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzOworICAgIERXT1JEIGR3Q3JlYXRpb25EaXNwb3NpdGlvbjsKKyAgICBEV09SRCBkd0ZsYWdzQW5kQXR0cmlidXRlczsKKyAgICBIQU5ETEUgaFRlbXBsYXRlRmlsZTsKKyAgICBIQU5ETEUgaGFuZGxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JEIEZfRFdPUkQgRl9QT0lOVEVSCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZfRFdPUkQgRl9EV09SRCBGX0hBTkRMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwRmlsZU5hbWUsICZkd0Rlc2lyZWRBY2Nlc3MsICZkd1NoYXJlTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwU2VjdXJpdHlBdHRyaWJ1dGVzLCAmZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdGbGFnc0FuZEF0dHJpYnV0ZXMsICZoVGVtcGxhdGVGaWxlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaGFuZGxlID0gQ3JlYXRlRmlsZShscEZpbGVOYW1lLCBkd0Rlc2lyZWRBY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICBkd1NoYXJlTW9kZSwgbHBTZWN1cml0eUF0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBkd0NyZWF0aW9uRGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBkd0ZsYWdzQW5kQXR0cmlidXRlcywgaFRlbXBsYXRlRmlsZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfSEFORExFLCBoYW5kbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0NyZWF0ZU5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgTFBDVFNUUiBscE5hbWU7CisgICAgRFdPUkQgZHdPcGVuTW9kZTsKKyAgICBEV09SRCBkd1BpcGVNb2RlOworICAgIERXT1JEIG5NYXhJbnN0YW5jZXM7CisgICAgRFdPUkQgbk91dEJ1ZmZlclNpemU7CisgICAgRFdPUkQgbkluQnVmZmVyU2l6ZTsKKyAgICBEV09SRCBuRGVmYXVsdFRpbWVPdXQ7CisgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzOworICAgIEhBTkRMRSBoYW5kbGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JECisgICAgICAgICAgICAgICAgICAgICAgICAgIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JEIEZfUE9JTlRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwTmFtZSwgJmR3T3Blbk1vZGUsICZkd1BpcGVNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbk1heEluc3RhbmNlcywgJm5PdXRCdWZmZXJTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbkluQnVmZmVyU2l6ZSwgJm5EZWZhdWx0VGltZU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwU2VjdXJpdHlBdHRyaWJ1dGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaGFuZGxlID0gQ3JlYXRlTmFtZWRQaXBlKGxwTmFtZSwgZHdPcGVuTW9kZSwgZHdQaXBlTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbk1heEluc3RhbmNlcywgbk91dEJ1ZmZlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5JbkJ1ZmZlclNpemUsIG5EZWZhdWx0VGltZU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBTZWN1cml0eUF0dHJpYnV0ZXMpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKK30KKworUHlEb2NfU1RSVkFSKENyZWF0ZVBpcGVfZG9jLAorIkNyZWF0ZVBpcGUocGlwZV9hdHRycywgc2l6ZSkgLT4gKHJlYWRfaGFuZGxlLCB3cml0ZV9oYW5kbGUpXG5cCitcblwKK0NyZWF0ZSBhbiBhbm9ueW1vdXMgcGlwZSwgYW5kIHJldHVybiBoYW5kbGVzIHRvIHRoZSByZWFkIGFuZFxuXAord3JpdGUgZW5kcyBvZiB0aGUgcGlwZS5cblwKK1xuXAorcGlwZV9hdHRycyBpcyBpZ25vcmVkIGludGVybmFsbHkgYW5kIGNhbiBiZSBOb25lLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0NyZWF0ZVBpcGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEhBTkRMRSByZWFkX3BpcGU7CisgICAgSEFORExFIHdyaXRlX3BpcGU7CisgICAgQk9PTCByZXN1bHQ7CisKKyAgICBQeU9iamVjdCogcGlwZV9hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCisgICAgRFdPUkQgc2l6ZTsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8iIEZfRFdPUkQgIjpDcmVhdGVQaXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaXBlX2F0dHJpYnV0ZXMsICZzaXplKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gQ3JlYXRlUGlwZSgmcmVhZF9waXBlLCAmd3JpdGVfcGlwZSwgTlVMTCwgc2l6ZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKAorICAgICAgICAiTk4iLCBIQU5ETEVfVE9fUFlOVU0ocmVhZF9waXBlKSwgSEFORExFX1RPX1BZTlVNKHdyaXRlX3BpcGUpKTsKK30KKworLyogaGVscGVycyBmb3IgY3JlYXRlcHJvY2VzcyAqLworCitzdGF0aWMgdW5zaWduZWQgbG9uZworZ2V0dWxvbmcoUHlPYmplY3QqIG9iaiwgY2hhciogbmFtZSkKK3sKKyAgICBQeU9iamVjdCogdmFsdWU7CisgICAgdW5zaWduZWQgbG9uZyByZXQ7CisKKyAgICB2YWx1ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCBuYW1lKTsKKyAgICBpZiAoISB2YWx1ZSkgeworICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBGSVhNRTogcHJvcGFnYXRlIGVycm9yPyAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0ID0gUHlMb25nX0FzVW5zaWduZWRMb25nKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBIQU5ETEUKK2dldGhhbmRsZShQeU9iamVjdCogb2JqLCBjaGFyKiBuYW1lKQoreworICAgIFB5T2JqZWN0KiB2YWx1ZTsKKyAgICBIQU5ETEUgcmV0OworCisgICAgdmFsdWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgbmFtZSk7CisgICAgaWYgKCEgdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogRklYTUU6IHByb3BhZ2F0ZSBlcnJvcj8gKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQorICAgICAgICByZXQgPSBOVUxMOworICAgIGVsc2UKKyAgICAgICAgcmV0ID0gUFlOVU1fVE9fSEFORExFKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2dldGVudmlyb25tZW50KFB5T2JqZWN0KiBlbnZpcm9ubWVudCkKK3sKKyAgICBQeV9zc2l6ZV90IGksIGVudnNpemUsIHRvdGFsc2l6ZTsKKyAgICBQeV9VQ1M0ICpidWZmZXIgPSBOVUxMLCAqcCwgKmVuZDsKKyAgICBQeU9iamVjdCAqa2V5cywgKnZhbHVlcywgKnJlczsKKworICAgIC8qIGNvbnZlcnQgZW52aXJvbm1lbnQgZGljdGlvbmFyeSB0byB3aW5kb3dzIGVudmlyb21lbnQgc3RyaW5nICovCisgICAgaWYgKCEgUHlNYXBwaW5nX0NoZWNrKGVudmlyb25tZW50KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsICJlbnZpcm9ubWVudCBtdXN0IGJlIGRpY3Rpb25hcnkgb3IgTm9uZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBlbnZzaXplID0gUHlNYXBwaW5nX0xlbmd0aChlbnZpcm9ubWVudCk7CisKKyAgICBrZXlzID0gUHlNYXBwaW5nX0tleXMoZW52aXJvbm1lbnQpOworICAgIHZhbHVlcyA9IFB5TWFwcGluZ19WYWx1ZXMoZW52aXJvbm1lbnQpOworICAgIGlmICgha2V5cyB8fCAhdmFsdWVzKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgdG90YWxzaXplID0gMTsgLyogdHJhaWxpbmcgbnVsbCBjaGFyYWN0ZXIgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgZW52c2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0KiBrZXkgPSBQeUxpc3RfR0VUX0lURU0oa2V5cywgaSk7CisgICAgICAgIFB5T2JqZWN0KiB2YWx1ZSA9IFB5TGlzdF9HRVRfSVRFTSh2YWx1ZXMsIGkpOworCisgICAgICAgIGlmICghIFB5VW5pY29kZV9DaGVjayhrZXkpIHx8ICEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiZW52aXJvbm1lbnQgY2FuIG9ubHkgY29udGFpbiBzdHJpbmdzIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHRvdGFsc2l6ZSArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChrZXkpICsgMTsgICAgLyogKzEgZm9yICc9JyAqLworICAgICAgICB0b3RhbHNpemUgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgodmFsdWUpICsgMTsgIC8qICsxIGZvciAnXDAnICovCisgICAgfQorCisgICAgYnVmZmVyID0gUHlNZW1fTWFsbG9jKHRvdGFsc2l6ZSAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgaWYgKCEgYnVmZmVyKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHAgPSBidWZmZXI7CisgICAgZW5kID0gYnVmZmVyICsgdG90YWxzaXplOworCisgICAgZm9yIChpID0gMDsgaSA8IGVudnNpemU7IGkrKykgeworICAgICAgICBQeU9iamVjdCoga2V5ID0gUHlMaXN0X0dFVF9JVEVNKGtleXMsIGkpOworICAgICAgICBQeU9iamVjdCogdmFsdWUgPSBQeUxpc3RfR0VUX0lURU0odmFsdWVzLCBpKTsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQXNVQ1M0KGtleSwgcCwgZW5kIC0gcCwgMCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBwICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGtleSk7CisgICAgICAgICpwKysgPSAnPSc7CisgICAgICAgIGlmICghUHlVbmljb2RlX0FzVUNTNCh2YWx1ZSwgcCwgZW5kIC0gcCwgMCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBwICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHZhbHVlKTsKKyAgICAgICAgKnArKyA9ICdcMCc7CisgICAgfQorCisgICAgLyogYWRkIHRyYWlsaW5nIG51bGwgYnl0ZSAqLworICAgICpwKysgPSAnXDAnOworICAgIGFzc2VydChwID09IGVuZCk7CisKKyAgICBQeV9YREVDUkVGKGtleXMpOworICAgIFB5X1hERUNSRUYodmFsdWVzKTsKKworICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsIGJ1ZmZlciwgcCAtIGJ1ZmZlcik7CisgICAgUHlNZW1fRnJlZShidWZmZXIpOworICAgIHJldHVybiByZXM7CisKKyBlcnJvcjoKKyAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisgICAgUHlfWERFQ1JFRihrZXlzKTsKKyAgICBQeV9YREVDUkVGKHZhbHVlcyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihDcmVhdGVQcm9jZXNzX2RvYywKKyJDcmVhdGVQcm9jZXNzKGFwcF9uYW1lLCBjbWRfbGluZSwgcHJvY19hdHRycywgdGhyZWFkX2F0dHJzLFxuXAorICAgICAgICAgICAgICAgaW5oZXJpdCwgZmxhZ3MsIGVudl9tYXBwaW5nLCBjdXJkaXIsXG5cCisgICAgICAgICAgICAgICBzdGFydHVwX2luZm8pIC0+IChwcm9jX2hhbmRsZSwgdGhyZWFkX2hhbmRsZSxcblwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgdGlkKVxuXAorXG5cCitDcmVhdGUgYSBuZXcgcHJvY2VzcyBhbmQgaXRzIHByaW1hcnkgdGhyZWFkLiBUaGUgcmV0dXJuXG5cCit2YWx1ZSBpcyBhIHR1cGxlIG9mIHRoZSBwcm9jZXNzIGhhbmRsZSwgdGhyZWFkIGhhbmRsZSxcblwKK3Byb2Nlc3MgSUQsIGFuZCB0aHJlYWQgSUQuXG5cCitcblwKK3Byb2NfYXR0cnMgYW5kIHRocmVhZF9hdHRycyBhcmUgaWdub3JlZCBpbnRlcm5hbGx5IGFuZCBjYW4gYmUgTm9uZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9DcmVhdGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBCT09MIHJlc3VsdDsKKyAgICBQUk9DRVNTX0lORk9STUFUSU9OIHBpOworICAgIFNUQVJUVVBJTkZPVyBzaTsKKyAgICBQeU9iamVjdCogZW52aXJvbm1lbnQ7CisgICAgd2NoYXJfdCAqd2Vudmlyb25tZW50OworCisgICAgd2NoYXJfdCogYXBwbGljYXRpb25fbmFtZTsKKyAgICB3Y2hhcl90KiBjb21tYW5kX2xpbmU7CisgICAgUHlPYmplY3QqIHByb2Nlc3NfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLworICAgIFB5T2JqZWN0KiB0aHJlYWRfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLworICAgIEJPT0wgaW5oZXJpdF9oYW5kbGVzOworICAgIERXT1JEIGNyZWF0aW9uX2ZsYWdzOworICAgIFB5T2JqZWN0KiBlbnZfbWFwcGluZzsKKyAgICB3Y2hhcl90KiBjdXJyZW50X2RpcmVjdG9yeTsKKyAgICBQeU9iamVjdCogc3RhcnR1cF9pbmZvOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWlpPTyIgRl9CT09MIEZfRFdPUkQgIk9aTzpDcmVhdGVQcm9jZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbW1hbmRfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm9jZXNzX2F0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFkX2F0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5oZXJpdF9oYW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNyZWF0aW9uX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVudl9tYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnRfZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0dXBfaW5mbykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgWmVyb01lbW9yeSgmc2ksIHNpemVvZihzaSkpOworICAgIHNpLmNiID0gc2l6ZW9mKHNpKTsKKworICAgIC8qIG5vdGU6IHdlIG9ubHkgc3VwcG9ydCBhIHNtYWxsIHN1YnNldCBvZiBhbGwgU0kgYXR0cmlidXRlcyAqLworICAgIHNpLmR3RmxhZ3MgPSBnZXR1bG9uZyhzdGFydHVwX2luZm8sICJkd0ZsYWdzIik7CisgICAgc2kud1Nob3dXaW5kb3cgPSAoV09SRClnZXR1bG9uZyhzdGFydHVwX2luZm8sICJ3U2hvd1dpbmRvdyIpOworICAgIHNpLmhTdGRJbnB1dCA9IGdldGhhbmRsZShzdGFydHVwX2luZm8sICJoU3RkSW5wdXQiKTsKKyAgICBzaS5oU3RkT3V0cHV0ID0gZ2V0aGFuZGxlKHN0YXJ0dXBfaW5mbywgImhTdGRPdXRwdXQiKTsKKyAgICBzaS5oU3RkRXJyb3IgPSBnZXRoYW5kbGUoc3RhcnR1cF9pbmZvLCAiaFN0ZEVycm9yIik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGVudl9tYXBwaW5nICE9IFB5X05vbmUpIHsKKyAgICAgICAgZW52aXJvbm1lbnQgPSBnZXRlbnZpcm9ubWVudChlbnZfbWFwcGluZyk7CisgICAgICAgIGlmICghIGVudmlyb25tZW50KQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHdlbnZpcm9ubWVudCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoZW52aXJvbm1lbnQpOworICAgICAgICBpZiAod2Vudmlyb25tZW50ID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoZW52aXJvbm1lbnQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVudmlyb25tZW50ID0gTlVMTDsKKyAgICAgICAgd2Vudmlyb25tZW50ID0gTlVMTDsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gQ3JlYXRlUHJvY2Vzc1coYXBwbGljYXRpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdF9oYW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25fZmxhZ3MgfCBDUkVBVEVfVU5JQ09ERV9FTlZJUk9OTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlbnZpcm9ubWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlfWERFQ1JFRihlbnZpcm9ubWVudCk7CisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk5rayIsCisgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFX1RPX1BZTlVNKHBpLmhQcm9jZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVfVE9fUFlOVU0ocGkuaFRocmVhZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcGkuZHdQcm9jZXNzSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGkuZHdUaHJlYWRJZCk7Cit9CisKK1B5RG9jX1NUUlZBUihEdXBsaWNhdGVIYW5kbGVfZG9jLAorIkR1cGxpY2F0ZUhhbmRsZShzb3VyY2VfcHJvY19oYW5kbGUsIHNvdXJjZV9oYW5kbGUsXG5cCisgICAgICAgICAgICAgICAgIHRhcmdldF9wcm9jX2hhbmRsZSwgdGFyZ2V0X2hhbmRsZSwgYWNjZXNzLFxuXAorICAgICAgICAgICAgICAgICBpbmhlcml0Wywgb3B0aW9uc10pIC0+IGhhbmRsZVxuXAorXG5cCitSZXR1cm4gYSBkdXBsaWNhdGUgaGFuZGxlIG9iamVjdC5cblwKK1xuXAorVGhlIGR1cGxpY2F0ZSBoYW5kbGUgcmVmZXJzIHRvIHRoZSBzYW1lIG9iamVjdCBhcyB0aGUgb3JpZ2luYWxcblwKK2hhbmRsZS4gVGhlcmVmb3JlLCBhbnkgY2hhbmdlcyB0byB0aGUgb2JqZWN0IGFyZSByZWZsZWN0ZWRcblwKK3Rocm91Z2ggYm90aCBoYW5kbGVzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0R1cGxpY2F0ZUhhbmRsZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgSEFORExFIHRhcmdldF9oYW5kbGU7CisgICAgQk9PTCByZXN1bHQ7CisKKyAgICBIQU5ETEUgc291cmNlX3Byb2Nlc3NfaGFuZGxlOworICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlOworICAgIEhBTkRMRSB0YXJnZXRfcHJvY2Vzc19oYW5kbGU7CisgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3M7CisgICAgQk9PTCBpbmhlcml0X2hhbmRsZTsKKyAgICBEV09SRCBvcHRpb25zID0gMDsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFIEZfSEFORExFIEZfSEFORExFIEZfRFdPUkQgRl9CT09MIEZfRFdPUkQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICI6RHVwbGljYXRlSGFuZGxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmc291cmNlX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YXJnZXRfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVzaXJlZF9hY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5oZXJpdF9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9ucykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IER1cGxpY2F0ZUhhbmRsZSgKKyAgICAgICAgc291cmNlX3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICBzb3VyY2VfaGFuZGxlLAorICAgICAgICB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICZ0YXJnZXRfaGFuZGxlLAorICAgICAgICBkZXNpcmVkX2FjY2VzcywKKyAgICAgICAgaW5oZXJpdF9oYW5kbGUsCisgICAgICAgIG9wdGlvbnMKKyAgICApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKHRhcmdldF9oYW5kbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0V4aXRQcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBVSU5UIHVFeGl0Q29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX1VJTlQsICZ1RXhpdENvZGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICNpZiBkZWZpbmVkKFB5X0RFQlVHKQorICAgICAgICBTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SU3xTRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHwKKyAgICAgICAgICAgICAgICAgICAgIFNFTV9OT0dQRkFVTFRFUlJPUkJPWHxTRU1fTk9PUEVORklMRUVSUk9SQk9YKTsKKyAgICAgICAgX0NydFNldFJlcG9ydE1vZGUoX0NSVF9BU1NFUlQsIF9DUlREQkdfTU9ERV9ERUJVRyk7CisgICAgI2VuZGlmCisKKyAgICBFeGl0UHJvY2Vzcyh1RXhpdENvZGUpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihHZXRDdXJyZW50UHJvY2Vzc19kb2MsCisiR2V0Q3VycmVudFByb2Nlc3MoKSAtPiBoYW5kbGVcblwKK1xuXAorUmV0dXJuIGEgaGFuZGxlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRDdXJyZW50UHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldEN1cnJlbnRQcm9jZXNzIikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTShHZXRDdXJyZW50UHJvY2VzcygpKTsKK30KKworUHlEb2NfU1RSVkFSKEdldEV4aXRDb2RlUHJvY2Vzc19kb2MsCisiR2V0RXhpdENvZGVQcm9jZXNzKGhhbmRsZSkgLT4gRXhpdCBjb2RlXG5cCitcblwKK1JldHVybiB0aGUgdGVybWluYXRpb24gc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIERXT1JEIGV4aXRfY29kZTsKKyAgICBCT09MIHJlc3VsdDsKKworICAgIEhBTkRMRSBwcm9jZXNzOworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gR2V0RXhpdENvZGVQcm9jZXNzKHByb2Nlc3MsICZleGl0X2NvZGUpOworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGV4aXRfY29kZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0TGFzdEVycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0RXT1JELCBHZXRMYXN0RXJyb3IoKSk7Cit9CisKK1B5RG9jX1NUUlZBUihHZXRNb2R1bGVGaWxlTmFtZV9kb2MsCisiR2V0TW9kdWxlRmlsZU5hbWUobW9kdWxlKSAtPiBwYXRoXG5cCitcblwKK1JldHVybiB0aGUgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnNcblwKK3RoZSBzcGVjaWZpZWQgbW9kdWxlLiBUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIGxvYWRlZCBieSB0aGVcblwKK2N1cnJlbnQgcHJvY2Vzcy5cblwKK1xuXAorVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgaGFuZGxlIHRvIHRoZSBsb2FkZWQgbW9kdWxlXG5cCit3aG9zZSBwYXRoIGlzIGJlaW5nIHJlcXVlc3RlZC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgMCwgXG5cCitHZXRNb2R1bGVGaWxlTmFtZSByZXRyaWV2ZXMgdGhlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgZmlsZVxuXAorb2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgQk9PTCByZXN1bHQ7CisgICAgSE1PRFVMRSBtb2R1bGU7CisgICAgV0NIQVIgZmlsZW5hbWVbTUFYX1BBVEhdOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiOkdldE1vZHVsZUZpbGVOYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2R1bGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IEdldE1vZHVsZUZpbGVOYW1lVyhtb2R1bGUsIGZpbGVuYW1lLCBNQVhfUEFUSCk7CisgICAgZmlsZW5hbWVbTUFYX1BBVEgtMV0gPSAnXDAnOworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoZmlsZW5hbWUsIHdjc2xlbihmaWxlbmFtZSkpOworfQorCitQeURvY19TVFJWQVIoR2V0U3RkSGFuZGxlX2RvYywKKyJHZXRTdGRIYW5kbGUoaGFuZGxlKSAtPiBpbnRlZ2VyXG5cCitcblwKK1JldHVybiBhIGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIHN0YW5kYXJkIGRldmljZVxuXAorKFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLCBTVERfRVJST1JfSEFORExFKS5cblwKK1RoZSBpbnRlZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgaGFuZGxlIG9iamVjdCBpcyByZXR1cm5lZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRTdGRIYW5kbGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgRFdPUkQgc3RkX2hhbmRsZTsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9EV09SRCAiOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaGFuZGxlID0gR2V0U3RkSGFuZGxlKHN0ZF9oYW5kbGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgaWYgKCEgaGFuZGxlKSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgfQorCisgICAgLyogbm90ZTogcmV0dXJucyBpbnRlZ2VyLCBub3QgaGFuZGxlIG9iamVjdCAqLworICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKTsKK30KKworUHlEb2NfU1RSVkFSKEdldFZlcnNpb25fZG9jLAorIkdldFZlcnNpb24oKSAtPiB2ZXJzaW9uXG5cCitcblwKK1JldHVybiB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRWZXJzaW9uKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6R2V0VmVyc2lvbiIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhHZXRWZXJzaW9uKCkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX09wZW5Qcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3M7CisgICAgQk9PTCBiSW5oZXJpdEhhbmRsZTsKKyAgICBEV09SRCBkd1Byb2Nlc3NJZDsKKyAgICBIQU5ETEUgaGFuZGxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfRFdPUkQgRl9CT09MIEZfRFdPUkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZkd0Rlc2lyZWRBY2Nlc3MsICZiSW5oZXJpdEhhbmRsZSwgJmR3UHJvY2Vzc0lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBoYW5kbGUgPSBPcGVuUHJvY2Vzcyhkd0Rlc2lyZWRBY2Nlc3MsIGJJbmhlcml0SGFuZGxlLCBkd1Byb2Nlc3NJZCk7CisgICAgaWYgKGhhbmRsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9QZWVrTmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBzaXplID0gMDsKKyAgICBQeU9iamVjdCAqYnVmID0gTlVMTDsKKyAgICBEV09SRCBucmVhZCwgbmF2YWlsLCBubGVmdDsKKyAgICBCT09MIHJldDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAifGk6UGVla05hbWVkUGlwZSIgLCAmaGFuZGxlLCAmc2l6ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgc2l6ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSkgeworICAgICAgICBidWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgICAgICBpZiAoIWJ1ZikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJldCA9IFBlZWtOYW1lZFBpcGUoaGFuZGxlLCBQeUJ5dGVzX0FTX1NUUklORyhidWYpLCBzaXplLCAmbnJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hdmFpbCwgJm5sZWZ0KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihidWYpOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmJ1ZiwgbnJlYWQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOaWkiLCBidWYsIG5hdmFpbCwgbmxlZnQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXQgPSBQZWVrTmFtZWRQaXBlKGhhbmRsZSwgTlVMTCwgMCwgTlVMTCwgJm5hdmFpbCwgJm5sZWZ0KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaWkiLCBuYXZhaWwsIG5sZWZ0KTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfUmVhZEZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBzaXplOworICAgIERXT1JEIG5yZWFkOworICAgIFB5T2JqZWN0ICpidWY7CisgICAgQk9PTCByZXQ7CisgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKKyAgICBEV09SRCBlcnI7CisgICAgT3ZlcmxhcHBlZE9iamVjdCAqb3ZlcmxhcHBlZCA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAic2l6ZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFICJpfGk6UmVhZEZpbGUiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJnNpemUsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYnVmID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICBpZiAoIWJ1ZikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHVzZV9vdmVybGFwcGVkKSB7CisgICAgICAgIG92ZXJsYXBwZWQgPSBuZXdfb3ZlcmxhcHBlZChoYW5kbGUpOworICAgICAgICBpZiAoIW92ZXJsYXBwZWQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgLyogU3RlYWxzIHJlZmVyZW5jZSB0byBidWYgKi8KKyAgICAgICAgb3ZlcmxhcHBlZC0+cmVhZF9idWZmZXIgPSBidWY7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldCA9IFJlYWRGaWxlKGhhbmRsZSwgUHlCeXRlc19BU19TVFJJTkcoYnVmKSwgc2l6ZSwgJm5yZWFkLAorICAgICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQgPyAmb3ZlcmxhcHBlZC0+b3ZlcmxhcHBlZCA6IE5VTEwpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBlcnIgPSByZXQgPyAwIDogR2V0TGFzdEVycm9yKCk7CisKKyAgICBpZiAob3ZlcmxhcHBlZCkgeworICAgICAgICBpZiAoIXJldCkgeworICAgICAgICAgICAgaWYgKGVyciA9PSBFUlJPUl9JT19QRU5ESU5HKQorICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQtPnBlbmRpbmcgPSAxOworICAgICAgICAgICAgZWxzZSBpZiAoZXJyICE9IEVSUk9SX01PUkVfREFUQSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvdmVybGFwcGVkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5JIiwgKFB5T2JqZWN0ICopIG92ZXJsYXBwZWQsIGVycik7CisgICAgfQorCisgICAgaWYgKCFyZXQgJiYgZXJyICE9IEVSUk9SX01PUkVfREFUQSkgeworICAgICAgICBQeV9ERUNSRUYoYnVmKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgIH0KKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZidWYsIG5yZWFkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5JIiwgYnVmLCBlcnIpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBIQU5ETEUgaE5hbWVkUGlwZTsKKyAgICBQeU9iamVjdCAqb0FyZ3NbM107CisgICAgRFdPUkQgZHdBcmdzWzNdLCAqcEFyZ3NbM10gPSB7TlVMTCwgTlVMTCwgTlVMTH07CisgICAgaW50IGk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIk9PTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZoTmFtZWRQaXBlLCAmb0FyZ3NbMF0sICZvQXJnc1sxXSwgJm9BcmdzWzJdKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeUVycl9DbGVhcigpOworCisgICAgZm9yIChpID0gMCA7IGkgPCAzIDsgaSsrKSB7CisgICAgICAgIGlmIChvQXJnc1tpXSAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICBkd0FyZ3NbaV0gPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKG9BcmdzW2ldKTsKKyAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcEFyZ3NbaV0gPSAmZHdBcmdzW2ldOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShoTmFtZWRQaXBlLCBwQXJnc1swXSwgcEFyZ3NbMV0sIHBBcmdzWzJdKSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihUZXJtaW5hdGVQcm9jZXNzX2RvYywKKyJUZXJtaW5hdGVQcm9jZXNzKGhhbmRsZSwgZXhpdF9jb2RlKSAtPiBOb25lXG5cCitcblwKK1Rlcm1pbmF0ZSB0aGUgc3BlY2lmaWVkIHByb2Nlc3MgYW5kIGFsbCBvZiBpdHMgdGhyZWFkcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9UZXJtaW5hdGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBCT09MIHJlc3VsdDsKKworICAgIEhBTkRMRSBwcm9jZXNzOworICAgIFVJTlQgZXhpdF9jb2RlOworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgRl9VSU5UICI6VGVybWluYXRlUHJvY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJvY2VzcywgJmV4aXRfY29kZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gVGVybWluYXRlUHJvY2Vzcyhwcm9jZXNzLCBleGl0X2NvZGUpOworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJldHVybiBQeV9Ob25lOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1dhaXROYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIExQQ1RTVFIgbHBOYW1lZFBpcGVOYW1lOworICAgIERXT1JEIG5UaW1lT3V0OworICAgIEJPT0wgc3VjY2VzczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyIgRl9EV09SRCwgJmxwTmFtZWRQaXBlTmFtZSwgJm5UaW1lT3V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgc3VjY2VzcyA9IFdhaXROYW1lZFBpcGUobHBOYW1lZFBpcGVOYW1lLCBuVGltZU91dCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0cyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgRFdPUkQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpoYW5kbGVfc2VxOworICAgIEhBTkRMRSBoYW5kbGVzW01BWElNVU1fV0FJVF9PQkpFQ1RTXTsKKyAgICBIQU5ETEUgc2lnaW50X2V2ZW50ID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG5oYW5kbGVzLCBpOworICAgIEJPT0wgd2FpdF9mbGFnOworICAgIERXT1JEIG1pbGxpc2Vjb25kcyA9IElORklOSVRFOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIiBGX0JPT0wgInwiIEZfRFdPUkQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIjpXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZV9zZXEsICZ3YWl0X2ZsYWcsICZtaWxsaXNlY29uZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhoYW5kbGVfc2VxKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInNlcXVlbmNlIHR5cGUgZXhwZWN0ZWQsIGdvdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoaGFuZGxlX3NlcSktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbmhhbmRsZXMgPSBQeVNlcXVlbmNlX0xlbmd0aChoYW5kbGVfc2VxKTsKKyAgICBpZiAobmhhbmRsZXMgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChuaGFuZGxlcyA8IDAgfHwgbmhhbmRsZXMgPj0gTUFYSU1VTV9XQUlUX09CSkVDVFMgLSAxKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIm5lZWQgYXQgbW9zdCAlemQgaGFuZGxlcywgZ290IGEgc2VxdWVuY2Ugb2YgbGVuZ3RoICV6ZCIsCisgICAgICAgICAgICAgICAgICAgICBNQVhJTVVNX1dBSVRfT0JKRUNUUyAtIDEsIG5oYW5kbGVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBuaGFuZGxlczsgaSsrKSB7CisgICAgICAgIEhBTkRMRSBoOworICAgICAgICBQeU9iamVjdCAqdiA9IFB5U2VxdWVuY2VfR2V0SXRlbShoYW5kbGVfc2VxLCBpKTsKKyAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKHYsIEZfSEFORExFLCAmaCkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGhhbmRsZXNbaV0gPSBoOworICAgICAgICBQeV9ERUNSRUYodik7CisgICAgfQorICAgIC8qIElmIHRoaXMgaXMgdGhlIG1haW4gdGhyZWFkIHRoZW4gbWFrZSB0aGUgd2FpdCBpbnRlcnJ1cHRpYmxlCisgICAgICAgYnkgQ3RybC1DIHVubGVzcyB3ZSBhcmUgd2FpdGluZyBmb3IgKmFsbCogaGFuZGxlcyAqLworICAgIGlmICghd2FpdF9mbGFnICYmIF9QeU9TX0lzTWFpblRocmVhZCgpKSB7CisgICAgICAgIHNpZ2ludF9ldmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CisgICAgICAgIGFzc2VydChzaWdpbnRfZXZlbnQgIT0gTlVMTCk7CisgICAgICAgIGhhbmRsZXNbbmhhbmRsZXMrK10gPSBzaWdpbnRfZXZlbnQ7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChzaWdpbnRfZXZlbnQgIT0gTlVMTCkKKyAgICAgICAgUmVzZXRFdmVudChzaWdpbnRfZXZlbnQpOworICAgIHJlc3VsdCA9IFdhaXRGb3JNdWx0aXBsZU9iamVjdHMoKERXT1JEKSBuaGFuZGxlcywgaGFuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRfZmxhZywgbWlsbGlzZWNvbmRzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCA9PSBXQUlUX0ZBSUxFRCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgIGVsc2UgaWYgKHNpZ2ludF9ldmVudCAhPSBOVUxMICYmIHJlc3VsdCA9PSBXQUlUX09CSkVDVF8wICsgbmhhbmRsZXMgLSAxKSB7CisgICAgICAgIGVycm5vID0gRUlOVFI7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygoaW50KSByZXN1bHQpOworfQorCitQeURvY19TVFJWQVIoV2FpdEZvclNpbmdsZU9iamVjdF9kb2MsCisiV2FpdEZvclNpbmdsZU9iamVjdChoYW5kbGUsIHRpbWVvdXQpIC0+IHJlc3VsdFxuXAorXG5cCitXYWl0IHVudGlsIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGlzIGluIHRoZSBzaWduYWxlZCBzdGF0ZSBvclxuXAordGhlIHRpbWUtb3V0IGludGVydmFsIGVsYXBzZXMuIFRoZSB0aW1lb3V0IHZhbHVlIGlzIHNwZWNpZmllZFxuXAoraW4gbWlsbGlzZWNvbmRzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3QoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIERXT1JEIHJlc3VsdDsKKworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgRFdPUkQgbWlsbGlzZWNvbmRzOworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgRl9EV09SRCAiOldhaXRGb3JTaW5nbGVPYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtaWxsaXNlY29uZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGhhbmRsZSwgbWlsbGlzZWNvbmRzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCA9PSBXQUlUX0ZBSUxFRCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZXN1bHQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1dyaXRlRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgUHlfYnVmZmVyIF9idWYsICpidWY7CisgICAgUHlPYmplY3QgKmJ1Zm9iajsKKyAgICBEV09SRCB3cml0dGVuOworICAgIEJPT0wgcmV0OworICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CisgICAgRFdPUkQgZXJyOworICAgIE92ZXJsYXBwZWRPYmplY3QgKm92ZXJsYXBwZWQgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaGFuZGxlIiwgImJ1ZmZlciIsICJvdmVybGFwcGVkIiwgTlVMTH07CisKKyAgICAvKiBGaXJzdCBnZXQgaGFuZGxlIGFuZCB1c2Vfb3ZlcmxhcHBlZCB0byBrbm93IHdoaWNoIFB5X2J1ZmZlciB0byB1c2UgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFICJPfGk6V3JpdGVGaWxlIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsICZidWZvYmosICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHVzZV9vdmVybGFwcGVkKSB7CisgICAgICAgIG92ZXJsYXBwZWQgPSBuZXdfb3ZlcmxhcHBlZChoYW5kbGUpOworICAgICAgICBpZiAoIW92ZXJsYXBwZWQpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgYnVmID0gJm92ZXJsYXBwZWQtPndyaXRlX2J1ZmZlcjsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBidWYgPSAmX2J1ZjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYnVmb2JqLCAieSoiLCBidWYpKSB7CisgICAgICAgIFB5X1hERUNSRUYob3ZlcmxhcHBlZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXQgPSBXcml0ZUZpbGUoaGFuZGxlLCBidWYtPmJ1ZiwgYnVmLT5sZW4sICZ3cml0dGVuLAorICAgICAgICAgICAgICAgICAgICBvdmVybGFwcGVkID8gJm92ZXJsYXBwZWQtPm92ZXJsYXBwZWQgOiBOVUxMKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgZXJyID0gcmV0ID8gMCA6IEdldExhc3RFcnJvcigpOworCisgICAgaWYgKG92ZXJsYXBwZWQpIHsKKyAgICAgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgICAgIGlmIChlcnIgPT0gRVJST1JfSU9fUEVORElORykKKyAgICAgICAgICAgICAgICBvdmVybGFwcGVkLT5wZW5kaW5nID0gMTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvdmVybGFwcGVkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5JIiwgKFB5T2JqZWN0ICopIG92ZXJsYXBwZWQsIGVycik7CisgICAgfQorCisgICAgUHlCdWZmZXJfUmVsZWFzZShidWYpOworICAgIGlmICghcmV0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIklJIiwgd3JpdHRlbiwgZXJyKTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgd2luYXBpX2Z1bmN0aW9uc1tdID0geworICAgIHsiQ2xvc2VIYW5kbGUiLCB3aW5hcGlfQ2xvc2VIYW5kbGUsIE1FVEhfVkFSQVJHUywKKyAgICAgQ2xvc2VIYW5kbGVfZG9jfSwKKyAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUsCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsICIifSwKKyAgICB7IkNyZWF0ZUZpbGUiLCB3aW5hcGlfQ3JlYXRlRmlsZSwgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJDcmVhdGVOYW1lZFBpcGUiLCB3aW5hcGlfQ3JlYXRlTmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IkNyZWF0ZVBpcGUiLCB3aW5hcGlfQ3JlYXRlUGlwZSwgTUVUSF9WQVJBUkdTLAorICAgICBDcmVhdGVQaXBlX2RvY30sCisgICAgeyJDcmVhdGVQcm9jZXNzIiwgd2luYXBpX0NyZWF0ZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgQ3JlYXRlUHJvY2Vzc19kb2N9LAorICAgIHsiRHVwbGljYXRlSGFuZGxlIiwgd2luYXBpX0R1cGxpY2F0ZUhhbmRsZSwgTUVUSF9WQVJBUkdTLAorICAgICBEdXBsaWNhdGVIYW5kbGVfZG9jfSwKKyAgICB7IkV4aXRQcm9jZXNzIiwgd2luYXBpX0V4aXRQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IkdldEN1cnJlbnRQcm9jZXNzIiwgd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIEdldEN1cnJlbnRQcm9jZXNzX2RvY30sCisgICAgeyJHZXRFeGl0Q29kZVByb2Nlc3MiLCB3aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIEdldEV4aXRDb2RlUHJvY2Vzc19kb2N9LAorICAgIHsiR2V0TGFzdEVycm9yIiwgd2luYXBpX0dldExhc3RFcnJvciwgTUVUSF9OT0FSR1MsCisgICAgIEdldEN1cnJlbnRQcm9jZXNzX2RvY30sCisgICAgeyJHZXRNb2R1bGVGaWxlTmFtZSIsIHdpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZSwgTUVUSF9WQVJBUkdTLAorICAgICBHZXRNb2R1bGVGaWxlTmFtZV9kb2N9LAorICAgIHsiR2V0U3RkSGFuZGxlIiwgd2luYXBpX0dldFN0ZEhhbmRsZSwgTUVUSF9WQVJBUkdTLAorICAgICBHZXRTdGRIYW5kbGVfZG9jfSwKKyAgICB7IkdldFZlcnNpb24iLCB3aW5hcGlfR2V0VmVyc2lvbiwgTUVUSF9WQVJBUkdTLAorICAgICBHZXRWZXJzaW9uX2RvY30sCisgICAgeyJPcGVuUHJvY2VzcyIsIHdpbmFwaV9PcGVuUHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJQZWVrTmFtZWRQaXBlIiwgd2luYXBpX1BlZWtOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiUmVhZEZpbGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX1JlYWRGaWxlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAiIn0sCisgICAgeyJTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSIsIHdpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSwgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJUZXJtaW5hdGVQcm9jZXNzIiwgd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgVGVybWluYXRlUHJvY2Vzc19kb2N9LAorICAgIHsiV2FpdE5hbWVkUGlwZSIsIHdpbmFwaV9XYWl0TmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLCB3aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0cywgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJXYWl0Rm9yU2luZ2xlT2JqZWN0Iiwgd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3QsIE1FVEhfVkFSQVJHUywKKyAgICAgV2FpdEZvclNpbmdsZU9iamVjdF9kb2N9LAorICAgIHsiV3JpdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKXdpbmFwaV9Xcml0ZUZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICIifSwKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgd2luYXBpX21vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl93aW5hcGkiLAorICAgIE5VTEwsCisgICAgLTEsCisgICAgd2luYXBpX2Z1bmN0aW9ucywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCisjZGVmaW5lIFdJTkFQSV9DT05TVEFOVChmbXQsIGNvbikgXAorICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICNjb24sIFB5X0J1aWxkVmFsdWUoZm10LCBjb24pKQorCitQeU1PRElOSVRfRlVOQworUHlJbml0X193aW5hcGkodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqZDsKKyAgICBQeU9iamVjdCAqbTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJk92ZXJsYXBwZWRUeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmd2luYXBpX21vZHVsZSk7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CisKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiT3ZlcmxhcHBlZCIsIChQeU9iamVjdCAqKSAmT3ZlcmxhcHBlZFR5cGUpOworCisgICAgLyogY29uc3RhbnRzICovCisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIENSRUFURV9ORVdfQ09OU09MRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIERVUExJQ0FURV9TQU1FX0FDQ0VTUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIERVUExJQ0FURV9DTE9TRV9TT1VSQ0UpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9BTFJFQURZX0VYSVNUUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX0JST0tFTl9QSVBFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfSU9fUEVORElORyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX01PUkVfREFUQSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX05FVE5BTUVfREVMRVRFRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX05PX1NZU1RFTV9SRVNPVVJDRVMpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9NT1JFX0RBVEEpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9ORVROQU1FX0RFTEVURUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9OT19EQVRBKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTk9fU1lTVEVNX1JFU09VUkNFUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX09QRVJBVElPTl9BQk9SVEVEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfUElQRV9CVVNZKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfUElQRV9DT05ORUNURUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9TRU1fVElNRU9VVCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRklMRV9GTEFHX09WRVJMQVBQRUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBGSUxFX0dFTkVSSUNfUkVBRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEZJTEVfR0VORVJJQ19XUklURSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEdFTkVSSUNfUkVBRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEdFTkVSSUNfV1JJVEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBJTkZJTklURSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIE5NUFdBSVRfV0FJVF9GT1JFVkVSKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgT1BFTl9FWElTVElORyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfQUNDRVNTX0RVUExFWCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfQUNDRVNTX0lOQk9VTkQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX1JFQURNT0RFX01FU1NBR0UpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX1RZUEVfTUVTU0FHRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfV0FJVCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBST0NFU1NfQUxMX0FDQ0VTUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBST0NFU1NfRFVQX0hBTkRMRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNUQVJURl9VU0VTSE9XV0lORE9XKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1RBUlRGX1VTRVNUREhBTkRMRVMpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVERfSU5QVVRfSEFORExFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1REX09VVFBVVF9IQU5ETEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVERfRVJST1JfSEFORExFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1RJTExfQUNUSVZFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1dfSElERSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFdBSVRfT0JKRUNUXzApOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBXQUlUX1RJTUVPVVQpOworCisgICAgV0lOQVBJX0NPTlNUQU5UKCJpIiwgTlVMTCk7CisKKyAgICByZXR1cm4gbTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvYXJyYXltb2R1bGUuYyBiL01vZHVsZXMvYXJyYXltb2R1bGUuYwppbmRleCAyZDRlZTcyLi4wNGViNjdjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBmdW5jdGlvbnMgYXJlbid0IHZpc2libGUgeWV0LgogICovCiBzdHJ1Y3QgYXJyYXlkZXNjciB7Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBjaGFyIHR5cGVjb2RlOwogICAgIGludCBpdGVtc2l6ZTsKICAgICBQeU9iamVjdCAqICgqZ2V0aXRlbSkoc3RydWN0IGFycmF5b2JqZWN0ICosIFB5X3NzaXplX3QpOwogICAgIGludCAoKnNldGl0ZW0pKHN0cnVjdCBhcnJheW9iamVjdCAqLCBQeV9zc2l6ZV90LCBQeU9iamVjdCAqKTsKQEAgLTM1Niw2ICszNTYsNTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmZGVmIEhBVkVfTE9OR19MT05HCisKK3N0YXRpYyBQeU9iamVjdCAqCitxX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKChQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0pOworfQorCitzdGF0aWMgaW50CitxX3NldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQoreworICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGlmICghUHlBcmdfUGFyc2UodiwgIkw7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIiLCAmeCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoaSA+PSAwKQorICAgICAgICAoKFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitRUV9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoCisgICAgICAgICgodW5zaWduZWQgUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldKTsKK30KKworc3RhdGljIGludAorUVFfc2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKnYpCit7CisgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICB4ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2KTsKKyAgICAgICAgaWYgKHggPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFBZX0xPTkdfTE9ORyB5OworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKHYsICJMO2FycmF5IGl0ZW0gbXVzdCBiZSBpbnRlZ2VyIiwgJnkpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoeSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICJ1bnNpZ25lZCBsb25nIGxvbmcgaXMgbGVzcyB0aGFuIG1pbmltdW0iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB4ID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyl5OworICAgIH0KKworICAgIGlmIChpID49IDApCisgICAgICAgICgodW5zaWduZWQgUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldID0geDsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlPYmplY3QgKgogZl9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQogewpAQCAtNDA2LDYgKzQ1OSwxMCBAQAogICAgIHsnSScsIHNpemVvZihpbnQpLCBJSV9nZXRpdGVtLCBJSV9zZXRpdGVtLCAiSSIsIDEsIDB9LAogICAgIHsnbCcsIHNpemVvZihsb25nKSwgbF9nZXRpdGVtLCBsX3NldGl0ZW0sICJsIiwgMSwgMX0sCiAgICAgeydMJywgc2l6ZW9mKGxvbmcpLCBMTF9nZXRpdGVtLCBMTF9zZXRpdGVtLCAiTCIsIDEsIDB9LAorI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgeydxJywgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIHFfZ2V0aXRlbSwgcV9zZXRpdGVtLCAicSIsIDEsIDF9LAorICAgIHsnUScsIHNpemVvZihQWV9MT05HX0xPTkcpLCBRUV9nZXRpdGVtLCBRUV9zZXRpdGVtLCAiUSIsIDEsIDB9LAorI2VuZGlmCiAgICAgeydmJywgc2l6ZW9mKGZsb2F0KSwgZl9nZXRpdGVtLCBmX3NldGl0ZW0sICJmIiwgMCwgMH0sCiAgICAgeydkJywgc2l6ZW9mKGRvdWJsZSksIGRfZ2V0aXRlbSwgZF9zZXRpdGVtLCAiZCIsIDAsIDB9LAogICAgIHsnXDAnLCAwLCAwLCAwLCAwLCAwLCAwfSAvKiBTZW50aW5lbCAqLwpAQCAtNTE0LDEwICs1NzEsOCBAQAogICAgIFB5X3NzaXplX3QgaSwgazsKICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCFhcnJheV9DaGVjayh2KSB8fCAhYXJyYXlfQ2hlY2sodykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIWFycmF5X0NoZWNrKHYpIHx8ICFhcnJheV9DaGVjayh3KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgdmEgPSAoYXJyYXlvYmplY3QgKil2OwogICAgIHdhID0gKGFycmF5b2JqZWN0ICopdzsKQEAgLTg3Niw3ICs5MzEsNiBAQAogICAgIGlmIChQeV9TSVpFKHNlbGYpID4gMCkgewogICAgICAgICBpZiAobiA8IDApCiAgICAgICAgICAgICBuID0gMDsKLSAgICAgICAgaXRlbXMgPSBzZWxmLT5vYl9pdGVtOwogICAgICAgICBpZiAoKHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZSAhPSAwKSAmJgogICAgICAgICAgICAgKFB5X1NJWkUoc2VsZikgPiBQWV9TU0laRV9UX01BWCAvIHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZSkpIHsKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMTE5MSw2ICsxMjQ1LDcgQEAKICAgICBQeU9iamVjdCAqZiwgKmIsICpyZXM7CiAgICAgUHlfc3NpemVfdCBpdGVtc2l6ZSA9IHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZTsKICAgICBQeV9zc2l6ZV90IG4sIG5ieXRlczsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKICAgICBpbnQgbm90X2Vub3VnaF9ieXRlczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT246ZnJvbWZpbGUiLCAmZiwgJm4pKQpAQCAtMTIwMiw3ICsxMjU3LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgYiA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgInJlYWQiLCAibiIsIG5ieXRlcyk7CisgICAgYiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfcmVhZCwgIm4iLCBuYnl0ZXMpOwogICAgIGlmIChiID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMjU5LDEyICsxMzE0LDE0IEBACiAgICAgICAgIGNoYXIqIHB0ciA9IHNlbGYtPm9iX2l0ZW0gKyBpKkJMT0NLU0laRTsKICAgICAgICAgUHlfc3NpemVfdCBzaXplID0gQkxPQ0tTSVpFOwogICAgICAgICBQeU9iamVjdCAqYnl0ZXMsICpyZXM7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogICAgICAgICBpZiAoaSpCTE9DS1NJWkUgKyBzaXplID4gbmJ5dGVzKQogICAgICAgICAgICAgc2l6ZSA9IG5ieXRlcyAtIGkqQkxPQ0tTSVpFOwogICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocHRyLCBzaXplKTsKICAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmLCAid3JpdGUiLCAiTyIsIGJ5dGVzKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF93cml0ZSwgIk8iLCBieXRlcyk7CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQ1Niw3ICsxNTEzLDcgQEAKIHsKICAgICBQeV9VTklDT0RFICp1c3RyOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBQeV9VTklDT0RFIHR5cGVjb2RlOworICAgIGNoYXIgdHlwZWNvZGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInUjOmZyb211bmljb2RlIiwgJnVzdHIsICZuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDkxLDcgKzE1NDgsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X3RvdW5pY29kZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKLSAgICBQeV9VTklDT0RFIHR5cGVjb2RlOworICAgIGNoYXIgdHlwZWNvZGU7CiAgICAgdHlwZWNvZGUgPSBzZWxmLT5vYl9kZXNjci0+dHlwZWNvZGU7CiAgICAgaWYgKCh0eXBlY29kZSAhPSAndScpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtMTYwMSw3ICsxNjU4LDcgQEAKICAqIGJlIGZvdW5kLgogICovCiBzdGF0aWMgZW51bSBtYWNoaW5lX2Zvcm1hdF9jb2RlCi10eXBlY29kZV90b19tZm9ybWF0X2NvZGUoaW50IHR5cGVjb2RlKQordHlwZWNvZGVfdG9fbWZvcm1hdF9jb2RlKGNoYXIgdHlwZWNvZGUpCiB7CiAjaWZkZWYgV09SRFNfQklHRU5ESUFOCiAgICAgY29uc3QgaW50IGlzX2JpZ19lbmRpYW4gPSAxOwpAQCAtMTY3MSw2ICsxNzI4LDE2IEBACiAgICAgICAgIGludHNpemUgPSBzaXplb2YobG9uZyk7CiAgICAgICAgIGlzX3NpZ25lZCA9IDA7CiAgICAgICAgIGJyZWFrOworI2lmIEhBVkVfTE9OR19MT05HCisgICAgY2FzZSAncSc6CisgICAgICAgIGludHNpemUgPSBzaXplb2YoUFlfTE9OR19MT05HKTsKKyAgICAgICAgaXNfc2lnbmVkID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnUSc6CisgICAgICAgIGludHNpemUgPSBzaXplb2YoUFlfTE9OR19MT05HKTsKKyAgICAgICAgaXNfc2lnbmVkID0gMDsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gVU5LTk9XTl9GT1JNQVQ7CiAgICAgfQpAQCAtMTcwMSw3ICsxNzY4LDcgQEAKICAqIE5VTEwgaXMgcmV0dXJuZWQgdG8gaW5kaWNhdGUgYSBmYWlsdXJlLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotbWFrZV9hcnJheShQeVR5cGVPYmplY3QgKmFycmF5dHlwZSwgUHlfVU5JQ09ERSB0eXBlY29kZSwgUHlPYmplY3QgKml0ZW1zKQorbWFrZV9hcnJheShQeVR5cGVPYmplY3QgKmFycmF5dHlwZSwgY2hhciB0eXBlY29kZSwgUHlPYmplY3QgKml0ZW1zKQogewogICAgIFB5T2JqZWN0ICpuZXdfYXJnczsKICAgICBQeU9iamVjdCAqYXJyYXlfb2JqOwpAQCAtMTcxMCw3ICsxNzc3LDcgQEAKICAgICBhc3NlcnQoYXJyYXl0eXBlICE9IE5VTEwpOwogICAgIGFzc2VydChpdGVtcyAhPSBOVUxMKTsKIAotICAgIHR5cGVjb2RlX29iaiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmdHlwZWNvZGUsIDEpOworICAgIHR5cGVjb2RlX29iaiA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCh0eXBlY29kZSk7CiAgICAgaWYgKHR5cGVjb2RlX29iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTc0MCwxNyArMTgwNywxNCBAQAogICAgIFB5T2JqZWN0ICppdGVtczsKICAgICBQeU9iamVjdCAqY29udmVydGVkX2l0ZW1zOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgaW50IHR5cGVjb2RlX2ludDsKLSAgICBQeV9VTklDT0RFIHR5cGVjb2RlOworICAgIGludCB0eXBlY29kZTsKICAgICBlbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUgbWZvcm1hdF9jb2RlOwogICAgIHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT0NpTzphcnJheS5fYXJyYXlfcmVjb25zdHJ1Y3RvciIsCi0gICAgICAgICAgICAgICAgICAgICZhcnJheXR5cGUsICZ0eXBlY29kZV9pbnQsICZtZm9ybWF0X2NvZGUsICZpdGVtcykpCisgICAgICAgICAgICAgICAgICAgICZhcnJheXR5cGUsICZ0eXBlY29kZSwgJm1mb3JtYXRfY29kZSwgJml0ZW1zKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0eXBlY29kZSA9IChQeV9VTklDT0RFKXR5cGVjb2RlX2ludDsKLQogICAgIGlmICghUHlUeXBlX0NoZWNrKGFycmF5dHlwZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICJmaXJzdCBhcmd1bWVudCBtdXN0IGEgdHlwZSBvYmplY3QsIG5vdCAlLjIwMHMiLApAQCAtMTc2NCw3ICsxODI4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGZvciAoZGVzY3IgPSBkZXNjcmlwdG9yczsgZGVzY3ItPnR5cGVjb2RlICE9ICdcMCc7IGRlc2NyKyspIHsKLSAgICAgICAgaWYgKGRlc2NyLT50eXBlY29kZSA9PSB0eXBlY29kZSkKKyAgICAgICAgaWYgKChpbnQpZGVzY3ItPnR5cGVjb2RlID09IHR5cGVjb2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChkZXNjci0+dHlwZWNvZGUgPT0gJ1wwJykgewpAQCAtMTc4Niw5ICsxODUwLDkgQEAKICAgICB9CiAKICAgICAvKiBGYXN0IHBhdGg6IE5vIGRlY29kaW5nIGhhcyB0byBiZSBkb25lLiAqLwotICAgIGlmIChtZm9ybWF0X2NvZGUgPT0gdHlwZWNvZGVfdG9fbWZvcm1hdF9jb2RlKHR5cGVjb2RlKSB8fAorICAgIGlmIChtZm9ybWF0X2NvZGUgPT0gdHlwZWNvZGVfdG9fbWZvcm1hdF9jb2RlKChjaGFyKXR5cGVjb2RlKSB8fAogICAgICAgICBtZm9ybWF0X2NvZGUgPT0gVU5LTk9XTl9GT1JNQVQpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VfYXJyYXkoYXJyYXl0eXBlLCB0eXBlY29kZSwgaXRlbXMpOworICAgICAgICByZXR1cm4gbWFrZV9hcnJheShhcnJheXR5cGUsIChjaGFyKXR5cGVjb2RlLCBpdGVtcyk7CiAgICAgfQogCiAgICAgLyogU2xvdyBwYXRoOiBEZWNvZGUgdGhlIGJ5dGUgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gbWFjaGluZQpAQCAtMTkzNCw3ICsxOTk4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gbWFrZV9hcnJheShhcnJheXR5cGUsIHR5cGVjb2RlLCBjb252ZXJ0ZWRfaXRlbXMpOworICAgIHJlc3VsdCA9IG1ha2VfYXJyYXkoYXJyYXl0eXBlLCAoY2hhcil0eXBlY29kZSwgY29udmVydGVkX2l0ZW1zKTsKICAgICBQeV9ERUNSRUYoY29udmVydGVkX2l0ZW1zKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTk0OSwxNCArMjAxMywxNiBAQAogICAgIGludCBtZm9ybWF0X2NvZGU7CiAgICAgc3RhdGljIFB5T2JqZWN0ICphcnJheV9yZWNvbnN0cnVjdG9yID0gTlVMTDsKICAgICBsb25nIHByb3RvY29sOworICAgIF9QeV9JREVOVElGSUVSKF9hcnJheV9yZWNvbnN0cnVjdG9yKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKICAgICBpZiAoYXJyYXlfcmVjb25zdHJ1Y3RvciA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICphcnJheV9tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImFycmF5Iik7CiAgICAgICAgIGlmIChhcnJheV9tb2R1bGUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhcnJheV9yZWNvbnN0cnVjdG9yID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygKKyAgICAgICAgYXJyYXlfcmVjb25zdHJ1Y3RvciA9IF9QeU9iamVjdF9HZXRBdHRySWQoCiAgICAgICAgICAgICBhcnJheV9tb2R1bGUsCi0gICAgICAgICAgICAiX2FycmF5X3JlY29uc3RydWN0b3IiKTsKKyAgICAgICAgICAgICZQeUlkX19hcnJheV9yZWNvbnN0cnVjdG9yKTsKICAgICAgICAgUHlfREVDUkVGKGFycmF5X21vZHVsZSk7CiAgICAgICAgIGlmIChhcnJheV9yZWNvbnN0cnVjdG9yID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE5NzEsNyArMjAzNyw3IEBACiAgICAgaWYgKHByb3RvY29sID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopYXJyYXksICJfX2RpY3RfXyIpOworICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKWFycmF5LCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMDIzLDggKzIwODksOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X2dldF90eXBlY29kZShhcnJheW9iamVjdCAqYSwgdm9pZCAqY2xvc3VyZSkKIHsKLSAgICBQeV9VTklDT0RFIHRjID0gYS0+b2JfZGVzY3ItPnR5cGVjb2RlOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnRjLCAxKTsKKyAgICBjaGFyIHR5cGVjb2RlID0gYS0+b2JfZGVzY3ItPnR5cGVjb2RlOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwodHlwZWNvZGUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjA5OCw3ICsyMTY0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV9yZXByKGFycmF5b2JqZWN0ICphKQogewotICAgIFB5X1VOSUNPREUgdHlwZWNvZGU7CisgICAgY2hhciB0eXBlY29kZTsKICAgICBQeU9iamVjdCAqcywgKnYgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuOwogCkBAIC0yMTA3LDcgKzIxNzMsNyBAQAogICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImFycmF5KCclYycpIiwgKGludCl0eXBlY29kZSk7CiAgICAgfQotICAgIGlmICgodHlwZWNvZGUgPT0gJ3UnKSkKKyAgICBpZiAodHlwZWNvZGUgPT0gJ3UnKQogICAgICAgICB2ID0gYXJyYXlfdG91bmljb2RlKGEsIE5VTEwpOwogICAgIGVsc2UKICAgICAgICAgdiA9IGFycmF5X3RvbGlzdChhLCBOVUxMKTsKQEAgLTIzMDIsNyArMjM2OCw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi0+b2JfaXRlbSArIChjdXIgKyAxKSAqIGl0ZW1zaXplLAogICAgICAgICAgICAgICAgIGxpbSAqIGl0ZW1zaXplKTsKICAgICAgICAgfQotICAgICAgICBjdXIgPSBzdGFydCArIHNsaWNlbGVuZ3RoICogc3RlcDsKKyAgICAgICAgY3VyID0gc3RhcnQgKyAoc2l6ZV90KXNsaWNlbGVuZ3RoICogc3RlcDsKICAgICAgICAgaWYgKGN1ciA8IChzaXplX3QpUHlfU0laRShzZWxmKSkgewogICAgICAgICAgICAgbWVtbW92ZShzZWxmLT5vYl9pdGVtICsgKGN1ci1zbGljZWxlbmd0aCkgKiBpdGVtc2l6ZSwKICAgICAgICAgICAgICAgICBzZWxmLT5vYl9pdGVtICsgY3VyICogaXRlbXNpemUsCkBAIC0yNDg2LDcgKzI1NTIsMTcgQEAKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChpbml0aWFsICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKGluaXRpYWwpKSAgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKGluaXRpYWwpOworICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnVzdHI7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuOworCisgICAgICAgICAgICAgICAgdXN0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoaW5pdGlhbCk7CisgICAgICAgICAgICAgICAgaWYgKHVzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG4gPSBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShpbml0aWFsKTsKICAgICAgICAgICAgICAgICBpZiAobiA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgYXJyYXlvYmplY3QgKnNlbGYgPSAoYXJyYXlvYmplY3QgKilhOwogICAgICAgICAgICAgICAgICAgICBjaGFyICppdGVtID0gc2VsZi0+b2JfaXRlbTsKQEAgLTI0OTgsNyArMjU3NCw3IEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgc2VsZi0+b2JfaXRlbSA9IGl0ZW07CiAgICAgICAgICAgICAgICAgICAgIFB5X1NJWkUoc2VsZikgPSBuIC8gc2l6ZW9mKFB5X1VOSUNPREUpOwotICAgICAgICAgICAgICAgICAgICBtZW1jcHkoaXRlbSwgUHlVbmljb2RlX0FTX0RBVEEoaW5pdGlhbCksIG4pOworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoaXRlbSwgdXN0ciwgbik7CiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFsbG9jYXRlZCA9IFB5X1NJWkUoc2VsZik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjUxOSw3ICsyNTk1LDExIEBACiAgICAgICAgIH0KICAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICAgICAgImJhZCB0eXBlY29kZSAobXVzdCBiZSBiLCBCLCB1LCBoLCBILCBpLCBJLCBsLCBMLCBxLCBRLCBmIG9yIGQpIik7CisjZWxzZQogICAgICAgICAiYmFkIHR5cGVjb2RlIChtdXN0IGJlIGIsIEIsIHUsIGgsIEgsIGksIEksIGwsIEwsIGYgb3IgZCkiKTsKKyNlbmRpZgogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yNTQyLDEyICsyNjIyLDE4IEBACiAgICAgJ0knICAgICAgICAgdW5zaWduZWQgaW50ZWdlciAgIDIgXG5cCiAgICAgJ2wnICAgICAgICAgc2lnbmVkIGludGVnZXIgICAgIDQgXG5cCiAgICAgJ0wnICAgICAgICAgdW5zaWduZWQgaW50ZWdlciAgIDQgXG5cCisgICAgJ3EnICAgICAgICAgc2lnbmVkIGludGVnZXIgICAgIDggKHNlZSBub3RlKSBcblwKKyAgICAnUScgICAgICAgICB1bnNpZ25lZCBpbnRlZ2VyICAgOCAoc2VlIG5vdGUpIFxuXAogICAgICdmJyAgICAgICAgIGZsb2F0aW5nIHBvaW50ICAgICA0IFxuXAogICAgICdkJyAgICAgICAgIGZsb2F0aW5nIHBvaW50ICAgICA4IFxuXAogXG5cCiBOT1RFOiBUaGUgJ3UnIHR5cGVjb2RlIGNvcnJlc3BvbmRzIHRvIFB5dGhvbidzIHVuaWNvZGUgY2hhcmFjdGVyLiBPbiBcblwKIG5hcnJvdyBidWlsZHMgdGhpcyBpcyAyLWJ5dGVzIG9uIHdpZGUgYnVpbGRzIHRoaXMgaXMgNC1ieXRlcy5cblwKIFxuXAorTk9URTogVGhlICdxJyBhbmQgJ1EnIHR5cGUgY29kZXMgYXJlIG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBwbGF0Zm9ybSBcblwKK0MgY29tcGlsZXIgdXNlZCB0byBidWlsZCBQeXRob24gc3VwcG9ydHMgJ2xvbmcgbG9uZycsIG9yLCBvbiBXaW5kb3dzLCBcblwKKydfX2ludDY0Jy5cblwKK1xuXAogVGhlIGNvbnN0cnVjdG9yIGlzOlxuXAogXG5cCiBhcnJheSh0eXBlY29kZSBbLCBpbml0aWFsaXplcl0pIC0tIGNyZWF0ZSBhIG5ldyBhcnJheVxuXApAQCAtMjY5Miw2ICsyNzc4LDM0IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheWl0ZXJfcmVkdWNlKGFycmF5aXRlcm9iamVjdCAqaXQpCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+YW8sIGl0LT5pbmRleCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheWl0ZXJfc2V0c3RhdGUoYXJyYXlpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGl0LT5pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworc3RhdGljIFB5TWV0aG9kRGVmIGFycmF5aXRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWFycmF5aXRlcl9zZXRzdGF0ZSwgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAvKiBzZW50aW5lbCAqLworfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBQeUFycmF5SXRlcl9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJhcnJheWl0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0yNzIxLDcgKzI4MzUsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpYXJyYXlpdGVyX25leHQsICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBhcnJheWl0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogfTsKIAogCkBAIC0yNzUxLDkgKzI4NjUsOSBAQAogUHlJbml0X2FycmF5KHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm07CisgICAgY2hhciBidWZmZXJbUHlfQVJSQVlfTEVOR1RIKGRlc2NyaXB0b3JzKV0sICpwOwogICAgIFB5T2JqZWN0ICp0eXBlY29kZXM7CiAgICAgUHlfc3NpemVfdCBzaXplID0gMDsKLSAgICByZWdpc3RlciBQeV9VTklDT0RFICpwOwogICAgIHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJkFycmF5dHlwZSkgPCAwKQpAQCAtMjc3MiwxMyArMjg4NiwxMyBAQAogICAgICAgICBzaXplKys7CiAgICAgfQogCi0gICAgdHlwZWNvZGVzID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0eXBlY29kZXMpOworICAgIHAgPSBidWZmZXI7CiAgICAgZm9yIChkZXNjciA9IGRlc2NyaXB0b3JzOyBkZXNjci0+dHlwZWNvZGUgIT0gJ1wwJzsgZGVzY3IrKykgewogICAgICAgICAqcCsrID0gKGNoYXIpZGVzY3ItPnR5cGVjb2RlOwogICAgIH0KKyAgICB0eXBlY29kZXMgPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkoYnVmZmVyLCBwIC0gYnVmZmVyLCBOVUxMKTsKIAotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidHlwZWNvZGVzIiwgKFB5T2JqZWN0ICopdHlwZWNvZGVzKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInR5cGVjb2RlcyIsIHR5cGVjb2Rlcyk7CiAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jIGIvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYwppbmRleCAxZWU3ZWFkLi5mNjhkODA0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvYXRleGl0bW9kdWxlLmMKQEAgLTIxMSw2ICsyMTEsMTQgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorc3RhdGljIHZvaWQKK2F0ZXhpdF9mcmVlKFB5T2JqZWN0ICptKQoreworICAgIGF0ZXhpdG1vZHVsZV9zdGF0ZSAqbW9kc3RhdGU7CisgICAgbW9kc3RhdGUgPSBHRVRfQVRFWElUX1NUQVRFKG0pOworICAgIFB5TWVtX0ZyZWUobW9kc3RhdGUtPmF0ZXhpdF9jYWxsYmFja3MpOworfQorCiBQeURvY19TVFJWQVIoYXRleGl0X3VucmVnaXN0ZXJfX2RvY19fLAogInVucmVnaXN0ZXIoZnVuYykgLT4gTm9uZVxuXAogXG5cCkBAIC0yNzUsNyArMjgzLDcgQEAKIAlOVUxMLAogCU5VTEwsCiAJTlVMTCwKLQlOVUxMCisJKGZyZWVmdW5jKWF0ZXhpdF9mcmVlCiB9OwogCiBQeU1PRElOSVRfRlVOQwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hdWRpb29wLmMgYi9Nb2R1bGVzL2F1ZGlvb3AuYwppbmRleCA5YWI0ODM0Li4wMzc1ZTRlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2F1ZGlvb3AuYworKysgYi9Nb2R1bGVzL2F1ZGlvb3AuYwpAQCAtNTEzLDcgKzUxMyw2IEBACiAKICAgICBiZXN0X3Jlc3VsdCA9IHJlc3VsdDsKICAgICBiZXN0X2ogPSAwOwotICAgIGogPSAwOwogCiAgICAgZm9yICggaj0xOyBqPD1sZW4xLWxlbjI7IGorKykgewogICAgICAgICBhal9tMSA9IChkb3VibGUpY3AxW2otMV07CkBAIC01OTksNyArNTk4LDYgQEAKIAogICAgIGJlc3RfcmVzdWx0ID0gcmVzdWx0OwogICAgIGJlc3RfaiA9IDA7Ci0gICAgaiA9IDA7CiAKICAgICBmb3IgKCBqPTE7IGo8PWxlbjEtbGVuMjsgaisrKSB7CiAgICAgICAgIGFqX20xID0gKGRvdWJsZSljcDFbai0xXTsKQEAgLTE0MzMsNyArMTQzMSw2IEBACiAgICAgaWYgKCBzdGF0ZSA9PSBQeV9Ob25lICkgewogICAgICAgICAvKiBGaXJzdCB0aW1lLCBpdCBzZWVtcy4gU2V0IGRlZmF1bHRzICovCiAgICAgICAgIHZhbHByZWQgPSAwOwotICAgICAgICBzdGVwID0gNzsKICAgICAgICAgaW5kZXggPSAwOwogICAgIH0gZWxzZSBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiaWkiLCAmdmFscHJlZCwgJmluZGV4KSApCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTUzNCw3ICsxNTMxLDYgQEAKICAgICBpZiAoIHN0YXRlID09IFB5X05vbmUgKSB7CiAgICAgICAgIC8qIEZpcnN0IHRpbWUsIGl0IHNlZW1zLiBTZXQgZGVmYXVsdHMgKi8KICAgICAgICAgdmFscHJlZCA9IDA7Ci0gICAgICAgIHN0ZXAgPSA3OwogICAgICAgICBpbmRleCA9IDA7CiAgICAgfSBlbHNlIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJpaSIsICZ2YWxwcmVkLCAmaW5kZXgpICkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2JpbmFzY2lpLmMgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKaW5kZXggMTk2ODFiNC4uYWQ1ZTFiMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9iaW5hc2NpaS5jCisrKyBiL01vZHVsZXMvYmluYXNjaWkuYwpAQCAtMTgzLDYgKzE4Myw0NCBAQAogICAgIDB4NmUxNywgMHg3ZTM2LCAweDRlNTUsIDB4NWU3NCwgMHgyZTkzLCAweDNlYjIsIDB4MGVkMSwgMHgxZWYwLAogfTsKIAorc3RhdGljIGludAorYXNjaWlfYnVmZmVyX2NvbnZlcnRlcihQeU9iamVjdCAqYXJnLCBQeV9idWZmZXIgKmJ1ZikKK3sKKyAgICBpZiAoYXJnID09IE5VTEwpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShidWYpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSA8IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoYXJnKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyBhcmd1bWVudCBzaG91bGQgY29udGFpbiBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChhcmcpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICAgICAgYnVmLT5idWYgPSAodm9pZCAqKSBQeVVuaWNvZGVfMUJZVEVfREFUQShhcmcpOworICAgICAgICBidWYtPmxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGFyZyk7CisgICAgICAgIGJ1Zi0+b2JqID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCBidWYsIFB5QlVGX1NJTVBMRSkgIT0gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBieXRlcywgYnVmZmVyIG9yIEFTQ0lJIHN0cmluZywgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCAlUiIsIFB5X1RZUEUoYXJnKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoIVB5QnVmZmVyX0lzQ29udGlndW91cyhidWYsICdDJykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgYSBjb250aWd1b3VzIGJ1ZmZlciwgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCAlUiIsIFB5X1RZUEUoYXJnKSk7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoYnVmKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKK30KKworCiBQeURvY19TVFJWQVIoZG9jX2EyYl91dSwgIihhc2NpaSkgLT4gYmluLiBEZWNvZGUgYSBsaW5lIG9mIHV1ZW5jb2RlZCBkYXRhIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xOTYsNyArMjM0LDcgQEAKICAgICBQeU9iamVjdCAqcnY7CiAgICAgUHlfc3NpemVfdCBhc2NpaV9sZW4sIGJpbl9sZW47CiAKLSAgICBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjphMmJfdXUiLCAmcGFzY2lpKSApCisgICAgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6YTJiX3V1IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJnBhc2NpaSkgKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhc2NpaV9kYXRhID0gcGFzY2lpLmJ1ZjsKICAgICBhc2NpaV9sZW4gPSBwYXNjaWkubGVuOwpAQCAtMzcwLDcgKzQwOCw3IEBACiAgICAgUHlfc3NpemVfdCBhc2NpaV9sZW4sIGJpbl9sZW47CiAgICAgaW50IHF1YWRfcG9zID0gMDsKIAotICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmEyYl9iYXNlNjQiLCAmcGFzY2lpKSApCisgICAgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6YTJiX2Jhc2U2NCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwYXNjaWkpICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNjaWlfZGF0YSA9IHBhc2NpaS5idWY7CiAgICAgYXNjaWlfbGVuID0gcGFzY2lpLmxlbjsKQEAgLTU0Niw3ICs1ODQsNyBAQAogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGludCBkb25lID0gMDsKIAotICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmEyYl9ocXgiLCAmcGFzY2lpKSApCisgICAgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6YTJiX2hxeCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwYXNjaWkpICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNjaWlfZGF0YSA9IHBhc2NpaS5idWY7CiAgICAgbGVuID0gcGFzY2lpLmxlbjsKQEAgLTEwNzgsMTMgKzExMTYsMTEgQEAKIAogICAgIC8qIG1ha2UgaGV4IHZlcnNpb24gb2Ygc3RyaW5nLCB0YWtlbiBmcm9tIHNoYW1vZHVsZS5jICovCiAgICAgZm9yIChpPWo9MDsgaSA8IGFyZ2xlbjsgaSsrKSB7Ci0gICAgICAgIGNoYXIgYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOwogICAgICAgICBjID0gKGFyZ2J1ZltpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICByZXRidWZbaisrXSA9IGM7CisgICAgICAgIHJldGJ1ZltqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgICAgICBjID0gYXJnYnVmW2ldICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIHJldGJ1ZltqKytdID0gYzsKKyAgICAgICAgcmV0YnVmW2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgfQogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhcmcpOwogICAgIHJldHVybiByZXR2YWw7CkBAIC0xMTIxLDcgKzExNTcsNyBAQAogICAgIGNoYXIqIHJldGJ1ZjsKICAgICBQeV9zc2l6ZV90IGksIGo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmEyYl9oZXgiLCAmcGFyZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjphMmJfaGV4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJnBhcmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhcmdidWYgPSBwYXJnLmJ1ZjsKICAgICBhcmdsZW4gPSBwYXJnLmxlbjsKQEAgLTExOTksOCArMTIzNSw4IEBACiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJkYXRhIiwgImhlYWRlciIsIE5VTEx9OwogICAgIGludCBoZWFkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aSIsIGt3bGlzdCwgJnBkYXRhLAotICAgICAgICAgICZoZWFkZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGk6YTJiX3FwIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwZGF0YSwgJmhlYWRlcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGRhdGEgPSBwZGF0YS5idWY7CiAgICAgZGF0YWxlbiA9IHBkYXRhLmxlbjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYnoybW9kdWxlLmMgYi9Nb2R1bGVzL2J6Mm1vZHVsZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjcxZThkLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvYnoybW9kdWxlLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMTY5ICswLDAgQEAKLS8qCi0KLXB5dGhvbi1iejIgLSBweXRob24gYnoyIGxpYnJhcnkgaW50ZXJmYWNlCi0KLUNvcHlyaWdodCAoYykgMjAwMiAgR3VzdGF2byBOaWVtZXllciA8bmllbWV5ZXJAY29uZWN0aXZhLmNvbT4KLUNvcHlyaWdodCAoYykgMjAwMiAgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb247IEFsbCBSaWdodHMgUmVzZXJ2ZWQKLQotKi8KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8YnpsaWIuaD4KLSNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKLQotI2lmZGVmIFdJVEhfVEhSRUFECi0jaW5jbHVkZSAicHl0aHJlYWQuaCIKLSNlbmRpZgotCi1zdGF0aWMgY2hhciBfX2F1dGhvcl9fW10gPQotIlRoZSBiejIgcHl0aG9uIG1vZHVsZSB3YXMgd3JpdHRlbiBieTpcblwKLVxuXAotICAgIEd1c3Rhdm8gTmllbWV5ZXIgPG5pZW1leWVyQGNvbmVjdGl2YS5jb20+XG5cCi0iOwotCi0vKiBPdXIgdmVyeSBvd24gb2ZmX3QtbGlrZSB0eXBlLCA2NC1iaXQgaWYgcG9zc2libGUgKi8KLS8qIGNvcGllZCBmcm9tIE9iamVjdHMvZmlsZW9iamVjdC5jICovCi0jaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKLXR5cGVkZWYgb2ZmX3QgUHlfb2ZmX3Q7Ci0jZWxpZiBTSVpFT0ZfT0ZGX1QgPj0gOAotdHlwZWRlZiBvZmZfdCBQeV9vZmZfdDsKLSNlbGlmIFNJWkVPRl9GUE9TX1QgPj0gOAotdHlwZWRlZiBmcG9zX3QgUHlfb2ZmX3Q7Ci0jZWxzZQotI2Vycm9yICJMYXJnZSBmaWxlIHN1cHBvcnQsIGJ1dCBuZWl0aGVyIG9mZl90IG5vciBmcG9zX3QgaXMgbGFyZ2UgZW5vdWdoLiIKLSNlbmRpZgotCi0jZGVmaW5lIEJVRih2KSBQeUJ5dGVzX0FTX1NUUklORyh2KQotCi0jZGVmaW5lIE1PREVfQ0xPU0VEICAgMAotI2RlZmluZSBNT0RFX1JFQUQgICAgIDEKLSNkZWZpbmUgTU9ERV9SRUFEX0VPRiAyCi0jZGVmaW5lIE1PREVfV1JJVEUgICAgMwotCi0jZGVmaW5lIEJaMkZpbGVPYmplY3RfQ2hlY2sodikgIChQeV9UWVBFKHYpID09ICZCWjJGaWxlX1R5cGUpCi0KLQotI2lmZGVmIEJaX0NPTkZJR19FUlJPUgotCi0jaWYgU0laRU9GX0xPTkcgPj0gOAotI2RlZmluZSBCWlNfVE9UQUxfT1VUKGJ6cykgXAotICAgICgoKGxvbmcpYnpzLT50b3RhbF9vdXRfaGkzMiA8PCAzMikgKyBienMtPnRvdGFsX291dF9sbzMyKQotI2VsaWYgU0laRU9GX0xPTkdfTE9ORyA+PSA4Ci0jZGVmaW5lIEJaU19UT1RBTF9PVVQoYnpzKSBcCi0gICAgKCgoUFlfTE9OR19MT05HKWJ6cy0+dG90YWxfb3V0X2hpMzIgPDwgMzIpICsgYnpzLT50b3RhbF9vdXRfbG8zMikKLSNlbHNlCi0jZGVmaW5lIEJaU19UT1RBTF9PVVQoYnpzKSBcCi0gICAgYnpzLT50b3RhbF9vdXRfbG8zMgotI2VuZGlmCi0KLSNlbHNlIC8qICEgQlpfQ09ORklHX0VSUk9SICovCi0KLSNkZWZpbmUgQloyX2J6UmVhZCBielJlYWQKLSNkZWZpbmUgQloyX2J6UmVhZE9wZW4gYnpSZWFkT3BlbgotI2RlZmluZSBCWjJfYnpSZWFkQ2xvc2UgYnpSZWFkQ2xvc2UKLSNkZWZpbmUgQloyX2J6V3JpdGUgYnpXcml0ZQotI2RlZmluZSBCWjJfYnpXcml0ZU9wZW4gYnpXcml0ZU9wZW4KLSNkZWZpbmUgQloyX2J6V3JpdGVDbG9zZSBieldyaXRlQ2xvc2UKLSNkZWZpbmUgQloyX2J6Q29tcHJlc3MgYnpDb21wcmVzcwotI2RlZmluZSBCWjJfYnpDb21wcmVzc0luaXQgYnpDb21wcmVzc0luaXQKLSNkZWZpbmUgQloyX2J6Q29tcHJlc3NFbmQgYnpDb21wcmVzc0VuZAotI2RlZmluZSBCWjJfYnpEZWNvbXByZXNzIGJ6RGVjb21wcmVzcwotI2RlZmluZSBCWjJfYnpEZWNvbXByZXNzSW5pdCBiekRlY29tcHJlc3NJbml0Ci0jZGVmaW5lIEJaMl9iekRlY29tcHJlc3NFbmQgYnpEZWNvbXByZXNzRW5kCi0KLSNkZWZpbmUgQlpTX1RPVEFMX09VVChienMpIGJ6cy0+dG90YWxfb3V0Ci0KLSNlbmRpZiAvKiAhIEJaX0NPTkZJR19FUlJPUiAqLwotCi0KLSNpZmRlZiBXSVRIX1RIUkVBRAotI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKSBkbyB7IFwKLSAgICBpZiAoIVB5VGhyZWFkX2FjcXVpcmVfbG9jayhvYmotPmxvY2ssIDApKSB7IFwKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyBcCi0gICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhvYmotPmxvY2ssIDEpOyBcCi0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTIFwKLSAgICB9IH0gd2hpbGUoMCkKLSNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKG9iai0+bG9jaykKLSNlbHNlCi0jZGVmaW5lIEFDUVVJUkVfTE9DSyhvYmopCi0jZGVmaW5lIFJFTEVBU0VfTE9DSyhvYmopCi0jZW5kaWYKLQotLyogQml0cyBpbiBmX25ld2xpbmV0eXBlcyAqLwotI2RlZmluZSBORVdMSU5FX1VOS05PV04gMCAgICAgICAvKiBObyBuZXdsaW5lIHNlZW4sIHlldCAqLwotI2RlZmluZSBORVdMSU5FX0NSIDEgICAgICAgICAgICAvKiBcciBuZXdsaW5lIHNlZW4gKi8KLSNkZWZpbmUgTkVXTElORV9MRiAyICAgICAgICAgICAgLyogXG4gbmV3bGluZSBzZWVuICovCi0jZGVmaW5lIE5FV0xJTkVfQ1JMRiA0ICAgICAgICAgIC8qIFxyXG4gbmV3bGluZSBzZWVuICovCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogU3RydWN0dXJlIGRlZmluaXRpb25zLiAqLwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIEZJTEUgKnJhd2ZwOwotCi0gICAgY2hhciogZl9idWY7ICAgICAgICAgICAgICAgIC8qIEFsbG9jYXRlZCByZWFkYWhlYWQgYnVmZmVyICovCi0gICAgY2hhciogZl9idWZlbmQ7ICAgICAgICAgICAgIC8qIFBvaW50cyBhZnRlciBsYXN0IG9jY3VwaWVkIHBvc2l0aW9uICovCi0gICAgY2hhciogZl9idWZwdHI7ICAgICAgICAgICAgIC8qIEN1cnJlbnQgYnVmZmVyIHBvc2l0aW9uICovCi0KLSAgICBCWkZJTEUgKmZwOwotICAgIGludCBtb2RlOwotICAgIFB5X29mZl90IHBvczsKLSAgICBQeV9vZmZfdCBzaXplOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7Ci0jZW5kaWYKLX0gQloyRmlsZU9iamVjdDsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBiel9zdHJlYW0gYnpzOwotICAgIGludCBydW5uaW5nOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7Ci0jZW5kaWYKLX0gQloyQ29tcE9iamVjdDsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBiel9zdHJlYW0gYnpzOwotICAgIGludCBydW5uaW5nOwotICAgIFB5T2JqZWN0ICp1bnVzZWRfZGF0YTsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOwotI2VuZGlmCi19IEJaMkRlY29tcE9iamVjdDsKLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBVdGlsaXR5IGZ1bmN0aW9ucy4gKi8KLQotLyogUmVmdXNlIHJlZ3VsYXIgSS9PIGlmIHRoZXJlJ3MgZGF0YSBpbiB0aGUgaXRlcmF0aW9uLWJ1ZmZlci4KLSAqIE1peGluZyB0aGVtIHdvdWxkIGNhdXNlIGRhdGEgdG8gYXJyaXZlIG91dCBvZiBvcmRlciwgYXMgdGhlIHJlYWQqCi0gKiBtZXRob2RzIGRvbid0IHVzZSB0aGUgaXRlcmF0aW9uIGJ1ZmZlci4gKi8KLXN0YXRpYyBpbnQKLWNoZWNrX2l0ZXJidWZmZXJlZChCWjJGaWxlT2JqZWN0ICpmKQotewotICAgIGlmIChmLT5mX2J1ZiAhPSBOVUxMICYmCi0gICAgICAgIChmLT5mX2J1ZmVuZCAtIGYtPmZfYnVmcHRyKSA+IDAgJiYKLSAgICAgICAgZi0+Zl9idWZbMF0gIT0gJ1wwJykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICJNaXhpbmcgaXRlcmF0aW9uIGFuZCByZWFkIG1ldGhvZHMgd291bGQgbG9zZSBkYXRhIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLVV0aWxfQ2F0Y2hCWjJFcnJvcihpbnQgYnplcnJvcikKLXsKLSAgICBpbnQgcmV0ID0gMDsKLSAgICBzd2l0Y2goYnplcnJvcikgewotICAgICAgICBjYXNlIEJaX09LOgotICAgICAgICBjYXNlIEJaX1NUUkVBTV9FTkQ6Ci0gICAgICAgICAgICBicmVhazsKLQotI2lmZGVmIEJaX0NPTkZJR19FUlJPUgotICAgICAgICBjYXNlIEJaX0NPTkZJR19FUlJPUjoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGJ6MiBsaWJyYXJ5IHdhcyBub3QgY29tcGlsZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3JyZWN0bHkiKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotCi0gICAgICAgIGNhc2UgQlpfUEFSQU1fRVJST1I6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGJ6MiBsaWJyYXJ5IGhhcyByZWNlaXZlZCB3cm9uZyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEJaX01FTV9FUlJPUjoKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBCWl9EQVRBX0VSUk9SOgotICAgICAgICBjYXNlIEJaX0RBVEFfRVJST1JfTUFHSUM6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgImludmFsaWQgZGF0YSBzdHJlYW0iKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEJaX0lPX0VSUk9SOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJ1bmtub3duIElPIGVycm9yIik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBCWl9VTkVYUEVDVEVEX0VPRjoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2dpY2FsIGVuZC1vZi1zdHJlYW0gd2FzIGRldGVjdGVkIik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBCWl9TRVFVRU5DRV9FUlJPUjoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nIHNlcXVlbmNlIG9mIGJ6MiBsaWJyYXJ5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZHMgdXNlZCIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gcmV0OwotfQotCi0jaWYgQlVGU0laIDwgODE5MgotI2RlZmluZSBTTUFMTENIVU5LIDgxOTIKLSNlbHNlCi0jZGVmaW5lIFNNQUxMQ0hVTksgQlVGU0laCi0jZW5kaWYKLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpuZXdfYnVmZmVyc2l6ZSgpLiAqLwotc3RhdGljIHNpemVfdAotVXRpbF9OZXdCdWZmZXJTaXplKHNpemVfdCBjdXJyZW50c2l6ZSkKLXsKLSAgICAvKiBFeHBhbmQgdGhlIGJ1ZmZlciBieSBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSBjdXJyZW50IHNpemUsCi0gICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gVXNlIGEgbGVzcy10aGFuLWRvdWJsZQotICAgICAgIGdyb3d0aCBmYWN0b3IgdG8gYXZvaWQgZXhjZXNzaXZlIGFsbG9jYXRpb24uICovCi0gICAgcmV0dXJuIGN1cnJlbnRzaXplICsgKGN1cnJlbnRzaXplID4+IDMpICsgNjsKLX0KLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpnZXRfbGluZSgpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLVV0aWxfR2V0TGluZShCWjJGaWxlT2JqZWN0ICpmLCBpbnQgbikKLXsKLSAgICBjaGFyIGM7Ci0gICAgY2hhciAqYnVmLCAqZW5kOwotICAgIHNpemVfdCB0b3RhbF92X3NpemU7ICAgICAgICAvKiB0b3RhbCAjIG9mIHNsb3RzIGluIGJ1ZmZlciAqLwotICAgIHNpemVfdCB1c2VkX3Zfc2l6ZTsgICAgICAgICAvKiAjIHVzZWQgc2xvdHMgaW4gYnVmZmVyICovCi0gICAgc2l6ZV90IGluY3JlbWVudDsgICAgICAgLyogYW1vdW50IHRvIGluY3JlbWVudCB0aGUgYnVmZmVyICovCi0gICAgUHlPYmplY3QgKnY7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgaW50IGJ5dGVzX3JlYWQ7Ci0KLSAgICB0b3RhbF92X3NpemUgPSBuID4gMCA/IG4gOiAxMDA7Ci0gICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCB0b3RhbF92X3NpemUpOwotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgYnVmID0gQlVGKHYpOwotICAgIGVuZCA9IGJ1ZiArIHRvdGFsX3Zfc2l6ZTsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBieXRlc19yZWFkID0gQloyX2J6UmVhZCgmYnplcnJvciwgZi0+ZnAsICZjLCAxKTsKLSAgICAgICAgICAgIGYtPnBvcysrOwotICAgICAgICAgICAgaWYgKGJ5dGVzX3JlYWQgPT0gMCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICpidWYrKyA9IGM7Ci0gICAgICAgIH0gd2hpbGUgKGJ6ZXJyb3IgPT0gQlpfT0sgJiYgYyAhPSAnXG4nICYmIGJ1ZiAhPSBlbmQpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBmLT5zaXplID0gZi0+cG9zOwotICAgICAgICAgICAgZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYyA9PSAnXG4nKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8qIE11c3QgYmUgYmVjYXVzZSBidWYgPT0gZW5kICovCi0gICAgICAgIGlmIChuID4gMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB1c2VkX3Zfc2l6ZSA9IHRvdGFsX3Zfc2l6ZTsKLSAgICAgICAgaW5jcmVtZW50ID0gdG90YWxfdl9zaXplID4+IDI7IC8qIG1pbGQgZXhwb25lbnRpYWwgZ3Jvd3RoICovCi0gICAgICAgIHRvdGFsX3Zfc2l6ZSArPSBpbmNyZW1lbnQ7Ci0gICAgICAgIGlmICh0b3RhbF92X3NpemUgPiBJTlRfTUFYKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAibGluZSBpcyBsb25nZXIgdGhhbiBhIFB5dGhvbiBzdHJpbmcgY2FuIGhvbGQiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnYsIHRvdGFsX3Zfc2l6ZSkgPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBidWYgPSBCVUYodikgKyB1c2VkX3Zfc2l6ZTsKLSAgICAgICAgZW5kID0gQlVGKHYpICsgdG90YWxfdl9zaXplOwotICAgIH0KLQotICAgIHVzZWRfdl9zaXplID0gYnVmIC0gQlVGKHYpOwotICAgIGlmICh1c2VkX3Zfc2l6ZSAhPSB0b3RhbF92X3NpemUpIHsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmdiwgdXNlZF92X3NpemUpIDwgMCkgewotICAgICAgICAgICAgdiA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZHJvcF9yZWFkYWhlYWQoKS4gKi8KLXN0YXRpYyB2b2lkCi1VdGlsX0Ryb3BSZWFkQWhlYWQoQloyRmlsZU9iamVjdCAqZikKLXsKLSAgICBpZiAoZi0+Zl9idWYgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKGYtPmZfYnVmKTsKLSAgICAgICAgZi0+Zl9idWYgPSBOVUxMOwotICAgIH0KLX0KLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpyZWFkYWhlYWQoKS4gKi8KLXN0YXRpYyBpbnQKLVV0aWxfUmVhZEFoZWFkKEJaMkZpbGVPYmplY3QgKmYsIGludCBidWZzaXplKQotewotICAgIGludCBjaHVua3NpemU7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoZi0+Zl9idWYgIT0gTlVMTCkgewotICAgICAgICBpZigoZi0+Zl9idWZlbmQgLSBmLT5mX2J1ZnB0cikgPj0gMSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBVdGlsX0Ryb3BSZWFkQWhlYWQoZik7Ci0gICAgfQotICAgIGlmIChmLT5tb2RlID09IE1PREVfUkVBRF9FT0YpIHsKLSAgICAgICAgZi0+Zl9idWZwdHIgPSBmLT5mX2J1ZjsKLSAgICAgICAgZi0+Zl9idWZlbmQgPSBmLT5mX2J1ZjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmICgoZi0+Zl9idWYgPSBQeU1lbV9NYWxsb2MoYnVmc2l6ZSkpID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgY2h1bmtzaXplID0gQloyX2J6UmVhZCgmYnplcnJvciwgZi0+ZnAsIGYtPmZfYnVmLCBidWZzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGYtPnBvcyArPSBjaHVua3NpemU7Ci0gICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICBmLT5zaXplID0gZi0+cG9zOwotICAgICAgICBmLT5tb2RlID0gTU9ERV9SRUFEX0VPRjsKLSAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBVdGlsX0Ryb3BSZWFkQWhlYWQoZik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZi0+Zl9idWZwdHIgPSBmLT5mX2J1ZjsKLSAgICBmLT5mX2J1ZmVuZCA9IGYtPmZfYnVmICsgY2h1bmtzaXplOwotICAgIHJldHVybiAwOwotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MKLSAqIGZpbGVvYmplY3QuYzpyZWFkYWhlYWRfZ2V0X2xpbmVfc2tpcCgpLiAqLwotc3RhdGljIFB5Qnl0ZXNPYmplY3QgKgotVXRpbF9SZWFkQWhlYWRHZXRMaW5lU2tpcChCWjJGaWxlT2JqZWN0ICpmLCBpbnQgc2tpcCwgaW50IGJ1ZnNpemUpCi17Ci0gICAgUHlCeXRlc09iamVjdCogczsKLSAgICBjaGFyICpidWZwdHI7Ci0gICAgY2hhciAqYnVmOwotICAgIGludCBsZW47Ci0KLSAgICBpZiAoZi0+Zl9idWYgPT0gTlVMTCkKLSAgICAgICAgaWYgKFV0aWxfUmVhZEFoZWFkKGYsIGJ1ZnNpemUpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgbGVuID0gZi0+Zl9idWZlbmQgLSBmLT5mX2J1ZnB0cjsKLSAgICBpZiAobGVuID09IDApCi0gICAgICAgIHJldHVybiAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBza2lwKTsKLSAgICBidWZwdHIgPSBtZW1jaHIoZi0+Zl9idWZwdHIsICdcbicsIGxlbik7Ci0gICAgaWYgKGJ1ZnB0ciAhPSBOVUxMKSB7Ci0gICAgICAgIGJ1ZnB0cisrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb3VudCB0aGUgJ1xuJyAqLwotICAgICAgICBsZW4gPSBidWZwdHIgLSBmLT5mX2J1ZnB0cjsKLSAgICAgICAgcyA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNraXArbGVuKTsKLSAgICAgICAgaWYgKHMgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocykrc2tpcCwgZi0+Zl9idWZwdHIsIGxlbik7Ci0gICAgICAgIGYtPmZfYnVmcHRyID0gYnVmcHRyOwotICAgICAgICBpZiAoYnVmcHRyID09IGYtPmZfYnVmZW5kKQotICAgICAgICAgICAgVXRpbF9Ecm9wUmVhZEFoZWFkKGYpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZnB0ciA9IGYtPmZfYnVmcHRyOwotICAgICAgICBidWYgPSBmLT5mX2J1ZjsKLSAgICAgICAgZi0+Zl9idWYgPSBOVUxMOyAgICAgICAgICAgICAgICAvKiBGb3JjZSBuZXcgcmVhZGFoZWFkIGJ1ZmZlciAqLwotICAgICAgICBzID0gVXRpbF9SZWFkQWhlYWRHZXRMaW5lU2tpcChmLCBza2lwK2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZSArIChidWZzaXplPj4yKSk7Ci0gICAgICAgIGlmIChzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhzKStza2lwLCBidWZwdHIsIGxlbik7Ci0gICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKLSAgICB9Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogTWV0aG9kcyBvZiBCWjJGaWxlLiAqLwotCi1QeURvY19TVFJWQVIoQloyRmlsZV9yZWFkX19kb2NfXywKLSJyZWFkKFtzaXplXSkgLT4gc3RyaW5nXG5cCi1cblwKLVJlYWQgYXQgbW9zdCBzaXplIHVuY29tcHJlc3NlZCBieXRlcywgcmV0dXJuZWQgYXMgYSBzdHJpbmcuIElmIHRoZSBzaXplXG5cCi1hcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLlxuXAotIik7Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV9yZWFkKCkuICovCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9yZWFkKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGxvbmcgYnl0ZXNyZXF1ZXN0ZWQgPSAtMTsKLSAgICBzaXplX3QgYnl0ZXNyZWFkLCBidWZmZXJzaXplLCBjaHVua3NpemU7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxsOnJlYWQiLCAmYnl0ZXNyZXF1ZXN0ZWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGNhc2UgTU9ERV9DTE9TRUQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IHJlYWR5IGZvciByZWFkaW5nIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgLyogcmVmdXNlIHRvIG1peCB3aXRoIGYubmV4dCgpICovCi0gICAgaWYgKGNoZWNrX2l0ZXJidWZmZXJlZChzZWxmKSkKLSAgICAgICAgZ290byBjbGVhbnVwOwotCi0gICAgaWYgKGJ5dGVzcmVxdWVzdGVkIDwgMCkKLSAgICAgICAgYnVmZmVyc2l6ZSA9IFV0aWxfTmV3QnVmZmVyU2l6ZSgoc2l6ZV90KTApOwotICAgIGVsc2UKLSAgICAgICAgYnVmZmVyc2l6ZSA9IGJ5dGVzcmVxdWVzdGVkOwotICAgIGlmIChidWZmZXJzaXplID4gSU5UX01BWCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1ZXN0ZWQgbnVtYmVyIG9mIGJ5dGVzIGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJtb3JlIHRoYW4gYSBQeXRob24gc3RyaW5nIGNhbiBob2xkIik7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGJ1ZmZlcnNpemUpOwotICAgIGlmIChyZXQgPT0gTlVMTCB8fCBidWZmZXJzaXplID09IDApCi0gICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICBieXRlc3JlYWQgPSAwOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGNodW5rc2l6ZSA9IEJaMl9ielJlYWQoJmJ6ZXJyb3IsIHNlbGYtPmZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVRihyZXQpK2J5dGVzcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJzaXplLWJ5dGVzcmVhZCk7Ci0gICAgICAgIHNlbGYtPnBvcyArPSBjaHVua3NpemU7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGJ5dGVzcmVhZCArPSBjaHVua3NpemU7Ci0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIHNlbGYtPnNpemUgPSBzZWxmLT5wb3M7Ci0gICAgICAgICAgICBzZWxmLT5tb2RlID0gTU9ERV9SRUFEX0VPRjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICAgICAgcmV0ID0gTlVMTDsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnl0ZXNyZXF1ZXN0ZWQgPCAwKSB7Ci0gICAgICAgICAgICBidWZmZXJzaXplID0gVXRpbF9OZXdCdWZmZXJTaXplKGJ1ZmZlcnNpemUpOwotICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBidWZmZXJzaXplKSA8IDApIHsKLSAgICAgICAgICAgICAgICByZXQgPSBOVUxMOwotICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChieXRlc3JlYWQgIT0gYnVmZmVyc2l6ZSkgewotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIGJ5dGVzcmVhZCkgPCAwKSB7Ci0gICAgICAgICAgICByZXQgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCi1jbGVhbnVwOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9yZWFkbGluZV9fZG9jX18sCi0icmVhZGxpbmUoW3NpemVdKSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBuZXh0IGxpbmUgZnJvbSB0aGUgZmlsZSwgYXMgYSBzdHJpbmcsIHJldGFpbmluZyBuZXdsaW5lLlxuXAotQSBub24tbmVnYXRpdmUgc2l6ZSBhcmd1bWVudCB3aWxsIGxpbWl0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0b1xuXAotcmV0dXJuIChhbiBpbmNvbXBsZXRlIGxpbmUgbWF5IGJlIHJldHVybmVkIHRoZW4pLiBSZXR1cm4gYW4gZW1wdHlcblwKLXN0cmluZyBhdCBFT0YuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfcmVhZGxpbmUoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgaW50IHNpemVoaW50ID0gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOnJlYWRsaW5lIiwgJnNpemVoaW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCByZWFkeSBmb3IgcmVhZGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIC8qIHJlZnVzZSB0byBtaXggd2l0aCBmLm5leHQoKSAqLwotICAgIGlmIChjaGVja19pdGVyYnVmZmVyZWQoc2VsZikpCi0gICAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgIGlmIChzaXplaGludCA9PSAwKQotICAgICAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIHJldCA9IFV0aWxfR2V0TGluZShzZWxmLCAoc2l6ZWhpbnQgPCAwKSA/IDAgOiBzaXplaGludCk7Ci0KLWNsZWFudXA6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3JlYWRsaW5lc19fZG9jX18sCi0icmVhZGxpbmVzKFtzaXplXSkgLT4gbGlzdFxuXAotXG5cCi1DYWxsIHJlYWRsaW5lKCkgcmVwZWF0ZWRseSBhbmQgcmV0dXJuIGEgbGlzdCBvZiBsaW5lcyByZWFkLlxuXAotVGhlIG9wdGlvbmFsIHNpemUgYXJndW1lbnQsIGlmIGdpdmVuLCBpcyBhbiBhcHByb3hpbWF0ZSBib3VuZCBvbiB0aGVcblwKLXRvdGFsIG51bWJlciBvZiBieXRlcyBpbiB0aGUgbGluZXMgcmV0dXJuZWQuXG5cCi0iKTsKLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpmaWxlX3JlYWRsaW5lcygpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfcmVhZGxpbmVzKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGxvbmcgc2l6ZWhpbnQgPSAwOwotICAgIFB5T2JqZWN0ICpsaXN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbGluZTsKLSAgICBjaGFyIHNtYWxsX2J1ZmZlcltTTUFMTENIVU5LXTsKLSAgICBjaGFyICpidWZmZXIgPSBzbWFsbF9idWZmZXI7Ci0gICAgc2l6ZV90IGJ1ZmZlcnNpemUgPSBTTUFMTENIVU5LOwotICAgIFB5T2JqZWN0ICpiaWdfYnVmZmVyID0gTlVMTDsKLSAgICBzaXplX3QgbmZpbGxlZCA9IDA7Ci0gICAgc2l6ZV90IG5yZWFkOwotICAgIHNpemVfdCB0b3RhbHJlYWQgPSAwOwotICAgIGNoYXIgKnAsICpxLCAqZW5kOwotICAgIGludCBlcnI7Ci0gICAgaW50IHNob3J0cmVhZCA9IDA7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxsOnJlYWRsaW5lcyIsICZzaXplaGludCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgcmVhZHkgZm9yIHJlYWRpbmciKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0KLSAgICAvKiByZWZ1c2UgdG8gbWl4IHdpdGggZi5uZXh0KCkgKi8KLSAgICBpZiAoY2hlY2tfaXRlcmJ1ZmZlcmVkKHNlbGYpKQotICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICBpZiAoKGxpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQotICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgbnJlYWQgPSBCWjJfYnpSZWFkKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcituZmlsbGVkLCBidWZmZXJzaXplLW5maWxsZWQpOwotICAgICAgICBzZWxmLT5wb3MgKz0gbnJlYWQ7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIHNlbGYtPnNpemUgPSBzZWxmLT5wb3M7Ci0gICAgICAgICAgICBzZWxmLT5tb2RlID0gTU9ERV9SRUFEX0VPRjsKLSAgICAgICAgICAgIGlmIChucmVhZCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgc2l6ZWhpbnQgPSAwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2hvcnRyZWFkID0gMTsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgZXJyb3I6Ci0gICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICBsaXN0ID0gTlVMTDsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgfQotICAgICAgICB0b3RhbHJlYWQgKz0gbnJlYWQ7Ci0gICAgICAgIHAgPSBtZW1jaHIoYnVmZmVyK25maWxsZWQsICdcbicsIG5yZWFkKTsKLSAgICAgICAgaWYgKCFzaG9ydHJlYWQgJiYgcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBOZWVkIGEgbGFyZ2VyIGJ1ZmZlciB0byBmaXQgdGhpcyBsaW5lICovCi0gICAgICAgICAgICBuZmlsbGVkICs9IG5yZWFkOwotICAgICAgICAgICAgYnVmZmVyc2l6ZSAqPSAyOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcnNpemUgPiBJTlRfTUFYKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgImxpbmUgaXMgbG9uZ2VyIHRoYW4gYSBQeXRob24gc3RyaW5nIGNhbiBob2xkIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChiaWdfYnVmZmVyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAvKiBDcmVhdGUgdGhlIGJpZyBidWZmZXIgKi8KLSAgICAgICAgICAgICAgICBiaWdfYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgKLSAgICAgICAgICAgICAgICAgICAgTlVMTCwgYnVmZmVyc2l6ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGJpZ19idWZmZXIgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBidWZmZXIgPSBQeUJ5dGVzX0FTX1NUUklORyhiaWdfYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzbWFsbF9idWZmZXIsIG5maWxsZWQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLyogR3JvdyB0aGUgYmlnIGJ1ZmZlciAqLwotICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmJpZ19idWZmZXIsIGJ1ZmZlcnNpemUpIDwgMCl7Ci0gICAgICAgICAgICAgICAgICAgIGJpZ19idWZmZXIgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBidWZmZXIgPSBQeUJ5dGVzX0FTX1NUUklORyhiaWdfYnVmZmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGVuZCA9IGJ1ZmZlcituZmlsbGVkK25yZWFkOwotICAgICAgICBxID0gYnVmZmVyOwotICAgICAgICB3aGlsZSAocCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBQcm9jZXNzIGNvbXBsZXRlIGxpbmVzICovCi0gICAgICAgICAgICBwKys7Ci0gICAgICAgICAgICBsaW5lID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShxLCBwLXEpOwotICAgICAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgZXJyID0gUHlMaXN0X0FwcGVuZChsaXN0LCBsaW5lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKLSAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgcSA9IHA7Ci0gICAgICAgICAgICBwID0gbWVtY2hyKHEsICdcbicsIGVuZC1xKTsKLSAgICAgICAgfQotICAgICAgICAvKiBNb3ZlIHRoZSByZW1haW5pbmcgaW5jb21wbGV0ZSBsaW5lIHRvIHRoZSBzdGFydCAqLwotICAgICAgICBuZmlsbGVkID0gZW5kLXE7Ci0gICAgICAgIG1lbW1vdmUoYnVmZmVyLCBxLCBuZmlsbGVkKTsKLSAgICAgICAgaWYgKHNpemVoaW50ID4gMCkKLSAgICAgICAgICAgIGlmICh0b3RhbHJlYWQgPj0gKHNpemVfdClzaXplaGludCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKHNob3J0cmVhZCkgewotICAgICAgICAgICAgc2l6ZWhpbnQgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG5maWxsZWQgIT0gMCkgewotICAgICAgICAvKiBQYXJ0aWFsIGxhc3QgbGluZSAqLwotICAgICAgICBsaW5lID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWZmZXIsIG5maWxsZWQpOwotICAgICAgICBpZiAobGluZSA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgaWYgKHNpemVoaW50ID4gMCkgewotICAgICAgICAgICAgLyogTmVlZCB0byBjb21wbGV0ZSB0aGUgbGFzdCBsaW5lICovCi0gICAgICAgICAgICBQeU9iamVjdCAqcmVzdCA9IFV0aWxfR2V0TGluZShzZWxmLCAwKTsKLSAgICAgICAgICAgIGlmIChyZXN0ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5Qnl0ZXNfQ29uY2F0KCZsaW5lLCByZXN0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN0KTsKLSAgICAgICAgICAgIGlmIChsaW5lID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBlcnIgPSBQeUxpc3RfQXBwZW5kKGxpc3QsIGxpbmUpOwotICAgICAgICBQeV9ERUNSRUYobGluZSk7Ci0gICAgICAgIGlmIChlcnIgIT0gMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gIGNsZWFudXA6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIGlmIChiaWdfYnVmZmVyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihiaWdfYnVmZmVyKTsKLSAgICB9Ci0gICAgcmV0dXJuIGxpc3Q7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3dyaXRlX19kb2NfXywKLSJ3cml0ZShkYXRhKSAtPiBOb25lXG5cCi1cblwKLVdyaXRlIHRoZSAnZGF0YScgc3RyaW5nIHRvIGZpbGUuIE5vdGUgdGhhdCBkdWUgdG8gYnVmZmVyaW5nLCBjbG9zZSgpIG1heVxuXAotYmUgbmVlZGVkIGJlZm9yZSB0aGUgZmlsZSBvbiBkaXNrIHJlZmxlY3RzIHRoZSBkYXRhIHdyaXR0ZW4uXG5cCi0iKTsKLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpmaWxlX3dyaXRlKCkuICovCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV93cml0ZShCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjaGFyICpidWY7Ci0gICAgaW50IGxlbjsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6d3JpdGUiLCAmcGJ1ZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZiA9IHBidWYuYnVmOwotICAgIGxlbiA9IHBidWYubGVuOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfV1JJVEU6Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IHJlYWR5IGZvciB3cml0aW5nIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIEJaMl9ieldyaXRlICgmYnplcnJvciwgc2VsZi0+ZnAsIGJ1ZiwgbGVuKTsKLSAgICBzZWxmLT5wb3MgKz0gbGVuOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0ID0gUHlfTm9uZTsKLQotY2xlYW51cDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfd3JpdGVsaW5lc19fZG9jX18sCi0id3JpdGVsaW5lcyhzZXF1ZW5jZV9vZl9zdHJpbmdzKSAtPiBOb25lXG5cCi1cblwKLVdyaXRlIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHRvIHRoZSBmaWxlLiBOb3RlIHRoYXQgbmV3bGluZXMgYXJlIG5vdFxuXAotYWRkZWQuIFRoZSBzZXF1ZW5jZSBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdCBwcm9kdWNpbmcgc3RyaW5ncy4gVGhpcyBpc1xuXAotZXF1aXZhbGVudCB0byBjYWxsaW5nIHdyaXRlKCkgZm9yIGVhY2ggc3RyaW5nLlxuXAotIik7Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV93cml0ZWxpbmVzKCkuICovCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV93cml0ZWxpbmVzKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXEpCi17Ci0jZGVmaW5lIENIVU5LU0laRSAxMDAwCi0gICAgUHlPYmplY3QgKmxpc3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICppdGVyID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbGluZTsKLSAgICBpbnQgaSwgaiwgaW5kZXgsIGxlbiwgaXNsaXN0OwotICAgIGludCBiemVycm9yOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfV1JJVEU6Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCByZWFkeSBmb3Igd3JpdGluZyIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBpc2xpc3QgPSBQeUxpc3RfQ2hlY2soc2VxKTsKLSAgICBpZiAgKCFpc2xpc3QpIHsKLSAgICAgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoc2VxKTsKLSAgICAgICAgaWYgKGl0ZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAid3JpdGVsaW5lcygpIHJlcXVpcmVzIGFuIGl0ZXJhYmxlIGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGxpc3QgPSBQeUxpc3RfTmV3KENIVU5LU0laRSk7Ci0gICAgICAgIGlmIChsaXN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIC8qIFN0cmF0ZWd5OiBzbHVycCBDSFVOS1NJWkUgbGluZXMgaW50byBhIHByaXZhdGUgbGlzdCwKLSAgICAgICBjaGVja2luZyB0aGF0IHRoZXkgYXJlIGFsbCBzdHJpbmdzLCB0aGVuIHdyaXRlIHRoYXQgbGlzdAotICAgICAgIHdpdGhvdXQgaG9sZGluZyB0aGUgaW50ZXJwcmV0ZXIgbG9jaywgdGhlbiBjb21lIGJhY2sgZm9yIG1vcmUuICovCi0gICAgZm9yIChpbmRleCA9IDA7IDsgaW5kZXggKz0gQ0hVTktTSVpFKSB7Ci0gICAgICAgIGlmIChpc2xpc3QpIHsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICBsaXN0ID0gUHlMaXN0X0dldFNsaWNlKHNlcSwgaW5kZXgsIGluZGV4K0NIVU5LU0laRSk7Ci0gICAgICAgICAgICBpZiAobGlzdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBqID0gUHlMaXN0X0dFVF9TSVpFKGxpc3QpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IENIVU5LU0laRTsgaisrKSB7Ci0gICAgICAgICAgICAgICAgbGluZSA9IFB5SXRlcl9OZXh0KGl0ZXIpOwotICAgICAgICAgICAgICAgIGlmIChsaW5lID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlMaXN0X1NldEl0ZW0obGlzdCwgaiwgbGluZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGogPT0gMCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8qIENoZWNrIHRoYXQgYWxsIGVudHJpZXMgYXJlIGluZGVlZCBieXRlIHN0cmluZ3MuIElmIG5vdCwKLSAgICAgICAgICAgYXBwbHkgdGhlIHNhbWUgcnVsZXMgYXMgZm9yIGZpbGUud3JpdGUoKSBhbmQKLSAgICAgICAgICAgY29udmVydCB0aGUgcmV0cyB0byBzdHJpbmdzLiBUaGlzIGlzIHNsb3csIGJ1dAotICAgICAgICAgICBzZWVtcyB0byBiZSB0aGUgb25seSB3YXkgc2luY2UgYWxsIGNvbnZlcnNpb24gQVBJcwotICAgICAgICAgICBjb3VsZCBwb3RlbnRpYWxseSBleGVjdXRlIFB5dGhvbiBjb2RlLiAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgajsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdiA9IFB5TGlzdF9HRVRfSVRFTShsaXN0LCBpKTsKLSAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayh2KSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZmZlcjsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfQXNDaGFyQnVmZmVyKHYsICZidWZmZXIsICZsZW4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JpdGVsaW5lcygpICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhIHNlcXVlbmNlIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBvYmplY3RzIik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGxpbmUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKTsKLSAgICAgICAgICAgICAgICBpZiAobGluZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0obGlzdCwgaSwgbGluZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBTaW5jZSB3ZSBhcmUgcmVsZWFzaW5nIHRoZSBnbG9iYWwgbG9jaywgdGhlCi0gICAgICAgICAgIGZvbGxvd2luZyBjb2RlIG1heSAqbm90KiBleGVjdXRlIFB5dGhvbiBjb2RlLiAqLwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBqOyBpKyspIHsKLSAgICAgICAgICAgIGxpbmUgPSBQeUxpc3RfR0VUX0lURU0obGlzdCwgaSk7Ci0gICAgICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGxpbmUpOwotICAgICAgICAgICAgQloyX2J6V3JpdGUgKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhsaW5lKSwgbGVuKTsKLSAgICAgICAgICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUwotICAgICAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKGogPCBDSFVOS1NJWkUpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0ID0gUHlfTm9uZTsKLQotICBlcnJvcjoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlfWERFQ1JFRihsaXN0KTsKLSAgICBQeV9YREVDUkVGKGl0ZXIpOwotICAgIHJldHVybiByZXQ7Ci0jdW5kZWYgQ0hVTktTSVpFCi19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3NlZWtfX2RvY19fLAotInNlZWsob2Zmc2V0IFssIHdoZW5jZV0pIC0+IE5vbmVcblwKLVxuXAotTW92ZSB0byBuZXcgZmlsZSBwb3NpdGlvbi4gQXJndW1lbnQgb2Zmc2V0IGlzIGEgYnl0ZSBjb3VudC4gT3B0aW9uYWxcblwKLWFyZ3VtZW50IHdoZW5jZSBkZWZhdWx0cyB0byAwIChvZmZzZXQgZnJvbSBzdGFydCBvZiBmaWxlLCBvZmZzZXRcblwKLXNob3VsZCBiZSA+PSAwKTsgb3RoZXIgdmFsdWVzIGFyZSAxIChtb3ZlIHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24sXG5cCi1wb3NpdGl2ZSBvciBuZWdhdGl2ZSksIGFuZCAyIChtb3ZlIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlLCB1c3VhbGx5XG5cCi1uZWdhdGl2ZSwgYWx0aG91Z2ggbWFueSBwbGF0Zm9ybXMgYWxsb3cgc2Vla2luZyBiZXlvbmQgdGhlIGVuZCBvZiBhIGZpbGUpLlxuXAotXG5cCi1Ob3RlIHRoYXQgc2Vla2luZyBvZiBiejIgZmlsZXMgaXMgZW11bGF0ZWQsIGFuZCBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnNcblwKLXRoZSBvcGVyYXRpb24gbWF5IGJlIGV4dHJlbWVseSBzbG93LlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3NlZWsoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaW50IHdoZXJlID0gMDsKLSAgICBQeU9iamVjdCAqb2Zmb2JqOwotICAgIFB5X29mZl90IG9mZnNldDsKLSAgICBjaGFyIHNtYWxsX2J1ZmZlcltTTUFMTENIVU5LXTsKLSAgICBjaGFyICpidWZmZXIgPSBzbWFsbF9idWZmZXI7Ci0gICAgc2l6ZV90IGJ1ZmZlcnNpemUgPSBTTUFMTENIVU5LOwotICAgIFB5X29mZl90IGJ5dGVzcmVhZCA9IDA7Ci0gICAgc2l6ZV90IHJlYWRzaXplOwotICAgIGludCBjaHVua3NpemU7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwgJm9mZm9iaiwgJndoZXJlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0jaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKLSAgICBvZmZzZXQgPSBQeUxvbmdfQXNMb25nKG9mZm9iaik7Ci0jZWxzZQotICAgIG9mZnNldCA9IFB5TG9uZ19DaGVjayhvZmZvYmopID8KLSAgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcob2Zmb2JqKSA6IFB5TG9uZ19Bc0xvbmcob2Zmb2JqKTsKLSNlbmRpZgotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBVdGlsX0Ryb3BSZWFkQWhlYWQoc2VsZik7Ci0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEOgotICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlZWsgd29ya3Mgb25seSB3aGlsZSByZWFkaW5nIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgaWYgKHdoZXJlID09IDIpIHsKLSAgICAgICAgaWYgKHNlbGYtPnNpemUgPT0gLTEpIHsKLSAgICAgICAgICAgIGFzc2VydChzZWxmLT5tb2RlICE9IE1PREVfUkVBRF9FT0YpOwotICAgICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBjaHVua3NpemUgPSBCWjJfYnpSZWFkKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwgYnVmZmVyc2l6ZSk7Ci0gICAgICAgICAgICAgICAgc2VsZi0+cG9zICs9IGNodW5rc2l6ZTsKLSAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgICAgICAgICAgYnl0ZXNyZWFkICs9IGNodW5rc2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZWxmLT5tb2RlID0gTU9ERV9SRUFEX0VPRjsKLSAgICAgICAgICAgIHNlbGYtPnNpemUgPSBzZWxmLT5wb3M7Ci0gICAgICAgICAgICBieXRlc3JlYWQgPSAwOwotICAgICAgICB9Ci0gICAgICAgIG9mZnNldCA9IHNlbGYtPnNpemUgKyBvZmZzZXQ7Ci0gICAgfSBlbHNlIGlmICh3aGVyZSA9PSAxKSB7Ci0gICAgICAgIG9mZnNldCA9IHNlbGYtPnBvcyArIG9mZnNldDsKLSAgICB9Ci0KLSAgICAvKiBCZWZvcmUgZ2V0dGluZyBoZXJlLCBvZmZzZXQgbXVzdCBiZSB0aGUgYWJzb2x1dGUgcG9zaXRpb24gdGhlIGZpbGUKLSAgICAgKiBwb2ludGVyIHNob3VsZCBiZSBzZXQgdG8uICovCi0KLSAgICBpZiAob2Zmc2V0ID49IHNlbGYtPnBvcykgewotICAgICAgICAvKiB3ZSBjYW4gbW92ZSBmb3J3YXJkICovCi0gICAgICAgIG9mZnNldCAtPSBzZWxmLT5wb3M7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogd2UgY2Fubm90IG1vdmUgYmFjaywgc28gcmV3aW5kIHRoZSBzdHJlYW0gKi8KLSAgICAgICAgQloyX2J6UmVhZENsb3NlKCZiemVycm9yLCBzZWxmLT5mcCk7Ci0gICAgICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV3aW5kKHNlbGYtPnJhd2ZwKTsKLSAgICAgICAgc2VsZi0+cG9zID0gMDsKLSAgICAgICAgc2VsZi0+ZnAgPSBCWjJfYnpSZWFkT3BlbigmYnplcnJvciwgc2VsZi0+cmF3ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgTlVMTCwgMCk7Ci0gICAgICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRDsKLSAgICB9Ci0KLSAgICBpZiAob2Zmc2V0IDw9IDAgfHwgc2VsZi0+bW9kZSA9PSBNT0RFX1JFQURfRU9GKQotICAgICAgICBnb3RvIGV4aXQ7Ci0KLSAgICAvKiBCZWZvcmUgZ2V0dGluZyBoZXJlLCBvZmZzZXQgbXVzdCBiZSBzZXQgdG8gdGhlIG51bWJlciBvZiBieXRlcwotICAgICAqIHRvIHdhbGsgZm9yd2FyZC4gKi8KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGlmIChvZmZzZXQtYnl0ZXNyZWFkID4gYnVmZmVyc2l6ZSkKLSAgICAgICAgICAgIHJlYWRzaXplID0gYnVmZmVyc2l6ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgLyogb2Zmc2V0IG1pZ2h0IGJlIHdpZGVyIHRoYXQgcmVhZHNpemUsIGJ1dCB0aGUgcmVzdWx0Ci0gICAgICAgICAgICAgKiBvZiB0aGUgc3VidHJhY3Rpb24gaXMgYm91bmQgYnkgYnVmZmVyc2l6ZSAoc2VlIHRoZQotICAgICAgICAgICAgICogY29uZGl0aW9uIGFib3ZlKS4gYnVmZmVyc2l6ZSBpcyA4MTkyLiAqLwotICAgICAgICAgICAgcmVhZHNpemUgPSAoc2l6ZV90KShvZmZzZXQtYnl0ZXNyZWFkKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBjaHVua3NpemUgPSBCWjJfYnpSZWFkKCZiemVycm9yLCBzZWxmLT5mcCwgYnVmZmVyLCByZWFkc2l6ZSk7Ci0gICAgICAgIHNlbGYtPnBvcyArPSBjaHVua3NpemU7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGJ5dGVzcmVhZCArPSBjaHVua3NpemU7Ci0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIHNlbGYtPnNpemUgPSBzZWxmLT5wb3M7Ci0gICAgICAgICAgICBzZWxmLT5tb2RlID0gTU9ERV9SRUFEX0VPRjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnl0ZXNyZWFkID09IG9mZnNldCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotZXhpdDoKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0ID0gUHlfTm9uZTsKLQotY2xlYW51cDoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfdGVsbF9fZG9jX18sCi0idGVsbCgpIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYW4gaW50ZWdlciAobWF5IGJlIGEgbG9uZyBpbnRlZ2VyKS5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV90ZWxsKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotCi0gICAgaWYgKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKLSAgICByZXQgPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+cG9zKTsKLSNlbHNlCi0gICAgcmV0ID0gUHlMb25nX0Zyb21Mb25nTG9uZyhzZWxmLT5wb3MpOwotI2VuZGlmCi0KLWNsZWFudXA6Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfY2xvc2VfX2RvY19fLAotImNsb3NlKCkgLT4gTm9uZSBvciAocGVyaGFwcykgYW4gaW50ZWdlclxuXAotXG5cCi1DbG9zZSB0aGUgZmlsZS4gU2V0cyBkYXRhIGF0dHJpYnV0ZSAuY2xvc2VkIHRvIHRydWUuIEEgY2xvc2VkIGZpbGVcblwKLWNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiBjbG9zZSgpIG1heSBiZSBjYWxsZWQgbW9yZVxuXAotdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfY2xvc2UoQloyRmlsZU9iamVjdCAqc2VsZikKLXsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBpbnQgYnplcnJvciA9IEJaX09LOwotCi0gICAgaWYgKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpIHsKLSAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgfQotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgQloyX2J6UmVhZENsb3NlKCZiemVycm9yLCBzZWxmLT5mcCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT0RFX1dSSVRFOgotICAgICAgICAgICAgQloyX2J6V3JpdGVDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEwsIE5VTEwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHNlbGYtPm1vZGUgPSBNT0RFX0NMT1NFRDsKLSAgICBmY2xvc2Uoc2VsZi0+cmF3ZnApOwotICAgIHNlbGYtPnJhd2ZwID0gTlVMTDsKLSAgICBpZiAoYnplcnJvciA9PSBCWl9PSykgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldCA9IFB5X05vbmU7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgfQotCi0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX2VudGVyX2RvYywKLSJfX2VudGVyX18oKSAtPiBzZWxmLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9lbnRlcihCWjJGaWxlT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX2V4aXRfZG9jLAotIl9fZXhpdF9fKCpleGNpbmZvKSAtPiBOb25lLiAgQ2xvc2VzIHRoZSBmaWxlLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9leGl0KEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKSBzZWxmLCAiY2xvc2UiLCBOVUxMKTsKLSAgICBpZiAoIXJldCkKLSAgICAgICAgLyogSWYgZXJyb3Igb2NjdXJyZWQsIHBhc3MgdGhyb3VnaCAqLwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9ERUNSRUYocmV0KTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotCi1zdGF0aWMgUHlPYmplY3QgKkJaMkZpbGVfZ2V0aXRlcihCWjJGaWxlT2JqZWN0ICpzZWxmKTsKLQotc3RhdGljIFB5TWV0aG9kRGVmIEJaMkZpbGVfbWV0aG9kc1tdID0gewotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3JlYWQsIE1FVEhfVkFSQVJHUywgQloyRmlsZV9yZWFkX19kb2NfX30sCi0gICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIEJaMkZpbGVfcmVhZGxpbmVfX2RvY19ffSwKLSAgICB7InJlYWRsaW5lcyIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3JlYWRsaW5lcywgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX3JlYWRsaW5lc19fZG9jX199LAotICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV93cml0ZSwgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX3dyaXRlX19kb2NfX30sCi0gICAgeyJ3cml0ZWxpbmVzIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfd3JpdGVsaW5lcywgTUVUSF9PLCBCWjJGaWxlX3dyaXRlbGluZXNfX2RvY19ffSwKLSAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9zZWVrLCBNRVRIX1ZBUkFSR1MsIEJaMkZpbGVfc2Vla19fZG9jX199LAotICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3RlbGwsIE1FVEhfTk9BUkdTLCBCWjJGaWxlX3RlbGxfX2RvY19ffSwKLSAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfY2xvc2UsIE1FVEhfTk9BUkdTLCBCWjJGaWxlX2Nsb3NlX19kb2NfX30sCi0gICAgeyJfX2VudGVyX18iLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9lbnRlciwgTUVUSF9OT0FSR1MsIEJaMkZpbGVfZW50ZXJfZG9jfSwKLSAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfZXhpdCwgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX2V4aXRfZG9jfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIEdldHRlcnMgYW5kIHNldHRlcnMgb2YgQloyRmlsZS4gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfZ2V0X2Nsb3NlZChCWjJGaWxlT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotewotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+bW9kZSA9PSBNT0RFX0NMT1NFRCk7Ci19Ci0KLXN0YXRpYyBQeUdldFNldERlZiBCWjJGaWxlX2dldHNldFtdID0gewotICAgIHsiY2xvc2VkIiwgKGdldHRlcilCWjJGaWxlX2dldF9jbG9zZWQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICJUcnVlIGlmIHRoZSBmaWxlIGlzIGNsb3NlZCJ9LAotICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogU2xvdCBkZWZpbml0aW9ucyBmb3IgQloyRmlsZV9UeXBlLiAqLwotCi1zdGF0aWMgaW50Ci1CWjJGaWxlX2luaXQoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlbmFtZSIsICJtb2RlIiwgImJ1ZmZlcmluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIiwgMH07Ci0gICAgUHlPYmplY3QgKm5hbWVfb2JqID0gTlVMTDsKLSAgICBjaGFyICpuYW1lOwotICAgIGNoYXIgKm1vZGUgPSAiciI7Ci0gICAgaW50IGJ1ZmZlcmluZyA9IC0xOwotICAgIGludCBjb21wcmVzc2xldmVsID0gOTsKLSAgICBpbnQgYnplcnJvcjsKLSAgICBpbnQgbW9kZV9jaGFyID0gMDsKLQotICAgIHNlbGYtPnNpemUgPSAtMTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfHNpaTpCWjJGaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWVfb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2RlLCAmYnVmZmVyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wcmVzc2xldmVsKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgbmFtZSA9IFB5Qnl0ZXNfQXNTdHJpbmcobmFtZV9vYmopOwotICAgIGlmIChjb21wcmVzc2xldmVsIDwgMSB8fCBjb21wcmVzc2xldmVsID4gOSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihuYW1lX29iaik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGludCBlcnJvciA9IDA7Ci0gICAgICAgIHN3aXRjaCAoKm1vZGUpIHsKLSAgICAgICAgICAgIGNhc2UgJ3InOgotICAgICAgICAgICAgY2FzZSAndyc6Ci0gICAgICAgICAgICAgICAgaWYgKG1vZGVfY2hhcikKLSAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSAxOwotICAgICAgICAgICAgICAgIG1vZGVfY2hhciA9ICptb2RlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlICdiJzoKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBlcnJvciA9IDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBtb2RlIGNoYXIgJWMiLCAqbW9kZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmFtZV9vYmopOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIG1vZGUrKzsKLSAgICAgICAgaWYgKCptb2RlID09ICdcMCcpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAobW9kZV9jaGFyID09IDApIHsKLSAgICAgICAgbW9kZV9jaGFyID0gJ3InOwotICAgIH0KLQotICAgIG1vZGUgPSAobW9kZV9jaGFyID09ICdyJykgPyAicmIiIDogIndiIjsKLQotICAgIHNlbGYtPnJhd2ZwID0gZm9wZW4obmFtZSwgbW9kZSk7Ci0gICAgUHlfREVDUkVGKG5hbWVfb2JqKTsKLSAgICBpZiAoc2VsZi0+cmF3ZnAgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogWFhYIElnbm9yZSBidWZmZXJpbmcgKi8KLQotICAgIC8qIEZyb20gbm93IG9uLCB3ZSBoYXZlIHN0dWZmIHRvIGRlYWxsb2MsIHNvIGp1bXAgdG8gZXJyb3IgbGFiZWwKLSAgICAgKiBpbnN0ZWFkIG9mIHJldHVybmluZyAqLwotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOwotICAgIGlmICghc2VsZi0+bG9jaykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJ1bmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKG1vZGVfY2hhciA9PSAncicpCi0gICAgICAgIHNlbGYtPmZwID0gQloyX2J6UmVhZE9wZW4oJmJ6ZXJyb3IsIHNlbGYtPnJhd2ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIE5VTEwsIDApOwotICAgIGVsc2UKLSAgICAgICAgc2VsZi0+ZnAgPSBCWjJfYnpXcml0ZU9wZW4oJmJ6ZXJyb3IsIHNlbGYtPnJhd2ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2xldmVsLCAwLCAwKTsKLQotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBzZWxmLT5tb2RlID0gKG1vZGVfY2hhciA9PSAncicpID8gTU9ERV9SRUFEIDogTU9ERV9XUklURTsKLQotICAgIHJldHVybiAwOwotCi1lcnJvcjoKLSAgICBmY2xvc2Uoc2VsZi0+cmF3ZnApOwotICAgIHNlbGYtPnJhd2ZwID0gTlVMTDsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSAgICAgICAgc2VsZi0+bG9jayA9IE5VTEw7Ci0gICAgfQotI2VuZGlmCi0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgdm9pZAotQloyRmlsZV9kZWFsbG9jKEJaMkZpbGVPYmplY3QgKnNlbGYpCi17Ci0gICAgaW50IGJ6ZXJyb3I7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykKLSAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOwotI2VuZGlmCi0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEOgotICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICBCWjJfYnpSZWFkQ2xvc2UoJmJ6ZXJyb3IsIHNlbGYtPmZwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PREVfV1JJVEU6Ci0gICAgICAgICAgICBCWjJfYnpXcml0ZUNsb3NlKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgTlVMTCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgVXRpbF9Ecm9wUmVhZEFoZWFkKHNlbGYpOwotICAgIGlmIChzZWxmLT5yYXdmcCAhPSBOVUxMKQotICAgICAgICBmY2xvc2Uoc2VsZi0+cmF3ZnApOwotICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV9nZXRpdGVyKCkuICovCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9nZXRpdGVyKEJaMkZpbGVPYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKChQeU9iamVjdCopc2VsZik7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV9pdGVybmV4dCgpLiAqLwotI2RlZmluZSBSRUFEQUhFQURfQlVGU0laRSA4MTkyCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9pdGVybmV4dChCWjJGaWxlT2JqZWN0ICpzZWxmKQotewotICAgIFB5Qnl0ZXNPYmplY3QqIHJldDsKLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgaWYgKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXQgPSBVdGlsX1JlYWRBaGVhZEdldExpbmVTa2lwKHNlbGYsIDAsIFJFQURBSEVBRF9CVUZTSVpFKTsKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgaWYgKHJldCA9PSBOVUxMIHx8IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSA9PSAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYocmV0KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKilyZXQ7Ci19Ci0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogQloyRmlsZV9UeXBlIGRlZmluaXRpb24uICovCi0KLVB5RG9jX1ZBUihCWjJGaWxlX19kb2NfXykgPQotUHlEb2NfU1RSKAotIkJaMkZpbGUobmFtZSBbLCBtb2RlPSdyJywgYnVmZmVyaW5nPTAsIGNvbXByZXNzbGV2ZWw9OV0pIC0+IGZpbGUgb2JqZWN0XG5cCi1cblwKLU9wZW4gYSBiejIgZmlsZS4gVGhlIG1vZGUgY2FuIGJlICdyJyBvciAndycsIGZvciByZWFkaW5nIChkZWZhdWx0KSBvclxuXAotd3JpdGluZy4gV2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcsIHRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0XG5cCi1leGlzdCwgYW5kIHRydW5jYXRlZCBvdGhlcndpc2UuIElmIHRoZSBidWZmZXJpbmcgYXJndW1lbnQgaXMgZ2l2ZW4sIDAgbWVhbnNcblwKLXVuYnVmZmVyZWQsIGFuZCBsYXJnZXIgbnVtYmVycyBzcGVjaWZ5IHRoZSBidWZmZXIgc2l6ZS4gSWYgY29tcHJlc3NsZXZlbFxuXAotaXMgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5LlxuXAotRGF0YSByZWFkIGlzIGFsd2F5cyByZXR1cm5lZCBpbiBieXRlczsgZGF0YSB3cml0dGVuIG91Z2h0IHRvIGJlIGJ5dGVzLlxuXAotIik7Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgQloyRmlsZV9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJiejIuQloyRmlsZSIsICAgICAgICAgICAgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihCWjJGaWxlT2JqZWN0KSwgICAgICAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIChkZXN0cnVjdG9yKUJaMkZpbGVfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLC8qdHBfZ2V0YXR0cm8qLwotICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFR8UHlfVFBGTEFHU19CQVNFVFlQRSwgLyp0cF9mbGFncyovCi0gICAgQloyRmlsZV9fZG9jX18sICAgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIChnZXRpdGVyZnVuYylCWjJGaWxlX2dldGl0ZXIsIC8qdHBfaXRlciovCi0gICAgKGl0ZXJuZXh0ZnVuYylCWjJGaWxlX2l0ZXJuZXh0LCAvKnRwX2l0ZXJuZXh0Ki8KLSAgICBCWjJGaWxlX21ldGhvZHMsICAgICAgICAvKnRwX21ldGhvZHMqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLwotICAgIEJaMkZpbGVfZ2V0c2V0LCAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylCWjJGaWxlX2luaXQsIC8qdHBfaW5pdCovCi0gICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgLyp0cF9hbGxvYyovCi0gICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgLyp0cF9uZXcqLwotICAgIFB5T2JqZWN0X0ZyZWUsICAgICAgICAgIC8qdHBfZnJlZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pc19nYyovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogTWV0aG9kcyBvZiBCWjJDb21wLiAqLwotCi1QeURvY19TVFJWQVIoQloyQ29tcF9jb21wcmVzc19fZG9jX18sCi0iY29tcHJlc3MoZGF0YSkgLT4gc3RyaW5nXG5cCi1cblwKLVByb3ZpZGUgbW9yZSBkYXRhIHRvIHRoZSBjb21wcmVzc29yIG9iamVjdC4gSXQgd2lsbCByZXR1cm4gY2h1bmtzIG9mXG5cCi1jb21wcmVzc2VkIGRhdGEgd2hlbmV2ZXIgcG9zc2libGUuIFdoZW4geW91J3ZlIGZpbmlzaGVkIHByb3ZpZGluZyBkYXRhXG5cCi10byBjb21wcmVzcywgY2FsbCB0aGUgZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLFxuXAotYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gdGhlIGludGVybmFsIGJ1ZmZlcnMuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkNvbXBfY29tcHJlc3MoQloyQ29tcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIGNoYXIgKmRhdGE7Ci0gICAgaW50IGRhdGFzaXplOwotICAgIGludCBidWZzaXplID0gU01BTExDSFVOSzsKLSAgICBQWV9MT05HX0xPTkcgdG90YWxvdXQ7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgYnpfc3RyZWFtICpienMgPSAmc2VsZi0+YnpzOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjpjb21wcmVzcyIsICZwZGF0YSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGRhdGEgPSBwZGF0YS5idWY7Ci0gICAgZGF0YXNpemUgPSBwZGF0YS5sZW47Ci0KLSAgICBpZiAoZGF0YXNpemUgPT0gMCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICB9Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgaWYgKCFzZWxmLT5ydW5uaW5nKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRoaXMgb2JqZWN0IHdhcyBhbHJlYWR5IGZsdXNoZWQiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ1ZnNpemUpOwotICAgIGlmICghcmV0KQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgYnpzLT5uZXh0X2luID0gZGF0YTsKLSAgICBienMtPmF2YWlsX2luID0gZGF0YXNpemU7Ci0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gYnVmc2l6ZTsKLQotICAgIHRvdGFsb3V0ID0gQlpTX1RPVEFMX09VVChienMpOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzcyhienMsIEJaX1JVTik7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChiemVycm9yICE9IEJaX1JVTl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9pbiA9PSAwKQotICAgICAgICAgICAgYnJlYWs7IC8qIG5vIG1vcmUgaW5wdXQgZGF0YSAqLwotICAgICAgICBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgYnVmc2l6ZSA9IFV0aWxfTmV3QnVmZmVyU2l6ZShidWZzaXplKTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgYnVmc2l6ZSkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgQloyX2J6Q29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpICsgKEJaU19UT1RBTF9PVVQoYnpzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gdG90YWxvdXQpOwotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBidWZzaXplIC0gKGJ6cy0+bmV4dF9vdXQgLSBCVUYocmV0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsCi0gICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShCWlNfVE9UQUxfT1VUKGJ6cykgLSB0b3RhbG91dCkpIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgcmV0dXJuIHJldDsKLQotZXJyb3I6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICBQeV9YREVDUkVGKHJldCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJDb21wX2ZsdXNoX19kb2NfXywKLSJmbHVzaCgpIC0+IHN0cmluZ1xuXAotXG5cCi1GaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MgYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gaW50ZXJuYWwgYnVmZmVycy5cblwKLVlvdSBtdXN0IG5vdCB1c2UgdGhlIGNvbXByZXNzb3Igb2JqZWN0IGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkNvbXBfZmx1c2goQloyQ29tcE9iamVjdCAqc2VsZikKLXsKLSAgICBpbnQgYnVmc2l6ZSA9IFNNQUxMQ0hVTks7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgYnpfc3RyZWFtICpienMgPSAmc2VsZi0+YnpzOwotICAgIFBZX0xPTkdfTE9ORyB0b3RhbG91dDsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBpZiAoIXNlbGYtPnJ1bm5pbmcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJvYmplY3Qgd2FzIGFscmVhZHkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsdXNoZWQiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgc2VsZi0+cnVubmluZyA9IDA7Ci0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ1ZnNpemUpOwotICAgIGlmICghcmV0KQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gYnVmc2l6ZTsKLQotICAgIHRvdGFsb3V0ID0gQlpTX1RPVEFMX09VVChienMpOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzcyhienMsIEJaX0ZJTklTSCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfRklOSVNIX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX291dCA9PSAwKSB7Ci0gICAgICAgICAgICBidWZzaXplID0gVXRpbF9OZXdCdWZmZXJTaXplKGJ1ZnNpemUpOwotICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBidWZzaXplKSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KTsKLSAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KSArIChCWlNfVE9UQUxfT1VUKGJ6cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHRvdGFsb3V0KTsKLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfb3V0ID0gYnVmc2l6ZSAtIChienMtPm5leHRfb3V0IC0gQlVGKHJldCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGJ6cy0+YXZhaWxfb3V0ICE9IDApIHsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LAotICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoQlpTX1RPVEFMX09VVChienMpIC0gdG90YWxvdXQpKSA8IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotCi1lcnJvcjoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlfWERFQ1JFRihyZXQpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgQloyQ29tcF9tZXRob2RzW10gPSB7Ci0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilCWjJDb21wX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEJaMkNvbXBfY29tcHJlc3NfX2RvY19ffSwKLSAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKUJaMkNvbXBfZmx1c2gsIE1FVEhfTk9BUkdTLAotICAgICBCWjJDb21wX2ZsdXNoX19kb2NfX30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBTbG90IGRlZmluaXRpb25zIGZvciBCWjJDb21wX1R5cGUuICovCi0KLXN0YXRpYyBpbnQKLUJaMkNvbXBfaW5pdChCWjJDb21wT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBpbnQgY29tcHJlc3NsZXZlbCA9IDk7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJjb21wcmVzc2xldmVsIiwgMH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aTpCWjJDb21wcmVzc29yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZjb21wcmVzc2xldmVsKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKGNvbXByZXNzbGV2ZWwgPCAxIHx8IGNvbXByZXNzbGV2ZWwgPiA5KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNzbGV2ZWwgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDkiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7Ci0gICAgaWYgKCFzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgInVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBtZW1zZXQoJnNlbGYtPmJ6cywgMCwgc2l6ZW9mKGJ6X3N0cmVhbSkpOwotICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzc0luaXQoJnNlbGYtPmJ6cywgY29tcHJlc3NsZXZlbCwgMCwgMCk7Ci0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIHNlbGYtPnJ1bm5pbmcgPSAxOwotCi0gICAgcmV0dXJuIDA7Ci1lcnJvcjoKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSAgICAgICAgc2VsZi0+bG9jayA9IE5VTEw7Ci0gICAgfQotI2VuZGlmCi0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgdm9pZAotQloyQ29tcF9kZWFsbG9jKEJaMkNvbXBPYmplY3QgKnNlbGYpCi17Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykKLSAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOwotI2VuZGlmCi0gICAgQloyX2J6Q29tcHJlc3NFbmQoJnNlbGYtPmJ6cyk7Ci0gICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKLX0KLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIEJaMkNvbXBfVHlwZSBkZWZpbml0aW9uLiAqLwotCi1QeURvY19TVFJWQVIoQloyQ29tcF9fZG9jX18sCi0iQloyQ29tcHJlc3NvcihbY29tcHJlc3NsZXZlbD05XSkgLT4gY29tcHJlc3NvciBvYmplY3RcblwKLVxuXAotQ3JlYXRlIGEgbmV3IGNvbXByZXNzb3Igb2JqZWN0LiBUaGlzIG9iamVjdCBtYXkgYmUgdXNlZCB0byBjb21wcmVzc1xuXAotZGF0YSBzZXF1ZW50aWFsbHkuIElmIHlvdSB3YW50IHRvIGNvbXByZXNzIGRhdGEgaW4gb25lIHNob3QsIHVzZSB0aGVcblwKLWNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC4gVGhlIGNvbXByZXNzbGV2ZWwgcGFyYW1ldGVyLCBpZiBnaXZlbixcblwKLW11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5LlxuXAotIik7Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgQloyQ29tcF9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJiejIuQloyQ29tcHJlc3NvciIsICAgICAgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihCWjJDb21wT2JqZWN0KSwgICAgICAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIChkZXN0cnVjdG9yKUJaMkNvbXBfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLC8qdHBfZ2V0YXR0cm8qLwotICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFR8UHlfVFBGTEFHU19CQVNFVFlQRSwgLyp0cF9mbGFncyovCi0gICAgQloyQ29tcF9fZG9jX18sICAgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgQloyQ29tcF9tZXRob2RzLCAgICAgICAgLyp0cF9tZXRob2RzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylCWjJDb21wX2luaXQsIC8qdHBfaW5pdCovCi0gICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgLyp0cF9hbGxvYyovCi0gICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgLyp0cF9uZXcqLwotICAgIFB5T2JqZWN0X0ZyZWUsICAgICAgICAgIC8qdHBfZnJlZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pc19nYyovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogTWVtYmVycyBvZiBCWjJEZWNvbXAuICovCi0KLSN1bmRlZiBPRkYKLSNkZWZpbmUgT0ZGKHgpIG9mZnNldG9mKEJaMkRlY29tcE9iamVjdCwgeCkKLQotc3RhdGljIFB5TWVtYmVyRGVmIEJaMkRlY29tcF9tZW1iZXJzW10gPSB7Ci0gICAgeyJ1bnVzZWRfZGF0YSIsIFRfT0JKRUNULCBPRkYodW51c2VkX2RhdGEpLCBSRUFET05MWX0sCi0gICAge05VTEx9ICAgICAgLyogU2VudGluZWwgKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBNZXRob2RzIG9mIEJaMkRlY29tcC4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkRlY29tcF9kZWNvbXByZXNzX19kb2NfXywKLSJkZWNvbXByZXNzKGRhdGEpIC0+IHN0cmluZ1xuXAotXG5cCi1Qcm92aWRlIG1vcmUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC4gSXQgd2lsbCByZXR1cm4gY2h1bmtzXG5cCi1vZiBkZWNvbXByZXNzZWQgZGF0YSB3aGVuZXZlciBwb3NzaWJsZS4gSWYgeW91IHRyeSB0byBkZWNvbXByZXNzIGRhdGFcblwKLWFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIGZvdW5kLCBFT0ZFcnJvciB3aWxsIGJlIHJhaXNlZC4gSWYgYW55IGRhdGFcblwKLXdhcyBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSwgaXQnbGwgYmUgaWdub3JlZCBhbmQgc2F2ZWQgaW5cblwKLXVudXNlZF9kYXRhIGF0dHJpYnV0ZS5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRGVjb21wX2RlY29tcHJlc3MoQloyRGVjb21wT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGRhdGE7Ci0gICAgY2hhciAqZGF0YTsKLSAgICBpbnQgZGF0YXNpemU7Ci0gICAgaW50IGJ1ZnNpemUgPSBTTUFMTENIVU5LOwotICAgIFBZX0xPTkdfTE9ORyB0b3RhbG91dDsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBiel9zdHJlYW0gKmJ6cyA9ICZzZWxmLT5ienM7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmRlY29tcHJlc3MiLCAmcGRhdGEpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkYXRhID0gcGRhdGEuYnVmOwotICAgIGRhdGFzaXplID0gcGRhdGEubGVuOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIGlmICghc2VsZi0+cnVubmluZykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsICJlbmQgb2Ygc3RyZWFtIHdhcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFscmVhZHkgZm91bmQiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ1ZnNpemUpOwotICAgIGlmICghcmV0KQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgYnpzLT5uZXh0X2luID0gZGF0YTsKLSAgICBienMtPmF2YWlsX2luID0gZGF0YXNpemU7Ci0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gYnVmc2l6ZTsKLQotICAgIHRvdGFsb3V0ID0gQlpTX1RPVEFMX09VVChienMpOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzKGJ6cyk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIGlmIChienMtPmF2YWlsX2luICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZi0+dW51c2VkX2RhdGEpOwotICAgICAgICAgICAgICAgIHNlbGYtPnVudXNlZF9kYXRhID0KLSAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShienMtPm5leHRfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ6cy0+YXZhaWxfaW4pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2VsZi0+cnVubmluZyA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9pbiA9PSAwKQotICAgICAgICAgICAgYnJlYWs7IC8qIG5vIG1vcmUgaW5wdXQgZGF0YSAqLwotICAgICAgICBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgYnVmc2l6ZSA9IFV0aWxfTmV3QnVmZmVyU2l6ZShidWZzaXplKTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgYnVmc2l6ZSkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgQloyX2J6RGVjb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCk7Ci0gICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCkgKyAoQlpTX1RPVEFMX09VVChienMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSB0b3RhbG91dCk7Ci0gICAgICAgICAgICBienMtPmF2YWlsX291dCA9IGJ1ZnNpemUgLSAoYnpzLT5uZXh0X291dCAtIEJVRihyZXQpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChienMtPmF2YWlsX291dCAhPSAwKSB7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwKLSAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKEJaU19UT1RBTF9PVVQoYnpzKSAtIHRvdGFsb3V0KSkgPCAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgIHJldHVybiByZXQ7Ci0KLWVycm9yOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgUHlfWERFQ1JFRihyZXQpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgQloyRGVjb21wX21ldGhvZHNbXSA9IHsKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pQloyRGVjb21wX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgQloyRGVjb21wX2RlY29tcHJlc3NfX2RvY19ffSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIFNsb3QgZGVmaW5pdGlvbnMgZm9yIEJaMkRlY29tcF9UeXBlLiAqLwotCi1zdGF0aWMgaW50Ci1CWjJEZWNvbXBfaW5pdChCWjJEZWNvbXBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6QloyRGVjb21wcmVzc29yIikpCi0gICAgICAgIHJldHVybiAtMTsKLQotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKLSAgICBpZiAoIXNlbGYtPmxvY2spIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAidW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHNlbGYtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgaWYgKCFzZWxmLT51bnVzZWRfZGF0YSkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIG1lbXNldCgmc2VsZi0+YnpzLCAwLCBzaXplb2YoYnpfc3RyZWFtKSk7Ci0gICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3NJbml0KCZzZWxmLT5ienMsIDAsIDApOwotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBzZWxmLT5ydW5uaW5nID0gMTsKLQotICAgIHJldHVybiAwOwotCi1lcnJvcjoKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSAgICAgICAgc2VsZi0+bG9jayA9IE5VTEw7Ci0gICAgfQotI2VuZGlmCi0gICAgUHlfQ0xFQVIoc2VsZi0+dW51c2VkX2RhdGEpOwotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIHZvaWQKLUJaMkRlY29tcF9kZWFsbG9jKEJaMkRlY29tcE9iamVjdCAqc2VsZikKLXsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChzZWxmLT5sb2NrKQotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0jZW5kaWYKLSAgICBQeV9YREVDUkVGKHNlbGYtPnVudXNlZF9kYXRhKTsKLSAgICBCWjJfYnpEZWNvbXByZXNzRW5kKCZzZWxmLT5ienMpOwotICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Ci19Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBCWjJEZWNvbXBfVHlwZSBkZWZpbml0aW9uLiAqLwotCi1QeURvY19TVFJWQVIoQloyRGVjb21wX19kb2NfXywKLSJCWjJEZWNvbXByZXNzb3IoKSAtPiBkZWNvbXByZXNzb3Igb2JqZWN0XG5cCi1cblwKLUNyZWF0ZSBhIG5ldyBkZWNvbXByZXNzb3Igb2JqZWN0LiBUaGlzIG9iamVjdCBtYXkgYmUgdXNlZCB0byBkZWNvbXByZXNzXG5cCi1kYXRhIHNlcXVlbnRpYWxseS4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LCB1c2UgdGhlXG5cCi1kZWNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC5cblwKLSIpOwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkRlY29tcF9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJiejIuQloyRGVjb21wcmVzc29yIiwgICAgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihCWjJEZWNvbXBPYmplY3QpLCAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIChkZXN0cnVjdG9yKUJaMkRlY29tcF9kZWFsbG9jLCAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsLyp0cF9nZXRhdHRybyovCi0gICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVHxQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKnRwX2ZsYWdzKi8KLSAgICBCWjJEZWNvbXBfX2RvY19fLCAgICAgICAvKnRwX2RvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KLSAgICBCWjJEZWNvbXBfbWV0aG9kcywgICAgICAvKnRwX21ldGhvZHMqLwotICAgIEJaMkRlY29tcF9tZW1iZXJzLCAgICAgIC8qdHBfbWVtYmVycyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCovCi0gICAgKGluaXRwcm9jKUJaMkRlY29tcF9pbml0LCAvKnRwX2luaXQqLwotICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgIC8qdHBfYWxsb2MqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgIC8qdHBfbmV3Ki8KLSAgICBQeU9iamVjdF9GcmVlLCAgICAgICAgICAvKnRwX2ZyZWUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXNfZ2MqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1vZHVsZSBmdW5jdGlvbnMuICovCi0KLVB5RG9jX1NUUlZBUihiejJfY29tcHJlc3NfX2RvY19fLAotImNvbXByZXNzKGRhdGEgWywgY29tcHJlc3NsZXZlbD05XSkgLT4gc3RyaW5nXG5cCi1cblwKLUNvbXByZXNzIGRhdGEgaW4gb25lIHNob3QuIElmIHlvdSB3YW50IHRvIGNvbXByZXNzIGRhdGEgc2VxdWVudGlhbGx5LFxuXAotdXNlIGFuIGluc3RhbmNlIG9mIEJaMkNvbXByZXNzb3IgaW5zdGVhZC4gVGhlIGNvbXByZXNzbGV2ZWwgcGFyYW1ldGVyLCBpZlxuXAotZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5LlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1iejJfY29tcHJlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIGludCBjb21wcmVzc2xldmVsPTk7Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIGNoYXIgKmRhdGE7Ci0gICAgaW50IGRhdGFzaXplOwotICAgIGludCBidWZzaXplOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGJ6X3N0cmVhbSBfYnpzOwotICAgIGJ6X3N0cmVhbSAqYnpzID0gJl9ienM7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJkYXRhIiwgImNvbXByZXNzbGV2ZWwiLCAwfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wcmVzc2xldmVsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZGF0YSA9IHBkYXRhLmJ1ZjsKLSAgICBkYXRhc2l6ZSA9IHBkYXRhLmxlbjsKLQotICAgIGlmIChjb21wcmVzc2xldmVsIDwgMSB8fCBjb21wcmVzc2xldmVsID4gOSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5Iik7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgLyogQ29uZm9ybWluZyB0byBiejIgbWFudWFsLCB0aGlzIGlzIGxhcmdlIGVub3VnaCB0byBmaXQgY29tcHJlc3NlZAotICAgICAqIGRhdGEgaW4gb25lIHNob3QuIFdlIHdpbGwgY2hlY2sgaXQgbGF0ZXIgYW55d2F5LiAqLwotICAgIGJ1ZnNpemUgPSBkYXRhc2l6ZSArIChkYXRhc2l6ZS8xMDArMSkgKyA2MDA7Ci0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ1ZnNpemUpOwotICAgIGlmICghcmV0KSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgbWVtc2V0KGJ6cywgMCwgc2l6ZW9mKGJ6X3N0cmVhbSkpOwotCi0gICAgYnpzLT5uZXh0X2luID0gZGF0YTsKLSAgICBienMtPmF2YWlsX2luID0gZGF0YXNpemU7Ci0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gYnVmc2l6ZTsKLQotICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzc0luaXQoYnpzLCBjb21wcmVzc2xldmVsLCAwLCAwKTsKLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgUHlfREVDUkVGKHJldCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3MoYnpzLCBCWl9GSU5JU0gpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX0ZJTklTSF9PSykgewotICAgICAgICAgICAgQloyX2J6Q29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIGJ1ZnNpemUgPSBVdGlsX05ld0J1ZmZlclNpemUoYnVmc2l6ZSk7Ci0gICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIGJ1ZnNpemUpIDwgMCkgewotICAgICAgICAgICAgICAgIEJaMl9iekNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpICsgQlpTX1RPVEFMX09VVChienMpOwotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBidWZzaXplIC0gKGJ6cy0+bmV4dF9vdXQgLSBCVUYocmV0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYnpzLT5hdmFpbF9vdXQgIT0gMCkgewotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIChQeV9zc2l6ZV90KUJaU19UT1RBTF9PVVQoYnpzKSkgPCAwKSB7Ci0gICAgICAgICAgICByZXQgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIEJaMl9iekNvbXByZXNzRW5kKGJ6cyk7Ci0KLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKGJ6Ml9kZWNvbXByZXNzX19kb2NfXywKLSJkZWNvbXByZXNzKGRhdGEpIC0+IGRlY29tcHJlc3NlZCBkYXRhXG5cCi1cblwKLURlY29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdC4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSxcblwKLXVzZSBhbiBpbnN0YW5jZSBvZiBCWjJEZWNvbXByZXNzb3IgaW5zdGVhZC5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotYnoyX2RlY29tcHJlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X2J1ZmZlciBwZGF0YTsKLSAgICBjaGFyICpkYXRhOwotICAgIGludCBkYXRhc2l6ZTsKLSAgICBpbnQgYnVmc2l6ZSA9IFNNQUxMQ0hVTks7Ci0gICAgUHlPYmplY3QgKnJldDsKLSAgICBiel9zdHJlYW0gX2J6czsKLSAgICBiel9zdHJlYW0gKmJ6cyA9ICZfYnpzOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpkZWNvbXByZXNzIiwgJnBkYXRhKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZGF0YSA9IHBkYXRhLmJ1ZjsKLSAgICBkYXRhc2l6ZSA9IHBkYXRhLmxlbjsKLQotICAgIGlmIChkYXRhc2l6ZSA9PSAwKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgIH0KLQotICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnVmc2l6ZSk7Ci0gICAgaWYgKCFyZXQpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBtZW1zZXQoYnpzLCAwLCBzaXplb2YoYnpfc3RyZWFtKSk7Ci0KLSAgICBienMtPm5leHRfaW4gPSBkYXRhOwotICAgIGJ6cy0+YXZhaWxfaW4gPSBkYXRhc2l6ZTsKLSAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCk7Ci0gICAgYnpzLT5hdmFpbF9vdXQgPSBidWZzaXplOwotCi0gICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3NJbml0KGJ6cywgMCwgMCk7Ci0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3MoYnpzKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgQloyX2J6RGVjb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9pbiA9PSAwKSB7Ci0gICAgICAgICAgICBCWjJfYnpEZWNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgZmluZCBlbmQgb2Ygc3RyZWFtIik7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX291dCA9PSAwKSB7Ci0gICAgICAgICAgICBidWZzaXplID0gVXRpbF9OZXdCdWZmZXJTaXplKGJ1ZnNpemUpOwotICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBidWZzaXplKSA8IDApIHsKLSAgICAgICAgICAgICAgICBCWjJfYnpEZWNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpICsgQlpTX1RPVEFMX09VVChienMpOwotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBidWZzaXplIC0gKGJ6cy0+bmV4dF9vdXQgLSBCVUYocmV0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYnpzLT5hdmFpbF9vdXQgIT0gMCkgewotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIChQeV9zc2l6ZV90KUJaU19UT1RBTF9PVVQoYnpzKSkgPCAwKSB7Ci0gICAgICAgICAgICByZXQgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIEJaMl9iekRlY29tcHJlc3NFbmQoYnpzKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0KLSAgICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgYnoyX21ldGhvZHNbXSA9IHsKLSAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKSBiejJfY29tcHJlc3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBiejJfY29tcHJlc3NfX2RvY19ffSwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pIGJ6Ml9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgIGJ6Ml9kZWNvbXByZXNzX19kb2NfX30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogSW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uICovCi0KLVB5RG9jX1NUUlZBUihiejJfX2RvY19fLAotIlRoZSBweXRob24gYnoyIG1vZHVsZSBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgaW50ZXJmYWNlIGZvclxuXAotdGhlIGJ6MiBjb21wcmVzc2lvbiBsaWJyYXJ5LiBJdCBpbXBsZW1lbnRzIGEgY29tcGxldGUgZmlsZVxuXAotaW50ZXJmYWNlLCBvbmUgc2hvdCAoZGUpY29tcHJlc3Npb24gZnVuY3Rpb25zLCBhbmQgdHlwZXMgZm9yXG5cCi1zZXF1ZW50aWFsIChkZSljb21wcmVzc2lvbi5cblwKLSIpOwotCi0KLXN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgYnoybW9kdWxlID0gewotICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICAiYnoyIiwKLSAgICBiejJfX2RvY19fLAotICAgIC0xLAotICAgIGJ6Ml9tZXRob2RzLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwKLX07Ci0KLVB5TU9ESU5JVF9GVU5DCi1QeUluaXRfYnoyKHZvaWQpCi17Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZCWjJGaWxlX1R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmQloyQ29tcF9UeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJkJaMkRlY29tcF9UeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmYnoybW9kdWxlKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX19hdXRob3JfXyIsIFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9fYXV0aG9yX18pKTsKLQotICAgIFB5X0lOQ1JFRigmQloyRmlsZV9UeXBlKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJaMkZpbGUiLCAoUHlPYmplY3QgKikmQloyRmlsZV9UeXBlKTsKLQotICAgIFB5X0lOQ1JFRigmQloyQ29tcF9UeXBlKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJaMkNvbXByZXNzb3IiLCAoUHlPYmplY3QgKikmQloyQ29tcF9UeXBlKTsKLQotICAgIFB5X0lOQ1JFRigmQloyRGVjb21wX1R5cGUpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQloyRGVjb21wcmVzc29yIiwgKFB5T2JqZWN0ICopJkJaMkRlY29tcF9UeXBlKTsKLSAgICByZXR1cm4gbTsKLX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfY24uYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfY24uYwppbmRleCBhYjRlNjU5Li45ZTllOTZjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19jbi5jCkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgIFRSWU1BUF9ERUMoZ2IyMzEyLCAqKm91dGJ1ZiwgYyBeIDB4ODAsIElOMiBeIDB4ODApIHsKICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgfQotICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICBlbHNlIHJldHVybiAxOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKIAogICAgICAgICBHQktfREVDT0RFKGMsIElOMiwgKipvdXRidWYpCi0gICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAKICAgICAgICAgTkVYVCgyLCAxKQogICAgIH0KQEAgLTI2Nyw3ICsyNjcsNyBAQAogICAgICAgICAgICAgYzMgPSBJTjM7CiAgICAgICAgICAgICBjNCA9IElONDsKICAgICAgICAgICAgIGlmIChjIDwgMHg4MSB8fCBjMyA8IDB4ODEgfHwgYzQgPCAweDMwIHx8IGM0ID4gMHgzOSkKLSAgICAgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIGMgLT0gMHg4MTsgIGMyIC09IDB4MzA7CiAgICAgICAgICAgICBjMyAtPSAweDgxOyBjNCAtPSAweDMwOwogCkBAIC0yOTIsMTIgKzI5MiwxMiBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAKICAgICAgICAgR0JLX0RFQ09ERShjLCBjMiwgKipvdXRidWYpCiAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhnYjE4MDMwZXh0LCAqKm91dGJ1ZiwgYywgYzIpOwotICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICBlbHNlIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMiwgMSkKICAgICB9CkBAIC00MDAsNyArNDAwLDcgQEAKICAgICAgICAgICAgIGVsc2UgaWYgKGMyID09ICdcbicpCiAgICAgICAgICAgICAgICAgOyAvKiBsaW5lLWNvbnRpbnVhdGlvbiAqLwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgTkVYVCgyLCAwKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC00MTksNyArNDE5LDcgQEAKICAgICAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaGsuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaGsuYwppbmRleCA1NThhNDJmLi5kM2FkMDRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2hrLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19oay5jCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgICAgICAgY2FzZSAweDg4NjQ6IFdSSVRFMigweDAwY2EsIDB4MDMwYyk7IGJyZWFrOwogICAgICAgICBjYXNlIDB4ODhhMzogV1JJVEUyKDB4MDBlYSwgMHgwMzA0KTsgYnJlYWs7CiAgICAgICAgIGNhc2UgMHg4OGE1OiBXUklURTIoMHgwMGVhLCAweDAzMGMpOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogcmV0dXJuIDI7CisgICAgICAgIGRlZmF1bHQ6IHJldHVybiAxOwogICAgICAgICB9CiAKICAgICAgICAgTkVYVCgyLCAyKSAvKiBhbGwgZGVjb2RlZCBjb2RlcG9pbnRzIGFyZSBwYWlycywgYWJvdmUuICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCmluZGV4IDI1YzFhMzYuLmNiYzE1NDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCkBAIC0xMjMsNyArMTIzLDcgQEAKIAogQ09ERUNfSU5JVChpc28yMDIyKQogewotICAgIGNvbnN0IHN0cnVjdCBpc28yMDIyX2Rlc2lnbmF0aW9uICpkZXNpZyA9IENPTkZJR19ERVNJR05BVElPTlM7CisgICAgY29uc3Qgc3RydWN0IGlzbzIwMjJfZGVzaWduYXRpb24gKmRlc2lnOwogICAgIGZvciAoZGVzaWcgPSBDT05GSUdfREVTSUdOQVRJT05TOyBkZXNpZy0+bWFyazsgZGVzaWcrKykKICAgICAgICAgaWYgKGRlc2lnLT5pbml0aWFsaXplciAhPSBOVUxMICYmIGRlc2lnLT5pbml0aWFsaXplcigpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2pwLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2pwLmMKaW5kZXggYTA1ZTAxYi4uYTUwMDY5NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19qcC5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfanAuYwpAQCAtMTEyLDcgKzExMiw3IEBACiAgICAgICAgIFRSWU1BUF9ERUMoY3A5MzJleHQsICoqb3V0YnVmLCBjLCBjMik7CiAgICAgICAgIGVsc2UgaWYgKChjID49IDB4ODEgJiYgYyA8PSAweDlmKSB8fCAoYyA+PSAweGUwICYmIGMgPD0gMHhlYSkpewogICAgICAgICAgICAgaWYgKGMyIDwgMHg0MCB8fCAoYzIgPiAweDdlICYmIGMyIDwgMHg4MCkgfHwgYzIgPiAweGZjKQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgICAgICBjID0gKGMgPCAweGUwID8gYyAtIDB4ODEgOiBjIC0gMHhjMSk7CiAgICAgICAgICAgICBjMiA9IChjMiA8IDB4ODAgPyBjMiAtIDB4NDAgOiBjMiAtIDB4NDEpOwpAQCAtMTIwLDcgKzEyMCw3IEBACiAgICAgICAgICAgICBjMiA9IChjMiA8IDB4NWUgPyBjMiA6IGMyIC0gMHg1ZSkgKyAweDIxOwogCiAgICAgICAgICAgICBUUllNQVBfREVDKGppc3gwMjA4LCAqKm91dGJ1ZiwgYywgYzIpOwotICAgICAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoYyA+PSAweGYwICYmIGMgPD0gMHhmOSkgewogICAgICAgICAgICAgaWYgKChjMiA+PSAweDQwICYmIGMyIDw9IDB4N2UpIHx8CkBAIC0xMjgsMTAgKzEyOCwxMCBAQAogICAgICAgICAgICAgICAgIE9VVDEoMHhlMDAwICsgMTg4ICogKGMgLSAweGYwKSArCiAgICAgICAgICAgICAgICAgICAgICAoYzIgPCAweDgwID8gYzIgLSAweDQwIDogYzIgLSAweDQxKSkKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMiwgMSkKICAgICB9CkBAIC0yNTYsNyArMjU2LDcgQEAKICAgICAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoYyA9PSAweDhmKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMyLCBjMzsKQEAgLTI3NCw3ICsyNzQsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjEyLCAqKm91dGJ1ZiwgYzIsIGMzKSA7Ci0gICAgICAgICAgICBlbHNlIHJldHVybiAzOworICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICAgICAgICAgIE5FWFQoMywgMSkKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTMwMCw3ICszMDAsNyBAQAogICAgICAgICAgICAgICAgIE5FWFQoMiwgMikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgICAgICBlbHNlIHJldHVybiAxOwogICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICB9CiAgICAgfQpAQCAtMzg4LDcgKzM4OCw3IEBACiAgICAgICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGMgPT0gMHg4ZikgewogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjMiwgYzM7CkBAIC00MDEsNyArNDAxLDcgQEAKICAgICAgICAgICAgICAgICBORVhUKDMsIDEpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMyOwpAQCAtNDE3LDcgKzQxNyw3IEBACiAjZW5kaWYKICAgICAgICAgICAgICAgICBUUllNQVBfREVDKGppc3gwMjA4LCAqKm91dGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgXiAweDgwLCBjMiBeIDB4ODApIDsKLSAgICAgICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgICAgICBlbHNlIHJldHVybiAxOwogICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICB9CiAgICAgfQpAQCAtNTAyLDcgKzUwMiw3IEBACiAgICAgICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCiAgICAgICAgICAgICBjMiA9IElOMjsKICAgICAgICAgICAgIGlmIChjMiA8IDB4NDAgfHwgKGMyID4gMHg3ZSAmJiBjMiA8IDB4ODApIHx8IGMyID4gMHhmYykKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICAgICAgYzEgPSAoYyA8IDB4ZTAgPyBjIC0gMHg4MSA6IGMgLSAweGMxKTsKICAgICAgICAgICAgIGMyID0gKGMyIDwgMHg4MCA/IGMyIC0gMHg0MCA6IGMyIC0gMHg0MSk7CkBAIC01MjIsMTAgKzUyMiwxMCBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgTkVYVCgxLCAxKSAvKiBKSVMgWCAwMjAxICovCiAgICAgfQpAQCAtNjQ1LDcgKzY0NSw3IEBACiAgICAgICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCiAgICAgICAgICAgICBjMiA9IElOMjsKICAgICAgICAgICAgIGlmIChjMiA8IDB4NDAgfHwgKGMyID4gMHg3ZSAmJiBjMiA8IDB4ODApIHx8IGMyID4gMHhmYykKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICAgICAgYzEgPSAoYyA8IDB4ZTAgPyBjIC0gMHg4MSA6IGMgLSAweGMxKTsKICAgICAgICAgICAgIGMyID0gKGMyIDwgMHg4MCA/IGMyIC0gMHg0MCA6IGMyIC0gMHg0MSk7CkBAIC02NzEsNyArNjcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgTkVYVF9PVVQoMikKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgTkVYVF9JTigyKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIFBsYW5lIDIgKi8KQEAgLTY4OSwxMyArNjg5LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMSwgMSkgLyogSklTIFggMDIwMSAqLwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3Nfa3IuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3Nfa3IuYwppbmRleCA5MjcyZTM2Li5mNTY5N2RkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2tyLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19rci5jCkBAIC0xMjMsNyArMTIzLDcgQEAKICAgICAgICAgICAgIGlmICgoKmluYnVmKVsyXSAhPSBFVUNLUl9KQU1PX0ZJUlNUQllURSB8fAogICAgICAgICAgICAgICAgICgqaW5idWYpWzRdICE9IEVVQ0tSX0pBTU9fRklSU1RCWVRFIHx8CiAgICAgICAgICAgICAgICAgKCppbmJ1ZilbNl0gIT0gRVVDS1JfSkFNT19GSVJTVEJZVEUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDg7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgICAgIGMgPSAoKmluYnVmKVszXTsKICAgICAgICAgICAgIGlmICgweGExIDw9IGMgJiYgYyA8PSAweGJlKQpAQCAtMTQzLDcgKzE0Myw3IEBACiAgICAgICAgICAgICAgICAgam9uZyA9IE5PTkU7CiAKICAgICAgICAgICAgIGlmIChjaG8gPT0gTk9ORSB8fCBqdW5nID09IE5PTkUgfHwgam9uZyA9PSBOT05FKQotICAgICAgICAgICAgICAgIHJldHVybiA4OworICAgICAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgICAgICBPVVQxKDB4YWMwMCArIGNobyo1ODggKyBqdW5nKjI4ICsgam9uZyk7CiAgICAgICAgICAgICBORVhUKDgsIDEpCkBAIC0xNTIsNyArMTUyLDcgQEAKICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgfQogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMjA4LDcgKzIwOCw3IEBACiAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKICAgICAgICAgVFJZTUFQX0RFQyhrc3gxMDAxLCAqKm91dGJ1ZiwgYyBeIDB4ODAsIElOMiBeIDB4ODApOwogICAgICAgICBlbHNlIFRSWU1BUF9ERUMoY3A5NDlleHQsICoqb3V0YnVmLCBjLCBJTjIpOwotICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICBlbHNlIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMiwgMSkKICAgICB9CkBAIC0zNzUsNyArMzc1LDcgQEAKICAgICAgICAgICAgIGlfam9uZyA9IGpvaGFiaWR4X2pvbmdzZW9uZ1tjX2pvbmddOwogCiAgICAgICAgICAgICBpZiAoaV9jaG8gPT0gTk9ORSB8fCBpX2p1bmcgPT0gTk9ORSB8fCBpX2pvbmcgPT0gTk9ORSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICAgICAgLyogd2UgZG9uJ3QgdXNlIFUrMTEwMCBoYW5ndWwgamFtbyB5ZXQuICovCiAgICAgICAgICAgICBpZiAoaV9jaG8gPT0gRklMTCkgewpAQCAtMzkxLDcgKzM5MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBPVVQxKDB4MzEwMCB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaGFiamFtb19qdW5nc2VvbmdbY19qdW5nXSkKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChpX2p1bmcgPT0gRklMTCkgewpAQCAtMzk5LDcgKzM5OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBPVVQxKDB4MzEwMCB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaGFiamFtb19jaG9zZW9uZ1tjX2Nob10pCiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgT1VUMSgweGFjMDAgKwpAQCAtNDE0LDcgKzQxNCw3IEBACiAgICAgICAgICAgICAgICAgYzIgPCAweDMxIHx8IChjMiA+PSAweDgwICYmIGMyIDwgMHg5MSkgfHwKICAgICAgICAgICAgICAgICAoYzIgJiAweDdmKSA9PSAweDdmIHx8CiAgICAgICAgICAgICAgICAgKGMgPT0gMHhkYSAmJiAoYzIgPj0gMHhhMSAmJiBjMiA8PSAweGQzKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHQxLCB0MjsKIApAQCAtNDI1LDcgKzQyNSw3IEBACiAgICAgICAgICAgICAgICAgdDIgPSAodDIgPCAweDVlID8gdDIgOiB0MiAtIDB4NWUpICsgMHgyMTsKIAogICAgICAgICAgICAgICAgIFRSWU1BUF9ERUMoa3N4MTAwMSwgKipvdXRidWYsIHQxLCB0Mik7Ci0gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICBlbHNlIHJldHVybiAxOwogICAgICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc190dy5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc190dy5jCmluZGV4IDM4Y2Y3MjMuLjkxNjI5OGQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfdHcuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX3R3LmMKQEAgLTU1LDcgKzU1LDcgQEAKICAgICAgICAgVFJZTUFQX0RFQyhiaWc1LCAqKm91dGJ1ZiwgYywgSU4yKSB7CiAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgIH0KLSAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTEwOSw3ICsxMDksNyBAQAogCiAgICAgICAgIFRSWU1BUF9ERUMoY3A5NTBleHQsICoqb3V0YnVmLCBjLCBJTjIpOwogICAgICAgICBlbHNlIFRSWU1BUF9ERUMoYmlnNSwgKipvdXRidWYsIGMsIElOMik7Ci0gICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAKICAgICAgICAgTkVYVCgyLCAxKQogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCmluZGV4IDdiMDRmMDIwLi5hYmFkMjUxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMKQEAgLTQ0MywxMCArNDQzLDEyIEBACiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIH0KIAorICAgIGlmIChQeVVuaWNvZGVfQXNVbmljb2RlKHJldHVuaSkgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgcmV0dW5pc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXR1bmkpOwogICAgIGlmIChyZXR1bmlzaXplID4gMCkgewogICAgICAgICBSRVFVSVJFX0RFQ09ERUJVRkZFUihidWYsIHJldHVuaXNpemUpOwotICAgICAgICBtZW1jcHkoKGNoYXIgKilidWYtPm91dGJ1ZiwgUHlVbmljb2RlX0FTX0RBVEEocmV0dW5pKSwKKyAgICAgICAgbWVtY3B5KChjaGFyICopYnVmLT5vdXRidWYsIFB5VW5pY29kZV9BU19VTklDT0RFKHJldHVuaSksCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1bmlzaXplICogUHlfVU5JQ09ERV9TSVpFKTsKICAgICAgICAgYnVmLT5vdXRidWYgKz0gcmV0dW5pc2l6ZTsKICAgICB9CkBAIC00ODMsNiArNDg1LDcgQEAKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKICAgICBidWYuZXhjb2JqID0gTlVMTDsKKyAgICBidWYub3V0b2JqID0gTlVMTDsKICAgICBidWYuaW5idWYgPSBidWYuaW5idWZfdG9wID0gKmRhdGE7CiAgICAgYnVmLmluYnVmX2VuZCA9IGJ1Zi5pbmJ1Zl90b3AgKyBkYXRhbGVuOwogCkBAIC01NzMsOCArNTc2LDExIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkYXRhID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYXJnKTsKLSAgICBkYXRhbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGFyZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKGFyZywgJmRhdGFsZW4pOworICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICAgICAgUHlfWERFQ1JFRih1Y3Z0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgZXJyb3JjYiA9IGludGVybmFsX2Vycm9yX2NhbGxiYWNrKGVycm9ycyk7CiAgICAgaWYgKGVycm9yY2IgPT0gTlVMTCkgewpAQCAtNjI3LDcgKzYzMyw3IEBACiAgICAgaWYgKGRhdGFsZW4gPT0gMCkgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgICAgIEVSUk9SX0RFQ1JFRihlcnJvcmNiKTsKLSAgICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApLCAwKTsKKyAgICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoUHlVbmljb2RlX05ldygwLCAwKSwgMCk7CiAgICAgfQogCiAgICAgYnVmLmV4Y29iaiA9IE5VTEw7CkBAIC02MzcsNiArNjQzLDggQEAKICAgICBpZiAoYnVmLm91dG9iaiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yZXhpdDsKICAgICBidWYub3V0YnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYnVmLm91dG9iaik7CisgICAgaWYgKGJ1Zi5vdXRidWYgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgYnVmLm91dGJ1Zl9lbmQgPSBidWYub3V0YnVmICsgUHlVbmljb2RlX0dFVF9TSVpFKGJ1Zi5vdXRvYmopOwogCiAgICAgaWYgKHNlbGYtPmNvZGVjLT5kZWNpbml0ICE9IE5VTEwgJiYKQEAgLTc0Miw2ICs3NTAsNyBAQAogICAgIFB5T2JqZWN0ICp1Y3Z0LCAqciA9IE5VTEw7CiAgICAgUHlfVU5JQ09ERSAqaW5idWYsICppbmJ1Zl9lbmQsICppbmJ1Zl90bXAgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgZGF0YWxlbiwgb3JpZ3BlbmRpbmc7CisgICAgd2NoYXJfdCAqZGF0YTsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodW5pc3RyKSkKICAgICAgICAgdWN2dCA9IE5VTEw7CkBAIC03NTcsNyArNzY2LDkgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGRhdGFsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodW5pc3RyKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodW5pc3RyLCAmZGF0YWxlbik7CisgICAgaWYgKGRhdGEgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgb3JpZ3BlbmRpbmcgPSBjdHgtPnBlbmRpbmdzaXplOwogCiAgICAgaWYgKG9yaWdwZW5kaW5nID4gMCkgewpAQCAtODQ4LDcgKzg1OSw5IEBACiAgICAgICAgIGJ1Zi0+b3V0b2JqID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNpemUpOwogICAgICAgICBpZiAoYnVmLT5vdXRvYmogPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgYnVmLT5vdXRidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShidWYtPm91dG9iaik7CisgICAgICAgIGJ1Zi0+b3V0YnVmID0gUHlVbmljb2RlX0FzVW5pY29kZShidWYtPm91dG9iaik7CisgICAgICAgIGlmIChidWYtPm91dGJ1ZiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBidWYtPm91dGJ1Zl9lbmQgPSBidWYtPm91dGJ1ZiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShidWYtPm91dG9iaik7CiAgICAgfQpAQCAtOTAwLDExICs5MTMsMTcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYmllbmNvZGVyX3Jlc2V0KE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZikKIHsKLSAgICBpZiAoc2VsZi0+Y29kZWMtPmRlY3Jlc2V0ICE9IE5VTEwgJiYKLSAgICAgICAgc2VsZi0+Y29kZWMtPmRlY3Jlc2V0KCZzZWxmLT5zdGF0ZSwgc2VsZi0+Y29kZWMtPmNvbmZpZykgIT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogTG9uZ2VzdCBvdXRwdXQ6IDQgYnl0ZXMgKGInXHgwRlx4MUYoQicpIHdpdGggSVNPIDIwMjIgKi8KKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0XSwgKm91dGJ1ZjsKKyAgICBQeV9zc2l6ZV90IHI7CisgICAgaWYgKHNlbGYtPmNvZGVjLT5lbmNyZXNldCAhPSBOVUxMKSB7CisgICAgICAgIG91dGJ1ZiA9IGJ1ZmZlcjsKKyAgICAgICAgciA9IHNlbGYtPmNvZGVjLT5lbmNyZXNldCgmc2VsZi0+c3RhdGUsIHNlbGYtPmNvZGVjLT5jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dGJ1Ziwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICBpZiAociAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHNlbGYtPnBlbmRpbmdzaXplID0gMDsKLQogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0xMjQ2LDcgKzEyNjUsNyBAQAogICAgIFB5X3NzaXplX3QgcnNpemUsIGZpbmFsc2l6ZSA9IDA7CiAKICAgICBpZiAoc2l6ZWhpbnQgPT0gMCkKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAKICAgICBidWYub3V0b2JqID0gYnVmLmV4Y29iaiA9IE5VTEw7CiAgICAgY3JlcyA9IE5VTEw7CkBAIC0xNTcyLDEyICsxNTkxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaXN0cikKIHsKICAgICBQeU9iamVjdCAqc3RyLCAqd3I7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOwogCiAgICAgc3RyID0gZW5jb2Rlcl9lbmNvZGVfc3RhdGVmdWwoU1RBVEVGVUxfRUNUWChzZWxmKSwgdW5pc3RyLCAwKTsKICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHdyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5zdHJlYW0sICJ3cml0ZSIsICJPIiwgc3RyKTsKKyAgICB3ciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+c3RyZWFtLCAmUHlJZF93cml0ZSwgIk8iLCBzdHIpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIGlmICh3ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CkBAIC0xNjQzLDcgKzE2NjMsOSBAQAogICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHB3cnQpKTsKICAgICBpZiAoUHlCeXRlc19TaXplKHB3cnQpID4gMCkgewogICAgICAgICBQeU9iamVjdCAqd3I7Ci0gICAgICAgIHdyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5zdHJlYW0sICJ3cml0ZSIsICJPIiwgcHdydCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKworICAgICAgICB3ciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+c3RyZWFtLCAmUHlJZF93cml0ZSwgIk8iLCBwd3J0KTsKICAgICAgICAgaWYgKHdyID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihwd3J0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jb25maWcuYy5pbiBiL01vZHVsZXMvY29uZmlnLmMuaW4KaW5kZXggMzRkNDRkNS4uN2EyNGUyZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jb25maWcuYy5pbgorKysgYi9Nb2R1bGVzL2NvbmZpZy5jLmluCkBAIC0zOSwxMyArMzksMTIgQEAKICAgICB7Im1hcnNoYWwiLCBQeU1hcnNoYWxfSW5pdH0sCiAKICAgICAvKiBUaGlzIGxpdmVzIGluIGltcG9ydC5jICovCi0gICAgeyJpbXAiLCBQeUluaXRfaW1wfSwKKyAgICB7Il9pbXAiLCBQeUluaXRfaW1wfSwKIAogICAgIC8qIFRoaXMgbGl2ZXMgaW4gUHl0aG9uL1B5dGhvbi1hc3QuYyAqLwogICAgIHsiX2FzdCIsIFB5SW5pdF9fYXN0fSwKIAogICAgIC8qIFRoZXNlIGVudHJpZXMgYXJlIGhlcmUgZm9yIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcyAqLwotICAgIHsiX19tYWluX18iLCBOVUxMfSwKICAgICB7ImJ1aWx0aW5zIiwgTlVMTH0sCiAgICAgeyJzeXMiLCBOVUxMfSwKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9lcnJub21vZHVsZS5jIGIvTW9kdWxlcy9lcnJub21vZHVsZS5jCmluZGV4IDg2NzIwYWYuLjA2ZWQ1M2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXJybm9tb2R1bGUuYworKysgYi9Nb2R1bGVzL2Vycm5vbW9kdWxlLmMKQEAgLTcsNiArNywzMyBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKy8qIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIHdlcmUgYWRkZWQgdG8gZXJybm8uaCBpbiBWUzIwMTAgYnV0IGhhdmUKKyAgIHByZWZlcnJlZCBXU0EgZXF1aXZhbGVudHMuICovCisjdW5kZWYgRUFERFJJTlVTRQorI3VuZGVmIEVBRERSTk9UQVZBSUwKKyN1bmRlZiBFQUZOT1NVUFBPUlQKKyN1bmRlZiBFQUxSRUFEWQorI3VuZGVmIEVDT05OQUJPUlRFRAorI3VuZGVmIEVDT05OUkVGVVNFRAorI3VuZGVmIEVDT05OUkVTRVQKKyN1bmRlZiBFREVTVEFERFJSRVEKKyN1bmRlZiBFSE9TVFVOUkVBQ0gKKyN1bmRlZiBFSU5QUk9HUkVTUworI3VuZGVmIEVJU0NPTk4KKyN1bmRlZiBFTE9PUAorI3VuZGVmIEVNU0dTSVpFCisjdW5kZWYgRU5FVERPV04KKyN1bmRlZiBFTkVUUkVTRVQKKyN1bmRlZiBFTkVUVU5SRUFDSAorI3VuZGVmIEVOT0JVRlMKKyN1bmRlZiBFTk9QUk9UT09QVAorI3VuZGVmIEVOT1RDT05OCisjdW5kZWYgRU5PVFNPQ0sKKyN1bmRlZiBFT1BOT1RTVVBQCisjdW5kZWYgRVBST1RPTk9TVVBQT1JUCisjdW5kZWYgRVBST1RPVFlQRQorI3VuZGVmIEVUSU1FRE9VVAorI3VuZGVmIEVXT1VMREJMT0NLCiAjZW5kaWYKIAogLyoKQEAgLTg0LDYgKzExMSw4IEBACiAgICAgICogVGhlIG5hbWVzIGFuZCBjb21tZW50cyBhcmUgYm9ycm93ZWQgZnJvbSBsaW51eC9pbmNsdWRlL2Vycm5vLmgsCiAgICAgICogd2hpY2ggc2hvdWxkIGJlIHByZXR0eSBhbGwtaW5jbHVzaXZlLiAgSG93ZXZlciwgdGhlIFNvbGFyaXMgc3BlY2lmaWMKICAgICAgKiBuYW1lcyBhbmQgY29tbWVudHMgYXJlIGJvcnJvd2VkIGZyb20gc3lzL2Vycm5vLmggaW4gU29sYXJpcy4KKyAgICAgKiBNYWNPU1ggc3BlY2lmaWMgbmFtZXMgYW5kIGNvbW1lbnRzIGFyZSBib3Jyb3dlZCBmcm9tIHN5cy9lcnJuby5oIGluCisgICAgICogTWFjT1NYLgogICAgICAqLwogCiAjaWZkZWYgRU5PREVWCkBAIC04NDgsNiArODc3LDU5IEBACiAgICAgaW5zY29kZShkLCBkcywgZGUsICJFTk9UQUNUSVZFIiwgRU5PVEFDVElWRSwgIkZhY2lsaXR5IGlzIG5vdCBhY3RpdmUiKTsKICNlbmRpZgogCisgICAgLyogTWFjT1NYIHNwZWNpZmljIGVycm5vcyAqLworI2lmZGVmIEVBVVRICisgICAgaW5zY29kZShkLCBkcywgZGUsICJFQVVUSCIsIEVBVVRILCAiQXV0aGVudGljYXRpb24gZXJyb3IiKTsKKyNlbmRpZgorI2lmZGVmIEVCQURBUkNICisgICAgaW5zY29kZShkLCBkcywgZGUsICJFQkFEQVJDSCIsIEVCQURBUkNILCAiQmFkIENQVSB0eXBlIGluIGV4ZWN1dGFibGUiKTsKKyNlbmRpZgorI2lmZGVmIEVCQURFWEVDCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFQkFERVhFQyIsIEVCQURFWEVDLCAiQmFkIGV4ZWN1dGFibGUgKG9yIHNoYXJlZCBsaWJyYXJ5KSIpOworI2VuZGlmCisjaWZkZWYgRUJBRE1BQ0hPCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFQkFETUFDSE8iLCBFQkFETUFDSE8sICJNYWxmb3JtZWQgTWFjaC1vIGZpbGUiKTsKKyNlbmRpZgorI2lmZGVmIEVCQURSUEMKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVCQURSUEMiLCBFQkFEUlBDLCAiUlBDIHN0cnVjdCBpcyBiYWQiKTsKKyNlbmRpZgorI2lmZGVmIEVERVZFUlIKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVERVZFUlIiLCBFREVWRVJSLCAiRGV2aWNlIGVycm9yIik7CisjZW5kaWYKKyNpZmRlZiBFRlRZUEUKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVGVFlQRSIsIEVGVFlQRSwgIkluYXBwcm9wcmlhdGUgZmlsZSB0eXBlIG9yIGZvcm1hdCIpOworI2VuZGlmCisjaWZkZWYgRU5FRURBVVRICisgICAgaW5zY29kZShkLCBkcywgZGUsICJFTkVFREFVVEgiLCBFTkVFREFVVEgsICJOZWVkIGF1dGhlbnRpY2F0b3IiKTsKKyNlbmRpZgorI2lmZGVmIEVOT0FUVFIKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVOT0FUVFIiLCBFTk9BVFRSLCAiQXR0cmlidXRlIG5vdCBmb3VuZCIpOworI2VuZGlmCisjaWZkZWYgRU5PUE9MSUNZCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFTk9QT0xJQ1kiLCBFTk9QT0xJQ1ksICJQb2xpY3kgbm90IGZvdW5kIik7CisjZW5kaWYKKyNpZmRlZiBFUFJPQ0xJTQorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVBST0NMSU0iLCBFUFJPQ0xJTSwgIlRvbyBtYW55IHByb2Nlc3NlcyIpOworI2VuZGlmCisjaWZkZWYgRVBST0NVTkFWQUlMCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFUFJPQ1VOQVZBSUwiLCBFUFJPQ1VOQVZBSUwsICJCYWQgcHJvY2VkdXJlIGZvciBwcm9ncmFtIik7CisjZW5kaWYKKyNpZmRlZiBFUFJPR01JU01BVENICisgICAgaW5zY29kZShkLCBkcywgZGUsICJFUFJPR01JU01BVENIIiwgRVBST0dNSVNNQVRDSCwgIlByb2dyYW0gdmVyc2lvbiB3cm9uZyIpOworI2VuZGlmCisjaWZkZWYgRVBST0dVTkFWQUlMCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFUFJPR1VOQVZBSUwiLCBFUFJPR1VOQVZBSUwsICJSUEMgcHJvZy4gbm90IGF2YWlsIik7CisjZW5kaWYKKyNpZmRlZiBFUFdST0ZGCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFUFdST0ZGIiwgRVBXUk9GRiwgIkRldmljZSBwb3dlciBpcyBvZmYiKTsKKyNlbmRpZgorI2lmZGVmIEVSUENNSVNNQVRDSAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVJQQ01JU01BVENIIiwgRVJQQ01JU01BVENILCAiUlBDIHZlcnNpb24gd3JvbmciKTsKKyNlbmRpZgorI2lmZGVmIEVTSExJQlZFUlMKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVTSExJQlZFUlMiLCBFU0hMSUJWRVJTLCAiU2hhcmVkIGxpYnJhcnkgdmVyc2lvbiBtaXNtYXRjaCIpOworI2VuZGlmCisKICAgICBQeV9ERUNSRUYoZGUpOwogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9DT1BZSU5HIGIvTW9kdWxlcy9leHBhdC9DT1BZSU5HCmluZGV4IGZjOTdiMDIuLmRjYjQ1MDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvQ09QWUlORworKysgYi9Nb2R1bGVzL2V4cGF0L0NPUFlJTkcKQEAgLTEsNSArMSw2IEBACiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIENsYXJrIENvb3BlcgorQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEV4cGF0IG1haW50YWluZXJzLgogCiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9hbWlnYWNvbmZpZy5oIGIvTW9kdWxlcy9leHBhdC9hbWlnYWNvbmZpZy5oCmluZGV4IDY3ODFhNzEuLjg2YzYxMTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvYW1pZ2Fjb25maWcuaAorKysgYi9Nb2R1bGVzL2V4cGF0L2FtaWdhY29uZmlnLmgKQEAgLTEwLDY2ICsxMCwxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxjaGVjay5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0NIRUNLX0gKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkbGZjbi5oPiBoZWFkZXIgZmlsZS4gKi8KLSN1bmRlZiBIQVZFX0RMRkNOX0gKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9GQ05UTF9IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRwYWdlc2l6ZScgZnVuY3Rpb24uICovCi0jdW5kZWYgSEFWRV9HRVRQQUdFU0laRQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX0lOVFRZUEVTX0ggMQotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbW1vdmUnIGZ1bmN0aW9uLiAqLwogI2RlZmluZSBIQVZFX01FTU1PVkUgMQogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KLSN1bmRlZiBIQVZFX01FTU9SWV9ICi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgd29ya2luZyBgbW1hcCcgc3lzdGVtIGNhbGwuICovCi0jdW5kZWYgSEFWRV9NTUFQCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NURElOVF9IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RETElCX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwogI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKIAotLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCi0jZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJleHBhdC1idWdzQG1haWwubGliZXhwYXQub3JnIgotCi0vKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0jZGVmaW5lIFBBQ0tBR0VfTkFNRSAiZXhwYXQiCi0KLS8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImV4cGF0IDEuOTUuOCIKLQotLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwotI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQotCi0vKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjEuOTUuOCIKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCi0jZGVmaW5lIFNURENfSEVBREVSUyAxCi0KIC8qIHdoZXRoZXIgYnl0ZW9yZGVyIGlzIGJpZ2VuZGlhbiAqLwogI2RlZmluZSBXT1JEU19CSUdFTkRJQU4KIApAQCAtODMsMTQgKzI5LDQgQEAKIC8qIERlZmluZSB0byBtYWtlIFhNTCBOYW1lc3BhY2VzIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlLiAqLwogI2RlZmluZSBYTUxfTlMKIAotLyogRGVmaW5lIHRvIGVtcHR5IGlmIGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMuICovCi0jdW5kZWYgY29uc3QKLQotLyogRGVmaW5lIHRvIGBsb25nJyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KLSN1bmRlZiBvZmZfdAotCi0vKiBEZWZpbmUgdG8gYHVuc2lnbmVkJyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KLSN1bmRlZiBzaXplX3QKLQotCiAjZW5kaWYgIC8qIEFNSUdBQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQvYXNjaWkuaCBiL01vZHVsZXMvZXhwYXQvYXNjaWkuaAppbmRleCAzMzdlNWJiLi5kMTA1MzBiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L2FzY2lpLmgKKysrIGIvTW9kdWxlcy9leHBhdC9hc2NpaS5oCkBAIC04MywzICs4MywxMCBAQAogI2RlZmluZSBBU0NJSV9MU1FCIDB4NUIKICNkZWZpbmUgQVNDSUlfUlNRQiAweDVECiAjZGVmaW5lIEFTQ0lJX1VOREVSU0NPUkUgMHg1RgorI2RlZmluZSBBU0NJSV9MUEFSRU4gMHgyOAorI2RlZmluZSBBU0NJSV9SUEFSRU4gMHgyOQorI2RlZmluZSBBU0NJSV9GRiAweDBDCisjZGVmaW5lIEFTQ0lJX1NMQVNIIDB4MkYKKyNkZWZpbmUgQVNDSUlfSEFTSCAweDIzCisjZGVmaW5lIEFTQ0lJX1BJUEUgMHg3QworI2RlZmluZSBBU0NJSV9DT01NQSAweDJDCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L2V4cGF0LmggYi9Nb2R1bGVzL2V4cGF0L2V4cGF0LmgKaW5kZXggODk2NDZkMi4uMDZiNWRlMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC9leHBhdC5oCisrKyBiL01vZHVsZXMvZXhwYXQvZXhwYXQuaApAQCAtNzQyLDYgKzc0MiwyOSBAQAogWE1MUEFSU0VBUEkoaW50KQogWE1MX0dldElkQXR0cmlidXRlSW5kZXgoWE1MX1BhcnNlciBwYXJzZXIpOwogCisjaWZkZWYgWE1MX0FUVFJfSU5GTworLyogU291cmNlIGZpbGUgYnl0ZSBvZmZzZXRzIGZvciB0aGUgc3RhcnQgYW5kIGVuZCBvZiBhdHRyaWJ1dGUgbmFtZXMgYW5kIHZhbHVlcy4KKyAgIFRoZSB2YWx1ZSBpbmRpY2VzIGFyZSBleGNsdXNpdmUgb2Ygc3Vycm91bmRpbmcgcXVvdGVzOyB0aHVzIGluIGEgVVRGLTggc291cmNlCisgICBmaWxlIGFuIGF0dHJpYnV0ZSB2YWx1ZSBvZiAiYmxhaCIgd2lsbCB5aWVsZDoKKyAgIGluZm8tPnZhbHVlRW5kIC0gaW5mby0+dmFsdWVTdGFydCA9IDQgYnl0ZXMuCisqLwordHlwZWRlZiBzdHJ1Y3QgeworICBYTUxfSW5kZXggIG5hbWVTdGFydDsgIC8qIE9mZnNldCB0byBiZWdpbm5pbmcgb2YgdGhlIGF0dHJpYnV0ZSBuYW1lLiAqLworICBYTUxfSW5kZXggIG5hbWVFbmQ7ICAgIC8qIE9mZnNldCBhZnRlciB0aGUgYXR0cmlidXRlIG5hbWUncyBsYXN0IGJ5dGUuICovCisgIFhNTF9JbmRleCAgdmFsdWVTdGFydDsgLyogT2Zmc2V0IHRvIGJlZ2lubmluZyBvZiB0aGUgYXR0cmlidXRlIHZhbHVlLiAqLworICBYTUxfSW5kZXggIHZhbHVlRW5kOyAgIC8qIE9mZnNldCBhZnRlciB0aGUgYXR0cmlidXRlIHZhbHVlJ3MgbGFzdCBieXRlLiAqLworfSBYTUxfQXR0ckluZm87CisKKy8qIFJldHVybnMgYW4gYXJyYXkgb2YgWE1MX0F0dHJJbmZvIHN0cnVjdHVyZXMgZm9yIHRoZSBhdHRyaWJ1dGUvdmFsdWUgcGFpcnMKKyAgIHBhc3NlZCBpbiBsYXN0IGNhbGwgdG8gdGhlIFhNTF9TdGFydEVsZW1lbnRIYW5kbGVyIHRoYXQgd2VyZSBzcGVjaWZpZWQKKyAgIGluIHRoZSBzdGFydC10YWcgcmF0aGVyIHRoYW4gZGVmYXVsdGVkLiBFYWNoIGF0dHJpYnV0ZS92YWx1ZSBwYWlyIGNvdW50cworICAgYXMgMTsgdGh1cyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGFycmF5IGlzCisgICBYTUxfR2V0U3BlY2lmaWVkQXR0cmlidXRlQ291bnQocGFyc2VyKSAvIDIuCisqLworWE1MUEFSU0VBUEkoY29uc3QgWE1MX0F0dHJJbmZvICopCitYTUxfR2V0QXR0cmlidXRlSW5mbyhYTUxfUGFyc2VyIHBhcnNlcik7CisjZW5kaWYKKwogLyogUGFyc2VzIHNvbWUgaW5wdXQuIFJldHVybnMgWE1MX1NUQVRVU19FUlJPUiBpZiBhIGZhdGFsIGVycm9yIGlzCiAgICBkZXRlY3RlZC4gIFRoZSBsYXN0IGNhbGwgdG8gWE1MX1BhcnNlIG11c3QgaGF2ZSBpc0ZpbmFsIHRydWU7IGxlbgogICAgbWF5IGJlIHplcm8gZm9yIHRoaXMgY2FsbCAob3IgYW55IG90aGVyKS4KQEAgLTk5NCw3ICsxMDE3LDkgQEAKICAgWE1MX0ZFQVRVUkVfTUlOX1NJWkUsCiAgIFhNTF9GRUFUVVJFX1NJWkVPRl9YTUxfQ0hBUiwKICAgWE1MX0ZFQVRVUkVfU0laRU9GX1hNTF9MQ0hBUiwKLSAgWE1MX0ZFQVRVUkVfTlMKKyAgWE1MX0ZFQVRVUkVfTlMsCisgIFhNTF9GRUFUVVJFX0xBUkdFX1NJWkUsCisgIFhNTF9GRUFUVVJFX0FUVFJfSU5GTwogICAvKiBBZGRpdGlvbmFsIGZlYXR1cmVzIG11c3QgYmUgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGlzIGVudW0uICovCiB9OwogCkBAIC0xMDE0LDcgKzEwMzksNyBAQAogICAgY2hhbmdlIHRvIG1ham9yIG9yIG1pbm9yIHZlcnNpb24uCiAqLwogI2RlZmluZSBYTUxfTUFKT1JfVkVSU0lPTiAyCi0jZGVmaW5lIFhNTF9NSU5PUl9WRVJTSU9OIDAKKyNkZWZpbmUgWE1MX01JTk9SX1ZFUlNJT04gMQogI2RlZmluZSBYTUxfTUlDUk9fVkVSU0lPTiAwCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9leHBhdF9leHRlcm5hbC5oIGIvTW9kdWxlcy9leHBhdC9leHBhdF9leHRlcm5hbC5oCmluZGV4IDNmMWMzNjMuLjJjMDMyODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvZXhwYXRfZXh0ZXJuYWwuaAorKysgYi9Nb2R1bGVzL2V4cGF0L2V4cGF0X2V4dGVybmFsLmgKQEAgLTcsMTEgKzcsNyBAQAogCiAvKiBFeHRlcm5hbCBBUEkgZGVmaW5pdGlvbnMgKi8KIAotLyogTmFtZXNwYWNlIGV4dGVybmFsIHN5bWJvbHMgdG8gYWxsb3cgbXVsdGlwbGUgbGliZXhwYXQgdmVyc2lvbiB0bwotICAgY28tZXhpc3QuICovCi0jaW5jbHVkZSAicHlleHBhdG5zLmgiCi0KLSNpZiBkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgIWRlZmluZWQoX19DWUdXSU5fXykKKyNpZiBkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgIWRlZmluZWQoX19CRU9TX18pICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCiAjZGVmaW5lIFhNTF9VU0VfTVNDX0VYVEVOU0lPTlMgMQogI2VuZGlmCiAKQEAgLTM4LDkgKzM0LDkgQEAKICAgIHN5c3RlbSBoZWFkZXJzIG1heSBhc3N1bWUgdGhlIGNkZWNsIGNvbnZlbnRpb24uCiAqLwogI2lmbmRlZiBYTUxDQUxMCi0jaWYgZGVmaW5lZChYTUxfVVNFX01TQ19FWFRFTlNJT05TKQorI2lmIGRlZmluZWQoX01TQ19WRVIpCiAjZGVmaW5lIFhNTENBTEwgX19jZGVjbAotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2kzODYpCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9faTM4NikgJiYgIWRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKICNkZWZpbmUgWE1MQ0FMTCBfX2F0dHJpYnV0ZV9fKChjZGVjbCkpCiAjZWxzZQogLyogRm9yIGFueSBwbGF0Zm9ybSB3aGljaCB1c2VzIHRoaXMgZGVmaW5pdGlvbiBhbmQgc3VwcG9ydHMgbW9yZSB0aGFuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L2ludGVybmFsLmggYi9Nb2R1bGVzL2V4cGF0L2ludGVybmFsLmgKaW5kZXggZmYwNTZjNi4uZGQ1NDU0OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC9pbnRlcm5hbC5oCisrKyBiL01vZHVsZXMvZXhwYXQvaW50ZXJuYWwuaApAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICAgYW5kIHRoZXJlZm9yZSBzdWJqZWN0IHRvIGNoYW5nZS4KICovCiAKLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9faTM4Nl9fKQorI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19pMzg2X18pICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogLyogV2UnbGwgdXNlIHRoaXMgdmVyc2lvbiBieSBkZWZhdWx0IG9ubHkgd2hlcmUgd2Uga25vdyBpdCBoZWxwcy4KIAogICAgcmVncGFybSgpIGdlbmVyYXRlcyB3YXJuaW5ncyBvbiBTb2xhcmlzIGJveGVzLiAgIFNlZSBTRiBidWcgIzY5Mjg3OC4KZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQvd2F0Y29tY29uZmlnLmggYi9Nb2R1bGVzL2V4cGF0L3dhdGNvbWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMDVlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2V4cGF0L3dhdGNvbWNvbmZpZy5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qIGV4cGF0X2NvbmZpZy5oIGZvciB1c2Ugd2l0aCBPcGVuIFdhdGNvbSAxLjUgYW5kIGFib3ZlLiAgKi8KKworI2lmbmRlZiBXQVRDT01DT05GSUdfSAorI2RlZmluZSBXQVRDT01DT05GSUdfSAorCisjaWZkZWYgX19OVF9fCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjdW5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2VuZGlmCisKKy8qIDEyMzQgPSBMSUxfRU5ESUFOLCA0MzIxID0gQklHRU5ESUFOICovCisjZGVmaW5lIEJZVEVPUkRFUiAxMjM0CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtbW92ZScgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfTUVNTU9WRSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKKworLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCisjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJleHBhdC1idWdzQG1haWwubGliZXhwYXQub3JnIgorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tBR0VfTkFNRSAiZXhwYXQiCisKKy8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImV4cGF0IDIuMC4wIgorCisvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjdW5kZWYgUEFDS0FHRV9UQVJOQU1FCisKKy8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMi4wLjAiCisKKy8qIERlZmluZSB0byBzcGVjaWZ5IGhvdyBtdWNoIGNvbnRleHQgdG8gcmV0YWluIGFyb3VuZCB0aGUgY3VycmVudCBwYXJzZQorICAgcG9pbnQuICovCisjZGVmaW5lIFhNTF9DT05URVhUX0JZVEVTIDEwMjQKKworLyogRGVmaW5lIHRvIG1ha2UgcGFyYW1ldGVyIGVudGl0eSBwYXJzaW5nIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlLiAqLworI2RlZmluZSBYTUxfRFREIDEKKworLyogRGVmaW5lIHRvIG1ha2UgWE1MIE5hbWVzcGFjZXMgZnVuY3Rpb25hbGl0eSBhdmFpbGFibGUuICovCisjZGVmaW5lIFhNTF9OUyAxCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3htbHBhcnNlLmMgYi9Nb2R1bGVzL2V4cGF0L3htbHBhcnNlLmMKaW5kZXggNDZmNjUwNy4uZjM1YWEzNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC94bWxwYXJzZS5jCisrKyBiL01vZHVsZXMvZXhwYXQveG1scGFyc2UuYwpAQCAtMiwyNCArMiwyNyBAQAogICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KICovCiAKLSNkZWZpbmUgWE1MX0JVSUxESU5HX0VYUEFUIDEKLQotI2lmZGVmIENPTVBJTEVEX0ZST01fRFNQCi0jaW5jbHVkZSAid2luY29uZmlnLmgiCi0jZWxpZiBkZWZpbmVkKE1BQ09TX0NMQVNTSUMpCi0jaW5jbHVkZSAibWFjY29uZmlnLmgiCi0jZWxpZiBkZWZpbmVkKF9fYW1pZ2FvczRfXykKLSNpbmNsdWRlICJhbWlnYWNvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChIQVZFX0VYUEFUX0NPTkZJR19IKQotI2luY2x1ZGUgPGV4cGF0X2NvbmZpZy5oPgotI2VuZGlmIC8qIG5kZWYgQ09NUElMRURfRlJPTV9EU1AgKi8KLQogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPiAgICAgICAgICAgICAgICAgICAgIC8qIG1lbXNldCgpLCBtZW1jcHkoKSAqLwogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPiAgICAgICAgICAgICAgICAgICAgIC8qIFVJTlRfTUFYICovCiAjaW5jbHVkZSA8dGltZS5oPiAgICAgICAgICAgICAgICAgICAgICAgLyogdGltZSgpICovCiAKKyNkZWZpbmUgWE1MX0JVSUxESU5HX0VYUEFUIDEKKworI2lmZGVmIENPTVBJTEVEX0ZST01fRFNQCisjaW5jbHVkZSAid2luY29uZmlnLmgiCisjZWxpZiBkZWZpbmVkKE1BQ09TX0NMQVNTSUMpCisjaW5jbHVkZSAibWFjY29uZmlnLmgiCisjZWxpZiBkZWZpbmVkKF9fYW1pZ2Fvc19fKQorI2luY2x1ZGUgImFtaWdhY29uZmlnLmgiCisjZWxpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKQorI2luY2x1ZGUgIndhdGNvbWNvbmZpZy5oIgorI2VsaWYgZGVmaW5lZChIQVZFX0VYUEFUX0NPTkZJR19IKQorI2luY2x1ZGUgPGV4cGF0X2NvbmZpZy5oPgorI2VuZGlmIC8qIG5kZWYgQ09NUElMRURfRlJPTV9EU1AgKi8KKworI2luY2x1ZGUgImFzY2lpLmgiCiAjaW5jbHVkZSAiZXhwYXQuaCIKIAogI2lmZGVmIFhNTF9VTklDT0RFCkBAIC0yOCw3ICszMSw4IEBACiAjZGVmaW5lIFhtbEdldEludGVybmFsRW5jb2RpbmcgWG1sR2V0VXRmMTZJbnRlcm5hbEVuY29kaW5nCiAjZGVmaW5lIFhtbEdldEludGVybmFsRW5jb2RpbmdOUyBYbWxHZXRVdGYxNkludGVybmFsRW5jb2RpbmdOUwogI2RlZmluZSBYbWxFbmNvZGUgWG1sVXRmMTZFbmNvZGUKLSNkZWZpbmUgTVVTVF9DT05WRVJUKGVuYywgcykgKCEoZW5jKS0+aXNVdGYxNiB8fCAoKCh1bnNpZ25lZCBsb25nKXMpICYgMSkpCisvKiBVc2luZyBwb2ludGVyIHN1YnRyYWN0aW9uIHRvIGNvbnZlcnQgdG8gaW50ZWdlciB0eXBlLiAqLworI2RlZmluZSBNVVNUX0NPTlZFUlQoZW5jLCBzKSAoIShlbmMpLT5pc1V0ZjE2IHx8ICgoKGNoYXIgKikocykgLSAoY2hhciAqKU5VTEwpICYgMSkpCiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IElDSEFSOwogI2Vsc2UKICNkZWZpbmUgWE1MX0VOQ09ERV9NQVggWE1MX1VURjhfRU5DT0RFX01BWApAQCAtMzI1LDE1ICszMjksMTUgQEAKIHN0YXRpYyBlbnVtIFhNTF9FcnJvcgogaW5pdGlhbGl6ZUVuY29kaW5nKFhNTF9QYXJzZXIgcGFyc2VyKTsKIHN0YXRpYyBlbnVtIFhNTF9FcnJvcgotZG9Qcm9sb2coWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnMsIAotICAgICAgICAgY29uc3QgY2hhciAqZW5kLCBpbnQgdG9rLCBjb25zdCBjaGFyICpuZXh0LCBjb25zdCBjaGFyICoqbmV4dFB0ciwgCitkb1Byb2xvZyhYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcywKKyAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwgaW50IHRvaywgY29uc3QgY2hhciAqbmV4dCwgY29uc3QgY2hhciAqKm5leHRQdHIsCiAgICAgICAgICBYTUxfQm9vbCBoYXZlTW9yZSk7CiBzdGF0aWMgZW51bSBYTUxfRXJyb3IKLXByb2Nlc3NJbnRlcm5hbEVudGl0eShYTUxfUGFyc2VyIHBhcnNlciwgRU5USVRZICplbnRpdHksIAorcHJvY2Vzc0ludGVybmFsRW50aXR5KFhNTF9QYXJzZXIgcGFyc2VyLCBFTlRJVFkgKmVudGl0eSwKICAgICAgICAgICAgICAgICAgICAgICBYTUxfQm9vbCBiZXR3ZWVuRGVjbCk7CiBzdGF0aWMgZW51bSBYTUxfRXJyb3IKIGRvQ29udGVudChYTUxfUGFyc2VyIHBhcnNlciwgaW50IHN0YXJ0VGFnTGV2ZWwsIGNvbnN0IEVOQ09ESU5HICplbmMsCi0gICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCwgY29uc3QgY2hhciAqKmVuZFB0ciwgCisgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCwgY29uc3QgY2hhciAqKmVuZFB0ciwKICAgICAgICAgICBYTUxfQm9vbCBoYXZlTW9yZSk7CiBzdGF0aWMgZW51bSBYTUxfRXJyb3IKIGRvQ2RhdGFTZWN0aW9uKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdCBFTkNPRElORyAqLCBjb25zdCBjaGFyICoqc3RhcnRQdHIsCkBAIC0zNTEsNyArMzU1LDcgQEAKIGFkZEJpbmRpbmcoWE1MX1BhcnNlciBwYXJzZXIsIFBSRUZJWCAqcHJlZml4LCBjb25zdCBBVFRSSUJVVEVfSUQgKmF0dElkLAogICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqdXJpLCBCSU5ESU5HICoqYmluZGluZ3NQdHIpOwogc3RhdGljIGludAotZGVmaW5lQXR0cmlidXRlKEVMRU1FTlRfVFlQRSAqdHlwZSwgQVRUUklCVVRFX0lEICosIFhNTF9Cb29sIGlzQ2RhdGEsIAorZGVmaW5lQXR0cmlidXRlKEVMRU1FTlRfVFlQRSAqdHlwZSwgQVRUUklCVVRFX0lEICosIFhNTF9Cb29sIGlzQ2RhdGEsCiAgICAgICAgICAgICAgICAgWE1MX0Jvb2wgaXNJZCwgY29uc3QgWE1MX0NoYXIgKmRmbHRWYWx1ZSwgWE1MX1BhcnNlciBwYXJzZXIpOwogc3RhdGljIGVudW0gWE1MX0Vycm9yCiBzdG9yZUF0dHJpYnV0ZVZhbHVlKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdCBFTkNPRElORyAqLCBYTUxfQm9vbCBpc0NkYXRhLApAQCAtNDM2LDYgKzQ0MCw3IEBACiAgICAgICAgICAgICAgY29uc3QgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSAqbWVtc3VpdGUsCiAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKm5hbWVTZXAsCiAgICAgICAgICAgICAgRFREICpkdGQpOworCiBzdGF0aWMgdm9pZAogcGFyc2VySW5pdChYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgWE1MX0NoYXIgKmVuY29kaW5nTmFtZSk7CiAKQEAgLTUzNSw2ICs1NDAsOSBAQAogICBOU19BVFQgKm1fbnNBdHRzOwogICB1bnNpZ25lZCBsb25nIG1fbnNBdHRzVmVyc2lvbjsKICAgdW5zaWduZWQgY2hhciBtX25zQXR0c1Bvd2VyOworI2lmZGVmIFhNTF9BVFRSX0lORk8KKyAgWE1MX0F0dHJJbmZvICptX2F0dEluZm87CisjZW5kaWYKICAgUE9TSVRJT04gbV9wb3NpdGlvbjsKICAgU1RSSU5HX1BPT0wgbV90ZW1wUG9vbDsKICAgU1RSSU5HX1BPT0wgbV90ZW1wMlBvb2w7CkBAIC02NDMsNiArNjUxLDcgQEAKICNkZWZpbmUgbnNBdHRzIChwYXJzZXItPm1fbnNBdHRzKQogI2RlZmluZSBuc0F0dHNWZXJzaW9uIChwYXJzZXItPm1fbnNBdHRzVmVyc2lvbikKICNkZWZpbmUgbnNBdHRzUG93ZXIgKHBhcnNlci0+bV9uc0F0dHNQb3dlcikKKyNkZWZpbmUgYXR0SW5mbyAocGFyc2VyLT5tX2F0dEluZm8pCiAjZGVmaW5lIHRlbXBQb29sIChwYXJzZXItPm1fdGVtcFBvb2wpCiAjZGVmaW5lIHRlbXAyUG9vbCAocGFyc2VyLT5tX3RlbXAyUG9vbCkKICNkZWZpbmUgZ3JvdXBDb25uZWN0b3IgKHBhcnNlci0+bV9ncm91cENvbm5lY3RvcikKQEAgLTY3MywxMCArNjgyLDEyIEBACiB9CiAKIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBpbXBsaWNpdENvbnRleHRbXSA9IHsKLSAgJ3gnLCAnbScsICdsJywgJz0nLCAnaCcsICd0JywgJ3QnLCAncCcsICc6JywgJy8nLCAnLycsCi0gICd3JywgJ3cnLCAndycsICcuJywgJ3cnLCAnMycsICcuJywgJ28nLCAncicsICdnJywgJy8nLAotICAnWCcsICdNJywgJ0wnLCAnLycsICcxJywgJzknLCAnOScsICc4JywgJy8nLAotICAnbicsICdhJywgJ20nLCAnZScsICdzJywgJ3AnLCAnYScsICdjJywgJ2UnLCAnXDAnCisgIEFTQ0lJX3gsIEFTQ0lJX20sIEFTQ0lJX2wsIEFTQ0lJX0VRVUFMUywgQVNDSUlfaCwgQVNDSUlfdCwgQVNDSUlfdCwgQVNDSUlfcCwKKyAgQVNDSUlfQ09MT04sIEFTQ0lJX1NMQVNILCBBU0NJSV9TTEFTSCwgQVNDSUlfdywgQVNDSUlfdywgQVNDSUlfdywKKyAgQVNDSUlfUEVSSU9ELCBBU0NJSV93LCBBU0NJSV8zLCBBU0NJSV9QRVJJT0QsIEFTQ0lJX28sIEFTQ0lJX3IsIEFTQ0lJX2csCisgIEFTQ0lJX1NMQVNILCBBU0NJSV9YLCBBU0NJSV9NLCBBU0NJSV9MLCBBU0NJSV9TTEFTSCwgQVNDSUlfMSwgQVNDSUlfOSwKKyAgQVNDSUlfOSwgQVNDSUlfOCwgQVNDSUlfU0xBU0gsIEFTQ0lJX24sIEFTQ0lJX2EsIEFTQ0lJX20sIEFTQ0lJX2UsCisgIEFTQ0lJX3MsIEFTQ0lJX3AsIEFTQ0lJX2EsIEFTQ0lJX2MsIEFTQ0lJX2UsICdcMCcKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nCkBAIC02OTAsMjMgKzcwMSwyMiBAQAogc3RhdGljIFhNTF9Cb29sICAvKiBvbmx5IHZhbGlkIGZvciByb290IHBhcnNlciAqLwogc3RhcnRQYXJzaW5nKFhNTF9QYXJzZXIgcGFyc2VyKQogewotICAvKiBoYXNoIGZ1bmN0aW9ucyBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSBzZXRDb250ZXh0KCkgaXMgY2FsbGVkICovCi0KLSAgaWYgKGhhc2hfc2VjcmV0X3NhbHQgPT0gMCkKLSAgICBoYXNoX3NlY3JldF9zYWx0ID0gZ2VuZXJhdGVfaGFzaF9zZWNyZXRfc2FsdCgpOwotICBpZiAobnMpIHsKLSAgICAvKiBpbXBsaWNpdCBjb250ZXh0IG9ubHkgc2V0IGZvciByb290IHBhcnNlciwgc2luY2UgY2hpbGQKLSAgICAgICBwYXJzZXJzIChpLmUuIGV4dGVybmFsIGVudGl0eSBwYXJzZXJzKSB3aWxsIGluaGVyaXQgaXQKLSAgICAqLwotICAgIHJldHVybiBzZXRDb250ZXh0KHBhcnNlciwgaW1wbGljaXRDb250ZXh0KTsKLSAgfQotICByZXR1cm4gWE1MX1RSVUU7CisgICAgLyogaGFzaCBmdW5jdGlvbnMgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgc2V0Q29udGV4dCgpIGlzIGNhbGxlZCAqLworICAgIGlmIChoYXNoX3NlY3JldF9zYWx0ID09IDApCisgICAgICBoYXNoX3NlY3JldF9zYWx0ID0gZ2VuZXJhdGVfaGFzaF9zZWNyZXRfc2FsdCgpOworICAgIGlmIChucykgeworICAgICAgLyogaW1wbGljaXQgY29udGV4dCBvbmx5IHNldCBmb3Igcm9vdCBwYXJzZXIsIHNpbmNlIGNoaWxkCisgICAgICAgICBwYXJzZXJzIChpLmUuIGV4dGVybmFsIGVudGl0eSBwYXJzZXJzKSB3aWxsIGluaGVyaXQgaXQKKyAgICAgICovCisgICAgICByZXR1cm4gc2V0Q29udGV4dChwYXJzZXIsIGltcGxpY2l0Q29udGV4dCk7CisgICAgfQorICAgIHJldHVybiBYTUxfVFJVRTsKIH0KIAogWE1MX1BhcnNlciBYTUxDQUxMCiBYTUxfUGFyc2VyQ3JlYXRlX01NKGNvbnN0IFhNTF9DaGFyICplbmNvZGluZ05hbWUsCi0gICAgY29uc3QgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSAqbWVtc3VpdGUsCi0gICAgY29uc3QgWE1MX0NoYXIgKm5hbWVTZXApCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgKm1lbXN1aXRlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqbmFtZVNlcCkKIHsKICAgcmV0dXJuIHBhcnNlckNyZWF0ZShlbmNvZGluZ05hbWUsIG1lbXN1aXRlLCBuYW1lU2VwLCBOVUxMKTsKIH0KQEAgLTc1Myw5ICs3NjMsMjAgQEAKICAgICBGUkVFKHBhcnNlcik7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgIGF0dEluZm8gPSAoWE1MX0F0dHJJbmZvKilNQUxMT0MoYXR0c1NpemUgKiBzaXplb2YoWE1MX0F0dHJJbmZvKSk7CisgIGlmIChhdHRJbmZvID09IE5VTEwpIHsKKyAgICBGUkVFKGF0dHMpOworICAgIEZSRUUocGFyc2VyKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorI2VuZGlmCiAgIGRhdGFCdWYgPSAoWE1MX0NoYXIgKilNQUxMT0MoSU5JVF9EQVRBX0JVRl9TSVpFICogc2l6ZW9mKFhNTF9DaGFyKSk7CiAgIGlmIChkYXRhQnVmID09IE5VTEwpIHsKICAgICBGUkVFKGF0dHMpOworI2lmZGVmIFhNTF9BVFRSX0lORk8KKyAgICBGUkVFKGF0dEluZm8pOworI2VuZGlmCiAgICAgRlJFRShwYXJzZXIpOwogICAgIHJldHVybiBOVUxMOwogICB9CkBAIC03NjgsNiArNzg5LDkgQEAKICAgICBpZiAoX2R0ZCA9PSBOVUxMKSB7CiAgICAgICBGUkVFKGRhdGFCdWYpOwogICAgICAgRlJFRShhdHRzKTsKKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgICAgICBGUkVFKGF0dEluZm8pOworI2VuZGlmCiAgICAgICBGUkVFKHBhcnNlcik7CiAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC03ODMsNyArODA3LDcgQEAKICAgdW5rbm93bkVuY29kaW5nSGFuZGxlciA9IE5VTEw7CiAgIHVua25vd25FbmNvZGluZ0hhbmRsZXJEYXRhID0gTlVMTDsKIAotICBuYW1lc3BhY2VTZXBhcmF0b3IgPSAnISc7CisgIG5hbWVzcGFjZVNlcGFyYXRvciA9IEFTQ0lJX0VYQ0w7CiAgIG5zID0gWE1MX0ZBTFNFOwogICBuc190cmlwbGV0cyA9IFhNTF9GQUxTRTsKIApAQCAtMTE1NCw2ICsxMTc4LDkgQEAKICNlbmRpZiAvKiBYTUxfRFREICovCiAgICAgZHRkRGVzdHJveShfZHRkLCAoWE1MX0Jvb2wpIXBhcmVudFBhcnNlciwgJnBhcnNlci0+bV9tZW0pOwogICBGUkVFKCh2b2lkICopYXR0cyk7CisjaWZkZWYgWE1MX0FUVFJfSU5GTworICBGUkVFKCh2b2lkICopYXR0SW5mbyk7CisjZW5kaWYKICAgRlJFRShncm91cENvbm5lY3Rvcik7CiAgIEZSRUUoYnVmZmVyKTsKICAgRlJFRShkYXRhQnVmKTsKQEAgLTEyMzQsNiArMTI2MSwxNCBAQAogICByZXR1cm4gaWRBdHRJbmRleDsKIH0KIAorI2lmZGVmIFhNTF9BVFRSX0lORk8KK2NvbnN0IFhNTF9BdHRySW5mbyAqIFhNTENBTEwKK1hNTF9HZXRBdHRyaWJ1dGVJbmZvKFhNTF9QYXJzZXIgcGFyc2VyKQoreworICByZXR1cm4gYXR0SW5mbzsKK30KKyNlbmRpZgorCiB2b2lkIFhNTENBTEwKIFhNTF9TZXRFbGVtZW50SGFuZGxlcihYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICAgICAgICBYTUxfU3RhcnRFbGVtZW50SGFuZGxlciBzdGFydCwKQEAgLTE0OTksNyArMTUzNCw3IEBACiAgICAgICAgIFhtbFVwZGF0ZVBvc2l0aW9uKGVuY29kaW5nLCBwb3NpdGlvblB0ciwgYnVmZmVyUHRyLCAmcG9zaXRpb24pOwogICAgICAgICBwb3NpdGlvblB0ciA9IGJ1ZmZlclB0cjsKICAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfU1VTUEVOREVEOwotICAgICAgY2FzZSBYTUxfSU5JVElBTElaRUQ6IAorICAgICAgY2FzZSBYTUxfSU5JVElBTElaRUQ6CiAgICAgICBjYXNlIFhNTF9QQVJTSU5HOgogICAgICAgICBwc19wYXJzaW5nID0gWE1MX0ZJTklTSEVEOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KQEAgLTE1NTUsMTUgKzE1OTAsMTEgQEAKICAgICAgICAgICAgICAgICA6IChjaGFyICopUkVBTExPQyhidWZmZXIsIGxlbiAqIDIpKTsKICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkgewogICAgICAgICAgIGVycm9yQ29kZSA9IFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmZmVyID0gdGVtcDsKLSAgICAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgICBlcnJvckNvZGUgPSBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICAgIGV2ZW50UHRyID0gZXZlbnRFbmRQdHIgPSBOVUxMOwogICAgICAgICAgIHByb2Nlc3NvciA9IGVycm9yUHJvY2Vzc29yOwogICAgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwogICAgICAgICB9CisgICAgICAgIGJ1ZmZlciA9IHRlbXA7CiAgICAgICAgIGJ1ZmZlckxpbSA9IGJ1ZmZlciArIGxlbiAqIDI7CiAgICAgICB9CiAgICAgICBtZW1jcHkoYnVmZmVyLCBlbmQsIG5MZWZ0T3Zlcik7CkBAIC0xNjI5LDcgKzE2NjAsNyBAQAogICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgIHJlc3VsdCA9IFhNTF9TVEFUVVNfU1VTUEVOREVEOwogICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxfSU5JVElBTElaRUQ6IAorICAgIGNhc2UgWE1MX0lOSVRJQUxJWkVEOgogICAgIGNhc2UgWE1MX1BBUlNJTkc6CiAgICAgICBpZiAoaXNGaW5hbCkgewogICAgICAgICBwc19wYXJzaW5nID0gWE1MX0ZJTklTSEVEOwpAQCAtMTcxOSw2ICsxNzUwLDggQEAKICAgICAgIGJ1ZmZlclB0ciA9IGJ1ZmZlciA9IG5ld0J1ZjsKICNlbmRpZiAgLyogbm90IGRlZmluZWQgWE1MX0NPTlRFWFRfQllURVMgKi8KICAgICB9CisgICAgZXZlbnRQdHIgPSBldmVudEVuZFB0ciA9IE5VTEw7CisgICAgcG9zaXRpb25QdHIgPSBOVUxMOwogICB9CiAgIHJldHVybiBidWZmZXJFbmQ7CiB9CkBAIC0xNzc2LDcgKzE4MDksNyBAQAogICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgIHJlc3VsdCA9IFhNTF9TVEFUVVNfU1VTUEVOREVEOwogICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxfSU5JVElBTElaRUQ6IAorICAgIGNhc2UgWE1MX0lOSVRJQUxJWkVEOgogICAgIGNhc2UgWE1MX1BBUlNJTkc6CiAgICAgICBpZiAocHNfZmluYWxCdWZmZXIpIHsKICAgICAgICAgcHNfcGFyc2luZyA9IFhNTF9GSU5JU0hFRDsKQEAgLTIwMDEsNiArMjAzNCwxMiBAQAogI2lmZGVmIFhNTF9OUwogICAgIHtYTUxfRkVBVFVSRV9OUywgICAgICAgICAgICAgICBYTUxfTCgiWE1MX05TIiksIDB9LAogI2VuZGlmCisjaWZkZWYgWE1MX0xBUkdFX1NJWkUKKyAgICB7WE1MX0ZFQVRVUkVfTEFSR0VfU0laRSwgICAgICAgWE1MX0woIlhNTF9MQVJHRV9TSVpFIiksIDB9LAorI2VuZGlmCisjaWZkZWYgWE1MX0FUVFJfSU5GTworICAgIHtYTUxfRkVBVFVSRV9BVFRSX0lORk8sICAgICAgICBYTUxfTCgiWE1MX0FUVFJfSU5GTyIpLCAwfSwKKyNlbmRpZgogICAgIHtYTUxfRkVBVFVSRV9FTkQsICAgICAgICAgICAgICBOVUxMLCAwfQogICB9OwogCkBAIC0yMDYzLDcgKzIxMDIsNyBAQAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmRQdHIpCiB7Ci0gIGVudW0gWE1MX0Vycm9yIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIDAsIGVuY29kaW5nLCBzdGFydCwgZW5kLCAKKyAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gZG9Db250ZW50KHBhcnNlciwgMCwgZW5jb2RpbmcsIHN0YXJ0LCBlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOwogICBpZiAocmVzdWx0ID09IFhNTF9FUlJPUl9OT05FKSB7CiAgICAgaWYgKCFzdG9yZVJhd05hbWVzKHBhcnNlcikpCkBAIC0yMTQ1LDcgKzIxODQsNyBAQAogICAgICAgaWYgKHJlc3VsdCAhPSBYTUxfRVJST1JfTk9ORSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgIHN3aXRjaCAocHNfcGFyc2luZykgewotICAgICAgY2FzZSBYTUxfU1VTUEVOREVEOiAKKyAgICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgICAgKmVuZFB0ciA9IG5leHQ7CiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICAgIGNhc2UgWE1MX0ZJTklTSEVEOgpAQCAtMjE3OSw3ICsyMjE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVuZFB0cikKIHsKLSAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gZG9Db250ZW50KHBhcnNlciwgMSwgZW5jb2RpbmcsIHN0YXJ0LCBlbmQsIAorICBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBkb0NvbnRlbnQocGFyc2VyLCAxLCBlbmNvZGluZywgc3RhcnQsIGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFB0ciwgKFhNTF9Cb29sKSFwc19maW5hbEJ1ZmZlcik7CiAgIGlmIChyZXN1bHQgPT0gWE1MX0VSUk9SX05PTkUpIHsKICAgICBpZiAoIXN0b3JlUmF3TmFtZXMocGFyc2VyKSkKQEAgLTIxOTgsNyArMjIzNyw3IEBACiAgICAgICAgICAgWE1MX0Jvb2wgaGF2ZU1vcmUpCiB7CiAgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovCi0gIERURCAqIGNvbnN0IGR0ZCA9IF9kdGQ7ICAKKyAgRFREICogY29uc3QgZHRkID0gX2R0ZDsKIAogICBjb25zdCBjaGFyICoqZXZlbnRQUDsKICAgY29uc3QgY2hhciAqKmV2ZW50RW5kUFA7CkBAIC0yMjI5LDggKzIyNjgsOCBAQAogICAgICAgfQogICAgICAgZWxzZSBpZiAoZGVmYXVsdEhhbmRsZXIpCiAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIGVuZCk7Ci0gICAgICAvKiBXZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgZmluYWwgYnVmZmVyLCBzaG91bGQgd2UgY2hlY2sgZm9yIAotICAgICAgICAgWE1MX1NVU1BFTkRFRCwgWE1MX0ZJTklTSEVEPyAKKyAgICAgIC8qIFdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBmaW5hbCBidWZmZXIsIHNob3VsZCB3ZSBjaGVjayBmb3IKKyAgICAgICAgIFhNTF9TVVNQRU5ERUQsIFhNTF9GSU5JU0hFRD8KICAgICAgICovCiAgICAgICBpZiAoc3RhcnRUYWdMZXZlbCA9PSAwKQogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX0VMRU1FTlRTOwpAQCAtMjU4MSw4ICsyNjIwLDggQEAKICAgICAgIH0KICAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQogICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBlbmQpOwotICAgICAgLyogV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGZpbmFsIGJ1ZmZlciwgc2hvdWxkIHdlIGNoZWNrIGZvciAKLSAgICAgICAgIFhNTF9TVVNQRU5ERUQsIFhNTF9GSU5JU0hFRD8gCisgICAgICAvKiBXZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgZmluYWwgYnVmZmVyLCBzaG91bGQgd2UgY2hlY2sgZm9yCisgICAgICAgICBYTUxfU1VTUEVOREVELCBYTUxfRklOSVNIRUQ/CiAgICAgICAqLwogICAgICAgaWYgKHN0YXJ0VGFnTGV2ZWwgPT0gMCkgewogICAgICAgICAqZXZlbnRQUCA9IGVuZDsKQEAgLTI1OTUsMjYgKzI2MzQsMjkgQEAKICAgICAgICpuZXh0UHRyID0gZW5kOwogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgIGNhc2UgWE1MX1RPS19EQVRBX0NIQVJTOgotICAgICAgaWYgKGNoYXJhY3RlckRhdGFIYW5kbGVyKSB7Ci0gICAgICAgIGlmIChNVVNUX0NPTlZFUlQoZW5jLCBzKSkgewotICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIElDSEFSICpkYXRhUHRyID0gKElDSEFSICopZGF0YUJ1ZjsKLSAgICAgICAgICAgIFhtbENvbnZlcnQoZW5jLCAmcywgbmV4dCwgJmRhdGFQdHIsIChJQ0hBUiAqKWRhdGFCdWZFbmQpOwotICAgICAgICAgICAgKmV2ZW50RW5kUFAgPSBzOwotICAgICAgICAgICAgY2hhcmFjdGVyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywgZGF0YUJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGRhdGFQdHIgLSAoSUNIQVIgKilkYXRhQnVmKSk7Ci0gICAgICAgICAgICBpZiAocyA9PSBuZXh0KQotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICpldmVudFBQID0gczsKKyAgICAgIHsKKyAgICAgICAgWE1MX0NoYXJhY3RlckRhdGFIYW5kbGVyIGNoYXJEYXRhSGFuZGxlciA9IGNoYXJhY3RlckRhdGFIYW5kbGVyOworICAgICAgICBpZiAoY2hhckRhdGFIYW5kbGVyKSB7CisgICAgICAgICAgaWYgKE1VU1RfQ09OVkVSVChlbmMsIHMpKSB7CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgIElDSEFSICpkYXRhUHRyID0gKElDSEFSICopZGF0YUJ1ZjsKKyAgICAgICAgICAgICAgWG1sQ29udmVydChlbmMsICZzLCBuZXh0LCAmZGF0YVB0ciwgKElDSEFSICopZGF0YUJ1ZkVuZCk7CisgICAgICAgICAgICAgICpldmVudEVuZFBQID0gczsKKyAgICAgICAgICAgICAgY2hhckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsIGRhdGFCdWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShkYXRhUHRyIC0gKElDSEFSICopZGF0YUJ1ZikpOworICAgICAgICAgICAgICBpZiAocyA9PSBuZXh0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAqZXZlbnRQUCA9IHM7CisgICAgICAgICAgICB9CiAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNoYXJEYXRhSGFuZGxlcihoYW5kbGVyQXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChYTUxfQ2hhciAqKXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKFhNTF9DaGFyICopbmV4dCAtIChYTUxfQ2hhciAqKXMpKTsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgY2hhcmFjdGVyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWE1MX0NoYXIgKilzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKChYTUxfQ2hhciAqKW5leHQgLSAoWE1MX0NoYXIgKilzKSk7CisgICAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQorICAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICAgfQotICAgICAgZWxzZSBpZiAoZGVmYXVsdEhhbmRsZXIpCi0gICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfVE9LX1BJOgogICAgICAgaWYgKCFyZXBvcnRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ocGFyc2VyLCBlbmMsIHMsIG5leHQpKQpAQCAtMjYzMSw3ICsyNjczLDcgQEAKICAgICB9CiAgICAgKmV2ZW50UFAgPSBzID0gbmV4dDsKICAgICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKLSAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6IAorICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgICpuZXh0UHRyID0gbmV4dDsKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICBjYXNlIFhNTF9GSU5JU0hFRDoKQEAgLTI2OTAsMjMgKzI3MzIsNDQgQEAKICAgaWYgKG4gKyBuRGVmYXVsdEF0dHMgPiBhdHRzU2l6ZSkgewogICAgIGludCBvbGRBdHRzU2l6ZSA9IGF0dHNTaXplOwogICAgIEFUVFJJQlVURSAqdGVtcDsKKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgICAgWE1MX0F0dHJJbmZvICp0ZW1wMjsKKyNlbmRpZgogICAgIGF0dHNTaXplID0gbiArIG5EZWZhdWx0QXR0cyArIElOSVRfQVRUU19TSVpFOwogICAgIHRlbXAgPSAoQVRUUklCVVRFICopUkVBTExPQygodm9pZCAqKWF0dHMsIGF0dHNTaXplICogc2l6ZW9mKEFUVFJJQlVURSkpOwogICAgIGlmICh0ZW1wID09IE5VTEwpCiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICBhdHRzID0gdGVtcDsKKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgICAgdGVtcDIgPSAoWE1MX0F0dHJJbmZvICopUkVBTExPQygodm9pZCAqKWF0dEluZm8sIGF0dHNTaXplICogc2l6ZW9mKFhNTF9BdHRySW5mbykpOworICAgIGlmICh0ZW1wMiA9PSBOVUxMKQorICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CisgICAgYXR0SW5mbyA9IHRlbXAyOworI2VuZGlmCiAgICAgaWYgKG4gPiBvbGRBdHRzU2l6ZSkKICAgICAgIFhtbEdldEF0dHJpYnV0ZXMoZW5jLCBhdHRTdHIsIG4sIGF0dHMpOwogICB9CiAKICAgYXBwQXR0cyA9IChjb25zdCBYTUxfQ2hhciAqKilhdHRzOwogICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgQVRUUklCVVRFICpjdXJyQXR0ID0gJmF0dHNbaV07CisjaWZkZWYgWE1MX0FUVFJfSU5GTworICAgIFhNTF9BdHRySW5mbyAqY3VyckF0dEluZm8gPSAmYXR0SW5mb1tpXTsKKyNlbmRpZgogICAgIC8qIGFkZCB0aGUgbmFtZSBhbmQgdmFsdWUgdG8gdGhlIGF0dHJpYnV0ZSBsaXN0ICovCi0gICAgQVRUUklCVVRFX0lEICphdHRJZCA9IGdldEF0dHJpYnV0ZUlkKHBhcnNlciwgZW5jLCBhdHRzW2ldLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHNbaV0ubmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFhtbE5hbWVMZW5ndGgoZW5jLCBhdHRzW2ldLm5hbWUpKTsKKyAgICBBVFRSSUJVVEVfSUQgKmF0dElkID0gZ2V0QXR0cmlidXRlSWQocGFyc2VyLCBlbmMsIGN1cnJBdHQtPm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJBdHQtPm5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBYbWxOYW1lTGVuZ3RoKGVuYywgY3VyckF0dC0+bmFtZSkpOwogICAgIGlmICghYXR0SWQpCiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgICAgY3VyckF0dEluZm8tPm5hbWVTdGFydCA9IHBhcnNlRW5kQnl0ZUluZGV4IC0gKHBhcnNlRW5kUHRyIC0gY3VyckF0dC0+bmFtZSk7CisgICAgY3VyckF0dEluZm8tPm5hbWVFbmQgPSBjdXJyQXR0SW5mby0+bmFtZVN0YXJ0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFhtbE5hbWVMZW5ndGgoZW5jLCBjdXJyQXR0LT5uYW1lKTsKKyAgICBjdXJyQXR0SW5mby0+dmFsdWVTdGFydCA9IHBhcnNlRW5kQnl0ZUluZGV4IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyc2VFbmRQdHIgLSBjdXJyQXR0LT52YWx1ZVB0cik7CisgICAgY3VyckF0dEluZm8tPnZhbHVlRW5kID0gcGFyc2VFbmRCeXRlSW5kZXggLSAocGFyc2VFbmRQdHIgLSBjdXJyQXR0LT52YWx1ZUVuZCk7CisjZW5kaWYKICAgICAvKiBEZXRlY3QgZHVwbGljYXRlIGF0dHJpYnV0ZXMgYnkgdGhlaXIgUU5hbWVzLiBUaGlzIGRvZXMgbm90IHdvcmsgd2hlbgogICAgICAgIG5hbWVzcGFjZSBwcm9jZXNzaW5nIGlzIHR1cm5lZCBvbiBhbmQgZGlmZmVyZW50IHByZWZpeGVzIGZvciB0aGUgc2FtZQogICAgICAgIG5hbWVzcGFjZSBhcmUgdXNlZC4gRm9yIHRoaXMgY2FzZSB3ZSBoYXZlIGEgY2hlY2sgZnVydGhlciBkb3duLgpAQCAtMjg0OCw4ICsyOTExLDYgQEAKICAgICAgICAgdW5zaWduZWQgbG9uZyB1cmlIYXNoID0gaGFzaF9zZWNyZXRfc2FsdDsKICAgICAgICAgKChYTUxfQ2hhciAqKXMpWy0xXSA9IDA7ICAvKiBjbGVhciBmbGFnICovCiAgICAgICAgIGlkID0gKEFUVFJJQlVURV9JRCAqKWxvb2t1cChwYXJzZXIsICZkdGQtPmF0dHJpYnV0ZUlkcywgcywgMCk7Ci0gICAgICAgIGlmICghaWQpCi0gICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICAgIGIgPSBpZC0+cHJlZml4LT5iaW5kaW5nOwogICAgICAgICBpZiAoIWIpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9VTkJPVU5EX1BSRUZJWDsKQEAgLTI4NjEsNyArMjkyMiw3IEBACiAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgICB1cmlIYXNoID0gQ0hBUl9IQVNIKHVyaUhhc2gsIGMpOwogICAgICAgICB9Ci0gICAgICAgIHdoaWxlICgqcysrICE9IFhNTF9UKCc6JykpCisgICAgICAgIHdoaWxlICgqcysrICE9IFhNTF9UKEFTQ0lJX0NPTE9OKSkKICAgICAgICAgICA7CiAgICAgICAgIGRvIHsgIC8qIGNvcGllcyBudWxsIHRlcm1pbmF0b3IgKi8KICAgICAgICAgICBjb25zdCBYTUxfQ2hhciBjID0gKnM7CkBAIC0yOTM1LDcgKzI5OTYsNyBAQAogICAgIGlmICghYmluZGluZykKICAgICAgIHJldHVybiBYTUxfRVJST1JfVU5CT1VORF9QUkVGSVg7CiAgICAgbG9jYWxQYXJ0ID0gdGFnTmFtZVB0ci0+c3RyOwotICAgIHdoaWxlICgqbG9jYWxQYXJ0KysgIT0gWE1MX1QoJzonKSkKKyAgICB3aGlsZSAoKmxvY2FsUGFydCsrICE9IFhNTF9UKEFTQ0lJX0NPTE9OKSkKICAgICAgIDsKICAgfQogICBlbHNlIGlmIChkdGQtPmRlZmF1bHRQcmVmaXguYmluZGluZykgewpAQCAtMjk5MCwyNSArMzA1MSwyOSBAQAogICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqdXJpLCBCSU5ESU5HICoqYmluZGluZ3NQdHIpCiB7CiAgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciB4bWxOYW1lc3BhY2VbXSA9IHsKLSAgICAnaCcsICd0JywgJ3QnLCAncCcsICc6JywgJy8nLCAnLycsCi0gICAgJ3cnLCAndycsICd3JywgJy4nLCAndycsICczJywgJy4nLCAnbycsICdyJywgJ2cnLCAnLycsCi0gICAgJ1gnLCAnTScsICdMJywgJy8nLCAnMScsICc5JywgJzknLCAnOCcsICcvJywKLSAgICAnbicsICdhJywgJ20nLCAnZScsICdzJywgJ3AnLCAnYScsICdjJywgJ2UnLCAnXDAnCisgICAgQVNDSUlfaCwgQVNDSUlfdCwgQVNDSUlfdCwgQVNDSUlfcCwgQVNDSUlfQ09MT04sIEFTQ0lJX1NMQVNILCBBU0NJSV9TTEFTSCwKKyAgICBBU0NJSV93LCBBU0NJSV93LCBBU0NJSV93LCBBU0NJSV9QRVJJT0QsIEFTQ0lJX3csIEFTQ0lJXzMsIEFTQ0lJX1BFUklPRCwKKyAgICBBU0NJSV9vLCBBU0NJSV9yLCBBU0NJSV9nLCBBU0NJSV9TTEFTSCwgQVNDSUlfWCwgQVNDSUlfTSwgQVNDSUlfTCwKKyAgICBBU0NJSV9TTEFTSCwgQVNDSUlfMSwgQVNDSUlfOSwgQVNDSUlfOSwgQVNDSUlfOCwgQVNDSUlfU0xBU0gsCisgICAgQVNDSUlfbiwgQVNDSUlfYSwgQVNDSUlfbSwgQVNDSUlfZSwgQVNDSUlfcywgQVNDSUlfcCwgQVNDSUlfYSwgQVNDSUlfYywKKyAgICBBU0NJSV9lLCAnXDAnCiAgIH07Ci0gIHN0YXRpYyBjb25zdCBpbnQgeG1sTGVuID0gCisgIHN0YXRpYyBjb25zdCBpbnQgeG1sTGVuID0KICAgICAoaW50KXNpemVvZih4bWxOYW1lc3BhY2UpL3NpemVvZihYTUxfQ2hhcikgLSAxOwogICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgeG1sbnNOYW1lc3BhY2VbXSA9IHsKLSAgICAnaCcsICd0JywgJ3QnLCAncCcsICc6JywgJy8nLCAnLycsCi0gICAgJ3cnLCAndycsICd3JywgJy4nLCAndycsICczJywgJy4nLCAnbycsICdyJywgJ2cnLCAnLycsCi0gICAgJzInLCAnMCcsICcwJywgJzAnLCAnLycsICd4JywgJ20nLCAnbCcsICduJywgJ3MnLCAnLycsICdcMCcKKyAgICBBU0NJSV9oLCBBU0NJSV90LCBBU0NJSV90LCBBU0NJSV9wLCBBU0NJSV9DT0xPTiwgQVNDSUlfU0xBU0gsIEFTQ0lJX1NMQVNILAorICAgIEFTQ0lJX3csIEFTQ0lJX3csIEFTQ0lJX3csIEFTQ0lJX1BFUklPRCwgQVNDSUlfdywgQVNDSUlfMywgQVNDSUlfUEVSSU9ELAorICAgIEFTQ0lJX28sIEFTQ0lJX3IsIEFTQ0lJX2csIEFTQ0lJX1NMQVNILCBBU0NJSV8yLCBBU0NJSV8wLCBBU0NJSV8wLAorICAgIEFTQ0lJXzAsIEFTQ0lJX1NMQVNILCBBU0NJSV94LCBBU0NJSV9tLCBBU0NJSV9sLCBBU0NJSV9uLCBBU0NJSV9zLAorICAgIEFTQ0lJX1NMQVNILCAnXDAnCiAgIH07Ci0gIHN0YXRpYyBjb25zdCBpbnQgeG1sbnNMZW4gPSAKKyAgc3RhdGljIGNvbnN0IGludCB4bWxuc0xlbiA9CiAgICAgKGludClzaXplb2YoeG1sbnNOYW1lc3BhY2UpL3NpemVvZihYTUxfQ2hhcikgLSAxOwogCiAgIFhNTF9Cb29sIG11c3RCZVhNTCA9IFhNTF9GQUxTRTsKICAgWE1MX0Jvb2wgaXNYTUwgPSBYTUxfVFJVRTsKICAgWE1MX0Jvb2wgaXNYTUxOUyA9IFhNTF9UUlVFOwotICAKKwogICBCSU5ESU5HICpiOwogICBpbnQgbGVuOwogCkBAIC0zMDE3LDEzICszMDgyLDEzIEBACiAgICAgcmV0dXJuIFhNTF9FUlJPUl9VTkRFQ0xBUklOR19QUkVGSVg7CiAKICAgaWYgKHByZWZpeC0+bmFtZQotICAgICAgJiYgcHJlZml4LT5uYW1lWzBdID09IFhNTF9UKCd4JykKLSAgICAgICYmIHByZWZpeC0+bmFtZVsxXSA9PSBYTUxfVCgnbScpCi0gICAgICAmJiBwcmVmaXgtPm5hbWVbMl0gPT0gWE1MX1QoJ2wnKSkgeworICAgICAgJiYgcHJlZml4LT5uYW1lWzBdID09IFhNTF9UKEFTQ0lJX3gpCisgICAgICAmJiBwcmVmaXgtPm5hbWVbMV0gPT0gWE1MX1QoQVNDSUlfbSkKKyAgICAgICYmIHByZWZpeC0+bmFtZVsyXSA9PSBYTUxfVChBU0NJSV9sKSkgewogCiAgICAgLyogTm90IGFsbG93ZWQgdG8gYmluZCB4bWxucyAqLwotICAgIGlmIChwcmVmaXgtPm5hbWVbM10gPT0gWE1MX1QoJ24nKQotICAgICAgICAmJiBwcmVmaXgtPm5hbWVbNF0gPT0gWE1MX1QoJ3MnKQorICAgIGlmIChwcmVmaXgtPm5hbWVbM10gPT0gWE1MX1QoQVNDSUlfbikKKyAgICAgICAgJiYgcHJlZml4LT5uYW1lWzRdID09IFhNTF9UKEFTQ0lJX3MpCiAgICAgICAgICYmIHByZWZpeC0+bmFtZVs1XSA9PSBYTUxfVCgnXDAnKSkKICAgICAgIHJldHVybiBYTUxfRVJST1JfUkVTRVJWRURfUFJFRklYX1hNTE5TOwogCkBAIC0zMDM1LDcgKzMxMDAsNyBAQAogICAgIGlmIChpc1hNTCAmJiAobGVuID4geG1sTGVuIHx8IHVyaVtsZW5dICE9IHhtbE5hbWVzcGFjZVtsZW5dKSkKICAgICAgIGlzWE1MID0gWE1MX0ZBTFNFOwogCi0gICAgaWYgKCFtdXN0QmVYTUwgJiYgaXNYTUxOUyAKKyAgICBpZiAoIW11c3RCZVhNTCAmJiBpc1hNTE5TCiAgICAgICAgICYmIChsZW4gPiB4bWxuc0xlbiB8fCB1cmlbbGVuXSAhPSB4bWxuc05hbWVzcGFjZVtsZW5dKSkKICAgICAgIGlzWE1MTlMgPSBYTUxfRkFMU0U7CiAgIH0KQEAgLTMxNzcsMjYgKzMyNDIsMjkgQEAKICAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9UT0tfREFUQV9DSEFSUzoKLSAgICAgIGlmIChjaGFyYWN0ZXJEYXRhSGFuZGxlcikgewotICAgICAgICBpZiAoTVVTVF9DT05WRVJUKGVuYywgcykpIHsKLSAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICBJQ0hBUiAqZGF0YVB0ciA9IChJQ0hBUiAqKWRhdGFCdWY7Ci0gICAgICAgICAgICBYbWxDb252ZXJ0KGVuYywgJnMsIG5leHQsICZkYXRhUHRyLCAoSUNIQVIgKilkYXRhQnVmRW5kKTsKLSAgICAgICAgICAgICpldmVudEVuZFBQID0gbmV4dDsKLSAgICAgICAgICAgIGNoYXJhY3RlckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsIGRhdGFCdWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShkYXRhUHRyIC0gKElDSEFSICopZGF0YUJ1ZikpOwotICAgICAgICAgICAgaWYgKHMgPT0gbmV4dCkKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqZXZlbnRQUCA9IHM7CisgICAgICB7CisgICAgICAgIFhNTF9DaGFyYWN0ZXJEYXRhSGFuZGxlciBjaGFyRGF0YUhhbmRsZXIgPSBjaGFyYWN0ZXJEYXRhSGFuZGxlcjsKKyAgICAgICAgaWYgKGNoYXJEYXRhSGFuZGxlcikgeworICAgICAgICAgIGlmIChNVVNUX0NPTlZFUlQoZW5jLCBzKSkgeworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICBJQ0hBUiAqZGF0YVB0ciA9IChJQ0hBUiAqKWRhdGFCdWY7CisgICAgICAgICAgICAgIFhtbENvbnZlcnQoZW5jLCAmcywgbmV4dCwgJmRhdGFQdHIsIChJQ0hBUiAqKWRhdGFCdWZFbmQpOworICAgICAgICAgICAgICAqZXZlbnRFbmRQUCA9IG5leHQ7CisgICAgICAgICAgICAgIGNoYXJEYXRhSGFuZGxlcihoYW5kbGVyQXJnLCBkYXRhQnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoZGF0YVB0ciAtIChJQ0hBUiAqKWRhdGFCdWYpKTsKKyAgICAgICAgICAgICAgaWYgKHMgPT0gbmV4dCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgKmV2ZW50UFAgPSBzOworICAgICAgICAgICAgfQogICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBjaGFyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWE1MX0NoYXIgKilzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKChYTUxfQ2hhciAqKW5leHQgLSAoWE1MX0NoYXIgKilzKSk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGNoYXJhY3RlckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFhNTF9DaGFyICopcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoWE1MX0NoYXIgKiluZXh0IC0gKFhNTF9DaGFyICopcykpOworICAgICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKICAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQotICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1RPS19JTlZBTElEOgogICAgICAgKmV2ZW50UFAgPSBuZXh0OwpAQCAtMzI0Myw3ICszMzExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZW5kUHRyKQogewotICBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBkb0lnbm9yZVNlY3Rpb24ocGFyc2VyLCBlbmNvZGluZywgJnN0YXJ0LCBlbmQsIAorICBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBkb0lnbm9yZVNlY3Rpb24ocGFyc2VyLCBlbmNvZGluZywgJnN0YXJ0LCBlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOwogICBpZiAocmVzdWx0ICE9IFhNTF9FUlJPUl9OT05FKQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNTI1LDcgKzM1OTMsNyBAQAogICBjb25zdCBjaGFyICpuZXh0ID0gc3RhcnQ7CiAgIGV2ZW50UHRyID0gc3RhcnQ7CiAKLSAgZm9yICg7OykgeyAgCisgIGZvciAoOzspIHsKICAgICB0b2sgPSBYbWxQcm9sb2dUb2soZW5jb2RpbmcsIHN0YXJ0LCBlbmQsICZuZXh0KTsKICAgICBldmVudEVuZFB0ciA9IG5leHQ7CiAgICAgaWYgKHRvayA8PSAwKSB7CkBAIC0zNTUzLDcgKzM2MjEsNyBAQAogICAgICAgaWYgKHJlc3VsdCAhPSBYTUxfRVJST1JfTk9ORSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgIHN3aXRjaCAocHNfcGFyc2luZykgewotICAgICAgY2FzZSBYTUxfU1VTUEVOREVEOiAKKyAgICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgICAgKm5leHRQdHIgPSBuZXh0OwogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgICBjYXNlIFhNTF9GSU5JU0hFRDoKQEAgLTM2MTgsNyArMzY4Niw3IEBACiAgIH0KIAogICBwcm9jZXNzb3IgPSBwcm9sb2dQcm9jZXNzb3I7Ci0gIHJldHVybiBkb1Byb2xvZyhwYXJzZXIsIGVuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwgCisgIHJldHVybiBkb1Byb2xvZyhwYXJzZXIsIGVuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwKICAgICAgICAgICAgICAgICAgIG5leHRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOwogfQogCkBAIC0zNjY4LDcgKzM3MzYsNyBAQAogewogICBjb25zdCBjaGFyICpuZXh0ID0gczsKICAgaW50IHRvayA9IFhtbFByb2xvZ1RvayhlbmNvZGluZywgcywgZW5kLCAmbmV4dCk7Ci0gIHJldHVybiBkb1Byb2xvZyhwYXJzZXIsIGVuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwgCisgIHJldHVybiBkb1Byb2xvZyhwYXJzZXIsIGVuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwKICAgICAgICAgICAgICAgICAgIG5leHRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOwogfQogCkBAIC0zNjgzLDI2ICszNzUxLDMwIEBACiAgICAgICAgICBYTUxfQm9vbCBoYXZlTW9yZSkKIHsKICNpZmRlZiBYTUxfRFRECi0gIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBleHRlcm5hbFN1YnNldE5hbWVbXSA9IHsgJyMnICwgJ1wwJyB9OworICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgZXh0ZXJuYWxTdWJzZXROYW1lW10gPSB7IEFTQ0lJX0hBU0ggLCAnXDAnIH07CiAjZW5kaWYgLyogWE1MX0RURCAqLwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVDREFUQVtdID0geyAnQycsICdEJywgJ0EnLCAnVCcsICdBJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVJRFtdID0geyAnSScsICdEJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVJRFJFRltdID0geyAnSScsICdEJywgJ1InLCAnRScsICdGJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVJRFJFRlNbXSA9IHsgJ0knLCAnRCcsICdSJywgJ0UnLCAnRicsICdTJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVFTlRJVFlbXSA9IHsgJ0UnLCAnTicsICdUJywgJ0knLCAnVCcsICdZJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVFTlRJVElFU1tdID0KLSAgICAgIHsgJ0UnLCAnTicsICdUJywgJ0knLCAnVCcsICdJJywgJ0UnLCAnUycsICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlQ0RBVEFbXSA9CisgICAgICB7IEFTQ0lJX0MsIEFTQ0lJX0QsIEFTQ0lJX0EsIEFTQ0lJX1QsIEFTQ0lJX0EsICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlSURbXSA9IHsgQVNDSUlfSSwgQVNDSUlfRCwgJ1wwJyB9OworICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVJRFJFRltdID0KKyAgICAgIHsgQVNDSUlfSSwgQVNDSUlfRCwgQVNDSUlfUiwgQVNDSUlfRSwgQVNDSUlfRiwgJ1wwJyB9OworICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVJRFJFRlNbXSA9CisgICAgICB7IEFTQ0lJX0ksIEFTQ0lJX0QsIEFTQ0lJX1IsIEFTQ0lJX0UsIEFTQ0lJX0YsIEFTQ0lJX1MsICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlRU5USVRZW10gPQorICAgICAgeyBBU0NJSV9FLCBBU0NJSV9OLCBBU0NJSV9ULCBBU0NJSV9JLCBBU0NJSV9ULCBBU0NJSV9ZLCAnXDAnIH07CisgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBhdHlwZUVOVElUSUVTW10gPSB7IEFTQ0lJX0UsIEFTQ0lJX04sCisgICAgICBBU0NJSV9ULCBBU0NJSV9JLCBBU0NJSV9ULCBBU0NJSV9JLCBBU0NJSV9FLCBBU0NJSV9TLCAnXDAnIH07CiAgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBhdHlwZU5NVE9LRU5bXSA9IHsKLSAgICAgICdOJywgJ00nLCAnVCcsICdPJywgJ0snLCAnRScsICdOJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVOTVRPS0VOU1tdID0gewotICAgICAgJ04nLCAnTScsICdUJywgJ08nLCAnSycsICdFJywgJ04nLCAnUycsICdcMCcgfTsKLSAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIG5vdGF0aW9uUHJlZml4W10gPSB7Ci0gICAgICAnTicsICdPJywgJ1QnLCAnQScsICdUJywgJ0knLCAnTycsICdOJywgJygnLCAnXDAnIH07Ci0gIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBlbnVtVmFsdWVTZXBbXSA9IHsgJ3wnLCAnXDAnIH07Ci0gIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBlbnVtVmFsdWVTdGFydFtdID0geyAnKCcsICdcMCcgfTsKKyAgICAgIEFTQ0lJX04sIEFTQ0lJX00sIEFTQ0lJX1QsIEFTQ0lJX08sIEFTQ0lJX0ssIEFTQ0lJX0UsIEFTQ0lJX04sICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlTk1UT0tFTlNbXSA9IHsgQVNDSUlfTiwgQVNDSUlfTSwgQVNDSUlfVCwKKyAgICAgIEFTQ0lJX08sIEFTQ0lJX0ssIEFTQ0lJX0UsIEFTQ0lJX04sIEFTQ0lJX1MsICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIG5vdGF0aW9uUHJlZml4W10gPSB7IEFTQ0lJX04sIEFTQ0lJX08sIEFTQ0lJX1QsCisgICAgICBBU0NJSV9BLCBBU0NJSV9ULCBBU0NJSV9JLCBBU0NJSV9PLCBBU0NJSV9OLCBBU0NJSV9MUEFSRU4sICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGVudW1WYWx1ZVNlcFtdID0geyBBU0NJSV9QSVBFLCAnXDAnIH07CisgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBlbnVtVmFsdWVTdGFydFtdID0geyBBU0NJSV9MUEFSRU4sICdcMCcgfTsKIAogICAvKiBzYXZlIG9uZSBsZXZlbCBvZiBpbmRpcmVjdGlvbiAqLwotICBEVEQgKiBjb25zdCBkdGQgPSBfZHRkOyAKKyAgRFREICogY29uc3QgZHRkID0gX2R0ZDsKIAogICBjb25zdCBjaGFyICoqZXZlbnRQUDsKICAgY29uc3QgY2hhciAqKmV2ZW50RW5kUFA7CkBAIC0zODE4LDE1ICszODkwLDE3IEBACiAjZW5kaWYgLyogWE1MX0RURCAqLwogICAgICAgZHRkLT5oYXNQYXJhbUVudGl0eVJlZnMgPSBYTUxfVFJVRTsKICAgICAgIGlmIChzdGFydERvY3R5cGVEZWNsSGFuZGxlcikgeworICAgICAgICBYTUxfQ2hhciAqcHViSWQ7CiAgICAgICAgIGlmICghWG1sSXNQdWJsaWNJZChlbmMsIHMsIG5leHQsIGV2ZW50UFApKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfUFVCTElDSUQ7Ci0gICAgICAgIGRvY3R5cGVQdWJpZCA9IHBvb2xTdG9yZVN0cmluZygmdGVtcFBvb2wsIGVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgKyBlbmMtPm1pbkJ5dGVzUGVyQ2hhciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgLSBlbmMtPm1pbkJ5dGVzUGVyQ2hhcik7Ci0gICAgICAgIGlmICghZG9jdHlwZVB1YmlkKQorICAgICAgICBwdWJJZCA9IHBvb2xTdG9yZVN0cmluZygmdGVtcFBvb2wsIGVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyArIGVuYy0+bWluQnl0ZXNQZXJDaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IC0gZW5jLT5taW5CeXRlc1BlckNoYXIpOworICAgICAgICBpZiAoIXB1YklkKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgICBub3JtYWxpemVQdWJsaWNJZCgoWE1MX0NoYXIgKilkb2N0eXBlUHViaWQpOworICAgICAgICBub3JtYWxpemVQdWJsaWNJZChwdWJJZCk7CiAgICAgICAgIHBvb2xGaW5pc2goJnRlbXBQb29sKTsKKyAgICAgICAgZG9jdHlwZVB1YmlkID0gcHViSWQ7CiAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICAgIGdvdG8gYWxyZWFkeUNoZWNrZWQ7CiAgICAgICB9CkBAIC0zODgxLDggKzM5NTUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eS0+cHVibGljSWQpKQogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9FWFRFUk5BTF9FTlRJVFlfSEFORExJTkc7CiAgICAgICAgICAgaWYgKGR0ZC0+cGFyYW1FbnRpdHlSZWFkKSB7Ci0gICAgICAgICAgICBpZiAoIWR0ZC0+c3RhbmRhbG9uZSAmJiAKLSAgICAgICAgICAgICAgICBub3RTdGFuZGFsb25lSGFuZGxlciAmJiAKKyAgICAgICAgICAgIGlmICghZHRkLT5zdGFuZGFsb25lICYmCisgICAgICAgICAgICAgICAgbm90U3RhbmRhbG9uZUhhbmRsZXIgJiYKICAgICAgICAgICAgICAgICAhbm90U3RhbmRhbG9uZUhhbmRsZXIoaGFuZGxlckFyZykpCiAgICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9UX1NUQU5EQUxPTkU7CiAgICAgICAgICAgfQpAQCAtNDAxMCwxMSArNDA4NCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBwYXJzZXIpKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICBpZiAoYXR0bGlzdERlY2xIYW5kbGVyICYmIGRlY2xBdHRyaWJ1dGVUeXBlKSB7Ci0gICAgICAgICAgaWYgKCpkZWNsQXR0cmlidXRlVHlwZSA9PSBYTUxfVCgnKCcpCi0gICAgICAgICAgICAgIHx8ICgqZGVjbEF0dHJpYnV0ZVR5cGUgPT0gWE1MX1QoJ04nKQotICAgICAgICAgICAgICAgICAgJiYgZGVjbEF0dHJpYnV0ZVR5cGVbMV0gPT0gWE1MX1QoJ08nKSkpIHsKKyAgICAgICAgICBpZiAoKmRlY2xBdHRyaWJ1dGVUeXBlID09IFhNTF9UKEFTQ0lJX0xQQVJFTikKKyAgICAgICAgICAgICAgfHwgKCpkZWNsQXR0cmlidXRlVHlwZSA9PSBYTUxfVChBU0NJSV9OKQorICAgICAgICAgICAgICAgICAgJiYgZGVjbEF0dHJpYnV0ZVR5cGVbMV0gPT0gWE1MX1QoQVNDSUlfTykpKSB7CiAgICAgICAgICAgICAvKiBFbnVtZXJhdGVkIG9yIE5vdGF0aW9uIHR5cGUgKi8KLSAgICAgICAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBYTUxfVCgnKScpKQorICAgICAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKEFTQ0lJX1JQQVJFTikpCiAgICAgICAgICAgICAgICAgfHwgIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJ1wwJykpKQogICAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgICAgIGRlY2xBdHRyaWJ1dGVUeXBlID0gdGVtcFBvb2wuc3RhcnQ7CkBAIC00MDQ3LDExICs0MTIxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xBdHRyaWJ1dGVJc0NkYXRhLCBYTUxfRkFMU0UsIGF0dFZhbCwgcGFyc2VyKSkKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgaWYgKGF0dGxpc3REZWNsSGFuZGxlciAmJiBkZWNsQXR0cmlidXRlVHlwZSkgewotICAgICAgICAgIGlmICgqZGVjbEF0dHJpYnV0ZVR5cGUgPT0gWE1MX1QoJygnKQotICAgICAgICAgICAgICB8fCAoKmRlY2xBdHRyaWJ1dGVUeXBlID09IFhNTF9UKCdOJykKLSAgICAgICAgICAgICAgICAgICYmIGRlY2xBdHRyaWJ1dGVUeXBlWzFdID09IFhNTF9UKCdPJykpKSB7CisgICAgICAgICAgaWYgKCpkZWNsQXR0cmlidXRlVHlwZSA9PSBYTUxfVChBU0NJSV9MUEFSRU4pCisgICAgICAgICAgICAgIHx8ICgqZGVjbEF0dHJpYnV0ZVR5cGUgPT0gWE1MX1QoQVNDSUlfTikKKyAgICAgICAgICAgICAgICAgICYmIGRlY2xBdHRyaWJ1dGVUeXBlWzFdID09IFhNTF9UKEFTQ0lJX08pKSkgewogICAgICAgICAgICAgLyogRW51bWVyYXRlZCBvciBOb3RhdGlvbiB0eXBlICovCi0gICAgICAgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJyknKSkKKyAgICAgICAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBYTUxfVChBU0NJSV9SUEFSRU4pKQogICAgICAgICAgICAgICAgIHx8ICFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKCdcMCcpKSkKICAgICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICAgICAgICBkZWNsQXR0cmlidXRlVHlwZSA9IHRlbXBQb29sLnN0YXJ0OwpAQCAtNDMyMSw3ICs0Mzk1LDcgQEAKICAgICAgIHN3aXRjaCAodG9rKSB7CiAgICAgICBjYXNlIFhNTF9UT0tfUEFSQU1fRU5USVRZX1JFRjoKICAgICAgICAgLyogUEUgcmVmZXJlbmNlcyBpbiBpbnRlcm5hbCBzdWJzZXQgYXJlCi0gICAgICAgICAgIG5vdCBhbGxvd2VkIHdpdGhpbiBkZWNsYXJhdGlvbnMuICovICAKKyAgICAgICAgICAgbm90IGFsbG93ZWQgd2l0aGluIGRlY2xhcmF0aW9ucy4gKi8KICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9QQVJBTV9FTlRJVFlfUkVGOwogICAgICAgY2FzZSBYTUxfVE9LX1hNTF9ERUNMOgogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX01JU1BMQUNFRF9YTUxfUEk7CkBAIC00Mzc5LDE0ICs0NDUzLDE0IEBACiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9ST0xFX0dST1VQX1NFUVVFTkNFOgotICAgICAgaWYgKGdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXSA9PSAnfCcpCisgICAgICBpZiAoZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID09IEFTQ0lJX1BJUEUpCiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfU1lOVEFYOwotICAgICAgZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID0gJywnOworICAgICAgZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID0gQVNDSUlfQ09NTUE7CiAgICAgICBpZiAoZHRkLT5pbl9lbGRlY2wgJiYgZWxlbWVudERlY2xIYW5kbGVyKQogICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9HUk9VUF9DSE9JQ0U6Ci0gICAgICBpZiAoZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID09ICcsJykKKyAgICAgIGlmIChncm91cENvbm5lY3Rvcltwcm9sb2dTdGF0ZS5sZXZlbF0gPT0gQVNDSUlfQ09NTUEpCiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfU1lOVEFYOwogICAgICAgaWYgKGR0ZC0+aW5fZWxkZWNsCiAgICAgICAgICAgJiYgIWdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXQpAQCAtNDM5OCw3ICs0NDcyLDcgQEAKICAgICAgICAgaWYgKGVsZW1lbnREZWNsSGFuZGxlcikKICAgICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgfQotICAgICAgZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID0gJ3wnOworICAgICAgZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID0gQVNDSUlfUElQRTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1JPTEVfUEFSQU1fRU5USVRZX1JFRjoKICNpZmRlZiBYTUxfRFRECkBAIC00NDQyLDcgKzQ1MTYsNyBAQAogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfUkVDVVJTSVZFX0VOVElUWV9SRUY7CiAgICAgICAgIGlmIChlbnRpdHktPnRleHRQdHIpIHsKICAgICAgICAgICBlbnVtIFhNTF9FcnJvciByZXN1bHQ7Ci0gICAgICAgICAgWE1MX0Jvb2wgYmV0d2VlbkRlY2wgPSAKKyAgICAgICAgICBYTUxfQm9vbCBiZXR3ZWVuRGVjbCA9CiAgICAgICAgICAgICAocm9sZSA9PSBYTUxfUk9MRV9QQVJBTV9FTlRJVFlfUkVGID8gWE1MX1RSVUUgOiBYTUxfRkFMU0UpOwogICAgICAgICAgIHJlc3VsdCA9IHByb2Nlc3NJbnRlcm5hbEVudGl0eShwYXJzZXIsIGVudGl0eSwgYmV0d2VlbkRlY2wpOwogICAgICAgICAgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpCkBAIC00NjM3LDcgKzQ3MTEsNyBAQAogICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7CiAKICAgICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKLSAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6IAorICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgICpuZXh0UHRyID0gbmV4dDsKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICBjYXNlIFhNTF9GSU5JU0hFRDoKQEAgLTQ3MDcsNyArNDc4MSw3IEBACiAgICAgfQogICAgIGV2ZW50UHRyID0gcyA9IG5leHQ7CiAgICAgc3dpdGNoIChwc19wYXJzaW5nKSB7Ci0gICAgY2FzZSBYTUxfU1VTUEVOREVEOiAKKyAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6CiAgICAgICAqbmV4dFB0ciA9IG5leHQ7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgY2FzZSBYTUxfRklOSVNIRUQ6CkBAIC00NzUwLDEyICs0ODI0LDEyIEBACiAjaWZkZWYgWE1MX0RURAogICBpZiAoZW50aXR5LT5pc19wYXJhbSkgewogICAgIGludCB0b2sgPSBYbWxQcm9sb2dUb2soaW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LCB0ZXh0RW5kLCAmbmV4dCk7Ci0gICAgcmVzdWx0ID0gZG9Qcm9sb2cocGFyc2VyLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIHRleHRFbmQsIHRvaywgCisgICAgcmVzdWx0ID0gZG9Qcm9sb2cocGFyc2VyLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIHRleHRFbmQsIHRvaywKICAgICAgICAgICAgICAgICAgICAgICBuZXh0LCAmbmV4dCwgWE1MX0ZBTFNFKTsKICAgfQotICBlbHNlIAorICBlbHNlCiAjZW5kaWYgLyogWE1MX0RURCAqLwotICAgIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIHRhZ0xldmVsLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIAorICAgIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIHRhZ0xldmVsLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbmQsICZuZXh0LCBYTUxfRkFMU0UpOwogCiAgIGlmIChyZXN1bHQgPT0gWE1MX0VSUk9SX05PTkUpIHsKQEAgLTQ3OTUsMTMgKzQ4NjksMTMgQEAKICNpZmRlZiBYTUxfRFRECiAgIGlmIChlbnRpdHktPmlzX3BhcmFtKSB7CiAgICAgaW50IHRvayA9IFhtbFByb2xvZ1RvayhpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIHRleHRFbmQsICZuZXh0KTsKLSAgICByZXN1bHQgPSBkb1Byb2xvZyhwYXJzZXIsIGludGVybmFsRW5jb2RpbmcsIHRleHRTdGFydCwgdGV4dEVuZCwgdG9rLCAKKyAgICByZXN1bHQgPSBkb1Byb2xvZyhwYXJzZXIsIGludGVybmFsRW5jb2RpbmcsIHRleHRTdGFydCwgdGV4dEVuZCwgdG9rLAogICAgICAgICAgICAgICAgICAgICAgIG5leHQsICZuZXh0LCBYTUxfRkFMU0UpOwogICB9CiAgIGVsc2UKICNlbmRpZiAvKiBYTUxfRFREICovCi0gICAgcmVzdWx0ID0gZG9Db250ZW50KHBhcnNlciwgb3BlbkVudGl0eS0+c3RhcnRUYWdMZXZlbCwgaW50ZXJuYWxFbmNvZGluZywgCi0gICAgICAgICAgICAgICAgICAgICAgIHRleHRTdGFydCwgdGV4dEVuZCwgJm5leHQsIFhNTF9GQUxTRSk7ICAKKyAgICByZXN1bHQgPSBkb0NvbnRlbnQocGFyc2VyLCBvcGVuRW50aXR5LT5zdGFydFRhZ0xldmVsLCBpbnRlcm5hbEVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICB0ZXh0U3RhcnQsIHRleHRFbmQsICZuZXh0LCBYTUxfRkFMU0UpOwogCiAgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQ4MjIsNyArNDg5Niw3IEBACiAgICAgaW50IHRvazsKICAgICBwcm9jZXNzb3IgPSBwcm9sb2dQcm9jZXNzb3I7CiAgICAgdG9rID0gWG1sUHJvbG9nVG9rKGVuY29kaW5nLCBzLCBlbmQsICZuZXh0KTsKLSAgICByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBlbmNvZGluZywgcywgZW5kLCB0b2ssIG5leHQsIG5leHRQdHIsIAorICAgIHJldHVybiBkb1Byb2xvZyhwYXJzZXIsIGVuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwgbmV4dFB0ciwKICAgICAgICAgICAgICAgICAgICAgKFhNTF9Cb29sKSFwc19maW5hbEJ1ZmZlcik7CiAgIH0KICAgZWxzZQpAQCAtNDgzMSw4ICs0OTA1LDggQEAKICAgICBwcm9jZXNzb3IgPSBjb250ZW50UHJvY2Vzc29yOwogICAgIC8qIHNlZSBleHRlcm5hbEVudGl0eUNvbnRlbnRQcm9jZXNzb3IgdnMgY29udGVudFByb2Nlc3NvciAqLwogICAgIHJldHVybiBkb0NvbnRlbnQocGFyc2VyLCBwYXJlbnRQYXJzZXIgPyAxIDogMCwgZW5jb2RpbmcsIHMsIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgIG5leHRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOyAKLSAgfSAgCisgICAgICAgICAgICAgICAgICAgICBuZXh0UHRyLCAoWE1MX0Jvb2wpIXBzX2ZpbmFsQnVmZmVyKTsKKyAgfQogfQogCiBzdGF0aWMgZW51bSBYTUxfRXJyb3IgUFRSQ0FMTApAQCAtNDk4NSw3ICs1MDU5LDcgQEAKICAgICAgICAgaWYgKCFlbnRpdHktPnRleHRQdHIpIHsKICAgICAgICAgICBpZiAoZW5jID09IGVuY29kaW5nKQogICAgICAgICAgICAgZXZlbnRQdHIgPSBwdHI7Ci0gICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfQVRUUklCVVRFX0VYVEVSTkFMX0VOVElUWV9SRUY7CisgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9BVFRSSUJVVEVfRVhURVJOQUxfRU5USVRZX1JFRjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICBlbnVtIFhNTF9FcnJvciByZXN1bHQ7CkBAIC01MzI4LDcgKzU0MDIsNyBAQAogICBEVEQgKiBjb25zdCBkdGQgPSBfZHRkOyAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KICAgY29uc3QgWE1MX0NoYXIgKm5hbWU7CiAgIGZvciAobmFtZSA9IGVsZW1lbnRUeXBlLT5uYW1lOyAqbmFtZTsgbmFtZSsrKSB7Ci0gICAgaWYgKCpuYW1lID09IFhNTF9UKCc6JykpIHsKKyAgICBpZiAoKm5hbWUgPT0gWE1MX1QoQVNDSUlfQ09MT04pKSB7CiAgICAgICBQUkVGSVggKnByZWZpeDsKICAgICAgIGNvbnN0IFhNTF9DaGFyICpzOwogICAgICAgZm9yIChzID0gZWxlbWVudFR5cGUtPm5hbWU7IHMgIT0gbmFtZTsgcysrKSB7CkBAIC01Mzc1LDEyICs1NDQ5LDEyIEBACiAgICAgcG9vbEZpbmlzaCgmZHRkLT5wb29sKTsKICAgICBpZiAoIW5zKQogICAgICAgOwotICAgIGVsc2UgaWYgKG5hbWVbMF0gPT0gWE1MX1QoJ3gnKQotICAgICAgICAmJiBuYW1lWzFdID09IFhNTF9UKCdtJykKLSAgICAgICAgJiYgbmFtZVsyXSA9PSBYTUxfVCgnbCcpCi0gICAgICAgICYmIG5hbWVbM10gPT0gWE1MX1QoJ24nKQotICAgICAgICAmJiBuYW1lWzRdID09IFhNTF9UKCdzJykKLSAgICAgICAgJiYgKG5hbWVbNV0gPT0gWE1MX1QoJ1wwJykgfHwgbmFtZVs1XSA9PSBYTUxfVCgnOicpKSkgeworICAgIGVsc2UgaWYgKG5hbWVbMF0gPT0gWE1MX1QoQVNDSUlfeCkKKyAgICAgICAgJiYgbmFtZVsxXSA9PSBYTUxfVChBU0NJSV9tKQorICAgICAgICAmJiBuYW1lWzJdID09IFhNTF9UKEFTQ0lJX2wpCisgICAgICAgICYmIG5hbWVbM10gPT0gWE1MX1QoQVNDSUlfbikKKyAgICAgICAgJiYgbmFtZVs0XSA9PSBYTUxfVChBU0NJSV9zKQorICAgICAgICAmJiAobmFtZVs1XSA9PSBYTUxfVCgnXDAnKSB8fCBuYW1lWzVdID09IFhNTF9UKEFTQ0lJX0NPTE9OKSkpIHsKICAgICAgIGlmIChuYW1lWzVdID09IFhNTF9UKCdcMCcpKQogICAgICAgICBpZC0+cHJlZml4ID0gJmR0ZC0+ZGVmYXVsdFByZWZpeDsKICAgICAgIGVsc2UKQEAgLTUzOTEsNyArNTQ2NSw3IEBACiAgICAgICBpbnQgaTsKICAgICAgIGZvciAoaSA9IDA7IG5hbWVbaV07IGkrKykgewogICAgICAgICAvKiBhdHRyaWJ1dGVzIHdpdGhvdXQgcHJlZml4IGFyZSAqbm90KiBpbiB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgKi8KLSAgICAgICAgaWYgKG5hbWVbaV0gPT0gWE1MX1QoJzonKSkgeworICAgICAgICBpZiAobmFtZVtpXSA9PSBYTUxfVChBU0NJSV9DT0xPTikpIHsKICAgICAgICAgICBpbnQgajsKICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKSB7CiAgICAgICAgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZkdGQtPnBvb2wsIG5hbWVbal0pKQpAQCAtNTQwMSw4ICs1NDc1LDYgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgIGlkLT5wcmVmaXggPSAoUFJFRklYICopbG9va3VwKHBhcnNlciwgJmR0ZC0+cHJlZml4ZXMsIHBvb2xTdGFydCgmZHRkLT5wb29sKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUFJFRklYKSk7Ci0gICAgICAgICAgaWYgKCFpZC0+cHJlZml4KQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgaWYgKGlkLT5wcmVmaXgtPm5hbWUgPT0gcG9vbFN0YXJ0KCZkdGQtPnBvb2wpKQogICAgICAgICAgICAgcG9vbEZpbmlzaCgmZHRkLT5wb29sKTsKICAgICAgICAgICBlbHNlCkBAIC01NDE1LDcgKzU0ODcsNyBAQAogICByZXR1cm4gaWQ7CiB9CiAKLSNkZWZpbmUgQ09OVEVYVF9TRVAgWE1MX1QoJ1xmJykKKyNkZWZpbmUgQ09OVEVYVF9TRVAgWE1MX1QoQVNDSUlfRkYpCiAKIHN0YXRpYyBjb25zdCBYTUxfQ2hhciAqCiBnZXRDb250ZXh0KFhNTF9QYXJzZXIgcGFyc2VyKQpAQCAtNTQyNyw3ICs1NDk5LDcgQEAKICAgaWYgKGR0ZC0+ZGVmYXVsdFByZWZpeC5iaW5kaW5nKSB7CiAgICAgaW50IGk7CiAgICAgaW50IGxlbjsKLSAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJz0nKSkpCisgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKEFTQ0lJX0VRVUFMUykpKQogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbGVuID0gZHRkLT5kZWZhdWx0UHJlZml4LmJpbmRpbmctPnVyaUxlbjsKICAgICBpZiAobmFtZXNwYWNlU2VwYXJhdG9yKQpAQCAtNTQ1Myw3ICs1NTI1LDcgQEAKICAgICBmb3IgKHMgPSBwcmVmaXgtPm5hbWU7ICpzOyBzKyspCiAgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgKnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJz0nKSkpCisgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKEFTQ0lJX0VRVUFMUykpKQogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbGVuID0gcHJlZml4LT5iaW5kaW5nLT51cmlMZW47CiAgICAgaWYgKG5hbWVzcGFjZVNlcGFyYXRvcikKQEAgLTU1MDUsNyArNTU3Nyw3IEBACiAgICAgICBjb250ZXh0ID0gczsKICAgICAgIHBvb2xEaXNjYXJkKCZ0ZW1wUG9vbCk7CiAgICAgfQotICAgIGVsc2UgaWYgKCpzID09IFhNTF9UKCc9JykpIHsKKyAgICBlbHNlIGlmICgqcyA9PSBYTUxfVChBU0NJSV9FUVVBTFMpKSB7CiAgICAgICBQUkVGSVggKnByZWZpeDsKICAgICAgIGlmIChwb29sTGVuZ3RoKCZ0ZW1wUG9vbCkgPT0gMCkKICAgICAgICAgcHJlZml4ID0gJmR0ZC0+ZGVmYXVsdFByZWZpeDsKQEAgLTYxNjIsMTIgKzYyMzQsMTMgQEAKICAgfQogICBpZiAocG9vbC0+YmxvY2tzICYmIHBvb2wtPnN0YXJ0ID09IHBvb2wtPmJsb2Nrcy0+cykgewogICAgIGludCBibG9ja1NpemUgPSAoaW50KShwb29sLT5lbmQgLSBwb29sLT5zdGFydCkqMjsKLSAgICBwb29sLT5ibG9ja3MgPSAoQkxPQ0sgKikKKyAgICBCTE9DSyAqdGVtcCA9IChCTE9DSyAqKQogICAgICAgcG9vbC0+bWVtLT5yZWFsbG9jX2Zjbihwb29sLT5ibG9ja3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvZmZzZXRvZihCTE9DSywgcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYmxvY2tTaXplICogc2l6ZW9mKFhNTF9DaGFyKSkpOwotICAgIGlmIChwb29sLT5ibG9ja3MgPT0gTlVMTCkKKyAgICBpZiAodGVtcCA9PSBOVUxMKQogICAgICAgcmV0dXJuIFhNTF9GQUxTRTsKKyAgICBwb29sLT5ibG9ja3MgPSB0ZW1wOwogICAgIHBvb2wtPmJsb2Nrcy0+c2l6ZSA9IGJsb2NrU2l6ZTsKICAgICBwb29sLT5wdHIgPSBwb29sLT5ibG9ja3MtPnMgKyAocG9vbC0+cHRyIC0gcG9vbC0+c3RhcnQpOwogICAgIHBvb2wtPnN0YXJ0ID0gcG9vbC0+YmxvY2tzLT5zOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC94bWxyb2xlLmMgYi9Nb2R1bGVzL2V4cGF0L3htbHJvbGUuYwppbmRleCAxNWQ0ZDhmLi40NDc3MmUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHJvbGUuYworKysgYi9Nb2R1bGVzL2V4cGF0L3htbHJvbGUuYwpAQCAtMiwyMCArMiwyMiBAQAogICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KICovCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2lmZGVmIENPTVBJTEVEX0ZST01fRFNQCiAjaW5jbHVkZSAid2luY29uZmlnLmgiCiAjZWxpZiBkZWZpbmVkKE1BQ09TX0NMQVNTSUMpCiAjaW5jbHVkZSAibWFjY29uZmlnLmgiCi0jZWxpZiBkZWZpbmVkKF9fYW1pZ2FvczRfXykKKyNlbGlmIGRlZmluZWQoX19hbWlnYW9zX18pCiAjaW5jbHVkZSAiYW1pZ2Fjb25maWcuaCIKKyNlbGlmIGRlZmluZWQoX19XQVRDT01DX18pCisjaW5jbHVkZSAid2F0Y29tY29uZmlnLmgiCiAjZWxzZQogI2lmZGVmIEhBVkVfRVhQQVRfQ09ORklHX0gKICNpbmNsdWRlIDxleHBhdF9jb25maWcuaD4KICNlbmRpZgogI2VuZGlmIC8qIG5kZWYgQ09NUElMRURfRlJPTV9EU1AgKi8KIAotI2luY2x1ZGUgPHN0ZGRlZi5oPgotCiAjaW5jbHVkZSAiZXhwYXRfZXh0ZXJuYWwuaCIKICNpbmNsdWRlICJpbnRlcm5hbC5oIgogI2luY2x1ZGUgInhtbHJvbGUuaCIKQEAgLTUzLDEyICs1NSwxNiBAQAogICAgIEFTQ0lJX0ksIEFTQ0lJX0QsIEFTQ0lJX1IsIEFTQ0lJX0UsIEFTQ0lJX0YsICdcMCcgfTsKIHN0YXRpYyBjb25zdCBjaGFyIEtXX0lEUkVGU1tdID0gewogICAgIEFTQ0lJX0ksIEFTQ0lJX0QsIEFTQ0lJX1IsIEFTQ0lJX0UsIEFTQ0lJX0YsIEFTQ0lJX1MsICdcMCcgfTsKKyNpZmRlZiBYTUxfRFRECiBzdGF0aWMgY29uc3QgY2hhciBLV19JR05PUkVbXSA9IHsKICAgICBBU0NJSV9JLCBBU0NJSV9HLCBBU0NJSV9OLCBBU0NJSV9PLCBBU0NJSV9SLCBBU0NJSV9FLCAnXDAnIH07CisjZW5kaWYKIHN0YXRpYyBjb25zdCBjaGFyIEtXX0lNUExJRURbXSA9IHsKICAgICBBU0NJSV9JLCBBU0NJSV9NLCBBU0NJSV9QLCBBU0NJSV9MLCBBU0NJSV9JLCBBU0NJSV9FLCBBU0NJSV9ELCAnXDAnIH07CisjaWZkZWYgWE1MX0RURAogc3RhdGljIGNvbnN0IGNoYXIgS1dfSU5DTFVERVtdID0gewogICAgIEFTQ0lJX0ksIEFTQ0lJX04sIEFTQ0lJX0MsIEFTQ0lJX0wsIEFTQ0lJX1UsIEFTQ0lJX0QsIEFTQ0lJX0UsICdcMCcgfTsKKyNlbmRpZgogc3RhdGljIGNvbnN0IGNoYXIgS1dfTkRBVEFbXSA9IHsKICAgICBBU0NJSV9OLCBBU0NJSV9ELCBBU0NJSV9BLCBBU0NJSV9ULCBBU0NJSV9BLCAnXDAnIH07CiBzdGF0aWMgY29uc3QgY2hhciBLV19OTVRPS0VOW10gPSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3htbHRvay5jIGIvTW9kdWxlcy9leHBhdC94bWx0b2suYwppbmRleCBkYjkyMjQ3Li5iZjA5ZGZjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHRvay5jCisrKyBiL01vZHVsZXMvZXhwYXQveG1sdG9rLmMKQEAgLTIsMjAgKzIsMjIgQEAKICAgIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBjb3B5aW5nIHBlcm1pc3Npb24uCiAqLwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNpZmRlZiBDT01QSUxFRF9GUk9NX0RTUAogI2luY2x1ZGUgIndpbmNvbmZpZy5oIgogI2VsaWYgZGVmaW5lZChNQUNPU19DTEFTU0lDKQogI2luY2x1ZGUgIm1hY2NvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChfX2FtaWdhb3M0X18pCisjZWxpZiBkZWZpbmVkKF9fYW1pZ2Fvc19fKQogI2luY2x1ZGUgImFtaWdhY29uZmlnLmgiCisjZWxpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKQorI2luY2x1ZGUgIndhdGNvbWNvbmZpZy5oIgogI2Vsc2UKICNpZmRlZiBIQVZFX0VYUEFUX0NPTkZJR19ICiAjaW5jbHVkZSA8ZXhwYXRfY29uZmlnLmg+CiAjZW5kaWYKICNlbmRpZiAvKiBuZGVmIENPTVBJTEVEX0ZST01fRFNQICovCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4KLQogI2luY2x1ZGUgImV4cGF0X2V4dGVybmFsLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICNpbmNsdWRlICJ4bWx0b2suaCIKQEAgLTI5NSw3ICsyOTcsOSBAQAogI2VuZGlmCiAKICNkZWZpbmUgUFJFRklYKGlkZW50KSBub3JtYWxfICMjIGlkZW50CisjZGVmaW5lIFhNTF9UT0tfSU1QTF9DCiAjaW5jbHVkZSAieG1sdG9rX2ltcGwuYyIKKyN1bmRlZiBYTUxfVE9LX0lNUExfQwogCiAjdW5kZWYgTUlOQlBDCiAjdW5kZWYgQllURV9UWVBFCkBAIC02OTIsNyArNjk2LDkgQEAKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVIoZW5jLCBwLCBuKSAoMCkKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVJfTUlOQlBDKGVuYywgcCkgTElUVExFMl9JU19OTVNUUlRfQ0hBUl9NSU5CUEMoZW5jLCBwKQogCisjZGVmaW5lIFhNTF9UT0tfSU1QTF9DCiAjaW5jbHVkZSAieG1sdG9rX2ltcGwuYyIKKyN1bmRlZiBYTUxfVE9LX0lNUExfQwogCiAjdW5kZWYgTUlOQlBDCiAjdW5kZWYgQllURV9UWVBFCkBAIC04MzEsNyArODM3LDkgQEAKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVIoZW5jLCBwLCBuKSAoMCkKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVJfTUlOQlBDKGVuYywgcCkgQklHMl9JU19OTVNUUlRfQ0hBUl9NSU5CUEMoZW5jLCBwKQogCisjZGVmaW5lIFhNTF9UT0tfSU1QTF9DCiAjaW5jbHVkZSAieG1sdG9rX2ltcGwuYyIKKyN1bmRlZiBYTUxfVE9LX0lNUExfQwogCiAjdW5kZWYgTUlOQlBDCiAjdW5kZWYgQllURV9UWVBFCkBAIC0xMzM3LDcgKzEzNDUsNyBAQAogRU5DT0RJTkcgKgogWG1sSW5pdFVua25vd25FbmNvZGluZyh2b2lkICptZW0sCiAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgIENPTlZFUlRFUiBjb252ZXJ0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgQ09OVkVSVEVSIGNvbnZlcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJEYXRhKQogewogICBpbnQgaTsKQEAgLTE2MTAsNyArMTYxOCw5IEBACiAKICNkZWZpbmUgTlMoeCkgeAogI2RlZmluZSBucyh4KSB4CisjZGVmaW5lIFhNTF9UT0tfTlNfQwogI2luY2x1ZGUgInhtbHRva19ucy5jIgorI3VuZGVmIFhNTF9UT0tfTlNfQwogI3VuZGVmIE5TCiAjdW5kZWYgbnMKIApAQCAtMTYxOSw3ICsxNjI5LDkgQEAKICNkZWZpbmUgTlMoeCkgeCAjIyBOUwogI2RlZmluZSBucyh4KSB4ICMjIF9ucwogCisjZGVmaW5lIFhNTF9UT0tfTlNfQwogI2luY2x1ZGUgInhtbHRva19ucy5jIgorI3VuZGVmIFhNTF9UT0tfTlNfQwogCiAjdW5kZWYgTlMKICN1bmRlZiBucwpAQCAtMTYyNyw3ICsxNjM5LDcgQEAKIEVOQ09ESU5HICoKIFhtbEluaXRVbmtub3duRW5jb2RpbmdOUyh2b2lkICptZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBDT05WRVJURVIgY29udmVydCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVkVSVEVSIGNvbnZlcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlckRhdGEpCiB7CiAgIEVOQ09ESU5HICplbmMgPSBYbWxJbml0VW5rbm93bkVuY29kaW5nKG1lbSwgdGFibGUsIGNvbnZlcnQsIHVzZXJEYXRhKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQveG1sdG9rX2ltcGwuYyBiL01vZHVsZXMvZXhwYXQveG1sdG9rX2ltcGwuYwppbmRleCBmNzkzYTZiLi45YzI4OTViIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHRva19pbXBsLmMKKysrIGIvTW9kdWxlcy9leHBhdC94bWx0b2tfaW1wbC5jCkBAIC0yLDYgKzIsOSBAQAogICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KICovCiAKKy8qIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCEgKi8KKyNpZmRlZiBYTUxfVE9LX0lNUExfQworCiAjaWZuZGVmIElTX0lOVkFMSURfQ0hBUgogI2RlZmluZSBJU19JTlZBTElEX0NIQVIoZW5jLCBwdHIsIG4pICgwKQogI2VuZGlmCkBAIC04ODIsNyArODg1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKm5leHRUb2tQdHIpCiB7CiAgIGlmIChwdHIgPT0gZW5kKQotICAgIHJldHVybiAtWE1MX1RPS19QRVJDRU5UOworICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CiAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICBDSEVDS19OTVNUUlRfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICAgY2FzZSBCVF9TOiBjYXNlIEJUX0xGOiBjYXNlIEJUX0NSOiBjYXNlIEJUX1BFUkNOVDoKQEAgLTE3NzcsMyArMTc4MCw0IEBACiAjdW5kZWYgQ0hFQ0tfTk1TVFJUX0NBU0UKICN1bmRlZiBDSEVDS19OTVNUUlRfQ0FTRVMKIAorI2VuZGlmIC8qIFhNTF9UT0tfSU1QTF9DICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3htbHRva19ucy5jIGIvTW9kdWxlcy9leHBhdC94bWx0b2tfbnMuYwppbmRleCBkMmY4OTM4Li5jM2I4OGZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHRva19ucy5jCisrKyBiL01vZHVsZXMvZXhwYXQveG1sdG9rX25zLmMKQEAgLTEsMyArMSwxMCBAQAorLyogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5IFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAorICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KKyovCisKKy8qIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCEgKi8KKyNpZmRlZiBYTUxfVE9LX05TX0MKKwogY29uc3QgRU5DT0RJTkcgKgogTlMoWG1sR2V0VXRmOEludGVybmFsRW5jb2RpbmcpKHZvaWQpCiB7CkBAIC0xMDQsMyArMTExLDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RhbmRhbG9uZSk7CiB9CisKKyNlbmRpZiAvKiBYTUxfVE9LX05TX0MgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYTkxMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCkBAIC0wLDAgKzEsMTE1MiBAQAorI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8b2JqZWN0Lmg+CisjaW5jbHVkZSA8ZnJhbWVvYmplY3QuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9TSUdNQVNLKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QVEhSRUFEX1NJR01BU0spCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKKy8qIEFsbG9jYXRlIGF0IG1heGltdW0gMTAwIE1CIG9mIHRoZSBzdGFjayB0byByYWlzZSB0aGUgc3RhY2sgb3ZlcmZsb3cgKi8KKyNkZWZpbmUgU1RBQ0tfT1ZFUkZMT1dfTUFYX1NJWkUgKDEwMCoxMDI0KjEwMjQpCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorIyAgZGVmaW5lIEZBVUxUSEFORExFUl9MQVRFUgorI2VuZGlmCisKKyNpZm5kZWYgTVNfV0lORE9XUworICAgLyogcmVnaXN0ZXIoKSBpcyB1c2VsZXNzIG9uIFdpbmRvd3MsIGJlY2F1c2Ugb25seSBTSUdTRUdWLCBTSUdBQlJUIGFuZAorICAgICAgU0lHSUxMIGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBwcm9jZXNzLCBhbmQgdGhlc2Ugc2lnbmFscyBjYW4gb25seSBiZSB1c2VkCisgICAgICB3aXRoIGVuYWJsZSgpLCBub3QgdXNpbmcgcmVnaXN0ZXIoKSAqLworIyAgZGVmaW5lIEZBVUxUSEFORExFUl9VU0VSCisjZW5kaWYKKworI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIHN0cmxlbihzdHIpKQorCisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KK3R5cGVkZWYgc3RydWN0IHNpZ2FjdGlvbiBfUHlfc2lnaGFuZGxlcl90OworI2Vsc2UKK3R5cGVkZWYgUHlPU19zaWdoYW5kbGVyX3QgX1B5X3NpZ2hhbmRsZXJfdDsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IHNpZ251bTsKKyAgICBpbnQgZW5hYmxlZDsKKyAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIF9QeV9zaWdoYW5kbGVyX3QgcHJldmlvdXM7CisgICAgaW50IGFsbF90aHJlYWRzOworfSBmYXVsdF9oYW5kbGVyX3Q7CisKK3N0YXRpYyBzdHJ1Y3QgeworICAgIGludCBlbmFibGVkOworICAgIFB5T2JqZWN0ICpmaWxlOworICAgIGludCBmZDsKKyAgICBpbnQgYWxsX3RocmVhZHM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7Cit9IGZhdGFsX2Vycm9yID0gezAsIE5VTEwsIC0xLCAwfTsKKworI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorc3RhdGljIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgaW50IGZkOworICAgIFBZX1RJTUVPVVRfVCB0aW1lb3V0X3VzOyAgIC8qIHRpbWVvdXQgaW4gbWljcm9zZWNvbmRzICovCisgICAgaW50IHJlcGVhdDsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKKyAgICBpbnQgZXhpdDsKKyAgICBjaGFyICpoZWFkZXI7CisgICAgc2l6ZV90IGhlYWRlcl9sZW47CisgICAgLyogVGhlIG1haW4gdGhyZWFkIGFsd2F5cyBob2xkcyB0aGlzIGxvY2suIEl0IGlzIG9ubHkgcmVsZWFzZWQgd2hlbgorICAgICAgIGZhdWx0aGFuZGxlcl90aHJlYWQoKSBpcyBpbnRlcnJ1cHRlZCBiZWZvcmUgdGhpcyB0aHJlYWQgZXhpdHMsIG9yIGF0CisgICAgICAgUHl0aG9uIGV4aXQuICovCisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGNhbmNlbF9ldmVudDsKKyAgICAvKiByZWxlYXNlZCBieSBjaGlsZCB0aHJlYWQgd2hlbiBqb2luZWQgKi8KKyAgICBQeVRocmVhZF90eXBlX2xvY2sgcnVubmluZzsKK30gdGhyZWFkOworI2VuZGlmCisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCBlbmFibGVkOworICAgIFB5T2JqZWN0ICpmaWxlOworICAgIGludCBmZDsKKyAgICBpbnQgYWxsX3RocmVhZHM7CisgICAgaW50IGNoYWluOworICAgIF9QeV9zaWdoYW5kbGVyX3QgcHJldmlvdXM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7Cit9IHVzZXJfc2lnbmFsX3Q7CisKK3N0YXRpYyB1c2VyX3NpZ25hbF90ICp1c2VyX3NpZ25hbHM7CisKKy8qIHRoZSBmb2xsb3dpbmcgbWFjcm9zIGNvbWUgZnJvbSBQeXRob246IE1vZHVsZXMvc2lnbmFsbW9kdWxlLmMgKi8KKyNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiAhZGVmaW5lZChQWUNDX0dDQykKKyNkZWZpbmUgTlNJRyAxMgorI2VuZGlmCisjaWZuZGVmIE5TSUcKKyMgaWYgZGVmaW5lZChfTlNJRykKKyMgIGRlZmluZSBOU0lHIF9OU0lHICAgICAgICAgICAgLyogRm9yIEJTRC9TeXNWICovCisjIGVsaWYgZGVmaW5lZChfU0lHTUFYKQorIyAgZGVmaW5lIE5TSUcgKF9TSUdNQVggKyAxKSAgICAvKiBGb3IgUU5YICovCisjIGVsaWYgZGVmaW5lZChTSUdNQVgpCisjICBkZWZpbmUgTlNJRyAoU0lHTUFYICsgMSkgICAgIC8qIEZvciBkamdwcCAqLworIyBlbHNlCisjICBkZWZpbmUgTlNJRyA2NCAgICAgICAgICAgICAgIC8qIFVzZSBhIHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZSAqLworIyBlbmRpZgorI2VuZGlmCisKK3N0YXRpYyB2b2lkIGZhdWx0aGFuZGxlcl91c2VyKGludCBzaWdudW0pOworI2VuZGlmIC8qIEZBVUxUSEFORExFUl9VU0VSICovCisKKworc3RhdGljIGZhdWx0X2hhbmRsZXJfdCBmYXVsdGhhbmRsZXJfaGFuZGxlcnNbXSA9IHsKKyNpZmRlZiBTSUdCVVMKKyAgICB7U0lHQlVTLCAwLCAiQnVzIGVycm9yIiwgfSwKKyNlbmRpZgorI2lmZGVmIFNJR0lMTAorICAgIHtTSUdJTEwsIDAsICJJbGxlZ2FsIGluc3RydWN0aW9uIiwgfSwKKyNlbmRpZgorICAgIHtTSUdGUEUsIDAsICJGbG9hdGluZyBwb2ludCBleGNlcHRpb24iLCB9LAorICAgIHtTSUdBQlJULCAwLCAiQWJvcnRlZCIsIH0sCisgICAgLyogZGVmaW5lIFNJR1NFR1YgYXQgdGhlIGVuZCB0byBtYWtlIGl0IHRoZSBkZWZhdWx0IGNob2ljZSBpZiBzZWFyY2hpbmcgdGhlCisgICAgICAgaGFuZGxlciBmYWlscyBpbiBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKSAqLworICAgIHtTSUdTRUdWLCAwLCAiU2VnbWVudGF0aW9uIGZhdWx0IiwgfQorfTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGZhdWx0aGFuZGxlcl9uc2lnbmFscyA9IFwKKyAgICBQeV9BUlJBWV9MRU5HVEgoZmF1bHRoYW5kbGVyX2hhbmRsZXJzKTsKKworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKK3N0YXRpYyBzdGFja190IHN0YWNrOworI2VuZGlmCisKKworLyogR2V0IHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgYSBmaWxlIGJ5IGNhbGxpbmcgaXRzIGZpbGVubygpIG1ldGhvZCBhbmQgdGhlbgorICAgY2FsbCBpdHMgZmx1c2goKSBtZXRob2QuCisKKyAgIElmIGZpbGUgaXMgTlVMTCBvciBQeV9Ob25lLCB1c2Ugc3lzLnN0ZGVyciBhcyB0aGUgbmV3IGZpbGUuCisKKyAgIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgbmV3IGZpbGUgYW5kIHdyaXRlIHRoZSBmaWxlIGRlc2NyaXB0b3IgaW50byAqcF9mZC4KKyAgIE9uIGVycm9yLCByZXR1cm4gTlVMTC4gKi8KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oUHlPYmplY3QgKmZpbGUsIGludCAqcF9mZCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKGZpbGVubyk7CisgICAgX1B5X0lERU5USUZJRVIoZmx1c2gpOworICAgIGxvbmcgZmRfbG9uZzsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoZmlsZSA9PSBOVUxMIHx8IGZpbGUgPT0gUHlfTm9uZSkgeworICAgICAgICBmaWxlID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKKyAgICAgICAgaWYgKGZpbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgInVuYWJsZSB0byBnZXQgc3lzLnN0ZGVyciIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZpbGVubywgIiIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmZCA9IC0xOworICAgIGlmIChQeUxvbmdfQ2hlY2socmVzdWx0KSkgeworICAgICAgICBmZF9sb25nID0gUHlMb25nX0FzTG9uZyhyZXN1bHQpOworICAgICAgICBpZiAoMCA8PSBmZF9sb25nICYmIGZkX2xvbmcgPCBJTlRfTUFYKQorICAgICAgICAgICAgZmQgPSAoaW50KWZkX2xvbmc7CisgICAgfQorICAgIFB5X0RFQ1JFRihyZXN1bHQpOworCisgICAgaWYgKGZkID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5maWxlbm8oKSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgZWxzZSB7CisgICAgICAgIC8qIGlnbm9yZSBmbHVzaCgpIGVycm9yICovCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgICpwX2ZkID0gZmQ7CisgICAgcmV0dXJuIGZpbGU7Cit9CisKKy8qIEdldCB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkOiBvbmx5IGNhbGwgdGhpcyBmdW5jdGlvbiBpZiB0aGUgY3VycmVudAorICAgdGhyZWFkIGhvbGRzIHRoZSBHSUwuIFJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KK3N0YXRpYyBQeVRocmVhZFN0YXRlKgorZ2V0X3RocmVhZF9zdGF0ZSh2b2lkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGdldCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiB0c3RhdGU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFja19weShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAiYWxsX3RocmVhZHMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlsZSA9IE5VTEw7CisgICAgaW50IGFsbF90aHJlYWRzID0gMTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgY29uc3QgY2hhciAqZXJybXNnOworICAgIGludCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgInxPaTpkdW1wX3RyYWNlYmFjayIsIGt3bGlzdCwKKyAgICAgICAgJmZpbGUsICZhbGxfdGhyZWFkcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmlsZSA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKGZpbGUsICZmZCk7CisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChhbGxfdGhyZWFkcykgeworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIHRzdGF0ZS0+aW50ZXJwLCB0c3RhdGUpOworICAgICAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIGVycm1zZyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCisKKy8qIEhhbmRsZXIgZm9yIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgc2lnbmFscy4KKworICAgRGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gdHJhY2ViYWNrLCByZXN0b3JlIHRoZSBwcmV2aW91cyBoYW5kbGVyIGFuZCBjYWxsCisgICB0aGUgcHJldmlvdXMgaGFuZGxlci4KKworICAgT24gV2luZG93cywgZG9uJ3QgZXhwbGljaXRseSBjYWxsIHRoZSBwcmV2aW91cyBoYW5kbGVyLCBiZWNhdXNlIHRoZSBXaW5kb3dzCisgICBzaWduYWwgaGFuZGxlciB3b3VsZCBub3QgYmUgY2FsbGVkIChmb3IgYW4gdW5rbm93biByZWFzb24pLiBUaGUgZXhlY3V0aW9uIG9mCisgICB0aGUgcHJvZ3JhbSBjb250aW51ZXMgYXQgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkgZXhpdCwgYnV0IHRoZSBzYW1lCisgICBpbnN0cnVjdGlvbiB3aWxsIHJhaXNlIHRoZSBzYW1lIGZhdWx0IChzaWduYWwpLCBhbmQgc28gdGhlIHByZXZpb3VzIGhhbmRsZXIKKyAgIHdpbGwgYmUgY2FsbGVkLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbC1zYWZlIGFuZCBzaG91bGQgb25seSBjYWxsIHNpZ25hbC1zYWZlIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcihpbnQgc2lnbnVtKQoreworICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9IE5VTEw7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CisKKyAgICBpZiAoIWZhdGFsX2Vycm9yLmVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07CisgICAgICAgIGlmIChoYW5kbGVyLT5zaWdudW0gPT0gc2lnbnVtKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChoYW5kbGVyID09IE5VTEwpIHsKKyAgICAgICAgLyogZmF1bHRoYW5kbGVyX25zaWduYWxzID09IDAgKHVubGlrZWx5KSAqLworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogcmVzdG9yZSB0aGUgcHJldmlvdXMgaGFuZGxlciAqLworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKKyNlbHNlCisgICAgKHZvaWQpc2lnbmFsKHNpZ251bSwgaGFuZGxlci0+cHJldmlvdXMpOworI2VuZGlmCisgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDA7CisKKyAgICBQVVRTKGZkLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiKTsKKyAgICBQVVRTKGZkLCBoYW5kbGVyLT5uYW1lKTsKKyAgICBQVVRTKGZkLCAiXG5cbiIpOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAvKiBTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQsIFNJR0JVUyBhbmQgU0lHSUxMIGFyZSBzeW5jaHJvbm91cyBzaWduYWxzIGFuZAorICAgICAgIGFyZSB0aHVzIGRlbGl2ZXJlZCB0byB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZSBmYXVsdC4gR2V0IHRoZSBQeXRob24KKyAgICAgICB0aHJlYWQgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLgorCisgICAgICAgUHlUaHJlYWRTdGF0ZV9HZXQoKSBkb2Vzbid0IGdpdmUgdGhlIHN0YXRlIG9mIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQgdGhlCisgICAgICAgZmF1bHQgaWYgdGhlIHRocmVhZCByZWxlYXNlZCB0aGUgR0lMLCBhbmQgc28gdGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUKKyAgICAgICB1c2VkLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSBpbnN0ZWFkOiBjYWxsCisgICAgICAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KKyAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOworI2Vsc2UKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworI2VuZGlmCisKKyAgICBpZiAoZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMpCisgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgZmF0YWxfZXJyb3IuaW50ZXJwLCB0c3RhdGUpOworICAgIGVsc2UgeworICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCisgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayhmZCwgdHN0YXRlKTsKKyAgICB9CisKKyAgICBlcnJubyA9IHNhdmVfZXJybm87CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChzaWdudW0gPT0gU0lHU0VHVikgeworICAgICAgICAvKiBkb24ndCBleHBsaWNpdGx5IGNhbGwgdGhlIHByZXZpb3VzIGhhbmRsZXIgZm9yIFNJR1NFR1YgaW4gdGhpcyBzaWduYWwKKyAgICAgICAgICAgaGFuZGxlciwgYmVjYXVzZSB0aGUgV2luZG93cyBzaWduYWwgaGFuZGxlciB3b3VsZCBub3QgYmUgY2FsbGVkICovCisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICAvKiBjYWxsIHRoZSBwcmV2aW91cyBzaWduYWwgaGFuZGxlcjogaXQgaXMgY2FsbGVkIGltbWVkaWF0bHkgaWYgd2UgdXNlCisgICAgICAgc2lnYWN0aW9uKCkgdGhhbmtzIHRvIFNBX05PREVGRVIgZmxhZywgb3RoZXJ3aXNlIGl0IGlzIGRlZmVycmVkICovCisgICAgcmFpc2Uoc2lnbnVtKTsKK30KKworLyogSW5zdGFsbCB0aGUgaGFuZGxlciBmb3IgZmF0YWwgc2lnbmFscywgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkuICovCisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9lbmFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJhbGxfdGhyZWFkcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKKyAgICBpbnQgYWxsX3RocmVhZHMgPSAxOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcjsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworI2VuZGlmCisgICAgaW50IGVycjsKKyAgICBpbnQgZmQ7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAifE9pOmVuYWJsZSIsIGt3bGlzdCwgJmZpbGUsICZhbGxfdGhyZWFkcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmlsZSA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKGZpbGUsICZmZCk7CisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1hERUNSRUYoZmF0YWxfZXJyb3IuZmlsZSk7CisgICAgUHlfSU5DUkVGKGZpbGUpOworICAgIGZhdGFsX2Vycm9yLmZpbGUgPSBmaWxlOworICAgIGZhdGFsX2Vycm9yLmZkID0gZmQ7CisgICAgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMgPSBhbGxfdGhyZWFkczsKKyAgICBmYXRhbF9lcnJvci5pbnRlcnAgPSB0c3RhdGUtPmludGVycDsKKworICAgIGlmICghZmF0YWxfZXJyb3IuZW5hYmxlZCkgeworICAgICAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMTsKKworICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CisgICAgICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICAgICAgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3I7CisgICAgICAgICAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOworICAgICAgICAgICAgLyogRG8gbm90IHByZXZlbnQgdGhlIHNpZ25hbCBmcm9tIGJlaW5nIHJlY2VpdmVkIGZyb20gd2l0aGluCisgICAgICAgICAgICAgICBpdHMgb3duIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICAgICAgICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogQ2FsbCB0aGUgc2lnbmFsIGhhbmRsZXIgb24gYW4gYWx0ZXJuYXRlIHNpZ25hbCBzdGFjaworICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KKyAgICAgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgfD0gU0FfT05TVEFDSzsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgZXJyID0gc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmFjdGlvbiwgJmhhbmRsZXItPnByZXZpb3VzKTsKKyNlbHNlCisgICAgICAgICAgICBoYW5kbGVyLT5wcmV2aW91cyA9IHNpZ25hbChoYW5kbGVyLT5zaWdudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IpOworICAgICAgICAgICAgZXJyID0gKGhhbmRsZXItPnByZXZpb3VzID09IFNJR19FUlIpOworI2VuZGlmCisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoYW5kbGVyLT5lbmFibGVkID0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9kaXNhYmxlKHZvaWQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyOworCisgICAgaWYgKGZhdGFsX2Vycm9yLmVuYWJsZWQpIHsKKyAgICAgICAgZmF0YWxfZXJyb3IuZW5hYmxlZCA9IDA7CisgICAgICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgICAgIGhhbmRsZXIgPSAmZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldOworICAgICAgICAgICAgaWYgKCFoYW5kbGVyLT5lbmFibGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgICAgICAgICAodm9pZClzaWdhY3Rpb24oaGFuZGxlci0+c2lnbnVtLCAmaGFuZGxlci0+cHJldmlvdXMsIE5VTEwpOworI2Vsc2UKKyAgICAgICAgICAgICh2b2lkKXNpZ25hbChoYW5kbGVyLT5zaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKKyNlbmRpZgorICAgICAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9DTEVBUihmYXRhbF9lcnJvci5maWxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2Rpc2FibGVfcHkoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKCFmYXRhbF9lcnJvci5lbmFibGVkKSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CisgICAgICAgIHJldHVybiBQeV9GYWxzZTsKKyAgICB9CisgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGUoKTsKKyAgICBQeV9JTkNSRUYoUHlfVHJ1ZSk7CisgICAgcmV0dXJuIFB5X1RydWU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9pc19lbmFibGVkKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoZmF0YWxfZXJyb3IuZW5hYmxlZCk7Cit9CisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl90aHJlYWQodm9pZCAqdW51c2VkKQoreworICAgIFB5TG9ja1N0YXR1cyBzdDsKKyAgICBjb25zdCBjaGFyKiBlcnJtc2c7CisgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudDsKKyAgICBpbnQgb2s7CisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfU0lHTUFTSykgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUFRIUkVBRF9TSUdNQVNLKQorICAgIHNpZ3NldF90IHNldDsKKworICAgIC8qIHdlIGRvbid0IHdhbnQgdG8gcmVjZWl2ZSBhbnkgc2lnbmFsICovCisgICAgc2lnZmlsbHNldCgmc2V0KTsKKyAgICBwdGhyZWFkX3NpZ21hc2soU0lHX1NFVE1BU0ssICZzZXQsIE5VTEwpOworI2VuZGlmCisKKyAgICBkbyB7CisgICAgICAgIHN0ID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKHRocmVhZC5jYW5jZWxfZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZC50aW1lb3V0X3VzLCAwKTsKKyAgICAgICAgaWYgKHN0ID09IFBZX0xPQ0tfQUNRVUlSRUQpIHsKKyAgICAgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8qIFRpbWVvdXQgPT4gZHVtcCB0cmFjZWJhY2sgKi8KKyAgICAgICAgYXNzZXJ0KHN0ID09IFBZX0xPQ0tfRkFJTFVSRSk7CisKKyAgICAgICAgLyogZ2V0IHRoZSB0aHJlYWQgaG9sZGluZyB0aGUgR0lMLCBOVUxMIGlmIG5vIHRocmVhZCBob2xkIHRoZSBHSUwgKi8KKyAgICAgICAgY3VycmVudCA9IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKworICAgICAgICB3cml0ZSh0aHJlYWQuZmQsIHRocmVhZC5oZWFkZXIsIHRocmVhZC5oZWFkZXJfbGVuKTsKKworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBjdXJyZW50KTsKKyAgICAgICAgb2sgPSAoZXJybXNnID09IE5VTEwpOworCisgICAgICAgIGlmICh0aHJlYWQuZXhpdCkKKyAgICAgICAgICAgIF9leGl0KDEpOworICAgIH0gd2hpbGUgKG9rICYmIHRocmVhZC5yZXBlYXQpOworCisgICAgLyogVGhlIG9ubHkgd2F5IG91dCAqLworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQucnVubmluZyk7Cit9CisKK3N0YXRpYyB2b2lkCitjYW5jZWxfZHVtcF90cmFjZWJhY2tzX2xhdGVyKHZvaWQpCit7CisgICAgLyogTm90aWZ5IGNhbmNlbGxhdGlvbiAqLworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50KTsKKworICAgIC8qIFdhaXQgZm9yIHRocmVhZCB0byBqb2luICovCisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHRocmVhZC5ydW5uaW5nLCAxKTsKKyAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sodGhyZWFkLnJ1bm5pbmcpOworCisgICAgLyogVGhlIG1haW4gdGhyZWFkIHNob3VsZCBhbHdheXMgaG9sZCB0aGUgY2FuY2VsX2V2ZW50IGxvY2sgKi8KKyAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sodGhyZWFkLmNhbmNlbF9ldmVudCwgMSk7CisKKyAgICBQeV9DTEVBUih0aHJlYWQuZmlsZSk7CisgICAgaWYgKHRocmVhZC5oZWFkZXIpIHsKKyAgICAgICAgZnJlZSh0aHJlYWQuaGVhZGVyKTsKKyAgICAgICAgdGhyZWFkLmhlYWRlciA9IE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgY2hhcioKK2Zvcm1hdF90aW1lb3V0KGRvdWJsZSB0aW1lb3V0KQoreworICAgIHVuc2lnbmVkIGxvbmcgdXMsIHNlYywgbWluLCBob3VyOworICAgIGRvdWJsZSBpbnRwYXJ0LCBmcmFjcGFydDsKKyAgICBjaGFyIGJ1ZmZlclsxMDBdOworCisgICAgZnJhY3BhcnQgPSBtb2RmKHRpbWVvdXQsICZpbnRwYXJ0KTsKKyAgICBzZWMgPSAodW5zaWduZWQgbG9uZylpbnRwYXJ0OworICAgIHVzID0gKHVuc2lnbmVkIGxvbmcpKGZyYWNwYXJ0ICogMWU2KTsKKyAgICBtaW4gPSBzZWMgLyA2MDsKKyAgICBzZWMgJT0gNjA7CisgICAgaG91ciA9IG1pbiAvIDYwOworICAgIG1pbiAlPSA2MDsKKworICAgIGlmICh1cyAhPSAwKQorICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCisgICAgICAgICAgICAgICAgICAgICAgIlRpbWVvdXQgKCVsdTolMDJsdTolMDJsdS4lMDZsdSkhXG4iLAorICAgICAgICAgICAgICAgICAgICAgIGhvdXIsIG1pbiwgc2VjLCB1cyk7CisgICAgZWxzZQorICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCisgICAgICAgICAgICAgICAgICAgICAgIlRpbWVvdXQgKCVsdTolMDJsdTolMDJsdSkhXG4iLAorICAgICAgICAgICAgICAgICAgICAgIGhvdXIsIG1pbiwgc2VjKTsKKworICAgIHJldHVybiBzdHJkdXAoYnVmZmVyKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrc19sYXRlcihQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJ0aW1lb3V0IiwgInJlcGVhdCIsICJmaWxlIiwgImV4aXQiLCBOVUxMfTsKKyAgICBkb3VibGUgdGltZW91dDsKKyAgICBQWV9USU1FT1VUX1QgdGltZW91dF91czsKKyAgICBpbnQgcmVwZWF0ID0gMDsKKyAgICBQeU9iamVjdCAqZmlsZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIGludCBleGl0ID0gMDsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgY2hhciAqaGVhZGVyOworICAgIHNpemVfdCBoZWFkZXJfbGVuOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAiZHxpT2k6ZHVtcF90cmFjZWJhY2tzX2xhdGVyIiwga3dsaXN0LAorICAgICAgICAmdGltZW91dCwgJnJlcGVhdCwgJmZpbGUsICZleGl0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCh0aW1lb3V0ICogMWU2KSA+PSAoZG91YmxlKSBQWV9USU1FT1VUX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgICJ0aW1lb3V0IHZhbHVlIGlzIHRvbyBsYXJnZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdGltZW91dF91cyA9IChQWV9USU1FT1VUX1QpKHRpbWVvdXQgKiAxZTYpOworICAgIGlmICh0aW1lb3V0X3VzIDw9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdHN0YXRlID0gZ2V0X3RocmVhZF9zdGF0ZSgpOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKKyAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGZvcm1hdCB0aGUgdGltZW91dCAqLworICAgIGhlYWRlciA9IGZvcm1hdF90aW1lb3V0KHRpbWVvdXQpOworICAgIGlmIChoZWFkZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgaGVhZGVyX2xlbiA9IHN0cmxlbihoZWFkZXIpOworCisgICAgLyogQ2FuY2VsIHByZXZpb3VzIHRocmVhZCwgaWYgcnVubmluZyAqLworICAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKTsKKworICAgIFB5X1hERUNSRUYodGhyZWFkLmZpbGUpOworICAgIFB5X0lOQ1JFRihmaWxlKTsKKyAgICB0aHJlYWQuZmlsZSA9IGZpbGU7CisgICAgdGhyZWFkLmZkID0gZmQ7CisgICAgdGhyZWFkLnRpbWVvdXRfdXMgPSB0aW1lb3V0X3VzOworICAgIHRocmVhZC5yZXBlYXQgPSByZXBlYXQ7CisgICAgdGhyZWFkLmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOworICAgIHRocmVhZC5leGl0ID0gZXhpdDsKKyAgICB0aHJlYWQuaGVhZGVyID0gaGVhZGVyOworICAgIHRocmVhZC5oZWFkZXJfbGVuID0gaGVhZGVyX2xlbjsKKworICAgIC8qIEFybSB0aGVzZSBsb2NrcyB0byBzZXJ2ZSBhcyBldmVudHMgd2hlbiByZWxlYXNlZCAqLworICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayh0aHJlYWQucnVubmluZywgMSk7CisKKyAgICBpZiAoUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZChmYXVsdGhhbmRsZXJfdGhyZWFkLCBOVUxMKSA9PSAtMSkgeworICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sodGhyZWFkLnJ1bm5pbmcpOworICAgICAgICBQeV9DTEVBUih0aHJlYWQuZmlsZSk7CisgICAgICAgIGZyZWUoaGVhZGVyKTsKKyAgICAgICAgdGhyZWFkLmhlYWRlciA9IE5VTEw7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIHN0YXJ0IHdhdGNoZG9nIHRocmVhZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2NhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXJfcHkoUHlPYmplY3QgKnNlbGYpCit7CisgICAgY2FuY2VsX2R1bXBfdHJhY2ViYWNrc19sYXRlcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmICAvKiBGQVVMVEhBTkRMRVJfTEFURVIgKi8KKworI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCitzdGF0aWMgaW50CitmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoaW50IHNpZ251bSwgaW50IGNoYWluLCBfUHlfc2lnaGFuZGxlcl90ICpwX3ByZXZpb3VzKQoreworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CisgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfdXNlcjsKKyAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOworICAgIC8qIGlmIHRoZSBzaWduYWwgaXMgcmVjZWl2ZWQgd2hpbGUgdGhlIGtlcm5lbCBpcyBleGVjdXRpbmcgYSBzeXN0ZW0KKyAgICAgICBjYWxsLCB0cnkgdG8gcmVzdGFydCB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiBpbnRlcnJ1cHRpbmcgaXQgYW5kCisgICAgICAgcmV0dXJuIEVJTlRSLiAqLworICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQ7CisgICAgaWYgKGNoYWluKSB7CisgICAgICAgIC8qIGRvIG5vdCBwcmV2ZW50IHRoZSBzaWduYWwgZnJvbSBiZWluZyByZWNlaXZlZCBmcm9tIHdpdGhpbiBpdHMKKyAgICAgICAgICAgb3duIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX05PREVGRVI7CisgICAgfQorI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICAvKiBDYWxsIHRoZSBzaWduYWwgaGFuZGxlciBvbiBhbiBhbHRlcm5hdGUgc2lnbmFsIHN0YWNrCisgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KKyAgICAgICAgYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHNpZ2FjdGlvbihzaWdudW0sICZhY3Rpb24sIHBfcHJldmlvdXMpOworI2Vsc2UKKyAgICBfUHlfc2lnaGFuZGxlcl90IHByZXZpb3VzOworICAgIHByZXZpb3VzID0gc2lnbmFsKHNpZ251bSwgZmF1bHRoYW5kbGVyX3VzZXIpOworICAgIGlmIChwX3ByZXZpb3VzICE9IE5VTEwpCisgICAgICAgICpwX3ByZXZpb3VzID0gcHJldmlvdXM7CisgICAgcmV0dXJuIChwcmV2aW91cyA9PSBTSUdfRVJSKTsKKyNlbmRpZgorfQorCisvKiBIYW5kbGVyIG9mIHVzZXIgc2lnbmFscyAoZS5nLiBTSUdVU1IxKS4KKworICAgRHVtcCB0aGUgdHJhY2ViYWNrIG9mIHRoZSBjdXJyZW50IHRocmVhZCwgb3Igb2YgYWxsIHRocmVhZHMgaWYKKyAgIHRocmVhZC5hbGxfdGhyZWFkcyBpcyB0cnVlLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlIGFuZCBzaG91bGQgb25seSBjYWxsIHNpZ25hbCBzYWZlIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl91c2VyKGludCBzaWdudW0pCit7CisgICAgdXNlcl9zaWduYWxfdCAqdXNlcjsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKKworICAgIHVzZXIgPSAmdXNlcl9zaWduYWxzW3NpZ251bV07CisgICAgaWYgKCF1c2VyLT5lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCB0aHJlYWQgaWYKKyAgICAgICB0aGUgdGhyZWFkIGRvZXNuJ3QgaG9sZCB0aGUgR0lMLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKQorICAgICAgIGluc3RlYWQ6IGNhbGwgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KKyAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOworI2Vsc2UKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworI2VuZGlmCisKKyAgICBpZiAodXNlci0+YWxsX3RocmVhZHMpCisgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh1c2VyLT5mZCwgdXNlci0+aW50ZXJwLCB0c3RhdGUpOworICAgIGVsc2UgeworICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCisgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayh1c2VyLT5mZCwgdHN0YXRlKTsKKyAgICB9CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICBpZiAodXNlci0+Y2hhaW4pIHsKKyAgICAgICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJnVzZXItPnByZXZpb3VzLCBOVUxMKTsKKyAgICAgICAgZXJybm8gPSBzYXZlX2Vycm5vOworCisgICAgICAgIC8qIGNhbGwgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIHJhaXNlKHNpZ251bSk7CisKKyAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOworICAgICAgICAodm9pZClmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoc2lnbnVtLCB1c2VyLT5jaGFpbiwgTlVMTCk7CisgICAgICAgIGVycm5vID0gc2F2ZV9lcnJubzsKKyAgICB9CisjZWxzZQorICAgIGlmICh1c2VyLT5jaGFpbikgeworICAgICAgICBlcnJubyA9IHNhdmVfZXJybm87CisgICAgICAgIC8qIGNhbGwgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIHVzZXItPnByZXZpb3VzKHNpZ251bSk7CisgICAgfQorI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX3NpZ251bShpbnQgc2lnbnVtKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgeworICAgICAgICBpZiAoZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldLnNpZ251bSA9PSBzaWdudW0pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCAlaSBjYW5ub3QgYmUgcmVnaXN0ZXJlZCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgZW5hYmxlKCkgaW5zdGVhZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbnVtKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGlmIChzaWdudW0gPCAxIHx8IE5TSUcgPD0gc2lnbnVtKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic2lnbmFsIG51bWJlciBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfcmVnaXN0ZXJfcHkoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzaWdudW0iLCAiZmlsZSIsICJhbGxfdGhyZWFkcyIsICJjaGFpbiIsIE5VTEx9OworICAgIGludCBzaWdudW07CisgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOworICAgIGludCBhbGxfdGhyZWFkcyA9IDE7CisgICAgaW50IGNoYWluID0gMDsKKyAgICBpbnQgZmQ7CisgICAgdXNlcl9zaWduYWxfdCAqdXNlcjsKKyAgICBfUHlfc2lnaGFuZGxlcl90IHByZXZpb3VzOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAiaXxPaWk6cmVnaXN0ZXIiLCBrd2xpc3QsCisgICAgICAgICZzaWdudW0sICZmaWxlLCAmYWxsX3RocmVhZHMsICZjaGFpbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFjaGVja19zaWdudW0oc2lnbnVtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHVzZXJfc2lnbmFscyA9PSBOVUxMKSB7CisgICAgICAgIHVzZXJfc2lnbmFscyA9IGNhbGxvYyhOU0lHLCBzaXplb2YodXNlcl9zaWduYWxfdCkpOworICAgICAgICBpZiAodXNlcl9zaWduYWxzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisgICAgdXNlciA9ICZ1c2VyX3NpZ25hbHNbc2lnbnVtXTsKKworICAgIGlmICghdXNlci0+ZW5hYmxlZCkgeworICAgICAgICBlcnIgPSBmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoc2lnbnVtLCBjaGFpbiwgJnByZXZpb3VzKTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9YREVDUkVGKHVzZXItPmZpbGUpOworICAgIFB5X0lOQ1JFRihmaWxlKTsKKyAgICB1c2VyLT5maWxlID0gZmlsZTsKKyAgICB1c2VyLT5mZCA9IGZkOworICAgIHVzZXItPmFsbF90aHJlYWRzID0gYWxsX3RocmVhZHM7CisgICAgdXNlci0+Y2hhaW4gPSBjaGFpbjsKKyAgICB1c2VyLT5wcmV2aW91cyA9IHByZXZpb3VzOworICAgIHVzZXItPmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOworICAgIHVzZXItPmVuYWJsZWQgPSAxOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyKHVzZXJfc2lnbmFsX3QgKnVzZXIsIGludCBzaWdudW0pCit7CisgICAgaWYgKCF1c2VyLT5lbmFibGVkKQorICAgICAgICByZXR1cm4gMDsKKyAgICB1c2VyLT5lbmFibGVkID0gMDsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICh2b2lkKXNpZ2FjdGlvbihzaWdudW0sICZ1c2VyLT5wcmV2aW91cywgTlVMTCk7CisjZWxzZQorICAgICh2b2lkKXNpZ25hbChzaWdudW0sIHVzZXItPnByZXZpb3VzKTsKKyNlbmRpZgorICAgIFB5X0NMRUFSKHVzZXItPmZpbGUpOworICAgIHVzZXItPmZkID0gLTE7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyX3B5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgc2lnbnVtOworICAgIHVzZXJfc2lnbmFsX3QgKnVzZXI7CisgICAgaW50IGNoYW5nZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTp1bnJlZ2lzdGVyIiwgJnNpZ251bSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFjaGVja19zaWdudW0oc2lnbnVtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodXNlcl9zaWduYWxzID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKworICAgIHVzZXIgPSAmdXNlcl9zaWduYWxzW3NpZ251bV07CisgICAgY2hhbmdlID0gZmF1bHRoYW5kbGVyX3VucmVnaXN0ZXIodXNlciwgc2lnbnVtKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGNoYW5nZSk7Cit9CisjZW5kaWYgICAvKiBGQVVMVEhBTkRMRVJfVVNFUiAqLworCisKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfcmVhZF9udWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB2b2xhdGlsZSBpbnQgKng7CisgICAgdm9sYXRpbGUgaW50IHk7CisgICAgaW50IHJlbGVhc2VfZ2lsID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9yZWFkX251bGwiLCAmcmVsZWFzZV9naWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHggPSBOVUxMOworICAgIGlmIChyZWxlYXNlX2dpbCkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHkgPSAqeDsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IGVsc2UKKyAgICAgICAgeSA9ICp4OworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoeSk7CisKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9zaWdzZWd2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgLyogRm9yIFNJR1NFR1YsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcigpIHJlc3RvcmVzIHRoZSBwcmV2aW91cyBzaWduYWwKKyAgICAgICBoYW5kbGVyIGFuZCB0aGVuIGdpdmVzIGJhY2sgdGhlIGV4ZWN1dGlvbiBmbG93IHRvIHRoZSBwcm9ncmFtICh3aXRob3V0CisgICAgICAgZXhwbGljaXRseSBjYWxsaW5nIHRoZSBwcmV2aW91cyBlcnJvciBoYW5kbGVyKS4gSW4gYSBub3JtYWwgY2FzZSwgdGhlCisgICAgICAgU0lHU0VHViB3YXMgcmFpc2VkIGJ5IHRoZSBrZXJuZWwgYmVjYXVzZSBvZiBhIGZhdWx0LCBhbmQgc28gaWYgdGhlCisgICAgICAgcHJvZ3JhbSByZXRyaWVzIHRvIGV4ZWN1dGUgdGhlIHNhbWUgaW5zdHJ1Y3Rpb24sIHRoZSBmYXVsdCB3aWxsIGJlCisgICAgICAgcmFpc2VkIGFnYWluLgorCisgICAgICAgSGVyZSB0aGUgZmF1bHQgaXMgc2ltdWxhdGVkIGJ5IGEgZmFrZSBTSUdTRUdWIHNpZ25hbCByYWlzZWQgYnkgdGhlCisgICAgICAgYXBwbGljYXRpb24uIFdlIGhhdmUgdG8gcmFpc2UgU0lHU0VHViBhdCBsZWFzZSB0d2ljZTogb25jZSBmb3IKKyAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKSwgYW5kIG9uZSBtb3JlIHRpbWUgZm9yIHRoZSBwcmV2aW91cyBzaWduYWwKKyAgICAgICBoYW5kbGVyLiAqLworICAgIHdoaWxlKDEpCisgICAgICAgIHJhaXNlKFNJR1NFR1YpOworI2Vsc2UKKyAgICByYWlzZShTSUdTRUdWKTsKKyNlbmRpZgorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3NpZ2ZwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgLyogRG8gYW4gaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvOiByYWlzZSBhIFNJR0ZQRSBvbiBJbnRlbCBDUFUsIGJ1dCBub3Qgb24KKyAgICAgICBQb3dlclBDLiBVc2Ugdm9sYXRpbGUgdG8gZGlzYWJsZSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9ucy4gKi8KKyAgICB2b2xhdGlsZSBpbnQgeCA9IDEsIHkgPSAwLCB6OworICAgIHogPSB4IC8geTsKKyAgICAvKiBJZiB0aGUgZGl2aXNpb24gYnkgemVybyBkaWRuJ3QgcmFpc2UgYSBTSUdGUEUgKGUuZy4gb24gUG93ZXJQQyksCisgICAgICAgcmFpc2UgaXQgbWFudWFsbHkuICovCisgICAgcmFpc2UoU0lHRlBFKTsKKyAgICAvKiBUaGlzIGxpbmUgaXMgbmV2ZXIgcmVhY2hlZCwgYnV0IHdlIHByZXRlbmQgdG8gbWFrZSBzb21ldGhpbmcgd2l0aCB6CisgICAgICAgdG8gc2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcuICovCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh6KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9zaWdhYnJ0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZmRlZiBfTVNDX1ZFUgorICAgIC8qIFZpc3VhbCBTdHVkaW86IGNvbmZpZ3VyZSBhYm9ydCgpIHRvIG5vdCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2Ugbm9yCisgICAgICAgb3BlbiBhIHBvcHVwIGFza2luZyB0byByZXBvcnQgdGhlIGZhdWx0LiAqLworICAgIF9zZXRfYWJvcnRfYmVoYXZpb3IoMCwgX1dSSVRFX0FCT1JUX01TRyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsKKyNlbmRpZgorICAgIGFib3J0KCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNpZmRlZiBTSUdCVVMKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfc2lnYnVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByYWlzZShTSUdCVVMpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKKyNpZmRlZiBTSUdJTEwKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfc2lnaWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByYWlzZShTSUdJTEwpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKm1lc3NhZ2U7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5OmZhdGFsX2Vycm9yIiwgJm1lc3NhZ2UpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9GYXRhbEVycm9yKG1lc3NhZ2UpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQorc3RhdGljIHZvaWQqCitzdGFja19vdmVyZmxvdyh2b2lkICptaW5fc3AsIHZvaWQgKm1heF9zcCwgc2l6ZV90ICpkZXB0aCkKK3sKKyAgICAvKiBhbGxvY2F0ZSA0MDk2IGJ5dGVzIG9uIHRoZSBzdGFjayBhdCBlYWNoIGNhbGwgKi8KKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0MDk2XTsKKyAgICB2b2lkICpzcCA9ICZidWZmZXI7CisgICAgKmRlcHRoICs9IDE7CisgICAgaWYgKHNwIDwgbWluX3NwIHx8IG1heF9zcCA8IHNwKQorICAgICAgICByZXR1cm4gc3A7CisgICAgYnVmZmVyWzBdID0gMTsKKyAgICBidWZmZXJbNDA5NV0gPSAwOworICAgIHJldHVybiBzdGFja19vdmVyZmxvdyhtaW5fc3AsIG1heF9zcCwgZGVwdGgpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmKQoreworICAgIHNpemVfdCBkZXB0aCwgc2l6ZTsKKyAgICBjaGFyICpzcCA9IChjaGFyICopJmRlcHRoLCAqc3RvcDsKKworICAgIGRlcHRoID0gMDsKKyAgICBzdG9wID0gc3RhY2tfb3ZlcmZsb3coc3AgLSBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3AgKyBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlcHRoKTsKKyAgICBpZiAoc3AgPCBzdG9wKQorICAgICAgICBzaXplID0gc3RvcCAtIHNwOworICAgIGVsc2UKKyAgICAgICAgc2l6ZSA9IHNwIC0gc3RvcDsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAidW5hYmxlIHRvIHJhaXNlIGEgc3RhY2sgb3ZlcmZsb3cgKGFsbG9jYXRlZCAlenUgYnl0ZXMgIgorICAgICAgICAib24gdGhlIHN0YWNrLCAlenUgcmVjdXJzaXZlIGNhbGxzKSIsCisgICAgICAgIHNpemUsIGRlcHRoKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCisKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl90cmF2ZXJzZShQeU9iamVjdCAqbW9kdWxlLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorICAgIHVuc2lnbmVkIGludCBzaWdudW07CisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorICAgIFB5X1ZJU0lUKHRocmVhZC5maWxlKTsKKyNlbmRpZgorI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCisgICAgaWYgKHVzZXJfc2lnbmFscyAhPSBOVUxMKSB7CisgICAgICAgIGZvciAoc2lnbnVtPTA7IHNpZ251bSA8IE5TSUc7IHNpZ251bSsrKQorICAgICAgICAgICAgUHlfVklTSVQodXNlcl9zaWduYWxzW3NpZ251bV0uZmlsZSk7CisgICAgfQorI2VuZGlmCisgICAgUHlfVklTSVQoZmF0YWxfZXJyb3IuZmlsZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAorImZhdWx0aGFuZGxlciBtb2R1bGUuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0geworICAgIHsiZW5hYmxlIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9lbmFibGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoImVuYWJsZShmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiAiCisgICAgICAgICAgICAgICAiZW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyIil9LAorICAgIHsiZGlzYWJsZSIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZGlzYWJsZV9weSwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiZGlzYWJsZSgpOiBkaXNhYmxlIHRoZSBmYXVsdCBoYW5kbGVyIil9LAorICAgIHsiaXNfZW5hYmxlZCIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfaXNfZW5hYmxlZCwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiaXNfZW5hYmxlZCgpLT5ib29sOiBjaGVjayBpZiB0aGUgaGFuZGxlciBpcyBlbmFibGVkIil9LAorICAgIHsiZHVtcF90cmFjZWJhY2siLAorICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrX3B5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgUHlEb2NfU1RSKCJkdW1wX3RyYWNlYmFjayhmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiAiCisgICAgICAgICAgICAgICAiZHVtcCB0aGUgdHJhY2ViYWNrIG9mIHRoZSBjdXJyZW50IHRocmVhZCwgb3Igb2YgYWxsIHRocmVhZHMgIgorICAgICAgICAgICAgICAgImlmIGFsbF90aHJlYWRzIGlzIFRydWUsIGludG8gZmlsZSIpfSwKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKKyAgICB7ImR1bXBfdHJhY2ViYWNrc19sYXRlciIsCisgICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZHVtcF90cmFjZWJhY2tzX2xhdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgUHlEb2NfU1RSKCJkdW1wX3RyYWNlYmFja3NfbGF0ZXIodGltZW91dCwgcmVwZWF0PUZhbHNlLCBmaWxlPXN5cy5zdGRlcnJuLCBleGl0PUZhbHNlKTpcbiIKKyAgICAgICAgICAgICAgICJkdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgaW4gdGltZW91dCBzZWNvbmRzLFxuIgorICAgICAgICAgICAgICAgIm9yIGVhY2ggdGltZW91dCBzZWNvbmRzIGlmIHJlcGVhdCBpcyBUcnVlLiBJZiBleGl0IGlzIFRydWUsICIKKyAgICAgICAgICAgICAgICJjYWxsIF9leGl0KDEpIHdoaWNoIGlzIG5vdCBzYWZlLiIpfSwKKyAgICB7ImNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIiLAorICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX2NhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXJfcHksIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoImNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKTpcbmNhbmNlbCB0aGUgcHJldmlvdXMgY2FsbCAiCisgICAgICAgICAgICAgICAidG8gZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkuIil9LAorI2VuZGlmCisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorICAgIHsicmVnaXN0ZXIiLAorICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3JlZ2lzdGVyX3B5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgUHlEb2NfU1RSKCJyZWdpc3RlcihzaWdudW0sIGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSwgY2hhaW49RmFsc2UpOiAiCisgICAgICAgICAgICAgICAicmVnaXN0ZXIgYW4gaGFuZGxlciBmb3IgdGhlIHNpZ25hbCAnc2lnbnVtJzogZHVtcCB0aGUgIgorICAgICAgICAgICAgICAgInRyYWNlYmFjayBvZiB0aGUgY3VycmVudCB0aHJlYWQsIG9yIG9mIGFsbCB0aHJlYWRzIGlmICIKKyAgICAgICAgICAgICAgICJhbGxfdGhyZWFkcyBpcyBUcnVlLCBpbnRvIGZpbGUiKX0sCisgICAgeyJ1bnJlZ2lzdGVyIiwKKyAgICAgZmF1bHRoYW5kbGVyX3VucmVnaXN0ZXJfcHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoInVucmVnaXN0ZXIoc2lnbnVtKTogdW5yZWdpc3RlciB0aGUgaGFuZGxlciBvZiB0aGUgc2lnbmFsICIKKyAgICAgICAgICAgICAgICAiJ3NpZ251bScgcmVnaXN0ZXJlZCBieSByZWdpc3RlcigpIil9LAorI2VuZGlmCisKKyAgICB7Il9yZWFkX251bGwiLCBmYXVsdGhhbmRsZXJfcmVhZF9udWxsLCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigiX3JlYWRfbnVsbChyZWxlYXNlX2dpbD1GYWxzZSk6IHJlYWQgZnJvbSBOVUxMLCByYWlzZSAiCisgICAgICAgICAgICAgICAiYSBTSUdTRUdWIG9yIFNJR0JVUyBzaWduYWwgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSIpfSwKKyAgICB7Il9zaWdzZWd2IiwgZmF1bHRoYW5kbGVyX3NpZ3NlZ3YsIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfc2lnc2VndigpOiByYWlzZSBhIFNJR1NFR1Ygc2lnbmFsIil9LAorICAgIHsiX3NpZ2FicnQiLCBmYXVsdGhhbmRsZXJfc2lnYWJydCwgTUVUSF9WQVJBUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdhYnJ0KCk6IHJhaXNlIGEgU0lHQUJSVCBzaWduYWwiKX0sCisgICAgeyJfc2lnZnBlIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdmcGUsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdmcGUoKTogcmFpc2UgYSBTSUdGUEUgc2lnbmFsIil9LAorI2lmZGVmIFNJR0JVUworICAgIHsiX3NpZ2J1cyIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnYnVzLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfc2lnYnVzKCk6IHJhaXNlIGEgU0lHQlVTIHNpZ25hbCIpfSwKKyNlbmRpZgorI2lmZGVmIFNJR0lMTAorICAgIHsiX3NpZ2lsbCIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnaWxsLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfc2lnaWxsKCk6IHJhaXNlIGEgU0lHSUxMIHNpZ25hbCIpfSwKKyNlbmRpZgorICAgIHsiX2ZhdGFsX2Vycm9yIiwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3B5LCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigiX2ZhdGFsX2Vycm9yKG1lc3NhZ2UpOiBjYWxsIFB5X0ZhdGFsRXJyb3IobWVzc2FnZSkiKX0sCisjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQorICAgIHsiX3N0YWNrX292ZXJmbG93IiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zdGFja19vdmVyZmxvdywgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiX3N0YWNrX292ZXJmbG93KCk6IHJlY3Vyc2l2ZSBjYWxsIHRvIHJhaXNlIGEgc3RhY2sgb3ZlcmZsb3ciKX0sCisjZW5kaWYKKyAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIG1vZHVsZV9kZWYgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJmYXVsdGhhbmRsZXIiLAorICAgIG1vZHVsZV9kb2MsCisgICAgMCwgLyogbm9uLW5lZ2F0aXZlIHNpemUgdG8gYmUgYWJsZSB0byB1bmxvYWQgdGhlIG1vZHVsZSAqLworICAgIG1vZHVsZV9tZXRob2RzLAorICAgIE5VTEwsCisgICAgZmF1bHRoYW5kbGVyX3RyYXZlcnNlLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9mYXVsdGhhbmRsZXIodm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZtb2R1bGVfZGVmKTsKK30KKworLyogQ2FsbCBmYXVsdGhhbmRsZXIuZW5hYmxlKCkgaWYgdGhlIFBZVEhPTkZBVUxUSEFORExFUiBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgaXMgZGVmaW5lZCwgb3IgaWYgc3lzLl94b3B0aW9ucyBoYXMgYSAnZmF1bHRoYW5kbGVyJyBrZXkuICovCisKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl9lbnZfb3B0aW9ucyh2b2lkKQoreworICAgIFB5T2JqZWN0ICp4b3B0aW9ucywgKmtleSwgKm1vZHVsZSwgKnJlczsKKyAgICBfUHlfSURFTlRJRklFUihlbmFibGUpOworCisgICAgaWYgKCFQeV9HRVRFTlYoIlBZVEhPTkZBVUxUSEFORExFUiIpKSB7CisgICAgICAgIGludCBoYXNfa2V5OworCisgICAgICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKKyAgICAgICAgaWYgKHhvcHRpb25zID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAga2V5ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImZhdWx0aGFuZGxlciIpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgaGFzX2tleSA9IFB5RGljdF9Db250YWlucyh4b3B0aW9ucywga2V5KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIGlmICghaGFzX2tleSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZmF1bHRoYW5kbGVyIik7CisgICAgaWYgKG1vZHVsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChtb2R1bGUsICZQeUlkX2VuYWJsZSwgIiIpOworICAgIFB5X0RFQ1JFRihtb2R1bGUpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5X0RFQ1JFRihyZXMpOworICAgIHJldHVybiAwOworfQorCitpbnQgX1B5RmF1bHRoYW5kbGVyX0luaXQodm9pZCkKK3sKKyNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCisgICAgaW50IGVycjsKKworICAgIC8qIFRyeSB0byBhbGxvY2F0ZSBhbiBhbHRlcm5hdGUgc3RhY2sgZm9yIGZhdWx0aGFuZGxlcigpIHNpZ25hbCBoYW5kbGVyIHRvCisgICAgICogYmUgYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgb24gdGhlIHN0YWNrLCBldmVuIG9uIGEgc3RhY2sgb3ZlcmZsb3cuIElmIGl0CisgICAgICogZmFpbHMsIGlnbm9yZSB0aGUgZXJyb3IuICovCisgICAgc3RhY2suc3NfZmxhZ3MgPSAwOworICAgIHN0YWNrLnNzX3NpemUgPSBTSUdTVEtTWjsKKyAgICBzdGFjay5zc19zcCA9IFB5TWVtX01hbGxvYyhzdGFjay5zc19zaXplKTsKKyAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICBlcnIgPSBzaWdhbHRzdGFjaygmc3RhY2ssIE5VTEwpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHN0YWNrLnNzX3NwKTsKKyAgICAgICAgICAgIHN0YWNrLnNzX3NwID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorICAgIHRocmVhZC5maWxlID0gTlVMTDsKKyAgICB0aHJlYWQuY2FuY2VsX2V2ZW50ID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIHRocmVhZC5ydW5uaW5nID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmICghdGhyZWFkLmNhbmNlbF9ldmVudCB8fCAhdGhyZWFkLnJ1bm5pbmcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgYWxsb2NhdGUgbG9ja3MgZm9yIGZhdWx0aGFuZGxlciIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50LCAxKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGZhdWx0aGFuZGxlcl9lbnZfb3B0aW9ucygpOworfQorCit2b2lkIF9QeUZhdWx0aGFuZGxlcl9GaW5pKHZvaWQpCit7CisjaWZkZWYgRkFVTFRIQU5ETEVSX1VTRVIKKyAgICB1bnNpZ25lZCBpbnQgc2lnbnVtOworI2VuZGlmCisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKKyAgICAvKiBsYXRlciAqLworICAgIGlmICh0aHJlYWQuY2FuY2VsX2V2ZW50KSB7CisgICAgICAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKTsKKyAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHRocmVhZC5jYW5jZWxfZXZlbnQpOworICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2sodGhyZWFkLmNhbmNlbF9ldmVudCk7CisgICAgICAgIHRocmVhZC5jYW5jZWxfZXZlbnQgPSBOVUxMOworICAgIH0KKyAgICBpZiAodGhyZWFkLnJ1bm5pbmcpIHsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHRocmVhZC5ydW5uaW5nKTsKKyAgICAgICAgdGhyZWFkLnJ1bm5pbmcgPSBOVUxMOworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgRkFVTFRIQU5ETEVSX1VTRVIKKyAgICAvKiB1c2VyICovCisgICAgaWYgKHVzZXJfc2lnbmFscyAhPSBOVUxMKSB7CisgICAgICAgIGZvciAoc2lnbnVtPTA7IHNpZ251bSA8IE5TSUc7IHNpZ251bSsrKQorICAgICAgICAgICAgZmF1bHRoYW5kbGVyX3VucmVnaXN0ZXIoJnVzZXJfc2lnbmFsc1tzaWdudW1dLCBzaWdudW0pOworICAgICAgICBmcmVlKHVzZXJfc2lnbmFscyk7CisgICAgICAgIHVzZXJfc2lnbmFscyA9IE5VTEw7CisgICAgfQorI2VuZGlmCisKKyAgICAvKiBmYXRhbCAqLworICAgIGZhdWx0aGFuZGxlcl9kaXNhYmxlKCk7CisjaWZkZWYgSEFWRV9TSUdBTFRTVEFDSworICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2suc3Nfc3ApOworICAgICAgICBzdGFjay5zc19zcCA9IE5VTEw7CisgICAgfQorI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMgYi9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMKaW5kZXggYmZjNTk4NS4uNmI3ZTNmYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9mY250bG1vZHVsZS5jCisrKyBiL01vZHVsZXMvZmNudGxtb2R1bGUuYwpAQCAtNTQwLDEwICs1NDAsMTMgQEAKICAgICBpZiAoaW5zKGQsICJGX1NITENLIiwgKGxvbmcpRl9TSExDSykpIHJldHVybiAtMTsKICNlbmRpZgogCi0vKiBPUyBYIChhbmQgbWF5YmUgb3RoZXJzKSBsZXQgeW91IHRlbGwgdGhlIHN0b3JhZ2UgZGV2aWNlIHRvIGZsdXNoIHRvIHBoeXNpY2FsIG1lZGlhICovCisvKiBPUyBYIHNwZWNpZmljcyAqLwogI2lmZGVmIEZfRlVMTEZTWU5DCiAgICAgaWYgKGlucyhkLCAiRl9GVUxMRlNZTkMiLCAobG9uZylGX0ZVTExGU1lOQykpIHJldHVybiAtMTsKICNlbmRpZgorI2lmZGVmIEZfTk9DQUNIRQorICAgIGlmIChpbnMoZCwgIkZfTk9DQUNIRSIsIChsb25nKUZfTk9DQUNIRSkpIHJldHVybiAtMTsKKyNlbmRpZgogCiAvKiBGb3IgRl97R0VUfFNFVH1GTCAqLwogI2lmZGVmIEZEX0NMT0VYRUMKZGlmZiAtLWdpdCBhL01vZHVsZXMvZnBlY3RsbW9kdWxlLmMgYi9Nb2R1bGVzL2ZwZWN0bG1vZHVsZS5jCmluZGV4IDFiYjUxY2YuLjZhZjJmODIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZnBlY3RsbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9mcGVjdGxtb2R1bGUuYwpAQCAtMTc0LDE3ICsxNzQsNiBAQAogICAgIGZwX2VuYWJsZShUUlBfSU5WQUxJRCB8IFRSUF9ESVZfQllfWkVSTyB8IFRSUF9PVkVSRkxPVyk7CiAgICAgUHlPU19zZXRzaWcoU0lHRlBFLCBoYW5kbGVyKTsKIAotLyotLSBERUMgQUxQSEEgT1NGIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSNlbGlmIGRlZmluZWQoX19hbHBoYSkgJiYgZGVmaW5lZChfX29zZl9fKQotICAgIC8qIFJlZmVyZW5jZXM6ICAgZXhjZXB0aW9uX2ludHJvLCBpZWVlIG1hbiBwYWdlcyAqLwotICAgIC8qIGNjIC1jIC1JL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZSBmcGVjdGxtb2R1bGUuYyAqLwotICAgIC8qIGxkIC1zaGFyZWQgLW8gZnBlY3RsbW9kdWxlLnNvIGZwZWN0bG1vZHVsZS5vICovCi0jaW5jbHVkZSA8bWFjaGluZS9mcHUuaD4KLSAgICB1bnNpZ25lZCBsb25nIGZwX2NvbnRyb2wgPQotICAgIElFRUVfVFJBUF9FTkFCTEVfSU5WIHwgSUVFRV9UUkFQX0VOQUJMRV9EWkUgfCBJRUVFX1RSQVBfRU5BQkxFX09WRjsKLSAgICBpZWVlX3NldF9mcF9jb250cm9sKGZwX2NvbnRyb2wpOwotICAgIFB5T1Nfc2V0c2lnKFNJR0ZQRSwgaGFuZGxlcik7Ci0KIC8qLS0gREVDIEFMUEhBIExJTlVYIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjZWxpZiBkZWZpbmVkKF9fYWxwaGEpICYmIGRlZmluZWQobGludXgpCiAjaW5jbHVkZSA8YXNtL2ZwdS5oPgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nY193ZWFrcmVmLnR4dCBiL01vZHVsZXMvZ2Nfd2Vha3JlZi50eHQKaW5kZXggZDdiZTZjMy4uMmYxODQwMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nY193ZWFrcmVmLnR4dAorKysgYi9Nb2R1bGVzL2djX3dlYWtyZWYudHh0CkBAIC0xNSw4ICsxNSw4IEBACiBoaXN0b3JpY2FsbHkgY29tbW9uIGJ1ZyksIHRwX2NsZWFyIGVtcHRpZXMgYW4gaW5zdGFuY2UncyBfX2RpY3RfXywgYW5kCiAiaW1wb3NzaWJsZSIgQXR0cmlidXRlRXJyb3JzIHJlc3VsdC4gIEF0IHdvcnN0LCB0cF9jbGVhciBsZWF2ZXMgYmVoaW5kIGFuCiBpbnNhbmUgb2JqZWN0IGF0IHRoZSBDIGxldmVsLCBhbmQgc2VnZmF1bHRzIHJlc3VsdCAoaGlzdG9yaWNhbGx5LCBtb3N0Ci1vZnRlbiBieSBzZXR0aW5nIGEgbmV3LXN0eWxlIGNsYXNzJ3MgbXJvIHBvaW50ZXIgdG8gTlVMTCwgYWZ0ZXIgd2hpY2gKLWF0dHJpYnV0ZSBsb29rdXBzIHBlcmZvcm1lZCBieSB0aGUgY2xhc3MgY2FuIHNlZ2ZhdWx0KS4KK29mdGVuIGJ5IHNldHRpbmcgYSBjbGFzcydzIG1ybyBwb2ludGVyIHRvIE5VTEwsIGFmdGVyIHdoaWNoIGF0dHJpYnV0ZQorbG9va3VwcyBwZXJmb3JtZWQgYnkgdGhlIGNsYXNzIGNhbiBzZWdmYXVsdCkuCiAKIE9UT0gsIGl0J3MgT0sgdG8gcnVuIFB5dGhvbi1sZXZlbCBjb2RlIHRoYXQgY2FuJ3QgYWNjZXNzIHVucmVhY2hhYmxlCiBvYmplY3RzLCBhbmQgc29tZXRpbWVzIHRoYXQncyBuZWNlc3NhcnkuICBUaGUgY2hpZWYgZXhhbXBsZSBpcyB0aGUgY2FsbGJhY2sKQEAgLTExOSw3ICsxMTksNyBAQAogaXQgdG9vayBxdWl0ZSBhIHdoaWxlIHRvIGRyZWFtIHVwIGZhaWxpbmcgdGVzdCBjYXNlcy4gIFpvcGUzIHNhdyBzZWdmYXVsdHMKIGR1cmluZyBzaHV0ZG93biwgZHVyaW5nIHRoZSBzZWNvbmQgY2FsbCBvZiBnYyBpbiBQeV9GaW5hbGl6ZSwgYWZ0ZXIgbW9zdAogbW9kdWxlcyBoYWQgYmVlbiB0b3JuIGRvd24uICBUaGF0IGNyZWF0ZXMgbWFueSB0cmFzaCBjeWNsZXMgKGVzcC4gdGhvc2UKLWludm9sdmluZyBuZXctc3R5bGUgY2xhc3NlcyksIG1ha2luZyB0aGUgcHJvYmxlbSBtdWNoIG1vcmUgbGlrZWx5LiAgT25jZSB5b3UKK2ludm9sdmluZyBjbGFzc2VzKSwgbWFraW5nIHRoZSBwcm9ibGVtIG11Y2ggbW9yZSBsaWtlbHkuICBPbmNlIHlvdQoga25vdyB3aGF0J3MgcmVxdWlyZWQgdG8gcHJvdm9rZSB0aGUgcHJvYmxlbSwgdGhvdWdoLCBpdCdzIGVhc3kgdG8gY3JlYXRlCiB0ZXN0cyB0aGF0IHNlZ2ZhdWx0IGJlZm9yZSBzaHV0ZG93bi4KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nY21vZHVsZS5jIGIvTW9kdWxlcy9nY21vZHVsZS5jCmluZGV4IDhjNTI0ZjguLmY3ODJkZDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ2Ntb2R1bGUuYworKysgYi9Nb2R1bGVzL2djbW9kdWxlLmMKQEAgLTY1LDE3ICs2NSwxNyBAQAogLyogUHl0aG9uIHN0cmluZyB0byB1c2UgaWYgdW5oYW5kbGVkIGV4Y2VwdGlvbiBvY2N1cnMgKi8KIHN0YXRpYyBQeU9iamVjdCAqZ2Nfc3RyID0gTlVMTDsKIAotLyogUHl0aG9uIHN0cmluZyB1c2VkIHRvIGxvb2sgZm9yIF9fZGVsX18gYXR0cmlidXRlLiAqLwotc3RhdGljIFB5T2JqZWN0ICpkZWxzdHIgPSBOVUxMOworLyogYSBsaXN0IG9mIGNhbGxiYWNrcyB0byBiZSBpbnZva2VkIHdoZW4gY29sbGVjdGlvbiBpcyBwZXJmb3JtZWQgKi8KK3N0YXRpYyBQeU9iamVjdCAqY2FsbGJhY2tzID0gTlVMTDsKIAotLyogVGhpcyBpcyB0aGUgbnVtYmVyIG9mIG9iamVjdHMgd2hvIHN1cnZpdmVkIHRoZSBsYXN0IGZ1bGwgY29sbGVjdGlvbi4gSXQKKy8qIFRoaXMgaXMgdGhlIG51bWJlciBvZiBvYmplY3RzIHRoYXQgc3Vydml2ZWQgdGhlIGxhc3QgZnVsbCBjb2xsZWN0aW9uLiBJdAogICAgYXBwcm94aW1hdGVzIHRoZSBudW1iZXIgb2YgbG9uZyBsaXZlZCBvYmplY3RzIHRyYWNrZWQgYnkgdGhlIEdDLgogCiAgICAoYnkgImZ1bGwgY29sbGVjdGlvbiIsIHdlIG1lYW4gYSBjb2xsZWN0aW9uIG9mIHRoZSBvbGRlc3QgZ2VuZXJhdGlvbikuCiAqLwogc3RhdGljIFB5X3NzaXplX3QgbG9uZ19saXZlZF90b3RhbCA9IDA7CiAKLS8qIFRoaXMgaXMgdGhlIG51bWJlciBvZiBvYmplY3RzIHdobyBzdXJ2aXZlZCBhbGwgIm5vbi1mdWxsIiBjb2xsZWN0aW9ucywKKy8qIFRoaXMgaXMgdGhlIG51bWJlciBvZiBvYmplY3RzIHRoYXQgc3Vydml2ZWQgYWxsICJub24tZnVsbCIgY29sbGVjdGlvbnMsCiAgICBhbmQgYXJlIGF3YWl0aW5nIHRvIHVuZGVyZ28gYSBmdWxsIGNvbGxlY3Rpb24gZm9yIHRoZSBmaXJzdCB0aW1lLgogCiAqLwpAQCAtNzMxLDggKzczMSw4IEBACiBzdGF0aWMgdm9pZAogZGVidWdfY3ljbGUoY2hhciAqbXNnLCBQeU9iamVjdCAqb3ApCiB7Ci0gICAgUHlTeXNfV3JpdGVTdGRlcnIoImdjOiAlLjEwMHMgPCUuMTAwcyAlcD5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgbXNnLCBQeV9UWVBFKG9wKS0+dHBfbmFtZSwgb3ApOworICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiZ2M6ICVzIDwlcyAlcD5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgIG1zZywgUHlfVFlQRShvcCktPnRwX25hbWUsIG9wKTsKIH0KIAogLyogSGFuZGxlIHVuY29sbGVjdGFibGUgZ2FyYmFnZSAoY3ljbGVzIHdpdGggZmluYWxpemVycywgYW5kIHN0dWZmIHJlYWNoYWJsZQpAQCAtODEzLDYgKzgxMyw5IEBACiAgICAgKHZvaWQpUHlUdXBsZV9DbGVhckZyZWVMaXN0KCk7CiAgICAgKHZvaWQpUHlVbmljb2RlX0NsZWFyRnJlZUxpc3QoKTsKICAgICAodm9pZClQeUZsb2F0X0NsZWFyRnJlZUxpc3QoKTsKKyAgICAodm9pZClQeUxpc3RfQ2xlYXJGcmVlTGlzdCgpOworICAgICh2b2lkKVB5RGljdF9DbGVhckZyZWVMaXN0KCk7CisgICAgKHZvaWQpUHlTZXRfQ2xlYXJGcmVlTGlzdCgpOwogfQogCiBzdGF0aWMgZG91YmxlCkBAIC04MjAsNyArODIzLDkgQEAKIHsKICAgICBkb3VibGUgcmVzdWx0ID0gMDsKICAgICBpZiAodG1vZCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpmID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0bW9kLCAidGltZSIsIE5VTEwpOworICAgICAgICBfUHlfSURFTlRJRklFUih0aW1lKTsKKworICAgICAgICBQeU9iamVjdCAqZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodG1vZCwgJlB5SWRfdGltZSwgTlVMTCk7CiAgICAgICAgIGlmIChmID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KQEAgLTgzNiw3ICs4NDEsNyBAQAogLyogVGhpcyBpcyB0aGUgbWFpbiBmdW5jdGlvbi4gIFJlYWQgdGhpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUKICAqIGNvbGxlY3Rpb24gcHJvY2VzcyB3b3Jrcy4gKi8KIHN0YXRpYyBQeV9zc2l6ZV90Ci1jb2xsZWN0KGludCBnZW5lcmF0aW9uKQorY29sbGVjdChpbnQgZ2VuZXJhdGlvbiwgUHlfc3NpemVfdCAqbl9jb2xsZWN0ZWQsIFB5X3NzaXplX3QgKm5fdW5jb2xsZWN0YWJsZSkKIHsKICAgICBpbnQgaTsKICAgICBQeV9zc2l6ZV90IG0gPSAwOyAvKiAjIG9iamVjdHMgY29sbGVjdGVkICovCkBAIC04NDgsMTIgKzg1Myw2IEBACiAgICAgUHlHQ19IZWFkICpnYzsKICAgICBkb3VibGUgdDEgPSAwLjA7CiAKLSAgICBpZiAoZGVsc3RyID09IE5VTEwpIHsKLSAgICAgICAgZGVsc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fZGVsX18iKTsKLSAgICAgICAgaWYgKGRlbHN0ciA9PSBOVUxMKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2MgY291bGRuJ3QgYWxsb2NhdGUgXCJfX2RlbF9fXCIiKTsKLSAgICB9Ci0KICAgICBpZiAoZGVidWcgJiBERUJVR19TVEFUUykgewogICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiZ2M6IGNvbGxlY3RpbmcgZ2VuZXJhdGlvbiAlZC4uLlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGlvbik7CkBAIC05OTMsOSArOTkyLDY0IEBACiAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShnY19zdHIpOwogICAgICAgICBQeV9GYXRhbEVycm9yKCJ1bmV4cGVjdGVkIGV4Y2VwdGlvbiBkdXJpbmcgZ2FyYmFnZSBjb2xsZWN0aW9uIik7CiAgICAgfQorCisgICAgaWYgKG5fY29sbGVjdGVkKQorICAgICAgICAqbl9jb2xsZWN0ZWQgPSBtOworICAgIGlmIChuX3VuY29sbGVjdGFibGUpCisgICAgICAgICpuX3VuY29sbGVjdGFibGUgPSBuOwogICAgIHJldHVybiBuK207CiB9CiAKKy8qIEludm9rZSBwcm9ncmVzcyBjYWxsYmFja3MgdG8gbm90aWZ5IGNsaWVudHMgdGhhdCBnYXJiYWdlIGNvbGxlY3Rpb24KKyAqIGlzIHN0YXJ0aW5nIG9yIHN0b3BwaW5nCisgKi8KK3N0YXRpYyB2b2lkCitpbnZva2VfZ2NfY2FsbGJhY2soY29uc3QgY2hhciAqcGhhc2UsIGludCBnZW5lcmF0aW9uLAorICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbGVjdGVkLCBQeV9zc2l6ZV90IHVuY29sbGVjdGFibGUpCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0ICppbmZvID0gTlVMTDsKKworICAgIC8qIHdlIG1heSBnZXQgY2FsbGVkIHZlcnkgZWFybHkgKi8KKyAgICBpZiAoY2FsbGJhY2tzID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICAvKiBUaGUgbG9jYWwgdmFyaWFibGUgY2Fubm90IGJlIHJlYm91bmQsIGNoZWNrIGl0IGZvciBzYW5pdHkgKi8KKyAgICBhc3NlcnQoY2FsbGJhY2tzICE9IE5VTEwgJiYgUHlMaXN0X0NoZWNrRXhhY3QoY2FsbGJhY2tzKSk7CisgICAgaWYgKFB5TGlzdF9HRVRfU0laRShjYWxsYmFja3MpICE9IDApIHsKKyAgICAgICAgaW5mbyA9IFB5X0J1aWxkVmFsdWUoIntzaXNuc259IiwKKyAgICAgICAgICAgICJnZW5lcmF0aW9uIiwgZ2VuZXJhdGlvbiwKKyAgICAgICAgICAgICJjb2xsZWN0ZWQiLCBjb2xsZWN0ZWQsCisgICAgICAgICAgICAidW5jb2xsZWN0YWJsZSIsIHVuY29sbGVjdGFibGUpOworICAgICAgICBpZiAoaW5mbyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoTlVMTCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChpPTA7IGk8UHlMaXN0X0dFVF9TSVpFKGNhbGxiYWNrcyk7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqciwgKmNiID0gUHlMaXN0X0dFVF9JVEVNKGNhbGxiYWNrcywgaSk7CisgICAgICAgIFB5X0lOQ1JFRihjYik7IC8qIG1ha2Ugc3VyZSBjYiBkb2Vzbid0IGdvIGF3YXkgKi8KKyAgICAgICAgciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjYiwgInNPIiwgcGhhc2UsIGluZm8pOworICAgICAgICBQeV9YREVDUkVGKHIpOworICAgICAgICBpZiAociA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGNiKTsKKyAgICAgICAgUHlfREVDUkVGKGNiKTsKKyAgICB9CisgICAgUHlfWERFQ1JFRihpbmZvKTsKK30KKworLyogUGVyZm9ybSBnYXJiYWdlIGNvbGxlY3Rpb24gb2YgYSBnZW5lcmF0aW9uIGFuZCBpbnZva2UKKyAqIHByb2dyZXNzIGNhbGxiYWNrcy4KKyAqLworc3RhdGljIFB5X3NzaXplX3QKK2NvbGxlY3Rfd2l0aF9jYWxsYmFjayhpbnQgZ2VuZXJhdGlvbikKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCwgY29sbGVjdGVkLCB1bmNvbGxlY3RhYmxlOworICAgIGludm9rZV9nY19jYWxsYmFjaygic3RhcnQiLCBnZW5lcmF0aW9uLCAwLCAwKTsKKyAgICByZXN1bHQgPSBjb2xsZWN0KGdlbmVyYXRpb24sICZjb2xsZWN0ZWQsICZ1bmNvbGxlY3RhYmxlKTsKKyAgICBpbnZva2VfZ2NfY2FsbGJhY2soInN0b3AiLCBnZW5lcmF0aW9uLCBjb2xsZWN0ZWQsIHVuY29sbGVjdGFibGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeV9zc2l6ZV90CiBjb2xsZWN0X2dlbmVyYXRpb25zKHZvaWQpCiB7CkBAIC0xMDE0LDcgKzEwNjgsNyBAQAogICAgICAgICAgICAgaWYgKGkgPT0gTlVNX0dFTkVSQVRJT05TIC0gMQogICAgICAgICAgICAgICAgICYmIGxvbmdfbGl2ZWRfcGVuZGluZyA8IGxvbmdfbGl2ZWRfdG90YWwgLyA0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbiA9IGNvbGxlY3QoaSk7CisgICAgICAgICAgICBuID0gY29sbGVjdF93aXRoX2NhbGxiYWNrKGkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDg1LDcgKzExMzksNyBAQAogICAgICAgICBuID0gMDsgLyogYWxyZWFkeSBjb2xsZWN0aW5nLCBkb24ndCBkbyBhbnl0aGluZyAqLwogICAgIGVsc2UgewogICAgICAgICBjb2xsZWN0aW5nID0gMTsKLSAgICAgICAgbiA9IGNvbGxlY3QoZ2VuYXJnKTsKKyAgICAgICAgbiA9IGNvbGxlY3Rfd2l0aF9jYWxsYmFjayhnZW5hcmcpOwogICAgICAgICBjb2xsZWN0aW5nID0gMDsKICAgICB9CiAKQEAgLTEzNzgsNiArMTQzMiwxNSBAQAogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImdhcmJhZ2UiLCBnYXJiYWdlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKSB7CisgICAgICAgIGNhbGxiYWNrcyA9IFB5TGlzdF9OZXcoMCk7CisgICAgICAgIGlmIChjYWxsYmFja3MgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9JTkNSRUYoY2FsbGJhY2tzKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJjYWxsYmFja3MiLCBjYWxsYmFja3MpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBJbXBvcnRpbmcgY2FuJ3QgYmUgZG9uZSBpbiBjb2xsZWN0KCkgYmVjYXVzZSBjb2xsZWN0KCkKICAgICAgKiBjYW4gYmUgY2FsbGVkIHZpYSBQeUdDX0NvbGxlY3QoKSBpbiBQeV9GaW5hbGl6ZSgpLgogICAgICAqIFRoaXMgd291bGRuJ3QgYmUgYSBwcm9ibGVtLCBleGNlcHQgdGhhdCA8aW5pdGlhbGl6ZWQ+IGlzCkBAIC0xNDEwLDcgKzE0NzMsNyBAQAogICAgICAgICBuID0gMDsgLyogYWxyZWFkeSBjb2xsZWN0aW5nLCBkb24ndCBkbyBhbnl0aGluZyAqLwogICAgIGVsc2UgewogICAgICAgICBjb2xsZWN0aW5nID0gMTsKLSAgICAgICAgbiA9IGNvbGxlY3QoTlVNX0dFTkVSQVRJT05TIC0gMSk7CisgICAgICAgIG4gPSBjb2xsZWN0X3dpdGhfY2FsbGJhY2soTlVNX0dFTkVSQVRJT05TIC0gMSk7CiAgICAgICAgIGNvbGxlY3RpbmcgPSAwOwogICAgIH0KIApAQCAtMTQ0Nyw2ICsxNTEwLDcgQEAKICAgICAgICAgICAgIFB5X1hERUNSRUYoYnl0ZXMpOwogICAgICAgICB9CiAgICAgfQorICAgIFB5X0NMRUFSKGNhbGxiYWNrcyk7CiB9CiAKIC8qIGZvciBkZWJ1Z2dpbmcgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMgYi9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jCmluZGV4IDcwNjliNmUuLjA5NzFhNjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMKKysrIGIvTW9kdWxlcy9nZXRidWlsZGluZm8uYwpAQCAtMjAsMTQgKzIwLDYgQEAKICNlbmRpZgogI2VuZGlmCiAKLS8qIG9uIHVuaXgsIFNWTlZFUlNJT04gaXMgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0gKiBvbiBXaW5kb3dzLCB0aGUgc3RyaW5nIGlzIGludGVycG9sYXRlZCB1c2luZwotICogc3Vid2NyZXYuZXhlCi0gKi8KLSNpZm5kZWYgU1ZOVkVSU0lPTgotI2RlZmluZSBTVk5WRVJTSU9OICIkV0NSQU5HRSQkV0NNT0RTP006JCIKLSNlbmRpZgotCiAvKiBYWFggT25seSB1bml4IGJ1aWxkIHByb2Nlc3MgaGFzIGJlZW4gdGVzdGVkICovCiAjaWZuZGVmIEhHVkVSU0lPTgogI2RlZmluZSBIR1ZFUlNJT04gIiIKQEAgLTU3LDE2ICs0OSw2IEBACiB9CiAKIGNvbnN0IGNoYXIgKgotX1B5X3N2bnZlcnNpb24odm9pZCkKLXsKLSAgICAvKiB0aGUgZm9sbG93aW5nIHN0cmluZyBjYW4gYmUgbW9kaWZpZWQgYnkgc3Vid2NyZXYuZXhlICovCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgc3ZudmVyc2lvbltdID0gU1ZOVkVSU0lPTjsKLSAgICBpZiAoc3ZudmVyc2lvblswXSAhPSAnJCcpCi0gICAgICAgIHJldHVybiBzdm52ZXJzaW9uOyAvKiBpdCB3YXMgaW50ZXJwb2xhdGVkLCBvciBwYXNzZWQgb24gY29tbWFuZCBsaW5lICovCi0gICAgcmV0dXJuICJVbnZlcnNpb25lZCBkaXJlY3RvcnkiOwotfQotCi1jb25zdCBjaGFyICoKIF9QeV9oZ3ZlcnNpb24odm9pZCkKIHsKICAgICByZXR1cm4gSEdWRVJTSU9OOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nZXRwYXRoLmMgYi9Nb2R1bGVzL2dldHBhdGguYwppbmRleCBiN2Y5NTczLi5iOThjNTIwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldHBhdGguYworKysgYi9Nb2R1bGVzL2dldHBhdGguYwpAQCAtMjYwLDYgKzI2MCw1OSBAQAogICAgIHdjc2NweShwYXRoLCBidWZmZXIpOwogfQogCisvKiBzZWFyY2ggZm9yIGEgcHJlZml4IHZhbHVlIGluIGFuIGVudmlyb25tZW50IGZpbGUuIElmIGZvdW5kLCBjb3B5IGl0CisgICB0byB0aGUgcHJvdmlkZWQgYnVmZmVyLCB3aGljaCBpcyBleHBlY3RlZCB0byBiZSBubyBtb3JlIHRoYW4gTUFYUEFUSExFTgorICAgYnl0ZXMgbG9uZy4KKyovCisKK3N0YXRpYyBpbnQKK2ZpbmRfZW52X2NvbmZpZ192YWx1ZShGSUxFICogZW52X2ZpbGUsIGNvbnN0IHdjaGFyX3QgKiBrZXksIHdjaGFyX3QgKiB2YWx1ZSkKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsgLyogbWVhbmluZyBub3QgZm91bmQgKi8KKyAgICBjaGFyIGJ1ZmZlcltNQVhQQVRITEVOKjIrMV07ICAvKiBhbGxvdyBleHRyYSBmb3Iga2V5LCAnPScsIGV0Yy4gKi8KKworICAgIGZzZWVrKGVudl9maWxlLCAwLCBTRUVLX1NFVCk7CisgICAgd2hpbGUgKCFmZW9mKGVudl9maWxlKSkgeworICAgICAgICBjaGFyICogcCA9IGZnZXRzKGJ1ZmZlciwgTUFYUEFUSExFTioyLCBlbnZfZmlsZSk7CisgICAgICAgIHdjaGFyX3QgdG1wYnVmZmVyW01BWFBBVEhMRU4qMisxXTsKKyAgICAgICAgUHlPYmplY3QgKiBkZWNvZGVkOworICAgICAgICBpbnQgbjsKKworICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG4gPSBzdHJsZW4ocCk7CisgICAgICAgIGlmIChwW24gLSAxXSAhPSAnXG4nKSB7CisgICAgICAgICAgICAvKiBsaW5lIGhhcyBvdmVyZmxvd2VkIC0gYmFpbCAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBbMF0gPT0gJyMnKSAgICAvKiBDb21tZW50IC0gc2tpcCAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChidWZmZXIsIG4sICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgaWYgKGRlY29kZWQgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBrOworICAgICAgICAgICAgd2NoYXJfdCAqIHN0YXRlOworICAgICAgICAgICAgayA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyKGRlY29kZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wYnVmZmVyLCBNQVhQQVRITEVOICogMik7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CisgICAgICAgICAgICBpZiAoayA+PSAwKSB7CisgICAgICAgICAgICAgICAgd2NoYXJfdCAqIHRvayA9IHdjc3Rvayh0bXBidWZmZXIsIEwiIFx0XHJcbiIsICZzdGF0ZSk7CisgICAgICAgICAgICAgICAgaWYgKCh0b2sgIT0gTlVMTCkgJiYgIXdjc2NtcCh0b2ssIGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rKE5VTEwsIEwiIFx0IiwgJnN0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh0b2sgIT0gTlVMTCkgJiYgIXdjc2NtcCh0b2ssIEwiPSIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2sgPSB3Y3N0b2soTlVMTCwgTCJcclxuIiwgJnN0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2sgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc25jcHkodmFsdWUsIHRvaywgTUFYUEFUSExFTik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiAvKiBzZWFyY2hfZm9yX3ByZWZpeCByZXF1aXJlcyB0aGF0IGFyZ3YwX3BhdGggYmUgbm8gbW9yZSB0aGFuIE1BWFBBVEhMRU4KICAgIGJ5dGVzIGxvbmcuCiAqLwpAQCAtNDA2LDcgKzQ1OSw3IEBACiAgICAgc3RhdGljIHdjaGFyX3QgZGVsaW1pdGVyWzJdID0ge0RFTElNLCAnXDAnfTsKICAgICBzdGF0aWMgd2NoYXJfdCBzZXBhcmF0b3JbMl0gPSB7U0VQLCAnXDAnfTsKICAgICBjaGFyICpfcnRweXBhdGggPSBQeV9HRVRFTlYoIlBZVEhPTlBBVEgiKTsgLyogWFhYIHVzZSB3aWRlIHZlcnNpb24gb24gV2luZG93cyAqLwotICAgIHdjaGFyX3QgcnRweXBhdGhbTUFYUEFUSExFTisxXTsKKyAgICB3Y2hhcl90ICpydHB5cGF0aCA9IE5VTEw7CiAgICAgd2NoYXJfdCAqaG9tZSA9IFB5X0dldFB5dGhvbkhvbWUoKTsKICAgICBjaGFyICpfcGF0aCA9IGdldGVudigiUEFUSCIpOwogICAgIHdjaGFyX3QgKnBhdGhfYnVmZmVyID0gTlVMTDsKQEAgLTQyMSw2ICs0NzQsNyBAQAogICAgIHdjaGFyX3QgKmRlZnBhdGg7CiAjaWZkZWYgV0lUSF9ORVhUX0ZSQU1FV09SSwogICAgIE5TTW9kdWxlIHB5dGhvbk1vZHVsZTsKKyAgICBjb25zdCBjaGFyKiAgICBtb2RQYXRoOwogI2VuZGlmCiAjaWZkZWYgX19BUFBMRV9fCiAjaWYgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSBNQUNfT1NfWF9WRVJTSU9OXzEwXzQKQEAgLTUxNSw4ICs1NjksOCBAQAogICAgICovCiAgICAgcHl0aG9uTW9kdWxlID0gTlNNb2R1bGVGb3JTeW1ib2woTlNMb29rdXBBbmRCaW5kU3ltYm9sKCJfUHlfSW5pdGlhbGl6ZSIpKTsKICAgICAvKiBVc2UgZHlsaWIgZnVuY3Rpb25zIHRvIGZpbmQgb3V0IHdoZXJlIHRoZSBmcmFtZXdvcmsgd2FzIGxvYWRlZCBmcm9tICovCi0gICAgYnVmID0gKHdjaGFyX3QgKilOU0xpYnJhcnlOYW1lRm9yTW9kdWxlKHB5dGhvbk1vZHVsZSk7Ci0gICAgaWYgKGJ1ZiAhPSBOVUxMKSB7CisgICAgbW9kUGF0aCA9IE5TTGlicmFyeU5hbWVGb3JNb2R1bGUocHl0aG9uTW9kdWxlKTsKKyAgICBpZiAobW9kUGF0aCAhPSBOVUxMKSB7CiAgICAgICAgIC8qIFdlJ3JlIGluIGEgZnJhbWV3b3JrLiAqLwogICAgICAgICAvKiBTZWUgaWYgd2UgbWlnaHQgYmUgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gVGhlIGZyYW1ld29yayBpbiB0aGUKICAgICAgICAgKiogYnVpbGQgZGlyZWN0b3J5IGlzIGluY29tcGxldGUsIGl0IG9ubHkgaGFzIHRoZSAuZHlsaWIgYW5kIGEgZmV3CkBAIC01MjUsNyArNTc5LDEyIEBACiAgICAgICAgICoqIGJlIHJ1bm5pbmcgdGhlIGludGVycHJldGVyIGluIHRoZSBidWlsZCBkaXJlY3RvcnksIHNvIHdlIHVzZSB0aGUKICAgICAgICAgKiogYnVpbGQtZGlyZWN0b3J5LXNwZWNpZmljIGxvZ2ljIHRvIGZpbmQgTGliIGFuZCBzdWNoLgogICAgICAgICAqLwotICAgICAgICB3Y3NuY3B5KGFyZ3YwX3BhdGgsIGJ1ZiwgTUFYUEFUSExFTik7CisgICAgICAgIHdjaGFyX3QqIHdidWYgPSBfUHlfY2hhcjJ3Y2hhcihtb2RQYXRoLCBOVUxMKTsKKyAgICAgICAgaWYgKHdidWYgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IGRlY29kZSBmcmFtZXdvcmsgbG9jYXRpb24iKTsKKyAgICAgICAgfQorCisgICAgICAgIHdjc25jcHkoYXJndjBfcGF0aCwgd2J1ZiwgTUFYUEFUSExFTik7CiAgICAgICAgIHJlZHVjZShhcmd2MF9wYXRoKTsKICAgICAgICAgam9pbnBhdGgoYXJndjBfcGF0aCwgbGliX3B5dGhvbik7CiAgICAgICAgIGpvaW5wYXRoKGFyZ3YwX3BhdGgsIExBTkRNQVJLKTsKQEAgLTUzNiw4ICs1OTUsOSBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogVXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeSBhcyB0aGUgcHJvZ3BhdGggKi8KLSAgICAgICAgICAgIHdjc25jcHkoYXJndjBfcGF0aCwgYnVmLCBNQVhQQVRITEVOKTsKKyAgICAgICAgICAgIHdjc25jcHkoYXJndjBfcGF0aCwgd2J1ZiwgTUFYUEFUSExFTik7CiAgICAgICAgIH0KKyAgICAgICAgUHlNZW1fRnJlZSh3YnVmKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNTY1LDYgKzYyNSw0MCBAQAogICAgICAgIE1BWFBBVEhMRU4gYnl0ZXMgbG9uZy4KICAgICAqLwogCisgICAgLyogU2VhcmNoIGZvciBhbiBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIGZpbGUsIGZpcnN0IGluIHRoZQorICAgICAgIGV4ZWN1dGFibGUncyBkaXJlY3RvcnkgYW5kIHRoZW4gaW4gdGhlIHBhcmVudCBkaXJlY3RvcnkuCisgICAgICAgSWYgZm91bmQsIG9wZW4gaXQgZm9yIHVzZSB3aGVuIHNlYXJjaGluZyBmb3IgcHJlZml4ZXMuCisgICAgKi8KKworICAgIHsKKyAgICAgICAgd2NoYXJfdCB0bXBidWZmZXJbTUFYUEFUSExFTisxXTsKKyAgICAgICAgd2NoYXJfdCAqZW52X2NmZyA9IEwicHl2ZW52LmNmZyI7CisgICAgICAgIEZJTEUgKiBlbnZfZmlsZSA9IE5VTEw7CisKKyAgICAgICAgd2NzY3B5KHRtcGJ1ZmZlciwgYXJndjBfcGF0aCk7CisKKyAgICAgICAgam9pbnBhdGgodG1wYnVmZmVyLCBlbnZfY2ZnKTsKKyAgICAgICAgZW52X2ZpbGUgPSBfUHlfd2ZvcGVuKHRtcGJ1ZmZlciwgTCJyIik7CisgICAgICAgIGlmIChlbnZfZmlsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcnJubyA9IDA7CisgICAgICAgICAgICByZWR1Y2UodG1wYnVmZmVyKTsKKyAgICAgICAgICAgIHJlZHVjZSh0bXBidWZmZXIpOworICAgICAgICAgICAgam9pbnBhdGgodG1wYnVmZmVyLCBlbnZfY2ZnKTsKKyAgICAgICAgICAgIGVudl9maWxlID0gX1B5X3dmb3Blbih0bXBidWZmZXIsIEwiciIpOworICAgICAgICAgICAgaWYgKGVudl9maWxlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBlcnJubyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVudl9maWxlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIExvb2sgZm9yIGEgJ2hvbWUnIHZhcmlhYmxlIGFuZCBzZXQgYXJndjBfcGF0aCB0byBpdCwgaWYgZm91bmQgKi8KKyAgICAgICAgICAgIGlmIChmaW5kX2Vudl9jb25maWdfdmFsdWUoZW52X2ZpbGUsIEwiaG9tZSIsIHRtcGJ1ZmZlcikpIHsKKyAgICAgICAgICAgICAgICB3Y3NjcHkoYXJndjBfcGF0aCwgdG1wYnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZjbG9zZShlbnZfZmlsZSk7CisgICAgICAgICAgICBlbnZfZmlsZSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAoIShwZm91bmQgPSBzZWFyY2hfZm9yX3ByZWZpeChhcmd2MF9wYXRoLCBob21lLCBfcHJlZml4KSkpIHsKICAgICAgICAgaWYgKCFQeV9Gcm96ZW5GbGFnKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCkBAIC02MDYsMTIgKzcwMCwxMiBAQAogICAgIGJ1ZnN6ID0gMDsKIAogICAgIGlmIChfcnRweXBhdGgpIHsKLSAgICAgICAgc2l6ZV90IHMgPSBtYnN0b3djcyhydHB5cGF0aCwgX3J0cHlwYXRoLCBzaXplb2YocnRweXBhdGgpL3NpemVvZih3Y2hhcl90KSk7Ci0gICAgICAgIGlmIChzID09IChzaXplX3QpLTEgfHwgcyA+PXNpemVvZihydHB5cGF0aCkpCi0gICAgICAgICAgICAvKiBYWFggZGVhbCB3aXRoIGVycm9ycyBtb3JlIGdyYWNlZnVsbHkgKi8KKyAgICAgICAgc2l6ZV90IHJ0cHlwYXRoX2xlbjsKKyAgICAgICAgcnRweXBhdGggPSBfUHlfY2hhcjJ3Y2hhcihfcnRweXBhdGgsICZydHB5cGF0aF9sZW4pOworICAgICAgICBpZiAocnRweXBhdGggIT0gTlVMTCkKKyAgICAgICAgICAgIGJ1ZnN6ICs9IHJ0cHlwYXRoX2xlbiArIDE7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIF9ydHB5cGF0aCA9IE5VTEw7Ci0gICAgICAgIGlmIChfcnRweXBhdGgpCi0gICAgICAgICAgICBidWZzeiArPSB3Y3NsZW4ocnRweXBhdGgpICsgMTsKICAgICB9CiAKICAgICBkZWZwYXRoID0gX3B5dGhvbnBhdGg7CkBAIC02NDUsNyArNzM5LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIFJ1bi10aW1lIHZhbHVlIG9mICRQWVRIT05QQVRIIGdvZXMgZmlyc3QgKi8KLSAgICAgICAgaWYgKF9ydHB5cGF0aCkgeworICAgICAgICBpZiAocnRweXBhdGgpIHsKICAgICAgICAgICAgIHdjc2NweShidWYsIHJ0cHlwYXRoKTsKICAgICAgICAgICAgIHdjc2NhdChidWYsIGRlbGltaXRlcik7CiAgICAgICAgIH0KQEAgLTcxOSw2ICs4MTMsOCBAQAogICAgIFB5TWVtX0ZyZWUoX3B5dGhvbnBhdGgpOwogICAgIFB5TWVtX0ZyZWUoX3ByZWZpeCk7CiAgICAgUHlNZW1fRnJlZShfZXhlY19wcmVmaXgpOworICAgIGlmIChydHB5cGF0aCAhPSBOVUxMKQorICAgICAgICBQeU1lbV9GcmVlKHJ0cHlwYXRoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jIGIvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYwppbmRleCA3N2U3NmZlLi45MTE1YjY3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCisrKyBiL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKQEAgLTEzNCw2ICsxMzQsNTMgQEAKICAgICByZXR1cm4gcjsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2dyb3VwYnlfcmVkdWNlKGdyb3VwYnlvYmplY3QgKmx6KQoreworICAgIC8qIHJlZHVjZSBhcyBhICduZXcnIGNhbGwgd2l0aCBhbiBvcHRpb25hbCAnc2V0c3RhdGUnIGlmIGdyb3VwYnkKKyAgICAgKiBoYXMgc3RhcnRlZAorICAgICAqLworICAgIFB5T2JqZWN0ICp2YWx1ZTsKKyAgICBpZiAobHotPnRndGtleSAmJiBsei0+Y3VycmtleSAmJiBsei0+Y3VycnZhbHVlKQorICAgICAgICB2YWx1ZSA9IFB5X0J1aWxkVmFsdWUoIk8oT08pKE9PTykiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgICAgIGx6LT5pdCwgbHotPmtleWZ1bmMsIGx6LT5jdXJya2V5LCBsei0+Y3VycnZhbHVlLCBsei0+dGd0a2V5KTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgICAgIGx6LT5pdCwgbHotPmtleWZ1bmMpOworCisgICAgcmV0dXJuIHZhbHVlOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitncm91cGJ5X3NldHN0YXRlKGdyb3VwYnlvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKmN1cnJrZXksICpjdXJydmFsdWUsICp0Z3RrZXk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiT09PIiwgJmN1cnJrZXksICZjdXJydmFsdWUsICZ0Z3RrZXkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9DTEVBUihsei0+Y3VycmtleSk7CisgICAgbHotPmN1cnJrZXkgPSBjdXJya2V5OworICAgIFB5X0lOQ1JFRihsei0+Y3VycmtleSk7CisgICAgUHlfQ0xFQVIobHotPmN1cnJ2YWx1ZSk7CisgICAgbHotPmN1cnJ2YWx1ZSA9IGN1cnJ2YWx1ZTsKKyAgICBQeV9JTkNSRUYobHotPmN1cnJ2YWx1ZSk7CisgICAgUHlfQ0xFQVIobHotPnRndGtleSk7CisgICAgbHotPnRndGtleSA9IHRndGtleTsKKyAgICBQeV9JTkNSRUYobHotPnRndGtleSk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBncm91cGJ5X21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilncm91cGJ5X3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pZ3JvdXBieV9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGdyb3VwYnlfZG9jLAogImdyb3VwYnkoaXRlcmFibGVbLCBrZXlmdW5jXSkgLT4gY3JlYXRlIGFuIGl0ZXJhdG9yIHdoaWNoIHJldHVybnNcblwKIChrZXksIHN1Yi1pdGVyYXRvcikgZ3JvdXBlZCBieSBlYWNoIHZhbHVlIG9mIGtleSh2YWx1ZSkuXG4iKTsKQEAgLTE2OCw3ICsyMTUsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZ3JvdXBieV9uZXh0LCAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGdyb3VwYnlfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTk0LDYgKzI0MSwxNyBAQAogc3RhdGljIFB5VHlwZU9iamVjdCBfZ3JvdXBlcl90eXBlOwogCiBzdGF0aWMgUHlPYmplY3QgKgorX2dyb3VwZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpwYXJlbnQsICp0Z3RrZXk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hTyIsICZncm91cGJ5X3R5cGUsICZwYXJlbnQsICZ0Z3RrZXkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBfZ3JvdXBlcl9jcmVhdGUoKGdyb3VwYnlvYmplY3QqKSBwYXJlbnQsIHRndGtleSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBfZ3JvdXBlcl9jcmVhdGUoZ3JvdXBieW9iamVjdCAqcGFyZW50LCBQeU9iamVjdCAqdGd0a2V5KQogewogICAgIF9ncm91cGVyb2JqZWN0ICppZ287CkBAIC0yNjksNiArMzI3LDIwIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitfZ3JvdXBlcl9yZWR1Y2UoX2dyb3VwZXJvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAorICAgICAgICAgICAgbHotPnBhcmVudCwgbHotPnRndGtleSk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBfZ3JvdXBlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pX2dyb3VwZXJfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKKwogc3RhdGljIFB5VHlwZU9iamVjdCBfZ3JvdXBlcl90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJpdGVydG9vbHMuX2dyb3VwZXIiLCAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KQEAgLTI5OCw3ICszNzAsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpX2dyb3VwZXJfbmV4dCwgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIF9ncm91cGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMzA4LDcgKzM4MCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIF9ncm91cGVyX25ldywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKQEAgLTM0NCw3ICs0MTYsNyBAQAogc3RhdGljIFB5VHlwZU9iamVjdCB0ZWVkYXRhb2JqZWN0X3R5cGU7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi10ZWVkYXRhb2JqZWN0X25ldyhQeU9iamVjdCAqaXQpCit0ZWVkYXRhb2JqZWN0X25ld2ludGVybmFsKFB5T2JqZWN0ICppdCkKIHsKICAgICB0ZWVkYXRhb2JqZWN0ICp0ZG87CiAKQEAgLTM2NCw3ICs0MzYsNyBAQAogdGVlZGF0YW9iamVjdF9qdW1wbGluayh0ZWVkYXRhb2JqZWN0ICp0ZG8pCiB7CiAgICAgaWYgKHRkby0+bmV4dGxpbmsgPT0gTlVMTCkKLSAgICAgICAgdGRvLT5uZXh0bGluayA9IHRlZWRhdGFvYmplY3RfbmV3KHRkby0+aXQpOworICAgICAgICB0ZG8tPm5leHRsaW5rID0gdGVlZGF0YW9iamVjdF9uZXdpbnRlcm5hbCh0ZG8tPml0KTsKICAgICBQeV9YSU5DUkVGKHRkby0+bmV4dGxpbmspOwogICAgIHJldHVybiB0ZG8tPm5leHRsaW5rOwogfQpAQCAtNDIwLDExICs0OTIsODEgQEAKICAgICBQeU9iamVjdF9HQ19EZWwodGRvKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3RlZWRhdGFvYmplY3RfcmVkdWNlKHRlZWRhdGFvYmplY3QgKnRkbykKK3sKKyAgICBpbnQgaTsKKyAgICAvKiBjcmVhdGUgYSB0ZW1wb3JhcnkgbGlzdCBvZiBhbHJlYWR5IGl0ZXJhdGVkIHZhbHVlcyAqLworICAgIFB5T2JqZWN0ICp2YWx1ZXMgPSBQeUxpc3RfTmV3KHRkby0+bnVtcmVhZCk7CisgICAgaWYgKCF2YWx1ZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaT0wIDsgaTx0ZG8tPm51bXJlYWQgOyBpKyspIHsKKyAgICAgICAgUHlfSU5DUkVGKHRkby0+dmFsdWVzW2ldKTsKKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHZhbHVlcywgaSwgdGRvLT52YWx1ZXNbaV0pOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTk8pIiwgUHlfVFlQRSh0ZG8pLCB0ZG8tPml0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZG8tPm5leHRsaW5rID8gdGRvLT5uZXh0bGluayA6IFB5X05vbmUpOworfQorCitzdGF0aWMgUHlUeXBlT2JqZWN0IHRlZWRhdGFvYmplY3RfdHlwZTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3RlZWRhdGFvYmplY3RfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKK3sKKyAgICB0ZWVkYXRhb2JqZWN0ICp0ZG87CisgICAgUHlPYmplY3QgKml0LCAqdmFsdWVzLCAqbmV4dDsKKyAgICBQeV9zc2l6ZV90IGksIGxlbjsKKworICAgIGFzc2VydCh0eXBlID09ICZ0ZWVkYXRhb2JqZWN0X3R5cGUpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08hTyIsICZpdCwgJlB5TGlzdF9UeXBlLCAmdmFsdWVzLCAmbmV4dCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdGRvID0gKHRlZWRhdGFvYmplY3QgKil0ZWVkYXRhb2JqZWN0X25ld2ludGVybmFsKGl0KTsKKyAgICBpZiAoIXRkbykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodmFsdWVzKTsKKyAgICBpZiAobGVuID4gTElOS0NFTExTKQorICAgICAgICBnb3RvIGVycjsKKyAgICBmb3IgKGk9MDsgaTxsZW47IGkrKykgeworICAgICAgICB0ZG8tPnZhbHVlc1tpXSA9IFB5TGlzdF9HRVRfSVRFTSh2YWx1ZXMsIGkpOworICAgICAgICBQeV9JTkNSRUYodGRvLT52YWx1ZXNbaV0pOworICAgIH0KKyAgICAvKiBsZW4gPD0gTElOS0NFTExTIDwgSU5UX01BWCAqLworICAgIHRkby0+bnVtcmVhZCA9IFB5X1NBRkVfRE9XTkNBU1QobGVuLCBQeV9zc2l6ZV90LCBpbnQpOworCisgICAgaWYgKGxlbiA9PSBMSU5LQ0VMTFMpIHsKKyAgICAgICAgaWYgKG5leHQgIT0gUHlfTm9uZSkgeworICAgICAgICAgICAgaWYgKFB5X1RZUEUobmV4dCkgIT0gJnRlZWRhdGFvYmplY3RfdHlwZSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgIGFzc2VydCh0ZG8tPm5leHRsaW5rID09IE5VTEwpOworICAgICAgICAgICAgUHlfSU5DUkVGKG5leHQpOworICAgICAgICAgICAgdGRvLT5uZXh0bGluayA9IG5leHQ7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobmV4dCAhPSBQeV9Ob25lKQorICAgICAgICAgICAgZ290byBlcnI7IC8qIHNob3VsZG4ndCBoYXZlIGEgbmV4dCBpZiB3ZSBhcmUgbm90IGZ1bGwgKi8KKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCopdGRvOworCitlcnI6CisgICAgUHlfWERFQ1JFRih0ZG8pOworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBhcmd1bWVudHMiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIHRlZWRhdGFvYmplY3RfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXRlZWRhdGFvYmplY3RfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUih0ZWVkYXRhb2JqZWN0X2RvYywgIkRhdGEgY29udGFpbmVyIGNvbW1vbiB0byBtdWx0aXBsZSB0ZWUgb2JqZWN0cy4iKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCB0ZWVkYXRhb2JqZWN0X3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKDAsIDApICAgICAgICAgLyogTXVzdCBmaWxsIGluIHR5cGUgdmFsdWUgbGF0ZXIgKi8KLSAgICAiaXRlcnRvb2xzLnRlZV9kYXRhb2JqZWN0IiwgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAiaXRlcnRvb2xzLl90ZWVfZGF0YW9iamVjdCIsICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YodGVlZGF0YW9iamVjdCksICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCkBAIC00NTEsNyArNTkzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHRlZWRhdGFvYmplY3RfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC00NjEsNyArNjAzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICB0ZWVkYXRhb2JqZWN0X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIApAQCAtNTI4LDcgKzY3MCw3IEBACiAgICAgdG8gPSBQeU9iamVjdF9HQ19OZXcodGVlb2JqZWN0LCAmdGVlX3R5cGUpOwogICAgIGlmICh0byA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgdG8tPmRhdGFvYmogPSAodGVlZGF0YW9iamVjdCAqKXRlZWRhdGFvYmplY3RfbmV3KGl0KTsKKyAgICB0by0+ZGF0YW9iaiA9ICh0ZWVkYXRhb2JqZWN0ICopdGVlZGF0YW9iamVjdF9uZXdpbnRlcm5hbChpdCk7CiAgICAgaWYgKCF0by0+ZGF0YW9iaikgewogICAgICAgICBQeU9iamVjdF9HQ19EZWwodG8pOwogICAgICAgICB0byA9IE5VTEw7CkBAIC01NDgsNyArNjkwLDcgQEAKIHsKICAgICBQeU9iamVjdCAqaXRlcmFibGU7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0ZWUiLCAxLCAxLCAmaXRlcmFibGUpKQorICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIl90ZWUiLCAxLCAxLCAmaXRlcmFibGUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gdGVlX2Zyb21pdGVyYWJsZShpdGVyYWJsZSk7CiB9CkBAIC01NzAsMTcgKzcxMiw0MyBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCh0byk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0ZWVfcmVkdWNlKHRlZW9iamVjdCAqdG8pCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCkpKE9pKSIsIFB5X1RZUEUodG8pLCB0by0+ZGF0YW9iaiwgdG8tPmluZGV4KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RlZV9zZXRzdGF0ZSh0ZWVvYmplY3QgKnRvLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgdGVlZGF0YW9iamVjdCAqdGRvOworICAgIGludCBpbmRleDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPIWkiLCAmdGVlZGF0YW9iamVjdF90eXBlLCAmdGRvLCAmaW5kZXgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gTElOS0NFTExTKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiSW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9DTEVBUih0by0+ZGF0YW9iaik7CisgICAgdG8tPmRhdGFvYmogPSB0ZG87CisgICAgUHlfSU5DUkVGKHRvLT5kYXRhb2JqKTsKKyAgICB0by0+aW5kZXggPSBpbmRleDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKwogUHlEb2NfU1RSVkFSKHRlZW9iamVjdF9kb2MsCiAiSXRlcmF0b3Igd3JhcHBlZCB0byBtYWtlIGl0IGNvcHlhYmxlIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiB0ZWVfbWV0aG9kc1tdID0gewogICAgIHsiX19jb3B5X18iLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlZV9jb3B5LCAgTUVUSF9OT0FSR1MsIHRlZWNvcHlfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil0ZWVfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbil0ZWVfc2V0c3RhdGUsICAgIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCB0ZWVfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiaXRlcnRvb2xzLnRlZSIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIml0ZXJ0b29scy5fdGVlIiwgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZih0ZWVvYmplY3QpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwpAQCAtNjI2LDYgKzc5NCw3IEBACiB7CiAgICAgUHlfc3NpemVfdCBpLCBuPTI7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlcmFibGUsICpjb3B5YWJsZSwgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihfX2NvcHlfXyk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98biIsICZpdGVyYWJsZSwgJm4pKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTY0Myw3ICs4MTIsNyBAQAogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyhpdCwgIl9fY29weV9fIikpIHsKKyAgICBpZiAoIV9QeU9iamVjdF9IYXNBdHRySWQoaXQsICZQeUlkX19fY29weV9fKSkgewogICAgICAgICBjb3B5YWJsZSA9IHRlZV9mcm9taXRlcmFibGUoaXQpOwogICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICBpZiAoY29weWFibGUgPT0gTlVMTCkgewpAQCAtNjU0LDcgKzgyMyw4IEBACiAgICAgICAgIGNvcHlhYmxlID0gaXQ7CiAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIDAsIGNvcHlhYmxlKTsKICAgICBmb3IgKGk9MSA7IGk8biA7IGkrKykgewotICAgICAgICBjb3B5YWJsZSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoY29weWFibGUsICJfX2NvcHlfXyIsIE5VTEwpOworCisgICAgICAgIGNvcHlhYmxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChjb3B5YWJsZSwgJlB5SWRfX19jb3B5X18sIE5VTEwpOwogICAgICAgICBpZiAoY29weWFibGUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc2OSw2ICs5MzksMzggQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjeWNsZV9yZWR1Y2UoY3ljbGVvYmplY3QgKmx6KQoreworICAgIC8qIENyZWF0ZSBhIG5ldyBjeWNsZSB3aXRoIHRoZSBpdGVyYXRvciB0dXBsZSwgdGhlbiBzZXQKKyAgICAgKiB0aGUgc2F2ZWQgc3RhdGUgb24gaXQuCisgICAgICovCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTykoT2kpIiwgUHlfVFlQRShseiksIAorICAgICAgICBsei0+aXQsIGx6LT5zYXZlZCwgbHotPmZpcnN0cGFzcyk7CisgICAgfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3ljbGVfc2V0c3RhdGUoY3ljbGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKnNhdmVkPU5VTEw7CisgICAgaW50IGZpcnN0cGFzczsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPaSIsICZzYXZlZCwgJmZpcnN0cGFzcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0NMRUFSKGx6LT5zYXZlZCk7CisgICAgbHotPnNhdmVkID0gc2F2ZWQ7CisgICAgUHlfWElOQ1JFRihsei0+c2F2ZWQpOworICAgIGx6LT5maXJzdHBhc3MgPSBmaXJzdHBhc3MgIT0gMDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGN5Y2xlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljeWNsZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWN5Y2xlX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoY3ljbGVfZG9jLAogImN5Y2xlKGl0ZXJhYmxlKSAtLT4gY3ljbGUgb2JqZWN0XG5cCiBcblwKQEAgLTgwNSw3ICsxMDA3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWN5Y2xlX25leHQsICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBjeWNsZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTkxMyw2ICsxMTE1LDMxIEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZHJvcHdoaWxlX3JlZHVjZShkcm9wd2hpbGVvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsei0+ZnVuYywgbHotPml0LCBsei0+c3RhcnQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZHJvcHdoaWxlX3NldHN0YXRlKGRyb3B3aGlsZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBpbnQgc3RhcnQgPSBQeU9iamVjdF9Jc1RydWUoc3RhdGUpOworICAgIGlmIChzdGFydCA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGx6LT5zdGFydCA9IHN0YXJ0OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgZHJvcHdoaWxlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilkcm9wd2hpbGVfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilkcm9wd2hpbGVfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihkcm9wd2hpbGVfZG9jLAogImRyb3B3aGlsZShwcmVkaWNhdGUsIGl0ZXJhYmxlKSAtLT4gZHJvcHdoaWxlIG9iamVjdFxuXAogXG5cCkBAIC05NDksNyArMTE3Niw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylkcm9wd2hpbGVfbmV4dCwgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgZHJvcHdoaWxlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTA0NSw3ICsxMjcyLDcgQEAKICAgICB9CiAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoZ29vZCk7CiAgICAgUHlfREVDUkVGKGdvb2QpOwotICAgIGlmIChvayA+IDApCisgICAgaWYgKG9rID09IDEpCiAgICAgICAgIHJldHVybiBpdGVtOwogICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICBpZiAob2sgPT0gMCkKQEAgLTEwNTMsNiArMTI4MCwzMCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGFrZXdoaWxlX3JlZHVjZSh0YWtld2hpbGVvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsei0+ZnVuYywgbHotPml0LCBsei0+c3RvcCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0YWtld2hpbGVfcmVkdWNlX3NldHN0YXRlKHRha2V3aGlsZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBpbnQgc3RvcCA9IFB5T2JqZWN0X0lzVHJ1ZShzdGF0ZSk7CisgICAgaWYgKHN0b3AgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsei0+c3RvcCA9IHN0b3A7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiB0YWtld2hpbGVfcmVkdWNlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil0YWtld2hpbGVfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbil0YWtld2hpbGVfcmVkdWNlX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OwogUHlEb2NfU1RSVkFSKHRha2V3aGlsZV9kb2MsCiAidGFrZXdoaWxlKHByZWRpY2F0ZSwgaXRlcmFibGUpIC0tPiB0YWtld2hpbGUgb2JqZWN0XG5cCiBcblwKQEAgLTEwODksNyArMTM0MCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyl0YWtld2hpbGVfbmV4dCwgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgdGFrZXdoaWxlX3JlZHVjZV9tZXRob2RzLCAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0xMjQ1LDYgKzE0OTYsNDQgQEAKICAgICByZXR1cm4gaXRlbTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2lzbGljZV9yZWR1Y2UoaXNsaWNlb2JqZWN0ICpseikKK3sKKyAgICAvKiBXaGVuIHVucGlja2xlZCwgZ2VuZXJhdGUgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYm91bmRzLAorICAgICAqIHRoZW4gJ3NldHN0YXRlJyB3aXRoIHRoZSBuZXh0IGFuZCBjb3VudAorICAgICAqLworICAgIFB5T2JqZWN0ICpzdG9wOworICAgIGlmIChsei0+c3RvcCA9PSAtMSkgeworICAgICAgICBzdG9wID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKHN0b3ApOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0b3AgPSBQeUxvbmdfRnJvbVNzaXplX3QobHotPnN0b3ApOworICAgICAgICBpZiAoc3RvcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uTm4pbiIsIFB5X1RZUEUobHopLAorICAgICAgICBsei0+aXQsIGx6LT5uZXh0LCBzdG9wLCBsei0+c3RlcCwKKyAgICAgICAgbHotPmNudCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitpc2xpY2Vfc2V0c3RhdGUoaXNsaWNlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgY250ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisgICAgaWYgKGNudCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsei0+Y250ID0gY250OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgaXNsaWNlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilpc2xpY2VfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilpc2xpY2Vfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihpc2xpY2VfZG9jLAogImlzbGljZShpdGVyYWJsZSwgW3N0YXJ0LF0gc3RvcCBbLCBzdGVwXSkgLS0+IGlzbGljZSBvYmplY3RcblwKIFxuXApAQCAtMTI4NSw3ICsxNTc0LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWlzbGljZV9uZXh0LCAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBpc2xpY2VfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTEzODAsNiArMTY2OSwxOSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitzdGFybWFwX3JlZHVjZShzdGFybWFwb2JqZWN0ICpseikKK3sKKyAgICAvKiBKdXN0IHBpY2tsZSB0aGUgaXRlcmF0b3IgKi8KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwgbHotPmZ1bmMsIGx6LT5pdCk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBzdGFybWFwX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilzdGFybWFwX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoc3Rhcm1hcF9kb2MsCiAic3Rhcm1hcChmdW5jdGlvbiwgc2VxdWVuY2UpIC0tPiBzdGFybWFwIG9iamVjdFxuXAogXG5cCkBAIC0xNDE2LDcgKzE3MTgsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpc3Rhcm1hcF9uZXh0LCAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHN0YXJtYXBfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTUzNSw2ICsxODM3LDQxIEBACiAgICAgcmV0dXJuIGNoYWluX25leHQobHopOyAgICAgICAgICAgICAgICAgICAgICAvKiByZWN1cnNlIGFuZCB1c2UgbmV4dCBhY3RpdmUgKi8KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2NoYWluX3JlZHVjZShjaGFpbm9iamVjdCAqbHopCit7CisgICAgaWYgKGx6LT5zb3VyY2UpIHsKKyAgICAgICAgLyogd2UgY2FuJ3QgcGlja2xlIGZ1bmN0aW9uIG9iamVjdHMgKGl0ZXJ0b29scy5mcm9tX2l0ZXJhYmxlKSBzbworICAgICAgICAgKiB3ZSBtdXN0IHVzZSBzZXRzdGF0ZSB0byByZXBsYWNlIHRoZSBpdGVyYWJsZS4gIE9uZSBkYXkgd2UKKyAgICAgICAgICogd2lsbCBmaXggcGlja2xpbmcgb2YgZnVuY3Rpb25zCisgICAgICAgICAqLworICAgICAgICBpZiAobHotPmFjdGl2ZSkgeworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKShPTykiLCBQeV9UWVBFKGx6KSwgbHotPnNvdXJjZSwgbHotPmFjdGl2ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygpKE8pIiwgUHlfVFlQRShseiksIGx6LT5zb3VyY2UpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKSIsIFB5X1RZUEUobHopKTsgLyogZXhoYXVzdGVkICovCisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY2hhaW5fc2V0c3RhdGUoY2hhaW5vYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKnNvdXJjZSwgKmFjdGl2ZT1OVUxMOworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPfE8iLCAmc291cmNlLCAmYWN0aXZlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9DTEVBUihsei0+c291cmNlKTsKKyAgICBsei0+c291cmNlID0gc291cmNlOworICAgIFB5X0lOQ1JFRihsei0+c291cmNlKTsKKyAgICBQeV9DTEVBUihsei0+YWN0aXZlKTsKKyAgICBsei0+YWN0aXZlID0gYWN0aXZlOworICAgIFB5X1hJTkNSRUYobHotPmFjdGl2ZSk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKIFB5RG9jX1NUUlZBUihjaGFpbl9kb2MsCiAiY2hhaW4oKml0ZXJhYmxlcykgLS0+IGNoYWluIG9iamVjdFxuXAogXG5cCkBAIC0xNTUxLDYgKzE4ODgsMTAgQEAKIHN0YXRpYyBQeU1ldGhvZERlZiBjaGFpbl9tZXRob2RzW10gPSB7CiAgICAgeyJmcm9tX2l0ZXJhYmxlIiwgKFB5Q0Z1bmN0aW9uKSBjaGFpbl9uZXdfZnJvbV9pdGVyYWJsZSwgICAgICAgICAgICBNRVRIX08gfCBNRVRIX0NMQVNTLAogICAgICAgICBjaGFpbl9mcm9tX2l0ZXJhYmxlX2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY2hhaW5fcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbiljaGFpbl9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTc5MSw2ICsyMTMyLDgzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitwcm9kdWN0X3JlZHVjZShwcm9kdWN0b2JqZWN0ICpseikKK3sKKyAgICBpZiAobHotPnN0b3BwZWQpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCkpIiwgUHlfVFlQRShseikpOworICAgIH0gZWxzZSBpZiAobHotPnJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPTyIsIFB5X1RZUEUobHopLCBsei0+cG9vbHMpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICppbmRpY2VzOworICAgICAgICBQeV9zc2l6ZV90IG4sIGk7CisKKyAgICAgICAgLyogd2UgbXVzdCBwaWNrbGUgdGhlIGluZGljZXMgdXNlIHRoZW0gZm9yIHNldHN0YXRlLCBhbmQKKyAgICAgICAgICogYWRkaXRpb25hbGx5IGluZGljYXRlIHRoYXQgdGhlIGl0ZXJhdG9yIGhhcyBzdGFydGVkCisgICAgICAgICAqLworICAgICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbHMpOworICAgICAgICBpbmRpY2VzID0gUHlUdXBsZV9OZXcobik7CisgICAgICAgIGlmIChpbmRpY2VzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZm9yIChpPTA7IGk8bjsgaSsrKXsKKyAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChsei0+aW5kaWNlc1tpXSk7CisgICAgICAgICAgICBpZiAoIWluZGV4KSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGluZGljZXMpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbmRpY2VzLCBpLCBpbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk9PTiIsIFB5X1RZUEUobHopLCBsei0+cG9vbHMsIGluZGljZXMpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Byb2R1Y3Rfc2V0c3RhdGUocHJvZHVjdG9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5X3NzaXplX3QgbiwgaTsKKworICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29scyk7CisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHN0YXRlKSB8fCBQeVR1cGxlX0dFVF9TSVpFKHN0YXRlKSAhPSBuKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGZvciAoaT0wOyBpPG47IGkrKykKKyAgICB7CisgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpOworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLworICAgICAgICAvKiBjbGFtcCB0aGUgaW5kZXggKi8KKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBuLTEpCisgICAgICAgICAgICBpbmRleCA9IG4tMTsKKyAgICAgICAgbHotPmluZGljZXNbaV0gPSBpbmRleDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhuKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8bjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpwb29sID0gUHlUdXBsZV9HRVRfSVRFTShsei0+cG9vbHMsIGkpOworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IFB5VHVwbGVfR0VUX0lURU0ocG9vbCwgbHotPmluZGljZXNbaV0pOworICAgICAgICBQeV9JTkNSRUYoZWxlbWVudCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBlbGVtZW50KTsKKyAgICB9CisgICAgUHlfQ0xFQVIobHotPnJlc3VsdCk7CisgICAgbHotPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIHByb2R1Y3RfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXByb2R1Y3RfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilwcm9kdWN0X3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIocHJvZHVjdF9kb2MsCiAicHJvZHVjdCgqaXRlcmFibGVzKSAtLT4gcHJvZHVjdCBvYmplY3RcblwKIFxuXApAQCAtMTgzNSw3ICsyMjUzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXByb2R1Y3RfbmV4dCwgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBwcm9kdWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTIwMjIsNiArMjQ0MCw4NiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY29tYmluYXRpb25zX3JlZHVjZShjb21iaW5hdGlvbnNvYmplY3QgKmx6KQoreworICAgIGlmIChsei0+cmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShseiksIGx6LT5wb29sLCBsei0+cik7CisgICAgfSBlbHNlIGlmIChsei0+c3RvcHBlZCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygoKW4pIiwgUHlfVFlQRShseiksIGx6LT5yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqaW5kaWNlczsKKyAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgIC8qIHdlIG11c3QgcGlja2xlIHRoZSBpbmRpY2VzIGFuZCB1c2UgdGhlbSBmb3Igc2V0c3RhdGUgKi8KKyAgICAgICAgaW5kaWNlcyA9IFB5VHVwbGVfTmV3KGx6LT5yKTsKKyAgICAgICAgaWYgKCFpbmRpY2VzKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChsei0+aW5kaWNlc1tpXSk7CisgICAgICAgICAgICBpZiAoIWluZGV4KSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGluZGljZXMpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbmRpY2VzLCBpLCBpbmRleCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbilOIiwgUHlfVFlQRShseiksIGx6LT5wb29sLCBsei0+ciwgaW5kaWNlcyk7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29tYmluYXRpb25zX3NldHN0YXRlKGNvbWJpbmF0aW9uc29iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29sKTsKKworICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbHotPnIpCisgICAgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspCisgICAgeworICAgICAgICBQeV9zc2l6ZV90IG1heDsKKyAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSk7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgLyogbm90IGFuIGludGVnZXIgKi8KKyAgICAgICAgbWF4ID0gaSArIG4gLSBsei0+cjsKKyAgICAgICAgLyogY2xhbXAgdGhlIGluZGV4IChiZXdhcmUgb2YgbmVnYXRpdmUgbWF4KSAqLworICAgICAgICBpZiAoaW5kZXggPiBtYXgpCisgICAgICAgICAgICBpbmRleCA9IG1heDsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgbHotPmluZGljZXNbaV0gPSBpbmRleDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhsei0+cik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gUHlUdXBsZV9HRVRfSVRFTShsei0+cG9vbCwgbHotPmluZGljZXNbaV0pOworICAgICAgICBQeV9JTkNSRUYoZWxlbWVudCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBlbGVtZW50KTsKKyAgICB9CisKKyAgICBQeV9DTEVBUihsei0+cmVzdWx0KTsKKyAgICBsei0+cmVzdWx0ID0gcmVzdWx0OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgY29tYmluYXRpb25zX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljb21iaW5hdGlvbnNfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbiljb21iaW5hdGlvbnNfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihjb21iaW5hdGlvbnNfZG9jLAogImNvbWJpbmF0aW9ucyhpdGVyYWJsZSwgcikgLS0+IGNvbWJpbmF0aW9ucyBvYmplY3RcblwKIFxuXApAQCAtMjAzMCwxMSArMjUyOCwxMSBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGNvbWJpbmF0aW9uc190eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJpdGVydG9vbHMuY29tYmluYXRpb25zIiwgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJpdGVydG9vbHMuY29tYmluYXRpb25zIiwgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoY29tYmluYXRpb25zb2JqZWN0KSwgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvciljb21iaW5hdGlvbnNfZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3Rvciljb21iaW5hdGlvbnNfZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtMjA1MSwxNCArMjU0OSwxNCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CiAgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICBjb21iaW5hdGlvbnNfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpY29tYmluYXRpb25zX3RyYXZlcnNlLCAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICBjb21iaW5hdGlvbnNfZG9jLCAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWNvbWJpbmF0aW9uc190cmF2ZXJzZSwvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAoaXRlcm5leHRmdW5jKWNvbWJpbmF0aW9uc19uZXh0LCAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIChpdGVybmV4dGZ1bmMpY29tYmluYXRpb25zX25leHQsICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgY29tYmluYXRpb25zX21ldGhvZHMsICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0yMDY4LDcgKzI1NjYsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBjb21iaW5hdGlvbnNfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIGNvbWJpbmF0aW9uc19uZXcsICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKQEAgLTIyNjcsNiArMjc2NSw4MiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY3dyX3JlZHVjZShjd3JvYmplY3QgKmx6KQoreworICAgIGlmIChsei0+cmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShseiksIGx6LT5wb29sLCBsei0+cik7CisgICAgfSBlbHNlIGlmIChsei0+c3RvcHBlZCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygoKW4pIiwgUHlfVFlQRShseiksIGx6LT5yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqaW5kaWNlczsKKyAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgIC8qIHdlIG11c3QgcGlja2xlIHRoZSBpbmRpY2VzIGFuZCB1c2UgdGhlbSBmb3Igc2V0c3RhdGUgKi8KKyAgICAgICAgaW5kaWNlcyA9IFB5VHVwbGVfTmV3KGx6LT5yKTsKKyAgICAgICAgaWYgKCFpbmRpY2VzKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChsei0+aW5kaWNlc1tpXSk7CisgICAgICAgICAgICBpZiAoIWluZGV4KSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGluZGljZXMpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbmRpY2VzLCBpLCBpbmRleCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbilOIiwgUHlfVFlQRShseiksIGx6LT5wb29sLCBsei0+ciwgaW5kaWNlcyk7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3dyX3NldHN0YXRlKGN3cm9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5X3NzaXplX3QgbiwgaTsKKworICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbHotPnIpCisgICAgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29sKTsKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQorICAgIHsKKyAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSk7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCisgICAgICAgIC8qIGNsYW1wIHRoZSBpbmRleCAqLworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBlbHNlIGlmIChpbmRleCA+IG4tMSkKKyAgICAgICAgICAgIGluZGV4ID0gbi0xOworICAgICAgICBsei0+aW5kaWNlc1tpXSA9IGluZGV4OworICAgIH0KKyAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhsei0+cik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gUHlUdXBsZV9HRVRfSVRFTShsei0+cG9vbCwgbHotPmluZGljZXNbaV0pOworICAgICAgICBQeV9JTkNSRUYoZWxlbWVudCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBlbGVtZW50KTsKKyAgICB9CisgICAgUHlfQ0xFQVIobHotPnJlc3VsdCk7CisgICAgbHotPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGN3cl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY3dyX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pY3dyX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoY3dyX2RvYywKICJjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudChpdGVyYWJsZSwgcikgLS0+IGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50IG9iamVjdFxuXAogXG5cCkBAIC0yMjc2LDExICsyODUwLDExIEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgY3dyX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIml0ZXJ0b29scy5jb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCIsICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihjd3JvYmplY3QpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgICJpdGVydG9vbHMuY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQiLCAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKGN3cm9iamVjdCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvciljd3JfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpY3dyX2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCkBAIC0yMjkyLDE5ICsyODY2LDE5IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAotICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgY3dyX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWN3cl90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIGN3cl9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWN3cl90cmF2ZXJzZSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgKGl0ZXJuZXh0ZnVuYyljd3JfbmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpY3dyX25leHQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGN3cl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTIzMTQsOCArMjg4OCw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIGN3cl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi0gICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIGN3cl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogCkBAIC0yNTM5LDYgKzMxMTMsMTE1IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitwZXJtdXRhdGlvbnNfcmVkdWNlKHBlcm11dGF0aW9uc29iamVjdCAqcG8pCit7CisgICAgaWYgKHBvLT5yZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbikiLCBQeV9UWVBFKHBvKSwgcG8tPnBvb2wsIHBvLT5yKTsKKyAgICB9IGVsc2UgaWYgKHBvLT5zdG9wcGVkKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCgpbikiLCBQeV9UWVBFKHBvKSwgcG8tPnIpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICppbmRpY2VzPU5VTEwsICpjeWNsZXM9TlVMTDsKKyAgICAgICAgUHlfc3NpemVfdCBuLCBpOworCisgICAgICAgIC8qIHdlIG11c3QgcGlja2xlIHRoZSBpbmRpY2VzIGFuZCBjeWNsZXMgYW5kIHVzZSB0aGVtIGZvciBzZXRzdGF0ZSAqLworICAgICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShwby0+cG9vbCk7CisgICAgICAgIGluZGljZXMgPSBQeVR1cGxlX05ldyhuKTsKKyAgICAgICAgaWYgKGluZGljZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICBmb3IgKGk9MDsgaTxuOyBpKyspeworICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHBvLT5pbmRpY2VzW2ldKTsKKyAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGluZGljZXMsIGksIGluZGV4KTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGN5Y2xlcyA9IFB5VHVwbGVfTmV3KHBvLT5yKTsKKyAgICAgICAgaWYgKGN5Y2xlcyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChwby0+Y3ljbGVzW2ldKTsKKyAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGN5Y2xlcywgaSwgaW5kZXgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKShOTikiLCBQeV9UWVBFKHBvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG8tPnBvb2wsIHBvLT5yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBjeWNsZXMpOworICAgIGVycjoKKyAgICAgICAgUHlfWERFQ1JFRihpbmRpY2VzKTsKKyAgICAgICAgUHlfWERFQ1JFRihjeWNsZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitwZXJtdXRhdGlvbnNfc2V0c3RhdGUocGVybXV0YXRpb25zb2JqZWN0ICpwbywgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICppbmRpY2VzLCAqY3ljbGVzLCAqcmVzdWx0OworICAgIFB5X3NzaXplX3QgbiwgaTsKKyAgICAKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPIU8hIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VHVwbGVfVHlwZSwgJmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZQeVR1cGxlX1R5cGUsICZjeWNsZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKHBvLT5wb29sKTsKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShpbmRpY2VzKSAhPSBuIHx8CisgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoY3ljbGVzKSAhPSBwby0+cikKKyAgICB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpPTA7IGk8bjsgaSsrKQorICAgIHsKKyAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShpbmRpY2VzLCBpKTsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworICAgICAgICBpZiAoaW5kZXggPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgLyogbm90IGFuIGludGVnZXIgKi8KKyAgICAgICAgLyogY2xhbXAgdGhlIGluZGV4ICovCisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIGVsc2UgaWYgKGluZGV4ID4gbi0xKQorICAgICAgICAgICAgaW5kZXggPSBuLTE7CisgICAgICAgIHBvLT5pbmRpY2VzW2ldID0gaW5kZXg7CisgICAgfQorCisgICAgZm9yIChpPTA7IGk8cG8tPnI7IGkrKykKKyAgICB7CisgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oY3ljbGVzLCBpKTsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworICAgICAgICBpZiAoaW5kZXggPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgLyogbm90IGFuIGludGVnZXIgKi8KKyAgICAgICAgaWYgKGluZGV4IDwgMSkKKyAgICAgICAgICAgIGluZGV4ID0gMTsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBuLWkpCisgICAgICAgICAgICBpbmRleCA9IG4taTsKKyAgICAgICAgcG8tPmN5Y2xlc1tpXSA9IGluZGV4OworICAgIH0KKyAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhwby0+cik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGk9MDsgaTxwby0+cjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gUHlUdXBsZV9HRVRfSVRFTShwby0+cG9vbCwgcG8tPmluZGljZXNbaV0pOworICAgICAgICBQeV9JTkNSRUYoZWxlbWVudCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBlbGVtZW50KTsKKyAgICB9CisgICAgUHlfQ0xFQVIocG8tPnJlc3VsdCk7CisgICAgcG8tPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIHBlcm11YXRpb25zX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilwZXJtdXRhdGlvbnNfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilwZXJtdXRhdGlvbnNfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihwZXJtdXRhdGlvbnNfZG9jLAogInBlcm11dGF0aW9ucyhpdGVyYWJsZVssIHJdKSAtLT4gcGVybXV0YXRpb25zIG9iamVjdFxuXAogXG5cCkBAIC0yNTc1LDcgKzMyNTgsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpcGVybXV0YXRpb25zX25leHQsICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgcGVybXVhdGlvbnNfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0yNTk1LDYgKzMyNzgsNyBAQAogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqdG90YWw7CiAgICAgUHlPYmplY3QgKml0OworICAgIFB5T2JqZWN0ICpiaW5vcDsKIH0gYWNjdW11bGF0ZW9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBhY2N1bXVsYXRlX3R5cGU7CkBAIC0yNjAyLDEyICszMjg2LDE0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYWNjdW11bGF0ZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3YXJnc1tdID0geyJpdGVyYWJsZSIsIE5VTEx9OworICAgIHN0YXRpYyBjaGFyICprd2FyZ3NbXSA9IHsiaXRlcmFibGUiLCAiZnVuYyIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICppdGVyYWJsZTsKICAgICBQeU9iamVjdCAqaXQ7CisgICAgUHlPYmplY3QgKmJpbm9wID0gUHlfTm9uZTsKICAgICBhY2N1bXVsYXRlb2JqZWN0ICpsejsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPOmFjY3VtdWxhdGUiLCBrd2FyZ3MsICZpdGVyYWJsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzphY2N1bXVsYXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MsICZpdGVyYWJsZSwgJmJpbm9wKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBHZXQgaXRlcmF0b3IuICovCkBAIC0yNjIyLDYgKzMzMDgsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKGJpbm9wICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlfWElOQ1JFRihiaW5vcCk7CisgICAgICAgIGx6LT5iaW5vcCA9IGJpbm9wOworICAgIH0KICAgICBsei0+dG90YWwgPSBOVUxMOwogICAgIGx6LT5pdCA9IGl0OwogICAgIHJldHVybiAoUHlPYmplY3QgKilsejsKQEAgLTI2MzEsNiArMzMyMSw3IEBACiBhY2N1bXVsYXRlX2RlYWxsb2MoYWNjdW11bGF0ZW9iamVjdCAqbHopCiB7CiAgICAgUHlPYmplY3RfR0NfVW5UcmFjayhseik7CisgICAgUHlfWERFQ1JFRihsei0+Ymlub3ApOwogICAgIFB5X1hERUNSRUYobHotPnRvdGFsKTsKICAgICBQeV9YREVDUkVGKGx6LT5pdCk7CiAgICAgUHlfVFlQRShseiktPnRwX2ZyZWUobHopOwpAQCAtMjYzOSw2ICszMzMwLDcgQEAKIHN0YXRpYyBpbnQKIGFjY3VtdWxhdGVfdHJhdmVyc2UoYWNjdW11bGF0ZW9iamVjdCAqbHosIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogeworICAgIFB5X1ZJU0lUKGx6LT5iaW5vcCk7CiAgICAgUHlfVklTSVQobHotPml0KTsKICAgICBQeV9WSVNJVChsei0+dG90YWwpOwogICAgIHJldHVybiAwOwpAQCAtMjY1OCw4ICszMzUwLDExIEBACiAgICAgICAgIGx6LT50b3RhbCA9IHZhbDsKICAgICAgICAgcmV0dXJuIGx6LT50b3RhbDsKICAgICB9Ci0gICAKLSAgICBuZXd0b3RhbCA9IFB5TnVtYmVyX0FkZChsei0+dG90YWwsIHZhbCk7CisKKyAgICBpZiAobHotPmJpbm9wID09IE5VTEwpIAorICAgICAgICBuZXd0b3RhbCA9IFB5TnVtYmVyX0FkZChsei0+dG90YWwsIHZhbCk7CisgICAgZWxzZQorICAgICAgICBuZXd0b3RhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MobHotPmJpbm9wLCBsei0+dG90YWwsIHZhbCwgTlVMTCk7CiAgICAgUHlfREVDUkVGKHZhbCk7CiAgICAgaWYgKG5ld3RvdGFsID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjY3MiwxMCArMzM2NywzNSBAQAogICAgIHJldHVybiBuZXd0b3RhbDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2FjY3VtdWxhdGVfcmVkdWNlKGFjY3VtdWxhdGVvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKU8iLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsei0+aXQsIGx6LT5iaW5vcD9sei0+Ymlub3A6UHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsei0+dG90YWw/bHotPnRvdGFsOlB5X05vbmUpOworIH0KKworc3RhdGljIFB5T2JqZWN0ICoKK2FjY3VtdWxhdGVfc2V0c3RhdGUoYWNjdW11bGF0ZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9DTEVBUihsei0+dG90YWwpOworICAgIGx6LT50b3RhbCA9IHN0YXRlOworICAgIFB5X0lOQ1JFRihsei0+dG90YWwpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgYWNjdW11bGF0ZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pYWNjdW11bGF0ZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWFjY3VtdWxhdGVfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihhY2N1bXVsYXRlX2RvYywKLSJhY2N1bXVsYXRlKGl0ZXJhYmxlKSAtLT4gYWNjdW11bGF0ZSBvYmplY3RcblwKKyJhY2N1bXVsYXRlKGl0ZXJhYmxlWywgZnVuY10pIC0tPiBhY2N1bXVsYXRlIG9iamVjdFxuXAogXG5cCi1SZXR1cm4gc2VyaWVzIG9mIGFjY3VtdWxhdGVkIHN1bXMuIik7CitSZXR1cm4gc2VyaWVzIG9mIGFjY3VtdWxhdGVkIHN1bXMgKG9yIG90aGVyIGJpbmFyeSBmdW5jdGlvbiByZXN1bHRzKS4iKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBhY2N1bXVsYXRlX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCkBAIC0yNzA3LDcgKzM0MjcsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpYWNjdW11bGF0ZV9uZXh0LCAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGFjY3VtdWxhdGVfbWV0aG9kcywgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMjgxOSwxMSArMzUzOSwyNCBAQAogICAgICAgICBpZiAob2sgPT0gMSkKICAgICAgICAgICAgIHJldHVybiBkYXR1bTsKICAgICAgICAgUHlfREVDUkVGKGRhdHVtKTsKLSAgICAgICAgaWYgKG9rID09IC0xKQorICAgICAgICBpZiAob2sgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY29tcHJlc3NfcmVkdWNlKGNvbXByZXNzb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgbHotPmRhdGEsIGx6LT5zZWxlY3RvcnMpOworICAgIH0KKworc3RhdGljIFB5TWV0aG9kRGVmIGNvbXByZXNzX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljb21wcmVzc19yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGNvbXByZXNzX2RvYywKICJjb21wcmVzcyhkYXRhLCBzZWxlY3RvcnMpIC0tPiBpdGVyYXRvciBvdmVyIHNlbGVjdGVkIGRhdGFcblwKIFxuXApAQCAtMjg2MSw3ICszNTk0LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWNvbXByZXNzX25leHQsICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGNvbXByZXNzX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0yOTcwLDYgKzM3MDMsMTkgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitmaWx0ZXJmYWxzZV9yZWR1Y2UoZmlsdGVyZmFsc2VvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAorICAgICAgICBsei0+ZnVuYywgbHotPml0KTsKKyAgICB9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBmaWx0ZXJmYWxzZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pZmlsdGVyZmFsc2VfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihmaWx0ZXJmYWxzZV9kb2MsCiAiZmlsdGVyZmFsc2UoZnVuY3Rpb24gb3IgTm9uZSwgc2VxdWVuY2UpIC0tPiBmaWx0ZXJmYWxzZSBvYmplY3RcblwKIFxuXApAQCAtMzAwNiw3ICszNzUyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWZpbHRlcmZhbHNlX25leHQsICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBmaWx0ZXJmYWxzZV9tZXRob2RzLCAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTMyMDAsMTEgKzM5NDYsOSBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKG4pIiwgUHlfVFlQRShseiksIGx6LT5jbnQpOwogfQogCi1QeURvY19TVFJWQVIoY291bnRfcmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7Ci0KIHN0YXRpYyBQeU1ldGhvZERlZiBjb3VudF9tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY291bnRfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAotICAgICBjb3VudF9yZWR1Y2VfZG9jfSwKKyAgICAgcmVkdWNlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0zMzQ1LDggKzQwODksMjEgQEAKIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorcmVwZWF0X3JlZHVjZShyZXBlYXRvYmplY3QgKnJvKQoreworICAgIC8qIHVucGlja2xlIHRoaXMgc28gdGhhdCBhIG5ldyByZXBlYXQgaXRlcmF0b3IgaXMgY29uc3RydWN0ZWQgd2l0aCBhbgorICAgICAqIG9iamVjdCwgdGhlbiBjYWxsIF9fc2V0c3RhdGVfXyBvbiBpdCB0byBzZXQgY250CisgICAgICovCisgICAgaWYgKHJvLT5jbnQgPj0gMCkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShybyksIHJvLT5lbGVtZW50LCByby0+Y250KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pIiwgUHlfVFlQRShybyksIHJvLT5lbGVtZW50KTsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIHJlcGVhdF9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pcmVwZWF0X2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pcmVwZWF0X3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0zNTcyLDYgKzQzMjksNDkgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgoremlwX2xvbmdlc3RfcmVkdWNlKHppcGxvbmdlc3RvYmplY3QgKmx6KQoreworICAgIAorICAgIC8qIENyZWF0ZSBhIG5ldyB0dXBsZSB3aXRoIGVtcHR5IHNlcXVlbmNlcyB3aGVyZSBhcHByb3ByaWF0ZSB0byBwaWNrbGUuCisgICAgICogVGhlbiB1c2Ugc2V0c3RhdGUgdG8gc2V0IHRoZSBmaWxsdmFsdWUKKyAgICAgKi8KKyAgICBpbnQgaTsKKyAgICBQeU9iamVjdCAqYXJncyA9IFB5VHVwbGVfTmV3KFB5VHVwbGVfR0VUX1NJWkUobHotPml0dHVwbGUpKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGk9MDsgaTxQeVR1cGxlX0dFVF9TSVpFKGx6LT5pdHR1cGxlKTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtID0gUHlUdXBsZV9HRVRfSVRFTShsei0+aXR0dXBsZSwgaSk7CisgICAgICAgIGlmIChlbGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgICAgIGlmIChlbGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIGksIGVsZW0pOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT05PIiwgUHlfVFlQRShseiksIGFyZ3MsIGx6LT5maWxsdmFsdWUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgoremlwX2xvbmdlc3Rfc2V0c3RhdGUoemlwbG9uZ2VzdG9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9DTEVBUihsei0+ZmlsbHZhbHVlKTsKKyAgICBsei0+ZmlsbHZhbHVlID0gc3RhdGU7CisgICAgUHlfSU5DUkVGKGx6LT5maWxsdmFsdWUpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgemlwX2xvbmdlc3RfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXppcF9sb25nZXN0X3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pemlwX2xvbmdlc3Rfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUih6aXBfbG9uZ2VzdF9kb2MsCiAiemlwX2xvbmdlc3QoaXRlcjEgWyxpdGVyMiBbLi4uXV0sIFtmaWxsdmFsdWU9Tm9uZV0pIC0tPiB6aXBfbG9uZ2VzdCBvYmplY3RcblwKIFxuXApAQCAtMzYxMyw3ICs0NDEzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXppcF9sb25nZXN0X25leHQsICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICB6aXBfbG9uZ2VzdF9tZXRob2RzLCAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTM2MzgsNyArNDQzOCw3IEBACiByZXBlYXQoZWxlbSBbLG5dKSAtLT4gZWxlbSwgZWxlbSwgZWxlbSwgLi4uIGVuZGxlc3NseSBvciB1cCB0byBuIHRpbWVzXG5cCiBcblwKIEl0ZXJhdG9ycyB0ZXJtaW5hdGluZyBvbiB0aGUgc2hvcnRlc3QgaW5wdXQgc2VxdWVuY2U6XG5cCi1hY2N1bXVsYXRlKHAsIHN0YXJ0PTApIC0tPiBwMCwgcDArcDEsIHAwK3AxK3AyXG5cCithY2N1bXVsYXRlKHBbLCBmdW5jXSkgLS0+IHAwLCBwMCtwMSwgcDArcDErcDJcblwKIGNoYWluKHAsIHEsIC4uLikgLS0+IHAwLCBwMSwgLi4uIHBsYXN0LCBxMCwgcTEsIC4uLiBcblwKIGNvbXByZXNzKGRhdGEsIHNlbGVjdG9ycykgLS0+IChkWzBdIGlmIHNbMF0pLCAoZFsxXSBpZiBzWzFdKSwgLi4uXG5cCiBkcm9wd2hpbGUocHJlZCwgc2VxKSAtLT4gc2VxW25dLCBzZXFbbisxXSwgc3RhcnRpbmcgd2hlbiBwcmVkIGZhaWxzXG5cCkBAIC0zNzAxLDYgKzQ1MDEsOSBAQAogICAgICAgICAmcHJvZHVjdF90eXBlLAogICAgICAgICAmcmVwZWF0X3R5cGUsCiAgICAgICAgICZncm91cGJ5X3R5cGUsCisgICAgICAgICZfZ3JvdXBlcl90eXBlLAorICAgICAgICAmdGVlX3R5cGUsCisgICAgICAgICZ0ZWVkYXRhb2JqZWN0X3R5cGUsCiAgICAgICAgIE5VTEwKICAgICB9OwogCkBAIC0zNzE4LDExICs0NTIxLDUgQEAKICAgICAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sIG5hbWUrMSwgKFB5T2JqZWN0ICopdHlwZWxpc3RbaV0pOwogICAgIH0KIAotICAgIGlmIChQeVR5cGVfUmVhZHkoJnRlZWRhdGFvYmplY3RfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZ0ZWVfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZfZ3JvdXBlcl90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYWluLmMgYi9Nb2R1bGVzL21haW4uYwppbmRleCA1ZDFkODk2Li5hMTZjZTY1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21haW4uYworKysgYi9Nb2R1bGVzL21haW4uYwpAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRlIDxsb2NhbGUuaD4KIAogI2lmZGVmIF9fVk1TCisjZXJyb3IgIlBFUCAxMTogVk1TIGlzIG5vdyB1bnN1cHBvcnRlZCwgY29kZSB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNCIKICNpbmNsdWRlIDx1bml4bGliLmg+CiAjZW5kaWYKIApAQCAtNzIsOSArNzMsNiBAQAogLU8gICAgIDogb3B0aW1pemUgZ2VuZXJhdGVkIGJ5dGVjb2RlIHNsaWdodGx5OyBhbHNvIFBZVEhPTk9QVElNSVpFPXhcblwKIC1PTyAgICA6IHJlbW92ZSBkb2Mtc3RyaW5ncyBpbiBhZGRpdGlvbiB0byB0aGUgLU8gb3B0aW1pemF0aW9uc1xuXAogLXEgICAgIDogZG9uJ3QgcHJpbnQgdmVyc2lvbiBhbmQgY29weXJpZ2h0IG1lc3NhZ2VzIG9uIGludGVyYWN0aXZlIHN0YXJ0dXBcblwKLS1SICAgICA6IHVzZSBhIHBzZXVkby1yYW5kb20gc2FsdCB0byBtYWtlIGhhc2goKSB2YWx1ZXMgb2YgdmFyaW91cyB0eXBlcyBiZVxuXAotICAgICAgICAgdW5wcmVkaWN0YWJsZSBiZXR3ZWVuIHNlcGFyYXRlIGludm9jYXRpb25zIG9mIHRoZSBpbnRlcnByZXRlciwgYXNcblwKLSAgICAgICAgIGEgZGVmZW5jZSBhZ2FpbnN0IGRlbmlhbC1vZi1zZXJ2aWNlIGF0dGFja3NcblwKIC1zICAgICA6IGRvbid0IGFkZCB1c2VyIHNpdGUgZGlyZWN0b3J5IHRvIHN5cy5wYXRoOyBhbHNvIFBZVEhPTk5PVVNFUlNJVEVcblwKIC1TICAgICA6IGRvbid0IGltcGx5ICdpbXBvcnQgc2l0ZScgb24gaW5pdGlhbGl6YXRpb25cblwKICI7CkBAIC0xMDIsMTMgKzEwMCwxNCBAQAogIlBZVEhPTkhPTUUgICA6IGFsdGVybmF0ZSA8cHJlZml4PiBkaXJlY3RvcnkgKG9yIDxwcmVmaXg+JWM8ZXhlY19wcmVmaXg+KS5cbiIKICIgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBtb2R1bGUgc2VhcmNoIHBhdGggdXNlcyAlcy5cbiIKICJQWVRIT05DQVNFT0sgOiBpZ25vcmUgY2FzZSBpbiAnaW1wb3J0JyBzdGF0ZW1lbnRzIChXaW5kb3dzKS5cbiIKLSJQWVRIT05JT0VOQ09ESU5HOiBFbmNvZGluZ1s6ZXJyb3JzXSB1c2VkIGZvciBzdGRpbi9zdGRvdXQvc3RkZXJyLlxuXAorIlBZVEhPTklPRU5DT0RJTkc6IEVuY29kaW5nWzplcnJvcnNdIHVzZWQgZm9yIHN0ZGluL3N0ZG91dC9zdGRlcnIuXG4iCisiUFlUSE9ORkFVTFRIQU5ETEVSOiBkdW1wIHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGZhdGFsIGVycm9ycy5cblwKICI7CiBzdGF0aWMgY2hhciAqdXNhZ2VfNiA9ICJcCi1QWVRIT05IQVNIU0VFRDogaWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gJ3JhbmRvbScsIHRoZSBlZmZlY3QgaXMgdGhlIHNhbWVcblwKLSAgIGFzIHNwZWNpZnlpbmcgdGhlIC1SIG9wdGlvbjogYSByYW5kb20gdmFsdWUgaXMgdXNlZCB0byBzZWVkIHRoZSBoYXNoZXMgb2ZcblwKLSAgIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuICBJdCBjYW4gYWxzbyBiZSBzZXQgdG8gYW4gaW50ZWdlclxuXAotICAgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdIHRvIGdldCBoYXNoIHZhbHVlcyB3aXRoIGEgcHJlZGljdGFibGUgc2VlZC5cblwKK1BZVEhPTkhBU0hTRUVEOiBpZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAncmFuZG9tJywgYSByYW5kb20gdmFsdWUgaXMgdXNlZFxuXAorICAgdG8gc2VlZCB0aGUgaGFzaGVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuICBJdCBjYW4gYWxzbyBiZVxuXAorICAgc2V0IHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdIHRvIGdldCBoYXNoIHZhbHVlcyB3aXRoIGFcblwKKyAgIHByZWRpY3RhYmxlIHNlZWQuXG5cCiAiOwogCiBzdGF0aWMgaW50CkBAIC0yMjUsNyArMjI0LDcgQEAKICAgICBpZiAoaW1wb3J0ZXIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGlmIChpbXBvcnRlci0+b2JfdHlwZSA9PSAmUHlOdWxsSW1wb3J0ZXJfVHlwZSkgeworICAgIGlmIChpbXBvcnRlciA9PSBQeV9Ob25lKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmd2MCk7CiAgICAgICAgIFB5X0RFQ1JFRihpbXBvcnRlcik7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTM0NSwyMSArMzQ0LDEzIEBACiAgICAgICAgICAgICAgICBub3QgaW50ZXJwcmV0ZXIgb3B0aW9ucy4gKi8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAoYykgewotICAgICAgICBjYXNlICdFJzoKKyAgICAgICAgaWYgKGMgPT0gJ0UnKSB7CiAgICAgICAgICAgICBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcrKzsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdSJzoKLSAgICAgICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZysrOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogVGhlIHZhcmlhYmxlIGlzIG9ubHkgdGVzdGVkIGZvciBleGlzdGVuY2UgaGVyZTsgX1B5UmFuZG9tX0luaXQgd2lsbAotICAgICAgIGNoZWNrIGl0cyB2YWx1ZSBmdXJ0aGVyLiAqLwotICAgIGlmICghUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnICYmCi0gICAgICAgIChwID0gUHlfR0VURU5WKCJQWVRIT05IQVNIU0VFRCIpKSAmJiAqcCAhPSAnXDAnKQotICAgICAgICBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcgPSAxOwogCisgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gMTsKICAgICBfUHlSYW5kb21fSW5pdCgpOwogCiAgICAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucygpOwpAQCAtNDY2LDcgKzQ1Nyw3IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdSJzoKLSAgICAgICAgICAgIC8qIEFscmVhZHkgaGFuZGxlZCBhYm92ZSAqLworICAgICAgICAgICAgLyogSWdub3JlZCAqLwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyogVGhpcyBzcGFjZSByZXNlcnZlZCBmb3Igb3RoZXIgb3B0aW9ucyAqLwpAQCAtNTMzLDE2ICs1MjQsMTMgQEAKICAgICAgICAgICAgIC8qIFVzZSB1dGYtOCBvbiBNYWMgT1MgWCAqLwogICAgICAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHApOwogI2Vsc2UKLSAgICAgICAgICAgIHdjaGFyX3QgKndjaGFyOwotICAgICAgICAgICAgc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIHdjaGFyID0gX1B5X2NoYXIyd2NoYXIocCwgJmxlbik7Ci0gICAgICAgICAgICBpZiAod2NoYXIgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdjaGFyLCBsZW4pOwotICAgICAgICAgICAgUHlNZW1fRnJlZSh3Y2hhcik7CisgICAgICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZShwLCAic3Vycm9nYXRlZXNjYXBlIik7CiAjZW5kaWYKLSAgICAgICAgICAgIGlmICh1bmljb2RlID09IE5VTEwpCisgICAgICAgICAgICBpZiAodW5pY29kZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogaWdub3JlIGVycm9ycyAqLworICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZSh1bmljb2RlKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICAgICAgfQpAQCAtNjE3LDcgKzYwNSw2IEBACiAgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05FWEVDVVRBQkxFIikpICYmICpwICE9ICdcMCcpIHsKICAgICAgICAgd2NoYXJfdCogYnVmZmVyOwogICAgICAgICBzaXplX3QgbGVuID0gc3RybGVuKHApICsgMTsKLSAgICAgICAgc2l6ZV90IHI7CiAKICAgICAgICAgYnVmZmVyID0gbWFsbG9jKGxlbiAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIGlmIChidWZmZXIgPT0gTlVMTCkgewpAQCAtNjI1LDExICs2MTIsMzMgQEAKICAgICAgICAgICAgICAgICJub3QgZW5vdWdoIG1lbW9yeSB0byBjb3B5IFBZVEhPTkVYRUNVVEFCTEUiKTsKICAgICAgICAgfQogCi0gICAgICAgIHIgPSBtYnN0b3djcyhidWZmZXIsIHAsIGxlbik7CisgICAgICAgIG1ic3Rvd2NzKGJ1ZmZlciwgcCwgbGVuKTsKICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYnVmZmVyKTsKICAgICAgICAgLyogYnVmZmVyIGlzIG5vdyBoYW5kZWQgb2ZmIC0gZG8gbm90IGZyZWUgKi8KICAgICB9IGVsc2UgeworI2lmZGVmIFdJVEhfTkVYVF9GUkFNRVdPUksKKyAgICAgICAgY2hhciogcHl2ZW52X2xhdW5jaGVyID0gZ2V0ZW52KCJfX1BZVkVOVl9MQVVOQ0hFUl9fIik7CisKKyAgICAgICAgaWYgKHB5dmVudl9sYXVuY2hlciAmJiAqcHl2ZW52X2xhdW5jaGVyKSB7CisgICAgICAgICAgICAvKiBVc2VkIGJ5IE1hYy9Ub29scy9weXRob253LmMgdG8gZm9yd2FyZAorICAgICAgICAgICAgICogdGhlIGFyZ3YwIG9mIHRoZSBzdHViIGV4ZWN1dGFibGUKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgd2NoYXJfdCogd2J1ZiA9IF9QeV9jaGFyMndjaGFyKHB5dmVudl9sYXVuY2hlciwgTlVMTCk7CisKKyAgICAgICAgICAgIGlmICh3YnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW5ub3QgZGVjb2RlIF9fUFlWRU5WX0xBVU5DSEVSX18iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X1NldFByb2dyYW1OYW1lKHdidWYpOworCisgICAgICAgICAgICAvKiBEb24ndCBmcmVlIHdidWYsIHRoZSBhcmd1bWVudCB0byBQeV9TZXRQcm9ncmFtTmFtZQorICAgICAgICAgICAgICogbXVzdCByZW1haW4gdmFsaWQgdW50aWwgdGhlIFB5X0ZpbmFsaXplIGlzIGNhbGxlZC4KKyAgICAgICAgICAgICAqLworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYXJndlswXSk7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOworI2VuZGlmCiAgICAgfQogI2Vsc2UKICAgICBQeV9TZXRQcm9ncmFtTmFtZShhcmd2WzBdKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWF0aG1vZHVsZS5jIGIvTW9kdWxlcy9tYXRobW9kdWxlLmMKaW5kZXggMmM0Y2M3My4uZDY5M2RhMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tYXRobW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tYXRobW9kdWxlLmMKQEAgLTU1LDExICs1NSw2IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiX21hdGguaCIKIAotI2lmZGVmIF9PU0ZfU09VUkNFCi0vKiBPU0YxIDUuMSBkb2Vzbid0IG1ha2UgdGhpcyBhdmFpbGFibGUgd2l0aCBYT1BFTl9TT1VSQ0VfRVhURU5ERUQgZGVmaW5lZCAqLwotZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbihkb3VibGUsIGRvdWJsZSk7Ci0jZW5kaWYKLQogLyoKICAgIHNpbihwaSp4KSwgZ2l2aW5nIGFjY3VyYXRlIHJlc3VsdHMgZm9yIGFsbCBmaW5pdGUgeCAoZXNwZWNpYWxseSB4CiAgICBpbnRlZ3JhbCBvciBjbG9zZSB0byBhbiBpbnRlZ2VyKS4gIFRoaXMgaXMgaGVyZSBmb3IgdXNlIGluIHRoZQpAQCAtMjQ0LDcgKzIzOSw4IEBACiAgICAgfQogICAgIGlmICh4ID09IDAuMCkgewogICAgICAgICBlcnJubyA9IEVET007Ci0gICAgICAgIHJldHVybiAxLjAveDsgLyogdGdhbW1hKCstMC4wKSA9ICstaW5mLCBkaXZpZGUtYnktemVybyAqLworICAgICAgICAvKiB0Z2FtbWEoKy0wLjApID0gKy1pbmYsIGRpdmlkZS1ieS16ZXJvICovCisgICAgICAgIHJldHVybiBjb3B5c2lnbihQeV9IVUdFX1ZBTCwgeCk7CiAgICAgfQogCiAgICAgLyogaW50ZWdlciBhcmd1bWVudHMgKi8KQEAgLTU4Miw2ICs1NzgsNjEgQEAKICAgICB9CiB9CiAKKy8qCisgICBsb2cyOiBsb2cgdG8gYmFzZSAyLgorCisgICBVc2VzIGFuIGFsZ29yaXRobSB0aGF0IHNob3VsZDoKKworICAgICAoYSkgcHJvZHVjZSBleGFjdCByZXN1bHRzIGZvciBwb3dlcnMgb2YgMiwgYW5kCisgICAgIChiKSBnaXZlIGEgbW9ub3RvbmljIGxvZzIgKGZvciBwb3NpdGl2ZSBmaW5pdGUgZmxvYXRzKSwKKyAgICAgICAgIGFzc3VtaW5nIHRoYXQgdGhlIHN5c3RlbSBsb2cgaXMgbW9ub3RvbmljLgorKi8KKworc3RhdGljIGRvdWJsZQorbV9sb2cyKGRvdWJsZSB4KQoreworICAgIGlmICghUHlfSVNfRklOSVRFKHgpKSB7CisgICAgICAgIGlmIChQeV9JU19OQU4oeCkpCisgICAgICAgICAgICByZXR1cm4geDsgLyogbG9nMihuYW4pID0gbmFuICovCisgICAgICAgIGVsc2UgaWYgKHggPiAwLjApCisgICAgICAgICAgICByZXR1cm4geDsgLyogbG9nMigraW5mKSA9ICtpbmYgKi8KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlcnJubyA9IEVET007CisgICAgICAgICAgICByZXR1cm4gUHlfTkFOOyAvKiBsb2cyKC1pbmYpID0gbmFuLCBpbnZhbGlkLW9wZXJhdGlvbiAqLworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHggPiAwLjApIHsKKyNpZmRlZiBIQVZFX0xPRzIKKyAgICAgICAgcmV0dXJuIGxvZzIoeCk7CisjZWxzZQorICAgICAgICBkb3VibGUgbTsKKyAgICAgICAgaW50IGU7CisgICAgICAgIG0gPSBmcmV4cCh4LCAmZSk7CisgICAgICAgIC8qIFdlIHdhbnQgbG9nMihtICogMioqZSkgPT0gbG9nKG0pIC8gbG9nKDIpICsgZS4gIENhcmUgaXMgbmVlZGVkIHdoZW4KKyAgICAgICAgICogeCBpcyBqdXN0IGdyZWF0ZXIgdGhhbiAxLjA6IGluIHRoYXQgY2FzZSBlIGlzIDEsIGxvZyhtKSBpcyBuZWdhdGl2ZSwKKyAgICAgICAgICogYW5kIHdlIGdldCBzaWduaWZpY2FudCBjYW5jZWxsYXRpb24gZXJyb3IgZnJvbSB0aGUgYWRkaXRpb24gb2YKKyAgICAgICAgICogbG9nKG0pIC8gbG9nKDIpIHRvIGUuICBUaGUgc2xpZ2h0IHJld3JpdGUgb2YgdGhlIGV4cHJlc3Npb24gYmVsb3cKKyAgICAgICAgICogYXZvaWRzIHRoaXMgcHJvYmxlbS4KKyAgICAgICAgICovCisgICAgICAgIGlmICh4ID49IDEuMCkgeworICAgICAgICAgICAgcmV0dXJuIGxvZygyLjAgKiBtKSAvIGxvZygyLjApICsgKGUgLSAxKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBsb2cobSkgLyBsb2coMi4wKSArIGU7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyAgICBlbHNlIGlmICh4ID09IDAuMCkgeworICAgICAgICBlcnJubyA9IEVET007CisgICAgICAgIHJldHVybiAtUHlfSFVHRV9WQUw7IC8qIGxvZzIoMCkgPSAtaW5mLCBkaXZpZGUtYnktemVybyAqLworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZXJybm8gPSBFRE9NOworICAgICAgICByZXR1cm4gUHlfTkFOOyAvKiBsb2cyKC1pbmYpID0gbmFuLCBpbnZhbGlkLW9wZXJhdGlvbiAqLworICAgIH0KK30KKwogc3RhdGljIGRvdWJsZQogbV9sb2cxMChkb3VibGUgeCkKIHsKQEAgLTgzNiwxMCArODg3LDEwIEBACiAgICAgICAiYXRhbmgoeClcblxuUmV0dXJuIHRoZSBoeXBlcmJvbGljIGFyYyB0YW5nZW50IChtZWFzdXJlZCBpbiByYWRpYW5zKSBvZiB4LiIpCiAKIHN0YXRpYyBQeU9iamVjdCAqIG1hdGhfY2VpbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm51bWJlcikgewotICAgIHN0YXRpYyBQeU9iamVjdCAqY2VpbF9zdHIgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fY2VpbF9fKTsKICAgICBQeU9iamVjdCAqbWV0aG9kLCAqcmVzdWx0OwogCi0gICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAiX19jZWlsX18iLCAmY2VpbF9zdHIpOworICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgJlB5SWRfX19jZWlsX18pOwogICAgIGlmIChtZXRob2QgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtODc0LDEwICs5MjUsMTAgQEAKICAgICAgICJmYWJzKHgpXG5cblJldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGZsb2F0IHguIikKIAogc3RhdGljIFB5T2JqZWN0ICogbWF0aF9mbG9vcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm51bWJlcikgewotICAgIHN0YXRpYyBQeU9iamVjdCAqZmxvb3Jfc3RyID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2Zsb29yX18pOwogICAgIFB5T2JqZWN0ICptZXRob2QsICpyZXN1bHQ7CiAKLSAgICBtZXRob2QgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChudW1iZXIsICJfX2Zsb29yX18iLCAmZmxvb3Jfc3RyKTsKKyAgICBtZXRob2QgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChudW1iZXIsICZQeUlkX19fZmxvb3JfXyk7CiAgICAgaWYgKG1ldGhvZCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzg0LDcgKzE0MzUsNyBAQAogICAgIH0KIAogICAgIC8qIHVzZSBsb29rdXAgdGFibGUgaWYgeCBpcyBzbWFsbCAqLwotICAgIGlmICh4IDwgKGxvbmcpKHNpemVvZihTbWFsbEZhY3RvcmlhbHMpL3NpemVvZihTbWFsbEZhY3RvcmlhbHNbMF0pKSkKKyAgICBpZiAoeCA8IChsb25nKVB5X0FSUkFZX0xFTkdUSChTbWFsbEZhY3RvcmlhbHMpKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoU21hbGxGYWN0b3JpYWxzW3hdKTsKIAogICAgIC8qIGVsc2UgZXhwcmVzcyBpbiB0aGUgZm9ybSBvZGRfcGFydCAqIDIqKnR3b192YWx1YXRpb24sIGFuZCBjb21wdXRlIGFzCkBAIC0xNDExLDcgKzE0NjIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1hdGhfdHJ1bmMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpudW1iZXIpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICp0cnVuY19zdHIgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fdHJ1bmNfXyk7CiAgICAgUHlPYmplY3QgKnRydW5jLCAqcmVzdWx0OwogCiAgICAgaWYgKFB5X1RZUEUobnVtYmVyKS0+dHBfZGljdCA9PSBOVUxMKSB7CkBAIC0xNDE5LDcgKzE0NzAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgdHJ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChudW1iZXIsICJfX3RydW5jX18iLCAmdHJ1bmNfc3RyKTsKKyAgICB0cnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgJlB5SWRfX190cnVuY19fKTsKICAgICBpZiAodHJ1bmMgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtMTYyOCw2ICsxNjc5LDE1IEBACiBJZiB0aGUgYmFzZSBub3Qgc3BlY2lmaWVkLCByZXR1cm5zIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSAoYmFzZSBlKSBvZiB4LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgorbWF0aF9sb2cyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIHJldHVybiBsb2doZWxwZXIoYXJnLCBtX2xvZzIsICJsb2cyIik7Cit9CisKK1B5RG9jX1NUUlZBUihtYXRoX2xvZzJfZG9jLAorImxvZzIoeClcblxuUmV0dXJuIHRoZSBiYXNlIDIgbG9nYXJpdGhtIG9mIHguIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCiBtYXRoX2xvZzEwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewogICAgIHJldHVybiBsb2doZWxwZXIoYXJnLCBtX2xvZzEwLCAibG9nMTAiKTsKQEAgLTE4OTksNiArMTk1OSw3IEBACiAgICAgeyJsb2ciLCAgICAgICAgICAgICBtYXRoX2xvZywgICAgICAgTUVUSF9WQVJBUkdTLCAgIG1hdGhfbG9nX2RvY30sCiAgICAgeyJsb2cxcCIsICAgICAgICAgICBtYXRoX2xvZzFwLCAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfbG9nMXBfZG9jfSwKICAgICB7ImxvZzEwIiwgICAgICAgICAgIG1hdGhfbG9nMTAsICAgICBNRVRIX08sICAgICAgICAgbWF0aF9sb2cxMF9kb2N9LAorICAgIHsibG9nMiIsICAgICAgICAgICAgbWF0aF9sb2cyLCAgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2xvZzJfZG9jfSwKICAgICB7Im1vZGYiLCAgICAgICAgICAgIG1hdGhfbW9kZiwgICAgICBNRVRIX08sICAgICAgICAgbWF0aF9tb2RmX2RvY30sCiAgICAgeyJwb3ciLCAgICAgICAgICAgICBtYXRoX3BvdywgICAgICAgTUVUSF9WQVJBUkdTLCAgIG1hdGhfcG93X2RvY30sCiAgICAgeyJyYWRpYW5zIiwgICAgICAgICBtYXRoX3JhZGlhbnMsICAgTUVUSF9PLCAgICAgICAgIG1hdGhfcmFkaWFuc19kb2N9LApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tZDVtb2R1bGUuYyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKaW5kZXggMjA4OTMwZC4uZTI2ODFhOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tZDVtb2R1bGUuYworKysgYi9Nb2R1bGVzL21kNW1vZHVsZS5jCkBAIC0yMTAsNyArMjEwLDggQEAKICAgIEluaXRpYWxpemUgdGhlIGhhc2ggc3RhdGUKICAgIEBwYXJhbSBzaGExICAgVGhlIGhhc2ggc3RhdGUgeW91IHdpc2ggdG8gaW5pdGlhbGl6ZQogKi8KLXZvaWQgbWQ1X2luaXQoc3RydWN0IG1kNV9zdGF0ZSAqbWQ1KQorc3RhdGljIHZvaWQKK21kNV9pbml0KHN0cnVjdCBtZDVfc3RhdGUgKm1kNSkKIHsKICAgICBhc3NlcnQobWQ1ICE9IE5VTEwpOwogICAgIG1kNS0+c3RhdGVbMF0gPSAweDY3NDUyMzAxVUw7CkBAIC0yMjcsOCArMjI4LDggQEAKICAgIEBwYXJhbSBpbiAgICAgVGhlIGRhdGEgdG8gaGFzaAogICAgQHBhcmFtIGlubGVuICBUaGUgbGVuZ3RoIG9mIHRoZSBkYXRhIChvY3RldHMpCiAqLwotdm9pZCBtZDVfcHJvY2VzcyhzdHJ1Y3QgbWQ1X3N0YXRlICptZDUsCi0gICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIFB5X3NzaXplX3QgaW5sZW4pCitzdGF0aWMgdm9pZAorbWQ1X3Byb2Nlc3Moc3RydWN0IG1kNV9zdGF0ZSAqbWQ1LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgUHlfc3NpemVfdCBpbmxlbikKIHsKICAgICBQeV9zc2l6ZV90IG47CiAKQEAgLTI0Myw3ICsyNDQsNyBAQAogICAgICAgICAgICBpbiAgICAgICAgICAgICArPSBNRDVfQkxPQ0tTSVpFOwogICAgICAgICAgICBpbmxlbiAgICAgICAgICAtPSBNRDVfQkxPQ0tTSVpFOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICBuID0gTUlOKGlubGVuLCAoTUQ1X0JMT0NLU0laRSAtIG1kNS0+Y3VybGVuKSk7CisgICAgICAgICAgIG4gPSBNSU4oaW5sZW4sIChQeV9zc2l6ZV90KShNRDVfQkxPQ0tTSVpFIC0gbWQ1LT5jdXJsZW4pKTsKICAgICAgICAgICAgbWVtY3B5KG1kNS0+YnVmICsgbWQ1LT5jdXJsZW4sIGluLCAoc2l6ZV90KW4pOwogICAgICAgICAgICBtZDUtPmN1cmxlbiAgICArPSBuOwogICAgICAgICAgICBpbiAgICAgICAgICAgICArPSBuOwpAQCAtMjYyLDcgKzI2Myw4IEBACiAgICBAcGFyYW0gc2hhMSAgVGhlIGhhc2ggc3RhdGUKICAgIEBwYXJhbSBvdXQgW291dF0gVGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBoYXNoICgxNiBieXRlcykKICovCi12b2lkIG1kNV9kb25lKHN0cnVjdCBtZDVfc3RhdGUgKm1kNSwgdW5zaWduZWQgY2hhciAqb3V0KQorc3RhdGljIHZvaWQKK21kNV9kb25lKHN0cnVjdCBtZDVfc3RhdGUgKm1kNSwgdW5zaWduZWQgY2hhciAqb3V0KQogewogICAgIGludCBpOwogCkBAIC0zNzYsNyArMzc4LDcgQEAKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtNRDVfRElHRVNUU0laRV07CiAgICAgc3RydWN0IG1kNV9zdGF0ZSB0ZW1wOwogICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgUHlfVU5JQ09ERSAqaGV4X2RpZ2VzdDsKKyAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwogICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCkBAIC0zODQsMjUgKzM4NiwyMCBAQAogICAgIG1kNV9kb25lKCZ0ZW1wLCBkaWdlc3QpOwogCiAgICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBNRDVfRElHRVNUU0laRSAqIDIpOworICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoTUQ1X0RJR0VTVFNJWkUgKiAyLCAxMjcpOwogICAgIGlmICghcmV0dmFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJldHZhbCk7Ci0gICAgaWYgKCFoZXhfZGlnZXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKIAogICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwogICAgIGZvcihpPWo9MDsgaTxNRDVfRElHRVNUU0laRTsgaSsrKSB7Ci0gICAgICAgIGNoYXIgYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmV0dmFsLCAxKSk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tbWFwbW9kdWxlLmMgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwppbmRleCBkYTkyODNiLi5mNTJkY2U1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21tYXBtb2R1bGUuYworKysgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwpAQCAtNzgsOCArNzgsNiBAQAogIyAgZGVmaW5lIE1BUF9BTk9OWU1PVVMgTUFQX0FOT04KICNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKm1tYXBfbW9kdWxlX2Vycm9yOwotCiB0eXBlZGVmIGVudW0KIHsKICAgICBBQ0NFU1NfREVGQVVMVCwKQEAgLTI0MCwxNSArMjM4LDM3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogQmFzaWNhbGx5IHRoZSAibiIgZm9ybWF0IGNvZGUgd2l0aCB0aGUgYWJpbGl0eSB0byB0dXJuIE5vbmUgaW50byAtMS4gKi8KK3N0YXRpYyBpbnQKK21tYXBfY29udmVydF9zc2l6ZV90KFB5T2JqZWN0ICpvYmosIHZvaWQgKnJlc3VsdCkgeworICAgIFB5X3NzaXplX3QgbGltaXQ7CisgICAgaWYgKG9iaiA9PSBQeV9Ob25lKSB7CisgICAgICAgIGxpbWl0ID0gLTE7CisgICAgfQorICAgIGVsc2UgaWYgKFB5TnVtYmVyX0NoZWNrKG9iaikpIHsKKyAgICAgICAgbGltaXQgPSBQeU51bWJlcl9Bc1NzaXplX3Qob2JqLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICAgICAgaWYgKGxpbWl0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgZ290ICclLjIwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAqKChQeV9zc2l6ZV90ICopcmVzdWx0KSA9IGxpbWl0OworICAgIHJldHVybiAxOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogbW1hcF9yZWFkX21ldGhvZChtbWFwX29iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBudW1fYnl0ZXMsIG47CisgICAgUHlfc3NpemVfdCBudW1fYnl0ZXMgPSAtMSwgbjsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgQ0hFQ0tfVkFMSUQoTlVMTCk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnJlYWQiLCAmbnVtX2J5dGVzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwgbW1hcF9jb252ZXJ0X3NzaXplX3QsICZudW1fYnl0ZXMpKQogICAgICAgICByZXR1cm4oTlVMTCk7CiAKICAgICAvKiBzaWxlbnRseSAnYWRqdXN0JyBvdXQtb2YtcmFuZ2UgcmVxdWVzdHMgKi8KQEAgLTQzNyw3ICs0NTcsNyBAQAogICAgIHsKICAgICAgICAgc3RydWN0IHN0YXQgYnVmOwogICAgICAgICBpZiAoLTEgPT0gZnN0YXQoc2VsZi0+ZmQsICZidWYpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICNpZmRlZiBIQVZFX0xBUkdFRklMRV9TVVBQT1JUCkBAIC01MjcsNyArNTQ3LDcgQEAKICAgICAgICAgdm9pZCAqbmV3bWFwOwogCiAgICAgICAgIGlmIChmdHJ1bmNhdGUoc2VsZi0+ZmQsIHNlbGYtPm9mZnNldCArIG5ld19zaXplKSA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKQEAgLTU0Miw3ICs1NjIsNyBAQAogI2VuZGlmCiAgICAgICAgIGlmIChuZXdtYXAgPT0gKHZvaWQgKiktMSkKICAgICAgICAgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPmRhdGEgPSBuZXdtYXA7CkBAIC01ODMsNyArNjAzLDcgQEAKICAgICAvKiBYWFggc2VtYW50aWNzIG9mIHJldHVybiB2YWx1ZT8gKi8KICAgICAvKiBYWFggZmxhZ3MgZm9yIG1zeW5jPyAqLwogICAgIGlmICgtMSA9PSBtc3luYyhzZWxmLT5kYXRhICsgb2Zmc2V0LCBzaXplLCBNU19TWU5DKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwpAQCAtNjQ1LDkgKzY2NSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qIGJvdW5kcyBjaGVjayB0aGUgdmFsdWVzICovCi0gICAgICAgIGlmIChjbnQgPCAwIHx8IChjbnQgKyBkZXN0KSA8IGNudCB8fCAoY250ICsgc3JjKSA8IGNudCB8fAotICAgICAgICAgICBzcmMgPCAwIHx8IHNyYyA+IHNlbGYtPnNpemUgfHwgKHNyYyArIGNudCkgPiBzZWxmLT5zaXplIHx8Ci0gICAgICAgICAgIGRlc3QgPCAwIHx8IGRlc3QgPiBzZWxmLT5zaXplIHx8IChkZXN0ICsgY250KSA+IHNlbGYtPnNpemUpIHsKKyAgICAgICAgaWYgKChjbnQgKyBkZXN0KSA8IGNudCB8fCAoY250ICsgc3JjKSA8IGNudCB8fAorICAgICAgICAgICBzcmMgPiBzZWxmLT5zaXplIHx8IChzcmMgKyBjbnQpID4gc2VsZi0+c2l6ZSB8fAorICAgICAgICAgICBkZXN0ID4gc2VsZi0+c2l6ZSB8fCAoZGVzdCArIGNudCkgPiBzZWxmLT5zaXplKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAic291cmNlLCBkZXN0aW5hdGlvbiwgb3IgY291bnQgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTY4MCw3ICs3MDAsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1tYXBfX2V4aXRfX21ldGhvZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgImNsb3NlIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfY2xvc2UsIE5VTEwpOwogfQogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIG1tYXBfb2JqZWN0X21ldGhvZHNbXSA9IHsKQEAgLTkzNywxMyArOTU5LDEzIEBACiB9CiAKIHN0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBtbWFwX2FzX3NlcXVlbmNlID0gewotICAgIChsZW5mdW5jKW1tYXBfbGVuZ3RoLCAgICAgICAgICAgICAgICAgICAgICAvKnNxX2xlbmd0aCovCi0gICAgKGJpbmFyeWZ1bmMpbW1hcF9jb25jYXQsICAgICAgICAgICAgICAgICAgIC8qc3FfY29uY2F0Ki8KLSAgICAoc3NpemVhcmdmdW5jKW1tYXBfcmVwZWF0LCAgICAgICAgICAgICAgICAgLypzcV9yZXBlYXQqLwotICAgIChzc2l6ZWFyZ2Z1bmMpbW1hcF9pdGVtLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc3FfaXRlbSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9zbGljZSovCi0gICAgKHNzaXplb2JqYXJncHJvYyltbWFwX2Fzc19pdGVtLCAgICAgICAgICAgIC8qc3FfYXNzX2l0ZW0qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc3FfYXNzX3NsaWNlKi8KKyAgICAobGVuZnVuYyltbWFwX2xlbmd0aCwgICAgICAgICAgICAvKnNxX2xlbmd0aCovCisgICAgKGJpbmFyeWZ1bmMpbW1hcF9jb25jYXQsICAgICAgICAgLypzcV9jb25jYXQqLworICAgIChzc2l6ZWFyZ2Z1bmMpbW1hcF9yZXBlYXQsICAgICAgIC8qc3FfcmVwZWF0Ki8KKyAgICAoc3NpemVhcmdmdW5jKW1tYXBfaXRlbSwgICAgICAgICAvKnNxX2l0ZW0qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc3Ffc2xpY2UqLworICAgIChzc2l6ZW9iamFyZ3Byb2MpbW1hcF9hc3NfaXRlbSwgIC8qc3FfYXNzX2l0ZW0qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc3FfYXNzX3NsaWNlKi8KIH07CiAKIHN0YXRpYyBQeU1hcHBpbmdNZXRob2RzIG1tYXBfYXNfbWFwcGluZyA9IHsKQEAgLTEwMDUsNyArMTAyNyw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwogICAgICZtbWFwX2FzX2J1ZmZlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgICAgICAgIC8qdHBfZmxhZ3MqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgLyp0cF9mbGFncyovCiAgICAgbW1hcF9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTEwMjEsMTAgKzEwNDMsMTAgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgbmV3X21tYXBfb2JqZWN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogCkBAIC0xMDc1LDggKzEwOTcsOCBAQAogICAgIGludCBkZXZ6ZXJvID0gLTE7CiAgICAgaW50IGFjY2VzcyA9IChpbnQpQUNDRVNTX0RFRkFVTFQ7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImZpbGVubyIsICJsZW5ndGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGFncyIsICJwcm90IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIiwgIm9mZnNldCIsIE5VTEx9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGFncyIsICJwcm90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIiwgIm9mZnNldCIsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAiaU98aWlpIiBfUHlfUEFSU0VfT0ZGX1QsIGtleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmZCwgJm1hcF9zaXplX29iaiwgJmZsYWdzLCAmcHJvdCwKQEAgLTExODEsNyArMTIwMyw3IEBACiAgICAgICAgIGZkID0gZGV2emVybyA9IG9wZW4oIi9kZXYvemVybyIsIE9fUkRXUik7CiAgICAgICAgIGlmIChkZXZ6ZXJvID09IC0xKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobV9vYmopOwotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTExODksNyArMTIxMSw3IEBACiAgICAgICAgIG1fb2JqLT5mZCA9IGR1cChmZCk7CiAgICAgICAgIGlmIChtX29iai0+ZmQgPT0gLTEpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtX29iaik7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjA1LDcgKzEyMjcsNyBAQAogICAgIGlmIChtX29iai0+ZGF0YSA9PSAoY2hhciAqKS0xKSB7CiAgICAgICAgIG1fb2JqLT5kYXRhID0gTlVMTDsKICAgICAgICAgUHlfREVDUkVGKG1fb2JqKTsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbV9vYmotPmFjY2VzcyA9IChhY2Nlc3NfbW9kZSlhY2Nlc3M7CkBAIC0xMjM4LDggKzEyNjAsOCBAQAogICAgIGludCBhY2Nlc3MgPSAoYWNjZXNzX21vZGUpQUNDRVNTX0RFRkFVTFQ7CiAgICAgRFdPUkQgZmxQcm90ZWN0LCBkd0Rlc2lyZWRBY2Nlc3M7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ICJmaWxlbm8iLCAibGVuZ3RoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhZ25hbWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIiwgIm9mZnNldCIsIE5VTEwgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhZ25hbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIiwgIm9mZnNldCIsIE5VTEwgfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlPfHppTCIsIGtleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWxlbm8sICZtYXBfc2l6ZV9vYmosCkBAIC0xMjg2LDEyICsxMzA4LDEyIEBACiAgICAgaWYgKGZpbGVubyAhPSAtMSAmJiBmaWxlbm8gIT0gMCkgewogICAgICAgICAvKiBFbnN1cmUgdGhhdCBmaWxlbm8gaXMgd2l0aGluIHRoZSBDUlQncyB2YWxpZCByYW5nZSAqLwogICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZpbGVubykgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGZoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8pOwogICAgICAgICBpZiAoZmg9PShIQU5ETEUpLTEpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICAvKiBXaW45eCBhcHBlYXJzIHRvIG5lZWQgdXMgc2Vla2VkIHRvIHplcm8gKi8KQEAgLTE0NDUsMTEgKzE0NjcsNyBAQAogICAgIGRpY3QgPSBQeU1vZHVsZV9HZXREaWN0KG1vZHVsZSk7CiAgICAgaWYgKCFkaWN0KQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBtbWFwX21vZHVsZV9lcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigibW1hcC5lcnJvciIsCi0gICAgICAgIFB5RXhjX0Vudmlyb25tZW50RXJyb3IgLCBOVUxMKTsKLSAgICBpZiAobW1hcF9tb2R1bGVfZXJyb3IgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImVycm9yIiwgbW1hcF9tb2R1bGVfZXJyb3IpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJlcnJvciIsIFB5RXhjX09TRXJyb3IpOwogICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJtbWFwIiwgKFB5T2JqZWN0KikgJm1tYXBfb2JqZWN0X3R5cGUpOwogI2lmZGVmIFBST1RfRVhFQwogICAgIHNldGludChkaWN0LCAiUFJPVF9FWEVDIiwgUFJPVF9FWEVDKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvbmlzbW9kdWxlLmMgYi9Nb2R1bGVzL25pc21vZHVsZS5jCmluZGV4IGE4MWNhOGMuLjBhZjQ5NWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbmlzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9uaXNtb2R1bGUuYwpAQCAtNDExLDcgKzQxMSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAobWFwcyA9IG1hcHM7IG1hcHM7IG1hcHMgPSBtYXBzLT5uZXh0KSB7CisgICAgZm9yICg7IG1hcHM7IG1hcHMgPSBtYXBzLT5uZXh0KSB7CiAgICAgICAgIFB5T2JqZWN0ICpzdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhtYXBzLT5tYXApOwogICAgICAgICBpZiAoIXN0ciB8fCBQeUxpc3RfQXBwZW5kKGxpc3QsIHN0cikgPCAwKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL29wZXJhdG9yLmMgYi9Nb2R1bGVzL29wZXJhdG9yLmMKaW5kZXggODY2ZWMzYS4uMTJmZGFkNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9vcGVyYXRvci5jCisrKyBiL01vZHVsZXMvb3BlcmF0b3IuYwpAQCAtMTU5LDYgKzE1OSwxNDMgQEAKICN1bmRlZiBzcGFtMgogI3VuZGVmIHNwYW0xbwogI3VuZGVmIHNwYW0xbworCisvKiBjb21wYXJlX2RpZ2VzdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogdGltaW5nIHNhZmUgY29tcGFyZQorICoKKyAqIFJldHVybnMgMSBvZiB0aGUgc3RyaW5ncyBhcmUgZXF1YWwuCisgKiBJbiBjYXNlIG9mIGxlbihhKSAhPSBsZW4oYikgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIGtlZXAgdGhlIHRpbWluZworICogZGVwZW5kZW50IG9uIHRoZSBsZW5ndGggb2YgYi4gQ1BVIGNhY2hlIGxvY2FsbHkgbWF5IHN0aWxsIGFsdGVyIHRpbWluZworICogYSBiaXQuCisgKi8KK3N0YXRpYyBpbnQKK190c2NtcChjb25zdCB1bnNpZ25lZCBjaGFyICphLCBjb25zdCB1bnNpZ25lZCBjaGFyICpiLAorICAgICAgICBQeV9zc2l6ZV90IGxlbl9hLCBQeV9zc2l6ZV90IGxlbl9iKQoreworICAgIC8qIFRoZSB2b2xhdGlsZSB0eXBlIGRlY2xhcmF0aW9ucyBtYWtlIHN1cmUgdGhhdCB0aGUgY29tcGlsZXIgaGFzIG5vCisgICAgICogY2hhbmNlIHRvIG9wdGltaXplIGFuZCBmb2xkIHRoZSBjb2RlIGluIGFueSB3YXkgdGhhdCBtYXkgY2hhbmdlCisgICAgICogdGhlIHRpbWluZy4KKyAgICAgKi8KKyAgICB2b2xhdGlsZSBQeV9zc2l6ZV90IGxlbmd0aDsKKyAgICB2b2xhdGlsZSBjb25zdCB1bnNpZ25lZCBjaGFyICpsZWZ0OworICAgIHZvbGF0aWxlIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJpZ2h0OworICAgIFB5X3NzaXplX3QgaTsKKyAgICB1bnNpZ25lZCBjaGFyIHJlc3VsdDsKKworICAgIC8qIGxvb3AgY291bnQgZGVwZW5kcyBvbiBsZW5ndGggb2YgYiAqLworICAgIGxlbmd0aCA9IGxlbl9iOworICAgIGxlZnQgPSBOVUxMOworICAgIHJpZ2h0ID0gYjsKKworICAgIC8qIGRvbid0IHVzZSBlbHNlIGhlcmUgdG8ga2VlcCB0aGUgYW1vdW50IG9mIENQVSBpbnN0cnVjdGlvbnMgY29uc3RhbnQsCisgICAgICogdm9sYXRpbGUgZm9yY2VzIHJlLWV2YWx1YXRpb24KKyAgICAgKiAgKi8KKyAgICBpZiAobGVuX2EgPT0gbGVuZ3RoKSB7CisgICAgICAgIGxlZnQgPSAqKCh2b2xhdGlsZSBjb25zdCB1bnNpZ25lZCBjaGFyKiopJmEpOworICAgICAgICByZXN1bHQgPSAwOworICAgIH0KKyAgICBpZiAobGVuX2EgIT0gbGVuZ3RoKSB7CisgICAgICAgIGxlZnQgPSBiOworICAgICAgICByZXN1bHQgPSAxOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgcmVzdWx0IHw9ICpsZWZ0KysgXiAqcmlnaHQrKzsKKyAgICB9CisKKyAgICByZXR1cm4gKHJlc3VsdCA9PSAwKTsKK30KKworUHlEb2NfU1RSVkFSKGNvbXBhcmVfZGlnZXN0X19kb2NfXywKKyJjb21wYXJlX2RpZ2VzdChhLCBiKSAtPiBib29sXG4iCisiXG4iCisiUmV0dXJuICdhID09IGInLiAgVGhpcyBmdW5jdGlvbiB1c2VzIGFuIGFwcHJvYWNoIGRlc2lnbmVkIHRvIHByZXZlbnRcbiIKKyJ0aW1pbmcgYW5hbHlzaXMsIG1ha2luZyBpdCBhcHByb3ByaWF0ZSBmb3IgY3J5cHRvZ3JhcGh5LlxuIgorImEgYW5kIGIgbXVzdCBib3RoIGJlIG9mIHRoZSBzYW1lIHR5cGU6IGVpdGhlciBzdHIgKEFTQ0lJIG9ubHkpLFxuIgorIm9yIGFueSB0eXBlIHRoYXQgc3VwcG9ydHMgdGhlIGJ1ZmZlciBwcm90b2NvbCAoZS5nLiBieXRlcykuXG4iCisiXG4iCisiTm90ZTogSWYgYSBhbmQgYiBhcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIG9yIGlmIGFuIGVycm9yIG9jY3VycyxcbiIKKyJhIHRpbWluZyBhdHRhY2sgY291bGQgdGhlb3JldGljYWxseSByZXZlYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4iCisidHlwZXMgYW5kIGxlbmd0aHMgb2YgYSBhbmQgYi0tYnV0IG5vdCB0aGVpciB2YWx1ZXMuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorY29tcGFyZV9kaWdlc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICphLCAqYjsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POmNvbXBhcmVfZGlnZXN0IiwgJmEsICZiKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBBU0NJSSB1bmljb2RlIHN0cmluZyAqLworICAgIGlmKFB5VW5pY29kZV9DaGVjayhhKSAmJiBQeVVuaWNvZGVfQ2hlY2soYikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoYikgPT0gLTEpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKGEpIHx8ICFQeVVuaWNvZGVfSVNfQVNDSUkoYikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBhcmluZyBzdHJpbmdzIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3Qgc3VwcG9ydGVkIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gX3RzY21wKFB5VW5pY29kZV9EQVRBKGEpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShiKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoYSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKGIpKTsKKyAgICB9CisgICAgLyogZmFsbGJhY2sgdG8gYnVmZmVyIGludGVyZmFjZSBmb3IgYnl0ZXMsIGJ5dGVzYXJyYXkgYW5kIG90aGVyICovCisgICAgZWxzZSB7CisgICAgICAgIFB5X2J1ZmZlciB2aWV3X2E7CisgICAgICAgIFB5X2J1ZmZlciB2aWV3X2I7CisKKyAgICAgICAgaWYgKChQeU9iamVjdF9DaGVja0J1ZmZlcihhKSA9PSAwKSAmIChQeU9iamVjdF9DaGVja0J1ZmZlcihiKSA9PSAwKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlcyhzKSBvciBjb21iaW5hdGlvbiBvZiB0eXBlczogIgorICAgICAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBhbmQgJyUuMTAwcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoYSktPnRwX25hbWUsIFB5X1RZUEUoYiktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGEsICZ2aWV3X2EsIFB5QlVGX1NJTVBMRSkgPT0gLTEpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmICh2aWV3X2EubmRpbSA+IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVmZmVyIG11c3QgYmUgc2luZ2xlIGRpbWVuc2lvbiIpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlld19hKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihiLCAmdmlld19iLCBQeUJVRl9TSU1QTEUpID09IC0xKSB7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2EpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpZXdfYi5uZGltID4gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWZmZXIgbXVzdCBiZSBzaW5nbGUgZGltZW5zaW9uIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2EpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlld19iKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBfdHNjbXAoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXZpZXdfYS5idWYsCisgICAgICAgICAgICAgICAgICAgIChjb25zdCB1bnNpZ25lZCBjaGFyKil2aWV3X2IuYnVmLAorICAgICAgICAgICAgICAgICAgICB2aWV3X2EubGVuLAorICAgICAgICAgICAgICAgICAgICB2aWV3X2IubGVuKTsKKworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2EpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2IpOworICAgIH0KKworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmMpOworfQorCisvKiBvcGVyYXRvciBtZXRob2RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKICNkZWZpbmUgc3BhbTEoT1AsRE9DKSB7I09QLCBPUCwgTUVUSF9WQVJBUkdTLCBQeURvY19TVFIoRE9DKX0sCiAjZGVmaW5lIHNwYW0yKE9QLEFMVE9QLERPQykgeyNPUCwgb3BfIyNPUCwgTUVUSF9WQVJBUkdTLCBQeURvY19TVFIoRE9DKX0sIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsjQUxUT1AsIG9wXyMjT1AsIE1FVEhfVkFSQVJHUywgUHlEb2NfU1RSKERPQyl9LApAQCAtMjI3LDYgKzM2NCw4IEBACiBzcGFtMihndCxfX2d0X18sICJndChhLCBiKSAtLSBTYW1lIGFzIGE+Yi4iKQogc3BhbTIoZ2UsX19nZV9fLCAiZ2UoYSwgYikgLS0gU2FtZSBhcyBhPj1iLiIpCiAKKyAgICB7Il9jb21wYXJlX2RpZ2VzdCIsIChQeUNGdW5jdGlvbiljb21wYXJlX2RpZ2VzdCwgTUVUSF9WQVJBUkdTLAorICAgICBjb21wYXJlX2RpZ2VzdF9fZG9jX199LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiAKIH07CkBAIC00MDIsNyArNTQxLDggQEAKICAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IG5hdHRyczsgKytpZHgpIHsKICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGlkeCk7CiAgICAgICAgIFB5X3NzaXplX3QgaXRlbV9sZW47Ci0gICAgICAgIFB5X1VOSUNPREUgKml0ZW1fYnVmZmVyOworICAgICAgICB2b2lkICpkYXRhOworICAgICAgICB1bnNpZ25lZCBpbnQga2luZDsKICAgICAgICAgaW50IGRvdF9jb3VudDsKIAogICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhpdGVtKSkgewpAQCAtNDExLDEzICs1NTEsMTggQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGl0ZW1fbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGl0ZW0pOwotICAgICAgICBpdGVtX2J1ZmZlciA9IFB5VW5pY29kZV9BU19VTklDT0RFKGl0ZW0pOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGl0ZW0pKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpdGVtX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaXRlbSk7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShpdGVtKTsKIAogICAgICAgICAvKiBjaGVjayB3aGV0aGVyZSB0aGUgc3RyaW5nIGlzIGRvdHRlZCAqLwogICAgICAgICBkb3RfY291bnQgPSAwOwogICAgICAgICBmb3IgKGNoYXJfaWR4ID0gMDsgY2hhcl9pZHggPCBpdGVtX2xlbjsgKytjaGFyX2lkeCkgewotICAgICAgICAgICAgaWYgKGl0ZW1fYnVmZmVyW2NoYXJfaWR4XSA9PSAoUHlfVU5JQ09ERSknLicpCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgY2hhcl9pZHgpID09ICcuJykKICAgICAgICAgICAgICAgICArK2RvdF9jb3VudDsKICAgICAgICAgfQogCkBAIC00MzgsMTIgKzU4MywxMiBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmb3IgKDsgZG90X2NvdW50ID4gMDsgLS1kb3RfY291bnQpIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaXRlbV9idWZmZXJbdW5pYnVmZl90aWxsXSAhPSAoUHlfVU5JQ09ERSknLicpIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgdW5pYnVmZl90aWxsKSAhPSAnLicpIHsKICAgICAgICAgICAgICAgICAgICAgKyt1bmlidWZmX3RpbGw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGF0dHJfY2hhaW5faXRlbSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9idWZmZXIgKyB1bmlidWZmX2Zyb20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWJ1ZmZfdGlsbCAtIHVuaWJ1ZmZfZnJvbSk7CisgICAgICAgICAgICAgICAgYXR0cl9jaGFpbl9pdGVtID0gUHlVbmljb2RlX1N1YnN0cmluZyhpdGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlidWZmX2Zyb20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWJ1ZmZfdGlsbCk7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJfY2hhaW5faXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyX2NoYWluKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF0dHIpOwpAQCAtNDU2LDkgKzYwMSw4IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qIG5vdyBhZGQgdGhlIGxhc3QgZG90bGVzcyBuYW1lICovCi0gICAgICAgICAgICBhdHRyX2NoYWluX2l0ZW0gPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9idWZmZXIgKyB1bmlidWZmX2Zyb20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9sZW4gLSB1bmlidWZmX2Zyb20pOworICAgICAgICAgICAgYXR0cl9jaGFpbl9pdGVtID0gUHlVbmljb2RlX1N1YnN0cmluZyhpdGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlidWZmX2Zyb20sIGl0ZW1fbGVuKTsKICAgICAgICAgICAgIGlmIChhdHRyX2NoYWluX2l0ZW0gPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyX2NoYWluKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMgYi9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKaW5kZXggYjM4Y2U1Mi4uYTE3YTY0NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCisrKyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwpAQCAtMjE0LDYgKzIxNCwyMSBAQAogICogSGVscGVyIGZ1bmN0aW9ucwogICovCiAKKy8qIENoZWNrIGlmIGEgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yIGlzIHZhbGlkIChpLmUuIGhhc24ndCBiZWVuIGNsb3NlZCkuCisgKiBJZiB0cnVlLCByZXR1cm4gMS4gT3RoZXJ3aXNlLCByYWlzZSBWYWx1ZUVycm9yIGFuZCByZXR1cm4gMC4KKyAqLworc3RhdGljIGludCBfaXNfZmRfdmFsaWQoaW50IGZkKQoreworICAgIC8qIHRoZSBGRCBpcyBzZXQgdG8gLTEgaW4gb3NzX2Nsb3NlKCkvb3NzX21peGVyX2Nsb3NlKCkgKi8KKyAgICBpZiAoZmQgPj0gMCkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJPcGVyYXRpb24gb24gY2xvc2VkIE9TUyBkZXZpY2UuIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogLyogX2RvX2lvY3RsXzEoKSBpcyBhIHByaXZhdGUgaGVscGVyIGZ1bmN0aW9uIHVzZWQgZm9yIHRoZSBPU1MgaW9jdGxzIC0tCiAgICBTTkRDVExfRFNQX3tTRVRGTVQsQ0hBTk5FTFMsU1BFRUR9IC0tIHRoYXQgdGhhdCBhcmUgY2FsbGVkIGZyb20gQwogICAgbGlrZSB0aGlzOgpAQCAtMzAxLDYgKzMxNiw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX25vbmJsb2NrKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBIbW1tOiBpdCBkb2Vzbid0IGFwcGVhciB0byBiZSBwb3NzaWJsZSB0byByZXR1cm4gdG8gYmxvY2tpbmcKICAgICAgICBtb2RlIG9uY2Ugd2UncmUgaW4gbm9uLWJsb2NraW5nIG1vZGUhICovCiAgICAgaWYgKGlvY3RsKHNlbGYtPmZkLCBTTkRDVExfRFNQX05PTkJMT0NLLCBOVUxMKSA9PSAtMSkKQEAgLTMxMiw2ICszMzAsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19zZXRmbXQob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzEoc2VsZi0+ZmQsIGFyZ3MsICJzZXRmbXQiLCBTTkRDVExfRFNQX1NFVEZNVCk7CiB9CiAKQEAgLTMxOSw2ICszNDAsMTAgQEAKIG9zc19nZXRmbXRzKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewogICAgIGludCBtYXNrOworCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChpb2N0bChzZWxmLT5mZCwgU05EQ1RMX0RTUF9HRVRGTVRTLCAmbWFzaykgPT0gLTEpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhtYXNrKTsKQEAgLTMyNywzMCArMzUyLDQ1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX2NoYW5uZWxzKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xKHNlbGYtPmZkLCBhcmdzLCAiY2hhbm5lbHMiLCBTTkRDVExfRFNQX0NIQU5ORUxTKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19zcGVlZChvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMShzZWxmLT5mZCwgYXJncywgInNwZWVkIiwgU05EQ1RMX0RTUF9TUEVFRCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3Nfc3luYyhvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMChzZWxmLT5mZCwgYXJncywgInN5bmMiLCBTTkRDVExfRFNQX1NZTkMpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3Jlc2V0KG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8wKHNlbGYtPmZkLCBhcmdzLCAicmVzZXQiLCBTTkRDVExfRFNQX1JFU0VUKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19wb3N0KG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8wKHNlbGYtPmZkLCBhcmdzLCAicG9zdCIsIFNORENUTF9EU1BfUE9TVCk7CiB9CiAKQEAgLTM2NSw2ICs0MDUsOSBAQAogICAgIGNoYXIgKmNwOwogICAgIFB5T2JqZWN0ICpydjsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6cmVhZCIsICZzaXplKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcnYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwpAQCAtMzkyLDYgKzQzNSw5IEBACiAgICAgY2hhciAqY3A7CiAgICAgaW50IHJ2LCBzaXplOwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSM6d3JpdGUiLCAmY3AsICZzaXplKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC00MjMsNiArNDY5LDkgQEAKICAgICAgICBtb2RlLCB0aGUgYmVoYXZpb3VyIG9mIHdyaXRlKCkgYW5kIHdyaXRlYWxsKCkgZnJvbSBQeXRob24gaXMKICAgICAgICBpbmRpc3Rpbmd1aXNoYWJsZS4gKi8KIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjOndyaXRlIiwgJmNwLCAmc2l6ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC00ODIsMTAgKzUzMSwxMiBAQAogICAgIHJldHVybiBzZWxmOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKiAKK3N0YXRpYyBQeU9iamVjdCAqCiBvc3NfZXhpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKLSAgICBQeU9iamVjdCAqcmV0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAiY2xvc2UiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CisKKyAgICBQeU9iamVjdCAqcmV0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9jbG9zZSwgTlVMTCk7CiAgICAgaWYgKCFyZXQpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRihyZXQpOwpAQCAtNDk1LDYgKzU0Niw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX2ZpbGVubyhvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZCk7CiB9CiAKQEAgLTUwOSw2ICs1NjMsOSBAQAogICAgIGludCBmbXQsIGNoYW5uZWxzLCByYXRlOwogICAgIFB5T2JqZWN0ICogcnY7ICAgICAgICAgICAgICAgICAgICAvKiByZXR1cm4gdHVwbGUgKGZtdCwgY2hhbm5lbHMsIHJhdGUpICovCiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWl8aTpzZXRwYXJhbWV0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJndhbnRlZF9mbXQsICZ3YW50ZWRfY2hhbm5lbHMsICZ3YW50ZWRfcmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmljdCkpCkBAIC01OTksNiArNjU2LDkgQEAKICAgICBhdWRpb19idWZfaW5mbyBhaTsKICAgICBpbnQgbmNoYW5uZWxzPTAsIHNzaXplPTA7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKF9zc2l6ZShzZWxmLCAmbmNoYW5uZWxzLCAmc3NpemUpIDwgMCB8fCAhbmNoYW5uZWxzIHx8ICFzc2l6ZSkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjE4LDYgKzY3OCw5IEBACiAgICAgYXVkaW9fYnVmX2luZm8gYWk7CiAgICAgaW50IG5jaGFubmVscz0wLCBzc2l6ZT0wOwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChfc3NpemUoc2VsZiwgJm5jaGFubmVscywgJnNzaXplKSA8IDAgfHwgIW5jaGFubmVscyB8fCAhc3NpemUpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTYzOCw2ICs3MDEsOSBAQAogICAgIGF1ZGlvX2J1Zl9pbmZvIGFpOwogICAgIGludCBuY2hhbm5lbHM9MCwgc3NpemU9MDsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoX3NzaXplKHNlbGYsICZuY2hhbm5lbHMsICZzc2l6ZSkgPCAwIHx8ICFuY2hhbm5lbHMgfHwgIXNzaXplKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02NTUsNiArNzIxLDkgQEAKICAgICBjb3VudF9pbmZvIGluZm87CiAgICAgaW50IHJlcTsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoc2VsZi0+bW9kZSA9PSBPX1JET05MWSkKICAgICAgICAgcmVxID0gU05EQ1RMX0RTUF9HRVRJUFRSOwogICAgIGVsc2UKQEAgLTY4NSw2ICs3NTQsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19taXhlcl9maWxlbm8ob3NzX21peGVyX3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmQpOwogfQogCkBAIC02OTMsNiArNzY1LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfbWl4ZXJfY29udHJvbHMob3NzX21peGVyX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzFfaW50ZXJuYWwoc2VsZi0+ZmQsIGFyZ3MsICJjb250cm9scyIsCiAgICAgICAgIFNPVU5EX01JWEVSX1JFQURfREVWTUFTSyk7CiB9CkBAIC03MDAsNiArNzc1LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfbWl4ZXJfc3RlcmVvY29udHJvbHMob3NzX21peGVyX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzFfaW50ZXJuYWwoc2VsZi0+ZmQsIGFyZ3MsICJzdGVyZW9jb250cm9scyIsCiAgICAgICAgIFNPVU5EX01JWEVSX1JFQURfU1RFUkVPREVWUyk7CiB9CkBAIC03MDcsNiArNzg1LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfbWl4ZXJfcmVjY29udHJvbHMob3NzX21peGVyX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzFfaW50ZXJuYWwoc2VsZi0+ZmQsIGFyZ3MsICJyZWNjb250cm9scyIsCiAgICAgICAgIFNPVU5EX01JWEVSX1JFQURfUkVDTUFTSyk7CiB9CkBAIC03MTYsNiArNzk3LDkgQEAKIHsKICAgICBpbnQgY2hhbm5lbCwgdm9sdW1lOwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIENhbid0IHVzZSBfZG9faW9jdGxfMSBiZWNhdXNlIG9mIGVuY29kZWQgYXJnIHRoaW5neS4gKi8KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Z2V0IiwgJmNoYW5uZWwpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTczNiw2ICs4MjAsOSBAQAogewogICAgIGludCBjaGFubmVsLCB2b2x1bWUsIGxlZnRWb2wsIHJpZ2h0Vm9sOwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIENhbid0IHVzZSBfZG9faW9jdGxfMSBiZWNhdXNlIG9mIGVuY29kZWQgYXJnIHRoaW5neS4gKi8KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkoaWkpOnNldCIsICZjaGFubmVsLCAmbGVmdFZvbCwgJnJpZ2h0Vm9sKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NjEsNiArODQ4LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfbWl4ZXJfZ2V0X3JlY3NyYyhvc3NfbWl4ZXJfdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMV9pbnRlcm5hbChzZWxmLT5mZCwgYXJncywgImdldF9yZWNzcmMiLAogICAgICAgICBTT1VORF9NSVhFUl9SRUFEX1JFQ1NSQyk7CiB9CkBAIC03NjgsNiArODU4LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfbWl4ZXJfc2V0X3JlY3NyYyhvc3NfbWl4ZXJfdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMShzZWxmLT5mZCwgYXJncywgInNldF9yZWNzcmMiLAogICAgICAgICBTT1VORF9NSVhFUl9XUklURV9SRUNTUkMpOwogfQpAQCAtOTcxLDggKzEwNjQsOCBAQAogICAgIGludCBudW1fY29udHJvbHM7CiAgICAgaW50IGk7CiAKLSAgICBudW1fY29udHJvbHMgPSBzaXplb2YoY29udHJvbF9sYWJlbHMpIC8gc2l6ZW9mKGNvbnRyb2xfbGFiZWxzWzBdKTsKLSAgICBhc3NlcnQobnVtX2NvbnRyb2xzID09IHNpemVvZihjb250cm9sX25hbWVzKSAvIHNpemVvZihjb250cm9sX25hbWVzWzBdKSk7CisgICAgbnVtX2NvbnRyb2xzID0gUHlfQVJSQVlfTEVOR1RIKGNvbnRyb2xfbGFiZWxzKTsKKyAgICBhc3NlcnQobnVtX2NvbnRyb2xzID09IFB5X0FSUkFZX0xFTkdUSChjb250cm9sX25hbWVzKSk7CiAKICAgICBsYWJlbHMgPSBQeUxpc3RfTmV3KG51bV9jb250cm9scyk7CiAgICAgbmFtZXMgPSBQeUxpc3RfTmV3KG51bV9jb250cm9scyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jIGIvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYwppbmRleCBiODczMmRjLi5iNDYwMmY1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCisrKyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKQEAgLTMwMCwyNSArMzAwLDI1IEBACiAKICAgICAvKiBDb252ZXJ0IHJldHVybiB2YWx1ZSB0byBhIEJvb2xlYW4gKi8KICAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgY2FzZSBQeV9FUToKKyAgICAgIGNhc2UgUHlfRVE6CiAgICAgICAgIHYgPSBURVNUX0NPTkQocmVzdWx0ID09IDApOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFB5X05FOgorICAgICAgY2FzZSBQeV9ORToKICAgICAgICAgdiA9IFRFU1RfQ09ORChyZXN1bHQgIT0gMCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHlfTEU6CisgICAgICBjYXNlIFB5X0xFOgogICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCA8PSAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQeV9HRToKKyAgICAgIGNhc2UgUHlfR0U6CiAgICAgICAgIHYgPSBURVNUX0NPTkQocmVzdWx0ID49IDApOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFB5X0xUOgorICAgICAgY2FzZSBQeV9MVDoKICAgICAgICAgdiA9IFRFU1RfQ09ORChyZXN1bHQgPCAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQeV9HVDoKKyAgICAgIGNhc2UgUHlfR1Q6CiAgICAgICAgIHYgPSBURVNUX0NPTkQocmVzdWx0ID4gMCk7CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6CisgICAgICBkZWZhdWx0OgogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0zODIsNDAgKzM4MiwyOCBAQAogc3RhdGljIFB5T2JqZWN0KgogcGFyc2VyX3N0MnR1cGxlKFB5U1RfT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewotICAgIFB5T2JqZWN0ICpsaW5lX29wdGlvbiA9IDA7Ci0gICAgUHlPYmplY3QgKmNvbF9vcHRpb24gPSAwOworICAgIGludCBsaW5lX2luZm8gPSAwOworICAgIGludCBjb2xfaW5mbyA9IDA7CiAgICAgUHlPYmplY3QgKnJlcyA9IDA7CiAgICAgaW50IG9rOwogCiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InN0IiwgImxpbmVfaW5mbyIsICJjb2xfaW5mbyIsIE5VTEx9OwogCiAgICAgaWYgKHNlbGYgPT0gTlVMTCB8fCBQeU1vZHVsZV9DaGVjayhzZWxmKSkgewotICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hfE9POnN0MnR1cGxlIiwga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeVNUX1R5cGUsICZzZWxmLCAmbGluZV9vcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2xfb3B0aW9uKTsKKyAgICAgICAgb2sgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPIXxwcDpzdDJ0dXBsZSIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlTVF9UeXBlLCAmc2VsZiwgJmxpbmVfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbF9pbmZvKTsKICAgICB9CiAgICAgZWxzZQotICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPTzp0b3R1cGxlIiwgJmtleXdvcmRzWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGluZV9vcHRpb24sICZjb2xfb3B0aW9uKTsKKyAgICAgICAgb2sgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8cHA6dG90dXBsZSIsICZrZXl3b3Jkc1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxpbmVfaW5mbywgJmNvbF9pbmZvKTsKICAgICBpZiAob2sgIT0gMCkgewotICAgICAgICBpbnQgbGluZW5vID0gMDsKLSAgICAgICAgaW50IGNvbF9vZmZzZXQgPSAwOwotICAgICAgICBpZiAobGluZV9vcHRpb24gIT0gTlVMTCkgewotICAgICAgICAgICAgbGluZW5vID0gUHlPYmplY3RfSXNUcnVlKGxpbmVfb3B0aW9uKTsKLSAgICAgICAgICAgIGlmIChsaW5lbm8gPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjb2xfb3B0aW9uICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGNvbF9vZmZzZXQgPSBQeU9iamVjdF9Jc1RydWUoY29sX29wdGlvbik7Ci0gICAgICAgICAgICBpZiAoY29sX29mZnNldCA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgLyoKICAgICAgICAgICogIENvbnZlcnQgU1QgaW50byBhIHR1cGxlIHJlcHJlc2VudGF0aW9uLiAgVXNlIEd1aWRvJ3MgZnVuY3Rpb24sCiAgICAgICAgICAqICBzaW5jZSBpdCdzIGtub3duIHRvIHdvcmsgYWxyZWFkeS4KICAgICAgICAgICovCiAgICAgICAgIHJlcyA9IG5vZGUydHVwbGUoKChQeVNUX09iamVjdCopc2VsZiktPnN0X25vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9OZXcsIFB5VHVwbGVfU2V0SXRlbSwgbGluZW5vLCBjb2xfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX05ldywgUHlUdXBsZV9TZXRJdGVtLCBsaW5lX2luZm8sIGNvbF9pbmZvKTsKICAgICB9CiAgICAgcmV0dXJuIChyZXMpOwogfQpAQCAtNDMwLDM5ICs0MTgsMjcgQEAKIHN0YXRpYyBQeU9iamVjdCoKIHBhcnNlcl9zdDJsaXN0KFB5U1RfT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewotICAgIFB5T2JqZWN0ICpsaW5lX29wdGlvbiA9IDA7Ci0gICAgUHlPYmplY3QgKmNvbF9vcHRpb24gPSAwOworICAgIGludCBsaW5lX2luZm8gPSAwOworICAgIGludCBjb2xfaW5mbyA9IDA7CiAgICAgUHlPYmplY3QgKnJlcyA9IDA7CiAgICAgaW50IG9rOwogCiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InN0IiwgImxpbmVfaW5mbyIsICJjb2xfaW5mbyIsIE5VTEx9OwogCiAgICAgaWYgKHNlbGYgPT0gTlVMTCB8fCBQeU1vZHVsZV9DaGVjayhzZWxmKSkKLSAgICAgICAgb2sgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPIXxPTzpzdDJsaXN0Iiwga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeVNUX1R5cGUsICZzZWxmLCAmbGluZV9vcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2xfb3B0aW9uKTsKKyAgICAgICAgb2sgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPIXxwcDpzdDJsaXN0Iiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeVNUX1R5cGUsICZzZWxmLCAmbGluZV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29sX2luZm8pOwogICAgIGVsc2UKLSAgICAgICAgb2sgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T086dG9saXN0IiwgJmtleXdvcmRzWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGluZV9vcHRpb24sICZjb2xfb3B0aW9uKTsKKyAgICAgICAgb2sgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8cHA6dG9saXN0IiwgJmtleXdvcmRzWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGluZV9pbmZvLCAmY29sX2luZm8pOwogICAgIGlmIChvaykgewotICAgICAgICBpbnQgbGluZW5vID0gMDsKLSAgICAgICAgaW50IGNvbF9vZmZzZXQgPSAwOwotICAgICAgICBpZiAobGluZV9vcHRpb24gIT0gMCkgewotICAgICAgICAgICAgbGluZW5vID0gUHlPYmplY3RfSXNUcnVlKGxpbmVfb3B0aW9uKTsKLSAgICAgICAgICAgIGlmIChsaW5lbm8gPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjb2xfb3B0aW9uICE9IDApIHsKLSAgICAgICAgICAgIGNvbF9vZmZzZXQgPSBQeU9iamVjdF9Jc1RydWUoY29sX29wdGlvbik7Ci0gICAgICAgICAgICBpZiAoY29sX29mZnNldCA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgLyoKICAgICAgICAgICogIENvbnZlcnQgU1QgaW50byBhIHR1cGxlIHJlcHJlc2VudGF0aW9uLiAgVXNlIEd1aWRvJ3MgZnVuY3Rpb24sCiAgICAgICAgICAqICBzaW5jZSBpdCdzIGtub3duIHRvIHdvcmsgYWxyZWFkeS4KICAgICAgICAgICovCiAgICAgICAgIHJlcyA9IG5vZGUydHVwbGUoc2VsZi0+c3Rfbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfTmV3LCBQeUxpc3RfU2V0SXRlbSwgbGluZW5vLCBjb2xfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfTmV3LCBQeUxpc3RfU2V0SXRlbSwgbGluZV9pbmZvLCBjb2xfaW5mbyk7CiAgICAgfQogICAgIHJldHVybiAocmVzKTsKIH0KQEAgLTYwMCw4ICs1NzYsMTAgQEAKICAgICAgICAgICAgIGlmIChyZXMpCiAgICAgICAgICAgICAgICAgKChQeVNUX09iamVjdCAqKXJlcyktPnN0X2ZsYWdzLmNmX2ZsYWdzID0gZmxhZ3MgJiBQeUNGX01BU0s7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5UGFyc2VyX1NldEVycm9yKCZlcnIpOworICAgICAgICB9CisgICAgICAgIFB5UGFyc2VyX0NsZWFyRXJyb3IoJmVycik7CiAgICAgfQogICAgIHJldHVybiAocmVzKTsKIH0KQEAgLTk5NSw2ICs5NzMsNyBAQAogVkFMSURBVEVSKHRlc3RsaXN0X2NvbXApOyAgICAgICBWQUxJREFURVIoeWllbGRfZXhwcik7CiBWQUxJREFURVIob3JfdGVzdCk7CiBWQUxJREFURVIodGVzdF9ub2NvbmQpOyAgICAgICAgIFZBTElEQVRFUihsYW1iZGVmX25vY29uZCk7CitWQUxJREFURVIoeWllbGRfYXJnKTsKIAogI3VuZGVmIFZBTElEQVRFUgogCkBAIC0xNjU1LDIyICsxNjM0LDQ5IEBACiB9CiAKIAotLyogeWllbGRfZXhwcjogJ3lpZWxkJyBbdGVzdGxpc3RdCisvKiB5aWVsZF9leHByOiAneWllbGQnIFt5aWVsZF9hcmddCiAgKi8KIHN0YXRpYyBpbnQKIHZhbGlkYXRlX3lpZWxkX2V4cHIobm9kZSAqdHJlZSkKIHsKICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfZXhwcikKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAieWllbGQiKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gMikpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RsaXN0KENISUxEKHRyZWUsIDEpKTsKLQotICAgIHJldHVybiAocmVzKTsKKyAgICBpZiAobmNoIDwgMSB8fCBuY2ggPiAyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIXZhbGlkYXRlX250eXBlKHRyZWUsIHlpZWxkX2V4cHIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIXZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJ5aWVsZCIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobmNoID09IDIpIHsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV95aWVsZF9hcmcoQ0hJTEQodHJlZSwgMSkpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOwogfQogCisvKiB5aWVsZF9hcmc6ICdmcm9tJyB0ZXN0IHwgdGVzdGxpc3QKKyAqLworc3RhdGljIGludAordmFsaWRhdGVfeWllbGRfYXJnKG5vZGUgKnRyZWUpCit7CisgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKKyAgICBpZiAoIXZhbGlkYXRlX250eXBlKHRyZWUsIHlpZWxkX2FyZykpCisgICAgICAgIHJldHVybiAwOworICAgIHN3aXRjaCAobmNoKSB7CisgICAgICBjYXNlIDE6CisgICAgICAgIGlmICghdmFsaWRhdGVfdGVzdGxpc3QoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyOgorICAgICAgICBpZiAoIXZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJmcm9tIikpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDEpKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KIAogLyogeWllbGRfc3RtdDogeWllbGRfZXhwcgogICovCkBAIC0yMTY1LDE2ICsyMTcxLDE2IEBACiAgICAgICAgICAqLwogICAgICAgICB0cmVlID0gQ0hJTEQodHJlZSwgMCk7CiAgICAgICAgIHN3aXRjaCAoVFlQRSh0cmVlKSkgewotICAgICAgICAgICAgY2FzZSBMRVNTOgotICAgICAgICAgICAgY2FzZSBHUkVBVEVSOgotICAgICAgICAgICAgY2FzZSBFUUVRVUFMOgotICAgICAgICAgICAgY2FzZSBFUVVBTDoKLSAgICAgICAgICAgIGNhc2UgTEVTU0VRVUFMOgotICAgICAgICAgICAgY2FzZSBHUkVBVEVSRVFVQUw6Ci0gICAgICAgICAgICBjYXNlIE5PVEVRVUFMOgorICAgICAgICAgIGNhc2UgTEVTUzoKKyAgICAgICAgICBjYXNlIEdSRUFURVI6CisgICAgICAgICAgY2FzZSBFUUVRVUFMOgorICAgICAgICAgIGNhc2UgRVFVQUw6CisgICAgICAgICAgY2FzZSBMRVNTRVFVQUw6CisgICAgICAgICAgY2FzZSBHUkVBVEVSRVFVQUw6CisgICAgICAgICAgY2FzZSBOT1RFUVVBTDoKICAgICAgICAgICAgICAgcmVzID0gMTsKICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIE5BTUU6CisgICAgICAgICAgY2FzZSBOQU1FOgogICAgICAgICAgICAgICByZXMgPSAoKHN0cmNtcChTVFIodHJlZSksICJpbiIpID09IDApCiAgICAgICAgICAgICAgICAgICAgICB8fCAoc3RyY21wKFNUUih0cmVlKSwgImlzIikgPT0gMCkpOwogICAgICAgICAgICAgICBpZiAoIXJlcykgewpAQCAtMjcxOSw5ICsyNzI1LDkgQEAKIHsKICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwogICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXJndW1lbnQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpIHx8IChuY2ggPT0gMykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKSk7Ci0KKyAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSAzKSkpOworICAgIGlmIChyZXMpIAorICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKICAgICBpZiAocmVzICYmIChuY2ggPT0gMikpCiAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKTsKICAgICBlbHNlIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkKQEAgLTMzNTYsMTAgKzMzNjIsMTMgQEAKICAgICBjb3B5cmVnID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiY29weXJlZyIpOwogICAgIGlmIChjb3B5cmVnICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmZ1bmMsICpwaWNrbGVyOworICAgICAgICBfUHlfSURFTlRJRklFUihwaWNrbGUpOworICAgICAgICBfUHlfSURFTlRJRklFUihzZXF1ZW5jZTJzdCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9waWNrbGVyKTsKIAotICAgICAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb3B5cmVnLCAicGlja2xlIik7Ci0gICAgICAgIHBpY2tsZV9jb25zdHJ1Y3RvciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kdWxlLCAic2VxdWVuY2Uyc3QiKTsKLSAgICAgICAgcGlja2xlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kdWxlLCAiX3BpY2tsZXIiKTsKKyAgICAgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfcGlja2xlKTsKKyAgICAgICAgcGlja2xlX2NvbnN0cnVjdG9yID0gX1B5T2JqZWN0X0dldEF0dHJJZChtb2R1bGUsICZQeUlkX3NlcXVlbmNlMnN0KTsKKyAgICAgICAgcGlja2xlciA9IF9QeU9iamVjdF9HZXRBdHRySWQobW9kdWxlLCAmUHlJZF9fcGlja2xlcik7CiAgICAgICAgIFB5X1hJTkNSRUYocGlja2xlX2NvbnN0cnVjdG9yKTsKICAgICAgICAgaWYgKChmdW5jICE9IE5VTEwpICYmIChwaWNrbGVfY29uc3RydWN0b3IgIT0gTlVMTCkKICAgICAgICAgICAgICYmIChwaWNrbGVyICE9IE5VTEwpKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMgYi9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKaW5kZXggOWY1NzY3My4uMWYyYjBjYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCisrKyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCiAjaWYgZGVmaW5lZChfX1ZNUykKKyMgICAgZXJyb3IgIlBFUCAxMTogVk1TIGlzIG5vdyB1bnN1cHBvcnRlZCwgY29kZSB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNCIKICMgICAgaW5jbHVkZSA8dW5peGlvLmg+CiAjZW5kaWYgLyogZGVmaW5lZChfX1ZNUykgKi8KIApAQCAtNDMsNiArNDQsNyBAQAogCiAKICNpZiBkZWZpbmVkKFBZT1NfT1MyKQorI2Vycm9yICJQRVAgMTE6IE9TLzIgaXMgbm93IHVuc3VwcG9ydGVkLCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy40IgogI2RlZmluZSAgSU5DTF9ET1MKICNkZWZpbmUgIElOQ0xfRE9TRVJST1JTCiAjZGVmaW5lICBJTkNMX0RPU1BST0NFU1MKQEAgLTU3LDYgKzU5LDEwIEBACiAjaW5jbHVkZSAib3NkZWZzLmgiCiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU1lTX1VJT19ICisjaW5jbHVkZSA8c3lzL3Vpby5oPgorI2VuZGlmCisKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYgLyogSEFWRV9TWVNfVFlQRVNfSCAqLwpAQCAtOTMsNiArOTksNDggQEAKICNpbmNsdWRlIDxsYW5naW5mby5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NZU19TRU5ERklMRV9ICisjaW5jbHVkZSA8c3lzL3NlbmRmaWxlLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfU0NIRURfSAorI2luY2x1ZGUgPHNjaGVkLmg+CisjZW5kaWYKKworI2lmICFkZWZpbmVkKENQVV9BTExPQykgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVEFGRklOSVRZKQorI3VuZGVmIEhBVkVfU0NIRURfU0VUQUZGSU5JVFkKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX1NZU19YQVRUUl9IKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyNkZWZpbmUgVVNFX1hBVFRSUworI2VuZGlmCisKKyNpZmRlZiBVU0VfWEFUVFJTCisjaW5jbHVkZSA8c3lzL3hhdHRyLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9ETEZDTl9ICisjaW5jbHVkZSA8ZGxmY24uaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorIyAgZGVmaW5lIFRFUk1TSVpFX1VTRV9DT05JTworI2VsaWYgZGVmaW5lZChIQVZFX1NZU19JT0NUTF9IKQorIyAgaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjICBpZiBkZWZpbmVkKEhBVkVfVEVSTUlPU19IKQorIyAgICBpbmNsdWRlIDx0ZXJtaW9zLmg+CisjICBlbmRpZgorIyAgaWYgZGVmaW5lZChUSU9DR1dJTlNaKQorIyAgICBkZWZpbmUgVEVSTVNJWkVfVVNFX0lPQ1RMCisjICBlbmRpZgorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKwogLyogVmFyaW91cyBjb21waWxlcnMgaGF2ZSBvbmx5IGNlcnRhaW4gcG9zaXggZnVuY3Rpb25zICovCiAvKiBYWFggR29zaCBJIHdpc2ggdGhlc2Ugd2VyZSBhbGwgbW92ZWQgaW50byBweWNvbmZpZy5oICovCiAjaWYgZGVmaW5lZChQWUNDX1ZBQ1BQKSAmJiBkZWZpbmVkKFBZT1NfT1MyKQpAQCAtMTU1LDYgKzIwMyw5IEBACiAjZW5kaWYgIC8qICEgX19XQVRDT01DX18gfHwgX19RTlhfXyAqLwogI2VuZGlmIC8qICEgX19JQk1DX18gKi8KIAorCisKKwogI2lmbmRlZiBfTVNDX1ZFUgogCiAjaWYgZGVmaW5lZChfX3NnaSkmJl9DT01QSUxFUl9WRVJTSU9OPj03MDAKQEAgLTMyOCwxMCArMzc5LDEyIEBACiAjdW5kZWYgU1RSVUNUX1NUQVQKICNpZiBkZWZpbmVkKE1TX1dJTjY0KSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCiAjICAgICAgIGRlZmluZSBTVEFUIHdpbjMyX3N0YXQKKyMgICAgICAgZGVmaW5lIExTVEFUIHdpbjMyX2xzdGF0CiAjICAgICAgIGRlZmluZSBGU1RBVCB3aW4zMl9mc3RhdAogIyAgICAgICBkZWZpbmUgU1RSVUNUX1NUQVQgc3RydWN0IHdpbjMyX3N0YXQKICNlbHNlCiAjICAgICAgIGRlZmluZSBTVEFUIHN0YXQKKyMgICAgICAgZGVmaW5lIExTVEFUIGxzdGF0CiAjICAgICAgIGRlZmluZSBGU1RBVCBmc3RhdAogIyAgICAgICBkZWZpbmUgU1RSVUNUX1NUQVQgc3RydWN0IHN0YXQKICNlbmRpZgpAQCAtMzQ3LDYgKzQwMCwzOTUgQEAKICNlbmRpZgogI2VuZGlmCiAKKworI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBpbnQKK3dpbjMyX3dhcm5fYnl0ZXNfYXBpKCkKK3sKKyAgICByZXR1cm4gUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgIlRoZSBXaW5kb3dzIGJ5dGVzIEFQSSBoYXMgYmVlbiBkZXByZWNhdGVkLCAiCisgICAgICAgICJ1c2UgVW5pY29kZSBmaWxlbmFtZXMgaW5zdGVhZCIsCisgICAgICAgIDEpOworfQorI2VuZGlmCisKKworI2lmZGVmIEFUX0ZEQ1dECisjZGVmaW5lIERFRkFVTFRfRElSX0ZEIEFUX0ZEQ1dECisjZWxzZQorI2RlZmluZSBERUZBVUxUX0RJUl9GRCAoLTEwMCkKKyNlbmRpZgorCitzdGF0aWMgaW50CitfZmRfY29udmVydGVyKFB5T2JqZWN0ICpvLCBpbnQgKnAsIGludCBkZWZhdWx0X3ZhbHVlKSB7CisgICAgbG9uZyBsb25nX3ZhbHVlOworICAgIGlmIChvID09IFB5X05vbmUpIHsKKyAgICAgICAgKnAgPSBkZWZhdWx0X3ZhbHVlOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sobykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQiICk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBsb25nX3ZhbHVlID0gUHlMb25nX0FzTG9uZyhvKTsKKyAgICBpZiAobG9uZ192YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobG9uZ192YWx1ZSA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmVkIGludGVnZXIgaXMgZ3JlYXRlciB0aGFuIG1heGltdW0iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChsb25nX3ZhbHVlIDwgSU5UX01JTikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaWduZWQgaW50ZWdlciBpcyBsZXNzIHRoYW4gbWluaW11bSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgKnAgPSAoaW50KWxvbmdfdmFsdWU7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2Rpcl9mZF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIHZvaWQgKnApIHsKKyAgICByZXR1cm4gX2ZkX2NvbnZlcnRlcihvLCAoaW50ICopcCwgREVGQVVMVF9ESVJfRkQpOworfQorCisKKworLyoKKyAqIEEgUHlBcmdfUGFyc2VUdXBsZSAiY29udmVydGVyIiBmdW5jdGlvbgorICogdGhhdCBoYW5kbGVzIGZpbGVzeXN0ZW0gcGF0aHMgaW4gdGhlIG1hbm5lcgorICogcHJlZmVycmVkIGJ5IHRoZSBvcyBtb2R1bGUuCisgKgorICogcGF0aF9jb252ZXJ0ZXIgYWNjZXB0cyAoVW5pY29kZSkgc3RyaW5ncyBhbmQgdGhlaXIKKyAqIHN1YmNsYXNzZXMsIGFuZCBieXRlcyBhbmQgdGhlaXIgc3ViY2xhc3Nlcy4gIFdoYXQKKyAqIGl0IGRvZXMgd2l0aCB0aGUgYXJndW1lbnQgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm06CisgKgorICogICAqIE9uIFdpbmRvd3MsIGlmIHdlIGdldCBhIChVbmljb2RlKSBzdHJpbmcgd2UKKyAqICAgICBleHRyYWN0IHRoZSB3Y2hhcl90ICogYW5kIHJldHVybiBpdDsgaWYgd2UgZ2V0CisgKiAgICAgYnl0ZXMgd2UgZXh0cmFjdCB0aGUgY2hhciAqIGFuZCByZXR1cm4gdGhhdC4KKyAqCisgKiAgICogT24gYWxsIG90aGVyIHBsYXRmb3Jtcywgc3RyaW5ncyBhcmUgZW5jb2RlZAorICogICAgIHRvIGJ5dGVzIHVzaW5nIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgdGhlbiB3ZQorICogICAgIGV4dHJhY3QgdGhlIGNoYXIgKiBmcm9tIHRoZSBieXRlcyBvYmplY3QgYW5kCisgKiAgICAgcmV0dXJuIHRoYXQuCisgKgorICogcGF0aF9jb252ZXJ0ZXIgYWxzbyBvcHRpb25hbGx5IGFjY2VwdHMgc2lnbmVkCisgKiBpbnRlZ2VycyAocmVwcmVzZW50aW5nIG9wZW4gZmlsZSBkZXNjcmlwdG9ycykgaW5zdGVhZAorICogb2YgcGF0aCBzdHJpbmdzLgorICoKKyAqIElucHV0IGZpZWxkczoKKyAqICAgcGF0aC5udWxsYWJsZQorICogICAgIElmIG5vbnplcm8sIHRoZSBwYXRoIGlzIHBlcm1pdHRlZCB0byBiZSBOb25lLgorICogICBwYXRoLmFsbG93X2ZkCisgKiAgICAgSWYgbm9uemVybywgdGhlIHBhdGggaXMgcGVybWl0dGVkIHRvIGJlIGEgZmlsZSBoYW5kbGUKKyAqICAgICAoYSBzaWduZWQgaW50KSBpbnN0ZWFkIG9mIGEgc3RyaW5nLgorICogICBwYXRoLmZ1bmN0aW9uX25hbWUKKyAqICAgICBJZiBub24tTlVMTCwgcGF0aF9jb252ZXJ0ZXIgd2lsbCB1c2UgdGhhdCBhcyB0aGUgbmFtZQorICogICAgIG9mIHRoZSBmdW5jdGlvbiBpbiBlcnJvciBtZXNzYWdlcy4KKyAqICAgICAoSWYgcGF0aC5hcmd1bWVudF9uYW1lIGlzIE5VTEwgaXQgb21pdHMgdGhlIGZ1bmN0aW9uIG5hbWUuKQorICogICBwYXRoLmFyZ3VtZW50X25hbWUKKyAqICAgICBJZiBub24tTlVMTCwgcGF0aF9jb252ZXJ0ZXIgd2lsbCB1c2UgdGhhdCBhcyB0aGUgbmFtZQorICogICAgIG9mIHRoZSBwYXJhbWV0ZXIgaW4gZXJyb3IgbWVzc2FnZXMuCisgKiAgICAgKElmIHBhdGguYXJndW1lbnRfbmFtZSBpcyBOVUxMIGl0IHVzZXMgInBhdGgiLikKKyAqCisgKiBPdXRwdXQgZmllbGRzOgorICogICBwYXRoLndpZGUKKyAqICAgICBQb2ludHMgdG8gdGhlIHBhdGggaWYgaXQgd2FzIGV4cHJlc3NlZCBhcyBVbmljb2RlCisgKiAgICAgYW5kIHdhcyBub3QgZW5jb2RlZC4gIChPbmx5IHVzZWQgb24gV2luZG93cy4pCisgKiAgIHBhdGgubmFycm93CisgKiAgICAgUG9pbnRzIHRvIHRoZSBwYXRoIGlmIGl0IHdhcyBleHByZXNzZWQgYXMgYnl0ZXMsCisgKiAgICAgb3IgaXQgd2FzIFVuaWNvZGUgYW5kIHdhcyBlbmNvZGVkIHRvIGJ5dGVzLgorICogICBwYXRoLmZkCisgKiAgICAgQ29udGFpbnMgYSBmaWxlIGRlc2NyaXB0b3IgaWYgcGF0aC5hY2NlcHRfZmQgd2FzIHRydWUKKyAqICAgICBhbmQgdGhlIGNhbGxlciBwcm92aWRlZCBhIHNpZ25lZCBpbnRlZ2VyIGluc3RlYWQgb2YgYW55CisgKiAgICAgc29ydCBvZiBzdHJpbmcuCisgKgorICogICAgIFdBUk5JTkc6IGlmIHlvdXIgInBhdGgiIHBhcmFtZXRlciBpcyBvcHRpb25hbCwgYW5kIGlzCisgKiAgICAgdW5zcGVjaWZpZWQsIHBhdGhfY29udmVydGVyIHdpbGwgbmV2ZXIgZ2V0IGNhbGxlZC4KKyAqICAgICBTbyBpZiB5b3Ugc2V0IGFsbG93X2ZkLCB5b3UgKk1VU1QqIGluaXRpYWxpemUgcGF0aC5mZCA9IC0xCisgKiAgICAgeW91cnNlbGYhCisgKiAgIHBhdGgubGVuZ3RoCisgKiAgICAgVGhlIGxlbmd0aCBvZiB0aGUgcGF0aCBpbiBjaGFyYWN0ZXJzLCBpZiBzcGVjaWZpZWQgYXMKKyAqICAgICBhIHN0cmluZy4KKyAqICAgcGF0aC5vYmplY3QKKyAqICAgICBUaGUgb3JpZ2luYWwgb2JqZWN0IHBhc3NlZCBpbi4KKyAqICAgcGF0aC5jbGVhbnVwCisgKiAgICAgRm9yIGludGVybmFsIHVzZSBvbmx5LiAgTWF5IHBvaW50IHRvIGEgdGVtcG9yYXJ5IG9iamVjdC4KKyAqICAgICAoUGF5IG5vIGF0dGVudGlvbiB0byB0aGUgbWFuIGJlaGluZCB0aGUgY3VydGFpbi4pCisgKgorICogICBBdCBtb3N0IG9uZSBvZiBwYXRoLndpZGUgb3IgcGF0aC5uYXJyb3cgd2lsbCBiZSBub24tTlVMTC4KKyAqICAgSWYgcGF0aCB3YXMgTm9uZSBhbmQgcGF0aC5udWxsYWJsZSB3YXMgc2V0LAorICogICAgIG9yIGlmIHBhdGggd2FzIGFuIGludGVnZXIgYW5kIHBhdGguYWxsb3dfZmQgd2FzIHNldCwKKyAqICAgICBib3RoIHBhdGgud2lkZSBhbmQgcGF0aC5uYXJyb3cgd2lsbCBiZSBOVUxMCisgKiAgICAgYW5kIHBhdGgubGVuZ3RoIHdpbGwgYmUgMC4KKyAqCisgKiAgIHBhdGhfY29udmVydGVyIHRha2VzIGNhcmUgdG8gbm90IHdyaXRlIHRvIHRoZSBwYXRoX3QKKyAqICAgdW5sZXNzIGl0J3Mgc3VjY2Vzc2Z1bC4gIEhvd2V2ZXIgaXQgbXVzdCByZXNldCB0aGUKKyAqICAgImNsZWFudXAiIGZpZWxkIGVhY2ggdGltZSBpdCdzIGNhbGxlZC4KKyAqCisgKiBVc2UgYXMgZm9sbG93czoKKyAqICAgICAgcGF0aF90IHBhdGg7CisgKiAgICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAqICAgICAgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyYiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpOworICogICAgICAvLyAuLi4gdXNlIHZhbHVlcyBmcm9tIHBhdGggLi4uCisgKiAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgKgorICogKE5vdGUgdGhhdCBpZiBQeUFyZ19QYXJzZSBmYWlscyB5b3UgZG9uJ3QgbmVlZCB0byBjYWxsCisgKiBwYXRoX2NsZWFudXAoKS4gIEhvd2V2ZXIgaXQgaXMgc2FmZSB0byBkbyBzby4pCisgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjaGFyICpmdW5jdGlvbl9uYW1lOworICAgIGNoYXIgKmFyZ3VtZW50X25hbWU7CisgICAgaW50IG51bGxhYmxlOworICAgIGludCBhbGxvd19mZDsKKyAgICB3Y2hhcl90ICp3aWRlOworICAgIGNoYXIgKm5hcnJvdzsKKyAgICBpbnQgZmQ7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICBQeU9iamVjdCAqY2xlYW51cDsKK30gcGF0aF90OworCitzdGF0aWMgdm9pZAorcGF0aF9jbGVhbnVwKHBhdGhfdCAqcGF0aCkgeworICAgIGlmIChwYXRoLT5jbGVhbnVwKSB7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoLT5jbGVhbnVwKTsKKyAgICAgICAgcGF0aC0+Y2xlYW51cCA9IE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgaW50CitwYXRoX2NvbnZlcnRlcihQeU9iamVjdCAqbywgdm9pZCAqcCkgeworICAgIHBhdGhfdCAqcGF0aCA9IChwYXRoX3QgKilwOworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqYnl0ZXM7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgY2hhciAqbmFycm93OworCisjZGVmaW5lIEZPUk1BVF9FWENFUFRJT04oZXhjLCBmbXQpIFwKKyAgICBQeUVycl9Gb3JtYXQoZXhjLCAiJXMlcyIgZm10LCBcCisgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyBwYXRoLT5mdW5jdGlvbl9uYW1lIDogIiIsIFwKKyAgICAgICAgcGF0aC0+ZnVuY3Rpb25fbmFtZSA/ICI6ICIgICAgICAgICAgICAgICAgOiAiIiwgXAorICAgICAgICBwYXRoLT5hcmd1bWVudF9uYW1lID8gcGF0aC0+YXJndW1lbnRfbmFtZSA6ICJwYXRoIikKKworICAgIC8qIFB5X0NMRUFOVVBfU1VQUE9SVEVEIHN1cHBvcnQgKi8KKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIHBhdGhfY2xlYW51cChwYXRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogZW5zdXJlIGl0J3MgYWx3YXlzIHNhZmUgdG8gY2FsbCBwYXRoX2NsZWFudXAoKSAqLworICAgIHBhdGgtPmNsZWFudXAgPSBOVUxMOworCisgICAgaWYgKG8gPT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIXBhdGgtPm51bGxhYmxlKSB7CisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNwZWNpZnkgTm9uZSBmb3IgJXMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHBhdGgtPndpZGUgPSBOVUxMOworICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOworICAgICAgICBwYXRoLT5sZW5ndGggPSAwOworICAgICAgICBwYXRoLT5vYmplY3QgPSBvOworICAgICAgICBwYXRoLT5mZCA9IC0xOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21PYmplY3Qobyk7CisgICAgaWYgKHVuaWNvZGUpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHdjaGFyX3QgKndpZGU7CisgICAgICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKTsKKyAgICAgICAgaWYgKGxlbmd0aCA+IDMyNzY3KSB7CisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICIlcyB0b28gbG9uZyBmb3IgV2luZG93cyIpOworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICB3aWRlID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmljb2RlKTsKKyAgICAgICAgaWYgKCF3aWRlKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHBhdGgtPndpZGUgPSB3aWRlOworICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOworICAgICAgICBwYXRoLT5sZW5ndGggPSBsZW5ndGg7CisgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CisgICAgICAgIHBhdGgtPmZkID0gLTE7CisgICAgICAgIHBhdGgtPmNsZWFudXAgPSB1bmljb2RlOworICAgICAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7CisjZWxzZQorICAgICAgICBpbnQgY29udmVydGVkID0gUHlVbmljb2RlX0ZTQ29udmVydGVyKHVuaWNvZGUsICZieXRlcyk7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWQpCisgICAgICAgICAgICBieXRlcyA9IE5VTEw7CisjZW5kaWYKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tT2JqZWN0KG8pOworICAgICAgICBpZiAoIWJ5dGVzKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgaWYgKHBhdGgtPmFsbG93X2ZkKSB7CisgICAgICAgICAgICAgICAgaW50IGZkOworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogbm90ZTogX2ZkX2NvbnZlcnRlciBhbHdheXMgcGVybWl0cyBOb25lLgorICAgICAgICAgICAgICAgICAqIGJ1dCB3ZSd2ZSBhbHJlYWR5IGRvbmUgb3VyIE5vbmUgY2hlY2suCisgICAgICAgICAgICAgICAgICogc28gbyBjYW5ub3QgYmUgTm9uZSBhdCB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSBfZmRfY29udmVydGVyKG8sICZmZCwgLTEpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPmxlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPmZkID0gZmQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFieXRlcykgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwgImlsbGVnYWwgdHlwZSBmb3IgJXMgcGFyYW1ldGVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkgeworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKworICAgIGxlbmd0aCA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAobGVuZ3RoID4gTUFYX1BBVEgpIHsKKyAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiJXMgdG9vIGxvbmcgZm9yIFdpbmRvd3MiKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmCisKKyAgICBuYXJyb3cgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CisgICAgaWYgKGxlbmd0aCAhPSBzdHJsZW4obmFycm93KSkgeworICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIGluICVzIik7CisgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHBhdGgtPndpZGUgPSBOVUxMOworICAgIHBhdGgtPm5hcnJvdyA9IG5hcnJvdzsKKyAgICBwYXRoLT5sZW5ndGggPSBsZW5ndGg7CisgICAgcGF0aC0+b2JqZWN0ID0gbzsKKyAgICBwYXRoLT5mZCA9IC0xOworICAgIHBhdGgtPmNsZWFudXAgPSBieXRlczsKKyAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7Cit9CisKK3N0YXRpYyB2b2lkCithcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihjaGFyICpmdW5jdGlvbl9uYW1lLCBjaGFyICphcmd1bWVudF9uYW1lKSB7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICIlcyVzJXMgdW5hdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIsCisgICAgICAgIChmdW5jdGlvbl9uYW1lICE9IE5VTEwpID8gZnVuY3Rpb25fbmFtZSA6ICIiLAorICAgICAgICAoZnVuY3Rpb25fbmFtZSAhPSBOVUxMKSA/ICI6ICI6ICIiLAorICAgICAgICBhcmd1bWVudF9uYW1lKTsKK30KKworc3RhdGljIGludAorZGlyX2ZkX3VuYXZhaWxhYmxlKFB5T2JqZWN0ICpvLCB2b2lkICpwKSB7CisgICAgaW50ICpkaXJfZmQgPSAoaW50ICopcDsKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gX2ZkX2NvbnZlcnRlcihvLCBkaXJfZmQsIERFRkFVTFRfRElSX0ZEKTsKKyAgICBpZiAoIXJldHVybl92YWx1ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCpkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJldHVybiAxOworICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKE5VTEwsICJkaXJfZmQiKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZmRfc3BlY2lmaWVkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCkgeworICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihmdW5jdGlvbl9uYW1lLCAiZmQiKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZm9sbG93X3N5bWxpbmtzKSB7CisgICAgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihmdW5jdGlvbl9uYW1lLCAiZm9sbG93X3N5bWxpbmtzIik7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3BhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCkgeworICAgIGlmICghcGF0aC0+bmFycm93ICYmICFwYXRoLT53aWRlICYmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW4ndCBzcGVjaWZ5IGRpcl9mZCB3aXRob3V0IG1hdGNoaW5nIHBhdGgiLAorICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsIGludCBmZCkgeworICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSAmJiAoZmQgIT0gLTEpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW4ndCBzcGVjaWZ5IGJvdGggZGlyX2ZkIGFuZCBmZCIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpIHsKKyAgICBpZiAoKGZkID4gMCkgJiYgKCFmb2xsb3dfc3ltbGlua3MpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW5ub3QgdXNlIGZkIGFuZCBmb2xsb3dfc3ltbGlua3MgdG9nZXRoZXIiLAorICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZGlyX2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKSB7CisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpICYmICghZm9sbG93X3N5bWxpbmtzKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlczogY2Fubm90IHVzZSBkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyB0b2dldGhlciIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBBIGhlbHBlciB1c2VkIGJ5IGEgbnVtYmVyIG9mIFBPU0lYLW9ubHkgZnVuY3Rpb25zICovCisjaWZuZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBpbnQKK19wYXJzZV9vZmZfdChQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQoreworI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCisgICAgKigob2ZmX3QqKWFkZHIpID0gUHlMb25nX0FzTG9uZyhhcmcpOworI2Vsc2UKKyAgICAqKChvZmZfdCopYWRkcikgPSBQeUxvbmdfQXNMb25nTG9uZyhhcmcpOworI2VuZGlmCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiAxOworfQorI2VuZGlmCisKICNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAKIC8qIE1pY3Jvc29mdCBDUlQgaW4gVlMyMDA1IGFuZCBoaWdoZXIgd2lsbCB2ZXJpZnkgdGhhdCBhIGZpbGVoYW5kbGUgaXMKICAqIHZhbGlkIGFuZCB0aHJvdyBhbiBhc3NlcnRpb24gaWYgaXQgaXNuJ3QuCkBAIC00OTgsNiArOTQwLDcgQEAKIAogICAgIHJldHVybiBUUlVFOwogfQorCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiBSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIFBPU0lYIGVudmlyb25tZW50IHRhYmxlICovCkBAIC02NTMsNyArMTA5Niw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9lcnJvcl91bmljb2RlKGNoYXIqIGZ1bmN0aW9uLCBQeV9VTklDT0RFKiBmaWxlbmFtZSkKK3dpbjMyX2Vycm9yX3VuaWNvZGUoY2hhciogZnVuY3Rpb24sIHdjaGFyX3QqIGZpbGVuYW1lKQogewogICAgIC8qIFhYWCAtIHNlZSB3aW4zMl9lcnJvciBmb3IgY29tbWVudHMgb24gJ2Z1bmN0aW9uJyAqLwogICAgIGVycm5vID0gR2V0TGFzdEVycm9yKCk7CkBAIC02NjMsMjUgKzExMDYsNDggQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycm5vKTsKIH0KIAotc3RhdGljIGludAotY29udmVydF90b191bmljb2RlKFB5T2JqZWN0ICoqcGFyYW0pCitzdGF0aWMgUHlPYmplY3QgKgord2luMzJfZXJyb3Jfb2JqZWN0KGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogZmlsZW5hbWUpCiB7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KCpwYXJhbSkpCi0gICAgICAgIFB5X0lOQ1JFRigqcGFyYW0pOwotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjaygqcGFyYW0pKQotICAgICAgICAvKiBGb3IgYSBVbmljb2RlIHN1YnR5cGUgdGhhdCdzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LAotICAgICAgICAgICByZXR1cm4gYSB0cnVlIFVuaWNvZGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgZGF0YS4gKi8KLSAgICAgICAgKnBhcmFtID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKCpwYXJhbSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoKnBhcmFtKSk7CisgICAgLyogWFhYIC0gc2VlIHdpbjMyX2Vycm9yIGZvciBjb21tZW50cyBvbiAnZnVuY3Rpb24nICovCisgICAgZXJybm8gPSBHZXRMYXN0RXJyb3IoKTsKKyAgICBpZiAoZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICAgICAgICAgICAgICBlcnJubywKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUpOwogICAgIGVsc2UKLSAgICAgICAgKnBhcmFtID0gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KCpwYXJhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaWN0Iik7Ci0gICAgcmV0dXJuICgqcGFyYW0pICE9IE5VTEw7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnJubyk7CiB9CiAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKKy8qCisgKiBTb21lIGZ1bmN0aW9ucyByZXR1cm4gV2luMzIgZXJyb3JzLCBvdGhlcnMgb25seSBldmVyIHVzZSBwb3NpeF9lcnJvcgorICogKHRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhjZXB0aW9ucykKKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK3BhdGhfcG9zaXhfZXJyb3IoY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoKQoreworICAgIGlmIChwYXRoLT5uYXJyb3cpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgtPm5hcnJvdyk7CisgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitwYXRoX2Vycm9yKGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCkKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgtPm5hcnJvdykKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKGZ1bmN0aW9uX25hbWUsIHBhdGgtPm5hcnJvdyk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKGZ1bmN0aW9uX25hbWUsIHBhdGgtPndpZGUpOworICAgIHJldHVybiB3aW4zMl9lcnJvcihmdW5jdGlvbl9uYW1lLCBOVUxMKTsKKyNlbHNlCisgICAgcmV0dXJuIHBhdGhfcG9zaXhfZXJyb3IoZnVuY3Rpb25fbmFtZSwgcGF0aCk7CisjZW5kaWYKK30KKwogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogICAgICAgICBIZWxwZXIgRnVuY3Rpb24gdG8gVHJpbSBhbmQgRm9ybWF0IE9TLzIgTWVzc2FnZXMKQEAgLTgwMCwzMiArMTI2Niw2IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF8yc3RyKFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICBjaGFyICpmb3JtYXQsCi0gICAgICAgICAgIGludCAoKmZ1bmMpKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSkKLXsKLSAgICBQeU9iamVjdCAqb3BhdGgxID0gTlVMTCwgKm9wYXRoMiA9IE5VTEw7Ci0gICAgY2hhciAqcGF0aDEsICpwYXRoMjsKLSAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgyKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcGF0aDEgPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoMSk7Ci0gICAgcGF0aDIgPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoMik7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9ICgqZnVuYykocGF0aDEsIHBhdGgyKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvcGF0aDEpOwotICAgIFB5X0RFQ1JFRihvcGF0aDIpOwotICAgIGlmIChyZXMgIT0gMCkKLSAgICAgICAgLyogWFhYIGhvdyB0byByZXBvcnQgYm90aCBwYXRoMSBhbmQgcGF0aDI/Pz8gKi8KLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQogCiAjaWZkZWYgTVNfV0lORE9XUwogc3RhdGljIFB5T2JqZWN0KgpAQCAtODM0LDIyICsxMjc0LDI4IEBACiAgICAgICAgICAgIGNoYXIqIHdmb3JtYXQsIEJPT0wgKF9fc3RkY2FsbCAqZnVuY1cpKExQV1NUUikpCiB7CiAgICAgUHlPYmplY3QgKnVuaTsKLSAgICBjaGFyICphbnNpOworICAgIGNvbnN0IGNoYXIgKmFuc2k7CiAgICAgQk9PTCByZXN1bHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnVuaSkpCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZSB7CisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnVuaSkpCisgICAgeworICAgICAgICB3Y2hhcl90ICp3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpOworICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzdWx0ID0gZnVuY1coUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpKTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY1cod3N0cik7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoZnVuYywgUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpKTsKKyAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoZnVuYywgdW5pKTsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9CisgICAgUHlFcnJfQ2xlYXIoKTsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsICZhbnNpKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBmdW5jQShhbnNpKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtMTA2NCwxOCArMTUxMCwxOSBAQAogCiAvKiBHcmFiIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCiBzdGF0aWMgaW50IGhhc19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgPSAwOwotc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSkoSEFORExFLCBMUFNUUiwgRFdPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7CiBzdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKShIQU5ETEUsIExQV1NUUiwgRFdPUkQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7CiBzdGF0aWMgaW50CiBjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKQogewogICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CisgICAgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVBKShIQU5ETEUsIExQU1RSLCBEV09SRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEKTsKKwogICAgIC8qIG9ubHkgcmVjaGVjayAqLwogICAgIGlmICghaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSkKICAgICB7Ci0gICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgiS0VSTkVMMzIiKTsKKyAgICAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CiAgICAgICAgICooRkFSUFJPQyopJlB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSIpOwogICAgICAgICAqKEZBUlBST0MqKSZQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLApAQCAtMTM4Miw3ICsxODI5LDEwIEBACiAgICAgSEFORExFIGg7CiAgICAgaW50IHR5cGU7CiAKLSAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlX251bWJlcik7CisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmlsZV9udW1iZXIpKQorICAgICAgICBoID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgZWxzZQorICAgICAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlX251bWJlcik7CiAKICAgICAvKiBQcm90b2NvbCB2aW9sYXRpb246IHdlIGV4cGxpY2l0bHkgY2xlYXIgZXJybm8sIGluc3RlYWQgb2YKICAgICAgICBzZXR0aW5nIGl0IHRvIGEgUE9TSVggZXJyb3IuIENhbGxlcnMgc2hvdWxkIHVzZSBHZXRMYXN0RXJyb3IuICovCkBAIC0xNDI2LDcgKzE4NzYsNyBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlEb2NfU1RSVkFSKHN0YXRfcmVzdWx0X19kb2NfXywKLSJzdGF0X3Jlc3VsdDogUmVzdWx0IGZyb20gc3RhdCBvciBsc3RhdC5cblxuXAorInN0YXRfcmVzdWx0OiBSZXN1bHQgZnJvbSBzdGF0LCBmc3RhdCwgb3IgbHN0YXQuXG5cblwKIFRoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAogICAobW9kZSwgaW5vLCBkZXYsIG5saW5rLCB1aWQsIGdpZCwgc2l6ZSwgYXRpbWUsIG10aW1lLCBjdGltZSlcblwKIG9yIHZpYSB0aGUgYXR0cmlidXRlcyBzdF9tb2RlLCBzdF9pbm8sIHN0X2Rldiwgc3RfbmxpbmssIHN0X3VpZCwgYW5kIHNvIG9uLlxuXApAQCAtMTQ1MSw2ICsxOTAxLDkgQEAKICAgICB7InN0X2F0aW1lIiwgICAidGltZSBvZiBsYXN0IGFjY2VzcyJ9LAogICAgIHsic3RfbXRpbWUiLCAgICJ0aW1lIG9mIGxhc3QgbW9kaWZpY2F0aW9uIn0sCiAgICAgeyJzdF9jdGltZSIsICAgInRpbWUgb2YgbGFzdCBjaGFuZ2UifSwKKyAgICB7InN0X2F0aW1lX25zIiwgICAidGltZSBvZiBsYXN0IGFjY2VzcyBpbiBuYW5vc2Vjb25kcyJ9LAorICAgIHsic3RfbXRpbWVfbnMiLCAgICJ0aW1lIG9mIGxhc3QgbW9kaWZpY2F0aW9uIGluIG5hbm9zZWNvbmRzIn0sCisgICAgeyJzdF9jdGltZV9ucyIsICAgInRpbWUgb2YgbGFzdCBjaGFuZ2UgaW4gbmFub3NlY29uZHMifSwKICNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUKICAgICB7InN0X2Jsa3NpemUiLCAiYmxvY2tzaXplIGZvciBmaWxlc3lzdGVtIEkvTyJ9LAogI2VuZGlmCkBAIC0xNDczLDkgKzE5MjYsOSBAQAogfTsKIAogI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxLU0laRQotI2RlZmluZSBTVF9CTEtTSVpFX0lEWCAxMworI2RlZmluZSBTVF9CTEtTSVpFX0lEWCAxNgogI2Vsc2UKLSNkZWZpbmUgU1RfQkxLU0laRV9JRFggMTIKKyNkZWZpbmUgU1RfQkxLU0laRV9JRFggMTUKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1MKQEAgLTE1NDQsOSArMTk5NywzOSBAQAogICAgIDEwCiB9OwogCisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorUHlEb2NfU1RSVkFSKHdhaXRpZF9yZXN1bHRfX2RvY19fLAorIndhaXRpZF9yZXN1bHQ6IFJlc3VsdCBmcm9tIHdhaXRpZC5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisgIChzaV9waWQsIHNpX3VpZCwgc2lfc2lnbm8sIHNpX3N0YXR1cywgc2lfY29kZSksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc2lfcGlkLCBzaV91aWQsIGFuZCBzbyBvbi5cblwKK1xuXAorU2VlIG9zLndhaXRpZCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgd2FpdGlkX3Jlc3VsdF9maWVsZHNbXSA9IHsKKyAgICB7InNpX3BpZCIsICB9LAorICAgIHsic2lfdWlkIiwgfSwKKyAgICB7InNpX3NpZ25vIiwgfSwKKyAgICB7InNpX3N0YXR1cyIsICB9LAorICAgIHsic2lfY29kZSIsIH0sCisgICAgezB9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHdhaXRpZF9yZXN1bHRfZGVzYyA9IHsKKyAgICAid2FpdGlkX3Jlc3VsdCIsIC8qIG5hbWUgKi8KKyAgICB3YWl0aWRfcmVzdWx0X19kb2NfXywgLyogZG9jICovCisgICAgd2FpdGlkX3Jlc3VsdF9maWVsZHMsCisgICAgNQorfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgV2FpdGlkUmVzdWx0VHlwZTsKKyNlbmRpZgorCiBzdGF0aWMgaW50IGluaXRpYWxpemVkOwogc3RhdGljIFB5VHlwZU9iamVjdCBTdGF0UmVzdWx0VHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgU3RhdFZGU1Jlc3VsdFR5cGU7CisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKQorc3RhdGljIFB5VHlwZU9iamVjdCBTY2hlZFBhcmFtVHlwZTsKKyNlbmRpZgogc3RhdGljIG5ld2Z1bmMgc3RydWN0c2VxX25ldzsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1ODksNiArMjA3MiwxMCBAQAogICAgIGludCBuZXd2YWwgPSAtMTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOnN0YXRfZmxvYXRfdGltZXMiLCAmbmV3dmFsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAic3RhdF9mbG9hdF90aW1lcygpIGlzIGRlcHJlY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgMSkpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChuZXd2YWwgPT0gLTEpCiAgICAgICAgIC8qIFJldHVybiBvbGQgdmFsdWUgKi8KICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhfc3RhdF9mbG9hdF90aW1lcyk7CkBAIC0xNTk3LDI1ICsyMDg0LDUwIEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqYmlsbGlvbiA9IE5VTEw7CisKIHN0YXRpYyB2b2lkCiBmaWxsX3RpbWUoUHlPYmplY3QgKnYsIGludCBpbmRleCwgdGltZV90IHNlYywgdW5zaWduZWQgbG9uZyBuc2VjKQogewotICAgIFB5T2JqZWN0ICpmdmFsLCppdmFsOwotI2lmIFNJWkVPRl9USU1FX1QgPiBTSVpFT0ZfTE9ORwotICAgIGl2YWwgPSBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VjKTsKLSNlbHNlCi0gICAgaXZhbCA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylzZWMpOwotI2VuZGlmCi0gICAgaWYgKCFpdmFsKQotICAgICAgICByZXR1cm47CisgICAgUHlPYmplY3QgKnMgPSBfUHlMb25nX0Zyb21UaW1lX3Qoc2VjKTsKKyAgICBQeU9iamVjdCAqbnNfZnJhY3Rpb25hbCA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG5zZWMpOworICAgIFB5T2JqZWN0ICpzX2luX25zID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbnNfdG90YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmbG9hdF9zID0gTlVMTDsKKworICAgIGlmICghKHMgJiYgbnNfZnJhY3Rpb25hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIHNfaW5fbnMgPSBQeU51bWJlcl9NdWx0aXBseShzLCBiaWxsaW9uKTsKKyAgICBpZiAoIXNfaW5fbnMpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIG5zX3RvdGFsID0gUHlOdW1iZXJfQWRkKHNfaW5fbnMsIG5zX2ZyYWN0aW9uYWwpOworICAgIGlmICghbnNfdG90YWwpCisgICAgICAgIGdvdG8gZXhpdDsKKwogICAgIGlmIChfc3RhdF9mbG9hdF90aW1lcykgewotICAgICAgICBmdmFsID0gUHlGbG9hdF9Gcm9tRG91YmxlKHNlYyArIDFlLTkqbnNlYyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZnZhbCA9IGl2YWw7Ci0gICAgICAgIFB5X0lOQ1JFRihmdmFsKTsKKyAgICAgICAgZmxvYXRfcyA9IFB5RmxvYXRfRnJvbURvdWJsZShzZWMgKyAxZS05Km5zZWMpOworICAgICAgICBpZiAoIWZsb2F0X3MpCisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgaW5kZXgsIGl2YWwpOwotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgaW5kZXgrMywgZnZhbCk7CisgICAgZWxzZSB7CisgICAgICAgIGZsb2F0X3MgPSBzOworICAgICAgICBQeV9JTkNSRUYoZmxvYXRfcyk7CisgICAgfQorCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBpbmRleCwgcyk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBpbmRleCszLCBmbG9hdF9zKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIGluZGV4KzYsIG5zX3RvdGFsKTsKKyAgICBzID0gTlVMTDsKKyAgICBmbG9hdF9zID0gTlVMTDsKKyAgICBuc190b3RhbCA9IE5VTEw7CitleGl0OgorICAgIFB5X1hERUNSRUYocyk7CisgICAgUHlfWERFQ1JFRihuc19mcmFjdGlvbmFsKTsKKyAgICBQeV9YREVDUkVGKHNfaW5fbnMpOworICAgIFB5X1hERUNSRUYobnNfdG90YWwpOworICAgIFB5X1hERUNSRUYoZmxvYXRfcyk7CiB9CiAKIC8qIHBhY2sgYSBzeXN0ZW0gc3RhdCBDIHN0cnVjdHVyZSBpbnRvIHRoZSBQeXRob24gc3RhdCB0dXBsZQpAQCAtMTcxOCwxMjYgKzIyMzAsMjM4IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9kb19zdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywKLSAgICAgICAgICAgICAgY2hhciAqZm9ybWF0LAotI2lmZGVmIF9fVk1TCi0gICAgICAgICAgICAgIGludCAoKnN0YXRmdW5jKShjb25zdCBjaGFyICosIFNUUlVDVF9TVEFUICosIC4uLiksCi0jZWxzZQotICAgICAgICAgICAgICBpbnQgKCpzdGF0ZnVuYykoY29uc3QgY2hhciAqLCBTVFJVQ1RfU1RBVCAqKSwKLSNlbmRpZgotICAgICAgICAgICAgICBjaGFyICp3Zm9ybWF0LAotICAgICAgICAgICAgICBpbnQgKCp3c3RhdGZ1bmMpKGNvbnN0IFB5X1VOSUNPREUgKiwgU1RSVUNUX1NUQVQgKikpCi17Ci0gICAgU1RSVUNUX1NUQVQgc3Q7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgaW50IHJlczsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnBvKSkgewotICAgICAgICBQeV9VTklDT0RFICp3cGF0aCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHBvKTsKLQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSByZXN1bHQgT0sgd2l0aG91dAotICAgICAgICAgICAgICAgdGhyZWFkIGxvY2sgYXMgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgICAgIHJlcyA9IHdzdGF0ZnVuYyh3cGF0aCwgJnN0KTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAocmVzICE9IDApCi0gICAgICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgic3RhdCIsIHdwYXRoKTsKLSAgICAgICAgcmV0dXJuIF9weXN0YXRfZnJvbXN0cnVjdHN0YXQoJnN0KTsKLSAgICB9Ci0gICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7Ci0jZW5kaWYKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSAoKnN0YXRmdW5jKShwYXRoLCAmc3QpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzICE9IDApIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX2Vycm9yKCJzdGF0IiwgcGF0aCk7Ci0jZWxzZQotICAgICAgICByZXN1bHQgPSBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgpOwotI2VuZGlmCi0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOwotCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiAvKiBQT1NJWCBtZXRob2RzICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9hY2Nlc3NfX2RvY19fLAotImFjY2VzcyhwYXRoLCBtb2RlKSAtPiBUcnVlIGlmIGdyYW50ZWQsIEZhbHNlIG90aGVyd2lzZVxuXG5cCi1Vc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLiAgTm90ZSB0aGF0IG1vc3RcblwKLW9wZXJhdGlvbnMgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkLCB0aGVyZWZvcmUgdGhpcyByb3V0aW5lIGNhblxuXAotYmUgdXNlZCBpbiBhIHN1aWQvc2dpZCBlbnZpcm9ubWVudCB0byB0ZXN0IGlmIHRoZSBpbnZva2luZyB1c2VyIGhhcyB0aGVcblwKLXNwZWNpZmllZCBhY2Nlc3MgdG8gdGhlIHBhdGguICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgRl9PSyB0byB0ZXN0XG5cCi1leGlzdGVuY2UsIG9yIHRoZSBpbmNsdXNpdmUtT1Igb2YgUl9PSywgV19PSywgYW5kIFhfT0suIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9hY2Nlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfZG9fc3RhdChjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsCisgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7CisgICAgU1RSVUNUX1NUQVQgc3Q7CisgICAgaW50IHJlc3VsdDsKKworI2lmICFkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfRlNUQVRBVCkgJiYgIWRlZmluZWQoSEFWRV9MU1RBVCkKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZChmdW5jdGlvbl9uYW1lLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCisgICAgaWYgKHBhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKCJzdGF0IiwgcGF0aCwgZGlyX2ZkKSB8fAorICAgICAgICBkaXJfZmRfYW5kX2ZkX2ludmFsaWQoInN0YXQiLCBkaXJfZmQsIHBhdGgtPmZkKSB8fAorICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInN0YXQiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaWYgKHBhdGgtPmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSBGU1RBVChwYXRoLT5mZCwgJnN0KTsKKyAgICBlbHNlCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChwYXRoLT53aWRlKSB7CisgICAgICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICByZXN1bHQgPSB3aW4zMl9zdGF0X3cocGF0aC0+d2lkZSwgJnN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gd2luMzJfbHN0YXRfdyhwYXRoLT53aWRlLCAmc3QpOworICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfTFNUQVQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQorICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLT5uYXJyb3csICZzdCk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IGZzdGF0YXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csICZzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IFNUQVQocGF0aC0+bmFycm93LCAmc3QpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKCJzdGF0IiwgcGF0aCk7CisKKyAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc3RhdF9fZG9jX18sCisic3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpIC0+IHN0YXQgcmVzdWx0XG5cblwKK1BlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIGEgc3RyaW5nIG9yIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorICBkaXJfZmQgbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybTsgaWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nXG5cCisgIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIHN0YXQgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAorICBsaW5rIHBvaW50cyB0by5cblwKK0l0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG5cCisgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJnA6c3RhdCIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2RvX3N0YXQoInN0YXQiLCAmcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X2xzdGF0X19kb2NfXywKKyJsc3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkgLT4gc3RhdCByZXN1bHRcblxuXAorTGlrZSBzdGF0KCksIGJ1dCBkbyBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuXAorRXF1aXZhbGVudCB0byBzdGF0KHBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9sc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAwOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOmxzdGF0Iiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX0ZTVEFUQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZG9fc3RhdCgic3RhdCIsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocG9zaXhfYWNjZXNzX19kb2NfXywKKyJhY2Nlc3MocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGVmZmVjdGl2ZV9pZHM9RmFsc2UsXAorIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitVc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLiAgUmV0dXJucyBUcnVlIGlmIGdyYW50ZWQsXG5cCitGYWxzZSBvdGhlcndpc2UuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBlZmZlY3RpdmVfaWRzIGlzIFRydWUsIGFjY2VzcyB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQgaW5zdGVhZCBvZlxuXAorICB0aGUgcmVhbCB1aWQvZ2lkLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIGFjY2VzcyB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWRcblwKKyAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuXAorICBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAorXG5cCitOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXNcblwKKyAgcm91dGluZSBjYW4gYmUgdXNlZCBpbiBhIHN1aWQvc2dpZCBlbnZpcm9ubWVudCB0byB0ZXN0IGlmIHRoZSBpbnZva2luZyB1c2VyXG5cCisgIGhhcyB0aGUgc3BlY2lmaWVkIGFjY2VzcyB0byB0aGUgcGF0aC5cblwKK1RoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSBGX09LIHRvIHRlc3QgZXhpc3RlbmNlLCBvciB0aGUgaW5jbHVzaXZlLU9SXG5cCisgIG9mIFJfT0ssIFdfT0ssIGFuZCBYX09LLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfYWNjZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOwogICAgIGludCBtb2RlOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZWZmZWN0aXZlX2lkcyA9IDA7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgRFdPUkQgYXR0cjsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVaTphY2Nlc3MiLCAmcG8sICZtb2RlKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIC8qIFB5VW5pY29kZV9BU19VTklDT0RFIE9LIHdpdGhvdXQgdGhyZWFkIGxvY2sgYXMKLSAgICAgICAgICAgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1coUHlVbmljb2RlX0FTX1VOSUNPREUocG8pKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZ290byBmaW5pc2g7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOmFjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci1maW5pc2g6Ci0gICAgaWYgKGF0dHIgPT0gMHhGRkZGRkZGRikKLSAgICAgICAgLyogRmlsZSBkb2VzIG5vdCBleGlzdCwgb3IgY2Fubm90IHJlYWQgYXR0cmlidXRlcyAqLwotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwotICAgIC8qIEFjY2VzcyBpcyBwb3NzaWJsZSBpZiBlaXRoZXIgd3JpdGUgYWNjZXNzIHdhc24ndCByZXF1ZXN0ZWQsIG9yCi0gICAgICAgdGhlIGZpbGUgaXNuJ3QgcmVhZC1vbmx5LCBvciBpZiBpdCdzIGEgZGlyZWN0b3J5LCBhcyB0aGVyZSBhcmUKLSAgICAgICBubyByZWFkLW9ubHkgZGlyZWN0b3JpZXMgb24gV2luZG93cy4gKi8KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKCEobW9kZSAmIDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSk7CiAjZWxzZQotICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6YWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBhY2Nlc3MocGF0aCwgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzID09IDApOworICAgIGludCByZXN1bHQ7CiAjZW5kaWYKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcHA6YWNjZXNzIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsCisjaWZkZWYgSEFWRV9GQUNDRVNTQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZCwKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKKyNlbmRpZgorICAgICAgICAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZuZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImFjY2VzcyIsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIGlmIChlZmZlY3RpdmVfaWRzKSB7CisgICAgICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKCJhY2Nlc3MiLCAiZWZmZWN0aXZlX2lkcyIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChwYXRoLndpZGUgIT0gTlVMTCkKKyAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLm5hcnJvdyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIC8qCisgICAgICogQWNjZXNzIGlzIHBvc3NpYmxlIGlmCisgICAgICogICAqIHdlIGRpZG4ndCBnZXQgYSAtMSwgYW5kCisgICAgICogICAgICogd3JpdGUgYWNjZXNzIHdhc24ndCByZXF1ZXN0ZWQsCisgICAgICogICAgICogb3IgdGhlIGZpbGUgaXNuJ3QgcmVhZC1vbmx5LAorICAgICAqICAgICAqIG9yIGl0J3MgYSBkaXJlY3RvcnkuCisgICAgICogKERpcmVjdG9yaWVzIGNhbm5vdCBiZSByZWFkLW9ubHkgb24gV2luZG93cy4pCisgICAgKi8KKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgIChhdHRyICE9IDB4RkZGRkZGRkYpICYmCisgICAgICAgICAgICAoIShtb2RlICYgMikgfHwKKyAgICAgICAgICAgICEoYXR0ciAmIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKSB8fAorICAgICAgICAgICAgKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKSk7CisjZWxzZQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8CisgICAgICAgIGVmZmVjdGl2ZV9pZHMgfHwKKyAgICAgICAgIWZvbGxvd19zeW1saW5rcykgeworICAgICAgICBpbnQgZmxhZ3MgPSAwOworICAgICAgICBpZiAoIWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGZsYWdzIHw9IEFUX1NZTUxJTktfTk9GT0xMT1c7CisgICAgICAgIGlmIChlZmZlY3RpdmVfaWRzKQorICAgICAgICAgICAgZmxhZ3MgfD0gQVRfRUFDQ0VTUzsKKyAgICAgICAgcmVzdWx0ID0gZmFjY2Vzc2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUsIGZsYWdzKTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGFjY2VzcyhwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoIXJlc3VsdCk7CisjZW5kaWYKKworI2lmbmRlZiBIQVZFX0ZBQ0NFU1NBVAorZXhpdDoKKyNlbmRpZgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogI2lmbmRlZiBGX09LCkBAIC0xOTA4LDI3ICsyNTMyLDY2IEBACiAKIFB5RG9jX1NUUlZBUihwb3NpeF9jaGRpcl9fZG9jX18sCiAiY2hkaXIocGF0aClcblxuXAotQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBzcGVjaWZpZWQgcGF0aC4iKTsKK0NoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NoZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2NoZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHdpbjMyXzFzdHIoYXJncywgImNoZGlyIiwgInk6Y2hkaXIiLCB3aW4zMl9jaGRpciwgIlU6Y2hkaXIiLCB3aW4zMl93Y2hkaXIpOwotI2VsaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKLSAgICByZXR1cm4gcG9zaXhfMXN0cihhcmdzLCAiTyY6Y2hkaXIiLCBfY2hkaXIyKTsKLSNlbGlmIGRlZmluZWQoX19WTVMpCi0gICAgcmV0dXJuIHBvc2l4XzFzdHIoYXJncywgIk8mOmNoZGlyIiwgKGludCAoKikoY29uc3QgY2hhciAqKSljaGRpcik7Ci0jZWxzZQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpjaGRpciIsIGNoZGlyKTsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKICNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNoZGlyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAorICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfd2NoZGlyKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSB3aW4zMl9jaGRpcihwYXRoLm5hcnJvdyk7CisJcmVzdWx0ID0gIXJlc3VsdDsgLyogb24gdW5peCwgc3VjY2VzcyA9IDAsIG9uIHdpbmRvd3MsIHN1Y2Nlc3MgPSAhMCAqLworI2VsaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKKyAgICByZXN1bHQgPSBfY2hkaXIyKHBhdGgubmFycm93KTsKKyNlbHNlCisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNoZGlyKHBhdGguZmQpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBjaGRpcihwYXRoLm5hcnJvdyk7CisjZW5kaWYKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJjaGRpciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogI2lmZGVmIEhBVkVfRkNIRElSCiBQeURvY19TVFJWQVIocG9zaXhfZmNoZGlyX19kb2NfXywKLSJmY2hkaXIoZmlsZGVzKVxuXG5cCi1DaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLiAgZmlsZGVzIG11c3QgYmVcblwKLW9wZW5lZCBvbiBhIGRpcmVjdG9yeSwgbm90IGEgZmlsZS4iKTsKKyJmY2hkaXIoZmQpXG5cblwKK0NoYW5nZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuICBmZCBtdXN0IGJlXG5cCitvcGVuZWQgb24gYSBkaXJlY3RvcnksIG5vdCBhIGZpbGUuICBFcXVpdmFsZW50IHRvIG9zLmNoZGlyKGZkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZjaGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZkb2JqKQpAQCAtMTkzOSw4NyArMjYwMiwxNTUgQEAKIAogCiBQeURvY19TVFJWQVIocG9zaXhfY2htb2RfX2RvY19fLAotImNobW9kKHBhdGgsIG1vZGUpXG5cblwKLUNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS4iKTsKKyJjaG1vZChwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK0NoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS5cblwKK1xuXAorcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBjaG1vZCB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcblwKKyAgbGluayBwb2ludHMgdG8uXG5cCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuXAorICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK2Rpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9jaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoID0gTlVMTDsKLSAgICBjaGFyICpwYXRoID0gTlVMTDsKLSAgICBpbnQgaTsKLSAgICBpbnQgcmVzOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBtb2RlOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgRFdPUkQgYXR0cjsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVaXw6Y2htb2QiLCAmcG8sICZpKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1coUHlVbmljb2RlX0FTX1VOSUNPREUocG8pKTsKLSAgICAgICAgaWYgKGF0dHIgIT0gMHhGRkZGRkZGRikgewotICAgICAgICAgICAgaWYgKGkgJiBfU19JV1JJVEUpCi0gICAgICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXR0ciB8PSBGSUxFX0FUVFJJQlVURV9SRUFET05MWTsKLSAgICAgICAgICAgIHJlcyA9IFNldEZpbGVBdHRyaWJ1dGVzVyhQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyksIGF0dHIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoImNobW9kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOworI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpjaG1vZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmaSkpCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgIGludCBmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCA9IDA7CisjZW5kaWYKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZDSE1PRAorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfCRPJnA6Y2htb2QiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAmbW9kZSwKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKworI2lmICEoZGVmaW5lZChIQVZFX0ZDSE1PREFUKSB8fCBkZWZpbmVkKEhBVkVfTENITU9EKSkKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2htb2QiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKLSAgICBpZiAoYXR0ciAhPSAweEZGRkZGRkZGKSB7Ci0gICAgICAgIGlmIChpICYgX1NfSVdSSVRFKQorICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC53aWRlKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3cpOworICAgIGlmIChhdHRyID09IDB4RkZGRkZGRkYpCisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtb2RlICYgX1NfSVdSSVRFKQogICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF0dHIgfD0gRklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgIHJlcyA9IFNldEZpbGVBdHRyaWJ1dGVzQShwYXRoLCBhdHRyKTsKKyAgICAgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLndpZGUsIGF0dHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3csIGF0dHIpOworICAgIH0KKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJjaG1vZCIsIHBhdGgub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9GQ0hNT0QKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNobW9kKHBhdGguZmQsIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorI2lmZGVmIEhBVkVfTENITU9ECisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKKyAgICAgICAgcmVzdWx0ID0gbGNobW9kKHBhdGgubmFycm93LCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICFmb2xsb3dfc3ltbGlua3MpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogZmNobW9kYXQoKSBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IEFUX1NZTUxJTktfTk9GT0xMT1chCisgICAgICAgICAqIFRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSBzaG93cyBob3cgdG8gdXNlIGl0LAorICAgICAgICAgKiBhbmQgdGhlbiBzYXlzIGl0IGlzbid0IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgICogKHRydWUgb24gbGludXggd2l0aCBnbGliYyAyLjE1LCBhbmQgb3BlbmluZGlhbmEgMy54KQorICAgICAgICAgKgorICAgICAgICAgKiBPbmNlIGl0IGlzIHN1cHBvcnRlZCwgb3MuY2htb2Qgd2lsbCBhdXRvbWF0aWNhbGx5CisgICAgICAgICAqIHN1cHBvcnQgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3M9RmFsc2UuICAoSG9wZWZ1bGx5LikKKyAgICAgICAgICogVW50aWwgdGhlbiwgd2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoYXQgZXhjZXB0aW9uIHdlIHJhaXNlLgorICAgICAgICAgKi8KKyAgICAgICAgcmVzdWx0ID0gZmNobW9kYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1cpOworICAgICAgICAvKgorICAgICAgICAgKiBCdXQgd2FpdCEgIFdlIGNhbid0IHRocm93IHRoZSBleGNlcHRpb24gd2l0aG91dCBhbGxvd2luZyB0aHJlYWRzLAorICAgICAgICAgKiBhbmQgd2UgY2FuJ3QgZG8gdGhhdCBpbiB0aGlzIG5lc3RlZCBzY29wZS4gIChNYWNybyB0cmlja2VyeSwgc2lnaC4pCisgICAgICAgICAqLworICAgICAgICBmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgKChlcnJubyA9PSBFTk9UU1VQKSB8fCAoZXJybm8gPT0gRU9QTk9UU1VQUCkpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgIWZvbGxvd19zeW1saW5rczsKICAgICB9CiAgICAgZWxzZQotICAgICAgICByZXMgPSAwOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKCFyZXMpIHsKLSAgICAgICAgd2luMzJfZXJyb3IoImNobW9kIiwgcGF0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLSNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpjaG1vZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmaSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gY2htb2QocGF0aCwgaSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKICNlbmRpZgorICAgICAgICByZXN1bHQgPSBjaG1vZChwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgICAgIGlmIChmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCkgeworICAgICAgICAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgICAgICAgICBkaXJfZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJjaG1vZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2htb2QiLCBmb2xsb3dfc3ltbGlua3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigiY2htb2QiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZW5kaWYKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKKwogI2lmZGVmIEhBVkVfRkNITU9ECiBQeURvY19TVFJWQVIocG9zaXhfZmNobW9kX19kb2NfXywKICJmY2htb2QoZmQsIG1vZGUpXG5cblwKIENoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGVcblwKLWRlc2NyaXB0b3IgZmQuIik7CitkZXNjcmlwdG9yIGZkLiAgRXF1aXZhbGVudCB0byBvcy5jaG1vZChmZCwgbW9kZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjA0MCw3ICsyNzcxLDggQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9sY2htb2RfX2RvY19fLAogImxjaG1vZChwYXRoLCBtb2RlKVxuXG5cCiBDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuIElmIHBhdGggaXMgYSBzeW1saW5rLCB0aGlzXG5cCi1hZmZlY3RzIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LiIpOworYWZmZWN0cyB0aGUgbGluayBpdHNlbGYgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC5cblwKK0VxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2xjaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMDY2LDI4ICsyNzk4LDU2IEBACiAKICNpZmRlZiBIQVZFX0NIRkxBR1MKIFB5RG9jX1NUUlZBUihwb3NpeF9jaGZsYWdzX19kb2NfXywKLSJjaGZsYWdzKHBhdGgsIGZsYWdzKVxuXG5cCi1TZXQgZmlsZSBmbGFncy4iKTsKKyJjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorU2V0IGZpbGUgZmxhZ3MuXG5cCitcblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBjaGZsYWdzIHdpbGwgY2hhbmdlIGZsYWdzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZVxuXAorICBmaWxlIHRoZSBsaW5rIHBvaW50cyB0by5cblwKK2ZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uICBJZiBpdCBpc1xuXAordW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9jaGZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJms6Y2hmbGFncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmZmxhZ3MpKQorICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmt8JGk6Y2hmbGFncyIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKworI2lmbmRlZiBIQVZFX0xDSEZMQUdTCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNoZmxhZ3MiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisjZW5kaWYKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBjaGZsYWdzKHBhdGgsIGZsYWdzKTsKKyNpZmRlZiBIQVZFX0xDSEZMQUdTCisgICAgaWYgKCFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IGxjaGZsYWdzKHBhdGgubmFycm93LCBmbGFncyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGNoZmxhZ3MocGF0aC5uYXJyb3csIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoImNoZmxhZ3MiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAjZW5kaWYgLyogSEFWRV9DSEZMQUdTICovCiAKQEAgLTIwOTUsNyArMjg1NSw4IEBACiBQeURvY19TVFJWQVIocG9zaXhfbGNoZmxhZ3NfX2RvY19fLAogImxjaGZsYWdzKHBhdGgsIGZsYWdzKVxuXG5cCiBTZXQgZmlsZSBmbGFncy5cblwKLVRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiIpOworVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG5cCitFcXVpdmFsZW50IHRvIGNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9sY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMTQzLDYgKzI5MDQsMjEgQEAKIH0KICNlbmRpZiAvKiBIQVZFX0ZTWU5DICovCiAKKyNpZmRlZiBIQVZFX1NZTkMKK1B5RG9jX1NUUlZBUihwb3NpeF9zeW5jX19kb2NfXywKKyJzeW5jKClcblxuXAorRm9yY2Ugd3JpdGUgb2YgZXZlcnl0aGluZyB0byBkaXNrLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc3luYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgc3luYygpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfRkRBVEFTWU5DCiAKICNpZmRlZiBfX2hwdXgKQEAgLTIxNjQsMjkgKzI5NDAsMTA1IEBACiAKICNpZmRlZiBIQVZFX0NIT1dOCiBQeURvY19TVFJWQVIocG9zaXhfY2hvd25fX2RvY19fLAotImNob3duKHBhdGgsIHVpZCwgZ2lkKVxuXG5cCi1DaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLiIpOworImNob3duKHBhdGgsIHVpZCwgZ2lkLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK0NoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgY2hvd24gd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXNcblwKKyAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIGxvbmcgdWlkLCBnaWQ7Ci0gICAgaW50IHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mbGw6Y2hvd24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnVpZCwgJmdpZCkpCisgICAgcGF0aF90IHBhdGg7CisgICAgbG9uZyB1aWRfbCwgZ2lkX2w7CisgICAgdWlkX3QgdWlkOworICAgIGdpZF90IGdpZDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgImRpcl9mZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRkNIT1dOCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmxsfCRPJnA6Y2hvd24iLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVpZF9sLCAmZ2lkX2wsCisjaWZkZWYgSEFWRV9GQ0hPV05BVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisKKyNpZiAhKGRlZmluZWQoSEFWRV9MQ0hPV04pIHx8IGRlZmluZWQoSEFWRV9GQ0hPV05BVCkpCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNob3duIiwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworI2VuZGlmCisgICAgaWYgKGRpcl9mZF9hbmRfZmRfaW52YWxpZCgiY2hvd24iLCBkaXJfZmQsIHBhdGguZmQpIHx8CisgICAgICAgIGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiY2hvd24iLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyNpZmRlZiBfX0FQUExFX18KKyAgICAvKgorICAgICAqIFRoaXMgaXMgZm9yIE1hYyBPUyBYIDEwLjMsIHdoaWNoIGRvZXNuJ3QgaGF2ZSBsY2hvd24uCisgICAgICogKEJ1dCB3ZSBzdGlsbCBoYXZlIGFuIGxjaG93biBzeW1ib2wgYmVjYXVzZSBvZiB3ZWFrLWxpbmtpbmcuKQorICAgICAqIEl0IGRvZXNuJ3QgaGF2ZSBmY2hvd25hdCBlaXRoZXIuICBTbyB0aGVyZSdzIG5vIHBvc3NpYmlsaXR5CisgICAgICogb2YgYSBncmFjZWZ1bCBmYWlsb3Zlci4KKyAgICAgKi8KKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChsY2hvd24gPT0gTlVMTCkpIHsKKyAgICAgICAgZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2hvd24iLCBmb2xsb3dfc3ltbGlua3MpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gY2hvd24ocGF0aCwgKHVpZF90KSB1aWQsIChnaWRfdCkgZ2lkKTsKKyAgICB1aWQgPSAodWlkX3QpdWlkX2w7CisgICAgZ2lkID0gKHVpZF90KWdpZF9sOworI2lmZGVmIEhBVkVfRkNIT1dOCisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IGZjaG93bihwYXRoLmZkLCB1aWQsIGdpZCk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9MQ0hPV04KKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQorICAgICAgICByZXN1bHQgPSBsY2hvd24ocGF0aC5uYXJyb3csIHVpZCwgZ2lkKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX0ZDSE9XTkFUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICghZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmVzdWx0ID0gZmNob3duYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgdWlkLCBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gY2hvd24ocGF0aC5uYXJyb3csIHVpZCwgZ2lkKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoImNob3duIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogI2VuZGlmIC8qIEhBVkVfQ0hPV04gKi8KIApAQCAtMjE5NCw3ICszMDQ2LDcgQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9mY2hvd25fX2RvY19fLAogImZjaG93bihmZCwgdWlkLCBnaWQpXG5cblwKIENoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGUgZGVzY3JpcHRvclxuXAotZmQgdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuIik7CitmZCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC4gIEVxdWl2YWxlbnQgdG8gb3MuY2hvd24oZmQsIHVpZCwgZ2lkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZjaG93bihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMjE3LDcgKzMwNjksOCBAQAogUHlEb2NfU1RSVkFSKHBvc2l4X2xjaG93bl9fZG9jX18sCiAibGNob3duKHBhdGgsIHVpZCwgZ2lkKVxuXG5cCiBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLlxuXAotVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuIik7CitUaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cblwKK0VxdWl2YWxlbnQgdG8gb3MuY2hvd24ocGF0aCwgdWlkLCBnaWQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9sY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjI3OSw2ICszMTMyLDkgQEAKICAgICAgICAgaWYgKHdidWYyICE9IHdidWYpIGZyZWUod2J1ZjIpOwogICAgICAgICByZXR1cm4gcmVzb2JqOwogICAgIH0KKworICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQorICAgICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMjMxNiwxNTAgKzMxNzIsMjI2IEBACiB9CiAjZW5kaWYKIAorI2lmICgoIWRlZmluZWQoSEFWRV9MSU5LKSkgJiYgZGVmaW5lZChNU19XSU5ET1dTKSkKKyNkZWZpbmUgSEFWRV9MSU5LIDEKKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9MSU5LCiBQeURvY19TVFJWQVIocG9zaXhfbGlua19fZG9jX18sCi0ibGluayhzcmMsIGRzdClcblxuXAotQ3JlYXRlIGEgaGFyZCBsaW5rIHRvIGEgZmlsZS4iKTsKKyJsaW5rKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK0NyZWF0ZSBhIGhhcmQgbGluayB0byBhIGZpbGUuXG5cCitcblwKK0lmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGVcblwKKyAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpXG5cCisgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiBzcmMgaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBsaW5rIHdpbGwgY3JlYXRlIGEgbGluayB0byB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGVcblwKKyAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uXG5cCitzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91clxuXAorICBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuXAorICBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICByZXR1cm4gcG9zaXhfMnN0cihhcmdzLCAiTyZPJjpsaW5rIiwgbGluayk7Ci19Ci0jZW5kaWYgLyogSEFWRV9MSU5LICovCi0KKyAgICBwYXRoX3Qgc3JjLCBkc3Q7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwogI2lmZGVmIE1TX1dJTkRPV1MKLVB5RG9jX1NUUlZBUih3aW4zMl9saW5rX19kb2NfXywKLSJsaW5rKHNyYywgZHN0KVxuXG5cCi1DcmVhdGUgYSBoYXJkIGxpbmsgdG8gYSBmaWxlLiIpOworICAgIEJPT0wgcmVzdWx0OworI2Vsc2UKKyAgICBpbnQgcmVzdWx0OworI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb3NyYywgKm9kc3Q7Ci0gICAgY2hhciAqc3JjLCAqZHN0OwotICAgIEJPT0wgcnNsdDsKLQotICAgIFB5VW5pY29kZU9iamVjdCAqdXNyYywgKnVkc3Q7Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVOmxpbmsiLCAmdXNyYywgJnVkc3QpKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcnNsdCA9IENyZWF0ZUhhcmRMaW5rVyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh1ZHN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1c3JjKSwgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKHJzbHQgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigibGluayIsIE5VTEwpOwotCi0gICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgIH0KLQotICAgIC8qIE5hcnJvdyBzdHJpbmdzIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpsaW5rIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3NyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb2RzdCkpCisgICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKKyAgICBtZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8TyZPJnA6bGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQsCisgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzcmMgPSBQeUJ5dGVzX0FzU3RyaW5nKG9zcmMpOwotICAgIGRzdCA9IFB5Qnl0ZXNfQXNTdHJpbmcob2RzdCk7CisjaWZuZGVmIEhBVkVfTElOS0FUCisgICAgaWYgKChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkpIHsKKyAgICAgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoImxpbmsiLCAic3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCiAKKyAgICBpZiAoKHNyYy5uYXJyb3cgJiYgZHN0LndpZGUpIHx8IChzcmMud2lkZSAmJiBkc3QubmFycm93KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcnNsdCA9IENyZWF0ZUhhcmRMaW5rQShkc3QsIHNyYywgTlVMTCk7CisgICAgaWYgKHNyYy53aWRlKQorICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua1coZHN0LndpZGUsIHNyYy53aWRlLCBOVUxMKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rQShkc3QubmFycm93LCBzcmMubmFycm93LCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfREVDUkVGKG9zcmMpOwotICAgIFB5X0RFQ1JFRihvZHN0KTsKLSAgICBpZiAocnNsdCA9PSAwKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoImxpbmsiLCBOVUxMKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoImxpbmsiLCBkc3Qub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbHNlCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfTElOS0FUCisgICAgaWYgKChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAorICAgICAgICAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKKyAgICAgICAgKCFmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXN1bHQgPSBsaW5rYXQoc3JjX2Rpcl9mZCwgc3JjLm5hcnJvdywKKyAgICAgICAgICAgIGRzdF9kaXJfZmQsIGRzdC5uYXJyb3csCisgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyBBVF9TWU1MSU5LX0ZPTExPVyA6IDApOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBsaW5rKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoImxpbmsiLCAmZHN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZgorCiAKIAogUHlEb2NfU1RSVkFSKHBvc2l4X2xpc3RkaXJfX2RvY19fLAotImxpc3RkaXIoW3BhdGhdKSAtPiBsaXN0X29mX3N0cmluZ3NcblxuXAotUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZW50cmllcyBpbiB0aGUgZGlyZWN0b3J5LlxuXAotXG5cCi0gICAgcGF0aDogcGF0aCBvZiBkaXJlY3RvcnkgdG8gbGlzdCAoZGVmYXVsdDogJy4nKVxuXAotXG5cCisibGlzdGRpcihwYXRoPScuJykgLT4gbGlzdF9vZl9maWxlbmFtZXNcblxuXAorUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS5cblwKIFRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlci4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWxcblwKLWVudHJpZXMgJy4nIGFuZCAnLi4nIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LiIpOworZW50cmllcyAnLicgYW5kICcuLicgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuXG5cCitcblwKK3BhdGggY2FuIGJlIHNwZWNpZmllZCBhcyBlaXRoZXIgc3RyIG9yIGJ5dGVzLiAgSWYgcGF0aCBpcyBieXRlcyxcblwKKyAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgYnl0ZXM7IGluIGFsbCBvdGhlciBjaXJjdW1zdGFuY2VzXG5cCisgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBiZSBzdHIuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3I7XG5cCisgIHRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhIGRpcmVjdG9yeS5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xpc3RkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfbGlzdGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CisgICAgcGF0aF90IHBhdGg7CisgICAgUHlPYmplY3QgKmxpc3QgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgaW50IGZkID0gLTE7CisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfT1BFTkRJUikKKyAgICBQeU9iamVjdCAqdjsKKyAgICBIQU5ETEUgaEZpbmRGaWxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgQk9PTCByZXN1bHQ7CisgICAgV0lOMzJfRklORF9EQVRBIEZpbGVEYXRhOworICAgIGNoYXIgbmFtZWJ1ZltNQVhfUEFUSCs1XTsgLyogT3ZlcmFsbG9jYXRlIGZvciBcXCouKlwwICovCisgICAgY2hhciAqYnVmcHRyID0gbmFtZWJ1ZjsKKyAgICAvKiBvbmx5IGNsYWltIHRvIGhhdmUgc3BhY2UgZm9yIE1BWF9QQVRIICovCisgICAgUHlfc3NpemVfdCBsZW4gPSBzaXplb2YobmFtZWJ1ZiktNTsKKyAgICBQeU9iamVjdCAqcG8gPSBOVUxMOworICAgIHdjaGFyX3QgKnduYW1lYnVmID0gTlVMTDsKKyNlbGlmIGRlZmluZWQoUFlPU19PUzIpCisjaWZuZGVmIE1BWF9QQVRICisjZGVmaW5lIE1BWF9QQVRIICAgIENDSE1BWFBBVEgKKyNlbmRpZgorICAgIGNoYXIgKnB0OworICAgIFB5T2JqZWN0ICp2OworICAgIGNoYXIgbmFtZWJ1ZltNQVhfUEFUSCs1XTsKKyAgICBIRElSICBoZGlyID0gMTsKKyAgICBVTE9ORyBzcmNoY250ID0gMTsKKyAgICBGSUxFRklOREJVRjMgICBlcDsKKyAgICBBUElSRVQgcmM7CisjZWxzZQorICAgIFB5T2JqZWN0ICp2OworICAgIERJUiAqZGlycCA9IE5VTEw7CisgICAgc3RydWN0IGRpcmVudCAqZXA7CisgICAgaW50IHJldHVybl9zdHI7IC8qIGlmIGZhbHNlLCByZXR1cm4gYnl0ZXMgKi8KKyNlbmRpZgorCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGgubnVsbGFibGUgPSAxOworI2lmZGVmIEhBVkVfRkRPUEVORElSCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgcGF0aC5mZCA9IC0xOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mOmxpc3RkaXIiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogWFhYIFNob3VsZCByZWRvIHRoaXMgcHV0dGluZyB0aGUgKG5vdyBmb3VyKSB2ZXJzaW9ucyBvZiBvcGVuZGlyCiAgICAgICAgaW4gc2VwYXJhdGUgZmlsZXMgaW5zdGVhZCBvZiBoYXZpbmcgdGhlbSBhbGwgaGVyZS4uLiAqLwogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoSEFWRV9PUEVORElSKQotCi0gICAgUHlPYmplY3QgKmQsICp2OwotICAgIEhBTkRMRSBoRmluZEZpbGU7Ci0gICAgQk9PTCByZXN1bHQ7Ci0gICAgV0lOMzJfRklORF9EQVRBIEZpbGVEYXRhOwotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNV07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgXFwqLipcMCAqLwotICAgIGNoYXIgKmJ1ZnB0ciA9IG5hbWVidWY7Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBzaXplb2YobmFtZWJ1ZiktNTsgLyogb25seSBjbGFpbSB0byBoYXZlIHNwYWNlIGZvciBNQVhfUEFUSCAqLwotCi0gICAgUHlPYmplY3QgKnBvID0gTlVMTDsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifFU6bGlzdGRpciIsICZwbykpIHsKKyAgICBpZiAoIXBhdGgubmFycm93KSB7CiAgICAgICAgIFdJTjMyX0ZJTkRfREFUQVcgd0ZpbGVEYXRhOwotICAgICAgICBQeV9VTklDT0RFICp3bmFtZWJ1ZiwgKnBvX3djaGFyczsKKyAgICAgICAgd2NoYXJfdCAqcG9fd2NoYXJzOwogCi0gICAgICAgIGlmIChwbyA9PSBOVUxMKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KKyAgICAgICAgaWYgKCFwYXRoLndpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLwogICAgICAgICAgICAgcG9fd2NoYXJzID0gTCIuIjsKICAgICAgICAgICAgIGxlbiA9IDE7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb193Y2hhcnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyk7Ci0gICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUocG8pOworICAgICAgICAgICAgcG9fd2NoYXJzID0gcGF0aC53aWRlOworICAgICAgICAgICAgbGVuID0gd2NzbGVuKHBhdGgud2lkZSk7CiAgICAgICAgIH0KLSAgICAgICAgLyogT3ZlcmFsbG9jYXRlIGZvciBcXCouKlwwICovCisgICAgICAgIC8qIFRoZSArNSBpcyBzbyB3ZSBjYW4gYXBwZW5kICJcXCouKlwwIiAqLwogICAgICAgICB3bmFtZWJ1ZiA9IG1hbGxvYygobGVuICsgNSkgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICBpZiAoIXduYW1lYnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgd2NzY3B5KHduYW1lYnVmLCBwb193Y2hhcnMpOwogICAgICAgICBpZiAobGVuID4gMCkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSB3Y2ggPSB3bmFtZWJ1ZltsZW4tMV07CisgICAgICAgICAgICB3Y2hhcl90IHdjaCA9IHduYW1lYnVmW2xlbi0xXTsKICAgICAgICAgICAgIGlmICh3Y2ggIT0gTCcvJyAmJiB3Y2ggIT0gTCdcXCcgJiYgd2NoICE9IEwnOicpCiAgICAgICAgICAgICAgICAgd25hbWVidWZbbGVuKytdID0gTCdcXCc7CiAgICAgICAgICAgICB3Y3NjcHkod25hbWVidWYgKyBsZW4sIEwiKi4qIik7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKChkID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgewotICAgICAgICAgICAgZnJlZSh3bmFtZWJ1Zik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZVcod25hbWVidWYsICZ3RmlsZURhdGEpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkgewotICAgICAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgICAgIHJldHVybiBkOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgaWYgKGVycm9yID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgd2luMzJfZXJyb3JfdW5pY29kZSgiRmluZEZpcnN0RmlsZVciLCB3bmFtZWJ1Zik7Ci0gICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLwogICAgICAgICAgICAgaWYgKHdjc2NtcCh3RmlsZURhdGEuY0ZpbGVOYW1lLCBMIi4iKSAhPSAwICYmCiAgICAgICAgICAgICAgICAgd2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLi4iKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh3RmlsZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4od0ZpbGVEYXRhLmNGaWxlTmFtZSkpOworICAgICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdGaWxlRGF0YS5jRmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbGVuKHdGaWxlRGF0YS5jRmlsZU5hbWUpKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0yNDcwLDM4ICszNDAyLDE2IEBACiAgICAgICAgICAgICAvKiBGaW5kTmV4dEZpbGUgc2V0cyBlcnJvciB0byBFUlJPUl9OT19NT1JFX0ZJTEVTIGlmCiAgICAgICAgICAgICAgICBpdCBnb3QgdG8gdGhlIGVuZCBvZiB0aGUgZGlyZWN0b3J5LiAqLwogICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTk9fTU9SRV9GSUxFUykgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICB3aW4zMl9lcnJvcl91bmljb2RlKCJGaW5kTmV4dEZpbGVXIiwgd25hbWVidWYpOwotICAgICAgICAgICAgICAgIEZpbmRDbG9zZShoRmluZEZpbGUpOwotICAgICAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3JfdW5pY29kZSgiRmluZE5leHRGaWxlVyIsIHduYW1lYnVmKTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gd2hpbGUgKHJlc3VsdCA9PSBUUlVFKTsKIAotICAgICAgICBpZiAoRmluZENsb3NlKGhGaW5kRmlsZSkgPT0gRkFMU0UpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkZpbmRDbG9zZSIsIHduYW1lYnVmKTsKLSAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgZnJlZSh3bmFtZWJ1Zik7Ci0gICAgICAgIHJldHVybiBkOworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpsaXN0ZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlCeXRlc19HRVRfU0laRShvcGF0aCkrMSA+IE1BWF9QQVRIKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAicGF0aCB0b28gbG9uZyIpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgc3RyY3B5KG5hbWVidWYsIFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpKTsKLSAgICBsZW4gPSBQeU9iamVjdF9TaXplKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOworICAgIHN0cmNweShuYW1lYnVmLCBwYXRoLm5hcnJvdyk7CisgICAgbGVuID0gcGF0aC5sZW5ndGg7CiAgICAgaWYgKGxlbiA+IDApIHsKICAgICAgICAgY2hhciBjaCA9IG5hbWVidWZbbGVuLTFdOwogICAgICAgICBpZiAoY2ggIT0gU0VQICYmIGNoICE9IEFMVFNFUCAmJiBjaCAhPSAnOicpCkBAIC0yNTA5LDcgKzM0MTksNyBAQAogICAgICAgICBzdHJjcHkobmFtZWJ1ZiArIGxlbiwgIiouKiIpOwogICAgIH0KIAotICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC0yNTE4LDkgKzM0MjgsMTAgQEAKICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIGludCBlcnJvciA9IEdldExhc3RFcnJvcigpOwogICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpCi0gICAgICAgICAgICByZXR1cm4gZDsKLSAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoIkZpbmRGaXJzdEZpbGUiLCBuYW1lYnVmKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3IoIkZpbmRGaXJzdEZpbGUiLCBuYW1lYnVmKTsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KICAgICBkbyB7CiAgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLwpAQCAtMjUyOCwxNCArMzQzOSwxNCBAQAogICAgICAgICAgICAgc3RyY21wKEZpbGVEYXRhLmNGaWxlTmFtZSwgIi4uIikgIT0gMCkgewogICAgICAgICAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhGaWxlRGF0YS5jRmlsZU5hbWUpOwogICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCB2KSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0yNTQ2LDQ2ICszNDU3LDMzIEBACiAgICAgICAgIC8qIEZpbmROZXh0RmlsZSBzZXRzIGVycm9yIHRvIEVSUk9SX05PX01PUkVfRklMRVMgaWYKICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KICAgICAgICAgaWYgKCFyZXN1bHQgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTk9fTU9SRV9GSUxFUykgewotICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgd2luMzJfZXJyb3IoIkZpbmROZXh0RmlsZSIsIG5hbWVidWYpOwotICAgICAgICAgICAgRmluZENsb3NlKGhGaW5kRmlsZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgIGxpc3QgPSB3aW4zMl9lcnJvcigiRmluZE5leHRGaWxlIiwgbmFtZWJ1Zik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChyZXN1bHQgPT0gVFJVRSk7CiAKLSAgICBpZiAoRmluZENsb3NlKGhGaW5kRmlsZSkgPT0gRkFMU0UpIHsKLSAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoIkZpbmRDbG9zZSIsIG5hbWVidWYpOworZXhpdDoKKyAgICBpZiAoaEZpbmRGaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIGlmIChGaW5kQ2xvc2UoaEZpbmRGaWxlKSA9PSBGQUxTRSkgeworICAgICAgICAgICAgaWYgKGxpc3QgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJGaW5kQ2xvc2UiLCBwYXRoLm9iamVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CisgICAgaWYgKHduYW1lYnVmKQorICAgICAgICBmcmVlKHduYW1lYnVmKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogCi0gICAgcmV0dXJuIGQ7CisgICAgcmV0dXJuIGxpc3Q7CiAKICNlbGlmIGRlZmluZWQoUFlPU19PUzIpCi0KLSNpZm5kZWYgTUFYX1BBVEgKLSNkZWZpbmUgTUFYX1BBVEggICAgQ0NITUFYUEFUSAotI2VuZGlmCi0gICAgUHlPYmplY3QgKm9uYW1lOwotICAgIGNoYXIgKm5hbWUsICpwdDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBQeU9iamVjdCAqZCwgKnY7Ci0gICAgY2hhciBuYW1lYnVmW01BWF9QQVRIKzVdOwotICAgIEhESVIgIGhkaXIgPSAxOwotICAgIFVMT05HIHNyY2hjbnQgPSAxOwotICAgIEZJTEVGSU5EQlVGMyAgIGVwOwotICAgIEFQSVJFVCByYzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6bGlzdGRpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9uYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbmFtZSA9IFB5Qnl0ZXNfQXNTdHJpbmcob25hbWUpOwotICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob25hbWUpOwotICAgIGlmIChsZW4gPj0gTUFYX1BBVEgpIHsKLSAgICAgICAgUHlfREVDUkVGKG9uYW1lKTsKKyAgICBpZiAocGF0aC5sZW5ndGggPj0gTUFYX1BBVEgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJwYXRoIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIHN0cmNweShuYW1lYnVmLCBuYW1lKTsKKyAgICBzdHJjcHkobmFtZWJ1ZiwgcGF0aC5uYXJyb3cpOwogICAgIGZvciAocHQgPSBuYW1lYnVmOyAqcHQ7IHB0KyspCiAgICAgICAgIGlmICgqcHQgPT0gQUxUU0VQKQogICAgICAgICAgICAgKnB0ID0gU0VQOwpAQCAtMjU5Myw5ICszNDkxLDggQEAKICAgICAgICAgbmFtZWJ1ZltsZW4rK10gPSBTRVA7CiAgICAgc3RyY3B5KG5hbWVidWYgKyBsZW4sICIqLioiKTsKIAotICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogCiAgICAgcmMgPSBEb3NGaW5kRmlyc3QobmFtZWJ1ZiwgICAgICAgICAvKiBXaWxkY2FyZCBQYXR0ZXJuIHRvIE1hdGNoICovCkBAIC0yNjA3LDcgKzM1MDQsOSBAQAogCiAgICAgaWYgKHJjICE9IE5PX0VSUk9SKSB7CiAgICAgICAgIGVycm5vID0gRU5PRU5UOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob25hbWUpOworICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgIGxpc3QgPSBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgubmFycm93KTsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KIAogICAgIGlmIChzcmNoY250ID4gMCkgeyAvKiBJZiBEaXJlY3RvcnkgaXMgTk9UIFRvdGFsbHkgRW1wdHksICovCkBAIC0yNjIzLDU1ICszNTIyLDcwIEBACiAKICAgICAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmcobmFtZWJ1Zik7CiAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gTlVMTDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGQsIHYpICE9IDApIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIHYpICE9IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gTlVMTDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgfSB3aGlsZSAoRG9zRmluZE5leHQoaGRpciwgJmVwLCBzaXplb2YoZXApLCAmc3JjaGNudCkgPT0gTk9fRVJST1IgJiYgc3JjaGNudCA+IDApOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihvbmFtZSk7Ci0gICAgcmV0dXJuIGQ7CitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gbGlzdDsKICNlbHNlCi0gICAgUHlPYmplY3QgKm9uYW1lOwotICAgIGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKmQsICp2OwotICAgIERJUiAqZGlycDsKLSAgICBzdHJ1Y3QgZGlyZW50ICplcDsKLSAgICBpbnQgYXJnX2lzX3VuaWNvZGUgPSAxOwogCiAgICAgZXJybm8gPSAwOwotICAgIC8qIHYgaXMgbmV2ZXIgcmVhZCwgc28gaXQgZG9lcyBub3QgbmVlZCB0byBiZSBpbml0aWFsaXplZCB5ZXQuICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8VTpsaXN0ZGlyIiwgJnYpKSB7Ci0gICAgICAgIGFyZ19pc191bmljb2RlID0gMDsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgb25hbWUgPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOmxpc3RkaXIiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChvbmFtZSA9PSBOVUxMKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KLSAgICAgICAgb25hbWUgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoIi4iKTsKLSAgICB9Ci0gICAgbmFtZSA9IFB5Qnl0ZXNfQXNTdHJpbmcob25hbWUpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBkaXJwID0gb3BlbmRpcihuYW1lKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChkaXJwID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9uYW1lKTsKLSAgICB9Ci0gICAgaWYgKChkID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworI2lmZGVmIEhBVkVfRkRPUEVORElSCisgICAgaWYgKHBhdGguZmQgIT0gLTEpIHsKKyAgICAgICAgLyogY2xvc2VkaXIoKSBjbG9zZXMgdGhlIEZELCBzbyB3ZSBkdXBsaWNhdGUgaXQgKi8KICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBjbG9zZWRpcihkaXJwKTsKKyAgICAgICAgZmQgPSBkdXAocGF0aC5mZCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIFB5X0RFQ1JFRihvbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGlmIChmZCA9PSAtMSkgeworICAgICAgICAgICAgbGlzdCA9IHBvc2l4X2Vycm9yKCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm5fc3RyID0gMTsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGRpcnAgPSBmZG9wZW5kaXIoZmQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyAgICB7CisgICAgICAgIGNoYXIgKm5hbWU7CisgICAgICAgIGlmIChwYXRoLm5hcnJvdykgeworICAgICAgICAgICAgbmFtZSA9IHBhdGgubmFycm93OworICAgICAgICAgICAgLyogb25seSByZXR1cm4gYnl0ZXMgaWYgdGhleSBzcGVjaWZpZWQgYSBieXRlcyBvYmplY3QgKi8KKyAgICAgICAgICAgIHJldHVybl9zdHIgPSAhKFB5Qnl0ZXNfQ2hlY2socGF0aC5vYmplY3QpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG5hbWUgPSAiLiI7CisgICAgICAgICAgICByZXR1cm5fc3RyID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZGlycCA9IG9wZW5kaXIobmFtZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorCisgICAgaWYgKGRpcnAgPT0gTlVMTCkgeworICAgICAgICBsaXN0ID0gcGF0aF9lcnJvcigibGlzdGRpciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAoKGxpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAgICAgZm9yICg7OykgewogICAgICAgICBlcnJubyA9IDA7CkBAIC0yNjgyLDM4ICszNTk2LDQzIEBACiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gMCkgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgY2xvc2VkaXIoZGlycCk7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9uYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IoImxpc3RkaXIiLCAmcGF0aCk7CisgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChlcC0+ZF9uYW1lWzBdID09ICcuJyAmJgogICAgICAgICAgICAgKE5BTUxFTihlcCkgPT0gMSB8fAogICAgICAgICAgICAgIChlcC0+ZF9uYW1lWzFdID09ICcuJyAmJiBOQU1MRU4oZXApID09IDIpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoYXJnX2lzX3VuaWNvZGUpCisgICAgICAgIGlmIChyZXR1cm5fc3RyKQogICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGVwLT5kX25hbWUsIE5BTUxFTihlcCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShlcC0+ZF9uYW1lLCBOQU1MRU4oZXApKTsKICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfQ0xFQVIoZCk7CisgICAgICAgICAgICBQeV9DTEVBUihsaXN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGQsIHYpICE9IDApIHsKKyAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfQ0xFQVIoZCk7CisgICAgICAgICAgICBQeV9DTEVBUihsaXN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICB9Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGNsb3NlZGlyKGRpcnApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKG9uYW1lKTsKIAotICAgIHJldHVybiBkOworZXhpdDoKKyAgICBpZiAoZGlycCAhPSBOVUxMKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGZkID4gLTEpCisgICAgICAgICAgICByZXdpbmRkaXIoZGlycCk7CisgICAgICAgIGNsb3NlZGlyKGRpcnApOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gbGlzdDsKIAogI2VuZGlmIC8qIHdoaWNoIE9TICovCiB9ICAvKiBlbmQgb2YgcG9zaXhfbGlzdGRpciAqLwpAQCAtMjcyMywzMSArMzY0MiwzNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X19nZXRmdWxscGF0aG5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOworICAgIGNvbnN0IGNoYXIgKnBhdGg7CiAgICAgY2hhciBvdXRidWZbTUFYX1BBVEgqMl07CiAgICAgY2hhciAqdGVtcDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2dldGZ1bGxwYXRobmFtZSIsICZwbykpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqd3BhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyk7Ci0gICAgICAgIFB5X1VOSUNPREUgd291dGJ1ZltNQVhfUEFUSCoyXSwgKndvdXRidWZwID0gd291dGJ1ZjsKLSAgICAgICAgUHlfVU5JQ09ERSAqd3RlbXA7CisgICAgUHlPYmplY3QgKnBvOworCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXRmdWxscGF0aG5hbWUiLCAmcG8pKQorICAgIHsKKyAgICAgICAgd2NoYXJfdCAqd3BhdGg7CisgICAgICAgIHdjaGFyX3Qgd291dGJ1ZltNQVhfUEFUSCoyXSwgKndvdXRidWZwID0gd291dGJ1ZjsKKyAgICAgICAgd2NoYXJfdCAqd3RlbXA7CiAgICAgICAgIERXT1JEIHJlc3VsdDsKICAgICAgICAgUHlPYmplY3QgKnY7CisKKyAgICAgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICAgICAgaWYgKHdwYXRoID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyh3cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yod291dGJ1Zikvc2l6ZW9mKHdvdXRidWZbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3V0YnVmLCAmd3RlbXApOwotICAgICAgICBpZiAocmVzdWx0ID4gc2l6ZW9mKHdvdXRidWYpL3NpemVvZih3b3V0YnVmWzBdKSkgewotICAgICAgICAgICAgd291dGJ1ZnAgPSBtYWxsb2MocmVzdWx0ICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgaWYgKHJlc3VsdCA+IFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSkgeworICAgICAgICAgICAgd291dGJ1ZnAgPSBtYWxsb2MocmVzdWx0ICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgICAgIGlmICghd291dGJ1ZnApCiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHdwYXRoLCByZXN1bHQsIHdvdXRidWZwLCAmd3RlbXApOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHdvdXRidWZwLCB3Y3NsZW4od291dGJ1ZnApKTsKKyAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdvdXRidWZwLCB3Y3NsZW4od291dGJ1ZnApKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdiA9IHdpbjMyX2Vycm9yX3VuaWNvZGUoIkdldEZ1bGxQYXRoTmFtZVciLCB3cGF0aCk7CisgICAgICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcG8pOwogICAgICAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKICAgICAgICAgICAgIGZyZWUod291dGJ1ZnApOwogICAgICAgICByZXR1cm4gdjsKQEAgLTI3NTYsMTggKzM2NzksMTYgQEAKICAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KICAgICBQeUVycl9DbGVhcigpOwogCi0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJ5Ol9nZXRmdWxscGF0aG5hbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgaWYgKCFHZXRGdWxsUGF0aE5hbWUocGF0aCwgc2l6ZW9mKG91dGJ1Zikvc2l6ZW9mKG91dGJ1ZlswXSksCisgICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgsIFB5X0FSUkFZX0xFTkdUSChvdXRidWYpLAogICAgICAgICAgICAgICAgICAgICAgICAgIG91dGJ1ZiwgJnRlbXApKSB7CiAgICAgICAgIHdpbjMyX2Vycm9yKCJHZXRGdWxsUGF0aE5hbWUiLCBwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhQeVR1cGxlX0dldEl0ZW0oYXJncywgMCkpKSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlKG91dGJ1Ziwgc3RybGVuKG91dGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsIE5VTEwpOwpAQCAtMjc4NSwxMiArMzcwNiwxNCBAQAogICAgIGludCBidWZfc2l6ZTsKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKICAgICBpbnQgcmVzdWx0X2xlbmd0aDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKICAgICB3Y2hhcl90ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1fDpfZ2V0ZmluYWxwYXRobmFtZSIsICZwYXRoKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2dldGZpbmFscGF0aG5hbWUiLCAmcG8pKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocG8pOworICAgIGlmIChwYXRoID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYoIWNoZWNrX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSgpKSB7CiAgICAgICAgIC8qIElmIHRoZSBPUyBkb2Vzbid0IGhhdmUgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlLCByZXR1cm4gYQpAQCAtMjgwOSwxOCArMzczMiwxNSBAQAogICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywKICAgICAgICAgTlVMTCk7CiAKLSAgICBpZihoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFteUJ5SGFuZGxlIiwgcGF0aCk7Ci0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgZ2V0IGEgaGFuZGxlIHRvIGZpbGUuIik7Ci0gICAgfQorICAgIGlmKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJDcmVhdGVGaWxlVyIsIHBvKTsKIAogICAgIC8qIFdlIGhhdmUgYSBnb29kIGhhbmRsZSB0byB0aGUgdGFyZ2V0LCB1c2UgaXQgdG8gZGV0ZXJtaW5lIHRoZQogICAgICAgIHRhcmdldCBwYXRoIG5hbWUuICovCiAgICAgYnVmX3NpemUgPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhGaWxlLCAwLCAwLCBWT0xVTUVfTkFNRV9OVCk7CiAKICAgICBpZighYnVmX3NpemUpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUiLCBwYXRoKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcG8pOwogCiAgICAgdGFyZ2V0X3BhdGggPSAod2NoYXJfdCAqKW1hbGxvYygoYnVmX3NpemUrMSkqc2l6ZW9mKHdjaGFyX3QpKTsKICAgICBpZighdGFyZ2V0X3BhdGgpCkBAIC0yODI5LDEzICszNzQ5LDEzIEBACiAgICAgcmVzdWx0X2xlbmd0aCA9IFB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaEZpbGUsIHRhcmdldF9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zl9zaXplLCBWT0xVTUVfTkFNRV9ET1MpOwogICAgIGlmKCFyZXN1bHRfbGVuZ3RoKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFteUJ5SGFuZGxlIiwgcGF0aCk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBvKTsKIAogICAgIGlmKCFDbG9zZUhhbmRsZShoRmlsZSkpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUiLCBwYXRoKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ2xvc2VIYW5kbGUiLCBwbyk7CiAKICAgICB0YXJnZXRfcGF0aFtyZXN1bHRfbGVuZ3RoXSA9IDA7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHRhcmdldF9wYXRoLCByZXN1bHRfbGVuZ3RoKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHRhcmdldF9wYXRoLCByZXN1bHRfbGVuZ3RoKTsKICAgICBmcmVlKHRhcmdldF9wYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwogCkBAIC0yODcyLDEzICszNzkyLDE0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfX2lzZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOworICAgIGNvbnN0IGNoYXIgKnBhdGg7CisgICAgUHlPYmplY3QgKnBvOwogICAgIERXT1JEIGF0dHJpYnV0ZXM7CiAKICAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2lzZGlyIiwgJnBvKSkgewotICAgICAgICBQeV9VTklDT0RFICp3cGF0aCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHBvKTsKKyAgICAgICAgd2NoYXJfdCAqd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICAgICAgaWYgKHdwYXRoID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHdwYXRoKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpCkBAIC0yODg5LDExICszODEwLDEwIEBACiAgICAgICAgYXJlIGFsc28gdmFsaWQuICovCiAgICAgUHlFcnJfQ2xlYXIoKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6X2lzZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieTpfaXNkaXIiLCAmcGF0aCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOworICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgpOwogICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CkBAIC0yOTA3LDY5ICszODI3LDcyIEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBQeURvY19TVFJWQVIocG9zaXhfbWtkaXJfX2RvY19fLAotIm1rZGlyKHBhdGggWywgbW9kZT0wNzc3XSlcblxuXAotQ3JlYXRlIGEgZGlyZWN0b3J5LiIpOworIm1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKVxuXG5cCitDcmVhdGUgYSBkaXJlY3RvcnkuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuXG5cCitcblwKK1RoZSBtb2RlIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X21rZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBpbnQgcmVzOwotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOworICAgIHBhdGhfdCBwYXRoOwogICAgIGludCBtb2RlID0gMDc3NzsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgcmVzdWx0OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtkaXIiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwKKyNpZmRlZiBIQVZFX01LRElSQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXxpOm1rZGlyIiwgJnBvLCAmbW9kZSkpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSBPSyB3aXRob3V0IHRocmVhZCBsb2NrIGFzCi0gICAgICAgICAgIGl0IGlzIGEgc2ltcGxlIGRlcmVmZXJlbmNlLiAqLwotICAgICAgICByZXMgPSBDcmVhdGVEaXJlY3RvcnlXKFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSwgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoIm1rZGlyIiwgUHlVbmljb2RlX0FTX1VOSUNPREUocG8pKTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9Ci0gICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxpOm1rZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSBPSyB3aXRob3V0IHRocmVhZCBsb2NrIGFzCi0gICAgICAgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgcmVzID0gQ3JlYXRlRGlyZWN0b3J5QShwYXRoLCBOVUxMKTsKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgud2lkZSwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlBKHBhdGgubmFycm93LCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICghcmVzKSB7Ci0gICAgICAgIHdpbjMyX2Vycm9yKCJta2RpciIsIHBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci0jZWxzZQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxpOm1rZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZiAoIGRlZmluZWQoX19XQVRDT01DX18pIHx8IGRlZmluZWQoUFlDQ19WQUNQUCkgKSAmJiAhZGVmaW5lZChfX1FOWF9fKQotICAgIHJlcyA9IG1rZGlyKHBhdGgpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdCgibWtkaXIiLCBwYXRoLm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAjZWxzZQotICAgIHJlcyA9IG1rZGlyKHBhdGgsIG1vZGUpOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZiBIQVZFX01LRElSQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSBta2RpcmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorI2lmICggZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChQWUNDX1ZBQ1BQKSApICYmICFkZWZpbmVkKF9fUU5YX18pCisgICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgubmFycm93KTsKKyNlbHNlCisgICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgubmFycm93LCBtb2RlKTsKICNlbmRpZgogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvcGF0aCk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigibWtkaXIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAjZW5kaWYKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiAKQEAgLTMwMTUsNzkgKzM5MzgsMjIwIEBACiB9CiAjZW5kaWYgLyogSEFWRV9OSUNFICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9yZW5hbWVfX2RvY19fLAotInJlbmFtZShvbGQsIG5ldylcblxuXAotUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnkuIik7CisKKyNpZmRlZiBIQVZFX0dFVFBSSU9SSVRZCitQeURvY19TVFJWQVIocG9zaXhfZ2V0cHJpb3JpdHlfX2RvY19fLAorImdldHByaW9yaXR5KHdoaWNoLCB3aG8pIC0+IGN1cnJlbnRfcHJpb3JpdHlcblxuXAorR2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlbmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9nZXRwcmlvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5T2JqZWN0ICpvMSwgKm8yOwotICAgIGNoYXIgKnAxLCAqcDI7Ci0gICAgQk9PTCByZXN1bHQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpyZW5hbWUiLCAmbzEsICZvMikpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKCFjb252ZXJ0X3RvX3VuaWNvZGUoJm8xKSkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoIWNvbnZlcnRfdG9fdW5pY29kZSgmbzIpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvMSk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBNb3ZlRmlsZVcoUHlVbmljb2RlX0FzVW5pY29kZShvMSksCi0gICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VuaWNvZGUobzIpKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvMSk7Ci0gICAgUHlfREVDUkVGKG8yKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJyZW5hbWUiLCBOVUxMKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci1lcnJvcjoKLSAgICBQeUVycl9DbGVhcigpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3M6cmVuYW1lIiwgJnAxLCAmcDIpKQorICAgIGludCB3aGljaCwgd2hvLCByZXR2YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJndoaWNoLCAmd2hvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlc3VsdCA9IE1vdmVGaWxlQShwMSwgcDIpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigicmVuYW1lIiwgTlVMTCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGVycm5vID0gMDsKKyAgICByZXR2YWwgPSBnZXRwcmlvcml0eSh3aGljaCwgd2hvKTsKKyAgICBpZiAoZXJybm8gIT0gMCkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylyZXR2YWwpOworfQorI2VuZGlmIC8qIEhBVkVfR0VUUFJJT1JJVFkgKi8KKworCisjaWZkZWYgSEFWRV9TRVRQUklPUklUWQorUHlEb2NfU1RSVkFSKHBvc2l4X3NldHByaW9yaXR5X19kb2NfXywKKyJzZXRwcmlvcml0eSh3aGljaCwgd2hvLCBwcmlvKSAtPiBOb25lXG5cblwKK1NldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zZXRwcmlvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHdoaWNoLCB3aG8sIHByaW8sIHJldHZhbDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpIiwgJndoaWNoLCAmd2hvLCAmcHJpbykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHZhbCA9IHNldHByaW9yaXR5KHdoaWNoLCB3aG8sIHByaW8pOworICAgIGlmIChyZXR2YWwgPT0gLTEpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmIC8qIEhBVkVfU0VUUFJJT1JJVFkgKi8KKworCitzdGF0aWMgUHlPYmplY3QgKgoraW50ZXJuYWxfcmVuYW1lKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLCBpbnQgaXNfcmVwbGFjZSkKK3sKKyAgICBjaGFyICpmdW5jdGlvbl9uYW1lID0gaXNfcmVwbGFjZSA/ICJyZXBsYWNlIiA6ICJyZW5hbWUiOworICAgIHBhdGhfdCBzcmM7CisgICAgcGF0aF90IGRzdDsKKyAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGRpcl9mZF9zcGVjaWZpZWQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY2hhciBmb3JtYXRbMjRdOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworCisjaWZkZWYgTVNfV0lORE9XUworICAgIEJPT0wgcmVzdWx0OworICAgIGludCBmbGFncyA9IGlzX3JlcGxhY2UgPyBNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HIDogMDsKICNlbHNlCi0gICAgcmV0dXJuIHBvc2l4XzJzdHIoYXJncywgIk8mTyY6cmVuYW1lIiwgcmVuYW1lKTsKKyAgICBpbnQgcmVzdWx0OwogI2VuZGlmCisKKyAgICBtZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOworICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7CisgICAgc3RyY3B5KGZvcm1hdCwgIk8mTyZ8JE8mTyY6Iik7CisgICAgc3RyY2F0KGZvcm1hdCwgZnVuY3Rpb25fbmFtZSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCBmb3JtYXQsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZkc3QsCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZGlyX2ZkX3NwZWNpZmllZCA9IChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCk7CisjaWZuZGVmIEhBVkVfUkVOQU1FQVQKKyAgICBpZiAoZGlyX2ZkX3NwZWNpZmllZCkgeworICAgICAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihmdW5jdGlvbl9uYW1lLCAic3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAoKHNyYy5uYXJyb3cgJiYgZHN0LndpZGUpIHx8IChzcmMud2lkZSAmJiBkc3QubmFycm93KSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlczogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIiwgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChzcmMud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeFcoc3JjLndpZGUsIGRzdC53aWRlLCBmbGFncyk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4QShzcmMubmFycm93LCBkc3QubmFycm93LCBmbGFncyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdChmdW5jdGlvbl9uYW1lLCBkc3Qub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworI2Vsc2UKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9SRU5BTUVBVAorICAgIGlmIChkaXJfZmRfc3BlY2lmaWVkKQorICAgICAgICByZXN1bHQgPSByZW5hbWVhdChzcmNfZGlyX2ZkLCBzcmMubmFycm93LCBkc3RfZGlyX2ZkLCBkc3QubmFycm93KTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gcmVuYW1lKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoZnVuY3Rpb25fbmFtZSwgJmRzdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZW5kaWYKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnNyYyk7CisgICAgcGF0aF9jbGVhbnVwKCZkc3QpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKK1B5RG9jX1NUUlZBUihwb3NpeF9yZW5hbWVfX2RvY19fLAorInJlbmFtZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpXG5cblwKK1JlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LlxuXAorXG5cCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK3NyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9yZW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHJldHVybiBpbnRlcm5hbF9yZW5hbWUoYXJncywga3dhcmdzLCAwKTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3JlcGxhY2VfX2RvY19fLAorInJlcGxhY2Uoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKVxuXG5cCitSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeSwgb3ZlcndyaXRpbmcgdGhlIGRlc3RpbmF0aW9uLlxuXAorXG5cCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK3NyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9yZXBsYWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICByZXR1cm4gaW50ZXJuYWxfcmVuYW1lKGFyZ3MsIGt3YXJncywgMSk7Cit9CiAKIFB5RG9jX1NUUlZBUihwb3NpeF9ybWRpcl9fZG9jX18sCi0icm1kaXIocGF0aClcblxuXAotUmVtb3ZlIGEgZGlyZWN0b3J5LiIpOworInJtZGlyKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCitSZW1vdmUgYSBkaXJlY3RvcnkuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ybWRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9ybWRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl8xc3RyKGFyZ3MsICJybWRpciIsICJ5OnJtZGlyIiwgUmVtb3ZlRGlyZWN0b3J5QSwgIlU6cm1kaXIiLCBSZW1vdmVEaXJlY3RvcnlXKTsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6cm1kaXIiLCBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCiAjZWxzZQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpybWRpciIsIHJtZGlyKTsKKyAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAogI2VuZGlmCi19CisgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotCi1QeURvY19TVFJWQVIocG9zaXhfc3RhdF9fZG9jX18sCi0ic3RhdChwYXRoKSAtPiBzdGF0IHJlc3VsdFxuXG5cCi1QZXJmb3JtIGEgc3RhdCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3N0YXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoteworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOnN0YXQiLCBTVEFULCAiVTpzdGF0Iiwgd2luMzJfc3RhdF93KTsKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlXKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlBKHBhdGgubmFycm93KTsKKyAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLwogI2Vsc2UKLSAgICByZXR1cm4gcG9zaXhfZG9fc3RhdChzZWxmLCBhcmdzLCAiTyY6c3RhdCIsIFNUQVQsIE5VTEwsIE5VTEwpOworI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgubmFycm93LCBBVF9SRU1PVkVESVIpOworICAgIGVsc2UKICNlbmRpZgorICAgICAgICByZXN1bHQgPSBybWRpcihwYXRoLm5hcnJvdyk7CisjZW5kaWYKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJybWRpciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogCkBAIC0zMTc5LDE2MyArNDI0Myw0NjggQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIFB5RG9jX1NUUlZBUihwb3NpeF91bmxpbmtfX2RvY19fLAotInVubGluayhwYXRoKVxuXG5cCi1SZW1vdmUgYSBmaWxlIChzYW1lIGFzIHJlbW92ZShwYXRoKSkuIik7CisidW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCitSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHJlbW92ZSgpKS5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogUHlEb2NfU1RSVkFSKHBvc2l4X3JlbW92ZV9fZG9jX18sCi0icmVtb3ZlKHBhdGgpXG5cblwKLVJlbW92ZSBhIGZpbGUgKHNhbWUgYXMgdW5saW5rKHBhdGgpKS4iKTsKKyJyZW1vdmUocGF0aCwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKK1JlbW92ZSBhIGZpbGUgKHNhbWUgYXMgdW5saW5rKCkpLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdW5saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3VubGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl8xc3RyKGFyZ3MsICJyZW1vdmUiLCAieTpyZW1vdmUiLCBEZWxldGVGaWxlQSwKLSAgICAgICAgICAgICAgICAgICAgICAiVTpyZW1vdmUiLCBQeV9EZWxldGVGaWxlVyk7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnVubGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKICNlbHNlCi0gICAgcmV0dXJuIHBvc2l4XzFzdHIoYXJncywgIk8mOnJlbW92ZSIsIHVubGluayk7CisgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKICNlbmRpZgorICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIHJlc3VsdCA9IFB5X0RlbGV0ZUZpbGVXKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBEZWxldGVGaWxlQShwYXRoLm5hcnJvdyk7CisgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KKyNlbHNlCisjaWZkZWYgSEFWRV9VTkxJTktBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IHVubGlua2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIDApOworICAgIGVsc2UKKyNlbmRpZiAvKiBIQVZFX1VOTElOS0FUICovCisgICAgICAgIHJlc3VsdCA9IHVubGluayhwYXRoLm5hcnJvdyk7CisjZW5kaWYKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJ1bmxpbmsiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIAotI2lmZGVmIEhBVkVfVU5BTUUKIFB5RG9jX1NUUlZBUihwb3NpeF91bmFtZV9fZG9jX18sCi0idW5hbWUoKSAtPiAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpXG5cblwKLVJldHVybiBhIHR1cGxlIGlkZW50aWZ5aW5nIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uIik7CisidW5hbWUoKSAtPiB1bmFtZV9yZXN1bHRcblxuXAorUmV0dXJuIGFuIG9iamVjdCBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLlxuXAorVGhlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBuYW1lZCB0dXBsZSB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOlxuXAorICAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpIik7CiAKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHVuYW1lX3Jlc3VsdF9maWVsZHNbXSA9IHsKKyAgICB7InN5c25hbWUiLCAgICAib3BlcmF0aW5nIHN5c3RlbSBuYW1lIn0sCisgICAgeyJub2RlbmFtZSIsICAgIm5hbWUgb2YgbWFjaGluZSBvbiBuZXR3b3JrIChpbXBsZW1lbnRhdGlvbi1kZWZpbmVkKSJ9LAorICAgIHsicmVsZWFzZSIsICAgICJvcGVyYXRpbmcgc3lzdGVtIHJlbGVhc2UifSwKKyAgICB7InZlcnNpb24iLCAgICAib3BlcmF0aW5nIHN5c3RlbSB2ZXJzaW9uIn0sCisgICAgeyJtYWNoaW5lIiwgICAgImhhcmR3YXJlIGlkZW50aWZpZXIifSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUih1bmFtZV9yZXN1bHRfX2RvY19fLAorInVuYW1lX3Jlc3VsdDogUmVzdWx0IGZyb20gb3MudW5hbWUoKS5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisgIChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIGFuZCBtYWNoaW5lLlxuXAorXG5cCitTZWUgb3MudW5hbWUgZm9yIG1vcmUgaW5mb3JtYXRpb24uIik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgdW5hbWVfcmVzdWx0X2Rlc2MgPSB7CisgICAgInVuYW1lX3Jlc3VsdCIsIC8qIG5hbWUgKi8KKyAgICB1bmFtZV9yZXN1bHRfX2RvY19fLCAvKiBkb2MgKi8KKyAgICB1bmFtZV9yZXN1bHRfZmllbGRzLAorICAgIDUKK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgVW5hbWVSZXN1bHRUeXBlOworCisKKyNpZmRlZiBIQVZFX1VOQU1FCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfdW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCiB7CiAgICAgc3RydWN0IHV0c25hbWUgdTsKICAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSB1bmFtZSgmdSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihzc3NzcykiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHUuc3lzbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1Lm5vZGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIHUucmVsZWFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1LnZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgdS5tYWNoaW5lKTsKKworICAgIHZhbHVlID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlVuYW1lUmVzdWx0VHlwZSk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisjZGVmaW5lIFNFVChpLCBmaWVsZCkgXAorICAgIHsgXAorICAgIFB5T2JqZWN0ICpvID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKGZpZWxkLCBzdHJsZW4oZmllbGQpLCBOVUxMKTsgXAorICAgIGlmICghbykgeyBcCisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9IFwKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHZhbHVlLCBpLCBvKTsgXAorICAgIH0gXAorCisgICAgU0VUKDAsIHUuc3lzbmFtZSk7CisgICAgU0VUKDEsIHUubm9kZW5hbWUpOworICAgIFNFVCgyLCB1LnJlbGVhc2UpOworICAgIFNFVCgzLCB1LnZlcnNpb24pOworICAgIFNFVCg0LCB1Lm1hY2hpbmUpOworCisjdW5kZWYgU0VUCisKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAjZW5kaWYgLyogSEFWRV9VTkFNRSAqLwogCi1zdGF0aWMgaW50Ci1leHRyYWN0X3RpbWUoUHlPYmplY3QgKnQsIHRpbWVfdCogc2VjLCBsb25nKiB1c2VjKQotewotICAgIHRpbWVfdCBpbnR2YWw7Ci0gICAgaWYgKFB5RmxvYXRfQ2hlY2sodCkpIHsKLSAgICAgICAgZG91YmxlIHR2YWwgPSBQeUZsb2F0X0FzRG91YmxlKHQpOwotICAgICAgICBQeU9iamVjdCAqaW50b2JqID0gUHlOdW1iZXJfTG9uZyh0KTsKLSAgICAgICAgaWYgKCFpbnRvYmopCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0jaWYgU0laRU9GX1RJTUVfVCA+IFNJWkVPRl9MT05HCi0gICAgICAgIGludHZhbCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKGludG9iaik7Ci0jZWxzZQotICAgICAgICBpbnR2YWwgPSBQeUxvbmdfQXNMb25nKGludG9iaik7Ci0jZW5kaWYKLSAgICAgICAgUHlfREVDUkVGKGludG9iaik7Ci0gICAgICAgIGlmIChpbnR2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgKnNlYyA9IGludHZhbDsKLSAgICAgICAgKnVzZWMgPSAobG9uZykoKHR2YWwgLSBpbnR2YWwpICogMWU2KTsgLyogY2FuJ3QgZXhjZWVkIDEwMDAwMDAgKi8KLSAgICAgICAgaWYgKCp1c2VjIDwgMCkKLSAgICAgICAgICAgIC8qIElmIHJvdW5kaW5nIGdhdmUgdXMgYSBuZWdhdGl2ZSBudW1iZXIsCi0gICAgICAgICAgICAgICB0cnVuY2F0ZS4gICovCi0gICAgICAgICAgICAqdXNlYyA9IDA7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSNpZiBTSVpFT0ZfVElNRV9UID4gU0laRU9GX0xPTkcKLSAgICBpbnR2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayh0KTsKLSNlbHNlCi0gICAgaW50dmFsID0gUHlMb25nX0FzTG9uZyh0KTsKLSNlbmRpZgotICAgIGlmIChpbnR2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICpzZWMgPSBpbnR2YWw7Ci0gICAgKnVzZWMgPSAwOwotICAgIHJldHVybiAwOwotfQogCiBQeURvY19TVFJWQVIocG9zaXhfdXRpbWVfX2RvY19fLAotInV0aW1lKHBhdGgsIChhdGltZSwgbXRpbWUpKVxuXAotdXRpbWUocGF0aCwgTm9uZSlcblxuXAotU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWUgb2YgdGhlIGZpbGUgdG8gdGhlIGdpdmVuIHZhbHVlcy4gIElmIHRoZVxuXAotc2Vjb25kIGZvcm0gaXMgdXNlZCwgc2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzIHRvIHRoZSBjdXJyZW50IHRpbWUuIik7CisidXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKiwgbnM9Tm9uZSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXAorU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWUgb2YgcGF0aC5cblwKK1xuXAorcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXAorXG5cCitJZiB0aW1lcyBpcyBub3QgTm9uZSwgaXQgbXVzdCBiZSBhIHR1cGxlIChhdGltZSwgbXRpbWUpO1xuXAorICAgIGF0aW1lIGFuZCBtdGltZSBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGZsb2F0IHNlY29uZHMgc2luY2UgdGhlIGVwb2NoLlxuXAorSWYgbnMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWVfbnMsIG10aW1lX25zKTtcblwKKyAgICBhdGltZV9ucyBhbmQgbXRpbWVfbnMgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBpbnRlZ2VyIG5hbm9zZWNvbmRzXG5cCisgICAgc2luY2UgdGhlIGVwb2NoLlxuXAorSWYgYm90aCB0aW1lcyBhbmQgbnMgYXJlIE5vbmUsIHV0aW1lIHVzZXMgdGhlIGN1cnJlbnQgdGltZS5cblwKK1NwZWNpZnlpbmcgdHVwbGVzIGZvciBib3RoIHRpbWVzIGFuZCBucyBpcyBhbiBlcnJvci5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCB1dGltZSB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcblwKKyAgbGluayBwb2ludHMgdG8uXG5cCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aFxuXAorICBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK2Rpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdXRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQeU9iamVjdCAqYXJnOwotICAgIFB5VW5pY29kZU9iamVjdCAqb2J3cGF0aDsKLSAgICB3Y2hhcl90ICp3cGF0aCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm9hcGF0aDsKLSAgICBjaGFyICphcGF0aDsKLSAgICBIQU5ETEUgaEZpbGU7Ci0gICAgdGltZV90IGF0aW1lc2VjLCBtdGltZXNlYzsKLSAgICBsb25nIGF1c2VjLCBtdXNlYzsKLSAgICBGSUxFVElNRSBhdGltZSwgbXRpbWU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Cit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50ICAgIG5vdzsKKyAgICB0aW1lX3QgYXRpbWVfczsKKyAgICBsb25nICAgYXRpbWVfbnM7CisgICAgdGltZV90IG10aW1lX3M7CisgICAgbG9uZyAgIG10aW1lX25zOworfSB1dGltZV90OwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVPfDp1dGltZSIsICZvYndwYXRoLCAmYXJnKSkgewotICAgICAgICB3cGF0aCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9id3BhdGgpOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcod3BhdGgsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoInV0aW1lIiwgd3BhdGgpOwotICAgIH0gZWxzZQotICAgICAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgICAgICBQeUVycl9DbGVhcigpOworLyoKKyAqIHRoZXNlIG1hY3JvcyBhc3N1bWUgdGhhdCAidXRpbWUiIGlzIGEgcG9pbnRlciB0byBhIHV0aW1lX3QKKyAqIHRoZXkgYWxzbyBpbnRlbnRpb25hbGx5IGxlYWsgdGhlIGRlY2xhcmF0aW9uIG9mIGEgcG9pbnRlciBuYW1lZCAidGltZSIKKyAqLworI2RlZmluZSBVVElNRV9UT19USU1FU1BFQyBcCisgICAgc3RydWN0IHRpbWVzcGVjIHRzWzJdOyBcCisgICAgc3RydWN0IHRpbWVzcGVjICp0aW1lOyBcCisgICAgaWYgKHV0aW1lLT5ub3cpIFwKKyAgICAgICAgdGltZSA9IE5VTEw7IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB0c1swXS50dl9zZWMgPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB0c1swXS50dl9uc2VjID0gdXRpbWUtPmF0aW1lX25zOyBcCisgICAgICAgIHRzWzFdLnR2X3NlYyA9IHV0aW1lLT5tdGltZV9zOyBcCisgICAgICAgIHRzWzFdLnR2X25zZWMgPSB1dGltZS0+bXRpbWVfbnM7IFwKKyAgICAgICAgdGltZSA9IHRzOyBcCisgICAgfSBcCiAKLSAgICBpZiAoIXdwYXRoKSB7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOnV0aW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9hcGF0aCwgJmFyZykpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9hcGF0aCk7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShhcGF0aCwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgICAgIHdpbjMyX2Vycm9yKCJ1dGltZSIsIGFwYXRoKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvYXBhdGgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKG9hcGF0aCk7CisjZGVmaW5lIFVUSU1FX1RPX1RJTUVWQUwgXAorICAgIHN0cnVjdCB0aW1ldmFsIHR2WzJdOyBcCisgICAgc3RydWN0IHRpbWV2YWwgKnRpbWU7IFwKKyAgICBpZiAodXRpbWUtPm5vdykgXAorICAgICAgICB0aW1lID0gTlVMTDsgXAorICAgIGVsc2UgeyBcCisgICAgICAgIHR2WzBdLnR2X3NlYyA9IHV0aW1lLT5hdGltZV9zOyBcCisgICAgICAgIHR2WzBdLnR2X3VzZWMgPSB1dGltZS0+YXRpbWVfbnMgLyAxMDAwOyBcCisgICAgICAgIHR2WzFdLnR2X3NlYyA9IHV0aW1lLT5tdGltZV9zOyBcCisgICAgICAgIHR2WzFdLnR2X3VzZWMgPSB1dGltZS0+bXRpbWVfbnMgLyAxMDAwOyBcCisgICAgICAgIHRpbWUgPSB0djsgXAorICAgIH0gXAorCisjZGVmaW5lIFVUSU1FX1RPX1VUSU1CVUYgXAorICAgIHN0cnVjdCB1dGltYnVmIHVbMl07IFwKKyAgICBzdHJ1Y3QgdXRpbWJ1ZiAqdGltZTsgXAorICAgIGlmICh1dGltZS0+bm93KSBcCisgICAgICAgIHRpbWUgPSBOVUxMOyBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdS5hY3RpbWUgPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB1Lm1vZHRpbWUgPSB1dGltZS0+bXRpbWVfczsgXAorICAgICAgICB0aW1lID0gdTsgXAogICAgIH0KIAotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgeworI2RlZmluZSBVVElNRV9UT19USU1FX1QgXAorICAgIHRpbWVfdCB0aW1ldFsyXTsgXAorICAgIHN0cnVjdCB0aW1ldCB0aW1lOyBcCisgICAgaWYgKHV0aW1lLT5ub3cpIFwKKyAgICAgICAgdGltZSA9IE5VTEw7IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB0aW1ldFswXSA9IHV0aW1lLT5hdGltZV9zOyBcCisgICAgICAgIHRpbWV0WzFdID0gdXRpbWUtPm10aW1lX3M7IFwKKyAgICAgICAgdGltZSA9ICZ0aW1ldDsgXAorICAgIH0gXAorCisKKyNkZWZpbmUgVVRJTUVfSEFWRV9ESVJfRkQgKGRlZmluZWQoSEFWRV9GVVRJTUVTQVQpIHx8IGRlZmluZWQoSEFWRV9VVElNRU5TQVQpKQorCisjaWYgVVRJTUVfSEFWRV9ESVJfRkQKKworc3RhdGljIGludAordXRpbWVfZGlyX2ZkKHV0aW1lX3QgKnV0aW1lLCBpbnQgZGlyX2ZkLCBjaGFyICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKQoreworI2lmZGVmIEhBVkVfVVRJTUVOU0FUCisgICAgaW50IGZsYWdzID0gZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1c7CisgICAgVVRJTUVfVE9fVElNRVNQRUM7CisgICAgcmV0dXJuIHV0aW1lbnNhdChkaXJfZmQsIHBhdGgsIHRpbWUsIGZsYWdzKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9GVVRJTUVTQVQpCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICAvKgorICAgICAqIGZvbGxvd19zeW1saW5rcyB3aWxsIG5ldmVyIGJlIGZhbHNlIGhlcmU7CisgICAgICogd2Ugb25seSBhbGxvdyAhZm9sbG93X3N5bWxpbmtzIGFuZCBkaXJfZmQgdG9nZXRoZXIKKyAgICAgKiBpZiB3ZSBoYXZlIHV0aW1lbnNhdCgpCisgICAgICovCisgICAgYXNzZXJ0KGZvbGxvd19zeW1saW5rcyk7CisgICAgcmV0dXJuIGZ1dGltZXNhdChkaXJfZmQsIHBhdGgsIHRpbWUpOworI2VuZGlmCit9CisKKyNlbmRpZgorCisjZGVmaW5lIFVUSU1FX0hBVkVfRkQgKGRlZmluZWQoSEFWRV9GVVRJTUVTKSB8fCBkZWZpbmVkKEhBVkVfRlVUSU1FTlMpKQorCisjaWYgVVRJTUVfSEFWRV9GRAorCitzdGF0aWMgaW50Cit1dGltZV9mZCh1dGltZV90ICp1dGltZSwgaW50IGZkKQoreworI2lmZGVmIEhBVkVfRlVUSU1FTlMKKyAgICBVVElNRV9UT19USU1FU1BFQzsKKyAgICByZXR1cm4gZnV0aW1lbnMoZmQsIHRpbWUpOworI2Vsc2UKKyAgICBVVElNRV9UT19USU1FVkFMOworICAgIHJldHVybiBmdXRpbWVzKGZkLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworCisjZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MgXAorICAgICAgICAoZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkgfHwgZGVmaW5lZChIQVZFX0xVVElNRVMpKQorCisjaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworCitzdGF0aWMgaW50Cit1dGltZV9ub2ZvbGxvd19zeW1saW5rcyh1dGltZV90ICp1dGltZSwgY2hhciAqcGF0aCkKK3sKKyNpZmRlZiBIQVZFX1VUSU1FTlNBVAorICAgIFVUSU1FX1RPX1RJTUVTUEVDOworICAgIHJldHVybiB1dGltZW5zYXQoREVGQVVMVF9ESVJfRkQsIHBhdGgsIHRpbWUsIEFUX1NZTUxJTktfTk9GT0xMT1cpOworI2Vsc2UKKyAgICBVVElNRV9UT19USU1FVkFMOworICAgIHJldHVybiBsdXRpbWVzKHBhdGgsIHRpbWUpOworI2VuZGlmCit9CisKKyNlbmRpZgorCisjaWZuZGVmIE1TX1dJTkRPV1MKKworc3RhdGljIGludAordXRpbWVfZGVmYXVsdCh1dGltZV90ICp1dGltZSwgY2hhciAqcGF0aCkKK3sKKyNpZmRlZiBIQVZFX1VUSU1FTlNBVAorICAgIFVUSU1FX1RPX1RJTUVTUEVDOworICAgIHJldHVybiB1dGltZW5zYXQoREVGQVVMVF9ESVJfRkQsIHBhdGgsIHRpbWUsIDApOworI2VsaWYgZGVmaW5lZChIQVZFX1VUSU1FUykKKyAgICBVVElNRV9UT19USU1FVkFMOworICAgIHJldHVybiB1dGltZXMocGF0aCwgdGltZSk7CisjZWxpZiBkZWZpbmVkKEhBVkVfVVRJTUVfSCkKKyAgICBVVElNRV9UT19VVElNQlVGOworICAgIHJldHVybiB1dGltZShwYXRoLCB0aW1lKTsKKyNlbHNlCisgICAgVVRJTUVfVE9fVElNRV9UOworICAgIHJldHVybiB1dGltZShwYXRoLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworc3RhdGljIGludAorc3BsaXRfcHlfbG9uZ190b19zX2FuZF9ucyhQeU9iamVjdCAqcHlfbG9uZywgdGltZV90ICpzLCBsb25nICpucykKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBQeU9iamVjdCAqZGl2bW9kOworICAgIGRpdm1vZCA9IFB5TnVtYmVyX0Rpdm1vZChweV9sb25nLCBiaWxsaW9uKTsKKyAgICBpZiAoIWRpdm1vZCkKKyAgICAgICAgZ290byBleGl0OworICAgICpzID0gX1B5TG9uZ19Bc1RpbWVfdChQeVR1cGxlX0dFVF9JVEVNKGRpdm1vZCwgMCkpOworICAgIGlmICgoKnMgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAqbnMgPSBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR0VUX0lURU0oZGl2bW9kLCAxKSk7CisgICAgaWYgKCgqbnMgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIHJlc3VsdCA9IDE7CitleGl0OgorICAgIFB5X1hERUNSRUYoZGl2bW9kKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfdXRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIFB5T2JqZWN0ICp0aW1lcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5zID0gTlVMTDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJ0aW1lcyIsICJucyIsICJkaXJfZmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgdXRpbWVfdCB1dGltZTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBIQU5ETEUgaEZpbGU7CisgICAgRklMRVRJTUUgYXRpbWUsIG10aW1lOworI2Vsc2UKKyAgICBpbnQgcmVzdWx0OworI2VuZGlmCisKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZiBVVElNRV9IQVZFX0ZECisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCisgICAgICAgICAgICAiTyZ8TyRPTyZwOnV0aW1lIiwga2V5d29yZHMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAmdGltZXMsICZucywKKyNpZiBVVElNRV9IQVZFX0RJUl9GRAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZCwKKyNlbHNlCisgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MKKyAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHRpbWVzICYmICh0aW1lcyAhPSBQeV9Ob25lKSAmJiBucykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogeW91IG1heSBzcGVjaWZ5IGVpdGhlciAndGltZXMnIgorICAgICAgICAgICAgICAgICAgICAgIiBvciAnbnMnIGJ1dCBub3QgYm90aCIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgaWYgKHRpbWVzICYmICh0aW1lcyAhPSBQeV9Ob25lKSkgeworICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2tFeGFjdCh0aW1lcykgfHwgKFB5VHVwbGVfU2l6ZSh0aW1lcykgIT0gMikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInV0aW1lOiAndGltZXMnIG11c3QgYmUgZWl0aGVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgYSB0dXBsZSBvZiB0d28gaW50cyBvciBOb25lIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgdXRpbWUubm93ID0gMDsKKyAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeVR1cGxlX0dFVF9JVEVNKHRpbWVzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUuYXRpbWVfcywgJnV0aW1lLmF0aW1lX25zKSA9PSAtMSB8fAorICAgICAgICAgICAgX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5VHVwbGVfR0VUX0lURU0odGltZXMsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1dGltZS5tdGltZV9zLCAmdXRpbWUubXRpbWVfbnMpID09IC0xKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobnMpIHsKKyAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrRXhhY3QobnMpIHx8IChQeVR1cGxlX1NpemUobnMpICE9IDIpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogJ25zJyBtdXN0IGJlIGEgdHVwbGUgb2YgdHdvIGludHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICB1dGltZS5ub3cgPSAwOworICAgICAgICBpZiAoIXNwbGl0X3B5X2xvbmdfdG9fc19hbmRfbnMoUHlUdXBsZV9HRVRfSVRFTShucywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1dGltZS5hdGltZV9zLCAmdXRpbWUuYXRpbWVfbnMpIHx8CisgICAgICAgICAgICAhc3BsaXRfcHlfbG9uZ190b19zX2FuZF9ucyhQeVR1cGxlX0dFVF9JVEVNKG5zLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1dGltZS5tdGltZV9zLCAmdXRpbWUubXRpbWVfbnMpKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIHRpbWVzIGFuZCBucyBhcmUgYm90aCBOb25lL3Vuc3BlY2lmaWVkLiB1c2UgIm5vdyIuICovCisgICAgICAgIHV0aW1lLm5vdyA9IDE7CisgICAgfQorCisjaWYgIVVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgidXRpbWUiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisjZW5kaWYKKworICAgIGlmIChwYXRoX2FuZF9kaXJfZmRfaW52YWxpZCgidXRpbWUiLCAmcGF0aCwgZGlyX2ZkKSB8fAorICAgICAgICBkaXJfZmRfYW5kX2ZkX2ludmFsaWQoInV0aW1lIiwgZGlyX2ZkLCBwYXRoLmZkKSB8fAorICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInV0aW1lIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisjaWYgIWRlZmluZWQoSEFWRV9VVElNRU5TQVQpCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpICYmICghZm9sbG93X3N5bWxpbmtzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogY2Fubm90IHVzZSBkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyAiCisgICAgICAgICAgICAgICAgICAgICAidG9nZXRoZXIgb24gdGhpcyBwbGF0Zm9ybSIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC53aWRlLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CisgICAgZWxzZQorICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVBKHBhdGgubmFycm93LCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgd2luMzJfZXJyb3Jfb2JqZWN0KCJ1dGltZSIsIHBhdGgub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGlmICh1dGltZS5ub3cpIHsKICAgICAgICAgU1lTVEVNVElNRSBub3c7CiAgICAgICAgIEdldFN5c3RlbVRpbWUoJm5vdyk7CiAgICAgICAgIGlmICghU3lzdGVtVGltZVRvRmlsZVRpbWUoJm5vdywgJm10aW1lKSB8fAogICAgICAgICAgICAgIVN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZub3csICZhdGltZSkpIHsKICAgICAgICAgICAgIHdpbjMyX2Vycm9yKCJ1dGltZSIsIE5VTEwpOwotICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZykgfHwgUHlUdXBsZV9TaXplKGFyZykgIT0gMikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInV0aW1lKCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIChhdGltZSwgbXRpbWUpIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICZhdGltZXNlYywgJmF1c2VjKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRShhdGltZXNlYywgMTAwMCphdXNlYywgJmF0aW1lKTsKLSAgICAgICAgaWYgKGV4dHJhY3RfdGltZShQeVR1cGxlX0dFVF9JVEVNKGFyZywgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJm10aW1lc2VjLCAmbXVzZWMpID09IC0xKQotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB0aW1lX3RfdG9fRklMRV9USU1FKG10aW1lc2VjLCAxMDAwKm11c2VjLCAmbXRpbWUpOworICAgICAgICB0aW1lX3RfdG9fRklMRV9USU1FKHV0aW1lLmF0aW1lX3MsIHV0aW1lLmF0aW1lX25zLCAmYXRpbWUpOworICAgICAgICB0aW1lX3RfdG9fRklMRV9USU1FKHV0aW1lLm10aW1lX3MsIHV0aW1lLm10aW1lX25zLCAmbXRpbWUpOwogICAgIH0KICAgICBpZiAoIVNldEZpbGVUaW1lKGhGaWxlLCBOVUxMLCAmYXRpbWUsICZtdGltZSkpIHsKICAgICAgICAgLyogQXZvaWQgcHV0dGluZyB0aGUgZmlsZSBuYW1lIGludG8gdGhlIGVycm9yIGhlcmUsCkBAIC0zMzQzLDkzICs0NzEyLDUyIEBACiAgICAgICAgICAgIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBmaWxlLCB3aGVuIGl0IGFsc28KICAgICAgICAgICAgY291bGQgYmUgdGhlIHRpbWUgc3RhbXAgdGhhdCBnaXZlcyBhIHByb2JsZW0uICovCiAgICAgICAgIHdpbjMyX2Vycm9yKCJ1dGltZSIsIE5VTEwpOwotICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJlc3VsdCA9IFB5X05vbmU7Ci1kb25lOgotICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKLSAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UgLyogTVNfV0lORE9XUyAqLworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKIAotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIHRpbWVfdCBhdGltZSwgbXRpbWU7Ci0gICAgbG9uZyBhdXNlYywgbXVzZWM7Ci0gICAgaW50IHJlczsKLSAgICBQeU9iamVjdCogYXJnOworI2lmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQorICAgICAgICByZXN1bHQgPSB1dGltZV9ub2ZvbGxvd19zeW1saW5rcygmdXRpbWUsIHBhdGgubmFycm93KTsKKyAgICBlbHNlCisjZW5kaWYKIAotI2lmIGRlZmluZWQoSEFWRV9VVElNRVMpCi0gICAgc3RydWN0IHRpbWV2YWwgYnVmWzJdOwotI2RlZmluZSBBVElNRSBidWZbMF0udHZfc2VjCi0jZGVmaW5lIE1USU1FIGJ1ZlsxXS50dl9zZWMKLSNlbGlmIGRlZmluZWQoSEFWRV9VVElNRV9IKQotLyogWFhYIHNob3VsZCBkZWZpbmUgc3RydWN0IHV0aW1idWYgaW5zdGVhZCwgYWJvdmUgKi8KLSAgICBzdHJ1Y3QgdXRpbWJ1ZiBidWY7Ci0jZGVmaW5lIEFUSU1FIGJ1Zi5hY3RpbWUKLSNkZWZpbmUgTVRJTUUgYnVmLm1vZHRpbWUKLSNkZWZpbmUgVVRJTUVfQVJHICZidWYKLSNlbHNlIC8qIEhBVkVfVVRJTUVTICovCi0gICAgdGltZV90IGJ1ZlsyXTsKLSNkZWZpbmUgQVRJTUUgYnVmWzBdCi0jZGVmaW5lIE1USU1FIGJ1ZlsxXQotI2RlZmluZSBVVElNRV9BUkcgYnVmCi0jZW5kaWYgLyogSEFWRV9VVElNRVMgKi8KKyNpZiBVVElNRV9IQVZFX0RJUl9GRAorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAoIWZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJlc3VsdCA9IHV0aW1lX2Rpcl9mZCgmdXRpbWUsIGRpcl9mZCwgcGF0aC5uYXJyb3csIGZvbGxvd19zeW1saW5rcyk7CisgICAgZWxzZQorI2VuZGlmCiAKKyNpZiBVVElNRV9IQVZFX0ZECisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IHV0aW1lX2ZkKCZ1dGltZSwgcGF0aC5mZCk7CisgICAgZWxzZQorI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTzp1dGltZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgewotICAgICAgICAvKiBvcHRpb25hbCB0aW1lIHZhbHVlcyBub3QgZ2l2ZW4gKi8KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXMgPSB1dGltZShwYXRoLCBOVUxMKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSB1dGltZV9kZWZhdWx0KCZ1dGltZSwgcGF0aC5uYXJyb3cpOworCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIC8qIHNlZSBwcmV2aW91cyBjb21tZW50IGFib3V0IG5vdCBwdXR0aW5nIGZpbGVuYW1lIGluIGVycm9yIGhlcmUgKi8KKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmcpIHx8IFB5VHVwbGVfU2l6ZShhcmcpICE9IDIpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZSgpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKSIpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICZhdGltZSwgJmF1c2VjKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICZtdGltZSwgJm11c2VjKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIEFUSU1FID0gYXRpbWU7Ci0gICAgICAgIE1USU1FID0gbXRpbWU7Ci0jaWZkZWYgSEFWRV9VVElNRVMKLSAgICAgICAgYnVmWzBdLnR2X3VzZWMgPSBhdXNlYzsKLSAgICAgICAgYnVmWzFdLnR2X3VzZWMgPSBtdXNlYzsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXMgPSB1dGltZXMocGF0aCwgYnVmKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSNlbHNlCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gdXRpbWUocGF0aCwgVVRJTUVfQVJHKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSNlbmRpZiAvKiBIQVZFX1VUSU1FUyAqLwotICAgIH0KLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIH0KLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLSN1bmRlZiBVVElNRV9BUkcKLSN1bmRlZiBBVElNRQotI3VuZGVmIE1USU1FCisKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCi19CiAKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoaEZpbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKKyNlbmRpZgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CiAKIC8qIFByb2Nlc3Mgb3BlcmF0aW9ucyAqLwogCkBAIC0zNDc0LDc5ICs0ODAyLDcgQEAKIH0KICNlbmRpZgogCi0KLSNpZmRlZiBIQVZFX0VYRUNWCi1QeURvY19TVFJWQVIocG9zaXhfZXhlY3ZfX2RvY19fLAotImV4ZWN2KHBhdGgsIGFyZ3MpXG5cblwKLUV4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuXAotXG5cCi0gICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKLSAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIHN0cmluZ3MiKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2V4ZWN2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBQeU9iamVjdCAqYXJndjsKLSAgICBjaGFyICoqYXJndmxpc3Q7Ci0gICAgUHlfc3NpemVfdCBpLCBhcmdjOwotICAgIFB5T2JqZWN0ICooKmdldGl0ZW0pKFB5T2JqZWN0ICosIFB5X3NzaXplX3QpOwotCi0gICAgLyogZXhlY3YgaGFzIHR3byBhcmd1bWVudHM6IChwYXRoLCBhcmd2KSwgd2hlcmUKLSAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzLiAqLwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmFyZ3YpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7Ci0gICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlUdXBsZV9TaXplKGFyZ3YpOwotICAgICAgICBnZXRpdGVtID0gUHlUdXBsZV9HZXRJdGVtOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4ZWN2KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChhcmdjIDwgMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImV4ZWN2KCkgYXJnIDIgbXVzdCBub3QgYmUgZW1wdHkiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOwotICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cCgoKmdldGl0ZW0pKGFyZ3YsIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3ZsaXN0W2ldKSkgewotICAgICAgICAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGkpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3YoKSBhcmcgMiBtdXN0IGNvbnRhaW4gb25seSBzdHJpbmdzIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgfQotICAgIH0KLSAgICBhcmd2bGlzdFthcmdjXSA9IE5VTEw7Ci0KLSAgICBleGVjdihwYXRoLCBhcmd2bGlzdCk7Ci0KLSAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KLQotICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotfQotCisjaWYgZGVmaW5lZChIQVZFX0VYRUNWKSB8fCBkZWZpbmVkIChIQVZFX0ZFWEVDVkUpCiBzdGF0aWMgY2hhcioqCiBwYXJzZV9lbnZsaXN0KFB5T2JqZWN0KiBlbnYsIFB5X3NzaXplX3QgKmVudmNfcHRyKQogewpAQCAtMzYyOCw4NyArNDg4NCwxNjIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIGNoYXIqKgorcGFyc2VfYXJnbGlzdChQeU9iamVjdCogYXJndiwgUHlfc3NpemVfdCAqYXJnYykKK3sKKyAgICBpbnQgaTsKKyAgICBjaGFyICoqYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCAqYXJnYysxKTsKKyAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8ICphcmdjOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QqIGl0ZW0gPSBQeVNlcXVlbmNlX0lURU0oYXJndiwgaSk7CisgICAgICAgIGlmIChpdGVtID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cChpdGVtLCAmYXJndmxpc3RbaV0pKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgIH0KKyAgICBhcmd2bGlzdFsqYXJnY10gPSBOVUxMOworICAgIHJldHVybiBhcmd2bGlzdDsKK2ZhaWw6CisgICAgKmFyZ2MgPSBpOworICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCAqYXJnYyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfRVhFQ1YKK1B5RG9jX1NUUlZBUihwb3NpeF9leGVjdl9fZG9jX18sCisiZXhlY3YocGF0aCwgYXJncylcblxuXAorRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG5cCitcblwKKyAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAorICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncyIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfZXhlY3YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvcGF0aDsKKyAgICBjaGFyICpwYXRoOworICAgIFB5T2JqZWN0ICphcmd2OworICAgIGNoYXIgKiphcmd2bGlzdDsKKyAgICBQeV9zc2l6ZV90IGFyZ2M7CisKKyAgICAvKiBleGVjdiBoYXMgdHdvIGFyZ3VtZW50czogKHBhdGgsIGFyZ3YpLCB3aGVyZQorICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTzpleGVjdiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmYXJndikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKyAgICBpZiAoIVB5TGlzdF9DaGVjayhhcmd2KSAmJiAhUHlUdXBsZV9DaGVjayhhcmd2KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKKyAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGFyZ2MgPSBQeVNlcXVlbmNlX1NpemUoYXJndik7CisgICAgaWYgKGFyZ2MgPCAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZXhlY3YoKSBhcmcgMiBtdXN0IG5vdCBiZSBlbXB0eSIpOworICAgICAgICBQeV9ERUNSRUYob3BhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBhcmd2bGlzdCA9IHBhcnNlX2FyZ2xpc3QoYXJndiwgJmFyZ2MpOworICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGV4ZWN2KHBhdGgsIGFyZ3ZsaXN0KTsKKworICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLworCisgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGFyZ2MpOworICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Cit9CisKIFB5RG9jX1NUUlZBUihwb3NpeF9leGVjdmVfX2RvY19fLAogImV4ZWN2ZShwYXRoLCBhcmdzLCBlbnYpXG5cblwKIEV4ZWN1dGUgYSBwYXRoIHdpdGggYXJndW1lbnRzIGFuZCBlbnZpcm9ubWVudCwgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy5cblwKIFxuXAogICAgIHBhdGg6IHBhdGggb2YgZXhlY3V0YWJsZSBmaWxlXG5cCiAgICAgYXJnczogdHVwbGUgb3IgbGlzdCBvZiBhcmd1bWVudHNcblwKLSAgICBlbnY6IGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MiKTsKKyAgICBlbnY6IGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3NcblwKK1xuXAorT24gc29tZSBwbGF0Zm9ybXMsIHlvdSBtYXkgc3BlY2lmeSBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgcGF0aDtcblwKKyAgZXhlY3ZlIHdpbGwgZXhlY3V0ZSB0aGUgcHJvZ3JhbSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIG9wZW4gdG8uXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9leGVjdmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfZXhlY3ZlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICBQeU9iamVjdCAqYXJndiwgKmVudjsKLSAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgY2hhciAqKmFyZ3ZsaXN0ID0gTlVMTDsKICAgICBjaGFyICoqZW52bGlzdDsKLSAgICBQeV9zc2l6ZV90IGksIGFyZ2MsIGVudmM7Ci0gICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7Ci0gICAgUHlfc3NpemVfdCBsYXN0YXJnID0gMDsKKyAgICBQeV9zc2l6ZV90IGFyZ2MsIGVudmM7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXJndiIsICJlbnZpcm9ubWVudCIsIE5VTEx9OwogCiAgICAgLyogZXhlY3ZlIGhhcyB0aHJlZSBhcmd1bWVudHM6IChwYXRoLCBhcmd2LCBlbnYpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MgYW5kIGVudiBpcyBhIGRpY3Rpb25hcnkKICAgICAgICBsaWtlIHBvc2l4LmVudmlyb24uICovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mT086ZXhlY3ZlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BhdGgsICZhcmd2LCAmZW52KSkKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GRVhFQ1ZFCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk9POmV4ZWN2ZSIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZhcmd2LCAmZW52CisgICAgICAgICAgICAgICAgICAgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZ3YpKSB7Ci0gICAgICAgIGFyZ2MgPSBQeUxpc3RfU2l6ZShhcmd2KTsKLSAgICAgICAgZ2V0aXRlbSA9IFB5TGlzdF9HZXRJdGVtOwotICAgIH0KLSAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKGFyZ3YpKSB7Ci0gICAgICAgIGFyZ2MgPSBQeVR1cGxlX1NpemUoYXJndik7Ci0gICAgICAgIGdldGl0ZW0gPSBQeVR1cGxlX0dldEl0ZW07Ci0gICAgfQotICAgIGVsc2UgeworCisgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmUoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOwotICAgICAgICBnb3RvIGZhaWxfMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmU6IGFyZ3YgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKKyAgICAgICAgZ290byBmYWlsOwogICAgIH0KKyAgICBhcmdjID0gUHlTZXF1ZW5jZV9TaXplKGFyZ3YpOwogICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKGVudikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmUoKSBhcmcgMyBtdXN0IGJlIGEgbWFwcGluZyBvYmplY3QiKTsKLSAgICAgICAgZ290byBmYWlsXzA7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlOiBlbnZpcm9ubWVudCBtdXN0IGJlIGEgbWFwcGluZyBvYmplY3QiKTsKKyAgICAgICAgZ290byBmYWlsOwogICAgIH0KIAotICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgYXJnYysxKTsKKyAgICBhcmd2bGlzdCA9IHBhcnNlX2FyZ2xpc3QoYXJndiwgJmFyZ2MpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZmFpbF8wOworICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKLSAgICAgICAgaWYgKCFmc2NvbnZlcnRfc3RyZHVwKCgqZ2V0aXRlbSkoYXJndiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJndmxpc3RbaV0pKQotICAgICAgICB7Ci0gICAgICAgICAgICBsYXN0YXJnID0gaTsKLSAgICAgICAgICAgIGdvdG8gZmFpbF8xOwotICAgICAgICB9Ci0gICAgfQotICAgIGxhc3RhcmcgPSBhcmdjOwotICAgIGFyZ3ZsaXN0W2FyZ2NdID0gTlVMTDsKIAogICAgIGVudmxpc3QgPSBwYXJzZV9lbnZsaXN0KGVudiwgJmVudmMpOwogICAgIGlmIChlbnZsaXN0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbF8xOworICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICBleGVjdmUocGF0aCwgYXJndmxpc3QsIGVudmxpc3QpOworI2lmZGVmIEhBVkVfRkVYRUNWRQorICAgIGlmIChwYXRoLmZkID4gLTEpCisgICAgICAgIGZleGVjdmUocGF0aC5mZCwgYXJndmxpc3QsIGVudmxpc3QpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBleGVjdmUocGF0aC5uYXJyb3csIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCi0gICAgKHZvaWQpIHBvc2l4X2Vycm9yKCk7CisgICAgcGF0aF9wb3NpeF9lcnJvcigiZXhlY3ZlIiwgJnBhdGgpOwogCiAgICAgd2hpbGUgKC0tZW52YyA+PSAwKQogICAgICAgICBQeU1lbV9ERUwoZW52bGlzdFtlbnZjXSk7CiAgICAgUHlNZW1fREVMKGVudmxpc3QpOwotICBmYWlsXzE6Ci0gICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGxhc3RhcmcpOwotICBmYWlsXzA6Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgZmFpbDoKKyAgICBpZiAoYXJndmxpc3QpCisgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIHJldHVybiBOVUxMOwogfQogI2VuZGlmIC8qIEhBVkVfRVhFQ1YgKi8KQEAgLTQxNTMsNiArNTQ4NCw0MDUgQEAKIH0KICNlbmRpZgogCisjaWZkZWYgSEFWRV9TQ0hFRF9ICisKKyNpZmRlZiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgKKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19fLAorInNjaGVkX2dldF9wcmlvcml0eV9tYXgocG9saWN5KVxuXG5cCitHZXQgdGhlIG1heGltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgKnBvbGljeSouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcG9saWN5LCBtYXg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsICZwb2xpY3kpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtYXggPSBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSk7CisgICAgaWYgKG1heCA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobWF4KTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19fLAorInNjaGVkX2dldF9wcmlvcml0eV9taW4ocG9saWN5KVxuXG5cCitHZXQgdGhlIG1pbmltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgKnBvbGljeSouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcG9saWN5LCBtaW47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsICZwb2xpY3kpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtaW4gPSBzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSk7CisgICAgaWYgKG1pbiA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobWluKTsKK30KKworI2VuZGlmIC8qIEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWCAqLworCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldHNjaGVkdWxlcl9fZG9jX18sCisic2NoZWRfZ2V0c2NoZWR1bGVyKHBpZClcblxuXAorR2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBhIFBJRCBvZiAqcGlkKi5cblwKK1Bhc3NpbmcgYSBQSUQgb2YgMCByZXR1cm5zIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX2dldHNjaGVkdWxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBwb2xpY3k7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHNjaGVkdWxlciIsICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwb2xpY3kgPSBzY2hlZF9nZXRzY2hlZHVsZXIocGlkKTsKKyAgICBpZiAocG9saWN5IDwgMCkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhwb2xpY3kpOworfQorCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkKKworc3RhdGljIFB5T2JqZWN0ICoKK3NjaGVkX3BhcmFtX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXMsICpwcmlvcml0eTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNjaGVkX3ByaW9yaXR5IiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNjaGVkX3BhcmFtIiwga3dsaXN0LCAmcHJpb3JpdHkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldyh0eXBlKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKHByaW9yaXR5KTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMCwgcHJpb3JpdHkpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5RG9jX1NUUlZBUihzY2hlZF9wYXJhbV9fZG9jX18sCisic2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHkpOiBBIHNjaGVkdWxpbmcgcGFyYW1ldGVyLlxuXG5cCitDdXJyZW50IGhhcyBvbmx5IG9uZSBmaWVsZDogc2NoZWRfcHJpb3JpdHkiKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgc2NoZWRfcGFyYW1fZmllbGRzW10gPSB7CisgICAgeyJzY2hlZF9wcmlvcml0eSIsICJ0aGUgc2NoZWR1bGluZyBwcmlvcml0eSJ9LAorICAgIHswfQorfTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyBzY2hlZF9wYXJhbV9kZXNjID0geworICAgICJzY2hlZF9wYXJhbSIsIC8qIG5hbWUgKi8KKyAgICBzY2hlZF9wYXJhbV9fZG9jX18sIC8qIGRvYyAqLworICAgIHNjaGVkX3BhcmFtX2ZpZWxkcywKKyAgICAxCit9OworCitzdGF0aWMgaW50Citjb252ZXJ0X3NjaGVkX3BhcmFtKFB5T2JqZWN0ICpwYXJhbSwgc3RydWN0IHNjaGVkX3BhcmFtICpyZXMpCit7CisgICAgbG9uZyBwcmlvcml0eTsKKworICAgIGlmIChQeV9UWVBFKHBhcmFtKSAhPSAmU2NoZWRQYXJhbVR5cGUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm11c3QgaGF2ZSBhIHNjaGVkX3BhcmFtIG9iamVjdCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcHJpb3JpdHkgPSBQeUxvbmdfQXNMb25nKFB5U3RydWN0U2VxdWVuY2VfR0VUX0lURU0ocGFyYW0sIDApKTsKKyAgICBpZiAocHJpb3JpdHkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKHByaW9yaXR5ID4gSU5UX01BWCB8fCBwcmlvcml0eSA8IElOVF9NSU4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJzY2hlZF9wcmlvcml0eSBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJlcy0+c2NoZWRfcHJpb3JpdHkgPSBQeV9TQUZFX0RPV05DQVNUKHByaW9yaXR5LCBsb25nLCBpbnQpOworICAgIHJldHVybiAxOworfQorCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9zZXRzY2hlZHVsZXJfX2RvY19fLAorInNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgcGFyYW0pXG5cblwKK1NldCB0aGUgc2NoZWR1bGluZyBwb2xpY3ksICpwb2xpY3kqLCBmb3IgKnBpZCouXG5cCitJZiAqcGlkKiBpcyAwLCB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGNoYW5nZWQuXG5cCisqcGFyYW0qIGlzIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBwaWRfdCBwaWQ7CisgICAgaW50IHBvbGljeTsKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiaU8mOnNjaGVkX3NldHNjaGVkdWxlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZwb2xpY3ksICZjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qCisgICAgKiogc2NoZWRfc2V0c2NoZWR1bGVyKCkgcmV0dXJucyAwIGluIExpbnV4LCBidXQgdGhlIHByZXZpb3VzCisgICAgKiogc2NoZWR1bGluZyBwb2xpY3kgdW5kZXIgU29sYXJpcy9JbGx1bW9zLCBhbmQgb3RoZXJzLgorICAgICoqIE9uIGVycm9yLCAtMSBpcyByZXR1cm5lZCBpbiBhbGwgT3BlcmF0aW5nIFN5c3RlbXMuCisgICAgKi8KKyAgICBpZiAoc2NoZWRfc2V0c2NoZWR1bGVyKHBpZCwgcG9saWN5LCAmcGFyYW0pID09IC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFBBUkFNCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRwYXJhbV9fZG9jX18sCisic2NoZWRfZ2V0cGFyYW0ocGlkKSAtPiBzY2hlZF9wYXJhbVxuXG5cCitSZXR1cm5zIHNjaGVkdWxpbmcgcGFyYW1ldGVycyBmb3IgdGhlIHByb2Nlc3Mgd2l0aCAqcGlkKiBhcyBhbiBpbnN0YW5jZSBvZiB0aGVcblwKK3NjaGVkX3BhcmFtIGNsYXNzLiBBIFBJRCBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRwYXJhbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKKyAgICBQeU9iamVjdCAqcmVzLCAqcHJpb3JpdHk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzY2hlZF9nZXRwYXJhbShwaWQsICZwYXJhbSkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJlcyA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZTY2hlZFBhcmFtVHlwZSk7CisgICAgaWYgKCFyZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHByaW9yaXR5ID0gUHlMb25nX0Zyb21Mb25nKHBhcmFtLnNjaGVkX3ByaW9yaXR5KTsKKyAgICBpZiAoIXByaW9yaXR5KSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIHByaW9yaXR5KTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfc2V0cGFyYW1fX2RvY19fLAorInNjaGVkX3NldHBhcmFtKHBpZCwgcGFyYW0pXG5cblwKK1NldCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIGEgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi5cblwKK0EgUElEIG9mIDAgbWVhbnMgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX3NldHBhcmFtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBwaWRfdCBwaWQ7CisgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIk8mOnNjaGVkX3NldHBhcmFtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpZCwgJmNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzY2hlZF9zZXRwYXJhbShwaWQsICZwYXJhbSkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfX2RvY19fLAorInNjaGVkX3JyX2dldF9pbnRlcnZhbChwaWQpIC0+IGZsb2F0XG5cblwKK1JldHVybiB0aGUgcm91bmQtcm9iaW4gcXVhbnR1bSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogaW4gc2Vjb25kcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIHN0cnVjdCB0aW1lc3BlYyBpbnRlcnZhbDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgJnBpZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkLCAmaW50ZXJ2YWwpKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChkb3VibGUpaW50ZXJ2YWwudHZfc2VjICsgMWUtOSppbnRlcnZhbC50dl9uc2VjKTsKK30KKworI2VuZGlmCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF95aWVsZF9fZG9jX18sCisic2NoZWRfeWllbGQoKVxuXG5cCitWb2x1bnRhcmlseSByZWxpbnF1aXNoIHRoZSBDUFUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF95aWVsZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBpZiAoc2NoZWRfeWllbGQoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZCisKKy8qIFRoZSBtaW5pbXVtIG51bWJlciBvZiBDUFVzIGFsbG9jYXRlZCBpbiBhIGNwdV9zZXRfdCAqLworc3RhdGljIGNvbnN0IGludCBOQ1BVU19TVEFSVCA9IHNpemVvZih1bnNpZ25lZCBsb25nKSAqIENIQVJfQklUOworCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfc2V0YWZmaW5pdHlfX2RvY19fLAorInNjaGVkX3NldGFmZmluaXR5KHBpZCwgY3B1X3NldClcblxuXAorU2V0IHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiB0byAqY3B1X3NldCouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9zZXRhZmZpbml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBuY3B1czsKKyAgICBzaXplX3Qgc2V0c2l6ZTsKKyAgICBjcHVfc2V0X3QgKm1hc2sgPSBOVUxMOworICAgIFB5T2JqZWN0ICppdGVyYWJsZSwgKml0ZXJhdG9yID0gTlVMTCwgKml0ZW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiTzpzY2hlZF9zZXRhZmZpbml0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZpdGVyYWJsZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuY3B1cyA9IE5DUFVTX1NUQVJUOworICAgIHNldHNpemUgPSBDUFVfQUxMT0NfU0laRShuY3B1cyk7CisgICAgbWFzayA9IENQVV9BTExPQyhuY3B1cyk7CisgICAgaWYgKG1hc2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBDUFVfWkVST19TKHNldHNpemUsIG1hc2spOworCisgICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXRlcmF0b3IpKSkgeworICAgICAgICBsb25nIGNwdTsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2soaXRlbSkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYW4gaXRlcmF0b3Igb2YgaW50cywgIgorICAgICAgICAgICAgICAgICAgICAgICAgImJ1dCBpdGVyYXRvciB5aWVsZGVkICVSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoaXRlbSkpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBjcHUgPSBQeUxvbmdfQXNMb25nKGl0ZW0pOworICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIGlmIChjcHUgPCAwKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBDUFUgbnVtYmVyIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChjcHUgPiBJTlRfTUFYIC0gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJDUFUgbnVtYmVyIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3B1ID49IG5jcHVzKSB7CisgICAgICAgICAgICAvKiBHcm93IENQVSBtYXNrIHRvIGZpdCB0aGUgQ1BVIG51bWJlciAqLworICAgICAgICAgICAgaW50IG5ld25jcHVzID0gbmNwdXM7CisgICAgICAgICAgICBjcHVfc2V0X3QgKm5ld21hc2s7CisgICAgICAgICAgICBzaXplX3QgbmV3c2V0c2l6ZTsKKyAgICAgICAgICAgIHdoaWxlIChuZXduY3B1cyA8PSBjcHUpIHsKKyAgICAgICAgICAgICAgICBpZiAobmV3bmNwdXMgPiBJTlRfTUFYIC8gMikKKyAgICAgICAgICAgICAgICAgICAgbmV3bmNwdXMgPSBjcHUgKyAxOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbmV3bmNwdXMgPSBuZXduY3B1cyAqIDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXdtYXNrID0gQ1BVX0FMTE9DKG5ld25jcHVzKTsKKyAgICAgICAgICAgIGlmIChuZXdtYXNrID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXdzZXRzaXplID0gQ1BVX0FMTE9DX1NJWkUobmV3bmNwdXMpOworICAgICAgICAgICAgQ1BVX1pFUk9fUyhuZXdzZXRzaXplLCBuZXdtYXNrKTsKKyAgICAgICAgICAgIG1lbWNweShuZXdtYXNrLCBtYXNrLCBzZXRzaXplKTsKKyAgICAgICAgICAgIENQVV9GUkVFKG1hc2spOworICAgICAgICAgICAgc2V0c2l6ZSA9IG5ld3NldHNpemU7CisgICAgICAgICAgICBtYXNrID0gbmV3bWFzazsKKyAgICAgICAgICAgIG5jcHVzID0gbmV3bmNwdXM7CisgICAgICAgIH0KKyAgICAgICAgQ1BVX1NFVF9TKGNwdSwgc2V0c2l6ZSwgbWFzayk7CisgICAgfQorICAgIFB5X0NMRUFSKGl0ZXJhdG9yKTsKKworICAgIGlmIChzY2hlZF9zZXRhZmZpbml0eShwaWQsIHNldHNpemUsIG1hc2spKSB7CisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIENQVV9GUkVFKG1hc2spOworICAgIFB5X1JFVFVSTl9OT05FOworCitlcnJvcjoKKyAgICBpZiAobWFzaykKKyAgICAgICAgQ1BVX0ZSRUUobWFzayk7CisgICAgUHlfWERFQ1JFRihpdGVyYXRvcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRhZmZpbml0eV9fZG9jX18sCisic2NoZWRfZ2V0YWZmaW5pdHkocGlkLCBuY3B1cykgLT4gY3B1X3NldFxuXG5cCitSZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLlxuXAorVGhlIHJldHVybmVkIGNwdV9zZXQgd2lsbCBiZSBvZiBzaXplICpuY3B1cyouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRhZmZpbml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBjcHUsIG5jcHVzLCBjb3VudDsKKyAgICBzaXplX3Qgc2V0c2l6ZTsKKyAgICBjcHVfc2V0X3QgKm1hc2sgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRhZmZpbml0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG5jcHVzID0gTkNQVVNfU1RBUlQ7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgc2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5jcHVzKTsKKyAgICAgICAgbWFzayA9IENQVV9BTExPQyhuY3B1cyk7CisgICAgICAgIGlmIChtYXNrID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgaWYgKHNjaGVkX2dldGFmZmluaXR5KHBpZCwgc2V0c2l6ZSwgbWFzaykgPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlZBTCkKKyAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICBpZiAobmNwdXMgPiBJTlRfTUFYIC8gMikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJjb3VsZCBub3QgYWxsb2NhdGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhIGxhcmdlIGVub3VnaCBDUFUgc2V0Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBuY3B1cyA9IG5jcHVzICogMjsKKyAgICB9CisKKyAgICByZXMgPSBQeVNldF9OZXcoTlVMTCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGZvciAoY3B1ID0gMCwgY291bnQgPSBDUFVfQ09VTlRfUyhzZXRzaXplLCBtYXNrKTsgY291bnQ7IGNwdSsrKSB7CisgICAgICAgIGlmIChDUFVfSVNTRVRfUyhjcHUsIHNldHNpemUsIG1hc2spKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqY3B1X251bSA9IFB5TG9uZ19Gcm9tTG9uZyhjcHUpOworICAgICAgICAgICAgLS1jb3VudDsKKyAgICAgICAgICAgIGlmIChjcHVfbnVtID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGlmIChQeVNldF9BZGQocmVzLCBjcHVfbnVtKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjcHVfbnVtKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGNwdV9udW0pOworICAgICAgICB9CisgICAgfQorICAgIENQVV9GUkVFKG1hc2spOworICAgIHJldHVybiByZXM7CisKK2Vycm9yOgorICAgIGlmIChtYXNrKQorICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICBQeV9YREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNlbmRpZiAvKiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZICovCisKKyNlbmRpZiAvKiBIQVZFX1NDSEVEX0ggKi8KKwogLyogQUlYIHVzZXMgL2Rldi9wdGMgYnV0IGlzIG90aGVyd2lzZSB0aGUgc2FtZSBhcyAvZGV2L3B0bXggKi8KIC8qIElSSVggaGFzIGJvdGggL2Rldi9wdGMgYW5kIC9kZXYvcHRteCwgdXNlIHB0bXggKi8KICNpZiBkZWZpbmVkKEhBVkVfREVWX1BUQykgJiYgIWRlZmluZWQoSEFWRV9ERVZfUFRNWCkKQEAgLTQyNzksNiArNjAwOSw3IEBACiB9CiAjZW5kaWYKIAorCiAjaWZkZWYgSEFWRV9HRVRFR0lECiBQeURvY19TVFJWQVIocG9zaXhfZ2V0ZWdpZF9fZG9jX18sCiAiZ2V0ZWdpZCgpIC0+IGVnaWRcblxuXApAQCAtNDMyOCw2ICs2MDU5LDcwIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tUGlkKGdldHBpZCgpKTsKIH0KIAorI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCitQeURvY19TVFJWQVIocG9zaXhfZ2V0Z3JvdXBsaXN0X19kb2NfXywKKyJnZXRncm91cGxpc3QodXNlciwgZ3JvdXApIC0+IGxpc3Qgb2YgZ3JvdXBzIHRvIHdoaWNoIGEgdXNlciBiZWxvbmdzXG5cblwKK1JldHVybnMgYSBsaXN0IG9mIGdyb3VwcyB0byB3aGljaCBhIHVzZXIgYmVsb25ncy5cblxuXAorICAgIHVzZXI6IHVzZXJuYW1lIHRvIGxvb2t1cFxuXAorICAgIGdyb3VwOiBiYXNlIGdyb3VwIGlkIG9mIHRoZSB1c2VyIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9nZXRncm91cGxpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworI2lmZGVmIE5HUk9VUFNfTUFYCisjZGVmaW5lIE1BWF9HUk9VUFMgTkdST1VQU19NQVgKKyNlbHNlCisgICAgLyogZGVmaW5lZCB0byBiZSAxNiBvbiBTb2xhcmlzNywgc28gdGhpcyBzaG91bGQgYmUgYSBzbWFsbCBudW1iZXIgKi8KKyNkZWZpbmUgTUFYX0dST1VQUyA2NAorI2VuZGlmCisKKyAgICBjb25zdCBjaGFyICp1c2VyOworICAgIGludCBpLCBuZ3JvdXBzOworICAgIFB5T2JqZWN0ICpsaXN0OworI2lmZGVmIF9fQVBQTEVfXworICAgIGludCAqZ3JvdXBzLCBiYXNlZ2lkOworI2Vsc2UKKyAgICBnaWRfdCAqZ3JvdXBzLCBiYXNlZ2lkOworI2VuZGlmCisgICAgbmdyb3VwcyA9IE1BWF9HUk9VUFM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNpIiwgJnVzZXIsICZiYXNlZ2lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNpZmRlZiBfX0FQUExFX18KKyAgICBncm91cHMgPSBQeU1lbV9NYWxsb2Mobmdyb3VwcyAqIHNpemVvZihpbnQpKTsKKyNlbHNlCisgICAgZ3JvdXBzID0gUHlNZW1fTWFsbG9jKG5ncm91cHMgKiBzaXplb2YoZ2lkX3QpKTsKKyNlbmRpZgorICAgIGlmIChncm91cHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBpZiAoZ2V0Z3JvdXBsaXN0KHVzZXIsIGJhc2VnaWQsIGdyb3VwcywgJm5ncm91cHMpID09IC0xKSB7CisgICAgICAgIFB5TWVtX0RlbChncm91cHMpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldyhuZ3JvdXBzKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0RlbChncm91cHMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmdyb3VwczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpvID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpZ3JvdXBzW2ldKTsKKyAgICAgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgUHlNZW1fRGVsKGdyb3Vwcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeUxpc3RfU0VUX0lURU0obGlzdCwgaSwgbyk7CisgICAgfQorCisgICAgUHlNZW1fRGVsKGdyb3Vwcyk7CisKKyAgICByZXR1cm4gbGlzdDsKK30KKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9HRVRHUk9VUFMKIFB5RG9jX1NUUlZBUihwb3NpeF9nZXRncm91cHNfX2RvY19fLApAQCAtNDU2NSw3ICs2MzYwLDcgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgd2NoYXJfdCB1c2VyX25hbWVbVU5MRU4gKyAxXTsKLSAgICBEV09SRCBudW1fY2hhcnMgPSBzaXplb2YodXNlcl9uYW1lKS9zaXplb2YodXNlcl9uYW1lWzBdKTsKKyAgICBEV09SRCBudW1fY2hhcnMgPSBQeV9BUlJBWV9MRU5HVEgodXNlcl9uYW1lKTsKIAogICAgIGlmIChHZXRVc2VyTmFtZVcodXNlcl9uYW1lLCAmbnVtX2NoYXJzKSkgewogICAgICAgICAvKiBudW1fY2hhcnMgaXMgdGhlIG51bWJlciBvZiB1bmljb2RlIGNoYXJzIHBsdXMgbnVsbCB0ZXJtaW5hdG9yICovCkBAIC00OTY1LDYgKzY3NjAsNyBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpzdHJ1Y3RfcnVzYWdlOworICAgIF9QeV9JREVOVElGSUVSKHN0cnVjdF9ydXNhZ2UpOwogCiAgICAgaWYgKHBpZCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC00OTczLDcgKzY3NjksNyBAQAogICAgICAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInJlc291cmNlIik7CiAgICAgICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc3RydWN0X3J1c2FnZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobSwgInN0cnVjdF9ydXNhZ2UiKTsKKyAgICAgICAgc3RydWN0X3J1c2FnZSA9IF9QeU9iamVjdF9HZXRBdHRySWQobSwgJlB5SWRfc3RydWN0X3J1c2FnZSk7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgaWYgKHN0cnVjdF9ydXNhZ2UgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTA2OSw2ICs2ODY1LDU1IEBACiB9CiAjZW5kaWYgLyogSEFWRV9XQUlUNCAqLwogCisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXRpZF9fZG9jX18sCisid2FpdGlkKGlkdHlwZSwgaWQsIG9wdGlvbnMpIC0+IHdhaXRpZF9yZXN1bHRcblxuXAorV2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygb25lIG9yIG1vcmUgY2hpbGQgcHJvY2Vzc2VzLlxuXG5cCitpZHR5cGUgY2FuIGJlIFBfUElELCBQX1BHSUQgb3IgUF9BTEwuXG5cCitpZCBzcGVjaWZpZXMgdGhlIHBpZCB0byB3YWl0IG9uLlxuXAorb3B0aW9ucyBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBPUmluZyBvZiBvbmUgb3IgbW9yZSBvZiBXRVhJVEVELCBXU1RPUFBFRFxuXAorb3IgV0NPTlRJTlVFRCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGggV05PSEFORyBvciBXTk9XQUlULlxuXAorUmV0dXJucyBlaXRoZXIgd2FpdGlkX3Jlc3VsdCBvciBOb25lIGlmIFdOT0hBTkcgaXMgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmVcblwKK25vIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF93YWl0aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaWR0eXBlX3QgaWR0eXBlOworICAgIGlkX3QgaWQ7CisgICAgaW50IG9wdGlvbnMsIHJlczsKKyAgICBzaWdpbmZvX3Qgc2k7CisgICAgc2kuc2lfcGlkID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgImk6d2FpdGlkIiwgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSB3YWl0aWQoaWR0eXBlLCBpZCwgJnNpLCBvcHRpb25zKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgaWYgKHNpLnNpX3BpZCA9PSAwKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKworICAgIHJlc3VsdCA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZXYWl0aWRSZXN1bHRUeXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMCwgUHlMb25nX0Zyb21QaWQoc2kuc2lfcGlkKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDEsIFB5TG9uZ19Gcm9tUGlkKHNpLnNpX3VpZCkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAyLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLnNpX3NpZ25vKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAzLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLnNpX3N0YXR1cykpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgNCwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS5zaV9jb2RlKSkpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKICNpZmRlZiBIQVZFX1dBSVRQSUQKIFB5RG9jX1NUUlZBUihwb3NpeF93YWl0cGlkX19kb2NfXywKICJ3YWl0cGlkKHBpZCwgb3B0aW9ucykgLT4gKHBpZCwgc3RhdHVzKVxuXG5cCkBAIC01MTQyLDEwNiArNjk4NywyMjYgQEAKICNlbmRpZgogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9sc3RhdF9fZG9jX18sCi0ibHN0YXQocGF0aCkgLT4gc3RhdCByZXN1bHRcblxuXAotTGlrZSBzdGF0KHBhdGgpLCBidXQgZG8gbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xzdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSNpZmRlZiBIQVZFX0xTVEFUCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOmxzdGF0IiwgbHN0YXQsIE5VTEwsIE5VTEwpOwotI2Vsc2UgLyogIUhBVkVfTFNUQVQgKi8KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOmxzdGF0Iiwgd2luMzJfbHN0YXQsICJVOmxzdGF0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB3aW4zMl9sc3RhdF93KTsKLSNlbHNlCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOmxzdGF0IiwgU1RBVCwgTlVMTCwgTlVMTCk7CisjaWYgZGVmaW5lZChIQVZFX1JFQURMSU5LKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCitQeURvY19TVFJWQVIocmVhZGxpbmtfX2RvY19fLAorInJlYWRsaW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKSAtPiBwYXRoXG5cblwKK1JldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gd2hpY2ggdGhlIHN5bWJvbGljIGxpbmsgcG9pbnRzLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogI2VuZGlmCi0jZW5kaWYgLyogIUhBVkVfTFNUQVQgKi8KLX0KLQogCiAjaWZkZWYgSEFWRV9SRUFETElOSwotUHlEb2NfU1RSVkFSKHBvc2l4X3JlYWRsaW5rX19kb2NfXywKLSJyZWFkbGluayhwYXRoKSAtPiBwYXRoXG5cblwKLVJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gd2hpY2ggdGhlIHN5bWJvbGljIGxpbmsgcG9pbnRzLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0KiB2OwotICAgIGNoYXIgYnVmW01BWFBBVEhMRU5dOwotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIGludCBuOwotICAgIGludCBhcmdfaXNfdW5pY29kZSA9IDA7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGNoYXIgYnVmZmVyW01BWFBBVEhMRU5dOworICAgIHNzaXplX3QgbGVuZ3RoOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpyZWFkbGluayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJlYWRsaW5rIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX1JFQURMSU5LQVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIHYgPSBQeVNlcXVlbmNlX0dldEl0ZW0oYXJncywgMCk7Ci0gICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIGFyZ19pc191bmljb2RlID0gMTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKHYpOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG4gPSByZWFkbGluayhwYXRoLCBidWYsIChpbnQpIHNpemVvZiBidWYpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBpZiAoYXJnX2lzX3VuaWNvZGUpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWYsIG4pOworI2lmZGVmIEhBVkVfUkVBRExJTktBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIGxlbmd0aCA9IHJlYWRsaW5rYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIG4pOworI2VuZGlmCisgICAgICAgIGxlbmd0aCA9IHJlYWRsaW5rKHBhdGgubmFycm93LCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGxlbmd0aCA8IDApIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9wb3NpeF9lcnJvcigicmVhZGxpbmsiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHBhdGgub2JqZWN0KSkKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmZmVyLCBsZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWZmZXIsIGxlbmd0aCk7CitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KKworCiAjZW5kaWYgLyogSEFWRV9SRUFETElOSyAqLwogCiAKLSNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKKyNpZmRlZiBIQVZFX1NZTUxJTksKIFB5RG9jX1NUUlZBUihwb3NpeF9zeW1saW5rX19kb2NfXywKLSJzeW1saW5rKHNyYywgZHN0KVxuXG5cCi1DcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIHNyYyBuYW1lZCBkc3QuIik7Cisic3ltbGluayhzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKK0NyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC5cblxuXAordGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmVcblwKKyAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlc1xuXAorICBXaW5kb3dzIDYuMCBvciBncmVhdGVyLCBhbmQgcmFpc2VzIGEgTm90SW1wbGVtZW50ZWRFcnJvciBvdGhlcndpc2UuKVxuXAorICB0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIGlnbm9yZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCisvKiBHcmFiIENyZWF0ZVN5bWJvbGljTGlua1cgZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLworc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykoTFBXU1RSLCBMUFdTVFIsIERXT1JEKSA9IE5VTEw7CitzdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKShMUFNUUiwgTFBTVFIsIERXT1JEKSA9IE5VTEw7CitzdGF0aWMgaW50CitjaGVja19DcmVhdGVTeW1ib2xpY0xpbmsoKQoreworICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CisgICAgLyogb25seSByZWNoZWNrICovCisgICAgaWYgKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CisgICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua1ciKTsKKyAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtBID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rQSIpOworICAgIHJldHVybiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAmJiBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKTsKK30KKworI2VuZGlmCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zeW1saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3N5bWxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIHJldHVybiBwb3NpeF8yc3RyKGFyZ3MsICJPJk8mOnN5bWxpbmsiLCBzeW1saW5rKTsKKyAgICBwYXRoX3Qgc3JjOworICAgIHBhdGhfdCBkc3Q7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCB0YXJnZXRfaXNfZGlyZWN0b3J5ID0gMDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJ0YXJnZXRfaXNfZGlyZWN0b3J5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyX2ZkIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgRFdPUkQgcmVzdWx0OworI2Vsc2UKKyAgICBpbnQgcmVzdWx0OworI2VuZGlmCisKKyAgICBtZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOworICAgIHNyYy5hcmd1bWVudF9uYW1lID0gInNyYyI7CisgICAgbWVtc2V0KCZkc3QsIDAsIHNpemVvZihkc3QpKTsKKyAgICBkc3QuYXJndW1lbnRfbmFtZSA9ICJkc3QiOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICghY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rIGZ1bmN0aW9ucyBub3QgZm91bmQiKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorICAgIGlmICghd2luMzJfY2FuX3N5bWxpbmspIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzeW1ib2xpYyBsaW5rIHByaXZpbGVnZSBub3QgaGVsZCIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisjZW5kaWYKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8aSRPJjpzeW1saW5rIiwKKyAgICAgICAgICAgIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKKyAgICAgICAgICAgICZ0YXJnZXRfaXNfZGlyZWN0b3J5LAorI2lmZGVmIEhBVkVfU1lNTElOS0FUCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCisjZWxzZQorICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAic3ltbGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIik7CisgICAgICAgIHJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChkc3Qud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyhkc3Qud2lkZSwgc3JjLndpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKGRzdC5uYXJyb3csIHNyYy5uYXJyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdCgic3ltbGluayIsIHNyYy5vYmplY3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisjZWxzZQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmIEhBVkVfU1lNTElOS0FUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgcmVzdWx0ID0gc3ltbGlua2F0KHNyYy5uYXJyb3csIGRpcl9mZCwgZHN0Lm5hcnJvdyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IHN5bWxpbmsoc3JjLm5hcnJvdywgZHN0Lm5hcnJvdyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigic3ltbGluayIsICZkc3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICBnb3RvIGV4aXQ7IC8qIHNpbGVuY2UgInVudXNlZCBsYWJlbCIgd2FybmluZyAqLworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnNyYyk7CisgICAgcGF0aF9jbGVhbnVwKCZkc3QpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CisKICNlbmRpZiAvKiBIQVZFX1NZTUxJTksgKi8KIAorCiAjaWYgIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQogCi1QeURvY19TVFJWQVIod2luX3JlYWRsaW5rX19kb2NfXywKLSJyZWFkbGluayhwYXRoKSAtPiBwYXRoXG5cblwKLVJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gd2hpY2ggdGhlIHN5bWJvbGljIGxpbmsgcG9pbnRzLiIpOwotCi0vKiBXaW5kb3dzIHJlYWRsaW5rIGltcGxlbWVudGF0aW9uICovCiBzdGF0aWMgUHlPYmplY3QgKgotd2luX3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbl9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgd2NoYXJfdCAqcGF0aDsKICAgICBEV09SRCBuX2J5dGVzX3JldHVybmVkOwogICAgIERXT1JEIGlvX3Jlc3VsdDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKKwlpbnQgZGlyX2ZkOwogICAgIEhBTkRMRSByZXBhcnNlX3BvaW50X2hhbmRsZTsKIAogICAgIGNoYXIgdGFyZ2V0X2J1ZmZlcltNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRV07CiAgICAgUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKFJFUEFSU0VfREFUQV9CVUZGRVIgKil0YXJnZXRfYnVmZmVyOwogICAgIHdjaGFyX3QgKnByaW50X25hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICJ1OnJlYWRsaW5rIiwKLSAgICAgICAgICAgICAgICAgICZwYXRoKSkKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlV8JE8mOnJlYWRsaW5rIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocG8pOworICAgIGlmIChwYXRoID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogRmlyc3QgZ2V0IGEgaGFuZGxlIHRvIHRoZSByZXBhcnNlIHBvaW50ICovCkBAIC01MjU3LDkgKzcyMjIsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVwYXJzZV9wb2ludF9oYW5kbGU9PUlOVkFMSURfSEFORExFX1ZBTFVFKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoInJlYWRsaW5rIiwgcGF0aCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJyZWFkbGluayIsIHBvKTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAvKiBOZXcgY2FsbCBEZXZpY2VJb0NvbnRyb2wgdG8gcmVhZCB0aGUgcmVwYXJzZSBwb2ludCAqLwpAQCAtNTI3NSw5ICs3MjM4LDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKGlvX3Jlc3VsdD09MCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJyZWFkbGluayIsIHBhdGgpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgicmVhZGxpbmsiLCBwbyk7CiAKICAgICBpZiAocmRiLT5SZXBhcnNlVGFnICE9IElPX1JFUEFSU0VfVEFHX1NZTUxJTkspCiAgICAgewpAQCAtNTI5NSw4MCArNzI1Niw3NiBAQAogCiAjZW5kaWYgLyogIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCi0jaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKIAotLyogR3JhYiBDcmVhdGVTeW1ib2xpY0xpbmtXIGR5bmFtaWNhbGx5IGZyb20ga2VybmVsMzIgKi8KLXN0YXRpYyBpbnQgaGFzX0NyZWF0ZVN5bWJvbGljTGlua1cgPSAwOwotc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykoTFBXU1RSLCBMUFdTVFIsIERXT1JEKTsKLXN0YXRpYyBpbnQKLWNoZWNrX0NyZWF0ZVN5bWJvbGljTGlua1coKQotewotICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7Ci0gICAgLyogb25seSByZWNoZWNrICovCi0gICAgaWYgKGhhc19DcmVhdGVTeW1ib2xpY0xpbmtXKQotICAgICAgICByZXR1cm4gaGFzX0NyZWF0ZVN5bWJvbGljTGlua1c7Ci0gICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlKCJLRVJORUwzMiIpOwotICAgICooRkFSUFJPQyopJlB5X0NyZWF0ZVN5bWJvbGljTGlua1cgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGVTeW1ib2xpY0xpbmtXIik7Ci0gICAgaWYgKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cpCi0gICAgICAgIGhhc19DcmVhdGVTeW1ib2xpY0xpbmtXID0gMTsKLSAgICByZXR1cm4gaGFzX0NyZWF0ZVN5bWJvbGljTGlua1c7Ci19CitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCB0aW1lc19yZXN1bHRfZmllbGRzW10gPSB7CisgICAgeyJ1c2VyIiwgICAgInVzZXIgdGltZSJ9LAorICAgIHsic3lzdGVtIiwgICAic3lzdGVtIHRpbWUifSwKKyAgICB7ImNoaWxkcmVuX3VzZXIiLCAgICAidXNlciB0aW1lIG9mIGNoaWxkcmVuIn0sCisgICAgeyJjaGlsZHJlbl9zeXN0ZW0iLCAgICAic3lzdGVtIHRpbWUgb2YgY2hpbGRyZW4ifSwKKyAgICB7ImVsYXBzZWQiLCAgICAiZWxhcHNlZCB0aW1lIHNpbmNlIGFuIGFyYml0cmFyeSBwb2ludCBpbiB0aGUgcGFzdCJ9LAorICAgIHtOVUxMfQorfTsKIAotUHlEb2NfU1RSVkFSKHdpbl9zeW1saW5rX19kb2NfXywKLSJzeW1saW5rKHNyYywgZHN0LCB0YXJnZXRfaXNfZGlyZWN0b3J5PUZhbHNlKVxuXG5cCi1DcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIHNyYyBuYW1lZCBkc3QuXG5cCi10YXJnZXRfaXNfZGlyZWN0b3J5IGlzIHJlcXVpcmVkIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmUgaW50ZXJwcmV0ZWQgYXNcblwKLWEgZGlyZWN0b3J5LlxuXAotVGhpcyBmdW5jdGlvbiByZXF1aXJlcyBXaW5kb3dzIDYuMCBvciBncmVhdGVyLCBhbmQgcmFpc2VzIGFcblwKLU5vdEltcGxlbWVudGVkRXJyb3Igb3RoZXJ3aXNlLiIpOworUHlEb2NfU1RSVkFSKHRpbWVzX3Jlc3VsdF9fZG9jX18sCisidGltZXNfcmVzdWx0OiBSZXN1bHQgZnJvbSBvcy50aW1lcygpLlxuXG5cCitUaGlzIG9iamVjdCBtYXkgYmUgYWNjZXNzZWQgZWl0aGVyIGFzIGEgdHVwbGUgb2ZcblwKKyAgKHVzZXIsIHN5c3RlbSwgY2hpbGRyZW5fdXNlciwgY2hpbGRyZW5fc3lzdGVtLCBlbGFwc2VkKSxcblwKK29yIHZpYSB0aGUgYXR0cmlidXRlcyB1c2VyLCBzeXN0ZW0sIGNoaWxkcmVuX3VzZXIsIGNoaWxkcmVuX3N5c3RlbSxcblwKK2FuZCBlbGFwc2VkLlxuXAorXG5cCitTZWUgb3MudGltZXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5fc3ltbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzcmMiLCAiZGVzdCIsICJ0YXJnZXRfaXNfZGlyZWN0b3J5IiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKnNyYywgKmRlc3Q7Ci0gICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnkgPSAwOwotICAgIERXT1JEIHJlczsKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgdGltZXNfcmVzdWx0X2Rlc2MgPSB7CisgICAgInRpbWVzX3Jlc3VsdCIsIC8qIG5hbWUgKi8KKyAgICB0aW1lc19yZXN1bHRfX2RvY19fLCAvKiBkb2MgKi8KKyAgICB0aW1lc19yZXN1bHRfZmllbGRzLAorICAgIDUKK307CiAKLSAgICBpZiAoIWNoZWNrX0NyZWF0ZVN5bWJvbGljTGlua1coKSkKLSAgICB7Ci0gICAgICAgIC8qIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IgKi8KLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua1cgbm90IGZvdW5kIik7Ci0gICAgfQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfGk6c3ltbGluayIsCi0gICAgICAgIGt3bGlzdCwgJnNyYywgJmRlc3QsICZ0YXJnZXRfaXNfZGlyZWN0b3J5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFRpbWVzUmVzdWx0VHlwZTsKIAotICAgIGlmICh3aW4zMl9jYW5fc3ltbGluayA9PSAwKQotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX09TRXJyb3IsICJzeW1ib2xpYyBsaW5rIHByaXZpbGVnZSBub3QgaGVsZCIpOwotCi0gICAgaWYgKCFjb252ZXJ0X3RvX3VuaWNvZGUoJnNyYykpIHsgcmV0dXJuIE5VTEw7IH0KLSAgICBpZiAoIWNvbnZlcnRfdG9fdW5pY29kZSgmZGVzdCkpIHsKLSAgICAgICAgUHlfREVDUkVGKHNyYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKAotICAgICAgICBQeVVuaWNvZGVfQXNVbmljb2RlKGRlc3QpLAotICAgICAgICBQeVVuaWNvZGVfQXNVbmljb2RlKHNyYyksCi0gICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKHNyYyk7Ci0gICAgUHlfREVDUkVGKGRlc3QpOwotICAgIGlmICghcmVzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoInN5bWxpbmsiLCBQeVVuaWNvZGVfQXNVbmljb2RlKHNyYykpOwotICAgIH0KLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKSAqLworI2lmZGVmIE1TX1dJTkRPV1MKKyNkZWZpbmUgSEFWRV9USU1FUyAgLyogbWFuZGF0b3J5LCBmb3IgdGhlIG1ldGhvZCB0YWJsZSAqLworI2VuZGlmCiAKICNpZmRlZiBIQVZFX1RJTUVTCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsZF90aW1lc19yZXN1bHQoZG91YmxlIHVzZXIsIGRvdWJsZSBzeXN0ZW0sCisgICAgZG91YmxlIGNoaWxkcmVuX3VzZXIsIGRvdWJsZSBjaGlsZHJlbl9zeXN0ZW0sCisgICAgZG91YmxlIGVsYXBzZWQpCit7CisgICAgUHlPYmplY3QgKnZhbHVlID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlRpbWVzUmVzdWx0VHlwZSk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisjZGVmaW5lIFNFVChpLCBmaWVsZCkgXAorICAgIHsgXAorICAgIFB5T2JqZWN0ICpvID0gUHlGbG9hdF9Gcm9tRG91YmxlKGZpZWxkKTsgXAorICAgIGlmICghbykgeyBcCisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9IFwKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHZhbHVlLCBpLCBvKTsgXAorICAgIH0gXAorCisgICAgU0VUKDAsIHVzZXIpOworICAgIFNFVCgxLCBzeXN0ZW0pOworICAgIFNFVCgyLCBjaGlsZHJlbl91c2VyKTsKKyAgICBTRVQoMywgY2hpbGRyZW5fc3lzdGVtKTsKKyAgICBTRVQoNCwgZWxhcHNlZCk7CisKKyN1bmRlZiBTRVQKKworICAgIHJldHVybiB2YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3RpbWVzX19kb2NfXywKKyJ0aW1lcygpIC0+IHRpbWVzX3Jlc3VsdFxuXG5cCitSZXR1cm4gYW4gb2JqZWN0IGNvbnRhaW5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpbmRpY2F0aW5nIHByb2Nlc3NcblwKK3RpbWVzLiAgVGhlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBuYW1lZCB0dXBsZSB3aXRoIHRoZXNlIGZpZWxkczpcblwKKyAgKHV0aW1lLCBzdGltZSwgY3V0aW1lLCBjc3RpbWUsIGVsYXBzZWRfdGltZSkiKTsKKwogI2lmIGRlZmluZWQoUFlDQ19WQUNQUCkgJiYgZGVmaW5lZChQWU9TX09TMikKIHN0YXRpYyBsb25nCiBzeXN0ZW1fdXB0aW1lKHZvaWQpCkBAIC01Mzg2LDM4ICs3MzQzLDE0IEBACiBwb3NpeF90aW1lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKIHsKICAgICAvKiBDdXJyZW50bHkgT25seSBVcHRpbWUgaXMgUHJvdmlkZWQgLS0gT3RoZXJzIExhdGVyICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImRkZGRkIiwKKyAgICByZXR1cm4gYnVpbGRfdGltZXNfcmVzdWx0KAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpMCAvKiB0LnRtc191dGltZSAvIEhaICovLAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpMCAvKiB0LnRtc19zdGltZSAvIEhaICovLAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpMCAvKiB0LnRtc19jdXRpbWUgLyBIWiAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKTAgLyogdC50bXNfY3N0aW1lIC8gSFogKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlzeXN0ZW1fdXB0aW1lKCkgLyAxMDAwKTsKIH0KLSNlbHNlIC8qIG5vdCBPUzIgKi8KLSNkZWZpbmUgTkVFRF9USUNLU19QRVJfU0VDT05ECi1zdGF0aWMgbG9uZyB0aWNrc19wZXJfc2Vjb25kID0gLTE7Ci1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCi17Ci0gICAgc3RydWN0IHRtcyB0OwotICAgIGNsb2NrX3QgYzsKLSAgICBlcnJubyA9IDA7Ci0gICAgYyA9IHRpbWVzKCZ0KTsKLSAgICBpZiAoYyA9PSAoY2xvY2tfdCkgLTEpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJkZGRkZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0LnRtc191dGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0LnRtc19zdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0LnRtc19jdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfY3N0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWMgLyB0aWNrc19wZXJfc2Vjb25kKTsKLX0KLSNlbmRpZiAvKiBub3QgT1MyICovCi0jZW5kaWYgLyogSEFWRV9USU1FUyAqLwotCi0KLSNpZmRlZiBNU19XSU5ET1dTCi0jZGVmaW5lIEhBVkVfVElNRVMgICAgICAvKiBzbyB0aGUgbWV0aG9kIHRhYmxlIHdpbGwgcGljayBpdCB1cCAqLworI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X3RpbWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewpAQCAtNTQzMCw4ICs3MzYzLDcgQEAKICAgICAgICAxZTcgaXMgb25lIHNlY29uZCBpbiBzdWNoIHVuaXRzOyAxZS03IHRoZSBpbnZlcnNlLgogICAgICAgIDQyOS40OTY3Mjk2IGlzIDIqKjMyIC8gMWU3IG9yIDIqKjMyICogMWUtNy4KICAgICAqLwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKAotICAgICAgICAiZGRkZGQiLAorICAgIHJldHVybiBidWlsZF90aW1lc19yZXN1bHQoCiAgICAgICAgIChkb3VibGUpKHVzZXIuZHdIaWdoRGF0ZVRpbWUqNDI5LjQ5NjcyOTYgKwogICAgICAgICAgICAgICAgICB1c2VyLmR3TG93RGF0ZVRpbWUqMWUtNyksCiAgICAgICAgIChkb3VibGUpKGtlcm5lbC5kd0hpZ2hEYXRlVGltZSo0MjkuNDk2NzI5NiArCkBAIC01NDQwLDE0ICs3MzcyLDI5IEBACiAgICAgICAgIChkb3VibGUpMCwKICAgICAgICAgKGRvdWJsZSkwKTsKIH0KLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCi0KLSNpZmRlZiBIQVZFX1RJTUVTCi1QeURvY19TVFJWQVIocG9zaXhfdGltZXNfX2RvY19fLAotInRpbWVzKCkgLT4gKHV0aW1lLCBzdGltZSwgY3V0aW1lLCBjc3RpbWUsIGVsYXBzZWRfdGltZSlcblxuXAotUmV0dXJuIGEgdHVwbGUgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpbmRpY2F0aW5nIHByb2Nlc3MgdGltZXMuIik7CisjZWxzZSAvKiBOZWl0aGVyIFdpbmRvd3Mgbm9yIE9TLzIgKi8KKyNkZWZpbmUgTkVFRF9USUNLU19QRVJfU0VDT05ECitzdGF0aWMgbG9uZyB0aWNrc19wZXJfc2Vjb25kID0gLTE7CitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgc3RydWN0IHRtcyB0OworICAgIGNsb2NrX3QgYzsKKyAgICBlcnJubyA9IDA7CisgICAgYyA9IHRpbWVzKCZ0KTsKKyAgICBpZiAoYyA9PSAoY2xvY2tfdCkgLTEpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBidWlsZF90aW1lc19yZXN1bHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0LnRtc191dGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0LnRtc19zdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0LnRtc19jdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfY3N0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWMgLyB0aWNrc19wZXJfc2Vjb25kKTsKK30KICNlbmRpZgogCisjZW5kaWYgLyogSEFWRV9USU1FUyAqLworCiAKICNpZmRlZiBIQVZFX0dFVFNJRAogUHlEb2NfU1RSVkFSKHBvc2l4X2dldHNpZF9fZG9jX18sCkBAIC01NTQ2LDQ5ICs3NDkzLDY4IEBACiAvKiBGdW5jdGlvbnMgYWN0aW5nIG9uIGZpbGUgZGVzY3JpcHRvcnMgKi8KIAogUHlEb2NfU1RSVkFSKHBvc2l4X29wZW5fX2RvY19fLAotIm9wZW4oZmlsZW5hbWUsIGZsYWcgWywgbW9kZT0wNzc3XSkgLT4gZmRcblxuXAotT3BlbiBhIGZpbGUgKGZvciBsb3cgbGV2ZWwgSU8pLiIpOworIm9wZW4ocGF0aCwgZmxhZ3MsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKVxuXG5cCitPcGVuIGEgZmlsZSBmb3IgbG93IGxldmVsIElPLiAgUmV0dXJucyBhIGZpbGUgaGFuZGxlIChpbnRlZ2VyKS5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X29wZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfb3BlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9maWxlOwotICAgIGNoYXIgKmZpbGU7Ci0gICAgaW50IGZsYWc7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGZsYWdzOwogICAgIGludCBtb2RlID0gMDc3NzsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZkOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVWl8aTpvcGVuIiwgJnBvLCAmZmxhZywgJm1vZGUpKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgLyogUHlVbmljb2RlX0FTX1VOSUNPREUgT0sgd2l0aG91dCB0aHJlYWQKLSAgICAgICAgICAgbG9jayBhcyBpdCBpcyBhIHNpbXBsZSBkZXJlZmVyZW5jZS4gKi8KLSAgICAgICAgZmQgPSBfd29wZW4oUHlVbmljb2RlX0FTX1VOSUNPREUocG8pLCBmbGFnLCBtb2RlKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGZkIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWZkKTsKLSAgICB9Ci0gICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7CisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXxpJE8mOm9wZW4iLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAmZmxhZ3MsICZtb2RlLAorI2lmZGVmIEhBVkVfT1BFTkFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAogI2VuZGlmCi0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxpOm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZsYWcsICZtb2RlKSkKKyAgICAgICAgKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZmlsZSA9IFB5Qnl0ZXNfQXNTdHJpbmcob2ZpbGUpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBmZCA9IG9wZW4oZmlsZSwgZmxhZywgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoZmQgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob2ZpbGUpOwotICAgIFB5X0RFQ1JFRihvZmlsZSk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7Ci19CiAKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIGZkID0gX3dvcGVuKHBhdGgud2lkZSwgZmxhZ3MsIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorI2lmZGVmIEhBVkVfT1BFTkFUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgZmQgPSBvcGVuYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgZmxhZ3MsIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBmZCA9IG9wZW4ocGF0aC5uYXJyb3csIGZsYWdzLCBtb2RlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGZkID09IC0xKSB7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAvKiBmb3JjZSB1c2Ugb2YgcG9zaXhfZXJyb3IgaGVyZSBmb3IgZXhhY3QgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKi8KKyAgICAgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJvcGVuIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKWZkKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CiAKIFB5RG9jX1NUUlZBUihwb3NpeF9jbG9zZV9fZG9jX18sCiAiY2xvc2UoZmQpXG5cblwKQEAgLTU2NDMsOSArNzYwOSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGZkID0gZHVwKGZkKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOwpAQCAtNTY2NCwxNSArNzYyOCw0MiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIV9QeVZlcmlmeV9mZF9kdXAyKGZkLCBmZDIpKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gZHVwMihmZCwgZmQyKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKKyNpZmRlZiBIQVZFX0xPQ0tGCitQeURvY19TVFJWQVIocG9zaXhfbG9ja2ZfX2RvY19fLAorImxvY2tmKGZkLCBjbWQsIGxlbilcblxuXAorQXBwbHksIHRlc3Qgb3IgcmVtb3ZlIGEgUE9TSVggbG9jayBvbiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblxuXAorZmQgaXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitjbWQgc3BlY2lmaWVzIHRoZSBjb21tYW5kIHRvIHVzZSAtIG9uZSBvZiBGX0xPQ0ssIEZfVExPQ0ssIEZfVUxPQ0sgb3JcblwKK0ZfVEVTVC5cblwKK2xlbiBzcGVjaWZpZXMgdGhlIHNlY3Rpb24gb2YgdGhlIGZpbGUgdG8gbG9jay4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X2xvY2tmKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgZmQsIGNtZCwgcmVzOworICAgIG9mZl90IGxlbjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6bG9ja2YiLAorICAgICAgICAgICAgJmZkLCAmY21kLCBfcGFyc2Vfb2ZmX3QsICZsZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBsb2NrZihmZCwgY21kLCBsZW4pOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiAKIFB5RG9jX1NUUlZBUihwb3NpeF9sc2Vla19fZG9jX18sCiAibHNlZWsoZmQsIHBvcywgaG93KSAtPiBuZXdwb3NcblxuXApAQCAtNTcwMyw4ICs3Njk0LDcgQEAKICNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQogICAgIHBvcyA9IFB5TG9uZ19Bc0xvbmcocG9zb2JqKTsKICNlbHNlCi0gICAgcG9zID0gUHlMb25nX0NoZWNrKHBvc29iaikgPwotICAgICAgICBQeUxvbmdfQXNMb25nTG9uZyhwb3NvYmopIDogUHlMb25nX0FzTG9uZyhwb3NvYmopOworICAgIHBvcyA9IFB5TG9uZ19Bc0xvbmdMb25nKHBvc29iaik7CiAjZW5kaWYKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NzY0LDYgKzc3NTQsMTQwIEBACiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorI2lmIChkZWZpbmVkKEhBVkVfU0VOREZJTEUpICYmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIFwKKyAgICB8fCBkZWZpbmVkKF9fQVBQTEVfXykpKSB8fCBkZWZpbmVkKEhBVkVfUkVBRFYpIHx8IGRlZmluZWQoSEFWRV9XUklURVYpCitzdGF0aWMgUHlfc3NpemVfdAoraW92X3NldHVwKHN0cnVjdCBpb3ZlYyAqKmlvdiwgUHlfYnVmZmVyICoqYnVmLCBQeU9iamVjdCAqc2VxLCBpbnQgY250LCBpbnQgdHlwZSkKK3sKKyAgICBpbnQgaSwgajsKKyAgICBQeV9zc2l6ZV90IGJsZW4sIHRvdGFsID0gMDsKKworICAgICppb3YgPSBQeU1lbV9OZXcoc3RydWN0IGlvdmVjLCBjbnQpOworICAgIGlmICgqaW92ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIHRvdGFsOworICAgIH0KKworICAgICpidWYgPSBQeU1lbV9OZXcoUHlfYnVmZmVyLCBjbnQpOworICAgIGlmICgqYnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlNZW1fRGVsKCppb3YpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gdG90YWw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IGNudDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlTZXF1ZW5jZV9HZXRJdGVtKHNlcSwgaSk7CisgICAgICAgIGlmIChpdGVtID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoaXRlbSwgJigqYnVmKVtpXSwgdHlwZSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICgqaW92KVtpXS5pb3ZfYmFzZSA9ICgqYnVmKVtpXS5idWY7CisgICAgICAgIGJsZW4gPSAoKmJ1ZilbaV0ubGVuOworICAgICAgICAoKmlvdilbaV0uaW92X2xlbiA9IGJsZW47CisgICAgICAgIHRvdGFsICs9IGJsZW47CisgICAgfQorICAgIHJldHVybiB0b3RhbDsKKworZmFpbDoKKyAgICBQeU1lbV9EZWwoKmlvdik7CisgICAgZm9yIChqID0gMDsgaiA8IGk7IGorKykgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCYoKmJ1Zilbal0pOworICAgIH0KKyAgICBQeU1lbV9EZWwoKmJ1Zik7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitpb3ZfY2xlYW51cChzdHJ1Y3QgaW92ZWMgKmlvdiwgUHlfYnVmZmVyICpidWYsIGludCBjbnQpCit7CisgICAgaW50IGk7CisgICAgUHlNZW1fRGVsKGlvdik7CisgICAgZm9yIChpID0gMDsgaSA8IGNudDsgaSsrKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZltpXSk7CisgICAgfQorICAgIFB5TWVtX0RlbChidWYpOworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1JFQURWCitQeURvY19TVFJWQVIocG9zaXhfcmVhZHZfX2RvY19fLAorInJlYWR2KGZkLCBidWZmZXJzKSAtPiBieXRlc3JlYWRcblxuXAorUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGludG8gYSBudW1iZXIgb2Ygd3JpdGFibGUgYnVmZmVycy4gYnVmZmVyc1xuXAoraXMgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuXG5cCitSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3JlYWR2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgZmQsIGNudDsKKyAgICBQeV9zc2l6ZV90IG47CisgICAgUHlPYmplY3QgKnNlcTsKKyAgICBzdHJ1Y3QgaW92ZWMgKmlvdjsKKyAgICBQeV9idWZmZXIgKmJ1ZjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cmVhZHYiLCAmZmQsICZzZXEpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgInJlYWR2KCkgYXJnIDIgbXVzdCBiZSBhIHNlcXVlbmNlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBjbnQgPSBQeVNlcXVlbmNlX1NpemUoc2VxKTsKKworICAgIGlmICghaW92X3NldHVwKCZpb3YsICZidWYsIHNlcSwgY250LCBQeUJVRl9XUklUQUJMRSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIG4gPSByZWFkdihmZCwgaW92LCBjbnQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpb3ZfY2xlYW51cChpb3YsIGJ1ZiwgY250KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG4pOworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1BSRUFECitQeURvY19TVFJWQVIocG9zaXhfcHJlYWRfX2RvY19fLAorInByZWFkKGZkLCBidWZmZXJzaXplLCBvZmZzZXQpIC0+IHN0cmluZ1xuXG5cCitSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IsIGZkLCBhdCBhIHBvc2l0aW9uIG9mIG9mZnNldC4gSXQgd2lsbCByZWFkIHVwXG5cCit0byBidWZmZXJzaXplIG51bWJlciBvZiBieXRlcy4gVGhlIGZpbGUgb2Zmc2V0IHJlbWFpbnMgdW5jaGFuZ2VkLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcHJlYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBmZCwgc2l6ZTsKKyAgICBvZmZfdCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBuOworICAgIFB5T2JqZWN0ICpidWZmZXI7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOnByZWFkIiwgJmZkLCAmc2l6ZSwgX3BhcnNlX29mZl90LCAmb2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKyAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgc2l6ZSk7CisgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgbiA9IHByZWFkKGZkLCBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpLCBzaXplLCBvZmZzZXQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKG4gPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgaWYgKG4gIT0gc2l6ZSkKKyAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZidWZmZXIsIG4pOworICAgIHJldHVybiBidWZmZXI7Cit9CisjZW5kaWYKIAogUHlEb2NfU1RSVkFSKHBvc2l4X3dyaXRlX19kb2NfXywKICJ3cml0ZShmZCwgc3RyaW5nKSAtPiBieXRlc3dyaXR0ZW5cblxuXApAQCAtNTc5OCwxMCArNzkyMiwxNDkgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOwogfQogCisjaWZkZWYgSEFWRV9TRU5ERklMRQorUHlEb2NfU1RSVkFSKHBvc2l4X3NlbmRmaWxlX19kb2NfXywKKyJzZW5kZmlsZShvdXQsIGluLCBvZmZzZXQsIG5ieXRlcykgLT4gYnl0ZXN3cml0dGVuXG5cCitzZW5kZmlsZShvdXQsIGluLCBvZmZzZXQsIG5ieXRlcywgaGVhZGVycz1Ob25lLCB0cmFpbGVycz1Ob25lLCBmbGFncz0wKVxuXAorICAgICAgICAgICAgLT4gYnl0ZXN3cml0dGVuXG5cCitDb3B5IG5ieXRlcyBieXRlcyBmcm9tIGZpbGUgZGVzY3JpcHRvciBpbiB0byBmaWxlIGRlc2NyaXB0b3Igb3V0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2VuZGZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkaWN0KQoreworICAgIGludCBpbiwgb3V0OworICAgIFB5X3NzaXplX3QgcmV0OworICAgIG9mZl90IG9mZnNldDsKKworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCisjaWZuZGVmIF9fQVBQTEVfXworICAgIFB5X3NzaXplX3QgbGVuOworI2VuZGlmCisgICAgUHlPYmplY3QgKmhlYWRlcnMgPSBOVUxMLCAqdHJhaWxlcnMgPSBOVUxMOworICAgIFB5X2J1ZmZlciAqaGJ1ZiwgKnRidWY7CisgICAgb2ZmX3Qgc2J5dGVzOworICAgIHN0cnVjdCBzZl9oZHRyIHNmOworICAgIGludCBmbGFncyA9IDA7CisgICAgc2YuaGVhZGVycyA9IE5VTEw7CisgICAgc2YudHJhaWxlcnMgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJvdXQiLCAiaW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2Zmc2V0IiwgImNvdW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYWRlcnMiLCAidHJhaWxlcnMiLCAiZmxhZ3MiLCBOVUxMfTsKKworI2lmZGVmIF9fQVBQTEVfXworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpTyZPJnxPT2k6c2VuZGZpbGUiLAorICAgICAgICBrZXl3b3JkcywgJm91dCwgJmluLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsIF9wYXJzZV9vZmZfdCwgJnNieXRlcywKKyNlbHNlCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAiaWlPJm58T09pOnNlbmRmaWxlIiwKKyAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0LCAmbGVuLAorI2VuZGlmCisgICAgICAgICAgICAgICAgJmhlYWRlcnMsICZ0cmFpbGVycywgJmZsYWdzKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChoZWFkZXJzICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKGhlYWRlcnMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJzZW5kZmlsZSgpIGhlYWRlcnMgbXVzdCBiZSBhIHNlcXVlbmNlIG9yIE5vbmUiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpID0gMDsgLyogQXZvaWQgdW5pbml0aWFsaXplZCB3YXJuaW5nICovCisgICAgICAgICAgICBzZi5oZHJfY250ID0gUHlTZXF1ZW5jZV9TaXplKGhlYWRlcnMpOworICAgICAgICAgICAgaWYgKHNmLmhkcl9jbnQgPiAwICYmCisgICAgICAgICAgICAgICAgIShpID0gaW92X3NldHVwKCYoc2YuaGVhZGVycyksICZoYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLCBzZi5oZHJfY250LCBQeUJVRl9TSU1QTEUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyNpZmRlZiBfX0FQUExFX18KKyAgICAgICAgICAgIHNieXRlcyArPSBpOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHRyYWlsZXJzICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHRyYWlsZXJzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAic2VuZGZpbGUoKSB0cmFpbGVycyBtdXN0IGJlIGEgc2VxdWVuY2Ugb3IgTm9uZSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGkgPSAwOyAvKiBBdm9pZCB1bmluaXRpYWxpemVkIHdhcm5pbmcgKi8KKyAgICAgICAgICAgIHNmLnRybF9jbnQgPSBQeVNlcXVlbmNlX1NpemUodHJhaWxlcnMpOworICAgICAgICAgICAgaWYgKHNmLnRybF9jbnQgPiAwICYmCisgICAgICAgICAgICAgICAgIShpID0gaW92X3NldHVwKCYoc2YudHJhaWxlcnMpLCAmdGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxlcnMsIHNmLnRybF9jbnQsIFB5QlVGX1NJTVBMRSkpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIF9fQVBQTEVfXworICAgICAgICAgICAgc2J5dGVzICs9IGk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBfX0FQUExFX18KKyAgICByZXQgPSBzZW5kZmlsZShpbiwgb3V0LCBvZmZzZXQsICZzYnl0ZXMsICZzZiwgZmxhZ3MpOworI2Vsc2UKKyAgICByZXQgPSBzZW5kZmlsZShpbiwgb3V0LCBvZmZzZXQsIGxlbiwgJnNmLCAmc2J5dGVzLCBmbGFncyk7CisjZW5kaWYKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHNmLmhlYWRlcnMgIT0gTlVMTCkKKyAgICAgICAgaW92X2NsZWFudXAoc2YuaGVhZGVycywgaGJ1Ziwgc2YuaGRyX2NudCk7CisgICAgaWYgKHNmLnRyYWlsZXJzICE9IE5VTEwpCisgICAgICAgIGlvdl9jbGVhbnVwKHNmLnRyYWlsZXJzLCB0YnVmLCBzZi50cmxfY250KTsKKworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGlmICgoZXJybm8gPT0gRUFHQUlOKSB8fCAoZXJybm8gPT0gRUJVU1kpKSB7CisgICAgICAgICAgICBpZiAoc2J5dGVzICE9IDApIHsKKyAgICAgICAgICAgICAgICAvLyBzb21lIGRhdGEgaGFzIGJlZW4gc2VudAorICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIG5vIGRhdGEgaGFzIGJlZW4gc2VudDsgdXBwZXIgYXBwbGljYXRpb24gaXMgc3VwcG9zZWQKKyAgICAgICAgICAgICAgICAvLyB0byByZXRyeSBvbiBFQUdBSU4gb3IgRUJVU1kKKyAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgZ290byBkb25lOworCitkb25lOgorICAgICNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgibCIsIHNieXRlcyk7CisgICAgI2Vsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIkwiLCBzYnl0ZXMpOworICAgICNlbmRpZgorCisjZWxzZQorICAgIFB5X3NzaXplX3QgY291bnQ7CisgICAgUHlPYmplY3QgKm9mZm9iajsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsib3V0IiwgImluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9mZnNldCIsICJjb3VudCIsIE5VTEx9OworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpT246c2VuZGZpbGUiLAorICAgICAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgJm9mZm9iaiwgJmNvdW50KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjaWZkZWYgbGludXgKKyAgICBpZiAob2Zmb2JqID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXQgPSBzZW5kZmlsZShvdXQsIGluLCBOVUxMLCBjb3VudCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJuIiwgcmV0KTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAoIV9wYXJzZV9vZmZfdChvZmZvYmosICZvZmZzZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0ID0gc2VuZGZpbGUob3V0LCBpbiwgJm9mZnNldCwgY291bnQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJuIiwgcmV0KTsKKyNlbmRpZgorfQorI2VuZGlmCiAKIFB5RG9jX1NUUlZBUihwb3NpeF9mc3RhdF9fZG9jX18sCiAiZnN0YXQoZmQpIC0+IHN0YXQgcmVzdWx0XG5cblwKLUxpa2Ugc3RhdCgpLCBidXQgZm9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiIpOworTGlrZSBzdGF0KCksIGJ1dCBmb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitFcXVpdmFsZW50IHRvIHN0YXQoZmQ9ZmQpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfZnN0YXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtNTgxNSw4ICs4MDc4LDYgQEAKICAgICAvKiBvbiBPcGVuVk1TIHdlIG11c3QgZW5zdXJlIHRoYXQgYWxsIGJ5dGVzIGFyZSB3cml0dGVuIHRvIHRoZSBmaWxlICovCiAgICAgZnN5bmMoZmQpOwogI2VuZGlmCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gRlNUQVQoZmQsICZzdCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKQEAgLTU4NTksOSArODEyMCw3IEBACiAgICAgSEZJTEUgcmVhZCwgd3JpdGU7CiAgICAgQVBJUkVUIHJjOwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJjID0gRG9zQ3JlYXRlUGlwZSggJnJlYWQsICZ3cml0ZSwgNDA5Nik7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgIT0gTk9fRVJST1IpCiAgICAgICAgIHJldHVybiBvczJfZXJyb3IocmMpOwogCkBAIC01ODcwLDkgKzgxMjksNyBAQAogI2lmICFkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgaW50IGZkc1syXTsKICAgICBpbnQgcmVzOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSBwaXBlKGZkcyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzICE9IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoaWkpIiwgZmRzWzBdLCBmZHNbMV0pOwpAQCAtNTg4MCw5ICs4MTM3LDcgQEAKICAgICBIQU5ETEUgcmVhZCwgd3JpdGU7CiAgICAgaW50IHJlYWRfZmQsIHdyaXRlX2ZkOwogICAgIEJPT0wgb2s7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIG9rID0gQ3JlYXRlUGlwZSgmcmVhZCwgJndyaXRlLCBOVUxMLCAwKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigiQ3JlYXRlUGlwZSIsIE5VTEwpOwogICAgIHJlYWRfZmQgPSBfb3Blbl9vc2ZoYW5kbGUoKFB5X2ludHB0cl90KXJlYWQsIDApOwpAQCAtNTg5Myw2NiArODE0OCwyMTQgQEAKIH0KICNlbmRpZiAgLyogSEFWRV9QSVBFICovCiAKLQotI2lmZGVmIEhBVkVfTUtGSUZPCi1QeURvY19TVFJWQVIocG9zaXhfbWtmaWZvX19kb2NfXywKLSJta2ZpZm8oZmlsZW5hbWUgWywgbW9kZT0wNjY2XSlcblxuXAotQ3JlYXRlIGEgRklGTyAoYSBQT1NJWCBuYW1lZCBwaXBlKS4iKTsKKyNpZmRlZiBIQVZFX1BJUEUyCitQeURvY19TVFJWQVIocG9zaXhfcGlwZTJfX2RvY19fLAorInBpcGUyKGZsYWdzKSAtPiAocmVhZF9lbmQsIHdyaXRlX2VuZClcblxuXAorQ3JlYXRlIGEgcGlwZSB3aXRoIGZsYWdzIHNldCBhdG9taWNhbGx5LlxuXAorZmxhZ3MgY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IE9SaW5nIHRvZ2V0aGVyIG9uZSBvciBtb3JlIG9mIHRoZXNlIHZhbHVlczpcblwKK09fTk9OQkxPQ0ssIE9fQ0xPRVhFQy5cblwKKyIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbWtmaWZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3BpcGUyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpmaWxlbmFtZTsKLSAgICBpbnQgbW9kZSA9IDA2NjY7CisgICAgaW50IGZsYWdzOworICAgIGludCBmZHNbMl07CiAgICAgaW50IHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mfGk6bWtmaWZvIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZtb2RlKSkKKworICAgIGZsYWdzID0gUHlMb25nX0FzTG9uZyhhcmcpOworICAgIGlmIChmbGFncyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmaWxlbmFtZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gbWtmaWZvKGZpbGVuYW1lLCBtb2RlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgaWYgKHJlcyA8IDApCisKKyAgICByZXMgPSBwaXBlMihmZHMsIGZsYWdzKTsKKyAgICBpZiAocmVzICE9IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKGlpKSIsIGZkc1swXSwgZmRzWzFdKTsKK30KKyNlbmRpZiAvKiBIQVZFX1BJUEUyICovCisKKyNpZmRlZiBIQVZFX1dSSVRFVgorUHlEb2NfU1RSVkFSKHBvc2l4X3dyaXRldl9fZG9jX18sCisid3JpdGV2KGZkLCBidWZmZXJzKSAtPiBieXRlc3dyaXR0ZW5cblxuXAorV3JpdGUgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlcnMgdG8gYSBmaWxlIGRlc2NyaXB0b3IsIHdoZXJlIGJ1ZmZlcnMgaXMgYW5cblwKK2FyYml0cmFyeSBzZXF1ZW5jZSBvZiBidWZmZXJzLlxuXAorUmV0dXJucyB0aGUgdG90YWwgYnl0ZXMgd3JpdHRlbi4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3dyaXRldihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkLCBjbnQ7CisgICAgUHlfc3NpemVfdCByZXM7CisgICAgUHlPYmplY3QgKnNlcTsKKyAgICBzdHJ1Y3QgaW92ZWMgKmlvdjsKKyAgICBQeV9idWZmZXIgKmJ1ZjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOndyaXRldiIsICZmZCwgJnNlcSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhzZXEpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAid3JpdGV2KCkgYXJnIDIgbXVzdCBiZSBhIHNlcXVlbmNlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBjbnQgPSBQeVNlcXVlbmNlX1NpemUoc2VxKTsKKworICAgIGlmICghaW92X3NldHVwKCZpb3YsICZidWYsIHNlcSwgY250LCBQeUJVRl9TSU1QTEUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSB3cml0ZXYoZmQsIGlvdiwgY250KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaW92X2NsZWFudXAoaW92LCBidWYsIGNudCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1BXUklURQorUHlEb2NfU1RSVkFSKHBvc2l4X3B3cml0ZV9fZG9jX18sCisicHdyaXRlKGZkLCBzdHJpbmcsIG9mZnNldCkgLT4gYnl0ZXN3cml0dGVuXG5cblwKK1dyaXRlIHN0cmluZyB0byBhIGZpbGUgZGVzY3JpcHRvciwgZmQsIGZyb20gb2Zmc2V0LCBsZWF2aW5nIHRoZSBmaWxlXG5cCitvZmZzZXQgdW5jaGFuZ2VkLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcHdyaXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgcGJ1ZjsKKyAgICBpbnQgZmQ7CisgICAgb2ZmX3Qgb2Zmc2V0OworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqTyY6cHdyaXRlIiwgJmZkLCAmcGJ1ZiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgc2l6ZSA9IHB3cml0ZShmZCwgcGJ1Zi5idWYsIChzaXplX3QpcGJ1Zi5sZW4sIG9mZnNldCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfTUtGSUZPCitQeURvY19TVFJWQVIocG9zaXhfbWtmaWZvX19kb2NfXywKKyJta2ZpZm8ocGF0aCwgbW9kZT0wbzY2NiwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKK0NyZWF0ZSBhIEZJRk8gKGEgUE9TSVggbmFtZWQgcGlwZSkuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9ta2ZpZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBtb2RlID0gMDY2NjsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtmaWZvIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgJm1vZGUsCisjaWZkZWYgSEFWRV9NS0ZJRk9BVAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKKyNlbmRpZgorICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX01LRklGT0FUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgcmVzdWx0ID0gbWtmaWZvYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IG1rZmlmbyhwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCiBQeURvY19TVFJWQVIocG9zaXhfbWtub2RfX2RvY19fLAotIm1rbm9kKGZpbGVuYW1lIFssIG1vZGU9MDYwMCwgZGV2aWNlXSlcblxuXAorIm1rbm9kKGZpbGVuYW1lLCBtb2RlPTBvNjAwLCBkZXZpY2U9MCwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKIENyZWF0ZSBhIGZpbGVzeXN0ZW0gbm9kZSAoZmlsZSwgZGV2aWNlIHNwZWNpYWwgZmlsZSBvciBuYW1lZCBwaXBlKVxuXAogbmFtZWQgZmlsZW5hbWUuIG1vZGUgc3BlY2lmaWVzIGJvdGggdGhlIHBlcm1pc3Npb25zIHRvIHVzZSBhbmQgdGhlXG5cCiB0eXBlIG9mIG5vZGUgdG8gYmUgY3JlYXRlZCwgYmVpbmcgY29tYmluZWQgKGJpdHdpc2UgT1IpIHdpdGggb25lIG9mXG5cCiBTX0lGUkVHLCBTX0lGQ0hSLCBTX0lGQkxLLCBhbmQgU19JRklGTy4gRm9yIFNfSUZDSFIgYW5kIFNfSUZCTEssXG5cCiBkZXZpY2UgZGVmaW5lcyB0aGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugc3BlY2lhbCBmaWxlIChwcm9iYWJseSB1c2luZ1xuXAotb3MubWFrZWRldigpKSwgb3RoZXJ3aXNlIGl0IGlzIGlnbm9yZWQuIik7Citvcy5tYWtlZGV2KCkpLCBvdGhlcndpc2UgaXQgaXMgaWdub3JlZC5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbWtub2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfbWtub2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpmaWxlbmFtZTsKLSAgICBpbnQgbW9kZSA9IDA2MDA7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IG1vZGUgPSAwNjY2OwogICAgIGludCBkZXZpY2UgPSAwOwotICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxpaTpta25vZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbW9kZSwgJmRldmljZSkpCisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkZXZpY2UiLCAiZGlyX2ZkIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aWkkTyY6bWtub2QiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAmbW9kZSwgJmRldmljZSwKKyNpZmRlZiBIQVZFX01LTk9EQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZmlsZW5hbWUgPSBQeUJ5dGVzX0FTX1NUUklORyhvcGF0aCk7CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gbWtub2QoZmlsZW5hbWUsIG1vZGUsIGRldmljZSk7CisjaWZkZWYgSEFWRV9NS05PREFUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgcmVzdWx0ID0gbWtub2RhdChkaXJfZmQsIHBhdGgubmFycm93LCBtb2RlLCBkZXZpY2UpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBta25vZChwYXRoLm5hcnJvdywgbW9kZSwgZGV2aWNlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KICNlbmRpZgogCkBAIC02MDA5LDE4ICs4NDEyLDggQEAKICAgICBpbnQgZmQ7CiAgICAgb2ZmX3QgbGVuZ3RoOwogICAgIGludCByZXM7Ci0gICAgUHlPYmplY3QgKmxlbm9iajsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86ZnRydW5jYXRlIiwgJmZkLCAmbGVub2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQotICAgIGxlbmd0aCA9IFB5TG9uZ19Bc0xvbmcobGVub2JqKTsKLSNlbHNlCi0gICAgbGVuZ3RoID0gUHlMb25nX0NoZWNrKGxlbm9iaikgPwotICAgICAgICBQeUxvbmdfQXNMb25nTG9uZyhsZW5vYmopIDogUHlMb25nX0FzTG9uZyhsZW5vYmopOwotI2VuZGlmCi0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyY6ZnRydW5jYXRlIiwgJmZkLCBfcGFyc2Vfb2ZmX3QsICZsZW5ndGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTYwMzMsNiArODQyNiwxMDkgQEAKIH0KICNlbmRpZgogCisjaWZkZWYgSEFWRV9UUlVOQ0FURQorUHlEb2NfU1RSVkFSKHBvc2l4X3RydW5jYXRlX19kb2NfXywKKyJ0cnVuY2F0ZShwYXRoLCBsZW5ndGgpXG5cblwKK1RydW5jYXRlIHRoZSBmaWxlIGdpdmVuIGJ5IHBhdGggdG8gbGVuZ3RoIGJ5dGVzLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF90cnVuY2F0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcGF0aF90IHBhdGg7CisgICAgb2ZmX3QgbGVuZ3RoOworICAgIGludCByZXM7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibGVuZ3RoIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GVFJVTkNBVEUKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6dHJ1bmNhdGUiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnNlX29mZl90LCAmbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9GVFJVTkNBVEUKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkKKyAgICAgICAgcmVzID0gZnRydW5jYXRlKHBhdGguZmQsIGxlbmd0aCk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlcyA9IHRydW5jYXRlKHBhdGgubmFycm93LCBsZW5ndGgpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJlc3VsdCA9IHBhdGhfcG9zaXhfZXJyb3IoInRydW5jYXRlIiwgJnBhdGgpOworICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHJlc3VsdCA9IFB5X05vbmU7CisgICAgfQorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9QT1NJWF9GQUxMT0NBVEUKK1B5RG9jX1NUUlZBUihwb3NpeF9wb3NpeF9mYWxsb2NhdGVfX2RvY19fLAorInBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW4pXG5cblwKK0Vuc3VyZXMgdGhhdCBlbm91Z2ggZGlzayBzcGFjZSBpcyBhbGxvY2F0ZWQgZm9yIHRoZSBmaWxlIHNwZWNpZmllZCBieSBmZFxuXAorc3RhcnRpbmcgZnJvbSBvZmZzZXQgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbiBieXRlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3Bvc2l4X2ZhbGxvY2F0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgb2ZmX3QgbGVuLCBvZmZzZXQ7CisgICAgaW50IHJlcywgZmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk8mOnBvc2l4X2ZhbGxvY2F0ZSIsCisgICAgICAgICAgICAmZmQsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgX3BhcnNlX29mZl90LCAmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gcG9zaXhfZmFsbG9jYXRlKGZkLCBvZmZzZXQsIGxlbik7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzICE9IDApIHsKKyAgICAgICAgZXJybm8gPSByZXM7CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9QT1NJWF9GQURWSVNFCitQeURvY19TVFJWQVIocG9zaXhfcG9zaXhfZmFkdmlzZV9fZG9jX18sCisicG9zaXhfZmFkdmlzZShmZCwgb2Zmc2V0LCBsZW4sIGFkdmljZSlcblxuXAorQW5ub3VuY2VzIGFuIGludGVudGlvbiB0byBhY2Nlc3MgZGF0YSBpbiBhIHNwZWNpZmljIHBhdHRlcm4gdGh1cyBhbGxvd2luZ1xuXAordGhlIGtlcm5lbCB0byBtYWtlIG9wdGltaXphdGlvbnMuXG5cCitUaGUgYWR2aWNlIGFwcGxpZXMgdG8gdGhlIHJlZ2lvbiBvZiB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmQgc3RhcnRpbmcgYXRcblwKK29mZnNldCBhbmQgY29udGludWluZyBmb3IgbGVuIGJ5dGVzLlxuXAorYWR2aWNlIGlzIG9uZSBvZiBQT1NJWF9GQURWX05PUk1BTCwgUE9TSVhfRkFEVl9TRVFVRU5USUFMLFxuXAorUE9TSVhfRkFEVl9SQU5ET00sIFBPU0lYX0ZBRFZfTk9SRVVTRSwgUE9TSVhfRkFEVl9XSUxMTkVFRCBvclxuXAorUE9TSVhfRkFEVl9ET05UTkVFRC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3Bvc2l4X2ZhZHZpc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIG9mZl90IGxlbiwgb2Zmc2V0OworICAgIGludCByZXMsIGZkLCBhZHZpY2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk8maTpwb3NpeF9mYWR2aXNlIiwKKyAgICAgICAgICAgICZmZCwgX3BhcnNlX29mZl90LCAmb2Zmc2V0LCBfcGFyc2Vfb2ZmX3QsICZsZW4sICZhZHZpY2UpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBwb3NpeF9mYWR2aXNlKGZkLCBvZmZzZXQsIGxlbiwgYWR2aWNlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXMgIT0gMCkgeworICAgICAgICBlcnJubyA9IHJlczsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKICNpZmRlZiBIQVZFX1BVVEVOVgogUHlEb2NfU1RSVkFSKHBvc2l4X3B1dGVudl9fZG9jX18sCiAicHV0ZW52KGtleSwgdmFsdWUpXG5cblwKQEAgLTYwNDUsMjMgKzg1NDEsNDAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9wdXRlbnYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIFB5T2JqZWN0ICpuZXdzdHIgPSBOVUxMOwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB3Y2hhcl90ICpzMSwgKnMyOworICAgIFB5T2JqZWN0ICpvczEsICpvczI7CiAgICAgd2NoYXJfdCAqbmV3ZW52OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJVVTpwdXRlbnYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmb3MxLCAmb3MyKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuZXdzdHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVU9JVUiLCBvczEsIG9zMik7CisgICAgaWYgKG5ld3N0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChfTUFYX0VOViA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5ld3N0cikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGxvbmdlciB0aGFuICV1IGNoYXJhY3RlcnMiLAorICAgICAgICAgICAgICAgICAgICAgX01BWF9FTlYpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIG5ld2VudiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUobmV3c3RyKTsKKyAgICBpZiAobmV3ZW52ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKF93cHV0ZW52KG5ld2VudikpIHsKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAjZWxzZQogICAgIFB5T2JqZWN0ICpvczEsICpvczI7CiAgICAgY2hhciAqczEsICpzMjsKICAgICBjaGFyICpuZXdlbnY7Ci0jZW5kaWYKLSAgICBQeU9iamVjdCAqbmV3c3RyID0gTlVMTDsKLSAgICBzaXplX3QgbGVuOwogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAidXU6cHV0ZW52IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnMxLCAmczIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSNlbHNlCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJPJk8mOnB1dGVudiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9zMSwKQEAgLTYwNjksNTggKzg1ODIsMTQgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgczEgPSBQeUJ5dGVzX0FzU3RyaW5nKG9zMSk7CiAgICAgczIgPSBQeUJ5dGVzX0FzU3RyaW5nKG9zMik7Ci0jZW5kaWYKIAotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgaWYgKHN0cmljbXAoczEsICJCRUdJTkxJQlBBVEgiKSA9PSAwKSB7Ci0gICAgICAgIEFQSVJFVCByYzsKLQotICAgICAgICByYyA9IERvc1NldEV4dExJQlBBVEgoczIsIEJFR0lOX0xJQlBBVEgpOwotICAgICAgICBpZiAocmMgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgIG9zMl9lcnJvcihyYyk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0KLSAgICB9IGVsc2UgaWYgKHN0cmljbXAoczEsICJFTkRMSUJQQVRIIikgPT0gMCkgewotICAgICAgICBBUElSRVQgcmM7Ci0KLSAgICAgICAgcmMgPSBEb3NTZXRFeHRMSUJQQVRIKHMyLCBFTkRfTElCUEFUSCk7Ci0gICAgICAgIGlmIChyYyAhPSBOT19FUlJPUikgewotICAgICAgICAgICAgb3MyX2Vycm9yKHJjKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotI2VuZGlmCi0gICAgLyogWFhYIFRoaXMgY2FuIGxlYWsgbWVtb3J5IC0tIG5vdCBlYXN5IHRvIGZpeCA6LSggKi8KLSAgICAvKiBsZW4gaW5jbHVkZXMgc3BhY2UgZm9yIGEgdHJhaWxpbmcgXDA7IHRoZSBzaXplIGFyZyB0bwotICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUgZG9lcyBub3QgY291bnQgdGhhdCAqLwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBsZW4gPSB3Y3NsZW4oczEpICsgd2NzbGVuKHMyKSArIDI7Ci0gICAgaWYgKF9NQVhfRU5WIDwgKGxlbiAtIDEpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBsb25nZXIgdGhhbiAldSBjaGFyYWN0ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgIF9NQVhfRU5WKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgbmV3c3RyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIChpbnQpbGVuIC0gMSk7Ci0jZWxzZQotICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob3MxKSArIFB5Qnl0ZXNfR0VUX1NJWkUob3MyKSArIDI7Ci0gICAgbmV3c3RyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAoaW50KWxlbiAtIDEpOwotI2VuZGlmCisgICAgbmV3c3RyID0gUHlCeXRlc19Gcm9tRm9ybWF0KCIlcz0lcyIsIHMxLCBzMik7CiAgICAgaWYgKG5ld3N0ciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBuZXdlbnYgPSBQeVVuaWNvZGVfQXNVbmljb2RlKG5ld3N0cik7Ci0gICAgX3Nud3ByaW50ZihuZXdlbnYsIGxlbiwgTCIlcz0lcyIsIHMxLCBzMik7Ci0gICAgaWYgKF93cHV0ZW52KG5ld2VudikpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0jZWxzZQorCiAgICAgbmV3ZW52ID0gUHlCeXRlc19BU19TVFJJTkcobmV3c3RyKTsKLSAgICBQeU9TX3NucHJpbnRmKG5ld2VudiwgbGVuLCAiJXM9JXMiLCBzMSwgczIpOwogICAgIGlmIChwdXRlbnYobmV3ZW52KSkgewogICAgICAgICBwb3NpeF9lcnJvcigpOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNjEzMSwxMyArODYwMCw3IEBACiAgICAgICogdGhpcyB3aWxsIGNhdXNlIHByZXZpb3VzIHZhbHVlIHRvIGJlIGNvbGxlY3RlZC4gIFRoaXMgaGFzIHRvCiAgICAgICogaGFwcGVuIGFmdGVyIHRoZSByZWFsIHB1dGVudigpIGNhbGwgYmVjYXVzZSB0aGUgb2xkIHZhbHVlCiAgICAgICogd2FzIHN0aWxsIGFjY2Vzc2libGUgdW50aWwgdGhlbi4gKi8KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsCi0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApLAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgb3MxLAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgIG5ld3N0cikpIHsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsIG9zMSwgbmV3c3RyKSkgewogICAgICAgICAvKiByZWFsbHkgbm90IG11Y2ggd2UgY2FuIGRvOyBqdXN0IGxlYWsgKi8KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9CkBAIC02MTQ1LDEwICs4NjA4LDYgQEAKICAgICAgICAgUHlfREVDUkVGKG5ld3N0cik7CiAgICAgfQogCi0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICB9Ci0jZW5kaWYKLQogI2lmbmRlZiBNU19XSU5ET1dTCiAgICAgUHlfREVDUkVGKG9zMSk7CiAgICAgUHlfREVDUkVGKG9zMik7CkBAIC02MTczLDIzICs4NjMyLDIyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfdW5zZXRlbnYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpvczE7Ci0gICAgY2hhciAqczE7CisgICAgUHlPYmplY3QgKm5hbWU7CiAjaWZuZGVmIEhBVkVfQlJPS0VOX1VOU0VURU5WCiAgICAgaW50IGVycjsKICNlbmRpZgogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjp1bnNldGVudiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9zMSkpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHMxID0gUHlCeXRlc19Bc1N0cmluZyhvczEpOwogCiAjaWZkZWYgSEFWRV9CUk9LRU5fVU5TRVRFTlYKLSAgICB1bnNldGVudihzMSk7CisgICAgdW5zZXRlbnYoUHlCeXRlc19BU19TVFJJTkcobmFtZSkpOwogI2Vsc2UKLSAgICBlcnIgPSB1bnNldGVudihzMSk7CisgICAgZXJyID0gdW5zZXRlbnYoUHlCeXRlc19BU19TVFJJTkcobmFtZSkpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgUHlfREVDUkVGKG9zMSk7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgfQogI2VuZGlmCkBAIC02MTk5LDEyICs4NjU3LDExIEBACiAgICAgICogaGFwcGVuIGFmdGVyIHRoZSByZWFsIHVuc2V0ZW52KCkgY2FsbCBiZWNhdXNlIHRoZQogICAgICAqIG9sZCB2YWx1ZSB3YXMgc3RpbGwgYWNjZXNzaWJsZSB1bnRpbCB0aGVuLgogICAgICAqLwotICAgIGlmIChQeURpY3RfRGVsSXRlbShwb3NpeF9wdXRlbnZfZ2FyYmFnZSwgb3MxKSkgeworICAgIGlmIChQeURpY3RfRGVsSXRlbShwb3NpeF9wdXRlbnZfZ2FyYmFnZSwgbmFtZSkpIHsKICAgICAgICAgLyogcmVhbGx5IG5vdCBtdWNoIHdlIGNhbiBkbzsganVzdCBsZWFrICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQotCi0gICAgUHlfREVDUkVGKG9zMSk7CisgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIHVuc2V0ZW52ICovCkBAIC02MjI2LDcgKzg2ODMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgInN0cmVycm9yKCkgYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcobWVzc2FnZSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUobWVzc2FnZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogfQogCiAKQEAgLTY0MzIsNyArODg4OSw4IEBACiAKIFB5RG9jX1NUUlZBUihwb3NpeF9mc3RhdHZmc19fZG9jX18sCiAiZnN0YXR2ZnMoZmQpIC0+IHN0YXR2ZnMgcmVzdWx0XG5cblwKLVBlcmZvcm0gYW4gZnN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIGZkLiIpOworUGVyZm9ybSBhbiBmc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gZmQuXG5cCitFcXVpdmFsZW50IHRvIHN0YXR2ZnMoZmQpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfZnN0YXR2ZnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtNjQ1NywyNyArODkxNSw4NyBAQAogI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+CiAKIFB5RG9jX1NUUlZBUihwb3NpeF9zdGF0dmZzX19kb2NfXywKLSJzdGF0dmZzKHBhdGgpIC0+IHN0YXR2ZnMgcmVzdWx0XG5cblwKLVBlcmZvcm0gYSBzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLiIpOworInN0YXR2ZnMocGF0aClcblxuXAorUGVyZm9ybSBhIHN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3N0YXR2ZnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfc3RhdHZmcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBpbnQgcmVzOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBzdHJ1Y3Qgc3RhdHZmcyBzdDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6c3RhdHZmcyIsICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IHN0YXR2ZnMocGF0aCwgJnN0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgIT0gMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfZmlsZW5hbWUocGF0aCk7CiAKLSAgICByZXR1cm4gX3B5c3RhdHZmc19mcm9tc3RydWN0c3RhdHZmcyhzdCk7CisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRlNUQVRWRlMKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOnN0YXR2ZnMiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRlNUQVRWRlMKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkgeworI2lmZGVmIF9fQVBQTEVfXworICAgICAgICAvKiBoYW5kbGUgd2Vhay1saW5raW5nIG9uIE1hYyBPUyBYIDEwLjMgKi8KKyAgICAgICAgaWYgKGZzdGF0dmZzID09IE5VTEwpIHsKKyAgICAgICAgICAgIGZkX3NwZWNpZmllZCgic3RhdHZmcyIsIHBhdGguZmQpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gZnN0YXR2ZnMocGF0aC5mZCwgJnN0KTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IHN0YXR2ZnMocGF0aC5uYXJyb3csICZzdCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9wb3NpeF9lcnJvcigic3RhdHZmcyIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IF9weXN0YXR2ZnNfZnJvbXN0cnVjdHN0YXR2ZnMoc3QpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KICNlbmRpZiAvKiBIQVZFX1NUQVRWRlMgKi8KIAorI2lmZGVmIE1TX1dJTkRPV1MKK1B5RG9jX1NUUlZBUih3aW4zMl9fZ2V0ZGlza3VzYWdlX19kb2NfXywKKyJfZ2V0ZGlza3VzYWdlKHBhdGgpIC0+ICh0b3RhbCwgZnJlZSlcblxuXAorUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aCBhcyAodG90YWwsIGZyZWUpIHR1cGxlLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luMzJfX2dldGRpc2t1c2FnZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQk9PTCByZXR2YWw7CisgICAgVUxBUkdFX0lOVEVHRVIgXywgdG90YWwsIGZyZWU7CisgICAgY29uc3Qgd2NoYXJfdCAqcGF0aDsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgInUiLCAmcGF0aCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldHZhbCA9IEdldERpc2tGcmVlU3BhY2VFeFcocGF0aCwgJl8sICZ0b3RhbCwgJmZyZWUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJldHZhbCA9PSAwKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKExMKSIsIHRvdGFsLlF1YWRQYXJ0LCBmcmVlLlF1YWRQYXJ0KTsKK30KKyNlbmRpZgorCisKIC8qIFRoaXMgaXMgdXNlZCBmb3IgZnBhdGhjb25mKCksIHBhdGhjb25mKCksIGNvbmZzdHIoKSBhbmQgc3lzY29uZigpLgogICogSXQgbWFwcyBzdHJpbmdzIHJlcHJlc2VudGluZyBjb25maWd1cmF0aW9uIHZhcmlhYmxlIG5hbWVzIHRvCiAgKiBpbnRlZ2VyIHZhbHVlcywgYWxsb3dpbmcgdGhvc2UgZnVuY3Rpb25zIHRvIGJlIGNhbGxlZCB3aXRoIHRoZQpAQCAtNjY2NCwzMSArOTE4Miw0NSBAQAogUHlEb2NfU1RSVkFSKHBvc2l4X3BhdGhjb25mX19kb2NfXywKICJwYXRoY29uZihwYXRoLCBuYW1lKSAtPiBpbnRlZ2VyXG5cblwKIFJldHVybiB0aGUgY29uZmlndXJhdGlvbiBsaW1pdCBuYW1lIGZvciB0aGUgZmlsZSBvciBkaXJlY3RvcnkgcGF0aC5cblwKLUlmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuIik7CitJZiB0aGVyZSBpcyBubyBsaW1pdCwgcmV0dXJuIC0xLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9wYXRoY29uZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9wYXRoY29uZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CisgICAgcGF0aF90IHBhdGg7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgaW50IG5hbWU7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lIiwgTlVMTH07CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mOnBhdGhjb25mIiwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GUEFUSENPTkYKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyNlbmRpZgorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjpwYXRoY29uZiIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICBsb25nIGxpbWl0OwogCiAgICAgZXJybm8gPSAwOwotICAgIGxpbWl0ID0gcGF0aGNvbmYocGF0aCwgbmFtZSk7CisjaWZkZWYgSEFWRV9GUEFUSENPTkYKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkKKyAgICAgICAgbGltaXQgPSBmcGF0aGNvbmYocGF0aC5mZCwgbmFtZSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGxpbWl0ID0gcGF0aGNvbmYocGF0aC5uYXJyb3csIG5hbWUpOwogICAgIGlmIChsaW1pdCA9PSAtMSAmJiBlcnJubyAhPSAwKSB7CiAgICAgICAgIGlmIChlcnJubyA9PSBFSU5WQUwpCiAgICAgICAgICAgICAvKiBjb3VsZCBiZSBhIHBhdGggb3IgbmFtZSBwcm9ibGVtICovCiAgICAgICAgICAgICBwb3NpeF9lcnJvcigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgpOworICAgICAgICAgICAgcmVzdWx0ID0gcGF0aF9wb3NpeF9lcnJvcigicGF0aGNvbmYiLCAmcGF0aCk7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Mb25nKGxpbWl0KTsKICAgICB9CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCkBAIC03NTQwLDkgKzEwMDcyLDEwIEBACiAgICAgUHlPYmplY3QgKm9maWxlcGF0aDsKICAgICBjaGFyICpmaWxlcGF0aDsKICAgICBjaGFyICpvcGVyYXRpb24gPSBOVUxMOworICAgIHdjaGFyX3QgKndwYXRoLCAqd29wZXJhdGlvbjsKICAgICBISU5TVEFOQ0UgcmM7CiAKLSAgICBQeU9iamVjdCAqdW5pcGF0aCwgKndvcGVyYXRpb24gPSBOVUxMOworICAgIFB5T2JqZWN0ICp1bmlwYXRoLCAqdW9wZXJhdGlvbiA9IE5VTEw7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHM6c3RhcnRmaWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVuaXBhdGgsICZvcGVyYXRpb24pKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC03NTUwLDI2ICsxMDA4MywzNSBAQAogICAgIH0KIAogICAgIGlmIChvcGVyYXRpb24pIHsKLSAgICAgICAgd29wZXJhdGlvbiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShvcGVyYXRpb24sCisgICAgICAgIHVvcGVyYXRpb24gPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkob3BlcmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihvcGVyYXRpb24pLCBOVUxMKTsKLSAgICAgICAgaWYgKCF3b3BlcmF0aW9uKSB7CisgICAgICAgIGlmICghdW9wZXJhdGlvbikgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIG9wZXJhdGlvbiA9IE5VTEw7CiAgICAgICAgICAgICBnb3RvIG5vcm1hbDsKICAgICAgICAgfQogICAgIH0KIAorICAgIHdwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmlwYXRoKTsKKyAgICBpZiAod3BhdGggPT0gTlVMTCkKKyAgICAgICAgZ290byBub3JtYWw7CisgICAgaWYgKHVvcGVyYXRpb24pIHsKKyAgICAgICAgd29wZXJhdGlvbiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW9wZXJhdGlvbik7CisgICAgICAgIGlmICh3b3BlcmF0aW9uID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIG5vcm1hbDsKKyAgICB9CisgICAgZWxzZQorICAgICAgICB3b3BlcmF0aW9uID0gTlVMTDsKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFNoZWxsRXhlY3V0ZVcoKEhXTkQpMCwgd29wZXJhdGlvbiA/IFB5VW5pY29kZV9BU19VTklDT0RFKHdvcGVyYXRpb24pIDogMCwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodW5pcGF0aCksCi0gICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOworICAgIHJjID0gU2hlbGxFeGVjdXRlVygoSFdORCkwLCB3b3BlcmF0aW9uLCB3cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgU1dfU0hPV05PUk1BTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIFB5X1hERUNSRUYod29wZXJhdGlvbik7CisgICAgUHlfWERFQ1JFRih1b3BlcmF0aW9uKTsKICAgICBpZiAocmMgPD0gKEhJTlNUQU5DRSkzMikgewotICAgICAgICBQeU9iamVjdCAqZXJydmFsID0gd2luMzJfZXJyb3JfdW5pY29kZSgic3RhcnRmaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodW5pcGF0aCkpOwotICAgICAgICByZXR1cm4gZXJydmFsOworICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIHVuaXBhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtNzU3OSw2ICsxMDEyMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvZmlsZXBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcGVyYXRpb24pKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkgeworICAgICAgICBQeV9ERUNSRUYob2ZpbGVwYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGZpbGVwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvZmlsZXBhdGgpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByYyA9IFNoZWxsRXhlY3V0ZSgoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLApAQCAtNzYyMyw2MiArMTAxNjksMTEgQEAKIGRldmljZV9lbmNvZGluZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IGZkOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmRldmljZV9lbmNvZGluZyIsICZmZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSB8fCAhaXNhdHR5KGZkKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoTVNfV0lONjQpCi0gICAgaWYgKGZkID09IDApIHsKLSAgICAgICAgY2hhciBidWZbMTAwXTsKLSAgICAgICAgc3ByaW50ZihidWYsICJjcCVkIiwgR2V0Q29uc29sZUNQKCkpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKLSAgICB9Ci0gICAgaWYgKGZkID09IDEgfHwgZmQgPT0gMikgewotICAgICAgICBjaGFyIGJ1ZlsxMDBdOwotICAgICAgICBzcHJpbnRmKGJ1ZiwgImNwJWQiLCBHZXRDb25zb2xlT3V0cHV0Q1AoKSk7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOwotICAgIH0KLSNlbGlmIGRlZmluZWQoQ09ERVNFVCkKLSAgICB7Ci0gICAgICAgIGNoYXIgKmNvZGVzZXQgPSBubF9sYW5naW5mbyhDT0RFU0VUKTsKLSAgICAgICAgaWYgKGNvZGVzZXQgIT0gTlVMTCAmJiBjb2Rlc2V0WzBdICE9IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoY29kZXNldCk7Ci0gICAgfQotI2VuZGlmCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQogCi1QeURvY19TVFJWQVIocG9zaXhfdXJhbmRvbV9fZG9jX18sCi0idXJhbmRvbShuKSAtPiBzdHJcblxuXAotUmV0dXJuIG4gcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3VyYW5kb20oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X3NzaXplX3Qgc2l6ZTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGludCByZXQ7Ci0KLSAgICAgLyogUmVhZCBhcmd1bWVudHMgKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46dXJhbmRvbSIsICZzaXplKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNpemUgPCAwKQotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGFyZ3VtZW50IG5vdCBhbGxvd2VkIik7Ci0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0ID0gX1B5T1NfVVJhbmRvbShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKTsKLSAgICBpZiAocmV0ID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gX1B5X2RldmljZV9lbmNvZGluZyhmZCk7CiB9CiAKICNpZmRlZiBIQVZFX1NFVFJFU1VJRApAQCAtNzc1NywyMSArMTAyNTIsNDY4IEBACiB9CiAjZW5kaWYKIAorI2lmZGVmIFVTRV9YQVRUUlMKKworUHlEb2NfU1RSVkFSKHBvc2l4X2dldHhhdHRyX19kb2NfXywKKyJnZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKSAtPiB2YWx1ZVxuXG5cCitSZXR1cm4gdGhlIHZhbHVlIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC5cblwKK1xuXAorcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIGdldHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAorICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9nZXR4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcGF0aF90IHBhdGg7CisgICAgcGF0aF90IGF0dHJpYnV0ZTsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeU9iamVjdCAqYnVmZmVyID0gTlVMTDsKKyAgICBpbnQgaTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgbWVtc2V0KCZhdHRyaWJ1dGUsIDAsIHNpemVvZihhdHRyaWJ1dGUpKTsKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOmdldHhhdHRyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsCisgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImdldHhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisgICAgZm9yIChpID0gMDsgOyBpKyspIHsKKyAgICAgICAgdm9pZCAqcHRyOworICAgICAgICBzc2l6ZV90IHJlc3VsdDsKKyAgICAgICAgc3RhdGljIFB5X3NzaXplX3QgYnVmZmVyX3NpemVzW10gPSB7MTI4LCBYQVRUUl9TSVpFX01BWCwgMH07CisgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CisgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKKyAgICAgICAgICAgIHBhdGhfZXJyb3IoImdldHhhdHRyIiwgJnBhdGgpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnVmZmVyX3NpemUpOworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcHRyID0gUHlCeXRlc19BU19TVFJJTkcoYnVmZmVyKTsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgICAgICBpZiAocGF0aC5mZCA+PSAwKQorICAgICAgICAgICAgcmVzdWx0ID0gZmdldHhhdHRyKHBhdGguZmQsIGF0dHJpYnV0ZS5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOworICAgICAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICByZXN1bHQgPSBnZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IGxnZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTOworCisgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgICAgIGJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRVJBTkdFKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcGF0aF9lcnJvcigiZ2V0eGF0dHIiLCAmcGF0aCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVzdWx0ICE9IGJ1ZmZlcl9zaXplKSB7CisgICAgICAgICAgICAvKiBDYW4gb25seSBzaHJpbmsuICovCisgICAgICAgICAgICBfUHlCeXRlc19SZXNpemUoJmJ1ZmZlciwgcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3NldHhhdHRyX19kb2NfXywKKyJzZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorU2V0IGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aCB0byB2YWx1ZS5cblwKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBzZXR4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAorICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zZXR4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcGF0aF90IHBhdGg7CisgICAgcGF0aF90IGF0dHJpYnV0ZTsKKyAgICBQeV9idWZmZXIgdmFsdWU7CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJ2YWx1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7CisgICAgbWVtc2V0KCZ2YWx1ZSwgMCwgc2l6ZW9mKHZhbHVlKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnkqfGkkcDpzZXR4YXR0ciIsCisgICAgICAgIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAorICAgICAgICAmdmFsdWUsICZmbGFncywKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgic2V0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIGlmIChwYXRoLmZkID4gLTEpCisgICAgICAgIHJlc3VsdCA9IGZzZXR4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IHNldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGxzZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmJ1ZiwgdmFsdWUubGVuLCBmbGFncyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoInNldHhhdHRyIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYocmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YWx1ZSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocG9zaXhfcmVtb3ZleGF0dHJfX2RvY19fLAorInJlbW92ZXhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK1JlbW92ZSBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguXG5cCitwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgcmVtb3ZleGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcmVtb3ZleGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIHBhdGhfdCBhdHRyaWJ1dGU7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgbWVtc2V0KCZhdHRyaWJ1dGUsIDAsIHNpemVvZihhdHRyaWJ1dGUpKTsKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOnJlbW92ZXhhdHRyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgicmVtb3ZleGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIGlmIChwYXRoLmZkID4gLTEpCisgICAgICAgIHJlc3VsdCA9IGZyZW1vdmV4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IHJlbW92ZXhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGxyZW1vdmV4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoInJlbW92ZXhhdHRyIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYocmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9saXN0eGF0dHJfX2RvY19fLAorImxpc3R4YXR0cihwYXRoPScuJywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK1JldHVybiBhIGxpc3Qgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBvbiBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBiZSBlaXRoZXIgTm9uZSwgYSBzdHJpbmcsIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAoraWYgcGF0aCBpcyBOb25lLCBsaXN0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBjdXJyZW50IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBsaXN0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG5cCisgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X2xpc3R4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIGNoYXIgKmJ1ZmZlciA9IE5VTEw7CisgICAgY2hhciAqbmFtZTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyAgICBwYXRoLmZkID0gLTE7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mJHA6bGlzdHhhdHRyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgibGlzdHhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisgICAgbmFtZSA9IHBhdGgubmFycm93ID8gcGF0aC5uYXJyb3cgOiAiLiI7CisgICAgZm9yIChpID0gMDsgOyBpKyspIHsKKyAgICAgICAgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKKyAgICAgICAgc3NpemVfdCBsZW5ndGg7CisgICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CisgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CisgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKKyAgICAgICAgICAgIC8vIEVSQU5HRQorICAgICAgICAgICAgcGF0aF9lcnJvcigibGlzdHhhdHRyIiwgJnBhdGgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyID0gUHlNZW1fTUFMTE9DKGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgICAgIGlmIChwYXRoLmZkID4gLTEpCisgICAgICAgICAgICBsZW5ndGggPSBmbGlzdHhhdHRyKHBhdGguZmQsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOworICAgICAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICBsZW5ndGggPSBsaXN0eGF0dHIobmFtZSwgYnVmZmVyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxlbmd0aCA9IGxsaXN0eGF0dHIobmFtZSwgYnVmZmVyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTOworCisgICAgICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRVJBTkdFKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcGF0aF9lcnJvcigibGlzdHhhdHRyIiwgJnBhdGgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSBQeUxpc3RfTmV3KDApOworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgZW5kID0gYnVmZmVyICsgbGVuZ3RoOworICAgICAgICBmb3IgKHRyYWNlID0gc3RhcnQgPSBidWZmZXI7IHRyYWNlICE9IGVuZDsgdHJhY2UrKykgeworICAgICAgICAgICAgaWYgKCEqdHJhY2UpIHsKKyAgICAgICAgICAgICAgICBpbnQgZXJyb3I7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmF0dHJpYnV0ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZSAtIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlcnJvciA9IFB5TGlzdF9BcHBlbmQocmVzdWx0LCBhdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGFydCA9IHRyYWNlICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIGJyZWFrOworICAgIH0KK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICBpZiAoYnVmZmVyKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmIC8qIFVTRV9YQVRUUlMgKi8KKworCitQeURvY19TVFJWQVIocG9zaXhfdXJhbmRvbV9fZG9jX18sCisidXJhbmRvbShuKSAtPiBzdHJcblxuXAorUmV0dXJuIG4gcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3VyYW5kb20oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGludCByZXQ7CisKKyAgICAgLyogUmVhZCBhcmd1bWVudHMgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46dXJhbmRvbSIsICZzaXplKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGFyZ3VtZW50IG5vdCBhbGxvd2VkIik7CisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0ID0gX1B5T1NfVVJhbmRvbShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogVGVybWluYWwgc2l6ZSBxdWVyeWluZyAqLworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFRlcm1pbmFsU2l6ZVR5cGU7CisKK1B5RG9jX1NUUlZBUihUZXJtaW5hbFNpemVfZG9jc3RyaW5nLAorICAgICJBIHR1cGxlIG9mIChjb2x1bW5zLCBsaW5lcykgZm9yIGhvbGRpbmcgdGVybWluYWwgd2luZG93IHNpemUiKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgVGVybWluYWxTaXplX2ZpZWxkc1tdID0geworICAgIHsiY29sdW1ucyIsICJ3aWR0aCBvZiB0aGUgdGVybWluYWwgd2luZG93IGluIGNoYXJhY3RlcnMifSwKKyAgICB7ImxpbmVzIiwgImhlaWdodCBvZiB0aGUgdGVybWluYWwgd2luZG93IGluIGNoYXJhY3RlcnMifSwKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgVGVybWluYWxTaXplX2Rlc2MgPSB7CisgICAgIm9zLnRlcm1pbmFsX3NpemUiLAorICAgIFRlcm1pbmFsU2l6ZV9kb2NzdHJpbmcsCisgICAgVGVybWluYWxTaXplX2ZpZWxkcywKKyAgICAyLAorfTsKKworI2lmIGRlZmluZWQoVEVSTVNJWkVfVVNFX0NPTklPKSB8fCBkZWZpbmVkKFRFUk1TSVpFX1VTRV9JT0NUTCkKK1B5RG9jX1NUUlZBUih0ZXJtc2l6ZV9fZG9jX18sCisgICAgIlJldHVybiB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93IGFzIChjb2x1bW5zLCBsaW5lcykuXG4iICAgICAgICBcCisgICAgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIlRoZSBvcHRpb25hbCBhcmd1bWVudCBmZCAoZGVmYXVsdCBzdGFuZGFyZCBvdXRwdXQpIHNwZWNpZmllc1xuIiAgICAgICBcCisgICAgIndoaWNoIGZpbGUgZGVzY3JpcHRvciBzaG91bGQgYmUgcXVlcmllZC5cbiIgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIklmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgbm90IGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLCBhbiBPU0Vycm9yXG4iICBcCisgICAgImlzIHRocm93bi5cbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIlRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IGJlIGRlZmluZWQgaWYgYW4gaW1wbGVtZW50YXRpb24gaXNcbiIgICAgICAgICBcCisgICAgImF2YWlsYWJsZSBmb3IgdGhpcyBzeXN0ZW0uXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgInNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSBpcyB0aGUgaGlnaC1sZXZlbCBmdW5jdGlvbiB3aGljaCBzaG91bGQgXG4iICBcCisgICAgIm5vcm1hbGx5IGJlIHVzZWQsIG9zLmdldF90ZXJtaW5hbF9zaXplIGlzIHRoZSBsb3ctbGV2ZWwgaW1wbGVtZW50YXRpb24uIik7CisKK3N0YXRpYyBQeU9iamVjdCoKK2dldF90ZXJtaW5hbF9zaXplKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgY29sdW1ucywgbGluZXM7CisgICAgUHlPYmplY3QgKnRlcm1zaXplOworCisgICAgaW50IGZkID0gZmlsZW5vKHN0ZG91dCk7CisgICAgLyogVW5kZXIgc29tZSBjb25kaXRpb25zIHN0ZG91dCBtYXkgbm90IGJlIGNvbm5lY3RlZCBhbmQKKyAgICAgKiBmaWxlbm8oc3Rkb3V0KSBtYXkgcG9pbnQgdG8gYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuIEZvciBleGFtcGxlCisgICAgICogR1VJIGFwcHMgZG9uJ3QgaGF2ZSB2YWxpZCBzdGFuZGFyZCBzdHJlYW1zIGJ5IGRlZmF1bHQuCisgICAgICoKKyAgICAgKiBJZiB0aGlzIGhhcHBlbnMsIGFuZCB0aGUgb3B0aW9uYWwgZmQgYXJndW1lbnQgaXMgbm90IHByZXNlbnQsCisgICAgICogdGhlIGlvY3RsIGJlbG93IHdpbGwgZmFpbCByZXR1cm5pbmcgRUJBREYuIFRoaXMgaXMgd2hhdCB3ZSB3YW50LgorICAgICAqLworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aSIsICZmZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgVEVSTVNJWkVfVVNFX0lPQ1RMCisgICAgeworICAgICAgICBzdHJ1Y3Qgd2luc2l6ZSB3OworICAgICAgICBpZiAoaW9jdGwoZmQsIFRJT0NHV0lOU1osICZ3KSkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGNvbHVtbnMgPSB3LndzX2NvbDsKKyAgICAgICAgbGluZXMgPSB3LndzX3JvdzsKKyAgICB9CisjZW5kaWYgLyogVEVSTVNJWkVfVVNFX0lPQ1RMICovCisKKyNpZmRlZiBURVJNU0laRV9VU0VfQ09OSU8KKyAgICB7CisgICAgICAgIERXT1JEIG5oYW5kbGU7CisgICAgICAgIEhBTkRMRSBoYW5kbGU7CisgICAgICAgIENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIGNzYmk7CisgICAgICAgIHN3aXRjaCAoZmQpIHsKKyAgICAgICAgY2FzZSAwOiBuaGFuZGxlID0gU1REX0lOUFVUX0hBTkRMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6IG5oYW5kbGUgPSBTVERfT1VUUFVUX0hBTkRMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6IG5oYW5kbGUgPSBTVERfRVJST1JfSEFORExFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJiYWQgZmlsZSBkZXNjcmlwdG9yIik7CisgICAgICAgIH0KKyAgICAgICAgaGFuZGxlID0gR2V0U3RkSGFuZGxlKG5oYW5kbGUpOworICAgICAgICBpZiAoaGFuZGxlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX09TRXJyb3IsICJoYW5kbGUgY2Fubm90IGJlIHJldHJpZXZlZCIpOworICAgICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgICAgIGlmICghR2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm8oaGFuZGxlLCAmY3NiaSkpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICAgICAgY29sdW1ucyA9IGNzYmkuc3JXaW5kb3cuUmlnaHQgLSBjc2JpLnNyV2luZG93LkxlZnQgKyAxOworICAgICAgICBsaW5lcyA9IGNzYmkuc3JXaW5kb3cuQm90dG9tIC0gY3NiaS5zcldpbmRvdy5Ub3AgKyAxOworICAgIH0KKyNlbmRpZiAvKiBURVJNU0laRV9VU0VfQ09OSU8gKi8KKworICAgIHRlcm1zaXplID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlRlcm1pbmFsU2l6ZVR5cGUpOworICAgIGlmICh0ZXJtc2l6ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHRlcm1zaXplLCAwLCBQeUxvbmdfRnJvbUxvbmcoY29sdW1ucykpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odGVybXNpemUsIDEsIFB5TG9uZ19Gcm9tTG9uZyhsaW5lcykpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRih0ZXJtc2l6ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gdGVybXNpemU7Cit9CisjZW5kaWYgLyogZGVmaW5lZChURVJNU0laRV9VU0VfQ09OSU8pIHx8IGRlZmluZWQoVEVSTVNJWkVfVVNFX0lPQ1RMKSAqLworCisKIHN0YXRpYyBQeU1ldGhvZERlZiBwb3NpeF9tZXRob2RzW10gPSB7Ci0gICAgeyJhY2Nlc3MiLCAgICAgICAgICBwb3NpeF9hY2Nlc3MsIE1FVEhfVkFSQVJHUywgcG9zaXhfYWNjZXNzX19kb2NfX30sCisgICAgeyJhY2Nlc3MiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2FjY2Vzc19fZG9jX199LAogI2lmZGVmIEhBVkVfVFRZTkFNRQogICAgIHsidHR5bmFtZSIsICAgICAgICAgcG9zaXhfdHR5bmFtZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF90dHluYW1lX19kb2NfX30sCiAjZW5kaWYKLSAgICB7ImNoZGlyIiwgICAgICAgICAgIHBvc2l4X2NoZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2NoZGlyX19kb2NfX30sCisgICAgeyJjaGRpciIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2hkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hkaXJfX2RvY19ffSwKICNpZmRlZiBIQVZFX0NIRkxBR1MKLSAgICB7ImNoZmxhZ3MiLCAgICAgICAgIHBvc2l4X2NoZmxhZ3MsIE1FVEhfVkFSQVJHUywgcG9zaXhfY2hmbGFnc19fZG9jX199LAorICAgIHsiY2hmbGFncyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2NoZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hmbGFnc19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfQ0hGTEFHUyAqLwotICAgIHsiY2htb2QiLCAgICAgICAgICAgcG9zaXhfY2htb2QsIE1FVEhfVkFSQVJHUywgcG9zaXhfY2htb2RfX2RvY19ffSwKKyAgICB7ImNobW9kIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaG1vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaG1vZF9fZG9jX199LAogI2lmZGVmIEhBVkVfRkNITU9ECiAgICAgeyJmY2htb2QiLCAgICAgICAgICBwb3NpeF9mY2htb2QsIE1FVEhfVkFSQVJHUywgcG9zaXhfZmNobW9kX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9GQ0hNT0QgKi8KICNpZmRlZiBIQVZFX0NIT1dOCi0gICAgeyJjaG93biIsICAgICAgICAgICBwb3NpeF9jaG93biwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jaG93bl9fZG9jX199LAorICAgIHsiY2hvd24iLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2Nob3duLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2Nob3duX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9DSE9XTiAqLwogI2lmZGVmIEhBVkVfTENITU9ECiAgICAgeyJsY2htb2QiLCAgICAgICAgICBwb3NpeF9sY2htb2QsIE1FVEhfVkFSQVJHUywgcG9zaXhfbGNobW9kX19kb2NfX30sCkBAIC03Nzk3LDMyICsxMDczOSw1NyBAQAogICAgIHsiZ2V0Y3dkYiIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2dldGN3ZF9ieXRlcywKICAgICBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Y3dkYl9fZG9jX199LAogI2VuZGlmCi0jaWZkZWYgSEFWRV9MSU5LCi0gICAgeyJsaW5rIiwgICAgICAgICAgICBwb3NpeF9saW5rLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xpbmtfX2RvY19ffSwKKyNpZiBkZWZpbmVkKEhBVkVfTElOSykgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorICAgIHsibGluayIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbGlua19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfTElOSyAqLwotICAgIHsibGlzdGRpciIsICAgICAgICAgcG9zaXhfbGlzdGRpciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9saXN0ZGlyX19kb2NfX30sCi0gICAgeyJsc3RhdCIsICAgICAgICAgICBwb3NpeF9sc3RhdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9sc3RhdF9fZG9jX199LAotICAgIHsibWtkaXIiLCAgICAgICAgICAgcG9zaXhfbWtkaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfbWtkaXJfX2RvY19ffSwKKyAgICB7Imxpc3RkaXIiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9saXN0ZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2xpc3RkaXJfX2RvY19ffSwKKyAgICB7ImxzdGF0IiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9sc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9sc3RhdF9fZG9jX199LAorICAgIHsibWtkaXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X21rZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X21rZGlyX19kb2NfX30sCiAjaWZkZWYgSEFWRV9OSUNFCiAgICAgeyJuaWNlIiwgICAgICAgICAgICBwb3NpeF9uaWNlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X25pY2VfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX05JQ0UgKi8KKyNpZmRlZiBIQVZFX0dFVFBSSU9SSVRZCisgICAgeyJnZXRwcmlvcml0eSIsICAgICBwb3NpeF9nZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9nZXRwcmlvcml0eV9fZG9jX199LAorI2VuZGlmIC8qIEhBVkVfR0VUUFJJT1JJVFkgKi8KKyNpZmRlZiBIQVZFX1NFVFBSSU9SSVRZCisgICAgeyJzZXRwcmlvcml0eSIsICAgICBwb3NpeF9zZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zZXRwcmlvcml0eV9fZG9jX199LAorI2VuZGlmIC8qIEhBVkVfU0VUUFJJT1JJVFkgKi8KICNpZmRlZiBIQVZFX1JFQURMSU5LCi0gICAgeyJyZWFkbGluayIsICAgICAgICBwb3NpeF9yZWFkbGluaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZWFkbGlua19fZG9jX199LAorICAgIHsicmVhZGxpbmsiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlYWRsaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRsaW5rX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9SRUFETElOSyAqLwogI2lmICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICB7InJlYWRsaW5rIiwgICAgICAgIHdpbl9yZWFkbGluaywgTUVUSF9WQVJBUkdTLCB3aW5fcmVhZGxpbmtfX2RvY19ffSwKKyAgICB7InJlYWRsaW5rIiwgICAgICAgIChQeUNGdW5jdGlvbil3aW5fcmVhZGxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmtfX2RvY19ffSwKICNlbmRpZiAvKiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCi0gICAgeyJyZW5hbWUiLCAgICAgICAgICBwb3NpeF9yZW5hbWUsIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVuYW1lX19kb2NfX30sCi0gICAgeyJybWRpciIsICAgICAgICAgICBwb3NpeF9ybWRpciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9ybWRpcl9fZG9jX199LAotICAgIHsic3RhdCIsICAgICAgICAgICAgcG9zaXhfc3RhdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zdGF0X19kb2NfX30sCisgICAgeyJyZW5hbWUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcmVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlbmFtZV9fZG9jX199LAorICAgIHsicmVwbGFjZSIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlcGxhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcmVwbGFjZV9fZG9jX199LAorICAgIHsicm1kaXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JtZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JtZGlyX19kb2NfX30sCisgICAgeyJzdGF0IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zdGF0X19kb2NfX30sCiAgICAgeyJzdGF0X2Zsb2F0X3RpbWVzIiwgc3RhdF9mbG9hdF90aW1lcywgTUVUSF9WQVJBUkdTLCBzdGF0X2Zsb2F0X3RpbWVzX19kb2NfX30sCi0jaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgeyJzeW1saW5rIiwgICAgICAgICBwb3NpeF9zeW1saW5rLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3N5bWxpbmtfX2RvY19ffSwKKyNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykKKyAgICB7InN5bWxpbmsiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zeW1saW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3N5bWxpbmtfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1NZTUxJTksgKi8KLSNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIHsic3ltbGluayIsIChQeUNGdW5jdGlvbil3aW5fc3ltbGluaywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgd2luX3N5bWxpbmtfX2RvY19ffSwKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKSAqLwogI2lmZGVmIEhBVkVfU1lTVEVNCiAgICAgeyJzeXN0ZW0iLCAgICAgICAgICBwb3NpeF9zeXN0ZW0sIE1FVEhfVkFSQVJHUywgcG9zaXhfc3lzdGVtX19kb2NfX30sCiAjZW5kaWYKQEAgLTc4MzAsMTYgKzEwNzk3LDIzIEBACiAjaWZkZWYgSEFWRV9VTkFNRQogICAgIHsidW5hbWUiLCAgICAgICAgICAgcG9zaXhfdW5hbWUsIE1FVEhfTk9BUkdTLCBwb3NpeF91bmFtZV9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfVU5BTUUgKi8KLSAgICB7InVubGluayIsICAgICAgICAgIHBvc2l4X3VubGluaywgTUVUSF9WQVJBUkdTLCBwb3NpeF91bmxpbmtfX2RvY19ffSwKLSAgICB7InJlbW92ZSIsICAgICAgICAgIHBvc2l4X3VubGluaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZW1vdmVfX2RvY19ffSwKLSAgICB7InV0aW1lIiwgICAgICAgICAgIHBvc2l4X3V0aW1lLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3V0aW1lX19kb2NfX30sCisgICAgeyJ1bmxpbmsiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdW5saW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3VubGlua19fZG9jX199LAorICAgIHsicmVtb3ZlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3VubGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9yZW1vdmVfX2RvY19ffSwKKyAgICB7InV0aW1lIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF91dGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHBvc2l4X3V0aW1lX19kb2NfX30sCiAjaWZkZWYgSEFWRV9USU1FUwogICAgIHsidGltZXMiLCAgICAgICAgICAgcG9zaXhfdGltZXMsIE1FVEhfTk9BUkdTLCBwb3NpeF90aW1lc19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfVElNRVMgKi8KICAgICB7Il9leGl0IiwgICAgICAgICAgIHBvc2l4X19leGl0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X19leGl0X19kb2NfX30sCiAjaWZkZWYgSEFWRV9FWEVDVgogICAgIHsiZXhlY3YiLCAgICAgICAgICAgcG9zaXhfZXhlY3YsIE1FVEhfVkFSQVJHUywgcG9zaXhfZXhlY3ZfX2RvY19ffSwKLSAgICB7ImV4ZWN2ZSIsICAgICAgICAgIHBvc2l4X2V4ZWN2ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9leGVjdmVfX2RvY19ffSwKKyAgICB7ImV4ZWN2ZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9leGVjdmUsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfZXhlY3ZlX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9FWEVDViAqLwogI2lmZGVmIEhBVkVfU1BBV05WCiAgICAgeyJzcGF3bnYiLCAgICAgICAgICBwb3NpeF9zcGF3bnYsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3Bhd252X19kb2NfX30sCkBAIC03ODU1LDYgKzEwODI5LDMyIEBACiAjaWZkZWYgSEFWRV9GT1JLCiAgICAgeyJmb3JrIiwgICAgICAgICAgICBwb3NpeF9mb3JrLCBNRVRIX05PQVJHUywgcG9zaXhfZm9ya19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfRk9SSyAqLworI2lmZGVmIEhBVkVfU0NIRURfSAorI2lmZGVmIEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9tYXgsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX199LAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW4sIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorICAgIHsic2NoZWRfZ2V0cGFyYW0iLCBwb3NpeF9zY2hlZF9nZXRwYXJhbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRwYXJhbV9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKKyAgICB7InNjaGVkX2dldHNjaGVkdWxlciIsIHBvc2l4X3NjaGVkX2dldHNjaGVkdWxlciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXJfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCisgICAgeyJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCBwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFBBUkFNCisgICAgeyJzY2hlZF9zZXRwYXJhbSIsIHBvc2l4X3NjaGVkX3NldHBhcmFtLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3NldHBhcmFtX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgorICAgIHsic2NoZWRfc2V0c2NoZWR1bGVyIiwgcG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3NldHNjaGVkdWxlcl9fZG9jX199LAorI2VuZGlmCisgICAgeyJzY2hlZF95aWVsZCIsICAgICBwb3NpeF9zY2hlZF95aWVsZCwgTUVUSF9OT0FSR1MsIHBvc2l4X3NjaGVkX3lpZWxkX19kb2NfX30sCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQorICAgIHsic2NoZWRfc2V0YWZmaW5pdHkiLCBwb3NpeF9zY2hlZF9zZXRhZmZpbml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRhZmZpbml0eV9fZG9jX199LAorICAgIHsic2NoZWRfZ2V0YWZmaW5pdHkiLCBwb3NpeF9zY2hlZF9nZXRhZmZpbml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRhZmZpbml0eV9fZG9jX199LAorI2VuZGlmCisjZW5kaWYgLyogSEFWRV9TQ0hFRF9IICovCiAjaWYgZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVgpCiAgICAgeyJvcGVucHR5IiwgICAgICAgICBwb3NpeF9vcGVucHR5LCBNRVRIX05PQVJHUywgcG9zaXhfb3BlbnB0eV9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfT1BFTlBUWSB8fCBIQVZFX19HRVRQVFkgfHwgSEFWRV9ERVZfUFRNWCAqLwpAQCAtNzg3MCw2ICsxMDg3MCw5IEBACiAjaWZkZWYgSEFWRV9HRVRHSUQKICAgICB7ImdldGdpZCIsICAgICAgICAgIHBvc2l4X2dldGdpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGdpZF9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfR0VUR0lEICovCisjaWZkZWYgSEFWRV9HRVRHUk9VUExJU1QKKyAgICB7ImdldGdyb3VwbGlzdCIsICAgIHBvc2l4X2dldGdyb3VwbGlzdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9nZXRncm91cGxpc3RfX2RvY19ffSwKKyNlbmRpZgogI2lmZGVmIEhBVkVfR0VUR1JPVVBTCiAgICAgeyJnZXRncm91cHMiLCAgICAgICBwb3NpeF9nZXRncm91cHMsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRncm91cHNfX2RvY19ffSwKICNlbmRpZgpAQCAtNzg5OCw3ICsxMDkwMSw2IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHsic3RhcnRmaWxlIiwgICAgICAgd2luMzJfc3RhcnRmaWxlLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX3N0YXJ0ZmlsZV9fZG9jX199LAogICAgIHsia2lsbCIsICAgIHdpbjMyX2tpbGwsIE1FVEhfVkFSQVJHUywgd2luMzJfa2lsbF9fZG9jX199LAotICAgIHsibGluayIsICAgIHdpbjMyX2xpbmssIE1FVEhfVkFSQVJHUywgd2luMzJfbGlua19fZG9jX199LAogI2VuZGlmCiAjaWZkZWYgSEFWRV9TRVRVSUQKICAgICB7InNldHVpZCIsICAgICAgICAgIHBvc2l4X3NldHVpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zZXR1aWRfX2RvY19ffSwKQEAgLTc5MzksNiArMTA5NDEsOSBAQAogI2lmZGVmIEhBVkVfV0FJVDQKICAgICB7IndhaXQ0IiwgICAgICAgICAgIHBvc2l4X3dhaXQ0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXQ0X19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9XQUlUNCAqLworI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKKyAgICB7IndhaXRpZCIsICAgICAgICAgIHBvc2l4X3dhaXRpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF93YWl0aWRfX2RvY19ffSwKKyNlbmRpZgogI2lmIGRlZmluZWQoSEFWRV9XQUlUUElEKSB8fCBkZWZpbmVkKEhBVkVfQ1dBSVQpCiAgICAgeyJ3YWl0cGlkIiwgICAgICAgICBwb3NpeF93YWl0cGlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXRwaWRfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1dBSVRQSUQgKi8KQEAgLTc5NTcsMjUgKzEwOTYyLDUzIEBACiAjaWZkZWYgSEFWRV9UQ1NFVFBHUlAKICAgICB7InRjc2V0cGdycCIsICAgICAgIHBvc2l4X3Rjc2V0cGdycCwgTUVUSF9WQVJBUkdTLCBwb3NpeF90Y3NldHBncnBfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1RDU0VUUEdSUCAqLwotICAgIHsib3BlbiIsICAgICAgICAgICAgcG9zaXhfb3BlbiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9vcGVuX19kb2NfX30sCisgICAgeyJvcGVuIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfb3BlbixcCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfb3Blbl9fZG9jX199LAogICAgIHsiY2xvc2UiLCAgICAgICAgICAgcG9zaXhfY2xvc2UsIE1FVEhfVkFSQVJHUywgcG9zaXhfY2xvc2VfX2RvY19ffSwKICAgICB7ImNsb3NlcmFuZ2UiLCAgICAgIHBvc2l4X2Nsb3NlcmFuZ2UsIE1FVEhfVkFSQVJHUywgcG9zaXhfY2xvc2VyYW5nZV9fZG9jX199LAogICAgIHsiZGV2aWNlX2VuY29kaW5nIiwgZGV2aWNlX2VuY29kaW5nLCBNRVRIX1ZBUkFSR1MsIGRldmljZV9lbmNvZGluZ19fZG9jX199LAogICAgIHsiZHVwIiwgICAgICAgICAgICAgcG9zaXhfZHVwLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2R1cF9fZG9jX199LAogICAgIHsiZHVwMiIsICAgICAgICAgICAgcG9zaXhfZHVwMiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9kdXAyX19kb2NfX30sCisjaWZkZWYgSEFWRV9MT0NLRgorICAgIHsibG9ja2YiLCAgICAgICAgICAgcG9zaXhfbG9ja2YsIE1FVEhfVkFSQVJHUywgcG9zaXhfbG9ja2ZfX2RvY19ffSwKKyNlbmRpZgogICAgIHsibHNlZWsiLCAgICAgICAgICAgcG9zaXhfbHNlZWssIE1FVEhfVkFSQVJHUywgcG9zaXhfbHNlZWtfX2RvY19ffSwKICAgICB7InJlYWQiLCAgICAgICAgICAgIHBvc2l4X3JlYWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVhZF9fZG9jX199LAorI2lmZGVmIEhBVkVfUkVBRFYKKyAgICB7InJlYWR2IiwgICAgICAgICAgIHBvc2l4X3JlYWR2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlYWR2X19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1BSRUFECisgICAgeyJwcmVhZCIsICAgICAgICAgICBwb3NpeF9wcmVhZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wcmVhZF9fZG9jX199LAorI2VuZGlmCiAgICAgeyJ3cml0ZSIsICAgICAgICAgICBwb3NpeF93cml0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF93cml0ZV9fZG9jX199LAorI2lmZGVmIEhBVkVfV1JJVEVWCisgICAgeyJ3cml0ZXYiLCAgICAgICAgICBwb3NpeF93cml0ZXYsIE1FVEhfVkFSQVJHUywgcG9zaXhfd3JpdGV2X19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1BXUklURQorICAgIHsicHdyaXRlIiwgICAgICAgICAgcG9zaXhfcHdyaXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3B3cml0ZV9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TRU5ERklMRQorICAgIHsic2VuZGZpbGUiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3NlbmRmaWxlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3NlbmRmaWxlX19kb2NfX30sCisjZW5kaWYKICAgICB7ImZzdGF0IiwgICAgICAgICAgIHBvc2l4X2ZzdGF0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2ZzdGF0X19kb2NfX30sCiAgICAgeyJpc2F0dHkiLCAgICAgICAgICBwb3NpeF9pc2F0dHksIE1FVEhfVkFSQVJHUywgcG9zaXhfaXNhdHR5X19kb2NfX30sCiAjaWZkZWYgSEFWRV9QSVBFCiAgICAgeyJwaXBlIiwgICAgICAgICAgICBwb3NpeF9waXBlLCBNRVRIX05PQVJHUywgcG9zaXhfcGlwZV9fZG9jX199LAogI2VuZGlmCisjaWZkZWYgSEFWRV9QSVBFMgorICAgIHsicGlwZTIiLCAgICAgICAgICAgcG9zaXhfcGlwZTIsIE1FVEhfTywgcG9zaXhfcGlwZTJfX2RvY19ffSwKKyNlbmRpZgogI2lmZGVmIEhBVkVfTUtGSUZPCi0gICAgeyJta2ZpZm8iLCAgICAgICAgICBwb3NpeF9ta2ZpZm8sIE1FVEhfVkFSQVJHUywgcG9zaXhfbWtmaWZvX19kb2NfX30sCisgICAgeyJta2ZpZm8iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbWtmaWZvLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X21rZmlmb19fZG9jX199LAogI2VuZGlmCiAjaWYgZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikKLSAgICB7Im1rbm9kIiwgICAgICAgICAgIHBvc2l4X21rbm9kLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21rbm9kX19kb2NfX30sCisgICAgeyJta25vZCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbWtub2QsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtub2RfX2RvY19ffSwKICNlbmRpZgogI2lmZGVmIEhBVkVfREVWSUNFX01BQ1JPUwogICAgIHsibWFqb3IiLCAgICAgICAgICAgcG9zaXhfbWFqb3IsIE1FVEhfVkFSQVJHUywgcG9zaXhfbWFqb3JfX2RvY19ffSwKQEAgLTc5ODUsNiArMTEwMTgsMTcgQEAKICNpZmRlZiBIQVZFX0ZUUlVOQ0FURQogICAgIHsiZnRydW5jYXRlIiwgICAgICAgcG9zaXhfZnRydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Z0cnVuY2F0ZV9fZG9jX199LAogI2VuZGlmCisjaWZkZWYgSEFWRV9UUlVOQ0FURQorICAgIHsidHJ1bmNhdGUiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3RydW5jYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3RydW5jYXRlX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1BPU0lYX0ZBTExPQ0FURQorICAgIHsicG9zaXhfZmFsbG9jYXRlIiwgcG9zaXhfcG9zaXhfZmFsbG9jYXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Bvc2l4X2ZhbGxvY2F0ZV9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9QT1NJWF9GQURWSVNFCisgICAgeyJwb3NpeF9mYWR2aXNlIiwgICBwb3NpeF9wb3NpeF9mYWR2aXNlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Bvc2l4X2ZhZHZpc2VfX2RvY19ffSwKKyNlbmRpZgogI2lmZGVmIEhBVkVfUFVURU5WCiAgICAgeyJwdXRlbnYiLCAgICAgICAgICBwb3NpeF9wdXRlbnYsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHV0ZW52X19kb2NfX30sCiAjZW5kaWYKQEAgLTc5OTgsNiArMTEwNDIsOSBAQAogI2lmZGVmIEhBVkVfRlNZTkMKICAgICB7ImZzeW5jIiwgICAgICAgcG9zaXhfZnN5bmMsIE1FVEhfTywgcG9zaXhfZnN5bmNfX2RvY19ffSwKICNlbmRpZgorI2lmZGVmIEhBVkVfU1lOQworICAgIHsic3luYyIsICAgICAgICBwb3NpeF9zeW5jLCBNRVRIX05PQVJHUywgcG9zaXhfc3luY19fZG9jX199LAorI2VuZGlmCiAjaWZkZWYgSEFWRV9GREFUQVNZTkMKICAgICB7ImZkYXRhc3luYyIsICAgcG9zaXhfZmRhdGFzeW5jLCAgTUVUSF9PLCBwb3NpeF9mZGF0YXN5bmNfX2RvY19ffSwKICNlbmRpZgpAQCAtODAzMSw3ICsxMTA3OCw5IEBACiAgICAgeyJmc3RhdHZmcyIsICAgICAgICBwb3NpeF9mc3RhdHZmcywgTUVUSF9WQVJBUkdTLCBwb3NpeF9mc3RhdHZmc19fZG9jX199LAogI2VuZGlmCiAjaWYgZGVmaW5lZChIQVZFX1NUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKQotICAgIHsic3RhdHZmcyIsICAgICAgICAgcG9zaXhfc3RhdHZmcywgTUVUSF9WQVJBUkdTLCBwb3NpeF9zdGF0dmZzX19kb2NfX30sCisgICAgeyJzdGF0dmZzIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc3RhdHZmcywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zdGF0dmZzX19kb2NfX30sCiAjZW5kaWYKICNpZmRlZiBIQVZFX0NPTkZTVFIKICAgICB7ImNvbmZzdHIiLCAgICAgICAgIHBvc2l4X2NvbmZzdHIsIE1FVEhfVkFSQVJHUywgcG9zaXhfY29uZnN0cl9fZG9jX199LApAQCAtODA0Myw3ICsxMTA5Miw5IEBACiAgICAgeyJmcGF0aGNvbmYiLCAgICAgICBwb3NpeF9mcGF0aGNvbmYsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnBhdGhjb25mX19kb2NfX30sCiAjZW5kaWYKICNpZmRlZiBIQVZFX1BBVEhDT05GCi0gICAgeyJwYXRoY29uZiIsICAgICAgICBwb3NpeF9wYXRoY29uZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wYXRoY29uZl9fZG9jX199LAorICAgIHsicGF0aGNvbmYiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3BhdGhjb25mLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3BhdGhjb25mX19kb2NfX30sCiAjZW5kaWYKICAgICB7ImFib3J0IiwgICAgICAgICAgIHBvc2l4X2Fib3J0LCBNRVRIX05PQVJHUywgcG9zaXhfYWJvcnRfX2RvY19ffSwKICNpZmRlZiBNU19XSU5ET1dTCkBAIC04MDUxLDYgKzExMTAyLDcgQEAKICAgICB7Il9nZXRmaW5hbHBhdGhuYW1lIiwgICAgICAgcG9zaXhfX2dldGZpbmFscGF0aG5hbWUsIE1FVEhfVkFSQVJHUywgTlVMTH0sCiAgICAgeyJfZ2V0ZmlsZWluZm9ybWF0aW9uIiwgICAgIHBvc2l4X19nZXRmaWxlaW5mb3JtYXRpb24sIE1FVEhfVkFSQVJHUywgTlVMTH0sCiAgICAgeyJfaXNkaXIiLCAgICAgICAgICAgICAgICAgIHBvc2l4X19pc2RpciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9faXNkaXJfX2RvY19ffSwKKyAgICB7Il9nZXRkaXNrdXNhZ2UiLCAgICAgICAgICAgd2luMzJfX2dldGRpc2t1c2FnZSwgTUVUSF9WQVJBUkdTLCB3aW4zMl9fZ2V0ZGlza3VzYWdlX19kb2NfX30sCiAjZW5kaWYKICNpZmRlZiBIQVZFX0dFVExPQURBVkcKICAgICB7ImdldGxvYWRhdmciLCAgICAgIHBvc2l4X2dldGxvYWRhdmcsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRsb2FkYXZnX19kb2NfX30sCkBAIC04MDY4LDYgKzExMTIwLDI0IEBACiAjaWZkZWYgSEFWRV9HRVRSRVNHSUQKICAgICB7ImdldHJlc2dpZCIsICAgICAgIHBvc2l4X2dldHJlc2dpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHJlc2dpZF9fZG9jX199LAogI2VuZGlmCisKKyNpZmRlZiBVU0VfWEFUVFJTCisgICAgeyJzZXR4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9zZXR4YXR0ciwKKyAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgcG9zaXhfc2V0eGF0dHJfX2RvY19ffSwKKyAgICB7ImdldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X2dldHhhdHRyLAorICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICBwb3NpeF9nZXR4YXR0cl9fZG9jX199LAorICAgIHsicmVtb3ZleGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfcmVtb3ZleGF0dHIsCisgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgIHBvc2l4X3JlbW92ZXhhdHRyX19kb2NfX30sCisgICAgeyJsaXN0eGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfbGlzdHhhdHRyLAorICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICBwb3NpeF9saXN0eGF0dHJfX2RvY19ffSwKKyNlbmRpZgorI2lmIGRlZmluZWQoVEVSTVNJWkVfVVNFX0NPTklPKSB8fCBkZWZpbmVkKFRFUk1TSVpFX1VTRV9JT0NUTCkKKyAgICB7ImdldF90ZXJtaW5hbF9zaXplIiwgZ2V0X3Rlcm1pbmFsX3NpemUsIE1FVEhfVkFSQVJHUywgdGVybXNpemVfX2RvY19ffSwKKyNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtODIzNSw2ICsxMTMwNSw5IEBACiAjaWZkZWYgT19URVhUCiAgICAgaWYgKGlucyhkLCAiT19URVhUIiwgKGxvbmcpT19URVhUKSkgcmV0dXJuIC0xOwogI2VuZGlmCisjaWZkZWYgT19YQVRUUgorICAgIGlmIChpbnMoZCwgIk9fWEFUVFIiLCAobG9uZylPX1hBVFRSKSkgcmV0dXJuIC0xOworI2VuZGlmCiAjaWZkZWYgT19MQVJHRUZJTEUKICAgICBpZiAoaW5zKGQsICJPX0xBUkdFRklMRSIsIChsb25nKU9fTEFSR0VGSUxFKSkgcmV0dXJuIC0xOwogI2VuZGlmCkBAIC04MjQ0LDYgKzExMzE3LDM4IEBACiAjaWZkZWYgT19FWExPQ0sKICAgICBpZiAoaW5zKGQsICJPX0VYTE9DSyIsIChsb25nKU9fRVhMT0NLKSkgcmV0dXJuIC0xOwogI2VuZGlmCisjaWZkZWYgT19FWEVDCisgICAgaWYgKGlucyhkLCAiT19FWEVDIiwgKGxvbmcpT19FWEVDKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgT19TRUFSQ0gKKyAgICBpZiAoaW5zKGQsICJPX1NFQVJDSCIsIChsb25nKU9fU0VBUkNIKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgT19UVFlfSU5JVAorICAgIGlmIChpbnMoZCwgIk9fVFRZX0lOSVQiLCAobG9uZylPX1RUWV9JTklUKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUFJJT19QUk9DRVNTCisgICAgaWYgKGlucyhkLCAiUFJJT19QUk9DRVNTIiwgKGxvbmcpUFJJT19QUk9DRVNTKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUFJJT19QR1JQCisgICAgaWYgKGlucyhkLCAiUFJJT19QR1JQIiwgKGxvbmcpUFJJT19QR1JQKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUFJJT19VU0VSCisgICAgaWYgKGlucyhkLCAiUFJJT19VU0VSIiwgKGxvbmcpUFJJT19VU0VSKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgT19DTE9FWEVDCisgICAgaWYgKGlucyhkLCAiT19DTE9FWEVDIiwgKGxvbmcpT19DTE9FWEVDKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgT19BQ0NNT0RFCisgICAgaWYgKGlucyhkLCAiT19BQ0NNT0RFIiwgKGxvbmcpT19BQ0NNT0RFKSkgcmV0dXJuIC0xOworI2VuZGlmCisKKworI2lmZGVmIFNFRUtfSE9MRQorICAgIGlmIChpbnMoZCwgIlNFRUtfSE9MRSIsIChsb25nKVNFRUtfSE9MRSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNFRUtfREFUQQorICAgIGlmIChpbnMoZCwgIlNFRUtfREFUQSIsIChsb25nKVNFRUtfREFUQSkpIHJldHVybiAtMTsKKyNlbmRpZgogCiAvKiBNUyBXaW5kb3dzICovCiAjaWZkZWYgT19OT0lOSEVSSVQKQEAgLTgyODYsNiArMTEzOTEsMTAgQEAKICAgICAvKiBEbyBub3QgZm9sbG93IGxpbmtzLiAgICAgICovCiAgICAgaWYgKGlucyhkLCAiT19OT0ZPTExPVyIsIChsb25nKU9fTk9GT0xMT1cpKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZmRlZiBPX05PTElOS1MKKyAgICAvKiBGYWlscyBpZiBsaW5rIGNvdW50IG9mIHRoZSBuYW1lZCBmaWxlIGlzIGdyZWF0ZXIgdGhhbiAxICovCisgICAgaWYgKGlucyhkLCAiT19OT0xJTktTIiwgKGxvbmcpT19OT0xJTktTKSkgcmV0dXJuIC0xOworI2VuZGlmCiAjaWZkZWYgT19OT0FUSU1FCiAgICAgLyogRG8gbm90IHVwZGF0ZSB0aGUgYWNjZXNzIHRpbWUuICovCiAgICAgaWYgKGlucyhkLCAiT19OT0FUSU1FIiwgKGxvbmcpT19OT0FUSU1FKSkgcmV0dXJuIC0xOwpAQCAtODM1Miw2ICsxMTQ2MSw3OSBAQAogICAgIGlmIChpbnMoZCwgIlNUX05PU1VJRCIsIChsb25nKVNUX05PU1VJRCkpIHJldHVybiAtMTsKICNlbmRpZiAvKiBTVF9OT1NVSUQgKi8KIAorICAgIC8qIEZyZWVCU0Qgc2VuZGZpbGUoKSBjb25zdGFudHMgKi8KKyNpZmRlZiBTRl9OT0RJU0tJTworICAgIGlmIChpbnMoZCwgIlNGX05PRElTS0lPIiwgKGxvbmcpU0ZfTk9ESVNLSU8pKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTRl9NTk9XQUlUCisgICAgaWYgKGlucyhkLCAiU0ZfTU5PV0FJVCIsIChsb25nKVNGX01OT1dBSVQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTRl9TWU5DCisgICAgaWYgKGlucyhkLCAiU0ZfU1lOQyIsIChsb25nKVNGX1NZTkMpKSByZXR1cm4gLTE7CisjZW5kaWYKKworICAgIC8qIGNvbnN0YW50cyBmb3IgcG9zaXhfZmFkdmlzZSAqLworI2lmZGVmIFBPU0lYX0ZBRFZfTk9STUFMCisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9OT1JNQUwiLCAobG9uZylQT1NJWF9GQURWX05PUk1BTCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBPU0lYX0ZBRFZfU0VRVUVOVElBTAorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfU0VRVUVOVElBTCIsIChsb25nKVBPU0lYX0ZBRFZfU0VRVUVOVElBTCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBPU0lYX0ZBRFZfUkFORE9NCisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9SQU5ET00iLCAobG9uZylQT1NJWF9GQURWX1JBTkRPTSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBPU0lYX0ZBRFZfTk9SRVVTRQorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfTk9SRVVTRSIsIChsb25nKVBPU0lYX0ZBRFZfTk9SRVVTRSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBPU0lYX0ZBRFZfV0lMTE5FRUQKKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX1dJTExORUVEIiwgKGxvbmcpUE9TSVhfRkFEVl9XSUxMTkVFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBPU0lYX0ZBRFZfRE9OVE5FRUQKKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX0RPTlRORUVEIiwgKGxvbmcpUE9TSVhfRkFEVl9ET05UTkVFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorCisgICAgLyogY29uc3RhbnRzIGZvciB3YWl0aWQgKi8KKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChIQVZFX1dBSVRJRCkKKyAgICBpZiAoaW5zKGQsICJQX1BJRCIsIChsb25nKVBfUElEKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlBfUEdJRCIsIChsb25nKVBfUEdJRCkpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJQX0FMTCIsIChsb25nKVBfQUxMKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgV0VYSVRFRAorICAgIGlmIChpbnMoZCwgIldFWElURUQiLCAobG9uZylXRVhJVEVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgV05PV0FJVAorICAgIGlmIChpbnMoZCwgIldOT1dBSVQiLCAobG9uZylXTk9XQUlUKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgV1NUT1BQRUQKKyAgICBpZiAoaW5zKGQsICJXU1RPUFBFRCIsIChsb25nKVdTVE9QUEVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgQ0xEX0VYSVRFRAorICAgIGlmIChpbnMoZCwgIkNMRF9FWElURUQiLCAobG9uZylDTERfRVhJVEVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgQ0xEX0RVTVBFRAorICAgIGlmIChpbnMoZCwgIkNMRF9EVU1QRUQiLCAobG9uZylDTERfRFVNUEVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgQ0xEX1RSQVBQRUQKKyAgICBpZiAoaW5zKGQsICJDTERfVFJBUFBFRCIsIChsb25nKUNMRF9UUkFQUEVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgQ0xEX0NPTlRJTlVFRAorICAgIGlmIChpbnMoZCwgIkNMRF9DT05USU5VRUQiLCAobG9uZylDTERfQ09OVElOVUVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisKKyAgICAvKiBjb25zdGFudHMgZm9yIGxvY2tmICovCisjaWZkZWYgRl9MT0NLCisgICAgaWYgKGlucyhkLCAiRl9MT0NLIiwgKGxvbmcpRl9MT0NLKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgRl9UTE9DSworICAgIGlmIChpbnMoZCwgIkZfVExPQ0siLCAobG9uZylGX1RMT0NLKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgRl9VTE9DSworICAgIGlmIChpbnMoZCwgIkZfVUxPQ0siLCAobG9uZylGX1VMT0NLKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgRl9URVNUCisgICAgaWYgKGlucyhkLCAiRl9URVNUIiwgKGxvbmcpRl9URVNUKSkgcmV0dXJuIC0xOworI2VuZGlmCisKICNpZmRlZiBIQVZFX1NQQVdOVgogI2lmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCiAgICAgaWYgKGlucyhkLCAiUF9XQUlUIiwgKGxvbmcpUF9XQUlUKSkgcmV0dXJuIC0xOwpAQCAtODM4Myw2ICsxMTU2NSw2NCBAQAogI2VuZGlmCiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU0NIRURfSAorICAgIGlmIChpbnMoZCwgIlNDSEVEX09USEVSIiwgKGxvbmcpU0NIRURfT1RIRVIpKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiU0NIRURfRklGTyIsIChsb25nKVNDSEVEX0ZJRk8pKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiU0NIRURfUlIiLCAobG9uZylTQ0hFRF9SUikpIHJldHVybiAtMTsKKyNpZmRlZiBTQ0hFRF9TUE9SQURJQworICAgIGlmIChpbnMoZCwgIlNDSEVEX1NQT1JBRElDIiwgKGxvbmcpU0NIRURfU1BPUkFESUMpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX0JBVENICisgICAgaWYgKGlucyhkLCAiU0NIRURfQkFUQ0giLCAobG9uZylTQ0hFRF9CQVRDSCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX0lETEUKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9JRExFIiwgKGxvbmcpU0NIRURfSURMRSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX1JFU0VUX09OX0ZPUksKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9SRVNFVF9PTl9GT1JLIiwgKGxvbmcpU0NIRURfUkVTRVRfT05fRk9SSykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX1NZUworICAgIGlmIChpbnMoZCwgIlNDSEVEX1NZUyIsIChsb25nKVNDSEVEX1NZUykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX0lBCisgICAgaWYgKGlucyhkLCAiU0NIRURfSUEiLCAobG9uZylTQ0hFRF9JQSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX0ZTUworICAgIGlmIChpbnMoZCwgIlNDSEVEX0ZTUyIsIChsb25nKVNDSEVEX0ZTUykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX0ZYCisgICAgaWYgKGlucyhkLCAiU0NIRURfRlgiLCAobG9uZylTQ0hFRF9GU1MpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgVVNFX1hBVFRSUworICAgIGlmIChpbnMoZCwgIlhBVFRSX0NSRUFURSIsIChsb25nKVhBVFRSX0NSRUFURSkpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJYQVRUUl9SRVBMQUNFIiwgKGxvbmcpWEFUVFJfUkVQTEFDRSkpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJYQVRUUl9TSVpFX01BWCIsIChsb25nKVhBVFRSX1NJWkVfTUFYKSkgcmV0dXJuIC0xOworI2VuZGlmCisKKyNpZmRlZiBSVExEX0xBWlkKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9MQVpZKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9OT1cKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9OT1cpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX0dMT0JBTAorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX0dMT0JBTCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfTE9DQUwKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9MT0NBTCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfTk9ERUxFVEUKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9OT0RFTEVURSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfTk9MT0FECisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfTk9MT0FEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9ERUVQQklORAorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX0RFRVBCSU5EKSkgcmV0dXJuIC0xOworI2VuZGlmCisKICNpZiBkZWZpbmVkKFBZT1NfT1MyKQogICAgIGlmIChpbnNlcnR2YWx1ZXMoZCkpIHJldHVybiAtMTsKICNlbmRpZgpAQCAtODQxNiwxMCArMTE2NTYsMTM4IEBACiB9OwogCiAKK3N0YXRpYyBjaGFyICpoYXZlX2Z1bmN0aW9uc1tdID0geworCisjaWZkZWYgSEFWRV9GQUNDRVNTQVQKKyAgICAiSEFWRV9GQUNDRVNTQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSERJUgorICAgICJIQVZFX0ZDSERJUiIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNITU9ECisgICAgIkhBVkVfRkNITU9EIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgICJIQVZFX0ZDSE1PREFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hPV04KKyAgICAiSEFWRV9GQ0hPV04iLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZFWEVDVkUKKyAgICAiSEFWRV9GRVhFQ1ZFIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GRE9QRU5ESVIKKyAgICAiSEFWRV9GRE9QRU5ESVIiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZQQVRIQ09ORgorICAgICJIQVZFX0ZQQVRIQ09ORiIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlNUQVRBVAorICAgICJIQVZFX0ZTVEFUQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZTVEFUVkZTCisgICAgIkhBVkVfRlNUQVRWRlMiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZUUlVOQ0FURQorICAgICJIQVZFX0ZUUlVOQ0FURSIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlVUSU1FTlMKKyAgICAiSEFWRV9GVVRJTUVOUyIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlVUSU1FUworICAgICJIQVZFX0ZVVElNRVMiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZVVElNRVNBVAorICAgICJIQVZFX0ZVVElNRVNBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTElOS0FUCisgICAgIkhBVkVfTElOS0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MQ0hGTEFHUworICAgICJIQVZFX0xDSEZMQUdTIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MQ0hNT0QKKyAgICAiSEFWRV9MQ0hNT0QiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xDSE9XTgorICAgICJIQVZFX0xDSE9XTiIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTFNUQVQKKyAgICAiSEFWRV9MU1RBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTFVUSU1FUworICAgICJIQVZFX0xVVElNRVMiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LRElSQVQKKyAgICAiSEFWRV9NS0RJUkFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS0ZJRk9BVAorICAgICJIQVZFX01LRklGT0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS05PREFUCisgICAgIkhBVkVfTUtOT0RBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfT1BFTkFUCisgICAgIkhBVkVfT1BFTkFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9SRUFETElOS0FUCisgICAgIkhBVkVfUkVBRExJTktBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfUkVOQU1FQVQKKyAgICAiSEFWRV9SRU5BTUVBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU1lNTElOS0FUCisgICAgIkhBVkVfU1lNTElOS0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9VTkxJTktBVAorICAgICJIQVZFX1VOTElOS0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9VVElNRU5TQVQKKyAgICAiSEFWRV9VVElNRU5TQVQiLAorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgIk1TX1dJTkRPV1MiLAorI2VuZGlmCisKKyAgICBOVUxMCit9OworCisKIFB5TU9ESU5JVF9GVU5DCiBJTklURlVOQyh2b2lkKQogewogICAgIFB5T2JqZWN0ICptLCAqdjsKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBjaGFyICoqdHJhY2U7CiAKICNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQogICAgIHdpbjMyX2Nhbl9zeW1saW5rID0gZW5hYmxlX3N5bWxpbmsoKTsKQEAgLTg0NTEsNiArMTE4MTksMTEgQEAKICNlbmRpZgogCiAgICAgaWYgKCFpbml0aWFsaXplZCkgeworI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKKyAgICAgICAgd2FpdGlkX3Jlc3VsdF9kZXNjLm5hbWUgPSBNT0ROQU1FICIud2FpdGlkX3Jlc3VsdCI7CisgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJldhaXRpZFJlc3VsdFR5cGUsICZ3YWl0aWRfcmVzdWx0X2Rlc2MpOworI2VuZGlmCisKICAgICAgICAgc3RhdF9yZXN1bHRfZGVzYy5uYW1lID0gTU9ETkFNRSAiLnN0YXRfcmVzdWx0IjsKICAgICAgICAgc3RhdF9yZXN1bHRfZGVzYy5maWVsZHNbN10ubmFtZSA9IFB5U3RydWN0U2VxdWVuY2VfVW5uYW1lZEZpZWxkOwogICAgICAgICBzdGF0X3Jlc3VsdF9kZXNjLmZpZWxkc1s4XS5uYW1lID0gUHlTdHJ1Y3RTZXF1ZW5jZV9Vbm5hbWVkRmllbGQ7CkBAIC04NDcwLDEzICsxMTg0MywzOSBAQAogICAgICAgICB0aWNrc19wZXJfc2Vjb25kID0gNjA7IC8qIG1hZ2ljIGZhbGxiYWNrIHZhbHVlOyBtYXkgYmUgYm9ndXMgKi8KICMgIGVuZGlmCiAjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkgfHwgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikKKyAgICAgICAgc2NoZWRfcGFyYW1fZGVzYy5uYW1lID0gTU9ETkFNRSAiLnNjaGVkX3BhcmFtIjsKKyAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmU2NoZWRQYXJhbVR5cGUsICZzY2hlZF9wYXJhbV9kZXNjKTsKKyAgICAgICAgU2NoZWRQYXJhbVR5cGUudHBfbmV3ID0gc2NoZWRfcGFyYW1fbmV3OworI2VuZGlmCisKKyAgICAgICAgLyogaW5pdGlhbGl6ZSBUZXJtaW5hbFNpemVfaW5mbyAqLworICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZUZXJtaW5hbFNpemVUeXBlLCAmVGVybWluYWxTaXplX2Rlc2MpOworICAgICAgICBQeV9JTkNSRUYoJlRlcm1pbmFsU2l6ZVR5cGUpOwogICAgIH0KKyNpZiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCopICZXYWl0aWRSZXN1bHRUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIndhaXRpZF9yZXN1bHQiLCAoUHlPYmplY3QqKSAmV2FpdGlkUmVzdWx0VHlwZSk7CisjZW5kaWYKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJlN0YXRSZXN1bHRUeXBlKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0YXRfcmVzdWx0IiwgKFB5T2JqZWN0KikgJlN0YXRSZXN1bHRUeXBlKTsKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJlN0YXRWRlNSZXN1bHRUeXBlKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0YXR2ZnNfcmVzdWx0IiwKICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0KikgJlN0YXRWRlNSZXN1bHRUeXBlKTsKLSAgICBpbml0aWFsaXplZCA9IDE7CisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpCisgICAgUHlfSU5DUkVGKCZTY2hlZFBhcmFtVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzY2hlZF9wYXJhbSIsIChQeU9iamVjdCAqKSZTY2hlZFBhcmFtVHlwZSk7CisjZW5kaWYKKworICAgIHRpbWVzX3Jlc3VsdF9kZXNjLm5hbWUgPSBNT0ROQU1FICIudGltZXNfcmVzdWx0IjsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZUaW1lc1Jlc3VsdFR5cGUsICZ0aW1lc19yZXN1bHRfZGVzYyk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0aW1lc19yZXN1bHQiLCAoUHlPYmplY3QgKikmVGltZXNSZXN1bHRUeXBlKTsKKworICAgIHVuYW1lX3Jlc3VsdF9kZXNjLm5hbWUgPSBNT0ROQU1FICIudW5hbWVfcmVzdWx0IjsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZVbmFtZVJlc3VsdFR5cGUsICZ1bmFtZV9yZXN1bHRfZGVzYyk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ1bmFtZV9yZXN1bHQiLCAoUHlPYmplY3QgKikmVW5hbWVSZXN1bHRUeXBlKTsKIAogI2lmZGVmIF9fQVBQTEVfXwogICAgIC8qCkBAIC04NDg2LDcgKzExODg1LDcgQEAKICAgICAgKiBjdXJyZW50bHkgYWN0aXZlIHBsYXRmb3JtLgogICAgICAqCiAgICAgICogVGhpcyBibG9jayBhbGxvdyBvbmUgdG8gdXNlIGEgcHl0aG9uIGJpbmFyeSB0aGF0IHdhcyBidWlsZCBvbgotICAgICAqIE9TWCAxMC40IG9uIE9TWCAxMC4zLCB3aXRob3V0IGxvb3NpbmcgYWNjZXNzIHRvIG5ldyBBUElzIG9uCisgICAgICogT1NYIDEwLjQgb24gT1NYIDEwLjMsIHdpdGhvdXQgbG9zaW5nIGFjY2VzcyB0byBuZXcgQVBJcyBvbgogICAgICAqIE9TWCAxMC40LgogICAgICAqLwogI2lmZGVmIEhBVkVfRlNUQVRWRlMKQEAgLTg1MTUsNiArMTE5MTQsNDIgQEAKIAogCiAjZW5kaWYgLyogX19BUFBMRV9fICovCisKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInRlcm1pbmFsX3NpemUiLCAoUHlPYmplY3QqKSAmVGVybWluYWxTaXplVHlwZSk7CisKKyAgICBiaWxsaW9uID0gUHlMb25nX0Zyb21Mb25nKDEwMDAwMDAwMDApOworICAgIGlmICghYmlsbGlvbikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBzdXBwcmVzcyAiZnVuY3Rpb24gbm90IHVzZWQiIHdhcm5pbmdzICovCisgICAgeworICAgIGludCBpZ25vcmVkOworICAgIGZkX3NwZWNpZmllZCgiIiwgLTEpOworICAgIGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoIiIsIDEpOworICAgIGRpcl9mZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImNobW9kIiwgREVGQVVMVF9ESVJfRkQsIDEpOworICAgIGRpcl9mZF9jb252ZXJ0ZXIoUHlfTm9uZSwgJmlnbm9yZWQpOworICAgIGRpcl9mZF91bmF2YWlsYWJsZShQeV9Ob25lLCAmaWdub3JlZCk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBwcm92aWRlIGxpc3Qgb2YgbG9jYWxseSBhdmFpbGFibGUgZnVuY3Rpb25zCisgICAgICogc28gb3MucHkgY2FuIHBvcHVsYXRlIHN1cHBvcnRfKiBsaXN0cworICAgICAqLworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yICh0cmFjZSA9IGhhdmVfZnVuY3Rpb25zOyAqdHJhY2U7IHRyYWNlKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkoKnRyYWNlLCBzdHJsZW4oKnRyYWNlKSwgTlVMTCk7CisgICAgICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCB1bmljb2RlKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgfQorICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2hhdmVfZnVuY3Rpb25zIiwgbGlzdCk7CisKKyAgICBpbml0aWFsaXplZCA9IDE7CisKICAgICByZXR1cm4gbTsKIAogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weWV4cGF0LmMgYi9Nb2R1bGVzL3B5ZXhwYXQuYwppbmRleCBjOTY1ZmY0Li5iZDI3MjY4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5ZXhwYXQuYworKysgYi9Nb2R1bGVzL3B5ZXhwYXQuYwpAQCAtMTAwLDE2ICsxMDAsMTcgQEAKIHNldF9lcnJvcih4bWxwYXJzZW9iamVjdCAqc2VsZiwgZW51bSBYTUxfRXJyb3IgY29kZSkKIHsKICAgICBQeU9iamVjdCAqZXJyOwotICAgIGNoYXIgYnVmZmVyWzI1Nl07CisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKICAgICBYTUxfUGFyc2VyIHBhcnNlciA9IHNlbGYtPml0c2VsZjsKICAgICBpbnQgbGluZW5vID0gWE1MX0dldEVycm9yTGluZU51bWJlcihwYXJzZXIpOwogICAgIGludCBjb2x1bW4gPSBYTUxfR2V0RXJyb3JDb2x1bW5OdW1iZXIocGFyc2VyKTsKIAotICAgIC8qIFRoZXJlIGlzIG5vIHJpc2sgb2Ygb3ZlcmZsb3dpbmcgdGhpcyBidWZmZXIsIHNpbmNlCi0gICAgICAgZXZlbiBmb3IgNjQtYml0IGludGVnZXJzLCB0aGVyZSBpcyBzdWZmaWNpZW50IHNwYWNlLiAqLwotICAgIHNwcmludGYoYnVmZmVyLCAiJS4yMDBzOiBsaW5lICVpLCBjb2x1bW4gJWkiLAotICAgICAgICAgICAgWE1MX0Vycm9yU3RyaW5nKGNvZGUpLCBsaW5lbm8sIGNvbHVtbik7Ci0gICAgZXJyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKEVycm9yT2JqZWN0LCAicyIsIGJ1ZmZlcik7CisgICAgYnVmZmVyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzOiBsaW5lICVpLCBjb2x1bW4gJWkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FcnJvclN0cmluZyhjb2RlKSwgbGluZW5vLCBjb2x1bW4pOworICAgIGlmIChidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZXJyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKEVycm9yT2JqZWN0LCAiTyIsIGJ1ZmZlcik7CisgICAgUHlfREVDUkVGKGJ1ZmZlcik7CiAgICAgaWYgKCAgZXJyICE9IE5VTEwKICAgICAgICAgICAmJiBzZXRfZXJyb3JfYXR0cihlcnIsICJjb2RlIiwgY29kZSkKICAgICAgICAgICAmJiBzZXRfZXJyb3JfYXR0cihlcnIsICJvZmZzZXQiLCBjb2x1bW4pCkBAIC04NDIsOSArODQzLDkgQEAKIHsKICAgICBpbnQgcnYgPSAxOwogICAgIFB5T2JqZWN0ICpyZWFkbWV0aG9kID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKIAotCi0gICAgcmVhZG1ldGhvZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZiwgInJlYWQiKTsKKyAgICByZWFkbWV0aG9kID0gX1B5T2JqZWN0X0dldEF0dHJJZChmLCAmUHlJZF9yZWFkKTsKICAgICBpZiAocmVhZG1ldGhvZCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBoYXZlICdyZWFkJyBhdHRyaWJ1dGUiKTsKQEAgLTEwMzIsMTYgKzEwMzMsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB4bWxwYXJzZV9Vc2VGb3JlaWduRFREKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqZmxhZ29iaiA9IE5VTEw7CiAgICAgaW50IGZsYWcgPSAxOwogICAgIGVudW0gWE1MX0Vycm9yIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpVc2VGb3JlaWduRFREIiwgJmZsYWdvYmopKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicDpVc2VGb3JlaWduRFREIiwgJmZsYWcpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZmxhZ29iaiAhPSBOVUxMKSB7Ci0gICAgICAgIGZsYWcgPSBQeU9iamVjdF9Jc1RydWUoZmxhZ29iaik7Ci0gICAgICAgIGlmIChmbGFnIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICByYyA9IFhNTF9Vc2VGb3JlaWduRFREKHNlbGYtPml0c2VsZiwgZmxhZyA/IFhNTF9UUlVFIDogWE1MX0ZBTFNFKTsKICAgICBpZiAocmMgIT0gWE1MX0VSUk9SX05PTkUpIHsKICAgICAgICAgcmV0dXJuIHNldF9lcnJvcihzZWxmLCByYyk7CkBAIC0xMTA0LDE3ICsxMDk5LDIyIEBACiAgICAgUHlVbmljb2RlT2JqZWN0ICpfdV9zdHJpbmcgPSBOVUxMOwogICAgIGludCByZXN1bHQgPSAwOwogICAgIGludCBpOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICAvKiBZZXMsIHN1cHBvcnRzIG9ubHkgOGJpdCBlbmNvZGluZ3MgKi8KICAgICBfdV9zdHJpbmcgPSAoUHlVbmljb2RlT2JqZWN0ICopCiAgICAgICAgIFB5VW5pY29kZV9EZWNvZGUodGVtcGxhdGVfYnVmZmVyLCAyNTYsIG5hbWUsICJyZXBsYWNlIik7CiAKLSAgICBpZiAoX3Vfc3RyaW5nID09IE5VTEwpCisgICAgaWYgKF91X3N0cmluZyA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShfdV9zdHJpbmcpID09IC0xKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKF91X3N0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKF91X3N0cmluZyk7CisKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgLyogU3R1cGlkIHRvIGFjY2VzcyBkaXJlY3RseSwgYnV0IGZhc3QgKi8KLSAgICAgICAgUHlfVU5JQ09ERSBjID0gX3Vfc3RyaW5nLT5zdHJbaV07CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICBpZiAoYyA9PSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUikKICAgICAgICAgICAgIGluZm8tPm1hcFtpXSA9IC0xOwogICAgICAgICBlbHNlCkBAIC0xMjM4LDExICsxMjM4LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogeG1scGFyc2VfZ2V0YXR0cm8oeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqKQogewotICAgIFB5X1VOSUNPREUgKm5hbWU7CisgICAgUHlfVUNTNCBmaXJzdF9jaGFyOwogICAgIGludCBoYW5kbGVybnVtID0gLTE7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKICAgICAgICAgZ290byBnZW5lcmljOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZW9iaikpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaGFuZGxlcm51bSA9IGhhbmRsZXJuYW1lMmludChuYW1lb2JqKTsKIApAQCAtMTI1NCw4ICsxMjU2LDggQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBuYW1lID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZW9iaik7Ci0gICAgaWYgKG5hbWVbMF0gPT0gJ0UnKSB7CisgICAgZmlyc3RfY2hhciA9IFB5VW5pY29kZV9SRUFEX0NIQVIobmFtZW9iaiwgMCk7CisgICAgaWYgKGZpcnN0X2NoYXIgPT0gJ0UnKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lb2JqLCAiRXJyb3JDb2RlIikgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0dldEVycm9yQ29kZShzZWxmLT5pdHNlbGYpKTsKQEAgLTEyNjksNyArMTI3MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9HZXRFcnJvckJ5dGVJbmRleChzZWxmLT5pdHNlbGYpKTsKICAgICB9Ci0gICAgaWYgKG5hbWVbMF0gPT0gJ0MnKSB7CisgICAgaWYgKGZpcnN0X2NoYXIgPT0gJ0MnKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lb2JqLCAiQ3VycmVudExpbmVOdW1iZXIiKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfR2V0Q3VycmVudExpbmVOdW1iZXIoc2VsZi0+aXRzZWxmKSk7CkBAIC0xMjgwLDcgKzEyODIsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfR2V0Q3VycmVudEJ5dGVJbmRleChzZWxmLT5pdHNlbGYpKTsKICAgICB9Ci0gICAgaWYgKG5hbWVbMF0gPT0gJ2InKSB7CisgICAgaWYgKGZpcnN0X2NoYXIgPT0gJ2InKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lb2JqLCAiYnVmZmVyX3NpemUiKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgc2VsZi0+YnVmZmVyX3NpemUpOwogICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZW9iaiwgImJ1ZmZlcl90ZXh0IikgPT0gMCkKQEAgLTE2NzQsNyArMTY3Niw2IEBACiAgICAgUHlPYmplY3QgKmVycm9yc19tb2R1bGU7CiAgICAgUHlPYmplY3QgKm1vZGVsbW9kX25hbWU7CiAgICAgUHlPYmplY3QgKm1vZGVsX21vZHVsZTsKLSAgICBQeU9iamVjdCAqdmVyc2lvbjsKICAgICBQeU9iamVjdCAqc3lzX21vZHVsZXM7CiAgICAgUHlPYmplY3QgKnRtcG51bSwgKnRtcHN0cjsKICAgICBQeU9iamVjdCAqY29kZXNfZGljdDsKQEAgLTE3MTEsMTAgKzE3MTIsNiBAQAogICAgIFB5X0lOQ1JFRigmWG1scGFyc2V0eXBlKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlhNTFBhcnNlclR5cGUiLCAoUHlPYmplY3QgKikgJlhtbHBhcnNldHlwZSk7CiAKLSAgICB2ZXJzaW9uID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUFlfVkVSU0lPTik7Ci0gICAgaWYgKCF2ZXJzaW9uKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9fdmVyc2lvbl9fIiwgdmVyc2lvbik7CiAgICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIkVYUEFUX1ZFUlNJT04iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIFhNTF9FeHBhdFZlcnNpb24oKSk7CiAgICAgewpAQCAtMTkwNyw2ICsxOTA0LDcgQEAKICAgICBjYXBpLlNldFByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBYTUxfU2V0UHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcjsKICAgICBjYXBpLlNldFVua25vd25FbmNvZGluZ0hhbmRsZXIgPSBYTUxfU2V0VW5rbm93bkVuY29kaW5nSGFuZGxlcjsKICAgICBjYXBpLlNldFVzZXJEYXRhID0gWE1MX1NldFVzZXJEYXRhOworICAgIGNhcGkuU2V0U3RhcnREb2N0eXBlRGVjbEhhbmRsZXIgPSBYTUxfU2V0U3RhcnREb2N0eXBlRGVjbEhhbmRsZXI7CiAKICAgICAvKiBleHBvcnQgdXNpbmcgY2Fwc3VsZSAqLwogICAgIGNhcGlfb2JqZWN0ID0gUHlDYXBzdWxlX05ldygmY2FwaSwgUHlFeHBhdF9DQVBTVUxFX05BTUUsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weXRob24uYyBiL01vZHVsZXMvcHl0aG9uLmMKaW5kZXggY2Y5MzgzZi4uYzcwYmYzNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weXRob24uYworKysgYi9Nb2R1bGVzL3B5dGhvbi5jCkBAIC01MSw2ICs1MSw3IEBACiAgICAgICAgIGFyZ3ZfY29weVtpXSA9IF9QeV9jaGFyMndjaGFyKGFyZ3ZbaV0sIE5VTEwpOwogI2VuZGlmCiAgICAgICAgIGlmICghYXJndl9jb3B5W2ldKSB7CisgICAgICAgICAgICBmcmVlKG9sZGxvYyk7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhdGFsIFB5dGhvbiBlcnJvcjogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gZGVjb2RlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgIyVpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKyAxKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVhZGxpbmUuYyBiL01vZHVsZXMvcmVhZGxpbmUuYwppbmRleCA0ZDU0ZGFkLi5hNzEwNjUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3JlYWRsaW5lLmMKKysrIGIvTW9kdWxlcy9yZWFkbGluZS5jCkBAIC0yMzUsMTAgKzIzNSw5IEBACiAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAic2V0XyUuNTBzKGZ1bmMpOiBhcmd1bWVudCBub3QgY2FsbGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgYnVmKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzZXRfJS41MHMoZnVuYyk6IGFyZ3VtZW50IG5vdCBjYWxsYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTg5Miw3ICs4OTEsNyBAQAogI2VuZGlmCiAKICNpZmRlZiBfX0FQUExFX18KLSAgICAvKiB0aGUgbGliZWRpdCByZWFkbGluZSBlbXVsYXRpb24gcmVzZXRzIGtleSBiaW5kaW5ncyBldGMgCisgICAgLyogdGhlIGxpYmVkaXQgcmVhZGxpbmUgZW11bGF0aW9uIHJlc2V0cyBrZXkgYmluZGluZ3MgZXRjCiAgICAgICogd2hlbiBjYWxsaW5nIHJsX2luaXRpYWxpemUuICBTbyBjYWxsIGl0IHVwZnJvbnQKICAgICAgKi8KICAgICBpZiAodXNpbmdfbGliZWRpdF9lbXVsYXRpb24pCkBAIC05MzIsMTEgKzkzMSwxMSBAQAogICAgICAqLwogI2lmZGVmIF9fQVBQTEVfXwogICAgIGlmICh1c2luZ19saWJlZGl0X2VtdWxhdGlvbikKLQlybF9yZWFkX2luaXRfZmlsZShOVUxMKTsKKyAgICAgICAgcmxfcmVhZF9pbml0X2ZpbGUoTlVMTCk7CiAgICAgZWxzZQogI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwogICAgICAgICBybF9pbml0aWFsaXplKCk7Ci0gICAgCisKICAgICBSRVNUT1JFX0xPQ0FMRShzYXZlZF9sb2NhbGUpCiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVzb3VyY2UuYyBiL01vZHVsZXMvcmVzb3VyY2UuYwppbmRleCAxODc1ZTQ4Li4xYWVkNDk3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Jlc291cmNlLmMKKysrIGIvTW9kdWxlcy9yZXNvdXJjZS5jCkBAIC0xOCw4ICsxOCw2IEBACiAKICNkZWZpbmUgZG91YmxldGltZShUVikgKChkb3VibGUpKFRWKS50dl9zZWMgKyAoVFYpLnR2X3VzZWMgKiAwLjAwMDAwMSkKIAotc3RhdGljIFB5T2JqZWN0ICpSZXNvdXJjZUVycm9yOwotCiBQeURvY19TVFJWQVIoc3RydWN0X3J1c2FnZV9fZG9jX18sCiAic3RydWN0X3J1c2FnZTogUmVzdWx0IGZyb20gZ2V0cnVzYWdlLlxuXG4iCiAiVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG4iCkBAIC03Myw3ICs3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgd2hvIHBhcmFtZXRlciIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFJlc291cmNlRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTI1LDcgKzEyMyw3IEBACiAgICAgfQogCiAgICAgaWYgKGdldHJsaW1pdChyZXNvdXJjZSwgJnJsKSA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUmVzb3VyY2VFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xODMsNyArMTgxLDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsb3dlZCB0byByYWlzZSBtYXhpbXVtIGxpbWl0Iik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhSZXNvdXJjZUVycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTI0NiwxMiArMjQ0LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBBZGQgc29tZSBzeW1ib2xpYyBjb25zdGFudHMgdG8gdGhlIG1vZHVsZSAqLwotICAgIGlmIChSZXNvdXJjZUVycm9yID09IE5VTEwpIHsKLSAgICAgICAgUmVzb3VyY2VFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigicmVzb3VyY2UuZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwotICAgIH0KLSAgICBQeV9JTkNSRUYoUmVzb3VyY2VFcnJvcik7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFJlc291cmNlRXJyb3IpOworICAgIFB5X0lOQ1JFRihQeUV4Y19PU0Vycm9yKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgUHlFeGNfT1NFcnJvcik7CiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmU3RydWN0UlVzYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3J1c2FnZV9kZXNjKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCmluZGV4IDk4YjMxMDguLjViNWViOTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYwpAQCAtNyw2ICs3LDE0IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8c3RydWN0bWVtYmVyLmg+CiAKKyNpZmRlZiBIQVZFX1NZU19ERVZQT0xMX0gKKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyNpbmNsdWRlIDxzeXMvZGV2cG9sbC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNlbmRpZgorCiAjaWZkZWYgX19BUFBMRV9fCiAgICAgLyogUGVyZm9ybSBydW50aW1lIHRlc3RpbmcgZm9yIGEgYnJva2VuIHBvbGwgb24gT1NYIHRvIG1ha2UgaXQgZWFzaWVyCiAgICAgICogdG8gdXNlIHRoZSBzYW1lIGJpbmFyeSBvbiBtdWx0aXBsZSByZWxlYXNlcyBvZiB0aGUgT1MuCkBAIC01NCw4ICs2Miw2IEBACiAjICBlbmRpZgogI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqU2VsZWN0RXJyb3I7Ci0KIC8qIGxpc3Qgb2YgUHl0aG9uIG9iamVjdHMgYW5kIHRoZWlyIGZpbGUgZGVzY3JpcHRvciAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0ICpvYmo7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3duZWQgcmVmZXJlbmNlICovCkBAIC0yMDAsOSArMjA2LDcgQEAKICAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqdG91dCA9IFB5X05vbmU7CiAgICAgZmRfc2V0IGlmZHNldCwgb2Zkc2V0LCBlZmRzZXQ7Ci0gICAgZG91YmxlIHRpbWVvdXQ7CiAgICAgc3RydWN0IHRpbWV2YWwgdHYsICp0dnA7Ci0gICAgbG9uZyBzZWNvbmRzOwogICAgIGludCBpbWF4LCBvbWF4LCBlbWF4LCBtYXg7CiAgICAgaW50IG47CiAKQEAgLTIxOSwxOCArMjIzLDMxIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdGltZW91dCA9IFB5RmxvYXRfQXNEb3VibGUodG91dCk7Ci0gICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICB0aW1lX3Qgc2VjOworICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodG91dCwgJnNlYywgJnR2LnR2X3VzZWMpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICh0aW1lb3V0ID4gKGRvdWJsZSlMT05HX01BWCkgeworICAgICAgICBhc3NlcnQoc2l6ZW9mKHR2LnR2X3NlYykgPT0gc2l6ZW9mKGxvbmcpKTsKKyNpZiBTSVpFT0ZfVElNRV9UID4gU0laRU9GX0xPTkcKKyAgICAgICAgaWYgKHNlYyA+IExPTkdfTUFYKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBwZXJpb2QgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBpcyB0b28gbGFyZ2UiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHNlY29uZHMgPSAobG9uZyl0aW1lb3V0OwotICAgICAgICB0aW1lb3V0ID0gdGltZW91dCAtIChkb3VibGUpc2Vjb25kczsKLSAgICAgICAgdHYudHZfc2VjID0gc2Vjb25kczsKLSAgICAgICAgdHYudHZfdXNlYyA9IChsb25nKSh0aW1lb3V0ICogMUU2KTsKKyNlbmRpZgorICAgICAgICB0di50dl9zZWMgPSAobG9uZylzZWM7CisjZWxzZQorICAgICAgICAvKiA2NC1iaXQgT1MgWCBoYXMgc3RydWN0IHRpbWV2YWwudHZfdXNlYyBhcyBhbiBpbnQgKGFuZCB0aHVzIHN0aWxsIDQKKyAgICAgICAgICAgYnl0ZXMgYXMgcmVxdWlyZWQpLCBidXQgbm8gbG9uZ2VyIGRlZmluZWQgYnkgYSBsb25nLiAqLworICAgICAgICBsb25nIHR2X3VzZWMgPSB0di50dl91c2VjOworICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodG91dCwgJnR2LnR2X3NlYywgJnR2X3VzZWMpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHR2LnR2X3VzZWMgPSB0dl91c2VjOworI2VuZGlmCisgICAgICAgIGlmICh0di50dl9zZWMgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRpbWVvdXQgbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIHR2cCA9ICZ0djsKICAgICB9CiAKQEAgLTI2OSwxMSArMjg2LDExIEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKG4gPT0gU09DS0VUX0VSUk9SKSB7Ci0gICAgICAgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFNlbGVjdEVycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX09TRXJyb3IsIFdTQUdldExhc3RFcnJvcigpKTsKICAgICB9CiAjZWxzZQogICAgIGlmIChuIDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oU2VsZWN0RXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgfQogI2VuZGlmCiAgICAgZWxzZSB7CkBAIC00MjAsNyArNDM3LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9HZXRJdGVtKHNlbGYtPmRpY3QsIGtleSkgPT0gTlVMTCkgewogICAgICAgICBlcnJubyA9IEVOT0VOVDsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC01MjAsNyArNTM3LDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHBvbGxfcmVzdWx0IDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oU2VsZWN0RXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNjQ2LDYgKzY2MywzMzkgQEAKICAgICBwb2xsX21ldGhvZHMsICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KIH07CiAKKyNpZmRlZiBIQVZFX1NZU19ERVZQT0xMX0gKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgaW50IGZkX2RldnBvbGw7CisgICAgaW50IG1heF9uX2ZkczsKKyAgICBpbnQgbl9mZHM7CisgICAgc3RydWN0IHBvbGxmZCAqZmRzOworfSBkZXZwb2xsT2JqZWN0OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IGRldnBvbGxfVHlwZTsKKworc3RhdGljIGludCBkZXZwb2xsX2ZsdXNoKGRldnBvbGxPYmplY3QgKnNlbGYpCit7CisgICAgaW50IHNpemUsIG47CisKKyAgICBpZiAoIXNlbGYtPm5fZmRzKSByZXR1cm4gMDsKKworICAgIHNpemUgPSBzaXplb2Yoc3RydWN0IHBvbGxmZCkqc2VsZi0+bl9mZHM7CisgICAgc2VsZi0+bl9mZHMgPSAwOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIG4gPSB3cml0ZShzZWxmLT5mZF9kZXZwb2xsLCBzZWxmLT5mZHMsIHNpemUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAobiA9PSAtMSApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChuIDwgc2l6ZSkgeworICAgICAgICAvKgorICAgICAgICAqKiBEYXRhIHdyaXRlZCB0byAvZGV2L3BvbGwgaXMgYSBiaW5hcnkgZGF0YSBzdHJ1Y3R1cmUuIEl0IGlzIG5vdAorICAgICAgICAqKiBjbGVhciB3aGF0IHRvIGRvIGlmIGEgcGFydGlhbCB3cml0ZSBvY2N1cnJlZC4gRm9yIG5vdywgcmFpc2UKKyAgICAgICAgKiogYW4gZXhjZXB0aW9uIGFuZCBzZWUgaWYgd2UgYWN0dWFsbHkgZm91bmQgdGhpcyBwcm9ibGVtIGluCisgICAgICAgICoqIHRoZSB3aWxkLgorICAgICAgICAqKiBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTYzOTcuCisgICAgICAgICovCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLCAiZmFpbGVkIHRvIHdyaXRlIGFsbCBwb2xsZmRzLiAiCisgICAgICAgICAgICAgICAgIlBsZWFzZSwgcmVwb3J0IGF0IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvLiAiCisgICAgICAgICAgICAgICAgIkRhdGEgdG8gcmVwb3J0OiBTaXplIHRyaWVkOiAlZCwgYWN0dWFsIHNpemUgd3JpdHRlbjogJWQuIiwKKyAgICAgICAgICAgICAgICBzaXplLCBuKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ludGVybmFsX2RldnBvbGxfcmVnaXN0ZXIoZGV2cG9sbE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCByZW1vdmUpCit7CisgICAgUHlPYmplY3QgKm87CisgICAgaW50IGZkLCBldmVudHMgPSBQT0xMSU4gfCBQT0xMUFJJIHwgUE9MTE9VVDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnJlZ2lzdGVyIiwgJm8sICZldmVudHMpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcihvKTsKKyAgICBpZiAoZmQgPT0gLTEpIHJldHVybiBOVUxMOworCisgICAgaWYgKHJlbW92ZSkgeworICAgICAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmZkID0gZmQ7CisgICAgICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZXZlbnRzID0gUE9MTFJFTU9WRTsKKworICAgICAgICBpZiAoKytzZWxmLT5uX2ZkcyA9PSBzZWxmLT5tYXhfbl9mZHMpIHsKKyAgICAgICAgICAgIGlmIChkZXZwb2xsX2ZsdXNoKHNlbGYpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5mZCA9IGZkOworICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZXZlbnRzID0gZXZlbnRzOworCisgICAgaWYgKCsrc2VsZi0+bl9mZHMgPT0gc2VsZi0+bWF4X25fZmRzKSB7CisgICAgICAgIGlmIChkZXZwb2xsX2ZsdXNoKHNlbGYpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihkZXZwb2xsX3JlZ2lzdGVyX2RvYywKKyJyZWdpc3RlcihmZCBbLCBldmVudG1hc2tdICkgLT4gTm9uZVxuXG5cCitSZWdpc3RlciBhIGZpbGUgZGVzY3JpcHRvciB3aXRoIHRoZSBwb2xsaW5nIG9iamVjdC5cblwKK2ZkIC0tIGVpdGhlciBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3Qgd2l0aCBhIGZpbGVubygpIG1ldGhvZCByZXR1cm5pbmcgYW5cblwKKyAgICAgIGludC5cblwKK2V2ZW50cyAtLSBhbiBvcHRpb25hbCBiaXRtYXNrIGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgZXZlbnRzIHRvIGNoZWNrIGZvciIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGV2cG9sbF9yZWdpc3RlcihkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gaW50ZXJuYWxfZGV2cG9sbF9yZWdpc3RlcihzZWxmLCBhcmdzLCAwKTsKK30KKworUHlEb2NfU1RSVkFSKGRldnBvbGxfbW9kaWZ5X2RvYywKKyJtb2RpZnkoZmRbLCBldmVudG1hc2tdKSAtPiBOb25lXG5cblwKK01vZGlmeSBhIHBvc3NpYmxlIGFscmVhZHkgcmVnaXN0ZXJlZCBmaWxlIGRlc2NyaXB0b3IuXG5cCitmZCAtLSBlaXRoZXIgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IHdpdGggYSBmaWxlbm8oKSBtZXRob2QgcmV0dXJuaW5nIGFuXG5cCisgICAgICBpbnQuXG5cCitldmVudHMgLS0gYW4gb3B0aW9uYWwgYml0bWFzayBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIGV2ZW50cyB0byBjaGVjayBmb3IiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RldnBvbGxfbW9kaWZ5KGRldnBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBpbnRlcm5hbF9kZXZwb2xsX3JlZ2lzdGVyKHNlbGYsIGFyZ3MsIDEpOworfQorCisKK1B5RG9jX1NUUlZBUihkZXZwb2xsX3VucmVnaXN0ZXJfZG9jLAorInVucmVnaXN0ZXIoZmQpIC0+IE5vbmVcblxuXAorUmVtb3ZlIGEgZmlsZSBkZXNjcmlwdG9yIGJlaW5nIHRyYWNrZWQgYnkgdGhlIHBvbGxpbmcgb2JqZWN0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGV2cG9sbF91bnJlZ2lzdGVyKGRldnBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvKQoreworICAgIGludCBmZDsKKworICAgIGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvciggbyApOworICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmZkID0gZmQ7CisgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5ldmVudHMgPSBQT0xMUkVNT1ZFOworCisgICAgaWYgKCsrc2VsZi0+bl9mZHMgPT0gc2VsZi0+bWF4X25fZmRzKSB7CisgICAgICAgIGlmIChkZXZwb2xsX2ZsdXNoKHNlbGYpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihkZXZwb2xsX3BvbGxfZG9jLAorInBvbGwoIFt0aW1lb3V0XSApIC0+IGxpc3Qgb2YgKGZkLCBldmVudCkgMi10dXBsZXNcblxuXAorUG9sbHMgdGhlIHNldCBvZiByZWdpc3RlcmVkIGZpbGUgZGVzY3JpcHRvcnMsIHJldHVybmluZyBhIGxpc3QgY29udGFpbmluZyBcblwKK2FueSBkZXNjcmlwdG9ycyB0aGF0IGhhdmUgZXZlbnRzIG9yIGVycm9ycyB0byByZXBvcnQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXZwb2xsX3BvbGwoZGV2cG9sbE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgc3RydWN0IGR2cG9sbCBkdnA7CisgICAgUHlPYmplY3QgKnJlc3VsdF9saXN0ID0gTlVMTCwgKnRvdXQgPSBOVUxMOworICAgIGludCBwb2xsX3Jlc3VsdCwgaTsKKyAgICBsb25nIHRpbWVvdXQ7CisgICAgUHlPYmplY3QgKnZhbHVlLCAqbnVtMSwgKm51bTI7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb2xsIiwgMCwgMSwgJnRvdXQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIENoZWNrIHZhbHVlcyBmb3IgdGltZW91dCAqLworICAgIGlmICh0b3V0ID09IE5VTEwgfHwgdG91dCA9PSBQeV9Ob25lKQorICAgICAgICB0aW1lb3V0ID0gLTE7CisgICAgZWxzZSBpZiAoIVB5TnVtYmVyX0NoZWNrKHRvdXQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRvdXQgPSBQeU51bWJlcl9Mb25nKHRvdXQpOworICAgICAgICBpZiAoIXRvdXQpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgdGltZW91dCA9IFB5TG9uZ19Bc0xvbmcodG91dCk7CisgICAgICAgIFB5X0RFQ1JFRih0b3V0KTsKKyAgICAgICAgaWYgKHRpbWVvdXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICgodGltZW91dCA8IC0xKSB8fCAodGltZW91dCA+IElOVF9NQVgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgaXMgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChkZXZwb2xsX2ZsdXNoKHNlbGYpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGR2cC5kcF9mZHMgPSBzZWxmLT5mZHM7CisgICAgZHZwLmRwX25mZHMgPSBzZWxmLT5tYXhfbl9mZHM7CisgICAgZHZwLmRwX3RpbWVvdXQgPSB0aW1lb3V0OworCisgICAgLyogY2FsbCBkZXZwb2xsKCkgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcG9sbF9yZXN1bHQgPSBpb2N0bChzZWxmLT5mZF9kZXZwb2xsLCBEUF9QT0xMLCAmZHZwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHBvbGxfcmVzdWx0IDwgMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGJ1aWxkIHRoZSByZXN1bHQgbGlzdCAqLworCisgICAgcmVzdWx0X2xpc3QgPSBQeUxpc3RfTmV3KHBvbGxfcmVzdWx0KTsKKyAgICBpZiAoIXJlc3VsdF9saXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBvbGxfcmVzdWx0OyBpKyspIHsKKyAgICAgICAgICAgIG51bTEgPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmRzW2ldLmZkKTsKKyAgICAgICAgICAgIG51bTIgPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmRzW2ldLnJldmVudHMpOworICAgICAgICAgICAgaWYgKChudW0xID09IE5VTEwpIHx8IChudW0yID09IE5VTEwpKSB7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihudW0xKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKG51bTIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZSA9IFB5VHVwbGVfUGFjaygyLCBudW0xLCBudW0yKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihudW0xKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihudW0yKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoKFB5TGlzdF9TZXRJdGVtKHJlc3VsdF9saXN0LCBpLCB2YWx1ZSkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdF9saXN0OworCisgIGVycm9yOgorICAgIFB5X0RFQ1JFRihyZXN1bHRfbGlzdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBkZXZwb2xsX21ldGhvZHNbXSA9IHsKKyAgICB7InJlZ2lzdGVyIiwgICAgICAgIChQeUNGdW5jdGlvbilkZXZwb2xsX3JlZ2lzdGVyLAorICAgICBNRVRIX1ZBUkFSR1MsICBkZXZwb2xsX3JlZ2lzdGVyX2RvY30sCisgICAgeyJtb2RpZnkiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pZGV2cG9sbF9tb2RpZnksCisgICAgIE1FVEhfVkFSQVJHUywgIGRldnBvbGxfbW9kaWZ5X2RvY30sCisgICAgeyJ1bnJlZ2lzdGVyIiwgICAgICAoUHlDRnVuY3Rpb24pZGV2cG9sbF91bnJlZ2lzdGVyLAorICAgICBNRVRIX08sICAgICAgICBkZXZwb2xsX3VucmVnaXN0ZXJfZG9jfSwKKyAgICB7InBvbGwiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXZwb2xsX3BvbGwsCisgICAgIE1FVEhfVkFSQVJHUywgIGRldnBvbGxfcG9sbF9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgZGV2cG9sbE9iamVjdCAqCituZXdEZXZQb2xsT2JqZWN0KHZvaWQpCit7CisgICAgZGV2cG9sbE9iamVjdCAqc2VsZjsKKyAgICBpbnQgZmRfZGV2cG9sbCwgbGltaXRfcmVzdWx0OworICAgIHN0cnVjdCBwb2xsZmQgKmZkczsKKyAgICBzdHJ1Y3QgcmxpbWl0IGxpbWl0OworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIC8qCisgICAgKiogSWYgd2UgdHJ5IHRvIHByb2Nlc3MgbW9yZSB0aGF0IGdldHJsaW1pdCgpCisgICAgKiogZmRzLCB0aGUga2VybmVsIHdpbGwgZ2l2ZSBhbiBlcnJvciwgc28KKyAgICAqKiB3ZSBzZXQgdGhlIGxpbWl0IGhlcmUuIEl0IGlzIGEgZHluYW1pYworICAgICoqIHZhbHVlLCBiZWNhdXNlIHdlIGNhbiBjaGFuZ2UgcmxpbWl0KCkgYW55dGltZS4KKyAgICAqLworICAgIGxpbWl0X3Jlc3VsdCA9IGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmbGltaXQpOworICAgIGlmIChsaW1pdF9yZXN1bHQgIT0gLTEpCisgICAgICAgIGZkX2RldnBvbGwgPSBvcGVuKCIvZGV2L3BvbGwiLCBPX1JEV1IpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAobGltaXRfcmVzdWx0ID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChmZF9kZXZwb2xsID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZShQeUV4Y19JT0Vycm9yLCAiL2Rldi9wb2xsIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZkcyA9IFB5TWVtX05FVyhzdHJ1Y3QgcG9sbGZkLCBsaW1pdC5ybGltX2N1cik7CisgICAgaWYgKGZkcyA9PSBOVUxMKSB7CisgICAgICAgIGNsb3NlKGZkX2RldnBvbGwpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmID0gUHlPYmplY3RfTmV3KGRldnBvbGxPYmplY3QsICZkZXZwb2xsX1R5cGUpOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgY2xvc2UoZmRfZGV2cG9sbCk7CisgICAgICAgIFB5TWVtX0RFTChmZHMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2VsZi0+ZmRfZGV2cG9sbCA9IGZkX2RldnBvbGw7CisgICAgc2VsZi0+bWF4X25fZmRzID0gbGltaXQucmxpbV9jdXI7CisgICAgc2VsZi0+bl9mZHMgPSAwOworICAgIHNlbGYtPmZkcyA9IGZkczsKKworICAgIHJldHVybiBzZWxmOworfQorCitzdGF0aWMgdm9pZAorZGV2cG9sbF9kZWFsbG9jKGRldnBvbGxPYmplY3QgKnNlbGYpCit7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGNsb3NlKHNlbGYtPmZkX2RldnBvbGwpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeU1lbV9ERUwoc2VsZi0+ZmRzKTsKKworICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworc3RhdGljIFB5VHlwZU9iamVjdCBkZXZwb2xsX1R5cGUgPSB7CisgICAgLyogVGhlIG9iX3R5cGUgZmllbGQgbXVzdCBiZSBpbml0aWFsaXplZCBpbiB0aGUgbW9kdWxlIGluaXQgZnVuY3Rpb24KKyAgICAgKiB0byBiZSBwb3J0YWJsZSB0byBXaW5kb3dzIHdpdGhvdXQgdXNpbmcgQysrLiAqLworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJzZWxlY3QuZGV2cG9sbCIsICAgICAgICAgICAvKnRwX25hbWUqLworICAgIHNpemVvZihkZXZwb2xsT2JqZWN0KSwgICAgICAvKnRwX2Jhc2ljc2l6ZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilkZXZwb2xsX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgLyp0cF9mbGFncyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLworICAgIGRldnBvbGxfbWV0aG9kcywgICAgICAgICAgICAvKnRwX21ldGhvZHMqLworfTsKKyNlbmRpZiAgLyogSEFWRV9TWVNfREVWUE9MTF9IICovCisKKworCiBQeURvY19TVFJWQVIocG9sbF9kb2MsCiAiUmV0dXJucyBhIHBvbGxpbmcgb2JqZWN0LCB3aGljaCBzdXBwb3J0cyByZWdpc3RlcmluZyBhbmRcblwKIHVucmVnaXN0ZXJpbmcgZmlsZSBkZXNjcmlwdG9ycywgYW5kIHRoZW4gcG9sbGluZyB0aGVtIGZvciBJL08gZXZlbnRzLiIpOwpAQCAtNjU2LDYgKzEwMDYsMTkgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3UG9sbE9iamVjdCgpOwogfQogCisjaWZkZWYgSEFWRV9TWVNfREVWUE9MTF9ICitQeURvY19TVFJWQVIoZGV2cG9sbF9kb2MsCisiUmV0dXJucyBhIHBvbGxpbmcgb2JqZWN0LCB3aGljaCBzdXBwb3J0cyByZWdpc3RlcmluZyBhbmRcblwKK3VucmVnaXN0ZXJpbmcgZmlsZSBkZXNjcmlwdG9ycywgYW5kIHRoZW4gcG9sbGluZyB0aGVtIGZvciBJL08gZXZlbnRzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2VsZWN0X2RldnBvbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld0RldlBvbGxPYmplY3QoKTsKK30KKyNlbmRpZgorCisKICNpZmRlZiBfX0FQUExFX18KIC8qCiAgKiBPbiBzb21lIHN5c3RlbXMgcG9sbCgpIHNldHMgZXJybm8gb24gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3JzLiBXZSB0ZXN0CkBAIC03MzEsMjAgKzEwOTQsMTAgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLW5ld1B5RXBvbGxfT2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgaW50IHNpemVoaW50LCBTT0NLRVQgZmQpCituZXdQeUVwb2xsX09iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBzaXplaGludCwgaW50IGZsYWdzLCBTT0NLRVQgZmQpCiB7CiAgICAgcHlFcG9sbF9PYmplY3QgKnNlbGY7CiAKLSAgICBpZiAoc2l6ZWhpbnQgPT0gLTEpIHsKLSAgICAgICAgc2l6ZWhpbnQgPSBGRF9TRVRTSVpFLTE7Ci0gICAgfQotICAgIGVsc2UgaWYgKHNpemVoaW50IDwgMSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJzaXplaGludCBtdXN0IGJlIGdyZWF0ZXIgemVybywgZ290ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVoaW50KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgYXNzZXJ0KHR5cGUgIT0gTlVMTCAmJiB0eXBlLT50cF9hbGxvYyAhPSBOVUxMKTsKICAgICBzZWxmID0gKHB5RXBvbGxfT2JqZWN0ICopIHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzZWxmID09IE5VTEwpCkBAIC03NTIsNiArMTEwNSwxMSBAQAogCiAgICAgaWYgKGZkID09IC0xKSB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX0VQT0xMX0NSRUFURTEKKyAgICAgICAgaWYgKGZsYWdzKQorICAgICAgICAgICAgc2VsZi0+ZXBmZCA9IGVwb2xsX2NyZWF0ZTEoZmxhZ3MpOworICAgICAgICBlbHNlCisjZW5kaWYKICAgICAgICAgc2VsZi0+ZXBmZCA9IGVwb2xsX2NyZWF0ZShzaXplaGludCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfQpAQCAtNzYwLDcgKzExMTgsNyBAQAogICAgIH0KICAgICBpZiAoc2VsZi0+ZXBmZCA8IDApIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwpAQCAtNzcwLDE0ICsxMTI4LDE4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcHllcG9sbF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgaW50IHNpemVoaW50ID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzaXplaGludCIsIE5VTEx9OworICAgIGludCBmbGFncyA9IDAsIHNpemVoaW50ID0gRkRfU0VUU0laRSAtIDE7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzaXplaGludCIsICJmbGFncyIsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpOmVwb2xsIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaXplaGludCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpaTplcG9sbCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZWhpbnQsICZmbGFncykpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzaXplaGludCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBzaXplaGludCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICByZXR1cm4gbmV3UHlFcG9sbF9PYmplY3QodHlwZSwgc2l6ZWhpbnQsIC0xKTsKKyAgICByZXR1cm4gbmV3UHlFcG9sbF9PYmplY3QodHlwZSwgc2l6ZWhpbnQsIGZsYWdzLCAtMSk7CiB9CiAKIApAQCAtNzkzLDcgKzExNTUsNyBAQAogewogICAgIGVycm5vID0gcHllcG9sbF9pbnRlcm5hbF9jbG9zZShzZWxmKTsKICAgICBpZiAoZXJybm8gPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC04MzUsNyArMTE5Nyw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmZyb21mZCIsICZmZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIG5ld1B5RXBvbGxfT2JqZWN0KChQeVR5cGVPYmplY3QqKWNscywgLTEsIGZkKTsKKyAgICByZXR1cm4gbmV3UHlFcG9sbF9PYmplY3QoKFB5VHlwZU9iamVjdCopY2xzLCBGRF9TRVRTSVpFIC0gMSwgMCwgZmQpOwogfQogCiBQeURvY19TVFJWQVIocHllcG9sbF9mcm9tZmRfZG9jLApAQCAtODg2LDcgKzEyNDgsNyBAQAogICAgIH0KIAogICAgIGlmIChyZXN1bHQgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC05MTAsNyArMTI3Miw3IEBACiBQeURvY19TVFJWQVIocHllcG9sbF9yZWdpc3Rlcl9kb2MsCiAicmVnaXN0ZXIoZmRbLCBldmVudG1hc2tdKSAtPiBOb25lXG5cCiBcblwKLVJlZ2lzdGVycyBhIG5ldyBmZCBvciByYWlzZXMgYW4gSU9FcnJvciBpZiB0aGUgZmQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLlxuXAorUmVnaXN0ZXJzIGEgbmV3IGZkIG9yIHJhaXNlcyBhbiBPU0Vycm9yIGlmIHRoZSBmZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXG5cCiBmZCBpcyB0aGUgdGFyZ2V0IGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgb3BlcmF0aW9uLlxuXAogZXZlbnRzIGlzIGEgYml0IHNldCBjb21wb3NlZCBvZiB0aGUgdmFyaW91cyBFUE9MTCBjb25zdGFudHM7IHRoZSBkZWZhdWx0XG5cCiBpcyBFUE9MTF9JTiB8IEVQT0xMX09VVCB8IEVQT0xMX1BSSS5cblwKQEAgLTEwMDksNyArMTM3MSw3IEBACiAgICAgbmZkcyA9IGVwb2xsX3dhaXQoc2VsZi0+ZXBmZCwgZXZzLCBtYXhldmVudHMsIHRpbWVvdXQpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKG5mZHMgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIApAQCAtMTA2NCw3ICsxNDI2LDcgQEAKIH07CiAKIFB5RG9jX1NUUlZBUihweWVwb2xsX2RvYywKLSJzZWxlY3QuZXBvbGwoW3NpemVoaW50PS0xXSlcblwKKyJzZWxlY3QuZXBvbGwoc2l6ZWhpbnQ9LTEsIGZsYWdzPTApXG5cCiBcblwKIFJldHVybnMgYW4gZXBvbGxpbmcgb2JqZWN0XG5cCiBcblwKQEAgLTE0MDAsNyArMTc2Miw3IEBACiAgICAgfQogICAgIGlmIChzZWxmLT5rcWZkIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CkBAIC0xNDMyLDcgKzE3OTQsNyBAQAogewogICAgIGVycm5vID0ga3F1ZXVlX3F1ZXVlX2ludGVybmFsX2Nsb3NlKHNlbGYpOwogICAgIGlmIChlcnJubyA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTE0OTUsNyArMTg1Nyw3IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgc3RydWN0IGtldmVudCAqZXZsID0gTlVMTDsKICAgICBzdHJ1Y3Qga2V2ZW50ICpjaGwgPSBOVUxMOwotICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0c3BlYzsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dDsKICAgICBzdHJ1Y3QgdGltZXNwZWMgKnB0aW1lb3V0c3BlYzsKIAogICAgIGlmIChzZWxmLT5rcWZkIDwgMCkKQEAgLTE1MTUsMjggKzE4NzcsMTYgQEAKICAgICAgICAgcHRpbWVvdXRzcGVjID0gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlOdW1iZXJfQ2hlY2sob3RpbWVvdXQpKSB7Ci0gICAgICAgIGRvdWJsZSB0aW1lb3V0OwotICAgICAgICBsb25nIHNlY29uZHM7CisgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWMob3RpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRpbWVvdXQudHZfc2VjLCAmdGltZW91dC50dl9uc2VjKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIHRpbWVvdXQgPSBQeUZsb2F0X0FzRG91YmxlKG90aW1lb3V0KTsKLSAgICAgICAgaWYgKHRpbWVvdXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAodGltZW91dCA+IChkb3VibGUpTE9OR19NQVgpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IHBlcmlvZCB0b28gbG9uZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7CisgICAgICAgIGlmICh0aW1lb3V0LnR2X3NlYyA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgcG9zaXRpdmUgb3IgTm9uZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLQotICAgICAgICBzZWNvbmRzID0gKGxvbmcpdGltZW91dDsKLSAgICAgICAgdGltZW91dCA9IHRpbWVvdXQgLSAoZG91YmxlKXNlY29uZHM7Ci0gICAgICAgIHRpbWVvdXRzcGVjLnR2X3NlYyA9IHNlY29uZHM7Ci0gICAgICAgIHRpbWVvdXRzcGVjLnR2X25zZWMgPSAobG9uZykodGltZW91dCAqIDFFOSk7Ci0gICAgICAgIHB0aW1lb3V0c3BlYyA9ICZ0aW1lb3V0c3BlYzsKKyAgICAgICAgcHRpbWVvdXRzcGVjID0gJnRpbWVvdXQ7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtMTcxMyw2ICsyMDYzLDExIEBACiB9OwogCiAjZW5kaWYgLyogSEFWRV9LUVVFVUUgKi8KKworCisKKworCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KIAogUHlEb2NfU1RSVkFSKHNlbGVjdF9kb2MsCkBAIC0xNzQ0LDYgKzIwOTksOSBAQAogI2lmZGVmIEhBVkVfUE9MTAogICAgIHsicG9sbCIsICAgICAgICAgICAgc2VsZWN0X3BvbGwsICAgIE1FVEhfTk9BUkdTLCAgICBwb2xsX2RvY30sCiAjZW5kaWYgLyogSEFWRV9QT0xMICovCisjaWZkZWYgSEFWRV9TWVNfREVWUE9MTF9ICisgICAgeyJkZXZwb2xsIiwgICAgICAgICBzZWxlY3RfZGV2cG9sbCwgTUVUSF9OT0FSR1MsICAgIGRldnBvbGxfZG9jfSwKKyNlbmRpZgogICAgIHswLCAgICAgICAgIDB9LCAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTE3NjYsNiArMjEyNCw5IEBACiAgICAgTlVMTAogfTsKIAorCisKKwogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9zZWxlY3Qodm9pZCkKIHsKQEAgLTE3NzQsOSArMjEzNSw4IEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBTZWxlY3RFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic2VsZWN0LmVycm9yIiwgTlVMTCwgTlVMTCk7Ci0gICAgUHlfSU5DUkVGKFNlbGVjdEVycm9yKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgU2VsZWN0RXJyb3IpOworICAgIFB5X0lOQ1JFRihQeUV4Y19PU0Vycm9yKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgUHlFeGNfT1NFcnJvcik7CiAKICNpZmRlZiBQSVBFX0JVRgogI2lmZGVmIEhBVkVfQlJPS0VOX1BJUEVfQlVGCkBAIC0xODIzLDYgKzIxODMsMTEgQEAKICAgICB9CiAjZW5kaWYgLyogSEFWRV9QT0xMICovCiAKKyNpZmRlZiBIQVZFX1NZU19ERVZQT0xMX0gKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZkZXZwb2xsX1R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfRVBPTEwKICAgICBQeV9UWVBFKCZweUVwb2xsX1R5cGUpID0gJlB5VHlwZV9UeXBlOwogICAgIGlmIChQeVR5cGVfUmVhZHkoJnB5RXBvbGxfVHlwZSkgPCAwKQpAQCAtMTg0Nyw2ICsyMjEyLDEwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMV1JOT1JNIiwgRVBPTExXUk5PUk0pOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTFdSQkFORCIsIEVQT0xMV1JCQU5EKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRVBPTExNU0ciLCBFUE9MTE1TRyk7CisKKyNpZmRlZiBFUE9MTF9DTE9FWEVDCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMX0NMT0VYRUMiLCBFUE9MTF9DTE9FWEVDKTsKKyNlbmRpZgogI2VuZGlmIC8qIEhBVkVfRVBPTEwgKi8KIAogI2lmZGVmIEhBVkVfS1FVRVVFCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTFtb2R1bGUuYyBiL01vZHVsZXMvc2hhMW1vZHVsZS5jCmluZGV4IGIyNWJkNDQuLmE3MzNjNGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhMW1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhMW1vZHVsZS5jCkBAIC0xODQsNyArMTg0LDggQEAKICAgIEluaXRpYWxpemUgdGhlIGhhc2ggc3RhdGUKICAgIEBwYXJhbSBzaGExICAgVGhlIGhhc2ggc3RhdGUgeW91IHdpc2ggdG8gaW5pdGlhbGl6ZQogKi8KLXZvaWQgc2hhMV9pbml0KHN0cnVjdCBzaGExX3N0YXRlICpzaGExKQorc3RhdGljIHZvaWQKK3NoYTFfaW5pdChzdHJ1Y3Qgc2hhMV9zdGF0ZSAqc2hhMSkKIHsKICAgIGFzc2VydChzaGExICE9IE5VTEwpOwogICAgc2hhMS0+c3RhdGVbMF0gPSAweDY3NDUyMzAxVUw7CkBAIC0yMDIsNyArMjAzLDggQEAKICAgIEBwYXJhbSBpbiAgICAgVGhlIGRhdGEgdG8gaGFzaAogICAgQHBhcmFtIGlubGVuICBUaGUgbGVuZ3RoIG9mIHRoZSBkYXRhIChvY3RldHMpCiAqLwotdm9pZCBzaGExX3Byb2Nlc3Moc3RydWN0IHNoYTFfc3RhdGUgKnNoYTEsCitzdGF0aWMgdm9pZAorc2hhMV9wcm9jZXNzKHN0cnVjdCBzaGExX3N0YXRlICpzaGExLAogICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIFB5X3NzaXplX3QgaW5sZW4pCiB7CiAgICAgUHlfc3NpemVfdCBuOwpAQCAtMjE4LDcgKzIyMCw3IEBACiAgICAgICAgICAgIGluICAgICAgICAgICAgICs9IFNIQTFfQkxPQ0tTSVpFOwogICAgICAgICAgICBpbmxlbiAgICAgICAgICAtPSBTSEExX0JMT0NLU0laRTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgbiA9IE1JTihpbmxlbiwgKFNIQTFfQkxPQ0tTSVpFIC0gc2hhMS0+Y3VybGVuKSk7CisgICAgICAgICAgIG4gPSBNSU4oaW5sZW4sIChQeV9zc2l6ZV90KShTSEExX0JMT0NLU0laRSAtIHNoYTEtPmN1cmxlbikpOwogICAgICAgICAgICBtZW1jcHkoc2hhMS0+YnVmICsgc2hhMS0+Y3VybGVuLCBpbiwgKHNpemVfdCluKTsKICAgICAgICAgICAgc2hhMS0+Y3VybGVuICAgKz0gbjsKICAgICAgICAgICAgaW4gICAgICAgICAgICAgKz0gbjsKQEAgLTIzNyw3ICsyMzksOCBAQAogICAgQHBhcmFtIHNoYTEgIFRoZSBoYXNoIHN0YXRlCiAgICBAcGFyYW0gb3V0IFtvdXRdIFRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgaGFzaCAoMjAgYnl0ZXMpCiAqLwotdm9pZCBzaGExX2RvbmUoc3RydWN0IHNoYTFfc3RhdGUgKnNoYTEsIHVuc2lnbmVkIGNoYXIgKm91dCkKK3N0YXRpYyB2b2lkCitzaGExX2RvbmUoc3RydWN0IHNoYTFfc3RhdGUgKnNoYTEsIHVuc2lnbmVkIGNoYXIgKm91dCkKIHsKICAgICBpbnQgaTsKIApAQCAtMzUyLDcgKzM1NSw3IEBACiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBMV9ESUdFU1RTSVpFXTsKICAgICBzdHJ1Y3Qgc2hhMV9zdGF0ZSB0ZW1wOwogICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgUHlfVU5JQ09ERSAqaGV4X2RpZ2VzdDsKKyAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwogICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCkBAIC0zNjAsMjUgKzM2MywyMCBAQAogICAgIHNoYTFfZG9uZSgmdGVtcCwgZGlnZXN0KTsKIAogICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU0hBMV9ESUdFU1RTSVpFICogMik7CisgICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhTSEExX0RJR0VTVFNJWkUgKiAyLCAxMjcpOwogICAgIGlmICghcmV0dmFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJldHZhbCk7Ci0gICAgaWYgKCFoZXhfZGlnZXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKIAogICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwogICAgIGZvcihpPWo9MDsgaTxTSEExX0RJR0VTVFNJWkU7IGkrKykgewotICAgICAgICBjaGFyIGM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCmluZGV4IDg2MTcyMTAuLjc2ZDkxYWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYwpAQCAtNDQ1LDcgKzQ0NSw3IEBACiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBX0RJR0VTVFNJWkVdOwogICAgIFNIQW9iamVjdCB0ZW1wOwogICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgUHlfVU5JQ09ERSAqaGV4X2RpZ2VzdDsKKyAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwogICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCkBAIC00NTMsMjUgKzQ1MywyMCBAQAogICAgIHNoYV9maW5hbChkaWdlc3QsICZ0ZW1wKTsKIAogICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZi0+ZGlnZXN0c2l6ZSAqIDIpOworICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoc2VsZi0+ZGlnZXN0c2l6ZSAqIDIsIDEyNyk7CiAgICAgaWYgKCFyZXR2YWwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmV0dmFsKTsKLSAgICBpZiAoIWhleF9kaWdlc3QpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXR2YWwpOwogCiAgICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCiAgICAgZm9yKGk9aj0wOyBpPHNlbGYtPmRpZ2VzdHNpemU7IGkrKykgewotICAgICAgICBjaGFyIGM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCmluZGV4IDBmYWFmNWMuLjg4ZjhhNjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwpAQCAtNTExLDcgKzUxMSw3IEBACiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBX0RJR0VTVFNJWkVdOwogICAgIFNIQW9iamVjdCB0ZW1wOwogICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgUHlfVU5JQ09ERSAqaGV4X2RpZ2VzdDsKKyAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwogICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCkBAIC01MTksMjUgKzUxOSwyMCBAQAogICAgIHNoYTUxMl9maW5hbChkaWdlc3QsICZ0ZW1wKTsKIAogICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZi0+ZGlnZXN0c2l6ZSAqIDIpOworICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoc2VsZi0+ZGlnZXN0c2l6ZSAqIDIsIDEyNyk7CiAgICAgaWYgKCFyZXR2YWwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmV0dmFsKTsKLSAgICBpZiAoIWhleF9kaWdlc3QpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXR2YWwpOwogCiAgICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCiAgICAgZm9yIChpPWo9MDsgaTxzZWxmLT5kaWdlc3RzaXplOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwppbmRleCAzMmNkOGJiLi4yZWI3ZjI5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKQEAgLTIyLDYgKzIyLDE0IEBACiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNlbmRpZgogCisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfU0lHTUFTSykgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUFRIUkVBRF9TSUdNQVNLKQorIyAgZGVmaW5lIFBZUFRIUkVBRF9TSUdNQVNLCisjZW5kaWYKKworI2lmIGRlZmluZWQoUFlQVEhSRUFEX1NJR01BU0spICYmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0gpCisjICBpbmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKKwogI2lmbmRlZiBTSUdfRVJSCiAjZGVmaW5lIFNJR19FUlIgKChQeU9TX3NpZ2hhbmRsZXJfdCkoLTEpKQogI2VuZGlmCkBAIC0xMDEsNiArMTA5LDEwIEBACiAKIHN0YXRpYyBQeU9TX3NpZ2hhbmRsZXJfdCBvbGRfc2lnaW50aGFuZGxlciA9IFNJR19ERkw7CiAKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgSEFORExFIHNpZ2ludF9ldmVudCA9IE5VTEw7CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfR0VUSVRJTUVSCiBzdGF0aWMgUHlPYmplY3QgKkl0aW1lckVycm9yOwogCkBAIC0xNjgsMTUgKzE4MCwxOSBAQAogc3RhdGljIHZvaWQKIHRyaXBfc2lnbmFsKGludCBzaWdfbnVtKQogeworICAgIHVuc2lnbmVkIGNoYXIgYnl0ZTsKKwogICAgIEhhbmRsZXJzW3NpZ19udW1dLnRyaXBwZWQgPSAxOworICAgIGlmICh3YWtldXBfZmQgIT0gLTEpIHsKKyAgICAgICAgYnl0ZSA9ICh1bnNpZ25lZCBjaGFyKXNpZ19udW07CisgICAgICAgIHdyaXRlKHdha2V1cF9mZCwgJmJ5dGUsIDEpOworICAgIH0KICAgICBpZiAoaXNfdHJpcHBlZCkKICAgICAgICAgcmV0dXJuOwogICAgIC8qIFNldCBpc190cmlwcGVkIGFmdGVyIHNldHRpbmcgLnRyaXBwZWQsIGFzIGl0IGdldHMKICAgICAgICBjbGVhcmVkIGluIFB5RXJyX0NoZWNrU2lnbmFscygpIGJlZm9yZSAudHJpcHBlZC4gKi8KICAgICBpc190cmlwcGVkID0gMTsKICAgICBQeV9BZGRQZW5kaW5nQ2FsbChjaGVja3NpZ25hbHNfd2l0aGFyZywgTlVMTCk7Ci0gICAgaWYgKHdha2V1cF9mZCAhPSAtMSkKLSAgICAgICAgd3JpdGUod2FrZXVwX2ZkLCAiXDAiLCAxKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTIxNyw2ICsyMzMsMTEgQEAKICAgICAvKiBJc3N1ZSAjMTAzMTE6IGFzeW5jaHJvbm91c2x5IGV4ZWN1dGluZyBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIG5vdAogICAgICAgIG11dGF0ZSBlcnJubyB1bmRlciB0aGUgZmVldCBvZiB1bnN1c3BlY3RpbmcgQyBjb2RlLiAqLwogICAgIGVycm5vID0gc2F2ZV9lcnJubzsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoc2lnX251bSA9PSBTSUdJTlQpCisgICAgICAgIFNldEV2ZW50KHNpZ2ludF9ldmVudCk7CisjZW5kaWYKIH0KIAogCkBAIC0zMTMsNyArMzM0LDcgQEAKICAgICBlbHNlCiAgICAgICAgIGZ1bmMgPSBzaWduYWxfaGFuZGxlcjsKICAgICBpZiAoUHlPU19zZXRzaWcoc2lnX251bSwgZnVuYykgPT0gU0lHX0VSUikgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfUnVudGltZUVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgb2xkX2hhbmRsZXIgPSBIYW5kbGVyc1tzaWdfbnVtXS5mdW5jOwpAQCAtMzgyLDcgKzQwMyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoc2lnaW50ZXJydXB0KHNpZ19udW0sIGZsYWcpPDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC00OTUsNiArNTE2LDM0MSBAQAogUmV0dXJucyBjdXJyZW50IHZhbHVlIG9mIGdpdmVuIGl0aW1lci4iKTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChQWVBUSFJFQURfU0lHTUFTSykgfHwgZGVmaW5lZChIQVZFX1NJR1dBSVQpIHx8IFwKKyAgICAgICAgZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKSB8fCBkZWZpbmVkKEhBVkVfU0lHVElNRURXQUlUKQorLyogQ29udmVydCBhbiBpdGVyYWJsZSB0byBhIHNpZ3NldC4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJldHVybiAtMSBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLiAqLworCitzdGF0aWMgaW50CitpdGVyYWJsZV90b19zaWdzZXQoUHlPYmplY3QgKml0ZXJhYmxlLCBzaWdzZXRfdCAqbWFzaykKK3sKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlPYmplY3QgKml0ZXJhdG9yLCAqaXRlbTsKKyAgICBsb25nIHNpZ251bTsKKyAgICBpbnQgZXJyOworCisgICAgc2lnZW1wdHlzZXQobWFzayk7CisKKyAgICBpdGVyYXRvciA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOworICAgIGlmIChpdGVyYXRvciA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgd2hpbGUgKDEpCisgICAgeworICAgICAgICBpdGVtID0gUHlJdGVyX05leHQoaXRlcmF0b3IpOworICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgc2lnbnVtID0gUHlMb25nX0FzTG9uZyhpdGVtKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICBpZiAoc2lnbnVtID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoMCA8IHNpZ251bSAmJiBzaWdudW0gPCBOU0lHKQorICAgICAgICAgICAgZXJyID0gc2lnYWRkc2V0KG1hc2ssIChpbnQpc2lnbnVtKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJyID0gMTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCBudW1iZXIgJWxkIG91dCBvZiByYW5nZSIsIHNpZ251bSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdCA9IDA7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoaXRlcmF0b3IpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoUFlQVEhSRUFEX1NJR01BU0spIHx8IGRlZmluZWQoSEFWRV9TSUdQRU5ESU5HKQorc3RhdGljIFB5T2JqZWN0Kgorc2lnc2V0X3RvX3NldChzaWdzZXRfdCBtYXNrKQoreworICAgIFB5T2JqZWN0ICpzaWdudW0sICpyZXN1bHQ7CisgICAgaW50IHNpZzsKKworICAgIHJlc3VsdCA9IFB5U2V0X05ldygwKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChzaWcgPSAxOyBzaWcgPCBOU0lHOyBzaWcrKykgeworICAgICAgICBpZiAoc2lnaXNtZW1iZXIoJm1hc2ssIHNpZykgIT0gMSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBpdCBpcyBhIG1lbWJlciBieSBhZGRpbmcgdGhlIHNpZ25hbCB0bworICAgICAgICAgICB0aGUgcmVzdWx0IGxpc3QuICBJZ25vcmUgdGhlIG90aGVyIGNhc2VzIGJlY2F1c2UgdGhleSBtZWFuIHRoZQorICAgICAgICAgICBzaWduYWwgaXNuJ3QgYSBtZW1iZXIgb2YgdGhlIG1hc2sgb3IgdGhlIHNpZ25hbCB3YXMgaW52YWxpZCwKKyAgICAgICAgICAgYW5kIGFuIGludmFsaWQgc2lnbmFsIG11c3QgaGF2ZSBiZWVuIG91ciBmYXVsdCBpbiBjb25zdHJ1Y3RpbmcKKyAgICAgICAgICAgdGhlIGxvb3AgYm91bmRhcmllcy4gKi8KKyAgICAgICAgc2lnbnVtID0gUHlMb25nX0Zyb21Mb25nKHNpZyk7CisgICAgICAgIGlmIChzaWdudW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlTZXRfQWRkKHJlc3VsdCwgc2lnbnVtKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNpZ251bSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihzaWdudW0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKyNpZmRlZiBQWVBUSFJFQURfU0lHTUFTSworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wdGhyZWFkX3NpZ21hc2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBob3c7CisgICAgUHlPYmplY3QgKnNpZ25hbHM7CisgICAgc2lnc2V0X3QgbWFzaywgcHJldmlvdXM7CisgICAgaW50IGVycjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cHRocmVhZF9zaWdtYXNrIiwgJmhvdywgJnNpZ25hbHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJm1hc2spKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGVyciA9IHB0aHJlYWRfc2lnbWFzayhob3csICZtYXNrLCAmcHJldmlvdXMpOworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBpZiBzaWduYWxzIHdhcyB1bmJsb2NrZWQsIHNpZ25hbCBoYW5kbGVycyBoYXZlIGJlZW4gY2FsbGVkICovCisgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBzaWdzZXRfdG9fc2V0KHByZXZpb3VzKTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9wdGhyZWFkX3NpZ21hc2tfZG9jLAorInB0aHJlYWRfc2lnbWFzayhob3csIG1hc2spIC0+IG9sZCBtYXNrXG5cCitcblwKK0ZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4iKTsKKyNlbmRpZiAgIC8qICNpZmRlZiBQWVBUSFJFQURfU0lHTUFTSyAqLworCisKKyNpZmRlZiBIQVZFX1NJR1BFTkRJTkcKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lncGVuZGluZyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBpbnQgZXJyOworICAgIHNpZ3NldF90IG1hc2s7CisgICAgZXJyID0gc2lncGVuZGluZygmbWFzayk7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICByZXR1cm4gc2lnc2V0X3RvX3NldChtYXNrKTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWdwZW5kaW5nX2RvYywKKyJzaWdwZW5kaW5nKCkgLT4gbGlzdFxuXAorXG5cCitFeGFtaW5lIHBlbmRpbmcgc2lnbmFscy4iKTsKKyNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1BFTkRJTkcgKi8KKworCisjaWZkZWYgSEFWRV9TSUdXQUlUCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3dhaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpzaWduYWxzOworICAgIHNpZ3NldF90IHNldDsKKyAgICBpbnQgZXJyLCBzaWdudW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c2lnd2FpdCIsICZzaWduYWxzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZzZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBlcnIgPSBzaWd3YWl0KCZzZXQsICZzaWdudW0pOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGVycikgeworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNpZ251bSk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdF9kb2MsCisic2lnd2FpdChzaWdzZXQpIC0+IHNpZ251bVxuXAorXG5cCitXYWl0IGEgc2lnbmFsLiIpOworI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHUEVORElORyAqLworCisjaWYgZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKSB8fCBkZWZpbmVkKEhBVkVfU0lHVElNRURXQUlUKQorc3RhdGljIGludCBpbml0aWFsaXplZDsKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHN0cnVjdF9zaWdpbmZvX2ZpZWxkc1tdID0geworICAgIHsic2lfc2lnbm8iLCAgICAgICAgInNpZ25hbCBudW1iZXIifSwKKyAgICB7InNpX2NvZGUiLCAgICAgICAgICJzaWduYWwgY29kZSJ9LAorICAgIHsic2lfZXJybm8iLCAgICAgICAgImVycm5vIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNpZ25hbCJ9LAorICAgIHsic2lfcGlkIiwgICAgICAgICAgInNlbmRpbmcgcHJvY2VzcyBJRCJ9LAorICAgIHsic2lfdWlkIiwgICAgICAgICAgInJlYWwgdXNlciBJRCBvZiBzZW5kaW5nIHByb2Nlc3MifSwKKyAgICB7InNpX3N0YXR1cyIsICAgICAgICJleGl0IHZhbHVlIG9yIHNpZ25hbCJ9LAorICAgIHsic2lfYmFuZCIsICAgICAgICAgImJhbmQgZXZlbnQgZm9yIFNJR1BPTEwifSwKKyAgICB7MH0KK307CisKK1B5RG9jX1NUUlZBUihzdHJ1Y3Rfc2lnaW5mb19fZG9jX18sCisic3RydWN0X3NpZ2luZm86IFJlc3VsdCBmcm9tIHNpZ3dhaXRpbmZvIG9yIHNpZ3RpbWVkd2FpdC5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisoc2lfc2lnbm8sIHNpX2NvZGUsIHNpX2Vycm5vLCBzaV9waWQsIHNpX3VpZCwgc2lfc3RhdHVzLCBzaV9iYW5kKSxcblwKK29yIHZpYSB0aGUgYXR0cmlidXRlcyBzaV9zaWdubywgc2lfY29kZSwgYW5kIHNvIG9uLiIpOworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHN0cnVjdF9zaWdpbmZvX2Rlc2MgPSB7CisgICAgInNpZ25hbC5zdHJ1Y3Rfc2lnaW5mbyIsICAgICAgICAgICAvKiBuYW1lICovCisgICAgc3RydWN0X3NpZ2luZm9fX2RvY19fLCAgICAgICAvKiBkb2MgKi8KKyAgICBzdHJ1Y3Rfc2lnaW5mb19maWVsZHMsICAgICAgIC8qIGZpZWxkcyAqLworICAgIDcgICAgICAgICAgLyogbl9pbl9zZXF1ZW5jZSAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBTaWdpbmZvVHlwZTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZpbGxfc2lnaW5mbyhzaWdpbmZvX3QgKnNpKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmU2lnaW5mb1R5cGUpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAwLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLT5zaV9zaWdubykpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMSwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS0+c2lfY29kZSkpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMiwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS0+c2lfZXJybm8pKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDMsIFB5TG9uZ19Gcm9tUGlkKHNpLT5zaV9waWQpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgNCwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS0+c2lfdWlkKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLT5zaV9zdGF0dXMpKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDYsIFB5TG9uZ19Gcm9tTG9uZyhzaS0+c2lfYmFuZCkpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3dhaXRpbmZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqc2lnbmFsczsKKyAgICBzaWdzZXRfdCBzZXQ7CisgICAgc2lnaW5mb190IHNpOworICAgIGludCBlcnI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c2lnd2FpdGluZm8iLCAmc2lnbmFscykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWduYWxzLCAmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgZXJyID0gc2lnd2FpdGluZm8oJnNldCwgJnNpKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChlcnIgPT0gLTEpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisKKyAgICByZXR1cm4gZmlsbF9zaWdpbmZvKCZzaSk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdGluZm9fZG9jLAorInNpZ3dhaXRpbmZvKHNpZ3NldCkgLT4gc3RydWN0X3NpZ2luZm9cblwKK1xuXAorV2FpdCBzeW5jaHJvbm91c2x5IGZvciBhIHNpZ25hbCB1bnRpbCBvbmUgb2YgdGhlIHNpZ25hbHMgaW4gKnNpZ3NldCogaXNcblwKK2RlbGl2ZXJlZC5cblwKK1JldHVybnMgYSBzdHJ1Y3Rfc2lnaW5mbyBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaWduYWwuIik7CisjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdXQUlUSU5GTyAqLworCisjaWZkZWYgSEFWRV9TSUdUSU1FRFdBSVQKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lndGltZWR3YWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqc2lnbmFscywgKnRpbWVvdXQ7CisgICAgc3RydWN0IHRpbWVzcGVjIGJ1ZjsKKyAgICBzaWdzZXRfdCBzZXQ7CisgICAgc2lnaW5mb190IHNpOworICAgIGludCBlcnI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnNpZ3RpbWVkd2FpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZzaWduYWxzLCAmdGltZW91dCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyh0aW1lb3V0LCAmYnVmLnR2X3NlYywgJmJ1Zi50dl9uc2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoYnVmLnR2X3NlYyA8IDAgfHwgYnVmLnR2X25zZWMgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidGltZW91dCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZzZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBlcnIgPSBzaWd0aW1lZHdhaXQoJnNldCwgJnNpLCAmYnVmKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChlcnIgPT0gLTEpIHsKKyAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIH0KKworICAgIHJldHVybiBmaWxsX3NpZ2luZm8oJnNpKTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd0aW1lZHdhaXRfZG9jLAorInNpZ3RpbWVkd2FpdChzaWdzZXQsICh0aW1lb3V0X3NlYywgdGltZW91dF9uc2VjKSkgLT4gc3RydWN0X3NpZ2luZm9cblwKK1xuXAorTGlrZSBzaWd3YWl0aW5mbygpLCBidXQgd2l0aCBhIHRpbWVvdXQgc3BlY2lmaWVkIGFzIGEgdHVwbGUgb2YgKHNlY29uZHMsXG5cCituYW5vc2Vjb25kcykuIik7CisjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdUSU1FRFdBSVQgKi8KKworCisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcHRocmVhZF9raWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBsb25nIHRpZDsKKyAgICBpbnQgc2lnbnVtOworICAgIGludCBlcnI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImxpOnB0aHJlYWRfa2lsbCIsICZ0aWQsICZzaWdudW0pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGVyciA9IHB0aHJlYWRfa2lsbCgocHRocmVhZF90KXRpZCwgc2lnbnVtKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogdGhlIHNpZ25hbCBtYXkgaGF2ZSBiZWVuIHNlbmQgdG8gdGhlIGN1cnJlbnQgdGhyZWFkICovCisgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2lnbmFsX3B0aHJlYWRfa2lsbF9kb2MsCisicHRocmVhZF9raWxsKHRocmVhZF9pZCwgc2lnbnVtKVxuXAorXG5cCitTZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkLiIpOworI2VuZGlmICAgLyogI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0tJTEwpICYmIGRlZmluZWQoV0lUSF9USFJFQUQpICovCisKKwogCiAvKiBMaXN0IG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgKi8KIHN0YXRpYyBQeU1ldGhvZERlZiBzaWduYWxfbWV0aG9kc1tdID0gewpAQCAtNTE1LDEwICs4NzEsMzQgQEAKICNlbmRpZgogI2lmZGVmIEhBVkVfUEFVU0UKICAgICB7InBhdXNlIiwgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wYXVzZSwKLSAgICAgTUVUSF9OT0FSR1MscGF1c2VfZG9jfSwKKyAgICAgTUVUSF9OT0FSR1MsIHBhdXNlX2RvY30sCiAjZW5kaWYKICAgICB7ImRlZmF1bHRfaW50X2hhbmRsZXIiLCBzaWduYWxfZGVmYXVsdF9pbnRfaGFuZGxlciwKICAgICAgTUVUSF9WQVJBUkdTLCBkZWZhdWx0X2ludF9oYW5kbGVyX2RvY30sCisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKKyAgICB7InB0aHJlYWRfa2lsbCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX2tpbGwsCisgICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfa2lsbF9kb2N9LAorI2VuZGlmCisjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sKKyAgICB7InB0aHJlYWRfc2lnbWFzayIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX3NpZ21hc2ssCisgICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfc2lnbWFza19kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TSUdQRU5ESU5HCisgICAgeyJzaWdwZW5kaW5nIiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lncGVuZGluZywKKyAgICAgTUVUSF9OT0FSR1MsIHNpZ25hbF9zaWdwZW5kaW5nX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NJR1dBSVQKKyAgICB7InNpZ3dhaXQiLCAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd3YWl0LAorICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWd3YWl0X2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPCisgICAgeyJzaWd3YWl0aW5mbyIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lnd2FpdGluZm8sCisgICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3dhaXRpbmZvX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVAorICAgIHsic2lndGltZWR3YWl0IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3RpbWVkd2FpdCwKKyAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lndGltZWR3YWl0X2RvY30sCisjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC01ODcsNiArOTY3LDE1IEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyNpZiBkZWZpbmVkKEhBVkVfU0lHV0FJVElORk8pIHx8IGRlZmluZWQoSEFWRV9TSUdUSU1FRFdBSVQpCisgICAgaWYgKCFpbml0aWFsaXplZCkKKyAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmU2lnaW5mb1R5cGUsICZzdHJ1Y3Rfc2lnaW5mb19kZXNjKTsKKworICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKSAmU2lnaW5mb1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RydWN0X3NpZ2luZm8iLCAoUHlPYmplY3QqKSAmU2lnaW5mb1R5cGUpOworICAgIGluaXRpYWxpemVkID0gMTsKKyNlbmRpZgorCiAgICAgLyogQWRkIHNvbWUgc3ltYm9saWMgY29uc3RhbnRzIHRvIHRoZSBtb2R1bGUgKi8KICAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKIApAQCAtNjAzLDYgKzk5MiwxOSBAQAogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgUHlfREVDUkVGKHgpOwogCisjaWZkZWYgU0lHX0JMT0NLCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR19CTE9DSykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CisjZW5kaWYKKyNpZmRlZiBTSUdfVU5CTE9DSworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdfVU5CTE9DSykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CisjZW5kaWYKKyNpZmRlZiBTSUdfU0VUTUFTSworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdfU0VUTUFTSykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CisjZW5kaWYKKwogICAgIHggPSBJbnRIYW5kbGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgImRlZmF1bHRfaW50X2hhbmRsZXIiKTsKICAgICBpZiAoIXgpCiAgICAgICAgIGdvdG8gZmluYWxseTsKQEAgLTg1NSw2ICsxMjU3LDExIEBACiAgICAgUHlfREVDUkVGKHgpOwogI2VuZGlmCiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogQ3JlYXRlIG1hbnVhbC1yZXNldCBldmVudCwgaW5pdGlhbGx5IHVuc2V0ICovCisgICAgc2lnaW50X2V2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIEZBTFNFKTsKKyNlbmRpZgorCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICBtID0gTlVMTDsKQEAgLTEwMDEsMyArMTQwOCwyNSBAQAogICAgIF9QeUltcG9ydF9SZUluaXRMb2NrKCk7CiAjZW5kaWYKIH0KKworaW50CitfUHlPU19Jc01haW5UaHJlYWQodm9pZCkKK3sKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHJldHVybiBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkgPT0gbWFpbl90aHJlYWQ7CisjZWxzZQorICAgIHJldHVybiAxOworI2VuZGlmCit9CisKKyNpZmRlZiBNU19XSU5ET1dTCit2b2lkICpfUHlPU19TaWdpbnRFdmVudCh2b2lkKQoreworICAgIC8qIFJldHVybnMgYSBtYW51YWwtcmVzZXQgZXZlbnQgd2hpY2ggZ2V0cyB0cmlwcGVkIHdoZW5ldmVyCisgICAgICAgU0lHSU5UIGlzIHJlY2VpdmVkLgorCisgICAgICAgUHl0aG9uLmggZG9lcyBub3QgaW5jbHVkZSB3aW5kb3dzLmggc28gd2UgZG8gY2Fubm90IHVzZSBIQU5ETEUKKyAgICAgICBhcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhpcyBmdW5jdGlvbi4gIFdlIHVzZSB2b2lkKiBpbnN0ZWFkLiAqLworICAgIHJldHVybiBzaWdpbnRfZXZlbnQ7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCmluZGV4IDRmODk2ZmQuLjcxNzY2NzQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwpAQCAtNDIsNiArNDIsOSBAQAogLSBzb2NrZXQuaW5ldF9udG9hKHBhY2tlZCBJUCkgLT4gSVAgYWRkcmVzcyBzdHJpbmcKIC0gc29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkgLT4gTm9uZSB8IGZsb2F0CiAtIHNvY2tldC5zZXRkZWZhdWx0dGltZW91dChOb25lIHwgZmxvYXQpCistIHNvY2tldC5pZl9uYW1laW5kZXgoKSAtPiBsaXN0IG9mIHR1cGxlcyAoaWZfaW5kZXgsIGlmX25hbWUpCistIHNvY2tldC5pZl9uYW1ldG9pbmRleChuYW1lKSAtPiBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBpbmRleAorLSBzb2NrZXQuaWZfaW5kZXh0b25hbWUoaW5kZXgpIC0+IGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIG5hbWUKIC0gYW4gSW50ZXJuZXQgc29ja2V0IGFkZHJlc3MgaXMgYSBwYWlyIChob3N0bmFtZSwgcG9ydCkKICAgd2hlcmUgaG9zdG5hbWUgY2FuIGJlIGFueXRoaW5nIHJlY29nbml6ZWQgYnkgZ2V0aG9zdGJ5bmFtZSgpCiAgIChpbmNsdWRpbmcgdGhlIGRkLmRkLmRkLmRkIG5vdGF0aW9uKSBhbmQgcG9ydCBpcyBpbiBob3N0IGJ5dGUgb3JkZXIKQEAgLTEzMyw2ICsxMzYsOSBAQAogc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpIC0tIHNldCBzb2NrZXQgb3B0aW9uc1xuXAogc2V0dGltZW91dChOb25lIHwgZmxvYXQpIC0tIHNldCBvciBjbGVhciB0aGUgdGltZW91dFxuXAogc2h1dGRvd24oaG93KSAtLSBzaHV0IGRvd24gdHJhZmZpYyBpbiBvbmUgb3IgYm90aCBkaXJlY3Rpb25zXG5cCitpZl9uYW1laW5kZXgoKSAtLSByZXR1cm4gYWxsIG5ldHdvcmsgaW50ZXJmYWNlIGluZGljZXMgYW5kIG5hbWVzXG5cCitpZl9uYW1ldG9pbmRleChuYW1lKSAtLSByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIGluZGV4XG5cCitpZl9pbmRleHRvbmFtZShpbmRleCkgLS0gcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBuYW1lXG5cCiBcblwKICBbKl0gbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zISIpOwogCkBAIC0xNTAsMTIgKzE1NiwxNiBAQAogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKQorIyBpbmNsdWRlIDxzeXMvdWlvLmg+CisjZW5kaWYKKwogI2lmbmRlZiBXSVRIX1RIUkVBRAogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgotIyBpZiBkZWZpbmVkKF9BSVgpIHx8IGRlZmluZWQoX19vc2ZfXykKKyMgaWYgZGVmaW5lZChfQUlYKQogIyAgZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAjIGVsaWYgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX3NnaSkKICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwpAQCAtMjA4LDYgKzIxOCwxMSBAQAogIyAgaW5jbHVkZSA8aW9jdGwuaD4KICNlbmRpZgogCisjaWZkZWYgX19BUFBMRV9fCisjIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2VuZGlmCisKKwogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAjIGRlZmluZSAgSU5DTF9ET1MKICMgZGVmaW5lICBJTkNMX0RPU0VSUk9SUwpAQCAtMjUwLDYgKzI2NSwxNCBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisKIC8qIEdlbmVyaWMgc29ja2V0IG9iamVjdCBkZWZpbml0aW9ucyBhbmQgaW5jbHVkZXMgKi8KICNkZWZpbmUgUHlTb2NrZXRfQlVJTERJTkdfU09DS0VUCiAjaW5jbHVkZSAic29ja2V0bW9kdWxlLmgiCkBAIC0yNjAsNiArMjgzLDcgQEAKIAogLyogTm9uLU1TIFdJTkRPV1MgaW5jbHVkZXMgKi8KICMgaW5jbHVkZSA8bmV0ZGIuaD4KKyMgaW5jbHVkZSA8dW5pc3RkLmg+CiAKIC8qIEhlYWRlcnMgbmVlZGVkIGZvciBpbmV0X250b2EoKSBhbmQgaW5ldF9hZGRyKCkgKi8KICMgaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX1ZBQ1BQKQpAQCAtMzU3LDcgKzM4MSw3IEBACiAgICAgICAgIHJldHVybiBJTlZBTElEX1NPQ0tFVDsKIAogICAgIHJldHVybiBXU0FTb2NrZXQoRlJPTV9QUk9UT0NPTF9JTkZPLCBGUk9NX1BST1RPQ09MX0lORk8sCi0gICAgICAgICAgICAgICAgICAgICBGUk9NX1BST1RPQ09MX0lORk8sICZpbmZvLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgIEZST01fUFJPVE9DT0xfSU5GTywgJmluZm8sIDAsIFdTQV9GTEFHX09WRVJMQVBQRUQpOwogfQogI2RlZmluZSBTT0NLRVRDTE9TRSBjbG9zZXNvY2tldAogI2Vsc2UKQEAgLTM2Niw2ICszOTAsNyBAQAogI2VuZGlmCiAKICNpZmRlZiBNU19XSU4zMgorI3VuZGVmIEVBRk5PU1VQUE9SVAogI2RlZmluZSBFQUZOT1NVUFBPUlQgV1NBRUFGTk9TVVBQT1JUCiAjZGVmaW5lIHNucHJpbnRmIF9zbnByaW50ZgogI2VuZGlmCkBAIC00MTcsNyArNDQyLDggQEAKICNkZWZpbmUgU0VHTUVOVF9TSVpFICgzMiAqIDEwMjQgLTEpCiAjZW5kaWYKIAotI2RlZmluZSBTQVMyU0EoeCkgICAgICAgKChzdHJ1Y3Qgc29ja2FkZHIgKikoeCkpCisvKiBDb252ZXJ0ICJzb2NrX2FkZHJfdCAqIiB0byAic3RydWN0IHNvY2thZGRyICoiLiAqLworI2RlZmluZSBTQVMyU0EoeCkgICAgICAgKCYoKHgpLT5zYSkpCiAKIC8qCiAgKiBDb25zdGFudHMgZm9yIGdldG5hbWVpbmZvKCkKQEAgLTQzOCw3ICs0NjQsNiBAQAogCiAvKiBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUgZXhjZXB0aW9uIHR5cGUgZm9yIGVycm9ycyBkZXRlY3RlZAogICAgYnkgdGhpcyBtb2R1bGUgKGJ1dCBub3QgYXJndW1lbnQgdHlwZSBvciBtZW1vcnkgZXJyb3JzLCBldGMuKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqc29ja2V0X2Vycm9yOwogc3RhdGljIFB5T2JqZWN0ICpzb2NrZXRfaGVycm9yOwogc3RhdGljIFB5T2JqZWN0ICpzb2NrZXRfZ2FpZXJyb3I7CiBzdGF0aWMgUHlPYmplY3QgKnNvY2tldF90aW1lb3V0OwpAQCAtNDU1LDYgKzQ4MCwxNyBAQAogI2luY2x1ZGUgPHN5cy9wb2xsLmg+CiAjZW5kaWYKIAorLyogTGFyZ2VzdCB2YWx1ZSB0byB0cnkgdG8gc3RvcmUgaW4gYSBzb2NrbGVuX3QgKHVzZWQgd2hlbiBoYW5kbGluZworICAgYW5jaWxsYXJ5IGRhdGEpLiAgUE9TSVggcmVxdWlyZXMgc29ja2xlbl90IHRvIGhvbGQgYXQgbGVhc3QKKyAgICgyKiozMSktMSBhbmQgcmVjb21tZW5kcyBhZ2FpbnN0IHN0b3JpbmcgbGFyZ2VyIHZhbHVlcywgYnV0CisgICBzb2NrbGVuX3Qgd2FzIG9yaWdpbmFsbHkgaW50IGluIHRoZSBCU0QgaW50ZXJmYWNlLCBzbyB0byBiZSBvbiB0aGUKKyAgIHNhZmUgc2lkZSB3ZSB1c2UgdGhlIHNtYWxsZXIgb2YgKDIqKjMxKS0xIGFuZCBJTlRfTUFYLiAqLworI2lmIElOVF9NQVggPiAweDdmZmZmZmZmCisjZGVmaW5lIFNPQ0tMRU5fVF9MSU1JVCAweDdmZmZmZmZmCisjZWxzZQorI2RlZmluZSBTT0NLTEVOX1RfTElNSVQgSU5UX01BWAorI2VuZGlmCisKICNpZmRlZiBIQVZFX1BPTEwKIC8qIEluc3RlYWQgb2Ygc2VsZWN0KCksIHdlJ2xsIHVzZSBwb2xsKCkgc2luY2UgcG9sbCgpIHdvcmtzIG9uIGFueSBmZC4gKi8KICNkZWZpbmUgSVNfU0VMRUNUQUJMRShzKSAxCkBAIC00NjgsNyArNTA0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCoKIHNlbGVjdF9lcnJvcih2b2lkKQogewotICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJ1bmFibGUgdG8gc2VsZWN0IG9uIHNvY2tldCIpOworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5hYmxlIHRvIHNlbGVjdCBvbiBzb2NrZXQiKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNDk1LDcgKzUzMSw3IEBACiAgICAgICAgcmVjb2duaXplcyB0aGUgZXJyb3IgY29kZXMgdXNlZCBieSBib3RoIEdldExhc3RFcnJvcigpIGFuZAogICAgICAgIFdTQUdldExhc3RFcnJvciAqLwogICAgIGlmIChlcnJfbm8pCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0Vycihzb2NrZXRfZXJyb3IsIGVycl9ubyk7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBlcnJfbm8pOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiAhZGVmaW5lZChQWUNDX0dDQykKQEAgLTUyNiw3ICs1NjIsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpcykiLCBteWVycm9yY29kZSwgb3V0YnVmKTsKICAgICAgICAgICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3Qoc29ja2V0X2Vycm9yLCB2KTsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfT1NFcnJvciwgdik7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MzQsNyArNTcwLDcgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oc29ja2V0X2Vycm9yKTsKKyAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogfQogCiAKQEAgLTg1MywxMyArODg5LDEzIEBACiAjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGZyZWVhZGRyaW5mbyhyZXMpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXMtPmFpX25leHQpIHsKICAgICAgICAgICAgIGZyZWVhZGRyaW5mbyhyZXMpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICJ3aWxkY2FyZCByZXNvbHZlZCB0byBtdWx0aXBsZSBhZGRyZXNzIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTg3Miw3ICs5MDgsNyBAQAogICAgIGlmIChuYW1lWzBdID09ICc8JyAmJiBzdHJjbXAobmFtZSwgIjxicm9hZGNhc3Q+IikgPT0gMCkgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKICAgICAgICAgaWYgKGFmICE9IEFGX0lORVQgJiYgYWYgIT0gQUZfVU5TUEVDKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgImFkZHJlc3MgZmFtaWx5IG1pc21hdGNoZWQiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtOTMwLDcgKzk2Niw3IEBACiAgICAgICAgIHJldHVybiAxNjsKICNlbmRpZgogICAgIGRlZmF1bHQ6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJ1bmtub3duIGFkZHJlc3MgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5rbm93biBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQpAQCAtOTc5LDcgKzEwMTUsNyBAQAogICAgICAgICBiZGFkZHItPmJbNV0gPSBiNTsKICAgICAgICAgcmV0dXJuIDY7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImJhZCBibHVldG9vdGggYWRkcmVzcyIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImJhZCBibHVldG9vdGggYWRkcmVzcyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQpAQCAtMTA0NCw3ICsxMDgwLDcgQEAKICNlbmRpZiAvKiBsaW51eCAqLwogICAgICAgICB7CiAgICAgICAgICAgICAvKiByZWd1bGFyIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhhLT5zdW5fcGF0aCk7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChhLT5zdW5fcGF0aCk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYgLyogQUZfVU5JWCAqLwpAQCAtMTE5MCw2ICsxMjI2LDQyIEBACiAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBBRl9DQU4KKyAgICBjYXNlIEFGX0NBTjoKKyAgICB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jYW4gKmEgPSAoc3RydWN0IHNvY2thZGRyX2NhbiAqKWFkZHI7CisgICAgICAgIGNoYXIgKmlmbmFtZSA9ICIiOworICAgICAgICBzdHJ1Y3QgaWZyZXEgaWZyOworICAgICAgICAvKiBuZWVkIHRvIGxvb2sgdXAgaW50ZXJmYWNlIG5hbWUgZ2l2ZW4gaW5kZXggKi8KKyAgICAgICAgaWYgKGEtPmNhbl9pZmluZGV4KSB7CisgICAgICAgICAgICBpZnIuaWZyX2lmaW5kZXggPSBhLT5jYW5faWZpbmRleDsKKyAgICAgICAgICAgIGlmIChpb2N0bChzb2NrZmQsIFNJT0NHSUZOQU1FLCAmaWZyKSA9PSAwKQorICAgICAgICAgICAgICAgIGlmbmFtZSA9IGlmci5pZnJfbmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPJmgiLCBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS0+Y2FuX2ZhbWlseSk7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBQRl9TWVNURU0KKyAgICBjYXNlIFBGX1NZU1RFTToKKyAgICAgICAgc3dpdGNoKHByb3RvKSB7CisjaWZkZWYgU1lTUFJPVE9fQ09OVFJPTAorICAgICAgICBjYXNlIFNZU1BST1RPX0NPTlRST0w6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jdGwgKmEgPSAoc3RydWN0IHNvY2thZGRyX2N0bCAqKWFkZHI7CisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKElJKSIsIGEtPnNjX2lkLCBhLT5zY191bml0KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBhZGRyZXNzIHR5cGUiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisjZW5kaWYKKwogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCiAgICAgZGVmYXVsdDoKQEAgLTEyMjEsMTcgKzEyOTMsMjcgQEAKICAgICAgICAgc3RydWN0IHNvY2thZGRyX3VuKiBhZGRyOwogICAgICAgICBjaGFyICpwYXRoOwogICAgICAgICBpbnQgbGVuOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ3MsICJzIyIsICZwYXRoLCAmbGVuKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpbnQgcmV0dmFsID0gMDsKKworICAgICAgICAvKiBQRVAgMzgzLiAgTm90IHVzaW5nIFB5VW5pY29kZV9GU0NvbnZlcnRlciBzaW5jZSB3ZSBuZWVkIHRvCisgICAgICAgICAgIGFsbG93IGVtYmVkZGVkIG51bGxzIG9uIExpbnV4LiAqLworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZ3MpKSB7CisgICAgICAgICAgICBpZiAoKGFyZ3MgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGFyZ3MpKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdzLCAieSMiLCAmcGF0aCwgJmxlbikpCisgICAgICAgICAgICBnb3RvIHVuaXhfb3V0OwogCiAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX3VuKilhZGRyX3JldDsKICNpZmRlZiBsaW51eAogICAgICAgICBpZiAobGVuID4gMCAmJiBwYXRoWzBdID09IDApIHsKICAgICAgICAgICAgIC8qIExpbnV4IGFic3RyYWN0IG5hbWVzcGFjZSBleHRlbnNpb24gKi8KICAgICAgICAgICAgIGlmIChsZW4gPiBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgZ290byB1bml4X291dDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC0xMjM5LDkgKzEzMjEsOSBAQAogICAgICAgICB7CiAgICAgICAgICAgICAvKiByZWd1bGFyIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KICAgICAgICAgICAgIGlmIChsZW4gPj0gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFGX1VOSVggcGF0aCB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIGdvdG8gdW5peF9vdXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhZGRyLT5zdW5fcGF0aFtsZW5dID0gMDsKICAgICAgICAgfQpAQCAtMTI1Miw3ICsxMzM0LDEwIEBACiAjZWxzZQogICAgICAgICAqbGVuX3JldCA9IGxlbiArIG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiAxOworICAgICAgICByZXR2YWwgPSAxOworICAgIHVuaXhfb3V0OgorICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgIHJldHVybiByZXR2YWw7CiAgICAgfQogI2VuZGlmIC8qIEFGX1VOSVggKi8KIApAQCAtMTI4MCw2ICsxMzY1LDExIEBACiAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBBRl9SRFMKKyAgICBjYXNlIEFGX1JEUzoKKyAgICAgICAgLyogUkRTIHNvY2tldHMgdXNlIHNvY2thZGRyX2luOiBmYWxsLXRocm91Z2ggKi8KKyNlbmRpZgorCiAgICAgY2FzZSBBRl9JTkVUOgogICAgIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luKiBhZGRyOwpAQCAtMTM3Niw3ICsxNDY2LDcgQEAKICAgICAgICAgICAgIF9CVF9MMl9NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNpIiwgJnN0cmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJl9CVF9MMl9NRU1CKGFkZHIsIHBzbSkpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xMzk1LDcgKzE0ODUsNyBAQAogICAgICAgICAgICAgX0JUX1JDX01FTUIoYWRkciwgZmFtaWx5KSA9IEFGX0JMVUVUT09USDsKICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2kiLCAmc3RyYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmX0JUX1JDX01FTUIoYWRkciwgY2hhbm5lbCkpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xNDEzLDcgKzE1MDMsNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICBfQlRfSENJX01FTUIoYWRkciwgZmFtaWx5KSA9IEFGX0JMVUVUT09USDsKICAgICAgICAgICAgIGlmIChzdHJhZGRyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiAiCiAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTE0MjIsNyArMTUxMiw3IEBACiAjZWxzZQogICAgICAgICAgICAgX0JUX0hDSV9NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmX0JUX0hDSV9NRU1CKGFkZHIsIGRldikpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xNDM5LDcgKzE1MjksNyBAQAogICAgICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfc2NvICopYWRkcl9yZXQ7CiAgICAgICAgICAgICBfQlRfU0NPX01FTUIoYWRkciwgZmFtaWx5KSA9IEFGX0JMVUVUT09USDsKICAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhhcmdzKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtMTQ1Miw3ICsxNTQyLDcgQEAKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6IHVua25vd24gQmx1ZXRvb3RoIHByb3RvY29sIik7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiB1bmtub3duIEJsdWV0b290aCBwcm90b2NvbCIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTY0LDEwICsxNjU0LDExNSBAQAogICAgIH0KICNlbmRpZgogCisjaWZkZWYgQUZfQ0FOCisgICAgY2FzZSBBRl9DQU46CisgICAgICAgIHN3aXRjaCAocy0+c29ja19wcm90bykgeworICAgICAgICBjYXNlIENBTl9SQVc6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jYW4gKmFkZHI7CisgICAgICAgICAgICBQeU9iamVjdCAqaW50ZXJmYWNlTmFtZTsKKyAgICAgICAgICAgIHN0cnVjdCBpZnJlcSBpZnI7CisgICAgICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl9jYW4gKilhZGRyX3JldDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnRlcmZhY2VOYW1lKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShpbnRlcmZhY2VOYW1lKTsKKworICAgICAgICAgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWZyLmlmcl9pZmluZGV4ID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGVuIDwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBzdHJjcHkoaWZyLmlmcl9uYW1lLCBQeUJ5dGVzX0FTX1NUUklORyhpbnRlcmZhY2VOYW1lKSk7CisgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIFNJT0NHSUZJTkRFWCwgJmlmcikgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBRl9DQU4gaW50ZXJmYWNlIG5hbWUgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFkZHItPmNhbl9mYW1pbHkgPSBBRl9DQU47CisgICAgICAgICAgICBhZGRyLT5jYW5faWZpbmRleCA9IGlmci5pZnJfaWZpbmRleDsKKworICAgICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YoKmFkZHIpOworICAgICAgICAgICAgUHlfREVDUkVGKGludGVyZmFjZU5hbWUpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRzb2NrYWRkcmFyZzogdW5zdXBwb3J0ZWQgQ0FOIHByb3RvY29sIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICAKKyNpZmRlZiBQRl9TWVNURU0KKyAgICBjYXNlIFBGX1NZU1RFTToKKyAgICAgICAgc3dpdGNoIChzLT5zb2NrX3Byb3RvKSB7CisjaWZkZWYgU1lTUFJPVE9fQ09OVFJPTAorICAgICAgICBjYXNlIFNZU1BST1RPX0NPTlRST0w6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jdGwgKmFkZHI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX2N0bCAqKWFkZHJfcmV0OworICAgICAgICAgICAgYWRkci0+c2NfZmFtaWx5ID0gQUZfU1lTVEVNOworICAgICAgICAgICAgYWRkci0+c3Nfc3lzYWRkciA9IEFGX1NZU19DT05UUk9MOyAKKworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmdzKSkgeworICAgICAgICAgICAgICAgIHN0cnVjdCBjdGxfaW5mbyBpbmZvOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjdGxfbmFtZTsKKworICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2UoYXJncywgIk8mIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmY3RsX25hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGN0bF9uYW1lKSA+IHNpemVvZihpbmZvLmN0bF9uYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm92aWRlZCBzdHJpbmcgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGN0bF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0cm5jcHkoaW5mby5jdGxfbmFtZSwgUHlCeXRlc19BU19TVFJJTkcoY3RsX25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGluZm8uY3RsX25hbWUpKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3RsX25hbWUpOworCisgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIENUTElPQ0dJTkZPLCAmaW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZmluZCBrZXJuZWwgY29udHJvbCB3aXRoIHByb3ZpZGVkIG5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGFkZHItPnNjX2lkID0gaW5mby5jdGxfaWQ7CisgICAgICAgICAgICAgICAgYWRkci0+c2NfdW5pdCA9IDA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJSSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoYWRkci0+c2NfaWQpLCAmKGFkZHItPnNjX3VuaXQpKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgc3RyIG9yIHR1cGxlIG9mIHR3byBpbnRzIik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YoKmFkZHIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHNvY2thZGRyYXJnOiB1bnN1cHBvcnRlZCBQRl9TWVNURU0gcHJvdG9jb2wiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisjZW5kaWYKKwogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiBiYWQgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6IGJhZCBmYW1pbHkiKTsKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB9CkBAIC0xNTk4LDYgKzE3OTMsMTEgQEAKICAgICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEFGX1JEUworICAgIGNhc2UgQUZfUkRTOgorICAgICAgICAvKiBSRFMgc29ja2V0cyB1c2Ugc29ja2FkZHJfaW46IGZhbGwtdGhyb3VnaCAqLworI2VuZGlmCisKICAgICBjYXNlIEFGX0lORVQ6CiAgICAgewogICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2luKTsKQEAgLTE2MzMsNyArMTgzMyw3IEBACiAgICAgICAgICAgICByZXR1cm4gMTsKICNlbmRpZgogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRybGVuOiAiCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRybGVuOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVua25vd24gQlQgcHJvdG9jb2wiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNjU3LDE2ICsxODU3LDE1MSBAQAogICAgIH0KICNlbmRpZgogCisjaWZkZWYgQUZfQ0FOCisgICAgY2FzZSBBRl9DQU46CisgICAgeworICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2Nhbik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgCisjaWZkZWYgUEZfU1lTVEVNCisgICAgY2FzZSBQRl9TWVNURU06CisgICAgICAgIHN3aXRjaChzLT5zb2NrX3Byb3RvKSB7CisjaWZkZWYgU1lTUFJPVE9fQ09OVFJPTAorICAgICAgICBjYXNlIFNZU1BST1RPX0NPTlRST0w6CisgICAgICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2N0bCk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyNlbmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmxlbjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIFBGX1NZU1RFTSBwcm90b2NvbCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKICAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJsZW46IGJhZCBmYW1pbHkiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmxlbjogYmFkIGZhbWlseSIpOwogICAgICAgICByZXR1cm4gMDsKIAogICAgIH0KIH0KIAogCisvKiBTdXBwb3J0IGZ1bmN0aW9ucyBmb3IgdGhlIHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSBtZXRob2RzLgorICAgQ3VycmVudGx5LCB0aGVzZSBtZXRob2RzIGFyZSBvbmx5IGNvbXBpbGVkIGlmIHRoZSBSRkMgMjI5Mi8zNTQyCisgICBDTVNHX0xFTigpIG1hY3JvIGlzIGF2YWlsYWJsZS4gIE9sZGVyIHN5c3RlbXMgc2VlbSB0byBoYXZlIHVzZWQKKyAgIHNpemVvZihzdHJ1Y3QgY21zZ2hkcikgKyAobGVuZ3RoKSB3aGVyZSBDTVNHX0xFTigpIGlzIHVzZWQgbm93LCBzbworICAgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIGRlZmluZSBDTVNHX0xFTigpIHRoYXQgd2F5IGlmIGl0J3Mgbm90CisgICBwcm92aWRlZC4gIFNvbWUgYXJjaGl0ZWN0dXJlcyBtaWdodCBuZWVkIGV4dHJhIHBhZGRpbmcgYWZ0ZXIgdGhlCisgICBjbXNnaGRyLCBob3dldmVyLCBhbmQgQ01TR19MRU4oKSB3b3VsZCBoYXZlIHRvIHRha2UgYWNjb3VudCBvZgorICAgdGhpcy4gKi8KKyNpZmRlZiBDTVNHX0xFTgorLyogSWYgbGVuZ3RoIGlzIGluIHJhbmdlLCBzZXQgKnJlc3VsdCB0byBDTVNHX0xFTihsZW5ndGgpIGFuZCByZXR1cm4KKyAgIHRydWU7IG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLiAqLworc3RhdGljIGludAorZ2V0X0NNU0dfTEVOKHNpemVfdCBsZW5ndGgsIHNpemVfdCAqcmVzdWx0KQoreworICAgIHNpemVfdCB0bXA7CisKKyAgICBpZiAobGVuZ3RoID4gKFNPQ0tMRU5fVF9MSU1JVCAtIENNU0dfTEVOKDApKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdG1wID0gQ01TR19MRU4obGVuZ3RoKTsKKyAgICBpZiAodG1wID4gU09DS0xFTl9UX0xJTUlUIHx8IHRtcCA8IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgKnJlc3VsdCA9IHRtcDsKKyAgICByZXR1cm4gMTsKK30KKworI2lmZGVmIENNU0dfU1BBQ0UKKy8qIElmIGxlbmd0aCBpcyBpbiByYW5nZSwgc2V0ICpyZXN1bHQgdG8gQ01TR19TUEFDRShsZW5ndGgpIGFuZCByZXR1cm4KKyAgIHRydWU7IG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLiAqLworc3RhdGljIGludAorZ2V0X0NNU0dfU1BBQ0Uoc2l6ZV90IGxlbmd0aCwgc2l6ZV90ICpyZXN1bHQpCit7CisgICAgc2l6ZV90IHRtcDsKKworICAgIC8qIFVzZSBDTVNHX1NQQUNFKDEpIGhlcmUgaW4gb3JkZXIgdG8gdGFrZSBhY2NvdW50IG9mIHRoZSBwYWRkaW5nCisgICAgICAgbmVjZXNzYXJ5IGJlZm9yZSAqYW5kKiBhZnRlciB0aGUgZGF0YS4gKi8KKyAgICBpZiAobGVuZ3RoID4gKFNPQ0tMRU5fVF9MSU1JVCAtIENNU0dfU1BBQ0UoMSkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICB0bXAgPSBDTVNHX1NQQUNFKGxlbmd0aCk7CisgICAgaWYgKHRtcCA+IFNPQ0tMRU5fVF9MSU1JVCB8fCB0bXAgPCBsZW5ndGgpCisgICAgICAgIHJldHVybiAwOworICAgICpyZXN1bHQgPSB0bXA7CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYKKworLyogUmV0dXJuIHRydWUgaWZmIG1zZy0+bXNnX2NvbnRyb2xsZW4gaXMgdmFsaWQsIGNtc2doIGlzIGEgdmFsaWQKKyAgIHBvaW50ZXIgaW4gbXNnLT5tc2dfY29udHJvbCB3aXRoIGF0IGxlYXN0ICJzcGFjZSIgYnl0ZXMgYWZ0ZXIgaXQsCisgICBhbmQgaXRzIGNtc2dfbGVuIG1lbWJlciBpbnNpZGUgdGhlIGJ1ZmZlci4gKi8KK3N0YXRpYyBpbnQKK2Ntc2dfbWluX3NwYWNlKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IGNtc2doZHIgKmNtc2doLCBzaXplX3Qgc3BhY2UpCit7CisgICAgc2l6ZV90IGNtc2dfb2Zmc2V0OworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY21zZ19sZW5fZW5kID0gKG9mZnNldG9mKHN0cnVjdCBjbXNnaGRyLCBjbXNnX2xlbikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihjbXNnaC0+Y21zZ19sZW4pKTsKKworICAgIC8qIE5vdGUgdGhhdCBQT1NJWCBhbGxvd3MgbXNnX2NvbnRyb2xsZW4gdG8gYmUgb2Ygc2lnbmVkIHR5cGUuICovCisgICAgaWYgKGNtc2doID09IE5VTEwgfHwgbXNnLT5tc2dfY29udHJvbCA9PSBOVUxMIHx8IG1zZy0+bXNnX2NvbnRyb2xsZW4gPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoc3BhY2UgPCBjbXNnX2xlbl9lbmQpCisgICAgICAgIHNwYWNlID0gY21zZ19sZW5fZW5kOworICAgIGNtc2dfb2Zmc2V0ID0gKGNoYXIgKiljbXNnaCAtIChjaGFyICopbXNnLT5tc2dfY29udHJvbDsKKyAgICByZXR1cm4gKGNtc2dfb2Zmc2V0IDw9IChzaXplX3QpLTEgLSBzcGFjZSAmJgorICAgICAgICAgICAgY21zZ19vZmZzZXQgKyBzcGFjZSA8PSBtc2ctPm1zZ19jb250cm9sbGVuKTsKK30KKworLyogSWYgcG9pbnRlciBDTVNHX0RBVEEoY21zZ2gpIGlzIGluIGJ1ZmZlciBtc2ctPm1zZ19jb250cm9sLCBzZXQKKyAgICpzcGFjZSB0byBudW1iZXIgb2YgYnl0ZXMgZm9sbG93aW5nIGl0IGluIHRoZSBidWZmZXIgYW5kIHJldHVybgorICAgdHJ1ZTsgb3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UuICBBc3N1bWVzIGNtc2doLCBtc2ctPm1zZ19jb250cm9sIGFuZAorICAgbXNnLT5tc2dfY29udHJvbGxlbiBhcmUgdmFsaWQuICovCitzdGF0aWMgaW50CitnZXRfY21zZ19kYXRhX3NwYWNlKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IGNtc2doZHIgKmNtc2doLCBzaXplX3QgKnNwYWNlKQoreworICAgIHNpemVfdCBkYXRhX29mZnNldDsKKyAgICBjaGFyICpkYXRhX3B0cjsKKworICAgIGlmICgoZGF0YV9wdHIgPSAoY2hhciAqKUNNU0dfREFUQShjbXNnaCkpID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIGRhdGFfb2Zmc2V0ID0gZGF0YV9wdHIgLSAoY2hhciAqKW1zZy0+bXNnX2NvbnRyb2w7CisgICAgaWYgKGRhdGFfb2Zmc2V0ID4gbXNnLT5tc2dfY29udHJvbGxlbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgKnNwYWNlID0gbXNnLT5tc2dfY29udHJvbGxlbiAtIGRhdGFfb2Zmc2V0OworICAgIHJldHVybiAxOworfQorCisvKiBJZiBjbXNnaCBpcyBpbnZhbGlkIG9yIG5vdCBjb250YWluZWQgaW4gdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5CisgICBtc2ctPm1zZ19jb250cm9sLCByZXR1cm4gLTEuICBJZiBjbXNnaCBpcyB2YWxpZCBhbmQgaXRzIGFzc29jaWF0ZWQKKyAgIGRhdGEgaXMgZW50aXJlbHkgY29udGFpbmVkIGluIHRoZSBidWZmZXIsIHNldCAqZGF0YV9sZW4gdG8gdGhlCisgICBsZW5ndGggb2YgdGhlIGFzc29jaWF0ZWQgZGF0YSBhbmQgcmV0dXJuIDAuICBJZiBvbmx5IHBhcnQgb2YgdGhlCisgICBhc3NvY2lhdGVkIGRhdGEgaXMgY29udGFpbmVkIGluIHRoZSBidWZmZXIgYnV0IGNtc2doIGlzIG90aGVyd2lzZQorICAgdmFsaWQsIHNldCAqZGF0YV9sZW4gdG8gdGhlIGxlbmd0aCBjb250YWluZWQgaW4gdGhlIGJ1ZmZlciBhbmQKKyAgIHJldHVybiAxLiAqLworc3RhdGljIGludAorZ2V0X2Ntc2dfZGF0YV9sZW4oc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3QgY21zZ2hkciAqY21zZ2gsIHNpemVfdCAqZGF0YV9sZW4pCit7CisgICAgc2l6ZV90IHNwYWNlLCBjbXNnX2RhdGFfbGVuOworCisgICAgaWYgKCFjbXNnX21pbl9zcGFjZShtc2csIGNtc2doLCBDTVNHX0xFTigwKSkgfHwKKyAgICAgICAgY21zZ2gtPmNtc2dfbGVuIDwgQ01TR19MRU4oMCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBjbXNnX2RhdGFfbGVuID0gY21zZ2gtPmNtc2dfbGVuIC0gQ01TR19MRU4oMCk7CisgICAgaWYgKCFnZXRfY21zZ19kYXRhX3NwYWNlKG1zZywgY21zZ2gsICZzcGFjZSkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoc3BhY2UgPj0gY21zZ19kYXRhX2xlbikgeworICAgICAgICAqZGF0YV9sZW4gPSBjbXNnX2RhdGFfbGVuOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgKmRhdGFfbGVuID0gc3BhY2U7CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KKworCiAvKiBzLl9hY2NlcHQoKSAtPiAoZmQsIGFkZHJlc3MpICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xODg5LDcgKzIyMjQsNyBAQAogI2Vsc2UKICAgICBpZiAoYnVmbGVuIDw9IDAgfHwgYnVmbGVuID4gMTAyNCkgewogI2VuZGlmCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImdldHNvY2tvcHQgYnVmbGVuIG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yNjIwLDYgKzI5NTUsMzMxIEBACiBMaWtlIHJlY3ZfaW50byhidWZmZXJbLCBuYnl0ZXNbLCBmbGFnc11dKSBidXQgYWxzbyByZXR1cm4gdGhlIHNlbmRlcidzIGFkZHJlc3MgaW5mby4iKTsKIAogCisvKiBUaGUgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpIG1ldGhvZHMgcmVxdWlyZSBhIHdvcmtpbmcKKyAgIENNU0dfTEVOKCkuICBTZWUgdGhlIGNvbW1lbnQgbmVhciBnZXRfQ01TR19MRU4oKS4gKi8KKyNpZmRlZiBDTVNHX0xFTgorLyoKKyAqIENhbGwgcmVjdm1zZygpIHdpdGggdGhlIHN1cHBsaWVkIGlvdmVjIHN0cnVjdHVyZXMsIGZsYWdzLCBhbmQKKyAqIGFuY2lsbGFyeSBkYXRhIGJ1ZmZlciBzaXplIChjb250cm9sbGVuKS4gIFJldHVybnMgdGhlIHR1cGxlIHJldHVybgorICogdmFsdWUgZm9yIHJlY3Ztc2coKSBvciByZWN2bXNnX2ludG8oKSwgd2l0aCB0aGUgZmlyc3QgaXRlbSBwcm92aWRlZAorICogYnkgdGhlIHN1cHBsaWVkIG1ha2V2YWwoKSBmdW5jdGlvbi4gIG1ha2V2YWwoKSB3aWxsIGJlIGNhbGxlZCB3aXRoCisgKiB0aGUgbGVuZ3RoIHJlYWQgYW5kIG1ha2V2YWxfZGF0YSBhcyBhcmd1bWVudHMsIGFuZCBtdXN0IHJldHVybiBhCisgKiBuZXcgcmVmZXJlbmNlICh3aGljaCB3aWxsIGJlIGRlY3JlZmVkIGlmIHRoZXJlIGlzIGEgc3Vic2VxdWVudAorICogZXJyb3IpLiAgT24gZXJyb3IsIGNsb3NlcyBhbnkgZmlsZSBkZXNjcmlwdG9ycyByZWNlaXZlZCB2aWEKKyAqIFNDTV9SSUdIVFMuCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrX3JlY3Ztc2dfZ3V0cyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92bGVuLAorICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBQeV9zc2l6ZV90IGNvbnRyb2xsZW4sCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKCptYWtldmFsKShzc2l6ZV90LCB2b2lkICopLCB2b2lkICptYWtldmFsX2RhdGEpCit7CisgICAgc3NpemVfdCBieXRlc19yZWNlaXZlZCA9IC0xOworICAgIGludCB0aW1lb3V0OworICAgIHNvY2tfYWRkcl90IGFkZHJidWY7CisgICAgc29ja2xlbl90IGFkZHJidWZsZW47CisgICAgc3RydWN0IG1zZ2hkciBtc2cgPSB7MH07CisgICAgUHlPYmplY3QgKmNtc2dfbGlzdCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworICAgIHZvaWQgKmNvbnRyb2xidWYgPSBOVUxMOworICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnaDsKKyAgICBzaXplX3QgY21zZ2RhdGFsZW4gPSAwOworICAgIGludCBjbXNnX3N0YXR1czsKKworICAgIC8qIFhYWDogUE9TSVggc2F5cyB0aGF0IG1zZ19uYW1lIGFuZCBtc2dfbmFtZWxlbiAic2hhbGwgYmUKKyAgICAgICBpZ25vcmVkIiB3aGVuIHRoZSBzb2NrZXQgaXMgY29ubmVjdGVkIChMaW51eCBmaWxscyB0aGVtIGluCisgICAgICAgYW55d2F5IGZvciBBRl9VTklYIHNvY2tldHMgYXQgbGVhc3QpLiAgTm9ybWFsbHkgbXNnX25hbWVsZW4KKyAgICAgICBzZWVtcyB0byBiZSBzZXQgdG8gMCBpZiB0aGVyZSdzIG5vIGFkZHJlc3MsIGJ1dCB0cnkgdG8KKyAgICAgICBpbml0aWFsaXplIG1zZ19uYW1lIHRvIHNvbWV0aGluZyB0aGF0IHdvbid0IGJlIG1pc3Rha2VuIGZvciBhCisgICAgICAgcmVhbCBhZGRyZXNzIGlmIHRoYXQgZG9lc24ndCBoYXBwZW4uICovCisgICAgaWYgKCFnZXRzb2NrYWRkcmxlbihzLCAmYWRkcmJ1ZmxlbikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1lbXNldCgmYWRkcmJ1ZiwgMCwgYWRkcmJ1Zmxlbik7CisgICAgU0FTMlNBKCZhZGRyYnVmKS0+c2FfZmFtaWx5ID0gQUZfVU5TUEVDOworCisgICAgaWYgKGNvbnRyb2xsZW4gPCAwIHx8IGNvbnRyb2xsZW4gPiBTT0NLTEVOX1RfTElNSVQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBhbmNpbGxhcnkgZGF0YSBidWZmZXIgbGVuZ3RoIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoY29udHJvbGxlbiA+IDAgJiYgKGNvbnRyb2xidWYgPSBQeU1lbV9NYWxsb2MoY29udHJvbGxlbikpID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgLyogTWFrZSB0aGUgc3lzdGVtIGNhbGwuICovCisgICAgaWYgKCFJU19TRUxFQ1RBQkxFKHMpKSB7CisgICAgICAgIHNlbGVjdF9lcnJvcigpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgQkVHSU5fU0VMRUNUX0xPT1AocykKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIG1zZy5tc2dfbmFtZSA9IFNBUzJTQSgmYWRkcmJ1Zik7CisgICAgbXNnLm1zZ19uYW1lbGVuID0gYWRkcmJ1ZmxlbjsKKyAgICBtc2cubXNnX2lvdiA9IGlvdjsKKyAgICBtc2cubXNnX2lvdmxlbiA9IGlvdmxlbjsKKyAgICBtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmOworICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47CisgICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAwLCBpbnRlcnZhbCk7CisgICAgaWYgKCF0aW1lb3V0KQorICAgICAgICBieXRlc19yZWNlaXZlZCA9IHJlY3Ztc2cocy0+c29ja19mZCwgJm1zZywgZmxhZ3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTOworICAgIGlmICh0aW1lb3V0ID09IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgRU5EX1NFTEVDVF9MT09QKHMpCisKKyAgICBpZiAoYnl0ZXNfcmVjZWl2ZWQgPCAwKSB7CisgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgLyogTWFrZSBsaXN0IG9mIChsZXZlbCwgdHlwZSwgZGF0YSkgdHVwbGVzIGZyb20gY29udHJvbCBtZXNzYWdlcy4gKi8KKyAgICBpZiAoKGNtc2dfbGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworICAgIC8qIENoZWNrIGZvciBlbXB0eSBhbmNpbGxhcnkgZGF0YSBhcyBvbGQgQ01TR19GSVJTVEhEUigpCisgICAgICAgaW1wbGVtZW50YXRpb25zIGRpZG4ndCBkbyBzby4gKi8KKyAgICBmb3IgKGNtc2doID0gKChtc2cubXNnX2NvbnRyb2xsZW4gPiAwKSA/IENNU0dfRklSU1RIRFIoJm1zZykgOiBOVUxMKTsKKyAgICAgICAgIGNtc2doICE9IE5VTEw7IGNtc2doID0gQ01TR19OWFRIRFIoJm1zZywgY21zZ2gpKSB7CisgICAgICAgIFB5T2JqZWN0ICpieXRlcywgKnR1cGxlOworICAgICAgICBpbnQgdG1wOworCisgICAgICAgIGNtc2dfc3RhdHVzID0gZ2V0X2Ntc2dfZGF0YV9sZW4oJm1zZywgY21zZ2gsICZjbXNnZGF0YWxlbik7CisgICAgICAgIGlmIChjbXNnX3N0YXR1cyAhPSAwKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX1J1bnRpbWVXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZWQgbWFsZm9ybWVkIG9yIGltcHJvcGVybHktdHJ1bmNhdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuY2lsbGFyeSBkYXRhIiwgMSkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBlcnJfY2xvc2VmZHM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNtc2dfc3RhdHVzIDwgMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY21zZ2RhdGFsZW4gPiBQWV9TU0laRV9UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJjb250cm9sIG1lc3NhZ2UgdG9vIGxvbmciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopQ01TR19EQVRBKGNtc2doKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc2dkYXRhbGVuKTsKKyAgICAgICAgdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJpaU4iLCAoaW50KWNtc2doLT5jbXNnX2xldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCljbXNnaC0+Y21zZ190eXBlLCBieXRlcyk7CisgICAgICAgIGlmICh0dXBsZSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJfY2xvc2VmZHM7CisgICAgICAgIHRtcCA9IFB5TGlzdF9BcHBlbmQoY21zZ19saXN0LCB0dXBsZSk7CisgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisgICAgICAgIGlmICh0bXAgIT0gMCkKKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworCisgICAgICAgIGlmIChjbXNnX3N0YXR1cyAhPSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dmFsID0gUHlfQnVpbGRWYWx1ZSgiTk9pTiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm1ha2V2YWwpKGJ5dGVzX3JlY2VpdmVkLCBtYWtldmFsX2RhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zZ19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltc2cubXNnX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXNvY2thZGRyKHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtc2cubXNnX25hbWVsZW4gPiBhZGRyYnVmbGVuKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJidWZsZW4gOiBtc2cubXNnX25hbWVsZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnNvY2tfcHJvdG8pKTsKKyAgICBpZiAocmV0dmFsID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworCitmaW5hbGx5OgorICAgIFB5X1hERUNSRUYoY21zZ19saXN0KTsKKyAgICBQeU1lbV9GcmVlKGNvbnRyb2xidWYpOworICAgIHJldHVybiByZXR2YWw7CisKK2Vycl9jbG9zZWZkczoKKyNpZmRlZiBTQ01fUklHSFRTCisgICAgLyogQ2xvc2UgYWxsIGRlc2NyaXB0b3JzIGNvbWluZyBmcm9tIFNDTV9SSUdIVFMsIHNvIHRoZXkgZG9uJ3QgbGVhay4gKi8KKyAgICBmb3IgKGNtc2doID0gKChtc2cubXNnX2NvbnRyb2xsZW4gPiAwKSA/IENNU0dfRklSU1RIRFIoJm1zZykgOiBOVUxMKTsKKyAgICAgICAgIGNtc2doICE9IE5VTEw7IGNtc2doID0gQ01TR19OWFRIRFIoJm1zZywgY21zZ2gpKSB7CisgICAgICAgIGNtc2dfc3RhdHVzID0gZ2V0X2Ntc2dfZGF0YV9sZW4oJm1zZywgY21zZ2gsICZjbXNnZGF0YWxlbik7CisgICAgICAgIGlmIChjbXNnX3N0YXR1cyA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNtc2doLT5jbXNnX2xldmVsID09IFNPTF9TT0NLRVQgJiYKKyAgICAgICAgICAgIGNtc2doLT5jbXNnX3R5cGUgPT0gU0NNX1JJR0hUUykgeworICAgICAgICAgICAgc2l6ZV90IG51bWZkczsKKyAgICAgICAgICAgIGludCAqZmRwOworCisgICAgICAgICAgICBudW1mZHMgPSBjbXNnZGF0YWxlbiAvIHNpemVvZihpbnQpOworICAgICAgICAgICAgZmRwID0gKGludCAqKUNNU0dfREFUQShjbXNnaCk7CisgICAgICAgICAgICB3aGlsZSAobnVtZmRzLS0gPiAwKQorICAgICAgICAgICAgICAgIGNsb3NlKCpmZHArKyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNtc2dfc3RhdHVzICE9IDApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYgLyogU0NNX1JJR0hUUyAqLworICAgIGdvdG8gZmluYWxseTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorbWFrZXZhbF9yZWN2bXNnKHNzaXplX3QgcmVjZWl2ZWQsIHZvaWQgKmRhdGEpCit7CisgICAgUHlPYmplY3QgKipidWYgPSBkYXRhOworCisgICAgaWYgKHJlY2VpdmVkIDwgUHlCeXRlc19HRVRfU0laRSgqYnVmKSkKKyAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKGJ1ZiwgcmVjZWl2ZWQpOworICAgIFB5X1hJTkNSRUYoKmJ1Zik7CisgICAgcmV0dXJuICpidWY7Cit9CisKKy8qIHMucmVjdm1zZyhidWZzaXplWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIG1ldGhvZCAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja19yZWN2bXNnKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBidWZzaXplLCBhbmNidWZzaXplID0gMDsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIHN0cnVjdCBpb3ZlYyBpb3Y7CisgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufG5pOnJlY3Ztc2ciLCAmYnVmc2l6ZSwgJmFuY2J1ZnNpemUsICZmbGFncykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGJ1ZnNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgYnVmZmVyIHNpemUgaW4gcmVjdm1zZygpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoKGJ1ZiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnVmc2l6ZSkpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlvdi5pb3ZfYmFzZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1Zik7CisgICAgaW92Lmlvdl9sZW4gPSBidWZzaXplOworCisgICAgLyogTm90ZSB0aGF0IHdlJ3JlIHBhc3NpbmcgYSBwb2ludGVyIHRvICpvdXIgcG9pbnRlciogdG8gdGhlIGJ5dGVzCisgICAgICAgb2JqZWN0IGhlcmUgKCZidWYpOyBtYWtldmFsX3JlY3Ztc2coKSBtYXkgaW5jcmVmIHRoZSBvYmplY3QsIG9yCisgICAgICAgZGVhbGxvY2F0ZSBpdCBhbmQgc2V0IG91ciBwb2ludGVyIHRvIE5VTEwuICovCisgICAgcmV0dmFsID0gc29ja19yZWN2bXNnX2d1dHMocywgJmlvdiwgMSwgZmxhZ3MsIGFuY2J1ZnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1ha2V2YWxfcmVjdm1zZywgJmJ1Zik7CisgICAgUHlfWERFQ1JFRihidWYpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihyZWN2bXNnX2RvYywKKyJyZWN2bXNnKGJ1ZnNpemVbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkgLT4gKGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcylcblwKK1xuXAorUmVjZWl2ZSBub3JtYWwgZGF0YSAodXAgdG8gYnVmc2l6ZSBieXRlcykgYW5kIGFuY2lsbGFyeSBkYXRhIGZyb20gdGhlXG5cCitzb2NrZXQuICBUaGUgYW5jYnVmc2l6ZSBhcmd1bWVudCBzZXRzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZVxuXAoraW50ZXJuYWwgYnVmZmVyIHVzZWQgdG8gcmVjZWl2ZSB0aGUgYW5jaWxsYXJ5IGRhdGE7IGl0IGRlZmF1bHRzIHRvIDAsXG5cCittZWFuaW5nIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgd2lsbCBiZSByZWNlaXZlZC4gIEFwcHJvcHJpYXRlIGJ1ZmZlclxuXAorc2l6ZXMgZm9yIGFuY2lsbGFyeSBkYXRhIGNhbiBiZSBjYWxjdWxhdGVkIHVzaW5nIENNU0dfU1BBQ0UoKSBvclxuXAorQ01TR19MRU4oKSwgYW5kIGl0ZW1zIHdoaWNoIGRvIG5vdCBmaXQgaW50byB0aGUgYnVmZmVyIG1pZ2h0IGJlXG5cCit0cnVuY2F0ZWQgb3IgZGlzY2FyZGVkLiAgVGhlIGZsYWdzIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDAgYW5kIGhhcyB0aGVcblwKK3NhbWUgbWVhbmluZyBhcyBmb3IgcmVjdigpLlxuXAorXG5cCitUaGUgcmV0dXJuIHZhbHVlIGlzIGEgNC10dXBsZTogKGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcykuXG5cCitUaGUgZGF0YSBpdGVtIGlzIGEgYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIG5vbi1hbmNpbGxhcnkgZGF0YVxuXAorcmVjZWl2ZWQuICBUaGUgYW5jZGF0YSBpdGVtIGlzIGEgbGlzdCBvZiB6ZXJvIG9yIG1vcmUgdHVwbGVzXG5cCisoY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEpIHJlcHJlc2VudGluZyB0aGUgYW5jaWxsYXJ5IGRhdGFcblwKKyhjb250cm9sIG1lc3NhZ2VzKSByZWNlaXZlZDogY21zZ19sZXZlbCBhbmQgY21zZ190eXBlIGFyZSBpbnRlZ2Vyc1xuXAorc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kIHByb3RvY29sLXNwZWNpZmljIHR5cGUgcmVzcGVjdGl2ZWx5LFxuXAorYW5kIGNtc2dfZGF0YSBpcyBhIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBUaGVcblwKK21zZ19mbGFncyBpdGVtIGlzIHRoZSBiaXR3aXNlIE9SIG9mIHZhcmlvdXMgZmxhZ3MgaW5kaWNhdGluZ1xuXAorY29uZGl0aW9ucyBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZTsgc2VlIHlvdXIgc3lzdGVtIGRvY3VtZW50YXRpb24gZm9yXG5cCitkZXRhaWxzLiAgSWYgdGhlIHJlY2VpdmluZyBzb2NrZXQgaXMgdW5jb25uZWN0ZWQsIGFkZHJlc3MgaXMgdGhlXG5cCithZGRyZXNzIG9mIHRoZSBzZW5kaW5nIHNvY2tldCwgaWYgYXZhaWxhYmxlOyBvdGhlcndpc2UsIGl0cyB2YWx1ZSBpc1xuXAordW5zcGVjaWZpZWQuXG5cCitcblwKK0lmIHJlY3Ztc2coKSByYWlzZXMgYW4gZXhjZXB0aW9uIGFmdGVyIHRoZSBzeXN0ZW0gY2FsbCByZXR1cm5zLCBpdFxuXAord2lsbCBmaXJzdCBhdHRlbXB0IHRvIGNsb3NlIGFueSBmaWxlIGRlc2NyaXB0b3JzIHJlY2VpdmVkIHZpYSB0aGVcblwKK1NDTV9SSUdIVFMgbWVjaGFuaXNtLiIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCittYWtldmFsX3JlY3Ztc2dfaW50byhzc2l6ZV90IHJlY2VpdmVkLCB2b2lkICpkYXRhKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVjZWl2ZWQpOworfQorCisvKiBzLnJlY3Ztc2dfaW50byhidWZmZXJzWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIG1ldGhvZCAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja19yZWN2bXNnX2ludG8oUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IGFuY2J1ZnNpemUgPSAwOworICAgIGludCBmbGFncyA9IDA7CisgICAgc3RydWN0IGlvdmVjICppb3ZzID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGksIG5pdGVtcywgbmJ1ZnMgPSAwOworICAgIFB5X2J1ZmZlciAqYnVmcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ1ZmZlcnNfYXJnLCAqZmFzdCwgKnJldHZhbCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98bmk6cmVjdm1zZ19pbnRvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZlcnNfYXJnLCAmYW5jYnVmc2l6ZSwgJmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoKGZhc3QgPSBQeVNlcXVlbmNlX0Zhc3QoYnVmZmVyc19hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWN2bXNnX2ludG8oKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbml0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGZhc3QpOworICAgIGlmIChuaXRlbXMgPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAicmVjdm1zZ19pbnRvKCkgYXJndW1lbnQgMSBpcyB0b28gbG9uZyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBpdGVtLCBhbmQgc2F2ZSB0aGUgUHlfYnVmZmVyCisgICAgICAgc3RydWN0cyB0byByZWxlYXNlIGFmdGVyd2FyZHMuICovCisgICAgaWYgKG5pdGVtcyA+IDAgJiYgKChpb3ZzID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgbml0ZW1zKSkgPT0gTlVMTCB8fAorICAgICAgICAgICAgICAgICAgICAgICAoYnVmcyA9IFB5TWVtX05ldyhQeV9idWZmZXIsIG5pdGVtcykpID09IE5VTEwpKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgZm9yICg7IG5idWZzIDwgbml0ZW1zOyBuYnVmcysrKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGZhc3QsIG5idWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidyo7cmVjdm1zZ19pbnRvKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuIGl0ZXJhYmxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAib2Ygc2luZ2xlLXNlZ21lbnQgcmVhZC13cml0ZSBidWZmZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmc1tuYnVmc10pKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBpb3ZzW25idWZzXS5pb3ZfYmFzZSA9IGJ1ZnNbbmJ1ZnNdLmJ1ZjsKKyAgICAgICAgaW92c1tuYnVmc10uaW92X2xlbiA9IGJ1ZnNbbmJ1ZnNdLmxlbjsKKyAgICB9CisKKyAgICByZXR2YWwgPSBzb2NrX3JlY3Ztc2dfZ3V0cyhzLCBpb3ZzLCBuaXRlbXMsIGZsYWdzLCBhbmNidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYWtldmFsX3JlY3Ztc2dfaW50bywgTlVMTCk7CitmaW5hbGx5OgorICAgIGZvciAoaSA9IDA7IGkgPCBuYnVmczsgaSsrKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZzW2ldKTsKKyAgICBQeU1lbV9GcmVlKGJ1ZnMpOworICAgIFB5TWVtX0ZyZWUoaW92cyk7CisgICAgUHlfREVDUkVGKGZhc3QpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihyZWN2bXNnX2ludG9fZG9jLAorInJlY3Ztc2dfaW50byhidWZmZXJzWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIC0+IChuYnl0ZXMsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcylcblwKK1xuXAorUmVjZWl2ZSBub3JtYWwgZGF0YSBhbmQgYW5jaWxsYXJ5IGRhdGEgZnJvbSB0aGUgc29ja2V0LCBzY2F0dGVyaW5nIHRoZVxuXAorbm9uLWFuY2lsbGFyeSBkYXRhIGludG8gYSBzZXJpZXMgb2YgYnVmZmVycy4gIFRoZSBidWZmZXJzIGFyZ3VtZW50XG5cCittdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIG9iamVjdHMgdGhhdCBleHBvcnQgd3JpdGFibGUgYnVmZmVyc1xuXAorKGUuZy4gYnl0ZWFycmF5IG9iamVjdHMpOyB0aGVzZSB3aWxsIGJlIGZpbGxlZCB3aXRoIHN1Y2Nlc3NpdmUgY2h1bmtzXG5cCitvZiB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhIHVudGlsIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuIG9yIHRoZXJlIGFyZVxuXAorbm8gbW9yZSBidWZmZXJzLiAgVGhlIGFuY2J1ZnNpemUgYXJndW1lbnQgc2V0cyB0aGUgc2l6ZSBpbiBieXRlcyBvZlxuXAordGhlIGludGVybmFsIGJ1ZmZlciB1c2VkIHRvIHJlY2VpdmUgdGhlIGFuY2lsbGFyeSBkYXRhOyBpdCBkZWZhdWx0cyB0b1xuXAorMCwgbWVhbmluZyB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIHdpbGwgYmUgcmVjZWl2ZWQuICBBcHByb3ByaWF0ZVxuXAorYnVmZmVyIHNpemVzIGZvciBhbmNpbGxhcnkgZGF0YSBjYW4gYmUgY2FsY3VsYXRlZCB1c2luZyBDTVNHX1NQQUNFKClcblwKK29yIENNU0dfTEVOKCksIGFuZCBpdGVtcyB3aGljaCBkbyBub3QgZml0IGludG8gdGhlIGJ1ZmZlciBtaWdodCBiZVxuXAordHJ1bmNhdGVkIG9yIGRpc2NhcmRlZC4gIFRoZSBmbGFncyBhcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlXG5cCitzYW1lIG1lYW5pbmcgYXMgZm9yIHJlY3YoKS5cblwKK1xuXAorVGhlIHJldHVybiB2YWx1ZSBpcyBhIDQtdHVwbGU6IChuYnl0ZXMsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcykuXG5cCitUaGUgbmJ5dGVzIGl0ZW0gaXMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBvZiBub24tYW5jaWxsYXJ5IGRhdGFcblwKK3dyaXR0ZW4gaW50byB0aGUgYnVmZmVycy4gIFRoZSBhbmNkYXRhIGl0ZW0gaXMgYSBsaXN0IG9mIHplcm8gb3IgbW9yZVxuXAordHVwbGVzIChjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSkgcmVwcmVzZW50aW5nIHRoZSBhbmNpbGxhcnlcblwKK2RhdGEgKGNvbnRyb2wgbWVzc2FnZXMpIHJlY2VpdmVkOiBjbXNnX2xldmVsIGFuZCBjbXNnX3R5cGUgYXJlXG5cCitpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZSBwcm90b2NvbCBsZXZlbCBhbmQgcHJvdG9jb2wtc3BlY2lmaWMgdHlwZVxuXAorcmVzcGVjdGl2ZWx5LCBhbmQgY21zZ19kYXRhIGlzIGEgYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIGFzc29jaWF0ZWRcblwKK2RhdGEuICBUaGUgbXNnX2ZsYWdzIGl0ZW0gaXMgdGhlIGJpdHdpc2UgT1Igb2YgdmFyaW91cyBmbGFnc1xuXAoraW5kaWNhdGluZyBjb25kaXRpb25zIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlOyBzZWUgeW91ciBzeXN0ZW1cblwKK2RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuICBJZiB0aGUgcmVjZWl2aW5nIHNvY2tldCBpcyB1bmNvbm5lY3RlZCxcblwKK2FkZHJlc3MgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIHNlbmRpbmcgc29ja2V0LCBpZiBhdmFpbGFibGU7IG90aGVyd2lzZSxcblwKK2l0cyB2YWx1ZSBpcyB1bnNwZWNpZmllZC5cblwKK1xuXAorSWYgcmVjdm1zZ19pbnRvKCkgcmFpc2VzIGFuIGV4Y2VwdGlvbiBhZnRlciB0aGUgc3lzdGVtIGNhbGwgcmV0dXJucyxcblwKK2l0IHdpbGwgZmlyc3QgYXR0ZW1wdCB0byBjbG9zZSBhbnkgZmlsZSBkZXNjcmlwdG9ycyByZWNlaXZlZCB2aWEgdGhlXG5cCitTQ01fUklHSFRTIG1lY2hhbmlzbS4iKTsKKyNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLworCisKIC8qIHMuc2VuZChkYXRhIFssZmxhZ3NdKSBtZXRob2QgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI3NzEsNiArMzQzMSw3IEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kdG8oKSB0YWtlcyAyIG9yIDMgYXJndW1lbnRzICglZCBnaXZlbikiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2xlbik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjgxNCw2ICszNDc1LDIzNCBAQAogRm9yIElQIHNvY2tldHMsIHRoZSBhZGRyZXNzIGlzIGEgcGFpciAoaG9zdGFkZHIsIHBvcnQpLiIpOwogCiAKKy8qIFRoZSBzZW5kbXNnKCkgYW5kIHJlY3Ztc2dbX2ludG9dKCkgbWV0aG9kcyByZXF1aXJlIGEgd29ya2luZworICAgQ01TR19MRU4oKS4gIFNlZSB0aGUgY29tbWVudCBuZWFyIGdldF9DTVNHX0xFTigpLiAqLworI2lmZGVmIENNU0dfTEVOCisvKiBzLnNlbmRtc2coYnVmZmVyc1ssIGFuY2RhdGFbLCBmbGFnc1ssIGFkZHJlc3NdXV0pIG1ldGhvZCAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja19zZW5kbXNnKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBpLCBuZGF0YXBhcnRzLCBuZGF0YWJ1ZnMgPSAwLCBuY21zZ3MsIG5jbXNnYnVmcyA9IDA7CisgICAgUHlfYnVmZmVyICpkYXRhYnVmcyA9IE5VTEw7CisgICAgc3RydWN0IGlvdmVjICppb3ZzID0gTlVMTDsKKyAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOworICAgIHN0cnVjdCBtc2doZHIgbXNnID0gezB9OworICAgIHN0cnVjdCBjbXNnaW5mbyB7CisgICAgICAgIGludCBsZXZlbDsKKyAgICAgICAgaW50IHR5cGU7CisgICAgICAgIFB5X2J1ZmZlciBkYXRhOworICAgIH0gKmNtc2dzID0gTlVMTDsKKyAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKKyAgICBzaXplX3QgY29udHJvbGxlbiwgY29udHJvbGxlbl9sYXN0OworICAgIHNzaXplX3QgYnl0ZXNfc2VudCA9IC0xOworICAgIGludCBhZGRybGVuLCB0aW1lb3V0LCBmbGFncyA9IDA7CisgICAgUHlPYmplY3QgKmRhdGFfYXJnLCAqY21zZ19hcmcgPSBOVUxMLCAqYWRkcl9hcmcgPSBOVUxMLCAqZGF0YV9mYXN0ID0gTlVMTCwKKyAgICAgICAgKmNtc2dfZmFzdCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE9pTzpzZW5kbXNnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLCAmY21zZ19hcmcsICZmbGFncywgJmFkZHJfYXJnKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBQYXJzZSBkZXN0aW5hdGlvbiBhZGRyZXNzLiAqLworICAgIGlmIChhZGRyX2FyZyAhPSBOVUxMICYmIGFkZHJfYXJnICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFnZXRzb2NrYWRkcmFyZyhzLCBhZGRyX2FyZywgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBtc2cubXNnX25hbWUgPSAmYWRkcmJ1ZjsKKyAgICAgICAgbXNnLm1zZ19uYW1lbGVuID0gYWRkcmxlbjsKKyAgICB9CisKKyAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgorICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLworICAgIGlmICgoZGF0YV9mYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGRhdGFfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKSkgPT0gTlVMTCkKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIG5kYXRhcGFydHMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZGF0YV9mYXN0KTsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzZW5kbXNnKCkgYXJndW1lbnQgMSBpcyB0b28gbG9uZyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIG1zZy5tc2dfaW92bGVuID0gbmRhdGFwYXJ0czsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IDAgJiYKKyAgICAgICAgKChtc2cubXNnX2lvdiA9IGlvdnMgPSBQeU1lbV9OZXcoc3RydWN0IGlvdmVjLCBuZGF0YXBhcnRzKSkgPT0gTlVMTCB8fAorICAgICAgICAgKGRhdGFidWZzID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgbmRhdGFwYXJ0cykpID09IE5VTEwpKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgZm9yICg7IG5kYXRhYnVmcyA8IG5kYXRhcGFydHM7IG5kYXRhYnVmcysrKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGRhdGFfZmFzdCwgbmRhdGFidWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAieSo7c2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhYnVmc1tuZGF0YWJ1ZnNdKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9iYXNlID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5idWY7CisgICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfbGVuID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5sZW47CisgICAgfQorCisgICAgaWYgKGNtc2dfYXJnID09IE5VTEwpCisgICAgICAgIG5jbXNncyA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIGlmICgoY21zZ19mYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGNtc2dfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZG1zZygpIGFyZ3VtZW50IDIgbXVzdCBiZSBhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSIpKSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBuY21zZ3MgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoY21zZ19mYXN0KTsKKyAgICB9CisKKyNpZm5kZWYgQ01TR19TUEFDRQorICAgIGlmIChuY21zZ3MgPiAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNlbmRpbmcgbXVsdGlwbGUgY29udHJvbCBtZXNzYWdlcyBpcyBub3Qgc3VwcG9ydGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvbiB0aGlzIHN5c3RlbSIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorI2VuZGlmCisgICAgLyogU2F2ZSBsZXZlbCwgdHlwZSBhbmQgUHlfYnVmZmVyIGZvciBlYWNoIGNvbnRyb2wgbWVzc2FnZSwKKyAgICAgICBhbmQgY2FsY3VsYXRlIHRvdGFsIHNpemUuICovCisgICAgaWYgKG5jbXNncyA+IDAgJiYgKGNtc2dzID0gUHlNZW1fTmV3KHN0cnVjdCBjbXNnaW5mbywgbmNtc2dzKSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGNvbnRyb2xsZW4gPSBjb250cm9sbGVuX2xhc3QgPSAwOworICAgIHdoaWxlIChuY21zZ2J1ZnMgPCBuY21zZ3MpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZnNpemUsIHNwYWNlOworCisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGNtc2dfZmFzdCwgbmNtc2didWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiKGlpeSopOltzZW5kbXNnKCkgYW5jaWxsYXJ5IGRhdGEgaXRlbXNdIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmY21zZ3NbbmNtc2didWZzXS5sZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmY21zZ3NbbmNtc2didWZzXS50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICZjbXNnc1tuY21zZ2J1ZnNdLmRhdGEpKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBidWZzaXplID0gY21zZ3NbbmNtc2didWZzKytdLmRhdGEubGVuOworCisjaWZkZWYgQ01TR19TUEFDRQorICAgICAgICBpZiAoIWdldF9DTVNHX1NQQUNFKGJ1ZnNpemUsICZzcGFjZSkpIHsKKyNlbHNlCisgICAgICAgIGlmICghZ2V0X0NNU0dfTEVOKGJ1ZnNpemUsICZzcGFjZSkpIHsKKyNlbmRpZgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJhbmNpbGxhcnkgZGF0YSBpdGVtIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGNvbnRyb2xsZW4gKz0gc3BhY2U7CisgICAgICAgIGlmIChjb250cm9sbGVuID4gU09DS0xFTl9UX0xJTUlUIHx8IGNvbnRyb2xsZW4gPCBjb250cm9sbGVuX2xhc3QpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidG9vIG11Y2ggYW5jaWxsYXJ5IGRhdGEiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBjb250cm9sbGVuX2xhc3QgPSBjb250cm9sbGVuOworICAgIH0KKworICAgIC8qIENvbnN0cnVjdCBhbmNpbGxhcnkgZGF0YSBibG9jayBmcm9tIGNvbnRyb2wgbWVzc2FnZSBpbmZvLiAqLworICAgIGlmIChuY21zZ2J1ZnMgPiAwKSB7CisgICAgICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnaCA9IE5VTEw7CisKKyAgICAgICAgaWYgKChtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmID0KKyAgICAgICAgICAgICBQeU1lbV9NYWxsb2MoY29udHJvbGxlbikpID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgbXNnLm1zZ19jb250cm9sbGVuID0gY29udHJvbGxlbjsKKworICAgICAgICAvKiBOZWVkIHRvIHplcm8gb3V0IHRoZSBidWZmZXIgYXMgYSB3b3JrYXJvdW5kIGZvciBnbGliYydzCisgICAgICAgICAgIENNU0dfTlhUSERSKCkgaW1wbGVtZW50YXRpb24uICBBZnRlciBnZXR0aW5nIHRoZSBwb2ludGVyIHRvCisgICAgICAgICAgIHRoZSBuZXh0IGhlYWRlciwgaXQgY2hlY2tzIGl0cyAodW5pbml0aWFsaXplZCkgY21zZ19sZW4KKyAgICAgICAgICAgbWVtYmVyIHRvIHNlZSBpZiB0aGUgIm1lc3NhZ2UiIGZpdHMgaW4gdGhlIGJ1ZmZlciwgYW5kCisgICAgICAgICAgIHJldHVybnMgTlVMTCBpZiBpdCBkb2Vzbid0LiAgWmVyby1maWxsaW5nIHRoZSBidWZmZXIKKyAgICAgICAgICAgZW5zdXJlcyB0aGF0IHRoYXQgZG9lc24ndCBoYXBwZW4uICovCisgICAgICAgIG1lbXNldChjb250cm9sYnVmLCAwLCBjb250cm9sbGVuKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmNtc2didWZzOyBpKyspIHsKKyAgICAgICAgICAgIHNpemVfdCBtc2dfbGVuLCBkYXRhX2xlbiA9IGNtc2dzW2ldLmRhdGEubGVuOworICAgICAgICAgICAgaW50IGVub3VnaF9zcGFjZSA9IDA7CisKKyAgICAgICAgICAgIGNtc2doID0gKGkgPT0gMCkgPyBDTVNHX0ZJUlNUSERSKCZtc2cpIDogQ01TR19OWFRIRFIoJm1zZywgY21zZ2gpOworICAgICAgICAgICAgaWYgKGNtc2doID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBOVUxMIHJlc3VsdCBmcm9tICVzKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9PSAwKSA/ICJDTVNHX0ZJUlNUSERSIiA6ICJDTVNHX05YVEhEUiIpOworICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZ2V0X0NNU0dfTEVOKGRhdGFfbGVuLCAmbXNnX2xlbikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlbSBzaXplIG91dCBvZiByYW5nZSBmb3IgQ01TR19MRU4oKSIpOworICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjbXNnX21pbl9zcGFjZSgmbXNnLCBjbXNnaCwgbXNnX2xlbikpIHsKKyAgICAgICAgICAgICAgICBzaXplX3Qgc3BhY2U7CisKKyAgICAgICAgICAgICAgICBjbXNnaC0+Y21zZ19sZW4gPSBtc2dfbGVuOworICAgICAgICAgICAgICAgIGlmIChnZXRfY21zZ19kYXRhX3NwYWNlKCZtc2csIGNtc2doLCAmc3BhY2UpKQorICAgICAgICAgICAgICAgICAgICBlbm91Z2hfc3BhY2UgPSAoc3BhY2UgPj0gZGF0YV9sZW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFlbm91Z2hfc3BhY2UpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5jaWxsYXJ5IGRhdGEgZG9lcyBub3QgZml0IGluIGNhbGN1bGF0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BhY2UiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbXNnaC0+Y21zZ19sZXZlbCA9IGNtc2dzW2ldLmxldmVsOworICAgICAgICAgICAgY21zZ2gtPmNtc2dfdHlwZSA9IGNtc2dzW2ldLnR5cGU7CisgICAgICAgICAgICBtZW1jcHkoQ01TR19EQVRBKGNtc2doKSwgY21zZ3NbaV0uZGF0YS5idWYsIGRhdGFfbGVuKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIE1ha2UgdGhlIHN5c3RlbSBjYWxsLiAqLworICAgIGlmICghSVNfU0VMRUNUQUJMRShzKSkgeworICAgICAgICBzZWxlY3RfZXJyb3IoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDEsIGludGVydmFsKTsKKyAgICBpZiAoIXRpbWVvdXQpCisgICAgICAgIGJ5dGVzX3NlbnQgPSBzZW5kbXNnKHMtPnNvY2tfZmQsICZtc2csIGZsYWdzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAodGltZW91dCA9PSAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIEVORF9TRUxFQ1RfTE9PUChzKQorCisgICAgaWYgKGJ5dGVzX3NlbnQgPCAwKSB7CisgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIHJldHZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChieXRlc19zZW50KTsKKworZmluYWxseToKKyAgICBQeU1lbV9GcmVlKGNvbnRyb2xidWYpOworICAgIGZvciAoaSA9IDA7IGkgPCBuY21zZ2J1ZnM7IGkrKykKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmY21zZ3NbaV0uZGF0YSk7CisgICAgUHlNZW1fRnJlZShjbXNncyk7CisgICAgUHlfWERFQ1JFRihjbXNnX2Zhc3QpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZGF0YWJ1ZnM7IGkrKykKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YWJ1ZnNbaV0pOworICAgIFB5TWVtX0ZyZWUoZGF0YWJ1ZnMpOworICAgIFB5TWVtX0ZyZWUoaW92cyk7CisgICAgUHlfWERFQ1JFRihkYXRhX2Zhc3QpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihzZW5kbXNnX2RvYywKKyJzZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKSAtPiBjb3VudFxuXAorXG5cCitTZW5kIG5vcm1hbCBhbmQgYW5jaWxsYXJ5IGRhdGEgdG8gdGhlIHNvY2tldCwgZ2F0aGVyaW5nIHRoZVxuXAorbm9uLWFuY2lsbGFyeSBkYXRhIGZyb20gYSBzZXJpZXMgb2YgYnVmZmVycyBhbmQgY29uY2F0ZW5hdGluZyBpdCBpbnRvXG5cCithIHNpbmdsZSBtZXNzYWdlLiAgVGhlIGJ1ZmZlcnMgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBub24tYW5jaWxsYXJ5XG5cCitkYXRhIGFzIGFuIGl0ZXJhYmxlIG9mIGJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdHMgKGUuZy4gYnl0ZXMgb2JqZWN0cykuXG5cCitUaGUgYW5jZGF0YSBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGFuY2lsbGFyeSBkYXRhIChjb250cm9sIG1lc3NhZ2VzKVxuXAorYXMgYW4gaXRlcmFibGUgb2YgemVybyBvciBtb3JlIHR1cGxlcyAoY21zZ19sZXZlbCwgY21zZ190eXBlLFxuXAorY21zZ19kYXRhKSwgd2hlcmUgY21zZ19sZXZlbCBhbmQgY21zZ190eXBlIGFyZSBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZVxuXAorcHJvdG9jb2wgbGV2ZWwgYW5kIHByb3RvY29sLXNwZWNpZmljIHR5cGUgcmVzcGVjdGl2ZWx5LCBhbmQgY21zZ19kYXRhXG5cCitpcyBhIGJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBUaGUgZmxhZ3NcblwKK2FyZ3VtZW50IGRlZmF1bHRzIHRvIDAgYW5kIGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBzZW5kKCkuICBJZlxuXAorYWRkcmVzcyBpcyBzdXBwbGllZCBhbmQgbm90IE5vbmUsIGl0IHNldHMgYSBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvclxuXAordGhlIG1lc3NhZ2UuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2Ygbm9uLWFuY2lsbGFyeVxuXAorZGF0YSBzZW50LiIpOworI2VuZGlmICAgIC8qIENNU0dfTEVOICovCisKKwogLyogcy5zaHV0ZG93bihob3cpIG1ldGhvZCAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjg4Miw2ICszNzcxLDM0IEBACiBDb250cm9sIHRoZSBzb2NrZXQgd2l0aCBXU0FJb2N0bCBzeXNjYWxsLiBDdXJyZW50bHkgc3VwcG9ydGVkICdjbWQnIHZhbHVlcyBhcmVcblwKIFNJT19SQ1ZBTEw6ICAnb3B0aW9uJyBtdXN0IGJlIG9uZSBvZiB0aGUgc29ja2V0LlJDVkFMTF8qIGNvbnN0YW50cy5cblwKIFNJT19LRUVQQUxJVkVfVkFMUzogICdvcHRpb24nIGlzIGEgdHVwbGUgb2YgKG9ub2ZmLCB0aW1lb3V0LCBpbnRlcnZhbCkuIik7CisjZW5kaWYKKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKK3N0YXRpYyBQeU9iamVjdCoKK3NvY2tfc2hhcmUoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJnKQoreworICAgIFdTQVBST1RPQ09MX0lORk8gaW5mbzsKKyAgICBEV09SRCBwcm9jZXNzSWQ7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmcsICJJIiwgJnByb2Nlc3NJZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IFdTQUR1cGxpY2F0ZVNvY2tldChzLT5zb2NrX2ZkLCBwcm9jZXNzSWQsICZpbmZvKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXN1bHQgPT0gU09DS0VUX0VSUk9SKQorICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIqKSZpbmZvLCBzaXplb2YoaW5mbykpOworfQorUHlEb2NfU1RSVkFSKHNvY2tfc2hhcmVfZG9jLAorInNoYXJlKHByb2Nlc3NfaWQpIC0+IGJ5dGVzXG5cCitcblwKK1NoYXJlIHRoZSBzb2NrZXQgd2l0aCBhbm90aGVyIHByb2Nlc3MuICBUaGUgdGFyZ2V0IHByb2Nlc3MgaWRcblwKK211c3QgYmUgcHJvdmlkZWQgYW5kIHRoZSByZXN1bHRpbmcgYnl0ZXMgb2JqZWN0IHBhc3NlZCB0byB0aGUgdGFyZ2V0XG5cCitwcm9jZXNzLiAgVGhlcmUgdGhlIHNoYXJlZCBzb2NrZXQgY2FuIGJlIGluc3RhbnRpYXRlZCBieSBjYWxsaW5nXG5cCitzb2NrZXQuZnJvbXNoYXJlKCkuIik7CisKIAogI2VuZGlmCiAKQEAgLTI5MTQsNiArMzgzMSwxMCBAQAogICAgIHsiaW9jdGwiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19pb2N0bCwgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICAgICAgIHNvY2tfaW9jdGxfZG9jfSwKICNlbmRpZgorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICB7InNoYXJlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zaGFyZSwgTUVUSF9WQVJBUkdTLAorICAgICAgICAgICAgICAgICAgICAgIHNvY2tfc2hhcmVfZG9jfSwKKyNlbmRpZgogICAgIHsibGlzdGVuIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19saXN0ZW4sIE1FVEhfTywKICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5fZG9jfSwKICAgICB7InJlY3YiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfcmVjdiwgTUVUSF9WQVJBUkdTLApAQCAtMjk0MCw2ICszODYxLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgc2V0c29ja29wdF9kb2N9LAogICAgIHsic2h1dGRvd24iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zaHV0ZG93biwgTUVUSF9PLAogICAgICAgICAgICAgICAgICAgICAgIHNodXRkb3duX2RvY30sCisjaWZkZWYgQ01TR19MRU4KKyAgICB7InJlY3Ztc2ciLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfcmVjdm1zZywgTUVUSF9WQVJBUkdTLAorICAgICAgICAgICAgICAgICAgICAgIHJlY3Ztc2dfZG9jfSwKKyAgICB7InJlY3Ztc2dfaW50byIsICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfcmVjdm1zZ19pbnRvLCBNRVRIX1ZBUkFSR1MsCisgICAgICAgICAgICAgICAgICAgICAgcmVjdm1zZ19pbnRvX2RvYyx9LAorICAgIHsic2VuZG1zZyIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zZW5kbXNnLCBNRVRIX1ZBUkFSR1MsCisgICAgICAgICAgICAgICAgICAgICAgc2VuZG1zZ19kb2N9LAorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMzAzMywxMyArMzk2Miw0MCBAQAogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmRvYmogIT0gTlVMTCAmJiBmZG9iaiAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIGZkID0gUHlMb25nX0FzU29ja2V0X3QoZmRvYmopOwotICAgICAgICBpZiAoZmQgPT0gKFNPQ0tFVF9UKSgtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKGZkID09IElOVkFMSURfU09DS0VUKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIGludmFsaWQgc29ja2V0IHZhbHVlIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAvKiByZWNyZWF0ZSBhIHNvY2tldCB0aGF0IHdhcyBkdXBsaWNhdGVkICovCisgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKGZkb2JqKSkgeworICAgICAgICAgICAgV1NBUFJPVE9DT0xfSU5GTyBpbmZvOworICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoZmRvYmopICE9IHNpemVvZihpbmZvKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAic29ja2V0IGRlc2NyaXB0b3Igc3RyaW5nIGhhcyB3cm9uZyBzaXplLCAiCisgICAgICAgICAgICAgICAgICAgICJzaG91bGQgYmUgJXp1IGJ5dGVzLiIsIHNpemVvZihpbmZvKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtY3B5KCZpbmZvLCBQeUJ5dGVzX0FTX1NUUklORyhmZG9iaiksIHNpemVvZihpbmZvKSk7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBmZCA9IFdTQVNvY2tldChGUk9NX1BST1RPQ09MX0lORk8sIEZST01fUFJPVE9DT0xfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgIEZST01fUFJPVE9DT0xfSU5GTywgJmluZm8sIDAsIFdTQV9GTEFHX09WRVJMQVBQRUQpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGlmIChmZCA9PSBJTlZBTElEX1NPQ0tFVCkgeworICAgICAgICAgICAgICAgIHNldF9lcnJvcigpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZhbWlseSA9IGluZm8uaUFkZHJlc3NGYW1pbHk7CisgICAgICAgICAgICB0eXBlID0gaW5mby5pU29ja2V0VHlwZTsKKyAgICAgICAgICAgIHByb3RvID0gaW5mby5pUHJvdG9jb2w7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIGZkID0gUHlMb25nX0FzU29ja2V0X3QoZmRvYmopOworICAgICAgICAgICAgaWYgKGZkID09IChTT0NLRVRfVCkoLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKGZkID09IElOVkFMSURfU09DS0VUKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgaW52YWxpZCBzb2NrZXQgdmFsdWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CkBAIC0zMTE1LDI1ICs0MDcxLDM1IEBACiAgICAgICAgdmVyc2lvbiBvZiB0aGUgaG9zdG5hbWUsIHdoZXJlYXMgd2UgbmVlZCBhIFVuaWNvZGUgc3RyaW5nLgogICAgICAgIE90aGVyd2lzZSwgZ2V0aG9zdG5hbWUgYXBwYXJlbnRseSBhbHNvIHJldHVybnMgdGhlIEROUyBuYW1lLiAqLwogICAgIHdjaGFyX3QgYnVmW01BWF9DT01QVVRFUk5BTUVfTEVOR1RIICsgMV07Ci0gICAgRFdPUkQgc2l6ZSA9IHNpemVvZihidWYpIC8gc2l6ZW9mKHdjaGFyX3QpOworICAgIERXT1JEIHNpemUgPSBQeV9BUlJBWV9MRU5HVEgoYnVmKTsKKyAgICB3Y2hhcl90ICpuYW1lOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgaWYgKCFHZXRDb21wdXRlck5hbWVFeFcoQ29tcHV0ZXJOYW1lUGh5c2ljYWxEbnNIb3N0bmFtZSwgYnVmLCAmc2l6ZSkpIHsKLSAgICAgICAgaWYgKEdldExhc3RFcnJvcigpID09IEVSUk9SX01PUkVfREFUQSkgewotICAgICAgICAgICAgLyogTVNETiBzYXlzIHRoaXMgbWF5IG9jY3VyICJiZWNhdXNlIEROUyBhbGxvd3MgbG9uZ2VyIG5hbWVzICovCi0gICAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSAvKiBYWFg6IEknbSBub3Qgc3VyZSBob3cgdG8gaGFuZGxlIHRoaXMgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOwotICAgICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNpemUgLSAxKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaWYgKEdldENvbXB1dGVyTmFtZUV4VyhDb21wdXRlck5hbWVQaHlzaWNhbERuc0hvc3RuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19XaW5kb3dzRXJyb3IsIEdldExhc3RFcnJvcigpKTsKKworICAgIGlmIChHZXRDb21wdXRlck5hbWVFeFcoQ29tcHV0ZXJOYW1lUGh5c2ljYWxEbnNIb3N0bmFtZSwgYnVmLCAmc2l6ZSkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGJ1Ziwgc2l6ZSk7CisKKyAgICBpZiAoR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTU9SRV9EQVRBKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBpZiAoc2l6ZSA9PSAwKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX05ldygwLCAwKTsKKworICAgIC8qIE1TRE4gc2F5cyBFUlJPUl9NT1JFX0RBVEEgbWF5IG9jY3VyIGJlY2F1c2UgRE5TIGFsbG93cyBsb25nZXIKKyAgICAgICBuYW1lcyAqLworICAgIG5hbWUgPSBQeU1lbV9NYWxsb2Moc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIUdldENvbXB1dGVyTmFtZUV4VyhDb21wdXRlck5hbWVQaHlzaWNhbERuc0hvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaXplKSkKKyAgICB7CisgICAgICAgIFB5TWVtX0ZyZWUobmFtZSk7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShidWYsIHNpemUpOyAgICAgICAgICAgIAorCisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihuYW1lLCBzaXplKTsKKyAgICBQeU1lbV9GcmVlKG5hbWUpOworICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIGNoYXIgYnVmWzEwMjRdOwogICAgIGludCByZXM7CkBAIC0zMTUyLDYgKzQxMTgsMzcgQEAKIFxuXAogUmV0dXJuIHRoZSBjdXJyZW50IGhvc3QgbmFtZS4iKTsKIAorI2lmZGVmIEhBVkVfU0VUSE9TVE5BTUUKK1B5RG9jX1NUUlZBUihzZXRob3N0bmFtZV9kb2MsCisic2V0aG9zdG5hbWUobmFtZSlcblxuXAorU2V0cyB0aGUgaG9zdG5hbWUgdG8gbmFtZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9zZXRob3N0bmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmhub2JqOworICAgIFB5X2J1ZmZlciBidWY7CisgICAgaW50IHJlcywgZmxhZyA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlM6c2V0aG9zdG5hbWUiLCAmaG5vYmopKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6c2V0aG9zdG5hbWUiLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmhub2JqKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmbGFnID0gMTsKKyAgICB9CisgICAgcmVzID0gUHlPYmplY3RfR2V0QnVmZmVyKGhub2JqLCAmYnVmLCBQeUJVRl9TSU1QTEUpOworICAgIGlmICghcmVzKSB7CisgICAgICAgIHJlcyA9IHNldGhvc3RuYW1lKGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKyAgICBpZiAoZmxhZykKKyAgICAgICAgUHlfREVDUkVGKGhub2JqKTsKKyAgICBpZiAocmVzKQorICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKIAogLyogUHl0aG9uIGludGVyZmFjZSB0byBnZXRob3N0YnluYW1lKG5hbWUpLiAqLwogCkBAIC0zMTk4LDkgKzQxOTUsOCBAQAogCiAgICAgaWYgKGgtPmhfYWRkcnR5cGUgIT0gYWYpIHsKICAgICAgICAgLyogTGV0J3MgZ2V0IHJlYWwgZXJyb3IgbWVzc2FnZSB0byByZXR1cm4gKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RyZXJyb3IoRUFGTk9TVVBQT1JUKSk7Ci0KKyAgICAgICAgZXJybm8gPSBFQUZOT1NVUFBPUlQ7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0zMjgzLDcgKzQyNzksNyBAQAogI2VuZGlmCiAKICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgLyogY2FuJ3QgaGFwcGVuICovCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMzMxNSwxMSArNDMxMSw3IEBACiB7CiAgICAgY2hhciAqbmFtZTsKICAgICBzdHJ1Y3QgaG9zdGVudCAqaDsKLSNpZmRlZiBFTkFCTEVfSVBWNgotICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGFkZHI7Ci0jZWxzZQotICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwotI2VuZGlmCisgICAgc29ja19hZGRyX3QgYWRkcjsKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhOwogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwogI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCkBAIC0zMzMxLDE5ICs0MzIzLDE5IEBACiAgICAgaW50IGJ1Zl9sZW4gPSAoc2l6ZW9mIGJ1ZikgLSAxOwogICAgIGludCBlcnJub3A7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHKSB8fCBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHKQorI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgogI2VuZGlmIC8qIEhBVkVfR0VUSE9TVEJZTkFNRV9SICovCiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImV0OmdldGhvc3RieW5hbWVfZXgiLCAiaWRuYSIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNldGlwYWRkcihuYW1lLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSwgQUZfSU5FVCkgPCAwKQorICAgIGlmIChzZXRpcGFkZHIobmFtZSwgU0FTMlNBKCZhZGRyKSwgc2l6ZW9mKGFkZHIpLCBBRl9JTkVUKSA8IDApCiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKICNpZiAgIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcpCi0gICAgcmVzdWx0ID0gZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsICZocF9hbGxvY2F0ZWQsIGJ1ZiwgYnVmX2xlbiwKKyAgICBnZXRob3N0YnluYW1lX3IobmFtZSwgJmhwX2FsbG9jYXRlZCwgYnVmLCBidWZfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaCwgJmVycm5vcCk7CiAjZWxpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzVfQVJHKQogICAgIGggPSBnZXRob3N0YnluYW1lX3IobmFtZSwgJmhwX2FsbG9jYXRlZCwgYnVmLCBidWZfbGVuLCAmZXJybm9wKTsKQEAgLTMzNjMsOCArNDM1NSw4IEBACiAgICAgICAgYWRkci5zc19mYW1pbHkuCiAgICAgICAgVGhlcmVmb3JlLCB3ZSBjYXN0IHRoZSBzb2NrYWRkcl9zdG9yYWdlIGludG8gc29ja2FkZHIgdG8KICAgICAgICBhY2Nlc3Mgc2FfZmFtaWx5LiAqLwotICAgIHNhID0gKHN0cnVjdCBzb2NrYWRkciopJmFkZHI7Ci0gICAgcmV0ID0gZ2V0aG9zdF9jb21tb24oaCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkciksCisgICAgc2EgPSBTQVMyU0EoJmFkZHIpOworICAgIHJldCA9IGdldGhvc3RfY29tbW9uKGgsIFNBUzJTQSgmYWRkciksIHNpemVvZihhZGRyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzYS0+c2FfZmFtaWx5KTsKICNpZmRlZiBVU0VfR0VUSE9TVEJZTkFNRV9MT0NLCiAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKG5ldGRiX2xvY2spOwpAQCAtMzM4NywxMiArNDM3OSw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja2V0X2dldGhvc3RieWFkZHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotI2lmZGVmIEVOQUJMRV9JUFY2Ci0gICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgYWRkcjsKLSNlbHNlCi0gICAgc3RydWN0IHNvY2thZGRyX2luIGFkZHI7Ci0jZW5kaWYKLSAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhID0gKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyOworICAgIHNvY2tfYWRkcl90IGFkZHI7CisgICAgc3RydWN0IHNvY2thZGRyICpzYSA9IFNBUzJTQSgmYWRkcik7CiAgICAgY2hhciAqaXBfbnVtOwogICAgIHN0cnVjdCBob3N0ZW50ICpoOwogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwpAQCAtMzQwOSw3ICs0Mzk3LDcgQEAKICAgICBpbnQgYnVmX2xlbiA9IChzaXplb2YgYnVmKSAtIDE7CiAgICAgaW50IGVycm5vcDsKICNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcpIHx8IGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcpCisjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcKICAgICBpbnQgcmVzdWx0OwogI2VuZGlmCiAjZW5kaWYgLyogSEFWRV9HRVRIT1NUQllOQU1FX1IgKi8KQEAgLTM0MjQsNyArNDQxMiw3IEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBhZiA9IHNhLT5zYV9mYW1pbHk7CiAgICAgYXAgPSBOVUxMOwotICAgIGFsID0gMDsKKyAgICAvKiBhbCA9IDA7ICovCiAgICAgc3dpdGNoIChhZikgewogICAgIGNhc2UgQUZfSU5FVDoKICAgICAgICAgYXAgPSAoY2hhciAqKSYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXNhKS0+c2luX2FkZHI7CkBAIC0zNDM3LDEzICs0NDI1LDEzIEBACiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5zdXBwb3J0ZWQgYWRkcmVzcyBmYW1pbHkiKTsKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKICNpZiAgIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcpCi0gICAgcmVzdWx0ID0gZ2V0aG9zdGJ5YWRkcl9yKGFwLCBhbCwgYWYsCisgICAgZ2V0aG9zdGJ5YWRkcl9yKGFwLCBhbCwgYWYsCiAgICAgICAgICZocF9hbGxvY2F0ZWQsIGJ1ZiwgYnVmX2xlbiwKICAgICAgICAgJmgsICZlcnJub3ApOwogI2VsaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRykKQEAgLTM0NjEsNyArNDQ0OSw3IEBACiAgICAgaCA9IGdldGhvc3RieWFkZHIoYXAsIGFsLCBhZik7CiAjZW5kaWYgLyogSEFWRV9HRVRIT1NUQllOQU1FX1IgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IGdldGhvc3RfY29tbW9uKGgsIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpLCBhZik7CisgICAgcmV0ID0gZ2V0aG9zdF9jb21tb24oaCwgU0FTMlNBKCZhZGRyKSwgc2l6ZW9mKGFkZHIpLCBhZik7CiAjaWZkZWYgVVNFX0dFVEhPU1RCWU5BTUVfTE9DSwogICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhuZXRkYl9sb2NrKTsKICNlbmRpZgpAQCAtMzQ5Myw3ICs0NDgxLDcgQEAKICAgICBzcCA9IGdldHNlcnZieW5hbWUobmFtZSwgcHJvdG8pOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHNwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInNlcnZpY2UvcHJvdG8gbm90IGZvdW5kIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic2VydmljZS9wcm90byBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIG50b2hzKHNwLT5zX3BvcnQpKTsKQEAgLTM1MzAsNyArNDUxOCw3IEBACiAgICAgc3AgPSBnZXRzZXJ2Ynlwb3J0KGh0b25zKChzaG9ydClwb3J0KSwgcHJvdG8pOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHNwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInBvcnQvcHJvdG8gbm90IGZvdW5kIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAicG9ydC9wcm90byBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhzcC0+c19uYW1lKTsKQEAgLTM1NTksNyArNDU0Nyw3IEBACiAgICAgc3AgPSBnZXRwcm90b2J5bmFtZShuYW1lKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChzcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJwcm90b2NvbCBub3QgZm91bmQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJwcm90b2NvbCBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHNwLT5wX3Byb3RvKTsKQEAgLTM4MTQsNyArNDgwMiw3IEBACiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopKCZidWYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGJ1ZikpOwogCi0gICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgSVAgYWRkcmVzcyBzdHJpbmcgcGFzc2VkIHRvIGluZXRfYXRvbiIpOwogICAgIHJldHVybiBOVUxMOwogCkBAIC0zODM1LDcgKzQ4MjMsNyBAQAogICAgICAgICBwYWNrZWRfYWRkciA9IGluZXRfYWRkcihpcF9hZGRyKTsKIAogICAgICAgICBpZiAocGFja2VkX2FkZHIgPT0gSU5BRERSX05PTkUpIHsgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGFkZHJlc3MgKi8KLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAiaWxsZWdhbCBJUCBhZGRyZXNzIHN0cmluZyBwYXNzZWQgdG8gaW5ldF9hdG9uIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMzg2Nyw3ICs0ODU1LDcgQEAKICAgICB9CiAKICAgICBpZiAoYWRkcl9sZW4gIT0gc2l6ZW9mKHBhY2tlZF9hZGRyKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICJwYWNrZWQgSVAgd3JvbmcgbGVuZ3RoIGZvciBpbmV0X250b2EiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMzkwMiw3ICs0ODkwLDcgQEAKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9JUFY2KSAmJiBkZWZpbmVkKEFGX0lORVQ2KQogICAgIGlmKGFmID09IEFGX0lORVQ2KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBBRl9JTkVUNiwgSVB2NiBpcyBkaXNhYmxlZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0zOTEwLDEwICs0ODk4LDEwIEBACiAKICAgICByZXR2YWwgPSBpbmV0X3B0b24oYWYsIGlwLCBwYWNrZWQpOwogICAgIGlmIChyZXR2YWwgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhzb2NrZXRfZXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSBpZiAocmV0dmFsID09IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAiaWxsZWdhbCBJUCBhZGRyZXNzIHN0cmluZyBwYXNzZWQgdG8gaW5ldF9wdG9uIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSBpZiAoYWYgPT0gQUZfSU5FVCkgewpAQCAtMzkyNSw3ICs0OTEzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKICNlbmRpZgogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJ1bmtub3duIGFkZHJlc3MgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5rbm93biBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiB9CkBAIC0zOTc3LDcgKzQ5NjUsNyBAQAogCiAgICAgcmV0dmFsID0gaW5ldF9udG9wKGFmLCBwYWNrZWQsIGlwLCBzaXplb2YoaXApKTsKICAgICBpZiAoIXJldHZhbCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oc29ja2V0X2Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcocmV0dmFsKTsKQEAgLTM5OTYsNyArNDk4NCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja2V0X2dldGFkZHJpbmZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QqIGt3YXJncykKIHsKLSAgICBzdGF0aWMgY2hhcioga3duYW1lc1tdID0geyJob3N0IiwgInBvcnQiLCAiZmFtaWx5IiwgInR5cGUiLCAicHJvdG8iLCAKKyAgICBzdGF0aWMgY2hhcioga3duYW1lc1tdID0geyJob3N0IiwgInBvcnQiLCAiZmFtaWx5IiwgInR5cGUiLCAicHJvdG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWdzIiwgMH07CiAgICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzLCAqcmVzOwogICAgIHN0cnVjdCBhZGRyaW5mbyAqcmVzMCA9IE5VTEw7CkBAIC00MDExLDcgKzQ5OTksNyBAQAogCiAgICAgZmFtaWx5ID0gc29ja3R5cGUgPSBwcm90b2NvbCA9IGZsYWdzID0gMDsKICAgICBmYW1pbHkgPSBBRl9VTlNQRUM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098aWlpaTpnZXRhZGRyaW5mbyIsIAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfGlpaWk6Z2V0YWRkcmluZm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICBrd25hbWVzLCAmaG9iaiwgJnBvYmosICZmYW1pbHksICZzb2NrdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb3RvY29sLCAmZmxhZ3MpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDAxOSw3ICs1MDA3LDkgQEAKICAgICBpZiAoaG9iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIGhwdHIgPSBOVUxMOwogICAgIH0gZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGhvYmopKSB7Ci0gICAgICAgIGlkbmEgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGhvYmosICJlbmNvZGUiLCAicyIsICJpZG5hIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGVuY29kZSk7CisKKyAgICAgICAgaWRuYSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaG9iaiwgJlB5SWRfZW5jb2RlLCAicyIsICJpZG5hIik7CiAgICAgICAgIGlmICghaWRuYSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhpZG5hKSk7CkBAIC00MDQ2LDcgKzUwMzYsNyBAQAogICAgIH0gZWxzZSBpZiAocG9iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIHBwdHIgPSAoY2hhciAqKU5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgIkludCBvciBTdHJpbmcgZXhwZWN0ZWQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJJbnQgb3IgU3RyaW5nIGV4cGVjdGVkIik7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KICAgICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKQEAgLTQxNDksNyArNTEzOSw3IEBACiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAgICAgaWYgKHJlcy0+YWlfbmV4dCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICJzb2NrYWRkciByZXNvbHZlZCB0byBtdWx0aXBsZSBhZGRyZXNzZXMiKTsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KQEAgLTQxNTcsNyArNTE0Nyw3IEBACiAgICAgY2FzZSBBRl9JTkVUOgogICAgICAgICB7CiAgICAgICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKHNhKSAhPSAyKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgIklQdjQgc29ja2FkZHIgbXVzdCBiZSAyIHR1cGxlIik7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KQEAgLTQyNDQsNiArNTIzNCwxNjMgQEAKIEEgdmFsdWUgb2YgTm9uZSBpbmRpY2F0ZXMgdGhhdCBuZXcgc29ja2V0IG9iamVjdHMgaGF2ZSBubyB0aW1lb3V0LlxuXAogV2hlbiB0aGUgc29ja2V0IG1vZHVsZSBpcyBmaXJzdCBpbXBvcnRlZCwgdGhlIGRlZmF1bHQgaXMgTm9uZS4iKTsKIAorI2lmZGVmIEhBVkVfSUZfTkFNRUlOREVYCisvKiBQeXRob24gQVBJIGZvciBnZXR0aW5nIGludGVyZmFjZSBpbmRpY2VzIGFuZCBuYW1lcyAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja2V0X2lmX25hbWVpbmRleChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBpbnQgaTsKKyAgICBzdHJ1Y3QgaWZfbmFtZWluZGV4ICpuaTsKKworICAgIG5pID0gaWZfbmFtZWluZGV4KCk7CisgICAgaWYgKG5pID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKSB7CisgICAgICAgIGlmX2ZyZWVuYW1laW5kZXgobmkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBuaVtpXS5pZl9pbmRleCAhPSAwICYmIGkgPCBJTlRfTUFYOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKm5pX3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiSU8mIiwKKyAgICAgICAgICAgICAgICBuaVtpXS5pZl9pbmRleCwgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCwgbmlbaV0uaWZfbmFtZSk7CisKKyAgICAgICAgaWYgKG5pX3R1cGxlID09IE5VTEwgfHwgUHlMaXN0X0FwcGVuZChsaXN0LCBuaV90dXBsZSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobmlfdHVwbGUpOworICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgaWZfZnJlZW5hbWVpbmRleChuaSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYobmlfdHVwbGUpOworICAgIH0KKworICAgIGlmX2ZyZWVuYW1laW5kZXgobmkpOworICAgIHJldHVybiBsaXN0OworfQorCitQeURvY19TVFJWQVIoaWZfbmFtZWluZGV4X2RvYywKKyJpZl9uYW1laW5kZXgoKVxuXAorXG5cCitSZXR1cm5zIGEgbGlzdCBvZiBuZXR3b3JrIGludGVyZmFjZSBpbmZvcm1hdGlvbiAoaW5kZXgsIG5hbWUpIHR1cGxlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9pZl9uYW1ldG9pbmRleChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9uYW1lOworICAgIHVuc2lnbmVkIGxvbmcgaW5kZXg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmlmX25hbWV0b2luZGV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb25hbWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGluZGV4ID0gaWZfbmFtZXRvaW5kZXgoUHlCeXRlc19BU19TVFJJTkcob25hbWUpKTsKKyAgICBQeV9ERUNSRUYob25hbWUpOworICAgIGlmIChpbmRleCA9PSAwKSB7CisgICAgICAgIC8qIGlmX25hbWV0b2luZGV4KCkgZG9lc24ndCBzZXQgZXJybm8gKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJubyBpbnRlcmZhY2Ugd2l0aCB0aGlzIG5hbWUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGluZGV4KTsKK30KKworUHlEb2NfU1RSVkFSKGlmX25hbWV0b2luZGV4X2RvYywKKyJpZl9uYW1ldG9pbmRleChpZl9uYW1lKVxuXAorXG5cCitSZXR1cm5zIHRoZSBpbnRlcmZhY2UgaW5kZXggY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJmYWNlIG5hbWUgaWZfbmFtZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9pZl9pbmRleHRvbmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICB1bnNpZ25lZCBsb25nIGluZGV4OworICAgIGNoYXIgbmFtZVtJRl9OQU1FU0laRSArIDFdOworCisgICAgaW5kZXggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcoYXJnKTsKKyAgICBpZiAoaW5kZXggPT0gKHVuc2lnbmVkIGxvbmcpIC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChpZl9pbmRleHRvbmFtZShpbmRleCwgbmFtZSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KG5hbWUpOworfQorCitQeURvY19TVFJWQVIoaWZfaW5kZXh0b25hbWVfZG9jLAorImlmX2luZGV4dG9uYW1lKGlmX2luZGV4KVxuXAorXG5cCitSZXR1cm5zIHRoZSBpbnRlcmZhY2UgbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcmZhY2UgaW5kZXggaWZfaW5kZXguIik7CisKKyNlbmRpZiAgLyogSEFWRV9JRl9OQU1FSU5ERVggKi8KKworCisjaWZkZWYgQ01TR19MRU4KKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gQ01TR19MRU4obGVuZ3RoKS4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9DTVNHX0xFTihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgc2l6ZV90IHJlc3VsdDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjpDTVNHX0xFTiIsICZsZW5ndGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobGVuZ3RoIDwgMCB8fCAhZ2V0X0NNU0dfTEVOKGxlbmd0aCwgJnJlc3VsdCkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsICJDTVNHX0xFTigpIGFyZ3VtZW50IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUihDTVNHX0xFTl9kb2MsCisiQ01TR19MRU4obGVuZ3RoKSAtPiBjb250cm9sIG1lc3NhZ2UgbGVuZ3RoXG5cCitcblwKK1JldHVybiB0aGUgdG90YWwgbGVuZ3RoLCB3aXRob3V0IHRyYWlsaW5nIHBhZGRpbmcsIG9mIGFuIGFuY2lsbGFyeVxuXAorZGF0YSBpdGVtIHdpdGggYXNzb2NpYXRlZCBkYXRhIG9mIHRoZSBnaXZlbiBsZW5ndGguICBUaGlzIHZhbHVlIGNhblxuXAorb2Z0ZW4gYmUgdXNlZCBhcyB0aGUgYnVmZmVyIHNpemUgZm9yIHJlY3Ztc2coKSB0byByZWNlaXZlIGEgc2luZ2xlXG5cCitpdGVtIG9mIGFuY2lsbGFyeSBkYXRhLCBidXQgUkZDIDM1NDIgcmVxdWlyZXMgcG9ydGFibGUgYXBwbGljYXRpb25zIHRvXG5cCit1c2UgQ01TR19TUEFDRSgpIGFuZCB0aHVzIGluY2x1ZGUgc3BhY2UgZm9yIHBhZGRpbmcsIGV2ZW4gd2hlbiB0aGVcblwKK2l0ZW0gd2lsbCBiZSB0aGUgbGFzdCBpbiB0aGUgYnVmZmVyLiAgUmFpc2VzIE92ZXJmbG93RXJyb3IgaWYgbGVuZ3RoXG5cCitpcyBvdXRzaWRlIHRoZSBwZXJtaXNzaWJsZSByYW5nZSBvZiB2YWx1ZXMuIik7CisKKworI2lmZGVmIENNU0dfU1BBQ0UKKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gQ01TR19TUEFDRShsZW5ndGgpLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja2V0X0NNU0dfU1BBQ0UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIHNpemVfdCByZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46Q01TR19TUEFDRSIsICZsZW5ndGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobGVuZ3RoIDwgMCB8fCAhZ2V0X0NNU0dfU1BBQ0UobGVuZ3RoLCAmcmVzdWx0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDTVNHX1NQQUNFKCkgYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21TaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSKENNU0dfU1BBQ0VfZG9jLAorIkNNU0dfU1BBQ0UobGVuZ3RoKSAtPiBidWZmZXIgc2l6ZVxuXAorXG5cCitSZXR1cm4gdGhlIGJ1ZmZlciBzaXplIG5lZWRlZCBmb3IgcmVjdm1zZygpIHRvIHJlY2VpdmUgYW4gYW5jaWxsYXJ5XG5cCitkYXRhIGl0ZW0gd2l0aCBhc3NvY2lhdGVkIGRhdGEgb2YgdGhlIGdpdmVuIGxlbmd0aCwgYWxvbmcgd2l0aCBhbnlcblwKK3RyYWlsaW5nIHBhZGRpbmcuICBUaGUgYnVmZmVyIHNwYWNlIG5lZWRlZCB0byByZWNlaXZlIG11bHRpcGxlIGl0ZW1zXG5cCitpcyB0aGUgc3VtIG9mIHRoZSBDTVNHX1NQQUNFKCkgdmFsdWVzIGZvciB0aGVpciBhc3NvY2lhdGVkIGRhdGFcblwKK2xlbmd0aHMuICBSYWlzZXMgT3ZlcmZsb3dFcnJvciBpZiBsZW5ndGggaXMgb3V0c2lkZSB0aGUgcGVybWlzc2libGVcblwKK3JhbmdlIG9mIHZhbHVlcy4iKTsKKyNlbmRpZiAgICAvKiBDTVNHX1NQQUNFICovCisjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KKwogCiAvKiBMaXN0IG9mIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKi8KIApAQCAtNDI1Niw2ICs1NDAzLDEwIEBACiAgICAgIE1FVEhfVkFSQVJHUywgZ2V0aG9zdGJ5YWRkcl9kb2N9LAogICAgIHsiZ2V0aG9zdG5hbWUiLCAgICAgICAgICAgICBzb2NrZXRfZ2V0aG9zdG5hbWUsCiAgICAgIE1FVEhfTk9BUkdTLCAgZ2V0aG9zdG5hbWVfZG9jfSwKKyNpZmRlZiBIQVZFX1NFVEhPU1ROQU1FCisgICAgeyJzZXRob3N0bmFtZSIsICAgICAgICAgICAgIHNvY2tldF9zZXRob3N0bmFtZSwKKyAgICAgTUVUSF9WQVJBUkdTLCAgc2V0aG9zdG5hbWVfZG9jfSwKKyNlbmRpZgogICAgIHsiZ2V0c2VydmJ5bmFtZSIsICAgICAgICAgICBzb2NrZXRfZ2V0c2VydmJ5bmFtZSwKICAgICAgTUVUSF9WQVJBUkdTLCBnZXRzZXJ2YnluYW1lX2RvY30sCiAgICAgeyJnZXRzZXJ2Ynlwb3J0IiwgICAgICAgICAgIHNvY2tldF9nZXRzZXJ2Ynlwb3J0LApAQCAtNDI5Niw2ICs1NDQ3LDIyIEBACiAgICAgIE1FVEhfTk9BUkdTLCBnZXRkZWZhdWx0dGltZW91dF9kb2N9LAogICAgIHsic2V0ZGVmYXVsdHRpbWVvdXQiLCAgICAgICBzb2NrZXRfc2V0ZGVmYXVsdHRpbWVvdXQsCiAgICAgIE1FVEhfTywgc2V0ZGVmYXVsdHRpbWVvdXRfZG9jfSwKKyNpZmRlZiBIQVZFX0lGX05BTUVJTkRFWAorICAgIHsiaWZfbmFtZWluZGV4Iiwgc29ja2V0X2lmX25hbWVpbmRleCwKKyAgICAgTUVUSF9OT0FSR1MsIGlmX25hbWVpbmRleF9kb2N9LAorICAgIHsiaWZfbmFtZXRvaW5kZXgiLCBzb2NrZXRfaWZfbmFtZXRvaW5kZXgsCisgICAgIE1FVEhfVkFSQVJHUywgaWZfbmFtZXRvaW5kZXhfZG9jfSwKKyAgICB7ImlmX2luZGV4dG9uYW1lIiwgc29ja2V0X2lmX2luZGV4dG9uYW1lLAorICAgICBNRVRIX08sIGlmX2luZGV4dG9uYW1lX2RvY30sCisjZW5kaWYKKyNpZmRlZiBDTVNHX0xFTgorICAgIHsiQ01TR19MRU4iLCAgICAgICAgICAgICAgICBzb2NrZXRfQ01TR19MRU4sCisgICAgIE1FVEhfVkFSQVJHUywgQ01TR19MRU5fZG9jfSwKKyNpZmRlZiBDTVNHX1NQQUNFCisgICAgeyJDTVNHX1NQQUNFIiwgICAgICAgICAgICAgIHNvY2tldF9DTVNHX1NQQUNFLAorICAgICBNRVRIX1ZBUkFSR1MsIENNU0dfU1BBQ0VfZG9jfSwKKyNlbmRpZgorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTQ0MjgsMjcgKzU1OTUsMjQgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHNvY2tldF9lcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LmVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfSU9FcnJvciwgTlVMTCk7Ci0gICAgaWYgKHNvY2tldF9lcnJvciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeVNvY2tldE1vZHVsZUFQSS5lcnJvciA9IHNvY2tldF9lcnJvcjsKLSAgICBQeV9JTkNSRUYoc29ja2V0X2Vycm9yKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgc29ja2V0X2Vycm9yKTsKKyAgICBQeV9JTkNSRUYoUHlFeGNfT1NFcnJvcik7CisgICAgUHlTb2NrZXRNb2R1bGVBUEkuZXJyb3IgPSBQeUV4Y19PU0Vycm9yOworICAgIFB5X0lOQ1JFRihQeUV4Y19PU0Vycm9yKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgUHlFeGNfT1NFcnJvcik7CiAgICAgc29ja2V0X2hlcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LmhlcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRfZXJyb3IsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfT1NFcnJvciwgTlVMTCk7CiAgICAgaWYgKHNvY2tldF9oZXJyb3IgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvY2tldF9oZXJyb3IpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaGVycm9yIiwgc29ja2V0X2hlcnJvcik7Ci0gICAgc29ja2V0X2dhaWVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzb2NrZXQuZ2FpZXJyb3IiLCBzb2NrZXRfZXJyb3IsCisgICAgc29ja2V0X2dhaWVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzb2NrZXQuZ2FpZXJyb3IiLCBQeUV4Y19PU0Vycm9yLAogICAgICAgICBOVUxMKTsKICAgICBpZiAoc29ja2V0X2dhaWVycm9yID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihzb2NrZXRfZ2FpZXJyb3IpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZ2FpZXJyb3IiLCBzb2NrZXRfZ2FpZXJyb3IpOwogICAgIHNvY2tldF90aW1lb3V0ID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzb2NrZXQudGltZW91dCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0X2Vycm9yLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19PU0Vycm9yLCBOVUxMKTsKICAgICBpZiAoc29ja2V0X3RpbWVvdXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlTb2NrZXRNb2R1bGVBUEkudGltZW91dF9lcnJvciA9IHNvY2tldF90aW1lb3V0OwpAQCAtNDYzNCw2ICs1Nzk4LDMxIEBACiAgICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIkJEQUREUl9MT0NBTCIsICIwMDowMDowMDpGRjpGRjpGRiIpOwogI2VuZGlmCiAKKyNpZmRlZiBBRl9DQU4KKyAgICAvKiBDb250cm9sbGVyIEFyZWEgTmV0d29yayAqLworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9DQU4iLCBBRl9DQU4pOworI2VuZGlmCisjaWZkZWYgUEZfQ0FOCisgICAgLyogQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUEZfQ0FOIiwgUEZfQ0FOKTsKKyNlbmRpZgorCisvKiBSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzICovCisjaWZkZWYgQUZfUkRTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX1JEUyIsIEFGX1JEUyk7CisjZW5kaWYKKyNpZmRlZiBQRl9SRFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUEZfUkRTIiwgUEZfUkRTKTsKKyNlbmRpZgorCisvKiBLZXJuZWwgZXZlbnQgbWVzc2FnZXMgKi8KKyNpZmRlZiBQRl9TWVNURU0KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUEZfU1lTVEVNIiwgUEZfU1lTVEVNKTsKKyNlbmRpZgorI2lmZGVmIEFGX1NZU1RFTQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9TWVNURU0iLCBBRl9TWVNURU0pOworI2VuZGlmCisKICNpZmRlZiBBRl9QQUNLRVQKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9QQUNLRVQpOwogI2VuZGlmCkBAIC00NzgzLDYgKzU5NzIsMTggQEAKICNpZmRlZiAgU09fU0VURklCCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX1NFVEZJQiIsIFNPX1NFVEZJQik7CiAjZW5kaWYKKyNpZmRlZiAgU09fUEFTU0NSRUQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fUEFTU0NSRUQiLCBTT19QQVNTQ1JFRCk7CisjZW5kaWYKKyNpZmRlZiAgU09fUEVFUkNSRUQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fUEVFUkNSRUQiLCBTT19QRUVSQ1JFRCk7CisjZW5kaWYKKyNpZmRlZiAgTE9DQUxfUEVFUkNSRUQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9DQUxfUEVFUkNSRUQiLCBMT0NBTF9QRUVSQ1JFRCk7CisjZW5kaWYKKyNpZmRlZiAgU09fQklORFRPREVWSUNFCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fQklORFRPREVWSUNFKTsKKyNlbmRpZgogCiAgICAgLyogTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgZm9yICJsaXN0ZW4iICovCiAjaWZkZWYgIFNPTUFYQ09OTgpAQCAtNDc5MSw2ICs1OTkyLDE3IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTUFYQ09OTiIsIDUpOyAvKiBDb21tb24gdmFsdWUgKi8KICNlbmRpZgogCisgICAgLyogQW5jaWxsaWFyeSBtZXNzYWdlIHR5cGVzICovCisjaWZkZWYgIFNDTV9SSUdIVFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0NNX1JJR0hUUyIsIFNDTV9SSUdIVFMpOworI2VuZGlmCisjaWZkZWYgIFNDTV9DUkVERU5USUFMUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTQ01fQ1JFREVOVElBTFMiLCBTQ01fQ1JFREVOVElBTFMpOworI2VuZGlmCisjaWZkZWYgIFNDTV9DUkVEUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTQ01fQ1JFRFMiLCBTQ01fQ1JFRFMpOworI2VuZGlmCisKICAgICAvKiBGbGFncyBmb3Igc2VuZCwgcmVjdiAqLwogI2lmZGVmICBNU0dfT09CCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19PT0IiLCBNU0dfT09CKTsKQEAgLTQ4MjIsNiArNjAzNCwzMyBAQAogI2lmZGVmICBNU0dfRVRBRwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfRVRBRyIsIE1TR19FVEFHKTsKICNlbmRpZgorI2lmZGVmICBNU0dfTk9TSUdOQUwKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX05PU0lHTkFMIiwgTVNHX05PU0lHTkFMKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfTk9USUZJQ0FUSU9OCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19OT1RJRklDQVRJT04iLCBNU0dfTk9USUZJQ0FUSU9OKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfQ01TR19DTE9FWEVDCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19DTVNHX0NMT0VYRUMiLCBNU0dfQ01TR19DTE9FWEVDKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfRVJSUVVFVUUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0VSUlFVRVVFIiwgTVNHX0VSUlFVRVVFKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfQ09ORklSTQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfQ09ORklSTSIsIE1TR19DT05GSVJNKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfTU9SRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfTU9SRSIsIE1TR19NT1JFKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfRU9GCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19FT0YiLCBNU0dfRU9GKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfQkNBU1QKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0JDQVNUIiwgTVNHX0JDQVNUKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfTUNBU1QKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX01DQVNUIiwgTVNHX01DQVNUKTsKKyNlbmRpZgogCiAgICAgLyogUHJvdG9jb2wgbGV2ZWwgYW5kIG51bWJlcnMsIHVzYWJsZSBmb3IgW2dzXWV0c29ja29wdCAqLwogI2lmZGVmICBTT0xfU09DS0VUCkBAIC00ODU3LDYgKzYwOTYsNDkgQEAKICNlbHNlCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9VRFAiLCAxNyk7CiAjZW5kaWYKKyNpZmRlZiBTT0xfQ0FOX0JBU0UKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX0NBTl9CQVNFIiwgU09MX0NBTl9CQVNFKTsKKyNlbmRpZgorI2lmZGVmIFNPTF9DQU5fUkFXCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9DQU5fUkFXIiwgU09MX0NBTl9SQVcpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXIiwgQ0FOX1JBVyk7CisjZW5kaWYKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9ICisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9FRkZfRkxBRyIsIENBTl9FRkZfRkxBRyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SVFJfRkxBRyIsIENBTl9SVFJfRkxBRyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9FUlJfRkxBRyIsIENBTl9FUlJfRkxBRyk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1NGRl9NQVNLIiwgQ0FOX1NGRl9NQVNLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0VGRl9NQVNLIiwgQ0FOX0VGRl9NQVNLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0VSUl9NQVNLIiwgQ0FOX0VSUl9NQVNLKTsKKyNlbmRpZgorI2lmZGVmIEhBVkVfTElOVVhfQ0FOX1JBV19ICisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SQVdfRklMVEVSIiwgQ0FOX1JBV19GSUxURVIpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXX0VSUl9GSUxURVIiLCBDQU5fUkFXX0VSUl9GSUxURVIpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXX0xPT1BCQUNLIiwgQ0FOX1JBV19MT09QQkFDSyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SQVdfUkVDVl9PV05fTVNHUyIsIENBTl9SQVdfUkVDVl9PV05fTVNHUyk7CisjZW5kaWYKKyNpZmRlZiBTT0xfUkRTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9SRFMiLCBTT0xfUkRTKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DQU5DRUxfU0VOVF9UTworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ0FOQ0VMX1NFTlRfVE8iLCBSRFNfQ0FOQ0VMX1NFTlRfVE8pOworI2VuZGlmCisjaWZkZWYgUkRTX0dFVF9NUgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfR0VUX01SIiwgUkRTX0dFVF9NUik7CisjZW5kaWYKKyNpZmRlZiBSRFNfRlJFRV9NUgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfRlJFRV9NUiIsIFJEU19GUkVFX01SKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRUNWRVJSCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRUNWRVJSIiwgUkRTX1JFQ1ZFUlIpOworI2VuZGlmCisjaWZkZWYgUkRTX0NPTkdfTU9OSVRPUgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ09OR19NT05JVE9SIiwgUkRTX0NPTkdfTU9OSVRPUik7CisjZW5kaWYKKyNpZmRlZiBSRFNfR0VUX01SX0ZPUl9ERVNUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19HRVRfTVJfRk9SX0RFU1QiLCBSRFNfR0VUX01SX0ZPUl9ERVNUKTsKKyNlbmRpZgogI2lmZGVmICBJUFBST1RPX0lQCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fSVAiLCBJUFBST1RPX0lQKTsKICNlbHNlCkBAIC00OTYxLDYgKzYyNDMsOSBAQAogI2lmZGVmICBJUFBST1RPX1ZSUlAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19WUlJQIiwgSVBQUk9UT19WUlJQKTsKICNlbmRpZgorI2lmZGVmICBJUFBST1RPX1NDVFAKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19TQ1RQIiwgSVBQUk9UT19TQ1RQKTsKKyNlbmRpZgogI2lmZGVmICBJUFBST1RPX0JJUAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX0JJUCIsIElQUFJPVE9fQklQKTsKICNlbmRpZgpAQCAtNDk3NCw2ICs2MjU5LDEwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fTUFYIiwgSVBQUk9UT19NQVgpOwogI2VuZGlmCiAKKyNpZmRlZiAgU1lTUFJPVE9fQ09OVFJPTAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTWVNQUk9UT19DT05UUk9MIiwgU1lTUFJPVE9fQ09OVFJPTCk7CisjZW5kaWYKKwogICAgIC8qIFNvbWUgcG9ydCBjb25maWd1cmF0aW9uICovCiAjaWZkZWYgIElQUE9SVF9SRVNFUlZFRAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBPUlRfUkVTRVJWRUQiLCBJUFBPUlRfUkVTRVJWRUQpOwpAQCAtNTA3Niw2ICs2MzY1LDkgQEAKICNpZmRlZiAgSVBfTUFYX01FTUJFUlNISVBTCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQX01BWF9NRU1CRVJTSElQUyIsIElQX01BWF9NRU1CRVJTSElQUyk7CiAjZW5kaWYKKyNpZmRlZiAgSVBfVFJBTlNQQVJFTlQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBfVFJBTlNQQVJFTlQiLCBJUF9UUkFOU1BBUkVOVCk7CisjZW5kaWYKIAogICAgIC8qIElQdjYgW2dzXWV0c29ja29wdCBvcHRpb25zLCBkZWZpbmVkIGluIFJGQzI1NTMgKi8KICNpZmRlZiAgSVBWNl9KT0lOX0dST1VQCkBAIC01MjA2LDYgKzY0OTgsNDQgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBYX1RZUEUiLCBJUFhfVFlQRSk7CiAjZW5kaWYKIAorLyogUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyAqLworI2lmZGVmIFJEU19DTVNHX1JETUFfQVJHUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ01TR19SRE1BX0FSR1MiLCBSRFNfQ01TR19SRE1BX0FSR1MpOworI2VuZGlmCisjaWZkZWYgUkRTX0NNU0dfUkRNQV9ERVNUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfREVTVCIsIFJEU19DTVNHX1JETUFfREVTVCk7CisjZW5kaWYKKyNpZmRlZiBSRFNfQ01TR19SRE1BX01BUAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ01TR19SRE1BX01BUCIsIFJEU19DTVNHX1JETUFfTUFQKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DTVNHX1JETUFfU1RBVFVTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfU1RBVFVTIiwgUkRTX0NNU0dfUkRNQV9TVEFUVVMpOworI2VuZGlmCisjaWZkZWYgUkRTX0NNU0dfUkRNQV9VUERBVEUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NNU0dfUkRNQV9VUERBVEUiLCBSRFNfQ01TR19SRE1BX1VQREFURSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9SRUFEV1JJVEUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfUkVBRFdSSVRFIiwgUkRTX1JETUFfUkVBRFdSSVRFKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX0ZFTkNFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX0ZFTkNFIiwgUkRTX1JETUFfRkVOQ0UpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfSU5WQUxJREFURQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9JTlZBTElEQVRFIiwgUkRTX1JETUFfSU5WQUxJREFURSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9VU0VfT05DRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9VU0VfT05DRSIsIFJEU19SRE1BX1VTRV9PTkNFKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX0RPTlRXQUlUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX0RPTlRXQUlUIiwgUkRTX1JETUFfRE9OVFdBSVQpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfTk9USUZZX01FCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX05PVElGWV9NRSIsIFJEU19SRE1BX05PVElGWV9NRSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9TSUxFTlQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfU0lMRU5UIiwgUkRTX1JETUFfU0lMRU5UKTsKKyNlbmRpZgorCiAgICAgLyogZ2V0e2FkZHIsbmFtZX1pbmZvIHBhcmFtZXRlcnMgKi8KICNpZmRlZiBFQUlfQUREUkZBTUlMWQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFQUlfQUREUkZBTUlMWSIsIEVBSV9BRERSRkFNSUxZKTsKQEAgLTUzMzIsNyArNjY2Miw3IEBACiAgICAgICAgIERXT1JEIGNvZGVzW10gPSB7U0lPX1JDVkFMTCwgU0lPX0tFRVBBTElWRV9WQUxTfTsKICAgICAgICAgY29uc3QgY2hhciAqbmFtZXNbXSA9IHsiU0lPX1JDVkFMTCIsICJTSU9fS0VFUEFMSVZFX1ZBTFMifTsKICAgICAgICAgaW50IGk7Ci0gICAgICAgIGZvcihpID0gMDsgaTxzaXplb2YoY29kZXMpL3NpemVvZigqY29kZXMpOyArK2kpIHsKKyAgICAgICAgZm9yKGkgPSAwOyBpPFB5X0FSUkFZX0xFTkdUSChjb2Rlcyk7ICsraSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnRtcDsKICAgICAgICAgICAgIHRtcCA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGNvZGVzW2ldKTsKICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmggYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oCmluZGV4IGYwNjQ3OTUuLjA0MzU4NzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmgKKysrIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaApAQCAtNTksOSArNTksMTIgQEAKICNpbmNsdWRlIDxibHVldG9vdGguaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorIyBpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0gKICMgaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0jIGluY2x1ZGUgPG5ldC9pZi5oPgogIyBpbmNsdWRlIDxuZXRwYWNrZXQvcGFja2V0Lmg+CiAjZW5kaWYKIApAQCAtNjksNiArNzIsMjEgQEAKICMgaW5jbHVkZSA8bGludXgvdGlwYy5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9ICisjaW5jbHVkZSA8bGludXgvY2FuLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfTElOVVhfQ0FOX1JBV19ICisjaW5jbHVkZSA8bGludXgvY2FuL3Jhdy5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZU19TWVNfRE9NQUlOX0gKKyNpbmNsdWRlIDxzeXMvc3lzX2RvbWFpbi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfS0VSTl9DT05UUk9MX0gKKyNpbmNsdWRlIDxzeXMva2Vybl9jb250cm9sLmg+CisjZW5kaWYKKwogI2lmbmRlZiBQeV9fU09DS0VUX0gKICNkZWZpbmUgUHlfX1NPQ0tFVF9ICiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTEwNCw2ICsxMjIsNyBAQAogLyogU29ja2V0IGFkZHJlc3MgKi8KIHR5cGVkZWYgdW5pb24gc29ja19hZGRyIHsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gaW47CisgICAgc3RydWN0IHNvY2thZGRyIHNhOwogI2lmZGVmIEFGX1VOSVgKICAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4gdW47CiAjZW5kaWYKQEAgLTEyMyw2ICsxNDIsMTIgQEAKICNpZmRlZiBIQVZFX05FVFBBQ0tFVF9QQUNLRVRfSAogICAgIHN0cnVjdCBzb2NrYWRkcl9sbCBsbDsKICNlbmRpZgorI2lmZGVmIEhBVkVfTElOVVhfQ0FOX0gKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfY2FuIGNhbjsKKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX0tFUk5fQ09OVFJPTF9ICisgICAgc3RydWN0IHNvY2thZGRyX2N0bCBjdGw7CisjZW5kaWYKIH0gc29ja19hZGRyX3Q7CiAKIC8qIFRoZSBvYmplY3QgaG9sZGluZyBhIHNvY2tldC4gIEl0IGhvbGRzIHNvbWUgZXh0cmEgaW5mb3JtYXRpb24sCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NyZS5oIGIvTW9kdWxlcy9zcmUuaAppbmRleCBhZWM5YjU0Li4wMGI1MmFhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NyZS5oCisrKyBiL01vZHVsZXMvc3JlLmgKQEAgLTE0LDEyICsxNCw4IEBACiAjaW5jbHVkZSAic3JlX2NvbnN0YW50cy5oIgogCiAvKiBzaXplIG9mIGEgY29kZSB3b3JkIChtdXN0IGJlIHVuc2lnbmVkIHNob3J0IG9yIGxhcmdlciwgYW5kCi0gICBsYXJnZSBlbm91Z2ggdG8gaG9sZCBhIFB5X1VOSUNPREUgY2hhcmFjdGVyKSAqLwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQorICAgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSBVQ1M0IGNoYXJhY3RlcikgKi8KICNkZWZpbmUgU1JFX0NPREUgUHlfVUNTNAotI2Vsc2UKLSNkZWZpbmUgU1JFX0NPREUgdW5zaWduZWQgc2hvcnQKLSNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfVkFSX0hFQUQKQEAgLTMwLDcgKzI2LDggQEAKICAgICBQeU9iamVjdCogcGF0dGVybjsgLyogcGF0dGVybiBzb3VyY2UgKG9yIE5vbmUpICovCiAgICAgaW50IGZsYWdzOyAvKiBmbGFncyB1c2VkIHdoZW4gY29tcGlsaW5nIHBhdHRlcm4gc291cmNlICovCiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwotCWludCBjaGFyc2l6ZTsgLyogcGF0dGVybiBjaGFyc2l6ZSAob3IgLTEpICovCisgICAgaW50IGxvZ2ljYWxfY2hhcnNpemU7IC8qIHBhdHRlcm4gY2hhcnNpemUgKG9yIC0xKSAqLworICAgIGludCBjaGFyc2l6ZTsKICAgICBQeV9idWZmZXIgdmlldzsKICAgICAvKiBwYXR0ZXJuIGNvZGUgKi8KICAgICBQeV9zc2l6ZV90IGNvZGVzaXplOwpAQCAtNzIsNiArNjksNyBAQAogICAgIFB5T2JqZWN0KiBzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBwb3MsIGVuZHBvczsKICAgICAvKiBjaGFyYWN0ZXIgc2l6ZSAqLworICAgIGludCBsb2dpY2FsX2NoYXJzaXplOyAvKiBraW5kIG9mIHRoaW5nOiAxIC0gYnl0ZXMsIDIvNCAtIHVuaWNvZGUgKi8KICAgICBpbnQgY2hhcnNpemU7CiAgICAgLyogcmVnaXN0ZXJzICovCiAgICAgUHlfc3NpemVfdCBsYXN0aW5kZXg7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jIGIvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYwppbmRleCA1Yjg2OTYzLi44Yjg3N2NmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jCisrKyBiL01vZHVsZXMvc3lzbG9nbW9kdWxlLmMKQEAgLTcwLDcgKzcwLDcgQEAKIAogICAgIFB5X3NzaXplX3QgYXJndl9sZW4sIHNjcmlwdGxlbjsKICAgICBQeU9iamVjdCAqc2NyaXB0b2JqOwotICAgIFB5X1VOSUNPREUgKmF0c2xhc2gsICphdHN0YXJ0OworICAgIFB5X3NzaXplX3Qgc2xhc2g7CiAgICAgUHlPYmplY3QgKmFyZ3YgPSBQeVN5c19HZXRPYmplY3QoImFyZ3YiKTsKIAogICAgIGlmIChhcmd2ID09IE5VTEwpIHsKQEAgLTkwLDE2ICs5MCwxNiBAQAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHNjcmlwdG9iaikpIHsKICAgICAgICAgcmV0dXJuKE5VTEwpOwogICAgIH0KLSAgICBzY3JpcHRsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2NyaXB0b2JqKTsKKyAgICBzY3JpcHRsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzY3JpcHRvYmopOwogICAgIGlmIChzY3JpcHRsZW4gPT0gMCkgewogICAgICAgICByZXR1cm4oTlVMTCk7CiAgICAgfQogCi0gICAgYXRzdGFydCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNjcmlwdG9iaik7Ci0gICAgYXRzbGFzaCA9IFB5X1VOSUNPREVfc3RycmNocihhdHN0YXJ0LCBTRVApOwotICAgIGlmIChhdHNsYXNoKSB7Ci0gICAgICAgIHJldHVybihQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYXRzbGFzaCArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0bGVuIC0gKGF0c2xhc2ggLSBhdHN0YXJ0KSAtIDEpKTsKKyAgICBzbGFzaCA9IFB5VW5pY29kZV9GaW5kQ2hhcihzY3JpcHRvYmosIFNFUCwgMCwgc2NyaXB0bGVuLCAtMSk7CisgICAgaWYgKHNsYXNoID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2xhc2ggIT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc2NyaXB0b2JqLCBzbGFzaCwgc2NyaXB0bGVuKTsKICAgICB9IGVsc2UgewogICAgICAgICBQeV9JTkNSRUYoc2NyaXB0b2JqKTsKICAgICAgICAgcmV0dXJuKHNjcmlwdG9iaik7CkBAIC0yOTEsNiArMjkxLDkgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX1BJRCIsICAgICAgICAgTE9HX1BJRCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19DT05TIiwgICAgICAgIExPR19DT05TKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX05ERUxBWSIsICBMT0dfTkRFTEFZKTsKKyNpZmRlZiBMT0dfT0RFTEFZCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19PREVMQVkiLCAgTE9HX09ERUxBWSk7CisjZW5kaWYKICNpZmRlZiBMT0dfTk9XQUlUCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19OT1dBSVQiLCAgTE9HX05PV0FJVCk7CiAjZW5kaWYKQEAgLTMzMSw1ICszMzQsMTAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX0NST04iLCAgICAgICAgTE9HX0NST04pOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfVVVDUCIsICAgICAgICBMT0dfVVVDUCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19ORVdTIiwgICAgICAgIExPR19ORVdTKTsKKworI2lmZGVmIExPR19BVVRIUFJJVgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfQVVUSFBSSVYiLCAgICBMT0dfQVVUSFBSSVYpOworI2VuZGlmCisKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvdGVybWlvcy5jIGIvTW9kdWxlcy90ZXJtaW9zLmMKaW5kZXggZWRlYjZmNS4uYjc4ZDMzZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy90ZXJtaW9zLmMKKysrIGIvTW9kdWxlcy90ZXJtaW9zLmMKQEAgLTksMTEgKzksNiBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0jaWZkZWYgX19vc2ZfXwotLyogT24gT1NGLCBzeXMvaW9jdGwuaCByZXF1aXJlcyB0aGF0IHN0cnVjdCB0ZXJtaW8gYWxyZWFkeSBiZSBkZWZpbmVkLAotICogc28gdGhpcyBuZWVkcyB0byBiZSBpbmNsdWRlZCBmaXJzdCBvbiB0aGF0IHBsYXRmb3JtLiAqLwotI2luY2x1ZGUgPHRlcm1pby5oPgotI2VuZGlmCiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAKIC8qIEhQLVVYIHJlcXVpcmVzIHRoYXQgdGhpcyBiZSBpbmNsdWRlZCB0byBwaWNrIHVwIE1EQ0QsIE1DVFMsIE1EU1IsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Rlc3RjYXBpX2xvbmcuaCBiL01vZHVsZXMvdGVzdGNhcGlfbG9uZy5oCmluZGV4IGZhOTRmZDYuLjZiZGRhZDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGVzdGNhcGlfbG9uZy5oCisrKyBiL01vZHVsZXMvdGVzdGNhcGlfbG9uZy5oCkBAIC0zMyw4ICszMyw3IEBACiAgICAgICAgICAgICB1bnNpZ25lZCBUWVBFTkFNRSB1aW4sIHVvdXQ7CiAKICAgICAgICAgICAgIC8qIEZvciAwLCAxLCAyIHVzZSBiYXNlOyBmb3IgMywgNCwgNSB1c2UgLWJhc2UgKi8KLSAgICAgICAgICAgIHVpbiA9IGogPCAzID8gYmFzZQotICAgICAgICAgICAgICAgICAgICAgICAgOiAodW5zaWduZWQgVFlQRU5BTUUpKC0oVFlQRU5BTUUpYmFzZSk7CisgICAgICAgICAgICB1aW4gPSBqIDwgMyA/IGJhc2UgOiAwVSAtIGJhc2U7CiAKICAgICAgICAgICAgIC8qIEZvciAwICYgMywgc3VidHJhY3QgMS4KICAgICAgICAgICAgICAqIEZvciAxICYgNCwgbGVhdmUgYWxvbmUuCkBAIC0xNzcsNiArMTc2LDMyIEBACiAgICAgICAgIFB5X0RFQ1JFRihvbmUpOwogICAgIH0KIAorICAgIC8qIFRlc3QgRl9QWV9UT197UyxVfSBvbiBub24tcHlsb25nIGlucHV0LiBUaGlzIHNob3VsZCByYWlzZSBhIFR5cGVFcnJvci4gKi8KKyAgICB7CisgICAgICAgIFRZUEVOQU1FIG91dDsKKyAgICAgICAgdW5zaWduZWQgVFlQRU5BTUUgdW91dDsKKworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKKyAgICAgICAgb3V0ID0gRl9QWV9UT19TKFB5X05vbmUpOworICAgICAgICBpZiAob3V0ICE9IChUWVBFTkFNRSktMSB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIGRpZG4ndCBjb21wbGFpbiIpOworICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWV0aGluZyBvdGhlciB0aGFuIFR5cGVFcnJvciIpOworICAgICAgICBQeUVycl9DbGVhcigpOworCisgICAgICAgIHVvdXQgPSBGX1BZX1RPX1UoUHlfTm9uZSk7CisgICAgICAgIGlmICh1b3V0ICE9ICh1bnNpZ25lZCBUWVBFTkFNRSktMSB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIGRpZG4ndCBjb21wbGFpbiIpOworICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWV0aGluZyBvdGhlciB0aGFuIFR5cGVFcnJvciIpOworICAgICAgICBQeUVycl9DbGVhcigpOworCisgICAgICAgIFB5X0RFQ1JFRihQeV9Ob25lKTsKKyAgICB9CisKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCmluZGV4IDYyNmRiM2UuLjE2MTQwN2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCkBAIC0xLDEzICsxLDIwIEBACiAvKiBUaW1lIG1vZHVsZSAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCi0jaW5jbHVkZSAiX3RpbWUuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKKyNpZmRlZiBIQVZFX1NZU19USU1FU19ICisjaW5jbHVkZSA8c3lzL3RpbWVzLmg+CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNlbmRpZiAvKiBIQVZFX1NZU19UWVBFU19IICovCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TWVNfUkVTT1VSQ0VfSCkKKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyNlbmRpZgogCiAjaWZkZWYgUVVJQ0tXSU4KICNpbmNsdWRlIDxpby5oPgpAQCAtMjEsMTkgKzI4LDYgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKIAotLyogaGVscGVyIHRvIGFsbG93IHVzIHRvIGludGVycnVwdCBzbGVlcCgpIG9uIFdpbmRvd3MqLwotc3RhdGljIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQgPSBOVUxMOwotc3RhdGljIEJPT0wgV0lOQVBJIFB5Q3RybEhhbmRsZXIoRFdPUkQgZHdDdHJsVHlwZSkKLXsKLSAgICBTZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOwotICAgIC8qIGFsbG93IG90aGVyIGRlZmF1bHQgaGFuZGxlcnMgdG8gYmUgY2FsbGVkLgotICAgICAgIERlZmF1bHQgUHl0aG9uIGhhbmRsZXIgd2lsbCBzZXR1cCB0aGUKLSAgICAgICBLZXlib2FyZEludGVycnVwdCBleGNlcHRpb24uCi0gICAgKi8KLSAgICByZXR1cm4gRkFMU0U7Ci19Ci1zdGF0aWMgbG9uZyBtYWluX3RocmVhZDsKLQogI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQogLyogVGhlc2Ugb3ZlcnJpZGVzIG5vdCBuZWVkZWQgZm9yIFdpbjMyICovCiAjZGVmaW5lIHRpbWV6b25lIF90aW1lem9uZQpAQCAtNDMsMTEgKzM3LDYgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAjZW5kaWYgLyogIV9fV0FUQ09NQ19fIHx8IF9fUU5YX18gKi8KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotLyogV2luMzIgaGFzIGJldHRlciBjbG9jayByZXBsYWNlbWVudDsgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gYmVsb3cuICovCi0jdW5kZWYgSEFWRV9DTE9DSwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSAqLwotCiAjaWYgZGVmaW5lZChQWU9TX09TMikKICNkZWZpbmUgSU5DTF9ET1MKICNkZWZpbmUgSU5DTF9FUlJPUlMKQEAgLTU4LDIzICs0NywyMiBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+CisjZW5kaWYKKwogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KIHN0YXRpYyBpbnQgZmxvYXRzbGVlcChkb3VibGUpOwotc3RhdGljIGRvdWJsZSBmbG9hdHRpbWUodm9pZCk7CitzdGF0aWMgUHlPYmplY3QqIGZsb2F0dGltZShfUHlfY2xvY2tfaW5mb190ICppbmZvKTsKIAotLyogRm9yIFkySyBjaGVjayAqLwotc3RhdGljIFB5T2JqZWN0ICptb2RkaWN0OworI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBPU1ZFUlNJT05JTkZPRVggd2ludmVyOworI2VuZGlmCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX3RpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7Ci0gICAgZG91YmxlIHNlY3M7Ci0gICAgc2VjcyA9IGZsb2F0dGltZSgpOwotICAgIGlmIChzZWNzID09IDAuMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY3MpOworICAgIHJldHVybiBmbG9hdHRpbWUoTlVMTCk7CiB9CiAKIFB5RG9jX1NUUlZBUih0aW1lX2RvYywKQEAgLTgzLDcgKzcxLDcgQEAKIFJldHVybiB0aGUgY3VycmVudCB0aW1lIGluIHNlY29uZHMgc2luY2UgdGhlIEVwb2NoLlxuXAogRnJhY3Rpb25zIG9mIGEgc2Vjb25kIG1heSBiZSBwcmVzZW50IGlmIHRoZSBzeXN0ZW0gY2xvY2sgcHJvdmlkZXMgdGhlbS4iKTsKIAotI2lmZGVmIEhBVkVfQ0xPQ0sKKyNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0spCiAKICNpZm5kZWYgQ0xPQ0tTX1BFUl9TRUMKICNpZmRlZiBDTEtfVENLCkBAIC05NCw0MiArODIsODIgQEAKICNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgotdGltZV9jbG9jayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK2Zsb2F0Y2xvY2soX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKLSAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKCgoZG91YmxlKWNsb2NrKCkpIC8gQ0xPQ0tTX1BFUl9TRUMpOworICAgIGNsb2NrX3QgdmFsdWU7CisgICAgdmFsdWUgPSBjbG9jaygpOworICAgIGlmICh2YWx1ZSA9PSAoY2xvY2tfdCktMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJ0aGUgcHJvY2Vzc29yIHRpbWUgdXNlZCBpcyBub3QgYXZhaWxhYmxlICIKKyAgICAgICAgICAgICAgICAib3IgaXRzIHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiY2xvY2soKSI7CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxLjAgLyAoZG91YmxlKUNMT0NLU19QRVJfU0VDOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoZG91YmxlKXZhbHVlIC8gQ0xPQ0tTX1BFUl9TRUMpOwogfQogI2VuZGlmIC8qIEhBVkVfQ0xPQ0sgKi8KIAogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotLyogRHVlIHRvIE1hcmsgSGFtbW9uZCBhbmQgVGltIFBldGVycyAqLwotc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfY2xvY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCisjZGVmaW5lIFdJTjMyX1BFUkZfQ09VTlRFUgorLyogV2luMzIgaGFzIGJldHRlciBjbG9jayByZXBsYWNlbWVudDsgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24sIGR1ZSB0byBNYXJrCisgICBIYW1tb25kIGFuZCBUaW0gUGV0ZXJzICovCitzdGF0aWMgaW50Cit3aW5fcGVyZl9jb3VudGVyKF9QeV9jbG9ja19pbmZvX3QgKmluZm8sIFB5T2JqZWN0ICoqcmVzdWx0KQogewotICAgIHN0YXRpYyBMQVJHRV9JTlRFR0VSIGN0clN0YXJ0OwotICAgIHN0YXRpYyBkb3VibGUgZGl2aXNvciA9IDAuMDsKKyAgICBzdGF0aWMgTE9OR0xPTkcgY3B1X2ZyZXF1ZW5jeSA9IDA7CisgICAgc3RhdGljIExPTkdMT05HIGN0clN0YXJ0OwogICAgIExBUkdFX0lOVEVHRVIgbm93OwogICAgIGRvdWJsZSBkaWZmOwogCi0gICAgaWYgKGRpdmlzb3IgPT0gMC4wKSB7CisgICAgaWYgKGNwdV9mcmVxdWVuY3kgPT0gMCkgewogICAgICAgICBMQVJHRV9JTlRFR0VSIGZyZXE7Ci0gICAgICAgIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjdHJTdGFydCk7CisgICAgICAgIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZub3cpOworICAgICAgICBjdHJTdGFydCA9IG5vdy5RdWFkUGFydDsKICAgICAgICAgaWYgKCFRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5KCZmcmVxKSB8fCBmcmVxLlF1YWRQYXJ0ID09IDApIHsKICAgICAgICAgICAgIC8qIFVubGlrZWx5IHRvIGhhcHBlbiAtIHRoaXMgd29ya3Mgb24gYWxsIGludGVsCiAgICAgICAgICAgICAgICBtYWNoaW5lcyBhdCBsZWFzdCEgIFJldmVydCB0byBjbG9jaygpICovCi0gICAgICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKCgoZG91YmxlKWNsb2NrKCkpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPQ0tTX1BFUl9TRUMpOworICAgICAgICAgICAgKnJlc3VsdCA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgZGl2aXNvciA9IChkb3VibGUpZnJlcS5RdWFkUGFydDsKKyAgICAgICAgY3B1X2ZyZXF1ZW5jeSA9IGZyZXEuUXVhZFBhcnQ7CiAgICAgfQogICAgIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZub3cpOwotICAgIGRpZmYgPSAoZG91YmxlKShub3cuUXVhZFBhcnQgLSBjdHJTdGFydC5RdWFkUGFydCk7Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShkaWZmIC8gZGl2aXNvcik7CisgICAgZGlmZiA9IChkb3VibGUpKG5vdy5RdWFkUGFydCAtIGN0clN0YXJ0KTsKKyAgICBpZiAoaW5mbykgeworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDEuMCAvIChkb3VibGUpY3B1X2ZyZXF1ZW5jeTsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorICAgICpyZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUoZGlmZiAvIChkb3VibGUpY3B1X2ZyZXF1ZW5jeSk7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoV0lOMzJfUEVSRl9DT1VOVEVSKSB8fCBkZWZpbmVkKEhBVkVfQ0xPQ0spCisjZGVmaW5lIFBZQ0xPQ0sKK3N0YXRpYyBQeU9iamVjdCoKK3B5Y2xvY2soX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKK3sKKyNpZmRlZiBXSU4zMl9QRVJGX0NPVU5URVIKKyAgICBQeU9iamVjdCAqcmVzOworICAgIGlmICh3aW5fcGVyZl9jb3VudGVyKGluZm8sICZyZXMpID09IDApCisgICAgICAgIHJldHVybiByZXM7CisjZW5kaWYKKyAgICByZXR1cm4gZmxvYXRjbG9jayhpbmZvKTsKIH0KIAotI2RlZmluZSBIQVZFX0NMT0NLIC8qIFNvIGl0IGdldHMgaW5jbHVkZWQgaW4gdGhlIG1ldGhvZHMgKi8KLSNlbmRpZiAvKiBNU19XSU5ET1dTICYmICFkZWZpbmVkKF9fQk9STEFORENfXykgKi8KK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX2Nsb2NrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiBweWNsb2NrKE5VTEwpOworfQogCi0jaWZkZWYgSEFWRV9DTE9DSwogUHlEb2NfU1RSVkFSKGNsb2NrX2RvYywKICJjbG9jaygpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlclxuXAogXG5cCkBAIC0xMzgsMTIgKzE2Niw5MyBAQAogcmVjb3Jkcy4iKTsKICNlbmRpZgogCisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9jbG9ja19nZXR0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcmV0OworICAgIGludCBjbGtfaWQ7CisgICAgc3RydWN0IHRpbWVzcGVjIHRwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmNsb2NrX2dldHRpbWUiLCAmY2xrX2lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBjbG9ja19nZXR0aW1lKChjbG9ja2lkX3QpY2xrX2lkLCAmdHApOworICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKK30KKworUHlEb2NfU1RSVkFSKGNsb2NrX2dldHRpbWVfZG9jLAorImNsb2NrX2dldHRpbWUoY2xrX2lkKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKK1xuXAorUmV0dXJuIHRoZSB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgY2xrX2lkLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9jbG9ja19zZXR0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgY2xrX2lkOworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgc3RydWN0IHRpbWVzcGVjIHRwOworICAgIGludCByZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOmNsb2NrX3NldHRpbWUiLCAmY2xrX2lkLCAmb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKG9iaiwgJnRwLnR2X3NlYywgJnRwLnR2X25zZWMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldCA9IGNsb2NrX3NldHRpbWUoKGNsb2NraWRfdCljbGtfaWQsICZ0cCk7CisgICAgaWYgKHJldCAhPSAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoY2xvY2tfc2V0dGltZV9kb2MsCisiY2xvY2tfc2V0dGltZShjbGtfaWQsIHRpbWUpXG5cCitcblwKK1NldCB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfY2xvY2tfZ2V0cmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcmV0OworICAgIGludCBjbGtfaWQ7CisgICAgc3RydWN0IHRpbWVzcGVjIHRwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmNsb2NrX2dldHJlcyIsICZjbGtfaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldCA9IGNsb2NrX2dldHJlcygoY2xvY2tpZF90KWNsa19pZCwgJnRwKTsKKyAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKK30KKworUHlEb2NfU1RSVkFSKGNsb2NrX2dldHJlc19kb2MsCisiY2xvY2tfZ2V0cmVzKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCitcblwKK1JldHVybiB0aGUgcmVzb2x1dGlvbiAocHJlY2lzaW9uKSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKyNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLworCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9zbGVlcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgZG91YmxlIHNlY3M7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkOnNsZWVwIiwgJnNlY3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2VjcyA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2xlZXAgbGVuZ3RoIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAoZmxvYXRzbGVlcChzZWNzKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0xNjYsNiArMjc1LDEwIEBACiAgICAgeyJ0bV93ZGF5IiwgImRheSBvZiB3ZWVrLCByYW5nZSBbMCwgNl0sIE1vbmRheSBpcyAwIn0sCiAgICAgeyJ0bV95ZGF5IiwgImRheSBvZiB5ZWFyLCByYW5nZSBbMSwgMzY2XSJ9LAogICAgIHsidG1faXNkc3QiLCAiMSBpZiBzdW1tZXIgdGltZSBpcyBpbiBlZmZlY3QsIDAgaWYgbm90LCBhbmQgLTEgaWYgdW5rbm93biJ9LAorI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICB7InRtX3pvbmUiLCAiYWJicmV2aWF0aW9uIG9mIHRpbWV6b25lIG5hbWUifSwKKyAgICB7InRtX2dtdG9mZiIsICJvZmZzZXQgZnJvbSBVVEMgaW4gc2Vjb25kcyJ9LAorI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICAgICB7MH0KIH07CiAKQEAgLTE4NSw2ICsyOTgsNyBAQAogc3RhdGljIGludCBpbml0aWFsaXplZDsKIHN0YXRpYyBQeVR5cGVPYmplY3QgU3RydWN0VGltZVR5cGU7CiAKKwogc3RhdGljIFB5T2JqZWN0ICoKIHRtdG90dXBsZShzdHJ1Y3QgdG0gKnApCiB7CkBAIC0yMDMsNiArMzE3LDExIEBACiAgICAgU0VUKDYsIChwLT50bV93ZGF5ICsgNikgJSA3KTsgLyogV2FudCBNb25kYXkgPT0gMCAqLwogICAgIFNFVCg3LCBwLT50bV95ZGF5ICsgMSk7ICAgICAgICAvKiBXYW50IEphbnVhcnksIDEgPT0gMSAqLwogICAgIFNFVCg4LCBwLT50bV9pc2RzdCk7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwKKyAgICAgICAgUHlVbmljb2RlX0RlY29kZUxvY2FsZShwLT50bV96b25lLCAic3Vycm9nYXRlZXNjYXBlIikpOworICAgIFNFVCgxMCwgcC0+dG1fZ210b2ZmKTsKKyNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAjdW5kZWYgU0VUCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfWERFQ1JFRih2KTsKQEAgLTIxMiw1NSArMzMxLDQ5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi10aW1lX2NvbnZlcnQoZG91YmxlIHdoZW4sIHN0cnVjdCB0bSAqICgqZnVuY3Rpb24pKGNvbnN0IHRpbWVfdCAqKSkKLXsKLSAgICBzdHJ1Y3QgdG0gKnA7Ci0gICAgdGltZV90IHdoZW50ID0gX1B5VGltZV9Eb3VibGVUb1RpbWV0KHdoZW4pOwotCi0gICAgaWYgKHdoZW50ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZXJybm8gPSAwOwotICAgIHAgPSBmdW5jdGlvbigmd2hlbnQpOwotICAgIGlmIChwID09IE5VTEwpIHsKLSNpZmRlZiBFSU5WQUwKLSAgICAgICAgaWYgKGVycm5vID09IDApCi0gICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKLSNlbmRpZgotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1ZhbHVlRXJyb3IpOwotICAgIH0KLSAgICByZXR1cm4gdG10b3R1cGxlKHApOwotfQotCiAvKiBQYXJzZSBhcmcgdHVwbGUgdGhhdCBjYW4gY29udGFpbiBhbiBvcHRpb25hbCBmbG9hdC1vci1Ob25lIHZhbHVlOwogICAgZm9ybWF0IG5lZWRzIHRvIGJlICJ8TzpuYW1lIi4KICAgIFJldHVybnMgbm9uLXplcm8gb24gc3VjY2VzcyAocGFyYWxsZWxzIFB5QXJnX1BhcnNlVHVwbGUpLgogKi8KIHN0YXRpYyBpbnQKLXBhcnNlX3RpbWVfZG91YmxlX2FyZ3MoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgZG91YmxlICpwd2hlbikKK3BhcnNlX3RpbWVfdF9hcmdzKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIHRpbWVfdCAqcHdoZW4pCiB7CiAgICAgUHlPYmplY3QgKm90ID0gTlVMTDsKKyAgICB0aW1lX3Qgd2hlbnQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgZm9ybWF0LCAmb3QpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAob3QgPT0gTlVMTCB8fCBvdCA9PSBQeV9Ob25lKQotICAgICAgICAqcHdoZW4gPSBmbG9hdHRpbWUoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgZG91YmxlIHdoZW4gPSBQeUZsb2F0X0FzRG91YmxlKG90KTsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgKnB3aGVuID0gd2hlbjsKKyAgICBpZiAob3QgPT0gTlVMTCB8fCBvdCA9PSBQeV9Ob25lKSB7CisgICAgICAgIHdoZW50ID0gdGltZShOVUxMKTsKICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZV90KG90LCAmd2hlbnQpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgICpwd2hlbiA9IHdoZW50OwogICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9nbXRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB3aGVuOwotICAgIGlmICghcGFyc2VfdGltZV9kb3VibGVfYXJncyhhcmdzLCAifE86Z210aW1lIiwgJndoZW4pKQorICAgIHRpbWVfdCB3aGVuOworICAgIHN0cnVjdCB0bSBidWYsICpsb2NhbDsKKworICAgIGlmICghcGFyc2VfdGltZV90X2FyZ3MoYXJncywgInxPOmdtdGltZSIsICZ3aGVuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIHRpbWVfY29udmVydCh3aGVuLCBnbXRpbWUpOworCisgICAgZXJybm8gPSAwOworICAgIGxvY2FsID0gZ210aW1lKCZ3aGVuKTsKKyAgICBpZiAobG9jYWwgPT0gTlVMTCkgeworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworI2VuZGlmCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgfQorICAgIGJ1ZiA9ICpsb2NhbDsKKyAgICByZXR1cm4gdG10b3R1cGxlKCZidWYpOwogfQogCiBQeURvY19TVFJWQVIoZ210aW1lX2RvYywKQEAgLTI2OCwxNSArMzgxLDQyIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHRtX3NlYywgdG1fd2RheSwgdG1feWRheSwgdG1faXNkc3QpXG5cCiBcblwKIENvbnZlcnQgc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2ggdG8gYSB0aW1lIHR1cGxlIGV4cHJlc3NpbmcgVVRDIChhLmsuYS5cblwKLUdNVCkuICBXaGVuICdzZWNvbmRzJyBpcyBub3QgcGFzc2VkIGluLCBjb252ZXJ0IHRoZSBjdXJyZW50IHRpbWUgaW5zdGVhZC4iKTsKK0dNVCkuICBXaGVuICdzZWNvbmRzJyBpcyBub3QgcGFzc2VkIGluLCBjb252ZXJ0IHRoZSBjdXJyZW50IHRpbWUgaW5zdGVhZC5cblwKK1xuXAorSWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIHRoZSB0bV9nbXRvZmYgYW5kIHRtX3pvbmUsIHRoZXkgYXJlIGF2YWlsYWJsZSBhc1xuXAorYXR0cmlidXRlcyBvbmx5LiIpOworCitzdGF0aWMgaW50CitweWxvY2FsdGltZSh0aW1lX3QgKnRpbWVwLCBzdHJ1Y3QgdG0gKnJlc3VsdCkKK3sKKyAgICBzdHJ1Y3QgdG0gKmxvY2FsOworCisgICAgYXNzZXJ0ICh0aW1lcCAhPSBOVUxMKTsKKyAgICBsb2NhbCA9IGxvY2FsdGltZSh0aW1lcCk7CisgICAgaWYgKGxvY2FsID09IE5VTEwpIHsKKyAgICAgICAgLyogdW5jb252ZXJ0aWJsZSB0aW1lICovCisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgICpyZXN1bHQgPSAqbG9jYWw7CisgICAgcmV0dXJuIDA7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX2xvY2FsdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHdoZW47Ci0gICAgaWYgKCFwYXJzZV90aW1lX2RvdWJsZV9hcmdzKGFyZ3MsICJ8Tzpsb2NhbHRpbWUiLCAmd2hlbikpCisgICAgdGltZV90IHdoZW47CisgICAgc3RydWN0IHRtIGJ1ZjsKKworICAgIGlmICghcGFyc2VfdGltZV90X2FyZ3MoYXJncywgInxPOmxvY2FsdGltZSIsICZ3aGVuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIHRpbWVfY29udmVydCh3aGVuLCBsb2NhbHRpbWUpOworICAgIGlmIChweWxvY2FsdGltZSgmd2hlbiwgJmJ1ZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1Zik7CiB9CiAKIFB5RG9jX1NUUlZBUihsb2NhbHRpbWVfZG9jLApAQCAtMzA3LDUzICs0NDcsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgJnAtPnRtX2hvdXIsICZwLT50bV9taW4sICZwLT50bV9zZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZwLT50bV93ZGF5LCAmcC0+dG1feWRheSwgJnAtPnRtX2lzZHN0KSkKICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvKiBJZiB5ZWFyIGlzIHNwZWNpZmllZCB3aXRoIGxlc3MgdGhhbiA0IGRpZ2l0cywgaXRzIGludGVycHJldGF0aW9uCi0gICAgICogZGVwZW5kcyBvbiB0aGUgYWNjZXB0MmR5ZWFyIHZhbHVlLgotICAgICAqCi0gICAgICogSWYgYWNjZXB0MmR5ZWFyIGlzIHRydWUgKGRlZmF1bHQpLCBhIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYmVoYXZpb3IgaXMKLSAgICAgKiBpbnZva2VkIGFzIGZvbGxvd3M6Ci0gICAgICoKLSAgICAgKiAgIC0gZm9yIDItZGlnaXQgeWVhciwgY2VudHVyeSBpcyBndWVzc2VkIGFjY29yZGluZyB0byBQT1NJWCBydWxlcyBmb3IKLSAgICAgKiAgICAgICV5IHN0cnB0aW1lIGZvcm1hdDogMjFzdCBjZW50dXJ5IGZvciB5IDwgNjksIDIwdGggY2VudHVyeQotICAgICAqICAgICAgb3RoZXJ3aXNlLiAgQSBkZXByZWNhdGlvbiB3YXJuaW5nIGlzIGlzc3VlZCB3aGVuIGNlbnR1cnkKLSAgICAgKiAgICAgIGluZm9ybWF0aW9uIGlzIGd1ZXNzZWQgaW4gdGhpcyB3YXkuCi0gICAgICoKLSAgICAgKiAgIC0gZm9yIDMtZGlnaXQgb3IgbmVnYXRpdmUgeWVhciwgYSBWYWx1ZUVycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuCi0gICAgICoKLSAgICAgKiBJZiBhY2NlcHQyZHllYXIgaXMgZmFsc2UgKHNldCBieSB0aGUgcHJvZ3JhbSBvciBhcyBhIHJlc3VsdCBvZiBhCi0gICAgICogbm9uLWVtcHR5IHZhbHVlIGFzc2lnbmVkIHRvIFBZVEhPTlkySyBlbnZpcm9ubWVudCB2YXJpYWJsZSkgYWxsIHllYXIKLSAgICAgKiB2YWx1ZXMgYXJlIGludGVycHJldGVkIGFzIGdpdmVuLgotICAgICAqLwotICAgIGlmICh5IDwgMTAwMCkgewotICAgICAgICBQeU9iamVjdCAqYWNjZXB0ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kZGljdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2NlcHQyZHllYXIiKTsKLSAgICAgICAgaWYgKGFjY2VwdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpbnQgYWNjZXB0dmFsID0gIFB5T2JqZWN0X0lzVHJ1ZShhY2NlcHQpOwotICAgICAgICAgICAgaWYgKGFjY2VwdHZhbCA9PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGlmIChhY2NlcHR2YWwpIHsKLSAgICAgICAgICAgICAgICBpZiAoMCA8PSB5ICYmIHkgPCA2OSkKLSAgICAgICAgICAgICAgICAgICAgeSArPSAyMDAwOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKDY5IDw9IHkgJiYgeSA8IDEwMCkKLSAgICAgICAgICAgICAgICAgICAgeSArPSAxOTAwOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5ZWFyIG91dCBvZiByYW5nZSIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2VudHVyeSBpbmZvIGd1ZXNzZWQgZm9yIGEgMi1kaWdpdCB5ZWFyLiIsIDEpICE9IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KICAgICBwLT50bV95ZWFyID0geSAtIDE5MDA7CiAgICAgcC0+dG1fbW9uLS07CiAgICAgcC0+dG1fd2RheSA9IChwLT50bV93ZGF5ICsgMSkgJSA3OwogICAgIHAtPnRtX3lkYXktLTsKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgaWYgKFB5X1RZUEUoYXJncykgPT0gJlN0cnVjdFRpbWVUeXBlKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtOworICAgICAgICBpdGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCA5KTsKKyAgICAgICAgcC0+dG1fem9uZSA9IGl0ZW0gPT0gUHlfTm9uZSA/IE5VTEwgOiBfUHlVbmljb2RlX0FzU3RyaW5nKGl0ZW0pOworICAgICAgICBpdGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxMCk7CisgICAgICAgIHAtPnRtX2dtdG9mZiA9IGl0ZW0gPT0gUHlfTm9uZSA/IDAgOiBQeUxvbmdfQXNMb25nKGl0ZW0pOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTQ3MCw3ICs1NzgsOCBAQAogCiAgICAgaWYgKHR1cCA9PSBOVUxMKSB7CiAgICAgICAgIHRpbWVfdCB0dCA9IHRpbWUoTlVMTCk7Ci0gICAgICAgIGJ1ZiA9ICpsb2NhbHRpbWUoJnR0KTsKKyAgICAgICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoIWdldHRtYXJnKHR1cCwgJmJ1ZikgfHwgIWNoZWNrdG0oJmJ1ZikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDk4LDcgKzYwNyw3IEBACiAgICAgZm10ID0gZm9ybWF0OwogI2Vsc2UKICAgICAvKiBDb252ZXJ0IHRoZSB1bmljb2RlIHN0cmluZyB0byBhbiBhc2NpaSBvbmUgKi8KLSAgICBmb3JtYXQgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGZvcm1hdF9hcmcpOworICAgIGZvcm1hdCA9IFB5VW5pY29kZV9FbmNvZGVMb2NhbGUoZm9ybWF0X2FyZywgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZm10ID0gUHlCeXRlc19BU19TVFJJTkcoZm9ybWF0KTsKQEAgLTU0OSw3ICs2NTgsOCBAQAogI2lmZGVmIEhBVkVfV0NTRlRJTUUKICAgICAgICAgICAgIHJldCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIob3V0YnVmLCBidWZsZW4pOwogI2Vsc2UKLSAgICAgICAgICAgIHJldCA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKG91dGJ1ZiwgYnVmbGVuKTsKKyAgICAgICAgICAgIHJldCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKG91dGJ1ZiwgYnVmbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOwogI2VuZGlmCiAgICAgICAgICAgICBQeU1lbV9GcmVlKG91dGJ1Zik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU4NywxMSArNjk3LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnN0cnB0aW1lX21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soIl9zdHJwdGltZSIpOwogICAgIFB5T2JqZWN0ICpzdHJwdGltZV9yZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoX3N0cnB0aW1lX3RpbWUpOwogCiAgICAgaWYgKCFzdHJwdGltZV9tb2R1bGUpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cnB0aW1lX3Jlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc3RycHRpbWVfbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX3N0cnB0aW1lX3RpbWUiLCAiTyIsIGFyZ3MpOworICAgIHN0cnB0aW1lX3Jlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc3RycHRpbWVfbW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX3N0cnB0aW1lX3RpbWUsICJPIiwgYXJncyk7CiAgICAgUHlfREVDUkVGKHN0cnB0aW1lX21vZHVsZSk7CiAgICAgcmV0dXJuIHN0cnB0aW1lX3Jlc3VsdDsKIH0KQEAgLTYwOCwzMSArNzE5LDIwIEBACiB7CiAgICAgLyogSW5zcGlyZWQgYnkgT3BlbiBHcm91cCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIGF0CiAgICAgICogaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvYXNjdGltZS5odG1sICovCi0gICAgc3RhdGljIGNoYXIgd2RheV9uYW1lWzddWzNdID0geworICAgIHN0YXRpYyBjaGFyIHdkYXlfbmFtZVs3XVs0XSA9IHsKICAgICAgICAgIlN1biIsICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIKICAgICB9OwotICAgIHN0YXRpYyBjaGFyIG1vbl9uYW1lWzEyXVszXSA9IHsKKyAgICBzdGF0aWMgY2hhciBtb25fbmFtZVsxMl1bNF0gPSB7CiAgICAgICAgICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsCiAgICAgICAgICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIKICAgICB9OwotICAgIGNoYXIgYnVmWzIwXTsgLyogJ1N1biBTZXAgMTYgMDE6MDM6NTJcMCcgKi8KLSAgICBpbnQgbjsKLQotICAgIG4gPSBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlLjNzICUuM3MlM2QgJS4yZDolLjJkOiUuMmQiLAotICAgICAgICAgICAgICAgICAgICAgIHdkYXlfbmFtZVt0aW1lcHRyLT50bV93ZGF5XSwKLSAgICAgICAgICAgICAgICAgICAgICBtb25fbmFtZVt0aW1lcHRyLT50bV9tb25dLAotICAgICAgICAgICAgICAgICAgICAgIHRpbWVwdHItPnRtX21kYXksIHRpbWVwdHItPnRtX2hvdXIsCi0gICAgICAgICAgICAgICAgICAgICAgdGltZXB0ci0+dG1fbWluLCB0aW1lcHRyLT50bV9zZWMpOwotICAgIC8qIFhYWDogc2luY2UgdGhlIGZpZWxkcyB1c2VkIGJ5IHNucHJpbnRmIGFib3ZlIGFyZSB2YWxpZGF0ZWQgaW4gY2hlY2t0bSwKLSAgICAgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbiBzaG91bGQgbmV2ZXIgdHJpZ2dlci4gV2Uga2VlcCB0aGUgY2hlY2sgYmVjYXVzZQotICAgICAqIGhpc3RvcmljYWxseSBmaXhlZCBzaXplIGJ1ZmZlciB1c2VkIGluIGFzY3RpbWUgd2FzIHRoZSBzb3VyY2Ugb2YKLSAgICAgKiBjcmFzaGVzLiAqLwotICAgIGlmIChuICsgMSAhPSBzaXplb2YoYnVmKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInVuY29udmVydGlibGUgdGltZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzICVkIiwgYnVmLCAxOTAwICsgdGltZXB0ci0+dG1feWVhcik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAiJXMgJXMlM2QgJS4yZDolLjJkOiUuMmQgJWQiLAorICAgICAgICB3ZGF5X25hbWVbdGltZXB0ci0+dG1fd2RheV0sCisgICAgICAgIG1vbl9uYW1lW3RpbWVwdHItPnRtX21vbl0sCisgICAgICAgIHRpbWVwdHItPnRtX21kYXksIHRpbWVwdHItPnRtX2hvdXIsCisgICAgICAgIHRpbWVwdHItPnRtX21pbiwgdGltZXB0ci0+dG1fc2VjLAorICAgICAgICAxOTAwICsgdGltZXB0ci0+dG1feWVhcik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC02NDUsNyArNzQ1LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHR1cCA9PSBOVUxMKSB7CiAgICAgICAgIHRpbWVfdCB0dCA9IHRpbWUoTlVMTCk7Ci0gICAgICAgIGJ1ZiA9ICpsb2NhbHRpbWUoJnR0KTsKKyAgICAgICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIH0gZWxzZSBpZiAoIWdldHRtYXJnKHR1cCwgJmJ1ZikgfHwgIWNoZWNrdG0oJmJ1ZikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBfYXNjdGltZSgmYnVmKTsKQEAgLTY2MSwyOCArNzYzLDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9jdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm90ID0gTlVMTDsKICAgICB0aW1lX3QgdHQ7Ci0gICAgc3RydWN0IHRtICp0aW1lcHRyOwotCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiY3RpbWUiLCAwLCAxLCAmb3QpKQorICAgIHN0cnVjdCB0bSBidWY7CisgICAgaWYgKCFwYXJzZV90aW1lX3RfYXJncyhhcmdzLCAifE86Y3RpbWUiLCAmdHQpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAob3QgPT0gTlVMTCB8fCBvdCA9PSBQeV9Ob25lKQotICAgICAgICB0dCA9IHRpbWUoTlVMTCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGRvdWJsZSBkdCA9IFB5RmxvYXRfQXNEb3VibGUob3QpOwotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB0dCA9IF9QeVRpbWVfRG91YmxlVG9UaW1ldChkdCk7Ci0gICAgICAgIGlmICh0dCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdGltZXB0ciA9IGxvY2FsdGltZSgmdHQpOwotICAgIGlmICh0aW1lcHRyID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ1bmNvbnZlcnRpYmxlIHRpbWUiKTsKKyAgICBpZiAocHlsb2NhbHRpbWUoJnR0LCAmYnVmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBfYXNjdGltZSh0aW1lcHRyKTsKKyAgICByZXR1cm4gX2FzY3RpbWUoJmJ1Zik7CiB9CiAKIFB5RG9jX1NUUlZBUihjdGltZV9kb2MsCkBAIC03MTUsNyArODAyLDEwIEBACiBQeURvY19TVFJWQVIobWt0aW1lX2RvYywKICJta3RpbWUodHVwbGUpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlclxuXAogXG5cCi1Db252ZXJ0IGEgdGltZSB0dXBsZSBpbiBsb2NhbCB0aW1lIHRvIHNlY29uZHMgc2luY2UgdGhlIEVwb2NoLiIpOworQ29udmVydCBhIHRpbWUgdHVwbGUgaW4gbG9jYWwgdGltZSB0byBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaC5cblwKK05vdGUgdGhhdCBta3RpbWUoZ210aW1lKDApKSB3aWxsIG5vdCBnZW5lcmFsbHkgcmV0dXJuIHplcm8gZm9yIG1vc3RcblwKK3RpbWUgem9uZXM7IGluc3RlYWQgdGhlIHJldHVybmVkIHZhbHVlIHdpbGwgZWl0aGVyIGJlIGVxdWFsIHRvIHRoYXRcblwKK29mIHRoZSB0aW1lem9uZSBvciBhbHR6b25lIGF0dHJpYnV0ZXMgb24gdGhlIHRpbWUgbW9kdWxlLiIpOwogI2VuZGlmIC8qIEhBVkVfTUtUSU1FICovCiAKICNpZmRlZiBIQVZFX1dPUktJTkdfVFpTRVQKQEAgLTc1NSw2ICs4NDUsNDAyIEBACiBzaG91bGQgbm90IGJlIHJlbGllZCBvbi4iKTsKICNlbmRpZiAvKiBIQVZFX1dPUktJTkdfVFpTRVQgKi8KIAorI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChfX0FQUExFX18pIFwKKyAgICB8fCAoZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpIFwKKyAgICAgICAgJiYgKGRlZmluZWQoQ0xPQ0tfSElHSFJFUykgfHwgZGVmaW5lZChDTE9DS19NT05PVE9OSUMpKSkKKyNkZWZpbmUgUFlNT05PVE9OSUMKKyNlbmRpZgorCisjaWZkZWYgUFlNT05PVE9OSUMKK3N0YXRpYyBQeU9iamVjdCoKK3B5bW9ub3RvbmljKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgIHN0YXRpYyBVTE9OR0xPTkcgKCpHZXRUaWNrQ291bnQ2NCkgKHZvaWQpID0gTlVMTDsKKyAgICBzdGF0aWMgVUxPTkdMT05HIChDQUxMQkFDSyAqUHlfR2V0VGlja0NvdW50NjQpKHZvaWQpOworICAgIHN0YXRpYyBpbnQgaGFzX2dldGlja2NvdW50NjQgPSAtMTsKKyAgICBkb3VibGUgcmVzdWx0OworCisgICAgaWYgKGhhc19nZXRpY2tjb3VudDY0ID09IC0xKSB7CisgICAgICAgIC8qIEdldFRpY2tDb3VudDY0KCkgd2FzIGFkZGVkIHRvIFdpbmRvd3MgVmlzdGEgKi8KKyAgICAgICAgaWYgKHdpbnZlci5kd01ham9yVmVyc2lvbiA+PSA2KSB7CisgICAgICAgICAgICBISU5TVEFOQ0UgaEtlcm5lbDMyOworICAgICAgICAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CisgICAgICAgICAgICAqKEZBUlBST0MqKSZQeV9HZXRUaWNrQ291bnQ2NCA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdldFRpY2tDb3VudDY0Iik7CisgICAgICAgICAgICBoYXNfZ2V0aWNrY291bnQ2NCA9IChQeV9HZXRUaWNrQ291bnQ2NCAhPSBOVUxMKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBoYXNfZ2V0aWNrY291bnQ2NCA9IDA7CisgICAgfQorCisgICAgaWYgKGhhc19nZXRpY2tjb3VudDY0KSB7CisgICAgICAgIFVMT05HTE9ORyB0aWNrczsKKyAgICAgICAgdGlja3MgPSBQeV9HZXRUaWNrQ291bnQ2NCgpOworICAgICAgICByZXN1bHQgPSAoZG91YmxlKXRpY2tzICogMWUtMzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YXRpYyBEV09SRCBsYXN0X3RpY2tzID0gMDsKKyAgICAgICAgc3RhdGljIERXT1JEIG5fb3ZlcmZsb3cgPSAwOworICAgICAgICBEV09SRCB0aWNrczsKKworICAgICAgICB0aWNrcyA9IEdldFRpY2tDb3VudCgpOworICAgICAgICBpZiAodGlja3MgPCBsYXN0X3RpY2tzKQorICAgICAgICAgICAgbl9vdmVyZmxvdysrOworICAgICAgICBsYXN0X3RpY2tzID0gdGlja3M7CisKKyAgICAgICAgcmVzdWx0ID0gbGRleHAobl9vdmVyZmxvdywgMzIpOworICAgICAgICByZXN1bHQgKz0gdGlja3M7CisgICAgICAgIHJlc3VsdCAqPSAxZS0zOworICAgIH0KKworICAgIGlmIChpbmZvKSB7CisgICAgICAgIERXT1JEIHRpbWVBZGp1c3RtZW50LCB0aW1lSW5jcmVtZW50OworICAgICAgICBCT09MIGlzVGltZUFkanVzdG1lbnREaXNhYmxlZCwgb2s7CisgICAgICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCkKKyAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFRpY2tDb3VudDY0KCkiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRUaWNrQ291bnQoKSI7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIG9rID0gR2V0U3lzdGVtVGltZUFkanVzdG1lbnQoJnRpbWVBZGp1c3RtZW50LCAmdGltZUluY3JlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXNUaW1lQWRqdXN0bWVudERpc2FibGVkKTsKKyAgICAgICAgaWYgKCFvaykgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gdGltZUluY3JlbWVudCAqIDFlLTc7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHJlc3VsdCk7CisKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIHN0YXRpYyBtYWNoX3RpbWViYXNlX2luZm9fZGF0YV90IHRpbWViYXNlOworICAgIHVpbnQ2NF90IHRpbWU7CisgICAgZG91YmxlIHNlY3M7CisKKyAgICBpZiAodGltZWJhc2UuZGVub20gPT0gMCkgeworICAgICAgICAvKiBBY2NvcmRpbmcgdG8gdGhlIFRlY2huaWNhbCBRJkEgUUExMzk4LCBtYWNoX3RpbWViYXNlX2luZm8oKSBjYW5ub3QKKyAgICAgICAgICAgZmFpbDogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvbWFjLyNxYS9xYTEzOTgvICovCisgICAgICAgICh2b2lkKW1hY2hfdGltZWJhc2VfaW5mbygmdGltZWJhc2UpOworICAgIH0KKworICAgIHRpbWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKKyAgICBzZWNzID0gKGRvdWJsZSl0aW1lICogdGltZWJhc2UubnVtZXIgLyB0aW1lYmFzZS5kZW5vbSAqIDFlLTk7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAibWFjaF9hYnNvbHV0ZV90aW1lKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gKGRvdWJsZSl0aW1lYmFzZS5udW1lciAvIHRpbWViYXNlLmRlbm9tICogMWUtOTsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoc2Vjcyk7CisKKyNlbGlmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSAmJiAoZGVmaW5lZChDTE9DS19ISUdIUkVTKSB8fCBkZWZpbmVkKENMT0NLX01PTk9UT05JQykpCisgICAgc3RydWN0IHRpbWVzcGVjIHRwOworI2lmZGVmIENMT0NLX0hJR0hSRVMKKyAgICBjb25zdCBjbG9ja2lkX3QgY2xrX2lkID0gQ0xPQ0tfSElHSFJFUzsKKyAgICBjb25zdCBjaGFyICpmdW5jdGlvbiA9ICJjbG9ja19nZXR0aW1lKENMT0NLX0hJR0hSRVMpIjsKKyNlbHNlCisgICAgY29uc3QgY2xvY2tpZF90IGNsa19pZCA9IENMT0NLX01PTk9UT05JQzsKKyAgICBjb25zdCBjaGFyICpmdW5jdGlvbiA9ICJjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQykiOworI2VuZGlmCisKKyAgICBpZiAoY2xvY2tfZ2V0dGltZShjbGtfaWQsICZ0cCkgIT0gMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChpbmZvKSB7CisgICAgICAgIHN0cnVjdCB0aW1lc3BlYyByZXM7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb247CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgICAgICBpZiAoY2xvY2tfZ2V0cmVzKGNsa19pZCwgJnJlcykgPT0gMCkKKyAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtOTsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7CisjZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfbW9ub3RvbmljKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiBweW1vbm90b25pYyhOVUxMKTsKK30KKworUHlEb2NfU1RSVkFSKG1vbm90b25pY19kb2MsCisibW9ub3RvbmljKCkgLT4gZmxvYXRcblwKK1xuXAorTW9ub3RvbmljIGNsb2NrLCBjYW5ub3QgZ28gYmFja3dhcmQuIik7CisjZW5kaWYgICAvKiBQWU1PTk9UT05JQyAqLworCitzdGF0aWMgUHlPYmplY3QqCitwZXJmX2NvdW50ZXIoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKK3sKKyNpZiBkZWZpbmVkKFdJTjMyX1BFUkZfQ09VTlRFUikgfHwgZGVmaW5lZChQWU1PTk9UT05JQykKKyAgICBQeU9iamVjdCAqcmVzOworI2VuZGlmCisjaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpCisgICAgc3RhdGljIGludCB1c2VfcGVyZl9jb3VudGVyID0gMTsKKyNlbmRpZgorI2lmZGVmIFBZTU9OT1RPTklDCisgICAgc3RhdGljIGludCB1c2VfbW9ub3RvbmljID0gMTsKKyNlbmRpZgorCisjaWZkZWYgV0lOMzJfUEVSRl9DT1VOVEVSCisgICAgaWYgKHVzZV9wZXJmX2NvdW50ZXIpIHsKKyAgICAgICAgaWYgKHdpbl9wZXJmX2NvdW50ZXIoaW5mbywgJnJlcykgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIHVzZV9wZXJmX2NvdW50ZXIgPSAwOworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgUFlNT05PVE9OSUMKKyAgICBpZiAodXNlX21vbm90b25pYykgeworICAgICAgICByZXMgPSBweW1vbm90b25pYyhpbmZvKTsKKyAgICAgICAgaWYgKHJlcyAhPSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgdXNlX21vbm90b25pYyA9IDA7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gZmxvYXR0aW1lKGluZm8pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9wZXJmX2NvdW50ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgcmV0dXJuIHBlcmZfY291bnRlcihOVUxMKTsKK30KKworUHlEb2NfU1RSVkFSKHBlcmZfY291bnRlcl9kb2MsCisicGVyZl9jb3VudGVyKCkgLT4gZmxvYXRcblwKK1xuXAorUGVyZm9ybWFuY2UgY291bnRlciBmb3IgYmVuY2htYXJraW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QqCitweV9wcm9jZXNzX3RpbWUoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKK3sKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgSEFORExFIHByb2Nlc3M7CisgICAgRklMRVRJTUUgY3JlYXRpb25fdGltZSwgZXhpdF90aW1lLCBrZXJuZWxfdGltZSwgdXNlcl90aW1lOworICAgIFVMQVJHRV9JTlRFR0VSIGxhcmdlOworICAgIGRvdWJsZSB0b3RhbDsKKyAgICBCT09MIG9rOworCisgICAgcHJvY2VzcyA9IEdldEN1cnJlbnRQcm9jZXNzKCk7CisgICAgb2sgPSBHZXRQcm9jZXNzVGltZXMocHJvY2VzcywgJmNyZWF0aW9uX3RpbWUsICZleGl0X3RpbWUsICZrZXJuZWxfdGltZSwgJnVzZXJfdGltZSk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgbGFyZ2UudS5Mb3dQYXJ0ID0ga2VybmVsX3RpbWUuZHdMb3dEYXRlVGltZTsKKyAgICBsYXJnZS51LkhpZ2hQYXJ0ID0ga2VybmVsX3RpbWUuZHdIaWdoRGF0ZVRpbWU7CisgICAgdG90YWwgPSAoZG91YmxlKWxhcmdlLlF1YWRQYXJ0OworICAgIGxhcmdlLnUuTG93UGFydCA9IHVzZXJfdGltZS5kd0xvd0RhdGVUaW1lOworICAgIGxhcmdlLnUuSGlnaFBhcnQgPSB1c2VyX3RpbWUuZHdIaWdoRGF0ZVRpbWU7CisgICAgdG90YWwgKz0gKGRvdWJsZSlsYXJnZS5RdWFkUGFydDsKKyAgICBpZiAoaW5mbykgeworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRQcm9jZXNzVGltZXMoKSI7CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS03OworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0b3RhbCAqIDFlLTcpOworI2Vsc2UKKworI2lmIGRlZmluZWQoSEFWRV9TWVNfUkVTT1VSQ0VfSCkKKyAgICBzdHJ1Y3QgcnVzYWdlIHJ1OworI2VuZGlmCisjaWZkZWYgSEFWRV9USU1FUworICAgIHN0cnVjdCB0bXMgdDsKKyAgICBzdGF0aWMgbG9uZyB0aWNrc19wZXJfc2Vjb25kID0gLTE7CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSBcCisgICAgJiYgKGRlZmluZWQoQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKSB8fCBkZWZpbmVkKENMT0NLX1BST0YpKQorICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKyNpZmRlZiBDTE9DS19QUk9GCisgICAgY29uc3QgY2xvY2tpZF90IGNsa19pZCA9IENMT0NLX1BST0Y7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19QUk9GKSI7CisjZWxzZQorICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQ7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQpIjsKKyNlbmRpZgorCisgICAgaWYgKGNsb2NrX2dldHRpbWUoY2xrX2lkLCAmdHApID09IDApIHsKKyAgICAgICAgaWYgKGluZm8pIHsKKyAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyByZXM7CisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uOworICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgICAgICAgICAgaWYgKGNsb2NrX2dldHJlcyhjbGtfaWQsICZyZXMpID09IDApCisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHJlcy50dl9zZWMgKyByZXMudHZfbnNlYyAqIDFlLTk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7CisgICAgfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1JFU09VUkNFX0gpCisgICAgaWYgKGdldHJ1c2FnZShSVVNBR0VfU0VMRiwgJnJ1KSA9PSAwKSB7CisgICAgICAgIGRvdWJsZSB0b3RhbDsKKyAgICAgICAgdG90YWwgPSBydS5ydV91dGltZS50dl9zZWMgKyBydS5ydV91dGltZS50dl91c2VjICogMWUtNjsKKyAgICAgICAgdG90YWwgKz0gcnUucnVfc3RpbWUudHZfc2VjICsgcnUucnVfc3RpbWUudHZfdXNlYyAqIDFlLTY7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJnZXRydXNhZ2UoUlVTQUdFX1NFTEYpIjsKKyAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS02OworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodG90YWwpOworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9USU1FUworICAgIGlmICh0aW1lcygmdCkgIT0gKGNsb2NrX3QpLTEpIHsKKyAgICAgICAgZG91YmxlIHRvdGFsOworCisgICAgICAgIGlmICh0aWNrc19wZXJfc2Vjb25kID09IC0xKSB7CisjaWYgZGVmaW5lZChIQVZFX1NZU0NPTkYpICYmIGRlZmluZWQoX1NDX0NMS19UQ0spCisgICAgICAgICAgICB0aWNrc19wZXJfc2Vjb25kID0gc3lzY29uZihfU0NfQ0xLX1RDSyk7CisgICAgICAgICAgICBpZiAodGlja3NfcGVyX3NlY29uZCA8IDEpCisgICAgICAgICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IC0xOworI2VsaWYgZGVmaW5lZChIWikKKyAgICAgICAgICAgIHRpY2tzX3Blcl9zZWNvbmQgPSBIWjsKKyNlbHNlCisgICAgICAgICAgICB0aWNrc19wZXJfc2Vjb25kID0gNjA7IC8qIG1hZ2ljIGZhbGxiYWNrIHZhbHVlOyBtYXkgYmUgYm9ndXMgKi8KKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgaWYgKHRpY2tzX3Blcl9zZWNvbmQgIT0gLTEpIHsKKyAgICAgICAgICAgIHRvdGFsID0gKGRvdWJsZSl0LnRtc191dGltZSAvIHRpY2tzX3Blcl9zZWNvbmQ7CisgICAgICAgICAgICB0b3RhbCArPSAoZG91YmxlKXQudG1zX3N0aW1lIC8gdGlja3NfcGVyX3NlY29uZDsKKyAgICAgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAidGltZXMoKSI7CisgICAgICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICAgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMS4wIC8gdGlja3NfcGVyX3NlY29uZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodG90YWwpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gZmxvYXRjbG9jayhpbmZvKTsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9wcm9jZXNzX3RpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgcmV0dXJuIHB5X3Byb2Nlc3NfdGltZShOVUxMKTsKK30KKworUHlEb2NfU1RSVkFSKHByb2Nlc3NfdGltZV9kb2MsCisicHJvY2Vzc190aW1lKCkgLT4gZmxvYXRcblwKK1xuXAorUHJvY2VzcyB0aW1lIGZvciBwcm9maWxpbmc6IHN1bSBvZiB0aGUga2VybmVsIGFuZCB1c2VyLXNwYWNlIENQVSB0aW1lLiIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX2dldF9jbG9ja19pbmZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpuYW1lOworICAgIF9QeV9jbG9ja19pbmZvX3QgaW5mbzsKKyAgICBQeU9iamVjdCAqb2JqID0gTlVMTCwgKmRpY3QsICpuczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpnZXRfY2xvY2tfaW5mbyIsICZuYW1lKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNpZmRlZiBQeV9ERUJVRworICAgIGluZm8uaW1wbGVtZW50YXRpb24gPSBOVUxMOworICAgIGluZm8ubW9ub3RvbmljID0gLTE7CisgICAgaW5mby5hZGp1c3RhYmxlID0gLTE7CisgICAgaW5mby5yZXNvbHV0aW9uID0gLTEuMDsKKyNlbHNlCisgICAgaW5mby5pbXBsZW1lbnRhdGlvbiA9ICIiOworICAgIGluZm8ubW9ub3RvbmljID0gMDsKKyAgICBpbmZvLmFkanVzdGFibGUgPSAwOworICAgIGluZm8ucmVzb2x1dGlvbiA9IDEuMDsKKyNlbmRpZgorCisgICAgaWYgKHN0cmNtcChuYW1lLCAidGltZSIpID09IDApCisgICAgICAgIG9iaiA9IGZsb2F0dGltZSgmaW5mbyk7CisjaWZkZWYgUFlDTE9DSworICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiY2xvY2siKSA9PSAwKQorICAgICAgICBvYmogPSBweWNsb2NrKCZpbmZvKTsKKyNlbmRpZgorI2lmZGVmIFBZTU9OT1RPTklDCisgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJtb25vdG9uaWMiKSA9PSAwKQorICAgICAgICBvYmogPSBweW1vbm90b25pYygmaW5mbyk7CisjZW5kaWYKKyAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgInBlcmZfY291bnRlciIpID09IDApCisgICAgICAgIG9iaiA9IHBlcmZfY291bnRlcigmaW5mbyk7CisgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJwcm9jZXNzX3RpbWUiKSA9PSAwKQorICAgICAgICBvYmogPSBweV9wcm9jZXNzX3RpbWUoJmluZm8pOworICAgIGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInVua25vd24gY2xvY2siKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfREVDUkVGKG9iaik7CisKKyAgICBkaWN0ID0gUHlEaWN0X05ldygpOworICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYXNzZXJ0KGluZm8uaW1wbGVtZW50YXRpb24gIT0gTlVMTCk7CisgICAgb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoaW5mby5pbXBsZW1lbnRhdGlvbik7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiaW1wbGVtZW50YXRpb24iLCBvYmopID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0NMRUFSKG9iaik7CisKKyAgICBhc3NlcnQoaW5mby5tb25vdG9uaWMgIT0gLTEpOworICAgIG9iaiA9IFB5Qm9vbF9Gcm9tTG9uZyhpbmZvLm1vbm90b25pYyk7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAibW9ub3RvbmljIiwgb2JqKSA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9DTEVBUihvYmopOworCisgICAgYXNzZXJ0KGluZm8uYWRqdXN0YWJsZSAhPSAtMSk7CisgICAgb2JqID0gUHlCb29sX0Zyb21Mb25nKGluZm8uYWRqdXN0YWJsZSk7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiYWRqdXN0YWJsZSIsIG9iaikgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIob2JqKTsKKworICAgIGFzc2VydChpbmZvLnJlc29sdXRpb24gPiAwLjApOworICAgIGFzc2VydChpbmZvLnJlc29sdXRpb24gPD0gMS4wKTsKKyAgICBvYmogPSBQeUZsb2F0X0Zyb21Eb3VibGUoaW5mby5yZXNvbHV0aW9uKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJyZXNvbHV0aW9uIiwgb2JqKSA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9DTEVBUihvYmopOworCisgICAgbnMgPSBfUHlOYW1lc3BhY2VfTmV3KGRpY3QpOworICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gbnM7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICBQeV9YREVDUkVGKG9iaik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihnZXRfY2xvY2tfaW5mb19kb2MsCisiZ2V0X2Nsb2NrX2luZm8obmFtZTogc3RyKSAtPiBkaWN0XG5cCitcblwKK0dldCBpbmZvcm1hdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrLiIpOworCiBzdGF0aWMgdm9pZAogUHlJbml0X3RpbWV6b25lKFB5T2JqZWN0ICptKSB7CiAgICAgLyogVGhpcyBjb2RlIG1vdmVkIGZyb20gUHlJbml0X3RpbWUgd2hvbGVzYWxlIHRvIGFsbG93IGNhbGxpbmcgaXQgZnJvbQpAQCAtNzkxLDggKzEyNzcsOCBAQAogI2VuZGlmIC8qIFBZT1NfT1MyICovCiAjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiZGF5bGlnaHQiLCBkYXlsaWdodCk7Ci0gICAgb3R6MCA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKHR6bmFtZVswXSwgc3RybGVuKHR6bmFtZVswXSkpOwotICAgIG90ejEgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSh0em5hbWVbMV0sIHN0cmxlbih0em5hbWVbMV0pKTsKKyAgICBvdHowID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSh0em5hbWVbMF0sICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICBvdHoxID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSh0em5hbWVbMV0sICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInR6bmFtZSIsIFB5X0J1aWxkVmFsdWUoIihOTikiLCBvdHowLCBvdHoxKSk7CiAjZWxzZSAvKiAhSEFWRV9UWk5BTUUgfHwgX19HTElCQ19fIHx8IF9fQ1lHV0lOX18qLwogI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKQEAgLTg0MywxNCArMTMyOSwzOCBAQAogICAgICAgICAgICAgICAgICAgICAgICBQeV9CdWlsZFZhbHVlKCIoenopIiwgX3R6bmFtZVswXSwgX3R6bmFtZVsxXSkpOwogI2VuZGlmIC8qIF9fQ1lHV0lOX18gKi8KICNlbmRpZiAvKiAhSEFWRV9UWk5BTUUgfHwgX19HTElCQ19fIHx8IF9fQ1lHV0lOX18qLworCisjaWYgZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUkVBTFRJTUUpOworI2lmZGVmIENMT0NLX01PTk9UT05JQworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQyk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19NT05PVE9OSUNfUkFXCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDX1JBVyk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19ISUdIUkVTCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfSElHSFJFUyk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19USFJFQURfQ1BVVElNRV9JRCk7CisjZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KIH0KIAogCiBzdGF0aWMgUHlNZXRob2REZWYgdGltZV9tZXRob2RzW10gPSB7CiAgICAgeyJ0aW1lIiwgICAgICAgICAgICB0aW1lX3RpbWUsIE1FVEhfTk9BUkdTLCB0aW1lX2RvY30sCi0jaWZkZWYgSEFWRV9DTE9DSworI2lmZGVmIFBZQ0xPQ0sKICAgICB7ImNsb2NrIiwgICAgICAgICAgIHRpbWVfY2xvY2ssIE1FVEhfTk9BUkdTLCBjbG9ja19kb2N9LAogI2VuZGlmCisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCisgICAgeyJjbG9ja19nZXR0aW1lIiwgICB0aW1lX2Nsb2NrX2dldHRpbWUsIE1FVEhfVkFSQVJHUywgY2xvY2tfZ2V0dGltZV9kb2N9LAorICAgIHsiY2xvY2tfc2V0dGltZSIsICAgdGltZV9jbG9ja19zZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX3NldHRpbWVfZG9jfSwKKyAgICB7ImNsb2NrX2dldHJlcyIsICAgIHRpbWVfY2xvY2tfZ2V0cmVzLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHJlc19kb2N9LAorI2VuZGlmCiAgICAgeyJzbGVlcCIsICAgICAgICAgICB0aW1lX3NsZWVwLCBNRVRIX1ZBUkFSR1MsIHNsZWVwX2RvY30sCiAgICAgeyJnbXRpbWUiLCAgICAgICAgICB0aW1lX2dtdGltZSwgTUVUSF9WQVJBUkdTLCBnbXRpbWVfZG9jfSwKICAgICB7ImxvY2FsdGltZSIsICAgICAgIHRpbWVfbG9jYWx0aW1lLCBNRVRIX1ZBUkFSR1MsIGxvY2FsdGltZV9kb2N9LApAQCAtODY2LDYgKzEzNzYsMTIgQEAKICNpZmRlZiBIQVZFX1dPUktJTkdfVFpTRVQKICAgICB7InR6c2V0IiwgICAgICAgICAgIHRpbWVfdHpzZXQsIE1FVEhfTk9BUkdTLCB0enNldF9kb2N9LAogI2VuZGlmCisjaWZkZWYgUFlNT05PVE9OSUMKKyAgICB7Im1vbm90b25pYyIsICAgICAgIHRpbWVfbW9ub3RvbmljLCBNRVRIX05PQVJHUywgbW9ub3RvbmljX2RvY30sCisjZW5kaWYKKyAgICB7InByb2Nlc3NfdGltZSIsICAgIHRpbWVfcHJvY2Vzc190aW1lLCBNRVRIX05PQVJHUywgcHJvY2Vzc190aW1lX2RvY30sCisgICAgeyJwZXJmX2NvdW50ZXIiLCAgICB0aW1lX3BlcmZfY291bnRlciwgTUVUSF9OT0FSR1MsIHBlcmZfY291bnRlcl9kb2N9LAorICAgIHsiZ2V0X2Nsb2NrX2luZm8iLCAgdGltZV9nZXRfY2xvY2tfaW5mbywgTUVUSF9WQVJBUkdTLCBnZXRfY2xvY2tfaW5mb19kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC04ODEsNyArMTM5Nyw3IEBACiBcblwKIFRoZSBvdGhlciByZXByZXNlbnRhdGlvbiBpcyBhIHR1cGxlIG9mIDkgaW50ZWdlcnMgZ2l2aW5nIGxvY2FsIHRpbWUuXG5cCiBUaGUgdHVwbGUgaXRlbXMgYXJlOlxuXAotICB5ZWFyIChmb3VyIGRpZ2l0cywgZS5nLiAxOTk4KVxuXAorICB5ZWFyIChpbmNsdWRpbmcgY2VudHVyeSwgZS5nLiAxOTk4KVxuXAogICBtb250aCAoMS0xMilcblwKICAgZGF5ICgxLTMxKVxuXAogICBob3VycyAoMC0yMylcblwKQEAgLTkzMyw0NiArMTQ0OSw2NSBAQAogUHlJbml0X3RpbWUodm9pZCkKIHsKICAgICBQeU9iamVjdCAqbTsKLSAgICBjaGFyICpwOwogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJnRpbWVtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogQWNjZXB0IDItZGlnaXQgZGF0ZXMgdW5sZXNzIFBZVEhPTlkySyBpcyBzZXQgYW5kIG5vbi1lbXB0eSAqLwotICAgIHAgPSBQeV9HRVRFTlYoIlBZVEhPTlkySyIpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJhY2NlcHQyZHllYXIiLCAobG9uZykgKCFwIHx8ICEqcCkpOwotICAgIC8qIFNxdWlycmVsIGF3YXkgdGhlIG1vZHVsZSdzIGRpY3Rpb25hcnkgZm9yIHRoZSB5MmsgY2hlY2sgKi8KLSAgICBtb2RkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChtKTsKLSAgICBQeV9JTkNSRUYobW9kZGljdCk7Ci0KICAgICAvKiBTZXQsIG9yIHJlc2V0LCBtb2R1bGUgdmFyaWFibGVzIGxpa2UgdGltZS50aW1lem9uZSAqLwogICAgIFB5SW5pdF90aW1lem9uZShtKTsKIAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAvKiBIZWxwZXIgdG8gYWxsb3cgaW50ZXJydXB0cyBmb3IgV2luZG93cy4KLSAgICAgICBJZiBDdHJsK0MgZXZlbnQgZGVsaXZlcmVkIHdoaWxlIG5vdCBzbGVlcGluZwotICAgICAgIGl0IHdpbGwgYmUgaWdub3JlZC4KLSAgICAqLwotICAgIG1haW5fdGhyZWFkID0gUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpOwotICAgIGhJbnRlcnJ1cHRFdmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBOVUxMKTsKLSAgICBTZXRDb25zb2xlQ3RybEhhbmRsZXIoIFB5Q3RybEhhbmRsZXIsIFRSVUUpOwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlN0cnVjdFRpbWVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJ1Y3RfdGltZV90eXBlX2Rlc2MpOworCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICB3aW52ZXIuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZih3aW52ZXIpOworICAgICAgICBpZiAoIUdldFZlcnNpb25FeCgoT1NWRVJTSU9OSU5GTyopJndpbnZlcikpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KICAgICBQeV9JTkNSRUYoJlN0cnVjdFRpbWVUeXBlKTsKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9TVFJVQ1RfVE1fSVRFTVMiLCAxMSk7CisjZWxzZQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfU1RSVUNUX1RNX0lURU1TIiwgOSk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0cnVjdF90aW1lIiwgKFB5T2JqZWN0KikgJlN0cnVjdFRpbWVUeXBlKTsKICAgICBpbml0aWFsaXplZCA9IDE7CiAgICAgcmV0dXJuIG07CiB9CiAKLXN0YXRpYyBkb3VibGUKLWZsb2F0dGltZSh2b2lkKQorc3RhdGljIFB5T2JqZWN0KgorZmxvYXR0aW1lKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7CiAgICAgX1B5VGltZV90aW1ldmFsIHQ7Ci0gICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJnQpOwotICAgIHJldHVybiAoZG91YmxlKXQudHZfc2VjICsgdC50dl91c2VjKjAuMDAwMDAxOworI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKyAgICBpbnQgcmV0OworCisgICAgLyogX1B5VGltZV9nZXR0aW1lb2ZkYXkoKSBkb2VzIG5vdCB1c2UgY2xvY2tfZ2V0dGltZSgpCisgICAgICAgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIHRvIGxpbmsgUHl0aG9uIHRvIHRoZSBydCAocmVhbC10aW1lKQorICAgICAgIGxpYnJhcnksIGF0IGxlYXN0IG9uIExpbnV4ICovCisgICAgcmV0ID0gY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRwKTsKKyAgICBpZiAocmV0ID09IDApIHsKKyAgICAgICAgaWYgKGluZm8pIHsKKyAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyByZXM7CisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSI7CisgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgICAgICAgICBpZiAoY2xvY2tfZ2V0cmVzKENMT0NLX1JFQUxUSU1FLCAmcmVzKSA9PSAwKQorICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS05OworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworICAgIH0KKyNlbmRpZgorICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5X2luZm8oJnQsIGluZm8pOworICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKGRvdWJsZSl0LnR2X3NlYyArIHQudHZfdXNlYyAqIDFlLTYpOwogfQogCiAKQEAgLTk4NywyMyArMTUyMiwyOCBAQAogI2lmIGRlZmluZWQoSEFWRV9TRUxFQ1QpICYmICFkZWZpbmVkKF9fRU1YX18pCiAgICAgc3RydWN0IHRpbWV2YWwgdDsKICAgICBkb3VibGUgZnJhYzsKKyAgICBpbnQgZXJyOworCiAgICAgZnJhYyA9IGZtb2Qoc2VjcywgMS4wKTsKICAgICBzZWNzID0gZmxvb3Ioc2Vjcyk7CiAgICAgdC50dl9zZWMgPSAobG9uZylzZWNzOwogICAgIHQudHZfdXNlYyA9IChsb25nKShmcmFjKjEwMDAwMDAuMCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChzZWxlY3QoMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgJnQpICE9IDApIHsKKyAgICBlcnIgPSBzZWxlY3QoMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgJnQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGVyciAhPSAwKSB7CiAjaWZkZWYgRUlOVFIKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0jZWxzZQotICAgICAgICBpZiAoMSkgeworICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCisgICAgICAgIHsKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogI2VsaWYgZGVmaW5lZChfX1dBVENPTUNfXykgJiYgIWRlZmluZWQoX19RTlhfXykKICAgICAvKiBYWFggQ2FuJ3QgaW50ZXJydXB0IHRoaXMgc2xlZXAgKi8KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC0xMDI0LDE4ICsxNTY0LDE0IEBACiAgICAgICAgICAqIGJ5IEd1aWRvLCBvbmx5IHRoZSBtYWluIHRocmVhZCBjYW4gYmUgaW50ZXJydXB0ZWQuCiAgICAgICAgICAqLwogICAgICAgICB1bF9taWxsaXMgPSAodW5zaWduZWQgbG9uZyltaWxsaXNlY3M7Ci0gICAgICAgIGlmICh1bF9taWxsaXMgPT0gMCB8fAotICAgICAgICAgICAgbWFpbl90aHJlYWQgIT0gUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKQorICAgICAgICBpZiAodWxfbWlsbGlzID09IDAgfHwgIV9QeU9TX0lzTWFpblRocmVhZCgpKQogICAgICAgICAgICAgU2xlZXAodWxfbWlsbGlzKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBEV09SRCByYzsKKyAgICAgICAgICAgIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOwogICAgICAgICAgICAgUmVzZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOwogICAgICAgICAgICAgcmMgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGhJbnRlcnJ1cHRFdmVudCwgdWxfbWlsbGlzKTsKICAgICAgICAgICAgIGlmIChyYyA9PSBXQUlUX09CSkVDVF8wKSB7Ci0gICAgICAgICAgICAgICAgLyogWWllbGQgdG8gbWFrZSBzdXJlIHJlYWwgUHl0aG9uIHNpZ25hbAotICAgICAgICAgICAgICAgICAqIGhhbmRsZXIgY2FsbGVkLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIFNsZWVwKDEpOwogICAgICAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKICAgICAgICAgICAgICAgICBlcnJubyA9IEVJTlRSOwogICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdGthcHBpbml0LmMgYi9Nb2R1bGVzL3RrYXBwaW5pdC5jCmluZGV4IGMxZjk3YjAuLjJlZDg1OTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGthcHBpbml0LmMKKysrIGIvTW9kdWxlcy90a2FwcGluaXQuYwpAQCAtMjYsNyArMjYsOSBAQAogaW50CiBUY2xfQXBwSW5pdChUY2xfSW50ZXJwICppbnRlcnApCiB7CisjaWZkZWYgV0lUSF9NT1JFQlVUVE9OUwogICAgIFRrX1dpbmRvdyBtYWluX3dpbmRvdzsKKyNlbmRpZgogICAgIGNvbnN0IGNoYXIgKl90a2ludGVyX3NraXBfdGtfaW5pdDsKICNpZmRlZiBUS0lOVEVSX1BST1RFQ1RfTE9BRFRLCiAgICAgY29uc3QgY2hhciAqX3RraW50ZXJfdGtfZmFpbGVkOwpAQCAtMTExLDcgKzExMywxMSBAQAogICAgICAgICByZXR1cm4gVENMX0VSUk9SOwogICAgIH0KIAorI2lmZGVmIFdJVEhfTU9SRUJVVFRPTlMKICAgICBtYWluX3dpbmRvdyA9IFRrX01haW5XaW5kb3coaW50ZXJwKTsKKyNlbHNlCisgICAgVGtfTWFpbldpbmRvdyhpbnRlcnApOworI2VuZGlmCiAKICNpZmRlZiBUS19BUVVBCiAgICAgVGtNYWNPU1hJbml0QXBwbGVFdmVudHMoaW50ZXJwKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZWRhdGEuYyBiL01vZHVsZXMvdW5pY29kZWRhdGEuYwppbmRleCA1M2U0OGRmLi41Yzk4MmY1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKKysrIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCkBAIC05MywxNiArOTMsMTMgQEAKIAogc3RhdGljIFB5X1VDUzQgZ2V0dWNoYXIoUHlVbmljb2RlT2JqZWN0ICpvYmopCiB7Ci0gICAgUHlfVU5JQ09ERSAqdiA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iaik7Ci0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKG9iaikgPT0gMSkKLSAgICAgICAgcmV0dXJuICp2OwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBlbHNlIGlmICgoUHlVbmljb2RlX0dFVF9TSVpFKG9iaikgPT0gMikgJiYKLSAgICAgICAgICAgICAoMHhEODAwIDw9IHZbMF0gJiYgdlswXSA8PSAweERCRkYpICYmCi0gICAgICAgICAgICAgKDB4REMwMCA8PSB2WzFdICYmIHZbMV0gPD0gMHhERkZGKSkKLSAgICAgICAgcmV0dXJuICgoKHZbMF0gJiAweDNGRik8PDEwKSB8ICh2WzFdICYgMHgzRkYpKSArIDB4MTAwMDA7Ci0jZW5kaWYKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikpCisgICAgICAgIHJldHVybiAoUHlfVUNTNCktMTsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSA9PSAxKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKKyAgICAgICAgICAgIHJldHVybiAoUHlfVUNTNCktMTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9SRUFEX0NIQVIob2JqLCAwKTsKKyAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgIm5lZWQgYSBzaW5nbGUgVW5pY29kZSBjaGFyYWN0ZXIgYXMgcGFyYW1ldGVyIik7CiAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOwpAQCAtNDQzLDcgKzQ0MCw3IEBACiAgICAgICAgZnJvbSBUb29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSwgaXQgc2hvdWxkIG5vdCBiZSBwb3NzaWJsZQogICAgICAgIHRvIG92ZXJmbG93IGRlY29tcF9wcmVmaXguICovCiAgICAgcHJlZml4X2luZGV4ID0gZGVjb21wX2RhdGFbaW5kZXhdICYgMjU1OwotICAgIGFzc2VydChwcmVmaXhfaW5kZXggPCAoc2l6ZW9mKGRlY29tcF9wcmVmaXgpL3NpemVvZigqZGVjb21wX3ByZWZpeCkpKTsKKyAgICBhc3NlcnQocHJlZml4X2luZGV4IDwgUHlfQVJSQVlfTEVOR1RIKGRlY29tcF9wcmVmaXgpKTsKIAogICAgIC8qIGNvcHkgcHJlZml4ICovCiAgICAgaSA9IHN0cmxlbihkZWNvbXBfcHJlZml4W3ByZWZpeF9pbmRleF0pOwpAQCAtNDk4LDM2ICs0OTUsNDcgQEAKIG5mZF9uZmtkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaW5wdXQsIGludCBrKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlfVU5JQ09ERSAqaSwgKmVuZCwgKm87CisgICAgUHlfVUNTNCAqb3V0cHV0OworICAgIFB5X3NzaXplX3QgaSwgbywgb3NpemU7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICAvKiBMb25nZXN0IGRlY29tcG9zaXRpb24gaW4gVW5pY29kZSAzLjI6IFUrRkRGQSAqLwotICAgIFB5X1VOSUNPREUgc3RhY2tbMjBdOworICAgIFB5X1VDUzQgc3RhY2tbMjBdOwogICAgIFB5X3NzaXplX3Qgc3BhY2UsIGlzaXplOwogICAgIGludCBpbmRleCwgcHJlZml4LCBjb3VudCwgc3RhY2twdHI7CiAgICAgdW5zaWduZWQgY2hhciBwcmV2LCBjdXI7CiAKICAgICBzdGFja3B0ciA9IDA7Ci0gICAgaXNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoaW5wdXQpOworICAgIGlzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpOwogICAgIC8qIE92ZXJhbGxvY2F0ZSBhdG1vc3QgMTAgY2hhcmFjdGVycy4gKi8KICAgICBzcGFjZSA9IChpc2l6ZSA+IDEwID8gMTAgOiBpc2l6ZSkgKyBpc2l6ZTsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc3BhY2UpOwotICAgIGlmICghcmVzdWx0KQorICAgIG9zaXplID0gc3BhY2U7CisgICAgb3V0cHV0ID0gUHlNZW1fTWFsbG9jKHNwYWNlICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICBpZiAoIW91dHB1dCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaW5wdXQpOwotICAgIGVuZCA9IGkgKyBpc2l6ZTsKLSAgICBvID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKKyAgICB9CisgICAgaSA9IG8gPSAwOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChpbnB1dCk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGlucHV0KTsKIAotICAgIHdoaWxlIChpIDwgZW5kKSB7Ci0gICAgICAgIHN0YWNrW3N0YWNrcHRyKytdID0gKmkrKzsKKyAgICB3aGlsZSAoaSA8IGlzaXplKSB7CisgICAgICAgIHN0YWNrW3N0YWNrcHRyKytdID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsrKTsKICAgICAgICAgd2hpbGUoc3RhY2twdHIpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY29kZSA9IHN0YWNrWy0tc3RhY2twdHJdOworICAgICAgICAgICAgUHlfVUNTNCBjb2RlID0gc3RhY2tbLS1zdGFja3B0cl07CiAgICAgICAgICAgICAvKiBIYW5ndWwgRGVjb21wb3NpdGlvbiBhZGRzIHRocmVlIGNoYXJhY3RlcnMgaW4KICAgICAgICAgICAgICAgIGEgc2luZ2xlIHN0ZXAsIHNvIHdlIG5lZWQgYXRsZWFzdCB0aGF0IG11Y2ggcm9vbS4gKi8KICAgICAgICAgICAgIGlmIChzcGFjZSA8IDMpIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3NpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KSArIDEwOworICAgICAgICAgICAgICAgIFB5X1VDUzQgKm5ld19vdXRwdXQ7CisgICAgICAgICAgICAgICAgb3NpemUgKz0gMTA7CiAgICAgICAgICAgICAgICAgc3BhY2UgKz0gMTA7Ci0gICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgbmV3c2l6ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgbmV3X291dHB1dCA9IFB5TWVtX1JlYWxsb2Mob3V0cHV0LCBvc2l6ZSpzaXplb2YoUHlfVUNTNCkpOworICAgICAgICAgICAgICAgIGlmIChuZXdfb3V0cHV0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShvdXRwdXQpOworICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBvID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KSArIG5ld3NpemUgLSBzcGFjZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gbmV3X291dHB1dDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIEhhbmd1bCBEZWNvbXBvc2l0aW9uLiAqLwogICAgICAgICAgICAgaWYgKFNCYXNlIDw9IGNvZGUgJiYgY29kZSA8IChTQmFzZStTQ291bnQpKSB7CkBAIC01MzUsMTEgKzU0MywxMSBAQAogICAgICAgICAgICAgICAgIGludCBMID0gTEJhc2UgKyBTSW5kZXggLyBOQ291bnQ7CiAgICAgICAgICAgICAgICAgaW50IFYgPSBWQmFzZSArIChTSW5kZXggJSBOQ291bnQpIC8gVENvdW50OwogICAgICAgICAgICAgICAgIGludCBUID0gVEJhc2UgKyBTSW5kZXggJSBUQ291bnQ7Ci0gICAgICAgICAgICAgICAgKm8rKyA9IEw7Ci0gICAgICAgICAgICAgICAgKm8rKyA9IFY7CisgICAgICAgICAgICAgICAgb3V0cHV0W28rK10gPSBMOworICAgICAgICAgICAgICAgIG91dHB1dFtvKytdID0gVjsKICAgICAgICAgICAgICAgICBzcGFjZSAtPSAyOwogICAgICAgICAgICAgICAgIGlmIChUICE9IFRCYXNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICpvKysgPSBUOworICAgICAgICAgICAgICAgICAgICBvdXRwdXRbbysrXSA9IFQ7CiAgICAgICAgICAgICAgICAgICAgIHNwYWNlIC0tOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU1OSw3ICs1NjcsNyBAQAogICAgICAgICAgICAgLyogQ29weSBjaGFyYWN0ZXIgaWYgaXQgaXMgbm90IGRlY29tcG9zYWJsZSwgb3IgaGFzIGEKICAgICAgICAgICAgICAgIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbiwgYnV0IHdlIGRvIE5GRC4gKi8KICAgICAgICAgICAgIGlmICghY291bnQgfHwgKHByZWZpeCAmJiAhaykpIHsKLSAgICAgICAgICAgICAgICAqbysrID0gY29kZTsKKyAgICAgICAgICAgICAgICBvdXRwdXRbbysrXSA9IGNvZGU7CiAgICAgICAgICAgICAgICAgc3BhY2UtLTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTU3MiwxNSArNTgwLDIwIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBEcm9wIG92ZXJhbGxvY2F0aW9uLiBDYW5ub3QgZmFpbC4gKi8KLSAgICBQeVVuaWNvZGVfUmVzaXplKCZyZXN1bHQsIFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpIC0gc3BhY2UpOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQsIG8pOworICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogcmVzdWx0IGlzIGd1YXJhbnRlZWQgdG8gYmUgcmVhZHksIGFzIGl0IGlzIGNvbXBhY3QuICovCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlc3VsdCk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlc3VsdCk7CiAKICAgICAvKiBTb3J0IGNhbm9uaWNhbGx5LiAqLwotICAgIGkgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgIHByZXYgPSBfZ2V0cmVjb3JkX2V4KCppKS0+Y29tYmluaW5nOwotICAgIGVuZCA9IGkgKyBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KTsKLSAgICBmb3IgKGkrKzsgaSA8IGVuZDsgaSsrKSB7Ci0gICAgICAgIGN1ciA9IF9nZXRyZWNvcmRfZXgoKmkpLT5jb21iaW5pbmc7CisgICAgaSA9IDA7CisgICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpLT5jb21iaW5pbmc7CisgICAgZm9yIChpKys7IGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpOyBpKyspIHsKKyAgICAgICAgY3VyID0gX2dldHJlY29yZF9leChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSktPmNvbWJpbmluZzsKICAgICAgICAgaWYgKHByZXYgPT0gMCB8fCBjdXIgPT0gMCB8fCBwcmV2IDw9IGN1cikgewogICAgICAgICAgICAgcHJldiA9IGN1cjsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTg4LDMxICs2MDEsMzIgQEAKICAgICAgICAgLyogTm9uLWNhbm9uaWNhbCBvcmRlci4gTmVlZCB0byBzd2l0Y2ggKmkgd2l0aCBwcmV2aW91cy4gKi8KICAgICAgICAgbyA9IGkgLSAxOwogICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSB0bXAgPSBvWzFdOwotICAgICAgICAgICAgb1sxXSA9IG9bMF07Ci0gICAgICAgICAgICBvWzBdID0gdG1wOworICAgICAgICAgICAgUHlfVUNTNCB0bXAgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBvKzEpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIG8rMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBvKSk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgbywgdG1wKTsKICAgICAgICAgICAgIG8tLTsKLSAgICAgICAgICAgIGlmIChvIDwgUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KSkKKyAgICAgICAgICAgIGlmIChvIDwgMCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHByZXYgPSBfZ2V0cmVjb3JkX2V4KCpvKS0+Y29tYmluaW5nOworICAgICAgICAgICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbykpLT5jb21iaW5pbmc7CiAgICAgICAgICAgICBpZiAocHJldiA9PSAwIHx8IHByZXYgPD0gY3VyKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHByZXYgPSBfZ2V0cmVjb3JkX2V4KCppKS0+Y29tYmluaW5nOworICAgICAgICBwcmV2ID0gX2dldHJlY29yZF9leChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSktPmNvbWJpbmluZzsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGludAotZmluZF9uZmNfaW5kZXgoUHlPYmplY3QgKnNlbGYsIHN0cnVjdCByZWluZGV4KiBuZmMsIFB5X1VOSUNPREUgY29kZSkKK2ZpbmRfbmZjX2luZGV4KFB5T2JqZWN0ICpzZWxmLCBzdHJ1Y3QgcmVpbmRleCogbmZjLCBQeV9VQ1M0IGNvZGUpCiB7Ci0gICAgaW50IGluZGV4OworICAgIHVuc2lnbmVkIGludCBpbmRleDsKICAgICBmb3IgKGluZGV4ID0gMDsgbmZjW2luZGV4XS5zdGFydDsgaW5kZXgrKykgewotICAgICAgICBpbnQgc3RhcnQgPSBuZmNbaW5kZXhdLnN0YXJ0OworICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnQgPSBuZmNbaW5kZXhdLnN0YXJ0OwogICAgICAgICBpZiAoY29kZSA8IHN0YXJ0KQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBpZiAoY29kZSA8PSBzdGFydCArIG5mY1tpbmRleF0uY291bnQpIHsKLSAgICAgICAgICAgIGludCBkZWx0YSA9IGNvZGUgLSBzdGFydDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZWx0YSA9IGNvZGUgLSBzdGFydDsKICAgICAgICAgICAgIHJldHVybiBuZmNbaW5kZXhdLmluZGV4ICsgZGVsdGE7CiAgICAgICAgIH0KICAgICB9CkBAIC02MjMsMjcgKzYzNywzNiBAQAogbmZjX25ma2MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppbnB1dCwgaW50IGspCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeV9VTklDT0RFICppLCAqaTEsICpvLCAqZW5kOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfVUNTNCAqb3V0cHV0OworICAgIFB5X3NzaXplX3QgaSwgaTEsIG8sIGxlbjsKICAgICBpbnQgZixsLGluZGV4LGluZGV4MSxjb21iOwotICAgIFB5X1VOSUNPREUgY29kZTsKLSAgICBQeV9VTklDT0RFICpza2lwcGVkWzIwXTsKKyAgICBQeV9VQ1M0IGNvZGU7CisgICAgUHlfc3NpemVfdCBza2lwcGVkWzIwXTsKICAgICBpbnQgY3NraXBwZWQgPSAwOwogCiAgICAgcmVzdWx0ID0gbmZkX25ma2Qoc2VsZiwgaW5wdXQsIGspOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiByZXN1bHQgd2lsbCBiZSAicmVhZHkiLiAqLworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXN1bHQpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXN1bHQpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7CiAKLSAgICAvKiBXZSBhcmUgZ29pbmcgdG8gbW9kaWZ5IHJlc3VsdCBpbi1wbGFjZS4KLSAgICAgICBJZiBuZmRfbmZrZCBpcyBjaGFuZ2VkIHRvIHNvbWV0aW1lcyByZXR1cm4gdGhlIGlucHV0LAotICAgICAgIHRoaXMgY29kZSBuZWVkcyB0byBiZSByZXZpZXdlZC4gKi8KLSAgICBhc3NlcnQocmVzdWx0ICE9IGlucHV0KTsKLQotICAgIGkgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgIGVuZCA9IGkgKyBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KTsKLSAgICBvID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKKyAgICAvKiBXZSBhbGxvY2F0ZSBhIGJ1ZmZlciBmb3IgdGhlIG91dHB1dC4KKyAgICAgICBJZiB3ZSBmaW5kIHRoYXQgd2UgbWFkZSBubyBjaGFuZ2VzLCB3ZSBzdGlsbCByZXR1cm4KKyAgICAgICB0aGUgTkZEIHJlc3VsdC4gKi8KKyAgICBvdXRwdXQgPSBQeU1lbV9NYWxsb2MobGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICBpZiAoIW91dHB1dCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGkgPSBvID0gMDsKIAogICBhZ2FpbjoKLSAgICB3aGlsZSAoaSA8IGVuZCkgeworICAgIHdoaWxlIChpIDwgbGVuKSB7CiAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBjc2tpcHBlZDsgaW5kZXgrKykgewogICAgICAgICAgIGlmIChza2lwcGVkW2luZGV4XSA9PSBpKSB7CiAgICAgICAgICAgICAgIC8qICppIGNoYXJhY3RlciBpcyBza2lwcGVkLgpAQCAtNjU2LDMzICs2NzksNDEgQEAKICAgICAgIH0KICAgICAgIC8qIEhhbmd1bCBDb21wb3NpdGlvbi4gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgPExWLFQ+CiAgICAgICAgICBwYWlycywgc2luY2Ugd2UgYWx3YXlzIGhhdmUgZGVjb21wb3NlZCBkYXRhLiAqLwotICAgICAgaWYgKExCYXNlIDw9ICppICYmICppIDwgKExCYXNlK0xDb3VudCkgJiYKLSAgICAgICAgICBpICsgMSA8IGVuZCAmJgotICAgICAgICAgIFZCYXNlIDw9IGlbMV0gJiYgaVsxXSA8PSAoVkJhc2UrVkNvdW50KSkgeworICAgICAgY29kZSA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgaWYgKExCYXNlIDw9IGNvZGUgJiYgY29kZSA8IChMQmFzZStMQ291bnQpICYmCisgICAgICAgICAgaSArIDEgPCBsZW4gJiYKKyAgICAgICAgICBWQmFzZSA8PSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKzEpICYmCisgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSA8PSAoVkJhc2UrVkNvdW50KSkgewogICAgICAgICAgIGludCBMSW5kZXgsIFZJbmRleDsKLSAgICAgICAgICBMSW5kZXggPSBpWzBdIC0gTEJhc2U7Ci0gICAgICAgICAgVkluZGV4ID0gaVsxXSAtIFZCYXNlOworICAgICAgICAgIExJbmRleCA9IGNvZGUgLSBMQmFzZTsKKyAgICAgICAgICBWSW5kZXggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKzEpIC0gVkJhc2U7CiAgICAgICAgICAgY29kZSA9IFNCYXNlICsgKExJbmRleCpWQ291bnQrVkluZGV4KSpUQ291bnQ7CiAgICAgICAgICAgaSs9MjsKLSAgICAgICAgICBpZiAoaSA8IGVuZCAmJgotICAgICAgICAgICAgICBUQmFzZSA8PSAqaSAmJiAqaSA8PSAoVEJhc2UrVENvdW50KSkgewotICAgICAgICAgICAgICBjb2RlICs9ICppLVRCYXNlOworICAgICAgICAgIGlmIChpIDwgbGVuICYmCisgICAgICAgICAgICAgIFRCYXNlIDw9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpICYmCisgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpIDw9IChUQmFzZStUQ291bnQpKSB7CisgICAgICAgICAgICAgIGNvZGUgKz0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSktVEJhc2U7CiAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICB9Ci0gICAgICAgICAgKm8rKyA9IGNvZGU7CisgICAgICAgICAgb3V0cHV0W28rK10gPSBjb2RlOwogICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogCi0gICAgICBmID0gZmluZF9uZmNfaW5kZXgoc2VsZiwgbmZjX2ZpcnN0LCAqaSk7CisgICAgICAvKiBjb2RlIGlzIHN0aWxsIGlucHV0W2ldIGhlcmUgKi8KKyAgICAgIGYgPSBmaW5kX25mY19pbmRleChzZWxmLCBuZmNfZmlyc3QsIGNvZGUpOwogICAgICAgaWYgKGYgPT0gLTEpIHsKLSAgICAgICAgICAqbysrID0gKmkrKzsKKyAgICAgICAgICBvdXRwdXRbbysrXSA9IGNvZGU7CisgICAgICAgICAgaSsrOwogICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogICAgICAgLyogRmluZCBuZXh0IHVuYmxvY2tlZCBjaGFyYWN0ZXIuICovCiAgICAgICBpMSA9IGkrMTsKICAgICAgIGNvbWIgPSAwOwotICAgICAgd2hpbGUgKGkxIDwgZW5kKSB7Ci0gICAgICAgICAgaW50IGNvbWIxID0gX2dldHJlY29yZF9leCgqaTEpLT5jb21iaW5pbmc7CisgICAgICAvKiBvdXRwdXQgYmFzZSBjaGFyYWN0ZXIgZm9yIG5vdzsgbWlnaHQgYmUgdXBkYXRlZCBsYXRlci4gKi8KKyAgICAgIG91dHB1dFtvXSA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgd2hpbGUgKGkxIDwgbGVuKSB7CisgICAgICAgICAgUHlfVUNTNCBjb2RlMSA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkxKTsKKyAgICAgICAgICBpbnQgY29tYjEgPSBfZ2V0cmVjb3JkX2V4KGNvZGUxKS0+Y29tYmluaW5nOwogICAgICAgICAgIGlmIChjb21iKSB7CiAgICAgICAgICAgICAgIGlmIChjb21iMSA9PSAwKQogICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02OTIsOCArNzIzLDggQEAKICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgfQotICAgICAgICAgIGwgPSBmaW5kX25mY19pbmRleChzZWxmLCBuZmNfbGFzdCwgKmkxKTsKLSAgICAgICAgICAvKiAqaTEgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggKmkuIElmICppMQorICAgICAgICAgIGwgPSBmaW5kX25mY19pbmRleChzZWxmLCBuZmNfbGFzdCwgY29kZTEpOworICAgICAgICAgIC8qIGkxIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIGkuIElmIGkxCiAgICAgICAgICAgICAgaXMgYSBzdGFydGVyLCB3ZSBkb24ndCBuZWVkIHRvIGxvb2sgZnVydGhlci4KICAgICAgICAgICAgICBPdGhlcndpc2UsIHJlY29yZCB0aGUgY29tYmluaW5nIGNsYXNzLiAqLwogICAgICAgICAgIGlmIChsID09IC0xKSB7CkBAIC03MTIsMTkgKzc0MywyOCBAQAogICAgICAgICAgICAgICBnb3RvIG5vdF9jb21iaW5hYmxlOwogCiAgICAgICAgICAgLyogUmVwbGFjZSB0aGUgb3JpZ2luYWwgY2hhcmFjdGVyLiAqLwotICAgICAgICAgICppID0gY29kZTsKKyAgICAgICAgICBvdXRwdXRbb10gPSBjb2RlOwogICAgICAgICAgIC8qIE1hcmsgdGhlIHNlY29uZCBjaGFyYWN0ZXIgdW51c2VkLiAqLwogICAgICAgICAgIGFzc2VydChjc2tpcHBlZCA8IDIwKTsKICAgICAgICAgICBza2lwcGVkW2Nza2lwcGVkKytdID0gaTE7CiAgICAgICAgICAgaTErKzsKLSAgICAgICAgICBmID0gZmluZF9uZmNfaW5kZXgoc2VsZiwgbmZjX2ZpcnN0LCAqaSk7CisgICAgICAgICAgZiA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19maXJzdCwgb3V0cHV0W29dKTsKICAgICAgICAgICBpZiAoZiA9PSAtMSkKICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgICAqbysrID0gKmkrKzsKKyAgICAgIC8qIE91dHB1dCBjaGFyYWN0ZXIgd2FzIGFscmVhZHkgd3JpdHRlbi4KKyAgICAgICAgIEp1c3QgYWR2YW5jZSB0aGUgaW5kaWNlcy4gKi8KKyAgICAgIG8rKzsgaSsrOwogICAgIH0KLSAgICBpZiAobyAhPSBlbmQpCi0gICAgICAgIFB5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgbyAtIFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCkpOworICAgIGlmIChvID09IGxlbikgeworICAgICAgICAvKiBObyBjaGFuZ2VzLiBSZXR1cm4gb3JpZ2luYWwgc3RyaW5nLiAqLworICAgICAgICBQeU1lbV9GcmVlKG91dHB1dCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQsIG8pOworICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03MzIsNyArNzcyLDkgQEAKIHN0YXRpYyBpbnQKIGlzX25vcm1hbGl6ZWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppbnB1dCwgaW50IG5mYywgaW50IGspCiB7Ci0gICAgUHlfVU5JQ09ERSAqaSwgKmVuZDsKKyAgICBQeV9zc2l6ZV90IGksIGxlbjsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIHVuc2lnbmVkIGNoYXIgcHJldl9jb21iaW5pbmcgPSAwLCBxdWlja2NoZWNrX21hc2s7CiAKICAgICAvKiBBbiBvbGRlciB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZSBpcyByZXF1ZXN0ZWQsIHF1aWNrY2hlY2tzIG11c3QgYmUKQEAgLTc0NCwxMCArNzg2LDEzIEBACiAgICAgICAgYXMgZGVzY3JpYmVkIGluIGh0dHA6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyMTUvI0FubmV4OC4gKi8KICAgICBxdWlja2NoZWNrX21hc2sgPSAzIDw8ICgobmZjID8gNCA6IDApICsgKGsgPyAyIDogMCkpOwogCi0gICAgaSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGlucHV0KTsKLSAgICBlbmQgPSBpICsgUHlVbmljb2RlX0dFVF9TSVpFKGlucHV0KTsKLSAgICB3aGlsZSAoaSA8IGVuZCkgewotICAgICAgICBjb25zdCBfUHlVbmljb2RlX0RhdGFiYXNlUmVjb3JkICpyZWNvcmQgPSBfZ2V0cmVjb3JkX2V4KCppKyspOworICAgIGkgPSAwOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChpbnB1dCk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGlucHV0KTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CisgICAgd2hpbGUgKGkgPCBsZW4pIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrKyk7CisgICAgICAgIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgKnJlY29yZCA9IF9nZXRyZWNvcmRfZXgoY2gpOwogICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbWJpbmluZyA9IHJlY29yZC0+Y29tYmluaW5nOwogICAgICAgICB1bnNpZ25lZCBjaGFyIHF1aWNrY2hlY2sgPSByZWNvcmQtPm5vcm1hbGl6YXRpb25fcXVpY2tfY2hlY2s7CiAKQEAgLTc3Niw3ICs4MjEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybSwgJlB5VW5pY29kZV9UeXBlLCAmaW5wdXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfR2V0U2l6ZShpbnB1dCkgPT0gMCkgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaW5wdXQpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCkgPT0gMCkgewogICAgICAgICAvKiBTcGVjaWFsIGNhc2UgZW1wdHkgaW5wdXQgc3RyaW5ncywgc2luY2UgcmVzaXppbmcKICAgICAgICAgICAgdGhlbSAgbGF0ZXIgd291bGQgY2F1c2UgaW50ZXJuYWwgZXJyb3JzLiAqLwogICAgICAgICBQeV9JTkNSRUYoaW5wdXQpOwpAQCAtODc2LDE1ICs5MjQsMjUgQEAKIHsKICAgICByZXR1cm4KICAgICAgICAgKDB4MzQwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHg0REI1KSAgIHx8IC8qIENKSyBJZGVvZ3JhcGggRXh0ZW5zaW9uIEEgKi8KLSAgICAgICAgKDB4NEUwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHg5RkNCKSAgIHx8IC8qIENKSyBJZGVvZ3JhcGggKi8KKyAgICAgICAgKDB4NEUwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHg5RkNDKSAgIHx8IC8qIENKSyBJZGVvZ3JhcGggKi8KICAgICAgICAgKDB4MjAwMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MkE2RDYpIHx8IC8qIENKSyBJZGVvZ3JhcGggRXh0ZW5zaW9uIEIgKi8KICAgICAgICAgKDB4MkE3MDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MkI3MzQpIHx8IC8qIENKSyBJZGVvZ3JhcGggRXh0ZW5zaW9uIEMgKi8KICAgICAgICAgKDB4MkI3NDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MkI4MUQpOyAgIC8qIENKSyBJZGVvZ3JhcGggRXh0ZW5zaW9uIEQgKi8KIH0KIAorLyogbWFjcm9zIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBjb2RlcG9pbnQgaXMgaW4gdGhlIFBVQSByYW5nZSB0aGF0CisgKiB3ZSBhcmUgdXNpbmcgdG8gc3RvcmUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzICovCisjZGVmaW5lIElTX0FMSUFTKGNwKSAoKGNwID49IGFsaWFzZXNfc3RhcnQpICYmIChjcCA8IGFsaWFzZXNfZW5kKSkKKyNkZWZpbmUgSVNfTkFNRURfU0VRKGNwKSAoKGNwID49IG5hbWVkX3NlcXVlbmNlc19zdGFydCkgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAoY3AgPCBuYW1lZF9zZXF1ZW5jZXNfZW5kKSkKKwogc3RhdGljIGludAotX2dldHVjbmFtZShQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCBjb2RlLCBjaGFyKiBidWZmZXIsIGludCBidWZsZW4pCitfZ2V0dWNuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0IGNvZGUsIGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmxlbiwKKyAgICAgICAgICAgaW50IHdpdGhfYWxpYXNfYW5kX3NlcSkKIHsKKyAgICAvKiBGaW5kIHRoZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29kZXBvaW50LgorICAgICAqIElmIHdpdGhfYWxpYXNfYW5kX3NlcSBpcyAxLCBjaGVjayBmb3IgbmFtZXMgaW4gdGhlIFByaXZhdGUgVXNlIEFyZWEgMTUKKyAgICAgKiB0aGF0IHdlIGFyZSB1c2luZyBmb3IgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzLiAqLwogICAgIGludCBvZmZzZXQ7CiAgICAgaW50IGk7CiAgICAgaW50IHdvcmQ7CkBAIC04OTMsOCArOTUxLDE2IEBACiAgICAgaWYgKGNvZGUgPj0gMHgxMTAwMDApCiAgICAgICAgIHJldHVybiAwOwogCisgICAgLyogWFhYIHNob3VsZCB3ZSBqdXN0IHNraXAgYWxsIHRoZSBjb2RlcG9pbnRzIGluIHRoZSBQVUFzIGhlcmU/ICovCisgICAgaWYgKCF3aXRoX2FsaWFzX2FuZF9zZXEgJiYgKElTX0FMSUFTKGNvZGUpIHx8IElTX05BTUVEX1NFUShjb2RlKSkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgaWYgKHNlbGYgJiYgVUNEX0NoZWNrKHNlbGYpKSB7Ci0gICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGNvZGUpOworICAgICAgICAvKiBpbiAzLjIuMCB0aGVyZSBhcmUgbm8gYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzICovCisgICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZDsKKyAgICAgICAgaWYgKElTX0FMSUFTKGNvZGUpIHx8IElTX05BTUVEX1NFUShjb2RlKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjb2RlKTsKICAgICAgICAgaWYgKG9sZC0+Y2F0ZWdvcnlfY2hhbmdlZCA9PSAwKSB7CiAgICAgICAgICAgICAvKiB1bmFzc2lnbmVkICovCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTk3OCw3ICsxMDQ0LDcgQEAKICAgICAvKiBjaGVjayBpZiBjb2RlIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBuYW1lICovCiAgICAgaW50IGk7CiAgICAgY2hhciBidWZmZXJbTkFNRV9NQVhMRU5dOwotICAgIGlmICghX2dldHVjbmFtZShzZWxmLCBjb2RlLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSkKKyAgICBpZiAoIV9nZXR1Y25hbWUoc2VsZiwgY29kZSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgMSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lbGVuOyBpKyspIHsKICAgICAgICAgaWYgKFB5X1RPVVBQRVIoUHlfQ0hBUk1BU0sobmFtZVtpXSkpICE9IGJ1ZmZlcltpXSkKQEAgLTk5NCw3ICsxMDYwLDcgQEAKICAgICAqbGVuID0gLTE7CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgY2hhciAqcyA9IGhhbmd1bF9zeWxsYWJsZXNbaV1bY29sdW1uXTsKLSAgICAgICAgbGVuMSA9IHN0cmxlbihzKTsKKyAgICAgICAgbGVuMSA9IFB5X1NBRkVfRE9XTkNBU1Qoc3RybGVuKHMpLCBzaXplX3QsIGludCk7CiAgICAgICAgIGlmIChsZW4xIDw9ICpsZW4pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKHN0cm5jbXAoc3RyLCBzLCBsZW4xKSA9PSAwKSB7CkBAIC0xMDA4LDggKzEwNzQsMjggQEAKIH0KIAogc3RhdGljIGludAotX2dldGNvZGUoUHlPYmplY3QqIHNlbGYsIGNvbnN0IGNoYXIqIG5hbWUsIGludCBuYW1lbGVuLCBQeV9VQ1M0KiBjb2RlKQorX2NoZWNrX2FsaWFzX2FuZF9zZXEodW5zaWduZWQgaW50IGNwLCBQeV9VQ1M0KiBjb2RlLCBpbnQgd2l0aF9uYW1lZF9zZXEpCiB7CisgICAgLyogY2hlY2sgaWYgbmFtZWQgc2VxdWVuY2VzIGFyZSBhbGxvd2VkICovCisgICAgaWYgKCF3aXRoX25hbWVkX3NlcSAmJiBJU19OQU1FRF9TRVEoY3ApKQorICAgICAgICByZXR1cm4gMDsKKyAgICAvKiBpZiB0aGUgY29kZXBvaW50IGlzIGluIHRoZSBQVUEgcmFuZ2UgdGhhdCB3ZSB1c2UgZm9yIGFsaWFzZXMsCisgICAgICogY29udmVydCBpdCB0byBvYnRhaW4gdGhlIHJpZ2h0IGNvZGVwb2ludCAqLworICAgIGlmIChJU19BTElBUyhjcCkpCisgICAgICAgICpjb2RlID0gbmFtZV9hbGlhc2VzW2NwLWFsaWFzZXNfc3RhcnRdOworICAgIGVsc2UKKyAgICAgICAgKmNvZGUgPSBjcDsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorX2dldGNvZGUoUHlPYmplY3QqIHNlbGYsIGNvbnN0IGNoYXIqIG5hbWUsIGludCBuYW1lbGVuLCBQeV9VQ1M0KiBjb2RlLAorICAgICAgICAgaW50IHdpdGhfbmFtZWRfc2VxKQoreworICAgIC8qIFJldHVybiB0aGUgY29kZXBvaW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4KKyAgICAgKiBOYW1lZCBhbGlhc2VzIGFyZSByZXNvbHZlZCB0b28gKHVubGVzcyBzZWxmICE9IE5VTEwgKGkuZS4gd2UgYXJlIHVzaW5nCisgICAgICogMy4yLjApKS4gIElmIHdpdGhfbmFtZWRfc2VxIGlzIDEsIHJldHVybnMgdGhlIFBVQSBjb2RlcG9pbnQgdGhhdCB3ZSBhcmUKKyAgICAgKiB1c2luZyBmb3IgdGhlIG5hbWVkIHNlcXVlbmNlLCBhbmQgdGhlIGNhbGxlciBtdXN0IHRoZW4gY29udmVydCBpdC4gKi8KICAgICB1bnNpZ25lZCBpbnQgaCwgdjsKICAgICB1bnNpZ25lZCBpbnQgbWFzayA9IGNvZGVfc2l6ZS0xOwogICAgIHVuc2lnbmVkIGludCBpLCBpbmNyOwpAQCAtMTA2NSwxMCArMTE1MSw4IEBACiAgICAgdiA9IGNvZGVfaGFzaFtpXTsKICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChfY21wbmFtZShzZWxmLCB2LCBuYW1lLCBuYW1lbGVuKSkgewotICAgICAgICAqY29kZSA9IHY7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KKyAgICBpZiAoX2NtcG5hbWUoc2VsZiwgdiwgbmFtZSwgbmFtZWxlbikpCisgICAgICAgIHJldHVybiBfY2hlY2tfYWxpYXNfYW5kX3NlcSh2LCBjb2RlLCB3aXRoX25hbWVkX3NlcSk7CiAgICAgaW5jciA9IChoIF4gKGggPj4gMykpICYgbWFzazsKICAgICBpZiAoIWluY3IpCiAgICAgICAgIGluY3IgPSBtYXNrOwpAQCAtMTA3NywxMCArMTE2MSw4IEBACiAgICAgICAgIHYgPSBjb2RlX2hhc2hbaV07CiAgICAgICAgIGlmICghdikKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoX2NtcG5hbWUoc2VsZiwgdiwgbmFtZSwgbmFtZWxlbikpIHsKLSAgICAgICAgICAgICpjb2RlID0gdjsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9CisgICAgICAgIGlmIChfY21wbmFtZShzZWxmLCB2LCBuYW1lLCBuYW1lbGVuKSkKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfYWxpYXNfYW5kX3NlcSh2LCBjb2RlLCB3aXRoX25hbWVkX3NlcSk7CiAgICAgICAgIGluY3IgPSBpbmNyIDw8IDE7CiAgICAgICAgIGlmIChpbmNyID4gbWFzaykKICAgICAgICAgICAgIGluY3IgPSBpbmNyIF4gY29kZV9wb2x5OwpAQCAtMTExOCw3ICsxMjAwLDcgQEAKICAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIV9nZXR1Y25hbWUoc2VsZiwgYywgbmFtZSwgc2l6ZW9mKG5hbWUpKSkgeworICAgIGlmICghX2dldHVjbmFtZShzZWxmLCBjLCBuYW1lLCBzaXplb2YobmFtZSksIDApKSB7CiAgICAgICAgIGlmIChkZWZvYmogPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJubyBzdWNoIG5hbWUiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE0MywyOCArMTIyNSwyNiBAQAogdW5pY29kZWRhdGFfbG9va3VwKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBQeV9VQ1M0IGNvZGU7Ci0gICAgUHlfVU5JQ09ERSBzdHJbMl07CiAKICAgICBjaGFyKiBuYW1lOwogICAgIGludCBuYW1lbGVuOworICAgIHVuc2lnbmVkIGludCBpbmRleDsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMjOmxvb2t1cCIsICZuYW1lLCAmbmFtZWxlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfZ2V0Y29kZShzZWxmLCBuYW1lLCBuYW1lbGVuLCAmY29kZSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0tleUVycm9yLCAidW5kZWZpbmVkIGNoYXJhY3RlciBuYW1lICclcyciLAotICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgaWYgKCFfZ2V0Y29kZShzZWxmLCBuYW1lLCBuYW1lbGVuLCAmY29kZSwgMSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0tleUVycm9yLCAidW5kZWZpbmVkIGNoYXJhY3RlciBuYW1lICclcyciLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGlmIChjb2RlID49IDB4MTAwMDApIHsKLSAgICAgICAgc3RyWzBdID0gMHhkODAwICsgKChjb2RlIC0gMHgxMDAwMCkgPj4gMTApOwotICAgICAgICBzdHJbMV0gPSAweGRjMDAgKyAoKGNvZGUgLSAweDEwMDAwKSAmIDB4M2ZmKTsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzdHIsIDIpOworICAgIC8vIGNoZWNrIGlmIGNvZGUgaXMgaW4gdGhlIFBVQSByYW5nZSB0aGF0IHdlIHVzZSBmb3IgbmFtZWQgc2VxdWVuY2VzCisgICAgLy8gYW5kIGNvbnZlcnQgaXQKKyAgICBpZiAoSVNfTkFNRURfU0VRKGNvZGUpKSB7CisgICAgICAgIGluZGV4ID0gY29kZS1uYW1lZF9zZXF1ZW5jZXNfc3RhcnQ7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV8yQllURV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lZF9zZXF1ZW5jZXNbaW5kZXhdLnNlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWRfc2VxdWVuY2VzW2luZGV4XS5zZXFsZW4pOwogICAgIH0KLSNlbmRpZgotICAgIHN0clswXSA9IChQeV9VTklDT0RFKSBjb2RlOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc3RyLCAxKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNvZGUpOwogfQogCiAvKiBYWFggQWRkIGRvYyBzdHJpbmdzLiAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oIGIvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCmluZGV4IDhlMmU3MjQuLjVkNWRjYTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaAorKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKQEAgLTEsNiArMSw2IEBACiAvKiB0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBUb29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSAzLjIgKi8KIAotI2RlZmluZSBVTklEQVRBX1ZFUlNJT04gIjYuMC4wIgorI2RlZmluZSBVTklEQVRBX1ZFUlNJT04gIjYuMS4wIgogLyogYSBsaXN0IG9mIHVuaXF1ZSBkYXRhYmFzZSByZWNvcmRzICovCiBjb25zdCBfUHlVbmljb2RlX0RhdGFiYXNlUmVjb3JkIF9QeVVuaWNvZGVfRGF0YWJhc2VfUmVjb3Jkc1tdID0gewogICAgIHswLCAwLCAwLCAwLCAwLCAwfSwKQEAgLTI4LDEyICsyOCwxMiBAQAogICAgIHsyNiwgMCwgMTksIDAsIDQsIDB9LAogICAgIHsyOCwgMCwgMTEsIDAsIDQsIDB9LAogICAgIHszMCwgMCwgMTksIDAsIDMsIDB9LAotICAgIHszMCwgMCwgMTksIDAsIDQsIDB9LAogICAgIHsyOSwgMCwgMTksIDAsIDQsIDEzNn0sCiAgICAgezMwLCAwLCAxOSwgMCwgNSwgMH0sCi0gICAgezIsIDAsIDEsIDAsIDQsIDEzNn0sCisgICAgezE5LCAwLCAxLCAwLCA0LCAxMzZ9LAogICAgIHsyNCwgMCwgMTksIDEsIDUsIDB9LAogICAgIHsxNCwgMCwgMTUsIDAsIDQsIDB9LAorICAgIHszMCwgMCwgMTksIDAsIDQsIDB9LAogICAgIHsyOSwgMCwgMTksIDAsIDMsIDEzNn0sCiAgICAgezMwLCAwLCAxMSwgMCwgNCwgMH0sCiAgICAgezI3LCAwLCAxMSwgMCwgNCwgMH0sCkBAIC00OSw2ICs0OSw3IEBACiAgICAgezIsIDAsIDEsIDAsIDUsIDEwfSwKICAgICB7MSwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezEsIDAsIDEsIDAsIDQsIDEzNn0sCisgICAgezIsIDAsIDEsIDAsIDQsIDEzNn0sCiAgICAgezIsIDAsIDEsIDAsIDUsIDB9LAogICAgIHsxOSwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezEsIDAsIDEsIDAsIDUsIDEzNn0sCkBAIC04Nyw2ICs4OCw3IEBACiAgICAgezYsIDAsIDE0LCAwLCA1LCAwfSwKICAgICB7MjYsIDAsIDEsIDAsIDUsIDB9LAogICAgIHsyMSwgMCwgMTksIDAsIDUsIDB9LAorICAgIHsyOCwgMCwgMTEsIDAsIDUsIDB9LAogICAgIHs0LCAyMjAsIDE0LCAwLCA1LCAwfSwKICAgICB7NCwgMjIyLCAxNCwgMCwgNSwgMH0sCiAgICAgezQsIDIyOCwgMTQsIDAsIDUsIDB9LApAQCAtMTM0LDYgKzEzNiw3IEBACiAgICAgezE5LCAwLCA1LCAwLCA1LCAxMzZ9LAogICAgIHs3LCAwLCA5LCAwLCA1LCAwfSwKICAgICB7MzAsIDAsIDUsIDAsIDUsIDB9LAorICAgIHsxNCwgMCwgNSwgMCwgNSwgMH0sCiAgICAgezQsIDM2LCAxNCwgMCwgNSwgMH0sCiAgICAgezQsIDAsIDE0LCAwLCA1LCAwfSwKICAgICB7NywgMCwgNCwgMCwgNSwgMH0sCkBAIC0xNDgsNyArMTUxLDYgQEAKICAgICB7NCwgNywgMTQsIDAsIDUsIDB9LAogICAgIHs1LCAwLCAxLCAwLCA1LCA4MH0sCiAgICAgezUsIDAsIDEsIDAsIDUsIDEwfSwKLSAgICB7MjgsIDAsIDExLCAwLCA1LCAwfSwKICAgICB7OSwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezQsIDAsIDE0LCAwLCA1LCA4MH0sCiAgICAgezQsIDAsIDE0LCAwLCA1LCAxMH0sCkBAIC0xNzUsNyArMTc3LDYgQEAKICAgICB7MTksIDAsIDEsIDAsIDUsIDgwfSwKICAgICB7MTAsIDAsIDE4LCAwLCA1LCAwfSwKICAgICB7OCwgMCwgMSwgMCwgNSwgMH0sCi0gICAgezE0LCAwLCAxLCAwLCA1LCAwfSwKICAgICB7NSwgOSwgMSwgMCwgNSwgMH0sCiAgICAgezQsIDEsIDE0LCAwLCA1LCAwfSwKICAgICB7NCwgMjM0LCAxNCwgMCwgNSwgMH0sCkBAIC0xOTAsNiArMTkxLDcgQEAKICAgICB7MTAsIDAsIDE4LCAwLCA1LCAxNzB9LAogICAgIHsxMCwgMCwgMTgsIDAsIDUsIDEzNn0sCiAgICAgezE0LCAwLCAxNSwgMCwgNSwgMH0sCisgICAgezE0LCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MTQsIDAsIDQsIDAsIDUsIDB9LAogICAgIHsyMSwgMCwgMTksIDAsIDQsIDB9LAogICAgIHsyMSwgMCwgMTksIDAsIDUsIDEzNn0sCkBAIC0yNTYsNyArMjU4LDcgQEAKICAgICB7NCwgMjI4LCAxNCwgMCwgMiwgMH0sCiAgICAgezQsIDIzMiwgMTQsIDAsIDIsIDB9LAogICAgIHs0LCAyMjIsIDE0LCAwLCAyLCAwfSwKLSAgICB7NCwgMjI0LCAxNCwgMCwgMiwgMH0sCisgICAgezUsIDIyNCwgMSwgMCwgMiwgMH0sCiAgICAgezgsIDAsIDEsIDAsIDIsIDEzNn0sCiAgICAgezE5LCAwLCAxLCAwLCAyLCAxMH0sCiAgICAgezQsIDgsIDE0LCAwLCAyLCA4MH0sCkBAIC0yNjYsNyArMjY4LDcgQEAKICAgICB7MzAsIDAsIDEsIDAsIDIsIDB9LAogICAgIHs5LCAwLCAxLCAwLCAyLCAxMzZ9LAogICAgIHszMCwgMCwgMSwgMCwgMiwgMTM2fSwKLSAgICB7MzAsIDAsIDEsIDAsIDQsIDB9LAorICAgIHs5LCAwLCAxLCAwLCA0LCAwfSwKICAgICB7OSwgMCwgMTksIDAsIDIsIDEzNn0sCiAgICAgezI5LCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MTUsIDAsIDEsIDAsIDUsIDB9LApAQCAtMzI1LDExICszMjcsMTIgQEAKICAgICB7MjcsIDAsIDEsIDAsIDUsIDEzNn0sCiAgICAgezcsIDAsIDksIDAsIDUsIDEzNn0sCiAgICAgezMwLCAwLCAxLCAwLCA1LCAxMzZ9LAorICAgIHszMCwgMCwgMSwgMCwgNCwgMH0sCiB9OwogCiAvKiBSZWluZGV4aW5nIG9mIE5GQyBmaXJzdCBjaGFyYWN0ZXJzLiAqLwotI2RlZmluZSBUT1RBTF9GSVJTVCAzNzAKLSNkZWZpbmUgVE9UQUxfTEFTVCA1NQorI2RlZmluZSBUT1RBTF9GSVJTVCAzNzIKKyNkZWZpbmUgVE9UQUxfTEFTVCA1Ngogc3RydWN0IHJlaW5kZXh7aW50IHN0YXJ0O3Nob3J0IGNvdW50LGluZGV4O307CiBzdGF0aWMgc3RydWN0IHJlaW5kZXggbmZjX2ZpcnN0W10gPSB7CiAgIHsgNjAsIDIsIDB9LApAQCAtNTM4LDYgKzU0MSw3IEBACiAgIHsgNjk3ODUsIDAsIDM2N30sCiAgIHsgNjk3ODcsIDAsIDM2OH0sCiAgIHsgNjk3OTcsIDAsIDM2OX0sCisgIHsgNjk5MzcsIDEsIDM3MH0sCiAgIHswLDAsMH0KIH07CiAKQEAgLTU3NCw2ICs1NzgsNyBAQAogICB7IDY5NjUsIDAsIDUxfSwKICAgeyAxMjQ0MSwgMSwgNTJ9LAogICB7IDY5ODE4LCAwLCA1NH0sCisgIHsgNjk5MjcsIDAsIDU1fSwKICAgezAsMCwwfQogfTsKIApAQCAtNjcxLDUxNSArNjc2LDUxNSBAQAogICAgIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIAogICAgIDM5LCA0MCwgNDEsIDQxLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIAogICAgIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIAotICAgIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDE3LCA4NCwgODUsIDg2LCA4NywgODgsIAotICAgIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAxLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMiwgCi0gICAgMTAzLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTA0LCA0MSwgNDEsIDEwNSwgMTA2LCAxMDcsIAotICAgIDEwOCwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExOCwgMTE5LCAKLSAgICAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgCi0gICAgMTE5LCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3LCA4OCwgODksIAorICAgIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMiwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDMsIDEwNCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwNSwgNDEsIDQxLCAxMDYsIDEwNywgCisgICAgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTksIAogICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIxLCAxMjEsIDEyMiwgMTIzLCAxMjQsIAotICAgIDEyNSwgMTI2LCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTcsIDEzNywgCi0gICAgMTM4LCAxMzksIDE0MCwgMTQxLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNDIsIDE3LCAxNDMsIDE3LCAxNDQsIDE3LCAKLSAgICAxNDUsIDE3LCAxNDYsIDE3LCAxNywgMTcsIDE0NywgMTcsIDE3LCAxNywgMTQ4LCAxNDksIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1MCwgMTcsIDE1MSwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1MiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDQxLCA0MSwgNDEsIDQxLCAxNTMsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNTQsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDc4LCAKLSAgICAxNTUsIDE1NiwgMTU3LCAxNTgsIDE3LCAxNTksIDE3LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIAotICAgIDE3LCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDE4MiwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDE4MywgMTAwLCAxODQsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMjEsIAotICAgIDEyMSwgMTIxLCAxMjEsIDE4NSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTg2LCAxNywgMTg3LCAKLSAgICAxODgsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDE4OSwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxODksIAorICAgIDEyMCwgMTIwLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIyLCAxMjIsIDEyMywgMTI0LCAKKyAgICAxMjUsIDEyNiwgMTI3LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgODQsIAorICAgIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxNDMsIDg0LCAxNDQsIDE0NSwgMTQ2LCAKKyAgICA4NCwgMTQ3LCA4NCwgMTQ4LCA4NCwgODQsIDg0LCAxNDksIDg0LCA4NCwgODQsIDE1MCwgMTUxLCAxNTIsIDE1MywgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTU0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNTUsIDg0LCAxNTYsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNTcsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA0MSwgNDEsIDQxLCA0MSwgMTU4LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCAxNTksIDE2MCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxNjEsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDc4LCAxNjIsIDE2MywgMTY0LCAxNjUsIDg0LCAxNjYsIDg0LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAKKyAgICAxNzMsIDE3NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxNzUsIDE3NiwgODQsIDg0LCAxNzcsIDE3OCwgMTc5LCAKKyAgICAxODAsIDE4MSwgODQsIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTkxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTkyLCAKKyAgICAxMDEsIDE5MywgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDEyMiwgMTIyLCAxMjIsIDEyMiwgMTk0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICAxOTUsIDg0LCAxOTYsIDE5NywgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTk4LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDE5OCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CkBAIC0xMTkxLDE0MDEgKzExOTYsMTQ2NCBAQAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAogICAgIDIwLCAyMCwgOSwgMTYsIDEwLCAxNiwgMSwgMSwgMSwgMSwgMSwgMSwgMywgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMjEsIDIyLCA4LCA4LCAyMywgOCwgMjQsIAotICAgIDI1LCAyNiwgMjcsIDI4LCAyOSwgMTYsIDMwLCAyNSwgMzEsIDMyLCAzMywgMzQsIDM0LCAyNiwgMzUsIDI1LCAyMiwgMjYsIAotICAgIDM0LCAyOCwgMzYsIDM3LCAzNywgMzcsIDIyLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOSwgMzgsIDM4LCAzOCwgMzgsIAorICAgIDIyLCAyNSwgMjYsIDI3LCAyOCwgMTYsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM0LCAyNSwgMzUsIDIyLCAyMiwgMjUsIAorICAgIDM0LCAyNywgMzYsIDM3LCAzNywgMzcsIDIyLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOSwgMzgsIDM4LCAzOCwgMzgsIAogICAgIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzksIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQwLCAzOSwgMzgsIDM4LCAzOCwgMzgsIAogICAgIDM4LCAzOSwgNDEsIDQyLCA0MiwgNDMsIDQzLCA0MywgNDMsIDQxLCA0MywgNDIsIDQyLCA0MiwgNDMsIDQyLCA0MiwgNDMsIAogICAgIDQzLCA0MSwgNDMsIDQyLCA0MiwgNDMsIDQzLCA0MywgNDAsIDQxLCA0MiwgNDIsIDQzLCA0MiwgNDMsIDQxLCA0MywgMzgsIAogICAgIDQyLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0MSwgMzgsIAogICAgIDQyLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOSwgNDEsIDM4LCA0MywgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQxLCA0NSwgMjgsIDM4LCA0MywgMzgsIAotICAgIDQzLCA0MSwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDUsIDI4LCAzOSwgNDEsIDM4LCA0MiwgMzgsIDQzLCAzOCwgNDIsIAotICAgIDI4LCAzOSwgNDEsIDM4LCA0MiwgMzgsIDQzLCAzOCwgNDMsIDM5LCA0MSwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOSwgNDEsIDM4LCA0MywgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQxLCA0NSwgNDYsIDM4LCA0MywgMzgsIAorICAgIDQzLCA0MSwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDUsIDQ2LCAzOSwgNDEsIDM4LCA0MiwgMzgsIDQzLCAzOCwgNDIsIAorICAgIDQ2LCAzOSwgNDEsIDM4LCA0MiwgMzgsIDQzLCAzOCwgNDMsIDM5LCA0MSwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzksIDQxLCAzOCwgNDMsIDM4LCA0MiwgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM1LCA0NiwgNDQsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgNDQsIDQ0LCA0NiwgNDYsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NiwgNDQsIDQ0LCA0NiwgNDQsIDQ0LCA0NCwgNDYsIDQ2LCA0NiwgNDQsIDQ0LCA0NiwgNDQsIDM4LCA0MywgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCA0NiwgNDYsIDQ0LCA0NiwgNDQsIDM4LCA0MywgNDQsIDQ0LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ0LCA0NiwgNDYsIDQ3LCA0NCwgNDYsIDQ2LCA0NiwgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OSwgMzUsIAotICAgIDQ4LCA0OSwgMzUsIDQ4LCA0OSwgMzUsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIAotICAgIDM4LCA0MiwgMzgsIDQyLCA0NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgNDMsIDQ4LCA0OSwgMzUsIDM4LCA0MywgNDQsIDQ0LCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDM1LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ0LCA0NywgNDQsIDM4LCA0MywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDQsIDM4LCA0MywgNDQsIDQ0LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDcsIDQ4LCA0NCwgNDcsIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ5LCA1MCwgMzUsIAorICAgIDQ5LCA1MCwgMzUsIDQ5LCA1MCwgMzUsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIAorICAgIDM4LCA0MiwgMzgsIDQyLCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgNDMsIDQ5LCA1MCwgMzUsIDM4LCA0MywgNDQsIDQ0LCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgNDQsIDQ2LCA0NiwgNDQsIDQ2LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDYsIDQxLCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0MSwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NywgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTEsIDUxLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTMsIAotICAgIDUzLCA1NCwgNTMsIDUxLCA1NSwgNTEsIDU1LCA1NSwgNTUsIDUxLCA1NSwgNTEsIDUxLCA1NiwgNTIsIDUzLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDI2LCAyNiwgMjYsIDI2LCA1NywgMjYsIDUzLCA1NCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTEsIDUzLCA1MiwgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1OCwgNTgsIDU4LCA1OCwgNTgsIDU5LCA1OCwgNTgsIDU4LCA1OCwgNTgsIAotICAgIDU4LCA1OCwgNTksIDU5LCA1OCwgNTksIDU4LCA1OSwgNTgsIDU4LCA2MCwgNjEsIDYxLCA2MSwgNjEsIDYwLCA2MiwgNjEsIAotICAgIDYxLCA2MSwgNjEsIDYxLCA2MywgNjMsIDY0LCA2NCwgNjQsIDY0LCA2NSwgNjUsIDYxLCA2MSwgNjEsIDYxLCA2NCwgNjQsIAotICAgIDYxLCA2NCwgNjQsIDYxLCA2MSwgNjYsIDY2LCA2NiwgNjYsIDY3LCA2MSwgNjEsIDYxLCA2MSwgNTksIDU5LCA1OSwgNjgsIAotICAgIDY4LCA1OCwgNjgsIDY4LCA2OSwgNTksIDYxLCA2MSwgNjEsIDU5LCA1OSwgNTksIDYxLCA2MSwgNzAsIDU5LCA1OSwgNTksIAotICAgIDYxLCA2MSwgNjEsIDYxLCA1OSwgNjAsIDYxLCA2MSwgNTksIDcxLCA3MiwgNzIsIDcxLCA3MiwgNzIsIDcxLCA1OSwgNTksIAotICAgIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNDQsIDQ2LCA0NCwgNDYsIDczLCA1MywgNDQsIAotICAgIDQ2LCAwLCAwLCA1MCwgNDYsIDQ2LCA0NiwgNzQsIDAsIDAsIDAsIDAsIDAsIDU3LCA3NSwgMzgsIDc0LCAzOCwgMzgsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUyLCA1MiwgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDU0LCAKKyAgICA1NCwgNTUsIDU0LCA1MiwgNTYsIDUyLCA1NiwgNTYsIDU2LCA1MiwgNTYsIDUyLCA1MiwgNTcsIDUzLCA1NCwgNTQsIDU0LCAKKyAgICA1NCwgNTQsIDU0LCAyNSwgMjUsIDI1LCAyNSwgNTgsIDI1LCA1NCwgNTUsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTQsIDU0LCAKKyAgICA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1NCwgNTMsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCAKKyAgICA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTksIDU5LCA1OSwgNTksIDU5LCA2MCwgNTksIDU5LCA1OSwgNTksIDU5LCAKKyAgICA1OSwgNTksIDYwLCA2MCwgNTksIDYwLCA1OSwgNjAsIDU5LCA1OSwgNjEsIDYyLCA2MiwgNjIsIDYyLCA2MSwgNjMsIDYyLCAKKyAgICA2MiwgNjIsIDYyLCA2MiwgNjQsIDY0LCA2NSwgNjUsIDY1LCA2NSwgNjYsIDY2LCA2MiwgNjIsIDYyLCA2MiwgNjUsIDY1LCAKKyAgICA2MiwgNjUsIDY1LCA2MiwgNjIsIDY3LCA2NywgNjcsIDY3LCA2OCwgNjIsIDYyLCA2MiwgNjIsIDYwLCA2MCwgNjAsIDY5LCAKKyAgICA2OSwgNTksIDY5LCA2OSwgNzAsIDYwLCA2MiwgNjIsIDYyLCA2MCwgNjAsIDYwLCA2MiwgNjIsIDcxLCA2MCwgNjAsIDYwLCAKKyAgICA2MiwgNjIsIDYyLCA2MiwgNjAsIDYxLCA2MiwgNjIsIDYwLCA3MiwgNzMsIDczLCA3MiwgNzMsIDczLCA3MiwgNjAsIDYwLCAKKyAgICA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDQ0LCA0NywgNDQsIDQ3LCA3NCwgNTQsIDQ0LCAKKyAgICA0NywgMCwgMCwgNTEsIDQ3LCA0NywgNDcsIDc1LCAwLCAwLCAwLCAwLCAwLCA1OCwgNzYsIDM4LCA3NSwgMzgsIDM4LCAzOCwgCiAgICAgMCwgMzgsIDAsIDM4LCAzOCwgNDMsIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAKICAgICAzOSwgMzksIDM5LCAzOSwgMCwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIAogICAgIDQzLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIAotICAgIDQ2LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDMsIDQzLCA0MywgNDMsIDQzLCA0NCwgMzUsIDM1LCA0OCwgNzYsIAotICAgIDc2LCAzNSwgMzUsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAzNSwgMzUsIDM1LCA0NiwgNDgsIDM1LCA3NywgNDQsIAotICAgIDQ2LCA0OCwgNDQsIDQ2LCA0NiwgNDQsIDQ0LCA0NCwgMzgsIDc4LCA0NCwgMzgsIDQ0LCA0NCwgNDQsIDM4LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgMzgsIDM4LCAzOCwgNDQsIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDc4LCAzOSwgMzksIAorICAgIDQ3LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDMsIDQzLCA0MywgNDMsIDQzLCA0NCwgMzUsIDM1LCA0OSwgNzcsIAorICAgIDc3LCAzNSwgMzUsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAzNSwgMzUsIDM1LCA0NywgNDksIDM1LCA3OCwgNDQsIAorICAgIDQ3LCA0OSwgNDQsIDQ3LCA0NywgNDQsIDQ0LCA0NCwgMzgsIDc5LCA0NCwgMzgsIDQ0LCA0NCwgNDQsIDM4LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgMzgsIDM4LCAzOCwgNDQsIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDc5LCAzOSwgMzksIAogICAgIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIAogICAgIDM5LCAzOSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDIsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIAogICAgIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MywgNDIsIAotICAgIDQ2LCA0MywgNDYsIDQ2LCA0NiwgNDMsIDQ2LCA0NiwgNDYsIDQ2LCA0MywgNDMsIDQzLCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDM4LCA0MywgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDc5LCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgxLCA4MSwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDM4LCA0MywgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDYsIAotICAgIDM4LCA0MywgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgNDQsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDYsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgNDQsIDQ2LCAzOCwgNDMsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAwLCAwLCAwLCAKKyAgICA0NywgNDMsIDQ3LCA0NywgNDcsIDQzLCA0NywgNDcsIDQ3LCA0NywgNDMsIDQzLCA0MywgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICAzOCwgNDMsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA4MCwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MiwgODIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCAzOCwgNDMsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAKKyAgICAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA1MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgMCwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAzNSwgCi0gICAgMCwgODIsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCA4NCwgODAsIDgwLCA4MCwgODAsIDg0LCA4MCwgODAsIDgwLCA4NSwgODQsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDgwLCA4MCwgODQsIDgwLCA4MCwgODUsIAotICAgIDg2LCA4MCwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgCi0gICAgMTAyLCAxMDMsIDEwNCwgMTAyLCA4MCwgODQsIDEwMiwgOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwMiwgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDYsIDEwNiwgMTA2LCAKLSAgICAxMDYsIDAsIDAsIDc3LCA3NywgMTA3LCAxMDgsIDEwOCwgMTA5LCAxMTAsIDExMSwgMjcsIDI3LCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDExMiwgMTEzLCAxMTQsIDExMSwgMCwgMCwgMTExLCAxMTEsIDExNSwgMTE1LCAxMTYsIDExNiwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTcsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE4LCAxMTksIDEyMCwgCi0gICAgMTEyLCAxMTMsIDExNCwgMTIxLCAxMjIsIDEyMywgMTIzLCAxMjQsIDg0LCA4MCwgODAsIDgwLCA4MCwgODAsIDg0LCA4MCwgCi0gICAgODAsIDg0LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEwOCwgMTI2LCAxMjYsIAotICAgIDExMSwgMTE1LCAxMTUsIDEyNywgMTE1LCAxMTUsIDExNSwgMTE1LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTYsIAotICAgIDExNSwgMTE2LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNiwgMTExLCAxMTUsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxMDYsIDI3LCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODQsIDgwLCAxMTcsIDExNywgODAsIDgwLCAyNywgODQsIDgwLCA4MCwgODQsIDExNSwgMTE1LCAKLSAgICAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDExNSwgMTE1LCAxMTUsIDEzMCwgCi0gICAgMTMwLCAxMTUsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIAotICAgIDExMSwgMTExLCAwLCAxMDYsIDExNSwgMTMxLCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCA4MCwgODQsIDgwLCA4MCwgODQsIDgwLCA4MCwgODQsIDg0LCAKLSAgICA4NCwgODAsIDg0LCA4NCwgODAsIDg0LCA4MCwgODAsIDgwLCA4NCwgODAsIDg0LCA4MCwgODQsIDgwLCA4NCwgODAsIDgwLCAKLSAgICAwLCAwLCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTMyLCAxMzIsIDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzLCAxMzMsIAotICAgIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODQsIDgwLCAxMzQsIDEzNCwgMjcsIDEzNSwgMTM1LCAxMzUsIDEzNCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCA4MCwgODAsIDgwLCA4MCwgMTM0LCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxMzQsIDgwLCA4MCwgODAsIDEzNCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDg0LCA4NCwgODQsIAotICAgIDAsIDAsIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNTMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDEzNywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNywgNDcsIDQ3LCAxMzcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgMTMyLCAxMzYsIDEzOCwgNDcsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzOSwgMTM2LCAxMzYsIDQ3LCA4MCwgODQsIDgwLCA4MCwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTQwLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDQ3LCA0NywgMTMyLCAxMzIsIAotICAgIDgyLCA4MiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA4MiwgNTIsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAxMzIsIDEzNiwgMTM2LCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDE0MiwgNDcsIAotICAgIDE0MywgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMCwgMCwgMTM2LCAxMzYsIDAsIDAsIDE0NCwgMTQ0LCAxMzksIAotICAgIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMsIDAsIDAsIDAsIDAsIDE0MCwgMTQwLCAwLCAxNDAsIDQ3LCA0NywgCi0gICAgMTMyLCAxMzIsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCAKLSAgICAxNDUsIDE0NSwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgNzksIDE0NSwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzIsIAotICAgIDEzNiwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAxNDAsIDAsIDQ3LCAxNDAsIDAsIDQ3LCA0NywgMCwgMCwgCi0gICAgMTQyLCAwLCAxMzYsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMCwgMCwgMCwgMCwgMTMyLCAxMzIsIDAsIDAsIDEzMiwgMTMyLCAKLSAgICAxMzksIDAsIDAsIDAsIDEzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQwLCAxNDAsIDE0MCwgNDcsIDAsIDE0MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxMzIsIAotICAgIDEzMiwgNDcsIDQ3LCA0NywgMTMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgMTM2LCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxNDIsIAotICAgIDQ3LCAxMzYsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMCwgMTMyLCAxMzIsIDEzNiwgMCwgMTM2LCAKLSAgICAxMzYsIDEzOSwgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgCi0gICAgMTMyLCAxMzIsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMTQ1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzNiwgMTM2LCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTQyLCA0NywgMTQzLCAKLSAgICAxMzIsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAwLCAwLCAxMzYsIDE0NCwgMCwgMCwgMTQ0LCAxNDQsIDEzOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3LCAxNDMsIDAsIDAsIDAsIDAsIDE0MCwgMTQwLCAwLCA0NywgNDcsIDQ3LCAxMzIsIAotICAgIDEzMiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA3OSwgNDcsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgNDcsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgMTM3LCA0NywgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCAwLCA0NywgMCwgNDcsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDE0MywgMTM2LCAxMzIsIAotICAgIDEzNiwgMTM2LCAwLCAwLCAwLCAxMzYsIDEzNiwgMTM2LCAwLCAxNDQsIDE0NCwgMTQ0LCAxMzksIDAsIDAsIDQ3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQ2LCAxNDYsIDE0NiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMTQ1LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMTM2LCAxMzYsIDEzNiwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAwLCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDAsIDEzMiwgMTMyLCAxNDgsIDAsIDEzMiwgMTMyLCAxMzIsIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQ5LCAxNTAsIDAsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAxMzIsIDEzMiwgMCwgMCwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTEsIDE1MSwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDc5LCAwLCAwLCAxMzYsIDEzNiwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDE0MiwgNDcsIDEzNiwgMTUyLCAxNDQsIDEzNiwgCi0gICAgMTQzLCAxMzYsIDEzNiwgMCwgMTUyLCAxNDQsIDE0NCwgMCwgMTQ0LCAxNDQsIDEzMiwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNDMsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDQ3LCA0NywgMTMyLCAxMzIsIDAsIDAsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCAxNDMsIDEzNiwgMTM2LCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDAsIDEzNiwgMTM2LCAxMzYsIDAsIDE0NCwgMTQ0LCAxNDQsIDEzOSwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAxMzIsIDEzMiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAwLCAwLCAwLCAKLSAgICA3OSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTM2LCAxMzYsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMTUzLCAwLCAwLCAwLCAwLCAxNDMsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAKLSAgICAwLCAxMzIsIDAsIDEzNiwgMTM2LCAxNDQsIDEzNiwgMTQ0LCAxNDQsIDE0NCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzMiwgNDcsIDE1NCwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNTUsIDE1NSwgMTM5LCAwLCAwLCAwLCAwLCAxNDUsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDUyLCAxMzIsIDE1NiwgMTU2LCAxNTYsIDE1NiwgMTMyLCAxMzIsIDEzMiwgODIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDM1LCAKKyAgICAwLCA4MywgODQsIDAsIDAsIDAsIDAsIDg1LCAwLCA4NiwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4NywgODYsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODcsIAorICAgIDg4LCA4MSwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgCisgICAgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDQsIDgxLCA4NiwgMTA0LCA5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgCisgICAgMCwgMTA3LCAxMDcsIDEwNywgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAwLCA3OCwgNzgsIDEwOSwgMTEwLCAxMTAsIDExMSwgMTEyLCAxMTMsIDI2LCAyNiwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMTQsIDExNSwgMTE2LCAxMTMsIDAsIDAsIDExMywgMTEzLCAxMTcsIDExNywgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE5LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDEyMCwgCisgICAgMTIxLCAxMjIsIDExNCwgMTE1LCAxMTYsIDEyMywgMTI0LCAxMjUsIDEyNSwgMTI2LCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4NiwgODEsIDgxLCA4NiwgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMTAsIAorICAgIDEyOCwgMTI4LCAxMTMsIDExNywgMTE3LCAxMjksIDExNywgMTE3LCAxMTcsIDExNywgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE4LCAxMTcsIDExOCwgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTgsIDExMywgMTE3LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgMTA4LCAyNiwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgMTE5LCAxMTksIDgxLCA4MSwgMjYsIDg2LCA4MSwgODEsIDg2LCAKKyAgICAxMTcsIDExNywgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMTcsIDExNywgCisgICAgMTE3LCAxMzIsIDEzMiwgMTE3LCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTMzLCAxMTcsIDEzNCwgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgODEsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIAorICAgIDg2LCA4NiwgODYsIDgxLCA4NiwgODYsIDgxLCA4NiwgODEsIDgxLCA4MSwgODYsIDgxLCA4NiwgODEsIDg2LCA4MSwgODYsIAorICAgIDgxLCA4MSwgMCwgMCwgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgCisgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgMTM3LCAxMzcsIDI2LCAxMzgsIDEzOCwgMTM4LCAxMzcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM3LCA4MSwgODEsIDgxLCAxMzcsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgCisgICAgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIAorICAgIDEwNCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4NiwgODYsIDg2LCAKKyAgICAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCA0NywgCi0gICAgMCwgMCwgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgMTMyLCA0NywgMTU0LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDE1NywgCi0gICAgMTU3LCAwLCAxMzIsIDEzMiwgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNTIsIDAsIDE1OCwgMTU4LCAxNTgsIAotICAgIDE1OCwgMTMyLCAxMzIsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgCi0gICAgMCwgMTU0LCAxNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA3OSwgNzksIDc5LCA4MiwgODIsIDgyLCA4MiwgCi0gICAgODIsIDgyLCA4MiwgODIsIDE1OSwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgNzksIDc5LCA3OSwgNzksIDc5LCA4NCwgODQsIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCA3OSwgODQsIDc5LCA4NCwgNzksIAotICAgIDE2MCwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxMzYsIDEzNiwgNDcsIDQ3LCA0NywgMTQwLCA0NywgNDcsIDQ3LCA0NywgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDE0MCwgNDcsIDQ3LCA0NywgNDcsIDE0MCwgNDcsIDQ3LCA0NywgNDcsIDE0MCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDE0MCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQwLCA0NywgNDcsIAotICAgIDQ3LCAwLCAwLCAwLCAwLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NSwgMTY1LCAxNjcsIDE2NSwgMTY3LCAxNjQsIDE2NCwgCi0gICAgMTY0LCAxNjQsIDEzMiwgMTM2LCAxNjQsIDE2NSwgODAsIDgwLCAxMzksIDgyLCA4MCwgODAsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTY1LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDAsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMTY1LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDE2NSwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNjUsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTY1LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDAsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgODQsIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDAsIDc5LCA3OSwgODIsIDgyLCA4MiwgODIsIDgyLCA3OSwgNzksIDc5LCA3OSwgODIsIAotICAgIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgCi0gICAgMTM2LCAxMzIsIDE0NywgMTMyLCAxMzIsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDE0MiwgMTM2LCAxMzksIAotICAgIDEzOSwgMTM2LCAxMzYsIDEzMiwgMTMyLCA0NywgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzNiwgMTMyLCAxMzIsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDEzMiwgMTMyLCA0NywgMTM2LCAxMzYsIDEzNiwgNDcsIDQ3LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAxMzIsIDEzMiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMTM2LCA4NCwgNDcsIDEzNiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxMzYsIDEzNiwgMTM2LCAxMzIsIDc5LCA3OSwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNywgMCwgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCAKKyAgICA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDEyMCwgMTIxLCAxMjIsIDgxLCA4MSwgODEsIAorICAgIDg2LCA4MSwgODEsIDg2LCA4NiwgODEsIDgxLCA4MSwgODEsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIAorICAgIDE0MSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDE0MiwgMTM5LCAxMzksIDQ4LCA4MSwgODYsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTQzLCAxNDMsIAorICAgIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMCwgMCwgMTM5LCAxMzksIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDYsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAwLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA4NSwgODUsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDgwLCA4NSwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCAxNDMsIDAsIDQ4LCAxNDMsIDAsIDQ4LCA0OCwgMCwgMCwgMTQ1LCAwLCAxMzksIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDAsIDAsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDEzNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTQzLCAxNDMsIDE0MywgNDgsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgMTM1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgMTM5LCAxMzksIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMzksIAorICAgIDE0NywgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5LCAxNDYsIDAsIDAsIDAsIDAsIAorICAgIDE0MywgMTQzLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MCwgNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzNSwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDQ4LCA0OCwgMTQwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzUsIDEzOSwgMTM5LCAwLCAwLCAwLCAxMzksIDEzOSwgMTM5LCAwLCAxNDcsIAorICAgIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODUsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgCisgICAgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgMCwgMCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMTM1LCAxMzUsIDE1MCwgMCwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTEsIDE1MiwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgODAsIDAsIDAsIAorICAgIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxNTQsIDE0NywgMTM5LCAxNDYsIDEzOSwgMTM5LCAwLCAxNTQsIDE0NywgMTQ3LCAKKyAgICAwLCAxNDcsIDE0NywgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgCisgICAgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM5LCAxMzksIDEzOSwgMCwgCisgICAgMTQ3LCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKKyAgICAxNTUsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMCwgMTM5LCAxMzksIDE0NywgCisgICAgMTM5LCAxNDcsIDE0NywgMTQ3LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzOSwgMTM5LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1NywgCisgICAgMTU3LCAxNDIsIDAsIDAsIDAsIDAsIDg1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM1LCAxNTgsIDE1OCwgMTU4LCAKKyAgICAxNTgsIDEzNSwgMTM1LCAxMzUsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAKKyAgICAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OCwgODAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNjEsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MywgODAsIDgwLCA4MCwgODYsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDg2LCA4MCwgODYsIDgwLCAxNjIsIDE2MywgMTY0LCAxNjMsIAorICAgIDE2NCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTY1LCAKKyAgICAxNjYsIDE2NywgMTY4LCAxNjcsIDE2NywgMTY5LCAxNjcsIDE2OSwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxMzUsIDEzOSwgCisgICAgMTY2LCAxNjcsIDgxLCA4MSwgMTQyLCA4MywgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxNDksIDEzNSwgCisgICAgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDUsIDEzOSwgMTQyLCAxNDIsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAxMzUsIDEzNSwgNDgsIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgODYsIDQ4LCAxMzksIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCA4MCwgODAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MiwgNTAsIDAsIDAsIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDQ3LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgCi0gICAgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY5LCAxNjksIDE2OSwgMTY5LCAKLSAgICAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgCi0gICAgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDAsIAotICAgIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMCwgMCwgODAsIDgwLCA4MCwgNzksIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDgzLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODIsIDgyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE3MCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNjEsIAotICAgIDE2MiwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODIsIDgyLCA4MiwgMTcxLCAxNzEsIDE3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDEzMiwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAxMzIsIDEzMiwgMTM5LCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMCwgNDcsIDQ3LCA0NywgMCwgMTMyLCAxMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNzIsIDE3MiwgMTM2LCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzksIAotICAgIDEzMiwgODIsIDgyLCA4MiwgNTIsIDgyLCA4MiwgODIsIDE0NSwgNDcsIDgwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgODMsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTMyLCAxMzIsIDEzMiwgMTcwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDg2LCA0NywgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzIsIAotICAgIDEzMiwgMTM2LCAxMzYsIDEzNiwgMCwgMCwgMCwgMCwgMTM2LCAxMzYsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzNiwgODUsIDgwLCA4NCwgMCwgMCwgMCwgMCwgMjcsIDAsIDAsIDAsIDEzNSwgMTM1LCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDEzNiwgMTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0NiwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODAsIDg0LCAxMzYsIDEzNiwgMTM2LCAwLCAwLCA4MiwgODIsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAKLSAgICAxMzIsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAwLCAxMzksIDEzNiwgMTMyLCAxMzYsIDEzNiwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzMiwgMTMyLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDg0LCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIAotICAgIDUyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NCwgMCwgMCwgMCwgMCwgMCwgNDQsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA4MywgNTEsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCisgICAgODEsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDg0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNjMsIDE2NCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgCisgICAgMTQyLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIDEzNSwgODMsIDgzLCAKKyAgICA4MywgNTMsIDgzLCA4MywgODMsIDg1LCA0OCwgODEsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzUsIDEzNSwgMTM1LCAxNzIsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODgsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgCisgICAgMTM5LCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCA4NywgODEsIDg2LCAKKyAgICAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMTM4LCAxMzgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAKKyAgICAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODYsIDEzOSwgMTM5LCAxMzksIDAsIDAsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDE0MiwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgODYsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgNTMsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTM2LCA0NywgMTM3LCA0NywgMTM3LCA0NywgMTM3LCA0NywgMTM3LCA0NywgMTM3LCA0NywgNDcsIDQ3LCAxMzcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0MiwgMTQzLCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTQ0LCAxMzIsIDE0NCwgMTM2LCAxMzYsIDE0NCwgMTQ0LCAxMzIsIDE0NCwgCi0gICAgMTczLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDgwLCA4NCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDAsIDAsIDAsIDEzMiwgMTMyLCAxMzYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDE3MywgMCwgCi0gICAgMCwgMCwgNDcsIDQ3LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgMTQwLCA0OCwgCisgICAgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTQ2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTQ3LCAxMzUsIDE0NywgMTM5LCAxMzksIDE0NywgMTQ3LCAxMzUsIDE0NywgMTc0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgxLCA4NiwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDEzNSwgCisgICAgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDE3NCwgMTQyLCAxMzksIDEzOSwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAKKyAgICAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTc0LCAxNzQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDE0NSwgMCwgMCwgMCwgODMsIAorICAgIDgzLCA4MywgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgODMsIDgzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgzLCAxNzUsIDg2LCA4NiwgODYsIDg2LCA4NiwgCisgICAgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODEsIDEzOSwgMTc1LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDE3NSwgMTc1LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgODYsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgODEsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAxNDIsIDEzNiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTM2LCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgyLCA4MiwgODIsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM2LCAKLSAgICAxMzYsIDEzMiwgMTQyLCAwLCAwLCAwLCA4MiwgODIsIDgyLCA4MiwgODIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgyLCAxNzQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODAsIDgwLCA4NCwgODQsIDg0LCA4NCwgODAsIDEzNiwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCA0NywgNDcsIDQ3LCA0NywgODQsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNTAsIDUwLCA1MCwgNTIsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDUwLCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDgwLCAKLSAgICA4MCwgODQsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NCwgODAsIDgwLCAxNzUsIDE3NiwgODQsIDE3NywgODAsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgODEsIDgxLCA4NiwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDE3NiwgMTc3LCA4NiwgMTc4LCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc5LCA4NiwgCisgICAgODEsIDg2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgMzUsIDE4MCwgNDcsIDQ3LCA0NCwgNDcsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIAorICAgIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAKKyAgICAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIAorICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIAorICAgIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIAorICAgIDQzLCA0MywgMCwgMzgsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIAorICAgIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgMTgxLCA0MywgMTgxLCA0MywgMTgxLCA0MywgMTgxLCA0MywgMTgxLCAKKyAgICA0MywgMTgxLCA0MywgMTgxLCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MiwgMTgyLCAxODIsIAorICAgIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MiwgMTgyLCAxODIsIAorICAgIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MiwgMTgyLCAxODIsIAorICAgIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTgzLCAKKyAgICAxODIsIDU4LCAxODEsIDU4LCA1OCwgNzYsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4MywgMzgsIDE4MywgMTgyLCAKKyAgICA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODEsIDAsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTgzLCAwLCA3NiwgNzYsIAorICAgIDc2LCA0MywgNDMsIDQzLCAxODEsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODMsIDM4LCA3NiwgMTg0LCAxODQsIAorICAgIDAsIDAsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4MywgMzgsIDE4MywgMTgyLCAxODQsIDU4LCAwLCAxODUsIDE4NSwgCisgICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg3LCAxODcsIDE4NywgMTg4LCAxODksIAorICAgIDE5MCwgMTkxLCA4NCwgMTkwLCAxOTAsIDE5MCwgMjIsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTMsIDE5NCwgMTk1LCAKKyAgICAxOTYsIDIyLCAyMiwgMjIsIDEzOCwgMTk3LCAxOTcsIDE5NywgMjIsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIAorICAgIDIwNCwgMjEsIDIwNSwgMTEwLCAyMDUsIDIwNiwgMjA3LCAyMiwgMTkyLCAxOTIsIDEzOCwgMjgsIDM2LCAyMiwgMTkyLCAKKyAgICAxMzgsIDE5NywgMjA4LCAyMDgsIDEzOCwgMTM4LCAxMzgsIDIwOSwgMTYzLCAxNjQsIDE5MiwgMTkyLCAxOTIsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTM4LCAyMDgsIDEzOCwgMTM4LCAxOTIsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTg2LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMCwgMCwgMCwgMCwgMCwgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMjEwLCA1MSwgMCwgMCwgMzQsIDIxMCwgMjEwLCAyMTAsIDIxMCwgMjEwLCAKKyAgICAyMTEsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTAsIDM0LCAzNCwgMzQsIDM0LCAyMTAsIDIxMCwgMjEwLCAyMTAsIAorICAgIDIxMCwgMjExLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDAsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCAwLCAwLCAwLCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDIxNiwgMjE3LCA4NSwgODUsIAorICAgIDIzLCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCAxNzUsIDE3NSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDE3NSwgMTc1LCAxNzUsIDgxLCA4MSwgODIsIDgyLCA4MiwgODIsIDgxLCA4MiwgODIsIDgyLCAxNzUsIDE3NSwgCisgICAgODEsIDg2LCA4MSwgMTc1LCAxNzUsIDg2LCA4NiwgODYsIDg2LCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjE4LCAyMTgsIDQ5LCAyMTksIDI2LCAyMTksIDIxOCwgNDksIDI2LCAyMTksIDM1LCA0OSwgNDksIAorICAgIDQ5LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ2LCAyNiwgNDksIDIxOSwgMjYsIDc4LCA0OSwgNDksIDQ5LCA0OSwgNDksIDI2LCAKKyAgICAyNiwgMjE4LCAyMTksIDIxOSwgMjYsIDQ5LCAyNiwgMjIwLCAyNiwgNDksIDI2LCAxODMsIDIyMCwgNDksIDQ5LCAyMjEsIAorICAgIDM1LCA0OSwgNDksIDQ0LCA0OSwgMzUsIDE1NiwgMTU2LCAxNTYsIDE1NiwgMzUsIDI2LCAyMTgsIDM1LCAzNSwgNDksIDQ5LCAKKyAgICAyMjIsIDc4LCA3OCwgNzgsIDc4LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDI2LCA3OCwgMjYsIDI2LCA0NywgODAsIDIyMywgCisgICAgMjIzLCAyMjMsIDM3LCAzNywgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMywgMzcsIDM3LCAzNywgMzcsIDIyMywgMjI0LCAKKyAgICAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI1LCAyMjUsIDIyNSwgCisgICAgMjI1LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNSwgMjI1LCAyMjUsIAorICAgIDIyNSwgMjI1LCAyMjUsIDE3MywgMTczLCAxNzMsIDQ0LCA0NywgMTczLCAxNzMsIDE3MywgMTczLCAzNywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDAsIDQwLCA0MCwgNDAsIDQwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIyNiwgMjI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIyNywgMjI2LCAyMjYsIDI2LCAyNiwgNDAsIDI2LCA0MCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDQwLCAyMjgsIDIyOSwgMjI5LCAyMzAsIDc4LCA3OCwgNDAsIDIyOSwgMjMwLCAKKyAgICAyMjgsIDIyOSwgMjMwLCAyMjgsIDc4LCA0MCwgNzgsIDIyOSwgMjMxLCAyMzIsIDc4LCAyMjksIDIyOCwgNzgsIDc4LCA3OCwgCisgICAgMjI5LCAyMjgsIDIyOCwgMjI5LCA0MCwgMjI5LCAyMjksIDIyOCwgMjI4LCA0MCwgMjMwLCA0MCwgMjMwLCA0MCwgNDAsIDQwLCAKKyAgICA0MCwgMjI5LCAyMzMsIDIyMiwgMjI5LCAyMjIsIDIyMiwgMjI4LCAyMjgsIDIyOCwgNDAsIDQwLCA0MCwgNDAsIDc4LCAyMjgsIAorICAgIDc4LCAyMjgsIDIyOSwgMjI5LCAyMjgsIDIyOCwgMjI4LCAyMzAsIDIyOCwgMjI4LCAyMzAsIDIyOCwgMjI4LCAyMzAsIDIyOSwgCisgICAgMjMwLCAyMjgsIDIyOCwgMjI5LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOSwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMzQsIDQwLCAyMzAsIDc4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOCwgCisgICAgMjI4LCAyMjksIDIyOSwgNzgsIDIyNiwgMjM0LCAyMzQsIDIzMCwgMjMwLCAyMjgsIDIyOCwgMjMwLCAyMzAsIDIyOCwgMjI4LCAKKyAgICAyMzAsIDIzMCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjMwLCAyMzAsIDIyOSwgMjI5LCAyMzAsIDIzMCwgCisgICAgMjI5LCAyMjksIDIzMCwgMjMwLCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAKKyAgICA0MCwgNzgsIDc4LCAyMjgsIDQwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCA3OCwgNDAsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIzMCwgMjMwLCAyMzAsIDIzMCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOSwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCAyMjgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIzMCwgMjMwLCAyMzAsIAorICAgIDIzMCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjMwLCAyMzAsIDIzMCwgMjMwLCA3OCwgNzgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjI4LCAyMjgsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzUsIDIzNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNzgsIDg0LCA4MCwgODQsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTc5LCA0NiwgCi0gICAgNDYsIDQ0LCA0NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgCi0gICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAKLSAgICAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIAotICAgIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCAwLCAzOCwgMCwgMzgsIDAsIDM4LCAwLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIAotICAgIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCAxODAsIDQzLCAxODAsIDQzLCAxODAsIDQzLCAxODAsIAotICAgIDQzLCAxODAsIDQzLCAxODAsIDQzLCAxODAsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgxLCAKLSAgICAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgxLCAKLSAgICAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgxLCAKLSAgICAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMzgsIAotICAgIDM4LCAxODIsIDE4MSwgNTcsIDE4MCwgNTcsIDU3LCA3NSwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTgyLCAzOCwgCi0gICAgMTgyLCAxODEsIDc1LCA3NSwgNzUsIDQzLCA0MywgNDMsIDE4MCwgMCwgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODIsIDAsIAotICAgIDc1LCA3NSwgNzUsIDQzLCA0MywgNDMsIDE4MCwgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4MiwgMzgsIDc1LCAKLSAgICAxODMsIDE4MywgMCwgMCwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTgyLCAzOCwgMTgyLCAxODEsIDE4MywgNTcsIDAsIAotICAgIDE4NCwgMTg0LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxNzIsIDE4NywgMTg4LCAxODksIDgzLCAxODgsIDE4OCwgMTg4LCAyMiwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5MSwgCi0gICAgMTkyLCAxOTMsIDE5NCwgMjIsIDIyLCAyMiwgMTM1LCAxOTUsIDE5NSwgMTk1LCAyMiwgMTk2LCAxOTcsIDE5OCwgMTk5LCAKLSAgICAyMDAsIDIwMSwgMjAyLCAyMSwgMjAzLCAxMDgsIDIwMywgMjA0LCAyMDUsIDIyLCAxOTAsIDE5MCwgMTM1LCAyOSwgMzYsIAotICAgIDIyLCAxOTAsIDEzNSwgMTk1LCAyMDYsIDIwNiwgMTM1LCAxMzUsIDEzNSwgMjA3LCAxNjEsIDE2MiwgMTkwLCAxOTAsIDE5MCwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDc3LCAxMzUsIDIwNiwgMTM1LCAxMzUsIDE5MCwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxODUsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAyMDgsIDUwLCAwLCAwLCAzNCwgMjA4LCAyMDgsIDIwOCwgMjA4LCAKLSAgICAyMDgsIDIwOSwgMjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIwOCwgMzQsIDM0LCAzNCwgMzQsIDIwOCwgMjA4LCAyMDgsIAotICAgIDIwOCwgMjA4LCAyMDksIDIwOSwgMjEwLCAyMTEsIDIxMiwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyMTQsIAotICAgIDIxNSwgMTQ1LCAxNDUsIDIzLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDgwLCA4MCwgMTc0LCAxNzQsIDgwLCA4MCwgODAsIDgwLCAxNzQsIDE3NCwgMTc0LCA4MCwgODAsIDgxLCA4MSwgODEsIAotICAgIDgxLCA4MCwgODEsIDgxLCA4MSwgMTc0LCAxNzQsIDgwLCA4NCwgODAsIDE3NCwgMTc0LCA4NCwgODQsIDg0LCA4NCwgODAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxNiwgMjE2LCA0OCwgMjE3LCAyNywgMjE3LCAKLSAgICAyMTYsIDQ4LCAyNywgMjE3LCAzNSwgNDgsIDQ4LCA0OCwgMzUsIDM1LCA0OCwgNDgsIDQ4LCAyOCwgMjcsIDQ4LCAyMTcsIAotICAgIDI3LCA3NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAyNywgMjcsIDIxNiwgMjE3LCAyMTcsIDI3LCA0OCwgMjcsIDIxOCwgMjcsIAotICAgIDQ4LCAyNywgMTgyLCAyMTgsIDQ4LCA0OCwgMjE5LCAzNSwgNDgsIDQ4LCA0NCwgNDgsIDM1LCAxNTQsIDE1NCwgMTU0LCAKLSAgICAxNTQsIDM1LCAyNywgMjE2LCAzNSwgMzUsIDQ4LCA0OCwgMjIwLCA3NywgNzcsIDc3LCA3NywgNDgsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAyNywgNzcsIDI3LCAyNywgNDYsIDc5LCAyMjEsIDIyMSwgMjIxLCAzNywgMzcsIDIyMSwgMjIxLCAyMjEsIDIyMSwgCi0gICAgMjIxLCAyMjEsIDM3LCAzNywgMzcsIDM3LCAyMjEsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAKLSAgICAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgCi0gICAgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAxNzEsIDE3MSwgMTcxLCA0NCwgNDYsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMzcsIDAsIDAsIDAsIDAsIDAsIDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyMjQsIDIyNCwgMjcsIDI3LCAyNywgMjcsIDc3LCAyNywgMjcsIDc3LCAyNywgMjcsIDc3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjI0LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyMjUsIAotICAgIDIyNCwgMjI0LCAyNywgMjcsIDQwLCAyNywgNDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA0MCwgMjI2LCAyMjcsIAotICAgIDIyNywgMjI4LCA3NywgNzcsIDQwLCAyMjcsIDIyOCwgMjI2LCAyMjcsIDIyOCwgMjI2LCA3NywgNDAsIDc3LCAyMjcsIDIyOSwgCi0gICAgMjMwLCA3NywgMjI3LCAyMjYsIDc3LCA3NywgNzcsIDIyNywgMjI2LCAyMjYsIDIyNywgNDAsIDIyNywgMjI3LCAyMjYsIAotICAgIDIyNiwgNDAsIDIyOCwgNDAsIDIyOCwgNDAsIDQwLCA0MCwgNDAsIDIyNywgMjMxLCAyMjAsIDIyNywgMjIwLCAyMjAsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDQwLCA0MCwgNDAsIDQwLCA3NywgMjI2LCA3NywgMjI2LCAyMjcsIDIyNywgMjI2LCAyMjYsIDIyNiwgMjI4LCAKLSAgICAyMjYsIDIyNiwgMjI4LCAyMjYsIDIyNiwgMjI4LCAyMjcsIDIyOCwgMjI2LCAyMjYsIDIyNywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCAyMjcsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjMyLCA0MCwgCi0gICAgMjI4LCA3NywgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjYsIDIyNiwgMjI3LCAyMjcsIDc3LCAyMjQsIDIzMiwgMjMyLCAyMjgsIAotICAgIDIyOCwgMjI2LCAyMjYsIDIyOCwgMjI4LCAyMjYsIDIyNiwgMjI4LCAyMjgsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyOCwgMjI4LCAyMjcsIDIyNywgMjI4LCAyMjgsIDIyNywgMjI3LCAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNDAsIDc3LCA3NywgMjI2LCA0MCwgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCAyMjYsIDIyNiwgNzcsIDQwLCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjgsIDIyOCwgCi0gICAgMjI4LCAyMjgsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgMjI2LCAyMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCA3NywgNzcsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyOCwgCi0gICAgMjI4LCAyMjgsIDIyOCwgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDIyNiwgMjI2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjMzLCAyMzQsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMjcsIDc3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3OSwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNywgMzcsIDM3LCAzNywgMzcsIAogICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAotICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMjEsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAKLSAgICAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjUsIDQwLCAyNywgMjcsIAotICAgIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI1LCA0MCwgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI3LCAyNywgMjUsIAotICAgIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI1LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI3LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI3LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNSwgMjUsIDI1LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI3LCAyNSwgMjUsIAotICAgIDI3LCA0MCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNzksIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDE2MSwgMTYyLCAKLSAgICAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAyMzYsIDIzNiwgCi0gICAgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDIyNiwgNzcsIDc3LCAyMjYsIDIyNiwgMTYxLCAxNjIsIDc3LCAyMjYsIAotICAgIDIyNiwgNzcsIDAsIDIyNiwgMCwgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCA5LCAxMCwgOSwgMTAsIDksIAotICAgIDEwLCA5LCAxMCwgMTYxLCAxNjIsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMTYxLCAxNjIsIDksIDEwLCAxNjEsIDE2MiwgMTYxLCAKLSAgICAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgCi0gICAgMTYyLCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCA3NywgMjI2LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCAxNjEsIDE2MiwgMTYxLCAxNjIsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDIyNiwgNzcsIDIyNiwgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCA3NywgNzcsIDE2MSwgMTYyLCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCAyMjYsIDIyNiwgMjIwLCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgMjI2LCA3NywgMjI2LCAKLSAgICA3NywgNzcsIDIyNiwgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDc3LCAyMjYsIDIyNiwgNzcsIDc3LCAyMjYsIDIyMCwgMjEwLCAyMTAsIDc3LCA3NywgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDIzNywgNzcsIDIyNiwgNzcsIAotICAgIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCA3NywgNzcsIDIyNiwgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCAyMjYsIDc3LCA3NywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjcsIDI3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCAwLCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDAsIDQ0LCA0NiwgCi0gICAgNDQsIDQ0LCA0NCwgNDYsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDQsIDQ0LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDYsIDQ0LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAzNSwgNTAsIDQ0LCA0NCwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA0NCwgNDYsIDQ0LCA0NiwgODAsIDgwLCA4MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTEsIDEzNSwgMTM1LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMjMsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKKyAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCisgICAgMjM4LCAyMzgsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAKKyAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgCisgICAgMTYzLCAxNjQsIDE2MywgMTY0LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIyOCwgNzgsIDc4LCAKKyAgICAyMjgsIDIyOCwgMTYzLCAxNjQsIDc4LCAyMjgsIDIyOCwgNzgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgOSwgMTAsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCAxMzUsIDEzNSwgMjksIDM2LCAyOSwgMzYsIDEzNSwgMTM1LCAxMzUsIDI5LCAzNiwgMTM1LCAyOSwgCi0gICAgMzYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDgzLCAxMzUsIDEzNSwgODMsIDEzNSwgCi0gICAgMjksIDM2LCAxMzUsIDEzNSwgMjksIDM2LCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDUxLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDAsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM5LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDAsIDAsIDAsIDAsIDI0MCwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjM4LCAyNDIsIDE2OCwgMjQzLCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIAotICAgIDIzOCwgMjM4LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ4LCAKLSAgICAyMzgsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0OSwgMjUwLCAyNTEsIDI1MiwgCi0gICAgMjUzLCAyNTMsIDI0NiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDIzOSwgMjM4LCAyNTQsIDI1NCwgMjU0LCAyNDIsIAotICAgIDE2OCwgMjQxLCAyMzgsIDI3LCAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAKLSAgICAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMTY4LCAyNTUsIDE2OCwgCi0gICAgMjU1LCAxNjgsIDI1NSwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMjU1LCAyNTUsIDE2OCwgMjU1LCAyNTUsIAotICAgIDE2OCwgMjU1LCAyNTUsIDE2OCwgMjU1LCAyNTUsIDE2OCwgMjU1LCAyNTUsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMjU1LCAxNjgsIDE2OCwgMCwgMCwgMjU2LCAyNTYsIDI1NywgMjU3LCAyNDIsIDI1OCwgMjU5LCAKLSAgICAyNDYsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAyNTUsIDE2OCwgCi0gICAgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIAotICAgIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgCi0gICAgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAyNTUsIDE2OCwgMTY4LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI0MSwgMjQyLCAyNDIsIDI1OCwgMjU5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAwLCAyNjAsIDI2MCwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDIzOSwgMjM5LCAwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyMzksIDI2NCwgMjY0LCAKLSAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjYwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCi0gICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDAsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDIzOSwgMjM5LCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDIzOSwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDI0MiwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDAsIDAsIDAsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDgyLCA4MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTIsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ3LCA4MCwgODEsIDgxLCA4MSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDEzNSwgNTEsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDgwLCA4MCwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAKLSAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTMsIDQ0LCAKLSAgICA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDYsIDQ2LCA0NCwgNDYsIDQ0LCAKLSAgICA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCAKLSAgICA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCAKLSAgICA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCAKLSAgICA0NiwgNDQsIDQ2LCA0NCwgNDYsIDUwLCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDUxLCAyNjUsIDI2NSwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDAsIDQ0LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCAKLSAgICA0NiwgNDQsIDQ2LCA0NCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMTMyLCA0NywgNDcsIDQ3LCAxMzksIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzYsIAotICAgIDEzMiwgMTMyLCAxMzYsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICA3OSwgNzksIDE0NSwgMjE5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzYsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgyLCA4MiwgODIsIAotICAgIDQ3LCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgODQsIDg0LCA4NCwgODIsIAotICAgIDgyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzYsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQyLCAxMzYsIDEzNiwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxNzMsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIAotICAgIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAwLCA1MiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTMyLCAxMzIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDEzMiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAxMzIsIDEzNiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAKLSAgICAwLCA4MiwgODIsIDgyLCA4MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDUyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA3OSwgNzksIDc5LCA0NywgMTM2LCAwLCAwLCAwLCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MCwgNDcsIDgwLCA4MCwgODQsIDQ3LCAKLSAgICA0NywgODAsIDgwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDgwLCA4MCwgNDcsIDgwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA1MiwgODIsIDgyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDE2MywgMTY0LCA5LCAxMCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIAorICAgIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCA3OCwgMjI4LCAyMjgsIDc4LCA3OCwgMTYzLCAxNjQsIDE2MywgMTY0LCAyMjgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyMjgsIDc4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyMiwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCA3OCwgNzgsIDIyOCwgNzgsIDIyOCwgNzgsIDc4LCAyMjgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCAKKyAgICAyMjIsIDIxMiwgMjEyLCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMzksIDc4LCAyMjgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCA3OCwgMjI4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzYsIDEzMiwgMTM2LCAxMzYsIDEzMiwgCi0gICAgMTM2LCAxMzYsIDgyLCAxMzYsIDEzOSwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDE2OCwgMTY4LCAyNjgsIDE2OCwgMjY4LCAxNjgsIDE2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAxNjgsIDI2OCwgMTY4LCAyNjgsIDE2OCwgCi0gICAgMTY4LCAyNjgsIDI2OCwgMTY4LCAxNjgsIDE2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAyNjksIDI3MCwgMjY5LCAKLSAgICAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyMDksIDI2OSwgMjY5LCAyNjksIDI2OSwgCi0gICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAotICAgIDAsIDI2OSwgMCwgMjY5LCAyNjksIDAsIDI2OSwgMjY5LCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAotICAgIDI2OSwgMjY5LCAyNzEsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTkzLCAyNzMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMCwgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMjc0LCAyNywgMCwgMCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAotICAgIDI3NSwgMjc2LCAyNzcsIDI3NSwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMjc4LCAyNzgsIDI3OSwgMjc5LCAyNzYsIDI3NywgMjc2LCAyNzcsIDI3NiwgCi0gICAgMjc3LCAyNzYsIDI3NywgMjc2LCAyNzcsIDI3NiwgMjc3LCAyNzYsIDI3NywgMjc2LCAyNzcsIDI0MSwgMjQxLCAyNzYsIAotICAgIDI3NywgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzksIDI3OSwgMjc5LCAyODAsIDI3NSwgMjgwLCAwLCAyNzUsIDI4MCwgMjc1LCAKLSAgICAyNzUsIDI3OCwgMjgxLCAyODIsIDI4MSwgMjgyLCAyODEsIDI4MiwgMjgzLCAyNzUsIDI3NSwgMjg0LCAyODUsIDI4NiwgCi0gICAgMjg2LCAyODcsIDAsIDI3NSwgMjg4LCAyODMsIDI3NSwgMCwgMCwgMCwgMCwgMTI4LCAxMjgsIDEyOCwgMTE1LCAxMjgsIDAsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDAsIDAsIDE4NiwgMCwgMjg5LCAyODksIDI5MCwgCi0gICAgMjkxLCAyOTAsIDI4OSwgMjg5LCAyOTIsIDI5MywgMjg5LCAyOTQsIDI5NSwgMjk2LCAyOTUsIDI5NSwgMjk3LCAyOTcsIAotICAgIDI5NywgMjk3LCAyOTcsIDI5NywgMjk3LCAyOTcsIDI5NywgMjk3LCAyOTUsIDI4OSwgMjk4LCAyOTksIDI5OCwgMjg5LCAKLSAgICAyODksIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgCi0gICAgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAyOTIsIAotICAgIDI4OSwgMjkzLCAzMDEsIDMwMiwgMzAxLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAKLSAgICAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgCi0gICAgMzAzLCAzMDMsIDMwMywgMjkyLCAyOTksIDI5MywgMjk5LCAyOTIsIDI5MywgMzA0LCAzMDUsIDMwNiwgMzA0LCAzMDQsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA4LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDgsIDMwOCwgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAwLCAwLCAwLCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAwLCAwLCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAwLCAwLCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAwLCAwLCAKLSAgICAzMDcsIDMwNywgMzA3LCAwLCAwLCAwLCAyOTEsIDI5MSwgMjk5LCAzMDEsIDMwOSwgMjkxLCAyOTEsIDAsIDMxMCwgMzExLCAKLSAgICAzMTEsIDMxMSwgMzExLCAzMTAsIDMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyLCAzMTIsIDMxMiwgMjcsIAotICAgIDI1LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNTEsIDUxLCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNDQsIDQ3LCA0NCwgNDcsIDgxLCA4MSwgODEsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxNTMsIDEzOCwgMTM4LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDgyLCAxMzUsIDc5LCAwLCAwLCAwLCAwLCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAwLCAwLCAwLCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMTUxLCAxNTEsIDE1MSwgMTUxLCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDE1MSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgODQsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTcxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE3MSwgMCwgMCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMjgsIDM2LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTM4LCA4NCwgMTM4LCAyOCwgMzYsIDEzOCwgCisgICAgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDg0LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA4MiwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgCi0gICAgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MiwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MSwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAwLCAwLCAwLCAwLCAyNDIsIDI0MywgMjQzLCAyNDMsIAorICAgIDI0MCwgMjQ0LCAxNzAsIDI0NSwgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAKKyAgICAyNDAsIDI0MCwgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MCwgCisgICAgMjQwLCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNTEsIDI1MiwgMjUzLCAyNTQsIAorICAgIDI1NSwgMjU1LCAyNDgsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDEsIDI0MCwgMjU2LCAyNTYsIDI1NiwgMjQ0LCAKKyAgICAxNzAsIDI0MywgMjQwLCAyNiwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgCisgICAgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDE3MCwgMjU3LCAxNzAsIAorICAgIDI1NywgMTcwLCAyNTcsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI1NywgMjU3LCAxNzAsIDI1NywgMjU3LCAKKyAgICAxNzAsIDI1NywgMjU3LCAxNzAsIDI1NywgMjU3LCAxNzAsIDI1NywgMjU3LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDI1NywgMTcwLCAxNzAsIDAsIDAsIDI1OCwgMjU4LCAyNTksIDI1OSwgMjQ0LCAyNjAsIDI2MSwgCisgICAgMjQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjU3LCAxNzAsIAorICAgIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAKKyAgICAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIAorICAgIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMjU3LCAxNzAsIDE3MCwgMjU3LCAyNTcsIDI1NywgMjU3LCAyNDMsIDI0NCwgMjQ0LCAyNjAsIDI2MSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMCwgMjYyLCAyNjIsIDI2MywgMjYzLCAKKyAgICAyNjMsIDI2MywgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNDEsIDI0MSwgMCwgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgCisgICAgMjYzLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjQxLCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI2MiwgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAwLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNDEsIDI0MSwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNDEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI0NCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDAsIDAsIDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgNTMsIDUzLCA1MywgCisgICAgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ4LCA4MSwgODIsIDgyLCA4MiwgMTM4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgMTM4LCA1MiwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1NCwgNTQsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIAorICAgIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUyLCAyNjcsIDI2NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDAsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCA1MSwgNDcsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDgwLCA4MCwgODUsIDIyMSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA4MywgODMsIDgzLCA0OCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDg2LCAKKyAgICA4NiwgODYsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgCisgICAgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgCisgICAgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc0LCA4MywgODMsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODAsIDgwLCA4MCwgCisgICAgNDgsIDEzOSwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIAorICAgIDQ4LCA4MSwgODEsIDg2LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA4MSwgNDgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzksIDEzOSwgODMsIDgzLCA0OCwgNTMsIDUzLCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCA4MywgMTM5LCAKKyAgICAxNDIsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAxNzAsIDE3MCwgMjcwLCAxNzAsIDI3MCwgMTcwLCAxNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMTcwLCAyNzAsIDE3MCwgMjcwLCAxNzAsIDE3MCwgMjcwLCAyNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAwLCAwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI3MSwgMjcyLCAyNzEsIDI3MywgMjczLCAyNzMsIDI3MywgCisgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDIxMSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIAorICAgIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAwLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMCwgMjcxLCAwLCAyNzEsIDI3MSwgCisgICAgMCwgMjcxLCAyNzEsIDAsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MywgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxOTUsIDI3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAyNzYsIDI2LCAwLCAwLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzgsIDI3OSwgCisgICAgMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjc3LCAyODAsIDI4MCwgMjgxLCAyODEsIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjc4LCAyNzksIDI3OCwgMjc5LCAKKyAgICAyNzgsIDI3OSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjQzLCAyNDMsIDI3OCwgMjc5LCAyNzcsIDI3NywgCisgICAgMjc3LCAyNzcsIDI4MSwgMjgxLCAyODEsIDI4MiwgMjc3LCAyODIsIDAsIDI3NywgMjgyLCAyNzcsIDI3NywgMjgwLCAyODMsIAorICAgIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyODUsIDI3NywgMjc3LCAyODYsIDI4NywgMjg4LCAyODgsIDI4OSwgMCwgMjc3LCAKKyAgICAyOTAsIDI4NSwgMjc3LCAwLCAwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMTcsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMTg3LCAwLCAyOTEsIDI5MSwgMjkyLCAyOTMsIDI5MiwgMjkxLCAKKyAgICAyOTEsIDI5NCwgMjk1LCAyOTEsIDI5NiwgMjk3LCAyOTgsIDI5NywgMjk3LCAyOTksIDI5OSwgMjk5LCAyOTksIDI5OSwgCisgICAgMjk5LCAyOTksIDI5OSwgMjk5LCAyOTksIDI5NywgMjkxLCAzMDAsIDMwMSwgMzAwLCAyOTEsIDI5MSwgMzAyLCAzMDIsIAorICAgIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAKKyAgICAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDI5NCwgMjkxLCAyOTUsIDMwMywgCisgICAgMzA0LCAzMDMsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIAorICAgIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAKKyAgICAyOTQsIDMwMSwgMjk1LCAzMDEsIDI5NCwgMjk1LCAzMDYsIDMwNywgMzA4LCAzMDYsIDMwNiwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMTAsIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMxMCwgMzEwLCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDAsIDAsIDAsIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDAsIDAsIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDAsIDAsIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDAsIDAsIDMwOSwgMzA5LCAzMDksIAorICAgIDAsIDAsIDAsIDI5MywgMjkzLCAzMDEsIDMwMywgMzExLCAyOTMsIDI5MywgMCwgMzEyLCAzMTMsIDMxMywgMzEzLCAzMTMsIAorICAgIDMxMiwgMzEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTQsIDMxNCwgMzE0LCAyNiwgMzAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA4MywgMTM4LCA4MywgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKKyAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCisgICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIAorICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKKyAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDAsIDAsIDEwNSwgMCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDEwNSwgMTA1LCAwLCAwLCAwLCAxMDUsIDAsIDAsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAxMDIsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAotICAgIDMxNCwgMzE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDAsIDEzNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDAsIDAsIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMzIsIDEzMiwgMTMyLCAwLCAxMzIsIDEzMiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTMyLCA4NCwgMTMyLCA4MCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAxMDUsIDEwNSwgMTA1LCAwLCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAwLCAwLCAwLCA4MCwgMTc0LCAKLSAgICA4NCwgMCwgMCwgMCwgMCwgMTM5LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDMxNCwgMzE0LCAxMDIsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAwLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAwLCAwLCAwLCAwLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKLSAgICAzMTQsIDMxNCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCi0gICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIAotICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDAsIDEzNiwgMTMyLCAKLSAgICAxMzYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIAotICAgIDEzOSwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDAsIDAsIDAsIDAsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgCi0gICAgMTUxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMyLCAxMzYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM3LCA0NywgCi0gICAgMTM3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzOSwgMTM4LCA4MiwgODIsIAotICAgIDE3MiwgODIsIDgyLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCA4MiwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMCwgMCwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgCi0gICAgMzE2LCAzMTYsIDMxNywgMzE3LCAxNzQsIDE3NCwgMTc0LCA3OSwgNzksIDc5LCAzMTgsIDMxNywgMzE3LCAzMTcsIDMxNywgCi0gICAgMzE3LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA3OSwgNzksIDgwLCA4MCwgODAsIDgwLCA4MCwgODQsIDg0LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA4MCwgODAsIDgwLCA4MCwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgODAsIDgwLCA4MCwgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDAsIDAsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDAsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAwLCAwLCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMTA3LCAwLCAwLCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA0LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAKKyAgICAzMTYsIDMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAwLCAwLCAwLCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1LCA4NiwgMTM1LCA4MSwgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCA4MSwgMTc1LCAKKyAgICA4NiwgMCwgMCwgMCwgMCwgMTQyLCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDMxNiwgMzE2LCAxMDQsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAKKyAgICAzMTYsIDMxNiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgCisgICAgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIAorICAgIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDAsIDEzOSwgMTM1LCAKKyAgICAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzE5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMjIwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzE5LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMjIwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE0MiwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgCisgICAgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDE0MiwgMTQxLCA4MywgODMsIAorICAgIDE4OCwgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMzE5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDMxOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDMxOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMCwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDM1LCAwLCAwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCi0gICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAotICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKLSAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDMyMSwgMCwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAKLSAgICAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgCi0gICAgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjMsIDI2MywgMjYzLCAyNjMsIAotICAgIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAKLSAgICAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgCi0gICAgMjM1LCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0OSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzksIDEzNSwgMTUwLCAxNTAsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMTQyLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDI2MiwgMjYyLCAyNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMCwgMCwgMCwgMCwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjYyLCAyNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTc0LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNzQsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDAsIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDc5LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3OSwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIAorICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgCisgICAgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxOSwgMzE5LCAKKyAgICAxNzUsIDE3NSwgMTc1LCA4MCwgODAsIDgwLCAzMjAsIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MCwgODAsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODYsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxOCwgMzE4LCAKKyAgICAzMTgsIDMxOCwgMzE4LCAzMTgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODEsIAorICAgIDgxLCA4MSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDAsIDAsIDQ5LCA0OSwgMCwgMCwgNDksIAorICAgIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAwLCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIAorICAgIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjEsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjIsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjEsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAyMjIsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjEsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjIsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCAzMjEsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjIsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjEsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjIsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDQ5LCAzNSwgMCwgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDAsIDEzMCwgMCwgMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzMCwgMCwgMCwgMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMCwgCisgICAgMTMwLCAxMzAsIDAsIDEzMCwgMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMTMwLCAKKyAgICAwLCAxMzAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4LCA3OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDAsIDAsIDAsIDAsIDAsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDMyMywgMCwgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAyMTgsIDIxOCwgMCwgMCwgMCwgMCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDIzNywgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDI2NCwgMjY0LCAyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjY0LCAyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDI3LCAyNywgMjcsIDAsIDI3LCAwLCAyNywgMCwgMjcsIAotICAgIDAsIDI3LCAyNywgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMCwgCi0gICAgMCwgMjcsIDI3LCAyNywgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIAotICAgIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAKKyAgICAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg3LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgCi0gICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDAsIAorICAgIDAsIAogfTsKIAogLyogZGVjb21wb3NpdGlvbiBkYXRhICovCkBAIC0zMDcyLDMyMSArMzE0MCwzMjIgQEAKICAgICA1MCwgNDksIDI2MDg1LCA3NzAsIDUwLCA1MCwgMjYwODUsIDc3MCwgNTAsIDUxLCAyNjA4NSwgNzcwLCA1MCwgNTIsIAogICAgIDI2MDg1LCA3NzAsIDUwLCA1MywgMjYwODUsIDc3MCwgNTAsIDU0LCAyNjA4NSwgNzcwLCA1MCwgNTUsIDI2MDg1LCA3NzAsIAogICAgIDUwLCA1NiwgMjYwODUsIDc3MCwgNTAsIDU3LCAyNjA4NSwgNzcwLCA1MSwgNDgsIDI2MDg1LCA3NzAsIDUxLCA0OSwgCi0gICAgMjYwODUsIDc3OCwgMTAzLCA5NywgMTA4LCAyNTksIDQyODYzLCAyNTYsIDM1OTEyLCAyNTYsIDI2MzU2LCAyNTYsIDM2NTU0LCAKLSAgICAyNTYsIDM2MDQwLCAyNTYsIDI4MzY5LCAyNTYsIDIwMDE4LCAyNTYsIDIxNDc3LCAyNTYsIDQwODYwLCAyNTYsIDQwODYwLCAKLSAgICAyNTYsIDIyODY1LCAyNTYsIDM3MzI5LCAyNTYsIDIxODk1LCAyNTYsIDIyODU2LCAyNTYsIDI1MDc4LCAyNTYsIDMwMzEzLCAKLSAgICAyNTYsIDMyNjQ1LCAyNTYsIDM0MzY3LCAyNTYsIDM0NzQ2LCAyNTYsIDM1MDY0LCAyNTYsIDM3MDA3LCAyNTYsIDI3MTM4LCAKLSAgICAyNTYsIDI3OTMxLCAyNTYsIDI4ODg5LCAyNTYsIDI5NjYyLCAyNTYsIDMzODUzLCAyNTYsIDM3MjI2LCAyNTYsIDM5NDA5LCAKLSAgICAyNTYsIDIwMDk4LCAyNTYsIDIxMzY1LCAyNTYsIDI3Mzk2LCAyNTYsIDI5MjExLCAyNTYsIDM0MzQ5LCAyNTYsIDQwNDc4LCAKLSAgICAyNTYsIDIzODg4LCAyNTYsIDI4NjUxLCAyNTYsIDM0MjUzLCAyNTYsIDM1MTcyLCAyNTYsIDI1Mjg5LCAyNTYsIDMzMjQwLCAKLSAgICAyNTYsIDM0ODQ3LCAyNTYsIDI0MjY2LCAyNTYsIDI2MzkxLCAyNTYsIDI4MDEwLCAyNTYsIDI5NDM2LCAyNTYsIDM3MDcwLCAKLSAgICAyNTYsIDIwMzU4LCAyNTYsIDIwOTE5LCAyNTYsIDIxMjE0LCAyNTYsIDI1Nzk2LCAyNTYsIDI3MzQ3LCAyNTYsIDI5MjAwLCAKLSAgICAyNTYsIDMwNDM5LCAyNTYsIDMyNzY5LCAyNTYsIDM0MzEwLCAyNTYsIDM0Mzk2LCAyNTYsIDM2MzM1LCAyNTYsIDM4NzA2LCAKLSAgICAyNTYsIDM5NzkxLCAyNTYsIDQwNDQyLCAyNTYsIDMwODYwLCAyNTYsIDMxMTAzLCAyNTYsIDMyMTYwLCAyNTYsIDMzNzM3LCAKLSAgICAyNTYsIDM3NjM2LCAyNTYsIDQwNTc1LCAyNTYsIDM1NTQyLCAyNTYsIDIyNzUxLCAyNTYsIDI0MzI0LCAyNTYsIDMxODQwLCAKLSAgICAyNTYsIDMyODk0LCAyNTYsIDI5MjgyLCAyNTYsIDMwOTIyLCAyNTYsIDM2MDM0LCAyNTYsIDM4NjQ3LCAyNTYsIDIyNzQ0LCAKLSAgICAyNTYsIDIzNjUwLCAyNTYsIDI3MTU1LCAyNTYsIDI4MTIyLCAyNTYsIDI4NDMxLCAyNTYsIDMyMDQ3LCAyNTYsIDMyMzExLCAKLSAgICAyNTYsIDM4NDc1LCAyNTYsIDIxMjAyLCAyNTYsIDMyOTA3LCAyNTYsIDIwOTU2LCAyNTYsIDIwOTQwLCAyNTYsIDMxMjYwLCAKLSAgICAyNTYsIDMyMTkwLCAyNTYsIDMzNzc3LCAyNTYsIDM4NTE3LCAyNTYsIDM1NzEyLCAyNTYsIDI1Mjk1LCAyNTYsIDI3MTM4LCAKLSAgICAyNTYsIDM1NTgyLCAyNTYsIDIwMDI1LCAyNTYsIDIzNTI3LCAyNTYsIDI0NTk0LCAyNTYsIDI5NTc1LCAyNTYsIDMwMDY0LCAKLSAgICAyNTYsIDIxMjcxLCAyNTYsIDMwOTcxLCAyNTYsIDIwNDE1LCAyNTYsIDI0NDg5LCAyNTYsIDE5OTgxLCAyNTYsIDI3ODUyLCAKLSAgICAyNTYsIDI1OTc2LCAyNTYsIDMyMDM0LCAyNTYsIDIxNDQzLCAyNTYsIDIyNjIyLCAyNTYsIDMwNDY1LCAyNTYsIDMzODY1LCAKLSAgICAyNTYsIDM1NDk4LCAyNTYsIDI3NTc4LCAyNTYsIDM2Nzg0LCAyNTYsIDI3Nzg0LCAyNTYsIDI1MzQyLCAyNTYsIDMzNTA5LCAKLSAgICAyNTYsIDI1NTA0LCAyNTYsIDMwMDUzLCAyNTYsIDIwMTQyLCAyNTYsIDIwODQxLCAyNTYsIDIwOTM3LCAyNTYsIDI2NzUzLCAKLSAgICAyNTYsIDMxOTc1LCAyNTYsIDMzMzkxLCAyNTYsIDM1NTM4LCAyNTYsIDM3MzI3LCAyNTYsIDIxMjM3LCAyNTYsIDIxNTcwLCAKLSAgICAyNTYsIDIyODk5LCAyNTYsIDI0MzAwLCAyNTYsIDI2MDUzLCAyNTYsIDI4NjcwLCAyNTYsIDMxMDE4LCAyNTYsIDM4MzE3LCAKLSAgICAyNTYsIDM5NTMwLCAyNTYsIDQwNTk5LCAyNTYsIDQwNjU0LCAyNTYsIDIxMTQ3LCAyNTYsIDI2MzEwLCAyNTYsIDI3NTExLCAKLSAgICAyNTYsIDM2NzA2LCAyNTYsIDI0MTgwLCAyNTYsIDI0OTc2LCAyNTYsIDI1MDg4LCAyNTYsIDI1NzU0LCAyNTYsIDI4NDUxLCAKLSAgICAyNTYsIDI5MDAxLCAyNTYsIDI5ODMzLCAyNTYsIDMxMTc4LCAyNTYsIDMyMjQ0LCAyNTYsIDMyODc5LCAyNTYsIDM2NjQ2LCAKLSAgICAyNTYsIDM0MDMwLCAyNTYsIDM2ODk5LCAyNTYsIDM3NzA2LCAyNTYsIDIxMDE1LCAyNTYsIDIxMTU1LCAyNTYsIDIxNjkzLCAKLSAgICAyNTYsIDI4ODcyLCAyNTYsIDM1MDEwLCAyNTYsIDM1NDk4LCAyNTYsIDI0MjY1LCAyNTYsIDI0NTY1LCAyNTYsIDI1NDY3LCAKLSAgICAyNTYsIDI3NTY2LCAyNTYsIDMxODA2LCAyNTYsIDI5NTU3LCAyNTYsIDIwMTk2LCAyNTYsIDIyMjY1LCAyNTYsIDIzNTI3LCAKLSAgICAyNTYsIDIzOTk0LCAyNTYsIDI0NjA0LCAyNTYsIDI5NjE4LCAyNTYsIDI5ODAxLCAyNTYsIDMyNjY2LCAyNTYsIDMyODM4LCAKLSAgICAyNTYsIDM3NDI4LCAyNTYsIDM4NjQ2LCAyNTYsIDM4NzI4LCAyNTYsIDM4OTM2LCAyNTYsIDIwMzYzLCAyNTYsIDMxMTUwLCAKLSAgICAyNTYsIDM3MzAwLCAyNTYsIDM4NTg0LCAyNTYsIDI0ODAxLCAyNTYsIDIwMTAyLCAyNTYsIDIwNjk4LCAyNTYsIDIzNTM0LCAKLSAgICAyNTYsIDIzNjE1LCAyNTYsIDI2MDA5LCAyNTYsIDI3MTM4LCAyNTYsIDI5MTM0LCAyNTYsIDMwMjc0LCAyNTYsIDM0MDQ0LCAKLSAgICAyNTYsIDM2OTg4LCAyNTYsIDQwODQ1LCAyNTYsIDI2MjQ4LCAyNTYsIDM4NDQ2LCAyNTYsIDIxMTI5LCAyNTYsIDI2NDkxLCAKLSAgICAyNTYsIDI2NjExLCAyNTYsIDI3OTY5LCAyNTYsIDI4MzE2LCAyNTYsIDI5NzA1LCAyNTYsIDMwMDQxLCAyNTYsIDMwODI3LCAKLSAgICAyNTYsIDMyMDE2LCAyNTYsIDM5MDA2LCAyNTYsIDIwODQ1LCAyNTYsIDI1MTM0LCAyNTYsIDM4NTIwLCAyNTYsIDIwNTIzLCAKLSAgICAyNTYsIDIzODMzLCAyNTYsIDI4MTM4LCAyNTYsIDM2NjUwLCAyNTYsIDI0NDU5LCAyNTYsIDI0OTAwLCAyNTYsIDI2NjQ3LCAKLSAgICAyNTYsIDI5NTc1LCAyNTYsIDM4NTM0LCAyNTYsIDIxMDMzLCAyNTYsIDIxNTE5LCAyNTYsIDIzNjUzLCAyNTYsIDI2MTMxLCAKLSAgICAyNTYsIDI2NDQ2LCAyNTYsIDI2NzkyLCAyNTYsIDI3ODc3LCAyNTYsIDI5NzAyLCAyNTYsIDMwMTc4LCAyNTYsIDMyNjMzLCAKLSAgICAyNTYsIDM1MDIzLCAyNTYsIDM1MDQxLCAyNTYsIDM3MzI0LCAyNTYsIDM4NjI2LCAyNTYsIDIxMzExLCAyNTYsIDI4MzQ2LCAKLSAgICAyNTYsIDIxNTMzLCAyNTYsIDI5MTM2LCAyNTYsIDI5ODQ4LCAyNTYsIDM0Mjk4LCAyNTYsIDM4NTYzLCAyNTYsIDQwMDIzLCAKLSAgICAyNTYsIDQwNjA3LCAyNTYsIDI2NTE5LCAyNTYsIDI4MTA3LCAyNTYsIDMzMjU2LCAyNTYsIDMxNDM1LCAyNTYsIDMxNTIwLCAKLSAgICAyNTYsIDMxODkwLCAyNTYsIDI5Mzc2LCAyNTYsIDI4ODI1LCAyNTYsIDM1NjcyLCAyNTYsIDIwMTYwLCAyNTYsIDMzNTkwLCAKLSAgICAyNTYsIDIxMDUwLCAyNTYsIDIwOTk5LCAyNTYsIDI0MjMwLCAyNTYsIDI1Mjk5LCAyNTYsIDMxOTU4LCAyNTYsIDIzNDI5LCAKLSAgICAyNTYsIDI3OTM0LCAyNTYsIDI2MjkyLCAyNTYsIDM2NjY3LCAyNTYsIDM0ODkyLCAyNTYsIDM4NDc3LCAyNTYsIDM1MjExLCAKLSAgICAyNTYsIDI0Mjc1LCAyNTYsIDIwODAwLCAyNTYsIDIxOTUyLCAyNTYsIDIyNjE4LCAyNTYsIDI2MjI4LCAyNTYsIDIwOTU4LCAKLSAgICAyNTYsIDI5NDgyLCAyNTYsIDMwNDEwLCAyNTYsIDMxMDM2LCAyNTYsIDMxMDcwLCAyNTYsIDMxMDc3LCAyNTYsIDMxMTE5LCAKLSAgICAyNTYsIDM4NzQyLCAyNTYsIDMxOTM0LCAyNTYsIDMyNzAxLCAyNTYsIDM0MzIyLCAyNTYsIDM1NTc2LCAyNTYsIDM2OTIwLCAKLSAgICAyNTYsIDM3MTE3LCAyNTYsIDM5MTUxLCAyNTYsIDM5MTY0LCAyNTYsIDM5MjA4LCAyNTYsIDQwMzcyLCAyNTYsIDIwMzk4LCAKLSAgICAyNTYsIDIwNzExLCAyNTYsIDIwODEzLCAyNTYsIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIDIxMzI5LCAyNTYsIDIxOTE3LCAKLSAgICAyNTYsIDIyMDIyLCAyNTYsIDIyMTIwLCAyNTYsIDIyNTkyLCAyNTYsIDIyNjk2LCAyNTYsIDIzNjUyLCAyNTYsIDIzNjYyLCAKLSAgICAyNTYsIDI0NzI0LCAyNTYsIDI0OTM2LCAyNTYsIDI0OTc0LCAyNTYsIDI1MDc0LCAyNTYsIDI1OTM1LCAyNTYsIDI2MDgyLCAKLSAgICAyNTYsIDI2MjU3LCAyNTYsIDI2NzU3LCAyNTYsIDI4MDIzLCAyNTYsIDI4MTg2LCAyNTYsIDI4NDUwLCAyNTYsIDI5MDM4LCAKLSAgICAyNTYsIDI5MjI3LCAyNTYsIDI5NzMwLCAyNTYsIDMwODY1LCAyNTYsIDMxMDM4LCAyNTYsIDMxMDQ5LCAyNTYsIDMxMDQ4LCAKLSAgICAyNTYsIDMxMDU2LCAyNTYsIDMxMDYyLCAyNTYsIDMxMDY5LCAyNTYsIDMxMTE3LCAyNTYsIDMxMTE4LCAyNTYsIDMxMjk2LCAKLSAgICAyNTYsIDMxMzYxLCAyNTYsIDMxNjgwLCAyNTYsIDMyMjQ0LCAyNTYsIDMyMjY1LCAyNTYsIDMyMzIxLCAyNTYsIDMyNjI2LCAKLSAgICAyNTYsIDMyNzczLCAyNTYsIDMzMjYxLCAyNTYsIDMzNDAxLCAyNTYsIDMzNDAxLCAyNTYsIDMzODc5LCAyNTYsIDM1MDg4LCAKLSAgICAyNTYsIDM1MjIyLCAyNTYsIDM1NTg1LCAyNTYsIDM1NjQxLCAyNTYsIDM2MDUxLCAyNTYsIDM2MTA0LCAyNTYsIDM2NzkwLCAKLSAgICAyNTYsIDM2OTIwLCAyNTYsIDM4NjI3LCAyNTYsIDM4OTExLCAyNTYsIDM4OTcxLCAyNTYsIDI0NjkzLCAyNTYsIDE0ODIwNiwgCi0gICAgMjU2LCAzMzMwNCwgMjU2LCAyMDAwNiwgMjU2LCAyMDkxNywgMjU2LCAyMDg0MCwgMjU2LCAyMDM1MiwgMjU2LCAyMDgwNSwgCi0gICAgMjU2LCAyMDg2NCwgMjU2LCAyMTE5MSwgMjU2LCAyMTI0MiwgMjU2LCAyMTkxNywgMjU2LCAyMTg0NSwgMjU2LCAyMTkxMywgCi0gICAgMjU2LCAyMTk4NiwgMjU2LCAyMjYxOCwgMjU2LCAyMjcwNywgMjU2LCAyMjg1MiwgMjU2LCAyMjg2OCwgMjU2LCAyMzEzOCwgCi0gICAgMjU2LCAyMzMzNiwgMjU2LCAyNDI3NCwgMjU2LCAyNDI4MSwgMjU2LCAyNDQyNSwgMjU2LCAyNDQ5MywgMjU2LCAyNDc5MiwgCi0gICAgMjU2LCAyNDkxMCwgMjU2LCAyNDg0MCwgMjU2LCAyNDk3NCwgMjU2LCAyNDkyOCwgMjU2LCAyNTA3NCwgMjU2LCAyNTE0MCwgCi0gICAgMjU2LCAyNTU0MCwgMjU2LCAyNTYyOCwgMjU2LCAyNTY4MiwgMjU2LCAyNTk0MiwgMjU2LCAyNjIyOCwgMjU2LCAyNjM5MSwgCi0gICAgMjU2LCAyNjM5NSwgMjU2LCAyNjQ1NCwgMjU2LCAyNzUxMywgMjU2LCAyNzU3OCwgMjU2LCAyNzk2OSwgMjU2LCAyODM3OSwgCi0gICAgMjU2LCAyODM2MywgMjU2LCAyODQ1MCwgMjU2LCAyODcwMiwgMjU2LCAyOTAzOCwgMjU2LCAzMDYzMSwgMjU2LCAyOTIzNywgCi0gICAgMjU2LCAyOTM1OSwgMjU2LCAyOTQ4MiwgMjU2LCAyOTgwOSwgMjU2LCAyOTk1OCwgMjU2LCAzMDAxMSwgMjU2LCAzMDIzNywgCi0gICAgMjU2LCAzMDIzOSwgMjU2LCAzMDQxMCwgMjU2LCAzMDQyNywgMjU2LCAzMDQ1MiwgMjU2LCAzMDUzOCwgMjU2LCAzMDUyOCwgCi0gICAgMjU2LCAzMDkyNCwgMjU2LCAzMTQwOSwgMjU2LCAzMTY4MCwgMjU2LCAzMTg2NywgMjU2LCAzMjA5MSwgMjU2LCAzMjI0NCwgCi0gICAgMjU2LCAzMjU3NCwgMjU2LCAzMjc3MywgMjU2LCAzMzYxOCwgMjU2LCAzMzc3NSwgMjU2LCAzNDY4MSwgMjU2LCAzNTEzNywgCi0gICAgMjU2LCAzNTIwNiwgMjU2LCAzNTIyMiwgMjU2LCAzNTUxOSwgMjU2LCAzNTU3NiwgMjU2LCAzNTUzMSwgMjU2LCAzNTU4NSwgCi0gICAgMjU2LCAzNTU4MiwgMjU2LCAzNTU2NSwgMjU2LCAzNTY0MSwgMjU2LCAzNTcyMiwgMjU2LCAzNjEwNCwgMjU2LCAzNjY2NCwgCi0gICAgMjU2LCAzNjk3OCwgMjU2LCAzNzI3MywgMjU2LCAzNzQ5NCwgMjU2LCAzODUyNCwgMjU2LCAzODYyNywgMjU2LCAzODc0MiwgCi0gICAgMjU2LCAzODg3NSwgMjU2LCAzODkxMSwgMjU2LCAzODkyMywgMjU2LCAzODk3MSwgMjU2LCAzOTY5OCwgMjU2LCA0MDg2MCwgCi0gICAgMjU2LCAxNDEzODYsIDI1NiwgMTQxMzgwLCAyNTYsIDE0NDM0MSwgMjU2LCAxNTI2MSwgMjU2LCAxNjQwOCwgMjU2LCAKLSAgICAxNjQ0MSwgMjU2LCAxNTIxMzcsIDI1NiwgMTU0ODMyLCAyNTYsIDE2MzUzOSwgMjU2LCA0MDc3MSwgMjU2LCA0MDg0NiwgCi0gICAgNTE0LCAxMDIsIDEwMiwgNTE0LCAxMDIsIDEwNSwgNTE0LCAxMDIsIDEwOCwgNzcwLCAxMDIsIDEwMiwgMTA1LCA3NzAsIAotICAgIDEwMiwgMTAyLCAxMDgsIDUxNCwgMzgzLCAxMTYsIDUxNCwgMTE1LCAxMTYsIDUxNCwgMTM5NiwgMTM5OCwgNTE0LCAxMzk2LCAKLSAgICAxMzgxLCA1MTQsIDEzOTYsIDEzODcsIDUxNCwgMTQwNiwgMTM5OCwgNTE0LCAxMzk2LCAxMzg5LCA1MTIsIDE0OTcsIDE0NjAsIAotICAgIDUxMiwgMTUyMiwgMTQ2MywgMjYyLCAxNTA2LCAyNjIsIDE0ODgsIDI2MiwgMTQ5MSwgMjYyLCAxNDkyLCAyNjIsIDE0OTksIAotICAgIDI2MiwgMTUwMCwgMjYyLCAxNTAxLCAyNjIsIDE1MTIsIDI2MiwgMTUxNCwgMjYyLCA0MywgNTEyLCAxNTEzLCAxNDczLCAKLSAgICA1MTIsIDE1MTMsIDE0NzQsIDUxMiwgNjQzMjksIDE0NzMsIDUxMiwgNjQzMjksIDE0NzQsIDUxMiwgMTQ4OCwgMTQ2MywgCi0gICAgNTEyLCAxNDg4LCAxNDY0LCA1MTIsIDE0ODgsIDE0NjgsIDUxMiwgMTQ4OSwgMTQ2OCwgNTEyLCAxNDkwLCAxNDY4LCA1MTIsIAotICAgIDE0OTEsIDE0NjgsIDUxMiwgMTQ5MiwgMTQ2OCwgNTEyLCAxNDkzLCAxNDY4LCA1MTIsIDE0OTQsIDE0NjgsIDUxMiwgMTQ5NiwgCi0gICAgMTQ2OCwgNTEyLCAxNDk3LCAxNDY4LCA1MTIsIDE0OTgsIDE0NjgsIDUxMiwgMTQ5OSwgMTQ2OCwgNTEyLCAxNTAwLCAxNDY4LCAKLSAgICA1MTIsIDE1MDIsIDE0NjgsIDUxMiwgMTUwNCwgMTQ2OCwgNTEyLCAxNTA1LCAxNDY4LCA1MTIsIDE1MDcsIDE0NjgsIDUxMiwgCi0gICAgMTUwOCwgMTQ2OCwgNTEyLCAxNTEwLCAxNDY4LCA1MTIsIDE1MTEsIDE0NjgsIDUxMiwgMTUxMiwgMTQ2OCwgNTEyLCAxNTEzLCAKLSAgICAxNDY4LCA1MTIsIDE1MTQsIDE0NjgsIDUxMiwgMTQ5MywgMTQ2NSwgNTEyLCAxNDg5LCAxNDcxLCA1MTIsIDE0OTksIDE0NzEsIAotICAgIDUxMiwgMTUwOCwgMTQ3MSwgNTE0LCAxNDg4LCAxNTAwLCAyNjcsIDE2NDksIDI2OCwgMTY0OSwgMjY3LCAxNjU5LCAyNjgsIAotICAgIDE2NTksIDI2OSwgMTY1OSwgMjcwLCAxNjU5LCAyNjcsIDE2NjIsIDI2OCwgMTY2MiwgMjY5LCAxNjYyLCAyNzAsIDE2NjIsIAotICAgIDI2NywgMTY2NCwgMjY4LCAxNjY0LCAyNjksIDE2NjQsIDI3MCwgMTY2NCwgMjY3LCAxNjU4LCAyNjgsIDE2NTgsIDI2OSwgCi0gICAgMTY1OCwgMjcwLCAxNjU4LCAyNjcsIDE2NjMsIDI2OCwgMTY2MywgMjY5LCAxNjYzLCAyNzAsIDE2NjMsIDI2NywgMTY1NywgCi0gICAgMjY4LCAxNjU3LCAyNjksIDE2NTcsIDI3MCwgMTY1NywgMjY3LCAxNzAwLCAyNjgsIDE3MDAsIDI2OSwgMTcwMCwgMjcwLCAKLSAgICAxNzAwLCAyNjcsIDE3MDIsIDI2OCwgMTcwMiwgMjY5LCAxNzAyLCAyNzAsIDE3MDIsIDI2NywgMTY2OCwgMjY4LCAxNjY4LCAKLSAgICAyNjksIDE2NjgsIDI3MCwgMTY2OCwgMjY3LCAxNjY3LCAyNjgsIDE2NjcsIDI2OSwgMTY2NywgMjcwLCAxNjY3LCAyNjcsIAotICAgIDE2NzAsIDI2OCwgMTY3MCwgMjY5LCAxNjcwLCAyNzAsIDE2NzAsIDI2NywgMTY3MSwgMjY4LCAxNjcxLCAyNjksIDE2NzEsIAotICAgIDI3MCwgMTY3MSwgMjY3LCAxNjc3LCAyNjgsIDE2NzcsIDI2NywgMTY3NiwgMjY4LCAxNjc2LCAyNjcsIDE2NzgsIDI2OCwgCi0gICAgMTY3OCwgMjY3LCAxNjcyLCAyNjgsIDE2NzIsIDI2NywgMTY4OCwgMjY4LCAxNjg4LCAyNjcsIDE2ODEsIDI2OCwgMTY4MSwgCi0gICAgMjY3LCAxNzA1LCAyNjgsIDE3MDUsIDI2OSwgMTcwNSwgMjcwLCAxNzA1LCAyNjcsIDE3MTEsIDI2OCwgMTcxMSwgMjY5LCAKLSAgICAxNzExLCAyNzAsIDE3MTEsIDI2NywgMTcxNSwgMjY4LCAxNzE1LCAyNjksIDE3MTUsIDI3MCwgMTcxNSwgMjY3LCAxNzEzLCAKLSAgICAyNjgsIDE3MTMsIDI2OSwgMTcxMywgMjcwLCAxNzEzLCAyNjcsIDE3MjIsIDI2OCwgMTcyMiwgMjY3LCAxNzIzLCAyNjgsIAotICAgIDE3MjMsIDI2OSwgMTcyMywgMjcwLCAxNzIzLCAyNjcsIDE3MjgsIDI2OCwgMTcyOCwgMjY3LCAxNzI5LCAyNjgsIDE3MjksIAotICAgIDI2OSwgMTcyOSwgMjcwLCAxNzI5LCAyNjcsIDE3MjYsIDI2OCwgMTcyNiwgMjY5LCAxNzI2LCAyNzAsIDE3MjYsIDI2NywgCi0gICAgMTc0NiwgMjY4LCAxNzQ2LCAyNjcsIDE3NDcsIDI2OCwgMTc0NywgMjY3LCAxNzA5LCAyNjgsIDE3MDksIDI2OSwgMTcwOSwgCi0gICAgMjcwLCAxNzA5LCAyNjcsIDE3MzUsIDI2OCwgMTczNSwgMjY3LCAxNzM0LCAyNjgsIDE3MzQsIDI2NywgMTczNiwgMjY4LCAKLSAgICAxNzM2LCAyNjcsIDE2NTUsIDI2NywgMTczOSwgMjY4LCAxNzM5LCAyNjcsIDE3MzMsIDI2OCwgMTczMywgMjY3LCAxNzM3LCAKLSAgICAyNjgsIDE3MzcsIDI2NywgMTc0NCwgMjY4LCAxNzQ0LCAyNjksIDE3NDQsIDI3MCwgMTc0NCwgMjY5LCAxNjA5LCAyNzAsIAotICAgIDE2MDksIDUyMywgMTU3NCwgMTU3NSwgNTI0LCAxNTc0LCAxNTc1LCA1MjMsIDE1NzQsIDE3NDksIDUyNCwgMTU3NCwgMTc0OSwgCi0gICAgNTIzLCAxNTc0LCAxNjA4LCA1MjQsIDE1NzQsIDE2MDgsIDUyMywgMTU3NCwgMTczNSwgNTI0LCAxNTc0LCAxNzM1LCA1MjMsIAotICAgIDE1NzQsIDE3MzQsIDUyNCwgMTU3NCwgMTczNCwgNTIzLCAxNTc0LCAxNzM2LCA1MjQsIDE1NzQsIDE3MzYsIDUyMywgMTU3NCwgCi0gICAgMTc0NCwgNTI0LCAxNTc0LCAxNzQ0LCA1MjUsIDE1NzQsIDE3NDQsIDUyMywgMTU3NCwgMTYwOSwgNTI0LCAxNTc0LCAxNjA5LCAKLSAgICA1MjUsIDE1NzQsIDE2MDksIDI2NywgMTc0MCwgMjY4LCAxNzQwLCAyNjksIDE3NDAsIDI3MCwgMTc0MCwgNTIzLCAxNTc0LCAKLSAgICAxNTgwLCA1MjMsIDE1NzQsIDE1ODEsIDUyMywgMTU3NCwgMTYwNSwgNTIzLCAxNTc0LCAxNjA5LCA1MjMsIDE1NzQsIDE2MTAsIAotICAgIDUyMywgMTU3NiwgMTU4MCwgNTIzLCAxNTc2LCAxNTgxLCA1MjMsIDE1NzYsIDE1ODIsIDUyMywgMTU3NiwgMTYwNSwgNTIzLCAKLSAgICAxNTc2LCAxNjA5LCA1MjMsIDE1NzYsIDE2MTAsIDUyMywgMTU3OCwgMTU4MCwgNTIzLCAxNTc4LCAxNTgxLCA1MjMsIDE1NzgsIAotICAgIDE1ODIsIDUyMywgMTU3OCwgMTYwNSwgNTIzLCAxNTc4LCAxNjA5LCA1MjMsIDE1NzgsIDE2MTAsIDUyMywgMTU3OSwgMTU4MCwgCi0gICAgNTIzLCAxNTc5LCAxNjA1LCA1MjMsIDE1NzksIDE2MDksIDUyMywgMTU3OSwgMTYxMCwgNTIzLCAxNTgwLCAxNTgxLCA1MjMsIAotICAgIDE1ODAsIDE2MDUsIDUyMywgMTU4MSwgMTU4MCwgNTIzLCAxNTgxLCAxNjA1LCA1MjMsIDE1ODIsIDE1ODAsIDUyMywgMTU4MiwgCi0gICAgMTU4MSwgNTIzLCAxNTgyLCAxNjA1LCA1MjMsIDE1ODcsIDE1ODAsIDUyMywgMTU4NywgMTU4MSwgNTIzLCAxNTg3LCAxNTgyLCAKLSAgICA1MjMsIDE1ODcsIDE2MDUsIDUyMywgMTU4OSwgMTU4MSwgNTIzLCAxNTg5LCAxNjA1LCA1MjMsIDE1OTAsIDE1ODAsIDUyMywgCi0gICAgMTU5MCwgMTU4MSwgNTIzLCAxNTkwLCAxNTgyLCA1MjMsIDE1OTAsIDE2MDUsIDUyMywgMTU5MSwgMTU4MSwgNTIzLCAxNTkxLCAKLSAgICAxNjA1LCA1MjMsIDE1OTIsIDE2MDUsIDUyMywgMTU5MywgMTU4MCwgNTIzLCAxNTkzLCAxNjA1LCA1MjMsIDE1OTQsIDE1ODAsIAotICAgIDUyMywgMTU5NCwgMTYwNSwgNTIzLCAxNjAxLCAxNTgwLCA1MjMsIDE2MDEsIDE1ODEsIDUyMywgMTYwMSwgMTU4MiwgNTIzLCAKLSAgICAxNjAxLCAxNjA1LCA1MjMsIDE2MDEsIDE2MDksIDUyMywgMTYwMSwgMTYxMCwgNTIzLCAxNjAyLCAxNTgxLCA1MjMsIDE2MDIsIAotICAgIDE2MDUsIDUyMywgMTYwMiwgMTYwOSwgNTIzLCAxNjAyLCAxNjEwLCA1MjMsIDE2MDMsIDE1NzUsIDUyMywgMTYwMywgMTU4MCwgCi0gICAgNTIzLCAxNjAzLCAxNTgxLCA1MjMsIDE2MDMsIDE1ODIsIDUyMywgMTYwMywgMTYwNCwgNTIzLCAxNjAzLCAxNjA1LCA1MjMsIAotICAgIDE2MDMsIDE2MDksIDUyMywgMTYwMywgMTYxMCwgNTIzLCAxNjA0LCAxNTgwLCA1MjMsIDE2MDQsIDE1ODEsIDUyMywgMTYwNCwgCi0gICAgMTU4MiwgNTIzLCAxNjA0LCAxNjA1LCA1MjMsIDE2MDQsIDE2MDksIDUyMywgMTYwNCwgMTYxMCwgNTIzLCAxNjA1LCAxNTgwLCAKLSAgICA1MjMsIDE2MDUsIDE1ODEsIDUyMywgMTYwNSwgMTU4MiwgNTIzLCAxNjA1LCAxNjA1LCA1MjMsIDE2MDUsIDE2MDksIDUyMywgCi0gICAgMTYwNSwgMTYxMCwgNTIzLCAxNjA2LCAxNTgwLCA1MjMsIDE2MDYsIDE1ODEsIDUyMywgMTYwNiwgMTU4MiwgNTIzLCAxNjA2LCAKLSAgICAxNjA1LCA1MjMsIDE2MDYsIDE2MDksIDUyMywgMTYwNiwgMTYxMCwgNTIzLCAxNjA3LCAxNTgwLCA1MjMsIDE2MDcsIDE2MDUsIAotICAgIDUyMywgMTYwNywgMTYwOSwgNTIzLCAxNjA3LCAxNjEwLCA1MjMsIDE2MTAsIDE1ODAsIDUyMywgMTYxMCwgMTU4MSwgNTIzLCAKLSAgICAxNjEwLCAxNTgyLCA1MjMsIDE2MTAsIDE2MDUsIDUyMywgMTYxMCwgMTYwOSwgNTIzLCAxNjEwLCAxNjEwLCA1MjMsIDE1ODQsIAotICAgIDE2NDgsIDUyMywgMTU4NSwgMTY0OCwgNTIzLCAxNjA5LCAxNjQ4LCA3NzksIDMyLCAxNjEyLCAxNjE3LCA3NzksIDMyLCAKLSAgICAxNjEzLCAxNjE3LCA3NzksIDMyLCAxNjE0LCAxNjE3LCA3NzksIDMyLCAxNjE1LCAxNjE3LCA3NzksIDMyLCAxNjE2LCAKLSAgICAxNjE3LCA3NzksIDMyLCAxNjE3LCAxNjQ4LCA1MjQsIDE1NzQsIDE1ODUsIDUyNCwgMTU3NCwgMTU4NiwgNTI0LCAxNTc0LCAKLSAgICAxNjA1LCA1MjQsIDE1NzQsIDE2MDYsIDUyNCwgMTU3NCwgMTYwOSwgNTI0LCAxNTc0LCAxNjEwLCA1MjQsIDE1NzYsIDE1ODUsIAotICAgIDUyNCwgMTU3NiwgMTU4NiwgNTI0LCAxNTc2LCAxNjA1LCA1MjQsIDE1NzYsIDE2MDYsIDUyNCwgMTU3NiwgMTYwOSwgNTI0LCAKLSAgICAxNTc2LCAxNjEwLCA1MjQsIDE1NzgsIDE1ODUsIDUyNCwgMTU3OCwgMTU4NiwgNTI0LCAxNTc4LCAxNjA1LCA1MjQsIDE1NzgsIAotICAgIDE2MDYsIDUyNCwgMTU3OCwgMTYwOSwgNTI0LCAxNTc4LCAxNjEwLCA1MjQsIDE1NzksIDE1ODUsIDUyNCwgMTU3OSwgMTU4NiwgCi0gICAgNTI0LCAxNTc5LCAxNjA1LCA1MjQsIDE1NzksIDE2MDYsIDUyNCwgMTU3OSwgMTYwOSwgNTI0LCAxNTc5LCAxNjEwLCA1MjQsIAotICAgIDE2MDEsIDE2MDksIDUyNCwgMTYwMSwgMTYxMCwgNTI0LCAxNjAyLCAxNjA5LCA1MjQsIDE2MDIsIDE2MTAsIDUyNCwgMTYwMywgCi0gICAgMTU3NSwgNTI0LCAxNjAzLCAxNjA0LCA1MjQsIDE2MDMsIDE2MDUsIDUyNCwgMTYwMywgMTYwOSwgNTI0LCAxNjAzLCAxNjEwLCAKLSAgICA1MjQsIDE2MDQsIDE2MDUsIDUyNCwgMTYwNCwgMTYwOSwgNTI0LCAxNjA0LCAxNjEwLCA1MjQsIDE2MDUsIDE1NzUsIDUyNCwgCi0gICAgMTYwNSwgMTYwNSwgNTI0LCAxNjA2LCAxNTg1LCA1MjQsIDE2MDYsIDE1ODYsIDUyNCwgMTYwNiwgMTYwNSwgNTI0LCAxNjA2LCAKLSAgICAxNjA2LCA1MjQsIDE2MDYsIDE2MDksIDUyNCwgMTYwNiwgMTYxMCwgNTI0LCAxNjA5LCAxNjQ4LCA1MjQsIDE2MTAsIDE1ODUsIAotICAgIDUyNCwgMTYxMCwgMTU4NiwgNTI0LCAxNjEwLCAxNjA1LCA1MjQsIDE2MTAsIDE2MDYsIDUyNCwgMTYxMCwgMTYwOSwgNTI0LCAKLSAgICAxNjEwLCAxNjEwLCA1MjUsIDE1NzQsIDE1ODAsIDUyNSwgMTU3NCwgMTU4MSwgNTI1LCAxNTc0LCAxNTgyLCA1MjUsIDE1NzQsIAotICAgIDE2MDUsIDUyNSwgMTU3NCwgMTYwNywgNTI1LCAxNTc2LCAxNTgwLCA1MjUsIDE1NzYsIDE1ODEsIDUyNSwgMTU3NiwgMTU4MiwgCi0gICAgNTI1LCAxNTc2LCAxNjA1LCA1MjUsIDE1NzYsIDE2MDcsIDUyNSwgMTU3OCwgMTU4MCwgNTI1LCAxNTc4LCAxNTgxLCA1MjUsIAotICAgIDE1NzgsIDE1ODIsIDUyNSwgMTU3OCwgMTYwNSwgNTI1LCAxNTc4LCAxNjA3LCA1MjUsIDE1NzksIDE2MDUsIDUyNSwgMTU4MCwgCi0gICAgMTU4MSwgNTI1LCAxNTgwLCAxNjA1LCA1MjUsIDE1ODEsIDE1ODAsIDUyNSwgMTU4MSwgMTYwNSwgNTI1LCAxNTgyLCAxNTgwLCAKLSAgICA1MjUsIDE1ODIsIDE2MDUsIDUyNSwgMTU4NywgMTU4MCwgNTI1LCAxNTg3LCAxNTgxLCA1MjUsIDE1ODcsIDE1ODIsIDUyNSwgCi0gICAgMTU4NywgMTYwNSwgNTI1LCAxNTg5LCAxNTgxLCA1MjUsIDE1ODksIDE1ODIsIDUyNSwgMTU4OSwgMTYwNSwgNTI1LCAxNTkwLCAKLSAgICAxNTgwLCA1MjUsIDE1OTAsIDE1ODEsIDUyNSwgMTU5MCwgMTU4MiwgNTI1LCAxNTkwLCAxNjA1LCA1MjUsIDE1OTEsIDE1ODEsIAotICAgIDUyNSwgMTU5MiwgMTYwNSwgNTI1LCAxNTkzLCAxNTgwLCA1MjUsIDE1OTMsIDE2MDUsIDUyNSwgMTU5NCwgMTU4MCwgNTI1LCAKLSAgICAxNTk0LCAxNjA1LCA1MjUsIDE2MDEsIDE1ODAsIDUyNSwgMTYwMSwgMTU4MSwgNTI1LCAxNjAxLCAxNTgyLCA1MjUsIDE2MDEsIAotICAgIDE2MDUsIDUyNSwgMTYwMiwgMTU4MSwgNTI1LCAxNjAyLCAxNjA1LCA1MjUsIDE2MDMsIDE1ODAsIDUyNSwgMTYwMywgMTU4MSwgCi0gICAgNTI1LCAxNjAzLCAxNTgyLCA1MjUsIDE2MDMsIDE2MDQsIDUyNSwgMTYwMywgMTYwNSwgNTI1LCAxNjA0LCAxNTgwLCA1MjUsIAotICAgIDE2MDQsIDE1ODEsIDUyNSwgMTYwNCwgMTU4MiwgNTI1LCAxNjA0LCAxNjA1LCA1MjUsIDE2MDQsIDE2MDcsIDUyNSwgMTYwNSwgCi0gICAgMTU4MCwgNTI1LCAxNjA1LCAxNTgxLCA1MjUsIDE2MDUsIDE1ODIsIDUyNSwgMTYwNSwgMTYwNSwgNTI1LCAxNjA2LCAxNTgwLCAKLSAgICA1MjUsIDE2MDYsIDE1ODEsIDUyNSwgMTYwNiwgMTU4MiwgNTI1LCAxNjA2LCAxNjA1LCA1MjUsIDE2MDYsIDE2MDcsIDUyNSwgCi0gICAgMTYwNywgMTU4MCwgNTI1LCAxNjA3LCAxNjA1LCA1MjUsIDE2MDcsIDE2NDgsIDUyNSwgMTYxMCwgMTU4MCwgNTI1LCAxNjEwLCAKLSAgICAxNTgxLCA1MjUsIDE2MTAsIDE1ODIsIDUyNSwgMTYxMCwgMTYwNSwgNTI1LCAxNjEwLCAxNjA3LCA1MjYsIDE1NzQsIDE2MDUsIAotICAgIDUyNiwgMTU3NCwgMTYwNywgNTI2LCAxNTc2LCAxNjA1LCA1MjYsIDE1NzYsIDE2MDcsIDUyNiwgMTU3OCwgMTYwNSwgNTI2LCAKLSAgICAxNTc4LCAxNjA3LCA1MjYsIDE1NzksIDE2MDUsIDUyNiwgMTU3OSwgMTYwNywgNTI2LCAxNTg3LCAxNjA1LCA1MjYsIDE1ODcsIAotICAgIDE2MDcsIDUyNiwgMTU4OCwgMTYwNSwgNTI2LCAxNTg4LCAxNjA3LCA1MjYsIDE2MDMsIDE2MDQsIDUyNiwgMTYwMywgMTYwNSwgCi0gICAgNTI2LCAxNjA0LCAxNjA1LCA1MjYsIDE2MDYsIDE2MDUsIDUyNiwgMTYwNiwgMTYwNywgNTI2LCAxNjEwLCAxNjA1LCA1MjYsIAotICAgIDE2MTAsIDE2MDcsIDc4MiwgMTYwMCwgMTYxNCwgMTYxNywgNzgyLCAxNjAwLCAxNjE1LCAxNjE3LCA3ODIsIDE2MDAsIAotICAgIDE2MTYsIDE2MTcsIDUyMywgMTU5MSwgMTYwOSwgNTIzLCAxNTkxLCAxNjEwLCA1MjMsIDE1OTMsIDE2MDksIDUyMywgMTU5MywgCi0gICAgMTYxMCwgNTIzLCAxNTk0LCAxNjA5LCA1MjMsIDE1OTQsIDE2MTAsIDUyMywgMTU4NywgMTYwOSwgNTIzLCAxNTg3LCAxNjEwLCAKLSAgICA1MjMsIDE1ODgsIDE2MDksIDUyMywgMTU4OCwgMTYxMCwgNTIzLCAxNTgxLCAxNjA5LCA1MjMsIDE1ODEsIDE2MTAsIDUyMywgCi0gICAgMTU4MCwgMTYwOSwgNTIzLCAxNTgwLCAxNjEwLCA1MjMsIDE1ODIsIDE2MDksIDUyMywgMTU4MiwgMTYxMCwgNTIzLCAxNTg5LCAKLSAgICAxNjA5LCA1MjMsIDE1ODksIDE2MTAsIDUyMywgMTU5MCwgMTYwOSwgNTIzLCAxNTkwLCAxNjEwLCA1MjMsIDE1ODgsIDE1ODAsIAotICAgIDUyMywgMTU4OCwgMTU4MSwgNTIzLCAxNTg4LCAxNTgyLCA1MjMsIDE1ODgsIDE2MDUsIDUyMywgMTU4OCwgMTU4NSwgNTIzLCAKLSAgICAxNTg3LCAxNTg1LCA1MjMsIDE1ODksIDE1ODUsIDUyMywgMTU5MCwgMTU4NSwgNTI0LCAxNTkxLCAxNjA5LCA1MjQsIDE1OTEsIAotICAgIDE2MTAsIDUyNCwgMTU5MywgMTYwOSwgNTI0LCAxNTkzLCAxNjEwLCA1MjQsIDE1OTQsIDE2MDksIDUyNCwgMTU5NCwgMTYxMCwgCi0gICAgNTI0LCAxNTg3LCAxNjA5LCA1MjQsIDE1ODcsIDE2MTAsIDUyNCwgMTU4OCwgMTYwOSwgNTI0LCAxNTg4LCAxNjEwLCA1MjQsIAotICAgIDE1ODEsIDE2MDksIDUyNCwgMTU4MSwgMTYxMCwgNTI0LCAxNTgwLCAxNjA5LCA1MjQsIDE1ODAsIDE2MTAsIDUyNCwgMTU4MiwgCi0gICAgMTYwOSwgNTI0LCAxNTgyLCAxNjEwLCA1MjQsIDE1ODksIDE2MDksIDUyNCwgMTU4OSwgMTYxMCwgNTI0LCAxNTkwLCAxNjA5LCAKLSAgICA1MjQsIDE1OTAsIDE2MTAsIDUyNCwgMTU4OCwgMTU4MCwgNTI0LCAxNTg4LCAxNTgxLCA1MjQsIDE1ODgsIDE1ODIsIDUyNCwgCi0gICAgMTU4OCwgMTYwNSwgNTI0LCAxNTg4LCAxNTg1LCA1MjQsIDE1ODcsIDE1ODUsIDUyNCwgMTU4OSwgMTU4NSwgNTI0LCAxNTkwLCAKLSAgICAxNTg1LCA1MjUsIDE1ODgsIDE1ODAsIDUyNSwgMTU4OCwgMTU4MSwgNTI1LCAxNTg4LCAxNTgyLCA1MjUsIDE1ODgsIDE2MDUsIAotICAgIDUyNSwgMTU4NywgMTYwNywgNTI1LCAxNTg4LCAxNjA3LCA1MjUsIDE1OTEsIDE2MDUsIDUyNiwgMTU4NywgMTU4MCwgNTI2LCAKLSAgICAxNTg3LCAxNTgxLCA1MjYsIDE1ODcsIDE1ODIsIDUyNiwgMTU4OCwgMTU4MCwgNTI2LCAxNTg4LCAxNTgxLCA1MjYsIDE1ODgsIAotICAgIDE1ODIsIDUyNiwgMTU5MSwgMTYwNSwgNTI2LCAxNTkyLCAxNjA1LCA1MjQsIDE1NzUsIDE2MTEsIDUyMywgMTU3NSwgMTYxMSwgCi0gICAgNzgxLCAxNTc4LCAxNTgwLCAxNjA1LCA3ODAsIDE1NzgsIDE1ODEsIDE1ODAsIDc4MSwgMTU3OCwgMTU4MSwgMTU4MCwgNzgxLCAKLSAgICAxNTc4LCAxNTgxLCAxNjA1LCA3ODEsIDE1NzgsIDE1ODIsIDE2MDUsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MCwgNzgxLCAKLSAgICAxNTc4LCAxNjA1LCAxNTgxLCA3ODEsIDE1NzgsIDE2MDUsIDE1ODIsIDc4MCwgMTU4MCwgMTYwNSwgMTU4MSwgNzgxLCAKLSAgICAxNTgwLCAxNjA1LCAxNTgxLCA3ODAsIDE1ODEsIDE2MDUsIDE2MTAsIDc4MCwgMTU4MSwgMTYwNSwgMTYwOSwgNzgxLCAKLSAgICAxNTg3LCAxNTgxLCAxNTgwLCA3ODEsIDE1ODcsIDE1ODAsIDE1ODEsIDc4MCwgMTU4NywgMTU4MCwgMTYwOSwgNzgwLCAKLSAgICAxNTg3LCAxNjA1LCAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIDE1ODEsIDc4MSwgMTU4NywgMTYwNSwgMTU4MCwgNzgwLCAKLSAgICAxNTg3LCAxNjA1LCAxNjA1LCA3ODEsIDE1ODcsIDE2MDUsIDE2MDUsIDc4MCwgMTU4OSwgMTU4MSwgMTU4MSwgNzgxLCAKLSAgICAxNTg5LCAxNTgxLCAxNTgxLCA3ODAsIDE1ODksIDE2MDUsIDE2MDUsIDc4MCwgMTU4OCwgMTU4MSwgMTYwNSwgNzgxLCAKLSAgICAxNTg4LCAxNTgxLCAxNjA1LCA3ODAsIDE1ODgsIDE1ODAsIDE2MTAsIDc4MCwgMTU4OCwgMTYwNSwgMTU4MiwgNzgxLCAKLSAgICAxNTg4LCAxNjA1LCAxNTgyLCA3ODAsIDE1ODgsIDE2MDUsIDE2MDUsIDc4MSwgMTU4OCwgMTYwNSwgMTYwNSwgNzgwLCAKLSAgICAxNTkwLCAxNTgxLCAxNjA5LCA3ODAsIDE1OTAsIDE1ODIsIDE2MDUsIDc4MSwgMTU5MCwgMTU4MiwgMTYwNSwgNzgwLCAKLSAgICAxNTkxLCAxNjA1LCAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIDE1ODEsIDc4MSwgMTU5MSwgMTYwNSwgMTYwNSwgNzgwLCAKLSAgICAxNTkxLCAxNjA1LCAxNjEwLCA3ODAsIDE1OTMsIDE1ODAsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYwNSwgNzgxLCAKLSAgICAxNTkzLCAxNjA1LCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MDksIDc4MCwgMTU5NCwgMTYwNSwgMTYwNSwgNzgwLCAKLSAgICAxNTk0LCAxNjA1LCAxNjEwLCA3ODAsIDE1OTQsIDE2MDUsIDE2MDksIDc4MCwgMTYwMSwgMTU4MiwgMTYwNSwgNzgxLCAKLSAgICAxNjAxLCAxNTgyLCAxNjA1LCA3ODAsIDE2MDIsIDE2MDUsIDE1ODEsIDc4MCwgMTYwMiwgMTYwNSwgMTYwNSwgNzgwLCAKLSAgICAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE2MDQsIDE1ODEsIDE2MTAsIDc4MCwgMTYwNCwgMTU4MSwgMTYwOSwgNzgxLCAKLSAgICAxNjA0LCAxNTgwLCAxNTgwLCA3ODAsIDE2MDQsIDE1ODAsIDE1ODAsIDc4MCwgMTYwNCwgMTU4MiwgMTYwNSwgNzgxLCAKLSAgICAxNjA0LCAxNTgyLCAxNjA1LCA3ODAsIDE2MDQsIDE2MDUsIDE1ODEsIDc4MSwgMTYwNCwgMTYwNSwgMTU4MSwgNzgxLCAKLSAgICAxNjA1LCAxNTgxLCAxNTgwLCA3ODEsIDE2MDUsIDE1ODEsIDE2MDUsIDc4MCwgMTYwNSwgMTU4MSwgMTYxMCwgNzgxLCAKLSAgICAxNjA1LCAxNTgwLCAxNTgxLCA3ODEsIDE2MDUsIDE1ODAsIDE2MDUsIDc4MSwgMTYwNSwgMTU4MiwgMTU4MCwgNzgxLCAKLSAgICAxNjA1LCAxNTgyLCAxNjA1LCA3ODEsIDE2MDUsIDE1ODAsIDE1ODIsIDc4MSwgMTYwNywgMTYwNSwgMTU4MCwgNzgxLCAKLSAgICAxNjA3LCAxNjA1LCAxNjA1LCA3ODEsIDE2MDYsIDE1ODEsIDE2MDUsIDc4MCwgMTYwNiwgMTU4MSwgMTYwOSwgNzgwLCAKLSAgICAxNjA2LCAxNTgwLCAxNjA1LCA3ODEsIDE2MDYsIDE1ODAsIDE2MDUsIDc4MCwgMTYwNiwgMTU4MCwgMTYwOSwgNzgwLCAKLSAgICAxNjA2LCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE2MDUsIDE2MDksIDc4MCwgMTYxMCwgMTYwNSwgMTYwNSwgNzgxLCAKLSAgICAxNjEwLCAxNjA1LCAxNjA1LCA3ODAsIDE1NzYsIDE1ODIsIDE2MTAsIDc4MCwgMTU3OCwgMTU4MCwgMTYxMCwgNzgwLCAKLSAgICAxNTc4LCAxNTgwLCAxNjA5LCA3ODAsIDE1NzgsIDE1ODIsIDE2MTAsIDc4MCwgMTU3OCwgMTU4MiwgMTYwOSwgNzgwLCAKLSAgICAxNTc4LCAxNjA1LCAxNjEwLCA3ODAsIDE1NzgsIDE2MDUsIDE2MDksIDc4MCwgMTU4MCwgMTYwNSwgMTYxMCwgNzgwLCAKLSAgICAxNTgwLCAxNTgxLCAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIDE2MDksIDc4MCwgMTU4NywgMTU4MiwgMTYwOSwgNzgwLCAKLSAgICAxNTg5LCAxNTgxLCAxNjEwLCA3ODAsIDE1ODgsIDE1ODEsIDE2MTAsIDc4MCwgMTU5MCwgMTU4MSwgMTYxMCwgNzgwLCAKLSAgICAxNjA0LCAxNTgwLCAxNjEwLCA3ODAsIDE2MDQsIDE2MDUsIDE2MTAsIDc4MCwgMTYxMCwgMTU4MSwgMTYxMCwgNzgwLCAKLSAgICAxNjEwLCAxNTgwLCAxNjEwLCA3ODAsIDE2MTAsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNSwgMTYwNSwgMTYxMCwgNzgwLCAKLSAgICAxNjAyLCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE1ODEsIDE2MTAsIDc4MSwgMTYwMiwgMTYwNSwgMTU4MSwgNzgxLCAKLSAgICAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MTAsIDc4MCwgMTYwMywgMTYwNSwgMTYxMCwgNzgxLCAKLSAgICAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIDE2MDUsIDE1ODIsIDE2MTAsIDc4MSwgMTYwNCwgMTU4MCwgMTYwNSwgNzgwLCAKLSAgICAxNjAzLCAxNjA1LCAxNjA1LCA3ODAsIDE2MDQsIDE1ODAsIDE2MDUsIDc4MCwgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAKLSAgICAxNTgwLCAxNTgxLCAxNjEwLCA3ODAsIDE1ODEsIDE1ODAsIDE2MTAsIDc4MCwgMTYwNSwgMTU4MCwgMTYxMCwgNzgwLCAKLSAgICAxNjAxLCAxNjA1LCAxNjEwLCA3ODAsIDE1NzYsIDE1ODEsIDE2MTAsIDc4MSwgMTYwMywgMTYwNSwgMTYwNSwgNzgxLCAKLSAgICAxNTkzLCAxNTgwLCAxNjA1LCA3ODEsIDE1ODksIDE2MDUsIDE2MDUsIDc4MCwgMTU4NywgMTU4MiwgMTYxMCwgNzgwLCAKLSAgICAxNjA2LCAxNTgwLCAxNjEwLCA3NzksIDE1ODksIDE2MDQsIDE3NDYsIDc3OSwgMTYwMiwgMTYwNCwgMTc0NiwgMTAzNSwgCi0gICAgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMTAzNSwgMTU3NSwgMTYwMywgMTU3NiwgMTU4NSwgMTAzNSwgMTYwNSwgMTU4MSwgCi0gICAgMTYwNSwgMTU4MywgMTAzNSwgMTU4OSwgMTYwNCwgMTU5MywgMTYwNSwgMTAzNSwgMTU4NSwgMTU4NywgMTYwOCwgMTYwNCwgCi0gICAgMTAzNSwgMTU5MywgMTYwNCwgMTYxMCwgMTYwNywgMTAzNSwgMTYwOCwgMTU4NywgMTYwNCwgMTYwNSwgNzc5LCAxNTg5LCAKLSAgICAxNjA0LCAxNjA5LCA0NjE5LCAxNTg5LCAxNjA0LCAxNjA5LCAzMiwgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMzIsIDE1OTMsIAotICAgIDE2MDQsIDE2MTAsIDE2MDcsIDMyLCAxNjA4LCAxNTg3LCAxNjA0LCAxNjA1LCAyMDU5LCAxNTgwLCAxNjA0LCAzMiwgMTU4MCwgCi0gICAgMTYwNCwgMTU3NSwgMTYwNCwgMTYwNywgMTAzNSwgMTU4NSwgMTc0MCwgMTU3NSwgMTYwNCwgMjY1LCA0NCwgMjY1LCAKLSAgICAxMjI4OSwgMjY1LCAxMjI5MCwgMjY1LCA1OCwgMjY1LCA1OSwgMjY1LCAzMywgMjY1LCA2MywgMjY1LCAxMjMxMCwgMjY1LCAKLSAgICAxMjMxMSwgMjY1LCA4MjMwLCAyNjUsIDgyMjksIDI2NSwgODIxMiwgMjY1LCA4MjExLCAyNjUsIDk1LCAyNjUsIDk1LCAyNjUsIAotICAgIDQwLCAyNjUsIDQxLCAyNjUsIDEyMywgMjY1LCAxMjUsIDI2NSwgMTIzMDgsIDI2NSwgMTIzMDksIDI2NSwgMTIzMDQsIDI2NSwgCi0gICAgMTIzMDUsIDI2NSwgMTIyOTgsIDI2NSwgMTIyOTksIDI2NSwgMTIyOTYsIDI2NSwgMTIyOTcsIDI2NSwgMTIzMDAsIDI2NSwgCi0gICAgMTIzMDEsIDI2NSwgMTIzMDIsIDI2NSwgMTIzMDMsIDI2NSwgOTEsIDI2NSwgOTMsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAKLSAgICAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA5NSwgMjU4LCA5NSwgMjU4LCA5NSwgMjcxLCA0NCwgMjcxLCAxMjI4OSwgCi0gICAgMjcxLCA0NiwgMjcxLCA1OSwgMjcxLCA1OCwgMjcxLCA2MywgMjcxLCAzMywgMjcxLCA4MjEyLCAyNzEsIDQwLCAyNzEsIDQxLCAKLSAgICAyNzEsIDEyMywgMjcxLCAxMjUsIDI3MSwgMTIzMDgsIDI3MSwgMTIzMDksIDI3MSwgMzUsIDI3MSwgMzgsIDI3MSwgNDIsIAotICAgIDI3MSwgNDMsIDI3MSwgNDUsIDI3MSwgNjAsIDI3MSwgNjIsIDI3MSwgNjEsIDI3MSwgOTIsIDI3MSwgMzYsIDI3MSwgMzcsIAotICAgIDI3MSwgNjQsIDUyMywgMzIsIDE2MTEsIDUyNiwgMTYwMCwgMTYxMSwgNTIzLCAzMiwgMTYxMiwgNTIzLCAzMiwgMTYxMywgCi0gICAgNTIzLCAzMiwgMTYxNCwgNTI2LCAxNjAwLCAxNjE0LCA1MjMsIDMyLCAxNjE1LCA1MjYsIDE2MDAsIDE2MTUsIDUyMywgMzIsIAotICAgIDE2MTYsIDUyNiwgMTYwMCwgMTYxNiwgNTIzLCAzMiwgMTYxNywgNTI2LCAxNjAwLCAxNjE3LCA1MjMsIDMyLCAxNjE4LCAKLSAgICA1MjYsIDE2MDAsIDE2MTgsIDI2NywgMTU2OSwgMjY3LCAxNTcwLCAyNjgsIDE1NzAsIDI2NywgMTU3MSwgMjY4LCAxNTcxLCAKLSAgICAyNjcsIDE1NzIsIDI2OCwgMTU3MiwgMjY3LCAxNTczLCAyNjgsIDE1NzMsIDI2NywgMTU3NCwgMjY4LCAxNTc0LCAyNjksIAotICAgIDE1NzQsIDI3MCwgMTU3NCwgMjY3LCAxNTc1LCAyNjgsIDE1NzUsIDI2NywgMTU3NiwgMjY4LCAxNTc2LCAyNjksIDE1NzYsIAotICAgIDI3MCwgMTU3NiwgMjY3LCAxNTc3LCAyNjgsIDE1NzcsIDI2NywgMTU3OCwgMjY4LCAxNTc4LCAyNjksIDE1NzgsIDI3MCwgCi0gICAgMTU3OCwgMjY3LCAxNTc5LCAyNjgsIDE1NzksIDI2OSwgMTU3OSwgMjcwLCAxNTc5LCAyNjcsIDE1ODAsIDI2OCwgMTU4MCwgCi0gICAgMjY5LCAxNTgwLCAyNzAsIDE1ODAsIDI2NywgMTU4MSwgMjY4LCAxNTgxLCAyNjksIDE1ODEsIDI3MCwgMTU4MSwgMjY3LCAKLSAgICAxNTgyLCAyNjgsIDE1ODIsIDI2OSwgMTU4MiwgMjcwLCAxNTgyLCAyNjcsIDE1ODMsIDI2OCwgMTU4MywgMjY3LCAxNTg0LCAKLSAgICAyNjgsIDE1ODQsIDI2NywgMTU4NSwgMjY4LCAxNTg1LCAyNjcsIDE1ODYsIDI2OCwgMTU4NiwgMjY3LCAxNTg3LCAyNjgsIAotICAgIDE1ODcsIDI2OSwgMTU4NywgMjcwLCAxNTg3LCAyNjcsIDE1ODgsIDI2OCwgMTU4OCwgMjY5LCAxNTg4LCAyNzAsIDE1ODgsIAotICAgIDI2NywgMTU4OSwgMjY4LCAxNTg5LCAyNjksIDE1ODksIDI3MCwgMTU4OSwgMjY3LCAxNTkwLCAyNjgsIDE1OTAsIDI2OSwgCi0gICAgMTU5MCwgMjcwLCAxNTkwLCAyNjcsIDE1OTEsIDI2OCwgMTU5MSwgMjY5LCAxNTkxLCAyNzAsIDE1OTEsIDI2NywgMTU5MiwgCi0gICAgMjY4LCAxNTkyLCAyNjksIDE1OTIsIDI3MCwgMTU5MiwgMjY3LCAxNTkzLCAyNjgsIDE1OTMsIDI2OSwgMTU5MywgMjcwLCAKLSAgICAxNTkzLCAyNjcsIDE1OTQsIDI2OCwgMTU5NCwgMjY5LCAxNTk0LCAyNzAsIDE1OTQsIDI2NywgMTYwMSwgMjY4LCAxNjAxLCAKLSAgICAyNjksIDE2MDEsIDI3MCwgMTYwMSwgMjY3LCAxNjAyLCAyNjgsIDE2MDIsIDI2OSwgMTYwMiwgMjcwLCAxNjAyLCAyNjcsIAotICAgIDE2MDMsIDI2OCwgMTYwMywgMjY5LCAxNjAzLCAyNzAsIDE2MDMsIDI2NywgMTYwNCwgMjY4LCAxNjA0LCAyNjksIDE2MDQsIAotICAgIDI3MCwgMTYwNCwgMjY3LCAxNjA1LCAyNjgsIDE2MDUsIDI2OSwgMTYwNSwgMjcwLCAxNjA1LCAyNjcsIDE2MDYsIDI2OCwgCi0gICAgMTYwNiwgMjY5LCAxNjA2LCAyNzAsIDE2MDYsIDI2NywgMTYwNywgMjY4LCAxNjA3LCAyNjksIDE2MDcsIDI3MCwgMTYwNywgCi0gICAgMjY3LCAxNjA4LCAyNjgsIDE2MDgsIDI2NywgMTYwOSwgMjY4LCAxNjA5LCAyNjcsIDE2MTAsIDI2OCwgMTYxMCwgMjY5LCAKLSAgICAxNjEwLCAyNzAsIDE2MTAsIDUyMywgMTYwNCwgMTU3MCwgNTI0LCAxNjA0LCAxNTcwLCA1MjMsIDE2MDQsIDE1NzEsIDUyNCwgCi0gICAgMTYwNCwgMTU3MSwgNTIzLCAxNjA0LCAxNTczLCA1MjQsIDE2MDQsIDE1NzMsIDUyMywgMTYwNCwgMTU3NSwgNTI0LCAxNjA0LCAKLSAgICAxNTc1LCAyNjQsIDMzLCAyNjQsIDM0LCAyNjQsIDM1LCAyNjQsIDM2LCAyNjQsIDM3LCAyNjQsIDM4LCAyNjQsIDM5LCAyNjQsIAotICAgIDQwLCAyNjQsIDQxLCAyNjQsIDQyLCAyNjQsIDQzLCAyNjQsIDQ0LCAyNjQsIDQ1LCAyNjQsIDQ2LCAyNjQsIDQ3LCAyNjQsIAotICAgIDQ4LCAyNjQsIDQ5LCAyNjQsIDUwLCAyNjQsIDUxLCAyNjQsIDUyLCAyNjQsIDUzLCAyNjQsIDU0LCAyNjQsIDU1LCAyNjQsIAotICAgIDU2LCAyNjQsIDU3LCAyNjQsIDU4LCAyNjQsIDU5LCAyNjQsIDYwLCAyNjQsIDYxLCAyNjQsIDYyLCAyNjQsIDYzLCAyNjQsIAotICAgIDY0LCAyNjQsIDY1LCAyNjQsIDY2LCAyNjQsIDY3LCAyNjQsIDY4LCAyNjQsIDY5LCAyNjQsIDcwLCAyNjQsIDcxLCAyNjQsIAotICAgIDcyLCAyNjQsIDczLCAyNjQsIDc0LCAyNjQsIDc1LCAyNjQsIDc2LCAyNjQsIDc3LCAyNjQsIDc4LCAyNjQsIDc5LCAyNjQsIAotICAgIDgwLCAyNjQsIDgxLCAyNjQsIDgyLCAyNjQsIDgzLCAyNjQsIDg0LCAyNjQsIDg1LCAyNjQsIDg2LCAyNjQsIDg3LCAyNjQsIAotICAgIDg4LCAyNjQsIDg5LCAyNjQsIDkwLCAyNjQsIDkxLCAyNjQsIDkyLCAyNjQsIDkzLCAyNjQsIDk0LCAyNjQsIDk1LCAyNjQsIAotICAgIDk2LCAyNjQsIDk3LCAyNjQsIDk4LCAyNjQsIDk5LCAyNjQsIDEwMCwgMjY0LCAxMDEsIDI2NCwgMTAyLCAyNjQsIDEwMywgCi0gICAgMjY0LCAxMDQsIDI2NCwgMTA1LCAyNjQsIDEwNiwgMjY0LCAxMDcsIDI2NCwgMTA4LCAyNjQsIDEwOSwgMjY0LCAxMTAsIAotICAgIDI2NCwgMTExLCAyNjQsIDExMiwgMjY0LCAxMTMsIDI2NCwgMTE0LCAyNjQsIDExNSwgMjY0LCAxMTYsIDI2NCwgMTE3LCAKLSAgICAyNjQsIDExOCwgMjY0LCAxMTksIDI2NCwgMTIwLCAyNjQsIDEyMSwgMjY0LCAxMjIsIDI2NCwgMTIzLCAyNjQsIDEyNCwgCi0gICAgMjY0LCAxMjUsIDI2NCwgMTI2LCAyNjQsIDEwNjI5LCAyNjQsIDEwNjMwLCAyNzIsIDEyMjkwLCAyNzIsIDEyMzAwLCAyNzIsIAotICAgIDEyMzAxLCAyNzIsIDEyMjg5LCAyNzIsIDEyNTM5LCAyNzIsIDEyNTMwLCAyNzIsIDEyNDQ5LCAyNzIsIDEyNDUxLCAyNzIsIAotICAgIDEyNDUzLCAyNzIsIDEyNDU1LCAyNzIsIDEyNDU3LCAyNzIsIDEyNTE1LCAyNzIsIDEyNTE3LCAyNzIsIDEyNTE5LCAyNzIsIAotICAgIDEyNDgzLCAyNzIsIDEyNTQwLCAyNzIsIDEyNDUwLCAyNzIsIDEyNDUyLCAyNzIsIDEyNDU0LCAyNzIsIDEyNDU2LCAyNzIsIAotICAgIDEyNDU4LCAyNzIsIDEyNDU5LCAyNzIsIDEyNDYxLCAyNzIsIDEyNDYzLCAyNzIsIDEyNDY1LCAyNzIsIDEyNDY3LCAyNzIsIAotICAgIDEyNDY5LCAyNzIsIDEyNDcxLCAyNzIsIDEyNDczLCAyNzIsIDEyNDc1LCAyNzIsIDEyNDc3LCAyNzIsIDEyNDc5LCAyNzIsIAotICAgIDEyNDgxLCAyNzIsIDEyNDg0LCAyNzIsIDEyNDg2LCAyNzIsIDEyNDg4LCAyNzIsIDEyNDkwLCAyNzIsIDEyNDkxLCAyNzIsIAotICAgIDEyNDkyLCAyNzIsIDEyNDkzLCAyNzIsIDEyNDk0LCAyNzIsIDEyNDk1LCAyNzIsIDEyNDk4LCAyNzIsIDEyNTAxLCAyNzIsIAotICAgIDEyNTA0LCAyNzIsIDEyNTA3LCAyNzIsIDEyNTEwLCAyNzIsIDEyNTExLCAyNzIsIDEyNTEyLCAyNzIsIDEyNTEzLCAyNzIsIAotICAgIDEyNTE0LCAyNzIsIDEyNTE2LCAyNzIsIDEyNTE4LCAyNzIsIDEyNTIwLCAyNzIsIDEyNTIxLCAyNzIsIDEyNTIyLCAyNzIsIAotICAgIDEyNTIzLCAyNzIsIDEyNTI0LCAyNzIsIDEyNTI1LCAyNzIsIDEyNTI3LCAyNzIsIDEyNTMxLCAyNzIsIDEyNDQxLCAyNzIsIAotICAgIDEyNDQyLCAyNzIsIDEyNjQ0LCAyNzIsIDEyNTkzLCAyNzIsIDEyNTk0LCAyNzIsIDEyNTk1LCAyNzIsIDEyNTk2LCAyNzIsIAotICAgIDEyNTk3LCAyNzIsIDEyNTk4LCAyNzIsIDEyNTk5LCAyNzIsIDEyNjAwLCAyNzIsIDEyNjAxLCAyNzIsIDEyNjAyLCAyNzIsIAotICAgIDEyNjAzLCAyNzIsIDEyNjA0LCAyNzIsIDEyNjA1LCAyNzIsIDEyNjA2LCAyNzIsIDEyNjA3LCAyNzIsIDEyNjA4LCAyNzIsIAotICAgIDEyNjA5LCAyNzIsIDEyNjEwLCAyNzIsIDEyNjExLCAyNzIsIDEyNjEyLCAyNzIsIDEyNjEzLCAyNzIsIDEyNjE0LCAyNzIsIAotICAgIDEyNjE1LCAyNzIsIDEyNjE2LCAyNzIsIDEyNjE3LCAyNzIsIDEyNjE4LCAyNzIsIDEyNjE5LCAyNzIsIDEyNjIwLCAyNzIsIAotICAgIDEyNjIxLCAyNzIsIDEyNjIyLCAyNzIsIDEyNjIzLCAyNzIsIDEyNjI0LCAyNzIsIDEyNjI1LCAyNzIsIDEyNjI2LCAyNzIsIAotICAgIDEyNjI3LCAyNzIsIDEyNjI4LCAyNzIsIDEyNjI5LCAyNzIsIDEyNjMwLCAyNzIsIDEyNjMxLCAyNzIsIDEyNjMyLCAyNzIsIAotICAgIDEyNjMzLCAyNzIsIDEyNjM0LCAyNzIsIDEyNjM1LCAyNzIsIDEyNjM2LCAyNzIsIDEyNjM3LCAyNzIsIDEyNjM4LCAyNzIsIAotICAgIDEyNjM5LCAyNzIsIDEyNjQwLCAyNzIsIDEyNjQxLCAyNzIsIDEyNjQyLCAyNzIsIDEyNjQzLCAyNjQsIDE2MiwgMjY0LCAKLSAgICAxNjMsIDI2NCwgMTcyLCAyNjQsIDE3NSwgMjY0LCAxNjYsIDI2NCwgMTY1LCAyNjQsIDgzNjEsIDI3MiwgOTQ3NCwgMjcyLCAKLSAgICA4NTkyLCAyNzIsIDg1OTMsIDI3MiwgODU5NCwgMjcyLCA4NTk1LCAyNzIsIDk2MzIsIDI3MiwgOTY3NSwgNTEyLCA2OTc4NSwgCi0gICAgNjk4MTgsIDUxMiwgNjk3ODcsIDY5ODE4LCA1MTIsIDY5Nzk3LCA2OTgxOCwgNTEyLCAxMTkxMjcsIDExOTE0MSwgNTEyLCAKLSAgICAxMTkxMjgsIDExOTE0MSwgNTEyLCAxMTkxMzUsIDExOTE1MCwgNTEyLCAxMTkxMzUsIDExOTE1MSwgNTEyLCAxMTkxMzUsIAotICAgIDExOTE1MiwgNTEyLCAxMTkxMzUsIDExOTE1MywgNTEyLCAxMTkxMzUsIDExOTE1NCwgNTEyLCAxMTkyMjUsIDExOTE0MSwgCi0gICAgNTEyLCAxMTkyMjYsIDExOTE0MSwgNTEyLCAxMTkyMjcsIDExOTE1MCwgNTEyLCAxMTkyMjgsIDExOTE1MCwgNTEyLCAKLSAgICAxMTkyMjcsIDExOTE1MSwgNTEyLCAxMTkyMjgsIDExOTE1MSwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgCi0gICAgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgCi0gICAgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgCi0gICAgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgCi0gICAgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgMjYyLCAKLSAgICAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgCi0gICAgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIAotICAgIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDY5LCAKLSAgICAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAKLSAgICAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAKLSAgICAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAKLSAgICAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgCisgICAgMjYwODUsIDc3OCwgMTAzLCA5NywgMTA4LCAyNTksIDQyODYzLCAyNTksIDI5NCwgMjU5LCAzMzksIDI1NiwgMzU5MTIsIAorICAgIDI1NiwgMjYzNTYsIDI1NiwgMzY1NTQsIDI1NiwgMzYwNDAsIDI1NiwgMjgzNjksIDI1NiwgMjAwMTgsIDI1NiwgMjE0NzcsIAorICAgIDI1NiwgNDA4NjAsIDI1NiwgNDA4NjAsIDI1NiwgMjI4NjUsIDI1NiwgMzczMjksIDI1NiwgMjE4OTUsIDI1NiwgMjI4NTYsIAorICAgIDI1NiwgMjUwNzgsIDI1NiwgMzAzMTMsIDI1NiwgMzI2NDUsIDI1NiwgMzQzNjcsIDI1NiwgMzQ3NDYsIDI1NiwgMzUwNjQsIAorICAgIDI1NiwgMzcwMDcsIDI1NiwgMjcxMzgsIDI1NiwgMjc5MzEsIDI1NiwgMjg4ODksIDI1NiwgMjk2NjIsIDI1NiwgMzM4NTMsIAorICAgIDI1NiwgMzcyMjYsIDI1NiwgMzk0MDksIDI1NiwgMjAwOTgsIDI1NiwgMjEzNjUsIDI1NiwgMjczOTYsIDI1NiwgMjkyMTEsIAorICAgIDI1NiwgMzQzNDksIDI1NiwgNDA0NzgsIDI1NiwgMjM4ODgsIDI1NiwgMjg2NTEsIDI1NiwgMzQyNTMsIDI1NiwgMzUxNzIsIAorICAgIDI1NiwgMjUyODksIDI1NiwgMzMyNDAsIDI1NiwgMzQ4NDcsIDI1NiwgMjQyNjYsIDI1NiwgMjYzOTEsIDI1NiwgMjgwMTAsIAorICAgIDI1NiwgMjk0MzYsIDI1NiwgMzcwNzAsIDI1NiwgMjAzNTgsIDI1NiwgMjA5MTksIDI1NiwgMjEyMTQsIDI1NiwgMjU3OTYsIAorICAgIDI1NiwgMjczNDcsIDI1NiwgMjkyMDAsIDI1NiwgMzA0MzksIDI1NiwgMzI3NjksIDI1NiwgMzQzMTAsIDI1NiwgMzQzOTYsIAorICAgIDI1NiwgMzYzMzUsIDI1NiwgMzg3MDYsIDI1NiwgMzk3OTEsIDI1NiwgNDA0NDIsIDI1NiwgMzA4NjAsIDI1NiwgMzExMDMsIAorICAgIDI1NiwgMzIxNjAsIDI1NiwgMzM3MzcsIDI1NiwgMzc2MzYsIDI1NiwgNDA1NzUsIDI1NiwgMzU1NDIsIDI1NiwgMjI3NTEsIAorICAgIDI1NiwgMjQzMjQsIDI1NiwgMzE4NDAsIDI1NiwgMzI4OTQsIDI1NiwgMjkyODIsIDI1NiwgMzA5MjIsIDI1NiwgMzYwMzQsIAorICAgIDI1NiwgMzg2NDcsIDI1NiwgMjI3NDQsIDI1NiwgMjM2NTAsIDI1NiwgMjcxNTUsIDI1NiwgMjgxMjIsIDI1NiwgMjg0MzEsIAorICAgIDI1NiwgMzIwNDcsIDI1NiwgMzIzMTEsIDI1NiwgMzg0NzUsIDI1NiwgMjEyMDIsIDI1NiwgMzI5MDcsIDI1NiwgMjA5NTYsIAorICAgIDI1NiwgMjA5NDAsIDI1NiwgMzEyNjAsIDI1NiwgMzIxOTAsIDI1NiwgMzM3NzcsIDI1NiwgMzg1MTcsIDI1NiwgMzU3MTIsIAorICAgIDI1NiwgMjUyOTUsIDI1NiwgMjcxMzgsIDI1NiwgMzU1ODIsIDI1NiwgMjAwMjUsIDI1NiwgMjM1MjcsIDI1NiwgMjQ1OTQsIAorICAgIDI1NiwgMjk1NzUsIDI1NiwgMzAwNjQsIDI1NiwgMjEyNzEsIDI1NiwgMzA5NzEsIDI1NiwgMjA0MTUsIDI1NiwgMjQ0ODksIAorICAgIDI1NiwgMTk5ODEsIDI1NiwgMjc4NTIsIDI1NiwgMjU5NzYsIDI1NiwgMzIwMzQsIDI1NiwgMjE0NDMsIDI1NiwgMjI2MjIsIAorICAgIDI1NiwgMzA0NjUsIDI1NiwgMzM4NjUsIDI1NiwgMzU0OTgsIDI1NiwgMjc1NzgsIDI1NiwgMzY3ODQsIDI1NiwgMjc3ODQsIAorICAgIDI1NiwgMjUzNDIsIDI1NiwgMzM1MDksIDI1NiwgMjU1MDQsIDI1NiwgMzAwNTMsIDI1NiwgMjAxNDIsIDI1NiwgMjA4NDEsIAorICAgIDI1NiwgMjA5MzcsIDI1NiwgMjY3NTMsIDI1NiwgMzE5NzUsIDI1NiwgMzMzOTEsIDI1NiwgMzU1MzgsIDI1NiwgMzczMjcsIAorICAgIDI1NiwgMjEyMzcsIDI1NiwgMjE1NzAsIDI1NiwgMjI4OTksIDI1NiwgMjQzMDAsIDI1NiwgMjYwNTMsIDI1NiwgMjg2NzAsIAorICAgIDI1NiwgMzEwMTgsIDI1NiwgMzgzMTcsIDI1NiwgMzk1MzAsIDI1NiwgNDA1OTksIDI1NiwgNDA2NTQsIDI1NiwgMjExNDcsIAorICAgIDI1NiwgMjYzMTAsIDI1NiwgMjc1MTEsIDI1NiwgMzY3MDYsIDI1NiwgMjQxODAsIDI1NiwgMjQ5NzYsIDI1NiwgMjUwODgsIAorICAgIDI1NiwgMjU3NTQsIDI1NiwgMjg0NTEsIDI1NiwgMjkwMDEsIDI1NiwgMjk4MzMsIDI1NiwgMzExNzgsIDI1NiwgMzIyNDQsIAorICAgIDI1NiwgMzI4NzksIDI1NiwgMzY2NDYsIDI1NiwgMzQwMzAsIDI1NiwgMzY4OTksIDI1NiwgMzc3MDYsIDI1NiwgMjEwMTUsIAorICAgIDI1NiwgMjExNTUsIDI1NiwgMjE2OTMsIDI1NiwgMjg4NzIsIDI1NiwgMzUwMTAsIDI1NiwgMzU0OTgsIDI1NiwgMjQyNjUsIAorICAgIDI1NiwgMjQ1NjUsIDI1NiwgMjU0NjcsIDI1NiwgMjc1NjYsIDI1NiwgMzE4MDYsIDI1NiwgMjk1NTcsIDI1NiwgMjAxOTYsIAorICAgIDI1NiwgMjIyNjUsIDI1NiwgMjM1MjcsIDI1NiwgMjM5OTQsIDI1NiwgMjQ2MDQsIDI1NiwgMjk2MTgsIDI1NiwgMjk4MDEsIAorICAgIDI1NiwgMzI2NjYsIDI1NiwgMzI4MzgsIDI1NiwgMzc0MjgsIDI1NiwgMzg2NDYsIDI1NiwgMzg3MjgsIDI1NiwgMzg5MzYsIAorICAgIDI1NiwgMjAzNjMsIDI1NiwgMzExNTAsIDI1NiwgMzczMDAsIDI1NiwgMzg1ODQsIDI1NiwgMjQ4MDEsIDI1NiwgMjAxMDIsIAorICAgIDI1NiwgMjA2OTgsIDI1NiwgMjM1MzQsIDI1NiwgMjM2MTUsIDI1NiwgMjYwMDksIDI1NiwgMjcxMzgsIDI1NiwgMjkxMzQsIAorICAgIDI1NiwgMzAyNzQsIDI1NiwgMzQwNDQsIDI1NiwgMzY5ODgsIDI1NiwgNDA4NDUsIDI1NiwgMjYyNDgsIDI1NiwgMzg0NDYsIAorICAgIDI1NiwgMjExMjksIDI1NiwgMjY0OTEsIDI1NiwgMjY2MTEsIDI1NiwgMjc5NjksIDI1NiwgMjgzMTYsIDI1NiwgMjk3MDUsIAorICAgIDI1NiwgMzAwNDEsIDI1NiwgMzA4MjcsIDI1NiwgMzIwMTYsIDI1NiwgMzkwMDYsIDI1NiwgMjA4NDUsIDI1NiwgMjUxMzQsIAorICAgIDI1NiwgMzg1MjAsIDI1NiwgMjA1MjMsIDI1NiwgMjM4MzMsIDI1NiwgMjgxMzgsIDI1NiwgMzY2NTAsIDI1NiwgMjQ0NTksIAorICAgIDI1NiwgMjQ5MDAsIDI1NiwgMjY2NDcsIDI1NiwgMjk1NzUsIDI1NiwgMzg1MzQsIDI1NiwgMjEwMzMsIDI1NiwgMjE1MTksIAorICAgIDI1NiwgMjM2NTMsIDI1NiwgMjYxMzEsIDI1NiwgMjY0NDYsIDI1NiwgMjY3OTIsIDI1NiwgMjc4NzcsIDI1NiwgMjk3MDIsIAorICAgIDI1NiwgMzAxNzgsIDI1NiwgMzI2MzMsIDI1NiwgMzUwMjMsIDI1NiwgMzUwNDEsIDI1NiwgMzczMjQsIDI1NiwgMzg2MjYsIAorICAgIDI1NiwgMjEzMTEsIDI1NiwgMjgzNDYsIDI1NiwgMjE1MzMsIDI1NiwgMjkxMzYsIDI1NiwgMjk4NDgsIDI1NiwgMzQyOTgsIAorICAgIDI1NiwgMzg1NjMsIDI1NiwgNDAwMjMsIDI1NiwgNDA2MDcsIDI1NiwgMjY1MTksIDI1NiwgMjgxMDcsIDI1NiwgMzMyNTYsIAorICAgIDI1NiwgMzE0MzUsIDI1NiwgMzE1MjAsIDI1NiwgMzE4OTAsIDI1NiwgMjkzNzYsIDI1NiwgMjg4MjUsIDI1NiwgMzU2NzIsIAorICAgIDI1NiwgMjAxNjAsIDI1NiwgMzM1OTAsIDI1NiwgMjEwNTAsIDI1NiwgMjA5OTksIDI1NiwgMjQyMzAsIDI1NiwgMjUyOTksIAorICAgIDI1NiwgMzE5NTgsIDI1NiwgMjM0MjksIDI1NiwgMjc5MzQsIDI1NiwgMjYyOTIsIDI1NiwgMzY2NjcsIDI1NiwgMzQ4OTIsIAorICAgIDI1NiwgMzg0NzcsIDI1NiwgMzUyMTEsIDI1NiwgMjQyNzUsIDI1NiwgMjA4MDAsIDI1NiwgMjE5NTIsIDI1NiwgMjI2MTgsIAorICAgIDI1NiwgMjYyMjgsIDI1NiwgMjA5NTgsIDI1NiwgMjk0ODIsIDI1NiwgMzA0MTAsIDI1NiwgMzEwMzYsIDI1NiwgMzEwNzAsIAorICAgIDI1NiwgMzEwNzcsIDI1NiwgMzExMTksIDI1NiwgMzg3NDIsIDI1NiwgMzE5MzQsIDI1NiwgMzI3MDEsIDI1NiwgMzQzMjIsIAorICAgIDI1NiwgMzU1NzYsIDI1NiwgMzY5MjAsIDI1NiwgMzcxMTcsIDI1NiwgMzkxNTEsIDI1NiwgMzkxNjQsIDI1NiwgMzkyMDgsIAorICAgIDI1NiwgNDAzNzIsIDI1NiwgMzcwODYsIDI1NiwgMzg1ODMsIDI1NiwgMjAzOTgsIDI1NiwgMjA3MTEsIDI1NiwgMjA4MTMsIAorICAgIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgMjEzMjksIDI1NiwgMjE5MTcsIDI1NiwgMjIwMjIsIDI1NiwgMjIxMjAsIAorICAgIDI1NiwgMjI1OTIsIDI1NiwgMjI2OTYsIDI1NiwgMjM2NTIsIDI1NiwgMjM2NjIsIDI1NiwgMjQ3MjQsIDI1NiwgMjQ5MzYsIAorICAgIDI1NiwgMjQ5NzQsIDI1NiwgMjUwNzQsIDI1NiwgMjU5MzUsIDI1NiwgMjYwODIsIDI1NiwgMjYyNTcsIDI1NiwgMjY3NTcsIAorICAgIDI1NiwgMjgwMjMsIDI1NiwgMjgxODYsIDI1NiwgMjg0NTAsIDI1NiwgMjkwMzgsIDI1NiwgMjkyMjcsIDI1NiwgMjk3MzAsIAorICAgIDI1NiwgMzA4NjUsIDI1NiwgMzEwMzgsIDI1NiwgMzEwNDksIDI1NiwgMzEwNDgsIDI1NiwgMzEwNTYsIDI1NiwgMzEwNjIsIAorICAgIDI1NiwgMzEwNjksIDI1NiwgMzExMTcsIDI1NiwgMzExMTgsIDI1NiwgMzEyOTYsIDI1NiwgMzEzNjEsIDI1NiwgMzE2ODAsIAorICAgIDI1NiwgMzIyNDQsIDI1NiwgMzIyNjUsIDI1NiwgMzIzMjEsIDI1NiwgMzI2MjYsIDI1NiwgMzI3NzMsIDI1NiwgMzMyNjEsIAorICAgIDI1NiwgMzM0MDEsIDI1NiwgMzM0MDEsIDI1NiwgMzM4NzksIDI1NiwgMzUwODgsIDI1NiwgMzUyMjIsIDI1NiwgMzU1ODUsIAorICAgIDI1NiwgMzU2NDEsIDI1NiwgMzYwNTEsIDI1NiwgMzYxMDQsIDI1NiwgMzY3OTAsIDI1NiwgMzY5MjAsIDI1NiwgMzg2MjcsIAorICAgIDI1NiwgMzg5MTEsIDI1NiwgMzg5NzEsIDI1NiwgMjQ2OTMsIDI1NiwgMTQ4MjA2LCAyNTYsIDMzMzA0LCAyNTYsIDIwMDA2LCAKKyAgICAyNTYsIDIwOTE3LCAyNTYsIDIwODQwLCAyNTYsIDIwMzUyLCAyNTYsIDIwODA1LCAyNTYsIDIwODY0LCAyNTYsIDIxMTkxLCAKKyAgICAyNTYsIDIxMjQyLCAyNTYsIDIxOTE3LCAyNTYsIDIxODQ1LCAyNTYsIDIxOTEzLCAyNTYsIDIxOTg2LCAyNTYsIDIyNjE4LCAKKyAgICAyNTYsIDIyNzA3LCAyNTYsIDIyODUyLCAyNTYsIDIyODY4LCAyNTYsIDIzMTM4LCAyNTYsIDIzMzM2LCAyNTYsIDI0Mjc0LCAKKyAgICAyNTYsIDI0MjgxLCAyNTYsIDI0NDI1LCAyNTYsIDI0NDkzLCAyNTYsIDI0NzkyLCAyNTYsIDI0OTEwLCAyNTYsIDI0ODQwLCAKKyAgICAyNTYsIDI0OTc0LCAyNTYsIDI0OTI4LCAyNTYsIDI1MDc0LCAyNTYsIDI1MTQwLCAyNTYsIDI1NTQwLCAyNTYsIDI1NjI4LCAKKyAgICAyNTYsIDI1NjgyLCAyNTYsIDI1OTQyLCAyNTYsIDI2MjI4LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDU0LCAKKyAgICAyNTYsIDI3NTEzLCAyNTYsIDI3NTc4LCAyNTYsIDI3OTY5LCAyNTYsIDI4Mzc5LCAyNTYsIDI4MzYzLCAyNTYsIDI4NDUwLCAKKyAgICAyNTYsIDI4NzAyLCAyNTYsIDI5MDM4LCAyNTYsIDMwNjMxLCAyNTYsIDI5MjM3LCAyNTYsIDI5MzU5LCAyNTYsIDI5NDgyLCAKKyAgICAyNTYsIDI5ODA5LCAyNTYsIDI5OTU4LCAyNTYsIDMwMDExLCAyNTYsIDMwMjM3LCAyNTYsIDMwMjM5LCAyNTYsIDMwNDEwLCAKKyAgICAyNTYsIDMwNDI3LCAyNTYsIDMwNDUyLCAyNTYsIDMwNTM4LCAyNTYsIDMwNTI4LCAyNTYsIDMwOTI0LCAyNTYsIDMxNDA5LCAKKyAgICAyNTYsIDMxNjgwLCAyNTYsIDMxODY3LCAyNTYsIDMyMDkxLCAyNTYsIDMyMjQ0LCAyNTYsIDMyNTc0LCAyNTYsIDMyNzczLCAKKyAgICAyNTYsIDMzNjE4LCAyNTYsIDMzNzc1LCAyNTYsIDM0NjgxLCAyNTYsIDM1MTM3LCAyNTYsIDM1MjA2LCAyNTYsIDM1MjIyLCAKKyAgICAyNTYsIDM1NTE5LCAyNTYsIDM1NTc2LCAyNTYsIDM1NTMxLCAyNTYsIDM1NTg1LCAyNTYsIDM1NTgyLCAyNTYsIDM1NTY1LCAKKyAgICAyNTYsIDM1NjQxLCAyNTYsIDM1NzIyLCAyNTYsIDM2MTA0LCAyNTYsIDM2NjY0LCAyNTYsIDM2OTc4LCAyNTYsIDM3MjczLCAKKyAgICAyNTYsIDM3NDk0LCAyNTYsIDM4NTI0LCAyNTYsIDM4NjI3LCAyNTYsIDM4NzQyLCAyNTYsIDM4ODc1LCAyNTYsIDM4OTExLCAKKyAgICAyNTYsIDM4OTIzLCAyNTYsIDM4OTcxLCAyNTYsIDM5Njk4LCAyNTYsIDQwODYwLCAyNTYsIDE0MTM4NiwgMjU2LCAxNDEzODAsIAorICAgIDI1NiwgMTQ0MzQxLCAyNTYsIDE1MjYxLCAyNTYsIDE2NDA4LCAyNTYsIDE2NDQxLCAyNTYsIDE1MjEzNywgMjU2LCAKKyAgICAxNTQ4MzIsIDI1NiwgMTYzNTM5LCAyNTYsIDQwNzcxLCAyNTYsIDQwODQ2LCA1MTQsIDEwMiwgMTAyLCA1MTQsIDEwMiwgCisgICAgMTA1LCA1MTQsIDEwMiwgMTA4LCA3NzAsIDEwMiwgMTAyLCAxMDUsIDc3MCwgMTAyLCAxMDIsIDEwOCwgNTE0LCAzODMsIAorICAgIDExNiwgNTE0LCAxMTUsIDExNiwgNTE0LCAxMzk2LCAxMzk4LCA1MTQsIDEzOTYsIDEzODEsIDUxNCwgMTM5NiwgMTM4NywgCisgICAgNTE0LCAxNDA2LCAxMzk4LCA1MTQsIDEzOTYsIDEzODksIDUxMiwgMTQ5NywgMTQ2MCwgNTEyLCAxNTIyLCAxNDYzLCAyNjIsIAorICAgIDE1MDYsIDI2MiwgMTQ4OCwgMjYyLCAxNDkxLCAyNjIsIDE0OTIsIDI2MiwgMTQ5OSwgMjYyLCAxNTAwLCAyNjIsIDE1MDEsIAorICAgIDI2MiwgMTUxMiwgMjYyLCAxNTE0LCAyNjIsIDQzLCA1MTIsIDE1MTMsIDE0NzMsIDUxMiwgMTUxMywgMTQ3NCwgNTEyLCAKKyAgICA2NDMyOSwgMTQ3MywgNTEyLCA2NDMyOSwgMTQ3NCwgNTEyLCAxNDg4LCAxNDYzLCA1MTIsIDE0ODgsIDE0NjQsIDUxMiwgCisgICAgMTQ4OCwgMTQ2OCwgNTEyLCAxNDg5LCAxNDY4LCA1MTIsIDE0OTAsIDE0NjgsIDUxMiwgMTQ5MSwgMTQ2OCwgNTEyLCAxNDkyLCAKKyAgICAxNDY4LCA1MTIsIDE0OTMsIDE0NjgsIDUxMiwgMTQ5NCwgMTQ2OCwgNTEyLCAxNDk2LCAxNDY4LCA1MTIsIDE0OTcsIDE0NjgsIAorICAgIDUxMiwgMTQ5OCwgMTQ2OCwgNTEyLCAxNDk5LCAxNDY4LCA1MTIsIDE1MDAsIDE0NjgsIDUxMiwgMTUwMiwgMTQ2OCwgNTEyLCAKKyAgICAxNTA0LCAxNDY4LCA1MTIsIDE1MDUsIDE0NjgsIDUxMiwgMTUwNywgMTQ2OCwgNTEyLCAxNTA4LCAxNDY4LCA1MTIsIDE1MTAsIAorICAgIDE0NjgsIDUxMiwgMTUxMSwgMTQ2OCwgNTEyLCAxNTEyLCAxNDY4LCA1MTIsIDE1MTMsIDE0NjgsIDUxMiwgMTUxNCwgMTQ2OCwgCisgICAgNTEyLCAxNDkzLCAxNDY1LCA1MTIsIDE0ODksIDE0NzEsIDUxMiwgMTQ5OSwgMTQ3MSwgNTEyLCAxNTA4LCAxNDcxLCA1MTQsIAorICAgIDE0ODgsIDE1MDAsIDI2NywgMTY0OSwgMjY4LCAxNjQ5LCAyNjcsIDE2NTksIDI2OCwgMTY1OSwgMjY5LCAxNjU5LCAyNzAsIAorICAgIDE2NTksIDI2NywgMTY2MiwgMjY4LCAxNjYyLCAyNjksIDE2NjIsIDI3MCwgMTY2MiwgMjY3LCAxNjY0LCAyNjgsIDE2NjQsIAorICAgIDI2OSwgMTY2NCwgMjcwLCAxNjY0LCAyNjcsIDE2NTgsIDI2OCwgMTY1OCwgMjY5LCAxNjU4LCAyNzAsIDE2NTgsIDI2NywgCisgICAgMTY2MywgMjY4LCAxNjYzLCAyNjksIDE2NjMsIDI3MCwgMTY2MywgMjY3LCAxNjU3LCAyNjgsIDE2NTcsIDI2OSwgMTY1NywgCisgICAgMjcwLCAxNjU3LCAyNjcsIDE3MDAsIDI2OCwgMTcwMCwgMjY5LCAxNzAwLCAyNzAsIDE3MDAsIDI2NywgMTcwMiwgMjY4LCAKKyAgICAxNzAyLCAyNjksIDE3MDIsIDI3MCwgMTcwMiwgMjY3LCAxNjY4LCAyNjgsIDE2NjgsIDI2OSwgMTY2OCwgMjcwLCAxNjY4LCAKKyAgICAyNjcsIDE2NjcsIDI2OCwgMTY2NywgMjY5LCAxNjY3LCAyNzAsIDE2NjcsIDI2NywgMTY3MCwgMjY4LCAxNjcwLCAyNjksIAorICAgIDE2NzAsIDI3MCwgMTY3MCwgMjY3LCAxNjcxLCAyNjgsIDE2NzEsIDI2OSwgMTY3MSwgMjcwLCAxNjcxLCAyNjcsIDE2NzcsIAorICAgIDI2OCwgMTY3NywgMjY3LCAxNjc2LCAyNjgsIDE2NzYsIDI2NywgMTY3OCwgMjY4LCAxNjc4LCAyNjcsIDE2NzIsIDI2OCwgCisgICAgMTY3MiwgMjY3LCAxNjg4LCAyNjgsIDE2ODgsIDI2NywgMTY4MSwgMjY4LCAxNjgxLCAyNjcsIDE3MDUsIDI2OCwgMTcwNSwgCisgICAgMjY5LCAxNzA1LCAyNzAsIDE3MDUsIDI2NywgMTcxMSwgMjY4LCAxNzExLCAyNjksIDE3MTEsIDI3MCwgMTcxMSwgMjY3LCAKKyAgICAxNzE1LCAyNjgsIDE3MTUsIDI2OSwgMTcxNSwgMjcwLCAxNzE1LCAyNjcsIDE3MTMsIDI2OCwgMTcxMywgMjY5LCAxNzEzLCAKKyAgICAyNzAsIDE3MTMsIDI2NywgMTcyMiwgMjY4LCAxNzIyLCAyNjcsIDE3MjMsIDI2OCwgMTcyMywgMjY5LCAxNzIzLCAyNzAsIAorICAgIDE3MjMsIDI2NywgMTcyOCwgMjY4LCAxNzI4LCAyNjcsIDE3MjksIDI2OCwgMTcyOSwgMjY5LCAxNzI5LCAyNzAsIDE3MjksIAorICAgIDI2NywgMTcyNiwgMjY4LCAxNzI2LCAyNjksIDE3MjYsIDI3MCwgMTcyNiwgMjY3LCAxNzQ2LCAyNjgsIDE3NDYsIDI2NywgCisgICAgMTc0NywgMjY4LCAxNzQ3LCAyNjcsIDE3MDksIDI2OCwgMTcwOSwgMjY5LCAxNzA5LCAyNzAsIDE3MDksIDI2NywgMTczNSwgCisgICAgMjY4LCAxNzM1LCAyNjcsIDE3MzQsIDI2OCwgMTczNCwgMjY3LCAxNzM2LCAyNjgsIDE3MzYsIDI2NywgMTY1NSwgMjY3LCAKKyAgICAxNzM5LCAyNjgsIDE3MzksIDI2NywgMTczMywgMjY4LCAxNzMzLCAyNjcsIDE3MzcsIDI2OCwgMTczNywgMjY3LCAxNzQ0LCAKKyAgICAyNjgsIDE3NDQsIDI2OSwgMTc0NCwgMjcwLCAxNzQ0LCAyNjksIDE2MDksIDI3MCwgMTYwOSwgNTIzLCAxNTc0LCAxNTc1LCAKKyAgICA1MjQsIDE1NzQsIDE1NzUsIDUyMywgMTU3NCwgMTc0OSwgNTI0LCAxNTc0LCAxNzQ5LCA1MjMsIDE1NzQsIDE2MDgsIDUyNCwgCisgICAgMTU3NCwgMTYwOCwgNTIzLCAxNTc0LCAxNzM1LCA1MjQsIDE1NzQsIDE3MzUsIDUyMywgMTU3NCwgMTczNCwgNTI0LCAxNTc0LCAKKyAgICAxNzM0LCA1MjMsIDE1NzQsIDE3MzYsIDUyNCwgMTU3NCwgMTczNiwgNTIzLCAxNTc0LCAxNzQ0LCA1MjQsIDE1NzQsIDE3NDQsIAorICAgIDUyNSwgMTU3NCwgMTc0NCwgNTIzLCAxNTc0LCAxNjA5LCA1MjQsIDE1NzQsIDE2MDksIDUyNSwgMTU3NCwgMTYwOSwgMjY3LCAKKyAgICAxNzQwLCAyNjgsIDE3NDAsIDI2OSwgMTc0MCwgMjcwLCAxNzQwLCA1MjMsIDE1NzQsIDE1ODAsIDUyMywgMTU3NCwgMTU4MSwgCisgICAgNTIzLCAxNTc0LCAxNjA1LCA1MjMsIDE1NzQsIDE2MDksIDUyMywgMTU3NCwgMTYxMCwgNTIzLCAxNTc2LCAxNTgwLCA1MjMsIAorICAgIDE1NzYsIDE1ODEsIDUyMywgMTU3NiwgMTU4MiwgNTIzLCAxNTc2LCAxNjA1LCA1MjMsIDE1NzYsIDE2MDksIDUyMywgMTU3NiwgCisgICAgMTYxMCwgNTIzLCAxNTc4LCAxNTgwLCA1MjMsIDE1NzgsIDE1ODEsIDUyMywgMTU3OCwgMTU4MiwgNTIzLCAxNTc4LCAxNjA1LCAKKyAgICA1MjMsIDE1NzgsIDE2MDksIDUyMywgMTU3OCwgMTYxMCwgNTIzLCAxNTc5LCAxNTgwLCA1MjMsIDE1NzksIDE2MDUsIDUyMywgCisgICAgMTU3OSwgMTYwOSwgNTIzLCAxNTc5LCAxNjEwLCA1MjMsIDE1ODAsIDE1ODEsIDUyMywgMTU4MCwgMTYwNSwgNTIzLCAxNTgxLCAKKyAgICAxNTgwLCA1MjMsIDE1ODEsIDE2MDUsIDUyMywgMTU4MiwgMTU4MCwgNTIzLCAxNTgyLCAxNTgxLCA1MjMsIDE1ODIsIDE2MDUsIAorICAgIDUyMywgMTU4NywgMTU4MCwgNTIzLCAxNTg3LCAxNTgxLCA1MjMsIDE1ODcsIDE1ODIsIDUyMywgMTU4NywgMTYwNSwgNTIzLCAKKyAgICAxNTg5LCAxNTgxLCA1MjMsIDE1ODksIDE2MDUsIDUyMywgMTU5MCwgMTU4MCwgNTIzLCAxNTkwLCAxNTgxLCA1MjMsIDE1OTAsIAorICAgIDE1ODIsIDUyMywgMTU5MCwgMTYwNSwgNTIzLCAxNTkxLCAxNTgxLCA1MjMsIDE1OTEsIDE2MDUsIDUyMywgMTU5MiwgMTYwNSwgCisgICAgNTIzLCAxNTkzLCAxNTgwLCA1MjMsIDE1OTMsIDE2MDUsIDUyMywgMTU5NCwgMTU4MCwgNTIzLCAxNTk0LCAxNjA1LCA1MjMsIAorICAgIDE2MDEsIDE1ODAsIDUyMywgMTYwMSwgMTU4MSwgNTIzLCAxNjAxLCAxNTgyLCA1MjMsIDE2MDEsIDE2MDUsIDUyMywgMTYwMSwgCisgICAgMTYwOSwgNTIzLCAxNjAxLCAxNjEwLCA1MjMsIDE2MDIsIDE1ODEsIDUyMywgMTYwMiwgMTYwNSwgNTIzLCAxNjAyLCAxNjA5LCAKKyAgICA1MjMsIDE2MDIsIDE2MTAsIDUyMywgMTYwMywgMTU3NSwgNTIzLCAxNjAzLCAxNTgwLCA1MjMsIDE2MDMsIDE1ODEsIDUyMywgCisgICAgMTYwMywgMTU4MiwgNTIzLCAxNjAzLCAxNjA0LCA1MjMsIDE2MDMsIDE2MDUsIDUyMywgMTYwMywgMTYwOSwgNTIzLCAxNjAzLCAKKyAgICAxNjEwLCA1MjMsIDE2MDQsIDE1ODAsIDUyMywgMTYwNCwgMTU4MSwgNTIzLCAxNjA0LCAxNTgyLCA1MjMsIDE2MDQsIDE2MDUsIAorICAgIDUyMywgMTYwNCwgMTYwOSwgNTIzLCAxNjA0LCAxNjEwLCA1MjMsIDE2MDUsIDE1ODAsIDUyMywgMTYwNSwgMTU4MSwgNTIzLCAKKyAgICAxNjA1LCAxNTgyLCA1MjMsIDE2MDUsIDE2MDUsIDUyMywgMTYwNSwgMTYwOSwgNTIzLCAxNjA1LCAxNjEwLCA1MjMsIDE2MDYsIAorICAgIDE1ODAsIDUyMywgMTYwNiwgMTU4MSwgNTIzLCAxNjA2LCAxNTgyLCA1MjMsIDE2MDYsIDE2MDUsIDUyMywgMTYwNiwgMTYwOSwgCisgICAgNTIzLCAxNjA2LCAxNjEwLCA1MjMsIDE2MDcsIDE1ODAsIDUyMywgMTYwNywgMTYwNSwgNTIzLCAxNjA3LCAxNjA5LCA1MjMsIAorICAgIDE2MDcsIDE2MTAsIDUyMywgMTYxMCwgMTU4MCwgNTIzLCAxNjEwLCAxNTgxLCA1MjMsIDE2MTAsIDE1ODIsIDUyMywgMTYxMCwgCisgICAgMTYwNSwgNTIzLCAxNjEwLCAxNjA5LCA1MjMsIDE2MTAsIDE2MTAsIDUyMywgMTU4NCwgMTY0OCwgNTIzLCAxNTg1LCAxNjQ4LCAKKyAgICA1MjMsIDE2MDksIDE2NDgsIDc3OSwgMzIsIDE2MTIsIDE2MTcsIDc3OSwgMzIsIDE2MTMsIDE2MTcsIDc3OSwgMzIsIDE2MTQsIAorICAgIDE2MTcsIDc3OSwgMzIsIDE2MTUsIDE2MTcsIDc3OSwgMzIsIDE2MTYsIDE2MTcsIDc3OSwgMzIsIDE2MTcsIDE2NDgsIDUyNCwgCisgICAgMTU3NCwgMTU4NSwgNTI0LCAxNTc0LCAxNTg2LCA1MjQsIDE1NzQsIDE2MDUsIDUyNCwgMTU3NCwgMTYwNiwgNTI0LCAxNTc0LCAKKyAgICAxNjA5LCA1MjQsIDE1NzQsIDE2MTAsIDUyNCwgMTU3NiwgMTU4NSwgNTI0LCAxNTc2LCAxNTg2LCA1MjQsIDE1NzYsIDE2MDUsIAorICAgIDUyNCwgMTU3NiwgMTYwNiwgNTI0LCAxNTc2LCAxNjA5LCA1MjQsIDE1NzYsIDE2MTAsIDUyNCwgMTU3OCwgMTU4NSwgNTI0LCAKKyAgICAxNTc4LCAxNTg2LCA1MjQsIDE1NzgsIDE2MDUsIDUyNCwgMTU3OCwgMTYwNiwgNTI0LCAxNTc4LCAxNjA5LCA1MjQsIDE1NzgsIAorICAgIDE2MTAsIDUyNCwgMTU3OSwgMTU4NSwgNTI0LCAxNTc5LCAxNTg2LCA1MjQsIDE1NzksIDE2MDUsIDUyNCwgMTU3OSwgMTYwNiwgCisgICAgNTI0LCAxNTc5LCAxNjA5LCA1MjQsIDE1NzksIDE2MTAsIDUyNCwgMTYwMSwgMTYwOSwgNTI0LCAxNjAxLCAxNjEwLCA1MjQsIAorICAgIDE2MDIsIDE2MDksIDUyNCwgMTYwMiwgMTYxMCwgNTI0LCAxNjAzLCAxNTc1LCA1MjQsIDE2MDMsIDE2MDQsIDUyNCwgMTYwMywgCisgICAgMTYwNSwgNTI0LCAxNjAzLCAxNjA5LCA1MjQsIDE2MDMsIDE2MTAsIDUyNCwgMTYwNCwgMTYwNSwgNTI0LCAxNjA0LCAxNjA5LCAKKyAgICA1MjQsIDE2MDQsIDE2MTAsIDUyNCwgMTYwNSwgMTU3NSwgNTI0LCAxNjA1LCAxNjA1LCA1MjQsIDE2MDYsIDE1ODUsIDUyNCwgCisgICAgMTYwNiwgMTU4NiwgNTI0LCAxNjA2LCAxNjA1LCA1MjQsIDE2MDYsIDE2MDYsIDUyNCwgMTYwNiwgMTYwOSwgNTI0LCAxNjA2LCAKKyAgICAxNjEwLCA1MjQsIDE2MDksIDE2NDgsIDUyNCwgMTYxMCwgMTU4NSwgNTI0LCAxNjEwLCAxNTg2LCA1MjQsIDE2MTAsIDE2MDUsIAorICAgIDUyNCwgMTYxMCwgMTYwNiwgNTI0LCAxNjEwLCAxNjA5LCA1MjQsIDE2MTAsIDE2MTAsIDUyNSwgMTU3NCwgMTU4MCwgNTI1LCAKKyAgICAxNTc0LCAxNTgxLCA1MjUsIDE1NzQsIDE1ODIsIDUyNSwgMTU3NCwgMTYwNSwgNTI1LCAxNTc0LCAxNjA3LCA1MjUsIDE1NzYsIAorICAgIDE1ODAsIDUyNSwgMTU3NiwgMTU4MSwgNTI1LCAxNTc2LCAxNTgyLCA1MjUsIDE1NzYsIDE2MDUsIDUyNSwgMTU3NiwgMTYwNywgCisgICAgNTI1LCAxNTc4LCAxNTgwLCA1MjUsIDE1NzgsIDE1ODEsIDUyNSwgMTU3OCwgMTU4MiwgNTI1LCAxNTc4LCAxNjA1LCA1MjUsIAorICAgIDE1NzgsIDE2MDcsIDUyNSwgMTU3OSwgMTYwNSwgNTI1LCAxNTgwLCAxNTgxLCA1MjUsIDE1ODAsIDE2MDUsIDUyNSwgMTU4MSwgCisgICAgMTU4MCwgNTI1LCAxNTgxLCAxNjA1LCA1MjUsIDE1ODIsIDE1ODAsIDUyNSwgMTU4MiwgMTYwNSwgNTI1LCAxNTg3LCAxNTgwLCAKKyAgICA1MjUsIDE1ODcsIDE1ODEsIDUyNSwgMTU4NywgMTU4MiwgNTI1LCAxNTg3LCAxNjA1LCA1MjUsIDE1ODksIDE1ODEsIDUyNSwgCisgICAgMTU4OSwgMTU4MiwgNTI1LCAxNTg5LCAxNjA1LCA1MjUsIDE1OTAsIDE1ODAsIDUyNSwgMTU5MCwgMTU4MSwgNTI1LCAxNTkwLCAKKyAgICAxNTgyLCA1MjUsIDE1OTAsIDE2MDUsIDUyNSwgMTU5MSwgMTU4MSwgNTI1LCAxNTkyLCAxNjA1LCA1MjUsIDE1OTMsIDE1ODAsIAorICAgIDUyNSwgMTU5MywgMTYwNSwgNTI1LCAxNTk0LCAxNTgwLCA1MjUsIDE1OTQsIDE2MDUsIDUyNSwgMTYwMSwgMTU4MCwgNTI1LCAKKyAgICAxNjAxLCAxNTgxLCA1MjUsIDE2MDEsIDE1ODIsIDUyNSwgMTYwMSwgMTYwNSwgNTI1LCAxNjAyLCAxNTgxLCA1MjUsIDE2MDIsIAorICAgIDE2MDUsIDUyNSwgMTYwMywgMTU4MCwgNTI1LCAxNjAzLCAxNTgxLCA1MjUsIDE2MDMsIDE1ODIsIDUyNSwgMTYwMywgMTYwNCwgCisgICAgNTI1LCAxNjAzLCAxNjA1LCA1MjUsIDE2MDQsIDE1ODAsIDUyNSwgMTYwNCwgMTU4MSwgNTI1LCAxNjA0LCAxNTgyLCA1MjUsIAorICAgIDE2MDQsIDE2MDUsIDUyNSwgMTYwNCwgMTYwNywgNTI1LCAxNjA1LCAxNTgwLCA1MjUsIDE2MDUsIDE1ODEsIDUyNSwgMTYwNSwgCisgICAgMTU4MiwgNTI1LCAxNjA1LCAxNjA1LCA1MjUsIDE2MDYsIDE1ODAsIDUyNSwgMTYwNiwgMTU4MSwgNTI1LCAxNjA2LCAxNTgyLCAKKyAgICA1MjUsIDE2MDYsIDE2MDUsIDUyNSwgMTYwNiwgMTYwNywgNTI1LCAxNjA3LCAxNTgwLCA1MjUsIDE2MDcsIDE2MDUsIDUyNSwgCisgICAgMTYwNywgMTY0OCwgNTI1LCAxNjEwLCAxNTgwLCA1MjUsIDE2MTAsIDE1ODEsIDUyNSwgMTYxMCwgMTU4MiwgNTI1LCAxNjEwLCAKKyAgICAxNjA1LCA1MjUsIDE2MTAsIDE2MDcsIDUyNiwgMTU3NCwgMTYwNSwgNTI2LCAxNTc0LCAxNjA3LCA1MjYsIDE1NzYsIDE2MDUsIAorICAgIDUyNiwgMTU3NiwgMTYwNywgNTI2LCAxNTc4LCAxNjA1LCA1MjYsIDE1NzgsIDE2MDcsIDUyNiwgMTU3OSwgMTYwNSwgNTI2LCAKKyAgICAxNTc5LCAxNjA3LCA1MjYsIDE1ODcsIDE2MDUsIDUyNiwgMTU4NywgMTYwNywgNTI2LCAxNTg4LCAxNjA1LCA1MjYsIDE1ODgsIAorICAgIDE2MDcsIDUyNiwgMTYwMywgMTYwNCwgNTI2LCAxNjAzLCAxNjA1LCA1MjYsIDE2MDQsIDE2MDUsIDUyNiwgMTYwNiwgMTYwNSwgCisgICAgNTI2LCAxNjA2LCAxNjA3LCA1MjYsIDE2MTAsIDE2MDUsIDUyNiwgMTYxMCwgMTYwNywgNzgyLCAxNjAwLCAxNjE0LCAxNjE3LCAKKyAgICA3ODIsIDE2MDAsIDE2MTUsIDE2MTcsIDc4MiwgMTYwMCwgMTYxNiwgMTYxNywgNTIzLCAxNTkxLCAxNjA5LCA1MjMsIDE1OTEsIAorICAgIDE2MTAsIDUyMywgMTU5MywgMTYwOSwgNTIzLCAxNTkzLCAxNjEwLCA1MjMsIDE1OTQsIDE2MDksIDUyMywgMTU5NCwgMTYxMCwgCisgICAgNTIzLCAxNTg3LCAxNjA5LCA1MjMsIDE1ODcsIDE2MTAsIDUyMywgMTU4OCwgMTYwOSwgNTIzLCAxNTg4LCAxNjEwLCA1MjMsIAorICAgIDE1ODEsIDE2MDksIDUyMywgMTU4MSwgMTYxMCwgNTIzLCAxNTgwLCAxNjA5LCA1MjMsIDE1ODAsIDE2MTAsIDUyMywgMTU4MiwgCisgICAgMTYwOSwgNTIzLCAxNTgyLCAxNjEwLCA1MjMsIDE1ODksIDE2MDksIDUyMywgMTU4OSwgMTYxMCwgNTIzLCAxNTkwLCAxNjA5LCAKKyAgICA1MjMsIDE1OTAsIDE2MTAsIDUyMywgMTU4OCwgMTU4MCwgNTIzLCAxNTg4LCAxNTgxLCA1MjMsIDE1ODgsIDE1ODIsIDUyMywgCisgICAgMTU4OCwgMTYwNSwgNTIzLCAxNTg4LCAxNTg1LCA1MjMsIDE1ODcsIDE1ODUsIDUyMywgMTU4OSwgMTU4NSwgNTIzLCAxNTkwLCAKKyAgICAxNTg1LCA1MjQsIDE1OTEsIDE2MDksIDUyNCwgMTU5MSwgMTYxMCwgNTI0LCAxNTkzLCAxNjA5LCA1MjQsIDE1OTMsIDE2MTAsIAorICAgIDUyNCwgMTU5NCwgMTYwOSwgNTI0LCAxNTk0LCAxNjEwLCA1MjQsIDE1ODcsIDE2MDksIDUyNCwgMTU4NywgMTYxMCwgNTI0LCAKKyAgICAxNTg4LCAxNjA5LCA1MjQsIDE1ODgsIDE2MTAsIDUyNCwgMTU4MSwgMTYwOSwgNTI0LCAxNTgxLCAxNjEwLCA1MjQsIDE1ODAsIAorICAgIDE2MDksIDUyNCwgMTU4MCwgMTYxMCwgNTI0LCAxNTgyLCAxNjA5LCA1MjQsIDE1ODIsIDE2MTAsIDUyNCwgMTU4OSwgMTYwOSwgCisgICAgNTI0LCAxNTg5LCAxNjEwLCA1MjQsIDE1OTAsIDE2MDksIDUyNCwgMTU5MCwgMTYxMCwgNTI0LCAxNTg4LCAxNTgwLCA1MjQsIAorICAgIDE1ODgsIDE1ODEsIDUyNCwgMTU4OCwgMTU4MiwgNTI0LCAxNTg4LCAxNjA1LCA1MjQsIDE1ODgsIDE1ODUsIDUyNCwgMTU4NywgCisgICAgMTU4NSwgNTI0LCAxNTg5LCAxNTg1LCA1MjQsIDE1OTAsIDE1ODUsIDUyNSwgMTU4OCwgMTU4MCwgNTI1LCAxNTg4LCAxNTgxLCAKKyAgICA1MjUsIDE1ODgsIDE1ODIsIDUyNSwgMTU4OCwgMTYwNSwgNTI1LCAxNTg3LCAxNjA3LCA1MjUsIDE1ODgsIDE2MDcsIDUyNSwgCisgICAgMTU5MSwgMTYwNSwgNTI2LCAxNTg3LCAxNTgwLCA1MjYsIDE1ODcsIDE1ODEsIDUyNiwgMTU4NywgMTU4MiwgNTI2LCAxNTg4LCAKKyAgICAxNTgwLCA1MjYsIDE1ODgsIDE1ODEsIDUyNiwgMTU4OCwgMTU4MiwgNTI2LCAxNTkxLCAxNjA1LCA1MjYsIDE1OTIsIDE2MDUsIAorICAgIDUyNCwgMTU3NSwgMTYxMSwgNTIzLCAxNTc1LCAxNjExLCA3ODEsIDE1NzgsIDE1ODAsIDE2MDUsIDc4MCwgMTU3OCwgMTU4MSwgCisgICAgMTU4MCwgNzgxLCAxNTc4LCAxNTgxLCAxNTgwLCA3ODEsIDE1NzgsIDE1ODEsIDE2MDUsIDc4MSwgMTU3OCwgMTU4MiwgCisgICAgMTYwNSwgNzgxLCAxNTc4LCAxNjA1LCAxNTgwLCA3ODEsIDE1NzgsIDE2MDUsIDE1ODEsIDc4MSwgMTU3OCwgMTYwNSwgCisgICAgMTU4MiwgNzgwLCAxNTgwLCAxNjA1LCAxNTgxLCA3ODEsIDE1ODAsIDE2MDUsIDE1ODEsIDc4MCwgMTU4MSwgMTYwNSwgCisgICAgMTYxMCwgNzgwLCAxNTgxLCAxNjA1LCAxNjA5LCA3ODEsIDE1ODcsIDE1ODEsIDE1ODAsIDc4MSwgMTU4NywgMTU4MCwgCisgICAgMTU4MSwgNzgwLCAxNTg3LCAxNTgwLCAxNjA5LCA3ODAsIDE1ODcsIDE2MDUsIDE1ODEsIDc4MSwgMTU4NywgMTYwNSwgCisgICAgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAxNTgwLCA3ODAsIDE1ODcsIDE2MDUsIDE2MDUsIDc4MSwgMTU4NywgMTYwNSwgCisgICAgMTYwNSwgNzgwLCAxNTg5LCAxNTgxLCAxNTgxLCA3ODEsIDE1ODksIDE1ODEsIDE1ODEsIDc4MCwgMTU4OSwgMTYwNSwgCisgICAgMTYwNSwgNzgwLCAxNTg4LCAxNTgxLCAxNjA1LCA3ODEsIDE1ODgsIDE1ODEsIDE2MDUsIDc4MCwgMTU4OCwgMTU4MCwgCisgICAgMTYxMCwgNzgwLCAxNTg4LCAxNjA1LCAxNTgyLCA3ODEsIDE1ODgsIDE2MDUsIDE1ODIsIDc4MCwgMTU4OCwgMTYwNSwgCisgICAgMTYwNSwgNzgxLCAxNTg4LCAxNjA1LCAxNjA1LCA3ODAsIDE1OTAsIDE1ODEsIDE2MDksIDc4MCwgMTU5MCwgMTU4MiwgCisgICAgMTYwNSwgNzgxLCAxNTkwLCAxNTgyLCAxNjA1LCA3ODAsIDE1OTEsIDE2MDUsIDE1ODEsIDc4MSwgMTU5MSwgMTYwNSwgCisgICAgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAxNjA1LCA3ODAsIDE1OTEsIDE2MDUsIDE2MTAsIDc4MCwgMTU5MywgMTU4MCwgCisgICAgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAxNjA1LCA3ODEsIDE1OTMsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgCisgICAgMTYwOSwgNzgwLCAxNTk0LCAxNjA1LCAxNjA1LCA3ODAsIDE1OTQsIDE2MDUsIDE2MTAsIDc4MCwgMTU5NCwgMTYwNSwgCisgICAgMTYwOSwgNzgwLCAxNjAxLCAxNTgyLCAxNjA1LCA3ODEsIDE2MDEsIDE1ODIsIDE2MDUsIDc4MCwgMTYwMiwgMTYwNSwgCisgICAgMTU4MSwgNzgwLCAxNjAyLCAxNjA1LCAxNjA1LCA3ODAsIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MSwgCisgICAgMTYxMCwgNzgwLCAxNjA0LCAxNTgxLCAxNjA5LCA3ODEsIDE2MDQsIDE1ODAsIDE1ODAsIDc4MCwgMTYwNCwgMTU4MCwgCisgICAgMTU4MCwgNzgwLCAxNjA0LCAxNTgyLCAxNjA1LCA3ODEsIDE2MDQsIDE1ODIsIDE2MDUsIDc4MCwgMTYwNCwgMTYwNSwgCisgICAgMTU4MSwgNzgxLCAxNjA0LCAxNjA1LCAxNTgxLCA3ODEsIDE2MDUsIDE1ODEsIDE1ODAsIDc4MSwgMTYwNSwgMTU4MSwgCisgICAgMTYwNSwgNzgwLCAxNjA1LCAxNTgxLCAxNjEwLCA3ODEsIDE2MDUsIDE1ODAsIDE1ODEsIDc4MSwgMTYwNSwgMTU4MCwgCisgICAgMTYwNSwgNzgxLCAxNjA1LCAxNTgyLCAxNTgwLCA3ODEsIDE2MDUsIDE1ODIsIDE2MDUsIDc4MSwgMTYwNSwgMTU4MCwgCisgICAgMTU4MiwgNzgxLCAxNjA3LCAxNjA1LCAxNTgwLCA3ODEsIDE2MDcsIDE2MDUsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MSwgCisgICAgMTYwNSwgNzgwLCAxNjA2LCAxNTgxLCAxNjA5LCA3ODAsIDE2MDYsIDE1ODAsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MCwgCisgICAgMTYwNSwgNzgwLCAxNjA2LCAxNTgwLCAxNjA5LCA3ODAsIDE2MDYsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTYwNSwgCisgICAgMTYwOSwgNzgwLCAxNjEwLCAxNjA1LCAxNjA1LCA3ODEsIDE2MTAsIDE2MDUsIDE2MDUsIDc4MCwgMTU3NiwgMTU4MiwgCisgICAgMTYxMCwgNzgwLCAxNTc4LCAxNTgwLCAxNjEwLCA3ODAsIDE1NzgsIDE1ODAsIDE2MDksIDc4MCwgMTU3OCwgMTU4MiwgCisgICAgMTYxMCwgNzgwLCAxNTc4LCAxNTgyLCAxNjA5LCA3ODAsIDE1NzgsIDE2MDUsIDE2MTAsIDc4MCwgMTU3OCwgMTYwNSwgCisgICAgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAxNjEwLCA3ODAsIDE1ODAsIDE1ODEsIDE2MDksIDc4MCwgMTU4MCwgMTYwNSwgCisgICAgMTYwOSwgNzgwLCAxNTg3LCAxNTgyLCAxNjA5LCA3ODAsIDE1ODksIDE1ODEsIDE2MTAsIDc4MCwgMTU4OCwgMTU4MSwgCisgICAgMTYxMCwgNzgwLCAxNTkwLCAxNTgxLCAxNjEwLCA3ODAsIDE2MDQsIDE1ODAsIDE2MTAsIDc4MCwgMTYwNCwgMTYwNSwgCisgICAgMTYxMCwgNzgwLCAxNjEwLCAxNTgxLCAxNjEwLCA3ODAsIDE2MTAsIDE1ODAsIDE2MTAsIDc4MCwgMTYxMCwgMTYwNSwgCisgICAgMTYxMCwgNzgwLCAxNjA1LCAxNjA1LCAxNjEwLCA3ODAsIDE2MDIsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTU4MSwgCisgICAgMTYxMCwgNzgxLCAxNjAyLCAxNjA1LCAxNTgxLCA3ODEsIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgCisgICAgMTYxMCwgNzgwLCAxNjAzLCAxNjA1LCAxNjEwLCA3ODEsIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgMTYwNSwgMTU4MiwgCisgICAgMTYxMCwgNzgxLCAxNjA0LCAxNTgwLCAxNjA1LCA3ODAsIDE2MDMsIDE2MDUsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MCwgCisgICAgMTYwNSwgNzgwLCAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIDE1ODAsIDE1ODEsIDE2MTAsIDc4MCwgMTU4MSwgMTU4MCwgCisgICAgMTYxMCwgNzgwLCAxNjA1LCAxNTgwLCAxNjEwLCA3ODAsIDE2MDEsIDE2MDUsIDE2MTAsIDc4MCwgMTU3NiwgMTU4MSwgCisgICAgMTYxMCwgNzgxLCAxNjAzLCAxNjA1LCAxNjA1LCA3ODEsIDE1OTMsIDE1ODAsIDE2MDUsIDc4MSwgMTU4OSwgMTYwNSwgCisgICAgMTYwNSwgNzgwLCAxNTg3LCAxNTgyLCAxNjEwLCA3ODAsIDE2MDYsIDE1ODAsIDE2MTAsIDc3OSwgMTU4OSwgMTYwNCwgCisgICAgMTc0NiwgNzc5LCAxNjAyLCAxNjA0LCAxNzQ2LCAxMDM1LCAxNTc1LCAxNjA0LCAxNjA0LCAxNjA3LCAxMDM1LCAxNTc1LCAKKyAgICAxNjAzLCAxNTc2LCAxNTg1LCAxMDM1LCAxNjA1LCAxNTgxLCAxNjA1LCAxNTgzLCAxMDM1LCAxNTg5LCAxNjA0LCAxNTkzLCAKKyAgICAxNjA1LCAxMDM1LCAxNTg1LCAxNTg3LCAxNjA4LCAxNjA0LCAxMDM1LCAxNTkzLCAxNjA0LCAxNjEwLCAxNjA3LCAxMDM1LCAKKyAgICAxNjA4LCAxNTg3LCAxNjA0LCAxNjA1LCA3NzksIDE1ODksIDE2MDQsIDE2MDksIDQ2MTksIDE1ODksIDE2MDQsIDE2MDksIAorICAgIDMyLCAxNTc1LCAxNjA0LCAxNjA0LCAxNjA3LCAzMiwgMTU5MywgMTYwNCwgMTYxMCwgMTYwNywgMzIsIDE2MDgsIDE1ODcsIAorICAgIDE2MDQsIDE2MDUsIDIwNTksIDE1ODAsIDE2MDQsIDMyLCAxNTgwLCAxNjA0LCAxNTc1LCAxNjA0LCAxNjA3LCAxMDM1LCAKKyAgICAxNTg1LCAxNzQwLCAxNTc1LCAxNjA0LCAyNjUsIDQ0LCAyNjUsIDEyMjg5LCAyNjUsIDEyMjkwLCAyNjUsIDU4LCAyNjUsIAorICAgIDU5LCAyNjUsIDMzLCAyNjUsIDYzLCAyNjUsIDEyMzEwLCAyNjUsIDEyMzExLCAyNjUsIDgyMzAsIDI2NSwgODIyOSwgMjY1LCAKKyAgICA4MjEyLCAyNjUsIDgyMTEsIDI2NSwgOTUsIDI2NSwgOTUsIDI2NSwgNDAsIDI2NSwgNDEsIDI2NSwgMTIzLCAyNjUsIDEyNSwgCisgICAgMjY1LCAxMjMwOCwgMjY1LCAxMjMwOSwgMjY1LCAxMjMwNCwgMjY1LCAxMjMwNSwgMjY1LCAxMjI5OCwgMjY1LCAxMjI5OSwgCisgICAgMjY1LCAxMjI5NiwgMjY1LCAxMjI5NywgMjY1LCAxMjMwMCwgMjY1LCAxMjMwMSwgMjY1LCAxMjMwMiwgMjY1LCAxMjMwMywgCisgICAgMjY1LCA5MSwgMjY1LCA5MywgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDk1LCAKKyAgICAyNTgsIDk1LCAyNTgsIDk1LCAyNzEsIDQ0LCAyNzEsIDEyMjg5LCAyNzEsIDQ2LCAyNzEsIDU5LCAyNzEsIDU4LCAyNzEsIAorICAgIDYzLCAyNzEsIDMzLCAyNzEsIDgyMTIsIDI3MSwgNDAsIDI3MSwgNDEsIDI3MSwgMTIzLCAyNzEsIDEyNSwgMjcxLCAxMjMwOCwgCisgICAgMjcxLCAxMjMwOSwgMjcxLCAzNSwgMjcxLCAzOCwgMjcxLCA0MiwgMjcxLCA0MywgMjcxLCA0NSwgMjcxLCA2MCwgMjcxLCAKKyAgICA2MiwgMjcxLCA2MSwgMjcxLCA5MiwgMjcxLCAzNiwgMjcxLCAzNywgMjcxLCA2NCwgNTIzLCAzMiwgMTYxMSwgNTI2LCAKKyAgICAxNjAwLCAxNjExLCA1MjMsIDMyLCAxNjEyLCA1MjMsIDMyLCAxNjEzLCA1MjMsIDMyLCAxNjE0LCA1MjYsIDE2MDAsIDE2MTQsIAorICAgIDUyMywgMzIsIDE2MTUsIDUyNiwgMTYwMCwgMTYxNSwgNTIzLCAzMiwgMTYxNiwgNTI2LCAxNjAwLCAxNjE2LCA1MjMsIDMyLCAKKyAgICAxNjE3LCA1MjYsIDE2MDAsIDE2MTcsIDUyMywgMzIsIDE2MTgsIDUyNiwgMTYwMCwgMTYxOCwgMjY3LCAxNTY5LCAyNjcsIAorICAgIDE1NzAsIDI2OCwgMTU3MCwgMjY3LCAxNTcxLCAyNjgsIDE1NzEsIDI2NywgMTU3MiwgMjY4LCAxNTcyLCAyNjcsIDE1NzMsIAorICAgIDI2OCwgMTU3MywgMjY3LCAxNTc0LCAyNjgsIDE1NzQsIDI2OSwgMTU3NCwgMjcwLCAxNTc0LCAyNjcsIDE1NzUsIDI2OCwgCisgICAgMTU3NSwgMjY3LCAxNTc2LCAyNjgsIDE1NzYsIDI2OSwgMTU3NiwgMjcwLCAxNTc2LCAyNjcsIDE1NzcsIDI2OCwgMTU3NywgCisgICAgMjY3LCAxNTc4LCAyNjgsIDE1NzgsIDI2OSwgMTU3OCwgMjcwLCAxNTc4LCAyNjcsIDE1NzksIDI2OCwgMTU3OSwgMjY5LCAKKyAgICAxNTc5LCAyNzAsIDE1NzksIDI2NywgMTU4MCwgMjY4LCAxNTgwLCAyNjksIDE1ODAsIDI3MCwgMTU4MCwgMjY3LCAxNTgxLCAKKyAgICAyNjgsIDE1ODEsIDI2OSwgMTU4MSwgMjcwLCAxNTgxLCAyNjcsIDE1ODIsIDI2OCwgMTU4MiwgMjY5LCAxNTgyLCAyNzAsIAorICAgIDE1ODIsIDI2NywgMTU4MywgMjY4LCAxNTgzLCAyNjcsIDE1ODQsIDI2OCwgMTU4NCwgMjY3LCAxNTg1LCAyNjgsIDE1ODUsIAorICAgIDI2NywgMTU4NiwgMjY4LCAxNTg2LCAyNjcsIDE1ODcsIDI2OCwgMTU4NywgMjY5LCAxNTg3LCAyNzAsIDE1ODcsIDI2NywgCisgICAgMTU4OCwgMjY4LCAxNTg4LCAyNjksIDE1ODgsIDI3MCwgMTU4OCwgMjY3LCAxNTg5LCAyNjgsIDE1ODksIDI2OSwgMTU4OSwgCisgICAgMjcwLCAxNTg5LCAyNjcsIDE1OTAsIDI2OCwgMTU5MCwgMjY5LCAxNTkwLCAyNzAsIDE1OTAsIDI2NywgMTU5MSwgMjY4LCAKKyAgICAxNTkxLCAyNjksIDE1OTEsIDI3MCwgMTU5MSwgMjY3LCAxNTkyLCAyNjgsIDE1OTIsIDI2OSwgMTU5MiwgMjcwLCAxNTkyLCAKKyAgICAyNjcsIDE1OTMsIDI2OCwgMTU5MywgMjY5LCAxNTkzLCAyNzAsIDE1OTMsIDI2NywgMTU5NCwgMjY4LCAxNTk0LCAyNjksIAorICAgIDE1OTQsIDI3MCwgMTU5NCwgMjY3LCAxNjAxLCAyNjgsIDE2MDEsIDI2OSwgMTYwMSwgMjcwLCAxNjAxLCAyNjcsIDE2MDIsIAorICAgIDI2OCwgMTYwMiwgMjY5LCAxNjAyLCAyNzAsIDE2MDIsIDI2NywgMTYwMywgMjY4LCAxNjAzLCAyNjksIDE2MDMsIDI3MCwgCisgICAgMTYwMywgMjY3LCAxNjA0LCAyNjgsIDE2MDQsIDI2OSwgMTYwNCwgMjcwLCAxNjA0LCAyNjcsIDE2MDUsIDI2OCwgMTYwNSwgCisgICAgMjY5LCAxNjA1LCAyNzAsIDE2MDUsIDI2NywgMTYwNiwgMjY4LCAxNjA2LCAyNjksIDE2MDYsIDI3MCwgMTYwNiwgMjY3LCAKKyAgICAxNjA3LCAyNjgsIDE2MDcsIDI2OSwgMTYwNywgMjcwLCAxNjA3LCAyNjcsIDE2MDgsIDI2OCwgMTYwOCwgMjY3LCAxNjA5LCAKKyAgICAyNjgsIDE2MDksIDI2NywgMTYxMCwgMjY4LCAxNjEwLCAyNjksIDE2MTAsIDI3MCwgMTYxMCwgNTIzLCAxNjA0LCAxNTcwLCAKKyAgICA1MjQsIDE2MDQsIDE1NzAsIDUyMywgMTYwNCwgMTU3MSwgNTI0LCAxNjA0LCAxNTcxLCA1MjMsIDE2MDQsIDE1NzMsIDUyNCwgCisgICAgMTYwNCwgMTU3MywgNTIzLCAxNjA0LCAxNTc1LCA1MjQsIDE2MDQsIDE1NzUsIDI2NCwgMzMsIDI2NCwgMzQsIDI2NCwgMzUsIAorICAgIDI2NCwgMzYsIDI2NCwgMzcsIDI2NCwgMzgsIDI2NCwgMzksIDI2NCwgNDAsIDI2NCwgNDEsIDI2NCwgNDIsIDI2NCwgNDMsIAorICAgIDI2NCwgNDQsIDI2NCwgNDUsIDI2NCwgNDYsIDI2NCwgNDcsIDI2NCwgNDgsIDI2NCwgNDksIDI2NCwgNTAsIDI2NCwgNTEsIAorICAgIDI2NCwgNTIsIDI2NCwgNTMsIDI2NCwgNTQsIDI2NCwgNTUsIDI2NCwgNTYsIDI2NCwgNTcsIDI2NCwgNTgsIDI2NCwgNTksIAorICAgIDI2NCwgNjAsIDI2NCwgNjEsIDI2NCwgNjIsIDI2NCwgNjMsIDI2NCwgNjQsIDI2NCwgNjUsIDI2NCwgNjYsIDI2NCwgNjcsIAorICAgIDI2NCwgNjgsIDI2NCwgNjksIDI2NCwgNzAsIDI2NCwgNzEsIDI2NCwgNzIsIDI2NCwgNzMsIDI2NCwgNzQsIDI2NCwgNzUsIAorICAgIDI2NCwgNzYsIDI2NCwgNzcsIDI2NCwgNzgsIDI2NCwgNzksIDI2NCwgODAsIDI2NCwgODEsIDI2NCwgODIsIDI2NCwgODMsIAorICAgIDI2NCwgODQsIDI2NCwgODUsIDI2NCwgODYsIDI2NCwgODcsIDI2NCwgODgsIDI2NCwgODksIDI2NCwgOTAsIDI2NCwgOTEsIAorICAgIDI2NCwgOTIsIDI2NCwgOTMsIDI2NCwgOTQsIDI2NCwgOTUsIDI2NCwgOTYsIDI2NCwgOTcsIDI2NCwgOTgsIDI2NCwgOTksIAorICAgIDI2NCwgMTAwLCAyNjQsIDEwMSwgMjY0LCAxMDIsIDI2NCwgMTAzLCAyNjQsIDEwNCwgMjY0LCAxMDUsIDI2NCwgMTA2LCAKKyAgICAyNjQsIDEwNywgMjY0LCAxMDgsIDI2NCwgMTA5LCAyNjQsIDExMCwgMjY0LCAxMTEsIDI2NCwgMTEyLCAyNjQsIDExMywgCisgICAgMjY0LCAxMTQsIDI2NCwgMTE1LCAyNjQsIDExNiwgMjY0LCAxMTcsIDI2NCwgMTE4LCAyNjQsIDExOSwgMjY0LCAxMjAsIAorICAgIDI2NCwgMTIxLCAyNjQsIDEyMiwgMjY0LCAxMjMsIDI2NCwgMTI0LCAyNjQsIDEyNSwgMjY0LCAxMjYsIDI2NCwgMTA2MjksIAorICAgIDI2NCwgMTA2MzAsIDI3MiwgMTIyOTAsIDI3MiwgMTIzMDAsIDI3MiwgMTIzMDEsIDI3MiwgMTIyODksIDI3MiwgMTI1MzksIAorICAgIDI3MiwgMTI1MzAsIDI3MiwgMTI0NDksIDI3MiwgMTI0NTEsIDI3MiwgMTI0NTMsIDI3MiwgMTI0NTUsIDI3MiwgMTI0NTcsIAorICAgIDI3MiwgMTI1MTUsIDI3MiwgMTI1MTcsIDI3MiwgMTI1MTksIDI3MiwgMTI0ODMsIDI3MiwgMTI1NDAsIDI3MiwgMTI0NTAsIAorICAgIDI3MiwgMTI0NTIsIDI3MiwgMTI0NTQsIDI3MiwgMTI0NTYsIDI3MiwgMTI0NTgsIDI3MiwgMTI0NTksIDI3MiwgMTI0NjEsIAorICAgIDI3MiwgMTI0NjMsIDI3MiwgMTI0NjUsIDI3MiwgMTI0NjcsIDI3MiwgMTI0NjksIDI3MiwgMTI0NzEsIDI3MiwgMTI0NzMsIAorICAgIDI3MiwgMTI0NzUsIDI3MiwgMTI0NzcsIDI3MiwgMTI0NzksIDI3MiwgMTI0ODEsIDI3MiwgMTI0ODQsIDI3MiwgMTI0ODYsIAorICAgIDI3MiwgMTI0ODgsIDI3MiwgMTI0OTAsIDI3MiwgMTI0OTEsIDI3MiwgMTI0OTIsIDI3MiwgMTI0OTMsIDI3MiwgMTI0OTQsIAorICAgIDI3MiwgMTI0OTUsIDI3MiwgMTI0OTgsIDI3MiwgMTI1MDEsIDI3MiwgMTI1MDQsIDI3MiwgMTI1MDcsIDI3MiwgMTI1MTAsIAorICAgIDI3MiwgMTI1MTEsIDI3MiwgMTI1MTIsIDI3MiwgMTI1MTMsIDI3MiwgMTI1MTQsIDI3MiwgMTI1MTYsIDI3MiwgMTI1MTgsIAorICAgIDI3MiwgMTI1MjAsIDI3MiwgMTI1MjEsIDI3MiwgMTI1MjIsIDI3MiwgMTI1MjMsIDI3MiwgMTI1MjQsIDI3MiwgMTI1MjUsIAorICAgIDI3MiwgMTI1MjcsIDI3MiwgMTI1MzEsIDI3MiwgMTI0NDEsIDI3MiwgMTI0NDIsIDI3MiwgMTI2NDQsIDI3MiwgMTI1OTMsIAorICAgIDI3MiwgMTI1OTQsIDI3MiwgMTI1OTUsIDI3MiwgMTI1OTYsIDI3MiwgMTI1OTcsIDI3MiwgMTI1OTgsIDI3MiwgMTI1OTksIAorICAgIDI3MiwgMTI2MDAsIDI3MiwgMTI2MDEsIDI3MiwgMTI2MDIsIDI3MiwgMTI2MDMsIDI3MiwgMTI2MDQsIDI3MiwgMTI2MDUsIAorICAgIDI3MiwgMTI2MDYsIDI3MiwgMTI2MDcsIDI3MiwgMTI2MDgsIDI3MiwgMTI2MDksIDI3MiwgMTI2MTAsIDI3MiwgMTI2MTEsIAorICAgIDI3MiwgMTI2MTIsIDI3MiwgMTI2MTMsIDI3MiwgMTI2MTQsIDI3MiwgMTI2MTUsIDI3MiwgMTI2MTYsIDI3MiwgMTI2MTcsIAorICAgIDI3MiwgMTI2MTgsIDI3MiwgMTI2MTksIDI3MiwgMTI2MjAsIDI3MiwgMTI2MjEsIDI3MiwgMTI2MjIsIDI3MiwgMTI2MjMsIAorICAgIDI3MiwgMTI2MjQsIDI3MiwgMTI2MjUsIDI3MiwgMTI2MjYsIDI3MiwgMTI2MjcsIDI3MiwgMTI2MjgsIDI3MiwgMTI2MjksIAorICAgIDI3MiwgMTI2MzAsIDI3MiwgMTI2MzEsIDI3MiwgMTI2MzIsIDI3MiwgMTI2MzMsIDI3MiwgMTI2MzQsIDI3MiwgMTI2MzUsIAorICAgIDI3MiwgMTI2MzYsIDI3MiwgMTI2MzcsIDI3MiwgMTI2MzgsIDI3MiwgMTI2MzksIDI3MiwgMTI2NDAsIDI3MiwgMTI2NDEsIAorICAgIDI3MiwgMTI2NDIsIDI3MiwgMTI2NDMsIDI2NCwgMTYyLCAyNjQsIDE2MywgMjY0LCAxNzIsIDI2NCwgMTc1LCAyNjQsIDE2NiwgCisgICAgMjY0LCAxNjUsIDI2NCwgODM2MSwgMjcyLCA5NDc0LCAyNzIsIDg1OTIsIDI3MiwgODU5MywgMjcyLCA4NTk0LCAyNzIsIAorICAgIDg1OTUsIDI3MiwgOTYzMiwgMjcyLCA5Njc1LCA1MTIsIDY5Nzg1LCA2OTgxOCwgNTEyLCA2OTc4NywgNjk4MTgsIDUxMiwgCisgICAgNjk3OTcsIDY5ODE4LCA1MTIsIDY5OTM3LCA2OTkyNywgNTEyLCA2OTkzOCwgNjk5MjcsIDUxMiwgMTE5MTI3LCAxMTkxNDEsIAorICAgIDUxMiwgMTE5MTI4LCAxMTkxNDEsIDUxMiwgMTE5MTM1LCAxMTkxNTAsIDUxMiwgMTE5MTM1LCAxMTkxNTEsIDUxMiwgCisgICAgMTE5MTM1LCAxMTkxNTIsIDUxMiwgMTE5MTM1LCAxMTkxNTMsIDUxMiwgMTE5MTM1LCAxMTkxNTQsIDUxMiwgMTE5MjI1LCAKKyAgICAxMTkxNDEsIDUxMiwgMTE5MjI2LCAxMTkxNDEsIDUxMiwgMTE5MjI3LCAxMTkxNTAsIDUxMiwgMTE5MjI4LCAxMTkxNTAsIAorICAgIDUxMiwgMTE5MjI3LCAxMTkxNTEsIDUxMiwgMTE5MjI4LCAxMTkxNTEsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgCisgICAgNjgsIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgCisgICAgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgCisgICAgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgCisgICAgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIAorICAgIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAKKyAgICAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgCisgICAgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCAKKyAgICA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCAKKyAgICA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCAKKyAgICA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCAKKyAgICA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIAogICAgIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAKICAgICAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgCiAgICAgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIApAQCAtMzUxMCwyMCArMzU3OSw0MiBAQAogICAgIDUyLCAyNjIsIDUzLCAyNjIsIDU0LCAyNjIsIDU1LCAyNjIsIDU2LCAyNjIsIDU3LCAyNjIsIDQ4LCAyNjIsIDQ5LCAyNjIsIAogICAgIDUwLCAyNjIsIDUxLCAyNjIsIDUyLCAyNjIsIDUzLCAyNjIsIDU0LCAyNjIsIDU1LCAyNjIsIDU2LCAyNjIsIDU3LCAyNjIsIAogICAgIDQ4LCAyNjIsIDQ5LCAyNjIsIDUwLCAyNjIsIDUxLCAyNjIsIDUyLCAyNjIsIDUzLCAyNjIsIDU0LCAyNjIsIDU1LCAyNjIsIAotICAgIDU2LCAyNjIsIDU3LCA1MTQsIDQ4LCA0NiwgNTE0LCA0OCwgNDQsIDUxNCwgNDksIDQ0LCA1MTQsIDUwLCA0NCwgNTE0LCA1MSwgCi0gICAgNDQsIDUxNCwgNTIsIDQ0LCA1MTQsIDUzLCA0NCwgNTE0LCA1NCwgNDQsIDUxNCwgNTUsIDQ0LCA1MTQsIDU2LCA0NCwgNTE0LCAKLSAgICA1NywgNDQsIDc3MCwgNDAsIDY1LCA0MSwgNzcwLCA0MCwgNjYsIDQxLCA3NzAsIDQwLCA2NywgNDEsIDc3MCwgNDAsIDY4LCAKLSAgICA0MSwgNzcwLCA0MCwgNjksIDQxLCA3NzAsIDQwLCA3MCwgNDEsIDc3MCwgNDAsIDcxLCA0MSwgNzcwLCA0MCwgNzIsIDQxLCAKLSAgICA3NzAsIDQwLCA3MywgNDEsIDc3MCwgNDAsIDc0LCA0MSwgNzcwLCA0MCwgNzUsIDQxLCA3NzAsIDQwLCA3NiwgNDEsIDc3MCwgCi0gICAgNDAsIDc3LCA0MSwgNzcwLCA0MCwgNzgsIDQxLCA3NzAsIDQwLCA3OSwgNDEsIDc3MCwgNDAsIDgwLCA0MSwgNzcwLCA0MCwgCi0gICAgODEsIDQxLCA3NzAsIDQwLCA4MiwgNDEsIDc3MCwgNDAsIDgzLCA0MSwgNzcwLCA0MCwgODQsIDQxLCA3NzAsIDQwLCA4NSwgCi0gICAgNDEsIDc3MCwgNDAsIDg2LCA0MSwgNzcwLCA0MCwgODcsIDQxLCA3NzAsIDQwLCA4OCwgNDEsIDc3MCwgNDAsIDg5LCA0MSwgCi0gICAgNzcwLCA0MCwgOTAsIDQxLCA3NzAsIDEyMzA4LCA4MywgMTIzMDksIDI2MywgNjcsIDI2MywgODIsIDUxOSwgNjcsIDY4LCAKLSAgICA1MTksIDg3LCA5MCwgMjY2LCA2NSwgMjY2LCA2NiwgMjY2LCA2NywgMjY2LCA2OCwgMjY2LCA2OSwgMjY2LCA3MCwgMjY2LCAKLSAgICA3MSwgMjY2LCA3MiwgMjY2LCA3MywgMjY2LCA3NCwgMjY2LCA3NSwgMjY2LCA3NiwgMjY2LCA3NywgMjY2LCA3OCwgMjY2LCAKLSAgICA3OSwgMjY2LCA4MCwgMjY2LCA4MSwgMjY2LCA4MiwgMjY2LCA4MywgMjY2LCA4NCwgMjY2LCA4NSwgMjY2LCA4NiwgMjY2LCAKLSAgICA4NywgMjY2LCA4OCwgMjY2LCA4OSwgMjY2LCA5MCwgNTIyLCA3MiwgODYsIDUyMiwgNzcsIDg2LCA1MjIsIDgzLCA2OCwgCi0gICAgNTIyLCA4MywgODMsIDc3OCwgODAsIDgwLCA4NiwgNTIyLCA4NywgNjcsIDUyMiwgNjgsIDc0LCA1MjIsIDEyNDExLCAKKyAgICA1NiwgMjYyLCA1NywgMjYyLCAxNTc1LCAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDgsIDI2MiwgCisgICAgMTU4NiwgMjYyLCAxNTgxLCAyNjIsIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgCisgICAgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAKKyAgICAxNTg1LCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAKKyAgICAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgMjYyLCAxNjQ2LCAyNjIsIDE3MjIsIDI2MiwgMTY5NywgMjYyLCAxNjQ3LCAyNjIsIAorICAgIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNjA3LCAyNjIsIDE1ODEsIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDQsIAorICAgIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgCisgICAgMTYwMiwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5NCwgCisgICAgMjYyLCAxNTgwLCAyNjIsIDE1ODEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAKKyAgICAxNTkzLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg4LCAyNjIsIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTk0LCAKKyAgICAyNjIsIDE3MjIsIDI2MiwgMTY0NywgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTYwNywgMjYyLCAxNTgxLCAyNjIsIAorICAgIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIAorICAgIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgCisgICAgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgMjYyLCAxNjQ2LCAyNjIsIDE2OTcsIDI2MiwgMTU3NSwgCisgICAgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA3LCAyNjIsIDE2MDgsIDI2MiwgMTU4NiwgMjYyLCAKKyAgICAxNTgxLCAyNjIsIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAKKyAgICAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIAorICAgIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIAorICAgIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwOCwgMjYyLCAxNTg2LCAyNjIsIDE1ODEsIDI2MiwgCisgICAgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgCisgICAgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg1LCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAKKyAgICAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgNTE0LCA0OCwgNDYsIAorICAgIDUxNCwgNDgsIDQ0LCA1MTQsIDQ5LCA0NCwgNTE0LCA1MCwgNDQsIDUxNCwgNTEsIDQ0LCA1MTQsIDUyLCA0NCwgNTE0LCA1MywgCisgICAgNDQsIDUxNCwgNTQsIDQ0LCA1MTQsIDU1LCA0NCwgNTE0LCA1NiwgNDQsIDUxNCwgNTcsIDQ0LCA3NzAsIDQwLCA2NSwgNDEsIAorICAgIDc3MCwgNDAsIDY2LCA0MSwgNzcwLCA0MCwgNjcsIDQxLCA3NzAsIDQwLCA2OCwgNDEsIDc3MCwgNDAsIDY5LCA0MSwgNzcwLCAKKyAgICA0MCwgNzAsIDQxLCA3NzAsIDQwLCA3MSwgNDEsIDc3MCwgNDAsIDcyLCA0MSwgNzcwLCA0MCwgNzMsIDQxLCA3NzAsIDQwLCAKKyAgICA3NCwgNDEsIDc3MCwgNDAsIDc1LCA0MSwgNzcwLCA0MCwgNzYsIDQxLCA3NzAsIDQwLCA3NywgNDEsIDc3MCwgNDAsIDc4LCAKKyAgICA0MSwgNzcwLCA0MCwgNzksIDQxLCA3NzAsIDQwLCA4MCwgNDEsIDc3MCwgNDAsIDgxLCA0MSwgNzcwLCA0MCwgODIsIDQxLCAKKyAgICA3NzAsIDQwLCA4MywgNDEsIDc3MCwgNDAsIDg0LCA0MSwgNzcwLCA0MCwgODUsIDQxLCA3NzAsIDQwLCA4NiwgNDEsIDc3MCwgCisgICAgNDAsIDg3LCA0MSwgNzcwLCA0MCwgODgsIDQxLCA3NzAsIDQwLCA4OSwgNDEsIDc3MCwgNDAsIDkwLCA0MSwgNzcwLCAKKyAgICAxMjMwOCwgODMsIDEyMzA5LCAyNjMsIDY3LCAyNjMsIDgyLCA1MTksIDY3LCA2OCwgNTE5LCA4NywgOTAsIDI2NiwgNjUsIAorICAgIDI2NiwgNjYsIDI2NiwgNjcsIDI2NiwgNjgsIDI2NiwgNjksIDI2NiwgNzAsIDI2NiwgNzEsIDI2NiwgNzIsIDI2NiwgNzMsIAorICAgIDI2NiwgNzQsIDI2NiwgNzUsIDI2NiwgNzYsIDI2NiwgNzcsIDI2NiwgNzgsIDI2NiwgNzksIDI2NiwgODAsIDI2NiwgODEsIAorICAgIDI2NiwgODIsIDI2NiwgODMsIDI2NiwgODQsIDI2NiwgODUsIDI2NiwgODYsIDI2NiwgODcsIDI2NiwgODgsIDI2NiwgODksIAorICAgIDI2NiwgOTAsIDUyMiwgNzIsIDg2LCA1MjIsIDc3LCA4NiwgNTIyLCA4MywgNjgsIDUyMiwgODMsIDgzLCA3NzgsIDgwLCA4MCwgCisgICAgODYsIDUyMiwgODcsIDY3LCA1MTUsIDc3LCA2NywgNTE1LCA3NywgNjgsIDUyMiwgNjgsIDc0LCA1MjIsIDEyNDExLCAKICAgICAxMjM2MywgNTIyLCAxMjQ2NywgMTI0NjcsIDI2NiwgMTI0NjksIDI2NiwgMjUxNjMsIDI2NiwgMjMzODMsIDI2NiwgMjE0NTIsIAogICAgIDI2NiwgMTI0ODcsIDI2NiwgMjAxMDgsIDI2NiwgMjI4MTAsIDI2NiwgMzUyOTksIDI2NiwgMjI4MjUsIDI2NiwgMjAxMzIsIAogICAgIDI2NiwgMjYxNDQsIDI2NiwgMjg5NjEsIDI2NiwgMjYwMDksIDI2NiwgMjEwNjksIDI2NiwgMjQ0NjAsIDI2NiwgMjA4NzcsIApAQCAtMzY0Myw3ICszNzM0LDcgQEAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCAKLSAgICA0MSwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNDIsIDcsIDcsIDcsIDcsIDcsIDcsIAorICAgIDQxLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA0MiwgNDMsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIApAQCAtMzY1MSw5ICszNzQyLDkgQEAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA0MywgNywgNywgNDQsIDQ1LCAKLSAgICA0NiwgNDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDQ4LCA0OSwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCisgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNDQsIDcsIDcsIDQ1LCAKKyAgICA0NiwgNDcsIDQ4LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICA3LCA3LCA0OSwgNywgNywgNTAsIDUxLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKQEAgLTM2NjQsNyArMzc1NSw3IEBACiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNTAsIDUxLCA1MiwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCisgICAgNywgNywgNywgNywgNywgNTIsIDUzLCA1NCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCkBAIC0zODEzLDcgKzM5MDQsNyBAQAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGRlY29tcF9pbmRleDJbXSA9IHsKQEAgLTQyODIsMzU2ICs0MzczLDE2MyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY2NDgsIDY2NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NTIsIDY2NTQsIDY2NTYsIDY2NTgsIDY2NjAsIDY2NjIsIDY2NjQsIAorICAgIDY2NjYsIDY2NjgsIDY2NzAsIDY2NzIsIDY2NzQsIDY2NzYsIDY2NzgsIDY2ODAsIDY2ODIsIDY2ODQsIDY2ODYsIDY2ODgsIAorICAgIDY2OTAsIDY2OTIsIDY2OTQsIDY2OTYsIDY2OTgsIDY3MDAsIDY3MDIsIDY3MDQsIDY3MDYsIDY3MDgsIDY3MTAsIDY3MTIsIAorICAgIDY3MTQsIDY3MTYsIDY3MTgsIDY3MjAsIDY3MjIsIDY3MjQsIDY3MjYsIDY3MjgsIDY3MzAsIDY3MzIsIDY3MzQsIDY3MzYsIAorICAgIDY3MzgsIDY3NDAsIDY3NDIsIDY3NDQsIDY3NDYsIDY3NDgsIDY3NTAsIDY3NTIsIDY3NTQsIDY3NTYsIDY3NTgsIDY3NjAsIAorICAgIDY3NjIsIDY3NjQsIDY3NjYsIDY3NjgsIDY3NzAsIDY3NzIsIDY3NzQsIDY3NzYsIDY3NzgsIDY3ODAsIDY3ODIsIDY3ODQsIAorICAgIDY3ODYsIDY3ODgsIDY3OTAsIDY3OTIsIDY3OTQsIDY3OTYsIDY3OTgsIDY4MDAsIDY4MDIsIDY4MDQsIDY4MDYsIDY4MDgsIAorICAgIDY4MTAsIDY4MTIsIDY4MTQsIDY4MTYsIDY4MTgsIDY4MjAsIDY4MjIsIDY4MjQsIDY4MjYsIDY4MjgsIDY4MzAsIDY4MzIsIAorICAgIDY4MzQsIDY4MzYsIDY4MzgsIDY4NDAsIDY4NDIsIDY4NDQsIDY4NDYsIDY4NDgsIDY4NTAsIDY4NTIsIDY4NTQsIDY4NTYsIAorICAgIDY4NTgsIDY4NjAsIDY4NjIsIDY4NjQsIDY4NjYsIDY4NjgsIDY4NzAsIDY4NzIsIDY4NzQsIDY4NzYsIDY4NzgsIDY4ODAsIAorICAgIDY4ODIsIDY4ODQsIDY4ODYsIDY4ODgsIDY4OTAsIDY4OTIsIDY4OTQsIDY4OTYsIDY4OTgsIDY5MDAsIDY5MDIsIDY5MDQsIAorICAgIDY5MDYsIDY5MDgsIDY5MTAsIDY5MTIsIDY5MTQsIDY5MTYsIDY5MTgsIDY5MjAsIDY5MjIsIDY5MjQsIDY5MjYsIDY5MjgsIAorICAgIDY5MzAsIDY5MzIsIDY5MzQsIDY5MzYsIDY5MzgsIDY5NDAsIDY5NDIsIDY5NDQsIDY5NDYsIDY5NDgsIDY5NTAsIDY5NTIsIAorICAgIDY5NTQsIDY5NTYsIDY5NTgsIDY5NjAsIDY5NjIsIDY5NjQsIDY5NjYsIDY5NjgsIDY5NzAsIDY5NzIsIDY5NzQsIDY5NzYsIAorICAgIDY5NzgsIDY5ODAsIDY5ODIsIDY5ODQsIDY5ODYsIDY5ODgsIDY5OTAsIDY5OTIsIDY5OTQsIDY5OTYsIDY5OTgsIDcwMDAsIAorICAgIDcwMDIsIDcwMDQsIDcwMDYsIDcwMDgsIDcwMTAsIDcwMTIsIDcwMTQsIDcwMTYsIDcwMTgsIDcwMjAsIDcwMjIsIDcwMjQsIAorICAgIDcwMjYsIDcwMjgsIDcwMzAsIDcwMzIsIDcwMzQsIDcwMzYsIDcwMzgsIDcwNDAsIDcwNDIsIDcwNDQsIDcwNDYsIDcwNDgsIAorICAgIDcwNTAsIDcwNTIsIDcwNTQsIDcwNTYsIDcwNTgsIDcwNjAsIDcwNjIsIDcwNjQsIDcwNjYsIDcwNjgsIDcwNzAsIDcwNzIsIAorICAgIDcwNzQsIDcwNzYsIDcwNzgsIDcwODAsIDcwODIsIDcwODQsIDcwODYsIDcwODgsIDcwOTAsIDcwOTIsIDcwOTQsIDcwOTYsIAorICAgIDcwOTgsIDcxMDAsIDcxMDIsIDcxMDQsIDcxMDYsIDcxMDgsIDcxMTAsIDcxMTIsIDcxMTQsIDcxMTYsIDcxMTgsIDcxMjAsIAorICAgIDcxMjIsIDcxMjQsIDcxMjYsIDcxMjgsIDcxMzAsIDcxMzIsIDcxMzQsIDcxMzYsIDcxMzgsIDcxNDAsIDcxNDIsIDcxNDQsIAorICAgIDcxNDYsIDcxNDgsIDcxNTAsIDcxNTIsIDcxNTQsIDcxNTYsIDcxNTgsIDcxNjAsIDcxNjIsIDcxNjQsIDcxNjYsIDcxNjgsIAorICAgIDcxNzAsIDcxNzIsIDcxNzQsIDcxNzYsIDcxNzgsIDcxODAsIDcxODIsIDcxODQsIDcxODYsIDcxODgsIDcxOTAsIDAsIDAsIAorICAgIDcxOTIsIDAsIDcxOTQsIDAsIDAsIDcxOTYsIDcxOTgsIDcyMDAsIDcyMDIsIDcyMDQsIDcyMDYsIDcyMDgsIDcyMTAsIAorICAgIDcyMTIsIDcyMTQsIDAsIDcyMTYsIDAsIDcyMTgsIDAsIDAsIDcyMjAsIDcyMjIsIDAsIDAsIDAsIDcyMjQsIDcyMjYsIAorICAgIDcyMjgsIDcyMzAsIDcyMzIsIDcyMzQsIDcyMzYsIDcyMzgsIDcyNDAsIDcyNDIsIDcyNDQsIDcyNDYsIDcyNDgsIDcyNTAsIAorICAgIDcyNTIsIDcyNTQsIDcyNTYsIDcyNTgsIDcyNjAsIDcyNjIsIDcyNjQsIDcyNjYsIDcyNjgsIDcyNzAsIDcyNzIsIDcyNzQsIAorICAgIDcyNzYsIDcyNzgsIDcyODAsIDcyODIsIDcyODQsIDcyODYsIDcyODgsIDcyOTAsIDcyOTIsIDcyOTQsIDcyOTYsIDcyOTgsIAorICAgIDczMDAsIDczMDIsIDczMDQsIDczMDYsIDczMDgsIDczMTAsIDczMTIsIDczMTQsIDczMTYsIDczMTgsIDczMjAsIDczMjIsIAorICAgIDczMjQsIDczMjYsIDczMjgsIDczMzAsIDczMzIsIDczMzQsIDczMzYsIDczMzgsIDczNDAsIDczNDIsIDczNDQsIDczNDYsIAorICAgIDczNDgsIDczNTAsIDczNTIsIDczNTQsIDczNTYsIDczNTgsIDAsIDAsIDczNjAsIDczNjIsIDczNjQsIDczNjYsIDczNjgsIAorICAgIDczNzAsIDczNzIsIDczNzQsIDczNzYsIDczNzgsIDczODAsIDczODIsIDczODQsIDczODYsIDczODgsIDczOTAsIDczOTIsIAorICAgIDczOTQsIDczOTYsIDczOTgsIDc0MDAsIDc0MDIsIDc0MDQsIDc0MDYsIDc0MDgsIDc0MTAsIDc0MTIsIDc0MTQsIDc0MTYsIAorICAgIDc0MTgsIDc0MjAsIDc0MjIsIDc0MjQsIDc0MjYsIDc0MjgsIDc0MzAsIDc0MzIsIDc0MzQsIDc0MzYsIDc0MzgsIDc0NDAsIAorICAgIDc0NDIsIDc0NDQsIDc0NDYsIDc0NDgsIDc0NTAsIDc0NTIsIDc0NTQsIDc0NTYsIDc0NTgsIDc0NjAsIDc0NjIsIDc0NjQsIAorICAgIDc0NjYsIDc0NjgsIDc0NzAsIDc0NzIsIDc0NzQsIDc0NzYsIDc0NzgsIDc0ODAsIDc0ODIsIDc0ODQsIDc0ODYsIDc0ODgsIAorICAgIDc0OTAsIDc0OTIsIDc0OTQsIDc0OTYsIDc0OTgsIDc1MDAsIDc1MDIsIDc1MDQsIDc1MDYsIDc1MDgsIDc1MTAsIDc1MTIsIAorICAgIDc1MTQsIDc1MTYsIDc1MTgsIDc1MjAsIDc1MjIsIDc1MjQsIDc1MjYsIDc1MjgsIDc1MzAsIDc1MzIsIDc1MzQsIDc1MzYsIAorICAgIDc1MzgsIDc1NDAsIDc1NDIsIDc1NDQsIDc1NDYsIDc1NDgsIDc1NTAsIDc1NTIsIDc1NTQsIDc1NTYsIDc1NTgsIDc1NjAsIAorICAgIDc1NjIsIDc1NjQsIDc1NjYsIDc1NjgsIDc1NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NDgsIDY2NTAsIDY2NTIsIDY2NTQsIDY2NTYsIDY2NTgsIDY2NjAsIDY2NjIsIAotICAgIDY2NjQsIDY2NjYsIDY2NjgsIDY2NzAsIDY2NzIsIDY2NzQsIDY2NzYsIDY2NzgsIDY2ODAsIDY2ODIsIDY2ODQsIDY2ODYsIAotICAgIDY2ODgsIDY2OTAsIDY2OTIsIDY2OTQsIDY2OTYsIDY2OTgsIDY3MDAsIDY3MDIsIDY3MDQsIDY3MDYsIDY3MDgsIDY3MTAsIAotICAgIDY3MTIsIDY3MTQsIDY3MTYsIDY3MTgsIDY3MjAsIDY3MjIsIDY3MjQsIDY3MjYsIDY3MjgsIDY3MzAsIDY3MzIsIDY3MzQsIAotICAgIDY3MzYsIDY3MzgsIDY3NDAsIDY3NDIsIDY3NDQsIDY3NDYsIDY3NDgsIDY3NTAsIDY3NTIsIDY3NTQsIDY3NTYsIDY3NTgsIAotICAgIDY3NjAsIDY3NjIsIDY3NjQsIDY3NjYsIDY3NjgsIDY3NzAsIDY3NzIsIDY3NzQsIDY3NzYsIDY3NzgsIDY3ODAsIDY3ODIsIAotICAgIDY3ODQsIDY3ODYsIDY3ODgsIDY3OTAsIDY3OTIsIDY3OTQsIDY3OTYsIDY3OTgsIDY4MDAsIDY4MDIsIDY4MDQsIDY4MDYsIAotICAgIDY4MDgsIDY4MTAsIDY4MTIsIDY4MTQsIDY4MTYsIDY4MTgsIDY4MjAsIDY4MjIsIDY4MjQsIDY4MjYsIDY4MjgsIDY4MzAsIAotICAgIDY4MzIsIDY4MzQsIDY4MzYsIDY4MzgsIDY4NDAsIDY4NDIsIDY4NDQsIDY4NDYsIDY4NDgsIDY4NTAsIDY4NTIsIDY4NTQsIAotICAgIDY4NTYsIDY4NTgsIDY4NjAsIDY4NjIsIDY4NjQsIDY4NjYsIDY4NjgsIDY4NzAsIDY4NzIsIDY4NzQsIDY4NzYsIDY4NzgsIAotICAgIDY4ODAsIDY4ODIsIDY4ODQsIDY4ODYsIDY4ODgsIDY4OTAsIDY4OTIsIDY4OTQsIDY4OTYsIDY4OTgsIDY5MDAsIDY5MDIsIAotICAgIDY5MDQsIDY5MDYsIDY5MDgsIDY5MTAsIDY5MTIsIDY5MTQsIDY5MTYsIDY5MTgsIDY5MjAsIDY5MjIsIDY5MjQsIDY5MjYsIAotICAgIDY5MjgsIDY5MzAsIDY5MzIsIDY5MzQsIDY5MzYsIDY5MzgsIDY5NDAsIDY5NDIsIDY5NDQsIDY5NDYsIDY5NDgsIDY5NTAsIAotICAgIDY5NTIsIDY5NTQsIDY5NTYsIDY5NTgsIDY5NjAsIDY5NjIsIDY5NjQsIDY5NjYsIDY5NjgsIDY5NzAsIDY5NzIsIDY5NzQsIAotICAgIDY5NzYsIDY5NzgsIDY5ODAsIDY5ODIsIDY5ODQsIDY5ODYsIDY5ODgsIDY5OTAsIDY5OTIsIDY5OTQsIDY5OTYsIDY5OTgsIAotICAgIDcwMDAsIDcwMDIsIDcwMDQsIDcwMDYsIDcwMDgsIDcwMTAsIDcwMTIsIDcwMTQsIDcwMTYsIDcwMTgsIDcwMjAsIDcwMjIsIAotICAgIDcwMjQsIDcwMjYsIDcwMjgsIDcwMzAsIDcwMzIsIDcwMzQsIDcwMzYsIDcwMzgsIDcwNDAsIDcwNDIsIDcwNDQsIDcwNDYsIAotICAgIDcwNDgsIDcwNTAsIDcwNTIsIDcwNTQsIDcwNTYsIDcwNTgsIDcwNjAsIDcwNjIsIDcwNjQsIDcwNjYsIDcwNjgsIDcwNzAsIAotICAgIDcwNzIsIDcwNzQsIDcwNzYsIDcwNzgsIDcwODAsIDcwODIsIDcwODQsIDcwODYsIDcwODgsIDcwOTAsIDcwOTIsIDcwOTQsIAotICAgIDcwOTYsIDcwOTgsIDcxMDAsIDcxMDIsIDcxMDQsIDcxMDYsIDcxMDgsIDcxMTAsIDcxMTIsIDcxMTQsIDcxMTYsIDcxMTgsIAotICAgIDcxMjAsIDcxMjIsIDcxMjQsIDcxMjYsIDcxMjgsIDcxMzAsIDcxMzIsIDcxMzQsIDcxMzYsIDcxMzgsIDcxNDAsIDcxNDIsIAotICAgIDcxNDQsIDcxNDYsIDcxNDgsIDcxNTAsIDcxNTIsIDcxNTQsIDcxNTYsIDcxNTgsIDcxNjAsIDcxNjIsIDcxNjQsIDcxNjYsIAotICAgIDcxNjgsIDcxNzAsIDcxNzIsIDcxNzQsIDcxNzYsIDcxNzgsIDcxODAsIDcxODIsIDcxODQsIDcxODYsIDAsIDAsIDcxODgsIAotICAgIDAsIDcxOTAsIDAsIDAsIDcxOTIsIDcxOTQsIDcxOTYsIDcxOTgsIDcyMDAsIDcyMDIsIDcyMDQsIDcyMDYsIDcyMDgsIAotICAgIDcyMTAsIDAsIDcyMTIsIDAsIDcyMTQsIDAsIDAsIDcyMTYsIDcyMTgsIDAsIDAsIDAsIDcyMjAsIDcyMjIsIDcyMjQsIAotICAgIDcyMjYsIDAsIDAsIDcyMjgsIDcyMzAsIDcyMzIsIDcyMzQsIDcyMzYsIDcyMzgsIDcyNDAsIDcyNDIsIDcyNDQsIDcyNDYsIAotICAgIDcyNDgsIDcyNTAsIDcyNTIsIDcyNTQsIDcyNTYsIDcyNTgsIDcyNjAsIDcyNjIsIDcyNjQsIDcyNjYsIDcyNjgsIDcyNzAsIAotICAgIDcyNzIsIDcyNzQsIDcyNzYsIDcyNzgsIDcyODAsIDcyODIsIDcyODQsIDcyODYsIDcyODgsIDcyOTAsIDcyOTIsIDcyOTQsIAotICAgIDcyOTYsIDcyOTgsIDczMDAsIDczMDIsIDczMDQsIDczMDYsIDczMDgsIDczMTAsIDczMTIsIDczMTQsIDczMTYsIDczMTgsIAotICAgIDczMjAsIDczMjIsIDczMjQsIDczMjYsIDczMjgsIDczMzAsIDczMzIsIDczMzQsIDczMzYsIDczMzgsIDczNDAsIDczNDIsIAotICAgIDczNDQsIDczNDYsIDczNDgsIDczNTAsIDAsIDAsIDczNTIsIDczNTQsIDczNTYsIDczNTgsIDczNjAsIDczNjIsIDczNjQsIAotICAgIDczNjYsIDczNjgsIDczNzAsIDczNzIsIDczNzQsIDczNzYsIDczNzgsIDczODAsIDczODIsIDczODQsIDczODYsIDczODgsIAotICAgIDczOTAsIDczOTIsIDczOTQsIDczOTYsIDczOTgsIDc0MDAsIDc0MDIsIDc0MDQsIDc0MDYsIDc0MDgsIDc0MTAsIDc0MTIsIAotICAgIDc0MTQsIDc0MTYsIDc0MTgsIDc0MjAsIDc0MjIsIDc0MjQsIDc0MjYsIDc0MjgsIDc0MzAsIDc0MzIsIDc0MzQsIDc0MzYsIAotICAgIDc0MzgsIDc0NDAsIDc0NDIsIDc0NDQsIDc0NDYsIDc0NDgsIDc0NTAsIDc0NTIsIDc0NTQsIDc0NTYsIDc0NTgsIDc0NjAsIAotICAgIDc0NjIsIDc0NjQsIDc0NjYsIDc0NjgsIDc0NzAsIDc0NzIsIDc0NzQsIDc0NzYsIDc0NzgsIDc0ODAsIDc0ODIsIDc0ODQsIAotICAgIDc0ODYsIDc0ODgsIDc0OTAsIDc0OTIsIDc0OTQsIDc0OTYsIDc0OTgsIDc1MDAsIDc1MDIsIDc1MDQsIDc1MDYsIDc1MDgsIAotICAgIDc1MTAsIDc1MTIsIDc1MTQsIDc1MTYsIDc1MTgsIDc1MjAsIDc1MjIsIDc1MjQsIDc1MjYsIDc1MjgsIDc1MzAsIDc1MzIsIAotICAgIDc1MzQsIDc1MzYsIDc1MzgsIDc1NDAsIDc1NDIsIDc1NDQsIDc1NDYsIDc1NDgsIDc1NTAsIDc1NTIsIDc1NTQsIDc1NTYsIAotICAgIDc1NTgsIDc1NjAsIDc1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NjQsIDc1NjcsIAotICAgIDc1NzAsIDc1NzMsIDc1NzcsIDc1ODEsIDc1ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1ODcsIAotICAgIDc1OTAsIDc1OTMsIDc1OTYsIDc1OTksIDAsIDAsIDAsIDAsIDAsIDc2MDIsIDAsIDc2MDUsIDc2MDgsIDc2MTAsIDc2MTIsIAotICAgIDc2MTQsIDc2MTYsIDc2MTgsIDc2MjAsIDc2MjIsIDc2MjQsIDc2MjYsIDc2MjgsIDc2MzEsIDc2MzQsIDc2MzcsIDc2NDAsIAotICAgIDc2NDMsIDc2NDYsIDc2NDksIDc2NTIsIDc2NTUsIDc2NTgsIDc2NjEsIDc2NjQsIDAsIDc2NjcsIDc2NzAsIDc2NzMsIAotICAgIDc2NzYsIDc2NzksIDAsIDc2ODIsIDAsIDc2ODUsIDc2ODgsIDAsIDc2OTEsIDc2OTQsIDAsIDc2OTcsIDc3MDAsIDc3MDMsIAotICAgIDc3MDYsIDc3MDksIDc3MTIsIDc3MTUsIDc3MTgsIDc3MjEsIDc3MjQsIDc3MjcsIDc3MjksIDc3MzEsIDc3MzMsIDc3MzUsIAotICAgIDc3MzcsIDc3MzksIDc3NDEsIDc3NDMsIDc3NDUsIDc3NDcsIDc3NDksIDc3NTEsIDc3NTMsIDc3NTUsIDc3NTcsIDc3NTksIAotICAgIDc3NjEsIDc3NjMsIDc3NjUsIDc3NjcsIDc3NjksIDc3NzEsIDc3NzMsIDc3NzUsIDc3NzcsIDc3NzksIDc3ODEsIDc3ODMsIAotICAgIDc3ODUsIDc3ODcsIDc3ODksIDc3OTEsIDc3OTMsIDc3OTUsIDc3OTcsIDc3OTksIDc4MDEsIDc4MDMsIDc4MDUsIDc4MDcsIAotICAgIDc4MDksIDc4MTEsIDc4MTMsIDc4MTUsIDc4MTcsIDc4MTksIDc4MjEsIDc4MjMsIDc4MjUsIDc4MjcsIDc4MjksIDc4MzEsIAotICAgIDc4MzMsIDc4MzUsIDc4MzcsIDc4MzksIDc4NDEsIDc4NDMsIDc4NDUsIDc4NDcsIDc4NDksIDc4NTEsIDc4NTMsIDc4NTUsIAotICAgIDc4NTcsIDc4NTksIDc4NjEsIDc4NjMsIDc4NjUsIDc4NjcsIDc4NjksIDc4NzEsIDc4NzMsIDc4NzUsIDc4NzcsIDc4NzksIAotICAgIDc4ODEsIDc4ODMsIDc4ODUsIDc4ODcsIDc4ODksIDc4OTEsIDc4OTMsIDc4OTUsIDc4OTcsIDc4OTksIDc5MDEsIDc5MDMsIAotICAgIDc5MDUsIDc5MDcsIDc5MDksIDc5MTEsIDc5MTMsIDc5MTUsIDc5MTcsIDc5MTksIDc5MjEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc1NzIsIDc1NzUsIDc1NzgsIDc1ODEsIDc1ODUsIDc1ODksIDc1OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDc1OTUsIDc1OTgsIDc2MDEsIDc2MDQsIDc2MDcsIDAsIDAsIDAsIDAsIDAsIDc2MTAsIDAsIDc2MTMsIDc2MTYsIAorICAgIDc2MTgsIDc2MjAsIDc2MjIsIDc2MjQsIDc2MjYsIDc2MjgsIDc2MzAsIDc2MzIsIDc2MzQsIDc2MzYsIDc2MzksIDc2NDIsIAorICAgIDc2NDUsIDc2NDgsIDc2NTEsIDc2NTQsIDc2NTcsIDc2NjAsIDc2NjMsIDc2NjYsIDc2NjksIDc2NzIsIDAsIDc2NzUsIAorICAgIDc2NzgsIDc2ODEsIDc2ODQsIDc2ODcsIDAsIDc2OTAsIDAsIDc2OTMsIDc2OTYsIDAsIDc2OTksIDc3MDIsIDAsIDc3MDUsIAorICAgIDc3MDgsIDc3MTEsIDc3MTQsIDc3MTcsIDc3MjAsIDc3MjMsIDc3MjYsIDc3MjksIDc3MzIsIDc3MzUsIDc3MzcsIDc3MzksIAorICAgIDc3NDEsIDc3NDMsIDc3NDUsIDc3NDcsIDc3NDksIDc3NTEsIDc3NTMsIDc3NTUsIDc3NTcsIDc3NTksIDc3NjEsIDc3NjMsIAorICAgIDc3NjUsIDc3NjcsIDc3NjksIDc3NzEsIDc3NzMsIDc3NzUsIDc3NzcsIDc3NzksIDc3ODEsIDc3ODMsIDc3ODUsIDc3ODcsIAorICAgIDc3ODksIDc3OTEsIDc3OTMsIDc3OTUsIDc3OTcsIDc3OTksIDc4MDEsIDc4MDMsIDc4MDUsIDc4MDcsIDc4MDksIDc4MTEsIAorICAgIDc4MTMsIDc4MTUsIDc4MTcsIDc4MTksIDc4MjEsIDc4MjMsIDc4MjUsIDc4MjcsIDc4MjksIDc4MzEsIDc4MzMsIDc4MzUsIAorICAgIDc4MzcsIDc4MzksIDc4NDEsIDc4NDMsIDc4NDUsIDc4NDcsIDc4NDksIDc4NTEsIDc4NTMsIDc4NTUsIDc4NTcsIDc4NTksIAorICAgIDc4NjEsIDc4NjMsIDc4NjUsIDc4NjcsIDc4NjksIDc4NzEsIDc4NzMsIDc4NzUsIDc4NzcsIDc4NzksIDc4ODEsIDc4ODMsIAorICAgIDc4ODUsIDc4ODcsIDc4ODksIDc4OTEsIDc4OTMsIDc4OTUsIDc4OTcsIDc4OTksIDc5MDEsIDc5MDMsIDc5MDUsIDc5MDcsIAorICAgIDc5MDksIDc5MTEsIDc5MTMsIDc5MTUsIDc5MTcsIDc5MTksIDc5MjEsIDc5MjMsIDc5MjUsIDc5MjcsIDc5MjksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDc5MjMsIDc5MjUsIDc5MjcsIDc5MjksIDc5MzEsIDc5MzMsIDc5MzUsIDc5MzcsIDc5MzksIDc5NDEsIAotICAgIDc5NDMsIDc5NDUsIDc5NDcsIDc5NDksIDc5NTEsIDc5NTMsIDc5NTUsIDc5NTcsIDc5NTksIDc5NjEsIDc5NjMsIDc5NjUsIAotICAgIDc5NjcsIDc5NjksIDc5NzIsIDc5NzUsIDc5NzgsIDc5ODEsIDc5ODQsIDc5ODcsIDc5OTAsIDc5OTMsIDc5OTYsIDc5OTksIAotICAgIDgwMDIsIDgwMDUsIDgwMDgsIDgwMTEsIDgwMTQsIDgwMTcsIDgwMjAsIDgwMjMsIDgwMjUsIDgwMjcsIDgwMjksIDgwMzEsIAotICAgIDgwMzQsIDgwMzcsIDgwNDAsIDgwNDMsIDgwNDYsIDgwNDksIDgwNTIsIDgwNTUsIDgwNTgsIDgwNjEsIDgwNjQsIDgwNjcsIAotICAgIDgwNzAsIDgwNzMsIDgwNzYsIDgwNzksIDgwODIsIDgwODUsIDgwODgsIDgwOTEsIDgwOTQsIDgwOTcsIDgxMDAsIDgxMDMsIAotICAgIDgxMDYsIDgxMDksIDgxMTIsIDgxMTUsIDgxMTgsIDgxMjEsIDgxMjQsIDgxMjcsIDgxMzAsIDgxMzMsIDgxMzYsIDgxMzksIAotICAgIDgxNDIsIDgxNDUsIDgxNDgsIDgxNTEsIDgxNTQsIDgxNTcsIDgxNjAsIDgxNjMsIDgxNjYsIDgxNjksIDgxNzIsIDgxNzUsIAotICAgIDgxNzgsIDgxODEsIDgxODQsIDgxODcsIDgxOTAsIDgxOTMsIDgxOTYsIDgxOTksIDgyMDIsIDgyMDUsIDgyMDgsIDgyMTEsIAotICAgIDgyMTQsIDgyMTcsIDgyMjAsIDgyMjMsIDgyMjYsIDgyMjksIDgyMzIsIDgyMzUsIDgyMzgsIDgyNDEsIDgyNDQsIDgyNDcsIAotICAgIDgyNTAsIDgyNTMsIDgyNTYsIDgyNTksIDgyNjIsIDgyNjUsIDgyNjgsIDgyNzEsIDgyNzQsIDgyNzcsIDgyODAsIDgyODMsIAotICAgIDgyODYsIDgyODksIDgyOTIsIDgyOTUsIDgyOTgsIDgzMDEsIDgzMDQsIDgzMDcsIDgzMTAsIDgzMTMsIDgzMTcsIDgzMjEsIAotICAgIDgzMjUsIDgzMjksIDgzMzMsIDgzMzcsIDgzNDAsIDgzNDMsIDgzNDYsIDgzNDksIDgzNTIsIDgzNTUsIDgzNTgsIDgzNjEsIAotICAgIDgzNjQsIDgzNjcsIDgzNzAsIDgzNzMsIDgzNzYsIDgzNzksIDgzODIsIDgzODUsIDgzODgsIDgzOTEsIDgzOTQsIDgzOTcsIAotICAgIDg0MDAsIDg0MDMsIDg0MDYsIDg0MDksIDg0MTIsIDg0MTUsIDg0MTgsIDg0MjEsIDg0MjQsIDg0MjcsIDg0MzAsIDg0MzMsIAotICAgIDg0MzYsIDg0MzksIDg0NDIsIDg0NDUsIDg0NDgsIDg0NTEsIDg0NTQsIDg0NTcsIDg0NjAsIDg0NjMsIDg0NjYsIDg0NjksIAotICAgIDg0NzIsIDg0NzUsIDg0NzgsIDg0ODEsIDg0ODQsIDg0ODcsIDg0OTAsIDg0OTMsIDg0OTYsIDg0OTksIDg1MDIsIDg1MDUsIAotICAgIDg1MDgsIDg1MTEsIDg1MTQsIDg1MTcsIDg1MjAsIDg1MjMsIDg1MjYsIDg1MjksIDg1MzIsIDg1MzUsIDg1MzgsIDg1NDEsIAotICAgIDg1NDQsIDg1NDcsIDg1NTAsIDg1NTMsIDg1NTYsIDg1NTksIDg1NjIsIDg1NjUsIDg1NjgsIDg1NzEsIDg1NzQsIDg1NzcsIAotICAgIDg1ODAsIDg1ODMsIDg1ODYsIDg1ODksIDg1OTIsIDg1OTUsIDg1OTgsIDg2MDEsIDg2MDQsIDg2MDcsIDg2MTAsIDg2MTMsIAotICAgIDg2MTYsIDg2MTksIDg2MjIsIDg2MjUsIDg2MjgsIDg2MzEsIDg2MzQsIDg2MzcsIDg2NDAsIDg2NDMsIDg2NDYsIDg2NDksIAotICAgIDg2NTIsIDg2NTUsIDg2NTgsIDg2NjEsIDg2NjQsIDg2NjcsIDg2NzAsIDg2NzMsIDg2NzYsIDg2NzksIDg2ODIsIDg2ODUsIAotICAgIDg2ODgsIDg2OTEsIDg2OTQsIDg2OTcsIDg3MDAsIDg3MDMsIDg3MDYsIDg3MDksIDg3MTIsIDg3MTUsIDg3MTgsIDg3MjEsIAotICAgIDg3MjQsIDg3MjcsIDg3MzAsIDg3MzMsIDg3MzYsIDg3MzksIDg3NDIsIDg3NDUsIDg3NDgsIDg3NTEsIDg3NTQsIDg3NTcsIAotICAgIDg3NjAsIDg3NjMsIDg3NjcsIDg3NzEsIDg3NzUsIDg3NzgsIDg3ODEsIDg3ODQsIDg3ODcsIDg3OTAsIDg3OTMsIDg3OTYsIAotICAgIDg3OTksIDg4MDIsIDg4MDUsIDg4MDgsIDg4MTEsIDg4MTQsIDg4MTcsIDg4MjAsIDg4MjMsIDg4MjYsIDg4MjksIDg4MzIsIAotICAgIDg4MzUsIDg4MzgsIDg4NDEsIDg4NDQsIDg4NDcsIDg4NTAsIDg4NTMsIDg4NTYsIDg4NTksIDg4NjIsIDg4NjUsIDg4NjgsIAotICAgIDg4NzEsIDg4NzQsIDg4NzcsIDg4ODAsIDg4ODMsIDg4ODYsIDg4ODksIDg4OTIsIDg4OTUsIDg4OTgsIDg5MDEsIDg5MDQsIAotICAgIDg5MDcsIDg5MTAsIDg5MTMsIDg5MTYsIDg5MTksIDg5MjIsIDg5MjUsIDg5MjgsIDg5MzEsIDg5MzQsIDg5MzcsIDg5NDAsIAotICAgIDg5NDMsIDg5NDYsIDg5NDksIDg5NTIsIDg5NTUsIDg5NTgsIDg5NjEsIDg5NjQsIDg5NjcsIDg5NzAsIDg5NzMsIDg5NzYsIAotICAgIDg5NzksIDg5ODIsIDg5ODUsIDg5ODgsIDg5OTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDg5OTQsIDg5OTgsIDkwMDIsIDkwMDYsIDkwMTAsIDkwMTQsIDkwMTgsIDkwMjIsIDkwMjYsIDkwMzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5MzEsIDc5MzMsIDc5MzUsIDc5MzcsIDc5MzksIDc5NDEsIDc5NDMsIDc5NDUsIAorICAgIDc5NDcsIDc5NDksIDc5NTEsIDc5NTMsIDc5NTUsIDc5NTcsIDc5NTksIDc5NjEsIDc5NjMsIDc5NjUsIDc5NjcsIDc5NjksIAorICAgIDc5NzEsIDc5NzMsIDc5NzUsIDc5NzcsIDc5ODAsIDc5ODMsIDc5ODYsIDc5ODksIDc5OTIsIDc5OTUsIDc5OTgsIDgwMDEsIAorICAgIDgwMDQsIDgwMDcsIDgwMTAsIDgwMTMsIDgwMTYsIDgwMTksIDgwMjIsIDgwMjUsIDgwMjgsIDgwMzEsIDgwMzMsIDgwMzUsIAorICAgIDgwMzcsIDgwMzksIDgwNDIsIDgwNDUsIDgwNDgsIDgwNTEsIDgwNTQsIDgwNTcsIDgwNjAsIDgwNjMsIDgwNjYsIDgwNjksIAorICAgIDgwNzIsIDgwNzUsIDgwNzgsIDgwODEsIDgwODQsIDgwODcsIDgwOTAsIDgwOTMsIDgwOTYsIDgwOTksIDgxMDIsIDgxMDUsIAorICAgIDgxMDgsIDgxMTEsIDgxMTQsIDgxMTcsIDgxMjAsIDgxMjMsIDgxMjYsIDgxMjksIDgxMzIsIDgxMzUsIDgxMzgsIDgxNDEsIAorICAgIDgxNDQsIDgxNDcsIDgxNTAsIDgxNTMsIDgxNTYsIDgxNTksIDgxNjIsIDgxNjUsIDgxNjgsIDgxNzEsIDgxNzQsIDgxNzcsIAorICAgIDgxODAsIDgxODMsIDgxODYsIDgxODksIDgxOTIsIDgxOTUsIDgxOTgsIDgyMDEsIDgyMDQsIDgyMDcsIDgyMTAsIDgyMTMsIAorICAgIDgyMTYsIDgyMTksIDgyMjIsIDgyMjUsIDgyMjgsIDgyMzEsIDgyMzQsIDgyMzcsIDgyNDAsIDgyNDMsIDgyNDYsIDgyNDksIAorICAgIDgyNTIsIDgyNTUsIDgyNTgsIDgyNjEsIDgyNjQsIDgyNjcsIDgyNzAsIDgyNzMsIDgyNzYsIDgyNzksIDgyODIsIDgyODUsIAorICAgIDgyODgsIDgyOTEsIDgyOTQsIDgyOTcsIDgzMDAsIDgzMDMsIDgzMDYsIDgzMDksIDgzMTIsIDgzMTUsIDgzMTgsIDgzMjEsIAorICAgIDgzMjUsIDgzMjksIDgzMzMsIDgzMzcsIDgzNDEsIDgzNDUsIDgzNDgsIDgzNTEsIDgzNTQsIDgzNTcsIDgzNjAsIDgzNjMsIAorICAgIDgzNjYsIDgzNjksIDgzNzIsIDgzNzUsIDgzNzgsIDgzODEsIDgzODQsIDgzODcsIDgzOTAsIDgzOTMsIDgzOTYsIDgzOTksIAorICAgIDg0MDIsIDg0MDUsIDg0MDgsIDg0MTEsIDg0MTQsIDg0MTcsIDg0MjAsIDg0MjMsIDg0MjYsIDg0MjksIDg0MzIsIDg0MzUsIAorICAgIDg0MzgsIDg0NDEsIDg0NDQsIDg0NDcsIDg0NTAsIDg0NTMsIDg0NTYsIDg0NTksIDg0NjIsIDg0NjUsIDg0NjgsIDg0NzEsIAorICAgIDg0NzQsIDg0NzcsIDg0ODAsIDg0ODMsIDg0ODYsIDg0ODksIDg0OTIsIDg0OTUsIDg0OTgsIDg1MDEsIDg1MDQsIDg1MDcsIAorICAgIDg1MTAsIDg1MTMsIDg1MTYsIDg1MTksIDg1MjIsIDg1MjUsIDg1MjgsIDg1MzEsIDg1MzQsIDg1MzcsIDg1NDAsIDg1NDMsIAorICAgIDg1NDYsIDg1NDksIDg1NTIsIDg1NTUsIDg1NTgsIDg1NjEsIDg1NjQsIDg1NjcsIDg1NzAsIDg1NzMsIDg1NzYsIDg1NzksIAorICAgIDg1ODIsIDg1ODUsIDg1ODgsIDg1OTEsIDg1OTQsIDg1OTcsIDg2MDAsIDg2MDMsIDg2MDYsIDg2MDksIDg2MTIsIDg2MTUsIAorICAgIDg2MTgsIDg2MjEsIDg2MjQsIDg2MjcsIDg2MzAsIDg2MzMsIDg2MzYsIDg2MzksIDg2NDIsIDg2NDUsIDg2NDgsIDg2NTEsIAorICAgIDg2NTQsIDg2NTcsIDg2NjAsIDg2NjMsIDg2NjYsIDg2NjksIDg2NzIsIDg2NzUsIDg2NzgsIDg2ODEsIDg2ODQsIDg2ODcsIAorICAgIDg2OTAsIDg2OTMsIDg2OTYsIDg2OTksIDg3MDIsIDg3MDUsIDg3MDgsIDg3MTEsIDg3MTQsIDg3MTcsIDg3MjAsIDg3MjMsIAorICAgIDg3MjYsIDg3MjksIDg3MzIsIDg3MzUsIDg3MzgsIDg3NDEsIDg3NDQsIDg3NDcsIDg3NTAsIDg3NTMsIDg3NTYsIDg3NTksIAorICAgIDg3NjIsIDg3NjUsIDg3NjgsIDg3NzEsIDg3NzUsIDg3NzksIDg3ODMsIDg3ODYsIDg3ODksIDg3OTIsIDg3OTUsIDg3OTgsIAorICAgIDg4MDEsIDg4MDQsIDg4MDcsIDg4MTAsIDg4MTMsIDg4MTYsIDg4MTksIDg4MjIsIDg4MjUsIDg4MjgsIDg4MzEsIDg4MzQsIAorICAgIDg4MzcsIDg4NDAsIDg4NDMsIDg4NDYsIDg4NDksIDg4NTIsIDg4NTUsIDg4NTgsIDg4NjEsIDg4NjQsIDg4NjcsIDg4NzAsIAorICAgIDg4NzMsIDg4NzYsIDg4NzksIDg4ODIsIDg4ODUsIDg4ODgsIDg4OTEsIDg4OTQsIDg4OTcsIDg5MDAsIDg5MDMsIDg5MDYsIAorICAgIDg5MDksIDg5MTIsIDg5MTUsIDg5MTgsIDg5MjEsIDg5MjQsIDg5MjcsIDg5MzAsIDg5MzMsIDg5MzYsIDg5MzksIDg5NDIsIAorICAgIDg5NDUsIDg5NDgsIDg5NTEsIDg5NTQsIDg5NTcsIDg5NjAsIDg5NjMsIDg5NjYsIDg5NjksIDg5NzIsIDg5NzUsIDg5NzgsIAorICAgIDg5ODEsIDg5ODQsIDg5ODcsIDg5OTAsIDg5OTMsIDg5OTYsIDg5OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwMDIsIDkwMDYsIDkwMTAsIDkwMTQsIDkwMTgsIDkwMjIsIDkwMjYsIDkwMzAsIAogICAgIDkwMzQsIDkwMzgsIDkwNDIsIDkwNDYsIDkwNTAsIDkwNTQsIDkwNTgsIDkwNjIsIDkwNjYsIDkwNzAsIDkwNzQsIDkwNzgsIAogICAgIDkwODIsIDkwODYsIDkwOTAsIDkwOTQsIDkwOTgsIDkxMDIsIDkxMDYsIDkxMTAsIDkxMTQsIDkxMTgsIDkxMjIsIDkxMjYsIAogICAgIDkxMzAsIDkxMzQsIDkxMzgsIDkxNDIsIDkxNDYsIDkxNTAsIDkxNTQsIDkxNTgsIDkxNjIsIDkxNjYsIDkxNzAsIDkxNzQsIAogICAgIDkxNzgsIDkxODIsIDkxODYsIDkxOTAsIDkxOTQsIDkxOTgsIDkyMDIsIDkyMDYsIDkyMTAsIDkyMTQsIDkyMTgsIDkyMjIsIAotICAgIDkyMjYsIDkyMzAsIDkyMzQsIDkyMzgsIDkyNDIsIDkyNDYsIDAsIDAsIDkyNTAsIDkyNTQsIDkyNTgsIDkyNjIsIDkyNjYsIAorICAgIDkyMjYsIDkyMzAsIDkyMzQsIDkyMzgsIDkyNDIsIDkyNDYsIDkyNTAsIDkyNTQsIDAsIDAsIDkyNTgsIDkyNjIsIDkyNjYsIAogICAgIDkyNzAsIDkyNzQsIDkyNzgsIDkyODIsIDkyODYsIDkyOTAsIDkyOTQsIDkyOTgsIDkzMDIsIDkzMDYsIDkzMTAsIDkzMTQsIAogICAgIDkzMTgsIDkzMjIsIDkzMjYsIDkzMzAsIDkzMzQsIDkzMzgsIDkzNDIsIDkzNDYsIDkzNTAsIDkzNTQsIDkzNTgsIDkzNjIsIAogICAgIDkzNjYsIDkzNzAsIDkzNzQsIDkzNzgsIDkzODIsIDkzODYsIDkzOTAsIDkzOTQsIDkzOTgsIDk0MDIsIDk0MDYsIDk0MTAsIAogICAgIDk0MTQsIDk0MTgsIDk0MjIsIDk0MjYsIDk0MzAsIDk0MzQsIDk0MzgsIDk0NDIsIDk0NDYsIDk0NTAsIDk0NTQsIDk0NTgsIAotICAgIDk0NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0NjYsIDk0NzAsIDk0NzQsIAotICAgIDk0NzksIDk0ODQsIDk0ODksIDk0OTQsIDk0OTksIDk1MDQsIDk1MDksIDk1MTMsIDk1MzIsIDk1NDEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NDYsIDk1NDgsIDk1NTAsIDk1NTIsIAotICAgIDk1NTQsIDk1NTYsIDk1NTgsIDk1NjAsIDk1NjIsIDk1NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NjYsIDk1NjgsIDk1NzAsIDk1NzIsIDk1NzQsIDk1NzYsIDk1NzgsIAotICAgIDk1ODAsIDk1ODIsIDk1ODQsIDk1ODYsIDk1ODgsIDk1OTAsIDk1OTIsIDk1OTQsIDk1OTYsIDk1OTgsIDk2MDAsIDk2MDIsIAotICAgIDk2MDQsIDk2MDYsIDAsIDAsIDk2MDgsIDk2MTAsIDk2MTIsIDk2MTQsIDk2MTYsIDk2MTgsIDk2MjAsIDk2MjIsIDk2MjQsIAotICAgIDk2MjYsIDk2MjgsIDk2MzAsIDAsIDk2MzIsIDk2MzQsIDk2MzYsIDk2MzgsIDk2NDAsIDk2NDIsIDk2NDQsIDk2NDYsIAotICAgIDk2NDgsIDk2NTAsIDk2NTIsIDk2NTQsIDk2NTYsIDk2NTgsIDk2NjAsIDk2NjIsIDk2NjQsIDk2NjYsIDk2NjgsIDAsIAotICAgIDk2NzAsIDk2NzIsIDk2NzQsIDk2NzYsIDAsIDAsIDAsIDAsIDk2NzgsIDk2ODEsIDk2ODQsIDAsIDk2ODcsIDAsIDk2OTAsIAotICAgIDk2OTMsIDk2OTYsIDk2OTksIDk3MDIsIDk3MDUsIDk3MDgsIDk3MTEsIDk3MTQsIDk3MTcsIDk3MjAsIDk3MjIsIDk3MjQsIAotICAgIDk3MjYsIDk3MjgsIDk3MzAsIDk3MzIsIDk3MzQsIDk3MzYsIDk3MzgsIDk3NDAsIDk3NDIsIDk3NDQsIDk3NDYsIDk3NDgsIAotICAgIDk3NTAsIDk3NTIsIDk3NTQsIDk3NTYsIDk3NTgsIDk3NjAsIDk3NjIsIDk3NjQsIDk3NjYsIDk3NjgsIDk3NzAsIDk3NzIsIAotICAgIDk3NzQsIDk3NzYsIDk3NzgsIDk3ODAsIDk3ODIsIDk3ODQsIDk3ODYsIDk3ODgsIDk3OTAsIDk3OTIsIDk3OTQsIDk3OTYsIAotICAgIDk3OTgsIDk4MDAsIDk4MDIsIDk4MDQsIDk4MDYsIDk4MDgsIDk4MTAsIDk4MTIsIDk4MTQsIDk4MTYsIDk4MTgsIDk4MjAsIAotICAgIDk4MjIsIDk4MjQsIDk4MjYsIDk4MjgsIDk4MzAsIDk4MzIsIDk4MzQsIDk4MzYsIDk4MzgsIDk4NDAsIDk4NDIsIDk4NDQsIAotICAgIDk4NDYsIDk4NDgsIDk4NTAsIDk4NTIsIDk4NTQsIDk4NTYsIDk4NTgsIDk4NjAsIDk4NjIsIDk4NjQsIDk4NjYsIDk4NjgsIAotICAgIDk4NzAsIDk4NzIsIDk4NzQsIDk4NzYsIDk4NzgsIDk4ODAsIDk4ODIsIDk4ODQsIDk4ODYsIDk4ODgsIDk4OTAsIDk4OTIsIAotICAgIDk4OTQsIDk4OTYsIDk4OTgsIDk5MDAsIDk5MDIsIDk5MDQsIDk5MDYsIDk5MDgsIDk5MTAsIDk5MTIsIDk5MTQsIDk5MTYsIAotICAgIDk5MTgsIDk5MjAsIDk5MjIsIDk5MjQsIDk5MjYsIDk5MjgsIDk5MzAsIDk5MzIsIDk5MzQsIDk5MzYsIDk5MzgsIDk5NDAsIAotICAgIDk5NDIsIDk5NDQsIDk5NDYsIDk5NDgsIDk5NTAsIDk5NTIsIDk5NTQsIDk5NTcsIDk5NjAsIDk5NjMsIDk5NjYsIDk5NjksIAotICAgIDk5NzIsIDk5NzUsIDAsIDAsIDAsIDAsIDk5NzgsIDk5ODAsIDk5ODIsIDk5ODQsIDk5ODYsIDk5ODgsIDk5OTAsIDk5OTIsIAotICAgIDk5OTQsIDk5OTYsIDk5OTgsIDEwMDAwLCAxMDAwMiwgMTAwMDQsIDEwMDA2LCAxMDAwOCwgMTAwMTAsIDEwMDEyLCAxMDAxNCwgCi0gICAgMTAwMTYsIDEwMDE4LCAxMDAyMCwgMTAwMjIsIDEwMDI0LCAxMDAyNiwgMTAwMjgsIDEwMDMwLCAxMDAzMiwgMTAwMzQsIAotICAgIDEwMDM2LCAxMDAzOCwgMTAwNDAsIDEwMDQyLCAxMDA0NCwgMTAwNDYsIDEwMDQ4LCAxMDA1MCwgMTAwNTIsIDEwMDU0LCAKLSAgICAxMDA1NiwgMTAwNTgsIDEwMDYwLCAxMDA2MiwgMTAwNjQsIDEwMDY2LCAxMDA2OCwgMTAwNzAsIDEwMDcyLCAxMDA3NCwgCi0gICAgMTAwNzYsIDEwMDc4LCAxMDA4MCwgMTAwODIsIDEwMDg0LCAxMDA4NiwgMTAwODgsIDEwMDkwLCAxMDA5MiwgMTAwOTQsIAotICAgIDEwMDk2LCAxMDA5OCwgMTAxMDAsIDEwMTAyLCAxMDEwNCwgMTAxMDYsIDEwMTA4LCAxMDExMCwgMTAxMTIsIDEwMTE0LCAKLSAgICAxMDExNiwgMTAxMTgsIDEwMTIwLCAxMDEyMiwgMTAxMjQsIDEwMTI2LCAxMDEyOCwgMTAxMzAsIDEwMTMyLCAxMDEzNCwgCi0gICAgMTAxMzYsIDEwMTM4LCAxMDE0MCwgMTAxNDIsIDEwMTQ0LCAxMDE0NiwgMTAxNDgsIDEwMTUwLCAxMDE1MiwgMTAxNTQsIAotICAgIDEwMTU2LCAxMDE1OCwgMTAxNjAsIDEwMTYyLCAxMDE2NCwgMTAxNjYsIDEwMTY4LCAxMDE3MCwgMTAxNzIsIDEwMTc0LCAKLSAgICAxMDE3NiwgMTAxNzgsIDEwMTgwLCAxMDE4MiwgMTAxODQsIDEwMTg2LCAxMDE4OCwgMTAxOTAsIDEwMTkyLCAxMDE5NCwgCi0gICAgMTAxOTYsIDEwMTk4LCAxMDIwMCwgMTAyMDIsIDEwMjA0LCAxMDIwNiwgMTAyMDgsIDEwMjEwLCAxMDIxMiwgMTAyMTQsIAotICAgIDEwMjE2LCAxMDIxOCwgMTAyMjAsIDEwMjIyLCAxMDIyNCwgMTAyMjYsIDEwMjI4LCAxMDIzMCwgMTAyMzIsIDEwMjM0LCAKLSAgICAxMDIzNiwgMTAyMzgsIDEwMjQwLCAxMDI0MiwgMTAyNDQsIDEwMjQ2LCAxMDI0OCwgMTAyNTAsIDEwMjUyLCAxMDI1NCwgCi0gICAgMTAyNTYsIDEwMjU4LCAxMDI2MCwgMTAyNjIsIDEwMjY0LCAxMDI2NiwgMTAyNjgsIDEwMjcwLCAxMDI3MiwgMTAyNzQsIAotICAgIDEwMjc2LCAxMDI3OCwgMTAyODAsIDEwMjgyLCAxMDI4NCwgMTAyODYsIDEwMjg4LCAxMDI5MCwgMTAyOTIsIDEwMjk0LCAKLSAgICAxMDI5NiwgMTAyOTgsIDEwMzAwLCAxMDMwMiwgMTAzMDQsIDEwMzA2LCAxMDMwOCwgMTAzMTAsIDEwMzEyLCAxMDMxNCwgCi0gICAgMTAzMTYsIDEwMzE4LCAxMDMyMCwgMTAzMjIsIDEwMzI0LCAxMDMyNiwgMTAzMjgsIDEwMzMwLCAxMDMzMiwgMTAzMzQsIAotICAgIDEwMzM2LCAxMDMzOCwgMTAzNDAsIDEwMzQyLCAxMDM0NCwgMTAzNDYsIDEwMzQ4LCAxMDM1MCwgMTAzNTIsIDEwMzU0LCAKLSAgICAxMDM1NiwgMCwgMCwgMCwgMTAzNTgsIDEwMzYwLCAxMDM2MiwgMTAzNjQsIDEwMzY2LCAxMDM2OCwgMCwgMCwgMTAzNzAsIAotICAgIDEwMzcyLCAxMDM3NCwgMTAzNzYsIDEwMzc4LCAxMDM4MCwgMCwgMCwgMTAzODIsIDEwMzg0LCAxMDM4NiwgMTAzODgsIAotICAgIDEwMzkwLCAxMDM5MiwgMCwgMCwgMTAzOTQsIDEwMzk2LCAxMDM5OCwgMCwgMCwgMCwgMTA0MDAsIDEwNDAyLCAxMDQwNCwgCi0gICAgMTA0MDYsIDEwNDA4LCAxMDQxMCwgMTA0MTIsIDAsIDEwNDE0LCAxMDQxNiwgMTA0MTgsIDEwNDIwLCAxMDQyMiwgMTA0MjQsIAotICAgIDEwNDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NDYyLCA5NDY2LCA5NDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDc0LCAKKyAgICA5NDc4LCA5NDgyLCA5NDg3LCA5NDkyLCA5NDk3LCA5NTAyLCA5NTA3LCA5NTEyLCA5NTE3LCA5NTIxLCA5NTQwLCA5NTQ5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTU0LCA5NTU2LCAKKyAgICA5NTU4LCA5NTYwLCA5NTYyLCA5NTY0LCA5NTY2LCA5NTY4LCA5NTcwLCA5NTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTc0LCA5NTc2LCA5NTc4LCA5NTgwLCA5NTgyLCAKKyAgICA5NTg0LCA5NTg2LCA5NTg4LCA5NTkwLCA5NTkyLCA5NTk0LCA5NTk2LCA5NTk4LCA5NjAwLCA5NjAyLCA5NjA0LCA5NjA2LCAKKyAgICA5NjA4LCA5NjEwLCA5NjEyLCA5NjE0LCAwLCAwLCA5NjE2LCA5NjE4LCA5NjIwLCA5NjIyLCA5NjI0LCA5NjI2LCA5NjI4LCAKKyAgICA5NjMwLCA5NjMyLCA5NjM0LCA5NjM2LCA5NjM4LCAwLCA5NjQwLCA5NjQyLCA5NjQ0LCA5NjQ2LCA5NjQ4LCA5NjUwLCAKKyAgICA5NjUyLCA5NjU0LCA5NjU2LCA5NjU4LCA5NjYwLCA5NjYyLCA5NjY0LCA5NjY2LCA5NjY4LCA5NjcwLCA5NjcyLCA5Njc0LCAKKyAgICA5Njc2LCAwLCA5Njc4LCA5NjgwLCA5NjgyLCA5Njg0LCAwLCAwLCAwLCAwLCA5Njg2LCA5Njg5LCA5NjkyLCAwLCA5Njk1LCAKKyAgICAwLCA5Njk4LCA5NzAxLCA5NzA0LCA5NzA3LCA5NzEwLCA5NzEzLCA5NzE2LCA5NzE5LCA5NzIyLCA5NzI1LCA5NzI4LCAKKyAgICA5NzMwLCA5NzMyLCA5NzM0LCA5NzM2LCA5NzM4LCA5NzQwLCA5NzQyLCA5NzQ0LCA5NzQ2LCA5NzQ4LCA5NzUwLCA5NzUyLCAKKyAgICA5NzU0LCA5NzU2LCA5NzU4LCA5NzYwLCA5NzYyLCA5NzY0LCA5NzY2LCA5NzY4LCA5NzcwLCA5NzcyLCA5Nzc0LCA5Nzc2LCAKKyAgICA5Nzc4LCA5NzgwLCA5NzgyLCA5Nzg0LCA5Nzg2LCA5Nzg4LCA5NzkwLCA5NzkyLCA5Nzk0LCA5Nzk2LCA5Nzk4LCA5ODAwLCAKKyAgICA5ODAyLCA5ODA0LCA5ODA2LCA5ODA4LCA5ODEwLCA5ODEyLCA5ODE0LCA5ODE2LCA5ODE4LCA5ODIwLCA5ODIyLCA5ODI0LCAKKyAgICA5ODI2LCA5ODI4LCA5ODMwLCA5ODMyLCA5ODM0LCA5ODM2LCA5ODM4LCA5ODQwLCA5ODQyLCA5ODQ0LCA5ODQ2LCA5ODQ4LCAKKyAgICA5ODUwLCA5ODUyLCA5ODU0LCA5ODU2LCA5ODU4LCA5ODYwLCA5ODYyLCA5ODY0LCA5ODY2LCA5ODY4LCA5ODcwLCA5ODcyLCAKKyAgICA5ODc0LCA5ODc2LCA5ODc4LCA5ODgwLCA5ODgyLCA5ODg0LCA5ODg2LCA5ODg4LCA5ODkwLCA5ODkyLCA5ODk0LCA5ODk2LCAKKyAgICA5ODk4LCA5OTAwLCA5OTAyLCA5OTA0LCA5OTA2LCA5OTA4LCA5OTEwLCA5OTEyLCA5OTE0LCA5OTE2LCA5OTE4LCA5OTIwLCAKKyAgICA5OTIyLCA5OTI0LCA5OTI2LCA5OTI4LCA5OTMwLCA5OTMyLCA5OTM0LCA5OTM2LCA5OTM4LCA5OTQwLCA5OTQyLCA5OTQ0LCAKKyAgICA5OTQ2LCA5OTQ4LCA5OTUwLCA5OTUyLCA5OTU0LCA5OTU2LCA5OTU4LCA5OTYwLCA5OTYyLCA5OTY1LCA5OTY4LCA5OTcxLCAKKyAgICA5OTc0LCA5OTc3LCA5OTgwLCA5OTgzLCAwLCAwLCAwLCAwLCA5OTg2LCA5OTg4LCA5OTkwLCA5OTkyLCA5OTk0LCA5OTk2LCAKKyAgICA5OTk4LCAxMDAwMCwgMTAwMDIsIDEwMDA0LCAxMDAwNiwgMTAwMDgsIDEwMDEwLCAxMDAxMiwgMTAwMTQsIDEwMDE2LCAKKyAgICAxMDAxOCwgMTAwMjAsIDEwMDIyLCAxMDAyNCwgMTAwMjYsIDEwMDI4LCAxMDAzMCwgMTAwMzIsIDEwMDM0LCAxMDAzNiwgCisgICAgMTAwMzgsIDEwMDQwLCAxMDA0MiwgMTAwNDQsIDEwMDQ2LCAxMDA0OCwgMTAwNTAsIDEwMDUyLCAxMDA1NCwgMTAwNTYsIAorICAgIDEwMDU4LCAxMDA2MCwgMTAwNjIsIDEwMDY0LCAxMDA2NiwgMTAwNjgsIDEwMDcwLCAxMDA3MiwgMTAwNzQsIDEwMDc2LCAKKyAgICAxMDA3OCwgMTAwODAsIDEwMDgyLCAxMDA4NCwgMTAwODYsIDEwMDg4LCAxMDA5MCwgMTAwOTIsIDEwMDk0LCAxMDA5NiwgCisgICAgMTAwOTgsIDEwMTAwLCAxMDEwMiwgMTAxMDQsIDEwMTA2LCAxMDEwOCwgMTAxMTAsIDEwMTEyLCAxMDExNCwgMTAxMTYsIAorICAgIDEwMTE4LCAxMDEyMCwgMTAxMjIsIDEwMTI0LCAxMDEyNiwgMTAxMjgsIDEwMTMwLCAxMDEzMiwgMTAxMzQsIDEwMTM2LCAKKyAgICAxMDEzOCwgMTAxNDAsIDEwMTQyLCAxMDE0NCwgMTAxNDYsIDEwMTQ4LCAxMDE1MCwgMTAxNTIsIDEwMTU0LCAxMDE1NiwgCisgICAgMTAxNTgsIDEwMTYwLCAxMDE2MiwgMTAxNjQsIDEwMTY2LCAxMDE2OCwgMTAxNzAsIDEwMTcyLCAxMDE3NCwgMTAxNzYsIAorICAgIDEwMTc4LCAxMDE4MCwgMTAxODIsIDEwMTg0LCAxMDE4NiwgMTAxODgsIDEwMTkwLCAxMDE5MiwgMTAxOTQsIDEwMTk2LCAKKyAgICAxMDE5OCwgMTAyMDAsIDEwMjAyLCAxMDIwNCwgMTAyMDYsIDEwMjA4LCAxMDIxMCwgMTAyMTIsIDEwMjE0LCAxMDIxNiwgCisgICAgMTAyMTgsIDEwMjIwLCAxMDIyMiwgMTAyMjQsIDEwMjI2LCAxMDIyOCwgMTAyMzAsIDEwMjMyLCAxMDIzNCwgMTAyMzYsIAorICAgIDEwMjM4LCAxMDI0MCwgMTAyNDIsIDEwMjQ0LCAxMDI0NiwgMTAyNDgsIDEwMjUwLCAxMDI1MiwgMTAyNTQsIDEwMjU2LCAKKyAgICAxMDI1OCwgMTAyNjAsIDEwMjYyLCAxMDI2NCwgMTAyNjYsIDEwMjY4LCAxMDI3MCwgMTAyNzIsIDEwMjc0LCAxMDI3NiwgCisgICAgMTAyNzgsIDEwMjgwLCAxMDI4MiwgMTAyODQsIDEwMjg2LCAxMDI4OCwgMTAyOTAsIDEwMjkyLCAxMDI5NCwgMTAyOTYsIAorICAgIDEwMjk4LCAxMDMwMCwgMTAzMDIsIDEwMzA0LCAxMDMwNiwgMTAzMDgsIDEwMzEwLCAxMDMxMiwgMTAzMTQsIDEwMzE2LCAKKyAgICAxMDMxOCwgMTAzMjAsIDEwMzIyLCAxMDMyNCwgMTAzMjYsIDEwMzI4LCAxMDMzMCwgMTAzMzIsIDEwMzM0LCAxMDMzNiwgCisgICAgMTAzMzgsIDEwMzQwLCAxMDM0MiwgMTAzNDQsIDEwMzQ2LCAxMDM0OCwgMTAzNTAsIDEwMzUyLCAxMDM1NCwgMTAzNTYsIAorICAgIDEwMzU4LCAxMDM2MCwgMTAzNjIsIDEwMzY0LCAwLCAwLCAwLCAxMDM2NiwgMTAzNjgsIDEwMzcwLCAxMDM3MiwgMTAzNzQsIAorICAgIDEwMzc2LCAwLCAwLCAxMDM3OCwgMTAzODAsIDEwMzgyLCAxMDM4NCwgMTAzODYsIDEwMzg4LCAwLCAwLCAxMDM5MCwgCisgICAgMTAzOTIsIDEwMzk0LCAxMDM5NiwgMTAzOTgsIDEwNDAwLCAwLCAwLCAxMDQwMiwgMTA0MDQsIDEwNDA2LCAwLCAwLCAwLCAKKyAgICAxMDQwOCwgMTA0MTAsIDEwNDEyLCAxMDQxNCwgMTA0MTYsIDEwNDE4LCAxMDQyMCwgMCwgMTA0MjIsIDEwNDI0LCAxMDQyNiwgCisgICAgMTA0MjgsIDEwNDMwLCAxMDQzMiwgMTA0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEwNDI4LCAwLCAxMDQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDM2LCAwLCAxMDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDM3LCAxMDQ0MCwgMTA0NDMsIDEwNDQ2LCAxMDQ0OSwgCi0gICAgMTA0NTIsIDEwNDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ1OCwgMTA0NjEsIAotICAgIDEwNDY0LCAxMDQ2NywgMTA0NzAsIDEwNDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDQ3NiwgMTA0NzgsIDEwNDgwLCAxMDQ4MiwgMTA0ODQsIDEwNDg2LCAxMDQ4OCwgMTA0OTAsIDEwNDkyLCAxMDQ5NCwgCi0gICAgMTA0OTYsIDEwNDk4LCAxMDUwMCwgMTA1MDIsIDEwNTA0LCAxMDUwNiwgMTA1MDgsIDEwNTEwLCAxMDUxMiwgMTA1MTQsIAotICAgIDEwNTE2LCAxMDUxOCwgMTA1MjAsIDEwNTIyLCAxMDUyNCwgMTA1MjYsIDEwNTI4LCAxMDUzMCwgMTA1MzIsIDEwNTM0LCAKLSAgICAxMDUzNiwgMTA1MzgsIDEwNTQwLCAxMDU0MiwgMTA1NDQsIDEwNTQ2LCAxMDU0OCwgMTA1NTAsIDEwNTUyLCAxMDU1NCwgCi0gICAgMTA1NTYsIDEwNTU4LCAxMDU2MCwgMTA1NjIsIDEwNTY0LCAxMDU2NiwgMTA1NjgsIDEwNTcwLCAxMDU3MiwgMTA1NzQsIAotICAgIDEwNTc2LCAxMDU3OCwgMTA1ODAsIDEwNTgyLCAxMDU4NCwgMTA1ODYsIDEwNTg4LCAxMDU5MCwgMTA1OTIsIDEwNTk0LCAKLSAgICAxMDU5NiwgMTA1OTgsIDEwNjAwLCAxMDYwMiwgMTA2MDQsIDEwNjA2LCAxMDYwOCwgMTA2MTAsIDEwNjEyLCAxMDYxNCwgCi0gICAgMTA2MTYsIDEwNjE4LCAxMDYyMCwgMTA2MjIsIDEwNjI0LCAxMDYyNiwgMTA2MjgsIDEwNjMwLCAxMDYzMiwgMTA2MzQsIAotICAgIDEwNjM2LCAxMDYzOCwgMTA2NDAsIDEwNjQyLCAxMDY0NCwgMCwgMTA2NDYsIDEwNjQ4LCAxMDY1MCwgMTA2NTIsIDEwNjU0LCAKLSAgICAxMDY1NiwgMTA2NTgsIDEwNjYwLCAxMDY2MiwgMTA2NjQsIDEwNjY2LCAxMDY2OCwgMTA2NzAsIDEwNjcyLCAxMDY3NCwgCi0gICAgMTA2NzYsIDEwNjc4LCAxMDY4MCwgMTA2ODIsIDEwNjg0LCAxMDY4NiwgMTA2ODgsIDEwNjkwLCAxMDY5MiwgMTA2OTQsIAotICAgIDEwNjk2LCAxMDY5OCwgMTA3MDAsIDEwNzAyLCAxMDcwNCwgMTA3MDYsIDEwNzA4LCAxMDcxMCwgMTA3MTIsIDEwNzE0LCAKLSAgICAxMDcxNiwgMTA3MTgsIDEwNzIwLCAxMDcyMiwgMTA3MjQsIDEwNzI2LCAxMDcyOCwgMTA3MzAsIDEwNzMyLCAxMDczNCwgCi0gICAgMTA3MzYsIDEwNzM4LCAxMDc0MCwgMTA3NDIsIDEwNzQ0LCAxMDc0NiwgMTA3NDgsIDEwNzUwLCAxMDc1MiwgMTA3NTQsIAotICAgIDEwNzU2LCAxMDc1OCwgMTA3NjAsIDEwNzYyLCAxMDc2NCwgMTA3NjYsIDEwNzY4LCAxMDc3MCwgMTA3NzIsIDEwNzc0LCAKLSAgICAxMDc3NiwgMTA3NzgsIDEwNzgwLCAxMDc4MiwgMTA3ODQsIDEwNzg2LCAwLCAxMDc4OCwgMTA3OTAsIDAsIDAsIDEwNzkyLCAKLSAgICAwLCAwLCAxMDc5NCwgMTA3OTYsIDAsIDAsIDEwNzk4LCAxMDgwMCwgMTA4MDIsIDEwODA0LCAwLCAxMDgwNiwgMTA4MDgsIAotICAgIDEwODEwLCAxMDgxMiwgMTA4MTQsIDEwODE2LCAxMDgxOCwgMTA4MjAsIDEwODIyLCAxMDgyNCwgMTA4MjYsIDEwODI4LCAwLCAKLSAgICAxMDgzMCwgMCwgMTA4MzIsIDEwODM0LCAxMDgzNiwgMTA4MzgsIDEwODQwLCAxMDg0MiwgMTA4NDQsIDAsIDEwODQ2LCAKLSAgICAxMDg0OCwgMTA4NTAsIDEwODUyLCAxMDg1NCwgMTA4NTYsIDEwODU4LCAxMDg2MCwgMTA4NjIsIDEwODY0LCAxMDg2NiwgCi0gICAgMTA4NjgsIDEwODcwLCAxMDg3MiwgMTA4NzQsIDEwODc2LCAxMDg3OCwgMTA4ODAsIDEwODgyLCAxMDg4NCwgMTA4ODYsIAotICAgIDEwODg4LCAxMDg5MCwgMTA4OTIsIDEwODk0LCAxMDg5NiwgMTA4OTgsIDEwOTAwLCAxMDkwMiwgMTA5MDQsIDEwOTA2LCAKLSAgICAxMDkwOCwgMTA5MTAsIDEwOTEyLCAxMDkxNCwgMTA5MTYsIDEwOTE4LCAxMDkyMCwgMTA5MjIsIDEwOTI0LCAxMDkyNiwgCi0gICAgMTA5MjgsIDEwOTMwLCAxMDkzMiwgMTA5MzQsIDEwOTM2LCAxMDkzOCwgMTA5NDAsIDEwOTQyLCAxMDk0NCwgMTA5NDYsIAotICAgIDEwOTQ4LCAxMDk1MCwgMTA5NTIsIDEwOTU0LCAxMDk1NiwgMTA5NTgsIDEwOTYwLCAxMDk2MiwgMTA5NjQsIDEwOTY2LCAKLSAgICAxMDk2OCwgMTA5NzAsIDEwOTcyLCAxMDk3NCwgMCwgMTA5NzYsIDEwOTc4LCAxMDk4MCwgMTA5ODIsIDAsIDAsIDEwOTg0LCAKLSAgICAxMDk4NiwgMTA5ODgsIDEwOTkwLCAxMDk5MiwgMTA5OTQsIDEwOTk2LCAxMDk5OCwgMCwgMTEwMDAsIDExMDAyLCAxMTAwNCwgCi0gICAgMTEwMDYsIDExMDA4LCAxMTAxMCwgMTEwMTIsIDAsIDExMDE0LCAxMTAxNiwgMTEwMTgsIDExMDIwLCAxMTAyMiwgMTEwMjQsIAotICAgIDExMDI2LCAxMTAyOCwgMTEwMzAsIDExMDMyLCAxMTAzNCwgMTEwMzYsIDExMDM4LCAxMTA0MCwgMTEwNDIsIDExMDQ0LCAKLSAgICAxMTA0NiwgMTEwNDgsIDExMDUwLCAxMTA1MiwgMTEwNTQsIDExMDU2LCAxMTA1OCwgMTEwNjAsIDExMDYyLCAxMTA2NCwgCi0gICAgMTEwNjYsIDExMDY4LCAwLCAxMTA3MCwgMTEwNzIsIDExMDc0LCAxMTA3NiwgMCwgMTEwNzgsIDExMDgwLCAxMTA4MiwgCi0gICAgMTEwODQsIDExMDg2LCAwLCAxMTA4OCwgMCwgMCwgMCwgMTEwOTAsIDExMDkyLCAxMTA5NCwgMTEwOTYsIDExMDk4LCAKLSAgICAxMTEwMCwgMTExMDIsIDAsIDExMTA0LCAxMTEwNiwgMTExMDgsIDExMTEwLCAxMTExMiwgMTExMTQsIDExMTE2LCAxMTExOCwgCi0gICAgMTExMjAsIDExMTIyLCAxMTEyNCwgMTExMjYsIDExMTI4LCAxMTEzMCwgMTExMzIsIDExMTM0LCAxMTEzNiwgMTExMzgsIAotICAgIDExMTQwLCAxMTE0MiwgMTExNDQsIDExMTQ2LCAxMTE0OCwgMTExNTAsIDExMTUyLCAxMTE1NCwgMTExNTYsIDExMTU4LCAKLSAgICAxMTE2MCwgMTExNjIsIDExMTY0LCAxMTE2NiwgMTExNjgsIDExMTcwLCAxMTE3MiwgMTExNzQsIDExMTc2LCAxMTE3OCwgCi0gICAgMTExODAsIDExMTgyLCAxMTE4NCwgMTExODYsIDExMTg4LCAxMTE5MCwgMTExOTIsIDExMTk0LCAxMTE5NiwgMTExOTgsIAotICAgIDExMjAwLCAxMTIwMiwgMTEyMDQsIDExMjA2LCAxMTIwOCwgMTEyMTAsIDExMjEyLCAxMTIxNCwgMTEyMTYsIDExMjE4LCAKLSAgICAxMTIyMCwgMTEyMjIsIDExMjI0LCAxMTIyNiwgMTEyMjgsIDExMjMwLCAxMTIzMiwgMTEyMzQsIDExMjM2LCAxMTIzOCwgCi0gICAgMTEyNDAsIDExMjQyLCAxMTI0NCwgMTEyNDYsIDExMjQ4LCAxMTI1MCwgMTEyNTIsIDExMjU0LCAxMTI1NiwgMTEyNTgsIAotICAgIDExMjYwLCAxMTI2MiwgMTEyNjQsIDExMjY2LCAxMTI2OCwgMTEyNzAsIDExMjcyLCAxMTI3NCwgMTEyNzYsIDExMjc4LCAKLSAgICAxMTI4MCwgMTEyODIsIDExMjg0LCAxMTI4NiwgMTEyODgsIDExMjkwLCAxMTI5MiwgMTEyOTQsIDExMjk2LCAxMTI5OCwgCi0gICAgMTEzMDAsIDExMzAyLCAxMTMwNCwgMTEzMDYsIDExMzA4LCAxMTMxMCwgMTEzMTIsIDExMzE0LCAxMTMxNiwgMTEzMTgsIAotICAgIDExMzIwLCAxMTMyMiwgMTEzMjQsIDExMzI2LCAxMTMyOCwgMTEzMzAsIDExMzMyLCAxMTMzNCwgMTEzMzYsIDExMzM4LCAKLSAgICAxMTM0MCwgMTEzNDIsIDExMzQ0LCAxMTM0NiwgMTEzNDgsIDExMzUwLCAxMTM1MiwgMTEzNTQsIDExMzU2LCAxMTM1OCwgCi0gICAgMTEzNjAsIDExMzYyLCAxMTM2NCwgMTEzNjYsIDExMzY4LCAxMTM3MCwgMTEzNzIsIDExMzc0LCAxMTM3NiwgMTEzNzgsIAotICAgIDExMzgwLCAxMTM4MiwgMTEzODQsIDExMzg2LCAxMTM4OCwgMTEzOTAsIDExMzkyLCAxMTM5NCwgMTEzOTYsIDExMzk4LCAKLSAgICAxMTQwMCwgMTE0MDIsIDExNDA0LCAxMTQwNiwgMTE0MDgsIDExNDEwLCAxMTQxMiwgMTE0MTQsIDExNDE2LCAxMTQxOCwgCi0gICAgMTE0MjAsIDExNDIyLCAxMTQyNCwgMTE0MjYsIDExNDI4LCAxMTQzMCwgMTE0MzIsIDExNDM0LCAxMTQzNiwgMTE0MzgsIAotICAgIDExNDQwLCAxMTQ0MiwgMTE0NDQsIDExNDQ2LCAxMTQ0OCwgMTE0NTAsIDExNDUyLCAxMTQ1NCwgMTE0NTYsIDExNDU4LCAKLSAgICAxMTQ2MCwgMTE0NjIsIDExNDY0LCAxMTQ2NiwgMTE0NjgsIDExNDcwLCAxMTQ3MiwgMTE0NzQsIDExNDc2LCAxMTQ3OCwgCi0gICAgMTE0ODAsIDExNDgyLCAxMTQ4NCwgMTE0ODYsIDExNDg4LCAxMTQ5MCwgMTE0OTIsIDExNDk0LCAxMTQ5NiwgMTE0OTgsIAotICAgIDExNTAwLCAxMTUwMiwgMTE1MDQsIDExNTA2LCAxMTUwOCwgMTE1MTAsIDExNTEyLCAxMTUxNCwgMTE1MTYsIDExNTE4LCAKLSAgICAxMTUyMCwgMTE1MjIsIDExNTI0LCAxMTUyNiwgMTE1MjgsIDExNTMwLCAxMTUzMiwgMTE1MzQsIDExNTM2LCAxMTUzOCwgCi0gICAgMTE1NDAsIDExNTQyLCAxMTU0NCwgMTE1NDYsIDExNTQ4LCAxMTU1MCwgMTE1NTIsIDExNTU0LCAxMTU1NiwgMTE1NTgsIAotICAgIDExNTYwLCAxMTU2MiwgMTE1NjQsIDExNTY2LCAxMTU2OCwgMTE1NzAsIDExNTcyLCAxMTU3NCwgMTE1NzYsIDExNTc4LCAKLSAgICAxMTU4MCwgMTE1ODIsIDExNTg0LCAxMTU4NiwgMTE1ODgsIDExNTkwLCAxMTU5MiwgMTE1OTQsIDExNTk2LCAxMTU5OCwgCi0gICAgMTE2MDAsIDExNjAyLCAxMTYwNCwgMTE2MDYsIDExNjA4LCAxMTYxMCwgMTE2MTIsIDExNjE0LCAxMTYxNiwgMTE2MTgsIAotICAgIDExNjIwLCAxMTYyMiwgMTE2MjQsIDExNjI2LCAxMTYyOCwgMTE2MzAsIDExNjMyLCAxMTYzNCwgMTE2MzYsIDExNjM4LCAKLSAgICAxMTY0MCwgMTE2NDIsIDExNjQ0LCAxMTY0NiwgMTE2NDgsIDExNjUwLCAxMTY1MiwgMTE2NTQsIDExNjU2LCAxMTY1OCwgCi0gICAgMTE2NjAsIDExNjYyLCAxMTY2NCwgMTE2NjYsIDExNjY4LCAxMTY3MCwgMTE2NzIsIDExNjc0LCAxMTY3NiwgMTE2NzgsIAotICAgIDExNjgwLCAxMTY4MiwgMTE2ODQsIDExNjg2LCAxMTY4OCwgMTE2OTAsIDExNjkyLCAxMTY5NCwgMTE2OTYsIDExNjk4LCAKLSAgICAxMTcwMCwgMTE3MDIsIDExNzA0LCAxMTcwNiwgMTE3MDgsIDExNzEwLCAxMTcxMiwgMTE3MTQsIDExNzE2LCAxMTcxOCwgCi0gICAgMTE3MjAsIDExNzIyLCAxMTcyNCwgMTE3MjYsIDExNzI4LCAxMTczMCwgMTE3MzIsIDExNzM0LCAxMTczNiwgMTE3MzgsIAotICAgIDExNzQwLCAxMTc0MiwgMTE3NDQsIDExNzQ2LCAxMTc0OCwgMTE3NTAsIDExNzUyLCAxMTc1NCwgMTE3NTYsIDExNzU4LCAKLSAgICAxMTc2MCwgMTE3NjIsIDExNzY0LCAxMTc2NiwgMTE3NjgsIDExNzcwLCAxMTc3MiwgMTE3NzQsIDExNzc2LCAxMTc3OCwgCi0gICAgMTE3ODAsIDExNzgyLCAwLCAwLCAxMTc4NCwgMTE3ODYsIDExNzg4LCAxMTc5MCwgMTE3OTIsIDExNzk0LCAxMTc5NiwgCi0gICAgMTE3OTgsIDExODAwLCAxMTgwMiwgMTE4MDQsIDExODA2LCAxMTgwOCwgMTE4MTAsIDExODEyLCAxMTgxNCwgMTE4MTYsIAotICAgIDExODE4LCAxMTgyMCwgMTE4MjIsIDExODI0LCAxMTgyNiwgMTE4MjgsIDExODMwLCAxMTgzMiwgMTE4MzQsIDExODM2LCAKLSAgICAxMTgzOCwgMTE4NDAsIDExODQyLCAxMTg0NCwgMTE4NDYsIDExODQ4LCAxMTg1MCwgMTE4NTIsIDExODU0LCAxMTg1NiwgCi0gICAgMTE4NTgsIDExODYwLCAxMTg2MiwgMTE4NjQsIDExODY2LCAxMTg2OCwgMTE4NzAsIDExODcyLCAxMTg3NCwgMTE4NzYsIAotICAgIDExODc4LCAxMTg4MCwgMTE4ODIsIDExODg0LCAxMTg4NiwgMTE4ODgsIDExODkwLCAxMTg5MiwgMTE4OTQsIDExODk2LCAKLSAgICAxMTg5OCwgMTE5MDAsIDExOTAyLCAxMTkwNCwgMTE5MDYsIDExOTA4LCAxMTkxMCwgMTE5MTIsIDExOTE0LCAxMTkxNiwgCi0gICAgMTE5MTgsIDExOTIwLCAxMTkyMiwgMTE5MjQsIDExOTI2LCAxMTkyOCwgMTE5MzAsIDExOTMyLCAxMTkzNCwgMTE5MzYsIAotICAgIDExOTM4LCAxMTk0MCwgMTE5NDIsIDExOTQ0LCAxMTk0NiwgMTE5NDgsIDExOTUwLCAxMTk1MiwgMTE5NTQsIDExOTU2LCAKLSAgICAxMTk1OCwgMTE5NjAsIDExOTYyLCAxMTk2NCwgMTE5NjYsIDExOTY4LCAxMTk3MCwgMTE5NzIsIDExOTc0LCAxMTk3NiwgCi0gICAgMTE5NzgsIDExOTgwLCAxMTk4MiwgMTE5ODQsIDExOTg2LCAxMTk4OCwgMTE5OTAsIDExOTkyLCAxMTk5NCwgMTE5OTYsIAotICAgIDExOTk4LCAxMjAwMCwgMTIwMDIsIDEyMDA0LCAxMjAwNiwgMTIwMDgsIDEyMDEwLCAxMjAxMiwgMTIwMTQsIDEyMDE2LCAKLSAgICAxMjAxOCwgMTIwMjAsIDEyMDIyLCAxMjAyNCwgMTIwMjYsIDEyMDI4LCAxMjAzMCwgMTIwMzIsIDEyMDM0LCAxMjAzNiwgCi0gICAgMTIwMzgsIDEyMDQwLCAxMjA0MiwgMTIwNDQsIDEyMDQ2LCAxMjA0OCwgMTIwNTAsIDEyMDUyLCAxMjA1NCwgMTIwNTYsIAotICAgIDEyMDU4LCAxMjA2MCwgMTIwNjIsIDEyMDY0LCAxMjA2NiwgMTIwNjgsIDEyMDcwLCAxMjA3MiwgMTIwNzQsIDEyMDc2LCAKLSAgICAxMjA3OCwgMTIwODAsIDEyMDgyLCAxMjA4NCwgMTIwODYsIDEyMDg4LCAxMjA5MCwgMTIwOTIsIDEyMDk0LCAxMjA5NiwgCi0gICAgMTIwOTgsIDEyMTAwLCAxMjEwMiwgMTIxMDQsIDEyMTA2LCAxMjEwOCwgMTIxMTAsIDEyMTEyLCAxMjExNCwgMTIxMTYsIAotICAgIDEyMTE4LCAxMjEyMCwgMTIxMjIsIDEyMTI0LCAxMjEyNiwgMTIxMjgsIDEyMTMwLCAxMjEzMiwgMTIxMzQsIDEyMTM2LCAKLSAgICAxMjEzOCwgMTIxNDAsIDEyMTQyLCAxMjE0NCwgMTIxNDYsIDEyMTQ4LCAxMjE1MCwgMTIxNTIsIDEyMTU0LCAxMjE1NiwgCi0gICAgMTIxNTgsIDEyMTYwLCAxMjE2MiwgMTIxNjQsIDEyMTY2LCAxMjE2OCwgMTIxNzAsIDEyMTcyLCAxMjE3NCwgMTIxNzYsIAotICAgIDEyMTc4LCAxMjE4MCwgMTIxODIsIDEyMTg0LCAxMjE4NiwgMTIxODgsIDEyMTkwLCAxMjE5MiwgMTIxOTQsIDEyMTk2LCAKLSAgICAxMjE5OCwgMTIyMDAsIDEyMjAyLCAxMjIwNCwgMTIyMDYsIDEyMjA4LCAxMjIxMCwgMTIyMTIsIDEyMjE0LCAxMjIxNiwgCi0gICAgMTIyMTgsIDEyMjIwLCAxMjIyMiwgMTIyMjQsIDEyMjI2LCAxMjIyOCwgMTIyMzAsIDEyMjMyLCAxMjIzNCwgMTIyMzYsIAotICAgIDEyMjM4LCAxMjI0MCwgMTIyNDIsIDEyMjQ0LCAxMjI0NiwgMTIyNDgsIDEyMjUwLCAxMjI1MiwgMTIyNTQsIDEyMjU2LCAKLSAgICAxMjI1OCwgMTIyNjAsIDEyMjYyLCAxMjI2NCwgMTIyNjYsIDEyMjY4LCAxMjI3MCwgMTIyNzIsIDEyMjc0LCAxMjI3NiwgCi0gICAgMTIyNzgsIDEyMjgwLCAxMjI4MiwgMTIyODQsIDEyMjg2LCAxMjI4OCwgMTIyOTAsIDEyMjkyLCAxMjI5NCwgMTIyOTYsIAotICAgIDEyMjk4LCAxMjMwMCwgMTIzMDIsIDEyMzA0LCAxMjMwNiwgMTIzMDgsIDEyMzEwLCAxMjMxMiwgMTIzMTQsIDEyMzE2LCAKLSAgICAxMjMxOCwgMTIzMjAsIDEyMzIyLCAxMjMyNCwgMTIzMjYsIDEyMzI4LCAxMjMzMCwgMTIzMzIsIDEyMzM0LCAxMjMzNiwgCi0gICAgMTIzMzgsIDEyMzQwLCAxMjM0MiwgMTIzNDQsIDEyMzQ2LCAxMjM0OCwgMTIzNTAsIDEyMzUyLCAxMjM1NCwgMTIzNTYsIAotICAgIDEyMzU4LCAxMjM2MCwgMTIzNjIsIDEyMzY0LCAxMjM2NiwgMCwgMCwgMTIzNjgsIDEyMzcwLCAxMjM3MiwgMTIzNzQsIAotICAgIDEyMzc2LCAxMjM3OCwgMTIzODAsIDEyMzgyLCAxMjM4NCwgMTIzODYsIDEyMzg4LCAxMjM5MCwgMTIzOTIsIDEyMzk0LCAKLSAgICAxMjM5NiwgMTIzOTgsIDEyNDAwLCAxMjQwMiwgMTI0MDQsIDEyNDA2LCAxMjQwOCwgMTI0MTAsIDEyNDEyLCAxMjQxNCwgCi0gICAgMTI0MTYsIDEyNDE4LCAxMjQyMCwgMTI0MjIsIDEyNDI0LCAxMjQyNiwgMTI0MjgsIDEyNDMwLCAxMjQzMiwgMTI0MzQsIAotICAgIDEyNDM2LCAxMjQzOCwgMTI0NDAsIDEyNDQyLCAxMjQ0NCwgMTI0NDYsIDEyNDQ4LCAxMjQ1MCwgMTI0NTIsIDEyNDU0LCAKLSAgICAxMjQ1NiwgMTI0NTgsIDEyNDYwLCAxMjQ2MiwgMTI0NjQsIDEyNDY2LCAxMjQ2OCwgMTI0NzEsIDEyNDc0LCAxMjQ3NywgCi0gICAgMTI0ODAsIDEyNDgzLCAxMjQ4NiwgMTI0ODksIDEyNDkyLCAxMjQ5NSwgMTI0OTgsIDAsIDAsIDAsIDAsIDAsIDEyNTAxLCAKLSAgICAxMjUwNSwgMTI1MDksIDEyNTEzLCAxMjUxNywgMTI1MjEsIDEyNTI1LCAxMjUyOSwgMTI1MzMsIDEyNTM3LCAxMjU0MSwgCi0gICAgMTI1NDUsIDEyNTQ5LCAxMjU1MywgMTI1NTcsIDEyNTYxLCAxMjU2NSwgMTI1NjksIDEyNTczLCAxMjU3NywgMTI1ODEsIAotICAgIDEyNTg1LCAxMjU4OSwgMTI1OTMsIDEyNTk3LCAxMjYwMSwgMTI2MDUsIDEyNjA5LCAxMjYxMSwgMTI2MTMsIDEyNjE2LCAwLCAKLSAgICAxMjYxOSwgMTI2MjEsIDEyNjIzLCAxMjYyNSwgMTI2MjcsIDEyNjI5LCAxMjYzMSwgMTI2MzMsIDEyNjM1LCAxMjYzNywgCi0gICAgMTI2MzksIDEyNjQxLCAxMjY0MywgMTI2NDUsIDEyNjQ3LCAxMjY0OSwgMTI2NTEsIDEyNjUzLCAxMjY1NSwgMTI2NTcsIAotICAgIDEyNjU5LCAxMjY2MSwgMTI2NjMsIDEyNjY1LCAxMjY2NywgMTI2NjksIDEyNjcxLCAxMjY3NCwgMTI2NzcsIDEyNjgwLCAKLSAgICAxMjY4MywgMTI2ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNjkwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjY5MywgMTI2OTYsIDEyNjk5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcwMSwgMTI3MDMsIDEyNzA1LCAxMjcwNywgMTI3MDksIDEyNzExLCAKLSAgICAxMjcxMywgMTI3MTUsIDEyNzE3LCAxMjcxOSwgMTI3MjEsIDEyNzIzLCAxMjcyNSwgMTI3MjcsIDEyNzI5LCAxMjczMSwgCi0gICAgMTI3MzMsIDEyNzM1LCAxMjczNywgMTI3MzksIDEyNzQxLCAxMjc0MywgMTI3NDUsIDEyNzQ3LCAxMjc0OSwgMTI3NTEsIAotICAgIDEyNzUzLCAxMjc1NSwgMTI3NTcsIDEyNzU5LCAxMjc2MSwgMTI3NjMsIDEyNzY1LCAxMjc2NywgMTI3NjksIDEyNzcxLCAKLSAgICAxMjc3MywgMTI3NzUsIDEyNzc3LCAxMjc3OSwgMTI3ODEsIDEyNzgzLCAxMjc4NSwgMCwgMCwgMCwgMCwgMCwgMTI3ODcsIAotICAgIDEyNzkxLCAxMjc5NSwgMTI3OTksIDEyODAzLCAxMjgwNywgMTI4MTEsIDEyODE1LCAxMjgxOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTI4MjMsIDEyODI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgyNywgMTI4MjksIDEyODMxLCAxMjgzMywgMTI4MzUsIAotICAgIDEyODM3LCAxMjgzOSwgMTI4NDEsIDEyODQzLCAxMjg0NSwgMTI4NDcsIDEyODQ5LCAxMjg1MSwgMTI4NTMsIDEyODU1LCAKLSAgICAxMjg1NywgMTI4NTksIDEyODYxLCAxMjg2MywgMTI4NjUsIDEyODY3LCAxMjg2OSwgMTI4NzEsIDEyODczLCAxMjg3NSwgCi0gICAgMTI4NzcsIDEyODc5LCAxMjg4MSwgMTI4ODMsIDEyODg1LCAxMjg4NywgMTI4ODksIDEyODkxLCAxMjg5MywgMTI4OTUsIAotICAgIDEyODk3LCAxMjg5OSwgMTI5MDEsIDEyOTAzLCAxMjkwNSwgMTI5MDcsIDEyOTA5LCAxMjkxMSwgMTI5MTMsIDEyOTE1LCAKLSAgICAxMjkxNywgMTI5MTksIDEyOTIxLCAxMjkyMywgMTI5MjUsIDEyOTI3LCAxMjkyOSwgMTI5MzEsIDEyOTMzLCAxMjkzNSwgCi0gICAgMTI5MzcsIDEyOTM5LCAxMjk0MSwgMTI5NDMsIDEyOTQ1LCAxMjk0NywgMTI5NDksIDEyOTUxLCAxMjk1MywgMTI5NTUsIAotICAgIDEyOTU3LCAxMjk1OSwgMTI5NjEsIDEyOTYzLCAxMjk2NSwgMTI5NjcsIDEyOTY5LCAxMjk3MSwgMTI5NzMsIDEyOTc1LCAKLSAgICAxMjk3NywgMTI5NzksIDEyOTgxLCAxMjk4MywgMTI5ODUsIDEyOTg3LCAxMjk4OSwgMTI5OTEsIDEyOTkzLCAxMjk5NSwgCi0gICAgMTI5OTcsIDEyOTk5LCAxMzAwMSwgMTMwMDMsIDEzMDA1LCAxMzAwNywgMTMwMDksIDEzMDExLCAxMzAxMywgMTMwMTUsIAotICAgIDEzMDE3LCAxMzAxOSwgMTMwMjEsIDEzMDIzLCAxMzAyNSwgMTMwMjcsIDEzMDI5LCAxMzAzMSwgMTMwMzMsIDEzMDM1LCAKLSAgICAxMzAzNywgMTMwMzksIDEzMDQxLCAxMzA0MywgMTMwNDUsIDEzMDQ3LCAxMzA0OSwgMTMwNTEsIDEzMDUzLCAxMzA1NSwgCi0gICAgMTMwNTcsIDEzMDU5LCAxMzA2MSwgMTMwNjMsIDEzMDY1LCAxMzA2NywgMTMwNjksIDEzMDcxLCAxMzA3MywgMTMwNzUsIAotICAgIDEzMDc3LCAxMzA3OSwgMTMwODEsIDEzMDgzLCAxMzA4NSwgMTMwODcsIDEzMDg5LCAxMzA5MSwgMTMwOTMsIDEzMDk1LCAKLSAgICAxMzA5NywgMTMwOTksIDEzMTAxLCAxMzEwMywgMTMxMDUsIDEzMTA3LCAxMzEwOSwgMTMxMTEsIDEzMTEzLCAxMzExNSwgCi0gICAgMTMxMTcsIDEzMTE5LCAxMzEyMSwgMTMxMjMsIDEzMTI1LCAxMzEyNywgMTMxMjksIDEzMTMxLCAxMzEzMywgMTMxMzUsIAotICAgIDEzMTM3LCAxMzEzOSwgMTMxNDEsIDEzMTQzLCAxMzE0NSwgMTMxNDcsIDEzMTQ5LCAxMzE1MSwgMTMxNTMsIDEzMTU1LCAKLSAgICAxMzE1NywgMTMxNTksIDEzMTYxLCAxMzE2MywgMTMxNjUsIDEzMTY3LCAxMzE2OSwgMTMxNzEsIDEzMTczLCAxMzE3NSwgCi0gICAgMTMxNzcsIDEzMTc5LCAxMzE4MSwgMTMxODMsIDEzMTg1LCAxMzE4NywgMTMxODksIDEzMTkxLCAxMzE5MywgMTMxOTUsIAotICAgIDEzMTk3LCAxMzE5OSwgMTMyMDEsIDEzMjAzLCAxMzIwNSwgMTMyMDcsIDEzMjA5LCAxMzIxMSwgMTMyMTMsIDEzMjE1LCAKLSAgICAxMzIxNywgMTMyMTksIDEzMjIxLCAxMzIyMywgMTMyMjUsIDEzMjI3LCAxMzIyOSwgMTMyMzEsIDEzMjMzLCAxMzIzNSwgCi0gICAgMTMyMzcsIDEzMjM5LCAxMzI0MSwgMTMyNDMsIDEzMjQ1LCAxMzI0NywgMTMyNDksIDEzMjUxLCAxMzI1MywgMTMyNTUsIAotICAgIDEzMjU3LCAxMzI1OSwgMTMyNjEsIDEzMjYzLCAxMzI2NSwgMTMyNjcsIDEzMjY5LCAxMzI3MSwgMTMyNzMsIDEzMjc1LCAKLSAgICAxMzI3NywgMTMyNzksIDEzMjgxLCAxMzI4MywgMTMyODUsIDEzMjg3LCAxMzI4OSwgMTMyOTEsIDEzMjkzLCAxMzI5NSwgCi0gICAgMTMyOTcsIDEzMjk5LCAxMzMwMSwgMTMzMDMsIDEzMzA1LCAxMzMwNywgMTMzMDksIDEzMzExLCAxMzMxMywgMTMzMTUsIAotICAgIDEzMzE3LCAxMzMxOSwgMTMzMjEsIDEzMzIzLCAxMzMyNSwgMTMzMjcsIDEzMzI5LCAxMzMzMSwgMTMzMzMsIDEzMzM1LCAKLSAgICAxMzMzNywgMTMzMzksIDEzMzQxLCAxMzM0MywgMTMzNDUsIDEzMzQ3LCAxMzM0OSwgMTMzNTEsIDEzMzUzLCAxMzM1NSwgCi0gICAgMTMzNTcsIDEzMzU5LCAxMzM2MSwgMTMzNjMsIDEzMzY1LCAxMzM2NywgMTMzNjksIDEzMzcxLCAxMzM3MywgMTMzNzUsIAotICAgIDEzMzc3LCAxMzM3OSwgMTMzODEsIDEzMzgzLCAxMzM4NSwgMTMzODcsIDEzMzg5LCAxMzM5MSwgMTMzOTMsIDEzMzk1LCAKLSAgICAxMzM5NywgMTMzOTksIDEzNDAxLCAxMzQwMywgMTM0MDUsIDEzNDA3LCAxMzQwOSwgMTM0MTEsIDEzNDEzLCAxMzQxNSwgCi0gICAgMTM0MTcsIDEzNDE5LCAxMzQyMSwgMTM0MjMsIDEzNDI1LCAxMzQyNywgMTM0MjksIDEzNDMxLCAxMzQzMywgMTM0MzUsIAotICAgIDEzNDM3LCAxMzQzOSwgMTM0NDEsIDEzNDQzLCAxMzQ0NSwgMTM0NDcsIDEzNDQ5LCAxMzQ1MSwgMTM0NTMsIDEzNDU1LCAKLSAgICAxMzQ1NywgMTM0NTksIDEzNDYxLCAxMzQ2MywgMTM0NjUsIDEzNDY3LCAxMzQ2OSwgMTM0NzEsIDEzNDczLCAxMzQ3NSwgCi0gICAgMTM0NzcsIDEzNDc5LCAxMzQ4MSwgMTM0ODMsIDEzNDg1LCAxMzQ4NywgMTM0ODksIDEzNDkxLCAxMzQ5MywgMTM0OTUsIAotICAgIDEzNDk3LCAxMzQ5OSwgMTM1MDEsIDEzNTAzLCAxMzUwNSwgMTM1MDcsIDEzNTA5LCAxMzUxMSwgMTM1MTMsIDEzNTE1LCAKLSAgICAxMzUxNywgMTM1MTksIDEzNTIxLCAxMzUyMywgMTM1MjUsIDEzNTI3LCAxMzUyOSwgMTM1MzEsIDEzNTMzLCAxMzUzNSwgCi0gICAgMTM1MzcsIDEzNTM5LCAxMzU0MSwgMTM1NDMsIDEzNTQ1LCAxMzU0NywgMTM1NDksIDEzNTUxLCAxMzU1MywgMTM1NTUsIAotICAgIDEzNTU3LCAxMzU1OSwgMTM1NjEsIDEzNTYzLCAxMzU2NSwgMTM1NjcsIDEzNTY5LCAxMzU3MSwgMTM1NzMsIDEzNTc1LCAKLSAgICAxMzU3NywgMTM1NzksIDEzNTgxLCAxMzU4MywgMTM1ODUsIDEzNTg3LCAxMzU4OSwgMTM1OTEsIDEzNTkzLCAxMzU5NSwgCi0gICAgMTM1OTcsIDEzNTk5LCAxMzYwMSwgMTM2MDMsIDEzNjA1LCAxMzYwNywgMTM2MDksIDEzNjExLCAxMzYxMywgMTM2MTUsIAotICAgIDEzNjE3LCAxMzYxOSwgMTM2MjEsIDEzNjIzLCAxMzYyNSwgMTM2MjcsIDEzNjI5LCAxMzYzMSwgMTM2MzMsIDEzNjM1LCAKLSAgICAxMzYzNywgMTM2MzksIDEzNjQxLCAxMzY0MywgMTM2NDUsIDEzNjQ3LCAxMzY0OSwgMTM2NTEsIDEzNjUzLCAxMzY1NSwgCi0gICAgMTM2NTcsIDEzNjU5LCAxMzY2MSwgMTM2NjMsIDEzNjY1LCAxMzY2NywgMTM2NjksIDEzNjcxLCAxMzY3MywgMTM2NzUsIAotICAgIDEzNjc3LCAxMzY3OSwgMTM2ODEsIDEzNjgzLCAxMzY4NSwgMTM2ODcsIDEzNjg5LCAxMzY5MSwgMTM2OTMsIDEzNjk1LCAKLSAgICAxMzY5NywgMTM2OTksIDEzNzAxLCAxMzcwMywgMTM3MDUsIDEzNzA3LCAxMzcwOSwgMTM3MTEsIDEzNzEzLCAxMzcxNSwgCi0gICAgMTM3MTcsIDEzNzE5LCAxMzcyMSwgMTM3MjMsIDEzNzI1LCAxMzcyNywgMTM3MjksIDEzNzMxLCAxMzczMywgMTM3MzUsIAotICAgIDEzNzM3LCAxMzczOSwgMTM3NDEsIDEzNzQzLCAxMzc0NSwgMTM3NDcsIDEzNzQ5LCAxMzc1MSwgMTM3NTMsIDEzNzU1LCAKLSAgICAxMzc1NywgMTM3NTksIDEzNzYxLCAxMzc2MywgMTM3NjUsIDEzNzY3LCAxMzc2OSwgMTM3NzEsIDEzNzczLCAxMzc3NSwgCi0gICAgMTM3NzcsIDEzNzc5LCAxMzc4MSwgMTM3ODMsIDEzNzg1LCAxMzc4NywgMTM3ODksIDEzNzkxLCAxMzc5MywgMTM3OTUsIAotICAgIDEzNzk3LCAxMzc5OSwgMTM4MDEsIDEzODAzLCAxMzgwNSwgMTM4MDcsIDEzODA5LCAxMzgxMSwgMTM4MTMsIDEzODE1LCAKLSAgICAxMzgxNywgMTM4MTksIDEzODIxLCAxMzgyMywgMTM4MjUsIDEzODI3LCAxMzgyOSwgMTM4MzEsIDEzODMzLCAxMzgzNSwgCi0gICAgMTM4MzcsIDEzODM5LCAxMzg0MSwgMTM4NDMsIDEzODQ1LCAxMzg0NywgMTM4NDksIDEzODUxLCAxMzg1MywgMTM4NTUsIAotICAgIDEzODU3LCAxMzg1OSwgMTM4NjEsIDEzODYzLCAxMzg2NSwgMTM4NjcsIDEzODY5LCAxMzg3MSwgMTM4NzMsIDEzODc1LCAKLSAgICAxMzg3NywgMTM4NzksIDEzODgxLCAxMzg4MywgMTM4ODUsIDEzODg3LCAxMzg4OSwgMTM4OTEsIDEzODkzLCAxMzg5NSwgCi0gICAgMTM4OTcsIDEzODk5LCAxMzkwMSwgMTM5MDMsIDEzOTA1LCAxMzkwNywgMTM5MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDQ1LCAxMDQ0OCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC00NjQxLDQwMiArNDUzOSw2MjMgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ1MSwgMTA0NTQsIDEwNDU3LCAxMDQ2MCwgMTA0NjMsIAorICAgIDEwNDY2LCAxMDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NzIsIDEwNDc1LCAKKyAgICAxMDQ3OCwgMTA0ODEsIDEwNDg0LCAxMDQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA0OTAsIDEwNDkyLCAxMDQ5NCwgMTA0OTYsIDEwNDk4LCAxMDUwMCwgMTA1MDIsIDEwNTA0LCAxMDUwNiwgMTA1MDgsIAorICAgIDEwNTEwLCAxMDUxMiwgMTA1MTQsIDEwNTE2LCAxMDUxOCwgMTA1MjAsIDEwNTIyLCAxMDUyNCwgMTA1MjYsIDEwNTI4LCAKKyAgICAxMDUzMCwgMTA1MzIsIDEwNTM0LCAxMDUzNiwgMTA1MzgsIDEwNTQwLCAxMDU0MiwgMTA1NDQsIDEwNTQ2LCAxMDU0OCwgCisgICAgMTA1NTAsIDEwNTUyLCAxMDU1NCwgMTA1NTYsIDEwNTU4LCAxMDU2MCwgMTA1NjIsIDEwNTY0LCAxMDU2NiwgMTA1NjgsIAorICAgIDEwNTcwLCAxMDU3MiwgMTA1NzQsIDEwNTc2LCAxMDU3OCwgMTA1ODAsIDEwNTgyLCAxMDU4NCwgMTA1ODYsIDEwNTg4LCAKKyAgICAxMDU5MCwgMTA1OTIsIDEwNTk0LCAxMDU5NiwgMTA1OTgsIDEwNjAwLCAxMDYwMiwgMTA2MDQsIDEwNjA2LCAxMDYwOCwgCisgICAgMTA2MTAsIDEwNjEyLCAxMDYxNCwgMTA2MTYsIDEwNjE4LCAxMDYyMCwgMTA2MjIsIDEwNjI0LCAxMDYyNiwgMTA2MjgsIAorICAgIDEwNjMwLCAxMDYzMiwgMTA2MzQsIDEwNjM2LCAxMDYzOCwgMTA2NDAsIDEwNjQyLCAxMDY0NCwgMTA2NDYsIDEwNjQ4LCAKKyAgICAxMDY1MCwgMTA2NTIsIDEwNjU0LCAxMDY1NiwgMTA2NTgsIDAsIDEwNjYwLCAxMDY2MiwgMTA2NjQsIDEwNjY2LCAxMDY2OCwgCisgICAgMTA2NzAsIDEwNjcyLCAxMDY3NCwgMTA2NzYsIDEwNjc4LCAxMDY4MCwgMTA2ODIsIDEwNjg0LCAxMDY4NiwgMTA2ODgsIAorICAgIDEwNjkwLCAxMDY5MiwgMTA2OTQsIDEwNjk2LCAxMDY5OCwgMTA3MDAsIDEwNzAyLCAxMDcwNCwgMTA3MDYsIDEwNzA4LCAKKyAgICAxMDcxMCwgMTA3MTIsIDEwNzE0LCAxMDcxNiwgMTA3MTgsIDEwNzIwLCAxMDcyMiwgMTA3MjQsIDEwNzI2LCAxMDcyOCwgCisgICAgMTA3MzAsIDEwNzMyLCAxMDczNCwgMTA3MzYsIDEwNzM4LCAxMDc0MCwgMTA3NDIsIDEwNzQ0LCAxMDc0NiwgMTA3NDgsIAorICAgIDEwNzUwLCAxMDc1MiwgMTA3NTQsIDEwNzU2LCAxMDc1OCwgMTA3NjAsIDEwNzYyLCAxMDc2NCwgMTA3NjYsIDEwNzY4LCAKKyAgICAxMDc3MCwgMTA3NzIsIDEwNzc0LCAxMDc3NiwgMTA3NzgsIDEwNzgwLCAxMDc4MiwgMTA3ODQsIDEwNzg2LCAxMDc4OCwgCisgICAgMTA3OTAsIDEwNzkyLCAxMDc5NCwgMTA3OTYsIDEwNzk4LCAxMDgwMCwgMCwgMTA4MDIsIDEwODA0LCAwLCAwLCAxMDgwNiwgCisgICAgMCwgMCwgMTA4MDgsIDEwODEwLCAwLCAwLCAxMDgxMiwgMTA4MTQsIDEwODE2LCAxMDgxOCwgMCwgMTA4MjAsIDEwODIyLCAKKyAgICAxMDgyNCwgMTA4MjYsIDEwODI4LCAxMDgzMCwgMTA4MzIsIDEwODM0LCAxMDgzNiwgMTA4MzgsIDEwODQwLCAxMDg0MiwgMCwgCisgICAgMTA4NDQsIDAsIDEwODQ2LCAxMDg0OCwgMTA4NTAsIDEwODUyLCAxMDg1NCwgMTA4NTYsIDEwODU4LCAwLCAxMDg2MCwgCisgICAgMTA4NjIsIDEwODY0LCAxMDg2NiwgMTA4NjgsIDEwODcwLCAxMDg3MiwgMTA4NzQsIDEwODc2LCAxMDg3OCwgMTA4ODAsIAorICAgIDEwODgyLCAxMDg4NCwgMTA4ODYsIDEwODg4LCAxMDg5MCwgMTA4OTIsIDEwODk0LCAxMDg5NiwgMTA4OTgsIDEwOTAwLCAKKyAgICAxMDkwMiwgMTA5MDQsIDEwOTA2LCAxMDkwOCwgMTA5MTAsIDEwOTEyLCAxMDkxNCwgMTA5MTYsIDEwOTE4LCAxMDkyMCwgCisgICAgMTA5MjIsIDEwOTI0LCAxMDkyNiwgMTA5MjgsIDEwOTMwLCAxMDkzMiwgMTA5MzQsIDEwOTM2LCAxMDkzOCwgMTA5NDAsIAorICAgIDEwOTQyLCAxMDk0NCwgMTA5NDYsIDEwOTQ4LCAxMDk1MCwgMTA5NTIsIDEwOTU0LCAxMDk1NiwgMTA5NTgsIDEwOTYwLCAKKyAgICAxMDk2MiwgMTA5NjQsIDEwOTY2LCAxMDk2OCwgMTA5NzAsIDEwOTcyLCAxMDk3NCwgMTA5NzYsIDEwOTc4LCAxMDk4MCwgCisgICAgMTA5ODIsIDEwOTg0LCAxMDk4NiwgMTA5ODgsIDAsIDEwOTkwLCAxMDk5MiwgMTA5OTQsIDEwOTk2LCAwLCAwLCAxMDk5OCwgCisgICAgMTEwMDAsIDExMDAyLCAxMTAwNCwgMTEwMDYsIDExMDA4LCAxMTAxMCwgMTEwMTIsIDAsIDExMDE0LCAxMTAxNiwgMTEwMTgsIAorICAgIDExMDIwLCAxMTAyMiwgMTEwMjQsIDExMDI2LCAwLCAxMTAyOCwgMTEwMzAsIDExMDMyLCAxMTAzNCwgMTEwMzYsIDExMDM4LCAKKyAgICAxMTA0MCwgMTEwNDIsIDExMDQ0LCAxMTA0NiwgMTEwNDgsIDExMDUwLCAxMTA1MiwgMTEwNTQsIDExMDU2LCAxMTA1OCwgCisgICAgMTEwNjAsIDExMDYyLCAxMTA2NCwgMTEwNjYsIDExMDY4LCAxMTA3MCwgMTEwNzIsIDExMDc0LCAxMTA3NiwgMTEwNzgsIAorICAgIDExMDgwLCAxMTA4MiwgMCwgMTEwODQsIDExMDg2LCAxMTA4OCwgMTEwOTAsIDAsIDExMDkyLCAxMTA5NCwgMTEwOTYsIAorICAgIDExMDk4LCAxMTEwMCwgMCwgMTExMDIsIDAsIDAsIDAsIDExMTA0LCAxMTEwNiwgMTExMDgsIDExMTEwLCAxMTExMiwgCisgICAgMTExMTQsIDExMTE2LCAwLCAxMTExOCwgMTExMjAsIDExMTIyLCAxMTEyNCwgMTExMjYsIDExMTI4LCAxMTEzMCwgMTExMzIsIAorICAgIDExMTM0LCAxMTEzNiwgMTExMzgsIDExMTQwLCAxMTE0MiwgMTExNDQsIDExMTQ2LCAxMTE0OCwgMTExNTAsIDExMTUyLCAKKyAgICAxMTE1NCwgMTExNTYsIDExMTU4LCAxMTE2MCwgMTExNjIsIDExMTY0LCAxMTE2NiwgMTExNjgsIDExMTcwLCAxMTE3MiwgCisgICAgMTExNzQsIDExMTc2LCAxMTE3OCwgMTExODAsIDExMTgyLCAxMTE4NCwgMTExODYsIDExMTg4LCAxMTE5MCwgMTExOTIsIAorICAgIDExMTk0LCAxMTE5NiwgMTExOTgsIDExMjAwLCAxMTIwMiwgMTEyMDQsIDExMjA2LCAxMTIwOCwgMTEyMTAsIDExMjEyLCAKKyAgICAxMTIxNCwgMTEyMTYsIDExMjE4LCAxMTIyMCwgMTEyMjIsIDExMjI0LCAxMTIyNiwgMTEyMjgsIDExMjMwLCAxMTIzMiwgCisgICAgMTEyMzQsIDExMjM2LCAxMTIzOCwgMTEyNDAsIDExMjQyLCAxMTI0NCwgMTEyNDYsIDExMjQ4LCAxMTI1MCwgMTEyNTIsIAorICAgIDExMjU0LCAxMTI1NiwgMTEyNTgsIDExMjYwLCAxMTI2MiwgMTEyNjQsIDExMjY2LCAxMTI2OCwgMTEyNzAsIDExMjcyLCAKKyAgICAxMTI3NCwgMTEyNzYsIDExMjc4LCAxMTI4MCwgMTEyODIsIDExMjg0LCAxMTI4NiwgMTEyODgsIDExMjkwLCAxMTI5MiwgCisgICAgMTEyOTQsIDExMjk2LCAxMTI5OCwgMTEzMDAsIDExMzAyLCAxMTMwNCwgMTEzMDYsIDExMzA4LCAxMTMxMCwgMTEzMTIsIAorICAgIDExMzE0LCAxMTMxNiwgMTEzMTgsIDExMzIwLCAxMTMyMiwgMTEzMjQsIDExMzI2LCAxMTMyOCwgMTEzMzAsIDExMzMyLCAKKyAgICAxMTMzNCwgMTEzMzYsIDExMzM4LCAxMTM0MCwgMTEzNDIsIDExMzQ0LCAxMTM0NiwgMTEzNDgsIDExMzUwLCAxMTM1MiwgCisgICAgMTEzNTQsIDExMzU2LCAxMTM1OCwgMTEzNjAsIDExMzYyLCAxMTM2NCwgMTEzNjYsIDExMzY4LCAxMTM3MCwgMTEzNzIsIAorICAgIDExMzc0LCAxMTM3NiwgMTEzNzgsIDExMzgwLCAxMTM4MiwgMTEzODQsIDExMzg2LCAxMTM4OCwgMTEzOTAsIDExMzkyLCAKKyAgICAxMTM5NCwgMTEzOTYsIDExMzk4LCAxMTQwMCwgMTE0MDIsIDExNDA0LCAxMTQwNiwgMTE0MDgsIDExNDEwLCAxMTQxMiwgCisgICAgMTE0MTQsIDExNDE2LCAxMTQxOCwgMTE0MjAsIDExNDIyLCAxMTQyNCwgMTE0MjYsIDExNDI4LCAxMTQzMCwgMTE0MzIsIAorICAgIDExNDM0LCAxMTQzNiwgMTE0MzgsIDExNDQwLCAxMTQ0MiwgMTE0NDQsIDExNDQ2LCAxMTQ0OCwgMTE0NTAsIDExNDUyLCAKKyAgICAxMTQ1NCwgMTE0NTYsIDExNDU4LCAxMTQ2MCwgMTE0NjIsIDExNDY0LCAxMTQ2NiwgMTE0NjgsIDExNDcwLCAxMTQ3MiwgCisgICAgMTE0NzQsIDExNDc2LCAxMTQ3OCwgMTE0ODAsIDExNDgyLCAxMTQ4NCwgMTE0ODYsIDExNDg4LCAxMTQ5MCwgMTE0OTIsIAorICAgIDExNDk0LCAxMTQ5NiwgMTE0OTgsIDExNTAwLCAxMTUwMiwgMTE1MDQsIDExNTA2LCAxMTUwOCwgMTE1MTAsIDExNTEyLCAKKyAgICAxMTUxNCwgMTE1MTYsIDExNTE4LCAxMTUyMCwgMTE1MjIsIDExNTI0LCAxMTUyNiwgMTE1MjgsIDExNTMwLCAxMTUzMiwgCisgICAgMTE1MzQsIDExNTM2LCAxMTUzOCwgMTE1NDAsIDExNTQyLCAxMTU0NCwgMTE1NDYsIDExNTQ4LCAxMTU1MCwgMTE1NTIsIAorICAgIDExNTU0LCAxMTU1NiwgMTE1NTgsIDExNTYwLCAxMTU2MiwgMTE1NjQsIDExNTY2LCAxMTU2OCwgMTE1NzAsIDExNTcyLCAKKyAgICAxMTU3NCwgMTE1NzYsIDExNTc4LCAxMTU4MCwgMTE1ODIsIDExNTg0LCAxMTU4NiwgMTE1ODgsIDExNTkwLCAxMTU5MiwgCisgICAgMTE1OTQsIDExNTk2LCAxMTU5OCwgMTE2MDAsIDExNjAyLCAxMTYwNCwgMTE2MDYsIDExNjA4LCAxMTYxMCwgMTE2MTIsIAorICAgIDExNjE0LCAxMTYxNiwgMTE2MTgsIDExNjIwLCAxMTYyMiwgMTE2MjQsIDExNjI2LCAxMTYyOCwgMTE2MzAsIDExNjMyLCAKKyAgICAxMTYzNCwgMTE2MzYsIDExNjM4LCAxMTY0MCwgMTE2NDIsIDExNjQ0LCAxMTY0NiwgMTE2NDgsIDExNjUwLCAxMTY1MiwgCisgICAgMTE2NTQsIDExNjU2LCAxMTY1OCwgMTE2NjAsIDExNjYyLCAxMTY2NCwgMTE2NjYsIDExNjY4LCAxMTY3MCwgMTE2NzIsIAorICAgIDExNjc0LCAxMTY3NiwgMTE2NzgsIDExNjgwLCAxMTY4MiwgMTE2ODQsIDExNjg2LCAxMTY4OCwgMTE2OTAsIDExNjkyLCAKKyAgICAxMTY5NCwgMTE2OTYsIDExNjk4LCAxMTcwMCwgMTE3MDIsIDExNzA0LCAxMTcwNiwgMTE3MDgsIDExNzEwLCAxMTcxMiwgCisgICAgMTE3MTQsIDExNzE2LCAxMTcxOCwgMTE3MjAsIDExNzIyLCAxMTcyNCwgMTE3MjYsIDExNzI4LCAxMTczMCwgMTE3MzIsIAorICAgIDExNzM0LCAxMTczNiwgMTE3MzgsIDExNzQwLCAxMTc0MiwgMTE3NDQsIDExNzQ2LCAxMTc0OCwgMTE3NTAsIDExNzUyLCAKKyAgICAxMTc1NCwgMTE3NTYsIDExNzU4LCAxMTc2MCwgMTE3NjIsIDExNzY0LCAxMTc2NiwgMTE3NjgsIDExNzcwLCAxMTc3MiwgCisgICAgMTE3NzQsIDExNzc2LCAxMTc3OCwgMTE3ODAsIDExNzgyLCAxMTc4NCwgMTE3ODYsIDExNzg4LCAxMTc5MCwgMTE3OTIsIAorICAgIDExNzk0LCAxMTc5NiwgMCwgMCwgMTE3OTgsIDExODAwLCAxMTgwMiwgMTE4MDQsIDExODA2LCAxMTgwOCwgMTE4MTAsIAorICAgIDExODEyLCAxMTgxNCwgMTE4MTYsIDExODE4LCAxMTgyMCwgMTE4MjIsIDExODI0LCAxMTgyNiwgMTE4MjgsIDExODMwLCAKKyAgICAxMTgzMiwgMTE4MzQsIDExODM2LCAxMTgzOCwgMTE4NDAsIDExODQyLCAxMTg0NCwgMTE4NDYsIDExODQ4LCAxMTg1MCwgCisgICAgMTE4NTIsIDExODU0LCAxMTg1NiwgMTE4NTgsIDExODYwLCAxMTg2MiwgMTE4NjQsIDExODY2LCAxMTg2OCwgMTE4NzAsIAorICAgIDExODcyLCAxMTg3NCwgMTE4NzYsIDExODc4LCAxMTg4MCwgMTE4ODIsIDExODg0LCAxMTg4NiwgMTE4ODgsIDExODkwLCAKKyAgICAxMTg5MiwgMTE4OTQsIDExODk2LCAxMTg5OCwgMTE5MDAsIDExOTAyLCAxMTkwNCwgMTE5MDYsIDExOTA4LCAxMTkxMCwgCisgICAgMTE5MTIsIDExOTE0LCAxMTkxNiwgMTE5MTgsIDExOTIwLCAxMTkyMiwgMTE5MjQsIDExOTI2LCAxMTkyOCwgMTE5MzAsIAorICAgIDExOTMyLCAxMTkzNCwgMTE5MzYsIDExOTM4LCAxMTk0MCwgMTE5NDIsIDExOTQ0LCAxMTk0NiwgMTE5NDgsIDExOTUwLCAKKyAgICAxMTk1MiwgMTE5NTQsIDExOTU2LCAxMTk1OCwgMTE5NjAsIDExOTYyLCAxMTk2NCwgMTE5NjYsIDExOTY4LCAxMTk3MCwgCisgICAgMTE5NzIsIDExOTc0LCAxMTk3NiwgMTE5NzgsIDExOTgwLCAxMTk4MiwgMTE5ODQsIDExOTg2LCAxMTk4OCwgMTE5OTAsIAorICAgIDExOTkyLCAxMTk5NCwgMTE5OTYsIDExOTk4LCAxMjAwMCwgMTIwMDIsIDEyMDA0LCAxMjAwNiwgMTIwMDgsIDEyMDEwLCAKKyAgICAxMjAxMiwgMTIwMTQsIDEyMDE2LCAxMjAxOCwgMTIwMjAsIDEyMDIyLCAxMjAyNCwgMTIwMjYsIDEyMDI4LCAxMjAzMCwgCisgICAgMTIwMzIsIDEyMDM0LCAxMjAzNiwgMTIwMzgsIDEyMDQwLCAxMjA0MiwgMTIwNDQsIDEyMDQ2LCAxMjA0OCwgMTIwNTAsIAorICAgIDEyMDUyLCAxMjA1NCwgMTIwNTYsIDEyMDU4LCAxMjA2MCwgMTIwNjIsIDEyMDY0LCAxMjA2NiwgMTIwNjgsIDEyMDcwLCAKKyAgICAxMjA3MiwgMTIwNzQsIDEyMDc2LCAxMjA3OCwgMTIwODAsIDEyMDgyLCAxMjA4NCwgMTIwODYsIDEyMDg4LCAxMjA5MCwgCisgICAgMTIwOTIsIDEyMDk0LCAxMjA5NiwgMTIwOTgsIDEyMTAwLCAxMjEwMiwgMTIxMDQsIDEyMTA2LCAxMjEwOCwgMTIxMTAsIAorICAgIDEyMTEyLCAxMjExNCwgMTIxMTYsIDEyMTE4LCAxMjEyMCwgMTIxMjIsIDEyMTI0LCAxMjEyNiwgMTIxMjgsIDEyMTMwLCAKKyAgICAxMjEzMiwgMTIxMzQsIDEyMTM2LCAxMjEzOCwgMTIxNDAsIDEyMTQyLCAxMjE0NCwgMTIxNDYsIDEyMTQ4LCAxMjE1MCwgCisgICAgMTIxNTIsIDEyMTU0LCAxMjE1NiwgMTIxNTgsIDEyMTYwLCAxMjE2MiwgMTIxNjQsIDEyMTY2LCAxMjE2OCwgMTIxNzAsIAorICAgIDEyMTcyLCAxMjE3NCwgMTIxNzYsIDEyMTc4LCAxMjE4MCwgMTIxODIsIDEyMTg0LCAxMjE4NiwgMTIxODgsIDEyMTkwLCAKKyAgICAxMjE5MiwgMTIxOTQsIDEyMTk2LCAxMjE5OCwgMTIyMDAsIDEyMjAyLCAxMjIwNCwgMTIyMDYsIDEyMjA4LCAxMjIxMCwgCisgICAgMTIyMTIsIDEyMjE0LCAxMjIxNiwgMTIyMTgsIDEyMjIwLCAxMjIyMiwgMTIyMjQsIDEyMjI2LCAxMjIyOCwgMTIyMzAsIAorICAgIDEyMjMyLCAxMjIzNCwgMTIyMzYsIDEyMjM4LCAxMjI0MCwgMTIyNDIsIDEyMjQ0LCAxMjI0NiwgMTIyNDgsIDEyMjUwLCAKKyAgICAxMjI1MiwgMTIyNTQsIDEyMjU2LCAxMjI1OCwgMTIyNjAsIDEyMjYyLCAxMjI2NCwgMTIyNjYsIDEyMjY4LCAxMjI3MCwgCisgICAgMTIyNzIsIDEyMjc0LCAxMjI3NiwgMTIyNzgsIDEyMjgwLCAxMjI4MiwgMTIyODQsIDEyMjg2LCAxMjI4OCwgMTIyOTAsIAorICAgIDEyMjkyLCAxMjI5NCwgMTIyOTYsIDEyMjk4LCAxMjMwMCwgMTIzMDIsIDEyMzA0LCAxMjMwNiwgMTIzMDgsIDEyMzEwLCAKKyAgICAxMjMxMiwgMTIzMTQsIDEyMzE2LCAxMjMxOCwgMTIzMjAsIDEyMzIyLCAxMjMyNCwgMTIzMjYsIDEyMzI4LCAxMjMzMCwgCisgICAgMTIzMzIsIDEyMzM0LCAxMjMzNiwgMTIzMzgsIDEyMzQwLCAxMjM0MiwgMTIzNDQsIDEyMzQ2LCAxMjM0OCwgMTIzNTAsIAorICAgIDEyMzUyLCAxMjM1NCwgMTIzNTYsIDEyMzU4LCAxMjM2MCwgMTIzNjIsIDEyMzY0LCAxMjM2NiwgMTIzNjgsIDEyMzcwLCAKKyAgICAxMjM3MiwgMTIzNzQsIDEyMzc2LCAxMjM3OCwgMTIzODAsIDAsIDAsIDEyMzgyLCAxMjM4NCwgMTIzODYsIDEyMzg4LCAKKyAgICAxMjM5MCwgMTIzOTIsIDEyMzk0LCAxMjM5NiwgMTIzOTgsIDEyNDAwLCAxMjQwMiwgMTI0MDQsIDEyNDA2LCAxMjQwOCwgCisgICAgMTI0MTAsIDEyNDEyLCAxMjQxNCwgMTI0MTYsIDEyNDE4LCAxMjQyMCwgMTI0MjIsIDEyNDI0LCAxMjQyNiwgMTI0MjgsIAorICAgIDEyNDMwLCAxMjQzMiwgMTI0MzQsIDEyNDM2LCAxMjQzOCwgMTI0NDAsIDEyNDQyLCAxMjQ0NCwgMTI0NDYsIDEyNDQ4LCAKKyAgICAxMjQ1MCwgMTI0NTIsIDEyNDU0LCAxMjQ1NiwgMTI0NTgsIDEyNDYwLCAxMjQ2MiwgMTI0NjQsIDEyNDY2LCAxMjQ2OCwgCisgICAgMTI0NzAsIDEyNDcyLCAxMjQ3NCwgMTI0NzYsIDEyNDc4LCAxMjQ4MCwgMTI0ODIsIDEyNDg0LCAxMjQ4NiwgMTI0ODgsIDAsIAorICAgIDEyNDkwLCAxMjQ5MiwgMTI0OTQsIDEyNDk2LCAxMjQ5OCwgMTI1MDAsIDEyNTAyLCAxMjUwNCwgMTI1MDYsIDEyNTA4LCAKKyAgICAxMjUxMCwgMTI1MTIsIDEyNTE0LCAxMjUxNiwgMTI1MTgsIDEyNTIwLCAxMjUyMiwgMTI1MjQsIDEyNTI2LCAxMjUyOCwgCisgICAgMTI1MzAsIDEyNTMyLCAxMjUzNCwgMTI1MzYsIDEyNTM4LCAxMjU0MCwgMTI1NDIsIDAsIDEyNTQ0LCAxMjU0NiwgMCwgCisgICAgMTI1NDgsIDAsIDAsIDEyNTUwLCAwLCAxMjU1MiwgMTI1NTQsIDEyNTU2LCAxMjU1OCwgMTI1NjAsIDEyNTYyLCAxMjU2NCwgCisgICAgMTI1NjYsIDEyNTY4LCAxMjU3MCwgMCwgMTI1NzIsIDEyNTc0LCAxMjU3NiwgMTI1NzgsIDAsIDEyNTgwLCAwLCAxMjU4MiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTI1ODQsIDAsIDAsIDAsIDAsIDEyNTg2LCAwLCAxMjU4OCwgMCwgMTI1OTAsIDAsIDEyNTkyLCAKKyAgICAxMjU5NCwgMTI1OTYsIDAsIDEyNTk4LCAxMjYwMCwgMCwgMTI2MDIsIDAsIDAsIDEyNjA0LCAwLCAxMjYwNiwgMCwgMTI2MDgsIAorICAgIDAsIDEyNjEwLCAwLCAxMjYxMiwgMCwgMTI2MTQsIDEyNjE2LCAwLCAxMjYxOCwgMCwgMCwgMTI2MjAsIDEyNjIyLCAxMjYyNCwgCisgICAgMTI2MjYsIDAsIDEyNjI4LCAxMjYzMCwgMTI2MzIsIDEyNjM0LCAxMjYzNiwgMTI2MzgsIDEyNjQwLCAwLCAxMjY0MiwgCisgICAgMTI2NDQsIDEyNjQ2LCAxMjY0OCwgMCwgMTI2NTAsIDEyNjUyLCAxMjY1NCwgMTI2NTYsIDAsIDEyNjU4LCAwLCAxMjY2MCwgCisgICAgMTI2NjIsIDEyNjY0LCAxMjY2NiwgMTI2NjgsIDEyNjcwLCAxMjY3MiwgMTI2NzQsIDEyNjc2LCAxMjY3OCwgMCwgMTI2ODAsIAorICAgIDEyNjgyLCAxMjY4NCwgMTI2ODYsIDEyNjg4LCAxMjY5MCwgMTI2OTIsIDEyNjk0LCAxMjY5NiwgMTI2OTgsIDEyNzAwLCAKKyAgICAxMjcwMiwgMTI3MDQsIDEyNzA2LCAxMjcwOCwgMTI3MTAsIDEyNzEyLCAwLCAwLCAwLCAwLCAwLCAxMjcxNCwgMTI3MTYsIAorICAgIDEyNzE4LCAwLCAxMjcyMCwgMTI3MjIsIDEyNzI0LCAxMjcyNiwgMTI3MjgsIDAsIDEyNzMwLCAxMjczMiwgMTI3MzQsIAorICAgIDEyNzM2LCAxMjczOCwgMTI3NDAsIDEyNzQyLCAxMjc0NCwgMTI3NDYsIDEyNzQ4LCAxMjc1MCwgMTI3NTIsIDEyNzU0LCAKKyAgICAxMjc1NiwgMTI3NTgsIDEyNzYwLCAxMjc2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTI3NjQsIDEyNzY3LCAxMjc3MCwgMTI3NzMsIDEyNzc2LCAxMjc3OSwgMTI3ODIsIDEyNzg1LCAKKyAgICAxMjc4OCwgMTI3OTEsIDEyNzk0LCAwLCAwLCAwLCAwLCAwLCAxMjc5NywgMTI4MDEsIDEyODA1LCAxMjgwOSwgMTI4MTMsIAorICAgIDEyODE3LCAxMjgyMSwgMTI4MjUsIDEyODI5LCAxMjgzMywgMTI4MzcsIDEyODQxLCAxMjg0NSwgMTI4NDksIDEyODUzLCAKKyAgICAxMjg1NywgMTI4NjEsIDEyODY1LCAxMjg2OSwgMTI4NzMsIDEyODc3LCAxMjg4MSwgMTI4ODUsIDEyODg5LCAxMjg5MywgCisgICAgMTI4OTcsIDEyOTAxLCAxMjkwNSwgMTI5MDcsIDEyOTA5LCAxMjkxMiwgMCwgMTI5MTUsIDEyOTE3LCAxMjkxOSwgMTI5MjEsIAorICAgIDEyOTIzLCAxMjkyNSwgMTI5MjcsIDEyOTI5LCAxMjkzMSwgMTI5MzMsIDEyOTM1LCAxMjkzNywgMTI5MzksIDEyOTQxLCAKKyAgICAxMjk0MywgMTI5NDUsIDEyOTQ3LCAxMjk0OSwgMTI5NTEsIDEyOTUzLCAxMjk1NSwgMTI5NTcsIDEyOTU5LCAxMjk2MSwgCisgICAgMTI5NjMsIDEyOTY1LCAxMjk2NywgMTI5NzAsIDEyOTczLCAxMjk3NiwgMTI5NzksIDEyOTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk4NiwgMTI5ODksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMjk5NSwgMTI5OTgsIDEzMDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMzAwMywgMTMwMDUsIDEzMDA3LCAxMzAwOSwgMTMwMTEsIDEzMDEzLCAxMzAxNSwgMTMwMTcsIDEzMDE5LCAxMzAyMSwgCisgICAgMTMwMjMsIDEzMDI1LCAxMzAyNywgMTMwMjksIDEzMDMxLCAxMzAzMywgMTMwMzUsIDEzMDM3LCAxMzAzOSwgMTMwNDEsIAorICAgIDEzMDQzLCAxMzA0NSwgMTMwNDcsIDEzMDQ5LCAxMzA1MSwgMTMwNTMsIDEzMDU1LCAxMzA1NywgMTMwNTksIDEzMDYxLCAKKyAgICAxMzA2MywgMTMwNjUsIDEzMDY3LCAxMzA2OSwgMTMwNzEsIDEzMDczLCAxMzA3NSwgMTMwNzcsIDEzMDc5LCAxMzA4MSwgCisgICAgMTMwODMsIDEzMDg1LCAxMzA4NywgMCwgMCwgMCwgMCwgMCwgMTMwODksIDEzMDkzLCAxMzA5NywgMTMxMDEsIDEzMTA1LCAKKyAgICAxMzEwOSwgMTMxMTMsIDEzMTE3LCAxMzEyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxMjUsIDEzMTI3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMzEyOSwgMTMxMzEsIDEzMTMzLCAxMzEzNSwgMTMxMzcsIDEzMTM5LCAxMzE0MSwgMTMxNDMsIDEzMTQ1LCAKKyAgICAxMzE0NywgMTMxNDksIDEzMTUxLCAxMzE1MywgMTMxNTUsIDEzMTU3LCAxMzE1OSwgMTMxNjEsIDEzMTYzLCAxMzE2NSwgCisgICAgMTMxNjcsIDEzMTY5LCAxMzE3MSwgMTMxNzMsIDEzMTc1LCAxMzE3NywgMTMxNzksIDEzMTgxLCAxMzE4MywgMTMxODUsIAorICAgIDEzMTg3LCAxMzE4OSwgMTMxOTEsIDEzMTkzLCAxMzE5NSwgMTMxOTcsIDEzMTk5LCAxMzIwMSwgMTMyMDMsIDEzMjA1LCAKKyAgICAxMzIwNywgMTMyMDksIDEzMjExLCAxMzIxMywgMTMyMTUsIDEzMjE3LCAxMzIxOSwgMTMyMjEsIDEzMjIzLCAxMzIyNSwgCisgICAgMTMyMjcsIDEzMjI5LCAxMzIzMSwgMTMyMzMsIDEzMjM1LCAxMzIzNywgMTMyMzksIDEzMjQxLCAxMzI0MywgMTMyNDUsIAorICAgIDEzMjQ3LCAxMzI0OSwgMTMyNTEsIDEzMjUzLCAxMzI1NSwgMTMyNTcsIDEzMjU5LCAxMzI2MSwgMTMyNjMsIDEzMjY1LCAKKyAgICAxMzI2NywgMTMyNjksIDEzMjcxLCAxMzI3MywgMTMyNzUsIDEzMjc3LCAxMzI3OSwgMTMyODEsIDEzMjgzLCAxMzI4NSwgCisgICAgMTMyODcsIDEzMjg5LCAxMzI5MSwgMTMyOTMsIDEzMjk1LCAxMzI5NywgMTMyOTksIDEzMzAxLCAxMzMwMywgMTMzMDUsIAorICAgIDEzMzA3LCAxMzMwOSwgMTMzMTEsIDEzMzEzLCAxMzMxNSwgMTMzMTcsIDEzMzE5LCAxMzMyMSwgMTMzMjMsIDEzMzI1LCAKKyAgICAxMzMyNywgMTMzMjksIDEzMzMxLCAxMzMzMywgMTMzMzUsIDEzMzM3LCAxMzMzOSwgMTMzNDEsIDEzMzQzLCAxMzM0NSwgCisgICAgMTMzNDcsIDEzMzQ5LCAxMzM1MSwgMTMzNTMsIDEzMzU1LCAxMzM1NywgMTMzNTksIDEzMzYxLCAxMzM2MywgMTMzNjUsIAorICAgIDEzMzY3LCAxMzM2OSwgMTMzNzEsIDEzMzczLCAxMzM3NSwgMTMzNzcsIDEzMzc5LCAxMzM4MSwgMTMzODMsIDEzMzg1LCAKKyAgICAxMzM4NywgMTMzODksIDEzMzkxLCAxMzM5MywgMTMzOTUsIDEzMzk3LCAxMzM5OSwgMTM0MDEsIDEzNDAzLCAxMzQwNSwgCisgICAgMTM0MDcsIDEzNDA5LCAxMzQxMSwgMTM0MTMsIDEzNDE1LCAxMzQxNywgMTM0MTksIDEzNDIxLCAxMzQyMywgMTM0MjUsIAorICAgIDEzNDI3LCAxMzQyOSwgMTM0MzEsIDEzNDMzLCAxMzQzNSwgMTM0MzcsIDEzNDM5LCAxMzQ0MSwgMTM0NDMsIDEzNDQ1LCAKKyAgICAxMzQ0NywgMTM0NDksIDEzNDUxLCAxMzQ1MywgMTM0NTUsIDEzNDU3LCAxMzQ1OSwgMTM0NjEsIDEzNDYzLCAxMzQ2NSwgCisgICAgMTM0NjcsIDEzNDY5LCAxMzQ3MSwgMTM0NzMsIDEzNDc1LCAxMzQ3NywgMTM0NzksIDEzNDgxLCAxMzQ4MywgMTM0ODUsIAorICAgIDEzNDg3LCAxMzQ4OSwgMTM0OTEsIDEzNDkzLCAxMzQ5NSwgMTM0OTcsIDEzNDk5LCAxMzUwMSwgMTM1MDMsIDEzNTA1LCAKKyAgICAxMzUwNywgMTM1MDksIDEzNTExLCAxMzUxMywgMTM1MTUsIDEzNTE3LCAxMzUxOSwgMTM1MjEsIDEzNTIzLCAxMzUyNSwgCisgICAgMTM1MjcsIDEzNTI5LCAxMzUzMSwgMTM1MzMsIDEzNTM1LCAxMzUzNywgMTM1MzksIDEzNTQxLCAxMzU0MywgMTM1NDUsIAorICAgIDEzNTQ3LCAxMzU0OSwgMTM1NTEsIDEzNTUzLCAxMzU1NSwgMTM1NTcsIDEzNTU5LCAxMzU2MSwgMTM1NjMsIDEzNTY1LCAKKyAgICAxMzU2NywgMTM1NjksIDEzNTcxLCAxMzU3MywgMTM1NzUsIDEzNTc3LCAxMzU3OSwgMTM1ODEsIDEzNTgzLCAxMzU4NSwgCisgICAgMTM1ODcsIDEzNTg5LCAxMzU5MSwgMTM1OTMsIDEzNTk1LCAxMzU5NywgMTM1OTksIDEzNjAxLCAxMzYwMywgMTM2MDUsIAorICAgIDEzNjA3LCAxMzYwOSwgMTM2MTEsIDEzNjEzLCAxMzYxNSwgMTM2MTcsIDEzNjE5LCAxMzYyMSwgMTM2MjMsIDEzNjI1LCAKKyAgICAxMzYyNywgMTM2MjksIDEzNjMxLCAxMzYzMywgMTM2MzUsIDEzNjM3LCAxMzYzOSwgMTM2NDEsIDEzNjQzLCAxMzY0NSwgCisgICAgMTM2NDcsIDEzNjQ5LCAxMzY1MSwgMTM2NTMsIDEzNjU1LCAxMzY1NywgMTM2NTksIDEzNjYxLCAxMzY2MywgMTM2NjUsIAorICAgIDEzNjY3LCAxMzY2OSwgMTM2NzEsIDEzNjczLCAxMzY3NSwgMTM2NzcsIDEzNjc5LCAxMzY4MSwgMTM2ODMsIDEzNjg1LCAKKyAgICAxMzY4NywgMTM2ODksIDEzNjkxLCAxMzY5MywgMTM2OTUsIDEzNjk3LCAxMzY5OSwgMTM3MDEsIDEzNzAzLCAxMzcwNSwgCisgICAgMTM3MDcsIDEzNzA5LCAxMzcxMSwgMTM3MTMsIDEzNzE1LCAxMzcxNywgMTM3MTksIDEzNzIxLCAxMzcyMywgMTM3MjUsIAorICAgIDEzNzI3LCAxMzcyOSwgMTM3MzEsIDEzNzMzLCAxMzczNSwgMTM3MzcsIDEzNzM5LCAxMzc0MSwgMTM3NDMsIDEzNzQ1LCAKKyAgICAxMzc0NywgMTM3NDksIDEzNzUxLCAxMzc1MywgMTM3NTUsIDEzNzU3LCAxMzc1OSwgMTM3NjEsIDEzNzYzLCAxMzc2NSwgCisgICAgMTM3NjcsIDEzNzY5LCAxMzc3MSwgMTM3NzMsIDEzNzc1LCAxMzc3NywgMTM3NzksIDEzNzgxLCAxMzc4MywgMTM3ODUsIAorICAgIDEzNzg3LCAxMzc4OSwgMTM3OTEsIDEzNzkzLCAxMzc5NSwgMTM3OTcsIDEzNzk5LCAxMzgwMSwgMTM4MDMsIDEzODA1LCAKKyAgICAxMzgwNywgMTM4MDksIDEzODExLCAxMzgxMywgMTM4MTUsIDEzODE3LCAxMzgxOSwgMTM4MjEsIDEzODIzLCAxMzgyNSwgCisgICAgMTM4MjcsIDEzODI5LCAxMzgzMSwgMTM4MzMsIDEzODM1LCAxMzgzNywgMTM4MzksIDEzODQxLCAxMzg0MywgMTM4NDUsIAorICAgIDEzODQ3LCAxMzg0OSwgMTM4NTEsIDEzODUzLCAxMzg1NSwgMTM4NTcsIDEzODU5LCAxMzg2MSwgMTM4NjMsIDEzODY1LCAKKyAgICAxMzg2NywgMTM4NjksIDEzODcxLCAxMzg3MywgMTM4NzUsIDEzODc3LCAxMzg3OSwgMTM4ODEsIDEzODgzLCAxMzg4NSwgCisgICAgMTM4ODcsIDEzODg5LCAxMzg5MSwgMTM4OTMsIDEzODk1LCAxMzg5NywgMTM4OTksIDEzOTAxLCAxMzkwMywgMTM5MDUsIAorICAgIDEzOTA3LCAxMzkwOSwgMTM5MTEsIDEzOTEzLCAxMzkxNSwgMTM5MTcsIDEzOTE5LCAxMzkyMSwgMTM5MjMsIDEzOTI1LCAKKyAgICAxMzkyNywgMTM5MjksIDEzOTMxLCAxMzkzMywgMTM5MzUsIDEzOTM3LCAxMzkzOSwgMTM5NDEsIDEzOTQzLCAxMzk0NSwgCisgICAgMTM5NDcsIDEzOTQ5LCAxMzk1MSwgMTM5NTMsIDEzOTU1LCAxMzk1NywgMTM5NTksIDEzOTYxLCAxMzk2MywgMTM5NjUsIAorICAgIDEzOTY3LCAxMzk2OSwgMTM5NzEsIDEzOTczLCAxMzk3NSwgMTM5NzcsIDEzOTc5LCAxMzk4MSwgMTM5ODMsIDEzOTg1LCAKKyAgICAxMzk4NywgMTM5ODksIDEzOTkxLCAxMzk5MywgMTM5OTUsIDEzOTk3LCAxMzk5OSwgMTQwMDEsIDE0MDAzLCAxNDAwNSwgCisgICAgMTQwMDcsIDE0MDA5LCAxNDAxMSwgMTQwMTMsIDE0MDE1LCAxNDAxNywgMTQwMTksIDE0MDIxLCAxNDAyMywgMTQwMjUsIAorICAgIDE0MDI3LCAxNDAyOSwgMTQwMzEsIDE0MDMzLCAxNDAzNSwgMTQwMzcsIDE0MDM5LCAxNDA0MSwgMTQwNDMsIDE0MDQ1LCAKKyAgICAxNDA0NywgMTQwNDksIDE0MDUxLCAxNDA1MywgMTQwNTUsIDE0MDU3LCAxNDA1OSwgMTQwNjEsIDE0MDYzLCAxNDA2NSwgCisgICAgMTQwNjcsIDE0MDY5LCAxNDA3MSwgMTQwNzMsIDE0MDc1LCAxNDA3NywgMTQwNzksIDE0MDgxLCAxNDA4MywgMTQwODUsIAorICAgIDE0MDg3LCAxNDA4OSwgMTQwOTEsIDE0MDkzLCAxNDA5NSwgMTQwOTcsIDE0MDk5LCAxNDEwMSwgMTQxMDMsIDE0MTA1LCAKKyAgICAxNDEwNywgMTQxMDksIDE0MTExLCAxNDExMywgMTQxMTUsIDE0MTE3LCAxNDExOSwgMTQxMjEsIDE0MTIzLCAxNDEyNSwgCisgICAgMTQxMjcsIDE0MTI5LCAxNDEzMSwgMTQxMzMsIDE0MTM1LCAxNDEzNywgMTQxMzksIDE0MTQxLCAxNDE0MywgMTQxNDUsIAorICAgIDE0MTQ3LCAxNDE0OSwgMTQxNTEsIDE0MTUzLCAxNDE1NSwgMTQxNTcsIDE0MTU5LCAxNDE2MSwgMTQxNjMsIDE0MTY1LCAKKyAgICAxNDE2NywgMTQxNjksIDE0MTcxLCAxNDE3MywgMTQxNzUsIDE0MTc3LCAxNDE3OSwgMTQxODEsIDE0MTgzLCAxNDE4NSwgCisgICAgMTQxODcsIDE0MTg5LCAxNDE5MSwgMTQxOTMsIDE0MTk1LCAxNDE5NywgMTQxOTksIDE0MjAxLCAxNDIwMywgMTQyMDUsIAorICAgIDE0MjA3LCAxNDIwOSwgMTQyMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogLyogTkZDIHBhaXJzICovCiAjZGVmaW5lIENPTVBfU0hJRlQgMgogc3RhdGljIHVuc2lnbmVkIHNob3J0IGNvbXBfaW5kZXhbXSA9IHsKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCA0LCA1LCA2LCA3LCA4LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMCwgMCwgMCwgMTEsIDAsIDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMywgMTQsIAotICAgIDE1LCAwLCAwLCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMzIsIDMzLCAwLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgMCwgCi0gICAgNTAsIDAsIDUxLCA1MiwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCA1NSwgNTYsIDU3LCA1OCwgNTksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDYwLCA2MSwgMCwgMCwgNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzLCA2NCwgNjUsIDAsIAotICAgIDY2LCA2NywgNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDc1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3NiwgMCwgNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4LCA3OSwgMCwgODAsIDgxLCA4MiwgCi0gICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg0LCA4NSwgODYsIDAsIDg3LCA4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgODksIDkwLCAwLCA5MSwgOTIsIDkzLCAwLCAwLCAwLCAwLCAwLCAwLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMSwgMCwgMCwgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMsIAotICAgIDEwNCwgMCwgMCwgMTA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwNywgMTA4LCAxMDksIDAsIDExMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTExLCAxMTIsIAotICAgIDAsIDExMywgMTE0LCAwLCAxMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMiwgMCwgMCwgMTIzLCAwLCAxMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNSwgCi0gICAgMTI2LCAxMjcsIDEyOCwgMCwgMTI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIDAsIDEzMSwgMTMyLCAxMzMsIAotICAgIDEzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMCwgCi0gICAgMTQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDgsIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYyLCAKLSAgICAwLCAxNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NCwgMCwgMCwgMTY1LCAxNjYsIDE2NywgMCwgMTY4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNjksIDAsIDAsIDE3MCwgMTcxLCAxNzIsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTc0LCAxNzUsIDAsIDAsIDE3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc3LCAxNzgsIDE3OSwgMTgwLCAwLCAxODEsIAotICAgIDE4MiwgMTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMCwgMTg5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxOTAsIDE5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTkyLCAxOTMsIDE5NCwgCi0gICAgMTk1LCAxOTYsIDE5NywgMTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTksIDIwMCwgMjAxLCAwLCAyMDIsIDIwMywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTcsIDAsIDAsIDAsIAotICAgIDIxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAwLCAyMjMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDIyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI1LCAyMjYsIDIyNywgMCwgCi0gICAgMjI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjksIDIzMCwgMjMxLCAwLCAyMzIsIDAsIDIzMywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjM0LCAyMzUsIDAsIDAsIDAsIDAsIDAsIDIzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjM3LCAyMzgsIDIzOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NSwgMjQ2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI0OCwgMjQ5LCAyNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1MSwgMjUyLCAyNTMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTYsIDI1NywgMCwgMjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNTksIDI2MCwgMjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI2NiwgMjY3LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcwLCAyNzEsIDI3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjczLCAyNzQsIDI3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3OCwgMjc5LCAKLSAgICAwLCAyODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MSwgMjgyLCAyODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI4NCwgMjg1LCAyODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4NywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg4LCAyODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDEsIDMwMiwgMzAzLCAwLCAwLCAzMDQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDMwNSwgMzA2LCAzMDcsIDAsIDMwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA5LCAKLSAgICAzMTAsIDMxMSwgMCwgMzEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTMsIDAsIDMxNCwgMCwgMzE1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMyNiwgMzI3LCAwLCAzMjgsIDMyOSwgMCwgMCwgMzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzEsIDAsIAotICAgIDAsIDMzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMzLCAzMzQsIDAsIDAsIDMzNSwgMCwgMCwgMCwgMzM2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMzcsIDMzOCwgMzM5LCAwLCAzNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MSwgMCwgMCwgCi0gICAgMzQyLCAzNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzQ1LCAzNDYsIDM0NywgMCwgMzQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDksIDAsIDAsIDAsIAotICAgIDM1MCwgMCwgMCwgMzUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MywgMCwgMCwgMCwgMCwgMCwgMzU0LCAzNTUsIDM1NiwgMCwgMzU3LCAwLCAKLSAgICAwLCAzNTgsIDM1OSwgMCwgMCwgMCwgMCwgMCwgMzYwLCAwLCAwLCAwLCAzNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM2MiwgMCwgMCwgMzYzLCAzNjQsIDAsIDAsIDM2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMzY2LCAzNjcsIDAsIDM2OCwgMCwgMCwgCi0gICAgMCwgMzY5LCAwLCAwLCAwLCAwLCAwLCAzNzAsIDM3MSwgMCwgMCwgMzcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3NCwgMzc1LCAzNzYsIDM3NywgMzc4LCAwLCAwLCAKLSAgICAzNzksIDAsIDAsIDAsIDAsIDAsIDAsIDM4MCwgMCwgMCwgMzgxLCAwLCAwLCAwLCAzODIsIDAsIDAsIDAsIDAsIDAsIDM4MywgCi0gICAgMzg0LCAwLCAwLCAwLCAwLCAwLCAzODUsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMzg3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODgsIDAsIDAsIDAsIDAsIDAsIDAsIDM4OSwgMzkwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM5MiwgMzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM5NSwgMzk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzk5LCA0MDAsIDQwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwNCwgCi0gICAgNDA1LCA0MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMCwgNDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMywgNDE0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE3LCA0MTgsIDQxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMiwgNDIzLCA0MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ1NSwgNDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDUsIDYsIDcsIDgsIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAwLCAwLCAxMSwgMCwgMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzLCAKKyAgICAxNCwgMTUsIDAsIDAsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTgsIDAsIDE5LCAyMCwgMjEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMxLCAzMiwgMCwgMCwgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDM0LCAzNSwgMzYsIDAsIDM3LCAzOCwgMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwLCA0MSwgNDIsIDQzLCA0NCwgCisgICAgNDUsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDAsIDQ5LCAwLCA1MCwgNTEsIDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgNTQsIDAsIDU1LCA1NiwgNTcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4LCA1OSwgMCwgMCwgNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxLCA2MiwgCisgICAgNjMsIDAsIDY0LCA2NSwgNjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDczLCA3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzUsIDc2LCA3NywgCisgICAgNzgsIDc5LCA4MCwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCA4MywgODQsIDAsIDg1LCA4NiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgODcsIDg4LCAwLCA4OSwgOTAsIDkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MiwgOTMsIDk0LCAKKyAgICA5NSwgOTYsIDk3LCA5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDEwMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTAxLCAxMDIsIDAsIDAsIDEwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUsIDEwNiwgMTA3LCAwLCAxMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEwOSwgMTEwLCAxMTEsIDAsIDExMiwgMCwgMTEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQsIDExNSwgMTE2LCAKKyAgICAxMTcsIDExOCwgMTE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDEyMSwgMCwgMTIyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMjMsIDEyNCwgMTI1LCAwLCAwLCAxMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNywgCisgICAgMTI4LCAwLCAxMjksIDEzMCwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAKKyAgICAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQwLCAxNDEsIDE0MiwgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NSwgMTQ2LCAwLCAxNDcsIAorICAgIDE0OCwgMTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE1NywgMCwgMTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTksIDAsIDE2MCwgCisgICAgMCwgMTYxLCAxNjIsIDE2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY0LCAwLCAxNjUsIDAsIDE2NiwgMTY3LCAxNjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE2OSwgMTcwLCAwLCAwLCAxNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MiwgCisgICAgMTczLCAxNzQsIDAsIDE3NSwgMTc2LCAxNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAKKyAgICAxODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4NCwgMTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLCAxOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5MywgMTk0LCAxOTUsIAorICAgIDAsIDE5NiwgMTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTgsIDE5OSwgMCwgMjAwLCAyMDEsIDIwMiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyMTAsIDAsIDAsIDAsIDIxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEyLCAyMTMsIDIxNCwgMCwgMjE1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxNywgCisgICAgMjE4LCAyMTksIDAsIDIyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIxLCAyMjIsIDIyMywgMCwgMjI0LCAwLCAKKyAgICAyMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyMjgsIDAsIDIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjMwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzMiwgMjMzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDIzNSwgMCwgMjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOCwgMCwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNDAsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ1LCAKKyAgICAyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NywgMCwgMjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1MCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUxLCAyNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU0LCAwLCAyNTUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU3LCAwLCAKKyAgICAyNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1OSwgMjYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYzLCAyNjQsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjY2LCAwLCAyNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMCwgMjY5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI4MywgMCwgMjg0LCAwLCAyODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4NiwgMCwgMjg3LCAwLCAKKyAgICAyODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4OSwgMCwgMjkwLCAwLCAyOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI5MiwgMCwgMjkzLCAwLCAyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDMwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA1LCAzMDYsIDAsIDMwNywgCisgICAgMCwgMCwgMCwgMzA4LCAwLCAwLCAwLCAwLCAwLCAwLCAzMDksIDAsIDAsIDMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzExLCAwLCAwLCAzMTIsIDAsIDAsIDAsIDMxMywgMCwgMCwgMCwgMCwgMCwgMCwgMzE0LCAzMTUsIDAsIDMxNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE3LCAwLCAwLCAzMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIwLCAzMjEsIDAsIDMyMiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIzLCAwLCAwLCAzMjQsIDAsIDAsIDAsIDMyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDMyOCwgMzI5LCAwLCAzMzAsIDAsIDAsIDAsIDMzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMzMyLCAwLCAwLCAKKyAgICAzMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzNCwgMCwgMCwgMzM1LCAwLCAwLCAwLCAzMzYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDMzNywgMzM4LCAwLCAzMzksIDAsIDAsIDAsIDM0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQxLCAwLCAwLCAKKyAgICAzNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzQ0LCAzNDUsIDAsIDM0NiwgMCwgMCwgMCwgMzQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAzNDgsIDAsIDAsIDM0OSwgCisgICAgMCwgMCwgMCwgMzUwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzUzLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMzU2LCAzNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MSwgMzYyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY1LCAzNjYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjksIDM3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzIsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDM3NiwgMzc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzgwLCAKKyAgICAzODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODQsIDM4NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTYsIDM5NywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDIsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQwOSwgNDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTQsIDQxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDE5LCA0MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjMsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMywgMCwgCisgICAgMCwgNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQwLCA0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MiwgNDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NTAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDU4LCAwLCAwLCAwLCAwLCAwLCAwLCA0NTksIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgNDYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OSwgMCwgCi0gICAgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc2LCA0NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ5MywgMCwgMCwgMCwgMCwgMCwgMCwgNDk0LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5OSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMiwgMCwgMCwgMCwgMCwgMCwgMCwgNTAzLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNSwgCi0gICAgNTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MTAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTE4LCAwLCAwLCAwLCAwLCAwLCAwLCA1MTksIDAsIDAsIDAsIDAsIDAsIDAsIDUyMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI3LCAwLCAwLCAwLCAwLCAwLCAwLCA1MjgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUyOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTMwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUzMiwgNTMzLCAwLCAwLCAwLCAwLCAwLCA1MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTM2LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzOCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM5LCA1NDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ1LCAwLCAwLCAwLCAwLCAwLCA1NDYsIAotICAgIDU0NywgMCwgMCwgMCwgMCwgMCwgNTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA1NDksIDAsIDAsIDAsIDAsIDAsIDAsIDU1MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUxLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NTgsIDAsIDAsIDAsIDAsIDAsIDU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgNTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTcyLCAwLCAwLCAwLCAwLCAwLCA1NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NzYsIDAsIDAsIDAsIDAsIDAsIDU3NywgNTc4LCAwLCAwLCAwLCAwLCAwLCA1NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDc0LCAwLCAwLCAwLCAwLCAwLCAwLCA0NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MiwgMCwgMCwgMCwgMCwgMCwgMCwgNDgzLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDkyLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDk1LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDk4LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTksIDAsIDAsIDAsIDAsIDAsIDAsIDUwMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTA0LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTA3LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTEwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MjAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUyMSwgMCwgMCwgMCwgMCwgMCwgMCwgNTIyLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjMsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTM0LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDUzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDUzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTczLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA1ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNTg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNjAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDYwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA2MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwOCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDYyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCA2MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDYyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNjM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzksIDY0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQ3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNjU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjAsIDY2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjY1LCA2NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MzMsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBjb21wX2RhdGFbXSA9IHsKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODE0LCAwLCAwLCA4ODAwLCAwLCAwLCA4ODE1LCAwLCAwLCAwLCAxOTIsIDE5MywgCi0gICAgMTk0LCAxOTUsIDI1NiwgMjU4LCA1NTAsIDE5NiwgNzg0MiwgMTk3LCAwLCA0NjEsIDUxMiwgNTE0LCAwLCAwLCAwLCA3ODQwLCAKLSAgICAwLCA3NjgwLCAwLCAwLCAyNjAsIDAsIDAsIDc2ODIsIDAsIDAsIDc2ODQsIDAsIDAsIDAsIDAsIDc2ODYsIDAsIDI2MiwgCi0gICAgMjY0LCAwLCAwLCAwLCAyNjYsIDAsIDAsIDAsIDAsIDI2OCwgMCwgMTk5LCAwLCAwLCAwLCA3NjkwLCAwLCAwLCAwLCAwLCAKLSAgICAyNzAsIDAsIDAsIDAsIDAsIDAsIDc2OTIsIDAsIDAsIDAsIDc2OTYsIDAsIDc2OTgsIDAsIDAsIDc2OTQsIDAsIDAsIDAsIDAsIAotICAgIDIwMCwgMjAxLCAyMDIsIDc4NjgsIDI3NCwgMjc2LCAyNzgsIDIwMywgNzg2NiwgMCwgMCwgMjgyLCA1MTYsIDUxOCwgMCwgMCwgCi0gICAgMCwgNzg2NCwgMCwgMCwgMCwgNTUyLCAyODAsIDc3MDQsIDAsIDc3MDYsIDAsIDAsIDAsIDc3MTAsIDAsIDUwMCwgMjg0LCAwLCAKLSAgICA3NzEyLCAyODYsIDI4OCwgMCwgMCwgMCwgMCwgNDg2LCAwLCAyOTAsIDAsIDAsIDAsIDI5MiwgMCwgMCwgMCwgNzcxNCwgCi0gICAgNzcxOCwgMCwgMCwgMCwgNTQyLCAwLCAwLCAwLCAwLCAwLCA3NzE2LCAwLCAwLCAwLCA3NzIwLCAwLCAwLCA3NzIyLCAwLCAwLCAKLSAgICAyMDQsIDIwNSwgMjA2LCAyOTYsIDI5OCwgMzAwLCAzMDQsIDIwNywgNzg4MCwgMCwgMCwgNDYzLCA1MjAsIDUyMiwgMCwgMCwgCi0gICAgMCwgNzg4MiwgMCwgMCwgMCwgMCwgMzAyLCAwLCAwLCA3NzI0LCAwLCAwLCAwLCAzMDgsIDAsIDc3MjgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4OCwgMCwgNzczMCwgMCwgMCwgMCwgMzEwLCAwLCAwLCAwLCAwLCA3NzMyLCAwLCAwLCAwLCAwLCAwLCAzMTMsIDAsIAotICAgIDMxNywgMCwgMCwgMCwgMCwgMCwgNzczNCwgMCwgMCwgMCwgMzE1LCAwLCA3NzQwLCAwLCAwLCA3NzM4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3NzQyLCAwLCAwLCAwLCAwLCA3NzQ0LCAwLCAwLCA3NzQ2LCAwLCA1MDQsIDMyMywgMCwgMjA5LCAwLCAwLCA3NzQ4LCAKLSAgICAwLCAwLCAwLCAwLCAzMjcsIDAsIDc3NTAsIDAsIDAsIDAsIDMyNSwgMCwgNzc1NCwgMCwgMCwgNzc1MiwgMCwgMCwgMCwgMCwgCi0gICAgMjEwLCAyMTEsIDIxMiwgMjEzLCAzMzIsIDMzNCwgNTU4LCAyMTQsIDc4ODYsIDAsIDMzNiwgNDY1LCA1MjQsIDUyNiwgMCwgCi0gICAgMCwgNDE2LCA3ODg0LCAwLCAwLCAwLCAwLCA0OTAsIDAsIDAsIDAsIDAsIDAsIDc3NjQsIDc3NjYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM0MCwgMCwgMCwgMCwgMCwgNzc2OCwgMzQ0LCA1MjgsIDUzMCwgMCwgMCwgMCwgNzc3MCwgMCwgMCwgMCwgMzQyLCAwLCAwLCAKLSAgICAwLCAwLCA3Nzc0LCAwLCAzNDYsIDM0OCwgMCwgMCwgMCwgNzc3NiwgMCwgMCwgMCwgMCwgMzUyLCAwLCA3Nzc4LCAwLCAwLCAKLSAgICA1MzYsIDM1MCwgMCwgMCwgMCwgNzc4NiwgMCwgMCwgMCwgMCwgMzU2LCAwLCA3Nzg4LCAwLCAwLCA1MzgsIDM1NCwgMCwgCi0gICAgNzc5MiwgMCwgMCwgNzc5MCwgMCwgMCwgMCwgMCwgMjE3LCAyMTgsIDIxOSwgMzYwLCAzNjIsIDM2NCwgMCwgMjIwLCA3OTEwLCAKLSAgICAzNjYsIDM2OCwgNDY3LCA1MzIsIDUzNCwgMCwgMCwgNDMxLCA3OTA4LCA3Nzk0LCAwLCAwLCAwLCAzNzAsIDc3OTgsIDAsIAotICAgIDc3OTYsIDc4MDQsIDAsIDAsIDAsIDAsIDAsIDc4MDYsIDAsIDc4MDgsIDc4MTAsIDM3MiwgMCwgMCwgMCwgNzgxNCwgNzgxMiwgCi0gICAgMCwgNzgxNiwgMCwgMCwgMCwgNzgxOCwgNzgyMCwgMCwgMCwgMCwgNzkyMiwgMjIxLCAzNzQsIDc5MjgsIDU2MiwgMCwgCi0gICAgNzgyMiwgMzc2LCA3OTI2LCAwLCAwLCAwLCAwLCA3OTI0LCAwLCAwLCAzNzcsIDc4MjQsIDAsIDAsIDAsIDM3OSwgMzgxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3ODI2LCAwLCAwLCAwLCAwLCA3ODI4LCAyMjQsIDIyNSwgMjI2LCAyMjcsIDI1NywgMjU5LCA1NTEsIAotICAgIDIyOCwgNzg0MywgMjI5LCAwLCA0NjIsIDUxMywgNTE1LCAwLCAwLCAwLCA3ODQxLCAwLCA3NjgxLCAwLCAwLCAyNjEsIDAsIAotICAgIDAsIDc2ODMsIDAsIDAsIDc2ODUsIDAsIDAsIDAsIDAsIDc2ODcsIDAsIDAsIDAsIDAsIDAsIDI2MywgMjY1LCAwLCAwLCAwLCAKLSAgICAyNjcsIDAsIDAsIDAsIDAsIDI2OSwgMCwgMCwgMCwgMCwgMCwgMjMxLCAwLCAwLCAwLCA3NjkxLCAyNzEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDc2OTMsIDAsIDAsIDAsIDc2OTcsIDAsIDc2OTksIDAsIDAsIDc2OTUsIDIzMiwgMjMzLCAyMzQsIDc4NjksIDI3NSwgCi0gICAgMjc3LCAyNzksIDIzNSwgNzg2NywgMCwgMCwgMjgzLCA1MTcsIDUxOSwgMCwgMCwgMCwgNzg2NSwgMCwgMCwgMCwgNTUzLCAKLSAgICAyODEsIDc3MDUsIDAsIDc3MDcsIDAsIDAsIDAsIDc3MTEsIDAsIDAsIDAsIDAsIDAsIDUwMSwgMjg1LCAwLCA3NzEzLCAyODcsIAotICAgIDI4OSwgMCwgMCwgMCwgMCwgNDg3LCAwLCAwLCAwLCAwLCAwLCAyOTEsIDAsIDAsIDAsIDI5MywgMCwgMCwgMCwgNzcxNSwgCi0gICAgNzcxOSwgMCwgMCwgMCwgNTQzLCAwLCAwLCAwLCAwLCAwLCA3NzE3LCAwLCAwLCAwLCA3NzIxLCAwLCAwLCA3NzIzLCAwLCAKLSAgICA3ODMwLCAyMzYsIDIzNywgMjM4LCAyOTcsIDI5OSwgMzAxLCAwLCAyMzksIDc4ODEsIDAsIDAsIDQ2NCwgNTIxLCA1MjMsIDAsIAotICAgIDAsIDAsIDc4ODMsIDAsIDAsIDAsIDAsIDMwMywgMCwgMCwgNzcyNSwgMCwgMCwgMCwgMzA5LCAwLCAwLCAwLCAwLCA0OTYsIAotICAgIDAsIDAsIDAsIDAsIDc3MjksIDAsIDQ4OSwgMCwgMCwgMCwgMCwgMCwgNzczMSwgMCwgMCwgMCwgMzExLCA3NzMzLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAzMTQsIDAsIDMxOCwgMCwgMCwgMCwgMCwgMCwgNzczNSwgMCwgMCwgMCwgMzE2LCAwLCA3NzQxLCAwLCAwLCAKLSAgICA3NzM5LCAwLCA3NzQzLCAwLCAwLCAwLCAwLCA3NzQ1LCAwLCAwLCA3NzQ3LCAwLCAwLCAwLCAwLCAwLCA1MDUsIDMyNCwgMCwgCi0gICAgMjQxLCAwLCAwLCA3NzQ5LCAwLCAwLCAwLCAwLCAzMjgsIDAsIDc3NTEsIDAsIDAsIDAsIDMyNiwgMCwgNzc1NSwgMCwgMCwgCi0gICAgNzc1MywgMCwgMCwgMCwgMCwgMjQyLCAyNDMsIDI0NCwgMjQ1LCAzMzMsIDMzNSwgNTU5LCAyNDYsIDc4ODcsIDAsIDMzNywgCi0gICAgNDY2LCA1MjUsIDUyNywgMCwgMCwgNDE3LCA3ODg1LCA0OTEsIDAsIDAsIDAsIDAsIDAsIDc3NjUsIDAsIDAsIDAsIDAsIAotICAgIDc3NjcsIDAsIDM0MSwgMCwgMCwgMCwgMCwgNzc2OSwgMCwgMCwgMCwgMCwgMzQ1LCA1MjksIDUzMSwgMCwgMCwgMCwgNzc3MSwgCi0gICAgMCwgMCwgMCwgMzQzLCAwLCAwLCAwLCAwLCA3Nzc1LCAwLCAzNDcsIDM0OSwgMCwgMCwgMCwgNzc3NywgMCwgMCwgMCwgMCwgCi0gICAgMzUzLCAwLCA3Nzc5LCAwLCAwLCA1MzcsIDM1MSwgMCwgMCwgMCwgNzc4NywgNzgzMSwgMCwgMCwgMCwgMzU3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3Nzg5LCAwLCAwLCA1MzksIDM1NSwgMCwgNzc5MywgMCwgMCwgNzc5MSwgMCwgMCwgMCwgMCwgMjQ5LCAyNTAsIAotICAgIDI1MSwgMzYxLCAzNjMsIDM2NSwgMCwgMjUyLCA3OTExLCAzNjcsIDM2OSwgNDY4LCA1MzMsIDUzNSwgMCwgMCwgNDMyLCAKLSAgICA3OTA5LCA3Nzk1LCAwLCAwLCAwLCAzNzEsIDc3OTksIDAsIDc3OTcsIDAsIDAsIDAsIDAsIDc4MDUsIDAsIDc4MDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDc4MDksIDc4MTEsIDM3MywgMCwgMCwgMCwgNzgxNSwgNzgxMywgMCwgNzgzMiwgMCwgMCwgMCwgNzgxNywgMCwgCi0gICAgMCwgMCwgNzgxOSwgNzgyMSwgMCwgMCwgMCwgNzkyMywgMjUzLCAzNzUsIDc5MjksIDU2MywgMCwgNzgyMywgMjU1LCA3OTI3LCAKLSAgICA3ODMzLCAwLCAwLCAwLCA3OTI1LCAwLCAwLCAzNzgsIDc4MjUsIDAsIDAsIDAsIDM4MCwgMCwgMCwgMCwgMCwgMzgyLCAwLCAKLSAgICA3ODI3LCAwLCAwLCAwLCAwLCA3ODI5LCAwLCAwLCAwLCAwLCA4MTczLCA5MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDgxMjksIDAsIAotICAgIDAsIDc4NDYsIDc4NDQsIDAsIDc4NTAsIDAsIDAsIDAsIDAsIDc4NDgsIDAsIDAsIDQ3OCwgMCwgMCwgMCwgNTA2LCAwLCAwLCAKLSAgICA1MDgsIDAsIDAsIDQ4MiwgMCwgMCwgMCwgNzY4OCwgMCwgNzg3MiwgNzg3MCwgMCwgNzg3NiwgMCwgMCwgMCwgMCwgNzg3NCwgCi0gICAgMCwgMCwgMCwgNzcyNiwgMCwgMCwgMCwgMCwgMCwgNzg5MCwgNzg4OCwgMCwgNzg5NCwgMCwgMCwgMCwgMCwgNzg5MiwgMCwgCi0gICAgMCwgMCwgNzc1NiwgMCwgMCwgNTU2LCAwLCAwLCA3NzU4LCAwLCAwLCAwLCA1NTQsIDAsIDAsIDAsIDUxMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDc1LCA0NzEsIDAsIDAsIDQ2OSwgMCwgMCwgNDczLCAwLCAwLCAwLCA3ODQ3LCA3ODQ1LCAwLCA3ODUxLCAwLCAwLCAKLSAgICAwLCAwLCA3ODQ5LCAwLCAwLCA0NzksIDAsIDAsIDAsIDUwNywgMCwgMCwgNTA5LCAwLCAwLCA0ODMsIDAsIDAsIDAsIDc2ODksIAotICAgIDAsIDc4NzMsIDc4NzEsIDAsIDc4NzcsIDAsIDAsIDAsIDAsIDc4NzUsIDAsIDAsIDAsIDc3MjcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDc4OTEsIDc4ODksIDAsIDc4OTUsIDAsIDAsIDAsIDAsIDc4OTMsIDAsIDAsIDAsIDc3NTcsIDAsIDAsIDU1NywgMCwgMCwgCi0gICAgNzc1OSwgMCwgMCwgMCwgNTU1LCAwLCAwLCAwLCA1MTEsIDAsIDAsIDAsIDAsIDAsIDQ3NiwgNDcyLCAwLCAwLCA0NzAsIDAsIAotICAgIDAsIDQ3NCwgMCwgMCwgMCwgNzg1NiwgNzg1NCwgMCwgNzg2MCwgMCwgMCwgMCwgMCwgNzg1OCwgMCwgMCwgNzg1NywgNzg1NSwgCi0gICAgMCwgNzg2MSwgMCwgMCwgMCwgMCwgNzg1OSwgMCwgMCwgNzcwMCwgNzcwMiwgMCwgMCwgMCwgMCwgMCwgNzcwMSwgNzcwMywgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzc2MCwgNzc2MiwgMCwgNzc2MSwgNzc2MywgMCwgMCwgMCwgNzc4MCwgMCwgMCwgNzc4MSwgMCwgCi0gICAgMCwgNzc4MiwgMCwgMCwgMCwgMCwgMCwgMCwgNzc4MywgMCwgNzgwMCwgMCwgMCwgNzgwMSwgMCwgMCwgMCwgMCwgNzgwMiwgCi0gICAgMCwgMCwgNzgwMywgMCwgMCwgMCwgMCwgMCwgNzgzNSwgMCwgMCwgMCwgMCwgNzkwMCwgNzg5OCwgMCwgNzkwNCwgMCwgMCwgCi0gICAgMCwgMCwgNzkwMiwgNzkwNiwgMCwgMCwgMCwgMCwgMCwgNzkwMSwgNzg5OSwgMCwgNzkwNSwgMCwgMCwgMCwgMCwgNzkwMywgCi0gICAgMCwgMCwgMCwgMCwgNzkwNywgMCwgNzkxNCwgNzkxMiwgMCwgNzkxOCwgMCwgMCwgMCwgMCwgNzkxNiwgMCwgMCwgMCwgMCwgCi0gICAgNzkyMCwgMCwgNzkxNSwgNzkxMywgMCwgNzkxOSwgNzkxNywgMCwgMCwgMCwgMCwgNzkyMSwgMCwgMCwgMCwgMCwgNDk0LCAwLCAKLSAgICAwLCAwLCA0OTIsIDAsIDAsIDQ5MywgMCwgMCwgNDgwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODEsIDAsIDAsIDAsIDc3MDgsIDAsIAotICAgIDAsIDc3MDksIDAsIDU2MCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYxLCAwLCA0OTUsIDAsIDAsIDAsIDgxMjIsIDkwMiwgMCwgMCwgCi0gICAgODEyMSwgODEyMCwgMCwgMCwgMCwgMCwgNzk0NCwgNzk0NSwgMCwgMCwgMCwgMCwgMCwgODEyNCwgMCwgODEzNiwgOTA0LCAwLCAKLSAgICAwLCAwLCAwLCA3OTYwLCA3OTYxLCAwLCAwLCAwLCA4MTM4LCA5MDUsIDAsIDAsIDAsIDAsIDc5NzYsIDc5NzcsIDAsIDgxNDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgxNTQsIDkwNiwgMCwgMCwgODE1MywgODE1MiwgMCwgOTM4LCAwLCAwLCA3OTkyLCA3OTkzLCAwLCAKLSAgICAwLCAwLCA4MTg0LCA5MDgsIDAsIDAsIDAsIDAsIDgwMDgsIDgwMDksIDAsIDAsIDAsIDAsIDAsIDAsIDgxNzIsIDAsIDAsIDAsIAotICAgIDgxNzAsIDkxMCwgMCwgMCwgODE2OSwgODE2OCwgMCwgOTM5LCAwLCAwLCAwLCA4MDI1LCAwLCAwLCAwLCA4MTg2LCA5MTEsIAotICAgIDgwNDAsIDgwNDEsIDAsIDAsIDAsIDAsIDAsIDgxODgsIDAsIDAsIDgxMTYsIDAsIDAsIDgxMzIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDgwNDgsIDk0MCwgMCwgMCwgODExMywgODExMiwgMCwgMCwgMCwgMCwgNzkzNiwgNzkzNywgMCwgMCwgMCwgMCwgODExOCwgCi0gICAgODExNSwgMCwgMCwgMCwgMCwgMCwgODA1MCwgOTQxLCA3OTUyLCA3OTUzLCAwLCAwLCAwLCA4MDUyLCA5NDIsIDAsIDAsIDAsIAotICAgIDAsIDc5NjgsIDc5NjksIDAsIDAsIDAsIDAsIDgxMzQsIDgxMzEsIDAsIDgwNTQsIDk0MywgMCwgMCwgODE0NSwgODE0NCwgMCwgCi0gICAgOTcwLCAwLCAwLCA3OTg0LCA3OTg1LCA4MTUwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDU2LCA5NzIsIDAsIDAsIDAsIDAsIAotICAgIDgwMDAsIDgwMDEsIDAsIDgxNjQsIDgxNjUsIDAsIDAsIDAsIDgwNTgsIDk3MywgMCwgMCwgODE2MSwgODE2MCwgMCwgOTcxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA4MDE2LCA4MDE3LCAwLCAwLCAwLCAwLCA4MTY2LCAwLCAwLCA4MDYwLCA5NzQsIDAsIDAsIDAsIAotICAgIDAsIDgwMzIsIDgwMzMsIDgxODIsIDgxNzksIDAsIDAsIDAsIDAsIDAsIDgxNDYsIDkxMiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgODE1MSwgMCwgMCwgODE2MiwgOTQ0LCAwLCAwLCA4MTY3LCAwLCAwLCAwLCA4MTgwLCAwLCAwLCA5NzksIDAsIDAsIDAsIDAsIAotICAgIDAsIDk4MCwgMCwgMCwgMTAzMSwgMCwgMCwgMCwgMCwgMTIzMiwgMCwgMTIzNCwgMCwgMCwgMCwgMCwgMTAyNywgMCwgMTAyNCwgCi0gICAgMCwgMCwgMCwgMCwgMTIzOCwgMCwgMTAyNSwgMTIxNywgMCwgMTI0NCwgMCwgMCwgMTI0NiwgMCwgMCwgMCwgMTAzNywgMCwgCi0gICAgMCwgMCwgMTI1MCwgMTA0OSwgMCwgMTI1MiwgMCwgMCwgMCwgMCwgMTAzNiwgMCwgMCwgMCwgMCwgMTI1NCwgMCwgMCwgMCwgCi0gICAgMTI2MiwgMTAzOCwgMCwgMTI2NCwgMCwgMCwgMTI2NiwgMCwgMCwgMCwgMTI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MiwgCi0gICAgMCwgMCwgMTI2MCwgMCwgMCwgMCwgMCwgMTIzMywgMCwgMTIzNSwgMCwgMCwgMCwgMCwgMTEwNywgMCwgMTEwNCwgMCwgMCwgCi0gICAgMCwgMCwgMTIzOSwgMCwgMTEwNSwgMTIxOCwgMCwgMTI0NSwgMCwgMCwgMTI0NywgMCwgMCwgMCwgMTExNywgMCwgMCwgMCwgCi0gICAgMTI1MSwgMTA4MSwgMCwgMTI1MywgMCwgMCwgMCwgMCwgMTExNiwgMCwgMCwgMCwgMCwgMTI1NSwgMCwgMCwgMCwgMTI2MywgCi0gICAgMTExOCwgMCwgMTI2NSwgMCwgMCwgMTI2NywgMCwgMCwgMCwgMTI2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MywgMCwgMCwgCi0gICAgMTI2MSwgMCwgMCwgMTExMSwgMCwgMCwgMCwgMTE0MiwgMCwgMCwgMTE0MywgMCwgMCwgMCwgMCwgMCwgMTI0MiwgMCwgMCwgCi0gICAgMTI0MywgMCwgMCwgMTI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1OSwgMCwgMTU3MCwgMTU3MSwgMTU3MywgMCwgMTU3MiwgCi0gICAgMCwgMCwgMTU3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTczMCwgMCwgMCwgMTc0NywgMCwgMCwgMTcyOCwgMCwgMCwgMCwgMCwgCi0gICAgMjM0NSwgMCwgMCwgMjM1MywgMCwgMCwgMjM1NiwgMCwgMCwgMCwgMjUwNywgMjUwOCwgMCwgMCwgMCwgMjg5MSwgMjg4OCwgCi0gICAgMjg5MiwgMjk2NCwgMCwgMCwgMCwgMCwgMCwgMzAxOCwgMzAyMCwgMCwgMzAxOSwgMCwgMCwgMCwgMCwgMzE0NCwgMCwgMCwgCi0gICAgMCwgMCwgMzI2NCwgMCwgMzI3NCwgMzI3MSwgMzI3MiwgMCwgMzI3NSwgMCwgMCwgMCwgMCwgMzQwMiwgMzQwNCwgMCwgCi0gICAgMzQwMywgMCwgMCwgMCwgMCwgMzU0NiwgMzU0OCwgMzU1MCwgMCwgMCwgMCwgMCwgMzU0OSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDEzNCwgMCwgMCwgMCwgNjkxOCwgMCwgMCwgNjkyMCwgMCwgMCwgNjkyMiwgMCwgMCwgNjkyNCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNjkyNiwgMCwgMCwgNjkzMCwgMCwgMCwgNjk3MSwgMCwgMCwgNjk3MywgMCwgMCwgMCwgMCwgMCwgMCwgNjk3NiwgMCwgCi0gICAgMCwgNjk3NywgMCwgMCwgNjk3OSwgMCwgMCwgMCwgNzczNiwgMCwgMCwgNzczNywgMCwgMCwgMCwgMCwgMCwgMCwgNzc3MiwgCi0gICAgMCwgMCwgNzc3MywgMCwgMCwgMCwgMCwgNzc4NCwgMCwgMCwgNzc4NSwgMCwgMCwgNzg1MiwgMCwgMCwgNzg2MiwgMCwgMCwgCi0gICAgMCwgNzg1MywgMCwgMCwgNzg2MywgMCwgMCwgMCwgNzg3OCwgMCwgMCwgNzg3OSwgMCwgMCwgNzg5NiwgMCwgMCwgNzg5NywgCi0gICAgMCwgMCwgMCwgMCwgNzkzOCwgNzk0MCwgMCwgMCwgNzk0MiwgODA2NCwgMCwgNzkzOSwgNzk0MSwgMCwgMCwgNzk0MywgCi0gICAgODA2NSwgMCwgMCwgODA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgODA2NywgMCwgMCwgODA2OCwgMCwgMCwgODA2OSwgMCwgMCwgCi0gICAgODA3MCwgMCwgMCwgMCwgMCwgMCwgMCwgODA3MSwgMCwgNzk0NiwgNzk0OCwgMCwgMCwgNzk1MCwgODA3MiwgMCwgNzk0NywgCi0gICAgNzk0OSwgMCwgMCwgNzk1MSwgODA3MywgMCwgMCwgODA3NCwgMCwgMCwgMCwgMCwgMCwgMCwgODA3NSwgMCwgMCwgODA3NiwgCi0gICAgMCwgMCwgODA3NywgMCwgMCwgODA3OCwgMCwgMCwgMCwgMCwgMCwgMCwgODA3OSwgMCwgNzk1NCwgNzk1NiwgMCwgNzk1NSwgCi0gICAgNzk1NywgMCwgMCwgMCwgMCwgMCwgNzk2MiwgNzk2NCwgMCwgMCwgMCwgMCwgMCwgNzk2MywgNzk2NSwgMCwgNzk3MCwgCi0gICAgNzk3MiwgMCwgMCwgNzk3NCwgODA4MCwgMCwgNzk3MSwgNzk3MywgMCwgMCwgNzk3NSwgODA4MSwgMCwgMCwgODA4MiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODA4MywgMCwgMCwgODA4NCwgMCwgMCwgODA4NSwgMCwgMCwgODA4NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgODA4NywgMCwgNzk3OCwgNzk4MCwgMCwgMCwgNzk4MiwgODA4OCwgMCwgNzk3OSwgNzk4MSwgMCwgMCwgNzk4MywgCi0gICAgODA4OSwgMCwgMCwgODA5MCwgMCwgMCwgMCwgMCwgMCwgMCwgODA5MSwgMCwgMCwgODA5MiwgMCwgMCwgODA5MywgMCwgMCwgCi0gICAgODA5NCwgMCwgMCwgMCwgMCwgMCwgMCwgODA5NSwgMCwgNzk4NiwgNzk4OCwgMCwgMCwgNzk5MCwgMCwgMCwgNzk4NywgCi0gICAgNzk4OSwgMCwgMCwgNzk5MSwgMCwgMCwgMCwgMCwgMCwgMCwgNzk5NCwgNzk5NiwgMCwgMCwgMCwgMCwgMCwgMCwgNzk5OCwgCi0gICAgMCwgMCwgNzk5NSwgNzk5NywgMCwgMCwgNzk5OSwgMCwgMCwgODAwMiwgODAwNCwgMCwgODAwMywgODAwNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODAxMCwgODAxMiwgMCwgMCwgMCwgMCwgMCwgODAxMSwgODAxMywgMCwgODAxOCwgODAyMCwgMCwgMCwgODAyMiwgCi0gICAgMCwgMCwgODAxOSwgODAyMSwgMCwgMCwgODAyMywgMCwgMCwgMCwgMCwgMCwgMCwgODAyNywgODAyOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODAzMSwgMCwgMCwgODAzNCwgODAzNiwgMCwgMCwgODAzOCwgODA5NiwgMCwgODAzNSwgODAzNywgMCwgMCwgCi0gICAgODAzOSwgODA5NywgMCwgMCwgODA5OCwgMCwgMCwgODA5OSwgMCwgMCwgMCwgMCwgMCwgMCwgODEwMCwgMCwgMCwgODEwMSwgCi0gICAgMCwgMCwgODEwMiwgMCwgMCwgODEwMywgMCwgMCwgMCwgMCwgMCwgODA0MiwgODA0NCwgMCwgMCwgODA0NiwgODEwNCwgMCwgCi0gICAgODA0MywgODA0NSwgMCwgMCwgODA0NywgODEwNSwgMCwgMCwgODEwNiwgMCwgMCwgODEwNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgODEwOCwgMCwgMCwgODEwOSwgMCwgMCwgODExMCwgMCwgMCwgODExMSwgMCwgMCwgMCwgMCwgMCwgMCwgODExNCwgMCwgMCwgCi0gICAgODEzMCwgMCwgMCwgODE3OCwgMCwgMCwgODExOSwgMCwgMCwgMCwgMCwgMCwgODE0MSwgODE0MiwgMCwgMCwgODE0MywgMCwgCi0gICAgMCwgMCwgODEzNSwgMCwgMCwgODE4MywgMCwgMCwgMCwgMCwgMCwgODE1NywgODE1OCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgODE1OSwgMCwgODYwMiwgMCwgMCwgODYwMywgMCwgMCwgMCwgMCwgMCwgMCwgODYyMiwgMCwgMCwgODY1MywgMCwgMCwgCi0gICAgODY1NSwgMCwgMCwgODY1NCwgMCwgMCwgMCwgMCwgMCwgMCwgODcwOCwgMCwgMCwgODcxMywgMCwgMCwgODcxNiwgMCwgMCwgCi0gICAgODc0MCwgMCwgMCwgMCwgMCwgMCwgMCwgODc0MiwgMCwgMCwgODc2OSwgMCwgMCwgODc3MiwgMCwgMCwgODc3NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODc3NywgMCwgMCwgODgxMywgMCwgMCwgODgwMiwgMCwgMCwgODgxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgODgxNywgMCwgMCwgODgyMCwgMCwgMCwgODgyMSwgMCwgMCwgODgyNCwgMCwgMCwgMCwgMCwgMCwgMCwgODgyNSwgMCwgMCwgCi0gICAgODgzMiwgMCwgMCwgODgzMywgMCwgMCwgODkyOCwgMCwgMCwgMCwgMCwgMCwgMCwgODkyOSwgMCwgMCwgODgzNiwgMCwgMCwgCi0gICAgODgzNywgMCwgMCwgODg0MCwgMCwgMCwgMCwgMCwgMCwgMCwgODg0MSwgMCwgMCwgODkzMCwgMCwgMCwgODkzMSwgMCwgMCwgCi0gICAgODg3NiwgMCwgMCwgMCwgMCwgMCwgMCwgODg3NywgMCwgMCwgODg3OCwgMCwgMCwgODg3OSwgMCwgMCwgODkzOCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODkzOSwgMCwgMCwgODk0MCwgMCwgMCwgODk0MSwgMCwgMCwgMCwgMTI0MzYsIDAsIDAsIDEyMzY0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMjM2NiwgMCwgMCwgMTIzNjgsIDAsIDAsIDEyMzcwLCAwLCAwLCAxMjM3MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTIzNzQsIDAsIDAsIDEyMzc2LCAwLCAwLCAxMjM3OCwgMCwgMCwgMTIzODAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyMzgyLCAwLCAwLCAxMjM4NCwgMCwgMCwgMTIzODYsIDAsIDAsIDEyMzg5LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjM5MSwgMCwgCi0gICAgMCwgMTIzOTMsIDAsIDAsIDEyNDAwLCAxMjQwMSwgMCwgMTI0MDMsIDEyNDA0LCAwLCAwLCAwLCAwLCAwLCAxMjQwNiwgCi0gICAgMTI0MDcsIDAsIDAsIDAsIDAsIDAsIDEyNDA5LCAxMjQxMCwgMCwgMTI0MTIsIDEyNDEzLCAwLCAxMjQ0NiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTI1MzIsIDAsIDAsIDEyNDYwLCAwLCAwLCAxMjQ2MiwgMCwgMCwgMTI0NjQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNDY2LCAwLCAwLCAxMjQ2OCwgMCwgMCwgMTI0NzAsIDAsIDAsIDEyNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQ3NCwgMCwgCi0gICAgMCwgMTI0NzYsIDAsIDAsIDEyNDc4LCAwLCAwLCAxMjQ4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0ODIsIDAsIDAsIDEyNDg1LCAKLSAgICAwLCAwLCAxMjQ4NywgMCwgMCwgMTI0ODksIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDk2LCAxMjQ5NywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI0OTksIDEyNTAwLCAwLCAxMjUwMiwgMTI1MDMsIDAsIDEyNTA1LCAxMjUwNiwgMCwgMCwgMCwgMCwgMCwgMTI1MDgsIAotICAgIDEyNTA5LCAwLCAwLCAwLCAwLCAwLCAxMjUzNSwgMCwgMCwgMTI1MzYsIDAsIDAsIDEyNTM3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjUzOCwgMCwgMCwgMTI1NDIsIDAsIDAsIDAsIDAsIDY5Nzg2LCAwLCAwLCA2OTc4OCwgMCwgMCwgNjk4MDMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MTQsIDAsIDAsIDAsIDg4MDAsIDAsIDAsIDAsIDg4MTUsIDE5MiwgMTkzLCAxOTQsIAorICAgIDE5NSwgMjU2LCAyNTgsIDU1MCwgMTk2LCA3ODQyLCAxOTcsIDAsIDQ2MSwgNTEyLCA1MTQsIDAsIDAsIDAsIDc4NDAsIDAsIAorICAgIDc2ODAsIDAsIDAsIDI2MCwgMCwgMCwgMCwgNzY4MiwgMCwgMCwgNzY4NCwgMCwgMCwgMCwgMCwgNzY4NiwgMCwgMCwgMjYyLCAKKyAgICAyNjQsIDAsIDAsIDAsIDI2NiwgMCwgMCwgMCwgMCwgMjY4LCAwLCAxOTksIDAsIDAsIDAsIDAsIDc2OTAsIDAsIDAsIDAsIDAsIAorICAgIDI3MCwgMCwgNzY5MiwgMCwgMCwgMCwgNzY5NiwgMCwgNzY5OCwgMCwgMCwgNzY5NCwgMCwgMjAwLCAyMDEsIDIwMiwgNzg2OCwgCisgICAgMjc0LCAyNzYsIDI3OCwgMjAzLCA3ODY2LCAwLCAwLCAyODIsIDUxNiwgNTE4LCAwLCAwLCAwLCA3ODY0LCAwLCAwLCAwLCAKKyAgICA1NTIsIDI4MCwgNzcwNCwgMCwgNzcwNiwgMCwgMCwgMCwgMCwgNzcxMCwgMCwgMCwgNTAwLCAyODQsIDAsIDc3MTIsIDI4NiwgCisgICAgMjg4LCAwLCAwLCAwLCAwLCA0ODYsIDAsIDI5MCwgMCwgMCwgMCwgMCwgMjkyLCAwLCAwLCAwLCA3NzE0LCA3NzE4LCAwLCAwLCAKKyAgICAwLCA1NDIsIDAsIDc3MTYsIDAsIDAsIDAsIDc3MjAsIDAsIDAsIDc3MjIsIDAsIDAsIDAsIDIwNCwgMjA1LCAyMDYsIDI5NiwgCisgICAgMjk4LCAzMDAsIDMwNCwgMjA3LCA3ODgwLCAwLCAwLCA0NjMsIDUyMCwgNTIyLCAwLCAwLCAwLCA3ODgyLCAwLCAwLCAwLCAwLCAKKyAgICAzMDIsIDAsIDAsIDc3MjQsIDAsIDAsIDAsIDAsIDMwOCwgMCwgMCwgNzcyOCwgMCwgMCwgMCwgMCwgMCwgNDg4LCAwLCAKKyAgICA3NzMwLCAwLCAwLCAwLCAzMTAsIDAsIDAsIDAsIDAsIDc3MzIsIDAsIDAsIDMxMywgMCwgMCwgMCwgMCwgMCwgMzE3LCAwLCAKKyAgICA3NzM0LCAwLCAwLCAwLCAzMTUsIDAsIDc3NDAsIDAsIDAsIDc3MzgsIDAsIDAsIDc3NDIsIDAsIDAsIDAsIDAsIDc3NDQsIDAsIAorICAgIDAsIDc3NDYsIDAsIDAsIDUwNCwgMzIzLCAwLCAyMDksIDAsIDAsIDc3NDgsIDAsIDAsIDAsIDAsIDMyNywgMCwgNzc1MCwgMCwgCisgICAgMCwgMCwgMzI1LCAwLCA3NzU0LCAwLCAwLCA3NzUyLCAwLCAyMTAsIDIxMSwgMjEyLCAyMTMsIDMzMiwgMzM0LCA1NTgsIAorICAgIDIxNCwgNzg4NiwgMCwgMzM2LCA0NjUsIDUyNCwgNTI2LCAwLCAwLCA0MTYsIDc4ODQsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgCisgICAgNzc2NCwgMCwgMCwgMCwgMCwgNzc2NiwgMCwgMCwgMzQwLCAwLCAwLCAwLCAwLCA3NzY4LCAwLCAwLCAwLCAwLCAzNDQsIAorICAgIDUyOCwgNTMwLCAwLCAwLCAwLCA3NzcwLCAwLCAwLCAwLCAzNDIsIDAsIDAsIDAsIDAsIDc3NzQsIDAsIDAsIDM0NiwgMzQ4LCAKKyAgICAwLCAwLCAwLCA3Nzc2LCAwLCAwLCAwLCAwLCAzNTIsIDAsIDc3NzgsIDAsIDAsIDUzNiwgMzUwLCAwLCAwLCAwLCAwLCAKKyAgICA3Nzg2LCAwLCAwLCAwLCAwLCAzNTYsIDAsIDc3ODgsIDAsIDAsIDUzOCwgMzU0LCAwLCA3NzkyLCAwLCAwLCA3NzkwLCAwLCAKKyAgICAyMTcsIDIxOCwgMjE5LCAzNjAsIDM2MiwgMzY0LCAwLCAyMjAsIDc5MTAsIDM2NiwgMzY4LCA0NjcsIDUzMiwgNTM0LCAwLCAKKyAgICAwLCA0MzEsIDc5MDgsIDc3OTQsIDAsIDAsIDAsIDM3MCwgNzc5OCwgMCwgNzc5NiwgMCwgMCwgMCwgMCwgMCwgNzgwNCwgMCwgCisgICAgNzgwNiwgMCwgMCwgNzgwOCwgNzgxMCwgMzcyLCAwLCAwLCAwLCA3ODE0LCA3ODEyLCAwLCA3ODE2LCAwLCAwLCAwLCAwLCAKKyAgICA3ODE4LCA3ODIwLCA3OTIyLCAyMjEsIDM3NCwgNzkyOCwgNTYyLCAwLCA3ODIyLCAzNzYsIDc5MjYsIDAsIDAsIDAsIDAsIAorICAgIDc5MjQsIDAsIDAsIDAsIDM3NywgNzgyNCwgMCwgMCwgMCwgMzc5LCAwLCAwLCAwLCAwLCAzODEsIDAsIDc4MjYsIDAsIDAsIAorICAgIDAsIDAsIDc4MjgsIDAsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjU3LCAyNTksIDU1MSwgMjI4LCA3ODQzLCAyMjksIDAsIDQ2MiwgCisgICAgNTEzLCA1MTUsIDAsIDAsIDAsIDc4NDEsIDAsIDc2ODEsIDAsIDAsIDI2MSwgMCwgMCwgMCwgNzY4MywgMCwgMCwgNzY4NSwgCisgICAgMCwgMCwgMCwgMCwgNzY4NywgMCwgMCwgMjYzLCAyNjUsIDAsIDAsIDAsIDI2NywgMCwgMCwgMCwgMCwgMjY5LCAwLCAyMzEsIAorICAgIDAsIDAsIDAsIDAsIDc2OTEsIDAsIDAsIDAsIDAsIDI3MSwgMCwgNzY5MywgMCwgMCwgMCwgNzY5NywgMCwgNzY5OSwgMCwgMCwgCisgICAgNzY5NSwgMCwgMjMyLCAyMzMsIDIzNCwgNzg2OSwgMjc1LCAyNzcsIDI3OSwgMjM1LCA3ODY3LCAwLCAwLCAyODMsIDUxNywgCisgICAgNTE5LCAwLCAwLCAwLCA3ODY1LCAwLCAwLCAwLCA1NTMsIDI4MSwgNzcwNSwgMCwgNzcwNywgMCwgMCwgMCwgMCwgNzcxMSwgCisgICAgMCwgMCwgNTAxLCAyODUsIDAsIDc3MTMsIDI4NywgMjg5LCAwLCAwLCAwLCAwLCA0ODcsIDAsIDI5MSwgMCwgMCwgMCwgMCwgCisgICAgMjkzLCAwLCAwLCAwLCA3NzE1LCA3NzE5LCAwLCAwLCAwLCA1NDMsIDAsIDc3MTcsIDAsIDAsIDAsIDc3MjEsIDAsIDAsIAorICAgIDc3MjMsIDAsIDc4MzAsIDAsIDIzNiwgMjM3LCAyMzgsIDI5NywgMjk5LCAzMDEsIDAsIDIzOSwgNzg4MSwgMCwgMCwgNDY0LCAKKyAgICA1MjEsIDUyMywgMCwgMCwgMCwgNzg4MywgMCwgMCwgMCwgMCwgMzAzLCAwLCAwLCA3NzI1LCAwLCAwLCAwLCAwLCAzMDksIDAsIAorICAgIDAsIDAsIDAsIDQ5NiwgMCwgNzcyOSwgMCwgMCwgMCwgMCwgMCwgNDg5LCAwLCA3NzMxLCAwLCAwLCAwLCAzMTEsIDAsIDAsIAorICAgIDAsIDAsIDc3MzMsIDAsIDAsIDMxNCwgMCwgMCwgMCwgMCwgMCwgMzE4LCAwLCA3NzM1LCAwLCAwLCAwLCAzMTYsIDAsIAorICAgIDc3NDEsIDAsIDAsIDc3MzksIDAsIDAsIDc3NDMsIDAsIDAsIDAsIDAsIDc3NDUsIDAsIDAsIDc3NDcsIDAsIDAsIDUwNSwgCisgICAgMzI0LCAwLCAyNDEsIDAsIDAsIDc3NDksIDAsIDAsIDAsIDAsIDMyOCwgMCwgNzc1MSwgMCwgMCwgMCwgMzI2LCAwLCA3NzU1LCAKKyAgICAwLCAwLCA3NzUzLCAwLCAyNDIsIDI0MywgMjQ0LCAyNDUsIDMzMywgMzM1LCA1NTksIDI0NiwgNzg4NywgMCwgMzM3LCA0NjYsIAorICAgIDUyNSwgNTI3LCAwLCAwLCA0MTcsIDc4ODUsIDAsIDAsIDAsIDAsIDQ5MSwgMCwgMCwgNzc2NSwgMCwgMCwgMCwgMCwgNzc2NywgCisgICAgMCwgMCwgMzQxLCAwLCAwLCAwLCAwLCA3NzY5LCAwLCAwLCAwLCAwLCAzNDUsIDUyOSwgNTMxLCAwLCAwLCAwLCA3NzcxLCAwLCAKKyAgICAwLCAwLCAzNDMsIDAsIDAsIDAsIDAsIDc3NzUsIDAsIDAsIDM0NywgMzQ5LCAwLCAwLCAwLCA3Nzc3LCAwLCAwLCAwLCAwLCAKKyAgICAzNTMsIDAsIDc3NzksIDAsIDAsIDUzNywgMzUxLCAwLCAwLCAwLCAwLCA3Nzg3LCA3ODMxLCAwLCAwLCAwLCAzNTcsIDAsIAorICAgIDc3ODksIDAsIDAsIDUzOSwgMzU1LCAwLCA3NzkzLCAwLCAwLCA3NzkxLCAwLCAyNDksIDI1MCwgMjUxLCAzNjEsIDM2MywgCisgICAgMzY1LCAwLCAyNTIsIDc5MTEsIDM2NywgMzY5LCA0NjgsIDUzMywgNTM1LCAwLCAwLCA0MzIsIDc5MDksIDc3OTUsIDAsIDAsIAorICAgIDAsIDM3MSwgNzc5OSwgMCwgNzc5NywgMCwgMCwgMCwgMCwgMCwgNzgwNSwgMCwgNzgwNywgMCwgMCwgNzgwOSwgNzgxMSwgCisgICAgMzczLCAwLCAwLCAwLCA3ODE1LCA3ODEzLCAwLCA3ODMyLCAwLCAwLCAwLCA3ODE3LCAwLCAwLCAwLCAwLCA3ODE5LCA3ODIxLCAKKyAgICA3OTIzLCAyNTMsIDM3NSwgNzkyOSwgNTYzLCAwLCA3ODIzLCAyNTUsIDc5MjcsIDc4MzMsIDAsIDAsIDAsIDc5MjUsIDAsIDAsIAorICAgIDAsIDM3OCwgNzgyNSwgMCwgMCwgMCwgMzgwLCAwLCAwLCAwLCAwLCAzODIsIDAsIDc4MjcsIDAsIDAsIDAsIDAsIDc4MjksIAorICAgIDAsIDgxNzMsIDkwMSwgMCwgMCwgODEyOSwgMCwgMCwgMCwgNzg0NiwgNzg0NCwgMCwgNzg1MCwgNzg0OCwgMCwgMCwgMCwgCisgICAgNDc4LCAwLCAwLCAwLCAwLCA1MDYsIDAsIDAsIDAsIDUwOCwgMCwgMCwgNDgyLCAwLCAwLCAwLCAwLCA3Njg4LCAwLCAwLCAKKyAgICA3ODcyLCA3ODcwLCAwLCA3ODc2LCA3ODc0LCAwLCAwLCAwLCAwLCA3NzI2LCAwLCAwLCA3ODkwLCA3ODg4LCAwLCA3ODk0LCAKKyAgICA3ODkyLCAwLCAwLCAwLCAwLCA3NzU2LCAwLCAwLCA1NTYsIDAsIDAsIDc3NTgsIDU1NCwgMCwgMCwgMCwgMCwgNTEwLCAwLCAKKyAgICAwLCA0NzUsIDQ3MSwgMCwgMCwgNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDc4NDcsIDc4NDUsIDAsIDc4NTEsIDc4NDksIAorICAgIDAsIDAsIDAsIDQ3OSwgMCwgMCwgMCwgMCwgNTA3LCAwLCAwLCAwLCA1MDksIDAsIDAsIDQ4MywgMCwgMCwgMCwgMCwgNzY4OSwgCisgICAgMCwgMCwgNzg3MywgNzg3MSwgMCwgNzg3NywgNzg3NSwgMCwgMCwgMCwgMCwgNzcyNywgMCwgMCwgNzg5MSwgNzg4OSwgMCwgCisgICAgNzg5NSwgNzg5MywgMCwgMCwgMCwgMCwgNzc1NywgMCwgMCwgNTU3LCAwLCAwLCA3NzU5LCA1NTUsIDAsIDAsIDAsIDAsIAorICAgIDUxMSwgMCwgMCwgNDc2LCA0NzIsIDAsIDAsIDQ3MCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc0LCA3ODU2LCA3ODU0LCAwLCAKKyAgICA3ODYwLCA3ODU4LCAwLCAwLCAwLCA3ODU3LCA3ODU1LCAwLCA3ODYxLCA3ODU5LCAwLCAwLCAwLCA3NzAwLCA3NzAyLCAwLCAKKyAgICAwLCA3NzAxLCA3NzAzLCAwLCAwLCA3NzYwLCA3NzYyLCAwLCAwLCA3NzYxLCA3NzYzLCAwLCAwLCAwLCAwLCA3NzgwLCAwLCAKKyAgICAwLCAwLCA3NzgxLCAwLCAwLCAwLCA3NzgyLCAwLCAwLCAwLCA3NzgzLCAwLCAwLCA3ODAwLCAwLCAwLCAwLCA3ODAxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3ODAyLCAwLCAwLCAwLCA3ODAzLCAwLCAwLCA3ODM1LCAwLCA3OTAwLCA3ODk4LCAwLCA3OTA0LCAKKyAgICA3OTAyLCAwLCAwLCAwLCAwLCA3OTA2LCAwLCAwLCA3OTAxLCA3ODk5LCAwLCA3OTA1LCA3OTAzLCAwLCAwLCAwLCAwLCAKKyAgICA3OTA3LCAwLCAwLCA3OTE0LCA3OTEyLCAwLCA3OTE4LCA3OTE2LCAwLCAwLCAwLCAwLCA3OTIwLCAwLCAwLCA3OTE1LCAKKyAgICA3OTEzLCAwLCA3OTE5LCA3OTE3LCAwLCAwLCAwLCAwLCA3OTIxLCAwLCAwLCAwLCAwLCAwLCA0OTQsIDQ5MiwgMCwgMCwgMCwgCisgICAgNDkzLCAwLCAwLCAwLCA0ODAsIDAsIDAsIDAsIDQ4MSwgMCwgMCwgMCwgMCwgNzcwOCwgMCwgMCwgMCwgNzcwOSwgMCwgMCwgCisgICAgNTYwLCAwLCAwLCAwLCA1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NSwgODEyMiwgOTAyLCAwLCAwLCA4MTIxLCA4MTIwLCAwLCAKKyAgICAwLCAwLCAwLCA3OTQ0LCA3OTQ1LCAwLCA4MTI0LCAwLCAwLCA4MTM2LCA5MDQsIDAsIDAsIDAsIDAsIDc5NjAsIDc5NjEsIAorICAgIDgxMzgsIDkwNSwgMCwgMCwgMCwgMCwgNzk3NiwgNzk3NywgMCwgODE0MCwgMCwgMCwgODE1NCwgOTA2LCAwLCAwLCA4MTUzLCAKKyAgICA4MTUyLCAwLCA5MzgsIDAsIDAsIDc5OTIsIDc5OTMsIDgxODQsIDkwOCwgMCwgMCwgMCwgMCwgODAwOCwgODAwOSwgMCwgMCwgCisgICAgMCwgODE3MiwgODE3MCwgOTEwLCAwLCAwLCA4MTY5LCA4MTY4LCAwLCA5MzksIDAsIDAsIDAsIDgwMjUsIDgxODYsIDkxMSwgCisgICAgMCwgMCwgMCwgMCwgODA0MCwgODA0MSwgMCwgODE4OCwgMCwgMCwgMCwgODExNiwgMCwgMCwgMCwgODEzMiwgMCwgMCwgCisgICAgODA0OCwgOTQwLCAwLCAwLCA4MTEzLCA4MTEyLCAwLCAwLCAwLCAwLCA3OTM2LCA3OTM3LCA4MTE4LCA4MTE1LCAwLCAwLCAKKyAgICA4MDUwLCA5NDEsIDAsIDAsIDAsIDAsIDc5NTIsIDc5NTMsIDgwNTIsIDk0MiwgMCwgMCwgMCwgMCwgNzk2OCwgNzk2OSwgCisgICAgODEzNCwgODEzMSwgMCwgMCwgODA1NCwgOTQzLCAwLCAwLCA4MTQ1LCA4MTQ0LCAwLCA5NzAsIDAsIDAsIDc5ODQsIDc5ODUsIAorICAgIDgxNTAsIDAsIDAsIDAsIDgwNTYsIDk3MiwgMCwgMCwgMCwgMCwgODAwMCwgODAwMSwgMCwgMCwgODE2NCwgODE2NSwgODA1OCwgCisgICAgOTczLCAwLCAwLCA4MTYxLCA4MTYwLCAwLCA5NzEsIDAsIDAsIDgwMTYsIDgwMTcsIDgxNjYsIDAsIDAsIDAsIDgwNjAsIAorICAgIDk3NCwgMCwgMCwgMCwgMCwgODAzMiwgODAzMywgODE4MiwgODE3OSwgMCwgMCwgODE0NiwgOTEyLCAwLCAwLCA4MTUxLCAwLCAKKyAgICAwLCAwLCA4MTYyLCA5NDQsIDAsIDAsIDgxNjcsIDAsIDAsIDAsIDAsIDgxODAsIDAsIDAsIDAsIDk3OSwgMCwgMCwgMCwgMCwgCisgICAgMCwgOTgwLCAwLCAwLCAwLCAxMDMxLCAwLCAxMjMyLCAwLCAxMjM0LCAwLCAxMDI3LCAwLCAwLCAxMDI0LCAwLCAwLCAwLCAwLCAKKyAgICAxMjM4LCAwLCAxMDI1LCAwLCAxMjE3LCAwLCAxMjQ0LCAwLCAwLCAwLCAxMjQ2LCAxMDM3LCAwLCAwLCAwLCAxMjUwLCAKKyAgICAxMDQ5LCAwLCAxMjUyLCAwLCAxMDM2LCAwLCAwLCAwLCAwLCAwLCAxMjU0LCAxMjYyLCAxMDM4LCAwLCAxMjY0LCAwLCAwLCAKKyAgICAxMjY2LCAwLCAwLCAwLCAwLCAxMjY4LCAwLCAwLCAwLCAxMjcyLCAwLCAwLCAwLCAxMjYwLCAwLCAxMjMzLCAwLCAxMjM1LCAKKyAgICAwLCAxMTA3LCAwLCAwLCAxMTA0LCAwLCAwLCAwLCAwLCAxMjM5LCAwLCAxMTA1LCAwLCAxMjE4LCAwLCAxMjQ1LCAwLCAwLCAKKyAgICAwLCAxMjQ3LCAxMTE3LCAwLCAwLCAwLCAxMjUxLCAxMDgxLCAwLCAxMjUzLCAwLCAxMTE2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjU1LCAxMjYzLCAxMTE4LCAwLCAxMjY1LCAwLCAwLCAxMjY3LCAwLCAwLCAwLCAwLCAxMjY5LCAwLCAwLCAwLCAxMjczLCAKKyAgICAwLCAwLCAwLCAxMjYxLCAwLCAwLCAwLCAxMTExLCAxMTQyLCAwLCAwLCAwLCAxMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjQyLCAwLCAwLCAwLCAxMjQzLCAwLCAwLCAwLCAxMjU4LCAwLCAwLCAwLCAxMjU5LCAwLCAwLCAxNTcwLCAxNTcxLCAKKyAgICAxNTczLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTcyLCAwLCAwLCAwLCAxNTc0LCAwLCAwLCAwLCAxNzMwLCAwLCAwLCAwLCAKKyAgICAxNzQ3LCAwLCAwLCAwLCAxNzI4LCAwLCAyMzQ1LCAwLCAwLCAwLCAyMzUzLCAwLCAwLCAwLCAyMzU2LCAwLCAwLCAwLCAwLCAKKyAgICAyNTA3LCAyNTA4LCAyODkxLCAyODg4LCAyODkyLCAwLCAyOTY0LCAwLCAwLCAwLCAwLCAwLCAwLCAzMDE4LCAzMDIwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMDE5LCAwLCAzMTQ0LCAwLCAwLCAwLCAwLCAwLCAzMjY0LCAwLCAwLCAzMjc0LCAzMjcxLCAKKyAgICAzMjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjc1LCAwLCAzNDAyLCAzNDA0LCAwLCAwLCAzNDAzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNTQ2LCAzNTQ4LCAzNTUwLCAwLCAwLCAwLCAwLCAwLCAzNTQ5LCAwLCAwLCA0MTM0LCAwLCAwLCAwLCAwLCA2OTE4LCAwLCAKKyAgICAwLCAwLCA2OTIwLCAwLCAwLCAwLCA2OTIyLCAwLCAwLCAwLCA2OTI0LCAwLCAwLCAwLCA2OTI2LCAwLCAwLCAwLCA2OTMwLCAKKyAgICAwLCAwLCAwLCA2OTcxLCAwLCAwLCAwLCA2OTczLCAwLCAwLCAwLCA2OTc2LCAwLCAwLCAwLCA2OTc3LCAwLCAwLCAwLCAKKyAgICA2OTc5LCA3NzM2LCAwLCAwLCAwLCA3NzM3LCAwLCAwLCAwLCA3NzcyLCAwLCAwLCAwLCA3NzczLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3Nzg0LCAwLCAwLCAwLCA3Nzg1LCAwLCAwLCAwLCA3ODUyLCAwLCAwLCA3ODYyLCAwLCAwLCAwLCAwLCA3ODUzLCAwLCAwLCAKKyAgICA3ODYzLCAwLCAwLCAwLCAwLCA3ODc4LCAwLCAwLCAwLCA3ODc5LCAwLCAwLCAwLCA3ODk2LCAwLCAwLCAwLCA3ODk3LCAwLCAKKyAgICA3OTM4LCA3OTQwLCAwLCAwLCA3OTQyLCA4MDY0LCAwLCAwLCA3OTM5LCA3OTQxLCAwLCAwLCA3OTQzLCA4MDY1LCAwLCAwLCAKKyAgICAwLCA4MDY2LCAwLCAwLCAwLCA4MDY3LCAwLCAwLCAwLCA4MDY4LCAwLCAwLCAwLCA4MDY5LCAwLCAwLCAwLCA4MDcwLCAwLCAKKyAgICAwLCAwLCA4MDcxLCAwLCAwLCA3OTQ2LCA3OTQ4LCAwLCAwLCA3OTUwLCA4MDcyLCAwLCAwLCA3OTQ3LCA3OTQ5LCAwLCAwLCAKKyAgICA3OTUxLCA4MDczLCAwLCAwLCAwLCA4MDc0LCAwLCAwLCAwLCA4MDc1LCAwLCAwLCAwLCA4MDc2LCAwLCAwLCAwLCA4MDc3LCAKKyAgICAwLCAwLCAwLCA4MDc4LCAwLCAwLCAwLCA4MDc5LCAwLCAwLCA3OTU0LCA3OTU2LCAwLCAwLCA3OTU1LCA3OTU3LCAwLCAwLCAKKyAgICA3OTYyLCA3OTY0LCAwLCAwLCA3OTYzLCA3OTY1LCAwLCAwLCA3OTcwLCA3OTcyLCAwLCAwLCA3OTc0LCA4MDgwLCAwLCAwLCAKKyAgICA3OTcxLCA3OTczLCAwLCAwLCA3OTc1LCA4MDgxLCAwLCAwLCAwLCA4MDgyLCAwLCAwLCAwLCA4MDgzLCAwLCAwLCAwLCAKKyAgICA4MDg0LCAwLCAwLCAwLCA4MDg1LCAwLCAwLCAwLCA4MDg2LCAwLCAwLCAwLCA4MDg3LCAwLCAwLCA3OTc4LCA3OTgwLCAwLCAKKyAgICAwLCA3OTgyLCA4MDg4LCAwLCAwLCA3OTc5LCA3OTgxLCAwLCAwLCA3OTgzLCA4MDg5LCAwLCAwLCAwLCA4MDkwLCAwLCAwLCAKKyAgICAwLCA4MDkxLCAwLCAwLCAwLCA4MDkyLCAwLCAwLCAwLCA4MDkzLCAwLCAwLCAwLCA4MDk0LCAwLCAwLCAwLCA4MDk1LCAwLCAKKyAgICAwLCA3OTg2LCA3OTg4LCAwLCAwLCA3OTkwLCAwLCAwLCAwLCA3OTg3LCA3OTg5LCAwLCAwLCA3OTkxLCAwLCAwLCAwLCAKKyAgICA3OTk0LCA3OTk2LCAwLCAwLCA3OTk4LCAwLCAwLCAwLCA3OTk1LCA3OTk3LCAwLCAwLCA3OTk5LCAwLCAwLCAwLCA4MDAyLCAKKyAgICA4MDA0LCAwLCAwLCA4MDAzLCA4MDA1LCAwLCAwLCA4MDEwLCA4MDEyLCAwLCAwLCA4MDExLCA4MDEzLCAwLCAwLCA4MDE4LCAKKyAgICA4MDIwLCAwLCAwLCA4MDIyLCAwLCAwLCAwLCA4MDE5LCA4MDIxLCAwLCAwLCA4MDIzLCAwLCAwLCAwLCA4MDI3LCA4MDI5LCAKKyAgICAwLCAwLCA4MDMxLCAwLCAwLCAwLCA4MDM0LCA4MDM2LCAwLCAwLCA4MDM4LCA4MDk2LCAwLCAwLCA4MDM1LCA4MDM3LCAwLCAKKyAgICAwLCA4MDM5LCA4MDk3LCAwLCAwLCAwLCA4MDk4LCAwLCAwLCAwLCA4MDk5LCAwLCAwLCAwLCA4MTAwLCAwLCAwLCAwLCAKKyAgICA4MTAxLCAwLCAwLCAwLCA4MTAyLCAwLCAwLCAwLCA4MTAzLCAwLCAwLCA4MDQyLCA4MDQ0LCAwLCAwLCA4MDQ2LCA4MTA0LCAKKyAgICAwLCAwLCA4MDQzLCA4MDQ1LCAwLCAwLCA4MDQ3LCA4MTA1LCAwLCAwLCAwLCA4MTA2LCAwLCAwLCAwLCA4MTA3LCAwLCAwLCAKKyAgICAwLCA4MTA4LCAwLCAwLCAwLCA4MTA5LCAwLCAwLCAwLCA4MTEwLCAwLCAwLCAwLCA4MTExLCAwLCAwLCAwLCA4MTE0LCAwLCAKKyAgICAwLCAwLCA4MTMwLCAwLCAwLCAwLCA4MTc4LCAwLCAwLCAwLCA4MTE5LCAwLCAwLCA4MTQxLCA4MTQyLCAwLCAwLCA4MTQzLCAKKyAgICAwLCAwLCAwLCAwLCA4MTM1LCAwLCAwLCAwLCA4MTgzLCAwLCAwLCA4MTU3LCA4MTU4LCAwLCAwLCA4MTU5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4NjAyLCAwLCAwLCAwLCA4NjAzLCAwLCAwLCAwLCA4NjIyLCAwLCAwLCAwLCA4NjUzLCAwLCAwLCAwLCAKKyAgICA4NjU1LCAwLCAwLCAwLCA4NjU0LCAwLCAwLCAwLCA4NzA4LCAwLCAwLCAwLCA4NzEzLCAwLCAwLCAwLCA4NzE2LCAwLCAwLCAKKyAgICAwLCA4NzQwLCAwLCAwLCAwLCA4NzQyLCAwLCAwLCAwLCA4NzY5LCAwLCAwLCAwLCA4NzcyLCAwLCAwLCAwLCA4Nzc1LCAwLCAKKyAgICAwLCAwLCA4Nzc3LCAwLCAwLCAwLCA4ODEzLCAwLCAwLCAwLCA4ODAyLCAwLCAwLCAwLCA4ODE2LCAwLCAwLCAwLCA4ODE3LCAKKyAgICAwLCAwLCAwLCA4ODIwLCAwLCAwLCAwLCA4ODIxLCAwLCAwLCAwLCA4ODI0LCAwLCAwLCAwLCA4ODI1LCAwLCAwLCAwLCAKKyAgICA4ODMyLCAwLCAwLCAwLCA4ODMzLCAwLCAwLCAwLCA4OTI4LCAwLCAwLCAwLCA4OTI5LCAwLCAwLCAwLCA4ODM2LCAwLCAwLCAKKyAgICAwLCA4ODM3LCAwLCAwLCAwLCA4ODQwLCAwLCAwLCAwLCA4ODQxLCAwLCAwLCAwLCA4OTMwLCAwLCAwLCAwLCA4OTMxLCAwLCAKKyAgICAwLCAwLCA4ODc2LCAwLCAwLCAwLCA4ODc3LCAwLCAwLCAwLCA4ODc4LCAwLCAwLCAwLCA4ODc5LCAwLCAwLCAwLCA4OTM4LCAKKyAgICAwLCAwLCAwLCA4OTM5LCAwLCAwLCAwLCA4OTQwLCAwLCAwLCAwLCA4OTQxLCAxMjQzNiwgMCwgMCwgMCwgMTIzNjQsIDAsIDAsIAorICAgIDAsIDEyMzY2LCAwLCAwLCAwLCAxMjM2OCwgMCwgMCwgMCwgMTIzNzAsIDAsIDAsIDAsIDEyMzcyLCAwLCAwLCAwLCAxMjM3NCwgCisgICAgMCwgMCwgMCwgMTIzNzYsIDAsIDAsIDAsIDEyMzc4LCAwLCAwLCAwLCAxMjM4MCwgMCwgMCwgMCwgMTIzODIsIDAsIDAsIDAsIAorICAgIDEyMzg0LCAwLCAwLCAwLCAxMjM4NiwgMCwgMCwgMCwgMTIzODksIDAsIDAsIDAsIDEyMzkxLCAwLCAwLCAwLCAxMjM5MywgMCwgCisgICAgMCwgMCwgMTI0MDAsIDEyNDAxLCAwLCAwLCAxMjQwMywgMTI0MDQsIDAsIDAsIDEyNDA2LCAxMjQwNywgMCwgMCwgMTI0MDksIAorICAgIDEyNDEwLCAwLCAwLCAxMjQxMiwgMTI0MTMsIDAsIDAsIDEyNDQ2LCAwLCAwLCAwLCAxMjUzMiwgMCwgMCwgMCwgMTI0NjAsIAorICAgIDAsIDAsIDAsIDEyNDYyLCAwLCAwLCAwLCAxMjQ2NCwgMCwgMCwgMCwgMTI0NjYsIDAsIDAsIDAsIDEyNDY4LCAwLCAwLCAwLCAKKyAgICAxMjQ3MCwgMCwgMCwgMCwgMTI0NzIsIDAsIDAsIDAsIDEyNDc0LCAwLCAwLCAwLCAxMjQ3NiwgMCwgMCwgMCwgMTI0NzgsIDAsIAorICAgIDAsIDAsIDEyNDgwLCAwLCAwLCAwLCAxMjQ4MiwgMCwgMCwgMCwgMTI0ODUsIDAsIDAsIDAsIDEyNDg3LCAwLCAwLCAwLCAKKyAgICAxMjQ4OSwgMCwgMCwgMCwgMTI0OTYsIDEyNDk3LCAwLCAwLCAxMjQ5OSwgMTI1MDAsIDAsIDAsIDEyNTAyLCAxMjUwMywgMCwgCisgICAgMCwgMTI1MDUsIDEyNTA2LCAwLCAwLCAxMjUwOCwgMTI1MDksIDAsIDAsIDEyNTM1LCAwLCAwLCAwLCAxMjUzNiwgMCwgMCwgCisgICAgMCwgMTI1MzcsIDAsIDAsIDAsIDEyNTM4LCAwLCAwLCAwLCAxMjU0MiwgMCwgMCwgMCwgMCwgMCwgNjk3ODYsIDAsIDAsIDAsIAorICAgIDY5Nzg4LCAwLCAwLCAwLCA2OTgwMywgMCwgMCwgMCwgMCwgNjk5MzQsIDAsIDAsIDAsIDY5OTM1LCAKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFuZ2VfcmVjb3JkIGNoYW5nZV9yZWNvcmRzXzNfMl8wW10gPSB7CiAJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKIAl7IDExLCAyNTUsIDI1NSwgMjU1LCAwIH0sCiAJeyAxMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAzMCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMiwgMjU1LCAyNTUsIDAgfSwKIAl7IDE5LCAyMSwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjU1LCAyLCAyNTUsIDAgfSwKIAl7IDI1NSwgMjU1LCAzLCAyNTUsIDAgfSwKIAl7IDI1NSwgMjU1LCAxLCAyNTUsIDAgfSwKIAl7IDI1NSwgMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMiwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjksIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDI2LCAyNTUsIDI1NSwgMCB9LAogCXsgNSwgMjU1LCAyNTUsIDI1NSwgMCB9LApAQCAtNTA1OCw3ICs1MTc3LDcgQEAKIAl7IDI1NSwgNywgNywgMjU1LCAwIH0sCiAJeyAyNTUsIDcsIDgsIDI1NSwgMCB9LAogCXsgMjU1LCA3LCA5LCAyNTUsIDAgfSwKLQl7IDI1NSwgNSwgMjU1LCAyNTUsIDAgfSwKKwl7IDEsIDUsIDI1NSwgMjU1LCAwIH0sCiAJeyAxNSwgMTQsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDEwLCAyNTUsIDI1NSwgMCB9LAogCXsgMTgsIDI1NSwgMjU1LCAyNTUsIDAgfSwKQEAgLTUwNzAsMTIgKzUxODksMTIgQEAKIAl7IDI1NSwgMjU1LCA3LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjU1LCA4LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjU1LCA5LCAyNTUsIDAgfSwKLQl7IDI1NSwgMzAsIDI1NSwgMjU1LCAwIH0sCiAJeyAxOSwgMzAsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDgsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDIyLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyMywgMjU1LCAyNTUsIDAgfSwKIAl7IDksIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE0LCA0LCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyMCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMWUrMTYgfSwKIAl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMWUrMjAgfSwKQEAgLTUwODQsNzQgKzUyMDMsNzQgQEAKIAl7IDEsIDI1NSwgMjU1LCAwLCAwIH0sCiB9Owogc3RhdGljIHVuc2lnbmVkIGNoYXIgY2hhbmdlc18zXzJfMF9pbmRleFtdID0gewotICAgIDAsIDEsIDIsIDIsIDMsIDQsIDUsIDYsIDIsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMiwgMTUsIDE2LCAxNywgCi0gICAgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMiwgMiwgMiwgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIAotICAgIDM0LCAyLCAyLCAyLCAzNSwgMzYsIDIsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIAotICAgIDQ5LCAyLCA1MCwgMiwgMiwgNTEsIDUyLCA1MywgNTQsIDU1LCAyLCAyLCA1NiwgNTcsIDU4LCAyLCAyLCA1OSwgNjAsIDYxLCAKLSAgICA2MiwgNjMsIDYzLCAyLCAyLCAyLCAyLCA2NCwgMiwgNjUsIDY2LCA2NywgNjgsIDY5LCAyLCAyLCAyLCAyLCA3MCwgNzEsIAotICAgIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCAyLCAyLCAyLCAyLCAyLCAyLCA3OSwgMiwgMiwgMiwgMiwgMiwgODAsIDIsIAorICAgIDAsIDEsIDIsIDIsIDMsIDQsIDUsIDYsIDIsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIAorICAgIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDIsIDIsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgCisgICAgMzYsIDIsIDIsIDIsIDM3LCAzOCwgMiwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgCisgICAgNTEsIDIsIDUyLCAyLCAyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDIsIDIsIDU4LCA1OSwgNjAsIDIsIDIsIDYxLCA2MiwgNjMsIAorICAgIDY0LCA2NSwgNjUsIDIsIDIsIDIsIDIsIDY2LCAyLCA2NywgNjgsIDY5LCA3MCwgNzEsIDIsIDIsIDIsIDcyLCA3MywgNzQsIAorICAgIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCAyLCAyLCAyLCAyLCAyLCAyLCA4MiwgMiwgMiwgMiwgMiwgMiwgODMsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDgxLCAyLCA4MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODMsIAotICAgIDg0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODYsIDg3LCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMiwgODUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg2LCAKKyAgICA4NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg5LCA5MCwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4OSwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkxLCA5MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTMsIDQ4LCA0OCwgCi0gICAgOTQsIDk1LCA0OCwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMDUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTQsIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NiwgNTAsIDUwLCAKKyAgICA5NywgOTgsIDUwLCA5OSwgMTAwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDcsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDEwNiwgMTA3LCAxMDgsIDEwOSwgMTEwLCAxMTEsIDIsIDIsIDIsIDExMiwgMTEzLCAyLCAxMTQsIDExNSwgCi0gICAgMTE2LCAxMTcsIDExOCwgMTE5LCAyLCAxMjAsIDEyMSwgMTIyLCAxMjMsIDEyNCwgMiwgMiwgMiwgMiwgMiwgMiwgMTI1LCAyLCAKLSAgICAxMjYsIDIsIDEyNywgMiwgMTI4LCAyLCAxMjksIDIsIDIsIDIsIDEzMCwgMiwgMiwgMiwgMTMxLCAxMzIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzMywgMiwgMTM0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDEzNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTA4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAyLCAyLCAyLCAxMTUsIDExNiwgMiwgMTE3LCAxMTgsIAorICAgIDExOSwgMTIwLCAxMjEsIDEyMiwgMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDIsIDIsIDIsIDIsIDIsIDIsIDEyOCwgMiwgCisgICAgMTI5LCAxMzAsIDEzMSwgMiwgMTMyLCAyLCAxMzMsIDIsIDIsIDIsIDEzNCwgMiwgMiwgMiwgMTM1LCAxMzYsIDEzNywgMTM4LCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMzksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE0MCwgMiwgMTQxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDE0MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDgsIDQ4LCA0OCwgNDgsIDEzNiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDE0MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMTQ0LCAxNDUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEzNywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTQ2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAxMzgsIDIsIDEzOSwgMiwgMTQwLCAyLCAyLCAxNDEsIDIsIDIsIDIsIDE0MiwgMTQzLCAxNDQsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE0NSwgCi0gICAgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAyLCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDEzOSwgMTU3LCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNTgsIDE1OSwgOTAsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDc5LCAxNjAsIDIsIDE2MSwgMTYyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNDcsIDIsIDE0OCwgMiwgMTQ5LCAyLCAyLCAxNTAsIDIsIDIsIDIsIDE1MSwgMTUyLCAKKyAgICAxNTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE1NCwgMTU1LCAKKyAgICAyLCAyLCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMiwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNDgsIAorICAgIDE2OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY5LCAxNzAsIDkzLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4MiwgMTcxLCAyLCAxNzIsIDE3MywgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTYzLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAxNjQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc0LCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3NiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY2LCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAxNzcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTY3LCA0OCwgMTY4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OCwgNTAsIDE3OSwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTYzLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAxNzQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIApAQCAtNTM4Niw3ICs1NTA1LDcgQEAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA0OCwgMTY5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgMTgwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTU0NTAsNyArNTU2OSw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2RhdGFbXSA9IHsKQEAgLTU0NjAsOCArNTU3OSw5IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgCisgICAgMCwgMCwgNCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgNiwgNywgMCwgMCwgMywgMCwgMCwgOCwgNCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgNCwgNSwgMCwgMCwgMCwgMCwgMCwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC01NDcwLDg0OCArNTU5MCw5MDYgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMCwgMTAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMTAsIDAsIDksIDksIDAsIDAsIDAsIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDksIDAsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAxMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIsIDEzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEsIDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgCi0gICAgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQsIDE1LCAxNiwgMTcsIDE4LCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCA3LCAwLCA3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNSwgMTYsIDE3LCAxOCwgMTksIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIAotICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyLCAyMywgCisgICAgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMzAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgOCwgMCwgCi0gICAgMCwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgMSwgMSwgMCwgMCwgMCwgOCwgMzUsIDYsIDQsIDUsIDM2LCAzNywgMzgsIDM5LCAKLSAgICA0MCwgNDEsIDEsIDEsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYsIDQsIDAsIDAsIDM3LCAzOCwgMzksIDQwLCAKKyAgICA0MSwgNDIsIDEsIDEsIDAsIDAsIDAsIDQsIDM2LCA4LCA2LCA3LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCAxLCAxLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0NSwgNDYsIDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NSwgCisgICAgNDYsIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgNywgMCwgMCwgMCwgMCwgNywgNywgNywgMCwgNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgNywgMCwgNywgNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIAotICAgIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDE4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgMCwgMCwgMSwgMSwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxLCAwLCAxLCAwLCAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTMsIDEzLCAxMywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgNywgCi0gICAgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIAorICAgIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCAwLCAwLCAwLCA3LCAKLSAgICAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDE5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMSwgMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAxLCAwLCAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTQsIDE0LCAxNCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgMCwgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgMCwgNywgMCwgNywgMCwgNywgMCwgNywgCi0gICAgNywgNywgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgMCwgNywgMCwgMCwgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCAwLCAKKyAgICA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTYzMTksMjUgKzY0OTcsMjUgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTYzNDYsMjQgKzY1MjQsMjQgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQqIGdldF9jaGFuZ2VfM18yXzAoUHlfVUNTNCBuKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oIGIvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCmluZGV4IDg4MzA1NjAuLjM4Mzg4ODIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaAorKysgYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKQEAgLTQsMzM3ICs0LDQyOCBAQAogCiAvKiBsZXhpY29uICovCiBzdGF0aWMgdW5zaWduZWQgY2hhciBsZXhpY29uW10gPSB7Ci0gICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDg3LCA3MywgODQsIDIwMCwgODMsIDc3LCA2NSwgNzYsIDIwNCwgODMsIDg5LCAKLSAgICA3NiwgNzYsIDY1LCA2NiwgNzYsIDE5NywgODMsIDczLCA3MSwgMjA2LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAotICAgIDc2LCA2NSwgODQsIDczLCAyMDYsIDg5LCAyMDEsIDY3LCA3NCwgMjAzLCA2OSwgNzEsIDg5LCA4MCwgODQsIDczLCA2NSwgCi0gICAgMjA2LCA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCAyMDAsIDY1LCA4MiwgNjUsIDY2LCA3MywgMTk1LCAKLSAgICA2NywgNzksIDc3LCA4MCwgNjUsIDg0LCA3MywgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDc3LCA2NSwgODQsIDcyLCA2OSwgCi0gICAgNzcsIDY1LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgODUsIDc4LCA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgODMsIDg5LCAKLSAgICA3NywgNjYsIDc5LCAyMDQsIDcwLCA3OSwgODIsIDc3LCAxMjgsIDY3LCA2NSwgNzgsIDY1LCA2OCwgNzMsIDY1LCAyMDYsIAotICAgIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCA2NywgMjExLCA2NiwgNjUsIDc3LCA4NSwgMjA1LCA2OCwgNzMsIDcxLCA3MywgCi0gICAgMjEyLCA2NiwgNzksIDc2LCAxOTYsIDcyLCA2NSwgNzgsIDcxLCA4NSwgMjA0LCA2NSwgNzgsIDE5NiwgNzEsIDgyLCA2OSwgCi0gICAgNjksIDIwMywgNzYsIDczLCA3MSwgNjUsIDg0LCA4NSwgODIsIDE5NywgNzcsIDg1LCA4MywgNzMsIDY3LCA2NSwgMjA0LCAKLSAgICA2OSwgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCA4NCwgNzMsIDc3LCA2OSwgMjExLCA4NiwgNzksIDg3LCA2OSwgCi0gICAgMjA0LCA3MCwgNzksIDIxMCwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDY3LCA4OSwgODIsIDczLCA3NiwgNzYsIDczLCAKKyAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODcsIDczLCA4NCwgMjAwLCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3NiwgCisgICAgMTk3LCA4MywgNzcsIDY1LCA3NiwgMjA0LCA4MywgNzMsIDcxLCAyMDYsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCisgICAgNzYsIDY1LCA4NCwgNzMsIDIwNiwgODksIDIwMSwgNjcsIDc0LCAyMDMsIDY1LCA4MiwgNjUsIDY2LCA3MywgMTk1LCA3NywgCisgICAgNjUsIDg0LCA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA4OSwgODAsIDg0LCA3MywgNjUsIAorICAgIDIwNiwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA2NywgNzksIDc3LCA4MCwgNjUsIDg0LCA3MywgCisgICAgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDY3LCA4NSwgNzgsIDY5LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDIwNCwgNzAsIDc5LCA4MiwgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIDY4LCA3MywgNjUsIDIwNiwgODMsIAorICAgIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAyMTEsIDY2LCA2NSwgNzcsIDg1LCAyMDUsIDY4LCA3MywgNzEsIDczLCAKKyAgICAyMTIsIDY1LCA3OCwgMTk2LCA2NiwgNzksIDc2LCAxOTYsIDcyLCA2NSwgNzgsIDcxLCA4NSwgMjA0LCA4NiwgNzksIDg3LCAKKyAgICA2OSwgMjA0LCA3MSwgODIsIDY5LCA2OSwgMjAzLCA3NiwgNzMsIDcxLCA2NSwgODQsIDg1LCA4MiwgMTk3LCA3NywgODUsIAorICAgIDgzLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA4NCwgNzIsIDczLCA3OSwgODAsIDczLCAxOTUsIDg0LCA3MywgNzcsIDY5LCAKKyAgICAyMTEsIDcwLCA3OSwgMjEwLCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgNzMsIDc2LCA3NiwgNzMsIAogICAgIDE5NSwgODIsIDY1LCA2OCwgNzMsIDY3LCA2NSwgMjA0LCA4MywgNjUsIDc4LCA4MywgNDUsIDgzLCA2OSwgODIsIDczLCAKLSAgICAxOTgsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDE5NiwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDg0LCA2NSwgMjAxLCA4NiwgNjUsIDIwMSwgNzAsIDczLCA3OCwgNjUsIDIwNCwgODMsIDgxLCA4NSwgNjUsIDgyLCAxOTcsIAotICAgIDc2LCA2OSwgNzAsIDIxMiwgODYsIDY1LCA4MiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY2LCA4MiwgNjUsIDczLCA3NiwgCi0gICAgNzYsIDE5NywgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgMjA2LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NiwgODksIDkwLCAKLSAgICA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDY2LCA3OSwgODYsIAotICAgIDY5LCAxMjgsIDc4LCA4NSwgNzcsIDY2LCA2OSwgMjEwLCA2OCwgNzksIDg1LCA2NiwgNzYsIDE5NywgODMsIDczLCA3MSwgCi0gICAgNzgsIDEyOCwgMTk0LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDE5MywgCi0gICAgNzUsIDY1LCA3OCwgNzEsIDg4LCAyMDEsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKLSAgICA2OSwgMjEwLCA4NCwgNzMsIDY2LCA2OSwgODQsIDY1LCAyMDYsIDY1LCAxMjgsIDY4LCA3OSwgMjEyLCA3NywgNjksIDY5LCAKLSAgICAyMDUsIDc3LCA4OSwgNjUsIDc4LCA3NywgNjUsIDIxMCwgNzksIDE5OCwgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCAKLSAgICA4NywgNzIsIDczLCA4NCwgMTk3LCA2NSwgODIsIDgyLCA3OSwgODcsIDEyOCwgODUsIDEyOCwgNzMsIDc4LCA3MywgODQsIAotICAgIDczLCA2NSwgMjA0LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgMTI4LCA4OSwgNjksIDIwMCwgNzksIAotICAgIDEyOCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNjUsIDY2LCA3OSwgODYsIDE5NywgNjcsIAotICAgIDc5LCA4MCwgODQsIDczLCAxOTUsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NywgNzcsIDc5LCA3OCwgNzEsIDc5LCA3NiwgCi0gICAgNzMsIDY1LCAyMDYsIDY4LCA2OSwgODYsIDY1LCA3OCwgNjUsIDcxLCA2NSwgODIsIDIwMSwgNjYsIDc2LCA2NSwgNjcsIAotICAgIDIwMywgNzUsIDcyLCA3NywgNjksIDIxMCwgODQsIDczLCA3NiwgMTk3LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgCi0gICAgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA1LCAKLSAgICA3NCwgNzksIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA4MywgODEsIAotICAgIDg1LCA2NSwgODIsIDY5LCAxOTYsIDY2LCA3OSwgMjE2LCA3MiwgNjksIDY2LCA4MiwgNjksIDIxNSwgODAsIDc2LCA4NSwgCi0gICAgMjExLCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIDcxLCAKKyAgICAxOTgsIDg0LCA2NSwgNzcsIDczLCAyMDQsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDE5NiwgNjcsIDc5LCA3NywgNjYsIAorICAgIDczLCA3OCwgNzMsIDc4LCAxOTksIDg0LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCA2NSwgMjA0LCA4NiwgNjUsIDIwMSwgODMsIAorICAgIDgxLCA4NSwgNjUsIDgyLCAxOTcsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgNzIsIDIxMiwgODYsIDY1LCA4MiwgCisgICAgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY2LCA4MiwgNjUsIDczLCA3NiwgNzYsIDE5NywgODAsIDY1LCA4NCwgODQsIDY5LCAKKyAgICA4MiwgMjA2LCA2NSwgNjYsIDc5LCA4NiwgNjksIDEyOCwgNjYsIDg5LCA5MCwgNjUsIDc4LCA4NCwgNzMsIDc4LCAxOTcsIAorICAgIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY2LCA2OSwgNzYsIDc5LCA4NywgMTI4LCA2OCwgNzksIDg1LCA2NiwgNzYsIDE5NywgCisgICAgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDc1LCA2NSwgODQsIDY1LCAKKyAgICA3NSwgNjUsIDc4LCAxOTMsIDE5NCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDIxMCwgNjgsIDc5LCAyMTIsIDc1LCAKKyAgICA2NSwgNzgsIDcxLCA4OCwgMjAxLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODQsIDczLCA2NiwgNjksIAorICAgIDg0LCA2NSwgMjA2LCA3OSwgMTk4LCA3MywgNzgsIDczLCA4NCwgNzMsIDY1LCAyMDQsIDc3LCA2OSwgNjksIDIwNSwgODYsIAorICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDIwNCwgNzcsIDg5LCA2NSwgNzgsIDc3LCA2NSwgMjEwLCA3NSwgNzIsIDc3LCA2OSwgCisgICAgMjEwLCA4NSwgMTI4LCA4NywgNzIsIDczLCA4NCwgMTk3LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDczLCAxMjgsIAorICAgIDY1LCA4MiwgODIsIDc5LCA4NywgMTI4LCA3OSwgMTI4LCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA3NywgNjUsIDgyLCA3NSwgCisgICAgMTI4LCA4OSwgNjksIDIwMCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNjcsIDc5LCA4MCwgODQsIDczLCAxOTUsIDgwLCA3MiwgCisgICAgNjUsIDgzLCA2OSwgNDUsIDE5NywgNzcsIDc5LCA3OCwgNzEsIDc5LCA3NiwgNzMsIDY1LCAyMDYsIDY4LCA2OSwgODYsIDY1LCAKKyAgICA3OCwgNjUsIDcxLCA2NSwgODIsIDIwMSwgNjYsIDc2LCA2NSwgNjcsIDIwMywgODQsIDczLCA3NiwgMTk3LCA4MywgODksIAorICAgIDc3LCA2NiwgNzksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgCisgICAgODQsIDcyLCA2NSwgMjA1LCA3NCwgNzksIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzksIDc1LCAKKyAgICA2OSwgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxOTYsIDY2LCA3OSwgMjE2LCA3MiwgNjksIDY2LCA4MiwgNjksIAorICAgIDIxNSwgNzcsIDczLCA2NSwgMjA3LCA4MCwgNzYsIDg1LCAyMTEsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgCisgICAgNjgsIDIxMSwgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIDIwNiwgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgNzEsIAogICAgIDIxMSwgNjcsIDcyLCA3OSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzIsIDY1LCA3NiwgNzAsIDg3LCA3MywgNjgsIDg0LCAKLSAgICAyMDAsIDY2LCA2NSwgNzYsIDczLCA3OCwgNjksIDgzLCAxOTcsIDcxLCA2OSwgNzksIDgyLCA3MSwgNzMsIDY1LCAyMDYsIAotICAgIDcyLCA3OSwgNzksIDc1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA3MiwgNjUsIDgzLCA2OSwgCi0gICAgNDUsIDE5NiwgNjUsIDc2LCA2NywgNzIsIDY5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA3MywgMTk1LCA2NSwgNzYsIDY5LCAxOTgsIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDg0LCA3OSwgMTI4LCAKLSAgICA4NCwgODcsIDc5LCAxMjgsIDc5LCA4NiwgNjksIDIxMCwgMjEzLCA2NiwgODIsIDY1LCA3MiwgNzcsIDIwMSwgODMsIDY3LCAKLSAgICA4MiwgNzMsIDgwLCAyMTIsIDg1LCAyMDgsIDc2LCA3OSwgMjE1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgMjA3LCA2OCwgCi0gICAgNzksIDg3LCAyMDYsIDcwLCA4NSwgNzYsIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA3MiwgNjUsIDIwMCwgNzksIDc4LCAKLSAgICAxOTcsIDY5LCA4MSwgODUsIDY1LCAyMDQsIDcyLCA3MywgNzEsIDIwMCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIAotICAgIDEyOCwgODQsIDY1LCAxOTksIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCA3OCwgODUsIDc3LCA2OSwgODIsIDczLCAxOTUsIAotICAgIDcwLCA4MiwgNjUsIDc1LCA4NCwgODUsIDIxMCwgNzcsIDY1LCA3NiwgNjUsIDg5LCA2NSwgNzYsIDY1LCAyMDUsIDgwLCA3MiwgCi0gICAgNjUsIDgzLCA2OSwgNDUsIDE5NSwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDg0LCA3MiwgODIsIDY5LCAKLSAgICAxOTcsIDY2LCA2NSwgODIsIDEyOCwgNzQsIDg1LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDcxLCA3NiwgNjUsIAotICAgIDcxLCA3OSwgNzYsIDczLCA4NCwgNzMsIDE5NSwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCAyMTAsIDc3LCA2OSwgCi0gICAgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgNzEsIDIxMywgNjYsIDY5LCA3OCwgNzEsIDY1LCA3NiwgMjAxLCAKLSAgICA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA3MiwgNzMsIDgyLCA2NSwgNzEsIDY1LCA3OCwgMTkzLCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzQsIDY1LCA4NiwgNjUsIDc4LCA2OSwgODMsIDE5NywgNzQsIDY5LCA2OSwgCi0gICAgMjA1LCA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA4NiwgMTk3LCA3OSwgODIsIDczLCA4OSwgMTkzLCA4NywgNjksIDgzLCAKLSAgICA4NCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzIsIDY1LCA3NiwgMTk4LCA3NywgNjUsIDgyLCAyMDMsIDgwLCA3MiwgNjUsIAotICAgIDgzLCA2OSwgNDUsIDE5MywgODQsIDcyLCA2NSwgMjAxLCA3NSwgNjUsIDc4LCA3OCwgNjUsIDY4LCAxOTMsIDc4LCA2OSwgCi0gICAgMjE1LCA2NywgNzIsIDY5LCA4MiwgNzksIDc1LCA2OSwgMTk3LCA3MiwgNjUsIDEyOCwgODQsIDc5LCA3OCwgMTk3LCA4NiwgCi0gICAgNzksIDY3LCA2NSwgNzYsIDczLCAxOTUsIDY3LCA3MiwgNjUsIDIwNSwgNzAsIDc5LCA4NSwgODIsIDEyOCwgNzEsIDg1LCAKLSAgICA3NCwgNjUsIDgyLCA2NSwgODQsIDIwMSwgNzYsIDg1LCAxOTcsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODUsIAotICAgIDc4LCA3MywgMTk1LCA4MywgNjUsIDg1LCA4MiwgNjUsIDgzLCA3MiwgODQsIDgyLCAxOTMsIDg0LCA2OSwgODQsIDgyLCA2NSwgCi0gICAgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNjksIDgzLCA2OSwgODIsIDY5LCAyMTIsIDgzLCA3MywgNzgsIDcyLCA2NSwgNzYsIAotICAgIDE5MywgNzEsIDg1LCA4MiwgNzcsIDg1LCA3NSwgNzIsIDIwMSwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgODMsIDg5LCA4MiwgNzMsIDY1LCAxOTUsIDY4LCA3OSwgODQsIDIxMSwgNzYsIDczLCA3MSwgNzIsIDIxMiwgODQsIDY1LCAKLSAgICA3NywgNzMsIDIwNCwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA3MywgODYsIDY5LCAxMjgsIDc1LCA2NSwgMTI4LCAKLSAgICA3NiwgNjksIDgwLCA2NywgNzIsIDE5MywgNzYsIDc5LCA3OCwgMTk5LCA4NCwgODUsIDgyLCA3NSwgNzMsIDE5NSwgODksIAotICAgIDY1LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA4MywgODQsIDgyLCA4NSwgNjcsIDIwMywgNzcsIDY1LCAKLSAgICAxMjgsIDgzLCA3MywgODgsIDEyOCwgODYsIDczLCA2OSwgMjEyLCA3MiwgNjUsIDc3LCA5MCwgMTkzLCA4MCwgNjUsIDEyOCwgCi0gICAgNjUsIDgwLCAyMDQsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAKLSAgICAyMDQsIDgzLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCAyMDQsIDc4LCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2NiwgCi0gICAgNzksIDgwLCA3OSwgNzcsIDc5LCA3MCwgMjA3LCA4MiwgNjUsIDEyOCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODIsIDE5NCwgCi0gICAgNjgsIDY1LCA4MywgNzMsIDE5MywgNzUsIDY1LCA3MywgODQsIDcyLCAyMDEsIDc2LCA3MywgNzcsIDY2LCAyMTMsIDc3LCAKLSAgICA2NSwgNzUsIDgzLCA4NSwgODIsIDE5MywgODQsIDIwNywgOTAsIDkwLCA4OSwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODQsIAotICAgIDEyOCwgOTAsIDkwLCA4OSwgODIsIDg4LCAxMjgsIDkwLCA5MCwgODksIDgyLCAxMjgsIDkwLCA5MCwgODksIDgwLCAxMjgsIAotICAgIDkwLCA5MCwgODksIDEyOCwgOTAsIDkwLCA4NSwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA5MCwgCi0gICAgODUsIDgyLCAxMjgsIDkwLCA5MCwgODUsIDgwLCAxMjgsIDkwLCA5MCwgODUsIDEyOCwgOTAsIDkwLCA3OSwgODgsIDEyOCwgCi0gICAgOTAsIDkwLCA3OSwgODAsIDEyOCwgOTAsIDkwLCA3OSwgMTI4LCA5MCwgOTAsIDczLCA4OCwgMTI4LCA5MCwgOTAsIDczLCAKLSAgICA4NCwgMTI4LCA5MCwgOTAsIDczLCA4MCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA3MywgNjksIAotICAgIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4MCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgMTI4LCA5MCwgOTAsIDczLCAxMjgsIAotICAgIDkwLCA5MCwgNjksIDg4LCAxMjgsIDkwLCA5MCwgNjksIDgwLCAxMjgsIDkwLCA5MCwgNjksIDY5LCAxMjgsIDkwLCA5MCwgCi0gICAgNjksIDEyOCwgOTAsIDkwLCA2NSwgODgsIDEyOCwgOTAsIDkwLCA2NSwgODQsIDEyOCwgOTAsIDkwLCA2NSwgODAsIDEyOCwgCi0gICAgOTAsIDkwLCA2NSwgNjUsIDEyOCwgOTAsIDkwLCA2NSwgMTI4LCA5MCwgODksIDcxLCA3OSwgODMsIDEyOCwgOTAsIDg3LCAKLSAgICA2NSwgODIsIDY1LCA3NSwgNjUsIDg5LCAxMjgsIDkwLCA4NywgNjUsIDEyOCwgOTAsIDg1LCA4NCwgMTI4LCA5MCwgODUsIAotICAgIDc5LCA4OCwgMTI4LCA5MCwgODUsIDc5LCA4MCwgMTI4LCA5MCwgODUsIDc5LCAxMjgsIDkwLCA4NSwgNzcsIDEyOCwgOTAsIAotICAgIDg1LCA2NiwgODUsIDgyLCAxMjgsIDkwLCA4NSwgNTMsIDEyOCwgOTAsIDg1LCAxODEsIDkwLCA4MiwgNjUsIDEyOCwgOTAsIAotICAgIDgxLCA2NSwgODAsIDcyLCAxOTMsIDkwLCA3OSwgODQsIDEyOCwgOTAsIDc5LCA3OSwgMTI4LCA5MCwgNzksIDY1LCAxMjgsIAotICAgIDkwLCA3NiwgNjUsIDc3LCAxOTMsIDkwLCA3NiwgNjUsIDEyOCwgOTAsIDc2LCAxOTMsIDkwLCA3NCwgNjksIDEyOCwgOTAsIAotICAgIDczLCA5MCwgNTAsIDEyOCwgOTAsIDczLCA4MSwgNjUsIDY1LCAxMjgsIDkwLCA3MywgNzgsIDc5LCA4MiwgMTI4LCA5MCwgCi0gICAgNzMsIDc2LCA2OCwgNjksIDEyOCwgOTAsIDczLCA3MSwgOTAsIDY1LCAxOTksIDkwLCA3MywgNzEsIDEyOCwgOTAsIDczLCAKLSAgICA2OCwgMTkzLCA5MCwgNzMsIDY2LCAxMjgsIDkwLCA3MywgMTk0LCA5MCwgNzMsIDUxLCAxMjgsIDkwLCAyMDEsIDkwLCA3MiwgCi0gICAgODksIDg4LCAxMjgsIDkwLCA3MiwgODksIDg0LCAxMjgsIDkwLCA3MiwgODksIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg5LCAKLSAgICA4MiwgMTI4LCA5MCwgNzIsIDg5LCA4MCwgMTI4LCA5MCwgNzIsIDg5LCAxMjgsIDkwLCA3MiwgODcsIDY5LCAxMjgsIDkwLCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDkwLCA3MiwgODUsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDg0LCAxMjgsIDkwLCA3MiwgODUsIAotICAgIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgMTI4LCA5MCwgNzIsIDg1LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgCi0gICAgODgsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAxMjgsIDkwLCA3MiwgODUsIDEyOCwgCi0gICAgOTAsIDcyLCA3OSwgODgsIDEyOCwgOTAsIDcyLCA3OSwgODQsIDEyOCwgOTAsIDcyLCA3OSwgODAsIDEyOCwgOTAsIDcyLCAKLSAgICA3OSwgNzksIDEyOCwgOTAsIDcyLCA3OSwgMTI4LCA5MCwgNzIsIDczLCA4NiwgNjksIDg0LCA2OSwgMTI4LCA5MCwgNzIsIAotICAgIDczLCAxMjgsIDkwLCA3MiwgNjksIDg4LCAxMjgsIDkwLCA3MiwgNjksIDg0LCAxMjgsIDkwLCA3MiwgNjksIDgwLCAxMjgsIAotICAgIDkwLCA3MiwgNjksIDY5LCAxMjgsIDkwLCA3MiwgNjksIDEyOCwgOTAsIDcyLCAxOTcsIDkwLCA3MiwgNjUsIDg4LCAxMjgsIAotICAgIDkwLCA3MiwgNjUsIDg0LCAxMjgsIDkwLCA3MiwgNjUsIDgyLCAxMjgsIDkwLCA3MiwgNjUsIDgwLCAxMjgsIDkwLCA3MiwgCi0gICAgNjUsIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA2NSwgMTI4LCA5MCwgNzIsIDY1LCAxMjgsIDkwLCA3MiwgMTI4LCA5MCwgCi0gICAgNjksIDg0LCA2NSwgMTI4LCA5MCwgNjksIDgyLCA3OSwgMTI4LCA5MCwgNjksIDgyLCAyMDcsIDkwLCA2OSwgNzgsIDEyOCwgCi0gICAgOTAsIDY5LCA3NywgNzYsIDg5LCA2NSwgMTI4LCA5MCwgNjksIDc3LCA3NiwgNzQsIDY1LCAxMjgsIDkwLCA2OSwgNTAsIAotICAgIDEyOCwgOTAsIDE5NywgOTAsIDY1LCA4OSwgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgODksIAotICAgIDczLCAyMDYsIDkwLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA5MCwgNjUsIDg0LCA2NSwgMTI4LCA5MCwgCi0gICAgNjUsIDgyLCA4MSwgNjUsIDEyOCwgOTAsIDY1LCA4MSwgNjksIDE5OCwgOTAsIDY1LCA3NywgODgsIDEyOCwgOTAsIDY1LCAKLSAgICAyMDQsIDkwLCA2NSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgNzMsIDIwNiwgOTAsIDY1LCA3MywgMTI4LCA5MCwgNjUsIDcyLCAKLSAgICAxMjgsIDkwLCA2NSwgMjAwLCA5MCwgNjUsIDcxLCAxMjgsIDkwLCA2NSwgNjksIDcwLCAxMjgsIDkwLCA0OCwgNDksIDU0LCAKLSAgICA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcwLCAxMjgsIDkwLCA0OCwgNDksIAotICAgIDU0LCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY3LCAxMjgsIDkwLCA0OCwgCi0gICAgNDksIDU0LCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OSwgNTMsIDczLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzEsIDEyOCwgOTAsIAotICAgIDQ4LCA0OSwgNTMsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjgsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OSwgNTMsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjUsIAotICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDEyOCwgOTAsIDQ4LCA0OSwgNTIsIDEyOCwgOTAsIDQ4LCA0OSwgNTEsIDEyOCwgOTAsIAotICAgIDQ4LCA0OSwgNTAsIDEyOCwgOTAsIDQ4LCA0OSwgNDksIDEyOCwgOTAsIDQ4LCA0OSwgNDgsIDEyOCwgOTAsIDQ4LCA0OCwgCi0gICAgNTcsIDEyOCwgOTAsIDQ4LCA0OCwgNTYsIDEyOCwgOTAsIDQ4LCA0OCwgNTUsIDEyOCwgOTAsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCAxMjgsIDkwLCA0OCwgNDgsIDUyLCA2NSwgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA1MiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDUxLCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2OCwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA0OSwgMTI4LCA5MCwgMTI4LCAyMTgsIDg5LCA4OSwgODgsIDEyOCwgODksIDg5LCA4NCwgMTI4LCA4OSwgCi0gICAgODksIDgyLCA4OCwgMTI4LCA4OSwgODksIDgyLCAxMjgsIDg5LCA4OSwgODAsIDEyOCwgODksIDg5LCA2OSwgMTI4LCA4OSwgCi0gICAgODksIDY1LCAxMjgsIDg5LCA4OSwgMTI4LCA4OSwgODcsIDc5LCA3OSwgMTI4LCA4OSwgODcsIDc5LCAxMjgsIDg5LCA4NywgCi0gICAgNzMsIDczLCAxMjgsIDg5LCA4NywgNzMsIDEyOCwgODksIDg3LCA2OSwgMTI4LCA4OSwgODcsIDY1LCA2NSwgMTI4LCA4OSwgCi0gICAgODcsIDY1LCAxMjgsIDg5LCA4NiwgMTI4LCA4OSwgODUsIDg4LCAxMjgsIDg5LCA4NSwgODcsIDc5LCA4MSwgMTI4LCA4OSwgCi0gICAgODUsIDg1LCA3NSwgNjUsIDc2LCA2OSwgNjUsIDgwLCA3MywgNzgsIDg0LCA4NSwgMTI4LCA4OSwgODUsIDg0LCAxMjgsIDg5LCAKLSAgICA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCA4NSwgODIsIDEyOCwgODksIDg1LCAKLSAgICA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA4OSwgODUsIDc5LCAKLSAgICA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCA4OSwgODUsIDc5LCAxMjgsIDg5LCAKLSAgICA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgMTI4LCA4OSwgODUsIDY5LCA4MSwgMTI4LCA4OSwgODUsIDY5LCAxMjgsIDg5LCAKLSAgICA4NSwgNjgsIDcyLCAxMjgsIDg5LCA4NSwgNjgsIDIwMCwgODksIDg1LCA2NSwgNzgsIDEyOCwgODksIDg1LCA2NSwgNjksIAotICAgIDc4LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCAxMjgsIDg5LCA4NSwgCi0gICAgNDUsIDg1LCAxMjgsIDg5LCA4NSwgNDUsIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDczLCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAKLSAgICA3OSwgMTI4LCA4OSwgODUsIDQ1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIAotICAgIDEyOCwgODksIDg1LCAxMjgsIDg5LCAyMTMsIDg5LCA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIAotICAgIDgyLCA3OSwgNzMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgCi0gICAgODIsIDczLCA4MywgNzMsIDIxMSwgODksIDgwLCA3OSwgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIAotICAgIDEyOCwgODksIDc5LCA4OSwgMTI4LCA4OSwgNzksIDg4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCA3NiwgCi0gICAgNzgsIDY5LCA4MywgODMsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgMTI4LCAKLSAgICA4OSwgNzksIDgyLCA3MywgMTI4LCA4OSwgNzksIDgxLCAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIDg5LCAKLSAgICA3OSwgNzksIDEyOCwgODksIDc5LCA3NywgNzksIDEyOCwgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgNzIsIAotICAgIDEyOCwgODksIDc5LCA2OCwgMTI4LCA4OSwgNzksIDE5NiwgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjksIAotICAgIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA3OSwgCi0gICAgNDUsIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDczLCAxMjgsIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCAKLSAgICA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgNjUsIDEyOCwgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIDY5LCAKLSAgICA4NCwgMTI4LCA4OSwgNzMsIDg4LCAxMjgsIDg5LCA3MywgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIDczLCAKLSAgICA4MCwgMTI4LCA4OSwgNzMsIDc4LCA3MSwgMTI4LCA4OSwgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIDY5LCAKLSAgICA4OCwgMTI4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgMTI4LCAKLSAgICA4OSwgNzMsIDY5LCAxMjgsIDg5LCA3MywgNjgsIDY4LCA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgODksIAotICAgIDczLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgODMsIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCAyMTEsIDg5LCA3MCwgCi0gICAgNjksIDIwNiwgODksIDY5LCA4OSwgMTI4LCA4OSwgNjksIDg3LCAxMjgsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDg5LCA2OSwgCi0gICAgODUsIDgyLCA2NSwgNjksIDEyOCwgODksIDY5LCA4NSwgODEsIDEyOCwgODksIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCAKLSAgICA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODksIDY5LCA4NCwgNzMsIDg2LCAxMjgsIAotICAgIDg5LCA2OSwgODMsIDg0LCA4NSwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgNzMsIDc5LCAKLSAgICA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgCi0gICAgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCAKLSAgICA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgCi0gICAgODUsIDc4LCA3MSwgMTI4LCA4OSwgNjksIDgyLCA4NSwgMTI4LCA4OSwgNjksIDgyLCAyMTMsIDg5LCA2OSwgODIsIDczLCAKLSAgICAxMjgsIDg5LCA2OSwgODIsIDY1LCAyMDAsIDg5LCA2OSwgODIsIDEyOCwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIAotICAgIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg1LCAKLSAgICAxMjgsIDg5LCA2OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNjksIDc4LCA3MywgODMsIDY5LCAyMDEsIDg5LCA2OSwgNzgsIAotICAgIDY1LCA4MCwgMTI4LCA4OSwgNjksIDc4LCAxMjgsIDg5LCA2OSwgMjA2LCA4OSwgNjksIDc2LCA3NiwgNzksIDg3LCAxMjgsIAotICAgIDg5LCA2OSwgNzYsIDc2LCA3OSwgMjE1LCA4OSwgNjksIDcyLCAxMjgsIDg5LCA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgCi0gICAgMjEwLCA4OSwgNjksIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAxMjgsIDg5LCA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgCi0gICAgOTAsIDEyOCwgODksIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgNjUsIDg3LCAKLSAgICAxMjgsIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIDEyOCwgODksIDY1LCAKLSAgICA4NCwgNzIsIDEyOCwgODksIDY1LCA4NCwgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIDgzLCA3MiwgMTI4LCAKLSAgICA4OSwgNjUsIDgzLCAxMjgsIDg5LCA2NSwgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIDY1LCAyMTAsIDg5LCAKLSAgICA2NSwgODEsIDEyOCwgODksIDY1LCA4MCwgMTI4LCA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIDc4LCAxOTksIDg5LCAKLSAgICA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgNzUsIDY1LCA3OCwgCi0gICAgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCA2NSwgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgCi0gICAgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCA4OSwgNjUsIDc0LCAKLSAgICA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MiwgNzIsIDEyOCwgODksIAotICAgIDY1LCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3OCwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MSwgCi0gICAgNzIsIDEyOCwgODksIDY1LCA3MSwgMTI4LCA4OSwgNjUsIDcwLCAyMTMsIDg5LCA2NSwgNzAsIDEyOCwgODksIDY1LCA2OSwgCi0gICAgNzcsIDc3LCA2NSwgNjksIDEyOCwgODksIDY1LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgNjgsIDcyLCAxMjgsIDg5LCAKLSAgICA2NSwgNjgsIDY4LCAxMjgsIDg5LCA2NSwgNjgsIDEyOCwgODksIDY1LCA2NywgNzIsIDEyOCwgODksIDY1LCA2NiwgNzIsIAotICAgIDEyOCwgODksIDY1LCA2NiwgMTI4LCA4OSwgNjUsIDY1LCA4MiwgODUsIDEyOCwgODksIDY1LCA2NSwgNzMsIDEyOCwgODksIAotICAgIDY1LCA2NSwgNjgsIDc5LCAxMjgsIDg5LCA2NSwgNjUsIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAxMjgsIDg5LCA2NSwgCi0gICAgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCA0OCwgNDgsIDU1LCAKLSAgICAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIDg5LCA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIDUyLCAxMjgsIDg5LCAKLSAgICA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgNDgsIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4OSwgNDgsIAotICAgIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgODksIDg1LCAxMjgsIAotICAgIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCA4MiwgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgODksIDgwLCAxMjgsIAotICAgIDg4LCA4OSwgNzksIDEyOCwgODgsIDg5LCA3MywgMTI4LCA4OCwgODksIDY5LCA2OSwgMTI4LCA4OCwgODksIDY5LCAxMjgsIAotICAgIDg4LCA4OSwgNjUsIDY1LCAxMjgsIDg4LCA4OSwgNjUsIDEyOCwgODgsIDg5LCAxMjgsIDg4LCA4NywgNzMsIDEyOCwgODgsIAotICAgIDg3LCA2OSwgNjksIDEyOCwgODgsIDg3LCA2OSwgMTI4LCA4OCwgODcsIDY1LCA2NSwgMTI4LCA4OCwgODcsIDY1LCAxMjgsIAotICAgIDg4LCA4NiwgNjksIDEyOCwgODgsIDg2LCA2NSwgMTI4LCA4OCwgODUsIDc5LCA4OCwgMTI4LCA4OCwgODUsIDc5LCAxMjgsIAotICAgIDg4LCA4NSwgMTI4LCA4OCwgODMsIDcyLCA2NSwgNjUsIDg5LCA2NSwgODQsIDcyLCA3MywgODksIDY1LCAxMjgsIDg4LCA3OSwgCi0gICAgODgsIDEyOCwgODgsIDc5LCA4NCwgMTI4LCA4OCwgNzksIDgyLCAxMjgsIDg4LCA3OSwgODAsIDEyOCwgODgsIDc5LCA2NSwgCi0gICAgMTI4LCA4OCwgNzksIDEyOCwgODgsIDczLCA4OCwgMTI4LCA4OCwgNzMsIDg0LCAxMjgsIDg4LCA3MywgODIsIDc5LCAyMDYsIAotICAgIDg4LCA3MywgODAsIDEyOCwgODgsIDczLCA2OSwgODgsIDEyOCwgODgsIDczLCA2OSwgODQsIDEyOCwgODgsIDczLCA2OSwgCi0gICAgODAsIDEyOCwgODgsIDczLCA2OSwgMTI4LCA4OCwgNzMsIDEyOCwgODgsIDcxLCAxMjgsIDg4LCA2OSwgODMsIDg0LCA2OSwgCi0gICAgMjExLCA4OCwgNjksIDcyLCAxMjgsIDg4LCA2OSwgNjksIDEyOCwgODgsIDY5LCAxMjgsIDg4LCA2NSwgNzgsIDEyOCwgODgsIAotICAgIDY1LCA2NSwgMTI4LCA4OCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDg4LCA0OCwgNDgsIDU1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgMTI4LCA4OCwgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjYsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDg4LCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDg4LCA0OCwgNDgsIDUxLCAxMjgsIDg4LCA0OCwgNDgsIDUwLCAxMjgsIDg4LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDg3LCA5MCwgMTI4LCA4NywgODksIDc4LCA3OCwgMTI4LCA4NywgODksIDc4LCAyMDYsIDg3LCA4NiwgMTI4LCAKLSAgICA4NywgODUsIDgwLCAxMjgsIDg3LCA4NSwgNzksIDg4LCAxMjgsIDg3LCA4NSwgNzksIDgwLCAxMjgsIDg3LCA4NSwgNzksIAotICAgIDEyOCwgODcsIDg1LCA3OCwgNzQsIDIwNywgODcsIDg1LCA3OCwgMTI4LCA4NywgODUsIDc2LCA4NSwgMTI4LCA4NywgODUsIAotICAgIDc2LCAyMTMsIDg3LCA4NSwgNjksIDEyOCwgODcsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA3OCwgCi0gICAgMTI4LCA4NywgODUsIDEyOCwgODcsIDgyLCAyMTcsIDg3LCA4MiwgNzksIDc4LCA3MSwgMTI4LCA4NywgODIsIDczLCA4NCwgCi0gICAgNzMsIDc4LCAxOTksIDg3LCA4MiwgNjksIDc4LCA2NywgNzIsIDEyOCwgODcsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDg3LCAKLSAgICA4MiwgNjUsIDgwLCA4MCwgNjksIDE5NiwgODcsIDgyLCA2NSwgODAsIDEyOCwgODcsIDc5LCA4OCwgMTI4LCA4NywgNzksIAotICAgIDgyLCA3NSwgNjksIDgyLCAxMjgsIDg3LCA3OSwgODIsIDc1LCAxMjgsIDg3LCA3OSwgODIsIDIwMywgODcsIDc5LCA4MiwgCi0gICAgNjgsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA4NywgNzksIDgyLCAxOTYsIDg3LCA3OSwgODAsIDEyOCwgODcsIDc5LCAKLSAgICA3OSwgNzgsIDEyOCwgODcsIDc5LCA3OSwgNzYsIDEyOCwgODcsIDc5LCA3OSwgNjgsIDgzLCA0NSwgNjcsIDgyLCA2OSwgCi0gICAgMTk3LCA4NywgNzksIDc5LCA2OCwgMTI4LCA4NywgNzksIDc4LCAxMjgsIDg3LCA3OSwgMjA2LCA4NywgNzksIDc3LCA2OSwgCi0gICAgNzgsIDIxMSwgODcsIDc5LCA3NywgNjksIDIwNiwgODcsIDc5LCA3NywgNjUsIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY1LCAKLSAgICA3OCwgMTI4LCA4NywgNzksIDc3LCA2NSwgMjA2LCA4NywgNzksIDc2LCA3OSwgODMsIDc5LCAxMjgsIDg3LCA3OSwgNzYsIAotICAgIDE5OCwgODcsIDc5LCA2OSwgMTI4LCA4NywgNzksIDY1LCAxMjgsIDg3LCA3MywgODQsIDcyLCA3OSwgODUsIDIxMiwgODcsIAotICAgIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4NywgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDg3LCA3MywgNzgsIDc0LCA2NSwgCi0gICAgMTI4LCA4NywgNzMsIDc4LCA3MSwgODMsIDEyOCwgODcsIDczLCA3OCwgNjksIDEyOCwgODcsIDczLCA3OCwgMTk3LCA4NywgCi0gICAgNzMsIDc4LCA2OCwgODUsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCA4NywgNzMsIDc4LCAKLSAgICAxMjgsIDg3LCA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgNzMsIAotICAgIDY4LCA2OSwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NywgNzMsIDY4LCAxOTcsIDg3LCA3MywgNjUsIDc4LCA3MSwgCi0gICAgODcsIDY1LCA2NSwgNzUsIDEyOCwgODcsIDczLCA2NSwgNzgsIDcxLCAxMjgsIDg3LCA3MiwgNzksIDc2LCAxOTcsIDg3LCAKLSAgICA3MiwgNzMsIDg0LCA2OSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgMTk2LCA4NywgNzIsIDczLCA4NCwgCi0gICAgNjksIDEyOCwgODcsIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY3LCA3MiwgNjUsIDczLCAKLSAgICAyMTAsIDg3LCA3MiwgNjksIDY5LCA3NiwgMTI4LCA4NywgNzIsIDY5LCA2OSwgMjA0LCA4NywgNzIsIDY5LCA2NSwgODQsIAotICAgIDEyOCwgODcsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDg3LCA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIAotICAgIDg4LCAxMjgsIDg3LCA2OSwgODMsIDg0LCA2OSwgODIsIDIwNiwgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgCi0gICAgMjEyLCA4NywgNjksIDgwLCAxMjgsIDg3LCA2OSwgNzksIDEyOCwgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgCi0gICAgMTI4LCA4NywgNjksIDczLCA3MSwgNzIsIDIxMiwgODcsIDY5LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA2OCwgNzEsIDY5LCAKLSAgICA0NSwgODQsIDY1LCA3MywgNzYsIDY5LCAxOTYsIDg3LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjUsIAotICAgIDgyLCAyMTcsIDg3LCA2OSwgNjUsIDgwLCA3OSwgNzgsIDEyOCwgODcsIDY3LCAxMjgsIDg3LCA2NiwgMTI4LCA4NywgNjUsIAotICAgIDg5LCAxMjgsIDg3LCA2NSwgMjE3LCA4NywgNjUsIDg4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4OCwgMTI4LCA4NywgNjUsIAotICAgIDg3LCA0NSwgNjUsIDg5LCA3MywgNzgsIDQ1LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA4NywgNjUsIDg3LCAxMjgsIDg3LCA2NSwgCi0gICAgMjE1LCA4NywgNjUsIDg2LCAyMTcsIDg3LCA2NSwgODYsIDczLCA3OCwgMTk5LCA4NywgNjUsIDg2LCA2OSwgODMsIDEyOCwgCi0gICAgODcsIDY1LCA4NiwgNjksIDEyOCwgODcsIDY1LCA4NiwgMTk3LCA4NywgNjUsIDg1LCAxMjgsIDg3LCA2NSwgODQsIDg0LCAKLSAgICA3OSwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIDc3LCA2OSwgNzYsIDc5LCA3OCwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIAotICAgIDEyOCwgODcsIDY1LCA4NCwgNjksIDIxMCwgODcsIDY1LCA4NCwgNjcsIDcyLCAxMjgsIDg3LCA2NSwgODQsIDEyOCwgODcsIAotICAgIDY1LCA4MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA4MywgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgCi0gICAgNjUsIDgzLCA3NiwgNjUsIDEyOCwgODcsIDY1LCA4MywgNzYsIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAKLSAgICAxMjgsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIAotICAgIDY1LCA4MCwgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAKLSAgICAxMjgsIDg3LCA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgMTI4LCA4NywgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIAotICAgIDc2LCAxMjgsIDg3LCA2NSwgNzYsIDc1LCAxMjgsIDg3LCA2NSwgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIDg3LCA2NSwgCi0gICAgNjUsIDg2LCA4NSwgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCAKLSAgICA1MCwgNTIsIDEyOCwgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIAotICAgIDEyOCwgODcsIDQ4LCA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIAotICAgIDg3LCA0OCwgNDksIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgMTI4LCA4NywgCi0gICAgNDgsIDQ5LCA1NCwgMTI4LCA4NywgNDgsIDQ5LCA1MywgMTI4LCA4NywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODcsIDQ4LCAKLSAgICA0OSwgNTIsIDEyOCwgODcsIDQ4LCA0OSwgNTEsIDEyOCwgODcsIDQ4LCA0OSwgNTAsIDEyOCwgODcsIDQ4LCA0OSwgNDksIAotICAgIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDQ4LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCA2NSwgCi0gICAgMTI4LCA4NywgNDgsIDQ4LCA1NywgMTI4LCA4NywgNDgsIDQ4LCA1NiwgMTI4LCA4NywgNDgsIDQ4LCA1NSwgMTI4LCA4NywgCi0gICAgNDgsIDQ4LCA1NCwgMTI4LCA4NywgNDgsIDQ4LCA1MywgMTI4LCA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCAKLSAgICA1MSwgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIAotICAgIDEyOCwgODYsIDkwLCA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIAotICAgIDgyLCA4OCwgMTI4LCA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNjUsIAotICAgIDEyOCwgODYsIDg1LCA4OCwgMTI4LCA4NiwgODUsIDg0LCAxMjgsIDg2LCA4NSwgODIsIDg4LCAxMjgsIDg2LCA4NSwgODIsIAotICAgIDEyOCwgODYsIDg1LCA4MCwgMTI4LCA4NiwgODUsIDc2LCA3MSwgNjUsIDIxMCwgODYsIDg1LCA2OSwgODEsIDEyOCwgODYsIAotICAgIDgzLCAxMjgsIDg2LCA4MiwgNjUsIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCA4OCwgMTI4LCA4NiwgNzksIDg3LCA2OSwgCi0gICAgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIDEyOCwgODYsIDc5LCA4NSwgMTI4LCAKLSAgICA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgODAsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAxMjgsIDg2LCAKLSAgICA3OSwgNzYsIDg1LCA3NywgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIDY3LCA2NSwgNzgsIAotICAgIDc5LCAxMjgsIDg2LCA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgODYsIDc5LCA3MywgCi0gICAgNjcsIDY5LCA3NiwgNjksIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY3LCA2NSwgNzYsIDczLCAKLSAgICA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgODgsIAotICAgIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgCi0gICAgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDEyOCwgODYsIDczLCAKLSAgICA4NCwgMTI4LCA4NiwgNzMsIDgzLCA3MywgNzEsIDc5LCA4NCwgNzIsIDczLCAxOTUsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIAotICAgIDY1LCA4OSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgCi0gICAgMTkzLCA4NiwgNzMsIDgyLCA3MywgNjUsIDc3LCAxMjgsIDg2LCA3MywgODIsIDcxLCA3OSwgMTI4LCA4NiwgNzMsIDgyLCAKLSAgICA3MSwgNjUsIDEyOCwgODYsIDczLCA4MiwgNjUsIDc3LCA2NSwgMTI4LCA4NiwgNzMsIDgwLCAxMjgsIDg2LCA3MywgNzksIAotICAgIDc2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MSwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgCi0gICAgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCAxMjgsIDg2LCA3MywgNzgsIDY5LCAKLSAgICA3MSwgNjUsIDIxMCwgODYsIDczLCA3OCwgNjksIDEyOCwgODYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc2LCA3NiwgNjUsIAotICAgIDcxLCA2OSwgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCA4NiwgNzMsIDY5LCA4NywgNzMsIDc4LCAxOTksIDg2LCA3MywgCi0gICAgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIDg0LCAxMjgsIDg2LCA3MywgNjksIDgwLCAxMjgsIDg2LCAKLSAgICA3MywgNjksIDEyOCwgODYsIDczLCA2OCwgNjksIDc5LCA2NywgNjUsIDgzLCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODYsIAorICAgIDIwMCwgNjYsIDY1LCA3NiwgNzMsIDc4LCA2OSwgODMsIDE5NywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgMjEzLCA4NCwgODcsIAorICAgIDc5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NiwgCisgICAgNjUsIDc2LCA2NywgNzIsIDY5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA3MywgMTk1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3OSwgMTI4LCA2NSwgNzYsIDY5LCAxOTgsIDg0LCA4NywgMjA3LCAKKyAgICA3MiwgNjksIDY1LCA4NiwgMjE3LCA2NywgNzksIDc4LCA4MywgNzksIDc4LCA2NSwgNzgsIDIxMiwgNzksIDg2LCA2OSwgCisgICAgMjEwLCA2NiwgODIsIDY1LCA3MiwgNzcsIDIwMSwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDg1LCAyMDgsIDc2LCA3OSwgCisgICAgMjE1LCA3MiwgNjUsIDIwMCwgNzksIDc4LCAxOTcsIDY4LCA3OSwgODcsIDIwNiwgNzIsIDczLCA3MSwgMjAwLCA3MCwgODUsIAorICAgIDc2LCA3NiwgODcsIDczLCA2OCwgODQsIDIwMCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgNjksIDgxLCA4NSwgCisgICAgNjUsIDIwNCwgODQsIDY1LCAxOTksIDY2LCA2NSwgODIsIDEyOCwgNjgsIDc5LCA3NywgNzMsIDc4LCAyMDcsIDc4LCA4NSwgCisgICAgNzcsIDY5LCA4MiwgNzMsIDE5NSwgNzAsIDgyLCA2NSwgNzUsIDg0LCA4NSwgMjEwLCA4NCwgNzIsIDgyLCA2OSwgMTk3LCAKKyAgICA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDIxMCwgNzcsIDY1LCA3NiwgNjUsIDg5LCA2NSwgNzYsIDY1LCAyMDUsIAorICAgIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NSwgODQsIDc5LCA3OCwgMTk3LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgCisgICAgODMsIDg0LCA4MiwgODUsIDY3LCAyMDMsIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCA3MiwgNzMsIDgyLCAKKyAgICA2NSwgNzEsIDY1LCA3OCwgMTkzLCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzQsIDg1LCA3OCwgNzEsIDgzLCA2OSwgNzksIAorICAgIDc4LCAxOTksIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCA4NCwgNzMsIDE5NSwgNjYsIDY5LCA3OCwgNzEsIDY1LCA3NiwgCisgICAgMjAxLCA3NywgNjksIDY4LCA3MywgNjUsIDIwNCwgODQsIDY5LCA3NiwgODUsIDcxLCAyMTMsIDg2LCA3OSwgNjcsIDY1LCAKKyAgICA3NiwgNzMsIDE5NSwgNjUsIDgyLCA3NywgNjksIDc4LCA3MywgNjUsIDIwNiwgNzQsIDY5LCA2OSwgMjA1LCA3OCwgNjksIAorICAgIDcxLCA2NSwgODQsIDczLCA4NiwgMTk3LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzQsIDY1LCA4NiwgCisgICAgNjUsIDc4LCA2OSwgODMsIDE5NywgNzksIDgyLCA3MywgODksIDE5MywgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg3LCAKKyAgICA2OSwgODMsIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA3MiwgNjUsIDEyOCwgNzIsIAorICAgIDY1LCA3NiwgMTk4LCA3NywgNjUsIDgyLCAyMDMsIDc1LCA2NSwgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzgsIDY5LCAyMTUsIAorICAgIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5MywgODQsIDcyLCA2NSwgMjAxLCA2NywgNzIsIDY5LCA4MiwgNzksIDc1LCA2OSwgCisgICAgMTk3LCA2OCwgNzksIDg0LCAyMTEsIDcxLCA4NSwgNzQsIDY1LCA4MiwgNjUsIDg0LCAyMDEsIDY3LCA3MiwgNjUsIDIwNSwgCisgICAgNzYsIDg1LCAxOTcsIDgzLCA3MiwgNjUsIDgyLCA2NSwgNjgsIDE5MywgODMsIDczLCA3OCwgNzIsIDY1LCA3NiwgMTkzLCAKKyAgICA3NSwgNjUsIDEyOCwgODIsIDg1LCA3OCwgNzMsIDE5NSwgODMsIDY1LCA4NSwgODIsIDY1LCA4MywgNzIsIDg0LCA4MiwgCisgICAgMTkzLCA4NCwgNjksIDg0LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgNjgsIDY5LCA4MywgNjksIDgyLCA2OSwgMjEyLCAKKyAgICA4NCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgNzEsIDg1LCA4MiwgNzcsIDg1LCA3NSwgNzIsIDIwMSwgNzcsIDY1LCAxMjgsIAorICAgIDc3LCA2NSwgODksIDY5LCAyMDMsIDc3LCA2OSwgNjksIDg0LCA2OSwgMjAxLCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA4MywgODksIDgyLCA3MywgNjUsIDE5NSwgNzAsIDczLCA4NiwgNjksIDEyOCwgODAsIDY1LCAxMjgsIDg5LCA2NSwgCisgICAgMTI4LCA3NiwgNzMsIDcxLCA3MiwgMjEyLCA4MywgNzMsIDg4LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgCisgICAgNjksIDgwLCA2NywgNzIsIDE5MywgNzgsIDY1LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCA3NiwgNzksIDc4LCAKKyAgICAxOTksIDc4LCA3MywgNzgsIDY5LCAxMjgsIDg0LCA4NSwgODIsIDc1LCA3MywgMTk1LCA3MiwgNjUsIDc3LCA5MCwgMTkzLCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAyMDQsIDc5LCA4MCwgNjksIDIwNiwgODIsIDY1LCAxMjgsIAorICAgIDgzLCA2NSwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgODMsIDE5NywgODYsIDczLCA2OSwgMjEyLCA3NiwgCisgICAgNjUsIDIwNywgOTAsIDkwLCA4OSwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODQsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDg4LCAKKyAgICAxMjgsIDkwLCA5MCwgODksIDgyLCAxMjgsIDkwLCA5MCwgODksIDgwLCAxMjgsIDkwLCA5MCwgODksIDY1LCAxMjgsIDkwLCAKKyAgICA5MCwgODksIDEyOCwgOTAsIDkwLCA4NSwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA5MCwgODUsIAorICAgIDgyLCAxMjgsIDkwLCA5MCwgODUsIDgwLCAxMjgsIDkwLCA5MCwgODUsIDEyOCwgOTAsIDkwLCA4MywgODksIDY1LCAxMjgsIAorICAgIDkwLCA5MCwgODMsIDY1LCAxMjgsIDkwLCA5MCwgNzksIDg4LCAxMjgsIDkwLCA5MCwgNzksIDgwLCAxMjgsIDkwLCA5MCwgCisgICAgNzksIDEyOCwgOTAsIDkwLCA3MywgODgsIDEyOCwgOTAsIDkwLCA3MywgODQsIDEyOCwgOTAsIDkwLCA3MywgODAsIDEyOCwgCisgICAgOTAsIDkwLCA3MywgNjksIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4NCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODAsIAorICAgIDEyOCwgOTAsIDkwLCA3MywgNjksIDEyOCwgOTAsIDkwLCA3MywgMTI4LCA5MCwgOTAsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIAorICAgIDY5LCA4MCwgMTI4LCA5MCwgOTAsIDY5LCA2OSwgMTI4LCA5MCwgOTAsIDY5LCAxMjgsIDkwLCA5MCwgNjUsIDg4LCAxMjgsIAorICAgIDkwLCA5MCwgNjUsIDg0LCAxMjgsIDkwLCA5MCwgNjUsIDgwLCAxMjgsIDkwLCA5MCwgNjUsIDY1LCAxMjgsIDkwLCA5MCwgCisgICAgNjUsIDEyOCwgOTAsIDg5LCA3MSwgNzksIDgzLCAxMjgsIDkwLCA4NywgODMsIDgwLCAxMjgsIDkwLCA4NywgNzgsIDc0LCAKKyAgICAxMjgsIDkwLCA4NywgNzgsIDY2LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3NCwgMTI4LCA5MCwgODcsIDY1LCA4MiwgNjUsIAorICAgIDc1LCA2NSwgODksIDEyOCwgOTAsIDg3LCA2NSwgMTI4LCA5MCwgODUsIDg0LCAxMjgsIDkwLCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDkwLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA4NSwgNzksIDEyOCwgOTAsIDg1LCA3NywgMTI4LCA5MCwgODUsIDY2LCA4NSwgCisgICAgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDgzLCA3MiwgNjUsIDEyOCwgOTAsIDgyLCA2NSwgCisgICAgMTI4LCA5MCwgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIDc5LCAxMjgsIDkwLCA3OSwgCisgICAgNjUsIDEyOCwgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIDE5MywgOTAsIDc0LCA2OSwgCisgICAgMTI4LCA5MCwgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIDczLCA3OCwgNzksIDgyLCAKKyAgICAxMjgsIDkwLCA3MywgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgMTI4LCAKKyAgICA5MCwgNzMsIDY4LCAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIDIwMSwgCisgICAgOTAsIDcyLCA4OSwgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDkwLCAKKyAgICA3MiwgODksIDgyLCAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgNjksIAorICAgIDEyOCwgOTAsIDcyLCA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgOTAsIAorICAgIDcyLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCA3MiwgCisgICAgODUsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIDcyLCAKKyAgICA4NSwgMTI4LCA5MCwgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgMTI4LCAKKyAgICA5MCwgNzIsIDc5LCA3OSwgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgODQsIDY5LCAxMjgsIAorICAgIDkwLCA3MiwgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgOTAsIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgCisgICAgODAsIDEyOCwgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCA2OSwgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgCisgICAgODgsIDEyOCwgOTAsIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIDEyOCwgCisgICAgOTAsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIDcyLCAKKyAgICAxMjgsIDkwLCA2OSwgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIDY5LCAKKyAgICA3OCwgMTI4LCA5MCwgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgOTAsIAorICAgIDY5LCA1MCwgMTI4LCA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIAorICAgIDY1LCA4OSwgNzMsIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAKKyAgICAxMjgsIDkwLCA2NSwgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIDc3LCA4OCwgMTI4LCAKKyAgICA5MCwgNjUsIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA3MywgMjA2LCA5MCwgNjUsIDczLCAxMjgsIDkwLCAKKyAgICA2NSwgNzIsIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgOTAsIDY1LCA2OSwgNzAsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OSwgNTQsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzAsIDEyOCwgOTAsIAorICAgIDQ4LCA0OSwgNTQsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjcsIDEyOCwgCisgICAgOTAsIDQ4LCA0OSwgNTQsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgMTI4LCAKKyAgICA5MCwgNDgsIDQ5LCA1MywgNzMsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MSwgCisgICAgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAKKyAgICA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY2LCAxMjgsIDkwLCA0OCwgNDksIAorICAgIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgMTI4LCA5MCwgNDgsIDQ5LCA1MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MSwgCisgICAgMTI4LCA5MCwgNDgsIDQ5LCA1MCwgMTI4LCA5MCwgNDgsIDQ5LCA0OSwgMTI4LCA5MCwgNDgsIDQ5LCA0OCwgMTI4LCA5MCwgCisgICAgNDgsIDQ4LCA1NywgMTI4LCA5MCwgNDgsIDQ4LCA1NiwgMTI4LCA5MCwgNDgsIDQ4LCA1NSwgMTI4LCA5MCwgNDgsIDQ4LCAKKyAgICA1NCwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIAorICAgIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUyLCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgCisgICAgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY4LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCAKKyAgICA2NywgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIAorICAgIDUwLCAxMjgsIDkwLCA0OCwgNDgsIDQ5LCAxMjgsIDkwLCAxMjgsIDIxOCwgODksIDg5LCA4OCwgMTI4LCA4OSwgODksIDg0LCAKKyAgICAxMjgsIDg5LCA4OSwgODIsIDg4LCAxMjgsIDg5LCA4OSwgODIsIDEyOCwgODksIDg5LCA4MCwgMTI4LCA4OSwgODksIDY5LCAKKyAgICAxMjgsIDg5LCA4OSwgNjUsIDY1LCAxMjgsIDg5LCA4OSwgNjUsIDEyOCwgODksIDg5LCAxMjgsIDg5LCA4NywgNzksIDc5LCAKKyAgICAxMjgsIDg5LCA4NywgNzksIDEyOCwgODksIDg3LCA3MywgNzMsIDEyOCwgODksIDg3LCA3MywgMTI4LCA4OSwgODcsIDY5LCAKKyAgICAxMjgsIDg5LCA4NywgNjUsIDY1LCAxMjgsIDg5LCA4NywgNjUsIDEyOCwgODksIDg2LCAxMjgsIDg5LCA4NSwgODgsIDEyOCwgCisgICAgODksIDg1LCA4NywgNzksIDgxLCAxMjgsIDg5LCA4NSwgODUsIDc1LCA2NSwgNzYsIDY5LCA2NSwgODAsIDczLCA3OCwgODQsIAorICAgIDg1LCAxMjgsIDg5LCA4NSwgODUsIDEyOCwgODksIDg1LCA4NCwgMTI4LCA4OSwgODUsIDgzLCAxMjgsIDg5LCA4NSwgMjExLCAKKyAgICA4OSwgODUsIDgyLCA4OCwgMTI4LCA4OSwgODUsIDgyLCAxMjgsIDg5LCA4NSwgODEsIDEyOCwgODksIDg1LCAyMDksIDg5LCAKKyAgICA4NSwgODAsIDEyOCwgODksIDg1LCA3OSwgODgsIDEyOCwgODksIDg1LCA3OSwgODQsIDEyOCwgODksIDg1LCA3OSwgODAsIAorICAgIDEyOCwgODksIDg1LCA3OSwgNzcsIDEyOCwgODksIDg1LCA3OSwgMTI4LCA4OSwgODUsIDc4LCAxMjgsIDg5LCA4NSwgNzcsIAorICAgIDEyOCwgODksIDg1LCA2OSwgODEsIDEyOCwgODksIDg1LCA2OSwgMTI4LCA4OSwgODUsIDY4LCA3MiwgMTI4LCA4OSwgODUsIAorICAgIDY4LCAyMDAsIDg5LCA4NSwgNjUsIDc4LCAxMjgsIDg5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgCisgICAgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA4NSwgMTI4LCA4OSwgODUsIDQ1LCAKKyAgICA3OSwgMTI4LCA4OSwgODUsIDQ1LCA3MywgMTI4LCA4OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgNjksIAorICAgIDEyOCwgODksIDg1LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAxMjgsIDg5LCA4NSwgMTI4LCA4OSwgMjEzLCAKKyAgICA4OSwgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDczLCAxMjgsIDg5LCA4MCwgNzksIAorICAgIDc1LCA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIDczLCAyMTEsIDg5LCA4MCwgCisgICAgNzksIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDg5LCA3OSwgODksIDEyOCwgODksIDc5LCAKKyAgICA4OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgNzYsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDg5LCA3OSwgODUsIAorICAgIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIDEyOCwgODksIDc5LCA4MiwgNzMsIDEyOCwgODksIDc5LCA4MSwgCisgICAgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCA4OSwgNzksIDc5LCAxMjgsIDg5LCA3OSwgNzcsIDc5LCAxMjgsIAorICAgIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDEyOCwgODksIDc5LCAxOTYsIAorICAgIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDY5LCAKKyAgICAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA3MywgMTI4LCAKKyAgICA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCAxMjgsIAorICAgIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCA2OSwgODQsIDEyOCwgODksIDczLCA4OCwgMTI4LCA4OSwgNzMsIAorICAgIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCA3MywgODAsIDEyOCwgODksIDczLCA3OCwgNzEsIDEyOCwgODksIAorICAgIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCA2OSwgODgsIDEyOCwgODksIDczLCA2OSwgODQsIDEyOCwgODksIAorICAgIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIDEyOCwgODksIDczLCA2OSwgMTI4LCA4OSwgNzMsIDY4LCA2OCwgCisgICAgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIDg5LCA3MywgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDgzLCAKKyAgICAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgMjExLCA4OSwgNzAsIDY5LCAyMDYsIDg5LCA2OSwgODksIDEyOCwgODksIDY5LCAKKyAgICA4NywgMTI4LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA4OSwgNjksIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODUsIAorICAgIDgxLCAxMjgsIDg5LCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgODksIDY5LCA4NSwgCisgICAgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODQsIDczLCA4NiwgMTI4LCA4OSwgNjksIDgzLCA4NCwgODUsIDEyOCwgODksIDY5LCAKKyAgICA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgCisgICAgNzgsIDcxLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIAorICAgIDcxLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDcyLCAKKyAgICA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODksIDY5LCA4MiwgODUsIAorICAgIDEyOCwgODksIDY5LCA4MiwgMjEzLCA4OSwgNjksIDgyLCA3MywgMTI4LCA4OSwgNjksIDgyLCA2NSwgMjAwLCA4OSwgNjksIAorICAgIDgyLCAxMjgsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDc5LCA0NSwgCisgICAgODksIDY1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgNzksIDEyOCwgODksIDY5LCAKKyAgICA3OCwgNzMsIDgzLCA2OSwgMjAxLCA4OSwgNjksIDc4LCA2NSwgODAsIDEyOCwgODksIDY5LCA3OCwgMTI4LCA4OSwgNjksIAorICAgIDIwNiwgODksIDY5LCA3NiwgNzYsIDc5LCA4NywgMTI4LCA4OSwgNjksIDc2LCA3NiwgNzksIDIxNSwgODksIDY5LCA3MiwgCisgICAgMTI4LCA4OSwgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIDIxMCwgODksIDY5LCA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgCisgICAgMTI4LCA4OSwgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIDkwLCAxMjgsIDg5LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIDY1LCA4NywgMTI4LCA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODUsIDEyOCwgCisgICAgODksIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIDEyOCwgODksIDY1LCA4NCwgNzIsIDEyOCwgODksIDY1LCAKKyAgICA4NCwgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDgzLCAxMjgsIDg5LCAKKyAgICA2NSwgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIDY1LCAyMTAsIDg5LCA2NSwgODEsIDEyOCwgODksIDY1LCAKKyAgICA4MCwgMTI4LCA4OSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIAorICAgIDc4LCAxOTksIDg5LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgCisgICAgNzUsIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCA2NSwgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAKKyAgICAxMjgsIDg5LCA2NSwgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCAKKyAgICA4OSwgNjUsIDc0LCA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MywgCisgICAgMTI4LCA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgCisgICAgNzEsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgCisgICAgODksIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCA3NywgNzcsIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCAKKyAgICA4OSwgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIAorICAgIDY3LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgCisgICAgMTI4LCA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgNjUsIDY1LCA2OCwgNzksIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAKKyAgICAxMjgsIDg5LCA2NSwgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIDg5LCA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIAorICAgIDUyLCAxMjgsIDg5LCA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgNDgsIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgCisgICAgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgCisgICAgODksIDg1LCAxMjgsIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCA4MiwgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgCisgICAgODksIDgwLCAxMjgsIDg4LCA4OSwgNzksIDEyOCwgODgsIDg5LCA3MywgMTI4LCA4OCwgODksIDY5LCA2OSwgMTI4LCA4OCwgCisgICAgODksIDY5LCAxMjgsIDg4LCA4OSwgNjUsIDY1LCAxMjgsIDg4LCA4OSwgNjUsIDEyOCwgODgsIDg5LCAxMjgsIDg4LCA4NywgCisgICAgNzMsIDEyOCwgODgsIDg3LCA2OSwgNjksIDEyOCwgODgsIDg3LCA2OSwgMTI4LCA4OCwgODcsIDY1LCA2NSwgMTI4LCA4OCwgCisgICAgODcsIDY1LCAxMjgsIDg4LCA4NiwgNjksIDEyOCwgODgsIDg2LCA2NSwgMTI4LCA4OCwgODUsIDc5LCA4OCwgMTI4LCA4OCwgCisgICAgODUsIDc5LCAxMjgsIDg4LCA4NSwgMTI4LCA4OCwgODMsIDcyLCA2NSwgNjUsIDg5LCA2NSwgODQsIDcyLCA3MywgODksIDY1LCAKKyAgICAxMjgsIDg4LCA3OSwgODgsIDEyOCwgODgsIDc5LCA4NCwgMTI4LCA4OCwgNzksIDgyLCAxMjgsIDg4LCA3OSwgODAsIDEyOCwgCisgICAgODgsIDc5LCA2NSwgMTI4LCA4OCwgNzksIDEyOCwgODgsIDczLCA4OCwgMTI4LCA4OCwgNzMsIDg0LCAxMjgsIDg4LCA3MywgCisgICAgODIsIDc5LCAyMDYsIDg4LCA3MywgODAsIDEyOCwgODgsIDczLCA2OSwgODgsIDEyOCwgODgsIDczLCA2OSwgODQsIDEyOCwgCisgICAgODgsIDczLCA2OSwgODAsIDEyOCwgODgsIDczLCA2OSwgMTI4LCA4OCwgNzMsIDEyOCwgODgsIDcxLCAxMjgsIDg4LCA2OSwgCisgICAgODMsIDg0LCA2OSwgMjExLCA4OCwgNjksIDcyLCAxMjgsIDg4LCA2OSwgNjksIDEyOCwgODgsIDY5LCAxMjgsIDg4LCA2NSwgCisgICAgNzgsIDEyOCwgODgsIDY1LCA2NSwgMTI4LCA4OCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg4LCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDg4LCA0OCwgNDgsIDU1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCAKKyAgICA1NCwgMTI4LCA4OCwgNDgsIDQ4LCA1MywgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjYsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIAorICAgIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCAxMjgsIDg4LCA0OCwgNDgsIDUxLCAxMjgsIDg4LCA0OCwgNDgsIDUwLCAxMjgsIAorICAgIDg4LCA0OCwgNDgsIDQ5LCAxMjgsIDg3LCA5MCwgMTI4LCA4NywgODksIDc4LCA3OCwgMTI4LCA4NywgODksIDc4LCAyMDYsIAorICAgIDg3LCA4NiwgMTI4LCA4NywgODUsIDgwLCAxMjgsIDg3LCA4NSwgNzksIDg4LCAxMjgsIDg3LCA4NSwgNzksIDgwLCAxMjgsIAorICAgIDg3LCA4NSwgNzksIDEyOCwgODcsIDg1LCA3OCwgNzQsIDIwNywgODcsIDg1LCA3OCwgMTI4LCA4NywgODUsIDc2LCA4NSwgCisgICAgMTI4LCA4NywgODUsIDc2LCAyMTMsIDg3LCA4NSwgNjksIDEyOCwgODcsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg3LCA4NSwgCisgICAgNjUsIDY5LCA3OCwgMTI4LCA4NywgODUsIDEyOCwgODcsIDgyLCAyMTcsIDg3LCA4MiwgNzksIDc4LCA3MSwgMTI4LCA4NywgCisgICAgODIsIDczLCA4NCwgNzMsIDc4LCAxOTksIDg3LCA4MiwgNjksIDc4LCA2NywgNzIsIDEyOCwgODcsIDgyLCA2OSwgNjUsIDg0LCAKKyAgICAyMDAsIDg3LCA4MiwgNjUsIDgwLCA4MCwgNjksIDE5NiwgODcsIDgyLCA2NSwgODAsIDEyOCwgODcsIDc5LCA4OCwgMTI4LCAKKyAgICA4NywgNzksIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg3LCA3OSwgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIAorICAgIDEyOCwgODcsIDc5LCA4MiwgMjAzLCA4NywgNzksIDgyLCA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgCisgICAgODIsIDE5NiwgODcsIDc5LCA4MCwgMTI4LCA4NywgNzksIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgCisgICAgNzksIDc5LCA2OCwgODMsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIAorICAgIDEyOCwgODcsIDc5LCAyMDYsIDg3LCA3OSwgNzcsIDY5LCA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIAorICAgIDc3LCA2NSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjUsIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgCisgICAgNzYsIDc5LCA4MywgNzksIDEyOCwgODcsIDc5LCA3NiwgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgCisgICAgODcsIDczLCA4NCwgNzIsIDc5LCA4NSwgMjEyLCA4NywgNzMsIDg0LCA3MiwgNzMsIDc4LCAxMjgsIDg3LCA3MywgNzgsIDg0LCAKKyAgICA2OSwgODIsIDEyOCwgODcsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA4NywgNzMsIDc4LCA3NCwgNjUsIDEyOCwgODcsIAorICAgIDczLCA3OCwgNzEsIDgzLCAxMjgsIDg3LCA3MywgNzgsIDY5LCAxMjgsIDg3LCA3MywgNzgsIDE5NywgODcsIDczLCA3OCwgCisgICAgNjgsIDg1LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgODcsIDczLCA3OCwgMTI4LCA4NywgCisgICAgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIDczLCA2OCwgNjksIDQ1LCAKKyAgICA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODcsIDczLCA2OCwgMTk3LCA4NywgNzMsIDY1LCA3OCwgNzEsIDg3LCA2NSwgNjUsIAorICAgIDc1LCAxMjgsIDg3LCA3MywgNjUsIDc4LCA3MSwgMTI4LCA4NywgNzIsIDc5LCA3NiwgMTk3LCA4NywgNzIsIDczLCA4NCwgCisgICAgNjksIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIDE5NiwgODcsIDcyLCA3MywgODQsIDY5LCAxMjgsIDg3LCAKKyAgICA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgODcsIDcyLCA2OSwgNjksIDc2LCA2NywgNzIsIDY1LCA3MywgMjEwLCA4NywgNzIsIAorICAgIDY5LCA2OSwgNzYsIDEyOCwgODcsIDcyLCA2OSwgNjksIDIwNCwgODcsIDcyLCA2OSwgNjUsIDg0LCAxMjgsIDg3LCA3MiwgCisgICAgNjUsIDc2LCA2OSwgMTI4LCA4NywgNzEsIDEyOCwgODcsIDY5LCA4OCwgMTI4LCA4NywgNjksIDg1LCA4OCwgMTI4LCA4NywgCisgICAgNjksIDgzLCA4NCwgNjksIDgyLCAyMDYsIDg3LCA2OSwgODMsIDg0LCAxMjgsIDg3LCA2OSwgODMsIDIxMiwgODcsIDY5LCAKKyAgICA4MCwgMTI4LCA4NywgNjksIDc5LCAxMjgsIDg3LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA3NiwgNzYsIDEyOCwgODcsIDY5LCAKKyAgICA3MywgNzEsIDcyLCAyMTIsIDg3LCA2OSwgNzMsIDY5LCA4MiwgODMsIDg0LCA4MiwgNjUsIDgzLCAyMTEsIDg3LCA2OSwgNjksIAorICAgIDc4LCAxMjgsIDg3LCA2OSwgNjgsIDcxLCA2OSwgNDUsIDg0LCA2NSwgNzMsIDc2LCA2OSwgMTk2LCA4NywgNjksIDY4LCA2OCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjksIDY1LCA4MiwgMjE3LCA4NywgNjksIDY1LCA4MCwgNzksIDc4LCAxMjgsIDg3LCAKKyAgICA2NywgMTI4LCA4NywgNjYsIDEyOCwgODcsIDY1LCA4OSwgMTI4LCA4NywgNjUsIDIxNywgODcsIDY1LCA4OCwgNzMsIDc4LCAKKyAgICAxOTksIDg3LCA2NSwgODgsIDEyOCwgODcsIDY1LCA4NywgNDUsIDY1LCA4OSwgNzMsIDc4LCA0NSwgODIsIDY5LCA4MywgNzIsIAorICAgIDEyOCwgODcsIDY1LCA4NywgMTI4LCA4NywgNjUsIDIxNSwgODcsIDY1LCA4NiwgMjE3LCA4NywgNjUsIDg2LCA3MywgNzgsIAorICAgIDE5OSwgODcsIDY1LCA4NiwgNjksIDgzLCAxMjgsIDg3LCA2NSwgODYsIDY5LCAxMjgsIDg3LCA2NSwgODYsIDE5NywgODcsIAorICAgIDY1LCA4NSwgMTI4LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgODcsIDY1LCA4NCwgNjksIDgyLCA3NywgNjksIDc2LCA3OSwgCisgICAgNzgsIDEyOCwgODcsIDY1LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA2NSwgODQsIDY5LCAyMTAsIDg3LCA2NSwgODQsIDY3LCAKKyAgICA3MiwgMTI4LCA4NywgNjUsIDg0LCAxMjgsIDg3LCA2NSwgODMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgODMsIAorICAgIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIDY1LCA4MywgNzYsIDY1LCAxMjgsIDg3LCA2NSwgODMsIDc2LCAKKyAgICAxOTMsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgCisgICAgMjA1LCA4NywgNjUsIDgyLCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAKKyAgICAxOTksIDg3LCA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIAorICAgIDEyOCwgODcsIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCA3NiwgMTI4LCA4NywgNjUsIDc2LCA3NSwgMTI4LCA4NywgNjUsIAorICAgIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgNzMsIDEyOCwgODcsIDY1LCA2OSwgCisgICAgNzgsIDEyOCwgODcsIDY1LCA2OSwgMTI4LCA4NywgNjUsIDY1LCA4NiwgODUsIDEyOCwgODcsIDQ4LCA1MCwgNTMsIDEyOCwgCisgICAgODcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNTAsIDUyLCAxMjgsIDg3LCA0OCwgNTAsIDUxLCAxMjgsIDg3LCAKKyAgICA0OCwgNTAsIDUwLCAxMjgsIDg3LCA0OCwgNTAsIDQ5LCAxMjgsIDg3LCA0OCwgNTAsIDQ4LCAxMjgsIDg3LCA0OCwgNDksIAorICAgIDU3LCAxMjgsIDg3LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NiwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgCisgICAgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDEyOCwgODcsIDQ4LCA0OSwgNTQsIDEyOCwgODcsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgODcsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDUyLCAxMjgsIDg3LCA0OCwgNDksIDUxLCAxMjgsIDg3LCAKKyAgICA0OCwgNDksIDUwLCAxMjgsIDg3LCA0OCwgNDksIDQ5LCAxMjgsIDg3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4NywgNDgsIAorICAgIDQ5LCA0OCwgMTI4LCA4NywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDEyOCwgODcsIDQ4LCA0OCwgCisgICAgNTYsIDEyOCwgODcsIDQ4LCA0OCwgNTUsIDEyOCwgODcsIDQ4LCA0OCwgNTQsIDEyOCwgODcsIDQ4LCA0OCwgNTMsIDEyOCwgCisgICAgODcsIDQ4LCA0OCwgNTIsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDUxLCAxMjgsIDg3LCAKKyAgICA0OCwgNDgsIDUwLCAxMjgsIDg3LCA0OCwgNDgsIDQ5LCAxMjgsIDg2LCA5MCwgNzcsIDY5LCA4NCwgMTI4LCA4NiwgODksIAorICAgIDg4LCAxMjgsIDg2LCA4OSwgODQsIDEyOCwgODYsIDg5LCA4MiwgODgsIDEyOCwgODYsIDg5LCA4MiwgMTI4LCA4NiwgODksIAorICAgIDgwLCAxMjgsIDg2LCA4OSwgMTI4LCA4NiwgODcsIDY1LCAxMjgsIDg2LCA4NSwgODgsIDEyOCwgODYsIDg1LCA4NSwgMTI4LCAKKyAgICA4NiwgODUsIDg0LCAxMjgsIDg2LCA4NSwgODIsIDg4LCAxMjgsIDg2LCA4NSwgODIsIDEyOCwgODYsIDg1LCA4MCwgMTI4LCAKKyAgICA4NiwgODUsIDc2LCA3MSwgNjUsIDIxMCwgODYsIDg1LCA2OSwgODEsIDEyOCwgODYsIDg0LCA4MywgMTI4LCA4NiwgODQsIAorICAgIDEyOCwgODYsIDgzLCA1NywgNTcsIDEyOCwgODYsIDgzLCA1NywgNTYsIDEyOCwgODYsIDgzLCA1NywgNTUsIDEyOCwgODYsIAorICAgIDgzLCA1NywgNTQsIDEyOCwgODYsIDgzLCA1NywgNTMsIDEyOCwgODYsIDgzLCA1NywgNTIsIDEyOCwgODYsIDgzLCA1NywgCisgICAgNTEsIDEyOCwgODYsIDgzLCA1NywgNTAsIDEyOCwgODYsIDgzLCA1NywgNDksIDEyOCwgODYsIDgzLCA1NywgNDgsIDEyOCwgCisgICAgODYsIDgzLCA1NywgMTI4LCA4NiwgODMsIDU2LCA1NywgMTI4LCA4NiwgODMsIDU2LCA1NiwgMTI4LCA4NiwgODMsIDU2LCAKKyAgICA1NSwgMTI4LCA4NiwgODMsIDU2LCA1NCwgMTI4LCA4NiwgODMsIDU2LCA1MywgMTI4LCA4NiwgODMsIDU2LCA1MiwgMTI4LCAKKyAgICA4NiwgODMsIDU2LCA1MSwgMTI4LCA4NiwgODMsIDU2LCA1MCwgMTI4LCA4NiwgODMsIDU2LCA0OSwgMTI4LCA4NiwgODMsIAorICAgIDU2LCA0OCwgMTI4LCA4NiwgODMsIDU2LCAxMjgsIDg2LCA4MywgNTUsIDU3LCAxMjgsIDg2LCA4MywgNTUsIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNTUsIDU1LCAxMjgsIDg2LCA4MywgNTUsIDU0LCAxMjgsIDg2LCA4MywgNTUsIDUzLCAxMjgsIDg2LCA4MywgCisgICAgNTUsIDUyLCAxMjgsIDg2LCA4MywgNTUsIDUxLCAxMjgsIDg2LCA4MywgNTUsIDUwLCAxMjgsIDg2LCA4MywgNTUsIDQ5LCAKKyAgICAxMjgsIDg2LCA4MywgNTUsIDQ4LCAxMjgsIDg2LCA4MywgNTUsIDEyOCwgODYsIDgzLCA1NCwgNTcsIDEyOCwgODYsIDgzLCAKKyAgICA1NCwgNTYsIDEyOCwgODYsIDgzLCA1NCwgNTUsIDEyOCwgODYsIDgzLCA1NCwgNTQsIDEyOCwgODYsIDgzLCA1NCwgNTMsIAorICAgIDEyOCwgODYsIDgzLCA1NCwgNTIsIDEyOCwgODYsIDgzLCA1NCwgNTEsIDEyOCwgODYsIDgzLCA1NCwgNTAsIDEyOCwgODYsIAorICAgIDgzLCA1NCwgNDksIDEyOCwgODYsIDgzLCA1NCwgNDgsIDEyOCwgODYsIDgzLCA1NCwgMTI4LCA4NiwgODMsIDUzLCA1NywgCisgICAgMTI4LCA4NiwgODMsIDUzLCA1NiwgMTI4LCA4NiwgODMsIDUzLCA1NSwgMTI4LCA4NiwgODMsIDUzLCA1NCwgMTI4LCA4NiwgCisgICAgODMsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUzLCA1MiwgMTI4LCA4NiwgODMsIDUzLCA1MSwgMTI4LCA4NiwgODMsIDUzLCAKKyAgICA1MCwgMTI4LCA4NiwgODMsIDUzLCA0OSwgMTI4LCA4NiwgODMsIDUzLCA0OCwgMTI4LCA4NiwgODMsIDUzLCAxMjgsIDg2LCAKKyAgICA4MywgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTIsIDU2LCAxMjgsIDg2LCA4MywgNTIsIDU1LCAxMjgsIDg2LCA4MywgNTIsIAorICAgIDU0LCAxMjgsIDg2LCA4MywgNTIsIDUzLCAxMjgsIDg2LCA4MywgNTIsIDUyLCAxMjgsIDg2LCA4MywgNTIsIDUxLCAxMjgsIAorICAgIDg2LCA4MywgNTIsIDUwLCAxMjgsIDg2LCA4MywgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTIsIDQ4LCAxMjgsIDg2LCA4MywgCisgICAgNTIsIDEyOCwgODYsIDgzLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MSwgNTYsIDEyOCwgODYsIDgzLCA1MSwgNTUsIDEyOCwgCisgICAgODYsIDgzLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MSwgNTMsIDEyOCwgODYsIDgzLCA1MSwgNTIsIDEyOCwgODYsIDgzLCAKKyAgICA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MSwgNTAsIDEyOCwgODYsIDgzLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MSwgNDgsIAorICAgIDEyOCwgODYsIDgzLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1NiwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTQsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTEsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MywgNDgsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NiwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MywgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MCwgCisgICAgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUyLCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTEsIAorICAgIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTMsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTEsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTAsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NSwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MiwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OSwgCisgICAgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU3LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNDksIAorICAgIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNDksIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNDksIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNDksIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NywgMTI4LCA4NiwgODMsIAorICAgIDUwLCA0OCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NCwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA0OCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MSwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA0OCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA0OCwgCisgICAgMTI4LCA4NiwgODMsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NywgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MSwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU3LCAKKyAgICA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTYsIAorICAgIDU2LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTQsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTYsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTEsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTYsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNDgsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NiwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MywgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MCwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU1LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU0LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTQsIAorICAgIDU1LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTQsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTAsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MiwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1MywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUzLCA0OSwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU3LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUyLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTIsIAorICAgIDU0LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTIsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTIsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNDksIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTIsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NywgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NCwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MSwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1MSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUxLCA0OCwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU2LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUwLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTAsIAorICAgIDUzLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTAsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNDgsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NiwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU0LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MywgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUxLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA0OSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDQ4LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU1LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNDgsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNDgsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICAxMjgsIDg2LCA4MywgMTI4LCA4NiwgODIsIDY1LCA2NywgNzIsIDg5LCAxMjgsIDg2LCA3OSwgODgsIDEyOCwgODYsIDc5LCAKKyAgICA4NywgNjksIDc2LCA0NSwgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA4NiwgNzksIDg3LCAxMjgsIDg2LCA3OSwgODUsIAorICAgIDEyOCwgODYsIDc5LCA4NCwgMTI4LCA4NiwgNzksIDgwLCAxMjgsIDg2LCA3OSwgNzksIDEyOCwgODYsIDc5LCA3NywgMTI4LCAKKyAgICA4NiwgNzksIDc2LCA4NSwgNzcsIDE5NywgODYsIDc5LCA3NiwgODQsIDY1LCA3MSwgMTk3LCA4NiwgNzksIDc2LCA2NywgNjUsIAorICAgIDc4LCA3OSwgMTI4LCA4NiwgNzksIDczLCAxOTYsIDg2LCA3OSwgNzMsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDg2LCA3OSwgCisgICAgNzMsIDY3LCA2OSwgNzYsIDY5LCA4MywgMjExLCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODYsIDc5LCA2NywgNjUsIDc2LCAKKyAgICA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3OSwgNjcsIDY1LCAyMDQsIDg2LCA3OSwgMTI4LCA4NiwgNzMsIAorICAgIDg4LCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgCisgICAgNzYsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCAxMjgsIDg2LCAKKyAgICA3MywgODQsIDEyOCwgODYsIDczLCA4MywgNzMsIDcxLCA3OSwgODQsIDcyLCA3MywgMTk1LCA4NiwgNzMsIDgzLCA2NSwgODIsIAorICAgIDcxLCA2NSwgODksIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgCisgICAgNzEsIDE5MywgODYsIDczLCA4MiwgNzMsIDY1LCA3NywgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNzksIDEyOCwgODYsIDczLCAKKyAgICA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODIsIDY1LCA3NywgNjUsIDEyOCwgODYsIDczLCA4MCwgMTI4LCA4NiwgNzMsIAorICAgIDc5LCA3NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTEsIDEyOCwgODYsIDczLCA3OCwgCisgICAgNjksIDcxLCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgMTI4LCA4NiwgNzMsIDc4LCAKKyAgICA2OSwgNzEsIDY1LCAyMTAsIDg2LCA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3NiwgNzYsIAorICAgIDY1LCA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCA4NiwgNzMsIDY5LCA4NywgCisgICAgNzMsIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIDg0LCAxMjgsIDg2LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDg2LCA3MywgNjksIDEyOCwgODYsIDczLCA2OCwgNzQsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIAorICAgIDY4LCA3NCwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4NiwgCiAgICAgNzMsIDY4LCA2OSwgMjA3LCA4NiwgNzMsIDY4LCA2NSwgMTI4LCA4NiwgNzMsIDY3LCA4NCwgNzksIDgyLCAyMTcsIDg2LCAKLSAgICA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzMsIDEyOCwgODYsIDY5LCA4OCwgMTI4LCA4NiwgNjksIAotICAgIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCA4NiwgNjksIDg1LCA4OCwgMTI4LCA4NiwgNjksIDg1LCA3NywgMTI4LCA4NiwgNjksIAotICAgIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg2LCA2OSwgODMsIDg0LCA2NSwgCi0gICAgMTI4LCA4NiwgNjksIDgzLCA4MywgNjksIDIwNCwgODYsIDY5LCA4MiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCAKLSAgICA2NSwgNzYsIDc2LCA4OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDg2LCA2OSwgODIsIAotICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIAotICAgIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgCi0gICAgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIAotICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIAotICAgIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgCi0gICAgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIAotICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIAotICAgIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgCi0gICAgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIAotICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIAotICAgIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgCi0gICAgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIAotICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIAotICAgIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgCi0gICAgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIAotICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIAotICAgIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgCi0gICAgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIAotICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIAotICAgIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgCi0gICAgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIAotICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIAotICAgIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgCi0gICAgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIAotICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCAKLSAgICA2NSwgNzYsIDEyOCwgODYsIDY5LCA4MiwgODMsIDczLCA2NywgNzYsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIAotICAgIDg2LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA4NiwgNjksIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIDgzLCAxMjgsIDg2LCA2OSwgCi0gICAgODAsIDEyOCwgODYsIDY5LCA3OCwgNjgsIDEyOCwgODYsIDY5LCA3MywgNzYsIDEyOCwgODYsIDY5LCA3MiwgNzMsIDY3LCAKLSAgICA3NiwgNjksIDEyOCwgODYsIDY5LCA3MiwgMTI4LCA4NiwgNjksIDIwMCwgODYsIDY5LCA2OSwgMTI4LCA4NiwgNjksIDE5NywgCi0gICAgODYsIDY5LCA2OCwgNjksIDEyOCwgODYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDg2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgODgsIDEyOCwgODYsIDY1LCA4NiwgMTI4LCA4NiwgNjUsIDIxNCwgODYsIDY1LCA4NCwgNzIsIDg5LCAKLSAgICAxMjgsIDg2LCA2NSwgODQsIDEyOCwgODYsIDY1LCA4MywgODQsIDc4LCA2OSwgODMsIDIxMSwgODYsIDY1LCA4MywgNzMsIAotICAgIDgzLCAxMjgsIDg2LCA2NSwgODIsIDg5LCAyMTEsIDg2LCA2NSwgODIsIDczLCA3NSwgNjUsIDEyOCwgODYsIDY1LCA4MiwgCi0gICAgNzMsIDY1LCA3OCwgMjEyLCA4NiwgNjUsIDgyLCA3MywgNjUsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDE5MywgODYsIDY1LCAKLSAgICA4MiwgNjksIDczLCA2NSwgMjAxLCA4NiwgNjUsIDgyLCA2OSwgNzMsIDE5MywgODYsIDY1LCA4MCwgNzksIDg1LCA4MiwgODMsIAotICAgIDEyOCwgODYsIDY1LCA4MCwgMTI4LCA4NiwgNjUsIDc4LCA2OSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgCi0gICAgODUsIDc1LCA3MiwgNjUsIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDE5MywgODYsIDY1LCAKLSAgICA3NiwgNzYsIDY5LCA4OSwgMTI4LCA4NiwgNjUsIDY1LCA4NiwgODUsIDEyOCwgODYsIDY1LCA2NSwgMTI4LCA4NiwgNDgsIAorICAgIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MywgMTI4LCA4NiwgNzAsIDY1LCAxMjgsIDg2LCA2OSwgCisgICAgODgsIDEyOCwgODYsIDY5LCA4NywgMTI4LCA4NiwgNjksIDIxNSwgODYsIDY5LCA4NSwgODgsIDEyOCwgODYsIDY5LCA4NSwgCisgICAgNzcsIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgNjksIDc4LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgMTI4LCAKKyAgICA4NiwgNjksIDgzLCA4NCwgNjUsIDEyOCwgODYsIDY5LCA4MywgODMsIDY5LCAyMDQsIDg2LCA2OSwgODIsIDIxNywgODYsIAorICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgODksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA3NiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIAorICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKKyAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAorICAgIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCAKKyAgICA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIAorICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKKyAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAorICAgIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCAKKyAgICA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgODYsIAorICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKKyAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAorICAgIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCAKKyAgICA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIAorICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKKyAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAorICAgIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCAKKyAgICA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIAorICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKKyAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAorICAgIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCAKKyAgICA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIAorICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKKyAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAorICAgIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCAKKyAgICA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgODYsIAorICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKKyAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAorICAgIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCAKKyAgICA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIAorICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKKyAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAorICAgIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCAKKyAgICA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIAorICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAxMjgsIDg2LCA2OSwgODIsIDgzLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4MywgMTk3LCA4NiwgNjksIDgyLCA3MSwgNjksIDEyOCwgODYsIDY5LCA4MiwgNjgsIDczLCA3MSwgODIsIDczLCAKKyAgICA4MywgMTI4LCA4NiwgNjksIDgwLCAxMjgsIDg2LCA2OSwgNzgsIDY4LCAxMjgsIDg2LCA2OSwgNzMsIDc2LCAxMjgsIDg2LCAKKyAgICA2OSwgNzIsIDczLCA2NywgNzYsIDY5LCAxMjgsIDg2LCA2OSwgNzIsIDEyOCwgODYsIDY5LCAyMDAsIDg2LCA2OSwgNjksIAorICAgIDEyOCwgODYsIDY5LCAxOTcsIDg2LCA2OSwgNjgsIDY5LCAxMjgsIDg2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4NiwgNjUsIAorICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NiwgNjUsIDg4LCAxMjgsIDg2LCA2NSwgODYsIDEyOCwgODYsIDY1LCAyMTQsIAorICAgIDg2LCA2NSwgODUsIDEyOCwgODYsIDY1LCA4NCwgNzIsIDg5LCAxMjgsIDg2LCA2NSwgODQsIDEyOCwgODYsIDY1LCA4MywgCisgICAgODQsIDc4LCA2OSwgODMsIDIxMSwgODYsIDY1LCA4MywgNzMsIDgzLCAxMjgsIDg2LCA2NSwgODIsIDg5LCAyMTEsIDg2LCAKKyAgICA2NSwgODIsIDczLCA3NSwgNjUsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA3OCwgMjEyLCA4NiwgNjUsIDgyLCA3MywgNjUsIAorICAgIDEyOCwgODYsIDY1LCA4MiwgNzMsIDE5MywgODYsIDY1LCA4MiwgNjksIDczLCA2NSwgMjAxLCA4NiwgNjUsIDgyLCA2OSwgCisgICAgNzMsIDE5MywgODYsIDY1LCA4MCwgNzksIDg1LCA4MiwgODMsIDEyOCwgODYsIDY1LCA4MCwgMTI4LCA4NiwgNjUsIDc4LCAKKyAgICA2OSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgODYsIDY1LCA3NywgNjUsIAorICAgIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDE5MywgODYsIDY1LCA3NiwgNzYsIDY5LCA4OSwgMTI4LCA4NiwgNjUsIDczLCAKKyAgICAxMjgsIDg2LCA2NSwgNzIsIDEyOCwgODYsIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg2LCA2NSwgNjUsIDEyOCwgODYsIDQ4LCAKICAgICA1MiwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCAxMjgsIDg2LCA0OCwgNTEsIDU3LCAxMjgsIDg2LCA0OCwgNTEsIAogICAgIDU2LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgMTI4LCA4NiwgNDgsIDUxLCA1NCwgCiAgICAgMTI4LCA4NiwgNDgsIDUxLCA1MywgMTI4LCA4NiwgNDgsIDUxLCA1MiwgMTI4LCA4NiwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgCkBAIC0zNjUsMTUgKzQ1NiwxNiBAQAogICAgIDg1LCA4NSwgODUsIDUwLCAxMjgsIDg1LCA4NSwgNjksIDEyOCwgODUsIDg0LCA4NSwgNzUsIDczLCAxMjgsIDg1LCA4MywgCiAgICAgODMsIDg1LCA1MSwgMTI4LCA4NSwgODMsIDgzLCA4NSwgMTI4LCA4NSwgODMsIDcyLCA4OCwgMTI4LCA4NSwgODMsIDcyLCAKICAgICA4NSwgNzcsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4MywgNzIsIDUwLCAxMjgsIAotICAgIDg1LCA4MywgNzIsIDEyOCwgODUsIDgzLCAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgMTI4LCA4NSwgODIsIAotICAgIDg1LCAyMTgsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg1LCA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgCi0gICAgMTkzLCA4NSwgODIsIDg1LCAxMjgsIDg1LCA4MiwgMjEzLCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA4NSwgODIsIDczLCA1MSwgMTI4LCA4NSwgODIsIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgCi0gICAgODUsIDgyLCA2NSwgMTI4LCA4NSwgODIsIDUyLCAxMjgsIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgCi0gICAgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODUsIDgwLCA4NywgNjUsIDgyLCAKLSAgICA2OCwgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4NSwgODAsIAotICAgIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgCi0gICAgNzIsIDIxMiwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIDcyLCA3NywgNjUsIDc4LCA3MywgODksIDY1LCAKKyAgICA4NSwgODMsIDcyLCAxMjgsIDg1LCA4MywgMjAwLCA4NSwgODMsIDY5LCAxOTYsIDg1LCA4MywgNjksIDQ1LCA1MCwgMTI4LCAKKyAgICA4NSwgODMsIDY5LCA0NSwgNDksIDEyOCwgODUsIDgzLCA2OSwgMTI4LCA4NSwgODMsIDE5NywgODUsIDgyLCA4NSwgMjE4LCAKKyAgICA4NSwgODIsIDg1LCA4MywgMTI4LCA4NSwgODIsIDg1LCA2OCwgNjUsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDE5MywgODUsIAorICAgIDgyLCA4NSwgMTI4LCA4NSwgODIsIDIxMywgODUsIDgyLCA3OCwgMTI4LCA4NSwgODIsIDczLCA3OCwgNjksIDEyOCwgODUsIAorICAgIDgyLCA3MywgNTEsIDEyOCwgODUsIDgyLCA3MywgMTI4LCA4NSwgODIsIDY1LCA3OCwgODUsIDgzLCAxMjgsIDg1LCA4MiwgCisgICAgNjUsIDEyOCwgODUsIDgyLCA1MiwgMTI4LCA4NSwgODIsIDUwLCAxMjgsIDg1LCA4MiwgMTc4LCA4NSwgODAsIDg3LCA2NSwgCisgICAgODIsIDY4LCA4MywgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIAorICAgIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCAxOTYsIDg1LCA4MCwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgwLCA4MywgCisgICAgNzMsIDc2LCA3OSwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA4NSwgODAsIDgyLCA3MywgNzEsIDcyLCAKKyAgICAyMTIsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCA3MiwgNzcsIDY1LCA3OCwgNzMsIDg5LCA2NSwgCiAgICAgMTI4LCA4NSwgODAsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4NSwgNzksIDc4LCAxMjgsIDg1LCAKICAgICA3OCwgNzgsIDEyOCwgODUsIDc4LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzUsIDc4LCA3OSwgODcsIAogICAgIDc4LCAxMjgsIDg1LCA3OCwgNzMsIDg2LCA2OSwgODIsIDgzLCA2NSwgMjA0LCA4NSwgNzgsIDczLCA4NCwgODksIDEyOCwgCkBAIC0zODgsMTAwICs0ODAsMTA0IEBACiAgICAgMTI4LCA4NSwgNzUsIDg1LCAxMjgsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA4NSwgNzUsIDY1LCAKICAgICA4MiwgNjUsIDEyOCwgODUsIDc1LCA2NSwgODIsIDE5MywgODUsIDc1LCAxMjgsIDg1LCA3MywgNzYsIDc2LCA2OSwgNjUsIAogICAgIDc4LCA3OCwgMTI4LCA4NSwgNzMsIDcxLCA3MiwgODUsIDIxMCwgODUsIDcxLCA2NSwgODIsIDczLCA4NCwgNzMsIDE5NSwgCi0gICAgODUsIDY5LCA4OSwgMTI4LCA4NSwgNjksIDY5LCAxMjgsIDg1LCA2OSwgNjUsIDEyOCwgODUsIDY4LCA4NSwgNzEsIDEyOCwgCi0gICAgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgODUsIDY4LCA2NSwgNjUsIDg0LCAKLSAgICAxMjgsIDg1LCA2OCwgMTI4LCA4NSwgMTk2LCA4NSwgNjcsIDEyOCwgODUsIDY2LCA4NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgCi0gICAgODUsIDY2LCA3MiwgNjUsIDg5LCA2NSwgODQsIDIwNywgODUsIDY2LCA2NSwgNjgsIDY1LCA3NywgNjUsIDEyOCwgODUsIDY2LCAKLSAgICAxMjgsIDg1LCA2NSwgODQsIDcyLCAxMjgsIDg1LCA2NSwgMTI4LCA4NSwgMTc4LCA4NSwgNDgsIDUyLCA1MCwgMTI4LCA4NSwgCi0gICAgNDgsIDUyLCA0OSwgMTI4LCA4NSwgNDgsIDUyLCA0OCwgMTI4LCA4NSwgNDgsIDUxLCA1NywgMTI4LCA4NSwgNDgsIDUxLCAKLSAgICA1NiwgMTI4LCA4NSwgNDgsIDUxLCA1NSwgMTI4LCA4NSwgNDgsIDUxLCA1NCwgMTI4LCA4NSwgNDgsIDUxLCA1MywgMTI4LCAKLSAgICA4NSwgNDgsIDUxLCA1MiwgMTI4LCA4NSwgNDgsIDUxLCA1MSwgMTI4LCA4NSwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODUsIAotICAgIDQ4LCA1MSwgNTAsIDEyOCwgODUsIDQ4LCA1MSwgNDksIDEyOCwgODUsIDQ4LCA1MSwgNDgsIDEyOCwgODUsIDQ4LCA1MCwgCi0gICAgNTcsIDY1LCAxMjgsIDg1LCA0OCwgNTAsIDU3LCAxMjgsIDg1LCA0OCwgNTAsIDU2LCAxMjgsIDg1LCA0OCwgNTAsIDU1LCAKLSAgICAxMjgsIDg1LCA0OCwgNTAsIDU0LCAxMjgsIDg1LCA0OCwgNTAsIDUzLCAxMjgsIDg1LCA0OCwgNTAsIDUyLCAxMjgsIDg1LCAKLSAgICA0OCwgNTAsIDUxLCA2NSwgMTI4LCA4NSwgNDgsIDUwLCA1MSwgMTI4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA4NSwgNDgsIAotICAgIDUwLCA0OSwgMTI4LCA4NSwgNDgsIDUwLCA0OCwgMTI4LCA4NSwgNDgsIDQ5LCA1NywgMTI4LCA4NSwgNDgsIDQ5LCA1NiwgCi0gICAgMTI4LCA4NSwgNDgsIDQ5LCA1NSwgMTI4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCA4NSwgCi0gICAgNDgsIDQ5LCA1MiwgMTI4LCA4NSwgNDgsIDQ5LCA1MSwgMTI4LCA4NSwgNDgsIDQ5LCA1MCwgMTI4LCA4NSwgNDgsIDQ5LCAKLSAgICA0OSwgMTI4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCA4NSwgNDgsIDQ4LCA1NywgMTI4LCA4NSwgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA4NSwgNDgsIDQ4LCA1NSwgMTI4LCA4NSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgODUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIAotICAgIDg1LCA0OCwgNDgsIDU0LCAxMjgsIDg1LCA0OCwgNDgsIDUzLCAxMjgsIDg1LCA0OCwgNDgsIDUyLCAxMjgsIDg1LCA0OCwgCi0gICAgNDgsIDUxLCAxMjgsIDg1LCA0OCwgNDgsIDUwLCAxMjgsIDg1LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA0NSwgNzMsIDQ1LCAKLSAgICA3MywgMTI4LCA4NSwgNDUsIDY5LCA3OSwgNDUsIDY5LCA4NSwgMTI4LCA4NCwgOTAsIDg1LCAxMjgsIDg0LCA5MCwgNzksIAotICAgIDY1LCAxMjgsIDg0LCA5MCwgNzksIDEyOCwgODQsIDkwLCA3MywgMjEwLCA4NCwgOTAsIDczLCAxMjgsIDg0LCA5MCwgNjksIAotICAgIDY5LCAxMjgsIDg0LCA5MCwgNjksIDEyOCwgODQsIDkwLCA2NSwgNjUsIDEyOCwgODQsIDkwLCA2NSwgMTI4LCA4NCwgOTAsIAotICAgIDEyOCwgODQsIDg5LCAyMTAsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgzLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MiwgODQsIAotICAgIDg5LCA4MCwgNjksIDQ1LCAxODEsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgwLCA4NCwgODksIDgwLCA2OSwgNDUsIDE3OSwgCi0gICAgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzgsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc3LCA4NCwgODksIDgwLCAxOTcsIDg0LCAKLSAgICA4OSwgNzksIDEyOCwgODQsIDg5LCA3MywgMTI4LCA4NCwgODksIDY5LCAxMjgsIDg0LCA4OSwgNjUsIDEyOCwgODQsIDg3LCAKLSAgICA3OSwgNzksIDEyOCwgODQsIDg3LCA3OSwgNDUsIDg3LCA2NSwgMjE3LCA4NCwgODcsIDc5LCA0NSwgODQsIDcyLCA3MywgODIsIAotICAgIDg0LCA4OSwgMTI4LCA4NCwgODcsIDc5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgODcsIDc5LCA0NSwgNzIsIDY5LCA2NSwgCi0gICAgNjgsIDY5LCAxOTYsIDg0LCA4NywgNzMsIDgzLCA4NCwgNjksIDE5NiwgODQsIDg3LCA3MywgNzMsIDEyOCwgODQsIDg3LCAKLSAgICA3MywgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDg3LCA3OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIAotICAgIDg5LCA0NSwgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4MywgNzMsIDg4LCAKLSAgICAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4MywgNjksIDg2LCA2OSwgNzgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIAotICAgIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDc4LCA3MywgNzgsIDY5LCAKLSAgICAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIAotICAgIDg5LCA0NSwgNzAsIDczLCA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCAKLSAgICA4NCwgMjAwLCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDg0LCA4NywgNjksIAotICAgIDc4LCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCAyMTcsIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDQ1LCA4NCwgCi0gICAgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCAKLSAgICAxOTcsIDg0LCA4NywgNjksIDEyOCwgODQsIDg3LCA2NSwgNjUsIDEyOCwgODQsIDg3LCA2NSwgMTI4LCA4NCwgODYsIDgyLCAKLSAgICA3MywgNjgsIDc5LCAxMjgsIDg0LCA4NiwgNzMsIDc3LCA2NSwgNjgsIDg1LCAyMTAsIDg0LCA4NSwgODgsIDEyOCwgODQsIAotICAgIDg1LCA4NSwgNzcsIDg1LCAxMjgsIDg0LCA4NSwgODQsIDg0LCA4OSwgMTI4LCA4NCwgODUsIDg0LCA2OSwgODksIDY1LCA4MywgCi0gICAgNjUsIDg0LCAxMjgsIDg0LCA4NSwgODQsIDEyOCwgODQsIDg1LCA4MiwgODgsIDEyOCwgODQsIDg1LCA4MiwgODUsIDEyOCwgCi0gICAgODQsIDg1LCA4MiwgODQsIDc2LCA2OSwgMTI4LCA4NCwgODUsIDgyLCA3OSwgNTAsIDEyOCwgODQsIDg1LCA4MiwgNzgsIDgzLCAKLSAgICA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4NCwgODUsIDgyLCA3OCwgNjksIDE5NiwgODQsIDg1LCA4MiwgMjA2LCA4NCwgODUsIAotICAgIDgyLCA2NiwgNjUsIDc4LCAxMjgsIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA4NCwgODUsIDc5LCA4NCwgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAxMjgsIDg0LCA4NSwgCi0gICAgNzgsIDc4LCA4OSwgMTI4LCA4NCwgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIDc3LCA2NSwgNjksIAotICAgIDEyOCwgODQsIDg1LCA3NywgMTI4LCA4NCwgODUsIDc2LCA3MywgODAsIDEyOCwgODQsIDg1LCA3NSwgODcsIDY5LCA3OCwgCi0gICAgODQsIDczLCA4MywgMTI4LCA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgNzEsIDgyLCA3MywgMjAzLCA4NCwgODUsIDcxLCAKLSAgICA1MCwgMTI4LCA4NCwgODUsIDcxLCAxNzgsIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIDY1LCA2OSwgODAsIAotICAgIDEyOCwgODQsIDg1LCA2NSwgNjksIDEyOCwgODQsIDIxMywgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNzEsIDEyOCwgODQsIAotICAgIDg0LCA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAKKyAgICA4NSwgNjksIDg5LCAxMjgsIDg1LCA2OSwgNzMsIDEyOCwgODUsIDY5LCA2OSwgMTI4LCA4NSwgNjksIDY1LCAxMjgsIDg1LCAKKyAgICA2OCwgODUsIDcxLCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCAxOTMsIAorICAgIDg1LCA2OCwgNjUsIDY1LCA4NCwgMTI4LCA4NSwgNjgsIDEyOCwgODUsIDE5NiwgODUsIDY3LCAxMjgsIDg1LCA2NiwgODUsIAorICAgIDcwLCA3MywgNzYsIDczLCAxMjgsIDg1LCA2NiwgNzIsIDY1LCA4OSwgNjUsIDg0LCAyMDcsIDg1LCA2NiwgNjUsIDY4LCA2NSwgCisgICAgNzcsIDY1LCAxMjgsIDg1LCA2NiwgMTI4LCA4NSwgNjUsIDg0LCA3MiwgMTI4LCA4NSwgNjUsIDc4LCA3MSwgMTI4LCA4NSwgCisgICAgNjUsIDEyOCwgODUsIDE3OCwgODUsIDQ4LCA1MiwgNTAsIDEyOCwgODUsIDQ4LCA1MiwgNDksIDEyOCwgODUsIDQ4LCA1MiwgCisgICAgNDgsIDEyOCwgODUsIDQ4LCA1MSwgNTcsIDEyOCwgODUsIDQ4LCA1MSwgNTYsIDEyOCwgODUsIDQ4LCA1MSwgNTUsIDEyOCwgCisgICAgODUsIDQ4LCA1MSwgNTQsIDEyOCwgODUsIDQ4LCA1MSwgNTMsIDEyOCwgODUsIDQ4LCA1MSwgNTIsIDEyOCwgODUsIDQ4LCAKKyAgICA1MSwgNTEsIDEyOCwgODUsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg1LCA0OCwgNTEsIDUwLCAxMjgsIDg1LCA0OCwgNTEsIAorICAgIDQ5LCAxMjgsIDg1LCA0OCwgNTEsIDQ4LCAxMjgsIDg1LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA4NSwgNDgsIDUwLCA1NywgCisgICAgMTI4LCA4NSwgNDgsIDUwLCA1NiwgMTI4LCA4NSwgNDgsIDUwLCA1NSwgMTI4LCA4NSwgNDgsIDUwLCA1NCwgMTI4LCA4NSwgCisgICAgNDgsIDUwLCA1MywgMTI4LCA4NSwgNDgsIDUwLCA1MiwgMTI4LCA4NSwgNDgsIDUwLCA1MSwgNjUsIDEyOCwgODUsIDQ4LCAKKyAgICA1MCwgNTEsIDEyOCwgODUsIDQ4LCA1MCwgNTAsIDEyOCwgODUsIDQ4LCA1MCwgNDksIDEyOCwgODUsIDQ4LCA1MCwgNDgsIAorICAgIDEyOCwgODUsIDQ4LCA0OSwgNTcsIDEyOCwgODUsIDQ4LCA0OSwgNTYsIDEyOCwgODUsIDQ4LCA0OSwgNTUsIDEyOCwgODUsIAorICAgIDQ4LCA0OSwgNTQsIDEyOCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgODUsIDQ4LCA0OSwgNTIsIDEyOCwgODUsIDQ4LCA0OSwgCisgICAgNTEsIDEyOCwgODUsIDQ4LCA0OSwgNTAsIDEyOCwgODUsIDQ4LCA0OSwgNDksIDEyOCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgCisgICAgODUsIDQ4LCA0OCwgNTcsIDEyOCwgODUsIDQ4LCA0OCwgNTYsIDEyOCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgODUsIDQ4LCAKKyAgICA0OCwgNTQsIDY2LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4NSwgNDgsIDQ4LCA1NCwgMTI4LCA4NSwgNDgsIAorICAgIDQ4LCA1MywgMTI4LCA4NSwgNDgsIDQ4LCA1MiwgMTI4LCA4NSwgNDgsIDQ4LCA1MSwgMTI4LCA4NSwgNDgsIDQ4LCA1MCwgCisgICAgMTI4LCA4NSwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgNDUsIDczLCA0NSwgNzMsIDEyOCwgODUsIDQ1LCA2OSwgNzksIDQ1LCAKKyAgICA2OSwgODUsIDEyOCwgODUsIDQ1LCA2NiwgODIsIDc0LCA3MSwgODUsIDEyOCwgODQsIDkwLCA4NSwgMTI4LCA4NCwgOTAsIAorICAgIDc5LCA2NSwgMTI4LCA4NCwgOTAsIDc5LCAxMjgsIDg0LCA5MCwgNzMsIDIxMCwgODQsIDkwLCA3MywgMTI4LCA4NCwgOTAsIAorICAgIDY5LCA2OSwgMTI4LCA4NCwgOTAsIDY5LCAxMjgsIDg0LCA5MCwgNjUsIDY1LCAxMjgsIDg0LCA5MCwgNjUsIDEyOCwgODQsIAorICAgIDkwLCAxMjgsIDg0LCA4OSwgMjEwLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MywgODQsIDg5LCA4MCwgNjksIDQ1LCAxODIsIAorICAgIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgxLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MCwgODQsIDg5LCA4MCwgNjksIDQ1LCAKKyAgICAxNzksIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc4LCA4NCwgODksIDgwLCA2OSwgNDUsIDE3NywgODQsIDg5LCA4MCwgMTk3LCAKKyAgICA4NCwgODksIDc5LCAxMjgsIDg0LCA4OSwgNzMsIDEyOCwgODQsIDg5LCA2OSwgMTI4LCA4NCwgODksIDY1LCAxMjgsIDg0LCAKKyAgICA4NywgNzksIDc5LCAxMjgsIDg0LCA4NywgNzksIDQ1LCA4NywgNjUsIDIxNywgODQsIDg3LCA3OSwgNDUsIDg0LCA3MiwgNzMsIAorICAgIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA3OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDg3LCA3OSwgNDUsIDcyLCA2OSwgCisgICAgNjUsIDY4LCA2OSwgMTk2LCA4NCwgODcsIDc5LCA0NSwgNjksIDIwNSwgODQsIDg3LCA3MywgODMsIDg0LCA2OSwgMTk2LCAKKyAgICA4NCwgODcsIDczLCA3MywgMTI4LCA4NCwgODcsIDczLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIAorICAgIDc5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgCisgICAgNzgsIDg0LCA4OSwgNDUsIDgzLCA3MywgODgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIAorICAgIDY5LCA3OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgCisgICAgODQsIDg5LCA0NSwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIAorICAgIDgyLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgCisgICAgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIDg0LCAyMDAsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIAorICAgIDcxLCA3MiwgODQsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgCisgICAgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIAorICAgIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDE5NywgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgCisgICAgMTI4LCA4NCwgODcsIDY1LCAxMjgsIDg0LCA4NiwgODIsIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCAKKyAgICA2OCwgODUsIDIxMCwgODQsIDg1LCA4OCwgMTI4LCA4NCwgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NSwgMTI4LCAKKyAgICA4NCwgODUsIDg0LCA4NCwgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4NCwgODUsIAorICAgIDg0LCAxMjgsIDg0LCA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIDg0LCA4NSwgODIsIDg0LCA3NiwgCisgICAgNjksIDEyOCwgODQsIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgODQsIDczLCA3NiwgNjksIAorICAgIDEyOCwgODQsIDg1LCA4MiwgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNjYsIDY1LCA3OCwgCisgICAgMTI4LCA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIDEyOCwgODQsIDg1LCA3OSwgCisgICAgODQsIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIDc4LCA3OCwgODksIDEyOCwgCisgICAgODQsIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjUsIDY5LCAxMjgsIDg0LCA4NSwgNzcsIAorICAgIDEyOCwgODQsIDg1LCA3NiwgNzMsIDgwLCAxMjgsIDg0LCA4NSwgNzUsIDg3LCA2OSwgNzgsIDg0LCA3MywgODMsIDEyOCwgCisgICAgODQsIDg1LCA3NSwgMTI4LCA4NCwgODUsIDcxLCA4MiwgNzMsIDIwMywgODQsIDg1LCA3MSwgNTAsIDEyOCwgODQsIDg1LCAKKyAgICA3MSwgMTc4LCA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDg0LCA4NSwgNjUsIAorICAgIDY5LCAxMjgsIDg0LCAyMTMsIDg0LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDcxLCAxMjgsIAorICAgIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAxMjgsIDg0LCA4NCwgODQsIDcyLCA2NSwgCiAgICAgMTI4LCA4NCwgODQsIDg0LCA2NSwgMTI4LCA4NCwgODQsIDgzLCA4NSwgMTI4LCA4NCwgODQsIDgzLCA3OSwgMTI4LCA4NCwgCiAgICAgODQsIDgzLCA3MywgMTI4LCA4NCwgODQsIDgzLCA2OSwgNjksIDEyOCwgODQsIDg0LCA4MywgNjksIDEyOCwgODQsIDg0LCAKLSAgICA4MywgNjUsIDEyOCwgODQsIDg0LCA3MywgMTI4LCA4NCwgODQsIDcyLCA4NywgNjksIDEyOCwgODQsIDg0LCA3MiwgODUsIAotICAgIDEyOCwgODQsIDg0LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDczLCAxMjgsIAotICAgIDg0LCA4NCwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2NSwgNjUsIDEyOCwgCi0gICAgODQsIDg0LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgMjAwLCAKLSAgICA4NCwgODQsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNjUsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgODQsIDY1LCA2NSwgMTI4LCA4NCwgODQsIDUwLCAxMjgsIDg0LCA4MywgCi0gICAgODcsIDY5LCAxMjgsIDg0LCA4MywgODcsIDY1LCAxMjgsIDg0LCA4MywgODYsIDEyOCwgODQsIDgzLCA4MywgNjksIDEyOCwgCi0gICAgODQsIDgzLCA3MiwgODUsIDcxLCA4MywgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDg0LCA4MywgNzIsIDc5LCAKLSAgICA3OSwgMjAzLCA4NCwgODMsIDcyLCA2OSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNjksIDcxLCAxMjgsIDg0LCA4MywgNzIsIAotICAgIDY5LCAxOTksIDg0LCA4MywgNzIsIDY5LCAxMjgsIDg0LCA4MywgNzIsIDY1LCAxMjgsIDg0LCA4MywgNjksIDgyLCA2OSwgCi0gICAgMTI4LCA4NCwgODMsIDY1LCA2OCwgNzMsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDIwMSwgODQsIDgzLCA2NSwgNjUsIDY4LCAKLSAgICA3MywgODksIDEyOCwgODQsIDgzLCA2NSwgNjUsIDEyOCwgODQsIDgzLCAxOTMsIDg0LCA4MiwgODksIDY2LCA3NiwgNzMsIAotICAgIDc5LCAyMDYsIDg0LCA4MiwgODUsIDg0LCA3MiwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNzUsIDEyOCwgODQsIDgyLCA4NSwgCi0gICAgNzgsIDY3LCA2NSwgODQsIDY5LCAxOTYsIDg0LCA4MiwgODUsIDc3LCA4MCwgNjksIDg0LCAxMjgsIDg0LCA4MiwgODUsIDY5LCAKLSAgICAxMjgsIDg0LCA4MiwgODUsIDY3LCA3NSwgMTI4LCA4NCwgODIsIDc5LCA4MCwgNzMsIDY3LCA2NSwgMjA0LCA4NCwgODIsIAotICAgIDc5LCA4MCwgNzIsIDg5LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAKLSAgICA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3OCwgCi0gICAgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIAotICAgIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCi0gICAgMjA2LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCAKLSAgICA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA4NSwgODMsIDEyOCwgODQsIDgyLCA3OSwgNzUsIDg1LCA4NCwgNjUsIDgzLCA4NCwgCi0gICAgMjAxLCA4NCwgODIsIDc5LCA2OSwgOTAsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDg0LCA4MiwgNzMsIDg1LCA3NywgODAsIDcyLCAKLSAgICAxMjgsIDg0LCA4MiwgNzMsIDg0LCA3OSwgMjExLCA4NCwgODIsIDczLCA4NCwgNzMsIDc3LCA3OSwgODIsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODQsIDgyLCA3MywgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDg0LCA4MiwgNzMsIDgzLCA2OSwgNzcsIDY5LCAKLSAgICAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3OSwgNjgsIDEyOCwgODQsIDgyLCA3MywgODAsIDc2LCA3MywgMTI4LCA4NCwgODIsIAotICAgIDczLCA4MCwgNzYsIDE5NywgODQsIDgyLCA3MywgNzksIDIwNiwgODQsIDgyLCA3MywgNzMsIDgzLCA2NSwgODAsIDEyOCwgCi0gICAgODQsIDgyLCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA4NCwgODIsIDczLCA3MSwgODIsIDY1LCAyMDUsIDg0LCAKLSAgICA4MiwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgCi0gICAgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc2LCA3MywgNjUsIDg0LCAxOTcsIDg0LCA4MiwgNzMsIDY4LCA2OSwgNzgsIDg0LCAKLSAgICAxMjgsIDg0LCA4MiwgNzMsIDY4LCA2OSwgNzgsIDIxMiwgODQsIDgyLCA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIAotICAgIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDY5LCAKLSAgICA0NSwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzIsIDY5LCA2NSwgCi0gICAgNjgsIDY5LCAxOTYsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCAKLSAgICA3NiwgMTk3LCA4NCwgODIsIDczLCA2NSwgMTI4LCA4NCwgODIsIDczLCAxMjgsIDg0LCA4MiwgNjksIDgzLCA3MywgNzYsIAotICAgIDc2LCA3OSwgMTI4LCA4NCwgODIsIDY5LCA3OCwgNjgsIDEyOCwgODQsIDgyLCA2OSwgNzgsIDE5NiwgODQsIDgyLCA2OSwgCi0gICAgNzcsIDc5LCA3NiwgNzksIDQ1LCA1MSwgMTI4LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUwLCAxMjgsIDg0LCAKLSAgICA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNDksIDEyOCwgODQsIDgyLCA2OSwgNjksIDEyOCwgODQsIDgyLCA2OSwgCi0gICAgMTk3LCA4NCwgODIsIDY5LCA2NSwgNjgsIDczLCA3OCwgNzEsIDEyOCwgODQsIDgyLCA2NSwgODksIDEyOCwgODQsIDgyLCAKLSAgICA2NSwgODAsIDY5LCA5MCwgNzMsIDg1LCA3NywgMTI4LCA4NCwgODIsIDY1LCA3OCwgODMsIDg2LCA2OSwgODIsIDgzLCA2NSwgCi0gICAgMjA0LCA4NCwgODIsIDY1LCA3OCwgODMsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgNjUsIDc4LCAKKyAgICA4MywgNjUsIDEyOCwgODQsIDg0LCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MywgNzMsIDEyOCwgODQsIDg0LCA3MywgMTI4LCAKKyAgICA4NCwgODQsIDcyLCA4NywgNjksIDEyOCwgODQsIDg0LCA3MiwgODUsIDEyOCwgODQsIDg0LCA3MiwgNzksIDc5LCAxMjgsIAorICAgIDg0LCA4NCwgNzIsIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgCisgICAgODQsIDcyLCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2NSwgNjUsIDEyOCwgODQsIDg0LCA3MiwgMTI4LCA4NCwgODQsIDY5LCAKKyAgICA3MiwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgMjAwLCA4NCwgODQsIDY5LCA3MiwgMTI4LCA4NCwgODQsIAorICAgIDY5LCAyMDAsIDg0LCA4NCwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgCisgICAgODQsIDY1LCA4NSwgMTI4LCA4NCwgODQsIDY1LCA3MywgMTI4LCA4NCwgODQsIDY1LCA2NSwgMTI4LCA4NCwgODQsIDUwLCAKKyAgICAxMjgsIDg0LCA4MywgODcsIDY5LCAxMjgsIDg0LCA4MywgODcsIDY1LCAxMjgsIDg0LCA4MywgODYsIDEyOCwgODQsIDgzLCAKKyAgICA4MywgNjksIDEyOCwgODQsIDgzLCA4MywgNjUsIDEyOCwgODQsIDgzLCA3MiwgODUsIDcxLCA4MywgMTI4LCA4NCwgODMsIAorICAgIDcyLCA3OSwgNzksIDc1LCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgMjAzLCA4NCwgODMsIDcyLCA2OSwgODMsIDEyOCwgCisgICAgODQsIDgzLCA3MiwgNjksIDcxLCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxOTksIDg0LCA4MywgNzIsIDY5LCAxMjgsIDg0LCAKKyAgICA4MywgNzIsIDY1LCAxMjgsIDg0LCA4MywgNjksIDgyLCA2OSwgMTI4LCA4NCwgODMsIDY1LCA2OCwgNzMsIDEyOCwgODQsIAorICAgIDgzLCA2NSwgNjgsIDIwMSwgODQsIDgzLCA2NSwgNjUsIDY4LCA3MywgODksIDEyOCwgODQsIDgzLCA2NSwgNjUsIDEyOCwgCisgICAgODQsIDgzLCAxOTMsIDg0LCA4MiwgODksIDY2LCA3NiwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgODUsIDg0LCA3MiwgMTI4LCAKKyAgICA4NCwgODIsIDg1LCA3OCwgNzUsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDY3LCA2NSwgODQsIDY5LCAxOTYsIDg0LCA4MiwgODUsIAorICAgIDc3LCA4MCwgNjksIDg0LCAxMjgsIDg0LCA4MiwgODUsIDY5LCAxMjgsIDg0LCA4MiwgODUsIDY3LCA3NSwgMTI4LCA4NCwgCisgICAgODIsIDc5LCA4MCwgNzMsIDY3LCA2NSwgMjA0LCA4NCwgODIsIDc5LCA4MCwgNzIsIDg5LCAxMjgsIDg0LCA4MiwgNzksIDc3LCAKKyAgICA3MywgNzUsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCisgICAgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODAsIAorICAgIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKKyAgICA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgMjA2LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzYsIAorICAgIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA4NSwgODMsIDEyOCwgCisgICAgODQsIDgyLCA3OSwgNzUsIDg1LCA4NCwgNjUsIDgzLCA4NCwgMjAxLCA4NCwgODIsIDc5LCA2OSwgOTAsIDY5LCA3OCwgNzMsIAorICAgIDY1LCAyMDYsIDg0LCA4MiwgNzMsIDg1LCA3NywgODAsIDcyLCAxMjgsIDg0LCA4MiwgNzMsIDg0LCA3OSwgMjExLCA4NCwgCisgICAgODIsIDczLCA4NCwgNzMsIDc3LCA3OSwgODIsIDczLCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgODMsIDczLCA3NywgNzksIAorICAgIDg1LCAxMjgsIDg0LCA4MiwgNzMsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3OSwgNjgsIDEyOCwgCisgICAgODQsIDgyLCA3MywgODAsIDc2LCA3MywgMTI4LCA4NCwgODIsIDczLCA4MCwgNzYsIDE5NywgODQsIDgyLCA3MywgNzksIAorICAgIDIwNiwgODQsIDgyLCA3MywgNzMsIDgzLCA2NSwgODAsIDEyOCwgODQsIDgyLCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgCisgICAgMjExLCA4NCwgODIsIDczLCA3MSwgODIsIDY1LCAyMDUsIDg0LCA4MiwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIAorICAgIDEyOCwgODQsIDgyLCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc2LCA3MywgCisgICAgNjUsIDg0LCAxOTcsIDg0LCA4MiwgNzMsIDY4LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA4MiwgNzMsIDY4LCA2OSwgNzgsIAorICAgIDIxMiwgODQsIDgyLCA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgCisgICAgNjUsIDIxMCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODQsIDgyLCAKKyAgICA3MywgNjUsIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg0LCA4MiwgNzMsIDY1LCA3OCwgCisgICAgNzEsIDc2LCA2OSwgMTI4LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgMTk3LCA4NCwgODIsIDczLCA2NSwgMTI4LCAKKyAgICA4NCwgODIsIDczLCAxMjgsIDg0LCA4MiwgNjksIDgzLCA3MywgNzYsIDc2LCA3OSwgMTI4LCA4NCwgODIsIDY5LCA3OCwgNjgsIAorICAgIDEyOCwgODQsIDgyLCA2OSwgNzgsIDE5NiwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA1MSwgMTI4LCA4NCwgCisgICAgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUwLCAxMjgsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNDksIAorICAgIDEyOCwgODQsIDgyLCA2OSwgNjksIDEyOCwgODQsIDgyLCA2OSwgMTk3LCA4NCwgODIsIDY5LCA2NSwgNjgsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgODQsIDgyLCA2NSwgODksIDEyOCwgODQsIDgyLCA2NSwgODAsIDY5LCA5MCwgNzMsIDg1LCA3NywgMTI4LCAKKyAgICA4NCwgODIsIDY1LCA3OCwgODMsIDg2LCA2OSwgODIsIDgzLCA2NSwgMjA0LCA4NCwgODIsIDY1LCA3OCwgODMsIDgwLCA3OSwgCisgICAgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgNjUsIDc4LCA4MywgNzcsIDczLCAyMTIsIDg0LCA4MiwgNjUsIDc4LCAKICAgICA4MywgNzcsIDczLCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIDgyLCA2NSwgNzgsIDgzLCA3NywgNzMsIDgzLCA4MywgCiAgICAgNzMsIDc5LCAyMDYsIDg0LCA4MiwgNjUsIDc3LCA4NywgNjUsIDg5LCAxMjgsIDg0LCA4MiwgNjUsIDc3LCAxMjgsIDg0LCAKICAgICA4MiwgNjUsIDIwNSwgODQsIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDg0LCA4MiwgNjUsIDczLCAyMDYsIDg0LCA4MiwgNjUsIApAQCAtNDkzLDE2ICs1ODksMTcgQEAKICAgICA3OSwgODIsIDY3LCA4NSwgNzYsIDg1LCAyMTEsIDg0LCA3OSwgODIsIDY3LCA3MiwgMTI4LCA4NCwgNzksIDgxLCAxMjgsIAogICAgIDg0LCA3OSwgODAsIDY2LCA2NSwgODIsIDEyOCwgODQsIDc5LCA4MCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgCiAgICAgODQsIDc5LCA4MCwgMTI4LCA4NCwgNzksIDIwOCwgODQsIDc5LCA3OSwgODQsIDcyLCAxMjgsIDg0LCA3OSwgNzksIDc4LCAKLSAgICAxMjgsIDg0LCA3OSwgNzksIDEyOCwgODQsIDc5LCA3OCwgNzksIDgzLCAxMjgsIDg0LCA3OSwgNzgsIDcxLCA4NSwgNjksIAotICAgIDEyOCwgODQsIDc5LCA3OCwgNzEsIDg1LCAxOTcsIDg0LCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgCi0gICAgNTQsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MywgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUyLCAxMjgsIDg0LCAKLSAgICA3OSwgNzgsIDY5LCA0NSwgNTEsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIAotICAgIDQ5LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3OSwgNzgsIDY1LCAyMDQsIDg0LCA3OSwgNzcsIDgwLCA3MywgCi0gICAgMTI4LCA4NCwgNzksIDc3LCA2NSwgODQsIDc5LCAxMjgsIDg0LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDc5LCAKLSAgICA3NSwgODksIDIwNywgODQsIDc5LCA3MywgNzYsIDY5LCA4NCwgMTI4LCA4NCwgNzksIDcxLCA2OSwgODQsIDcyLCA2OSwgODIsIAotICAgIDEyOCwgODQsIDc5LCA2OCwgMjA3LCA4NCwgNzksIDY1LCA3OCwgNjgsIDY1LCA3NSwgNzIsIDczLCA2NSwgODQsIDEyOCwgCi0gICAgODQsIDc5LCA2NSwgMTI4LCA4NCwgNzgsIDEyOCwgODQsIDc2LCA4NiwgMTI4LCA4NCwgNzYsIDg1LCAxMjgsIDg0LCA3NiwgCi0gICAgNzksIDEyOCwgODQsIDc2LCA3MywgMTI4LCA4NCwgNzYsIDcyLCA4NywgNjksIDEyOCwgODQsIDc2LCA3MiwgODUsIDEyOCwgCisgICAgMTI4LCA4NCwgNzksIDc4LCA3OSwgODMsIDEyOCwgODQsIDc5LCA3OCwgNzEsIDg1LCA2OSwgMTI4LCA4NCwgNzksIDc4LCAKKyAgICA3MSwgODUsIDE5NywgODQsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1NiwgMTI4LCA4NCwgNzksIAorICAgIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTQsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MywgCisgICAgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUyLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTEsIDEyOCwgODQsIDc5LCAKKyAgICA3OCwgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIAorICAgIDg0LCA3OSwgNzgsIDY1LCAyMDQsIDg0LCA3OSwgNzcsIDgwLCA3MywgMTI4LCA4NCwgNzksIDc3LCA2NSwgODQsIDc5LCAKKyAgICAxMjgsIDg0LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDc5LCA3NSwgODksIDIwNywgODQsIDc5LCA3MywgNzYsIAorICAgIDY5LCA4NCwgMTI4LCA4NCwgNzksIDcxLCA2OSwgODQsIDcyLCA2OSwgODIsIDEyOCwgODQsIDc5LCA2OCwgMjA3LCA4NCwgCisgICAgNzksIDY1LCA3OCwgNjgsIDY1LCA3NSwgNzIsIDczLCA2NSwgODQsIDEyOCwgODQsIDc5LCA2NSwgMTI4LCA4NCwgNzgsIAorICAgIDEyOCwgODQsIDc2LCA4NiwgMTI4LCA4NCwgNzYsIDg1LCAxMjgsIDg0LCA3NiwgNzksIDEyOCwgODQsIDc2LCA3MywgMTI4LCAKKyAgICA4NCwgNzYsIDcyLCA4OSwgNjUsIDEyOCwgODQsIDc2LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDg1LCAxMjgsIAogICAgIDg0LCA3NiwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgNzYsIDcyLCA3OSwgMTI4LCA4NCwgNzYsIDcyLCA3MywgMTI4LCA4NCwgCiAgICAgNzYsIDcyLCA2OSwgNjksIDEyOCwgODQsIDc2LCA3MiwgNjksIDEyOCwgODQsIDc2LCA3MiwgNjUsIDEyOCwgODQsIDc2LCAKICAgICA2OSwgNjksIDEyOCwgODQsIDc2LCA2NSwgMTI4LCA4NCwgNzQsIDY5LCAxMjgsIDg0LCA3MywgODgsIDEyOCwgODQsIDczLCAKQEAgLTUxMywxMjEgKzYxMCwxMjMgQEAKICAgICA4NCwgNzMsIDgwLCA2OSwgNzIsIDY1LCAxMjgsIDg0LCA3MywgODAsIDEyOCwgODQsIDczLCAyMDgsIDg0LCA3MywgNzgsIAogICAgIDg5LCAxMjgsIDg0LCA3MywgNzgsIDIxNywgODQsIDczLCA3OCwgNzgsIDY5LCAxMjgsIDg0LCA3MywgNzgsIDY3LCA4NCwgCiAgICAgODUsIDgyLCA2OSwgMTI4LCA4NCwgNzMsIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4NCwgNzMsIDc3LCA2OSwgODMsIAotICAgIDEyOCwgODQsIDczLCA3NywgNjksIDIxMCwgODQsIDczLCA3NywgNjksIDEyOCwgODQsIDczLCA3NiwgNjgsIDY5LCAxMjgsIAotICAgIDg0LCA3MywgNzYsIDY4LCAxOTcsIDg0LCA3MywgNzYsIDEyOCwgODQsIDczLCAyMDQsIDg0LCA3MywgNzUsIDY5LCA4NSwgCi0gICAgODQsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCAKLSAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIAotICAgIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCAKLSAgICA4NCwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzUsIDczLCA4OSwgCi0gICAgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDg0LCAKLSAgICA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgCi0gICAgODUsIDg0LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgMjEyLCA4NCwgNzMsIDczLCAxMjgsIDg0LCA3MywgNzEsIDcyLCAKLSAgICA4NCwgNzYsIDg5LCA0NSwgNjcsIDc2LCA3OSwgODMsIDY5LCAxOTYsIDg0LCA3MywgNzEsIDcyLCAyMTIsIDg0LCA3MywgNzEsIAotICAgIDY5LCA4MiwgMTI4LCA4NCwgNzMsIDcxLCA2OSwgMjEwLCA4NCwgNzMsIDcwLCA3MywgNzgsIDY1LCA3MSwgMjAwLCA4NCwgCi0gICAgNzMsIDY5LCA4OCwgMTI4LCA4NCwgNzMsIDY5LCA4MCwgMTI4LCA4NCwgNzMsIDE5NywgODQsIDczLCA2NywgNzUsIDY5LCAKLSAgICA4NCwgMTI4LCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA4NCwgNzMsIDY3LCAyMDMsIDg0LCA3MywgNjUsIDgyLCA2NSwgMTI4LCAKLSAgICA4NCwgNzIsIDkwLCAxMjgsIDg0LCA3MiwgODksIDc5LCA3OSwgMjA1LCA4NCwgNzIsIDg3LCA3OSwgNzksIDEyOCwgODQsIAotICAgIDcyLCA4NywgNzksIDEyOCwgODQsIDcyLCA4NywgNzMsIDczLCAxMjgsIDg0LCA3MiwgODcsIDczLCAxMjgsIDg0LCA3MiwgCi0gICAgODcsIDY5LCA2OSwgMTI4LCA4NCwgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODQsIDcyLCA4NywgNjUsIDEyOCwgODQsIDcyLCAKLSAgICA4NSwgODIsIDIxMSwgODQsIDcyLCA4NSwgODIsIDczLCA4MywgNjUsIDIxOCwgODQsIDcyLCA4NSwgNzgsIDcxLCAxMjgsIAotICAgIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDgyLCA4MywgODQsIDc5LCA4MiwgNzcsIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCAKLSAgICA2OSwgODIsIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgMjEwLCA4NCwgNzIsIDg1LCA3NywgNjYsIDIxMSwgODQsIAotICAgIDcyLCA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgODQsIDcyLCA4MiwgCi0gICAgNzksIDg1LCA3MSwgMjAwLCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCAKLSAgICA3MiwgODIsIDY5LCA2OSwgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA3NiwgCi0gICAgNzMsIDc4LCAxOTcsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDE5NiwgODQsIDcyLCA4MiwgNjksIDY1LCA2OCwgMTI4LCAKLSAgICA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDIxMSwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIAotICAgIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCAxOTYsIDg0LCA3MiwgNzksIDg1LCA3MSwgNzIsIDIxMiwgODQsIDcyLCA3OSwgCi0gICAgODUsIDEyOCwgODQsIDcyLCA3OSwgODIsIDc4LCAxMjgsIDg0LCA3MiwgNzksIDgyLCAyMDYsIDg0LCA3MiwgNzksIDc4LCAKLSAgICA3MSwgMTI4LCA4NCwgNzIsIDc5LCA2NSwgMTI4LCA4NCwgNzIsIDIwNywgODQsIDcyLCA3MywgODUsIDg0LCA3MiwgMTI4LCAKLSAgICA4NCwgNzIsIDczLCA4NCwgNjUsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgNDUsIDgzLCA2OSwgNjcsIDc5LCA3OCwgCi0gICAgMTk2LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIAotICAgIDIxNywgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCAKLSAgICAyMDYsIDg0LCA3MiwgNzMsIDgyLCA2OCwgODMsIDEyOCwgODQsIDcyLCA3MywgODIsIDY4LCAyMTEsIDg0LCA3MiwgNzMsIAotICAgIDgyLCA2OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgMTk2LCA4NCwgNzIsIDczLCAyMDYsIDg0LCA3MiwgNzMsIDczLCAxMjgsIAotICAgIDg0LCA3MiwgNzMsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCAyMDAsIDg0LCA3MiwgNjksIDg5LCAKLSAgICAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNjksIAotICAgIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgMTkzLCA4NCwgNzIsIDY5LCA4MywgODAsIDczLCA2NSwgMjA2LCA4NCwgCi0gICAgNzIsIDY5LCA4MywgNjksIDc5LCA4MywgMTI4LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCAyMTEsIDg0LCA3MiwgNjksIAotICAgIDIxMSwgODQsIDcyLCA2OSwgODIsIDc3LCA3OSwgNjgsIDg5LCA3OCwgNjUsIDc3LCA3MywgNjcsIDEyOCwgODQsIDcyLCA2OSwgCi0gICAgODIsIDY5LCA3MCwgNzksIDgyLCA2OSwgMTI4LCA4NCwgNzIsIDY5LCA4MiwgMTk3LCA4NCwgNzIsIDY5LCAyMDYsIDg0LCAKLSAgICA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA4MywgNzcsIDc5LCAyMTEsIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA4NCwgNzIsIAotICAgIDY5LCA3NywgMTkzLCA4NCwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCAyMDAsIDg0LCA3MiwgMTk3LCA4NCwgNzIsIAotICAgIDY1LCA4NywgMTI4LCA4NCwgNzIsIDY1LCA3OCwgODQsIDcyLCA2NSwgNzUsIDcyLCA2NSwgODQsIDEyOCwgODQsIDcyLCA2NSwgCi0gICAgNzgsIDc4LCA2NSwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCAyMDYsIDg0LCA3MiwgNjUsIDc2LCAKLSAgICAxMjgsIDg0LCA3MiwgNjUsIDIwNCwgODQsIDcyLCA2NSwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCA2NSwgNzgsIAotICAgIDE5MywgODQsIDcyLCA2NSwgNjUsIDc2LCA4NSwgMTI4LCA4NCwgNzIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg0LCA2OSwgCi0gICAgODgsIDg0LCAxMjgsIDg0LCA2OSwgODgsIDEyOCwgODQsIDY5LCA4NiwgNzMsIDgyLCAxMjgsIDg0LCA2OSwgODUsIDg0LCAKLSAgICA2OSwgODUsIDg4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg3LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgODQsIAotICAgIDEyOCwgODQsIDY5LCA4NSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4NCwgNjksIDg1LCA2NSwgCi0gICAgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNzMsIDc3LCA3OSwgODUsIAotICAgIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgwLCA3NiwgCi0gICAgNzMsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA2OSwgODQsIDcyLCAKLSAgICAxMjgsIDg0LCA2OSwgODQsIDIwMCwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzksIDIxMSwgODQsIDY5LCA4NCwgNjUsIAotICAgIDgyLCA4NCwgNzMsIDc3LCA3OSwgODIsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA4NCwgMTI4LCA4NCwgNjksIDIxMiwgCi0gICAgODQsIDY5LCA4MywgODMsIDY5LCA4MiwgNjUsIDEyOCwgODQsIDY5LCA4MywgODMsIDY5LCA4MiwgMTkzLCA4NCwgNjksIDgzLCAKLSAgICA4MywgNjUsIDgyLCA3OSwgMjA2LCA4NCwgNjksIDgzLCAyMDAsIDg0LCA2OSwgODIsIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIAotICAgIDgyLCAxMjgsIDg0LCA2OSwgODAsIDEyOCwgODQsIDY5LCA3OCwgODUsIDg0LCA3OSwgMTI4LCA4NCwgNjksIDc4LCA4NSwgCi0gICAgMTI4LCA4NCwgNjksIDc4LCAyMTMsIDg0LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4NCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgCi0gICAgNjksIDc4LCAyMTEsIDg0LCA2OSwgNzgsIDc4LCA3MywgMjExLCA4NCwgNjksIDc4LCA3MSwgMTk3LCA4NCwgNjksIDc4LCAKLSAgICA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgNjksIDc4LCAxMjgsIDg0LCA2OSwgMjA2LCA4NCwgNjksIAotICAgIDc3LCA4MCwgODUsIDIxMSwgODQsIDY5LCA3NiwgODUsIDEyOCwgODQsIDY5LCA3NiwgNzksIDg1LCAyMTEsIDg0LCA2OSwgCi0gICAgNzYsIDc2LCA2OSwgMjEwLCA4NCwgNjksIDc2LCA3MywgODMsIDcyLCAxOTMsIDg0LCA2OSwgNzYsIDY5LCA4NiwgNzMsIDgzLCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIAotICAgIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDE5NywgODQsIDY5LCA3NiwgCi0gICAgNjksIDczLCA2NSwgMTI4LCA4NCwgNjksIDczLCA4NywgODMsIDEyOCwgODQsIDY5LCA3MSwgNjksIDcyLCAxMjgsIDg0LCAKLSAgICA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIDY5LCA2OCwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNjksIAotICAgIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgCi0gICAgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNzgsIDc1LCA2OSwgMTk2LCA4NCwgNjksIAotICAgIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCA2NiwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDQ1LCAKLSAgICA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIDg0LCA2OSwgNDUsIDg1LCAxMjgsIDg0LCA2NywgNzIsIAotICAgIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAKLSAgICAxMjgsIDg0LCA2NywgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCAxMjgsIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgCi0gICAgODQsIDY1LCA4OCwgNzMsIDEyOCwgODQsIDY1LCA4OCwgMTI4LCA4NCwgNjUsIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAKLSAgICAyMTIsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDg0LCA2NSwgODcsIDEyOCwgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIAotICAgIDczLCAxMjgsIDg0LCA2NSwgODYsIDEyOCwgODQsIDY1LCAyMTQsIDg0LCA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIAotICAgIDY1LCA4NSwgMTI4LCA4NCwgNjUsIDIxMywgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgNzYsIDEyOCwgODQsIDY1LCA4NCwgCi0gICAgODcsIDY5LCA2OSwgMjA0LCA4NCwgNjUsIDg0LCA4NCwgNzksIDc5LCA2OSwgMTk2LCA4NCwgNjUsIDg0LCAxMjgsIDg0LCAKLSAgICA2NSwgODIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg0LCA2NSwgODIsIAotICAgIDg0LCA2NSwgODIsIDEyOCwgODQsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgODQsIDY1LCA4MCwgCi0gICAgMTk3LCA4NCwgNjUsIDgwLCAxMjgsIDg0LCA2NSwgNzksIDEyOCwgODQsIDY1LCA3OCwgNzgsIDY5LCAxOTYsIDg0LCA2NSwgCi0gICAgNzgsIDcxLCA2OSwgODIsIDczLCA3OCwgNjksIDEyOCwgODQsIDY1LCA3OCwgMTk5LCA4NCwgNjUsIDc4LCA2NSwgNjYsIDY1LCAKLSAgICA4NCwgMTkzLCA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgNzcsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NywgMTI4LCAKLSAgICA4NCwgNjUsIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAyMDQsIDg0LCA2NSwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODQsIAotICAgIDY1LCA3NiwgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDg0LCA2NSwgNzYsIDY5LCA3OCwgCi0gICAgMjEyLCA4NCwgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgNzUsIDY5LCAxMjgsIDg0LCAKLSAgICA2NSwgNzUsIDUyLCAxMjgsIDg0LCA2NSwgNzUsIDEyOCwgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgODQsIAotICAgIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIDIxMSwgODQsIDY1LCA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCA4NCwgCi0gICAgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCA4NCwgNjUsIDcxLCA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIDcxLCAKLSAgICA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIDEyOCwgODQsIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCAKLSAgICA4NCwgNjUsIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIAotICAgIDgzLCAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCA2NSwgMTk0LCA4NCwgNjUsIAotICAgIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDY1LCA3NywgMTI4LCA4NCwgCi0gICAgNjUsIDY1LCA3NiwgODUsIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgNjUsIDcwLCAxMjgsIDg0LCAKLSAgICA2NSwgNTAsIDEyOCwgODQsIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNDgsIDUxLCA1NCwgMTI4LCA4NCwgNDgsIAotICAgIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgCi0gICAgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDQ5LCAKLSAgICAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgNTAsIDU3LCAxMjgsIDg0LCA0OCwgNTAsIDU2LCAxMjgsIDg0LCAKLSAgICA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAxMjgsIDg0LCA0OCwgNTAsIDUzLCAxMjgsIDg0LCA0OCwgNTAsIAotICAgIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCA0OCwgNTAsIDUwLCAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAxMjgsIAotICAgIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIDU3LCAxMjgsIDg0LCA0OCwgNDksIDU2LCAxMjgsIDg0LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIDQ5LCAKLSAgICA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgNDgsIDQ5LCA1MSwgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgMTI4LCAKLSAgICA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDEyOCwgODQsIDQ4LCA0OSwgNDgsIDEyOCwgODQsIAotICAgIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4NCwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDEyOCwgODQsIDQ4LCAKLSAgICA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgODQsIDQ4LCA0OCwgNTIsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIAotICAgIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCA0OCwgNDgsIDUwLCAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAxMjgsIAotICAgIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIDgzLCA5MCwgOTAsIDEyOCwgODMsIDkwLCA4NywgNzEsIDEyOCwgCi0gICAgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgMTI4LCA4MywgOTAsIDc5LCAxMjgsIDgzLCA5MCwgNzMsIDEyOCwgCi0gICAgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgMTI4LCA4MywgOTAsIDY1LCA2NSwgMTI4LCA4MywgOTAsIDY1LCAKLSAgICAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIDgzLCA4OSwgODQsIDEyOCwgODMsIDg5LCA4MiwgODgsIDEyOCwgCi0gICAgODMsIDg5LCA4MiwgNzcsIDY1LCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCAKLSAgICA4MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgODMsIDg5LCA4MiwgMTI4LCA4MywgODksIDgwLCAxMjgsIDgzLCA4OSwgNzksIAotICAgIDg1LCA4NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjksIDg2LCA3NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjgsIDY5LCA4MywgCi0gICAgNzcsIDc5LCAyMTEsIDgzLCA4OSwgNzgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAyMTEsIDgzLCA4OSwgNzgsIDY1LCAKLSAgICA3MSwgNzcsIDE5MywgODMsIDg5LCA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgODksIAorICAgIDEyOCwgODQsIDczLCA3NywgNjksIDIxMCwgODQsIDczLCA3NywgNjksIDEyOCwgODQsIDczLCA3NiwgNjgsIDE5NywgODQsIAorICAgIDczLCA3NiwgMTI4LCA4NCwgNzMsIDIwNCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgODQsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIAorICAgIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg0LCA3MywgCisgICAgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAKKyAgICAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIAorICAgIDY5LCA4NSwgODQsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDY3LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCAyMTIsIDg0LCA3MywgNzEsIDcyLCA4NCwgNzYsIDg5LCA0NSwgNjcsIDc2LCA3OSwgODMsIDY5LCAxOTYsIDg0LCA3MywgCisgICAgNzEsIDcyLCAyMTIsIDg0LCA3MywgNzEsIDY5LCA4MiwgMTI4LCA4NCwgNzMsIDcxLCA2OSwgMjEwLCA4NCwgNzMsIDcwLCAKKyAgICA3MywgNzgsIDY1LCA3MSwgMjAwLCA4NCwgNzMsIDY5LCA4OCwgMTI4LCA4NCwgNzMsIDY5LCA4MCwgMTI4LCA4NCwgNzMsIAorICAgIDE5NywgODQsIDczLCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA4NCwgNzMsIDY3LCAyMDMsIAorICAgIDg0LCA3MywgNjUsIDgyLCA2NSwgMTI4LCA4NCwgNzIsIDkwLCAxMjgsIDg0LCA3MiwgODksIDc5LCA3OSwgMjA1LCA4NCwgCisgICAgNzIsIDg3LCA3OSwgNzksIDEyOCwgODQsIDcyLCA4NywgNzksIDEyOCwgODQsIDcyLCA4NywgNzMsIDczLCAxMjgsIDg0LCAKKyAgICA3MiwgODcsIDczLCAxMjgsIDg0LCA3MiwgODcsIDY5LCA2OSwgMTI4LCA4NCwgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODQsIAorICAgIDcyLCA4NywgNjUsIDEyOCwgODQsIDcyLCA4NSwgODIsIDIxMSwgODQsIDcyLCA4NSwgODIsIDczLCA4MywgNjUsIDIxOCwgCisgICAgODQsIDcyLCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDgyLCA4MywgODQsIDc5LCA4MiwgNzcsIAorICAgIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgMjEwLCA4NCwgCisgICAgNzIsIDg1LCA3NywgNjYsIDIxMSwgODQsIDcyLCA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgODQsIDcyLCA4MiwgNzksIDg1LCAKKyAgICA3MSwgNzIsIDEyOCwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgMjAwLCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4NCwgNzIsIAorICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA4NCwgCisgICAgNzIsIDgyLCA2OSwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDY5LCAyMDUsIDg0LCAKKyAgICA3MiwgODIsIDY5LCA2OSwgNDUsIDE5NiwgODQsIDcyLCA4MiwgNjksIDY1LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIAorICAgIDY1LCA3OCwgNjgsIDIxMSwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgCisgICAgNjUsIDc4LCAxOTYsIDg0LCA3MiwgNzksIDg1LCA3MSwgNzIsIDIxMiwgODQsIDcyLCA3OSwgODUsIDEyOCwgODQsIDcyLCAKKyAgICA3OSwgODIsIDc4LCAxMjgsIDg0LCA3MiwgNzksIDgyLCAyMDYsIDg0LCA3MiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzIsIAorICAgIDc5LCA2NSwgMTI4LCA4NCwgNzIsIDIwNywgODQsIDcyLCA3MywgODUsIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDczLCA4NCwgCisgICAgNjUsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgNDUsIDgzLCA2OSwgNjcsIDc5LCA3OCwgMTk2LCA4NCwgNzIsIDczLCAKKyAgICA4MiwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDIxNywgODQsIDcyLCA3MywgODIsIAorICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCAyMDYsIDg0LCA3MiwgNzMsIDgyLCA2OCwgCisgICAgODMsIDEyOCwgODQsIDcyLCA3MywgODIsIDY4LCAyMTEsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMTI4LCA4NCwgNzIsIDczLCAKKyAgICA4MiwgMTk2LCA4NCwgNzIsIDczLCAyMDYsIDg0LCA3MiwgNzMsIDczLCAxMjgsIDg0LCA3MiwgNzMsIDcxLCA3MiwgMTI4LCAKKyAgICA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCAyMDAsIDg0LCA3MiwgNjksIDg5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgNjksIAorICAgIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNjksIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgCisgICAgMTkzLCA4NCwgNzIsIDY5LCA4MywgODAsIDczLCA2NSwgMjA2LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCA4MywgMTI4LCAKKyAgICA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCAyMTEsIDg0LCA3MiwgNjksIDIxMSwgODQsIDcyLCA2OSwgODIsIDc3LCA3OSwgNjgsIAorICAgIDg5LCA3OCwgNjUsIDc3LCA3MywgNjcsIDEyOCwgODQsIDcyLCA2OSwgODIsIDY5LCA3MCwgNzksIDgyLCA2OSwgMTI4LCA4NCwgCisgICAgNzIsIDY5LCA4MiwgMTk3LCA4NCwgNzIsIDY5LCAyMDYsIDg0LCA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA4MywgNzcsIDc5LCAKKyAgICAyMTEsIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA3NywgMTkzLCA4NCwgNzIsIDY5LCA3MiwgMTI4LCAKKyAgICA4NCwgNzIsIDY5LCAyMDAsIDg0LCA3MiwgMTk3LCA4NCwgNzIsIDY1LCA4NywgMTI4LCA4NCwgNzIsIDY1LCA3OCwgODQsIAorICAgIDcyLCA2NSwgNzUsIDcyLCA2NSwgODQsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgCisgICAgMTI4LCA4NCwgNzIsIDY1LCAyMDYsIDg0LCA3MiwgNjUsIDc2LCAxMjgsIDg0LCA3MiwgNjUsIDIwNCwgODQsIDcyLCA2NSwgCisgICAgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCA2NSwgNzgsIDE5MywgODQsIDcyLCA2NSwgNjUsIDc2LCA4NSwgMTI4LCAKKyAgICA4NCwgNzIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg0LCA2OSwgODgsIDg0LCAxMjgsIDg0LCA2OSwgODgsIDEyOCwgODQsIAorICAgIDY5LCA4NiwgNzMsIDgyLCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgCisgICAgODUsIDg3LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDEyOCwgODQsIDY5LCA4NSwgNzgsIDEyOCwgODQsIDY5LCAKKyAgICA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDEyOCwgODQsIAorICAgIDY5LCA4NCwgODIsIDY1LCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNjksIDc3LCAKKyAgICA2OSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA3MCwgNzksIAorICAgIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgODQsIDIwMCwgODQsIDY5LCA4NCwgCisgICAgNjUsIDgyLCA4NCwgNzksIDIxMSwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzMsIDc3LCA3OSwgODIsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODQsIDY5LCA4NCwgMTI4LCA4NCwgNjksIDIxMiwgODQsIDY5LCA4MywgODMsIDY5LCA4MiwgNjUsIDEyOCwgODQsIAorICAgIDY5LCA4MywgODMsIDY5LCA4MiwgMTkzLCA4NCwgNjksIDgzLCA4MywgNjUsIDgyLCA3OSwgMjA2LCA4NCwgNjksIDgzLCAKKyAgICAyMDAsIDg0LCA2OSwgODIsIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDg0LCA2OSwgODAsIDEyOCwgODQsIAorICAgIDY5LCA3OCwgODUsIDg0LCA3OSwgMTI4LCA4NCwgNjksIDc4LCA4NSwgMTI4LCA4NCwgNjksIDc4LCAyMTMsIDg0LCA2OSwgCisgICAgNzgsIDg0LCA3MiwgMTI4LCA4NCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjksIDc4LCAyMTEsIDg0LCA2OSwgNzgsIDc4LCAKKyAgICA3MywgMjExLCA4NCwgNjksIDc4LCA3MSwgMTk3LCA4NCwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgCisgICAgMTI4LCA4NCwgNjksIDc4LCAxMjgsIDg0LCA2OSwgMjA2LCA4NCwgNjksIDc3LCA4MCwgODUsIDIxMSwgODQsIDY5LCA3NiwgCisgICAgODUsIDEyOCwgODQsIDY5LCA3NiwgNzksIDg1LCAyMTEsIDg0LCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4NCwgNjksIDc2LCAKKyAgICA3MywgODMsIDcyLCAxOTMsIDg0LCA2OSwgNzYsIDY5LCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgNzYsIAorICAgIDY5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4NCwgCisgICAgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDE5NywgODQsIDY5LCA3NiwgNjksIDczLCA2NSwgMTI4LCA4NCwgNjksIDc2LCAKKyAgICA2OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODQsIDY5LCA3MywgODcsIDgzLCAxMjgsIDg0LCA2OSwgNzEsIDY5LCA3MiwgCisgICAgMTI4LCA4NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgODQsIDY5LCAxOTcsIDg0LCA2OSwgNjgsIDg1LCA3OCwgNzEsIDEyOCwgCisgICAgODQsIDY5LCA2NSwgODIsIDIxMSwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDgwLCA3OSwgNzUsIAorICAgIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDc4LCA3NSwgNjksIDE5NiwgCisgICAgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgNjYsIDY1LCA4MiwgNjYsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIAorICAgIDgyLCA0NSwgNzksIDcwLCAxOTgsIDg0LCA2OSwgNjUsIDY3LCA4NSwgMjA4LCA4NCwgNjksIDQ1LCA4NSwgMTI4LCA4NCwgCisgICAgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCAKKyAgICAyMDAsIDg0LCA2NywgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgMTI4LCAKKyAgICA4NCwgMTk1LCA4NCwgNjUsIDg5LCAxMjgsIDg0LCA2NSwgODgsIDczLCAxMjgsIDg0LCA2NSwgODgsIDEyOCwgODQsIDY1LCAKKyAgICA4NywgNjksIDc2LCA3NiwgNjksIDc3LCA2OSwgMjEyLCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA4NCwgNjUsIDg3LCAxMjgsIAorICAgIDg0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4NCwgNjUsIDg2LCAxMjgsIDg0LCA2NSwgMjE0LCA4NCwgCisgICAgNjUsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgMjEzLCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCAKKyAgICA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCAyMDQsIDg0LCA2NSwgODQsIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIAorICAgIDEyOCwgODQsIDY1LCA4MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgCisgICAgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA4NCwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgODAsIDY5LCA4MiwgMTI4LCAKKyAgICA4NCwgNjUsIDgwLCAxOTcsIDg0LCA2NSwgODAsIDEyOCwgODQsIDY1LCA3OSwgMTI4LCA4NCwgNjUsIDc4LCA3OCwgNjksIAorICAgIDE5NiwgODQsIDY1LCA3OCwgNzEsIDY5LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgNjUsIDc4LCAxOTksIDg0LCA2NSwgCisgICAgNzgsIDY1LCA2NiwgNjUsIDg0LCAxOTMsIDg0LCA2NSwgNzgsIDEyOCwgODQsIDY1LCA3NywgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA4NCwgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNzYsIDc2LCAxMjgsIDg0LCA2NSwgNzYsIDIwNCwgODQsIDY1LCA3NiwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDc2LCA3MywgNzgsIDE5OSwgODQsIDY1LCA3NiwgNjksIDc4LCA4NCwgODMsIDEyOCwgCisgICAgODQsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDg0LCA2NSwgNzUsIDgyLCAyMDEsIDg0LCA2NSwgNzUsIDcyLCA2NSwgNzYsIDc2LCAKKyAgICA4NSwgODMsIDEyOCwgODQsIDY1LCA3NSwgNjksIDEyOCwgODQsIDY1LCA3NSwgNTIsIDEyOCwgODQsIDY1LCA3NSwgMTI4LCAKKyAgICA4NCwgNjUsIDczLCA4MywgODksIDc5LCA4NSwgMTI4LCA4NCwgNjUsIDczLCA3NiwgNzYsIDY5LCA4MywgMjExLCA4NCwgNjUsIAorICAgIDczLCA3NiwgMTI4LCA4NCwgNjUsIDczLCAyMDQsIDg0LCA2NSwgNzIsIDEyOCwgODQsIDY1LCAyMDAsIDg0LCA2NSwgNzEsIAorICAgIDY2LCA2NSwgNzgsIDg3LCAxOTMsIDg0LCA2NSwgNzEsIDY1LCA3NiwgNzksIDE5OSwgODQsIDY1LCA3MSwgMTI4LCA4NCwgCisgICAgNjUsIDY5LCAyMDYsIDg0LCA2NSwgNjcsIDc1LCAxMjgsIDg0LCA2NSwgNjcsIDIwMywgODQsIDY1LCA2NiwgODUsIDc2LCAKKyAgICA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NCwgNjUsIAorICAgIDY2LCA4MywgMTI4LCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODQsIDY1LCA2NiwgMTI4LCA4NCwgNjUsIDE5NCwgODQsIAorICAgIDY1LCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODQsIDY1LCA2NSwgODEsIDEyOCwgODQsIDY1LCA2NSwgNzcsIDEyOCwgCisgICAgODQsIDY1LCA2NSwgNzYsIDg1LCA3NCwgMTkzLCA4NCwgNjUsIDY1LCA3MywgMTI4LCA4NCwgNjUsIDY1LCA3MCwgMTI4LCAKKyAgICA4NCwgNjUsIDUwLCAxMjgsIDg0LCA2NSwgNDUsIDgyLCA3OSwgNzYsIDEyOCwgODQsIDY1LCA0NSwgNTAsIDEyOCwgODQsIAorICAgIDQ4LCA1MSwgNTQsIDEyOCwgODQsIDQ4LCA1MSwgNTMsIDEyOCwgODQsIDQ4LCA1MSwgNTIsIDEyOCwgODQsIDQ4LCA1MSwgCisgICAgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIDUxLCAxMjgsIDg0LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCAKKyAgICA1MCwgMTI4LCA4NCwgNDgsIDUxLCA0OSwgMTI4LCA4NCwgNDgsIDUxLCA0OCwgMTI4LCA4NCwgNDgsIDUwLCA1NywgMTI4LCAKKyAgICA4NCwgNDgsIDUwLCA1NiwgMTI4LCA4NCwgNDgsIDUwLCA1NSwgMTI4LCA4NCwgNDgsIDUwLCA1NCwgMTI4LCA4NCwgNDgsIAorICAgIDUwLCA1MywgMTI4LCA4NCwgNDgsIDUwLCA1MiwgMTI4LCA4NCwgNDgsIDUwLCA1MSwgMTI4LCA4NCwgNDgsIDUwLCA1MCwgCisgICAgMTI4LCA4NCwgNDgsIDUwLCA0OSwgMTI4LCA4NCwgNDgsIDUwLCA0OCwgMTI4LCA4NCwgNDgsIDQ5LCA1NywgMTI4LCA4NCwgCisgICAgNDgsIDQ5LCA1NiwgMTI4LCA4NCwgNDgsIDQ5LCA1NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODQsIDQ4LCAKKyAgICA0OSwgNTQsIDEyOCwgODQsIDQ4LCA0OSwgNTMsIDEyOCwgODQsIDQ4LCA0OSwgNTIsIDEyOCwgODQsIDQ4LCA0OSwgNTEsIAorICAgIDEyOCwgODQsIDQ4LCA0OSwgNTAsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg0LCA0OCwgNDksIDQ5LCAxMjgsIAorICAgIDg0LCA0OCwgNDksIDQ4LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgMTI4LCA4NCwgCisgICAgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg0LCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDg0LCA0OCwgNDgsIDU0LCAxMjgsIDg0LCA0OCwgNDgsIDUzLCAxMjgsIDg0LCA0OCwgNDgsIAorICAgIDUyLCAxMjgsIDg0LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgMTI4LCA4NCwgNDgsIDQ4LCA1MCwgCisgICAgMTI4LCA4NCwgNDgsIDQ4LCA0OSwgMTI4LCA4NCwgNDUsIDgzLCA3MiwgNzMsIDgyLCA4NCwgMTI4LCA4MywgOTAsIDkwLCAKKyAgICAxMjgsIDgzLCA5MCwgODcsIDcxLCAxMjgsIDgzLCA5MCwgODcsIDY1LCAxMjgsIDgzLCA5MCwgODUsIDEyOCwgODMsIDkwLCAKKyAgICA3OSwgMTI4LCA4MywgOTAsIDczLCAxMjgsIDgzLCA5MCwgNjksIDY5LCAxMjgsIDgzLCA5MCwgNjksIDEyOCwgODMsIDkwLCAKKyAgICA2NSwgNjUsIDEyOCwgODMsIDkwLCA2NSwgMTI4LCA4MywgOTAsIDEyOCwgODMsIDg5LCA4OCwgMTI4LCA4MywgODksIDg0LCAKKyAgICAxMjgsIDgzLCA4OSwgODMsIDg0LCA2OSwgMjA1LCA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIAorICAgIDg0LCA3MywgNzUsIDczLCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgMTI4LCA4MywgODksIDgyLCA3MywgNzgsIDcxLCA2OSwgCisgICAgMTI4LCA4MywgODksIDgyLCAxMjgsIDgzLCA4OSwgODAsIDEyOCwgODMsIDg5LCA3OSwgODUsIDg3LCA2NSwgMTI4LCA4MywgCisgICAgODksIDc4LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OCwgNjksIDgzLCA3NywgNzksIDIxMSwgODMsIDg5LCAKKyAgICA3OCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDIxMSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgMTkzLCA4MywgODksIAorICAgIDc4LCA2NSwgNzAsIDczLCAxMjgsIDgzLCA4OSwgNzgsIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDg5LCAKICAgICAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA4MywgCiAgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU2LCAKICAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTQsIApAQCAtNjU0LDIyMyArNzUzLDIyOCBAQAogICAgIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgCiAgICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNDksIAogICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCi0gICAgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAyMDEsIDgzLCA4OSwgNjUsIDEyOCwgODMsIDg5LCAxMjgsIDgzLCA4NywgCi0gICAgOTAsIDEyOCwgODMsIDg3LCA4NSwgNzgsIDE5OSwgODMsIDg3LCA3OSwgODIsIDY4LCA4MywgMTI4LCA4MywgODcsIDc5LCAKLSAgICA4MiwgNjgsIDEyOCwgODMsIDg3LCA3OSwgNzksIDEyOCwgODMsIDg3LCA3OSwgMTI4LCA4MywgODcsIDczLCA4MiwgMjA0LCAKLSAgICA4MywgODcsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA3MywgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIAotICAgIDg3LCA3MywgNzMsIDEyOCwgODMsIDg3LCA3MywgMTI4LCA4MywgODcsIDcxLCAxMjgsIDgzLCA4NywgNjksIDY5LCA4NCwgCi0gICAgMTI4LCA4MywgODcsIDY5LCA2OSwgMjEyLCA4MywgODcsIDY5LCA2NSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjUsIDIxMiwgCi0gICAgODMsIDg3LCA2NSwgODMsIDIwMCwgODMsIDg3LCA2NSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNjUsIDY1LCAKLSAgICAxMjgsIDgzLCA4NywgMTI4LCA4MywgODYsIDY1LCA4MywgODQsIDIwMSwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgNjUsIAotICAgIDEyOCwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgMTkzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4NSwgODUsIDEyOCwgODMsIAotICAgIDg1LCA4NCwgMTI4LCA4MywgODUsIDgzLCA4MCwgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIDgzLCA4NSwgODMsIDcyLCA3MywgCi0gICAgMTI4LCA4MywgODUsIDgyLCA4OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDg1LCAKLSAgICA4MiwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODMsIDg1LCA4MiwgNzAsIDY5LCA4MiwgMTI4LCA4MywgODUsIDgyLCA3MCwgNjUsIAotICAgIDY3LCAxOTcsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDgzLCA4NSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA4MiwgCi0gICAgNTcsIDEyOCwgODMsIDg1LCA4MiwgMTI4LCA4MywgODUsIDIxMCwgODMsIDg1LCA4MCwgODIsIDY1LCA3NiwgNzMsIDc4LCAKLSAgICA2OSwgNjUsIDIxMCwgODMsIDg1LCA4MCwgNjksIDgyLCA4NiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIAotICAgIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDIxMiwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgCi0gICAgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MywgNzcsIDgwLCA3OSwgODMsIDY5LCAxOTYsIDgzLCAKLSAgICA4NSwgODAsIDY5LCA4MiwgNzAsIDczLCA4OCwgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDIxMCwgODMsIDg1LCA4MCwgCi0gICAgMTI4LCA4MywgODUsIDc5LCA4OCwgMTI4LCA4MywgODUsIDc5LCA4MCwgMTI4LCA4MywgODUsIDc5LCAxMjgsIDgzLCA4NSwgCi0gICAgNzgsIDgzLCA2OSwgMjEyLCA4MywgODUsIDc4LCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDc4LCA4MiwgNzMsIDgzLCAKLSAgICAxOTcsIDgzLCA4NSwgNzgsIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIDgzLCA4NSwgNzgsIDcxLCAxMjgsIAotICAgIDgzLCA4NSwgNzgsIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjksIDgzLCAKLSAgICAxOTcsIDgzLCA4NSwgNzgsIDEyOCwgODMsIDg1LCAyMDYsIDgzLCA4NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg1LCAKLSAgICA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgODMsIAotICAgIDg1LCA3NywgNjUsIDgzLCA3MiwgMTI4LCA4MywgODUsIDc3LCAxMjgsIDgzLCA4NSwgNzYsIDcwLCA4NSwgODIsIDEyOCwgCi0gICAgODMsIDg1LCA3NSwgODUsIDc4LCAxMjgsIDgzLCA4NSwgNzUsIDg1LCAyMDYsIDgzLCA4NSwgNzUsIDg1LCAxMjgsIDgzLCAKLSAgICA4NSwgNzUsIDIxMywgODMsIDg1LCA3MywgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDgzLCA4NSwgNzMsIDg0LCAxMjgsIAotICAgIDgzLCA4NSwgNzIsIDg1LCA4MiwgMTI4LCA4MywgODUsIDY5LCAxMjgsIDgzLCA4NSwgNjgsIDUwLCAxMjgsIDgzLCA4NSwgCi0gICAgNjgsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDgzLCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAKLSAgICAyMTEsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDE5NiwgODMsIAotICAgIDg1LCA2NiwgODUsIDc4LCA3MywgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIAotICAgIDg0LCA4NSwgODQsIDE5NywgODMsIDg1LCA2NiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgNjksIDIxMiwgCi0gICAgODMsIDg1LCA2NiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgNjYsIDgwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIAotICAgIDgzLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCAKLSAgICA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA3NCwgNzksIDczLCAKLSAgICA3OCwgNjksIDE5NiwgODMsIDg1LCA2NiwgNzQsIDY5LCA2NywgODQsIDEyOCwgODMsIDg1LCA2NiwgNzMsIDg0LCA3OSwgCi0gICAgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgODAsIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIAotICAgIDIwOCwgODMsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4MywgODUsIDY1LCA2OSwgCi0gICAgMTI4LCA4MywgODUsIDY1LCAxMjgsIDgzLCAyMTMsIDgzLCA4NCwgODcsIDY1LCAxMjgsIDgzLCA4NCwgODUsIDY4LCA4OSwgCi0gICAgMTI4LCA4MywgODQsIDg1LCA2NywgNzUsIDQ1LCA3OSwgODUsIDIxMiwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgODMsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMjExLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTcsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU2LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NSwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTQsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUzLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTEsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDksIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgCi0gICAgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA4MCwgNjksIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNzMsIDc1LCA2OSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY4LCA2OSwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3NiwgMjE3LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgNjksIAotICAgIDE5NiwgODMsIDg0LCA4MiwgNjksIDgzLCAyMTEsIDgzLCA4NCwgODIsIDY5LCA3OCwgNzEsIDg0LCA3MiwgMTI4LCA4MywgCi0gICAgODQsIDgyLCA2OSwgNjUsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg3LCA2NiwgNjksIDgyLCA4MiwgODksIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgCi0gICAgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAyMDUsIDgzLCA4NCwgODIsIDY1LCA4NCwgNzMsIDY1LCAyMDYsIDgzLCAKLSAgICA4NCwgODIsIDY1LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgCi0gICAgODMsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA4NCwgODIsIDY1LCA3MywgNzAsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNjUsIDcxLCA3MSwgNzMsIDgzLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgODQsIDc5LCA4NiwgCi0gICAgNjksIDEyOCwgODMsIDg0LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4NywgNjUsIDg0LCA2NywgNzIsIAotICAgIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNjUsIDcxLCA2OSwgCi0gICAgMTI4LCA4MywgODQsIDc5LCA4MCwgMTI4LCA4MywgODQsIDc5LCAyMDgsIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA4MywgCi0gICAgODQsIDc5LCA2NywgNzUsIDEyOCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA4MywgODQsIDczLCA3NiwgMjA0LCAKLSAgICA4MywgODQsIDczLCA3NiwgMTk3LCA4MywgODQsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA4NCwgNjksIDgwLCAxMjgsIAotICAgIDgzLCA4NCwgNjksIDc3LCAxMjgsIDgzLCA4NCwgNjksIDIwNSwgODMsIDg0LCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgCi0gICAgODMsIDg0LCA2OSwgNjUsIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCAyMDUsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDg1LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDIxMSwgODMsIAotICAgIDg0LCA2NSwgODUsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDg1LCAxOTcsIDgzLCA4NCwgNjUsIDg0LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAyMTIsIDgzLCAKLSAgICA4NCwgNjUsIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDgzLCA4NCwgNjUsIDgyLCA3NSwgCi0gICAgMTI4LCA4MywgODQsIDY1LCA4MiwgMTI4LCA4MywgODQsIDY1LCAyMTAsIDgzLCA4NCwgNjUsIDc4LCA2OCwgODMsIDg0LCAKLSAgICA3MywgNzYsIDc2LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCA2OCwgNjUsIDgyLCAxOTYsIDgzLCA4NCwgNjUsIDc4LCA2OCwgCi0gICAgMTI4LCA4MywgODQsIDY1LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3NiwgNzYsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCAKLSAgICA2NSwgNzAsIDcwLCAxMjgsIDgzLCA4NCwgNjUsIDcwLCAxOTgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgCi0gICAgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzMsIDgzLCA4MywgNzMsIDc3LCA3OSwgMTI4LCA4MywgODQsIDUwLCAKLSAgICAxMjgsIDgzLCA4MywgODksIDg4LCAxMjgsIDgzLCA4MywgODksIDg0LCAxMjgsIDgzLCA4MywgODksIDgyLCA4OCwgMTI4LCAKLSAgICA4MywgODMsIDg5LCA4MiwgMTI4LCA4MywgODMsIDg5LCA4MCwgMTI4LCA4MywgODMsIDg5LCAxMjgsIDgzLCA4MywgODUsIAotICAgIDg4LCAxMjgsIDgzLCA4MywgODUsIDg0LCAxMjgsIDgzLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4MywgNzksIDg4LCAxMjgsIAotICAgIDgzLCA4MywgNzksIDg0LCAxMjgsIDgzLCA4MywgNzksIDgwLCAxMjgsIDgzLCA4MywgNzksIDEyOCwgODMsIDgzLCA3MywgCi0gICAgODgsIDEyOCwgODMsIDgzLCA3MywgODQsIDEyOCwgODMsIDgzLCA3MywgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDg4LCAKLSAgICAxMjgsIDgzLCA4MywgNzMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgMTI4LCA4MywgODMsIDczLCAxMjgsIDgzLCAKLSAgICA4MywgNzIsIDY5LCAxMjgsIDgzLCA4MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNjksIAotICAgIDY5LCAxMjgsIDgzLCA4MywgNjUsIDg4LCAxMjgsIDgzLCA4MywgNjUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDgwLCAxMjgsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgCi0gICAgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzIsIAotICAgIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCAKLSAgICA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgCi0gICAgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIAotICAgIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgCi0gICAgODMsIDY1LCA3OCwgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc3LCA3MywgNjksIAotICAgIDg1LCA3NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MiwgNzMsIDY5LCA4NSwgNzIsIAotICAgIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NSwgODIsIAotICAgIDY1LCA2OSwgNjUsIDEyOCwgODMsIDgzLCA2NSwgNjUsIDEyOCwgODMsIDgzLCA2NSwgMTI4LCA4MywgODIsIDEyOCwgODMsIAotICAgIDgxLCA4NSwgNzMsIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgODIsIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCA3MSwgCi0gICAgNzEsIDc2LCAxOTcsIDgzLCA4MSwgODUsIDY1LCAyMTIsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDgzLCAxMjgsIDgzLCAKLSAgICA4MSwgODUsIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDEyOCwgODMsIDgwLCA4NywgNjUsIAotICAgIDEyOCwgODMsIDgwLCA4NSwgNzgsIDcxLCAyMTEsIDgzLCA4MCwgODIsIDc5LCA4NSwgODQsIDEyOCwgODMsIDgwLCA4MiwgCi0gICAgNzMsIDc4LCA3MSwgODMsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODAsIDgyLCA2OSwgNjcsIDcyLCAKLSAgICA3MSwgNjksIDgzLCA2NSwgNzgsIDE5OSwgODMsIDgwLCA3OSwgODUsIDg0LCA3MywgNzgsIDE5OSwgODMsIDgwLCA3OSwgODQsIAotICAgIDEyOCwgODMsIDgwLCA3OSwgNzksIDc4LCAxMjgsIDgzLCA4MCwgNzYsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCA4MywgCi0gICAgODAsIDc2LCA2NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODMsIDgwLCA3MywgODIsIDczLCA4NCwgODUsIDIxMSwgODMsIDgwLCAKLSAgICA3MywgODIsIDczLCA4NCwgMTI4LCA4MywgODAsIDczLCA4MiwgNzMsIDIxMiwgODMsIDgwLCA3MywgODIsIDY1LCA3OCwgODQsIAotICAgIDEyOCwgODMsIDgwLCA3MywgODIsIDY1LCA3NiwgMTI4LCA4MywgODAsIDczLCA4MiwgNjUsIDIwNCwgODMsIDgwLCA3MywgCi0gICAgNjgsIDY5LCA4MiwgMjE3LCA4MywgODAsIDczLCA2NywgNjksIDEyOCwgODMsIDgwLCA3MiwgNjksIDgyLCA3MywgNjcsIDY1LCAKLSAgICAyMDQsIDgzLCA4MCwgNjksIDgzLCA3NywgNzMsIDc2LCAyMDcsIDgzLCA4MCwgNjksIDY5LCA2OCwgNjYsIDc5LCA2NSwgODQsIAotICAgIDEyOCwgODMsIDgwLCA2OSwgNjksIDY3LCA3MiwgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDIwMCwgODMsIDgwLCA2OSwgCi0gICAgNjcsIDczLCA2NSwgNzYsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAKLSAgICAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDIxMCwgODMsIDgwLCA2OSwgNjUsIDc1LCA0NSwgNzgsIDc5LCA0NSwgNjksIAotICAgIDg2LCA3MywgMjA0LCA4MywgODAsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDczLCA3OCwgCi0gICAgMTk5LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDgyLCAKLSAgICAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCAxMjgsIDgzLCA4MCwgNjUsIDcxLCA3MiwgNjksIDg0LCA4NCwgNzMsIAotICAgIDEyOCwgODMsIDgwLCA2NSwgNjgsIDY5LCA4MywgMTI4LCA4MywgODAsIDY1LCA2OCwgMTk3LCA4MywgODAsIDY1LCA2NywgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDgzLCA4MCwgMTI4LCA4MywgNzksIDg5LCAxMjgsIDgzLCA3OSwgCi0gICAgODcsIDczLCA3NiwgMjA3LCA4MywgNzksIDg3LCAxMjgsIDgzLCA3OSwgODUsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDgzLCAKLSAgICA3OSwgODUsIDg0LCA3MiwgNDUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMjE3LCA4MywgNzksIDg1LCA4NCwgMjAwLCA4MywgNzksIAotICAgIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgzLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MywgNzksIDg1LCA3OCwgMTk2LCA4MywgCi0gICAgNzksIDg1LCA3OCwgNjUsIDgwLCAxMjgsIDgzLCA3OSwgODUsIDEyOCwgODMsIDc5LCA4MywgMTI4LCA4MywgNzksIDgxLCAKLSAgICAxMjgsIDgzLCA3OSwgNzksIDIwNiwgODMsIDc5LCA3OSwgMTI4LCA4MywgNzksIDc4LCA3NCwgNjUsIDc3LCAxMjgsIDgzLCAKLSAgICA3OSwgNzgsIDcxLCAxMjgsIDgzLCA3OSwgNzgsIDEyOCwgODMsIDc5LCA3NywgMTI4LCA4MywgNzksIDc2LCA3MywgNjgsIAotICAgIDg1LCA4MywgMTI4LCA4MywgNzksIDc2LCA3MywgNjgsIDg1LCAyMTEsIDgzLCA3OSwgNzEsIDY4LCA3MywgNjUsIDIwNiwgCi0gICAgODMsIDc5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY5LCA0NSwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIAotICAgIDc5LCA3MCwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA3OSwgNzAsIDIxMiwgODMsIDc5LCAxOTgsIDgzLCA3OSwgCi0gICAgNjcsIDczLCA2OSwgODQsIDg5LCAxMjgsIDgzLCA3OSwgNjcsIDY3LCA2OSwgMjEwLCA4MywgNzksIDY1LCA4MCwgMTI4LCAKLSAgICA4MywgNzksIDY1LCAxMjgsIDgzLCAyMDcsIDgzLCA3OCwgNzksIDg3LCA3NywgNjUsIDc4LCAxMjgsIDgzLCA3OCwgNzksIAotICAgIDg3LCA3NywgNjUsIDIwNiwgODMsIDc4LCA3OSwgODcsIDcwLCA3NiwgNjUsIDc1LCA2OSwgMTI4LCA4MywgNzgsIDc5LCA4NywgCi0gICAgNjYsIDc5LCA2NSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODMsIDc4LCA3OSwgODcsIDEyOCwgODMsIDc4LCA3OSwgODUsIDg0LCAKLSAgICAxMjgsIDgzLCA3OCwgNzksIDg1LCAyMTIsIDgzLCA3OCwgNjUsIDIwOCwgODMsIDc4LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCAKLSAgICA3OCwgNjUsIDc1LCAxOTcsIDgzLCA3OCwgNjUsIDczLCA3NiwgMTI4LCA4MywgNzgsIDE5MywgODMsIDc3LCA3OSwgNzUsIAotICAgIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA4MiwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNzMsIDc4LCAKLSAgICAxOTksIDgzLCA3NywgNzMsIDc2LCA2OSwgMTI4LCA4MywgNzcsIDY5LCA2NSwgODIsIDEyOCwgODMsIDc3LCA2NSwgODMsIAotICAgIDIwMCwgODMsIDc3LCA2NSwgNzYsIDc2LCA2OSwgMjEwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDEyOCwgODMsIDc2LCA4NSwgCi0gICAgODIsIDEyOCwgODMsIDc2LCA3OSwgODcsIDc2LCA4OSwgMTI4LCA4MywgNzYsIDc5LCAyMTUsIDgzLCA3NiwgNzksIDg2LCAKLSAgICA3OSwgMTI4LCA4MywgNzYsIDc5LCAyMTIsIDgzLCA3NiwgNzksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA3OSwgODAsIAotICAgIDY5LCAxMjgsIDgzLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgCi0gICAgNzYsIDczLCA2NywgNjksIDEyOCwgODMsIDc2LCA3MywgNjcsIDE5NywgODMsIDc2LCA2OSwgNjksIDgwLCAyMTcsIDgzLCAKLSAgICA3NiwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCA3NiwgNjUsIDg2LCA3OSwgNzgsIDczLCAxOTUsIDgzLCA3NiwgNjUsIAotICAgIDg2LCA2OSwgMTI4LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgODMsIDc2LCA2NSwgODMsIDIwMCwgODMsIDc2LCA2NSwgCi0gICAgNzgsIDg0LCA2OSwgMTk2LCA4MywgNzUsIDg3LCA2NSwgMTI4LCA4MywgNzUsIDg3LCAxMjgsIDgzLCA3NSwgODUsIDc2LCAKLSAgICA3NiwgMTI4LCA4MywgNzUsIDg1LCA3NiwgMjA0LCA4MywgNzUsIDc2LCA3MywgODIsIDc5LCAyMDYsIDgzLCA3NSwgNzMsIAotICAgIDc4LCAxMjgsIDgzLCA3NSwgNzMsIDY5LCA4MiwgMTI4LCA4MywgNzUsIDIwMSwgODMsIDc1LCA2OSwgODcsIDY5LCAxOTYsIAotICAgIDgzLCA3NSwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCA2OSwgMTI4LCA4MywgNzMsIDg4LCA4NCwgCi0gICAgODksIDQ1LCA3MCwgNzksIDg1LCA4MiwgODQsIDIwMCwgODMsIDczLCA4OCwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICAyMTcsIDgzLCA3MywgODgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIDcyLCAyMTEsIDgzLCA3MywgODgsIAotICAgIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgCi0gICAgNjksIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgMjAwLCA4MywgNzMsIDg4LCAKLSAgICA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA3MywgODgsIDQ1LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDczLCA4OCwgCi0gICAgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA4MywgNzMsIDg4LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIAotICAgIDIxNiwgODMsIDczLCA4NCwgNjksIDEyOCwgODMsIDczLCA4MywgNjUsIDEyOCwgODMsIDczLCA4MiwgNzMsIDc4LCA3MSwgCi0gICAgODUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDc5LCAKLSAgICA4MywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzMsIAotICAgIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgCi0gICAgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIAotICAgIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKLSAgICA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIAotICAgIDczLCA3OSwgODMsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzIsIDczLCAKLSAgICA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MywgNzMsIDc5LCAyMTEsIDgzLCA3MywgNzgsIDc1LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDEyOCwgCi0gICAgODMsIDczLCA3OCwgNzEsIDc2LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA2NSwgNjUsIDg0LCAxMjgsIDgzLCA3MywgNzgsIAotICAgIDE5NywgODMsIDczLCA3OCwgNjgsIDcyLCAyMDEsIDgzLCA3MywgMjA2LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgCi0gICAgNzMsIDY5LCAxOTYsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIAotICAgIDIxMCwgODMsIDczLCA3NywgNjUsIDc4LCA4MywgNzMsIDIxMSwgODMsIDczLCA3NywgNjUsIDc2LCA4NSwgNzgsIDcxLCA4NSwgCi0gICAgMjA2LCA4MywgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDc2LCA4NiwgNjksIDgyLCAxMjgsIDgzLCA3MywgNzYsIDc1LCAKLSAgICAxMjgsIDgzLCA3MywgNzYsIDczLCA4MSwgODUsIDE5MywgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgNjksIAotICAgIDEyOCwgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgMTk3LCA4MywgNzMsIDc2LCA2NSwgNTEsIDEyOCwgCi0gICAgODMsIDczLCA3NSwgNzMsIDEyOCwgODMsIDczLCA3NSwgNTAsIDEyOCwgODMsIDczLCA3NSwgMTc4LCA4MywgNzMsIDczLCAKLSAgICAxMjgsIDgzLCA3MywgNzEsIDc4LCA4MywgMTI4LCA4MywgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDczLCA3MSwgNzcsIAotICAgIDE5MywgODMsIDczLCA3MSwgNjksIDIwNCwgODMsIDczLCA3MSwgNTIsIDEyOCwgODMsIDczLCA3MSwgMTgwLCA4MywgNzMsIAotICAgIDcxLCAxMjgsIDgzLCA3MywgNjksIDY5LCAxMjgsIDgzLCA3MywgNjgsIDY5LCA4NywgNjUsIDg5LCAyMTEsIDgzLCA3MywgCi0gICAgNjcsIDc1LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNjYsIAotICAgIDE5NywgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgODMsIDcyLCA4OSwgODQsIDEyOCwgODMsIDcyLCA4OSwgODIsIAotICAgIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCA3MiwgODksIDgwLCAxMjgsIDgzLCA3MiwgODksIDY5LCAxMjgsIAotICAgIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDg5LCAxMjgsIDgzLCA3MiwgCi0gICAgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3MywgNzMsIDEyOCwgODMsIDcyLCAKLSAgICA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgODMsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgzLCA3MiwgODcsIAotICAgIDY1LCAxMjgsIDgzLCA3MiwgODUsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDgzLCA3MiwgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA4MywgNzIsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgODgsIDEyOCwgCi0gICAgODMsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCAxMjgsIDgzLCA3MiwgODUsIDc3LCAxMjgsIDgzLCAKLSAgICA3MiwgODUsIDcwLCA3MCwgNzYsIDE5NywgODMsIDcyLCA4NSwgNjksIDgxLCAxMjgsIDgzLCA3MiwgODUsIDY5LCA3OCwgODMsIAotICAgIDcyLCA4NSwgNjksIDg0LCAxMjgsIDgzLCA3MiwgODUsIDY2LCA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgNTAsIDEyOCwgCi0gICAgODMsIDcyLCA4NSwgMTc4LCA4MywgNzIsIDg1LCAxMjgsIDgzLCA3MiwgMjEzLCA4MywgNzIsIDg0LCA2NSwgODAsIDczLCAKLSAgICA2NywgMTI4LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDgzLCA3MiwgODIsIAotICAgIDczLCA3NywgODAsIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgODMsIDcyLCA3OSwgCi0gICAgODcsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCA3MiwgNzksIDg0LCAKLSAgICAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgODMsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAyMTEsIDgzLCA3MiwgNzksIAotICAgIDgyLCA4NCwgNjksIDc4LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA2NywgNjUsIDc1LCA2OSwgMTI4LCA4MywgCi0gICAgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIAotICAgIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg0LCA4OSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCAKLSAgICA3MSwgNDUsIDgzLCA3OSwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc5LCA4MywgCi0gICAgMjExLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc4LCA2NSwgODUsIDE5NiwgODMsIDcyLCAKLSAgICA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgCi0gICAgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIAotICAgIDg0LCA4NywgNzMsIDcxLCA0NSwgNjYsIDc0LCA2NSwgODIsIDc1LCA2NSwgMjA2LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCAKLSAgICA4NCwgODcsIDczLCA3MSwgNDUsIDY1LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgMTI4LCA4MywgNzIsIDc5LCA4MiwgCi0gICAgMjEyLCA4MywgNzIsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDc5LCAyMDksIDgzLCA3MiwgNzksIDgwLCAxMjgsIDgzLCA3MiwgCi0gICAgNzksIDc5LCA4NCwgNzMsIDc4LCAxOTksIDgzLCA3MiwgNzksIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA3OSwgMTI4LCAKLSAgICA4MywgNzIsIDc5LCA3MSwgMjAxLCA4MywgNzIsIDc5LCAxOTksIDgzLCA3MiwgNzksIDY5LCAxMjgsIDgzLCA3MiwgNzksIAotICAgIDE5NywgODMsIDcyLCA3OSwgNjUsIDEyOCwgODMsIDcyLCA3OSwgMTI4LCA4MywgNzIsIDczLCA4OSwgODksIDY1LCA2NSwgCi0gICAgNzYsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDczLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA3MywgODQsIDE5MywgODMsIDcyLCAKLSAgICA3MywgODIsIDIxMiwgODMsIDcyLCA3MywgODIsIDY1LCA2OSwgMTI4LCA4MywgNzIsIDczLCA4MiwgMTI4LCA4MywgNzIsIAotICAgIDczLCAyMTAsIDgzLCA3MiwgNzMsIDgxLCAxMjgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDgzLCA3MiwgNzMsIDc4LCA4NCwgCi0gICAgMjA3LCA4MywgNzIsIDczLCA3OCwgNzMsIDcxLCAxMjgsIDgzLCA3MiwgNzMsIDc4LCA2OCwgMTkzLCA4MywgNzIsIDczLCAKLSAgICA3OCwgMTI4LCA4MywgNzIsIDczLCAyMDYsIDgzLCA3MiwgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzIsIDczLCA3NywgMTkzLCAKLSAgICA4MywgNzIsIDczLCA3NywgMTI4LCA4MywgNzIsIDczLCAyMDUsIDgzLCA3MiwgNzMsIDczLCA3OCwgMTI4LCA4MywgNzIsIAotICAgIDczLCA3MywgMTI4LCA4MywgNzIsIDczLCA3MCwgMjEyLCA4MywgNzIsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDgzLCA3MiwgCi0gICAgNzMsIDY4LCAxMjgsIDgzLCA3MiwgNzMsIDE5NiwgODMsIDcyLCA3MiwgNjUsIDEyOCwgODMsIDcyLCA3MiwgMTkzLCA4MywgCi0gICAgNzIsIDY5LCA4OCwgMTI4LCA4MywgNzIsIDY5LCA4NiwgNjUsIDEyOCwgODMsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDgzLCAKLSAgICA3MiwgNjksIDg1LCA3OSwgODEsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgODEsIDg0LCA4NSwgMTI4LCA4MywgNzIsIAotICAgIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNjksIDg0LCAKKyAgICA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIDIwMSwgODMsIDg5LCAxMjgsIDgzLCA4NywgOTAsIDEyOCwgODMsIDg3LCAKKyAgICA4NSwgNzgsIDE5OSwgODMsIDg3LCA3OSwgODIsIDY4LCA4MywgMTI4LCA4MywgODcsIDc5LCA4MiwgNjgsIDEyOCwgODMsIAorICAgIDg3LCA3OSwgNzksIDEyOCwgODMsIDg3LCA3OSwgMTI4LCA4MywgODcsIDczLCA4MiwgMjA0LCA4MywgODcsIDczLCA3NywgCisgICAgNzcsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA3MywgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg3LCA3MywgNzMsIAorICAgIDEyOCwgODMsIDg3LCA3MywgMTI4LCA4MywgODcsIDcxLCAxMjgsIDgzLCA4NywgNjksIDY5LCA4NCwgMTI4LCA4MywgODcsIAorICAgIDY5LCA2OSwgMjEyLCA4MywgODcsIDY5LCA2NSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjUsIDIxMiwgODMsIDg3LCA2NSwgCisgICAgODMsIDIwMCwgODMsIDg3LCA2NSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNjUsIDY1LCAxMjgsIDgzLCAKKyAgICA4NywgMTI4LCA4MywgODYsIDY1LCA4MywgODQsIDIwMSwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgNjUsIDEyOCwgODMsIAorICAgIDg2LCA2NSwgODIsIDczLCA4NCwgMTkzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4NSwgODUsIDEyOCwgODMsIDg1LCA4NCwgCisgICAgMTI4LCA4MywgODUsIDgzLCA4MCwgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIDgzLCA4NSwgODMsIDcyLCA3MywgMTI4LCAKKyAgICA4MywgODUsIDgyLCA4OSwgNjUsIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIAorICAgIDY4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgCisgICAgODMsIDg1LCA4MiwgNzAsIDY1LCA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAKKyAgICAxMjgsIDgzLCA4NSwgODIsIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCAKKyAgICA2NSwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIAorICAgIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgCisgICAgODAsIDY5LCA4MiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIAorICAgIDgzLCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAKKyAgICAyMTAsIDgzLCA4NSwgODAsIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCAKKyAgICA3OSwgMTI4LCA4MywgODUsIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgNjksIDEyOCwgODMsIAorICAgIDg1LCA3OCwgODIsIDczLCA4MywgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgCisgICAgODUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzgsIAorICAgIDEyOCwgODMsIDg1LCAyMDYsIDgzLCA4NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA3NywgNjUsIDgzLCAKKyAgICA3MiwgMTI4LCA4MywgODUsIDc3LCAxMjgsIDgzLCA4NSwgNzYsIDcwLCA4NSwgODIsIDEyOCwgODMsIDg1LCA3NSwgODUsIAorICAgIDc4LCAxMjgsIDgzLCA4NSwgNzUsIDg1LCAyMDYsIDgzLCA4NSwgNzUsIDg1LCAxMjgsIDgzLCA4NSwgNzUsIDIxMywgODMsIAorICAgIDg1LCA3MywgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDgzLCA4NSwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNzIsIDg1LCA4MiwgCisgICAgMTI4LCA4MywgODUsIDY5LCAxMjgsIDgzLCA4NSwgNjgsIDUwLCAxMjgsIDgzLCA4NSwgNjgsIDEyOCwgODMsIDg1LCA2NywgCisgICAgNjcsIDY5LCA2OSwgNjgsIDgzLCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAyMTEsIDgzLCA4NSwgNjcsIDY3LCAKKyAgICA2OSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDE5NiwgODMsIDg1LCA2NiwgODUsIDc4LCA3MywgODQsIAorICAgIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNjYsIDgzLCA4NCwgCisgICAgNzMsIDg0LCA4NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDE5NywgODMsIDg1LCAKKyAgICA2NiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgNjksIDIxMiwgODMsIDg1LCA2NiwgODMsIDY3LCA4MiwgNzMsIAorICAgIDgwLCAyMTIsIDgzLCA4NSwgNjYsIDgwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDgzLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgCisgICAgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCAKKyAgICA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgCisgICAgNjksIDQ1LCA1MCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCAKKyAgICA3MywgNzcsIDY1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA3NCwgNzksIDczLCA3OCwgNjksIDE5NiwgODMsIDg1LCA2NiwgNzQsIAorICAgIDY5LCA2NywgODQsIDEyOCwgODMsIDg1LCA2NiwgNzMsIDg0LCA3OSwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgCisgICAgODAsIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIDIwOCwgODMsIDg1LCA2NiwgMTI4LCA4MywgODUsIDY1LCAKKyAgICA2OSwgODQsIDEyOCwgODMsIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA4NSwgNjUsIAorICAgIDEyOCwgODMsIDIxMywgODMsIDg0LCA4OCwgMTI4LCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgODQsIDg1LCA2OCwgODksIAorICAgIDEyOCwgODMsIDg0LCA4NSwgNjcsIDc1LCA0NSwgNzksIDg1LCAyMTIsIDgzLCA4NCwgODMsIDEyOCwgODMsIDg0LCA4MiwgCisgICAgNzksIDc1LCA2OSwgODMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMjExLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICA0NSwgNTcsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU2LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDQ1LCA1NSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTQsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDUzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICA0NSwgNTEsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDQ1LCA0OSwgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODQsIDgyLCA3OSwgCisgICAgNzUsIDY5LCA0NSwgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA4MCwgNjksIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDc1LCA2OSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY4LCA2OSwgMTI4LCAKKyAgICA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3NiwgMjE3LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgNjksIDE5NiwgODMsIAorICAgIDg0LCA4MiwgNjksIDgzLCAyMTEsIDgzLCA4NCwgODIsIDY5LCA3OCwgNzEsIDg0LCA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgCisgICAgNjUsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg3LCA2NiwgNjksIDgyLCA4MiwgODksIDEyOCwgODMsIDg0LCAKKyAgICA4MiwgNjUsIDg0LCA4NSwgNzcsIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgMTI4LCA4MywgODQsIAorICAgIDgyLCA2NSwgODQsIDg1LCAyMDUsIDgzLCA4NCwgODIsIDY1LCA4NCwgNzMsIDY1LCAyMDYsIDgzLCA4NCwgODIsIDY1LCA3MywgCisgICAgNzgsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCAKKyAgICA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA4NCwgODIsIDY1LCA3MywgNzAsIDEyOCwgODMsIDg0LCA4MiwgNjUsIAorICAgIDcxLCA3MSwgNzMsIDgzLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgODQsIDc5LCA4NiwgNjksIDEyOCwgODMsIDg0LCA3OSwgCisgICAgODIsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNjUsIDcxLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgCisgICAgMTI4LCA4MywgODQsIDc5LCAyMDgsIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA4MywgODQsIDc5LCA2NywgNzUsIDEyOCwgCisgICAgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA4MywgODQsIDczLCA3NiwgMjA0LCA4MywgODQsIDczLCA3NiwgMTk3LCAKKyAgICA4MywgODQsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA4NCwgNjksIDgwLCAxMjgsIDgzLCA4NCwgNjksIDc3LCAxMjgsIAorICAgIDgzLCA4NCwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCA4NCwgNjksIDY1LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgCisgICAgMjA1LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4NSwgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4MywgMTI4LCAKKyAgICA4MywgODQsIDY1LCA4NiwgODIsIDc5LCAyMTEsIDgzLCA4NCwgNjUsIDg1LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIAorICAgIDg0LCA4NSwgMTk3LCA4MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDgyLCA4MywgCisgICAgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDEyOCwgODMsIDg0LCA2NSwgODIsIDIxMiwgODMsIDg0LCA2NSwgODIsIDgzLCAKKyAgICAxMjgsIDgzLCA4NCwgNjUsIDgyLCA4MiwgNjksIDE5NiwgODMsIDg0LCA2NSwgODIsIDc1LCAxMjgsIDgzLCA4NCwgNjUsIAorICAgIDgyLCAxMjgsIDgzLCA4NCwgNjUsIDIxMCwgODMsIDg0LCA2NSwgNzgsIDY4LCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgCisgICAgODMsIDg0LCA2NSwgNzgsIDY4LCA2NSwgODIsIDE5NiwgODMsIDg0LCA2NSwgNzgsIDY4LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCAKKyAgICAxMjgsIDgzLCA4NCwgNjUsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3MCwgNzAsIDEyOCwgODMsIAorICAgIDg0LCA2NSwgNzAsIDE5OCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgCisgICAgNjUsIDg0LCA3MywgODMsIDgzLCA3MywgNzcsIDc5LCAxMjgsIDgzLCA4NCwgNTAsIDEyOCwgODMsIDgzLCA4OSwgODgsIAorICAgIDEyOCwgODMsIDgzLCA4OSwgODQsIDEyOCwgODMsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4MywgODksIDgyLCAxMjgsIAorICAgIDgzLCA4MywgODksIDgwLCAxMjgsIDgzLCA4MywgODksIDEyOCwgODMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDgzLCA4NSwgCisgICAgODUsIDEyOCwgODMsIDgzLCA4NSwgODQsIDEyOCwgODMsIDgzLCA4NSwgODAsIDEyOCwgODMsIDgzLCA3OSwgODgsIDEyOCwgCisgICAgODMsIDgzLCA3OSwgODQsIDEyOCwgODMsIDgzLCA3OSwgODAsIDEyOCwgODMsIDgzLCA3OSwgNzksIDEyOCwgODMsIDgzLCAKKyAgICA3OSwgMTI4LCA4MywgODMsIDczLCA4OCwgMTI4LCA4MywgODMsIDczLCA4NCwgMTI4LCA4MywgODMsIDczLCA4MCwgMTI4LCAKKyAgICA4MywgODMsIDczLCA3MywgMTI4LCA4MywgODMsIDczLCA2OSwgODgsIDEyOCwgODMsIDgzLCA3MywgNjksIDgwLCAxMjgsIAorICAgIDgzLCA4MywgNzMsIDY5LCAxMjgsIDgzLCA4MywgNzMsIDEyOCwgODMsIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgCisgICAgODgsIDEyOCwgODMsIDgzLCA2OSwgODAsIDEyOCwgODMsIDgzLCA2OSwgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgCisgICAgODMsIDgzLCA2NSwgODUsIDEyOCwgODMsIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgODMsIDgzLCAKKyAgICA2NSwgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgCisgICAgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIAorICAgIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgCisgICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIAorICAgIDg1LCA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgODUsIDc3LCAKKyAgICAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIAorICAgIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgCisgICAgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIAorICAgIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgNjUsIDY5LCAKKyAgICA2NSwgMTI4LCA4MywgODMsIDY1LCA3MywgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDUxLCAxMjgsIDgzLCAKKyAgICA4MywgNTAsIDEyOCwgODMsIDgyLCAxMjgsIDgzLCA4MSwgODUsIDczLCA4MywgMjAwLCA4MywgODEsIDg1LCA3MywgODIsIAorICAgIDgyLCA2OSwgMjA0LCA4MywgODEsIDg1LCA3MywgNzEsIDcxLCA3NiwgMTk3LCA4MywgODEsIDg1LCA2NSwgMjEyLCA4MywgCisgICAgODEsIDg1LCA2NSwgODIsIDY5LCA4MywgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCA2OCwgMTI4LCA4MywgODEsIDg1LCAKKyAgICA2NSwgODIsIDY5LCAxMjgsIDgzLCA4MCwgODcsIDY1LCAxMjgsIDgzLCA4MCwgODUsIDc4LCA3MSwgMjExLCA4MywgODAsIAorICAgIDgyLCA3OSwgODUsIDg0LCAxMjgsIDgzLCA4MCwgODIsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgzLCA4MCwgODIsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgODMsIDgwLCA4MiwgNjksIDY3LCA3MiwgNzEsIDY5LCA4MywgNjUsIDc4LCAxOTksIDgzLCA4MCwgNzksIDg1LCAKKyAgICA4NCwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNzksIDg0LCAxMjgsIDgzLCA4MCwgNzksIDc5LCA3OCwgMTI4LCA4MywgODAsIAorICAgIDc2LCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgODMsIDgwLCA3NiwgNjUsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgzLCA4MCwgCisgICAgNzMsIDgyLCA3MywgODQsIDg1LCAyMTEsIDgzLCA4MCwgNzMsIDgyLCA3MywgODQsIDEyOCwgODMsIDgwLCA3MywgODIsIDczLCAKKyAgICAyMTIsIDgzLCA4MCwgNzMsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA2NSwgNzYsIDEyOCwgODMsIAorICAgIDgwLCA3MywgODIsIDY1LCAyMDQsIDgzLCA4MCwgNzMsIDY4LCA2OSwgODIsIDIxNywgODMsIDgwLCA3MywgNjcsIDY5LCAKKyAgICAxMjgsIDgzLCA4MCwgNzIsIDY5LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA4MywgODAsIDY5LCA4MywgNzcsIDczLCA3NiwgCisgICAgMjA3LCA4MywgODAsIDY5LCA2OSwgNjgsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgzLCA4MCwgNjksIDY5LCA2NywgNzIsIAorICAgIDEyOCwgODMsIDgwLCA2OSwgNjksIDY3LCAyMDAsIDgzLCA4MCwgNjksIDY3LCA3MywgNjUsIDc2LCAxMjgsIDgzLCA4MCwgCisgICAgNjksIDY1LCA4MiwgMTI4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCAKKyAgICAyMTAsIDgzLCA4MCwgNjksIDY1LCA3NSwgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIDgwLCA2NSwgODQsIAorICAgIDcyLCA3MywgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA3MywgNzgsIDE5OSwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgCisgICAgNjksIDgzLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCA4MiwgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCAKKyAgICA2OSwgMTI4LCA4MywgODAsIDY1LCA3MSwgNzIsIDY5LCA4NCwgODQsIDczLCAxMjgsIDgzLCA4MCwgNjUsIDY4LCA2OSwgODMsIAorICAgIDEyOCwgODMsIDgwLCA2NSwgNjgsIDE5NywgODMsIDgwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MywgODAsIDY1LCA2NywgCisgICAgMTk3LCA4MywgODAsIDY1LCAxMjgsIDgzLCA3OSwgODksIDEyOCwgODMsIDc5LCA4NywgNzMsIDc2LCAyMDcsIDgzLCA3OSwgCisgICAgODcsIDEyOCwgODMsIDc5LCA4NSwgODQsIDcyLCA2OSwgODIsIDIwNiwgODMsIDc5LCA4NSwgODQsIDcyLCA0NSwgODMsIDc2LCAKKyAgICA2NSwgODYsIDY5LCAyMTcsIDgzLCA3OSwgODUsIDg0LCAyMDAsIDgzLCA3OSwgODUsIDgyLCA2NywgNjksIDEyOCwgODMsIAorICAgIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgzLCA3OSwgODUsIDc4LCAxOTYsIDgzLCA3OSwgODUsIDc4LCA2NSwgODAsIDEyOCwgCisgICAgODMsIDc5LCA4NSwgMTI4LCA4MywgNzksIDgzLCAxMjgsIDgzLCA3OSwgODIsIDE5MywgODMsIDc5LCA4MSwgMTI4LCA4MywgCisgICAgNzksIDc5LCAyMDYsIDgzLCA3OSwgNzgsIDc0LCA2NSwgNzcsIDEyOCwgODMsIDc5LCA3OCwgNzEsIDEyOCwgODMsIDc5LCAKKyAgICA3OCwgMTI4LCA4MywgNzksIDc3LCA4MCwgNjksIDc4LCAxOTksIDgzLCA3OSwgNzcsIDEyOCwgODMsIDc5LCA3NiwgNzMsIAorICAgIDY4LCA4NSwgODMsIDEyOCwgODMsIDc5LCA3NiwgNzMsIDY4LCA4NSwgMjExLCA4MywgNzksIDcyLCAxMjgsIDgzLCA3OSwgCisgICAgNzEsIDY4LCA3MywgNjUsIDIwNiwgODMsIDc5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY5LCA0NSwgNzAsIDg1LCA3OCwgNjcsIAorICAgIDg0LCA3MywgNzksIDIwNiwgODMsIDc5LCA3MCwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA3OSwgNzAsIDIxMiwgCisgICAgODMsIDc5LCAxOTgsIDgzLCA3OSwgNjcsIDczLCA2OSwgODQsIDg5LCAxMjgsIDgzLCA3OSwgNjcsIDY3LCA2OSwgMjEwLCAKKyAgICA4MywgNzksIDY1LCA4MCwgMTI4LCA4MywgNzksIDY1LCAxMjgsIDgzLCAyMDcsIDgzLCA3OCwgNzksIDg3LCA3NywgNjUsIAorICAgIDc4LCAxMjgsIDgzLCA3OCwgNzksIDg3LCA3NywgNjUsIDIwNiwgODMsIDc4LCA3OSwgODcsIDcwLCA3NiwgNjUsIDc1LCA2OSwgCisgICAgMTI4LCA4MywgNzgsIDc5LCA4NywgNjYsIDc5LCA2NSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODMsIDc4LCA3OSwgODcsIAorICAgIDEyOCwgODMsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgzLCA3OCwgNzksIDg1LCAyMTIsIDgzLCA3OCwgNjUsIDIwOCwgODMsIAorICAgIDc4LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNjUsIDc1LCAxOTcsIDgzLCA3OCwgNjUsIDczLCA3NiwgMTI4LCA4MywgCisgICAgNzgsIDE5MywgODMsIDc3LCA3OSwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA4MiwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA4MywgNzcsIDczLCA3NiwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA2OSwgMTI4LCA4MywgNzcsIDY5LCA2NSwgODIsIAorICAgIDEyOCwgODMsIDc3LCA2NSwgODMsIDIwMCwgODMsIDc3LCA2NSwgNzYsIDc2LCA2OSwgMjEwLCA4MywgNzcsIDY1LCA3NiwgCisgICAgNzYsIDEyOCwgODMsIDc2LCA4NSwgODIsIDEyOCwgODMsIDc2LCA3OSwgODcsIDc2LCA4OSwgMTI4LCA4MywgNzYsIDc5LCAKKyAgICAyMTUsIDgzLCA3NiwgNzksIDg2LCA3OSwgMTI4LCA4MywgNzYsIDc5LCAyMTIsIDgzLCA3NiwgNzksIDgwLCA3MywgNzgsIAorICAgIDE5OSwgODMsIDc2LCA3OSwgODAsIDY5LCAxMjgsIDgzLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCA2OCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCA2NywgNjksIDEyOCwgODMsIDc2LCA3MywgNjcsIDE5NywgODMsIDc2LCAKKyAgICA2OSwgNjksIDgwLCAyMTcsIDgzLCA3NiwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCA3NiwgNjUsIDg2LCA3OSwgNzgsIAorICAgIDczLCAxOTUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMTI4LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgODMsIDc2LCA2NSwgCisgICAgODMsIDIwMCwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA4MywgNzUsIDg3LCA2NSwgMTI4LCA4MywgNzUsIDg3LCAKKyAgICAxMjgsIDgzLCA3NSwgODUsIDc2LCA3NiwgMTI4LCA4MywgNzUsIDg1LCA3NiwgMjA0LCA4MywgNzUsIDc2LCA3MywgODIsIAorICAgIDc5LCAyMDYsIDgzLCA3NSwgNzMsIDc4LCAxMjgsIDgzLCA3NSwgNzMsIDY5LCA4MiwgMTI4LCA4MywgNzUsIDIwMSwgODMsIAorICAgIDc1LCA2OSwgODcsIDY5LCAxOTYsIDgzLCA3NSwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCA2OSwgCisgICAgMTI4LCA4MywgNzMsIDg4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCA4MiwgODQsIDIwMCwgODMsIDczLCA4OCwgODQsIDg5LCAKKyAgICAxMjgsIDgzLCA3MywgODgsIDg0LCAyMTcsIDgzLCA3MywgODgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIAorICAgIDcyLCAyMTEsIDgzLCA3MywgODgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCA4MywgCisgICAgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCAKKyAgICA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCAyMDYsIAorICAgIDgzLCA3MywgODgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDQ1LCA4MywgODQsIDgyLCAKKyAgICA3MywgNzgsIDE5OSwgODMsIDczLCA4OCwgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA4MywgNzMsIDg4LCA0NSwgNzYsIAorICAgIDczLCA3OCwgMTk3LCA4MywgNzMsIDIxNiwgODMsIDczLCA4NCwgNjksIDEyOCwgODMsIDczLCA4MywgNjUsIDEyOCwgODMsIAorICAgIDczLCA4MiwgNzMsIDc4LCA3MSwgODUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCAKKyAgICA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCAKKyAgICA4NSwgODAsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDcyLCA3MywgCisgICAgNjksIDg1LCA4MCwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKKyAgICA4MywgNzMsIDc5LCA4MywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc3LCA3MywgCisgICAgNjksIDg1LCA3NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCisgICAgODMsIDczLCA3OSwgODMsIDQ1LCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MiwgNzMsIAorICAgIDY5LCA4NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDczLCA3OSwgCisgICAgODMsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MywgNzMsIDc5LCAyMTEsIDgzLCA3MywgNzgsIDc1LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MSwgCisgICAgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDczLCAKKyAgICA3OCwgNzEsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MywgNzMsIAorICAgIDc4LCA3MSwgNzYsIDE5NywgODMsIDczLCA3OCwgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgMTk3LCA4MywgCisgICAgNzMsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDczLCAyMDYsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIAorICAgIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIDEyOCwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgMjEwLCA4MywgCisgICAgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgNzMsIDc3LCA2NSwgNzYsIDg1LCA3OCwgNzEsIDg1LCAyMDYsIDgzLCAKKyAgICA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCA2OSwgODIsIDEyOCwgODMsIDczLCA3NiwgNzUsIDEyOCwgODMsIAorICAgIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MywgCisgICAgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAxOTcsIDgzLCA3MywgNzYsIDY1LCA1MSwgMTI4LCA4MywgNzMsIDc1LCAKKyAgICA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCA4MywgNzMsIDc1LCAxNzgsIDgzLCA3MywgNzEsIDc4LCA4MywgMTI4LCAKKyAgICA4MywgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDczLCA3MSwgNzcsIDE5MywgODMsIDczLCA3MSwgNjksIDIwNCwgODMsIAorICAgIDczLCA3MSwgNTIsIDEyOCwgODMsIDczLCA3MSwgMTgwLCA4MywgNzMsIDcxLCAxMjgsIDgzLCA3MywgNjksIDY5LCAxMjgsIAorICAgIDgzLCA3MywgNjgsIDY5LCA4NywgNjUsIDg5LCAyMTEsIDgzLCA3MywgNjcsIDc1LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgCisgICAgNzMsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNjYsIDE5NywgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgCisgICAgODMsIDcyLCA4OSwgODQsIDEyOCwgODMsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCAKKyAgICA3MiwgODksIDgwLCAxMjgsIDgzLCA3MiwgODksIDY5LCAxMjgsIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIAorICAgIDEyOCwgODMsIDcyLCA4NywgNzksIDg5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgCisgICAgMTI4LCA4MywgNzIsIDg3LCA3MywgNzMsIDEyOCwgODMsIDcyLCA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgCisgICAgODMsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgzLCA3MiwgODcsIDY1LCAxMjgsIDgzLCA3MiwgODUsIDg4LCAxMjgsIDgzLCAKKyAgICA3MiwgODUsIDg1LCAxMjgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDgzLCA3MiwgODUsIDgyLCA4OCwgMTI4LCA4MywgNzIsIAorICAgIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgODgsIDEyOCwgODMsIDcyLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCAxMjgsIDgzLCA3MiwgODUsIDc3LCAxMjgsIDgzLCA3MiwgODUsIDcwLCAKKyAgICA3MCwgNzYsIDE5NywgODMsIDcyLCA4NSwgNjksIDgxLCAxMjgsIDgzLCA3MiwgODUsIDY5LCA3OCwgODMsIDcyLCA4NSwgNjksIAorICAgIDg0LCAxMjgsIDgzLCA3MiwgODUsIDY2LCA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgNTAsIDEyOCwgODMsIDcyLCA4NSwgCisgICAgMTc4LCA4MywgNzIsIDg1LCAxMjgsIDgzLCA3MiwgMjEzLCA4MywgNzIsIDg0LCA2NSwgODAsIDczLCA2NywgMTI4LCA4MywgCisgICAgNzIsIDg0LCA2NSwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3NywgODAsIAorICAgIDEyOCwgODMsIDcyLCA4MiwgNzMsIDczLCAxMjgsIDgzLCA3MiwgNzksIDg5LCAxMjgsIDgzLCA3MiwgNzksIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MywgCisgICAgNzIsIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDgzLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgMjExLCAKKyAgICA4MywgNzIsIDc5LCA4MiwgODQsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjcsIDY1LCA3NSwgCisgICAgNjksIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4OSwgODIsIDEyOCwgODMsIDcyLCAKKyAgICA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4NCwgODksIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgCisgICAgODQsIDg3LCA3MywgNzEsIDQ1LCA4MywgNzksIDIwNCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIAorICAgIDQ1LCA3OSwgODMsIDIxMSwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3OCwgNjUsIDg1LCAKKyAgICAxOTYsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA4MywgNzIsIAorICAgIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA4MywgNzIsIDc5LCAKKyAgICA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDY2LCA3NCwgNjUsIDgyLCA3NSwgNjUsIDIwNiwgODMsIDcyLCA3OSwgCisgICAgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA2NSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDEyOCwgODMsIDcyLCAKKyAgICA3OSwgODIsIDIxMiwgODMsIDcyLCA3OSwgODEsIDEyOCwgODMsIDcyLCA3OSwgMjA5LCA4MywgNzIsIDc5LCA4MCwgMTI4LCAKKyAgICA4MywgNzIsIDc5LCA3OSwgODQsIDczLCA3OCwgMTk5LCA4MywgNzIsIDc5LCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgNzksIAorICAgIDEyOCwgODMsIDcyLCA3OSwgNzEsIDIwMSwgODMsIDcyLCA3OSwgMTk5LCA4MywgNzIsIDc5LCA2OSwgMTI4LCA4MywgNzIsIAorICAgIDc5LCAxOTcsIDgzLCA3MiwgNzksIDY1LCAxMjgsIDgzLCA3MiwgNzksIDEyOCwgODMsIDcyLCA3MywgODksIDg5LCA2NSwgCisgICAgNjUsIDc2LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA3MywgODQsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDg0LCAxOTMsIDgzLCAKKyAgICA3MiwgNzMsIDgyLCAyMTIsIDgzLCA3MiwgNzMsIDgyLCA2NSwgNjksIDEyOCwgODMsIDcyLCA3MywgODIsIDEyOCwgODMsIAorICAgIDcyLCA3MywgMjEwLCA4MywgNzIsIDczLCA4MSwgMTI4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA4MywgNzIsIDczLCA3OCwgCisgICAgODQsIDIwNywgODMsIDcyLCA3MywgNzgsIDczLCA3MSwgMTI4LCA4MywgNzIsIDczLCA3OCwgNjgsIDE5MywgODMsIDcyLCAKKyAgICA3MywgNzgsIDEyOCwgODMsIDcyLCA3MywgMjA2LCA4MywgNzIsIDczLCA3NywgNjUsIDEyOCwgODMsIDcyLCA3MywgNzcsIAorICAgIDE5MywgODMsIDcyLCA3MywgNzcsIDEyOCwgODMsIDcyLCA3MywgMjA1LCA4MywgNzIsIDczLCA3MywgNzgsIDEyOCwgODMsIAorICAgIDcyLCA3MywgNzMsIDEyOCwgODMsIDcyLCA3MywgNzAsIDIxMiwgODMsIDcyLCA3MywgNjksIDc2LCA2OCwgMTI4LCA4MywgCisgICAgNzIsIDczLCA2OCwgMTI4LCA4MywgNzIsIDczLCAxOTYsIDgzLCA3MiwgNzIsIDY1LCAxMjgsIDgzLCA3MiwgNzIsIDE5MywgCisgICAgODMsIDcyLCA2OSwgODgsIDEyOCwgODMsIDcyLCA2OSwgODYsIDY1LCAxMjgsIDgzLCA3MiwgNjksIDg1LCA4OCwgMTI4LCAKKyAgICA4MywgNzIsIDY5LCA4NSwgNzksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDgxLCA4NCwgODUsIDEyOCwgODMsIAorICAgIDcyLCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNzIsIDY5LCA4NCwgCiAgICAgMTI4LCA4MywgNzIsIDY5LCAyMTIsIDgzLCA3MiwgNjksIDgzLCA3MiwgNzYsIDY1LCA3NywgMTI4LCA4MywgNzIsIDY5LCAKICAgICA4MywgNzIsIDczLCA3MSwgMTI4LCA4MywgNzIsIDY5LCA4MywgNzIsIDczLCAxOTksIDgzLCA3MiwgNjksIDgzLCA3MiwgNTAsIAogICAgIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCAxMjgsIDgzLCA3MiwgNjksIDgxLCA2OSwgMjA0LCA4MywgNzIsIDY5LCA4MCwgCkBAIC04ODAsMzc2ICs5ODQsMzg0IEBACiAgICAgMTI4LCA4MywgNzIsIDY5LCA2OSwgMjA2LCA4MywgNzIsIDY5LCA2OSwgMTI4LCA4MywgNzIsIDY5LCA0NSwgNzEsIDc5LCAKICAgICA2NSwgODQsIDEyOCwgODMsIDcyLCAxOTcsIDgzLCA3MiwgNjcsIDcyLCA2NSwgMTI4LCA4MywgNzIsIDY1LCA4OSwgMTI4LCAKICAgICA4MywgNzIsIDY1LCA4OCwgMTI4LCA4MywgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDg2LCA3MywgNjUsIDIwNiwgODMsIDcyLCA2NSwgODYsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDg0LCAxMjgsIDgzLCA3MiwgCi0gICAgNjUsIDgyLCA4NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjEzLCA4MywgNzIsIDY1LCA4MiwgODAsIDEyOCwgODMsIDcyLCAKLSAgICA2NSwgODIsIDIwOCwgODMsIDcyLCA2NSwgODIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA4MywgNzIsIAotICAgIDY1LCA4MiwgMTc4LCA4MywgNzIsIDY1LCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA4MCwgNjksIDgzLCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDgwLCAxOTcsIDgzLCA3MiwgNjUsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCA3MSwgMTI4LCAKLSAgICA4MywgNzIsIDY1LCA3OCwgMTI4LCA4MywgNzIsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDc3LCA4MiwgNzksIDY3LCA3NSwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA3NiwgODMsIDcyLCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDY1LCA3NSwgODQsIDczLCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIAotICAgIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgCi0gICAgNzIsIDY1LCAxOTYsIDgzLCA3MiwgNjUsIDY2LCA1NCwgMTI4LCA4MywgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCAKLSAgICA1NCwgMTI4LCA4MywgNzIsIDY1LCA1MSwgMTI4LCA4MywgNzIsIDY1LCAxNzksIDgzLCA3MSwgODIsIDE5MywgODMsIDcxLCAKLSAgICA3OSwgMjEwLCA4MywgNzEsIDY1LCAyMTUsIDgzLCA3MSwgNjUsIDE5NCwgODMsIDcxLCAxMjgsIDgzLCA2OSwgODgsIDg0LCAKLSAgICA4NSwgNzYsIDE5MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA4OCwgODQsIDY1LCA3OCwgCi0gICAgMjExLCA4MywgNjksIDg2LCA2OSwgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDg5LCAKLSAgICAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDIxNywgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIAotICAgIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDIwNiwgCi0gICAgODMsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgMjA2LCAKLSAgICA4MywgNjksIDg1LCA4OCwgMTI4LCA4MywgNjksIDg1LCA3OCwgODksIDY1LCA3NywgMTI4LCA4MywgNjksIDg1LCA2NSwgNjksIAotICAgIDgxLCAxMjgsIDgzLCA2OSwgODQsIDcwLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA4MywgODQsIDY5LCA4MiwgODQsIDczLCA4NSwgCi0gICAgMjExLCA4MywgNjksIDgzLCA4MSwgODUsIDczLCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA4NCwgNjksIDEyOCwgODMsIDY5LCAKLSAgICA4MywgNjUsIDc3LCAxOTcsIDgzLCA2OSwgODIsIDg2LCA3MywgNjcsIDE5NywgODMsIDY5LCA4MiwgNzMsIDcwLCA4MywgCi0gICAgMTI4LCA4MywgNjksIDgyLCA3MywgNzAsIDIxMSwgODMsIDY5LCA4MCwgODQsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCAKLSAgICA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgCi0gICAgMjEwLCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODMsIDY5LCA3OCwgODQsIDczLCAxMjgsIDgzLCA2OSwgNzcsIDg1LCAKLSAgICA3OCwgNjcsIDczLCAxOTMsIDgzLCA2OSwgNzcsIDc1LCA2NSwgODQsIDcyLCAxMjgsIDgzLCA2OSwgNzcsIDc1LCAxMjgsIAotICAgIDgzLCA2OSwgNzcsIDczLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNjksIDc3LCA3MywgODMsIDc5LCA3MCwgMjEyLCA4MywgCi0gICAgNjksIDc3LCA3MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA3NywgNzMsIDc3LCA3MywgNzgsIAotICAgIDczLCA3NywgMTkzLCA4MywgNjksIDc3LCA3MywgNjgsIDczLCA4MiwgNjksIDY3LCAyMTIsIDgzLCA2OSwgNzcsIDczLCA2NywgCi0gICAgNzksIDc2LCA3OSwgNzgsIDEyOCwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgNzYsIDc5LCAyMDYsIDgzLCA2OSwgNzcsIDczLCAKLSAgICA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MywgNjksIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIAotICAgIDgzLCA2OSwgNzcsIDczLCA2NiwgODIsIDY5LCA4NiwgNzMsIDIxMSwgODMsIDY5LCA3NywgNzMsIDQ1LCA4NiwgNzksIDczLCAKLSAgICA2NywgNjksIDE5NiwgODMsIDY5LCA3NiwgNzAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIAotICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIAotICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIAotICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIAotICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTYsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTMsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTAsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU3LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU0LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUxLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ4LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTYsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTMsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgCi0gICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgCi0gICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgCi0gICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIAotICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgCi0gICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTYsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTYsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTMsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgCi0gICAgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ4LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTYsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MiwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAKLSAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgCi0gICAgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA0OSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIAotICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTAsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIAotICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ4LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4MywgNjksIDczLCA4MywgCi0gICAgNzcsIDY1LCAxMjgsIDgzLCA2OSwgNzMsIDgzLCA3NywgMTkzLCA4MywgNjksIDcyLCAxMjgsIDgzLCA2OSwgNzEsIDc5LCAKLSAgICA3NiwgMTI4LCA4MywgNjksIDcxLCA3OCwgNzksIDEyOCwgODMsIDY5LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgODMsIAotICAgIDY5LCA2OSwgNzgsIDg1LCAxMjgsIDgzLCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgNjksIDIwNiwgODMsIDY5LCA2OSwgCi0gICAgNjgsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA2OSwgNjksIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA2NywgODQsIAotICAgIDczLCA3OSwgMjA2LCA4MywgNjksIDY3LCA4MiwgNjksIDg0LCAxMjgsIDgzLCA2OSwgNjcsIDc5LCA3OCwgNjgsIDEyOCwgCi0gICAgODMsIDY5LCA2NiwgNjUsIDg0LCA2NiwgNjksIDczLCAyMTIsIDgzLCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA2OSwgNjUsIDc2LCAKLSAgICAxMjgsIDgzLCA2OSwgNjUsIDcxLCA4NSwgNzYsIDIwNCwgODMsIDY4LCA3OSwgNzgsIDE5OSwgODMsIDY4LCAxMjgsIDgzLCAKLSAgICA2NywgODcsIDY1LCAxMjgsIDgzLCA2NywgODIsIDg1LCA4MCwgNzYsIDY5LCAxMjgsIDgzLCA2NywgODIsIDc5LCA3NiwgNzYsIAotICAgIDEyOCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2NywgCi0gICAgODIsIDY5LCA2OSwgMjA2LCA4MywgNjcsIDgyLCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDY3LCA3OSwgODIsIDgwLCAKLSAgICA3MywgODUsIDgzLCAxMjgsIDgzLCA2NywgNzksIDgyLCA2OSwgMTI4LCA4MywgNjcsIDczLCA4MywgODMsIDc5LCA4MiwgODMsIAotICAgIDEyOCwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgCi0gICAgNjksIDY4LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIAotICAgIDIwNCwgODMsIDY3LCA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgCi0gICAgNjksIDgwLCA4NCwgNjksIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCAKLSAgICA3OCwgNjgsIDczLCA2NywgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIAotICAgIDgzLCA2NiwgODUsIDE5NCwgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgzLCA2NSwgODksIDEyOCwgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCAKLSAgICA2OSwgMTI4LCA4MywgNjUsIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIAotICAgIDgzLCA2NSwgODcsIDEyOCwgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDczLCA3NiwgCi0gICAgMTI4LCA4MywgNjUsIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCA3NSwgODUsIDg1LCAKLSAgICAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgCi0gICAgMTk3LCA4MywgNjUsIDg0LCA2NywgNzIsIDY5LCA3NiwgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCA4MywgNjUsIDgzLCAKLSAgICA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIDgyLCAxMjgsIDgzLCAKLSAgICA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgNzEsIDE5MywgODMsIAotICAgIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCA4NCwgNzMsIDczLCA3NywgODUsIDEyOCwgODMsIDY1LCA3OCwgCi0gICAgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIDUwLCAxMjgsIDgzLCA2NSwgNzgsIDY4LCA2NSwgNzYsIAotICAgIDEyOCwgODMsIDY1LCA3OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzgsIDEyOCwgODMsIDY1LCA3NywgODksIDc5LCAyMDMsIAotICAgIDgzLCA2NSwgNzcsIDgwLCA3MywgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgMTI4LCA4MywgNjUsIDc3LCA3NSwgCi0gICAgNjUsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDIwMCwgODMsIDY1LCAKLSAgICA3NywgNjYsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMjA2LCA4MywgNjUsIDc3LCAxMjgsIAotICAgIDgzLCA2NSwgNzYsIDg0LCA3MywgODIsIDY5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgCi0gICAgNjUsIDc2LCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA2NSwgNzYsIDg0LCAxMjgsIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCAKLSAgICA3NiwgNzYsIDY1LCA3NiwgNzYsIDY1LCA3MiwgNzksIDIxMywgODMsIDY1LCA3NiwgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIAotICAgIDIwNSwgODMsIDY1LCA3NiwgNjUsIDEyOCwgODMsIDY1LCA3NiwgNDUsIDY1LCA3NywgNzcsIDc5LCA3OCwgNzMsIDY1LCA2NywgCi0gICAgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzUsIDc5LCA4NCwgMTI4LCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCAKLSAgICA2OSwgMTI4LCA4MywgNjUsIDc1LCAxOTcsIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIAotICAgIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAKLSAgICAxMjgsIDgzLCA2NSwgNzEsIDczLCA4NCwgODQsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjUsIDcxLCA2NSwgCi0gICAgMTI4LCA4MywgNjUsIDcxLCAxMjgsIDgzLCA2NSwgMTk5LCA4MywgNjUsIDcwLCA3MiwgNjUsIDEyOCwgODMsIDY1LCA2OCwgCi0gICAgNzIsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDEyOCwgODMsIDY1LCAxOTYsIDgzLCA2NSwgCi0gICAgNjcsIDgyLCA3MywgNzAsIDczLCA2NywgNzMsIDY1LCAyMDQsIDgzLCA2NSwgNjUsIDczLCAxMjgsIDgzLCA2NSwgNjUsIDY4LCAKLSAgICA3MiwgODUsIDEyOCwgODMsIDY1LCA0NSwgNzMsIDEyOCwgODMsIDQ4LCA1MiwgNTQsIDEyOCwgODMsIDQ4LCA1MiwgNTMsIAotICAgIDEyOCwgODMsIDQ4LCA1MiwgNTIsIDEyOCwgODMsIDQ4LCA1MiwgNTEsIDEyOCwgODMsIDQ4LCA1MiwgNTAsIDEyOCwgODMsIAotICAgIDQ4LCA1MiwgNDksIDEyOCwgODMsIDQ4LCA1MiwgNDgsIDEyOCwgODMsIDQ4LCA1MSwgNTcsIDEyOCwgODMsIDQ4LCA1MSwgCi0gICAgNTYsIDEyOCwgODMsIDQ4LCA1MSwgNTUsIDEyOCwgODMsIDQ4LCA1MSwgNTQsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDY1LCAKLSAgICAxMjgsIDgzLCA0OCwgNTEsIDUzLCAxMjgsIDgzLCA0OCwgNTEsIDUyLCAxMjgsIDgzLCA0OCwgNTEsIDUxLCAxMjgsIDgzLCAKLSAgICA0OCwgNTEsIDUwLCAxMjgsIDgzLCA0OCwgNTEsIDQ5LCAxMjgsIDgzLCA0OCwgNTEsIDQ4LCAxMjgsIDgzLCA0OCwgNTAsIAotICAgIDU3LCAxMjgsIDgzLCA0OCwgNTAsIDU2LCAxMjgsIDgzLCA0OCwgNTAsIDU1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NiwgCi0gICAgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDEyOCwgODMsIDQ4LCA1MCwgNTMsIDEyOCwgCi0gICAgODMsIDQ4LCA1MCwgNTIsIDEyOCwgODMsIDQ4LCA1MCwgNTEsIDEyOCwgODMsIDQ4LCA1MCwgNTAsIDEyOCwgODMsIDQ4LCAKLSAgICA1MCwgNDksIDEyOCwgODMsIDQ4LCA1MCwgNDgsIDEyOCwgODMsIDQ4LCA0OSwgNTcsIDEyOCwgODMsIDQ4LCA0OSwgNTYsIAotICAgIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDU1LCAxMjgsIDgzLCA0OCwgNDksIDU0LCAxMjgsIAotICAgIDgzLCA0OCwgNDksIDUzLCAxMjgsIDgzLCA0OCwgNDksIDUyLCA2NiwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgCi0gICAgODMsIDQ4LCA0OSwgNTIsIDEyOCwgODMsIDQ4LCA0OSwgNTEsIDEyOCwgODMsIDQ4LCA0OSwgNTAsIDEyOCwgODMsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgODMsIDQ4LCA0OSwgNDgsIDEyOCwgODMsIDQ4LCA0OCwgNTcsIDEyOCwgODMsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgODMsIDQ4LCA0OCwgNTUsIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDgzLCA0OCwgNDgsIDUzLCAxMjgsIDgzLCA0OCwgNDgsIDUyLCAxMjgsIDgzLCA0OCwgNDgsIDUxLCAxMjgsIDgzLCA0OCwgCi0gICAgNDgsIDUwLCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgMTI4LCA4MywgNDgsIDQ4LCA0OSwgMTI4LCA4MywgNDUsIDg3LCAKLSAgICAxMjgsIDgzLCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDgyLCA4OSwgODksIDEyOCwgODIsIDg5LCA4OCwgMTI4LCAKLSAgICA4MiwgODksIDg0LCAxMjgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4OSwgODIsIDEyOCwgODIsIDg5LCA4MCwgMTI4LCAKLSAgICA4MiwgODksIDY1LCAxMjgsIDgyLCA4NywgNzksIDc5LCAxMjgsIDgyLCA4NywgNzksIDEyOCwgODIsIDg3LCA3MywgNzMsIAotICAgIDEyOCwgODIsIDg3LCA3MywgMTI4LCA4MiwgODcsIDY5LCA2OSwgMTI4LCA4MiwgODcsIDY5LCAxMjgsIDgyLCA4NywgNjUsIAotICAgIDcyLCA2NSwgMTI4LCA4MiwgODcsIDY1LCA2NSwgMTI4LCA4MiwgODcsIDY1LCAxMjgsIDgyLCA4NSwgODgsIDEyOCwgODIsIAotICAgIDg1LCA4NSwgNjYsIDg1LCA4MiwgODUsIDEyOCwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODUsIDgzLCA3MywgMTI4LCA4MiwgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4NSwgODAsIDczLCA3MywgMTI4LCA4MiwgODUsIDgwLCAKLSAgICA2OSwgMTk3LCA4MiwgODUsIDgwLCAxMjgsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4NSwgNzksIDgwLCAxMjgsIDgyLCAKLSAgICA4NSwgNzksIDEyOCwgODIsIDg1LCA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MiwgODUsIDc4LCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDgyLCA4NSwgNzgsIDc4LCA2OSwgODIsIDEyOCwgODIsIDg1LCA3OCwgMTI4LCA4MiwgODUsIDc3LCAyMDEsIDgyLCA4NSwgCi0gICAgNzcsIDY1LCAyMDEsIDgyLCA4NSwgNzcsIDEyOCwgODIsIDg1LCAyMDUsIDgyLCA4NSwgNzYsIDY5LCA4MiwgMTI4LCA4MiwgCi0gICAgODUsIDc2LCA2OSwgNDUsIDY4LCA2OSwgNzYsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDgyLCA4NSwgNzYsIDY5LCAxMjgsIDgyLCAKLSAgICA4NSwgNzUsIDc1LCA2NSwgNzUsIDcyLCA2NSwgMTI4LCA4MiwgODUsIDczLCA4MywgMTI4LCA4MiwgODUsIDcxLCA2NiwgCi0gICAgMjE3LCA4MiwgODUsIDE5NCwgODIsIDg1LCA2NSwgMTI4LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIDg0LCA2NSwgCi0gICAgNzEsIDgzLCAxMjgsIDgyLCA4NCwgNjUsIDcxLCAyMTEsIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgODksIDg0LCAKLSAgICAxMjgsIDgyLCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCA4MCwgMTI4LCAKLSAgICA4MiwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIAotICAgIDgyLCA4NSwgODIsIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4MiwgCi0gICAgODUsIDc5LCAxMjgsIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA3OSwgODgsIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgCi0gICAgODIsIDgyLCA3OSwgODAsIDEyOCwgODIsIDgyLCA3OSwgMTI4LCA4MiwgODIsIDY5LCA4OCwgMTI4LCA4MiwgODIsIDY5LCAKLSAgICA4NCwgMTI4LCA4MiwgODIsIDY5LCA4MCwgMTI4LCA4MiwgODIsIDY5LCA3MiwgMTI4LCA4MiwgODIsIDY5LCAyMDAsIDgyLCAKLSAgICA4MiwgNjksIDEyOCwgODIsIDgyLCA2NSwgODgsIDEyOCwgODIsIDgyLCA2NSwgMTI4LCA4MiwgNzksIDg3LCA2NiwgNzksIAotICAgIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDg0LCA3MywgCi0gICAgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIDY4LCA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAKLSAgICAxOTYsIDgyLCA3OSwgODMsIDcyLCAxMjgsIDgyLCA3OSwgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgODMsIAotICAgIDY5LCAxMjgsIDgyLCA3OSwgNzksIDg0LCAxMjgsIDgyLCA3OSwgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCA3OSwgCi0gICAgNzksIDc1LCAxMjgsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgyLCA3OSwgNzksIDEyOCwgODIsIDc5LCA3NywgNjUsIDIwNiwgCi0gICAgODIsIDc5LCA3NywgMTI4LCA4MiwgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCAKLSAgICA2OSwgODQsIDEyOCwgODIsIDc5LCA2NywgMjAzLCA4MiwgNzksIDY3LCAxMjgsIDgyLCA3OSwgNjYsIDY1LCA4NCwgMTI4LCAKLSAgICA4MiwgNzksIDY1LCA4MywgODQsIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAxMjgsIDgyLCA3OSwgNjUsIDEyOCwgODIsIAotICAgIDc4LCA4OSwgNzMsIDc4LCAxOTksIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCA4MiwgNzgsIDc5LCA3OSwgMjA2LCA4MiwgCi0gICAgNzgsIDY1LCAyMDUsIDgyLCA3NCwgNjksIDIxMSwgODIsIDc0LCA2OSwgMTI4LCA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgCi0gICAgNjksIDgyLCAxMjgsIDgyLCA3MywgODQsIDg1LCA2NSwgNzYsIDEyOCwgODIsIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIAotICAgIDEyOCwgODIsIDczLCA4NCwgODMsIDczLCAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDgzLCA3MiwgCi0gICAgMTI4LCA4MiwgNzMsIDgyLCA2NSwgMTI4LCA4MiwgNzMsIDgwLCAxMjgsIDgyLCA3MywgNzgsIDcxLCAyMTEsIDgyLCA3MywgCi0gICAgNzgsIDcwLCA3OSwgODIsIDkwLCA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCAKLSAgICA2NSwgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzMsIDEyOCwgODIsIDczLCA3MSwgODYsIAotICAgIDY5LCA2OCwgNzMsIDE5NSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODIsIDczLCA3MSwgCi0gICAgNzIsIDg0LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDc2LCA2OSwgNzAsIAotICAgIDIxMiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgCi0gICAgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIAotICAgIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgCi0gICAgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIAotICAgIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgCi0gICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODIsIDczLCAKLSAgICA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzIsIDczLCAKLSAgICA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzIsIAotICAgIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgCi0gICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDg0LCA3MywgCi0gICAgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODAsIDcyLCAKLSAgICA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgCi0gICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKLSAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDczLCAKLSAgICA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzUsIDczLCA4OSwgCi0gICAgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCi0gICAgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDY3LCA3MywgNjksIDg1LCAKLSAgICA2NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgMjA0LCA4MiwgNzMsIDY5LCA3NiwgMTI4LCA4MiwgNzMsIDY5LCA2OSwgMTI4LCAKLSAgICA4MiwgNzMsIDY3LCA2OSwgNzcsIDEyOCwgODIsIDczLCA2NywgNjksIDEyOCwgODIsIDczLCA2NywgMTk3LCA4MiwgNzMsIAotICAgIDY2LCA2NiwgNzksIDc4LCAxMjgsIDgyLCA3MywgNjUsIDIwNCwgODIsIDcyLCA3OSwgODQsIDczLCAxOTUsIDgyLCA3MiwgCi0gICAgNzksIDEyOCwgODIsIDcyLCAyMDcsIDgyLCA3MiwgNjUsIDEyOCwgODIsIDcxLCA4OSwgNzMsIDc4LCA3MSwgODMsIDEyOCwgCi0gICAgODIsIDcxLCA4OSwgNjUsIDc4LCAxMjgsIDgyLCA3MSwgODksIDE5MywgODIsIDY5LCA4NiwgNzksIDc2LCA4NiwgNzMsIDc4LCAKLSAgICAxOTksIDgyLCA2OSwgODYsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODYsIDc3LCA2NSwgCi0gICAgMTI4LCA4MiwgNjksIDg2LCA3MywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCAxMjgsIDgyLCAKLSAgICA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDE5NywgODIsIDY5LCA4NSwgODgsIAotICAgIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDIwNiwgODIsIDY5LCA4NCwgCi0gICAgODIsIDc5LCA3MCwgNzYsIDY5LCAyMTYsIDgyLCA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODQsIDc5LCAKLSAgICA4MiwgODQsIDEyOCwgODIsIDY5LCA4MywgODUsIDgwLCA3MywgNzgsIDg1LCA4MywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIAotICAgIDc5LCA3OSwgNzcsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgzLCA4NCwgCi0gICAgMTI4LCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA4MywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAKLSAgICAxMjgsIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgODQsIAotICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDczLCA2OCwgNjksIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgCi0gICAgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCA3MSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIDc4LCAKLSAgICAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgNjksIAotICAgIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgNzIsIDEyOCwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgNjksIDE5NiwgCi0gICAgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA2OSwgNjUsIDIxMiwgODIsIDY5LCA4MCwgNjUsIAotICAgIDEyOCwgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCA4NCwgNzksIDcxLCA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgCi0gICAgMTI4LCA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIDEyOCwgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgCi0gICAgNjksIDc2LCA3MywgNzEsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCAKLSAgICA3NiwgNjksIDY1LCA4MywgNjksIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIAotICAgIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDY1LCAxMjgsIDgyLCA2OSwgNzQsIDY1LCA3OCwgCi0gICAgMTk5LCA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTIsIDEyOCwgODIsIDY5LCAKLSAgICA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MSwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUwLCAxMjgsIAotICAgIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDIxMSwgODIsIDY5LCA3MSwgCi0gICAgNzMsIDgzLCA4NCwgNjksIDgyLCA2OSwgMTk2LCA4MiwgNjksIDcxLCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDcxLCAKLSAgICA3MywgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA3MywgNjUsIDEyOCwgODIsIDY5LCA3MCwgNjksIDgyLCA2OSwgNzgsIAorICAgIDg2LCA3MywgNjUsIDIwNiwgODMsIDcyLCA2NSwgODYsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDg1LCAxMjgsIDgzLCA3MiwgCisgICAgNjUsIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCA4NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjEzLCA4MywgNzIsIDY1LCAKKyAgICA4MiwgODAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIwOCwgODMsIDcyLCA2NSwgODIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIAorICAgIDgyLCA1MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMTc4LCA4MywgNzIsIDY1LCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA4MCwgNjksIDgzLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCAxOTcsIDgzLCA3MiwgNjUsIDgwLCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA4MywgNzIsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIAorICAgIDc3LCA4MiwgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3NiwgODMsIDcyLCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA3NSwgODQsIDczLCAxMjgsIDgzLCA3MiwgNjUsIDczLCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAKKyAgICAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIAorICAgIDY4LCA2OCwgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgNzIsIDY1LCAxOTYsIDgzLCA3MiwgNjUsIDY2LCA1NCwgCisgICAgMTI4LCA4MywgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA1NCwgMTI4LCA4MywgNzIsIDY1LCA1MSwgMTI4LCA4MywgCisgICAgNzIsIDY1LCAxNzksIDgzLCA3MSwgODIsIDE5MywgODMsIDcxLCA3OSwgMjEwLCA4MywgNzEsIDY3LCAxMjgsIDgzLCA3MSwgCisgICAgNjUsIDIxNSwgODMsIDcxLCA2NSwgMTk0LCA4MywgNzEsIDEyOCwgODMsIDY5LCA4OCwgODQsIDg1LCA3NiwgMTkzLCA4MywgCisgICAgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDg4LCA4NCwgNjUsIDc4LCAyMTEsIDgzLCA2OSwgODYsIDY5LCAKKyAgICA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIAorICAgIDc4LCA4NCwgMjE3LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgCisgICAgNjksIDc4LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNjksIDg2LCA2OSwgNzgsIDQ1LCAKKyAgICA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCAyMDYsIDgzLCA2OSwgODUsIDg4LCAxMjgsIAorICAgIDgzLCA2OSwgODUsIDc4LCA4OSwgNjUsIDc3LCAxMjgsIDgzLCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDY5LCA4NCwgCisgICAgNzAsIDc5LCA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgNjksIDgyLCA4NCwgNzMsIDg1LCAyMTEsIDgzLCA2OSwgODMsIDgxLCAKKyAgICA4NSwgNzMsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNjksIDgzLCA2NSwgNzcsIDE5NywgODMsIAorICAgIDY5LCA4MiwgODYsIDczLCA2NywgMTk3LCA4MywgNjksIDgyLCA3MywgNzAsIDgzLCAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgCisgICAgMjExLCA4MywgNjksIDgxLCA4NSwgNjksIDc4LCA2NywgMTk3LCA4MywgNjksIDgwLCA4NCwgNjksIDc3LCA2NiwgNjksIDgyLCAKKyAgICAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIAorICAgIDc5LCAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgNzMsIDEyOCwgODMsIDY5LCA3NywgCisgICAgODUsIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA3NywgNzUsIAorICAgIDEyOCwgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgNzcsIDczLCA4MywgNzksIDcwLCAKKyAgICAyMTIsIDgzLCA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDc3LCA3MywgNzcsIAorICAgIDczLCA3OCwgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDIxMiwgODMsIDY5LCA3NywgCisgICAgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDIwNiwgODMsIDY5LCAKKyAgICA3NywgNzMsIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgCisgICAgNzYsIDE5NywgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgNjksIDc3LCA3MywgNDUsIDg2LCAKKyAgICA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIAorICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIAorICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIAorICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTcsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTQsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTEsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDgsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU1LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUyLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ5LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTEsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDgsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTQsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTEsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU1LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCisgICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU1LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAorICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAKKyAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ5LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ5LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIAorICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTEsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDgsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUyLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDgsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAorICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKKyAgICA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgCisgICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTcsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTQsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTQsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCisgICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIAorICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDY5LCAxOTYsIDgzLCA2OSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAKKyAgICAxOTMsIDgzLCA2OSwgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCAKKyAgICA4MywgNjksIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCA2OCwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDY5LCA2OSwgCisgICAgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDY3LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA2OSwgNjcsIDgyLCA2OSwgODQsIAorICAgIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgCisgICAgODMsIDY5LCA2NSwgODQsIDEyOCwgODMsIDY5LCA2NSwgNzYsIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCAKKyAgICA4MywgNjgsIDc5LCA3OCwgMTk5LCA4MywgNjgsIDEyOCwgODMsIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIAorICAgIDgwLCA3NiwgNjksIDEyOCwgODMsIDY3LCA4MiwgNzksIDc2LCA3NiwgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAKKyAgICAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIAorICAgIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgNjcsIDc5LCA4MiwgODAsIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgCisgICAgODIsIDY5LCAxMjgsIDgzLCA2NywgNzMsIDgzLCA4MywgNzksIDgyLCA4MywgMTI4LCA4MywgNjcsIDczLCAxMjgsIDgzLCAKKyAgICA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDcyLCA4NywgMTkzLCA4MywgNjcsIDcyLCA4MiwgNzksIDY5LCA2OCwgNjksIAorICAgIDgyLCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgNzYsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAyMDQsIDgzLCA2NywgCisgICAgNzIsIDc5LCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA2NywgNzIsIDY5LCA3NywgMTkzLCA4MywgNjcsIDY5LCA4MCwgODQsIDY5LCAKKyAgICAyMTAsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCA4NSwgODMsIDEyOCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIAorICAgIDg1LCAyMTEsIDgzLCA2NywgNjUsIDIwNiwgODMsIDY3LCA2NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgNjYsIDg1LCAxOTQsIAorICAgIDgzLCA2NiwgODIsIDg1LCAyMDQsIDgzLCA2NSwgODksIDczLCA4MywgMjAxLCA4MywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4MywgNjUsIDg5LCAxMjgsIDgzLCA2NSwgODgsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODMsIDY1LCAKKyAgICA4OCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA2NSwgODcsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg3LCAxMjgsIAorICAgIDgzLCA2NSwgODYsIDc5LCA4NSwgODIsIDczLCA3OCwgMTk5LCA4MywgNjUsIDg1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA4NCwgCisgICAgODUsIDgyLCA3OCwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgMTI4LCA4MywgNjUsIDg0LCAKKyAgICA3NSwgNjUsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIAorICAgIDcyLCA2OSwgNzYsIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgCisgICAgODMsIDY1LCA4MywgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCAKKyAgICA4MiwgMTI4LCA4MywgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIAorICAgIDcxLCAxOTMsIDgzLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgODQsIDczLCA3MywgNzcsIDg1LCAKKyAgICAxMjgsIDgzLCA2NSwgNzgsIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCA1MCwgMTI4LCA4MywgNjUsIAorICAgIDc4LCA2OCwgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgCisgICAgNzcsIDg5LCA3OSwgMjAzLCA4MywgNjUsIDc3LCA4NiwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MywgMTI4LCAKKyAgICA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgMTI4LCA4MywgNjUsIDc3LCA3NSwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjksIAorICAgIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDIwMCwgODMsIDY1LCA3NywgNjYsIDY1LCAxMjgsIDgzLCA2NSwgCisgICAgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMjA2LCA4MywgNjUsIDc3LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgODIsIDY5LCAKKyAgICAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNDUsIDUwLCAxMjgsIAorICAgIDgzLCA2NSwgNzYsIDg0LCAxMjgsIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NiwgNzYsIDY1LCA3MiwgCisgICAgNzksIDIxMywgODMsIDY1LCA3NiwgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIDIwNSwgODMsIDY1LCA3NiwgNjUsIDEyOCwgCisgICAgODMsIDY1LCA3NiwgNDUsIDY1LCA3NywgNzcsIDc5LCA3OCwgNzMsIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCAKKyAgICA2NSwgNzUsIDc5LCA4NCwgMTI4LCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIDc1LCAxOTcsIAorICAgIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgCisgICAgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIDEyOCwgODMsIDY1LCAKKyAgICA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAxMjgsIDgzLCA2NSwgNzEsIAorICAgIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDY4LCA3MiwgNjksIDEyOCwgODMsIAorICAgIDY1LCA2OCwgNjksIDEyOCwgODMsIDY1LCA2OCwgMTI4LCA4MywgNjUsIDE5NiwgODMsIDY1LCA2NywgODIsIDczLCA3MCwgCisgICAgNzMsIDY3LCA3MywgNjUsIDIwNCwgODMsIDY1LCA2NSwgNzMsIDEyOCwgODMsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCAKKyAgICA4MywgNjUsIDQ1LCA3MywgMTI4LCA4MywgNjUsIDQ1LCA1MCwgMTI4LCA4MywgNDgsIDUyLCA1NCwgMTI4LCA4MywgNDgsIAorICAgIDUyLCA1MywgMTI4LCA4MywgNDgsIDUyLCA1MiwgMTI4LCA4MywgNDgsIDUyLCA1MSwgMTI4LCA4MywgNDgsIDUyLCA1MCwgCisgICAgMTI4LCA4MywgNDgsIDUyLCA0OSwgMTI4LCA4MywgNDgsIDUyLCA0OCwgMTI4LCA4MywgNDgsIDUxLCA1NywgMTI4LCA4MywgCisgICAgNDgsIDUxLCA1NiwgMTI4LCA4MywgNDgsIDUxLCA1NSwgMTI4LCA4MywgNDgsIDUxLCA1NCwgMTI4LCA4MywgNDgsIDUxLCAKKyAgICA1MywgNjUsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDEyOCwgODMsIDQ4LCA1MSwgNTIsIDEyOCwgODMsIDQ4LCA1MSwgNTEsIAorICAgIDEyOCwgODMsIDQ4LCA1MSwgNTAsIDEyOCwgODMsIDQ4LCA1MSwgNDksIDEyOCwgODMsIDQ4LCA1MSwgNDgsIDEyOCwgODMsIAorICAgIDQ4LCA1MCwgNTcsIDEyOCwgODMsIDQ4LCA1MCwgNTYsIDEyOCwgODMsIDQ4LCA1MCwgNTUsIDEyOCwgODMsIDQ4LCA1MCwgCisgICAgNTQsIDY2LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgMTI4LCA4MywgNDgsIDUwLCAKKyAgICA1MywgMTI4LCA4MywgNDgsIDUwLCA1MiwgMTI4LCA4MywgNDgsIDUwLCA1MSwgMTI4LCA4MywgNDgsIDUwLCA1MCwgMTI4LCAKKyAgICA4MywgNDgsIDUwLCA0OSwgMTI4LCA4MywgNDgsIDUwLCA0OCwgMTI4LCA4MywgNDgsIDQ5LCA1NywgMTI4LCA4MywgNDgsIAorICAgIDQ5LCA1NiwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDEyOCwgODMsIDQ4LCA0OSwgCisgICAgNTQsIDEyOCwgODMsIDQ4LCA0OSwgNTMsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY2LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAKKyAgICA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgMTI4LCA4MywgNDgsIDQ5LCA1MSwgMTI4LCA4MywgNDgsIDQ5LCA1MCwgMTI4LCAKKyAgICA4MywgNDgsIDQ5LCA0OSwgMTI4LCA4MywgNDgsIDQ5LCA0OCwgMTI4LCA4MywgNDgsIDQ4LCA1NywgMTI4LCA4MywgNDgsIAorICAgIDQ4LCA1NiwgMTI4LCA4MywgNDgsIDQ4LCA1NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgCisgICAgNTQsIDEyOCwgODMsIDQ4LCA0OCwgNTMsIDEyOCwgODMsIDQ4LCA0OCwgNTIsIDEyOCwgODMsIDQ4LCA0OCwgNTEsIDEyOCwgCisgICAgODMsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDUwLCAxMjgsIDgzLCA0OCwgNDgsIDQ5LCAxMjgsIDgzLCAKKyAgICA0NSwgODcsIDEyOCwgODMsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgODIsIDg5LCA4OSwgMTI4LCA4MiwgODksIAorICAgIDg4LCAxMjgsIDgyLCA4OSwgODQsIDEyOCwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODksIAorICAgIDgwLCAxMjgsIDgyLCA4NywgNzksIDc5LCAxMjgsIDgyLCA4NywgNzksIDEyOCwgODIsIDg3LCA3MywgNzMsIDEyOCwgODIsIAorICAgIDg3LCA3MywgMTI4LCA4MiwgODcsIDY5LCA2OSwgMTI4LCA4MiwgODcsIDY5LCAxMjgsIDgyLCA4NywgNjUsIDcyLCA2NSwgCisgICAgMTI4LCA4MiwgODcsIDY1LCA2NSwgMTI4LCA4MiwgODcsIDY1LCAxMjgsIDgyLCA4NSwgODgsIDEyOCwgODIsIDg1LCA4NSwgCisgICAgNjYsIDg1LCA4MiwgODUsIDEyOCwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4NSwgODMsIDczLCAKKyAgICAxMjgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4NSwgODIsIDEyOCwgODIsIDg1LCA4MCwgNzMsIDczLCAxMjgsIDgyLCAKKyAgICA4NSwgODAsIDY5LCAxOTcsIDgyLCA4NSwgODAsIDEyOCwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDg1LCA3OSwgODAsIAorICAgIDEyOCwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODUsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgyLCA4NSwgNzgsIDc4LCA3MywgCisgICAgNzgsIDE5OSwgODIsIDg1LCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc4LCAxMjgsIDgyLCA4NSwgNzcsIDIwMSwgCisgICAgODIsIDg1LCA3NywgNjUsIDIwMSwgODIsIDg1LCA3NywgMTI4LCA4MiwgODUsIDIwNSwgODIsIDg1LCA3NiwgNjksIDgyLCAKKyAgICAxMjgsIDgyLCA4NSwgNzYsIDY5LCA0NSwgNjgsIDY5LCA3NiwgNjUsIDg5LCA2OSwgNjgsIDEyOCwgODIsIDg1LCA3NiwgNjksIAorICAgIDEyOCwgODIsIDg1LCA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgCisgICAgNzEsIDY2LCAyMTcsIDgyLCA4NSwgMTk0LCA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgCisgICAgODQsIDY1LCA3MSwgODMsIDEyOCwgODIsIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCAKKyAgICA4OSwgODQsIDEyOCwgODIsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIAorICAgIDgwLCAxMjgsIDgyLCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIAorICAgIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgCisgICAgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDgyLCA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDc5LCAKKyAgICA4OCwgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA4MiwgODIsIDc5LCA4MCwgMTI4LCA4MiwgODIsIDc5LCA3OSwgMTI4LCAKKyAgICA4MiwgODIsIDc5LCAxMjgsIDgyLCA4MiwgNzMsIDczLCAxMjgsIDgyLCA4MiwgNzMsIDEyOCwgODIsIDgyLCA2OSwgODgsIAorICAgIDEyOCwgODIsIDgyLCA2OSwgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIDgyLCA2OSwgNzIsIDEyOCwgODIsIAorICAgIDgyLCA2OSwgMjAwLCA4MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODIsIDY5LCAxMjgsIDgyLCA4MiwgNjUsIDg4LCAxMjgsIAorICAgIDgyLCA4MiwgNjUsIDg1LCAxMjgsIDgyLCA4MiwgNjUsIDczLCAxMjgsIDgyLCA4MiwgNjUsIDY1LCAxMjgsIDgyLCA4MiwgCisgICAgNjUsIDEyOCwgODIsIDc5LCA4NywgNjYsIDc5LCA2NSwgODQsIDEyOCwgODIsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCAKKyAgICA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4NCwgNzMsIDgwLCA4MCwgNjksIDE5NiwgODIsIDc5LCA4NCwgODUsIDc4LCA2OCwgCisgICAgNjUsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDgzLCA3MiwgMTI4LCA4MiwgNzksIDgzLCAKKyAgICA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MiwgNzksIDgzLCA2OSwgMTI4LCA4MiwgNzksIDc5LCA4NCwgMTI4LCA4MiwgNzksIAorICAgIDc5LCA4MywgODQsIDY5LCA4MiwgMTI4LCA4MiwgNzksIDc5LCA3NSwgMTI4LCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MiwgCisgICAgNzksIDc3LCA2NSwgMjA2LCA4MiwgNzksIDc3LCAxMjgsIDgyLCA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgNzksIDcyLCAKKyAgICA3MywgNzgsIDcxLCA4OSwgMTkzLCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MiwgNzksIAorICAgIDY3LCAyMDMsIDgyLCA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgNjUsIDgzLCA4NCwgCisgICAgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCA2NSwgMTI4LCA4MiwgNzgsIDg5LCA3MywgNzgsIDE5OSwgCisgICAgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIDc5LCAyMDYsIDgyLCA3OCwgNjUsIDIwNSwgODIsIDc3LCAKKyAgICA4NCwgMTI4LCA4MiwgNzYsIDc5LCAxMjgsIDgyLCA3NiwgNzcsIDEyOCwgODIsIDc2LCA2OSwgMTI4LCA4MiwgNzQsIDY5LCAKKyAgICAyMTEsIDgyLCA3NCwgNjksIDEyOCwgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCAKKyAgICA4NSwgNjUsIDc2LCAxMjgsIDgyLCA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgCisgICAgMTI4LCA4MiwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDczLCA4MywgNzIsIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgCisgICAgODIsIDczLCA4MCwgMTI4LCA4MiwgNzMsIDc4LCA3MSwgMjExLCA4MiwgNzMsIDc4LCA3MCwgNzksIDgyLCA5MCwgNjUsIDc4LCAKKyAgICA2OCwgNzksIDEyOCwgODIsIDczLCAyMDYsIDgyLCA3MywgNzcsIDcxLCA2NiwgNjUsIDEyOCwgODIsIDczLCA3NSwgODIsIAorICAgIDczLCA3NSwgMTI4LCA4MiwgNzMsIDcxLCA4NiwgNjksIDY4LCA3MywgMTk1LCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgCisgICAgODIsIDY4LCA4MywgMTI4LCA4MiwgNzMsIDcxLCA3MiwgODQsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCAKKyAgICA0NSwgODQsIDc5LCA0NSwgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIAorICAgIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCAKKyAgICA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgCisgICAgODQsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDczLCAKKyAgICA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgCisgICAgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgODMsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIAorICAgIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCAKKyAgICA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCisgICAgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIAorICAgIDg0LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgCisgICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgCisgICAgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCAKKyAgICA3MywgNjksIDg1LCA3NiwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgCisgICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIAorICAgIDY5LCA4NSwgNzcsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCAKKyAgICA3MywgNjksIDg1LCA3NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgCisgICAgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIAorICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCisgICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIAorICAgIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgyLCA3MywgNjksIDg1LCAyMDQsIDgyLCA3MywgNjksIDc2LCAKKyAgICAxMjgsIDgyLCA3MywgNjksIDY5LCAxMjgsIDgyLCA3MywgNjcsIDY5LCA3NywgMTI4LCA4MiwgNzMsIDY3LCA2OSwgMTI4LCAKKyAgICA4MiwgNzMsIDY3LCAxOTcsIDgyLCA3MywgNjYsIDY2LCA3OSwgNzgsIDEyOCwgODIsIDczLCA2NSwgMjA0LCA4MiwgNzIsIAorICAgIDc5LCA4NCwgNzMsIDE5NSwgODIsIDcyLCA3OSwgMTI4LCA4MiwgNzIsIDIwNywgODIsIDcyLCA2NSwgMTI4LCA4MiwgNzEsIAorICAgIDg5LCA3MywgNzgsIDcxLCA4MywgMTI4LCA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgCisgICAgNjksIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODIsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgCisgICAgODIsIDgzLCA2OSwgNjgsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDE5NiwgODIsIDY5LCA4NiwgNjksIDgyLCAKKyAgICA4MywgMTk3LCA4MiwgNjksIDg1LCA4OCwgMTI4LCA4MiwgNjksIDg1LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgNzgsIAorICAgIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCAyMDYsIDgyLCA2OSwgODQsIDgyLCA3OSwgNzAsIDc2LCA2OSwgMjE2LCA4MiwgCisgICAgNjksIDg0LCA4MiwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDg0LCA3OSwgODIsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDg1LCAKKyAgICA4MCwgNzMsIDc4LCA4NSwgODMsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDgyLCA2OSwgODMsIAorICAgIDg0LCA4MiwgNzMsIDY3LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MywgODQsIDEyOCwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgCisgICAgODMsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA4NSwgODIsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgNzYsIDg1LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDgzLCA3MywgODMsIDg0LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIAorICAgIDgzLCA3MywgNjgsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDIwMCwgODIsIDY5LCA4MiwgNjksIDc4LCA3MSwgCisgICAgNzEsIDY1LCA3OCwgMTI4LCA4MiwgNjksIDgyLCA2OSwgNzUsIDY1LCA3OCwgMTI4LCA4MiwgNjksIDgwLCA4MiwgNjksIDgzLCAKKyAgICA2OSwgNzgsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDc2LCA2NSwgNjcsIDY5LCA3NywgNjksIDc4LCAyMTIsIDgyLCA2OSwgODAsIAorICAgIDcyLCAxMjgsIDgyLCA2OSwgODAsIDY5LCA4NCwgNzMsIDg0LCA3MywgNzksIDIwNiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgCisgICAgNjksIDE5NiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA2OSwgNjUsIDIxMiwgODIsIDY5LCAKKyAgICA4MCwgNjUsIDg5LCA2NSwgMTI4LCA4MiwgNjksIDgwLCA2NSwgMTI4LCA4MiwgNjksIDgwLCAxOTMsIDgyLCA2OSwgNzgsIAorICAgIDg0LCA3OSwgNzEsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDc4LCAxMjgsIDgyLCA2OSwgMjA2LCA4MiwgNjksIDc3LCA4NSwgCisgICAgMTI4LCA4MiwgNjksIDc3LCA2OSwgNjgsIDg5LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA3MSwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA4MiwgNjksIDc2LCA3MywgNjksIDg2LCA2OSwgMTk2LCA4MiwgNjksIDc2LCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA4MiwgNjksIAorICAgIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgCisgICAgNjksIDc2LCA2NSwgNjUsIDEyOCwgODIsIDY5LCA3NCwgNjUsIDc4LCAxOTksIDgyLCA2OSwgNzMsIDE5NiwgODIsIDY5LCAKKyAgICA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIAorICAgIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgCisgICAgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgMjExLCA4MiwgNjksIDcxLCA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCAKKyAgICA2OSwgNzEsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzEsIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIAorICAgIDczLCA2NSwgMTI4LCA4MiwgNjksIDcwLCA3OSwgODIsIDc3LCA2OSwgMTk2LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgCiAgICAgNjcsIDE5NywgODIsIDY5LCA2OCwgODUsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCAKICAgICA2NywgODksIDY3LCA3NiwgNzMsIDc4LCAxOTksIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgyLCA2OSwgNjcsIAogICAgIDg0LCA3MywgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAKQEAgLTEyNjUsNTYgKzEzNzcsNTcgQEAKICAgICA4MywgODcsIDY1LCA2OCwgNzMsIDEyOCwgODIsIDY1LCA4MywgNzksIDg1LCAyMDQsIDgyLCA2NSwgODMsIDcyLCA2NSwgCiAgICAgMTI4LCA4MiwgNjUsIDgxLCAxMjgsIDgyLCA2NSwgODAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgyLCA2NSwgNzgsIDcxLCAKICAgICAxOTcsIDgyLCA2NSwgNzgsIDY1LCAxMjgsIDgyLCA2NSwgNzgsIDEyOCwgODIsIDY1LCA3NywgMjExLCA4MiwgNjUsIDc3LCAKLSAgICA2NiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNzMsIDgzLCA3MywgNzgsIAotICAgIDE5OSwgODIsIDY1LCA3MywgODMsIDY5LCAxOTYsIDgyLCA2NSwgNzMsIDc4LCA2NiwgNzksIDg3LCAxMjgsIDgyLCA2NSwgCi0gICAgNzMsIDc2LCA4NywgNjUsIDg5LCAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDIxNywgODIsIDY1LCA3MywgNzYsIAotICAgIDEyOCwgODIsIDY1LCA3MywgNjgsIDIwNywgODIsIDY1LCA3MywgNjgsIDY1LCAxMjgsIDgyLCA2NSwgNzMsIDEyOCwgODIsIAotICAgIDY1LCA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIDIwMCwgODIsIDY1LCA3MCwgNjksIDEyOCwgODIsIDY1LCA2OSwgCi0gICAgNzcsIDEyOCwgODIsIDY1LCA2OCwgNzMsIDc5LCA2NSwgNjcsIDg0LCA3MywgODYsIDE5NywgODIsIDY1LCA2OCwgNzMsIDc5LCAKLSAgICAxMjgsIDgyLCA2NSwgNjgsIDczLCAyMDcsIDgyLCA2NSwgNjgsIDIwMSwgODIsIDY1LCA2OCwgMTI4LCA4MiwgNjUsIDE5NiwgCi0gICAgODIsIDY1LCA2NywgODEsIDg1LCA2OSwgMjEyLCA4MiwgNjUsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNjYsIDY2LCAKLSAgICA3MywgODQsIDEyOCwgODIsIDY1LCA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIAotICAgIDEyOCwgODIsIDY1LCA2NSwgMTI4LCA4MiwgNjUsIDUxLCAxMjgsIDgyLCA2NSwgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNTcsIAotICAgIDEyOCwgODIsIDQ4LCA1MCwgNTYsIDEyOCwgODIsIDQ4LCA1MCwgNTUsIDEyOCwgODIsIDQ4LCA1MCwgNTQsIDEyOCwgODIsIAotICAgIDQ4LCA1MCwgNTMsIDEyOCwgODIsIDQ4LCA1MCwgNTIsIDEyOCwgODIsIDQ4LCA1MCwgNTEsIDEyOCwgODIsIDQ4LCA1MCwgCi0gICAgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNDksIDEyOCwgODIsIDQ4LCA1MCwgNDgsIDEyOCwgODIsIDQ4LCA0OSwgNTcsIDEyOCwgCi0gICAgODIsIDQ4LCA0OSwgNTYsIDEyOCwgODIsIDQ4LCA0OSwgNTUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDgyLCAKLSAgICA0OCwgNDksIDU0LCAxMjgsIDgyLCA0OCwgNDksIDUzLCAxMjgsIDgyLCA0OCwgNDksIDUyLCAxMjgsIDgyLCA0OCwgNDksIAotICAgIDUxLCAxMjgsIDgyLCA0OCwgNDksIDUwLCAxMjgsIDgyLCA0OCwgNDksIDQ5LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCA2NSwgCi0gICAgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgMTI4LCA4MiwgNDgsIDQ4LCA1NywgMTI4LCA4MiwgNDgsIDQ4LCA1NiwgMTI4LCA4MiwgCi0gICAgNDgsIDQ4LCA1NSwgMTI4LCA4MiwgNDgsIDQ4LCA1NCwgMTI4LCA4MiwgNDgsIDQ4LCA1MywgMTI4LCA4MiwgNDgsIDQ4LCAKLSAgICA1MiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjYsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIAotICAgIDUxLCAxMjgsIDgyLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgMTI4LCA4MiwgNDgsIDQ4LCA0OSwgCi0gICAgMTI4LCA4MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODEsIDg5LCA4OCwgMTI4LCA4MSwgODksIDg1LCAxMjgsIDgxLCA4OSwgCi0gICAgODQsIDEyOCwgODEsIDg5LCA4MiwgODgsIDEyOCwgODEsIDg5LCA4MiwgMTI4LCA4MSwgODksIDgwLCAxMjgsIDgxLCA4OSwgCi0gICAgNzksIDEyOCwgODEsIDg5LCA3MywgMTI4LCA4MSwgODksIDY5LCA2OSwgMTI4LCA4MSwgODksIDY5LCAxMjgsIDgxLCA4OSwgCi0gICAgNjUsIDY1LCAxMjgsIDgxLCA4OSwgNjUsIDEyOCwgODEsIDg5LCAxMjgsIDgxLCA4NywgNzMsIDEyOCwgODEsIDg3LCA2OSwgCi0gICAgNjksIDEyOCwgODEsIDg3LCA2OSwgMTI4LCA4MSwgODcsIDY1LCA2NSwgMTI4LCA4MSwgODcsIDY1LCAxMjgsIDgxLCA4NSwgCi0gICAgODgsIDEyOCwgODEsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCAxMjgsIDgxLCA4NSwgCi0gICAgODQsIDEyOCwgODEsIDg1LCA4MywgNzIsIDgzLCA3MiwgNjUsIDg5LCA2NSwgMTI4LCA4MSwgODUsIDgyLCA4OCwgMTI4LCAKLSAgICA4MSwgODUsIDgyLCAxMjgsIDgxLCA4NSwgODAsIDEyOCwgODEsIDg1LCA3OSwgODgsIDEyOCwgODEsIDg1LCA3OSwgODQsIAotICAgIDE5NywgODEsIDg1LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNzksIDg0LCAxMjgsIDgxLCA4NSwgCi0gICAgNzksIDgwLCAxMjgsIDgxLCA4NSwgNzksIDEyOCwgODEsIDg1LCA3NSwgMTI4LCA4MSwgODUsIDczLCA3OCwgODQsIDY5LCAKLSAgICA4MywgODMsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2OSwgODMsIDczLCA3NywgCi0gICAgMTkzLCA4MSwgODUsIDczLCA3OCwgNjcsIDg1LCA3OCwgODgsIDEyOCwgODEsIDg1LCA3MywgNzgsIDY1LCA4MiwgNzMsIDg1LCAKLSAgICAyMTEsIDgxLCA4NSwgNzMsIDc2LCA3NiwgMTI4LCA4MSwgODUsIDczLCA2NywgMjAzLCA4MSwgODUsIDczLCAxMjgsIDgxLCAKLSAgICA4NSwgNzAsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCA2OSwgMTk2LCA4MSwgODUsIDY5LCA4MywgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgxLCA4NSwgNjksIDY5LCAyMDYsIDgxLCA4NSwgNjksIDEyOCwgODEsIDg1LCA2NiwgODUsIDg0LCA4MywgMTI4LCAKLSAgICA4MSwgODUsIDY1LCA4NCwgNjksIDgyLCA3OCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCA4MywgCi0gICAgMTI4LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMjExLCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMTI4LCAKLSAgICA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCAyMTAsIDgxLCA4NSwgNjUsIDc4LCA4NCwgNzMsIDg0LCAyMTcsIDgxLCA4NSwgNjUsIAotICAgIDY4LCA4MiwgODUsIDgwLCA3NiwgMTk3LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgODQsIDEyOCwgODEsIDg1LCA2NSwgCi0gICAgNjgsIDgyLCA2NSwgNzgsIDIxMiwgODEsIDg1LCA2NSwgNjgsIDEyOCwgODEsIDg1LCA2NSwgMTk2LCA4MSwgODUsIDY1LCAKLSAgICAxMjgsIDgxLCA4NSwgMTI4LCA4MSwgMjA4LCA4MSwgNzksIDg4LCAxMjgsIDgxLCA3OSwgODQsIDEyOCwgODEsIDc5LCA4MCwgCi0gICAgNzIsIDEyOCwgODEsIDc5LCA4MCwgNjUsIDEyOCwgODEsIDc5LCA4MCwgMTI4LCA4MSwgNzksIDc5LCAxMjgsIDgxLCA3OSwgCi0gICAgMjA3LCA4MSwgNzksIDcwLCAxMjgsIDgxLCA3OSwgMTk4LCA4MSwgNzksIDY1LCAxMjgsIDgxLCA3OSwgMTI4LCA4MSwgNzgsIAotICAgIDEyOCwgODEsIDczLCA4OCwgMTI4LCA4MSwgNzMsIDg0LCA4MywgNjUsIDEyOCwgODEsIDczLCA4NCwgMTI4LCA4MSwgNzMsIAotICAgIDgwLCAxMjgsIDgxLCA3MywgNzMsIDEyOCwgODEsIDczLCA2OSwgODgsIDEyOCwgODEsIDczLCA2OSwgODQsIDEyOCwgODEsIAotICAgIDczLCA2OSwgODAsIDEyOCwgODEsIDczLCA2OSwgMTI4LCA4MSwgNzMsIDEyOCwgODEsIDcyLCA4NywgNzMsIDEyOCwgODEsIAotICAgIDcyLCA4NywgNjksIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MSwgCi0gICAgNzIsIDg3LCA2NSwgMTI4LCA4MSwgNzIsIDg1LCAxMjgsIDgxLCA3MiwgNzksIDEyOCwgODEsIDcyLCA3MywgMTI4LCA4MSwgCi0gICAgNzIsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDY5LCAxMjgsIDgxLCA3MiwgNjUsIDY1LCAxMjgsIDgxLCA3MiwgNjUsIDEyOCwgCisgICAgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDc1LCA2NSwgNjUsIDgyLCAKKyAgICA2NSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCA4MiwgNjUsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNzMsIAorICAgIDgzLCA2OSwgMTk2LCA4MiwgNjUsIDczLCA3OCwgNjYsIDc5LCA4NywgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCA4OSwgCisgICAgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCAyMTcsIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDgyLCA2NSwgNzMsIDY4LCAKKyAgICAyMDcsIDgyLCA2NSwgNzMsIDY4LCA2NSwgMTI4LCA4MiwgNjUsIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgCisgICAgMjAwLCA4MiwgNjUsIDcyLCAxMjgsIDgyLCA2NSwgNzAsIDY5LCAxMjgsIDgyLCA2NSwgNjksIDc3LCAxMjgsIDgyLCA2NSwgCisgICAgNjgsIDczLCA3OSwgNjUsIDY3LCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2NSwgNjgsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDY4LCAKKyAgICA3MywgMjA3LCA4MiwgNjUsIDY4LCAyMDEsIDgyLCA2NSwgNjgsIDEyOCwgODIsIDY1LCAxOTYsIDgyLCA2NSwgNjcsIDgxLCAKKyAgICA4NSwgNjksIDIxMiwgODIsIDY1LCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDY2LCA2NiwgNzMsIDg0LCAxMjgsIAorICAgIDgyLCA2NSwgNjYsIDY2LCA3MywgMjEyLCA4MiwgNjUsIDY2LCAxMjgsIDgyLCA2NSwgNjUsIDczLCAxMjgsIDgyLCA2NSwgCisgICAgNTEsIDEyOCwgODIsIDY1LCA1MCwgMTI4LCA4MiwgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgMTI4LCA4MiwgCisgICAgNDgsIDUwLCA1NiwgMTI4LCA4MiwgNDgsIDUwLCA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgNDgsIDUwLCAKKyAgICA1MywgMTI4LCA4MiwgNDgsIDUwLCA1MiwgMTI4LCA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCA1MCwgMTI4LCAKKyAgICA4MiwgNDgsIDUwLCA0OSwgMTI4LCA4MiwgNDgsIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCA4MiwgNDgsIAorICAgIDQ5LCA1NiwgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgCisgICAgNTQsIDEyOCwgODIsIDQ4LCA0OSwgNTMsIDEyOCwgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgODIsIDQ4LCA0OSwgNTAsIDEyOCwgODIsIDQ4LCA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDgyLCAKKyAgICA0OCwgNDksIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDgyLCA0OCwgNDgsIDU0LCAxMjgsIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIDUyLCAxMjgsIAorICAgIDgyLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDEyOCwgCisgICAgODIsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAxMjgsIDgyLCAKKyAgICA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MSwgODksIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCA4NCwgMTI4LCAKKyAgICA4MSwgODksIDgyLCA4OCwgMTI4LCA4MSwgODksIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCA3OSwgMTI4LCAKKyAgICA4MSwgODksIDczLCAxMjgsIDgxLCA4OSwgNjksIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCA2NSwgNjUsIAorICAgIDEyOCwgODEsIDg5LCA2NSwgMTI4LCA4MSwgODksIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCA2OSwgMTI4LCAKKyAgICA4MSwgODcsIDY5LCAxMjgsIDgxLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCA4OCwgMTI4LCAKKyAgICA4MSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCA4NCwgMTI4LCAKKyAgICA4MSwgODUsIDgzLCA3MiwgODMsIDcyLCA2NSwgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIDgxLCA4NSwgODIsIAorICAgIDEyOCwgODEsIDg1LCA4MCwgMTI4LCA4MSwgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgMTk3LCA4MSwgODUsIAorICAgIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCA3OSwgODAsIDEyOCwgCisgICAgODEsIDg1LCA3OSwgMTI4LCA4MSwgODUsIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIDgzLCA4MywgNjksIDc4LCAKKyAgICA2NywgNjksIDEyOCwgODEsIDg1LCA3MywgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAxOTMsIDgxLCA4NSwgNzMsIAorICAgIDc4LCA2NywgODUsIDc4LCA4OCwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgODEsIDg1LCA3MywgCisgICAgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIDY3LCAyMDMsIDgxLCA4NSwgNzMsIDEyOCwgODEsIDg1LCA3MCwgMTI4LCA4MSwgCisgICAgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDY5LCAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgNjksIAorICAgIDIwNiwgODEsIDg1LCA2OSwgMTI4LCA4MSwgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDg0LCA2OSwgCisgICAgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDgyLCAKKyAgICA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIAorICAgIDIxMCwgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCA4NSwgODAsIDc2LCAKKyAgICAxOTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgCisgICAgMjEyLCA4MSwgODUsIDY1LCA2OCwgMTI4LCA4MSwgODUsIDY1LCAxOTYsIDgxLCA4NSwgNjUsIDEyOCwgODEsIDg1LCAxMjgsIAorICAgIDgxLCAyMDgsIDgxLCA3OSwgODgsIDEyOCwgODEsIDc5LCA4NCwgMTI4LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzksIAorICAgIDgwLCA2NSwgMTI4LCA4MSwgNzksIDgwLCAxMjgsIDgxLCA3OSwgNzksIDEyOCwgODEsIDc5LCAyMDcsIDgxLCA3OSwgNzAsIAorICAgIDEyOCwgODEsIDc5LCAxOTgsIDgxLCA3OSwgNjUsIDEyOCwgODEsIDc5LCAxMjgsIDgxLCA3OCwgMTI4LCA4MSwgNzMsIDg4LCAKKyAgICAxMjgsIDgxLCA3MywgODQsIDgzLCA2NSwgMTI4LCA4MSwgNzMsIDg0LCAxMjgsIDgxLCA3MywgODAsIDEyOCwgODEsIDczLCAKKyAgICA3MywgMTI4LCA4MSwgNzMsIDY5LCA4OCwgMTI4LCA4MSwgNzMsIDY5LCA4NCwgMTI4LCA4MSwgNzMsIDY5LCA4MCwgMTI4LCAKKyAgICA4MSwgNzMsIDY5LCAxMjgsIDgxLCA3MywgMTI4LCA4MSwgNzIsIDg3LCA3MywgMTI4LCA4MSwgNzIsIDg3LCA2OSwgNjksIAorICAgIDEyOCwgODEsIDcyLCA4NywgNjksIDEyOCwgODEsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAxMjgsIAorICAgIDgxLCA3MiwgODUsIDEyOCwgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCA3MiwgNjksIDY5LCAxMjgsIAorICAgIDgxLCA3MiwgNjksIDEyOCwgODEsIDcyLCA2NSwgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAxMjgsIAogICAgIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCA4NSwgCiAgICAgMTI4LCA4MSwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgODEsIDY1LCA4MiwgNzgsIDY5LCAyMTcsIDgxLCA2NSwgODIsIDEyOCwgCiAgICAgODEsIDY1LCA4MSwgMTI4LCA4MSwgNjUsIDgwLCA3MiwgMTI4LCA4MSwgNjUsIDc3LCA2NSwgODQsIDgzLCAxMjgsIDgxLCAKQEAgLTEzMjgsMjk3ICsxNDQxLDMwNyBAQAogICAgIDg3LCA3OSwgNzksIDEyOCwgODAsIDg3LCA3OSwgMTI4LCA4MCwgODcsIDIwNywgODAsIDg3LCA3MywgNzMsIDEyOCwgODAsIAogICAgIDg3LCA3MywgMTI4LCA4MCwgODcsIDY5LCA2OSwgMTI4LCA4MCwgODcsIDY5LCAxMjgsIDgwLCA4NywgNjUsIDY1LCAxMjgsIAogICAgIDgwLCA4NywgMTI4LCA4MCwgODYsIDEyOCwgODAsIDg1LCA4OCwgMTI4LCA4MCwgODUsIDg1LCA4NCwgMTI4LCA4MCwgODUsIAotICAgIDg0LCA4MiwgNjksIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgODQsIDEyOCwgODAsIDg1LCAKLSAgICAyMTIsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc1LCA2NSwgCi0gICAgMTI4LCA4MCwgODUsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAxMjgsIDgwLCA4NSwgODIsIDgzLCAKLSAgICA2OSwgMTI4LCA4MCwgODUsIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzMsIDg0LCA4OSwgMTI4LCA4MCwgODUsIAotICAgIDgyLCA3MywgNzAsIDg5LCAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCA4MCwgODUsIDgwLCAxMjgsIAotICAgIDgwLCA4NSwgNzksIDg4LCAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIDEyOCwgODAsIDg1LCA3OCwgCi0gICAgNzEsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4NSwgNzcsIAotICAgIDgwLCAxMjgsIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIDE5NSwgODAsIAotICAgIDg1LCA2NSwgODEsIDEyOCwgODAsIDg1LCA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgODUsIDEyOCwgODAsIAotICAgIDg0LCA3MiwgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgCi0gICAgNzAsIDczLCA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIAotICAgIDgzLCA4NCwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAKLSAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgCi0gICAgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgMTI4LCA4MCwgODIsIDc5LCA4NiwgNjksIDEyOCwgCi0gICAgODAsIDgyLCA3OSwgODQsIDc5LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNzksIDIxMSwgODAsIDgyLCAKLSAgICA3OSwgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDgwLCA4MiwgNzksIDgwLCA3OSwgCi0gICAgODIsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA4MCwgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCA4MCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODAsIAotICAgIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIDcxLCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3NiwgCi0gICAgNjUsIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCAKLSAgICA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCA4MywgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA3MCwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgMjEyLCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgCi0gICAgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODQsIDgyLCAxOTMsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIAotICAgIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgNzMsIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCA2NywgCi0gICAgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3NywgNjksIDEyOCwgODAsIDgyLCA3MywgNzcsIDE5NywgODAsIDgyLCAKLSAgICA2OSwgODYsIDczLCA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDgwLCA4MiwgNjksIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCAKLSAgICA2OCwgNjksIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIAotICAgIDY5LCA3MCwgNjUsIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgODAsIDczLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgCi0gICAgODIsIDY5LCA2NywgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDgzLCAxMjgsIDgwLCAKLSAgICA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxOTYsIDgwLCA4MiwgNjksIAotICAgIDY3LCA2OSwgNjgsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDE5NywgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgCi0gICAgNzMsIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCAyMDEsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCAKLSAgICA3OSwgODksIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCAyMTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIAotICAgIDg1LCA3OSwgNzgsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDgwLCA4MiwgNjUsIDc3LCA0NSwgCi0gICAgNjYsIDY5LCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgMjAxLCA4MCwgODIsIDY1LCA3NywgMTI4LCAKLSAgICA4MCwgODIsIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCA4MCwgODAsIDg2LCAxMjgsIDgwLCA4MCwgNzcsIDEyOCwgODAsIDgwLCAKLSAgICA2NSwgMTI4LCA4MCwgNzksIDg5LCAxMjgsIDgwLCA3OSwgODgsIDEyOCwgODAsIDc5LCA4NywgNjksIDgyLCAyMTEsIDgwLCAKLSAgICA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MCwgNzksIDg3LCA2OCwgNjksIAotICAgIDgyLCAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIDc2LCA4NCwgODIsIDIxNywgODAsIDc5LCA4NSwgCi0gICAgNjcsIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCAKLSAgICA4MCwgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA3OSwgODMsIAotICAgIDg0LCA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNzksIDgzLCA4NCwgMTI4LCA4MCwgCi0gICAgNzksIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDgwLCA3OSwgODIsIDgyLCAKLSAgICA2OSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCAyMTEsIDgwLCA3OSwgODAsIAotICAgIDgwLCA2OSwgODIsIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgNzksIDIwOCwgODAsIDc5LCA3OSwgNjgsIDc2LCA2OSwgCi0gICAgMTI4LCA4MCwgNzksIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCA3OSwgMTI4LCA4MCwgNzksIDIwNiwgODAsIDc5LCA3NiwgCi0gICAgNzMsIDgzLCA3MiwgMTI4LCA4MCwgNzksIDc2LCA3MywgNjcsIDE5NywgODAsIDc5LCA3NiwgMjAxLCA4MCwgNzksIDc2LCAKLSAgICA2OSwgMTI4LCA4MCwgNzksIDc2LCAxOTcsIDgwLCA3OSwgNzUsIDgyLCA4OSwgODQsIDczLCA2OSwgMTI4LCA4MCwgNzksIAotICAgIDc1LCA3OSwgNzQsIDczLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgMjExLCA4MCwgNzksIDczLCA3OCwgODQsIDc5LCAKLSAgICAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgODAsIAotICAgIDc5LCA3MywgNzgsIDg0LCAxMjgsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIDgwLCA3OSwgNjksIDg0LCA4MiwgMjE3LCA4MCwgCi0gICAgNzksIDY5LCA4NCwgNzMsIDE5NSwgODAsIDc5LCA2OCwgNjUsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA2NSwgMTI4LCAKLSAgICA4MCwgNzksIDEyOCwgODAsIDIwNywgODAsIDc4LCA2OSwgODUsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgwLCA3NiwgODUsIAotICAgIDg0LCA3OSwgMTI4LCA4MCwgNzYsIDg1LCA4MywgNDUsIDc3LCA3MywgNzgsIDg1LCAyMTEsIDgwLCA3NiwgODUsIDgzLCAKLSAgICAxMjgsIDgwLCA3NiwgODUsIDgyLCA2NSwgNzYsIDEyOCwgODAsIDc2LCA4NSwgNzcsIDY5LCAxOTYsIDgwLCA3NiwgODUsIAotICAgIDc3LCAxMjgsIDgwLCA3NiwgODUsIDc1LCAxMjgsIDgwLCA3NiwgODUsIDcxLCAxMjgsIDgwLCA3NiwgNzksIDg3LCAxMjgsIAotICAgIDgwLCA3NiwgNzksIDgwLCA3MiwgODUsIDEyOCwgODAsIDc2LCA2OSwgODQsIDcyLCA4MiwgNzksIDc4LCAxMjgsIDgwLCA3NiwgCi0gICAgNjUsIDg5LCA3MywgNzgsIDE5OSwgODAsIDc2LCA2NSwgODMsIDg0LCA3MywgNjcsIDgzLCAxMjgsIDgwLCA3NiwgNjUsIDc4LCAKLSAgICA2OSwgMTI4LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MCwgNzYsIDY1LCA3OCwgNjcsIDIwMywgODAsIDc2LCA2NSwgNzUsIAotICAgIDEyOCwgODAsIDc2LCA2NSwgNzEsIDczLCA3OSwgMjExLCA4MCwgNzYsIDY1LCA2NywgNjksIDcyLCA3OSwgNzYsIDY4LCA2OSwgCi0gICAgMjEwLCA4MCwgNzYsIDY1LCA2NywgMTk3LCA4MCwgNzYsIDY1LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA3MywgNjcsIDY1LCAKLSAgICA4NCwgNzksIDEyOCwgODAsIDczLCA5MCwgOTAsIDY1LCAxMjgsIDgwLCA3MywgODgsIDEyOCwgODAsIDczLCA4NywgODIsIAotICAgIDEyOCwgODAsIDczLCA4NCwgNjcsIDcyLCA3MCwgNzksIDgyLCA3NSwgMTI4LCA4MCwgNzMsIDg0LCA2NywgNzIsIDcwLCA3OSwgCi0gICAgODIsIDIwMywgODAsIDczLCA4NCwgMTI4LCA4MCwgNzMsIDgzLCA4NCwgNzksIDc2LCAxMjgsIDgwLCA3MywgODMsIDY5LCAKLSAgICA3NiwgNjksIDcyLCAxMjgsIDgwLCA3MywgODMsIDY3LCA2OSwgODMsIDEyOCwgODAsIDczLCA4MiwgNzMsIDcxLCAxMjgsIAotICAgIDgwLCA3MywgODIsIDczLCAxOTksIDgwLCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDgwLCA3MywgODAsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgODAsIDczLCA4MCwgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDgwLCA3MywgODAsIDY1LCAKLSAgICA2OSwgNzcsIDY2LCA2NSwgMTI4LCA4MCwgNzMsIDgwLCAxMjgsIDgwLCA3MywgNzgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIAotICAgIDgwLCA3MywgNzgsIDY5LCA2NSwgODAsIDgwLCA3NiwgNjksIDEyOCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzMsIDc4LCA2NSwgCi0gICAgODIsIDY2LCA3OSwgODIsIDY1LCA4MywgMTI4LCA4MCwgNzMsIDc2LCA3NiwgMTI4LCA4MCwgNzMsIDc2LCAxOTcsIDgwLCAKLSAgICA3MywgNzYsIDY3LCA4MiwgNzksIDIxNSwgODAsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MCwgNzMsIDc1LCA3OSwgCi0gICAgMTI4LCA4MCwgNzMsIDcxLCAxMjgsIDgwLCA3MywgMTk5LCA4MCwgNzMsIDY5LCA4OCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgCi0gICAgODAsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgODMsIAotICAgIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAKLSAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgCi0gICAgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIAotICAgIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAKLSAgICA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgCi0gICAgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCAKLSAgICA4NSwgNzYsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgwLCA3MywgNjksIAotICAgIDg1LCA4MCwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzIsIDczLCAKLSAgICA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODAsIAotICAgIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDIwOCwgCi0gICAgODAsIDczLCA2OSwgODQsIDEyOCwgODAsIDczLCA2OSwgODAsIDEyOCwgODAsIDczLCA2OSwgNjksIDg0LCAxMjgsIDgwLCAKLSAgICA3MywgNjksIDY5LCA4MSwgMTI4LCA4MCwgNzMsIDY5LCA2NywgNjksIDEyOCwgODAsIDczLCA2OSwgMTI4LCA4MCwgNzMsIAotICAgIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgwLCA3MywgNjcsIDc1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA4NSwgODQsIDc5LCA4MiwgCi0gICAgODUsIDEyOCwgODAsIDczLCA2NSwgODMsIDc3LCAxOTMsIDgwLCA3MywgNjUsIDc4LCA3OSwgMTI4LCA4MCwgMjAxLCA4MCwgCi0gICAgNzIsIDg3LCA2NSwgMTI4LCA4MCwgNzIsIDg1LCA4NCwgNzIsIDY1LCA3OSwgMTI4LCA4MCwgNzIsIDg1LCAyMTAsIDgwLCAKLSAgICA3MiwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNzIsIDgyLCA2NSwgODMsIDY5LCAxMjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgODMsIAotICAgIDEyOCwgODAsIDcyLCA3OSwgNjksIDc4LCA3MywgNjcsIDczLCA2NSwgMjA2LCA4MCwgNzIsIDc5LCA2NSwgMTI4LCA4MCwgCi0gICAgNzIsIDc5LCAxMjgsIDgwLCA3MiwgMjA3LCA4MCwgNzIsIDc4LCA2NSwgNjksIDIwMywgODAsIDcyLCA3MywgNzgsIDg0LCAKLSAgICA3MiwgODUsIDEyOCwgODAsIDcyLCA3MywgNzYsIDc5LCA4MywgNzksIDgwLCA3MiwgNjksIDgyLCAyMTEsIDgwLCA3MiwgNzMsIAotICAgIDc2LCA3MywgODAsIDgwLCA3MywgNzgsIDE5NywgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4NCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIAotICAgIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCAKLSAgICA4NSwgODAsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDIwMCwgODAsIAotICAgIDcyLCA3MywgMTI4LCA4MCwgNzIsIDIwMSwgODAsIDcyLCA2OSwgNjksIDEyOCwgODAsIDcyLCA2OSwgMTI4LCA4MCwgNzIsIAotICAgIDY1LCA4MywgNjksIDQ1LCAxOTgsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NCwgODAsIDcyLCA2NSwgODIsIDg5LCA3OCwgCi0gICAgNzEsIDY5LCA2NSwgMjA0LCA4MCwgNzIsIDY1LCA4MiwgMTI4LCA4MCwgNzIsIDY1LCA3OCwgMTI4LCA4MCwgNzIsIDY1LCAKLSAgICA3NywgMTI4LCA4MCwgNzIsIDY1LCA3MywgODMsIDg0LCA3OSwgMjExLCA4MCwgNzIsIDY1LCA3MSwgODMsIDQ1LCA4MCwgCi0gICAgMTkzLCA4MCwgNzIsIDY1LCA2NSwgODIsIDc1LCA2NSwgNjUsIDEyOCwgODAsIDcyLCA2NSwgNjUsIDEyOCwgODAsIDcyLCAKLSAgICA2NSwgMTI4LCA4MCwgNzEsIDEyOCwgODAsIDcwLCAxMjgsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDgwLCA2OSwgODUsIDg0LCAKLSAgICA2NSwgNjksIDEyOCwgODAsIDY5LCA4NSwgODQsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgNzksIDc1LCA3OSwgODUsIAotICAgIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDg0LCA3MywgMTI4LCA4MCwgNjksIDg0LCA2NSwgCi0gICAgODMsIDc3LCA2NSwgMTI4LCA4MCwgNjksIDg0LCA2NSwgNzYsIDc2LCA2OSwgMTk2LCA4MCwgNjksIDgzLCA3OSwgMTI4LCAKLSAgICA4MCwgNjksIDgzLCAyMDcsIDgwLCA2OSwgODMsIDcyLCA1MCwgMTI4LCA4MCwgNjksIDgzLCA2OSwgODQsIDE5MywgODAsIAotICAgIDY5LCAyMTEsIDgwLCA2OSwgODIsIDg0LCA3MiwgMjA3LCA4MCwgNjksIDgyLCA4MywgODAsIDY5LCA2NywgODQsIDczLCA4NiwgCi0gICAgNjksIDEyOCwgODAsIDY5LCA4MiwgODMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDY5LCA4MiwgODMsIDc5LCA3OCwgMTI4LCAKLSAgICA4MCwgNjksIDgyLCA4MywgNzksIDIwNiwgODAsIDY5LCA4MiwgODMsIDczLCA2NSwgMjA2LCA4MCwgNjksIDgyLCA4MywgNjksIAotICAgIDg2LCA2OSwgODIsIDczLCA3OCwgMTk5LCA4MCwgNjksIDgyLCA4MCwgNjksIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAKLSAgICA4MiwgMTI4LCA4MCwgNjksIDgyLCA4MCwgNjksIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgwLCA2OSwgODIsIAotICAgIDc3LCA2NSwgNzgsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgyLCA3MywgODMsIDgwLCA3OSwgNzcsIDY5LCA3OCwgNzMsIDEyOCwgCi0gICAgODAsIDY5LCA4MiwgNzMsIDgzLCA4MCwgNzksIDc3LCA2OSwgNzgsIDIwMSwgODAsIDY5LCA4MiwgNzAsIDc5LCA4MiwgNzcsIAotICAgIDczLCA3OCwgMTk5LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgODUsIDIwNSwgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgCi0gICAgODQsIDY1LCAxMjgsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDgwLCA2OSwgODIsIDY3LCA4NSwgODMsIDgzLCAKLSAgICA3MywgODYsIDY5LCAxMjgsIDgwLCA2OSwgODIsIDY3LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MCwgNjksIDg0LCAxMjgsIAotICAgIDgwLCA2OSwgODAsIDY5LCAyMTIsIDgwLCA2OSwgNzksIDgyLCA4NCwgMjAwLCA4MCwgNjksIDc5LCA4MCwgNzYsIDY5LCAKLSAgICAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgODIsIAotICAgIDY1LCA3NywgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgODMsIDg1LCAKLSAgICAxMjgsIDgwLCA2OSwgNzgsIDgzLCA3MywgODYsIDE5NywgODAsIDY5LCA3OCwgNzgsIDIxNywgODAsIDY5LCA3OCwgNzMsIAotICAgIDcyLCA3MywgMTI4LCA4MCwgNjksIDc4LCA3MSwgODUsIDczLCA3OCwgMTI4LCA4MCwgNjksIDc4LCA3MSwgNzUsIDY1LCA3NiwgCi0gICAgMTI4LCA4MCwgNjksIDc4LCA2OSwgODQsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgNjcsIDczLCAKLSAgICA3NiwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIAotICAgIDIwNiwgODAsIDY5LCA3MywgODQsIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgCi0gICAgMjAwLCA4MCwgNjksIDcyLCAxMjgsIDgwLCA2OSwgMjAwLCA4MCwgNjksIDY5LCA5MCwgNzMsIDEyOCwgODAsIDY5LCA2OSwgCi0gICAgODMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MCwgMTI4LCA4MCwgNjksIDY5LCA3NywgMTI4LCA4MCwgNjksIDY5LCAKLSAgICAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCA4MywgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIAotICAgIDg0LCA4MiwgNzMsIDY1LCA3OCwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA2OCwgCi0gICAgNjksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDY5LCA2OCwgNjUsIDIwNCwgODAsIDY5LCA2NSwgNjcsIDcyLCAxMjgsIDgwLCAKLSAgICA2OSwgNjUsIDY3LCA2OSwgMTI4LCA4MCwgNjksIDY1LCA2NywgMTk3LCA4MCwgNjgsIDEyOCwgODAsIDY3LCAxMjgsIDgwLCAKLSAgICA2NSwgOTAsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDg5LCA2OSwgODIsIDc5LCA3NSwgMTI4LCA4MCwgNjUsIDg5LCA2NSwgNzgsIAotICAgIDc4LCA2NSwgMTI4LCA4MCwgNjUsIDg5LCAxMjgsIDgwLCA2NSwgODgsIDEyOCwgODAsIDY1LCA4NywgNzgsIDEyOCwgODAsIAotICAgIDY1LCAyMTUsIDgwLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCA3OCwgCi0gICAgMTI4LCA4MCwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDg0LCAyMDAsIDgwLCAKLSAgICA2NSwgODQsIDY1LCA3NSwgMTI4LCA4MCwgNjUsIDg0LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIAotICAgIDgzLCA4NSwgODEsIDEyOCwgODAsIDY1LCA4MywgODMsIDgwLCA3OSwgODIsIDIxMiwgODAsIDY1LCA4MywgODMsIDczLCA4NiwgCi0gICAgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDg1LCA4MCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIAotICAgIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgNjgsIDc5LCA4NywgNzgsIDQ1LCA3OSwgODUsIAotICAgIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAKLSAgICAxMjgsIDgwLCA2NSwgODMsIDY5LCA4MSwgMTI4LCA4MCwgNjUsIDgyLCA4NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgODQsIAotICAgIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgNzMsIDIwOCwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCi0gICAgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIAotICAgIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgODAsIDY1LCA4MiwgMjEyLCA4MCwgNjUsIDgyLCA3MywgCi0gICAgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCA4NCwgNzMsIDcxLCA3NywgNjksIDc4LCA3OSwgMjA2LCAKLSAgICA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgCi0gICAgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDIxMSwgODAsIDY1LCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgODIsIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDc5LCA3MSwgODIsIDY1LCA3NywgCi0gICAgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIAotICAgIDIwNCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NSwgCi0gICAgNzYsIDczLCA4NCwgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCAxOTMsIDgwLCAKLSAgICA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4MCwgNjUsIDgyLCA2NSwgMTI4LCAKLSAgICA4MCwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIAotICAgIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgNjksIDIxMCwgODAsIDY1LCA4MCwgMTI4LCA4MCwgNjUsIDIwOCwgODAsIAotICAgIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA3MywgNzUsIDg1LCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc4LCA3MSwgNzEsIAotICAgIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4NCwgNzMsIDEyOCwgCi0gICAgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgODMsIAotICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKLSAgICA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzYsIDc5LCA3OCwgCi0gICAgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODIsIDY1LCAKLSAgICA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc5LCA3NiwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIAotICAgIDcxLCA3NiwgNjUsIDg5LCA2NSwgODIsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgCi0gICAgNzEsIDc1LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDcyLCA4NSwgNzYsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDY5LCA4NSwgNzYsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDY4LCAxOTMsIAotICAgIDgwLCA2NSwgNzgsIDY1LCA2OSwgNzYsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3NywgCi0gICAgODUsIDc4LCA3MSwgNzUsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNjgsIDgwLCA3OSwgNjgsIDEyOCwgODAsIDY1LCAKLSAgICA3NywgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA3NywgODAsIDcyLCA4OSwgNzYsIDczLCA2NSwgMjA2LCA4MCwgNjUsIAotICAgIDc3LCA3MywgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2NSwgCi0gICAgNzcsIDY5LCA3OCwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjgsIDY1LCAxMjgsIDgwLCA2NSwgNzcsIDY1LCAKLSAgICA2NSwgNjksIDcyLCAxMjgsIDgwLCA2NSwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzksIDY3LCA3MiwgNzUsIAotICAgIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDIwNSwgODAsIDY1LCA3NiwgNzYsIDY1LCA4NywgNjUsIDEyOCwgODAsIDY1LCA3NiwgCi0gICAgNzYsIDY1LCA4MywgMTI4LCA4MCwgNjUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODUsIDc4LCAKLSAgICAxOTksIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgOTAsIDY5LCAxOTYsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIAotICAgIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCAyMDQsIDgwLCA2NSwgCi0gICAgNzUsIDgwLCA2NSwgMjAzLCA4MCwgNjUsIDczLCA4OSwgNjUsIDc4LCA3OCwgNzksIDczLCAxMjgsIDgwLCA2NSwgNzMsIDgyLCAKLSAgICA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDczLCA4MiwgNjksIDE5NiwgODAsIDY1LCA3MiwgNzYsIDY1LCA4NiwgCi0gICAgMjAxLCA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCA4MCwgCi0gICAgNjUsIDY4LCAxOTMsIDgwLCA2NSwgNjgsIDEyOCwgODAsIDY1LCA2NywgNzUsIDczLCA3OCwgNzEsIDEyOCwgODAsIDY1LCAKLSAgICA2NywgNzUsIDY1LCA3MSwgNjksIDEyOCwgODAsIDY1LCA2NSwgODQsIDg1LCAxMjgsIDgwLCA2NSwgNjUsIDgzLCA2OSwgNzgsIAotICAgIDg0LCA3OSwgMTI4LCA4MCwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA2NSwgCi0gICAgNjUsIDczLCAxMjgsIDgwLCA2NSwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgODAsIDY1LCA2NSwgMTI4LCAKLSAgICA4MCwgNTAsIDEyOCwgODAsIDQ4LCA0OSwgNDksIDEyOCwgODAsIDQ4LCA0OSwgNDgsIDEyOCwgODAsIDQ4LCA0OCwgNTcsIAotICAgIDEyOCwgODAsIDQ4LCA0OCwgNTYsIDEyOCwgODAsIDQ4LCA0OCwgNTUsIDEyOCwgODAsIDQ4LCA0OCwgNTQsIDEyOCwgODAsIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgODAsIDQ4LCA0OCwgNTIsIDEyOCwgODAsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgwLCA0OCwgCi0gICAgNDgsIDUxLCAxMjgsIDgwLCA0OCwgNDgsIDUwLCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA3OSwgODksIDgyLCA2NSwgNzgsIDczLCA4MywgNzcsIDE5MywgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA3OSwgODgsIDczLCA2NSwgMTI4LCA3OSwgODgsIDczLCAxOTMsIDc5LCA4OCwgNjksIDczLCA2NSwgMjAxLCA3OSwgCi0gICAgODgsIDY5LCA3MywgMTkzLCA3OSwgODYsIDY5LCA4MiwgODIsIDczLCA2OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCAKLSAgICA3OSwgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIAotICAgIDg5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgCi0gICAgNjUsIDczLCA2OCwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA3OSwgODYsIDY1LCAyMDQsIDc5LCAKLSAgICA4NiwgMTI4LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA3OSwgODUsIDg0LCA2OSwgMjEwLCA3OSwgODUsIDg0LCA2NiwgNzksIDIxNiwgNzksIDg1LCA3OCwgNzUsIDczLCAKLSAgICAxOTMsIDc5LCA4NSwgNzgsIDY3LCA2OSwgMTI4LCA3OSwgODUsIDc4LCA2NywgMTk3LCA3OSwgODQsIDg1LCAxMjgsIDc5LCAKLSAgICA4NCwgODQsIDY1LCA4NiwgMTkzLCA3OSwgODQsIDg0LCAxMjgsIDc5LCA4NCwgNzIsIDY1LCA3NiwgNjUsIDIwNiwgNzksIAotICAgIDg0LCA3MiwgNjUsIDc2LCAxMjgsIDc5LCA4MywgNzcsIDY1LCA3OCwgODksIDE5MywgNzksIDgyLCA4NCwgNzIsIDc5LCA3MSwgCi0gICAgNzksIDc4LCA2NSwgMjA0LCA3OSwgODIsIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCA2NSwgODQsIAotICAgIDE5NywgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCAKLSAgICAyMTIsIDc5LCA4MiwgNzUsIDcyLCA3OSwgMjA2LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIAotICAgIDczLCA3MSwgNzMsIDc4LCAxMjgsIDc5LCA4MiwgNjksIDQ1LCA1MCwgMTI4LCA3OSwgODIsIDY4LCA3MywgNzgsIDY1LCAKLSAgICAyMDQsIDc5LCA4MiwgNjcsIDcyLCA3MywgNjgsIDEyOCwgNzksIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDc5LCA4MCwgODQsIAotICAgIDczLCA3OSwgMjA2LCA3OSwgODAsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc5LCA4MCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgODAsIDc5LCAKLSAgICA4MywgNzMsIDc4LCAxOTksIDc5LCA4MCwgODAsIDc5LCA4MywgNjksIDEyOCwgNzksIDgwLCA3MiwgNzMsIDg1LCA2NywgNzIsIAotICAgIDg1LCA4MywgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgCi0gICAgNzksIDIxMCwgNzksIDgwLCA2OSwgNzgsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNDUsIDgwLCAxMjgsIDc5LCAKLSAgICA4MCwgNjksIDc4LCA0NSwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3MiwgCi0gICAgNjksIDY1LCA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA2NywgNzMsIDgyLCA2NywgODUsIDczLCA4NCwgNDUsIAotICAgIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA3OSwgODAsIDY5LCAyMDYsIDc5LCA3OSwgOTAsIDY5LCAxMjgsIDc5LCA3OSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCA3NywgODUsIDEyOCwgNzksIDc5LCAKLSAgICA2OSwgMTI4LCA3OSwgNzksIDY2LCA3OSwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA3OCwgODUsIDEyOCwgNzksIAotICAgIDc4LCA4MywgODUsIDEyOCwgNzksIDc4LCA3OCwgMTI4LCA3OSwgNzgsIDc1LCA2NSwgODIsIDEyOCwgNzksIDc4LCA2OSwgCi0gICAgODMsIDY5LCA3NiwgNzAsIDEyOCwgNzksIDc4LCA2OSwgNDUsIDg3LCA2NSwgMjE3LCA3OSwgNzgsIDY5LCA0NSwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3OSwgNzgsIDY3LCA3OSwgNzcsIAotICAgIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgMTI4LCA3OSwgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA3OSwgCi0gICAgNzcsIDczLCA2NywgODIsIDc5LCA3OCwgMTI4LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCAyMDYsIDc5LCA3NywgNjksIDcxLCAKLSAgICA2NSwgMTI4LCA3OSwgNzcsIDY5LCA3MSwgMTkzLCA3OSwgNzcsIDY1LCA3NiwgNzksIDc4LCAxMjgsIDc5LCA3NiwgNzMsIAotICAgIDg2LCA2OSwgMTI4LCA3OSwgNzYsIDczLCA3MSwgNzksIDIwNiwgNzksIDc2LCA2OCwgMTI4LCA3OSwgNzUsIDg0LCAyMDcsIAotICAgIDc5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3OSwgNzUsIDY1LCA4MiwgMTkzLCA3OSwgNzQsIDczLCA2NiwgODcsIDY1LCAKLSAgICAyMTcsIDc5LCA3NCwgNjksIDc5LCA3OCwgMTI4LCA3OSwgNzMsIDc2LCAxMjgsIDc5LCA3MiwgNzcsIDEyOCwgNzksIDcyLCAKLSAgICAyMDUsIDc5LCA3MiwgMTI4LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIDc1LCAxMjgsIDc5LCAKLSAgICA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgMjA1LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCA4MiwgCi0gICAgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgMTk3LCA3OSwgNzAsIDcwLCAKLSAgICAxMjgsIDc5LCA2OSwgNzUsIDEyOCwgNzksIDY4LCA2OSwgNzgsIDEyOCwgNzksIDY4LCAxOTYsIDc5LCA2NywgODQsIDc5LCAKLSAgICA4MCwgODUsIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAxMjgsIDc5LCA2NywgMjEwLCA3OSwgNjcsIAotICAgIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDc5LCA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA4MywgCi0gICAgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAyMTEsIDc5LCA2NiwgNzksIAotICAgIDIwNCwgNzksIDY2LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIDgxLCA4NSwgMTk3LCA3OSwgCi0gICAgNjYsIDc0LCA2OSwgNjcsIDIxMiwgNzksIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgNjYsIDY5LCA3NiwgNzksIDgzLCAKLSAgICAxMjgsIDc5LCA2NiwgMTI4LCA3OSwgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgNzksIDY1LCA2NiwgNzksIDY1LCAKLSAgICA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjYsIAotICAgIDEyOCwgNzksIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIDc5LCA0OCwgNTIsIDU3LCAxMjgsIAotICAgIDc5LCA0OCwgNTIsIDU2LCAxMjgsIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgNTIsIDU0LCAxMjgsIDc5LCA0OCwgCi0gICAgNTIsIDUzLCAxMjgsIDc5LCA0OCwgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAxMjgsIDc5LCA0OCwgNTIsIDUwLCAKLSAgICAxMjgsIDc5LCA0OCwgNTIsIDQ5LCAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCA0OCwgNTEsIDU3LCAxMjgsIDc5LCAKLSAgICA0OCwgNTEsIDU2LCAxMjgsIDc5LCA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIAotICAgIDUxLCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3OSwgCi0gICAgNDgsIDUxLCA1NCwgMTI4LCA3OSwgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCA1MiwgMTI4LCA3OSwgNDgsIDUxLCAKLSAgICA1MSwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIDEyOCwgNzksIDQ4LCA1MSwgNDksIAotICAgIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCA2NSwgCi0gICAgMTI4LCA3OSwgNDgsIDUwLCA1NywgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgNDgsIDUwLCA1NSwgMTI4LCA3OSwgCi0gICAgNDgsIDUwLCA1NCwgMTI4LCA3OSwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDEyOCwgNzksIDQ4LCAKLSAgICA1MCwgNTIsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIDUxLCAxMjgsIDc5LCA0OCwgNTAsIAotICAgIDUwLCAxMjgsIDc5LCA0OCwgNTAsIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgCi0gICAgMTI4LCA3OSwgNDgsIDQ5LCA1NywgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgNzksIDQ4LCA0OSwgNTYsIDEyOCwgCi0gICAgNzksIDQ4LCA0OSwgNTUsIDEyOCwgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCA0OSwgNTMsIDEyOCwgNzksIDQ4LCAKLSAgICA0OSwgNTIsIDEyOCwgNzksIDQ4LCA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIDEyOCwgNzksIDQ4LCA0OSwgNDksIAotICAgIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgCi0gICAgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgNzksIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgNzksIDQ4LCA0OCwgNTUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OSwgMTI4LCAKLSAgICA3OSwgNDgsIDQ4LCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NiwgCi0gICAgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDY1LCAKLSAgICAxMjgsIDc5LCA0OCwgNDgsIDUzLCAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCA0OCwgNDgsIDUxLCAxMjgsIDc5LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIAotICAgIDg5LCA2OSwgMTI4LCA3OSwgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgMTI4LCA3OCwgOTAsIDg5LCA4OCwgCi0gICAgMTI4LCA3OCwgOTAsIDg5LCA4NCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDEyOCwgCi0gICAgNzgsIDkwLCA4OSwgODAsIDEyOCwgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCAKLSAgICA4MiwgODgsIDEyOCwgNzgsIDkwLCA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIDEyOCwgNzgsIDkwLCA4NSwgODAsIAotICAgIDEyOCwgNzgsIDkwLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIDc4LCA5MCwgODUsIDIwNiwgNzgsIAotICAgIDkwLCA4NSwgMTI4LCA3OCwgOTAsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA4OCwgCi0gICAgMTI4LCA3OCwgOTAsIDczLCA4NCwgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODgsIDEyOCwgCi0gICAgNzgsIDkwLCA3MywgNjksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCA5MCwgNzMsIDEyOCwgNzgsIDkwLCAKLSAgICA2OSwgODgsIDEyOCwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIDEyOCwgNzgsIDkwLCA2NSwgODgsIAotICAgIDEyOCwgNzgsIDkwLCA2NSwgODQsIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIDkwLCA2NSwgODAsIDEyOCwgNzgsIAotICAgIDkwLCA2NSwgMTI4LCA3OCwgOTAsIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIDg5LCA4NSwgODgsIDEyOCwgNzgsIAorICAgIDg1LCAxMjgsIDgwLCA4NSwgODQsIDgyLCA2OSwgNzAsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA4NCwgCisgICAgMTI4LCA4MCwgODUsIDIxMiwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzgsIDEyOCwgODAsIDg1LCA4MywgNzIsIDgwLCAKKyAgICA3MywgNzUsIDY1LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODAsIDg1LCA4MiwgODgsIDEyOCwgODAsIAorICAgIDg1LCA4MiwgODMsIDY5LCAxMjgsIDgwLCA4NSwgODIsIDgwLCA3NiwgMTk3LCA4MCwgODUsIDgyLCA3OCwgNjUsIDc3LCA2NSwgCisgICAgMTI4LCA4MCwgODUsIDgyLCA3MywgODQsIDg5LCAxMjgsIDgwLCA4NSwgODIsIDczLCA3MCwgODksIDEyOCwgODAsIDg1LCAKKyAgICA4MiwgMTI4LCA4MCwgODUsIDgxLCAxMjgsIDgwLCA4NSwgODAsIDEyOCwgODAsIDg1LCA3OSwgODgsIDEyOCwgODAsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgODAsIDg1LCA3OSwgMTI4LCA4MCwgODUsIDc4LCA3MSwgNjUsIDY1LCA3NywgMTI4LCA4MCwgODUsIAorICAgIDc4LCA3MSwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA3OCwgCisgICAgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDg1LCA3NywgODAsIDEyOCwgODAsIDg1LCA3NywgMTI4LCAKKyAgICA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCA3MywgMTk1LCA4MCwgODUsIDY1LCA4MSwgMTI4LCA4MCwgODUsIAorICAgIDY1LCA2OSwgMTI4LCA4MCwgODUsIDUwLCAxMjgsIDgwLCA4NSwgNDksIDEyOCwgODAsIDg1LCAxMjgsIDgwLCA4NCwgNzIsIAorICAgIDY1LCA3MiwgMTkzLCA4MCwgODQsIDY5LCAxMjgsIDgwLCA4MywgNzMsIDc2LCAyMDEsIDgwLCA4MywgNzMsIDcwLCA3MywgCisgICAgODMsIDg0LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIAorICAgIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCAKKyAgICA4MywgODQsIDc5LCAyMDYsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgCisgICAgNjUsIDEyOCwgODAsIDgzLCA3MywgMTI4LCA4MCwgODMsIDEyOCwgODAsIDgyLCA3OSwgODYsIDY5LCAxMjgsIDgwLCA4MiwgCisgICAgNzksIDg0LCA3OSwgODYsIDY1LCA4MiwgODksIDIxMSwgODAsIDgyLCA3OSwgODQsIDc5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCAKKyAgICA2OSwgNjcsIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCA4MywgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgCisgICAgNzMsIDEyOCwgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA4MiwgNzksIDgwLCAKKyAgICA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4MiwgNzksIDgwLCA2OSwgODIsIDg0LCAyMTcsIDgwLCA4MiwgNzksIAorICAgIDgwLCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4MCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODAsIDgyLCA3OSwgNzYsIDc5LCA3OCwgCisgICAgNzEsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDE5NywgODAsIDgyLCA3OSwgNzQsIDY5LCAKKyAgICA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIAorICAgIDgyLCA3OSwgNzEsIDgyLCA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDgyLCA3OSwgCisgICAgNzAsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDgwLCA4MiwgNzksIDY4LCAKKyAgICA4NSwgNjcsIDIxMiwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgCisgICAgMTk3LCA4MCwgODIsIDczLCA4NiwgNjUsIDY3LCAyMTcsIDgwLCA4MiwgNzMsIDgzLCA3MiwgODQsIDcyLCA2NSwgNzcsIDY1LCAKKyAgICA4NCwgODIsIDE5MywgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDEyOCwgODAsIAorICAgIDgyLCA3MywgNzgsIDIxMiwgODAsIDgyLCA3MywgNzgsIDY3LCA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc3LCA2OSwgCisgICAgMTI4LCA4MCwgODIsIDczLCA3NywgMTk3LCA4MCwgODIsIDY5LCA4NiwgNzMsIDc5LCA4NSwgMjExLCA4MCwgODIsIDY5LCAKKyAgICA4MywgNjksIDg0LCAxMjgsIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIAorICAgIDY5LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODAsIDc5LCA3OCwgNjgsIDY5LCAKKyAgICA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgODAsIDgyLCA2OSwgNzgsIDc1LCA3MiwgNjUsIDEyOCwgODAsIDgyLCA2OSwgNzAsIAorICAgIDY1LCA2NywgMTk3LCA4MCwgODIsIDY5LCA2NywgNzMsIDgwLCA3MywgODQsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA2OSwgCisgICAgNjcsIDY5LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCA4MywgMTI4LCA4MCwgODIsIDY5LCAKKyAgICA2NywgNjksIDY4LCA2OSwgMjExLCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMTk2LCA4MCwgODIsIDY5LCA2NywgNjksIAorICAgIDY4LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAxOTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCA3MywgCisgICAgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgMjAxLCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDg5LCAKKyAgICAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgMjE3LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIAorICAgIDc4LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgCisgICAgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDIwMSwgODAsIDgyLCA2NSwgNzcsIDEyOCwgODAsIDgyLCAKKyAgICA2NSwgMjA1LCA4MCwgODIsIDEyOCwgODAsIDgwLCA4NiwgMTI4LCA4MCwgODAsIDc3LCAxMjgsIDgwLCA4MCwgNjUsIDEyOCwgCisgICAgODAsIDc5LCA4OSwgMTI4LCA4MCwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODcsIDY5LCA4MiwgMjExLCA4MCwgNzksIDg3LCAKKyAgICA2OSwgODIsIDEyOCwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgNjksIDE5NiwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgCisgICAgMTI4LCA4MCwgNzksIDg1LCA3OCwgMTk2LCA4MCwgNzksIDg1LCA3NiwgODQsIDgyLCAyMTcsIDgwLCA3OSwgODUsIDY3LCAKKyAgICA3MiwgMTI4LCA4MCwgNzksIDg0LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIDE5NywgODAsIAorICAgIDc5LCAyMTIsIDgwLCA3OSwgODMsIDg0LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA4MCwgNzksIDgzLCA4NCwgCisgICAgNjYsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDc5LCA4MywgODQsIDEyOCwgODAsIDc5LCAKKyAgICA4MywgMjEyLCA4MCwgNzksIDgzLCA4MywgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIAorICAgIDY3LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCA4NSwgMjExLCA4MCwgNzksIDgwLCA4MCwgCisgICAgNjksIDgyLCAxMjgsIDgwLCA3OSwgODAsIDEyOCwgODAsIDc5LCAyMDgsIDgwLCA3OSwgNzksIDY4LCA3NiwgNjksIDEyOCwgCisgICAgODAsIDc5LCA3OSwgMTI4LCA4MCwgNzksIDc4LCA2OCwgNzksIDEyOCwgODAsIDc5LCAyMDYsIDgwLCA3OSwgNzcsIDc3LCAKKyAgICA2OSwgNjksIDEyOCwgODAsIDc5LCA3NywgNzcsIDY5LCAxOTcsIDgwLCA3OSwgNzYsIDczLCA4MywgNzIsIDEyOCwgODAsIAorICAgIDc5LCA3NiwgNzMsIDY3LCAxOTcsIDgwLCA3OSwgNzYsIDIwMSwgODAsIDc5LCA3NiwgNjksIDEyOCwgODAsIDc5LCA3NiwgCisgICAgMTk3LCA4MCwgNzksIDc1LCA4MiwgODksIDg0LCA3MywgNjksIDEyOCwgODAsIDc5LCA3NSwgNzksIDc0LCA3MywgMTI4LCAKKyAgICA4MCwgNzksIDczLCA3OCwgODQsIDIxMSwgODAsIDc5LCA3MywgNzgsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIAorICAgIDY5LCA4MiwgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDgwLCA3OSwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgCisgICAgNzksIDczLCA3OCwgMjEyLCA4MCwgNzksIDY5LCA4NCwgODIsIDIxNywgODAsIDc5LCA2OSwgODQsIDczLCAxOTUsIDgwLCAKKyAgICA3OSwgNjgsIDY1LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgNjUsIDEyOCwgODAsIDc5LCAxMjgsIDgwLCAyMDcsIDgwLCAKKyAgICA3OCwgNjksIDg1LCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MCwgNzYsIDg1LCA4NCwgNzksIDEyOCwgODAsIDc2LCA4NSwgODMsIAorICAgIDQ1LCA3NywgNzMsIDc4LCA4NSwgMjExLCA4MCwgNzYsIDg1LCA4MywgMTI4LCA4MCwgNzYsIDg1LCA4MiwgNjUsIDc2LCAKKyAgICAxMjgsIDgwLCA3NiwgODUsIDc3LCA2OSwgMTk2LCA4MCwgNzYsIDg1LCA3NywgMTI4LCA4MCwgNzYsIDg1LCA3NSwgMTI4LCAKKyAgICA4MCwgNzYsIDg1LCA3MSwgMTI4LCA4MCwgNzYsIDg1LCAxMjgsIDgwLCA3NiwgNzksIDg3LCAxMjgsIDgwLCA3NiwgNzksIAorICAgIDgwLCA3MiwgODUsIDEyOCwgODAsIDc2LCA2OSwgODQsIDcyLCA4MiwgNzksIDc4LCAxMjgsIDgwLCA3NiwgNjgsIDEyOCwgCisgICAgODAsIDc2LCA2NSwgODksIDczLCA3OCwgMTk5LCA4MCwgNzYsIDY1LCA4MywgODQsIDczLCA2NywgODMsIDEyOCwgODAsIDc2LCAKKyAgICA2NSwgNzgsIDY5LCAxMjgsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgwLCA3NiwgNjUsIDc4LCA2NywgMjAzLCA4MCwgNzYsIAorICAgIDY1LCA3NSwgMTI4LCA4MCwgNzYsIDY1LCA3MSwgNzMsIDc5LCAyMTEsIDgwLCA3NiwgNjUsIDY3LCA2OSwgNzIsIDc5LCA3NiwgCisgICAgNjgsIDY5LCAyMTAsIDgwLCA3NiwgNjUsIDY3LCAxOTcsIDgwLCA3NiwgNjUsIDEyOCwgODAsIDczLCA5MCwgOTAsIDczLCAKKyAgICA2NywgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzMsIDkwLCA5MCwgNjUsIDEyOCwgODAsIDczLCA4OCwgMTI4LCA4MCwgNzMsIAorICAgIDg3LCA4MiwgMTI4LCA4MCwgNzMsIDg0LCA2NywgNzIsIDcwLCA3OSwgODIsIDc1LCAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgCisgICAgNzAsIDc5LCA4MiwgMjAzLCA4MCwgNzMsIDg0LCAxMjgsIDgwLCA3MywgODMsIDg0LCA3OSwgNzYsIDEyOCwgODAsIDczLCAKKyAgICA4MywgNjksIDc2LCA2OSwgNzIsIDEyOCwgODAsIDczLCA4MywgNjcsIDY5LCA4MywgMTI4LCA4MCwgNzMsIDgyLCA3MywgNzEsIAorICAgIDEyOCwgODAsIDczLCA4MiwgNzMsIDE5OSwgODAsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgODAsIDczLCA4MCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNzMsIDgwLCA2NSwgNjksIDc3LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgODAsIDczLCAKKyAgICA4MCwgNjUsIDY5LCA3NywgNjYsIDY1LCAxMjgsIDgwLCA3MywgODAsIDEyOCwgODAsIDczLCA3OCwgODcsIDcyLCA2OSwgNjksIAorICAgIDIwNCwgODAsIDczLCA3OCwgNjksIDY1LCA4MCwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNzMsIDc4LCAxOTcsIDgwLCA3MywgCisgICAgNzgsIDY1LCA4MiwgNjYsIDc5LCA4MiwgNjUsIDgzLCAxMjgsIDgwLCA3MywgNzYsIDc2LCAxMjgsIDgwLCA3MywgNzYsIAorICAgIDE5NywgODAsIDczLCA3NiwgNjcsIDgyLCA3OSwgMjE1LCA4MCwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgwLCA3MywgCisgICAgNzUsIDc5LCAxMjgsIDgwLCA3MywgNzEsIDEyOCwgODAsIDczLCAxOTksIDgwLCA3MywgNjksIDg4LCAxMjgsIDgwLCA3MywgCisgICAgNjksIDg1LCA4MCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAorICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCA3MywgNjksIAorICAgIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCAKKyAgICA3MywgNjksIDg1LCA3NiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgCisgICAgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCAKKyAgICA4NSwgMjA4LCA4MCwgNzMsIDY5LCA4NCwgMTI4LCA4MCwgNzMsIDY5LCA4MCwgMTI4LCA4MCwgNzMsIDY5LCA2OSwgODQsIAorICAgIDEyOCwgODAsIDczLCA2OSwgNjksIDgxLCAxMjgsIDgwLCA3MywgNjksIDY3LCA2OSwgMTI4LCA4MCwgNzMsIDY5LCAxMjgsIAorICAgIDgwLCA3MywgNjcsIDc1LCA2OSwgODQsIDEyOCwgODAsIDczLCA2NywgNzUsIDEyOCwgODAsIDczLCA2NSwgODMsIDg1LCA4NCwgCisgICAgNzksIDgyLCA4NSwgMTI4LCA4MCwgNzMsIDY1LCA4MywgNzcsIDE5MywgODAsIDczLCA2NSwgNzgsIDc5LCAxMjgsIDgwLCAKKyAgICAyMDEsIDgwLCA3MiwgODcsIDY1LCAxMjgsIDgwLCA3MiwgODUsIDg0LCA3MiwgNjUsIDc5LCAxMjgsIDgwLCA3MiwgODUsIAorICAgIDIxMCwgODAsIDcyLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA3MiwgODIsIDY1LCA4MywgNjksIDEyOCwgODAsIDcyLCA3OSwgCisgICAgNzgsIDY5LCA4MywgMTI4LCA4MCwgNzIsIDc5LCA2OSwgNzgsIDczLCA2NywgNzMsIDY1LCAyMDYsIDgwLCA3MiwgNzksIDY1LCAKKyAgICAxMjgsIDgwLCA3MiwgNzksIDEyOCwgODAsIDcyLCAyMDcsIDgwLCA3MiwgNzgsIDY1LCA2OSwgMjAzLCA4MCwgNzIsIDczLCAKKyAgICA3OCwgODQsIDcyLCA4NSwgMTI4LCA4MCwgNzIsIDczLCA3NiwgNzksIDgzLCA3OSwgODAsIDcyLCA2OSwgODIsIDIxMSwgODAsIAorICAgIDcyLCA3MywgNzYsIDczLCA4MCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDg0LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODMsIDczLCA3OSwgCisgICAgODMsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDcyLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgCisgICAgMjAwLCA4MCwgNzIsIDczLCAxMjgsIDgwLCA3MiwgMjAxLCA4MCwgNzIsIDY5LCA2OSwgMTI4LCA4MCwgNzIsIDY5LCAxMjgsIAorICAgIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5OCwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk0LCA4MCwgNzIsIDY1LCA4MiwgCisgICAgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDgwLCA3MiwgNjUsIDgyLCAxMjgsIDgwLCA3MiwgNjUsIDc4LCAxMjgsIDgwLCAKKyAgICA3MiwgNjUsIDc3LCAxMjgsIDgwLCA3MiwgNjUsIDczLCA4MywgODQsIDc5LCAyMTEsIDgwLCA3MiwgNjUsIDcxLCA4MywgNDUsIAorICAgIDgwLCAxOTMsIDgwLCA3MiwgNjUsIDY1LCA4MiwgNzUsIDY1LCA2NSwgMTI4LCA4MCwgNzIsIDY1LCA2NSwgMTI4LCA4MCwgCisgICAgNzIsIDY1LCAxMjgsIDgwLCA3MSwgMTI4LCA4MCwgNzAsIDEyOCwgODAsIDY5LCA4NSwgODgsIDEyOCwgODAsIDY5LCA4NSwgCisgICAgODQsIDY1LCA2OSwgMTI4LCA4MCwgNjksIDg1LCA4NCwgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDg0LCA3OSwgNzUsIDc5LCAKKyAgICA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgODQsIDczLCAxMjgsIDgwLCA2OSwgODQsIAorICAgIDY1LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA3NiwgNzYsIDY5LCAxOTYsIDgwLCA2OSwgODMsIDc5LCAKKyAgICAxMjgsIDgwLCA2OSwgODMsIDIwNywgODAsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDgwLCA2OSwgODMsIDY5LCA4NCwgMTkzLCAKKyAgICA4MCwgNjksIDIxMSwgODAsIDY5LCA4MiwgODQsIDcyLCAyMDcsIDgwLCA2OSwgODIsIDgzLCA4MCwgNjksIDY3LCA4NCwgNzMsIAorICAgIDg2LCA2OSwgMTI4LCA4MCwgNjksIDgyLCA4MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgNjksIDgyLCA4MywgNzksIDc4LCAKKyAgICAxMjgsIDgwLCA2OSwgODIsIDgzLCA3OSwgMjA2LCA4MCwgNjksIDgyLCA4MywgNzMsIDY1LCAyMDYsIDgwLCA2OSwgODIsIAorICAgIDgzLCA2OSwgODYsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDgwLCA2OSwgODIsIDgwLCA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCAKKyAgICA3NiwgNjUsIDgyLCAxMjgsIDgwLCA2OSwgODIsIDgwLCA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODAsIAorICAgIDY5LCA4MiwgNzcsIDczLCA4NCwgODQsIDY5LCAxOTYsIDgwLCA2OSwgODIsIDc3LCA2NSwgNzgsIDY5LCA3OCwgMjEyLCA4MCwgCisgICAgNjksIDgyLCA3MywgODMsIDgwLCA3OSwgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODAsIDY5LCA4MiwgNzMsIDgzLCA4MCwgNzksIAorICAgIDc3LCA2OSwgNzgsIDIwMSwgODAsIDY5LCA4MiwgNzAsIDc5LCA4MiwgNzcsIDczLCA3OCwgMTk5LCA4MCwgNjksIDgyLCA3MCwgCisgICAgNjksIDY3LCA4NCwgODUsIDIwNSwgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDY1LCAxMjgsIDgwLCA2OSwgODIsIDcwLCAKKyAgICA2OSwgNjcsIDg0LCAxOTMsIDgwLCA2OSwgODIsIDY3LCA4NSwgODMsIDgzLCA3MywgODYsIDY5LCAxMjgsIDgwLCA2OSwgODIsIAorICAgIDY3LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2OSwgODAsIDY5LCAyMTIsIDgwLCA2OSwgCisgICAgNzksIDgyLCA4NCwgMjAwLCA4MCwgNjksIDc5LCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgODMsIDY5LCAKKyAgICA3NywgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIAorICAgIDcxLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgODMsIDg1LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA3MywgODYsIDE5NywgCisgICAgODAsIDY5LCA3OCwgNzgsIDIxNywgODAsIDY5LCA3OCwgNzMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDc4LCA3MSwgODUsIDczLCAKKyAgICA3OCwgMTI4LCA4MCwgNjksIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDc4LCA2OSwgODQsIDgyLCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgNjcsIDczLCA3NiwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgCisgICAgNzgsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDIwNiwgODAsIDY5LCA3MywgODQsIDcyLCAxMjgsIDgwLCAKKyAgICA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgMjAwLCA4MCwgNjksIDcyLCAxMjgsIDgwLCA2OSwgMjAwLCAKKyAgICA4MCwgNjksIDY5LCA5MCwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MCwgCisgICAgMTI4LCA4MCwgNjksIDY5LCA3NywgMTI4LCA4MCwgNjksIDY5LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNjUsIDc4LCA4MywgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgMTI4LCA4MCwgNjksIAorICAgIDY4LCA2OSwgODMsIDg0LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDY5LCA2OCwgCisgICAgNjUsIDIwNCwgODAsIDY5LCA2NSwgNjcsIDcyLCAxMjgsIDgwLCA2OSwgNjUsIDY3LCA2OSwgMTI4LCA4MCwgNjksIDY1LCAKKyAgICA2NywgMTk3LCA4MCwgNjgsIDcwLCAxMjgsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIDY1LCA5MCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA2NSwgODksIDY5LCA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDgwLCA2NSwgODksIDEyOCwgODAsIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgNjUsIDIxNSwgODAsIAorICAgIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgwLCA2NSwgODUsIDEyOCwgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgCisgICAgNzgsIDEyOCwgODAsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4NCwgMjAwLCAKKyAgICA4MCwgNjUsIDg0LCA2NSwgNzUsIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgODQsIDEyOCwgODAsIAorICAgIDY1LCA4MywgODUsIDgxLCAxMjgsIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCA2NSwgODMsIDgzLCA3MywgCisgICAgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIAorICAgIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgODcsIDc4LCA0NSwgNzksIAorICAgIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODAsIDY1LCA4MywgNzIsIDY1LCA2OSwgCisgICAgMTI4LCA4MCwgNjUsIDgzLCA2OSwgODEsIDEyOCwgODAsIDY1LCA4MywgNjUsIDc4LCA3MSwgNjUsIDIwNiwgODAsIDY1LCAKKyAgICA4MiwgODUsIDc3LCAxMjgsIDgwLCA2NSwgODIsIDg0LCAyMTcsIDgwLCA2NSwgODIsIDg0LCA3OCwgNjksIDgyLCA4MywgNzIsIAorICAgIDczLCAyMDgsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIDc2LCA3NiwgODksIDQ1LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCAKKyAgICA2OSwgMTk2LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAyMDQsIDgwLCA2NSwgODIsIDg0LCA3MiwgNzMsIDY1LCAyMDYsIAorICAgIDgwLCA2NSwgODIsIDIxMiwgODAsIDY1LCA4MiwgNzMsIDY3LCA3MiwgNzksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA4MywgCisgICAgODQsIDczLCA3MSwgNzcsIDY5LCA3OCwgNzksIDIwNiwgODAsIDY1LCA4MiwgNjksIDgyLCA2OSwgNzgsIDEyOCwgODAsIDY1LCAKKyAgICA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgCisgICAgODMsIDczLCAyMTEsIDgwLCA2NSwgODIsIDY1LCA4MCwgNzIsIDgyLCA2NSwgODMsIDE5NywgODAsIDY1LCA4MiwgNjUsIDc2LCAKKyAgICA3NiwgNjksIDc2LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCAxMjgsIAorICAgIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCAyMDQsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCAKKyAgICA3MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgMjAxLCA4MCwgNjUsIDgyLCA2NSwgNzUsIAorICAgIDY1LCA3NiwgNjksIDgzLCA3NywgMTkzLCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3OSwgODMsIDEyOCwgCisgICAgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDIwMCwgODAsIDY1LCA4MiwgNjUsIDEyOCwgODAsIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDgwLCA4OSwgODIsIDg1LCA4MywgCisgICAgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCA3NiwgNzMsIDgwLCAxMjgsIDgwLCA2NSwgODAsIDY5LCAyMTAsIDgwLCAKKyAgICA2NSwgODAsIDEyOCwgODAsIDY1LCAyMDgsIDgwLCA2NSwgMjA3LCA4MCwgNjUsIDc4LCA4OSwgODUsIDc1LCA4NSwgMTI4LCAKKyAgICA4MCwgNjUsIDc4LCA4OSwgNzMsIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjksIDY3LCA2OSwgNzUsIDEyOCwgODAsIAorICAgIDY1LCA3OCwgODksIDY1LCA3OCwgNzEsIDcxLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc1LCA4MiwgNjUsIDEyOCwgCisgICAgODAsIDY1LCA3OCwgODQsIDczLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIAorICAgIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc4LCA3MSwgNzksIDc4LCA2NSwgNzgsIDEyOCwgODAsIAorICAgIDY1LCA3OCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4NywgNzMsIDgzLCA2NSwgNjgsIDEyOCwgCisgICAgODAsIDY1LCA3OCwgNzEsIDgyLCA2NSwgNzgsIDcxLCA3NSwgNjksIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3OSwgNzYsIAorICAgIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA2NSwgCisgICAgODksIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDY1LCAKKyAgICA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDEyOCwgODAsIAorICAgIDY1LCA3OCwgNjksIDg1LCA3NiwgNjksIDg1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjgsIDE5MywgODAsIDY1LCA3OCwgCisgICAgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNzgsIDcxLCAKKyAgICA3NSwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIDc3LCA4MywgNzIsIAorICAgIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgNzcsIDczLCA3OCwgCisgICAgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCA3NywgNjksIDc4LCAKKyAgICA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY1LCA2OSwgNzIsIAorICAgIDEyOCwgODAsIDY1LCA3NiwgODUsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgNjUsIDEyOCwgCisgICAgODAsIDY1LCA3NiwgMjA1LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDgzLCAKKyAgICAxMjgsIDgwLCA2NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIDE5OSwgODAsIAorICAgIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCAKKyAgICA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCA3NSwgODAsIAorICAgIDY1LCAyMDMsIDgwLCA2NSwgNzMsIDg5LCA2NSwgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIDg0LCA3MiwgCisgICAgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzMsIDgyLCA2OSwgMTk2LCA4MCwgNjUsIDczLCAxMjgsIDgwLCA2NSwgNzIsIDc2LCAKKyAgICA2NSwgODYsIDIwMSwgODAsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCAKKyAgICA4MCwgNjUsIDY4LCA3NywgMTkzLCA4MCwgNjUsIDY4LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA2NSwgNjgsIDE5MywgODAsIAorICAgIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNjUsIDcxLCA2OSwgCisgICAgMTI4LCA4MCwgNjUsIDY1LCA4NCwgODUsIDEyOCwgODAsIDY1LCA2NSwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgwLCAKKyAgICA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDY1LCA2NSwgNzMsIDEyOCwgODAsIAorICAgIDY1LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA4MCwgNjUsIDY1LCAxMjgsIDgwLCA1MCwgMTI4LCA4MCwgCisgICAgNDgsIDQ5LCA0OSwgMTI4LCA4MCwgNDgsIDQ5LCA0OCwgMTI4LCA4MCwgNDgsIDQ4LCA1NywgMTI4LCA4MCwgNDgsIDQ4LCAKKyAgICA1NiwgMTI4LCA4MCwgNDgsIDQ4LCA1NSwgMTI4LCA4MCwgNDgsIDQ4LCA1NCwgMTI4LCA4MCwgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA4MCwgNDgsIDQ4LCA1MiwgMTI4LCA4MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNTEsIDEyOCwgODAsIAorICAgIDQ4LCA0OCwgNTAsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA4OSwgCisgICAgODIsIDY1LCA3OCwgNzMsIDgzLCA3NywgMTkzLCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDY1LCAKKyAgICAxMjgsIDc5LCA4OCwgNzMsIDE5MywgNzksIDg4LCA2OSwgNzMsIDY1LCAyMDEsIDc5LCA4OCwgNjksIDczLCAxOTMsIDc5LCAKKyAgICA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDc5LCA3OCwgMTk5LCA3OSwgODYsIAorICAgIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODksIDEyOCwgNzksIDg2LCA2OSwgCisgICAgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgNzMsIDY4LCAxMjgsIDc5LCAKKyAgICA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIDg2LCAxMjgsIDc5LCA4NSwgODQsIAorICAgIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NSwgODQsIDY5LCAKKyAgICAyMTAsIDc5LCA4NSwgODQsIDY2LCA3OSwgMjE2LCA3OSwgODUsIDc4LCA3NSwgNzMsIDE5MywgNzksIDg1LCA3OCwgNjcsIAorICAgIDY5LCAxMjgsIDc5LCA4NSwgNzgsIDY3LCAxOTcsIDc5LCA4NCwgODUsIDEyOCwgNzksIDg0LCA4NCwgNjUsIDg2LCAxOTMsIAorICAgIDc5LCA4NCwgODQsIDEyOCwgNzksIDg0LCA3MiwgNjUsIDc2LCA2NSwgMjA2LCA3OSwgODQsIDcyLCA2NSwgNzYsIDEyOCwgCisgICAgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgMTkzLCA3OSwgODMsIDY3LCAxMjgsIDc5LCA4MiwgODQsIDcyLCA3OSwgNzEsIDc5LCAKKyAgICA3OCwgNjUsIDIwNCwgNzksIDgyLCA4NCwgNzIsIDc5LCA2OCwgNzksIDIxNiwgNzksIDgyLCA3OCwgNjUsIDg0LCAxOTcsIAorICAgIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgMjEyLCA3OSwgCisgICAgODIsIDc1LCA3MiwgNzksIDIwNiwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA3MywgNzEsIDczLCAKKyAgICA3OCwgMTI4LCA3OSwgODIsIDY5LCA0NSwgNTAsIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIAorICAgIDY4LCA2OSwgMjEwLCA3OSwgODIsIDY3LCA3MiwgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgCisgICAgODAsIDg0LCA3MywgNzksIDIwNiwgNzksIDgwLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCAKKyAgICA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIAorICAgIDgwLCA3OSwgODMsIDczLCA3OCwgMTk5LCA3OSwgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgCisgICAgNjcsIDcyLCA4NSwgODMsIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDc5LCA4MCwgNjksIDgyLCAKKyAgICA2NSwgODQsIDc5LCAyMTAsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNzMsIAorICAgIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA0NSwgODAsIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgCisgICAgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCAKKyAgICA3OCwgNDUsIDY3LCA3MywgODIsIDY3LCA4NSwgNzMsIDg0LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDc5LCA3OSwgCisgICAgOTAsIDY5LCAxMjgsIDc5LCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCAKKyAgICA3NywgODUsIDEyOCwgNzksIDc5LCA2OSwgMTI4LCA3OSwgNzksIDY2LCA3OSwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIAorICAgIDc5LCA3OCwgODUsIDEyOCwgNzksIDc4LCA4MywgODUsIDEyOCwgNzksIDc4LCA3OCwgMTI4LCA3OSwgNzgsIDc1LCA2NSwgCisgICAgODIsIDEyOCwgNzksIDc4LCA2OSwgODMsIDY5LCA3NiwgNzAsIDEyOCwgNzksIDc4LCA2OSwgNDUsIDg3LCA2NSwgMjE3LCAKKyAgICA3OSwgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgNzYsIDczLCA3OCwgCisgICAgMTk3LCA3OSwgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgMTI4LCA3OSwgNzcsIDczLCAKKyAgICA4MywgODMsIDczLCA3OSwgMjA2LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCA3OCwgMTI4LCA3OSwgNzcsIDczLCA2NywgODIsIAorICAgIDc5LCAyMDYsIDc5LCA3NywgNjksIDcxLCA2NSwgMTI4LCA3OSwgNzcsIDY5LCA3MSwgMTkzLCA3OSwgNzcsIDY1LCA3NiwgCisgICAgNzksIDc4LCAxMjgsIDc5LCA3NiwgNzMsIDg2LCA2OSwgMTI4LCA3OSwgNzYsIDczLCA3MSwgNzksIDIwNiwgNzksIDc2LCAKKyAgICA2OCwgMTI4LCA3OSwgNzUsIDg0LCAyMDcsIDc5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3OSwgNzUsIDY1LCA4MiwgMTkzLCAKKyAgICA3OSwgNzQsIDczLCA2NiwgODcsIDY1LCAyMTcsIDc5LCA3NCwgNjksIDc5LCA3OCwgMTI4LCA3OSwgNzMsIDc2LCAxMjgsIAorICAgIDc5LCA3MiwgNzcsIDEyOCwgNzksIDcyLCAyMDUsIDc5LCA3MSwgODIsIDY5LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgCisgICAgNzUsIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAyMDUsIDc5LCA3MCwgNzAsIDczLCAKKyAgICA2NywgNjksIDgyLCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCAxOTcsIAorICAgIDc5LCA3MCwgNzAsIDEyOCwgNzksIDY5LCA4OSwgMTI4LCA3OSwgNjksIDc1LCAxMjgsIDc5LCA2OCwgNjksIDc4LCAxMjgsIAorICAgIDc5LCA2OCwgMTk2LCA3OSwgNjcsIDg0LCA3OSwgODAsIDg1LCA4MywgMTI4LCA3OSwgNjcsIDg0LCA3OSwgNjYsIDY5LCA4MiwgCisgICAgMTI4LCA3OSwgNjcsIDg0LCA2OSwgMjEyLCA3OSwgNjcsIDIxMCwgNzksIDY3LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA3OSwgCisgICAgNjcsIDY3LCA3NiwgODUsIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDc5LCA3NiwgMjExLCA3OSwgNjYsIDc5LCAyMDQsIDc5LCA2NiwgNzksIDcwLCA3MywgCisgICAgNzYsIDczLCAxMjgsIDc5LCA2NiwgNzYsIDczLCA4MSwgODUsIDE5NywgNzksIDY2LCA3NCwgNjksIDY3LCAyMTIsIDc5LCAKKyAgICA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzksIDY2LCA2OSwgNzYsIDc5LCA4MywgMTI4LCA3OSwgNjYsIDEyOCwgNzksIAorICAgIDY1LCA4OSwgMTI4LCA3OSwgNjUsIDc1LCAxMjgsIDc5LCA2NSwgNjYsIDc5LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgCisgICAgNzksIDE5MywgNzksIDQ4LCA1MywgNDksIDEyOCwgNzksIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAKKyAgICA2NSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgMTI4LCA3OSwgNDgsIDUyLCA1NywgMTI4LCA3OSwgNDgsIDUyLCA1NiwgMTI4LCAKKyAgICA3OSwgNDgsIDUyLCA1NSwgMTI4LCA3OSwgNDgsIDUyLCA1NCwgMTI4LCA3OSwgNDgsIDUyLCA1MywgMTI4LCA3OSwgNDgsIAorICAgIDUyLCA1MiwgMTI4LCA3OSwgNDgsIDUyLCA1MSwgMTI4LCA3OSwgNDgsIDUyLCA1MCwgMTI4LCA3OSwgNDgsIDUyLCA0OSwgCisgICAgMTI4LCA3OSwgNDgsIDUyLCA0OCwgMTI4LCA3OSwgNDgsIDUxLCA1NywgMTI4LCA3OSwgNDgsIDUxLCA1NiwgMTI4LCA3OSwgCisgICAgNDgsIDUxLCA1NSwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY3LCAxMjgsIDc5LCAKKyAgICA0OCwgNTEsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgNzksIDQ4LCA1MSwgNTIsIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc5LCA0OCwgCisgICAgNTEsIDUxLCAxMjgsIDc5LCA0OCwgNTEsIDUwLCAxMjgsIDc5LCA0OCwgNTEsIDQ5LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAKKyAgICA2NSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgMTI4LCA3OSwgNDgsIDUwLCA1NywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIAorICAgIDEyOCwgNzksIDQ4LCA1MCwgNTYsIDEyOCwgNzksIDQ4LCA1MCwgNTUsIDEyOCwgNzksIDQ4LCA1MCwgNTQsIDEyOCwgNzksIAorICAgIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCAxMjgsIDc5LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA3OSwgCisgICAgNDgsIDUwLCA1MiwgMTI4LCA3OSwgNDgsIDUwLCA1MSwgMTI4LCA3OSwgNDgsIDUwLCA1MCwgMTI4LCA3OSwgNDgsIDUwLCAKKyAgICA0OSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIAorICAgIDY1LCAxMjgsIDc5LCA0OCwgNDksIDU3LCAxMjgsIDc5LCA0OCwgNDksIDU2LCAxMjgsIDc5LCA0OCwgNDksIDU1LCAxMjgsIAorICAgIDc5LCA0OCwgNDksIDU0LCAxMjgsIDc5LCA0OCwgNDksIDUzLCAxMjgsIDc5LCA0OCwgNDksIDUyLCAxMjgsIDc5LCA0OCwgCisgICAgNDksIDUxLCAxMjgsIDc5LCA0OCwgNDksIDUwLCAxMjgsIDc5LCA0OCwgNDksIDQ5LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCAKKyAgICA2NywgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNDksIAorICAgIDQ4LCAxMjgsIDc5LCA0OCwgNDgsIDU3LCAxMjgsIDc5LCA0OCwgNDgsIDU2LCAxMjgsIDc5LCA0OCwgNDgsIDU1LCAxMjgsIAorICAgIDc5LCA0OCwgNDgsIDU0LCA3MCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjksIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY4LCAKKyAgICAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIAorICAgIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgCisgICAgMTI4LCA3OSwgNDgsIDQ4LCA1MiwgMTI4LCA3OSwgNDgsIDQ4LCA1MSwgMTI4LCA3OSwgNDgsIDQ4LCA1MCwgMTI4LCA3OSwgCisgICAgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDEyOCwgNzksIDQ1LCA4OSwgNjksIDEyOCwgNzksIDQ1LCAKKyAgICA3OSwgNDUsIDczLCAxMjgsIDc5LCA0NSwgNjksIDEyOCwgNzgsIDkwLCA4OSwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODQsIAorICAgIDEyOCwgNzgsIDkwLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA5MCwgODksIDgyLCAxMjgsIDc4LCA5MCwgODksIDgwLCAxMjgsIAorICAgIDc4LCA5MCwgODksIDEyOCwgNzgsIDkwLCA4NSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA5MCwgCisgICAgODUsIDgyLCAxMjgsIDc4LCA5MCwgODUsIDgxLCAxMjgsIDc4LCA5MCwgODUsIDgwLCAxMjgsIDc4LCA5MCwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgMTI4LCA3OCwgOTAsIDg1LCAyMDYsIDc4LCA5MCwgODUsIDEyOCwgNzgsIDkwLCAKKyAgICA3OSwgODgsIDEyOCwgNzgsIDkwLCA3OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgODgsIDEyOCwgNzgsIDkwLCA3MywgODQsIAorICAgIDEyOCwgNzgsIDkwLCA3MywgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA3OCwgOTAsIDczLCA2OSwgMTI4LCA3OCwgOTAsIDczLCAxMjgsIDc4LCA5MCwgNjksIDg4LCAxMjgsIDc4LCA5MCwgCisgICAgNjksIDg1LCA3NywgMTI4LCA3OCwgOTAsIDY5LCAxMjgsIDc4LCA5MCwgNjUsIDg4LCAxMjgsIDc4LCA5MCwgNjUsIDg0LCAKKyAgICAxMjgsIDc4LCA5MCwgNjUsIDgxLCAxMjgsIDc4LCA5MCwgNjUsIDgwLCAxMjgsIDc4LCA5MCwgNjUsIDEyOCwgNzgsIDkwLCAKKyAgICAxOTMsIDc4LCA4OSwgODcsIDY1LCAxMjgsIDc4LCA4OSwgODUsIDg4LCAxMjgsIDc4LCA4OSwgODUsIDg1LCAxMjgsIDc4LCAKICAgICA4OSwgODUsIDg0LCAxMjgsIDc4LCA4OSwgODUsIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODksIAogICAgIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDEyOCwgNzgsIDg5LCA4NSwgNjksIDEyOCwgNzgsIDg5LCA4NSwgCiAgICAgMTI4LCA3OCwgODksIDc5LCA4OCwgMTI4LCA3OCwgODksIDc5LCA4NCwgMTI4LCA3OCwgODksIDc5LCA4MCwgMTI4LCA3OCwgCiAgICAgODksIDc5LCA3OSwgMTI4LCA3OCwgODksIDc5LCA2NSwgMTI4LCA3OCwgODksIDc5LCAxMjgsIDc4LCA4OSwgNzQsIDY1LCAKICAgICAxMjgsIDc4LCA4OSwgNzMsIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDIxMiwgNzgsIDg5LCAKICAgICA3MywgMjExLCA3OCwgODksIDczLCAyMTAsIDc4LCA4OSwgNzMsIDgwLCAxMjgsIDc4LCA4OSwgNzMsIDc4LCA0NSwgNjgsIAotICAgIDc5LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgODksIDczLCA2OSwgODQsIDEyOCwgNzgsIDg5LCA3MywgCi0gICAgNjksIDgwLCAxMjgsIDc4LCA4OSwgNzMsIDY5LCAxMjgsIDc4LCA4OSwgNzMsIDEyOCwgNzgsIDg5LCAyMDEsIDc4LCA4OSwgCi0gICAgNjksIDg0LCAxMjgsIDc4LCA4OSwgNjksIDIxMiwgNzgsIDg5LCA2OSwgNzIsIDEyOCwgNzgsIDg5LCA2OSwgMjAwLCA3OCwgCi0gICAgODksIDY5LCA2OSwgMTI4LCA3OCwgODksIDY5LCAxMjgsIDc4LCA4OSwgMTk2LCA3OCwgODksIDY3LCA2NSwgMTI4LCA3OCwgCi0gICAgODksIDY1LCA2OSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgODksIDY1LCA2NSwgMTI4LCA3OCwgODcsIDc5LCA3OSwgMTI4LCAKLSAgICA3OCwgODcsIDc5LCAxMjgsIDc4LCA4NywgNzMsIDczLCAxMjgsIDc4LCA4NywgNzMsIDEyOCwgNzgsIDg3LCA2OSwgMTI4LCAKLSAgICA3OCwgODcsIDY1LCA2NSwgMTI4LCA3OCwgODcsIDY1LCAxMjgsIDc4LCA4NywgMTI4LCA3OCwgODYsIDEyOCwgNzgsIDg1LCAKLSAgICA4OCwgMTI4LCA3OCwgODUsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgODUsIAotICAgIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCA3OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgODAsIAotICAgIDEyOCwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgODUsIAotICAgIDc4LCA4NSwgOTAsIDEyOCwgNzgsIDg1LCA3OCwgODUsIDIxOCwgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA3OCwgCi0gICAgNjUsIDg2LCA4NSwgMjEyLCA3OCwgODUsIDc4LCA2NSwgODYsIDczLCAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCAKLSAgICAyMDYsIDc4LCA4NSwgNzcsIDY5LCA4MiwgMjA3LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgNzgsIAotICAgIDg1LCA3NywgNjksIDgyLCA2NSwgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCA2NiwgCi0gICAgNjksIDgyLCAxMjgsIDc4LCA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCA3OCwgCisgICAgNzksIDEyOCwgNzgsIDg5LCA3MywgNzMsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCAKKyAgICA4NCwgMTI4LCA3OCwgODksIDczLCA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgMTI4LCAKKyAgICA3OCwgODksIDIwMSwgNzgsIDg5LCA3MiwgNjUsIDEyOCwgNzgsIDg5LCA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgMjEyLCAKKyAgICA3OCwgODksIDY5LCA3MiwgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCA4OSwgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIAorICAgIDEyOCwgNzgsIDg5LCAxOTYsIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCA4OSwgNjUsIDg1LCAxMjgsIDc4LCA4OSwgNjUsIAorICAgIDczLCAxMjgsIDc4LCA4OSwgNjUsIDcyLCAxMjgsIDc4LCA4OSwgNjUsIDY5LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgCisgICAgNjUsIDY1LCAxMjgsIDc4LCA4NywgNzksIDc5LCAxMjgsIDc4LCA4NywgNzksIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgCisgICAgNzgsIDg3LCA3MywgMTI4LCA3OCwgODcsIDY5LCAxMjgsIDc4LCA4NywgNjUsIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgCisgICAgNzgsIDg3LCAxMjgsIDc4LCA4NiwgMTI4LCA3OCwgODUsIDg4LCAxMjgsIDc4LCA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgCisgICAgODUsIDEyOCwgNzgsIDg1LCA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIDg1LCA4NCwgMTI4LCA3OCwgODUsIDIxMiwgCisgICAgNzgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIDgwLCAxMjgsIDc4LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDc4LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIDg1LCA3OCwgODUsIDkwLCAxMjgsIDc4LCAKKyAgICA4NSwgNzgsIDg1LCAyMTgsIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNzgsIDY1LCA4NiwgODUsIDIxMiwgNzgsIAorICAgIDg1LCA3OCwgNjUsIDg2LCA3MywgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCA4NSwgMjA2LCA3OCwgODUsIDc3LCA2OSwgCisgICAgODIsIDIwNywgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIAorICAgIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgCisgICAgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgNzgsIDg1LCA3NiwgMTI4LCA3OCwgCiAgICAgODUsIDc1LCA4NCwgNjUsIDEyOCwgNzgsIDg1LCA2OSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNjksIDEyOCwgNzgsIDg1LCAKICAgICA2NiwgNzMsIDY1LCAyMDYsIDc4LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA4NSwgNDksIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIAogICAgIDUwLCA1MCwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgCkBAIC0xNjU5LDQ3MCArMTc4Miw0OTMgQEAKICAgICA2NSwgNjYsIDc2LCAxOTcsIDc4LCA3OSwgNzgsIDQ1LCA3NCwgNzksIDczLCA3OCwgNjksIDgyLCAxMjgsIDc4LCA3OSwgNzgsIAogICAgIDQ1LCA2NiwgODIsIDY5LCA2NSwgNzUsIDczLCA3OCwgMTk5LCA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCAyMDQsIDc4LCA3OSwgCiAgICAgNzUsIDcyLCA4NSwgNzUsIDEyOCwgNzgsIDc5LCA2OCwgNjksIDEyOCwgNzgsIDc5LCA2NSwgMTI4LCA3OCwgNzksIDQ1LCAKLSAgICA2NiwgODIsIDY5LCA2NSwgMjAzLCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIAorICAgIDY2LCA4MiwgNjksIDY1LCAyMDMsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OSwgCisgICAgNzksIDEyOCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgODUsIDEyOCwgCisgICAgNzgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDczLCA3MywgMTI4LCAKKyAgICA3OCwgNzgsIDc4LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2OSwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjksIDEyOCwgNzgsIAorICAgIDc4LCA3OCwgNjUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNjUsIDEyOCwgCisgICAgNzgsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgMTI4LCA3OCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCAKICAgICA3OSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzEsIAogICAgIDczLCAxMjgsIDc4LCA3OCwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCAxMjgsIAotICAgIDc4LCA3NywgMTI4LCA3OCwgNzYsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA3NiwgCi0gICAgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgMTI4LCAKLSAgICA3OCwgNzYsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MiwgCi0gICAgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCAKLSAgICA0OSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA3NiwgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA3NiwgCi0gICAgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MiwgMTI4LCAKLSAgICA3OCwgNzYsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA0OSwgCi0gICAgMTI4LCA3OCwgNzUsIDc5LCA3NywgMTI4LCA3OCwgNzUsIDIwNywgNzgsIDc1LCA3MywgNzgsIDY4LCA3MywgMTI4LCA3OCwgCi0gICAgNzUsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg5LCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4NCwgMTI4LCAKLSAgICA3OCwgNzQsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDEyOCwgNzgsIDc0LCA4OSwgODAsIDEyOCwgNzgsIAotICAgIDc0LCA4OSwgMTI4LCA3OCwgNzQsIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDc0LCA4NSwgCi0gICAgODIsIDEyOCwgNzgsIDc0LCA4NSwgODEsIDY1LCAxMjgsIDc4LCA3NCwgODUsIDgwLCAxMjgsIDc4LCA3NCwgODUsIDc5LCAKLSAgICA4OCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgMTI4LCA3OCwgNzQsIDg1LCA2OSwgODEsIDEyOCwgNzgsIDc0LCA4NSwgNjUsIAotICAgIDY5LCAxMjgsIDc4LCA3NCwgODUsIDEyOCwgNzgsIDc0LCA3OSwgODgsIDEyOCwgNzgsIDc0LCA3OSwgODQsIDEyOCwgNzgsIAotICAgIDc0LCA3OSwgODAsIDEyOCwgNzgsIDc0LCA3OSwgNzksIDEyOCwgNzgsIDc0LCA3OSwgMTI4LCA3OCwgNzQsIDczLCA4OCwgCi0gICAgMTI4LCA3OCwgNzQsIDczLCA4NCwgMTI4LCA3OCwgNzQsIDczLCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODgsIDEyOCwgCi0gICAgNzgsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgNjksIAotICAgIDEyOCwgNzgsIDc0LCA3MywgNjksIDEyOCwgNzgsIDc0LCA3MywgMTI4LCA3OCwgNzQsIDIwMSwgNzgsIDc0LCA2OSwgODUsIAotICAgIDg4LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgNjUsIDEyOCwgCi0gICAgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCAKLSAgICA2OSwgMTI4LCA3OCwgNzQsIDY5LCAxOTcsIDc4LCA3NCwgNjksIDEyOCwgNzgsIDc0LCA2NSwgODEsIDEyOCwgNzgsIDc0LCAKLSAgICA2NSwgODAsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCA3NiwgNzMsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAxMjgsIAotICAgIDc4LCA3NCwgNjUsIDY1LCAxMjgsIDc4LCA3NCwgMTI4LCA3OCwgNzMsIDg4LCAxMjgsIDc4LCA3MywgODQsIDgyLCA2OSwgCi0gICAgMTI4LCA3OCwgNzMsIDgzLCA2NSwgNzEsIDEyOCwgNzgsIDczLCA4MiwgODUsIDcxLCA4NSwgMTI4LCA3OCwgNzMsIDgwLCAKLSAgICAxMjgsIDc4LCA3MywgNzgsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDg5LCAxMjgsIDc4LCA3MywgNzgsIAotICAgIDY5LCA4NCwgMjE3LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgCi0gICAgNjksIDIwNiwgNzgsIDczLCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc4LCA3MywgNzgsIAotICAgIDE5NywgNzgsIDczLCA3OCwgNjgsIDY1LCA1MCwgMTI4LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDE3OCwgNzgsIDczLCA3NywgCi0gICAgMTI4LCA3OCwgNzMsIDIwNSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAKLSAgICA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCA3MywgNzMsIDEyOCwgNzgsIDczLCA3MiwgODMsIAotICAgIDcyLCA4NiwgNjUsIDgzLCA2NSwgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA3NywgNzMsIDc4LCAxMjgsIDc4LCA3MywgCi0gICAgNzEsIDczLCA2OCwgNjUsIDY5LCA4MywgNzIsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc4LCA3MywgNzEsIDcyLCAKLSAgICAyMTIsIDc4LCA3MywgNzEsIDcxLCA2NSwgNzIsIDczLCA4NCwgNjUsIDEyOCwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzgsIAotICAgIDczLCA2OSwgODUsIDc4LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCAKLSAgICA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MywgNzMsIDc5LCA4MywgCi0gICAgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCAKLSAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgCi0gICAgNzksIDgzLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzgsIDczLCAKLSAgICA2OSwgODUsIDc4LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MywgCi0gICAgNjksIDg1LCA2NywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCAKLSAgICA3OCwgNzMsIDY5LCA4NSwgMjA2LCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCAxMjgsIDc4LCA3MywgNjYsIAotICAgIDEyOCwgNzgsIDczLCA2NSwgMTI4LCA3OCwgNzMsIDUwLCAxMjgsIDc4LCA3MiwgODUsIDY5LCAxMjgsIDc4LCA3MiwgNzQsIAotICAgIDY1LCAxMjgsIDc4LCA3MiwgNjUsIDEyOCwgNzgsIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIAotICAgIDY5LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgCi0gICAgNzksIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCAKLSAgICA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIDc5LCA4NCwgMTI4LCAKLSAgICA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIAotICAgIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgNzgsIDcxLCAyMDcsIAotICAgIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgCi0gICAgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCAKLSAgICA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIAotICAgIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgCi0gICAgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCAKLSAgICA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIAotICAgIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgCi0gICAgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCAKLSAgICA3MSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIAotICAgIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgCi0gICAgNzEsIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgCi0gICAgMTk3LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAyMDYsIDc4LCA3MSwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCAKLSAgICA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3MywgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIAotICAgIDg4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMjEzLCA3OCwgNzEsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCAKLSAgICA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDEyOCwgNzgsIAotICAgIDcxLCA3MSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDY1LCA2OSwgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDEyOCwgNzgsIDcxLCA2OSwgODgsIDEyOCwgCi0gICAgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MSwgNjksIDgwLCAxMjgsIDc4LCA3MSwgNjksIDc4LCAKLSAgICAxMjgsIDc4LCA3MSwgNjksIDY1LCA2OCwgNjUsIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIAotICAgIDg0LCAxMjgsIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCA2NSwgODAsIDEyOCwgNzgsIAotICAgIDcxLCA2NSwgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDY1LCA3MywgMTI4LCA3OCwgCi0gICAgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIDc4LCA3MCwgMTI4LCA3OCwgNjksIDg4LCAyMTIsIDc4LCA2OSwgCi0gICAgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgODAsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCAKLSAgICA2OSwgMTI4LCA3OCwgNjksIDg3LCAxMjgsIDc4LCA2OSwgODUsIDg0LCA4MiwgNjUsIDIwNCwgNzgsIDY5LCA4NSwgODQsIAotICAgIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCAxMjgsIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCA4NCwgNjksIDE5NiwgNzgsIAotICAgIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4MCwgCi0gICAgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCA2OSwgMjA3LCA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgCi0gICAgNzgsIDEyOCwgNzgsIDY5LCA3MywgODQsIDcyLCA2OSwgMjEwLCA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA3OSwgMjA2LCAKLSAgICA3OCwgNjksIDcxLCA2NSwgODQsIDY5LCAxOTYsIDc4LCA2OSwgNjksIDEyOCwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIAotICAgIDEyOCwgNzgsIDY5LCA2NiwgNjksIDc4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAKLSAgICAxMjgsIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCAKLSAgICA3OCwgNjgsIDg1LCA4MCwgMTI4LCA3OCwgNjgsIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIAotICAgIDEyOCwgNzgsIDY4LCA3OSwgODQsIDEyOCwgNzgsIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIAotICAgIDY4LCA3OSwgNzgsIDEyOCwgNzgsIDY4LCA3OSwgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgCi0gICAgNjgsIDczLCA4OCwgMTI4LCA3OCwgNjgsIDczLCA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCAKLSAgICA4MCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIAotICAgIDY1LCAxMjgsIDc4LCA2OCwgNzMsIDY1LCA4MSwgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgCi0gICAgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIAotICAgIDEyOCwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNzgsIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIAotICAgIDY1LCA4OCwgMTI4LCA3OCwgNjgsIDY1LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgCi0gICAgMTI4LCA3OCwgNjgsIDY1LCA2NSwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAKLSAgICAxMjgsIDc4LCA2OCwgNjUsIDE5MywgNzgsIDY2LCA4OSwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODQsIDEyOCwgNzgsIDY2LCAKLSAgICA4OSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgODksIDgyLCAxMjgsIDc4LCA2NiwgODksIDgwLCAxMjgsIDc4LCA2NiwgODksIAotICAgIDEyOCwgNzgsIDY2LCA4NSwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODQsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDg4LCAxMjgsIAotICAgIDc4LCA2NiwgODUsIDgyLCAxMjgsIDc4LCA2NiwgODUsIDgwLCAxMjgsIDc4LCA2NiwgODUsIDEyOCwgNzgsIDY2LCA3OSwgCi0gICAgODgsIDEyOCwgNzgsIDY2LCA3OSwgODQsIDEyOCwgNzgsIDY2LCA3OSwgODAsIDEyOCwgNzgsIDY2LCA3OSwgMTI4LCA3OCwgCi0gICAgNjYsIDczLCA4OCwgMTI4LCA3OCwgNjYsIDczLCA4NCwgMTI4LCA3OCwgNjYsIDczLCA4MCwgMTI4LCA3OCwgNjYsIDczLCAKLSAgICA2OSwgODgsIDEyOCwgNzgsIDY2LCA3MywgNjksIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCAxMjgsIDc4LCA2NiwgNzMsIAotICAgIDEyOCwgNzgsIDY2LCA2NSwgODgsIDEyOCwgNzgsIDY2LCA2NSwgODQsIDEyOCwgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIAotICAgIDY2LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgCi0gICAgODgsIDczLCA2NSwgMjA2LCA3OCwgNjUsIDg4LCAxMjgsIDc4LCA2NSwgODUsIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCAKLSAgICA4NSwgNjgsIDczLCAyMTgsIDc4LCA2NSwgODQsIDg1LCA4MiwgNjUsIDIwNCwgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIAotICAgIDIwNCwgNzgsIDY1LCA4MywgNzUsIDY1LCA4MCwgMjAxLCA3OCwgNjUsIDgzLCA3MiwgNzMsIDEyOCwgNzgsIDY1LCA4MywgCi0gICAgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA3OCwgNjUsIDgyLCAKLSAgICAxMjgsIDc4LCA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OSwgMjExLCA3OCwgNjUsIDc4LCA4MywgNjUsIDc4LCA2NSwgODEsIAotICAgIDEyOCwgNzgsIDY1LCA3OCwgNzEsIDc3LCA3OSwgNzgsIDg0LCA3MiwgNzksIDEyOCwgNzgsIDY1LCA3OCwgNjgsIDEyOCwgCi0gICAgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNzgsIDY1LCA3NywgNjksIDEyOCwgNzgsIDY1LCA3NywgMTk3LCA3OCwgNjUsIDc3LCAKLSAgICA1MCwgMTI4LCA3OCwgNjUsIDc3LCAxMjgsIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCA2NSwgNzMsIDIwNCwgNzgsIDY1LCAKLSAgICA3MSwgODIsIDIwMSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIDY1LCAxMjgsIDc4LCA2NSwgNzEsIAotICAgIDE5MywgNzgsIDY1LCA3MSwgMTI4LCA3OCwgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCA3OCwgNjUsIDY2LCA3NiwgNjUsIAotICAgIDEyOCwgNzgsIDY1LCA2NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzUsIDgzLCA3MywgCi0gICAgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDczLCAxMjgsIDc4LCA2NSwgNjUsIDEyOCwgNzgsIDY1LCAKLSAgICAxOTMsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNDksIDEyOCwgNzgsIDQ4LCAKLSAgICA1MiwgNDgsIDEyOCwgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgNzgsIDQ4LCA1MSwgNTYsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIAotICAgIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCAxMjgsIDc4LCA0OCwgNTEsIDU0LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCA2NSwgCi0gICAgMTI4LCA3OCwgNDgsIDUxLCA1MywgMTI4LCA3OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgCi0gICAgNzgsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUxLCAxMjgsIDc4LCA0OCwgNTEsIDUwLCAxMjgsIDc4LCAKLSAgICA0OCwgNTEsIDQ5LCAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAxMjgsIDc4LCA0OCwgNTAsIDU3LCAxMjgsIDc4LCA0OCwgNTAsIAotICAgIDU2LCAxMjgsIDc4LCA0OCwgNTAsIDU1LCAxMjgsIDc4LCA0OCwgNTAsIDU0LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCA2NSwgCi0gICAgMTI4LCA3OCwgNDgsIDUwLCA1MywgMTI4LCA3OCwgNDgsIDUwLCA1MiwgMTI4LCA3OCwgNDgsIDUwLCA1MSwgMTI4LCA3OCwgCi0gICAgNDgsIDUwLCA1MCwgMTI4LCA3OCwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNDgsIDQ5LCAKLSAgICA1NywgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA0OCwgNDksIAotICAgIDU2LCAxMjgsIDc4LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA0OCwgNDksIDUzLCAxMjgsIAotICAgIDc4LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDc4LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA0OCwgNDgsIDU2LCAKLSAgICAxMjgsIDc4LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDc4LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDc4LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3OCwgNDUsIDY1LCA4MiwgMjE3LCA3NywgODksIDg4LCAxMjgsIAotICAgIDc3LCA4OSwgODQsIDEyOCwgNzcsIDg5LCA4MywgNzYsIDczLCA4NCwgNjksIDEyOCwgNzcsIDg5LCA4MCwgMTI4LCA3NywgCi0gICAgODksIDY1LCAxMjgsIDc3LCA4OSwgMTkzLCA3NywgODksIDEyOCwgNzcsIDIxNywgNzcsIDg3LCA3OSwgNzksIDEyOCwgNzcsIAotICAgIDg3LCA3OSwgMTI4LCA3NywgODcsIDczLCA3MywgMTI4LCA3NywgODcsIDczLCAxMjgsIDc3LCA4NywgNjksIDY5LCAxMjgsIAotICAgIDc3LCA4NywgNjksIDEyOCwgNzcsIDg3LCA2NSwgNjUsIDEyOCwgNzcsIDg3LCA2NSwgMTI4LCA3NywgODcsIDEyOCwgNzcsIAotICAgIDIxNSwgNzcsIDg2LCA3OSwgODAsIDEyOCwgNzcsIDg2LCA3MywgMTI4LCA3NywgODYsIDY5LCA4NSwgNjUsIDY5LCA3OCwgCi0gICAgNzEsIDY1LCA3NywgMTI4LCA3NywgODYsIDEyOCwgNzcsIDIxNCwgNzcsIDg1LCA4OCwgMTI4LCA3NywgODUsIDg1LCA4MywgCi0gICAgNzMsIDc1LCA2NSwgODQsIDc5LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA4NSwgODIsIDY4LCA3MiwgNjUsIDc0LCAxOTMsIDc3LCAKLSAgICA4NSwgODQsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDY3LCAxMjgsIDc3LCA4NSwgODMsIDczLCAxOTUsIDc3LCA4NSwgODMsIAotICAgIDcyLCA4MiwgNzksIDc5LCA3NywgMTI4LCA3NywgODUsIDgzLCA3MiwgNTEsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDE3OSwgCi0gICAgNzcsIDg1LCA4MywgNzIsIDEyOCwgNzcsIDg1LCA4MywgMjAwLCA3NywgODUsIDgyLCA4OCwgMTI4LCA3NywgODUsIDgyLCAKLSAgICA3MSwgODUsIDUwLCAxMjgsIDc3LCA4NSwgODIsIDY5LCAxMjgsIDc3LCA4NSwgODIsIDY4LCA2NSwgMTI4LCA3NywgODUsIAotICAgIDgyLCA2OCwgMTkzLCA3NywgODUsIDgyLCAxMjgsIDc3LCA4NSwgODEsIDY4LCA2NSwgNzcsIDEyOCwgNzcsIDg1LCA4MCwgCi0gICAgMTI4LCA3NywgODUsIDc5LCA4OCwgMTI4LCA3NywgODUsIDc5LCA4NCwgMTI4LCA3NywgODUsIDc5LCA4MCwgMTI4LCA3NywgCi0gICAgODUsIDc5LCA3NywgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNzksIDEyOCwgNzcsIDg1LCA3OCwgODMsIDg1LCA2NiwgMTI4LCAKLSAgICA3NywgODUsIDc4LCA2NSwgNzIsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDg0LCAxMjgsIDc3LCA4NSwgNzYsIAotICAgIDg0LCA3MywgODMsIDY5LCAyMTIsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NywgODUsIAotICAgIDc2LCA4NCwgNzMsIDgwLCA3NiwgMTk3LCA3NywgODUsIDc2LCA4NCwgNzMsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgCi0gICAgODUsIDc2LCA4NCwgNzMsIDc3LCA2NSwgODAsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDIwMSwgNzcsIDg1LCA3NSwgODAsIDcyLCAKLSAgICA4MiwgNjksIDc4LCA3MSwgMTI4LCA3NywgODUsIDczLCA3OCwgMTI4LCA3NywgODUsIDcxLCA4MywgMTI4LCA3NywgODUsIAotICAgIDcxLCAxMjgsIDc3LCA4NSwgMTk5LCA3NywgODUsIDY5LCAxMjgsIDc3LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA4NSwgNjcsIAotICAgIDIwMCwgNzcsIDg1LCA2NywgNjUsIDY1LCA2OCwgMTI4LCA3NywgODUsIDY1LCA3OCwgMTI4LCA3NywgODUsIDY1LCA2OSwgCi0gICAgMTI4LCA3NywgODUsIDQ1LCA3MSwgNjUsIDY1LCA3MiwgNzYsIDY1LCAxOTMsIDc3LCAyMTMsIDc3LCA4MywgMTI4LCA3NywgCi0gICAgODAsIDY1LCAxMjgsIDc3LCA3OSwgODksIDY1LCA3MywgMTI4LCA3NywgNzksIDg4LCAxMjgsIDc3LCA3OSwgODYsIDczLCAKLSAgICAxOTcsIDc3LCA3OSwgODYsIDY5LCAxOTYsIDc3LCA3OSwgODUsIDg0LCA3MiwgMTI4LCA3NywgNzksIDg1LCA4NCwgMjAwLCAKLSAgICA3NywgNzksIDg1LCA4MywgNjksIDEyOCwgNzcsIDc5LCA4NSwgODMsIDE5NywgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIAotICAgIDc4LCA4MywgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgCi0gICAgNzMsIDIwNiwgNzcsIDc5LCA4NSwgNzgsIDIxMiwgNzcsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCAKLSAgICAxOTYsIDc3LCA3OSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzcsIDc5LCA4NCwgMTI4LCA3NywgNzksIDgyLCA4NCwgODUsIAotICAgIDg1LCA3NywgMTI4LCA3NywgNzksIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDc3LCA3OSwgODIsIDgwLCA3MiwgNzksIDc2LCA3OSwgCi0gICAgNzEsIDczLCA2NywgNjUsIDIwNCwgNzcsIDc5LCA4MiwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDc5LCA4MCwgMTI4LCAKLSAgICA3NywgNzksIDc5LCA4MywgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc3LCA3OSwgNzksIDc4LCAxMjgsIDc3LCA3OSwgNzksIAotICAgIDIwNiwgNzcsIDc5LCA3OSwgNzcsIDgwLCA4NSwgODEsIDEyOCwgNzcsIDc5LCA3OSwgNzcsIDY5LCA4NSwgODQsIDEyOCwgCi0gICAgNzcsIDc5LCA3OSwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDcyLCAKLSAgICAxMjgsIDc3LCA3OSwgNzgsIDg0LCAyMDAsIDc3LCA3OSwgNzgsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3OSwgNzgsIAotICAgIDc5LCA4MywgODQsIDY1LCA2NiwgNzYsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDc3LCA3OSwgCi0gICAgNzgsIDc5LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzcsIDc5LCAKLSAgICA3OCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIDIxMSwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzcsIAotICAgIDc5LCA3OCwgNzksIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAKLSAgICAyMTAsIDc3LCA3OSwgNzgsIDc1LCA2OSwgODksIDEyOCwgNzcsIDc5LCA3OCwgNzUsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIAotICAgIDczLCAxMjgsIDc3LCA3OSwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc3LCA3OSwgNzgsIDY5LCAKLSAgICAyMTcsIDc3LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCAyMDYsIDc3LCA3OSwgNzYsIDEyOCwgNzcsIDc5LCA3MiwgNjUsIDc3LCAKLSAgICA3NywgNjUsIDE5NiwgNzcsIDc5LCA2OCwgODUsIDc2LCAyMDcsIDc3LCA3OSwgNjgsIDY5LCA4MywgODQsIDg5LCAxMjgsIAotICAgIDc3LCA3OSwgNjgsIDY5LCA3NiwgODMsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCAKLSAgICAxMjgsIDc3LCA3OSwgNjYsIDczLCA3NiwgMTk3LCA3NywgNzksIDY1LCAxMjgsIDc3LCAyMDcsIDc3LCA3OCwgODksIDY1LCAKLSAgICAyMDUsIDc3LCA3OCwgNjUsIDgzLCAxMjgsIDc3LCA3NywgMTI4LCA3NywgMjA1LCA3NywgNzYsIDY1LCAxMjgsIDc3LCA3NiwgCi0gICAgMTI4LCA3NywgNzUsIDgwLCA2NSwgODIsIDY1LCAyMDksIDc3LCA3MywgODgsIDEyOCwgNzcsIDczLCA4NCwgMTI4LCA3NywgCi0gICAgNzMsIDIxMiwgNzcsIDczLCA4MywgODIsIDY1LCAxMjgsIDc3LCA3MywgODIsIDczLCA2NiwgNjUsIDY1LCA4MiwgODUsIAotICAgIDEyOCwgNzcsIDczLCA4MiwgNzMsIDEyOCwgNzcsIDczLCA4MiwgNjksIDY4LCAxMjgsIDc3LCA3MywgODAsIDEyOCwgNzcsIAotICAgIDczLCA3OCwgODksIDEyOCwgNzcsIDczLCA3OCwgODUsIDgzLCA0NSwgNzksIDgyLCA0NSwgODAsIDc2LCA4NSwgMjExLCA3NywgCi0gICAgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3MywgNzgsIDczLCAKLSAgICA3NywgNjUsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY4LCA3MywgODMsIDY3LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2NiwgODUsIAotICAgIDgzLCAxMjgsIDc3LCA3MywgNzcsIDY5LCAxMjgsIDc3LCA3MywgNzcsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgCi0gICAgNzgsIDIxMSwgNzcsIDczLCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA3NywgNzMsIDc2LCA3NiwgMTk3LCA3NywgNzMsIDc2LCAKLSAgICAyMDQsIDc3LCA3MywgNzYsIDc1LCAyMTcsIDc3LCA3MywgNzYsIDEyOCwgNzcsIDczLCA3NSwgODUsIDgyLCA3OSwgNzgsIAotICAgIDEyOCwgNzcsIDczLCA3NSwgODIsIDc5LCAyMDYsIDc3LCA3MywgNzUsIDgyLCA3MywgMTI4LCA3NywgNzMsIDczLCA3OCwgCi0gICAgMTI4LCA3NywgNzMsIDczLCAxMjgsIDc3LCA3MywgMTk5LCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgCi0gICAgNzcsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCAKLSAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIAotICAgIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCAKLSAgICA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgCi0gICAgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgCi0gICAgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA3MywgNjksIDg1LCAyMDUsIDc3LCA3MywgNjksIDgwLCAKLSAgICAxMjgsIDc3LCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MywgNjksIDEyOCwgNzcsIDczLCA2OCwgNzYsIDczLCA3OCwgMTk3LCAKLSAgICA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCA0NSwgODcsIDY5LCA3NiwgODMsIDIwMCwgNzcsIDczLCA2OCwgNjgsIDc2LCAxOTcsIAotICAgIDc3LCA3MywgMTk2LCA3NywgNzMsIDY3LCA4MiwgNzksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgCi0gICAgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgMjA3LCA3NywgNzIsIDkwLCAxMjgsIDc3LCAKLSAgICA3MiwgMTI4LCA3NywgNzEsIDg1LCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4NCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgNzcsIDcxLCA4NSwgODIsIDEyOCwgNzcsIDcxLCA4NSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDg4LCAxMjgsIAotICAgIDc3LCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgMTI4LCA3NywgNzEsIDg1LCAxMjgsIDc3LCA3MSwgCi0gICAgNzksIDg4LCAxMjgsIDc3LCA3MSwgNzksIDg0LCAxMjgsIDc3LCA3MSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgNzksIDEyOCwgCi0gICAgNzcsIDcxLCAyMDcsIDc3LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDczLCA2OSwgMTI4LCA3NywgNzEsIDY5LCAKLSAgICA4OCwgMTI4LCA3NywgNzEsIDY5LCA4MCwgMTI4LCA3NywgNzEsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDg1LCAxMjgsIDc3LCAKLSAgICA3MSwgNjYsIDc5LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzAsIDg1LCA3NywgMTI4LCA3NywgNzEsIDY2LCA3OSwgCi0gICAgMTI4LCA3NywgNzEsIDY2LCA3MywgMTI4LCA3NywgNzEsIDY2LCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAKLSAgICA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjUsIAotICAgIDgzLCA2NSwgODEsIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgMTI4LCA3NywgNzEsIDY1LCA4OCwgMTI4LCA3NywgCi0gICAgNzEsIDY1LCA4NCwgMTI4LCA3NywgNzEsIDY1LCA4MCwgMTI4LCA3NywgNzEsIDY1LCAxMjgsIDc3LCA3MSwgMTI4LCA3NywgCi0gICAgNzAsIDc5LCA3OCwgMTI4LCA3NywgNzAsIDc5LCAyMDYsIDc3LCA3MCwgNzksIDEyOCwgNzcsIDcwLCA3MywgODksIDY1LCAKLSAgICA4MSwgMTI4LCA3NywgNzAsIDczLCA2OSwgNjksIDEyOCwgNzcsIDcwLCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MCwgNjksIAotICAgIDg1LCA4MSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA3MCwgNjUsIDY1LCAxMjgsIDc3LCA2OSwgCi0gICAgOTAsIDkwLCA3OSwgMTI4LCA3NywgNjksIDg4LCAxMjgsIDc3LCA2OSwgODUsIDIxMiwgNzcsIDY5LCA4NSwgODEsIDEyOCwgCi0gICAgNzcsIDY5LCA4NSwgNzgsIDc0LCA3OSwgNzcsIDc4LCA2OCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCA3OCwgMTI4LCAKLSAgICA3NywgNjksIDg0LCA4MiwgNzksIDEyOCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNzcsIDY5LCA4NCwgODIsIAotICAgIDczLCA2NSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNjksIDg0LCA2OSwgMjExLCA3NywgNjksIDg0LCA3OSwgNjYsIDY5LCA3NiwgCi0gICAgODUsIDgzLCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3NSwgMTI4LCA3NywgNjksIDg0LCA2OSwgNzEsIDEyOCwgNzcsIDY5LCAKLSAgICA4NCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgODQsIDE5MywgNzcsIDY5LCA4MywgODMsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIAotICAgIDc3LCA2OSwgODMsIDc5LCAxMjgsIDc3LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2OSwgODMsIDcyLCAxMjgsIDc3LCA2OSwgCi0gICAgODIsIDc1LCA3MiwgNjUsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAxOTMsIDc3LCA2OSwgODIsIDczLCA2OCwgNzMsIDY1LCAKLSAgICA3OCwgODMsIDEyOCwgNzcsIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODIsIAotICAgIDY3LCA4NSwgODIsIDg5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgODIsIDIxNywgNzcsIDY5LCA3OCwgNjgsIDg1LCA4NCwgCi0gICAgMTI4LCA3NywgNjksIDc4LCAxMjgsIDc3LCA2OSwgNzcsIDc5LCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDgzLCAKLSAgICA3MiwgNzMsIDgwLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCAyMTAsIAotICAgIDc3LCA2OSwgNzcsIDQ1LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA3NywgNjksIDc3LCAxMjgsIDc3LCA2OSwgMjA1LCA3NywgCi0gICAgNjksIDc2LCA3OSwgNjgsIDczLCAxOTUsIDc3LCA2OSwgNzYsIDczLCA3NSwgMTI4LCA3NywgNjksIDczLCA5MCwgNzMsIAotICAgIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDg0LCA3OSwgNzgsIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDgwLCA3MiwgNzksIDc4LCA2OSwgCi0gICAgMTI4LCA3NywgNjksIDcxLCA2NSwgNzYsIDczLCAxMjgsIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc3LCAKLSAgICA2OSwgNjksIDg0LCA2OSwgMjAxLCA3NywgNjksIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCA3NywgODUsIDEyOCwgNzcsIAotICAgIDY5LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OCwgCi0gICAgNzMsIDg1LCA3NywgMTI4LCA3NywgNjksIDY4LCA3MywgODUsIDIwNSwgNzcsIDY5LCA2OCwgNzMsIDY3LCA3MywgNzgsIDY5LCAKLSAgICAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NywgNjUsIDIwNCwgNzcsIDY5LCA2NSwgODQsIDEyOCwgNzcsIDY5LCA2NSwgMjEyLCAKLSAgICA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTk2LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTI4LCA3NywgNjksIAotICAgIDY1LCA4MywgODUsIDgyLCAxOTcsIDc3LCA2OCwgODUsIDIwNiwgNzcsIDY3LCA3MiwgMjEzLCA3NywgNjcsIDcyLCA2NSwgCi0gICAgMjA2LCA3NywgNjYsIDg1LCA3OSwgODEsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDEyOCwgNzcsIDY2LCA4NSwgNjksIDEyOCwgCi0gICAgNzcsIDY2LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY2LCA3OSwgNzksIAotICAgIDEyOCwgNzcsIDY2LCA3OSwgMTI4LCA3NywgNjYsIDczLCA4NCwgMTI4LCA3NywgNjYsIDczLCAyMTIsIDc3LCA2NiwgNzMsIAotICAgIDgyLCA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNjYsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgCi0gICAgNjYsIDY5LCA4NSwgODIsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA3NywgMTI4LCA3NywgNjYsIDY5LCA4MiwgNjUsIDY5LCAKLSAgICAxMjgsIDc3LCA2NiwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNjksIDY5LCA3NSwgNjksIDY5LCA4NCwgMTI4LCA3NywgNjYsIAotICAgIDY5LCA2OSwgMTI4LCA3NywgNjYsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDgxLCAxMjgsIDc3LCA2NiwgNjUsIDc4LCA4OSwgCi0gICAgNzMsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDc1LCA2OSwgODQsIAotICAgIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDEyOCwgNzcsIDY2LCA2NSwgMTkzLCA3NywgNjYsIDE5MywgNzcsIDY2LCA1MiwgMTI4LCAKLSAgICA3NywgNjYsIDUxLCAxMjgsIDc3LCA2NiwgNTAsIDEyOCwgNzcsIDY2LCAxMjgsIDc3LCAxOTQsIDc3LCA2NSwgODksIDY5LCAKLSAgICAyMDMsIDc3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgODksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIAotICAgIDc3LCA2NSwgMTI4LCA3NywgNjUsIDg4LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDc3LCA2NSwgCi0gICAgODQsIDgyLCA3MywgODgsIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgNjUsIDg0LCAKLSAgICAxMjgsIDc3LCA2NSwgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCA4MywgODMsIAotICAgIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIDc3LCA2NSwgCi0gICAgODMsIDcyLCA3MCwgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgNjcsIDg1LCAKLSAgICA3NiwgNzMsIDc4LCAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg1LCA3NSwgODUsIDEyOCwgNzcsIAotICAgIDY1LCA4MiwgODQsIDg5LCA4MiwgNzMsIDE5MywgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA4MiwgCi0gICAgODIsIDczLCA2NSwgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUyLCAKLSAgICAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTEsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MCwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA3NSwgNDUsIDQ5LCAxMjgsIDc3LCA2NSwgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA3MiwgMTI4LCA3NywgCi0gICAgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDY2LCA4NSwgODQsIDY1LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIDY1LCA4MiwgMTI4LCAKLSAgICA3NywgNjUsIDgxLCA2NSwgNzAsIDEyOCwgNzcsIDY1LCA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgMTk3LCA3NywgNjUsIAotICAgIDgwLCA3MywgODEsIDEyOCwgNzcsIDY1LCAyMDgsIDc3LCA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg5LCA3OSwgCi0gICAgNzgsIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAyMTgsIDc3LCAKLSAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDc4LCA3MSwgNjUsIDc2LCA2NSwgNzcsIDEyOCwgNzcsIDY1LCA3OCwgNjgsIAotICAgIDY1LCA3MywgNzYsIDczLCA3OCwgMTk5LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCAxOTUsIDc3LCA2NSwgNzgsIDY3LCA3MiwgCi0gICAgMjEzLCA3NywgNjUsIDc4LCA2NSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNzcsIDY1LCA3NiwgODQsIDY5LCA4MywgMTk3LCAKLSAgICA3NywgNjUsIDc2LCA2OSwgNjksIDgyLCA3MywgMTI4LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3NywgNjUsIDc2LCAxOTcsIAotICAgIDc3LCA2NSwgNzYsIDY1LCA3NSwgNzksIDIwNiwgNzcsIDY1LCA3NSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgNzcsIDY1LCA3MywgCi0gICAgOTAsIDY5LCAxMjgsIDc3LCA2NSwgNzMsIDg5LCA2NSwgNzcsIDc5LCA3NSwgMTI4LCA3NywgNjUsIDczLCA4NCwgNjUsIDczLCAKLSAgICA3NSwgNzIsIDg1LCAxMjgsIDc3LCA2NSwgNzMsIDgyLCA4NSwgMTI4LCA3NywgNjUsIDczLCA3NywgODUsIDY1LCA3OCwgCi0gICAgMTI4LCA3NywgNjUsIDczLCA3NywgNjUsIDc2LCA2NSwgNzMsIDEyOCwgNzcsIDY1LCA3MywgNzYsIDY2LCA3OSwgMjE2LCAKLSAgICA3NywgNjUsIDczLCA3NSwgODUsIDgyLCA3OSwgMTI4LCA3NywgNjUsIDczLCA2OCwgNjksIDc4LCAxMjgsIDc3LCA2NSwgNzIsIAotICAgIDc0LCA3OSwgNzgsIDE5OSwgNzcsIDY1LCA3MiwgNzIsIDY1LCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA4MCwgODIsIDY1LCA3OCwgCi0gICAgNjUsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDgwLCA2NSwgNzUsIDcyLCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA2NSwgODAsIDgyLCAKLSAgICA2NSwgNjUsIDc4LCAxOTMsIDc3LCA2NSwgNzIsIDEyOCwgNzcsIDY1LCA3MSwgNzgsIDczLCA3MCwgODksIDczLCA3OCwgCi0gICAgMTk5LCA3NywgNjUsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY1LCA2OSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjUsIDY5LCAKLSAgICA3OCwgNzQsIDY5LCA4NCwgMTI4LCA3NywgNjUsIDY5LCA3NywgODYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIAotICAgIDc1LCA4MCwgNjksIDc4LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgCi0gICAgNzcsIDY2LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCA3NywgNjUsIDY5LCAKLSAgICA3NywgMTI4LCA3NywgNjUsIDY5LCA3NiwgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc1LCA2OSwgODUsIDgwLCAxMjgsIAotICAgIDc3LCA2NSwgNjgsIDg5LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA4NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgNjUsIDIwMCwgCi0gICAgNzcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDc3LCA2NSwgNjgsIDY4LCAxOTMsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCAKLSAgICA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY2LCA4MiwgNjksIDg2LCA2OSwgCi0gICAgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCAKLSAgICA3OSwgNzgsIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCAyMDYsIDc3LCA2NSwgNjcsIDcyLCA3MywgNzgsIDY5LCAxMjgsIAotICAgIDc3LCA2NSwgNjUsIDczLCAxMjgsIDc3LCA2NSwgNjUsIDEyOCwgNzcsIDY1LCA1MCwgMTI4LCA3NywgNDgsIDUyLCA1MiwgCi0gICAgMTI4LCA3NywgNDgsIDUyLCA1MSwgMTI4LCA3NywgNDgsIDUyLCA1MCwgMTI4LCA3NywgNDgsIDUyLCA0OSwgMTI4LCA3NywgCi0gICAgNDgsIDUyLCA0OCwgNjUsIDEyOCwgNzcsIDQ4LCA1MiwgNDgsIDEyOCwgNzcsIDQ4LCA1MSwgNTcsIDEyOCwgNzcsIDQ4LCAKLSAgICA1MSwgNTYsIDEyOCwgNzcsIDQ4LCA1MSwgNTUsIDEyOCwgNzcsIDQ4LCA1MSwgNTQsIDEyOCwgNzcsIDQ4LCA1MSwgNTMsIAotICAgIDEyOCwgNzcsIDQ4LCA1MSwgNTIsIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDY2LCAxMjgsIDc3LCA0OCwgNTEsIDUxLCA2NSwgCi0gICAgMTI4LCA3NywgNDgsIDUxLCA1MSwgMTI4LCA3NywgNDgsIDUxLCA1MCwgMTI4LCA3NywgNDgsIDUxLCA0OSwgNjUsIDEyOCwgCi0gICAgNzcsIDQ4LCA1MSwgNDksIDEyOCwgNzcsIDQ4LCA1MSwgNDgsIDEyOCwgNzcsIDQ4LCA1MCwgNTcsIDEyOCwgNzcsIDQ4LCAKLSAgICA1MCwgNTYsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDU2LCAxMjgsIDc3LCA0OCwgNTAsIDU1LCAxMjgsIDc3LCA0OCwgNTAsIAotICAgIDU0LCAxMjgsIDc3LCA0OCwgNTAsIDUzLCAxMjgsIDc3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA3NywgNDgsIDUwLCA1MiwgCi0gICAgMTI4LCA3NywgNDgsIDUwLCA1MSwgMTI4LCA3NywgNDgsIDUwLCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTAsIDEyOCwgCi0gICAgNzcsIDQ4LCA1MCwgNDksIDEyOCwgNzcsIDQ4LCA1MCwgNDgsIDEyOCwgNzcsIDQ4LCA0OSwgNTcsIDEyOCwgNzcsIDQ4LCAKLSAgICA0OSwgNTYsIDEyOCwgNzcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU1LCAxMjgsIDc3LCA0OCwgNDksIAotICAgIDU0LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NCwgMTI4LCA3NywgNDgsIDQ5LCA1MywgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgCi0gICAgNTMsIDEyOCwgNzcsIDQ4LCA0OSwgNTIsIDEyOCwgNzcsIDQ4LCA0OSwgNTEsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcyLCAKLSAgICAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNzAsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIAotICAgIDY5LCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2OCwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjcsIDEyOCwgNzcsIDQ4LCA0OSwgCi0gICAgNTAsIDY2LCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgMTI4LCA3NywgNDgsIDQ5LCAKLSAgICA0OSwgMTI4LCA3NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNDgsIDEyOCwgNzcsIDQ4LCA0OCwgNTcsIAotICAgIDEyOCwgNzcsIDQ4LCA0OCwgNTYsIDEyOCwgNzcsIDQ4LCA0OCwgNTUsIDEyOCwgNzcsIDQ4LCA0OCwgNTQsIDEyOCwgNzcsIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzcsIDQ4LCA0OCwgNTIsIDEyOCwgNzcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDc3LCA0OCwgCi0gICAgNDgsIDUxLCAxMjgsIDc3LCA0OCwgNDgsIDUwLCAxMjgsIDc3LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA3NywgNDgsIDQ4LCAKLSAgICA0OSwgNjUsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDEyOCwgNzYsIDIxOCwgNzYsIDg5LCA4OSwgMTI4LCA3NiwgODksIDg4LCAKLSAgICAxMjgsIDc2LCA4OSwgODQsIDEyOCwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzYsIDg5LCA4MiwgMTI4LCA3NiwgODksIDgwLCAKLSAgICAxMjgsIDc2LCA4OSwgNjgsIDczLCA2NSwgMjA2LCA3NiwgODksIDY3LCA3MywgNjUsIDIwNiwgNzYsIDg4LCAxMjgsIDc2LCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDc2LCA4NywgNzksIDEyOCwgNzYsIDg3LCA3MywgNzMsIDEyOCwgNzYsIDg3LCA3MywgMTI4LCAKLSAgICA3NiwgODcsIDY5LCAxMjgsIDc2LCA4NywgNjUsIDY1LCAxMjgsIDc2LCA4NywgNjUsIDEyOCwgNzYsIDg1LCA4OCwgMTI4LCAKLSAgICA3NiwgODUsIDg0LCAxMjgsIDc2LCA4NSwgODIsIDg4LCAxMjgsIDc2LCA4NSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgNzYsIDg1LCA3OSwgODQsIDEyOCwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgMTI4LCA3NiwgODUsIAotICAgIDc4LCA3MSwgODMsIDczLCAxMjgsIDc2LCA4NSwgNzgsIDY1LCA4NCwgMTk3LCA3NiwgODUsIDIwNSwgNzYsIDg1LCA3NiwgCi0gICAgMTI4LCA3NiwgODUsIDczLCA4MywgMTI4LCA3NiwgODUsIDcyLCA4NSwgODIsIDEyOCwgNzYsIDg1LCA3MiwgMTI4LCA3NiwgCi0gICAgODUsIDcxLCA3MSwgNjUsIDcxLCA2OSwgMTI4LCA3NiwgODUsIDcxLCA2NSwgNzYsIDEyOCwgNzYsIDg1LCA3MSwgNjUsIAotICAgIDIwNCwgNzYsIDg1LCA2OSwgMTI4LCA3NiwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDg1LCA1MSwgMTI4LCA3NiwgODUsIAotICAgIDUwLCAxMjgsIDc2LCA4NSwgMTc4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgCi0gICAgNzgsIDcxLCAxOTcsIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCA2OSwgMTk2LCA3NiwgNzksIDg3LCAKLSAgICA2OSwgMjEwLCA3NiwgNzksIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgMTI4LCAKLSAgICA3NiwgNzksIDg1LCA2OCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAyMTcsIAotICAgIDc2LCA3OSwgODQsIDg1LCA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgCi0gICAgNzksIDgyLCA4MiwgNjUsIDczLCA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCAKLSAgICA3OSwgNzksIDg0LCAxMjgsIDc2LCA3OSwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDc2LCA3OSwgNzksIAotICAgIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA2NSwgCi0gICAgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCAKLSAgICA4OSwgODIsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIAotICAgIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCAKLSAgICA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgCi0gICAgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIAotICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgCi0gICAgNzcsIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCAKLSAgICA3NiwgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIAotICAgIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgCi0gICAgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCAyMDMsIDc2LCAKLSAgICA3OSwgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NiwgNzksIAotICAgIDY1LCAxMjgsIDc2LCA3OCwgMTI4LCA3NiwgNzcsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDEyOCwgNzYsIDc0LCA4NSwgNjgsIAotICAgIDczLCA3NCwgNjksIDEyOCwgNzYsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDEyOCwgNzYsIDczLCA4OCwgMTI4LCA3NiwgNzMsIAotICAgIDg3LCA3OCwgMTI4LCA3NiwgNzMsIDg2LCA4MiwgMTk3LCA3NiwgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgCi0gICAgODQsIDY5LCAyMTAsIDc2LCA3MywgODQsIDgyLCAxOTMsIDc2LCA3MywgODQsIDEyOCwgNzYsIDczLCA4MywgMjEzLCA3NiwgCi0gICAgNzMsIDgyLCAxOTMsIDc2LCA3MywgODEsIDg1LCA3MywgMTk2LCA3NiwgNzMsIDgxLCAxMjgsIDc2LCA3MywgODAsIDgzLCAKLSAgICA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzgsIDIwMywgNzYsIAotICAgIDczLCA3OCwgNzEsIDgzLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgCi0gICAgNzYsIDczLCA3OCwgNjksIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCAKLSAgICA0NSwgNTEsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIAotICAgIDc2LCA3MywgNzcsIDc3LCA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAKLSAgICAyMTMsIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNzYsIDczLCA3NywgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzYsIDg5LCAxMjgsIAotICAgIDc2LCA3MywgNzYsIDczLCA4NCwgNzIsIDEyOCwgNzYsIDczLCA3NiwgMTI4LCA3NiwgNzMsIDczLCAxMjgsIDc2LCA3MywgCi0gICAgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCA3MiwgNzksIDg1LCA4MywgNjksIAotICAgIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc2LCA3MywgNzAsIDY5LCAxMjgsIDc2LCA3MywgNjksIDg4LCAxMjgsIAotICAgIDc2LCA3MywgNjksIDg0LCAxMjgsIDc2LCA3MywgNjksIDgwLCAxMjgsIDc2LCA3MywgNjksIDY5LCAxMjgsIDc2LCA3MywgCi0gICAgNjksIDEyOCwgNzYsIDczLCA2OCwgMTI4LCA3NiwgNzMsIDY2LCA4MiwgNjUsIDEyOCwgNzYsIDczLCA2NiwgNjksIDgyLCAKLSAgICA4NCwgODksIDEyOCwgNzYsIDczLCA2NSwgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDc2LCA3MiwgNzMsIDczLCAxMjgsIAotICAgIDc2LCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzYsIDcyLCA2NSwgMTk5LCA3NiwgNzIsIDY1LCA2NSwgCi0gICAgMTI4LCA3NiwgNzIsIDEyOCwgNzYsIDY5LCA5MCwgNzIsIDEyOCwgNzYsIDY5LCA4OCwgMTI4LCA3NiwgNjksIDg2LCA2OSwgCi0gICAgMjA0LCA3NiwgNjksIDg1LCA3NywgMTI4LCA3NiwgNjksIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc2LCA2OSwgODUsIDY1LCAKLSAgICA2OSwgNzcsIDEyOCwgNzYsIDY5LCA4NCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNzYsIDY5LCA4NCwgODQsIDY5LCA4MiwgCi0gICAgMTI4LCA3NiwgNjksIDIxMiwgNzYsIDY5LCA4MywgODMsIDY5LCAyMTAsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIDcyLCAKLSAgICA2NSwgNzgsIDEyOCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDc2LCA2OSwgODAsIDEyOCwgNzYsIAotICAgIDY5LCA3OSwgODAsIDY1LCA4MiwgNjgsIDEyOCwgNzYsIDY5LCA3OSwgMTI4LCA3NiwgNjksIDc4LCA4NCwgNzMsIDY3LCA4NSwgCi0gICAgNzYsIDY1LCAyMTAsIDc2LCA2OSwgNzgsIDczLCA4MywgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA2OSwgNzgsIDY5LCAKLSAgICA4MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDIwMCwgNzYsIDY5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCA2OSwgNzgsIAotICAgIDcxLCAxOTMsIDc2LCA2OSwgNzcsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDc3LCA3OSwgNzMsIDEyOCwgNzYsIDY5LCA3NiwgCi0gICAgNjksIDg0LCAxMjgsIDc2LCA2OSwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgMjAzLCA3NiwgNjksIDczLCA3NywgNzcsIDY1LCAKLSAgICAxMjgsIDc2LCA2OSwgNzMsIDc3LCA3NywgMTkzLCA3NiwgNjksIDcxLCA4MywgMTI4LCA3NiwgNjksIDcxLCA3MywgNzksIAotICAgIDc4LCAxMjgsIDc2LCA2OSwgNzEsIDY5LCA4NCwgNzksIDIxMSwgNzYsIDY5LCA3MSwgMTI4LCA3NiwgNjksIDcwLCA4NCwgCi0gICAgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODQsIDc5LCA0NSwgODIsIDczLCA3MSwgNzIsIAotICAgIDIxMiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgODQsIDY5LCAyMDUsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDczLCA2OCwgCi0gICAgMTk3LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgwLCAKLSAgICA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIAotICAgIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCAKLSAgICA3OCwgMTk5LCA3NiwgNjksIDcwLCA4NCwgMTI4LCA3NiwgNjksIDY5LCA4MiwgNjUsIDY5LCA4NywgNjUsIDEyOCwgNzYsIAotICAgIDY5LCA2OSwgNzUsIDEyOCwgNzYsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc2LCA2OSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgCi0gICAgNzYsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgNzAsIDEyOCwgNzYsIDY5LCA2NSwgMTk4LCAKLSAgICA3NiwgNjksIDY1LCA2OCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNjUsIDY4LCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgCi0gICAgMTk2LCA3NiwgNjgsIDY1LCA3OCwgMTI4LCA3NiwgNjgsIDUwLCAxMjgsIDc2LCA2NywgMjAxLCA3NiwgNjcsIDE5NywgNzYsIAotICAgIDY1LCA5MCwgMjE3LCA3NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NiwgNjUsIDg4LCAxMjgsIDc2LCA2NSwgCi0gICAgODcsIDEyOCwgNzYsIDY1LCAyMTUsIDc2LCA2NSwgODUsIDc2LCA2NSwgMTI4LCA3NiwgNjUsIDg1LCA3NSwgNjUsIDIxOCwgCi0gICAgNzYsIDY1LCA4NCwgNzMsIDc4LCA2NSwgODQsIDE5NywgNzYsIDY1LCA4NCwgNzMsIDc1LCAxMjgsIDc2LCA2NSwgODQsIDY5LCAKLSAgICA4MiwgNjUsIDIwNCwgNzYsIDY1LCA4NCwgMTk3LCA3NiwgNjUsIDgzLCAyMTIsIDc2LCA2NSwgODIsIDg5LCA3OCwgNzEsIAotICAgIDY5LCA2NSwgMjA0LCA3NiwgNjUsIDgyLCA3MSwgNjksIDIxMCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAxMjgsIDc2LCA2NSwgCi0gICAgODIsIDcxLCAxOTcsIDc2LCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDEyOCwgCi0gICAgNzYsIDY1LCAyMDcsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc2LCA2NSwgNzgsIDcxLCA4NSwgNjUsIDcxLCAKLSAgICAxOTcsIDc2LCA2NSwgNzgsIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzcsIAotICAgIDY5LCA2OCwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgMTk2LCA3NiwgNjUsIDc3LCA2OSwgMTI4LCA3NiwgNjUsIDc3LCAxOTcsIAotICAgIDc2LCA2NSwgNzcsIDY4LCA2NSwgMTI4LCA3NiwgNjUsIDc3LCA2OCwgMTI4LCA3NiwgNjUsIDc3LCA2NiwgNjgsIDE5MywgCi0gICAgNzYsIDY1LCA3NywgNjUsIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc2LCAxMjgsIDc2LCA2NSwgMjA0LCA3NiwgNjUsIDc1LCAKLSAgICA3NSwgNzIsIDY1LCA3OCwgNzEsIDg5LCA2NSwgNzksIDEyOCwgNzYsIDY1LCA3NCwgNjUsIDc4LCA4OSwgNjUsIDc2LCA2NSwgCi0gICAgNzgsIDEyOCwgNzYsIDY1LCAyMDEsIDc2LCA2NSwgNzIsIDgzLCA3MiwgODUsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAKKyAgICA3OCwgNzgsIDY2LCA4MywgODAsIDEyOCwgNzgsIDc3LCAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIAorICAgIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgCisgICAgNzgsIDc2LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIAorICAgIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgCisgICAgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ5LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCAKKyAgICA0OCwgNTcsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIAorICAgIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgCisgICAgNzgsIDc2LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIAorICAgIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCA3NiwgMTI4LCA3OCwgNzUsIDc5LCA3NywgMTI4LCA3OCwgNzUsIAorICAgIDIwNywgNzgsIDc1LCA3MywgNzgsIDY4LCA3MywgMTI4LCA3OCwgNzUsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgCisgICAgNzQsIDg5LCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4NCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDc0LCAKKyAgICA4OSwgODIsIDEyOCwgNzgsIDc0LCA4OSwgODAsIDEyOCwgNzgsIDc0LCA4OSwgMTI4LCA3OCwgNzQsIDg1LCA4OCwgMTI4LCAKKyAgICA3OCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDc0LCA4NSwgODIsIDEyOCwgNzgsIDc0LCA4NSwgODEsIDY1LCAxMjgsIAorICAgIDc4LCA3NCwgODUsIDgwLCAxMjgsIDc4LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgMTI4LCA3OCwgCisgICAgNzQsIDg1LCA2OSwgODEsIDEyOCwgNzgsIDc0LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODUsIDEyOCwgNzgsIDc0LCAKKyAgICA3OSwgODgsIDEyOCwgNzgsIDc0LCA3OSwgODQsIDEyOCwgNzgsIDc0LCA3OSwgODAsIDEyOCwgNzgsIDc0LCA3OSwgNzksIAorICAgIDEyOCwgNzgsIDc0LCA3OSwgMTI4LCA3OCwgNzQsIDczLCA4OCwgMTI4LCA3OCwgNzQsIDczLCA4NCwgMTI4LCA3OCwgNzQsIAorICAgIDczLCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc4LCA3NCwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgNjksIDEyOCwgNzgsIDc0LCA3MywgNjksIDEyOCwgNzgsIDc0LCAKKyAgICA3MywgMTI4LCA3OCwgNzQsIDIwMSwgNzgsIDc0LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA4NCwgMTI4LCAKKyAgICA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgNjUsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIAorICAgIDc0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCAxOTcsIDc4LCA3NCwgCisgICAgNjksIDEyOCwgNzgsIDc0LCA2NSwgODEsIDEyOCwgNzgsIDc0LCA2NSwgODAsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAKKyAgICA3NiwgNzMsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjUsIDY1LCAxMjgsIDc4LCA3MywgODgsIAorICAgIDEyOCwgNzgsIDczLCA4NCwgODIsIDY5LCAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgCisgICAgNzEsIDg1LCAxMjgsIDc4LCA3MywgODAsIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCAKKyAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgCisgICAgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKKyAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIAorICAgIDY4LCA2NSwgMTc4LCA3OCwgNzMsIDc3LCAxMjgsIDc4LCA3MywgMjA1LCA3OCwgNzMsIDc1LCA3MiwgNjUsIDcyLCA3MywgCisgICAgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDEyOCwgNzgsIDczLCAKKyAgICA3MiwgODMsIDcyLCA4NiwgNjUsIDgzLCA2NSwgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA3NywgNzMsIDc4LCAxMjgsIAorICAgIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDY5LCA4MywgNzIsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc4LCA3MywgCisgICAgNzEsIDcyLCAyMTIsIDc4LCA3MywgNzEsIDcxLCA2NSwgNzIsIDczLCA4NCwgNjUsIDEyOCwgNzgsIDczLCA2OSwgODgsIAorICAgIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgCisgICAgNzgsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzgsIDczLCA2OSwgCisgICAgODUsIDc4LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCA2NSwgNzgsIAorICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgCisgICAgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIAorICAgIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCAKKyAgICA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgMjA2LCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCAxMjgsIDc4LCAKKyAgICA3MywgNjYsIDEyOCwgNzgsIDczLCA2NSwgMTI4LCA3OCwgNzMsIDUwLCAxMjgsIDc4LCA3MiwgODUsIDY5LCAxMjgsIDc4LCAKKyAgICA3MiwgNzQsIDY1LCAxMjgsIDc4LCA3MiwgMTI4LCA3OCwgNzEsIDg5LCA2OSwgMTI4LCA3OCwgNzEsIDg2LCA2OSwgMTI4LCAKKyAgICA3OCwgNzEsIDg1LCA4NSwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg0LCAxMjgsIAorICAgIDc4LCA3MSwgODUsIDc5LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCAKKyAgICAxMjgsIDc4LCA3MSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgNzksIDg1LCAxMjgsIDc4LCA3MSwgNzksIDIxMywgNzgsIDcxLCAKKyAgICA3OSwgODQsIDEyOCwgNzgsIDcxLCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3OSwgODAsIDEyOCwgNzgsIDcxLCA3OSwgNzgsIAorICAgIDEyOCwgNzgsIDcxLCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDcyLCAxMjgsIDc4LCA3MSwgNzksIDY5LCAyMDAsIAorICAgIDc4LCA3MSwgMjA3LCA3OCwgNzEsIDc1LCA4OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDg3LCA2NSwgNjksIDc4LCAKKyAgICAxMjgsIDc4LCA3MSwgNzUsIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIAorICAgIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA2OSwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCAKKyAgICAxOTcsIDc4LCA3MSwgNzUsIDczLCA3OCwgNjgsIDIwMSwgNzgsIDcxLCA3NSwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzEsIAorICAgIDc1LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODIsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgCisgICAgNjUsIDY5LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgxLCAKKyAgICAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgNjUsIDc3LCA3MywgMTI4LCA3OCwgNzEsIAorICAgIDc1LCA2NSwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MSwgCisgICAgNzMsIDY5LCAxMjgsIDc4LCA3MSwgNzIsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDc4LCAKKyAgICA3MSwgNzEsIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIAorICAgIDgxLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgMjA5LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgCisgICAgNzEsIDg1LCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2OSwgNjksIDg0LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDgzLCA3MiwgNjUsIDE5NywgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgCisgICAgMjA2LCA3OCwgNzEsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgCisgICAgNzgsIDcxLCA3MSwgNzMsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCAKKyAgICA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIAorICAgIDcxLCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgCisgICAgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCAKKyAgICA4MCwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgCisgICAgMTI4LCA3OCwgNzEsIDcxLCAxMjgsIDc4LCA3MSwgNjksIDg4LCAxMjgsIDc4LCA3MSwgNjksIDg1LCA4MiwgNjksIDg1LCAKKyAgICA4NCwgMTI4LCA3OCwgNzEsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDY5LCA2OSwgMTI4LCAKKyAgICA3OCwgNzEsIDY5LCA2NSwgNjgsIDY1LCA3NiwgMTI4LCA3OCwgNzEsIDY1LCA4OCwgMTI4LCA3OCwgNzEsIDY1LCA4NSwgCisgICAgMTI4LCA3OCwgNzEsIDY1LCA4NCwgMTI4LCA3OCwgNzEsIDY1LCAyMTEsIDc4LCA3MSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgCisgICAgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNjUsIDc4LCA3MSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDEyOCwgNzgsIDcxLCAKKyAgICA2NSwgNzMsIDEyOCwgNzgsIDcxLCA2NSwgNzIsIDEyOCwgNzgsIDcxLCA2NSwgNjUsIDczLCAxMjgsIDc4LCA3MSwgMTkzLCAKKyAgICA3OCwgNzAsIDEyOCwgNzgsIDY5LCA4OCwgMjEyLCA3OCwgNjksIDg4LCAxMjgsIDc4LCA2OSwgODcsIDgzLCA4MCwgNjUsIAorICAgIDgwLCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4NywgMTI4LCA3OCwgCisgICAgNjksIDg1LCA4NCwgODIsIDY1LCAyMDQsIDc4LCA2OSwgODUsIDg0LCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NCwgMTI4LCAKKyAgICA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgODQsIDY5LCAxOTYsIDc4LCA2OSwgODEsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIAorICAgIDc4LCA2OSwgODAsIDg0LCA4NSwgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODAsIDEyOCwgNzgsIDY5LCA3OSwgMTI4LCA3OCwgCisgICAgNjksIDIwNywgNzgsIDY5LCA3OCwgNjUsIDc4LCA3OSwgMTI4LCA3OCwgNjksIDc4LCAxMjgsIDc4LCA2OSwgNzYsIDEyOCwgCisgICAgNzgsIDY5LCA3MywgODQsIDcyLCA2OSwgMjEwLCA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjksIDcxLCAKKyAgICA2NSwgODQsIDY5LCAxOTYsIDc4LCA2OSwgNjcsIDc1LCA4NCwgNzMsIDY5LCAxMjgsIDc4LCA2OSwgNjYsIDY5LCA3OCwgODMsIAorICAgIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgNjgsIDg1LCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3OCwgCisgICAgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDEyOCwgNzgsIDY4LCA4NSwgODAsIDEyOCwgNzgsIDY4LCAKKyAgICA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCA2OCwgNzksIDg4LCAxMjgsIDc4LCA2OCwgNzksIDg0LCAxMjgsIDc4LCAKKyAgICA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIDc5LCAxMjgsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc4LCA2OCwgNzksIAorICAgIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgNzYsIDE5NywgNzgsIDY4LCA3MywgODgsIDEyOCwgNzgsIDY4LCA3MywgCisgICAgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgNzgsIDY4LCA3MywgODAsIDEyOCwgNzgsIDY4LCA3MywgNjksIDg4LCAKKyAgICAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCA2OCwgNzMsIDY4LCA2NSwgMTI4LCA3OCwgNjgsIDczLCA2NSwgODEsIAorICAgIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4NCwgCisgICAgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDgwLCAxMjgsIDc4LCAKKyAgICA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgNzgsIDY4LCA2NSwgODgsIDEyOCwgNzgsIDY4LCA2NSwgODQsIAorICAgIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCA2NSwgNzcsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDc4LCA3MSwgCisgICAgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjgsIDY1LCAxOTMsIDc4LCAKKyAgICA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAxMjgsIDc4LCA2NiwgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIAorICAgIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCA3OCwgNjYsIDg5LCAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIAorICAgIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgCisgICAgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIDc4LCA2NiwgNzksIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAKKyAgICAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgNzksIDEyOCwgNzgsIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCAKKyAgICA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIAorICAgIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCA3OCwgNjYsIDczLCAxMjgsIDc4LCA2NiwgNzIsIDEyOCwgNzgsIAorICAgIDY2LCA2NSwgODgsIDEyOCwgNzgsIDY2LCA2NSwgODQsIDEyOCwgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIDY2LCA2NSwgCisgICAgMTI4LCA3OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgODgsIDczLCAKKyAgICA2NSwgMjA2LCA3OCwgNjUsIDg4LCAxMjgsIDc4LCA2NSwgODUsIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCA4NSwgNjgsIAorICAgIDczLCAyMTgsIDc4LCA2NSwgODQsIDg1LCA4MiwgNjUsIDIwNCwgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgCisgICAgNzgsIDY1LCA4MywgNzUsIDY1LCA4MCwgMjAxLCA3OCwgNjUsIDgzLCA3MiwgNzMsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCAKKyAgICA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNzgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgODIsIDEyOCwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgCisgICAgNjUsIDc5LCAyMTEsIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc4LCA3MSwgNzcsIDc5LCAKKyAgICA3OCwgODQsIDcyLCA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgMTI4LCA3OCwgNjUsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIAorICAgIDc3LCA2OSwgMTI4LCA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgNzcsIDUwLCAxMjgsIDc4LCA2NSwgNzcsIDEyOCwgNzgsIAorICAgIDY1LCA3NSwgMTI4LCA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgNjUsIDczLCAyMDQsIDc4LCA2NSwgNzEsIDgyLCAyMDEsIAorICAgIDc4LCA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCA2NSwgMTI4LCA3OCwgNjUsIDcxLCAxOTMsIDc4LCA2NSwgCisgICAgNzEsIDEyOCwgNzgsIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgNzgsIDY1LCA2NiwgNzYsIDY1LCAxMjgsIDc4LCA2NSwgCisgICAgNjUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDc1LCA4MywgNzMsIDc1LCA4OSwgNjUsIAorICAgIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNjUsIDE5MywgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNjUsIAorICAgIDQ1LCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA0OSwgMTI4LCA3OCwgNDgsIDUyLCA0OCwgCisgICAgMTI4LCA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgNDgsIDUxLCA1NiwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgCisgICAgNzgsIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCA1MSwgNTQsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDc4LCAKKyAgICA0OCwgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MiwgMTI4LCA3OCwgNDgsIAorICAgIDUxLCA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDEyOCwgNzgsIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIDQ4LCA1MSwgCisgICAgNDksIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgNzgsIDQ4LCA1MCwgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgNTYsIDEyOCwgCisgICAgNzgsIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCA1MCwgNTQsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc4LCAKKyAgICA0OCwgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIDUyLCAxMjgsIDc4LCA0OCwgNTAsIDUxLCAxMjgsIDc4LCA0OCwgNTAsIAorICAgIDUwLCAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA0OCwgNDksIDU3LCAxMjgsIAorICAgIDc4LCA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDEyOCwgCisgICAgNzgsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDQ4LCAKKyAgICA0OSwgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDQ4LCA0OSwgNDksIAorICAgIDEyOCwgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgNDksIDEyOCwgCisgICAgNzgsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCA0NSwgNjUsIDgyLCAyMTcsIDc3LCA4OSwgODgsIDEyOCwgNzcsIDg5LCAKKyAgICA4NCwgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIDg0LCA2OSwgMTI4LCA3NywgODksIDgwLCAxMjgsIDc3LCA4OSwgNjUsIAorICAgIDEyOCwgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCA3NywgMjE3LCA3NywgODcsIDc5LCA3OSwgMTI4LCA3NywgODcsIDc5LCAKKyAgICAxMjgsIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCA4NywgNzMsIDEyOCwgNzcsIDg3LCA2OSwgNjksIDEyOCwgNzcsIDg3LCAKKyAgICA2OSwgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCA3NywgODcsIDY1LCAxMjgsIDc3LCA4NywgMTI4LCA3NywgMjE1LCA3NywgCisgICAgODYsIDgzLCAxMjgsIDc3LCA4NiwgNzksIDgwLCAxMjgsIDc3LCA4NiwgNzMsIDEyOCwgNzcsIDg2LCA2OSwgODUsIDY1LCAKKyAgICA2OSwgNzgsIDcxLCA2NSwgNzcsIDEyOCwgNzcsIDg2LCAxMjgsIDc3LCAyMTQsIDc3LCA4NSwgODgsIDEyOCwgNzcsIDg1LCAKKyAgICA4NSwgODMsIDczLCA3NSwgNjUsIDg0LCA3OSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgODUsIDgyLCA2OCwgNzIsIDY1LCA3NCwgCisgICAgMTkzLCA3NywgODUsIDg1LCAxMjgsIDc3LCA4NSwgODQsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDY3LCAxMjgsIDc3LCA4NSwgCisgICAgODMsIDczLCAxOTUsIDc3LCA4NSwgODMsIDcyLCA4MiwgNzksIDc5LCA3NywgMTI4LCA3NywgODUsIDgzLCA3MiwgNTEsIAorICAgIDEyOCwgNzcsIDg1LCA4MywgNzIsIDE3OSwgNzcsIDg1LCA4MywgNzIsIDEyOCwgNzcsIDg1LCA4MywgMjAwLCA3NywgODUsIAorICAgIDgyLCA4OCwgMTI4LCA3NywgODUsIDgyLCA3MSwgODUsIDUwLCAxMjgsIDc3LCA4NSwgODIsIDY5LCAxMjgsIDc3LCA4NSwgCisgICAgODIsIDY4LCA2NSwgMTI4LCA3NywgODUsIDgyLCA2OCwgMTkzLCA3NywgODUsIDgyLCAxMjgsIDc3LCA4NSwgODEsIDY4LCAKKyAgICA2NSwgNzcsIDEyOCwgNzcsIDg1LCA4MCwgMTI4LCA3NywgODUsIDc5LCA4OCwgMTI4LCA3NywgODUsIDc5LCA4NCwgMTI4LCAKKyAgICA3NywgODUsIDc5LCA4MCwgMTI4LCA3NywgODUsIDc5LCA3NywgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNzksIDEyOCwgNzcsIAorICAgIDg1LCA3OCwgODMsIDg1LCA2NiwgMTI4LCA3NywgODUsIDc4LCA2NSwgNzIsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgCisgICAgNjksIDg0LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCAyMTIsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCAKKyAgICA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgCisgICAgODQsIDczLCA3OSwgMjA2LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgMTk3LCA3NywgODUsIDc2LCA4NCwgNzMsIDc5LCAKKyAgICA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgODUsIDc2LCA4NCwgNzMsIDc3LCA2NSwgODAsIDEyOCwgNzcsIDg1LCA3NiwgODQsIAorICAgIDIwMSwgNzcsIDg1LCA3NSwgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgMTI4LCA3NywgODUsIDczLCA3OCwgMTI4LCA3NywgCisgICAgODUsIDcxLCA4MywgMTI4LCA3NywgODUsIDcxLCAxMjgsIDc3LCA4NSwgMTk5LCA3NywgODUsIDY5LCAxMjgsIDc3LCA4NSwgCisgICAgNjcsIDcyLCAxMjgsIDc3LCA4NSwgNjcsIDIwMCwgNzcsIDg1LCA2NywgNjUsIDY1LCA2OCwgMTI4LCA3NywgODUsIDY1LCAKKyAgICA3OCwgMTI4LCA3NywgODUsIDY1LCA2OSwgMTI4LCA3NywgODUsIDQ1LCA3MSwgNjUsIDY1LCA3MiwgNzYsIDY1LCAxOTMsIAorICAgIDc3LCAyMTMsIDc3LCA4MywgMTI4LCA3NywgODAsIDY1LCAxMjgsIDc3LCA3OSwgODksIDY1LCA3MywgMTI4LCA3NywgNzksIAorICAgIDg4LCAxMjgsIDc3LCA3OSwgODYsIDczLCAxOTcsIDc3LCA3OSwgODYsIDY5LCAxOTYsIDc3LCA3OSwgODUsIDg0LCA3MiwgCisgICAgMTI4LCA3NywgNzksIDg1LCA4NCwgMjAwLCA3NywgNzksIDg1LCA4MywgNjksIDEyOCwgNzcsIDc5LCA4NSwgODMsIDE5NywgCisgICAgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA4MywgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIAorICAgIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzcsIDc5LCA4NSwgNzgsIDIxMiwgNzcsIDc5LCA4NSwgCisgICAgNzgsIDY4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCAxOTYsIDc3LCA3OSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzcsIDc5LCAKKyAgICA4NCwgMTI4LCA3NywgNzksIDgyLCA4NCwgODUsIDg1LCA3NywgMTI4LCA3NywgNzksIDgyLCA4NCwgNjUsIDgyLCAxMjgsIAorICAgIDc3LCA3OSwgODIsIDgwLCA3MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNzcsIDc5LCA4MiwgNzgsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzcsIDc5LCA4MCwgMTI4LCA3NywgNzksIDc5LCA4MywgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIAorICAgIDc3LCA3OSwgNzksIDc4LCAxMjgsIDc3LCA3OSwgNzksIDIwNiwgNzcsIDc5LCA3OSwgNzcsIDgwLCA4NSwgODEsIDEyOCwgCisgICAgNzcsIDc5LCA3OSwgNzcsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDc5LCA3OSwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzMsIDY5LCAKKyAgICA2OSwgNzgsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDcyLCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAyMDAsIDc3LCA3OSwgNzgsIAorICAgIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA4MywgODQsIDY1LCA2NiwgNzYsIDE5NywgNzcsIDc5LCA3OCwgCisgICAgNzksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA3NywgNzksIDc4LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIDIxMSwgNzcsIAorICAgIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzcsIDc5LCA3OCwgNzksIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgCisgICAgNzcsIDc5LCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA3OSwgNzgsIDc1LCA2OSwgODksIDEyOCwgNzcsIDc5LCAKKyAgICA3OCwgNzUsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDczLCAxMjgsIDc3LCA3OSwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIAorICAgIDgxLCAxMjgsIDc3LCA3OSwgNzgsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCAyMDYsIDc3LCA3OSwgNzYsIAorICAgIDEyOCwgNzcsIDc5LCA3MiwgNjUsIDc3LCA3NywgNjUsIDE5NiwgNzcsIDc5LCA2OCwgODUsIDc2LCAyMDcsIDc3LCA3OSwgCisgICAgNjgsIDY5LCA4MywgODQsIDg5LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgODMsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAKKyAgICAxMjgsIDc3LCA3OSwgNjgsIDY5LCAxMjgsIDc3LCA3OSwgNjYsIDczLCA3NiwgMTk3LCA3NywgNzksIDY1LCAxMjgsIDc3LCAKKyAgICAyMDcsIDc3LCA3OCwgODksIDY1LCAyMDUsIDc3LCA3OCwgNjUsIDgzLCAxMjgsIDc3LCA3NywgODMsIDgwLCAxMjgsIDc3LCAKKyAgICA3NywgMTI4LCA3NywgMjA1LCA3NywgNzYsIDY1LCAxMjgsIDc3LCA3NiwgMTI4LCA3NywgNzUsIDgwLCA2NSwgODIsIDY1LCAKKyAgICAyMDksIDc3LCA3MywgODgsIDEyOCwgNzcsIDczLCA4NCwgMTI4LCA3NywgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCAKKyAgICA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3NywgNzMsIDgyLCA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIAorICAgIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgNzMsIDc4LCA4OSwgMTI4LCA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgCisgICAgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCAKKyAgICA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA2NSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNjgsIDczLCA4MywgNjcsIAorICAgIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3NywgNjksIDEyOCwgNzcsIDczLCA3NywgCisgICAgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMjExLCA3NywgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDc3LCAKKyAgICA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIDIwNCwgNzcsIDczLCA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgMTI4LCAKKyAgICA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3NywgNzMsIDc1LCA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIAorICAgIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAxMjgsIDc3LCA3MywgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIAorICAgIDg4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgCisgICAgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIAorICAgIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCAKKyAgICA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIAorICAgIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgCisgICAgODUsIDIwNSwgNzcsIDczLCA2OSwgODAsIDEyOCwgNzcsIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgCisgICAgNzMsIDY4LCA3NiwgNzMsIDc4LCAxOTcsIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCAKKyAgICA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgNzcsIDczLCAxOTYsIDc3LCA3MywgNjcsIDgyLCA3OSwgODMsIDY3LCA3OSwgODAsIAorICAgIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCAKKyAgICAyMDcsIDc3LCA3MywgNjcsIDIxMCwgNzcsIDcyLCA5MCwgMTI4LCA3NywgNzIsIDY1LCAxMjgsIDc3LCA3MiwgMTI4LCA3NywgCisgICAgNzEsIDg1LCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4NCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgODgsIDEyOCwgNzcsIDcxLCAKKyAgICA4NSwgODIsIDEyOCwgNzcsIDcxLCA4NSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc3LCA3MSwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgMTI4LCA3NywgNzEsIDg1LCAxMjgsIDc3LCA3MSwgNzksIDg4LCAxMjgsIAorICAgIDc3LCA3MSwgNzksIDg0LCAxMjgsIDc3LCA3MSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgNzksIDEyOCwgNzcsIDcxLCAyMDcsIAorICAgIDc3LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDczLCA2OSwgMTI4LCA3NywgNzEsIDY5LCA4OCwgMTI4LCA3NywgCisgICAgNzEsIDY5LCA4MCwgMTI4LCA3NywgNzEsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDg1LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCAKKyAgICA3OSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzAsIDg1LCA3NywgMTI4LCA3NywgNzEsIDY2LCA3OSwgMTI4LCA3NywgNzEsIAorICAgIDY2LCA3MywgMTI4LCA3NywgNzEsIDY2LCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA3OCwgMTI4LCA3NywgCisgICAgNzEsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgODEsIAorICAgIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgMTI4LCA3NywgNzEsIDY1LCA4OCwgMTI4LCA3NywgNzEsIDY1LCA4NCwgCisgICAgMTI4LCA3NywgNzEsIDY1LCA4MCwgMTI4LCA3NywgNzEsIDY1LCAxMjgsIDc3LCA3MSwgMTI4LCA3NywgNzAsIDc5LCA3OCwgCisgICAgMTI4LCA3NywgNzAsIDc5LCAyMDYsIDc3LCA3MCwgNzksIDEyOCwgNzcsIDcwLCA3MywgODksIDY1LCA4MSwgMTI4LCA3NywgCisgICAgNzAsIDczLCA2OSwgNjksIDEyOCwgNzcsIDcwLCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MCwgNjksIDg1LCA4MSwgMTI4LCAKKyAgICA3NywgNzAsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA3MCwgNjUsIDY1LCAxMjgsIDc3LCA2OSwgOTAsIDkwLCA3OSwgCisgICAgMTI4LCA3NywgNjksIDg4LCAxMjgsIDc3LCA2OSwgODUsIDIxMiwgNzcsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgCisgICAgNzgsIDc0LCA3OSwgNzcsIDc4LCA2OCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCA3OCwgMTI4LCA3NywgNjksIDg0LCAKKyAgICA4MiwgNzksIDEyOCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NSwgCisgICAgMTI4LCA3NywgNjksIDg0LCA4MiwgNjksIDg0LCA2OSwgMjExLCA3NywgNjksIDg0LCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAKKyAgICAxMjgsIDc3LCA2OSwgODQsIDY5LCA3NSwgMTI4LCA3NywgNjksIDg0LCA2OSwgNzEsIDEyOCwgNzcsIDY5LCA4NCwgNjUsIAorICAgIDc2LCAxMjgsIDc3LCA2OSwgODQsIDE5MywgNzcsIDY5LCA4MywgODMsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDc3LCA2OSwgCisgICAgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDE5NywgNzcsIDY5LCA4MywgNzksIAorICAgIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgNzcsIDY5LCA4MiwgNzksIDczLCA4NCwgCisgICAgNzMsIDE5NSwgNzcsIDY5LCA4MiwgNzUsIDcyLCA2NSwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIDE5MywgNzcsIDY5LCAKKyAgICA4MiwgNzMsIDY4LCA3MywgNjUsIDc4LCA4MywgMTI4LCA3NywgNjksIDgyLCA3MywgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIAorICAgIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgODksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgCisgICAgNjksIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc3LCA2OSwgNzgsIDEyOCwgNzcsIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCAKKyAgICA3NywgNjYsIDY5LCA4MiwgODMsIDcyLCA3MywgODAsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIAorICAgIDc3LCA2NiwgNjksIDIxMCwgNzcsIDY5LCA3NywgNDUsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgCisgICAgNzcsIDY5LCAyMDUsIDc3LCA2OSwgNzYsIDc5LCA2OCwgNzMsIDE5NSwgNzcsIDY5LCA3NiwgNzMsIDc1LCAxMjgsIDc3LCAKKyAgICA2OSwgNzMsIDkwLCA3MywgMTI4LCA3NywgNjksIDcxLCA2NSwgODQsIDc5LCA3OCwgMTI4LCA3NywgNjksIDcxLCA2NSwgODAsIAorICAgIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA3NiwgNzMsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgCisgICAgODUsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDc3LCAKKyAgICAxMjgsIDc3LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgODUsIDc3LCAxMjgsIDc3LCA2OSwgNjgsIAorICAgIDczLCA4NSwgMjA1LCA3NywgNjksIDY4LCA3MywgNjcsIDczLCA3OCwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY3LCA2NSwgCisgICAgMjA0LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIDY1LCAyMTIsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAKKyAgICAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDE5NywgNzcsIAorICAgIDY4LCA4NSwgMjA2LCA3NywgMTk2LCA3NywgNjcsIDcyLCAyMTMsIDc3LCA2NywgNzIsIDY1LCAyMDYsIDc3LCAxOTUsIDc3LCAKKyAgICA2NiwgODUsIDc5LCA4MSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgMTI4LCA3NywgNjYsIDg1LCA2OSwgMTI4LCA3NywgNjYsIAorICAgIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA3NywgCisgICAgNjYsIDc5LCAxMjgsIDc3LCA2NiwgNzMsIDg0LCAxMjgsIDc3LCA2NiwgNzMsIDIxMiwgNzcsIDY2LCA3MywgODIsIDczLCAKKyAgICA2OSwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NiwgNjksIAorICAgIDg1LCA4MiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDc3LCAxMjgsIDc3LCA2NiwgNjksIDgyLCA2NSwgNjksIDEyOCwgCisgICAgNzcsIDY2LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDc1LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjksIDY5LCAKKyAgICAxMjgsIDc3LCA2NiwgNjksIDEyOCwgNzcsIDY2LCA2NSwgODEsIDEyOCwgNzcsIDY2LCA2NSwgNzgsIDg5LCA3MywgMTI4LCAKKyAgICA3NywgNjYsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA2NSwgNzUsIDY5LCA4NCwgMTI4LCA3NywgNjYsIAorICAgIDY1LCA2NSwgMTI4LCA3NywgNjYsIDY1LCAxOTMsIDc3LCA2NiwgMTkzLCA3NywgNjYsIDUyLCAxMjgsIDc3LCA2NiwgNTEsIAorICAgIDEyOCwgNzcsIDY2LCA1MCwgMTI4LCA3NywgNjYsIDEyOCwgNzcsIDE5NCwgNzcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzcsIDY1LCA4OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDY1LCAxMjgsIDc3LCA2NSwgODgsIDEyOCwgNzcsIAorICAgIDY1LCA4NSwgMTI4LCA3NywgNjUsIDg0LCA4NCwgNzksIDY3LCA3NSwgMTI4LCA3NywgNjUsIDg0LCA4MiwgNzMsIDg4LCAKKyAgICAxMjgsIDc3LCA2NSwgODQsIDY5LCA4MiwgNzMsIDY1LCA3NiwgODMsIDEyOCwgNzcsIDY1LCA4NCwgMTI4LCA3NywgNjUsIAorICAgIDgzLCAyMTMsIDc3LCA2NSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDc3LCA2NSwgODMsIDgzLCA2NSwgNzEsIDY5LCAKKyAgICAxMjgsIDc3LCA2NSwgODMsIDc5LCA4MiwgMTkzLCA3NywgNjUsIDgzLCA3NSwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNzAsIAorICAgIDY1LCA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDUwLCAxMjgsIDc3LCA2NSwgODMsIDY3LCA4NSwgNzYsIDczLCA3OCwgCisgICAgMTk3LCA3NywgNjUsIDgyLCA4OSwgMTI4LCA3NywgNjUsIDgyLCA4NSwgNzUsIDg1LCAxMjgsIDc3LCA2NSwgODIsIDg0LCAKKyAgICA4OSwgODIsIDczLCAxOTMsIDc3LCA2NSwgODIsIDgyLCA4OSwgNzMsIDc4LCAxOTksIDc3LCA2NSwgODIsIDgyLCA3MywgNjUsIAorICAgIDcxLCAxOTcsIDc3LCA2NSwgODIsIDc1LCA2OSwgODIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MiwgMTI4LCA3NywgCisgICAgNjUsIDgyLCA3NSwgNDUsIDUxLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTAsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCAKKyAgICA0OSwgMTI4LCA3NywgNjUsIDgyLCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNzIsIDEyOCwgNzcsIDY1LCA4MiwgNjcsIAorICAgIDY1LCA4NCwgNzksIDQ1LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCAKKyAgICA4NCwgNzksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIAorICAgIDg0LCA2NSwgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIDg0LCAxOTMsIDc3LCA2NSwgODIsIDEyOCwgNzcsIDY1LCA4MSwgCisgICAgNjUsIDcwLCAxMjgsIDc3LCA2NSwgODEsIDEyOCwgNzcsIDY1LCA4MCwgNzYsIDE5NywgNzcsIDY1LCA4MCwgNzMsIDgxLCAKKyAgICAxMjgsIDc3LCA2NSwgMjA4LCA3NywgNjUsIDc5LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4OSwgNzksIDc4LCAxMjgsIDc3LCAKKyAgICA2NSwgNzgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgMjE4LCA3NywgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzcsIDY1LCA3OCwgNzEsIDY1LCA3NiwgNjUsIDc3LCAxMjgsIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDc2LCA3MywgCisgICAgNzgsIDE5OSwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgMTk1LCA3NywgNjUsIDc4LCA2NywgNzIsIDIxMywgNzcsIDY1LCAKKyAgICA3OCwgNjUsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDc3LCA2NSwgNzYsIDg0LCA2OSwgODMsIDE5NywgNzcsIDY1LCA3NiwgNjksIAorICAgIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzcsIDY1LCA3NiwgMTk3LCA3NywgNjUsIDc2LCA2NSwgCisgICAgNzUsIDc5LCAyMDYsIDc3LCA2NSwgNzUsIDgzLCA4NSwgODIsIDY1LCAxMjgsIDc3LCA2NSwgNzUsIDgzLCA4NSwgODIsIAorICAgIDE5MywgNzcsIDY1LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA2NSwgNzMsIDg5LCA2NSwgNzcsIDc5LCA3NSwgMTI4LCA3NywgCisgICAgNjUsIDczLCA4NCwgNjUsIDczLCA3NSwgNzIsIDg1LCAxMjgsIDc3LCA2NSwgNzMsIDgyLCA4NSwgMTI4LCA3NywgNjUsIDczLCAKKyAgICA3NywgODUsIDY1LCA3OCwgMTI4LCA3NywgNjUsIDczLCA3NywgNjUsIDc2LCA2NSwgNzMsIDEyOCwgNzcsIDY1LCA3MywgNzYsIAorICAgIDY2LCA3OSwgMjE2LCA3NywgNjUsIDczLCA3NSwgODUsIDgyLCA3OSwgMTI4LCA3NywgNjUsIDczLCA2OCwgNjksIDc4LCAKKyAgICAxMjgsIDc3LCA2NSwgNzMsIDEyOCwgNzcsIDY1LCA3MiwgNzQsIDc5LCA3OCwgMTk5LCA3NywgNjUsIDcyLCA3MiwgNjUsIAorICAgIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDgwLCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDcyLCA2NSwgODAsIDY1LCA3NSwgCisgICAgNzIsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDY1LCA4MCwgODIsIDY1LCA2NSwgNzgsIDE5MywgNzcsIDY1LCA3MiwgMTI4LCAKKyAgICA3NywgNjUsIDcxLCA3OCwgNzMsIDcwLCA4OSwgNzMsIDc4LCAxOTksIDc3LCA2NSwgNjksIDgzLCA3MywgMTI4LCA3NywgNjUsIAorICAgIDY5LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NSwgNjksIDc4LCA3NCwgNjksIDg0LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA4NiwgCisgICAgNjksIDg1LCA4OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgNzUsIDgwLCA2OSwgNzgsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDcxLCAKKyAgICA2NiwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NywgNjYsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNjUsIAorICAgIDY5LCA3NywgNjYsIDY1LCAxMjgsIDc3LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NSwgNjksIDc2LCA2OSwgNjksIDEyOCwgCisgICAgNzcsIDY1LCA2OSwgNzUsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDY1LCA2OCwgODksIDY1LCAxMjgsIDc3LCA2NSwgNjgsIDg1LCAKKyAgICAxMjgsIDc3LCA2NSwgNjgsIDY4LCA2NSwgMjAwLCA3NywgNjUsIDY4LCA2OCwgNjUsIDEyOCwgNzcsIDY1LCA2OCwgNjgsIAorICAgIDE5MywgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgCisgICAgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgODYsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA2NSwgNjcsIAorICAgIDg1LCA4NCwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDIwNiwgCisgICAgNzcsIDY1LCA2NywgNzIsIDczLCA3OCwgNjksIDEyOCwgNzcsIDY1LCA2NSwgODksIDg5LCA2NSwgNjUsIDEyOCwgNzcsIDY1LCAKKyAgICA2NSwgNzMsIDEyOCwgNzcsIDY1LCA2NSwgMTI4LCA3NywgNjUsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDUyLCAxMjgsIDc3LCAKKyAgICA0OCwgNTIsIDUxLCAxMjgsIDc3LCA0OCwgNTIsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDQ5LCAxMjgsIDc3LCA0OCwgNTIsIAorICAgIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDUyLCA0OCwgMTI4LCA3NywgNDgsIDUxLCA1NywgMTI4LCA3NywgNDgsIDUxLCA1NiwgCisgICAgMTI4LCA3NywgNDgsIDUxLCA1NSwgMTI4LCA3NywgNDgsIDUxLCA1NCwgMTI4LCA3NywgNDgsIDUxLCA1MywgMTI4LCA3NywgCisgICAgNDgsIDUxLCA1MiwgMTI4LCA3NywgNDgsIDUxLCA1MSwgNjYsIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc3LCAKKyAgICA0OCwgNTEsIDUxLCAxMjgsIDc3LCA0OCwgNTEsIDUwLCAxMjgsIDc3LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA3NywgNDgsIAorICAgIDUxLCA0OSwgMTI4LCA3NywgNDgsIDUxLCA0OCwgMTI4LCA3NywgNDgsIDUwLCA1NywgMTI4LCA3NywgNDgsIDUwLCA1NiwgCisgICAgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTYsIDEyOCwgNzcsIDQ4LCA1MCwgNTUsIDEyOCwgNzcsIDQ4LCA1MCwgNTQsIDEyOCwgCisgICAgNzcsIDQ4LCA1MCwgNTMsIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDUyLCAxMjgsIDc3LCAKKyAgICA0OCwgNTAsIDUxLCAxMjgsIDc3LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3NywgNDgsIDUwLCA1MCwgMTI4LCA3NywgNDgsIAorICAgIDUwLCA0OSwgMTI4LCA3NywgNDgsIDUwLCA0OCwgMTI4LCA3NywgNDgsIDQ5LCA1NywgMTI4LCA3NywgNDgsIDQ5LCA1NiwgCisgICAgMTI4LCA3NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTUsIDEyOCwgNzcsIDQ4LCA0OSwgNTQsIDY1LCAKKyAgICAxMjgsIDc3LCA0OCwgNDksIDU0LCAxMjgsIDc3LCA0OCwgNDksIDUzLCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA3NywgNDgsIDQ5LCA1MiwgMTI4LCA3NywgNDgsIDQ5LCA1MSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNzIsIDEyOCwgNzcsIAorICAgIDQ4LCA0OSwgNTAsIDcxLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MCwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjksIDEyOCwgCisgICAgNzcsIDQ4LCA0OSwgNTAsIDY4LCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NywgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjYsIAorICAgIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDUwLCAxMjgsIDc3LCA0OCwgNDksIDQ5LCAxMjgsIAorICAgIDc3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA0OCwgMTI4LCA3NywgNDgsIDQ4LCA1NywgMTI4LCA3NywgCisgICAgNDgsIDQ4LCA1NiwgMTI4LCA3NywgNDgsIDQ4LCA1NSwgMTI4LCA3NywgNDgsIDQ4LCA1NCwgMTI4LCA3NywgNDgsIDQ4LCAKKyAgICA1MywgMTI4LCA3NywgNDgsIDQ4LCA1MiwgMTI4LCA3NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgNzcsIDQ4LCA0OCwgNTEsIAorICAgIDEyOCwgNzcsIDQ4LCA0OCwgNTAsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDc3LCA0OCwgNDgsIDQ5LCA2NSwgCisgICAgMTI4LCA3NywgNDgsIDQ4LCA0OSwgMTI4LCA3NiwgMjE4LCA3NiwgODksIDg5LCAxMjgsIDc2LCA4OSwgODgsIDEyOCwgNzYsIAorICAgIDg5LCA4NCwgMTI4LCA3NiwgODksIDgyLCA4OCwgMTI4LCA3NiwgODksIDgyLCAxMjgsIDc2LCA4OSwgODAsIDEyOCwgNzYsIAorICAgIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCA4OSwgNjcsIDczLCA2NSwgMjA2LCA3NiwgODgsIDEyOCwgNzYsIDg3LCA3OSwgCisgICAgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCA3NiwgODcsIDczLCA3MywgMTI4LCA3NiwgODcsIDczLCAxMjgsIDc2LCA4NywgCisgICAgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCA3NiwgODUsIDg4LCAxMjgsIDc2LCA4NSwgCisgICAgODUsIDEyOCwgNzYsIDg1LCA4NCwgMTI4LCA3NiwgODUsIDgyLCA4OCwgMTI4LCA3NiwgODUsIDgwLCAxMjgsIDc2LCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDc2LCA4NSwgNzksIDg0LCAxMjgsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDc2LCA4NSwgNzksIDEyOCwgCisgICAgNzYsIDg1LCA3OCwgNzEsIDgzLCA3MywgMTI4LCA3NiwgODUsIDc4LCA2NSwgODQsIDE5NywgNzYsIDg1LCAyMDUsIDc2LCAKKyAgICA4NSwgNzYsIDEyOCwgNzYsIDg1LCA3MywgODMsIDEyOCwgNzYsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDc2LCA4NSwgNzIsIAorICAgIDEyOCwgNzYsIDg1LCA3MSwgNzEsIDY1LCA3MSwgNjksIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDc2LCAxMjgsIDc2LCA4NSwgCisgICAgNzEsIDY1LCAyMDQsIDc2LCA4NSwgNjksIDEyOCwgNzYsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc2LCA4NSwgNTEsIDEyOCwgCisgICAgNzYsIDg1LCA1MCwgMTI4LCA3NiwgODUsIDE3OCwgNzYsIDgyLCA3OSwgMTI4LCA3NiwgODIsIDc3LCAxMjgsIDc2LCA4MiwgCisgICAgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgMTk3LCAKKyAgICA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgNjksIDE5NiwgNzYsIDc5LCA4NywgNjksIDIxMCwgNzYsIAorICAgIDc5LCA4NywgNDUsIDE4NSwgNzYsIDc5LCA4NiwgMTk3LCA3NiwgNzksIDg1LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA4NSwgCisgICAgNjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDc2LCA3OSwgODUsIDY4LCA3NiwgMjE3LCA3NiwgNzksIDg0LCAKKyAgICA4NSwgODMsIDEyOCwgNzYsIDc5LCA4NCwgMTI4LCA3NiwgNzksIDgyLCA4MiwgODksIDEyOCwgNzYsIDc5LCA4MiwgODIsIAorICAgIDY1LCA3MywgNzgsIDY5LCAxMjgsIDc2LCA3OSwgODEsIDEyOCwgNzYsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCA4NCwgCisgICAgMTI4LCA3NiwgNzksIDc5LCA4MCwgNjksIDE5NiwgNzYsIDc5LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgMjA4LCA3NiwgCisgICAgNzksIDc5LCA3OCwgMTI4LCA3NiwgNzksIDc5LCAyMDMsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc5LCA3OCwgODMsIDg1LCAKKyAgICA3NywgMTI4LCA3NiwgNzksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDE5MywgNzYsIDc5LCA3OCwgNzEsIAorICAgIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODksIDgyLCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCAKKyAgICA2NSwgNzgsIDY3LCA3MiwgNDUsIDgzLCA3OSwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgCisgICAgNzIsIDQ1LCA3OSwgODMsIDIxMSwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzcsIAorICAgIDY1LCA2OCwgMjEwLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3MiwgNjUsIDcxLCAKKyAgICA2NSwgNzYsIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNjUsIDIxMCwgNzYsIAorICAgIDc5LCA3NywgNzcsIDY1LCA2OSwgMTI4LCA3NiwgNzksIDc3LCAxMjgsIDc2LCA3OSwgMjA1LCA3NiwgNzksIDc2LCA3NiwgCisgICAgNzMsIDgwLCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3NiwgNzYsIDEyOCwgNzYsIDc5LCA3MSwgMjEwLCA3NiwgNzksIDcxLCAKKyAgICA3OSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNzksIDcxLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NiwgNzksIDcxLCAxMjgsIAorICAgIDc2LCA3OSwgNjgsIDY5LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgNzYsIDc5LCA2NywgNzksIDc3LCA3OSwgODQsIDczLCAKKyAgICA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgNzUsIDczLCA3OCwgNzEsIDQ1LCA4MywgNzIsIDczLCA3MCwgMjEyLCA3NiwgNzksIAorICAgIDY3LCAyMDMsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA3NiwgNzksIDY1LCAxMjgsIDc2LCA3OCwgMTI4LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc5LCA3OSwgCisgICAgMTI4LCA3NiwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3NiwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNzksIDc5LCAKKyAgICAxMjgsIDc2LCA3NiwgNzYsIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDczLCA3MywgMTI4LCA3NiwgNzYsIDc2LCA3MywgMTI4LCAKKyAgICA3NiwgNzYsIDc2LCA2OSwgNjksIDEyOCwgNzYsIDc2LCA3NiwgNjksIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDg1LCAxMjgsIAorICAgIDc2LCA3NiwgNzYsIDY1LCA3MywgMTI4LCA3NiwgNzYsIDc2LCA2NSwgNjUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDEyOCwgCisgICAgNzYsIDc2LCA3NiwgMTI4LCA3NiwgNzQsIDg1LCA2OCwgNzMsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDY5LCAxMjgsIDc2LCAKKyAgICA3NCwgMTI4LCA3NiwgNzMsIDg4LCAxMjgsIDc2LCA3MywgODcsIDc4LCAxMjgsIDc2LCA3MywgODYsIDgyLCAxOTcsIDc2LCAKKyAgICA3MywgODQsIDg0LCA3NiwgMTk3LCA3NiwgNzMsIDg0LCA4NCwgNjksIDIxMCwgNzYsIDczLCA4NCwgODIsIDE5MywgNzYsIAorICAgIDczLCA4NCwgMTI4LCA3NiwgNzMsIDgzLCAyMTMsIDc2LCA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIAorICAgIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCA4MCwgODMsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgNzgsIDc1LCA3MywgCisgICAgNzgsIDE5OSwgNzYsIDczLCA3OCwgMjAzLCA3NiwgNzMsIDc4LCA3MSwgODMsIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCAKKyAgICA4MywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgMjExLCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU3LCAxMjgsIDc2LCA3MywgNzgsIAorICAgIDY5LCA0NSwgNTUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1MSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDQ5LCAKKyAgICAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MCwgMTI4LCA3NiwgNzMsIAorICAgIDc3LCA3NywgODUsIDEyOCwgNzYsIDczLCA3NywgNzcsIDIxMywgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgMTk2LCA3NiwgCisgICAgNzMsIDc3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgNzMsIDc3LCA3MywgODQsIDEyOCwgNzYsIDczLCAKKyAgICA3NywgNjksIDEyOCwgNzYsIDczLCA3NywgNjYsIDIxMywgNzYsIDczLCA3NiwgODksIDEyOCwgNzYsIDczLCA3NiwgNzMsIAorICAgIDg0LCA3MiwgMTI4LCA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgNzYsIDczLCA3MSwgNzIsIDg0LCA3MiwgNzksIDg1LCA4MywgNjksIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc2LCAKKyAgICA3MywgNzAsIDY5LCAxMjgsIDc2LCA3MywgNjksIDg4LCAxMjgsIDc2LCA3MywgNjksIDg0LCAxMjgsIDc2LCA3MywgNjksIAorICAgIDgwLCAxMjgsIDc2LCA3MywgNjksIDY5LCAxMjgsIDc2LCA3MywgNjksIDEyOCwgNzYsIDczLCA2OCwgMTI4LCA3NiwgNzMsIAorICAgIDY2LCA4MiwgNjUsIDEyOCwgNzYsIDczLCA2NiwgNjksIDgyLCA4NCwgODksIDEyOCwgNzYsIDczLCA2NSwgNjYsIDczLCA3NiwgCisgICAgNzMsIDg0LCAyMTcsIDc2LCA3MiwgNzMsIDczLCAxMjgsIDc2LCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIAorICAgIDEyOCwgNzYsIDcyLCA2NSwgMTk5LCA3NiwgNzIsIDY1LCA2NSwgMTI4LCA3NiwgNzIsIDEyOCwgNzYsIDY5LCA5MCwgNzIsIAorICAgIDEyOCwgNzYsIDY5LCA4OCwgMTI4LCA3NiwgNjksIDg2LCA2OSwgMjA0LCA3NiwgNjksIDg1LCA3NywgMTI4LCA3NiwgNjksIAorICAgIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgMTI4LCA3NiwgCisgICAgNjksIDIxMywgNzYsIDY5LCA4NCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNzYsIDY5LCA4NCwgODQsIDY5LCA4MiwgMTI4LCAKKyAgICA3NiwgNjksIDIxMiwgNzYsIDY5LCA4MywgODMsIDY5LCAyMTAsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIDcyLCA2NSwgNzgsIAorICAgIDEyOCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDc2LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA3OSwgCisgICAgODAsIDY1LCA4MiwgNjgsIDEyOCwgNzYsIDY5LCA3OSwgMTI4LCA3NiwgNjksIDc4LCA4NCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAKKyAgICAyMTAsIDc2LCA2OSwgNzgsIDczLCA4MywgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA2OSwgNzgsIDY5LCA4MiwgCisgICAgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDIwMCwgNzYsIDY5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKKyAgICAxOTMsIDc2LCA2OSwgNzcsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDc3LCA3OSwgNzMsIDEyOCwgNzYsIDY5LCA3NiwgNjksIAorICAgIDg0LCAxMjgsIDc2LCA2OSwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgMjAzLCA3NiwgNjksIDczLCA3NywgNzcsIDY1LCAxMjgsIAorICAgIDc2LCA2OSwgNzMsIDc3LCA3NywgMTkzLCA3NiwgNjksIDcxLCA4MywgMTI4LCA3NiwgNjksIDcxLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDc2LCA2OSwgNzEsIDY5LCA4NCwgNzksIDIxMSwgNzYsIDY5LCA3MSwgMTI4LCA3NiwgNjksIDcwLCA4NCwgODcsIAorICAgIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODQsIDc5LCA0NSwgODIsIDczLCA3MSwgNzIsIDIxMiwgCisgICAgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgODQsIDY5LCAyMDUsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCAKKyAgICA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgwLCA3OSwgCisgICAgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDc2LCAKKyAgICA2OSwgNzAsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgCisgICAgMTk5LCA3NiwgNjksIDcwLCA4NCwgMTI4LCA3NiwgNjksIDY5LCA4MiwgNjUsIDY5LCA4NywgNjUsIDEyOCwgNzYsIDY5LCAKKyAgICA2OSwgNzUsIDEyOCwgNzYsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc2LCA2OSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNzYsIAorICAgIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgNzAsIDEyOCwgNzYsIDY5LCA2NSwgMTk4LCA3NiwgCisgICAgNjksIDY1LCA2OCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNjUsIDY4LCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgMTk2LCAKKyAgICA3NiwgNjgsIDY1LCA3OCwgMTI4LCA3NiwgNjgsIDUwLCAxMjgsIDc2LCA2NywgMjAxLCA3NiwgNjcsIDE5NywgNzYsIDY1LCAKKyAgICA5MCwgMjE3LCA3NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NiwgNjUsIDg4LCAxMjgsIDc2LCA2NSwgODcsIAorICAgIDEyOCwgNzYsIDY1LCAyMTUsIDc2LCA2NSwgODUsIDc2LCA2NSwgMTI4LCA3NiwgNjUsIDg1LCA3NSwgNjUsIDIxOCwgNzYsIAorICAgIDY1LCA4NCwgNzMsIDc4LCA2NSwgODQsIDE5NywgNzYsIDY1LCA4NCwgNzMsIDc1LCAxMjgsIDc2LCA2NSwgODQsIDY5LCA4MiwgCisgICAgNjUsIDIwNCwgNzYsIDY1LCA4NCwgMTk3LCA3NiwgNjUsIDgzLCAyMTIsIDc2LCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCAKKyAgICA2NSwgMjA0LCA3NiwgNjUsIDgyLCA3MSwgNjksIDIxMCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAxMjgsIDc2LCA2NSwgODIsIAorICAgIDcxLCAxOTcsIDc2LCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDEyOCwgNzYsIAorICAgIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIDg1LCA2NSwgNzEsIDE5NywgNzYsIDY1LCA3OCwgCisgICAgNjksIDgzLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCAxMjgsIDc2LCAKKyAgICA2NSwgNzcsIDY5LCAxOTYsIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgNzYsIDY1LCA3NywgNjgsIAorICAgIDY1LCAxMjgsIDc2LCA2NSwgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCA3NiwgNjUsIDc3LCA2NSwgCisgICAgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIDc1LCA3MiwgNjUsIDc4LCAKKyAgICA3MSwgODksIDY1LCA3OSwgMTI4LCA3NiwgNjUsIDc0LCA2NSwgNzgsIDg5LCA2NSwgNzYsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIAorICAgIDIwMSwgNzYsIDY1LCA3MiwgODMsIDcyLCA4NSwgMTI4LCA3NiwgNjUsIDcyLCAxMjgsIDc2LCA2NSwgNzEsIDg1LCA4MywgCiAgICAgMTI4LCA3NiwgNjUsIDcxLCAyMTMsIDc2LCA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgMjEwLCA3NiwgCiAgICAgNjUsIDcxLCA2NSwgNjYsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDE5NCwgNzYsIDY1LCA2OSwgODYsIDEyOCwgNzYsIDY1LCAKICAgICA2OSwgMTI4LCA3NiwgNjUsIDY4LCAyMTcsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDc2LCA2NSwgNjcsIDY1LCAxMjgsIDc2LCAKICAgICA2NSwgNjYsIDc5LCA4NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDgyLCAxMjgsIDc2LCA2NSwgNjYsIAotICAgIDczLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc2LCA2NSwgCi0gICAgNjUsIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDg1LCAxMjgsIDc2LCAKLSAgICA2NSwgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIDc2LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3NiwgNDgsIAotICAgIDQ4LCA1MCwgNjUsIDEyOCwgNzYsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDc2LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAKLSAgICAxOTYsIDc1LCA4OSwgODUsIDgyLCA3MywgNzMsIDEyOCwgNzUsIDg5LCA4NSwgMTI4LCA3NSwgODksIDc5LCAxMjgsIDc1LCAKLSAgICA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4OSwgNzMsIDEyOCwgNzUsIDg5LCA2OSwgMTI4LCA3NSwgODksIAotICAgIDY1LCA4NCwgNzIsIDc5LCAyMTEsIDc1LCA4OSwgNjUsIDY1LCAxMjgsIDc1LCA4OSwgNjUsIDEyOCwgNzUsIDg4LCA4NywgCi0gICAgNzMsIDEyOCwgNzUsIDg4LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgMTI4LCA3NSwgODgsIDg1LCAxMjgsIDc1LCA4OCwgNzksIDEyOCwgNzUsIDg4LCAKLSAgICA3MywgMTI4LCA3NSwgODgsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDY5LCAxMjgsIDc1LCA4OCwgNjUsIDY1LCAxMjgsIDc1LCAKLSAgICA4OCwgNjUsIDEyOCwgNzUsIDg3LCA4NSwgNTEsIDQ5LCA1NiwgMTI4LCA3NSwgODcsIDc5LCA3OSwgMTI4LCA3NSwgODcsIAotICAgIDc5LCAxMjgsIDc1LCA4NywgNzMsIDczLCAxMjgsIDc1LCA4NywgNzMsIDEyOCwgNzUsIDg3LCA2OSwgNjksIDEyOCwgNzUsIAotICAgIDg3LCA2OSwgMTI4LCA3NSwgODcsIDY1LCA4OSwgMTI4LCA3NSwgODcsIDY1LCA2OSwgODQsIDEyOCwgNzUsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgNzUsIDg2LCA2NSwgMTI4LCA3NSwgODYsIDEyOCwgNzUsIDg1LCA4OCwgMTI4LCA3NSwgODUsIDg1LCA3MiwgCi0gICAgMTI4LCA3NSwgODUsIDg0LCAxMjgsIDc1LCA4NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgODUsIDgzLCA3MiwgODUsIDUwLCAKLSAgICAxMjgsIDc1LCA4NSwgODIsIDg4LCAxMjgsIDc1LCA4NSwgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgNzksIDEyOCwgNzUsIAotICAgIDg1LCA4MiwgODQsIDEyOCwgNzUsIDg1LCA4MiwgNzksIDc5LCA3OCwgNjksIDEyOCwgNzUsIDg1LCA4MiwgMTI4LCA3NSwgCi0gICAgODUsIDIxMCwgNzUsIDg1LCA4MSwgMTI4LCA3NSwgODUsIDc5LCA4OCwgMTI4LCA3NSwgODUsIDc5LCA4MCwgMTI4LCA3NSwgCi0gICAgODUsIDc5LCAyMDgsIDc1LCA4NSwgNzksIDc3LCAxMjgsIDc1LCA4NSwgNzksIDEyOCwgNzUsIDg1LCA3OCwgNzEsIDEyOCwgCi0gICAgNzUsIDg1LCA3OCwgNjgsIDY4LCA2NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzUsIDg1LCA3NiwgMTI4LCA3NSwgODUsIAotICAgIDIwNCwgNzUsIDg1LCA2OSwgODQsIDEyOCwgNzUsIDg1LCA1NSwgMTI4LCA3NSwgODUsIDUyLCAxMjgsIDc1LCA4NSwgMTgwLCAKLSAgICA3NSwgODUsIDUxLCAxMjgsIDc1LCA4NSwgMTc5LCA3NSwgODQsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDEyOCwgNzUsIDgzLCAKLSAgICA3MywgMTI4LCA3NSwgODIsIDY5LCA3NywgNjUsIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIAotICAgIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDc5LCA3OCwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgNzUsIDc5LCAKLSAgICA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIAotICAgIDgyLCA2NSwgODQsIDczLCA3NywgMTkzLCA3NSwgODAsIDg1LCAxMjgsIDc1LCA4MCwgNzksIDgxLCAxMjgsIDc1LCA4MCwgCi0gICAgNzksIDc5LCAxMjgsIDc1LCA4MCwgNzksIDEyOCwgNzUsIDgwLCA3MywgMTI4LCA3NSwgODAsIDY5LCA4NSwgODgsIDEyOCwgCi0gICAgNzUsIDgwLCA2OSwgNjksIDEyOCwgNzUsIDgwLCA2OSwgMTI4LCA3NSwgODAsIDY1LCA4MiwgNjUsIDgxLCAxMjgsIDc1LCAKLSAgICA4MCwgNjUsIDc4LCAxMjgsIDc1LCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4OCwgMTI4LCA3NSwgNzksIDg2LCA4NSwgODUsIAotICAgIDEyOCwgNzUsIDc5LCA4NCwgNzksIDEyOCwgNzUsIDc5LCA4MiwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNzksIDgyLCA3OSwgCi0gICAgNzgsIDczLCA4MywgMTI4LCA3NSwgNzksIDgyLCA2OSwgNjUsIDIwNiwgNzUsIDc5LCA4MiwgNjUsIDc4LCA3MywgMTk1LCAKLSAgICA3NSwgNzksIDgxLCA3OCwgNjgsIDc5LCA3OCwgMTI4LCA3NSwgNzksIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4MCwgCi0gICAgMTI4LCA3NSwgNzksIDc5LCA4MCwgNzksIDEyOCwgNzUsIDc5LCA3OSwgNzcsIDg1LCA4NSwgODQsIDEyOCwgNzUsIDc5LCAKLSAgICA3OSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgNjUsIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIAotICAgIDE5MywgNzUsIDc5LCA3NywgMjAxLCA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCA2NSwgMTI4LCA3NSwgNzksIDc3LCA2NiwgCi0gICAgODUsIDg2LCAxOTMsIDc1LCA3OSwgNzcsIDY2LCAyMTMsIDc1LCA3OSwgNzUsIDc5LCAxMjgsIDc1LCA3OSwgNzUsIDEyOCwgCi0gICAgNzUsIDc5LCAyMDMsIDc1LCA3OSwgNzMsIDEyOCwgNzUsIDc5LCAyMDEsIDc1LCA3OSwgNzIsIDEyOCwgNzUsIDc5LCA3MSwgCi0gICAgNzIsIDc5LCA3NywgMTI4LCA3NSwgNzksIDY5LCA4NCwgMTI4LCA3NSwgNzksIDY1LCA3NiwgNjUsIDEyOCwgNzUsIDc5LCAKLSAgICA2NSwgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3NSwgNzgsIAotICAgIDczLCA3MCwgNjksIDEyOCwgNzUsIDc4LCA3MywgNzAsIDE5NywgNzUsIDc3LCAxMjgsIDc1LCAyMDUsIDc1LCA3NiwgNzMsIAotICAgIDg0LCA3OSwgNzgsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDE5MywgCi0gICAgNzUsIDc2LCA2NSwgMTI4LCA3NSwgNzYsIDEyOCwgNzUsIDc1LCA4NSwgMTI4LCA3NSwgNzUsIDc5LCAxMjgsIDc1LCA3NSwgCi0gICAgNzMsIDEyOCwgNzUsIDc1LCA2OSwgNjksIDEyOCwgNzUsIDc1LCA2OSwgMTI4LCA3NSwgNzUsIDY1LCAxMjgsIDc1LCA3NSwgCi0gICAgMTI4LCA3NSwgNzQsIDY5LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAKLSAgICAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3OCwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIAotICAgIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NSwgCi0gICAgNzMsIDg5LCA2OSwgNzksIDIwMywgNzUsIDczLCA4OCwgMTI4LCA3NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODMsIDgzLCAKLSAgICA3MywgNzgsIDE5OSwgNzUsIDczLCA4MywgODMsIDEyOCwgNzUsIDczLCA4MywgMjExLCA3NSwgNzMsIDgzLCA3MywgNzcsIAotICAgIDUzLCAxMjgsIDc1LCA3MywgODMsIDczLCA3NywgMTgxLCA3NSwgNzMsIDgzLCA3MiwgMTI4LCA3NSwgNzMsIDgzLCA2NSwgCi0gICAgNzYsIDEyOCwgNzUsIDczLCA4MiwgNzksIDg3LCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzcsIDY5LCAKLSAgICA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzUsIDczLCA4MiwgNzksIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDEyOCwgNzUsIAotICAgIDczLCA4MiwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzEsIDcyLCA3MywgMjE4LCA3NSwgNzMsIDgxLCAxMjgsIDc1LCA3MywgCi0gICAgODAsIDEyOCwgNzUsIDczLCAyMDgsIDc1LCA3MywgNzgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc1LCA3MywgNzgsIDY4LCAKLSAgICA2OSwgODIsIDcxLCA2NSwgODIsIDg0LCA2OSwgNzgsIDEyOCwgNzUsIDczLCA3NywgNzksIDc4LCA3OSwgMTI4LCA3NSwgNzMsIAotICAgIDczLCAxMjgsIDc1LCA3MywgNzIsIDEyOCwgNzUsIDczLCA2OSwgODgsIDEyOCwgNzUsIDczLCA2OSwgODAsIDEyOCwgNzUsIAotICAgIDczLCA2OSwgNjksIDc3LCAxMjgsIDc1LCA3MywgNjksIDEyOCwgNzUsIDczLCA2OCwgMTI4LCA3NSwgNzMsIDE5NiwgNzUsIAotICAgIDczLCA2NywgNzUsIDEyOCwgNzUsIDcyLCA5MCwgMTI4LCA3NSwgNzIsIDg3LCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA4NSwgCi0gICAgNjksIDc4LCA0NSwgNzYsIDg1LCAxOTcsIDc1LCA3MiwgODUsIDY5LCAyMDYsIDc1LCA3MiwgODUsIDY1LCA4NCwgMTI4LCAKLSAgICA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCA3MiwgNzksIDc4LCAxMjgsIDc1LCA3MiwgNzksIAotICAgIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIDIwNywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIAotICAgIDcyLCA3MywgNjksIDg1LCA3NSwgMjAwLCA3NSwgNzIsIDczLCAxMjgsIDc1LCA3MiwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgCi0gICAgNzIsIDY1LCAxMjgsIDc1LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA3NSwgNzIsIDY5LCA3MywgMTI4LCA3NSwgNzIsIDY5LCAKLSAgICA2OSwgMTI4LCA3NSwgNzIsIDY5LCAxMjgsIDc1LCA3MiwgNjUsIDgyLCA3OSwgODMsIDcyLCA4NCwgNzIsIDIwMSwgNzUsIAotICAgIDcyLCA2NSwgODIsIDEyOCwgNzUsIDcyLCA2NSwgODAsIDcyLCAxMjgsIDc1LCA3MiwgNjUsIDc4LCAxOTksIDc1LCA3MiwgCi0gICAgNjUsIDc4LCA2OCwgMTkzLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA3NSwgNzIsIDY1LCA3NywgODQsIDIwMSwgNzUsIDcyLCAKLSAgICA2NSwgNzUsIDY1LCA4MywgODMsIDczLCA2NSwgMjA2LCA3NSwgNzIsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDY1LCA3MiwgCisgICAgNzMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNzYsIDY1LCAKKyAgICA2NiwgNjUsIDg0LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDEyOCwgNzYsIAorICAgIDY1LCA2NSwgNzcsIDg1LCAxMjgsIDc2LCA2NSwgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIDc2LCA0OCwgCisgICAgNDgsIDU0LCA2NSwgMTI4LCA3NiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNzYsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDc2LCAKKyAgICA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDc1LCA4OSwgODUsIDgyLCA3MywgNzMsIDEyOCwgNzUsIDg5LCA4NSwgCisgICAgMTI4LCA3NSwgODksIDc5LCAxMjgsIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4OSwgNzMsIDEyOCwgCisgICAgNzUsIDg5LCA2OSwgMTI4LCA3NSwgODksIDY1LCA4NCwgNzIsIDc5LCAyMTEsIDc1LCA4OSwgNjUsIDY1LCAxMjgsIDc1LCAKKyAgICA4OSwgNjUsIDEyOCwgNzUsIDg4LCA4NywgNzMsIDEyOCwgNzUsIDg4LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4OCwgODcsIAorICAgIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY1LCA2NSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgMTI4LCA3NSwgODgsIDg1LCAxMjgsIAorICAgIDc1LCA4OCwgNzksIDEyOCwgNzUsIDg4LCA3MywgMTI4LCA3NSwgODgsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDY5LCAxMjgsIAorICAgIDc1LCA4OCwgNjUsIDY1LCAxMjgsIDc1LCA4OCwgNjUsIDEyOCwgNzUsIDg3LCA4NSwgNTEsIDQ5LCA1NiwgMTI4LCA3NSwgCisgICAgODcsIDc5LCA3OSwgMTI4LCA3NSwgODcsIDc5LCAxMjgsIDc1LCA4NywgNzMsIDczLCAxMjgsIDc1LCA4NywgNzMsIDEyOCwgCisgICAgNzUsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg3LCA2OSwgMTI4LCA3NSwgODcsIDY1LCA4OSwgMTI4LCA3NSwgODcsIDY1LCAKKyAgICA2OSwgODQsIDEyOCwgNzUsIDg3LCA2NSwgNjUsIDEyOCwgNzUsIDg2LCA2NSwgMTI4LCA3NSwgODYsIDEyOCwgNzUsIDg1LCAKKyAgICA4OCwgMTI4LCA3NSwgODUsIDg1LCA3MiwgMTI4LCA3NSwgODUsIDg0LCAxMjgsIDc1LCA4NSwgODMsIDc3LCA2NSwgMTI4LCAKKyAgICA3NSwgODUsIDgzLCA3MiwgODUsIDUwLCAxMjgsIDc1LCA4NSwgODIsIDg4LCAxMjgsIDc1LCA4NSwgODIsIDg1LCA5MCwgNjksIAorICAgIDczLCA4MiwgNzksIDEyOCwgNzUsIDg1LCA4MiwgODQsIDEyOCwgNzUsIDg1LCA4MiwgNzksIDc5LCA3OCwgNjksIDEyOCwgCisgICAgNzUsIDg1LCA4MiwgMTI4LCA3NSwgODUsIDIxMCwgNzUsIDg1LCA4MSwgMTI4LCA3NSwgODUsIDc5LCA4OCwgMTI4LCA3NSwgCisgICAgODUsIDc5LCA4MCwgMTI4LCA3NSwgODUsIDc5LCAyMDgsIDc1LCA4NSwgNzksIDc3LCAxMjgsIDc1LCA4NSwgNzksIDEyOCwgCisgICAgNzUsIDg1LCA3OCwgNzEsIDEyOCwgNzUsIDg1LCA3OCwgNjgsIDY4LCA2NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzUsIDg1LCAKKyAgICA3NiwgMTI4LCA3NSwgODUsIDIwNCwgNzUsIDg1LCA2OSwgODQsIDEyOCwgNzUsIDg1LCA1NSwgMTI4LCA3NSwgODUsIDUyLCAKKyAgICAxMjgsIDc1LCA4NSwgMTgwLCA3NSwgODUsIDUxLCAxMjgsIDc1LCA4NSwgMTc5LCA3NSwgODQsIDEyOCwgNzUsIDgzLCA4MywgCisgICAgODUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDg1LCAxMjgsIDc1LCA4MywgODMsIDc5LCA3OSwgMTI4LCA3NSwgODMsIDgzLCAKKyAgICA3OSwgMTI4LCA3NSwgODMsIDgzLCA3MywgNzMsIDEyOCwgNzUsIDgzLCA4MywgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjksIAorICAgIDY5LCAxMjgsIDc1LCA4MywgODMsIDY5LCAxMjgsIDc1LCA4MywgODMsIDY1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgCisgICAgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDc1LCA4MywgODMsIDY1LCAxMjgsIDc1LCA4MywgODMsIDEyOCwgCisgICAgNzUsIDgzLCA3MywgMTI4LCA3NSwgODIsIDY5LCA3NywgNjUsIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCAKKyAgICA3NywgNzksIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDc5LCA3OCwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgCisgICAgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgMTkzLCA3NSwgODAsIDg1LCAxMjgsIDc1LCA4MCwgNzksIDgxLCAxMjgsIAorICAgIDc1LCA4MCwgNzksIDc5LCAxMjgsIDc1LCA4MCwgNzksIDEyOCwgNzUsIDgwLCA3MywgMTI4LCA3NSwgODAsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgNzUsIDgwLCA2OSwgNjksIDEyOCwgNzUsIDgwLCA2OSwgMTI4LCA3NSwgODAsIDY1LCA4MiwgNjUsIDgxLCAKKyAgICAxMjgsIDc1LCA4MCwgNjUsIDc4LCAxMjgsIDc1LCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4OCwgMTI4LCA3NSwgNzksIDg2LCAKKyAgICA4NSwgODUsIDEyOCwgNzUsIDc5LCA4NCwgNzksIDEyOCwgNzUsIDc5LCA4MiwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNzksIAorICAgIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA3NSwgNzksIDgyLCA2OSwgNjUsIDIwNiwgNzUsIDc5LCA4MiwgNjUsIDc4LCA3MywgCisgICAgMTk1LCA3NSwgNzksIDgxLCA3OCwgNjgsIDc5LCA3OCwgMTI4LCA3NSwgNzksIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDc5LCAKKyAgICA4MCwgMTI4LCA3NSwgNzksIDc5LCA4MCwgNzksIDEyOCwgNzUsIDc5LCA3OSwgNzcsIDg1LCA4NSwgODQsIDEyOCwgNzUsIAorICAgIDc5LCA3OSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgNjUsIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgCisgICAgNzcsIDE5MywgNzUsIDc5LCA3NywgMjAxLCA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCA2NSwgMTI4LCA3NSwgNzksIDc3LCAKKyAgICA2NiwgODUsIDg2LCAxOTMsIDc1LCA3OSwgNzcsIDY2LCAyMTMsIDc1LCA3OSwgNzUsIDc5LCAxMjgsIDc1LCA3OSwgNzUsIAorICAgIDEyOCwgNzUsIDc5LCAyMDMsIDc1LCA3OSwgNzMsIDEyOCwgNzUsIDc5LCAyMDEsIDc1LCA3OSwgNzIsIDEyOCwgNzUsIDc5LCAKKyAgICA3MSwgNzIsIDc5LCA3NywgMTI4LCA3NSwgNzksIDY5LCA4NCwgMTI4LCA3NSwgNzksIDY1LCA3NiwgNjUsIDEyOCwgNzUsIAorICAgIDc5LCA2NSwgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3NSwgCisgICAgNzgsIDczLCA3MCwgNjksIDEyOCwgNzUsIDc4LCA3MywgNzAsIDE5NywgNzUsIDc3LCAxMjgsIDc1LCAyMDUsIDc1LCA3NiwgCisgICAgNzMsIDg0LCA3OSwgNzgsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIAorICAgIDE5MywgNzUsIDc2LCA2NSwgMTI4LCA3NSwgNzYsIDEyOCwgNzUsIDc1LCA4NSwgMTI4LCA3NSwgNzUsIDc5LCAxMjgsIDc1LCAKKyAgICA3NSwgNzMsIDEyOCwgNzUsIDc1LCA2OSwgNjksIDEyOCwgNzUsIDc1LCA2OSwgMTI4LCA3NSwgNzUsIDY1LCAxMjgsIDc1LCAKKyAgICA3NSwgMTI4LCA3NSwgNzQsIDY5LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCAKKyAgICA3OSwgNzUsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNzMsIAorICAgIDg5LCA2OSwgNzksIDc1LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCAKKyAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgNzUsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCAKKyAgICA3NSwgNzMsIDg5LCA2OSwgNzksIDIwMywgNzUsIDczLCA4OCwgMTI4LCA3NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODMsIAorICAgIDgzLCA3MywgNzgsIDE5OSwgNzUsIDczLCA4MywgODMsIDEyOCwgNzUsIDczLCA4MywgMjExLCA3NSwgNzMsIDgzLCA3MywgCisgICAgNzcsIDUzLCAxMjgsIDc1LCA3MywgODMsIDczLCA3NywgMTgxLCA3NSwgNzMsIDgzLCA3MiwgMTI4LCA3NSwgNzMsIDgzLCAKKyAgICA2NSwgNzYsIDEyOCwgNzUsIDczLCA4MiwgNzksIDg3LCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzcsIAorICAgIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzUsIDczLCA4MiwgNzksIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDEyOCwgCisgICAgNzUsIDczLCA4MiwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzEsIDcyLCA3MywgMjE4LCA3NSwgNzMsIDgxLCAxMjgsIDc1LCAKKyAgICA3MywgODAsIDEyOCwgNzUsIDczLCAyMDgsIDc1LCA3MywgNzgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc1LCA3MywgNzgsIAorICAgIDY4LCA2OSwgODIsIDcxLCA2NSwgODIsIDg0LCA2OSwgNzgsIDEyOCwgNzUsIDczLCA3NywgNzksIDc4LCA3OSwgMTI4LCA3NSwgCisgICAgNzMsIDczLCAxMjgsIDc1LCA3MywgNzIsIDEyOCwgNzUsIDczLCA2OSwgODgsIDEyOCwgNzUsIDczLCA2OSwgODAsIDEyOCwgCisgICAgNzUsIDczLCA2OSwgNjksIDc3LCAxMjgsIDc1LCA3MywgNjksIDEyOCwgNzUsIDczLCA2OCwgMTI4LCA3NSwgNzMsIDE5NiwgCisgICAgNzUsIDczLCA2NywgNzUsIDEyOCwgNzUsIDcyLCA5MCwgMTI4LCA3NSwgNzIsIDg3LCA2NSwgNzMsIDEyOCwgNzUsIDcyLCAKKyAgICA4NSwgNjksIDc4LCA0NSwgNzYsIDg1LCAxOTcsIDc1LCA3MiwgODUsIDY5LCAyMDYsIDc1LCA3MiwgODUsIDY4LCA2NSwgNzcsIAorICAgIDEyOCwgNzUsIDcyLCA4NSwgNjUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDg1LCAxMjgsIDc1LCA3MiwgNzksIDIxMiwgNzUsIAorICAgIDcyLCA3OSwgNzgsIDEyOCwgNzUsIDcyLCA3OSwgNzcsIDg1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgCisgICAgMjA3LCA3NSwgNzIsIDc3LCAyMTMsIDc1LCA3MiwgNzMsIDg0LCAxMjgsIDc1LCA3MiwgNzMsIDc4LCA4OSwgNjUsIDEyOCwgCisgICAgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgMjAwLCA3NSwgNzIsIDczLCAxMjgsIDc1LCA3MiwgNzIsIDc5LCAxMjgsIDc1LCAKKyAgICA3MiwgNzIsIDY1LCAxMjgsIDc1LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA3NSwgNzIsIDY5LCA3MywgMTI4LCA3NSwgNzIsIAorICAgIDY5LCA2OSwgMTI4LCA3NSwgNzIsIDY5LCAxMjgsIDc1LCA3MiwgNjUsIDgyLCA3OSwgODMsIDcyLCA4NCwgNzIsIDIwMSwgCisgICAgNzUsIDcyLCA2NSwgODIsIDEyOCwgNzUsIDcyLCA2NSwgODAsIDcyLCAxMjgsIDc1LCA3MiwgNjUsIDc4LCAxOTksIDc1LCAKKyAgICA3MiwgNjUsIDc4LCA2OCwgMTkzLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA3NSwgNzIsIDY1LCA3NywgODQsIDIwMSwgNzUsIAorICAgIDcyLCA2NSwgNzUsIDY1LCA4MywgODMsIDczLCA2NSwgMjA2LCA3NSwgNzIsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDY1LCA3MiwgCiAgICAgMTI4LCA3NSwgNzIsIDY1LCAyMDAsIDc1LCA3MiwgNjUsIDY1LCAxMjgsIDc1LCA3MSwgMTI4LCA3NSwgNjksIDg5LCA2NywgCiAgICAgNjUsIDgwLCAxMjgsIDc1LCA2OSwgODksIDY3LCA2NSwgMjA4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgNjgsIAogICAgIDEyOCwgNzUsIDY5LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MywgCkBAIC0yMTQxLDcxICsyMjg3LDc0IEBACiAgICAgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDc1LCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjcsIDY1LCA3NiwgMTI4LCAKICAgICA3NSwgNjYsIDEyOCwgNzUsIDY1LCA5MCwgNjUsIDc1LCAyMDAsIDc1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAogICAgIDc1LCA2NSwgODksIDY1LCAyMDAsIDc1LCA2NSwgODgsIDEyOCwgNzUsIDY1LCA4NywgNzMsIDEyOCwgNzUsIDY1LCA4NiwgCi0gICAgODksIDc1LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgMjA2LCA3NSwgNjUsIDg0LCAKLSAgICA3OSwgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNzMsIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDY1LCA3NSwgCi0gICAgMTkzLCA3NSwgNjUsIDg0LCA2NSwgODYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA2NSwgODQsIDY1LCA4NiwgMTkzLCAKLSAgICA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgNjUsIDQ1LCA3MiwgNzMsIDgyLCA2NSwgNzEsIDY1LCA3OCwgMTkzLCA3NSwgCi0gICAgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDIwNiwgNzUsIDY1LCAKLSAgICA4MywgODIsIDY1LCAxMjgsIDc1LCA2NSwgODMsIDgyLCAxOTMsIDc1LCA2NSwgODMsIDc1LCA2NSwgNzYsIDEyOCwgNzUsIAotICAgIDY1LCA4MywgNzUsIDY1LCAyMDQsIDc1LCA2NSwgODMsIDcyLCA3NywgNzMsIDgyLCAyMDEsIDc1LCA2NSwgODIsIDgzLCA3MiwgCi0gICAgNjUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDgyLCA3OSwgODIsIDczLCA3MywgMTI4LCA3NSwgNjUsIDgyLCAyMDcsIDc1LCAKLSAgICA2NSwgODIsIDY5LCAyMDYsIDc1LCA2NSwgODIsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODIsIDY1LCA3OCwgCi0gICAgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIAotICAgIDgwLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA2NSwgCi0gICAgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgODksIAotICAgIDY5LCA3OSwgODUsIDc4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA2NSwgCi0gICAgODAsIDgwLCAxOTMsIDc1LCA2NSwgODAsIDc5LCAxMjgsIDc1LCA2NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDY1LCAKLSAgICA3NiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDc1LCA2NSwgNzgsIAotICAgIDcxLCAxMjgsIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCA3OCwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc3LCA1MiwgCi0gICAgMTI4LCA3NSwgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIDc3LCAxMjgsIDc1LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgCi0gICAgNzUsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgNzUsIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCA2NSwgNzMsIDgyLCAKLSAgICA3MywgMTI4LCA3NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgMjAxLCA3NSwgNjUsIDcwLCA2NSwgMTI4LCA3NSwgNjUsIDcwLCAKLSAgICAxMjgsIDc1LCA2NSwgMTk4LCA3NSwgNjUsIDY4LCA1MywgMTI4LCA3NSwgNjUsIDY4LCAxODEsIDc1LCA2NSwgNjgsIDUyLCAKLSAgICAxMjgsIDc1LCA2NSwgNjgsIDUxLCAxMjgsIDc1LCA2NSwgNjgsIDE3OSwgNzUsIDY1LCA2OCwgNTAsIDEyOCwgNzUsIDY1LCAKLSAgICA2OCwgMTI4LCA3NSwgNjUsIDY2LCAxOTMsIDc1LCA2NSwgNjYsIDEyOCwgNzUsIDY1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAKLSAgICA2NSwgNzAsIDg1LCAxMjgsIDc1LCA2NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgNTAsIDEyOCwgNzUsIDY1LCAxNzgsIDc1LCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDc1LCA0OCwgNDgsIDU1LCAxMjgsIDc1LCA0OCwgNDgsIDU0LCAxMjgsIDc1LCA0OCwgNDgsIAotICAgIDUzLCAxMjgsIDc1LCA0OCwgNDgsIDUyLCAxMjgsIDc1LCA0OCwgNDgsIDUxLCAxMjgsIDc1LCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDc1LCA0OCwgNDgsIDQ5LCAxMjgsIDc0LCA4NywgNjUsIDEyOCwgNzQsIDg1LCA4NSwgMTI4LCA3NCwgODUsIDg0LCAxMjgsIAotICAgIDc0LCA4NSwgODAsIDczLCA4NCwgNjksIDgyLCAxMjgsIDc0LCA4NSwgNzksIDg0LCAxMjgsIDc0LCA4NSwgNzksIDgwLCAKLSAgICAxMjgsIDc0LCA4NSwgNzgsIDc5LCAxMjgsIDc0LCA4NSwgNzgsIDY5LCAxMjgsIDc0LCA4NSwgNzYsIDg5LCAxMjgsIDc0LCAKLSAgICA4NSwgNjksIDg1LCA3MywgMTI4LCA3NCwgODUsIDY4LCA4NSwgNzYsIDEyOCwgNzQsIDg1LCA2OCwgNzEsIDY5LCAxMjgsIAotICAgIDc0LCA4NSwgNjgsIDY5LCA3OSwgNDUsIDgzLCA4MCwgNjUsIDc4LCA3MywgODMsIDIwMCwgNzQsIDc5LCA4OSwgNzksIDg1LCAKLSAgICAyMTEsIDc0LCA3OSwgODksIDEyOCwgNzQsIDc5LCA4NiwgNjksIDEyOCwgNzQsIDc5LCAyMTIsIDc0LCA3OSwgNzgsIDcxLCAKLSAgICAxMjgsIDc0LCA3OSwgNzgsIDE5MywgNzQsIDc5LCA3NSwgNjksIDgyLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgNjgsIAotICAgIDEyOCwgNzQsIDc5LCA3MywgNzgsIDEyOCwgNzQsIDc5LCA2NSwgMTI4LCA3NCwgNzQsIDg5LCA4OCwgMTI4LCA3NCwgNzQsIAotICAgIDg5LCA4NCwgMTI4LCA3NCwgNzQsIDg5LCA4MCwgMTI4LCA3NCwgNzQsIDg5LCAxMjgsIDc0LCA3NCwgODUsIDg4LCAxMjgsIAotICAgIDc0LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgMTI4LCA3NCwgCi0gICAgNzQsIDg1LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDgwLCAxMjgsIDc0LCAKLSAgICA3NCwgODUsIDc5LCAxMjgsIDc0LCA3NCwgODUsIDEyOCwgNzQsIDc0LCA3OSwgODgsIDEyOCwgNzQsIDc0LCA3OSwgODQsIAotICAgIDEyOCwgNzQsIDc0LCA3OSwgODAsIDEyOCwgNzQsIDc0LCA3OSwgMTI4LCA3NCwgNzQsIDczLCA4OCwgMTI4LCA3NCwgNzQsIAotICAgIDczLCA4NCwgMTI4LCA3NCwgNzQsIDczLCA4MCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzQsIDc0LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4MCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgMTI4LCA3NCwgNzQsIDczLCAKLSAgICAxMjgsIDc0LCA3NCwgNjksIDY5LCAxMjgsIDc0LCA3NCwgNjksIDEyOCwgNzQsIDc0LCA2NSwgMTI4LCA3NCwgNzMsIDc2LCAKLSAgICAxMjgsIDc0LCA3MywgNzIsIDg2LCA2NSwgNzcsIDg1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NCwgNzMsIDY1LCAxMjgsIAotICAgIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgNzIsIDEyOCwgNzQsIDcyLCA2NSwgNzgsIDEyOCwgNzQsIDcyLCA2NSwgCi0gICAgNzcsIDEyOCwgNzQsIDcyLCA2NSwgMTI4LCA3NCwgNjksIDg1LCAxMjgsIDc0LCA2OSwgODIsIDg1LCA4MywgNjUsIDc2LCAKLSAgICA2OSwgNzcsIDEyOCwgNzQsIDY5LCA4MiwgNjUsIDIwNiwgNzQsIDY5LCA4MiwgNjUsIDEyOCwgNzQsIDY5LCA4MiwgMTI4LCAKLSAgICA3NCwgNjksIDcyLCAxMjgsIDc0LCA2OSwgMjAwLCA3NCwgNjksIDcxLCA3OSwgNzEsIDY1LCA3OCwgMTI4LCA3NCwgNjksIAotICAgIDY5LCA3NywgMTI4LCA3NCwgNjksIDY1LCA3OCwgODMsIDEyOCwgNzQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCi0gICAgNzQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc0LCA2NSwgODIsIDEyOCwgNzQsIDY1LCA4MCwgNjUsIDc4LCAKLSAgICA2OSwgODMsIDE5NywgNzQsIDY1LCA4MCwgNjUsIDc4LCAxMjgsIDc0LCA2NSwgNzgsIDg1LCA2NSwgODIsIDg5LCAxMjgsIAotICAgIDc0LCA2NSwgNzYsIDc2LCA2NSwgNzQsIDY1LCA3NiwgNjUsIDc2LCA3OSwgODUsIDcyLCA3OSwgODUsIDEyOCwgNzQsIDY1LCAKLSAgICA2OCwgNjksIDEyOCwgNzQsIDY1LCA2NywgNzUsIDQ1LCA3OSwgNDUsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIAotICAgIDc0LCA2NSwgNjcsIDIwMywgNzQsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDIwMiwgCi0gICAgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgNjUsIDEyOCwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgMTkzLCA3MywgOTAsIDcyLCAKLSAgICA2OSwgMTI4LCA3MywgOTAsIDY1LCA3NSwgNjUsIDg5LCAxOTMsIDczLCA4OSwgNjksIDc1LCAxMjgsIDczLCA4OSwgNjUsIAotICAgIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDg1LCA3NCwgNjUsIDEyOCwgNzMsIDg1LCAxMjgsIDczLCA4NCwgMjExLCA3MywgODQsIAotICAgIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDg0LCA2OSwgNzcsIDEyOCwgNzMsIDgzLCA4MywgNzIsIDY1LCA4MiwgCi0gICAgMTI4LCA3MywgODMsIDc5LCA3OCwgMTI4LCA3MywgODMsIDc5LCAyMDYsIDczLCA4MywgNjksIDc4LCA0NSwgNzMsIDgzLCAKLSAgICA2OSwgNzgsIDEyOCwgNzMsIDgzLCA2NSwgNzUsIDczLCAxOTMsIDczLCA4MywgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgCi0gICAgMTI4LCA3MywgODIsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCAKLSAgICA2NSwgMTI4LCA3MywgODIsIDc5LCA3OCwgNDUsIDY3LCA3OSwgODAsIDgwLCA2OSwgMjEwLCA3MywgODIsIDc5LCA3OCwgCi0gICAgMTI4LCA3MywgNzksIDg0LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDczLCAKLSAgICA3OSwgODQsIDY1LCAxMjgsIDczLCA3OSwgODQsIDE5MywgNzMsIDc5LCA4MiwgMTI4LCA3MywgNzksIDY4LCA3MiwgNjUsIAotICAgIDY4LCA3MiwgMTI4LCA3MywgNzgsIDg2LCA3MywgODMsIDczLCA2NiwgNzYsIDE5NywgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNjksIDY4LCAxMjgsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCAxOTYsIDczLCA3OCwgODYsIDY5LCA4MiwgODMsIAotICAgIDE5NywgNzMsIDc4LCA4NCwgNzMsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgCisgICAgODksIDc1LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgMjA2LCA3NSwgNjUsIDg1LCAKKyAgICAxMjgsIDc1LCA2NSwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCA3NSwgNjUsIAorICAgIDg0LCA3MiwgNjUsIDc1LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDY1LCA4NCwgCisgICAgNjUsIDg2LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCA3MSwgNjUsIAorICAgIDc4LCAxOTMsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgCisgICAgMjA2LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgNzUsIDY1LCAKKyAgICA3NiwgMTI4LCA3NSwgNjUsIDgzLCA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIDIwMSwgNzUsIAorICAgIDY1LCA4MiwgODMsIDcyLCA2NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA2NSwgCisgICAgODIsIDIwNywgNzUsIDY1LCA4MiwgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDY1LCAKKyAgICA4MiwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3NSwgCisgICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIDgwLCA4MCwgNjUsIAorICAgIDEyOCwgNzUsIDY1LCA4MCwgODAsIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIAorICAgIDY1LCA4MCwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgCisgICAgNzUsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY1LCA3OCwgMTk5LCA3NSwgNjUsIDc4LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCAKKyAgICA2NSwgNzcsIDUyLCAxMjgsIDc1LCA2NSwgNzcsIDUwLCAxMjgsIDc1LCA2NSwgNzcsIDEyOCwgNzUsIDY1LCA3NSwgNzksIAorICAgIDEyOCwgNzUsIDY1LCA3NSwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzUsIDY1LCA3NSwgMTI4LCA3NSwgNjUsIDIwMywgNzUsIAorICAgIDY1LCA3MywgODQsIDcyLCAyMDEsIDc1LCA2NSwgNzMsIDgyLCA3MywgMTI4LCA3NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgCisgICAgMjAxLCA3NSwgNjUsIDcwLCA2NSwgMTI4LCA3NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgMTk4LCA3NSwgNjUsIDY4LCA1MywgCisgICAgMTI4LCA3NSwgNjUsIDY4LCAxODEsIDc1LCA2NSwgNjgsIDUyLCAxMjgsIDc1LCA2NSwgNjgsIDUxLCAxMjgsIDc1LCA2NSwgCisgICAgNjgsIDE3OSwgNzUsIDY1LCA2OCwgNTAsIDEyOCwgNzUsIDY1LCA2OCwgMTI4LCA3NSwgNjUsIDY2LCAxOTMsIDc1LCA2NSwgCisgICAgNjYsIDEyOCwgNzUsIDY1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDc1LCA2NSwgNjUsIDcwLCAKKyAgICAxMjgsIDc1LCA2NSwgNTAsIDEyOCwgNzUsIDY1LCAxNzgsIDc1LCA0OCwgNDgsIDU2LCAxMjgsIDc1LCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDc1LCA0OCwgNDgsIDU0LCAxMjgsIDc1LCA0OCwgNDgsIDUzLCAxMjgsIDc1LCA0OCwgNDgsIDUyLCAxMjgsIDc1LCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDc1LCA0OCwgNDgsIDUwLCAxMjgsIDc1LCA0OCwgNDgsIDQ5LCAxMjgsIDc0LCA4NywgNjUsIAorICAgIDEyOCwgNzQsIDg1LCA4NSwgMTI4LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA4NSwgODMsIDg0LCA3MywgNzAsIDczLCA2NywgCisgICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc0LCA4NSwgODAsIDczLCA4NCwgNjksIDgyLCAxMjgsIDc0LCA4NSwgNzksIDg0LCAKKyAgICAxMjgsIDc0LCA4NSwgNzksIDgwLCAxMjgsIDc0LCA4NSwgNzgsIDc5LCAxMjgsIDc0LCA4NSwgNzgsIDY5LCAxMjgsIDc0LCAKKyAgICA4NSwgNzYsIDg5LCAxMjgsIDc0LCA4NSwgNjksIDg1LCA3MywgMTI4LCA3NCwgODUsIDY4LCA4NSwgNzYsIDEyOCwgNzQsIAorICAgIDg1LCA2OCwgNzEsIDY5LCAxMjgsIDc0LCA4NSwgNjgsIDY5LCA3OSwgNDUsIDgzLCA4MCwgNjUsIDc4LCA3MywgODMsIDIwMCwgCisgICAgNzQsIDc5LCA4OSwgNzksIDg1LCAyMTEsIDc0LCA3OSwgODksIDEyOCwgNzQsIDc5LCA4NiwgNjksIDEyOCwgNzQsIDc5LCAKKyAgICAyMTIsIDc0LCA3OSwgNzgsIDcxLCAxMjgsIDc0LCA3OSwgNzgsIDE5MywgNzQsIDc5LCA3NSwgNjksIDgyLCAxMjgsIDc0LCAKKyAgICA3OSwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDEyOCwgNzQsIDc5LCA2NSwgMTI4LCA3NCwgNzQsIAorICAgIDg5LCA4OCwgMTI4LCA3NCwgNzQsIDg5LCA4NCwgMTI4LCA3NCwgNzQsIDg5LCA4MCwgMTI4LCA3NCwgNzQsIDg5LCAxMjgsIAorICAgIDc0LCA3NCwgODUsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3NCwgCisgICAgNzQsIDg1LCA4MiwgMTI4LCA3NCwgNzQsIDg1LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzQsIDc0LCAKKyAgICA4NSwgNzksIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCAxMjgsIDc0LCA3NCwgODUsIDEyOCwgNzQsIDc0LCA3OSwgODgsIAorICAgIDEyOCwgNzQsIDc0LCA3OSwgODQsIDEyOCwgNzQsIDc0LCA3OSwgODAsIDEyOCwgNzQsIDc0LCA3OSwgMTI4LCA3NCwgNzQsIAorICAgIDczLCA4OCwgMTI4LCA3NCwgNzQsIDczLCA4NCwgMTI4LCA3NCwgNzQsIDczLCA4MCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgCisgICAgODgsIDEyOCwgNzQsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4MCwgMTI4LCA3NCwgNzQsIDczLCAKKyAgICA2OSwgMTI4LCA3NCwgNzQsIDczLCAxMjgsIDc0LCA3NCwgNjksIDY5LCAxMjgsIDc0LCA3NCwgNjksIDEyOCwgNzQsIDc0LCAKKyAgICA2NSwgMTI4LCA3NCwgNzMsIDc2LCAxMjgsIDc0LCA3MywgNzMsIDEyOCwgNzQsIDczLCA3MiwgODYsIDY1LCA3NywgODUsIAorICAgIDc2LCA3MywgODksIDY1LCAxMjgsIDc0LCA3MywgNjUsIDEyOCwgNzQsIDcyLCA3OSwgMTI4LCA3NCwgNzIsIDY5LCA3MiwgCisgICAgMTI4LCA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3NywgMTI4LCA3NCwgNzIsIDY1LCA2NSwgMTI4LCA3NCwgCisgICAgNzIsIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCA4MiwgODUsIDgzLCA2NSwgNzYsIDY5LCA3NywgMTI4LCAKKyAgICA3NCwgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgMTI4LCA3NCwgNjksIDgyLCAxMjgsIDc0LCA2OSwgNzIsIAorICAgIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgNjUsIDc4LCAxMjgsIDc0LCA2OSwgNjksIDc3LCAxMjgsIAorICAgIDc0LCA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NCwgNjUsIDg2LCA3MywgCisgICAgODksIDY1LCA3OCwgNzMsIDEyOCwgNzQsIDY1LCA4NSwgMTI4LCA3NCwgNjUsIDgyLCAxMjgsIDc0LCA2NSwgODAsIDY1LCAKKyAgICA3OCwgNjksIDgzLCAxOTcsIDc0LCA2NSwgODAsIDY1LCA3OCwgMTI4LCA3NCwgNjUsIDc4LCA4NSwgNjUsIDgyLCA4OSwgCisgICAgMTI4LCA3NCwgNjUsIDc2LCA3NiwgNjUsIDc0LCA2NSwgNzYsIDY1LCA3NiwgNzksIDg1LCA3MiwgNzksIDg1LCAxMjgsIDc0LCAKKyAgICA2NSwgNzMsIDEyOCwgNzQsIDY1LCA3MiwgMTI4LCA3NCwgNjUsIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgNDUsIAorICAgIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzQsIDY1LCA2NywgMjAzLCA3NCwgNDUsIDgzLCA3MywgCisgICAgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgMjAyLCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCA2NSwgMTI4LCAKKyAgICA3MywgOTAsIDcyLCA3MywgODQsIDgzLCAxOTMsIDczLCA5MCwgNzIsIDY5LCAxMjgsIDczLCA5MCwgNjUsIDc1LCA2NSwgODksIAorICAgIDE5MywgNzMsIDg5LCA2OSwgNzUsIDEyOCwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODUsIDc0LCA2NSwgCisgICAgMTI4LCA3MywgODUsIDEyOCwgNzMsIDg0LCAyMTEsIDczLCA4NCwgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgCisgICAgODQsIDY5LCA3NywgMTI4LCA3MywgODMsIDgzLCA3MiwgNjUsIDgyLCAxMjgsIDczLCA4MywgNzksIDc4LCAxMjgsIDczLCAKKyAgICA4MywgNzksIDIwNiwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIDY5LCA3OCwgMTI4LCA3MywgODMsIDY1LCA3NSwgNzMsIAorICAgIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgNzksIDc4LCA0NSwgNjcsIDc5LCAKKyAgICA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAxMjgsIDczLCA3OSwgODQsIDczLCA3MCwgNzMsIDY5LCAxOTYsIAorICAgIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDEyOCwgNzMsIDc5LCA4NCwgMTkzLCA3MywgCisgICAgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDczLCA3OCwgODYsIDczLCA4MywgNzMsIDY2LCAKKyAgICA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgNjgsIDEyOCwgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIAorICAgIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA3MywgNzgsIDg0LCA4MiwgNzksIDY4LCA4NSwgNjcsIDY5LCA4MiwgCisgICAgMTI4LCA3MywgNzgsIDg0LCA3MywgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCAKICAgICAxOTUsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIAogICAgIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCAKICAgICA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzMsIDc4LCA4NCwgNjksIApAQCAtMjIzNCwxMjI2ICsyMzgzLDEyMzMgQEAKICAgICA3OCwgNjcsIDcyLCAxMjgsIDczLCA3OCwgNjYsIDc5LCAyMTYsIDczLCA3OCwgNjUsIDgwLCAxMjgsIDczLCA3OCwgNDUsIAogICAgIDY1LCA3NiwgNjUsIDcwLCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3NywgODAsIDY5LCA4MiwgCiAgICAgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDY1LCAxMjgsIDczLCAKLSAgICA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3MywgODMsIDY5LCA3OSwgMjExLCA3MywgNzcsIAotICAgIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCA3MywgNzcsIDczLCA3MCwgCi0gICAgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDY1LCAxMjgsIDczLCAKLSAgICA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCA4MiwgNzEsIDc5LCA3OCwgCi0gICAgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDc2LCAKLSAgICA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4NCwgCi0gICAgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MSwgMTI4LCAKLSAgICA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIDUwLCAxMjgsIAotICAgIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIDczLCA4OSwgCi0gICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgODcsIDgzLCAKLSAgICAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIAotICAgIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgCi0gICAgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIAotICAgIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzMsIDY5LCAKLSAgICA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCAKLSAgICA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIDY5LCA4NSwgCi0gICAgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCA3MywgMjA1LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgCi0gICAgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgCi0gICAgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1NywgNDgsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTYsIDY4LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2NywgCi0gICAgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNTcsIDY5LCA1MSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY4LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTUsIDU0LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgCi0gICAgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDQ5LCA3MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ5LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OCwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNzAsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTQsIDY5LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgCi0gICAgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NCwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTQsIDUzLCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgCi0gICAgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDUzLCA1MywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTQsIDUwLCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA3MCwgCi0gICAgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjgsIDY5LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTMsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NiwgCi0gICAgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTMsIDY2LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTMsIDUxLCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgCi0gICAgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDU1LCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MywgNDksIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTIsIDY5LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgCi0gICAgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDUwLCA2OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDY1LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCAKLSAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCAKLSAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCAKLSAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCAKLSAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCAKLSAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCAKLSAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUzLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCAKLSAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUxLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCAKLSAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCAKLSAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDcwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCAKLSAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCAKLSAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCAKLSAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCAKLSAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCAKLSAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUzLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCAKLSAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUxLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU3LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCAKLSAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCAKLSAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDcwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjksIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCAKLSAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCAKLSAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjUsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDksIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCAKLSAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCAKLSAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjgsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCAKLSAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUzLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTIsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCAKLSAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUxLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCAKLSAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCAKLSAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDcwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjksIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTMsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCAKLSAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCAKLSAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDksIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCAKLSAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCAKLSAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTAsIDcwLCA1NiwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAotICAgIDU2LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCAKLSAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUzLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKLSAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2NywgNzIsIDc5LCAKLSAgICA4NSwgMTI4LCA3MywgNjcsIDcyLCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgNzMsIDc3LCA2NSwgODQsIDc5LCA4MywgCi0gICAgMTI4LCA3MywgNjcsIDcyLCA2NSwgNjgsIDczLCA3OCwgMTI4LCA3MywgNjcsIDY5LCA3NiwgNjUsIDc4LCA2OCwgNzMsIDY3LCAKLSAgICA0NSwgODksIDgyLCAxMjgsIDczLCA2NiwgNzMsIDcwLCA3MywgNzYsIDczLCAxMjgsIDczLCA2NSwgODUsIDY4LCA2NSwgCi0gICAgMTI4LCA3MywgNDgsIDQ5LCA1MywgMTI4LCA3MywgNDgsIDQ5LCA1MiwgMTI4LCA3MywgNDgsIDQ5LCA1MSwgMTI4LCA3MywgCi0gICAgNDgsIDQ5LCA1MCwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDEyOCwgNzMsIDQ4LCAKLSAgICA0OSwgNDgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ4LCAxMjgsIDczLCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA3MywgNDgsIAotICAgIDQ4LCA1NywgMTI4LCA3MywgNDgsIDQ4LCA1NiwgMTI4LCA3MywgNDgsIDQ4LCA1NSwgMTI4LCA3MywgNDgsIDQ4LCA1NCwgCi0gICAgMTI4LCA3MywgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDEyOCwgNzMsIDQ4LCA0OCwgNTIsIDEyOCwgCi0gICAgNzMsIDQ4LCA0OCwgNTEsIDEyOCwgNzMsIDQ4LCA0OCwgNTAsIDEyOCwgNzMsIDQ4LCA0OCwgNDksIDEyOCwgNzMsIDQ1LCAKLSAgICA4OSwgODUsIDEyOCwgNzMsIDQ1LCA4OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDczLCA0NSwgODksIAotICAgIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDczLCA0NSwgCi0gICAgODksIDY1LCAxMjgsIDczLCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3MywgNDUsIDc5LCAxMjgsIDczLCA0NSwgNjksIDg1LCAKLSAgICAxMjgsIDczLCA0NSwgNjYsIDY5LCA2NSwgNzcsIDEyOCwgNzMsIDQ1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgNzMsIAotICAgIDQ1LCA2NSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgNzEsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA5MCwgCi0gICAgODAsIDEyOCwgNzIsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDg3LCA3MSwgMTI4LCA3MiwgOTAsIDg3LCAxMjgsIDcyLCA5MCwgCi0gICAgODQsIDEyOCwgNzIsIDkwLCA3MSwgMTI4LCA3MiwgODksIDgzLCA4NCwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDcyLCAKLSAgICA4OSwgODAsIDc5LCA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgCi0gICAgNjUsIDg0LCA3MywgNzksIDIwNiwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNDUsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCAKLSAgICA3MiwgODksIDgwLCA3MiwgNjksIDc4LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgMjA2LCA3MiwgODgsIDg3LCA3MSwgCi0gICAgMTI4LCA3MiwgODgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg0LCAxMjgsIDcyLCA4OCwgODUsIDc5LCAKLSAgICA4MCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgMTI4LCA3MiwgODgsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDc5LCA4NCwgMTI4LCAKLSAgICA3MiwgODgsIDc5LCA4MCwgMTI4LCA3MiwgODgsIDc5LCAxMjgsIDcyLCA4OCwgNzMsIDg4LCAxMjgsIDcyLCA4OCwgNzMsIAotICAgIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDczLCA2OSwgCi0gICAgODQsIDEyOCwgNzIsIDg4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAxMjgsIDcyLCA4OCwgNzMsIDEyOCwgCi0gICAgNzIsIDg4LCA2OSwgODgsIDEyOCwgNzIsIDg4LCA2OSwgODAsIDEyOCwgNzIsIDg4LCA2OSwgMTI4LCA3MiwgODgsIDY1LCAKLSAgICA4OCwgMTI4LCA3MiwgODgsIDY1LCA4NCwgMTI4LCA3MiwgODgsIDY1LCA4MCwgMTI4LCA3MiwgODgsIDY1LCAxMjgsIDcyLCAKLSAgICA4NywgODUsIDEyOCwgNzIsIDg3LCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA4NiwgMTI4LCA3MiwgODUsIDgyLCA2NSwgNzgsIAorICAgIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA3MywgNzcsIDc4LCAxMjgsIDczLCA3NywgNzMsIDgzLCA2OSwgCisgICAgNzksIDIxMSwgNzMsIDc3LCA3MywgNzgsIDUxLCAxMjgsIDczLCA3NywgNzMsIDc4LCAxMjgsIDczLCA3NywgNzMsIDIwNiwgCisgICAgNzMsIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIAorICAgIDgyLCA2NSwgMTI4LCA3MywgNzcsIDczLCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgNjgsIDczLCA2NSwgCisgICAgODIsIDcxLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA2NSwgNzEsIDE5NywgNzMsIDc2LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDczLCA3NiwgODUsIDg5LCAxMjgsIDczLCA3NiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIAorICAgIDc2LCA4NSwgODQsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgCisgICAgNTEsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDIxMywgNzMsIDc2LCAKKyAgICA1MCwgMTI4LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDE5MywgNzMsIDc0LCAxMjgsIDczLCAKKyAgICA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3MSwgNzMsIDEyOCwgNzMsIDcxLCAyMDEsIDczLCA3MSwgNzEsIAorICAgIDg3LCA4MywgMTI4LCA3MywgNzAsIDczLCA3OCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgCisgICAgODUsIDg0LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAKKyAgICAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIAorICAgIDcxLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDczLCAKKyAgICA2OSwgODUsIDY3LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIAorICAgIDczLCA2OSwgODUsIDc4LCAxOTksIDczLCA2OCwgNzYsIDY5LCAxMjgsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDczLCA2OCwgCisgICAgNzMsIDIwNSwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NywgNDgsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY4LCA1NSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2NywgNjUsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY4LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU1LCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NSwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU0LCA2OCwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNTEsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ5LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU1LCA0OCwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NCwgNzAsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDY5LCA1NiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNTAsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU0LCA1NCwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NCwgNTMsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1NywgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTMsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NCwgNTAsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MiwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA3MCwgNTYsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjgsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MywgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA0OSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTMsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUzLCA1MiwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MywgNTEsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA2NywgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNjgsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUzLCA1MCwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MywgNDksIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA2NSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTYsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNjUsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDksIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNjUsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTcsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDgsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjksIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjcsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTEsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDksIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjgsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTIsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjksIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjUsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDksIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTYsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNzAsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTQsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjgsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTIsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjYsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTAsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTcsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NiwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDgsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA3MCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTUsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjksIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTMsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MiwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjcsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NiwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTEsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjUsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDksIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTYsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNzAsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTQsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjgsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NywgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTIsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjYsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTAsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OSwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTcsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDgsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTUsIDEyOCwgCisgICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MCwgNzAsIDU2LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCisgICAgNTYsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2NywgNzIsIDc5LCA4NSwgMTI4LCA3MywgCisgICAgNjcsIDcyLCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgNzMsIDc3LCA2NSwgODQsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCAKKyAgICA2NSwgNjgsIDczLCA3OCwgMTI4LCA3MywgNjcsIDY5LCA3NiwgNjUsIDc4LCA2OCwgNzMsIDY3LCA0NSwgODksIDgyLCAxMjgsIAorICAgIDczLCA2NiwgNzMsIDcwLCA3MywgNzYsIDczLCAxMjgsIDczLCA2NSwgODUsIDY4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA1MywgCisgICAgMTI4LCA3MywgNDgsIDQ5LCA1MiwgMTI4LCA3MywgNDgsIDQ5LCA1MSwgMTI4LCA3MywgNDgsIDQ5LCA1MCwgMTI4LCA3MywgCisgICAgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDczLCAKKyAgICA0OCwgNDksIDQ4LCAxMjgsIDczLCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1NywgMTI4LCA3MywgNDgsIAorICAgIDQ4LCA1NiwgMTI4LCA3MywgNDgsIDQ4LCA1NSwgMTI4LCA3MywgNDgsIDQ4LCA1NCwgMTI4LCA3MywgNDgsIDQ4LCA1MywgCisgICAgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDEyOCwgNzMsIDQ4LCA0OCwgNTIsIDEyOCwgNzMsIDQ4LCA0OCwgNTEsIDEyOCwgCisgICAgNzMsIDQ4LCA0OCwgNTAsIDEyOCwgNzMsIDQ4LCA0OCwgNDksIDEyOCwgNzMsIDQ1LCA4OSwgODUsIDEyOCwgNzMsIDQ1LCAKKyAgICA4OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCAxMjgsIDczLCA0NSwgODksIAorICAgIDY1LCA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDczLCA0NSwgODksIDY1LCAxMjgsIDczLCA0NSwgCisgICAgNzksIDQ1LCA3MywgMTI4LCA3MywgNDUsIDc5LCAxMjgsIDczLCA0NSwgNjksIDg1LCAxMjgsIDczLCA0NSwgNjYsIDY5LCAKKyAgICA2NSwgNzcsIDEyOCwgNzMsIDQ1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgNzMsIDQ1LCA2NSwgMTI4LCA3MiwgOTAsIAorICAgIDkwLCA5MCwgNzEsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA5MCwgODAsIDEyOCwgNzIsIDkwLCA5MCwgCisgICAgMTI4LCA3MiwgOTAsIDg3LCA3MSwgMTI4LCA3MiwgOTAsIDg3LCAxMjgsIDcyLCA5MCwgODQsIDEyOCwgNzIsIDkwLCA3MSwgCisgICAgMTI4LCA3MiwgODksIDgzLCA4NCwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDcyLCA4OSwgODAsIDc5LCA2OCwgNzMsIDY1LCAKKyAgICA4MywgODQsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzIsIAorICAgIDg5LCA4MCwgNzIsIDY5LCA3OCwgNDUsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCAKKyAgICAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgMjA2LCA3MiwgODgsIDg3LCA3MSwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg0LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4MCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgCisgICAgMTI4LCA3MiwgODgsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDc5LCA4MCwgMTI4LCA3MiwgCisgICAgODgsIDc5LCAxMjgsIDcyLCA4OCwgNzMsIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDgwLCAKKyAgICAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODQsIDEyOCwgNzIsIDg4LCA3MywgNjksIAorICAgIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAxMjgsIDcyLCA4OCwgNzMsIDEyOCwgNzIsIDg4LCA2OSwgODgsIDEyOCwgNzIsIAorICAgIDg4LCA2OSwgODAsIDEyOCwgNzIsIDg4LCA2OSwgMTI4LCA3MiwgODgsIDY1LCA4OCwgMTI4LCA3MiwgODgsIDY1LCA4NCwgCisgICAgMTI4LCA3MiwgODgsIDY1LCA4MCwgMTI4LCA3MiwgODgsIDY1LCAxMjgsIDcyLCA4NywgODUsIDEyOCwgNzIsIDg3LCA2NSwgCisgICAgNzMsIDgyLCAxMjgsIDcyLCA4NiwgMTI4LCA3MiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzIsIDg1LCA4MiwgNjUsIDc4LCAKICAgICAxMjgsIDcyLCA4NSwgNzksIDg0LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCAxMjgsIDcyLCA4NSwgNzgsIAogICAgIDY4LCA4MiwgNjksIDE5NiwgNzIsIDg1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgCiAgICAgNjUsIDIwNiwgNzIsIDg1LCA3NiwgNTAsIDEyOCwgNzIsIDg1LCA3MywgNzMsIDg0LCA3OSwgMTI4LCA3MiwgODUsIDY2LCAKICAgICA1MCwgMTI4LCA3MiwgODUsIDY2LCAxNzgsIDcyLCA4NSwgNjYsIDEyOCwgNzIsIDg1LCA2NSwgODIsIDY1LCA2OCwgNjgsIAotICAgIDc5LCAxMjgsIDcyLCA4MiwgODksIDg2LCA3OCwgNzMsIDE5MywgNzIsIDgwLCA4NywgNzEsIDEyOCwgNzIsIDgwLCA2NSwgCi0gICAgMTI4LCA3MiwgODAsIDEyOCwgNzIsIDc5LCA4NSwgODMsIDE5NywgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCAKLSAgICA4MywgMTI4LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIDIxMSwgNzIsIDc5LCA4NSwgODIsIDEyOCwgNzIsIAotICAgIDc5LCA4NSwgMjEwLCA3MiwgNzksIDg0LCA2OSwgNzYsIDEyOCwgNzIsIDc5LCA4NCwgNjUsIDEyOCwgNzIsIDc5LCA4MywgCi0gICAgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIDgzLCA2OSwgMTI4LCA3MiwgNzksIDgyLCA4MywgMTk3LCAKLSAgICA3MiwgNzksIDgyLCA3OCwgODMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDc2LCAyMTcsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKLSAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAotICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKLSAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCAKLSAgICA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgCi0gICAgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIAotICAgIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAKLSAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCAKLSAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAotICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKLSAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCAKLSAgICA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgCi0gICAgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIAotICAgIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAKLSAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKLSAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAotICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKLSAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAotICAgIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCAxMjgsIDcyLCA3OSwgODIsIDE5MywgNzIsIDc5LCA3OSwgODIsIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgwLCAKLSAgICAxMjgsIDcyLCA3OSwgNzksIDc4LCAxMjgsIDcyLCA3OSwgNzgsIDY5LCA4OSwgNjYsIDY5LCA2OSwgMTI4LCA3MiwgNzksIAotICAgIDc4LCA2OSwgMjE3LCA3MiwgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIDczLCA2NywgMTI4LCA3MiwgNzksIDc3LCA3OSwgCi0gICAgODQsIDcyLCA2OSwgODQsIDczLCAxOTUsIDcyLCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA3OSwgNzYsIDY4LCA3MywgNzgsIAotICAgIDE5OSwgNzIsIDc5LCA3NiwgNjUsIDc3LCAxMjgsIDcyLCA3OSwgNzYsIDY1LCAyMDUsIDcyLCA3OSwgNzUsIDY1LCAxMjgsIAotICAgIDcyLCA3OSwgNzMsIDEyOCwgNzIsIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDcyLCA3OCwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCAKLSAgICA4NCwgMTI4LCA3MiwgNzgsIDc5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCAKLSAgICA3MiwgNzgsIDczLCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIAotICAgIDcyLCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgCi0gICAgNjksIDg4LCAxMjgsIDcyLCA3OCwgNjksIDgwLCAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgCi0gICAgNzIsIDc4LCA2NSwgODQsIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCA2NSwgMTI4LCA3MiwgNzcsIDg5LCAKLSAgICA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDEyOCwgNzIsIDc3LCA4OSwgODAsIAotICAgIDEyOCwgNzIsIDc3LCA4OSwgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4NCwgMTI4LCA3MiwgNzcsIAotICAgIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgCi0gICAgNzksIDg4LCAxMjgsIDcyLCA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgMTI4LCA3MiwgNzcsIDg1LCAKLSAgICAxMjgsIDcyLCA3NywgNzksIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCA3NywgNzksIDgwLCAxMjgsIDcyLCAKLSAgICA3NywgNzksIDEyOCwgNzIsIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIDEyOCwgNzIsIDc3LCA3MywgODAsIAotICAgIDEyOCwgNzIsIDc3LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgCi0gICAgMTI4LCA3MiwgNzcsIDczLCAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgODgsIDEyOCwgNzIsIDc3LCA2NSwgCi0gICAgODQsIDEyOCwgNzIsIDc3LCA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgNzYsIDg5LCA4OCwgMTI4LCA3MiwgCi0gICAgNzYsIDg5LCA4NCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDEyOCwgNzIsIDc2LCAKLSAgICA4OSwgODAsIDEyOCwgNzIsIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4NCwgMTI4LCAKLSAgICA3MiwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIDc2LCA4NSwgODAsIDEyOCwgNzIsIAotICAgIDc2LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgMTI4LCA3MiwgCi0gICAgNzYsIDg1LCAxMjgsIDcyLCA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAxMjgsIDcyLCA3NiwgNzksIDEyOCwgCi0gICAgNzIsIDc2LCA3MywgODgsIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCA3MywgODAsIDEyOCwgNzIsIDc2LCAKLSAgICA3MywgNjksIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgMTI4LCA3MiwgNzYsIAotICAgIDczLCAxMjgsIDcyLCA3NiwgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIDcyLCA3NiwgNjksIDEyOCwgNzIsIAotICAgIDc2LCA2NSwgODgsIDEyOCwgNzIsIDc2LCA2NSwgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgNzIsIDc2LCA2NSwgCi0gICAgMTI4LCA3MiwgNzUsIDEyOCwgNzIsIDczLCA5MCwgNjYsIDEyOCwgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIDE5NSwgCi0gICAgNzIsIDczLCA4MiwgNzMsIDgxLCAxMjgsIDcyLCA3MywgNzEsIDcyLCA0NSwgODMsIDgwLCA2OSwgNjksIDE5NiwgNzIsIDczLCAKLSAgICA3MSwgNzIsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDcyLCA3MywgNzEsIDcyLCA0NSwgCi0gICAgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDcyLCA3MywgNjksIDg4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzIsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzgsIDczLCAKLSAgICA2OSwgODUsIDc4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgMjAwLCA3MiwgNzMsIDY5LCAxMjgsIDcyLCA3MywgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzMsIDY4LCA2OSwgCi0gICAgODQsIDEyOCwgNzIsIDczLCA2OCwgNjksIDEyOCwgNzIsIDczLCA2NiwgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDcyLCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDcyLCA3MiwgODUsIDEyOCwgNzIsIDcyLCA3MywgMTI4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCAKLSAgICA3MiwgNzIsIDY5LCAxMjgsIDcyLCA3MiwgNjUsIDY1LCAxMjgsIDcyLCA3MSwgMTI4LCA3MiwgNjksIDg4LCA3MywgNzAsIAotICAgIDc5LCA4MiwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDc5LCA3OCwgCi0gICAgMTI4LCA3MiwgNjksIDgyLCA4NSwgODQsIDg1LCAxMjgsIDcyLCA2OSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgODIsIDc3LCAKLSAgICA3MywgODQsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCA3NywgNzMsIDc5LCA3OCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIAotICAgIDc3LCA2OSwgODMsIDEyOCwgNzIsIDY5LCA4MiwgNjYsIDEyOCwgNzIsIDY5LCA4MiwgNjUsIDY5LCA4NSwgMjA1LCA3MiwgCi0gICAgNjksIDc4LCA3MSwgMTI4LCA3MiwgNjksIDc4LCAxOTksIDcyLCA2OSwgNzcsIDgwLCAxMjgsIDcyLCA2OSwgNzYsIDc3LCAKLSAgICA2OSwgODQsIDEyOCwgNzIsIDY5LCA3NiwgNzcsIDY5LCAyMTIsIDcyLCA2OSwgNzYsIDIwNSwgNzIsIDY5LCA3NiwgNzMsIAotICAgIDY3LCA3OSwgODAsIDg0LCA2OSwgODIsIDEyOCwgNzIsIDY5LCA3NSwgODUsIDg0LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3MiwgCi0gICAgNjksIDczLCA4MywgNjksIDczLCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA4OSwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDc4LCAKLSAgICA3NiwgMjE3LCA3MiwgNjksIDY1LCA4NiwgNjksIDc4LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgMjA2LCA3MiwgNjksIAotICAgIDY1LCA4MiwgODQsIDgzLCAxMjgsIDcyLCA2OSwgNjUsIDgyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA3MiwgCi0gICAgNjksIDY1LCA4MiwgODQsIDEyOCwgNzIsIDY5LCA2NSwgODIsIDIxMiwgNzIsIDY5LCA2NSwgODIsIDQ1LCA3OCwgNzksIDQ1LCAKLSAgICA2OSwgODYsIDczLCAyMDQsIDcyLCA2OSwgNjUsIDY4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDcyLCA2OSwgNjUsIAotICAgIDY4LCA4MywgODQsIDc5LCA3OCwgMTk3LCA3MiwgNjksIDY1LCA2OCwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDcyLCA2OSwgCi0gICAgNjUsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDcyLCA2NiwgNjUsIDgzLCA2NSwgNDUsIDY5LCA4MywgNjUsIDgzLCAxOTMsIDcyLCAKLSAgICA2NiwgNjUsIDgzLCAxOTMsIDcyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcyLCA2NSwgODYsIDY5LCAxMjgsIAotICAgIDcyLCA2NSwgODUsIDgwLCA4NCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgCi0gICAgNzIsIDY1LCA4NCwgNjksIDEyOCwgNzIsIDY1LCA4NCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNzIsIDY1LCA4NCwgNjUsIAotICAgIDE5OCwgNzIsIDY1LCA4MywgNjksIDIxMCwgNzIsIDY1LCA4MywgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA4MiwgCi0gICAgODAsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgMjA2LCA3MiwgNjUsIDgyLCA3NywgNzksIDc4LCAKLSAgICA3MywgNjcsIDEyOCwgNzIsIDY1LCA4MiwgNzUsIDc2LCA2OSwgNjUsIDIwNiwgNzIsIDY1LCA4MiwgNjgsIDc4LCA2OSwgODMsIAotICAgIDgzLCAxMjgsIDcyLCA2NSwgODIsIDE5NiwgNzIsIDY1LCA4MCwgODAsIDIxNywgNzIsIDY1LCA3OCwgODUsIDc4LCA3OSwgCi0gICAgMjA3LCA3MiwgNjUsIDc4LCA3MSwgOTAsIDcyLCA3OSwgMjEzLCA3MiwgNjUsIDc4LCA2OCwgODMsIDEyOCwgNzIsIDY1LCAKLSAgICA3OCwgNjgsIDIxMSwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgCi0gICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNjYsIDY1LCA3MSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCAKLSAgICA0NSwgNjUsIDc1LCA2NSwgODQsIDEyOCwgNzIsIDY1LCA3NywgOTAsIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDgzLCA4NCwgNjksIAotICAgIDIxMCwgNzIsIDY1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc3LCA3NywgNjksIDIxMCwgNzIsIDY1LCA3NywgCi0gICAgNjYsIDg1LCA4MiwgNzEsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc2LCA4MSwgNjUsIDEyOCwgNzIsIDY1LCA3NiwgNzksIAotICAgIDEyOCwgNzIsIDY1LCA3NiwgNzAsIDEyOCwgNzIsIDY1LCA3NiwgNjYsIDY5LCA4MiwgNjgsIDEyOCwgNzIsIDY1LCA3NiwgCi0gICAgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA3MywgODQsIDg1LCAxMjgsIDcyLCA2NSwgNzMsIDgyLCA2NywgODUsIDg0LCAKLSAgICAxMjgsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA2NSwgNzEsIDc2LCA2NSwgMjE4LCA3MiwgNjUsIDcxLCA3NiwgMTI4LCAKLSAgICA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCAxMjgsIDcyLCA2NSwgNjksIAotICAgIDcxLCAyMDQsIDcyLCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3MiwgNjUsIDY1LCA3NywgMTI4LCA3MiwgNjUsIDE5MywgNzIsIAotICAgIDY1LCA0NSwgNzIsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU2LCAxMjgsIDcyLCA0OCwgNDgsIDU1LCAxMjgsIDcyLCA0OCwgCi0gICAgNDgsIDU0LCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgMTI4LCA3MiwgNDgsIDQ4LCA1MywgMTI4LCA3MiwgNDgsIDQ4LCAKLSAgICA1MiwgMTI4LCA3MiwgNDgsIDQ4LCA1MSwgMTI4LCA3MiwgNDgsIDQ4LCA1MCwgMTI4LCA3MiwgNDgsIDQ4LCA0OSwgMTI4LCAKLSAgICA3MiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzEsIDg5LCA4NSwgMTI4LCA3MSwgODksIDc5LCA3OCwgMTI4LCA3MSwgODksIAotICAgIDc5LCAxMjgsIDcxLCA4OSwgNzMsIDEyOCwgNzEsIDg5LCA3MCwgMjEzLCA3MSwgODksIDY5LCA2OSwgMTI4LCA3MSwgODksIAotICAgIDY1LCA4MywgMTI4LCA3MSwgODksIDY1LCA2NSwgMTI4LCA3MSwgODksIDY1LCAxMjgsIDcxLCA4OSwgMTI4LCA3MSwgODcsIAotICAgIDg1LCAxMjgsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgODcsIAotICAgIDY1LCA2NSwgMTI4LCA3MSwgODcsIDY1LCAxMjgsIDcxLCA4NiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgODMsIDcyLCAxMjgsIAotICAgIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgCi0gICAgODIsIDU1LCAxMjgsIDcxLCA4NSwgNzgsIDg1LCAxMjgsIDcxLCA4NSwgNzgsIDIxMywgNzEsIDg1LCAyMDUsIDcxLCA4NSwgCi0gICAgNzYsIDEyOCwgNzEsIDg1LCA3MywgODQsIDY1LCA4MiwgMTI4LCA3MSwgODUsIDE5OSwgNzEsIDg1LCA2OSwgNzIsIDEyOCwgCi0gICAgNzEsIDg1LCA2OSwgMjAwLCA3MSwgODUsIDY4LCAxMjgsIDcxLCA4NSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIDgzLCAKLSAgICA3NywgNjUsIDc4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODUsIAotICAgIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCA4NSwgMTkzLCA3MSwgODUsIDE3OCwgNzEsIDg0LCA2OSwgMjEwLCA3MSwgODMsIAotICAgIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIAotICAgIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCA3MiwgNzMsIDgzLCA3NywgNjUsIDg0LCAKLSAgICA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIDY5LCA3MSwgNzksIDgyLCA3MywgNjUsIAotICAgIDIwNiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgCi0gICAgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIAotICAgIDgyLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCAyMTAsIDcxLCA4MiwgNjksIDY1LCAKLSAgICAyMTIsIDcxLCA4MiwgNjUsIDg2LCA2OSwgODksIDY1LCA4MiwgMTk2LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA3NywgNjUsIAotICAgIDY3LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCAKLSAgICA4MiwgNjUsIDg2LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA4NiwgMTk3LCA3MSwgODIsIDY1LCA4NCwgNjksIDgyLCAxMjgsIAotICAgIDcxLCA4MiwgNjUsIDgzLCA4MywgMTI4LCA3MSwgODIsIDY1LCA4MywgMjExLCA3MSwgODIsIDY1LCA4MCwgNzIsIDY5LCA3NywgCi0gICAgMTk3LCA3MSwgODIsIDY1LCA4MCwgNjksIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA3MSwgODIsIDY1LCAKLSAgICA3MywgNzgsIDEyOCwgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgODIsIDY1LCA2NywgNjksIAotICAgIDEyOCwgNzEsIDgyLCA2NSwgNjcsIDE5NywgNzEsIDgwLCA2NSwgMTI4LCA3MSwgNzksIDgyLCA4NCwgNzIsIDc3LCA3MywgCi0gICAgNzUsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDg0LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIAotICAgIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4MywgODksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA3OSwgCi0gICAgODIsIDcxLCA3OSwgMjA2LCA3MSwgNzksIDgyLCA3MSwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNjUsIDEyOCwgNzEsIDc5LCAKLSAgICA3OSwgMTk2LCA3MSwgNzksIDc4LCA3MSwgMTI4LCA3MSwgNzksIDc2LCA2OCwgMTI4LCA3MSwgNzksIDc1LCAxMjgsIDcxLCAKLSAgICA3OSwgNzMsIDc4LCAxOTksIDcxLCA3OSwgNjYsIDc2LCA3MywgNzgsIDEyOCwgNzEsIDc5LCA2NSwgNzYsIDEyOCwgNzEsIAotICAgIDc5LCA2NSwgMjA0LCA3MSwgNzksIDY1LCAxMjgsIDcxLCA3OCwgODksIDczLCA4MywgMTI4LCA3MSwgNzgsIDY1LCA4NiwgCi0gICAgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDcxLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDc2LCA3OSwgODQsIDg0LCAKLSAgICA2NSwgMjA0LCA3MSwgNzYsIDc5LCA2NiwgMTk3LCA3MSwgNzYsIDczLCA4MywgODMsIDY1LCA3OCwgNjgsIDIwNywgNzEsIAotICAgIDc2LCA2OSwgNzMsIDY3LCAyMDAsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCAxMjgsIDcxLCA3NiwgNjUsIDEyOCwgCi0gICAgNzEsIDc0LCA2OSwgMTI4LCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MywgODQsIDEyOCwgNzEsIDczLCA4MywgNzIsIDEyOCwgCi0gICAgNzEsIDczLCA4MywgMjAwLCA3MSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzEsIDczLCA4MiwgODUsIDY4LCA2NSwgNjUsIAotICAgIDEyOCwgNzEsIDczLCA4MiwgNzYsIDEyOCwgNzEsIDczLCA4MiwgNTEsIDEyOCwgNzEsIDczLCA4MiwgMTc5LCA3MSwgNzMsIAotICAgIDgyLCA1MCwgMTI4LCA3MSwgNzMsIDgyLCAxNzgsIDcxLCA3MywgODAsIDEyOCwgNzEsIDczLCA3OCwgNzMsIDczLCAxMjgsIAotICAgIDcxLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzMsIDc3LCA2OSwgMjA0LCA3MSwgNzMsIDc3LCAxMjgsIDcxLCA3MywgCi0gICAgNzEsIDY1LCAxMjgsIDcxLCA3MywgNjksIDg0LCAxMjgsIDcxLCA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCAKLSAgICA2NiwgNzksIDg1LCAyMTEsIDcxLCA3MywgNjYsIDY1LCAxMjgsIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCAKLSAgICA3MiwgOTAsIDEyOCwgNzEsIDcyLCA4NywgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIAotICAgIDg1LCA3OCwgNzgsIDE5MywgNzEsIDcyLCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgCi0gICAgODQsIDEyOCwgNzEsIDcyLCA3OSwgMTI4LCA3MSwgNzIsIDczLCAxMjgsIDcxLCA3MiwgNzIsIDY1LCAxMjgsIDcxLCA3MiwgCi0gICAgNjksIDg1LCA4OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDg1LCAKLSAgICA2NSwgNjksIDc3LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIAotICAgIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgCi0gICAgNzEsIDcyLCA2OSwgODQsIDEyOCwgNzEsIDcyLCA2OSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgMTI4LCA3MSwgNzIsIDE5NywgCi0gICAgNzEsIDcyLCA2NSwgODksIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgODAsIAotICAgIDEyOCwgNzEsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNzIsIDY1LCA3MywgCi0gICAgNzgsIDg1LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3MywgMjA2LCA3MSwgNzIsIDY1LCAKLSAgICA2OCwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgMTI4LCA3MSwgNzIsIAotICAgIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAxMjgsIDcxLCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2OSwgCi0gICAgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDcxLCA4NSwgODgsIDEyOCwgCi0gICAgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAxMjgsIDcxLCAKLSAgICA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDgwLCAxMjgsIAotICAgIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCA3MSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgCi0gICAgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCAKLSAgICA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgNjksIDEyOCwgNzEsIDcxLCA2OSwgODgsIAotICAgIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgNzEsIDcxLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA2NSwgODgsIDEyOCwgNzEsIAotICAgIDcxLCA2NSwgODQsIDEyOCwgNzEsIDcxLCA2NSwgNjUsIDEyOCwgNzEsIDY5LCA4NCwgMTkzLCA3MSwgNjksIDgzLCA4NCwgCi0gICAgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgNzgsIAotICAgIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgNjksIDgzLCA3MiwgNTAsIDEyOCwgNzEsIDY5LCA4MiwgCi0gICAgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCA3NywgNjUsIDIwNiwgNzEsIDY5LCA4MiwgNjksIDgzLCAKLSAgICA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIAotICAgIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3OCwgODQsIDc2LCAKLSAgICAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MSwgNjksIDc4LCA3MywgNzUsIDIwMSwgNzEsIAotICAgIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCA3MywgNzgsIDczLCAxMjgsIDcxLCA2OSwgNzcsIDczLCA3OCwgCi0gICAgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCAyMDUsIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIDEyOCwgNzEsIDY5LCAKLSAgICA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIDgyLCAxMjgsIDcxLCAKLSAgICA2OSwgNjUsIDIxMCwgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgNzEsIDEyOCwgNzEsIDY3LCA2NSwgMjA2LCAKLSAgICA3MSwgNjYsIDc5LCA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzEsIAotICAgIDY2LCA2OSwgODQsIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCA2NiwgNjUsIDc1LCA4NSwgODIsIDg1LCA3OCwgCi0gICAgNjksIDc4LCAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDg1LCA3NSwgNzMsIDg0LCA4NCwgNjUsIAotICAgIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgMTI4LCA3MSwgNjUsIDg1LCA3OCwgCi0gICAgODQsIDc2LCA2OSwgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MSwgNjUsIDg0LCAKLSAgICA3MiwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIDY1LCA4MywgNzIsIDY1LCA3OCwgCi0gICAgMTI4LCA3MSwgNjUsIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDcxLCAKLSAgICA2NSwgODIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNTEsIAotICAgIDEyOCwgNzEsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIDc4LCA3NywgNjUsIDEyOCwgNzEsIAotICAgIDY1LCA3OCwgNzEsIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgNjUsIDc4LCA1MCwgMTI4LCA3MSwgCi0gICAgNjUsIDc4LCAxNzgsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCAKLSAgICA3NywgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCA3MSwgNjUsIDc3LCA2NSwgNzgsIAotICAgIDEyOCwgNzEsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIDcxLCA2NSwgNzEsIDEyOCwgNzEsIAotICAgIDY1LCA3MCwgMTI4LCA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgCi0gICAgMTI4LCA3MSwgNjUsIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCA3MSwgNjUsIDE5NiwgNzEsIDY1LCA2NiwgCi0gICAgNjUsIDEyOCwgNzEsIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzEsIDY1LCAxNzgsIDcxLCA0OCwgCi0gICAgNTMsIDUyLCAxMjgsIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIDUwLCAxMjgsIDcxLCA0OCwgNTMsIDQ5LCAKLSAgICAxMjgsIDcxLCA0OCwgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIDcxLCA0OCwgNTIsIDU2LCAxMjgsIDcxLCAKLSAgICA0OCwgNTIsIDU1LCAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MSwgNDgsIAotICAgIDUyLCA1MywgMTI4LCA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgCi0gICAgNTEsIDEyOCwgNzEsIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIDEyOCwgNzEsIDQ4LCA1MiwgNDgsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MSwgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcxLCAKLSAgICA0OCwgNTEsIDU1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgMTI4LCA3MSwgNDgsIAotICAgIDUxLCA1MywgMTI4LCA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCA1MSwgMTI4LCA3MSwgNDgsIDUxLCA1MCwgCi0gICAgMTI4LCA3MSwgNDgsIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCA3MSwgNDgsIDUwLCA1NywgMTI4LCA3MSwgCi0gICAgNDgsIDUwLCA1NiwgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MCwgNTQsIDEyOCwgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgNTIsIDEyOCwgNzEsIDQ4LCA1MCwgNTEsIAotICAgIDEyOCwgNzEsIDQ4LCA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIAotICAgIDcxLCA0OCwgNTAsIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCA0OCwgNDksIDU2LCAxMjgsIDcxLCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIDUzLCAxMjgsIDcxLCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDcxLCA0OCwgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIDcxLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCAKLSAgICA3MSwgNDgsIDQ5LCA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgNDgsIDQ4LCA1NywgMTI4LCA3MSwgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgCi0gICAgNDgsIDU1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgMTI4LCA3MSwgNDgsIDQ4LCAKLSAgICA1MywgMTI4LCA3MSwgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgMTI4LCA3MSwgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA3MSwgNDgsIDQ4LCA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgODQsIDEyOCwgNzAsIDg5LCA4MCwgMTI4LCAKLSAgICA3MCwgODksIDY1LCAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgNjksIDEyOCwgNzAsIDg3LCA2OSwgMTI4LCAKLSAgICA3MCwgODcsIDY1LCA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgNzAsIDg1LCA4NCwgMTI4LCAKLSAgICA3MCwgODUsIDgzLCA2OSwgMTI4LCA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAxMjgsIDcwLCA4NSwgODAsIAotICAgIDEyOCwgNzAsIDg1LCA3OCwgNjksIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNzAsIDg1LCA3NiwgNzYsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA4NSwgNzYsIDIwNCwgNzAsIDg1LCA3NCwgNzMsIAotICAgIDEyOCwgNzAsIDg1LCA2OSwgODQsIDEyOCwgNzAsIDg1LCA2OSwgMjA0LCA3MCwgODUsIDY5LCAxMjgsIDcwLCA4NCwgNzIsIAotICAgIDc5LCA4MiwgMTkzLCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgCi0gICAgNzgsIDE5OSwgNzAsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDg0LCA3MywgNzYsIDg0LCAKLSAgICA2OSwgMTk2LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgCi0gICAgMjA1LCA3MCwgODIsIDc5LCA3MSwgMTI4LCA3MCwgODIsIDc5LCAxOTksIDcwLCA4MiwgNzMsIDg0LCA4NSwgMTI4LCA3MCwgCi0gICAgODIsIDczLCA2OSwgODMsIDEyOCwgNzAsIDgyLCA3MywgNjksIDE5NiwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDg2LCAKLSAgICA2OSwgMTI4LCA3MCwgODIsIDY5LCA4NCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA4MiwgNjksIDc4LCA2NywgCi0gICAgMjAwLCA3MCwgODIsIDY5LCA2OSwgMTI4LCA3MCwgODIsIDY5LCAxOTcsIDcwLCA4MiwgNjUsIDc4LCAxOTUsIDcwLCA4MiwgCi0gICAgNjUsIDc3LCA2OSwgMTI4LCA3MCwgODIsIDY1LCA3MSwgODIsIDY1LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDc3LCAKLSAgICA2OSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDcwLCA3OSwgODgsIDEyOCwgNzAsIAotICAgIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3OSwgCi0gICAgODUsIDgyLCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDg1LCA4MiwgNDUsIDgzLCA4NCwgODIsIAotICAgIDczLCA3OCwgMTk5LCA3MCwgNzksIDg1LCA4MiwgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA3MCwgNzksIDg1LCA4MiwgCi0gICAgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDc5LCA4NSwgMjEwLCA3MCwgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIAotICAgIDEyOCwgNzAsIDc5LCA4MywgODQsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA4NCwgODksIDEyOCwgCisgICAgNzksIDEyOCwgNzIsIDg0LCA4MywgMTI4LCA3MiwgODQsIDc0LCAxMjgsIDcyLCA4MiwgODksIDg2LCA3OCwgNzMsIDE5MywgCisgICAgNzIsIDgwLCA4NywgNzEsIDEyOCwgNzIsIDgwLCA2NSwgMTI4LCA3MiwgODAsIDEyOCwgNzIsIDc5LCA4NSwgODMsIDE5NywgCisgICAgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCA4MywgMTI4LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIAorICAgIDIxMSwgNzIsIDc5LCA4NSwgODIsIDEyOCwgNzIsIDc5LCA4NSwgMjEwLCA3MiwgNzksIDg0LCA2OSwgNzYsIDEyOCwgNzIsIAorICAgIDc5LCA4NCwgNjUsIDEyOCwgNzIsIDc5LCA4MywgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIDgzLCA2OSwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA4MywgMTk3LCA3MiwgNzksIDgyLCA3OCwgODMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDc2LCAyMTcsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCAKKyAgICA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgCisgICAgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIAorICAgIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgCisgICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKKyAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKKyAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCAKKyAgICA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgCisgICAgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIAorICAgIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgCisgICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCAKKyAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKKyAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCAKKyAgICA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgCisgICAgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIAorICAgIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgCisgICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKKyAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIDczLCAxMjgsIDcyLCA3OSwgODIsIDE5MywgNzIsIDc5LCA3OSwgCisgICAgODIsIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgwLCAxMjgsIDcyLCA3OSwgNzksIDc4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCAKKyAgICA2OSwgMTk2LCA3MiwgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCA3OCwgNjksIDIxNywgNzIsIAorICAgIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCAKKyAgICA3MywgMTk1LCA3MiwgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3OSwgNzYsIAorICAgIDY1LCA3NywgMTI4LCA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIDc1LCA2NSwgMTI4LCA3MiwgNzksIDczLCAxMjgsIAorICAgIDcyLCA3OSwgNjcsIDcyLCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgNzIsIDc4LCA4NSwgNzksIDEyOCwgNzIsIDc4LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA3OSwgODQsIDEyOCwgNzIsIDc4LCAKKyAgICA3OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgODgsIDEyOCwgNzIsIDc4LCA3MywgODQsIDEyOCwgNzIsIDc4LCA3MywgODAsIAorICAgIDEyOCwgNzIsIDc4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDEyOCwgNzIsIDc4LCA3MywgMTI4LCA3MiwgNzgsIDY5LCA4OCwgMTI4LCA3MiwgCisgICAgNzgsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDY5LCAxMjgsIDcyLCA3OCwgNjUsIDg4LCAxMjgsIDcyLCA3OCwgNjUsIDg0LCAKKyAgICAxMjgsIDcyLCA3OCwgNjUsIDgwLCAxMjgsIDcyLCA3OCwgNjUsIDEyOCwgNzIsIDc3LCA4OSwgODgsIDEyOCwgNzIsIDc3LCAKKyAgICA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCAxMjgsIDcyLCA3NywgODksIDgwLCAxMjgsIDcyLCA3NywgODksIAorICAgIDEyOCwgNzIsIDc3LCA4NSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODQsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDg4LCAxMjgsIAorICAgIDcyLCA3NywgODUsIDgyLCAxMjgsIDcyLCA3NywgODUsIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCA4OCwgMTI4LCA3MiwgCisgICAgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDEyOCwgNzIsIDc3LCA4NSwgMTI4LCA3MiwgNzcsIDc5LCAKKyAgICA4OCwgMTI4LCA3MiwgNzcsIDc5LCA4NCwgMTI4LCA3MiwgNzcsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDc5LCAxMjgsIDcyLCAKKyAgICA3NywgNzMsIDg4LCAxMjgsIDcyLCA3NywgNzMsIDg0LCAxMjgsIDcyLCA3NywgNzMsIDgwLCAxMjgsIDcyLCA3NywgNzMsIAorICAgIDY5LCA4OCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDEyOCwgNzIsIDc3LCA3MywgCisgICAgMTI4LCA3MiwgNzcsIDY5LCAxMjgsIDcyLCA3NywgNjUsIDg4LCAxMjgsIDcyLCA3NywgNjUsIDg0LCAxMjgsIDcyLCA3NywgCisgICAgNjUsIDgwLCAxMjgsIDcyLCA3NywgNjUsIDEyOCwgNzIsIDc2LCA4OSwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODQsIDEyOCwgCisgICAgNzIsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODksIDgyLCAxMjgsIDcyLCA3NiwgODksIDgwLCAxMjgsIDcyLCAKKyAgICA3NiwgODksIDEyOCwgNzIsIDc2LCA4NSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODQsIDEyOCwgNzIsIDc2LCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAxMjgsIDcyLCA3NiwgODUsIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDEyOCwgNzIsIDc2LCA4NSwgMTI4LCA3MiwgCisgICAgNzYsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDc5LCAxMjgsIDcyLCA3NiwgNzMsIDg4LCAKKyAgICAxMjgsIDcyLCA3NiwgNzMsIDg0LCAxMjgsIDcyLCA3NiwgNzMsIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4OCwgMTI4LCAKKyAgICA3MiwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDEyOCwgNzIsIDc2LCA3MywgMTI4LCA3MiwgNzYsIAorICAgIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDY5LCAxMjgsIDcyLCA3NiwgNjUsIDg4LCAxMjgsIAorICAgIDcyLCA3NiwgNjUsIDg0LCAxMjgsIDcyLCA3NiwgNjUsIDgwLCAxMjgsIDcyLCA3NiwgNjUsIDEyOCwgNzIsIDc1LCAxMjgsIAorICAgIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAxOTUsIDcyLCA3MywgODIsIDczLCA4MSwgCisgICAgMTI4LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAxOTYsIDcyLCA3MywgNzEsIDcyLCA0NSwgODIsIDY5LCAKKyAgICA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDcyLCA2OSwgNjksIDc2LCA2OSwgCisgICAgMTk2LCA3MiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCA2OSwgODUsIDIwMCwgNzIsIAorICAgIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIDEyOCwgNzIsIDczLCA2OCwgCisgICAgNzMsIDc4LCAxOTksIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgMTI4LCA3MiwgNzMsIDY2LCAKKyAgICA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNzIsIDcyLCA4NywgNjUsIDEyOCwgNzIsIDcyLCA4NSwgMTI4LCA3MiwgNzIsIAorICAgIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDcyLCA3MiwgNjksIDEyOCwgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNzIsIAorICAgIDcxLCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgNzksIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAKKyAgICAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgODUsIDEyOCwgNzIsIAorICAgIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA3MywgCisgICAgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIDgyLCA2OSwgMTI4LCAKKyAgICA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCA2NSwgNjksIDg1LCAyMDUsIDcyLCA2OSwgNzgsIDcxLCAxMjgsIAorICAgIDcyLCA2OSwgNzgsIDE5OSwgNzIsIDY5LCA3NywgODAsIDEyOCwgNzIsIDY5LCA3NiwgNzcsIDY5LCA4NCwgMTI4LCA3MiwgCisgICAgNjksIDc2LCA3NywgNjksIDIxMiwgNzIsIDY5LCA3NiwgMjA1LCA3MiwgNjksIDc2LCA3MywgNjcsIDc5LCA4MCwgODQsIDY5LCAKKyAgICA4MiwgMTI4LCA3MiwgNjksIDc1LCA4NSwgODQsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgNzMsIDgzLCA2OSwgNzMsIAorICAgIDEyOCwgNzIsIDY5LCA2NSwgODYsIDg5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIDc2LCAyMTcsIDcyLCA2OSwgCisgICAgNjUsIDg2LCA2OSwgNzgsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCAyMDYsIDcyLCA2OSwgNjUsIDgyLCA4NCwgODMsIAorICAgIDEyOCwgNzIsIDY5LCA2NSwgODIsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDcyLCA2OSwgNjUsIDgyLCA4NCwgCisgICAgMTI4LCA3MiwgNjksIDY1LCA4MiwgMjEyLCA3MiwgNjksIDY1LCA4MiwgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIAorICAgIDIwNCwgNzIsIDY5LCA2NSwgNjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzIsIDY5LCA2NSwgNjgsIDgzLCA4NCwgCisgICAgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjUsIDY4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzIsIDY5LCA2NSwgNjgsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCA2NSwgODMsIDE5MywgNzIsIDY2LCA2NSwgODMsIAorICAgIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIDY1LCA4NiwgNjksIDEyOCwgNzIsIDY1LCA4NSwgCisgICAgODAsIDg0LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDcyLCA2NSwgODQsIDcyLCA3MywgMTI4LCA3MiwgNjUsIDg0LCAKKyAgICA2OSwgMTI4LCA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCA2NSwgMTk4LCA3MiwgNjUsIAorICAgIDgzLCA2OSwgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCA3OCwgCisgICAgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA2NywgMTI4LCAKKyAgICA3MiwgNjUsIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzIsIAorICAgIDY1LCA4MiwgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIDc5LCAyMDcsIDcyLCA2NSwgCisgICAgNzgsIDcxLCA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMjExLCAKKyAgICA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIAorICAgIDY4LCA2NiwgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIDQ1LCA2NSwgNzUsIDY1LCA4NCwgCisgICAgMTI4LCA3MiwgNjUsIDc3LCA5MCwgNjUsIDEyOCwgNzIsIDY1LCA3NywgODMsIDg0LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCAKKyAgICA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCA2NiwgODUsIDgyLCA3MSwgNjksIAorICAgIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIDc2LCA3OSwgMTI4LCA3MiwgNjUsIDc2LCA3MCwgCisgICAgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgMTI4LCA3MiwgNjUsIDc2LCA2NiwgNjksIDgyLCAKKyAgICA2OCwgMTI4LCA3MiwgNjUsIDc2LCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDczLCA4NCwgODUsIDEyOCwgNzIsIAorICAgIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIDY1LCA3MSwgNzYsIDY1LCAKKyAgICAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDcyLCA2NSwgNzAsIAorICAgIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCA2NSwgCisgICAgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTYsIDEyOCwgCisgICAgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCAxMjgsIDcyLCAKKyAgICA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAxMjgsIDcyLCA0OCwgNDgsIAorICAgIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3MSwgODksIDg1LCAxMjgsIAorICAgIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCA3MSwgODksIDcwLCAyMTMsIAorICAgIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIDY1LCAxMjgsIDcxLCA4OSwgCisgICAgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCA3MSwgODcsIDY5LCA2OSwgCisgICAgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDg2LCAxMjgsIAorICAgIDcxLCA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgODIsIDY1LCA3NywgCisgICAgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNTUsIDEyOCwgNzEsIDg1LCA3OCwgODUsIDEyOCwgNzEsIDg1LCAKKyAgICA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCA3NiwgMTI4LCA3MSwgODUsIDczLCA4NCwgNjUsIDgyLCAxMjgsIDcxLCAKKyAgICA4NSwgMTk5LCA3MSwgODUsIDY5LCA3MiwgMTI4LCA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIDEyOCwgNzEsIDg1LCAKKyAgICAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgODMsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgNjgsIAorICAgIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCAKKyAgICAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCA3MSwgODQsIDY5LCAKKyAgICAyMTAsIDcxLCA4MywgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCA4MiwgNzksIDg3LCAKKyAgICA3MywgNzgsIDE5OSwgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIDcyLCA3MywgODMsIAorICAgIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzMsIDc3LCA2NSwgCisgICAgNjcsIDczLCA3OCwgMTk5LCA3MSwgODIsIDY5LCA3MSwgNzksIDgyLCA3MywgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjksIAorICAgIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgCisgICAgNDUsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgMjA2LCAKKyAgICA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCAyMTAsIDcxLCA4MiwgNjksIDY1LCAyMTIsIDcxLCA4MiwgNjUsIDg2LCA2OSwgODksIAorICAgIDY1LCA4MiwgMTk2LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA4MiwgCisgICAgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgMTI4LCA3MSwgODIsIAorICAgIDY1LCA4NiwgMTk3LCA3MSwgODIsIDY1LCA4NCwgNjksIDgyLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCA4MywgMTI4LCA3MSwgCisgICAgODIsIDY1LCA4MywgMjExLCA3MSwgODIsIDY1LCA4MCwgNzIsIDY5LCA3NywgMTk3LCA3MSwgODIsIDY1LCA4MCwgNjksIDgzLCAKKyAgICAxMjgsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA3MSwgODIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDgyLCA2NSwgNjgsIAorICAgIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgODIsIDY1LCA2NywgNjksIDEyOCwgNzEsIDgyLCA2NSwgNjcsIDE5NywgCisgICAgNzEsIDgwLCA2NSwgMTI4LCA3MSwgNzksIDgyLCA4NCwgNzIsIDc3LCA3MywgNzUsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDg0LCAKKyAgICAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4MywgODksIAorICAgIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA3MSwgNzksIDgyLCA3MSwgCisgICAgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNjUsIDEyOCwgNzEsIDc5LCA3OSwgMTk2LCA3MSwgNzksIDc4LCA3MSwgMTI4LCA3MSwgCisgICAgNzksIDc2LCA2OCwgMTI4LCA3MSwgNzksIDc1LCAxMjgsIDcxLCA3OSwgNzMsIDc4LCAxOTksIDcxLCA3OSwgNjYsIDc2LCAKKyAgICA3MywgNzgsIDEyOCwgNzEsIDc5LCA2NSwgNzYsIDEyOCwgNzEsIDc5LCA2NSwgMjA0LCA3MSwgNzksIDY1LCAxMjgsIDcxLCAKKyAgICA3OCwgODksIDczLCA4MywgMTI4LCA3MSwgNzgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDcxLCA3NiwgNzksIAorICAgIDg3LCA3MywgNzgsIDE5OSwgNzEsIDc2LCA3OSwgODQsIDg0LCA2NSwgMjA0LCA3MSwgNzYsIDc5LCA2NiwgMTk3LCA3MSwgCisgICAgNzYsIDczLCA4MywgODMsIDY1LCA3OCwgNjgsIDIwNywgNzEsIDc2LCA2OSwgNzMsIDY3LCAyMDAsIDcxLCA3NiwgNjUsIDcxLCAKKyAgICA3OSwgNzYsIDczLCAxMjgsIDcxLCA3NiwgNjUsIDEyOCwgNzEsIDc0LCA2OSwgMTI4LCA3MSwgNzMsIDg4LCAxMjgsIDcxLCAKKyAgICA3MywgODQsIDEyOCwgNzEsIDczLCA4MywgNzIsIDEyOCwgNzEsIDczLCA4MywgMjAwLCA3MSwgNzMsIDgzLCA2NSwgNzYsIAorICAgIDEyOCwgNzEsIDczLCA4MiwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzEsIDczLCA4MiwgNzYsIDEyOCwgNzEsIDczLCA4MiwgCisgICAgNTEsIDEyOCwgNzEsIDczLCA4MiwgMTc5LCA3MSwgNzMsIDgyLCA1MCwgMTI4LCA3MSwgNzMsIDgyLCAxNzgsIDcxLCA3MywgCisgICAgODAsIDEyOCwgNzEsIDczLCA3OCwgNzMsIDczLCAxMjgsIDcxLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzMsIDc3LCAKKyAgICA2OSwgMjA0LCA3MSwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNzEsIDY1LCAxMjgsIDcxLCA3MywgNjksIDg0LCAxMjgsIDcxLCAKKyAgICA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCA2NiwgNzksIDg1LCAyMTEsIDcxLCA3MywgNjYsIDY1LCAxMjgsIAorICAgIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCA3MiwgOTAsIDEyOCwgNzEsIDcyLCA4NywgNjUsIDEyOCwgNzEsIAorICAgIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDE5MywgNzEsIDcyLCA4NSwgMTI4LCA3MSwgCisgICAgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgODQsIDEyOCwgNzEsIDcyLCA3OSwgMTI4LCA3MSwgNzIsIDczLCAKKyAgICAxMjgsIDcxLCA3MiwgNzIsIDY1LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzgsIAorICAgIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgCisgICAgNzIsIDY5LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg1LCAKKyAgICA2NSwgNjksIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODQsIDEyOCwgNzEsIDcyLCA2OSwgNjksIAorICAgIDEyOCwgNzEsIDcyLCA2OSwgMTI4LCA3MSwgNzIsIDE5NywgNzEsIDcyLCA2NSwgODksIDc4LCAxMjgsIDcxLCA3MiwgNjUsIAorICAgIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgODAsIDEyOCwgNzEsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgCisgICAgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDg1LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgMTI4LCAKKyAgICA3MSwgNzIsIDY1LCA3MywgMjA2LCA3MSwgNzIsIDY1LCA2OCwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgNzcsIDY1LCA2OSwgCisgICAgMTI4LCA3MSwgNzIsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA3MywgMTI4LCA3MSwgNzEsIDg3LCA2OSwgNjksIDEyOCwgCisgICAgNzEsIDcxLCA4NywgNjksIDEyOCwgNzEsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDY1LCAxMjgsIDcxLCAKKyAgICA3MSwgODUsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDg0LCAxMjgsIDcxLCA3MSwgODUsIDgyLCA4OCwgMTI4LCA3MSwgNzEsIAorICAgIDg1LCA4MiwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgCisgICAgODUsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgMTI4LCA3MSwgNzEsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDc5LCAKKyAgICA4NCwgMTI4LCA3MSwgNzEsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzEsIDczLCA4NCwgMTI4LCAKKyAgICA3MSwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA3MywgNjksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDY5LCAxMjgsIAorICAgIDcxLCA3MSwgNjksIDg4LCAxMjgsIDcxLCA3MSwgNjksIDg0LCAxMjgsIDcxLCA3MSwgNjksIDgwLCAxMjgsIDcxLCA3MSwgCisgICAgNjUsIDg4LCAxMjgsIDcxLCA3MSwgNjUsIDg0LCAxMjgsIDcxLCA3MSwgNjUsIDY1LCAxMjgsIDcxLCA2OSwgODQsIDE5MywgCisgICAgNzEsIDY5LCA4MywgODQsIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg1LCAxMjgsIDcxLCA2OSwgODMsIDcyLCAKKyAgICA4NCwgNzMsIDc4LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDIwNiwgNzEsIDY5LCA4MywgNzIsIDUwLCAxMjgsIAorICAgIDcxLCA2OSwgODIsIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgNzEsIDY5LCA4MiwgNzcsIDY1LCAyMDYsIDcxLCA2OSwgCisgICAgODIsIDY5LCA4MywgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAyMDAsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCAKKyAgICA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzgsIAorICAgIDg0LCA3NiwgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgNjksIDEyOCwgNzEsIDY5LCA3OCwgNzMsIDc1LCAKKyAgICAyMDEsIDcxLCA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3NywgNzMsIDc4LCA3MywgMTI4LCA3MSwgNjksIAorICAgIDc3LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgMjA1LCA3MSwgNjksIDY4LCA3OSwgNzYsIDY1LCAKKyAgICAxMjgsIDcxLCA2OSwgNjgsIDY5LCAxMjgsIDcxLCA2OSwgNjYsIDIwNywgNzEsIDY5LCA2NiwgMTkzLCA3MSwgNjksIDY1LCAKKyAgICA4MiwgMTI4LCA3MSwgNjksIDY1LCAyMTAsIDcxLCA2OCwgNjUsIDc4LCAxMjgsIDcxLCA2NywgNzMsIDcxLCAxMjgsIDcxLCAKKyAgICA2NywgNjUsIDIwNiwgNzEsIDY2LCA3OSwgNzgsIDEyOCwgNzEsIDY2LCA3MywgNjksIDE5NywgNzEsIDY2LCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDcxLCA2NiwgNjksIDg0LCAxMjgsIDcxLCA2NiwgNjUsIDg5LCA3MywgMTI4LCA3MSwgNjYsIDY1LCA3NSwgCisgICAgODUsIDgyLCA4NSwgNzgsIDY5LCA3OCwgMTI4LCA3MSwgNjYsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA4NSwgNzUsIDczLCAKKyAgICA4NCwgODQsIDY1LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA2NSwgODksIDEyOCwgNzEsIAorICAgIDY1LCA4NSwgNzgsIDg0LCA3NiwgNjksIDg0LCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcxLCA2NSwgODQsIDY5LCAxMjgsIDcxLCA2NSwgODMsIDcyLCAKKyAgICA2NSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgODMsIDcyLCA4NSwgNzgsIDczLCAxMjgsIDcxLCA2NSwgODIsIDc5LCA3OCwgCisgICAgMTI4LCA3MSwgNjUsIDgyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MSwgNjUsIDgyLCA2OCwgNjksIDc4LCAxMjgsIDcxLCAKKyAgICA2NSwgODIsIDUxLCAxMjgsIDcxLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA3MSwgNjUsIDIwOCwgNzEsIDY1LCA3OCwgNzcsIAorICAgIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDcxLCA3MywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNjgsIDE5MywgNzEsIDY1LCA3OCwgCisgICAgNTAsIDEyOCwgNzEsIDY1LCA3OCwgMTc4LCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDY1LCAKKyAgICAxMjgsIDcxLCA2NSwgNzcsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY5LCAxMjgsIDcxLCA2NSwgNzcsIDE5NywgNzEsIDY1LCAKKyAgICA3NywgNjUsIDc4LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgMjA0LCA3MSwgNjUsIAorICAgIDcxLCAxMjgsIDcxLCA2NSwgNzAsIDEyOCwgNzEsIDY1LCAxOTgsIDcxLCA2NSwgNjksIDg0LCA4NCwgNjUsIDQ1LCA4MCwgCisgICAgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA2OCwgNzksIDc2LCAxMjgsIDcxLCA2NSwgNjgsIDEyOCwgNzEsIDY1LCAKKyAgICAxOTYsIDcxLCA2NSwgNjYsIDY1LCAxMjgsIDcxLCA2NSwgNjYsIDE5MywgNzEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcxLCAKKyAgICA2NSwgMTc4LCA3MSwgNDgsIDUzLCA1MiwgMTI4LCA3MSwgNDgsIDUzLCA1MSwgMTI4LCA3MSwgNDgsIDUzLCA1MCwgMTI4LCAKKyAgICA3MSwgNDgsIDUzLCA0OSwgMTI4LCA3MSwgNDgsIDUzLCA0OCwgMTI4LCA3MSwgNDgsIDUyLCA1NywgMTI4LCA3MSwgNDgsIAorICAgIDUyLCA1NiwgMTI4LCA3MSwgNDgsIDUyLCA1NSwgMTI4LCA3MSwgNDgsIDUyLCA1NCwgMTI4LCA3MSwgNDgsIDUyLCA1MywgCisgICAgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDEyOCwgNzEsIDQ4LCA1MiwgNTIsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDY1LCAKKyAgICAxMjgsIDcxLCA0OCwgNTIsIDUxLCAxMjgsIDcxLCA0OCwgNTIsIDUwLCAxMjgsIDcxLCA0OCwgNTIsIDQ5LCAxMjgsIDcxLCAKKyAgICA0OCwgNTIsIDQ4LCAxMjgsIDcxLCA0OCwgNTEsIDU3LCAxMjgsIDcxLCA0OCwgNTEsIDU2LCAxMjgsIDcxLCA0OCwgNTEsIAorICAgIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgCisgICAgNTQsIDEyOCwgNzEsIDQ4LCA1MSwgNTMsIDEyOCwgNzEsIDQ4LCA1MSwgNTIsIDEyOCwgNzEsIDQ4LCA1MSwgNTEsIDEyOCwgCisgICAgNzEsIDQ4LCA1MSwgNTAsIDEyOCwgNzEsIDQ4LCA1MSwgNDksIDEyOCwgNzEsIDQ4LCA1MSwgNDgsIDEyOCwgNzEsIDQ4LCAKKyAgICA1MCwgNTcsIDEyOCwgNzEsIDQ4LCA1MCwgNTYsIDEyOCwgNzEsIDQ4LCA1MCwgNTUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIAorICAgIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCAxMjgsIDcxLCA0OCwgNTAsIDUzLCAxMjgsIDcxLCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDcxLCA0OCwgNTAsIDUxLCAxMjgsIDcxLCA0OCwgNTAsIDUwLCAxMjgsIDcxLCA0OCwgNTAsIDQ5LCAxMjgsIDcxLCA0OCwgCisgICAgNTAsIDQ4LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgMTI4LCA3MSwgNDgsIDQ5LCA1NywgMTI4LCA3MSwgNDgsIDQ5LCAKKyAgICA1NiwgMTI4LCA3MSwgNDgsIDQ5LCA1NSwgMTI4LCA3MSwgNDgsIDQ5LCA1NCwgMTI4LCA3MSwgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA3MSwgNDgsIDQ5LCA1MiwgMTI4LCA3MSwgNDgsIDQ5LCA1MSwgMTI4LCA3MSwgNDgsIDQ5LCA1MCwgMTI4LCA3MSwgNDgsIAorICAgIDQ5LCA0OSwgNjUsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDEyOCwgNzEsIDQ4LCA0OSwgNDgsIDEyOCwgNzEsIDQ4LCA0OCwgCisgICAgNTcsIDEyOCwgNzEsIDQ4LCA0OCwgNTYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAKKyAgICA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIAorICAgIDEyOCwgNzEsIDQ4LCA0OCwgNTMsIDEyOCwgNzEsIDQ4LCA0OCwgNTIsIDEyOCwgNzEsIDQ4LCA0OCwgNTEsIDEyOCwgNzEsIAorICAgIDQ4LCA0OCwgNTAsIDEyOCwgNzEsIDQ4LCA0OCwgNDksIDEyOCwgNzAsIDg5LCA4OCwgMTI4LCA3MCwgODksIDg0LCAxMjgsIAorICAgIDcwLCA4OSwgODAsIDEyOCwgNzAsIDg5LCA2NSwgMTI4LCA3MCwgODcsIDczLCAxMjgsIDcwLCA4NywgNjksIDY5LCAxMjgsIAorICAgIDcwLCA4NywgNjksIDEyOCwgNzAsIDg3LCA2NSwgNjUsIDEyOCwgNzAsIDg3LCA2NSwgMTI4LCA3MCwgODYsIDgzLCA1MSwgCisgICAgMTI4LCA3MCwgODYsIDgzLCA1MCwgMTI4LCA3MCwgODYsIDgzLCA0OSwgMTI4LCA3MCwgODUsIDg4LCAxMjgsIDcwLCA4NSwgCisgICAgODQsIDEyOCwgNzAsIDg1LCA4MywgNjksIDEyOCwgNzAsIDg1LCA4MywgMTkzLCA3MCwgODUsIDgyLCA4OCwgMTI4LCA3MCwgCisgICAgODUsIDgwLCAxMjgsIDcwLCA4NSwgNzgsIDY5LCA4MiwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAKKyAgICA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzAsIDg1LCA3NiwgNzYsIDc4LCA2OSwgODMsIAorICAgIDgzLCAxMjgsIDcwLCA4NSwgNzYsIDIwNCwgNzAsIDg1LCA3NCwgNzMsIDEyOCwgNzAsIDg1LCA2OSwgODQsIDEyOCwgNzAsIAorICAgIDg1LCA2OSwgMjA0LCA3MCwgODUsIDY5LCAxMjgsIDcwLCA4NCwgNzIsIDc5LCA4MiwgMTkzLCA3MCwgODIsIDc5LCA4NywgCisgICAgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgODcsIDc4LCAKKyAgICAxMjgsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA3MCwgODIsIDc5LCA3OCwgODQsIAorICAgIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgMjA1LCA3MCwgODIsIDc5LCA3MSwgMTI4LCA3MCwgCisgICAgODIsIDc5LCAxOTksIDcwLCA4MiwgNzMsIDg0LCA4NSwgMTI4LCA3MCwgODIsIDczLCA2OSwgODMsIDEyOCwgNzAsIDgyLCAKKyAgICA3MywgNjksIDE5NiwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MCwgODIsIDY5LCA4NCwgNjYsIAorICAgIDc5LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA4MiwgNjksIDc4LCA2NywgMjAwLCA3MCwgODIsIDY5LCA2OSwgMTI4LCA3MCwgCisgICAgODIsIDY5LCAxOTcsIDcwLCA4MiwgNjUsIDc4LCAxOTUsIDcwLCA4MiwgNjUsIDc3LCA2OSwgMTI4LCA3MCwgODIsIDY1LCAKKyAgICA3MSwgODIsIDY1LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIAorICAgIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDcwLCA3OSwgODgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3OSwgODUsIDgyLCA0NSwgODQsIDcyLCA3MywgODIsIAorICAgIDg0LCA4OSwgMTI4LCA3MCwgNzksIDg1LCA4MiwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzksIDg1LCA4MiwgCisgICAgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA3MCwgNzksIDg1LCA4MiwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDc5LCAKKyAgICA4NSwgMjEwLCA3MCwgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzAsIDc5LCA4MywgODQsIDY5LCA4MiwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA3MCwgNzksIDgyLCA4NCwgODksIDEyOCwgCiAgICAgNzAsIDc5LCA4MiwgODQsIDIxNywgNzAsIDc5LCA4MiwgODQsIDY5LCAxMjgsIDcwLCA3OSwgODIsIDc3LCAyMTEsIDcwLCAKICAgICA3OSwgODIsIDc3LCA2NSwgODQsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDc1LCA2OSwgMTk2LCA3MCwgNzksIAogICAgIDgyLCA2NywgNjksIDgzLCAxMjgsIDcwLCA3OSwgODIsIDY3LCA2OSwgMTI4LCA3MCwgNzksIDgwLCAxMjgsIDcwLCA3OSwgCkBAIC0zNDYyLDM4NCArMzYxOCwzODkgQEAKICAgICAxMjgsIDcwLCA3OSwgNzksIDg0LCAxMjgsIDcwLCA3OSwgNzksIDY4LCAxMjgsIDcwLCA3OSwgNzksIDEyOCwgNzAsIDc5LCAKICAgICA3OCwgNzEsIDc3LCA2NSwgNzgsIDEyOCwgNzAsIDc5LCA3NywgMTI4LCA3MCwgNzksIDc2LCA3NiwgODksIDEyOCwgNzAsIAogICAgIDc5LCA3NiwgNzYsIDc5LCA4NywgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIDgyLCAxMjgsIDcwLCA3OSwgCi0gICAgNzYsIDY4LCA2OSwgMTk2LCA3MCwgNzksIDcxLCA3MSwgODksIDEyOCwgNzAsIDc3LCAxMjgsIDcwLCA3NiwgODksIDEyOCwgCi0gICAgNzAsIDc2LCA4NSwgODQsIDg0LCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg1LCA4NCwgNjksIDEyOCwgNzAsIDc2LCAKLSAgICA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MCwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcwLCA3NiwgNzksIDg3LCA2OSwgCi0gICAgMjEwLCA3MCwgNzYsIDc5LCA4NSwgODIsIDczLCA4MywgNzIsIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY5LCA4NCwgODQsIDY5LCAKLSAgICAxMjgsIDcwLCA3NiwgNzksIDgyLCA2NSwgMjA0LCA3MCwgNzYsIDc5LCA4MCwgODAsIDIxNywgNzAsIDc2LCA3OSwgNzksIAotICAgIDgyLCAxMjgsIDcwLCA3NiwgNzMsIDgwLCAxMjgsIDcwLCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDc2LCA2OSwgCi0gICAgODgsIDg1LCA4MywgMTI4LCA3MCwgNzYsIDY5LCA4OCwgNjksIDE5NiwgNzAsIDc2LCA2OSwgODUsIDgyLCA0NSwgNjgsIDY5LCAKLSAgICA0NSwgNzYsIDczLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgODQsIDY5LCA3OCwgNjksIDE5NiwgNzAsIDc2LCA2NSwgODQsIAotICAgIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCAxMjgsIDcwLCA3NiwgNjUsIDIxMiwgNzAsIDc2LCA2NSwgCi0gICAgNzEsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MiwgMTI4LCAKLSAgICA3MCwgNzYsIDY1LCA3MSwgNDUsIDUxLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTAsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIAotICAgIDQ1LCA0OSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgMTI4LCA3MCwgNzYsIDY1LCAxOTksIDcwLCA3NiwgNjUsIDEyOCwgNzAsIAotICAgIDc2LCAxMjgsIDcwLCA3MywgODgsIDY5LCA2OCwgNDUsIDcwLCA3OSwgODIsIDIwNSwgNzAsIDczLCA4OCwgMTI4LCA3MCwgCi0gICAgNzMsIDg2LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA3NiwgNzMsIAotICAgIDc4LCAxOTcsIDcwLCA3MywgODYsIDE5NywgNzAsIDczLCA4NCwgNjUsIDEyOCwgNzAsIDczLCA4NCwgMTI4LCA3MCwgNzMsIAotICAgIDgzLCA4NCwgNjksIDE5NiwgNzAsIDczLCA4MywgODQsIDEyOCwgNzAsIDczLCA4MywgNzIsIDczLCA3OCwgMTk5LCA3MCwgCi0gICAgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDIwMywgNzAsIDczLCAKLSAgICA4MywgNzIsIDY5LCA4OSwgNjksIDEyOCwgNzAsIDczLCA4MywgNzIsIDEyOCwgNzAsIDczLCA4MywgMjAwLCA3MCwgNzMsIAotICAgIDgyLCA4MywgMjEyLCA3MCwgNzMsIDgyLCA3MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgNzUsIDgzLCAKLSAgICAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCAyMDMsIDcwLCA3MywgODIsIDY5LCAxMjgsIDcwLCA3MywgODIsIAotICAgIDE5NywgNzAsIDczLCA4MCwgMTI4LCA3MCwgNzMsIDc4LCA3MywgODQsIDE5NywgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgCi0gICAgNzgsIDY1LCA3MywgNzYsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDY5LCAxOTYsIDcwLCA3MywgNzgsIDY1LCAKLSAgICA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIAotICAgIDE5NiwgNzAsIDczLCA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIDcwLCA3MywgNzMsIAotICAgIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MCwgCi0gICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAxOTcsIDcwLCAKLSAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIDIxNywgNzAsIAotICAgIDczLCA3MCwgODQsIDcyLCA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgCi0gICAgNzgsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgNzAsIDcyLCAKLSAgICA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCA3MCwgNjksIDg1LCA4OCwgMTI4LCAKLSAgICA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIDg0LCA3MywgODYsIDY1LCA3NiwgCi0gICAgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAyMTEsIDcwLCA2OSwgODIsIDc3LCAKLSAgICA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIDY5LCA3OSwgMjAwLCA3MCwgNjksIAotICAgIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA3MywgNzgsIDczLCA3OCwgMTk3LCA3MCwgCi0gICAgNjksIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDY1LCA3NiwgMTk3LCA3MCwgNjksIDc2LCA3NiwgNzksIDg3LCAKLSAgICA4MywgNzIsIDczLCA4MCwgMTI4LCA3MCwgNjksIDczLCAxMjgsIDcwLCA2OSwgNzIsIDIxMywgNzAsIDY5LCA3MiwgMTI4LCAKLSAgICA3MCwgNjksIDIwMCwgNzAsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDcwLCA2OSwgNjksIDY4LCAxMjgsIDcwLCA2OSwgNjksIAotICAgIDE5NiwgNzAsIDY5LCA2OSwgMTI4LCA3MCwgNjksIDY2LCA4MiwgODUsIDY1LCA4MiwgODksIDEyOCwgNzAsIDY5LCA2NSwgCi0gICAgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjksIDY1LCA4MiwgNzgsIAotICAgIDEyOCwgNzAsIDY5LCA2NSwgODIsIDcwLCA4NSwgMjA0LCA3MCwgNjksIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA2NSwgMTI4LCA3MCwgNjUsIDg4LCAxMjgsIDcwLCA2NSwgMjE2LCA3MCwgNjUsIDg0LCA3MywgNzEsIDg1LCAKLSAgICA2OSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjUsIAotICAgIDg0LCA3MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIDIwNiwgNzAsIDY1LCA4NCwgCi0gICAgNzIsIDY1LCAxMjgsIDcwLCA2NSwgODQsIDcyLCAxOTMsIDcwLCA2NSwgODQsIDEyOCwgNzAsIDY1LCA4MiwgODMsIDIwMSwgCi0gICAgNzAsIDY1LCA4MSwgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIDcwLCA2NSwgNzgsIDcxLCAxMjgsIDcwLCA2NSwgNzgsIDY5LCAKLSAgICA4MiwgNzksIDgzLCA3MywgMjExLCA3MCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgNzcsIDczLCA3NiwgODksIDEyOCwgNzAsIAotICAgIDY1LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA3MCwgNjUsIDc2LCA3NiwgNjksIDIwNiwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgCi0gICAgNjksIDEyOCwgNzAsIDY1LCA3MywgNzIsIDg1LCAxMjgsIDcwLCA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAKLSAgICAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgODIsIDg5LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIAotICAgIDY3LCA4MywgNzMsIDc3LCA3MywgNzYsIDE5NywgNzAsIDY1LCA2NywgNjksIDQ1LCA1NCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgCi0gICAgNDUsIDUzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MSwgMTI4LCAKLSAgICA3MCwgNjUsIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDY1LCA2NSwgNzcsIAotICAgIDY1LCA2OSwgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzAsIDQ4LCA1MywgCi0gICAgNTEsIDEyOCwgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCAKLSAgICA2NiwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIDQ4LCA1MywgNDgsIAotICAgIDEyOCwgNzAsIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDY1LCAxMjgsIAotICAgIDcwLCA0OCwgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgMTI4LCA3MCwgCi0gICAgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIDEyOCwgNzAsIDQ4LCAKLSAgICA1MiwgNTEsIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIDQ4LCA1MiwgNDgsIAotICAgIDEyOCwgNzAsIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCAxMjgsIAotICAgIDcwLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCA1NCwgMTI4LCA3MCwgCi0gICAgNDgsIDUxLCA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCA3MCwgNDgsIDUxLCAKLSAgICA1MCwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIDQ4LCA1MSwgNDgsIAotICAgIDEyOCwgNzAsIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgNTUsIDEyOCwgNzAsIAotICAgIDQ4LCA1MCwgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgNzAsIDQ4LCA1MCwgCi0gICAgNTEsIDEyOCwgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCAKLSAgICAxMjgsIDcwLCA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIDU2LCAxMjgsIDcwLCAKLSAgICA0OCwgNDksIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIDcwLCA0OCwgNDksIAotICAgIDUyLCAxMjgsIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgNDgsIDQ5LCA1MCwgCi0gICAgMTI4LCA3MCwgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCA1NywgMTI4LCA3MCwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCA3MCwgNDgsIDQ4LCAKLSAgICA1MywgMTI4LCA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA3MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDEyOCwgNjksIDkwLCAyMDAsIDY5LCA5MCwgNjksIAotICAgIDc4LCAxMjgsIDY5LCA5MCwgNjksIDIwNiwgNjksIDkwLCAxMjgsIDY5LCA4OSwgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjksIAotICAgIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjYsIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgCi0gICAgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgODgsIDg0LCA4MiwgNjUsIDg0LCA2OSwgODIsIDgyLCA2OSwgODMsIAotICAgIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDc2LCA3OSwgMjE1LCA2OSwgODgsIDg0LCA4MiwgCi0gICAgNjUsIDQ1LCA3MiwgNzMsIDcxLCAyMDAsIDY5LCA4OCwgODQsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCAKLSAgICA4NCwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjksIDg4LCA4MCwgNzksIDc4LCA2OSwgNzgsIDIxMiwgNjksIDg4LCA3OSwgCi0gICAgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCA4MywgMTI4LCA2OSwgODgsIDczLCA4MywgODQsIDEyOCwgCi0gICAgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA4OCwgCi0gICAgNjcsIDcyLCA2NSwgNzgsIDcxLCA2OSwgMTI4LCA2OSwgODgsIDY3LCA2OSwgODMsIDgzLCAxMjgsIDY5LCA4OCwgNjcsIDY5LCAKLSAgICA3NiwgNzYsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg3LCA2OSwgMTI4LCA2OSwgODYsIDY5LCA4MiwgNzEsIDgyLCA2OSwgNjksIAotICAgIDIwNiwgNjksIDg2LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNjUsIDIwNiwgCi0gICAgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNDUsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIDEyOCwgNjksIDg1LCA4MiwgNzksIAotICAgIDQ1LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA2NywgMjE3LCA2OSwgODUsIDgyLCAyMDcsIDY5LCA4NSwgNzYsIDY5LCAKLSAgICAyMTAsIDY5LCA4NSwgNDUsIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA4NSwgMTI4LCAKLSAgICA2OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDEyOCwgNjksIDg1LCA0NSwgNjUsIDEyOCwgNjksIAotICAgIDg0LCA3OCwgNjUsIDcyLCA4NCwgNjUsIDEyOCwgNjksIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAKLSAgICAyMDYsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA2OSwgODMsIDg1LCA3NSwgODUsIDg1LCA2OCwgNzksIAotICAgIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCA4MywgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgCi0gICAgNjksIDE5NiwgNjksIDgzLCA3MiwgNjksIDUxLCAxMjgsIDY5LCA4MywgNzIsIDUwLCA0OSwgMTI4LCA2OSwgODMsIDcyLCAKLSAgICAxNzgsIDY5LCA4MywgNzIsIDQ5LCA1NCwgMTI4LCA2OSwgODMsIDY3LCA2NSwgODAsIDY5LCAxMjgsIDY5LCA4MywgNDUsIAotICAgIDg0LCA2OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgODIsIDQ1LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIDgyLCA4MiwgCi0gICAgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIDEyOCwgNjksIDgyLCA3MSwgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCA2OSwgCi0gICAgODEsIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIDg1LCAKLSAgICA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCA2OSwgODEsIDg1LCA2NSwgNzYsIDgzLCAxMjgsIDY5LCA4MSwgODUsIAotICAgIDY1LCA3NiwgMjExLCA2OSwgODEsIDg1LCA2NSwgNzYsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgCi0gICAgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA2OSwgODAsIDc5LCA2NywgNzIsIDEyOCwgNjksIDgwLCA3MywgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA3MywgMTk1LCA2OSwgODAsIDczLCA2OCwgNjUsIDg1LCA4MiwgNjksIDY1LCAyMDYsIDY5LCA4MCwgNjksIAotICAgIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNjksIDgwLCA2OSwgNzEsIDY5LCA4MiwgNzcsIDY1LCAxMjgsIDY5LCA3OSwgCi0gICAgNzYsIDcyLCA4OCwgMTI4LCA2OSwgNzksIDcyLCAxMjgsIDY5LCA3OCwgODksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCAKKyAgICA3NiwgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIDcxLCA4OSwgMTI4LCA3MCwgMjA3LCA3MCwgNzcsIDEyOCwgNzAsIDc2LCAKKyAgICA4OSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODUsIDg0LCA2OSwgCisgICAgMTI4LCA3MCwgNzYsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcwLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzAsIDc2LCAKKyAgICA3OSwgODcsIDY5LCAyMTAsIDcwLCA3NiwgNzksIDg1LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIAorICAgIDg0LCA4NCwgNjksIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgCisgICAgNzYsIDc5LCA3OSwgODIsIDEyOCwgNzAsIDc2LCA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCAKKyAgICA3MCwgNzYsIDY5LCA4OCwgODUsIDgzLCAxMjgsIDcwLCA3NiwgNjksIDg4LCA2OSwgMTk2LCA3MCwgNzYsIDY5LCA4NSwgODIsIAorICAgIDQ1LCA2OCwgNjksIDQ1LCA3NiwgNzMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIDc4LCA2OSwgMTk2LCA3MCwgCisgICAgNzYsIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDEyOCwgNzAsIDc2LCA2NSwgMjEyLCAKKyAgICA3MCwgNzYsIDY1LCA3MSwgODMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIAorICAgIDUyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgCisgICAgNzYsIDY1LCA3MSwgNDUsIDQ5LCAxMjgsIDcwLCA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCAKKyAgICA2NSwgMTI4LCA3MCwgNzYsIDEyOCwgNzAsIDczLCA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIAorICAgIDg4LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgCisgICAgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDczLCA4NiwgMTk3LCA3MCwgNzMsIDg0LCA2NSwgMTI4LCA3MCwgNzMsIDg0LCAKKyAgICAxMjgsIDcwLCA3MywgODMsIDg0LCA2OSwgMTk2LCA3MCwgNzMsIDgzLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzMsIAorICAgIDc4LCAxOTksIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgCisgICAgMjAzLCA3MCwgNzMsIDgzLCA3MiwgNjksIDg5LCA2OSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAKKyAgICAyMDAsIDcwLCA3MywgODIsIDgzLCAyMTIsIDcwLCA3MywgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIAorICAgIDgyLCA3NSwgODMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgCisgICAgNzAsIDczLCA4MiwgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCAKKyAgICA3MSwgNjksIDgyLCA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIAorICAgIDczLCA3OCwgNjUsIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgCisgICAgNzYsIDc2LCA2OSwgMTk2LCA3MCwgNzMsIDc2LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgCisgICAgNzAsIDczLCA3MywgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAKKyAgICA2OSwgNDUsIDUwLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIAorICAgIDE5NywgNzAsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgCisgICAgMjE3LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCAKKyAgICA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgCisgICAgMTI4LCA3MCwgNzIsIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIDcwLCA2OSwgCisgICAgODUsIDg4LCAxMjgsIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgODQsIDczLCAKKyAgICA4NiwgNjUsIDc2LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIDIxMSwgNzAsIAorICAgIDY5LCA4MiwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgNjksIDc5LCAKKyAgICAyMDAsIDcwLCA2OSwgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDczLCA3OCwgNzMsIAorICAgIDc4LCAxOTcsIDcwLCA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzAsIDY5LCA3NywgNjUsIDc2LCAxOTcsIDcwLCA2OSwgCisgICAgNzYsIDc2LCA3OSwgODcsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCA2OSwgNzMsIDEyOCwgNzAsIDY5LCA3MiwgMjEzLCAKKyAgICA3MCwgNjksIDcyLCAxMjgsIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIAorICAgIDEyOCwgNzAsIDY5LCA2OSwgMTk2LCA3MCwgNjksIDY5LCAxMjgsIDcwLCA2OSwgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgCisgICAgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCAKKyAgICA2OSwgNjUsIDgyLCA3OCwgMTI4LCA3MCwgNjksIDY1LCA4MiwgNzAsIDg1LCAyMDQsIDcwLCA2OSwgNjUsIDgyLCAxMjgsIAorICAgIDcwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcwLCA2NSwgODksIDEyOCwgNzAsIDY1LCA4OCwgMTI4LCA3MCwgCisgICAgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgNjksIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCAKKyAgICA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgODQsIAorICAgIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgMTkzLCA3MCwgCisgICAgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODIsIDgzLCAyMDEsIDcwLCA2NSwgODEsIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCA3MCwgCisgICAgNjUsIDc4LCA3MSwgMTI4LCA3MCwgNjUsIDc4LCA2OSwgODIsIDc5LCA4MywgNzMsIDIxMSwgNzAsIDY1LCA3OCwgMTI4LCAKKyAgICA3MCwgNjUsIDc3LCA3MywgNzYsIDg5LCAxMjgsIDcwLCA2NSwgNzYsIDc2LCA3MywgNzgsIDE5OSwgNzAsIDY1LCA3NiwgNzYsIAorICAgIDY5LCAyMDYsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIDY5LCAxMjgsIDcwLCA2NSwgNzMsIDcyLCA4NSwgMTI4LCA3MCwgCisgICAgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDgyLCA4OSwgMTI4LCAKKyAgICA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCA2NywgODMsIDczLCA3NywgNzMsIDc2LCAxOTcsIDcwLCA2NSwgNjcsIAorICAgIDY5LCA0NSwgNTQsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAKKyAgICAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIAorICAgIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgCisgICAgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcwLCA0OCwgNTMsIDUxLCAxMjgsIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCAKKyAgICA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjYsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCA0OCwgNTMsIDQ4LCAxMjgsIDcwLCA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIAorICAgIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAxMjgsIDcwLCA0OCwgNTIsIDUxLCAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIAorICAgIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCA0OCwgNTIsIDQ4LCAxMjgsIDcwLCA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NiwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgNTQsIDEyOCwgNzAsIDQ4LCA1MSwgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIAorICAgIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgNzAsIDQ4LCA1MSwgNTAsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCA0OCwgNTEsIDQ4LCAxMjgsIDcwLCA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIDU1LCAxMjgsIDcwLCA0OCwgNTAsIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAKKyAgICAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIDcwLCA0OCwgNTAsIDUxLCAxMjgsIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCAKKyAgICA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgMTI4LCA3MCwgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIAorICAgIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCA1NiwgMTI4LCA3MCwgNDgsIDQ5LCA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgCisgICAgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCA3MCwgNDgsIDQ5LCA1MiwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIDQ4LCA0OSwgNTAsIDEyOCwgNzAsIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCAKKyAgICA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgNTcsIDEyOCwgNzAsIDQ4LCA0OCwgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgNzAsIDQ4LCA0OCwgNTMsIDEyOCwgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCA0OCwgNTAsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCA3OCwgMTI4LCA2OSwgOTAsIDY5LCAyMDYsIDY5LCA5MCwgCisgICAgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCAKKyAgICA2OSwgODksIDY2LCA2OSwgODksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIAorICAgIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA2OSwgODgsIDg0LCAKKyAgICA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgNzIsIDczLCA3MSwgMjAwLCA2OSwgODgsIAorICAgIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY5LCA4OCwgCisgICAgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCA3NiwgNjksIDgzLCAyMTEsIDY5LCA4OCwgODAsIDc5LCA3OCwgNjksIAorICAgIDc4LCAyMTIsIDY5LCA4OCwgNzksIDEyOCwgNjksIDg4LCAyMDcsIDY5LCA4OCwgNzMsIDgzLCA4NCwgODMsIDEyOCwgNjksIAorICAgIDg4LCA3MywgODMsIDg0LCAxMjgsIDY5LCA4OCwgNzIsIDY1LCA4NSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgCisgICAgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIAorICAgIDczLCA3OSwgMjA2LCA2OSwgODgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgNjksIDg4LCA2NywgNjksIDgzLCA4MywgCisgICAgMTI4LCA2OSwgODgsIDY3LCA2OSwgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4NywgNjksIDEyOCwgNjksIDg2LCAKKyAgICA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDY5LCA4NiwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA4NSwgODIsIAorICAgIDc5LCA4MCwgNjksIDY1LCAyMDYsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDQ1LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAKKyAgICAxMjgsIDY5LCA4NSwgODIsIDc5LCA0NSwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgNjcsIDIxNywgNjksIDg1LCA4MiwgCisgICAgMjA3LCA2OSwgODUsIDc2LCA2OSwgMjEwLCA2OSwgODUsIDQ1LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA3OSwgMTI4LCA2OSwgCisgICAgODUsIDQ1LCA2OSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAxMjgsIDY5LCAKKyAgICA4NSwgNDUsIDY1LCAxMjgsIDY5LCA4NCwgODgsIDEyOCwgNjksIDg0LCA3OCwgNjUsIDcyLCA4NCwgNjUsIDEyOCwgNjksIAorICAgIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAyMDYsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCA4OSwgCisgICAgMTI4LCA2OSwgODQsIDY2LCAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgMTI4LCA2OSwgODMsIDg0LCAKKyAgICA3MywgNzcsIDY1LCA4NCwgNjksIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2OSwgODMsIAorICAgIDcyLCA2OSwgNTEsIDEyOCwgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIDE3OCwgNjksIDgzLCA3MiwgCisgICAgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjksIDgzLCA2NywgMTI4LCA2OSwgODMsIDY1LCAKKyAgICAxMjgsIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgODIsIDQ1LCA2NiwgNjUsIDgyLCA4MiwgNjksIAorICAgIDE5NiwgNjksIDgyLCA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIDEyOCwgNjksIDgyLCA3MSwgMTI4LCA2OSwgODIsIAorICAgIDY1LCA4MywgMTk3LCA2OSwgODEsIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDY5LCA4MSwgODUsIDczLCA2OCwgCisgICAgMTI4LCA2OSwgODEsIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCA2OSwgODEsIDg1LCA2NSwgNzYsIDgzLCAKKyAgICAxMjgsIDY5LCA4MSwgODUsIDY1LCA3NiwgMjExLCA2OSwgODEsIDg1LCA2NSwgNzYsIDEyOCwgNjksIDgwLCA4MywgNzMsIAorICAgIDc2LCA3OSwgNzgsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA2OSwgODAsIDc5LCA2NywgNzIsIDEyOCwgCisgICAgNjksIDgwLCA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA2OSwgODAsIDczLCA2OCwgNjUsIDg1LCA4MiwgNjksIAorICAgIDY1LCAyMDYsIDY5LCA4MCwgNjksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNjksIDgwLCA2OSwgNzEsIDY5LCA4MiwgCisgICAgNzcsIDY1LCAxMjgsIDY5LCA3OSwgODQsIDEyOCwgNjksIDc5LCA3NywgMTI4LCA2OSwgNzksIDc2LCA3MiwgODgsIDEyOCwgCisgICAgNjksIDc5LCA3NiwgMTI4LCA2OSwgNzksIDcyLCAxMjgsIDY5LCA3OCwgODksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCAKICAgICA3OSwgODAsIDY5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCAxOTcsIDY5LCA3OCwgODUsIDc3LCA2OSwgODIsIAogICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDUwLCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgCiAgICAgNDUsIDQ5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2OSwgNzgsIDg0LCAKICAgICA3MiwgODUsIDgzLCA3MywgNjUsIDgzLCA3NywgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDgwLCA4MiwgNzMsIDgzLCA2OSwgCiAgICAgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDg0LCA2OSwgODIsIDEyOCwgNjksIDc4LCAKLSAgICA4NCwgNjksIDIxMCwgNjksIDc4LCA4MSwgODUsIDczLCA4MiwgODksIDEyOCwgNjksIDc4LCA3OSwgMjExLCA2OSwgNzgsIAotICAgIDc4LCAxMjgsIDY5LCA3OCwgNzYsIDY1LCA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzgsIDcxLCA3MywgCi0gICAgNzgsIDY5LCAxMjgsIDY5LCA3OCwgNjgsIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNjksIDc4LCA2OCwgNzMsIDc4LCAKLSAgICAxOTksIDY5LCA3OCwgNjgsIDY5LCA4MCwgMTI4LCA2OSwgNzgsIDY4LCA2OSwgNjUsIDg2LCA3OSwgODUsIDgyLCAxMjgsIAotICAgIDY5LCA3OCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCAKLSAgICA4MiwgNjksIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjcsIDEyOCwgNjksIAotICAgIDc4LCA2NSwgODIsIDg4LCA3MywgMjExLCA2OSwgNzgsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDc5LCAyMTEsIDY5LCA3NywgCi0gICAgODAsIDg0LCAyMTcsIDY5LCA3NywgODAsIDcyLCA2NSwgODQsIDczLCAxOTUsIDY5LCA3NywgODAsIDcyLCA2NSwgODMsIDczLCAKLSAgICAyMTEsIDY5LCA3NywgNjYsIDgyLCA3OSwgNzMsIDY4LCA2OSwgODIsIDg5LCAxMjgsIDY5LCA3NywgNjYsIDc2LCA2OSwgNzcsIAotICAgIDEyOCwgNjksIDc3LCA2NiwgNjksIDc2LCA3NiwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc3LCA2NiwgCi0gICAgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgNzYsIDg0LCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDczLCAKLSAgICA4MywgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA2OSwgMTI4LCA2OSwgNzYsIDczLCA3MCwgNzMsIDEyOCwgNjksIAotICAgIDc2LCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCAKLSAgICA3OCwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDIwNiwgNjksIDc2LCA2OSwgODAsIDcyLCA2NSwgNzgsIDg0LCAxMjgsIAotICAgIDY5LCA3NiwgNjksIDc3LCA2OSwgNzgsIDIxMiwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgMTk1LCA2OSwgNzYsIDY1LCA3MCwgODIsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCAKLSAgICA4NCwgODIsIDY5LCA4MCwgODQsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCAxMjgsIDY5LCA3NSwgNzAsIDc5LCA3OCwgNzMsIAotICAgIDg0LCA3MywgNzUsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjksIDc0LCA2OSwgNjcsIDIxMiwgCi0gICAgNjksIDczLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgMjE3LCAKLSAgICA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAyMTEsIDY5LCA3MywgNzEsIAotICAgIDcyLCA4NCwgNzIsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgCi0gICAgNjksIDY5LCAyMDYsIDY5LCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDczLCAKLSAgICA2OSwgMTI4LCA2OSwgNzIsIDg3LCA2NSwgMjE4LCA2OSwgNzEsIDg5LCA4MCwgODQsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIAotICAgIDY1LCAyMDQsIDY5LCA3MSwgNzMsIDgyLCAxMjgsIDY5LCA3MSwgNzEsIDEyOCwgNjksIDY5LCA4OSwgNjUsIDc4LCA3OCwgCi0gICAgNjUsIDEyOCwgNjksIDY5LCA3NSwgNjUsIDY1LCAxMjgsIDY5LCA2OSwgNjYsIDY5LCA2OSwgNzAsIDczLCA3NiwgNzMsIAotICAgIDEyOCwgNjksIDY4LCA3MywgODQsIDc5LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgCi0gICAgNjgsIDEyOCwgNjksIDY2LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDY1LCA4MywgODQsIDY5LCA4MiwgMjA2LCAKLSAgICA2OSwgNjUsIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCA3MiwgNzYsIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIAotICAgIDY5LCA2NSwgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIDgzLCAxMjgsIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgCi0gICAgNzcsIDcyLCA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgMTI4LCA2OSwgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCAKLSAgICA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCA2NiwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIAotICAgIDQ4LCA1MSwgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIDEyOCwgNjksIDQ4LCA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgCi0gICAgNTIsIDY1LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIDY5LCA0OCwgNTEsIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAKLSAgICAxMjgsIDY5LCA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgNTEsIDQ4LCAxMjgsIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCAKLSAgICA0OCwgNTAsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA1NiwgMTI4LCA2OSwgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIAotICAgIDUwLCA1NCwgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCA2OSwgNDgsIDUwLCA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgCi0gICAgMTI4LCA2OSwgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIDUwLCA0OSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgCi0gICAgNjksIDQ4LCA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgNTcsIDEyOCwgNjksIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCAKLSAgICA0OSwgNTUsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAxMjgsIDY5LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIAotICAgIDQ5LCA1NCwgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCA2OSwgNDgsIDQ5LCA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgCi0gICAgMTI4LCA2OSwgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIDQ5LCA0OSwgMTI4LCA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgCi0gICAgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAxMjgsIDY5LCA0OCwgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIAotICAgIDUzLCAxMjgsIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCA0OCwgNDgsIDUxLCAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDY5LCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIDY1LCA3MywgMjA0LCA2OCwgOTAsIDkwLCA2OSwgMTI4LCA2OCwgCi0gICAgOTAsIDg3LCA2OSwgMTI4LCA2OCwgOTAsIDg1LCAxMjgsIDY4LCA5MCwgNzksIDEyOCwgNjgsIDkwLCA3NCwgNjksIDEyOCwgCi0gICAgNjgsIDkwLCA3MywgMTI4LCA2OCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDcyLCA2NSwgMTI4LCA2OCwgOTAsIDY5LCAKLSAgICA3NiwgNzksIDEyOCwgNjgsIDkwLCA2OSwgNjksIDEyOCwgNjgsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDY1LCA2NSwgMTI4LCAKLSAgICA2OCwgOTAsIDY1LCAxMjgsIDY4LCA5MCwgMTI4LCA2OCwgMjE4LCA2OCwgODksIDc5LCAxMjgsIDY4LCA4OSwgMjA3LCA2OCwgCi0gICAgODksIDY5LCA3MiwgMTI4LCA2OCwgODksIDY5LCAyMDAsIDY4LCA4NywgNzksIDEyOCwgNjgsIDg3LCA2OSwgMTI4LCA2OCwgCi0gICAgODcsIDY1LCAxMjgsIDY4LCA4NiwgNzMsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2OCwgODYsIDY4LCAxMjgsIDY4LCAKLSAgICA4NiwgMTI4LCA2OCwgODUsIDg0LCA3MywgNjksIDgzLCAxMjgsIDY4LCA4NSwgODMsIDc1LCAxMjgsIDY4LCA4NSwgODMsIAotICAgIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgODUsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDg1LCA4MiwgCi0gICAgNTAsIDEyOCwgNjgsIDg1LCA4MCwgNzksIDc4LCA2OCwgNzMsIDg1LCAyMTEsIDY4LCA4NSwgNzksIDg4LCAxMjgsIDY4LCAKLSAgICA4NSwgNzksIDEyOCwgNjgsIDg1LCA3OCwgNTIsIDEyOCwgNjgsIDg1LCA3OCwgNTEsIDEyOCwgNjgsIDg1LCA3OCwgMTc5LCAKLSAgICA2OCwgODUsIDc3LCAxMjgsIDY4LCA4NSwgMjA0LCA2OCwgODUsIDcyLCAxMjgsIDY4LCA4NSwgNzEsIDg1LCA2OCwgMTI4LCAKLSAgICA2OCwgODUsIDY2LCA1MCwgMTI4LCA2OCwgODUsIDY2LCAxMjgsIDY4LCA4NSwgMTk0LCA2OCwgODIsIDg5LCAxMjgsIDY4LCAKLSAgICA4MiwgMjE3LCA2OCwgODIsIDg1LCA3NywgMTI4LCA2OCwgODIsIDg1LCAyMDUsIDY4LCA4MiwgNzksIDgwLCA4MywgMTI4LCAKLSAgICA2OCwgODIsIDc5LCA4MCwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgCi0gICAgODcsIDY5LCAxOTYsIDY4LCA4MiwgNzksIDc3LCA2OSwgNjgsIDY1LCA4MiwgMjE3LCA2OCwgODIsIDczLCA4NiwgNjksIAotICAgIDEyOCwgNjgsIDgyLCA3MywgODYsIDE5NywgNjgsIDgyLCA3MywgNzgsIDc1LCAxMjgsIDY4LCA4MiwgNzMsIDIwNCwgNjgsIAotICAgIDgyLCA2OSwgODMsIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDg1LCA3MSwgNzIsIDg0LCAyMTEsIDY4LCA4MiwgNjUsIDc3LCAKLSAgICAxMjgsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgNzEsIDc5LCAyMDYsIDY4LCA4MiwgNjUsIAotICAgIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCA4MywgMTI4LCA2OCwgODIsIDY1LCA2NywgCi0gICAgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCAKLSAgICA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIAotICAgIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgCi0gICAgNjgsIDc5LCA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA4NCwgMTI4LCA2OCwgNzksIDg1LCAKLSAgICA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDY4LCA3OSwgODUsIAotICAgIDY2LCA3NiwgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDg0LCA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzgsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODQsIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIAotICAgIDY5LCAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAotICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCi0gICAgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUwLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MCwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU0LCA1NSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUwLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIAotICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTAsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKLSAgICA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUwLCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUwLCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTQsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCAKLSAgICA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MCwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTQsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIAotICAgIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCi0gICAgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MCwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCAKLSAgICA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCAKLSAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTAsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgCi0gICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIAotICAgIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU1LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCAKLSAgICA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNDksIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDQ5LCA1MSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCAKLSAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIAotICAgIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIAotICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTAsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MCwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MCwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTUsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTAsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNDksIDUwLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NCwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAKLSAgICA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUwLCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgCi0gICAgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgCi0gICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MCwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MCwgNTEsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAKLSAgICA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgCi0gICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgMTI4LCA2OCwgNzksIDg0LCA4MywgMTI4LCA2OCwgNzksIDg0LCA3NiwgCi0gICAgNjksIDgzLCAyMTEsIDY4LCA3OSwgODIsIDg1LCAxMjgsIDY4LCA3OSwgNzksIDgyLCAxMjgsIDY4LCA3OSwgNzksIDc4LCAKLSAgICA3MSwgMTI4LCA2OCwgNzksIDc4LCA3MSwgMTI4LCA2OCwgNzksIDc3LCA2NSwgNzMsIDIwNiwgNjgsIDc5LCA3NiwgODAsIAotICAgIDcyLCA3MywgNzgsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDgzLCAxMjgsIDY4LCA3OSwgNzYsIDc2LCA2NSwgMjEwLCA2OCwgCi0gICAgNzksIDc2LCA3MywgODUsIDc3LCAxMjgsIDY4LCA3OSwgNzUsIDc3LCA2NSwgNzMsIDEyOCwgNjgsIDc5LCA3MywgODQsIAotICAgIDEyOCwgNjgsIDc5LCA3MSwgMTI4LCA2OCwgNzksIDE5OSwgNjgsIDc5LCA2OSwgMjExLCA2OCwgNzksIDY4LCA2OSwgNzUsIAotICAgIDY1LCA4NCwgNjUsIDEyOCwgNjgsIDc5LCA2NiwgODIsIDc5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgCi0gICAgNzcsIDY5LCA2OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCA2OSwgMTk3LCA2OCwgNzksIDY1LCAKLSAgICAxMjgsIDY4LCA3OSwgNDUsIDc5LCAxMjgsIDY4LCA3NywgMTI4LCA2OCwgMjA1LCA2OCwgNzYsIDg1LCAxMjgsIDY4LCA3NiwgCi0gICAgNzksIDEyOCwgNjgsIDc2LCA3MywgMTI4LCA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAxMjgsIDY4LCA3NiwgCi0gICAgMTI4LCA2OCwgNzUsIDY1LCA4MiwgMTI4LCA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCA4NiwgNzMsIDEyOCwgCi0gICAgNjgsIDc0LCA2OSwgODIsIDg2LCAxMjgsIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCA2OCwgNzQsIDEyOCwgCi0gICAgNjgsIDczLCA5MCwgOTAsIDIxNywgNjgsIDczLCA4NiwgNzksIDgyLCA2NywgMTk3LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA4NiwgNzMsIDc4LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgCi0gICAgODIsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTk2LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxMjgsIDY4LCAKLSAgICA3MywgODYsIDczLCA2OCwgMTk3LCA2OCwgNzMsIDg2LCA2OSwgODIsIDcxLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNzMsIAotICAgIDg0LCA4NCwgMjA3LCA2OCwgNzMsIDgzLCA4NCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgCi0gICAgNzMsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgNjgsIDczLCAKLSAgICA4MywgODMsIDc5LCA3NiwgODYsIDY5LCA0NSwgNTAsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCAxMjgsIAotICAgIDY4LCA3MywgODMsIDgwLCA2OSwgODIsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDc1LCAxMjgsIDY4LCA3MywgCi0gICAgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDY4LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDY3LCA3OSwgNzgsIDg0LCAKLSAgICA3MywgNzgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDczLCA4MywgMTk1LCA2OCwgNzMsIDgzLCA2NSwgODAsIDgwLCA3OSwgNzMsIAotICAgIDc4LCA4NCwgNjksIDE5NiwgNjgsIDczLCA4MywgNjUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDczLCA4MiwgNzEsIDE5MywgCi0gICAgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzYsIDIxNywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgNjUsIAotICAgIDIwNCwgNjgsIDczLCA4MCwgODQsIDY5LCAxMjgsIDY4LCA3MywgODAsIDgwLCA2OSwgODIsIDEyOCwgNjgsIDczLCA4MCwgCi0gICAgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDczLCAxMjgsIDY4LCA3MywgODAsIDc2LCAyMDEsIDY4LCAKLSAgICA3MywgNzgsIDcxLCA2NiwgNjUsIDIxMiwgNjgsIDczLCAyMDYsIDY4LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCAKLSAgICA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgNDUsIDQ5LCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIDczLCAKLSAgICA3NywgNzMsIDY4LCA3MywgMTkzLCA2OCwgNzMsIDc3LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIAotICAgIDc3LCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA3NywgNTAsIDEyOCwgNjgsIDczLCA3NiwgMTI4LCA2OCwgCi0gICAgNzMsIDcxLCA4MiwgNjUsIDgwLCA3MiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY4LCA3MywgNzEsIDgyLCAKLSAgICA2NSwgNzcsIDc3LCA3OSwgMjExLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNzMsIDcxLCA4MiwgNjUsIAotICAgIDIwNSwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCAKLSAgICAyMDYsIDY4LCA3MywgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCA3MywgNzEsIDE5MywgNjgsIDczLCA3MCwgODQsIAotICAgIDc5LCA3MSwgNzEsIDc5LCAyMTEsIDY4LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgCi0gICAgNzMsIDY3LCA4NSwgNzYsIDg0LCAyMTcsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDczLCA2OSwgODMsIAotICAgIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDcwLCA3MCwgCi0gICAgNjksIDgyLCA2OSwgNzgsIDY3LCAxOTcsIDY4LCA3MywgNzAsIDY1LCA4NCwgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDgzLCAKLSAgICAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgMjExLCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCAKLSAgICA2NiwgMTI4LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIAotICAgIDIwMSwgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgNzYsIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAKLSAgICAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIAotICAgIDczLCA2NSwgNzcsIDY5LCA4NCwgNjksIDIxMCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgCi0gICAgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDE5MywgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCAKLSAgICA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIAotICAgIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDgzLCAKLSAgICAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA2OCwgNzIsIDc5LCA4NSwgMTI4LCA2OCwgNzIsIAotICAgIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgODUsIDEyOCwgNjgsIAotICAgIDcyLCA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzIsIDczLCAxMjgsIDY4LCA3MiwgCi0gICAgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNzIsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDcyLCA2NSwgMTI4LCA2OCwgNzIsIDY5LCAKLSAgICA2OSwgMTI4LCA2OCwgNzIsIDY1LCA4MiwgNzcsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIAotICAgIDY4LCA3MiwgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA3MiwgNjUsIDY4LCA3MiwgCi0gICAgNjksIDEyOCwgNjgsIDcyLCA2NSwgNjUsIDc2LCA4NSwgMTI4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OSwgOTAsIDIwMCwgCisgICAgODQsIDY5LCAyMTAsIDY5LCA3OCwgODEsIDg1LCA3MywgODIsIDg5LCAxMjgsIDY5LCA3OCwgODEsIDEyOCwgNjksIDc4LCAKKyAgICA3OSwgMjExLCA2OSwgNzgsIDc4LCAxMjgsIDY5LCA3OCwgNzYsIDY1LCA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgCisgICAgMTI4LCA2OSwgNzgsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY5LCA3OCwgNjgsIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjgsIDY5LCA4MCwgMTI4LCA2OSwgNzgsIDY4LCA2OSwgCisgICAgNjUsIDg2LCA3OSwgODUsIDgyLCAxMjgsIDY5LCA3OCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY5LCAKKyAgICA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgNzMsIDc4LCAxOTksIAorICAgIDY5LCA3OCwgNjcsIDEyOCwgNjksIDc4LCA2NSwgODIsIDg4LCA3MywgMjExLCA2OSwgNzgsIDY1LCA4MiwgNzcsIDc5LCA3OCwgCisgICAgNzMsIDc5LCAyMTEsIDY5LCA3NywgODAsIDg0LCAyMTcsIDY5LCA3NywgODAsIDcyLCA2NSwgODQsIDczLCAxOTUsIDY5LCAKKyAgICA3NywgODAsIDcyLCA2NSwgODMsIDczLCAyMTEsIDY5LCA3NywgNjYsIDgyLCA3OSwgNzMsIDY4LCA2OSwgODIsIDg5LCAxMjgsIAorICAgIDY5LCA3NywgNjYsIDc2LCA2OSwgNzcsIDEyOCwgNjksIDc3LCA2NiwgNjksIDc2LCA3NiwgNzMsIDgzLCA3MiwgNzcsIDY5LCAKKyAgICA3OCwgODQsIDEyOCwgNjksIDc3LCA2NiwgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgNzYsIDg0LCAxMjgsIAorICAgIDY5LCA3NiwgNzYsIDczLCA4MCwgODQsIDczLCAxOTUsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDczLCA4MywgMTI4LCA2OSwgCisgICAgNzYsIDc2LCA3MywgODAsIDgzLCA2OSwgMTI4LCA2OSwgNzYsIDczLCA3MCwgNzMsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCAKKyAgICA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgMTI4LCA2OSwgNzYsIAorICAgIDY5LCA4NiwgNjksIDIwNiwgNjksIDc2LCA2OSwgODAsIDcyLCA2NSwgNzgsIDg0LCAxMjgsIDY5LCA3NiwgNjksIDc3LCA2OSwgCisgICAgNzgsIDIxMiwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCAKKyAgICA3MywgMTk1LCA2OSwgNzYsIDY1LCA3MCwgODIsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCA4NCwgODIsIDY5LCA4MCwgODQsIAorICAgIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCAxMjgsIDY5LCA3NSwgNzAsIDc5LCA3OCwgNzMsIDg0LCA3MywgNzUsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjksIDc0LCA2OSwgNjcsIDIxMiwgNjksIDczLCA4MywgMTI4LCA2OSwgCisgICAgNzMsIDcxLCA3MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgMjE3LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAKKyAgICA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAyMTEsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDEyOCwgNjksIAorICAgIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCAyMDYsIDY5LCA3MywgCisgICAgNzEsIDcyLCA4NCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDczLCA2OSwgMTI4LCA2OSwgNzIsIDg3LCAKKyAgICA2NSwgMjE4LCA2OSwgNzEsIDg5LCA4MCwgODQsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgNzMsIAorICAgIDgyLCAxMjgsIDY5LCA3MSwgNzEsIDEyOCwgNjksIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDY5LCA3NSwgCisgICAgNjUsIDY1LCAxMjgsIDY5LCA2OSwgNzIsIDEyOCwgNjksIDY5LCA2NiwgNjksIDY5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKKyAgICA2OSwgNjgsIDczLCA4NCwgNzksIDgyLCA3MywgNjUsIDIwNCwgNjksIDY4LCA3MywgNzgsIDEyOCwgNjksIDY4LCA2OCwgCisgICAgMTI4LCA2OSwgNjYsIDY5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAyMDYsIDY5LCAKKyAgICA2NSwgODMsIDIxMiwgNjksIDY1LCA4MiwgODQsIDcyLCA3NiwgMjE3LCA2OSwgNjUsIDgyLCA4NCwgNzIsIDEyOCwgNjksIAorICAgIDY1LCA4MiwgODQsIDIwMCwgNjksIDY1LCA4MiwgODMsIDEyOCwgNjksIDY1LCA4MiwgNzYsIDIxNywgNjksIDY1LCA3NywgCisgICAgNzIsIDY1LCA3OCwgNjcsIDcyLCA3OSwgNzYsIDc2LCAxMjgsIDY5LCA2NSwgNzEsIDc2LCA2OSwgMTI4LCA2OSwgNjUsIDY4LCAKKyAgICA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgNjUsIDY2LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgMTc4LCA2OSwgNDgsIAorICAgIDUxLCA1NiwgMTI4LCA2OSwgNDgsIDUxLCA1NSwgMTI4LCA2OSwgNDgsIDUxLCA1NCwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgCisgICAgNjUsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDEyOCwgNjksIDQ4LCA1MSwgNTEsIDEyOCwgNjksIDQ4LCA1MSwgNTAsIDEyOCwgCisgICAgNjksIDQ4LCA1MSwgNDksIDEyOCwgNjksIDQ4LCA1MSwgNDgsIDEyOCwgNjksIDQ4LCA1MCwgNTcsIDEyOCwgNjksIDQ4LCAKKyAgICA1MCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCAxMjgsIDY5LCA0OCwgNTAsIDU1LCAxMjgsIDY5LCA0OCwgNTAsIAorICAgIDU0LCAxMjgsIDY5LCA0OCwgNTAsIDUzLCAxMjgsIDY5LCA0OCwgNTAsIDUyLCAxMjgsIDY5LCA0OCwgNTAsIDUxLCAxMjgsIAorICAgIDY5LCA0OCwgNTAsIDUwLCAxMjgsIDY5LCA0OCwgNTAsIDQ5LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA2OSwgCisgICAgNDgsIDUwLCA0OCwgMTI4LCA2OSwgNDgsIDQ5LCA1NywgMTI4LCA2OSwgNDgsIDQ5LCA1NiwgMTI4LCA2OSwgNDgsIDQ5LCAKKyAgICA1NSwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDY5LCA0OCwgNDksIAorICAgIDU0LCAxMjgsIDY5LCA0OCwgNDksIDUzLCAxMjgsIDY5LCA0OCwgNDksIDUyLCAxMjgsIDY5LCA0OCwgNDksIDUxLCAxMjgsIAorICAgIDY5LCA0OCwgNDksIDUwLCAxMjgsIDY5LCA0OCwgNDksIDQ5LCAxMjgsIDY5LCA0OCwgNDksIDQ4LCAxMjgsIDY5LCA0OCwgCisgICAgNDgsIDU3LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjksIDQ4LCAKKyAgICA0OCwgNTYsIDEyOCwgNjksIDQ4LCA0OCwgNTUsIDEyOCwgNjksIDQ4LCA0OCwgNTQsIDEyOCwgNjksIDQ4LCA0OCwgNTMsIAorICAgIDEyOCwgNjksIDQ4LCA0OCwgNTIsIDEyOCwgNjksIDQ4LCA0OCwgNTEsIDEyOCwgNjksIDQ4LCA0OCwgNTAsIDEyOCwgNjksIAorICAgIDQ4LCA0OCwgNDksIDEyOCwgNjksIDQ1LCA3NywgNjUsIDczLCAyMDQsIDY4LCA5MCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgCisgICAgOTAsIDY1LCAxMjgsIDY4LCA5MCwgODcsIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgNjgsIDkwLCA3OSwgMTI4LCA2OCwgCisgICAgOTAsIDc0LCA2OSwgMTI4LCA2OCwgOTAsIDczLCAxMjgsIDY4LCA5MCwgNzIsIDY5LCAxMjgsIDY4LCA5MCwgNzIsIDY1LCAKKyAgICAxMjgsIDY4LCA5MCwgNjksIDc2LCA3OSwgMTI4LCA2OCwgOTAsIDY5LCA2OSwgMTI4LCA2OCwgOTAsIDY5LCAxMjgsIDY4LCAKKyAgICA5MCwgNjUsIDY1LCAxMjgsIDY4LCA5MCwgNjUsIDEyOCwgNjgsIDkwLCAxMjgsIDY4LCAyMTgsIDY4LCA4OSwgNzksIDEyOCwgCisgICAgNjgsIDg5LCAyMDcsIDY4LCA4OSwgNjksIDcyLCAxMjgsIDY4LCA4OSwgNjksIDIwMCwgNjgsIDg3LCA3OSwgMTI4LCA2OCwgCisgICAgODcsIDY5LCAxMjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDg2LCA3MywgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY4LCAKKyAgICA4NiwgNjgsIDEyOCwgNjgsIDg2LCAxMjgsIDY4LCA4NSwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDg1LCA4MywgNzUsIAorICAgIDEyOCwgNjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA4NSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2OCwgODUsIDgyLCA1MCwgMTI4LCA2OCwgODUsIDgwLCA3OSwgNzgsIDY4LCA3MywgODUsIDIxMSwgNjgsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgODUsIDc4LCA1MiwgMTI4LCA2OCwgODUsIDc4LCA1MSwgMTI4LCAKKyAgICA2OCwgODUsIDc4LCAxNzksIDY4LCA4NSwgNzcsIDEyOCwgNjgsIDg1LCAyMDQsIDY4LCA4NSwgNzIsIDEyOCwgNjgsIDg1LCAKKyAgICA3MSwgODUsIDY4LCAxMjgsIDY4LCA4NSwgNjYsIDUwLCAxMjgsIDY4LCA4NSwgNjYsIDEyOCwgNjgsIDg1LCAxOTQsIDY4LCAKKyAgICA4MiwgODksIDEyOCwgNjgsIDgyLCAyMTcsIDY4LCA4MiwgODUsIDc3LCAxMjgsIDY4LCA4MiwgODUsIDIwNSwgNjgsIDgyLCAKKyAgICA3OSwgODAsIDgzLCAxMjgsIDY4LCA4MiwgNzksIDgwLCA3NiwgNjksIDg0LCAxMjgsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIAorICAgIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgNjgsIDgyLCA3OSwgNzcsIDY5LCA2OCwgNjUsIDgyLCAyMTcsIDY4LCA4MiwgCisgICAgNzMsIDg2LCA2OSwgMTI4LCA2OCwgODIsIDczLCA4NiwgMTk3LCA2OCwgODIsIDczLCA3OCwgNzUsIDEyOCwgNjgsIDgyLCAKKyAgICA3MywgMjA0LCA2OCwgODIsIDY5LCA4MywgODMsIDEyOCwgNjgsIDgyLCA2NSwgODUsIDcxLCA3MiwgODQsIDIxMSwgNjgsIAorICAgIDgyLCA2NSwgNzcsIDEyOCwgNjgsIDgyLCA2NSwgMjA1LCA2OCwgODIsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDY4LCA4MiwgCisgICAgNjUsIDcxLCA3OSwgMjA2LCA2OCwgODIsIDY1LCA3MCwgODQsIDczLCA3OCwgMTk5LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAKKyAgICA2NSwgODMsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgCisgICAgMTkzLCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCAKKyAgICA2OCwgMjExLCA2OCwgNzksIDg3LCA3OCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDY4LCA3OSwgODcsIAorICAgIDc4LCAxMjgsIDY4LCA3OSwgODYsIDY5LCAxMjgsIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgCisgICAgNzksIDg1LCA2NiwgODQsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAKKyAgICA0NSwgNzYsIDczLCA3OCwgMTk3LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIAorICAgIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODQsIDY5LCA2OCwgNDUsIDc4LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4NCwgNjksIDY4LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIAorICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCisgICAgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKKyAgICA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKKyAgICA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAKKyAgICA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MCwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTAsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTQsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAorICAgIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgCisgICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKKyAgICA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTAsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgCisgICAgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MCwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU1LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgCisgICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUwLCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU0LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAorICAgIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCisgICAgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgCisgICAgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgCisgICAgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTAsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUwLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCisgICAgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCA1NSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIAorICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDU1LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCAKKyAgICA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTQsIDU1LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIAorICAgIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCisgICAgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU0LCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCAKKyAgICA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCAKKyAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NCwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIAorICAgIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCisgICAgNTAsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MCwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU0LCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTAsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTAsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTQsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MCwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgCisgICAgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgCisgICAgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MCwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIAorICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUwLCA1MSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU1LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCisgICAgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCisgICAgNTAsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTAsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU0LCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUwLCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgCisgICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCisgICAgNTAsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDEyOCwgNjgsIDc5LCA4NCwgNzYsIDY5LCA4MywgMjExLCA2OCwgNzksIDgyLCA4NSwgMTI4LCA2OCwgNzksIDc5LCAKKyAgICA4MiwgMTI4LCA2OCwgNzksIDc5LCA3OCwgNzEsIDEyOCwgNjgsIDc5LCA3OCwgNzEsIDEyOCwgNjgsIDc5LCA3NywgNjUsIAorICAgIDczLCAyMDYsIDY4LCA3OSwgNzYsIDgwLCA3MiwgNzMsIDc4LCAxMjgsIDY4LCA3OSwgNzYsIDc2LCA4MywgMTI4LCA2OCwgCisgICAgNzksIDc2LCA3NiwgNjUsIDIxMCwgNjgsIDc5LCA3NiwgNzMsIDg1LCA3NywgMTI4LCA2OCwgNzksIDc1LCA3NywgNjUsIDczLCAKKyAgICAxMjgsIDY4LCA3OSwgNzMsIDg0LCAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIDY4LCA3OSwgNjksIDIxMSwgCisgICAgNjgsIDc5LCA2OCwgNjksIDc1LCA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjYsIDgyLCA3OSwgMTI4LCA2OCwgNzksIDY1LCAKKyAgICA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCA2OSwgNjksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgCisgICAgNjksIDE5NywgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNzksIDQ1LCA3OSwgMTI4LCA2OCwgNzcsIDEyOCwgNjgsIDIwNSwgNjgsIAorICAgIDc2LCA4NSwgMTI4LCA2OCwgNzYsIDc5LCAxMjgsIDY4LCA3NiwgNzMsIDEyOCwgNjgsIDc2LCA3MiwgODksIDY1LCAxMjgsIAorICAgIDY4LCA3NiwgNzIsIDY1LCAxMjgsIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIDEyOCwgNjgsIDc2LCAxMjgsIAorICAgIDY4LCA3NSwgNjUsIDgyLCAxMjgsIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIDg2LCA3MywgMTI4LCA2OCwgCisgICAgNzQsIDY5LCA4MiwgODYsIDEyOCwgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIDY4LCA3MywgOTAsIDkwLCAKKyAgICAyMTcsIDY4LCA3MywgODYsIDc5LCA4MiwgNjcsIDE5NywgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIAorICAgIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgODYsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgyLCAxMjgsIAorICAgIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTI4LCA2OCwgNzMsIDg2LCA3MywgCisgICAgNjgsIDE5NywgNjgsIDczLCA4NiwgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIDEyOCwgNjgsIDczLCA4NCwgODQsIAorICAgIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3OCwgCisgICAgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDY4LCA3MywgODMsIDgzLCAKKyAgICA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgMTI4LCA2OCwgNzMsIAorICAgIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA3NSwgMTI4LCA2OCwgNzMsIDgzLCA3MywgCisgICAgNzcsIDc5LCA4NSwgMTI4LCA2OCwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCAKKyAgICA4NSwgNzksIDg1LCAyMTEsIDY4LCA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgNjUsIDgwLCA4MCwgNzksIDczLCA3OCwgODQsIAorICAgIDY5LCAxOTYsIDY4LCA3MywgODMsIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3MywgODIsIDcxLCAxOTMsIDY4LCA3MywgCisgICAgODIsIDY5LCA2NywgODQsIDc2LCAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCAKKyAgICA3MywgODAsIDg0LCA2OSwgMTI4LCA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIDc2LCA3OSwgODUsIAorICAgIDc4LCAxMjgsIDY4LCA3MywgODAsIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgNzMsIDc4LCA3MSwgCisgICAgNjYsIDY1LCAyMTIsIDY4LCA3MywgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDc3LCAKKyAgICA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgCisgICAgNzksIDc4LCA0NSwgNTAsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA0OSwgMTI4LCAKKyAgICA2OCwgNzMsIDc3LCA3MywgNzgsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgNzcsIDczLCA2OCwgCisgICAgNzMsIDE5MywgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA3NywgNjksIDc4LCAKKyAgICA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIDczLCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgCisgICAgNzksIDIxMSwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAyMDUsIDY4LCAKKyAgICA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA2OCwgNzMsIAorICAgIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNzMsIDcxLCAxOTMsIDY4LCA3MywgNzAsIDg0LCA3OSwgNzEsIDcxLCA3OSwgCisgICAgMjExLCA2OCwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCAKKyAgICA4NCwgMjE3LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCA3MywgNjksIDgzLCAxMjgsIDY4LCA3MywgNzAsIAorICAgIDcwLCA2OSwgODIsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCAKKyAgICA2NywgMTk3LCA2OCwgNzMsIDcwLCA2NSwgODQsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIAorICAgIDY5LCA4MywgNzMsIDIxMSwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgNjYsIDEyOCwgNjgsIAorICAgIDczLCA2NSwgODQsIDc5LCA3OCwgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAyMDEsIDY4LCA3MywgCisgICAgNjUsIDgzLCA4NCwgNzksIDc2LCAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgMTI4LCA2OCwgNzMsIDY1LCAKKyAgICA3NywgNzksIDc4LCA2OCwgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCA3MywgNjUsIDc3LCA2OSwgODQsIAorICAgIDY5LCAyMTAsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgCisgICAgNzMsIDc1LCAxOTMsIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCAKKyAgICA2NSwgNzYsIDEyOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIAorICAgIDczLCA5MCwgNjksIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIDY1LCA2OSwgCisgICAgODIsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCAKKyAgICA3OSwgMTI4LCA2OCwgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCA3OSwgMTI4LCAKKyAgICA2OCwgNzIsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjgsIAorICAgIDcyLCA3MiwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA2NSwgCisgICAgODIsIDc3LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjUsIDg0LCAKKyAgICA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNjUsIAorICAgIDY1LCA3NiwgODUsIDEyOCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIDkwLCAyMDAsIAogICAgIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTMsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTEsIDY4LCA2OSwgCiAgICAgODgsIDczLCA2NSwgMTI4LCA2OCwgNjksIDg2LCA3MywgNjcsIDE5NywgNjgsIDY5LCA4NiwgNjksIDc2LCA3OSwgODAsIDc3LCAKICAgICA2OSwgNzgsIDg0LCAxMjgsIDY4LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA2OCwgNjksIDgzLCAyMDMsIDY4LCA2OSwgODMsIApAQCAtMzg3OSwxNjEgKzQwNDAsMTY0IEBACiAgICAgNjgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY4LCA2NSwgODgsIDEyOCwgNjgsIDY4LCA2NSwgODQsIAogICAgIDEyOCwgNjgsIDY4LCA2NSwgODAsIDEyOCwgNjgsIDY4LCA2NSwgNzYsIDEyOCwgNjgsIDY4LCA2NSwgMjA0LCA2OCwgNjgsIAogICAgIDY1LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDcyLCA2NSwgMjA0LCA2OCwgNjgsIDY1LCA2NSwgMTI4LCA2OCwgCi0gICAgMTk0LCA2OCwgNjUsIDg5LCA0NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY4LCA2NSwgMjE3LCA2OCwgNjUsIDg2LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDY4LCAxMjgsIDY4LCA2NSwgODQsIDE5NywgNjgsIAotICAgIDY1LCA4MywgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODMsIDcyLCA2OSwgMTk2LCA2OCwgNjUsIDgzLCA3MiwgMTI4LCA2OCwgCi0gICAgNjUsIDgzLCAyMDAsIDY4LCA2NSwgODMsIDY5LCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MiwgODQsIDEyOCwgNjgsIDY1LCAKLSAgICA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDE5OSwgNjgsIAotICAgIDY1LCA4MiwgMjAzLCA2OCwgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUyLCAxMjgsIDY4LCA2NSwgCi0gICAgODIsIDY1LCA1MSwgMTI4LCA2OCwgNjUsIDgyLCAxMjgsIDY4LCA2NSwgODAsIDQ1LCA4MCwgODIsIDY1LCAyMDUsIDY4LCAKLSAgICA2NSwgODAsIDQ1LCA4MCwgNzMsIDIwMSwgNjgsIDY1LCA4MCwgNDUsIDc3LCA4NSwgNzksIDIxNywgNjgsIDY1LCA4MCwgNDUsIAotICAgIDY2LCA4NSwgNzksIDIwNiwgNjgsIDY1LCA4MCwgNDUsIDY2LCA2OSwgMjAxLCA2OCwgNjUsIDIwOCwgNjgsIDY1LCA3OCwgCi0gICAgODQsIDY1LCA3NCwgMTkzLCA2OCwgNjUsIDc4LCA3MSwgNzksIDEyOCwgNjgsIDY1LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCAKLSAgICA3OCwgMTk5LCA2OCwgNjUsIDc4LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIAotICAgIDc3LCA4MCwgMTI4LCA2OCwgNjUsIDc3LCAyMDgsIDY4LCA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCA3OCwgMTI4LCA2OCwgCi0gICAgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgMjA2LCA2OCwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDY1LCA3NywgNzcsIAotICAgIDE5MywgNjgsIDY1LCA3NywgNjUsIDgyLCA4NSwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgCi0gICAgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgMjEyLCA2OCwgNjUsIDc2LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCAKLSAgICA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDIwMCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAxMjgsIAotICAgIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgCi0gICAgODMsIDcyLCA0NSwgNTAsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCAKLSAgICA4MywgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIDEyOCwgNjgsIAotICAgIDY1LCA3MSwgNjksIDgzLCAyMDAsIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2NSwgCi0gICAgNzEsIDY1LCAyMTgsIDY4LCA2NSwgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCAKLSAgICA3OCwgNzEsIDEyOCwgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCAKLSAgICA4MywgODUsIDEyOCwgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIAotICAgIDQ4LCA1NCwgNTUsIDcxLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgCi0gICAgNjgsIDQ4LCA1NCwgNTUsIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIAotICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIAotICAgIDY4LCA0OCwgNTQsIDUzLCAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgCi0gICAgNTQsIDUwLCAxMjgsIDY4LCA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAKLSAgICAxMjgsIDY4LCA0OCwgNTMsIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDUzLCAxMjgsIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIAotICAgIDUzLCA1MSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgCi0gICAgNDksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA0OCwgNzEsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIAotICAgIDUzLCA0OCwgNjgsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgCi0gICAgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MiwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIAotICAgIDU0LCA2NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgCi0gICAgMTI4LCA2OCwgNDgsIDUyLCA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgCi0gICAgNDgsIDUyLCA0OCwgMTI4LCA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCAKLSAgICA1NSwgMTI4LCA2OCwgNDgsIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIAotICAgIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIAotICAgIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgCi0gICAgNTAsIDU3LCAxMjgsIDY4LCA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA2OCwgNDgsIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA2OCwgNDgsIDUwLCA1MSwgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA2OCwgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA2OCwgNDgsIDQ5LCA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgCi0gICAgNDgsIDQ5LCA1MSwgMTI4LCA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCAKLSAgICA0OCwgMTI4LCA2OCwgNDgsIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgNjgsIDQ4LCA0OCwgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNjcsIDg5LCA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgCi0gICAgODIsIDY5LCA3OCwgNjUsIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCAKLSAgICA2NywgODksIDgwLCA2OSwgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIAotICAgIDgyLCA3MywgNjcsIDczLCA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgCi0gICAgMTI4LCA2NywgODksIDEyOCwgNjcsIDg3LCA3OSwgNzksIDEyOCwgNjcsIDg3LCA3OSwgMTI4LCA2NywgODcsIDczLCA3MywgCi0gICAgMTI4LCA2NywgODcsIDczLCAxMjgsIDY3LCA4NywgNjksIDc5LCA4MiwgODQsIDcyLCAxMjgsIDY3LCA4NywgNjksIDEyOCwgCi0gICAgNjcsIDg3LCA2NSwgNjUsIDEyOCwgNjcsIDg1LCA4OCwgMTI4LCA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIDc5LCAKLSAgICA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgNjksIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgNjgsIAotICAgIDEyOCwgNjcsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCA4NiwgCi0gICAgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgODIsIDg2LCAxOTcsIDY3LCA4NSwgODIsIDgyLCAKLSAgICAyMTcsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDIxMiwgNjcsIAotICAgIDg1LCA4MiwgNzYsIDIxNywgNjcsIDg1LCA4MiwgNzYsIDEyOCwgNjcsIDg1LCA4MiwgMTI4LCA2NywgODUsIDgwLCAxMjgsIAotICAgIDY3LCA4NSwgNzksIDg4LCAxMjgsIDY3LCA4NSwgNzksIDgwLCAxMjgsIDY3LCA4NSwgNzksIDEyOCwgNjcsIDg1LCAyMDUsIAotICAgIDY3LCA4NSwgNjYsIDY5LCA2OCwgMTI4LCA2NywgODUsIDY2LCAxOTcsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgCi0gICAgNzksIDEyOCwgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCAyMDcsIDY3LCA4NSwgMTI4LCA2NywgODIsIDg5LCAKLSAgICA4MywgODQsIDY1LCAyMDQsIDY3LCA4MiwgODksIDgwLCA4NCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzMsIDE5NSwgNjcsIAotICAgIDgyLCA4OSwgNzMsIDc4LCAxOTksIDY3LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCAyMDcsIDY3LCA4MiwgODUsIDY3LCA3MywgCi0gICAgNjYsIDc2LCA2OSwgNDUsIDUzLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCAKLSAgICA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgCi0gICAgNDUsIDUwLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIAotICAgIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAKLSAgICAxOTksIDY3LCA4MiwgNzksIDgzLCA4MywgNzIsIDY1LCA4NCwgNjcsIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIAotICAgIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgCi0gICAgNjYsIDc5LCA3OCwgNjksIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCAKLSAgICA2NywgODIsIDc5LCA4MCwgMTI4LCA2NywgODIsIDc5LCA3MywgODgsIDEyOCwgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIAotICAgIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgNjksIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCAKLSAgICAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAyMTIsIDY3LCA4MiwgNjksIDY4LCA3MywgMjEyLCA2NywgODIsIAotICAgIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIDY5LCA2NSwgNzcsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgCi0gICAgODIsIDEyOCwgNjcsIDc5LCA4OCwgMTI4LCA2NywgNzksIDg3LCAxMjgsIDY3LCA3OSwgMjE1LCA2NywgNzksIDg2LCA2OSwgCi0gICAgODIsIDEyOCwgNjcsIDc5LCA4NSwgODAsIDc2LCAxOTcsIDY3LCA3OSwgODUsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDY3LCAKLSAgICA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgNzMsIDc4LCA3NSwgMTI4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgCi0gICAgNjYsIDc5LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDY3LCA3MywgMjA0LCA2NywgNzksIDg0LCAxMjgsIDY3LCAKLSAgICA3OSwgODIsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDY4LCAyMTEsIDY3LCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAxMjgsIAotICAgIDY3LCA3OSwgODIsIDgwLCA4MywgNjksIDEyOCwgNjcsIDc5LCA4MiwgODAsIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDY3LCA3OSwgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgODIsIDgzLCAxMjgsIAotICAgIDY3LCA3OSwgODIsIDc4LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCAyMTAsIDY3LCA3OSwgODAsIDg5LCA4MiwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCAyMTIsIDY3LCA3OSwgODAsIDg5LCAKLSAgICAxMjgsIDY3LCA3OSwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgNDUsIAotICAgIDUwLCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MCwgMTI4LCA2NywgNzksIDc5LCA3NiwgCi0gICAgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDY5LCAxMjgsIDY3LCAKLSAgICA3OSwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzksIDc5LCAxMjgsIDY3LCA3OSwgNzgsIDg2LCA2OSwgODIsIDcxLCA3MywgNzgsIAotICAgIDE5OSwgNjcsIDc5LCA3OCwgODYsIDY5LCA3OCwgNzMsIDY5LCA3OCwgNjcsIDE5NywgNjcsIDc5LCA3OCwgODQsIDgyLCA3OSwgCi0gICAgNzYsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDgyLCA3OSwgMjA0LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA4MiwgNzMsIDY5LCAKLSAgICA4NCwgODksIDEyOCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIAotICAgIDg0LCA3OSwgODUsIDgyLCA2OSwgMTk2LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCAyMTAsIDY3LCA3OSwgNzgsIDg0LCA2OSwgCi0gICAgNzgsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzcsIDgwLCA3NiwgNjUsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAyMTEsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA3MywgCi0gICAgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgMjA2LCA2NywgNzksIDc4LCA4NCwgNjUsIDY3LCA4NCwgMTI4LCAKLSAgICA2NywgNzksIDc4LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgCi0gICAgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCAKLSAgICA2NywgODksIDEyOCwgNjcsIDc5LCA3OCwgODMsIDc5LCA3OCwgNjUsIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDgzLCA2OSwgNjcsIAotICAgIDg1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgCi0gICAgNzksIDc4LCA3NCwgODUsIDcxLCA2NSwgODQsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDczLCA3OCwgMTk5LCAKLSAgICA2NywgNzksIDc4LCA3MywgNjcsIDY1LCAyMDQsIDY3LCA3OSwgNzgsIDcxLCA4MiwgODUsIDY5LCA3OCwgMjEyLCA2NywgNzksIAotICAgIDc4LCA3MSwgODIsIDY1LCA4NCwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgNzAsIDc5LCAKLSAgICA4NSwgNzgsIDY4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MCwgNzYsIDczLCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgNzAsIAotICAgIDY5LCA4NCwgODQsIDIwMSwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MywgNzMsIDY4LCA2OSwgMTk2LCA2NywgCi0gICAgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDgwLCAKLSAgICA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgNzcsIDY5LCAKLSAgICA3OCwgODQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDY1LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA3NywgNzcsIDc5LCAyMDYsIAotICAgIDY3LCA3OSwgNzcsIDc3LCA2OSwgODIsIDY3LCA3MywgNjUsIDIwNCwgNjcsIDc5LCA3NywgNzcsIDY1LCAxMjgsIDY3LCA3OSwgCi0gICAgNzcsIDc3LCAxOTMsIDY3LCA3OSwgNzcsIDY5LCA4NCwgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIDc2LCAKLSAgICA4NSwgNzcsIDc4LCAxMjgsIDY3LCA3OSwgNzYsIDc5LCA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgNzksIAotICAgIDIwNiwgNjcsIDc5LCA3NiwgNzYsIDEyOCwgNjcsIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNjksIDc4LCA3MSwgMTI4LCA2NywgNzksIDY4LCA2NSwgMTI4LCA2NywgNzksIDY3LCA3NSwgODQsIDY1LCA3MywgCi0gICAgMjA0LCA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDY1LCAxMjgsIDY3LCA3OSwgMTI4LCA2NywgCi0gICAgNzcsIDEyOCwgNjcsIDIwNSwgNjcsIDc2LCA4NSwgODMsIDg0LCA2OSwgMjEwLCA2NywgNzYsIDg1LCA2NiwgODMsIDEyOCwgCi0gICAgNjcsIDc2LCA4NSwgNjYsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc2LCA4NSwgNjYsIDEyOCwgNjcsIDc2LCAKLSAgICA4NSwgMTk0LCA2NywgNzYsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNzksIDg1LCA2OCwgMTI4LCA2NywgNzYsIAotICAgIDc5LCA4NSwgMTk2LCA2NywgNzYsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NywgNzYsIDc5LCA4NCwgNzIsIDEyOCwgCi0gICAgNjcsIDc2LCA3OSwgODMsIDY5LCA4NCwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY3LCAKLSAgICA3NiwgNzksIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIAotICAgIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCAyMDMsIDY3LCA3NiwgNzMsIDg2LCA3MywgODMsIDEyOCwgNjcsIDc2LCA3MywgCi0gICAgODAsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA2NywgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCAKLSAgICA3OCwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3NywgNjUsIDY3LCA4NSwgODMsIDEyOCwgNjcsIDc2LCA3MywgNzAsIAotICAgIDcwLCAxMjgsIDY3LCA3NiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDUwLCAxMjgsIDY3LCA3NiwgCi0gICAgNjksIDcwLCA0NSwgNDksIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDEyOCwgNjcsIDc2LCA2OSwgMTk4LCA2NywgNzYsIDY5LCAKLSAgICA2NSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDY5LCA2NSwgMjEwLCA2NywgNzYsIDY1LCA4NywgMTI4LCA2NywgNzYsIAotICAgIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA2NywgNzYsIDY1LCA4MCwgODAsIDY5LCAyMTAsIDY3LCA3NiwgNjUsIDc4LCAKLSAgICAxMjgsIDY3LCA3NiwgNjUsIDczLCA3NywgMTI4LCA2NywgNzYsIDEyOCwgNjcsIDczLCA4OCwgMTI4LCA2NywgNzMsIDg2LCAKLSAgICA3MywgNzYsIDczLCA2NSwgNzgsIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCAxOTcsIDY3LCA3MywgODQsIAotICAgIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCAyMTEsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDg4LCAKLSAgICAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDIxNiwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIAotICAgIDg0LCA3MywgNzksIDIwNiwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgCi0gICAgMTI4LCA2NywgNzMsIDgwLCAxMjgsIDY3LCA3MywgNzgsIDc4LCA2NSwgNjYsIDY1LCA4MiwgMTI4LCA2NywgNzMsIDc4LCAKLSAgICA2OSwgNzcsIDY1LCAxMjgsIDY3LCA3MywgNzMsIDEyOCwgNjcsIDczLCA2OSwgODgsIDEyOCwgNjcsIDczLCA2OSwgODUsIAotICAgIDY3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCAKLSAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDczLCA2OSwgODUsIDc4LCA3MSwgCi0gICAgMTI4LCA2NywgNzMsIDY5LCA4NSwgMTk1LCA2NywgNzMsIDY5LCA4NCwgMTI4LCA2NywgNzMsIDY5LCA4MCwgMTI4LCA2NywgCi0gICAgNzMsIDY5LCAxMjgsIDY3LCA3MywgMTI4LCA2NywgNzIsIDg5LCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4NCwgMTI4LCA2NywgCi0gICAgNzIsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4OSwgODIsIDEyOCwgNjcsIDcyLCA4OSwgODAsIDEyOCwgNjcsIDcyLCAKLSAgICA4NSwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA2NywgNzIsIDEyOCwgNjcsIAotICAgIDcyLCA4NSwgODIsIDEyOCwgNjcsIDcyLCA4NSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDg4LCAxMjgsIDY3LCA3MiwgCi0gICAgODUsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDEyOCwgNjcsIDcyLCAKLSAgICA4NSwgNzYsIDY1LCAxMjgsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDcyLCA4MiwgODksIDgzLCA2NSwgNzgsIDg0LCA3MiwgNjksIAotICAgIDc3LCA4NSwgNzcsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgCi0gICAgNzgsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc3LCAxOTMsIDY3LCA3MiwgODIsIDc5LCAxOTMsIDY3LCA3MiwgODIsIDczLCAKLSAgICA4NiwgNzMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIDgzLCA4NCwgNzcsIDY1LCA4MywgMTI4LCA2NywgNzIsIDgyLCA3MywgODMsIAotICAgIDg0LCA3NywgNjUsIDIxMSwgNjcsIDcyLCA3OSwgODgsIDEyOCwgNjcsIDcyLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA3OSwgCi0gICAgODIsIDY5LCA4NiwgNzcsIDE5MywgNjcsIDcyLCA3OSwgODAsIDEyOCwgNjcsIDcyLCA3OSwgNzUsIDY5LCAxMjgsIDY3LCAKLSAgICA3MiwgNzksIDY5LCAxMjgsIDY3LCA3MiwgNzksIDY3LCA3OSwgNzYsIDY1LCA4NCwgMTk3LCA2NywgNzIsIDc5LCA2NSwgCisgICAgNjcsIDgzLCAxMjgsIDY4LCA2NywgNTIsIDEyOCwgNjgsIDY3LCA1MSwgMTI4LCA2OCwgNjcsIDUwLCAxMjgsIDY4LCA2NywgCisgICAgNDksIDEyOCwgNjgsIDE5NCwgNjgsIDY1LCA4OSwgNDUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2OCwgNjUsIDIxNywgCisgICAgNjgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY4LCA2NSwgODYsIDczLCA2OCwgMTI4LCA2OCwgNjUsIDg0LCAKKyAgICAxOTcsIDY4LCA2NSwgODMsIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgzLCA3MywgMTkzLCA2OCwgNjUsIDgzLCA3MiwgNjksIAorICAgIDE5NiwgNjgsIDY1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA4MywgMjAwLCA2OCwgNjUsIDgzLCA2OSwgNzMsIDY1LCAxMjgsIAorICAgIDY4LCA2NSwgODIsIDg0LCAxMjgsIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA4MiwgCisgICAgNzUsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDY4LCA2NSwgODIsIDIwMywgNjgsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDY4LCAKKyAgICA2NSwgODIsIDY1LCA1MiwgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTEsIDEyOCwgNjgsIDY1LCA4MiwgMTI4LCA2OCwgNjUsIAorICAgIDgwLCA0NSwgODAsIDgyLCA2NSwgMjA1LCA2OCwgNjUsIDgwLCA0NSwgODAsIDczLCAyMDEsIDY4LCA2NSwgODAsIDQ1LCA3NywgCisgICAgODUsIDc5LCAyMTcsIDY4LCA2NSwgODAsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDY4LCA2NSwgODAsIDQ1LCA2NiwgNjksIAorICAgIDIwMSwgNjgsIDY1LCAyMDgsIDY4LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNjgsIDY1LCA3OCwgNzEsIDc5LCAxMjgsIAorICAgIDY4LCA2NSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzgsIDE5OSwgNjgsIDY1LCA3OCwgNjgsIDY1LCAxMjgsIDY4LCA2NSwgCisgICAgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3NywgODAsIDEyOCwgNjgsIDY1LCA3NywgMjA4LCA2OCwgNjUsIDc3LCAKKyAgICA3NywgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDIwNiwgNjgsIDY1LCA3NywgNzcsIAorICAgIDY1LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA2NSwgNzcsIDY1LCA4MiwgODUsIDEyOCwgNjgsIDY1LCA3NiwgCisgICAgNjksIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDIxMiwgNjgsIDY1LCAKKyAgICA3NiwgNjgsIDY1LCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAyMDAsIAorICAgIDY4LCA2NSwgNzYsIDY1LCA4NCwgMTI4LCA2OCwgNjUsIDczLCA4MiwgMTI4LCA2OCwgNjUsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgNDUsIDUwLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIAorICAgIDg1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgODMsIDEyOCwgNjgsIDY1LCA3MSwgNzEsIDY5LCA4MiwgMTI4LCA2OCwgCisgICAgNjUsIDcxLCA3MSwgNjksIDIxMCwgNjgsIDY1LCA3MSwgNjksIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA2OSwgODMsIAorICAgIDIwMCwgNjgsIDY1LCA3MSwgNjYsIDY1LCA4MywgNzMsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgNjUsIDIxOCwgCisgICAgNjgsIDY1LCA3MSwgNjUsIDc2LCA3MSwgNjUsIDEyOCwgNjgsIDY1LCAxOTksIDY4LCA2NSwgNjksIDc4LCA3MSwgMTI4LCAKKyAgICA2OCwgNjUsIDY5LCAxOTksIDY4LCA2NSwgNjgsIDEyOCwgNjgsIDY1LCAxOTYsIDY4LCA2NSwgNjUsIDgzLCA4NSwgMTI4LCAKKyAgICA2OCwgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MiwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzEsIAorICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcwLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2OSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgCisgICAgNjgsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY3LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NiwgMTI4LCA2OCwgNDgsIDU0LCAKKyAgICA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDEyOCwgNjgsIDQ4LCA1NCwgNTQsIDEyOCwgNjgsIDQ4LCA1NCwgNTMsIAorICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTIsIDEyOCwgNjgsIDQ4LCA1NCwgNTEsIDEyOCwgNjgsIDQ4LCA1NCwgNTAsIDEyOCwgNjgsIAorICAgIDQ4LCA1NCwgNDksIDEyOCwgNjgsIDQ4LCA1NCwgNDgsIDEyOCwgNjgsIDQ4LCA1MywgNTcsIDEyOCwgNjgsIDQ4LCA1MywgCisgICAgNTYsIDEyOCwgNjgsIDQ4LCA1MywgNTUsIDEyOCwgNjgsIDQ4LCA1MywgNTQsIDEyOCwgNjgsIDQ4LCA1MywgNTMsIDEyOCwgCisgICAgNjgsIDQ4LCA1MywgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUyLCAxMjgsIDY4LCA0OCwgNTMsIDUxLCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDUwLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgMTI4LCA2OCwgNDgsIDUzLCA0OSwgMTI4LCA2OCwgNDgsIAorICAgIDUzLCA0OCwgNzMsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcyLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MSwgMTI4LCA2OCwgCisgICAgNDgsIDUzLCA0OCwgNzAsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY5LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OCwgMTI4LCAKKyAgICA2OCwgNDgsIDUzLCA0OCwgNjcsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NSwgCisgICAgMTI4LCA2OCwgNDgsIDUzLCA0OCwgMTI4LCA2OCwgNDgsIDUyLCA1NywgMTI4LCA2OCwgNDgsIDUyLCA1NiwgNjUsIDEyOCwgCisgICAgNjgsIDQ4LCA1MiwgNTYsIDEyOCwgNjgsIDQ4LCA1MiwgNTUsIDEyOCwgNjgsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDY4LCAKKyAgICA0OCwgNTIsIDU0LCAxMjgsIDY4LCA0OCwgNTIsIDUzLCAxMjgsIDY4LCA0OCwgNTIsIDUyLCAxMjgsIDY4LCA0OCwgNTIsIAorICAgIDUxLCAxMjgsIDY4LCA0OCwgNTIsIDUwLCAxMjgsIDY4LCA0OCwgNTIsIDQ5LCAxMjgsIDY4LCA0OCwgNTIsIDQ4LCAxMjgsIAorICAgIDY4LCA0OCwgNTEsIDU3LCAxMjgsIDY4LCA0OCwgNTEsIDU2LCAxMjgsIDY4LCA0OCwgNTEsIDU1LCAxMjgsIDY4LCA0OCwgCisgICAgNTEsIDU0LCAxMjgsIDY4LCA0OCwgNTEsIDUzLCAxMjgsIDY4LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUxLCAKKyAgICA1MiwgMTI4LCA2OCwgNDgsIDUxLCA1MSwgMTI4LCA2OCwgNDgsIDUxLCA1MCwgMTI4LCA2OCwgNDgsIDUxLCA0OSwgNjUsIAorICAgIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDEyOCwgNjgsIDQ4LCA1MSwgNDgsIDEyOCwgNjgsIDQ4LCA1MCwgNTcsIDEyOCwgNjgsIAorICAgIDQ4LCA1MCwgNTYsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCAxMjgsIDY4LCA0OCwgCisgICAgNTAsIDU0LCAxMjgsIDY4LCA0OCwgNTAsIDUzLCAxMjgsIDY4LCA0OCwgNTAsIDUyLCAxMjgsIDY4LCA0OCwgNTAsIDUxLCAKKyAgICAxMjgsIDY4LCA0OCwgNTAsIDUwLCAxMjgsIDY4LCA0OCwgNTAsIDQ5LCAxMjgsIDY4LCA0OCwgNTAsIDQ4LCAxMjgsIDY4LCAKKyAgICA0OCwgNDksIDU3LCAxMjgsIDY4LCA0OCwgNDksIDU2LCAxMjgsIDY4LCA0OCwgNDksIDU1LCAxMjgsIDY4LCA0OCwgNDksIAorICAgIDU0LCAxMjgsIDY4LCA0OCwgNDksIDUzLCAxMjgsIDY4LCA0OCwgNDksIDUyLCAxMjgsIDY4LCA0OCwgNDksIDUxLCAxMjgsIAorICAgIDY4LCA0OCwgNDksIDUwLCAxMjgsIDY4LCA0OCwgNDksIDQ5LCAxMjgsIDY4LCA0OCwgNDksIDQ4LCAxMjgsIDY4LCA0OCwgCisgICAgNDgsIDU3LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgMTI4LCA2OCwgNDgsIDQ4LCAKKyAgICA1NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NCwgMTI4LCA2OCwgNDgsIDQ4LCA1MywgMTI4LCA2OCwgNDgsIDQ4LCA1MiwgMTI4LCAKKyAgICA2OCwgNDgsIDQ4LCA1MSwgMTI4LCA2OCwgNDgsIDQ4LCA1MCwgMTI4LCA2OCwgNDgsIDQ4LCA0OSwgMTI4LCA2NywgODksIAorICAgIDg4LCAxMjgsIDY3LCA4OSwgODQsIDEyOCwgNjcsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDg5LCA4MiwgNjksIDc4LCA2NSwgCisgICAgNzMsIDE5NSwgNjcsIDg5LCA4MiwgMTI4LCA2NywgODksIDgwLCA4MiwgNzMsIDc5LCAyMTIsIDY3LCA4OSwgODAsIDY5LCAKKyAgICA4MiwgODUsIDgzLCAxMjgsIDY3LCA4OSwgODAsIDEyOCwgNjcsIDg5LCA3NiwgNzMsIDc4LCA2OCwgODIsIDczLCA2NywgNzMsIAorICAgIDg0LCA4OSwgMTI4LCA2NywgODksIDY3LCA3NiwgNzksIDc4LCA2OSwgMTI4LCA2NywgODksIDY1LCAxMjgsIDY3LCA4OSwgCisgICAgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgODcsIDc5LCAxMjgsIDY3LCA4NywgNzMsIDczLCAxMjgsIDY3LCA4NywgCisgICAgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCA4NCwgNzIsIDEyOCwgNjcsIDg3LCA2OSwgMTI4LCA2NywgODcsIDY1LCAKKyAgICA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCA4NSwgODUsIDEyOCwgNjcsIDg1LCAyMTIsIDY3LCA4NSwgODMsIDg0LCAKKyAgICA3OSwgNzcsIDgzLCAxMjgsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDY5LCAyMTAsIDY3LCA4NSwgODMsIDg0LCA2NSwgODIsIAorICAgIDY4LCAxMjgsIDY3LCA4NSwgODIsIDg4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA3MywgNzgsIDE5OSwgNjcsIDg1LCA4MiwgCisgICAgODYsIDY5LCAxOTYsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTI4LCA2NywgODUsIDgyLCA4NiwgMTk3LCA2NywgODUsIDgyLCAKKyAgICA4MywgNzMsIDg2LCAxOTcsIDY3LCA4NSwgODIsIDgyLCAyMTcsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDg0LCAxMjgsIAorICAgIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDIxMiwgNjcsIDg1LCA4MiwgNzYsIDIxNywgNjcsIDg1LCA4MiwgNzYsIDEyOCwgCisgICAgNjcsIDg1LCA4MiwgMTI4LCA2NywgODUsIDgwLCAxMjgsIDY3LCA4NSwgNzksIDg4LCAxMjgsIDY3LCA4NSwgNzksIDgwLCAKKyAgICAxMjgsIDY3LCA4NSwgNzksIDEyOCwgNjcsIDg1LCAyMDUsIDY3LCA4NSwgNjYsIDY5LCA2OCwgMTI4LCA2NywgODUsIDY2LCAKKyAgICAxOTcsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgNzksIDEyOCwgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIAorICAgIDc2LCAyMDcsIDY3LCA4NSwgMTI4LCA2NywgODMsIDczLCAxMjgsIDY3LCA4MiwgODksIDgzLCA4NCwgNjUsIDIwNCwgNjcsIAorICAgIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCA2NywgODIsIDg5LCA3MywgNzgsIDE5OSwgCisgICAgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTMsIAorICAgIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTIsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgCisgICAgNzYsIDY5LCA0NSwgNTEsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTAsIDEyOCwgNjcsIDgyLCAKKyAgICA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNzksIDg3LCA3OCwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDE5OSwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MiwgCisgICAgNjUsIDg0LCA2NywgMjAwLCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgNDUsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY3LCAKKyAgICA4MiwgNzksIDgzLCA4MywgNjksIDE5NiwgNjcsIDgyLCA3OSwgODMsIDgzLCA2NiwgNzksIDc4LCA2OSwgODMsIDEyOCwgNjcsIAorICAgIDgyLCA3OSwgODMsIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCAyMTEsIDY3LCA4MiwgNzksIDgwLCAxMjgsIDY3LCA4MiwgCisgICAgNzksIDczLCA4OCwgMTI4LCA2NywgODIsIDc5LCA2NywgODUsIDIxMSwgNjcsIDgyLCA3OSwgNjcsIDc5LCA2OCwgNzMsIDc2LCAKKyAgICA2OSwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIAorICAgIDIxMiwgNjcsIDgyLCA2OSwgNjgsIDczLCAyMTIsIDY3LCA4MiwgNjksIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA4MiwgCisgICAgNjksIDY1LCA3NywgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCA4MiwgMTI4LCA2NywgODIsIDEyOCwgNjcsIDc5LCAKKyAgICA4OCwgMTI4LCA2NywgNzksIDg3LCAxMjgsIDY3LCA3OSwgMjE1LCA2NywgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc5LCAKKyAgICA4NSwgODAsIDc2LCAxOTcsIDY3LCA3OSwgODUsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIAorICAgIDgyLCA4MywgNzMsIDc4LCA3NSwgMTI4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgNjYsIDc5LCA4MiwgNjksIDEyOCwgCisgICAgNjcsIDc5LCA4NSwgNzgsIDY3LCA3MywgMjA0LCA2NywgNzksIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgyLCA2OSwgODMsIDgwLCAKKyAgICA3OSwgNzgsIDY4LCAyMTEsIDY3LCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgwLCA4MywgNjksIAorICAgIDEyOCwgNjcsIDc5LCA4MiwgODAsIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgODIsIDc5LCA3OCwgCisgICAgNzMsIDgzLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgODIsIAorICAgIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCAyMTAsIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgCisgICAgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCAyMTIsIDY3LCA3OSwgODAsIDg5LCAxMjgsIDY3LCA3OSwgODAsIDgyLCAKKyAgICA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDY3LCA3OSwgODAsIAorICAgIDgwLCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MCwgMTI4LCA2NywgNzksIDc5LCA3NiwgMTI4LCA2NywgNzksIDc5LCA3NSwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDY5LCAxMjgsIDY3LCA3OSwgNzksIDc1LCA2OSwgMTk2LCAKKyAgICA2NywgNzksIDc5LCAxMjgsIDY3LCA3OSwgNzgsIDg2LCA2OSwgODIsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODYsIAorICAgIDY5LCA3OCwgNzMsIDY5LCA3OCwgNjcsIDE5NywgNjcsIDc5LCA3OCwgODQsIDgyLCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OCwgCisgICAgODQsIDgyLCA3OSwgMjA0LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA4MiwgNzMsIDY5LCA4NCwgODksIDEyOCwgNjcsIDc5LCAKKyAgICA3OCwgODQsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDgyLCA2OSwgCisgICAgMTk2LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCAyMTAsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzcsIDgwLCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzMsIDc4LCAyMTEsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3MywgMjA2LCA2NywgNzksIDc4LCA4NCwgNjUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDgyLCAKKyAgICA4NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIAorICAgIDgzLCA4NCwgNjUsIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA2NywgODksIDEyOCwgNjcsIDc5LCA3OCwgCisgICAgODMsIDY5LCA2NywgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgCisgICAgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAKKyAgICAyMTIsIDY3LCA3OSwgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIAorICAgIDc4LCA3MCwgODUsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MCwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgCisgICAgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA3MCwgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCAKKyAgICA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgCisgICAgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCAKKyAgICA4MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NywgODAsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIAorICAgIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgNzksIDIwNiwgNjcsIDc5LCA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCAKKyAgICA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDc4LCA2OCwgMTI4LCA2NywgNzksIDc3LCA3NywgNjUsIDEyOCwgNjcsIAorICAgIDc5LCA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgCisgICAgNzYsIDg1LCA3NywgNzgsIDEyOCwgNjcsIDc5LCA3NiwgNzksIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCAKKyAgICA3OSwgMjA2LCA2NywgNzksIDc2LCA3NiwgMTI4LCA2NywgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIAorICAgIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNjksIDc4LCAxOTksIDY3LCA3OSwgNjgsIDY1LCAxMjgsIAorICAgIDY3LCA3OSwgNjcsIDc1LCA4NCwgNjUsIDczLCAyMDQsIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgCisgICAgNjUsIDEyOCwgNjcsIDc5LCAxMjgsIDY3LCA3NywgMTI4LCA2NywgMjA1LCA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIAorICAgIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCA2NywgNzYsIDg1LCA2NiwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgCisgICAgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIDg1LCAxOTQsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCAKKyAgICA3OSwgODUsIDY4LCAxMjgsIDY3LCA3NiwgNzksIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIAorICAgIDY3LCA3NiwgNzksIDg0LCA3MiwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgCisgICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCAKKyAgICA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIAorICAgIDczLCA4MywgMTI4LCA2NywgNzYsIDczLCA4MCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgCisgICAgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCAKKyAgICA4MywgMTI4LCA2NywgNzYsIDczLCA3MCwgNzAsIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIAorICAgIDcwLCA0NSwgNTAsIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgCisgICAgNzYsIDY5LCAxOTgsIDY3LCA3NiwgNjksIDY1LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCAKKyAgICA3NiwgNjUsIDg3LCAxMjgsIDY3LCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIAorICAgIDIxMCwgNjcsIDc2LCA2NSwgNzgsIDEyOCwgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIAorICAgIDg4LCAxMjgsIDY3LCA3MywgODYsIDczLCA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgCisgICAgODAsIDE5NywgNjcsIDczLCA4NCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCAKKyAgICA3NywgNzAsIDc2LCA2OSwgODgsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIAorICAgIDgyLCA2NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgCisgICAgNzMsIDgyLCA2NywgNzYsIDY5LCAxMjgsIDY3LCA3MywgODAsIDEyOCwgNjcsIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAKKyAgICAxMjgsIDY3LCA3MywgNzgsIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCA3MywgMTI4LCA2NywgNzMsIDY5LCA4OCwgMTI4LCAKKyAgICA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgCisgICAgNzMsIDY5LCA4NSwgNjcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDY3LCA3MywgNjksIDg1LCAxOTUsIDY3LCA3MywgNjksIDg0LCAxMjgsIDY3LCA3MywgCisgICAgNjksIDgwLCAxMjgsIDY3LCA3MywgNjksIDEyOCwgNjcsIDcyLCA4OSwgODgsIDEyOCwgNjcsIDcyLCA4OSwgODQsIDEyOCwgCisgICAgNjcsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODksIDgyLCAxMjgsIDY3LCA3MiwgODksIDgwLCAxMjgsIDY3LCAKKyAgICA3MiwgODUsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgNjcsIDcyLCAxMjgsIAorICAgIDY3LCA3MiwgODUsIDgyLCAxMjgsIDY3LCA3MiwgODUsIDgwLCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4OCwgMTI4LCA2NywgCisgICAgNzIsIDg1LCA3OSwgODQsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDY3LCA3MiwgODUsIDc5LCAxMjgsIDY3LCAKKyAgICA3MiwgODUsIDc2LCA2NSwgMTI4LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA3MiwgODIsIDg5LCA4MywgNjUsIDc4LCA4NCwgNzIsIAorICAgIDY5LCA3NywgODUsIDc3LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgCisgICAgNzksIDc4LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3NywgMTkzLCA2NywgNzIsIDgyLCA3OSwgMTkzLCA2NywgNzIsIDgyLCAKKyAgICA3MywgODYsIDczLCAxMjgsIDY3LCA3MiwgODIsIDczLCA4MywgODQsIDc3LCA2NSwgODMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIAorICAgIDgzLCA4NCwgNzcsIDY1LCAyMTEsIDY3LCA3MiwgNzksIDg4LCAxMjgsIDY3LCA3MiwgNzksIDg0LCAxMjgsIDY3LCA3MiwgCisgICAgNzksIDgyLCA2OSwgODYsIDc3LCAxOTMsIDY3LCA3MiwgNzksIDgwLCAxMjgsIDY3LCA3MiwgNzksIDc1LCA2OSwgMTI4LCAKKyAgICA2NywgNzIsIDc5LCA2OSwgMTI4LCA2NywgNzIsIDc5LCA2NywgNzksIDc2LCA2NSwgODQsIDE5NywgNjcsIDcyLCA3OSwgNjUsIAogICAgIDEyOCwgNjcsIDcyLCAyMDcsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgCiAgICAgNzMsIDc5LCA4MywgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIAogICAgIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIDEyOCwgCkBAIC00MDUxLDkwNzUgKzQyMTUsOTYwOCBAQAogICAgIDIxMSwgNjcsIDcyLCA2OSwgODIsIDgyLCAyMTcsIDY3LCA3MiwgNjksIDgyLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NywgCiAgICAgNzIsIDY5LCA4MSwgODUsIDY5LCA4MiwgNjksIDE5NiwgNjcsIDcyLCA2OSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgMjA2LCAKICAgICA2NywgNzIsIDY5LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNjcsIAotICAgIDcyLCA2OSwgNjksIDgyLCA3MywgNzgsIDE5OSwgNjcsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDc1LCAKLSAgICAxMjgsIDY3LCA3MiwgNjksIDY3LCAyMDMsIDY3LCA3MiwgMTk3LCA2NywgNzIsIDY1LCA4OCwgMTI4LCA2NywgNzIsIDY1LCAKLSAgICA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDg0LCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA2NywgNzIsIAotICAgIDY1LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDIxMiwgNjcsIDcyLCA2NSwgCi0gICAgODIsIDczLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgMjEyLCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCAKLSAgICA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3MiwgNjUsIAotICAgIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNzIsIDY1LCA3OCwgCi0gICAgMTI4LCA2NywgNzIsIDY1LCA3NywgNzUsIDc5LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDc5LCA3OCwgMTI4LCAKLSAgICA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3MywgMTI4LCA2NywgNzIsIDY1LCA3MywgODIsIDEyOCwgNjcsIDcyLCA2NSwgNzMsIAotICAgIDc4LCA4MywgMTI4LCA2NywgNzIsIDY1LCA2OCwgNjUsIDEyOCwgNjcsIDcyLCA2NSwgMTk2LCA2NywgNzIsIDY1LCA2NSwgCi0gICAgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA4MywgMTI4LCA2NywgNjksIDgyLCA2OSwgNzcsIDc5LCAKLSAgICA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc1LCAxMjgsIDY3LCA2OSwgODIsIDQ1LCA4NywgNjUsIDEyOCwgNjcsIAotICAgIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgCi0gICAgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCAKLSAgICA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgCi0gICAgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCA4MiwgNzMsIDY1LCAyMDQsIDY3LCAKLSAgICA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCA2NywgNjksIAotICAgIDc4LCA4NCwgODIsIDY5LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCAxMjgsIDY3LCA2OSwgCi0gICAgNzYsIDgzLCA3MywgODUsIDgzLCAxMjgsIDY3LCA2OSwgNzYsIDY5LCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NywgNjksIDczLCA4MiwgODQsIDEyOCwgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDY5LCA2OSwgCi0gICAgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAxOTMsIDY3LCAKLSAgICA2OSwgNjgsIDIwMSwgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCA2NywgNjksIAotICAgIDY3LCA2NSwgMjAzLCA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIDc5LCAxMjgsIAotICAgIDY3LCA2NywgNzMsIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIDY3LCA3MiwgCi0gICAgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgNjcsIDcyLCAKLSAgICA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDEyOCwgNjcsIAotICAgIDY3LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjksIDY5LCAKKyAgICA3MiwgNjksIDczLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY5LCA2OSwgODIsIDczLCA3OCwgMTk5LCA2NywgNzIsIAorICAgIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDIwMywgNjcsIDcyLCAxOTcsIAorICAgIDY3LCA3MiwgNjUsIDg4LCAxMjgsIDY3LCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgCisgICAgODQsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA4NCwgMTI4LCAKKyAgICA2NywgNzIsIDY1LCA4MiwgMjEyLCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgNzMsIAorICAgIDc5LCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA2NSwgCisgICAgNjcsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3NSwgNzksIDEyOCwgNjcsIAorICAgIDcyLCA2NSwgNzcsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDczLCAxMjgsIDY3LCA3MiwgCisgICAgNjUsIDc1LCA3NywgMTkzLCA2NywgNzIsIDY1LCA3MywgODIsIDEyOCwgNjcsIDcyLCA2NSwgNzMsIDc4LCA4MywgMTI4LCAKKyAgICA2NywgNzIsIDY1LCA2OCwgNjUsIDEyOCwgNjcsIDcyLCA2NSwgMTk2LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNzEsIAorICAgIDc0LCAxMjgsIDY3LCA2OSwgODgsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDgzLCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NywgCisgICAgNzksIDc4LCA4OSwgMTI4LCA2NywgNjksIDgyLCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA4MiwgNDUsIDg3LCA2NSwgMTI4LCAKKyAgICA2NywgNjksIDgwLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIAorICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCAKKyAgICA3MywgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgCisgICAgODUsIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIAorICAgIDc3LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA2NywgNjksIDc4LCA4NCwgODUsIDgyLCA3MywgNjUsIDIwNCwgCisgICAgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxOTYsIDY3LCAKKyAgICA2OSwgNzgsIDg0LCA4MiwgNjksIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCAxOTcsIDY3LCA2OSwgNzgsIDEyOCwgNjcsIAorICAgIDY5LCA3NiwgODMsIDczLCA4NSwgODMsIDEyOCwgNjcsIDY5LCA3NiwgNjksIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY3LCA2OSwgNzMsIDgyLCA4NCwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNjksIAorICAgIDY5LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDE5MywgCisgICAgNjcsIDY5LCA2OCwgMjAxLCA2NywgNjksIDY3LCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDc1LCAxMjgsIDY3LCAKKyAgICA2OSwgNjcsIDY1LCAyMDMsIDY3LCA2OSwgNjUsIDc2LCA2NywgMTI4LCA2NywgNjcsIDg1LCAxMjgsIDY3LCA2NywgNzksIAorICAgIDEyOCwgNjcsIDY3LCA3MywgMTI4LCA2NywgNjcsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3OSwgMTI4LCA2NywgNjcsIAorICAgIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDc5LCAxMjgsIDY3LCA2NywgCisgICAgNzIsIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgMTI4LCAKKyAgICA2NywgNjcsIDcyLCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2OSwgNjksIAogICAgIDEyOCwgNjcsIDY3LCA3MiwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY1LCAxMjgsIAotICAgIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA2NSwgCi0gICAgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NywgNjUsIDg4LCAKLSAgICAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA4NSwgNzYsIAotICAgIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIDY1LCAKLSAgICAxMjgsIDY3LCA2NSwgODQsIDEyOCwgNjcsIDY1LCAyMTIsIDY3LCA2NSwgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIDY1LCAKLSAgICA4MiwgODksIDgzLCA4NCwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDg0LCAxMjgsIDY3LCA2NSwgODIsIDIxMSwgNjcsIAotICAgIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNjcsIDY1LCA4MiwgODAsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY3LCA2NSwgCi0gICAgODIsIDIwOCwgNjcsIDY1LCA4MiwgNzksIDg1LCA4MywgNjksIDIwNCwgNjcsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDY3LCAKLSAgICA2NSwgODIsIDc5LCAyMDYsIDY3LCA2NSwgODIsIDczLCAyMDMsIDY3LCA2NSwgODIsIDczLCA2NSwgMjA2LCA2NywgNjUsIAotICAgIDgyLCA2OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgNjksIDIxMiwgNjcsIDY1LCA4MiwgMTk3LCA2NywgNjUsIDgyLCA2OCwgCi0gICAgODMsIDEyOCwgNjcsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDY1LCA4MiwgMTk2LCA2NywgNjUsIDgyLCAxMjgsIDY3LCA2NSwgCi0gICAgMjEwLCA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIDgwLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDgwLCAKLSAgICA4MiwgNzMsIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgODAsIDc5LCAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIAotICAgIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCAKLSAgICAxOTksIDY3LCA2NSwgNzgsIDY4LCA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIAotICAgIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgCi0gICAgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDE5MywgNjcsIDY1LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2NywgNjUsIDc4LCAKLSAgICA2NywgNjksIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgNjcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIAotICAgIDc4LCA2NywgNjksIDIwNCwgNjcsIDY1LCA3OCwgMTI4LCA2NywgNjUsIDc3LCA3OCwgODUsIDE5NSwgNjcsIDY1LCA3NywgCi0gICAgNjksIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCAKLSAgICA2NSwgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIAotICAgIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgMTI4LCA2NywgNjUsIDc1LCA4MiwgNjUsIDEyOCwgCi0gICAgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDY5LCA4MywgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCAKLSAgICA4NSwgODMsIDEyOCwgNjcsIDY1LCA2OCwgMTkzLCA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIAotICAgIDc2LCA2OSwgODcsIDY1LCA4OSwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgNjksIDY5LCAKLSAgICAxMjgsIDY3LCA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgNDgsIDUwLCAKLSAgICA1MiwgMTI4LCA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCA0OSwgMTI4LCAKLSAgICA2NywgNDgsIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCA2NywgNDgsIAotICAgIDQ5LCA1NSwgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIDQ5LCA1MiwgCi0gICAgMTI4LCA2NywgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgMTI4LCA2NywgCi0gICAgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCA0OCwgNTMsIAotICAgIDEyOCwgNjcsIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIAotICAgIDY3LCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNjcsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDY3LCAKLSAgICA0NSwgNTEsIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCA5MCwgNzIsIAotICAgIDIwMSwgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCA3OCwgNDUsIDg1LCA3NSwgODIsIDY1LCAKLSAgICA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIDEyOCwgNjYsIDg3LCA2OSwgNjksIAotICAgIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIDc3LCA3MywgODMsIDcyLCAxMjgsIAotICAgIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCAyMTIsIDY2LCA4NSwgODMsIDg0LCAyMTEsIDY2LCA4NSwgCi0gICAgODMsIDIxMiwgNjYsIDg1LCA4MywgODMsIDg5LCA2OSwgODIsIDg1LCAxMjgsIDY2LCA4NSwgMjExLCA2NiwgODUsIDgyLCAKLSAgICAyMTMsIDY2LCA4NSwgODIsIDUwLCAxMjgsIDY2LCA4NSwgMjEwLCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgODUsIDc5LCAKLSAgICA4MCwgMTI4LCA2NiwgODUsIDc4LCA3OCwgMjE3LCA2NiwgODUsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDc3LCA4MCwgMjE3LCAKLSAgICA2NiwgODUsIDc2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3NiwgODUsIDE5OSwgNjYsIDg1LCA3NiwgNzYsIDgzLCA2OSwgODksIAotICAgIDY5LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCAyMTEsIDY2LCA4NSwgNzYsIDc2LCA2OSwgODQsIDEyOCwgNjYsIDg1LCA3NiwgCi0gICAgNzYsIDY5LCAyMTIsIDY2LCA4NSwgNzYsIDc2LCAxMjgsIDY2LCA4NSwgNzYsIDY2LCAxMjgsIDY2LCA4NSwgNzUsIDg5LCAKLSAgICAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgODMsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDY2LCA4NSwgNzIsIDczLCAxOTYsIDY2LCA4NSwgNzEsIDczLCA3OCwgNjksIDgzLCAxOTcsIDY2LCA4NSwgCi0gICAgNzEsIDEyOCwgNjYsIDg1LCA3MCwgNzAsIDY1LCA3NiwgNzksIDEyOCwgNjYsIDg1LCA2NywgNzUsIDc2LCA2OSwgMTI4LCAKLSAgICA2NiwgODMsIDg0LCA2NSwgODIsIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgNjUsIDE3MywgNjYsIAotICAgIDgzLCA2OCwgODUsIDIxMSwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDY2LCA4MiwgODUsIDgzLCAyMDAsIDY2LCA4MiwgCi0gICAgNzksIDc4LCA5MCwgNjksIDEyOCwgNjYsIDgyLCA3OSwgNzUsIDY5LCAyMDYsIDY2LCA4MiwgNzksIDY1LCAxOTYsIDY2LCAKLSAgICA4MiwgNzMsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgODMsIDIxMSwgNjYsIAotICAgIDgyLCA3MywgNjksIDcwLCA2NywgNjUsIDgzLCA2OSwgMTI4LCA2NiwgODIsIDczLCA2OCwgNzEsIDE5NywgNjYsIDgyLCA3MywgCi0gICAgNjgsIDE5NywgNjYsIDgyLCA3MywgNjcsIDc1LCAxMjgsIDY2LCA4MiwgNjksIDg2LCA3MywgODMsIDEyOCwgNjYsIDgyLCAKLSAgICA2OSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NiwgODIsIDY5LCA4NiwgMTk3LCA2NiwgODIsIAotICAgIDY5LCA2NSwgODQsIDIwMCwgNjYsIDgyLCA2OSwgNjUsIDc1LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA2NiwgCi0gICAgODIsIDY5LCA2NSwgNjgsIDEyOCwgNjYsIDgyLCA2OCwgMTkzLCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA3MywgNzgsIAotICAgIDE5OSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDIwMCwgNjYsIDgyLCA2NSwgCi0gICAgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDY5LCAxOTYsIDY2LCA4MiwgNjUsIDY3LCAKLSAgICA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA4MSwgMTI4LCA2NiwgNzksIDg5LCAxMjgsIDY2LCAKLSAgICA3OSwgODcsIDg0LCA3MywgNjksIDEyOCwgNjYsIDc5LCA4NywgODQsIDczLCAxOTcsIDY2LCA3OSwgODcsIDc2LCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDY2LCA3OSwgODcsIDc2LCAxMjgsIDY2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzksIDIxNSwgNjYsIAotICAgIDc5LCA4NSwgODEsIDg1LCA2OSwgODQsIDEyOCwgNjYsIDc5LCA4NSwgNzgsIDY4LCA2NSwgODIsIDIxNywgNjYsIDc5LCA4NCwgCi0gICAgODQsIDc5LCA3NywgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgMTI4LCAKLSAgICA2NiwgNzksIDg0LCA4NCwgNzksIDIwNSwgNjYsIDc5LCA4NCwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNzksIDg0LCA4NCwgNzYsIAotICAgIDE5NywgNjYsIDc5LCA4NCwgMjAwLCA2NiwgNzksIDgyLCA4NSwgODQsIDc5LCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgCi0gICAgNDUsIDUxLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgNDUsIDUwLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgMTI4LCAKLSAgICA2NiwgNzksIDc5LCA4NCwgODMsIDEyOCwgNjYsIDc5LCA3OSwgODQsIDEyOCwgNjYsIDc5LCA3OSwgNzcsIDY5LCA4MiwgNjUsIAotICAgIDc4LCA3MSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgODMsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDc1LCAKLSAgICAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAyMDMsIDY2LCA3OSwgNzgsIDY5LCAxMjgsIDY2LCA3OSwgNzcsIAotICAgIDY2LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAxMjgsIDY2LCA3OSwgNzYsIDIxMiwgNjYsIDc5LCA2OCwgODksIDEyOCwgNjYsIAotICAgIDc5LCA2NSwgODIsIDEyOCwgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCA2OSwgMTI4LCA2NiwgNzYsIDg1LCAxOTcsIAotICAgIDY2LCA3NiwgNzksIDg3LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCA2NiwgCi0gICAgNzYsIDc5LCA3OSwgNjgsIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDY2LCAKLSAgICA3NiwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIAotICAgIDY2LCA3NiwgNjUsIDY4LCAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgCi0gICAgNzUsIDQ1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIAotICAgIDcyLCA2OSwgODIsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgCi0gICAgODQsIDg0LCA2OSwgODIsIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDc3LCA4NSwgODQsIAotICAgIDIwMCwgNjYsIDczLCA4MywgNzcsIDczLCA3NiwgNzYsIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCA3OSwgODAsIDEyOCwgCi0gICAgNjYsIDczLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgMTI4LCA2NiwgNzMsIDgyLCAKLSAgICA4NSwgMTI4LCA2NiwgNzMsIDgyLCA4NCwgNzIsIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgNjYsIAotICAgIDczLCA4MiwgNjgsIDEyOCwgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIDY2LCA3MywgNzgsIDc5LCA2NywgCi0gICAgODUsIDc2LCA2NSwgMjEwLCA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgNzgsIDY4LCA3MywgMTI4LCAKLSAgICA2NiwgNzMsIDc4LCA2NSwgODIsIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIAotICAgIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgCi0gICAgNjYsIDczLCAxOTksIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCAKLSAgICA3MywgNjcsIDg5LCA2NywgNzYsIDczLCA4MywgODQsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIDgzLCAxMjgsIAotICAgIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDY2LCA3MywgNjcsIDY5LCA4MCwgODMsIDEyOCwgNjYsIDczLCA2NiwgCi0gICAgNzYsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA2NiwgNzMsIDY2LCAxMjgsIDY2LCAyMDEsIDY2LCA3MiwgODUsIDEyOCwgCi0gICAgNjYsIDcyLCA3OSwgNzksIDEyOCwgNjYsIDcyLCA3OSwgMTI4LCA2NiwgNzIsIDczLCAxMjgsIDY2LCA3MiwgNjksIDg0LCAKLSAgICA3MiwgMTI4LCA2NiwgNzIsIDY5LCA2OSwgMTI4LCA2NiwgNzIsIDY5LCAxMjgsIDY2LCA3MiwgNjUsIDg0LCA4NCwgNzMsIAotICAgIDgwLCA4MiwgNzksIDc2LCAyMTMsIDY2LCA3MiwgNjUsIDc3LCAxMjgsIDY2LCA3MiwgNjUsIDEyOCwgNjYsIDY5LCA4OSwgCi0gICAgODksIDY1LCA3NiwgMTI4LCA2NiwgNjksIDg4LCAxMjgsIDY2LCA2OSwgODYsIDY5LCA4MiwgNjUsIDcxLCA2OSwgMTI4LCAKLSAgICA2NiwgNjksIDg0LCA4NywgNjksIDY5LCA3OCwgMTI4LCA2NiwgNjksIDg0LCA4NywgNjksIDY5LCAyMDYsIDY2LCA2OSwgODQsIAotICAgIDcyLCAxMjgsIDY2LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgODQsIDE5MywgNjYsIDY5LCAyMTIsIDY2LCA2OSwgODMsIAotICAgIDczLCA2OCwgMTk3LCA2NiwgNjksIDgyLCA3NSwgNjUsIDc4LCA2NSwgMjA2LCA2NiwgNjksIDgyLCA2NiwgNjksIDIxMCwgCi0gICAgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjksIDc5LCA4MiwgMTk1LCA2NiwgNjksIDc4LCA5MCwgNjksIDc4LCAxOTcsIDY2LCAKLSAgICA2OSwgNzgsIDg0LCAyMDcsIDY2LCA2OSwgNzgsIDY4LCA2OSwgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIAotICAgIDIwNiwgNjYsIDY5LCA3NiwgODQsIDEyOCwgNjYsIDY5LCA3NiwgMjEyLCA2NiwgNjksIDc2LCA3OSwgMjE1LCA2NiwgNjksIAotICAgIDc2LCA3NiwgMTI4LCA2NiwgNjksIDc2LCAyMDQsIDY2LCA2OSwgNzYsIDcxLCA4NCwgNzIsIDc5LCAyMTAsIDY2LCA2OSwgCi0gICAgNzMsIDg0LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA3MywgNzgsIDE5NiwgNjYsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDY2LCAKLSAgICA2OSwgNzIsIDY5LCAyMDAsIDY2LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCAyMDAsIDY2LCA2OSwgNzEsIDczLCA3OCwgNzgsIAotICAgIDczLCA3OCwgNzEsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDY2LCA2OSwgNzEsIDczLCAKLSAgICAyMDYsIDY2LCA2OSwgNzAsIDc5LCA4MiwgMTk3LCA2NiwgNjksIDY5LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA2OSwgNjksIAotICAgIDg0LCA2NSwgMTI4LCA2NiwgNjksIDY5LCAyMTAsIDY2LCA2OSwgNjksIDcyLCA3MywgODYsIDY5LCAxMjgsIDY2LCA2OSwgCi0gICAgNjksIDcyLCAxMjgsIDY2LCA2OSwgNjksIDIwMCwgNjYsIDY5LCA2NywgNjUsIDg1LCA4MywgNjksIDEyOCwgNjYsIDY5LCAKLSAgICA2NSwgODYsIDY5LCAyMTAsIDY2LCA2OSwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDY5LCA2NSwgODQsIDEyOCwgNjYsIAotICAgIDY5LCA2NSwgMjEwLCA2NiwgNjksIDY1LCA3OCwgMTI4LCA2NiwgNjksIDY1LCA3NywgNjksIDE5NiwgNjYsIDY3LCA2NSwgCi0gICAgNjgsIDEyOCwgNjYsIDY3LCA2NSwgMTk2LCA2NiwgNjYsIDg5LCA4OCwgMTI4LCA2NiwgNjYsIDg5LCA4NCwgMTI4LCA2NiwgCi0gICAgNjYsIDg5LCA4MCwgMTI4LCA2NiwgNjYsIDg5LCAxMjgsIDY2LCA2NiwgODUsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDg0LCAKLSAgICAxMjgsIDY2LCA2NiwgODUsIDgyLCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgMTI4LCA2NiwgNjYsIDg1LCA4MCwgMTI4LCAKLSAgICA2NiwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCAxMjgsIAotICAgIDY2LCA2NiwgODUsIDEyOCwgNjYsIDY2LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA3OSwgODQsIDEyOCwgNjYsIDY2LCA3OSwgCi0gICAgODAsIDEyOCwgNjYsIDY2LCA3OSwgMTI4LCA2NiwgNjYsIDczLCA4OCwgMTI4LCA2NiwgNjYsIDczLCA4MCwgMTI4LCA2NiwgCi0gICAgNjYsIDczLCA2OSwgODgsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCAKLSAgICA2NiwgNjYsIDczLCA2OSwgMTI4LCA2NiwgNjYsIDczLCAxMjgsIDY2LCA2NiwgNjksIDg4LCAxMjgsIDY2LCA2NiwgNjksIAotICAgIDgwLCAxMjgsIDY2LCA2NiwgNjksIDY5LCAxMjgsIDY2LCA2NiwgNjksIDEyOCwgNjYsIDY2LCA2NSwgODgsIDEyOCwgNjYsIAotICAgIDY2LCA2NSwgODQsIDEyOCwgNjYsIDY2LCA2NSwgODAsIDEyOCwgNjYsIDY2LCA2NSwgNjUsIDEyOCwgNjYsIDY2LCA2NSwgCi0gICAgMTI4LCA2NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDg1LCAxMjgsIDY2LCA2NSwgODQsIDg0LCAKLSAgICA2OSwgODIsIDg5LCAxMjgsIDY2LCA2NSwgODQsIDcyLCA4NCwgODUsIDY2LCAxMjgsIDY2LCA2NSwgODQsIDcyLCA2NSwgNzcsIAotICAgIDY1LCA4MywgNjUsIDg0LCAxMjgsIDY2LCA2NSwgODQsIDcyLCAxMjgsIDY2LCA2NSwgODQsIDIwMCwgNjYsIDY1LCA4NCwgCi0gICAgNjUsIDIwMywgNjYsIDY1LCA4MywgODMsIDY1LCAxMjgsIDY2LCA2NSwgODMsIDc1LCA2OSwgODQsIDY2LCA2NSwgNzYsIAotICAgIDIwNCwgNjYsIDY1LCA4MywgNzIsIDc1LCA3MywgMjEwLCA2NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgCi0gICAgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNjYsIDY1LCA4MywgNjksIDEyOCwgNjYsIDY1LCA4MywgMTk3LCA2NiwgNjUsIDgyLCAKLSAgICA4MywgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNzMsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDc1LCA3MiwgCi0gICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk3LCA2NiwgNjUsIDgyLCAKLSAgICA3NiwgNzMsIDc4LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA3NiwgNjksIDg5LCAxMjgsIDY2LCA2NSwgODIsIDczLCA4OSwgNzksIAotICAgIDc5LCA4MywgNjUsIDc4LCAxMjgsIDY2LCA2NSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgCi0gICAgNjYsIDY1LCAyMTAsIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIAotICAgIDE5NywgNjYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIAotICAgIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgCi0gICAgNjYsIDc5LCA3OSwgODMsIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAKLSAgICAxMjgsIDY2LCA2NSwgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIAotICAgIDc1LCA2OSwgMTk2LCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgNjUsIDc2LCA2NSwgNzEsIDEyOCwgCi0gICAgNjYsIDY1LCA3NiwgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCA2NSwgNzgsIDEyOCwgNjYsIDY1LCAKLSAgICA3MywgNzcsIDY1LCA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIAotICAgIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIDY1LCA3MSwgCi0gICAgMTk3LCA2NiwgNjUsIDcxLCA2NSwgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIDY1LCA2OCwgCi0gICAgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgNjYsIDY1LCA2OCwgMTI4LCA2NiwgNjUsIDY3LCAKLSAgICA4NCwgODIsIDczLCA2NSwgMjA2LCA2NiwgNjUsIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA2NSwgNjcsIAotICAgIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIDY2LCA2NSwgCi0gICAgNjcsIDc1LCA3MiwgNjUsIDc4LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCAKLSAgICA2NSwgNjcsIDc1LCAxMjgsIDY2LCA2NSwgNjcsIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCAKLSAgICA2NiwgNjUsIDY1LCA4MiwgNjksIDgyLCA4NSwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDUzLCA1NywgCi0gICAgMTI4LCA2NiwgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCA1NCwgMTI4LCA2NiwgCi0gICAgNTAsIDUzLCA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCA1MCwgNTMsIDUwLCAKLSAgICAxMjgsIDY2LCA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIDU3LCAxMjgsIDY2LCAKLSAgICA1MCwgNTIsIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIDUwLCA1MiwgNTMsIAotICAgIDEyOCwgNjYsIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIDUwLCA1MiwgMTc2LCAKLSAgICA2NiwgNTAsIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIDY2LCA1MCwgNTEsIAotICAgIDUwLCAxMjgsIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgMTI4LCA2NiwgNTAsIAotICAgIDUwLCA1NiwgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgNTAsIDUwLCAxODEsIAotICAgIDY2LCA1MCwgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgNjYsIDUwLCA0OSwgCi0gICAgNTcsIDEyOCwgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCA0OSwgNTQsIDEyOCwgCi0gICAgNjYsIDUwLCA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIDEyOCwgNjYsIDUwLCAKLSAgICA0OSwgNTAsIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIDUwLCA0OCwgNTcsIAotICAgIDEyOCwgNjYsIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgNTQsIDEyOCwgNjYsIAotICAgIDUwLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgNjYsIDUwLCA0OCwgCi0gICAgNTAsIDEyOCwgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCA1NywgMTc3LCA2NiwgCi0gICAgNDksIDU3LCA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCA2NiwgNDksIDU2LCAKLSAgICA1MiwgMTI4LCA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIDU2LCA0OSwgMTI4LCAKLSAgICA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgMTI4LCA2NiwgNDksIAotICAgIDU1LCA1NSwgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgNTUsIDE3OSwgNjYsIAotICAgIDQ5LCA1NSwgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgNjYsIDQ5LCA1NCwgCi0gICAgNTcsIDEyOCwgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCA1NCwgNTQsIDEyOCwgCi0gICAgNjYsIDQ5LCA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCA2NiwgNDksIDU0LCAKLSAgICAxNzgsIDY2LCA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIDE4NSwgNjYsIDQ5LCAKLSAgICA1MywgNTYsIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIDUzLCA1MywgMTI4LCAKLSAgICA2NiwgNDksIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgMTI4LCA2NiwgNDksIAotICAgIDUzLCAxNzcsIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgNTIsIDE4MSwgNjYsIAotICAgIDQ5LCA1MiwgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgNTEsIDE4MSwgNjYsIAotICAgIDQ5LCA1MSwgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgNTEsIDE3NiwgNjYsIAotICAgIDQ5LCA1MCwgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgMTc5LCA2NiwgNDksIAotICAgIDUwLCAxNzgsIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgMjA1LCA2NiwgNDksIAotICAgIDQ4LCA1NywgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgNDksIDQ4LCA1NSwgCi0gICAgMjA1LCA2NiwgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCA1NCwgMTk4LCA2NiwgCi0gICAgNDksIDQ4LCA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCA0OSwgNDgsIDE4MCwgCi0gICAgNjYsIDQ5LCA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCA1NywgMTc2LCA2NiwgCi0gICAgNDgsIDU2LCA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCA0OCwgNTYsIDE4MSwgCi0gICAgNjYsIDQ4LCA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCA2NiwgNDgsIDU2LCAKLSAgICAxNzYsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCA2NiwgNDgsIDU1LCAKLSAgICAxODIsIDY2LCA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCA0OCwgNTUsIDE3OCwgCi0gICAgNjYsIDQ4LCA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCA1NCwgMTg0LCA2NiwgCi0gICAgNDgsIDU0LCAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCA1MiwgMTI4LCA2NiwgCi0gICAgNDgsIDU0LCA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCA1NCwgMTc2LCA2NiwgCi0gICAgNDgsIDUzLCAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCA1NCwgMTI4LCA2NiwgCi0gICAgNDgsIDUzLCAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAxNzgsIDY2LCA0OCwgCi0gICAgNTMsIDE3NywgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAxODQsIDY2LCA0OCwgCi0gICAgNTIsIDU1LCAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAxODAsIDY2LCA0OCwgCi0gICAgNTIsIDE3OSwgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgNjYsIDQ4LCA1MSwgCi0gICAgMTg1LCA2NiwgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgNDgsIDUxLCA1MiwgCi0gICAgMTI4LCA2NiwgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgNDgsIDUxLCAxNzYsIAotICAgIDY2LCA0OCwgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgNTAsIDE4MiwgNjYsIAotICAgIDQ4LCA1MCwgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgNjYsIAotICAgIDQ4LCA1MCwgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgNDksIDU2LCAxMjgsIAotICAgIDY2LCA0OCwgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgNDksIDE4MCwgNjYsIAotICAgIDQ4LCA0OSwgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgMTc2LCA2NiwgNDgsIAotICAgIDQ4LCA1NywgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgNDgsIDE4NCwgNjYsIAotICAgIDQ4LCA0OCwgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgNDgsIDQ4LCAxODIsIAotICAgIDY2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAxODEsIDY2LCA0OCwgCi0gICAgNDgsIDUyLCAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCA0OCwgMTc5LCA2NiwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCA0OCwgNDgsIDE3NywgCi0gICAgNjUsIDkwLCA4NSwgMTI4LCA2NSwgODksIDY5LCAyMTAsIDY1LCA4OSwgNjYsIDEyOCwgNjUsIDg5LCA2NSwgNzIsIDEyOCwgCi0gICAgNjUsIDg4LCA2OSwgMTI4LCA2NSwgODcsIDY5LCAxMjgsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIDg2LCAKLSAgICA2OSwgODIsIDY1LCA3MSwgMTk3LCA2NSwgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCA2NSwgCi0gICAgMTI4LCA2NSwgODYsIDY1LCA3MSwgODIsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNjUsIDg1LCA4NCwgODUsIDc3LCA3OCwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgCi0gICAgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCAKLSAgICA2NSwgODUsIDgyLCA3MywgODAsIDczLCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgCi0gICAgOTAsIDY4LCA2NSwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIAotICAgIDUwLCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAKLSAgICAxMjgsIDY1LCA4NSwgNzEsIDg1LCA4MywgODQsIDEyOCwgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDY1LCA4NSwgNjksIDEyOCwgNjUsIDg1LCA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgCi0gICAgODQsIDg0LCA3MywgMTk1LCA2NSwgODQsIDg0LCA3MiwgNjUsIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2NSwgMjAzLCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIAotICAgIDY1LCAyMDAsIDY1LCA4NCwgNzcsIDY1LCA2NSwgODUsIDEyOCwgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgCi0gICAgNzIsIDc2LCA2OSwgODQsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCAKLSAgICA2NSwgODQsIDcyLCA2NSwgODAsIDY1LCA4MywgNjcsIDY1LCAyMDYsIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIAotICAgIDgyLCAxOTMsIDY1LCA4MywgODksIDc3LCA4MCwgODQsIDc5LCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgCi0gICAgODQsIDgyLCA3OSwgNzgsIDc5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIAotICAgIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgNzksIDc4LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgCi0gICAgODIsIDczLCA4MywgNzcsIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCAKLSAgICA4MiwgNzMsIDgzLCA3NSwgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIAotICAgIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA2NSwgODMsIDgzLCA4OSwgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgCi0gICAgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODMsIDgwLCAKLSAgICA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCA3NiwgNzMsIDY1LCAxMjgsIAotICAgIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MywgNzIsIDU3LCAKLSAgICAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODMsIDY3LCA2OSwgNzgsIAotICAgIDY4LCA3MywgNzgsIDE5OSwgNjUsIDgzLCA2NSwgNzYsIDUwLCAxMjgsIDY1LCA4MiwgODUsIDcyLCA4NSwgNjUsIDEyOCwgCi0gICAgNjUsIDgyLCA4NCwgNzMsIDgzLCAyMTIsIDY1LCA4MiwgODQsIDczLCA2NywgODUsIDc2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCAKLSAgICA4MiwgODQsIDY1LCA2NiwgMTk3LCA2NSwgODIsIDgzLCA2OSwgNzksIDgzLCAxMjgsIDY1LCA4MiwgODMsIDY5LCA3OSwgCi0gICAgMjExLCA2NSwgODIsIDgzLCA2OSwgNzgsIDczLCA2NywgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDgzLCAxMjgsIDY1LCAKLSAgICA4MiwgODIsIDc5LCA4NywgMjExLCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDY1LCA4MiwgODIsIAotICAgIDc5LCA4NywgNzIsIDY5LCA2NSwgMTk2LCA2NSwgODIsIDgyLCA3OSwgODcsIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NSwgCi0gICAgODIsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY1LCA4MiwgODIsIDY1LCA4OSwgMTI4LCA2NSwgODIsIDgwLCA2OSwgNzEsIDcxLCAKLSAgICA3MywgNjUsIDg0LCAyMDcsIDY1LCA4MiwgNzksIDg1LCA4MywgNzMsIDc4LCAxOTksIDY1LCA4MiwgNzksIDg1LCA4MiwgCi0gICAgMTkzLCA2NSwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODAsIDgyLCA3OSwgNzAsIDczLCA3NiwgNjksIDEyOCwgNjUsIDgyLCAKLSAgICA3OSwgODUsIDc4LCAxOTYsIDY1LCA4MiwgNzcsIDg5LCAxMjgsIDY1LCA4MiwgNzcsIDc5LCA4NSwgODIsIDEyOCwgNjUsIAotICAgIDgyLCAyMDUsIDY1LCA4MiwgNzYsIDY1LCA4NSwgMTk5LCA2NSwgODIsIDc1LCA4NCwgNzMsIDc1LCAyMDcsIDY1LCA4MiwgCi0gICAgNzUsIDY1LCA2NiwgMTI4LCA2NSwgODIsIDc1LCA2NSwgNjUsIDc4LCA4NSwgMTI4LCA2NSwgODIsIDczLCA4MywgODQsIDY5LCAKLSAgICA4MiwgNjUsIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgODIsIDE5MywgNjUsIDgyLCA3MywgNjksIDgzLCAxMjgsIAotICAgIDY1LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA2NSwgODIsIDcxLCA3OSwgODMsIDg5LCA3OCwgODQsIDcyLCAKLSAgICA2OSwgODQsIDc5LCA3OCwgMTI4LCA2NSwgODIsIDcxLCA3MywgMTI4LCA2NSwgODIsIDY5LCA4MCwgNjUsIDEyOCwgNjUsIAotICAgIDgyLCA2OCwgNzIsIDY1LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgNzksIDIwNiwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgCi0gICAgMTk1LCA2NSwgODIsIDY3LCAyMDAsIDY1LCA4MiwgNjcsIDEyOCwgNjUsIDgyLCAxOTUsIDY1LCA4MiwgNjUsIDc3LCA2NSwgCi0gICAgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjksIDY1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA4NSwgMTI4LCAKLSAgICA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA3MywgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgNzksIDEyOCwgNjUsIAotICAgIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjUsIDEyOCwgNjUsIDgyLCA2NSwgCi0gICAgNjgsIDEyOCwgNjUsIDgyLCA2NSwgMTk2LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY3LCA0NSwgNzMsIDc4LCA2OCwgNzMsIAotICAgIDE5NSwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA3NywgNjUsIDIwNiwgCi0gICAgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNjksIDY5LCA3NywgMTI4LCA2NSwgODEsIDg1LCA2NSwgODIsIDczLCA4NSwgODMsIAotICAgIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDcwLCA3OSwgODIsIDg0LCA3MywgODMsIDEyOCwgNjUsIDgxLCA4NSwgMTkzLCA2NSwgCi0gICAgODAsIDg1LCAyMDYsIDY1LCA4MCwgODIsIDczLCA3NiwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCAKLSAgICA4NCwgNjksIDc2LCAyMTcsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA2NSwgODAsIAotICAgIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDY5LCAyMTEsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgMTI4LCA2NSwgCi0gICAgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgwLCA3OSwgODQsIDcyLCA2OSwgODMsIAotICAgIDEyOCwgNjUsIDgwLCA3OSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA4MCwgCi0gICAgNzIsIDY5LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDgzLCAKLSAgICA4NCwgODIsIDc5LCA3MCwgNzksIDIxMSwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgMjAxLCA2NSwgODAsIAotICAgIDc5LCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4MiwgNzcsIDE5MywgNjUsIDgwLCA3NiwgCi0gICAgNzksIDg1LCA3OCwgMTI4LCA2NSwgODAsIDc2LCAyMDEsIDY1LCA4MCwgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAKLSAgICAyMDcsIDY1LCA4MCwgNjUsIDgyLCA4NCwgMTI4LCA2NSwgODAsIDY1LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA3OCwgODUsIAotICAgIDgzLCA4NiwgNjUsIDgyLCA2NSwgODksIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgCi0gICAgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgNjUsIDc4LCAKLSAgICA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCA2NSwgNzgsIDg0LCAKLSAgICA3MywgNzcsIDc5LCA3OCwgODksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIDc4LCA4NCwgNzMsIAotICAgIDc3LCA3OSwgNzgsIDczLCA2NSwgODQsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCA3OSwgNzcsIDY1LCAKLSAgICAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCA3OSwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIAotICAgIDc4LCA4NCwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCAKLSAgICA4NywgNzMsIDgzLCA2OSwgNDUsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgCi0gICAgNzksIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCAKLSAgICA2OSwgNzgsIDc4LCAxOTMsIDY1LCA3OCwgODQsIDY1LCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjUsIAotICAgIDc4LCA4MywgODUsIDIxOCwgNjUsIDc4LCA4MywgNzIsIDY5LCAxMjgsIDY1LCA3OCwgODAsIDY5LCA2NSwgMTI4LCA2NSwgCi0gICAgNzgsIDIwNywgNjUsIDc4LCA3OCwgODUsIDczLCA4NCwgMjE3LCA2NSwgNzgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDY1LCA3OCwgNzgsIDY1LCA2NSwgODUsIDEyOCwgNjUsIDc4LCA3NSwgNzIsIDEyOCwgNjUsIDc4LCA3MiwgODUsIAotICAgIDEyOCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgODIsIDEyOCwgNjUsIDc4LCA3MSwgODMsIDg0LCA4MiwgNzksIDIwNSwgCi0gICAgNjUsIDc4LCA3MSwgODIsIDIxNywgNjUsIDc4LCA3MSwgNzUsIDcyLCA2NSwgNzgsIDc1LCA3MiwgODUsIDEyOCwgNjUsIDc4LCAKLSAgICA3MSwgNjksIDIxMCwgNjUsIDc4LCA3MSwgNjksIDc2LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIAotICAgIDY4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA2NywgNzksIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDY3LCA3MiwgNzksIDgyLCAKLSAgICAxMjgsIDY1LCA3OCwgNjUsIDg0LCA4MiwgNzMsIDY3LCA3MiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA2NSwgODAsIAotICAgIDEyOCwgNjUsIDc3LCA4MCwgODMsIDEyOCwgNjUsIDc3LCA4MCwgNjksIDgyLCA4MywgNjUsIDc4LCA2OCwgMTI4LCA2NSwgCi0gICAgNzcsIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDc3LCA2OSwgODIsIDczLCA2NywgNjUsIDgzLCAxMjgsIDY1LCA3NywgNjksIDgyLCAKLSAgICA3MywgNjcsIDY1LCAyMDYsIDY1LCA3NywgNjYsIDg1LCA3NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDc3LCA2NiwgCi0gICAgMTkzLCA2NSwgNzcsIDY1LCA4MiwgMTI4LCA2NSwgNzcsIDY1LCAyMTAsIDY1LCA3NywgNjUsIDc2LCA3MSwgNjUsIDc3LCAKLSAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzcsIDY1LCA3NiwgNzEsIDY1LCA3NywgMTI4LCA2NSwgNzYsIDg2LCA2OSwgNzksIAotICAgIDc2LCA2NSwgMjEwLCA2NSwgNzYsIDg1LCA3NywgMTI4LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIDczLCA4NiwgCi0gICAgMTk3LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCAKLSAgICA2NSwgODQsIDE5NywgNjUsIDc2LCA4NCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDY1LCAxMjgsIDY1LCA3NiwgODAsIAotICAgIDcyLCAxOTMsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIDY1LCA3OCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgCi0gICAgNjUsIDY1LCA3OCwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgMTI4LCA2NSwgNzYsIDc3LCA3OSwgODMsIDIxMiwgNjUsIDc2LCAKLSAgICA3NiwgNzksIDEyOCwgNjUsIDc2LCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NiwgNzYsIDIwMSwgNjUsIAotICAgIDc2LCA3NiwgNjUsIDIwMCwgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgNDUsIDUwLCAxMjgsIDY1LCA3NiwgNzUsIDY1LCA3NiwgCi0gICAgNzMsIDEyOCwgNjUsIDc2LCA3MywgNzEsIDc4LCA2OSwgMTk2LCA2NSwgNzYsIDczLCA3MCwgODUsIDEyOCwgNjUsIDc2LCAKLSAgICA3MywgNjksIDc4LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCAyMDYsIDY1LCA3NiwgNzEsIDczLCAyMTgsIDY1LCA3NiwgNzAsIAotICAgIDY1LCAxMjgsIDY1LCA3NiwgNjksIDg1LCAyMTIsIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgCi0gICAgNjYsIDczLCA2NywgMTI4LCA2NSwgNzYsIDY5LCA3MCwgMTI4LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDY5LCAxMjgsIDY1LCAKLSAgICA3NiwgNjUsIDg5LCA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIDY1LCA4MCwgNzIsIDEyOCwgNjUsIAotICAgIDc2LCA0NSwgNzYsIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgNjksIDgzLCA2OSwgNzYsIDgzLCAKLSAgICA3NSwgNjUsIDY2LCAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCA3MywgNzcsIDczLCAxOTUsIAotICAgIDY1LCA3NSwgNjYsIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIDY1LCA4MiwgMTkzLCA2NSwgCi0gICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAyMDMsIDY1LCA3MywgODQsIDc5LCAKLSAgICAyMDYsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIDc4LCA3OCwgMTI4LCA2NSwgNzMsIAotICAgIDc2LCA3NywgMTI4LCA2NSwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3MywgNzIsIDg2LCA4NSwgODMsIDEyOCwgCi0gICAgNjUsIDcyLCA4MywgNjgsIDY1LCAxMjgsIDY1LCA3MiwgODMsIDY1LCAxMjgsIDY1LCA3MiwgNjUsIDcxLCA3MSwgNjUsIAotICAgIDIxMCwgNjUsIDcyLCA2NSwgNjgsIDEyOCwgNjUsIDcxLCA4NSwgNzgsIDcxLCAxMjgsIDY1LCA3MSwgNzksIDcxLCAyMDEsIAotICAgIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCAKLSAgICA2NSwgODQsIDY5LCAxOTYsIDY1LCA3MSwgNjUsIDczLCA3OCwgMTI4LCA2NSwgNzAsIDg0LCA2OSwgMjEwLCA2NSwgNzAsIAotICAgIDgzLCA2NSwgNjUsIDgxLCAxMjgsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDcwLCA3OSwgODIsIDY5LCA3NywgCi0gICAgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgNjksIDY4LCAxMjgsIDY1LCA3MCwgNzEsIDcyLCA2NSwgNzgsIDIwMSwgNjUsIDcwLCAKLSAgICA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIAotICAgIDY5LCA4OSwgMTI4LCA2NSwgNjksIDgzLCA2NywgODUsIDc2LCA2NSwgODAsIDczLCA4NSwgODMsIDEyOCwgNjUsIDY5LCA4MywgCi0gICAgNjcsIDEyOCwgNjUsIDY5LCA4MywgMTI4LCA2NSwgNjksIDgyLCA3MywgNjUsIDIwNCwgNjUsIDY5LCA4MiwgMTI4LCA2NSwgCi0gICAgNjksIDc2LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDc2LCAxMjgsIDY1LCA2OSwgNzUsIAotICAgIDEyOCwgNjUsIDY5LCA3MSwgNjksIDY1LCAyMDYsIDY1LCA2OSwgNzEsIDEyOCwgNjUsIDY5LCA2OSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDY1LCA2OSwgNjksIDEyOCwgNjUsIDY5LCA2OCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIAotICAgIDEyOCwgNjUsIDY5LCA2OCwgMTI4LCA2NSwgNjksIDY2LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgODQsIDY1LCA3MSwgCi0gICAgNjksIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY4LCA2OSwgNzEsIDEyOCwgNjUsIDY4LCAKLSAgICA2OSwgMTk5LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgCi0gICAgMjExLCA2NSwgNjgsIDY4LCA2NSwgNzUsIDEyOCwgNjUsIDY4LCA2NSwgMjAzLCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCAKLSAgICA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgCi0gICAgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgMTk3LCA2NSwgNjcsIDg0LCA4NSwgNjUsIDc2LCAKLSAgICA3NiwgMjE3LCA2NSwgNjcsIDg0LCA3MywgODYsIDY1LCA4NCwgMTk3LCA2NSwgNjcsIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIAotICAgIDczLCAxOTUsIDY1LCA2NywgNzUsIDc4LCA3OSwgODcsIDc2LCA2OSwgNjgsIDcxLCA2OSwgMTI4LCA2NSwgNjcsIDY3LCA4NSwgCi0gICAgNzcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDY3LCAKLSAgICA2NywgNjksIDgwLCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCA0NSwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgCi0gICAgODQsIDc5LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCAyMTIsIDY1LCAKLSAgICA2NywgNjUsIDY4LCA2OSwgNzcsIDIxNywgNjUsIDY2LCA4OSwgODMsIDc3LCA2NSwgMjA0LCA2NSwgNjYsIDg1LCA3OCwgNjgsIAotICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2NiwgNzUsIDcyLCA2NSwgODMsIDczLCA2NSwgMjA2LCA2NSwgNjYsIDY2LCA4MiwgCi0gICAgNjksIDg2LCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDY2LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY2LCAKLSAgICAxNzgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2NSwgODksIDEyOCwgNjUsIDY1LCA4NywgMTI4LCAKLSAgICA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgNjUsIDY1LCA2NiwgNjUsIDY1LCA3MCwgNzMsIDc2LCA3MywgCi0gICAgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUxLCAKLSAgICA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUzLCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCAKLSAgICA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU3LCAxMjgsIAotICAgIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU0LCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDksIAotICAgIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDksIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgCi0gICAgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCAKLSAgICA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDQ4LCA0OSwgMTI4LCA2NSwgNDgsIDU1LCA0OCwgMTI4LCA2NSwgNDgsIDU0LCA1NywgMTI4LCA2NSwgNDgsIDU0LCA1NiwgCi0gICAgMTI4LCA2NSwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgMTI4LCA2NSwgNDgsIDU0LCA1MywgMTI4LCA2NSwgCi0gICAgNDgsIDU0LCA1MiwgMTI4LCA2NSwgNDgsIDU0LCA1MSwgMTI4LCA2NSwgNDgsIDU0LCA1MCwgMTI4LCA2NSwgNDgsIDU0LCAKLSAgICA0OSwgMTI4LCA2NSwgNDgsIDU0LCA0OCwgMTI4LCA2NSwgNDgsIDUzLCA1NywgMTI4LCA2NSwgNDgsIDUzLCA1NiwgMTI4LCAKLSAgICA2NSwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgNDgsIDUzLCA1NCwgMTI4LCA2NSwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNDgsIAotICAgIDUzLCA1MiwgMTI4LCA2NSwgNDgsIDUzLCA1MSwgMTI4LCA2NSwgNDgsIDUzLCA1MCwgMTI4LCA2NSwgNDgsIDUzLCA0OSwgCi0gICAgMTI4LCA2NSwgNDgsIDUzLCA0OCwgMTI4LCA2NSwgNDgsIDUyLCA1NywgMTI4LCA2NSwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgCi0gICAgNDgsIDUyLCA1NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MiwgNTMsIDEyOCwgNjUsIDQ4LCA1MiwgNTIsIDEyOCwgNjUsIDQ4LCA1MiwgNTEsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIAotICAgIDUxLCAxMjgsIDY1LCA0OCwgNTIsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgMTI4LCA2NSwgNDgsIDUyLCA0OSwgCi0gICAgMTI4LCA2NSwgNDgsIDUyLCA0OCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIDEyOCwgCi0gICAgNjUsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDQ4LCA1MSwgNTQsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MSwgNTMsIDEyOCwgNjUsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDQ4LCA1MSwgNTEsIDEyOCwgNjUsIDQ4LCA1MSwgNTAsIAotICAgIDY1LCAxMjgsIDY1LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgCi0gICAgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjUsIDQ1LCAKLSAgICA2OSwgODUsIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgNzIsIDgyLCA4NSwgMTI4LCA0NSwgNzUsIDcyLCA4OSwgODUsIAotICAgIDE5NiwgNDUsIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCA0NSwgNjgsIDkwLCA4NSwgMTk2LCA0NSwgNjcsIDcyLCA2NSwgCi0gICAgMjEwLCA0NSwgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCisgICAgNjcsIDY3LCA3MiwgMTI4LCA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgNjUsIDY1LCAKKyAgICAxMjgsIDY3LCA2NywgNjUsIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNjcsIDY1LCA4OCwgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDY3LCA2NSwgODUsIDc2LCA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNjcsIDY1LCA4NSwgCisgICAgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCA2NSwgODQsIDEyOCwgNjcsIDY1LCAyMTIsIDY3LCA2NSwgCisgICAgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIDY1LCA4MiwgODksIDgzLCA4NCwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDg0LCAKKyAgICAxMjgsIDY3LCA2NSwgODIsIDIxMSwgNjcsIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNjcsIDY1LCA4MiwgODAsIAorICAgIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY3LCA2NSwgODIsIDIwOCwgNjcsIDY1LCA4MiwgNzksIDg1LCA4MywgNjksIDIwNCwgCisgICAgNjcsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODIsIDc5LCAyMDYsIDY3LCA2NSwgODIsIDczLCAyMDMsIDY3LCAKKyAgICA2NSwgODIsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA2OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgNjksIDIxMiwgNjcsIAorICAgIDY1LCA4MiwgMTk3LCA2NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjcsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDY1LCA4MiwgCisgICAgMTk2LCA2NywgNjUsIDgyLCAxMjgsIDY3LCA2NSwgMjEwLCA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIDgwLCA4NCwgCisgICAgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDgwLCA4MiwgNzMsIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgODAsIDc5LCAKKyAgICAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIAorICAgIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCAxOTksIDY3LCA2NSwgNzgsIDY4LCA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgCisgICAgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIAorICAgIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDE5MywgNjcsIDY1LCA3OCwgCisgICAgNjcsIDY5LCA4MiwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCAKKyAgICA3OCwgNjcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDIwNCwgNjcsIDY1LCA3OCwgMTI4LCA2NywgNjUsIAorICAgIDc3LCA3OCwgODUsIDE5NSwgNjcsIDY1LCA3NywgNjksIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgCisgICAgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCA2NSwgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCAKKyAgICA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgCisgICAgMTI4LCA2NywgNjUsIDc1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDczLCAxMjgsIDY3LCA2NSwgCisgICAgNzIsIDEyOCwgNjcsIDY1LCA2OSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgODUsIDgzLCAKKyAgICAxMjgsIDY3LCA2NSwgNjgsIDE5MywgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCA3NiwgNjksIAorICAgIDg3LCA2NSwgODksIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA2NywgCisgICAgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgNDksIDEyOCwgNjcsIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDQ4LCA0OSwgNTUsIAorICAgIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCA0OSwgNTIsIDEyOCwgNjcsIAorICAgIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIDQ4LCA0OSwgCisgICAgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA0OCwgNDgsIDU2LCAKKyAgICAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgNDgsIDUzLCAxMjgsIDY3LCAKKyAgICA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NywgMTI4LCA2NywgNDgsIAorICAgIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAxMjgsIDY3LCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA2NywgNDUsIDUxLCAKKyAgICA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgOTAsIDcyLCAyMDEsIDY2LCAKKyAgICA4OSwgODQsIDE5NywgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCA3OCwgNDUsIDg1LCA3NSwgCisgICAgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIDEyOCwgNjYsIDg3LCAKKyAgICA2OSwgNjksIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIDc3LCA3MywgODMsIAorICAgIDcyLCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCAyMTIsIDY2LCA4NSwgODMsIDg0LCAyMTEsIAorICAgIDY2LCA4NSwgODMsIDIxMiwgNjYsIDg1LCA4MywgODMsIDg5LCA2OSwgODIsIDg1LCAxMjgsIDY2LCA4NSwgMjExLCA2NiwgCisgICAgODUsIDgyLCAyMTMsIDY2LCA4NSwgODIsIDUwLCAxMjgsIDY2LCA4NSwgMjEwLCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgCisgICAgODUsIDc5LCA4MCwgMTI4LCA2NiwgODUsIDc4LCA3OCwgMjE3LCA2NiwgODUsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDc3LCAKKyAgICA4MCwgMjE3LCA2NiwgODUsIDc2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3NiwgODUsIDE5OSwgNjYsIDg1LCA3NiwgNzYsIAorICAgIDgzLCA2OSwgODksIDY5LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCAyMTEsIDY2LCA4NSwgNzYsIDc2LCA2OSwgODQsIDEyOCwgCisgICAgNjYsIDg1LCA3NiwgNzYsIDY5LCAyMTIsIDY2LCA4NSwgNzYsIDc2LCAxMjgsIDY2LCA4NSwgNzYsIDY2LCAxMjgsIDY2LCAKKyAgICA4NSwgNzUsIDg5LCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgODMsIDEyOCwgNjYsIDg1LCA3MywgNzYsIAorICAgIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzIsIDczLCAxOTYsIDY2LCA4NSwgNzEsIDczLCA3OCwgNjksIDgzLCAKKyAgICAxOTcsIDY2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3MCwgNzAsIDY1LCA3NiwgNzksIDEyOCwgNjYsIDg1LCA2NywgNzUsIAorICAgIDc2LCA2OSwgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgCisgICAgNjUsIDE3MywgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDY2LCA4MiwgODUsIDgzLCAKKyAgICAyMDAsIDY2LCA4MiwgNzksIDc4LCA5MCwgNjksIDEyOCwgNjYsIDgyLCA3OSwgNzUsIDY5LCAyMDYsIDY2LCA4MiwgNzksIAorICAgIDY1LCAxOTYsIDY2LCA4MiwgNzMsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgCisgICAgODMsIDIxMSwgNjYsIDgyLCA3MywgNjksIDcwLCA2NywgNjUsIDgzLCA2OSwgMTI4LCA2NiwgODIsIDczLCA2OCwgNzEsIAorICAgIDE5NywgNjYsIDgyLCA3MywgNjgsIDE5NywgNjYsIDgyLCA3MywgNjcsIDc1LCAxMjgsIDY2LCA4MiwgNjksIDg2LCA3MywgCisgICAgODMsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NiwgODIsIDY5LCAKKyAgICA4NiwgMTk3LCA2NiwgODIsIDY5LCA2NSwgODQsIDIwMCwgNjYsIDgyLCA2OSwgNjUsIDc1LCA4NCwgNzIsIDgyLCA3OSwgODUsIAorICAgIDcxLCA3MiwgMTI4LCA2NiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgNjYsIDgyLCA2OCwgMTkzLCA2NiwgODIsIDY1LCA3OCwgCisgICAgNjcsIDcyLCA3MywgNzgsIDE5OSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIAorICAgIDIwMCwgNjYsIDgyLCA2NSwgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDY5LCAKKyAgICAxOTYsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA4MSwgMTI4LCAKKyAgICA2NiwgODAsIDcyLCAxMjgsIDY2LCA3OSwgODksIDEyOCwgNjYsIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCA2NiwgNzksIAorICAgIDg3LCA4NCwgNzMsIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIDEyOCwgCisgICAgNjYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3OSwgMjE1LCA2NiwgNzksIDg1LCA4MSwgODUsIDY5LCA4NCwgMTI4LCAKKyAgICA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCA4MiwgMjE3LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCA0NSwgNzYsIDczLCA3MSwgCisgICAgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3OSwgMjA1LCAKKyAgICA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgMTk3LCA2NiwgNzksIDg0LCAyMDAsIAorICAgIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTEsIDEyOCwgNjYsIDc5LCA4MiwgCisgICAgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIDY2LCA3OSwgODAsIDc5LCA3NywgNzksIDcwLCAKKyAgICAyMDcsIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgMTI4LCA2NiwgNzksIDc5LCA3NywgNjksIAorICAgIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgCisgICAgNzUsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIDc5LCA3OCwgNjksIDEyOCwgNjYsIDc5LCAKKyAgICA3NywgNjYsIDEyOCwgNjYsIDc5LCA3NywgMTI4LCA2NiwgNzksIDc2LCA4NCwgMTI4LCA2NiwgNzksIDc2LCAyMTIsIDY2LCAKKyAgICA3OSwgNzIsIDY1LCA3MywgODIsIDczLCAxOTUsIDY2LCA3OSwgNjgsIDg5LCAxMjgsIDY2LCA3OSwgNjUsIDgyLCAxMjgsIAorICAgIDY2LCA3OSwgNjUsIDEyOCwgNjYsIDc2LCA4NSwgNjksIDEyOCwgNjYsIDc2LCA4NSwgMTk3LCA2NiwgNzYsIDc5LCA4NywgCisgICAgNzAsIDczLCA4MywgNzIsIDEyOCwgNjYsIDc2LCA3OSwgODMsIDgzLCA3OSwgNzcsIDEyOCwgNjYsIDc2LCA3OSwgNzksIDY4LCAKKyAgICAxMjgsIDY2LCA3NiwgNzksIDc4LCAxOTYsIDY2LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA2NiwgNzYsIDY5LCA3OCwgNjgsIAorICAgIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNzYsIDY1LCA3OCwgMjAzLCA2NiwgNzYsIDY1LCA2OCwgCisgICAgMTk3LCA2NiwgNzYsIDY1LCA2NywgNzUsIDcwLCA3OSwgNzksIDIxMiwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzYsIDY5LCAKKyAgICA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgCisgICAgMTk2LCA2NiwgNzYsIDY1LCA2NywgNzUsIDEyOCwgNjYsIDc1LCA2NSwgMTczLCA2NiwgNzMsIDg0LCA4NCwgNjksIDgyLCAKKyAgICAxMjgsIDY2LCA3MywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA3NywgODUsIDg0LCAyMDAsIDY2LCA3MywgODMsIAorICAgIDc3LCA3MywgNzYsIDc2LCA2NSwgMjAwLCA2NiwgNzMsIDgzLCA3MiwgNzksIDgwLCAxMjgsIDY2LCA3MywgODMsIDY5LCA2NywgCisgICAgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA2NSwgNzIsIDEyOCwgNjYsIDczLCA4MiwgODUsIDEyOCwgNjYsIDczLCAKKyAgICA4MiwgODQsIDcyLCA2OCwgNjUsIDIxNywgNjYsIDczLCA4MiwgNzEsIDY1LCAxMjgsIDY2LCA3MywgODIsIDY4LCAxMjgsIAorICAgIDY2LCA3MywgNzksIDcyLCA2NSwgOTAsIDY1LCA4MiwgMTk2LCA2NiwgNzMsIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgCisgICAgNjYsIDczLCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgNjYsIDczLCA3OCwgNjUsIDgyLCAKKyAgICAyMTcsIDY2LCA3MywgNzYsIDc2LCA3MywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNjUsIDY2LCA3MywgNjUsIAorICAgIDIwNCwgNjYsIDczLCA3NSwgNzMsIDc4LCA3MywgMTI4LCA2NiwgNzMsIDcxLCAxMjgsIDY2LCA3MywgMTk5LCA2NiwgNzMsIAorICAgIDY5LCA4NCwgMTI4LCA2NiwgNzMsIDY4LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2NiwgNzMsIDY4LCA2NSwgNzUsIDg1LCA3OSwgCisgICAgMjA2LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA3MywgODMsIDg0LCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAKKyAgICA4MywgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA2NiwgNzMsIDY3LCA2OSwgODAsIDgzLCAxMjgsIAorICAgIDY2LCA3MywgNjYsIDc2LCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNjYsIDczLCA2NiwgMTI4LCA2NiwgMjAxLCA2NiwgCisgICAgNzIsIDg1LCAxMjgsIDY2LCA3MiwgNzksIDc5LCAxMjgsIDY2LCA3MiwgNzksIDEyOCwgNjYsIDcyLCA3MywgMTI4LCA2NiwgCisgICAgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDcyLCA2OSwgNjksIDEyOCwgNjYsIDcyLCA2OSwgMTI4LCA2NiwgNzIsIDY1LCAKKyAgICA4NCwgODQsIDczLCA4MCwgODIsIDc5LCA3NiwgMjEzLCA2NiwgNzIsIDY1LCA3NywgMTI4LCA2NiwgNzIsIDY1LCA2NSwgCisgICAgMTI4LCA2NiwgNzIsIDY1LCAxMjgsIDY2LCA2OSwgODksIDg5LCA2NSwgNzYsIDEyOCwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgCisgICAgNjksIDg2LCA2OSwgODIsIDY1LCA3MSwgNjksIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgNzgsIDEyOCwgNjYsIDY5LCAKKyAgICA4NCwgODcsIDY5LCA2OSwgMjA2LCA2NiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIAorICAgIDg0LCAxOTMsIDY2LCA2OSwgMjEyLCA2NiwgNjksIDgzLCA3MywgNjgsIDE5NywgNjYsIDY5LCA4MiwgNzUsIDY1LCA3OCwgCisgICAgNjUsIDIwNiwgNjYsIDY5LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY5LCA3OSwgODIsIDE5NSwgCisgICAgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCA2NiwgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCA2OCwgNjksIAorICAgIDEyOCwgNjYsIDY5LCA3OCwgNjgsIDEyOCwgNjYsIDY5LCAyMDYsIDY2LCA2OSwgNzYsIDg0LCAxMjgsIDY2LCA2OSwgNzYsIAorICAgIDIxMiwgNjYsIDY5LCA3NiwgNzksIDIxNSwgNjYsIDY5LCA3NiwgNzYsIDEyOCwgNjYsIDY5LCA3NiwgMjA0LCA2NiwgNjksIAorICAgIDc2LCA3MSwgODQsIDcyLCA3OSwgMjEwLCA2NiwgNjksIDc2LCAxMjgsIDY2LCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA2NiwgCisgICAgNjksIDcyLCA3MywgNzgsIDE5NiwgNjYsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDY5LCAyMDAsIDY2LCAKKyAgICA2OSwgNzIsIDEyOCwgNjYsIDY5LCAyMDAsIDY2LCA2OSwgNzEsIDczLCA3OCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIAorICAgIDY5LCA3MSwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDY2LCA2OSwgNzEsIDczLCAyMDYsIDY2LCA2OSwgNzAsIDc5LCA4MiwgCisgICAgMTk3LCA2NiwgNjksIDY5LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA2OSwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIDY5LCAKKyAgICAyMTAsIDY2LCA2OSwgNjksIDcyLCA3MywgODYsIDY5LCAxMjgsIDY2LCA2OSwgNjksIDcyLCAxMjgsIDY2LCA2OSwgNjksIAorICAgIDIwMCwgNjYsIDY5LCA2NywgNjUsIDg1LCA4MywgNjksIDEyOCwgNjYsIDY5LCA2NSwgODYsIDY5LCAyMTAsIDY2LCA2OSwgCisgICAgNjUsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDY5LCA2NSwgODQsIDEyOCwgNjYsIDY5LCA2NSwgMjEwLCA2NiwgNjksIDY1LCAKKyAgICA3OCwgMTI4LCA2NiwgNjksIDY1LCA3NywgNjksIDE5NiwgNjYsIDY3LCA2NSwgNjgsIDEyOCwgNjYsIDY3LCA2NSwgMTk2LCAKKyAgICA2NiwgNjYsIDg5LCA4OCwgMTI4LCA2NiwgNjYsIDg5LCA4NCwgMTI4LCA2NiwgNjYsIDg5LCA4MCwgMTI4LCA2NiwgNjYsIAorICAgIDg5LCAxMjgsIDY2LCA2NiwgODUsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDg0LCAxMjgsIDY2LCA2NiwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA2NiwgNjYsIDg1LCA4MiwgMTI4LCA2NiwgNjYsIDg1LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgNjYsIDY2LCA4NSwgNzksIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCAxMjgsIDY2LCA2NiwgODUsIDEyOCwgNjYsIDY2LCAKKyAgICA3OSwgODgsIDEyOCwgNjYsIDY2LCA3OSwgODQsIDEyOCwgNjYsIDY2LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA3OSwgMTI4LCAKKyAgICA2NiwgNjYsIDczLCA4OCwgMTI4LCA2NiwgNjYsIDczLCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODgsIDEyOCwgNjYsIAorICAgIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgMTI4LCA2NiwgCisgICAgNjYsIDczLCAxMjgsIDY2LCA2NiwgNjksIDg4LCAxMjgsIDY2LCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2NiwgNjksIDY5LCAKKyAgICAxMjgsIDY2LCA2NiwgNjksIDEyOCwgNjYsIDY2LCA2NSwgODgsIDEyOCwgNjYsIDY2LCA2NSwgODQsIDEyOCwgNjYsIDY2LCAKKyAgICA2NSwgODAsIDEyOCwgNjYsIDY2LCA2NSwgNjUsIDEyOCwgNjYsIDY2LCA2NSwgMTI4LCA2NiwgNjUsIDg5LCA2NSwgNzgsIAorICAgIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDg1LCAxMjgsIDY2LCA2NSwgODQsIDg0LCA2OSwgODIsIDg5LCAxMjgsIDY2LCA2NSwgCisgICAgODQsIDcyLCA4NCwgODUsIDY2LCAxMjgsIDY2LCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDY2LCAKKyAgICA2NSwgODQsIDcyLCAxMjgsIDY2LCA2NSwgODQsIDIwMCwgNjYsIDY1LCA4NCwgNjUsIDIwMywgNjYsIDY1LCA4MywgODMsIAorICAgIDY1LCAxMjgsIDY2LCA2NSwgODMsIDc1LCA2OSwgODQsIDY2LCA2NSwgNzYsIDIwNCwgNjYsIDY1LCA4MywgNzIsIDc1LCA3MywgCisgICAgMjEwLCA2NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNjYsIDY1LCAKKyAgICA4MywgNjksIDEyOCwgNjYsIDY1LCA4MywgMTk3LCA2NiwgNjUsIDgyLCA4MywgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNzMsIAorICAgIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDc1LCA3MiwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDY5LCAKKyAgICAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk3LCA2NiwgNjUsIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA2NiwgNjUsIAorICAgIDgyLCA3NiwgNjksIDg5LCAxMjgsIDY2LCA2NSwgODIsIDczLCA4OSwgNzksIDc5LCA4MywgNjUsIDc4LCAxMjgsIDY2LCA2NSwgCisgICAgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjUsIDgyLCAxOTQsIDY2LCA2NSwgODIsIDY1LCA1MCwgMTI4LCA2NiwgNjUsIDIxMCwgCisgICAgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCA4NCwgMTk3LCA2NiwgNjUsIDc4LCAKKyAgICA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCA2NSwgNzgsIDY1LCA3OCwgNjUsIAorICAgIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCA4MywgCisgICAgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgNjUsIDEyOCwgNjYsIDY1LCAKKyAgICA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIAorICAgIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCA2NSwgNzYsIDY1LCA3MSwgMTI4LCA2NiwgNjUsIDc2LCAKKyAgICAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDczLCA3NywgNjUsIAorICAgIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgCisgICAgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA2NiwgNjUsIDcyLCAxMjgsIDY2LCA2NSwgNzEsIDcxLCAKKyAgICA2NSwgNzEsIDE5NywgNjYsIDY1LCA3MSwgNjUsIDEyOCwgNjYsIDY1LCA3MSwgNTEsIDEyOCwgNjYsIDY1LCAxOTksIDY2LCAKKyAgICA2NSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA2OCwgNzEsIDY5LCAxMjgsIDY2LCA2NSwgNjgsIDEyOCwgNjYsIAorICAgIDY1LCA2NywgODQsIDgyLCA3MywgNjUsIDIwNiwgNjYsIDY1LCA2NywgNzUsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDY2LCA2NSwgCisgICAgNjcsIDc1LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCAKKyAgICA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDIwMCwgNjYsIDY1LCA2NywgNzUsIDcyLCA2NSwgNzgsIDE5NiwgNjYsIAorICAgIDY1LCA2NywgNzUsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIDEyOCwgNjYsIDY1LCA2NywgCisgICAgMjAzLCA2NiwgNjUsIDY2LCA4OSwgMTI4LCA2NiwgNjUsIDY2LCAyMTcsIDY2LCA2NSwgNjUsIDgyLCA2OSwgODIsIDg1LCAKKyAgICAxMjgsIDY2LCA2NSwgNDUsIDUwLCAxMjgsIDY2LCA1MSwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDU3LCAxMjgsIDY2LCAKKyAgICA1MCwgNTMsIDU2LCAxMjgsIDY2LCA1MCwgNTMsIDU1LCAxMjgsIDY2LCA1MCwgNTMsIDU0LCAxMjgsIDY2LCA1MCwgNTMsIAorICAgIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDE4MCwgNjYsIDUwLCA1MywgNTEsIDEyOCwgNjYsIDUwLCA1MywgNTAsIDEyOCwgNjYsIAorICAgIDUwLCA1MywgNDksIDEyOCwgNjYsIDUwLCA1MywgNDgsIDEyOCwgNjYsIDUwLCA1MiwgNTcsIDEyOCwgNjYsIDUwLCA1MiwgCisgICAgNTYsIDEyOCwgNjYsIDUwLCA1MiwgMTgzLCA2NiwgNTAsIDUyLCA1NCwgMTI4LCA2NiwgNTAsIDUyLCA1MywgMTI4LCA2NiwgCisgICAgNTAsIDUyLCAxNzksIDY2LCA1MCwgNTIsIDE3OCwgNjYsIDUwLCA1MiwgMTc3LCA2NiwgNTAsIDUyLCAxNzYsIDY2LCA1MCwgCisgICAgNTEsIDU0LCAxMjgsIDY2LCA1MCwgNTEsIDUyLCAxMjgsIDY2LCA1MCwgNTEsIDE3OSwgNjYsIDUwLCA1MSwgNTAsIDEyOCwgCisgICAgNjYsIDUwLCA1MSwgMTc3LCA2NiwgNTAsIDUxLCAxNzYsIDY2LCA1MCwgNTAsIDU3LCAxMjgsIDY2LCA1MCwgNTAsIDU2LCAKKyAgICAxMjgsIDY2LCA1MCwgNTAsIDU1LCAxMjgsIDY2LCA1MCwgNTAsIDU0LCAxMjgsIDY2LCA1MCwgNTAsIDE4MSwgNjYsIDUwLCAKKyAgICA1MCwgNTAsIDEyOCwgNjYsIDUwLCA1MCwgNDksIDEyOCwgNjYsIDUwLCA1MCwgMTc2LCA2NiwgNTAsIDQ5LCA1NywgMTI4LCAKKyAgICA2NiwgNTAsIDQ5LCA1NiwgMTI4LCA2NiwgNTAsIDQ5LCA1NSwgMTI4LCA2NiwgNTAsIDQ5LCA1NCwgMTI4LCA2NiwgNTAsIAorICAgIDQ5LCA1MywgMTI4LCA2NiwgNTAsIDQ5LCA1MiwgMTI4LCA2NiwgNTAsIDQ5LCA1MSwgMTI4LCA2NiwgNTAsIDQ5LCA1MCwgCisgICAgMTI4LCA2NiwgNTAsIDQ5LCA0OSwgMTI4LCA2NiwgNTAsIDQ5LCA0OCwgMTI4LCA2NiwgNTAsIDQ4LCA1NywgMTI4LCA2NiwgCisgICAgNTAsIDQ4LCA1NiwgMTI4LCA2NiwgNTAsIDQ4LCA1NSwgMTI4LCA2NiwgNTAsIDQ4LCA1NCwgMTI4LCA2NiwgNTAsIDQ4LCAKKyAgICA1MywgMTI4LCA2NiwgNTAsIDQ4LCA1MiwgMTI4LCA2NiwgNTAsIDQ4LCA1MSwgMTI4LCA2NiwgNTAsIDQ4LCA1MCwgMTI4LCAKKyAgICA2NiwgNTAsIDQ4LCA0OSwgMTI4LCA2NiwgNTAsIDQ4LCA0OCwgMTI4LCA2NiwgNDksIDU3LCAxNzcsIDY2LCA0OSwgNTcsIAorICAgIDQ4LCAxMjgsIDY2LCA0OSwgNTYsIDU3LCAxMjgsIDY2LCA0OSwgNTYsIDUzLCAxMjgsIDY2LCA0OSwgNTYsIDUyLCAxMjgsIAorICAgIDY2LCA0OSwgNTYsIDUxLCAxMjgsIDY2LCA0OSwgNTYsIDUwLCAxMjgsIDY2LCA0OSwgNTYsIDQ5LCAxMjgsIDY2LCA0OSwgCisgICAgNTYsIDQ4LCAxMjgsIDY2LCA0OSwgNTUsIDU3LCAxMjgsIDY2LCA0OSwgNTUsIDU2LCAxMjgsIDY2LCA0OSwgNTUsIDU1LCAKKyAgICAxMjgsIDY2LCA0OSwgNTUsIDE4MiwgNjYsIDQ5LCA1NSwgNTIsIDEyOCwgNjYsIDQ5LCA1NSwgMTc5LCA2NiwgNDksIDU1LCAKKyAgICA1MCwgMTI4LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NiwgNDksIDU1LCA0OCwgMTI4LCA2NiwgNDksIDU0LCA1NywgMTI4LCAKKyAgICA2NiwgNDksIDU0LCA1NiwgMTI4LCA2NiwgNDksIDU0LCA1NSwgMTI4LCA2NiwgNDksIDU0LCA1NCwgMTI4LCA2NiwgNDksIAorICAgIDU0LCA1MywgMTI4LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NiwgNDksIDU0LCAxNzksIDY2LCA0OSwgNTQsIDE3OCwgNjYsIAorICAgIDQ5LCA1NCwgNDksIDEyOCwgNjYsIDQ5LCA1NCwgNDgsIDEyOCwgNjYsIDQ5LCA1MywgMTg1LCA2NiwgNDksIDUzLCA1NiwgCisgICAgMTI4LCA2NiwgNDksIDUzLCA1NSwgMTI4LCA2NiwgNDksIDUzLCAxODIsIDY2LCA0OSwgNTMsIDUzLCAxMjgsIDY2LCA0OSwgCisgICAgNTMsIDUyLCAxMjgsIDY2LCA0OSwgNTMsIDUxLCAxMjgsIDY2LCA0OSwgNTMsIDUwLCAxMjgsIDY2LCA0OSwgNTMsIDE3NywgCisgICAgNjYsIDQ5LCA1MywgNDgsIDEyOCwgNjYsIDQ5LCA1MiwgNTQsIDEyOCwgNjYsIDQ5LCA1MiwgMTgxLCA2NiwgNDksIDUyLCAKKyAgICA1MCwgMTI4LCA2NiwgNDksIDUyLCAxNzcsIDY2LCA0OSwgNTIsIDE3NiwgNjYsIDQ5LCA1MSwgMTgxLCA2NiwgNDksIDUxLCAKKyAgICAxNzksIDY2LCA0OSwgNTEsIDUwLCAxMjgsIDY2LCA0OSwgNTEsIDE3NywgNjYsIDQ5LCA1MSwgMTc2LCA2NiwgNDksIDUwLCAKKyAgICAxODQsIDY2LCA0OSwgNTAsIDE4MywgNjYsIDQ5LCA1MCwgMTgxLCA2NiwgNDksIDUwLCAxNzksIDY2LCA0OSwgNTAsIDE3OCwgCisgICAgNjYsIDQ5LCA1MCwgMTc3LCA2NiwgNDksIDUwLCAxNzYsIDY2LCA0OSwgNDgsIDU3LCAyMDUsIDY2LCA0OSwgNDgsIDU3LCAKKyAgICAxOTgsIDY2LCA0OSwgNDgsIDU2LCAyMDUsIDY2LCA0OSwgNDgsIDU2LCAxOTgsIDY2LCA0OSwgNDgsIDU1LCAyMDUsIDY2LCAKKyAgICA0OSwgNDgsIDU1LCAxOTgsIDY2LCA0OSwgNDgsIDU0LCAyMDUsIDY2LCA0OSwgNDgsIDU0LCAxOTgsIDY2LCA0OSwgNDgsIAorICAgIDUzLCAyMDUsIDY2LCA0OSwgNDgsIDUzLCAxOTgsIDY2LCA0OSwgNDgsIDE4MSwgNjYsIDQ5LCA0OCwgMTgwLCA2NiwgNDksIAorICAgIDQ4LCAxNzgsIDY2LCA0OSwgNDgsIDE3NiwgNjYsIDQ4LCA1NywgMTc3LCA2NiwgNDgsIDU3LCAxNzYsIDY2LCA0OCwgNTYsIAorICAgIDU3LCAxMjgsIDY2LCA0OCwgNTYsIDE4MywgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjYsIDQ4LCA1NiwgMTgxLCA2NiwgNDgsIAorICAgIDU2LCA1MSwgMTI4LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NiwgNDgsIDU2LCAxNzcsIDY2LCA0OCwgNTYsIDE3NiwgNjYsIAorICAgIDQ4LCA1NSwgNTcsIDEyOCwgNjYsIDQ4LCA1NSwgMTg0LCA2NiwgNDgsIDU1LCAxODMsIDY2LCA0OCwgNTUsIDE4MiwgNjYsIAorICAgIDQ4LCA1NSwgMTgxLCA2NiwgNDgsIDU1LCAxODAsIDY2LCA0OCwgNTUsIDE3OSwgNjYsIDQ4LCA1NSwgMTc4LCA2NiwgNDgsIAorICAgIDU1LCAxNzcsIDY2LCA0OCwgNTUsIDE3NiwgNjYsIDQ4LCA1NCwgMTg1LCA2NiwgNDgsIDU0LCAxODQsIDY2LCA0OCwgNTQsIAorICAgIDE4MywgNjYsIDQ4LCA1NCwgMTgyLCA2NiwgNDgsIDU0LCAxODEsIDY2LCA0OCwgNTQsIDUyLCAxMjgsIDY2LCA0OCwgNTQsIAorICAgIDUxLCAxMjgsIDY2LCA0OCwgNTQsIDE3OCwgNjYsIDQ4LCA1NCwgMTc3LCA2NiwgNDgsIDU0LCAxNzYsIDY2LCA0OCwgNTMsIAorICAgIDE4NSwgNjYsIDQ4LCA1MywgMTg0LCA2NiwgNDgsIDUzLCAxODMsIDY2LCA0OCwgNTMsIDU0LCAxMjgsIDY2LCA0OCwgNTMsIAorICAgIDE4MSwgNjYsIDQ4LCA1MywgMTgwLCA2NiwgNDgsIDUzLCAxNzksIDY2LCA0OCwgNTMsIDE3OCwgNjYsIDQ4LCA1MywgMTc3LCAKKyAgICA2NiwgNDgsIDUzLCAxNzYsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY2LCA0OCwgNTIsIDE4NCwgNjYsIDQ4LCA1MiwgNTUsIAorICAgIDEyOCwgNjYsIDQ4LCA1MiwgMTgyLCA2NiwgNDgsIDUyLCAxODEsIDY2LCA0OCwgNTIsIDE4MCwgNjYsIDQ4LCA1MiwgMTc5LCAKKyAgICA2NiwgNDgsIDUyLCAxNzgsIDY2LCA0OCwgNTIsIDE3NywgNjYsIDQ4LCA1MiwgMTc2LCA2NiwgNDgsIDUxLCAxODUsIDY2LCAKKyAgICA0OCwgNTEsIDE4NCwgNjYsIDQ4LCA1MSwgMTgzLCA2NiwgNDgsIDUxLCAxODIsIDY2LCA0OCwgNTEsIDUyLCAxMjgsIDY2LCAKKyAgICA0OCwgNTEsIDE3OSwgNjYsIDQ4LCA1MSwgMTc4LCA2NiwgNDgsIDUxLCAxNzcsIDY2LCA0OCwgNTEsIDE3NiwgNjYsIDQ4LCAKKyAgICA1MCwgMTg1LCA2NiwgNDgsIDUwLCAxODQsIDY2LCA0OCwgNTAsIDE4MywgNjYsIDQ4LCA1MCwgMTgyLCA2NiwgNDgsIDUwLCAKKyAgICAxODEsIDY2LCA0OCwgNTAsIDE4MCwgNjYsIDQ4LCA1MCwgMTc5LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCA2NiwgNDgsIDUwLCAKKyAgICAxNzcsIDY2LCA0OCwgNTAsIDE3NiwgNjYsIDQ4LCA0OSwgNTcsIDEyOCwgNjYsIDQ4LCA0OSwgNTYsIDEyOCwgNjYsIDQ4LCAKKyAgICA0OSwgMTgzLCA2NiwgNDgsIDQ5LCAxODIsIDY2LCA0OCwgNDksIDE4MSwgNjYsIDQ4LCA0OSwgMTgwLCA2NiwgNDgsIDQ5LCAKKyAgICAxNzksIDY2LCA0OCwgNDksIDE3OCwgNjYsIDQ4LCA0OSwgMTc3LCA2NiwgNDgsIDQ5LCAxNzYsIDY2LCA0OCwgNDgsIDU3LCAKKyAgICAxMjgsIDY2LCA0OCwgNDgsIDE4NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjYsIDQ4LCA0OCwgMTg0LCA2NiwgNDgsIDQ4LCAKKyAgICA1NSwgMTI4LCA2NiwgNDgsIDQ4LCAxODMsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY2LCA0OCwgNDgsIDE4MiwgNjYsIDQ4LCAKKyAgICA0OCwgNTMsIDY1LCAxMjgsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY2LCA0OCwgNDgsIDE4MSwgNjYsIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgNjYsIDQ4LCA0OCwgMTgwLCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzksIDY2LCA0OCwgNDgsIAorICAgIDUwLCAxMjgsIDY2LCA0OCwgNDgsIDE3OCwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjYsIDQ4LCA0OCwgMTc3LCA2NSwgOTAsIAorICAgIDg1LCAxMjgsIDY1LCA4OSwgNjksIDIxMCwgNjUsIDg5LCA2NiwgMTI4LCA2NSwgODksIDY1LCA3MiwgMTI4LCA2NSwgODgsIAorICAgIDY5LCAxMjgsIDY1LCA4NywgNjksIDEyOCwgNjUsIDg2LCA2OSwgODMsIDg0LCA2NSwgMjA2LCA2NSwgODYsIDY5LCA4MiwgCisgICAgNjUsIDcxLCAxOTcsIDY1LCA4NiwgNjUsIDc1LCA4MiwgNjUsIDcyLCA2NSwgODMsIDY1LCA3OCwgODksIDY1LCAxMjgsIDY1LCAKKyAgICA4NiwgNjUsIDcxLCA4MiwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgODUsIAorICAgIDg0LCA4NSwgNzcsIDc4LCAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNzksIDY2LCA3MywgNzYsIDY5LCAxMjgsIDY1LCA4NSwgCisgICAgODQsIDc5LCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCAyMDQsIDY1LCA4NSwgODIsIDczLCAKKyAgICA4MCwgNzMsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgCisgICAgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA0NSwgNTAsIDEyOCwgNjUsIDg1LCAKKyAgICA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDEyOCwgNjUsIDg1LCA3OCwgNzgsIDEyOCwgNjUsIDg1LCA3MSwgODUsIAorICAgIDgzLCA4NCwgMTI4LCA2NSwgODUsIDcxLCA3NywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDg1LCA2OSwgCisgICAgMTI4LCA2NSwgODUsIDY2LCA2OSwgODIsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY1LCA4NCwgODQsIDczLCAxOTUsIDY1LCAKKyAgICA4NCwgODQsIDcyLCA2NSwgNjcsIDY1LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDY1LCA4NCwgODQsIDY1LCAyMDMsIDY1LCA4NCwgNzksIDIwNSwgNjUsIDg0LCA3OCwgNjUsIDIwMCwgNjUsIDg0LCA3NywgCisgICAgNjUsIDY1LCA4NSwgMTI4LCA2NSwgODQsIDczLCA4OSwgNjUsIDEyOCwgNjUsIDg0LCA3MiwgNzYsIDY5LCA4NCwgNzMsIAorICAgIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgyLCA4NiwgNjUsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MCwgCisgICAgNjUsIDgzLCA2NywgNjUsIDIwNiwgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgODIsIDE5MywgNjUsIDgzLCAKKyAgICA4OSwgNzcsIDgwLCA4NCwgNzksIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCA4NCwgODIsIDc5LCA3OCwgCisgICAgNzksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCAKKyAgICA2NSwgODMsIDg0LCA3OSwgNzgsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NywgCisgICAgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAKKyAgICAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA2NywgODUsIAorICAgIDgzLCAxMjgsIDY1LCA4MywgODMsIDg5LCA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgCisgICAgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCAKKyAgICA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MywgODAsIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIAorICAgIDg0LCA4MiwgNjUsIDc2LCA3MywgNjUsIDEyOCwgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgCisgICAgODMsIDEyOCwgNjUsIDgzLCA3MiwgNTcsIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDg0LCAKKyAgICAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgNTAsIDEyOCwgNjUsIAorICAgIDgyLCA4NSwgNzIsIDg1LCA2NSwgMTI4LCA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgCisgICAgNzYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgyLCA4NCwgNjUsIDY2LCAxOTcsIDY1LCA4MiwgODMsIDY5LCA3OSwgODMsIAorICAgIDEyOCwgNjUsIDgyLCA4MywgNjksIDc5LCAyMTEsIDY1LCA4MiwgODMsIDY5LCA3OCwgNzMsIDY3LCAxMjgsIDY1LCA4MiwgCisgICAgODIsIDc5LCA4NywgODMsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCAyMTEsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCAKKyAgICA2NSwgNjgsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCA3MiwgNjksIDY1LCAxOTYsIDY1LCA4MiwgODIsIDc5LCA4NywgNDUsIAorICAgIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY1LCA4MiwgODIsIDczLCA4NiwgNjksIDEyOCwgNjUsIDgyLCA4MiwgNjUsIDg5LCAKKyAgICAxMjgsIDY1LCA4MiwgODAsIDY5LCA3MSwgNzEsIDczLCA2NSwgODQsIDIwNywgNjUsIDgyLCA3OSwgODUsIDgzLCA3MywgNzgsIAorICAgIDE5OSwgNjUsIDgyLCA3OSwgODUsIDgyLCAxOTMsIDY1LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4MCwgODIsIDc5LCA3MCwgCisgICAgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODIsIDc5LCA4NSwgNzgsIDE5NiwgNjUsIDgyLCA3NywgODksIDEyOCwgNjUsIDgyLCAKKyAgICA3NywgNzksIDg1LCA4MiwgMTI4LCA2NSwgODIsIDIwNSwgNjUsIDgyLCA3NiwgNjUsIDg1LCAxOTksIDY1LCA4MiwgNzUsIAorICAgIDg0LCA3MywgNzUsIDIwNywgNjUsIDgyLCA3NSwgNjUsIDY2LCAxMjgsIDY1LCA4MiwgNzUsIDY1LCA2NSwgNzgsIDg1LCAKKyAgICAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIDgyLCA2NSwgMTI4LCA2NSwgODIsIDczLCA4MywgODQsIDY5LCA4MiwgCisgICAgMTkzLCA2NSwgODIsIDczLCA2OSwgODMsIDEyOCwgNjUsIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDY1LCAKKyAgICA4MiwgNzEsIDc5LCA4MywgODksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDY1LCA4MiwgNzEsIDczLCAxMjgsIAorICAgIDY1LCA4MiwgNjksIDgwLCA2NSwgMTI4LCA2NSwgODIsIDY5LCA2NSwgMTI4LCA2NSwgODIsIDY4LCA3MiwgNjUsIDg2LCA3MywgCisgICAgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODIsIDY3LCAKKyAgICA3MiwgNjUsIDczLCA3OSwgMjA2LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCAxOTUsIDY1LCA4MiwgNjcsIDIwMCwgNjUsIAorICAgIDgyLCA2NywgMTI4LCA2NSwgODIsIDE5NSwgNjUsIDgyLCA2NSwgNzcsIDY1LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2OSwgCisgICAgNjUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDg1LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDczLCAKKyAgICAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCA3OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgCisgICAgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2NSwgMTI4LCA2NSwgODIsIDY1LCA2OCwgMTI4LCA2NSwgODIsIDY1LCAKKyAgICAxOTYsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjcsIDQ1LCA3MywgNzgsIDY4LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIAorICAgIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDc3LCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgCisgICAgNjksIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCAKKyAgICA4MiwgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAxOTMsIDY1LCA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIAorICAgIDc2LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgCisgICAgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIAorICAgIDIxMSwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODAsIDc5LCAKKyAgICA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIAorICAgIDg0LCA4MiwgNzksIDgwLCA3MiwgNjksIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgCisgICAgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIAorICAgIDc5LCAyMDEsIDY1LCA4MCwgNzksIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgCisgICAgMTkzLCA2NSwgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCAyMDQsIDY1LCA4MCwgCisgICAgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAyMDcsIDY1LCA4MCwgNjcsIDEyOCwgNjUsIDgwLCA2NSwgODIsIDg0LCAKKyAgICAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCA4OSwgNjUsIAorICAgIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCAKKyAgICAxOTMsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgCisgICAgMTkzLCA2NSwgNzgsIDg0LCA3MywgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCAKKyAgICA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgNDUsIDUwLCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgCisgICAgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgMjE3LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgNzMsIDY1LCAKKyAgICA4NCwgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIAorICAgIDc1LCA2OSwgNzgsIDc5LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzAsIDc5LCAKKyAgICA3OCwgNzMsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDY5LCA0NSwgCisgICAgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIAorICAgIDgzLCAxOTcsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDE5MywgCisgICAgNjUsIDc4LCA4NCwgNjUsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgNzgsIDgzLCA4NSwgMjE4LCAKKyAgICA2NSwgNzgsIDgzLCA3MiwgNjksIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCA3OCwgMjA3LCA2NSwgNzgsIAorICAgIDc4LCA4NSwgNzMsIDg0LCAyMTcsIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc4LCA3OCwgCisgICAgNjUsIDY1LCA4NSwgMTI4LCA2NSwgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDc0LCA3MywgMTI4LCA2NSwgNzgsIDcyLCAKKyAgICA4NSwgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgNjksIAorICAgIDE5NiwgNjUsIDc4LCA3MSwgODMsIDg0LCA4MiwgNzksIDIwNSwgNjUsIDc4LCA3MSwgODIsIDIxNywgNjUsIDc4LCA3MSwgCisgICAgNzUsIDcyLCA2NSwgNzgsIDc1LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDIxMCwgNjUsIDc4LCA3MSwgNjksIDc2LCAKKyAgICAxMjgsIDY1LCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA2NywgNzksIAorICAgIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDY3LCA3MiwgNzksIDgyLCAxMjgsIDY1LCA3OCwgNjUsIDg0LCA4MiwgNzMsIDY3LCA3MiwgCisgICAgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA2NSwgODAsIDEyOCwgNjUsIDc3LCA4MCwgODMsIDEyOCwgNjUsIDc3LCAKKyAgICA4MCwgNjksIDgyLCA4MywgNjUsIDc4LCA2OCwgMTI4LCA2NSwgNzcsIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDc3LCA2OSwgODIsIAorICAgIDczLCA2NywgNjUsIDgzLCAxMjgsIDY1LCA3NywgNjksIDgyLCA3MywgNjcsIDY1LCAyMDYsIDY1LCA3NywgNjYsIDg1LCA3NiwgCisgICAgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDc3LCA2NiwgMTkzLCA2NSwgNzcsIDY1LCA4MiwgMTI4LCA2NSwgNzcsIDY1LCAKKyAgICAyMTAsIDY1LCA3NywgNjUsIDc2LCA3MSwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzcsIDY1LCA3NiwgNzEsIAorICAgIDY1LCA3NywgMTI4LCA2NSwgNzYsIDg2LCA2OSwgNzksIDc2LCA2NSwgMjEwLCA2NSwgNzYsIDg1LCA3NywgMTI4LCA2NSwgCisgICAgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIAorICAgIDczLCA3OSwgMjA2LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIDE5NywgNjUsIDc2LCA4NCwgNjUsIDEyOCwgCisgICAgNjUsIDc2LCA4MCwgNzIsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDcyLCAxOTMsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIDY1LCAKKyAgICA3OCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIDY1LCA3OCwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgCisgICAgMTI4LCA2NSwgNzYsIDc3LCA3OSwgODMsIDIxMiwgNjUsIDc2LCA3NiwgNzksIDEyOCwgNjUsIDc2LCA3NiwgNzMsIDY1LCAKKyAgICA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NiwgNzYsIDIwMSwgNjUsIDc2LCA3NiwgNjUsIDIwMCwgNjUsIDc2LCA3NSwgNjUsIAorICAgIDc2LCA3MywgNDUsIDUwLCAxMjgsIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDEyOCwgNjUsIDc2LCA3MywgNzEsIDc4LCA2OSwgCisgICAgMTk2LCA2NSwgNzYsIDczLCA3MCwgODUsIDEyOCwgNjUsIDc2LCA3MywgNjksIDc4LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCAKKyAgICAyMDYsIDY1LCA3NiwgNzEsIDczLCAyMTgsIDY1LCA3NiwgNzAsIDY1LCAxMjgsIDY1LCA3NiwgNjksIDg1LCAyMTIsIDY1LCAKKyAgICA3NiwgNjksIDgyLCA4NCwgMTI4LCA2NSwgNzYsIDY5LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA2OSwgNzcsIDY2LCA3MywgNjcsIAorICAgIDEyOCwgNjUsIDc2LCA2OSwgNzAsIDEyOCwgNjUsIDc2LCA2NSwgODksIDcyLCA2OSwgMTI4LCA2NSwgNzYsIDY1LCA4OSwgCisgICAgNzIsIDE5NywgNjUsIDc2LCA2NSwgODIsIDIwNSwgNjUsIDc2LCA2NSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNDUsIDc2LCAKKyAgICA2NSwgNzUsIDg1LCA3OCwgNjUsIDEyOCwgNjUsIDc1LCA4NCwgNzMsIDY5LCA4MywgNjksIDc2LCA4MywgNzUsIDY1LCA2NiwgCisgICAgMTI4LCA2NSwgNzUsIDgzLCA2NSwgMTI4LCA2NSwgNzUsIDcyLCA3NywgNzMsIDc3LCA3MywgMTk1LCA2NSwgNzUsIDY2LCAKKyAgICA2NSwgMjEwLCA2NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc1LCA2NSwgODIsIDE5MywgNjUsIDczLCA4OSwgNjUsIAorICAgIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDczLCA4NiwgNzMsIDc2LCA3MywgMjAzLCA2NSwgNzMsIDg0LCA3OSwgMjA2LCA2NSwgCisgICAgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgNjksIDEyOCwgNjUsIDczLCA3OCwgMjEzLCA2NSwgNzMsIDc4LCA3OCwgMTI4LCAKKyAgICA2NSwgNzMsIDc2LCA3NywgMTI4LCA2NSwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3MywgNzIsIDg2LCA4NSwgODMsIAorICAgIDEyOCwgNjUsIDcyLCA4MywgNjgsIDY1LCAxMjgsIDY1LCA3MiwgODMsIDY1LCAxMjgsIDY1LCA3MiwgNjUsIDc4LCAxOTksIAorICAgIDY1LCA3MiwgNjUsIDcxLCA3MSwgNjUsIDIxMCwgNjUsIDcyLCA2NSwgNjgsIDEyOCwgNjUsIDcxLCA4NSwgNzgsIDcxLCAKKyAgICAxMjgsIDY1LCA3MSwgNzksIDcxLCAyMDEsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3MSwgNjUsIDczLCA3OCwgMTI4LCAKKyAgICA2NSwgNzAsIDg0LCA2OSwgMjEwLCA2NSwgNzAsIDgzLCA2NSwgNjUsIDgxLCAxMjgsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIAorICAgIDIwNiwgNjUsIDcwLCA3OSwgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgNjksIDY4LCAxMjgsIDY1LCA3MCwgCisgICAgNzEsIDcyLCA2NSwgNzgsIDIwMSwgNjUsIDcwLCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDY5LCAKKyAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCA4OSwgMTI4LCA2NSwgNjksIDgzLCA2NywgODUsIDc2LCA2NSwgODAsIAorICAgIDczLCA4NSwgODMsIDEyOCwgNjUsIDY5LCA4MywgNjcsIDEyOCwgNjUsIDY5LCA4MywgMTI4LCA2NSwgNjksIDgyLCA3MywgCisgICAgNjUsIDIwNCwgNjUsIDY5LCA4MiwgMTI4LCA2NSwgNjksIDc2LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCAKKyAgICA2NSwgNjksIDc2LCAxMjgsIDY1LCA2OSwgNzUsIDEyOCwgNjUsIDY5LCA3MSwgNjksIDY1LCAyMDYsIDY1LCA2OSwgNzEsIAorICAgIDEyOCwgNjUsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgNjksIDEyOCwgNjUsIDY5LCA2OCwgCisgICAgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA2OCwgMTI4LCA2NSwgNjksIDY2LCAxMjgsIDY1LCAKKyAgICA2OCwgODYsIDY1LCA3OCwgODQsIDY1LCA3MSwgNjksIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIAorICAgIDY4LCA2OSwgNzEsIDEyOCwgNjUsIDY4LCA2OSwgMTk5LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgCisgICAgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgMjExLCA2NSwgNjgsIDY4LCA2NSwgNzUsIDEyOCwgNjUsIDY4LCA2NSwgMjAzLCAKKyAgICA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY1LCA2NywgODUsIDg0LCA2OSwgCisgICAgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgMTk3LCAKKyAgICA2NSwgNjcsIDg0LCA4NSwgNjUsIDc2LCA3NiwgMjE3LCA2NSwgNjcsIDg0LCA3MywgODYsIDY1LCA4NCwgMTk3LCA2NSwgNjcsIAorICAgIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDczLCAxOTUsIDY1LCA2NywgNzUsIDc4LCA3OSwgODcsIDc2LCA2OSwgNjgsIDcxLCAKKyAgICA2OSwgMTI4LCA2NSwgNjcsIDY3LCA4NSwgNzcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIAorICAgIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDY3LCA2NywgNjksIDgwLCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDY3LCAKKyAgICA2NywgNjksIDc4LCAyMTIsIDY1LCA2NywgNjUsIDY4LCA2OSwgNzcsIDIxNywgNjUsIDY2LCA4OSwgODMsIDc3LCA2NSwgCisgICAgMjA0LCA2NSwgNjYsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2NiwgNzUsIDcyLCA2NSwgODMsIDczLCAKKyAgICA2NSwgMjA2LCA2NSwgNjYsIDY2LCA4MiwgNjksIDg2LCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDY2LCA2NSwgNzAsIAorICAgIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY2LCAxNzgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2NSwgCisgICAgODksIDEyOCwgNjUsIDY1LCA4NywgMTI4LCA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgNjUsIDY1LCA2NiwgCisgICAgNjUsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ5LCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIAorICAgIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgCisgICAgNTAsIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIDY1LCAKKyAgICA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDgsIDEyOCwgNjUsIAorICAgIDY1LCA0OCwgNDksIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTUsIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTIsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgCisgICAgNDksIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCAKKyAgICA0OCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUzLCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIAorICAgIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNDgsIDU1LCA0OCwgMTI4LCA2NSwgNDgsIDU0LCA1NywgCisgICAgMTI4LCA2NSwgNDgsIDU0LCA1NiwgMTI4LCA2NSwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgMTI4LCA2NSwgCisgICAgNDgsIDU0LCA1MywgMTI4LCA2NSwgNDgsIDU0LCA1MiwgMTI4LCA2NSwgNDgsIDU0LCA1MSwgMTI4LCA2NSwgNDgsIDU0LCAKKyAgICA1MCwgMTI4LCA2NSwgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNDgsIDU0LCA0OCwgMTI4LCA2NSwgNDgsIDUzLCA1NywgMTI4LCAKKyAgICA2NSwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgNDgsIDUzLCA1NCwgMTI4LCA2NSwgNDgsIAorICAgIDUzLCA1MywgMTI4LCA2NSwgNDgsIDUzLCA1MiwgMTI4LCA2NSwgNDgsIDUzLCA1MSwgMTI4LCA2NSwgNDgsIDUzLCA1MCwgCisgICAgMTI4LCA2NSwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNDgsIDUzLCA0OCwgMTI4LCA2NSwgNDgsIDUyLCA1NywgMTI4LCA2NSwgCisgICAgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNDgsIDUyLCA1NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNDgsIDUyLCAKKyAgICA1MywgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDQ4LCA1MiwgNTIsIDEyOCwgNjUsIDQ4LCA1MiwgNTEsIAorICAgIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUxLCAxMjgsIDY1LCA0OCwgNTIsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgCisgICAgMTI4LCA2NSwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDEyOCwgCisgICAgNjUsIDQ4LCA1MSwgNTcsIDEyOCwgNjUsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MSwgNTQsIDEyOCwgNjUsIDQ4LCA1MSwgNTMsIDEyOCwgNjUsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDQ4LCA1MSwgNTEsIAorICAgIDEyOCwgNjUsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1MiwgCisgICAgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCAKKyAgICA1MywgNjUsIDEyOCwgNjUsIDQ1LCA2OSwgODUsIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgNzIsIDgyLCA4NSwgMTI4LCAKKyAgICA0NSwgNzUsIDcyLCA4OSwgODUsIDE5NiwgNDUsIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCA0NSwgNjgsIDkwLCA4NSwgCisgICAgMTk2LCA0NSwgNjcsIDcyLCA2NSwgMjEwLCA0NSwgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGxleGljb25fb2Zmc2V0W10gPSB7Ci0gICAgMCwgMCwgNiwgMTAsIDE1LCAyMywgMjcsIDM0LCAzOSwgNDEsIDQ0LCA1MiwgNjIsIDY4LCA4MSwgOTMsIDEwMiwgMTA4LCAKLSAgICAxMTMsIDEyMSwgMTMwLCAxMzUsIDE0MCwgMTQ0LCAxNTAsIDE1MywgMTU4LCAxNjYsIDE3MywgMTgxLCAxODYsIDE5MSwgCi0gICAgMTk0LCAyMDAsIDIwOCwgMjE1LCAyMjUsIDIzMiwgMjQxLCAyNDQsIDI0NywgMjUyLCAyNTgsIDI2MiwgMjcxLCAyNzgsIAotICAgIDI4NSwgMjkwLCAyOTksIDMwNywgMzEzLCAzMTksIDMyNSwgMTQxLCAzMzAsIDMzMSwgMzM3LCAzNDUsIDM1MSwgMzU3LCAKLSAgICAzNjUsIDM3MiwgMzc0LCAzNzcsIDM4MSwgMzg4LCAzOTAsIDM5NywgNDAyLCA0MDgsIDQxMCwgNDE3LCA0MjUsIDQyNywgCi0gICAgMzExLCA0MzAsIDQzMiwgNDM3LCA0NDIsIDQ0NywgNDUzLCA0NjAsIDQ2OSwgNDc5LCA0ODQsIDQ4OSwgNDkzLCA1MDYsIAotICAgIDUxMywgNTE3LCA1MjYsIDUzMywgNTQwLCA1NDMsIDU0OSwgNTUzLCA1NjMsIDU3MSwgNTc5LCA1ODgsIDU5NiwgNjA0LCAKLSAgICA2MDksIDYxNywgNjI0LCA2MzQsIDY0NSwgNjQ5LCA2NTQsIDY1NywgNjYxLCA2NjUsIDY2NiwgNjcyLCA2NzgsIDY4MCwgCi0gICAgNjgzLCA2ODcsIDM0NCwgNjkwLCA2OTQsIDcwMywgNzA2LCA3MDksIDcxNCwgNzE4LCA3MjYsIDcyOSwgNzM1LCA3NDIsIAotICAgIDc0OSwgNzU4LCA3NjUsIDc3NCwgNzc5LCA3ODMsIDc5MiwgODAyLCA4MTEsIDgxNywgODIzLCA4MzAsIDgzOCwgODQ2LCAKLSAgICA4NTUsIDg2MywgODY3LCA4NzUsIDg4MCwgNzgxLCA1MTEsIDg4OSwgODkzLCA4OTcsIDkwNCwgOTA4LCA5MTUsIDY4OSwgCi0gICAgOTE4LCA5MjYsIDkyOSwgOTMzLCA5NDAsIDk0NCwgOTQ5LCA5NTcsIDk2MCwgMTkyLCA5NjYsIDk3MSwgOTgxLCA5OTAsIAotICAgIDk5NywgMTAwNCwgMTAxMiwgMTAyMCwgMTAyNiwgMTAzMCwgMTAzNSwgMTA0MCwgMTA0NiwgMTA1MSwgMTA1NCwgMTExLCAKLSAgICAxMDYwLCAxMDY0LCAxMDcwLCAxMDczLCAxMDg2LCAxMDg5LCAxMDkzLCAyMiwgMTA5NywgMTEwMiwgMTEwNSwgMTEwOCwgCi0gICAgMTExNCwgMTEyNCwgMTEyNiwgMTEzMiwgMTE0MiwgMTE0NywgMTE1NiwgMTE2NCwgMzI4LCAxMTY3LCAxMTcwLCAxMTc0LCAKLSAgICAxMTc5LCAxMTg1LCAxMTkwLCAxMTk3LCAxMTk5LCAxMjA0LCAxMjA5LCAxMjE1LCAxMjIwLCAxMjI1LCAxMjI5LCAxMjM0LCAKLSAgICAxMjQwLCAxMjQ1LCAxMjUwLCAxMjU0LCAxMjU5LCAxMjY0LCAxMjY4LCAxMjczLCAxMjc4LCAxMjgzLCAxMjg5LCAxMjk1LCAKLSAgICAxMzAxLCAxMzA2LCAxMzEwLCAxMzE1LCAxMzIwLCAxMzI1LCAxMzI5LCAxMzM0LCAxMzM5LCAxMzQ0LCAxMzQ5LCAxMjAwLCAKLSAgICAxMjA1LCAxMjEwLCAxMjE2LCAxMjIxLCAxMzUzLCAxMjI2LCAxMzU5LCAxMzY4LCAxMjMwLCAxMzcyLCAxMjM1LCAxMjQxLCAKLSAgICAxMjQ2LCAxMzc2LCAxMzgxLCAxMzg2LCAxMzkwLCAxMzk0LCAxNDAwLCAxNDA0LCAxMjUxLCAxNDA3LCAxNDExLCAxMjU1LCAKLSAgICAxNDE3LCAxMjYwLCAxNDIxLCAxNDI1LCAxMjY1LCAxNDI5LCAxNDM0LCAxNDM4LCAxNDQxLCAxNDQ1LCAxMjY5LCAxMjc0LCAKLSAgICAxNDUwLCAxMjc5LCAxNDU2LCAxNDYyLCAxNDY4LCAxNDc0LCAxMjg0LCAxMjk2LCAxMzAyLCAxNDc4LCAxNDgyLCAxNDg2LCAKLSAgICAxNDg5LCAxMzA3LCAxNDkzLCAxNDk1LCAxNTAwLCAxNTA1LCAxNTExLCAxNTE2LCAxNTIxLCAxNTI1LCAxNTMwLCAxNTM1LCAKLSAgICAxNTQwLCAxNTQ1LCAxNTUxLCAxNTU2LCAxNTYxLCAxNTY3LCAxNTczLCAxNTc4LCAxNTgyLCAxNTg3LCAxNTkyLCAxNTk3LCAKLSAgICAxNjAyLCAxNjA2LCAxNjE0LCAxNjE4LCAxNjIzLCAxNjI4LCAxNjMzLCAxNjM4LCAxNjQyLCAxNjQ1LCAxNjUwLCAxNjU1LCAKLSAgICAxNjYwLCAxNjY1LCAxNjcxLCAxNjc2LCAxNjgwLCAxMzExLCAxNjgzLCAxNjg4LCAxNjkzLCAxMzE2LCAxNjk3LCAxNzAxLCAKLSAgICAxNzA4LCAxMzIxLCAxNzE1LCAxMzI2LCAxNzE5LCAxNzIxLCAxNzI2LCAxNzMyLCAxMzMwLCAxNzM3LCAxNzQ2LCAxMzM1LCAKLSAgICAxNzUxLCAxNzU3LCAxMzQwLCAxNzYyLCAxNzY3LCAxNzcwLCAxNzc1LCAxNzc5LCAxNzgzLCAxNzg3LCAxNzkwLCAxNzk0LCAKLSAgICAxMzQ1LCAxMzUwLCAxMTAwLCAxNzk5LCAxODA1LCAxODExLCAxODE3LCAxODIzLCAxODI5LCAxODM1LCAxODQxLCAxODQ3LCAKLSAgICAxODUyLCAxODU4LCAxODY0LCAxODcwLCAxODc2LCAxODgyLCAxODg4LCAxODk0LCAxOTAwLCAxOTA2LCAxOTExLCAxOTE2LCAKLSAgICAxOTIxLCAxOTI2LCAxOTMxLCAxOTM2LCAxOTQxLCAxOTQ2LCAxOTUxLCAxOTU2LCAxOTYyLCAxOTY3LCAxOTczLCAxOTc4LCAKLSAgICAxOTg0LCAxOTkwLCAxOTk1LCAyMDAxLCAyMDA3LCAyMDEzLCAyMDE5LCAyMDI0LCAyMDI5LCAyMDMxLCAyMDMyLCAyMDM2LCAKLSAgICAyMDQwLCAyMDQ1LCAyMDQ5LCAyMDUzLCAyMDU3LCAyMDYxLCAyMDY0LCAyMDY5LCAyMDczLCAyMDc4LCAyMDgyLCAyMDg2LCAKLSAgICAyMDkxLCAyMDk1LCAyMDk4LCAyMTAyLCAyMTA4LCAyMTIyLCAyMTI2LCAyMTMwLCAyMTMzLCAyMTM4LCAyMTQyLCAyMTQ2LCAKLSAgICAyMTQ5LCAyMTUzLCAyMTU4LCAyMTYzLCAyMTY4LCAyMTczLCAyMTc3LCAyMTgxLCAyMTg1LCAyMTkwLCAyMTk0LCAyMTk5LCAKLSAgICAyMjAzLCAyMjA4LCAyMjE0LCAyMjIxLCAyMjI3LCAyMjMyLCAyMjM3LCAyMjQyLCAyMjQ4LCAyMjUzLCAyMjU5LCAyMjY0LCAKLSAgICAyMjY3LCAxMjE3LCAyMjY5LCAyMjc2LCAyMjg0LCAyMjk0LCAyMzAzLCAyMzE3LCAyMzIxLCAyMzI1LCAyMzM4LCAyMzQ2LCAKLSAgICAyMzUwLCAyMzU1LCAyMzU5LCAyMzYyLCAyMzY2LCAyMzcwLCAyMzc1LCAyMzgwLCAyMzg1LCAyMzg5LCAyMzkyLCAyMzk2LCAKLSAgICAyNDAzLCAyNDEwLCAyNDE2LCAyNDIxLCAyNDI2LCAyNDMyLCAyNDM4LCAyNDQzLCAyNDQ2LCAxNzIzLCAyNDQ4LCAyNDU0LCAKLSAgICAyNDU4LCAyNDYzLCAyNDY3LCAyNDcxLCAxNzI4LCAxNzM0LCAyNDc2LCAyNDgwLCAyNDgzLCAyNDg4LCAyNDkzLCAyNDk4LCAKLSAgICAyNTAzLCAyNTA3LCAyNTE0LCAyNTE5LCAyNTIyLCAyNTI5LCAyNTM1LCAyNTM5LCAyNTQzLCAyNTQ3LCAyNTUyLCAyNTU5LCAKLSAgICAyNTY0LCAyNTY5LCAyNTc2LCAyNTgyLCAyNTg4LCAyNTk0LCAyNjA4LCAyNjI1LCAyNjQwLCAyNjU1LCAyNjY0LCAyNjY5LCAKLSAgICAyNjczLCAyNjc4LCAyNjgzLCAyNjg3LCAyNjk5LCAyNzA2LCAyNzEyLCAyMjE3LCAyNzE4LCAyNzI1LCAyNzMxLCAyNzM1LCAKLSAgICAyNzM4LCAyNzQ1LCAyNzUxLCAyNzU1LCAyNzU5LCAyNzYzLCAyMDU0LCAyNzY3LCAyNzcyLCAyNzc3LCAyNzgxLCAyNzg5LCAKLSAgICAyNzkzLCAyNzk3LCAyODAxLCAyODA2LCAyODExLCAyODE2LCAyODIwLCAyODI1LCAyODMwLCAyODM0LCAyODM5LCAyODQzLCAKLSAgICAyODQ2LCAyODUwLCAyODU0LCAyODU5LCAyODYzLCAyODY3LCAyODczLCAyODgyLCAyODg2LCAyODkwLCAyODk2LCAyOTAxLCAKLSAgICAyOTA4LCAyOTEyLCAyOTIyLCAyOTI2LCAyOTMxLCAyOTM1LCAyOTQwLCAyOTQ2LCAyOTUxLCAyOTU1LCAyOTU5LCAyOTYzLCAKLSAgICAyNDA2LCAyOTcxLCAyOTc2LCAyOTgyLCAyOTg3LCAyOTkxLCAyOTk2LCAzMDAxLCAzMDA1LCAzMDExLCAzMDE2LCAzMDIyLCAKLSAgICAzMDI2LCAzMDMyLCAzMDM3LCAzMDQyLCAzMDQ3LCAzMDUyLCAzMDU3LCAzMDYyLCAzMDY3LCAzMDcyLCAzMDc3LCAzMDgzLCAKLSAgICAzMDg4LCAxMjI3LCA4MCwgMzA5NCwgMzA5OCwgMzEwMiwgMzEwNiwgMzExMSwgMzExNSwgMzExOSwgMzEyMywgMzEyNywgCi0gICAgMzEzMiwgMzEzNiwgMzE0MSwgMzE0NSwgMzE0OCwgMzE1MiwgMzE1NywgMzE2MSwgMzE2NiwgMzE3MCwgMzE3NCwgMzE3OCwgCi0gICAgMzE4MywgMzE4NywgMzE5MCwgMzIwMywgMzIwNywgMzIxMSwgMzIxNSwgMzIxOSwgMzIyMywgMzIyNiwgMzIzMCwgMzIzNCwgCi0gICAgMzIzOSwgMzI0MywgMzI0OCwgMzI1MywgMzI1OCwgMzI2MiwgMzI2NSwgMzI2OCwgMzI3NCwgMzI3OCwgMzI4MiwgMzI4NSwgCi0gICAgMzI4OSwgMzI5MywgMzI5NiwgMzMwMiwgMzMwNywgMzMxMiwgMzMxOCwgMzMyMywgMzMyOCwgMzMzNCwgMzM0MCwgMzM0NSwgCi0gICAgMzM1MCwgMzM1NSwgMTA5MSwgNTQyLCAzMzYwLCAzMzYzLCAzMzY4LCAzMzcyLCAzMzc1LCAzMzc5LCAzMzg0LCAzMzg5LCAKLSAgICAzMzkzLCAzMzk4LCAzNDAyLCAzNDA3LCAzNDExLCAzNDE1LCAzNDIxLCAzNDI3LCAzNDMwLCAzNDMzLCAzNDM5LCAzNDQ2LCAKLSAgICAzNDUzLCAzNDU5LCAzNDY2LCAzNDcxLCAzNDc1LCAzNDgyLCAzNDg3LCAzNDkxLCAzNTAxLCAzNTA1LCAzNTA5LCAzNTE0LCAKLSAgICAzNTE5LCAzNTI5LCAyMDY1LCAzNTM0LCAzNTM4LCAzNTQxLCAzNTQ3LCAzNTUyLCAzNTU4LCAzNTY0LCAzNTY5LCAzNTc2LCAKLSAgICAzNTgwLCAzNTg0LCA2NTgsIDY4OCwgMzU4OCwgMzU5NSwgMzYwMiwgMzYwOSwgMzYxNSwgMzYyMSwgMzYyNiwgMzYzMCwgCi0gICAgMzYzNiwgMzY0MSwgMzY0NSwgMjA3NCwgMzY0OSwgMzY1NywgNTgzLCAzNjYzLCAzNjc0LCAzNjc4LCAzNjg4LCAyMDc5LCAKLSAgICAzNjk0LCAzNjk5LCAzNzE0LCAzNzIwLCAzNzI3LCAzNzM3LCAzNzQzLCAzNzQ4LCAzNzU0LCAzNzYwLCAzNzYzLCAzNzY3LCAKLSAgICAzNzcyLCAzNzc5LCAzNzg0LCAzNzg4LCAzNzkyLCAzNzk2LCAzODAwLCAzODA1LCAzODExLCAzMTUzLCAzODE2LCAzODI4LCAKLSAgICAzODM2LCAzODQxLCAxNTI3LCAzODQ4LCAzODUxLCAzODU0LCAzODU4LCAzODYxLCAzODY3LCAzODcxLCAzODg1LCAzODg5LCAKLSAgICAzODkyLCAzODk2LCAzOTAyLCAzOTA4LCAzOTEzLCAzOTE3LCAzOTIxLCAzOTI3LCAzOTM4LCAzOTQ0LCAzOTQ5LCAzOTU1LCAKLSAgICAzOTU5LCAzOTY3LCAzOTc3LCAzOTgzLCAzOTg4LCAzOTk3LCA0MDA1LCA0MDEyLCA0MDE2LCA0MDIyLCA0MDMxLCA0MDQwLCAKLSAgICA0MDQ0LCA0MDQ5LCA0MDU0LCA0MDU4LCA0MDY2LCA0MDcwLCA0MDc1LCA0MDc5LCAyMDg3LCAxMzY5LCA0MDg1LCA0MDkwLCAKLSAgICA0MDk2LCA0MTAxLCA0MTA2LCA0MTExLCA0MTE2LCA0MTIxLCA0MTI2LCA0MTMyLCA0MTM3LCA0MTQzLCA0MTQ4LCA0MTUzLCAKLSAgICA0MTU4LCA0MTY0LCA0MTY5LCA0MTc0LCA0MTc5LCA0MTg0LCA0MTkwLCA0MTk1LCA0MjAxLCA0MjA2LCA0MjExLCA0MjE2LCAKLSAgICA0MjIxLCA0MjI2LCA0MjMxLCA0MjM3LCA0MjQyLCA0MjQ3LCAzMzUsIDQzNiwgNDI1MiwgNDI1OCwgNDI2MiwgNDI2NiwgCi0gICAgNDI3MSwgNDI3NSwgNDI3OSwgNDI4MiwgNDI4NiwgNDI5MCwgNDI5NCwgNDI5OSwgNDMwMywgNDMwNywgNDMxMywgNDA4MiwgCi0gICAgNDMxOCwgNDMyMSwgNDMyOCwgNDMzMiwgNDM0NSwgNDM0OSwgNDM1MywgNDM1NywgNDM2MSwgNDM2NSwgNDM2OSwgNDM3NSwgCi0gICAgNDM4MiwgNDM5MCwgNDM5NCwgNDQwMiwgNDQxMSwgNDQxNywgNDQyOSwgNDQzNCwgNDQzNywgNDQ0MSwgNDQ1MSwgNDQ1OSwgCi0gICAgNDQ2NywgNDQ3MywgNDQ3NywgNDQ4NywgNDQ5NywgNDUwNSwgNDUxMiwgNDUxOSwgNDUyNSwgNDUzMSwgNDUzOCwgNDU0MiwgCi0gICAgNDU0OSwgNDU1OSwgNDU2OSwgNDU3NywgNDU4NCwgNDU4OSwgNDU5MywgNDYwMSwgNDYwNiwgNDYxMywgNDYyMSwgNDYyNiwgCi0gICAgNDYzMSwgNDYzNSwgNDY0OSwgNDY1NCwgNDY1OSwgNDY2NiwgNDY3NSwgNDY3OCwgNDY4MiwgNDY4NiwgNDY4OSwgNDY5NCwgCi0gICAgNDY5OSwgNDcwOCwgNDcxNCwgNDcyMCwgNDcyNiwgNDczMCwgNDc0MSwgNDc1MSwgNDc2NiwgNDc4MSwgNDc5NiwgNDgxMSwgCi0gICAgNDgyNiwgNDg0MSwgNDg1NiwgNDg3MSwgNDg4NiwgNDkwMSwgNDkxNiwgNDkzMSwgNDk0NiwgNDk2MSwgNDk3NiwgNDk5MSwgCi0gICAgNTAwNiwgNTAyMSwgNTAzNiwgNTA1MSwgNTA2NiwgNTA4MSwgNTA5NiwgNTExMSwgNTEyNiwgNTE0MSwgNTE1NiwgNTE3MSwgCi0gICAgNTE4NiwgNTIwMSwgNTIxNiwgNTIzMSwgNTI0NiwgNTI2MSwgNTI3NiwgNTI5MSwgNTMwNiwgNTMyMSwgNTMzNiwgNTM1MSwgCi0gICAgNTM2NiwgNTM4MSwgNTM5NiwgNTQxMSwgNTQyNiwgNTQ0MSwgNTQ1NiwgNTQ3MSwgNTQ4NiwgNTQ5NSwgNTUwNCwgNTUwOSwgCi0gICAgNTUxNSwgNTUyNSwgNTUyOSwgNTUzNCwgNTUzOSwgNTU0NywgNTU1MSwgNTU1NCwgNTU1OCwgMjkxNywgNTU2MSwgNTU2NiwgCi0gICAgMzEwLCA0NDUsIDU1NzIsIDU1ODAsIDU1ODQsIDU1ODgsIDU1OTEsIDU1OTcsIDU2MDEsIDU2MDksIDU2MTUsIDU2MjAsIAotICAgIDU2MjcsIDU2MzQsIDU2NDAsIDU2NDUsIDU2NTIsIDU2NTgsIDU2NjYsIDU2NzAsIDU2NzUsIDU2ODcsIDU2OTgsIDU3MDUsIAotICAgIDU3MTEsIDMxNzUsIDU3MTUsIDU3MjEsIDU3MjYsIDU3MzEsIDU3MzYsIDU3NDIsIDU3NDcsIDU3NTIsIDU3NTcsIDU3NjIsIAotICAgIDU3NjgsIDU3NzMsIDU3NzgsIDU3ODQsIDU3ODksIDU3OTUsIDU4MDAsIDU4MDYsIDU4MTEsIDU4MTcsIDU4MjIsIDU4MjcsIAotICAgIDU4MzIsIDU4MzcsIDU4NDIsIDU4NDgsIDU4NTMsIDU4NTgsIDU4NjMsIDU4NjksIDU4NzUsIDU4ODEsIDU4ODcsIDU4OTMsIAotICAgIDU4OTksIDU5MDUsIDU5MTEsIDU5MTcsIDU5MjMsIDU5MjksIDU5MzUsIDU5NDAsIDU5NDUsIDU5NTAsIDU5NTUsIDU5NjAsIAotICAgIDU5NjUsIDU5NzAsIDU5NzUsIDU5ODEsIDU5ODcsIDU5OTIsIDU5OTgsIDYwMDQsIDYwMTAsIDYwMTUsIDYwMjAsIDYwMjUsIAotICAgIDYwMzAsIDYwMzYsIDYwNDIsIDYwNDcsIDYwNTIsIDYwNTcsIDYwNjIsIDYwNjcsIDYwNzMsIDYwNzgsIDYwODQsIDYwOTAsIAotICAgIDYwOTYsIDYxMDIsIDYxMDgsIDYxMTQsIDYxMjAsIDYxMjYsIDYxMzIsIDIwOTYsIDU1OTAsIDYxMzcsIDYxNDEsIDYxNDUsIAotICAgIDYxNDgsIDYxNTUsIDYxNTgsIDYxNjYsIDYxNzEsIDYxNzYsIDYxNjcsIDYxODEsIDYxNjgsIDYxODUsIDYxOTEsIDYxOTcsIAotICAgIDYyMDIsIDYyMDcsIDYyMTQsIDYyMjIsIDYyMjcsIDYyMzEsIDYyMzQsIDYyMzgsIDIxMjcsIDU1MSwgNjI0MiwgNjI0NiwgCi0gICAgNjI1MSwgNjI1NywgNjI2MiwgNjI2NiwgNjI2OSwgNjI3MywgNjI3OSwgNjI4NCwgNjI4OCwgNjI5NSwgNjI5OSwgNjMwMywgCi0gICAgNjMwNywgOTQ2LCA3NDcsIDYzMTAsIDYzMTgsIDYzMjUsIDYzMzIsIDYzMzgsIDYzNDUsIDYzNTMsIDYzNjAsIDYzNjcsIAotICAgIDYzNzIsIDYzODQsIDEyNDcsIDEzNzcsIDEzODIsIDYzOTUsIDEzODcsIDYzOTksIDY0MDMsIDY0MTIsIDY0MjAsIDY0MjksIAotICAgIDY0MzUsIDY0NDAsIDY0NDQsIDY0NTAsIDY0NTUsIDY0NjIsIDY0NjYsIDY0NzUsIDY0ODQsIDY0OTMsIDY1MDIsIDY1MDcsIAotICAgIDY1MTIsIDY1MjQsIDY1MjksIDY1MzcsIDIxNzgsIDY1NDEsIDY1NDMsIDY1NDgsIDY1NTIsIDY1NjEsIDY1NjksIDEzOTEsIAotICAgIDEzMywgMzQwMywgMzQwOCwgNjU3NSwgNjU3OSwgNjU4OCwgNjU5NCwgNjU5OSwgNjYwMiwgNjYxMSwgMjY1MiwgNjYxNywgCi0gICAgNjYyNSwgNjYyOSwgNjYzMywgMjE5MSwgNjYzNywgNjY0MiwgNjY0OSwgNjY1NSwgNjY2MSwgNjY2NCwgNjY2NiwgNjY2OSwgCi0gICAgNjY3NywgNjY4NSwgNjY5MywgNjY5NiwgNjcwMSwgNjE3OCwgNjcwNCwgNjcwNiwgNjcxMSwgNjcxNiwgNjcyMSwgNjcyNiwgCi0gICAgNjczMSwgNjczNiwgNjc0MSwgNjc0NiwgNjc1MSwgNjc1NiwgNjc2MiwgNjc2NywgNjc3MiwgNjc3NywgNjc4MywgNjc4OCwgCi0gICAgNjc5MywgNjc5OCwgNjgwMywgNjgwOCwgNjgxMywgNjgxOSwgNjgyNCwgNjgyOSwgNjgzNCwgNjgzOSwgNjg0NCwgNjg0OSwgCi0gICAgNjg1NCwgNjg1OSwgNjg2NCwgNjg2OSwgNjg3NCwgNjg3OSwgNjg4NCwgNjg4OSwgNjg5NCwgNjg5OSwgNjkwNCwgNjkxMCwgCi0gICAgNjkxNiwgNjkyMSwgNjkyNiwgNjkzMSwgNjkzNiwgNjk0MSwgMjIxNSwgMjIyMiwgMjIyOCwgNjk0NiwgNjk1MiwgMjI1NCwgCi0gICAgMjI2MCwgNjk2MCwgNjk2NCwgNjk2OSwgNjk3MywgNjk3NywgNjk4MSwgNjk4NiwgNjk5MCwgNjk5NSwgNjk5OSwgNzAwMiwgCi0gICAgNzAwNSwgNzAxMSwgNzAxNywgNzAyMywgNzAyOSwgNzAzNSwgNzA0MSwgNzA0NywgNzA1MSwgNzA1NSwgNzA1OSwgNzA2MywgCi0gICAgNzA2NywgNzA3MiwgNzA3OSwgNzA5MCwgNzA5OCwgNzEwOCwgNzExNSwgNzEyMCwgNzEyNCwgNzEzNSwgNzE0OCwgNzE1OSwgCi0gICAgNzE3MiwgNzE4MywgNzE5NSwgNzIwNywgNzIxOSwgNzIzMiwgNzI0NSwgNzI1MiwgNzI1OCwgNzI3MiwgNzI3OSwgNzI4NSwgCi0gICAgNzI4OSwgNzI5NCwgNzI5OCwgNzMwNSwgNzMxMywgNzMxNywgNzMyMywgNzMyOSwgNzMzOSwgNzM0MywgNzM0OCwgNzM1MywgCi0gICAgNzM2MCwgNzM2NiwgNzM3NiwgNjM0MCwgNzM4MiwgNzM4NiwgNzM5MywgNzQ2LCA3Mzk3LCA3NDAxLCA3NDA2LCA3NDExLCAKLSAgICA3NDE2LCA3NDIwLCA3NDI2LCA3NDM0LCA3NDQwLCA3NDQ0LCA3NDUwLCA3NDYwLCA3NDY0LCA3NDcwLCA3NDc1LCA3NDc5LCAKLSAgICA3NDg1LCA3NDkxLCAyMTE5LCA3NDk2LCA3NDk4LCA3NTA2LCA3NTE1LCA3NTE5LCA3NTI1LCA3NTMwLCA3NTM1LCA3NTQwLCAKLSAgICA3NTQ1LCA3NTUxLCA3NTU2LCAzOTIzLCA3NTYxLCA3NTY1LCA3NTcxLCA3NTc2LCA3NTgyLCA3NTg3LCA3NTkyLCA3NTk4LCAKLSAgICA3NjAzLCA3NTIwLCA3NjA5LCA3NjEzLCA3NjIwLCA3NjI2LCA3NjMxLCA3NjM1LCA0NjQ1LCA3NjQwLCA3NjQ5LCA2NjQ1LCAKLSAgICA2NjUyLCA3NjU0LCAyODAzLCA3NjU4LCA3NjYzLCA3NjY4LCA3NTMxLCA3NjcyLCA3NTM2LCA3NTQxLCA3Njc3LCA3Njg0LCAKLSAgICA3NjkxLCA3Njk3LCA3NzAzLCA3NzA5LCA3NzE0LCA3NzE5LCA3NzI0LCA3NTQ2LCA3NTUyLCA3NzMwLCA3NzM2LCA3NzQxLCAKLSAgICA3NzQ5LCA3NTU3LCA3NzU0LCAxMDI4LCA3NzU3LCA3NzY1LCA3NzcxLCA3Nzc3LCA3Nzg2LCA3Nzk0LCA3Nzk5LCA3ODA1LCAKLSAgICA3ODEzLCA3ODIwLCA3ODM1LCA3ODUyLCA3ODcxLCA3ODgwLCA3ODg4LCA3OTAzLCA3OTE0LCA3OTI0LCA3OTM0LCA3OTQyLCAKLSAgICA3OTQ4LCA3OTYwLCA3OTY5LCA3OTc3LCA3OTg0LCA3OTkxLCA3OTk3LCA4MDAyLCA4MDEwLCA4MDIwLCA4MDI3LCA4MDM3LCAKLSAgICA4MDQ3LCA4MDU3LCA4MDY1LCA4MDcyLCA4MDgxLCA4MDkxLCA4MTA1LCA4MTIwLCA4MTI5LCA4MTM3LCA4MTQyLCA4MTQ2LCAKLSAgICA4MTU1LCA4MTYxLCA4MTY2LCA4MTc2LCA4MTg2LCA4MTk2LCA4MjAxLCA4MjA1LCA4MjE0LCA4MjE5LCA4MjI5LCA4MjQwLCAKLSAgICA4MjUzLCA4MjY2LCA4Mjc4LCA4Mjg2LCA4MjkxLCA4Mjk1LCA4MzAxLCA4MzA2LCA4MzE0LCA4MzIyLCA4MzI5LCA4MzM0LCAKLSAgICA4MzQyLCA4MzQ4LCA4MzUxLCA4MzU1LCA4MzYxLCA4MzY5LCA4Mzc0LCA4Mzc4LCA4Mzg2LCA4Mzk1LCA4NDAzLCA4NDA5LCAKLSAgICA4NDEzLCA4NDIwLCA4NDMxLCA4NDM1LCA4NDM4LCA4NDQ0LCA4NDQ5LCA4NDUzLCA4NDU5LCA4NDY2LCA4NDcyLCA4NDc3LCAKLSAgICA4NDg0LCA4NDkxLCA4NDk4LCA4NTA1LCA4NTEyLCA4NTE5LCA4NTI0LCA3ODQ4LCA4NTI5LCA4NTM1LCA4NTQyLCA4NTQ5LCAKLSAgICA4NTU0LCA4NTYxLCA4NTcwLCA4NTc0LCA4NTg2LCA4NTkwLCA4NTkzLCA4NTk3LCA4NjAxLCA4NjA1LCA4NjA5LCA4NjE1LCAKLSAgICA4NjIwLCA4NjI2LCA4NjMxLCA4NjM2LCA4NjQyLCA4NjQ3LCA4NjUyLCA3MzU2LCA4NjU3LCA4NjYxLCA4NjY1LCA4NjY5LCAKLSAgICA4Njc0LCA4Njc5LCA4Njg3LCA4NjkzLCA4Njk3LCA4NzAxLCA4NzA4LCA4NzEzLCA4NzIxLCA4NzI2LCA4NzMwLCA4NzMzLCAKLSAgICA4NzM5LCA4NzQ2LCA4NzUwLCA4NzUzLCA4NzU4LCA4NzYyLCAzOTYyLCA4NzY4LCA4Nzc3LCAzNiwgODc4NSwgODc5MSwgCi0gICAgODc5NiwgNzM3MSwgODgwMSwgODgwNywgODgxMiwgODgxNiwgODgxOSwgODgzNCwgODg1MywgODg2NSwgODg3OCwgODg5MSwgCi0gICAgODkwNCwgODkxOCwgODkzMSwgODk0NiwgODk1MywgODk1OSwgODk2MywgODk3NywgODk4MiwgODk4OCwgODk5MywgOTAwMSwgCi0gICAgOTAwNiwgNjQ3MSwgOTAxMSwgOTAxNCwgOTAyMSwgOTAyNiwgOTAzMCwgMjgwOCwgOTU1LCA5MDM2LCA5MDQwLCA5MDQ2LCAKLSAgICA5MDUyLCA5MDU3LCA5MDYzLCA5MDY4LCA3NTY2LCA5MDc0LCA5MDgwLCA5MDg1LCA5MDkwLCA5MDk4LCA5MTA0LCA5MTE3LCAKLSAgICA5MTI1LCA5MTMyLCA3NTcyLCA5MTM4LCA5MTQ2LCA5MTU0LCA5MTYxLCA5MTc0LCA5MTg2LCA5MTk2LCA5MjAzLCA5MjEwLCAKLSAgICA5MjE5LCA5MjI4LCA5MjM2LCA5MjQzLCA5MjQ4LCA5MjU0LCA3NTc3LCA5MjU5LCA5MjY1LCA3NTgzLCA5MjcwLCA5MjczLCAKLSAgICA5MjgwLCA5Mjg2LCA5Mjk5LCA3MDgzLCA5MzEwLCA5MzE2LCA5MzI1LCA5MzMzLCA5MzQwLCA5MzQ2LCA5MzUyLCA5MzU3LCAKLSAgICA5MzYxLCA5MzY2LCA4ODI2LCA5MzcyLCA3NTg4LCA5Mzc5LCA5Mzg0LCA5MzkxLCA5Mzk3LCA5NDAzLCA5NDA4LCA5NDE2LCAKLSAgICA5NDI0LCA5NDMxLCA5NDM1LCA5NDQ5LCA5NDU5LCA5NDY0LCA5NDY4LCA5NDc5LCA5NDg1LCA5NDkwLCA5NDk1LCA3NTkzLCAKLSAgICA3NTk5LCA5NDk5LCA5NTAyLCA5NTA3LCA5NTE5LCA5NTI2LCA5NTMxLCA5NTM1LCA5NTQwLCA5NTQ0LCA5NTUxLCA5NTU3LCAKLSAgICA3NjA0LCA3NTIxLCA5NTY0LCAyODEzLCA4LCA5NTcxLCA5NTc2LCA5NTgwLCA5NTg2LCA5NTk0LCA5NjA0LCA5NjA5LCAKLSAgICA5NjE0LCA5NjIxLCA5NjI4LCA5NjMyLCA5NjQzLCA5NjUzLCA5NjYyLCA5Njc0LCA5Njc5LCA5NjgzLCA5NjkxLCA5NzA1LCAKLSAgICA5NzA5LCA5NzEyLCA5NzIwLCA5NzI3LCA5NzM1LCA5NzM5LCA5NzUwLCA5NzU0LCA5NzYxLCA5NzY2LCA5NzcwLCA5Nzc2LCAKLSAgICA5NzgxLCA5Nzg1LCA5NzkxLCA5Nzk2LCA5ODA3LCA5ODExLCA5ODE0LCA5ODIwLCA5ODI1LCA5ODMxLCA5ODM3LCA5ODQ0LCAKLSAgICA5ODU1LCA5ODY1LCA5ODc1LCA5ODg0LCA5ODkxLCA3NjE0LCA3NjIxLCA3NjI3LCA3NjMyLCA5ODk3LCA5OTAzLCA3NjM2LCAKLSAgICA5OTA5LCA5OTEyLCA5OTE5LCA5OTI0LCA5OTM5LCA5OTU1LCA5OTcwLCA5OTc4LCA5OTg0LCAxMDQzLCA0MDAsIDk5ODksIAotICAgIDk5OTcsIDEwMDA0LCAxMDAxMCwgMTAwMTUsIDEwMDIwLCA3NjQxLCAxMDAyMiwgMTAwMjYsIDEwMDMxLCAxMDAzNSwgCi0gICAgMTAwNDUsIDEwMDUwLCAxMDA1NCwgMTAwNjMsIDEwMDY3LCAxMDA3MCwgMTAwNzcsIDEwMDgxLCAxMDA4NCwgMTAwOTIsIAotICAgIDEwMDk5LCAxMDEwNywgMTAxMTEsIDEwMTE4LCAxMDEyNywgMTAxMzAsIDEwMTM0LCAxMDEzOCwgMTAxNDQsIDEwMTQ4LCAKLSAgICAxMDE1MiwgMTAxNTYsIDEwMTYyLCAxMDE3MiwgMTAxNzYsIDEwMTg0LCAxMDE4OCwgMTAxOTUsIDEwMTk5LCAxMDIwNCwgCi0gICAgMTAyMDgsIDEwMjE1LCAxMDIyMSwgMTAyMjksIDEwMjM1LCAxMDI0NSwgMTAyNTAsIDEwMjU1LCAxMDI1OSwgMTAyNjcsIAotICAgIDM4MjIsIDEwMjc1LCAxMDI4MCwgMTAyODQsIDEwMjg4LCAxMDI5MSwgMTAyOTksIDEwMzA2LCAxMDMxMCwgNDQ2OSwgCi0gICAgMTAzMTQsIDEwMzE5LCAxMDMyMywgMTAzMzQsIDEwMzM5LCAxMDM0NSwgMTAzNDksIDEwMzUyLCAxMDM2MCwgMTAzNjUsIAotICAgIDEwMzcwLCAxMDM3NywgMTAzODIsIDc2NTAsIDEwMzg3LCAxMDM5MSwgMTY4NSwgNDYxOSwgMTAzOTgsIDEwNDAzLCAxMDQwOCwgCi0gICAgMTA0MTMsIDEwNDE5LCAxMDQyNCwgMTA0MzAsIDEwNDM1LCAxMDQ0MCwgMTA0NDUsIDEwNDUwLCAxMDQ1NSwgMTA0NjAsIAotICAgIDEwNDY1LCAxMDQ3MCwgMTA0NzUsIDEwNDgwLCAxMDQ4NSwgMTA0OTAsIDEwNDk1LCAxMDUwMCwgMTA1MDUsIDEwNTEwLCAKLSAgICAxMDUxNiwgMTA1MjEsIDEwNTI2LCAxMDUzMSwgMTA1MzYsIDEwNTQxLCAxMDU0NywgMTA1NTIsIDEwNTU3LCAxMDU2MywgCi0gICAgMTA1NjgsIDEwNTc0LCAxMDU3OSwgMTA1ODUsIDEwNTkwLCAxMDU5NSwgMTA2MDAsIDEwNjA1LCAxMDYxMSwgMTA2MTYsIAotICAgIDEwNjIxLCAxMDYyNiwgNzI0LCAxMzksIDEwNjM0LCAxMDYzOCwgMTA2NDMsIDEwNjQ4LCAxMDY1MiwgMTA2NTYsIDEwNjYwLCAKLSAgICAxMDY2NSwgMTA2NjksIDEwNjc0LCAxMDY3OCwgMTA2ODEsIDEwNjg1LCAxMDY4OSwgMTA2OTQsIDEwNzA0LCAxMDcxMCwgCi0gICAgMTA3MTgsIDEwNzIyLCAxMDcyNiwgMTA3MzMsIDEwNzQxLCAxMDc1MCwgMTA3NjEsIDEwNzY4LCAxMDc3NSwgMTA3ODQsIAotICAgIDEwNzkzLCAxMDgwMSwgMTA4MTAsIDEwODE5LCAxMDgyOCwgMTA4MzcsIDEwODQ3LCAxMDg1NywgMTA4NjcsIDEwODc3LCAKLSAgICAxMDg4NywgMTA4OTYsIDEwOTA2LCAxMDkxNiwgMTA5MjYsIDEwOTM2LCAxMDk0NiwgMTA5NTYsIDEwOTY2LCAxMDk3NSwgCi0gICAgMTA5ODUsIDEwOTk1LCAxMTAwNSwgMTEwMTUsIDExMDI1LCAxMTAzNSwgMTEwNDQsIDExMDU0LCAxMTA2NCwgMTEwNzQsIAotICAgIDExMDg0LCAxMTA5NCwgMTExMDQsIDExMTE0LCAxMTEyNCwgMTExMzQsIDExMTQzLCAxMTE1MywgMTExNjMsIDExMTczLCAKLSAgICAxMTE4MywgMTExOTMsIDExMjAzLCAxMTIxMywgMTEyMjMsIDExMjMzLCAxMTI0MywgMTEyNTIsIDExMjU4LCAxMTI2MiwgCi0gICAgMTEyNjUsIDExMjY5LCAxMTI3NCwgMTEyODEsIDExMjg3LCAxMTI5MiwgMTEyOTYsIDExMzAxLCAxMTMxMCwgMTEzMTgsIAotICAgIDExMzIzLCAxMTMyNywgMTEzMzEsIDExMzM3LCAxMTM0MiwgMTEzNDgsIDc2NTksIDExMzUzLCAxMTM1OCwgMTEzNjcsIAotICAgIDc2NjQsIDExMzcyLCAxMTM3NSwgMTEzODEsIDExMzg5LCA3NjY5LCAxMTM5NiwgMTE0MDAsIDExNDA0LCAxMTQwOCwgCi0gICAgMTE0MTgsIDExNDI0LCAxMTQyOSwgMTE0MzgsIDExNDQ2LCAxMTQ1MywgMTE0NjAsIDExNDY1LCAxMTQ3MiwgMTE0NzcsIAotICAgIDExNDgxLCAxMTQ4NCwgMTE0OTUsIDExNTA1LCAxMTUxNCwgMTE1MjIsIDExNTMzLCAxMTU0NSwgMTE1NTUsIDExNTYwLCAKLSAgICAxMTU2NCwgMTE1NjksIDExNTc0LCAxMTU3OCwgMTE1ODQsIDExNTkyLCAxMTU5OSwgMTE2MTAsIDExNjE1LCAxMTYyNSwgCi0gICAgMTE2MzQsIDExNjM4LCAxMTY0MSwgMTE2NDgsIDExNjU4LCAxMTY2NywgMTE2NzQsIDExNjc4LCAxMTY4NSwgMTE2OTEsIAotICAgIDExNjk2LCAxMTcwMSwgMTE3MDUsIDExNzE0LCAxMTcxOSwgMTE3MjUsIDExNzI5LCAxMTczNCwgMTE3MzgsIDExNzQ3LCAKLSAgICAxMTc1NSwgMTE3NjMsIDExNzcwLCAxMTc3OCwgMTE3OTAsIDExODAxLCAxMTgxMSwgMTE4MTgsIDExODI0LCAxMTgzMywgCi0gICAgMTE4NDQsIDExODUzLCAxMTg2NSwgMTE4NzcsIDExODg5LCAxMTg5OSwgMTE5MDgsIDExOTE3LCAxMTkyNSwgMTE5MzIsIAotICAgIDExOTQxLCAxMTk0OSwgMTE5NTUsIDExOTYxLCAxMTk2NiwgNjE5OSwgMTE5NzAsIDExOTcyLCAxMTk3NywgMTE5ODMsIAotICAgIDExOTkyLCAxMjAwMCwgMTIwMDcsIDEyMDE2LCAxMjAyNSwgMTIwMzQsIDEyMDQzLCAxMjA1MiwgMTIwNjEsIDEyMDcwLCAKLSAgICAxMjA3OSwgMTIwODksIDEyMDk5LCAxMjEwOCwgMTIxMTQsIDEyMTIxLCAxMjEzNSwgMTIxNDIsIDEyMTUwLCAxMjE1OSwgCi0gICAgMTIxNjUsIDEyMTc0LCAxMjE4MywgMTIxOTQsIDEyMjA0LCAxMjIxMiwgMTIyMTksIDEyMjI3LCAxMjIzNiwgMTIyNDksIAotICAgIDEyMjU3LCAxMjI2NCwgMTIyNzcsIDEyMjgzLCAxMjI4OSwgMTIyOTksIDEyMzA4LCAxMjMxNywgMTIzMjIsIDEyMzI2LCAKLSAgICAxMjMzMiwgMTIzMzgsIDEyMzQ1LCA3MzcwLCAxMjM1MCwgMTIzNTUsIDEyMzYyLCAxMjM2NywgMTIzNzIsIDEyMzc2LCAKLSAgICAxMjM4NCwgMTIzOTAsIDEyMzk1LCAxMjQwMywgMTI0MTEsIDEyNDE4LCAxMjQyNiwgMTI0MzIsIDEyNDQwLCAxMjQ0OCwgCi0gICAgMTI0NTMsIDEyNDU5LCAxMjQ2NiwgMTI0NzIsIDEyNDc3LCAxMjQ4MSwgMTI0OTIsIDEyNTAwLCAxMjUwNiwgMTI1MTEsIAotICAgIDEyNTIwLCAxMjUyNiwgMTI1MzEsIDEyNTQwLCAxMjU1NCwgMzc4MSwgMTI1NTgsIDEyNTYzLCAxMjU2OCwgMTI1NzQsIAotICAgIDEyNTc5LCAxMjU4NCwgMTI1ODgsIDEyNTkzLCAxMjU5OCwgNjE5OCwgMTI2MDMsIDEyNjA4LCAxMjYxMywgMTI2MTgsIAotICAgIDEyNjIyLCAxMjYyNywgMTI2MzIsIDEyNjM3LCAxMjY0MywgMTI2NDksIDEyNjU0LCAxMjY1OCwgMTI2NjMsIDEyNjY4LCAKLSAgICAxMjY3MywgNzY3MywgMTI2NzgsIDEyNjgzLCAxMjY4OCwgMTI2OTMsIDEyNzEwLCAxMjcyOCwgMTI3NDAsIDEyNzUzLCAKLSAgICAxMjc3MCwgMTI3ODYsIDEyODAzLCAxMjgxMywgMTI4MzIsIDEyODQzLCAxMjg1NCwgMTI4NjUsIDEyODc2LCAxMjg4OCwgCi0gICAgMTI4OTksIDEyOTEwLCAxMjkyNywgMTI5MzgsIDEyOTQ5LCAxMjk1NCwgMjMzNSwgMTI5NTgsIDEyOTYxLCAxMjk2NywgCi0gICAgMTI5NzUsIDEyOTgzLCAxMjk4OCwgMTI5OTYsIDEzMDA0LCAxMzAxMSwgMTMwMTYsIDEzMDIyLCAxMzAyOSwgMTMwMzcsIAotICAgIDEzMDQ0LCAxMzA1NiwgMTMwNjQsIDEzMDY5LCA5OTMzLCAxMzA3NSwgMTMwODQsIDEzMDkzLCAxMzEwMSwgMTMxMDgsIAotICAgIDEzMTE0LCAxMzEyMiwgMTMxMjksIDEzMTM1LCAxMzE0MiwgMTMxNDgsIDEzMTU3LCAxMzE2NSwgMTMxNzUsIDEzMTgyLCAKLSAgICAxMzE4OCwgMTMxOTYsIDEzMjAyLCAxMzIxMCwgMTMyMTcsIDEzMjMwLCAxMzIzNywgMTMyNDYsIDEzMjU1LCAxMzI2NCwgCi0gICAgMTMyNzIsIDEzMjgyLCAxMzI4OSwgMTMyOTQsIDM0OTUsIDEzMzAxLCAxMzMwNiwgMTMzMDksIDEyNjA0LCAxMzMxMywgCi0gICAgMTMzMTksIDEzMzIzLCAxMzMzMSwgMTMzNDMsIDEzMzQ4LCAxMzM1NSwgMTMzNjEsIDEzMzY2LCAxMzM3MywgMTI2MDksIAotICAgIDEzMzc3LCAxMzM4MSwgMTI2MTQsIDEzMzg1LCAxMzM4OSwgMTMzOTMsIDEzNDAwLCAxMzQwNSwgMTM0MDksIDEzNDEzLCAKLSAgICAxMzQyMSwgMTM0MjgsIDEzNDM1LCAxMzQ1MiwgMTM0NjEsIDEzNDY1LCAxMzQ2OCwgMTM0NzYsIDEzNDgyLCAxMzQ4NywgCi0gICAgMzU3MywgMTM0OTEsIDEzNDkzLCAxMzUwMSwgMTM1MDgsIDEzNTE4LCAxMzUzMCwgMTM1MzUsIDEzNTQxLCAxMzU0NiwgCi0gICAgMTM1NTAsIDEzNTU2LCAxMzU2MSwgMTM1NjcsIDEzNTcwLCAxMzU3NywgMTM1ODUsIDEzNTkyLCAxMzU5OCwgMTM2MDQsIAotICAgIDEzNjA5LCAxMzYxNiwgMTM2MjIsIDEzNjI3LCAxMzYzNCwgMTM2MzgsIDEzNjQ0LCAxMzY0OCwgMTM2NTUsIDEzNjYxLCAKLSAgICAxMzY2NywgMTM2NzUsIDEzNjgxLCAxMzY4NiwgMTM2OTIsIDEzNzAwLCAxMzcwOCwgMTM3MTQsIDEzNzIwLCAxMzcyNSwgCi0gICAgMTM3MzIsIDEzNzM3LCAxMzc0MSwgMTM3NDcsIDEzNzUyLCAxMzc1OSwgMTM3NjQsIDEzNzcwLCAxMzc3MywgMTM3NzksIAotICAgIDEzNzg1LCAxMzc4OCwgMTM3OTIsIDEzODA0LCAxMzgxMCwgMTM4MTUsIDEzODIyLCAxMzgyOCwgMTM4MzQsIDEzODQ1LCAKLSAgICAxMzg1NSwgMTM4NjQsIDEzODcyLCAxMzg3OSwgMTM4OTAsIDEzOTAwLCAxMzkxMCwgMTM5MTgsIDEzOTIxLCAxMjYyOCwgCi0gICAgMTM5MjYsIDEzOTMxLCAxMjYzMywgMTI3NTgsIDEzOTM5LCAxMzk1MiwgMTM5NjcsIDEzOTc4LCAxMjc3NSwgMTM5OTYsIAotICAgIDE0MDA5LCAxNDAyMiwgMTQwMzMsIDg4NDEsIDE0MDQ0LCAxNDA1NywgMTQwNzYsIDE0MDg3LCAxNDA5OCwgMTQxMDksIAotICAgIDI2MDMsIDE0MTIyLCAxNDEyNiwgMTQxMzQsIDE0MTQ1LCAxNDE1MiwgMTQxNTgsIDE0MTY2LCAxNDE3MCwgMTQxNzYsIAotICAgIDE0MTc5LCAxNDE4OSwgMTQxOTcsIDE0MjA0LCAxNDIxMiwgMTQyMjIsIDE0MjI3LCAxNDIzNCwgMTQyMzksIDE0MjQ2LCAKLSAgICAxNDI1NywgMTQyNjcsIDE0MjczLCAxNDI3OCwgMTQyODMsIDE0Mjg3LCAxNDI5MSwgMTQyOTcsIDE0MzAzLCAxNDMwOCwgCi0gICAgMTQzMTMsIDE0MzE4LCAxNDMyMiwgMTI2MzgsIDEyNjQ0LCAxNDMyNiwgMTI2NTAsIDE0MzMxLCAxNDMzOSwgMTQzNDgsIAotICAgIDE0MzU1LCA3NTQyLCAxNDM1OSwgMTQzNjEsIDE0MzY2LCAxNDM3MSwgMTQzNzcsIDE0MzgyLCAxNDM4NywgMTQzOTIsIAotICAgIDE0Mzk3LCAxNDQwMSwgMTQ0MDcsIDE0NDEzLCAxNDQxOCwgMTQ0MjQsIDE0NDI5LCAxNDQzNCwgMTQ0NDAsIDE0NDQ1LCAKLSAgICAxNDQ1MCwgMTQ0NTUsIDE0NDYxLCAxNDQ2NiwgMTQ0NzEsIDE0NDc3LCAxNDQ4MywgMTQ0ODgsIDE0NDkzLCAxNDUwMCwgCi0gICAgMTQ1MDYsIDE0NTE3LCAxNDUyNCwgMTQ1MjksIDE0NTMzLCAxNDUzNywgMTQ1NDAsIDE0NTQ4LCAxNDU1MywgMTQ1NjAsIAotICAgIDE0NTY3LCAxNDU3MiwgMTQ1NzcsIDE0NTg0LCAxNDU5NCwgMTQ1OTksIDE0NjA2LCAxNDYxMiwgMTQ2MjIsIDE0NjMyLCAKLSAgICAxNDY0NiwgMTQ2NjAsIDE0Njc0LCAxNDY4OCwgMTQ3MDMsIDE0NzE4LCAxNDczNSwgMTQ3NTMsIDE0NzY2LCAxNDc3MiwgCi0gICAgMTQ3NzcsIDE0NzgyLCAxNDc4NiwgMTQ3OTEsIDE0Nzk5LCAxNDgwNSwgMTQ4MTAsIDE0ODE1LCAxNDgxOSwgMTQ4MjQsIAotICAgIDE0ODI4LCAxNDgzMywgMTQ4MzcsIDE0ODQ4LCAxNDg1NCwgMTQ4NTksIDE0ODY0LCAxNDg3MSwgMTQ4NzYsIDE0ODgwLCAKLSAgICAxNDg4NSwgMTQ4OTAsIDE0ODk2LCAxNDkwMywgMTQ5MDksIDE0OTE0LCAxNDkxOCwgMTQ5MjQsIDE0OTI5LCAxNDkzNCwgCi0gICAgMTQ5MzgsIDE0OTQ0LCAxNDk0OSwgMTQ5NTQsIDE0OTYxLCAxNDk2NiwgMTE0MjAsIDE0OTcwLCAxNDk3NSwgMTQ5NzksIAotICAgIDE0OTg0LCAxNDk5MCwgMTQ5OTYsIDE1MDAzLCAxNTAxMywgMTUwMjEsIDE1MDI4LCAxNTAzMywgMTUwMzcsIDE1MDQ2LCAKLSAgICAxNTA1NCwgMTUwNjEsIDE1MDY4LCAxNTA3NCwgMTUwODAsIDE1MDg1LCAxNTA5MCwgMTUwOTYsIDE1MTAxLCAxNTEwNywgCi0gICAgMTUxMTIsIDE1MTE4LCAxNTEyNCwgMTUxMzEsIDE1MTM3LCAxNTE0MiwgMTUxNDcsIDc3MTUsIDE1MTU2LCAxNTE1OSwgCi0gICAgMTUxNjUsIDE1MTcwLCAxNTE3NSwgMTUxODUsIDE1MTkyLCAxNTE5OCwgMTUyMDMsIDE1MjA5LCAxNTIxNCwgMTUyMjAsIAotICAgIDE1MjI1LCAxNTIzMSwgMTUyMzcsIDE1MjQyLCAxNTI1MCwgMTUyNTcsIDE1MjYyLCAxNTI2NywgMTUyNzMsIDE1Mjc4LCAKLSAgICAxNTI4MiwgMTUyOTEsIDE1MzAyLCAxNTMwOSwgMTUzMTcsIDE1MzIzLCAxNTMzMCwgMTUzMzYsIDE1MzQxLCAxNTM0NSwgCi0gICAgMTUzNTEsIDE1MzU2LCAxNTM2MSwgMTUzNjYsIDc3MjAsIDYyMjMsIDI4MjcsIDE1MzcwLCAxNTM3NCwgMTUzNzgsIDE1MzgyLCAKLSAgICAxNTM4NiwgMTUzODksIDE1Mzk2LCAxNTQwNCwgMTI2NjQsIDE1NDExLCAxNTQyMSwgMTU0MjksIDE1NDM2LCAxNTQ0NCwgCi0gICAgMTU0NTQsIDE1NDYzLCAxNTQ3NiwgMTU0ODEsIDE1NDg2LCAxNTQ5NCwgMTU1MDEsIDExNTEwLCAxMTUxOSwgMTU1MDgsIAotICAgIDE1NTE4LCAxNTUzMywgMTU1MzksIDE1NTQ2LCAxNTU1MywgMTU1NTksIDE1NTY5LCAxNTU3OSwgMTI2NjksIDE1NTg4LCAKLSAgICAxNTU5NCwgMTU2MDAsIDE1NjA4LCAxNTYxNiwgMTU2MjEsIDE1NjMwLCAxNTYzOCwgMTU2NTAsIDE1NjYwLCAxNTY3MCwgCi0gICAgMTU2ODAsIDE1Njg5LCAxNTcwMSwgMTU3MTEsIDE1NzIxLCAxNTczMiwgMTU3MzcsIDE1NzQ5LCAxNTc2MSwgMTU3NzMsIAotICAgIDE1Nzg1LCAxNTc5NywgMTU4MDksIDE1ODIxLCAxNTgzMywgMTU4NDUsIDE1ODU3LCAxNTg2OCwgMTU4ODAsIDE1ODkyLCAKLSAgICAxNTkwNCwgMTU5MTYsIDE1OTI4LCAxNTk0MCwgMTU5NTIsIDE1OTY0LCAxNTk3NiwgMTU5ODgsIDE1OTk5LCAxNjAxMSwgCi0gICAgMTYwMjMsIDE2MDM1LCAxNjA0NywgMTYwNTksIDE2MDcxLCAxNjA4MywgMTYwOTUsIDE2MTA3LCAxNjExOSwgMTYxMzAsIAotICAgIDE2MTQyLCAxNjE1NCwgMTYxNjYsIDE2MTc4LCAxNjE5MCwgMTYyMDIsIDE2MjE0LCAxNjIyNiwgMTYyMzgsIDE2MjUwLCAKLSAgICAxNjI2MSwgMTYyNzMsIDE2Mjg1LCAxNjI5NywgMTYzMDksIDE2MzIxLCAxNjMzMywgMTYzNDUsIDE2MzU3LCAxNjM2OSwgCi0gICAgMTYzODEsIDE2MzkyLCAxNjQwNCwgMTY0MTYsIDE2NDI4LCAxNjQ0MCwgMTY0NTIsIDE2NDY0LCAxNjQ3NiwgMTY0ODgsIAotICAgIDE2NTAwLCAxNjUxMiwgMTY1MjMsIDE2NTM1LCAxNjU0NywgMTY1NTksIDE2NTcxLCAxNjU4MywgMTY1OTUsIDE2NjA3LCAKLSAgICAxNjYxOSwgMTY2MzEsIDE2NjQzLCAxNjY1NCwgMTY2NjYsIDE2Njc4LCAxNjY5MCwgMTY3MDIsIDE2NzE1LCAxNjcyOCwgCi0gICAgMTY3NDEsIDE2NzU0LCAxNjc2NywgMTY3ODAsIDE2NzkzLCAxNjgwNSwgMTY4MTgsIDE2ODMxLCAxNjg0NCwgMTY4NTcsIAotICAgIDE2ODcwLCAxNjg4MywgMTY4OTYsIDE2OTA5LCAxNjkyMiwgMTY5MzUsIDE2OTQ3LCAxNjk2MCwgMTY5NzMsIDE2OTg2LCAKLSAgICAxNjk5OSwgMTcwMTIsIDE3MDI1LCAxNzAzOCwgMTcwNTEsIDE3MDY0LCAxNzA3NywgMTcwODksIDE3MTAyLCAxNzExNSwgCi0gICAgMTcxMjgsIDE3MTQxLCAxNzE1NCwgMTcxNjcsIDE3MTgwLCAxNzE5MywgMTcyMDYsIDE3MjE5LCAxNzIzMSwgMTcyNDQsIAotICAgIDE3MjU3LCAxNzI3MCwgMTcyODMsIDE3Mjk2LCAxNzMwOSwgMTczMjIsIDE3MzM1LCAxNzM0OCwgMTczNjEsIDE3MzczLCAKLSAgICAxNzM4NiwgMTczOTksIDE3NDEyLCAxNzQyNSwgMTc0MzgsIDE3NDUxLCAxNzQ2NCwgMTc0NzcsIDE3NDkwLCAxNzUwMywgCi0gICAgMTc1MTUsIDE3NTI2LCAxNzUzOSwgMTc1NTIsIDE3NTY1LCAxNzU3OCwgMTc1OTEsIDE3NjA0LCAxNzYxNywgMTc2MzAsIAotICAgIDE3NjQzLCAxNzY1NiwgMTc2NjgsIDE3NjgxLCAxNzY5NCwgMTc3MDcsIDE3NzIwLCAxNzczMywgMTc3NDYsIDE3NzU5LCAKLSAgICAxNzc3MiwgMTc3ODUsIDE3Nzk4LCAxNzgxMCwgMTc4MjMsIDE3ODM2LCAxNzg0OSwgMTc4NjIsIDE3ODc1LCAxNzg4OCwgCi0gICAgMTc5MDEsIDE3OTE0LCAxNzkyNywgMTc5NDAsIDE3OTUyLCAxNzk2NSwgMTc5NzgsIDE3OTkxLCAxODAwNCwgMTgwMTcsIAotICAgIDE4MDMwLCAxODA0MywgMTgwNTYsIDE4MDY5LCAxODA4MiwgMTgwOTQsIDE4MTA3LCAxODEyMCwgMTgxMzMsIDE4MTQ2LCAKLSAgICAxODE1OSwgMTgxNzIsIDE4MTg1LCAxODE5OCwgMTgyMTEsIDE4MjI0LCAxODIzNiwgMTgyNDksIDE4MjYyLCAxODI3NSwgCi0gICAgMTgyODgsIDE4MzAxLCAxODMxNCwgMTgzMjcsIDE4MzQwLCAxODM1MywgMTgzNjYsIDE4Mzc4LCAxODM5MSwgMTg0MDQsIAotICAgIDE4NDE3LCAxODQzMCwgMTg0NDMsIDE4NDU2LCAxODQ2OSwgMTg0ODIsIDE4NDk1LCAxODUwOCwgMTg1MjAsIDE4NTMzLCAKLSAgICAxODU0NiwgMTg1NTksIDE4NTcyLCAxODU4NSwgMTg1OTgsIDE4NjExLCAxODYyNCwgMTg2MzcsIDE4NjUwLCAxODY2MiwgCi0gICAgMTg2NzUsIDE4Njg4LCAxODcwMSwgMTg3MTQsIDE4NzI3LCAxODc0MCwgMTg3NTMsIDE4NzY2LCAxODc3OSwgMTg3OTIsIAotICAgIDE4ODA0LCAxODgxNywgMTg4MzAsIDE4ODQzLCAxODg1NiwgMTg4NjksIDE4ODgyLCAxODg5NSwgMTg5MDgsIDE4OTIxLCAKLSAgICAxODkzNCwgMTg5NDYsIDE4OTU3LCAxODk2NSwgMTg5NzIsIDE4OTc4LCAxODk4MiwgMTg5ODgsIDE4OTk0LCAxOTAwMiwgCi0gICAgMTkwMDgsIDE5MDEzLCAxOTAxNywgMTkwMjYsIDc1NDcsIDE5MDM3LCAxOTA0NCwgMTkwNTIsIDE5MDU5LCAxOTA2NiwgCi0gICAgOTI5MywgMTkwNzMsIDE5MDgyLCAxOTA4NywgMTkwOTIsIDYyMzksIDE5MDk5LCAxOTEwNCwgMTkxMDcsIDE5MTEyLCAKLSAgICAxOTEyMCwgMTkxMjcsIDE5MTM0LCAxOTE0MSwgMTkxNDcsIDE5MTU2LCAxOTE2NSwgMTkxNzEsIDE5MTgwLCAxOTE4NiwgCi0gICAgMTkxOTEsIDE5MjAxLCAxOTIwOCwgMTkyMTQsIDE5MjIyLCAxOTIyOCwgMTkyMzUsIDE5MjQ1LCAxOTI1NCwgMTkyNTgsIAotICAgIDE5MjY1LCAxOTI2OSwgMTkyNzQsIDE5MjgwLCAxOTI4OCwgMTkyOTIsIDE5MzAyLCAxMjY3OSwgMTkzMTEsIDE5MzE3LCAKLSAgICAxOTMyMSwgMTkzMzAsIDE5MzM2LCAxOTM0MywgMTkzNTQsIDE5MzYyLCAxOTM3MSwgNzMzNSwgMTkzNzksIDE5Mzg0LCAKLSAgICAxOTM5MCwgMTkzOTUsIDE5Mzk5LCAxOTQwMywgMTk0MDcsIDgwMDYsIDE5NDEyLCAxOTQyMCwgMTk0MjcsIDE5NDM2LCAKLSAgICAxOTQ0MywgMTk0NTAsIDkyMjMsIDE5NDU3LCAxOTQ2MywgMTk0NjcsIDE5NDczLCAxOTQ3OSwgMTk0ODcsIDE5NDkzLCAKLSAgICAxOTUwMCwgMTk1MDYsIDE5NTEyLCAxOTUyMSwgMTk1MjUsIDE5NTMzLCAxOTU0MiwgMTk1NDksIDE5NTU0LCAxOTU1OCwgCi0gICAgMTk1NjksIDE5NTc0LCAxOTU3OSwgMTk1ODQsIDE5NTk3LCA2NDI2LCAxOTYwMSwgMTk2MDcsIDE5NjE1LCAxOTYxOSwgCi0gICAgMTk2MjYsIDE5NjM1LCAxOTY0MCwgMTk2NDgsIDE5NjYwLCAxOTY2NSwgMTk2NjksIDE5NjcyLCAxOTY3OCwgMTk2ODQsIAotICAgIDE5Njg5LCAxOTY5MywgMTk2OTYsIDE5NzA3LCAxOTcxMiwgNzc1MCwgMTk3MTksIDc1NTgsIDc3NTUsIDE5NzI0LCAxOTcyOSwgCi0gICAgMTk3MzQsIDE5NzM5LCAxOTc0NCwgMTk3NDksIDE5NzU0LCAxOTc1OSwgMTk3NjQsIDE5NzY5LCAxOTc3NCwgMTk3NzksIAotICAgIDE5Nzg1LCAxOTc5MCwgMTk3OTUsIDE5ODAwLCAxOTgwNSwgMTk4MTAsIDE5ODE1LCAxOTgyMCwgMTk4MjUsIDE5ODMwLCAKLSAgICAxOTgzNiwgMTk4NDIsIDE5ODQ3LCAxOTg1MiwgMTk4NTcsIDE5ODYyLCAxOTg2NywgMTk4NzIsIDE5ODc3LCAxOTg4MiwgCi0gICAgMTk4ODcsIDE5ODkzLCAxOTg5OCwgMTk5MDMsIDE5OTA4LCAxOTkxNCwgMTk5MjAsIDE5OTI1LCAxOTkzMCwgMTk5MzUsIAotICAgIDE5OTQwLCAxOTk0NSwgMTk5NTAsIDE5OTU1LCAxOTk2MCwgMTk5NjYsIDE5OTcxLCAxOTk3NiwgMTk5ODEsIDE5OTg2LCAKLSAgICAxOTk5MiwgMTk5OTcsIDIwMDAyLCAyMDAwNiwgMTI5LCAyMDAxNCwgMjAwMTgsIDIwMDIyLCAyMDAyNiwgMjAwMzEsIAotICAgIDIwMDM1LCAyMDAzOSwgMTA3ODEsIDIwMDQzLCAyMDA0OCwgMjAwNTIsIDIwMDU3LCAyMDA2MSwgMjAwNjYsIDIwMDcwLCAKLSAgICAyMDA3NiwgMjAwODEsIDIwMDg1LCAyMDA4OSwgMjAwOTcsIDIwMTAxLCAyMDEwNiwgMjAxMTEsIDIwMTE1LCAyMDEyMSwgCi0gICAgMjAxMjYsIDIwMTMwLCAyMDEzNSwgMjAxNDAsIDIwMTQ0LCAyMDE1MSwgMjAxNTgsIDIwMTY1LCAyMDE2OSwgMjAxNzMsIAotICAgIDIwMTc4LCAyMDE4MiwgMjAxODUsIDIwMTkxLCAyMDIwNCwgMjAyMDksIDIwMjE4LCAyMDIyMywgNzc5NSwgMjAyMjgsIAotICAgIDIwMjMxLCAyNjY2LCAyNjcxLCAyMDIzNSwgMjAyNDEsIDIwMjQ3LCAyMDI1MiwgMjAyNTcsIDIwMjYyLCAyMDI2OCwgCi0gICAgMjAyNzMsIDEyMTkwLCAyMDI3OCwgMjAyODMsIDIwMjg4LCAyMDI5NCwgMjAyOTksIDIwMzA0LCAyMDMxMCwgMjAzMTUsIAotICAgIDIwMzE5LCAyMDMyNCwgMjAzMjksIDIwMzM0LCAyMDMzOCwgMjAzNDMsIDIwMzQ4LCAyMDM1MywgMjAzNTgsIDIwMzYyLCAKLSAgICAyMDM2NiwgMjAzNzEsIDI4MzYsIDIwMzIwLCAyMDM3NSwgMjAzODMsIDIwMzkwLCA4MTAwLCAyMDQwMiwgMjA0MTAsIAotICAgIDIwMzI1LCAyMDQxNywgMjA0MjIsIDIwNDMwLCAyMDMzMCwgMjA0MzUsIDIwNDQwLCAyMDQ0OCwgMjA0NTMsIDIwNDU4LCAKLSAgICAyMDQ2MiwgMjA0NjcsIDIwNDcxLCAyMDQ3NywgMjA0ODAsIDIwNDg3LCAyMDQ5MSwgMjA0OTUsIDIwNTAxLCAyMDUwOCwgCi0gICAgMjA1MTMsIDczNjIsIDE2OTAsIDE2OTUsIDIwNTE3LCAyMDUyMywgMjA1MjksIDIwNTM0LCAyMDUzOCwgMjA1NDIsIDIwNTQ2LCAKLSAgICAyMDU0OSwgMjA1NTUsIDIwNTYyLCAyMDU3MCwgMjA1NzYsIDIwNTgyLCAyMDU4NywgMjA1OTIsIDIwNTk2LCAxMzAzOSwgCi0gICAgMTM4OTYsIDIwNjAxLCAyMDYxMywgMjA2MTYsIDIwNjIzLCAyMDYzMCwgMjA2MzQsIDIwNjQyLCAyMDY1MywgMjA2NjIsIAotICAgIDIwNjc1LCAyMDY4NSwgMjA2OTksIDIwNzExLCAyMDcyNSwgMjA3MzcsIDIwNzQ3LCAyMDc1OSwgMjA3NjUsIDIwNzgwLCAKLSAgICAyMDgwNCwgMjA4MjIsIDIwODQxLCAyMDg1NCwgMjA4NjgsIDIwODg2LCAyMDkwMiwgMjA5MTksIDIwOTM3LCAyMDk0OCwgCi0gICAgMjA5NjcsIDIwOTg0LCAyMTAwNCwgMjEwMjIsIDIxMDM0LCAyMTA0OCwgMjEwNjIsIDIxMDc0LCAyMTA5MSwgMjExMTAsIAotICAgIDIxMTI4LCAyMTE0MCwgMjExNTgsIDIxMTc3LCAxMjgxOCwgMjExOTAsIDIxMjEwLCAyMTIyMiwgODg3MiwgMjEyMzQsIAotICAgIDIxMjM5LCAyMTI0NCwgMjEyNDksIDIxMjU1LCAyMTI2MCwgMjEyNjQsIDIxMjcxLCAyMzUyLCAyMTI3NSwgMjEyODEsIAotICAgIDIxMjg1LCAyMTI4OCwgMjEyOTIsIDIxMzAwLCAyMTMwNiwgMjAzMzksIDIxMzEwLCAyMTMxOSwgMjEzMzAsIDIxMzM2LCAKLSAgICAyMTM0MiwgMjEzNTEsIDIxMzU5LCAyMTM2NiwgMjEzNzEsIDIxMzc4LCAyMTM4NCwgMjEzOTMsIDIxNDAxLCAyMTQwOCwgCi0gICAgMjE0MTgsIDIxNDI3LCAyMTQzNywgMjE0NDIsIDIxNDUxLCAyMTQ2MCwgMjE0NzEsIDIxNDgyLCAzODgwLCAyMTQ5MiwgCi0gICAgMjE0OTYsIDIxNTA2LCAyMTUxNCwgMjE1MjQsIDIxNTM1LCAyMTU0MCwgMjE1NDgsIDIxNTU1LCAyMTU2MSwgMjE1NjYsIAotICAgIDIwMzQ5LCAyMTU3MCwgMjE1NzksIDIxNTgzLCAyMTU4NiwgMjE1OTEsIDIxNTk4LCAyMTYwNywgMjE2MTUsIDIxNjIzLCAKLSAgICAyMTYzMywgMjE2NDIsIDIxNjQ4LCAyMTY1NCwgMjAzNTQsIDIwMzU5LCAyMTY1OCwgMjE2NjgsIDIxNjc4LCAyMTY4OCwgCi0gICAgMjE2OTYsIDIxNzAzLCAyMTcxMywgMjE3MjEsIDIxNzI5LCAyMTczNSwgOTYyLCAyMTc0NCwgMTMwMDAsIDUzNywgMjE3NTgsIAotICAgIDIxNzY3LCAyMTc3NSwgMjE3ODYsIDIxNzk3LCAyMTgwNywgMjE4MTYsIDIxODI4LCAyMTgzNywgMjE4NDYsIDIxODUyLCAKLSAgICAyMTg2MSwgMjE4NzAsIDIxODgwLCAyMTg4OCwgMjE4OTYsIDc3MjcsIDIxOTAyLCAyMTkwNSwgMjE5MDksIDIxOTE0LCAKLSAgICAyMTkxOSwgODIxNSwgMjAzNjcsIDIxOTI3LCAyMTkzMywgMjE5MzksIDIxOTQ0LCAyMTk0OSwgMjE5NTMsIDIxOTYxLCAKLSAgICAyMTk2NywgMjE5NzMsIDIxOTc3LCAzNDY3LCAyMTk4NSwgMjE5OTAsIDIxOTk1LCAyMTk5OSwgMjIwMDMsIDgyODcsIAotICAgIDIyMDEwLCAyMjAxOCwgMjIwMjUsIDIyMDMxLCA4Mjk2LCA4MzAyLCAyMjAzOSwgMjIwNDcsIDIyMDU0LCAyMjA1OSwgCi0gICAgMjIwNjQsIDIyMDcwLCAyMjA3NCwgMjIwODUsIDIyMDkwLCAyNTU1LCAyMjA5NSwgMjIxMDYsIDIyMTEyLCAyMjExNywgCi0gICAgMjIxMjEsIDIyMTI1LCAyMjEyOCwgMjIxMzUsIDIyMTQyLCAyMjE0OSwgMjIxNTUsIDIyMTU5LCAyMjE2NCwgMjIxNjgsIAotICAgIDIyMTcyLCA5NzksIDIyMTc2LCAyMjE4MSwgMjIxODYsIDIyMTkxLCAyMjE5NiwgMjIyMDEsIDIyMjA2LCAyMjIxMSwgCi0gICAgMjIyMTYsIDIyMjIxLCAyMjIyNiwgMjIyMzEsIDIyMjM2LCAyMjI0MSwgMjIyNDcsIDIyMjUyLCAyMjI1NywgMjIyNjIsIAotICAgIDIyMjY3LCAyMjI3MiwgMjIyNzcsIDIyMjgzLCAyMjI4OCwgMjIyOTMsIDIyMjk4LCAyMjMwMywgMjIzMDgsIDIyMzEzLCAKLSAgICAyMjMxOCwgMjIzMjQsIDIyMzMwLCAyMjMzNSwgMjIzNDEsIDIyMzQ2LCAyMjM1MSwgNSwgMjIzNTcsIDIyMzYxLCAyMjM2NSwgCi0gICAgMjIzNjksIDIyMzc0LCAyMjM3OCwgMjIzODIsIDIyMzg2LCAyMjM5MCwgMjIzOTUsIDIyMzk5LCAyMjQwNCwgMjI0MDgsIAotICAgIDIyNDExLCAyMjQxNSwgMjI0MjAsIDIyNDI0LCAyMjQyOSwgMjI0MzMsIDIyNDM3LCAyMjQ0MSwgMjI0NDYsIDIyNDUwLCAKLSAgICAyMjQ1NCwgMjI0NjQsIDIyNDY5LCAyMjQ3MywgMjI0NzcsIDIyNDgyLCAyMjQ4NywgMjI0OTYsIDIyNTAxLCAyMjUwNiwgCi0gICAgMjI1MTAsIDIyNTE0LCAyMjUyNywgMjI1MzksIDIyNTQ4LCAyMjU1NywgMjI1NjMsIDIyNTY4LCAyMjU3MiwgMjI1NzYsIAotICAgIDIyNTg2LCAyMjU5NSwgMjI2MDMsIDIyNjA5LCAyMjYxNCwgMjI2MTgsIDIyNjI1LCAyMjYzNSwgMjI2NDQsIDIyNjUyLCAKLSAgICAyMjY2MCwgMjI2NjcsIDIyNjc1LCAyMjY4NCwgMjI2OTMsIDIyNzAxLCAyMjcwNiwgMjI3MTAsIDIyNzE0LCAyMjcxNywgCi0gICAgMjI3MTksIDIyNzIzLCAyMjcyNywgMjI3MzIsIDIyNzM3LCAyMjc0MSwgMjI3NDUsIDIyNzQ4LCAyMjc1MiwgMjI3NTUsIAotICAgIDIyNzU5LCAyMjc2MiwgMjI3NjUsIDIyNzY5LCAyMjc3NSwgMjI3NzksIDIyNzgzLCAyMjc4NywgMjI3OTIsIDIyNzk3LCAKLSAgICAyMjgwMiwgMjI4MDYsIDIyODA5LCAyMjgxNCwgMjI4MjAsIDIyODI1LCAyMjgzMSwgMjI4MzYsIDIyODQwLCAyMjg0NCwgCi0gICAgMjI4NDgsIDIyODUzLCAyMjg1NywgMjI4NjIsIDIyODY2LCAyMjg3MywgMjI4NzcsIDIyODgwLCAyMjg4NCwgMjI4OTAsIAotICAgIDIyODk2LCAyMjkwMCwgMjI5MDQsIDIyOTA5LCAyMjkxNiwgMjI5MjIsIDIyOTI2LCAyMjkzNSwgMjI5MzksIDIyOTQzLCAKLSAgICAyMjk0NiwgMjI5NTIsIDIyOTU3LCAyMjk2MywgMTQ1MiwgMTc1NCwgMjI5NjgsIDIyOTczLCAyMjk3OCwgMjI5ODMsIAotICAgIDIyOTg4LCAyMjk5MywgMjI5OTgsIDIxMDYsIDIxNDgsIDIzMDAzLCAyMzAwNiwgMjMwMTAsIDIzMDE0LCAyMzAxOSwgCi0gICAgMjMwMjMsIDIzMDI3LCAyMzAzMCwgMjMwMzUsIDIzMDQwLCAyMzA0NCwgMjMwNDcsIDIzMDUyLCAyMzA1NiwgMjMwNjEsIAotICAgIDIzMDY1LCAxMzAxMiwgMjMwNzAsIDIzMDczLCAyMzA3NiwgMjMwODAsIDIzMDg1LCAyMzA5OCwgMjMxMDIsIDIzMTA1LCAKLSAgICAyMzExMywgMjMxMjIsIDIzMTI5LCAyMzEzNCwgMjMxNDAsIDIzMTQ2LCAyMzE1MywgMjMxNjAsIDIzMTY0LCAyMzE2OCwgCi0gICAgMjMxNzIsIDIzMTc3LCAyMzE4MiwgMjMxODYsIDIzMTk0LCAyMzE5OSwgMjMyMTEsIDIzMjIyLCAyMzIyNywgMjMyMzEsIAotICAgIDIzMjM1LCAyMzI0MSwgMjMyNDYsIDIzMjUxLCAyMzI1NSwgMjMyNTgsIDIzMjY0LCA2MzQ2LCAyMjcwLCAyMzI2OCwgCi0gICAgMjMyNzMsIDIzMjg5LCA3ODQyLCAyMzMwOSwgMjMzMTgsIDIzMzM0LCAyMzMzOCwgMjMzNDEsIDIzMzQ3LCAyMzM1NywgCi0gICAgMjMzNjMsIDIzMzc4LCAyMzM5MCwgMjM0MDEsIDIzNDA5LCAyMzQxOCwgMjM0MjQsIDIzNDMzLCAyMzQ0MywgMjM0NTQsIAotICAgIDIzNDY1LCAyMzQ3NCwgMjM0ODMsIDIzNDkxLCAyMzQ5OCwgMjM1MDYsIDIzNTE5LCAyMzUyNiwgMjM1MzIsIDIzNTM3LCAKLSAgICAyMzU0NiwgMjM1NTIsIDIzNTU3LCAyMzU2NSwgMjE1MTYsIDIzNTc3LCAyMzU4OSwgMjM2MDMsIDIzNjExLCAyMzYxOCwgCi0gICAgMjM2MzAsIDIzNjM5LCAyMzY0OCwgMjM2NTYsIDIzNjY0LCAyMzY3MiwgMjM2NzksIDIzNjg4LCAyMzY5NiwgMjM3MDYsIAotICAgIDIzNzE1LCAyMzcyNSwgMjM3MzQsIDIzNzQzLCAyMzc1MSwgMjM3NTYsIDIzNzYwLCAyMzc2MywgMjM3NjcsIDIzNzcxLCAKLSAgICAyMzc3NSwgMjM3NzksIDIzNzgzLCAyMzc4OSwgMjM3OTUsIDIzODAzLCAxMzA1NywgMjM4MTAsIDIzODE1LCAyMzgyMiwgCi0gICAgMjM4MjgsIDIzODM1LCAxMzA2NSwgMjM4NDIsIDIzODQ1LCAyMzg1NywgMjM4NjUsIDIzODcxLCAyMzg3NiwgMjM4ODAsIAotICAgIDgyNDUsIDIzODkxLCAyMzkwMSwgMjM5MTAsIDIzOTE3LCAyMzkyMSwgMTMwNzAsIDIzOTI0LCAyMzkzMSwgMjM5MzUsIAotICAgIDIzOTQxLCAyMzk0NCwgMjM5NTEsIDIzOTU3LCAyMzk2MSwgMjM5NjYsIDIzOTcwLCAyMzk3OSwgMjM5ODYsIDIzOTkyLCAKLSAgICA2Mzg3LCAyMzk5OSwgMjQwMDcsIDI0MDE0LCAyNDAyMCwgMjQwMjUsIDI0MDMxLCAyNDAzNywgMjQwNDUsIDI0MDQ5LCAKLSAgICAyNDA1MiwgMjQwNTQsIDIzNzY4LCAyNDA2MywgMjQwNjksIDI0MDc5LCAyNDA4NCwgMjQwOTEsIDI0MDk3LCAyNDEwMiwgCi0gICAgMjQxMDcsIDI0MTEyLCAyNDExNywgMjQxMjQsIDI0MTMzLCAyNDE0MCwgMjQxNDksIDI0MTU1LCAyNDE2MCwgMjQxNjYsIAotICAgIDI0MTcxLCAyNDE3OCwgMjQxODksIDI0MTk0LCAyNDE5OCwgMjQyMDgsIDI0MjE0LCAyNDIxOCwgMjQyMjMsIDI0MjMzLCAKLSAgICAyNDI0MiwgMjQyNDYsIDI0MjUzLCAyNDI2MSwgMjQyNjgsIDI0Mjc0LCAyNDI3OSwgMjQyODcsIDI0Mjk0LCAyNDMwNiwgCi0gICAgMjQzMTUsIDI0MzE5LCAxMTM2MiwgMjQzMjcsIDI0MzM3LCAyNDM0MSwgMjMxMDksIDI0MzUyLCAyNDM1NywgMjQzNjEsIAotICAgIDI0MzY4LCAyNDM3NSwgMjAxMTcsIDIzNjkzLCAyNDM4MCwgMjQzODQsIDI0Mzg3LCAyMDk1NCwgMjQzOTIsIDI0NDA2LCAKLSAgICAyNDQyMiwgMjQ0NDAsIDI0NDU5LCAyNDQ3NiwgMjQ0OTQsIDIwOTczLCAyNDUxMSwgMjQ1MzEsIDIwOTkwLCAyNDU0MywgCi0gICAgMjQ1NTUsIDEzOTgzLCAyNDU2NywgMjEwMTAsIDI0NTgxLCAyNDU5MywgODg4NSwgMjQ2MDcsIDI0NjEyLCAyNDYxNywgCi0gICAgMjQ2MjIsIDI0NjI4LCAyNDYzNCwgMjQ2NDAsIDI0NjQ0LCAyNDY1MSwgMjQ2NTYsIDI0NjY2LCAyNDY3MiwgODUzMiwgCi0gICAgMjQ2NzgsIDI0NjgwLCAyNDY4NSwgMjQ2OTMsIDI0Njk3LCAyNDEyMCwgMjQ3MDMsIDI0NzEwLCA5ODY5LCA5ODc5LCAKLSAgICAyNDcxNywgMjQ3MjcsIDI0NzMyLCAyNDczNiwgMjQ3MzksIDI0NzQ1LCAyNDc1MywgMjQ3NjUsIDI0Nzc1LCAyNDc5MSwgCi0gICAgMjQ4MDQsIDI0ODE4LCAxNDAwMSwgMjQ4MzIsIDI0ODM5LCAyNDg0MywgMjQ4NDYsIDI0ODUxLCAyNDg1NSwgMjQ4NjIsIAotICAgIDI0ODY5LCAyNDg3OSwgMjQ4ODQsIDI0ODg5LCAyNDg5NCwgMjQ5MDIsIDI0OTEwLCAyNDkxOSwgMjQ5MjQsIDc5MzksIAotICAgIDI0OTI4LCAyNDkzMSwgMjQ5MzQsIDI0OTM5LCAyNDk0NiwgMjQ5NTEsIDI0OTY3LCAyNDk3NSwgMjQ5ODMsIDc3OTAsIAotICAgIDI0OTkxLCAyNDk5NiwgMjUwMDAsIDI1MDA2LCAyNTAxMiwgMjUwMTUsIDI1MDIxLCAyNTAzMywgMjUwNDEsIDI1MDQ4LCAKLSAgICAyNTA1NCwgMjUwNjEsIDI1MDcyLCAyNTA4NiwgMjUwOTksIDI1MTA4LCAyNTEyMCwgMjUxMzEsIDI1MTQxLCAyNTE1MCwgCi0gICAgMjUxNTksIDI1MTY3LCAyNTE3OCwgNjM2OSwgMjUxODUsIDI1MTkxLCAyNTE5NiwgMjUyMDIsIDI1MjA5LCAyNTIxOSwgCi0gICAgMjUyMjksIDI1MjM4LCAyNTI0NCwgMjUyNTEsIDI1MjU2LCAyNTI2MywgMjUyNzEsIDI1Mjc5LCAyNTI5MSwgNDcwNCwgCi0gICAgMjUyOTgsIDI1MzA3LCAyNTMxNSwgMjUzMjEsIDI1MzI3LCAyNTMzMiwgMjUzMzYsIDI1MzM5LCAyNTM0NSwgMjUzNTIsIAotICAgIDI1MzU3LCAyNTM2MiwgMjUzNjYsIDI1Mzc4LCAyNTM4OSwgMjUzOTgsIDI1NDA2LCAxMzE5NywgMjU0MTEsIDI1NDE3LCAKLSAgICAyNTQyMywgOTg2MiwgNzA0OSwgMjU0MjgsIDI1NDMxLCAyNTQzNCwgMjU0NDAsIDI1NDQ4LCAyNTQ1NiwgMjU0NjAsIAotICAgIDI1NDY0LCAyNTQ2OSwgMjU0NzIsIDI1NDgxLCAyNTQ4OSwgMjU1MDAsIDI1NTA0LCAyNTUxMCwgMjU1MTYsIDI1NTIwLCAKLSAgICAyNTUyNiwgMjU1MzQsIDI1NTU2LCAyNTU4MCwgMjU1ODcsIDI1NTk0LCAyNTYwMCwgMjU2MDYsIDI1NjExLCAyNTYyMiwgCi0gICAgMjU2NDAsIDI1NjQ3LCAyNTY1NSwgMjU2NTksIDI1NjY4LCAyNTY4MSwgMjU2ODksIDI1NzAxLCAyNTcxMiwgMjU3MjIsIAotICAgIDI1NzM2LCAyNTc0NSwgMjU3NTMsIDI1NzY1LCA3ODU5LCAyNTc3NiwgMjU3ODcsIDI1Nzk5LCAyNTgwOSwgMjU4MTgsIAotICAgIDI1ODIzLCAyNTgyNywgMjU4MzUsIDI1ODQ1LCAyNTg1MCwgMjU4NTQsIDI1ODU3LCAyNTg2MCwgMjU4NjgsIDI1ODc2LCAKLSAgICAyNTg4NSwgMjU4OTUsIDI1OTA0LCAyNTkxMCwgMjU5MjQsIDI2MTcsIDI1OTQ2LCAyNTk1NywgMjU5NjYsIDI1OTc2LCAKLSAgICAyNTk4OCwgMjU5OTcsIDI2MDA3LCAyNjAxNSwgMjYwMjMsIDI2MDMyLCAyNjAzNywgMjYwNDgsIDI2MDUzLCAyNjA2NCwgCi0gICAgMjYwNjgsIDI2MDc4LCAyNjA4NywgMjYwOTUsIDI2MTA1LCAyNjExNSwgMjYxMjMsIDI2MTMyLCAyNjEzOSwgMjYxNDcsIAotICAgIDI2MTU0LCAyNjE2MywgMjYxNjcsIDI2MTc1LCAyNjE4MiwgMjYxOTAsIDI2MTk3LCAyNjIwOCwgMjYyMjMsIDI2MjMwLCAKLSAgICAyNjIzNiwgMjYyNDYsIDI2MjU1LCAyNjI2MSwgMjYyNjgsIDEyMzEyLCAyNjI3NCwgMjYyNzgsIDI2MjgzLCAyNjI4NywgCi0gICAgMjYyOTEsIDI2Mjk5LCAyNjMwNywgMjYzMTMsIDI2MzIyLCAyNjMyOSwgMjYzMzQsIDI2MzM5LCAyNjM0OSwgMjE1NjgsIAotICAgIDI2MzUzLCAyNjM1NiwgMjYzNjEsIDI2MzY2LCAyNjM3MSwgMjYzNzYsIDI2MzgxLCAyNjM4NiwgMjYzOTEsIDI2Mzk2LCAKLSAgICAyNjQwMiwgMjY0MDcsIDI2NDEyLCAyNjQxOCwgMTIyMywgNjc5LCAyNjQyMywgMjY0MzIsIDIzMTgsIDI2NDM5LCAyNjQ0NCwgCi0gICAgMjY0NDgsIDI2NDU0LCAxMjU2LCA1NDEsIDMzNCwgMjY0NTksIDI2NDY4LCAyNjQ3NiwgMjY0ODUsIDI2NDkzLCAyNjUwNCwgCi0gICAgMjY1MTMsIDI2NTIxLCAyNjUyNSwgMjY1MjgsIDI2NTM2LCAyNjU0NCwgMjY1NDksIDEzMDI1LCAyNjU1NSwgMjY1NjEsIAotICAgIDI2NTY3LCA0MzUwLCAyNjU3MiwgMjY1NzYsIDI2NTgyLCAyNjU4NiwgMjY1OTMsIDE0MTgsIDI2NTk5LCA3OTQ2LCAyNjYwNiwgCi0gICAgMjY2MTYsIDI2NjI0LCAyNjYzMCwgMjY2MzksIDI2NjQ3LCAyNjY1MywgMjY2NjEsIDI2NjY4LCA5NDU1LCAyNjY3NCwgCi0gICAgMjY2ODEsIDI2Njg4LCAxNDU5LCAyMTA1LCAyNjY5NCwgMjY3MDAsIDI2NzA3LCAyNjcxOCwgMjY3MjksIDI2NzM3LCAKLSAgICAyNjc0NCwgMjY3NTQsIDI2NzYzLCAyNjc3MSwgMjY3NzgsIDI2Nzg1LCAyNjc5OCwgMjY4MDksIDI2ODI4LCAxMjYxLCAKLSAgICAyNjgzMiwgMjY4MzcsIDI2ODQ1LCAzNTEwLCAyNjg0OSwgMjY4NTQsIDI2ODU4LCAxNDIyLCAyMjc0NiwgMjY4NjgsIAotICAgIDI2ODcyLCAyNjg3NywgMjY4ODEsIDM0MzUsIDI2ODg3LCAyNjg5NSwgMjY5MDIsIDI2OTEzLCAyNjkyMSwgMjY5MjksIAotICAgIDM1MTEsIDI2OSwgMjY5MzQsIDI2OTQyLCAyNjk1MCwgMjY5NTcsIDI2OTYzLCAyNjk2OCwgMjE3MCwgMjY5NzUsIDI2OTgxLCAKLSAgICAyMzk2MiwgMjQxODQsIDI2OTg3LCAxMDYsIDI2OTkxLCAyNjk5NSwgMjcwMDEsIDYwNiwgNzY5NSwgMjcwMDYsIDI3MDEzLCAKLSAgICAyNzAxOSwgMjI4MSwgMjcwMjMsIDI3MDI3LCAyNzAzMCwgMjcwMzMsIDI3MDM4LCAyNzA0NSwgMjcwNTEsIDI3MDU2LCAKLSAgICAyNzA2NCwgMjcwNzEsIDI3MDc3LCAyMDQ1NSwgMjcwODEsIDM1ODEsIDE0ODI2LCAyNzA4NSwgMjcwOTAsIDI3MDkzLCAKLSAgICAyNzEwMSwgMjcxMDksIDI3MTEyLCAyNzExOSwgMjcxMjksIDI3MTQxLCAyNzE0NiwgMjcxNTAsIDI3MTU4LCAyNzE2NSwgCi0gICAgMjcxNzEsIDI3MTc4LCAyNzE4NSwgMjcxODgsIDI3MTkyLCAyNzE5NiwgMTQyNiwgMjcyMDYsIDI3MjA4LCAyNzIxMywgCi0gICAgMjcyMTksIDI3MjI1LCAyNzIzMCwgMjcyMzUsIDI3MjQwLCAyNzI0NSwgMjcyNTAsIDI3MjU1LCAyNzI2MCwgMjcyNjUsIAotICAgIDI3MjcwLCAyNzI3NSwgMjcyODAsIDI3Mjg1LCAyNzI5MCwgMjcyOTUsIDI3MzAxLCAyNzMwNywgMjczMTMsIDI3MzE5LCAKLSAgICAyNzMyNCwgMjczMjksIDI3MzM0LCAyNzM0MCwgMjczNDUsIDI3MzUwLCAyNzM1NSwgMjczNjEsIDI3MzY2LCAyNzM3MiwgCi0gICAgMjczNzcsIDI3MzgyLCAyNzM4NywgMjczOTIsIDI3Mzk4LCAyNzQwMywgMjc0MDksIDI3NDE0LCAyNzQxOSwgMjc0MjQsIAotICAgIDI3NDI5LCAyNzQzNSwgMjc0NDAsIDI3NDQ2LCAyNzQ1MSwgMjc0NTYsIDI3NDYxLCAyNzQ2NiwgMjc0NzEsIDI3NDc2LCAKLSAgICAyNzQ4MSwgMjc0ODYsIDI3NDkxLCAyNzQ5NywgMjc1MDMsIDI3NTA5LCAyNzUxNCwgMjc1MTksIDI3NTI0LCAyNzUyOSwgCi0gICAgMjc1MzUsIDI3NTQxLCAyNzU0NywgMjc1NTMsIDI3NTU5LCAyNzU2NSwgMjc1NzAsIDI3NTc2LCAyNzU4MSwgMjc1ODYsIAotICAgIDI3NTkxLCAyNzU5NiwgMjc2MDIsIDIzOTcsIDI3NjA3LCAyNDA0LCAyNDExLCAyNzA4LCAyNzYxMiwgMjQxNywgMjQyNywgCi0gICAgMjc2MTgsIDI3NjIyLCAyNzYyNywgMjc2MzIsIDI3NjM4LCAyNzY0MywgMjc2NDgsIDI3NjUyLCAyNzY1NywgMjc2NjMsIAotICAgIDI3NjY4LCAyNzY3MywgMjc2NzgsIDI3Njg0LCAyNzY4OSwgMjc2OTMsIDI3Njk3LCAyNzcwMiwgMjc3MDcsIDI3NzEyLCAKLSAgICAyNzcxNywgMjc3MjIsIDI3NzI4LCAyNzczNCwgMjc3MzksIDI3NzQzLCAyNzc0OCwgMjc3NTQsIDI3NzU4LCAyNzc2MywgCi0gICAgMjc3NjgsIDI3NzczLCAyNzc3OCwgMjc3ODIsIDI3Nzg1LCAyNzc5MCwgMjc3OTUsIDI3ODAwLCAyNzgwNSwgMjc4MTEsIAotICAgIDI3ODE3LCAyNzgyMiwgMjc4MjcsIDI3ODMxLCAyNzgzNiwgMjc4NDEsIDI3ODQ2LCAyNzg1MSwgMjc4NTYsIDI3ODYwLCAKLSAgICAyNzg2NSwgMjc4NzAsIDI3ODc1LCAyNzg3OSwgMjc4ODMsIDI3ODg3LCAyNzg5MiwgMjc5MDAsIDI3OTA2LCAyNzkxMiwgCi0gICAgMjc5MTgsIDI3OTIzLCAyNzkyNywgMjc5MzAsIDI3OTM1LCAyNzkzOSwgMjc5NDQsIDI3OTQ4LCAyNzk1MywgMjc5NTcsIAotICAgIDI3OTYwLCAxNTQ4OSwgMjc5NjUsIDI3OTczLCAxOTQzOSwgMjY2MDMsIDI3OTc4LCAyNzk4MywgMjc5ODcsIDI3OTkyLCAKLSAgICAyNzk5NiwgMjgwMDAsIDI4MDA1LCAyODAwOSwgMjgwMTIsIDI4MDE1LCAyODAxOSwgMjgwMjQsIDI4MDMyLCAyODAzNiwgCi0gICAgMjgwMzksIDI4MDQ0LCAyODA0OCwgMjgwNTIsIDI4MDU3LCAyODA2MiwgMjgwNjYsIDI4MDcyLCAyODA3NywgMjgwODIsIAotICAgIDI4MDg5LCAyODA5NiwgMjgxMDAsIDI4MTAzLCAyODEwOSwgMjgxMTgsIDI4MTI1LCAyODEzMywgMjgxNDAsIDI4MTQ0LCAKLSAgICAyODE0OSwgMjgxNTMsIDI4MTU5LCAyODE2NSwgMjgxNjksIDI4MTc1LCAyODE4MCwgMjgxODUsIDI4MTkyLCAyODE5OCwgCi0gICAgMjgyMDQsIDI4MjEwLCAyODIxNiwgMjgyMjMsIDI4MjI5LCAyODIzNSwgMjgyNDEsIDI4MjQ3LCAyODI1MywgMjgyNTksIAotICAgIDI4MjY1LCAyODI3MiwgMjgyNzgsIDI4Mjg1LCAyODI5MSwgMjgyOTcsIDI4MzAzLCAyODMwOSwgMjgzMTUsIDI4MzIxLCAKLSAgICAyODMyNywgMjgzMzMsIDI4MzM5LCA5NzYzLCAyODM0NSwgMjgzNTAsIDI4MzU1LCAyODM1OCwgMjgzNjYsIDI4MzcxLCAKLSAgICAyODM4MCwgMjgzODYsIDI4MzkxLCAyODM5NiwgMjg0MDEsIDI4NDA1LCAyODQxMCwgMjg0MTUsIDI4NDIwLCAyODQyNSwgCi0gICAgMjg0MzAsIDI4NDM3LCAyODQ0NCwgMjg0NTAsIDI4NDU2LCAyODQ2MSwgMTQ1MTAsIDI4NDY4LCAyODQ3NCwgMjg0ODEsIAotICAgIDI4NDg3LCAyODQ5MywgMjg0OTgsIDI4NTA2LCAyODUxMSwgMTQyOTQsIDI4NTE1LCAyODUyMCwgMjg1MjUsIDI4NTMxLCAKLSAgICAyODUzNiwgMjg1NDEsIDI4NTQ1LCAyODU1MCwgMjg1NTUsIDI4NTYxLCAyODU2NiwgMjg1NzEsIDI4NTc1LCAyODU4MCwgCi0gICAgMjg1ODUsIDI4NTg5LCAyODU5NCwgMjg1OTksIDI4NjA0LCAyODYwOCwgMjg2MTMsIDI4NjE4LCAyODYyMywgMjg2MjcsIAotICAgIDI4NjMxLCAxMzUzMSwgMjg2MzUsIDI4NjQ0LCAyODY1MCwgMjg2NTYsIDI4NjY1LCAyODY3MywgMjg2ODIsIDI4NjkwLCAKLSAgICAyODY5NSwgMjg2OTksIDI4NzA2LCAyODcxMiwgMjg3MTYsIDI4NzE5LCAyODcyNCwgMjg3MzMsIDI4NzQxLCAyODc0NiwgCi0gICAgMTQ1OCwgMjg3NTIsIDI4NzU1LCAyODc1OSwgMjA1MjQsIDIwNTMwLCAyODc2NSwgMjg3NjksIDI4NzgwLCAyODc5MSwgCi0gICAgMjg4MDIsIDI4ODE0LCAyODgyMSwgMjg4MjgsIDI4ODMzLCAyODgzNywgNDM4NywgNzMzLCAxOTQzOCwgMjg4NDUsIDI4ODQ5LCAKLSAgICAyODg1NCwgMjg4NjAsIDI4ODY1LCAyODg3MSwgMjg4NzYsIDI4ODgyLCAyODg4NywgODc2NCwgMjc4NSwgMzM2NSwgMjg4OTEsIAotICAgIDI4ODk0LCAyODkwMCwgMjg5MDYsIDI4OTEyLCAyODkxOSwgMjg5MjUsIDI4OTMxLCAyODkzNywgMjg5NDMsIDI4OTQ5LCAKLSAgICAyODk1NSwgMjg5NjEsIDI4OTY3LCAyODk3MywgMjg5NzksIDI4OTg1LCAyODk5MSwgMjg5OTgsIDI5MDA0LCAyOTAxMCwgCi0gICAgMjkwMTYsIDI5MDIyLCAyOTAyOCwgMjkwMzMsIDI5MDM2LCAyOTA0MywgMjkwNTEsIDI5MDU2LCAyOTA2MSwgMjkwNjcsIAotICAgIDI5MDcyLCAyOTA3NywgMjkwODEsIDI5MDg2LCAyOTA5MiwgMjkwOTcsIDI5MTAzLCAyOTEwOCwgMjkxMTQsIDI5MTE5LCAKLSAgICAyOTEyNSwgMjkxMzEsIDI5MTM1LCAyOTE0MCwgMjkxNDUsIDI5MTUwLCAyOTE1NSwgMjkxNTksIDI5MTY0LCAyOTE2OSwgCi0gICAgMjkxNzQsIDI5MTgwLCAyOTE4NiwgMjkxOTIsIDI5MTk4LCAyOTIwMywgMjkyMDcsIDI5MjEwLCAyOTIxNiwgMjkyMjIsIAotICAgIDI5MjMxLCAyOTIzOSwgMjkyNDYsIDI5MjUxLCAyOTI1NSwgMjkyNTksIDI5MjY0LCAxMzM5NSwgMjkyNjksIDI5Mjc3LCAKLSAgICAyOTI4MywgMzYxMSwgMjkyODgsIDI5MjkxLCAyOTI5NSwgNjQzNiwgMjkzMDEsIDI5MzA3LCAyOTMxNCwgNjQ0NSwgMjkzMTgsIAotICAgIDI5MzI0LCAyOTMzMSwgMjkzMzcsIDI5MzQ2LCAyOTM1NCwgMjkzNjYsIDI5MzcwLCAyOTM3NywgMjkzODMsIDI5Mzg3LCAKLSAgICAyOTM5MCwgMjkzOTksIDI5NDA3LCAyOTQxMiwgMjk0MTYsIDI5NDI2LCAyOTQzNiwgMjk0NDYsIDI5NDUyLCAyOTQ1NywgCi0gICAgMjk0NjcsIDI5NDcyLCAyOTQ4NSwgMjk0OTksIDI5NTEwLCAyOTUyMiwgMjk1MzQsIDI5NTQ4LCAyOTU2MSwgMjk1NzMsIAotICAgIDI5NTg1LCAxMjg1OSwgMjk1OTksIDI5NjA0LCAyOTYwOSwgMjk2MTMsIDI5NjE3LCAyOTYyMSwgMTc0MywgMjUxMjksIAotICAgIDI5NjI1LCAyOTYzMCwgMjk2MzUsIDI5NjM5LCAyOTY0MiwgMjk2NDcsIDI5NjUyLCAyOTY1OCwgMjk2NjQsIDg0NjEsIAotICAgIDI5NjY5LCAyOTY3NiwgMTM5MzUsIDI5NjgyLCAyOTY4NywgMjk2OTIsIDI5Njk2LCAyOTcwMSwgMjk3MDYsIDI4ODU1LCAKLSAgICAyOTcxMSwgMjk3MTYsIDI5NzIxLCAyOTcyNywgMjg4NjEsIDI5NzMyLCAyOTczNSwgMjk3NDIsIDI5NzUwLCAyOTc1NiwgCi0gICAgMjk3NjIsIDI5NzY4LCAyOTc3OSwgMjk3ODQsIDI5NzkxLCAyOTc5OCwgMjk4MDUsIDI5ODEzLCAyOTgyMiwgMjk4MzEsIAotICAgIDI5ODM3LCAyOTg0MywgMjk4NTEsIDI4ODY2LCAyOTg1NiwgMjk4NjIsIDI5ODY4LCAyODg3MiwgMjk4NzMsIDI5ODgxLCAKLSAgICAyOTg4OSwgMjk4OTUsIDI5OTAyLCAyOTkwOCwgMjk5MTUsIDI5OTIyLCAyOTkyOCwgMjk5MzYsIDI5OTQ2LCAyOTk1MywgCi0gICAgMjk5NTgsIDI5OTY0LCAyOTk2OSwgMjk5NzQsIDI5OTgxLCAyOTk5MCwgMjk5OTgsIDMwMDAzLCAzMDAwOSwgMzAwMTYsIAotICAgIDMwMDI0LCAzMDAzMCwgMzAwMzUsIDMwMDQxLCAzMDA1MCwgMjU4OTAsIDMwMDU3LCAzMDA2MSwgMzAwNjYsIDMwMDc1LCAKLSAgICAzMDA4MCwgMzAwODUsIDEwNzE0LCAzMDA5MywgMzAwOTgsIDMwMTAzLCAzMDEwNywgMzAxMTIsIDMwMTE3LCAzMDEyNCwgCi0gICAgMzAxMjksIDMwMTM0LCAyODg3NywgMjg4ODMsIDMwMTQwLCAyNDczLCAyMzksIDMwMTQzLCAzMDE0NiwgMzAxNTAsIDMwMTU0LCAKLSAgICAzMDE2NCwgMzAxNzIsIDMwMTc2LCAzMDE4MywgMzAxOTAsIDMwMTk0LCAzMDE5NywgMzAyMDMsIDMwMjExLCAzMDIxOSwgCi0gICAgMzAyMjMsIDMwMjI3LCAzMDIzMCwgMzAyMzcsIDMwMjQxLCAzMDI0OCwgMzAyNTYsIDMwMjYzLCAzMDI2NywgMzAyNzUsIAotICAgIDY4NCwgMjk3LCAzMDI4NywgMzAyOTIsIDMwMjk3LCAzMDMwMywgMzAzMDgsIDMwMzEzLCAzNjMyLCAzMDMxOCwgMzAzMjEsIAotICAgIDMwMzI2LCAzMDMzMSwgMzAzMzYsIDMwMzQxLCAzMDM0NiwgMzAzNTMsIDIwNjA5LCAzMDM1OCwgMzAzNjMsIDMwMzY4LCAKLSAgICAzMDM3MywgMzAzNzgsIDMwMzg0LCAzMDM4OSwgMzAzOTUsIDI5MDM5LCAzMDQwMSwgMzA0MDYsIDMwNDEyLCAzMDQxOCwgCi0gICAgMzA0MjgsIDMwNDMzLCAzMDQzOCwgMzA0NDIsIDMwNDQ3LCAzMDQ1MiwgMzA0NTcsIDMwNDYyLCAzMDQ3NSwgMzA0ODAsIAotICAgIDIwNDA2LCAxNDkwNiwgMzYzOCwgMzA0ODQsIDMwNDg5LCAzMDQ5NCwgMzA1MDAsIDMwNTA1LCAzMDUxMCwgMzA1MTQsIAotICAgIDMwNTE5LCAzMDUyNCwgMzA1MzAsIDMwNTM1LCAzMDU0MCwgMzA1NDQsIDMwNTQ5LCAzMDU1NCwgMzA1NTksIDMwNTYzLCAKLSAgICAzMDU2OCwgMzA1NzMsIDMwNTc4LCAzMDU4NCwgMzA1OTAsIDMwNTk1LCAzMDU5OSwgMzA2MDQsIDMwNjA5LCAzMDYxNCwgCi0gICAgMzA2MTgsIDMwNjI2LCAzMDYzMCwgMzA2MzYsIDMwNjQwLCAzMDY0NywgMTQ2OTksIDMwNjUzLCAzMDY2MCwgMzA2NjgsIAotICAgIDMwNjc1LCAzMDY4MSwgMzA2OTMsIDMwNjk5LCAzMDcwMywgMjcyNywgMzA3MDcsIDMwNzExLCAzMDIzMiwgMzA3MjAsIAotICAgIDMwNzMxLCAzMDczNiwgMzA3NDEsIDMwNzQ2LCAzMDc1MCwgMzA3NTUsIDIwNTM1LCAzMDc1OSwgMzA3NjQsIDE5NDU5LCAKLSAgICAzMDc2OCwgMzA3NzMsIDMwNzc5LCAzMDc4NCwgMzA3ODgsIDMwNzkyLCAzMDc5NSwgMzA3OTksIDMwODA1LCAzMDgxNiwgCi0gICAgMzA4MjgsIDMwODMzLCAzMDgzNywgMzA4NDAsIDM0MywgMzA4NDQsIDMwODQ5LCAzMDg1NCwgMzA4NTksIDMwODY0LCAKLSAgICAzMDg2OSwgMzA4NzUsIDMwODgwLCAzMDg4NSwgMzA4OTEsIDMwODk2LCAzMDkwMiwgMzA5MDcsIDMwOTEzLCAzMDkxOCwgCi0gICAgMzA5MjMsIDMwOTI4LCAzMDkzMywgMzA5MzgsIDMwOTQzLCAzMDk0OCwgMzA5NTMsIDMwOTU5LCAzMDk2NCwgMzA5NjksIAotICAgIDMwOTc0LCAzMDk3OSwgMzA5ODQsIDMwOTg5LCAzMDk5NCwgMzEwMDAsIDMxMDA2LCAzMTAxMSwgMzEwMTYsIDMxMDIxLCAKLSAgICAzMTAyNiwgMzEwMzEsIDMxMDM2LCAzMTA0MSwgMzEwNDYsIDMxMDUxLCAzMTA1NiwgMzEwNjEsIDMxMDY2LCAzMTA3MSwgCi0gICAgMzEwNzYsIDMxMDgxLCAzMTA4NiwgMzEwOTEsIDMxMDk2LCAzMTEwMiwgMjYsIDMxMTA3LCAzMTExMSwgMzExMTUsIDMxMTIzLCAKLSAgICAzMTEyNywgMzExMzEsIDMxMTM0LCAzMTEzNywgMzExMzksIDMxMTQ0LCAzMTE0OCwgMzExNTMsIDMxMTU3LCAzMTE2MiwgCi0gICAgMzExNjYsIDMxMTcxLCAzMTE3NSwgMzExNzgsIDMxMTgwLCAzMTE4NSwgMzExODksIDMxMjAwLCAzMTIwMywgMzEyMDUsIAotICAgIDMxMjA5LCAzMTIyMSwgMzEyMzAsIDMxMjM0LCAzMTI0MCwgMzEyNDUsIDMxMjU0LCAzMTI2MCwgMzEyNjUsIDMxMjcwLCAKLSAgICAzMTI3NCwgMzEyNzksIDMxMjg2LCAzMTI5MSwgMzEyOTcsIDMxMzAyLCAzMTMwNiwgMzEzMTMsIDIzNzAxLCAyMzcxMSwgCi0gICAgMzEzMTcsIDMxMzIyLCAzMTMyNywgMzEzMzIsIDMxMzM5LCAzMTM0MywgMzEzNTAsIDY1NDQsIDMxMzU2LCAzMTM2NSwgCi0gICAgMzEzNzMsIDMxMzg4LCAzMTQwMiwgMzE0MTAsIDMxNDIxLCAzMTQzMCwgMzE0MzUsIDU2ODEsIDMxNDQ1LCAzMTQ1MCwgCi0gICAgMzE0NTUsIDMxNDU5LCAzMTQ2MiwgMzE0NjYsIDMxNDcxLCAzMTQ3NSwgMzE0ODIsIDMxNDg3LCAzMTQ5MiwgNzMyMCwgCi0gICAgMzE1MDIsIDMxNTA0LCAzMTUwNywgMzE1MTEsIDMxNTE3LCAzMTUyMSwgMzE1MjYsIDMxNTMxLCAzMTUzNywgMzE1NDIsIAotICAgIDMxNTQ4LCAzMTU1MywgMzE1NjMsIDMxNTcyLCAzMTU4MCwgMzE1ODUsIDMxNTkxLCAzMTU5NiwgMzE2MDMsIDMxNjA3LCAKLSAgICAzMTYxNSwgMzE2MjIsIDMxNjM1LCAzMTY0MywgMzE2NDcsIDMxNjU3LCAzMTY2MiwgMzE2NjYsIDMxNjc0LCAzMTY4MiwgCi0gICAgMzE2ODYsIDMxNjk1LCAzMTcwMSwgMzE3MDYsIDMxNzE0LCAzMTcyNCwgMzE3MzMsIDMxNzQyLCAzMTc1MSwgMzE3NjIsIAotICAgIDMxNzcwLCAzMTc4MSwgMzE3OTAsIDMxNzk3LCAzMTgwMywgMzE4MDgsIDMxODE5LCAzMTgyNCwgMzE4MjgsIDMxODMxLCAKLSAgICAzMTgzNSwgMzE4NDMsIDMxODQ5LCAzMTg1NywgMzE4NjQsIDMxODcwLCAzMTg3NSwgMzE4ODEsIDIzNzIsIDMxODg1LCAKLSAgICAzMTg4NywgMzE4OTIsIDMxODk3LCAzMTkwMCwgMzE5MDIsIDMxOTA2LCAzMTkwOSwgMzE5MTYsIDMxOTIwLCAzMTkyNCwgCi0gICAgMzE5MjcsIDMxOTMzLCAzMTk0MywgMzE5NDgsIDMxOTU0LCAzMTk1OCwgMzE5NjMsIDMxOTc2LCAyNDA3NCwgMzE5ODIsIAotICAgIDMxOTkxLCAxNTY1NCwgMzE5OTgsIDMyMDA3LCAyOTQzMiwgMzIwMTUsIDMyMDIwLCAzMjAyNCwgMzIwMzIsIDMyMDM5LCAKLSAgICAzMjA0NCwgMzIwNDgsIDMyMDUzLCAzMjA1NywgMzIwNjUsIDMyMDcxLCAzMjA3NywgMzIwODIsIDMyMDg2LCAzMjA4OSwgCi0gICAgMzIwOTQsIDMyMTA3LCAzMjEyMywgMjEwODAsIDMyMTQwLCAzMjE1MiwgMzIxNjksIDMyMTgxLCAzMjE5NSwgMjEwOTcsIAotICAgIDIxMTE2LCAzMjIwNywgMzIyMTksIDI2MzQsIDMyMjMzLCAzMjIzOCwgMzIyNDMsIDMyMjQ4LCAzMjI1MiwgMzIyNTksIAotICAgIDMyMjcxLCAzMjI3NywgMzIyODAsIDMyMjkxLCAzMjMwMiwgMjk4NDgsIDY3MCwgMzIzMDcsIDMyMzExLCAzMjMxNCwgCi0gICAgMzIzMTksIDMyMzI0LCAzMjMzMCwgMzIzMzUsIDMyMzQwLCAzMjM0NiwgMzIzNTIsIDMyMzU3LCAzMjM2MSwgMzIzNjYsIAotICAgIDMyMzcxLCAzMjM3NiwgMzIzODAsIDMyMzgzLCAzMjM4OSwgMzIzOTQsIDMyMzk5LCAzMjQwNCwgMzI0MDgsIDMyNDEzLCAKLSAgICAzMjQxOSwgMzI0MjcsIDI0Mjk5LCAzMjQzMiwgMzI0MzcsIDMyNDQ0LCAzMjQ1MCwgMzI0NTYsIDMyNDYxLCAzMjQ2OSwgCi0gICAgMjA2MTgsIDMyNDc2LCAzMjQ4MSwgMzI0ODYsIDMyNDkxLCAzMjQ5NSwgMzI0OTgsIDMyNTAzLCAzMjUwNywgMzI1MTEsIAotICAgIDMyNTE4LCAzMjUyNCwgMzI1MzAsIDMyNTM2LCAzMjU0MywgMzI1NDgsIDMyNTU0LCAzMTY3NywgMzI1NTgsIDMyNTYyLCAKLSAgICAzMjU2NywgMzI1ODAsIDMyNTg1LCAzMjU5MSwgMzI1OTksIDMyNjA2LCAzMjYxNCwgMzI2MjQsIDMyNjMwLCAzMjYzNiwgCi0gICAgMzI2NDIsIDMyNjQ2LCAzMjY1NSwgMzI2NjAsIDMyNjY1LCA4Nzg3LCAzMjY3MCwgMzI2NzcsIDMyNjgzLCAzMjY5MywgCi0gICAgMzI2OTgsIDMyNzA0LCAzMjcxMiwgMzU0MywgMzI3MTksIDMyNzI2LCAzNTQ5LCAzMjczMCwgMzI3MzUsIDMyNzQ2LCAKLSAgICAzMjc1MywgMzI3NTksIDMyNzY4LCAzMjc3MiwgMzkzMiwgMzI3NzUsIDMyNzgyLCAzMjc4OCwgMzI3OTQsIDMyODAyLCAKLSAgICAzMjgxMiwgMjY5NTgsIDMyODE5LCAzMjgyNywgMzI4MzMsIDMyODM4LCAzMjg0NCwgMzI4NDksIDMyODU1LCAzMjg1OSwgCi0gICAgMzI4NjYsIDMyODcyLCAzMjg4MSwgMjQwOTQsIDMyODg4LCAzMjg5MywgMzI4OTcsIDMyOTA1LCAzMjkxMywgNzk3NCwgCi0gICAgNDM3MywgMzI5MjAsIDMyOTI0LCAzMjkyOCwgMzI5MzMsIDMyOTM5LCAzMjk0NCwgMzI5NDksIDMyOTU2LCAzMDM0OSwgCi0gICAgMzI5NjIsIDMyOTY3LCAzMjk3MSwgMzI5NzYsIDMyOTgwLCAzMjk4OSwgMzI5OTMsIDMyOTk5LCAzMzAwNiwgMzMwMTIsIAotICAgIDMzMDE5LCAzMzAyNCwgMzMwMzMsIDMzMDM4LCAzMzA0MiwgMzMwNDcsIDMzMDU0LCAzMzA2MiwgMzMwNzAsIDMzMDc1LCAKLSAgICAxOTUwOCwgMzMwNzksIDMzMDgyLCAzMzA4NiwgMzMwOTAsIDMzMDk0LCAzMzA5NywgMzMwOTksIDMzMTA0LCAzMzExMiwgCi0gICAgMzMxMTYsIDMzMTIzLCAzMzEyNywgMzMxMzUsIDMzMTQyLCAzMzE1MiwgMzMxNTYsIDMzMTYwLCAzMzE2OCwgMzMxNzYsIAotICAgIDMzMTgyLCAzMzE4NywgMzMxOTYsIDExNjY5LCAzMzIwMiwgMzMyMTEsIDMzMjE2LCAzMzIyMywgMzMyMzEsIDMzMjM5LCAKLSAgICAzMzI0NywgMzMyNTQsIDMzMjYxLCAzMzI2OCwgMzMyNzUsIDMzMjgyLCAzMzI4NywgMzMyOTMsIDMzMzEwLCAzMzMxOCwgCi0gICAgMzMzMjgsIDMzMzM2LCAzMzM0MywgMzg1LCAzMzM0NywgMzMzNTMsIDMzMzU3LCAzMzM2MiwgMzE0MjYsIDMzMzY4LCAKLSAgICAzMzM3MSwgMzMzNzUsIDMzMzgzLCAzNTU0LCAzMzM5MSwgMzMzOTcsIDMzNDAzLCAzMzQxMiwgMzM0MjIsIDMzNDI5LCAKLSAgICAzMzQzNSwgMzU2MCwgMzU2NiwgMzM0NDQsIDMzNDUxLCAzMzQ1OSwgMzM0NjQsIDMzNDY4LCAzMzQ3NSwgMzM0ODMsIAotICAgIDMzNDg5LCAzMzQ5OCwgMzM1MDgsIDMzNTE0LCAzMzUyMiwgMzM1MzEsIDMzNTM4LCAzMzU0NiwgMjAxNzUsIDMzNTUzLCAKLSAgICAzMzU2MCwgMzM1NjYsIDMzNTc2LCAzMzU4NSwgMzM1OTYsIDMzNjAwLCAzMzYxMCwgMzM2MTYsIDMzNjIzLCAzMzYzMSwgCi0gICAgMzM2NDAsIDMzNjQ5LCAzMzY1OSwgMzM2NzAsIDMzNjc3LCAzMzY4MiwgMzM2ODksIDI5NjcsIDMzNjk3LCAzMzcwMywgCi0gICAgMzM3MDgsIDMzNzE0LCAzMzcyMCwgMzM3MjUsIDMzNzM4LCAzMzc1MSwgMzM3NjQsIDMzNzcxLCAzMzc3NywgMzM3ODUsIAotICAgIDMzNzkwLCAzMzc5NCwgMTQzMiwgMzM3OTgsIDMzODAzLCAzMzgwOCwgMzM4MTMsIDMzODE4LCAzMzgyNCwgMzM4MjksIAotICAgIDMzODM0LCAzMzgzOSwgMzM4NDQsIDMzODQ5LCAzMzg1NCwgMzM4NTksIDMzODY1LCAzMzg3MSwgMzM4NzYsIDMzODgxLCAKLSAgICAzMzg4NywgMzM4OTIsIDMzODk3LCAzMzkwMiwgMzM5MDgsIDMzOTEzLCAzMzkxOCwgMzM5MjMsIDMzOTI4LCAzMzkzNCwgCi0gICAgMzM5MzksIDMzOTQ0LCAzMzk1MCwgMzM5NTUsIDMzOTYwLCAzMzk2NSwgMzM5NzAsIDMzOTc1LCAzMzk4MSwgMzM5ODYsIAotICAgIDMzOTkyLCAzMzk5NywgMzQwMDMsIDM0MDA4LCAzNDAxMywgMzQwMTgsIDM0MDI0LCAzNDAzMCwgMzQwMzYsIDM0MDQyLCAKLSAgICAzNDA0OCwgMzQwNTQsIDM0MDYwLCAzNDA2NiwgMzQwNzEsIDM0MDc2LCAzNDA4MiwgMzQwODcsIDM0MDkyLCAzNDA5NywgCi0gICAgMzQxMDIsIDM0MTA3LCAzNDExMiwgMzQxMTcsIDM0MTIzLCAzNDEyOCwgMzQxMzMsIDM0MTM5LCAzNDE0NSwgMTAxLCAKLSAgICAzNDE1MCwgMzQxNTIsIDM0MTU2LCAzNDE2MCwgMzQxNjQsIDM0MTY5LCAzNDE3MywgNzg5NSwgMzQxNzcsIDM0MTgzLCAKLSAgICA0NzM4LCAzNDE4OSwgMzQxOTIsIDM0MTk3LCAzNDIwMSwgMzQyMDYsIDM0MjEwLCAzNDIxNCwgMzQyMTksIDg1OTQsIAotICAgIDM0MjIzLCAzNDIyNywgMzQyMzEsIDEzNjIzLCAzNDIzNiwgMzQyNDAsIDM0MjQ1LCAzNDI1MCwgMzQyNTUsIDM0MjU5LCAKLSAgICAzNDI2NiwgMjQwOTgsIDM0MjcyLCAzNDI3NSwgMzQyNzksIDM0Mjg0LCAzNDI5MCwgMzQyOTQsIDM0MzAyLCAzNDMwOCwgCi0gICAgMzQzMTMsIDM0MzE3LCAzNDMyMywgMzQzMjcsIDM0MzMxLCAzNDA0LCAzNDA5LCAyNzE0NCwgMzQzMzQsIDM0MzQyLCAKLSAgICAzNDM0OSwgMzQzNTMsIDM0MzYwLCAzNDM2NSwgMzMzLCAzNDM3MCwgMzQzNzQsIDM0MzgwLCAzNDM5MiwgMzQzOTgsIAotICAgIDM0NDA0LCAzNDQwOCwgMzQ0MTQsIDM0NDIzLCAzNDQyNywgMzQ0MzEsIDM0NDM2LCAzNDQ0MSwgMzQ0NDYsIDM0NDUwLCAKLSAgICAzNDQ1NCwgMzQ0NjEsIDM0NDY3LCAzNDQ3MiwgMzQ0ODcsIDM0NTAyLCAzNDUxNywgMzQ1MzMsIDM0NTUxLCA4NTQ0LCAKLSAgICAzNDU2NSwgMzQ1NzIsIDM0NTc2LCAzNDU3OSwgMzQ1ODgsIDM0NTkzLCAzNDU5NywgMzQ2MDUsIDMxNjI4LCAzNDYxMywgCi0gICAgMzQ2MTcsIDM0NjI3LCAyNzExNCwgMzQ2MzgsIDM0NjQyLCAzNDY1MSwgMzQ2NTksIDgxNTIsIDEzMTYzLCAzNDY2MywgCi0gICAgMzQ2NjYsIDM0NjY5LCA2NTU3LCAzODAyLCAzNDY3NCwgMzQ2ODIsIDM0Njg2LCAzNDY4OSwgMzQ2OTMsIDM0Njk4LCAKLSAgICAzNDcwMywgMzQ3MDksIDM0NzE1LCAzNDcyMCwgMzQ3MjQsIDIzOTQ2LCAzNDcyOCwgMzQ3MzIsIDM0NzM4LCAzNDc0MiwgCi0gICAgNzQ0NiwgMzQ3NTEsIDM0NzU4LCAzNDc2MiwgMTAyMTAsIDM0NzY5LCAzNDc3NSwgMzQ3ODAsIDM0Nzg3LCAzNDc5NCwgCi0gICAgMzQ4MDEsIDI2NDgwLCA2NDgwLCAzNDgwOCwgMzQ4MTUsIDM0ODIyLCAzNDgyOCwgMzQ4MzMsIDM0ODQwLCAzNDg1MSwgCi0gICAgMzQ4NTcsIDM0ODYyLCAzNDg2NywgMzQ4NzQsIDM0ODc4LCAzNDg4MiwgMzQ4OTIsIDM0OTAzLCAzNDkwOSwgMzQ5MTQsIAotICAgIDM0OTE5LCAzNDkyNCwgMzQ5MjksIDM0OTM0LCAzNDkzOCwgMzQ5NDIsIDM0OTQ4LCAzNDk1NiwgMjI3MywgODI4LCA4NjE2LCAKLSAgICA4NjIxLCA4NjI3LCAzNDk2NSwgODYzMiwgODYzNywgODY0MywgMzQ5NzAsIDM0OTgwLCAzNDk4NCwgODY0OCwgMzQ5ODksIAotICAgIDM0OTkyLCAzNDk5NywgMzUwMDEsIDM1MDA2LCAzNTAxMSwgMzUwMTgsIDM1MDI1LCAzNTAzMywgODU1NywgMzUwNDAsIAotICAgIDM1MDQzLCAzNTA0OSwgMzUwNTksIDQ0MDcsIDM1MDY4LCAzNTA3MiwgMzUwODAsIDM1MDg0LCAzNTA5NCwgMzUxMDAsIAotICAgIDM1MTExLCAzNTExNywgMzUxMjMsIDM1MTI4LCAzNTEzNCwgMzUxNDAsIDM1MTQ2LCAzNTE1MSwgMzUxNTQsIDM1MTYxLCAKLSAgICAzNTE2NywgMzUxNzIsIDM1MTc5LCAzNTE4NiwgMzUxOTAsIDM1MjAwLCAzNTIxMywgMzUyMjIsIDM1MjMxLCAzNTI0MiwgCi0gICAgMzUyNTUsIDM1MjY2LCAzNTI3NSwgMzUyODYsIDM1MjkxLCAzNTMwMCwgMzUzMDUsIDg2NTMsIDM1MzExLCAzNTMxOCwgCi0gICAgMzUzMjYsIDM1MzMxLCAzNTMzNSwgMzUzNDIsIDM1MzQ5LCAzNzU3LCAyMSwgMzUzNTMsIDM1MzU4LCAxNDk1OCwgMzUzNjIsIAotICAgIDM1MzY1LCAzNTM2OCwgMjYwMDEsIDM1MzcyLCAyNjQ4OSwgMzUzODAsIDM1Mzg0LCAzNTM4OCwgMzUzOTEsIDM1Mzk3LCAKLSAgICAzNTQwMywgMzU0MTEsIDM1NDE3LCAzNTQyNCwgMjU5OTMsIDM1NDI4LCAyNjE3OCwgMzU0MzIsIDM1NDQxLCAzNTQ0NywgCi0gICAgMzU0NTMsIDM1NDU4LCAzNTQ2MiwgMzU0NjgsIDM1NDcyLCAzNTQ3NSwgMzU0ODMsIDM1NDkxLCAyNDE1NiwgMzU0OTcsIAotICAgIDM1NTA0LCAzNTUxMCwgMzU1MTUsIDM1NTIwLCAzNTUyNCwgMzU1MzAsIDM1NTM1LCAzNTU0MSwgMzk3MywgNzU1LCAzNTU0OCwgCi0gICAgMzU1NTIsIDM1NTU1LCAxMzUxMywgMzU1NjcsIDMzNTI3LCAzNTU3OCwgMzU1ODEsIDM1NTg4LCAzNTU5NCwgMzU1OTgsIAotICAgIDM1NjA0LCAzNTYwOSwgMzU2MTUsIDM1NjIwLCAzNTYyNSwgMzU2MjksIDM1NjMzLCAzNTYzOCwgMzU2NDMsIDM1NjUzLCAKLSAgICAzNTY1OSwgMzU2NzIsIDM1Njc4LCAzNTY4NSwgMzU2OTAsIDM1Njk2LCAzNTcwMSwgMTQ4NDQsIDE0MzUsIDEwMDIsIAotICAgIDI4OTc0LCAyODk4MCwgMzU3MDYsIDI4OTg2LCAyODk5OSwgMjkwMDUsIDI5MDExLCAzNTcxMiwgMjkwMTcsIDI5MDIzLCAKLSAgICAzNTcxOCwgMzU3MjQsIDE0LCAzNTczMiwgMzU3MzksIDM1NzQzLCAzNTc0NywgMzU3NTUsIDI5NzM3LCAzNTc1OSwgMzU3NjMsIAotICAgIDM1NzcwLCAzNTc3NSwgMzU3NzksIDM1Nzg0LCAzNTc5MCwgMzU3OTUsIDM1ODAxLCAzNTgwNiwgMzU4MTAsIDM1ODE0LCAKLSAgICAzNTgxOCwgMzU4MjMsIDM1ODI3LCAzNTgzMiwgMzU4MzYsIDM1ODQzLCAzNTg0OCwgMzU4NTIsIDM1ODU3LCAzNTg2MSwgCi0gICAgMzU4NjYsIDM1ODcwLCAzNTg3NSwgMzU4ODEsIDEzNzMzLCAxMzczOCwgMzU4ODYsIDM1ODkwLCAzNTg5MywgMzU4OTcsIAotICAgIDM1OTAyLCAzNTkwNiwgMzU5MTIsIDM1OTE5LCAzNTkyNCwgMzU5MzQsIDM1OTM5LCAzNTk0NywgMzU5NTEsIDM1OTU0LCAKLSAgICAyOTc1MiwgMzU5NTgsIDQwMjYsIDM1OTYzLCAzNTk2OCwgMzU5NzIsIDM1OTc3LCAzNTk4MSwgMzU5ODYsIDExNjg3LCAKLSAgICAzNTk5NywgMzYwMDEsIDM2MDA0LCAzNjAwOSwgMzYwMTMsIDM2MDE3LCAzNjAyMCwgMzYwMjQsIDY1NzYsIDExNzAzLCAKLSAgICAzNjAyNywgMzYwMzAsIDM2MDM1LCAzNjAzOSwgMzYwNDgsIDM2MDY0LCAzNjA4MCwgMzYwOTAsIDI1OTAwLCAzNjA5NywgCi0gICAgMzYxMDEsIDM2MTA2LCAzNjExMSwgMzYxMTUsIDM2MTE5LCAzMzY0NCwgMzYxMjUsIDM2MTMwLCAzNjEzNCwgMzYxNDEsIAotICAgIDM2MTQ2LCAzNjE1MCwgMzYxNTQsIDI0OTU4LCAzNjE2MCwgMTk2MDMsIDM2MTY1LCAzNjE3MiwgMzYxODAsIDM2MTg2LCAKLSAgICAzNjE5MywgMzYyMDEsIDM2MjA3LCAzNjIxMSwgMzYyMTcsIDM2MjI1LCAzNjIyOSwgMzYyMzgsIDc4NzYsIDM2MjQ2LCAKLSAgICAzNjI1MCwgMzYyNTgsIDM2MjY1LCAzNjI3MCwgMzYyNzUsIDM2Mjc5LCAzNjI4MiwgMzYyODYsIDM2Mjg5LCAzNjI5MywgCi0gICAgMzYzMDAsIDM2MzA1LCAzNjMxMSwgMjQzNzcsIDI5MDM0LCAzNjMxNSwgMzYzMjIsIDM2MzI4LCAzNjMzNCwgMzYzMzksIAotICAgIDM2MzQyLCAzNjM0NCwgMzYzNTEsIDM2MzU4LCAzNjM2NCwgMzYzNjgsIDM2MzcxLCAzNjM3NSwgMzYzNzksIDM2MzgzLCAKLSAgICAzNjM4OCwgMzYzOTIsIDM2Mzk2LCAzNjM5OSwgMzY0MDMsIDM2NDE3LCAyMTE0NiwgMzY0MzYsIDM2NDQ5LCAzNjQ2MiwgCi0gICAgMzY0NzUsIDIxMTY0LCAzNjQ5MCwgODg0NiwgMzY1MDUsIDM2NTExLCAzNjUxNSwgMzY1MTksIDM2NTI2LCAzNjUzMSwgCi0gICAgMzY1MzUsIDM2NTQyLCAzNjU0OCwgMzY1NTMsIDM2NTU5LCAzNjU2OSwgMzY1ODEsIDM2NTkyLCAzNjU5NywgMzY2MDQsIAotICAgIDM2NjA4LCAzNjYxMiwgMzY2MTUsIDE0MTI5LCAzNjA1LCAzNjYyMywgMTM3NjAsIDM2NjM2LCAzNjY0MywgMzY2NDcsIAotICAgIDM2NjUxLCAzNjY1NiwgMzY2NjEsIDM2NjY3LCAzNjY3MSwgMzY2NzUsIDM2Njc4LCA2MTg4LCAxMzc3MSwgMzY2ODMsIAotICAgIDM2Njg3LCAzNjY5MywgMzY3MDIsIDM2NzA3LCAzMzUwNCwgMzY3MTMsIDM2NzE4LCAzNjcyMiwgMzY3MjcsIDM2NzM0LCAKLSAgICAzNjczOCwgMzY3NDEsIDEyODI0LCAzNjc0NiwgMzY3NTMsIDEwMDksIDM2NzU3LCAzNjc2MiwgMzY3NjcsIDM2NzczLCAKLSAgICAzNjc3OCwgMzY3ODMsIDM2Nzg3LCAzNjc5NywgMzY4MDIsIDM2ODA4LCAzNjgxMywgMzY4MTksIDM2ODI0LCAzNjgzMCwgCi0gICAgMzY4NDAsIDM2ODQ1LCAzNjg1MCwgMzY4NTQsIDU2ODMsIDU2OTUsIDM2ODU5LCAzNjg2MiwgMzY4NjksIDM2ODc1LCAKLSAgICAzMTc5MywgMzE4MDAsIDM2ODg0LCAzNjg4OCwgMjk4MDAsIDM2ODk2LCAzNjkwNywgMzY5MTUsIDMzNjkyLCAzNjkyMiwgCi0gICAgMzY5MjcsIDM2OTMyLCAzNjk0MywgMzY5NTAsIDM2OTYxLCAyOTgyNCwgMTk2MDksIDM2OTY5LCA3MjIsIDM2OTc0LCAKLSAgICAzNjk4MCwgMjU5ODQsIDM2OTg2LCAzNjk5MSwgMzcwMDEsIDM3MDEwLCAzNzAxNywgMzcwMjMsIDM3MDI3LCAzNzAzMCwgCi0gICAgMzcwMzcsIDM3MDQzLCAzNzA1MCwgMzcwNTYsIDM3MDY2LCAzNzA3NCwgMzcwODAsIDM3MDg2LCAzNzA5MSwgMzcwOTUsIAotICAgIDM3MTAyLCAzNzEwOCwgMzcxMTUsIDM2Mzg0LCA1MzAsIDEyMTEyLCAzNzEyMSwgMzcxMjYsIDM3MTI5LCAzNzEzNSwgCi0gICAgMzcxNDMsIDEzNjQsIDM3MTQ4LCAzNzE1MiwgMzcxNTcsIDM3MTY0LCAzNzE3MCwgMzcxNzQsIDM3MTc5LCAzNzE4OCwgCi0gICAgMzcxOTUsIDM3MjA1LCAzNzIxMSwgMjYwMTksIDM3MjI4LCAzNzIzNywgMzcyNDUsIDM3MjUxLCAzNzI1NiwgMzcyNjMsIAotICAgIDM3MjY5LCAzNzI3NywgMzcyODYsIDM3Mjk0LCAzNzI5OCwgMzczMDMsIDM3MzExLCAyOTgzMywgMzczMTcsIDM3MzM2LCAKLSAgICAxNDA2MiwgMzczNTAsIDM3MzY2LCAzNzM4MCwgMzczODYsIDM3MzkxLCAzNzM5NiwgMzc0MDEsIDM3NDA3LCAyOTgzOSwgCi0gICAgMzc0MTIsIDM3NDE5LCAzNzQyNCwgMzc0MjgsIDM0MSwgMjg3OCwgMzc0MzUsIDM3NDQwLCAzNzQ0NSwgMjUyNzUsIDM3MjY2LCAKLSAgICAzNzQ0OSwgMzc0NTQsIDM3NDYyLCAzNzQ2NiwgMzc0NjksIDM3NDc1LCAzNzQ3OSwgMjYwNzQsIDM3NDgyLCAzNzQ4NywgCi0gICAgMzc0OTEsIDM3NDk0LCAzNzQ5OSwgMzc1MDMsIDM3NTA4LCAzNzUxMywgMzc1MTcsIDM3NTIyLCAzNzUyNiwgMzc1MzAsIAotICAgIDE5MzQ2LCAxOTM1NywgMzc1MzQsIDM3NTM5LCAzNzU0NSwgMjQ5MTUsIDM3NTUwLCAzNzU1NCwgMTk0MjUsIDE0MjgwLCAKLSAgICAzNzU1NywgMzc1NjIsIDM3NTY3LCAzNzU3MiwgMzc1NzcsIDM3NTgyLCAzNzU4NywgMzc1OTIsIDQ0MCwgNDMsIDI5MDUyLCAKLSAgICAyOTA1NywgMjkwNjIsIDI5MDY4LCAyOTA3MywgMjkwNzgsIDM3NTk3LCAyOTA4MiwgMzc2MDEsIDM3NjA1LCAyOTA4NywgCi0gICAgMjkwOTMsIDM3NjA5LCAyOTEwNCwgMjkxMDksIDM3NjE3LCAzNzYyMiwgMjkxMTUsIDM3NjI3LCAzNzYzMiwgMzc2MzcsIAotICAgIDM3NjQyLCAzNzY0OCwgMzc2NTQsIDM3NjYwLCAyOTEzMiwgMzc2NzMsIDM3Njc5LCAyOTEzNiwgMzc2ODMsIDI5MTQxLCAKLSAgICAzNzY4OCwgMjkxNDYsIDI5MTUxLCAzNzY5MSwgMzc2OTYsIDM3NzAwLCAyODc5NSwgMzc3MDYsIDExOTExLCAzNzcxMywgCi0gICAgMzc3MTgsIDI5MTU2LCAzNzcyMiwgMzc3MjcsIDM3NzMyLCAzNzczNywgMzc3NDEsIDM3NzQ2LCAzNzc1MSwgMzc3NTcsIAotICAgIDM3NzYyLCAzNzc2NywgMzc3NzMsIDM3Nzc5LCAzNzc4NCwgMzc3ODgsIDM3NzkzLCAzNzc5OCwgMzc4MDMsIDM3ODA3LCAKLSAgICAzNzgxMiwgMzc4MTcsIDM3ODIyLCAzNzgyOCwgMzc4MzQsIDM3ODQwLCAzNzg0NSwgMzc4NDksIDM3ODU0LCAzNzg1OCwgCi0gICAgMjkxNjAsIDI5MTY1LCAyOTE3MCwgMzc4NjIsIDM3ODY2LCAyOTE3NSwgMjkxODEsIDI5MTg3LCAyOTE5OSwgMzc4NzgsIAotICAgIDIzOTgzLCAzNzg4MiwgMzc4ODYsIDM3ODkxLCAzNzg5NiwgMzc5MDEsIDM3OTA1LCAzNzkwOSwgMzc5MTksIDM3OTI0LCAKLSAgICAzNzkyOSwgMzc5MzMsIDM3OTM3LCAzNzk0MCwgMzc5NDgsIDI5MjQ3LCAzNzk1MywgMTQ0MiwgMzc5NTksIDM3OTY3LCAKLSAgICAzNzk3NiwgMzc5ODAsIDM3OTg4LCAzNzk5NCwgMzgwMDIsIDM4MDE4LCAzODAyMywgMzgwMzgsIDI5Mjg0LCAxNzEyLCAKLSAgICAxMDM3NSwgMzgwNDIsIDI5MjQsIDM4MDU0LCAzODA1NSwgMzgwNjMsIDM4MDcwLCAzODA3NSwgMzgwODIsIDM4MDg3LCAKLSAgICA3NzQ2LCAxMDkwLCA4Njc1LCAzODA5NCwgMzgwOTksIDM4MTAyLCAzODEwNSwgMzgxMTQsIDEyNzUsIDM4MTE5LCAzNjUzMiwgCi0gICAgMzgxMjYsIDM4MTMxLCAyMDU4MywgMjUxMSwgMzgxMzUsIDkwOTQsIDM4MTQ1LCAzODE1MSwgMjI5MSwgMjMwMSwgMzgxNjAsIAotICAgIDM4MTY5LCAzODE3OSwgMzgxOTAsIDMyMzUsIDMxOTQ0LCA4NzI3LCAzNzM1LCAxNDg4MiwgMTI4MCwgMzgxOTUsIDM4MjAzLCAKLSAgICAzODIxMCwgMzgyMTUsIDM4MjE5LCAzODIyMywgMjE5MzAsIDg3NTQsIDM4MjMxLCAzODI0MCwgMzgyNDksIDM4MjU3LCAKLSAgICAzODI2NCwgMzgyNjksIDM4MjgyLCAzODI5NSwgMzgzMDcsIDM4MzE5LCAzODMzMSwgMzgzNDQsIDM4MzU1LCAzODM2NiwgCi0gICAgMzgzNzYsIDM4Mzg0LCAzODM5MiwgMzg0MDQsIDM4NDE2LCAzODQyNywgMzg0MzYsIDM4NDQ0LCAzODQ1MSwgMzg0NjMsIAotICAgIDM4NDcwLCAzODQ3OSwgMzg0ODYsIDM4NDk5LCAzODUwNCwgMzg1MTQsIDM4NTE5LCAzODUyNSwgMzg1MzAsIDM0NzU5LCAKLSAgICAzODUzNCwgMzg1NDEsIDM4NTQ1LCAzODU1MiwgMzg1NjAsIDI0NzIsIDM4NTY3LCAzODU3OCwgMzg1ODgsIDM4NTk3LCAKLSAgICAzODYwNSwgMzg2MTUsIDM4NjIzLCAzODYzMywgMzg2NDIsIDM4NjQ3LCAzODY1MywgMzg2NTksIDM4NjcwLCAzODY4MCwgCi0gICAgMzg2ODksIDM4Njk4LCAzODcwOCwgMzg3MTYsIDM4NzI1LCAzODczMCwgMzg3MzUsIDM4NzQwLCAxNjY4LCAzNywgMzg3NDgsIAotICAgIDM4NzU2LCAzODc2NywgMzg3NzgsIDE0NTYzLCAzODc4OCwgMzg3OTUsIDM4ODAxLCAzODgwNiwgMzg4MTAsIDM4ODIxLCAKLSAgICAzODgzMSwgMzg4NDAsIDM4ODUxLCAxNDkzMSwgMTQ5MzYsIDM4ODU2LCAzODg2NSwgMzg4NzAsIDM4ODgwLCAzODg4NSwgCi0gICAgMzg4OTMsIDM4OTAxLCAzODkwOCwgMzg5MTQsIDU1MzYsIDEwMzgsIDM4OTE4LCAzODkyNCwgMzg5MjksIDM4OTMyLCAyMDc1LCAKLSAgICAzNjY0OCwgMzg5NDAsIDM4OTQ0LCAzODk0NywgMTQ3NSwgMzg5NTMsIDEyMjYxLCAxMjg1LCAzODk1OCwgMzg5NzEsIAotICAgIDM4OTg1LCAyNTk3LCAzOTAwMywgMzkwMTUsIDM5MDI3LCAyNjExLCAyNjI4LCAzOTA0MSwgMzkwNTQsIDI2NDMsIDM5MDY4LCAKLSAgICAzOTA4MCwgMjY1OCwgMzkwOTQsIDEyOTEsIDEyOTcsIDEzMDMsIDkwMTIsIDM5MDk5LCAzOTEwNCwgMzkxMDksIDM5MTEzLCAKLSAgICAzOTEyOCwgMzkxNDMsIDM5MTU4LCAzOTE3MywgMzkxODgsIDM5MjAzLCAzOTIxOCwgMzkyMzMsIDM5MjQ4LCAzOTI2MywgCi0gICAgMzkyNzgsIDM5MjkzLCAzOTMwOCwgMzkzMjMsIDM5MzM4LCAzOTM1MywgMzkzNjgsIDM5MzgzLCAzOTM5OCwgMzk0MTMsIAotICAgIDM5NDI4LCAzOTQ0MywgMzk0NTgsIDM5NDczLCAzOTQ4OCwgMzk1MDMsIDM5NTE4LCAzOTUzMywgMzk1NDgsIDM5NTYzLCAKLSAgICAzOTU3OCwgMzk1OTMsIDM5NjA4LCAzOTYyMywgMzk2MzgsIDM5NjUzLCAzOTY2OCwgMzk2ODMsIDM5Njk4LCAzOTcxMywgCi0gICAgMzk3MjgsIDM5NzQzLCAzOTc1OCwgMzk3NzMsIDM5Nzg4LCAzOTgwMywgMzk4MTgsIDM5ODMzLCAzOTg0OCwgMzk4NjMsIAotICAgIDM5ODc4LCAzOTg5MywgMzk5MDgsIDM5OTIzLCAzOTkzOCwgMzk5NTMsIDM5OTY4LCAzOTk4MywgMzk5OTgsIDQwMDEzLCAKLSAgICA0MDAyOCwgNDAwNDMsIDQwMDU4LCA0MDA3MywgNDAwODgsIDQwMTAzLCA0MDExOCwgNDAxMzMsIDQwMTQ4LCA0MDE2MywgCi0gICAgNDAxNzgsIDQwMTkzLCA0MDIwOCwgNDAyMjMsIDQwMjM4LCA0MDI1MywgNDAyNjgsIDQwMjgzLCA0MDI5OCwgNDAzMTMsIAotICAgIDQwMzI4LCA0MDM0MywgNDAzNTgsIDQwMzczLCA0MDM4OCwgNDA0MDMsIDQwNDE4LCA0MDQzMywgNDA0NDgsIDQwNDYzLCAKLSAgICA0MDQ3OCwgNDA0OTMsIDQwNTA4LCA0MDUyMywgNDA1MzgsIDQwNTUzLCA0MDU2OCwgNDA1ODMsIDQwNTk4LCA0MDYxMywgCi0gICAgNDA2MjgsIDQwNjQzLCA0MDY1OCwgNDA2NzMsIDQwNjg4LCA0MDcwMywgNDA3MTgsIDQwNzMzLCA0MDc0OCwgNDA3NjMsIAotICAgIDQwNzc4LCA0MDc5MywgNDA4MDgsIDQwODIzLCA0MDgzOCwgNDA4NTMsIDQwODY4LCA0MDg4MywgNDA4OTgsIDQwOTEzLCAKLSAgICA0MDkyOCwgNDA5NDMsIDQwOTU4LCA0MDk3MywgNDA5ODgsIDQxMDAzLCA0MTAxOCwgNDEwMzMsIDQxMDQ4LCA0MTA2MywgCi0gICAgNDEwNzgsIDQxMDkzLCA0MTEwOCwgNDExMjMsIDQxMTM4LCA0MTE1MywgNDExNjgsIDQxMTgzLCA0MTE5OCwgNDEyMTMsIAotICAgIDQxMjI4LCA0MTI0MywgNDEyNTgsIDQxMjczLCA0MTI4OCwgNDEzMDMsIDQxMzE4LCA0MTMzMywgNDEzNDgsIDQxMzYzLCAKLSAgICA0MTM3OCwgNDEzOTMsIDQxNDA4LCA0MTQyMywgNDE0MzgsIDQxNDUzLCA0MTQ2OCwgNDE0ODMsIDQxNDk4LCA0MTUxMywgCi0gICAgNDE1MjgsIDQxNTQzLCA0MTU1OCwgNDE1NzMsIDQxNTg4LCA0MTYwMywgNDE2MTgsIDQxNjMzLCA0MTY0OCwgNDE2NjMsIAotICAgIDQxNjc4LCA0MTY5MywgNDE3MDgsIDQxNzIzLCA0MTczOCwgNDE3NTMsIDQxNzY4LCA0MTc4MywgNDE3OTgsIDQxODEzLCAKLSAgICA0MTgyOCwgNDE4NDMsIDQxODU4LCA0MTg3MywgNDE4ODgsIDQxOTAzLCA0MTkxOCwgNDE5MzMsIDQxOTQ4LCA0MTk2MywgCi0gICAgNDE5NzgsIDQxOTkzLCA0MjAwOCwgNDIwMjMsIDQyMDM4LCA0MjA1MywgNDIwNjgsIDQyMDgzLCA0MjA5OCwgNDIxMTMsIAotICAgIDQyMTI4LCA0MjE0MywgNDIxNTgsIDQyMTczLCA0MjE4OCwgNDIyMDMsIDQyMjE4LCA0MjIzMywgNDIyNDgsIDQyMjYzLCAKLSAgICA0MjI3OCwgNDIyOTMsIDQyMzA4LCA0MjMyMywgNDIzMzgsIDQyMzUzLCA0MjM2OCwgNDIzODMsIDQyMzk4LCA0MjQxMywgCi0gICAgNDI0MjgsIDQyNDQzLCA0MjQ1OCwgNDI0NzMsIDQyNDg4LCA0MjUwMywgNDI1MTgsIDQyNTMzLCA0MjU0OCwgNDI1NjMsIAotICAgIDQyNTc4LCA0MjU5MywgNDI2MDgsIDQyNjIzLCA0MjYzOCwgNDI2NTMsIDQyNjY4LCA0MjY4MywgNDI2OTgsIDQyNzEzLCAKLSAgICA0MjcyOCwgNDI3NDMsIDQyNzU4LCA0Mjc3MywgNDI3ODgsIDQyODAzLCA0MjgxOCwgNDI4MzMsIDQyODQ4LCA0Mjg2MywgCi0gICAgNDI4NzgsIDQyODkzLCA0MjkwOCwgNDI5MjMsIDQyOTM4LCA0Mjk1MywgNDI5NjgsIDQyOTgzLCA0Mjk5OCwgNDMwMTMsIAotICAgIDQzMDI4LCA0MzA0MywgNDMwNTgsIDQzMDczLCA0MzA4OCwgNDMxMDMsIDQzMTE4LCA0MzEzMywgNDMxNDgsIDQzMTYzLCAKLSAgICA0MzE3OCwgNDMxOTMsIDQzMjA4LCA0MzIyMywgNDMyMzgsIDQzMjUzLCA0MzI2OCwgNDMyODMsIDQzMjk4LCA0MzMxMywgCi0gICAgNDMzMjgsIDQzMzQzLCA0MzM1OCwgNDMzNzMsIDQzMzg4LCA0MzQwMywgNDM0MTgsIDQzNDMzLCA0MzQ0OCwgNDM0NjMsIAotICAgIDQzNDc4LCA0MzQ5MywgNDM1MDgsIDQzNTIzLCA0MzUzOCwgNDM1NTMsIDQzNTY4LCA0MzU4MywgNDM1OTgsIDQzNjEzLCAKLSAgICA0MzYyOCwgNDM2NDMsIDQzNjU4LCA0MzY3MywgNDM2ODgsIDQzNzAzLCA0MzcxOCwgNDM3MzMsIDQzNzQ4LCA0Mzc2MywgCi0gICAgNDM3NzgsIDQzNzkzLCA0MzgwOCwgNDM4MjMsIDQzODM4LCA0Mzg1MywgNDM4NjgsIDQzODgzLCA0Mzg5OCwgNDM5MTMsIAotICAgIDQzOTI4LCA0Mzk0MywgNDM5NTgsIDQzOTczLCA0Mzk4OCwgNDQwMDMsIDQ0MDE4LCA0NDAzMywgNDQwNDgsIDQ0MDYzLCAKLSAgICA0NDA3OCwgNDQwOTMsIDQ0MTA4LCA0NDEyMywgNDQxMzgsIDQ0MTUzLCA0NDE2OCwgNDQxODMsIDQ0MTk4LCA0NDIxMywgCi0gICAgNDQyMjgsIDQ0MjQzLCA0NDI1OCwgNDQyNzMsIDQ0Mjg4LCA0NDMwMywgNDQzMTgsIDQ0MzMzLCA0NDM0OCwgNDQzNjMsIAotICAgIDQ0Mzc4LCA0NDM5MywgNDQ0MDgsIDQ0NDIzLCA0NDQzOCwgNDQ0NTMsIDQ0NDY4LCA0NDQ4MywgNDQ0OTgsIDQ0NTEzLCAKLSAgICA0NDUyOCwgNDQ1NDMsIDQ0NTU4LCA0NDU3MywgNDQ1ODgsIDQ0NjAzLCA0NDYxOCwgNDQ2MzMsIDQ0NjQ4LCA0NDY2MywgCi0gICAgNDQ2NzgsIDQ0NjkzLCA0NDcwOCwgNDQ3MjMsIDQ0NzM4LCA0NDc1MywgNDQ3NjgsIDQ0NzgzLCA0NDc5OCwgNDQ4MTMsIAotICAgIDQ0ODI4LCA0NDg0MywgNDQ4NTgsIDQ0ODczLCA0NDg4OCwgNDQ5MDMsIDQ0OTE4LCA0NDkzMywgNDQ5NDgsIDQ0OTYzLCAKLSAgICA0NDk3OCwgNDQ5OTMsIDQ1MDA4LCA0NTAyMywgNDUwMzgsIDQ1MDUzLCA0NTA2OCwgNDUwODMsIDQ1MDk4LCA0NTExMywgCi0gICAgNDUxMjgsIDQ1MTQzLCA0NTE1OCwgNDUxNzMsIDQ1MTg4LCA0NTIwMywgNDUyMTgsIDQ1MjMzLCA0NTI0OCwgNDUyNjMsIAotICAgIDQ1Mjc4LCA0NTI5MywgNDUzMDgsIDQ1MzIzLCA0NTMzOCwgNDUzNTMsIDQ1MzY4LCA0NTM4MywgNDUzOTgsIDQ1NDEzLCAKLSAgICA0NTQyOCwgNDU0NDMsIDQ1NDU4LCA0NTQ3MywgNDU0ODgsIDQ1NTAzLCA0NTUxOCwgNDU1MzMsIDQ1NTQ4LCA0NTU2MywgCi0gICAgNDU1NzgsIDQ1NTkzLCA0NTYwOCwgNDU2MjMsIDQ1NjM4LCA0NTY1MywgNDU2NjgsIDQ1NjgzLCA0NTY5OCwgNDU3MTMsIAotICAgIDQ1NzI4LCA0NTc0MywgNDU3NTgsIDQ1NzczLCA0NTc4OCwgNDU4MDMsIDQ1ODE4LCA0NTgzMywgNDU4NDgsIDQ1ODYzLCAKLSAgICA0NTg3OCwgNDU4OTMsIDQ1OTA4LCA0NTkyMywgNDU5MzgsIDQ1OTUzLCA0NTk2OCwgNDU5ODMsIDQ1OTk4LCA0NjAxMywgCi0gICAgNDYwMjgsIDQ2MDQzLCA0NjA1OCwgNDYwNzMsIDQ2MDg4LCA0NjEwMywgNDYxMTgsIDQ2MTMzLCA0NjE0OCwgNDYxNjMsIAotICAgIDQ2MTc4LCA0NjE5MywgNDYyMDgsIDQ2MjIzLCA0NjIzOCwgNDYyNTMsIDQ2MjY4LCA0NjI4MywgNDYyOTgsIDQ2MzEzLCAKLSAgICA0NjMyOCwgNDYzNDMsIDQ2MzU4LCA0NjM3MywgNDYzODgsIDQ2NDAzLCA0NjQxOCwgNDY0MzMsIDQ2NDQ4LCA0NjQ2MywgCi0gICAgNDY0NzgsIDQ2NDkzLCA0NjUwOCwgNDY1MjMsIDQ2NTM4LCA0NjU1MywgNDY1NjgsIDQ2NTgzLCA0NjU5OCwgNDY2MTMsIAotICAgIDQ2NjI4LCA0NjY0MywgNDY2NTgsIDQ2NjczLCA0NjY4OCwgNDY3MDMsIDQ2NzE4LCA0NjczMywgNDY3NDgsIDQ2NzYzLCAKLSAgICA0Njc3OCwgNDY3OTMsIDQ2ODA4LCA0NjgyMywgNDY4MzgsIDQ2ODUzLCA0Njg2OCwgNDY4ODMsIDQ2ODk5LCA0NjkxNSwgCi0gICAgNDY5MzEsIDQ2OTQ3LCA0Njk2MywgNDY5NzksIDQ2OTk1LCA0NzAxMSwgNDcwMjcsIDQ3MDQzLCA0NzA1OSwgNDcwNzUsIAotICAgIDQ3MDkxLCA0NzEwNywgNDcxMjMsIDQ3MTM5LCA0NzE1NSwgNDcxNzEsIDQ3MTg3LCA0NzIwMywgNDcyMTksIDQ3MjM1LCAKLSAgICA0NzI1MSwgNDcyNjcsIDQ3MjgzLCA0NzI5OSwgNDczMTUsIDQ3MzMxLCA0NzM0NywgNDczNjMsIDQ3Mzc5LCA0NzM5NSwgCi0gICAgNDc0MTEsIDQ3NDI3LCA0NzQ0MywgNDc0NTksIDQ3NDc1LCA0NzQ5MSwgNDc1MDcsIDQ3NTIzLCA0NzUzOSwgNDc1NTUsIAotICAgIDQ3NTcxLCA0NzU4NywgNDc2MDMsIDQ3NjE5LCA0NzYzNSwgNDc2NTEsIDQ3NjY3LCA0NzY4MywgNDc2OTksIDQ3NzE1LCAKLSAgICA0NzczMSwgNDc3NDcsIDQ3NzYzLCA0Nzc3OSwgNDc3OTUsIDQ3ODExLCA0NzgyNywgNDc4NDMsIDQ3ODU5LCA0Nzg3NSwgCi0gICAgNDc4OTEsIDQ3OTA3LCA0NzkyMywgNDc5MzksIDQ3OTU1LCA0Nzk3MSwgNDc5ODcsIDQ4MDAzLCA0ODAxOSwgNDgwMzUsIAotICAgIDQ4MDUxLCA0ODA2NywgNDgwODMsIDQ4MDk5LCA0ODExNSwgNDgxMzEsIDQ4MTQ3LCA0ODE2MywgNDgxNzksIDQ4MTk1LCAKLSAgICA0ODIxMSwgNDgyMjcsIDQ4MjQzLCA0ODI1OSwgNDgyNzUsIDQ4MjkxLCA0ODMwNywgNDgzMjMsIDQ4MzM5LCA0ODM1NSwgCi0gICAgNDgzNzEsIDQ4Mzg3LCA0ODQwMywgNDg0MTksIDQ4NDM1LCA0ODQ1MSwgNDg0NjcsIDQ4NDgzLCA0ODQ5OSwgNDg1MTUsIAotICAgIDQ4NTMxLCA0ODU0NywgNDg1NjMsIDQ4NTc5LCA0ODU5NSwgNDg2MTEsIDQ4NjI3LCA0ODY0MywgNDg2NTksIDQ4Njc1LCAKLSAgICA0ODY5MSwgNDg3MDcsIDQ4NzIzLCA0ODczOSwgNDg3NTUsIDQ4NzcxLCA0ODc4NywgNDg4MDMsIDQ4ODE5LCA0ODgzNSwgCi0gICAgNDg4NTEsIDQ4ODY3LCA0ODg4MywgNDg4OTksIDQ4OTE1LCA0ODkzMSwgNDg5NDcsIDQ4OTYzLCA0ODk3OSwgNDg5OTUsIAotICAgIDQ5MDExLCA0OTAyNywgNDkwNDMsIDQ5MDU5LCA0OTA3NSwgNDkwOTEsIDQ5MTA3LCA0OTEyMywgNDkxMzksIDQ5MTU1LCAKLSAgICA0OTE3MSwgNDkxODcsIDQ5MjAzLCA0OTIxOSwgNDkyMzUsIDQ5MjUxLCA0OTI2NywgNDkyODMsIDQ5Mjk5LCA0OTMxNSwgCi0gICAgNDkzMzEsIDQ5MzQ3LCA0OTM2MywgNDkzNzksIDQ5Mzk1LCA0OTQxMSwgNDk0MjcsIDQ5NDQzLCA0OTQ1OSwgNDk0NzUsIAotICAgIDQ5NDkxLCA0OTUwNywgNDk1MjMsIDQ5NTM5LCA0OTU1NSwgNDk1NzEsIDQ5NTg3LCA0OTYwMywgNDk2MTksIDQ5NjM1LCAKLSAgICA0OTY1MSwgNDk2NjcsIDQ5NjgzLCA0OTY5OSwgNDk3MTUsIDQ5NzMxLCA0OTc0NywgNDk3NjMsIDQ5Nzc5LCA0OTc5NSwgCi0gICAgNDk4MTEsIDQ5ODI3LCA0OTg0MywgNDk4NTksIDQ5ODc1LCA0OTg5MSwgNDk5MDcsIDQ5OTIzLCA0OTkzOSwgNDk5NTUsIAotICAgIDQ5OTcxLCA0OTk4NywgNTAwMDMsIDUwMDE5LCA1MDAzNSwgNTAwNTEsIDUwMDY3LCA1MDA4MywgNTAwOTksIDUwMTE1LCAKLSAgICA1MDEzMSwgNTAxNDcsIDUwMTYzLCA1MDE3OSwgNTAxOTUsIDUwMjExLCA1MDIyNywgNTAyNDMsIDUwMjU5LCA1MDI3NSwgCi0gICAgNTAyOTEsIDUwMzA3LCA1MDMyMywgNTAzMzksIDUwMzU1LCA1MDM3MSwgNTAzODcsIDUwNDAzLCA1MDQxOSwgNTA0MzUsIAotICAgIDUwNDUxLCA1MDQ2NywgNTA0ODMsIDUwNDk5LCA1MDUxNSwgNTA1MzEsIDUwNTQ3LCA1MDU2MywgNTA1NzksIDUwNTk1LCAKLSAgICA1MDYxMSwgNTA2MjcsIDUwNjQzLCA1MDY1OSwgNTA2NzUsIDUwNjkxLCA1MDcwNywgNTA3MjMsIDUwNzM5LCA1MDc1NSwgCi0gICAgNTA3NzEsIDUwNzg3LCA1MDgwMywgNTA4MTksIDUwODM1LCA1MDg1MSwgNTA4NjcsIDUwODgzLCA1MDg5OSwgNTA5MTUsIAotICAgIDUwOTMxLCA1MDk0NywgNTA5NjMsIDUwOTc5LCA1MDk5NSwgNTEwMTEsIDUxMDI3LCA1MTA0MywgNTEwNTksIDUxMDc1LCAKLSAgICA1MTA5MSwgNTExMDcsIDUxMTIzLCA1MTEzOSwgNTExNTUsIDUxMTcxLCA1MTE4NywgNTEyMDMsIDUxMjE5LCA1MTIzNSwgCi0gICAgNTEyNTEsIDUxMjY3LCA1MTI4MywgNTEyOTksIDUxMzE1LCA1MTMzMSwgNTEzNDcsIDUxMzYzLCA1MTM3OSwgNTEzOTUsIAotICAgIDUxNDExLCA1MTQyNywgNTE0NDMsIDUxNDU5LCA1MTQ3NSwgNTE0OTEsIDUxNTA3LCA1MTUyMywgNTE1MzksIDUxNTU1LCAKLSAgICA1MTU3MSwgNTE1ODcsIDUxNjAzLCA1MTYxOSwgNTE2MzUsIDUxNjUxLCA1MTY2NywgNTE2ODMsIDUxNjk5LCA1MTcxNSwgCi0gICAgNTE3MzEsIDUxNzQ3LCA1MTc2MywgNTE3NzksIDUxNzk1LCA1MTgxMSwgNTE4MjcsIDUxODQzLCA1MTg1OSwgNTE4NzUsIAotICAgIDUxODkxLCA1MTkwNywgNTE5MjMsIDUxOTM5LCA1MTk1NSwgNTE5NzEsIDUxOTg3LCA1MjAwMywgNTIwMTksIDUyMDM1LCAKLSAgICA1MjA1MSwgNTIwNjcsIDUyMDgzLCA1MjA5OSwgNTIxMTUsIDUyMTMxLCA1MjE0NywgNTIxNjMsIDUyMTc5LCA1MjE5NSwgCi0gICAgNTIyMTEsIDUyMjI3LCA1MjI0MywgNTIyNTksIDUyMjc1LCA1MjI5MSwgNTIzMDcsIDUyMzIzLCA1MjMzOSwgNTIzNTUsIAotICAgIDUyMzcxLCA1MjM4NywgNTI0MDMsIDUyNDE5LCA1MjQzNSwgNTI0NTEsIDUyNDY3LCA1MjQ4MywgNTI0OTksIDUyNTE1LCAKLSAgICA1MjUzMSwgNTI1NDcsIDUyNTYzLCA1MjU3OSwgNTI1OTUsIDUyNjExLCA1MjYyNywgNTI2NDMsIDUyNjU5LCA1MjY3NSwgCi0gICAgNTI2OTEsIDUyNzA3LCA1MjcyMywgNTI3MzksIDUyNzU1LCA1Mjc3MSwgNTI3ODcsIDUyODAzLCA1MjgxOSwgNTI4MzUsIAotICAgIDUyODUxLCA1Mjg2NywgNTI4ODMsIDUyODk5LCA1MjkxNSwgNTI5MzEsIDUyOTQ3LCA1Mjk2MywgNTI5NzksIDUyOTk1LCAKLSAgICA1MzAxMSwgNTMwMjcsIDUzMDQzLCA1MzA1OSwgNTMwNzUsIDUzMDkxLCA1MzEwNywgNTMxMjMsIDUzMTM5LCA1MzE1NSwgCi0gICAgNTMxNzEsIDUzMTg3LCA1MzIwMywgNTMyMTksIDUzMjM1LCA1MzI1MSwgNTMyNjcsIDUzMjgzLCA1MzI5OSwgNTMzMTUsIAotICAgIDUzMzMxLCA1MzM0NywgNTMzNjMsIDUzMzc5LCA1MzM5NSwgNTM0MTEsIDUzNDI3LCA1MzQ0MywgNTM0NTksIDUzNDc1LCAKLSAgICA1MzQ5MSwgNTM1MDcsIDUzNTIzLCA1MzUzOSwgNTM1NTUsIDUzNTcxLCA1MzU4NywgNTM2MDMsIDUzNjE5LCA1MzYzNSwgCi0gICAgNTM2NTEsIDUzNjY3LCA1MzY4MywgNTM2OTksIDUzNzE1LCA1MzczMSwgNTM3NDcsIDUzNzYzLCA1Mzc3OSwgNTM3OTUsIAotICAgIDUzODExLCA1MzgyNywgNTM4NDMsIDUzODU5LCA1Mzg3NSwgNTM4OTEsIDUzOTA3LCA1MzkyMywgNTM5MzksIDUzOTU1LCAKLSAgICA1Mzk3MSwgNTM5ODcsIDU0MDAzLCA1NDAxOSwgNTQwMzUsIDU0MDUxLCA1NDA2NywgNTQwODMsIDU0MDk5LCA1NDExNSwgCi0gICAgNTQxMzEsIDU0MTQ3LCA1NDE2MywgNTQxNzksIDU0MTk1LCA1NDIxMSwgNTQyMjcsIDU0MjQzLCA1NDI1OSwgNTQyNzUsIAotICAgIDU0MjkxLCA1NDMwNywgNTQzMjMsIDU0MzM5LCA1NDM1NSwgNTQzNzEsIDU0Mzg3LCA1NDQwMywgNTQ0MTksIDU0NDM1LCAKLSAgICA1NDQ1MSwgNTQ0NjcsIDU0NDgzLCA1NDQ5OSwgNTQ1MTUsIDU0NTMxLCA1NDU0NywgNTQ1NjMsIDU0NTc5LCA1NDU5NSwgCi0gICAgNTQ2MTEsIDU0NjI3LCA1NDY0MywgNTQ2NTksIDU0Njc1LCA1NDY5MSwgNTQ3MDcsIDU0NzIzLCA1NDczOSwgNTQ3NTUsIAotICAgIDU0NzcxLCA1NDc4NywgNTQ4MDMsIDU0ODE5LCA1NDgzNSwgNTQ4NTEsIDU0ODY3LCA1NDg4MywgNTQ4OTksIDU0OTE1LCAKLSAgICA1NDkzMSwgNTQ5NDcsIDU0OTYzLCA1NDk3OSwgNTQ5OTUsIDU1MDExLCA1NTAyNywgNTUwNDMsIDU1MDU5LCA1NTA3NSwgCi0gICAgNTUwOTEsIDU1MTA3LCA1NTEyMywgNTUxMzksIDU1MTU1LCA1NTE3MSwgNTUxODcsIDU1MjAzLCA1NTIxOSwgNTUyMzUsIAotICAgIDU1MjUxLCA1NTI2NywgNTUyODMsIDU1Mjk5LCA1NTMxNSwgNTUzMzEsIDU1MzQ3LCA1NTM2MywgNTUzNzksIDU1Mzk1LCAKLSAgICA1NTQxMSwgNTU0MjcsIDU1NDQzLCA1NTQ1OSwgNTU0NzUsIDU1NDkxLCA1NTUwNywgNTU1MjMsIDU1NTM5LCA1NTU1NSwgCi0gICAgNTU1NzAsIDE0OTYzLCA1NTU3OSwgNTU1ODUsIDU1NTkxLCA1NTYwMSwgNTU2MDksIDEzMTQ0LCAxMzY4MywgODMxOSwgCi0gICAgNTU2MjIsIDE0ODMsIDU1NjMwLCAyNTM4NSwgNTYzNywgNTU2MzYsIDU1NjQxLCA1NTY0NiwgNTU2NTEsIDU1NjU2LCAKLSAgICA1NTY2MiwgNTU2NjcsIDU1NjczLCA1NTY3OCwgNTU2ODQsIDU1Njg5LCA1NTY5NCwgNTU2OTksIDU1NzA0LCA1NTcxMCwgCi0gICAgNTU3MTUsIDU1NzIwLCA1NTcyNSwgNTU3MzAsIDU1NzM1LCA1NTc0MCwgNTU3NDUsIDU1NzUxLCA1NTc1NiwgNTU3NjIsIAotICAgIDU1NzY5LCAyNTE1LCA1NTc3NCwgNTU3ODAsIDY5NDgsIDU1Nzg0LCA1NTc4OSwgNTU3OTYsIDU1ODA0LCA0MCwgNTU4MDgsIAotICAgIDU1ODE0LCA1NTgxOSwgNTU4MjQsIDU1ODI4LCA1NTgzMywgNTU4MzcsIDU1ODQxLCA5MDM3LCA1NTg0NSwgNTU4NTUsIAotICAgIDU1ODY4LCA1NTg3OSwgNTU4OTIsIDU1ODk5LCA1NTkwNSwgNTU5MTAsIDU1OTE2LCA1NTkyMiwgNTU5MjgsIDU1OTMzLCAKLSAgICA1NTkzOCwgNTU5NDMsIDU1OTQ4LCA1NTk1MiwgNTU5NTcsIDU1OTYyLCA1NTk2NywgNTU5NzMsIDU1OTc5LCA1NTk4NSwgCi0gICAgNTU5OTAsIDU1OTk0LCA1NTk5OSwgNTYwMDQsIDU2MDA4LCA1NjAxMywgNTYwMTgsIDU2MDIzLCA1NjAyNywgOTA1MywgCi0gICAgOTA2NCwgOTA2OSwgMTUyNiwgNTYwMzEsIDE1MzEsIDU2MDM3LCA1NjA0MCwgMTU2MiwgNTYwNDYsIDE1NjgsIDE1NzQsIAotICAgIDkwOTksIDU2MDUxLCA1NjA1OSwgNTYwNjYsIDU2MDcwLCA1NjA3NiwgNTYwODEsIDI4ODI0LCA1NjA4NiwgNTYwOTMsIAotICAgIDU2MDk4LCA1NjEwMiwgNTYxMDYsIDE1NzksIDE0NTM4LCAxNDU0OSwgNTYxMTUsIDU2MTIyLCA1NjEyNywgNTYxMzEsIAotICAgIDE0NTY4LCAxNTgzLCAzNDg5NywgNTYxMzQsIDU2MTM5LCA1NjE0OSwgNTYxNTgsIDU2MTYzLCA1NjE2NywgNTYxNzMsIAotICAgIDE1ODgsIDM2NzE5LCA1NjE3OCwgNTYxODcsIDU2MTkzLCA1NjE5OCwgOTI0OSwgOTI1NSwgNTYyMDQsIDU2MjE2LCA1NjIzMywgCi0gICAgNTYyNTAsIDU2MjY3LCA1NjI4NCwgNTYzMDEsIDU2MzE4LCA1NjMzNSwgNTYzNTIsIDU2MzY5LCA1NjM4NiwgNTY0MDMsIAotICAgIDU2NDIwLCA1NjQzNywgNTY0NTQsIDU2NDcxLCA1NjQ4OCwgNTY1MDUsIDU2NTIyLCA1NjUzOSwgNTY1NTYsIDU2NTczLCAKLSAgICA1NjU5MCwgNTY2MDcsIDU2NjI0LCA1NjY0MSwgNTY2NTgsIDU2Njc1LCA1NjY5MiwgNTY3MDksIDU2NzI2LCA1Njc0MywgCi0gICAgNTY3NjAsIDU2Nzc3LCA1Njc5NCwgNTY4MTEsIDU2ODI4LCA1Njg0NSwgNTY4NjIsIDU2ODc5LCA1Njg5NiwgNTY5MTMsIAotICAgIDU2OTMwLCA1Njk0NywgNTY5NjQsIDU2OTgxLCA1Njk5OCwgNTcwMTUsIDU3MDMyLCA1NzA0OSwgNTcwNjAsIDU3MDY1LCAKLSAgICAxNTkzLCA1NzA2OSwgNTcwNzUsIDU3MDgwLCA3NjkzLCAxNTk4LCA1NzA4NSwgNTcwOTQsIDI1NjY0LCA1NzA5OSwgNTcxMTAsIAotICAgIDU3MTIwLCA1NzEyNSwgNTcxMzIsIDU3MTM4LCA1NzE0MywgNTcxNDgsIDE0ODIwLCA1NzE1MiwgOTI2NiwgMTYwMywgOTI3MSwgCi0gICAgNTcxNTgsIDU3MTYzLCA1NzE2OSwgNTcxNzQsIDU3MTc5LCA1NzE4NCwgNTcxODksIDU3MTk0LCA1NzE5OSwgNTcyMDQsIAotICAgIDU3MjEwLCA1NzIxNiwgNTcyMjIsIDU3MjI3LCA1NzIzMSwgNTcyMzYsIDU3MjQxLCA1NzI0NSwgNTcyNTAsIDU3MjU1LCAKLSAgICA1NzI2MCwgNTcyNjQsIDU3MjY5LCA1NzI3NSwgNTcyODAsIDU3Mjg1LCA1NzI4OSwgNTcyOTQsIDU3Mjk5LCA1NzMwNSwgCi0gICAgNTczMTAsIDU3MzE1LCA1NzMyMSwgNTczMjcsIDU3MzMyLCA1NzMzNiwgNTczNDEsIDU3MzQ2LCA1NzM1MSwgNTczNTUsIAotICAgIDU3MzYwLCA1NzM2NSwgNTczNzAsIDU3Mzc2LCA1NzM4MiwgNTczODcsIDU3MzkxLCA1NzM5NSwgNTc0MDAsIDU3NDA1LCAKLSAgICA1NzQxMCwgMjcwMjQsIDU3NDE0LCA1NzQxOSwgNTc0MjQsIDU3NDMwLCA1NzQzNSwgNTc0NDAsIDU3NDQ0LCA1NzQ0OSwgCi0gICAgNTc0NTQsIDU3NDYwLCA1NzQ2NSwgNTc0NzAsIDU3NDc2LCA1NzQ4MiwgNTc0ODcsIDU3NDkxLCA1NzQ5NiwgNTc1MDEsIAotICAgIDU3NTA1LCA1NzUxMCwgNTc1MTUsIDU3NTIwLCA1NzUyNiwgNTc1MzIsIDU3NTM3LCA1NzU0MSwgNTc1NDYsIDU3NTUxLCAKLSAgICA1NzU1NSwgNTc1NjAsIDU3NTY1LCA1NzU3MCwgNTc1NzQsIDU3NTc3LCAyOTM5NSwgNTc1ODIsIDU3NTkwLCAxNDg4NiwgCi0gICAgMTQ5MTAsIDkzNjIsIDU3NTk2LCA1NzYwNiwgNTc2MjEsIDkzNjcsIDU3NjMyLCA1NzYzNywgNTc2NDgsIDU3NjYwLCAKLSAgICA1NzY3MiwgNTc2ODQsIDI2NDksIDU3Njk2LCA1NzcwMSwgNTc3MDUsIDU3NzExLCA1NzcxNywgNTc3MjIsIDE2MTUsIDEwMTAsIAotICAgIDU3NzMxLCA1NzczNiwgMzY3NTgsIDU3NzQwLCA1Nzc0NCwgNTc3NDksIDU3NzUzLCAxNDk3MSwgNTc3NTgsIDU3NzYxLCAKLSAgICA1Nzc2OSwgNTc3NzcsIDE2MTksIDkzOTIsIDkzOTgsIDE2MjQsIDU3Nzg1LCA1Nzc5MiwgNTc3OTcsIDU3ODA2LCA1NzgxNiwgCi0gICAgNTc4MjMsIDU3ODI4LCAxNjI5LCA1NzgzNSwgNTc4NDAsIDE1MDg2LCA1Nzg0NCwgNTc4NDksIDU3ODU2LCA1Nzg2MiwgCi0gICAgNTc4NjYsIDU3ODc3LCA1Nzg4NywgMTUxMDgsIDc2MTYsIDc2MjMsIDE2MzQsIDU3ODk0LCA1NzkwMCwgNTc5MDgsIDU3OTE1LCAKLSAgICA1NzkyMSwgNTc5MjgsIDU3OTQwLCA1Nzk0NiwgNTc5NTEsIDU3OTYzLCA1Nzk3NCwgNTc5ODMsIDU3OTkzLCAzNjY4LCAKLSAgICAyODY2MCwgMjg2NjksIDE1MTQ4LCAxNjM5LCAxNjQzLCA1ODAwMSwgNTgwMTIsIDU4MDE3LCAxNjQ2LCA1ODAyNSwgNTgwMzAsIAotICAgIDU4MDQyLCA1ODA0OCwgNTgwNTMsIDU4MDYxLCAxNjUxLCA1ODA2NiwgNTgwNzEsIDU4MDc5LCA1ODA4NywgNTgwOTQsIAotICAgIDU4MTAzLCA1ODExMSwgNTgxMjAsIDE2NTYsIDU4MTI0LCAxNjYxLCA1ODEyOSwgNTgxMzYsIDE1MjY4LCA1ODE0NCwgCi0gICAgNTgxNTAsIDU4MTU1LCA1ODE2MywgNTgxNzAsIDU4MTc4LCAyMDY1OCwgNTgxODMsIDk1MjcsIDU4MTkyLCA1ODE5OCwgCi0gICAgNTgyMDUsIDU4MjEyLCA1ODIxOCwgNTgyMjgsIDU4MjM0LCA1ODIzOSwgNTgyNDQsIDU4MjUyLCA5NTM2LCA5NTQxLCAKLSAgICA1ODI2MCwgNTgyNjYsIDU4Mjc0LCAzNzMzLCAzNjg0NiwgNTgyNzksIDU4Mjg1LCA1ODI5MCwgNTgyOTgsIDU4MzA1LCAKLSAgICAxMDM1NiwgNTgzMTAsIDU4MzE2LCAxNjcyLCA1ODMyMSwgNTgzMjQsIDEwNTgsIDU4MzMwLCA1ODMzNSwgNTgzNDAsIAotICAgIDU4MzQ2LCA1ODM1MSwgNTgzNTYsIDU4MzYxLCA1ODM2NiwgNTgzNzEsIDU4Mzc2LCAxNjgxLCA5LCA1ODM4MiwgNTgzODYsIAotICAgIDU4MzkxLCA1ODM5NSwgNTgzOTksIDU4NDAzLCAyOTY0MywgNTg0MDgsIDU4NDEzLCA1ODQxOCwgNTg0MjIsIDU4NDI1LCAKLSAgICA1ODQyOSwgNTg0MzMsIDU4NDM4LCA1ODQ0MiwgNTg0NDcsIDU4NDUxLCAzMjMxNSwgMzIzMjAsIDMyMzI1LCA1ODQ1NCwgCi0gICAgNTg0NjEsIDU4NDY3LCAzNjU4NSwgNTg0NzcsIDMyMzMxLCAyOTg5MSwgMjk2NTMsIDI5NjU5LCAzMjM0NywgMjk2NjUsIAotICAgIDU4NDgyLCA1ODQ4NywgMjk5MjQsIDU4NDkxLCA1ODQ5NCwgNTg0OTgsIDU4NTA1LCA1ODUwOCwgNTg1MTMsIDU4NTE3LCAKLSAgICA1ODUyMSwgNTg1MjQsIDU4NTM0LCA1ODU0NiwgNTg1NTMsIDMxMjgyLCA1ODU1NiwgMTM5MzYsIDgyMSwgNTg1NTksIAotICAgIDU4NTYzLCA1ODU2OCwgNTg1NzIsIDU4NTc1LCAxMTk0NCwgNTg1ODIsIDU4NTg5LCA1ODYwMiwgNTg2MTAsIDU4NjE5LCAKLSAgICA1ODYyNCwgNTg2MzQsIDU4NjQ3LCA1ODY1OSwgNTg2NjYsIDU4NjcxLCA1ODY4MCwgNTg2OTMsIDMzNzMyLCA1ODcxMSwgCi0gICAgNTg3MTYsIDU4NzIzLCA1ODcyOSwgNTg3MzQsIDU4NzQyLCA1ODc0OSwgMjUyMjQsIDYxMywgNTg3NTUsIDU4NzYxLCAKLSAgICA1ODc3MSwgNTg3NzcsIDU4NzgyLCAyOTY4MywgNDQ4MSwgMjk2OTcsIDU4Nzg2LCA1ODc5NiwgNTg4MDEsIDU4ODExLCAKLSAgICA1ODgyNiwgNTg4MzIsIDU4ODM4LCAyOTcwNywgNTg4NDMsIDI4ODU2LCA1ODg0NywgNTg4NTIsIDU4ODU3LCA1ODg2MSwgCi0gICAgNTg4NjYsIDE1MTUxLCA1ODg3MywgNTg4NzgsIDU4ODgyLCA0NTIyLCAyOTczMywgNTg4ODYsIDU4ODkyLCAzMjcsIDU4OTAyLCAKLSAgICA1ODkwOSwgNTg5MTYsIDU4OTIxLCA1ODkzMCwgNTYxNDMsIDU4OTM2LCA1ODk0NCwgNTg5NDgsIDU4OTUyLCA1ODk1NiwgCi0gICAgNTg5NjAsIDU4OTY1LCA1ODk2OSwgNTg5NzUsIDU4OTgzLCA1ODk4OCwgNTg5OTMsIDU4OTk3LCA1OTAwMiwgNTkwMDYsIAotICAgIDU5MDEwLCA1OTAxNiwgNTkwMjIsIDU5MDI3LCA1OTAzMSwgMjk4NTcsIDU5MDM2LCAyOTg2MywgMjk4NjksIDU5MDQxLCAKLSAgICA1OTA0NywgNTkwNTQsIDU5MDU5LCA1OTA2MywgMjg4NzMsIDE0ODEzLCA1OTA2NiwgNTkwNzAsIDU5MDc1LCA1OTA4MiwgCi0gICAgNTkwODgsIDU5MDkyLCA1OTA5NywgMzYyOTUsIDU5MTAzLCA1OTEwNywgNTkxMTEsIDU5MTE2LCA1OTEyMiwgNTkxMjgsIAotICAgIDU5MTQwLCA1OTE0OSwgNTkxNTksIDU5MTY1LCA1OTE3MiwgNTkxNzcsIDU5MTgyLCA1OTE4NiwgNTkxODksIDU5MTk1LCAKLSAgICA1OTIwMiwgNTkyMDcsIDU5MjEyLCA1OTIxOSwgNTkyMjYsIDU5MjMyLCA1OTIzNywgNTkyNDIsIDU5MjUwLCA1OTI1NSwgCi0gICAgMjM3NywgNTkyNTksIDU5MjY0LCA1OTI3MCwgNTkyNzUsIDU5MjgxLCA1OTI4NiwgNTkyOTEsIDU5Mjk2LCA1OTMwMiwgCi0gICAgMjk4OTAsIDU5MzA3LCA1OTMxMywgNTkzMTksIDU5MzI1LCAyOTk1NCwgNTkzMzAsIDU5MzM1LCA1OTM0MCwgMjk5NjUsIAotICAgIDU5MzQ1LCA1OTM1MCwgNTkzNTUsIDU5MzYxLCA1OTM2NywgMjk5NzAsIDU5MzcyLCA1OTM3NywgNTkzODIsIDMwMDI1LCAKLSAgICAzMDAzMSwgNTkzODcsIDU5MzkyLCAzMDAzNiwgNTkzOTcsIDI1ODkxLCAzMDA1OCwgMzAwNjIsIDU5NDAyLCA1OTM3OCwgCi0gICAgNTk0MDYsIDU5NDE0LCA1OTQyMCwgNTk0MjgsIDU5NDM1LCA1OTQ0MSwgNTk0NTEsIDU5NDU3LCA1OTQ2NCwgODk4NCwgCi0gICAgMzAwNzYsIDU5NDcwLCA1OTQ4MywgNTk0OTIsIDU5NDk4LCA1OTUwNywgNTk1MTMsIDIxNTc1LCA1OTUyMCwgNTk1MjcsIAotICAgIDU5NTM3LCAzMDAyNiwgNTk1NDAsIDU5NTQ3LCA1OTU1MiwgNTk1NTYsIDU5NTYwLCA1OTU2NSwgNDU5OCwgNTk1NjksIAotICAgIDU5NTc0LCA1OTU3OSwgMzI0MDksIDMyNDE0LCA1OTU4MywgMzI0MjgsIDU5NTg4LCAzMjQzMywgNTk1OTMsIDU5NTk5LCAKLSAgICAzMjQ0NSwgMzI0NTEsIDMyNDU3LCA1OTYwNCwgNTk2MTAsIDIwNjE5LCA1OTYyMSwgNTk2MjQsIDU5NjM2LCA1OTY0NCwgCi0gICAgMzAwOTQsIDU5NjQ4LCA1OTY1NywgNTk2NjcsIDU5Njc2LCAzMDA5OSwgNTk2ODEsIDU5Njg4LCA1OTY5NywgNTk3MDMsIAotICAgIDU5NzExLCA1OTcxOCwgNDU3MywgNDMxMCwgNTk3MjMsIDMwMDM3LCA1OTcyOSwgNTk3MzIsIDU5NzM4LCA1OTc0NSwgCi0gICAgNTk3NTAsIDU5NzU1LCAyMTUwMiwgNTk3NTksIDU5NzY1LCA1OTc3MSwgNTk3NzYsIDU5NzgxLCA1OTc4NSwgNTk3OTEsIAotICAgIDU5Nzk3LCAzMTE5NiwgODI2LCAzMzQwNiwgMzQzMDQsIDM0MzEwLCA1OTgwMiwgNTk4MDYsIDU5ODEwLCA1OTgxMywgCi0gICAgNTk4MjYsIDU5ODMyLCA1OTgzNiwgNTk4MzksIDU5ODQ0LCAzMTQ5NSwgNTk4NDgsIDI4ODc4LCAxOTQ0NiwgNTk4NTQsIAotICAgIDQ1MDIsIDQ1MTAsIDc0NzIsIDU5ODU3LCA1OTg2MiwgNTk4NjcsIDU5ODcyLCA1OTg3NywgNTk4ODIsIDU5ODg3LCA1OTg5MiwgCi0gICAgNTk4OTcsIDU5OTAyLCA1OTkwOCwgNTk5MTMsIDU5OTE4LCA1OTkyNCwgNTk5MjksIDU5OTM0LCA1OTkzOSwgNTk5NDQsIAotICAgIDU5OTQ5LCA1OTk1NCwgNTk5NjAsIDU5OTY1LCA1OTk3MSwgNTk5NzYsIDU5OTgxLCA1OTk4NiwgNTk5OTEsIDU5OTk2LCAKLSAgICA2MDAwMSwgNjAwMDYsIDYwMDExLCA2MDAxNiwgNjAwMjEsIDYwMDI3LCA2MDAzMiwgNjAwMzcsIDYwMDQyLCA2MDA0NywgCi0gICAgNjAwNTIsIDYwMDU3LCA2MDA2MywgNjAwNjgsIDYwMDczLCA2MDA3OCwgNjAwODMsIDYwMDg4LCA2MDA5MywgNjAwOTgsIAotICAgIDYwMTAzLCA2MDEwOCwgNjAxMTQsIDYwMTE5LCA2MDEyNCwgNjAxMjksIDYwMTM0LCA2MDE0MCwgNjAxNDYsIDYwMTUxLCAKLSAgICA2MDE1NywgNjAxNjIsIDYwMTY3LCA2MDE3MiwgNjAxNzcsIDYwMTgyLCAxNDc2LCAyNDAsIDYwMTg3LCA2MDE5MSwgNjAxOTUsIAotICAgIDYwMTk5LCAyMzE1NywgNjAyMDMsIDYwMjA3LCA2MDIxMiwgNjAyMTYsIDYwMjIxLCA2MDIyNSwgNjAyMjksIDYwMjMzLCAKLSAgICA2MDIzOCwgNjAyNDIsIDExNjgxLCA2MDI0NywgNjAyNTEsIDYwMjU4LCAxMzQ0NCwgNjAyNjcsIDYwMjc2LCA2MDI4MCwgCi0gICAgNjAyODUsIDYwMjkwLCA2MDI5NCwgMjI5NjAsIDI5NTcsIDYwMjk4LCA2MDMwNCwgNjAzMTMsIDYwMzIxLCA2MDMyNywgCi0gICAgNjAzMzksIDYwMzUxLCA2MDM1NSwgNjAzNjAsIDYwMzY0LCA2MDM3MCwgNjAzNzYsIDYwMzgxLCA2MDM5MSwgNjA0MDEsIAotICAgIDYwNDA3LCA2MDQxMiwgNjA0MTYsIDYwNDIxLCA2MDQyNywgNjA0MzYsIDYwNDQ1LCA2MDQ1MywgMTM3OTgsIDYwNDU3LCAKLSAgICA2MDQ2NiwgNjA0NzQsIDYwNDg2LCA2MDQ5NywgNjA1MDgsIDYwNTE3LCA2MDUyMSwgNjA1MzAsIDYwNTQwLCA2MDU0NiwgCi0gICAgNjA1NTEsIDYwNTU3LCA2MDU2MiwgOTgsIDI4NzcyLCA2MDU3MywgMjQyMjgsIDI0MjM4LCA2MDU3OSwgNjA1ODYsIDYwNTkyLCAKLSAgICA2MDU5NiwgNjA2MDYsIDYwNjE3LCA2MDYyNSwgNjA2MzQsIDYwNjM5LCA2MDY0NCwgNjA2NDgsIDE1NTA0LCA2MDY1NiwgCi0gICAgNjA2NjAsIDYwNjY2LCA2MDY3NiwgNjA2ODMsIDYwNjg5LCAzMjUwOCwgMTE2MiwgNjA2OTUsIDYwNjk4LCA2MDcwMiwgCi0gICAgNjA3MTIsIDYwNzE4LCA2MDcyNSwgMTE2MTgsIDYwNzMyLCA2MDczOCwgNjA3NDcsIDYwNzU2LCA2MDc2MiwgNjA3NjgsIAotICAgIDYwNzc0LCA2MDc3OSwgNjA3ODYsIDYwNzkzLCA2MDc5OSwgNjA4MTIsIDYwODIxLCA2MDgzMCwgNjA4MzUsIDYwODM5LCAKLSAgICA2MDg0NSwgNjA4NTIsIDYwODU5LCA2MDg2NiwgNjA4NzMsIDYwODgwLCA2MDg4NSwgNjA4ODksIDYwODkzLCA2MDg5NiwgCi0gICAgNjA5MDYsIDYwOTEwLCA2MDkyMiwgNjA5MzEsIDYwOTM1LCA2MDk0MCwgNjA5NDQsIDYwOTUwLCA2MDk1NSwgNjA5NjIsIAotICAgIDYwOTcxLCA2MDk3OSwgNjA5ODcsIDYwOTkyLCA2MDk5NiwgNjEwMDEsIDYxMDA2LCA2MTAxNiwgNjEwMjQsIDYxMDI5LCAKLSAgICA2MTAzMywgNjEwMzcsIDYxMDQzLCA2MTA1NSwgNjEwNjMsIDYxMDczLCA2MTA4MCwgNjEwODYsIDYxMDkxLCA2MTA5NSwgCi0gICAgNjEwOTksIDYxMTAzLCA2MTExMiwgNjExMjEsIDYxMTMwLCA2MTEzNiwgNjExNDIsIDYxMTQ4LCA2MTE1MywgNjExNjAsIAotICAgIDYxMTY2LCA2MTE3NCwgNjExODEsIDEwNzcyLCA2MTE4NywgNjExOTMsIDYxMTk3LCAxMjUyMywgNjEyMDEsIDYxMjA2LCAKLSAgICA2MTIxNiwgNjEyMjUsIDYxMjMxLCA2MTIzNywgNjEyNDUsIDYxMjUyLCA2MTI1NiwgNjEyNjAsIDYxMjY2LCA2MTI3NCwgCi0gICAgNjEyODEsIDYxMjg3LCA2MTI5OCwgNjEzMDIsIDYxMzA2LCA2MTMxMCwgNjEzMTMsIDYxMzE5LCA2MTMyNCwgNjEzMjgsIAotICAgIDYxMzMyLCA2MTM0MSwgNjEzNDksIDYxMzU2LCA2MTM2MiwgNjEzNjksIDIyMDg3LCAzNjMzNywgNjEzNzQsIDYxMzgyLCAKLSAgICA2MTM4NiwgNjEzODksIDYxMzk3LCA2MTQwNCwgNjE0MTAsIDYxNDE5LCA2MTQyNywgNjE0MzMsIDYxNDM4LCA2MTQ0MiwgCi0gICAgNjE0NDcsIDYxNDUxLCA2MTQ1NSwgNjE0NjAsIDYxNDY5LCA2MTQ3MywgNjE0ODAsIDYxNDg3LCA2MTQ5MywgNjE1MDEsIAotICAgIDYxNTA3LCA2MTUxOCwgNjE1MjYsIDYxNTMyLCAyMDc1MywgNjE1NDEsIDYxNTQ4LCA2MTU1NSwgNjE1NjIsIDYxNTY5LCAKLSAgICA2MTU3NiwgMzkyODgsIDExNDU2LCA2MTU4MywgNjE1OTAsIDYxNTk1LCAzMjU0NCwgMzc0ODQsIDYxNjAxLCA2MTYwNiwgCi0gICAgNjE2MTEsIDYxNjE3LCA2MTYyMywgNjE2MjksIDYxNjM0LCA2MTYzOSwgNjE2NDQsIDYxNjQ5LCA2MTY1NSwgNjE2NjAsIAotICAgIDYxNjY2LCA2MTY3MSwgNjE2NzcsIDYxNjgyLCA2MTY4NywgNjE2OTIsIDYxNjk3LCA2MTcwMiwgNjE3MDcsIDYxNzEyLCAKLSAgICA2MTcxOCwgNjE3MjMsIDYxNzI5LCA2MTczNCwgNjE3MzksIDYxNzQ0LCA2MTc0OSwgNjE3NTQsIDYxNzU5LCA2MTc2NSwgCi0gICAgNjE3NzAsIDYxNzc1LCA2MTc4MCwgNjE3ODUsIDYxNzkwLCA2MTc5NSwgNjE4MDAsIDYxODA1LCA2MTgxMCwgNjE4MTUsIAotICAgIDYxODIxLCA2MTgyNiwgNjE4MzEsIDYxODM2LCA2MTg0MSwgNjE4NDYsIDYxODUxLCA2MTg1NiwgNjE4NjEsIDYxODY3LCAKLSAgICA2MTg3MiwgNjE4NzcsIDYxODgyLCA2MTg4NywgNjE4OTIsIDYxODk3LCA2MTkwMiwgNjE5MDcsIDYxOTEyLCA2MTkxNywgCi0gICAgNjE5MjIsIDYxOTI3LCA2MTkzMywgMTc5NywgMjI0LCAzNDk5MywgNjE5MzgsIDYxOTQxLCA2MTk0NiwgNjE5NTAsIDYxOTUzLCAKLSAgICA2MTk1OCwgNjA5ODMsIDYxOTY5LCA2MTk3OSwgNjE5ODYsIDYyMDAyLCA2MjAxMSwgNjIwMjEsIDYyMDMxLCA2MjAzOSwgCi0gICAgNjIwNDcsIDYyMDUxLCA2MjA1NCwgNjIwNjEsIDYyMDY3LCA2MjA3OCwgNjIwOTAsIDYyMTAxLCA2MjExMCwgNjIxMTcsIAotICAgIDEyODYsIDIxMzkxLCA2MjEyNywgMjU0NCwgNjIxMzEsIDYyMTQwLCAxMTI3LCAxNTQ3NywgMzU2MjIsIDYyMTQ4LCA2MjE1NiwgCi0gICAgNjIxNzAsIDYyMTgzLCA2MjE4NywgNjIxOTIsIDYyMTk3LCA2MjIwMiwgNjIyMDgsIDYyMjE0LCA2MjIxOSwgNjk1NywgCi0gICAgNjIyMjQsIDYyMjMyLCA5MzkzLCA2MjIzNywgNjIyNDMsIDE2ODQsIDk0MDUsIDcyMywgNjIyNTIsIDYyMjYxLCA2MjI3MSwgCi0gICAgMjQ5OTIsIDYyMjgwLCA2MjI4NiwgMTUwNjMsIDYyMjkyLCA2MjI5NiwgMzg4MSwgOTczNiwgNjIzMDIsIDU4MDA3LCAKLSAgICA2MjMwOSwgMzkwNSwgMTg0LCAxMjQ0NCwgNjIzMTUsIDYyMzI3LCA2MjMzMSwgNjIzMzcsIDI1Njg0LCA2MjM0MSwgOTcyNCwgCi0gICAgMjY4NCwgNCwgNjIzNDYsIDYyMzU2LCA2MjM2MiwgNjIzNzMsIDYyMzgwLCA2MjM4NiwgNjIzOTIsIDYyNDAwLCA2MjQwNywgCi0gICAgNjI0MTMsIDYyNDIzLCA2MjQzMywgNjI0NDMsIDEyOTgsIDYyNDUyLCA2MjQ1OCwgMjcwNywgMjcxMywgNjk1NCwgMjIxOCwgCi0gICAgNjI0NjIsIDYyNDY2LCA2MjQ3NSwgNjI0ODMsIDYyNDk0LCA2MjUwMiwgNjI1MTAsIDYyNTE2LCA2MjUyMSwgNjI1MzIsIAotICAgIDYyNTQzLCA2MjU1MSwgNjI1NTcsIDgwNjEsIDYyNTYyLCA2MjU3MCwgNjI1NzQsIDYyNTc4LCA2MjU5MCwgMjYwNjAsIAotICAgIDYyNTk3LCA2MjYwNywgNjI2MTMsIDYyNjE5LCA4MTYzLCA2MjYyOSwgNjI2NDAsIDYyNjUwLCA2MjY1OSwgNjI2NjMsIAotICAgIDYyNjcwLCAxMTI5LCAyNTM3LCA2MjY4MCwgNjI2ODUsIDYyNjkzLCA2MjcwMSwgNjI3MTIsIDYyNzE5LCA2MjczMywgCi0gICAgMTIzNjksIDM3OSwgNjI3NDMsIDYyNzQ3LCA2Mjc1NiwgNjI3NjQsIDYyNzcwLCA2Mjc4NCwgNjI3OTEsIDYyNzk3LCAKLSAgICA2MjgwNiwgNjI4MTMsIDYyODIzLCA2MjgzMSwgMzc0MCwgMTg5LCA2MjgzOSwgNjI4NTAsIDYyODU0LCA2Mjg2NiwgMjU4ODIsIAotICAgIDE1NiwgNjI4NzIsIDYyODc3LCA2Mjg4MSwgNjI4ODgsIDYyODk0LCA2MjkwMiwgNjI5MDksIDcyMjYsIDYyOTE2LCA2MjkyNSwgCi0gICAgNjI5MzMsIDM4MDYsIDYyOTQ2LCAxNTEwOSwgNjI5NTAsIDI3NTIsIDQyOCwgNjI5NTUsIDYyOTY4LCA2Mjk3MywgMTc5NiwgCi0gICAgNjQ3LCA2Mjk3NywgMzgxMiwgNjI5ODUsIDYyOTkxLCA5NjMsIDYzMDAxLCA2MzAxMCwgNjMwMTUsIDEzMTc4LCAxMzE4NSwgCi0gICAgNDI2MjAsIDYzMDE5LCAzNzUwLCAxMTM1MCwgNjMwMjcsIDYzMDM0LCAyMTYxOCwgNjMwMzgsIDYzMDQ1LCA2MzA1MSwgCi0gICAgNjMwNTYsIDYzMDYxLCAxMzE5OCwgMzU0LCA2MzA2NiwgNjMwNzgsIDYzMDg0LCA2MzA5MiwgMjc2NCwgMTcxNiwgNjMxMDAsIAotICAgIDYzMTAyLCA2MzEwNywgNjMxMTIsIDYzMTE3LCA2MzEyMywgNjMxMjgsIDYzMTMzLCA2MzEzOCwgNjMxNDMsIDYzMTQ4LCAKLSAgICA2MzE1MywgNjMxNTksIDYzMTY0LCA2MzE2OSwgNjMxNzQsIDYzMTc5LCA2MzE4NCwgNjMxODksIDYzMTk0LCA2MzE5OSwgCi0gICAgNjMyMDUsIDYzMjEwLCA2MzIxNSwgNjMyMjAsIDYzMjI2LCA2MzIzMSwgNjMyMzcsIDYzMjQyLCA2MzI0NywgNjMyNTIsIAotICAgIDYzMjU3LCA2MzI2MiwgNjMyNjcsIDYzMjcyLCA2MzI3OCwgNjMyODMsIDYzMjg5LCA2MzI5NCwgNjMyOTksIDYzMzA0LCAKLSAgICA2MzMwOSwgNjMzMTQsIDYzMzE5LCA2MzMyNCwgNjMzMjksIDYzMzM1LCA2MzM0MCwgNjMzNDUsIDYzMzQ5LCA2MzM1MywgCi0gICAgNjMzNTgsIDYzMzYyLCA2MzM2NywgNjMzNzIsIDYzMzc4LCA2MzM4MywgNjMzODcsIDYzMzkyLCA2MzM5NiwgNjMzOTksIAotICAgIDYzNDAxLCA2MzQwNSwgNjM0MDgsIDYzNDEzLCA2MzQxNywgNjM0MjEsIDYzNDI1LCA2MzQyOSwgNjM0MzgsIDYzNDQyLCAKLSAgICAzMDI4OCwgNjM0NDUsIDMwMjkzLCA2MzQ1MiwgNjM0NTcsIDMwMjk4LCA2MzQ2NiwgNjM0NzUsIDMwMzA0LCA2MzQ4MCwgCi0gICAgMzAzMDksIDYzNDg5LCA2MzQ5NCwgOTkxNCwgNjM0OTgsIDYzNTAzLCA2MzUwOCwgMzAzMTQsIDYzNTEyLCAzNzY1MCwgCi0gICAgNjM1MTYsIDYzNTE5LCA2MzUyMywgNjYzOCwgNjM1MjksIDYzNTM0LCA2MzUzOCwgMzYzMywgMzAzMTksIDYzNTQxLCAKLSAgICA2MzU0NSwgNjM1NDgsIDYzNTUzLCA2MzU1NywgNjM1NjMsIDYzNTcxLCA2MzU4NCwgNjM1OTMsIDYzNTk5LCA2MzYwNCwgCi0gICAgNjM2MTAsIDYzNjE0LCA2MzYyMCwgNjM2MjgsIDYzNjMzLCA2MzY0MCwgNjM2NDYsIDYzNjU0LCA2MzY2MywgNjM2NzEsIAotICAgIDMwMzIyLCA2MzY3OCwgNjM2ODgsIDYzNjk3LCA2MzcxMCwgNjM3MTUsIDYzNzIwLCA2MzcyOSwgNjM3MzUsIDYzNzQyLCAKLSAgICA2Mzc1MywgNjM3NjUsIDYzNzcyLCA2Mzc4MSwgNjM3OTAsIDYzNzk5LCA2MzgwNiwgNjM4MTIsIDYzODE5LCA2MzgyNywgCi0gICAgNjM4MzQsIDYzODQyLCA2Mzg1MSwgNjM4NTksIDYzODY2LCA2Mzg3NCwgNjM4ODMsIDYzODkxLCA2MzkwMCwgNjM5MTAsIAotICAgIDYzOTE5LCA2MzkyNywgNjM5MzQsIDYzOTQyLCA2Mzk1MSwgNjM5NTksIDYzOTY4LCA2Mzk3OCwgNjM5ODcsIDYzOTk1LCAKLSAgICA2NDAwNCwgNjQwMTQsIDY0MDIzLCA2NDAzMywgNjQwNDQsIDY0MDU0LCA2NDA2MywgNjQwNzEsIDY0MDc4LCA2NDA4NiwgCi0gICAgNjQwOTUsIDY0MTAzLCA2NDExMiwgNjQxMjIsIDY0MTMxLCA2NDEzOSwgNjQxNDgsIDY0MTU4LCA2NDE2NywgNjQxNzcsIAotICAgIDY0MTg4LCA2NDE5OCwgNjQyMDcsIDY0MjE1LCA2NDIyNCwgNjQyMzQsIDY0MjQzLCA2NDI1MywgNjQyNjQsIDY0Mjc0LCAKLSAgICA2NDI4MywgNjQyOTMsIDY0MzA0LCA2NDMxNCwgNjQzMjUsIDY0MzM3LCA2NDM0OCwgNjQzNTgsIDY0MzY3LCA2NDM3NSwgCi0gICAgNjQzODIsIDY0MzkwLCA2NDM5OSwgNjQ0MDcsIDY0NDE2LCA2NDQyNiwgNjQ0MzUsIDY0NDQzLCA2NDQ1MiwgNjQ0NjIsIAotICAgIDY0NDcxLCA2NDQ4MSwgNjQ0OTIsIDY0NTAyLCA2NDUxMSwgNjQ1MTksIDY0NTI4LCA2NDUzOCwgNjQ1NDcsIDY0NTU3LCAKLSAgICA2NDU2OCwgNjQ1NzgsIDY0NTg3LCA2NDU5NywgNjQ2MDgsIDY0NjE4LCA2NDYyOSwgNjQ2NDEsIDY0NjUyLCA2NDY2MiwgCi0gICAgNjQ2NzEsIDY0Njc5LCA2NDY4OCwgNjQ2OTgsIDY0NzA3LCA2NDcxNywgNjQ3MjgsIDY0NzM4LCA2NDc0NywgNjQ3NTcsIAotICAgIDY0NzY4LCA2NDc3OCwgNjQ3ODksIDY0ODAxLCA2NDgxMiwgNjQ4MjIsIDY0ODMxLCA2NDg0MSwgNjQ4NTIsIDY0ODYyLCAKLSAgICA2NDg3MywgNjQ4ODUsIDY0ODk2LCA2NDkwNiwgNjQ5MTcsIDY0OTI5LCA2NDk0MCwgNjQ5NTIsIDY0OTY1LCA2NDk3NywgCi0gICAgNjQ5ODgsIDY0OTk4LCA2NTAwNywgNjUwMTUsIDY1MDIyLCA2NTAzMCwgNjUwMzksIDY1MDQ3LCA2NTA1NiwgNjUwNjYsIAotICAgIDY1MDc1LCA2NTA4MywgNjUwOTIsIDY1MTAyLCA2NTExMSwgNjUxMjEsIDY1MTMyLCA2NTE0MiwgNjUxNTEsIDY1MTU5LCAKLSAgICA2NTE2OCwgNjUxNzgsIDY1MTg3LCA2NTE5NywgNjUyMDgsIDY1MjE4LCA2NTIyNywgNjUyMzcsIDY1MjQ4LCA2NTI1OCwgCi0gICAgNjUyNjksIDY1MjgxLCA2NTI5MiwgNjUzMDIsIDY1MzExLCA2NTMxOSwgNjUzMjgsIDY1MzM4LCA2NTM0NywgNjUzNTcsIAotICAgIDY1MzY4LCA2NTM3OCwgNjUzODcsIDY1Mzk3LCA2NTQwOCwgNjU0MTgsIDY1NDI5LCA2NTQ0MSwgNjU0NTIsIDY1NDYyLCAKLSAgICA2NTQ3MSwgNjU0ODEsIDY1NDkyLCA2NTUwMiwgNjU1MTMsIDY1NTI1LCA2NTUzNiwgNjU1NDYsIDY1NTU3LCA2NTU2OSwgCi0gICAgNjU1ODAsIDY1NTkyLCA2NTYwNSwgNjU2MTcsIDY1NjI4LCA2NTYzOCwgNjU2NDcsIDY1NjU1LCA2NTY2NCwgNjU2NzQsIAotICAgIDY1NjgzLCA2NTY5MywgNjU3MDQsIDY1NzE0LCA2NTcyMywgNjU3MzMsIDY1NzQ0LCA2NTc1NCwgNjU3NjUsIDY1Nzc3LCAKLSAgICA2NTc4OCwgNjU3OTgsIDY1ODA3LCA2NTgxNywgNjU4MjgsIDY1ODM4LCA2NTg0OSwgNjU4NjEsIDY1ODcyLCA2NTg4MiwgCi0gICAgNjU4OTMsIDY1OTA1LCA2NTkxNiwgNjU5MjgsIDY1OTQxLCA2NTk1MywgNjU5NjQsIDY1OTc0LCA2NTk4MywgNjU5OTMsIAotICAgIDY2MDA0LCA2NjAxNCwgNjYwMjUsIDY2MDM3LCA2NjA0OCwgNjYwNTgsIDY2MDY5LCA2NjA4MSwgNjYwOTIsIDY2MTA0LCAKLSAgICA2NjExNywgNjYxMjksIDY2MTQwLCA2NjE1MCwgNjYxNjEsIDY2MTczLCA2NjE4NCwgNjYxOTYsIDY2MjA5LCA2NjIyMSwgCi0gICAgNjYyMzIsIDY2MjQ0LCA2NjI1NywgNjYyNjksIDY2MjgyLCA2NjI5NiwgNjYzMDksIDY2MzIxLCA2NjMzMiwgNjYzNDIsIAotICAgIDY2MzUxLCA2NjM1OSwgNjYzNjYsIDY2MzcxLCA2NDg5LCA2NjM3OCwgMzAzMzIsIDY2MzgzLCA2NjM4OCwgMzAzMzcsIAotICAgIDY2Mzk0LCAxOTEwMCwgMzAzNDIsIDY2Mzk5LCA2NjQwNSwgNjY0MTMsIDY2NDE5LCA2NjQyNSwgNjY0MzIsIDY2NDM5LCAKLSAgICA2NjQ0NCwgNjY0NDgsIDY2NDUxLCA2NjQ1NSwgNjY0NjQsIDY2NDcwLCA2NjQ4MiwgNjY0OTMsIDY2NDk3LCAzMDE5LCAKLSAgICA2NDY0LCA2NjUwMiwgNjY1MDUsIDY2NTA3LCA2NjUxMSwgNjY1MTUsIDY2NTE5LCAyMzkyNywgNjY1MjQsIDY2NTI4LCAKLSAgICA2NjUzMSwgNjY1MzYsIDY2NTQwLCA2NjU0NywgNjY1NTMsIDY2NTU3LCA2NjU2MSwgNjY1NjQsIDMwMzU5LCA2NjU2OSwgCi0gICAgNjY1NzYsIDY2NTg1LCA2NjU5MywgNjY2MDQsIDY2NjEyLCA2NjYyMCwgNjY2MjcsIDY2NjM0LCA2NjY0MCwgNjY2NTEsIAotICAgIDMwMzY0LCA2NjY1NiwgNjY2NjcsIDY2Njc5LCA2NjY4NywgNjY2OTgsIDY2NzA3LCA2NjcxOCwgNjY3MjMsIDY2NzMxLCAKLSAgICAyNTEwLCA2NjczNiwgMzIwMDIsIDY2NzQ5LCA2Njc1MywgNjY3NjUsIDY2NzczLCA2Njc3OCwgNjY3ODYsIDE1NjY0LCAKLSAgICA2Njc5NywgNjY4MDMsIDY2ODEwLCA2NjgxOCwgNjY4MjQsIDMwMzc0LCA2NjgyOSwgMzgzMSwgNTU2MDUsIDY2ODM2LCAKLSAgICA2NjgzOSwgNjY4NDcsIDY2ODYwLCA2Njg3MywgNjY4ODYsIDY2ODk5LCA2NjkwNiwgNjY5MTcsIDY2OTI2LCAzOTEwNSwgCi0gICAgMzkxMTAsIDY2OTMxLCA2NjkzNSwgNjY5NDMsIDY2OTUwLCA2Njk1OSwgNjY5NjcsIDY2OTczLCA2Njk4MiwgNjY5OTAsIAotICAgIDY2OTk4LCA2NzAwMiwgNjcwMTEsIDY3MDIwLCA2NzAzMCwgNjcwNDMsIDY3MDU2LCA2NzA2NiwgMzAzNzksIDY3MDcyLCAKLSAgICA2NzA3OSwgNjcwODUsIDMwMzg1LCA2NzA5MCwgNjcwOTMsIDY3MDk3LCA2NzEwNSwgNjcxMTQsIDM4ODQzLCA2NzEyMiwgCi0gICAgNjcxMzEsIDY3MTM5LCA2NzE0NiwgNjcxNTQsIDY3MTY0LCA2NzE3MywgNjcxODIsIDY3MTkxLCA2NzE5OSwgNjcyMTAsIAotICAgIDY3MjIwLCA3NzMzLCAxOTcxNSwgNjcyMjksIDY3MjM0LCA2NzIzOSwgNjcyNDMsIDY3MjQ3LCA2NzI1MiwgNjcyNTgsIAotICAgIDY3MjYzLCA2NzI2OCwgNjcyNzQsIDY3Mjc5LCA2NzI4NCwgMTk2ODAsIDY3Mjg5LCA2NzI5NiwgNjczMDQsIDY3MzEyLCAKLSAgICA2NzMxNywgNjczMjQsIDY3MzMxLCA2NzMzNSwgNjczMzksIDY3MzQ3LCA2NzM1NSwgMzA0MDIsIDY3MzYxLCA2NzM2NywgCi0gICAgNjczNzksIDY3Mzg1LCA2NzM4OSwgNjczOTYsIDY3NDAxLCA2NzQxMiwgNjc0MjIsIDY3NDMyLCA2NzQ0NCwgNjc0NTAsIAotICAgIDY3NDYwLCA2NzQ3MCwgMzA0MjksIDY3NDc5LCA2NzQ4OCwgNjc0OTQsIDY3NTA2LCA2NzUxNywgNjc1MjQsIDY3NTI5LCAKLSAgICA2NzUzMywgNjc1NDEsIDY3NTQ3LCA2NzU1MiwgNjc1NTcsIDY3NTY0LCA2NzU3MiwgNjc1ODQsIDY3NTk0LCA2NzYwMywgCi0gICAgNjc2MTIsIDY3NjE5LCAzMTg2NiwgMjE5MDYsIDY3NjI1LCA2NzYzMCwgNjc2MzQsIDY3NjM4LCA2NzY0MywgNjc2NDksIAotICAgIDY3NjYwLCA2NzY3MywgNjc2NzgsIDY3Njg1LCAzMDQzNCwgNjc2OTAsIDY3NzAyLCA2NzcxMSwgNjc3MjEsIDY3NzMyLCAKLSAgICA2Nzc0NSwgNjc3NTIsIDY3NzYxLCA2Nzc3MCwgNjc3NzgsIDY3NzgzLCA2Nzc4OSwgMTQ2NSwgNjc3OTQsIDY3Nzk5LCAKLSAgICA2NzgwNCwgNjc4MDksIDY3ODE1LCA2NzgyMCwgNjc4MjUsIDY3ODMxLCA2NzgzNywgNjc4NDIsIDY3ODQ2LCA2Nzg1MSwgCi0gICAgNjc4NTYsIDY3ODYxLCA1NjExMSwgNjc4NjYsIDY3ODcxLCA2Nzg3NiwgNjc4ODEsIDY3ODg3LCA2Nzg5MywgNjc4OTgsIAotICAgIDY3OTAyLCA2NzkwNywgNjc5MTIsIDY3OTE3LCA2NzkyMywgNjc5MjgsIDY3OTM0LCA2NzkzOSwgNjc5NDQsIDY3OTQ5LCAKLSAgICA2Nzk1NCwgNjc5NTgsIDY3OTY0LCA2Nzk2OSwgNjc5NzgsIDY3OTgzLCA2Nzk4OCwgNjc5OTMsIDY3OTk4LCA2ODAwMiwgCi0gICAgNjgwMDksIDY4MDE1LCAxNTMyNiwgMTUzMzMsIDQyODc1LCA2ODAyMCwgNjc5NzAsIDY4MDIyLCA2ODAzMiwgMzA0NDMsIAotICAgIDY4MDM1LCA2ODA0NCwgNjgwNTAsIDQ2MTcsIDMwNDQ4LCA2ODA1NCwgNjgwNjAsIDY4MDY2LCA2ODA3MSwgNjgwNzUsIAotICAgIDY4MDgyLCA2ODA4NywgNjgwOTcsIDY4MTA2LCA2ODExMCwgNjgxMTYsIDY4MTIyLCA2ODEyOCwgNjgxMzIsIDY4MTQwLCAKLSAgICA2ODE0NywgNjgxNTUsIDY4MTYzLCAzMDQ1MywgNjgxNzAsIDY4MTczLCA2ODE4MCwgNjgxODYsIDY4MTkxLCA2ODE5NSwgCi0gICAgNjgyMDEsIDY4MjA4LCA2ODIxMywgNjgyMTcsIDY4MjI2LCA2ODIzNCwgNjgyNDAsIDY4MjQ1LCAzMDQ1OCwgNjgyNTIsIAotICAgIDY4MjU5LCA2ODI2NSwgNjgyNzAsIDY4Mjc2LCA2ODI4MywgNjgyODksIDE5NDUzLCAyNTQwOCwgNjgyOTUsIDY4MzAwLCAKLSAgICA2ODMwNiwgNjgzMTgsIDY4MDAzLCA2ODAxMCwgNjgzMjgsIDY4MzMzLCA2ODM0MCwgNjgzNDcsIDY4MzUzLCA2ODM2NCwgCi0gICAgNjgzNjksIDc1MDIsIDY4Mzc3LCA2ODM4MCwgNjgzODYsIDY4MzkwLCA2ODM5NCwgNjgzOTcsIDY4NDAzLCAzMDIwNywgCi0gICAgNDY1NiwgOTEzLCAxMTczMSwgNjg0MTAsIDY4NDE2LCA2ODQyMiwgNjg0MjgsIDY4NDM0LCA2ODQ0MCwgNjg0NDYsIDY4NDUyLCAKLSAgICA2ODQ1OCwgNjg0NjMsIDY4NDY4LCA2ODQ3MywgNjg0NzgsIDY4NDgzLCA2ODQ4OCwgNjg0OTMsIDY4NDk4LCA2ODUwMywgCi0gICAgNjg1MDgsIDY4NTEzLCA2ODUxOCwgNjg1MjMsIDY4NTI5LCA2ODUzNCwgNjg1MzksIDY4NTQ1LCA2ODU1MCwgNjg1NTUsIAotICAgIDY4NTYxLCA2ODU2NywgNjg1NzMsIDY4NTc5LCA2ODU4NSwgNjg1OTEsIDY4NTk3LCA2ODYwMywgNjg2MDksIDY4NjE0LCAKLSAgICA2ODYxOSwgNjg2MjUsIDY4NjMwLCA2ODYzNSwgNjg2NDEsIDY4NjQ2LCA2ODY1MSwgNjg2NTYsIDY4NjYxLCA2ODY2NiwgCi0gICAgNjg2NzEsIDY4Njc2LCA2ODY4MSwgNjg2ODYsIDY4NjkxLCA2ODY5NiwgNjg3MDEsIDY4NzA3LCA2ODcxMiwgNjg3MTcsIAotICAgIDY4NzIyLCA2ODcyOCwgNjg3MzMsIDY4NzM4LCA2ODc0MywgNjg3NDgsIDY4NzU0LCA2ODc1OSwgNjg3NjQsIDY4NzY5LCAKLSAgICA2ODc3NCwgNjg3NzksIDY4Nzg0LCA2ODc4OSwgNjg3OTQsIDY4Nzk5LCA2ODgwNCwgNjg4MDksIDY4ODE0LCA2ODgxOSwgCi0gICAgNjg4MjQsIDY4ODI5LCA2ODgzNCwgNjg4MzksIDY4ODQ0LCA2ODg0OSwgNjg4NTUsIDY4ODYwLCA2ODg2NSwgNjg4NzAsIAotICAgIDY4ODc1LCA2ODg4MCwgNjg4ODUsIDY4ODkwLCAxODI3LCAxNDMsIDY4ODk1LCA2ODg5OSwgNjg5MDMsIDY4OTA4LCA2ODkxNiwgCi0gICAgNjg5MjAsIDY4OTI3LCA2ODkzNSwgNjg5MzksIDY4OTUyLCA2ODk2MCwgNjg5NjQsIDY4OTY3LCA2ODk3MiwgNjg5NzYsIAotICAgIDY4OTgxLCA2ODk4NSwgNjg5OTMsIDY4OTk3LCAxOTEwOCwgNjkwMDIsIDU4MjcwLCA2OTAwNiwgNjkwMDksIDY5MDE3LCAKLSAgICA2OTAyNSwgNjkwMzMsIDY5MDM4LCA2OTA0NSwgNjkwNTEsIDY5MDU3LCA2OTA2MiwgNjkwNjcsIDY5MDc1LCA2MjE3NSwgCi0gICAgNjkwODIsIDY5MDg3LCA2OTA5MiwgNjkwOTYsIDk5ODEsIDY5MTAwLCA2OTEwNSwgNjkxMTAsIDY5MTE0LCA2OTExNywgCi0gICAgNjkxMjMsIDY5MTI3LCA2OTEzNywgNjkxNDYsIDY5MTQ5LCA2OTE1NiwgNjkxNjksIDY5MTc1LCA2OTE4MywgNjkxOTQsIAotICAgIDY5MjA1LCA2OTIxNiwgNjkyMjcsIDY5MjM2LCA2OTI0MiwgNjkyNTEsIDY5MjU5LCA2OTI2OSwgNjkyODIsIDY5Mjg5LCAKLSAgICA2OTMwMCwgNjkzMDYsIDY5MzExLCA2OTMxNiwgNjkzMjIsIDY5MzI4LCA2OTMzOCwgNjkzNDcsIDY3NjkyLCA2OTM1NSwgCi0gICAgNjkzNjEsIDY5MzY5LCA2OTM3NSwgNjkzODMsIDY5Mzg3LCA2OTM5MSwgNjkzOTQsIDY5NDAwLCA2OTQwNiwgNjk0MTQsIAotICAgIDY5NDI2LCA2OTQzOCwgNjk0NDUsIDY5NDQ5LCA2OTQ2MCwgNjk0NjgsIDY5NDc1LCA2OTQ4NywgNjk0OTUsIDY5NTAzLCAKLSAgICA2OTUxMCwgNjk1MTYsIDY5NTI2LCA2OTUzNSwgNjk1NDAsIDY5NTUwLCA2OTU1OSwgMzgxODQsIDY5NTY2LCA2OTU3MCwgCi0gICAgNjk1NzUsIDY5NTgzLCA2OTU5MCwgNjk1OTYsIDY5NjAwLCA2OTYxMCwgNjk2MjEsIDY5NjI5LCA2OTYzNiwgNjk2NDgsIAotICAgIDY5NjYwLCA2OTY2OSwgNjY3MzksIDY5Njc2LCA2OTY4NywgNjk3MDEsIDY5NzA5LCA2OTcxOSwgNjk3MjYsIDY5NzM0LCAKLSAgICA2OTc0NiwgNjk3NTUsIDY5NzYzLCA2OTc3MywgNjk3ODIsIDY5NzkzLCA2OTgwNSwgNjk4MTQsIDY5ODI0LCA2OTgzMSwgCi0gICAgNjk4NDAsIDY5ODU1LCA2OTg2NSwgNjk4NzQsIDY5ODgyLCA2OTg5NSwgNjk5MTAsIDY5OTE0LCA2OTkyMywgNjk5MzUsIAotICAgIDY5OTQ2LCA2OTk1NywgNjk5NjgsIDY5OTc4LCA2OTk4OSwgNjk5OTcsIDcwMDAzLCA3MDAxMywgNzAwMTksIDI2OTIzLCAKLSAgICA3MDAyNCwgNzAwMzAsIDcwMDM1LCA3MDA0MiwgODA3NSwgMTU2ODQsIDcwMDQ4LCA3MDA1NywgNzAwNjIsIDcwMDY2LCAKLSAgICA3MDA3MywgNzAwNzksIDcwMDg0LCA3MDA5MiwgNzAxMDAsIDcwMTA0LCA3MDEwNywgNzAxMTAsIDcwMTEyLCA3MDExOSwgCi0gICAgNzAxMjUsIDcwMTM2LCA3MDE0MSwgNzAxNDUsIDcwMTUyLCA3MDE1OCwgNzAxNjMsIDcwMTcxLCA2MjY0MiwgNjI2NTIsIAotICAgIDcwMTc3LCA3MDE4NCwgNzAxOTQsIDg5NzEsIDcwMjAxLCA3MDIwNiwgMjcxMTMsIDcwMjE1LCA3MDIyMCwgNzAyMjcsIAotICAgIDcwMjM3LCA3MDI0NSwgNzAyNTMsIDcwMjYyLCA3MDI2OCwgNzAyNzQsIDcwMjgxLCA3MDI4OCwgNzAyOTMsIDcwMjk3LCAKLSAgICA3MDMwNSwgNzAzMTAsIDcwMzE1LCA3MDMyMywgNzAzMzAsIDcwMzM1LCA3MDM0MSwgNzAzNDQsIDcwMzQ4LCA3MDM1NywgCi0gICAgNjg5NDcsIDcwMzY2LCA3MDM3MCwgNzAzNzYsIDcwMzg3LCA3MDM5NywgMTU2OTMsIDcwNDA4LCA3MDQxNiwgMTU3MDUsIAotICAgIDcwNDIzLCA3MDQyNywgNzA0MzYsIDI1Mjk0LCA3MDQ0MywgNzA0NDcsIDcwNDUyLCA3MDQ2OSwgNzA0ODEsIDg5MjUsIAotICAgIDcwNDkzLCA3MDQ5OCwgNzA1MDMsIDcwNTA4LCA3MDUxMiwgNzA1MTUsIDcwNTIwLCA3MDUyNSwgNzA1MzEsIDcwNTM2LCAKLSAgICA0MzI0LCAxOTE4MSwgNzA1NDEsIDcwNTQ2LCA3MDU1MiwgNzA1NTksIDcwNTY0LCA3MDU2OSwgNzA1NzUsIDcwNTgxLCAKLSAgICA3MDU4NywgNzA1OTIsIDcwNTk4LCA3MDYwMiwgNzA2MTYsIDcwNjI0LCA3MDYzMiwgNzA2MzgsIDcwNjQzLCA3MDY1MCwgCi0gICAgNzA2NjAsIDcwNjY5LCA3MDY3NCwgNzA2NzksIDcwNjg3LCA3MDY5MiwgNzA2OTgsIDcwNzAzLCA3MDcxMiwgNTcxNTQsIAotICAgIDcwNzE3LCA3MDcyMCwgNzA3MzgsIDcwNzU3LCA3MDc3MCwgNzA3ODQsIDcwODAwLCA3MDgwNywgNzA4MTQsIDcwODIwLCAKLSAgICA3MDgyNywgNzA4MzIsIDcwODM4LCA3MDg0NCwgNzA4NTIsIDcwODU4LCA3MDg2MywgNzA4NjgsIDcwODg0LCA4OTM4LCAKLSAgICA3MDg5OCwgNzA5MDUsIDcwOTEzLCA3MDkxOSwgNzA5MjMsIDcwOTI2LCA3MDkzMSwgNzA5MzYsIDcwOTQzLCA3MDk0OCwgCi0gICAgNzA5NTcsIDcwOTYyLCA3MDk2OCwgNzA5NzcsIDcwOTg2LCA3MDk5MSwgNzA5OTUsIDcxMDAzLCAxMDAwNSwgNzEwMTIsIAotICAgIDcxMDIwLCA3MTAyNSwgNzEwMzEsIDEwMDE2LCA3MTAzNiwgNzEwMzksIDcxMDQ0LCA3MTA1NCwgNzEwNjMsIDcxMDY4LCAKLSAgICA3MTA3NCwgNzEwNzksIDcxMDg3LCA3MTA5NCwgNzExMDUsIDcxMTE1LCA3MTEyMCwgNjIxMDMsIDcxMTI1LCA3MTEzMSwgCi0gICAgNzExMzYsIDcxMTQzLCA3MTE1MiwgNzExNjAsIDcxMTY2LCA3MTE3MywgNzExNzksIDcxMTgzLCAxNTE2MSwgMjk5MywgCi0gICAgNzExODgsIDcxMTkyLCA3MTE5OCwgNzEyMDcsIDcxMjEzLCA3MTIyMCwgNzEyMjQsIDcxMjQ1LCA3MTI2NywgNzEyODMsIAotICAgIDcxMzAwLCA3MTMxOSwgNzEzMjgsIDcxMzM4LCA3MTM0NSwgNzEzNTIsIDI1MTgxLCA3MTM1OCwgNzEzNjIsIDcxMzcwLCAKLSAgICA3MTM4MiwgNzEzODgsIDcxMzk2LCA3MTQwMCwgNzE0MDgsIDcxNDE1LCA3MTQxOSwgNzE0MjUsIDcxNDMxLCA3MTQzNiwgCi0gICAgMzQ5OCwgMzkzMDUsIDcxNDQyLCA3MTQ0NiwgNzE0NTAsIDcxNDU0LCA3MTQ1OSwgNzE0NjQsIDcxNDY5LCA3MTQ3NSwgCi0gICAgNzE0ODEsIDcxNDg3LCA3MTQ5NCwgNzE1MDAsIDcxNTA3LCA3MTUxMywgNzE1MTksIDcxNTI0LCA3MTUzMCwgNzE1MzUsIAotICAgIDcxNTQwLCA3MTU0NCwgNzE1NDksIDM5MzIwLCA3MTU1MywgNzE1NTgsIDcxNTY2LCA3MTU3MCwgNzE1NzUsIDcxNTgyLCAKLSAgICA3MTU5MSwgNzE1OTcsIDcxNjA0LCA3MTYwOCwgNzE2MTEsIDcxNjE4LCA3MTYyNywgNzE2MzIsIDcxNjM2LCA3MTY0NCwgCi0gICAgNzE2NTMsIDcxNjU3LCA3MTY2NSwgNzE2NzEsIDcxNjc2LCA3MTY4MSwgNzE2ODcsIDcxNjkzLCA3MTY5OCwgNzE3MDIsIAotICAgIDcxNzA4LCA3MTcxMywgNzE3MTcsIDcxNzIxLCA3MTcyNCwgNzE3MjksIDcxNzM3LCA3MTc0NywgNzE3NTIsIDM2ODY1LCAKLSAgICA3MTc2MCwgNzE3NzIsIDcxNzc2LCA3MTc4MiwgNzE3OTQsIDcxODA1LCA3MTgxMiwgNzE4MTgsIDcxODI1LCA3MTgzNywgCi0gICAgNzE4NDQsIDcxODUwLCAxOTI1NSwgNzE4NTQsIDcxODYwLCA3MTg2NywgNzE4NzMsIDcxODc5LCA3MTg4NCwgNzE4ODksIAotICAgIDcxODk0LCA3MTkwMywgNTQ5MSwgNzE5MDgsIDE0NjI3LCA3MTkxNCwgNzE5MTgsIDcxOTI2LCA3MTkzNSwgNzE5MzksIAotICAgIDcxOTQ2LCA3MTk1NSwgNzE5NjgsIDcxOTc0LCA3MTU0NSwgMjc5NjIsIDcxOTc5LCA3MTk4MSwgNzE5ODYsIDcxOTkxLCAKLSAgICA3MTk5NiwgNzIwMDEsIDcyMDA2LCA3MjAxMSwgNzIwMTYsIDcyMDIxLCA3MjAyNiwgNzIwMzEsIDcyMDM2LCA3MjA0MSwgCi0gICAgNzIwNDYsIDcyMDUxLCA3MjA1NywgNzIwNjIsIDcyMDY3LCA3MjA3MiwgNzIwNzcsIDcyMDgyLCA3MjA4NywgNzIwOTIsIAotICAgIDcyMDk3LCA3MjEwMywgNzIxMDksIDcyMTE1LCA3MjEyMCwgNzIxMjUsIDcyMTM3LCA3MjE0MiwgMTgzMywgNjcsIDcyMTQ3LCAKLSAgICA3MjE1MiwgMzA0ODUsIDMwNDkwLCAzMDQ5NSwgMzA1MDEsIDMwNTA2LCA3MjE1NiwgMzA1MTEsIDIwMjI2LCA3MjE3OCwgCi0gICAgNzIxODIsIDcyMTg2LCA3MjE5MSwgNzIxOTUsIDMwNTE1LCA3MjE5OSwgNzIyMDcsIDMwNTIwLCA3MjIxNCwgNzIyMTcsIAotICAgIDcyMjIyLCA3MjIyNiwgNzkxMCwgNzIyMzUsIDMwNTI1LCAyMDA5MiwgNzIyMzgsIDcyMjQyLCAxMzk2LCA3MjI0NywgCi0gICAgMzA1MzYsIDcyMjUwLCA3MjI1NSwgMjM3MjAsIDIzNzMwLCAzMjk0MCwgNzIyNjAsIDcyMjY1LCA3MjI3MCwgNzIyNzUsIAotICAgIDcyMjgxLCA3MjI4NiwgNzIyOTUsIDcyMzAwLCA3MjMwNywgNzIzMTMsIDcyMzE4LCA3MjMyMywgNzIzMjgsIDcyMzM4LCAKLSAgICA3MjM0NywgNzIzNTIsIDcyMzYwLCA3MjM2NCwgNzIzNzIsIDMwMzUwLCAxMTg4LCA3MjM3OSwgNzIzODUsIDcyMzkwLCAKLSAgICA3MjM5NSwgNzI0MDAsIDcyNDA2LCA3MjQxMSwgNzI0MTgsIDcyNDI0LCA3MjQyOSwgNzI0MzcsIDcyNDQ3LCA3MjQ1NywgCi0gICAgNzI0NjMsIDcyNDY4LCA3MjQ3NCwgMTU3MTUsIDcyNDgxLCAzMzc0NSwgNzI0OTQsIDcyNDk5LCA3MjUwNSwgNzI1MTgsIAotICAgIDcyNTI0LCA3MjUyOCwgNzI1MzcsIDcyNTQ0LCA3MjU1MCwgNzI1NTgsIDcyNTY3LCA3MjU3NCwgNzI1ODAsIDcyNTgzLCAKLSAgICAyMzg2MSwgNzI1ODcsIDcyNTk0LCA3MjYwMCwgNzI2MDgsIDcyNjEzLCAyMjAzNSwgNzI2MTksIDcyNjIyLCA3MjYzMCwgCi0gICAgNzI2MzgsIDcyNjUyLCA3MjY1OSwgNzI2NjUsIDcyNjcyLCA3MjY3OCwgMzA1NTAsIDcyNjgyLCA3MjY4OSwgNzI2OTcsIAotICAgIDcyNzA1LCAzMDU1NSwgNzI3MTEsIDcyNzE3LCA3MjcyMiwgNzI3MzIsIDcyNzM4LCA3Mjc0NywgMjg2NzcsIDMyNDE1LCAKLSAgICA3Mjc1NSwgNzI3NjAsIDcyNzY1LCA3Mjc3MCwgNzI3NzQsIDEzMTcwLCAzNjg3OCwgNzI3NzksIDcyNzg0LCAzMDU2MCwgCi0gICAgNTk1NTQsIDcyNzg4LCA3Mjc5MywgNzI3OTcsIDcyODA2LCA3MjgxNCwgNzI4MjAsIDcyODI1LCA3MjgzMSwgNzI4MzgsIAotICAgIDcyODQ0LCA3Mjg0OSwgNzI4NTQsIDcyODYzLCA3Mjg3NSwgNzI4OTAsIDMwODAxLCA3Mjg5NiwgMTQ3NDYsIDMwNTY0LCAKLSAgICA3MjkwMCwgNzI5MDcsIDIyMTQ1LCA3MjkxMywgNzI5MjAsIDcyOTI5LCA3MjkzNiwgNzI5NDUsIDcyOTUxLCA3Mjk1NiwgCi0gICAgNzI5NjQsIDcyOTcwLCAzMDU3NCwgNzI5NzUsIDcyOTg0LCA3MTgwMCwgNzI5OTMsIDczMDAwLCA3MzAwNiwgNzMwMTIsIAotICAgIDczMDIyLCA3MzAzMCwgNzMwMzcsIDczMDQxLCAzMDU3OSwgNzMwNDQsIDMwNTg1LCAzMDU5MSwgNzMwNDksIDczMDU3LCAKLSAgICA3MzA2NywgNzMwNzYsIDczMDg0LCA3MzA5MSwgNzMxMDEsIDMwNTk2LCA3MzEwNSwgNzMxMDcsIDczMTExLCA3MzExNiwgCi0gICAgNzMxMjAsIDczMTI0LCA3MzEzMCwgNzMxMzUsIDczMTM5LCA3MzE1MCwgNzMxNTUsIDI5OTgsIDczMTU5LCA3MzE2NiwgCi0gICAgNzMxNzAsIDczMTc5LCA3MzE4NywgNzMxOTQsIDczMTk5LCA3MzIwNCwgNTk2MDAsIDczMjA4LCA3MzIxMSwgNzMyMTcsIAotICAgIDczMjI1LCA3MzIzMSwgNzMyMzUsIDczMjQwLCA3MzI0NywgNzMyNTIsIDczMjU4LCAzMjQ0NiwgNzMyNjMsIDczMjY2LCAKLSAgICA3MzI3MSwgNzMyNzUsIDczMjgwLCA3MzI4NSwgNzMyODksIDczMjk3LCAyMzczOSwgMjM3NDgsIDczMzAzLCA3MzMwOSwgCi0gICAgNzMzMTUsIDczMzIwLCA3MzMyNCwgNzMzMjcsIDczMzM3LCA3MzM0NiwgNzMzNTEsIDczMzU3LCA3MzM2NCwgNzMzNzAsIAotICAgIDczMzc0LCA3MzM4MiwgNzMzODcsIDMyNDUyLCA3MzM5MSwgNzMzOTksIDczNDA1LCA3MzQxMiwgNzM0MTcsIDczNDIxLCAKLSAgICA3MzQyNiwgNTU3OTEsIDMyNDU4LCA3MzQzMiwgNzM0MzcsIDczNDQxLCA3MzQ0NiwgNzM0NTEsIDczNDU2LCA3MzQ2MCwgCi0gICAgNzM0NjUsIDczNDcwLCA3MzQ3NiwgNzM0ODEsIDczNDg2LCA3MzQ5MiwgNzM0OTgsIDczNTAzLCA3MzUwNywgNzM1MTIsIAotICAgIDczNTE3LCA3MzUyMiwgNzM1MjYsIDIyMTQ0LCA3MzUzMSwgNzM1MzYsIDczNTQyLCA3MzU0OCwgNzM1NTQsIDczNTU5LCAKLSAgICA3MzU2MywgNzM1NjgsIDczNTczLCA3MzU3OCwgNzM1ODIsIDczNTg3LCA3MzU5MiwgNzM1OTcsIDczNjAyLCA3MzYwNiwgCi0gICAgMzA2MDAsIDczNjE0LCA3MzYxOCwgNzM2MjYsIDczNjM0LCA3MzY0NSwgNzM2NTAsIDczNjU0LCAyMDQ5NywgNzM2NTksIAotICAgIDczNjY1LCA3MzY3NSwgNzM2ODIsIDczNjg3LCA3MzY5NiwgNzM3MDEsIDczNzA1LCA3MzcxMCwgNzM3MTgsIDczNzI2LCAKLSAgICA3MzczMywgNjIzMjEsIDczNzM5LCA3Mzc0NywgNzM3NTQsIDczNzY1LCA3Mzc3MSwgNzM3NzcsIDMwNjEwLCA3Mzc4MCwgCi0gICAgNzM3ODcsIDczNzk1LCA3MzgwMCwgMzcwNjksIDczODA0LCA3MzgwOSwgNzM4MTYsIDczODIxLCA3Mzg5LCA3MzgyNSwgCi0gICAgNzM4MzMsIDczODQwLCA3Mzg0NywgNzM4NTMsIDczODY3LCA2MDYyOSwgNzM4NzUsIDczODgxLCA3Mzg4NSwgNzM4ODgsIAotICAgIDczODk2LCA3MzkwMywgNzM5MDgsIDczOTIxLCA3MzkyOCwgNzM5MzUsIDczOTQwLCA1ODE3NCwgNzM5NDUsIDczOTQ4LCAKLSAgICA3Mzk1NSwgNzM5NjEsIDczOTY1LCA3Mzk3MywgNzM5ODMsIDczOTkzLCA3NDAwMiwgNzQwMTAsIDc0MDIxLCA3NDAyNiwgCi0gICAgNzQwMzAsIDc0MDM1LCA3NDAzOSwgMzMwNzEsIDE5NTA5LCAzMzA4MCwgNzQwNDcsIDc0MDUyLCA3NDA1NywgNzQwNjIsIAotICAgIDc0MDY3LCA3NDA3MiwgNzQwNzcsIDc0MDgxLCA3NDA4NiwgNzQwOTEsIDc0MDk2LCA3NDEwMSwgNzQxMDYsIDc0MTExLCAKLSAgICA3NDExNSwgNzQxMjAsIDc0MTI1LCA3NDEyOSwgNzQxMzMsIDc0MTM3LCA3NDE0MSwgNzQxNDYsIDc0MTUxLCA3NDE1NSwgCi0gICAgNzQxNjAsIDc0MTY0LCA3NDE2OCwgNzQxNzMsIDc0MTc4LCA3NDE4MywgNzQxODgsIDc0MTkyLCA3NDE5NywgNzQyMDIsIAotICAgIDc0MjA2LCA3NDIxMSwgNzQyMTYsIDc0MjIxLCA3NDIyNiwgNzQyMzEsIDc0MjM2LCA3NDI0MSwgNzQyNDYsIDc0MjUxLCAKLSAgICA3NDI1NiwgNzQyNjEsIDc0MjY2LCA3NDI3MSwgNzQyNzYsIDc0MjgxLCA3NDI4NiwgNzQyOTEsIDc0Mjk2LCA3NDMwMSwgCi0gICAgNzQzMDYsIDc0MzEwLCA3NDMxNSwgNzQzMjAsIDc0MzI1LCA3NDMzMCwgNzQzMzUsIDc0MzQwLCA3NDM0NSwgNzQzNTAsIAotICAgIDc0MzU1LCA3NDM2MCwgNzQzNjUsIDc0MzY5LCA3NDM3NCwgNzQzNzgsIDc0MzgzLCA3NDM4OCwgNzQzOTMsIDc0Mzk4LCAKLSAgICA3NDQwMywgNzQ0MDgsIDc0NDEzLCA3NDQxOCwgNzQ0MjMsIDc0NDI3LCA3NDQzMSwgNzQ0MzYsIDc0NDQxLCA3NDQ0NSwgCi0gICAgNzQ0NTAsIDc0NDU1LCA3NDQ1OSwgNzQ0NjQsIDc0NDY5LCA3NDQ3NCwgNzQ0NzksIDc0NDgzLCA3NDQ4OCwgNzQ0OTMsIAotICAgIDc0NDk3LCA3NDUwMiwgNzQ1MDYsIDc0NTEwLCA3NDUxNCwgNzQ1MTgsIDc0NTIzLCA3NDUyNywgNzQ1MzEsIDc0NTM1LCAKLSAgICA3NDUzOSwgNzQ1NDMsIDc0NTQ3LCA3NDU1MSwgNzQ1NTUsIDc0NTU5LCA3NDU2NCwgNzQ1NjksIDc0NTc0LCA3NDU3OSwgCi0gICAgNzQ1ODQsIDc0NTg5LCA3NDU5NCwgNzQ1OTksIDc0NjA0LCA3NDYwOSwgNzQ2MTMsIDc0NjE3LCA3NDYyMSwgNzQ2MjUsIAotICAgIDc0NjI5LCA3NDYzMywgNzQ2MzgsIDc0NjQyLCA3NDY0NywgNzQ2NTEsIDc0NjU2LCA3NDY2MSwgNzQ2NjUsIDc0NjY5LCAKLSAgICA3NDY3NCwgNzQ2NzgsIDc0NjgyLCA3NDY4NiwgNzQ2OTAsIDc0Njk0LCA3NDY5OCwgNzQ3MDIsIDc0NzA2LCA3NDcxMCwgCi0gICAgNzQ3MTQsIDc0NzE4LCA3NDcyMiwgNzQ3MjYsIDc0NzMwLCA3NDczNSwgNzQ3NDAsIDc0NzQ0LCA3NDc0OCwgNzQ3NTIsIAotICAgIDc0NzU2LCA3NDc2MCwgNzQ3NjQsIDc0NzY5LCA3NDc3MywgNzQ3NzcsIDc0NzgxLCA3NDc4NSwgNzQ3ODksIDc0NzkzLCAKLSAgICA3NDc5OCwgNzQ4MDIsIDc0ODA3LCA3NDgxMSwgNzQ4MTUsIDc0ODE5LCA3NDgyMywgNzQ4MjcsIDc0ODMxLCA3NDgzNSwgCi0gICAgNzQ4MzksIDc0ODQzLCA3NDg0NywgNzQ4NTEsIDc0ODU2LCA3NDg2MCwgNzQ4NjQsIDc0ODY4LCA3NDg3MiwgNzQ4NzYsIAotICAgIDc0ODgwLCA3NDg4NCwgNzQ4ODgsIDc0ODkyLCA3NDg5NiwgNzQ5MDAsIDc0OTA1LCA3NDkwOSwgNzQ5MTMsIDc0OTE4LCAKLSAgICA3NDkyMywgNzQ5MjcsIDc0OTMxLCA3NDkzNSwgNzQ5MzksIDc0OTQzLCA3NDk0NywgNzQ5NTEsIDc0OTU1LCA3NDk2MCwgCi0gICAgNzQ5NjQsIDc0OTY5LCA3NDk3MywgNzQ5NzgsIDc0OTgyLCA3NDk4NywgNzQ5OTEsIDc0OTk3LCA3NTAwMiwgNzUwMDYsIAotICAgIDc1MDExLCA3NTAxNSwgNzUwMjAsIDc1MDI0LCA3NTAyOSwgNzUwMzMsIDc1MDM4LCAxNDg0LCA3NTA0MiwgMjc3OCwgMTcyMiwgCi0gICAgMTcyNywgNzUwNDYsIDc1MDUwLCAyNzgyLCA3NTA1NCwgMTM2NSwgNzUwNTksIDEzMzEsIDc1MDYzLCAyNzk0LCA3NTA2NywgCi0gICAgNzUwNzQsIDc1MDgxLCA3NTA5NSwgMjc5OCwgNTU4OSwgNzUxMDQsIDc1MTEyLCA3NTExOSwgNzUxMzAsIDc1MTM5LCAKLSAgICA3NTE0NiwgNzUxNTgsIDc1MTcxLCA3NTE4NCwgNzUxOTUsIDc1MjAwLCA3NTIwNywgNzUyMTksIDc1MjIzLCAzOTE4LCAKLSAgICAxMDA4MiwgNzUyMzMsIDc1MjM4LCA3NTI0NywgNzUyNTcsIDI4MDIsIDc1MjYyLCA3NTI2NiwgNzUyNzEsIDc1Mjc4LCAKLSAgICA3NTI4NCwgNzUyOTIsIDc1MzA0LCAxMzM2LCAxMTM1MSwgNzUzMTQsIDc1MzE4LCA3NTMyNCwgNzUzMzgsIDc1MzUwLCAKLSAgICA3NTM2MiwgNzUzNzIsIDc1MzgxLCA3NTM5MCwgNzUzOTksIDc1NDA3LCA3NTQxOCwgNzU0MjYsIDM5NjgsIDc1NDM2LCAKLSAgICA3NTQ0NSwgNzU0NTEsIDc1NDY2LCA3NTQ3MywgNzU0NzksIDMzMTk3LCA3NTQ4NCwgMjgyNiwgMTEzNTUsIDc1NDg4LCAKLSAgICA3NTQ5NSwgNzMzNCwgNzU1MDQsIDI4MzEsIDMwMTA1LCA3NTUxMCwgNTc5MjMsIDc1NTE3LCA3NTUyMywgNzU1MzQsIAotICAgIDc1NTQwLCA3NTU0NywgNzU1NTMsIDc1NTYxLCA3NTU2OCwgNzU1NzQsIDc1NTg0LCA3NTU5MywgNzU2MDQsIDc1NjExLCAKLSAgICA3NTYxNywgNzU2MjcsIDc1NjM1LCA3NTY0MSwgNzU2NTYsIDc1NjYyLCA3NTY2NywgNzU2NzQsIDc1Njc3LCA3NTY4MywgCi0gICAgNzU2OTAsIDc1Njk2LCA3NTcwNCwgNzU3MTMsIDc1NzIxLCA3NTcyNywgNzU3MzYsIDM4ODQ1LCA3NTc1MCwgNzU3NTUsIAotICAgIDEzMDA3LCA3NTc2MSwgNzU3NzQsIDc1NzgzLCA3NTc5MSwgNzU3OTgsIDc1ODAyLCA3NTgwNiwgNzU4MDksIDc1ODE2LCAKLSAgICA3NTgyMywgNzU4MzEsIDc1ODM5LCA3NTg0OCwgNzU4NTYsIDEyOTQzLCA3NTg2NCwgNzU4NjksIDc1ODczLCA3NTg4NSwgCi0gICAgNzU4OTIsIDc1OTAxLCA3ODAsIDc1OTExLCA3NTkyMCwgNzU5MzEsIDI4NDcsIDc1OTM1LCA3NTkzOSwgNzU5NDUsIDc1OTU4LCAKLSAgICA3NTk3MCwgNzU5ODAsIDc1OTg5LCAyNDMzMSwgNzYwMDEsIDc2MDA5LCA3NjAxOCwgNzYwMjksIDc2MDQwLCA3NjA1MCwgCi0gICAgNzYwNjAsIDc2MDY5LCA3NjA3NywgOTY1NywgNzYwODQsIDc2MDg4LCA3NjA5MywgNzYwOTgsIDc2MTA0LCAxMzQxLCAKLSAgICAxMDE1MywgNzYxMTEsIDc2MTIyLCA3NjEzMSwgNzYxMzksIDc2MTQ4LCA3NjE1NiwgNzYxNzIsIDc2MTgzLCA3NjE5MiwgCi0gICAgNzYyMDAsIDc2MjEyLCA3NjIyMywgNzYyMzksIDc2MjQ5LCA3NjI3MCwgNzYyODMsIDc2MjkxLCA3NjI5OCwgMTMxMTgsIAotICAgIDc2MzExLCA3NjMxNiwgNzYzMjIsIDQzODYsIDc2MzI4LCA3NjMzMSwgNzYzMzgsIDc2MzQ4LCA2NjA3LCA3NjM1NSwgCi0gICAgNzYzNjAsIDc2MzY1LCA3NjM3MywgNzYzODEsIDgxMjMsIDgxMzIsIDc2Mzg2LCA3NjM5NywgNzY0MDIsIDc2NDA4LCAyODU1LCAKLSAgICAyODYwLCA3NjQxNCwgOTIyNCwgNzY0MjAsIDc2NDI3LCA3NjQzNCwgNzY0NDcsIDIyMDUsIDUwLCA3NjQ1MiwgNzY0NTcsIAotICAgIDc2NDY3LCA3NjQ3MywgNzY0ODIsIDc2NDkwLCA3NjUwMCwgNzY1MDQsIDc2NTA5LCA3NjUxMywgNzY1MjUsIDI4ODMsIAotICAgIDc2NTMzLCA3NjU0MSwgNzY1NDYsIDc2NTU3LCA3NjU2OCwgNzY1NzcsIDc2NTgyLCA3NjU4OCwgNzY1OTMsIDc2NjAzLCAKLSAgICA3NjYxMywgNzY2MTgsIDc2NjI0LCA3NjYyOSwgNzY2MzgsIDE5NTYyLCA3NjY0MiwgNDA0NSwgMTIsIDc2NjQ3LCA3NjY1NiwgCi0gICAgNzY2NjMsIDc2NjcwLCA3NjY3NiwgNzY2ODIsIDgyNywgNzY2ODcsIDc2NjkyLCA1ODI0MCwgNzY2OTcsIDc2NzAyLCAKLSAgICA3NjcwOCwgNzY3MTYsIDc2NzIxLCA3NjcyOCwgNzY3MzQsIDc2NzM5LCAzNTU3MywgMzg3NDMsIDc2NzQ1LCAyODg3LCAzMiwgCi0gICAgNzY3NTUsIDc2NzY4LCA3Njc3MywgNzY3ODEsIDc2Nzg2LCA3Njc5MiwgMjkwOSwgMjYyMzQsIDc2Nzk3LCA3NjgwNSwgCi0gICAgNzY4MTIsIDc2ODE3LCA1NjAzMywgNTkyMjEsIDc2ODI2LCAxNjY3LCAxNzc2LCA3NjgzMSwgNzY4MzYsIDc2ODQzLCAxNzgwLCAKLSAgICAyNDIsIDc2ODUwLCA3Njg1NiwgNzY4NjEsIDc2ODY4LCAxNzg0LCA3Njg3MywgNzY4NzksIDc2ODg0LCA3Njg5NiwgNDU5NywgCi0gICAgNzY5MDYsIDE3OTEsIDc2OTEyLCA3NjkxNywgNzY5MjQsIDc2OTMxLCA3Njk0NiwgNzY5NTMsIDc2OTY0LCA3Njk3MiwgCi0gICAgMjU3MiwgNzY5NzYsIDc2OTg4LCA3Njk5MywgNzY5OTcsIDc3MDAzLCAyNjA1OSwgMjIxMCwgNzcwMDcsIDc3MDE4LCAKLSAgICA3NzAyMiwgNzcwMjYsIDc3MDMyLCA3NzAzNiwgNzcwNDUsIDc3MDQ5LCA3NzA2MCwgNzcwNjQsIDIyNTYsIDI5OTQ0LCAKLSAgICA3NzA2OCwgNzcwNzgsIDMwMTgsIDc3MzgsIDc3MDg2LCA3NzA5MSwgNzcwOTUsIDc3MTA0LCA3NzExMSwgNzcxMTcsIDI5ODgsIAotICAgIDE1MzQzLCA3NzEyMSwgNzcxMzQsIDc3MTUyLCA3NzE1NywgNzcxNjUsIDc3MTczLCA3NzE4MywgMTE0NTcsIDc3MTk1LCAKLSAgICA3NzIwOCwgNzcyMTUsIDc3MjIyLCA3NzIzOCwgNzcyNDUsIDc3MjUxLCAxMDI0LCA3NzI1OCwgNzcyNjUsIDc3Mjc1LCAKLSAgICA3NzI4NCwgNzcyOTYsIDM5NzA5LCA3NzMwNCwgMzAwMiwgMTAzNTAsIDc3MzA3LCA3NzMxNSwgNzczMTksIDMwMDYsIAotICAgIDc3MzIzLCAxOTM1OCwgMTAzNjYsIDM2ODQsIDc3MzI3LCAzMDEyLCA3NzMzMSwgNzczNDEsIDc3MzQ3LCA3NzM1MywgCi0gICAgNzczNTksIDc3MzY1LCA3NzM3MSwgNzczNzcsIDc3MzgzLCA3NzM4OSwgNzczOTUsIDc3NDAxLCA3NzQwNywgNzc0MTMsIAotICAgIDc3NDE5LCA3NzQyNSwgNzc0MzEsIDc3NDM3LCA3NzQ0MywgNzc0NDksIDc3NDU1LCA3NzQ2MSwgNzc0NjcsIDc3NDczLCAKLSAgICA3NzQ3OSwgNzc0ODUsIDc3NDkxLCA3NzQ5OCwgNzc1MDUsIDc3NTExLCA3NzUxNywgNzc1MjMsIDc3NTI5LCA3NzUzNSwgCi0gICAgNzc1NDEsIDEzNDYsIDE0MjcwLCAxMDM4OCwgNzc1NDcsIDc3NTUyLCA3NzU1NywgNzc1NjIsIDc3NTY3LCA3NzU3MiwgCi0gICAgNzc1NzcsIDc3NTgyLCA3NzU4NywgNzc1OTIsIDc3NTk3LCA3NzYwMiwgNzc2MDcsIDc3NjEyLCA3NzYxNywgNzc2MjIsIAotICAgIDc3NjI3LCA3NzYzMiwgNzc2MzcsIDc3NjQyLCA3NzY0NywgNzc2NTIsIDc3NjU3LCA3NzY2MiwgNzc2NjcsIDc3NjcyLCAKLSAgICA3NzY3OCwgNzc2ODMsIDc3Njg4LCA3NzY5NCwgNzc2OTksIDc3NzA1LCA3NzcxMCwgNzc3MTUsIDc3NzIxLCA3NzcyNiwgCi0gICAgNzc3MzEsIDc3NzM2LCA3Nzc0MSwgNzc3NDYsIDc3NzUxLCA3Nzc1NiwgNzc3NjEsIDc3MzQyLCA3NzM0OCwgNzczNTQsIAotICAgIDc3MzYwLCA3NzM2NiwgNzczNzIsIDc3Mzc4LCA3NzM4NCwgNzczOTAsIDc3Mzk2LCA3NzQwMiwgNzc0MDgsIDc3NDE0LCAKLSAgICA3NzQyMCwgNzc0MjYsIDc3NzY3LCA3NzQzMiwgNzc0MzgsIDc3NDQ0LCA3Nzc3MywgNzc0NTAsIDc3NDU2LCA3NzQ2MiwgCi0gICAgNzc0NjgsIDc3NDc0LCA3NzQ4MCwgNzc0ODYsIDc3NTA2LCA3Nzc3OSwgNzc3ODUsIDc3NTEyLCA3Nzc5MSwgNzc1MTgsIAotICAgIDc3NTI0LCA3NzUzMCwgNzc1MzYsIDc3NTQyLCAzMDMzLCAzMDM4LCA3Nzc5NywgNzc4MDIsIDc3ODA1LCA3NzgxMSwgCi0gICAgNzc4MTcsIDc3ODI0LCA3NzgyOSwgNzc4MzQsIDIyNjEsIAorICAgIDAsIDAsIDYsIDEwLCAxOCwgMjMsIDI3LCAzNCwgMzksIDQxLCA0NCwgNTAsIDYyLCA3MCwgODAsIDkzLCAxMDIsIDEwOCwgCisgICAgMTEzLCAxMjEsIDEzMCwgMTM1LCAxNDAsIDE0MywgMTQ3LCAxNTMsIDE1OCwgMTYzLCAxNzEsIDE3OCwgMTg2LCAxOTEsIAorICAgIDE5NCwgMjAwLCAyMDgsIDIxNSwgMjI1LCAyMzAsIDIzNywgMjQ2LCAyNDksIDI1NCwgMjU3LCAyNjMsIDI2NywgMjcyLCAKKyAgICAyODEsIDI4OCwgMjk1LCAzMDEsIDMxMCwgMzE1LCAzMjEsIDMyNywgMzM1LCAxNDQsIDM0MSwgMzQ5LCAzNTAsIDM1OCwgCisgICAgMzYxLCAzNjcsIDM2OSwgMzc1LCAzODIsIDM4NCwgMzkxLCAzOTUsIDQwMywgNDEwLCA0MTUsIDQxNywgNDIyLCA0MjksIAorICAgIDQzMSwgMjk5LCA0MzcsIDQzOSwgNDQ0LCA0NDksIDQ1MiwgNDU3LCA0NjMsIDQ3MCwgNDc5LCA0ODksIDQ5NCwgNDk4LCAKKyAgICA1MDUsIDUxOCwgNTIyLCA1MzEsIDUzOCwgNTQ1LCA1NDgsIDU1NCwgNTU4LCA1NjIsIDU3MiwgNTgwLCA1ODgsIDU5NiwgCisgICAgNjA1LCA2MTMsIDYxOCwgNjE5LCA2MjMsIDYzMSwgNjM4LCA2NDgsIDY1OSwgNjYzLCA2NjYsIDY3MCwgNjczLCAzNDgsIAorICAgIDY3OCwgNjg3LCA2OTEsIDY5NywgNzAzLCA3MDUsIDcwOCwgNzExLCA3MTQsIDcxOCwgNzIyLCA3MzEsIDczOSwgNzQ0LCAKKyAgICA3NDcsIDc1MSwgNzU3LCA3NjQsIDc3MSwgNzc2LCA3ODUsIDc5NCwgODAxLCA4MDUsIDgxOCwgODI3LCA4MzUsIDg0MSwgCisgICAgNTU3LCA4NTAsIDg2MCwgODY3LCA4NzMsIDg3OSwgODg2LCA4OTQsIDg5OCwgNzQ5LCA5MDYsIDkxNSwgNTAzLCA5MjMsIAorICAgIDkyOCwgOTM0LCAxNywgOTQzLCA5NDgsIDk1MSwgOTU1LCA5NTksIDk2NiwgOTY5LCA5NzYsIDk4MCwgOTg4LCA5OTIsIAorICAgIDEwMDAsIDEwMDQsIDEwMDcsIDEwMTQsIDEwMjEsIDE5MiwgMTAyNCwgMTAyOSwgMTAzOSwgMTA0OCwgMTA1NSwgMTA2MSwgCisgICAgMTA2OSwgMTA3MiwgMTA3NywgMTA4MywgMTA5MSwgMTA5NywgMTEwMiwgMTEwNSwgMTEwOCwgMTExLCAxMTEzLCAxMTE3LCAKKyAgICAxMTIzLCAxMTI5LCAxMTMyLCAxMTM4LCAxMTQyLCAxMTQ3LCAxMTUzLCAxMTU4LCAxMTY4LCAxMTcyLCAxMTc1LCAxMTc4LCAKKyAgICAxMTg3LCAxMTkxLCAxMTk0LCAxMTk5LCAxMjA0LCAxMjEwLCAxMjE1LCAxMjIwLCAxMjI1LCAxMjI5LCAxMjM0LCAxMjQwLCAKKyAgICAxMjQ1LCAxMjUwLCAxMjU0LCAxMjYwLCAxMjY1LCAxMjcwLCAxMjc1LCAxMjc5LCAxMjg0LCAxMjg5LCAxMjk0LCAxMzAwLCAKKyAgICAxMzA2LCAxMzEyLCAxMzE3LCAxMzIxLCAxMzI2LCAxMzMxLCAxMzM2LCAxMzQwLCAxMzQ1LCAxMzUwLCAxMzU1LCAxMzYwLCAKKyAgICAxMTk1LCAxMjAwLCAxMjA1LCAxMjExLCAxMjE2LCAxMzY0LCAxMjI2LCAxMzcwLCAxMzc1LCAxMzgwLCAxMzg3LCAxMzkxLCAKKyAgICAxNDAwLCAxMjMwLCAxNDA0LCAxMjM1LCAxMjQxLCAxMjQ2LCAxNDA4LCAxNDEzLCAxNDE4LCAxNDIyLCAxNDI2LCAxNDMyLCAKKyAgICAxNDM2LCAxMjUxLCAxNDM5LCAxMjYxLCAxNDQ0LCAxNDQ4LCAxMjY2LCAxNDU0LCAxMjcxLCAxNDU4LCAxNDYyLCAxMjc2LCAKKyAgICAxNDY2LCAxNDcxLCAxNDc1LCAxNDc4LCAxNDgyLCAxMjgwLCAxMjg1LCAxNDg3LCAxMjkwLCAxNDkzLCAxNDk5LCAxNTA1LCAKKyAgICAxNTExLCAxMjk1LCAxMzA3LCAxMzEzLCAxNTE1LCAxNTE5LCAxNTIzLCAxNTI2LCAxMzE4LCAxNTMwLCAxNTMyLCAxNTM3LCAKKyAgICAxNTQyLCAxNTQ4LCAxNTUzLCAxNTU4LCAxNTYyLCAxNTY3LCAxNTcyLCAxNTc3LCAxNTgyLCAxNTg4LCAxNTkzLCAxNTk4LCAKKyAgICAxNjA0LCAxNjEwLCAxNjE1LCAxNjE5LCAxNjI0LCAxNjI5LCAxNjM0LCAxNjM5LCAxNjQzLCAxNjUxLCAxNjU1LCAxNjYwLCAKKyAgICAxNjY1LCAxNjcwLCAxNjc1LCAxNjc5LCAxNjgyLCAxNjg3LCAxNjkyLCAxNjk3LCAxNzAyLCAxNzA4LCAxNzEzLCAxNzE3LCAKKyAgICAxMzIyLCAxNzIwLCAxNzI1LCAxNzMwLCAxMzI3LCAxNzM0LCAxNzM4LCAxNzQ1LCAxMzMyLCAxNzUyLCAxMzM3LCAxNzU2LCAKKyAgICAxNzU4LCAxNzYzLCAxNzY5LCAxMzQxLCAxNzc0LCAxNzgzLCAxMzQ2LCAxNzg4LCAxNzk0LCAxMzUxLCAxNzk5LCAxODA0LCAKKyAgICAxODA3LCAxODEyLCAxODE2LCAxODIwLCAxODI0LCAxODI3LCAxODMxLCAxMzU2LCAxMzYxLCAxMTU2LCAxODM2LCAxODQyLCAKKyAgICAxODQ4LCAxODU0LCAxODYwLCAxODY2LCAxODcyLCAxODc4LCAxODg0LCAxODg5LCAxODk1LCAxOTAxLCAxOTA3LCAxOTEzLCAKKyAgICAxOTE5LCAxOTI1LCAxOTMxLCAxOTM3LCAxOTQzLCAxOTQ4LCAxOTUzLCAxOTU4LCAxOTYzLCAxOTY4LCAxOTczLCAxOTc4LCAKKyAgICAxOTgzLCAxOTg4LCAxOTkzLCAxOTk5LCAyMDA0LCAyMDEwLCAyMDE1LCAyMDIxLCAyMDI3LCAyMDMyLCAyMDM4LCAyMDQ0LCAKKyAgICAyMDUwLCAyMDU2LCAyMDYxLCAyMDY2LCAyMDY4LCAyMDY5LCAyMDczLCAyMDc3LCAyMDgyLCAyMDg2LCAyMDkwLCAyMDk0LCAKKyAgICAyMDk5LCAyMTAzLCAyMTA2LCAyMTExLCAyMTE1LCAyMTIwLCAyMTI0LCAyMTI4LCAyMTMzLCAyMTM3LCAyMTQwLCAyMTQ0LCAKKyAgICAyMTUwLCAyMTY0LCAyMTY4LCAyMTcyLCAyMTc2LCAyMTc5LCAyMTg0LCAyMTg4LCAyMTkyLCAyMTk1LCAyMTk5LCAyMjA0LCAKKyAgICAyMjA5LCAyMjE0LCAyMjE5LCAyMjIzLCAyMjI3LCAyMjMxLCAyMjM2LCAyMjQwLCAyMjQ1LCAyMjQ5LCAyMjU0LCAyMjYwLCAKKyAgICAyMjY3LCAyMjczLCAyMjc4LCAyMjgzLCAyMjg4LCAyMjk0LCAyMjk5LCAyMzA1LCAyMzEwLCAyMzEzLCAxMjEyLCAyMzE1LCAKKyAgICAyMzIyLCAyMzMwLCAyMzQwLCAyMzQ5LCAyMzYzLCAyMzY3LCAyMzcxLCAyMzg0LCAyMzkyLCAyMzk2LCAyNDAxLCAyNDA1LCAKKyAgICAyNDA4LCAyNDEyLCAyNDE2LCAyNDIxLCAyNDI2LCAyNDMxLCAyNDM1LCAyNDM4LCAyNDQyLCAyNDQ5LCAyNDU2LCAyNDYyLCAKKyAgICAyNDY3LCAyNDcyLCAyNDc4LCAyNDg0LCAyNDg5LCAyNDkyLCAxNzYwLCAyNDk0LCAyNTAwLCAyNTA0LCAyNTA5LCAyNTEzLCAKKyAgICAyNTE3LCAxNzY1LCAxNzcxLCAyNTIyLCAyNTI2LCAyNTI5LCAyNTM0LCAyNTM5LCAyNTQ0LCAyNTQ5LCAyNTUzLCAyNTYwLCAKKyAgICAyNTY1LCAyNTY4LCAyNTc1LCAyNTgxLCAyNTg1LCAyNTg5LCAyNTkzLCAyNTk4LCAyNjA1LCAyNjEwLCAyNjE1LCAyNjIyLCAKKyAgICAyNjI4LCAyNjM0LCAyNjQwLCAyNjU0LCAyNjcxLCAyNjg2LCAyNzAxLCAyNzEwLCAyNzE1LCAyNzE5LCAyNzI0LCAyNzI5LCAKKyAgICAyNzMzLCAyNzQ1LCAyNzUyLCAyNzU4LCAyMjYzLCAyNzY0LCAyNzcxLCAyNzc3LCAyNzgxLCAyNzg0LCAyNzkxLCAyNzk3LCAKKyAgICAyODAxLCAyODA1LCAyODA5LCAyMDkxLCAyODEzLCAyODE4LCAyODIzLCAyODI3LCAyODM1LCAyODM5LCAyODQzLCAyODQ3LCAKKyAgICAyODUxLCAyODU2LCAyODYxLCAyODY2LCAyODcwLCAyODc1LCAyODgwLCAyODg0LCAyODg5LCAyODkzLCAyODk2LCAyOTAwLCAKKyAgICAyOTA0LCAyOTEyLCAyOTE3LCAyOTIxLCAyOTI1LCAyOTMxLCAyOTQwLCAyOTQ0LCAyOTQ4LCAyOTU0LCAyOTU5LCAyOTY2LCAKKyAgICAyOTcwLCAyOTgwLCAyOTg0LCAyOTg4LCAyOTkzLCAyOTk3LCAzMDAyLCAzMDA4LCAzMDEzLCAzMDE3LCAzMDIxLCAzMDI1LCAKKyAgICAyNDUyLCAzMDMzLCAzMDM4LCAzMDQ0LCAzMDQ5LCAzMDUzLCAzMDU4LCAzMDYzLCAzMDY3LCAzMDczLCAzMDc4LCAyMDk1LCAKKyAgICAzMDg0LCAzMDkwLCAzMDk1LCAzMTAwLCAzMTA1LCAzMTEwLCAzMTE1LCAzMTIwLCAzMTI1LCAzMTMwLCAzMTM1LCAzMTQxLCAKKyAgICAzMTQ2LCAxMjI3LCA5MiwgMzE1MiwgMzE1NiwgMzE2MCwgMzE2NCwgMzE2OSwgMzE3MywgMzE3NywgMzE4MSwgMzE4NSwgCisgICAgMzE5MCwgMzE5NCwgMzE5OSwgMzIwMywgMzIwNiwgMzIxMCwgMzIxNSwgMzIxOSwgMzIyNCwgMzIyOCwgMzIzMiwgMzIzNiwgCisgICAgMzI0MSwgMzI0NSwgMzI0OCwgMzI2MSwgMzI2NSwgMzI2OSwgMzI3MywgMzI3NywgMzI4MSwgMzI4NCwgMzI4OCwgMzI5MiwgCisgICAgMzI5NywgMzMwMSwgMzMwNiwgMzMxMSwgMzMxNiwgMzMyMCwgMzMyMywgMzMyNiwgMzMzMiwgMzMzNiwgMzM0MCwgMzM0MywgCisgICAgMzM0NywgMzM1MSwgMzM1NCwgMzM2MCwgMzM2NSwgMzM3MCwgMzM3NiwgMzM4MSwgMzM4NiwgMzM5MiwgMzM5OCwgMzQwMywgCisgICAgMzQwOCwgMzQxMywgMTExNSwgNTQ3LCAzNDE4LCAzNDIxLCAzNDI2LCAzNDMwLCAzNDMzLCAzNDM3LCAzNDQyLCAzNDQ3LCAKKyAgICAzNDUxLCAzNDU2LCAzNDYwLCAzNDY1LCAzNDY5LCAzNDczLCAzNDc5LCAzNDg1LCAzNDg4LCAzNDkxLCAzNDk3LCAzNTA0LCAKKyAgICAzNTExLCAzNTE3LCAzNTI0LCAzNTI5LCAzNTMzLCAzNTQwLCAzNTQ3LCAzNTUyLCAzNTU2LCAzNTY2LCAzNTcwLCAzNTc0LCAKKyAgICAzNTc5LCAzNTg0LCAzNTk0LCAyMTA3LCAzNTk5LCAzNjAzLCAzNjA2LCAzNjEyLCAzNjE3LCAzNjIzLCAzNjI5LCAzNjM0LCAKKyAgICAzNjQxLCAzNjQ1LCAzNjQ5LCA2MjAsIDY3MSwgMTM4OCwgMzY1MywgMzY2MCwgMzY2NywgMzY3NCwgMzY4MSwgMzY4NywgCisgICAgMzY5MywgMzY5OCwgMzcwMiwgMzcwOCwgMzcxMywgMzcxNywgMjExNiwgMzcyMSwgMzcyOSwgNjAwLCAzNzM1LCAzNzQ2LCAKKyAgICAzNzUwLCAzNzYwLCAyMTIxLCAzNzY2LCAzNzcxLCAzNzg2LCAzNzkyLCAzNzk5LCAzODA5LCAzODE1LCAzODIwLCAzODI2LCAKKyAgICAzODMyLCAzODM1LCAzODM5LCAzODQ0LCAzODUxLCAzODU2LCAzODYwLCAzODY0LCAzODY4LCAzODcyLCAzODc3LCAzODgzLCAKKyAgICAzODk0LCAzMjExLCAzODk5LCAzOTExLCAzOTE5LCAzOTI0LCAxNTY0LCAzOTMxLCAzOTM0LCAzOTM3LCAzOTQxLCAzOTQ0LCAKKyAgICAzOTUwLCAzOTU0LCAzOTY4LCAzOTcyLCAzOTc1LCAzOTc5LCAzOTg1LCAzOTkxLCAzOTk2LCA0MDAwLCA0MDA0LCA0MDEwLCAKKyAgICA0MDIxLCA0MDI3LCA0MDMyLCA0MDM4LCA0MDQyLCA0MDUwLCA0MDYwLCA0MDY2LCA0MDcxLCA0MDgwLCA0MDg4LCA0MDk1LCAKKyAgICA0MDk5LCA0MTA1LCA0MTE0LCA0MTIzLCA0MTI3LCA0MTMyLCA0MTM3LCA0MTQxLCA0MTQ5LCA0MTUzLCA0MTU4LCA0MTYyLCAKKyAgICAyMTI5LCAxNDAxLCA0MTY4LCA0MTczLCA0MTc5LCA0MTg0LCA0MTg5LCA0MTk0LCA0MTk5LCA0MjA0LCA0MjA5LCA0MjE1LCAKKyAgICA0MjIwLCA0MjI2LCA0MjMxLCA0MjM2LCA0MjQxLCA0MjQ3LCA0MjUyLCA0MjU3LCA0MjYyLCA0MjY3LCA0MjczLCA0Mjc4LCAKKyAgICA0Mjg0LCA0Mjg5LCA0Mjk0LCA0Mjk5LCA0MzA0LCA0MzA5LCA0MzE0LCA0MzIwLCA0MzI1LCA0MzMwLCAzMTksIDQ1NiwgCisgICAgNDMzNSwgNDM0MSwgNDM0NSwgNDM0OSwgNDM1NCwgNDM1OCwgNDM2MiwgNDM2NSwgNDM2OSwgNDM3MywgNDM3NywgNDM4MSwgCisgICAgNDM4NiwgNDM5MCwgNDM5NCwgNDQwMCwgNDE2NSwgNDQwNSwgNDQwOSwgNDQxMiwgNDQxNywgNDQyMiwgNDQyNywgNDQzMiwgCisgICAgNDQzNywgNDQ0MiwgNDQ0NywgNDQ1MiwgNDQ1NywgNDQ2MiwgNDQ2NiwgNDQ3MSwgNDQ3NiwgNDQ4MSwgNDQ4NiwgNDQ5MSwgCisgICAgNDQ5NiwgNDUwMSwgNDUwNiwgNDUxMSwgNDUxNiwgNDUyMCwgNDUyNSwgNDUzMCwgNDUzNSwgNDU0MCwgNDU0NSwgNDU1MCwgCisgICAgNDU1NSwgNDU2MCwgNDU2NSwgNDU3MCwgNDU3NCwgNDU3OSwgNDU4NCwgNDU4OSwgNDU5NCwgNDU5OSwgNDYwNCwgNDYwOSwgCisgICAgNDYxNCwgNDYxOSwgNDYyNCwgNDYyOCwgNDYzMywgNDYzOCwgNDY0MywgNDY0OCwgNDY1MywgNDY1OCwgNDY2MywgNDY2OCwgCisgICAgNDY3MywgNDY3OCwgNDY4MiwgNDY4NywgNDY5MiwgNDY5NywgNDcwMiwgNDcwNywgNDcxMiwgNDcxNywgNDcyMiwgNDcyNywgCisgICAgNDczMiwgNDczNiwgNDc0MSwgNDc0NiwgNDc1MSwgNDc1NiwgNDc2MSwgNDc2NiwgNDc3MSwgNDc3NiwgNDc4MSwgNDc4NiwgCisgICAgNDc5MCwgNDc5NSwgNDgwMCwgNDgwNSwgNDgxMCwgNDgxNiwgNDgyMiwgNDgyOCwgNDgzNCwgNDg0MCwgNDg0NiwgNDg1MiwgCisgICAgNDg1NywgNDg2MywgNDg2OSwgNDg3NSwgNDg4MSwgNDg4NywgNDg5MywgNDg5OSwgNDkwNSwgNDkxMSwgNDkxNywgNDkyMiwgCisgICAgNDkyOCwgNDkzNCwgNDk0MCwgNDk0NiwgNDk1MiwgNDk1OCwgNDk2NCwgNDk3MCwgNDk3NiwgNDk4MiwgNDk4NywgNDk5MywgCisgICAgNDk5OSwgNTAwNSwgNTAxMSwgNTAxNywgNTAyMywgNTAyOSwgNTAzNSwgNTA0MSwgNTA0NywgNTA1MiwgNTA1OCwgNTA2NCwgCisgICAgNTA3MCwgNTA3NiwgNTA4MiwgNTA4OCwgNTA5NCwgNTEwMCwgNTEwNiwgNTExMiwgNTExNywgNTEyMywgNTEyOSwgNTEzNSwgCisgICAgNTE0MSwgNTE0NywgNTE1MywgNTE1OSwgNTE2NSwgNTE3MSwgNTE3NywgNTE4MiwgNTE4NiwgNTE5MiwgNTE5OCwgNTIwNCwgCisgICAgNTIxMCwgNTIxNiwgNTIyMiwgNTIyOCwgNTIzNCwgNTI0MCwgNTI0NiwgNTI1MSwgNTI1NywgNTI2MywgNTI2OSwgNTI3NSwgCisgICAgNTI4MSwgNTI4NywgNTI5MywgNTI5OSwgNTMwNSwgNTMxMSwgNTMxNiwgNTMyMiwgNTMyOCwgNTMzNCwgNTM0MCwgNTM0NiwgCisgICAgNTM1MiwgNTM1OCwgNTM2NCwgNTM3MCwgNTM3NiwgNTM4MSwgNTM4NywgNTM5MywgNTM5OSwgNTQwNSwgNTQxMSwgNTQxNywgCisgICAgNTQyMywgNTQyOSwgNTQzNSwgNTQ0MSwgNTQ0NiwgNTQ1MiwgNTQ1OCwgNTQ2NCwgNTQ3MCwgNTQ3NiwgNTQ4MiwgNTQ4OCwgCisgICAgNTQ5NCwgNTUwMCwgNTUwNiwgNTUxMSwgNTUxNywgNTUyMywgNTUyOSwgNTUzNSwgNTU0MSwgNTU0NywgNTU1MywgNTU1OSwgCisgICAgNTU2NSwgNTU3MSwgNTU3NiwgNTU4MiwgNTU4OCwgNTU5NCwgNTYwMCwgNTYwNiwgNTYxMiwgNTYxOCwgNTYyNCwgNTYzMCwgCisgICAgNTYzNiwgNTY0MSwgNTY0NywgNTY1MywgNTY1OSwgNTY2NSwgNTY3MSwgNTY3NywgNTY4MywgNTY4OSwgNTY5NSwgNTcwMSwgCisgICAgNTcwNiwgNTcxMiwgNTcxOCwgNTcyNCwgNTczMCwgNTczNiwgNTc0MiwgNTc0OCwgNTc1NCwgNTc2MCwgNTc2NiwgNTc3MSwgCisgICAgNTc3NywgNTc4MywgNTc4OSwgNTc5NSwgNTgwMSwgNTgwNywgNTgxMywgNTgxOSwgNTgyNSwgNTgzMSwgNTgzNiwgNTg0MCwgCisgICAgNTg0MywgNTg1MCwgNTg1NCwgNTg2NywgNTg3MSwgNTg3NSwgNTg3OSwgNTg4MywgNTg4NywgNTg5MSwgNTg5NywgNTkwNCwgCisgICAgNTkxMiwgNTkxNiwgNTkyNCwgNTkzMywgNTkzOSwgNTk1MSwgNTk1NiwgNTk1OSwgNTk2MywgNTk3MywgNTk4MSwgNTk4OSwgCisgICAgNTk5NSwgNTk5OSwgNjAwOSwgNjAxOSwgNjAyNywgNjAzNCwgNjA0MSwgNjA0NywgNjA1MywgNjA2MCwgNjA2NCwgNjA3MSwgCisgICAgNjA4MSwgNjA5MSwgNjA5OSwgNjEwNiwgNjExMSwgNjExNSwgNjEyMywgNjEyNywgNjEzMiwgNjEzOSwgNjE0NywgNjE1MiwgCisgICAgNjE1NywgNjE2MSwgNjE2OCwgNjE3MywgNjE4NywgNjE5MiwgNjE5NywgNjIwNCwgNjIxMywgNjIxNiwgNjIyMCwgNjIyNCwgCisgICAgNjIyOCwgNjIzMSwgNjIzNiwgNjI0MSwgNjI1MCwgNjI1NiwgNjI2MiwgNjI2OCwgNjI3MiwgNjI4MywgNjI5MywgNjMwOCwgCisgICAgNjMyMywgNjMzOCwgNjM1MywgNjM2OCwgNjM4MywgNjM5OCwgNjQxMywgNjQyOCwgNjQ0MywgNjQ1OCwgNjQ3MywgNjQ4OCwgCisgICAgNjUwMywgNjUxOCwgNjUzMywgNjU0OCwgNjU2MywgNjU3OCwgNjU5MywgNjYwOCwgNjYyMywgNjYzOCwgNjY1MywgNjY2OCwgCisgICAgNjY4MywgNjY5OCwgNjcxMywgNjcyOCwgNjc0MywgNjc1OCwgNjc3MywgNjc4OCwgNjgwMywgNjgxOCwgNjgzMywgNjg0OCwgCisgICAgNjg2MywgNjg3OCwgNjg5MywgNjkwOCwgNjkyMywgNjkzOCwgNjk1MywgNjk2OCwgNjk4MywgNjk5OCwgNzAxMywgNzAyOCwgCisgICAgNzAzNywgNzA0NiwgNzA1MSwgNzA1NywgNzA2NywgNzA3MSwgNzA3NiwgNzA4MSwgNzA4OSwgNzA5MywgNzA5NiwgNzEwMCwgCisgICAgMjk3NSwgNzEwMywgNzEwOCwgMjk4LCA0NDIsIDcxMTQsIDcxMjIsIDcxMjYsIDcxMzAsIDcxMzMsIDcxMzcsIDcxNDMsIAorICAgIDcxNDcsIDcxNTUsIDcxNjEsIDcxNjYsIDcxNzMsIDcxODAsIDcxODYsIDcxOTEsIDcxOTgsIDcyMDQsIDcyMTIsIDcyMTYsIAorICAgIDcyMjEsIDcyMzMsIDcyNDQsIDcyNTEsIDcyNTUsIDcyNTksIDcyNjUsIDMyMzMsIDcyNjksIDcyNzUsIDcyODAsIDcyODUsIAorICAgIDcyOTAsIDcyOTYsIDczMDEsIDczMDYsIDczMTEsIDczMTYsIDczMjIsIDczMjcsIDczMzIsIDczMzgsIDczNDMsIDczNDksIAorICAgIDczNTQsIDczNjAsIDczNjUsIDczNzEsIDczNzYsIDczODEsIDczODYsIDczOTEsIDczOTYsIDc0MDIsIDc0MDcsIDc0MTIsIAorICAgIDc0MTcsIDc0MjMsIDc0MjksIDc0MzUsIDc0NDEsIDc0NDcsIDc0NTMsIDc0NTksIDc0NjUsIDc0NzEsIDc0NzcsIDc0ODMsIAorICAgIDc0ODksIDc0OTQsIDc0OTksIDc1MDQsIDc1MDksIDc1MTQsIDc1MTksIDc1MjQsIDc1MjksIDc1MzUsIDc1NDEsIDc1NDYsIAorICAgIDc1NTIsIDc1NTgsIDc1NjQsIDc1NjksIDc1NzQsIDc1NzksIDc1ODQsIDc1OTAsIDc1OTYsIDc2MDEsIDc2MDYsIDc2MTEsIAorICAgIDc2MTYsIDc2MjEsIDc2MjcsIDc2MzIsIDc2MzgsIDc2NDQsIDc2NTAsIDc2NTYsIDc2NjIsIDc2NjgsIDc2NzQsIDc2ODAsIAorICAgIDc2ODYsIDIxMzgsIDcxMzIsIDc2OTEsIDc2OTUsIDc2OTksIDc3MDIsIDc3MDksIDc3MTIsIDc3MjAsIDc3MjUsIDc3MzAsIAorICAgIDc3MjEsIDc3MzUsIDIxNjUsIDc3MzksIDc3NDUsIDc3NTEsIDc3NTYsIDc3NjEsIDc3NjgsIDc3NzYsIDc3ODEsIDc3ODUsIAorICAgIDc3ODgsIDc3OTIsIDc3OTgsIDc4MDQsIDc4MDgsIDIxNzMsIDU2MCwgNzgxMSwgNzgxNSwgNzgyMCwgNzgyNiwgNzgzMSwgCisgICAgNzgzNSwgNzgzOCwgNzg0MiwgNzg0OCwgNzg1MywgNzg1NywgNzg2NCwgNzg2OCwgNzg3MiwgNzg3NiwgOTQ1LCA3NjksIAorICAgIDc4NzksIDc4ODcsIDc4OTQsIDc5MDEsIDc5MDcsIDc5MTQsIDc5MjIsIDc5MjksIDc5MzYsIDc5NDEsIDc5NTMsIDEyNDcsIAorICAgIDE0MDksIDE0MTQsIDc5NjQsIDE0MTksIDc5NjgsIDc5NzIsIDc5ODEsIDc5ODksIDc5OTgsIDgwMDQsIDgwMDksIDgwMTMsIAorICAgIDgwMTksIDgwMjQsIDI3MDYsIDgwMzEsIDgwMzUsIDgwNDQsIDgwNTMsIDgwNjIsIDgwNzEsIDgwNzYsIDgwODEsIDgwOTMsIAorICAgIDgwOTgsIDgxMDYsIDIyMjQsIDgxMTAsIDgxMTIsIDgxMTcsIDgxMjEsIDgxMzAsIDgxMzgsIDE0MjMsIDEzMywgMzQ2MSwgCisgICAgMzQ2NiwgODE0NCwgODE0OCwgODE1NywgODE2MywgODE2OCwgODE3MSwgODE4MCwgMjY5OCwgODE4NiwgODE5NCwgODE5OCwgCisgICAgODIwMiwgODIwNiwgMjIzNywgODIxMCwgODIxNSwgODIyMiwgODIyOCwgODIzNCwgODIzNywgODIzOSwgODI0MiwgODI1MCwgCisgICAgODI1OCwgODI2NiwgODI2OSwgODI3NCwgMjI1MCwgODI3OSwgNzczMiwgODI4MiwgODI4NCwgODI4OSwgODI5NCwgODI5OSwgCisgICAgODMwNCwgODMwOSwgODMxNCwgODMxOSwgODMyNCwgODMyOSwgODMzNCwgODM0MCwgODM0NSwgODM1MCwgODM1NSwgODM2MSwgCisgICAgODM2NiwgODM3MSwgODM3NiwgODM4MSwgODM4NiwgODM5MSwgODM5NywgODQwMiwgODQwNywgODQxMiwgODQxNywgODQyMiwgCisgICAgODQyNywgODQzMiwgODQzNywgODQ0MiwgODQ0NywgODQ1MiwgODQ1NywgODQ2MiwgODQ2NywgODQ3MiwgODQ3NywgODQ4MiwgCisgICAgODQ4OCwgODQ5NCwgODQ5OSwgODUwNCwgODUwOSwgODUxNCwgODUxOSwgMjI2MSwgMjI2OCwgMjI3NCwgODUyNCwgODUzMCwgCisgICAgODUzOCwgMjMwMCwgMjMwNiwgODU0NiwgODU1MCwgODU1NSwgODU1OSwgODU2MywgODU2NywgODU3MiwgODU3NiwgODU4MSwgCisgICAgODU4NSwgODU4OCwgODU5MSwgODU5NywgODYwMywgODYwOSwgODYxNSwgODYyMSwgODYyNywgODYzMywgODYzNywgODY0MSwgCisgICAgODY0NSwgODY0OSwgODY1MywgODY1OCwgODY2NSwgODY3NiwgODY4NCwgODY5NCwgODcwMCwgODcwNywgODcxMiwgODcxNiwgCisgICAgODcyNywgODc0MCwgODc1MSwgODc2NCwgODc3NSwgODc4NywgODc5OSwgODgxMSwgODgyNCwgODgzNywgODg0NCwgODg1MCwgCisgICAgODg2NCwgODg3MSwgODg3NywgODg4MSwgODg4NiwgODg5MCwgODg5NywgODkwNSwgODkwOSwgODkxNSwgODkxOSwgODkyNSwgCisgICAgODkzNSwgODkzOSwgODk0NCwgODk0OSwgODk1NiwgODk2MiwgODk3MiwgNzkwOSwgODk3OCwgODk4MiwgODk4OSwgNzY4LCAKKyAgICA4OTkzLCA4OTk3LCA5MDAyLCA5MDA3LCA5MDEyLCA5MDE2LCA5MDIyLCA5MDMwLCA5MDM2LCA5MDQwLCA5MDQ2LCA5MDU2LCAKKyAgICA5MDYwLCA5MDY2LCA5MDcxLCA5MDc1LCA5MDgxLCA5MDg3LCAyMTYxLCA5MDkyLCA5MDk0LCA5MDk5LCA5MTA3LCA5MTE2LCAKKyAgICA5MTIwLCA5MTI2LCA5MTMxLCA5MTM2LCA5MTQxLCA5MTQ2LCA5MTUyLCA5MTU3LCA5MTYyLCA0MDA2LCA5MTY3LCA5MTcyLCAKKyAgICA5MTc2LCA5MTgyLCA5MTg3LCA5MTkzLCA5MTk4LCA5MjAzLCA5MjA5LCA5MjE0LCA5MTIxLCA5MjIwLCA5MjI0LCA5MjMxLCAKKyAgICA5MjM3LCA5MjQyLCA5MjQ2LCA2MTgzLCA5MjUxLCA5MjYwLCA5MjY1LCA5MjcwLCA4MjE4LCA4MjI1LCA5Mjc1LCAyODUzLCAKKyAgICA5Mjc5LCA5Mjg0LCA5Mjg5LCA5MTMyLCA5MjkzLCA5Mjk4LCA5MTM3LCA5MTQyLCA5MzAzLCA5MzEwLCA5MzE3LCA5MzIzLCAKKyAgICA5MzI5LCA5MzM1LCA5MzQwLCA5MzQ1LCA5MzUwLCA5MTQ3LCA5MTUzLCA5MzU2LCA5MzYyLCA5MzY3LCA5Mzc1LCA5MTU4LCAKKyAgICA5MzgwLCA5OTAsIDkzODMsIDkzOTEsIDkzOTcsIDk0MDMsIDk0MTIsIDk0MjAsIDk0MjUsIDk0MzEsIDk0MzksIDk0NDYsIAorICAgIDk0NjEsIDk0NzgsIDk0OTcsIDk1MDYsIDk1MTQsIDk1MjksIDk1NDAsIDk1NTAsIDk1NjAsIDk1NjgsIDk1NzQsIDk1ODYsIAorICAgIDk1OTUsIDk2MDMsIDk2MTAsIDk2MTcsIDk2MjMsIDk2MjgsIDk2MzYsIDk2NDYsIDk2NTMsIDk2NjMsIDk2NzMsIDk2ODMsIAorICAgIDk2OTEsIDk2OTgsIDk3MDcsIDk3MTcsIDk3MzEsIDk3NDYsIDk3NTUsIDk3NjMsIDk3NjgsIDk3NzIsIDk3ODEsIDk3ODcsIAorICAgIDk3OTIsIDk4MDIsIDk4MTIsIDk4MjIsIDk4MjcsIDk4MzEsIDk4NDAsIDk4NDUsIDk4NTUsIDk4NjYsIDk4NzksIDk4ODcsIAorICAgIDk5MDAsIDk5MTIsIDk5MjAsIDk5MjUsIDk5MjksIDk5MzUsIDk5NDAsIDk5NDgsIDk5NTYsIDk5NjMsIDk5NjgsIDk5NzYsIAorICAgIDk5ODIsIDk5ODUsIDk5ODksIDk5OTUsIDEwMDAzLCAxMDAwOCwgMTAwMTIsIDEwMDIwLCAxMDAyOSwgMTAwMzcsIDEwMDQzLCAKKyAgICAxMDA0NywgMTAwNTQsIDEwMDY1LCAxMDA2OSwgMTAwNzIsIDEwMDc4LCA5MTYzLCAxMDA4MywgMTAwODksIDEwMDk2LCAKKyAgICAxMDEwMiwgMTAxMDcsIDEwMTE0LCAxMDEyMSwgMTAxMjgsIDEwMTM1LCAxMDE0MiwgMTAxNDksIDEwMTU2LCAxMDE2MywgCisgICAgMTAxNjgsIDk0NzQsIDEwMTczLCAxMDE3OSwgMTAxODYsIDEwMTkzLCAxMDE5OCwgMTAyMDUsIDEwMjE0LCAxMDIxOCwgCisgICAgMTAyMzAsIDgyNTYsIDEwMjM0LCAxMDIzNywgMTAyNDEsIDEwMjQ1LCAxMDI0OSwgMTAyNTMsIDEwMjU5LCAxMDI2NSwgCisgICAgMTAyNzAsIDEwMjc2LCAxMDI4MSwgMTAyODYsIDEwMjkyLCAxMDI5NywgMTAzMDIsIDg5NTIsIDEwMzA3LCAxMDMxMSwgCisgICAgMTAzMTUsIDEwMzE5LCAxMDMyNCwgMTAzMjksIDEwMzM3LCAxMDM0MywgMTAzNDcsIDEwMzUxLCAxMDM1OCwgMTAzNjMsIAorICAgIDEwMzcxLCAxMDM3NiwgMTAzODAsIDEwMzgzLCAxMDM4OSwgMTAzOTYsIDEwNDAwLCAxMDQwMywgMTA0MDgsIDEwNDEyLCAKKyAgICA0MDQ1LCAxMDQxOCwgMTA0MjcsIDM2LCAxMDQzNSwgMTA0NDEsIDEwNDQ2LCA4OTY3LCAxMDQ1MSwgMTA0NTYsIDEwNDYwLCAKKyAgICAxMDQ2MywgMTA0NzgsIDEwNDk3LCAxMDUwOSwgMTA1MjIsIDEwNTM1LCAxMDU0OCwgMTA1NjIsIDEwNTc1LCAxMDU5MCwgCisgICAgMTA1OTcsIDkxNjgsIDEwNjAzLCAxMDYxNywgMTA2MjIsIDEwNjI4LCAxMDYzMywgMTA2NDEsIDEwNjQ2LCA4MDQwLCAKKyAgICAxMDY1MSwgMTA2NTQsIDEwNjYxLCAxMDY2NiwgMTA2NzAsIDI4NTgsIDk5OCwgMTA2NzYsIDEwNjgwLCAxMDY4NiwgMTA2OTIsIAorICAgIDEwNjk3LCAxMDcwMywgMTA3MDgsIDkxNzcsIDEwNzE0LCAxMDcyMCwgMTA3MjUsIDEwNzMwLCAxMDczOCwgMTA3NDQsIAorICAgIDEwNzU3LCAxMDc2NSwgMTA3NzIsIDkxODMsIDEwNzc4LCAxMDc4NiwgMTA3OTQsIDEwODAxLCAxMDgxNCwgMTA4MjYsIAorICAgIDEwODM2LCAxMDg0NCwgMTA4NTEsIDEwODU4LCAxMDg2NywgMTA4NzYsIDEwODg0LCAxMDg5MSwgMTA4OTYsIDEwOTAyLCAKKyAgICA5MTg4LCAxMDkwNywgMTA5MTMsIDkxOTQsIDEwOTE4LCAxMDkyMSwgMTA5MjgsIDEwOTM0LCAxMDk0NywgODY2OSwgMTA5NTgsIAorICAgIDEwOTY0LCAxMDk3MywgMTA5ODEsIDEwOTg4LCAxMDk5NCwgMTEwMDAsIDExMDA1LCAxMTAwOSwgMTEwMTQsIDEwNDcwLCAKKyAgICAxMTAyMCwgOTE5OSwgMTEwMjcsIDExMDMyLCAxMTAzOSwgMTEwNDUsIDExMDUxLCAxMTA1NiwgMTEwNjQsIDExMDcyLCAKKyAgICAxMTA3OSwgMTEwODMsIDExMDk3LCAxMTEwNywgMTExMTIsIDExMTE2LCAxMTEyNywgMTExMzMsIDExMTM4LCAxMTE0MywgCisgICAgOTIwNCwgOTIxMCwgMTExNDcsIDExMTUwLCAxMTE1NSwgMTExNjcsIDExMTc0LCAxMTE3OSwgMTExODMsIDExMTg4LCAKKyAgICAxMTE5MiwgMTExOTksIDExMjA1LCA5MjE1LCA5MTIyLCAxMTIxMiwgMjg2MywgOCwgMTEyMTksIDExMjI0LCAxMTIyOCwgCisgICAgMTEyMzQsIDExMjQyLCAxMTI1MiwgMTEyNTcsIDExMjYyLCAxMTI2OSwgMTEyNzYsIDExMjgwLCAxMTI5MSwgMTEzMDEsIAorICAgIDExMzEwLCAxMTMyMiwgMTEzMjcsIDExMzMxLCAxMTMzOSwgMTEzNTMsIDExMzU3LCAxMTM2MCwgMTEzNjgsIDExMzc1LCAKKyAgICAxMTM4MywgMTEzODcsIDExMzk4LCAxMTQwMiwgMTE0MDksIDExNDE0LCAxMTQxOCwgMTE0MjQsIDExNDI5LCAxMTQzMywgCisgICAgMTE0MzksIDExNDQ0LCAxMTQ1NSwgMTE0NTksIDExNDYyLCAxMTQ2OCwgMTE0NzMsIDExNDc5LCAxMTQ4NSwgMTE0OTIsIAorICAgIDExNTAzLCAxMTUxMywgMTE1MjMsIDExNTMyLCAxMTUzOSwgMTE1NDgsIDkyMjUsIDkyMzIsIDkyMzgsIDkyNDMsIDExNTU0LCAKKyAgICAxMTU2MCwgOTI0NywgMTE1NjYsIDExNTY5LCAxMTU3NiwgMTE1ODEsIDExNTk2LCAxMTYxMiwgMTE2MjcsIDExNjM1LCAKKyAgICAxMTY0MSwgMTE2NDYsIDgzOCwgNDIwLCAxMTY1MSwgMTE2NTksIDExNjY2LCAxMTY3MiwgMTE2NzcsIDExNjgyLCA5MjUyLCAKKyAgICAxMTY4NCwgMTE2ODgsIDExNjkzLCAxMTY5NywgMTE3MDcsIDExNzEyLCAxMTcxNiwgMTE3MjUsIDExNzI5LCAxMTczMiwgCisgICAgOTI2MSwgMTE3MzksIDExNzQyLCAxMTc1MCwgMTE3NTcsIDExNzY1LCAxMTc2OSwgMTE3NzYsIDExNzg1LCAxMTc4OCwgCisgICAgMTE3OTIsIDExNzk2LCAxMTgwMiwgMTE4MDYsIDExODEwLCAxMTgxNCwgMTE4MjAsIDExODMwLCAxMTgzNCwgMTE4NDIsIAorICAgIDExODQ2LCAxMTg1MywgMTE4NTcsIDExODYyLCAxMTg2NiwgMTE4NzMsIDExODc5LCAxMTg4NywgMTE4OTMsIDExODk4LCAKKyAgICAxMTkwOCwgMTE5MTMsIDExOTE4LCAxMTkyMiwgMTE5MzAsIDM5MDUsIDExOTM4LCAxMTk0MywgOTI2NiwgMTE5NDcsIAorICAgIDExOTUxLCAxMTk1NCwgMTE5NjIsIDExOTY5LCAxMTk3MywgNTk5MSwgMTE5NzcsIDExOTgyLCAxMTk4NiwgMTE5OTcsIAorICAgIDEyMDA3LCAxMjAxMiwgMTIwMTgsIDEyMDIyLCAxMjAyNSwgMTIwMzMsIDEyMDM4LCAxMjA0MywgMTIwNTAsIDEyMDU1LCAKKyAgICA5MjcxLCAxMjA2MCwgMTIwNjQsIDEyMDcxLCAxNzIyLCA2MTQ1LCAxMjA3NiwgMTIwODEsIDEyMDg2LCAxMjA5MSwgMTIwOTcsIAorICAgIDEyMTAyLCAxMjEwOCwgMTIxMTMsIDEyMTE4LCAxMjEyMywgMTIxMjgsIDEyMTMzLCAxMjEzOCwgMTIxNDMsIDEyMTQ4LCAKKyAgICAxMjE1MywgMTIxNTgsIDEyMTYzLCAxMjE2OCwgMTIxNzMsIDEyMTc4LCAxMjE4MywgMTIxODgsIDEyMTk0LCAxMjE5OSwgCisgICAgMTIyMDQsIDEyMjA5LCAxMjIxNCwgMTIyMTksIDEyMjI1LCAxMjIzMCwgMTIyMzUsIDEyMjQxLCAxMjI0NiwgMTIyNTIsIAorICAgIDEyMjU3LCAxMjI2MywgMTIyNjgsIDEyMjczLCAxMjI3OCwgMTIyODMsIDEyMjg5LCAxMjI5NCwgMTIyOTksIDEyMzA0LCAKKyAgICA3MzcsIDEzOSwgMTIzMTIsIDEyMzE2LCAxMjMyMSwgMTIzMjYsIDEyMzMwLCAxMjMzNCwgMTIzMzgsIDEyMzQzLCAxMjM0NywgCisgICAgMTIzNTIsIDEyMzU2LCAxMjM1OSwgMTIzNjMsIDEyMzY3LCAxMjM3MywgMTIzNzgsIDEyMzg4LCAxMjM5NCwgMTI0MDIsIAorICAgIDEyNDA2LCAxMjQxMCwgMTI0MTcsIDEyNDI1LCAxMjQzNCwgMTI0NDUsIDEyNDUyLCAxMjQ1OSwgMTI0NjMsIDEyNDcyLCAKKyAgICAxMjQ4MSwgMTI0ODksIDEyNDk4LCAxMjUwNywgMTI1MTYsIDEyNTI1LCAxMjUzNSwgMTI1NDUsIDEyNTU1LCAxMjU2NSwgCisgICAgMTI1NzUsIDEyNTg0LCAxMjU5NCwgMTI2MDQsIDEyNjE0LCAxMjYyNCwgMTI2MzQsIDEyNjQ0LCAxMjY1NCwgMTI2NjMsIAorICAgIDEyNjczLCAxMjY4MywgMTI2OTMsIDEyNzAzLCAxMjcxMywgMTI3MjMsIDEyNzMyLCAxMjc0MiwgMTI3NTIsIDEyNzYyLCAKKyAgICAxMjc3MiwgMTI3ODIsIDEyNzkyLCAxMjgwMiwgMTI4MTIsIDEyODIyLCAxMjgzMSwgMTI4NDEsIDEyODUxLCAxMjg2MSwgCisgICAgMTI4NzEsIDEyODgxLCAxMjg5MSwgMTI5MDEsIDEyOTExLCAxMjkyMSwgMTI5MzEsIDEyOTQwLCAxMjU2LCAxMjk0NiwgCisgICAgMTI5NDksIDEyOTUzLCAxMjk1OCwgMTI5NjUsIDEyOTcxLCAxMjk3NiwgMTI5ODAsIDEyOTg1LCAxMjk5NCwgMTMwMDIsIAorICAgIDEzMDA3LCAxMzAxMSwgMTMwMTUsIDEzMDIxLCAxMzAyNiwgMTMwMzIsIDkyODAsIDEzMDM3LCAxMzA0MiwgMTMwNTEsIAorICAgIDkyODUsIDEzMDU2LCAxMzA1OSwgMTMwNjUsIDEzMDczLCA5MjkwLCAxMzA4MCwgMTMwODQsIDEzMDg4LCAxMzA5MiwgCisgICAgMTMxMDIsIDEzMTA4LCAxMzExNCwgMTMxMTksIDEzMTI4LCAxMzEzNiwgMTMxNDMsIDEzMTUwLCAxMzE1NSwgMTMxNjIsIAorICAgIDEzMTY3LCAxMzE3MSwgMTMxNzQsIDEzMTg1LCAxMzE5NSwgMTMyMDQsIDEzMjEyLCAxMzIyMywgMTMyMzUsIDEzMjQ1LCAKKyAgICAxMzI1MCwgMTMyNTQsIDEzMjU5LCAxMzI2NCwgMTMyNjgsIDEzMjc0LCAxMzI4MiwgMTMyODksIDEzMzAwLCAxMzMwNSwgCisgICAgMTMzMTUsIDEzMzE5LCAxMzMyMiwgMTMzMjksIDEzMzM5LCAxMzM0OCwgMTMzNTUsIDEzMzU5LCAxMzM2NiwgMTMzNzIsIAorICAgIDEzMzc3LCAxMzM4MiwgMTMzODYsIDEzMzk1LCAxMzQwMCwgMTM0MDYsIDEzNDEwLCAxMzQxNSwgMTM0MTksIDEzNDI4LCAKKyAgICAxMzQzNiwgMTM0NDQsIDEzNDUxLCAxMzQ1OSwgMTM0NzEsIDEzNDgyLCAxMzQ5MiwgMTM0OTksIDEzNTA1LCAxMzUxNCwgCisgICAgMTM1MjUsIDEzNTM0LCAxMzU0NiwgMTM1NTgsIDEzNTcwLCAxMzU4MCwgMTM1ODksIDEzNTk4LCAxMzYwNiwgMTM2MTMsIAorICAgIDEzNjIyLCAxMzYzMCwgMTM2MzQsIDEzNjQwLCAxMzY0NiwgMTM2NTEsIDc3NTMsIDEzNjU1LCAxMzY1NywgMTM2NjEsIAorICAgIDEzNjY2LCAxMzY3MiwgMTM2ODEsIDEzNjg1LCAxMzY5MywgMTM3MDAsIDEzNzA5LCAxMzcxOCwgMTM3MjcsIDEzNzM2LCAKKyAgICAxMzc0NSwgMTM3NTQsIDEzNzYzLCAxMzc3MiwgMTM3ODIsIDEzNzkyLCAxMzgwMSwgMTM4MDcsIDEzODE0LCAxMzgyMSwgCisgICAgMTM4MjcsIDEzODQxLCAxMzg0OCwgMTM4NTYsIDEzODY1LCAxMzg3MSwgMTM4ODAsIDEzODg5LCAxMzkwMCwgMTM5MTAsIAorICAgIDEzOTE4LCAxMzkyNSwgMTM5MzMsIDEzOTQyLCAxMzk1NSwgMTM5NjMsIDEzOTcwLCAxMzk4MywgMTM5ODksIDEzOTk1LCAKKyAgICAxNDAwNSwgMTQwMTQsIDE0MDIzLCAxNDAyOCwgMTQwMzIsIDE0MDM4LCAxNDA0NCwgMTQwNTEsIDg5NjYsIDE0MDU2LCAKKyAgICAxNDA2MSwgMTQwNjgsIDE0MDczLCAxMjM2OSwgMTQwNzgsIDE0MDg2LCAxNDA5MiwgMTQwOTcsIDE0MTA1LCAxNDExMywgCisgICAgMTQxMjAsIDE0MTI4LCAxNDEzNCwgMTQxNDIsIDE0MTUwLCAxNDE1NiwgMTQxNjEsIDE0MTY3LCAxNDE3NCwgMTQxODAsIAorICAgIDE0MTg1LCAxNDE4OSwgMTQyMDAsIDE0MjA4LCAxNDIxNCwgMTQyMTksIDE0MjI4LCAxNDIzNCwgMTQyMzksIDE0MjQ4LCAKKyAgICAxNDI2MiwgMzg1MywgMTQyNjYsIDE0MjcxLCAxNDI3NiwgMTQyODIsIDE0Mjg3LCAxNDI5MiwgMTQyOTYsIDE0MzAxLCAKKyAgICAxNDMwNiwgMTQzMTEsIDc3NTIsIDE0MzE2LCAxNDMyMSwgMTQzMjYsIDE0MzMxLCAxNDMzNiwgMTQzNDAsIDE0MzQ1LCAKKyAgICAxNDM1MCwgMTQzNTUsIDE0MzYwLCAxNDM2NiwgMTQzNzIsIDE0Mzc3LCAxNDM4MSwgMTQzODYsIDE0MzkxLCAxNDM5NiwgCisgICAgOTI5NCwgMTQ0MDEsIDE0NDA2LCAxNDQxMSwgMTQ0MTYsIDE0NDIxLCAxNDQzOCwgMTQ0NTYsIDE0NDY4LCAxNDQ4MSwgCisgICAgMTQ0OTgsIDE0NTE0LCAxNDUzMSwgMTQ1NDEsIDE0NTYwLCAxNDU3MSwgMTQ1ODIsIDE0NTkzLCAxNDYwNCwgMTQ2MTYsIAorICAgIDE0NjI3LCAxNDYzOCwgMTQ2NTUsIDE0NjY2LCAxNDY3NywgMTQ2ODIsIDkyOTksIDE0Njg3LCAxNDY5MSwgMjM4MSwgCisgICAgMTQ2OTUsIDE0Njk4LCAxNDcwNCwgMTQ3MTIsIDE0NzIwLCAxNDcyNSwgMTQ3MzMsIDE0NzQxLCAxNDc0OCwgMTQ3NTMsIAorICAgIDE0NzU5LCAxNDc2NiwgMTQ3NzQsIDE0NzgxLCAxNDc5MywgMTQ4MDEsIDE0ODA2LCAxMTU5MCwgMTQ4MTIsIDE0ODIxLCAKKyAgICAxNDgzMCwgMTQ4MzgsIDE0ODQ1LCAxNDg1MSwgMTQ4NTksIDE0ODY2LCAxNDg3MiwgMTQ4NzksIDE0ODg1LCAxNDg5NCwgCisgICAgMTQ5MDIsIDE0OTEyLCAxNDkxOSwgMTQ5MjUsIDE0OTMzLCAxNDkzOSwgMTQ5NDcsIDE0OTU0LCAxNDk2NywgMTQ5NzQsIAorICAgIDE0OTgzLCAxNDk5MiwgMTUwMDEsIDE1MDA5LCAxNTAxOSwgMTUwMjYsIDE1MDMxLCAzNTYwLCAxNTAzOCwgMTUwNDMsIAorICAgIDEzNzIsIDE1MDQ3LCAxNDMxNywgMTUwNTEsIDE1MDU3LCAxNTA2MSwgMTUwNjksIDE1MDgxLCAxNTA4NiwgMTUwOTMsIAorICAgIDE1MDk5LCAxNTEwNCwgMTUxMTEsIDE0MzIyLCAxNTExNSwgMTUxMTksIDE1MTIzLCAxNDMyNywgMTUxMjcsIDE0MzMyLCAKKyAgICAxNTEzMSwgMTUxMzgsIDE1MTQzLCAxNTE0NywgMTUxNTQsIDE1MTU4LCAxNTE2NiwgMTUxNzMsIDE1MTc3LCAxNTE4NCwgCisgICAgMTUyMDEsIDE1MjEwLCAxNTIxNCwgMTUyMTcsIDE1MjI1LCAxNTIzMSwgMTUyMzYsIDM2MzgsIDE1MjQwLCAxNTI0MiwgCisgICAgMTUyNTAsIDE1MjU3LCAxNTI2NywgMTUyNzksIDE1Mjg0LCAxNTI5MCwgMTUyOTUsIDE1Mjk5LCAxNTMwNSwgMTUzMTAsIAorICAgIDE1MzE2LCAxNTMxOSwgMTUzMjYsIDE1MzM0LCAxNTM0MSwgMTUzNDcsIDE1MzUzLCAxNTM1OCwgMTUzNjUsIDE1MzcxLCAKKyAgICAxNTM3NiwgMTUzODMsIDE1Mzg3LCAxNTM5MywgMTUzOTcsIDE1NDA0LCAxNTQxMCwgMTU0MTYsIDE1NDI0LCAxNTQzMCwgCisgICAgMTU0MzUsIDE1NDQxLCAxNTQ0OSwgMTU0NTcsIDE1NDYzLCAxNTQ2OSwgMTU0NzQsIDE1NDgxLCAxNTQ4NiwgMTU0OTAsIAorICAgIDE1NDk2LCAxNTUwMSwgMTU1MDgsIDE1NTEzLCAxNTUxOSwgMTU1MjIsIDE1NTI4LCAxNTUzNCwgMTU1MzcsIDE1NTQxLCAKKyAgICAxNTU1MywgMTU1NTksIDE1NTY0LCAxNTU3MSwgMTU1NzcsIDE1NTgzLCAxNTU5NCwgMTU2MDQsIDE1NjEzLCAxNTYyMSwgCisgICAgMTU2MjgsIDE1NjM5LCAxNTY0OSwgMTU2NTksIDE1NjY3LCAxNTY3MCwgMTQzNDYsIDE1Njc1LCAxNTY4MCwgMTQzNTEsIAorICAgIDE0NDg2LCAxNTY4OCwgMTU3MDEsIDE1NzE2LCAxNTcyNywgMTQ1MDMsIDE1NzQ1LCAxNTc1OCwgMTU3NzEsIDE1NzgyLCAKKyAgICAxMDQ4NSwgMTU3OTMsIDE1ODA2LCAxNTgyNSwgMTU4MzYsIDE1ODQ3LCAxNTg1OCwgMjY0OSwgMTU4NzEsIDE1ODc1LCAKKyAgICAxNTg4MywgMTU4OTgsIDE1OTEzLCAxNTkyNCwgMTU5MzEsIDE1OTM3LCAxNTk0NSwgMTU5NDksIDE1OTU1LCAxNTk1OCwgCisgICAgMTU5NjgsIDE1OTc2LCAxNTk4MywgMTU5OTEsIDE2MDAxLCAxNjAwNiwgMTYwMTMsIDE2MDE4LCAxNjAyNSwgMTYwMzYsIAorICAgIDE2MDQ2LCAxNjA1MiwgMTYwNTcsIDE2MDYyLCAxNDM1NiwgMTYwNjYsIDE2MDcyLCAxNjA3OCwgMTYwODMsIDE2MDg4LCAKKyAgICAxNjA5MywgMTYwOTcsIDE0MzYxLCAxNDM2NywgMTYxMDEsIDE0MzczLCAxNjEwNiwgMTYxMTQsIDE2MTIzLCAxNjEzMCwgCisgICAgOTE0MywgMTYxMzQsIDE2MTM2LCAxNjE0MSwgMTYxNDYsIDE2MTUyLCAxNjE1NywgMTYxNjIsIDE2MTY3LCAxNjE3MiwgCisgICAgMTYxNzYsIDE2MTgyLCAxNjE4OCwgMTYxOTMsIDE2MTk5LCAxNjIwNCwgMTYyMDksIDE2MjE1LCAxNjIyMCwgMTYyMjUsIAorICAgIDE2MjMwLCAxNjIzNSwgMTYyNDEsIDE2MjQ2LCAxNjI1MSwgMTYyNTcsIDE2MjYzLCAxNjI2OCwgMTYyNzMsIDE2MjgwLCAKKyAgICAxNjI4NiwgMTYyOTcsIDE2MzA0LCAxNjMwOSwgMTYzMTMsIDE2MzE3LCAxNjMyMCwgMTYzMjgsIDE2MzMzLCAxNjM0MCwgCisgICAgMTYzNDcsIDE2MzUzLCAxNjM1OCwgMTYzNjMsIDE2MzcwLCAxNjM4MCwgMTYzODUsIDE2MzkyLCAxNjM5OCwgMTY0MDgsIAorICAgIDE2NDE4LCAxNjQzMiwgMTY0NDYsIDE2NDYwLCAxNjQ3NCwgMTY0ODksIDE2NTA0LCAxNjUyMSwgMTY1MzksIDE2NTUyLCAKKyAgICAxNjU1OCwgMTY1NjMsIDE2NTY4LCAxNjU3MiwgMTY1NzcsIDE2NTg1LCAxNjU5MSwgMTY1OTYsIDE2NjAxLCAxNjYwNSwgCisgICAgMTY2MTAsIDE2NjE0LCAxNjYxOSwgMTY2MjMsIDE2NjM0LCAxNjY0MCwgMTY2NDUsIDE2NjUwLCAxNjY1NywgMTY2NjIsIAorICAgIDE2NjY2LCAxNjY3MSwgMTY2NzYsIDE2NjgyLCAxNjY4OSwgMTY2OTUsIDE2NzAwLCAxNjcwNCwgMTY3MTAsIDE2NzE1LCAKKyAgICAxNjcyMCwgMTY3MjQsIDE2NzMwLCAxNjczNSwgMTY3NDAsIDE2NzQ3LCAxNjc1MiwgMTMxMDQsIDE2NzU2LCAxNjc2MSwgCisgICAgMTY3NjUsIDE2NzcwLCAxNjc3NiwgMTY3ODIsIDE2Nzg5LCAxNjc5OSwgMTY4MDcsIDE2ODE0LCAxNjgxOSwgMTY4MjMsIAorICAgIDE2ODMyLCAxNjg0MCwgMTY4NDcsIDE2ODU0LCAxNjg2MCwgMTY4NjYsIDE2ODcxLCAxNjg3NiwgMTY4ODIsIDE2ODg3LCAKKyAgICAxNjg5MywgMTY4OTgsIDE2OTA0LCAxNjkxMCwgMTY5MTcsIDE2OTIzLCAxNjkyOCwgMTY5MzMsIDkzNDEsIDE2OTQyLCAKKyAgICAxNjk0NSwgMTY5NTEsIDE2OTU2LCAxNjk2MSwgMTY5NzEsIDE2OTc4LCAxNjk4NCwgMTY5ODksIDE2OTk0LCAxNzAwMCwgCisgICAgMTcwMDUsIDE3MDExLCAxNzAxNiwgMTcwMjIsIDE3MDI4LCAxNzAzMywgMTcwNDEsIDE3MDQ4LCAxNzA1MywgMTcwNTgsIAorICAgIDE3MDY0LCAxNzA2OSwgMTcwNzMsIDE3MDgyLCAxNzA5MywgMTcxMDAsIDE3MTA1LCAxNzExMywgMTcxMTksIDE3MTI2LCAKKyAgICAxNzEzMiwgMTcxMzcsIDE3MTQxLCAxNzE0NywgMTcxNTIsIDE3MTU3LCAxNzE2MiwgMTQ0MCwgNzc3NywgMjg3NywgMTcxNjYsIAorICAgIDE3MTcwLCAxNzE3NCwgMTcxNzgsIDE3MTgyLCAxNzE4NiwgMTcxODksIDE3MTk2LCAxNzIwNCwgMTQzODcsIDE3MjExLCAKKyAgICAxNzIyMSwgMTcyMjksIDE3MjM2LCAxNzI0NCwgMTcyNTQsIDE3MjYzLCAxNzI3NiwgMTcyODEsIDE3Mjg2LCAxNzI5NCwgCisgICAgMTczMDEsIDEzMjAwLCAxMzIwOSwgMTczMDgsIDE3MzE4LCAxNzMzMywgMTczMzksIDE3MzQ2LCAxNzM1MywgMTczNTksIAorICAgIDE3MzY3LCAxNzM3NywgMTczODcsIDE0MzkyLCAxNzM5NiwgMTc0MDIsIDE3NDA4LCAxNzQxNiwgMTc0MjQsIDE3NDI5LCAKKyAgICAxNzQzOCwgMTc0NDYsIDE3NDU4LCAxNzQ2OCwgMTc0NzgsIDE3NDg4LCAxNzQ5NywgMTc1MDksIDE3NTE5LCAxNzUyOSwgCisgICAgMTc1NDAsIDE3NTQ1LCAxNzU1NywgMTc1NjksIDE3NTgxLCAxNzU5MywgMTc2MDUsIDE3NjE3LCAxNzYyOSwgMTc2NDEsIAorICAgIDE3NjUzLCAxNzY2NSwgMTc2NzYsIDE3Njg4LCAxNzcwMCwgMTc3MTIsIDE3NzI0LCAxNzczNiwgMTc3NDgsIDE3NzYwLCAKKyAgICAxNzc3MiwgMTc3ODQsIDE3Nzk2LCAxNzgwNywgMTc4MTksIDE3ODMxLCAxNzg0MywgMTc4NTUsIDE3ODY3LCAxNzg3OSwgCisgICAgMTc4OTEsIDE3OTAzLCAxNzkxNSwgMTc5MjcsIDE3OTM4LCAxNzk1MCwgMTc5NjIsIDE3OTc0LCAxNzk4NiwgMTc5OTgsIAorICAgIDE4MDEwLCAxODAyMiwgMTgwMzQsIDE4MDQ2LCAxODA1OCwgMTgwNjksIDE4MDgxLCAxODA5MywgMTgxMDUsIDE4MTE3LCAKKyAgICAxODEyOSwgMTgxNDEsIDE4MTUzLCAxODE2NSwgMTgxNzcsIDE4MTg5LCAxODIwMCwgMTgyMTIsIDE4MjI0LCAxODIzNiwgCisgICAgMTgyNDgsIDE4MjYwLCAxODI3MiwgMTgyODQsIDE4Mjk2LCAxODMwOCwgMTgzMjAsIDE4MzMxLCAxODM0MywgMTgzNTUsIAorICAgIDE4MzY3LCAxODM3OSwgMTgzOTEsIDE4NDAzLCAxODQxNSwgMTg0MjcsIDE4NDM5LCAxODQ1MSwgMTg0NjIsIDE4NDc0LCAKKyAgICAxODQ4NiwgMTg0OTgsIDE4NTEwLCAxODUyMywgMTg1MzYsIDE4NTQ5LCAxODU2MiwgMTg1NzUsIDE4NTg4LCAxODYwMSwgCisgICAgMTg2MTMsIDE4NjI2LCAxODYzOSwgMTg2NTIsIDE4NjY1LCAxODY3OCwgMTg2OTEsIDE4NzA0LCAxODcxNywgMTg3MzAsIAorICAgIDE4NzQzLCAxODc1NSwgMTg3NjgsIDE4NzgxLCAxODc5NCwgMTg4MDcsIDE4ODIwLCAxODgzMywgMTg4NDYsIDE4ODU5LCAKKyAgICAxODg3MiwgMTg4ODUsIDE4ODk3LCAxODkxMCwgMTg5MjMsIDE4OTM2LCAxODk0OSwgMTg5NjIsIDE4OTc1LCAxODk4OCwgCisgICAgMTkwMDEsIDE5MDE0LCAxOTAyNywgMTkwMzksIDE5MDUyLCAxOTA2NSwgMTkwNzgsIDE5MDkxLCAxOTEwNCwgMTkxMTcsIAorICAgIDE5MTMwLCAxOTE0MywgMTkxNTYsIDE5MTY5LCAxOTE4MSwgMTkxOTQsIDE5MjA3LCAxOTIyMCwgMTkyMzMsIDE5MjQ2LCAKKyAgICAxOTI1OSwgMTkyNzIsIDE5Mjg1LCAxOTI5OCwgMTkzMTEsIDE5MzIzLCAxOTMzNCwgMTkzNDcsIDE5MzYwLCAxOTM3MywgCisgICAgMTkzODYsIDE5Mzk5LCAxOTQxMiwgMTk0MjUsIDE5NDM4LCAxOTQ1MSwgMTk0NjQsIDE5NDc2LCAxOTQ4OSwgMTk1MDIsIAorICAgIDE5NTE1LCAxOTUyOCwgMTk1NDEsIDE5NTU0LCAxOTU2NywgMTk1ODAsIDE5NTkzLCAxOTYwNiwgMTk2MTgsIDE5NjMxLCAKKyAgICAxOTY0NCwgMTk2NTcsIDE5NjcwLCAxOTY4MywgMTk2OTYsIDE5NzA5LCAxOTcyMiwgMTk3MzUsIDE5NzQ4LCAxOTc2MCwgCisgICAgMTk3NzMsIDE5Nzg2LCAxOTc5OSwgMTk4MTIsIDE5ODI1LCAxOTgzOCwgMTk4NTEsIDE5ODY0LCAxOTg3NywgMTk4OTAsIAorICAgIDE5OTAyLCAxOTkxNSwgMTk5MjgsIDE5OTQxLCAxOTk1NCwgMTk5NjcsIDE5OTgwLCAxOTk5MywgMjAwMDYsIDIwMDE5LCAKKyAgICAyMDAzMiwgMjAwNDQsIDIwMDU3LCAyMDA3MCwgMjAwODMsIDIwMDk2LCAyMDEwOSwgMjAxMjIsIDIwMTM1LCAyMDE0OCwgCisgICAgMjAxNjEsIDIwMTc0LCAyMDE4NiwgMjAxOTksIDIwMjEyLCAyMDIyNSwgMjAyMzgsIDIwMjUxLCAyMDI2NCwgMjAyNzcsIAorICAgIDIwMjkwLCAyMDMwMywgMjAzMTYsIDIwMzI4LCAyMDM0MSwgMjAzNTQsIDIwMzY3LCAyMDM4MCwgMjAzOTMsIDIwNDA2LCAKKyAgICAyMDQxOSwgMjA0MzIsIDIwNDQ1LCAyMDQ1OCwgMjA0NzAsIDIwNDgzLCAyMDQ5NiwgMjA1MDksIDIwNTIyLCAyMDUzNSwgCisgICAgMjA1NDgsIDIwNTYxLCAyMDU3NCwgMjA1ODcsIDIwNjAwLCAyMDYxMiwgMjA2MjUsIDIwNjM4LCAyMDY1MSwgMjA2NjQsIAorICAgIDIwNjc3LCAyMDY5MCwgMjA3MDMsIDIwNzE2LCAyMDcyOSwgMjA3NDIsIDIwNzU0LCAyMDc2NSwgMjA3NzMsIDIwNzgxLCAKKyAgICAyMDc4OCwgMjA3OTQsIDIwNzk4LCAyMDgwNCwgMjA4MTAsIDIwODE4LCAyMDgyNCwgMjA4MjksIDIwODMzLCAyMDg0MiwgCisgICAgOTE0OCwgMjA4NTMsIDIwODYwLCAyMDg2OCwgMjA4NzUsIDIwODgyLCAxMDk0MSwgMjA4ODksIDIwODk4LCAyMDkwMywgCisgICAgMjA5MDgsIDc4MDUsIDIwOTE1LCAyMDkyMCwgMjA5MjMsIDIwOTI4LCAyMDkzNiwgMjA5NDMsIDIwOTUwLCAyMDk1NywgCisgICAgMjA5NjMsIDIwOTcyLCAyMDk4MSwgMjA5ODcsIDIwOTk2LCAyMTAwMCwgMjEwMDYsIDIxMDExLCAyMTAyMSwgMjEwMjgsIAorICAgIDIxMDM0LCAyMTA0MiwgMjEwNDgsIDIxMDU1LCAyMTA2NSwgMjEwNzQsIDIxMDc4LCAyMTA4NSwgMjEwODksIDIxMDk0LCAKKyAgICAyMTEwMCwgMjExMDgsIDIxMTEyLCAyMTEyMiwgMTQ0MDIsIDIxMTMxLCAyMTEzNywgMjExNDEsIDIxMTUwLCAxNDQwNywgCisgICAgMjExNTYsIDIxMTYzLCAyMTE3NCwgMjExODIsIDIxMTkxLCAyMTE5OSwgODkzMSwgMjEyMDcsIDIxMjEyLCAyMTIxOCwgCisgICAgMjEyMjMsIDIxMjI3LCAyMTIzMSwgMjEyMzUsIDk2MzIsIDIxMjQwLCAyMTI0OCwgMjEyNTUsIDIxMjY0LCAyMTI3MSwgCisgICAgMjEyNzgsIDEwODcxLCAyMTI4NSwgMjEyOTEsIDIxMjk1LCAyMTMwMSwgMjEzMDgsIDIxMzE0LCAyMTMyMiwgMjEzMjgsIAorICAgIDIxMzM1LCAyMTM0MSwgMjEzNDcsIDIxMzU2LCAyMTM2MCwgMjEzNjgsIDIxMzc3LCAyMTM4NCwgMjEzODksIDIxMzkzLCAKKyAgICAyMTQwNCwgMjE0MDksIDIxNDE0LCAyMTQxOSwgMjE0MzIsIDc5OTUsIDIxNDM2LCAyMTQ0MiwgMjE0NTAsIDIxNDU0LCAKKyAgICAyMTQ2MSwgMjE0NzAsIDIxNDc1LCAxNDY3OCwgMjE0ODMsIDIxNDg3LCAyMTQ5OSwgMjE1MDQsIDIxNTA4LCAyMTUxMSwgCisgICAgMjE1MTcsIDIxNTIzLCAyMTUyOCwgMjE1MzIsIDIxNTM1LCAyMTU0NiwgMjE1NTEsIDkzNzYsIDIxNTU4LCAyMTU2MywgCisgICAgOTM4MSwgMjE1NjgsIDIxNTczLCAyMTU3OCwgMjE1ODMsIDIxNTg4LCAyMTU5MywgMjE1OTgsIDIxNjAzLCAyMTYwOCwgCisgICAgMjE2MTMsIDIxNjE4LCAyMTYyMywgMjE2MjksIDIxNjM0LCAyMTYzOSwgMjE2NDQsIDIxNjQ5LCAyMTY1NCwgMjE2NTksIAorICAgIDIxNjY0LCAyMTY2OSwgMjE2NzQsIDIxNjgwLCAyMTY4NiwgMjE2OTEsIDIxNjk2LCAyMTcwMSwgMjE3MDYsIDIxNzExLCAKKyAgICAyMTcxNiwgMjE3MjEsIDIxNzI2LCAyMTczMSwgMjE3MzcsIDIxNzQyLCAyMTc0NywgMjE3NTIsIDIxNzU4LCAyMTc2NCwgCisgICAgMjE3NjksIDIxNzc0LCAyMTc3OSwgMjE3ODQsIDIxNzg5LCAyMTc5NCwgMjE3OTksIDIxODA0LCAyMTgxMCwgMjE4MTUsIAorICAgIDIxODIwLCAyMTgyNSwgMjE4MzAsIDIxODM2LCAyMTg0MSwgMjE4NDYsIDIxODUwLCAxMzY4LCAxMjksIDIxODU4LCAyMTg2MiwgCisgICAgMjE4NjYsIDIxODcwLCAyMTg3NSwgMjE4NzksIDEzMTEwLCAxMjQ2OSwgMjE4ODMsIDIxODg4LCAyMTg5MiwgMjE4OTcsIAorICAgIDIxOTAxLCAyMTkwNiwgMjE5MTAsIDIxOTE2LCAyMTkyMSwgMjE5MjUsIDIxOTI5LCAyMTkzNywgMjE5NDEsIDIxOTQ1LCAKKyAgICAyMTk1MCwgMjE5NTUsIDIxOTU5LCAyMTk2NSwgMjE5NzAsIDIxOTc0LCAyMTk3OSwgMjE5ODQsIDIxOTg4LCAyMTk5NSwgCisgICAgMjIwMDIsIDIyMDA5LCAyMjAxMywgMjIwMTcsIDIyMDIyLCAyMjAyNiwgMjIwMjksIDIyMDM1LCAyMjA0OCwgMjIwNTMsIAorICAgIDIyMDYyLCAyMjA2NywgOTQyMSwgMjIwNzIsIDIyMDc1LCAyNzEyLCAyNzE3LCAyMjA3OSwgMjIwODUsIDIyMDkxLCA3MjA5LCAKKyAgICAyMjA5NiwgMjIxMDEsIDIyMTA2LCAyMjExMiwgMjIxMTcsIDEzODk2LCAyMjEyMiwgMjIxMjcsIDIyMTMyLCAyMjEzNywgCisgICAgMjIxNDMsIDIyMTQ4LCAyMjE1MywgMjIxNTksIDIyMTY0LCAyMjE2OCwgMjIxNzMsIDIyMTc4LCAyMjE4MywgMjIxODgsIAorICAgIDIyMTkyLCAyMjE5NywgMjIyMDEsIDIyMjA2LCAyMjIxMSwgMjIyMTYsIDIyMjIxLCAyMjIyNSwgMjIyMzAsIDIyMjM0LCAKKyAgICAyMjIzOSwgMjIyNDQsIDIyMjQ5LCAyMjI1NCwgMjg4NiwgMjIxNjksIDIyMjU4LCAyMjI2NiwgMjIyNzMsIDk3MjYsIAorICAgIDIyMjg1LCAyMjI5MywgMjIxNzQsIDIyMzAwLCAyMjMwNSwgMjIzMTMsIDIyMTc5LCAyMjMxOCwgMjIzMjMsIDIyMzMxLCAKKyAgICAyMjMzNiwgMjIxODQsIDIyMzQxLCAyMjM0NiwgMjIzNTAsIDIyMzU2LCAyMjM2NCwgMjIzNjcsIDIyMzc0LCAyMjM3OCwgCisgICAgMjIzODIsIDIyMzg4LCAyMjM5NSwgMjI0MDAsIDg5NTgsIDE3MjcsIDE3MzIsIDIyNDA0LCAyMjQxMCwgMjI0MTYsIDIyNDIxLCAKKyAgICAyMjQyNSwgMjI0MjksIDIyNDMzLCAyMjQzNywgMjI0NDEsIDIyNDQ1LCAyMjQ0OSwgMjI0NTIsIDIyNDU4LCAyMjQ2NSwgCisgICAgMjI0NzMsIDIyNDc5LCAyMjQ4NSwgMjI0OTAsIDIyNDk1LCAyMjQ5OSwgMTM4MTYsIDEzODIzLCAyMjUwNCwgMjI1MTYsIAorICAgIDIyNTE5LCAyMjUyNiwgMTYzNDksIDIyNTMzLCAyMjU0MSwgMjI1NTIsIDIyNTYxLCAyMjU3NCwgMjI1ODQsIDIyNTk4LCAKKyAgICAyMjYxMCwgMjI2MjQsIDIyNjM2LCAyMjY0NiwgMjI2NTgsIDIyNjY0LCAyMjY3OSwgMjI3MDMsIDIyNzIxLCAyMjc0MCwgCisgICAgMjI3NTMsIDIyNzY3LCAyMjc4NSwgMjI4MDEsIDIyODE4LCAyMjgzNiwgMjI4NDcsIDIyODY2LCAyMjg4MywgMjI5MDMsIAorICAgIDIyOTIxLCAyMjkzMywgMjI5NDcsIDIyOTYxLCAyMjk3MywgMjI5OTAsIDIzMDA5LCAyMzAyNywgMjMwMzksIDIzMDU3LCAKKyAgICAyMzA3NiwgMTQ1NDYsIDIzMDg5LCAyMzEwOSwgMjMxMjEsIDEwNTE2LCAyMzEzMywgMjMxMzgsIDIzMTQzLCAyMzE0OCwgCisgICAgMjMxNTQsIDIzMTU5LCAyMzE2MywgMjMxNzAsIDIzOTgsIDIzMTc0LCAyMzE4MCwgMjMxODQsIDIzMTg3LCAyMzE5MSwgCisgICAgMjMxOTksIDIzMjA1LCAyMjIwMiwgMjMyMDksIDIzMjE4LCAyMzIyOSwgMjMyMzUsIDIzMjQxLCAyMzI1MCwgMjMyNTgsIAorICAgIDIzMjY1LCAyMzI3MCwgMjMyNzQsIDIzMjgxLCAyMzI4NywgMjMyOTYsIDIzMzA0LCAyMzMxMSwgMjMzMjEsIDIzMzMwLCAKKyAgICAyMzM0MCwgMjMzNDUsIDIzMzU0LCAyMzM2MywgMjMzNzQsIDIzMzg1LCAzOTYzLCAyMzM5NSwgMjMzOTksIDIzNDA5LCAKKyAgICAyMzQxNywgMjM0MjcsIDIzNDM4LCAyMzQ0MywgMjM0NTMsIDIzNDYxLCAyMzQ2OCwgMjM0NzQsIDIzNDgxLCAyMzQ4NiwgCisgICAgMjIyMTIsIDIzNDkwLCAyMzQ5OSwgMjM1MDMsIDIzNTA2LCAyMzUxMSwgMjM1MTgsIDIzNTI3LCAyMzUzNSwgMjM1NDMsIAorICAgIDIzNTUzLCAyMzU2MiwgMjM1NjgsIDIzNTc0LCAyMjIxNywgMjIyMjIsIDIzNTc4LCAyMzU4OCwgMjM1OTgsIDIzNjA4LCAKKyAgICAyMzYxNiwgMjM2MjMsIDIzNjMzLCAyMzY0MSwgMjM2NDksIDIzNjU1LCAyMzY2MywgOTMwLCAyMzY3MiwgMTQ3MzcsIDU0MiwgCisgICAgMjM2ODYsIDIzNjk1LCAyMzcwMywgMjM3MTQsIDIzNzI1LCAyMzczNSwgMjM3NDQsIDIzNzU2LCAyMzc2NSwgMjM3NzQsIAorICAgIDIzNzgwLCAyMzc4OSwgMjM3OTgsIDIzODA4LCAyMzgxNiwgMjM4MjQsIDkzNTMsIDIzODMwLCAyMzgzMywgMjM4MzcsIAorICAgIDIzODQyLCAyMzg0NywgOTg0MSwgMjIyMzUsIDIyMjQwLCAyMzg1NSwgMjM4NjEsIDIzODY3LCAyMzg3MiwgMjM4NzcsIAorICAgIDIzODgxLCAyMzg4OSwgMjM4OTUsIDIzOTAxLCAyMzkwNSwgMzUyNSwgMjM5MTMsIDIzOTE4LCAyMzkyMywgMjM5MjcsIAorICAgIDIzOTMxLCA5OTIxLCAyMzkzOCwgMjM5NDYsIDIzOTYwLCAyMzk2NywgMjM5NzMsIDk5MzAsIDk5MzYsIDIzOTgxLCAyMzk4OSwgCisgICAgMjM5OTYsIDI0MDAxLCAyNDAwNiwgMjIyNDUsIDI0MDEyLCAyNDAyMywgMjQwMjcsIDI0MDMyLCAyNjAxLCAyNDAzNywgCisgICAgMjQwNDgsIDI0MDU0LCAyNDA1OSwgMjQwNjMsIDI0MDY3LCAyNDA3MCwgMjQwNzcsIDI0MDg0LCAyNDA5MSwgMjQwOTcsIAorICAgIDI0MTAxLCAyMjI1MCwgMjQxMDYsIDI0MTEwLCAyNDExNCwgMTAzNywgMjQxMTksIDI0MTI0LCAyNDEyOSwgMjQxMzQsIAorICAgIDI0MTM5LCAyNDE0NCwgMjQxNDksIDI0MTU0LCAyNDE1OSwgMjQxNjQsIDI0MTY5LCAyNDE3NCwgMjQxNzksIDI0MTg0LCAKKyAgICAyNDE5MCwgMjQxOTUsIDI0MjAwLCAyNDIwNSwgMjQyMTAsIDI0MjE1LCAyNDIyMCwgMjQyMjYsIDI0MjMxLCAyNDIzNiwgCisgICAgMjQyNDEsIDI0MjQ2LCAyNDI1MSwgMjQyNTYsIDI0MjYxLCAyNDI2NywgMjQyNzMsIDI0Mjc4LCAyNDI4NCwgMjQyODksIAorICAgIDI0Mjk0LCA1LCAyNDMwMCwgMjQzMDQsIDI0MzA4LCAyNDMxMiwgMjQzMTcsIDI0MzIxLCAyNDMyNSwgMjQzMjksIDI0MzMzLCAKKyAgICAyNDMzOCwgMjQzNDIsIDI0MzQ3LCAyNDM1MSwgMjQzNTQsIDI0MzU4LCAyNDM2MywgMjQzNjcsIDI0MzcyLCAyNDM3NiwgCisgICAgMjQzODAsIDI0Mzg0LCAyNDM4OSwgMjQzOTMsIDI0Mzk3LCAyNDQwNywgMjQ0MTIsIDI0NDE2LCAyNDQyMCwgMjQ0MjUsIAorICAgIDI0NDMwLCAyNDQzOSwgMjQ0NDQsIDI0NDQ5LCAyNDQ1MywgMjQ0NTcsIDI0NDcwLCAyNDQ4MiwgMjQ0OTEsIDI0NTAwLCAKKyAgICAyNDUwNiwgMjQ1MTEsIDI0NTE1LCAyNDUxOSwgMjQ1MjksIDI0NTM4LCAyNDU0NiwgMjQ1NTIsIDI0NTU3LCAyNDU2MSwgCisgICAgMjQ1NjgsIDI0NTc4LCAyNDU4NywgMjQ1OTUsIDI0NjAzLCAyNDYxMCwgMjQ2MTgsIDI0NjI3LCAyNDYzNiwgMjQ2NDQsIAorICAgIDI0NjQ5LCAyNDY1MywgMjQ2NTcsIDI0NjYwLCAyNDY2MiwgMjQ2NjYsIDI0NjcwLCAyNDY3NSwgMjQ2ODAsIDI0Njg0LCAKKyAgICAyNDY4OCwgMjQ2OTEsIDI0Njk1LCAyNDY5OCwgMjQ3MDIsIDI0NzA1LCAyNDcwOCwgMjQ3MTIsIDI0NzE4LCAyNDcyMiwgCisgICAgMjQ3MjYsIDI0NzMwLCAyNDczNSwgMjQ3NDAsIDI0NzQ1LCAyNDc0OSwgMjQ3NTIsIDI0NzU3LCAyNDc2MywgMjQ3NjgsIAorICAgIDI0Nzc0LCAyNDc3OSwgMjQ3ODMsIDI0Nzg3LCAyNDc5MSwgMjQ3OTYsIDI0ODAwLCAyNDgwNSwgMjQ4MDksIDI0ODEzLCAKKyAgICAyNDgyMCwgMjQ4MjQsIDI0ODI3LCAyNDgzMSwgMjQ4MzcsIDI0ODQzLCAyNDg0NywgMjQ4NTEsIDI0ODU2LCAyNDg2MywgCisgICAgMjQ4NjksIDI0ODczLCAyNDg4MiwgMjQ4ODYsIDI0ODkwLCAyNDg5MywgMjQ4OTksIDI0OTA0LCAyNDkxMCwgMTQ4OSwgCisgICAgMTc5MSwgMjQ5MTUsIDI0OTIwLCAyNDkyNSwgMjQ5MzAsIDI0OTM1LCAyNDk0MCwgMjQ5NDUsIDIxNDgsIDIxOTQsIDI0OTUwLCAKKyAgICAyNDk1MywgMjQ5NTcsIDI0OTYxLCAyNDk2NiwgMjQ5NzAsIDI0OTc0LCAyNDk3NywgMjQ5ODIsIDI0OTg3LCAyNDk5MSwgCisgICAgMjQ5OTQsIDI0OTk5LCAyNTAwMywgMjUwMDgsIDI1MDEyLCAxNDc0OSwgMjUwMTcsIDI1MDIwLCAyNTAyMywgMjUwMjcsIAorICAgIDI1MDMyLCAyNTAzNiwgMjUwNDksIDI1MDUzLCAyNTA1NiwgMjUwNjQsIDI1MDczLCAyNTA4MCwgMjUwODUsIDI1MDkxLCAKKyAgICAyNTA5NywgMjUxMDUsIDI1MTEyLCAyNTExOSwgMjUxMjMsIDI1MTI3LCAyNTEzMSwgMjUxMzYsIDI1MTQxLCAyNTE0NSwgCisgICAgMjUxNTMsIDI1MTU4LCAyNTE3MCwgMjUxODEsIDI1MTg2LCAyNTE5MCwgMjUxOTQsIDI1MjAwLCAyNTIwNSwgMjUyMTAsIAorICAgIDI1MjE0LCAyNTIxOCwgMjUyMjEsIDI1MjI3LCA3OTE1LCAyMzE2LCAyNTIzMSwgMjUyMzYsIDI1MjUyLCA5NDY4LCAyNTI3MiwgCisgICAgMjUyODEsIDI1Mjk3LCAyNTMwMSwgMjUzMDQsIDI1MzEwLCAyNTMyMCwgMjUzMjYsIDI1MzM1LCAyNTM1MCwgMjUzNjIsIAorICAgIDI1MzczLCAyNTM4MSwgMjUzOTAsIDI1Mzk2LCAyNTQwNSwgMjU0MTUsIDI1NDI2LCAyNTQzNywgMjU0NDYsIDI1NDUzLCAKKyAgICAyNTQ2MiwgMjU0NzAsIDI1NDc3LCAyNTQ4NSwgMjU0OTIsIDI1NDk5LCAyNTUxMiwgMjU1MTksIDI1NTI1LCAyNTUzMCwgCisgICAgMjU1MzksIDI1NTQ1LCAyNTU1MCwgMjU1NTgsIDI1NTY1LCAyMzQxOSwgMjU1NzcsIDI1NTg5LCAyNTYwMywgMjU2MTEsIAorICAgIDI1NjE4LCAyNTYzMCwgMjU2MzksIDI1NjQ4LCAyNTY1NiwgMjU2NjQsIDI1NjcyLCAyNTY3OSwgMjU2ODgsIDI1Njk2LCAKKyAgICAyNTcwNiwgMjU3MTUsIDI1NzI1LCAyNTczNCwgMjU3NDMsIDI1NzUxLCAyNTc1NiwgMjU3NjAsIDI1NzYzLCAyNTc2NywgCisgICAgMjU3NzEsIDI1Nzc1LCAyNTc3OSwgMjU3ODMsIDI1Nzg5LCAyNTc5NSwgMjU4MDMsIDE0Nzk0LCAyNTgxMCwgMjU4MTUsIAorICAgIDI1ODIyLCAyNTgyOCwgMjU4MzUsIDE0ODAyLCAyNTg0MiwgMjU4NDUsIDI1ODU3LCAyNTg2NSwgMjU4NzEsIDI1ODc2LCAKKyAgICAyNTg4MCwgOTg3MSwgMjU4OTEsIDI1OTAxLCAyNTkxMCwgMjU5MTcsIDI1OTIxLCAxNDgwNywgMjU5MjQsIDI1OTMxLCAKKyAgICAyNTkzNSwgMjU5NDEsIDI1OTQ0LCAyNTk1MSwgMjU5NTcsIDI1OTY0LCAyNTk3MCwgMjU5NzQsIDI1OTc5LCAyNTk4MywgCisgICAgMjU5OTIsIDI1OTk5LCAyNjAwNSwgNzk1NiwgMjYwMTIsIDI2MDIwLCAyNjAyNywgMjYwMzMsIDI2MDM4LCAyNjA0NCwgCisgICAgMjYwNTAsIDI2MDU4LCAyNjA2MiwgMjYwNjUsIDI2MDY3LCAyNTc2OCwgMjYwNzYsIDI2MDgyLCAyNjA5MiwgMjYwOTcsIAorICAgIDI2MTA0LCAyNjExMCwgMjYxMTUsIDI2MTIwLCAyNjEyNSwgMjYxMjksIDI2MTM0LCAyNjE0MSwgMjYxNTAsIDI2MTU0LCAKKyAgICAyNjE2MSwgMjYxNzAsIDI2MTc2LCAyNjE4MSwgMjYxODcsIDI2MTkyLCAyNjE5OSwgMjYyMTAsIDI2MjE1LCAyNjIxOSwgCisgICAgMjYyMjksIDI2MjM1LCAyNjIzOSwgMjYyNDQsIDI2MjU0LCAyNjI2MywgMjYyNjcsIDI2Mjc0LCAyNjI4MiwgMjYyODksIAorICAgIDI2Mjk1LCAyNjMwMCwgMjYzMDgsIDI2MzE1LCAyNjMyNywgMjYzMzYsIDI2MzQwLCAxMzA0NiwgMjYzNDgsIDI2MzU4LCAKKyAgICAyNjM2MiwgMjUwNjAsIDI2MzczLCAyNjM3OCwgMjYzODIsIDI2Mzg5LCAyNjM5NiwgMjE5NjEsIDI1NjkzLCAyNjQwMSwgCisgICAgMjY0MDUsIDI2NDA4LCAyMjg1MywgMjY0MTMsIDI2NDI3LCAyNjQ0MywgMjY0NjEsIDI2NDgwLCAyNjQ5NywgMjY1MTUsIAorICAgIDIyODcyLCAyNjUzMiwgMjY1NTIsIDIyODg5LCAyNjU2NCwgMjY1NzYsIDE1NzMyLCAyNjU4OCwgMjI5MDksIDI2NjAyLCAKKyAgICAyNjYxNCwgMTA1MjksIDI2NjI4LCAyNjYzMywgMjY2MzgsIDI2NjQzLCAyNjY0OSwgMjY2NTUsIDI2NjYxLCAyNjY2NSwgCisgICAgMjY2NzIsIDI2Njc3LCAyNjY4NywgMjY2OTMsIDEwMTc2LCAyNjY5OSwgMjY3MDEsIDI2NzA2LCAyNjcxNCwgMjY3MTgsIAorICAgIDI2MTM3LCAyNjcyNCwgMjY3MzEsIDExNTE3LCAxMTUyNywgMjY3MzgsIDI2NzQ4LCAyNjc1MywgMjY3NTcsIDI2NzYwLCAKKyAgICAyNjc2NiwgMjY3NzQsIDI2Nzg2LCAyNjc5NiwgMjY4MTIsIDI2ODI1LCAyNjgzOSwgMTU3NTAsIDI2ODUzLCAyNjg2MCwgCisgICAgMjY4NjQsIDI2ODY3LCAyNjg3MiwgMjY4NzYsIDI2ODgzLCAyNjg5MCwgMjY5MDAsIDI2OTA1LCAyNjkxMCwgMjY5MTUsIAorICAgIDI2OTIzLCAyNjkzMSwgMjY5NDAsIDI2OTQ1LCA5NTY1LCAyNjk0OSwgMjY5NTIsIDI2OTU1LCAyNjk2MCwgMjY5NjcsIAorICAgIDI2OTcyLCAyNjk4OCwgMjY5OTYsIDI3MDA0LCA5NDE2LCAyNzAxMiwgMjcwMTcsIDI3MDIxLCAyNzAyNywgMjcwMzMsIAorICAgIDI3MDM2LCAyNzA0MiwgMjcwNTQsIDI3MDYyLCAyNzA2OSwgMjcwNzUsIDI3MDgyLCAyNzA5MywgMjcxMDcsIDI3MTIwLCAKKyAgICAyNzEyOSwgMjcxMzgsIDI3MTUwLCAyNzE2MSwgMjcxNzEsIDI3MTgwLCAyNzE4OSwgMjcxOTcsIDI3MjA4LCA3OTM4LCAKKyAgICAyNzIxNSwgMjcyMjEsIDI3MjI2LCAyNzIzMiwgMjcyMzksIDI3MjQ5LCAyNzI1OSwgMjcyNjgsIDI3Mjc0LCAyNzI4MSwgCisgICAgMjcyODYsIDI3MjkzLCAyNzMwMSwgMjczMDksIDI3MzIxLCA2MjQ2LCAyNzMyOCwgMjczMzcsIDI3MzQ1LCAyNzM1MSwgCisgICAgMjczNTcsIDI3MzYyLCAyNzM2NiwgMjczNjksIDI3Mzc1LCAyNzM4MiwgMjczODcsIDI3MzkyLCAyNzM5NiwgMjc0MDgsIAorICAgIDI3NDE5LCAyNzQyOCwgMjc0MzYsIDE0OTM0LCAyNzQ0MSwgMjc0NDcsIDI3NDUzLCAxMTUxMCwgODYzNSwgMjc0NTgsIAorICAgIDI3NDYyLCAyNzQ2NSwgMjc0NjgsIDI3NDc0LCAyNzQ4MiwgMjc0OTAsIDI3NDk0LCAyNzQ5OCwgMjc1MDMsIDI3NTA2LCAKKyAgICAyNzUxNSwgMjc1MTksIDI3NTI3LCAyNzUzOCwgMjc1NDIsIDI3NTQ4LCAyNzU1NCwgMjc1NTgsIDI3NTY0LCAyNzU3MiwgCisgICAgMjc1OTQsIDI3NjE4LCAyNzYyNSwgMjc2MzIsIDI3NjM4LCAyNzY0NiwgMjc2NTIsIDI3NjU3LCAyNzY2OCwgMjc2ODYsIAorICAgIDI3NjkzLCAyNzcwMSwgMjc3MDUsIDI3NzE0LCAyNzcyNywgMjc3MzUsIDI3NzQ3LCAyNzc1OCwgMjc3NjgsIDI3NzgyLCAKKyAgICAyNzc5MSwgMjc3OTksIDI3ODExLCA5NDg1LCAyNzgyMiwgMjc4MzMsIDI3ODQ1LCAyNzg1NSwgMjc4NjQsIDI3ODY5LCAKKyAgICAyNzg3MywgMjc4ODEsIDI3ODkxLCAyNzg5NiwgMjc5MDAsIDI3OTAzLCAyNzkwNiwgMjc5MTQsIDI3OTIyLCAyNzkzMSwgCisgICAgMjc5NDEsIDI3OTUwLCAyNzk1NiwgMjc5NzAsIDI2NjMsIDI3OTkyLCAyODAwMywgMjgwMTIsIDI4MDIyLCAyODAzNCwgCisgICAgMjgwNDMsIDI4MDUyLCAyODA2MiwgMjgwNzAsIDI4MDc4LCAyODA4NywgMjgwOTIsIDI4MTAzLCAyODEwOCwgMjgxMTksIAorICAgIDI4MTIzLCAyODEzMywgMjgxNDIsIDI4MTUwLCAyODE2MCwgMjgxNzAsIDI4MTc4LCAyODE4NywgMjgxOTQsIDI4MjAyLCAKKyAgICAyODIwOSwgMjgyMTgsIDI4MjIyLCAyODIzMCwgMjgyMzcsIDI4MjQ1LCAyODI1MiwgMjgyNjMsIDI4Mjc4LCAyODI4NSwgCisgICAgMjgyOTEsIDI4MzAxLCAyODMxMCwgMjgzMTYsIDI4MzIwLCAyODMyNywgMjgzMzEsIDE0MDE4LCAyODMzNywgMjgzNDEsIAorICAgIDI4MzQ2LCAyODM1MywgMjgzNTcsIDI4MzYxLCAyODM2OSwgMjgzNzcsIDI4MzgzLCAyODM5MiwgMjgzOTksIDI4NDA0LCAKKyAgICAyODQwOSwgMjg0MTksIDIzNDg4LCAyODQyMywgMjg0MjYsIDI4NDMxLCAyODQzNiwgMjg0NDEsIDI4NDQ2LCAyODQ1MSwgCisgICAgMjg0NTYsIDI4NDYxLCAyODQ2NiwgMjg0NzIsIDI4NDc3LCAyODQ4MiwgMjg0ODgsIDEyMTgsIDcwNCwgMjg0OTMsIDI4NTAyLCAKKyAgICAyMzY0LCAyODUwOSwgMjg1MTQsIDI4NTE4LCAyODUyNCwgMTI2NywgNTQ2LCAzMTgsIDI4NTI5LCAyODUzOCwgMjg1NDYsIAorICAgIDI4NTU1LCAyODU2MywgMjg1NzQsIDI4NTgzLCAyODU5MSwgMjg1OTUsIDI4NTk4LCAyODYwNiwgMjg2MTQsIDI4NjE5LCAKKyAgICAxNDc2MiwgMjg2MjUsIDI4NjMxLCAyODYzNywgNTg3MiwgMjg2NDIsIDI4NjQ2LCAyODY1MiwgMjg2NTYsIDI4NjYzLCAKKyAgICAxNDU1LCAyODY2OSwgMjg2NzYsIDk1NzIsIDI4NjgwLCAyODY5MCwgMjg2OTgsIDI4NzA0LCAyODcxMywgMjg3MjEsIAorICAgIDI4NzI3LCAyODczNSwgMjg3NDIsIDExMTAzLCAyODc0OCwgMjg3NTUsIDI4NzYwLCAyODc2NywgMTQ5NiwgMjE0NywgCisgICAgMjg3NzMsIDI4Nzc5LCAyODc4NiwgMjg3OTcsIDI4ODA4LCAyODgxNiwgMjg4MjMsIDI4ODMzLCAyODg0MiwgMjg4NTAsIAorICAgIDI4ODU5LCAyODg2NiwgMjg4NzMsIDI4ODg2LCAyODg5NywgMTI3MiwgMjg5MTYsIDI4OTIxLCAyODkyOSwgMzU3NSwgCisgICAgMjg5MzMsIDI4OTM4LCAyODk0MiwgMTQ1OSwgMjQ2ODksIDI4OTUyLCAyODk1NiwgMjg5NjEsIDI4OTY1LCAzNDkzLCAKKyAgICAyODk3MSwgMjg5NzksIDI4OTg2LCAyODk5NywgMjkwMDUsIDI5MDEzLCAzNTc2LCAyNzksIDI5MDE4LCAyOTAyNiwgMjkwMzQsIAorICAgIDI5MDQxLCAyOTA0NywgMjkwNTIsIDIyMTYsIDI5MDU5LCAyOTA2NSwgMjU5NzUsIDI2MjA1LCAyOTA3MSwgMTA2LCAyOTA3NSwgCisgICAgMjkwNzksIDI5MDg1LCA2MTUsIDkzMjEsIDI5MDkwLCAyOTA5NywgMjkxMDMsIDIzMjcsIDI5MTA3LCAyOTExMSwgMTUxNzQsIAorICAgIDI5MTE0LCAyOTExOSwgMjkxMjYsIDI5MTMyLCAyOTEzNywgMjkxNDUsIDI5MTUyLCAyOTE1OCwgMjIzMzgsIDI5MTYyLCAKKyAgICAyOTE2NiwgMzY0NiwgMTY2MTIsIDI5MTcwLCAyOTE3NSwgMjkxNzgsIDI5MTg2LCAyOTE5NCwgMjkxOTksIDI5MjAyLCAKKyAgICAyOTIwOSwgMjkyMTksIDI5MjMxLCAyOTIzNiwgMjkyNDAsIDI5MjQ4LCAyOTI1NSwgMjkyNjEsIDI5MjY4LCAyOTI3NSwgCisgICAgMjkyNzgsIDI5MjgyLCAyOTI4NiwgMTQ2MywgMjkyOTYsIDI5Mjk4LCAyOTMwMywgMjkzMDksIDI5MzE1LCAyOTMyMCwgCisgICAgMjkzMjUsIDI5MzMwLCAyOTMzNSwgMjkzNDAsIDI5MzQ1LCAyOTM1MCwgMjkzNTUsIDI5MzYwLCAyOTM2NSwgMjkzNzAsIAorICAgIDI5Mzc1LCAyOTM4MCwgMjkzODUsIDI5MzkxLCAyOTM5NywgMjk0MDMsIDI5NDA5LCAyOTQxNCwgMjk0MTksIDI5NDI0LCAKKyAgICAyOTQzMCwgMjk0MzUsIDI5NDQwLCAyOTQ0NSwgMjk0NTEsIDI5NDU2LCAyOTQ2MiwgMjk0NjcsIDI5NDcyLCAyOTQ3NywgCisgICAgMjk0ODIsIDI5NDg4LCAyOTQ5MywgMjk0OTksIDI5NTA0LCAyOTUwOSwgMjk1MTQsIDI5NTE5LCAyOTUyNSwgMjk1MzAsIAorICAgIDI5NTM2LCAyOTU0MSwgMjk1NDYsIDI5NTUxLCAyOTU1NiwgMjk1NjEsIDI5NTY2LCAyOTU3MSwgMjk1NzYsIDI5NTgxLCAKKyAgICAyOTU4NywgMjk1OTMsIDI5NTk5LCAyOTYwNCwgMjk2MDksIDI5NjE0LCAyOTYxOSwgMjk2MjUsIDI5NjMxLCAyOTYzNywgCisgICAgMjk2NDMsIDI5NjQ5LCAyOTY1NSwgMjk2NjAsIDI5NjY2LCAyOTY3MSwgMjk2NzYsIDI5NjgxLCAyOTY4NiwgMjk2OTIsIAorICAgIDI0NDMsIDI5Njk3LCAyNDUwLCAyNDU3LCAyNzU0LCAyOTcwMiwgMjQ2MywgMjQ3MywgMjk3MDgsIDI5NzEyLCAyOTcxNywgCisgICAgMjk3MjIsIDI5NzI4LCAyOTczMywgMjk3MzgsIDI5NzQyLCAyOTc0NywgMjk3NTMsIDI5NzU4LCAyOTc2MywgMjk3NjgsIAorICAgIDI5Nzc0LCAyOTc3OSwgMjk3ODMsIDI5Nzg3LCAyOTc5MiwgMjk3OTcsIDI5ODAyLCAyOTgwNywgMjk4MTIsIDI5ODE4LCAKKyAgICAyOTgyNCwgMjk4MjksIDI5ODMzLCAyOTgzOCwgMjk4NDQsIDI5ODQ4LCAyOTg1MywgMjk4NTgsIDI5ODYzLCAyOTg2OCwgCisgICAgMjk4NzIsIDI5ODc1LCAyOTg4MCwgMjk4ODUsIDI5ODkwLCAyOTg5NSwgMjk5MDAsIDI5OTA2LCAyOTkxMiwgMjk5MTcsIAorICAgIDI5OTIyLCAyOTkyNiwgMjk5MzEsIDI5OTM2LCAyOTk0MSwgMjk5NDYsIDI5OTUxLCAyOTk1NSwgMjk5NjAsIDI5OTY1LCAKKyAgICAyOTk3MCwgMjk5NzQsIDI5OTc4LCAyOTk4MiwgMjk5ODcsIDI5OTk1LCAzMDAwMCwgMzAwMDYsIDMwMDEyLCAzMDAxOCwgCisgICAgMzAwMjMsIDMwMDI3LCAzMDAzMCwgMzAwMzUsIDMwMDQwLCAzMDA0NCwgMzAwNDksIDMwMDUzLCAzMDA1OCwgMzAwNjIsIAorICAgIDMwMDY1LCAzMDA3MCwgMTcyODksIDMwMDc1LCAzMDA4MCwgMzAwODUsIDMwMDkzLCAyMTI2NywgMjg2NzMsIDkwMTksIAorICAgIDMwMDk4LCAzMDEwMywgMzAxMDcsIDMwMTEyLCAzMDExNiwgMzAxMjAsIDMwMTI1LCAzMDEyOSwgMzAxMzIsIDMwMTM1LCAKKyAgICAzMDEzOSwgMzAxNDQsIDMwMTQ4LCAzMDE1NiwgMzAxNjAsIDMwMTYzLCAzMDE2OCwgMzAxNzIsIDMwMTc2LCAzMDE4MSwgCisgICAgMzAxODYsIDMwMTkwLCAzMDE5NiwgMzAyMDEsIDMwMjA2LCAzMDIxMywgMzAyMjAsIDMwMjI0LCAzMDIyNywgMzAyMzMsIAorICAgIDMwMjQyLCAzMDI0OSwgMzAyNTcsIDMwMjY0LCAzMDI2OCwgMzAyNzMsIDMwMjc3LCAzMDI4MSwgMzAyODcsIDMwMjkzLCAKKyAgICAzMDI5NywgMzAzMDMsIDMwMzA4LCAzMDMxMywgMzAzMjAsIDMwMzI2LCAzMDMzMiwgMzAzMzgsIDMwMzQ0LCAzMDM1MSwgCisgICAgMzAzNTcsIDMwMzYzLCAzMDM2OSwgMzAzNzUsIDMwMzgxLCAzMDM4NywgMzAzOTMsIDMwNDAwLCAzMDQwNiwgMzA0MTMsIAorICAgIDMwNDE5LCAzMDQyNSwgMzA0MzEsIDMwNDM3LCAzMDQ0MywgMzA0NDksIDMwNDU1LCAzMDQ2MSwgMzA0NjcsIDExNDExLCAKKyAgICAzMDQ3MywgMzA0NzgsIDMwNDgzLCAzMDQ4NiwgMzA0OTQsIDMwNDk5LCAzMDUwOCwgMzA1MTQsIDMwNTE5LCAzMDUyNCwgCisgICAgMzA1MjksIDMwNTMzLCAzMDUzOCwgMzA1NDMsIDMwNTQ4LCAzMDU1MywgMzA1NTgsIDMwNTY1LCAzMDU3MiwgMzA1NzgsIAorICAgIDMwNTg0LCAzMDU4OSwgMTYyOTAsIDMwNTk2LCAzMDYwMiwgMzA2MDksIDMwNjE1LCAzMDYyMSwgMzA2MjYsIDMwNjM0LCAKKyAgICAzMDYzOSwgMTYwNjksIDMwNjQzLCAzMDY0OCwgMzA2NTMsIDMwNjU5LCAzMDY2NCwgMzA2NjksIDMwNjczLCAzMDY3OCwgCisgICAgMzA2ODMsIDMwNjg5LCAzMDY5NCwgMzA2OTksIDMwNzAzLCAzMDcwOCwgMzA3MTMsIDMwNzE3LCAzMDcyMiwgMzA3MjcsIAorICAgIDMwNzMyLCAzMDczNiwgMzA3NDEsIDMwNzQ2LCAzMDc1MSwgMzA3NTUsIDMwNzU5LCAxNTI4MCwgMzA3NjMsIDMwNzcyLCAKKyAgICAzMDc3OCwgMzA3ODQsIDMwNzkzLCAzMDgwMSwgMzA4MTAsIDMwODE4LCAzMDgyMywgMzA4MjcsIDMwODM0LCAzMDg0MCwgCisgICAgMzA4NDQsIDMwODQ3LCAzMDg1MiwgMzA4NjEsIDMwODY5LCAzMDg3NCwgMTQ5NSwgMzA4ODAsIDMwODgzLCAzMDg4NywgCisgICAgMjI0MTEsIDIyNDE3LCAzMDg5MywgMzA4OTcsIDMwOTA4LCAzMDkxOSwgMzA5MzAsIDMwOTQyLCAzMDk0OSwgMzA5NTYsIAorICAgIDMwOTYxLCAzMDk2NSwgNTkwOSwgNzU1LCAyMTI2NiwgMzA5NzMsIDMwOTc4LCAzMDk4MiwgMzA5ODcsIDMwOTkxLCAzMDk5NywgCisgICAgMzEwMDIsIDMxMDA4LCAzMTAxMywgMzEwMTksIDMxMDI0LCAzMTAzMCwgMzEwMzUsIDMxMDQxLCAzMTA0NywgMzEwNTMsIAorICAgIDMxMDU4LCAzMTAxNCwgMzEwMjAsIDMxMDYyLCAzMTA2NywgMzEwNzMsIDMxMDc4LCAzMTA4NCwgMzEwODksIDMxMDk1LCAKKyAgICAzMTEwMCwgMzEwMjUsIDEwNDE0LCAzMTEwNCwgMzEwMzYsIDMxMDQyLCAzMTA0OCwgMjgzMSwgMzQyMywgMzExMTAsIAorICAgIDMxMTEzLCAzMTExOSwgMzExMjUsIDMxMTMxLCAzMTEzOCwgMzExNDQsIDMxMTUwLCAzMTE1NiwgMzExNjIsIDMxMTY4LCAKKyAgICAzMTE3NCwgMzExODAsIDMxMTg2LCAzMTE5MiwgMzExOTgsIDMxMjA0LCAzMTIxMCwgMzEyMTcsIDMxMjIzLCAzMTIyOSwgCisgICAgMzEyMzUsIDMxMjQxLCAzMTI0NywgMzEyNTAsIDMxMjU1LCAzMTI1OCwgMzEyNjUsIDMxMjczLCAzMTI3OCwgMzEyODMsIAorICAgIDMxMjg5LCAzMTI5NCwgMzEyOTksIDMxMzAzLCAzMTMwOCwgMzEzMTQsIDMxMzE5LCAzMTMyNSwgMzEzMzAsIDMxMzM2LCAKKyAgICAzMTM0MSwgMzEzNDcsIDMxMzUzLCAzMTM1NywgMzEzNjIsIDMxMzY3LCAzMTM3MiwgMzEzNzcsIDMxMzgxLCAzMTM4NiwgCisgICAgMzEzOTEsIDMxMzk2LCAzMTQwMiwgMzE0MDgsIDMxNDE0LCAzMTQyMCwgMzE0MjUsIDMxNDI5LCAzMTQzMiwgMzE0MzgsIAorICAgIDMxNDQ0LCAzMTQ1MywgMzE0NjEsIDMxNDY4LCAzMTQ3MywgMzE0NzcsIDMxNDgxLCAzMTQ4NiwgMTUxMzMsIDMxNDkxLCAKKyAgICAzMTQ5OSwgMzE1MDUsIDM2ODMsIDEzNzcsIDMxNTEwLCAzMTUxNCwgODAwNSwgMzE1MjAsIDMxNTI2LCAzMTUzMywgODAxNCwgCisgICAgMzE1MzcsIDMxNTQzLCAzMTU1MCwgMzE1NTYsIDMxNTY1LCAzMTU3MywgMzE1ODUsIDMxNTg5LCAzMTU5NiwgMzE2MDIsIAorICAgIDMxNjA2LCAzMTYwOSwgMzE2MTgsIDMxNjI2LCAzMTAxNSwgMzE2MzEsIDMxNjQxLCAzMTY1MSwgMzE2NjEsIDMxNjY3LCAKKyAgICAzMTY3MiwgMzE2ODIsIDMxNjg3LCAzMTcwMCwgMzE3MTQsIDMxNzI1LCAzMTczNywgMzE3NDksIDMxNzYzLCAzMTc3NiwgCisgICAgMzE3ODgsIDMxODAwLCAxNDU4NywgMzE4MTQsIDMxODE5LCAzMTgyNCwgMzE4MjgsIDMxODMyLCAzMTgzNiwgMTc4MCwgCisgICAgMjcxNTksIDMxODQwLCAzMTg0NSwgMzEwNjMsIDMxODUwLCAzMTg1MywgMzE4NTgsIDMxODYzLCAzMTg2OCwgMzE4NzQsIAorICAgIDMxODgwLCAxMDA5MSwgMzE4ODUsIDMxODkyLCAxNTY4NCwgMzE4OTgsIDMxOTAzLCAzMTkwOCwgMzE5MTIsIDMxOTE3LCAKKyAgICAzMTkyMiwgMzEwNjgsIDMxOTI3LCAzMTkzMiwgMzE5MzcsIDMxOTQzLCAzMTA3NCwgMzE5NDgsIDMxOTUxLCAzMTk1OCwgCisgICAgMzE5NjYsIDMxOTcyLCAzMTk3OCwgMzE5ODQsIDMxOTk1LCAzMjAwMCwgMzIwMDcsIDMyMDE0LCAzMjAyMSwgMzIwMjksIAorICAgIDMyMDM4LCAzMjA0NywgMzIwNTMsIDMyMDU5LCAzMjA2NywgMzEwNzksIDMyMDcyLCAzMjA3OCwgMzIwODQsIDMxMDg1LCAKKyAgICAzMjA4OSwgMzIwOTQsIDMyMTAyLCAzMjExMCwgMzIxMTYsIDMyMTIzLCAzMjEyOSwgMzIxMzYsIDMyMTQzLCAzMjE0OSwgCisgICAgMzIxNTcsIDMyMTY3LCAzMjE3NCwgMzIxNzksIDMyMTg1LCAzMjE5MCwgMzIxOTUsIDMyMjAyLCAzMjIxMSwgMzIyMTksIAorICAgIDMyMjI0LCAzMjIzMCwgMzIyMzcsIDMyMjQ1LCAzMjI1MSwgMzIyNTYsIDMyMjYyLCAzMjI3MSwgMjc5MzYsIDMyMjc4LCAKKyAgICAzMjI4MiwgMzIyODcsIDMyMjk2LCAzMjMwMSwgMzIzMDYsIDMyMzExLCAxMjM5OCwgMzIzMTksIDMyMzI0LCAzMjMyOSwgCisgICAgMzIzMzQsIDMyMzM4LCAzMjM0MywgMzIzNDgsIDMyMzU1LCAzMjM2MCwgMzIzNjUsIDMyMzcwLCAzMTA5MCwgMjEyMDMsIAorICAgIDMyMzc2LCAyNTE5LCAyNDQsIDMyMzc5LCAzMjM4MiwgMzIzODYsIDMyMzkwLCAzMjQwMCwgMzI0MDgsIDMyNDEyLCAzMjQxOSwgCisgICAgMzI0MjYsIDMyNDMwLCAzMjQzMywgMzI0MzksIDMyNDQ3LCAzMjQ1NSwgMzI0NTksIDMyNDYzLCAzMjQ2NiwgMzI0NzMsIAorICAgIDMyNDc3LCAzMjQ4MSwgMzI0ODgsIDMyNDk2LCAzMTAyNiwgMzI1MDMsIDMyNTExLCAxMDE1MSwgNjYwLCAzMDgsIDMyNTIzLCAKKyAgICAzMjUyOCwgMzI1MzMsIDMyNTM5LCAzMjU0NCwgMzI1NDksIDM3MDQsIDMyNTU0LCAzMjU1NywgMzI1NjIsIDMyNTY3LCAKKyAgICAzMjU3MiwgMzI1NzcsIDMyNTgyLCAzMjU4OSwgMjI1MTIsIDMyNTk0LCAzMjU5OSwgMzI2MDQsIDMyNjA5LCAzMjYxNCwgCisgICAgMzI2MjAsIDMyNjI1LCAzMjYzMSwgMzEyNjEsIDMyNjM3LCAzMjY0MiwgMzI2NDgsIDMyNjU0LCAzMjY2NCwgMzI2NjksIAorICAgIDMyNjc0LCAzMjY3OCwgMzI2ODMsIDMyNjg4LCAzMjY5MywgMzI2OTgsIDMyNzExLCAzMjcxNiwgMjIyODksIDE2NjkyLCAKKyAgICAzNzEwLCAzMjcyMCwgMzI3MjUsIDMyNzMwLCAzMjczNiwgMzI3NDEsIDMyNzQ2LCAzMjc1MCwgMzI3NTUsIDMyNzYwLCAKKyAgICAzMjc2NiwgMzI3NzEsIDMyNzc2LCAxMzgyLCAzMjc4MCwgMzI3ODUsIDMyNzkwLCAzMjc5NSwgMzI3OTksIDMyODA0LCAKKyAgICAzMjgwOSwgMzI4MTQsIDMyODIwLCAzMjgyNiwgMzI4MzEsIDMyODM1LCAzMjgzOSwgMzI4NDQsIDMyODQ5LCAzMjg1NCwgCisgICAgMzI4NTgsIDMyODY2LCAzMjg3MCwgMzI4NzYsIDMyODgwLCAzMjg4NywgMTY0ODUsIDMxMDM3LCAzMjg5MywgMzI5MDAsIAorICAgIDMyOTA4LCAzMjkxNSwgMzI5MjEsIDMyOTM0LCAzMjk0NiwgMzI5NTIsIDMyOTU2LCAyNzczLCAzMjk2MCwgMzI5NjQsIAorICAgIDMyNDY4LCAzMjk3MywgMzI5ODQsIDMyOTg5LCAzMjk5NCwgMzI5OTksIDMzMDAzLCAzMzAwOCwgMjI0MjIsIDMzMDEyLCAKKyAgICAzMzAxNiwgMzMwMjEsIDMxMDQzLCAyMTI4NywgMzMwMjUsIDMzMDMwLCAzMzAzNiwgMzMwNDEsIDMzMDQ1LCAzMzA0OSwgCisgICAgMzMwNTIsIDMzMDU2LCAzMzA2MiwgMzMwNzMsIDMzMDg1LCAzMTA0OSwgMzMwOTAsIDMzMDkzLCAzMzA5NywgMzQ3LCAKKyAgICAzMzEwMiwgMzMxMDcsIDMzMTEyLCAzMzExNywgMzMxMjIsIDMzMTI3LCAzMzEzMywgMzMxMzgsIDMzMTQzLCAzMzE0OSwgCisgICAgMzMxNTQsIDMzMTYwLCAzMzE2NSwgMzMxNzEsIDMzMTc2LCAzMzE4MSwgMzMxODYsIDMzMTkxLCAzMzE5NiwgMzMyMDEsIAorICAgIDMzMjA2LCAzMzIxMSwgMzMyMTcsIDMzMjIyLCAzMzIyNywgMzMyMzIsIDMzMjM3LCAzMzI0MiwgMzMyNDcsIDMzMjUyLCAKKyAgICAzMzI1OCwgMzMyNjQsIDMzMjY5LCAzMzI3NCwgMzMyNzksIDMzMjg0LCAzMzI4OSwgMzMyOTQsIDMzMjk5LCAzMzMwNCwgCisgICAgMzMzMDksIDMzMzE0LCAzMzMxOSwgMzMzMjQsIDMzMzI5LCAzMzMzNCwgMzMzMzksIDMzMzQ0LCAzMzM0OSwgMzMzNTQsIAorICAgIDMzMzYwLCAzMTMsIDI2LCAzMzM2NSwgMzMzNjksIDMzMzczLCAzMzM4MSwgMzMzODUsIDMzMzg5LCAzMzM5MiwgMzMzOTUsIAorICAgIDMzMzk3LCAzMzQwMiwgMzM0MDYsIDMzNDExLCAzMzQxNSwgMzM0MjAsIDMzNDI0LCAzMzQyOSwgMzM0MzMsIDMzNDM2LCAKKyAgICAzMzQzOCwgMzM0NDIsIDMzNDQ3LCAzMzQ1MSwgMzM0NjIsIDMzNDY1LCAzMzQ2NywgMzM0NzEsIDMzNDgzLCAzMzQ5MiwgCisgICAgMzM0OTYsIDMzNTAwLCAzMzUwNiwgMzM1MTEsIDMzNTIwLCAzMzUyNiwgMzM1MzEsIDMzNTM2LCAzMzU0MCwgMzM1NDUsIAorICAgIDMzNTUyLCAzMzU1NywgMzM1NjMsIDMzNTY4LCAzMzU3MiwgMzM1NzksIDI1NzAxLCAyNTcxMSwgMzM1ODMsIDMzNTg4LCAKKyAgICAzMzU5MywgMzM1OTgsIDMzNjA1LCAzMzYwOSwgMzM2MTYsIDgxMTMsIDMzNjIyLCAzMzYzMSwgMzM2MzksIDMzNjU0LCAKKyAgICAzMzY2OCwgMzM2NzYsIDMzNjg3LCAzMzY5NiwgMzM3MDEsIDcyMjcsIDMzNzExLCAzMzcxNiwgMzM3MjEsIDMzNzI1LCAKKyAgICAzMzcyOCwgMzM3MzIsIDMzNzM3LCAzMzc0MSwgMzM3NDgsIDMzNzUzLCAzMzc1OCwgODkxMiwgMzM3NjgsIDMzNzcwLCAKKyAgICAzMzc3MywgMzM3NzcsIDMzNzgzLCAzMzc4NywgMzM3OTIsIDMzNzk3LCAzMzgwMywgMzM4MDgsIDMzODE0LCAzMzgxOSwgCisgICAgMzM4MjksIDMzODM4LCAzMzg0NiwgMzM4NTEsIDMzODU3LCAzMzg2MiwgMzM4NjksIDMzODczLCAzMzg4MSwgMzM4ODgsIAorICAgIDMzOTAxLCAzMzkwOSwgMzM5MTMsIDMzOTIzLCAzMzkyOCwgMzM5MzIsIDMzOTQwLCAzMzk0OCwgMzM5NTIsIDMzOTYxLCAKKyAgICAzMzk2NywgMzM5NzIsIDMzOTgwLCAzMzk5MCwgMzM5OTksIDM0MDA4LCAzNDAxNywgMzQwMjgsIDM0MDM2LCAzNDA0NywgCisgICAgMzQwNTYsIDM0MDYzLCAzNDA2OSwgMzQwNzQsIDM0MDg1LCAzNDA5MCwgMzQwOTQsIDM0MDk3LCAzNDEwMSwgMzQxMDksIAorICAgIDM0MTE1LCAzNDEyMywgMzQxMzAsIDM0MTM2LCAzNDE0MSwgMzQxNDcsIDI0MTgsIDM0MTUxLCAzNDE1MywgMzQxNTgsIAorICAgIDM0MTYzLCAzNDE2OCwgMzQxNzEsIDM0MTczLCAzNDE3NywgMzQxODAsIDM0MTg3LCAzNDE5MSwgOTg4NCwgMzQxOTUsIAorICAgIDM0MjAxLCAzNDIxMSwgMzQyMTYsIDM0MjIyLCAzNDIyNiwgMzQyMzEsIDM0MjQ0LCAyNjA4NywgMzQyNTAsIDM0MjU5LCAKKyAgICAxNzQ2MiwgMzQyNjYsIDM0Mjc1LCAzMTY0NywgMzQyODMsIDM0Mjg4LCAzNDI5MiwgMzQzMDAsIDM0MzA3LCAzNDMxMiwgCisgICAgMzQzMTYsIDM0MzIxLCAzNDMyNSwgMzQzMzMsIDM0MzM5LCAzNDM0NSwgMzQzNTAsIDM0MzU0LCAzNDM1NywgMzQzNjIsIAorICAgIDM0Mzc1LCAzNDM5MSwgMjI5NzksIDM0NDA4LCAzNDQyMCwgMzQ0MzcsIDM0NDQ5LCAzNDQ2MywgMjI5OTYsIDIzMDE1LCAKKyAgICAzNDQ3NSwgMzQ0ODcsIDI2ODAsIDM0NTAxLCAzNDUwNiwgMzQ1MTEsIDM0NTE2LCAzNDUyMCwgMzQ1MjcsIDM0NTM5LCAKKyAgICAzNDU0NSwgMzQ1NDgsIDM0NTU5LCAzNDU3MCwgMzQ1NzUsIDMyMDY0LCA2OTUsIDM0NTc5LCAzNDU4MywgMzQ1ODcsIAorICAgIDM0NTkwLCAzNDU5NSwgMzQ2MDAsIDM0NjA2LCAzNDYxMSwgMzQ2MTYsIDM0NjIyLCAzNDYyOCwgMzQ2MzMsIDM0NjM3LCAKKyAgICAzNDY0MiwgMzQ2NDcsIDM0NjUyLCAzNDY1NiwgMzQ2NTksIDM0NjY1LCAzNDY3MCwgMzQ2NzUsIDM0NjgwLCAzNDY4NCwgCisgICAgMzQ2ODksIDM0Njk1LCAzNDcwMywgMjYzMjAsIDM0NzA4LCAzNDcxMywgMzQ3MjAsIDM0NzI2LCAzNDczMiwgMzQ3MzcsIAorICAgIDM0NzQ1LCAyMjUyMSwgMzQ3NTIsIDM0NzU3LCAzNDc2MiwgMzQ3NjcsIDM0NzcxLCAzNDc3NCwgMzQ3NzksIDM0NzgzLCAKKyAgICAzNDc4NywgMzQ3OTQsIDM0ODAwLCAzNDgwNiwgMzQ4MTIsIDM0ODE5LCAzNDgyNCwgMzQ4MzAsIDMzOTQzLCAzNDgzNCwgCisgICAgMzQ4MzgsIDM0ODQzLCAzNDg1NiwgMzQ4NjEsIDM0ODY3LCAzNDg3NSwgMzQ4ODIsIDM0ODkwLCAzNDkwMCwgMzQ5MDYsIAorICAgIDM0OTEyLCAzNDkxOCwgMzQ5MjIsIDM0OTMxLCAzNDkzOSwgMzQ5NDYsIDM0OTUxLCAzNDk1NiwgMTA0MzcsIDM0OTYxLCAKKyAgICAzNDk2OSwgMzQ5NzYsIDM0OTgyLCAzNDk5MiwgMzQ5OTcsIDM1MDAzLCAzNTAxMSwgMzYwOCwgMzUwMTgsIDM1MDI1LCAKKyAgICAzNjE0LCAzNTAyOSwgMzUwMzQsIDM1MDQ1LCAzNTA1MiwgMzUwNTgsIDM1MDY3LCAzNTA3MSwgNDAxNSwgMzUwNzQsIAorICAgIDM1MDgxLCAzNTA4NywgMzUwOTMsIDM1MTAxLCAzNTExMSwgMjkwNDIsIDM1MTE4LCAzNTEyNiwgMzUxMzEsIDM1MTM3LCAKKyAgICAzNTE0MiwgMjU5NDcsIDM1MTQ4LCAzNTE1NSwgMzUxNjEsIDM1MTcwLCAyMzY2MCwgMzUxNzcsIDM1MTgyLCAzNTE4NiwgCisgICAgMzUxOTQsIDM1MjAyLCA5NjAwLCA1ODk1LCAzNTIwOSwgMzUyMTMsIDM1MjE1LCAzNTIxOSwgMzUyMjQsIDM1MjI2LCAKKyAgICAzNTIzMiwgMzUyMzcsIDM1MjQyLCAzNTI0OSwgMzI1ODUsIDM1MjU1LCAzNTI2MCwgMzUyNjQsIDM1MjY5LCAzNTI3MywgCisgICAgMzUyODIsIDM1Mjg2LCAzNTI5MiwgMzUyOTksIDM1MzA1LCAzNTMxMiwgMzUzMTcsIDM1MzI2LCAzNTMzMSwgMzUzMzUsIAorICAgIDM1MzQwLCAzNTM0NywgMzUzNTUsIDM1MzYzLCAzNTM2OCwgMjEzNDMsIDM1MzcyLCAzNTM3NSwgMzUzNzksIDM1MzgzLCAKKyAgICAzNTM4NywgMzUzOTAsIDM1MzkyLCAzNTQwMCwgMzU0MDQsIDM1NDExLCAzNTQxNSwgMzU0MTksIDM1NDI3LCAzNTQzNCwgCisgICAgMzU0NDQsIDM1NDQ4LCAzNTQ1MiwgMzU0NjAsIDM1NDY4LCAzNTQ3NCwgMzU0NzksIDM1NDg4LCAxMzM1MCwgMzU0OTQsIAorICAgIDM1NTAzLCAzNTUwOCwgMzU1MTUsIDM1NTIzLCAzNTUzMSwgMzU1MzksIDM1NTQ2LCAzNTU1MywgMzU1NjAsIDM1NTY3LCAKKyAgICAzNTU3NCwgMzU1NzksIDM1NTg1LCAzNTYwMiwgMzU2MTAsIDM1NjIwLCAzNTYyOCwgMzU2MzUsIDQwNywgMzU2MzksIAorICAgIDM1NjQ1LCAzNTY0OSwgMzU2NTQsIDMzNjkyLCAzNTY2MCwgMzU2NjMsIDM1NjY3LCAzNTY3NSwgMzYxOSwgMzU2ODMsIAorICAgIDM1Njg5LCAzNTY5NSwgMzU3MDQsIDM1NzE0LCAzNTcyMSwgMzU3MjcsIDM2MjUsIDM2MzEsIDM1NzM2LCAzNTc0MywgCisgICAgMzU3NTEsIDM1NzU2LCAzNTc2MCwgMzU3NjcsIDM1Nzc1LCAzNTc4MiwgMzU3ODgsIDM1Nzk3LCAzNTgwNywgMzU4MTMsIAorICAgIDM1ODIxLCAzNTgzMCwgMzU4MzcsIDM1ODQ1LCAzNTg1MiwgMjIwMTksIDM1ODU2LCAzNTg2MywgMzU4NjksIDM1ODc5LCAKKyAgICAzNTg4OCwgMzU4OTksIDM1OTAzLCAzNTkxMywgMzU5MTksIDM1OTI2LCAzNTkzNCwgMzU5NDMsIDM1OTUyLCAzNTk2MiwgCisgICAgMzU5NzMsIDM1OTgwLCAzNTk4NSwgMzU5OTIsIDMwMjksIDM2MDAwLCAzNjAwNiwgMzYwMTEsIDM2MDE3LCAzNjAyMywgCisgICAgMzYwMjgsIDM2MDQxLCAzNjA1NCwgMzYwNjcsIDM2MDc0LCAzNjA4MCwgMzYwODgsIDM2MDk2LCAzNjEwMSwgMzYxMDUsIAorICAgIDE0NjksIDM2MTA5LCAzNjExNCwgMzYxMTksIDM2MTI0LCAzNjEyOSwgMzYxMzUsIDM2MTQwLCAzNjE0NSwgMzYxNTAsIAorICAgIDM2MTU1LCAzNjE2MCwgMzYxNjUsIDM2MTcwLCAzNjE3NiwgMzYxODIsIDM2MTg3LCAzNjE5MiwgMzYxOTgsIDM2MjAzLCAKKyAgICAzNjIwOCwgMzYyMTMsIDM2MjE5LCAzNjIyNCwgMzYyMjksIDM2MjM0LCAzNjIzOSwgMzYyNDUsIDM2MjUwLCAzNjI1NSwgCisgICAgMzYyNjEsIDM2MjY2LCAzNjI3MSwgMzYyNzYsIDM2MjgxLCAzNjI4NiwgMzYyOTIsIDM2Mjk3LCAzNjMwMywgMzYzMDgsIAorICAgIDM2MzE0LCAzNjMxOSwgMzYzMjQsIDM2MzI5LCAzNjMzNSwgMzYzNDEsIDM2MzQ3LCAzNjM1MywgMzYzNTksIDM2MzY1LCAKKyAgICAzNjM3MSwgMzYzNzcsIDM2MzgyLCAzNjM4NywgMzYzOTMsIDM2Mzk4LCAzNjQwMywgMzY0MDgsIDM2NDEzLCAzNjQxOCwgCisgICAgMzY0MjMsIDM2NDI4LCAzNjQzNCwgMzY0MzksIDM2NDQ0LCAzNjQ1MCwgMzY0NTYsIDEwMSwgMzY0NjEsIDM2NDYzLCAKKyAgICAzNjQ2NywgMzY0NzEsIDM2NDc1LCAzNjQ4MCwgMzY0ODQsIDk1MjEsIDM2NDg4LCAzNjQ5NCwgMTc0MSwgNjI4MCwgMzY1MDAsIAorICAgIDM2NTAzLCAzNjUwOCwgMzY1MTIsIDM2NTE3LCAzNjUyMSwgMzY1MjUsIDM2NTMwLCAxMDIzOCwgMzY1MzQsIDM2NTM4LCAKKyAgICAzNjU0MiwgMzY1NDYsIDE1MzcyLCAzNjU1MSwgMzY1NTUsIDM2NTYwLCAzNjU2NSwgMzY1NzAsIDM2NTc0LCAzNjU4MSwgCisgICAgMjYxMTEsIDM2NTg3LCAzNjU5MCwgMzY1OTQsIDM2NTk5LCAzNjYwNSwgMzY2MDksIDM2NjE3LCAzNjYyMywgMzY2MjgsIAorICAgIDM2NjMyLCAzNjYzOCwgMzY2NDIsIDM2NjQ2LCAzNDYyLCAzNDY3LCAyOTIzNCwgMzY2NDksIDM2NjUzLCAzNjY1NywgCisgICAgMzY2NjEsIDM2NjY5LCAzNjY3NiwgMzY2ODAsIDM2Njg3LCAzNjY5MiwgMzE3LCAzNjY5NywgMzY3MDEsIDM2NzA3LCAKKyAgICAzNjcxOSwgMzY3MjUsIDM2NzMxLCAzNjczNSwgMzY3NDEsIDM2NzUwLCAzNjc1NCwgMzY3NTgsIDM2NzYzLCAzNjc2OSwgCisgICAgMzY3NzQsIDM2Nzc4LCAzNjc4MywgMzY3ODcsIDM2NzkxLCAzNjc5OCwgMzY4MDQsIDM2ODA5LCAzNjgyNCwgMzY4MzksIAorICAgIDM2ODU0LCAzNjg3MCwgMzY4ODgsIDEwMTg4LCAzNjkwMiwgMzY5MDksIDM2OTEzLCAzNjkxNiwgMzY5MjUsIDM2OTMwLCAKKyAgICAzNjkzNCwgMzY5NDIsIDMzODk0LCAzNjk1MCwgMzY5NTQsIDM2OTY0LCAzNjk3NSwgMjkyMDQsIDM2OTg4LCAzNjk5MiwgCisgICAgMzcwMDEsIDM3MDA5LCA5Nzc4LCAxNDkwMCwgMzcwMTMsIDIyNDM0LCAzNzAxNiwgMzAxNTIsIDM3MDIxLCA5Nzc3LCAKKyAgICAzNzAyNiwgMzcwMzIsIDM3MDM3LCAzNzA0MywgMzcwNDgsIDM3MDU0LCAzNzA1OSwgMzcwNjUsIDM3MDcwLCAzNzA3NiwgCisgICAgMzcwODIsIDM3MDg4LCAzNzA5MywgMzcwNDksIDM3MDU1LCAzNzA2MCwgMzcwNjYsIDM3MDcxLCAzNzA3NywgMzcwODMsIAorICAgIDgxMjYsIDM4NzQsIDM3MDk3LCAzNzEwNSwgMzcxMDksIDM3MTEyLCAzNzExNiwgMzcxMjEsIDM3MTI2LCAzNzEzMiwgCisgICAgMzcxMzgsIDM3MTQzLCAzNzE0NywgMjU5NTksIDM3MTUxLCAzNzE1NSwgMzcxNjEsIDM3MTY1LCA5MDQyLCAzNzE3NCwgCisgICAgMzcxODEsIDM3MTg1LCAxMTg2OCwgMzcxOTIsIDM3MTk4LCAzNzIwMywgMzcyMTAsIDM3MjE3LCAzNzIyNCwgMjg1NTAsIAorICAgIDgwNDksIDM3MjMxLCAzNzIzOCwgMzcyNDUsIDM3MjUxLCAzNzI1NiwgMzcyNjMsIDM3Mjc0LCAzNzI4MCwgMzcyODUsIAorICAgIDM3MjkwLCAzNzI5NSwgMzczMDIsIDM3MDUwLCAzNzMwNiwgMzczMTYsIDM3MzI3LCAzNzMzMywgMzczMzgsIDM3MzQzLCAKKyAgICAzNzM0OCwgMzczNTMsIDM3MzU4LCAzNzM2MiwgMzczNjYsIDM3MzcyLCAzNzM4MCwgMjMxOSwgODY1LCAxMDI1NCwgMTAyNjYsIAorICAgIDEwMjcxLCAxMDI3NywgMzczODksIDEwMjgyLCAxMDI4NywgMTAyOTMsIDM3Mzk0LCAzNzQwNCwgMzc0MDgsIDEwMjk4LCAKKyAgICAzNzQxMywgMTY4OTAsIDM3NDE2LCAzNzQyMSwgMzc0MjUsIDM3NDMwLCAzNzQzNSwgMzc0NDIsIDM3NDQ5LCAzNzQ1MywgCisgICAgMzc0NTYsIDM3NDY0LCAxMDIwMSwgMzc0NzEsIDM3NDc0LCAzNzQ4MCwgMzc0OTAsIDU5MjksIDM3NDk5LCAzNzUwMywgCisgICAgMzc1MTEsIDM3NTE1LCAzNzUyNSwgMzc1MzEsIDM3NTQyLCAzNzU0OCwgMzc1NTQsIDM3NTU5LCAzNzU2NSwgMzc1NzEsIAorICAgIDM3NTc3LCAzNzU4MiwgMzc1ODUsIDM3NTkyLCAzNzU5OCwgMzc2MDMsIDM3NjEwLCAzNzYxNywgMzc2MjEsIDM3NjMxLCAKKyAgICAzNzY0NCwgMzc2NTMsIDM3NjYyLCAzNzY3MywgMzc2ODYsIDM3Njk3LCAzNzcwNiwgMzc3MTcsIDM3NzIyLCAzNzczMSwgCisgICAgMzc3MzYsIDEwMzAzLCAzNzc0MiwgMzc3NDksIDM3NzU3LCAzNzc2MiwgMzc3NjYsIDM3NzczLCAzNzc4MCwgMzgyOSwgMTYsIAorICAgIDM3Nzg0LCAzNzc4OSwgMTY3NDQsIDM3NzkzLCAzNzc5NiwgMzc3OTksIDI4MDU2LCAzNzgwMywgMjg1NTksIDM3ODExLCAKKyAgICAzNzgxNSwgMzc4MTksIDM3ODIyLCAzNzgyOCwgMzcwNzIsIDM3ODM0LCAzNzg0MiwgMzc4NDgsIDM3ODU1LCAyODAzOSwgCisgICAgMzc4NTksIDI4MjMzLCAzNzg2MywgMzc4NzIsIDM3ODc4LCAzNzg4NCwgMzc4ODksIDM3ODkzLCAzNzg5OSwgMzc5MDMsIAorICAgIDM3OTExLCAzNzkxOSwgMjYxNzcsIDM3OTI1LCAzNzkzMiwgMzc5MzgsIDM3OTQzLCAzNzk0OCwgMzc5NTIsIDM3OTU4LCAKKyAgICAzNzk2MywgMzc5NjksIDQwNTYsIDc5MSwgMzc5NzYsIDM3OTgwLCAzNzk4MywgMTUyNjIsIDM3OTk1LCAzNTgyNiwgMzgwMDYsIAorICAgIDM4MDA5LCAzODAxNiwgMzgwMjAsIDM4MDI2LCAzODAzMCwgMzgwMzYsIDM4MDQxLCAzODA0NywgMzgwNTIsIDM4MDU3LCAKKyAgICAzODA2MSwgMzgwNjUsIDM4MDcwLCAzODA3NSwgMzgwODUsIDM4MDkxLCAzODEwNCwgMzgxMTAsIDM4MTE2LCAzODEyMywgCisgICAgMzgxMjgsIDM4MTM0LCAzODEzOSwgMTY2MzAsIDE0NzIsIDEwMTksIDMxMTkzLCAzMTE5OSwgMzgxNDQsIDMxMjA1LCAKKyAgICAzMTIxOCwgMzEyMjQsIDMxMjMwLCAzODE1MCwgMzEyMzYsIDMxMjQyLCAzODE1NiwgMzgxNjIsIDIyLCAzODE3MCwgMzgxNzcsIAorICAgIDM4MTgxLCAzODE4NSwgMzgxOTMsIDMxOTUzLCAzODE5NywgMzgyMDEsIDM4MjA4LCAzODIxMywgMzgyMTcsIDM4MjIyLCAKKyAgICAzODIyOCwgMzgyMzMsIDM4MjM5LCAzODI0NCwgMzgyNDgsIDM4MjUyLCAzODI1NiwgMzgyNjEsIDM4MjY1LCAzODI3MCwgCisgICAgMzgyNzQsIDM4MjgxLCAzODI4NiwgMzgyOTAsIDM4Mjk1LCAzODI5OSwgMzgzMDQsIDM4MzA4LCAzODMxMywgMzgzMTksIAorICAgIDE1NDgyLCAxNTQ4NywgMzgzMjQsIDM4MzI4LCAzODMzMSwgMzgzMzUsIDIxMTcwLCAzODM0MCwgMzgzNDQsIDM4MzUwLCAKKyAgICAzODM1NywgMzgzNjIsIDM4MzcyLCAzODM3NywgMzgzODUsIDM4Mzg5LCAzODM5MiwgMzE5NjgsIDM4Mzk2LCA0MTA5LCAKKyAgICAzODQwMSwgMzg0MDYsIDM4NDEwLCAzODQxNSwgMzg0MTksIDM4NDI0LCAxMzM2OCwgMzg0MzUsIDM4NDM5LCAzODQ0MiwgCisgICAgMzg0NDcsIDM4NDUxLCAzODQ1NSwgMzg0NTgsIDM4NDYyLCA4MTQ1LCAxMzM4NCwgMzg0NjUsIDM4NDY4LCAzODQ3NCwgCisgICAgMzg0NzksIDM4NDg1LCAzODQ5MCwgMzg0OTYsIDM4NTAxLCAzODUwNywgMzg1MTIsIDM4NTE4LCAzODUyNCwgMzg1MzAsIAorICAgIDM4NTM1LCAzODUzOSwgMzg1NDMsIDM4NTUyLCAzODU2OCwgMzg1ODQsIDM4NTk0LCAyNzk0NiwgMzg2MDEsIDM4NjA1LCAKKyAgICAzODYxMCwgMzg2MTUsIDM4NjE5LCAzODYyMywgMzU5NDcsIDM4NjI5LCAzODYzNCwgMzg2MzgsIDM4NjQ1LCAzODY1MCwgCisgICAgMzg2NTQsIDM4NjU4LCAyNjk3OSwgMzg2NjQsIDIxNDM4LCAzODY2OSwgMzg2NzYsIDM4Njg0LCAzODY5MCwgMzg2OTcsIAorICAgIDM4NzA1LCAzODcxMSwgMzg3MTUsIDM4NzIxLCAzODcyOSwgMzg3MzMsIDM4NzQyLCA5NTAyLCAzODc1MCwgMzg3NTQsIAorICAgIDM4NzYyLCAzODc2OSwgMzg3NzQsIDM4Nzc5LCAzODc4MywgMzg3ODYsIDM4NzkwLCAzODc5MywgMzg3OTcsIDM4ODA0LCAKKyAgICAzODgwOSwgMzg4MTUsIDI2Mzk4LCAzMTI1NiwgMzg4MTksIDM4ODI2LCAzODgzMiwgMzg4MzgsIDM4ODQzLCAzODg0NiwgCisgICAgMzg4NDgsIDM4ODU1LCAzODg2MiwgMzg4NjgsIDM4ODcyLCAzODg3NSwgMzg4NzksIDM4ODgzLCAzODg4NywgMzg4OTIsIAorICAgIDM4ODk2LCAzODkwMCwgMzg5MDMsIDM4OTA3LCAzODkyMSwgMjMwNDUsIDM4OTQwLCAzODk1MywgMzg5NjYsIDM4OTc5LCAKKyAgICAyMzA2MywgMzg5OTQsIDEwNDkwLCAzOTAwOSwgMzkwMTUsIDM5MDE5LCAzOTAyMywgMzkwMzAsIDM5MDM1LCAzOTAzOSwgCisgICAgMzkwNDYsIDM5MDUyLCAzOTA1NywgMzkwNjMsIDM5MDczLCAzOTA4NSwgMzkwOTYsIDM5MTAxLCAzOTEwOCwgMzkxMTIsIAorICAgIDM5MTE2LCAzOTExOSwgMTU4NzgsIDM2NzcsIDM5MTI3LCAxNTUwOSwgMzkxNDAsIDM5MTQ3LCAzOTE1MSwgMzkxNTUsIAorICAgIDM5MTYwLCAzOTE2NSwgMzkxNzEsIDM5MTc1LCAzOTE3OSwgMzkxODIsIDc3NDIsIDE1NTIwLCAzOTE4NywgMzkxOTEsIAorICAgIDM5MTk3LCAzOTIwNiwgMzkyMTEsIDM5MjE4LCAzNTgwMywgMzkyMjQsIDM5MjI5LCAzOTIzMywgMzkyMzgsIDM5MjQ1LCAKKyAgICAzOTI0OSwgMzkyNTIsIDM5MjU2LCAzOTI2MSwgMTQ1NTIsIDM5MjY4LCAzOTI3NSwgMTA2NiwgMzkyNzksIDM5Mjg0LCAKKyAgICAzOTI4OSwgMzkyOTUsIDM5MzAwLCAzOTMwNSwgMzkzMDksIDM5MzE5LCAzOTMyNCwgMzkzMzAsIDM5MzM1LCAzOTM0MSwgCisgICAgMzkzNDYsIDM5MzUyLCAzOTM2MiwgMzkzNjcsIDM5MzcyLCAzOTM3NiwgNzIyOSwgNzI0MSwgMzkzODEsIDM5Mzg0LCAKKyAgICAzOTM5MSwgMzkzOTcsIDM0MDU5LCAzNDA2NiwgMzk0MDYsIDM5NDEwLCAzMjAxNiwgMzk0MTgsIDM5NDI5LCAzOTQzNywgCisgICAgMzU5OTUsIDM5NDQ0LCAzOTQ0OSwgMzk0NTQsIDM5NDY1LCAzOTQ3MiwgMzk0ODMsIDMyMDQwLCAyMTQ0NCwgMzk0OTEsIAorICAgIDczNSwgMzk0OTYsIDM5NTAyLCAyODAzMCwgMzk1MDgsIDM5NTEzLCAzOTUyMywgMzk1MzIsIDM5NTM5LCAzOTU0NSwgCisgICAgMzk1NDksIDM5NTUyLCAzOTU1OSwgMzk1NjUsIDM5NTcyLCAzOTU3OCwgMzk1ODgsIDM5NTk2LCAzOTYwMiwgMzk2MDgsIAorICAgIDM5NjEzLCAzOTYxNywgMzk2MjQsIDM5NjMwLCAzOTYzNywgMzg4ODgsIDUzNSwgMTM4MDUsIDM5NjQzLCAzOTY0OCwgCisgICAgMzk2NTEsIDM5NjU3LCAzOTY2NSwgMTM5NiwgMzk2NzAsIDM5Njc0LCAzOTY3OSwgMzk2ODYsIDM5NjkyLCAzOTY5NiwgCisgICAgMzk3MDAsIDM5NzA1LCAzOTcxNCwgMzk3MjEsIDM5NzMxLCAzOTczNywgMjgwNzQsIDM5NzU0LCAzOTc2MywgMzk3NzEsIAorICAgIDM5Nzc3LCAzOTc4MiwgMzk3ODksIDM5Nzk1LCAzOTgwMywgMzk4MTIsIDM5ODIwLCAzOTgyNCwgMzk4MjksIDM5ODM3LCAKKyAgICAzMjA0OSwgMzk4NDMsIDM5ODYyLCAxNTgxMSwgMzk4NzYsIDM5ODkyLCAzOTkwNiwgMzk5MTIsIDM5OTE3LCAzOTkyMiwgCisgICAgMzk5MjcsIDM5OTMzLCAzMjA1NSwgMzk5MzgsIDM5OTQ1LCAzOTk1MCwgMzk5NTQsIDM0NSwgMjkzNiwgMzk5NjEsIDM5OTY2LCAKKyAgICAzOTk3MSwgMjczMDUsIDM5NzkyLCAzOTk3NSwgMzk5ODAsIDM5OTg4LCAzOTk5MiwgMzk5OTUsIDQwMDAxLCA0MDAwNywgCisgICAgNDAwMTEsIDI4MTI5LCA0MDAxNCwgNDAwMTksIDQwMDIzLCA0MDAyNiwgNDAwMzEsIDQwMDM1LCA0MDA0MCwgNDAwNDUsIAorICAgIDQwMDQ5LCA0MDA1NCwgNDAwNTgsIDQwMDYyLCAyMTE2NiwgMjExNzcsIDQwMDY2LCA0MDA3MSwgNDAwNzcsIDI2OTM2LCAKKyAgICA0MDA4MiwgNDAwODYsIDIxMjUzLCAxNjA1OSwgNDAwODksIDQwMDk0LCA0MDA5OSwgNDAxMDQsIDQwMTA5LCA0MDExNCwgCisgICAgNDAxMTksIDQwMTI0LCA0NDcsIDQzLCAzMTI3NCwgMzEyNzksIDMxMjg0LCAzMTI5MCwgMzEyOTUsIDMxMzAwLCA0MDEyOSwgCisgICAgMzEzMDQsIDQwMTMzLCA0MDEzNywgNDAxNDEsIDMxMzA5LCAzMTMxNSwgNDAxNTUsIDMxMzI2LCAzMTMzMSwgNDAxNjMsIAorICAgIDQwMTY4LCAzMTMzNywgNDAxNzMsIDQwMTc4LCA0MDE4MywgNDAxODgsIDQwMTk0LCA0MDIwMCwgNDAyMDYsIDMxMzU0LCAKKyAgICA0MDIxOSwgNDAyMjUsIDMxMzU4LCA0MDIyOSwgMzEzNjMsIDQwMjM0LCAzMTM2OCwgMzEzNzMsIDQwMjM3LCA0MDI0MiwgCisgICAgNDAyNDYsIDMwOTIzLCA0MDI1MiwgMTM1OTIsIDQwMjU5LCA0MDI2NCwgMzEzNzgsIDQwMjY4LCA0MDI3MywgNDAyNzgsIAorICAgIDQwMjgzLCA0MDI4NywgNDAyOTIsIDQwMjk3LCA0MDMwMywgNDAzMDgsIDQwMzEzLCA0MDMxOSwgNDAzMjUsIDQwMzMwLCAKKyAgICA0MDMzNCwgNDAzMzksIDQwMzQ0LCA0MDM0OSwgNDAzNTMsIDQwMzU4LCA0MDM2MywgNDAzNjgsIDQwMzc0LCA0MDM4MCwgCisgICAgNDAzODYsIDQwMzkxLCA0MDM5NSwgNDA0MDAsIDQwNDA0LCAzMTM4MiwgMzEzODcsIDMxMzkyLCA0MDQwOCwgNDA0MTIsIAorICAgIDQwNDE2LCAzMTM5NywgMzE0MDMsIDMxNDA5LCAzMTQyMSwgNDA0MjgsIDI1OTk2LCA0MDQzMiwgNDA0MzYsIDQwNDQxLCAKKyAgICA0MDQ0NiwgNDA0NTEsIDQwNDU2LCA0MDQ2MCwgNDA0NjQsIDQwNDc0LCA0MDQ3OSwgNDA0ODQsIDQwNDg4LCA0MDQ5MiwgCisgICAgNDA0OTUsIDQwNTAzLCAzMTQ2OSwgNDA1MDgsIDE0NzksIDQwNTE0LCA0MDUyMiwgNDA1MzEsIDQwNTM1LCA0MDUzOSwgCisgICAgNDA1NDcsIDQwNTUzLCA0MDU2MSwgNDA1NzcsIDQwNTgxLCA0MDU4NSwgNDA1OTAsIDQwNjA1LCAzMTUwNiwgMTc0OSwgCisgICAgMTIwNDgsIDQwNjA5LCAxMzc4LCA0MDYyMSwgNDA2MjIsIDQwNjMwLCA0MDYzNywgNDA2NDIsIDQwNjQ5LCA0MDY1NCwgCisgICAgOTM3MiwgMTExNCwgMTAzMjUsIDQwNjYxLCA0MDY2NiwgNDA2NjksIDQwNjcyLCA0MDY4MSwgMTI4NiwgNDA2ODYsIDM5MDM2LCAKKyAgICA0MDY5MywgNDA2OTgsIDIyNDg2LCAyNTU3LCA0MDcwMiwgMTA3MzQsIDQwNzEyLCA0MDcxOCwgMjMzNywgMjM0NywgNDA3MjcsIAorICAgIDQwNzM2LCA0MDc0NiwgNDA3NTcsIDMyOTMsIDM0MjEyLCAxMDM3NywgMzgwNywgMTY2NjgsIDEyOTEsIDQwNzYyLCA0MDc3MCwgCisgICAgNDA3NzcsIDQwNzgyLCA0MDc4NiwgNDA3OTAsIDIzODU4LCAxMDQwNCwgNDA3OTgsIDQwODA3LCA0MDgxNiwgNDA4MjQsIAorICAgIDQwODMxLCA0MDg0MiwgNDA4NDcsIDQwODYwLCA0MDg3MywgNDA4ODUsIDQwODk3LCA0MDkwOSwgNDA5MjIsIDQwOTMzLCAKKyAgICA0MDk0NCwgNDA5NTQsIDQwOTYyLCA0MDk3MCwgNDA5ODIsIDQwOTk0LCA0MTAwNSwgNDEwMTQsIDQxMDIyLCA0MTAyOSwgCisgICAgNDEwNDEsIDQxMDQ4LCA0MTA1NywgNDEwNjQsIDQxMDc3LCA0MTA4MiwgNDEwOTIsIDQxMDk3LCA0MTEwMywgNDExMDgsIAorICAgIDM3MTgyLCA0MTExMiwgNDExMTksIDQxMTIzLCA0MTEzMCwgNDExMzgsIDI1MTgsIDQxMTQ1LCA0MTE1NiwgNDExNjYsIAorICAgIDQxMTc1LCA0MTE4MywgNDExOTMsIDQxMjAxLCA0MTIxMSwgNDEyMjAsIDQxMjI1LCA0MTIzMSwgNDEyMzcsIDM3MDksIAorICAgIDQxMjQ4LCA0MTI1OCwgNDEyNjcsIDQxMjc2LCA0MTI4NiwgNDEyOTQsIDQxMzAzLCA0MTMwOCwgNDEzMTMsIDQxMzE4LCAKKyAgICAxNzA1LCAzNywgNDEzMjYsIDQxMzM0LCA0MTM0NSwgNDEzNTYsIDE2MzQzLCA0MTM2NiwgNDEzNzAsIDQxMzc3LCA0MTM4MywgCisgICAgNDEzODgsIDQxMzkyLCA0MTQwMywgNDE0MTMsIDQxNDIyLCA0MTQzMywgMTY3MTcsIDE2NzIyLCA0MTQzOCwgNDE0NDcsIAorICAgIDQxNDUyLCA0MTQ2MiwgNDE0NjcsIDQxNDc1LCA0MTQ4MywgNDE0OTAsIDQxNDk2LCA3MDc4LCAyMjgsIDQxNTAwLCA0MTUwNiwgCisgICAgNDE1MTEsIDQxNTE0LCAyMTE3LCAzOTE1MiwgNDE1MjIsIDQxNTI2LCA0MTUyOSwgMTUxMiwgNDE1MzUsIDEzOTY3LCAxMjk2LCAKKyAgICA0MTU0MCwgNDE1NTMsIDQxNTY3LCAyNjQzLCA0MTU4NSwgNDE1OTcsIDQxNjA5LCAyNjU3LCAyNjc0LCA0MTYyMywgNDE2MzYsIAorICAgIDI2ODksIDQxNjUwLCA0MTY2MiwgMjcwNCwgNDE2NzYsIDEzMDIsIDEzMDgsIDEzMTQsIDEwNjUyLCA0MTY4MSwgNDE2ODYsIAorICAgIDQxNjkxLCA0MTY5NSwgNDE3MTAsIDQxNzI1LCA0MTc0MCwgNDE3NTUsIDQxNzcwLCA0MTc4NSwgNDE4MDAsIDQxODE1LCAKKyAgICA0MTgzMCwgNDE4NDUsIDQxODYwLCA0MTg3NSwgNDE4OTAsIDQxOTA1LCA0MTkyMCwgNDE5MzUsIDQxOTUwLCA0MTk2NSwgCisgICAgNDE5ODAsIDQxOTk1LCA0MjAxMCwgNDIwMjUsIDQyMDQwLCA0MjA1NSwgNDIwNzAsIDQyMDg1LCA0MjEwMCwgNDIxMTUsIAorICAgIDQyMTMwLCA0MjE0NSwgNDIxNjAsIDQyMTc1LCA0MjE5MCwgNDIyMDUsIDQyMjIwLCA0MjIzNSwgNDIyNTAsIDQyMjY1LCAKKyAgICA0MjI4MCwgNDIyOTUsIDQyMzEwLCA0MjMyNSwgNDIzNDAsIDQyMzU1LCA0MjM3MCwgNDIzODUsIDQyNDAwLCA0MjQxNSwgCisgICAgNDI0MzAsIDQyNDQ1LCA0MjQ2MCwgNDI0NzUsIDQyNDkwLCA0MjUwNSwgNDI1MjAsIDQyNTM1LCA0MjU1MCwgNDI1NjUsIAorICAgIDQyNTgwLCA0MjU5NSwgNDI2MTAsIDQyNjI1LCA0MjY0MCwgNDI2NTUsIDQyNjcwLCA0MjY4NSwgNDI3MDAsIDQyNzE1LCAKKyAgICA0MjczMCwgNDI3NDUsIDQyNzYwLCA0Mjc3NSwgNDI3OTAsIDQyODA1LCA0MjgyMCwgNDI4MzUsIDQyODUwLCA0Mjg2NSwgCisgICAgNDI4ODAsIDQyODk1LCA0MjkxMCwgNDI5MjUsIDQyOTQwLCA0Mjk1NSwgNDI5NzAsIDQyOTg1LCA0MzAwMCwgNDMwMTUsIAorICAgIDQzMDMwLCA0MzA0NSwgNDMwNjAsIDQzMDc1LCA0MzA5MCwgNDMxMDUsIDQzMTIwLCA0MzEzNSwgNDMxNTAsIDQzMTY1LCAKKyAgICA0MzE4MCwgNDMxOTUsIDQzMjEwLCA0MzIyNSwgNDMyNDAsIDQzMjU1LCA0MzI3MCwgNDMyODUsIDQzMzAwLCA0MzMxNSwgCisgICAgNDMzMzAsIDQzMzQ1LCA0MzM2MCwgNDMzNzUsIDQzMzkwLCA0MzQwNSwgNDM0MjAsIDQzNDM1LCA0MzQ1MCwgNDM0NjUsIAorICAgIDQzNDgwLCA0MzQ5NSwgNDM1MTAsIDQzNTI1LCA0MzU0MCwgNDM1NTUsIDQzNTcwLCA0MzU4NSwgNDM2MDAsIDQzNjE1LCAKKyAgICA0MzYzMCwgNDM2NDUsIDQzNjYwLCA0MzY3NSwgNDM2OTAsIDQzNzA1LCA0MzcyMCwgNDM3MzUsIDQzNzUwLCA0Mzc2NSwgCisgICAgNDM3ODAsIDQzNzk1LCA0MzgxMCwgNDM4MjUsIDQzODQwLCA0Mzg1NSwgNDM4NzAsIDQzODg1LCA0MzkwMCwgNDM5MTUsIAorICAgIDQzOTMwLCA0Mzk0NSwgNDM5NjAsIDQzOTc1LCA0Mzk5MCwgNDQwMDUsIDQ0MDIwLCA0NDAzNSwgNDQwNTAsIDQ0MDY1LCAKKyAgICA0NDA4MCwgNDQwOTUsIDQ0MTEwLCA0NDEyNSwgNDQxNDAsIDQ0MTU1LCA0NDE3MCwgNDQxODUsIDQ0MjAwLCA0NDIxNSwgCisgICAgNDQyMzAsIDQ0MjQ1LCA0NDI2MCwgNDQyNzUsIDQ0MjkwLCA0NDMwNSwgNDQzMjAsIDQ0MzM1LCA0NDM1MCwgNDQzNjUsIAorICAgIDQ0MzgwLCA0NDM5NSwgNDQ0MTAsIDQ0NDI1LCA0NDQ0MCwgNDQ0NTUsIDQ0NDcwLCA0NDQ4NSwgNDQ1MDAsIDQ0NTE1LCAKKyAgICA0NDUzMCwgNDQ1NDUsIDQ0NTYwLCA0NDU3NSwgNDQ1OTAsIDQ0NjA1LCA0NDYyMCwgNDQ2MzUsIDQ0NjUwLCA0NDY2NSwgCisgICAgNDQ2ODAsIDQ0Njk1LCA0NDcxMCwgNDQ3MjUsIDQ0NzQwLCA0NDc1NSwgNDQ3NzAsIDQ0Nzg1LCA0NDgwMCwgNDQ4MTUsIAorICAgIDQ0ODMwLCA0NDg0NSwgNDQ4NjAsIDQ0ODc1LCA0NDg5MCwgNDQ5MDUsIDQ0OTIwLCA0NDkzNSwgNDQ5NTAsIDQ0OTY1LCAKKyAgICA0NDk4MCwgNDQ5OTUsIDQ1MDEwLCA0NTAyNSwgNDUwNDAsIDQ1MDU1LCA0NTA3MCwgNDUwODUsIDQ1MTAwLCA0NTExNSwgCisgICAgNDUxMzAsIDQ1MTQ1LCA0NTE2MCwgNDUxNzUsIDQ1MTkwLCA0NTIwNSwgNDUyMjAsIDQ1MjM1LCA0NTI1MCwgNDUyNjUsIAorICAgIDQ1MjgwLCA0NTI5NSwgNDUzMTAsIDQ1MzI1LCA0NTM0MCwgNDUzNTUsIDQ1MzcwLCA0NTM4NSwgNDU0MDAsIDQ1NDE1LCAKKyAgICA0NTQzMCwgNDU0NDUsIDQ1NDYwLCA0NTQ3NSwgNDU0OTAsIDQ1NTA1LCA0NTUyMCwgNDU1MzUsIDQ1NTUwLCA0NTU2NSwgCisgICAgNDU1ODAsIDQ1NTk1LCA0NTYxMCwgNDU2MjUsIDQ1NjQwLCA0NTY1NSwgNDU2NzAsIDQ1Njg1LCA0NTcwMCwgNDU3MTUsIAorICAgIDQ1NzMwLCA0NTc0NSwgNDU3NjAsIDQ1Nzc1LCA0NTc5MCwgNDU4MDUsIDQ1ODIwLCA0NTgzNSwgNDU4NTAsIDQ1ODY1LCAKKyAgICA0NTg4MCwgNDU4OTUsIDQ1OTEwLCA0NTkyNSwgNDU5NDAsIDQ1OTU1LCA0NTk3MCwgNDU5ODUsIDQ2MDAwLCA0NjAxNSwgCisgICAgNDYwMzAsIDQ2MDQ1LCA0NjA2MCwgNDYwNzUsIDQ2MDkwLCA0NjEwNSwgNDYxMjAsIDQ2MTM1LCA0NjE1MCwgNDYxNjUsIAorICAgIDQ2MTgwLCA0NjE5NSwgNDYyMTAsIDQ2MjI1LCA0NjI0MCwgNDYyNTUsIDQ2MjcwLCA0NjI4NSwgNDYzMDAsIDQ2MzE1LCAKKyAgICA0NjMzMCwgNDYzNDUsIDQ2MzYwLCA0NjM3NSwgNDYzOTAsIDQ2NDA1LCA0NjQyMCwgNDY0MzUsIDQ2NDUwLCA0NjQ2NSwgCisgICAgNDY0ODAsIDQ2NDk1LCA0NjUxMCwgNDY1MjUsIDQ2NTQwLCA0NjU1NSwgNDY1NzAsIDQ2NTg1LCA0NjYwMCwgNDY2MTUsIAorICAgIDQ2NjMwLCA0NjY0NSwgNDY2NjAsIDQ2Njc1LCA0NjY5MCwgNDY3MDUsIDQ2NzIwLCA0NjczNSwgNDY3NTAsIDQ2NzY1LCAKKyAgICA0Njc4MCwgNDY3OTUsIDQ2ODEwLCA0NjgyNSwgNDY4NDAsIDQ2ODU1LCA0Njg3MCwgNDY4ODUsIDQ2OTAwLCA0NjkxNSwgCisgICAgNDY5MzAsIDQ2OTQ1LCA0Njk2MCwgNDY5NzUsIDQ2OTkwLCA0NzAwNSwgNDcwMjAsIDQ3MDM1LCA0NzA1MCwgNDcwNjUsIAorICAgIDQ3MDgwLCA0NzA5NSwgNDcxMTAsIDQ3MTI1LCA0NzE0MCwgNDcxNTUsIDQ3MTcwLCA0NzE4NSwgNDcyMDAsIDQ3MjE1LCAKKyAgICA0NzIzMCwgNDcyNDUsIDQ3MjYwLCA0NzI3NSwgNDcyOTAsIDQ3MzA1LCA0NzMyMCwgNDczMzUsIDQ3MzUwLCA0NzM2NSwgCisgICAgNDczODAsIDQ3Mzk1LCA0NzQxMCwgNDc0MjUsIDQ3NDQwLCA0NzQ1NSwgNDc0NzAsIDQ3NDg1LCA0NzUwMCwgNDc1MTUsIAorICAgIDQ3NTMwLCA0NzU0NSwgNDc1NjAsIDQ3NTc1LCA0NzU5MCwgNDc2MDUsIDQ3NjIwLCA0NzYzNSwgNDc2NTAsIDQ3NjY1LCAKKyAgICA0NzY4MCwgNDc2OTUsIDQ3NzEwLCA0NzcyNSwgNDc3NDAsIDQ3NzU1LCA0Nzc3MCwgNDc3ODUsIDQ3ODAwLCA0NzgxNSwgCisgICAgNDc4MzAsIDQ3ODQ1LCA0Nzg2MCwgNDc4NzUsIDQ3ODkwLCA0NzkwNSwgNDc5MjAsIDQ3OTM1LCA0Nzk1MCwgNDc5NjUsIAorICAgIDQ3OTgwLCA0Nzk5NSwgNDgwMTAsIDQ4MDI1LCA0ODA0MCwgNDgwNTUsIDQ4MDcwLCA0ODA4NSwgNDgxMDAsIDQ4MTE1LCAKKyAgICA0ODEzMCwgNDgxNDUsIDQ4MTYwLCA0ODE3NSwgNDgxOTAsIDQ4MjA1LCA0ODIyMCwgNDgyMzUsIDQ4MjUwLCA0ODI2NSwgCisgICAgNDgyODAsIDQ4Mjk1LCA0ODMxMCwgNDgzMjUsIDQ4MzQwLCA0ODM1NSwgNDgzNzAsIDQ4Mzg1LCA0ODQwMCwgNDg0MTUsIAorICAgIDQ4NDMwLCA0ODQ0NSwgNDg0NjAsIDQ4NDc1LCA0ODQ5MCwgNDg1MDUsIDQ4NTIwLCA0ODUzNSwgNDg1NTAsIDQ4NTY1LCAKKyAgICA0ODU4MCwgNDg1OTUsIDQ4NjEwLCA0ODYyNSwgNDg2NDAsIDQ4NjU1LCA0ODY3MCwgNDg2ODUsIDQ4NzAwLCA0ODcxNSwgCisgICAgNDg3MzAsIDQ4NzQ1LCA0ODc2MCwgNDg3NzUsIDQ4NzkwLCA0ODgwNSwgNDg4MjAsIDQ4ODM1LCA0ODg1MCwgNDg4NjUsIAorICAgIDQ4ODgwLCA0ODg5NSwgNDg5MTAsIDQ4OTI1LCA0ODk0MCwgNDg5NTUsIDQ4OTcwLCA0ODk4NSwgNDkwMDAsIDQ5MDE1LCAKKyAgICA0OTAzMCwgNDkwNDUsIDQ5MDYwLCA0OTA3NSwgNDkwOTAsIDQ5MTA1LCA0OTEyMCwgNDkxMzUsIDQ5MTUwLCA0OTE2NSwgCisgICAgNDkxODAsIDQ5MTk1LCA0OTIxMCwgNDkyMjUsIDQ5MjQwLCA0OTI1NSwgNDkyNzAsIDQ5Mjg1LCA0OTMwMCwgNDkzMTUsIAorICAgIDQ5MzMwLCA0OTM0NSwgNDkzNjAsIDQ5Mzc1LCA0OTM5MCwgNDk0MDUsIDQ5NDIwLCA0OTQzNSwgNDk0NTAsIDQ5NDY1LCAKKyAgICA0OTQ4MCwgNDk0OTUsIDQ5NTExLCA0OTUyNywgNDk1NDMsIDQ5NTU5LCA0OTU3NSwgNDk1OTEsIDQ5NjA3LCA0OTYyMywgCisgICAgNDk2MzksIDQ5NjU1LCA0OTY3MSwgNDk2ODcsIDQ5NzAzLCA0OTcxOSwgNDk3MzUsIDQ5NzUxLCA0OTc2NywgNDk3ODMsIAorICAgIDQ5Nzk5LCA0OTgxNSwgNDk4MzEsIDQ5ODQ3LCA0OTg2MywgNDk4NzksIDQ5ODk1LCA0OTkxMSwgNDk5MjcsIDQ5OTQzLCAKKyAgICA0OTk1OSwgNDk5NzUsIDQ5OTkxLCA1MDAwNywgNTAwMjMsIDUwMDM5LCA1MDA1NSwgNTAwNzEsIDUwMDg3LCA1MDEwMywgCisgICAgNTAxMTksIDUwMTM1LCA1MDE1MSwgNTAxNjcsIDUwMTgzLCA1MDE5OSwgNTAyMTUsIDUwMjMxLCA1MDI0NywgNTAyNjMsIAorICAgIDUwMjc5LCA1MDI5NSwgNTAzMTEsIDUwMzI3LCA1MDM0MywgNTAzNTksIDUwMzc1LCA1MDM5MSwgNTA0MDcsIDUwNDIzLCAKKyAgICA1MDQzOSwgNTA0NTUsIDUwNDcxLCA1MDQ4NywgNTA1MDMsIDUwNTE5LCA1MDUzNSwgNTA1NTEsIDUwNTY3LCA1MDU4MywgCisgICAgNTA1OTksIDUwNjE1LCA1MDYzMSwgNTA2NDcsIDUwNjYzLCA1MDY3OSwgNTA2OTUsIDUwNzExLCA1MDcyNywgNTA3NDMsIAorICAgIDUwNzU5LCA1MDc3NSwgNTA3OTEsIDUwODA3LCA1MDgyMywgNTA4MzksIDUwODU1LCA1MDg3MSwgNTA4ODcsIDUwOTAzLCAKKyAgICA1MDkxOSwgNTA5MzUsIDUwOTUxLCA1MDk2NywgNTA5ODMsIDUwOTk5LCA1MTAxNSwgNTEwMzEsIDUxMDQ3LCA1MTA2MywgCisgICAgNTEwNzksIDUxMDk1LCA1MTExMSwgNTExMjcsIDUxMTQzLCA1MTE1OSwgNTExNzUsIDUxMTkxLCA1MTIwNywgNTEyMjMsIAorICAgIDUxMjM5LCA1MTI1NSwgNTEyNzEsIDUxMjg3LCA1MTMwMywgNTEzMTksIDUxMzM1LCA1MTM1MSwgNTEzNjcsIDUxMzgzLCAKKyAgICA1MTM5OSwgNTE0MTUsIDUxNDMxLCA1MTQ0NywgNTE0NjMsIDUxNDc5LCA1MTQ5NSwgNTE1MTEsIDUxNTI3LCA1MTU0MywgCisgICAgNTE1NTksIDUxNTc1LCA1MTU5MSwgNTE2MDcsIDUxNjIzLCA1MTYzOSwgNTE2NTUsIDUxNjcxLCA1MTY4NywgNTE3MDMsIAorICAgIDUxNzE5LCA1MTczNSwgNTE3NTEsIDUxNzY3LCA1MTc4MywgNTE3OTksIDUxODE1LCA1MTgzMSwgNTE4NDcsIDUxODYzLCAKKyAgICA1MTg3OSwgNTE4OTUsIDUxOTExLCA1MTkyNywgNTE5NDMsIDUxOTU5LCA1MTk3NSwgNTE5OTEsIDUyMDA3LCA1MjAyMywgCisgICAgNTIwMzksIDUyMDU1LCA1MjA3MSwgNTIwODcsIDUyMTAzLCA1MjExOSwgNTIxMzUsIDUyMTUxLCA1MjE2NywgNTIxODMsIAorICAgIDUyMTk5LCA1MjIxNSwgNTIyMzEsIDUyMjQ3LCA1MjI2MywgNTIyNzksIDUyMjk1LCA1MjMxMSwgNTIzMjcsIDUyMzQzLCAKKyAgICA1MjM1OSwgNTIzNzUsIDUyMzkxLCA1MjQwNywgNTI0MjMsIDUyNDM5LCA1MjQ1NSwgNTI0NzEsIDUyNDg3LCA1MjUwMywgCisgICAgNTI1MTksIDUyNTM1LCA1MjU1MSwgNTI1NjcsIDUyNTgzLCA1MjU5OSwgNTI2MTUsIDUyNjMxLCA1MjY0NywgNTI2NjMsIAorICAgIDUyNjc5LCA1MjY5NSwgNTI3MTEsIDUyNzI3LCA1Mjc0MywgNTI3NTksIDUyNzc1LCA1Mjc5MSwgNTI4MDcsIDUyODIzLCAKKyAgICA1MjgzOSwgNTI4NTUsIDUyODcxLCA1Mjg4NywgNTI5MDMsIDUyOTE5LCA1MjkzNSwgNTI5NTEsIDUyOTY3LCA1Mjk4MywgCisgICAgNTI5OTksIDUzMDE1LCA1MzAzMSwgNTMwNDcsIDUzMDYzLCA1MzA3OSwgNTMwOTUsIDUzMTExLCA1MzEyNywgNTMxNDMsIAorICAgIDUzMTU5LCA1MzE3NSwgNTMxOTEsIDUzMjA3LCA1MzIyMywgNTMyMzksIDUzMjU1LCA1MzI3MSwgNTMyODcsIDUzMzAzLCAKKyAgICA1MzMxOSwgNTMzMzUsIDUzMzUxLCA1MzM2NywgNTMzODMsIDUzMzk5LCA1MzQxNSwgNTM0MzEsIDUzNDQ3LCA1MzQ2MywgCisgICAgNTM0NzksIDUzNDk1LCA1MzUxMSwgNTM1MjcsIDUzNTQzLCA1MzU1OSwgNTM1NzUsIDUzNTkxLCA1MzYwNywgNTM2MjMsIAorICAgIDUzNjM5LCA1MzY1NSwgNTM2NzEsIDUzNjg3LCA1MzcwMywgNTM3MTksIDUzNzM1LCA1Mzc1MSwgNTM3NjcsIDUzNzgzLCAKKyAgICA1Mzc5OSwgNTM4MTUsIDUzODMxLCA1Mzg0NywgNTM4NjMsIDUzODc5LCA1Mzg5NSwgNTM5MTEsIDUzOTI3LCA1Mzk0MywgCisgICAgNTM5NTksIDUzOTc1LCA1Mzk5MSwgNTQwMDcsIDU0MDIzLCA1NDAzOSwgNTQwNTUsIDU0MDcxLCA1NDA4NywgNTQxMDMsIAorICAgIDU0MTE5LCA1NDEzNSwgNTQxNTEsIDU0MTY3LCA1NDE4MywgNTQxOTksIDU0MjE1LCA1NDIzMSwgNTQyNDcsIDU0MjYzLCAKKyAgICA1NDI3OSwgNTQyOTUsIDU0MzExLCA1NDMyNywgNTQzNDMsIDU0MzU5LCA1NDM3NSwgNTQzOTEsIDU0NDA3LCA1NDQyMywgCisgICAgNTQ0MzksIDU0NDU1LCA1NDQ3MSwgNTQ0ODcsIDU0NTAzLCA1NDUxOSwgNTQ1MzUsIDU0NTUxLCA1NDU2NywgNTQ1ODMsIAorICAgIDU0NTk5LCA1NDYxNSwgNTQ2MzEsIDU0NjQ3LCA1NDY2MywgNTQ2NzksIDU0Njk1LCA1NDcxMSwgNTQ3MjcsIDU0NzQzLCAKKyAgICA1NDc1OSwgNTQ3NzUsIDU0NzkxLCA1NDgwNywgNTQ4MjMsIDU0ODM5LCA1NDg1NSwgNTQ4NzEsIDU0ODg3LCA1NDkwMywgCisgICAgNTQ5MTksIDU0OTM1LCA1NDk1MSwgNTQ5NjcsIDU0OTgzLCA1NDk5OSwgNTUwMTUsIDU1MDMxLCA1NTA0NywgNTUwNjMsIAorICAgIDU1MDc5LCA1NTA5NSwgNTUxMTEsIDU1MTI3LCA1NTE0MywgNTUxNTksIDU1MTc1LCA1NTE5MSwgNTUyMDcsIDU1MjIzLCAKKyAgICA1NTIzOSwgNTUyNTUsIDU1MjcxLCA1NTI4NywgNTUzMDMsIDU1MzE5LCA1NTMzNSwgNTUzNTEsIDU1MzY3LCA1NTM4MywgCisgICAgNTUzOTksIDU1NDE1LCA1NTQzMSwgNTU0NDcsIDU1NDYzLCA1NTQ3OSwgNTU0OTUsIDU1NTExLCA1NTUyNywgNTU1NDMsIAorICAgIDU1NTU5LCA1NTU3NSwgNTU1OTEsIDU1NjA3LCA1NTYyMywgNTU2MzksIDU1NjU1LCA1NTY3MSwgNTU2ODcsIDU1NzAzLCAKKyAgICA1NTcxOSwgNTU3MzUsIDU1NzUxLCA1NTc2NywgNTU3ODMsIDU1Nzk5LCA1NTgxNSwgNTU4MzEsIDU1ODQ3LCA1NTg2MywgCisgICAgNTU4NzksIDU1ODk1LCA1NTkxMSwgNTU5MjcsIDU1OTQzLCA1NTk1OSwgNTU5NzUsIDU1OTkxLCA1NjAwNywgNTYwMjMsIAorICAgIDU2MDM5LCA1NjA1NSwgNTYwNzEsIDU2MDg3LCA1NjEwMywgNTYxMTksIDU2MTM1LCA1NjE1MSwgNTYxNjcsIDU2MTgzLCAKKyAgICA1NjE5OSwgNTYyMTUsIDU2MjMxLCA1NjI0NywgNTYyNjMsIDU2Mjc5LCA1NjI5NSwgNTYzMTEsIDU2MzI3LCA1NjM0MywgCisgICAgNTYzNTksIDU2Mzc1LCA1NjM5MSwgNTY0MDcsIDU2NDIzLCA1NjQzOSwgNTY0NTUsIDU2NDcxLCA1NjQ4NywgNTY1MDMsIAorICAgIDU2NTE5LCA1NjUzNSwgNTY1NTEsIDU2NTY3LCA1NjU4MywgNTY1OTksIDU2NjE1LCA1NjYzMSwgNTY2NDcsIDU2NjYzLCAKKyAgICA1NjY3OSwgNTY2OTUsIDU2NzExLCA1NjcyNywgNTY3NDMsIDU2NzU5LCA1Njc3NSwgNTY3OTEsIDU2ODA3LCA1NjgyMywgCisgICAgNTY4MzksIDU2ODU1LCA1Njg3MSwgNTY4ODcsIDU2OTAzLCA1NjkxOSwgNTY5MzUsIDU2OTUxLCA1Njk2NywgNTY5ODMsIAorICAgIDU2OTk5LCA1NzAxNSwgNTcwMzEsIDU3MDQ3LCA1NzA2MywgNTcwNzksIDU3MDk1LCA1NzExMSwgNTcxMjcsIDU3MTQzLCAKKyAgICA1NzE1OSwgNTcxNzUsIDU3MTkxLCA1NzIwNywgNTcyMjMsIDU3MjM5LCA1NzI1NSwgNTcyNzEsIDU3Mjg3LCA1NzMwMywgCisgICAgNTczMTksIDU3MzM1LCA1NzM1MSwgNTczNjcsIDU3MzgzLCA1NzM5OSwgNTc0MTUsIDU3NDMxLCA1NzQ0NywgNTc0NjMsIAorICAgIDU3NDc5LCA1NzQ5NSwgNTc1MTEsIDU3NTI3LCA1NzU0MywgNTc1NTksIDU3NTc1LCA1NzU5MSwgNTc2MDcsIDU3NjIzLCAKKyAgICA1NzYzOSwgNTc2NTUsIDU3NjcxLCA1NzY4NywgNTc3MDMsIDU3NzE5LCA1NzczNSwgNTc3NTEsIDU3NzY3LCA1Nzc4MywgCisgICAgNTc3OTksIDU3ODE1LCA1NzgzMSwgNTc4NDcsIDU3ODYzLCA1Nzg3OSwgNTc4OTUsIDU3OTExLCA1NzkyNywgNTc5NDMsIAorICAgIDU3OTU5LCA1Nzk3NSwgNTc5OTEsIDU4MDA3LCA1ODAyMywgNTgwMzksIDU4MDU1LCA1ODA3MSwgNTgwODcsIDU4MTAzLCAKKyAgICA1ODExOSwgNTgxMzUsIDU4MTUxLCA1ODE2NywgNTgxODIsIDE2NzQ5LCA1ODE5MSwgNTgxOTcsIDU4MjAzLCA1ODIxMywgCisgICAgNTgyMjEsIDE0ODgxLCAxNTQzMiwgOTk1MywgNTgyMzQsIDE1MjAsIDU4MjQyLCAzNzYxLCAyNzQxNSwgNzE4MywgNTgyNDgsIAorICAgIDU4MjUzLCA1ODI1OCwgNTgyNjMsIDU4MjY4LCA1ODI3NCwgNTgyNzksIDU4Mjg1LCA1ODI5MCwgNTgyOTYsIDU4MzAxLCAKKyAgICA1ODMwNiwgNTgzMTEsIDU4MzE2LCA1ODMyMiwgNTgzMjcsIDU4MzMyLCA1ODMzNywgNTgzNDIsIDU4MzQ3LCA1ODM1MiwgCisgICAgNTgzNTcsIDU4MzYzLCA1ODM2OCwgNTgzNzQsIDU4MzgxLCAyNTYxLCA1ODM4NiwgNTgzOTIsIDg1MjYsIDU4Mzk2LCAKKyAgICA1ODQwMSwgNTg0MDgsIDU4NDE2LCA0MCwgNTg0MjAsIDU4NDI2LCA1ODQzMSwgNTg0MzYsIDU4NDQwLCA1ODQ0NSwgNTg0NDksIAorICAgIDU4NDUzLCAxMDY3NywgNTg0NTcsIDU4NDY3LCA1ODQ4MCwgNTg0OTEsIDU4NTA0LCA1ODUxMSwgNTg1MTcsIDU4NTIyLCAKKyAgICA1ODUyOCwgNTg1MzQsIDU4NTQwLCA1ODU0NSwgNTg1NTAsIDU4NTU1LCA1ODU2MCwgNTg1NjQsIDU4NTY5LCA1ODU3NCwgCisgICAgNTg1NzksIDU4NTg1LCA1ODU5MSwgNTg1OTcsIDU4NjAyLCA1ODYwNiwgNTg2MTEsIDU4NjE2LCA1ODYyMCwgNTg2MjUsIAorICAgIDU4NjMwLCA1ODYzNSwgNTg2MzksIDEwNjkzLCAxMDcwNCwgMTA3MDksIDE1NjMsIDU4NjQzLCAxNTY4LCA1ODY0OSwgCisgICAgMTYyMjYsIDU4NjUyLCA1ODY1OCwgMTU5OSwgNTg2NjQsIDE2MDUsIDE2MTEsIDEwNzM5LCA1ODY2OSwgNTg2NzcsIDU4Njg0LCAKKyAgICA1ODY4OCwgNTg2OTQsIDU4Njk5LCAzMDk1MiwgNTg3MDQsIDU4NzExLCA1ODcxNiwgNTg3MjAsIDU4NzI0LCAxNjE2LCAKKyAgICAxNjMxOCwgNTg3MzMsIDU4NzM3LCAxNjMyOSwgMTEyMCwgNTg3NDEsIDU4NzQ4LCA1ODc1MywgNTg3NTcsIDE2MzU0LCAKKyAgICAxNjIwLCAzNzMyMSwgNTg3NjAsIDU4NzY1LCA1ODc3NSwgNTg3ODQsIDU4Nzg5LCA1ODc5MywgNTg3OTksIDE2MjUsIAorICAgIDM5MjMwLCA1ODgwNCwgNTg4MTMsIDU4ODE5LCA1ODgyNCwgMTA4OTcsIDEwOTAzLCA1ODgzMCwgNTg4NDIsIDU4ODU5LCAKKyAgICA1ODg3NiwgNTg4OTMsIDU4OTEwLCA1ODkyNywgNTg5NDQsIDU4OTYxLCA1ODk3OCwgNTg5OTUsIDU5MDEyLCA1OTAyOSwgCisgICAgNTkwNDYsIDU5MDYzLCA1OTA4MCwgNTkwOTcsIDU5MTE0LCA1OTEzMSwgNTkxNDgsIDU5MTY1LCA1OTE4MiwgNTkxOTksIAorICAgIDU5MjE2LCA1OTIzMywgNTkyNTAsIDU5MjY3LCA1OTI4NCwgNTkzMDEsIDU5MzE4LCA1OTMzNSwgNTkzNTIsIDU5MzY5LCAKKyAgICA1OTM4NiwgNTk0MDMsIDU5NDIwLCA1OTQzNywgNTk0NTQsIDU5NDcxLCA1OTQ4OCwgNTk1MDUsIDU5NTIyLCA1OTUzOSwgCisgICAgNTk1NTYsIDU5NTczLCA1OTU5MCwgNTk2MDcsIDU5NjI0LCA1OTY0MSwgNTk2NTgsIDU5Njc1LCA1OTY4NiwgNTk2OTEsIAorICAgIDE2MzAsIDU5Njk1LCA1OTcwMSwgNTk3MDYsIDU5NzExLCA5MzE5LCAxNjM1LCA1OTcxNywgNTk3MjYsIDI3NzEwLCA1OTczMSwgCisgICAgNTk3NDIsIDU5NzUyLCA1OTc1NywgNTk3NjQsIDU5NzcwLCA1OTc3NSwgNTk3ODAsIDE2NjA2LCA1OTc4NCwgMTA5MTQsIAorICAgIDE2NDAsIDEwOTE5LCA1OTc5MCwgNTk3OTUsIDU5ODAxLCA1OTgwNiwgNTk4MTEsIDU5ODE2LCA1OTgyMSwgNTk4MjYsIAorICAgIDU5ODMxLCA1OTgzNiwgNTk4NDIsIDU5ODQ4LCA1OTg1NCwgNTk4NTksIDU5ODYzLCA1OTg2OCwgNTk4NzMsIDU5ODc3LCAKKyAgICA1OTg4MiwgNTk4ODcsIDU5ODkyLCA1OTg5NiwgNTk5MDEsIDU5OTA3LCA1OTkxMiwgNTk5MTcsIDU5OTIxLCA1OTkyNiwgCisgICAgNTk5MzEsIDU5OTM3LCA1OTk0MiwgNTk5NDcsIDU5OTUzLCA1OTk1OSwgNTk5NjQsIDU5OTY4LCA1OTk3MywgNTk5NzgsIAorICAgIDU5OTgzLCA1OTk4NywgNTk5OTIsIDU5OTk3LCA2MDAwMiwgNjAwMDgsIDYwMDE0LCA2MDAxOSwgNjAwMjMsIDYwMDI3LCAKKyAgICA2MDAzMiwgNjAwMzcsIDYwMDQyLCAyOTEwOCwgNjAwNDYsIDYwMDUxLCA2MDA1NiwgNjAwNjIsIDYwMDY3LCA2MDA3MiwgCisgICAgNjAwNzYsIDYwMDgxLCA2MDA4NiwgNjAwOTIsIDYwMDk3LCA2MDEwMiwgNjAxMDgsIDYwMTE0LCA2MDExOSwgNjAxMjMsIAorICAgIDYwMTI4LCA2MDEzMywgNjAxMzcsIDYwMTQyLCA2MDE0NywgNjAxNTIsIDYwMTU4LCA2MDE2NCwgNjAxNjksIDYwMTczLCAKKyAgICA2MDE3OCwgNjAxODMsIDYwMTg3LCA2MDE5MiwgNjAxOTcsIDYwMjAyLCA2MDIwNiwgNjAyMDksIDMxNjE0LCA2MDIxNCwgCisgICAgNjAyMjIsIDE2NjcyLCAzNjYzLCAxMTAxMCwgNjAyMjgsIDYwMjM4LCA2MDI1MywgMTEwMTUsIDYwMjY0LCA2MDI2OSwgCisgICAgNjAyODAsIDYwMjkyLCA2MDMwNCwgNjAzMTYsIDI2OTUsIDYwMzI4LCA2MDMzMywgNjAzNDUsIDYwMzQ5LCA2MDM1NSwgCisgICAgNjAzNjEsIDYwMzY2LCAxNjUyLCAxMDY3LCA2MDM3NSwgNjAzODAsIDM5MjgwLCA2MDM4NCwgNjAzODgsIDYwMzkzLCAKKyAgICA2MDM5NywgMTY3NTcsIDYwNDAyLCA2MDQwNSwgNjA0MTMsIDYwNDIxLCAxNjU2LCAxMTA0MCwgMTEwNDYsIDE2NjEsIAorICAgIDYwNDI5LCA2MDQzNiwgNjA0NDEsIDYwNDUwLCA2MDQ2MCwgNjA0NjcsIDYwNDcyLCA2MDQ3NywgMTY2NiwgNjA0ODQsIAorICAgIDYwNDg5LCAxNjg3MiwgNjA0OTMsIDYwNDk4LCA2MDUwNSwgNjA1MTEsIDYwNTE1LCA2MDUyNiwgNjA1MzYsIDE2ODk0LCAKKyAgICA5MjI3LCA5MjM0LCAxNjcxLCA2MDU0MywgNjA1NDksIDYwNTU3LCA2MDU2NCwgNjA1NzAsIDYwNTc3LCA2MDU4OSwgNjA1OTUsIAorICAgIDYwNjAwLCA2MDYxMiwgNjA2MjMsIDYwNjMyLCA2MDY0MiwgMzc0MCwgMzA3ODgsIDMwNzk3LCAxNjkzNCwgMTY3NiwgMTY4MCwgCisgICAgNjA2NTAsIDYwNjYxLCA2MDY2NiwgMTY4MywgNjA2NzQsIDYwNjc5LCAxNjk4NSwgNjA2OTEsIDYwNjk3LCA2MDcwMiwgCisgICAgNjA3MTAsIDE2ODgsIDYwNzE1LCA2MDcyMCwgNjA3MjgsIDYwNzM2LCA2MDc0MywgNjA3NTIsIDYwNzYwLCA2MDc2OSwgCisgICAgMTY5MywgNjA3NzMsIDE2OTgsIDYwNzc4LCA2MDc4NSwgMTcwNTksIDYwNzkzLCA2MDc5OSwgNjA4MDQsIDYwODEyLCAKKyAgICA2MDgxOSwgNjA4MjcsIDIyNTU3LCA2MDgzMiwgMTExNzUsIDYwODQxLCA2MDg0NywgNjA4NTQsIDYwODYxLCA2MDg2NywgCisgICAgNjA4NzcsIDYwODgzLCA2MDg4OCwgNjA4OTksIDYwOTA0LCA2MDkxMiwgMTExODQsIDExMTg5LCA2MDkyMCwgNjA5MjYsIAorICAgIDYwOTM0LCAzODA1LCAxNzEwMSwgMzkzNjgsIDYwOTM5LCA2MDk0NSwgNjA5NTAsIDYwOTU4LCA2MDk2NSwgMTIwMjksIAorICAgIDYwOTcwLCA2MDk3NiwgMTcwOSwgNjA5ODEsIDYwOTg0LCAxMTI3LCA2MDk5MCwgNjA5OTUsIDYxMDAwLCA2MTAwNiwgCisgICAgNjEwMTEsIDYxMDE2LCA2MTAyMSwgNjEwMjYsIDYxMDMxLCA2MTAzNiwgMTcxOCwgOSwgNjEwNDIsIDYxMDQ2LCA2MTA1MSwgCisgICAgNjEwNTUsIDYxMDU5LCA2MTA2MywgMzE4NTQsIDYxMDY4LCA2MTA3MywgNjEwNzgsIDYxMDgyLCA2MTA4NSwgNjEwODksIAorICAgIDYxMDkzLCA2MTA5OCwgNjExMDIsIDYxMTA3LCA2MTExMSwgMzQ1OTEsIDM0NTk2LCAzNDYwMSwgNjExMTQsIDYxMTIxLCAKKyAgICA2MTEyNywgMzkwODksIDYxMTM3LCAzNDYwNywgMzIxMTIsIDMxODY5LCAzMTg3NSwgMzQ2MjMsIDMxODgxLCA2MTE0MiwgCisgICAgNjExNDcsIDMyMTQ1LCA2MTE1MSwgNjExNTQsIDYxMTU4LCA2MTE2NSwgNjExNjgsIDYxMTczLCA2MTE3NywgNjExODEsIAorICAgIDYxMTg0LCA2MTE5NCwgNjEyMDYsIDYxMjEzLCA2MTIxOSwgNjEyMjYsIDMzNTQ4LCA2MTIyOSwgODU0MywgODc3LCA2MTIzMiwgCisgICAgNjEyMzYsIDYxMjQxLCAzNjkwLCA2MTI0NSwgNjEyNDgsIDEzNjI1LCA2MTI1NSwgNjEyNjIsIDYxMjc1LCA2MTI4MywgCisgICAgNjEyOTIsIDYxMzAxLCA2MTMwNiwgNjEzMTYsIDYxMzI5LCA2MTM0MSwgNjEzNDgsIDYxMzUzLCA2MTM2MiwgNjEzNzUsIAorICAgIDM2MDM1LCA2MTM5MywgNjEzOTgsIDYxNDA1LCA2MTQxMSwgNjUyLCA2MTQxNiwgNjE0MjQsIDYxNDMxLCAyNzI1NCwgNjI3LCAKKyAgICA2MTQzNywgNjE0NDMsIDYxNDUzLCA2MTQ1OSwgNjE0NjQsIDMxODk5LCA2MDAzLCAzMTkxMywgNjE0NjgsIDYxNDc4LCAKKyAgICA2MTQ4MywgNjE0OTMsIDYxNTA4LCA2MTUxNCwgNjE1MjAsIDMxOTIzLCA2MTUyNSwgMzEwNjksIDYxNTI5LCA2MTUzNCwgCisgICAgNjE1MzksIDYxNTQzLCA2MTU0OCwgMTY5MzcsIDYxNTU1LCA2MTU2MCwgNjE1NjQsIDYwNDQsIDMxOTQ5LCA2MTU2OCwgCisgICAgNjE1NzQsIDMxMiwgNjE1ODQsIDYxNTkxLCA2MTU5OCwgNjE2MDMsIDYxNjEyLCA1ODc2OSwgNjE2MTgsIDYxNjI2LCAKKyAgICA2MTYzMCwgNjE2MzQsIDYxNjM4LCA2MTY0MiwgNjE2NDcsIDYxNjUxLCA2MTY1NywgNjE2NjUsIDYxNjcwLCA2MTY3NSwgCisgICAgNjE2NzksIDYxNjg0LCA2MTY4OCwgNjE2OTIsIDYxNjk4LCA2MTcwNCwgNjE3MDksIDYxNzEzLCAzMjA3MywgNjE3MTgsIAorICAgIDMyMDc5LCAzMjA4NSwgNjE3MjMsIDYxNzI5LCA2MTczNiwgNjE3NDEsIDYxNzQ1LCAzMTA4NiwgMTY1OTksIDYxNzQ4LCAKKyAgICA2MTc1MiwgNjE3NTcsIDYxNzY0LCA2MTc3MCwgNjE3NzQsIDYxNzc5LCAzODc5OSwgNjE3ODUsIDYxNzg5LCA2MTc5MywgCisgICAgNjE3OTgsIDYxODA0LCA2MTgxMCwgNjE4MjIsIDYxODMxLCA2MTg0MSwgNjE4NDcsIDYxODU0LCA2MTg1OSwgNjE4NjQsIAorICAgIDYxODY4LCA2MTg3MSwgNjE4NzcsIDYxODg0LCA2MTg4OSwgNjE4OTQsIDYxOTAxLCA2MTkwOCwgNjE5MTQsIDYxOTE5LCAKKyAgICA2MTkyNCwgNjE5MzIsIDMyMDkwLCAyNDIzLCA2MTkzNywgNjE5NDIsIDYxOTQ4LCA2MTk1MywgNjE5NTksIDYxOTY0LCAKKyAgICA2MTk2OSwgNjE5NzQsIDYxOTgwLCAzMjExMSwgNjE5ODUsIDYxOTkxLCA2MTk5NywgNjIwMDMsIDMyMTc1LCA2MjAwOCwgCisgICAgNjIwMTMsIDYyMDE4LCAzMjE4NiwgNjIwMjMsIDYyMDI4LCA2MjAzMywgNjIwMzksIDYyMDQ1LCAzMjE5MSwgNjIwNTAsIAorICAgIDYyMDU1LCA2MjA2MCwgMzIyNDYsIDMyMjUyLCA2MjA2NSwgNjIwNzAsIDMyMjU3LCA2MjA3NSwgMjc5MzcsIDMyMjc5LCAKKyAgICAzMjI4MywgNjIwODAsIDYyMDU2LCA2MjA4NCwgNjIwOTIsIDYyMDk4LCA2MjEwNiwgNjIxMTMsIDYyMTE5LCA2MjEyOSwgCisgICAgNjIxMzUsIDYyMTQyLCAxMDYyNCwgMzIyOTcsIDYyMTQ4LCA2MjE2MSwgNjIxNzAsIDYyMTc2LCA2MjE4NSwgNjIxOTEsIAorICAgIDIzNDk1LCA2MjE5OCwgNjIyMDUsIDYyMjE1LCAzMjI0NywgNjIyMTgsIDYyMjI1LCA2MjIzMCwgNjIyMzQsIDYyMjM4LCAKKyAgICA2MjI0MywgNjEyMCwgNjIyNDcsIDYyMjUyLCA2MjI1NywgMzQ2ODUsIDM0NjkwLCA2MjI2MSwgMzQ3MDQsIDYyMjY2LCAKKyAgICAzNDcwOSwgNjIyNzEsIDYyMjc3LCAzNDcyMSwgMzQ3MjcsIDM0NzMzLCA2MjI4MiwgNjIyODgsIDIyNTIyLCA2MjI5OSwgCisgICAgNjIzMDIsIDYyMzE0LCA2MjMyMiwgMzIzMjAsIDYyMzI2LCA2MjMzNSwgNjIzNDUsIDYyMzU0LCAzMjMzMCwgNjIzNTksIAorICAgIDYyMzY2LCA2MjM3NSwgNjIzODEsIDYyMzg5LCA2MjM5NiwgNjA5NSwgNDM5NywgNjI0MDEsIDMyMjU4LCA2MjQwNywgCisgICAgNjI0MTAsIDYyNDE2LCA2MjQyMywgNjI0MjgsIDYyNDMzLCAyMzQwNSwgNjI0MzcsIDYyNDQzLCA2MjQ0OSwgNjI0NTQsIAorICAgIDYyNDU5LCA2MjQ2MywgNjI0NjksIDYyNDc1LCAzMzQ1OCwgODYzLCAzNTY5OCwgMzY2MTksIDM2NjI1LCAzMjM2NiwgCisgICAgNjI0ODAsIDYyNDg0LCA2MjQ4OCwgNjI0OTEsIDYyNTA0LCA2MjUxMCwgNjI1MTQsIDYyNTE3LCA2MjUyMiwgMzM3NjEsIAorICAgIDYyNTI2LCAzMTA5MSwgMjEyNzQsIDYyNTMyLCA2MDI0LCA2MDMyLCA5MDY4LCA2MjUzNSwgNjI1NDAsIDYyNTQ1LCA2MjU1MCwgCisgICAgNjI1NTUsIDYyNTYwLCA2MjU2NSwgNjI1NzAsIDYyNTc1LCA2MjU4MCwgNjI1ODYsIDYyNTkxLCA2MjU5NiwgNjI2MDIsIAorICAgIDYyNjA3LCA2MjYxMiwgNjI2MTcsIDYyNjIyLCA2MjYyNywgNjI2MzIsIDYyNjM4LCA2MjY0MywgNjI2NDksIDYyNjU0LCAKKyAgICA2MjY1OSwgNjI2NjQsIDYyNjY5LCA2MjY3NCwgNjI2NzksIDYyNjg0LCA2MjY4OSwgNjI2OTQsIDYyNjk5LCA2MjcwNSwgCisgICAgNjI3MTAsIDYyNzE1LCA2MjcyMCwgNjI3MjUsIDYyNzMwLCA2MjczNSwgNjI3NDEsIDYyNzQ2LCA2Mjc1MSwgNjI3NTYsIAorICAgIDYyNzYxLCA2Mjc2NiwgNjI3NzEsIDYyNzc2LCA2Mjc4MSwgNjI3ODYsIDYyNzkyLCA2Mjc5NywgNjI4MDIsIDYyODA3LCAKKyAgICA2MjgxMiwgNjI4MTgsIDYyODI0LCA2MjgyOSwgNjI4MzUsIDYyODQwLCA2Mjg0NSwgNjI4NTAsIDYyODU1LCA2Mjg2MCwgCisgICAgMTUxMywgMjQ1LCA2Mjg2NSwgNjI4NjksIDYyODczLCA2Mjg3NywgMjUxMTYsIDYyODgxLCA2Mjg4NSwgNjI4OTAsIDYyODk0LCAKKyAgICA2Mjg5OSwgNjI5MDMsIDYyOTA4LCA2MjkxMywgNjI5MTgsIDYyOTIyLCA2MjkyNiwgNjI5MzEsIDYyOTM1LCAxMzM2MiwgCisgICAgNjI5NDAsIDYyOTQ0LCA2Mjk1MSwgNjI5NjEsIDE1MTkzLCA2Mjk3MCwgNjI5NzksIDYyOTgzLCA2Mjk4OCwgNjI5OTMsIAorICAgIDYyOTk3LCAyNDkwNywgMzAxOSwgNjMwMDEsIDE3MzUwLCA2MzAwNywgNjMwMTYsIDYzMDI0LCA2MzAzMCwgNjMwNDIsIAorICAgIDYzMDU0LCA2MzA1OCwgNjMwNjMsIDYzMDY3LCA2MzA3MywgNjMwNzksIDYzMDg0LCA2MzA5NCwgNjMxMDQsIDYzMTEwLCAKKyAgICA2MzExNSwgNjMxMTksIDYzMTI0LCA2MzEzMCwgNjMxMzksIDYzMTQ4LCA2MzE1NiwgMTU1NDcsIDYzMTYwLCA2MzE2OSwgCisgICAgNjMxNzcsIDYzMTg5LCA2MzIwMCwgNjMyMTEsIDYzMjIwLCA2MzIyNCwgNjMyMzMsIDYzMjQzLCA2MzI1MSwgNjMyNTcsIAorICAgIDYzMjYyLCA2MzI2OCwgNjMyNzMsIDk4LCAzMDkwMCwgNjMyODQsIDI2MjQ5LCAyNjI1OSwgNjMyOTAsIDYzMjk3LCA2MzMwMywgCisgICAgNjMzMDcsIDYzMzE3LCA2MzMyOCwgNjMzMzYsIDYzMzQ1LCA2MzM1MCwgNjMzNTUsIDYzMzU5LCAxNzMwNCwgNjMzNjcsIAorICAgIDYzMzcxLCA2MzM3NywgNjMzODcsIDYzMzk0LCA2MzQwMCwgMzQ3ODQsIDYzNDA2LCA2MzQwOCwgNjM0MTEsIDYzNDE1LCAKKyAgICA2MzQyNSwgNjM0MzEsIDYzNDM4LCAxMzMwOCwgNjM0NDUsIDYzNDUxLCA2MzQ2MCwgNjM0NjksIDYzNDc1LCA2MzQ4MSwgCisgICAgNjM0ODcsIDYzNDkyLCA2MzQ5OSwgNjM1MDYsIDYzNTEyLCA2MzUyNSwgNjM1MzQsIDYzNTQzLCA2MzU0OCwgNjM1NTIsIAorICAgIDYzNTU4LCA2MzU2NSwgNjM1NzIsIDYzNTc5LCA2MzU4NiwgNjM1OTMsIDYzNTk4LCA2MzYwMiwgNjM2MDYsIDYzNjA5LCAKKyAgICA2MzYxOSwgNjM2MjMsIDYzNjM1LCA2MzY0NCwgNjM2NDgsIDYzNjUzLCA2MzY1NywgNjM2NjMsIDYzNjY4LCA2MzY3NSwgCisgICAgNjM2ODQsIDYzNjkyLCA2MzcwMCwgNjM3MDUsIDYzNzA5LCA2MzcxNCwgNjM3MTksIDYzNzI5LCA2MzczNywgNjM3NDIsIAorICAgIDYzNzQ2LCA2Mzc1MCwgNjM3NTYsIDYzNzY4LCA2Mzc3NiwgNjM3ODYsIDYzNzkzLCA2Mzc5OSwgNjM4MDQsIDYzODA4LCAKKyAgICA2MzgxMiwgNjM4MTYsIDYzODI1LCA2MzgzNCwgNjM4NDMsIDYzODQ5LCA2Mzg1NSwgNjM4NjEsIDYzODY2LCA2Mzg3MywgCisgICAgNjM4NzksIDYzODg3LCA2Mzg5NCwgMTI0NTYsIDYzOTAwLCA2MzkwNiwgNjM5MTAsIDE0MjMxLCA2MzkxNCwgNjM5MTksIAorICAgIDYzOTI5LCA2MzkzOCwgNjM5NDQsIDYzOTUwLCA2Mzk1OCwgNjM5NjUsIDYzOTY5LCA2Mzk3MywgNjM5NzksIDYzOTg3LCAKKyAgICA2Mzk5NCwgNjQwMDAsIDY0MDExLCA2NDAxNSwgNjQwMTksIDY0MDIzLCA2NDAyNiwgNjQwMzIsIDY0MDM3LCA2NDA0MSwgCisgICAgNjQwNDUsIDY0MDU0LCA2NDA2MiwgNjQwNjksIDY0MDc1LCA2NDA4MiwgMjQwMjksIDM4ODQxLCA2NDA4NywgNjQwOTUsIAorICAgIDY0MDk5LCA2NDEwMywgNjQxMDYsIDY0MTE0LCA2NDEyMSwgNjQxMjcsIDY0MTM2LCA2NDE0NCwgNjQxNTAsIDY0MTU1LCAKKyAgICA2NDE1OSwgNjQxNjQsIDY0MTY4LCA2NDE3MiwgNjQxNzcsIDY0MTg2LCA2NDE5MCwgNjQxOTcsIDY0MjA0LCA2NDIxMCwgCisgICAgNjQyMTgsIDY0MjI0LCA2NDIzNSwgNjQyNDMsIDY0MjQ5LCAyMjY1MiwgNjQyNTgsIDY0MjY1LCA2NDI3MiwgNjQyNzksIAorICAgIDY0Mjg2LCA2NDI5MywgNDE4NzAsIDEzMTQ2LCA2NDMwMCwgNjQzMDcsIDY0MzEyLCAzNDgyMCwgNjIxNywgNjQzMTgsIAorICAgIDY0MzIzLCA2NDMyOCwgNjQzMzQsIDY0MzQwLCA2NDM0NiwgNjQzNTEsIDY0MzU2LCA2NDM2MSwgNjQzNjYsIDY0MzcyLCAKKyAgICA2NDM3NywgNjQzODMsIDY0Mzg4LCA2NDM5NCwgNjQzOTksIDY0NDA0LCA2NDQwOSwgNjQ0MTQsIDY0NDE5LCA2NDQyNCwgCisgICAgNjQ0MjksIDY0NDM1LCA2NDQ0MCwgNjQ0NDYsIDY0NDUxLCA2NDQ1NiwgNjQ0NjEsIDY0NDY2LCA2NDQ3MSwgNjQ0NzYsIAorICAgIDY0NDgyLCA2NDQ4NywgNjQ0OTIsIDY0NDk3LCA2NDUwMiwgNjQ1MDcsIDY0NTEyLCA2NDUxNywgNjQ1MjIsIDY0NTI3LCAKKyAgICA2NDUzMiwgNjQ1MzgsIDY0NTQzLCA2NDU0OCwgNjQ1NTMsIDY0NTU4LCA2NDU2MywgNjQ1NjgsIDY0NTczLCA2NDU3OCwgCisgICAgNjQ1ODQsIDY0NTg5LCA2NDU5NCwgNjQ1OTksIDY0NjA0LCA2NDYwOSwgNjQ2MTQsIDY0NjE5LCA2NDYyNCwgNjQ2MjksIAorICAgIDY0NjM0LCA2NDYzOSwgNjQ2NDQsIDY0NjUwLCAxODM0LCAyMjQsIDM3NDE3LCA2NDY1NSwgNjQ2NTgsIDY0NjYzLCA2NDY2NywgCisgICAgNjQ2NzAsIDY0Njc1LCA2MzY5NiwgNjQ2ODYsIDY0Njk2LCA2NDcwMywgNjQ3MTksIDY0NzI4LCA2NDczOCwgNjQ3NDgsIAorICAgIDY0NzU2LCA2NDc3MCwgNjQ3NzgsIDY0NzgyLCA2NDc4NSwgNjQ3OTIsIDY0Nzk4LCA2NDgwOSwgNjQ4MjEsIDY0ODMyLCAKKyAgICA2NDg0MSwgNjQ4NDgsIDEyOTcsIDIzMjk0LCA2NDg1OCwgMjU5MCwgNjQ4NjIsIDY0ODcxLCAxMTMzLCAxNzI3NywgMzgwNTQsIAorICAgIDY0ODc5LCA2NDg4NywgNjQ5MDEsIDY0OTE0LCA2NDkxOCwgNjQ5MjMsIDY0OTI4LCA2NDkzMywgNjQ5MzksIDY0OTQ1LCAKKyAgICA2NDk1MCwgODUzNSwgNjQ5NTUsIDY0OTU5LCA2NDk2NywgMTEwNDEsIDY0OTcyLCA2NDk3OCwgNjQ5ODcsIDE3MjEsIAorICAgIDExMDUzLCA3MzYsIDY0OTkxLCA2NTAwMCwgNjUwMTAsIDI3MDEzLCA2NTAxOSwgNjUwMjUsIDE2ODQ5LCA2NTAzMSwgCisgICAgNjUwMzUsIDM5NjQsIDExMzg0LCA2NTA0MSwgNjUwNDgsIDYwNjU2LCA2NTA1MiwgNjUwNTYsIDM5ODgsIDE4OSwgMTQxNDYsIAorICAgIDY1MDYyLCA2NTA3NCwgNjUwNzgsIDY1MDg0LCAyNzczMCwgNjUwODgsIDExMzcyLCAyNzMwLCA0LCA2NTA5MywgNjUxMDMsIAorICAgIDY1MTA5LCA2NTEyMCwgNjUxMjcsIDY1MTMzLCA2NTEzOSwgNjUxNDcsIDY1MTU0LCA2NTE2MCwgNjUxNzAsIDY1MTgwLCAKKyAgICA2NTE5MCwgMjM0ODIsIDEzMDksIDY1MTk5LCA2NTIwMywgNjUyMDcsIDY1MjEzLCA2NTIxNywgMjc1MywgMjc1OSwgODUzMiwgCisgICAgMjI2NCwgNjUyMjEsIDY1MjI1LCA2NTIzNCwgNjUyNDIsIDY1MjUzLCA2NTI2MSwgNjUyNjksIDY1Mjc1LCA2NTI4MCwgCisgICAgNjUyOTEsIDY1MzAyLCA2NTMxMCwgNjUzMTYsIDk2ODcsIDY1MzIxLCA2NTMyOSwgNjUzMzMsIDY1MzM3LCA2NTM0MSwgCisgICAgNjUzNTMsIDI4MTE1LCA2NTM2MCwgNjUzNzAsIDY1Mzc2LCA2NTM4MiwgOTc4OSwgNjUzOTIsIDY1NDAzLCA2NTQxMywgCisgICAgNjU0MjIsIDY1NDI2LCA2NTQzMywgMTEzNSwgMTE3MCwgNjU0NDMsIDY1NDQ4LCA2NTQ1NiwgNjU0NjQsIDY1NDc1LCAKKyAgICA2NTQ4MiwgNjU0OTYsIDE0MDc1LCAzOTMsIDY1NTA2LCA2NTUxMCwgNjU1MTgsIDY1NTI3LCA2NTUzNSwgNjU1NDEsIAorICAgIDY1NTU1LCA2NTU2MiwgNjU1NjgsIDY1NTc3LCA2NTU4NCwgNjU1OTQsIDY1NjAyLCAzODEyLCAxNTYsIDY1NjEwLCA2NTYyMSwgCisgICAgNjU2MjUsIDY1NjM3LCAyNzkyOCwgMTYxLCA2NTY0MywgNjU2NDgsIDY1NjUyLCA2NTY1OSwgNjU2NjUsIDY1NjczLCAKKyAgICA2NTY4MCwgODgxOCwgNjU2ODcsIDY1Njk2LCA2NTcwNCwgMzg3OCwgNjU3MTcsIDgxOTksIDY1NzIxLCAyNzk4LCA0NTAsIAorICAgIDY1NzI2LCA2NTczOSwgNjU3NDQsIDE4MzMsIDY2OCwgNjU3NDgsIDM4OTUsIDY1NzU2LCA2NTc2MiwgNjU3NjYsIDkzMSwgCisgICAgNjU3NzYsIDY1Nzg1LCA2NTc5MCwgMTQ5MTUsIDE0OTIyLCA0NTIzMiwgNjU3OTQsIDM4MjIsIDEzMDM0LCA2NTgwMiwgCisgICAgNjU4MDksIDIzNTM4LCA2NTgxMywgNjU4MjAsIDY1ODI2LCA2NTgzMSwgNjU4MzYsIDE0OTM1LCAzNzIsIDY1ODQxLCAKKyAgICA2NTg1MywgNjU4NTksIDY1ODY3LCAyODEwLCAxNzUzLCA2NTg3NSwgNjU4NzcsIDY1ODgyLCA2NTg4NywgNjU4OTIsIAorICAgIDY1ODk4LCA2NTkwMywgNjU5MDgsIDY1OTEzLCA2NTkxOCwgNjU5MjMsIDY1OTI4LCA2NTkzNCwgNjU5MzksIDY1OTQ0LCAKKyAgICA2NTk0OSwgNjU5NTQsIDY1OTU5LCA2NTk2NCwgNjU5NjksIDY1OTc0LCA2NTk4MCwgNjU5ODUsIDY1OTkwLCA2NTk5NSwgCisgICAgNjYwMDEsIDY2MDA2LCA2NjAxMiwgNjYwMTcsIDY2MDIyLCA2NjAyNywgNjYwMzIsIDY2MDM3LCA2NjA0MiwgNjYwNDcsIAorICAgIDY2MDUzLCA2NjA1OCwgNjYwNjQsIDY2MDY5LCA2NjA3NCwgNjYwNzksIDY2MDg0LCA2NjA4OSwgNjYwOTQsIDY2MDk5LCAKKyAgICA2NjEwNCwgNjYxMTAsIDY2MTE1LCA2NjEyMCwgNjYxMjUsIDY2MTI5LCA2NjEzMywgNjYxMzgsIDY2MTQyLCA2NjE0NywgCisgICAgNjYxNTIsIDY2MTU4LCA2NjE2MywgNjYxNjcsIDY2MTcyLCA2NjE3NiwgNjYxNzksIDY2MTgxLCA2NjE4NSwgNjYxODgsIAorICAgIDY2MTkzLCA2NjE5NywgNjYyMDEsIDY2MjA1LCA2NjIwOSwgNjYyMTgsIDY2MjIyLCAzMjUyNCwgNjYyMjUsIDMyNTI5LCAKKyAgICA2NjIzMiwgNjYyMzcsIDMyNTM0LCA2NjI0NiwgNjYyNTUsIDMyNTQwLCA2NjI2MCwgMzI1NDUsIDY2MjY5LCA2NjI3NCwgCisgICAgMTE1NzEsIDY2Mjc4LCA2NjI4MywgNjYyODgsIDMyNTUwLCA2NjI5MiwgNDAxOTYsIDY2Mjk2LCA2NjI5OSwgNjYzMDMsIAorICAgIDgyMTEsIDY2MzA5LCA2NjMxNCwgNjYzMTgsIDM3MDUsIDMyNTU1LCA2NjMyMSwgNjYzMjUsIDY2MzI4LCA2NjMzMywgCisgICAgNjYzMzcsIDY2MzQzLCA2NjM1MSwgNjYzNjQsIDY2MzczLCA2NjM3OSwgNjYzODQsIDY2MzkwLCA2NjM5NCwgNjY0MDAsIAorICAgIDY2NDA4LCA2NjQxMywgNjY0MTcsIDY2NDI0LCA2NjQzMCwgNjY0MzgsIDY2NDQ3LCA2NjQ1NSwgMzI1NTgsIDY2NDYyLCAKKyAgICA2NjQ3MiwgNjY0ODEsIDY2NDk0LCA2NjQ5OSwgNjY1MDQsIDY2NTEzLCA2NjUxOSwgNjY1MjYsIDY2NTM3LCA2NjU0OSwgCisgICAgNjY1NTYsIDY2NTY1LCA2NjU3NCwgNjY1ODMsIDY2NTkwLCA2NjU5NiwgNjY2MDMsIDY2NjExLCA2NjYxOCwgNjY2MjYsIAorICAgIDY2NjM1LCA2NjY0MywgNjY2NTAsIDY2NjU4LCA2NjY2NywgNjY2NzUsIDY2Njg0LCA2NjY5NCwgNjY3MDMsIDY2NzExLCAKKyAgICA2NjcxOCwgNjY3MjYsIDY2NzM1LCA2Njc0MywgNjY3NTIsIDY2NzYyLCA2Njc3MSwgNjY3NzksIDY2Nzg4LCA2Njc5OCwgCisgICAgNjY4MDcsIDY2ODE3LCA2NjgyOCwgNjY4MzgsIDY2ODQ3LCA2Njg1NSwgNjY4NjIsIDY2ODcwLCA2Njg3OSwgNjY4ODcsIAorICAgIDY2ODk2LCA2NjkwNiwgNjY5MTUsIDY2OTIzLCA2NjkzMiwgNjY5NDIsIDY2OTUxLCA2Njk2MSwgNjY5NzIsIDY2OTgyLCAKKyAgICA2Njk5MSwgNjY5OTksIDY3MDA4LCA2NzAxOCwgNjcwMjcsIDY3MDM3LCA2NzA0OCwgNjcwNTgsIDY3MDY3LCA2NzA3NywgCisgICAgNjcwODgsIDY3MDk4LCA2NzEwOSwgNjcxMjEsIDY3MTMyLCA2NzE0MiwgNjcxNTEsIDY3MTU5LCA2NzE2NiwgNjcxNzQsIAorICAgIDY3MTgzLCA2NzE5MSwgNjcyMDAsIDY3MjEwLCA2NzIxOSwgNjcyMjcsIDY3MjM2LCA2NzI0NiwgNjcyNTUsIDY3MjY1LCAKKyAgICA2NzI3NiwgNjcyODYsIDY3Mjk1LCA2NzMwMywgNjczMTIsIDY3MzIyLCA2NzMzMSwgNjczNDEsIDY3MzUyLCA2NzM2MiwgCisgICAgNjczNzEsIDY3MzgxLCA2NzM5MiwgNjc0MDIsIDY3NDEzLCA2NzQyNSwgNjc0MzYsIDY3NDQ2LCA2NzQ1NSwgNjc0NjMsIAorICAgIDY3NDcyLCA2NzQ4MiwgNjc0OTEsIDY3NTAxLCA2NzUxMiwgNjc1MjIsIDY3NTMxLCA2NzU0MSwgNjc1NTIsIDY3NTYyLCAKKyAgICA2NzU3MywgNjc1ODUsIDY3NTk2LCA2NzYwNiwgNjc2MTUsIDY3NjI1LCA2NzYzNiwgNjc2NDYsIDY3NjU3LCA2NzY2OSwgCisgICAgNjc2ODAsIDY3NjkwLCA2NzcwMSwgNjc3MTMsIDY3NzI0LCA2NzczNiwgNjc3NDksIDY3NzYxLCA2Nzc3MiwgNjc3ODIsIAorICAgIDY3NzkxLCA2Nzc5OSwgNjc4MDYsIDY3ODE0LCA2NzgyMywgNjc4MzEsIDY3ODQwLCA2Nzg1MCwgNjc4NTksIDY3ODY3LCAKKyAgICA2Nzg3NiwgNjc4ODYsIDY3ODk1LCA2NzkwNSwgNjc5MTYsIDY3OTI2LCA2NzkzNSwgNjc5NDMsIDY3OTUyLCA2Nzk2MiwgCisgICAgNjc5NzEsIDY3OTgxLCA2Nzk5MiwgNjgwMDIsIDY4MDExLCA2ODAyMSwgNjgwMzIsIDY4MDQyLCA2ODA1MywgNjgwNjUsIAorICAgIDY4MDc2LCA2ODA4NiwgNjgwOTUsIDY4MTAzLCA2ODExMiwgNjgxMjIsIDY4MTMxLCA2ODE0MSwgNjgxNTIsIDY4MTYyLCAKKyAgICA2ODE3MSwgNjgxODEsIDY4MTkyLCA2ODIwMiwgNjgyMTMsIDY4MjI1LCA2ODIzNiwgNjgyNDYsIDY4MjU1LCA2ODI2NSwgCisgICAgNjgyNzYsIDY4Mjg2LCA2ODI5NywgNjgzMDksIDY4MzIwLCA2ODMzMCwgNjgzNDEsIDY4MzUzLCA2ODM2NCwgNjgzNzYsIAorICAgIDY4Mzg5LCA2ODQwMSwgNjg0MTIsIDY4NDIyLCA2ODQzMSwgNjg0MzksIDY4NDQ4LCA2ODQ1OCwgNjg0NjcsIDY4NDc3LCAKKyAgICA2ODQ4OCwgNjg0OTgsIDY4NTA3LCA2ODUxNywgNjg1MjgsIDY4NTM4LCA2ODU0OSwgNjg1NjEsIDY4NTcyLCA2ODU4MiwgCisgICAgNjg1OTEsIDY4NjAxLCA2ODYxMiwgNjg2MjIsIDY4NjMzLCA2ODY0NSwgNjg2NTYsIDY4NjY2LCA2ODY3NywgNjg2ODksIAorICAgIDY4NzAwLCA2ODcxMiwgNjg3MjUsIDY4NzM3LCA2ODc0OCwgNjg3NTgsIDY4NzY3LCA2ODc3NywgNjg3ODgsIDY4Nzk4LCAKKyAgICA2ODgwOSwgNjg4MjEsIDY4ODMyLCA2ODg0MiwgNjg4NTMsIDY4ODY1LCA2ODg3NiwgNjg4ODgsIDY4OTAxLCA2ODkxMywgCisgICAgNjg5MjQsIDY4OTM0LCA2ODk0NSwgNjg5NTcsIDY4OTY4LCA2ODk4MCwgNjg5OTMsIDY5MDA1LCA2OTAxNiwgNjkwMjgsIAorICAgIDY5MDQxLCA2OTA1MywgNjkwNjYsIDY5MDgwLCA2OTA5MywgNjkxMDUsIDY5MTE2LCA2OTEyNiwgNjkxMzUsIDY5MTQzLCAKKyAgICA2OTE1MCwgNjkxNTUsIDgwNTgsIDY5MTYyLCAzMjU2OCwgNjkxNjcsIDY5MTcyLCAzMjU3MywgNjkxNzgsIDIwOTE2LCAKKyAgICAzMjU3OCwgNjkxODMsIDY5MTg5LCA2OTE5NywgNjkyMDMsIDY5MjA5LCA2OTIxNiwgNjkyMjMsIDY5MjI4LCA2OTIzMiwgCisgICAgNjkyMzUsIDY5MjM5LCA2OTI0OCwgNjkyNTQsIDY5MjY2LCA2OTI3NywgNjkyODEsIDMwODEsIDgwMzMsIDY5Mjg2LCAKKyAgICA2OTI4OSwgNjkyOTEsIDY5Mjk1LCA2OTI5OSwgNjkzMDMsIDY5MzA5LCA2OTMxNCwgMjU5MjcsIDY5MzE5LCA2OTMyMywgCisgICAgNjkzMjYsIDY5MzMxLCA2OTMzNSwgNjkzNDIsIDY5MzQ4LCA2OTM1MiwgNjE3MCwgNjkzNTYsIDMyNTk1LCA2OTM2MSwgCisgICAgNjkzNjgsIDY5Mzc3LCA2OTM4NSwgNjkzOTYsIDY5NDA0LCA2OTQxMiwgNjk0MTksIDY5NDI2LCA2OTQzMiwgNjk0NDMsIAorICAgIDMyNjAwLCA2OTQ0OCwgNjk0NTksIDY5NDcxLCA2OTQ3OSwgNjk0OTAsIDY5NDk5LCA2OTUxMCwgNjk1MTUsIDY5NTIzLCAKKyAgICAyNTU2LCA2OTUyOCwgMzQyNzAsIDY5NTQxLCA2OTU0NSwgNjk1NTcsIDY5NTY1LCA2OTU3MCwgNjk1NzgsIDE3NDcyLCAKKyAgICA2OTU4OSwgNjk1OTUsIDY5NjAyLCA2OTYxMCwgNjk2MTYsIDMyNjEwLCA2OTYyMSwgMzkxNCwgNTgyMTcsIDY5NjI4LCAKKyAgICA2OTYzMSwgNjk2MzksIDY5NjUyLCA2OTY2NSwgNjk2NzgsIDY5NjkxLCA2OTY5OCwgNjk3MDksIDY5NzE4LCA0MTY4NywgCisgICAgNDE2OTIsIDY5NzIzLCA2OTcyNywgNjk3MzUsIDY5NzQyLCA2OTc1MSwgNjk3NTksIDY5NzY1LCA2OTc3NCwgNjk3ODIsIAorICAgIDY5NzkwLCA2OTc5NCwgNjk4MDMsIDY5ODEyLCA2OTgyMiwgNjk4MzUsIDY5ODQ4LCA2OTg1OCwgMzI2MTUsIDY5ODY0LCAKKyAgICA2OTg3MSwgNjk4NzcsIDMyNjIxLCA2OTg4MiwgNjk4ODUsIDY5ODg5LCA2OTg5NywgNjk5MDYsIDQxNDI1LCA2OTkxNCwgCisgICAgNjk5MjMsIDY5OTMxLCA2OTkzOCwgNjk5NDYsIDY5OTU2LCA2OTk2NSwgNjk5NzQsIDY5OTgzLCA2OTk5MSwgNzAwMDIsIAorICAgIDcwMDEyLCA5MzU5LCAyMTU1NCwgNzAwMjEsIDcwMDI2LCA3MDAzMSwgNzAwMzUsIDcwMDM5LCA3MDA0NCwgNzAwNTAsIAorICAgIDcwMDU1LCA3MDA2MCwgNzAwNjYsIDcwMDcxLCA3MDA3NiwgMjE1MTksIDcwMDgxLCA3MDA4OCwgNzAwOTYsIDcwMTA0LCAKKyAgICA3MDEwOSwgNzAxMTYsIDcwMTIzLCA3MDEyOCwgNzAxMzIsIDcwMTM2LCA3MDE0NCwgNzAxNTIsIDMyNjM4LCA3MDE1OCwgCisgICAgNzAxNjQsIDcwMTc2LCA3MDE4MiwgNzAxODYsIDcwMTkzLCA3MDE5OCwgNzAyMDksIDcwMjE5LCA3MDIyOSwgNzAyNDEsIAorICAgIDcwMjQ3LCA3MDI1NywgNzAyNjcsIDMyNjY1LCA3MDI3NiwgNzAyODUsIDcwMjkxLCA3MDMwMywgNzAzMTQsIDcwMzIxLCAKKyAgICA3MDMyNiwgNzAzMzAsIDcwMzM4LCA3MDM0NCwgNzAzNDksIDcwMzU0LCA3MDM2MSwgNzAzNjksIDcwMzgxLCA3MDM5MSwgCisgICAgNzA0MDAsIDcwNDA5LCA3MDQxNiwgMzQxMzIsIDIzODM0LCA3MDQyMiwgNzA0MjcsIDcwNDMxLCA3MDQzNSwgNzA0NDAsIAorICAgIDcwNDQ2LCA3MDQ1NywgNzA0NzAsIDcwNDc1LCA3MDQ4MiwgMzI2NzAsIDcwNDg3LCA3MDQ5OSwgNzA1MDgsIDcwNTE4LCAKKyAgICA3MDUyOSwgNzA1NDIsIDcwNTQ5LCA3MDU1OCwgNzA1NjcsIDcwNTc1LCA3MDU4MCwgNzA1ODYsIDEwNTgsIDcwNTkxLCAKKyAgICA3MDU5NiwgNzA2MDEsIDcwNjA2LCA3MDYxMiwgNzA2MTcsIDcwNjIyLCA3MDYyOCwgNzA2MzQsIDcwNjM5LCA3MDY0MywgCisgICAgNzA2NDgsIDcwNjUzLCA3MDY1OCwgNTg3MjksIDcwNjYzLCA3MDY2OCwgNzA2NzMsIDcwNjc4LCA3MDY4NCwgNzA2OTAsIAorICAgIDcwNjk1LCA3MDY5OSwgNzA3MDQsIDcwNzA5LCA3MDcxNCwgNzA3MjAsIDcwNzI1LCA3MDczMSwgNzA3MzYsIDcwNzQxLCAKKyAgICA3MDc0NiwgNzA3NTEsIDcwNzU1LCA3MDc2MSwgNzA3NjYsIDcwNzc1LCA3MDc4MCwgNzA3ODUsIDcwNzkwLCA3MDc5NSwgCisgICAgNzA3OTksIDcwODA2LCA3MDgxMiwgMTcxMjIsIDE3MTI5LCA3MDgxNywgNzA4MjEsIDcwODI1LCA3MDgyOSwgNzA4MzMsIAorICAgIDQ1NDg3LCA3MDgzNywgNzA3NjcsIDcwODM5LCA3MDg0OSwgMzI2NzksIDcwODUyLCA3MDg2MSwgNzA4NjcsIDYxNDMsIAorICAgIDMyNjg0LCA3MDg3MSwgNzA4NzcsIDcwODgyLCA3MDg4OCwgNzA4OTMsIDcwODk3LCA3MDkwNCwgNzA5MDksIDcwOTE5LCAKKyAgICA3MDkyOCwgNzA5MzIsIDcwOTM4LCA3MDk0NCwgNzA5NTAsIDcwOTU0LCA3MDk2MiwgNzA5NjksIDcwOTc3LCA3MDk4NSwgCisgICAgMzI2ODksIDcwOTkyLCA3MDk5NSwgNzEwMDIsIDcxMDA4LCA3MTAxMywgNzEwMTcsIDcxMDIzLCA3MTAzMCwgNzEwMzUsIAorICAgIDcxMDM5LCA3MTA0OCwgNzEwNTYsIDcxMDYyLCA3MTA2NywgMzI2OTQsIDcxMDc0LCA3MTA4MSwgNzEwODcsIDcxMDkyLCAKKyAgICA3MTA5OCwgNzExMDUsIDcxMTExLCAyMTI4MSwgMjc0MzgsIDcxMTE3LCA3MTEyMiwgNzExMjgsIDcxMTQwLCA3MDgwMCwgCisgICAgNzA4MDcsIDIxNDU3LCA3MTE1MCwgNzExNTUsIDcxMTYyLCA3MTE2OCwgNzExNzUsIDcxMTgxLCA3MTE5MiwgNzExOTcsIAorICAgIDkxMDMsIDcxMjA1LCA3MTIwOCwgNzEyMTQsIDcxMjE4LCA3MTIyMiwgNzEyMjUsIDcxMjMxLCAzMjQ0MywgNjE5NCwgOTY0LCAKKyAgICAxMzQxMiwgNzEyMzgsIDcxMjQ0LCA3MTI1MCwgNzEyNTYsIDcxMjYyLCA3MTI2OCwgNzEyNzQsIDcxMjgwLCA3MTI4NiwgCisgICAgNzEyOTEsIDcxMjk2LCA3MTMwMSwgNzEzMDYsIDcxMzExLCA3MTMxNiwgNzEzMjEsIDcxMzI2LCA3MTMzMSwgNzEzMzYsIAorICAgIDcxMzQxLCA3MTM0NiwgNzEzNTEsIDcxMzU3LCA3MTM2MiwgNzEzNjcsIDcxMzczLCA3MTM3OCwgNzEzODMsIDcxMzg5LCAKKyAgICA3MTM5NSwgNzE0MDEsIDcxNDA3LCA3MTQxMywgNzE0MTksIDcxNDI1LCA3MTQzMSwgNzE0MzcsIDcxNDQyLCA3MTQ0NywgCisgICAgNzE0NTMsIDcxNDU4LCA3MTQ2MywgNzE0NjksIDcxNDc0LCA3MTQ3OSwgNzE0ODQsIDcxNDg5LCA3MTQ5NCwgNzE0OTksIAorICAgIDcxNTA0LCA3MTUwOSwgNzE1MTQsIDcxNTE5LCA3MTUyNCwgNzE1MjksIDcxNTM1LCA3MTU0MCwgNzE1NDUsIDcxNTUwLCAKKyAgICA3MTU1NiwgNzE1NjEsIDcxNTY2LCA3MTU3MSwgNzE1NzYsIDcxNTgyLCA3MTU4NywgNzE1OTIsIDcxNTk3LCA3MTYwMiwgCisgICAgNzE2MDcsIDcxNjEyLCA3MTYxNywgNzE2MjIsIDcxNjI3LCA3MTYzMiwgNzE2MzcsIDcxNjQyLCA3MTY0NywgNzE2NTIsIAorICAgIDcxNjU3LCA3MTY2MiwgNzE2NjcsIDcxNjcyLCA3MTY3NywgNzE2ODMsIDcxNjg4LCA3MTY5MywgNzE2OTgsIDcxNzAzLCAKKyAgICA3MTcwOCwgNzE3MTMsIDcxNzE4LCAxODY0LCAxNDIsIDcxNzIzLCA3MTcyNywgNzE3MzEsIDcxNzM2LCA3MTc0NCwgNzE3NDgsIAorICAgIDcxNzU1LCA3MTc2MywgNzE3NjcsIDcxNzgwLCA3MTc4OCwgNzE3OTIsIDcxNzk1LCA3MTgwMCwgNzE4MDQsIDcxODA5LCAKKyAgICA3MTgxMywgNzE4MjEsIDcxODI1LCAyMDkyNCwgNzE4MzAsIDcxODM0LCA2MDkzMCwgNzE4MzgsIDcxODQxLCA3MTg0OSwgCisgICAgNzE4NTcsIDcxODY1LCA3MTg3MCwgNzE4NzcsIDcxODgzLCA3MTg4OSwgNzE4OTQsIDcxOTAxLCA3MTkwNiwgNzE5MTQsIAorICAgIDY0OTA2LCA3MTkyMSwgNzE5MjYsIDcxOTMxLCA3MTkzNSwgMTE2MzgsIDcxOTM5LCA3MTk0NCwgNzE5NDksIDcxOTUzLCAKKyAgICA3MTk1NiwgNzE5NjIsIDcxOTY2LCA3MTk3NiwgNzE5ODUsIDcxOTg4LCA3MTk5MiwgNzE5OTksIDcyMDEyLCA3MjAxOCwgCisgICAgNzIwMjYsIDcyMDM3LCA3MjA0OCwgNzIwNTksIDcyMDcwLCA3MjA3OSwgNzIwODUsIDcyMDk0LCA3MjEwMiwgNzIxMTIsIAorICAgIDcyMTI1LCA3MjEzMiwgNzIxNDMsIDcyMTQ5LCA3MjE1NCwgNzIxNTksIDcyMTY1LCA3MjE3MSwgNzIxODEsIDcyMTkwLCAKKyAgICA3MDQ4OSwgNzIxOTgsIDcyMjA0LCA3MjIxMiwgNzIyMTgsIDcyMjI2LCA3MjIyOSwgNzIyMzMsIDcyMjM3LCA3MjI0MCwgCisgICAgNzIyNDYsIDcyMjUyLCA3MjI2MCwgNzIyNzIsIDcyMjg0LCA3MjI5MSwgNzIyOTUsIDcyMzA2LCA3MjMxNCwgNzIzMjEsIAorICAgIDcyMzMzLCA3MjM0MSwgNzIzNDksIDcyMzU2LCA3MjM2MiwgNzIzNzIsIDcyMzgxLCA3MjM4NiwgNzIzOTYsIDcyNDA1LCAKKyAgICA0MDc1MSwgNzI0MTIsIDcyNDE2LCA3MjQyMSwgNzI0MjksIDcyNDM2LCA3MjQ0MiwgNzI0NDYsIDcyNDU2LCA3MjQ2NywgCisgICAgNzI0NzUsIDcyNDgyLCA3MjQ5NCwgNzI1MDYsIDcyNTE1LCA2OTUzMSwgNzI1MjIsIDcyNTMzLCA3MjU0NywgNzI1NTUsIAorICAgIDcyNTY1LCA3MjU3MiwgNzI1ODAsIDcyNTkyLCA3MjYwMSwgNzI2MDksIDcyNjE5LCA3MjYzMCwgNzI2NDIsIDcyNjUxLCAKKyAgICA3MjY2MSwgNzI2NjgsIDcyNjc3LCA3MjY5MiwgNzI3MDAsIDcyNzEwLCA3MjcxOSwgNzI3MjcsIDcyNzQwLCA3Mjc1NSwgCisgICAgNzI3NTksIDcyNzY4LCA3Mjc4MCwgNzI3OTEsIDcyODAyLCA3MjgxMywgNzI4MjMsIDcyODM0LCA3Mjg0MiwgNzI4NDgsIAorICAgIDcyODU4LCA3Mjg2NiwgNzI4NzIsIDI5MDA3LCA3Mjg3NywgNzI4ODMsIDcyODg4LCA3Mjg5NSwgOTcwMSwgMTc0OTIsIAorICAgIDcyOTAxLCA3MjkxMCwgNzI5MTUsIDcyOTE5LCA3MjkyNiwgNzI5MzIsIDcyOTM3LCA3Mjk0MiwgNzI5NTAsIDcyOTU4LCAKKyAgICA3Mjk2MiwgNzI5NjUsIDcyOTY4LCA3Mjk3MCwgNzI5NzcsIDcyOTgzLCA3Mjk5NCwgNzI5OTksIDczMDAzLCA3MzAxMCwgCisgICAgNzMwMTYsIDczMDIxLCA3MzAyOSwgNjU0MDUsIDY1NDE1LCA3MzAzNSwgNzMwNDIsIDczMDUyLCAxMDYxMSwgNzMwNTksIAorICAgIDczMDY0LCAyOTIwMywgNzMwNzMsIDczMDc4LCA3MzA4NSwgNzMwOTUsIDczMTAzLCA3MzExMSwgNzMxMjAsIDczMTI2LCAKKyAgICA3MzEzMiwgNzMxMzksIDczMTQ2LCA3MzE1MSwgNzMxNTUsIDczMTYzLCA3MzE2OCwgNzMxNzMsIDczMTgxLCA3MzE4OCwgCisgICAgNzMxOTMsIDczMTk5LCA3MzIwMiwgNzMyMDYsIDczMjE1LCA3MTc3NSwgNzMyMjQsIDczMjI4LCA3MzIzNCwgNzMyNDUsIAorICAgIDczMjU1LCAxNzUwMSwgNzMyNjYsIDczMjc0LCAxNzUxMywgNzMyODEsIDczMjg1LCA3MzI5NCwgMjczMjQsIDczMzAxLCAKKyAgICA3MzMwNSwgNzMzMTAsIDczMzI3LCA3MzMzOSwgMTA1NjksIDczMzUxLCA3MzM1NiwgNzMzNjEsIDczMzY2LCAyMDk5NywgCisgICAgNzMzNzAsIDczMzc1LCA3MzM4MCwgNzMzODYsIDczMzkxLCA1ODQ2LCAyMTAwMSwgNzMzOTYsIDczNDAxLCA3MzQwNywgCisgICAgNzM0MTQsIDczNDE5LCA3MzQyNCwgNzM0MzAsIDczNDM2LCA3MzQ0MiwgNzM0NDcsIDczNDUzLCA3MzQ1NywgNzM0NzEsIAorICAgIDczNDc5LCA3MzQ4NywgNzM0OTMsIDczNDk4LCA3MzUwNSwgNzM1MTUsIDczNTI0LCA3MzUyOSwgNzM1MzQsIDczNTQyLCAKKyAgICA3MzU0NywgNzM1NTMsIDczNTU4LCA3MzU2NywgNTk3ODYsIDczNTcyLCA3MzU3NSwgNzM1OTMsIDczNjEyLCA3MzYyNSwgCisgICAgNzM2MzksIDczNjU1LCA3MzY2MiwgNzM2NjksIDczNjc1LCA3MzY4MiwgNzM2ODcsIDczNjkzLCA3MzY5OSwgNzM3MDcsIAorICAgIDczNzEzLCA3MzcxOCwgNzM3MjMsIDczNzM5LCAxMDU4MiwgNzM3NTMsIDczNzYwLCA3Mzc2OCwgNzM3NzQsIDczNzc4LCAKKyAgICA3Mzc4MSwgNzM3ODYsIDczNzkxLCA3Mzc5OCwgNzM4MDMsIDczODEyLCA3MzgxNywgNzM4MjMsIDczODMyLCA3Mzg0MSwgCisgICAgNzM4NDYsIDczODUwLCA3Mzg1OCwgNzM4NjcsIDExNjY3LCA3Mzg3NiwgNzM4ODQsIDczODg5LCA3Mzg5NSwgMTE2NzgsIAorICAgIDczOTAwLCA3MzkwMywgNzM5MDgsIDczOTE4LCA3MzkyNywgNzM5MzIsIDczOTM4LCA3Mzk0MywgNzM5NTEsIDczOTU4LCAKKyAgICA3Mzk2OSwgNzM5NzksIDczOTg0LCA2NDgzNCwgNzM5ODksIDczOTk1LCA3NDAwMCwgNzQwMDcsIDc0MDE2LCA3NDAyNCwgCisgICAgNzQwMzAsIDc0MDM2LCA3NDA0MywgNzQwNDksIDc0MDUzLCAxNjk0NywgMzA1NSwgNzQwNTgsIDc0MDYyLCA3NDA2NiwgCisgICAgNzQwNzIsIDc0MDgxLCA3NDA4NywgNzQwOTQsIDc0MDk4LCA3NDExOSwgNzQxNDEsIDc0MTU3LCA3NDE3NCwgNzQxOTMsIAorICAgIDc0MjAyLCA3NDIxMiwgNzQyMTksIDc0MjI2LCAyNzIxMSwgNzQyMzIsIDc0MjM2LCA3NDI0NCwgNzQyNTYsIDc0MjYyLCAKKyAgICA3NDI3MCwgNzQyNzQsIDc0MjgyLCA3NDI4OSwgNzQyOTMsIDc0Mjk5LCA3NDMwNSwgNzQzMTAsIDM1NjMsIDQxODg3LCAKKyAgICA3NDMxNiwgNzQzMjAsIDc0MzI0LCA3NDMyOCwgNzQzMzMsIDc0MzM4LCA3NDM0MywgNzQzNDksIDc0MzU1LCA3NDM2MSwgCisgICAgNzQzNjgsIDc0Mzc0LCA3NDM4MSwgNzQzODcsIDc0MzkzLCA3NDM5OCwgNzQ0MDQsIDc0NDA5LCA3NDQxMywgNzQ0MTgsIAorICAgIDc0NDIyLCA3NDQyNywgNDE5MDIsIDc0NDMxLCA3NDQzNiwgNzQ0NDQsIDc0NDQ4LCA3NDQ1MywgNzQ0NjAsIDc0NDY5LCAKKyAgICA3NDQ3NSwgNzQ0NzksIDc0NDg2LCA3NDQ5MCwgNzQ0OTMsIDc0NTAwLCA3NDUwOSwgNzQ1MTQsIDc0NTE4LCA3NDUyNiwgCisgICAgNzQ1MzUsIDc0NTM5LCA3NDU0NywgNzQ1NTMsIDc0NTU4LCA3NDU2MywgNzQ1NjksIDc0NTc1LCA3NDU4MCwgNzQ1ODQsIAorICAgIDc0NTkwLCA3NDU5NSwgNzQ1OTksIDc0NjAzLCA3NDYwNiwgNzQ2MTEsIDc0NjE5LCA3NDYyOSwgNzQ2MzQsIDM5Mzg3LCAKKyAgICA3NDY0MiwgNzQ2NTQsIDc0NjU4LCA3NDY2NCwgNzQ2NzYsIDc0Njg3LCA3NDY5NCwgNzQ3MDAsIDc0NzA3LCA3NDcxOSwgCisgICAgNzQ3MjYsIDc0NzMyLCAyMTA3NSwgNzQ3MzYsIDc0NzQyLCA3NDc0OSwgNzQ3NTUsIDc0NzYxLCA3NDc2NiwgNzQ3NzEsIAorICAgIDc0Nzc2LCA3NDc4NSwgNzAzMywgNzQ3OTAsIDE2NDEzLCA3NDc5NiwgNzQ4MDAsIDc0ODA0LCA3NDgwOCwgNzQ4MTYsIAorICAgIDc0ODI1LCA3NDgyOSwgNzQ4MzYsIDc0ODQ1LCA3NDg1OCwgNzQ4NjQsIDc0NDIzLCAzMDA2NywgNzQ4NjksIDc0ODcxLCAKKyAgICA3NDg3NiwgNzQ4ODEsIDc0ODg2LCA3NDg5MSwgNzQ4OTYsIDc0OTAxLCA3NDkwNiwgNzQ5MTEsIDc0OTE2LCA3NDkyMSwgCisgICAgNzQ5MjYsIDc0OTMxLCA3NDkzNiwgNzQ5NDEsIDc0OTQ3LCA3NDk1MiwgNzQ5NTcsIDc0OTYyLCA3NDk2NywgNzQ5NzIsIAorICAgIDc0OTc3LCA3NDk4MiwgNzQ5ODcsIDc0OTkzLCA3NDk5OSwgNzUwMDUsIDc1MDEwLCA3NTAxNSwgNzUwMjcsIDc1MDMyLCAKKyAgICAxODcwLCA0OSwgNzUwMzcsIDc1MDQyLCAzMjcyMSwgNzUwNDYsIDMyNzI2LCAzMjczMSwgMzI3MzcsIDMyNzQyLCA3NTA1MCwgCisgICAgMzI3NDcsIDIyMDcwLCA3NTA3MiwgNzUwNzYsIDc1MDgwLCA3NTA4NSwgNzUwODksIDMyNzUxLCA3NTA5MywgNzUxMDEsIAorICAgIDMyNzU2LCA3NTEwOCwgNzUxMTEsIDc1MTE2LCA3NTEyMCwgOTUzNiwgNzUxMjksIDMyNzYxLCAyMTkzMiwgNzUxMzIsIAorICAgIDc1MTM2LCAxNDI4LCA3NTE0MSwgMzI3NzIsIDc1MTQ0LCA3NTE0OSwgMjU3MjAsIDI1NzMwLCAzNTIzMywgNzUxNTQsIAorICAgIDc1MTU5LCA3NTE2NCwgNzUxNjksIDc1MTc1LCA3NTE4MCwgNzUxODksIDc1MTk0LCA3NTIwMSwgNzUyMDcsIDc1MjEyLCAKKyAgICA3NTIxNywgNzUyMjIsIDc1MjMyLCA3NTI0MSwgNzUyNDYsIDc1MjU0LCA3NTI1OCwgNzUyNjYsIDMyNTg2LCAzNzI4OCwgCisgICAgNzUyNzMsIDc1Mjc5LCA3NTI4NCwgNzUyODksIDEyMDA5LCA3NTI5NCwgNzUzMDAsIDc1MzA1LCA3NTMxMiwgNzUzMTgsIAorICAgIDc1MzIzLCA3NTMzMSwgNzUzNDEsIDc1MzUxLCA3NTM1NywgNzUzNjIsIDc1MzY4LCAxNzUyMywgNzUzNzUsIDM2MDQ4LCAKKyAgICA3NTM4OCwgNzUzOTMsIDc1Mzk5LCAzMDk2OCwgNzU0MTIsIDc1NDE4LCA3NTQyMiwgNzU0MzEsIDc1NDM4LCA3NTQ0NCwgCisgICAgNzU0NTIsIDc1NDYxLCA3NTQ2OCwgNzU0NzQsIDc1NDc3LCA3NTQ4MSwgMjU4NjEsIDc1NDg1LCA3NTQ5MiwgNzU0OTgsIAorICAgIDc1NTA2LCA3NTUxMSwgMjM5NzcsIDc1NTE3LCA3NTUyMCwgNzU1MjgsIDc1NTM2LCA3NTU1MCwgNzU1NTcsIDc1NTYzLCAKKyAgICA3NTU3MCwgNzU1NzYsIDMyNzg2LCA3NTU4MCwgNzU1ODcsIDc1NTk1LCA3NTYwMywgNzU2MDksIDMyNzkxLCA3NTYxNywgCisgICAgNzU2MjMsIDc1NjI4LCA3NTYzOCwgNzU2NDQsIDc1NjUzLCAzMDgwNSwgMzQ2OTEsIDc1NjYxLCA3NTY2NiwgNzU2NzEsIAorICAgIDc1Njc1LCA3NTY4MCwgNzU2ODQsIDc1NjkyLCAxNDkwNywgMzk0MDAsIDc1Njk3LCA3NTcwMiwgMzI3OTYsIDYyMjMyLCAKKyAgICA3NTcwNiwgNzU3MTEsIDc1NzE1LCA3NTcyNCwgNzU3MzIsIDc1NzM4LCA3NTc0MywgNzU3NDksIDc1NzU2LCA3NTc2MiwgCisgICAgNzU3NjcsIDc1NzcyLCA3NTc4MSwgNzU3OTMsIDc1ODA4LCAzMzA1OCwgNzU4MTQsIDE2NTMyLCAzMjgwMCwgNzU4MTgsIAorICAgIDc1ODI1LCAyNDA4NywgNzU4MzEsIDc1ODM4LCA3NTg0NywgNzU4NTQsIDc1ODYzLCA3NTg2OSwgNzU4NzQsIDc1ODgyLCAKKyAgICA3NTg4OCwgMzI4MTAsIDc1ODkzLCA3NTkwMiwgNzQ2ODIsIDc1OTExLCA3NTkxOCwgNzU5MjQsIDc1OTMwLCA3NTk0MCwgCisgICAgNzU5NDgsIDc1OTU1LCA3NTk1OSwgMzI4MTUsIDc1OTYyLCAzMjgyMSwgMzI4MjcsIDc1OTY3LCA3NTk3NSwgNzU5ODMsIAorICAgIDc1OTkzLCA3NjAwMiwgNzYwMTAsIDc2MDE3LCA3NjAyNywgMzI4MzIsIDc2MDMxLCA3NjAzMywgNzYwMzcsIDc2MDQyLCAKKyAgICA3NjA0NiwgNzYwNTAsIDc2MDU2LCA3NjA2MSwgNzYwNjUsIDc2MDc2LCA3NjA4MSwgNzYwODYsIDMwNjAsIDc2MDkwLCAKKyAgICA3NjA5NywgNzYxMDEsIDc2MTEwLCA3NjExOCwgNzYxMjUsIDc2MTMwLCA3NjEzNSwgNjIyNzgsIDc2MTM5LCA3NjE0MiwgCisgICAgNzYxNDgsIDc2MTU2LCA3NjE2MiwgNzYxNjYsIDc2MTcxLCA3NjE3OCwgNzYxODMsIDc2MTg5LCAzNDcyMiwgNzYxOTQsIAorICAgIDc2MTk3LCA3NjIwMiwgNzYyMDYsIDc2MjExLCA3NjIxNiwgNzYyMjAsIDc2MjI4LCA3NjIzMiwgMjU3MzksIDI1NzQ4LCAKKyAgICA3NjIzOCwgNzYyNDQsIDc2MjUwLCA3NjI1NSwgNzYyNTksIDc2MjYyLCA3NjI3MiwgNzYyODEsIDc2Mjg2LCA3NjI5MiwgCisgICAgNzYyOTksIDc2MzA1LCA3NjMwOSwgNzYzMTcsIDc2MzIyLCAzNDcyOCwgNzYzMjYsIDc2MzM0LCA3NjM0MCwgNzYzNDcsIAorICAgIDc2MzUyLCA3NjM1NiwgNzYzNjEsIDU4NDAzLCAzNDczNCwgNzYzNjcsIDc2MzcyLCA3NjM3NiwgNzYzODEsIDc2Mzg2LCAKKyAgICA3NjM5MSwgNzYzOTUsIDc2NDAwLCA3NjQwNSwgNzY0MTEsIDc2NDE2LCA3NjQyMSwgNzY0MjcsIDc2NDMzLCA3NjQzOCwgCisgICAgNzY0NDIsIDc2NDQ3LCA3NjQ1MiwgNzY0NTcsIDc2NDYxLCAyNDA4NiwgNzY0NjYsIDc2NDcxLCA3NjQ3NywgNzY0ODMsIAorICAgIDc2NDg5LCA3NjQ5NCwgNzY0OTgsIDc2NTAzLCA3NjUwOCwgNzY1MTMsIDc2NTE3LCA3NjUyMiwgNzY1MjcsIDc2NTMyLCAKKyAgICA3NjUzNywgNzY1NDEsIDMyODQwLCA3NjU0OSwgNzY1NTMsIDc2NTYxLCA3NjU2OSwgNzY1ODAsIDc2NTg1LCA3NjU4OSwgCisgICAgMjIzODQsIDc2NTk0LCA3NjYwMCwgNzY2MTAsIDc2NjE3LCA3NjYyMiwgNzY2MzEsIDc2NjM2LCA3NjY0MCwgNzY2NDUsIAorICAgIDc2NjUzLCA3NjY2MSwgNzY2NjgsIDY1MDY4LCA3NjY3NCwgNzY2ODIsIDc2Njg5LCA3NjcwMCwgNzY3MDYsIDc2NzEwLCAKKyAgICA3NjcxNiwgMzI4NTAsIDc2NzE5LCA3NjcyNiwgNzY3MzQsIDc2NzM5LCAzOTU5MSwgNzY3NDMsIDc2NzQ4LCA3Njc1NSwgCisgICAgNzY3NjAsIDg5ODUsIDc2NzY0LCA3Njc3MiwgNzY3NzksIDc2Nzg2LCA3Njc5MiwgNzY4MDYsIDYzMzQwLCA3NjgxNCwgCisgICAgNzY4MjAsIDc2ODI0LCA3NjgyNywgNzY4MzUsIDc2ODQyLCA3Njg0NywgNzY4NjAsIDc2ODY3LCA3Njg3MSwgNzY4NzgsIAorICAgIDc2ODgzLCA2MDgyMywgNzY4ODgsIDc2ODkxLCA3Njg5OCwgNzY5MDQsIDc2OTA4LCA3NjkxNiwgNzY5MjUsIDc2OTM1LCAKKyAgICA3Njk0NSwgNzY5NTQsIDc2OTYyLCA3Njk3MywgNzY5NzgsIDc2OTgyLCA3Njk4NywgNzY5OTEsIDM1MzY0LCA3Njk5OSwgCisgICAgMjEzNDQsIDM1MzczLCA3NzAwNCwgNzcwMDksIDc3MDE0LCA3NzAxOSwgNzcwMjQsIDc3MDI5LCA3NzAzNCwgNzcwMzgsIAorICAgIDc3MDQzLCA3NzA0OCwgNzcwNTMsIDc3MDU4LCA3NzA2MywgNzcwNjgsIDc3MDcyLCA3NzA3NywgNzcwODIsIDc3MDg2LCAKKyAgICA3NzA5MCwgNzcwOTQsIDc3MDk4LCA3NzEwMywgNzcxMDgsIDc3MTEyLCA3NzExNywgNzcxMjEsIDc3MTI1LCA3NzEzMCwgCisgICAgNzcxMzUsIDc3MTQwLCA3NzE0NSwgNzcxNDksIDc3MTU0LCA3NzE1OSwgNzcxNjMsIDc3MTY4LCA3NzE3MywgNzcxNzgsIAorICAgIDc3MTgzLCA3NzE4OCwgNzcxOTMsIDc3MTk4LCA3NzIwMywgNzcyMDgsIDc3MjEzLCA3NzIxOCwgNzcyMjMsIDc3MjI4LCAKKyAgICA3NzIzMywgNzcyMzgsIDc3MjQzLCA3NzI0OCwgNzcyNTMsIDc3MjU4LCA3NzI2MywgNzcyNjcsIDc3MjcyLCA3NzI3NywgCisgICAgNzcyODIsIDc3Mjg3LCA3NzI5MiwgNzcyOTcsIDc3MzAyLCA3NzMwNywgNzczMTIsIDc3MzE3LCA3NzMyMiwgNzczMjYsIAorICAgIDc3MzMxLCA3NzMzNSwgNzczNDAsIDc3MzQ1LCA3NzM1MCwgNzczNTUsIDc3MzYwLCA3NzM2NSwgNzczNzAsIDc3Mzc1LCAKKyAgICA3NzM4MCwgNzczODQsIDc3Mzg4LCA3NzM5MywgNzczOTgsIDc3NDAyLCA3NzQwNywgNzc0MTIsIDc3NDE2LCA3NzQyMSwgCisgICAgNzc0MjYsIDc3NDMxLCA3NzQzNiwgNzc0NDAsIDc3NDQ1LCA3NzQ1MCwgNzc0NTQsIDc3NDU5LCA3NzQ2MywgNzc0NjcsIAorICAgIDc3NDcxLCA3NzQ3NSwgNzc0ODAsIDc3NDg0LCA3NzQ4OCwgNzc0OTIsIDc3NDk2LCA3NzUwMCwgNzc1MDQsIDc3NTA4LCAKKyAgICA3NzUxMiwgNzc1MTYsIDc3NTIxLCA3NzUyNiwgNzc1MzEsIDc3NTM2LCA3NzU0MSwgNzc1NDYsIDc3NTUxLCA3NzU1NiwgCisgICAgNzc1NjEsIDc3NTY2LCA3NzU3MCwgNzc1NzQsIDc3NTc4LCA3NzU4MiwgNzc1ODYsIDc3NTkwLCA3NzU5NSwgNzc1OTksIAorICAgIDc3NjA0LCA3NzYwOCwgNzc2MTMsIDc3NjE4LCA3NzYyMiwgNzc2MjYsIDc3NjMxLCA3NzYzNSwgNzc2MzksIDc3NjQzLCAKKyAgICA3NzY0NywgNzc2NTEsIDc3NjU1LCA3NzY1OSwgNzc2NjMsIDc3NjY3LCA3NzY3MSwgNzc2NzUsIDc3Njc5LCA3NzY4MywgCisgICAgNzc2ODcsIDc3NjkyLCA3NzY5NywgNzc3MDEsIDc3NzA1LCA3NzcwOSwgNzc3MTMsIDc3NzE3LCA3NzcyMSwgNzc3MjYsIAorICAgIDc3NzMwLCA3NzczNCwgNzc3MzgsIDc3NzQyLCA3Nzc0NiwgNzc3NTAsIDc3NzU1LCA3Nzc1OSwgNzc3NjQsIDc3NzY4LCAKKyAgICA3Nzc3MiwgNzc3NzYsIDc3NzgwLCA3Nzc4NCwgNzc3ODgsIDc3NzkyLCA3Nzc5NiwgNzc4MDAsIDc3ODA0LCA3NzgwOCwgCisgICAgNzc4MTMsIDc3ODE3LCA3NzgyMSwgNzc4MjUsIDc3ODI5LCA3NzgzMywgNzc4MzcsIDc3ODQxLCA3Nzg0NSwgNzc4NDksIAorICAgIDc3ODUzLCA3Nzg1NywgNzc4NjIsIDc3ODY2LCA3Nzg3MCwgNzc4NzUsIDc3ODgwLCA3Nzg4NCwgNzc4ODgsIDc3ODkyLCAKKyAgICA3Nzg5NiwgNzc5MDAsIDc3OTA0LCA3NzkwOCwgNzc5MTIsIDc3OTE3LCA3NzkyMSwgNzc5MjYsIDc3OTMwLCA3NzkzNSwgCisgICAgNzc5MzksIDc3OTQ0LCA3Nzk0OCwgNzc5NTQsIDc3OTU5LCA3Nzk2MywgNzc5NjgsIDc3OTcyLCA3Nzk3NywgNzc5ODEsIAorICAgIDc3OTg2LCA3Nzk5MCwgNzc5OTUsIDE1MjEsIDc3OTk5LCAyODI0LCAxNzU5LCAxNzY0LCA3ODAwMywgNzgwMDcsIDI4MjgsIAorICAgIDc4MDExLCAxMzk3LCA3ODAxNiwgMTM0MiwgNzgwMjAsIDI4NDAsIDc4MDI0LCA3ODAzMSwgNzgwMzgsIDc4MDUyLCAyODQ0LCAKKyAgICA3MTMxLCA3ODA2MSwgNzgwNjksIDc4MDc2LCA3ODA4NywgNzgwOTYsIDc4MTAzLCA3ODExNSwgNzgxMjgsIDc4MTQxLCAKKyAgICA3ODE1MiwgNzgxNTcsIDc4MTY0LCA3ODE3NiwgNzgxODAsIDI4NDgsIDExNzQwLCA3ODE5MCwgNzgxOTUsIDc4MjA0LCAKKyAgICA3ODIxNCwgMjg1MiwgNzgyMTksIDc4MjIzLCA3ODIyOCwgNzgyMzUsIDc4MjQxLCA3ODI0OSwgNzgyNjEsIDEzNDcsIAorICAgIDEzMDM1LCA3ODI3MSwgNzgyNzUsIDc4MjgxLCA3ODI5NSwgNzgzMDcsIDc4MzE5LCA3ODMyOSwgNzgzMzgsIDc4MzQ3LCAKKyAgICA3ODM1NiwgNzgzNjQsIDc4Mzc1LCA3ODM4MywgNDA1MSwgNzgzOTMsIDc4NDA0LCA3ODQxMywgNzg0MTksIDc4NDM0LCAKKyAgICA3ODQ0MSwgNzg0NDcsIDM1NDg5LCA3ODQ1MiwgMjg3NiwgMTMwMzksIDc4NDU2LCA3ODQ2MywgODkzMCwgNzg0NzIsIDI4ODEsIAorICAgIDMyMzM2LCA3ODQ3OCwgNjA1NzIsIDc4NDg1LCA3ODQ5MSwgNzg1MDIsIDc4NTA4LCA3ODUxNSwgNzg1MjEsIDc4NTI5LCAKKyAgICA3ODUzNiwgNzg1NDIsIDc4NTUyLCA3ODU2MSwgNzg1NzIsIDc4NTc5LCA3ODU4NSwgNzg1OTUsIDc4NjAzLCA3ODYwOSwgCisgICAgNzg2MjQsIDc4NjMwLCA3ODYzNSwgNzg2NDIsIDc4NjQ1LCA3ODY1MSwgNzg2NTgsIDc4NjY0LCA3ODY3MiwgNzg2ODEsIAorICAgIDc4Njg5LCA3ODY5NSwgNzg3MDQsIDQxNDI3LCA3ODcxOCwgNzg3MjMsIDc4NzI5LCAxNDc0NCwgNzg3MzQsIDc4NzQ3LCAKKyAgICA3ODc1NiwgNzg3NjQsIDc4NzcxLCA3ODc3NSwgNzg3NzksIDc4NzgyLCA3ODc4OSwgNzg3OTYsIDc4ODA0LCA3ODgxMiwgCisgICAgNzg4MjEsIDc4ODI5LCAxNDY3MSwgNzg4MzcsIDc4ODQyLCA3ODg0NiwgNzg4NTgsIDc4ODY1LCA3ODg3NCwgNzQ4LCAKKyAgICA3ODg4NCwgNzg4OTMsIDc4OTA0LCAyODk3LCA3ODkwOCwgNzg5MTIsIDc4OTE4LCA3ODkzMSwgNzg5NDMsIDc4OTUzLCAKKyAgICA3ODk2MiwgNzg5NzQsIDI2MzUyLCA3ODk4NSwgNzg5OTMsIDc5MDAyLCA3OTAxMywgNzkwMjQsIDc5MDM0LCA3OTA0NCwgCisgICAgNzkwNTMsIDc5MDYxLCAxMTMwNSwgNzkwNjgsIDc5MDcyLCA3OTA3NSwgNzkwODAsIDc5MDg1LCA3OTA4OSwgNzkwOTUsIAorICAgIDEzNTIsIDExODExLCA3OTEwMiwgNzkxMTMsIDc5MTIyLCA3OTEzMCwgNzkxMzksIDc5MTQ3LCA3OTE2MywgNzkxNzQsIAorICAgIDc5MTgzLCA3OTE5MSwgNzkyMDMsIDc5MjE0LCA3OTIzMCwgNzkyNDAsIDc5MjYxLCA3OTI3NCwgNzkyODIsIDc5Mjg5LCAKKyAgICAxNDg1NSwgNzkzMDIsIDc5MzA3LCA3OTMxMywgNTkwOCwgNzkzMTksIDc5MzIyLCA3OTMyOSwgNzkzMzksIDgxNzYsIAorICAgIDc5MzQ2LCA3OTM1MSwgNzkzNTYsIDc5MzYxLCA3OTM2OSwgNzkzNzgsIDc5Mzg2LCA5NzQ5LCA5NzU4LCA3OTM5MSwgCisgICAgNzk0MDIsIDc5NDA3LCA3OTQxMywgMjkxMywgMjkxOCwgNzk0MTksIDEwODcyLCA3OTQyNSwgNzk0MzIsIDc5NDM5LCAKKyAgICA3OTQ1MiwgMjI1MSwgNjgsIDc5NDU3LCA3OTQ2MiwgNzk0NzIsIDc5NDc4LCA3OTQ4NywgNzk0OTUsIDc5NTA1LCA3OTUwOSwgCisgICAgNzk1MTQsIDc5NTE4LCA3OTUzMCwgMjk0MSwgNzk1MzgsIDc5NTQ2LCA3OTU1MSwgNzk1NjIsIDc5NTczLCA3OTU4MiwgCisgICAgNzk1ODcsIDc5NTkzLCA3OTU5OCwgNzk2MDgsIDc5NjE4LCA3OTYyMywgNzk2MjksIDc5NjM0LCA3OTY0MywgMjEzOTcsIAorICAgIDc5NjQ3LCA0MTI4LCAyMCwgNzk2NTIsIDc5NjYxLCA3OTY2OCwgNzk2NzUsIDc5NjgxLCA3OTY4NywgODY0LCA3OTY5MiwgCisgICAgNzk2OTcsIDYwOTAwLCA3OTcwMiwgNzk3MDcsIDc5NzEzLCA3OTcxOSwgNzk3MjcsIDc5NzMyLCA3OTczOSwgNzk3NDUsIAorICAgIDc5NzUwLCAzODAwMSwgNDEzMjEsIDc5NzU2LCAyOTQ1LCAzMiwgNzk3NjYsIDc5Nzc5LCA3OTc4NCwgNzk3OTIsIDc5Nzk3LCAKKyAgICA3OTgwMywgMjk2NywgMjgyODksIDc5ODA4LCA3OTgxNiwgNzk4MjMsIDc5ODI4LCA1ODY0NSwgNjE5MDMsIDc5ODM3LCAKKyAgICA3OTg0MSwgMTcwNCwgMTgxMywgNzk4NDYsIDc5ODUxLCA3OTg1OCwgMTgxNywgMjQ3LCA3OTg2NSwgNzk4NzEsIDI5ODksIAorICAgIDc5ODc2LCA3OTg4MSwgNzk4ODgsIDE4MjEsIDc5ODkzLCA3OTg5OSwgNzk5MDQsIDc5OTE2LCA2MTE5LCA3OTkyNiwgMTgyOCwgCisgICAgNzk5MzIsIDc5OTM3LCA3OTk0NCwgNzk5NTEsIDc5OTY2LCA3OTk3MywgNzk5ODQsIDc5OTkyLCAyNjE4LCA3OTk5NiwgCisgICAgODAwMDgsIDgwMDEzLCA4MDAxNywgODAwMjMsIDI4MTE0LCAyMjU2LCA4MDAyNywgODAwMzgsIDgwMDQyLCA4MDA0NiwgCisgICAgODAwNTIsIDgwMDU2LCA4MDA2NSwgODAwNjksIDgwMDgwLCA4MDA4NCwgMjMwMiwgMzIxNjUsIDgwMDg4LCA4MDA5OCwgCisgICAgMzA4MCwgOTM2NCwgODAxMDYsIDgwMTExLCA4MDExNSwgODAxMjQsIDgwMTMxLCA4MDEzNywgMzA1MCwgMTcxMzksIDgwMTQxLCAKKyAgICA4MDE1NCwgODAxNzIsIDgwMTc3LCA4MDE4NSwgODAxOTMsIDgwMjAzLCA5OTc4LCAxMzE0NywgODAyMTUsIDgwMjI4LCAKKyAgICA4MDIzNSwgODAyNDIsIDgwMjU4LCA4MDI2NSwgODAyNzEsIDEwOTUsIDgwMjc4LCA4MDI4NSwgODAyOTUsIDgwMzA0LCAKKyAgICA4MDMxNiwgNDIyOTEsIDgwMzI0LCAzMDY0LCAxMjAyMywgODAzMjcsIDgwMzM1LCA4MDMzOSwgNzgyMzEsIDMwNjgsIAorICAgIDgwMzQzLCAyMTE3OCwgMTIwMzksIDM3NTYsIDgwMzQ3LCAzMDc0LCA4MDM1MSwgODAzNjEsIDgwMzY3LCA4MDM3MywgCisgICAgODAzNzksIDgwMzg1LCA4MDM5MSwgODAzOTcsIDgwNDAzLCA4MDQwOSwgODA0MTUsIDgwNDIxLCA4MDQyNywgODA0MzMsIAorICAgIDgwNDM5LCA4MDQ0NSwgODA0NTEsIDgwNDU3LCA4MDQ2MywgODA0NjksIDgwNDc1LCA4MDQ4MSwgODA0ODcsIDgwNDkzLCAKKyAgICA4MDQ5OSwgODA1MDUsIDgwNTExLCA4MDUxOCwgODA1MjUsIDgwNTMxLCA4MDUzNywgODA1NDMsIDgwNTQ5LCA4MDU1NSwgCisgICAgODA1NjEsIDEzNTcsIDE2MDQ5LCAxMjA2MSwgODA1NjcsIDgwNTcyLCA4MDU3NywgODA1ODIsIDgwNTg3LCA4MDU5MiwgCisgICAgODA1OTcsIDgwNjAyLCA4MDYwNywgODA2MTIsIDgwNjE3LCA4MDYyMiwgODA2MjcsIDgwNjMyLCA4MDYzNywgODA2NDIsIAorICAgIDgwNjQ3LCA4MDY1MiwgODA2NTcsIDgwNjYyLCA4MDY2NywgODA2NzIsIDgwNjc3LCA4MDY4MiwgODA2ODcsIDgwNjkyLCAKKyAgICA4MDY5OCwgODA3MDMsIDgwNzA4LCA4MDcxNCwgODA3MTksIDgwNzI1LCA4MDczMCwgODA3MzUsIDgwNzQxLCA4MDc0NiwgCisgICAgODA3NTEsIDgwNzU2LCA4MDc2MSwgODA3NjYsIDgwNzcxLCA4MDc3NiwgODA3ODEsIDgwMzYyLCA4MDM2OCwgODAzNzQsIAorICAgIDgwMzgwLCA4MDM4NiwgODAzOTIsIDgwMzk4LCA4MDQwNCwgODA0MTAsIDgwNDE2LCA4MDQyMiwgODA0MjgsIDgwNDM0LCAKKyAgICA4MDQ0MCwgODA0NDYsIDgwNzg3LCA4MDQ1MiwgODA0NTgsIDgwNDY0LCA4MDc5MywgODA0NzAsIDgwNDc2LCA4MDQ4MiwgCisgICAgODA0ODgsIDgwNDk0LCA4MDUwMCwgODA1MDYsIDgwNTI2LCA4MDc5OSwgODA4MDUsIDgwNTMyLCA4MDgxMSwgODA1MzgsIAorICAgIDgwNTQ0LCA4MDU1MCwgODA1NTYsIDgwNTYyLCAzMDkxLCAzMDk2LCA4MDgxNywgODA4MjIsIDgwODI1LCA4MDgzMSwgCisgICAgODA4MzcsIDgwODQ0LCA4MDg0OSwgODA4NTQsIDIzMDcsIAogfTsKIAogLyogY29kZS0+bmFtZSBwaHJhc2Vib29rICovCiAjZGVmaW5lIHBocmFzZWJvb2tfc2hpZnQgNwotI2RlZmluZSBwaHJhc2Vib29rX3Nob3J0IDIxMQorI2RlZmluZSBwaHJhc2Vib29rX3Nob3J0IDIwOQogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va1tdID0gewotICAgIDAsIDIxOSwgMjA2LCAyNDQsIDI1NCwgNzcsIDIyNCwgMTQzLCA3NywgNTAsIDUyLCAyNDcsIDg2LCA1MiwgMjI2LCA1NywgCi0gICAgNTIsIDI1NCwgMzUsIDI1MywgMjI2LCA0MiwgMjI2LCAxMzEsIDQ2LCAyMjYsIDEzMSwgMjUzLCAxMzIsIDk0LCA1MiwgMjQ5LCAKLSAgICAxNTcsIDI0MCwgMTU5LCAyNDMsIDIwMCwgMjE5LCA2OSwgMjE5LCAyMzEsIDIxLCAyMTIsIDc5LCAyMSwgMTE2LCAyMSwgCi0gICAgMTA5LCAyMSwgMTY2LCAyMSwgMTYzLCAyMSwgMTgwLCAyMSwgMTg5LCAyMSwgMTk4LCAyMSwgMTk1LCAyMSwgMjAwLCAyNDksIAotICAgIDE2NCwgMjIxLCA3MCwgMjMzLCAzOSwgNTIsIDI0NSwgNjEsIDUyLCAyNDIsIDEwNywgNTIsIDIyNCwgMTU4LCA3NywgMjQ5LCAKLSAgICAxNTYsIDI1MywgMTIyLCA3LCA2LCAxLCA2MSwgNywgNiwgMSwgMjUzLCA3NCwgNywgNiwgMSwgMjUwLCAyNTIsIDcsIDYsIDEsIAotICAgIDI0OSwgMywgNywgNiwgMSwgNzQsIDcsIDYsIDEsIDI0NCwgMjMwLCA3LCA2LCAxLCAyNDMsIDE3NywgNywgNiwgMSwgMjQyLCAKLSAgICA0MSwgNywgNiwgMSwgNzIsIDcsIDYsIDEsIDIzNSwgMTQyLCA3LCA2LCAxLCAyMzUsIDI3LCA3LCA2LCAxLCAxNTAsIDcsIDYsIAotICAgIDEsIDE4MywgNywgNiwgMSwgMjA0LCA3LCA2LCAxLCA3NSwgNywgNiwgMSwgMjI2LCAyMjksIDcsIDYsIDEsIDIyNCwgMjQwLCAKLSAgICA3LCA2LCAxLCAxNDksIDcsIDYsIDEsIDE5NywgNywgNiwgMSwgMjE4LCA5OSwgNywgNiwgMSwgNjksIDcsIDYsIDEsIDIxNSwgCi0gICAgNzksIDcsIDYsIDEsIDIxNCwgODIsIDcsIDYsIDEsIDIxMywgMTY2LCA3LCA2LCAxLCAyMTMsIDEwNSwgNywgNiwgMSwgMjEyLCAKLSAgICAxNTIsIDQyLCA0MSwgMTI1LCAyMjMsIDIwMywgMjE5LCAyMzEsIDQ2LCA0MSwgMTI1LCAyNDksIDIyNCwgMjU0LCAxNzQsIAotICAgIDExNSwgMjMyLCAyNDIsIDI0MiwgMTE0LCAyNTQsIDE3NCwgNywgMywgMSwgNjEsIDcsIDMsIDEsIDI1MywgNzQsIDcsIDMsIAotICAgIDEsIDI1MCwgMjUyLCA3LCAzLCAxLCAyNDksIDMsIDcsIDMsIDEsIDc0LCA3LCAzLCAxLCAyNDQsIDIzMCwgNywgMywgMSwgCi0gICAgMjQzLCAxNzcsIDcsIDMsIDEsIDI0MiwgNDEsIDcsIDMsIDEsIDcyLCA3LCAzLCAxLCAyMzUsIDE0MiwgNywgMywgMSwgMjM1LCAKLSAgICAyNywgNywgMywgMSwgMTUwLCA3LCAzLCAxLCAxODMsIDcsIDMsIDEsIDIwNCwgNywgMywgMSwgNzUsIDcsIDMsIDEsIDIyNiwgCi0gICAgMjI5LCA3LCAzLCAxLCAyMjQsIDI0MCwgNywgMywgMSwgMTQ5LCA3LCAzLCAxLCAxOTcsIDcsIDMsIDEsIDIxOCwgOTksIDcsIAotICAgIDMsIDEsIDY5LCA3LCAzLCAxLCAyMTUsIDc5LCA3LCAzLCAxLCAyMTQsIDgyLCA3LCAzLCAxLCAyMTMsIDE2NiwgNywgMywgMSwgCi0gICAgMjEzLCAxMDUsIDcsIDMsIDEsIDIxMiwgMTUyLCA0MiwgMjQ5LCA0MCwgMTI1LCA3MSwgMjMyLCAyNDIsIDQ2LCAyNDksIDQwLCAKLSAgICAxMjUsIDIxNywgNDIsIDIyOCwgMTg0LCAyMTksIDIwNiwgMjM1LCAxOTEsIDI0NCwgMjU0LCA3NywgMjUwLCAxMTAsIDUyLCAKLSAgICAyMjUsIDEwOCwgNTIsIDI0OSwgMzksIDUyLCAyMTMsIDMxLCA1MiwgMjUxLCA2MywgMTM0LCAyMjIsIDkyLCA1MiwgMjQ3LCAKLSAgICAyMDksIDI0OSwgMTAyLCA1MiwgMjQ0LCAxMDUsIDIyNywgMjEsIDIzNSwgMjM1LCAyMzMsIDY2LCA1MSwgMjU0LCAxOSwgCi0gICAgMjI0LCAxNDMsIDc3LCAyMjgsIDE2MywgNTIsIDIxOSwgMjM2LCAyNDAsIDE2MCwgMjIzLCAyNTIsIDUyLCAyMzIsIDM3LCAKLSAgICAyNDgsIDIyLCA1MiwgMjI1LCAxNTUsIDUyLCAyMTgsIDIyMywgMTA5LCAyMTgsIDIyMywgMTY2LCAyNTQsIDE2NCwgMjU0LCAKLSAgICAxNzQsIDIzMSwgNDEsIDUyLCAyMjUsIDIwMCwgNTIsIDIzMSwgMzcsIDI0NywgNzQsIDI1MCwgMTE3LCAyMTgsIDIyMywgCi0gICAgMTE2LCAyMzEsIDIxMSwgMjI3LCAyMSwgMjM1LCAyMzUsIDIyMywgMTQ0LCA1MSwgMjU0LCAxOSwgMjI0LCAxNDMsIDc3LCAKLSAgICAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyMjQsIDE2NiwgMjE0LCA5NywgMjQzLCAyMjgsIDEyMiwgMjQyLCA5LCAyMTQsIAotICAgIDk3LCAyNDMsIDIyOCwgMTMzLCAyMjQsIDE2NCwgMjM1LCAxOTEsIDIyNCwgMTU4LCA3NywgNywgNiwgMSwgMTE4LCAyLCAKLSAgICAyNDIsIDExMywgNywgNiwgMSwgMTE4LCAyLCAxNzksIDcsIDYsIDEsIDExOCwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDExOCwgCi0gICAgMiwgMjE3LCA0MiwgNywgNiwgMSwgMTE4LCAyLCAyNDcsIDIwOSwgNywgNiwgMSwgMTE4LCAyLCAyMjMsIDEzMSwgNDksIDcsIAotICAgIDYsIDEsIDI1NCwgMTQ4LCA3LCA2LCAxLCAyNTAsIDI1MywgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDE5MSwgMiwgMjQyLCAKLSAgICAxMTMsIDcsIDYsIDEsIDE5MSwgMiwgMTc5LCA3LCA2LCAxLCAxOTEsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAxOTEsIDIsIAotICAgIDI0NywgMjA5LCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjQyLCAxMTMsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAxNzksIDcsIAotICAgIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNDksIDIyMywgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAKLSAgICAyNDUsIDI1LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAyMTcsIDQyLCA3LCA2LCAxLCAxNTcsIDIsIDI0MiwgMTEzLCA3LCA2LCAKLSAgICAxLCAxNTcsIDIsIDE3OSwgNywgNiwgMSwgMTU3LCAyLCAyNDksIDIyMywgNywgNiwgMSwgMTU3LCAyLCAyMTcsIDQyLCA3LCAKLSAgICA2LCAxLCAxNTcsIDIsIDI0NywgMjA5LCAyMzAsIDE1NCwgNTIsIDcsIDYsIDEsIDE1NywgMiwgOTAsIDcsIDYsIDEsIDExMSwgCi0gICAgMiwgMjQyLCAxMTMsIDcsIDYsIDEsIDExMSwgMiwgMTc5LCA3LCA2LCAxLCAxMTEsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAKLSAgICAxMTEsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMTc5LCA3LCA2LCAxLCAyMTcsIDEwNCwgNywgMywgMSwgCi0gICAgMjIwLCAyNTUsIDE5NywgNywgMywgMSwgMTE4LCAyLCAyNDIsIDExMywgNywgMywgMSwgMTE4LCAyLCAxNzksIDcsIDMsIDEsIAotICAgIDExOCwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDExOCwgMiwgMjE3LCA0MiwgNywgMywgMSwgMTE4LCAyLCAyNDcsIDIwOSwgNywgCi0gICAgMywgMSwgMTE4LCAyLCAyMjMsIDEzMSwgNDksIDcsIDMsIDEsIDI1NCwgMTQ4LCA3LCAzLCAxLCAyNTAsIDI1MywgMiwgMjUwLCAKLSAgICAxMTcsIDcsIDMsIDEsIDE5MSwgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDE5MSwgMiwgMTc5LCA3LCAzLCAxLCAxOTEsIDIsIAotICAgIDI0OSwgMjIzLCA3LCAzLCAxLCAxOTEsIDIsIDI0NywgMjA5LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjQyLCAxMTMsIDcsIAotICAgIDMsIDEsIDI0MCwgMTQ2LCAyLCAxNzksIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyNDksIDIyMywgNywgMywgMSwgMjQwLCAKLSAgICAxNDYsIDIsIDI0NywgMjA5LCA3LCAzLCAxLCAyNDUsIDI1LCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAyMTcsIDQyLCA3LCAzLCAKLSAgICAxLCAxNTcsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAxNTcsIDIsIDE3OSwgNywgMywgMSwgMTU3LCAyLCAyNDksIDIyMywgNywgCi0gICAgMywgMSwgMTU3LCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAxNTcsIDIsIDI0NywgMjA5LCAyNDcsIDEyMSwgNTIsIDcsIDMsIDEsIAotICAgIDE1NywgMiwgOTAsIDcsIDMsIDEsIDExMSwgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDExMSwgMiwgMTc5LCA3LCAzLCAxLCAKLSAgICAxMTEsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjA5LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMTc5LCAKLSAgICA3LCAzLCAxLCAyMTcsIDEwNCwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAxMTgsIDIsIDIzMiwgCi0gICAgMzcsIDcsIDMsIDEsIDExOCwgMiwgMjMyLCAzNywgNywgNiwgMSwgMTE4LCAyLCAyNTEsIDc0LCA3LCAzLCAxLCAxMTgsIDIsIAotICAgIDI1MSwgNzQsIDcsIDYsIDEsIDExOCwgMiwgMjI3LCA5MCwgNywgMywgMSwgMTE4LCAyLCAyMjcsIDkwLCA3LCA2LCAxLCAKLSAgICAyNTAsIDI1MywgMiwgMTc5LCA3LCAzLCAxLCAyNTAsIDI1MywgMiwgMTc5LCA3LCA2LCAxLCAyNTAsIDI1MywgMiwgMjQ5LCAKLSAgICAyMjMsIDcsIDMsIDEsIDI1MCwgMjUzLCAyLCAyNDksIDIyMywgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDYyLCA0OSwgNywgMywgCi0gICAgMSwgMjUwLCAyNTMsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyNTAsIAotICAgIDI1MywgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDI0OSwgNCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjUwLCAKLSAgICAxNjYsIDcsIDYsIDEsIDI0OSwgNCwgMiwgOTAsIDcsIDMsIDEsIDI0OSwgNCwgMiwgOTAsIDcsIDYsIDEsIDE5MSwgMiwgCi0gICAgMjMyLCAzNywgNywgMywgMSwgMTkxLCAyLCAyMzIsIDM3LCA3LCA2LCAxLCAxOTEsIDIsIDI1MSwgNzQsIDcsIDMsIDEsIAotICAgIDE5MSwgMiwgMjUxLCA3NCwgNywgNiwgMSwgMTkxLCAyLCA2MiwgNDksIDcsIDMsIDEsIDE5MSwgMiwgNjIsIDQ5LCA3LCA2LCAKLSAgICAxLCAxOTEsIDIsIDIyNywgOTAsIDcsIDMsIDEsIDE5MSwgMiwgMjI3LCA5MCwgNywgNiwgMSwgMTkxLCAyLCAyNTAsIDE2NiwgCi0gICAgNywgMywgMSwgMTkxLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyNDMsIAotICAgIDE3OCwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAyNTEsIDc0LCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgCi0gICAgMjUxLCA3NCwgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDYyLCA0OSwgNywgMywgMSwgMjQzLCAxNzgsIDIsIDYyLCA0OSwgNywgCi0gICAgNiwgMSwgMjQzLCAxNzgsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIAotICAgIDI0MiwgNDIsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAyNDksIDIyMywgNywgNiwgMSwgMjQyLCA0MiwgMiwgCi0gICAgOTAsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDkwLCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjE3LCA0MiwgNywgMywgMSwgMjQwLCAKLSAgICAxNDYsIDIsIDIxNywgNDIsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyMzIsIDM3LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgCi0gICAgMjMyLCAzNywgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDI1MSwgNzQsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyNTEsIDc0LCA3LCAKLSAgICA2LCAxLCAyNDAsIDE0NiwgMiwgMjI3LCA5MCwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDIyNywgOTAsIDcsIDYsIDEsIDI0MCwgCi0gICAgMTQ2LCAyLCA2MiwgNDksIDcsIDMsIDEsIDI0NywgNzMsIDcyLCA3LCA2LCAyNiwgMjM2LCAyNiwgNywgMywgMjYsIDIzNiwgCi0gICAgMjYsIDcsIDYsIDEsIDIzNSwgMTQzLCAyLCAyNDksIDIyMywgNywgMywgMSwgMjM1LCAxNDMsIDIsIDI0OSwgMjIzLCA3LCA2LCAKLSAgICAxLCAyMzUsIDI4LCAyLCAyNTAsIDExNywgNywgMywgMSwgMjM1LCAyOCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDIzMywgCi0gICAgMjQ4LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgMTc5LCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMTc5LCA3LCA2LCAxLCAyMzMsIAotICAgIDE3MSwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyNTAsIDExNywgNywgNiwgMSwgMjMzLCAxNzEsIDIsIAotICAgIDI1MCwgMTY2LCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAyMzEsIDM3LCAKLSAgICAyNDcsIDc0LCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMjMxLCAzNywgMjQ3LCA3NCwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIAotICAgIDkwLCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgOTAsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDE3OSwgNywgMywgMSwgMjMwLCA5OCwgCi0gICAgMiwgMTc5LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAyNTAsIDExNywgNywgMywgMSwgMjMwLCA5OCwgMiwgMjUwLCAxMTcsIDcsIAotICAgIDYsIDEsIDIzMCwgOTgsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjMwLCAKLSAgICA5OCwgMjI1LCA4NCwgMjUxLCA3LCAyNTMsIDIyNiwgNywgNiwgMSwgMjQ1LCA5NiwgNywgMywgMSwgMjQ1LCA5NiwgNywgNiwgCi0gICAgMSwgMTU3LCAyLCAyMzIsIDM3LCA3LCAzLCAxLCAxNTcsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDE1NywgMiwgMjUxLCA3NCwgCi0gICAgNywgMywgMSwgMTU3LCAyLCAyNTEsIDc0LCA3LCA2LCAxLCAxNTcsIDIsIDUxLCAxNzksIDcsIDMsIDEsIDE1NywgMiwgNTEsIAotICAgIDE3OSwgNywgNiwgMjYsIDIyNywgOTksIDcsIDMsIDI2LCAyMjcsIDk5LCA3LCA2LCAxLCAyMjQsIDExMywgMiwgMTc5LCA3LCAKLSAgICAzLCAxLCAyMjQsIDExMywgMiwgMTc5LCA3LCA2LCAxLCAyMjQsIDExMywgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDIyNCwgCi0gICAgMTEzLCAyLCAyNTAsIDExNywgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgCi0gICAgMjUwLCAxNjYsIDcsIDYsIDEsIDIyMywgNCwgMiwgMTc5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDE3OSwgNywgNiwgMSwgMjIzLCAKLSAgICA0LCAyLCAyNDksIDIyMywgNywgMywgMSwgMjIzLCA0LCAyLCAyNDksIDIyMywgNywgNiwgMSwgMjIzLCA0LCAyLCAyNTAsIAotICAgIDExNywgNywgMywgMSwgMjIzLCA0LCAyLCAyNTAsIDExNywgNywgNiwgMSwgMjIzLCA0LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgCi0gICAgMjIzLCA0LCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMTgsIDEwMCwgCi0gICAgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDI1MCwgCi0gICAgMTY2LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgOTAsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCA5MCwgNywgNiwgMSwgMTExLCAyLCAKLSAgICAyMTcsIDQyLCA3LCAzLCAxLCAxMTEsIDIsIDIxNywgNDIsIDcsIDYsIDEsIDExMSwgMiwgMjMyLCAzNywgNywgMywgMSwgCi0gICAgMTExLCAyLCAyMzIsIDM3LCA3LCA2LCAxLCAxMTEsIDIsIDI1MSwgNzQsIDcsIDMsIDEsIDExMSwgMiwgMjUxLCA3NCwgNywgCi0gICAgNiwgMSwgMTExLCAyLCAyMjMsIDEzMSwgNDksIDcsIDMsIDEsIDExMSwgMiwgMjIzLCAxMzEsIDQ5LCA3LCA2LCAxLCAxMTEsIAotICAgIDIsIDUxLCAxNzksIDcsIDMsIDEsIDExMSwgMiwgNTEsIDE3OSwgNywgNiwgMSwgMTExLCAyLCAyMjcsIDkwLCA3LCAzLCAxLCAKLSAgICAxMTEsIDIsIDIyNywgOTAsIDcsIDYsIDEsIDIxNCwgODMsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyMTQsIDgzLCAyLCAyNDksIAotICAgIDIyMywgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjQ5LCAyMjMsIDcsIAotICAgIDYsIDEsIDIxMywgMTA2LCAyLCAyNDcsIDIwOSwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDE3OSwgNywgMywgMSwgMjEyLCAKLSAgICAxNTMsIDIsIDE3OSwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDYyLCA0OSwgNywgMywgMSwgMjEyLCAxNTMsIDIsIDYyLCA0OSwgCi0gICAgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIAotICAgIDE4NCwgMTk3LCA3LCAzLCAxLCA1NCwgMiwgOTAsIDcsIDYsIDEsIDU0LCAyLCAxMDEsIDcsIDYsIDEsIDU0LCAyLCAyMTYsIAotICAgIDIyNCwgNywgMywgMSwgNTQsIDIsIDIxNiwgMjI0LCA3LCA2LCAxLCAxNjAsIDE4OSwgNywgMywgMSwgMTYwLCAxODksIDcsIAotICAgIDYsIDEsIDIyNywgNDAsIDc1LCA3LCA2LCAxLCAyNTAsIDI1MywgMiwgMTAxLCA3LCAzLCAxLCAyNTAsIDI1MywgMiwgMTAxLCAKLSAgICA3LCA2LCAxLCAyNTQsIDEyNCwgMjQ5LCAzLCA3LCA2LCAxLCAyNDksIDQsIDIsIDEwMSwgNywgNiwgMSwgMjQ5LCA0LCAyLCAKLSAgICAyMTYsIDIyNCwgNywgMywgMSwgMjQ5LCA0LCAyLCAyMTYsIDIyNCwgNywgMywgMSwgMjE2LCA1OCwgMjQ4LCA1LCA3LCA2LCAKLSAgICAxLCAyMjMsIDIwMiwgNzQsIDcsIDYsIDEsIDIyMiwgMTEzLCA3LCA2LCAxLCAyMjcsIDQwLCA3NCwgNywgNiwgMSwgMjQ0LCAKLSAgICAyMzEsIDIsIDEwMSwgNywgMywgMSwgMjQ0LCAyMzEsIDIsIDEwMSwgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDEwMSwgNywgNiwgCi0gICAgMSwgMjQzLCA4MywgNywgMywgMSwgMjQwLCAxOTMsIDcsIDYsIDEsIDIzNSwgMTgzLCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgCi0gICAgOTAsIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDEwMSwgNywgMywgMSwgMjM1LCAyOCwgMiwgMTAxLCA3LCAzLCAxLCAyMzMsIAotICAgIDE3MSwgMiwgMTM0LCA3LCAzLCAxLCAyMzMsIDEyNCwgMiwgOTAsIDcsIDYsIDEsIDIxNiwgNTgsIDE4MywgNywgNiwgMSwgCi0gICAgMjMwLCA5OCwgMiwgNDIsIDEwMSwgNywgMywgMSwgMjMwLCA5OCwgMiwgMTg0LCA0NiwgMjMzLCA2MCwgNywgNiwgMSwgMTU3LCAKLSAgICAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCA2LCAxLCAxNTcsIDIsIDI0MCwgMjM1LCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgCi0gICAgMjM1LCA3LCA2LCAxLCAyMjcsIDg1LCA3LCAzLCAxLCAyMjcsIDg1LCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgMTAxLCA3LCAzLCAKLSAgICAxLCAyMjYsIDIzMCwgMiwgMTAxLCA3LCAxLCAyMTIsIDIwNSwgNywgNiwgMSwgMTYwLCAxMDksIDcsIDMsIDEsIDE2MCwgCi0gICAgMTA5LCA3LCA2LCAxLCAyNDUsIDQwLCA3LCAxLCAyMjMsIDIwMiwgMjQ1LCA0MSwgMjMyLCAxNzcsIDcsIDMsIDEsIDIxOCwgCi0gICAgMTAwLCAyLCAyMjYsIDE5MywgMTAxLCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgMTAxLCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgCi0gICAgMTAxLCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgMjIzLCAyMDcsIDEwMSwgNywgNiwgMSwgMTExLCAyLCAyNDAsIDIzNSwgNywgCi0gICAgMywgMSwgMTExLCAyLCAyNDAsIDIzNSwgNywgNiwgMSwgMjE1LCAxMjgsIDcsIDYsIDEsIDIxNSwgODAsIDIsIDEwMSwgNywgCi0gICAgNiwgMSwgMjEzLCAxMDYsIDIsIDEwMSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDEwMSwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIAotICAgIDkwLCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgOTAsIDcsIDYsIDEsIDI0NCwgMjMyLCA3LCA2LCAxLCAyNDQsIDIzMywgMjIzLCAKLSAgICAyMDEsIDcsIDMsIDEsIDI0NCwgMjMzLCAyMjMsIDIwMSwgNywgMywgMSwgMjQ0LCAyMzMsIDIsIDIxOCwgMjcsIDcsIDEsIAotICAgIDExNywgMiwgOTAsIDcsIDYsIDEsIDE2MCwgMTgwLCA3LCAzLCAxLCAxNjAsIDE4MCwgNywgMSwgMjM1LCAxOTEsIDI0MiwgCi0gICAgMTU2LCAyMTksIDcwLCAyLCA5MCwgNywgMSwgMjEzLCAxNjksIDcsIDEsIDI0NywgMjU0LCAyNDksIDIwNCwgNywgMSwgMjMzLCAKLSAgICAxMDAsIDI0OSwgMjA0LCA3LCAxLCAyNTQsIDQ2LCAyNDksIDIwNCwgNywgMSwgMjIzLCAyMDcsIDI0OSwgMjA0LCA3LCA2LCAKLSAgICAxLCAyNDUsIDI1MSwgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDI0OSwgNCwgMiwgMywgMSwgMjEyLCAxNTMsIDIsIDI1MCwgCi0gICAgMTY2LCA3LCAzLCAxLCAyNDUsIDI1MSwgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDIzMiwgMjE3LCA3LCA2LCAxLCAyMzMsIAotICAgIDE3MSwgMiwgMywgMSwgMjM1LCAxNDIsIDcsIDMsIDEsIDIzMiwgMjE3LCA3LCA2LCAxLCAyMjksIDE3LCA3LCA2LCAxLCAKLSAgICAyMzAsIDk4LCAyLCAzLCAxLCAyMzUsIDE0MiwgNywgMywgMSwgMjI5LCAxNywgNywgNiwgMSwgMTE4LCAyLCAyNTAsIDE2NiwgCi0gICAgNywgMywgMSwgMTE4LCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyNDAsIAotICAgIDE0NiwgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDE1NywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDE1NywgMiwgMjUwLCAxNjYsIAotICAgIDcsIDYsIDEsIDExMSwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDExMSwgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDExMSwgMiwgCi0gICAgMjQ3LCAyMTAsIDI0LCAyMzIsIDM3LCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMjMyLCAzNywgNywgNiwgMSwgCi0gICAgMTExLCAyLCAyNDcsIDIxMCwgMjQsIDE3OSwgNywgMywgMSwgMTExLCAyLCAyNDcsIDIxMCwgMjQsIDE3OSwgNywgNiwgMSwgCi0gICAgMTExLCAyLCAyNDcsIDIxMCwgMjQsIDI1MCwgMTY2LCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMjUwLCAxNjYsIAotICAgIDcsIDYsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTExLCAyLCAyNDcsIDIxMCwgMjQsIAotICAgIDI0MiwgMTEzLCA3LCAzLCAxLCAyMTYsIDU4LCA3NCwgNywgNiwgMSwgMTE4LCAyLCAyNDcsIDIxMCwgMjQsIDIzMiwgMzcsIAotICAgIDcsIDMsIDEsIDExOCwgMiwgMjQ3LCAyMTAsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAxMTgsIDIsIDYyLCA3OCwgMjQsIDIzMiwgCi0gICAgMzcsIDcsIDMsIDEsIDExOCwgMiwgNjIsIDc4LCAyNCwgMjMyLCAzNywgNywgNiwgMSwgMjU0LCAxNDksIDIsIDIzMiwgMzcsIAotICAgIDcsIDMsIDEsIDI1NCwgMTQ5LCAyLCAyMzIsIDM3LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgOTAsIDcsIDMsIDEsIDI0MywgCi0gICAgMTc4LCAyLCA5MCwgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgMjUwLCAKLSAgICAxNjYsIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAyNTAsIDE2NiwgNywgNiwgCi0gICAgMSwgMTU3LCAyLCAyMjcsIDkwLCA3LCAzLCAxLCAxNTcsIDIsIDIyNywgOTAsIDcsIDYsIDEsIDE1NywgMiwgMjI3LCA5MSwgCi0gICAgMjQsIDIzMiwgMzcsIDcsIDMsIDEsIDE1NywgMiwgMjI3LCA5MSwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDI0NCwgMjMzLCAyLCAKLSAgICAyNTAsIDE2NiwgNywgMywgMSwgMjQ0LCAyMzMsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyMzUsIDE0MywgMiwgMjUwLCAxNjYsIAotICAgIDcsIDYsIDEsIDI0NSwgMjUwLCA3LCA2LCAxLCAyNDksIDQsIDIsIDMsIDEsIDIxMiwgMTUyLCA3LCAzLCAxLCAyNDUsIDI1MCwgCi0gICAgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDE3OSwgNywgMywgMSwgMjQzLCAxNzgsIDIsIDE3OSwgNywgNiwgMSwgMjQwLCAxOTEsIAotICAgIDcsIDYsIDEsIDIxMywgMTY5LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAyNDIsIDExMywgNywgMywgMSwgMjMwLCA5OCwgMiwgCi0gICAgMjQyLCAxMTMsIDcsIDYsIDEsIDExOCwgMiwgMjIzLCAxMzEsIDc4LCAyNCwgMTc5LCA3LCAzLCAxLCAxMTgsIDIsIDIyMywgCi0gICAgMTMxLCA3OCwgMjQsIDE3OSwgNywgNiwgMSwgMjU0LCAxNDksIDIsIDE3OSwgNywgMywgMSwgMjU0LCAxNDksIDIsIDE3OSwgCi0gICAgNywgNiwgMSwgMTU3LCAyLCAyMTksIDQ1LCAyNCwgMTc5LCA3LCAzLCAxLCAxNTcsIDIsIDIxOSwgNDUsIDI0LCAxNzksIDcsIAotICAgIDYsIDEsIDExOCwgMiwgNTEsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTgsIDIsIDUxLCAyNDIsIDExMywgNywgNiwgMSwgMTE4LCAKLSAgICAyLCAyMzUsIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMTE4LCAyLCAyMzUsIDE5MSwgMjUxLCA3NCwgNywgNiwgMSwgMTkxLCAKLSAgICAyLCA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDE5MSwgMiwgNTEsIDI0MiwgMTEzLCA3LCA2LCAxLCAxOTEsIDIsIDIzNSwgCi0gICAgMTkxLCAyNTEsIDc0LCA3LCAzLCAxLCAxOTEsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgCi0gICAgNTEsIDI0MiwgMTEzLCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgNTEsIDI0MiwgMTEzLCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgCi0gICAgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyMzUsIDE5MSwgMjUxLCA3NCwgNywgNiwgMSwgMTU3LCAKLSAgICAyLCA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDE1NywgMiwgNTEsIDI0MiwgMTEzLCA3LCA2LCAxLCAxNTcsIDIsIDIzNSwgCi0gICAgMTkxLCAyNTEsIDc0LCA3LCAzLCAxLCAxNTcsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAyMjQsIDExMywgMiwgCi0gICAgNTEsIDI0MiwgMTEzLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgNTEsIDI0MiwgMTEzLCA3LCA2LCAxLCAyMjQsIDExMywgMiwgCi0gICAgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAyMzUsIDE5MSwgMjUxLCA3NCwgNywgNiwgMSwgMTExLCAKLSAgICAyLCA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDExMSwgMiwgNTEsIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTEsIDIsIDIzNSwgCi0gICAgMTkxLCAyNTEsIDc0LCA3LCAzLCAxLCAxMTEsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAyMjMsIDQsIDIsIAotICAgIDI0OSwgMTU4LCA1NSwgNywgMywgMSwgMjIzLCA0LCAyLCAyNDksIDE1OCwgNTUsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAKLSAgICAyNDksIDE1OCwgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyNDksIDE1OCwgNTUsIDcsIDYsIDEsIDIxMiwgMjIyLCA3LCAKLSAgICAzLCAxLCAyMTIsIDIyMiwgNywgNiwgMSwgMjQyLCA0MiwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDI1MCwgCi0gICAgMTY2LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAxODQsIDQ2LCAyMzMsIDYwLCA3LCAzLCAxLCAyNDksIDQsIDIsIDI0OSwgNDEsIAotICAgIDcsIDYsIDEsIDIyNywgMiwgNywgMywgMSwgMjI3LCAyLCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMTAxLCA3LCAzLCAxLCAKLSAgICAyMTIsIDE1MywgMiwgMTAxLCA3LCA2LCAxLCAxMTgsIDIsIDYyLCA0OSwgNywgMywgMSwgMTE4LCAyLCA2MiwgNDksIDcsIDYsIAotICAgIDEsIDE5MSwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDE5MSwgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDE1NywgMiwgMjQ3LCAKLSAgICAyMTAsIDI0LCAyMzIsIDM3LCA3LCAzLCAxLCAxNTcsIDIsIDI0NywgMjEwLCAyNCwgMjMyLCAzNywgNywgNiwgMSwgMTU3LCAKLSAgICAyLCAyMTcsIDQzLCAyNCwgMjMyLCAzNywgNywgMywgMSwgMTU3LCAyLCAyMTcsIDQzLCAyNCwgMjMyLCAzNywgNywgNiwgMSwgCi0gICAgMTU3LCAyLCA2MiwgNDksIDcsIDMsIDEsIDE1NywgMiwgNjIsIDQ5LCA3LCA2LCAxLCAxNTcsIDIsIDYyLCA3OCwgMjQsIAotICAgIDIzMiwgMzcsIDcsIDMsIDEsIDE1NywgMiwgNjIsIDc4LCAyNCwgMjMyLCAzNywgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDIzMiwgCi0gICAgMzcsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAyMzIsIDM3LCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMjQ5LCA0MSwgNywgMywgCi0gICAgMSwgMjMwLCA5OCwgMiwgMjQ5LCA0MSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDI0NywgNzMsIAotICAgIDIzNSwgMTQyLCA3LCAzLCAxLCAyNDgsIDg5LCAyNDcsIDE3MiwgNywgMywgMSwgMjI0LCAxNzYsIDI0NywgMTcyLCA3LCA2LCAKLSAgICAxLCAxMTgsIDIsIDkwLCA3LCA2LCAxLCAyNTAsIDI1MywgMiwgOTAsIDcsIDMsIDEsIDI1MCwgMjUzLCAyLCA5MCwgNywgNiwgCi0gICAgMSwgMjMzLCAxNzEsIDIsIDEzNCwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMjIzLCA0LCAKLSAgICAyLCAyMTgsIDE5NSwgMjE4LCAyNywgNywgMywgMSwgMjEyLCAxNTMsIDIsIDIxOCwgMTk1LCAyMTgsIDI3LCA3LCA2LCAxLCAKLSAgICAyNDIsIDE1NiwgMjE5LCA2OSwgNywgMywgMSwgMjQyLCAxNTYsIDIxOSwgNjksIDcsIDYsIDEsIDU0LCAyLCA5MCwgNywgNiwgCi0gICAgMSwgMTExLCAxMzQsIDcsIDYsIDEsIDIxNiwgNTgsIDIxNSwgNzksIDcsIDYsIDEsIDE5MSwgMiwgOTAsIDcsIDMsIDEsIAotICAgIDE5MSwgMiwgOTAsIDcsIDYsIDEsIDIzNSwgMTQzLCAyLCA5MCwgNywgMywgMSwgMjM1LCAxNDMsIDIsIDkwLCA3LCA2LCAxLCAKLSAgICAzLCAyMjQsIDI0MSwgMiwgMjQxLCAzOCwgMjE4LCAyNywgNywgMywgMSwgMjI0LCAyNDEsIDIsIDI0MSwgMzgsIDIxOCwgMjcsIAotICAgIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCA5MCwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDkwLCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgCi0gICAgOTAsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCA5MCwgNywgMywgMSwgMjE2LCA1OCwgNjEsIDcsIDMsIDEsIDI1NCwgNTIsIDcsIAotICAgIDMsIDEsIDIxNiwgNTgsIDI1NCwgNTIsIDcsIDMsIDEsIDU0LCAyLCAxMDEsIDcsIDMsIDEsIDIyNywgNDAsIDc1LCA3LCAzLCAKLSAgICAxLCAyNTAsIDI1MywgMiwgMjQ5LCA0MSwgNywgMywgMSwgMjQ5LCA0LCAyLCAyMTgsIDI3LCA3LCAzLCAxLCAyNDksIDQsIDIsIAotICAgIDEwMSwgNywgMywgMSwgMjIzLCAyMDIsIDc0LCA3LCAzLCAxLCAyMjIsIDExMywgNywgMywgMSwgMjIyLCAxMTQsIDIsIDEwMSwgCi0gICAgNywgMywgMSwgMjI3LCA0MCwgNzQsIDcsIDMsIDEsIDIyMywgMjAyLCAyMjcsIDQwLCA3NCwgNywgMywgMSwgMjIzLCAyMDIsIAotICAgIDIyNywgNDAsIDE5MSwgMiwgMTAxLCA3LCAzLCAxLCAyNDksIDE5MywgMjIzLCAyMDIsIDIyNywgNDAsIDc0LCA3LCAzLCAxLCAKLSAgICAyNDcsIDczLCAyMzUsIDE0MywgMiwgOTAsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAxMDEsIDcsIDMsIDEsIDExMywgMjQzLCAKLSAgICAxNzcsIDcsIDEsIDMsIDYsIDI0MywgMTc3LCA3LCAzLCAxLCAyNDMsIDgzLCA3LCAzLCAxLCAyMjQsIDQzLCAyNDAsIDIzNSwgCi0gICAgNywgMywgMSwgMjE2LCA1OCwgMjQyLCA0MSwgNywgMywgMSwgMjQyLCA0MiwgMiwgMTAxLCA3LCAzLCAxLCAyNDEsIDE5MiwgCi0gICAgMiwgMTAxLCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgOTAsIDcsIDMsIDEsIDIzNSwgMTgzLCA3LCAxLCAzLCA2LCA3MiwgNywgCi0gICAgMywgMSwgMjMzLCAxNzEsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyNTEsIDIxOCwgNywgCi0gICAgMywgMSwgMjMzLCAxNzEsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIzMywgMjcsIDcsIDMsIDEsIDIxNiwgNTgsIAotICAgIDE4MywgNywgMywgMSwgMjE2LCA1OCwgMjMyLCAxMTAsIDIsIDE4NCwgMjMzLCA2MCwgNywgMywgMSwgMjMyLCAxMTAsIDIsIAotICAgIDEwMSwgNywgMywgMSwgMjMwLCA5OCwgMiwgNDIsIDEwMSwgNywgMywgMSwgMjMwLCA5OCwgMiwgMjIzLCAyMDcsIDEwMSwgNywgCi0gICAgMSwgMywgNiwgMjA0LCA3LCAzLCAxLCAyNTIsIDU0LCA3NSwgNywgMSwgMywgNiwgMjI3LCA5OSwgNywgMywgMSwgMjQ5LCAKLSAgICAxOTMsIDIyNywgNjcsIDcsIDMsIDEsIDIyNiwgOSwgNywgMywgMSwgMjE2LCA1OCwgMTQ5LCA3LCAzLCAxLCAyMTYsIDU4LCAKLSAgICAyMjQsIDExMywgMiwgMTg0LCAyMzMsIDYwLCA3LCAzLCAxLCAyMTYsIDU4LCAyMjQsIDExMywgMiwgMTAxLCA3LCAzLCAxLCAKLSAgICAyMjQsIDExMywgMiwgMTg0LCAyMzMsIDYwLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgMjE4LCAyNywgNywgMywgMSwgMjI0LCAKLSAgICAxMTMsIDIsIDI0NCwgNTYsIDcsIDMsIDEsIDIyMywgMjAyLCAyMjQsIDExMywgMiwgMjQ0LCA1NiwgNywgMSwgMywgNiwgCi0gICAgMTQ5LCA3LCAxLCAzLCA2LCAyMzUsIDE5MSwgMTQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDEwMSwgNywgMywgMSwgMjQ1LCAKLSAgICA0MCwgNywgMywgMSwgMjQ3LCA3MywgMjM1LCAxNDMsIDIsIDIxOSwgNDUsIDI0LCAxMDEsIDcsIDMsIDEsIDIxOSwgMTYzLCAKLSAgICAyMjMsIDIwMiwgMjQ1LCA0MCwgNywgMywgMSwgMjQ1LCA0MSwgMiwgMjQ5LCA0MSwgNywgMywgMSwgMjE2LCA1OCwgMjE4LCAKLSAgICA5OSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDExMSwgMTM0LCA3LCAzLCAxLCAyMTUsIAotICAgIDEyOCwgNywgMywgMSwgMjE1LCA4MCwgMiwgMTAxLCA3LCAzLCAxLCAyMTYsIDU4LCAyMTUsIDc5LCA3LCAzLCAxLCAyMTYsIAotICAgIDU4LCAyMTQsIDgyLCA3LCAzLCAxLCAyMTYsIDU4LCAyMTMsIDEwNSwgNywgMSwgMywgNiwgMjEzLCAxMDUsIDcsIDMsIDEsIAotICAgIDIxMiwgMTUzLCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgMjQ5LCA0MSwgNywgMywgMSwgMjQ0LCAKLSAgICAyMzIsIDcsIDMsIDEsIDI0NCwgMjMzLCAyLCAyNDksIDQxLCA3LCAxLCAyNDIsIDE1NiwgMjE5LCA2OSwgNywgMSwgMjI2LCAKLSAgICAxNSwgMjE0LCAxMTYsIDI0MywgMjE5LCA3LCAxLCAyMzUsIDE5MSwgMjQyLCAxNTYsIDIxOSwgNjksIDcsIDEsIDIxOSwgNTAsIAotICAgIDI1MCwgMjUyLCA3LCAxLCAyNTEsIDE2OSwgMjQ5LCAyMDQsIDcsIDEsIDMsIDYsIDI1MywgNzQsIDcsIDMsIDEsIDI0OSwgCi0gICAgMTkzLCAyMjcsIDQwLCA3NCwgNywgMSwgMywgNiwgMjQzLCAxNzgsIDIsIDEwMSwgNywgMSwgMywgNiwgMjQyLCA0MSwgNywgCi0gICAgMywgMSwgMjM1LCAxNDMsIDIsIDI0OSwgNjcsIDcsIDMsIDEsIDIxNiwgNTgsIDIzNSwgMjcsIDcsIDEsIDMsIDYsIDE1MCwgCi0gICAgNywgMywgMSwgMjI0LCAyNDEsIDIsIDEwMSwgNywgMSwgMjQyLCAxNTYsIDIxOSwgNzAsIDIsIDkwLCA3LCAxLCAyMjMsIAotICAgIDIwMiwgMjQyLCAxNTYsIDIxOSwgNzAsIDIsIDkwLCA3LCAzLCAxLCAyNDUsIDI1MSwgMjQ3LCAxNzIsIDcsIDMsIDEsIDI0NywgCi0gICAgMjMzLCAyNDcsIDE3MiwgNywgMywgMSwgMjQ1LCAyNTEsIDI0NywgMTczLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyMTYsIAotICAgIDE0MywgMjQ3LCAxNzIsIDcsIDMsIDEsIDIxNywgMTg4LCAyNDcsIDE3MiwgNywgMywgMSwgMjE3LCAyMzYsIDI0NywgMTczLCAKLSAgICAyLCAyNDksIDQxLCA3LCAzLCAxLCAyNDQsIDEwMywgMjQ3LCAxNzIsIDcsIDMsIDEsIDIzMiwgMTU4LCAyNDcsIDE3MiwgNywgCi0gICAgMywgMSwgMjMyLCAxMTEsIDI0NywgMTcyLCA3LCAxLCAyNTEsIDE2OSwgMjI2LCA1NiwgNywgMSwgMjUxLCAxNzcsIDIyNiwgCi0gICAgNTYsIDcsIDMsIDEsIDIxNiwgNTgsIDI0MiwgNDIsIDIsIDI0NCwgNTYsIDcsIDMsIDEsIDIxNiwgNTgsIDI0MiwgNDIsIDIsIAotICAgIDI0NCwgNTcsIDI0LCAyMTgsIDI3LCA1OSwgMSwgMywgMjQyLCA0MSwgNTksIDEsIDMsIDI0MiwgNDIsIDIsIDEwMSwgNTksIAotICAgIDEsIDMsIDIzNSwgMTQyLCA1OSwgMSwgMywgMTQ5LCA1OSwgMSwgMywgMjE2LCA1OCwgMTQ5LCA1OSwgMSwgMywgMjE2LCA1OCwgCi0gICAgMjI0LCAxMTMsIDIsIDEwMSwgNTksIDEsIDMsIDYsIDIzNSwgMTkxLCAxNDksIDU5LCAxLCAzLCAyMTQsIDgyLCA1OSwgMSwgCi0gICAgMywgMjEzLCAxMDUsIDU5LCAxLCAyMjUsIDcxLCA1OSwgMSwgNTEsIDIyNSwgNzEsIDU5LCAxLCAyMTYsIDU4LCAyNDksIAotICAgIDE1NywgNTksIDEsIDI1MywgMjI2LCA1OSwgMSwgMjIzLCAyMDIsIDI0OSwgMTU3LCA1OSwgMSwgNDYsIDE1MSwgMjIzLCAKLSAgICAxMzAsIDU5LCAxLCA0MiwgMTUxLCAyMjMsIDEzMCwgNTksIDEsIDI0MiwgMTU2LCAyMTksIDY5LCA1OSwgMSwgMjIzLCAyMDIsIAotICAgIDI0MiwgMTU2LCAyMTksIDY5LCA1OSwgMSwgNDIsIDI1MywgMTY0LCA1OSwgMSwgNDYsIDI1MywgMTY0LCA1OSwgMSwgMTE0LCAKLSAgICAyNTMsIDE2NCwgNTksIDEsIDExOSwgMjUzLCAxNjQsIDU5LCAxLCAyNDksIDIyNCwgMjU0LCAxNzQsIDI1MCwgMTY2LCA1OSwgCi0gICAgMSwgNzEsIDIzMiwgMjQyLCA1OSwgMSwgMjMyLCAzNywgNTksIDEsIDI1NCwgMTY0LCAyNTQsIDE3NCwgNTksIDEsIDI0MiwgCi0gICAgMTE0LCAyNTQsIDE3NCwgNTksIDEsIDExNSwgNzEsIDIzMiwgMjQyLCA1OSwgMSwgMTE1LCAyMzIsIDM3LCA1OSwgMSwgMTE1LCAKLSAgICAyNDIsIDExNCwgMjU0LCAxNzQsIDU5LCAxLCAxMTUsIDI1NCwgMTY0LCAyNTQsIDE3NCwgNTksIDEsIDIxNiwgMTgwLCAyNDksIAotICAgIDE2NCwgNTksIDEsIDE1MSwgMjE2LCAxODAsIDI0OSwgMTY0LCA1OSwgMSwgMjUwLCAxMDcsIDQ2LCAxNTEsIDIyMywgMTMwLCAKLSAgICA1OSwgMSwgMjUwLCAxMDcsIDQyLCAxNTEsIDIyMywgMTMwLCA1OSwgMSwgMTE0LCAyMTgsIDM2LCA1OSwgMSwgMTE5LCAyMTgsIAotICAgIDM2LCA1OSwgMSwgOTQsIDUyLCA1OSwgMSwgMjMwLCAyNTEsIDUyLCAyNTEsIDc0LCA2MiwgNDksIDIyMywgMTMxLCA0OSwgCi0gICAgMjI3LCA5MCwgMywgMjE3LCA0MiwgNTEsIDI1NCwgMTY0LCAyNTQsIDE3NCwgNTksIDEsIDIyMywgMTg5LCAxMDEsIDU5LCAxLCAKLSAgICAyNDksIDcxLCAyNTQsIDE3NCwgNTksIDEsIDMsIDI0MywgODMsIDU5LCAxLCAzLCAxNTAsIDU5LCAxLCAzLCAxOTcsIDU5LCAKLSAgICAxLCAzLCAyMTMsIDE2NiwgNTksIDEsIDMsIDIyMywgMjAyLCAyNDIsIDE1NiwgMjE5LCA2OSwgNTksIDEsIDI0NCwgMjQ0LCAKLSAgICAxNjAsIDEzNCwgNTksIDEsIDEyNCwgMTYwLCAxMzQsIDU5LCAxLCAyMzEsIDM4LCAxNjAsIDEzNCwgNTksIDEsIDExNSwgCi0gICAgMTYwLCAxMzQsIDU5LCAxLCAyNDQsIDI0MywgMTYwLCAxMzQsIDU5LCAxLCAyMTIsIDI0NSwgMjQ3LCAyNTEsIDE2MCwgNzcsIAotICAgIDU5LCAxLCAyMTMsIDU5LCAyNDcsIDI1MSwgMTYwLCA3NywgNTksIDEsIDIxNCwgMTE0LCA1OSwgMSwgMjE1LCAxNTYsIDU5LCAKLSAgICAxLCA1MSwgMjUzLCAyMjYsIDU5LCAxLCAxMTUsIDExOSwgMjUzLCAxNjQsIDU5LCAxLCAxMTUsIDExNCwgMjUzLCAxNjQsIAotICAgIDU5LCAxLCAxMTUsIDQyLCAyNTMsIDE2NCwgNTksIDEsIDExNSwgNDYsIDI1MywgMTY0LCA1OSwgMSwgMTE1LCAyMjMsIDEzMCwgCi0gICAgNTksIDEsIDIzMSwgMzcsIDI0MiwgMTE0LCAyNTQsIDE3NCwgNTksIDEsIDIzMSwgMzcsIDUxLCAyNDIsIDExNCwgMjU0LCAKLSAgICAxNzQsIDU5LCAxLCAyMzEsIDM3LCA1MSwgMjU0LCAxNjQsIDI1NCwgMTc0LCA1OSwgMSwgMTE1LCAyMTcsIDQyLCA1OSwgMSwgCi0gICAgMjI0LCA0OCwgMjQ5LCAxNjQsIDU5LCAxLCAyNTEsIDIzNCwgMTI0LCAyMTYsIDI0MSwgNTksIDEsIDI0NSwgMTAxLCAxMjQsIAotICAgIDIxNiwgMjQxLCA1OSwgMSwgMjUxLCAyMzQsIDExNSwgMjE2LCAyNDEsIDU5LCAxLCAyNDUsIDEwMSwgMTE1LCAyMTYsIDI0MSwgCi0gICAgNTksIDEsIDIyMCwgMjM0LCA1OSwgMSwgMjI3LCA0MCwgMjIwLCAyMzQsIDU5LCAxLCAxMTUsIDQyLCA2OCwgMzcsIDI0MiwgCi0gICAgMTE0LCAyNTQsIDE3NCwgMzcsIDI1NCwgMTY0LCAyNTQsIDE3NCwgMzcsIDI0OSwgMjI0LCAyNTQsIDE3NCwgMzcsIDIxNywgCi0gICAgNDIsIDM3LCAyMzIsIDM3LCAzNywgMjI2LCAyNDMsIDM3LCAyNTEsIDc0LCAzNywgNjIsIDQ5LCAzNywgMjQ3LCAyMDksIDM3LCAKLSAgICAyNDEsIDM4LCA0OSwgMzcsIDIyMywgMTMxLCA0OSwgMzcsIDUxLCAyNTQsIDE2NCwgMjU0LCAxNzQsIDM3LCAyNTAsIDE2NiwgCi0gICAgMzcsIDcxLCAyMzIsIDI0MywgNDksIDM3LCA1MSwgNzEsIDIzMiwgMjQzLCA0OSwgMzcsIDUxLCAyNDIsIDExNCwgMjU0LCAKLSAgICAxNzQsIDM3LCAyNTAsIDE4NywgMzcsIDIzNSwgMTkxLCAyNTEsIDc0LCAzNywgMjE2LCA1OCwgMjQ5LCAxNTgsIDQ5LCAzNywgCi0gICAgMjQ5LCAxNTgsIDQ5LCAzNywgMjIzLCAyMDIsIDI0OSwgMTU4LCA0OSwgMzcsIDI0OSwgMTU4LCA3OCwgMjIzLCAxNDgsIDM3LCAKLSAgICAyNDIsIDExNCwgMjU0LCAxNzUsIDU1LCAzNywgMjU0LCAxNjQsIDI1NCwgMTc1LCA1NSwgMzcsIDQyLCAyMTgsIDM3LCA1NSwgCi0gICAgMzcsIDQ2LCAyMTgsIDM3LCA1NSwgMzcsIDQyLCAyNTQsIDE5LCA0OSwgMzcsIDI0MCwgMjM1LCAzNywgNDIsIDE1MSwgMjIzLCAKLSAgICAxMzEsIDU1LCAzNywgMTE0LCAyMTgsIDM3LCA1NSwgMzcsIDExOSwgMjE4LCAzNywgNTUsIDM3LCA5NCwgNSwgNTUsIDM3LCAKLSAgICAyMzAsIDI1MSwgNSwgNTUsIDM3LCAyMjYsIDE5MSwgMjQxLCAzOCwgNTUsIDM3LCAyMjMsIDIwNywgMjQxLCAzOCwgNTUsIAotICAgIDM3LCA2MiwgNTUsIDM3LCAyNDcsIDIxMCwgNTUsIDM3LCAyMjMsIDEzMSwgNTUsIDM3LCAyNDksIDE1OCwgNTUsIDM3LCAKLSAgICAyNTAsIDExNywgMzcsIDIyNywgOTAsIDM3LCA3MSwgMjMyLCAyNDMsIDU1LCAzNywgMjUxLCA2OCwgNTUsIDM3LCAyMzUsIAotICAgIDE5MSwgNTEsIDI1MywgMTk0LCA1NSwgMzcsIDI1MCwgMTY3LCA1NSwgMzcsIDI0OSwgMjI0LCAyNTQsIDE3NSwgNTUsIDM3LCAKLSAgICAyNTEsIDc1LCA1NSwgMzcsIDIzNSwgMTkxLCAyNTEsIDc1LCA1NSwgMzcsIDIxNywgNDMsIDU1LCAzNywgMjMyLCAzOCwgNTUsIAotICAgIDM3LCAxMTUsIDIzMiwgMjQyLCAzNywgNTEsIDExNSwgMjMyLCAyNDIsIDM3LCAyMTcsIDQzLCAyMjYsIDI0NCwgMzcsIDIyMCwgCi0gICAgMTc1LCAyMTksIDQ1LCAyMjYsIDI0NCwgMzcsIDE4NCwgMjE5LCA0NSwgMjI2LCAyNDQsIDM3LCAyMjAsIDE3NSwgMjE5LCAKLSAgICAyMzIsIDIyNiwgMjQ0LCAzNywgMTg0LCAyMTksIDIzMiwgMjI2LCAyNDQsIDM3LCA0NiwgMTUxLCAyMjMsIDEzMSwgNTUsIAotICAgIDM3LCAyMzUsIDE5MSwgMjUxLCA2OCwgNTUsIDM3LCA0MSwgNTUsIDM3LCAyMjIsIDk5LCA1NSwgMzcsIDIxMywgMTY3LCA0OSwgCi0gICAgMzcsIDcxLCAyMTcsIDQyLCAzNywgNTEsIDIyNiwgMjQzLCAzNywgMjQyLCAxMTQsIDE2MCwgNzcsIDM3LCAyNTQsIDE2NCwgCi0gICAgMTYwLCA3NywgMzcsIDI1LCAyMjYsIDUwLCAzNywgMjUsIDIzNCwgMTEsIDM3LCAyNSwgMjQ3LCAyMDQsIDIxNiwgMjMxLCAKLSAgICAzNywgMjUsIDIxMiwgMjEwLCAzNywgMjUxLCA2OCwgNDksIDM3LCAyNDUsIDYxLCA1LCA1NSwgMzcsIDUxLCA3MSwgMjMyLCAKLSAgICAyNDMsIDU1LCAzNywgNDIsIDI1NCwgMTksIDU1LCAzNywgMjI4LCAxNjMsIDIxNywgNDMsIDQ5LCAzNywgMjQxLCA0NCwgNDksIAotICAgIDM3LCAyNTQsIDU3LCAxMjMsIDIxMSwgMjExLCA0OSwgMzcsIDQyLCA0NiwgNzYsIDU1LCAzNywgMjE1LCAxMjQsIDc2LCA1NSwgCi0gICAgMzcsIDI0MiwgMTE4LCAyMzUsIDY2LCAzNywgNDYsIDI1MywgMTY1LCA0OSwgMzcsIDQyLCAxNTEsIDIyMywgMTMxLCA0OSwgCi0gICAgMzcsIDI0NCwgMTAwLCAzNywgMjEzLCAxNjcsIDU1LCAzNywgNDIsIDI1MywgMTY1LCA1NSwgMzcsIDQ2LCAyNTMsIDE2NSwgCi0gICAgNTUsIDM3LCA0NiwgMjUzLCAxNjUsIDI0LCAxMTQsIDI1MywgMTY1LCA1NSwgMzcsIDQ2LCAxNTEsIDIyMywgMTMxLCA0OSwgCi0gICAgMzcsIDYyLCA3OCwgMjIzLCAxNDgsIDM3LCAyNTMsIDEzMywgNTUsIDM3LCA1MSwgMjIzLCAxMzEsIDU1LCAzNywgMjEyLCAKLSAgICAyOCwgNDksIDM3LCA1MSwgMjUxLCA3NSwgNTUsIDM3LCA1MSwgMjUxLCA3NCwgMzcsIDUxLCAyMzIsIDM3LCAzNywgNTEsIAotICAgIDIzMiwgMzgsIDU1LCAzNywgNTEsIDIxNywgNDIsIDM3LCA1MSwgMjM1LCAxOTEsIDI1MSwgNzQsIDM3LCA1MSwgOTUsIDc2LCAKLSAgICA1NSwgMzcsIDcsIDMsIDEsIDYxLCAzNywgNywgMywgMSwgNzQsIDM3LCA3LCAzLCAxLCA3MiwgMzcsIDcsIDMsIDEsIDc1LCAKLSAgICAzNywgNywgMywgMSwgNjksIDM3LCA3LCAzLCAxLCAyNTAsIDI1MiwgMzcsIDcsIDMsIDEsIDI0OSwgMywgMzcsIDcsIDMsIDEsIAotICAgIDI0MiwgNDEsIDM3LCA3LCAzLCAxLCAxODMsIDM3LCA3LCAzLCAxLCAxNDksIDM3LCA3LCAzLCAxLCAyMTgsIDk5LCAzNywgNywgCi0gICAgMywgMSwgMjE1LCA3OSwgMzcsIDcsIDMsIDEsIDIxMywgMTY2LCAyNSwgNiwgMSwgMjQxLCAxODEsIDI1LCAzLCAxLCAyNDEsIAotICAgIDE4MSwgMjUsIDYsIDEsIDI1MywgMTkzLCAyMjIsIDE2MSwgMjUsIDMsIDEsIDI1MywgMTkzLCAyMjIsIDE2MSwgMjUsIDIyOCwgCi0gICAgNTQsIDUyLCAyNSwgMjMyLCAxNjMsIDIyOCwgNTQsIDUyLCAyNSwgNiwgMSwgMjI2LCAxNzgsIDI0NywgMTc5LCAyNSwgMywgCi0gICAgMSwgMjI2LCAxNzgsIDI0NywgMTc5LCAyNSwgMjEyLCAyMTAsIDI1LCAzLCAyMjMsIDIwMiwgMjMyLCAxNDEsIDIyMCwgMTA0LCAKLSAgICA4NywgMjUsIDMsIDI0NiwgNzIsIDIzMiwgMTQxLCAyMjAsIDEwNCwgODcsIDI1LCAzLCAyMjMsIDIwMiwgMjQ2LCA3MiwgCi0gICAgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMjUsIDIyNCwgMTU4LCA3NywgMjUsIDIxNiwgMjMxLCAyNSwgMjQ3LCAyMDQsIAotICAgIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjE2LCAyMzEsIDI1LCAyNTQsIDgsIDIxNywgMjExLCAyNSwgNiwgMSwgCi0gICAgMjQ1LCA2NCwgMiwgMjE2LCAyMzEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMTYsIDIzMSwgMjUsIDYsIDEsIDIzNSwgMTg0LCAKLSAgICAyLCAyMTYsIDIzMSwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIxNiwgCi0gICAgMjMxLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjE2LCAyMzEsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjQ3LCAyMDQsIDI0LCAKLSAgICAyMTYsIDIzMSwgMjUsIDYsIDEsIDI1NCwgNTIsIDI1LCA2LCAxLCAyNTEsIDIwMywgMjUsIDYsIDEsIDI0MywgODMsIDI1LCAKLSAgICA2LCAxLCAyNDgsIDUsIDI1LCA2LCAxLCAyNDUsIDYzLCAyNSwgNiwgMSwgMjEyLCA3OCwgMjUsIDYsIDEsIDI0NSwgMjgsIAotICAgIDI1LCA2LCAxLCAyMTcsIDEzMiwgMjUsIDYsIDEsIDIzNSwgMTgzLCAyNSwgNiwgMSwgMjM0LCAyMjcsIDI1LCA2LCAxLCAKLSAgICAyMzMsIDEyMiwgMjUsIDYsIDEsIDIzMCwgMTcyLCAyNSwgNiwgMSwgMjI4LCA5MiwgMjUsIDYsIDEsIDIxMywgMTQ1LCAyNSwgCi0gICAgNiwgMSwgMjI3LCA2NSwgMjUsIDYsIDEsIDIyNSwgMjQwLCAyNSwgNiwgMSwgMjIzLCAxOTAsIDI1LCA2LCAxLCAyMjAsIAotICAgIDEwMywgMjUsIDYsIDEsIDIxNywgMjQ4LCAyNSwgNiwgMSwgMjE1LCAxMjgsIDI1LCA2LCAxLCAyMjYsIDksIDI1LCA2LCAxLCAKLSAgICAyNTAsIDQ3LCAyNSwgNiwgMSwgMjI1LCA0NiwgMjUsIDYsIDEsIDIyNywgNjcsIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgCi0gICAgMjQ3LCAyMDMsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjQ3LCAyMDMsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMTYsIAotICAgIDIzMSwgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDIxNiwgMjMxLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjE2LCAyMzEsIDI1LCAKLSAgICAzLCAxLCAyMzUsIDE4NCwgMiwgMjE2LCAyMzEsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjQ3LCAyMDQsIDI0LCAyMTYsIAotICAgIDIzMSwgMjUsIDMsIDEsIDI1NCwgNTIsIDI1LCAzLCAxLCAyNTEsIDIwMywgMjUsIDMsIDEsIDI0MywgODMsIDI1LCAzLCAxLCAKLSAgICAyNDgsIDUsIDI1LCAzLCAxLCAyNDUsIDYzLCAyNSwgMywgMSwgMjEyLCA3OCwgMjUsIDMsIDEsIDI0NSwgMjgsIDI1LCAzLCAKLSAgICAxLCAyMTcsIDEzMiwgMjUsIDMsIDEsIDIzNSwgMTgzLCAyNSwgMywgMSwgMjM0LCAyMjcsIDI1LCAzLCAxLCAyMzMsIDEyMiwgCi0gICAgMjUsIDMsIDEsIDIzMCwgMTcyLCAyNSwgMywgMSwgMjI4LCA5MiwgMjUsIDMsIDEsIDIxMywgMTQ1LCAyNSwgMywgMSwgMjI3LCAKLSAgICA2NSwgMjUsIDMsIDEsIDIyNSwgMjQwLCAyNSwgMywgMSwgMjIzLCAxOTAsIDI1LCAzLCAxLCA0MCwgMjIwLCAxMDMsIDI1LCAKLSAgICAzLCAxLCAyMjAsIDEwMywgMjUsIDMsIDEsIDIxNywgMjQ4LCAyNSwgMywgMSwgMjE1LCAxMjgsIDI1LCAzLCAxLCAyMjYsIDksIAotICAgIDI1LCAzLCAxLCAyNTAsIDQ3LCAyNSwgMywgMSwgMjI1LCA0NiwgMjUsIDMsIDEsIDIyNywgNjcsIDI1LCAzLCAxLCAyMzUsIAotICAgIDE4NCwgMiwgMjQ3LCAyMDMsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjQ3LCAyMDMsIDI1LCAzLCAxLCAyMjcsIDY2LCAyLCAKLSAgICAyMTYsIDIzMSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMTYsIDIzMSwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIxNiwgCi0gICAgMjMxLCAyNSwgNiwgMjM0LCAyNTEsIDg3LCAyNSwgMjUxLCAyMDQsIDg3LCAyNSwgMjE3LCAxMzMsIDg3LCAyNSwgMjE1LCAKLSAgICAxMjksIDIsIDI0MSwgMzgsIDg3LCAyNSwgMjE1LCAxMjksIDIsIDI1NCwgMTY0LCAyNCwgMjQxLCAzOCwgODcsIDI1LCAyMTUsIAotICAgIDEyOSwgMiwgMjQ3LCAyMTAsIDI0LCAyNDEsIDM4LCA4NywgMjUsIDIyNiwgMTAsIDg3LCAyNSwgMjI1LCAyNDEsIDg3LCAyNSwgCi0gICAgMjM0LCAyNTEsIDg3LCAyNSwgMSwgMjUzLCAxOTMsIDIzNCwgMTUsIDI1LCAzLCAxLCAyNTMsIDE5MywgMjM0LCAxNSwgMjUsIAotICAgIDEsIDIxOSwgNzcsIDI1LCAzLCAxLCAyMTksIDc3LCAyNSwgMSwgMjQ3LCAxNzksIDI1LCAzLCAxLCAyNDcsIDE3OSwgMjUsIAotICAgIDEsIDIzNCwgMTUsIDI1LCAzLCAxLCAyMzQsIDE1LCAyNSwgMSwgMjIyLCAxNjEsIDI1LCAzLCAxLCAyMjIsIDE2MSwgNzksIAotICAgIDYsIDEsIDIyMCwgMjM1LCA3OSwgMywgMSwgMjIwLCAyMzUsIDc5LCA2LCAxLCAyNDQsIDEwOSwgNzksIDMsIDEsIDI0NCwgCi0gICAgMTA5LCA3OSwgNiwgMSwgMjM0LCAxMjMsIDc5LCAzLCAxLCAyMzQsIDEyMywgNzksIDYsIDEsIDI0MSwgMzIsIDc5LCAzLCAxLCAKLSAgICAyNDEsIDMyLCA3OSwgNiwgMSwgMjQzLCA3OCwgNzksIDMsIDEsIDI0MywgNzgsIDc5LCA2LCAxLCAyMjAsIDIwMiwgNzksIDMsIAotICAgIDEsIDIyMCwgMjAyLCA3OSwgNiwgMSwgMjQ4LCAyMCwgNzksIDMsIDEsIDI0OCwgMjAsIDI1LCAyMzQsIDIyOCwgODcsIDI1LCAKLSAgICAyMjMsIDE5MSwgODcsIDI1LCAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAyNSwgMSwgMjEyLCAyMTUsIDI1LCA2LCAyMTcsIAotICAgIDEzMywgODcsIDI1LCAyMzIsIDE0MSwgMjQ1LCA2NCwgODcsIDI1LCAyMjMsIDIwMiwgMjMyLCAxNDEsIDI0NSwgNjQsIDg3LCAKLSAgICAyNSwgNiwgMSwgMjIwLCAxODcsIDI1LCAzLCAxLCAyMjAsIDE4NywgMjUsIDYsIDIzMiwgMTQxLCAyMjAsIDEwNCwgODcsIAotICAgIDI1LCA2LCAxLCAyMjIsIDE1OSwgMjUsIDMsIDEsIDIyMiwgMTU5LCAyNSwgMjIzLCAxOTEsIDIsIDIxOSwgNDUsIDg3LCAyNSwgCi0gICAgNiwgMjIzLCAyMDIsIDIzMiwgMTQxLCAyMjAsIDEwNCwgODcsIDI1LCA2LCAyNDYsIDcyLCAyMzIsIDE0MSwgMjIwLCAxMDQsIAotICAgIDg3LCAyNSwgNiwgMjIzLCAyMDIsIDI0NiwgNzIsIDIzMiwgMTQxLCAyMjAsIDEwNCwgODcsIDMzLCA2LCAxLCAyMzYsIDU2LCAKLSAgICAyLCAyNDIsIDExMywgMzMsIDYsIDEsIDIzNSwgMTg3LCAzMywgNiwgMSwgMjQ3LCAxMTQsIDMzLCA2LCAxLCAyNDIsIDE2MywgCi0gICAgMzMsIDYsIDEsIDIxNSwgMTcyLCAyMzYsIDU1LCAzMywgNiwgMSwgMjQ1LCAyNDcsIDMzLCA2LCAxLCAyNTEsIDUsIDcyLCAKLSAgICAzMywgNiwgMSwgMjEyLCAyNTUsIDMzLCA2LCAxLCAyMzUsIDEyNywgMzMsIDYsIDEsIDIzMiwgMjE2LCAzMywgNiwgMSwgCi0gICAgMjI5LCA5LCAzMywgNiwgMSwgMjE2LCAxMzIsIDMzLCA2LCAxLCAyMzQsIDU3LCAzMywgNiwgMSwgMjQwLCAxNDYsIDIsIAotICAgIDI0MiwgMTEzLCAzMywgNiwgMSwgMjIwLCAxNzUsIDY5LCAzMywgNiwgMSwgMjQ1LCAyNDMsIDMzLCA2LCAxLCA2MSwgMzMsIAotICAgIDYsIDEsIDI1MSwgMjUxLCAzMywgNiwgMSwgMjE0LCAyMzIsIDMzLCA2LCAxLCAyNDIsIDIxMiwgMzMsIDYsIDEsIDI0OCwgCi0gICAgNDEsIDMzLCA2LCAxLCAyMzYsIDU1LCAzMywgNiwgMSwgMjEyLCA2NywgMzMsIDYsIDEsIDIxMiwgODcsIDMzLCA2LCAxLCAKLSAgICA3MiwgMzMsIDYsIDEsIDIyMCwgMTc1LCA3MiwgMzMsIDYsIDEsIDE4MSwgMzMsIDYsIDEsIDI0NSwgMTMxLCAzMywgNiwgMSwgCi0gICAgMjQ1LCAxMTcsIDMzLCA2LCAxLCAyNDUsIDEwOCwgMzMsIDYsIDEsIDc1LCAzMywgNiwgMSwgMjI2LCA5NiwgMzMsIDYsIDEsIAotICAgIDI0NSwgNTUsIDMzLCA2LCAxLCAyNDUsIDQ1LCAzMywgNiwgMSwgMjE3LCAyMjksIDMzLCA2LCAxLCA2OSwgMzMsIDYsIDEsIAotICAgIDI0NSwgMTU5LCAzMywgNiwgMSwgMTU5LCAzMywgNiwgMSwgMjE2LCAxMzYsIDMzLCA2LCAxLCAyNTAsIDY3LCAzMywgNiwgMSwgCi0gICAgMjIxLCAyNCwgMzMsIDYsIDEsIDIyMCwgMjQ1LCAzMywgNiwgMSwgMjQxLCAyNDIsIDUyLCAzMywgNiwgMSwgMjEzLCAxOCwgCi0gICAgMzMsIDYsIDEsIDIxOSwgMjM2LCA1MiwgMzMsIDYsIDEsIDc0LCAzMywgNiwgMSwgMjEyLCAyMDMsIDMzLCA2LCAxLCAxODYsIAotICAgIDMzLCAzLCAxLCA2MSwgMzMsIDMsIDEsIDI1MSwgMjUxLCAzMywgMywgMSwgMjE0LCAyMzIsIDMzLCAzLCAxLCAyNDIsIDIxMiwgCi0gICAgMzMsIDMsIDEsIDI0OCwgNDEsIDMzLCAzLCAxLCAyMzYsIDU1LCAzMywgMywgMSwgMjEyLCA2NywgMzMsIDMsIDEsIDIxMiwgCi0gICAgODcsIDMzLCAzLCAxLCA3MiwgMzMsIDMsIDEsIDIyMCwgMTc1LCA3MiwgMzMsIDMsIDEsIDE4MSwgMzMsIDMsIDEsIDI0NSwgCi0gICAgMTMxLCAzMywgMywgMSwgMjQ1LCAxMTcsIDMzLCAzLCAxLCAyNDUsIDEwOCwgMzMsIDMsIDEsIDc1LCAzMywgMywgMSwgMjI2LCAKLSAgICA5NiwgMzMsIDMsIDEsIDI0NSwgNTUsIDMzLCAzLCAxLCAyNDUsIDQ1LCAzMywgMywgMSwgMjE3LCAyMjksIDMzLCAzLCAxLCAKLSAgICA2OSwgMzMsIDMsIDEsIDI0NSwgMTU5LCAzMywgMywgMSwgMTU5LCAzMywgMywgMSwgMjE2LCAxMzYsIDMzLCAzLCAxLCAyNTAsIAotICAgIDY3LCAzMywgMywgMSwgMjIxLCAyNCwgMzMsIDMsIDEsIDIyMCwgMjQ1LCAzMywgMywgMSwgMjQxLCAyNDIsIDUyLCAzMywgMywgCi0gICAgMSwgMjEzLCAxOCwgMzMsIDMsIDEsIDIxOSwgMjM2LCA1MiwgMzMsIDMsIDEsIDc0LCAzMywgMywgMSwgMjEyLCAyMDMsIDMzLCAKLSAgICAzLCAxLCAxODYsIDMzLCAzLCAxLCAyMzYsIDU2LCAyLCAyNDIsIDExMywgMzMsIDMsIDEsIDIzNSwgMTg3LCAzMywgMywgMSwgCi0gICAgMjQ3LCAxMTQsIDMzLCAzLCAxLCAyNDIsIDE2MywgMzMsIDMsIDEsIDIxNSwgMTcyLCAyMzYsIDU1LCAzMywgMywgMSwgMjQ1LCAKLSAgICAyNDcsIDMzLCAzLCAxLCAyNTEsIDUsIDcyLCAzMywgMywgMSwgMjEyLCAyNTUsIDMzLCAzLCAxLCAyMzUsIDEyNywgMzMsIDMsIAotICAgIDEsIDIzMiwgMjE2LCAzMywgMywgMSwgMjI5LCA5LCAzMywgMywgMSwgMjE2LCAxMzIsIDMzLCAzLCAxLCAyMzQsIDU3LCAzMywgCi0gICAgMywgMSwgMjQwLCAxNDYsIDIsIDI0MiwgMTEzLCAzMywgMywgMSwgMjIwLCAxNzUsIDY5LCAzMywgMywgMSwgMjQ1LCAyNDMsIAotICAgIDMzLCA2LCAxLCAyMjcsIDY3LCAzMywgMywgMSwgMjI3LCA2NywgMzMsIDYsIDEsIDIxMywgNDksIDMzLCAzLCAxLCAyMTMsIAotICAgIDQ5LCAzMywgNiwgMSwgMjM1LCAxODEsIDc0LCAzMywgMywgMSwgMjM1LCAxODEsIDc0LCAzMywgNiwgMSwgMjMyLCAyMjEsIAotICAgIDIxMiwgMTc0LCAzMywgMywgMSwgMjMyLCAyMjEsIDIxMiwgMTc0LCAzMywgNiwgMSwgMjM1LCAxODEsIDIzMiwgMjIxLCAKLSAgICAyMTIsIDE3NCwgMzMsIDMsIDEsIDIzNSwgMTgxLCAyMzIsIDIyMSwgMjEyLCAxNzQsIDMzLCA2LCAxLCAyNTEsIDE3MiwgCi0gICAgMjEyLCAxNzQsIDMzLCAzLCAxLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDMzLCA2LCAxLCAyMzUsIDE4MSwgMjUxLCAxNzIsIAotICAgIDIxMiwgMTc0LCAzMywgMywgMSwgMjM1LCAxODEsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMzMsIDYsIDEsIDIzMywgMjQyLCAzMywgCi0gICAgMywgMSwgMjMzLCAyNDIsIDMzLCA2LCAxLCAyMjUsIDQ2LCAzMywgMywgMSwgMjI1LCA0NiwgMzMsIDYsIDEsIDI0NCwgNTEsIAotICAgIDMzLCAzLCAxLCAyNDQsIDUxLCAzMywgNiwgMSwgMjM1LCAxNDQsIDMzLCAzLCAxLCAyMzUsIDE0NCwgMzMsIDYsIDEsIDIzNSwgCi0gICAgMTQ1LCAyLCA1MSwgMjQyLCAxMTQsIDI1NCwgMTc0LCAzMywgMywgMSwgMjM1LCAxNDUsIDIsIDUxLCAyNDIsIDExNCwgMjU0LCAKLSAgICAxNzQsIDMzLCA2LCAxLCAyMTUsIDE3NSwgMzMsIDMsIDEsIDIxNSwgMTc1LCAzMywgNiwgMSwgMjIzLCA4NywgMjI3LCA2NywgCi0gICAgMzMsIDMsIDEsIDIyMywgODcsIDIyNywgNjcsIDMzLCA2LCAxLCAyMjcsIDY4LCAyLCAyMTcsIDE4LCAzMywgMywgMSwgMjI3LCAKLSAgICA2OCwgMiwgMjE3LCAxOCwgMzMsIDYsIDEsIDIyNywgOCwgMzMsIDMsIDEsIDIyNywgOCwgMzMsIDYsIDEsIDIzNCwgMTUsIAotICAgIDMzLCAzLCAxLCAyMzQsIDE1LCAzMywgMjE3LCA5OSwgNTIsIDM3LCAzMywgMjE3LCAxOCwgMzcsIDMzLCAyMjYsIDE5MiwgCi0gICAgMzcsIDMzLCAyMDcsIDIyNSwgMTUyLCAzNywgMzMsIDIyNSwgNDAsIDIyNSwgMTUyLCAzNywgMzMsIDIyNSwgMTM3LCAzNywgCi0gICAgMzMsIDI0MCwgMjAxLCAyMTcsIDk5LCA1MiwgMzcsIDMzLCAyMzEsIDQsIDUyLCAzMywgNiwgMSwgMjIwLCAxNzUsIDI0MCwgCi0gICAgMTQ2LCAyLCAyMTgsIDI3LCAzMywgMywgMSwgMjIwLCAxNzUsIDI0MCwgMTQ2LCAyLCAyMTgsIDI3LCAzMywgNiwgMSwgMjIxLCAKLSAgICA2NiwgNTIsIDMzLCAzLCAxLCAyMjEsIDY2LCA1MiwgMzMsIDYsIDEsIDI0NSwgNTYsIDIsIDIxNywgNjgsIDMzLCAzLCAxLCAKLSAgICAyNDUsIDU2LCAyLCAyMTcsIDY4LCAzMywgNiwgMSwgMjQyLCAyMTMsIDIsIDIxNSwgMTI3LCAzMywgMywgMSwgMjQyLCAyMTMsIAotICAgIDIsIDIxNSwgMTI3LCAzMywgNiwgMSwgMjQyLCAyMTMsIDIsIDkwLCAzMywgMywgMSwgMjQyLCAyMTMsIDIsIDkwLCAzMywgNiwgCi0gICAgMSwgMjQyLCAyMTMsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDMsIDEsIDI0MiwgMjEzLCAyLCAyMzEsIDM3LCAxMDEsIDMzLCA2LCAKLSAgICAxLCAyMTIsIDY4LCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDIxMiwgNjgsIDIsIDI0NywgMjQ2LCAzMywgNiwgMSwgMjEyLCAKLSAgICA4OCwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyMTIsIDg4LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDEsIDIzNSwgMTcsIDIsIAotICAgIDI0NywgMjQ2LCAzMywgMywgMSwgMjM1LCAxNywgMiwgMjQ3LCAyNDYsIDMzLCA2LCAxLCAyMzUsIDE3LCAyLCA3MSwgOTAsIAotICAgIDMzLCAzLCAxLCAyMzUsIDE3LCAyLCA3MSwgOTAsIDMzLCA2LCAxLCAyMzUsIDE3LCAyLCA5MCwgMzMsIDMsIDEsIDIzNSwgCi0gICAgMTcsIDIsIDkwLCAzMywgNiwgMSwgMjUyLCA0NCwgMTgxLCAzMywgMywgMSwgMjUyLCA0NCwgMTgxLCAzMywgNiwgMSwgMjQ1LCAKLSAgICAxMDksIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjQ1LCAxMDksIDIsIDI0NywgMjQ2LCAzMywgNiwgMjYsIDI0NSwgMTA5LCAKLSAgICAyNDIsIDIxMiwgMzMsIDMsIDI2LCAyNDUsIDEwOSwgMjQyLCAyMTIsIDMzLCA2LCAxLCAyMjYsIDk3LCAyLCAyMzEsIDM3LCAKLSAgICAxMDEsIDMzLCAzLCAxLCAyMjYsIDk3LCAyLCAyMzEsIDM3LCAxMDEsIDMzLCA2LCAxLCAyNTQsIDE4MCwgMTU5LCAzMywgMywgCi0gICAgMSwgMjU0LCAxODAsIDE1OSwgMzMsIDYsIDEsIDI0NSwgNDYsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjQ1LCA0NiwgMiwgCi0gICAgMjQ3LCAyNDYsIDMzLCA2LCAxLCAyMTcsIDIzMCwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyMTcsIDIzMCwgMiwgMjQ3LCAKLSAgICAyNDYsIDMzLCA2LCAxLCAyMTksIDYxLCA2OSwgMzMsIDMsIDEsIDIxOSwgNjEsIDY5LCAzMywgNiwgMSwgMjE5LCA2MSwgCi0gICAgMTExLCAyLCA5MCwgMzMsIDMsIDEsIDIxOSwgNjEsIDExMSwgMiwgOTAsIDMzLCA2LCAxLCAyNDIsIDMwLCAyLCAyNDcsIAotICAgIDI0NiwgMzMsIDMsIDEsIDI0MiwgMzAsIDIsIDI0NywgMjQ2LCAzMywgNiwgMjYsIDIxNywgMjMwLCAyMTYsIDEzNiwgMzMsIAotICAgIDMsIDI2LCAyMTcsIDIzMCwgMjE2LCAxMzYsIDMzLCA2LCAxLCAyNTAsIDY4LCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDI1MCwgCi0gICAgNjgsIDIsIDI0NywgMjQ2LCAzMywgNiwgMSwgMjUwLCA2OCwgMiwgNzEsIDkwLCAzMywgMywgMSwgMjUwLCA2OCwgMiwgNzEsIAotICAgIDkwLCAzMywgNiwgMSwgMjIwLCAyMTMsIDMzLCAzLCAxLCAyMjAsIDIxMywgMzMsIDYsIDEsIDI1NCwgMTgwLCAyNTAsIDY3LCAKLSAgICAzMywgMywgMSwgMjU0LCAxODAsIDI1MCwgNjcsIDMzLCA2LCAxLCAyNTQsIDE4MCwgMjUwLCA2OCwgMiwgMjQ3LCAyNDYsIAotICAgIDMzLCAzLCAxLCAyNTQsIDE4MCwgMjUwLCA2OCwgMiwgMjQ3LCAyNDYsIDMzLCAxLCAyMjYsIDE4NSwgMzMsIDYsIDEsIDIxMiwgCi0gICAgNjgsIDIsIDI1MSwgNzQsIDMzLCAzLCAxLCAyMTIsIDY4LCAyLCAyNTEsIDc0LCAzMywgNiwgMSwgMjM1LCAxNywgMiwgMTAxLCAKLSAgICAzMywgMywgMSwgMjM1LCAxNywgMiwgMTAxLCAzMywgNiwgMSwgMjQ1LCAxMzIsIDIsIDIxOCwgMjcsIDMzLCAzLCAxLCAyNDUsIAotICAgIDEzMiwgMiwgMjE4LCAyNywgMzMsIDYsIDEsIDI0NSwgMTA5LCAyLCAxMDEsIDMzLCAzLCAxLCAyNDUsIDEwOSwgMiwgMTAxLCAKLSAgICAzMywgNiwgMSwgMjQ1LCAxMDksIDIsIDIxOCwgMjcsIDMzLCAzLCAxLCAyNDUsIDEwOSwgMiwgMjE4LCAyNywgMzMsIDYsIDEsIAotICAgIDIzNCwgMTMzLCAyNTAsIDY3LCAzMywgMywgMSwgMjM0LCAxMzMsIDI1MCwgNjcsIDMzLCA2LCAxLCAyNDUsIDExOCwgMiwgCi0gICAgMjE4LCAyNywgMzMsIDMsIDEsIDI0NSwgMTE4LCAyLCAyMTgsIDI3LCAzMywgMywgMSwgMjI2LCAxODUsIDMzLCA2LCAxLCAKLSAgICAxMTgsIDIsIDI1MSwgNzQsIDMzLCAzLCAxLCAxMTgsIDIsIDI1MSwgNzQsIDMzLCA2LCAxLCAxMTgsIDIsIDI0NywgMjA5LCAKLSAgICAzMywgMywgMSwgMTE4LCAyLCAyNDcsIDIwOSwgMzMsIDYsIDI2LCAxMTgsIDIzNiwgNTUsIDMzLCAzLCAyNiwgMTE4LCAyMzYsIAotICAgIDU1LCAzMywgNiwgMSwgMjM2LCA1NiwgMiwgMjUxLCA3NCwgMzMsIDMsIDEsIDIzNiwgNTYsIDIsIDI1MSwgNzQsIDMzLCA2LCAKLSAgICAxLCAyMjIsIDExMywgMzMsIDMsIDEsIDIyMiwgMTEzLCAzMywgNiwgMSwgMjIyLCAxMTQsIDIsIDI0NywgMjA5LCAzMywgMywgCi0gICAgMSwgMjIyLCAxMTQsIDIsIDI0NywgMjA5LCAzMywgNiwgMSwgMjEyLCA2OCwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyMTIsIAotICAgIDY4LCAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDIxMiwgODgsIDIsIDI0NywgMjA5LCAzMywgMywgMSwgMjEyLCA4OCwgMiwgCi0gICAgMjQ3LCAyMDksIDMzLCA2LCAxLCAyNTQsIDE4MCwgMjQ1LCAyNDcsIDMzLCAzLCAxLCAyNTQsIDE4MCwgMjQ1LCAyNDcsIDMzLCAKLSAgICA2LCAxLCAyNDAsIDE0NiwgMiwgMjMyLCAzNywgMzMsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyMzIsIDM3LCAzMywgNiwgMSwgCi0gICAgMjQwLCAxNDYsIDIsIDI0NywgMjA5LCAzMywgMywgMSwgMjQwLCAxNDYsIDIsIDI0NywgMjA5LCAzMywgNiwgMSwgMTU3LCAyLCAKLSAgICAyNDcsIDIwOSwgMzMsIDMsIDEsIDE1NywgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAyNTIsIDU0LCA3NSwgMzMsIDMsIDEsIAotICAgIDI1MiwgNTQsIDc1LCAzMywgNiwgMSwgMjUyLCA1NCwgMTU3LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDI1MiwgNTQsIDE1NywgCi0gICAgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAxOTEsIDIsIDI0NywgMjA5LCAzMywgMywgMSwgMTkxLCAyLCAyNDcsIDIwOSwgMzMsIAotICAgIDYsIDEsIDExMSwgMiwgMjMyLCAzNywgMzMsIDMsIDEsIDExMSwgMiwgMjMyLCAzNywgMzMsIDYsIDEsIDExMSwgMiwgMjQ3LCAKLSAgICAyMDksIDMzLCAzLCAxLCAxMTEsIDIsIDI0NywgMjA5LCAzMywgNiwgMSwgMTExLCAyLCA1MSwgMTc5LCAzMywgMywgMSwgCi0gICAgMTExLCAyLCA1MSwgMTc5LCAzMywgNiwgMSwgMjUwLCA2OCwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyNTAsIDY4LCAyLCAKLSAgICAyNDcsIDIwOSwgMzMsIDYsIDEsIDI0MiwgMjEzLCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDI0MiwgMjEzLCAyLCAyNDcsIAotICAgIDI0NiwgMzMsIDYsIDEsIDIxMywgMTksIDIsIDI0NywgMjA5LCAzMywgMywgMSwgMjEzLCAxOSwgMiwgMjQ3LCAyMDksIDMzLCAKLSAgICA2LCAxLCAyNDIsIDIxMywgMiwgMjE5LCA0NSwgMjQsIDEwMSwgMzMsIDMsIDEsIDI0MiwgMjEzLCAyLCAyMTksIDQ1LCAyNCwgCi0gICAgMTAxLCAzMywgNiwgMSwgMjQyLCAzMCwgMiwgMTAxLCAzMywgMywgMSwgMjQyLCAzMCwgMiwgMTAxLCAzMywgNiwgMSwgMjQyLCAKLSAgICAzMCwgMiwgOTAsIDMzLCAzLCAxLCAyNDIsIDMwLCAyLCA5MCwgMzMsIDYsIDEsIDIzNCwgMjMsIDI0OCwgNDEsIDMzLCAzLCAKLSAgICAxLCAyMzQsIDIzLCAyNDgsIDQxLCAzMywgNiwgMSwgMjM0LCAyMywgMjQ3LCAxMTQsIDMzLCAzLCAxLCAyMzQsIDIzLCAyNDcsIAotICAgIDExNCwgMzMsIDYsIDEsIDIzNCwgMjMsIDIxMiwgMjAsIDMzLCAzLCAxLCAyMzQsIDIzLCAyMTIsIDIwLCAzMywgNiwgMSwgCi0gICAgMjM0LCAyMywgMjQ1LCAyNDEsIDMzLCAzLCAxLCAyMzQsIDIzLCAyNDUsIDI0MSwgMzMsIDYsIDEsIDIzNCwgMjMsIDIzMiwgCi0gICAgMjE2LCAzMywgMywgMSwgMjM0LCAyMywgMjMyLCAyMTYsIDMzLCA2LCAxLCAyMzQsIDIzLCAyMjksIDksIDMzLCAzLCAxLCAKLSAgICAyMzQsIDIzLCAyMjksIDksIDMzLCA2LCAxLCAyMzQsIDIzLCAyMjAsIDM3LCAzMywgMywgMSwgMjM0LCAyMywgMjIwLCAzNywgCi0gICAgMzMsIDYsIDEsIDIzNCwgMjMsIDIxNywgMTMsIDMzLCAzLCAxLCAyMzQsIDIzLCAyMTcsIDEzLCAzMywgNiwgMSwgMjIzLCAKLSAgICAyMDIsIDIxMiwgODcsIDMzLCAzLCAxLCAyMjMsIDIwMiwgMjEyLCA4NywgMzMsIDYsIDEsIDI0NSwgMTMyLCAyLCAxMDEsIAotICAgIDMzLCAzLCAxLCAyNDUsIDEzMiwgMiwgMTAxLCAzMywgNiwgMSwgMjMzLCAyNSwgMzMsIDMsIDEsIDIzMywgMjUsIDMzLCA2LCAKLSAgICAxLCAyMjMsIDE5MiwgMzMsIDMsIDEsIDIyMywgMTkyLCAzMywgNiwgMSwgMjEzLCA4MCwgMzMsIDMsIDEsIDIxMywgODAsIAotICAgIDMzLCA2LCAxLCAyMjQsIDIzMiwgMzMsIDMsIDEsIDIyNCwgMjMyLCAzMywgNiwgMSwgMjE0LCA2LCAzMywgMywgMSwgMjE0LCAKLSAgICA2LCAzMywgNiwgMSwgMjU0LCA3NSwgMTgxLCAzMywgMywgMSwgMjU0LCA3NSwgMTgxLCAzMywgNiwgMSwgMjQ1LCAxMzIsIDIsIAotICAgIDIzMSwgMzcsIDEwMSwgMzMsIDMsIDEsIDI0NSwgMTMyLCAyLCAyMzEsIDM3LCAxMDEsIDMzLCA2LCAxLCAyNDUsIDEwOSwgMiwgCi0gICAgMjMxLCAzNywgMTAxLCAzMywgMywgMSwgMjQ1LCAxMDksIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDYsIDEsIDIyNiwgOTcsIDIsIAotICAgIDI0NywgMjQ2LCAzMywgMywgMSwgMjI2LCA5NywgMiwgMjQ3LCAyNDYsIDMzLCA2LCAxLCAyMjAsIDIxNCwgMiwgMjQ3LCAKLSAgICAyNDYsIDMzLCAzLCAxLCAyMjAsIDIxNCwgMiwgMjQ3LCAyNDYsIDE0MSwgNiwgMSwgMjUzLCA4MCwgMTQxLCA2LCAxLCAyNTEsIAotICAgIDIxNiwgMTQxLCA2LCAxLCAyNDIsIDE3OSwgMTQxLCA2LCAxLCAyNDgsIDE2NCwgMTQxLCA2LCAxLCAyNDUsIDE2OSwgMTQxLCAKLSAgICA2LCAxLCAyMTIsIDEwOSwgMTQxLCA2LCAxLCAyNDUsIDE1NCwgMTQxLCA2LCAxLCAyNDUsIDMwLCAxNDEsIDYsIDEsIDEwOCwgCi0gICAgMTQxLCA2LCAxLCAyMTIsIDY3LCAxNDEsIDYsIDEsIDIzNSwgMjI0LCAxNDEsIDYsIDEsIDIzMiwgMjE5LCAxNDEsIDYsIDEsIAotICAgIDIxMywgMTQ4LCAxNDEsIDYsIDEsIDI1MCwgMjE5LCAxNDEsIDYsIDEsIDIzNCwgMTcxLCAxNDEsIDYsIDEsIDI0MSwgNTQsIAotICAgIDE0MSwgNiwgMSwgMjM1LCAxMzksIDE0MSwgNiwgMSwgMjQyLCAyMjIsIDE0MSwgNiwgMSwgMjUwLCA2MiwgMTQxLCA2LCAxLCAKLSAgICAyMzEsIDEyMiwgMTQxLCA2LCAxLCAyMTIsIDI1NSwgMTQxLCA2LCAxLCAyMjgsIDE1MCwgMTQxLCA2LCAxLCAyMjEsIDI0LCAKLSAgICAxNDEsIDYsIDEsIDIxNCwgMTE5LCAxNDEsIDYsIDEsIDI1MCwgOTIsIDE0MSwgNiwgMSwgMjI2LCA4MCwgMTQxLCA2LCAxLCAKLSAgICAyMzUsIDExMiwgMTQxLCA2LCAxLCAyMDMsIDE0MSwgNiwgMSwgMjIyLCA4MCwgMTQxLCA2LCAxLCAyMTQsIDE1NiwgMTQxLCAKLSAgICA2LCAxLCAyMTcsIDE1LCAxNDEsIDYsIDEsIDIyMywgMjQ1LCAxNDEsIDYsIDEsIDI0OSwgMTc1LCAxNDEsIDYsIDEsIDIxMiwgCi0gICAgMjQwLCAxNDEsIDYsIDEsIDIyNSwgMTc4LCAxNDEsIDYsIDEsIDIzNCwgMTgyLCAxNDEsIDYsIDEsIDIyNywgODgsIDE0MSwgCi0gICAgNiwgMSwgMjQ0LCAxMTEsIDE0MSwgNTksIDEsIDQyLCAxNTEsIDIyMywgMTMwLCAxNDEsIDI1MywgMjI2LCAxNDEsIDI0NSwgCi0gICAgMTEyLCA3NywgMTQxLCAyNDQsIDI1NCwgNzcsIDE0MSwgMjQ5LCAxNTcsIDE0MSwgMjI0LCAxNTgsIDc3LCAxNDEsIDI1NCwgCi0gICAgMTgxLCA3NywgMTQxLCAzLCAxLCAyNTMsIDgwLCAxNDEsIDMsIDEsIDI1MSwgMjE2LCAxNDEsIDMsIDEsIDI0MiwgMTc5LCAKLSAgICAxNDEsIDMsIDEsIDI0OCwgMTY0LCAxNDEsIDMsIDEsIDI0NSwgMTY5LCAxNDEsIDMsIDEsIDIxMiwgMTA5LCAxNDEsIDMsIDEsIAotICAgIDI0NSwgMTU0LCAxNDEsIDMsIDEsIDI0NSwgMzAsIDE0MSwgMywgMSwgMTA4LCAxNDEsIDMsIDEsIDIxMiwgNjcsIDE0MSwgMywgCi0gICAgMSwgMjM1LCAyMjQsIDE0MSwgMywgMSwgMjMyLCAyMTksIDE0MSwgMywgMSwgMjEzLCAxNDgsIDE0MSwgMywgMSwgMjUwLCAKLSAgICAyMTksIDE0MSwgMywgMSwgMjM0LCAxNzEsIDE0MSwgMywgMSwgMjQxLCA1NCwgMTQxLCAzLCAxLCAyMzUsIDEzOSwgMTQxLCAKLSAgICAzLCAxLCAyNDIsIDIyMiwgMTQxLCAzLCAxLCAyNTAsIDYyLCAxNDEsIDMsIDEsIDIzMSwgMTIyLCAxNDEsIDMsIDEsIDIxMiwgCi0gICAgMjU1LCAxNDEsIDMsIDEsIDIyOCwgMTUwLCAxNDEsIDMsIDEsIDIyMSwgMjQsIDE0MSwgMywgMSwgMjE0LCAxMTksIDE0MSwgCi0gICAgMywgMSwgMjUwLCA5MiwgMTQxLCAzLCAxLCAyMjYsIDgwLCAxNDEsIDMsIDEsIDIzNSwgMTEyLCAxNDEsIDMsIDEsIDIwMywgCi0gICAgMTQxLCAzLCAxLCAyMjIsIDgwLCAxNDEsIDMsIDEsIDIxNCwgMTU2LCAxNDEsIDMsIDEsIDIxNywgMTUsIDE0MSwgMywgMSwgCi0gICAgMjIzLCAyNDUsIDE0MSwgMywgMSwgMjQ5LCAxNzUsIDE0MSwgMywgMSwgMjEyLCAyNDAsIDE0MSwgMywgMSwgMjI1LCAxNzgsIAotICAgIDE0MSwgMywgMSwgMjM0LCAxODIsIDE0MSwgMywgMSwgMjI3LCA4OCwgMTQxLCAzLCAxLCAyNDQsIDExMSwgMTQxLCAzLCAyNiwgCi0gICAgMjQ1LCAxNzAsIDIxMiwgMjQwLCAxNDEsIDI0MywgMjAwLCAyMTksIDY5LCAxNDEsIDI0MCwgMTYwLCA5MywgMjU0LCAxNzUsIAotICAgIDI0NSwgMjMsIDkzLCAyNTQsIDE3NSwgMjIyLCA4MSwgOTMsIDI1NCwgMTc1LCAyMjEsIDExLCA5MywgMjU0LCAxNzUsIDIxMiwgCi0gICAgOTcsIDIyNCwgMjE1LCA5MywgMjU0LCAxNzUsIDIxMiwgOTcsIDI0MywgMTAwLCA5MywgMjU0LCAxNzUsIDIxNywgMjgsIDkzLCAKLSAgICAyNTQsIDE3NSwgMjIzLCAyMDAsIDkzLCAyNTQsIDE3NSwgMjEyLCA5NiwgOTMsIDI1NCwgMTc1LCAyMjYsIDExOCwgOTMsIAotICAgIDI1NCwgMTc1LCAyMTMsIDExLCA5MywgMjU0LCAxNzUsIDIxNywgMTY3LCA5MywgMjU0LCAxNzUsIDI0MywgMTcsIDkzLCAKLSAgICAyNTQsIDE3NSwgMjQzLCAxOCwgMjMwLCAxMzksIDkzLCAyNTQsIDE3NSwgMjQzLCAxNSwgOTMsIDI1NCwgMTc1LCAyMjQsIAotICAgIDIxNiwgMjI2LCAxNDQsIDkzLCAyNTQsIDE3NSwgMjE3LCAyMDYsIDI0MywgMzIsIDkzLCAyNTQsIDE3NSwgMjI2LCAxMDAsIAotICAgIDkzLCAyNTQsIDE3NSwgMjUzLCAxMTYsIDI0MiwgMjIsIDkzLCAyNTQsIDE3NSwgMjMwLCAxNDksIDkzLCAyNTQsIDE3NSwgCi0gICAgMjMyLCAxMywgOTMsIDI1NCwgMTc1LCAyMzEsIDExMywgOTMsIDI1NCwgMTc1LCAyMzEsIDExNCwgMjM0LCAxODMsIDkzLCAKLSAgICAyNTQsIDE3NSwgMjQ4LCAxMDgsIDkzLCAyNTQsIDE3NSwgMjI0LCAyMjcsIDkzLCAyNTQsIDE3NSwgMjE3LCAyMDYsIDIyNCwgCi0gICAgMjExLCA5MywgMjU0LCAxNzUsIDIxMywgMjEsIDI1MSwgMjE3LCAyMTIsIDIyMSwgOTMsIDI1NCwgMTc1LCAyMjcsIDczLCAKLSAgICA5MywgMjU0LCAxNzUsIDIzNiwgMTQsIDkzLCAyNTQsIDE3NSwgMjQ4LCAyMSwgOTMsIDI1NCwgMTc1LCAyMTIsIDI2LCA5MywgCi0gICAgMTUyLCAyMzEsIDIwNiwgMjQ5LCAyMjgsIDkzLCAyMjUsIDE0NSwgMjIwLCAyMTYsIDkzLCAyMjUsIDE0NSwgMjQxLCAyMzMsIAotICAgIDIyMiwgODEsIDkzLCAyMjUsIDE0NSwgMjQxLCAyMzMsIDIyNiwgMTEyLCA5MywgMjI1LCAxNDUsIDI0MSwgMjMzLCAyMjQsIAotICAgIDIyMCwgOTMsIDIyNSwgMTQ1LCAyNDEsIDE0NCwgOTMsIDIyNSwgMTQ1LCAyMTYsIDEzNCwgOTMsIDIyNSwgMTQ1LCAyMjIsIAotICAgIDgxLCA5MywgMjI1LCAxNDUsIDIyNiwgMTEyLCA5MywgMjI1LCAxNDUsIDIyNCwgMjIwLCA5MywgMjI1LCAxNDUsIDI0MSwgCi0gICAgNDcsIDkzLCAyMjUsIDE0NSwgMjQxLCA0OCwgMjQxLCAyMzUsIDMxLCAyMTQsIDIzNiwgOTMsIDIyNSwgMTQ1LCAyMjQsIAotICAgIDE2MiwgOTMsIDIyNSwgMTQ1LCAyNDgsIDE1MSwgMTY3LCAyMzEsIDIzNCwgOTMsIDIyNSwgMTQ1LCAyMzEsIDEwNSwgOTMsIAotICAgIDIyNSwgMjcsIDIzMSwgMjMxLCA5MywgMjI1LCAxNDUsIDIyNCwgNTksIDkzLCAyMjUsIDI3LCAyMjYsIDEyMCwgOTMsIDIyNSwgCi0gICAgMTQ1LCAyMjAsIDIwMSwgMjQ3LCA3NCwgOTMsIDIyNSwgMTQ1LCAyMjAsIDg1LCAyNDcsIDc0LCA5MywgMjI1LCAyNywgMjE5LCAKLSAgICAyMzcsIDIyNiwgMTE0LCA5MywgMTUyLCAyMTUsIDEzMSwgMjQ3LCA3NCwgOTMsIDE1MiwgMjMyLCAxNjMsIDI0NywgNzQsIAotICAgIDkzLCAyMjUsIDI3LCAyMjgsIDUxLCAyNDIsIDIxLCA5MywgMjI1LCAxNDUsIDIyNCwgMjIxLCAyMjQsIDIxNSwgOTMsIDEsIAotICAgIDI1NCwgNzgsIDkzLCAxLCAyNTEsIDIwNSwgOTMsIDEsIDI0MiwgMTc3LCA5MywgMSwgMjQ4LCAxMzQsIDkzLCAxLCAyNDEsIAotICAgIDIyMiwgOTMsIDEsIDIxNCwgMjM2LCA5MywgMSwgMjEyLCA5MCwgOTMsIDEsIDI0MSwgMTgyLCA5MywgMSwgMjE3LCAxODMsIAotICAgIDkzLCAxLCAyMTIsIDIyNCwgOTMsIDEsIDQwLCAyMzQsIDI1NCwgOTMsIDEsIDIzNCwgMjU0LCA5MywgMSwgMjMzLCAxMTgsIAotICAgIDkzLCAxLCA0MCwgMjMxLCAxMjksIDkzLCAxLCAyMzEsIDEyOSwgOTMsIDEsIDQwLCAyMjgsIDUwLCA5MywgMSwgMjI4LCA1MCwgCi0gICAgOTMsIDEsIDIyMiwgMTY0LCA5MywgMSwgMjUzLCA3OCwgOTMsIDEsIDQwLCAyMjYsIDk2LCA5MywgMSwgMjI2LCA5NiwgOTMsIAotICAgIDEsIDQwLCAyMTYsIDEzNywgOTMsIDEsIDIxNiwgMTM3LCA5MywgMSwgMjI0LCAxODQsIDkzLCAxLCAyMjMsIDIxOSwgOTMsIAotICAgIDEsIDIyMCwgMjAwLCA5MywgMSwgMjE3LCAyNDUsIDkzLCAyNiwgMjEyLCAyNTMsIDUxLCAyMTQsIDIzNiwgOTMsIDI2LCAKLSAgICAyMTIsIDI1MywgMjE0LCAyMzcsIDIxMiwgMjI0LCA5MywgMjYsIDIxMiwgMjUzLCA1MSwgMjEyLCAyMjQsIDkzLCAyMjUsIAotICAgIDI3LCAyNDMsIDE3LCA5MywgMjI1LCAyNywgMjQzLCAxNSwgMTIsIDUwLCA1MiwgMTIsIDUsIDIyMiwgMTU4LCAxMiwgMjQzLCAKLSAgICAyNTUsIDIzMSwgMjE3LCAxMiwgNSwgMjIyLCAxOTIsIDI1MywgMjA3LCAyNDksIDUwLCAyMjMsIDk1LCAyNTMsIDIwNywgCi0gICAgMjQzLCAyMzAsIDIyMywgOTUsIDEyLCAyMjQsIDI3LCAyNTMsIDIwNywgMjI2LCA1OCwgMjMxLCA2LCA1MiwgMjUzLCAyMDcsIAotICAgIDIyNiwgNTgsIDIxNywgMjAxLCAyMTcsIDEwMSwgNTIsIDI1NCwgMTI2LCA1MiwgMTIsIDI0OSwgMTU3LCAxMiwgMjQ4LCA5NiwgCi0gICAgMjIxLCA1NywgMTIsIDIyNSwgMTQ3LCAyMTQsIDIxOCwgNTIsIDEyLCA1LCAyMzAsIDI0MywgMTIsIDUsIDIyMiwgMTc0LCAKLSAgICAyNTQsIDgwLCAyMTQsIDI5LCAxMiwgNSwgMjU0LCA4MCwgMjUzLCAxMzcsIDEyLCA1LCAyMjQsIDU4LCAyNTQsIDc5LCAxMiwgCi0gICAgNSwgMjI0LCA2NSwgMjU0LCA2MSwgMjU0LCAxNCwgMTIsIDUsIDIxOCwgMjAsIDEyLCAzLCAxMjQsIDIxOCwgMjksIDEyLCAzLCAKLSAgICAxMjQsIDI2LCAxMDYsIDIsIDIzMywgMTI3LCAyLCAyMTMsIDM0LCAxMiwgMywgMTI0LCAyMTIsIDEwMSwgMTIsIDMsIDI0NCwgCi0gICAgMTMzLCAxMiwgMywgMjQ4LCAxMjksIDEyLCAzLCAyMzQsIDIxMCwgMTIsIDIyMSwgNzAsIDEyLCAyMTYsIDE2OSwgNjIsIAotICAgIDIyNSwgMjcsIDc3LCAxMiwgMjI0LCAxNTgsIDc3LCAxMiwgMSwgMjM0LCAyMTQsIDIxMywgMzQsIDEyLCAxLCAyNDIsIDIsIAotICAgIDEyLCAxLCAxMDYsIDIsIDIzMiwgMzMsIDQ5LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDQ5LCAxMiwgMSwgMjE0LCAxNSwgMiwgCi0gICAgMTkyLCA0OSwgMTIsIDEsIDEwNiwgMiwgMTkyLCA1NSwgMTIsIDEsIDczLCAyLCAxOTIsIDQ5LCAxMiwgMSwgMjU0LCA3OCwgCi0gICAgMTIsIDEsIDI1MSwgMjMwLCAxMiwgMSwgMjE3LCAyMTYsIDIzMSwgMjI3LCAxMiwgMSwgMjE3LCAyMTUsIDEyLCAxLCAyMTcsIAotICAgIDE0NSwgMTIsIDEsIDIzNSwgMTI0LCAxMiwgMSwgMjQyLCAxOCwgMTIsIDEsIDIzNCwgMTM1LCAxMiwgMSwgMjQ4LCAxNDAsIAotICAgIDEyLCAxLCAyMTcsIDE1NSwgMTIsIDEsIDIyMywgMjQ1LCAxMiwgMSwgMjEyLCAxMDEsIDEyLCAxLCAyMjIsIDg1LCAxMiwgMSwgCi0gICAgMjIwLCAyMzksIDEyLCAxLCAyMjIsIDE5NSwgMTIsIDEsIDI0OCwgMTU5LCAxMiwgMSwgMjE4LCAyOSwgMTIsIDEsIDIxMiwgCi0gICAgMTA0LCAxMiwgMSwgMjU0LCAxMDMsIDEyLCAxLCAyNDIsIDIyMCwgMTIsIDEsIDIzNCwgMTgxLCAyLCAxMTcsIDE3NiwgNDksIAotICAgIDEyLCAxLCAyMzQsIDE4MSwgMiwgMTMzLCAxNzYsIDU1LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCAyLCAyMzUsIDE5MSwgMjE1LCAKLSAgICA3OSwgMTIsIDEsIDI0NCwgMTM2LCA3MywgMiwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCAyLCAxMzMsIAotICAgIDE3NiwgNDksIDEyLCAyMTcsIDI1MCwgMTIsIDEsIDI0NCwgMTExLCAxMiwgMSwgMjI0LCAyMjUsIDEyLCAxLCAyMzQsIDI1NCwgCi0gICAgMTIsIDEsIDIzMywgMTI2LCAxMiwgMSwgMjMxLCAxNDMsIDEyLCAxLCAyMjgsIDE3MywgMTIsIDEsIDI0MSwgMjAyLCAxMiwgCi0gICAgMSwgMjE0LCAxNCwgMTIsIDEsIDEwNiwgMjMxLCAyNTUsIDEyLCAxLCAyMTMsIDM0LCAxMiwgMjQ0LCAxMzEsIDEyLCAyNDgsIAotICAgIDEyNywgMTIsIDIzNCwgMjA4LCAxMiwgMjQ0LCAxMzMsIDEyLCAyNDgsIDEyOSwgMTIsIDIzNCwgMjEwLCAxMiwgMjIxLCAxNSwgCi0gICAgMTIsIDIxOCwgMjQ2LCAxMiwgMjMyLCAzMSwgNDksIDEyLCAxOTIsIDQ5LCAxMiwgMTkyLCA1NSwgMTIsIDIxOSwgMTAsIAotICAgIDI1NCwgNzgsIDEyLCAyMzUsIDE5MSwgMjQ4LCAxMjksIDEyLCAxNTIsIDIyOCwgMTc0LCAyNDIsIDE5NCwgMTIsIDIxMSwgCi0gICAgMjUwLCAxMiwgMzAsIDUsIDMsIDIxNSwgODAsIDQ5LCAxMiwgMzAsIDUsIDIzNSwgMTkxLCAzLCAyMTUsIDgwLCA0OSwgMTIsIAotICAgIDMwLCA1LCA2MiwgNTUsIDEyLCAyMjMsIDIwMiwgMjQ4LCAxMjksIDEyLCAyNDQsIDEzNCwgMiwgMTE3LCAyNDcsIDcyLCAxMiwgCi0gICAgMjE0LCAxNiwgMTkyLCA1NSwgMjUzLCAyMDcsIDIxLCAyMTIsIDc5LCAyNTMsIDIwNywgMjEsIDExNiwgMjUzLCAyMDcsIDIxLCAKLSAgICAxMDksIDI1MywgMjA3LCAyMSwgMTY2LCAyNTMsIDIwNywgMjEsIDE2MywgMjUzLCAyMDcsIDIxLCAxODAsIDI1MywgMjA3LCAKLSAgICAyMSwgMTg5LCAyNTMsIDIwNywgMjEsIDE5OCwgMjUzLCAyMDcsIDIxLCAxOTUsIDI1MywgMjA3LCAyMSwgMjAwLCAxMiwgCi0gICAgMjI2LCA1NywgNTIsIDEyLCAyNDgsIDM0LCAyMjEsIDU3LCAxMiwgMjE3LCA5OSwgMjIxLCA1NywgMTIsIDI0NCwgNTAsIAotICAgIDIyNSwgMTQzLCAyMTksIDk1LCAxMiwgMSwgMjQ3LCA3MywgMjUxLCAyMzAsIDEyLCAxLCAyNDcsIDczLCAyMjQsIDIyNSwgCi0gICAgMTIsIDEsIDIxOCwgMjIzLCAyNTQsIDc4LCAxMiwgMSwgMTA2LCAyMTQsIDMwLCAxMiwgMSwgMTA2LCAyLCAyMTQsIDE2LCAKLSAgICAxOTIsIDQ5LCAxMiwgMSwgMTA2LCAyLCAyMTQsIDE2LCAxOTIsIDU1LCAxMiwgMSwgMTI0LCAyNDIsIDIsIDEyLCAxLCAxMjQsIAotICAgIDE5MiwgMjU0LCA3OCwgMTIsIDEsIDEyNCwgMTkyLCAyMTQsIDE0LCAxMiwgMSwgMTExLCAyLCAxOTIsIDQ5LCAxMiwgMSwgCi0gICAgMTI0LCAxOTIsIDIxMywgMzQsIDEyLCAxLCAyMTYsIDEwOSwgMTIsIDEsIDIxNiwgMTA3LCAxMiwgMSwgMjUxLCAyNDAsIDEyLCAKLSAgICAxLCAyMTcsIDIxNiwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyMTcsIDIxNiwgMiwgMTMzLCAxNzYsIDc4LCAyNDYsIDU3LCAxMiwgCi0gICAgMSwgMjI2LCA4MCwgMTIsIDEsIDIxNywgMjEzLCAxMiwgMSwgMjUxLCAyMjgsIDEyLCAxLCAxMjEsIDIsIDE5MiwgNDksIDEyLCAKLSAgICAxLCAxMjEsIDIsIDExNywgMTc2LCA3MSwgNDksIDEyLCAxLCAyMjgsIDE0LCAxMiwgMSwgMjQ1LCAyNTQsIDEyLCAxLCAxMjEsIAotICAgIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDIxNywgMjMzLCAxMiwgMSwgMjE3LCAyMzEsIDEyLCAxLCAyNDgsIDgxLCAxMiwgMSwgCi0gICAgMjQ4LCAxNDEsIDIsIDIyMywgMTMwLCAxMiwgMSwgMjQ4LCAxNDEsIDIsIDYyLCA1NSwgMTIsIDEsIDI0OCwgMTQxLCAyLCAKLSAgICA2MiwgMjUxLCAyMjAsIDI0LCAzLCAyMTgsIDI5LCAxMiwgMSwgMjQ4LCAxNDYsIDEyLCAxLCAyNDgsIDgzLCAxMiwgMSwgCi0gICAgMjQ2LCAyNSwgMTIsIDEsIDI0OCwgMTQxLCAyLCAxMzMsIDE3NiwgNzgsIDI0NiwgNTcsIDEyLCAxLCAyNDgsIDE0MSwgMiwgCi0gICAgMjQzLCAyMzcsIDE3NiwgNDksIDEyLCAxLCAyMjMsIDc3LCAxMiwgMSwgMjIzLCAyNDYsIDIsIDMsIDIxNSwgNzksIDEyLCAxLCAKLSAgICAyMjMsIDI0NiwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyMjMsIDI0NiwgMiwgNjIsIDU1LCAxMiwgMSwgMjIzLCAyNDYsIDIsIDMsIAotICAgIDIxNSwgODAsIDU1LCAxMiwgMSwgMjIzLCAyNDYsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDYyLCA0OSwgMTIsIDEsIDIyMywgCi0gICAgMjQ2LCAyLCAxMTcsIDE3NiwgNDksIDEyLCAxLCAyMzUsIDEyMSwgMTIsIDEsIDIyMywgMjQ2LCAyLCAyNDMsIDIzNywgMTc2LCAKLSAgICA0OSwgMTIsIDEsIDIyMiwgODYsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDYyLCA0OSwgMTIsIDEsIDIyMiwgODYsIDIsIDEzMywgCi0gICAgMTc2LCA1NSwgMTIsIDEsIDIyMiwgODYsIDIsIDEzMywgMTc2LCAyNTEsIDIyMCwgMjQsIDEzMywgMTc2LCA0OSwgMTIsIDEsIAotICAgIDIyMiwgMTk2LCAyLCAxMTcsIDE3NiwgNTUsIDEyLCAxLCAyMjIsIDE5NiwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjE4LCAKLSAgICAzMCwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjU0LCAxMDQsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDI0NywgNzMsIAotICAgIDI0NCwgMTExLCAxMiwgMSwgMjQ0LCAxMTIsIDIsIDYyLCAyMzAsIDE3OSwgNTUsIDEyLCAxLCAyNDQsIDExMiwgMiwgNjIsIAotICAgIDU1LCAxMiwgMSwgMjE0LCAyMjUsIDEyLCAxLCAyNDQsIDExMiwgMiwgMTMzLCAxNzYsIDU1LCAxMiwgMSwgMjI2LCA3OCwgCi0gICAgMTIsIDEsIDIyNCwgMjI2LCAyLCA2MiwgNDksIDEyLCAxLCAyMjQsIDIyNiwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjM0LCAKLSAgICAxODAsIDEyLCAxLCAyMTgsIDE5NSwgMjM0LCAyNTQsIDEyLCAxLCAyMzQsIDI1NSwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyMzQsIAotICAgIDI1NSwgMiwgNjIsIDQ5LCAxMiwgMSwgMjI5LCAxNjEsIDEyLCAxLCAyMzQsIDI1NSwgMiwgMTMzLCAxNzYsIDU1LCAxMiwgMSwgCi0gICAgMjQzLCA5NywgMTIsIDEsIDI0MywgOTgsIDIsIDIyMywgMTMwLCAxMiwgMSwgMjI5LCA4OCwgMTIsIDEsIDI0MywgOTgsIDIsIAotICAgIDExNywgMTc2LCA1NSwgMTIsIDEsIDI0MiwgODIsIDEyLCAxLCAyNDMsIDk4LCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAKLSAgICAyMzMsIDEyNywgMiwgMywgMjE1LCA3OSwgMTIsIDEsIDIzMywgMTI3LCAyLCA2MiwgNDksIDEyLCAxLCAyMzMsIDEyNywgMiwgCi0gICAgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjMzLCAxMjcsIDIsIDEzMywgMTc2LCA1NSwgMTIsIDEsIDIyOCwgMTc0LCAyLCA2MiwgCi0gICAgNTUsIDEyLCAxLCAyMjgsIDE3NCwgMjQyLCAxOTQsIDEyLCAxLCAyMjMsIDExNSwgMTIsIDEsIDIyOCwgMTc0LCAyLCAyMjMsIAotICAgIDEzMCwgMTIsIDEsIDIyOCwgMTc0LCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyNDEsIDIwMywgMjQ3LCA5NSwgMTIsIDEsIAotICAgIDIxNywgMjM0LCAyLCA2MiwgNDksIDEyLCAxLCAyNDEsIDIwMywgMiwgNzMsIDQ5LCAxMiwgMSwgMjQxLCAyMDMsIDI0MiwgCi0gICAgMTQ3LCAxMiwgMSwgMjQxLCAyMDMsIDI0MiwgMTQ4LCAyLCAxOTIsIDQ5LCAxMiwgMSwgMjE3LCAyMTYsIDIzMSwgMjI4LCAKLSAgICAyNDIsIDE0NywgMTIsIDEsIDIxNCwgMTUsIDIsIDIyMywgMTMwLCAxMiwgMSwgMjM0LCA4MiwgMjI3LCA5OSwgMTIsIDEsIAotICAgIDIyNywgOTksIDEyLCAxLCA2OSwgMTIsIDEsIDIxMiwgMjAzLCAxMiwgMSwgMjM0LCA4MiwgMjEyLCAyMDMsIDEyLCAxLCAKLSAgICAyMTQsIDE1LCAyLCAxMTcsIDE3NiwgNDksIDEyLCAxLCAyMTQsIDIzMiwgMTIsIDEsIDI0NCwgMTM2LCAyMTMsIDM0LCAxMiwgCi0gICAgMSwgNzMsIDIsIDIxOCwgMjcsIDEyLCAxLCA3MywgMiwgMywgMjE1LCA3OSwgMTIsIDEsIDIxNCwgMTUsIDIsIDYyLCA0OSwgCi0gICAgMTIsIDEsIDc0LCAxMiwgMSwgNzMsIDIsIDEzMywgMTc2LCA1NSwgMTIsIDEsIDczLCAyNTIsIDUyLCAxMiwgMSwgNzMsIAotICAgIDI1MiwgNTMsIDIsIDE5MiwgNDksIDEyLCAyNDMsIDIwMCwgMjE5LCA2OSwgMTIsIDEsIDI1NCwgMTQ4LCAxMiwgMywgMTI0LCAKLSAgICAyNiwgMjIyLCAxOTYsIDIsIDIzMywgMTI3LCAyLCAxMDYsIDIzMSwgMjU1LCAxMiwgMywgMTI0LCAyNiwgMjI0LCAyMjYsIDIsIAotICAgIDIzMywgMTI3LCAyLCAxMDYsIDIzMSwgMjU1LCAxMiwgMywgMTI0LCA2MywgNzAsIDE3LCAxMiwgMywgMTI0LCAyMzMsIDEyNywgCi0gICAgMjU0LCA3OCwgMTIsIDMsIDEyNCwgMjM1LCAxMjQsIDEyLCAzLCAxMjQsIDEzMywgMjQ3LCA3MiwgMTIsIDMsIDEyNCwgMjIyLCAKLSAgICA4NSwgMTIsIDI0NSwgMTAxLCA2NSwgMjUzLCA4MiwgMTIsIDIxOSwgOTEsIDY1LCAyMjMsIDQ5LCAyNDUsIDEzMiwgMjQxLCAKLSAgICAxNDEsIDEyLCAzLCAxMjQsIDIyMywgODUsIDIxMiwgNzksIDEyLCAzLCAxMjQsIDIxNSwgMTMwLCAyMjQsIDgsIDIxMiwgNzksIAotICAgIDEyLCAzLCAxMjQsIDI0NywgNzMsIDI0MSwgMjIwLCA2NSwgMjM0LCAxMzUsIDEyLCAzLCAxMjQsIDYzLCA0OCwgMTcsIDEyLCAKLSAgICAzLCAxMTUsIDIyMiwgODUsIDEyLCAzLCAxMjQsIDIzMiwgMzIsIDEyLCAzLCAyMTQsIDE0LCAxMiwgMywgMjEzLCAzNCwgMTIsIAotICAgIDMsIDEyNCwgMjEzLCAzNCwgMTIsIDMsIDEyNCwgMjI4LCAxNzMsIDEyLCAyMjUsIDE3MywgNjUsIDIyMiwgMTg0LCAxMiwgCi0gICAgMjQ1LCAxMTAsIDI1MCwgMTA5LCAxMTUsIDIxOSwgNjksIDEyLCAyNDUsIDExMCwgMjUwLCAxMDksIDEyNCwgMjE5LCA2OSwgCi0gICAgMTIsIDIyMywgODUsIDEyNCwgMjE5LCA3MCwgMiwgMjQ0LCA3MywgMjUwLCAxMDgsIDEyLCAzLCAxMTUsIDIzMSwgMTQzLCAKLSAgICAxMiwgMSwgMjQ4LCAxNDEsIDIsIDIzNSwgMTkxLCAyMTUsIDc5LCAxMiwgMSwgMjIzLCAyNDYsIDIsIDIzNSwgMTkxLCAyMTUsIAotICAgIDc5LCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAyMTIsIDc5LCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMTYsIDI0NCwgCi0gICAgMjQ2LCAyNTMsIDIwNywgMjEsIDEwOSwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTY2LCAyNDQsIDI0NiwgMjUzLCAyMDcsIAotICAgIDIxLCAxNjMsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDE4MCwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTg5LCAyNDQsIAotICAgIDI0NiwgMjUzLCAyMDcsIDIxLCAxOTgsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDE5NSwgMjQ0LCAyNDYsIDI1MywgMjA3LCAKLSAgICAyMSwgMjAwLCAxMiwgMSwgMjIwLCAyNDAsIDIsIDYyLCA1NSwgMTIsIDEsIDI0OCwgMTYwLCAyLCA2MiwgNTUsIDEyLCAxLCAKLSAgICAyNDIsIDIyMSwgMiwgNjIsIDU1LCAxMiwgNSwgMjIwLCA4NCwgMjU0LCAzNSwgMTIsIDUsIDIyMCwgODQsIDIyNSwgMTE1LCAKLSAgICAyMzEsIDEyMiwgMTIsIDEsIDI0MSwgMjAzLCAyLCAyMzUsIDE5MSwgMjE1LCA3OSwgMTc1LCAyNDUsIDEwMSwgNjUsIDIyNiwgCi0gICAgMTQyLCAxNzUsIDIxOCwgMjE5LCAyNDMsIDIwMCwgMjE5LCA2OSwgMTc1LCAyMTksIDEyLCAyNDMsIDIwMCwgMjE5LCA2OSwgCi0gICAgMTc1LCAyMTgsIDIxOSwgMjQ5LCAxNjQsIDE3NSwgMjE5LCAxMiwgMjQ5LCAxNjQsIDE3NSwgMTk5LCAyNDksIDE2NCwgMTc1LCAKLSAgICAyNDksIDE2NSwgMjIwLCAzNCwgMjMzLCA3MCwgMTc1LCAyNDksIDE2NSwgMjIwLCAzNCwgMjIzLCAxNDgsIDE3NSwgMjE4LCAKLSAgICAyMTksIDI0OSwgMTY1LCAyMjAsIDM0LCAyMzMsIDcwLCAxNzUsIDIxOSwgMTIsIDI0OSwgMTY1LCAyMjAsIDM0LCAyMjMsIAotICAgIDE0OCwgMTc1LCAyNDksIDExOSwgMTc1LCAyNDEsIDI0MCwgMjI3LCAxMTQsIDE3NSwgMjQxLCAyNDAsIDIzMSwgMTAzLCAKLSAgICAxNzUsIDI0MSwgMjQwLCAyNTMsIDEzNCwgMTc1LCAyNTQsIDE4MSwgNzcsIDE3NSwgMSwgMjU0LCA4MiwgMTc1LCAxLCAyMTgsIAotICAgIDIyMywgMjU0LCA4MiwgMTc1LCAxLCAyNTEsIDIwMiwgMTc1LCAxLCAyNDMsIDg5LCAxNzUsIDEsIDI0MywgOTAsIDI0MywgCi0gICAgNjcsIDE3NSwgMSwgMjQ4LCAxMzcsIDE3NSwgMSwgMjQ3LCA3MywgMjQ4LCAxMzgsIDIyMywgMTI2LCAxNzUsIDEsIDI0MSwgCi0gICAgMjIyLCAxNzUsIDEsIDIxNCwgMTQsIDE3NSwgMSwgMjEyLCAxMDEsIDE3NSwgMSwgMjQxLCAxODAsIDE3NSwgMSwgMjE3LCAKLSAgICAxNzksIDE3NSwgMSwgMjE3LCAxODAsIDI0MywgNjcsIDE3NSwgMSwgMjEyLCAxOTAsIDE3NSwgMSwgMjEyLCAxOTEsIDI0MSwgCi0gICAgMjIyLCAxNzUsIDEsIDIzNCwgMjMwLCAxNzUsIDEsIDIzMywgMTI1LCAxNzUsIDEsIDIzMSwgMywgMTc1LCAxLCAyMjgsIDUwLCAKLSAgICAxNzUsIDEsIDIyMSwgNjMsIDE3NSwgMSwgNDAsIDIyMSwgNjMsIDE3NSwgMSwgNzQsIDE3NSwgMSwgMjI2LCA5NiwgMTc1LCAKLSAgICAxLCAyMjMsIDIwMiwgMjI2LCA5NiwgMTc1LCAxLCAyMjIsIDE5MywgMTc1LCAxLCAyMjQsIDIxOSwgMTc1LCAxLCAyMjMsIAotICAgIDEyNiwgMTc1LCAxLCAyMjAsIDIwMCwgMTc1LCAxLCAyMTcsIDI0MywgMTc1LCAxLCAyMjYsIDQ1LCAyNTEsIDE5MCwgMTc1LCAKLSAgICAxLCAyMjYsIDQ1LCAyNDIsIDIxOCwgMTc1LCAxLCAyMjYsIDQ1LCAyNDcsIDIyOCwgMTc1LCAyMjUsIDM2LCA0OSwgMTc1LCAKLSAgICAyMjUsIDM2LCA1NSwgMTc1LCAyMjUsIDM2LCAyNDYsIDcxLCAxNzUsIDIxMiwgMTAsIDQ5LCAxNzUsIDIxMiwgMTAsIDU1LCAKLSAgICAxNzUsIDIxMiwgMTAsIDI0NiwgNzEsIDE3NSwgMjI0LCAyNCwgNDksIDE3NSwgMjI0LCAyNCwgNTUsIDE3NSwgMjQ2LCA3MiwgCi0gICAgMjEyLCAxNywgMjQxLCAzMSwgMTc1LCAyNDYsIDcyLCAyMTIsIDE3LCAyNTQsIDE1LCAxNzUsIDI0MSwgMjI1LCA0OSwgMTc1LCAKLSAgICAyNDEsIDIyNSwgNTUsIDE3NSwgMjQxLCAyMjQsIDI0NiwgNzEsIDE3NSwgMjQ1LCA0MywgNDksIDE3NSwgMjQ1LCA0MywgNTUsIAotICAgIDE3NSwgMjIzLCAxOSwgMTc1LCAyNDQsIDEwNSwgMjQ3LCA3NCwgMTc1LCAyMjQsIDEzNywgMTc1LCAyMjMsIDQ1LCAxNzUsIAotICAgIDExNywgNzEsIDE3NiwgNDksIDE3NSwgMTE3LCA3MSwgMTc2LCA1NSwgMTc1LCAxMzMsIDE3NiwgNDksIDE3NSwgMTMzLCAKLSAgICAxNzYsIDU1LCAxNzUsIDIyNywgMTEyLCAyMzIsIDI0MywgNDksIDE3NSwgMjI3LCAxMTIsIDIzMiwgMjQzLCA1NSwgMTc1LCAKLSAgICAyMzAsIDEyNiwgMTc1LCAyNTIsIDUxLCAxNzUsIDEsIDIxOSwgMjMzLCAyMTIsIDczLCAxNzUsIDEsIDIxOSwgMjMzLCAyMzQsIAotICAgIDEyOCwgMTc1LCAxLCAyMTksIDIzMywgMjQ0LCAxMjMsIDEyLCAxLCAyNTEsIDIzMSwgMiwgMTMzLCAxNzYsIDI0MCwgMjM3LCAKLSAgICA1NSwgMTIsIDEsIDI1MSwgMjMxLCAyLCA2MiwgMjUxLCAyMjAsIDI0LCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyNTEsIDIzMSwgCi0gICAgMiwgMTMzLCAxNzYsIDIyNSwgMTQxLCAyMTUsIDEyNCwgNTUsIDEyLCAxLCAyNTEsIDIzMSwgMiwgMTMzLCAxNzYsIDIyNSwgCi0gICAgMTQxLCAyMTUsIDEyNCwgMjUxLCAyMjAsIDI0LCAxMTcsIDE3NiwgNDksIDEyLCAxLCAyNTEsIDIzMSwgMiwgMTE3LCAxNzYsIAotICAgIDI1MSwgMjIwLCAyNCwgNjIsIDQ5LCAxMiwgMSwgMjUxLCAyMzEsIDIsIDIzNSwgMTkxLCAzLCAyMTUsIDgwLCA1NSwgMTIsIAotICAgIDEsIDI1MSwgMjMxLCAyLCAzLCAyMTUsIDc5LCAxMiwgMSwgMTIxLCAyLCAxMTcsIDE3NiwgNDksIDEyLCAxLCAxMjEsIDIsIAotICAgIDEzMywgMTc2LCAyMjUsIDE0MSwgMjE1LCAxMjQsIDU1LCAxMiwgMSwgMjQ4LCAxNDEsIDIsIDExNywgMTc2LCAyMTQsIDE2NiwgCi0gICAgMjUxLCAyMjAsIDI0LCAzLCAyMTgsIDI5LCAxMiwgMSwgMjQ4LCAxNDEsIDIsIDIzNSwgMTkxLCAzLCAyMTUsIDgwLCA1NSwgCi0gICAgMTIsIDEsIDIyMywgMjQ2LCAyLCA5MCwgMTIsIDEsIDIyMiwgODYsIDIsIDI0MywgMjM3LCAxNzYsIDQ5LCAxMiwgMSwgMjU0LCAKLSAgICAxMDQsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDI1NCwgMTA0LCAyLCAxMzMsIDE3NiwgMjI1LCAxNDEsIDI0NiwgNTgsIAotICAgIDQ5LCAxMiwgMSwgMjU0LCAxMDQsIDIsIDExNywgMTc2LCAyMTQsIDE2NiwgNDksIDEyLCAxLCAyNDQsIDExMiwgMiwgMTE3LCAKLSAgICAxNzYsIDU1LCAxMiwgMSwgMjQ0LCAxMTIsIDIsIDEzMywgMTc2LCAyMjUsIDE0MSwgMjE1LCAxMjQsIDU1LCAxMiwgMSwgCi0gICAgMjM0LCAxODEsIDIsIDYyLCA0OSwgMTIsIDEsIDIzNCwgMTgxLCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMzQsIDE4MSwgCi0gICAgMiwgMTMzLCAxNzYsIDIyNSwgMTQxLCAyMTUsIDEyNCwgNTUsIDEyLCAxLCA2MywgMiwgNjIsIDQ5LCAxMiwgMSwgNjMsIDIsIAotICAgIDYyLCA1NSwgMTIsIDEsIDIyOCwgMTc0LCAyLCAxMTcsIDE3NiwgNTUsIDEyLCAxLCAyMjgsIDE3NCwgMiwgMywgMjE4LCAyOSwgCi0gICAgMTIsIDEsIDIyOCwgMTc0LCAyLCAzLCAyMTUsIDc5LCAxMiwgMSwgMjMzLCAxMjcsIDIsIDEzNCwgMTIsIDEsIDIyMywgMjQ2LCAKLSAgICAyLCAxMTcsIDE3NiwgMjE0LCAxNjYsIDQ5LCAxMiwgMSwgMjIzLCAyNDYsIDIsIDE5MiwgNDksIDEyLCAxLCAyMjIsIDg2LCAKLSAgICAyLCAxMTcsIDE3NiwgMjE0LCAxNjYsIDQ5LCAxMiwgMSwgMTIxLCAyLCAzLCAxMiwgMSwgMjE4LCAzMCwgNTUsIDEyLCAxLCAKLSAgICAxMjEsIDIsIDMsIDEyLCAxLCAyMTgsIDMwLCAyNCwgMTE3LCAyNDcsIDcyLCAxMiwgMSwgMjIyLCA4NiwgMiwgMywgMTIsIDEsIAotICAgIDIxOCwgMzAsIDI0LCAxMTcsIDI0NywgNzIsIDEyLCAxLCAyMjMsIDI0NiwgMiwgMywgMTIsIDEsIDIxOCwgMzAsIDI0LCAKLSAgICAxMTcsIDI0NywgNzIsIDEyLCAxLCAxMjEsIDIsIDMsIDEyLCAxLCAyMTgsIDMwLCA0OSwgMTIsIDEsIDEwNiwgMiwgMjQ0LCAKLSAgICAyNDYsIDI1MywgMjA3LCAyMSwgMTE3LCA0OSwgMTIsIDEsIDEwNiwgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTMzLCAKLSAgICA0OSwgMTIsIDEsIDI0NCwgMTM2LCA3MywgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTE3LCA0OSwgMTIsIDEsIDI0NCwgCi0gICAgMTM2LCA3MywgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTMzLCA0OSwgMTIsIDEsIDI0NCwgMTM2LCA3MywgMiwgMjQ0LCAKLSAgICAyNDYsIDI1MywgMjA3LCAyMSwgMjQzLCAyMzcsIDU1LCAxMiwgMSwgMjE0LCAxNSwgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAKLSAgICAyMSwgMTE3LCA0OSwgMTIsIDEsIDIxNCwgMTUsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDEzMywgNDksIDEyLCAxLCAKLSAgICA3MywgMjUyLCA1MywgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTE3LCA0OSwgMTIsIDEsIDczLCAyNTIsIDUzLCAyLCAKLSAgICAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMzMsIDQ5LCAxMiwgMSwgMTIxLCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAKLSAgICAyNDMsIDIzNywgNTUsIDEyLCAxLCAyMjIsIDg2LCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAyNDMsIDIzNywgNDksIAotICAgIDEyLCAxLCAyMjIsIDg2LCAyLCAyMzUsIDE5MSwgMjE1LCA3OSwgMTIsIDEsIDIzNCwgMjU1LCAyLCAxMTcsIDE3NiwgNDksIAotICAgIDIxNywgMTU4LCAxLCAyNDIsIDI3LCAyMTcsIDE1OCwgMSwgMjIwLCAyNDgsIDIxNywgMTU4LCAxLCAyMjgsIDE3MiwgMjE3LCAKLSAgICAxNTgsIDEsIDIyNCwgNzQsIDIxNywgMTU4LCAxLCAyNTIsIDEwNiwgMjE3LCAxNTgsIDEsIDIzMywgMjIsIDIxNywgMTU4LCAKLSAgICAxLCAyMzUsIDEyLCAyMTcsIDE1OCwgMSwgMjU0LCA2OCwgMjE3LCAxNTgsIDEsIDIxNCwgMjU1LCAyMTcsIDE1OCwgMSwgCi0gICAgMjMxLCAxNDIsIDIxNywgMTU4LCAxLCAyNDQsIDE2MiwgMjE3LCAxNTgsIDEsIDI0NywgMjMxLCAyMTcsIDE1OCwgMSwgMjE3LCAKLSAgICAxNjAsIDIxNywgMTU4LCAxLCAyMzMsIDE1MywgMjE3LCAxNTgsIDEsIDI0MywgMTA2LCAyMTcsIDE1OCwgMSwgMjQyLCAxNTMsIAotICAgIDIxNywgMTU4LCAxLCAyMjIsIDg0LCAyMTcsIDE1OCwgMSwgMjQ4LCA5NCwgMjE3LCAxNTgsIDEsIDIxMiwgOTMsIDIxNywgCi0gICAgMTU4LCAxLCAyMTcsIDI0NCwgMjE3LCAxNTgsIDEsIDIxMywgOTEsIDIxNywgMTU4LCAxLCAyMjYsIDEwNywgMjE3LCAxNTgsIAotICAgIDEsIDIzNSwgMTI5LCAyMTcsIDE1OCwgMSwgMjUwLCA3MCwgMjE3LCAxNTgsIDEsIDIxNiwgMTE0LCAyMTcsIDE1OCwgMSwgCi0gICAgMjQxLCAxNzMsIDIxNywgMTU4LCAxLCAyMzQsIDEzNywgMjE3LCAxNTgsIDEsIDIxNywgMTU5LCAyMTcsIDE1OCwgMSwgMjEyLCAKLSAgICAxMDgsIDIxNywgMTU4LCAxLCAyMjAsIDIzOCwgMjE3LCAxNTgsIDEsIDIyMiwgMTk5LCAyMTcsIDE1OCwgMSwgMjQ4LCAxNjIsIAotICAgIDIxNywgMTU4LCAxLCAxMDgsIDIxNywgMTU4LCAxLCAyMTIsIDE2LCAyMTcsIDE1OCwgMSwgMjU0LCAxMDEsIDIxNywgMTU4LCAKLSAgICAxLCAyNDIsIDIxOSwgMjE3LCAxNTgsIDEsIDIyNCwgMjI5LCAyMTcsIDE1OCwgMSwgMjE0LCA0NywgMjE3LCAxNTgsIDI1NCwgCi0gICAgMTgyLCAyMTcsIDE1OCwgMjU0LCAxOTcsIDIxNywgMTU4LCAyNDAsIDEwNywgMjE3LCAxNTgsIDI0NSwgMTY0LCAyMTcsIAotICAgIDE1OCwgMjE1LCAxOTEsIDIxNywgMTU4LCAyMjcsIDQ4LCAyMTcsIDE1OCwgMjQ1LCAxNzIsIDIxNywgMTU4LCAyNDQsIDI0MCwgCi0gICAgMjE3LCAxNTgsIDIyNywgMTExLCAyMTcsIDE1OCwgMjI3LCAxMTksIDIxNywgMTU4LCAyMTgsIDI0NiwgMjE3LCAxNTgsIDEsIAotICAgIDIzMCwgNDMsIDIyOCwgMjI0LCAyMSwgMjEyLCA3OSwgMjI4LCAyMjQsIDIxLCAxMTYsIDIyOCwgMjI0LCAyMSwgMTA5LCAKLSAgICAyMjgsIDIyNCwgMjEsIDE2NiwgMjI4LCAyMjQsIDIxLCAxNjMsIDIyOCwgMjI0LCAyMSwgMTgwLCAyMjgsIDIyNCwgMjEsIAotICAgIDE4OSwgMjI4LCAyMjQsIDIxLCAxOTgsIDIyOCwgMjI0LCAyMSwgMTk1LCAyMjgsIDIyNCwgMjEsIDIwMCwgMjI4LCAyMjQsIAotICAgIDEsIDYxLCAyMjgsIDIyNCwgMSwgMjQ1LCAxNjUsIDIyOCwgMjI0LCAxLCA3MiwgMjI4LCAyMjQsIDEsIDc0LCAyMjgsIDIyNCwgCi0gICAgMSwgNjksIDIyOCwgMjI0LCAxLCAyMjcsIDQ5LCAyMjgsIDIyNCwgMSwgNzUsIDIyOCwgMjI0LCAxLCAyNDgsIDE1MiwgMjI4LCAKLSAgICAyMjQsIDEsIDIwNCwgMjI4LCAyMjQsIDEsIDI1MiwgMTA3LCAyMjgsIDIyNCwgMSwgMTkzLCAyMjgsIDIyNCwgMSwgMjE4LCAKLSAgICA1MiwgMjI4LCAyMjQsIDEsIDIzNSwgMTM5LCAyMjgsIDIyNCwgMSwgMjUwLCA5MiwgMjI4LCAyMjQsIDEsIDI0OCwgMTY0LCAKLSAgICAyMjgsIDIyNCwgMSwgMjAzLCAyMjgsIDIyNCwgMSwgMjIzLCA4MSwgMjI4LCAyMjQsIDEsIDIyMiwgMjAyLCAyMjgsIDIyNCwgCi0gICAgMSwgMjQzLCA1NSwgMjI4LCAyMjQsIDEsIDI0NCwgMTY0LCAyMjgsIDIyNCwgMSwgMTgxLCAyMjgsIDIyNCwgMSwgMjMzLCAKLSAgICAxNTcsIDIyOCwgMjI0LCAxLCAyMzAsIDQ2LCAyMTMsIDIxMCwgMjI4LCAyMjQsIDEsIDE4OCwgMjI4LCAyMjQsIDEsIDIyOCwgCi0gICAgMjMsIDIyOCwgMjI0LCAxLCAyMDUsIDIyOCwgMjI0LCAxLCAxNTksIDIyOCwgMjI0LCAxLCAyMTQsIDQ5LCAyMjgsIDIyNCwgCi0gICAgMSwgMTg2LCAyMjgsIDIyNCwgMSwgMjI4LCAyNCwgMjEzLCAyMTAsIDIyOCwgMjI0LCAxLCAyMzUsIDY0LCAyMzUsIDEzOSwgCi0gICAgMjI4LCAyMjQsIDEsIDIzNSwgNjQsIDI1MCwgOTIsIDIyOCwgMjI0LCAxLCAyMzUsIDY0LCAyMDMsIDIyOCwgMjI0LCAzNywgCi0gICAgMjIwLCAxNzUsIDEyNCwgMjE2LCAyNDEsIDIyOCwgMjI0LCAzNywgMjIwLCAxNzUsIDExNSwgMjE2LCAyNDEsIDIyOCwgMjI0LCAKLSAgICAzNywgMjIwLCAxNzUsIDIyMywgMTI1LCAyMTYsIDI0MSwgMjI4LCAyMjQsIDM3LCAxODQsIDI0NywgMjQ1LCAyMTYsIDI0MSwgCi0gICAgMjI4LCAyMjQsIDM3LCAxODQsIDEyNCwgMjE2LCAyNDEsIDIyOCwgMjI0LCAzNywgMTg0LCAxMTUsIDIxNiwgMjQxLCAyMjgsIAotICAgIDIyNCwgMzcsIDE4NCwgMjIzLCAxMjUsIDIxNiwgMjQxLCAyMjgsIDIyNCwgMzcsIDIzMCwgMTMsIDc3LCAyMjgsIDIyNCwgCi0gICAgMzcsIDUxLCA2MiwgNDksIDIyOCwgMjI0LCAxMjQsIDE2MCwgMjUzLCAyMjYsIDIyOCwgMjI0LCAxMTUsIDE2MCwgMjUzLCAKLSAgICAyMjYsIDIyOCwgMjI0LCAxNiwgMjI3LCA1MCwgMjQ4LCAxLCAyMjgsIDIyNCwgMTYsIDI0MywgNTQsIDIyOCwgMjI0LCAyNDksIAotICAgIDE1NywgMjI4LCAyMjQsIDI0NCwgMjU0LCA3NywgMjI4LCAyMjQsIDIzMywgMTMyLCAyMjIsIDE2NywgMSwgMjU0LCA4NCwgCi0gICAgMjIyLCAxNjcsIDEsIDI1MSwgMTUxLCAyMjIsIDE2NywgMSwgMjQzLCA4OCwgMjIyLCAxNjcsIDEsIDI0OCwgMTM5LCAyMjIsIAotICAgIDE2NywgMSwgMjM1LCAxNTAsIDIyMiwgMTY3LCAxLCAyNTIsIDEwNiwgMjIyLCAxNjcsIDEsIDIxMiwgODIsIDIyMiwgMTY3LCAKLSAgICAxLCAyMzUsIDE1OCwgMjIyLCAxNjcsIDEsIDIxNywgMjAsIDIyMiwgMTY3LCAxLCAyMTIsIDE3MywgMjIyLCAxNjcsIDEsIAotICAgIDIzNSwgMTMsIDIyMiwgMTY3LCAxLCAyMzMsIDE1MCwgMjIyLCAxNjcsIDEsIDIzMSwgMywgMjIyLCAxNjcsIDEsIDIyOCwgCi0gICAgNTAsIDIyMiwgMTY3LCAxLCAyMjAsIDgyLCAyMjIsIDE2NywgMSwgMjM1LCAyNTEsIDIyMiwgMTY3LCAxLCAyNDQsIDkwLCAKLSAgICAyMjIsIDE2NywgMSwgMjE2LCAxMzksIDIyMiwgMTY3LCAxLCAyMjQsIDE1NSwgMjIyLCAxNjcsIDEsIDIyMywgMTI2LCAyMjIsIAotICAgIDE2NywgMSwgMjIxLCA4LCAyMjIsIDE2NywgMSwgMjE4LCA0OCwgMjIyLCAxNjcsIDE1MiwgMjM1LCAyNTEsIDIyMiwgMTY3LCAKLSAgICAxNTIsIDIzNSwgMjUwLCAyMjIsIDE2NywgMTUyLCAyMjcsIDEwNywgMjIyLCAxNjcsIDE1MiwgMjQ4LCAxNTAsIDIyMiwgCi0gICAgMTY3LCA1OSwgMSwgMjQ1LCA2OCwgMjEyLCAxNzMsIDIyMiwgMTY3LCAxNTIsIDI0NSwgNjgsIDIxMiwgMTczLCAyMjIsIAotICAgIDE2NywgMzAsIDUsIDE4NCwgNzQsIDIyMiwgMTY3LCAzMCwgNSwgNzQsIDIyMiwgMTY3LCAzMCwgNSwgMjI2LCAyNDIsIDI1NCwgCi0gICAgMjMyLCAyMjIsIDE2NywgMzAsIDUsIDE4NCwgMjU0LCAyMzIsIDIyMiwgMTY3LCAzMCwgNSwgMjU0LCAyMzIsIDIyMiwgMTY3LCAKLSAgICAzMCwgNSwgMjI2LCAyNDIsIDYxLCAyMjIsIDE2NywgMzAsIDUsIDE4NCwgNjEsIDIyMiwgMTY3LCAzMCwgNSwgNjEsIDIyMiwgCi0gICAgMTY3LCA1OSwgMSwgMjIwLCAxNzUsIDYxLCAyMjIsIDE2NywgMzAsIDUsIDIyMCwgMTc1LCA2MSwgMjIyLCAxNjcsIDMwLCA1LCAKLSAgICAxODQsIDY5LCAyMjIsIDE2NywgMzAsIDUsIDY5LCAyMjIsIDE2NywgNTksIDEsIDcyLCAyMjIsIDE2NywgMzAsIDUsIDE4NCwgCi0gICAgNzIsIDIyMiwgMTY3LCAzMCwgNSwgNzIsIDIyMiwgMTY3LCAzMCwgNSwgNzUsIDIyMiwgMTY3LCAzMCwgNSwgMjE4LCAyNDYsIAotICAgIDIyMiwgMTY3LCAxNTIsIDIyOSwgMTc0LCAyMjIsIDE2NywgMjI1LCAyNywgMjI5LCAxNzQsIDIyMiwgMTY3LCAyMjUsIDI3LCAKLSAgICAyNTQsIDEyMywgMjIyLCAxNjcsIDIyNSwgMjcsIDI1NCwgMjMsIDIyMiwgMTY3LCAyMjUsIDI3LCAyNTIsIDM0LCAyMjIsIAotICAgIDE2NywgMjI1LCAyNywgMjUzLCAxMTcsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMjAsIDE4OCwgMjIyLCAxNjcsIDI1NCwgMTgxLCAKLSAgICA3NywgMjIyLCAxNjcsIDIyNSwgMjcsIDIzMSwgMTMyLCAyMjQsIDE5MCwgMjIyLCAxNjcsIDIyNSwgMjcsIDIxMiwgMjQsIAotICAgIDIyMiwgMTY3LCAyMjUsIDI3LCAyMjQsIDE5MCwgMjIyLCAxNjcsIDIyNSwgMjcsIDIxMiwgMTA3LCAyMjIsIDE2NywgMjI1LCAKLSAgICAyNywgMjE2LCA1NCwgMjIyLCAxNjcsIDIyNSwgMjcsIDI1MywgMTgwLCAyMjIsIDE2NywgMjI1LCAyNywgMjE5LCAyMzcsIAotICAgIDIzMSwgMjA4LCAyMjIsIDE2NywgMjI1LCAyNywgMjU0LCAxMSwgMjMxLCAyNDUsIDEsIDI0MiwgNywgMjMxLCAyNDUsIDEsIAotICAgIDI1NCwgMTg1LCAyMzEsIDI0NSwgMSwgMjU0LCAxMjEsIDIzMSwgMjQ1LCAxLCAyNTQsIDE2MCwgMjMxLCAyNDUsIDEsIDI1NCwgCi0gICAgMTE0LCAyMzEsIDI0NSwgMSwgMjE1LCA5OCwgMjMxLCAyNDUsIDEsIDI1MywgNzYsIDIzMSwgMjQ1LCAxLCAyMzUsIDE1OCwgCi0gICAgMjMxLCAyNDUsIDEsIDI1MywgMTE0LCAyMzEsIDI0NSwgMSwgMjU0LCA4OSwgMjMxLCAyNDUsIDEsIDI1NCwgOTQsIDIzMSwgCi0gICAgMjQ1LCAxLCAyNTQsIDg2LCAyMzEsIDI0NSwgMSwgMjU0LCA0NSwgMjMxLCAyNDUsIDEsIDI1NCwgMzIsIDIzMSwgMjQ1LCAxLCAKLSAgICAyNTMsIDE1MiwgMjMxLCAyNDUsIDEsIDIzNSwgMjUxLCAyMzEsIDI0NSwgMSwgMjUzLCAyMzksIDIzMSwgMjQ1LCAxLCAyNTMsIAotICAgIDEyNCwgMjMxLCAyNDUsIDEsIDI1MywgMjE1LCAyMzEsIDI0NSwgMSwgMjUzLCAyMTEsIDIzMSwgMjQ1LCAxLCAyNTMsIDE0NiwgCi0gICAgMjMxLCAyNDUsIDEsIDI1MywgMTIyLCAyMzEsIDI0NSwgMSwgMjQ2LCAxMCwgMjMxLCAyNDUsIDEsIDIzNSwgNiwgMjMxLCAKLSAgICAyNDUsIDEsIDI1NCwgMTAzLCAyMzEsIDI0NSwgMjU0LCAxMjcsIDc3LCAyMzEsIDI0NSwgMjE0LCAxMTcsIDc3LCAyMzEsIAotICAgIDI0NSwgMjQzLCAyOSwgNzcsIDIzMSwgMjQ1LCAyMjUsIDI2LCA4MiwgNSwgMjM1LCAxOTEsIDI1MCwgMTg3LCA4MiwgNSwgCi0gICAgMjUwLCAxODcsIDgyLCA1LCAyNTMsIDI0MiwgODIsIDUsIDIxNCwgMTI4LCA4MiwgMSwgMjIwLCAxNzUsIDYxLCA4MiwgMSwgCi0gICAgNjEsIDgyLCAxLCAyNTQsIDIzMiwgODIsIDEsIDcyLCA4MiwgMSwgMjM2LCAyOCwgODIsIDEsIDY5LCA4MiwgMSwgMjE1LCAKLSAgICA5MiwgODIsIDEsIDE2MSwgMTQ5LCA4MiwgMSwgMTYxLCAxNTAsIDgyLCAxLCAyNTAsIDE5MCwgNzQsIDgyLCAxLCAyMjAsIAotICAgIDE3NSwgNzQsIDgyLCAxLCA3NCwgODIsIDEsIDI1NCwgMTA4LCA4MiwgMSwgMjUwLCAxOTAsIDc1LCA4MiwgMSwgMjIwLCAKLSAgICAxNzUsIDc1LCA4MiwgMSwgNzUsIDgyLCAxLCAyNTMsIDEwOCwgODIsIDEsIDE4MSwgODIsIDEsIDIzNCwgMTM4LCA4MiwgMSwgCi0gICAgMjQzLCAxMTAsIDgyLCAxLCAyNDIsIDIyNSwgODIsIDEsIDIyOSwgMTU5LCA4MiwgMSwgMjUwLCAyMTksIDgyLCAxLCAyNTAsIAotICAgIDkyLCA4MiwgMSwgMjM1LCAxMzksIDgyLCAxLCAyMzUsIDExNSwgODIsIDEsIDIyOCwgMjMsIDgyLCAxLCAyMTYsIDExNSwgCi0gICAgODIsIDEsIDIxNiwgMTA1LCA4MiwgMSwgMjQ4LCA4NiwgODIsIDEsIDI0OCwgNzAsIDgyLCAxLCAyMjgsIDE5OCwgODIsIDEsIAotICAgIDIxOCwgNTIsIDgyLCAxLCAyMTcsIDE2MSwgODIsIDEsIDI0OCwgMTY0LCA4MiwgMSwgMjQ3LCAyMzIsIDgyLCAxLCAyMDUsIAotICAgIDgyLCAxLCAyMjgsIDE4OSwgODIsIDEsIDE5MywgODIsIDEsIDIyNiwgMjMsIDgyLCAxLCAyNTIsIDEwNywgODIsIDEsIDI1MSwgCi0gICAgMTk1LCA4MiwgMSwgMTg4LCA4MiwgMSwgMTg2LCA4MiwgMSwgMjAzLCA4MiwgMSwgMjIzLCA4MSwgODIsIDEsIDIzMywgMTU3LCAKLSAgICA4MiwgMSwgMjMyLCAyMTMsIDgyLCAxLCAyMzIsIDIxMiwgODIsIDEsIDIxNSwgMSwgODIsIDEsIDIyMSwgMjQsIDgyLCAxLCAKLSAgICAyMTksIDE1NywgODIsIDEsIDIyMiwgMjAyLCA4MiwgMSwgMTU5LCA4MiwgMzAsIDUsIDIyNywgOTksIDgyLCAzMCwgNSwgCi0gICAgMjI3LCA0NywgODIsIDUsIDIyOCwgNjAsIDgyLCA1LCAyNTMsIDkxLCA4MiwgMzAsIDUsIDI1NCwgMjMyLCA4MiwgMzAsIDUsIAotICAgIDcyLCA4MiwgMzAsIDUsIDIzNiwgMjgsIDgyLCAzMCwgNSwgNjksIDgyLCAzMCwgNSwgMjE1LCA5MiwgODIsIDMwLCA1LCAKLSAgICAxNjEsIDE0OSwgODIsIDMwLCA1LCAxNjEsIDIyMywgODIsIDgyLCAzMCwgNSwgMjUwLCAxOTAsIDc0LCA4MiwgMzAsIDUsIAotICAgIDIyMCwgMTc1LCA3NCwgODIsIDMwLCA1LCA3NCwgODIsIDMwLCA1LCAyNTQsIDEwOCwgODIsIDMwLCA1LCAyNTAsIDE5MCwgCi0gICAgNzUsIDgyLCAzMCwgNSwgMjIwLCAxNzUsIDc1LCA4MiwgMzAsIDUsIDc1LCA4MiwgMzAsIDUsIDI1MywgMTA4LCA4MiwgNSwgCi0gICAgMjE0LCAxMzMsIDgyLCAzMCwgNSwgMjI1LCA2NiwgNzQsIDgyLCAzMCwgNSwgMjUzLCA4NywgODIsIDIyNywgNzAsIDgyLCAKLSAgICAyMTksIDUxLCA1LCAyMTUsIDE4NSwgODIsIDIxOSwgNTEsIDUsIDI1MywgMjQ0LCA4MiwgMjQyLCAxMTQsIDI1NCwgMTc0LCAKLSAgICA4MiwgMjU0LCAxNjQsIDI1NCwgMTc0LCA4MiwgMzAsIDUsIDI1MCwgMTkwLCAxODQsIDc0LCA4MiwgMzAsIDUsIDIxNSwgCi0gICAgMTgzLCA4MiwgMzAsIDUsIDIxNSwgOTEsIDgyLCAxLCAyMjQsIDIzMiwgODIsIDEsIDIzNCwgMTIxLCA4MiwgMSwgMjQyLCAKLSAgICAyMDIsIDgyLCAxLCAyMTIsIDEwOSwgODIsIDEsIDI0OCwgNzUsIDgyLCAxLCAyMjMsIDE5MiwgODIsIDEsIDI0NCwgMTY0LCAKLSAgICA4MiwgMSwgMjEyLCAxNjAsIDgyLCAxLCAxNjEsIDIyMywgODIsIDgyLCAxLCAxNjEsIDIzMiwgMjE0LCA4MiwgMzAsIDUsIAotICAgIDE2MSwgMTUwLCA4MiwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDgyLCAyNDgsIDEyMywgODIsIDUxLCAyNDgsIDEyMywgODIsIAotICAgIDIxLCAyMTIsIDc5LCA4MiwgMjEsIDExNiwgODIsIDIxLCAxMDksIDgyLCAyMSwgMTY2LCA4MiwgMjEsIDE2MywgODIsIDIxLCAKLSAgICAxODAsIDgyLCAyMSwgMTg5LCA4MiwgMjEsIDE5OCwgODIsIDIxLCAxOTUsIDgyLCAyMSwgMjAwLCA4MiwgMjU0LCAxODEsIAotICAgIDUyLCA4MiwgNSwgMTI0LCAyMTksIDIwNSwgMjQ3LCA3NCwgODIsIDEsIDI1MCwgMTkwLCA2MSwgODIsIDEsIDIyNywgOTksIAotICAgIDgyLCAxLCAyMjcsIDQ3LCA4MiwgMSwgMjUzLCA4NywgODIsIDEsIDIxNSwgMTgzLCA4MiwgMSwgMjE1LCA5MSwgODIsIDEsIAotICAgIDIxMiwgNzUsIDgyLCAxLCAxMDcsIDE4NiwgODIsIDEsIDI0MywgNSwgODIsIDEsIDIzNSwgOTksIDgyLCAxLCAyNDIsIDE1NiwgCi0gICAgMjE5LCA2OSwgODIsIDEsIDI0OCwgNzYsIDgyLCAxLCAyNTIsIDMxLCAxNDAsIDUsIDI1MCwgMTg3LCAxNDAsIDUsIDI1MywgCi0gICAgMjQyLCAxNDAsIDUsIDIxNCwgMTI4LCAxNDAsIDEsIDYxLCAxNDAsIDEsIDI1NCwgMjMyLCAxNDAsIDEsIDcyLCAxNDAsIDEsIAotICAgIDIzNiwgMjgsIDE0MCwgMSwgNjksIDE0MCwgMSwgMjE1LCA5MiwgMTQwLCAxLCAxNjEsIDE0OSwgMTQwLCAxLCAxNjEsIDE1MCwgCi0gICAgMTQwLCAxLCA3NCwgMTQwLCAxLCAyNTQsIDEwOCwgMTQwLCAxLCA3NSwgMTQwLCAxLCAyNTMsIDEwOCwgMTQwLCAxLCAxODEsIAotICAgIDE0MCwgMSwgMjM0LCAxMzgsIDE0MCwgMSwgMjQzLCAxMTAsIDE0MCwgMSwgMjQyLCAyMjUsIDE0MCwgMSwgMjI5LCAxNTksIAotICAgIDE0MCwgMSwgMjUwLCAyMTksIDE0MCwgMSwgMjUwLCA5MiwgMTQwLCAxLCAyMzUsIDEzOSwgMTQwLCAxLCAyMzUsIDExNSwgCi0gICAgMTQwLCAxLCAyMjgsIDIzLCAxNDAsIDEsIDIxNiwgMTE1LCAxNDAsIDEsIDIxNiwgMTA1LCAxNDAsIDEsIDI0OCwgODYsIAotICAgIDE0MCwgMSwgMjQ4LCA3MCwgMTQwLCAxLCAyMjgsIDE5OCwgMTQwLCAxLCAyMTgsIDUyLCAxNDAsIDEsIDIxNywgMTYxLCAKLSAgICAxNDAsIDEsIDI0OCwgMTY0LCAxNDAsIDEsIDI0NywgMjMyLCAxNDAsIDEsIDIwNSwgMTQwLCAxLCAxOTMsIDE0MCwgMSwgCi0gICAgMjI2LCAyMywgMTQwLCAxLCAyNTIsIDEwNywgMTQwLCAxLCAyNTEsIDE5NSwgMTQwLCAxLCAxODgsIDE0MCwgMSwgMTg2LCAKLSAgICAxNDAsIDEsIDIwMywgMTQwLCAxLCAyMzMsIDE1NywgMTQwLCAxLCAyMjEsIDI0LCAxNDAsIDEsIDIxOSwgMTU3LCAxNDAsIDEsIAotICAgIDIyMiwgMjAyLCAxNDAsIDEsIDE1OSwgMTQwLCA1LCAyMjgsIDYwLCAxNDAsIDUsIDI1MywgOTEsIDE0MCwgMzAsIDUsIDI1NCwgCi0gICAgMjMyLCAxNDAsIDMwLCA1LCA3MiwgMTQwLCAzMCwgNSwgMjM2LCAyOCwgMTQwLCAzMCwgNSwgNjksIDE0MCwgMzAsIDUsIAotICAgIDIxNSwgOTIsIDE0MCwgMzAsIDUsIDE2MSwgMTQ5LCAxNDAsIDMwLCA1LCAxNjEsIDIyMywgODIsIDE0MCwgMzAsIDUsIDc0LCAKLSAgICAxNDAsIDMwLCA1LCAyNTQsIDEwOCwgMTQwLCAzMCwgNSwgNzUsIDE0MCwgMzAsIDUsIDI1MywgMTA4LCAxNDAsIDUsIDIxNCwgCi0gICAgMTMzLCAxNDAsIDEsIDIzNCwgMTMwLCAyMTgsIDUyLCAxNDAsIDI1MywgMTA5LCAyMzMsIDQ3LCA3NywgMTQwLCAxLCAyMjMsIAotICAgIDgxLCAxNDAsIDEsIDIyMywgMTkyLCAxNDAsIDEsIDIxMiwgMTYwLCAxNDAsIDEsIDE2MSwgMjIzLCA4MiwgMTQwLCAxLCAKLSAgICAxNjEsIDIzMiwgMjE0LCAxNDAsIDMwLCA1LCAxNjEsIDE1MCwgMTQwLCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTQwLCAyMSwgCi0gICAgMjEyLCA3OSwgMTQwLCAyMSwgMTE2LCAxNDAsIDIxLCAxMDksIDE0MCwgMjEsIDE2NiwgMTQwLCAyMSwgMTYzLCAxNDAsIDIxLCAKLSAgICAxODAsIDE0MCwgMjEsIDE4OSwgMTQwLCAyMSwgMTk4LCAxNDAsIDIxLCAxOTUsIDE0MCwgMjEsIDIwMCwgMTQwLCAxLCAyMjQsIAotICAgIDc3LCAyLCAyMzEsIDM3LCAyNDcsIDIwNiwgMTQwLCAxLCAyMjQsIDc3LCAyLCAyMzIsIDE2MywgMjQ3LCAyMDYsIDE0MCwgCi0gICAgMjIzLCAyOSwgNzcsIDE0MCwgMjIzLCAyOSwgNTIsIDE0MCwgMjQ5LCAzOSwgMjI4LCA1MywgMTE2LCAxNDAsIDI0OSwgMzksIAotICAgIDIyOCwgNTMsIDEwOSwgMTQwLCAyNDksIDM5LCAyMjgsIDUzLCAxNjYsIDE0MCwgMjQ5LCAzOSwgMjI4LCA1MywgMTYzLCAKLSAgICAxNDAsIDI0OSwgMzksIDIyOCwgNTMsIDEyMiwgMjMzLCA0MCwgMjE3LCAxNTQsIDIxNywgMTQ5LCAyNDcsIDI1NSwgMTQwLCAKLSAgICAyNDksIDM5LCAyNDgsIDAsIDIyMCwgNDcsIDE0MCwgMjM1LCAxNTksIDE0MCwgMjQzLCA3OSwgNzcsIDE3MywgNSwgMjU0LCAKLSAgICAxNTksIDI1MSwgMTY2LCAxNzMsIDUsIDI1MSwgMTY2LCAxNzMsIDUsIDIxNCwgMTI4LCAxNzMsIDEsIDYxLCAxNzMsIDEsIAotICAgIDI1NCwgMjMyLCAxNzMsIDEsIDcyLCAxNzMsIDEsIDIzNiwgMjgsIDE3MywgMSwgNjksIDE3MywgMSwgMjE1LCA5MiwgMTczLCAKLSAgICAxLCAyNDUsIDE2NSwgMTczLCAxLCAyNTQsIDEwOCwgMTczLCAxLCAyMjcsIDQ5LCAxNzMsIDEsIDI1MywgMTA4LCAxNzMsIDEsIAotICAgIDE4MSwgMTczLCAxLCAyMzQsIDEzOCwgMTczLCAxLCAyNDMsIDExMCwgMTczLCAxLCAyNDIsIDIyNSwgMTczLCAxLCAyMjksIAotICAgIDE1OSwgMTczLCAxLCAyNTAsIDIxOSwgMTczLCAxLCAyNTAsIDkyLCAxNzMsIDEsIDIzNSwgMTM5LCAxNzMsIDEsIDIzNSwgCi0gICAgMTE1LCAxNzMsIDEsIDIyOCwgMjMsIDE3MywgMSwgMjE2LCAxMTUsIDE3MywgMSwgMjE2LCAxMDUsIDE3MywgMSwgMjQ4LCAKLSAgICA4NiwgMTczLCAxLCAyNDgsIDcwLCAxNzMsIDEsIDIyOCwgMTk4LCAxNzMsIDEsIDIxOCwgNTIsIDE3MywgMSwgMjE3LCAxNjEsIAotICAgIDE3MywgMSwgMjQ4LCAxNjQsIDE3MywgMSwgMjQ3LCAyMzIsIDE3MywgMSwgMjA1LCAxNzMsIDEsIDE5MywgMTczLCAxLCAKLSAgICAyMjYsIDIzLCAxNzMsIDEsIDI1MiwgMTA3LCAxNzMsIDEsIDI1MSwgMTk1LCAxNzMsIDEsIDE4OCwgMTczLCAxLCAxODYsIAotICAgIDE3MywgMSwgMjAzLCAxNzMsIDEsIDIzMywgMTU3LCAxNzMsIDEsIDIzMiwgMjEzLCAxNzMsIDEsIDIxNSwgMSwgMTczLCAxLCAKLSAgICAyMjEsIDI0LCAxNzMsIDEsIDIyMiwgMjAyLCAxNzMsIDEsIDE1OSwgMTczLCA1LCAyMjgsIDYwLCAxNzMsIDMwLCA1LCAyNTQsIAotICAgIDIzMiwgMTczLCAzMCwgNSwgNzIsIDE3MywgMzAsIDUsIDIzNiwgMjgsIDE3MywgMzAsIDUsIDY5LCAxNzMsIDMwLCA1LCAKLSAgICAyMTUsIDkyLCAxNzMsIDMwLCA1LCAyNDUsIDE2NSwgMTczLCAzMCwgNSwgMjU0LCAxMDgsIDE3MywgMzAsIDUsIDIyNywgNDksIAotICAgIDE3MywgMzAsIDUsIDI1MywgMTA4LCAxNzMsIDUsIDIxNCwgMTMzLCAxNzMsIDUsIDIxNSwgMTg3LCAxNzMsIDEsIDIzNCwgCi0gICAgMTIxLCAxNzMsIDEsIDI0MiwgMjAyLCAxNzMsIDEsIDIxMiwgMTA5LCAxNzMsIDEsIDIyMywgODEsIDE3MywgMSwgMjQ0LCAKLSAgICAxNjQsIDE3MywgMjEsIDIxMiwgNzksIDE3MywgMjEsIDExNiwgMTczLCAyMSwgMTA5LCAxNzMsIDIxLCAxNjYsIDE3MywgMjEsIAotICAgIDE2MywgMTczLCAyMSwgMTgwLCAxNzMsIDIxLCAxODksIDE3MywgMjEsIDE5OCwgMTczLCAyMSwgMTk1LCAxNzMsIDIxLCAKLSAgICAyMDAsIDE3MywgMjE3LCAyNywgMTczLCAyNTQsIDE1OCwgMTczLCAyMzUsIDE3NiwgMTczLCAyMTUsIDExNywgMTczLCAyNDUsIAotICAgIDEzOCwgMjI3LCA1NCwgMTczLCA1LCAyMTMsIDY3LCAxNjQsIDUsIDI1MCwgMTg3LCAxNjQsIDUsIDI1MywgMjQyLCAxNjQsIAotICAgIDUsIDIxNCwgMTI4LCAxNjQsIDEsIDYxLCAxNjQsIDEsIDI1NCwgMjMyLCAxNjQsIDEsIDcyLCAxNjQsIDEsIDIzNiwgMjgsIAotICAgIDE2NCwgMSwgNjksIDE2NCwgMSwgMjE1LCA5MiwgMTY0LCAxLCAxNjEsIDE0OSwgMTY0LCAxLCAxNjEsIDE1MCwgMTY0LCAzMCwgCi0gICAgMjUwLCAxOTAsIDc0LCAxNjQsIDEsIDc0LCAxNjQsIDEsIDI1NCwgMTA4LCAxNjQsIDMwLCAyNTAsIDE5MCwgNzUsIDE2NCwgCi0gICAgMSwgNzUsIDE2NCwgMSwgMjUzLCAxMDgsIDE2NCwgMSwgMTgxLCAxNjQsIDEsIDIzNCwgMTM4LCAxNjQsIDEsIDI0MywgMTEwLCAKLSAgICAxNjQsIDEsIDI0MiwgMjI1LCAxNjQsIDEsIDIyOSwgMTU5LCAxNjQsIDEsIDI1MCwgMjE5LCAxNjQsIDEsIDI1MCwgOTIsIAotICAgIDE2NCwgMSwgMjM1LCAxMzksIDE2NCwgMSwgMjM1LCAxMTUsIDE2NCwgMSwgMjI4LCAyMywgMTY0LCAxLCAyMTYsIDExNSwgCi0gICAgMTY0LCAxLCAyMTYsIDEwNSwgMTY0LCAxLCAyNDgsIDg2LCAxNjQsIDEsIDI0OCwgNzAsIDE2NCwgMSwgMjI4LCAxOTgsIAotICAgIDE2NCwgMSwgMjE4LCA1MiwgMTY0LCAxLCAyMTcsIDE2MSwgMTY0LCAxLCAyNDgsIDE2NCwgMTY0LCAxLCAyNDcsIDIzMiwgCi0gICAgMTY0LCAxLCAyMDUsIDE2NCwgMSwgMTkzLCAxNjQsIDEsIDIyNiwgMjMsIDE2NCwgMSwgMjUyLCAxMDcsIDE2NCwgMSwgMjUxLCAKLSAgICAxOTUsIDE2NCwgMSwgMTg4LCAxNjQsIDEsIDE4NiwgMTY0LCAxLCAyMDMsIDE2NCwgMSwgMjMzLCAxNTcsIDE2NCwgMSwgCi0gICAgMjMyLCAyMTMsIDE2NCwgMSwgMjE1LCAxLCAxNjQsIDEsIDIyMSwgMjQsIDE2NCwgMSwgMjE5LCAxNTcsIDE2NCwgMSwgMjIyLCAKLSAgICAyMDIsIDE2NCwgMSwgMTU5LCAxNjQsIDUsIDIyOCwgNjAsIDE2NCwgNSwgMjUzLCA5MSwgMTY0LCAzMCwgNSwgMjU0LCAyMzIsIAotICAgIDE2NCwgMzAsIDUsIDcyLCAxNjQsIDMwLCA1LCAyMzYsIDI4LCAxNjQsIDMwLCA1LCA2OSwgMTY0LCAzMCwgNSwgMjE1LCA5MiwgCi0gICAgMTY0LCAzMCwgNSwgMTYxLCAxNDksIDE2NCwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgMTY0LCAzMCwgNSwgMjUwLCAxOTAsIDc0LCAKLSAgICAxNjQsIDMwLCA1LCA3NCwgMTY0LCAzMCwgNSwgMjU0LCAxMDgsIDE2NCwgMzAsIDUsIDI1MCwgMTkwLCA3NSwgMTY0LCAzMCwgCi0gICAgNSwgNzUsIDE2NCwgMzAsIDUsIDI1MywgMTA4LCAxNjQsIDUsIDIxNCwgMTMzLCAxNjQsIDIyNywgNzAsIDE2NCwgMSwgMTYxLCAKLSAgICAyMjMsIDgyLCAxNjQsIDEsIDE2MSwgMjMyLCAyMTQsIDE2NCwgMzAsIDUsIDE2MSwgMTUwLCAxNjQsIDMwLCA1LCAxNjEsIAotICAgIDIzMiwgMjE0LCAxNjQsIDIxLCAyMTIsIDc5LCAxNjQsIDIxLCAxMTYsIDE2NCwgMjEsIDEwOSwgMTY0LCAyMSwgMTY2LCAKLSAgICAxNjQsIDIxLCAxNjMsIDE2NCwgMjEsIDE4MCwgMTY0LCAyMSwgMTg5LCAxNjQsIDIxLCAxOTgsIDE2NCwgMjEsIDE5NSwgCi0gICAgMTY0LCAyMSwgMjAwLCAxNjQsIDIyMywgMjksIDUyLCAxNDcsIDUsIDI1MCwgMTg3LCAxNDcsIDUsIDI1MywgMjQyLCAxNDcsIAotICAgIDUsIDIxNCwgMTI4LCAxNDcsIDEsIDYxLCAxNDcsIDEsIDI1NCwgMjMyLCAxNDcsIDEsIDcyLCAxNDcsIDEsIDIzNiwgMjgsIAotICAgIDE0NywgMSwgNjksIDE0NywgMSwgMjE1LCA5MiwgMTQ3LCAxLCAxNjEsIDE0OSwgMTQ3LCAxLCAxNjEsIDE1MCwgMTQ3LCAxLCAKLSAgICA3NCwgMTQ3LCAxLCAyNTQsIDEwOCwgMTQ3LCAxLCA3NSwgMTQ3LCAxLCAyNTMsIDEwOCwgMTQ3LCAxLCAxODEsIDE0NywgMSwgCi0gICAgMjM0LCAxMzgsIDE0NywgMSwgMjQzLCAxMTAsIDE0NywgMSwgMjQyLCAyMjUsIDE0NywgMSwgMjI5LCAxNTksIDE0NywgMSwgCi0gICAgMjUwLCAyMTksIDE0NywgMSwgMjUwLCA5MiwgMTQ3LCAxLCAyMzUsIDEzOSwgMTQ3LCAxLCAyMzUsIDExNSwgMTQ3LCAxLCAKLSAgICAyMjgsIDIzLCAxNDcsIDEsIDIxNiwgMTE1LCAxNDcsIDEsIDIxNiwgMTA1LCAxNDcsIDEsIDI0OCwgODYsIDE0NywgMSwgCi0gICAgMjQ4LCA3MCwgMTQ3LCAxLCAyMjgsIDE5OCwgMTQ3LCAxLCAyMTgsIDUyLCAxNDcsIDEsIDIxNywgMTYxLCAxNDcsIDEsIAotICAgIDI0OCwgMTY0LCAxNDcsIDEsIDI0NywgMjMyLCAxNDcsIDEsIDIwNSwgMTQ3LCAxLCAxOTMsIDE0NywgMSwgMjI2LCAyMywgCi0gICAgMTQ3LCAxLCAyNTIsIDEwNywgMTQ3LCAxLCAyNTEsIDE5NSwgMTQ3LCAxLCAxODgsIDE0NywgMSwgMTg2LCAxNDcsIDEsIAotICAgIDIwMywgMTQ3LCAxLCAyMzMsIDE1NywgMTQ3LCAxLCAyMzIsIDIxMywgMTQ3LCAxLCAyMTUsIDEsIDE0NywgMSwgMjIxLCAyNCwgCi0gICAgMTQ3LCAxLCAyMTksIDE1NywgMTQ3LCAxLCAyMjIsIDIwMiwgMTQ3LCAxLCAxNTksIDE0NywgNSwgMjI4LCA2MCwgMTQ3LCA1LCAKLSAgICAyNTMsIDkxLCAxNDcsIDMwLCA1LCAyNTQsIDIzMiwgMTQ3LCAzMCwgNSwgNzIsIDE0NywgMzAsIDUsIDIzNiwgMjgsIDE0NywgCi0gICAgMzAsIDUsIDY5LCAxNDcsIDMwLCA1LCAyMTUsIDkyLCAxNDcsIDMwLCA1LCAxNjEsIDE0OSwgMTQ3LCAzMCwgNSwgMTYxLCAKLSAgICAyMjMsIDgyLCAxNDcsIDMwLCA1LCA3NCwgMTQ3LCAzMCwgNSwgMjU0LCAxMDgsIDE0NywgMzAsIDUsIDc1LCAxNDcsIDMwLCAKLSAgICA1LCAyNTMsIDEwOCwgMTQ3LCA1LCAyMTQsIDEzMywgMTQ3LCAyNTQsIDEwOSwgMjMzLCA0NywgNzcsIDE0NywgMjUzLCAxMDksIAotICAgIDIzMywgNDcsIDc3LCAxNDcsIDEsIDIyMywgODEsIDE0NywgMSwgMjIzLCAxOTIsIDE0NywgMSwgMjEyLCAxNjAsIDE0NywgMSwgCi0gICAgMTYxLCAyMjMsIDgyLCAxNDcsIDEsIDE2MSwgMjMyLCAyMTQsIDE0NywgMzAsIDUsIDE2MSwgMTUwLCAxNDcsIDMwLCA1LCAKLSAgICAxNjEsIDIzMiwgMjE0LCAxNDcsIDIxLCAyMTIsIDc5LCAxNDcsIDIxLCAxMTYsIDE0NywgMjEsIDEwOSwgMTQ3LCAyMSwgCi0gICAgMTY2LCAxNDcsIDIxLCAxNjMsIDE0NywgMjEsIDE4MCwgMTQ3LCAyMSwgMTg5LCAxNDcsIDIxLCAxOTgsIDE0NywgMjEsIAotICAgIDE5NSwgMTQ3LCAyMSwgMjAwLCAxNDcsIDIzNSwgMTU5LCAxNDcsIDEsIDIxNCwgNDksIDE0NywgMjQzLCAyMjgsIDEyMiwgCi0gICAgMjI0LCAxNjYsIDE0NywgMjQzLCAyMjgsIDEyMiwgMjQyLCA5LCAxNDcsIDI0MywgMjI4LCAxMzMsIDIyNCwgMTY0LCAxNDcsIAotICAgIDI0MywgMjI4LCAxMjIsIDIyMCwgNDUsIDE0NywgMjQzLCAyMjgsIDEyMiwgMjQ1LCAxNDUsIDE0NywgMjQzLCAyMjgsIDEzMywgCi0gICAgMjIwLCA0NCwgMTc4LCA1LCAyNTMsIDI0MiwgMTc4LCA1LCAyMTQsIDEyOCwgMTc4LCAxLCA2MSwgMTc4LCAxLCAyNTQsIAotICAgIDIzMiwgMTc4LCAxLCA3MiwgMTc4LCAxLCAyMzYsIDI4LCAxNzgsIDEsIDY5LCAxNzgsIDEsIDIxNSwgOTIsIDE3OCwgMSwgCi0gICAgNzQsIDE3OCwgMSwgMjQ1LCAxNjUsIDE3OCwgMSwgMjU0LCAxMDgsIDE3OCwgMSwgNzUsIDE3OCwgMSwgMjI3LCA0OSwgMTc4LCAKLSAgICAxLCAyNTMsIDEwOCwgMTc4LCAxLCAxODEsIDE3OCwgMSwgMjI5LCAxNTksIDE3OCwgMSwgMjUwLCAyMTksIDE3OCwgMSwgCi0gICAgMjM1LCAxMzksIDE3OCwgMSwgMjI4LCAyMywgMTc4LCAxLCAyMTYsIDExNSwgMTc4LCAxLCAyMjgsIDE5OCwgMTc4LCAxLCAKLSAgICAyMTgsIDUyLCAxNzgsIDEsIDIwNSwgMTc4LCAxLCAyMjgsIDE4OSwgMTc4LCAxLCAxOTMsIDE3OCwgMSwgMTg4LCAxNzgsIDEsIAotICAgIDE4NiwgMTc4LCAxLCAyMDMsIDE3OCwgMSwgMjIzLCA4MSwgMTc4LCAxLCAyMzMsIDE1NywgMTc4LCAxLCAyMzIsIDIxMywgCi0gICAgMTc4LCAxLCAyMzIsIDIxMiwgMTc4LCAxLCAyMTUsIDEsIDE3OCwgMSwgMjIxLCAyNCwgMTc4LCAxLCAyMTksIDE1NywgMTc4LCAKLSAgICAxLCAyMjIsIDIwMiwgMTc4LCAxLCAxNTksIDE3OCwgMzAsIDUsIDI1NCwgMjMyLCAxNzgsIDMwLCA1LCA3MiwgMTc4LCAzMCwgCi0gICAgNSwgMjM2LCAyOCwgMTc4LCAzMCwgNSwgNjksIDE3OCwgMzAsIDUsIDIxNSwgOTIsIDE3OCwgMzAsIDUsIDc0LCAxNzgsIDMwLCAKLSAgICA1LCAyNDUsIDE2NSwgMTc4LCAzMCwgNSwgMjU0LCAxMDgsIDE3OCwgMzAsIDUsIDc1LCAxNzgsIDMwLCA1LCAyMjcsIDQ5LCAKLSAgICAxNzgsIDMwLCA1LCAyNTMsIDEwOCwgMTc4LCA1LCAyMTQsIDEzMywgMTc4LCAyMjcsIDcwLCAxNzgsIDI1MywgMTA5LCAyMzMsIAotICAgIDQ3LCA3NywgMTc4LCAyMSwgMjEyLCA3OSwgMTc4LCAyMSwgMTE2LCAxNzgsIDIxLCAxMDksIDE3OCwgMjEsIDE2NiwgMTc4LCAKLSAgICAyMSwgMTYzLCAxNzgsIDIxLCAxODAsIDE3OCwgMjEsIDE4OSwgMTc4LCAyMSwgMTk4LCAxNzgsIDIxLCAxOTUsIDE3OCwgMjEsIAotICAgIDIwMCwgMTc4LCA1MCwgMjE3LCAyMDAsIDE3OCwgNTAsIDEyMiwgMjQwLCAyMDAsIDE3OCwgNTAsIDEyMiwgMjE3LCAxMDAsIAotICAgIDE3OCwgMjQ4LCA5MiwgNTIsIDE3OCwgMjMwLCAyMDUsIDUyLCAxNzgsIDIxMywgMzYsIDUyLCAxNzgsIDI0OCwgMzgsIDUyLCAKLSAgICAxNzgsIDI0OSwgNzksIDUyLCAxNzgsIDI1MywgMTUzLCA3OCwgNTIsIDE3OCwgMjIzLCAyOSwgNTIsIDE3OCwgNTAsIDUyLCAKLSAgICAxMzksIDUsIDI1MCwgMTg3LCAxMzksIDUsIDI1MywgMjQyLCAxMzksIDUsIDIxNCwgMTI4LCAxMzksIDEsIDYxLCAxMzksIDEsIAotICAgIDI1NCwgMjMyLCAxMzksIDEsIDcyLCAxMzksIDEsIDIzNiwgMjgsIDEzOSwgMSwgNjksIDEzOSwgMSwgMjE1LCA5MiwgMTM5LCAKLSAgICAxLCAxNjEsIDE0OSwgMTM5LCAxLCAxNjEsIDE1MCwgMTM5LCAxLCA3NCwgMTM5LCAxLCAyNDUsIDE2NSwgMTM5LCAxLCAyNTQsIAotICAgIDEwOCwgMTM5LCAxLCA3NSwgMTM5LCAxLCAyMjcsIDQ5LCAxMzksIDEsIDI1MywgMTA4LCAxMzksIDEsIDE4MSwgMTM5LCAxLCAKLSAgICAyMzQsIDEzOCwgMTM5LCAxLCAyNDMsIDExMCwgMTM5LCAxLCAyNDIsIDIyNSwgMTM5LCAxLCAyMjksIDE1OSwgMTM5LCAxLCAKLSAgICAyNTAsIDIxOSwgMTM5LCAxLCAyNTAsIDkyLCAxMzksIDEsIDIzNSwgMTM5LCAxMzksIDEsIDIzNSwgMTE1LCAxMzksIDEsIAotICAgIDIyOCwgMjMsIDEzOSwgMSwgMjE2LCAxMTUsIDEzOSwgMSwgMjE2LCAxMDUsIDEzOSwgMSwgMjQ4LCA4NiwgMTM5LCAxLCAKLSAgICAyNDgsIDcwLCAxMzksIDEsIDIyOCwgMTk4LCAxMzksIDEsIDIxOCwgNTIsIDEzOSwgMSwgMjE3LCAxNjEsIDEzOSwgMSwgCi0gICAgMjQ4LCAxNjQsIDEzOSwgMSwgMjQ3LCAyMzIsIDEzOSwgMSwgMjA1LCAxMzksIDEsIDE5MywgMTM5LCAxLCAyMjYsIDIzLCAKLSAgICAxMzksIDEsIDI1MiwgMTA3LCAxMzksIDEsIDI1MSwgMTk1LCAxMzksIDEsIDE4OCwgMTM5LCAxLCAxODYsIDEzOSwgMSwgCi0gICAgMjAzLCAxMzksIDEsIDIyMywgODEsIDEzOSwgMSwgMjMzLCAxNTcsIDEzOSwgMSwgMjMyLCAyMTMsIDEzOSwgMSwgMjE1LCAxLCAKLSAgICAxMzksIDEsIDIyMSwgMjQsIDEzOSwgMSwgMjE5LCAxNTcsIDEzOSwgMSwgMjIyLCAyMDIsIDEzOSwgMSwgMTU5LCAxMzksIDUsIAotICAgIDI1MywgOTEsIDEzOSwgMzAsIDUsIDI1NCwgMjMyLCAxMzksIDMwLCA1LCA3MiwgMTM5LCAzMCwgNSwgMjM2LCAyOCwgMTM5LCAKLSAgICAzMCwgNSwgNjksIDEzOSwgMzAsIDUsIDIxNSwgOTIsIDEzOSwgMzAsIDUsIDE2MSwgMTQ5LCAxMzksIDMwLCA1LCAxNjEsIAotICAgIDIyMywgODIsIDEzOSwgMzAsIDUsIDc0LCAxMzksIDMwLCA1LCAyNDUsIDE2NSwgMTM5LCAzMCwgNSwgMjU0LCAxMDgsIDEzOSwgCi0gICAgMzAsIDUsIDc1LCAxMzksIDMwLCA1LCAyMjcsIDQ5LCAxMzksIDMwLCA1LCAyNTMsIDEwOCwgMTM5LCA1LCAyMTQsIDEzMywgCi0gICAgMTM5LCAyMzMsIDQ3LCA3NywgMTM5LCAyNTQsIDEwOSwgMjMzLCA0NywgNzcsIDEzOSwgMSwgMjE2LCAxNDEsIDEzOSwgMSwgCi0gICAgMjQ1LCAyNDksIDEzOSwgMSwgMTYxLCAyMjMsIDgyLCAxMzksIDEsIDE2MSwgMjMyLCAyMTQsIDEzOSwgMzAsIDUsIDE2MSwgCi0gICAgMTUwLCAxMzksIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxMzksIDIxLCAyMTIsIDc5LCAxMzksIDIxLCAxMTYsIDEzOSwgMjEsIAotICAgIDEwOSwgMTM5LCAyMSwgMTY2LCAxMzksIDIxLCAxNjMsIDEzOSwgMjEsIDE4MCwgMTM5LCAyMSwgMTg5LCAxMzksIDIxLCAKLSAgICAxOTgsIDEzOSwgMjEsIDE5NSwgMTM5LCAyMSwgMjAwLCAxMzksIDI0MywgMjI4LCAyMSwgMjEyLCA4MCwgMzEsIDIyNywgCi0gICAgMTAyLCAyMjUsIDEwMywgNjUsIDE2MywgMTM5LCAyNDMsIDIyOCwgMjEsIDEyMiwgMzEsIDIyNywgMTAyLCAyMjUsIDEwMywgCi0gICAgNjUsIDE2MywgMTM5LCAyNDMsIDIyOCwgMjEsIDExNywgMzEsIDIyNywgMTAyLCAyMjUsIDEwMywgNjUsIDE2MywgMTM5LCAKLSAgICAyNDMsIDIyOCwgMjEsIDEzMywgMzEsIDIyNywgMTAyLCAyMjUsIDEwMywgNjUsIDE2MywgMTM5LCAyNDMsIDIyOCwgMjEsIAotICAgIDEyMiwgMzEsIDI0NSwgOSwgMjI1LCAxMDMsIDY1LCAxNjMsIDEzOSwgMjQzLCAyMjgsIDIxLCAxMTcsIDMxLCAyNDUsIDksIAotICAgIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgMTMzLCAzMSwgMjQ1LCA5LCAyMjUsIDEwMywgNjUsIDE2MywgCi0gICAgMTM5LCA1LCAyMTYsIDQ5LCAxNTUsIDUsIDI1MywgMjQyLCAxNTUsIDUsIDIxNCwgMTI4LCAxNTUsIDEsIDYxLCAxNTUsIDEsIAotICAgIDI1NCwgMjMyLCAxNTUsIDEsIDcyLCAxNTUsIDEsIDIzNiwgMjgsIDE1NSwgMSwgNjksIDE1NSwgMSwgMjE1LCA5MiwgMTU1LCAKLSAgICAxLCAxNjEsIDE0OSwgMTU1LCAxLCAxNjEsIDE1MCwgMTU1LCAxLCA3NCwgMTU1LCAxLCAyNDUsIDE2NSwgMTU1LCAxLCAyNTQsIAotICAgIDEwOCwgMTU1LCAxLCA3NSwgMTU1LCAxLCAyMjcsIDQ5LCAxNTUsIDEsIDI1MywgMTA4LCAxNTUsIDEsIDE4MSwgMTU1LCAxLCAKLSAgICAyMzQsIDEzOCwgMTU1LCAxLCAyNDMsIDExMCwgMTU1LCAxLCAyNDIsIDIyNSwgMTU1LCAxLCAyMjksIDE1OSwgMTU1LCAxLCAKLSAgICAyNTAsIDIxOSwgMTU1LCAxLCAyNTAsIDkyLCAxNTUsIDEsIDIzNSwgMTM5LCAxNTUsIDEsIDIzNSwgMTE1LCAxNTUsIDEsIAotICAgIDIyOCwgMjMsIDE1NSwgMSwgMjE2LCAxMTUsIDE1NSwgMSwgMjE2LCAxMDUsIDE1NSwgMSwgMjQ4LCA4NiwgMTU1LCAxLCAKLSAgICAyNDgsIDcwLCAxNTUsIDEsIDIyOCwgMTk4LCAxNTUsIDEsIDIxOCwgNTIsIDE1NSwgMSwgMjE3LCAxNjEsIDE1NSwgMSwgCi0gICAgMjQ4LCAxNjQsIDE1NSwgMSwgMjQ3LCAyMzIsIDE1NSwgMSwgMjA1LCAxNTUsIDEsIDE5MywgMTU1LCAxLCAyMjYsIDIzLCAKLSAgICAxNTUsIDEsIDI1MiwgMTA3LCAxNTUsIDEsIDI1MSwgMTk1LCAxNTUsIDEsIDE4OCwgMTU1LCAxLCAxODYsIDE1NSwgMSwgCi0gICAgMjAzLCAxNTUsIDEsIDIyMywgODEsIDE1NSwgMSwgMjMzLCAxNTcsIDE1NSwgMSwgMjMyLCAyMTMsIDE1NSwgMSwgMjE1LCAxLCAKLSAgICAxNTUsIDEsIDIyMSwgMjQsIDE1NSwgMSwgMjE5LCAxNTcsIDE1NSwgMSwgMjIyLCAyMDIsIDE1NSwgMSwgMTU5LCAxNTUsIDUsIAotICAgIDIyOCwgNjAsIDE1NSwgNSwgMjUzLCA5MSwgMTU1LCAzMCwgNSwgMjU0LCAyMzIsIDE1NSwgMzAsIDUsIDcyLCAxNTUsIDMwLCAKLSAgICA1LCAyMzYsIDI4LCAxNTUsIDMwLCA1LCA2OSwgMTU1LCAzMCwgNSwgMjE1LCA5MiwgMTU1LCAzMCwgNSwgMTYxLCAxNDksIAotICAgIDE1NSwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgMTU1LCAzMCwgNSwgNzQsIDE1NSwgMzAsIDUsIDI0NSwgMTY1LCAxNTUsIDMwLCAKLSAgICA1LCAyNTQsIDEwOCwgMTU1LCAzMCwgNSwgNzUsIDE1NSwgMzAsIDUsIDIyNywgNDksIDE1NSwgMzAsIDUsIDI1MywgMTA4LCAKLSAgICAxNTUsIDUsIDIxNCwgMTMzLCAxNTUsIDIzMywgNDcsIDc3LCAxNTUsIDI1NCwgMTA5LCAyMzMsIDQ3LCA3NywgMTU1LCAxLCAKLSAgICAyNDQsIDE2NCwgMTU1LCAxLCAxNjEsIDIyMywgODIsIDE1NSwgMSwgMTYxLCAyMzIsIDIxNCwgMTU1LCAzMCwgNSwgMTYxLCAKLSAgICAxNTAsIDE1NSwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDE1NSwgMjEsIDIxMiwgNzksIDE1NSwgMjEsIDExNiwgMTU1LCAyMSwgCi0gICAgMTA5LCAxNTUsIDIxLCAxNjYsIDE1NSwgMjEsIDE2MywgMTU1LCAyMSwgMTgwLCAxNTUsIDIxLCAxODksIDE1NSwgMjEsIAotICAgIDE5OCwgMTU1LCAyMSwgMTk1LCAxNTUsIDIxLCAyMDAsIDE1NSwgNSwgMjM1LCAxMDQsIDE1NSwgNSwgMjE1LCAxMzIsIDEzMCwgCi0gICAgNSwgMjUzLCAyNDIsIDEzMCwgNSwgMjE0LCAxMjgsIDEzMCwgMSwgNjEsIDEzMCwgMSwgMjU0LCAyMzIsIDEzMCwgMSwgNzIsIAotICAgIDEzMCwgMSwgMjM2LCAyOCwgMTMwLCAxLCA2OSwgMTMwLCAxLCAyMTUsIDkyLCAxMzAsIDEsIDE2MSwgMTQ5LCAxMzAsIDEsIAotICAgIDE2MSwgMTUwLCAxMzAsIDEsIDc0LCAxMzAsIDEsIDI0NSwgMTY1LCAxMzAsIDEsIDI1NCwgMTA4LCAxMzAsIDEsIDc1LCAKLSAgICAxMzAsIDEsIDIyNywgNDksIDEzMCwgMSwgMjUzLCAxMDgsIDEzMCwgMSwgMTgxLCAxMzAsIDEsIDIzNCwgMTM4LCAxMzAsIDEsIAotICAgIDI0MywgMTEwLCAxMzAsIDEsIDI0MiwgMjI1LCAxMzAsIDEsIDIyOSwgMTU5LCAxMzAsIDEsIDI1MCwgMjE5LCAxMzAsIDEsIAotICAgIDI1MCwgOTIsIDEzMCwgMSwgMjM1LCAxMzksIDEzMCwgMSwgMjM1LCAxMTUsIDEzMCwgMSwgMjI4LCAyMywgMTMwLCAxLCAKLSAgICAyMTYsIDExNSwgMTMwLCAxLCAyMTYsIDEwNSwgMTMwLCAxLCAyNDgsIDg2LCAxMzAsIDEsIDI0OCwgNzAsIDEzMCwgMSwgCi0gICAgMjI4LCAxOTgsIDEzMCwgMSwgMjE4LCA1MiwgMTMwLCAxLCAyMTcsIDE2MSwgMTMwLCAxLCAyNDgsIDE2NCwgMTMwLCAxLCAKLSAgICAyNDcsIDIzMiwgMTMwLCAxLCAyMDUsIDEzMCwgMSwgMjI4LCAxODksIDEzMCwgMSwgMTkzLCAxMzAsIDEsIDIyNiwgMjMsIAotICAgIDEzMCwgMSwgMjUyLCAxMDcsIDEzMCwgMSwgMjUxLCAxOTUsIDEzMCwgMSwgMTg4LCAxMzAsIDEsIDE4NiwgMTMwLCAxLCAKLSAgICAyMDMsIDEzMCwgMSwgMjIzLCA4MSwgMTMwLCAxLCAyMzMsIDE1NywgMTMwLCAxLCAyMzIsIDIxMywgMTMwLCAxLCAyMzIsIAotICAgIDIxMiwgMTMwLCAxLCAyMTUsIDEsIDEzMCwgMSwgMjIxLCAyNCwgMTMwLCAxLCAyMTksIDE1NywgMTMwLCAxLCAyMjIsIDIwMiwgCi0gICAgMTMwLCAxLCAxNTksIDEzMCwgMSwgMjE2LCA4OCwgMTMwLCA1LCAyNTMsIDkxLCAxMzAsIDMwLCA1LCAyNTQsIDIzMiwgMTMwLCAKLSAgICAzMCwgNSwgNzIsIDEzMCwgMzAsIDUsIDIzNiwgMjgsIDEzMCwgMzAsIDUsIDY5LCAxMzAsIDMwLCA1LCAyMTUsIDkyLCAxMzAsIAotICAgIDMwLCA1LCAxNjEsIDE0OSwgMTMwLCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxMzAsIDMwLCA1LCA3NCwgMTMwLCAzMCwgNSwgCi0gICAgMjQ1LCAxNjUsIDEzMCwgMzAsIDUsIDI1NCwgMTA4LCAxMzAsIDMwLCA1LCA3NSwgMTMwLCAzMCwgNSwgMjI3LCA0OSwgMTMwLCAKLSAgICAzMCwgNSwgMjUzLCAxMDgsIDEzMCwgNSwgMjE0LCAxMzMsIDEzMCwgMSwgNjIsIDIyMywgMjI1LCAxMzAsIDI1MywgMTA5LCAKLSAgICAyMzMsIDQ3LCA3NywgMTMwLCAxLCAxNjEsIDIyMywgODIsIDEzMCwgMSwgMTYxLCAyMzIsIDIxNCwgMTMwLCAzMCwgNSwgCi0gICAgMTYxLCAxNTAsIDEzMCwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDEzMCwgMjEsIDIxMiwgNzksIDEzMCwgMjEsIDExNiwgMTMwLCAKLSAgICAyMSwgMTA5LCAxMzAsIDIxLCAxNjYsIDEzMCwgMjEsIDE2MywgMTMwLCAyMSwgMTgwLCAxMzAsIDIxLCAxODksIDEzMCwgMjEsIAotICAgIDE5OCwgMTMwLCAyMSwgMTk1LCAxMzAsIDIxLCAyMDAsIDEzMCwgNTAsIDIxNywgMjAwLCAxMzAsIDUwLCAxMjIsIDI0MCwgCi0gICAgMjAwLCAxMzAsIDUwLCAxMjIsIDIxNywgMTAwLCAxMzAsIDI0MywgMjI4LCAxMjIsIDIyNCwgMTY2LCAxMzAsIDI0MywgMjI4LCAKLSAgICAxMjIsIDI0MiwgOSwgMTMwLCAyNDMsIDIyOCwgMTMzLCAyMjQsIDE2NCwgMTMwLCAyNDgsIDk2LCA3NywgMTMwLCAxLCAyNTAsIAotICAgIDM2LCAyMjgsIDE5OSwgMTMwLCAxLCAyNTAsIDM2LCAyMDQsIDEzMCwgMSwgMjUwLCAzNiwgMjIzLCA4MiwgMTMwLCAxLCAKLSAgICAyNTAsIDM2LCAxNTAsIDEzMCwgMSwgMjUwLCAzNiwgMjMyLCAyMTQsIDEzMCwgMSwgMjUwLCAzNiwgMjM1LCAyNywgMTcyLCAKLSAgICA1LCAyNTMsIDI0MSwgMTcyLCA1LCAyMTQsIDEyNywgMTcyLCAxLCAyNTMsIDgxLCAxNzIsIDEsIDI1NCwgMTg3LCAxNzIsIDEsIAotICAgIDI1NCwgMTI4LCAxNzIsIDEsIDI1NCwgMTQzLCAxNzIsIDEsIDIzNSwgMTQ5LCAxNzIsIDEsIDIzNiwgMjcsIDE3MiwgMSwgCi0gICAgMjE1LCA4NCwgMTcyLCAxLCAyMTUsIDg2LCAxNzIsIDEsIDIzNSwgMTcxLCAxNzIsIDEsIDIzNSwgMTcyLCAxNzIsIDEsIAotICAgIDIzNiwgMTMsIDE3MiwgMSwgMjM2LCAxNSwgMTcyLCAxLCAyNDQsIDI0MSwgMTcyLCAxLCAyNDUsIDE2MSwgMTcyLCAxLCAKLSAgICAyNTQsIDk2LCAxNzIsIDEsIDIyNiwgMjMyLCAxNzIsIDEsIDIyNywgNDMsIDE3MiwgMSwgMjUzLCA5NCwgMTcyLCAxLCAyNTQsIAotICAgIDU1LCAyMzQsIDE5MywgMTcyLCAxLCAyMzIsIDE0LCAyMzQsIDE5MywgMTcyLCAxLCAyNTQsIDU1LCAyNDMsIDU4LCAxNzIsIAotICAgIDEsIDIzMiwgMTQsIDI0MywgNTgsIDE3MiwgMSwgMjM0LCAyMzQsIDIzMCwgNDAsIDE3MiwgMSwgMjIyLCAxNTIsIDI0MywgCi0gICAgNTgsIDE3MiwgMSwgMjU0LCA1NSwgMjUwLCAxNDksIDE3MiwgMSwgMjMyLCAxNCwgMjUwLCAxNDksIDE3MiwgMSwgMjU0LCAKLSAgICA1NSwgMjM1LCAxMjgsIDE3MiwgMSwgMjMyLCAxNCwgMjM1LCAxMjgsIDE3MiwgMSwgMjE4LCA0NiwgMjMwLCA0MCwgMTcyLCAKLSAgICAxLCAyMTgsIDQ2LCAyMjIsIDE1MSwgMjMwLCA0MSwgMTcyLCAxLCAyMjIsIDE1MiwgMjM1LCAxMjgsIDE3MiwgMSwgMjU0LCAKLSAgICA1NSwgMjE2LCAxMTMsIDE3MiwgMSwgMjMyLCAxNCwgMjE2LCAxMTMsIDE3MiwgMSwgMjU0LCA1NSwgMjQ4LCA3NywgMTcyLCAKLSAgICAxLCAyMzIsIDE0LCAyNDgsIDc3LCAxNzIsIDEsIDIzMCwgMTI0LCAyMzAsIDIsIDE3MiwgMSwgMjIyLCAxNTIsIDI0OCwgNzcsIAotICAgIDE3MiwgMSwgMjU0LCA1NSwgMjE3LCAyMzcsIDE3MiwgMSwgMjMyLCAxNCwgMjE3LCAyMzcsIDE3MiwgMSwgMjU0LCA1NSwgCi0gICAgMjQ4LCA5MCwgMTcyLCAxLCAyMzIsIDE0LCAyNDgsIDkwLCAxNzIsIDEsIDI0OCwgMTE5LCAyMzAsIDIsIDE3MiwgMSwgMjIyLCAKLSAgICAxNTIsIDI0OCwgOTAsIDE3MiwgMSwgMjU0LCA1NSwgMjI2LCAxMDIsIDE3MiwgMSwgMjMyLCAxNCwgMjI2LCAxMDIsIDE3MiwgCi0gICAgMSwgMjU0LCA1NSwgMjUyLCAzMiwgMTcyLCAxLCAyMzIsIDE0LCAyNTIsIDMyLCAxNzIsIDEsIDIzMSwgMTk1LCAxNzIsIDEsIAotICAgIDI1NCwgNDAsIDI1MiwgMzIsIDE3MiwgMSwgMjEzLCA0MiwgMTcyLCAxLCAyMjQsIDI2LCAxNzIsIDEsIDI0OCwgMTE5LCAKLSAgICAyMzMsIDkxLCAxNzIsIDEsIDIxNCwgMjM0LCAxNzIsIDEsIDIxOCwgNDYsIDIyMiwgMTI4LCAxNzIsIDEsIDIzMCwgMTI0LCAKLSAgICAyMjIsIDEyOCwgMTcyLCAxLCAyNDgsIDExOSwgMjIyLCAxMjgsIDE3MiwgMSwgMjQxLCAyMjYsIDE3MiwgMSwgMjMwLCAxMjQsIAotICAgIDIzMywgOTEsIDE3MiwgMSwgMjQ0LCAxMjUsIDE3MiwgNSwgMjU0LCA4NSwgMTcyLCAzMCwgNSwgMjU0LCAxMzgsIDE3MiwgCi0gICAgMzAsIDUsIDIzNCwgMTYxLCAyNTQsIDE0NSwgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDI1NCwgMTQ1LCAxNzIsIDMwLCA1LCAKLSAgICAyMzQsIDE2MSwgMjM1LCAxNjgsIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyMzUsIDE2OCwgMTcyLCAzMCwgNSwgMjM0LCAxNjEsIAotICAgIDIyNiwgMjEyLCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjI2LCAyMTIsIDE3MiwgMzAsIDUsIDI0MywgOTksIDE3MiwgMzAsIAotICAgIDUsIDIzNCwgMjQsIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyMzQsIDI0LCAxNzIsIDMwLCA1LCAyMzQsIDI2LCAyNDgsIDE4LCAKLSAgICAxNzIsIDMwLCA1LCAyMzQsIDI1LCAyNDIsIDI4LCAyNTQsIDEzOCwgMTcyLCAzMCwgNSwgMjM0LCAyNSwgMjQyLCAyOCwgCi0gICAgMjQ3LCAxODAsIDI1NCwgMTM4LCAxNzIsIDMwLCA1LCAyMzQsIDI1LCAyNDIsIDI4LCAyNDMsIDU3LCAxNzIsIDMwLCA1LCAKLSAgICAyNDMsIDU3LCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjQzLCA5OSwgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDI0MywgNTcsIAotICAgIDE3MiwgMjI1LCAyNywgMjMzLCAyMjgsIDE1NCwgMTM3LCAyMzQsIDM4LCAyMzQsIDI1MCwgMTU0LCAxMzcsIDIzNCwgMTE0LCAKLSAgICAyMzQsIDEzNCwgMTU0LCAxMzcsIDIzNCwgMTE0LCAyMzQsIDEwNywgMTU0LCAxMzcsIDIzNCwgMTE0LCAyMzQsIDEwNCwgCi0gICAgMTU0LCAxMzcsIDIzNCwgMTE0LCAyMzQsIDExMSwgMTU0LCAxMzcsIDIzNCwgMTE0LCAyMjQsIDQ2LCAxNTQsIDEzNywgMjI5LCAKLSAgICA5MSwgMjI5LCA3OCwgMTU0LCAxMzcsIDI1MCwgMjQsIDI1MCwgODMsIDE1NCwgMTM3LCAyNTAsIDI0LCAyNTAsIDMyLCAxNTQsIAotICAgIDEzNywgMjUwLCAyNCwgMjUwLCA4MiwgMTU0LCAxMzcsIDIxOSwgMjQzLCAyMTksIDI0MiwgMTU0LCAxMzcsIDI1MCwgMjQsIAotICAgIDI1MCwgMjAsIDE1NCwgMTM3LCAyMTIsIDIzNiwgMjEyLCAyNDMsIDE1NCwgMTM3LCAyNDcsIDEwMCwgMjUwLCA4OSwgMTU0LCAKLSAgICAxMzcsIDIxMSwgMjExLCAyMjYsIDExMSwgMTU0LCAxMzcsIDIxNywgMTEwLCAyMTcsIDE1MywgMTU0LCAxMzcsIDIxNywgCi0gICAgMTEwLCAyMzAsIDIxLCAxNTQsIDEzNywgMjE3LCAxMTAsIDIyNSwgMjQzLCAxNTQsIDEzNywgMjI4LCAxODYsIDIyOSwgMTgwLCAKLSAgICAxNTQsIDEzNywgMjQ3LCAxMDAsIDI0OCwgMTksIDE1NCwgMTM3LCAyMTEsIDIxMSwgMjE4LCA2LCAxNTQsIDEzNywgMjE3LCAKLSAgICAxMTAsIDIxNywgODUsIDE1NCwgMTM3LCAyMTcsIDExMCwgMjE3LCAxNTcsIDE1NCwgMTM3LCAyMTcsIDExMCwgMjE3LCAxMDcsIAotICAgIDE1NCwgMTM3LCAyMjgsIDE4NiwgMjI4LCA5MiwgMTU0LCAxMzcsIDI1MSwgMTI5LCAyNTIsIDgzLCAxNTQsIDEzNywgMjI1LCAKLSAgICAxNTEsIDIyNSwgMTc0LCAxNTQsIDEzNywgMjI1LCAyNTQsIDIyNSwgMjQ1LCAxNTQsIDEzNywgMjQ0LCAxMywgMjQ0LCAxNjQsIAotICAgIDE1NCwgMTM3LCAyMjUsIDI1NCwgMjI2LCAxNywgMTU0LCAxMzcsIDI0NCwgMTMsIDI0NCwgMTQxLCAxNTQsIDEzNywgMjI1LCAKLSAgICAyNTQsIDIyMiwgMTYyLCAxNTQsIDEzNywgMjMwLCAyMzIsIDE4OCwgMTU0LCAxMzcsIDIxMiwgMjM2LCAyMTMsIDY4LCAxNTQsIAotICAgIDEzNywgMjIzLCAxMTMsIDIyMywgNTAsIDE1NCwgMTM3LCAyMjMsIDUxLCAxNTQsIDEzNywgMjMyLCAyMDksIDIzMiwgMjM1LCAKLSAgICAxNTQsIDEzNywgMjMyLCAxNTYsIDE1NCwgMTM3LCAyMTMsIDIxNSwgMjE0LCA0NSwgMTU0LCAxMzcsIDIxOSwgMjQzLCAyMjIsIAotICAgIDE3NywgMTU0LCAxMzcsIDIxOSwgMjQzLCAyMjMsIDI1LCAxNTQsIDEzNywgMjE5LCAyNDMsIDIxOSwgMjYsIDE1NCwgMTM3LCAKLSAgICAyNDEsIDU1LCAyNDEsIDE0NSwgMTU0LCAxMzcsIDIzMiwgMjA5LCAyNTAsIDUsIDE1NCwgMTM3LCAxNTcsIDI1NCwgMjQsIAotICAgIDE1NCwgMTM3LCAyNDEsIDU1LCAyMjgsIDE4MSwgMTU0LCAxMzcsIDIyNiwgMTk1LCAxNTQsIDEzNywgMjIyLCAxNDYsIDYxLCAKLSAgICAxNTQsIDEzNywgMjMyLCA5LCAyNDIsIDAsIDE1NCwgMTM3LCAyMjIsIDE0NiwgMjU0LCAyMzIsIDE1NCwgMTM3LCAyMjIsIAotICAgIDE0NiwgMjU0LCA0NSwgMTU0LCAxMzcsIDIyMiwgMTQ2LCA3MiwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyMzYsIDI4LCAxNTQsIAotICAgIDEzNywgMjIyLCAxNDYsIDIxNSwgMTgzLCAxNTQsIDEzNywgMjIyLCAxNDYsIDIxNSwgMTgxLCAxNTQsIDEzNywgMjIyLCAKLSAgICAxNDYsIDY5LCAxNTQsIDEzNywgMjIyLCAxNDYsIDIxNSwgOTIsIDE1NCwgMTM3LCAyMjYsIDAsIDE1NCwgMjQ5LCAzOSwgMTYsIAotICAgIDI1MiwgODQsIDE1NCwgMTM3LCAyMjIsIDE0NiwgNzQsIDE1NCwgMTM3LCAyMjIsIDE0NiwgMjU0LCAxNDgsIDE1NCwgMTM3LCAKLSAgICAyMjIsIDE0NiwgNzUsIDE1NCwgMTM3LCAyMjIsIDE0NiwgMjU0LCAxMDksIDIzMiwgNCwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAKLSAgICAyNTQsIDEwOSwgMjMyLCA1LCAxNTQsIDEzNywgMjMzLCAxMzAsIDE1NCwgMTM3LCAyMzIsIDEsIDE1NCwgMTM3LCAyMzIsIDIsIAotICAgIDE1NCwgMTM3LCAyMzIsIDksIDI0NSwgMTM3LCAxNTQsIDEzNywgMjMyLCA5LCAyMTcsIDEwOSwgMTU0LCAxMzcsIDIzMiwgOSwgCi0gICAgMjE2LCAxODYsIDE1NCwgMTM3LCAyMzIsIDksIDI1MCwgNzEsIDE1NCwgMTM3LCAyMTcsIDE1MSwgMTU0LCAxMzcsIDIyOSwgCi0gICAgMzYsIDE1NCwgMTM3LCAyMTMsIDYyLCAxNTQsIDEzNywgMjQ0LCA0LCAxNTQsIDIxLCAyMTIsIDc5LCAxNTQsIDIxLCAxMTYsIAotICAgIDE1NCwgMjEsIDEwOSwgMTU0LCAyMSwgMTY2LCAxNTQsIDIxLCAxNjMsIDE1NCwgMjEsIDE4MCwgMTU0LCAyMSwgMTg5LCAKLSAgICAxNTQsIDIxLCAxOTgsIDE1NCwgMjEsIDE5NSwgMTU0LCAyMSwgMjAwLCAxNTQsIDEzNywgMjU0LCAyMCwgMTU0LCAxMzcsIAotICAgIDIzNCwgMTEyLCAyMzMsIDExMiwgMSwgMjM0LCAzNywgMjMzLCAxMTIsIDEsIDIzNCwgMTE0LCAyMTgsIDIzNSwgMjMzLCAKLSAgICAxMTIsIDEsIDIzNCwgMTE0LCAyMTgsIDEzLCAyMzMsIDExMiwgMSwgMjI5LCA5MCwgMjMzLCAxMTIsIDEsIDI0OSwgMTc1LCAKLSAgICAyMzMsIDExMiwgMSwgMjE5LCAyNDMsIDIxOCwgMTMsIDIzMywgMTEyLCAxLCAyMjcsIDI1MywgMjMzLCAxMTIsIDEsIDI0NywgCi0gICAgOTksIDIzMywgMTEyLCAxLCAxMDgsIDIzMywgMTEyLCAxLCAyMTcsIDExMCwgMjE4LCAyMzUsIDIzMywgMTEyLCAxLCAyMTcsIAotICAgIDExMCwgMjE4LCAxMywgMjMzLCAxMTIsIDEsIDIyOCwgMTg1LCAyMzMsIDExMiwgMSwgMjUxLCAxMjgsIDIzMywgMTEyLCAxLCAKLSAgICAyMjUsIDE1MCwgMjMzLCAxMTIsIDEsIDIyNSwgMjU0LCAyMTgsIDIzNSwgMjMzLCAxMTIsIDEsIDI0NCwgMTMsIDIxOCwgMTMsIAotICAgIDIzMywgMTEyLCAxLCAyMjUsIDI1NCwgMjE4LCAxMywgMjMzLCAxMTIsIDEsIDI0NCwgMTMsIDIxOCwgMjM1LCAyMzMsIDExMiwgCi0gICAgMSwgMjMwLCAyMzEsIDIzMywgMTEyLCAxLCAyMTIsIDIzNSwgMjMzLCAxMTIsIDEsIDIzMiwgMjA5LCAyMzIsIDIzNSwgMjMzLCAKLSAgICAxMTIsIDEsIDIzMiwgMjA5LCAyMzIsIDE3NiwgMjMzLCAxMTIsIDEsIDIxMywgMjE0LCAyMzMsIDExMiwgMSwgMjE5LCAyNDMsIAotICAgIDIxOCwgMjM1LCAyMzMsIDExMiwgMSwgMjQxLCA1NSwgMjE4LCAyMzUsIDIzMywgMTEyLCAxLCA3NSwgMjMzLCAxMTIsIDEsIAotICAgIDI0MSwgNTUsIDIxOCwgMTMsIDIzMywgMTEyLCAyNDUsIDEyMCwgMjMzLCAxMTIsIDMwLCA1LCA2MSwgMjMzLCAxMTIsIDMwLCAKLSAgICA1LCAyMzIsIDksIDIzNCwgMjM5LCAyMzMsIDExMiwgMzAsIDUsIDI1NCwgMjMyLCAyMzMsIDExMiwgMzAsIDUsIDI1NCwgNDUsIAotICAgIDIzMywgMTEyLCAzMCwgNSwgNzIsIDIzMywgMTEyLCAzMCwgNSwgMjM2LCAyOCwgMjMzLCAxMTIsIDMwLCA1LCAyMTMsIDEwNSwgCi0gICAgMjMzLCAxMTIsIDMwLCA1LCAyMTIsIDE2MSwgMjMzLCAxMTIsIDMwLCA1LCA2OSwgMjMzLCAxMTIsIDMwLCA1LCAyMTUsIDkyLCAKLSAgICAyMzMsIDExMiwgMzAsIDUsIDIzMiwgOSwgMjM0LCAyMiwgMjMzLCAxMTIsIDIyMSwgNjUsIDUsIDIzMiwgMjA4LCAyMzMsIAotICAgIDExMiwgMjIxLCA2NSwgNSwgMjI3LCAyNTMsIDIzMywgMTEyLCAzMCwgNSwgNzQsIDIzMywgMTEyLCAzMCwgNSwgMjQ1LCAKLSAgICAxNTIsIDIzMywgMTEyLCAzMCwgNSwgNzUsIDIzMywgMTEyLCAzMCwgNSwgMjUzLCA4MywgMjMzLCAxMTIsIDMwLCA1LCAyNTQsIAotICAgIDEwOCwgMjMzLCAxMTIsIDIzNCwgMzgsIDIzMywgMTU3LCAyMzMsIDExMiwgMTYwLCAyMzIsIDksIDI0NSwgMTM3LCAyMzMsIAotICAgIDExMiwgMTYwLCAyMzIsIDksIDIxNywgMTA5LCAyMzMsIDExMiwgMTYwLCAyMzIsIDksIDIxNywgNzEsIDIzMywgMTEyLCAKLSAgICAxNjAsIDIzMiwgOSwgMjUwLCAxNTUsIDIzMywgMTEyLCAyNTAsIDE5MiwgNzcsIDIzMywgMTEyLCAyMjksIDQ1LCAyMzMsIAotICAgIDExMiwgMjEsIDIxMiwgNzksIDIzMywgMTEyLCAyMSwgMTE2LCAyMzMsIDExMiwgMjEsIDEwOSwgMjMzLCAxMTIsIDIxLCAKLSAgICAxNjYsIDIzMywgMTEyLCAyMSwgMTYzLCAyMzMsIDExMiwgMjEsIDE4MCwgMjMzLCAxMTIsIDIxLCAxODksIDIzMywgMTEyLCAKLSAgICAyMSwgMTk4LCAyMzMsIDExMiwgMjEsIDE5NSwgMjMzLCAxMTIsIDIxLCAyMDAsIDIzMywgMTEyLCAyNDEsIDU1LCAyMjgsIAotICAgIDE4NSwgMjMzLCAxMTIsIDI0MSwgNTUsIDIzMCwgMjMxLCA2MCwgNCwgMjI3LCA3MCwgNjAsIDE1MiwgMjQyLCA5NCwgMjEyLCAKLSAgICAyNDcsIDIzMSwgNTksIDIxNiwgMTQ3LCA2MSwgNjAsIDE1MiwgMjQyLCA5NCwgMjEyLCAyNDcsIDIzMSwgNTksIDI1NSwgNjIsIAotICAgIDIyMywgMTE3LCAyNTEsIDI1MywgMTg4LCA2MCwgMTUyLCAyNDIsIDk0LCAyMTIsIDI0NywgMjMxLCA1OSwgMjU1LCA2MiwgCi0gICAgMjQyLCA5NCwgMjE2LCAxMzEsIDE4OCwgNjAsIDE1MiwgNzAsIDIxMiwgMjQ3LCAyMzEsIDU5LCAyMzEsIDE1OCwgMTg4LCAKLSAgICA2MCwgMTUyLCAyNDksIDE4OSwgMjEyLCAyNDcsIDIzMSwgNTksIDIyMSwgMzAsIDE4OCwgNjAsIDE1MiwgMjUwLCAxNzEsIAotICAgIDIxMiwgMjQ3LCAyMzEsIDU5LCAyMjUsIDI0NCwgMjIxLCAxOCwgMTg4LCA2MCwgMTUyLCAyMTIsIDI0NywgMjMxLCA1OSwgCi0gICAgMjE2LCAxMzEsIDIyMSwgMTgsIDE4OCwgNjAsIDE1MiwgMjIyLCAxMjYsIDIyMSwgMTcsIDYwLCAxNTIsIDI1MSwgNTcsIAotICAgIDIxMiwgMjQ3LCAyMzEsIDU4LCA2MCwgMTUyLCAyNTEsIDE0NiwgMjIwLCAxODMsIDIxMiwgMjQ3LCAyMzEsIDU4LCA2MCwgCi0gICAgMTUyLCAyMzUsIDE5NCwgMjE2LCAxMzAsIDYwLCAxNTIsIDI0OCwgMTIsIDIxNiwgMTMxLCAyNTEsIDU2LCA2MCwgMTUyLCAKLSAgICAyMjEsIDE3LCA2MCwgMTUyLCAyMjgsIDIsIDIyMSwgMTcsIDYwLCAxNTIsIDIxNiwgMTMxLCAyMjEsIDE3LCA2MCwgMTUyLCAKLSAgICAyMjgsIDIsIDIxNiwgMTMxLCAyMjEsIDE3LCA2MCwgMTUyLCAyMjMsIDEzMywgMjUwLCA1OSwgMjE5LCAxNjgsIDIyMSwgMTcsIAotICAgIDYwLCAxNTIsIDIyMywgMTk1LCAyNDIsIDEyMiwgMjIxLCAxNywgNjAsIDE1MiwgMjUwLCAxNzEsIDI1NSwgNjYsIDIyMywgCi0gICAgNTUsIDIzMSwgMTU3LCAxODQsIDI1MCwgMTk1LCA2MCwgMTUyLCAyNDIsIDk0LCAyMTYsIDEzMCwgNjAsIDIzMiwgMTk3LCA1LCAKLSAgICAyNTAsIDkwLCAyMjMsIDU0LCA2MCwgMjMyLCAxOTcsIDUsIDIzMywgMjMsIDIyMywgNTQsIDYwLCAyNTMsIDEyOCwgNSwgCi0gICAgMjIxLCAyNywgMjQzLCA0MSwgMjU1LCA2NywgMjIzLCA1NCwgNjAsIDI1MywgMTI4LCA1LCAyNTUsIDY0LCAxOTMsIDYwLCAKLSAgICAyNTMsIDEyOCwgNSwgMjIyLCAxMDEsIDIxNiwgMTI2LCA2MCwgNSwgMjI0LCAyMywgMjQ3LCAxMTEsIDI0MywgNDAsIDYwLCAKLSAgICA1LCAyMjQsIDIzLCAyNDcsIDExMSwgMjQyLCAxNTIsIDYwLCA1LCAyMjQsIDIzLCAyNDcsIDExMSwgMjQyLCA5NSwgNjAsIDUsIAotICAgIDIyNCwgMjMsIDIzMCwgMzcsIDI0MywgNDAsIDYwLCA1LCAyMjQsIDIzLCAyMzAsIDM3LCAyNDIsIDE1MiwgNjAsIDUsIDIyNCwgCi0gICAgMjMsIDI0NywgMTExLCAyMjQsIDIzLCAyMzAsIDM2LCA2MCwgMjEsIDIxMiwgNzksIDYwLCAyMSwgMTE2LCA2MCwgMjEsIAotICAgIDEwOSwgNjAsIDIxLCAxNjYsIDYwLCAyMSwgMTYzLCA2MCwgMjEsIDE4MCwgNjAsIDIxLCAxODksIDYwLCAyMSwgMTk4LCA2MCwgCi0gICAgMjEsIDE5NSwgNjAsIDIxLCAyMDAsIDYwLCAyMSwgMTUxLCAxMTYsIDYwLCAyMSwgMTUxLCAxMDksIDYwLCAyMSwgMTUxLCAKLSAgICAxNjYsIDYwLCAyMSwgMTUxLCAxNjMsIDYwLCAyMSwgMTUxLCAxODAsIDYwLCAyMSwgMTUxLCAxODksIDYwLCAyMSwgMTUxLCAKLSAgICAxOTgsIDYwLCAyMSwgMTUxLCAxOTUsIDYwLCAyMSwgMTUxLCAyMDAsIDYwLCAyMSwgMTUxLCAyMTIsIDc5LCA2MCwgMTUyLCAKLSAgICAyNTEsIDU5LCAyMjMsIDU0LCA2MCwgMTUyLCAyMjksIDE1MSwgMjUwLCAyNTQsIDIyOCwgMTEsIDIxMiwgMTgsIDYwLCAxNTIsIAotICAgIDI1MCwgMTcxLCAyNTUsIDY2LCAyMjMsIDU1LCAyNTAsIDI1NSwgMjMxLCAxNSwgMjUwLCAxOTUsIDYwLCAxNTIsIDIyOSwgCi0gICAgMTUxLCAyNTAsIDI1NCwgMjIxLCAyOCwgMjIzLCA1NCwgNjAsIDE1MiwgMjUwLCA2OCwgMjMxLCA1OCwgNjAsIDE1MiwgMjE2LCAKLSAgICAxNDIsIDI1NSwgNjMsIDYwLCAxNTIsIDI0MiwgODEsIDIyMywgNTUsIDI0MiwgNDQsIDYwLCAxNTIsIDI0MiwgODEsIDIyMywgCi0gICAgNTUsIDI0MiwgNTAsIDYwLCAxNTIsIDI1NCwgMjUsIDIzNCwgMTI5LCAyNDIsIDQ0LCA2MCwgMTUyLCAyNTQsIDI1LCAyMzQsIAotICAgIDEyOSwgMjQyLCA1MCwgNjAsIDUsIDIxMywgNTUsIDIxNiwgMTI5LCA2MCwgNSwgMjMxLCAyMzAsIDIxNiwgMTI5LCA2MCwgMSwgCi0gICAgMTgxLCA2MCwgMSwgMjM0LCAxMzgsIDYwLCAxLCAyNDMsIDExMCwgNjAsIDEsIDI0MiwgMjI1LCA2MCwgMSwgMjI5LCAxNTksIAotICAgIDYwLCAxLCAyNTAsIDIxOSwgNjAsIDEsIDI1MCwgOTIsIDYwLCAxLCAyMzUsIDEzOSwgNjAsIDEsIDIyOCwgMjMsIDYwLCAxLCAKLSAgICAyMTYsIDExNSwgNjAsIDEsIDIxNiwgMTA1LCA2MCwgMSwgMjQ4LCA4NiwgNjAsIDEsIDI0OCwgNzAsIDYwLCAxLCAyMjgsIAotICAgIDE5OCwgNjAsIDEsIDIxOCwgNTIsIDYwLCAxLCAyMTcsIDE2MSwgNjAsIDEsIDI0OCwgMTY0LCA2MCwgMSwgMjQ3LCAyMzIsIAotICAgIDYwLCAxLCAyMDUsIDYwLCAxLCAxOTMsIDYwLCAxLCAyMjYsIDIzLCA2MCwgMSwgMjUyLCAxMDcsIDYwLCAxLCAyNTEsIDE5NSwgCi0gICAgNjAsIDEsIDE4OCwgNjAsIDEsIDIxNiwgMTQxLCA2MCwgMSwgMjE2LCAxMzMsIDYwLCAxLCAyNDUsIDI0OSwgNjAsIDEsIAotICAgIDI0NSwgMjQ0LCA2MCwgMSwgMjE0LCA0OSwgNjAsIDEsIDIxMiwgNzUsIDYwLCAxLCAyMTIsIDEwOSwgNjAsIDEsIDI1NSwgCi0gICAgNjksIDYwLCAxLCAxODYsIDYwLCAxLCAyMDMsIDYwLCAxLCAyMzMsIDE1NywgNjAsIDEsIDIyMSwgMjQsIDYwLCAxLCAyMTksIAotICAgIDE1NywgNjAsIDEsIDIyMiwgMjAyLCA2MCwgMSwgMTU5LCA2MCwgMSwgNjEsIDYwLCAxLCAyMzMsIDI0MSwgNjAsIDEsIDI0NCwgCi0gICAgNDYsIDIwMywgNjAsIDEsIDIzNCwgNTUsIDYwLCAxLCAyMjMsIDgxLCA2MCwgMzAsIDUsIDI1NCwgMjMyLCA2MCwgMzAsIDUsIAotICAgIDcyLCA2MCwgMzAsIDUsIDIzNiwgMjgsIDYwLCAzMCwgNSwgNjksIDYwLCAzMCwgNSwgMjE1LCA5MiwgNjAsIDMwLCA1LCAKLSAgICAxNjEsIDE0OSwgNjAsIDMwLCA1LCAxNjEsIDIyMywgODIsIDYwLCAzMCwgNSwgMTYxLCAxNTAsIDYwLCAzMCwgNSwgMTYxLCAKLSAgICAyMzIsIDIxNCwgNjAsIDMwLCA1LCA3NCwgNjAsIDMwLCA1LCAyNDUsIDE2NSwgNjAsIDMwLCA1LCA3NSwgNjAsIDMwLCA1LCAKLSAgICAyMjcsIDQ5LCA2MCwgNSwgMjIzLCAxMTgsIDIxOSwgMjgsIDIyOSwgMTYwLCAyMjMsIDExMiwgNjAsIDUsIDIyMywgMTE3LCAKLSAgICAyNTEsIDI1MiwgNjAsIDMwLCA1LCAyMjMsIDIwMiwgNzIsIDYwLCAzMCwgNSwgMjIzLCAyMDIsIDIzNiwgMjgsIDYwLCA1LCAKLSAgICAyMjgsIDExLCAyMTIsIDE5LCAyMzAsIDQ0LCAyNDgsIDE2NCwgNjAsIDUsIDIxOSwgMjU1LCAyMzMsIDg0LCA2MCwgMTUyLCAKLSAgICAyNDIsIDExLCA2MCwgMTUyLCAyMjYsIDE4NCwgNjAsIDUsIDIzMywgODcsIDIyMywgNTQsIDYwLCA1LCAyMTMsIDU5LCAyMjMsIAotICAgIDU0LCA2MCwgNSwgMjMzLCA4OCwgMjE2LCAxNDIsIDI1MCwgMTk1LCA2MCwgNSwgMjMxLCAxNTksIDI1MCwgMTk1LCA2MCwgNSwgCi0gICAgMjQyLCA5NywgMjUwLCAxOTYsIDIyMywgMTkzLCA2MCwgNSwgMjQyLCA5NywgMjMxLCAxNTAsIDIyMywgMTkzLCA2MCwgNSwgCi0gICAgMjM1LCAxOTEsIDIzMSwgMTU5LCAyNTAsIDE5NSwgNjAsIDIxOSwgMTgsIDUsIDIzMywgODgsIDIxNiwgMTQyLCAyNTAsIAotICAgIDE5NSwgNjAsIDIxOSwgMTgsIDUsIDIzMSwgMTU5LCAyNTAsIDE5NSwgNjAsIDIxOSwgMTgsIDUsIDIzNSwgMTkxLCAyMzEsIAotICAgIDE1OSwgMjUwLCAxOTUsIDYwLCAyMTksIDE4LCAxLCAxODEsIDYwLCAyMTksIDE4LCAxLCAyMzQsIDEzOCwgNjAsIDIxOSwgCi0gICAgMTgsIDEsIDI0MywgMTEwLCA2MCwgMjE5LCAxOCwgMSwgMjQyLCAyMjUsIDYwLCAyMTksIDE4LCAxLCAyMjksIDE1OSwgNjAsIAotICAgIDIxOSwgMTgsIDEsIDI1MCwgMjE5LCA2MCwgMjE5LCAxOCwgMSwgMjUwLCA5MiwgNjAsIDIxOSwgMTgsIDEsIDIzNSwgMTM5LCAKLSAgICA2MCwgMjE5LCAxOCwgMSwgMjI4LCAyMywgNjAsIDIxOSwgMTgsIDEsIDIxNiwgMTE1LCA2MCwgMjE5LCAxOCwgMSwgMjE2LCAKLSAgICAxMDUsIDYwLCAyMTksIDE4LCAxLCAyNDgsIDg2LCA2MCwgMjE5LCAxOCwgMSwgMjQ4LCA3MCwgNjAsIDIxOSwgMTgsIDEsIAotICAgIDIyOCwgMTk4LCA2MCwgMjE5LCAxOCwgMSwgMjE4LCA1MiwgNjAsIDIxOSwgMTgsIDEsIDIxNywgMTYxLCA2MCwgMjE5LCAxOCwgCi0gICAgMSwgMjQ4LCAxNjQsIDYwLCAyMTksIDE4LCAxLCAyNDcsIDIzMiwgNjAsIDIxOSwgMTgsIDEsIDIwNSwgNjAsIDIxOSwgMTgsIAotICAgIDEsIDE5MywgNjAsIDIxOSwgMTgsIDEsIDIyNiwgMjMsIDYwLCAyMTksIDE4LCAxLCAyNTIsIDEwNywgNjAsIDIxOSwgMTgsIAotICAgIDEsIDI1MSwgMTk1LCA2MCwgMjE5LCAxOCwgMSwgMTg4LCA2MCwgMjE5LCAxOCwgMSwgMjE2LCAxNDEsIDYwLCAyMTksIDE4LCAKLSAgICAxLCAyMTYsIDEzMywgNjAsIDIxOSwgMTgsIDEsIDI0NSwgMjQ5LCA2MCwgMjE5LCAxOCwgMSwgMjQ1LCAyNDQsIDYwLCAyMTksIAotICAgIDE4LCAxLCAyMTQsIDQ5LCA2MCwgMjE5LCAxOCwgMSwgMjEyLCA3NSwgNjAsIDIxOSwgMTgsIDEsIDIxMiwgMTA5LCA2MCwgCi0gICAgMjE5LCAxOCwgMSwgMjU1LCA2OSwgNjAsIDIxOSwgMTgsIDEsIDE4NiwgNjAsIDIxOSwgMTgsIDEsIDIwMywgNjAsIDIxOSwgCi0gICAgMTgsIDEsIDIzMywgMTU3LCA2MCwgMjE5LCAxOCwgMSwgMjIxLCAyNCwgNjAsIDIxOSwgMTgsIDEsIDIxOSwgMTU3LCA2MCwgCi0gICAgMjE5LCAxOCwgMSwgMjIyLCAyMDIsIDYwLCAyMTksIDE4LCAxLCAxNTksIDYwLCAyMTksIDE4LCAxLCA2MSwgNjAsIDIxOSwgCi0gICAgMTgsIDEsIDIzMywgMjQxLCA2MCwgMjE5LCAxOCwgMSwgMjQ0LCA0NiwgMjE0LCA0OSwgNjAsIDIxOSwgMTgsIDEsIDI0NCwgCi0gICAgNDYsIDE4NiwgNjAsIDIxOSwgMTgsIDEsIDI0NCwgNDYsIDIwMywgNjAsIDIzMywgMjM5LCAyMjMsIDUyLCAyMzQsIDEzOCwgCi0gICAgNjAsIDIzMywgMjM5LCAyMjMsIDUyLCAyMzQsIDEzOSwgMjUwLCAyNTUsIDIzMSwgMTUsIDI1MCwgMTk1LCA2MCwgMjUwLCAKLSAgICAxODQsIDUsIDEwNywgMjUxLCAyNDYsIDYwLCAyNTAsIDE4NCwgNSwgMTc3LCAyNTEsIDI0NiwgNjAsIDI1MCwgMTg0LCA1LCAKLSAgICAyNTAsIDE4NSwgMjE3LCAyMjgsIDYwLCAyNTAsIDE4NCwgNSwgMjIyLCAxMjUsIDI1NSwgNjgsIDYwLCAxNiwgMjQ2LCA0NiwgCi0gICAgMjUxLCA1NCwgNjAsIDE2LCAyMjQsIDIyLCAyMjMsIDExOSwgNjAsIDE2LCAyMjYsIDIwMiwgMjQzLCAzOSwgNjAsIDE2LCAKLSAgICAyMjQsIDIyLCAyMjMsIDEyMCwgMjIzLCAxOTUsIDI0MiwgMTIxLCA2MCwgMTYsIDIyNSwgMjQ0LCAxOTMsIDYwLCAxNiwgCi0gICAgMjI4LCAxNzAsIDI1MSwgNTQsIDYwLCAxNiwgMjI4LCAxNzAsIDI1MSwgNTUsIDIyOCwgMiwgMjU1LCA2NSwgNjAsIDE2LCAKLSAgICAyMjgsIDE3MCwgMjUxLCA1NSwgMjQyLCA5NiwgMjU1LCA2NSwgNjAsIDE2LCAyMjgsIDE3MCwgMjUxLCA1NSwgMjUwLCAyNTUsIAotICAgIDI1NSwgNjUsIDYwLCA1LCAyMjQsIDIzLCAyMzAsIDM3LCAyMjQsIDIzLCAyNDcsIDExMCwgNjAsIDUsIDIyNCwgMjMsIDIzMCwgCi0gICAgMzcsIDI0MiwgOTUsIDYwLCAxNTIsIDI1MSwgNTgsIDIyMCwgMTgzLCAyNDIsIDE5MSwgMjMxLCA1OSwgMjIzLCAxOTQsIDYwLCAKLSAgICAxNTIsIDIzMCwgMjMzLCAyMTIsIDI0NywgMjQyLCAxOTEsIDIzMSwgNTksIDIyMywgMTk0LCA2MCwgMTUyLCAyMjgsIDIsIAotICAgIDIxNiwgMTMwLCA2MCwgMTUyLCA3MCwgMjUxLCA3OSwgMjIzLCAxMTQsIDIxMiwgMjQ3LCAyMzEsIDU5LCAyMzEsIDE1OCwgCi0gICAgMTg4LCA2MCwgMTUyLCAyNDksIDE4OSwgMjUxLCA3OSwgMjIzLCAxMTQsIDIxMiwgMjQ3LCAyMzEsIDU5LCAyMjEsIDMwLCAKLSAgICAxODgsIDIyMywgMTQ3LCAyMTgsIDIwMCwgNTIsIDIzMywgNjksIDIxOCwgMjAwLCA1MiwgMjIzLCAxNDcsIDIxOCwgMjAwLCAKLSAgICA1LCAyLCAyNDcsIDcyLCAyMzMsIDY5LCAyMTgsIDIwMCwgNSwgMiwgMjQ3LCA3MiwgNjAsIDE1MiwgMjMzLCA3OSwgMjMxLCAKLSAgICAxNjAsIDIyMywgNTQsIDYwLCAxNTIsIDIxNiwgMjA3LCAyMzEsIDE2MCwgMjIzLCA1NCwgNjQsIDEsIDE4MSwgNjQsIDEsIAotICAgIDIzNCwgMTM4LCA2NCwgMSwgMjQzLCAxMTAsIDY0LCAxLCAyNDIsIDIyNSwgNjQsIDEsIDIyOSwgMTU5LCA2NCwgMSwgMjUwLCAKLSAgICAyMTksIDY0LCAxLCAyNTAsIDkyLCA2NCwgMSwgMjM1LCAxMzksIDY0LCAxLCAyMzUsIDExNSwgNjQsIDEsIDIyOCwgMjMsIAotICAgIDY0LCAxLCAyMjgsIDE4NywgNjQsIDEsIDIxNiwgMTE1LCA2NCwgMSwgMjE2LCAxMDUsIDY0LCAxLCAyNDgsIDg2LCA2NCwgMSwgCi0gICAgMjQ4LCA3MCwgNjQsIDEsIDIyOCwgMTk4LCA2NCwgMSwgMjE4LCA1MiwgNjQsIDEsIDIxNywgMTYxLCA2NCwgMSwgMjQ4LCAKLSAgICAxNjQsIDY0LCAxLCAyNDcsIDIzMiwgNjQsIDEsIDIwNSwgNjQsIDEsIDE5MywgNjQsIDEsIDIyNiwgMjMsIDY0LCAxLCAyNTIsIAotICAgIDEwNywgNjQsIDEsIDI1MSwgMTk1LCA2NCwgMSwgMTg4LCA2NCwgMSwgMTg2LCA2NCwgMSwgMjAzLCA2NCwgMSwgMjMzLCAKLSAgICAxNTcsIDY0LCAxLCAyMTQsIDQ5LCA2NCwgMSwgMjIyLCAyMDIsIDY0LCAxLCAxNTksIDY0LCAxLCAyMzIsIDIxMywgNjQsIDEsIAotICAgIDYxLCA2NCwgMSwgMjIxLCA5LCA2MSwgNjQsIDEsIDcyLCA2NCwgMSwgMjM2LCAyOCwgNjQsIDEsIDY5LCA2NCwgMSwgMjE1LCAKLSAgICA5MiwgNjQsIDEsIDc0LCA2NCwgMSwgMjMwLCAyMjEsIDc0LCA2NCwgMSwgNzUsIDY0LCAxLCAyNTMsIDEwOCwgNjQsIDMwLCAKLSAgICA1LCAyMTgsIDE1LCAyNTQsIDIzMiwgNjQsIDMwLCA1LCAyNTQsIDIzMiwgNjQsIDMwLCA1LCA3MiwgNjQsIDMwLCA1LCAyMzYsIAotICAgIDI4LCA2NCwgMzAsIDUsIDY5LCA2NCwgMzAsIDUsIDIxNSwgOTIsIDY0LCAzMCwgNSwgNzQsIDY0LCAzMCwgNSwgMjU0LCAKLSAgICAxMDgsIDY0LCAzMCwgNSwgMjMwLCAyMjEsIDIzNiwgMjgsIDY0LCAzMCwgNSwgMjMwLCAyMjEsIDc1LCA2NCwgMzAsIDUsIAotICAgIDE5MSwgNDksIDY0LCA1LCAyNTMsIDI0MiwgNjQsIDUsIDYyLCA1NSwgNjQsIDUsIDIxNCwgMTI4LCA2NCwgNSwgMjE0LCAKLSAgICAxMzMsIDY0LCA1LCAyNTMsIDE1MCwgNjQsIDI0OSwgMTMzLCA1LCAxMzgsIDE4NiwgNjQsIDI0OSwgMTMzLCA1LCAxMzgsIAotICAgIDIwMywgNjQsIDI0OSwgMTMzLCA1LCAxMzgsIDIxNCwgNDksIDY0LCAyNDksIDEzMywgNSwgMTM4LCAxNTksIDY0LCAxLCAKLSAgICAyNDIsIDEwOSwgMjIyLCAyMDIsIDY0LCAyMSwgMjEyLCA3OSwgNjQsIDIxLCAxMTYsIDY0LCAyMSwgMTA5LCA2NCwgMjEsIAotICAgIDE2NiwgNjQsIDIxLCAxNjMsIDY0LCAyMSwgMTgwLCA2NCwgMjEsIDE4OSwgNjQsIDIxLCAxOTgsIDY0LCAyMSwgMTk1LCA2NCwgCi0gICAgMjEsIDIwMCwgNjQsIDUsIDIzMiwgMjIxLCAyMjIsIDkxLCA2NCwgNSwgMjIyLCA5MSwgNjQsIDE2LCAyMzIsIDIwNSwgNjQsIAotICAgIDE2LCAyNDksIDE1MiwgNjQsIDE2LCAyNTQsIDEyNSwgNjQsIDE2LCAyNDMsIDI0LCA2NCwgMSwgMjIxLCAyNCwgNjQsIDEsIAotICAgIDIxOSwgMTU3LCA2NCwgMSwgMTYxLCAxNDksIDY0LCAxLCAxNjEsIDIyMywgODIsIDY0LCAxLCAxNjEsIDE1MCwgNjQsIDEsIAotICAgIDE2MSwgMjMyLCAyMTQsIDY0LCAzMCwgNSwgMTYxLCAxNDksIDY0LCAzMCwgNSwgMTYxLCAyMjMsIDgyLCA2NCwgMzAsIDUsIAotICAgIDE2MSwgMTUwLCA2NCwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDY0LCAxLCAyMzAsIDIyMSwgMjI5LCAxNTksIDY0LCAxLCAKLSAgICAyMzAsIDIyMSwgMjM1LCAxMTUsIDY0LCAxLCAyMzAsIDIyMSwgMjUyLCAzMSwgNjQsIDEsIDIzMCwgMjIxLCAyNTIsIDI2LCAKLSAgICA2NCwgMjQ5LCAxMzMsIDUsIDIzMCwgMjIxLCAxMzgsIDIwNSwgNjQsIDI0OSwgMTMzLCA1LCAyMzAsIDIyMSwgMTM4LCAxODgsIAotICAgIDY0LCAyNDksIDEzMywgNSwgMjMwLCAyMjEsIDEzOCwgMjMzLCAxNTcsIDY0LCAxLCAyMjEsIDI5LCAyMzQsIDIxOCwgMjIxLCAKLSAgICAyNCwgNjQsIDMwLCA1LCAyMjEsIDI5LCAyMzQsIDIxOCwgMjQ1LCAyMiwgNjQsIDE2MCwgMTUyLCAyMjEsIDI5LCAyMzQsIAotICAgIDIxOCwgMjQxLCAyMzAsIDY0LCAxNjAsIDE1MiwgMjIxLCAyOSwgMjM0LCAyMTgsIDIzNCwgMTg5LCAyMjUsIDI1MywgNjQsIAotICAgIDEsIDIxMywgMjQ4LCAyMjQsIDI1MiwgMjM0LCAyMTgsIDIxNywgMTYxLCA2NCwgMSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAKLSAgICAyMzQsIDIxOCwgMjI1LCAyLCA2NCwgMzAsIDUsIDIxMywgMjQ4LCAyMjQsIDI1MiwgMjM0LCAyMTgsIDI0NSwgMjIsIDY0LCAKLSAgICAzMCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjE1LCAxODMsIDY0LCA1LCAyMTMsIDI0OCwgMjI0LCAyNTIsIAotICAgIDIzNCwgMjE4LCAyMTYsIDI0MCwgNjQsIDUsIDIxMywgMjQ4LCAyMjQsIDI1MiwgMjM0LCAyMTgsIDIxNiwgMjM5LCA2NCwgNSwgCi0gICAgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjE2LCAyMzgsIDY0LCA1LCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgCi0gICAgMjE4LCAyMTYsIDIzNywgNjQsIDUsIDIxMywgMjQ4LCAyMjQsIDI1MiwgMjM0LCAyMTgsIDIxNiwgMjM2LCA2NCwgMSwgMjQ1LCAKLSAgICAxNzUsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjI4LCAxOTgsIDY0LCAxLCAyNDUsIDE3NSwgMjI0LCAyNTIsIDIzNCwgMjE4LCAKLSAgICAyMTIsIDE2OCwgNjQsIDEsIDI0NSwgMTc1LCAyMjQsIDI1MiwgMjM0LCAyMTgsIDI0MiwgMTkzLCA2NCwgMzAsIDUsIDI0MywgCi0gICAgMzUsIDIzNCwgMjE4LCA3MiwgNjQsIDMwLCA1LCAyMzQsIDE5NCwgMjI3LCA5OSwgNjQsIDMwLCA1LCAyMzQsIDE5NCwgNjksIAotICAgIDY0LCAzMCwgNSwgMjM0LCAxOTQsIDI0NSwgMTY1LCA2NCwgMSwgMjIxLCA5LCAxODEsIDY0LCAxLCAyMjEsIDksIDIzNCwgCi0gICAgMTM4LCA2NCwgMSwgMjIxLCA5LCAyNDMsIDExMCwgNjQsIDEsIDIyMSwgOSwgMjUwLCAyMTksIDY0LCAxLCAyMjEsIDksIAotICAgIDIxMiwgMTA5LCA2NCwgMSwgMjIxLCA5LCAyMjgsIDIzLCA2NCwgMSwgMjIxLCA5LCAyNDgsIDE2NCwgNjQsIDEsIDIyMSwgOSwgCi0gICAgMjA1LCA2NCwgMSwgMjIxLCA5LCAyMjYsIDIzLCA2NCwgMSwgMjIxLCA5LCAyNDQsIDE2NCwgNjQsIDEsIDIyMSwgOSwgMjUyLCAKLSAgICAxMDcsIDY0LCAxLCAyMjEsIDksIDIxNywgMTYxLCA2NCwgMSwgMjIxLCA5LCAxNTksIDY0LCAyNDksIDEzMywgNSwgMjIxLCAKLSAgICA5LCAxMzgsIDIxNCwgNDksIDY0LCAzMCwgNSwgMjIxLCA5LCAyNTQsIDIzMiwgNjQsIDMwLCA1LCAyMjEsIDksIDc0LCA2NCwgCi0gICAgMzAsIDUsIDIyMSwgOSwgMTkxLCA0OSwgNjQsIDMwLCA1LCAyMjEsIDksIDQwLCAyMTMsIDEwNSwgNjQsIDUsIDIyMSwgOSwgCi0gICAgMjE2LCAyMzksIDY0LCA1LCAyMjEsIDksIDIxNiwgMjM4LCA2NCwgNSwgMjIxLCA5LCAyMTYsIDIzNiwgNjQsIDUsIDIyMSwgCi0gICAgOSwgMjE2LCAyMzUsIDY0LCA1LCAyMjEsIDksIDI0OSwgOTEsIDIxNiwgMjM5LCA2NCwgNSwgMjIxLCA5LCAyNDksIDkxLCAKLSAgICAyMTYsIDIzOCwgNjQsIDUsIDIyMSwgOSwgMjQ5LCA5MSwgMjQ1LCAxMTEsIDIxNiwgMjQxLCA2NCwgMSwgMjIzLCAzOSwgCi0gICAgMjI2LCAxOTAsIDI0NCwgMTY0LCA2NCwgNSwgMjIzLCAzOSwgMjI2LCAxOTAsIDIxNiwgMjM2LCA2NCwgMjIxLCA5LCAyMSwgCi0gICAgMjEyLCA3OSwgNjQsIDIyMSwgOSwgMjEsIDExNiwgNjQsIDIyMSwgOSwgMjEsIDEwOSwgNjQsIDIyMSwgOSwgMjEsIDE2NiwgCi0gICAgNjQsIDIyMSwgOSwgMjEsIDE2MywgNjQsIDIyMSwgOSwgMjEsIDE4MCwgNjQsIDIyMSwgOSwgMjEsIDE4OSwgNjQsIDIyMSwgCi0gICAgOSwgMjEsIDE5OCwgNjQsIDIyMSwgOSwgMjEsIDE5NSwgNjQsIDIyMSwgOSwgMjEsIDIwMCwgNjQsIDUsIDIzNCwgMTMyLCAKLSAgICAyMTYsIDI0MCwgNjQsIDUsIDIzNCwgMTMyLCAyMTYsIDIzOCwgNjQsIDMwLCA1LCAyNTQsIDk4LCA2MSwgNjQsIDMwLCA1LCAKLSAgICAyNTQsIDk4LCAyNTQsIDEwOCwgNjQsIDE2LCAyMjEsIDksIDExNiwgNjQsIDE2LCAyMjEsIDksIDI0NCwgMjUzLCAxMDAsIDYsIAotICAgIDEsIDI1NCwgMzIsIDEwMCwgNiwgMSwgMjUyLCA3MSwgMTAwLCA2LCAxLCAyNDMsIDgyLCAxMDAsIDYsIDEsIDI0NywgODIsIAotICAgIDEwMCwgNiwgMSwgMjQ1LCAxMDgsIDEwMCwgNiwgMSwgMjE0LCAxNDEsIDEwMCwgNiwgMSwgMjEyLCA4MiwgMTAwLCA2LCAxLCAKLSAgICAyMTgsIDExLCAxMDAsIDYsIDEsIDIzNSwgMjUxLCAxMDAsIDYsIDEsIDIzNCwgMjM5LCAxMDAsIDYsIDEsIDIzMywgMTA0LCAKLSAgICAxMDAsIDYsIDEsIDIzMSwgMjQ4LCAxMDAsIDYsIDEsIDIzMCwgMTUsIDEwMCwgNiwgMSwgMjI3LCA2MiwgMTAwLCA2LCAxLCAKLSAgICAyMjYsIDE0NSwgMTAwLCA2LCAxLCAyMTIsIDcxLCAxMDAsIDYsIDEsIDIyNCwgNjEsIDEwMCwgNiwgMSwgMjIyLCAxNTksIAotICAgIDEwMCwgNiwgMSwgMjE4LCAxLCAxMDAsIDYsIDEsIDIxNSwgMTYwLCAxMDAsIDYsIDEsIDIyNiwgMTYsIDEwMCwgNiwgMSwgCi0gICAgMjM0LCAxMjcsIDEwMCwgNiwgMSwgMjQyLCAyMTcsIDEwMCwgNiwgMSwgMjI0LCAyMTcsIDEwMCwgNiwgMSwgMjIwLCAyMDAsIAotICAgIDEwMCwgNiwgMSwgMjUwLCAzNCwgMTAwLCA2LCAxLCAyNTAsIDE5NSwgMTAwLCA2LCAxLCAyMzUsIDEwMywgMTAwLCA2LCAxLCAKLSAgICAyNDksIDIzMywgMTAwLCA2LCAxLCAyNTAsIDc5LCAxMDAsIDYsIDEsIDIxMywgMTUxLCAxMDAsIDYsIDEsIDIzNSwgMTEzLCAKLSAgICAxMDAsIDYsIDEsIDI0MiwgMjQsIDEwMCwgNiwgMSwgMjQxLCAyMjIsIDEwMCwgNiwgMSwgMjQxLCAxNjAsIDEwMCwgNiwgMSwgCi0gICAgMjE0LCA2LCAxMDAsIDYsIDEsIDI0MSwgMjQzLCAxMDAsIDYsIDEsIDI0MSwgNTEsIDEwMCwgMSwgMjU0LCAzMiwgMTAwLCAxLCAKLSAgICAyNTIsIDcxLCAxMDAsIDEsIDI0MywgODIsIDEwMCwgMSwgMjQ3LCA4MiwgMTAwLCAxLCAyNDUsIDEwOCwgMTAwLCAxLCAyMTQsIAotICAgIDE0MSwgMTAwLCAxLCAyMTIsIDgyLCAxMDAsIDEsIDIxOCwgMTEsIDEwMCwgMSwgMjM1LCAyNTEsIDEwMCwgMSwgMjM0LCAKLSAgICAyMzksIDEwMCwgMSwgMjMzLCAxMDQsIDEwMCwgMSwgMjMxLCAyNDgsIDEwMCwgMSwgMjMwLCAxNSwgMTAwLCAxLCAyMjcsIAotICAgIDYyLCAxMDAsIDEsIDIyNiwgMTQ1LCAxMDAsIDEsIDIxMiwgNzEsIDEwMCwgMSwgMjI0LCA2MSwgMTAwLCAxLCAyMjIsIDE1OSwgCi0gICAgMTAwLCAxLCAyMTgsIDEsIDEwMCwgMSwgMjE1LCAxNjAsIDEwMCwgMSwgMjI2LCAxNiwgMTAwLCAxLCAyMzQsIDEyNywgMTAwLCAKLSAgICAxLCAyNDIsIDIxNywgMTAwLCAxLCAyMjQsIDIxNywgMTAwLCAxLCAyMjAsIDIwMCwgMTAwLCAxLCAyNTAsIDM0LCAxMDAsIDEsIAotICAgIDI1MCwgMTk1LCAxMDAsIDEsIDIzNSwgMTAzLCAxMDAsIDEsIDI0OSwgMjMzLCAxMDAsIDEsIDI1MCwgNzksIDEwMCwgMSwgCi0gICAgMjEzLCAxNTEsIDEwMCwgMSwgMjM1LCAxMTMsIDEwMCwgMSwgMjQyLCAyNCwgMTAwLCAxLCAyNDEsIDIyMiwgMTAwLCAxLCAKLSAgICAyNDEsIDE2MCwgMTAwLCAxLCAyMTQsIDYsIDEwMCwgMSwgMjQxLCAyNDMsIDEwMCwgMSwgMjQxLCA1MSwgMTAwLCAxLCAyNDQsIAotICAgIDkwLCAxMDAsIDEsIDIxMiwgMjM3LCAxMDAsIDEsIDI0NSwgMTIyLCAxMDAsIDEsIDIxNiwgNTgsIDI0MywgODIsIDEwMCwgMSwgCi0gICAgMjU0LCAxMDMsIDEwMCwgMjI2LCAxNDMsIDIyMSwgNTcsIDU5LCAxLCAxMDAsIDIzMCwgMTUsIDIzLCA5NywgMjM0LCA2NywgCi0gICAgMjMsIDk3LCAyMTksIDE1MCwgMjMsIDk3LCAyMjksIDU3LCAyMywgOTcsIDIxNywgNTUsIDIzLCA5NywgMjE5LCAxMzksIDIzLCAKLSAgICA5NywgMjIzLCAxNzksIDIzLCA5NywgMjMxLCAzMCwgMjMsIDk3LCAyMjUsIDIyNywgMjMsIDk3LCAyMTksIDE0NywgMjMsIAotICAgIDk3LCAyMjAsIDc2LCAyMywgOTcsIDIxOSwgMTQ0LCAyMywgOTcsIDIzNiwgNTEsIDIzLCA5NywgMjQ5LCAyMzksIDIzLCA5NywgCi0gICAgMjE5LCAxNTQsIDIzLCA5NywgMjUwLCA0MywgMjMsIDk3LCAyMzQsIDExNiwgMjMsIDk3LCAyMTcsIDEyNiwgMjMsIDk3LCAKLSAgICAyMjYsIDcsIDIzLCA5NywgMjQxLCAxNTgsIDIzLCA5NywgMjI5LCA1MywgMjMsIDk3LCAyMTksIDE0OCwgMjMsIDk3LCAyMjksIAotICAgIDQ3LCAyMywgOTcsIDIyOSwgNTEsIDIzLCA5NywgMjE3LCA1MiwgMjMsIDk3LCAyMjMsIDE2NywgMjMsIDk3LCAyMTksIDE0NiwgCi0gICAgMjMsIDk3LCAyMjMsIDE3NywgMjMsIDk3LCAyMzQsIDIyMywgMjMsIDk3LCAyMzEsIDIzLCAyMywgOTcsIDIzNCwgMjI2LCAKLSAgICAyMywgOTcsIDIyNSwgMjIyLCAyMywgOTcsIDIyNSwgMjIwLCAyMywgOTcsIDIyNSwgMjA4LCAyMywgOTcsIDIyNSwgMjE2LCAKLSAgICAyMywgOTcsIDIyNSwgMjE0LCAyMywgOTcsIDIyNSwgMjExLCAyMywgOTcsIDIyNSwgMjEzLCAyMywgOTcsIDIyNSwgMjEwLCAKLSAgICAyMywgOTcsIDIyNSwgMjE1LCAyMywgOTcsIDIyNSwgMjI1LCAyMywgOTcsIDIyNSwgMjI2LCAyMywgOTcsIDIyNSwgMjA5LCAKLSAgICAyMywgOTcsIDIyNSwgMjE5LCAyMywgOTcsIDIzNCwgMjI0LCAyMywgOTcsIDIzNCwgMjIyLCAyMywgOTcsIDIyMCwgNjksIAotICAgIDIzLCA5NywgMjIwLCA2NywgMjMsIDk3LCAyMjAsIDU5LCAyMywgOTcsIDIyMCwgNjIsIDIzLCA5NywgMjIwLCA2OCwgMjMsIAotICAgIDk3LCAyMjAsIDY0LCAyMywgOTcsIDIyMCwgNjMsIDIzLCA5NywgMjIwLCA2MSwgMjMsIDk3LCAyMjAsIDcyLCAyMywgOTcsIAotICAgIDIyMCwgNzQsIDIzLCA5NywgMjIwLCA3NSwgMjMsIDk3LCAyMjAsIDcwLCAyMywgOTcsIDIyMCwgNjAsIDIzLCA5NywgMjIwLCAKLSAgICA2NSwgMjMsIDk3LCAyMjAsIDczLCAyMywgOTcsIDI1MCwgMjcsIDIzLCA5NywgMjUwLCAyNSwgMjMsIDk3LCAyNTAsIDEwMiwgCi0gICAgMjMsIDk3LCAyNTAsIDEwMCwgMjMsIDk3LCAyMjYsIDE2MCwgMjMsIDk3LCAyMzYsIDQ2LCAyMywgOTcsIDIzNiwgMzcsIDIzLCAKLSAgICA5NywgMjM2LCA0NSwgMjMsIDk3LCAyMzYsIDQyLCAyMywgOTcsIDIzNiwgNDAsIDIzLCA5NywgMjM2LCA0NCwgMjMsIDk3LCAKLSAgICAyMTksIDE1MSwgMjMsIDk3LCAyMzYsIDQ5LCAyMywgOTcsIDIzNiwgNTAsIDIzLCA5NywgMjM2LCAzOCwgMjMsIDk3LCAyMzYsIAotICAgIDQzLCAyMywgOTcsIDIxMywgMTcsIDIzLCA5NywgMjQ5LCAyMzgsIDIzLCA5NywgMjUwLCAyOCwgMjMsIDk3LCAyNTAsIDI2LCAKLSAgICAyMywgOTcsIDI1MCwgMTAzLCAyMywgOTcsIDI1MCwgMTAxLCAyMywgOTcsIDI1MCwgNDEsIDIzLCA5NywgMjUwLCA0MiwgMjMsIAotICAgIDk3LCAyNTAsIDI5LCAyMywgOTcsIDI1MCwgMTA0LCAyMywgOTcsIDIyNiwgNSwgMjMsIDk3LCAyMzQsIDIyNSwgMjMsIDk3LCAKLSAgICAyMTksIDE1MiwgMjMsIDk3LCAyMTMsIDIzLCAyMywgOTcsIDIzNCwgNTgsIDIzLCA5NywgMjI5LCA0OSwgMjMsIDk3LCAyMjksIAotICAgIDU1LCAyMywgOTcsIDIyOSwgNTQsIDIzLCA5NywgMjE3LCA0OSwgMjMsIDk3LCAyNDQsIDcyLCAyMywgMTM1LCAyNDQsIDcyLCAKLSAgICAyMywgMTM1LCA2MSwgMjMsIDEzNSwgMjU0LCAxNDgsIDIzLCAxMzUsIDE4NiwgMjMsIDEzNSwgMjEzLCA4MCwgMjMsIDEzNSwgCi0gICAgMjQ1LCA3NiwgMjMsIDEzNSwgNzQsIDIzLCAxMzUsIDIxMywgMjcsIDIzLCAxMzUsIDIxMywgMzgsIDIzLCAxMzUsIDc1LCAKLSAgICAyMywgMTM1LCAyMTQsIDQ5LCAyMywgMTM1LCAyMTQsIDQ2LCAyMywgMTM1LCAyMjcsIDk5LCAyMywgMTM1LCAyMTIsIDIzNSwgCi0gICAgMjMsIDEzNSwgNjksIDIzLCAxMzUsIDIxMywgMjUyLCAyMywgMTM1LCAyMTQsIDYsIDIzLCAxMzUsIDIxMywgMjM1LCAyMywgCi0gICAgMTM1LCAyMTIsIDIwMywgMjMsIDEzNSwgMjQ1LCAyMiwgMjMsIDEzNSwgMjEyLCAyNTUsIDIzLCAxMzUsIDcyLCAyMywgMTM1LCAKLSAgICAyNTUsIDYwLCAyMywgMTM1LCAyNTUsIDU5LCAyMywgMTM1LCAyMTMsIDk0LCAyMywgMTM1LCAyMTMsIDkyLCAyMywgMTM1LCAKLSAgICAyNDUsIDc0LCAyMywgMTM1LCAyNDUsIDczLCAyMywgMTM1LCAyNDUsIDc1LCAyMywgMTM1LCAyMTMsIDI2LCAyMywgMTM1LCAKLSAgICAyMTMsIDI1LCAyMywgMTM1LCAyMjcsIDIwNCwgMjMsIDEzNSwgMjI3LCAyMDUsIDIzLCAxMzUsIDIyNywgMTk4LCAyMywgCi0gICAgMTM1LCAyMjcsIDIwMywgMjMsIDEzNSwgMjI3LCAyMDEsIDIzLCAxMzUsIDIxMiwgMjI5LCAyMywgMTM1LCAyMTIsIDIyOCwgCi0gICAgMjMsIDEzNSwgMjEyLCAyMjcsIDIzLCAxMzUsIDIxMiwgMjMwLCAyMywgMTM1LCAyMTIsIDIzMSwgMjMsIDEzNSwgMjE1LCAKLSAgICAyNTIsIDIzLCAxMzUsIDIxNSwgMjUxLCAyMywgMTM1LCAyMTUsIDI1MCwgMjMsIDEzNSwgMjE1LCAyNDcsIDIzLCAxMzUsIAotICAgIDIxNSwgMjQ4LCAyMywgMTM1LCAyMTIsIDIwMiwgMjMsIDEzNSwgMjEyLCAxOTksIDIzLCAxMzUsIDIxMiwgMjAwLCAyMywgCi0gICAgMTM1LCAyMTIsIDE5NCwgMjMsIDEzNSwgMjEyLCAxOTUsIDIzLCAxMzUsIDIxMiwgMTk2LCAyMywgMTM1LCAyMTIsIDE5OCwgCi0gICAgMjMsIDEzNSwgMjQ1LCAxNiwgMjMsIDEzNSwgMjQ1LCAxOCwgMjMsIDEzNSwgMjEyLCAyNTQsIDIzLCAxMzUsIDI0MCwgMTQ1LCAKLSAgICAyMywgMTM1LCAyNDAsIDEzNywgMjMsIDEzNSwgMjQwLCAxNDAsIDIzLCAxMzUsIDI0MCwgMTM4LCAyMywgMTM1LCAyNDAsIAotICAgIDE0MiwgMjMsIDEzNSwgMjQwLCAxNDQsIDIzLCAxMzUsIDI1MywgMjA0LCAyMywgMTM1LCAyNTMsIDIwMSwgMjMsIDEzNSwgCi0gICAgMjUzLCAxOTksIDIzLCAxMzUsIDI1MywgMjAwLCAyMywgMTM1LCAyMTksIDE1NSwgMjMsIDEzNSwgMjU1LCA2MSwgMjMsIAotICAgIDEzNSwgMjEzLCA5MywgMjMsIDEzNSwgMjEzLCAyNCwgMjMsIDEzNSwgMjI3LCAyMDAsIDIzLCAxMzUsIDIyNywgMTk5LCAyMywgCi0gICAgODksIDIzNCwgNjcsIDIzLCA4OSwgMjE5LCAxNTAsIDIzLCA4OSwgMjM0LCA2MCwgMjMsIDg5LCAyMjksIDU3LCAyMywgODksIAotICAgIDIyOSwgNTUsIDIzLCA4OSwgMjI5LCA1NCwgMjMsIDg5LCAyMTcsIDU1LCAyMywgODksIDIyMywgMTc5LCAyMywgODksIDIyMywgCi0gICAgMTc0LCAyMywgODksIDIyMywgMTcxLCAyMywgODksIDIyMywgMTY0LCAyMywgODksIDIyMywgMTU5LCAyMywgODksIDIyMywgCi0gICAgMTU0LCAyMywgODksIDIyMywgMTY1LCAyMywgODksIDIyMywgMTc3LCAyMywgODksIDIzMSwgMzAsIDIzLCA4OSwgMjI1LCAKLSAgICAyMjcsIDIzLCA4OSwgMjI1LCAyMTYsIDIzLCA4OSwgMjIwLCA3NiwgMjMsIDg5LCAyMTksIDE0NCwgMjMsIDg5LCAyMzYsIAotICAgIDUxLCAyMywgODksIDI0OSwgMjM5LCAyMywgODksIDI1MCwgNDMsIDIzLCA4OSwgMjM0LCAxMTYsIDIzLCA4OSwgMjE3LCAKLSAgICAxMjYsIDIzLCA4OSwgMjI2LCA3LCAyMywgODksIDI0MSwgMTU4LCAyMywgODksIDIzNCwgNjEsIDIzLCA4OSwgMjM0LCA1OSwgCi0gICAgMjMsIDg5LCAyMjksIDUzLCAyMywgODksIDIyOSwgNDcsIDIzLCA4OSwgMjI5LCA0OSwgMjMsIDg5LCAyMjksIDUyLCAyMywgCi0gICAgODksIDIyOSwgNDgsIDIzLCA4OSwgMjE3LCA1MiwgMjMsIDg5LCAyMTcsIDQ5LCAyMywgODksIDIyMywgMTcyLCAyMywgODksIAotICAgIDIyMywgMTY3LCAyMywgODksIDIyMywgMTUzLCAyMywgODksIDIyMywgMTUyLCAyMywgODksIDIxOSwgMTQ2LCAyMywgODksIAotICAgIDIyMywgMTY5LCAyMywgODksIDIyMywgMTY4LCAyMywgODksIDIyMywgMTYxLCAyMywgODksIDIyMywgMTYzLCAyMywgODksIAotICAgIDIyMywgMTc2LCAyMywgODksIDIyMywgMTU2LCAyMywgODksIDIyMywgMTY2LCAyMywgODksIDIyMywgMTc1LCAyMywgODksIAotICAgIDIyMywgMTUxLCAyMywgODksIDIzMSwgMjYsIDIzLCA4OSwgMjMxLCAyMSwgMjMsIDg5LCAyMzEsIDIzLCAyMywgODksIDIzMSwgCi0gICAgMjAsIDIzLCA4OSwgMjMxLCAxOCwgMjMsIDg5LCAyMzEsIDI0LCAyMywgODksIDIzMSwgMjksIDIzLCA4OSwgMjMxLCAyNywgCi0gICAgMjMsIDg5LCAyMzQsIDIyNiwgMjMsIDg5LCAyMjUsIDIxOCwgMjMsIDg5LCAyMjUsIDIxOSwgMjMsIDg5LCAyMjUsIDIyNCwgCi0gICAgMjMsIDg5LCAyMzQsIDIyNCwgMjMsIDg5LCAyMjAsIDY5LCAyMywgODksIDIyMCwgNTksIDIzLCA4OSwgMjIwLCA2MiwgMjMsIAotICAgIDg5LCAyMjAsIDY0LCAyMywgODksIDIyNiwgMTYwLCAyMywgODksIDIzNiwgNDYsIDIzLCA4OSwgMjM2LCAzOSwgMjMsIDg5LCAKLSAgICAyMTksIDE1MSwgMjMsIDg5LCAyMzYsIDQ3LCAyMywgODksIDIxMywgMTcsIDIzLCA4OSwgMjEzLCAxMywgMjMsIDg5LCAyMTMsIAotICAgIDE0LCAyMywgODksIDIyNiwgNSwgMjMsIDg5LCAyMzQsIDIyNSwgMjMsIDg5LCAyNDEsIDE1NiwgMjMsIDg5LCAyNDEsIDE1NCwgCi0gICAgMjMsIDg5LCAyNDEsIDE1NywgMjMsIDg5LCAyNDEsIDE1NSwgMjMsIDg5LCAyMTMsIDIzLCAyMywgODksIDIzNCwgNjMsIDIzLCAKLSAgICA4OSwgMjM0LCA2MiwgMjMsIDg5LCAyMzQsIDY2LCAyMywgODksIDIzNCwgNjQsIDIzLCA4OSwgMjM0LCA2NSwgMjMsIDg5LCAKLSAgICAyMTksIDE0OCwgMjgsIDQsIDE1OSwgMjgsIDQsIDI0MCwgMjEyLCAyOCwgNCwgMjQxLCAxNjUsIDI4LCA0LCAyNDIsIDI3LCAKLSAgICAyOCwgNCwgMjQxLCAyMDQsIDI4LCA0LCAyNDEsIDIyMiwgMjgsIDQsIDI0MSwgNTQsIDI4LCA0LCAyNDEsIDUzLCAyOCwgNCwgCi0gICAgMjMzLCAxNTcsIDI4LCA0LCAyMzIsIDE1NiwgMjgsIDQsIDIzMywgMTMsIDI4LCA0LCAyMzMsIDE1NiwgMjgsIDQsIDIzMywgCi0gICAgNzQsIDI4LCA0LCAyMzMsIDgyLCAyOCwgNCwgMjMyLCAyMDgsIDI4LCA0LCAyMzIsIDEyOSwgMjgsIDQsIDI0MSwgMTc0LCAKLSAgICAyOCwgNCwgMjQxLCAxNjgsIDI4LCA0LCAyNDEsIDE3MCwgMjgsIDQsIDI0MSwgMTczLCAyOCwgNCwgMjQxLCAxNzEsIDI4LCAKLSAgICA0LCAyNDEsIDE3MiwgMjgsIDQsIDI0MSwgMTY5LCAyOCwgNCwgMjQxLCAxNjcsIDI4LCA0LCAxODgsIDI4LCA0LCAyMzAsIAotICAgIDE3MiwgMjgsIDQsIDIzMSwgNDIsIDI4LCA0LCAyMzIsIDQxLCAyOCwgNCwgMjMxLCAxNDUsIDI4LCA0LCAyMzEsIDE1NiwgCi0gICAgMjgsIDQsIDIzMCwgMjMxLCAyOCwgNCwgMjMwLCAxMTQsIDI4LCA0LCAyMTgsIDExMCwgMjgsIDQsIDIxOCwgMTA0LCAyOCwgCi0gICAgNCwgMjE4LCAxMDYsIDI4LCA0LCAyMTgsIDEwOSwgMjgsIDQsIDIxOCwgMTA3LCAyOCwgNCwgMjE4LCAxMDgsIDI4LCA0LCAKLSAgICAyMTgsIDEwNSwgMjgsIDQsIDIxOCwgMTAzLCAyOCwgNCwgMjAzLCAyOCwgNCwgMjIzLCA1MSwgMjgsIDQsIDIyMywgMTg4LCAKLSAgICAyOCwgNCwgMjI0LCA3NCwgMjgsIDQsIDIyNCwgMSwgMjgsIDQsIDIyNCwgMjEsIDI4LCA0LCAyMjMsIDExMiwgMjgsIDQsIAotICAgIDIyMywgMjEsIDI4LCA0LCAyMjIsIDIwMiwgMjgsIDQsIDIxOSwgMjcsIDI4LCA0LCAyMjAsIDExNywgMjgsIDQsIDIyMiwgCi0gICAgMjAwLCAyOCwgNCwgMjIyLCA4OSwgMjgsIDQsIDIyMiwgMTAwLCAyOCwgNCwgMjE5LCAyNDIsIDI4LCA0LCAyMTgsIDE5OCwgCi0gICAgMjgsIDQsIDIyMSwgMjQsIDI4LCA0LCAyMjAsIDE1MCwgMjgsIDQsIDIyMCwgMjEyLCAyOCwgNCwgMjIxLCAyMCwgMjgsIDQsIAotICAgIDIyMCwgMjQxLCAyOCwgNCwgMjIwLCAyNDMsIDI4LCA0LCAyMjAsIDE4NywgMjgsIDQsIDIyMCwgMTM0LCAyOCwgNCwgMjI0LCAKLSAgICAyMzIsIDI4LCA0LCAyMjQsIDE3NSwgMjgsIDQsIDIyNCwgMTk4LCAyOCwgNCwgMjI0LCAyMzEsIDI4LCA0LCAyMjQsIDIxMiwgCi0gICAgMjgsIDQsIDIyNCwgMjEzLCAyOCwgNCwgMjI0LCAxODcsIDI4LCA0LCAyMjQsIDE4NiwgMjgsIDQsIDIyNCwgMTMxLCAyOCwgCi0gICAgNCwgMjI0LCAxMjcsIDI4LCA0LCAyMjQsIDEzMCwgMjgsIDQsIDIyNCwgMTI4LCAyOCwgNCwgMjI0LCAxMjksIDI4LCA0LCAKLSAgICAyMjQsIDIxMCwgMjgsIDQsIDIyNCwgMjA0LCAyOCwgNCwgMjI0LCAyMDYsIDI4LCA0LCAyMjQsIDIwOSwgMjgsIDQsIDIyNCwgCi0gICAgMjA3LCAyOCwgNCwgMjI0LCAyMDgsIDI4LCA0LCAyMjQsIDIwNSwgMjgsIDQsIDIyNCwgMjAzLCAyOCwgNCwgMjI0LCAxOTksIAotICAgIDI4LCA0LCAyMjQsIDIwMiwgMjgsIDQsIDIyNCwgMjAwLCAyOCwgNCwgMjI0LCAyMDEsIDI4LCA0LCAyNTIsIDEwNywgMjgsIAotICAgIDQsIDI1MSwgNTQsIDI4LCA0LCAyNTEsIDE4NCwgMjgsIDQsIDI1MiwgMTA2LCAyOCwgNCwgMjUxLCAyNDIsIDI4LCA0LCAKLSAgICAyNTEsIDI1MSwgMjgsIDQsIDI1MSwgMTI4LCAyOCwgNCwgMjUxLCAxMiwgMjgsIDQsIDIxNSwgMSwgMjgsIDQsIDIxNCwgOTksIAotICAgIDI4LCA0LCAyMTQsIDE1NCwgMjgsIDQsIDIxNSwgMCwgMjgsIDQsIDIxNCwgMjI3LCAyOCwgNCwgMjE0LCAyMzIsIDI4LCA0LCAKLSAgICAyMTQsIDExOSwgMjgsIDQsIDIxNCwgOTEsIDI4LCA0LCAyMTgsIDUyLCAyOCwgNCwgMjE2LCA4MiwgMjgsIDQsIDIxNywgNzEsIAotICAgIDI4LCA0LCAyMTgsIDQ5LCAyOCwgNCwgMjE3LCAyMTksIDI4LCA0LCAyMTcsIDIyOSwgMjgsIDQsIDEwOCwgMjgsIDQsIDIxNiwgCi0gICAgNDUsIDI4LCA0LCAyNTAsIDIxOSwgMjgsIDQsIDI0OSwgNTMsIDI4LCA0LCAyNDksIDI0NCwgMjgsIDQsIDI1MCwgMjE4LCAKLSAgICAyOCwgNCwgMjUwLCAxMTYsIDI4LCA0LCAyNTAsIDEyNCwgMjgsIDQsIDI0OSwgMTc1LCAyOCwgNCwgMjQ5LCAyNCwgMjgsIDQsIAotICAgIDIxMywgMTUzLCAyOCwgNCwgMjEzLCAxMjksIDI4LCA0LCAyMTMsIDE0NSwgMjgsIDQsIDIxMywgMTUyLCAyOCwgNCwgMjEzLCAKLSAgICAxNDksIDI4LCA0LCAyMTMsIDE1MCwgMjgsIDQsIDIxMywgMTM2LCAyOCwgNCwgMjEzLCAxMzUsIDI4LCA0LCAyMTMsIDEyNCwgCi0gICAgMjgsIDQsIDIxMywgMTIwLCAyOCwgNCwgMjEzLCAxMjMsIDI4LCA0LCAyMTMsIDEyMSwgMjgsIDQsIDIxMywgMTIyLCAyOCwgCi0gICAgNCwgMjA1LCAyOCwgNCwgMjI4LCA5MiwgMjgsIDQsIDIyOSwgNjQsIDI4LCA0LCAyMzAsIDQzLCAyOCwgNCwgMjI5LCAxODQsIAotICAgIDI4LCA0LCAyMjksIDE4NywgMjgsIDQsIDIyOCwgMTg1LCAyOCwgNCwgMjI4LCAzMSwgMjgsIDQsIDIyOCwgMjMsIDI4LCA0LCAKLSAgICAyMjcsIDI0NywgMjgsIDQsIDIyOCwgMTAsIDI4LCA0LCAyMjgsIDIyLCAyOCwgNCwgMjI4LCAxNiwgMjgsIDQsIDIyOCwgMTcsIAotICAgIDI4LCA0LCAyMjcsIDI1MywgMjgsIDQsIDIyNywgMjM5LCAyOCwgNCwgMjQyLCAxNTYsIDYxLCAyOCwgNCwgMjQyLCAxNTYsIAotICAgIDY5LCAyOCwgNCwgMjQyLCAxNTYsIDcyLCAyOCwgNCwgMjQyLCAxNTYsIDI1NCwgMjMyLCAyOCwgNCwgMjQyLCAxNTYsIDI0NSwgCi0gICAgMTY1LCAyOCwgNCwgMjQyLCAxNTYsIDc0LCAyOCwgNCwgMjQyLCAxNTYsIDc1LCAyOCwgNCwgMjQyLCAxNTYsIDIxNCwgNDksIAotICAgIDI4LCA0LCAxODEsIDI4LCA0LCAyMzMsIDIzOCwgMjgsIDQsIDIzNCwgMTAxLCAyOCwgNCwgMjM1LCAxNCwgMjgsIDQsIDIzNCwgCi0gICAgMTg3LCAyOCwgNCwgMjM0LCAxODgsIDI4LCA0LCAyMzQsIDM3LCAyOCwgNCwgMjM0LCAzNiwgMjgsIDQsIDIzMywgMjA0LCAKLSAgICAyOCwgNCwgMjMzLCAxOTgsIDI4LCA0LCAyMzMsIDIwMywgMjgsIDQsIDIzMywgMTk5LCAyOCwgNCwgMjMzLCAyMDAsIDI4LCAKLSAgICA0LCAyMzMsIDE5MywgMjgsIDQsIDIzMywgMTg3LCAyOCwgNCwgMjMzLCAxODksIDI4LCA0LCAyMzMsIDE5MiwgMjgsIDQsIAotICAgIDIzMywgMTkwLCAyOCwgNCwgMjMzLCAxOTEsIDI4LCA0LCAyMzMsIDE4OCwgMjgsIDQsIDIzMywgMTg2LCAyOCwgNCwgMjMzLCAKLSAgICAxODIsIDI4LCA0LCAyMzMsIDE4NSwgMjgsIDQsIDIzMywgMTgzLCAyOCwgNCwgMjMzLCAxODQsIDI4LCA0LCAyMTQsIDQ5LCAKLSAgICAyOCwgNCwgMjEzLCAxODMsIDI4LCA0LCAyMTMsIDIzNSwgMjgsIDQsIDIxNCwgNDgsIDI4LCA0LCAyMTQsIDEsIDI4LCA0LCAKLSAgICAyMTQsIDYsIDI4LCA0LCAyMTMsIDIxNCwgMjgsIDQsIDIxMywgMjEzLCAyOCwgNCwgMjI2LCAxNSwgNjEsIDI4LCA0LCAyMjYsIAotICAgIDE1LCA2OSwgMjgsIDQsIDIyNiwgMTUsIDcyLCAyOCwgNCwgMjI2LCAxNSwgMjU0LCAyMzIsIDI4LCA0LCAyMjYsIDE1LCAKLSAgICAyNDUsIDE2NSwgMjgsIDQsIDIyNiwgMTUsIDc0LCAyOCwgNCwgMjI2LCAxNSwgNzUsIDI4LCA0LCAyMTIsIDEwOSwgMjgsIDQsIAotICAgIDIxMiwgOCwgMjgsIDQsIDIxMiwgMzcsIDI4LCA0LCAyMTIsIDEwOCwgMjgsIDQsIDIxMiwgODUsIDI4LCA0LCAyMTIsIDg3LCAKLSAgICAyOCwgNCwgMjEyLCAxNiwgMjgsIDQsIDIxMSwgMjUxLCAyOCwgNCwgMjEyLCA3NSwgMjgsIDQsIDIxMiwgNTUsIDI4LCA0LCAKLSAgICAyMTIsIDYyLCAyOCwgNCwgMjEyLCA3NCwgMjgsIDQsIDIxMiwgNjYsIDI4LCA0LCAyMTIsIDY3LCAyOCwgNCwgMjEyLCA2MCwgCi0gICAgMjgsIDQsIDIxMiwgNDYsIDI4LCA0LCAxODYsIDI4LCA0LCAyMTIsIDIwMywgMjgsIDQsIDIxMiwgMjU1LCAyOCwgNCwgMjEzLCAKLSAgICA5MSwgMjgsIDQsIDIxMywgMzUsIDI4LCA0LCAyMTMsIDM4LCAyOCwgNCwgMjEyLCAyMzUsIDI4LCA0LCAyMTIsIDIyNiwgMjgsIAotICAgIDQsIDI0OCwgMTY0LCAyOCwgNCwgMjQ2LCAzMywgMjgsIDQsIDI0NywgMjExLCAyOCwgNCwgMjQ4LCAxNjMsIDI4LCA0LCAKLSAgICAyNDgsIDI4LCAyOCwgNCwgMjQ4LCA0MSwgMjgsIDQsIDI0NywgOTksIDI4LCA0LCAyNDYsIDIsIDI4LCA0LCAyNDgsIDg2LCAKLSAgICAyOCwgNCwgMjQ4LCA1MSwgMjgsIDQsIDI0OCwgNjMsIDI4LCA0LCAyNDgsIDg1LCAyOCwgNCwgMjQ4LCA3MywgMjgsIDQsIAotICAgIDI0OCwgNzQsIDI4LCA0LCAyNDgsIDU2LCAyOCwgNCwgMjQ4LCA0MiwgMjgsIDQsIDIzNSwgMTM5LCAyOCwgNCwgMjM1LCA1NCwgCi0gICAgMjgsIDQsIDIzNSwgMTEwLCAyOCwgNCwgMjM1LCAxMzgsIDI4LCA0LCAyMzUsIDEyNSwgMjgsIDQsIDIzNSwgMTI3LCAyOCwgCi0gICAgNCwgMjM1LCA3MSwgMjgsIDQsIDIzNSwgMzUsIDI4LCA0LCAyNDMsIDExMCwgMjgsIDQsIDI0MiwgOTIsIDI4LCA0LCAyNDIsIAotICAgIDE5MCwgMjgsIDQsIDI0MywgMTA3LCAyOCwgNCwgMjQzLCAzMSwgMjgsIDQsIDI0MywgMzgsIDI4LCA0LCAyNDIsIDE1MCwgCi0gICAgMjgsIDQsIDI0MiwgMTQ5LCAyOCwgNCwgMjQyLCA1OSwgMjgsIDQsIDI0MiwgNTUsIDI4LCA0LCAyNDIsIDU4LCAyOCwgNCwgCi0gICAgMjQyLCA1NiwgMjgsIDQsIDI0MiwgNTcsIDI4LCA0LCAyNDMsIDUsIDI4LCA0LCAyNDIsIDI0MSwgMjgsIDQsIDI0MiwgMjUxLCAKLSAgICAyOCwgNCwgMjQzLCA0LCAyOCwgNCwgMjQyLCAyNTUsIDI4LCA0LCAyNDMsIDAsIDI4LCA0LCAyNDIsIDI0NSwgMjgsIDQsIAotICAgIDI0MiwgMjMwLCAyOCwgNCwgMjE3LCAxNjEsIDI4LCA0LCAyMTcsIDkwLCAyOCwgNCwgMjE3LCAxMjgsIDI4LCA0LCAyMTcsIAotICAgIDE2MCwgMjgsIDQsIDIxNywgMTQ3LCAyOCwgNCwgMjE3LCAxNDgsIDI4LCA0LCAyMTcsIDEwOSwgMjgsIDQsIDIxNywgODIsIAotICAgIDI4LCA0LCAyNTAsIDkyLCAyOCwgNCwgMjUwLCA2LCAyOCwgNCwgMjUwLCA0NywgMjgsIDQsIDI1MCwgOTEsIDI4LCA0LCAKLSAgICAyNTAsIDY0LCAyOCwgNCwgMjUwLCA2NywgMjgsIDQsIDI1MCwgMjMsIDI4LCA0LCAyNDksIDI1MSwgMjgsIDQsIDIyNiwgMjMsIAotICAgIDI4LCA0LCAyMjUsIDI0NiwgMjgsIDQsIDIyNiwgOSwgMjgsIDQsIDIyNiwgMjIsIDI4LCA0LCAyMjYsIDExLCAyOCwgNCwgCi0gICAgMjI2LCAxMiwgMjgsIDQsIDIyNSwgMjUzLCAyOCwgNCwgMjI1LCAyNDIsIDI4LCA0LCAyMTYsIDE0MSwgMjgsIDQsIDIxNiwgCi0gICAgMTIyLCAyOCwgNCwgMjE2LCAxMjUsIDI4LCA0LCAyMTYsIDE0MCwgMjgsIDQsIDIxNiwgMTM1LCAyOCwgNCwgMjE2LCAxMzYsIAotICAgIDI4LCA0LCAyMTYsIDEyNCwgMjgsIDQsIDIxNiwgMTIwLCAyOCwgNCwgMjE2LCA1LCAyOCwgNCwgMjE1LCAyNTMsIDI4LCA0LCAKLSAgICAyMTYsIDEsIDI4LCA0LCAyMTYsIDQsIDI4LCA0LCAyMTYsIDIsIDI4LCA0LCAyMTYsIDMsIDI4LCA0LCAyMTUsIDI1NSwgMjgsIAotICAgIDQsIDIxNSwgMjU0LCAyOCwgNCwgMjQ0LCAxNjQsIDI4LCA0LCAyNDMsIDIwNSwgMjgsIDQsIDI0NCwgOTAsIDI4LCA0LCAKLSAgICAyNDQsIDE2MywgMjgsIDQsIDI0NCwgMTE2LCAyOCwgNCwgMjQ0LCAxMjMsIDI4LCA0LCAyNDQsIDEyLCAyOCwgNCwgMjQzLCAKLSAgICAxODgsIDI4LCA0LCAxOTMsIDI4LCA0LCAyMjUsIDM1LCAyOCwgNCwgMjI1LCAyNDAsIDI4LCA0LCAyMjYsIDIxMywgMjgsIDQsIAotICAgIDIyNiwgODYsIDI4LCA0LCAyMjYsIDk2LCAyOCwgNCwgMjI1LCAxNTAsIDI4LCA0LCAyMjUsIDIsIDI4LCA0LCAyMjMsIDExLCAKLSAgICAyOCwgNCwgMjMwLCAxMDMsIDI4LCA0LCAyNDMsIDE4MiwgMjgsIDM3LCAyNDMsIDI5LCAyNCwgMzAsIDIzMywgNDcsIDc3LCAKLSAgICAyOCwgMzcsIDMwLCAyMzMsIDQ3LCA3NywgMjgsIDM3LCAyNDMsIDI5LCA3NywgMjgsIDIyMiwgOTIsIDc3LCAyOCwgMjEzLCAKLSAgICAxOTUsIDI4LCAyNDMsIDIwMCwgMjE5LCA2OSwgMjgsIDI0OSwgMTU3LCAyOCwgMjIxLCA3MCwgMjgsIDI0OSwgMTY0LCAyOCwgCi0gICAgMjI1LCA3OSwgMjQ5LCAxNjQsIDI4LCAyMjQsIDE1OCwgNzcsIDI4LCAyMjYsIDE0MywgMjIxLCA1NywgMjgsIDIxLCAxMTYsIAotICAgIDI4LCAyMSwgMTA5LCAyOCwgMjEsIDE2NiwgMjgsIDIxLCAxNjMsIDI4LCAyMSwgMTgwLCAyOCwgMjEsIDE4OSwgMjgsIDIxLCAKLSAgICAxOTgsIDI4LCAyMSwgMTk1LCAyOCwgMjEsIDIwMCwgMjgsIDUwLCAyMTcsIDIwMCwgMjgsIDUwLCAyMTYsIDM4LCAyOCwgNTAsIAotICAgIDIxNywgMTE1LCAyOCwgNTAsIDI0MywgMjQwLCAyOCwgNTAsIDI0NCwgODMsIDI4LCA1MCwgMjIwLCAzOSwgMjgsIDUwLCAKLSAgICAyMjEsIDM3LCAyOCwgNTAsIDI0NSwgMTQxLCAyOCwgNTAsIDIyOSwgMjYsIDI4LCA1MCwgMjQwLCAyMDAsIDI4LCA1MCwgCi0gICAgMjE3LCAyMDEsIDIxNywgMTAwLCAyOCwgNCwgMjIyLCA5NiwgMjMwLCAxMTQsIDI4LCA0LCAyMzAsIDExMCwgMjgsIDQsIAotICAgIDIzMCwgMTExLCAyOCwgNCwgMjMwLCAxMTIsIDI4LCA0LCAyMjIsIDk2LCAyNTEsIDEyLCAyOCwgNCwgMjUxLCA5LCAyOCwgNCwgCi0gICAgMjUxLCAxMCwgMjgsIDQsIDI1MSwgMTEsIDI4LCA0LCAyMjIsIDk2LCAyNDMsIDE4OCwgMjgsIDQsIDI0MywgMTg0LCAyOCwgCi0gICAgNCwgMjQzLCAxODUsIDI4LCA0LCAyNDMsIDE4NiwgMjgsIDQsIDIyMiwgOTYsIDIyNSwgMiwgMjgsIDQsIDIyNCwgMjU0LCAKLSAgICAyOCwgNCwgMjI0LCAyNTUsIDI4LCA0LCAyMjUsIDAsIDI4LCAyMTYsIDI0MiwgMTUyLCAyMTIsIDIzOCwgMjgsIDIxNiwgCi0gICAgMjQyLCAxNTIsIDI0NywgMjQ4LCAyOCwgMjE2LCAyNDIsIDE1MiwgMjIzLCAxMzUsIDI4LCAyMTYsIDI0MiwgMTUyLCAyMjAsIAotICAgIDE3NSwgMjIzLCAxMzUsIDI4LCAyMTYsIDI0MiwgMTUyLCAyNDcsIDE4NywgMjgsIDIxNiwgMjQyLCAxNTIsIDIzNCwgMTcwLCAKLSAgICAyOCwgMjE2LCAyNDIsIDE1MiwgMjUwLCAzMSwgMjgsIDIxNiwgMjQyLCAxNTIsIDI0MSwgMTYyLCAyOCwgMjE2LCAyNDIsIAotICAgIDE1MiwgMjQ3LCAyNDcsIDI4LCAyMTYsIDI0MiwgMTUyLCAyMzMsIDIxNSwgMTU4LCAxLCA2MSwgMTU4LCAxLCA3NCwgMTU4LCAKLSAgICAxLCA3MiwgMTU4LCAxLCA3NSwgMTU4LCAxLCA2OSwgMTU4LCAxLCAyMTUsIDc5LCAxNTgsIDEsIDI0MywgMTEwLCAxNTgsIDEsIAotICAgIDE4MSwgMTU4LCAxLCAyNDMsIDM4LCAxNTgsIDEsIDI0MiwgMTkwLCAxNTgsIDEsIDI0MiwgMTUwLCAxNTgsIDEsIDI0MiwgCi0gICAgOTIsIDE1OCwgMSwgMjQyLCA2MCwgMTU4LCAxLCAxNTksIDE1OCwgMSwgMjQxLCAyMjIsIDE1OCwgMSwgMjQxLCAxNjUsIAotICAgIDE1OCwgMSwgMjQxLCA1NCwgMTU4LCAxLCAyNDAsIDIxMiwgMTU4LCAxLCAyNDAsIDE5MywgMTU4LCAxLCAyMzMsIDE1NywgCi0gICAgMTU4LCAxLCAyMzMsIDgyLCAxNTgsIDEsIDIzMywgMTMsIDE1OCwgMSwgMjMyLCAyMDgsIDE1OCwgMSwgMjMyLCAxNTYsIAotICAgIDE1OCwgMSwgMjMyLCAxMzAsIDE1OCwgMSwgMTg4LCAxNTgsIDEsIDIzMSwgMTU2LCAxNTgsIDEsIDIzMSwgNDIsIDE1OCwgMSwgCi0gICAgMjMwLCAyMzEsIDE1OCwgMSwgMjMwLCAxNzIsIDE1OCwgMSwgMjA1LCAxNTgsIDEsIDI0MSwgNzYsIDE1OCwgMSwgMjMwLCAKLSAgICAzMSwgMTU4LCAxLCAyMjksIDE4NywgMTU4LCAxLCAyMjksIDY0LCAxNTgsIDEsIDIyOCwgMTg1LCAxNTgsIDEsIDIyOCwgOTIsIAotICAgIDE1OCwgMSwgMjI4LCAzMywgMTU4LCAxLCAyMjQsIDE3NCwgMTU4LCAxLCAyMjQsIDE2MSwgMTU4LCAxLCAyMjQsIDE1NCwgCi0gICAgMTU4LCAxLCAyMjQsIDE0NiwgMTU4LCAxLCAyMjQsIDEzNSwgMTU4LCAxLCAyMjQsIDEzMywgMTU4LCAxLCAyMjIsIDIwMiwgCi0gICAgMTU4LCAxLCAxOTcsIDE1OCwgMSwgMjIyLCAxMDAsIDE1OCwgMSwgMjIwLCAxMTcsIDE1OCwgMSwgMjE5LCAyNDIsIDE1OCwgCi0gICAgMSwgMjE5LCAyNywgMTU4LCAxLCAyMTgsIDIwMywgMTU4LCAxLCAyNDgsIDE2NCwgMTU4LCAxLCAyMTgsIDUyLCAxNTgsIDEsIAotICAgIDI0OCwgNDEsIDE1OCwgMSwgMjE3LCAyMjksIDE1OCwgMSwgMjQ3LCAyMTEsIDE1OCwgMSwgMjE3LCA3MSwgMTU4LCAxLCAKLSAgICAyNDcsIDk5LCAxNTgsIDEsIDI0NiwgMzMsIDE1OCwgMSwgMjQ2LCA1LCAxNTgsIDEsIDI0NywgMTA4LCAxNTgsIDEsIDIxNywgCi0gICAgMTIsIDE1OCwgMSwgMjE3LCAxMSwgMTU4LCAxLCAyMTcsIDEsIDE1OCwgMSwgMjE3LCAwLCAxNTgsIDEsIDIxNiwgMjU1LCAKLSAgICAxNTgsIDEsIDIxNiwgMjU0LCAxNTgsIDEsIDIxNiwgMTQxLCAxNTgsIDEsIDIxNiwgMTM2LCAxNTgsIDEsIDIxNiwgMTI1LCAKLSAgICAxNTgsIDEsIDIxNiwgMTI0LCAxNTgsIDEsIDIxNiwgMTIyLCAxNTgsIDEsIDIxNiwgMTIxLCAxNTgsIDEsIDIxNCwgNDksIAotICAgIDE1OCwgMSwgMjE0LCA2LCAxNTgsIDEsIDIxMywgMjM1LCAxNTgsIDEsIDIxMywgMjE0LCAxNTgsIDEsIDIxMywgMTgzLCAKLSAgICAxNTgsIDEsIDIxMywgMTcxLCAxNTgsIDEsIDE4NiwgMTU4LCAxLCAyMTMsIDM4LCAxNTgsIDEsIDIxMiwgMjU1LCAxNTgsIDEsIAotICAgIDIxMiwgMjM1LCAxNTgsIDEsIDIxMiwgMjAzLCAxNTgsIDEsIDIxMiwgMTY5LCAxOCwgMTksIDI0MCwgMTYwLCAxOCwgMTksIAotICAgIDc0LCAxOCwgMTksIDI1NCwgMTk2LCAxOCwgMTksIDcyLCAxOCwgMTksIDIzNiwgMjgsIDE4LCAxOSwgNzUsIDE4LCAxOSwgCi0gICAgMjI3LCA0OSwgMTgsIDE5LCAyMTMsIDEwNCwgMjI3LCA0OSwgMTgsIDE5LCA2NiwgMjQ1LCAxNjUsIDE4LCAxOSwgNjYsIDcyLCAKLSAgICAxOCwgMTksIDYxLCAxOCwgMTksIDI1NCwgMjMyLCAxOCwgMTksIDIxNCwgNiwgMTgsIDE5LCAxNDgsIDIxNCwgNiwgMTgsIAotICAgIDE5LCAyMTMsIDIzNSwgMTgsIDE5LCAxNDgsIDIxMywgMjM1LCAxOCwgMTksIDIxMywgMjI3LCAxOCwgMTksIDE0OCwgMjEzLCAKLSAgICAyMjcsIDE4LCAxOSwgMjEzLCAyMTQsIDE4LCAxOSwgMTQ4LCAyMTMsIDIxNCwgMTgsIDE5LCAyMTMsIDIwMiwgMTgsIDE5LCAKLSAgICAxNDgsIDIxMywgMjAyLCAxOCwgMTksIDIzMCwgMTEsIDIxMywgMjAyLCAxOCwgMTksIDIxNCwgNDksIDE4LCAxOSwgMTQ4LCAKLSAgICAyMTQsIDQ5LCAxOCwgMTksIDIxNCwgNDgsIDE4LCAxOSwgMTQ4LCAyMTQsIDQ4LCAxOCwgMTksIDIzMCwgMTEsIDIxNCwgNDgsIAotICAgIDE4LCAxOSwgMjU0LCAxMDgsIDE4LCAxOSwgMjEzLCAxMDQsIDIxNCwgODIsIDE4LCAxOSwgMjQyLCAxNTYsIDIxOSwgNjksIAotICAgIDE4LCAxOSwgNDAsIDE3OSwgMTgsIDE5LCA0MCwgMjQyLCAxMTMsIDE4LCAxOSwgNDAsIDI1MSwgMTAxLCAxNTEsIDIyMywgCi0gICAgMTMwLCAxOCwgMTksIDQwLCAyMTYsIDIyNywgMTUxLCAyMjMsIDEzMCwgMTgsIDE5LCA0MCwgNDYsIDE1MSwgMjIzLCAxMzAsIAotICAgIDE4LCAxOSwgNDAsIDIyMywgMTMwLCAxOCwgMTksIDQwLCA1MSwgMTc5LCAxOCwgMTksIDQwLCA1MSwgMjIwLCAxNzUsIDcxLCAKLSAgICAyMTksIDMyLCAxOCwgMTksIDQwLCAyMzEsIDM3LCAyNDcsIDc0LCAxOCwgMTksIDQwLCAyMjAsIDE3NSwgMTk5LCA5MCwgMTgsIAotICAgIDE5LCA0MCwgMjI1LCAxNTYsIDE4LCAxOSwgNDAsIDExOSwgMjE4LCAzNiwgMTgsIDE5LCAyNDUsIDEwOCwgMTgsIDE5LCAKLSAgICAyMzUsIDI1MSwgMTgsIDE5LCAyMjcsIDYyLCAxOCwgMTksIDI1NCwgMzIsIDE4LCAxOSwgMjI2LCA5NiwgMTgsIDE5LCAyMjYsIAotICAgIDIxMSwgMTgsIDE5LCAyMjUsIDI0MCwgMTgsIDE5LCAyMjUsIDIwMywgMTgsIDE5LCAyMjUsIDE1MCwgMTgsIDE5LCAyMjUsIAotICAgIDEyOSwgMTgsIDE5LCAyMTMsIDEwNCwgMjI1LCAxMjksIDE4LCAxOSwgNjYsIDI0MSwgMjA0LCAxOCwgMTksIDY2LCAyNDEsIAotICAgIDE2NSwgMTgsIDE5LCAxOTMsIDE4LCAxOSwgMjI2LCAyMTMsIDE4LCAxOSwgMjI1LCAwLCAxOCwgMTksIDE0OCwgMjI1LCAwLCAKLSAgICAxOCwgMTksIDIyNCwgMjU0LCAxOCwgMTksIDE0OCwgMjI0LCAyNTQsIDE4LCAxOSwgMjI0LCAyNTMsIDE4LCAxOSwgMTQ4LCAKLSAgICAyMjQsIDI1MywgMTgsIDE5LCAyMjQsIDI1MSwgMTgsIDE5LCAxNDgsIDIyNCwgMjUxLCAxOCwgMTksIDIyNCwgMjUwLCAxOCwgCi0gICAgMTksIDE0OCwgMjI0LCAyNTAsIDE4LCAxOSwgMjI1LCAyLCAxOCwgMTksIDE0OCwgMjI1LCAyLCAxOCwgMTksIDIyNSwgMSwgCi0gICAgMTgsIDE5LCAxNDgsIDIyNSwgMSwgMTgsIDE5LCAyMTMsIDEwNCwgMjI1LCAxLCAxOCwgMTksIDIyNiwgMjI5LCAxOCwgMTksIAotICAgIDE0OCwgMjI2LCAyMjksIDE4LCAxOSwgNjYsIDI0MiwgNDEsIDE4LCAxOSwgMjE3LCAyMjksIDE4LCAxOSwgMjE4LCA0NywgCi0gICAgMTgsIDE5LCAyMTcsIDcxLCAxOCwgMTksIDIxNywgNTcsIDE4LCAxOSwgMTA4LCAxOCwgMTksIDIxNiwgMjMwLCAxOCwgMTksIAotICAgIDIxMywgMTA0LCAyMTYsIDIzMCwgMTgsIDE5LCA2NiwgMjQ4LCAyOCwgMTgsIDE5LCA2NiwgMjQ3LCAyMTEsIDE4LCAxOSwgCi0gICAgMjE4LCA1MiwgMTgsIDE5LCAyMTgsIDQ5LCAxOCwgMTksIDIxNiwgNDMsIDE4LCAxOSwgMTQ4LCAyMTYsIDQzLCAxOCwgMTksIAotICAgIDIxNiwgMjcsIDE4LCAxOSwgMTQ4LCAyMTYsIDI3LCAxOCwgMTksIDIxNiwgMjYsIDE4LCAxOSwgMTQ4LCAyMTYsIDI2LCAxOCwgCi0gICAgMTksIDEwOSwgMTgsIDE5LCAxNDgsIDEwOSwgMTgsIDE5LCAyMTYsIDIwLCAxOCwgMTksIDE0OCwgMjE2LCAyMCwgMTgsIDE5LCAKLSAgICAyMTYsIDQ1LCAxOCwgMTksIDE0OCwgMjE2LCA0NSwgMTgsIDE5LCAyMTYsIDQ0LCAxOCwgMTksIDE0OCwgMjE2LCA0NCwgMTgsIAotICAgIDE5LCAyMzAsIDExLCAyMTYsIDQ0LCAxOCwgMTksIDIxOCwgOTksIDE4LCAxOSwgMjE2LCAxMTIsIDE4LCAxOSwgMjE2LCA5NiwgCi0gICAgMTgsIDE5LCAyMTYsIDk1LCAxOCwgMTksIDIxNiwgMTE1LCAxOCwgMTksIDIzNCwgMTg4LCAxOCwgMTksIDIzNSwgMTEsIDE4LCAKLSAgICAxOSwgMjM0LCAxMDEsIDE4LCAxOSwgMjM0LCA5MiwgMTgsIDE5LCAyMzQsIDM3LCAxOCwgMTksIDIzNCwgMTksIDE4LCAxOSwgCi0gICAgMjEzLCAxMDQsIDIzNCwgMTksIDE4LCAxOSwgMTgxLCAxOCwgMTksIDIzNSwgMTQsIDE4LCAxOSwgMjMzLCAyMDAsIDE4LCAKLSAgICAxOSwgMTQ4LCAyMzMsIDIwMCwgMTgsIDE5LCAyMzMsIDE5OCwgMTgsIDE5LCAxNDgsIDIzMywgMTk4LCAxOCwgMTksIDIzMywgCi0gICAgMTk3LCAxOCwgMTksIDE0OCwgMjMzLCAxOTcsIDE4LCAxOSwgMjMzLCAxOTYsIDE4LCAxOSwgMTQ4LCAyMzMsIDE5NiwgMTgsIAotICAgIDE5LCAyMzMsIDE5NSwgMTgsIDE5LCAxNDgsIDIzMywgMTk1LCAxOCwgMTksIDIzMywgMjA0LCAxOCwgMTksIDE0OCwgMjMzLCAKLSAgICAyMDQsIDE4LCAxOSwgMjMzLCAyMDMsIDE4LCAxOSwgMTQ4LCAyMzMsIDIwMywgMTgsIDE5LCAyMzAsIDExLCAyMzMsIDIwMywgCi0gICAgMTgsIDE5LCAyMzUsIDI3LCAxOCwgMTksIDIzMywgMjA1LCAxOCwgMTksIDIxOSwgMjE0LCAyMzQsIDE4MiwgMTgsIDE5LCAKLSAgICAyMTksIDIxNCwgMjM0LCA5MywgMTgsIDE5LCAyMTksIDIxNCwgMjM0LCAzMiwgMTgsIDE5LCAyMTksIDIxNCwgMjM0LCAyNTIsIAotICAgIDE4LCAxOSwgMjUwLCAxMjQsIDE4LCAxOSwgMjUwLCAyMTcsIDE4LCAxOSwgMjQ5LCAyNDQsIDE4LCAxOSwgMjQ5LCAyMzQsIAotICAgIDE4LCAxOSwgMjQ5LCAxNzUsIDE4LCAxOSwgMjQ5LCAxMTMsIDE4LCAxOSwgMjEzLCAxMDQsIDI0OSwgMTEzLCAxOCwgMTksIAotICAgIDI1MCwgMjE5LCAxOCwgMTksIDI1MCwgMjE4LCAxOCwgMTksIDI0OSwgMjIsIDE4LCAxOSwgMTQ4LCAyNDksIDIyLCAxOCwgCi0gICAgMTksIDI0OSwgMjAsIDE4LCAxOSwgMTQ4LCAyNDksIDIwLCAxOCwgMTksIDI0OSwgMTksIDE4LCAxOSwgMTQ4LCAyNDksIDE5LCAKLSAgICAxOCwgMTksIDI0OSwgMTgsIDE4LCAxOSwgMTQ4LCAyNDksIDE4LCAxOCwgMTksIDI0OSwgMTcsIDE4LCAxOSwgMTQ4LCAyNDksIAotICAgIDE3LCAxOCwgMTksIDI0OSwgMjQsIDE4LCAxOSwgMTQ4LCAyNDksIDI0LCAxOCwgMTksIDI0OSwgMjMsIDE4LCAxOSwgMTQ4LCAKLSAgICAyNDksIDIzLCAxOCwgMTksIDIzMCwgMTEsIDI0OSwgMjMsIDE4LCAxOSwgMjUwLCAyNTIsIDE4LCAxOSwgMjIyLCAxMjcsIAotICAgIDIxNywgMTYzLCAxOCwgMTksIDIzMSwgMTU2LCAxOCwgMTksIDIzMiwgNDAsIDE4LCAxOSwgMjMxLCA0MiwgMTgsIDE5LCAKLSAgICAyMzEsIDE0LCAxOCwgMTksIDIzMCwgMjMxLCAxOCwgMTksIDIzMCwgMjAyLCAxOCwgMTksIDIxMywgMTA0LCAyMzAsIDIwMiwgCi0gICAgMTgsIDE5LCAxODgsIDE4LCAxOSwgMjMyLCA0MSwgMTgsIDE5LCAyMzAsIDExMiwgMTgsIDE5LCAxNDgsIDIzMCwgMTEyLCAKLSAgICAxOCwgMTksIDIzMCwgMTEwLCAxOCwgMTksIDE0OCwgMjMwLCAxMTAsIDE4LCAxOSwgMjMwLCAxMDksIDE4LCAxOSwgMTQ4LCAKLSAgICAyMzAsIDEwOSwgMTgsIDE5LCAyMzAsIDEwOCwgMTgsIDE5LCAxNDgsIDIzMCwgMTA4LCAxOCwgMTksIDIzMCwgMTA3LCAxOCwgCi0gICAgMTksIDE0OCwgMjMwLCAxMDcsIDE4LCAxOSwgMjMwLCAxMTQsIDE4LCAxOSwgMTQ4LCAyMzAsIDExNCwgMTgsIDE5LCAyMzAsIAotICAgIDExMywgMTgsIDE5LCAxNDgsIDIzMCwgMTEzLCAxOCwgMTksIDIzMCwgMTEsIDIzMCwgMTEzLCAxOCwgMTksIDE4MywgMTgsIAotICAgIDE5LCAxNDgsIDE4MywgMTgsIDE5LCAyMzEsIDQ1LCAxOCwgMTksIDI1MywgMTIxLCAxODMsIDE4LCAxOSwgMjIyLCAxMjcsIAotICAgIDE4MywgMTgsIDE5LCAyMjksIDE4NywgMTgsIDE5LCAyMzAsIDQyLCAxOCwgMTksIDIyOSwgNjQsIDE4LCAxOSwgMjI5LCAzOSwgCi0gICAgMTgsIDE5LCAyMjgsIDE4NSwgMTgsIDE5LCAyMjgsIDE3NSwgMTgsIDE5LCAyMTMsIDEwNCwgMjI4LCAxNzUsIDE4LCAxOSwgCi0gICAgMjA1LCAxOCwgMTksIDIzMCwgNDMsIDE4LCAxOSwgMjI4LCAyOSwgMTgsIDE5LCAxNDgsIDIyOCwgMjksIDE4LCAxOSwgMjI4LCAKLSAgICAzMSwgMTgsIDE5LCAxNDgsIDIyOCwgMzEsIDE4LCAxOSwgMjI4LCAzMCwgMTgsIDE5LCAxNDgsIDIyOCwgMzAsIDE4LCAxOSwgCi0gICAgMjMwLCAxMSwgMjI4LCAzMCwgMTgsIDE5LCAyMDQsIDE4LCAxOSwgNjYsIDIyOSwgMTYxLCAxOCwgMTksIDIyOSwgNjksIDE4LCAKLSAgICAxOSwgMjMzLCA4MiwgMTgsIDE5LCAyMzMsIDE1NSwgMTgsIDE5LCAyMzMsIDEzLCAxOCwgMTksIDIzMiwgMjU1LCAxOCwgMTksIAotICAgIDIzMiwgMjA4LCAxOCwgMTksIDIzMiwgMTgwLCAxOCwgMTksIDIxMywgMTA0LCAyMzIsIDE4MCwgMTgsIDE5LCAyMzMsIDE1NywgCi0gICAgMTgsIDE5LCAyMzMsIDE1NiwgMTgsIDE5LCAyMzIsIDEyNywgMTgsIDE5LCAxNDgsIDIzMiwgMTI3LCAxOCwgMTksIDIzMiwgCi0gICAgMTI2LCAxOCwgMTksIDE0OCwgMjMyLCAxMjYsIDE4LCAxOSwgMjMyLCAxMjUsIDE4LCAxOSwgMTQ4LCAyMzIsIDEyNSwgMTgsIAotICAgIDE5LCAyMzIsIDEyNCwgMTgsIDE5LCAxNDgsIDIzMiwgMTI0LCAxOCwgMTksIDIzMiwgMTIzLCAxOCwgMTksIDE0OCwgMjMyLCAKLSAgICAxMjMsIDE4LCAxOSwgMjMyLCAxMjksIDE4LCAxOSwgMTQ4LCAyMzIsIDEyOSwgMTgsIDE5LCAyMzIsIDEyOCwgMTgsIDE5LCAKLSAgICAxNDgsIDIzMiwgMTI4LCAxOCwgMTksIDE1MCwgMTgsIDE5LCAxNDgsIDE1MCwgMTgsIDE5LCAxMzgsIDE1MCwgMTgsIDE5LCAKLSAgICAyMjIsIDEwMCwgMTgsIDE5LCAyMjIsIDE5OCwgMTgsIDE5LCAyMjAsIDExNywgMTgsIDE5LCAyMjAsIDEwMSwgMTgsIDE5LCAKLSAgICAyMTksIDI0MiwgMTgsIDE5LCAyMTksIDIyNiwgMTgsIDE5LCAyMTMsIDEwNCwgMjE5LCAyMjYsIDE4LCAxOSwgMjIyLCAyMDIsIAotICAgIDE4LCAxOSwgMjIyLCAyMDAsIDE4LCAxOSwgMjE4LCAxOTQsIDE4LCAxOSwgMTQ4LCAyMTgsIDE5NCwgMTgsIDE5LCAyMTgsIAotICAgIDE4OCwgMTgsIDE5LCAxNDgsIDIxOCwgMTg4LCAxOCwgMTksIDIxOCwgMTg3LCAxOCwgMTksIDE0OCwgMjE4LCAxODcsIDE4LCAKLSAgICAxOSwgMjE4LCAxODMsIDE4LCAxOSwgMTQ4LCAyMTgsIDE4MywgMTgsIDE5LCAyMTgsIDE4MiwgMTgsIDE5LCAxNDgsIDIxOCwgCi0gICAgMTgyLCAxOCwgMTksIDIxOCwgMTk4LCAxOCwgMTksIDE0OCwgMjE4LCAxOTgsIDE4LCAxOSwgMjE4LCAxOTcsIDE4LCAxOSwgCi0gICAgMTQ4LCAyMTgsIDE5NywgMTgsIDE5LCAyMzAsIDExLCAyMTgsIDE5NywgMTgsIDE5LCAxOTcsIDE4LCAxOSwgMjUzLCAxMjEsIAotICAgIDE5NywgMTgsIDE5LCAyMTgsIDE5OSwgMTgsIDE5LCAyNTEsIDE0MSwgMTk3LCAxOCwgMTksIDIzMCwgMTk3LCAyMjAsIDM2LCAKLSAgICAxOCwgMTksIDIzMCwgMTEsIDIyMCwgMjcsIDE4LCAxOSwgMjMwLCAxMSwgMjIzLCAyLCAxOCwgMTksIDIzMCwgMTEsIDIxOSwgCi0gICAgMTY3LCAxOCwgMTksIDIzMCwgMTEsIDIxOSwgMjksIDE4LCAxOSwgMjMwLCAxMSwgMjIwLCAyNiwgMTgsIDE5LCAyMzAsIDExLCAKLSAgICAyMjIsIDEwMywgMTgsIDE5LCAyMjAsIDI0MywgMTgsIDE5LCAyMjAsIDIxMiwgMTgsIDE5LCAyMjAsIDIwNywgMTgsIDE5LCAKLSAgICAyMjAsIDE4NywgMTgsIDE5LCAyMjAsIDE4MSwgMTgsIDE5LCAyMjEsIDI0LCAxOCwgMTksIDIyMSwgMjAsIDE4LCAxOSwgCi0gICAgMjIwLCAxMzIsIDE4LCAxOSwgMTQ4LCAyMjAsIDEzMiwgMTgsIDE5LCAyMjAsIDEzMSwgMTgsIDE5LCAxNDgsIDIyMCwgMTMxLCAKLSAgICAxOCwgMTksIDIyMCwgMTMwLCAxOCwgMTksIDE0OCwgMjIwLCAxMzAsIDE4LCAxOSwgMjIwLCAxMjksIDE4LCAxOSwgMTQ4LCAKLSAgICAyMjAsIDEyOSwgMTgsIDE5LCAyMjAsIDEyOCwgMTgsIDE5LCAxNDgsIDIyMCwgMTI4LCAxOCwgMTksIDIyMCwgMTM0LCAxOCwgCi0gICAgMTksIDE0OCwgMjIwLCAxMzQsIDE4LCAxOSwgMjIwLCAxMzMsIDE4LCAxOSwgMTQ4LCAyMjAsIDEzMywgMTgsIDE5LCAyMjEsIAotICAgIDI2LCAxOCwgMTksIDIxMywgMzgsIDE4LCAxOSwgMjEzLCA4OSwgMTgsIDE5LCAyMTIsIDI1NSwgMTgsIDE5LCAyMTIsIDI0NiwgCi0gICAgMTgsIDE5LCAyMTIsIDIzNSwgMTgsIDE5LCAyMTIsIDIyMCwgMTgsIDE5LCAyMTMsIDEwNCwgMjEyLCAyMjAsIDE4LCAxOSwgCi0gICAgMTg2LCAxOCwgMTksIDIxMywgOTEsIDE4LCAxOSwgMjEyLCAxNjYsIDE4LCAxOSwgMTQ4LCAyMTIsIDE2NiwgMTgsIDE5LCAKLSAgICAyMTIsIDE2NSwgMTgsIDE5LCAxNDgsIDIxMiwgMTY1LCAxOCwgMTksIDIxMiwgMTY0LCAxOCwgMTksIDE0OCwgMjEyLCAxNjQsIAotICAgIDE4LCAxOSwgMjEyLCAxNjMsIDE4LCAxOSwgMTQ4LCAyMTIsIDE2MywgMTgsIDE5LCAyMTIsIDE2MiwgMTgsIDE5LCAxNDgsIAotICAgIDIxMiwgMTYyLCAxOCwgMTksIDIxMiwgMTY4LCAxOCwgMTksIDE0OCwgMjEyLCAxNjgsIDE4LCAxOSwgMjEyLCAxNjcsIDE4LCAKLSAgICAxOSwgMTQ4LCAyMTIsIDE2NywgMTgsIDE5LCAyMzAsIDExLCAyMTIsIDE2NywgMTgsIDE5LCAyMTMsIDEwNSwgMTgsIDE5LCAKLSAgICAyNTEsIDE4MiwgMjEzLCAxMDUsIDE4LCAxOSwgMTQ4LCAyMTMsIDEwNSwgMTgsIDE5LCAyMjIsIDEyNywgMjEyLCAyNTUsIAotICAgIDE4LCAxOSwgMjI0LCAyMSwgMTgsIDE5LCAyMjQsIDExMiwgMjI0LCAyMSwgMTgsIDE5LCAxNDgsIDIzMywgODIsIDE4LCAxOSwgCi0gICAgMjI0LCA3MywgMTgsIDE5LCAyMjMsIDE4OCwgMTgsIDE5LCAyMjMsIDEzNiwgMTgsIDE5LCAyMjMsIDExMiwgMTgsIDE5LCAKLSAgICAyMjMsIDk5LCAxOCwgMTksIDE0OCwgMjMyLCAyMDgsIDE4LCAxOSwgMjAzLCAxOCwgMTksIDIyNCwgNzQsIDE4LCAxOSwgCi0gICAgMTQ4LCAyMzMsIDE1NywgMTgsIDE5LCAyMjMsIDIwLCAxOCwgMTksIDE0OCwgMjIzLCAyMCwgMTgsIDE5LCAxNDksIDE4LCAKLSAgICAxOSwgMTQ4LCAxNDksIDE4LCAxOSwgMTM4LCAxNDksIDE4LCAxOSwgMjQ0LCAxMjMsIDE4LCAxOSwgMjQ0LCAxNjEsIDE4LCAKLSAgICAxOSwgMjQ0LCA5MCwgMTgsIDE5LCAyNDQsIDc3LCAxOCwgMTksIDI0NCwgMTIsIDE4LCAxOSwgMjQ0LCAzLCAxOCwgMTksIAotICAgIDI0NCwgMTY0LCAxOCwgMTksIDI0NCwgMTYzLCAxOCwgMTksIDI0MywgMTg3LCAxOCwgMTksIDE0OCwgMjQzLCAxODcsIDE4LCAKLSAgICAxOSwgMjQ0LCAyMzAsIDE4LCAxOSwgMjE3LCAxNDgsIDE4LCAxOSwgMjMwLCA5NiwgMjE3LCAxNDgsIDE4LCAxOSwgMjE3LCAKLSAgICAxMjgsIDE4LCAxOSwgMjMwLCA5NiwgMjE3LCAxMjgsIDE4LCAxOSwgMjE3LCAxMjQsIDE4LCAxOSwgMjMwLCA5NiwgMjE3LCAKLSAgICAxMjQsIDE4LCAxOSwgMjE3LCAxMDksIDE4LCAxOSwgMjE3LCAxMDYsIDE4LCAxOSwgMjE3LCAxNjEsIDE4LCAxOSwgMjE3LCAKLSAgICAxNjAsIDE4LCAxOSwgMjE3LCA4MSwgMTgsIDE5LCAxNDgsIDIxNywgODEsIDE4LCAxOSwgMjE3LCAxNjMsIDE4LCAxOSwgCi0gICAgMjE2LCAxMDMsIDE4LCAxOSwgMjE2LCAxMDEsIDE4LCAxOSwgMjE2LCAxMDAsIDE4LCAxOSwgMjE2LCAxMDUsIDE4LCAxOSwgCi0gICAgMjE2LCAxMDYsIDE4LCAxOSwgMjE2LCAxOCwgMTgsIDE5LCAyMTYsIDE3LCAxOCwgMTksIDIxNiwgMTYsIDE4LCAxOSwgMjE2LCAKLSAgICAxOSwgMTgsIDE5LCAyMjgsIDQ5LCAyNDEsIDIyMiwgMTgsIDE5LCAyMjgsIDQ5LCAyNDEsIDE2NSwgMTgsIDE5LCAyMjgsIAotICAgIDQ5LCAyNDEsIDE0NywgMTgsIDE5LCAyMjgsIDQ5LCAyNDEsIDU0LCAxOCwgMTksIDIyOCwgNDksIDI0MSwgMzksIDE4LCAxOSwgCi0gICAgMjI4LCA0OSwgMTU5LCAxOCwgMTksIDIyOCwgNDksIDI0MiwgMjcsIDE4LCAxOSwgMjI4LCA0OSwgMjQyLCA0MSwgMTgsIDE5LCAKLSAgICAyMjgsIDQ4LCAyNDIsIDQxLCAxOCwgMTksIDI0MSwgMTQwLCAxOCwgMTksIDIyNCwgMjI4LCAxOCwgMTksIDIyNCwgMTk4LCAKLSAgICAxOCwgMTksIDIyNCwgMTkzLCAxOCwgMTksIDIyNCwgMTg3LCAxOCwgMTksIDIyNCwgMTgyLCAxOCwgMTksIDIyNCwgMjMyLCAKLSAgICAxOCwgMTksIDIyNCwgMjMxLCAxOCwgMTksIDIyNCwgMjQwLCAxOCwgMTksIDIxNywgOCwgMTgsIDE5LCAyMTcsIDYsIDE4LCAKLSAgICAxOSwgMjE3LCA1LCAxOCwgMTksIDIxNywgOSwgMTgsIDE5LCAxNDgsIDIyNCwgMjEsIDE4LCAxOSwgMTQ4LCAyMjMsIDE4OCwgCi0gICAgMTgsIDE5LCAxNDgsIDIyMywgMTEyLCAxOCwgMTksIDE0OCwgMjAzLCAxOCwgMTksIDIyOSwgMTU3LCAxOCwgMTksIDIyOSwgCi0gICAgMTEzLCAxOCwgMTksIDIyOSwgMTA5LCAxOCwgMTksIDIyOSwgOTAsIDE4LCAxOSwgMjI5LCA4NSwgMTgsIDE5LCAyMjksIAotICAgIDE1OSwgMTgsIDE5LCAyMjksIDE1OCwgMTgsIDE5LCAyMjksIDE2MSwgMTgsIDE5LCAyMjgsIDE5NiwgMTgsIDE5LCAyMjIsIAotICAgIDEyNywgMjIwLCAyNDMsIDE4LCAxOSwgMjIyLCAxMjcsIDIyMCwgMjEyLCAxOCwgMTksIDIyMiwgMTI3LCAyMjAsIDE4NywgCi0gICAgMTgsIDE5LCAyMjIsIDEyNywgMjIxLCAyNCwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCAxNDgsIDE4LCAxOSwgMjEzLCAyMDAsIAotICAgIDIxNywgMTI4LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDEwOSwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCAxNjEsIDE4LCAxOSwgCi0gICAgMjEzLCAyMDAsIDIxNywgMTYzLCAxOCwgMTksIDIzMywgMTksIDE4LCAxOSwgMjMzLCAxOCwgMTgsIDE5LCAyMzMsIDE3LCAKLSAgICAxOCwgMTksIDIzMywgMTYsIDE4LCAxOSwgMjMzLCAyNSwgMTgsIDE5LCAyMzMsIDI0LCAxOCwgMTksIDIzMywgMjYsIDE4LCAKLSAgICAxOSwgMjE3LCAxNjIsIDIxNywgMTQ4LCAxOCwgMTksIDIxNywgMTYyLCAyMTcsIDEyOCwgMTgsIDE5LCAyMTcsIDE2MiwgCi0gICAgMjE3LCAxMjQsIDE4LCAxOSwgMjE3LCAxNjIsIDIxNywgMTA5LCAxOCwgMTksIDIxNywgMTYyLCAyMTcsIDEwNiwgMTgsIDE5LCAKLSAgICAyMTcsIDE2MiwgMjE3LCAxNjEsIDE4LCAxOSwgMjE3LCAxNjIsIDIxNywgMTYwLCAxOCwgMTksIDIxNywgMTYyLCAyMTcsIAotICAgIDE2MywgMTgsIDE5LCAyNTQsIDk3LCAyNTMsIDc0LCAxOCwgMTksIDI1MSwgMTQxLCA3NCwgMTgsIDE5LCAyNTEsIDE0MSwgCi0gICAgNzIsIDE4LCAxOSwgMjUxLCAxNDEsIDc1LCAxOCwgMTksIDI1MSwgMTQxLCA2MSwgMTgsIDE5LCAyNTEsIDE0MSwgMjE0LCA2LCAKLSAgICAxOCwgMTksIDI1MSwgMTQxLCAyMTMsIDIzNSwgMTgsIDE5LCAyNTEsIDE0MSwgMjEzLCAyMTQsIDE4LCAxOSwgMjUxLCAxNDEsIAotICAgIDIxNCwgNDksIDE4LCAxOSwgMjUxLCAxNDEsIDIyOSwgMTg3LCAxOCwgMTksIDI1MSwgMTQxLCAyMjksIDY0LCAxOCwgMTksIAotICAgIDI1MSwgMTQxLCAyMjgsIDE4NSwgMTgsIDE5LCAyNTEsIDE0MSwgMjA1LCAxOCwgMTksIDI1MSwgMTQxLCAyMzQsIDE4OCwgCi0gICAgMTgsIDE5LCAyNTEsIDE0MSwgMjM0LCAxMDEsIDE4LCAxOSwgMjUxLCAxNDEsIDIzNCwgMzcsIDE4LCAxOSwgMjUxLCAxNDEsIAotICAgIDE4MSwgMTgsIDE5LCAyMjIsIDEyNywgMjQxLCAyMjIsIDE4LCAxOSwgMjIyLCAxMjcsIDI0MSwgMTY1LCAxOCwgMTksIDIyMiwgCi0gICAgMTI3LCAyNDEsIDU0LCAxOCwgMTksIDIyMiwgMTI3LCAxNTksIDE4LCAxOSwgNjYsIDI0MiwgMTk2LCAxOCwgMTksIDY2LCAKLSAgICAyNDIsIDIwMCwgMTgsIDE5LCA2NiwgMjQyLCAyMTIsIDE4LCAxOSwgNjYsIDI0MiwgMjExLCAxOCwgMTksIDY2LCAyNDIsIAotICAgIDIwMSwgMTgsIDE5LCA2NiwgMjQyLCAyMjUsIDE4LCAxOSwgNjYsIDIyMywgNTEsIDE4LCAxOSwgNjYsIDIyMywgMTEyLCAxOCwgCi0gICAgMTksIDY2LCAyMjQsIDIxLCAxOCwgMTksIDY2LCAyMjQsIDEsIDE4LCAxOSwgNjYsIDIyMywgMTg4LCAxOCwgMTksIDY2LCAKLSAgICAyMDMsIDE4LCAxOSwgNjYsIDIxMywgMTgzLCAxOCwgMTksIDY2LCAyMTMsIDIxNCwgMTgsIDE5LCA2NiwgMjE0LCA2LCAxOCwgCi0gICAgMTksIDY2LCAyMTQsIDEsIDE4LCAxOSwgNjYsIDIxMywgMjM1LCAxOCwgMTksIDY2LCAyMTQsIDQ5LCAxOCwgMTksIDY2LCAKLSAgICAyNDAsIDE4NiwgMTgsIDE5LCA2NiwgMjQwLCAxODcsIDE4LCAxOSwgNjYsIDI0MCwgMTkwLCAxOCwgMTksIDY2LCAyNDAsIAotICAgIDE4OSwgMTgsIDE5LCA2NiwgMjQwLCAxODgsIDE4LCAxOSwgNjYsIDI0MCwgMTkyLCAxOCwgMTksIDY2LCAyMTcsIDkwLCAxOCwgCi0gICAgMTksIDY2LCAyMTcsIDEwOSwgMTgsIDE5LCA2NiwgMjE3LCAxNDgsIDE4LCAxOSwgNjYsIDIxNywgMTQ3LCAxOCwgMTksIDY2LCAKLSAgICAyMTcsIDEyOCwgMTgsIDE5LCA2NiwgMjE3LCAxNjEsIDE4LCAxOSwgNjYsIDIxNiwgODYsIDE4LCAxOSwgNjYsIDIxNiwgOTUsIAotICAgIDE4LCAxOSwgNjYsIDIxNiwgMTEyLCAxOCwgMTksIDY2LCAyMTYsIDExMSwgMTgsIDE5LCA2NiwgMjE2LCA5NiwgMTgsIDE5LCAKLSAgICA2NiwgMjE2LCAxMTUsIDE4LCAxOSwgNjYsIDIyNSwgMzUsIDE4LCAxOSwgNjYsIDIyNSwgMTUwLCAxOCwgMTksIDY2LCAyMjYsIAotICAgIDk2LCAxOCwgMTksIDY2LCAyMjYsIDg2LCAxOCwgMTksIDY2LCAyMjUsIDI0MCwgMTgsIDE5LCA2NiwgMTkzLCAxOCwgMTksIAotICAgIDY2LCAyMjYsIDIyOSwgMTgsIDE5LCA2NiwgMjQyLCA5MiwgMTgsIDE5LCA2NiwgMjQyLCAxNTAsIDE4LCAxOSwgNjYsIDI0MywgCi0gICAgMzgsIDE4LCAxOSwgNjYsIDI0MywgMzEsIDE4LCAxOSwgNjYsIDI0MiwgMTkwLCAxOCwgMTksIDY2LCAyNDMsIDExMCwgMTgsIAotICAgIDE5LCA2NiwgMjM0LCAxMDgsIDE4LCAxOSwgNjYsIDIzNCwgMTEzLCAxOCwgMTksIDY2LCAyMzQsIDEyNSwgMTgsIDE5LCA2NiwgCi0gICAgMjM0LCAxMjQsIDE4LCAxOSwgNjYsIDIzNCwgMTE4LCAxOCwgMTksIDY2LCAyMzQsIDEzOCwgMTgsIDE5LCA2NiwgMjM0LCAKLSAgICA1MCwgMTgsIDE5LCA2NiwgMjM0LCA1MSwgMTgsIDE5LCA2NiwgMjM0LCA1NCwgMTgsIDE5LCA2NiwgMjM0LCA1MywgMTgsIAotICAgIDE5LCA2NiwgMjM0LCA1MiwgMTgsIDE5LCA2NiwgMjM0LCA1NSwgMTgsIDE5LCA2NiwgMjM0LCA1NiwgMTgsIDE5LCA2NiwgCi0gICAgMjI4LCA5MiwgMTgsIDE5LCA2NiwgMjI4LCAxODUsIDE4LCAxOSwgNjYsIDIyOSwgMTg3LCAxOCwgMTksIDY2LCAyMjksIAotICAgIDE4NCwgMTgsIDE5LCA2NiwgMjI5LCA2NCwgMTgsIDE5LCA2NiwgMjA1LCAxOCwgMTksIDY2LCAyMzAsIDE3MiwgMTgsIDE5LCAKLSAgICA2NiwgMjMwLCAyMzEsIDE4LCAxOSwgNjYsIDIzMSwgMTU2LCAxOCwgMTksIDY2LCAyMzEsIDE0NSwgMTgsIDE5LCA2NiwgCi0gICAgMjMxLCA0MiwgMTgsIDE5LCA2NiwgMTg4LCAxOCwgMTksIDY2LCAyMTIsIDIwMywgMTgsIDE5LCA2NiwgMjEyLCAyMzUsIDE4LCAKLSAgICAxOSwgNjYsIDIxMywgMzgsIDE4LCAxOSwgNjYsIDIxMywgMzUsIDE4LCAxOSwgNjYsIDIxMiwgMjU1LCAxOCwgMTksIDY2LCAKLSAgICAxODYsIDE4LCAxOSwgNjYsIDIzNSwgNTQsIDE4LCAxOSwgMjIyLCAxMjcsIDIzNSwgNTQsIDE4LCAxOSwgNjYsIDIzNSwgNzEsIAotICAgIDE4LCAxOSwgNjYsIDIzNSwgMTI3LCAxOCwgMTksIDY2LCAyMzUsIDEyNSwgMTgsIDE5LCA2NiwgMjM1LCAxMTAsIDE4LCAxOSwgCi0gICAgMjIyLCAxMjcsIDIzNSwgMTEwLCAxOCwgMTksIDY2LCAyMzUsIDEzOSwgMTgsIDE5LCA2NiwgMjM1LCA4NCwgMTgsIDE5LCAKLSAgICA2NiwgMjM1LCA4OCwgMTgsIDE5LCA2NiwgMjM1LCA5OCwgMTgsIDE5LCA2NiwgMjM1LCA5NywgMTgsIDE5LCA2NiwgMjM1LCAKLSAgICA5NiwgMTgsIDE5LCA2NiwgMjM1LCA5OSwgMTgsIDE5LCA2NiwgMjMyLCAxNTYsIDE4LCAxOSwgNjYsIDIzMiwgMjA4LCAxOCwgCi0gICAgMTksIDY2LCAyMzMsIDgyLCAxOCwgMTksIDY2LCAyMzMsIDc0LCAxOCwgMTksIDY2LCAyMzMsIDEzLCAxOCwgMTksIDY2LCAKLSAgICAyMzMsIDE1NywgMTgsIDE5LCA2NiwgMjQ3LCAxMDMsIDE4LCAxOSwgNjYsIDI0NywgMTA0LCAxOCwgMTksIDY2LCAyNDcsIAotICAgIDEwNywgMTgsIDE5LCA2NiwgMjQ3LCAxMDYsIDE4LCAxOSwgNjYsIDI0NywgMTA1LCAxOCwgMTksIDY2LCAyNDcsIDEwOCwgCi0gICAgMTgsIDE5LCA2NiwgMjMzLCAxNSwgMTgsIDE5LCA2NiwgMjMzLCAxNywgMTgsIDE5LCA2NiwgMjMzLCAyMSwgMTgsIDE5LCAKLSAgICA2NiwgMjMzLCAyMCwgMTgsIDE5LCA2NiwgMjMzLCAxOSwgMTgsIDE5LCA2NiwgMjMzLCAyNSwgMTgsIDE5LCA2NiwgMjE3LCAKLSAgICAzLCAxOCwgMTksIDY2LCAyMTcsIDUsIDE4LCAxOSwgNjYsIDIxNywgOCwgMTgsIDE5LCA2NiwgMjE3LCA3LCAxOCwgMTksIAotICAgIDY2LCAyMTcsIDYsIDE4LCAxOSwgNjYsIDIxNywgOSwgMTgsIDE5LCA2NiwgMjE2LCAyNTUsIDE4LCAxOSwgNjYsIDIxNywgMCwgCi0gICAgMTgsIDE5LCA2NiwgMjE3LCAxMSwgMTgsIDE5LCA2NiwgMjE3LCAxMCwgMTgsIDE5LCA2NiwgMjE3LCAxLCAxOCwgMTksIDY2LCAKLSAgICAyMTcsIDEyLCAxOCwgMTksIDY2LCAyMTIsIDgsIDE4LCAxOSwgNjYsIDIxMiwgMTYsIDE4LCAxOSwgNjYsIDIxMiwgODcsIAotICAgIDE4LCAxOSwgNjYsIDIxMiwgODUsIDE4LCAxOSwgNjYsIDIxMiwgMzcsIDE4LCAxOSwgNjYsIDIxMiwgMTA5LCAxOCwgMTksIAotICAgIDY2LCAyMTIsIDE1MiwgMTgsIDE5LCA2NiwgNzAsIDIxMiwgMTUyLCAxOCwgMTksIDY2LCAyNDUsIDIzOSwgMTgsIDE5LCA2NiwgCi0gICAgMjQ1LCAyNDAsIDE4LCAxOSwgNjYsIDI0NSwgMjQ3LCAxOCwgMTksIDY2LCAyNDUsIDI0NiwgMTgsIDE5LCA2NiwgMjQ1LCAKLSAgICAyNDIsIDE4LCAxOSwgNjYsIDI0NSwgMjQ5LCAxOCwgMTksIDY2LCAyMTksIDI3LCAxOCwgMTksIDY2LCAyMTksIDI0MiwgMTgsIAotICAgIDE5LCA2NiwgMjIyLCAxMDAsIDE4LCAxOSwgNjYsIDIyMiwgODksIDE4LCAxOSwgNjYsIDIyMCwgMTE3LCAxOCwgMTksIDY2LCAKLSAgICAyMjIsIDIwMiwgMTgsIDE5LCA2NiwgMjIwLCAxNTAsIDE4LCAxOSwgNjYsIDIyMCwgMTg3LCAxOCwgMTksIDY2LCAyMjAsIAotICAgIDI0MywgMTgsIDE5LCA2NiwgMjIwLCAyNDEsIDE4LCAxOSwgNjYsIDIyMCwgMjEyLCAxOCwgMTksIDY2LCAyMjEsIDI0LCAxOCwgCi0gICAgMTksIDY2LCAyMjEsIDI2LCAxOCwgMTksIDY2LCAyMTYsIDEyMiwgMTgsIDE5LCA2NiwgMjE2LCAxMjQsIDE4LCAxOSwgNjYsIAotICAgIDIxNiwgMTM2LCAxOCwgMTksIDY2LCAyMTYsIDEzNSwgMTgsIDE5LCA2NiwgMjE2LCAxMjUsIDE4LCAxOSwgNjYsIDIxNiwgCi0gICAgMTQxLCAxOCwgMTksIDY2LCAyNTAsIDYsIDE4LCAxOSwgNjYsIDI1MCwgMjMsIDE4LCAxOSwgNjYsIDI1MCwgNjcsIDE4LCAKLSAgICAxOSwgNjYsIDI1MCwgNjQsIDE4LCAxOSwgNjYsIDI1MCwgNDcsIDE4LCAxOSwgNjYsIDI1MCwgOTIsIDE4LCAxOSwgNjYsIAotICAgIDIxNiwgODksIDE4LCAxOSwgNjYsIDIxNiwgOTAsIDE4LCAxOSwgNjYsIDIxNiwgOTMsIDE4LCAxOSwgNjYsIDIxNiwgOTIsIAotICAgIDE4LCAxOSwgNjYsIDIxNiwgOTEsIDE4LCAxOSwgNjYsIDIxNiwgOTQsIDE4LCAxOSwgMjUwLCA0OCwgNTIsIDE4LCAxOSwgCi0gICAgMjQzLCAyMDAsIDIxOSwgNjksIDE4LCAxOSwgMjI0LCAyMjQsIDE4LCAxOSwgMjI5LCAxNTYsIDE4LCAxOSwgMjI4LCAxOTMsIAotICAgIDE4LCAxOSwgMjI4LCAxOTIsIDE4LCAxOSwgMjI4LCAxOTEsIDE4LCAxOSwgMjI4LCAxOTAsIDE4LCAxOSwgMjI4LCAxOTUsIAotICAgIDE4LCAxOSwgMjI4LCAxOTQsIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgNzksIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgNzgsIAotICAgIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgNzcsIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgNzYsIDE4LCAxOSwgMjEzLCAyMDAsIAotICAgIDIxNywgNzUsIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgODIsIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgODEsIDE4LCAxOSwgCi0gICAgMjEzLCAyMDAsIDQwLCAyMTcsIDE2MywgMTgsIDE5LCAyNTEsIDE0MSwgMjE0LCA4MiwgMjI3LCA5MiwgMjE5LCAyMDcsIDc3LCAKLSAgICAyMjcsIDkyLCAxLCAyNTEsIDIyNCwgMjI3LCA5MiwgMSwgMjMyLCAxNDUsIDIyNywgOTIsIDEsIDI0NCwgMTIwLCAyMjcsIAotICAgIDkyLCAxLCAyMjIsIDE4NiwgMjI3LCA5MiwgMSwgMjI5LCAyNCwgMjI3LCA5MiwgMSwgMjE1LCAxOTUsIDIyNywgOTIsIDEsIAotICAgIDI0OCwgMTQyLCAyMjcsIDkyLCAxLCAyMTcsIDMzLCAyMjcsIDkyLCAxLCAyNDksIDE2NywgMjI3LCA5MiwgMSwgMjUwLCAKLSAgICAxMTQsIDIyNywgOTIsIDEsIDIzMCwgMTYxLCAyMjcsIDkyLCAxLCAyNDIsIDEzMiwgMjI3LCA5MiwgMSwgMjI5LCAxNDcsIAotICAgIDIyNywgOTIsIDEsIDIxOSwgNjIsIDIyNywgOTIsIDEsIDIyMywgNDYsIDIyNywgOTIsIDEsIDI1NCwgMTA1LCAyMjcsIDkyLCAKLSAgICAxLCAyMjcsIDUzLCAyMjcsIDkyLCAxLCAyMTUsIDEyMSwgMjI3LCA5MiwgMSwgMjQ1LCAxODcsIDIyNywgOTIsIDEsIDIzNSwgCi0gICAgMTg2LCAyMjcsIDkyLCAxLCAyNDUsIDE4OCwgMjI3LCA5MiwgMSwgMjI3LCAyNCwgMjI3LCA5MiwgMSwgMjE1LCAxNzYsIAotICAgIDIyNywgOTIsIDEsIDIzNiwgMzQsIDIyNywgOTIsIDEsIDI0NSwgMTg1LCAyMjcsIDkyLCAxLCAyMjYsIDc3LCAyMjcsIDkyLCAKLSAgICAyNDQsIDExOSwgNzcsIDIyNywgOTIsIDIyMywgMjAyLCAyNDQsIDExOSwgNzcsIDE2OCwgMSwgMjQ0LCAxMTAsIDI0NCwgCi0gICAgMTAyLCAyNDQsIDEyNCwgMjQ0LCAyMzAsIDE2OCwgMSwgMjE1LCA3OSwgMTY4LCAxLCAyMTUsIDEwNiwgMjE1LCAxMjIsIDY5LCAKLSAgICAxNjgsIDEsIDIxMiwgMjA1LCAxNjgsIDEsIDIxMywgMTA1LCAxNjgsIDEsIDIxNCwgODIsIDE2OCwgMSwgMjE3LCA4NCwgCi0gICAgMjE3LCA4MywgMjE3LCAxMDQsIDE2OCwgMSwgMjQ1LCAyNSwgMTY4LCAxLCAyNTQsIDQsIDYxLCAxNjgsIDEsIDIyNywgMTAsIAotICAgIDc1LCAxNjgsIDEsIDI1NCwgMTc3LCA2MSwgMTY4LCAxLCAyNTQsIDEzMiwgMTY4LCAxLCAyMzIsIDE4NiwgNzUsIDE2OCwgMSwgCi0gICAgMjIwLCAxNjgsIDc1LCAxNjgsIDEsIDc1LCAxNjgsIDEsIDIyNywgOTksIDE2OCwgMSwgMjI3LCA2MiwgMTY4LCAxLCAyMjQsIAotICAgIDU1LCAyMjQsIDY3LCAyMjMsIDI0NCwgMTQ5LCAxNjgsIDEsIDIzNCwgMTk5LCAxNjgsIDEsIDI1MCwgMTExLCAxNjgsIDEsIAotICAgIDIzNCwgMjAwLCAyMzUsIDI3LCAxNjgsIDEsIDI0MywgMTc3LCAxNjgsIDEsIDI0NSwgOTYsIDE2OCwgMSwgMjQzLCAzNCwgCi0gICAgMjQyLCA0NywgMjQzLCAxNzcsIDE2OCwgMSwgMjQzLCA3MiwgMTY4LCAxLCAyMTMsIDE3NiwgMjEzLCAxNzAsIDIxNCwgODIsIAotICAgIDE2OCwgMSwgMjQyLCAxOSwgMjQyLCA0MSwgMTY4LCAxLCAyNDIsIDIzLCAyNDIsIDQxLCAxNjgsIDEsIDIzMiwgMTg4LCAKLSAgICAyNDIsIDQxLCAxNjgsIDEsIDIyMCwgMTcxLCAyNDIsIDQxLCAxNjgsIDEsIDIzMCwgNywgMjI4LCAxOCwgMjMwLCA4LCAyMDQsIAotICAgIDE2OCwgMSwgMjIwLCAxNjksIDIwNCwgMTY4LCAxLCAyNDYsIDY5LCAxNjgsIDEsIDIzNSwgMTY2LCAyMzUsIDE3MCwgMjM1LCAKLSAgICAxNjAsIDcyLCAxNjgsIDEsIDc0LCAxNjgsIDEsIDIzNSwgMTE4LCAyMzUsIDE0MiwgMTY4LCAxLCAyNDMsIDE5LCAxNjgsIDEsIAotICAgIDIzMiwgMTg5LCAyNTQsIDE0OCwgMTY4LCAxLCAyMjAsIDE3MywgNjEsIDE2OCwgMSwgMjM1LCAxNTIsIDI0NSwgNzIsIDE2OCwgCi0gICAgMSwgMjI2LCA0MCwgMjI2LCA2MSwgMjI2LCAyMjksIDE2OCwgMSwgMjU0LCA3MiwgMjQ1LCA3MSwgMTY4LCAxLCAyMTksIAotICAgIDIxMSwgMTk3LCAxNjgsIDEsIDIyMCwgMTA1LCAyMzIsIDE4NSwgMTk3LCAxNjgsIDEsIDIyMCwgMTY3LCAxOTcsIDE2OCwgMSwgCi0gICAgMjUwLCAyNTIsIDE2OCwgMSwgMjEyLCAxNTIsIDE2OCwgMSwgMjE3LCAxNiwgMjE3LCAyNiwgMjE2LCA3LCAyMTgsIDk5LCAKLSAgICAxNjgsIDEsIDIyMCwgMTY2LCAyMTgsIDk5LCAxNjgsIDEsIDI0OSwgMywgMTY4LCAxLCAyNTEsIDIwOCwgMjUxLCAyMTEsIAotICAgIDI1MSwgMTQ3LCAyNTMsIDc0LCAxNjgsIDEsIDIyMCwgMTcyLCAyNTMsIDc0LCAxNjgsIDEsIDI0NiwgNjgsIDE2OCwgMSwgCi0gICAgMjI3LCAzNiwgMTY4LCAxLCAyNDUsIDE1MywgMjQ1LCAxNTUsIDc0LCAxNjgsIDEsIDIzMSwgMjQxLCAyMzEsIDI0OSwgMTgzLCAKLSAgICAxNjgsIDEsIDIzMiwgMTg3LCAxODMsIDE2OCwgMSwgMjIwLCAxNzAsIDE4MywgMTY4LCAxLCAyMzMsIDk3LCAyMzMsIDEzNywgCi0gICAgMjMyLCAxOTYsIDE1MCwgMTY4LCAxLCAyNDYsIDcwLCAxNjgsIDEsIDIzNSwgMjI3LCAxNjgsIDEsIDIzNSwgMjI4LCAxNjgsIAotICAgIDEsIDI0OCwgMTUzLCAyNDgsIDE1OCwgMjQ5LCAzLCAxNjgsIDEsIDIyNywgNiwgMjQ1LCAyNCwgNzUsIDE2OCwgMSwgMjQ1LCAKLSAgICAxODMsIDE2OCwgMSwgMjM1LCAxODUsIDE2OCwgMSwgMjQ5LCAyMSwgMTY4LCAxLCAyNTAsIDIwNSwgMTY4LCAxLCAyNTAsIAotICAgIDEyMywgMTY4LCAxLCAyMTksIDEwMCwgMTY4LCAxLCAyMzIsIDE4NCwgMTY4LCAxLCAyMjAsIDE2NSwgMTY4LCAxLCAyNDAsIAotICAgIDEwMywgMTY4LCAxLCAyMjQsIDI0MCwgMTY4LCAxLCAyMTMsIDE2NiwgMTY4LCAyMjAsIDgxLCAyMjUsIDI2LCAxNjgsIDIzMCwgCi0gICAgMTU1LCAyMjUsIDI2LCAxNjgsIDI0OSwgNzEsIDIyNSwgMjYsIDE2OCwgMjUzLCAxNzcsIDg3LCAxNjgsIDIxNiwgNDcsIDg3LCAKLSAgICAxNjgsIDI1MSwgMjIzLCA4NywgMjE4LCAzMiwgMSwgNjEsIDIxOCwgMzIsIDEsIDcyLCAyMTgsIDMyLCAxLCA2OSwgMjE4LCAKLSAgICAzMiwgMSwgMTgxLCAyMTgsIDMyLCAxLCAyNDMsIDExMCwgMjE4LCAzMiwgMSwgMjI5LCAxNTksIDIxOCwgMzIsIDEsIDIxOCwgCi0gICAgNTIsIDIxOCwgMzIsIDEsIDI0OCwgMTY0LCAyMTgsIDMyLCAxLCAyMDUsIDIxOCwgMzIsIDEsIDE5MywgMjE4LCAzMiwgMSwgCi0gICAgMjUyLCAxMDcsIDIxOCwgMzIsIDEsIDE4OCwgMjE4LCAzMiwgMSwgMTg2LCAyMTgsIDMyLCAxLCAyMzMsIDE1NywgMjE4LCAKLSAgICAzMiwgMSwgMjE0LCA0OSwgMjE4LCAzMiwgMSwgMjIyLCAyMDIsIDIxOCwgMzIsIDEsIDE1OSwgMjE4LCAzMiwgMzAsIDUsIAotICAgIDcyLCAyMTgsIDMyLCAzMCwgNSwgNjksIDIxOCwgMzIsIDUsIDIxNCwgMTMzLCAyNDEsIDI0NiwgMSwgNjEsIDI0MSwgMjQ2LCAKLSAgICAxLCA3MiwgMjQxLCAyNDYsIDEsIDY5LCAyNDEsIDI0NiwgMSwgMTgxLCAyNDEsIDI0NiwgMSwgMjQzLCAxMTAsIDI0MSwgCi0gICAgMjQ2LCAxLCAyMjksIDE1OSwgMjQxLCAyNDYsIDEsIDIxOCwgNTIsIDI0MSwgMjQ2LCAxLCAyNDgsIDE2NCwgMjQxLCAyNDYsIAotICAgIDEsIDIwNSwgMjQxLCAyNDYsIDEsIDE5MywgMjQxLCAyNDYsIDEsIDI1MiwgMTA3LCAyNDEsIDI0NiwgMSwgMTg4LCAyNDEsIAotICAgIDI0NiwgMSwgMTg2LCAyNDEsIDI0NiwgMSwgMjAzLCAyNDEsIDI0NiwgMSwgMjMzLCAxNTcsIDI0MSwgMjQ2LCAxLCAyMTQsIAotICAgIDQ5LCAyNDEsIDI0NiwgMSwgMjIyLCAyMDIsIDI0MSwgMjQ2LCAxLCAxNTksIDI0MSwgMjQ2LCAzMCwgNSwgNzIsIDI0MSwgCi0gICAgMjQ2LCAzMCwgNSwgNjksIDI0MSwgMjQ2LCA1LCAyMjYsIDE3NiwgMjI2LCAyLCAyMjAsIDgxLCAyMjUsIDI2LCAyMjYsIDIsIAotICAgIDUxLCAyMjUsIDI2LCAyNTEsIDQ5LCAxLCA2MSwgMjUxLCA0OSwgMSwgNzIsIDI1MSwgNDksIDEsIDY5LCAyNTEsIDQ5LCAxLCAKLSAgICAxODEsIDI1MSwgNDksIDEsIDI0MywgMTEwLCAyNTEsIDQ5LCAxLCAyMjksIDE1OSwgMjUxLCA0OSwgMSwgMjE4LCA1MiwgCi0gICAgMjUxLCA0OSwgMSwgMjQ4LCAxNjQsIDI1MSwgNDksIDEsIDIwNSwgMjUxLCA0OSwgMSwgMTkzLCAyNTEsIDQ5LCAxLCAyNTIsIAotICAgIDEwNywgMjUxLCA0OSwgMSwgMTg4LCAyNTEsIDQ5LCAxLCAxODYsIDI1MSwgNDksIDEsIDIwMywgMjUxLCA0OSwgMSwgMjMzLCAKLSAgICAxNTcsIDI1MSwgNDksIDEsIDIxNCwgNDksIDI1MSwgNDksIDEsIDIyMiwgMjAyLCAyNTEsIDQ5LCAxLCAxNTksIDI1MSwgNDksIAotICAgIDMwLCA1LCA3MiwgMjUxLCA0OSwgMzAsIDUsIDY5LCAyMTgsIDMxLCAxLCA2MSwgMjE4LCAzMSwgMSwgNzIsIDIxOCwgMzEsIAotICAgIDEsIDY5LCAyMTgsIDMxLCAxLCAxODEsIDIxOCwgMzEsIDEsIDI0MywgMTEwLCAyMTgsIDMxLCAxLCAyMjksIDE1OSwgMjE4LCAKLSAgICAzMSwgMSwgMjE4LCA1MiwgMjE4LCAzMSwgMSwgMjQ4LCAxNjQsIDIxOCwgMzEsIDEsIDIwNSwgMjE4LCAzMSwgMSwgMTkzLCAKLSAgICAyMTgsIDMxLCAxLCAyNTIsIDEwNywgMjE4LCAzMSwgMSwgMTg4LCAyMTgsIDMxLCAxLCAxODYsIDIxOCwgMzEsIDEsIDIzMywgCi0gICAgMTU3LCAyMTgsIDMxLCAxLCAyMTQsIDQ5LCAyMTgsIDMxLCAxLCAyMjIsIDIwMiwgMjE4LCAzMSwgMzAsIDUsIDcyLCAyMTgsIAotICAgIDMxLCAzMCwgNSwgNjksIDg0LCAxLCAxODEsIDg0LCAxLCAyMzQsIDEzOCwgODQsIDEsIDIzNCwgMzcsIDg0LCAxLCAyMzQsIAotICAgIDExMywgODQsIDEsIDIyOSwgOTAsIDg0LCAxLCAyNTAsIDIxOSwgODQsIDEsIDI1MCwgOTIsIDg0LCAxLCAyNDksIDE3NSwgCi0gICAgODQsIDEsIDI1MCwgMjMsIDg0LCAxLCAyMjcsIDI1MywgODQsIDEsIDI0OCwgMTY0LCA4NCwgMSwgMjE2LCAxMDUsIDg0LCAxLCAKLSAgICAyNDcsIDk5LCA4NCwgMSwgMjE2LCAxMDAsIDg0LCAxLCAyMjgsIDE4OCwgODQsIDEsIDIxOCwgNTIsIDg0LCAxLCAyMTcsIAotICAgIDE2MSwgODQsIDEsIDEwOCwgODQsIDEsIDIxNywgMTA5LCA4NCwgMSwgMjI4LCAxODUsIDg0LCAxLCAyNTIsIDEwNywgODQsIAotICAgIDEsIDIyNiwgMjMsIDg0LCAxLCAyMjUsIDE1MCwgODQsIDEsIDIyNSwgMjUzLCA4NCwgMSwgMjMwLCAyMzEsIDg0LCAxLCAKLSAgICAyMTIsIDIzNSwgODQsIDEsIDIyMywgMTEyLCA4NCwgMSwgMjMyLCAyMDgsIDg0LCAxLCAyMTQsIDExOSwgODQsIDEsIDIyMSwgCi0gICAgMjQsIDg0LCAxLCAyMTksIDEyMSwgODQsIDEsIDIyMiwgMjAyLCA4NCwgMSwgMTU5LCA4NCwgMSwgMjMzLCAxNTcsIDg0LCAxLCAKLSAgICAyMjQsIDIzMiwgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAyMTgsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMjMxLCA4NCwgCi0gICAgMjM1LCAyNDAsIDMwLCAyMjQsIDE5OCwgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAxOTMsIDg0LCAyMzUsIDI0MCwgMzAsIAotICAgIDIyNCwgMTc1LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDE0NywgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAxMzUsIDg0LCAKLSAgICAyMzUsIDI0MCwgMzAsIDIyNCwgMTM0LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjMsIDEyLCA4NCwgMjM1LCAyNDAsIDMwLCAyMjMsIAotICAgIDUsIDg0LCAyMzUsIDI0MCwgMzAsIDIzMiwgMTIxLCA4NCwgMjM1LCAyNDAsIDMwLCAyMzIsIDExMiwgODQsIDIzNSwgMjQwLCAKLSAgICAzMCwgMjI0LCAyMTMsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMjI0LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDE4MywgCi0gICAgMjE2LCAxNSwgMTE2LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDE4MywgMjE2LCAxNSwgMTA5LCA4NCwgMjM1LCAyNDAsIDMwLCAKLSAgICAyMjQsIDIxNCwgODQsIDMwLCAyMzUsIDIyNiwgMjUzLCAyMTUsIDg0LCAzMCwgMjM1LCAyMjYsIDI1NCwgMjMyLCA4NCwgMzAsIAotICAgIDUsIDI1NCwgMjMyLCA4NCwgMzAsIDUsIDcyLCA4NCwgMzAsIDUsIDIzNiwgMjgsIDg0LCAzMCwgNSwgMjEzLCAxMDUsIDg0LCAKLSAgICAzMCwgNSwgMjEyLCAxNjEsIDg0LCAzMCwgNSwgNjksIDg0LCAzMCwgNSwgMjE1LCA5MiwgODQsIDMwLCA1LCAyMTUsIDE5NiwgCi0gICAgODQsIDMwLCA1LCAyMjcsIDk5LCA4NCwgMzAsIDUsIDE4NiwgODQsIDMwLCA1LCAyMzYsIDU1LCA4NCwgMzAsIDUsIDc0LCAKLSAgICA4NCwgMzAsIDUsIDI1NCwgMTQ4LCA4NCwgMzAsIDUsIDI1NCwgMTA4LCA4NCwgMzAsIDUsIDIyNywgNDksIDg0LCAzMCwgNSwgCi0gICAgMjUzLCAxMDgsIDg0LCA1LCAyMjksIDM3LCA4NCwgNSwgMjI0LCAxOSwgODQsIDUsIDIxMiwgMTcyLCA4NCwgNSwgMjMwLCAKLSAgICAxMjMsIDg0LCA1LCAyMTYsIDE3MSwgODQsIDUsIDI1MiwgNjIsIDg0LCA1LCAyMjMsIDEwNywgODQsIDUsIDIxNiwgMjUxLCAKLSAgICA4NCwgNSwgMjM0LCAyNDYsIDg0LCA1LCAyNTQsIDExMCwgODQsIDUsIDIyMiwgMTYwLCAyMjIsIDE1NCwgODQsIDUsIDIxNCwgCi0gICAgMTMwLCA4NCwgNSwgMjQ5LCAxNzAsIDg0LCA1LCAyNTIsIDM3LCA4NCwgNSwgMjM0LCAxMzEsIDg0LCA1LCAyNTIsIDU3LCAKLSAgICA4NCwgNSwgMjUwLCAxOTcsIDIyNSwgMjA0LCAyMzMsIDIwOSwgODQsIDUsIDIzMywgNTQsIDIxNiwgMjMwLCA4NCwgNSwgCi0gICAgMjUxLCAxOTcsIDg0LCA1LCAyMjUsIDI1NSwgMjMwLCAxNjksIDg0LCA1LCAyMzQsIDE4LCA4NCwgMjQ5LCAzOSwgMTYsIAotICAgIDIyMywgMTgxLCA4NCwgNSwgMjUzLCA5MCwgODQsIDUsIDI1MywgMTExLCA4NCwgMjEsIDIxMiwgNzksIDg0LCAyMSwgMTE2LCAKLSAgICA4NCwgMjEsIDEwOSwgODQsIDIxLCAxNjYsIDg0LCAyMSwgMTYzLCA4NCwgMjEsIDE4MCwgODQsIDIxLCAxODksIDg0LCAyMSwgCi0gICAgMTk4LCA4NCwgMjEsIDE5NSwgODQsIDIxLCAyMDAsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIxOSwgMjI5LCA4NCwgCi0gICAgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyMzAsIDE0MSwgODQsIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjI1LCAyMDMsIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDI1MSwgMjI1LCA4NCwgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyNTEsIDMyLCA4NCwgCi0gICAgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyMjUsIDk1LCA4NCwgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyMjUsIDg5LCA4NCwgCi0gICAgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyMjUsIDg3LCA4NCwgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyMjUsIDkzLCA4NCwgCi0gICAgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyMjUsIDkxLCA4MSwgMjUxLCAxNTksIDgxLCAyNDUsIDEyMCwgODEsIDI0OSwgMTU3LCAKLSAgICA4MSwgMjQzLCAyMDAsIDIxOSwgNjksIDgxLCAyNDksIDE2NCwgODEsIDI0MywgMjM3LCAyNDcsIDcyLCA4MSwgMjE2LCAyNTAsIAotICAgIDIxOSwgMjM2LCAyNDAsIDE2MCwgODEsIDIyMCwgMTE2LCA0LCAyNTEsIDk4LCAyMzEsIDIxNywgODEsIDIzMSwgMjQ2LCAKLSAgICAyNDksIDE1NywgODEsIDIzMSwgMjQ2LCAyNDMsIDIwMCwgMjE5LCA2OSwgODEsIDIyOSwgMjIsIDgxLCAyNDMsIDIyMywgNDMsIAotICAgIDIyMiwgNzcsIDExNiwgODEsIDI0MywgMjIzLCA0MywgMjIyLCA3NywgMTA5LCA4MSwgMjQzLCAyMjMsIDQzLCAyMjIsIDc3LCAKLSAgICAxNjYsIDgxLCAzMCwgMjIxLCA1NywgODEsIDIxLCAyMTIsIDc5LCA4MSwgMjEsIDExNiwgODEsIDIxLCAxMDksIDgxLCAyMSwgCi0gICAgMTY2LCA4MSwgMjEsIDE2MywgODEsIDIxLCAxODAsIDgxLCAyMSwgMTg5LCA4MSwgMjEsIDE5OCwgODEsIDIxLCAxOTUsIDgxLCAKLSAgICAyMSwgMjAwLCA4MSwgMSwgNjEsIDgxLCAxLCA3NCwgODEsIDEsIDcyLCA4MSwgMSwgNzUsIDgxLCAxLCA2OSwgODEsIDEsIAotICAgIDIyNywgOTksIDgxLCAxLCAyMTUsIDE4MywgODEsIDEsIDI0NSwgMTY1LCA4MSwgMSwgMjA1LCA4MSwgMSwgMjU0LCAyNCwgCi0gICAgODEsIDEsIDI1MiwgMTA3LCA4MSwgMSwgMTkzLCA4MSwgMSwgMjI0LCAyMzIsIDgxLCAxLCAyNDMsIDExMCwgODEsIDEsIAotICAgIDE4OCwgODEsIDEsIDIzMywgMTU3LCA4MSwgMSwgMjIyLCAyMDIsIDgxLCAxLCAyMjEsIDI0LCA4MSwgMSwgMjE4LCA1MiwgCi0gICAgODEsIDEsIDI0OCwgMTY0LCA4MSwgMSwgMjUwLCA5MiwgODEsIDEsIDIzNSwgMTM5LCA4MSwgMSwgMTg2LCA4MSwgMSwgMjAzLCAKLSAgICA4MSwgMSwgMjE0LCA0OSwgODEsIDEsIDI0NCwgMTY0LCA4MSwgMSwgMTgxLCA4MSwgMSwgMjM0LCAxMzgsIDgxLCAxLCAyMTYsIAotICAgIDE0MSwgODEsIDEsIDIxMiwgMTA5LCA4MSwgMSwgMjQyLCAyNywgODEsIDEsIDIxMiwgOSwgODEsIDEsIDIzMywgMjUsIDgxLCAKLSAgICAxLCAyMTIsIDYyLCA4MSwgMSwgMjUwLCA0NywgODEsIDEsIDIxNiwgMjUwLCAxODQsIDMwLCA1MiwgODEsIDEsIDIxNiwgCi0gICAgMjUwLCA3NCwgODEsIDEsIDIxNiwgMjUwLCA3MiwgODEsIDEsIDIxNiwgMjUwLCA3NSwgODEsIDEsIDIxNiwgMjUwLCA2OSwgCi0gICAgODEsIDEsIDIxNiwgMjUwLCAyMjcsIDk5LCA4MSwgMSwgMjE2LCAyNTAsIDIxNSwgMTgzLCA4MSwgMSwgMjE2LCAyNTAsIAotICAgIDI1NCwgMjQsIDgxLCAxLCAyMTYsIDI1MCwgMjUyLCAxMDcsIDgxLCAxLCAyMTYsIDI1MCwgMTkzLCA4MSwgMSwgMjE2LCAKLSAgICAyNTAsIDIyNCwgMjMyLCA4MSwgMSwgMjE2LCAyNTAsIDI0MywgMTEwLCA4MSwgMSwgMjE2LCAyNTAsIDE4OCwgODEsIDEsIAotICAgIDIxNiwgMjUwLCAyMTgsIDUyLCA4MSwgMSwgMjE2LCAyNTAsIDI0OCwgMTY0LCA4MSwgMSwgMjE2LCAyNTAsIDI1MCwgOTIsIAotICAgIDgxLCAxLCAyMTYsIDI1MCwgMjM1LCAxMzksIDgxLCAxLCAyMTYsIDI1MCwgMjE2LCAxNDEsIDgxLCAxLCAyMTYsIDI1MCwgCi0gICAgMTg2LCA4MSwgMSwgMjE2LCAyNTAsIDIxNCwgNDksIDgxLCAxLCAyMTYsIDI1MCwgMTgxLCA4MSwgMSwgMjE2LCAyNTAsIAotICAgIDI0MywgMTA3LCA4MSwgMSwgMjE2LCAyNTAsIDI0MiwgMjcsIDgxLCAxLCAyMTYsIDI1MCwgMjM1LCAxMDksIDgxLCAxLCAKLSAgICAyMTYsIDI1MCwgMjI5LCA2MiwgODEsIDEsIDIxNiwgMjUwLCAyNDUsIDI0OSwgODEsIDEsIDIyMCwgMTE2LCA3NCwgODEsIDEsIAotICAgIDIyMCwgMTE2LCA3MiwgODEsIDEsIDIyMCwgMTE2LCAyMzUsIDE1MCwgODEsIDEsIDIyMCwgMTE2LCAyMTUsIDE4MywgODEsIAotICAgIDEsIDIyMCwgMTE2LCA2OSwgODEsIDEsIDIyMCwgMTE2LCAyNTQsIDI0LCA4MSwgMSwgMjIwLCAxMTYsIDE4MSwgODEsIDEsIAotICAgIDIyMCwgMTE2LCAyNDMsIDExMCwgODEsIDEsIDIyMCwgMTE2LCAxNTksIDgxLCAxLCAyMjAsIDExNiwgMTkzLCA4MSwgMSwgCi0gICAgMjIwLCAxMTYsIDIyMSwgMjQsIDgxLCAxLCAyMjAsIDExNiwgMjE4LCA1MiwgODEsIDEsIDIyMCwgMTE2LCAyNDgsIDE2NCwgCi0gICAgODEsIDEsIDIyMCwgMTE2LCAyMzUsIDEzOSwgODEsIDEsIDIyMCwgMTE2LCAyNDQsIDE2NCwgODEsIDEsIDIyMCwgMTE2LCAKLSAgICAyNDMsIDEwNywgODEsIDEsIDIyMCwgMTE2LCAyNDIsIDI3LCA4MSwgMSwgMjIwLCAxMTYsIDIxNiwgMTQxLCA4MSwgMSwgCi0gICAgMjIwLCAxMTYsIDIxMiwgMTA5LCA4MSwgMSwgMjIwLCAxMTYsIDIyNCwgNzQsIDgxLCAxLCAyMjAsIDExNiwgMjUwLCA5MiwgCi0gICAgODEsIDEsIDIyMCwgMTE2LCAyMTIsIDc1LCA4MSwgMSwgMjMxLCAyNDYsIDcyLCA4MSwgMSwgMjMxLCAyNDYsIDE4MSwgODEsIAotICAgIDEsIDIzMSwgMjQ2LCAyMDMsIDgxLCAxLCAyMzEsIDI0NiwgMjQ0LCAxNjQsIDgxLCAxLCAyMzEsIDI0NiwgMjEyLCA3NSwgCi0gICAgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDI1MywgMjQzLCAxMTYsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTQsIAotICAgIDEyOSwgMTE2LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjQ4LCAxMzEsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAKLSAgICAyMTUsIDE5MywgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIzNSwgMTkxLCAyMTUsIDE5MywgODEsIDEsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDI1MiwgNzQsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAxMzMsIDI1MiwgNzQsIDgxLCAxLCAyNTQsIDcxLCAKLSAgICAyNDMsIDkyLCA2MSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDcyLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMTgxLCAKLSAgICA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjI5LCAxNTksIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyNTAsIDIxOSwgODEsIAotICAgIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIxNiwgMTE1LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjE2LCAxMDUsIDgxLCAxLCAKLSAgICAyNTQsIDcxLCAyNDMsIDkyLCAyNDgsIDg2LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjI4LCAxOTgsIDgxLCAxLCAyNTQsIAotICAgIDcxLCAyNDMsIDkyLCAyMTgsIDUyLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjQ4LCAxNjQsIDgxLCAxLCAyNTQsIDcxLCAKLSAgICAyNDMsIDkyLCAxOTMsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMjYsIDIzLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgCi0gICAgMjE5LCAxNTcsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTIsIDc1LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjEyLCAKLSAgICAxMDksIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyNTQsIDExNCwgODEsIDEsIDIxNiwgMjUwLCAyNTQsIDcxLCAyNDMsIAotICAgIDkyLCAyMTgsIDUyLCA4MSwgMSwgMjE2LCAyNTAsIDI1NCwgNzEsIDI0MywgOTIsIDIxMiwgNzUsIDgxLCAxLCAyMzEsIDI0NiwgCi0gICAgMjU0LCA3MSwgMjQzLCA5MiwgMjQyLCAyMjUsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjI5LCAxNTksIAotICAgIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjUwLCAyMTksIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgCi0gICAgMjQzLCA5MiwgMjM1LCAxMTUsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjE2LCAxMTUsIDgxLCAxLCAKLSAgICAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjQ4LCA3MCwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAKLSAgICAyMTgsIDUyLCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDI0NywgMjMyLCA4MSwgMSwgMjMxLCAyNDYsIAotICAgIDI1NCwgNzEsIDI0MywgOTIsIDIxOSwgMTU3LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDI0OSwgMTUsIAotICAgIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjEyLCA3NSwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAKLSAgICAyNDMsIDkyLCAyMTIsIDEwOSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDE1MSwgNjksIDgxLCAxLCAyNTQsIDcxLCAyNDMsIAotICAgIDkyLCAxNTEsIDE4NiwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyNTEsIDE5NSwgODEsIDEsIDI1NCwgCi0gICAgNzEsIDI0MywgOTIsIDI0OCwgMTU0LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDIzMywgMjUsIDE4LCAKLSAgICAxOSwgMjI2LCAyMzMsIDE4LCAxOSwgMjUzLCA4MywgMTgsIDE5LCAyNTQsIDE4OCwgMTgsIDE5LCAyMTQsIDksIDE4LCAxOSwgCi0gICAgMjI1LCAxMDEsIDE4LCAxOSwgMjI2LCAxMDMsIDE4LCAxOSwgMjI0LCAyNDksIDE4LCAxOSwgMjE3LCAyMzgsIDE4LCAxOSwgCi0gICAgMjM0LCAxOTUsIDE4LCAxOSwgMjMzLCAyMDEsIDE4LCAxOSwgMjMxLCAxOTYsIDE4LCAxOSwgMjI4LCAxNDgsIDE4LCAxOSwgCi0gICAgMjMwLCAzLCAxOCwgMTksIDIzMywgOTIsIDE4LCAxOSwgMjE5LCAyMDksIDE4LCAxOSwgMjIyLCAxMjksIDE4LCAxOSwgMjIwLCAKLSAgICAxNTYsIDE4LCAxOSwgMjIwLCAyNDYsIDE4LCAxOSwgMjIwLCAxMjcsIDE4LCAxOSwgMjEyLCAyMTEsIDE4LCAxOSwgMjEzLCAKLSAgICA0MywgMTgsIDE5LCAyMjQsIDI3LCAxOCwgMTksIDIyOCwgMjgsIDE4LCAxOSwgMjI3LCA4MiwgMjI4LCAyOCwgMTgsIDE5LCAKLSAgICAyMjgsIDI3LCAxOCwgMTksIDIyNywgODIsIDIyOCwgMjcsIDE4LCAxOSwgMjI4LCAyNiwgMTgsIDE5LCAyMjcsIDgyLCAyMjgsIAotICAgIDI2LCAxOCwgMTksIDIyOCwgMjUsIDE4LCAxOSwgMjI3LCA4MiwgMjI4LCAyNSwgMTgsIDE5LCAyMjMsIDE3LCAxOCwgMTksIAotICAgIDIyMywgMTYsIDE4LCAxOSwgMjIzLCAxNSwgMTgsIDE5LCAyMjMsIDE0LCAxOCwgMTksIDIyMywgMTMsIDE4LCAxOSwgMjIzLCAKLSAgICAyMSwgMTgsIDE5LCAyMjcsIDgyLCAyMjYsIDIyOSwgMTgsIDE5LCAyMjcsIDgyLCAyMTgsIDk5LCAxOCwgMTksIDIyNywgODIsIAotICAgIDIzNSwgMjcsIDE4LCAxOSwgMjI3LCA4MiwgMjUwLCAyNTIsIDE4LCAxOSwgMjI3LCA4MiwgMTgzLCAxOCwgMTksIDIyNywgCi0gICAgODIsIDIwNCwgMTgsIDE5LCAyMjcsIDgyLCAxOTcsIDE4LCAxOSwgMjI3LCA4MiwgMjIxLCAyNiwgMTgsIDE5LCAyNDUsIAotICAgIDE3NSwgMjE0LCA4MiwgMTgsIDE5LCAyMTMsIDI0OCwgMjE0LCA4MiwgMTgsIDE5LCA0MCwgMywgMjIzLCAxMzAsIDE4LCAxOSwgCi0gICAgNDAsIDIyNCwgNDgsIDI0NywgNzQsIDE4LCAxOSwgMjI0LCAxMTIsIDIyMywgMTgsIDE4LCAxOSwgMTQ4LCAyMzIsIDE4MCwgCi0gICAgMTgsIDE5LCAxNDgsIDIzMywgMTU2LCAxOCwgMTksIDIxNywgODAsIDE4LCAxOSwgMjE3LCA4MiwgMTgsIDE5LCAyMTYsIDk3LCAKLSAgICAxOCwgMTksIDIxNiwgOTksIDE4LCAxOSwgMjE2LCAxMDQsIDE4LCAxOSwgMjE3LCAyLCAxOCwgMTksIDIxNywgNCwgMTgsIAotICAgIDE5LCAyMjIsIDEyNywgMjIwLCAxMzIsIDE4LCAxOSwgMjIyLCAxMjcsIDIyMCwgMTgxLCAxOCwgMTksIDIyMiwgMTI3LCAKLSAgICAyNDEsIDM5LCAxOCwgMTksIDY2LCAyNDIsIDU0LCAxOCwgMTksIDY2LCAyNDgsIDMsIDI0MywgMzEsIDE4LCAxOSwgNjYsIAotICAgIDI0MywgMTA3LCAxOCwgMTksIDY2LCAyNDIsIDU5LCAxOCwgMTksIDIyMiwgMTI3LCAyMzUsIDM3LCAxOCwgMTksIDY2LCAKLSAgICAyMzUsIDM1LCAxOCwgMTksIDI1MSwgMjQ0LCAyNDgsIDMsIDE1MCwgMTgsIDE5LCAyNTEsIDI0NCwgMjQ4LCAzLCAxNDksIAotICAgIDE4LCAxOSwgNjYsIDI0NywgMjU0LCAxOTcsIDIwOSwgMjE0LCAxMDMsIDIzMywgMzQsIDIwOSwgMSwgMTgxLCAyMDksIDEsIAotICAgIDIzNCwgMTM4LCAyMDksIDEsIDI0MywgMTEwLCAyMDksIDEsIDI0MiwgMjI1LCAyMDksIDEsIDIyOSwgMTU5LCAyMDksIDEsIAotICAgIDI1MCwgMjE5LCAyMDksIDEsIDI1MCwgOTIsIDIwOSwgMSwgMjM1LCAxMzksIDIwOSwgMSwgMjM1LCAxMTUsIDIwOSwgMSwgCi0gICAgMjEzLCA2MCwgMjA5LCAxLCAyMTgsIDUyLCAyMDksIDEsIDIxNywgMTYxLCAyMDksIDEsIDI0OCwgMTY0LCAyMDksIDEsIAotICAgIDI0NywgMjMyLCAyMDksIDEsIDIwNSwgMjA5LCAxLCAxOTMsIDIwOSwgMSwgMjI2LCAyMywgMjA5LCAxLCAyNTIsIDEwNywgCi0gICAgMjA5LCAxLCAyNTEsIDE5NSwgMjA5LCAxLCAxODgsIDIwOSwgMSwgMTg2LCAyMDksIDEsIDIwMywgMjA5LCAxLCAyMzMsIAotICAgIDE1NywgMjA5LCAxLCAyMTQsIDQ5LCAyMDksIDEsIDIyMSwgMjQsIDIwOSwgMSwgMjE5LCAxNTcsIDIwOSwgMSwgMjIyLCAKLSAgICAyMDIsIDIwOSwgMSwgMTU5LCAyMDksIDMwLCA1LCA2MSwgMjA5LCAzMCwgNSwgNzIsIDIwOSwgMzAsIDUsIDY5LCAyMDksIAotICAgIDMwLCA1LCAyNDUsIDE2NSwgMjA5LCAzMCwgNSwgMjU0LCAxMDgsIDIwOSwgMzAsIDUsIDIyNywgNDksIDIwOSwgMzAsIDUsIAotICAgIDI1MywgMTA4LCAyMDksIDMwLCA1LCA3NCwgMjA5LCAzMCwgNSwgNzUsIDIwOSwgMjE5LCAxOCwgMSwgMTg2LCAyMDksIDIxOSwgCi0gICAgMTgsIDEsIDIwMywgMjA5LCAyMTksIDE4LCAxLCAyMTQsIDQ5LCAyMDksIDMsIDEsIDE4MSwgMjA5LCAzLCAxLCAyMjksIAotICAgIDE1OSwgMjA5LCAzLCAxLCAyNTMsIDI0MiwgMjA5LCAzLCAxLCAyMTgsIDUyLCAyMDksIDMsIDEsIDIwNSwgMjA5LCAzLCAxLCAKLSAgICAxOTMsIDIwOSwgMywgMSwgMTg4LCAyMDksIDMsIDEsIDIwMywgMjA5LCAzLCAxLCAyMzMsIDE1NywgMjA5LCA1LCAyMzAsIAotICAgIDE1OSwgMjA5LCA1LCAyMzQsIDE3NywgMjA5LCA1LCAyMjIsIDIwMSwgMjA5LCA1LCAyMzIsIDE4MCwgMjA5LCAyNDQsIDI1NCwgCi0gICAgNzcsIDIwOSwgMjI0LCAxNTgsIDc3LCAyMDksIDIxLCAyMTIsIDc5LCAyMDksIDIxLCAxMTYsIDIwOSwgMjEsIDEwOSwgMjA5LCAKLSAgICAyMSwgMTY2LCAyMDksIDIxLCAxNjMsIDIwOSwgMjEsIDE4MCwgMjA5LCAyMSwgMTg5LCAyMDksIDIxLCAxOTgsIDIwOSwgMjEsIAotICAgIDE5NSwgMjA5LCAyMSwgMjAwLCAzOCwgMjMzLCA4MywgMSwgMTgxLCAzOCwgMjMzLCA4MywgMSwgMjEzLCAxNTMsIDM4LCAKLSAgICAyMzMsIDgzLCAxLCAyMjksIDE1OSwgMzgsIDIzMywgODMsIDEsIDIxNiwgMTQxLCAzOCwgMjMzLCA4MywgMSwgMjIyLCAyMDIsIAotICAgIDM4LCAyMzMsIDgzLCAxLCAxODYsIDM4LCAyMzMsIDgzLCAxLCAyMTgsIDUyLCAzOCwgMjMzLCA4MywgMSwgMjE3LCAxNjEsIAotICAgIDM4LCAyMzMsIDgzLCAxLCAyMzMsIDE1NywgMzgsIDIzMywgODMsIDEsIDE5MywgMzgsIDIzMywgODMsIDEsIDIyNiwgMjMsIAotICAgIDM4LCAyMzMsIDgzLCAxLCAxODgsIDM4LCAyMzMsIDgzLCAxLCAyNDQsIDE2NCwgMzgsIDIzMywgODMsIDEsIDIxNSwgMSwgCi0gICAgMzgsIDIzMywgODMsIDEsIDE1OSwgMzgsIDIzMywgODMsIDEsIDIyNCwgMjMyLCAzOCwgMjMzLCA4MywgMSwgMjM0LCAxMzgsIAotICAgIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDEzMywgMzgsIDIzMywgODMsIDEsIDIwNSwgMzgsIDIzMywgODMsIDEsIDYxLCAzOCwgCi0gICAgMjMzLCA4MywgMSwgNzIsIDM4LCAyMzMsIDgzLCAxLCAyNDUsIDE2NSwgMzgsIDIzMywgODMsIDEsIDI0NSwgMTU0LCAzOCwgCi0gICAgMjMzLCA4MywgMSwgNjksIDM4LCAyMzMsIDgzLCAxLCAyMjcsIDQ5LCAzOCwgMjMzLCA4MywgMSwgNzUsIDM4LCAyMzMsIDgzLCAKLSAgICAxLCAyMTUsIDE4MywgMzgsIDIzMywgODMsIDEsIDc0LCAzOCwgMjMzLCA4MywgMSwgMjUzLCAxMDYsIDM4LCAyMzMsIDgzLCAKLSAgICAxLCAyNTQsIDEwOCwgMzgsIDIzMywgODMsIDEsIDIxNiwgMjM5LCAzOCwgMjMzLCA4MywgMSwgMjE2LCAyMzgsIDM4LCAyMzMsIAotICAgIDgzLCAxLCAyMTYsIDIzNywgMzgsIDIzMywgODMsIDEsIDIxNiwgMjM2LCAzOCwgMjMzLCA4MywgMSwgMjE2LCAyMzUsIDE1NiwgCi0gICAgMzgsIDE2NSwgMSwgMTI0LCAyMjQsIDIzMiwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIyNCwgMjMyLCAxNTYsIDM4LCAxNjUsIAotICAgIDEsIDEyNCwgMTgxLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjEzLCAxNTMsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMjksIAotICAgIDE1OSwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDE4MSwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIxMywgMTUzLCAxNTYsIDM4LCAKLSAgICAxNjUsIDEsIDExNSwgMjI5LCAxNTksIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTYsIDE0MSwgMTU2LCAzOCwgMTY1LCAxLCAKLSAgICAxMjQsIDIyMiwgMjAyLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMTg2LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjE2LCAxNDEsIAotICAgIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMjIsIDIwMiwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDE4NiwgMTU2LCAzOCwgMTY1LCAKLSAgICAxLCAxMjQsIDIxOCwgNTIsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTcsIDE2MSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIAotICAgIDIwNSwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIxOCwgNTIsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTcsIDE2MSwgMTU2LCAKLSAgICAzOCwgMTY1LCAxLCAxMTUsIDIwNSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDE5MywgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIAotICAgIDIyNiwgMjMsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAxODgsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAxOTMsIDE1NiwgMzgsIAotICAgIDE2NSwgMSwgMTE1LCAyMjYsIDIzLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMTg4LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgCi0gICAgMjQ0LCAxNjQsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTUsIDEsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMzMsIDE1NywgCi0gICAgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDI0NCwgMTY0LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjE1LCAxLCAxNTYsIDM4LCAKLSAgICAxNjUsIDEsIDExNSwgMjMzLCAxNTcsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAxNTksIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAKLSAgICAyNDgsIDE2NCwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDI1MiwgMTA3LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMTU5LCAxNTYsIAotICAgIDM4LCAxNjUsIDEsIDExNSwgMjQ4LCAxNjQsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyNTIsIDEwNywgMTU2LCAzOCwgMTY1LCAKLSAgICAxLCAxMjQsIDIzMywgMjA2LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjEzLCAxMjYsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAKLSAgICAyMzMsIDIwNiwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIxMywgMTI2LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjE5LCAyNiwgCi0gICAgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIxOSwgMjYsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDMwLCAyMjAsIDE2MywgMTU2LCAKLSAgICAzOCwgMTY1LCAzMCwgNSwgMjU0LCAyMzIsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIzNiwgMjgsIDE1NiwgMzgsIDE2NSwgMzAsIAotICAgIDUsIDY5LCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMTUsIDkyLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCA3NCwgMTU2LCAzOCwgCi0gICAgMTY1LCAzMCwgNSwgMjU0LCAxNDgsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDc1LCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMjcsIAotICAgIDEyMCwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjE1LCAxODMsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDI1MywgODMsIDE1NiwgCi0gICAgMzgsIDE2NSwgMzAsIDUsIDI1NCwgMTg4LCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMTUsIDg1LCAxNTYsIDM4LCAxNjUsIDMwLCAKLSAgICA1LCAyMjYsIDIzMywgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjI3LCAxMTcsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIxNSwgCi0gICAgMTgwLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMzUsIDE1MCwgMTU2LCAzOCwgMTY1LCAxLCA0MCwgMjE1LCA3OSwgMTU2LCAKLSAgICAzOCwgMTY1LCAxLCA0MCwgMjI5LCAxNjEsIDE1NiwgMzgsIDE2NSwgMSwgNDAsIDIwNCwgMTU2LCAzOCwgMTY1LCAxLCA0MCwgCi0gICAgMTgzLCAxNTYsIDM4LCAxNjUsIDEsIDQwLCAyMzUsIDI3LCAxNTYsIDM4LCAxNjUsIDEsIDQwLCAyNDksIDMsIDE1NiwgMzgsIAotICAgIDE2NSwgMSwgNDAsIDI1MywgNzQsIDE1NiwgMzgsIDE2NSwgMTYwLCAyMzEsIDIyMSwgMTU2LCAzOCwgMTY1LCAxNjAsIDIzMSwgCi0gICAgMjIwLCAxNTYsIDM4LCAxNjUsIDIxLCAyMTIsIDc5LCAxNTYsIDM4LCAxNjUsIDIxLCAxMTYsIDE1NiwgMzgsIDE2NSwgMjEsIAotICAgIDEwOSwgMTU2LCAzOCwgMTY1LCAyMSwgMTY2LCAxNTYsIDM4LCAxNjUsIDIxLCAxNjMsIDE1NiwgMzgsIDE2NSwgMjEsIDE4MCwgCi0gICAgMTU2LCAzOCwgMTY1LCAyMSwgMTg5LCAxNTYsIDM4LCAxNjUsIDIxLCAxOTgsIDE1NiwgMzgsIDE2NSwgMjEsIDE5NSwgMTU2LCAKLSAgICAzOCwgMTY1LCAyMSwgMjAwLCAxNTYsIDM4LCAxNjUsIDg4LCAyMSwgMTE2LCAxNTYsIDM4LCAxNjUsIDUsIDIzMywgMTQzLCAKLSAgICAxNTYsIDM4LCAxNjUsIDUsIDIzMywgMTQyLCA4NCwgMTYsIDIyNiwgMTA5LCA4NCwgMTYsIDIzMCwgMTQyLCAyMzQsIDM0LCAKLSAgICA4NCwgMTYsIDIyNSwgMjA0LCAyMzQsIDM0LCA4NCwgMTYsIDI1MSwgMjI2LCAyMzQsIDM0LCA4NCwgMTYsIDI1MSwgMzMsIAotICAgIDIzNCwgMzQsIDg0LCAxNiwgMjI1LCA5NiwgMjM0LCAzNCwgODQsIDE2LCAyMjUsIDkwLCAyMzQsIDM0LCA4NCwgMTYsIDIyNSwgCi0gICAgODgsIDIzNCwgMzQsIDg0LCAxNiwgMjI1LCA5NCwgMjM0LCAzNCwgODQsIDE2LCAyMjUsIDkyLCAyMzQsIDM0LCA4NCwgMTYsIAotICAgIDI0OCwgMTE4LCAyMzQsIDM0LCA4NCwgMTYsIDI0OCwgMTE0LCAyMzQsIDM0LCA4NCwgMTYsIDI0OCwgMTEzLCAyMzQsIDM0LCAKLSAgICA4NCwgMTYsIDI0OCwgMTE2LCAyMzQsIDM0LCA4NCwgMTYsIDI0OCwgMTE1LCAyMzQsIDM0LCA4NCwgMTYsIDI0OCwgMTEyLCAKLSAgICAyMzQsIDM0LCA4NCwgMTYsIDIxNiwgNTEsIDg0LCAxNiwgMjMwLCAxNDIsIDIyMywgMTA2LCA4NCwgMTYsIDIyNSwgMjA0LCAKLSAgICAyMjMsIDEwNiwgODQsIDE2LCAyNTEsIDIyNiwgMjIzLCAxMDYsIDg0LCAxNiwgMjUxLCAzMywgMjIzLCAxMDYsIDg0LCAxNiwgCi0gICAgMjI1LCA5NiwgMjIzLCAxMDYsIDg0LCAxNiwgMjI1LCA5MCwgMjIzLCAxMDYsIDg0LCAxNiwgMjI1LCA4OCwgMjIzLCAxMDYsIAotICAgIDg0LCAxNiwgMjI1LCA5NCwgMjIzLCAxMDYsIDg0LCAxNiwgMjI1LCA5MiwgMjIzLCAxMDYsIDg0LCAxNiwgMjQ4LCAxMTgsIAotICAgIDIyMywgMTA2LCA4NCwgMTYsIDI0OCwgMTE0LCAyMjMsIDEwNiwgODQsIDE2LCAyNDgsIDExMywgMjIzLCAxMDYsIDg0LCAxNiwgCi0gICAgMjQ4LCAxMTYsIDIyMywgMTA2LCA4NCwgMTYsIDI0OCwgMTE1LCAyMjMsIDEwNiwgODQsIDE2LCAyNDgsIDExMiwgMjIzLCAKLSAgICAxMDYsIDI1MSwgNTAsIDEsIDE4MSwgMjUxLCA1MCwgMSwgMjQzLCAxMTAsIDI1MSwgNTAsIDEsIDIyOSwgMTU5LCAyNTEsIAotICAgIDUwLCAxLCAyMjksIDEwOCwgMjUxLCA1MCwgMSwgMTkzLCAyNTEsIDUwLCAxLCAyNTIsIDEwNywgMjUxLCA1MCwgMSwgMTg4LCAKLSAgICAyNTEsIDUwLCAxLCAyMzAsIDE3NSwgMjUxLCA1MCwgMSwgMjE4LCA1MiwgMjUxLCA1MCwgMSwgMjQ4LCAxNjQsIDI1MSwgNTAsIAotICAgIDEsIDIwNSwgMjUxLCA1MCwgMSwgMjI4LCAxNDcsIDI1MSwgNTAsIDEsIDI1MCwgMjE5LCAyNTEsIDUwLCAxLCAyMzUsIDEzOSwgCi0gICAgMjUxLCA1MCwgMSwgMjI4LCAyMywgMjUxLCA1MCwgMSwgMjI4LCAxOSwgMjUxLCA1MCwgMSwgMTg2LCAyNTEsIDUwLCAxLCAKLSAgICAyMDMsIDI1MSwgNTAsIDEsIDIzMywgMTU3LCAyNTEsIDUwLCAxLCAyMTUsIDEsIDI1MSwgNTAsIDEsIDIyMiwgMjAyLCAyNTEsIAotICAgIDUwLCAxLCA2MSwgMjUxLCA1MCwgMSwgMTU5LCAyNTEsIDUwLCAzMCwgNSwgNzIsIDI1MSwgNTAsIDMwLCA1LCA2OSwgMjUxLCAKLSAgICA1MCwgMzAsIDUsIDc0LCAyNTEsIDUwLCAzMCwgNSwgNzUsIDI1MSwgNTAsIDMwLCA1LCAyNTQsIDE0OCwgMjUxLCA1MCwgCi0gICAgMjI2LCAxODcsIDI1MSwgNTAsIDI0NSwgMTAxLCA2NSwgMjIyLCA5MSwgMzgsIDg4LCAxLCAxMjQsIDE4MSwgMzgsIDg4LCAxLCAKLSAgICAxMjQsIDIzNCwgMTM4LCAzOCwgODgsIDEsIDEyNCwgMjMzLCAxOTMsIDM4LCA4OCwgMSwgMTE1LCAxODEsIDM4LCA4OCwgMSwgCi0gICAgMTE1LCAyMzMsIDE5MywgMzgsIDg4LCAxLCAxMTUsIDIzNCwgMTM4LCAzOCwgODgsIDEsIDIyOSwgMTU5LCAzOCwgODgsIDEsIAotICAgIDEyNCwgMjUwLCAyMTksIDM4LCA4OCwgMSwgMTI0LCAyNTAsIDkyLCAzOCwgODgsIDEsIDExNSwgMjUwLCAyMTksIDM4LCA4OCwgCi0gICAgMSwgMTE1LCAyMjIsIDIwMiwgMzgsIDg4LCAxLCAxMTUsIDI1MCwgOTIsIDM4LCA4OCwgMSwgMjI4LCAyMywgMzgsIDg4LCAxLCAKLSAgICAyMjQsIDMyLCAzOCwgODgsIDEsIDEyNCwgMjI0LCAzMCwgMzgsIDg4LCAxLCAyNDgsIDE2NCwgMzgsIDg4LCAxLCAxMTUsIAotICAgIDIyNCwgMzAsIDM4LCA4OCwgMSwgMjI0LCA0MSwgMzgsIDg4LCAxLCAxMjQsIDIxOCwgNTIsIDM4LCA4OCwgMSwgMTI0LCAKLSAgICAyMTcsIDE2MSwgMzgsIDg4LCAxLCAxMTUsIDIxOCwgNTIsIDM4LCA4OCwgMSwgMTE1LCAyMTcsIDE2MSwgMzgsIDg4LCAxLCAKLSAgICAyMDUsIDM4LCA4OCwgMSwgMjUyLCAxMDcsIDM4LCA4OCwgMSwgMTI0LCAxOTMsIDM4LCA4OCwgMSwgMTI0LCAyMjYsIDIzLCAKLSAgICAzOCwgODgsIDEsIDEyNCwgMjQ0LCAxNjQsIDM4LCA4OCwgMSwgMTE1LCAxOTMsIDM4LCA4OCwgMSwgMTE1LCAyNDQsIDE2NCwgCi0gICAgMzgsIDg4LCAxLCAxMTUsIDIyNiwgMjMsIDM4LCA4OCwgMSwgMTg4LCAzOCwgODgsIDEsIDExNSwgMTg2LCAzOCwgODgsIDEsIAotICAgIDEyNCwgMTg2LCAzOCwgODgsIDEsIDIwMywgMzgsIDg4LCAxLCAyMjMsIDQ4LCAzOCwgODgsIDEsIDIzMywgMTU3LCAzOCwgCi0gICAgODgsIDEsIDIzMiwgMTUxLCAzOCwgODgsIDEsIDIxNCwgNDksIDM4LCA4OCwgMSwgMTI0LCAyMjEsIDI0LCAzOCwgODgsIDEsIAotICAgIDEyNCwgMjE5LCAxNTcsIDM4LCA4OCwgMSwgMTI0LCAyMjIsIDIwMiwgMzgsIDg4LCAxLCAxMjQsIDE1OSwgMzgsIDg4LCAxLCAKLSAgICAyMzIsIDIxMywgMzgsIDg4LCAxLCA2MSwgMzgsIDg4LCAxLCAxMTUsIDE1OSwgMzgsIDg4LCAxLCA3MiwgMzgsIDg4LCAxLCAKLSAgICAyMzYsIDI4LCAzOCwgODgsIDEsIDY5LCAzOCwgODgsIDEsIDIxNSwgOTIsIDM4LCA4OCwgMSwgMjQ1LCAxNjUsIDM4LCA4OCwgCi0gICAgMSwgMjI3LCA0OSwgMzgsIDg4LCAxLCAyMzMsIDE0MywgMzgsIDg4LCAxLCAyNDIsIDEwOSwgMjIyLCAyMDIsIDM4LCA4OCwgCi0gICAgMjQ5LCAxMzMsIDUsIDEzOCwgMjAzLCAzOCwgODgsIDI0OSwgMTMzLCA1LCAxMzgsIDIzMywgMTU3LCAzOCwgODgsIDI0OSwgCi0gICAgMTMzLCA1LCAyMzMsIDE1OCwgMjE4LCA5LCAyMzMsIDEzMywgMzgsIDg4LCA1LCAyMzIsIDksIDIzNCwgMjM2LCAyMzMsIAotICAgIDEzMywgMzgsIDg4LCAyNDksIDEzMywgNSwgNDAsIDIyOSwgMTU5LCAzOCwgODgsIDI0OSwgMTMzLCA1LCAxMTUsIDE5MywgCi0gICAgMzgsIDg4LCAyNDksIDEzMywgNSwgMTI0LCAyMjQsIDMxLCAxNjcsIDExNSwgMTkzLCAzOCwgODgsIDI0OSwgMTMzLCA1LCAKLSAgICAxODgsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDI1MiwgMTA3LCAzOCwgODgsIDI0OSwgMTMzLCA1LCAyMjIsIDIwMiwgMzgsIAotICAgIDg4LCA1LCAyMjIsIDE4MSwgMzgsIDg4LCAzMCwgNSwgNjEsIDM4LCA4OCwgMzAsIDUsIDIzMiwgOSwgMjIyLCAxNDIsIDM4LCAKLSAgICA4OCwgMzAsIDUsIDI1NCwgMjMyLCAzOCwgODgsIDMwLCA1LCAyMTgsIDE1LCAyNTQsIDIzMiwgMzgsIDg4LCAzMCwgNSwgNzIsIAotICAgIDM4LCA4OCwgMzAsIDUsIDIzNiwgMjgsIDM4LCA4OCwgMzAsIDUsIDIxNSwgMTgzLCAzOCwgODgsIDMwLCA1LCAyMTUsIDkxLCAKLSAgICAzOCwgODgsIDMwLCA1LCA2OSwgMzgsIDg4LCAzMCwgNSwgMjE1LCA5MiwgMzgsIDg4LCAzMCwgNSwgNzUsIDM4LCA4OCwgMzAsIAotICAgIDUsIDIyNywgMTIxLCA1NSwgMzgsIDg4LCAzMCwgNSwgMjI2LCAyMzMsIDM4LCA4OCwgMzAsIDUsIDc0LCAzOCwgODgsIDMwLCAKLSAgICA1LCAyNTQsIDE0OCwgMzgsIDg4LCAzMCwgNSwgMjI3LCA0OSwgMzgsIDg4LCAzMCwgNSwgMjU0LCAxMDgsIDM4LCA4OCwgMzAsIAotICAgIDUsIDg4LCAyNTQsIDEwOCwgMzgsIDg4LCAzMCwgNSwgMjI3LCAxMjEsIDQ5LCAzOCwgODgsIDUsIDIzMiwgOSwgMjM0LCAKLSAgICAyMzUsIDM4LCA4OCwgNSwgMjE2LCAyNDAsIDM4LCA4OCwgNSwgMjE2LCAyMzksIDM4LCA4OCwgNSwgMjM0LCAxMDYsIDIxNiwgCi0gICAgMjM4LCAzOCwgODgsIDUsIDIzNCwgMTA2LCAyMTYsIDIzNywgMzgsIDg4LCA1LCAyMzQsIDEwNiwgMjE2LCAyMzYsIDM4LCAKLSAgICA4OCwgNSwgMjI0LCA3NywgMjQyLCAyNiwgMzgsIDg4LCA1LCAyMzIsIDksIDIyMiwgMTY4LCAzOCwgODgsIDUsIDIzNCwgCi0gICAgMTA1LCAyMzQsIDIyMCwgMzgsIDg4LCAzNywgMjQ5LCA1NSwgMjQ3LCA3NCwgMzgsIDg4LCAyNDEsIDMzLCAyMSwgMjEyLCAKLSAgICA3OSwgMzgsIDg4LCAyNDEsIDMzLCAyMSwgMTE2LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxMDksIDM4LCA4OCwgMjQxLCAzMywgCi0gICAgMjEsIDE2NiwgMzgsIDg4LCAyNDEsIDMzLCAyMSwgMTYzLCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxODAsIDM4LCA4OCwgMjQxLCAKLSAgICAzMywgMjEsIDE4OSwgMzgsIDg4LCAyNDEsIDMzLCAyMSwgMTk4LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxOTUsIDM4LCA4OCwgCi0gICAgMjQxLCAzMywgMjEsIDIwMCwgMzgsIDg4LCA4OCwgMjEsIDIxMiwgNzksIDM4LCA4OCwgODgsIDIxLCAxMTYsIDM4LCA4OCwgCi0gICAgODgsIDIxLCAxMDksIDM4LCA4OCwgODgsIDIxLCAxNjYsIDM4LCA4OCwgODgsIDIxLCAxNjMsIDM4LCA4OCwgODgsIDIxLCAKLSAgICAxODAsIDM4LCA4OCwgODgsIDIxLCAxODksIDM4LCA4OCwgODgsIDIxLCAxOTgsIDM4LCA4OCwgODgsIDIxLCAxOTUsIDM4LCAKLSAgICA4OCwgODgsIDIxLCAyMDAsIDM4LCA4OCwgNSwgMjEzLCAyMzQsIDM4LCA4OCwgNSwgMjEzLCAyMzMsIDM4LCA4OCwgNSwgCi0gICAgMjIyLCAxMzMsIDM4LCA4OCwgNSwgMjM0LCAxNjYsIDM4LCA4OCwgNSwgMjQwLCAyMTksIDM4LCA4OCwgNSwgMjQ3LCA4OCwgCi0gICAgMzgsIDg4LCA1LCAyMjMsIDIwMiwgMjIzLCA4OSwgMjI0LCA0MSwgMzgsIDg4LCA1LCAyMzIsIDksIDIxMywgNjEsIDM4LCAKLSAgICA4OCwgNSwgMjM1LCAxMCwgMzgsIDg4LCA1LCAyMzUsIDksIDM4LCA4OCwgNSwgMjIyLCAxMzksIDM4LCA4OCwgNSwgMjIyLCAKLSAgICAxMzgsIDM4LCA4OCwgNSwgMjQxLCAyNDgsIDM4LCA4OCwgNSwgMjUwLCAyMTYsIDk5LCA1LCAyMTUsIDE3MCwgMjIzLCAxODMsIAotICAgIDk5LCA1LCAyMTUsIDE3MCwgMjUwLCAxODksIDk5LCA1LCAyNTAsIDEyMCwgOTksIDUsIDIxOCwgMjE1LCA5OSwgNSwgMjUxLCAKLSAgICAxNTYsIDk5LCAxLCAyNTQsIDkyLCA5OSwgMSwgMjU0LCA5MywgMjE3LCAyMjEsIDk5LCAxLCAyMzYsIDI0LCA5OSwgMSwgCi0gICAgMjM2LCAyNSwgMjE3LCAyMjEsIDk5LCAxLCAyMTUsIDE3MywgOTksIDEsIDIxNSwgMTc0LCAyMTcsIDIyMSwgOTksIDEsIAotICAgIDIyNCwgNzcsIDIyMywgMjI5LCA5OSwgMSwgMjI0LCA3NywgMjIzLCAyMzAsIDIxNywgMjIxLCA5OSwgMSwgMjMzLCAxNTgsIAotICAgIDIzMywgNDgsIDk5LCAxLCAyMzMsIDE1OCwgMjMzLCA0OSwgMjE3LCAyMjEsIDk5LCAxLCAyNDUsIDEzNiwgOTksIDEsIDI1NCwgCi0gICAgMTA2LCA5OSwgMSwgMjI3LCA3OCwgOTksIDEsIDIyNywgNzksIDIxNywgMjIxLCA5OSwgMSwgMTgxLCA5OSwgMSwgMjM1LCAKLSAgICAxNywgMjMyLCAxMiwgOTksIDEsIDI0MywgMTEwLCA5OSwgMSwgMjQzLCAxMTEsIDI0MiwgMTM3LCA5OSwgMSwgMjI5LCAxNTksIAotICAgIDk5LCAxLCAyNTAsIDIxOSwgOTksIDEsIDI1MCwgMjIwLCAyMzMsIDE0NiwgOTksIDEsIDIzNSwgMTM5LCA5OSwgMSwgMjM1LCAKLSAgICAxNDAsIDIzNSwgMTE5LCA5OSwgMSwgMjI4LCAyMywgOTksIDEsIDIxOCwgNTMsIDIzMywgOTksIDk5LCAxLCAyMTgsIDUzLCAKLSAgICAyMzAsIDEzNywgMjMyLCAxMiwgOTksIDEsIDI0OCwgMTY1LCAyMzAsIDEzNywgMjU0LCA1NCwgOTksIDEsIDI0OCwgMTY1LCAKLSAgICAyMzAsIDEzNywgMjMyLCAxMiwgOTksIDEsIDIzMCwgNDYsIDIyNCwgNDQsIDk5LCAxLCAyMTgsIDUyLCA5OSwgMSwgMjE4LCAKLSAgICA1MywgMjE3LCAyNDIsIDk5LCAxLCAyNDgsIDE2NCwgOTksIDEsIDI0OCwgMTY1LCAyMzIsIDMwLCA5OSwgMSwgMjA1LCA5OSwgCi0gICAgMSwgMTkzLCA5OSwgMSwgMjI2LCAyMTQsIDIzNCwgMjMxLCA5OSwgMSwgMjUyLCAxMDcsIDk5LCAxLCAyNTIsIDEwOCwgMjM0LCAKLSAgICAxNzgsIDk5LCAxLCAxODgsIDk5LCAxLCAxODYsIDk5LCAxLCAyMDMsIDk5LCAxLCAyMzMsIDE1NywgOTksIDEsIDIxNCwgNDksIAotICAgIDk5LCAxLCAyMjIsIDIwMywgMjIyLCAxODksIDk5LCAxLCAyMjIsIDIwMywgMjIyLCAxNDksIDk5LCAxLCAyMjIsIDIwMiwgCi0gICAgOTksIDEsIDE1OSwgOTksIDUsIDIyMywgMjIyLCA5OSwgMzAsIDUsIDIxNywgMjIxLCA5OSwgMzAsIDUsIDIxNSwgMTY5LCAKLSAgICA5OSwgMzAsIDUsIDIxNSwgMTcwLCAyMjIsIDE0NSwgOTksIDMwLCA1LCAyMTgsIDI0OCwgOTksIDMwLCA1LCAyMTgsIDI0OSwgCi0gICAgMjM2LCAxNiwgOTksIDMwLCA1LCAyMjQsIDc3LCAyMjMsIDIyOSwgOTksIDMwLCA1LCAyMjQsIDc3LCAyMjMsIDIzMCwgMjE3LCAKLSAgICAyMjEsIDk5LCAzMCwgNSwgMjMzLCAxNTgsIDIzMywgNDgsIDk5LCAzMCwgNSwgMjMzLCAxNTgsIDIzMywgNDksIDIxNywgCi0gICAgMjIxLCA5OSwgMzAsIDUsIDIxOCwgMTYsIDk5LCAzMCwgNSwgMjE4LCAxNywgMjIzLCAyMjksIDk5LCAzMCwgNSwgMjE4LCAKLSAgICAxNywgMjE3LCAyMjEsIDk5LCAzMCwgNSwgMjE4LCAxNywgMjIzLCAyMzAsIDIxNywgMjIxLCA5OSwgMzAsIDUsIDIyNiwgNTksIAotICAgIDk5LCAzMCwgNSwgMjI2LCA2MCwgMjE3LCAyMjEsIDk5LCAyNTQsIDE1NSwgMjU0LCAxNTQsIDk5LCAxLCAyMzQsIDI1NSwgCi0gICAgMjIyLCAxNDQsIDk5LCAxLCAyMzQsIDExMCwgMjIyLCAxNDQsIDk5LCAxLCAyMTYsIDAsIDIyMiwgMTQ0LCA5OSwgMSwgMjQ1LCAKLSAgICAxNjAsIDIyMiwgMTQ0LCA5OSwgMSwgMjE0LCAyMzMsIDIyMiwgMTQ0LCA5OSwgMSwgMjEyLCAxMDAsIDIyMiwgMTQ0LCA5OSwgCi0gICAgMSwgMjUzLCAxMjUsIDIyMiwgMTQ0LCA5OSwgMjEsIDIxMiwgNzksIDk5LCAyMSwgMTE2LCA5OSwgMjEsIDEwOSwgOTksIDIxLCAKLSAgICAxNjYsIDk5LCAyMSwgMTYzLCA5OSwgMjEsIDE4MCwgOTksIDIxLCAxODksIDk5LCAyMSwgMTk4LCA5OSwgMjEsIDE5NSwgOTksIAotICAgIDIxLCAyMDAsIDk5LCAyMjYsIDE1NywgOTksIDIyNiwgMTgyLCA5OSwgMjEzLCAyMjMsIDk5LCAyNTAsIDE2OCwgMjI2LCAKLSAgICAxNzUsIDk5LCAyNTAsIDE2OCwgMjIwLCA5OCwgOTksIDI1MCwgMTY4LCAyMjYsIDEzMCwgOTksIDIyNiwgMTgxLCA5OSwgMjcsIAotICAgIDE2LCAyNDcsIDgwLCA5OSwgMjcsIDE2LCAyNDgsIDIsIDk5LCAyNywgMTYsIDI0NiwgMTksIDk5LCAyNywgMTYsIDI0OCwgCi0gICAgMTIxLCA5OSwgMjcsIDE2LCAyNDgsIDEyMiwgMjE4LCAyMTUsIDk5LCAyNywgMTYsIDI0NywgMTU3LCA5OSwgMjcsIDE2LCAKLSAgICAyNDgsIDE1NywgOTksIDI3LCAxNiwgMjQ3LCAyNDAsIDk5LCAyNywgMTYsIDI0OCwgMTQzLCA5OSwgMjcsIDE2LCAyNDgsIAotICAgIDEyMiwgMjQzLCAzMywgOTksIDI3LCAxNiwgMzcsIDIxNywgMjE3LCA5OSwgMjcsIDE2LCAzNywgMjQ1LCA5OSwgOTksIDI3LCAKLSAgICAxNiwgMzcsIDIzNCwgMTczLCA5OSwgMjcsIDE2LCAzNywgMjM0LCAxNzUsIDk5LCAyNywgMTYsIDM3LCAyMzUsIDEyMywgOTksIAotICAgIDI3LCAxNiwgMzcsIDIzNCwgMTc0LCAyLCAyMzUsIDEyMywgOTksIDI3LCAxNiwgMzcsIDIzNCwgMTc2LCAyLCAyMzUsIDEyMywgCi0gICAgOTksIDI3LCAxNiwgMzcsIDI1MSwgMjE0LCA5OSwgMjcsIDE2LCAzNywgMjQyLCAxNDEsIDk5LCAyNywgMTYsIDIyMywgMTQ2LCAKLSAgICAyMjcsIDQwLCAyNDYsIDI5LCA5OSwgMjcsIDE2LCAyMjMsIDE0NiwgMjI3LCA0MCwgMjQ4LCAxNTUsIDk5LCAyNywgMTYsIAotICAgIDIyMywgMTQ2LCAyNDksIDE5MywgMjE2LCA3NSwgOTksIDI3LCAxNiwgMjIzLCAxNDYsIDI0OSwgMTkzLCAyMTgsIDIzLCA5OSwgCi0gICAgMjcsIDE2LCAyMzMsIDY4LCAyMjcsIDQwLCAyMjYsIDE3MCwgOTksIDI3LCAxNiwgMjMzLCA2OCwgMjI3LCA0MCwgMjI1LCAKLSAgICAyNSwgOTksIDI3LCAxNiwgMjMzLCA2OCwgMjQ5LCAxOTMsIDIyNSwgMTcwLCA5OSwgMjcsIDE2LCAyMzMsIDY4LCAyNDksIAotICAgIDE5MywgMjI1LCAxNjAsIDk5LCAyNywgMTYsIDIzMywgNjgsIDIyNywgNDAsIDIyNSwgMTkzLCAyMTgsIDIzNywgNSwgMjI2LCAKLSAgICAxNTQsIDIxOCwgMjM3LCA1LCAyMjYsIDE2NiwgMjE4LCAyMzcsIDUsIDIyNiwgMTYzLCAyMTgsIDIzNywgMSwgNjEsIDIxOCwgCi0gICAgMjM3LCAxLCA3MiwgMjE4LCAyMzcsIDEsIDY5LCAyMTgsIDIzNywgMSwgMjU0LCAxNDgsIDIxOCwgMjM3LCAxLCA3NSwgMjE4LCAKLSAgICAyMzcsIDEsIDc0LCAyMTgsIDIzNywgMSwgMjQ1LCAyMiwgMjE4LCAyMzcsIDEsIDE4MSwgMjE4LCAyMzcsIDEsIDIyNCwgCi0gICAgMjMyLCAyMTgsIDIzNywgMSwgMjQzLCAxMTAsIDIxOCwgMjM3LCAxLCAyMjksIDE1OSwgMjE4LCAyMzcsIDEsIDI1MCwgMjE5LCAKLSAgICAyMTgsIDIzNywgMSwgMjM1LCAxMzksIDIxOCwgMjM3LCAxLCAyMTIsIDEwOSwgMjE4LCAyMzcsIDEsIDIyOCwgMjMsIDIxOCwgCi0gICAgMjM3LCAxLCAyMTgsIDUyLCAyMTgsIDIzNywgMSwgMjQ4LCAxNjQsIDIxOCwgMjM3LCAxLCAyMDUsIDIxOCwgMjM3LCAxLCAKLSAgICAxOTMsIDIxOCwgMjM3LCAxLCAyNDQsIDE2NCwgMjE4LCAyMzcsIDEsIDIxNSwgMSwgMjE4LCAyMzcsIDEsIDI1MiwgMTA3LCAKLSAgICAyMTgsIDIzNywgMSwgMTg4LCAyMTgsIDIzNywgMSwgMTg2LCAyMTgsIDIzNywgMSwgMjAzLCAyMTgsIDIzNywgMSwgMjMzLCAKLSAgICAxNTcsIDIxOCwgMjM3LCAxLCAyMTQsIDQ5LCAyMTgsIDIzNywgMSwgMjIyLCAyMDIsIDIxOCwgMjM3LCAxLCAyMTMsIDE1MywgCi0gICAgMjE4LCAyMzcsIDEsIDE1OSwgMjE4LCAyMzcsIDI0OSwgMTMzLCA1LCAyMjYsIDE3OSwgMjE4LCAyMzcsIDI0OSwgMTMzLCA1LCAKLSAgICAyMjYsIDE1NiwgMjE4LCAyMzcsIDI0OSwgMTMzLCA1LCAyMjYsIDE1MywgMjE4LCAyMzcsIDMwLCA1LCAyMjYsIDE2OSwgCi0gICAgMjE4LCAyMzcsIDMwLCA1LCAyMjYsIDE1MiwgMjE4LCAyMzcsIDMwLCA1LCAyMjYsIDE3MywgMjE4LCAyMzcsIDMwLCA1LCAKLSAgICAyMjYsIDE2MiwgMjE4LCAyMzcsIDMwLCA1LCAyMjYsIDE4MCwgMjE4LCAyMzcsIDMwLCA1LCAyMjYsIDE3MSwgMjE4LCAyMzcsIAotICAgIDUsIDIyNiwgMTgzLCAyMTgsIDIzNywgMSwgMjM0LCAxMzgsIDIxOCwgMjM3LCAxLCAyMTgsIDE3NiwgMjE4LCAyMzcsIDIxLCAKLSAgICAyMTIsIDc5LCAyMTgsIDIzNywgMjEsIDExNiwgMjE4LCAyMzcsIDIxLCAxMDksIDIxOCwgMjM3LCAyMSwgMTY2LCAyMTgsIAotICAgIDIzNywgMjEsIDE2MywgMjE4LCAyMzcsIDIxLCAxODAsIDIxOCwgMjM3LCAyMSwgMTg5LCAyMTgsIDIzNywgMjEsIDE5OCwgCi0gICAgMjE4LCAyMzcsIDIxLCAxOTUsIDIxOCwgMjM3LCAyMSwgMjAwLCAyNTIsIDQwLCAxLCA2MSwgMjUyLCA0MCwgMSwgMjIwLCAKLSAgICA5MCwgNjEsIDI1MiwgNDAsIDEsIDE1OSwgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMTU5LCAyNTIsIDQwLCAxLCAyMzEsIDI0NCwgCi0gICAgMTU5LCAyNTIsIDQwLCAxLCAyNTIsIDEwNywgMjUyLCA0MCwgMSwgMjM0LCAyMTcsIDI1MiwgMTA3LCAyNTIsIDQwLCAxLCAKLSAgICAxOTMsIDI1MiwgNDAsIDEsIDIyMCwgOTAsIDE5MywgMjUyLCA0MCwgMSwgMjA1LCAyNTIsIDQwLCAxLCAyMzEsIDI0NCwgCi0gICAgMjA1LCAyNTIsIDQwLCAxLCAyMTQsIDQ5LCAyNTIsIDQwLCAxLCAyMjAsIDkwLCAyMTQsIDQ5LCAyNTIsIDQwLCAxLCAyMjYsIAotICAgIDE5NCwgMjE0LCA0OSwgMjUyLCA0MCwgMSwgMjQzLCAxMTAsIDI1MiwgNDAsIDEsIDIyMCwgOTAsIDI0MywgMTEwLCAyNTIsIAotICAgIDQwLCAxLCAyMzUsIDEzOSwgMjUyLCA0MCwgMSwgMjQ4LCAxNjQsIDI1MiwgNDAsIDEsIDIwMywgMjUyLCA0MCwgMSwgMjIwLCAKLSAgICA5MCwgMjAzLCAyNTIsIDQwLCAxLCAxODgsIDI1MiwgNDAsIDEsIDIyMCwgOTAsIDE4OCwgMjUyLCA0MCwgMSwgMjE5LCAyMTMsIAotICAgIDIxOCwgNTIsIDI1MiwgNDAsIDEsIDIyOCwgMTY2LCAyMTgsIDUyLCAyNTIsIDQwLCAxLCAyMjIsIDIwMiwgMjUyLCA0MCwgMSwgCi0gICAgMjIwLCA5MCwgMjIyLCAyMDIsIDI1MiwgNDAsIDEsIDIzMSwgMjQ0LCAyMjIsIDIwMiwgMjUyLCA0MCwgMSwgMTg2LCAyNTIsIAotICAgIDQwLCAxLCAyMjAsIDkwLCAxODYsIDI1MiwgNDAsIDEsIDIyOSwgMTU5LCAyNTIsIDQwLCAxLCAyMzMsIDE1NywgMjUyLCA0MCwgCi0gICAgMSwgMjIwLCA5MCwgMjMzLCAxNTcsIDI1MiwgNDAsIDEsIDIyOCwgMjMsIDI1MiwgNDAsIDEsIDI1MCwgMjE5LCAyNTIsIDQwLCAKLSAgICAxLCAyMjksIDIyOCwgMjUyLCA0MCwgMSwgMjMxLCAxODcsIDI1MiwgNDAsIDEsIDcyLCAyNTIsIDQwLCAxLCA2OSwgMjUyLCAKLSAgICA0MCwgNSwgMjE2LCAyNDQsIDI1MiwgNDAsIDMwLCA1LCA3NCwgMjUyLCA0MCwgMzAsIDUsIDIyNiwgMTk0LCA3NCwgMjUyLCAKLSAgICA0MCwgMzAsIDUsIDI0NSwgMTY1LCAyNTIsIDQwLCAzMCwgNSwgNzIsIDI1MiwgNDAsIDMwLCA1LCAyMzQsIDIxNywgNzIsIAotICAgIDI1MiwgNDAsIDMwLCA1LCA3NSwgMjUyLCA0MCwgMzAsIDUsIDIzNCwgMjE3LCA3NSwgMjUyLCA0MCwgMzAsIDUsIDY5LCAKLSAgICAyNTIsIDQwLCAzMCwgNSwgMTExLCAzMSwgMjIwLCA5MCwgMjIyLCAyMDIsIDI1MiwgNDAsIDI0OSwgMTMzLCA1LCAyMjksIAotICAgIDE2MSwgMjUyLCA0MCwgMjQ5LCAxMzMsIDUsIDI0MiwgNDEsIDI1MiwgNDAsIDIyNiwgMTY1LCAyNTIsIDQwLCAyMjYsIDE2MSwgCi0gICAgMjUyLCA0MCwgMTYsIDI1MSwgMTY0LCAyMzAsIDQ2LCAyMzEsIDEwNCwgMjUyLCA0MCwgMTYsIDI1MSwgMTY0LCAyMjUsIAotICAgIDE5NiwgMjUyLCA0MCwgMTYsIDI1MSwgMTY0LCAyMzUsIDUxLCAyNTIsIDQwLCAxNiwgMjUxLCAxNjQsIDIyNiwgMTY1LCAKLSAgICAxODIsIDEsIDE4MSwgMTgyLCAxLCAyMzQsIDQ4LCAxODIsIDEsIDIzNCwgMTM4LCAxODIsIDEsIDI0MywgMTEwLCAxODIsIDEsIAotICAgIDI0MiwgMTYyLCAxODIsIDEsIDIyOSwgMTU5LCAxODIsIDEsIDI1MCwgMjE5LCAxODIsIDEsIDI1MCwgOTIsIDE4MiwgMSwgCi0gICAgMjM1LCAxMzksIDE4MiwgMSwgMjI4LCAyMywgMTgyLCAxLCAyMTgsIDUyLCAxODIsIDEsIDIxNywgMTYxLCAxODIsIDEsIAotICAgIDI0OCwgMTY0LCAxODIsIDEsIDIwNSwgMTgyLCAxLCAxOTMsIDE4MiwgMSwgMjI1LCAxNzQsIDE4MiwgMSwgMjI2LCAyMywgCi0gICAgMTgyLCAxLCAyNDQsIDE2NCwgMTgyLCAxLCAyNDQsIDQ0LCAxODIsIDEsIDI1MiwgMTA3LCAxODIsIDEsIDI1MSwgMTQ1LCAKLSAgICAxODIsIDEsIDE4OCwgMTgyLCAxLCAyMzAsIDIzNywgMTgyLCAxLCAyMTYsIDE0MSwgMTgyLCAxLCAyMTYsIDEzMywgMTgyLCAKLSAgICAxLCAyNDUsIDI0OSwgMTgyLCAxLCAxODYsIDE4MiwgMSwgMjAzLCAxODIsIDEsIDIzMywgMTU3LCAxODIsIDEsIDE1OSwgCi0gICAgMTgyLCAxLCAyNDEsIDEzOSwgMTgyLCAxLCAyMTUsIDEsIDE4MiwgMSwgMjIyLCAyMDIsIDE4MiwgMSwgMjIxLCAyNCwgMTgyLCAKLSAgICAxLCAyMTQsIDQ5LCAxODIsIDEsIDYxLCAxODIsIDIxOSwgMTgsIDEsIDE4NiwgMTgyLCAyMTksIDE4LCAxLCAyMDMsIDE4MiwgCi0gICAgMzAsIDUsIDI1NCwgMjMyLCAxODIsIDMwLCA1LCA3MiwgMTgyLCAzMCwgNSwgNzUsIDE4MiwgMzAsIDUsIDIyNywgNDksIAotICAgIDE4MiwgMzAsIDUsIDY5LCAxODIsIDMwLCA1LCAyMTUsIDkyLCAxODIsIDMwLCA1LCA3NCwgMTgyLCAyNDksIDEzMywgNSwgCi0gICAgMjM1LCAyNywgMTgyLCAyNDksIDEzMywgNSwgMTgzLCAxODIsIDI0OSwgMTMzLCA1LCAxNTAsIDE4MiwgMjQ5LCAxMzMsIDUsIAotICAgIDIwNCwgMTgyLCAyNDksIDEzMywgNSwgMjI2LCAyMjksIDE4MiwgMjQ5LCAxMzMsIDUsIDE0OSwgMTgyLCAyNDksIDEzMywgNSwgCi0gICAgMjE4LCA5OSwgMTgyLCAyNDksIDEzMywgNSwgMjI4LCA1LCAxODIsIDI0OSwgMTMzLCA1LCAyMzQsIDIzNSwgMTgyLCA1LCAKLSAgICAyMjQsIDQyLCAxODIsIDUsIDIyOCwgNjAsIDE4MiwgMjI1LCAyNywgMjE4LCA1MSwgMTgyLCAyMjUsIDI3LCAyMjgsIDEzLCAKLSAgICAyMTcsIDc0LCAyMTgsIDUxLCAxODIsIDIyNSwgMjcsIDI1MCwgOTgsIDE4MiwgMjI1LCAyNywgMjE2LCAxMjgsIDI1MCwgOTgsIAotICAgIDE4MiwgMjI1LCAyNywgMjE2LCAxMjcsIDE4MiwgMjEsIDIxMiwgNzksIDE4MiwgMjEsIDExNiwgMTgyLCAyMSwgMTA5LCAKLSAgICAxODIsIDIxLCAxNjYsIDE4MiwgMjEsIDE2MywgMTgyLCAyMSwgMTgwLCAxODIsIDIxLCAxODksIDE4MiwgMjEsIDE5OCwgCi0gICAgMTgyLCAyMSwgMTk1LCAxODIsIDIxLCAyMDAsIDE4MiwgMSwgMjE2LCAxMTUsIDE4MiwgMSwgMjE2LCAxMDUsIDE4MiwgMSwgCi0gICAgMjQ4LCA4NiwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDIxMiwgNzksIDIyNywgNzYsIDI1MCwgNDAsIDIxLCAxMTYsIDIyNywgCi0gICAgNzYsIDI1MCwgNDAsIDIxLCAxMDksIDIyNywgNzYsIDI1MCwgNDAsIDIxLCAxNjYsIDIyNywgNzYsIDI1MCwgNDAsIDIxLCAKLSAgICAxNjMsIDIyNywgNzYsIDI1MCwgNDAsIDIxLCAxODAsIDIyNywgNzYsIDI1MCwgNDAsIDIxLCAxODksIDIyNywgNzYsIDI1MCwgCi0gICAgNDAsIDIxLCAxOTgsIDIyNywgNzYsIDI1MCwgNDAsIDIxLCAxOTUsIDIyNywgNzYsIDI1MCwgNDAsIDIxLCAyMDAsIDIyNywgCi0gICAgNzYsIDI1MCwgNDAsIDEsIDIzMywgMTU3LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNTMsIDEyMiwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMSwgMjU0LCAxMjEsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI1NCwgMjQsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI1NCwgCi0gICAgODYsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzMywgMTU2LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNTQsIDE5NCwgMjI3LCAKLSAgICA3NiwgMjUwLCA0MCwgMSwgMjU0LCAxOTUsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI1NCwgMTkzLCAyMjcsIDc2LCAyNTAsIAotICAgIDQwLCAxLCAyNTQsIDE4OSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjMzLCAxMywgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjM1LCAKLSAgICAxNjksIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzNiwgMjksIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzNSwgMTg4LCAyMjcsIAotICAgIDc2LCAyNTAsIDQwLCAxLCAyMzUsIDE3NywgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjMyLCAxNTYsIDIyNywgNzYsIDI1MCwgCi0gICAgNDAsIDEsIDIxNSwgMTkwLCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMTUsIDE4OCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjE1LCAKLSAgICAxMzksIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIxNSwgODUsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzMywgODIsIDIyNywgNzYsIAotICAgIDI1MCwgNDAsIDEsIDI0NSwgNzAsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI0NSwgMTY4LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAKLSAgICAyNDUsIDEwOCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjQ1LCA0OSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjMyLCAyMDgsIAotICAgIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIyNywgNSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjI3LCAxMTYsIDIyNywgNzYsIDI1MCwgCi0gICAgNDAsIDEsIDIyNiwgMjQ5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMjcsIDg4LCAyMjcsIDc2LCAyNTAsIDQwLCAyMzAsIAotICAgIDE3MywgMjE2LCA4NCwgMjI3LCA3NiwgMjUwLCA0MCwgMjQzLCAxMDUsIDIxNiwgODUsIDIyNywgNzYsIDI1MCwgNDAsIDIzMCwgCi0gICAgMTcxLCAyMTYsIDg1LCAyMjcsIDc2LCAyNTAsIDQwLCAyMjMsIDI0MiwgMjI3LCA3NiwgMjUwLCA0MCwgMjI2LCAyMSwgMjI3LCAKLSAgICA3NiwgMjUwLCA0MCwgMjU0LCAxMTMsIDIyNywgNzYsIDI1MCwgNDAsIDIyNSwgMjcsIDIzMCwgMTY4LCAyMjcsIDc2LCAyNTAsIAotICAgIDQwLCAyMjUsIDI3LCA1MSwgMjMwLCAxNjgsIDIxNCwgMjI5LCAxNjAsIDIzNCwgMjE1LCAyMTQsIDIyOSwgMTYwLCAyMjEsIAotICAgIDAsIDIxNCwgMjI5LCAxNjAsIDIyNSwgNzgsIDIxNCwgMjI5LCA1LCAyMjksIDQwLCAyMTQsIDIyOSwgNSwgMjEzLCA2OSwgCi0gICAgMjMxLCAzNSwgMjE4LCAyMDEsIDIxNCwgMjI5LCAxNjAsIDIxMywgNjksIDI1NCwgMTE4LCAyMzUsIDI0MCwgMjE4LCAyMDEsIAotICAgIDIxNCwgMjI5LCAxNjAsIDIxMywgNjksIDIzNSwgMjQwLCAyMTgsIDIwMSwgMjE0LCAyMjksIDE2MCwgMjEzLCA2OSwgMjM0LCAKLSAgICAyMDMsIDIzNSwgMjQwLCAyMTgsIDIwMSwgMjE0LCAyMjksIDE2MCwgMjUwLCAxOTAsIDU1LCAyMTQsIDIyOSwgMTYwLCAyMTMsIAotICAgIDY5LCAyMzQsIDIwMywgMjM1LCAyNDAsIDIxOCwgMjAyLCAyMjIsIDExNSwgMjE0LCAyMjksIDE2MCwgNTEsIDIxOCwgMjAxLCAKLSAgICAyMTQsIDIyOSwgMTYwLCAyMTYsIDE2OSwgMjE4LCAyMDEsIDIxNCwgMjI5LCAxNjAsIDIzNCwgMjAzLCAyNTMsIDI0NCwgCi0gICAgMjE0LCAyMjksIDE2MCwgNjIsIDU1LCAyMTQsIDIyOSwgMTYwLCAxMTcsIDE3NiwgNTUsIDIxNCwgMjI5LCAxNjAsIDEzMywgCi0gICAgMTc2LCA1NSwgMjE0LCAyMjksIDE2MCwgMjIzLCAxMzcsIDIzNCwgMjE0LCAyMzUsIDI0MCwgMjE4LCAyMDEsIDIxNCwgMjI5LCAKLSAgICAxNjAsIDI1MywgMTIwLCAyMzUsIDI0MCwgMjE4LCAyMDEsIDIxNCwgMjI5LCA1LCAyMTQsIDEyOSwgMjE4LCAyMDEsIDIxNCwgCi0gICAgMjI5LCA1LCAyMTQsIDEyOSwgMjE1LCAxODUsIDIxNCwgMjI5LCA1LCAyMjMsIDIwMiwgMjE0LCAxMjksIDIxNSwgMTg1LCAKLSAgICAyMTQsIDIyOSwgNSwgMjE0LCAxMjksIDI1MywgMjQ0LCAyMTQsIDIyOSwgNSwgMjIzLCAyMDIsIDIxNCwgMTI5LCAyNTMsIAotICAgIDI0NCwgMjE0LCAyMjksIDUsIDIxNCwgMTI5LCAyMTUsIDE4NiwgMiwgMjE4LCAyNywgMjE0LCAyMjksIDUsIDIxNCwgMTI5LCAKLSAgICAyNTMsIDI0NSwgMiwgMjE4LCAyNywgMjE0LCAyMjksIDUsIDI1MywgMjQzLCAyNTQsIDIsIDIxNCwgMjI5LCA1LCAyNTMsIAotICAgIDI0MywgMjUyLCA4NSwgMjE0LCAyMjksIDUsIDI1MywgMjQzLCAyMTQsIDI1MiwgMjE0LCAyMjksIDUsIDI1MywgMjQzLCAKLSAgICAyMTQsIDI1MywgMiwgMjE4LCAyNywgMjE0LCAyMjksIDUsIDIxNywgMjEsIDIxNCwgMjI5LCA1LCAyNDEsIDE3NiwgMTg0LCAKLSAgICAyNTMsIDI0MiwgMjE0LCAyMjksIDUsIDE4NCwgMjUzLCAyNDIsIDIxNCwgMjI5LCA1LCAyMjMsIDUzLCAxODQsIDI1MywgCi0gICAgMjQyLCAyMTQsIDIyOSwgNSwgMjUzLCAyNDMsIDIxNSwgMTkyLCAyMzAsIDE2MCwgMjE0LCAyMjksIDUsIDI1MywgMTkwLCA3LCAKLSAgICAxLCAzLCA2LCA2MSwgNywgMSwgMywgNiwgMjU0LCAxNDgsIDcsIDMsIDEsIDIxNiwgNTgsIDI1NCwgMTQ4LCA3LCAxLCAzLCAKLSAgICA2LCAyNTIsIDU0LCAyNTMsIDc0LCA3LCAxLCAzLCA2LCAyNTAsIDI1MiwgNywgMSwgMywgNiwgMjQ5LCAzLCA3LCAxLCAzLCAKLSAgICA2LCAyNDUsIDI1LCA3LCAxLCAzLCA2LCA3NCwgNywgMywgMSwgMjE2LCA1OCwgMjI3LCA0MCwgNzQsIDcsIDMsIDEsIDIxNiwgCi0gICAgNTgsIDcyLCA3LCAxLCAzLCA2LCAyMzUsIDE0MiwgNywgMSwgMywgNiwgMjM1LCAyNywgNywgMSwgMywgNiwgMjMzLCAxNzEsIAotICAgIDIsIDkwLCA3LCAxLCAzLCA2LCAxODMsIDcsIDEsIDMsIDYsIDIyMywgMjAyLCAyMDQsIDcsIDEsIDMsIDYsIDc1LCA3LCAxLCAKLSAgICAzLCA2LCAyMjcsIDQwLCA3NSwgNywgMywgMSwgMjIwLCAxMTMsIDc1LCA3LCAzLCAxLCAyMjAsIDExMywgMjI3LCA0MCwgNzUsIAotICAgIDcsIDMsIDEsIDIyMCwgMTEzLCAxNTcsIDIsIDkwLCA3LCAzLCAxLCAyMTYsIDU4LCAyMjcsIDk5LCA3LCAxLCAzLCA2LCAKLSAgICAyMjcsIDIsIDcsIDMsIDEsIDIxNiwgMjI3LCAxNTEsIDc1LCA3LCAzLCAxLCAyNTEsIDEwMSwgMTUxLCA3NSwgNywgMSwgMywgCi0gICAgNiwgMjI2LCAyMjksIDcsIDEsIDMsIDYsIDIyMywgMjAyLCAxNDksIDcsIDEsIDMsIDYsIDIxNiwgNTgsIDE0OSwgNywgMSwgCi0gICAgMywgNiwgMjE4LCA5OSwgNywgMSwgMywgNiwgNjksIDcsIDMsIDEsIDIyMCwgMTEzLCA2OSwgNywgMywgMSwgMjIwLCAxMTMsIAotICAgIDI0NywgMjA4LCA2OSwgNywgMywgMSwgMjIwLCAxMTMsIDIxNiwgNTgsIDE4MywgNywgMSwgMywgNiwgMjE1LCA3OSwgNywgMSwgCi0gICAgMywgNiwgMjE0LCA4MiwgNywgMSwgMywgNiwgMjEyLCAxNTIsIDcsIDEsIDMsIDYsIDI0NCwgMjMyLCA3LCAxLCAyMTQsIAotICAgIDExNiwgMjMzLCAxMDUsIDIxOSwgMTgyLCA3LCAxLCAyNTQsIDEwMywgMjUsIDEsIDMsIDYsIDI0MywgODMsIDI1LCAxLCAzLCAKLSAgICA2LCAyMzMsIDEyMiwgMjUsIDEsIDMsIDYsIDIyNSwgMjQwLCAyNSwgMSwgMywgNiwgMjIzLCAxOTAsIDI1LCAxLCAzLCA2LCAKLSAgICAyMjUsIDQ2LCAzMywgMSwgMywgNiwgMjQ1LCAxMzEsIDU5LCAxLCA2LCA2MSwgNTksIDEsIDYsIDI1NCwgMTQ4LCA1OSwgMSwgCi0gICAgNiwgMjUzLCA3NCwgNTksIDEsIDYsIDI1MiwgNTQsIDI1MywgNzQsIDU5LCAxLCA2LCAyNDksIDMsIDU5LCAxLCA2LCA3NCwgCi0gICAgNTksIDEsIDYsIDIyMywgMjAyLCA3NCwgNTksIDEsIDYsIDI0MywgMTc3LCA1OSwgMSwgNiwgMjQyLCA0MSwgNTksIDEsIDYsIAotICAgIDcyLCA1OSwgMSwgNiwgMjM1LCAxNDIsIDU5LCAxLCA2LCAyMzUsIDI3LCA1OSwgMSwgNiwgMTUwLCA1OSwgMSwgNiwgMTgzLCAKLSAgICA1OSwgMSwgNiwgMjA0LCA1OSwgMSwgNiwgMjIzLCAyMDIsIDIwNCwgNTksIDEsIDYsIDc1LCA1OSwgMSwgNiwgMjI3LCAyLCAKLSAgICA1OSwgMSwgNiwgMjI2LCAyMjksIDU5LCAxLCA2LCAxNDksIDU5LCAxLCA2LCAyMTgsIDk5LCA1OSwgMSwgNiwgNjksIDU5LCAKLSAgICAxLCA2LCAyMTQsIDgyLCA1OSwgMSwgMywgNjEsIDU5LCAxLCAzLCAyMTYsIDU4LCA2MSwgNTksIDEsIDMsIDI1NCwgNTIsIAotICAgIDU5LCAxLCAzLCAyMTYsIDU4LCAyNTQsIDE0OCwgNTksIDEsIDMsIDI1MywgNzQsIDU5LCAxLCAzLCAyNDksIDMsIDU5LCAxLCAKLSAgICAzLCA3NCwgNTksIDEsIDMsIDIyMiwgMTEzLCA1OSwgMSwgMywgMjI3LCA0MCwgNzQsIDU5LCAxLCAzLCAyMTYsIDU4LCAyMjcsIAotICAgIDQwLCA3NCwgNTksIDEsIDMsIDI0MywgMTc3LCA1OSwgMSwgMywgMjE2LCA1OCwgNzIsIDU5LCAxLCAzLCAyMzUsIDI3LCA1OSwgCi0gICAgMSwgMywgMTgzLCA1OSwgMSwgMywgMjQ1LCA5NiwgNTksIDEsIDMsIDc1LCA1OSwgMSwgMywgMjI3LCA0MCwgNzUsIDU5LCAxLCAKLSAgICAzLCAyMTYsIDIyNywgMTUxLCA3NSwgNTksIDEsIDMsIDI1MSwgMTAxLCAxNTEsIDc1LCA1OSwgMSwgMywgMjI2LCAyMjksIAotICAgIDU5LCAxLCAzLCAyMTgsIDk5LCA1OSwgMSwgMywgNjksIDU5LCAxLCAzLCAyMjAsIDExMywgNjksIDU5LCAxLCAzLCAyMTYsIAotICAgIDU4LCAxODMsIDU5LCAxLCAzLCAyMTUsIDc5LCA1OSwgMSwgMywgMjU0LCAxMDMsIDU5LCAxLCAzLCAyNTEsIDIwMywgNTksIAotICAgIDEsIDMsIDI1LCAyNDMsIDgzLCA1OSwgMSwgMywgMjQ4LCA1LCA1OSwgMSwgMywgMjUsIDIyNiwgOSwgNTksIDEsIDMsIDI1MCwgCi0gICAgNDcsIDcsIDIxOSwgMTAsIDMsIDEsIDcyLCA3LCAyMTksIDEwLCAzLCAxLCAxNDksIDcsIDIxOSwgMTAsIDMsIDEsIDY5LCA3LCAKLSAgICAyMTksIDEwLCAzLCAxLCAyMTUsIDc5LCAyNSwgMjE5LCAxMCwgMywgMSwgMjUxLCAyMDMsIDI1LCAyMTksIDEwLCAzLCAxLCAKLSAgICAyNDMsIDgzLCAyNSwgMjE5LCAxMCwgMywgMSwgMjIzLCAxOTAsIDI1LCAyMTksIDEwLCAzLCAxLCAyMjYsIDksIDI1LCAyMTksIAotICAgIDEwLCAzLCAxLCAyNTAsIDQ3LCA3LCAzLCAxLCAyMTUsIDE4MywgNywgMywgMSwgNTQsIDIsIDIzMSwgMzcsIDIxNywgNDIsIAotICAgIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjQ0LCAyMzEsIDIsIDIzMSwgMzcsIDIxNywgCi0gICAgNDIsIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAyMzEsIDM3LCAKLSAgICAyMTcsIDQyLCA3LCAzLCAxLCAyMjYsIDIzMCwgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjI0LCAxMTMsIDIsIAotICAgIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAyNDQsIDU3LCAyNCwgMjMxLCAzNywgMjE3LCA0MiwgNywgCi0gICAgMywgMSwgMjIzLCA0LCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjMxLCAzNywgMjE3LCAKLSAgICA0MiwgNywgMywgMSwgMjEyLCAxNTMsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDIxNiwgNTgsIDI0MywgMTc3LCAKLSAgICA1OSwgMSwgMzMsIDI0NSwgMTA4LCA3LCAzLCAxLCAyMzUsIDIxMCwgMjQzLCAxNzcsIDcsIDMsIDEsIDIxNywgMTY0LCAyLCAKLSAgICAyMTksIDQ3LCA3LCAzLCA2LCAxLCAyNDAsIDE0NiwgMiwgOTAsIDcsIDMsIDEsIDIzNSwgMTg0LCAyLCA5MCwgNywgMywgMSwgCi0gICAgMjI2LCAyMzAsIDIsIDkwLCA3LCAzLCA2LCAxLCAxMTEsIDIsIDkwLCA3LCAzLCAxLCAyMTUsIDEyOSwgMiwgOTAsIDcsIDMsIAotICAgIDEsIDU0LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyNDksIDQsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDI0NCwgCi0gICAgMjMxLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjM1LCAKLSAgICAyOCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIzMiwgCi0gICAgMTEwLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMjYsIAotICAgIDIzMCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIyMywgCi0gICAgNCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjQ1LCA0MSwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjE1LCAKLSAgICA4MCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjEzLCAxNjcsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIxMiwgCi0gICAgMTUzLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAxMTgsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDI1NCwgNTMsIAotICAgIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjQxLCAzOCwgMjQsIDIxOCwgMjcsIDcsIDMsIDEsIDE5MSwgCi0gICAgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjI3LCA0MCwgMTkxLCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyMjMsIAotICAgIDIwMiwgMjI3LCA0MCwgMTkxLCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyMjIsIDExNCwgMiwgMjIzLCAyMDcsIDEwMSwgCi0gICAgNywgMywgMSwgMjQwLCAxNDYsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIyNywgNDAsIDE1NywgMiwgMjIzLCAyMDcsIAotICAgIDEwMSwgNywgMywgMSwgMjQ1LCA0MSwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMTExLCAyLCAyMjMsIDIwNywgMTAxLCAKLSAgICA3LCAzLCAxLCAyNDQsIDIzMywgMiwgMjIzLCAyMDcsIDEwMSwgNTksIDEsIDMsIDIxNiwgNTgsIDI1NCwgNTIsIDU5LCAxLCAKLSAgICAzLCAyNTAsIDI1MiwgNTksIDEsIDMsIDI1MCwgMjUzLCAyLCAyNDksIDQxLCA1OSwgMSwgMywgMjQ1LCAyNSwgNTksIDEsIDMsIAotICAgIDIyMywgMjAyLCAyMjcsIDQwLCA3NCwgNTksIDEsIDMsIDI0NCwgMjMwLCA1OSwgMSwgMywgMjQ3LCA3MywgMjM1LCAxNDMsIAotICAgIDIsIDkwLCA1OSwgMSwgMywgMTEzLCAyNDMsIDE3NywgNTksIDEsIDMsIDIxNiwgNTgsIDI0MiwgNDEsIDU5LCAxLCAzLCAKLSAgICAyNDAsIDE0NiwgMiwgOTAsIDU5LCAxLCAzLCAyMzUsIDE4MywgNTksIDEsIDMsIDYsIDcyLCA1OSwgMSwgMywgNiwgMjQwLCAKLSAgICAxNDYsIDIsIDkwLCA1OSwgMSwgMywgMjM1LCAxNDMsIDIsIDI0OSwgNjcsIDU5LCAxLCAzLCAyMzMsIDE3MSwgMiwgMjIzLCAKLSAgICAyMDcsIDEwMSwgNTksIDEsIDMsIDIzMywgMTcxLCAyLCAyMjYsIDE5MywgMTAxLCA1OSwgMSwgMywgNiwgMTUwLCA1OSwgMSwgCi0gICAgMywgMjMyLCAxMTAsIDIsIDEwMSwgNTksIDEsIDMsIDIxNiwgNTgsIDIzMiwgMTEwLCAyLCAxODQsIDIzMywgNjAsIDU5LCAxLCAKLSAgICAzLCAyMzAsIDk4LCAyLCA0MiwgMTAxLCA1OSwgMSwgMywgMjMwLCA5OCwgMiwgMjIzLCAyMDcsIDEwMSwgNTksIDEsIDMsIDYsIAotICAgIDIwNCwgNTksIDEsIDMsIDI1MiwgNTQsIDc1LCA1OSwgMSwgMywgMjI2LCA5LCA1OSwgMSwgMywgMjIzLCA0LCAyLCAxMDEsIAotICAgIDU5LCAxLCAzLCAyNDUsIDQwLCA1OSwgMSwgMywgMjE4LCAxMDAsIDIsIDIyNiwgMTkzLCAxMDEsIDU5LCAxLCAzLCAxMTEsIAotICAgIDEzNCwgNTksIDEsIDMsIDIxNSwgMTI4LCA1OSwgMSwgMywgNiwgNjksIDU5LCAxLCAzLCAyMTUsIDgwLCAyLCAxMDEsIDU5LCAKLSAgICAxLCAzLCAyMTYsIDU4LCAyMTUsIDc5LCA1OSwgMSwgMywgMjEyLCAxNTIsIDU5LCAxLCAzLCAyMTIsIDE1MywgMiwgMjIzLCAKLSAgICAyMDcsIDEwMSwgNTksIDEsIDMsIDIxMiwgMTUzLCAyLCAyNDksIDQxLCA1OSwgMSwgMywgMjQ0LCAyMzIsIDU5LCAxLCAzLCAKLSAgICAyMTcsIDEzMiwgMzcsIDI0NiwgNzIsIDI0MiwgMTE0LCAyNTQsIDE3NCwgMzcsIDI0NiwgNzIsIDI1NCwgMTY0LCAyNTQsIAotICAgIDE3NCwgMzcsIDIxOSwgMjUzLCA1NSwgMzcsIDIxOCwgMjA3LCA3NywgMzcsIDIzMiwgMzYsIDM3LCAyNDIsIDExMSwgMzcsIAotICAgIDIzMiwgMzQsIDM3LCAyNTQsIDE2MiwgMzcsIDI0MiwgMTEyLCAzNywgMjU0LCAxNjMsIDM3LCA3LCAzLCAxLCAyMjQsIDExMywgCi0gICAgNTUsIDM3LCAyNTEsIDczLCAzNywgMjMyLCAzNSwgMzcsIDUxLCAyNDksIDIyNCwgNDksIDM3LCAyMjcsIDkxLCA0OSwgMzcsIAotICAgIDIxMiwgMjgsIDU1LCAzNywgMjM1LCAxNzAsIDU1LCAzNywgMjE1LCAxMjIsIDQ5LCAzNywgMjE1LCAxMDUsIDQ5LCAzNywgNywgCi0gICAgMywgMSwgMjQ0LCAzMiwgMjI3LCA0MCwgMTE4LCA0OSwgMzcsIDcsIDMsIDEsIDI1NCwgMTQ4LCAzNywgNywgMywgMSwgMjUzLCAKLSAgICAyNDAsIDM3LCA3LCAzLCAxLCAyNTMsIDkyLCAzNywgNywgMywgMSwgMjUwLCAyNTMsIDI1MCwgMTE3LCAzNywgNywgMywgMSwgCi0gICAgMjM1LCAyMTAsIDI0OSwgMywgMzcsIDcsIDMsIDEsIDI0NSwgMjUsIDM3LCA3LCAzLCAxLCAyNDMsIDE3NywgMzcsIDcsIDEsIAotICAgIDMsIDYsIDI0MywgMTc3LCAzNywgNywgMywgMSwgMjM1LCAyNywgMzcsIDcsIDMsIDEsIDE1MCwgMzcsIDcsIDEsIDMsIDYsIAotICAgIDE1MCwgMzcsIDcsIDEsIDMsIDYsIDE4MywgMzcsIDcsIDMsIDEsIDIwNCwgMzcsIDcsIDEsIDMsIDYsIDIwNCwgMzcsIDcsIAotICAgIDEsIDMsIDYsIDE0OSwgMzcsIDcsIDMsIDEsIDIyNCwgMTEzLCAyMjMsIDg4LCAzNywgNywgMywgMSwgMTk3LCAzNywgNywgMywgCi0gICAgMSwgMTg0LCAxOTcsIDM3LCA3LCAzLCAxLCAyMTIsIDE1MiwgMzcsIDUxLCAyMzUsIDE5MSwgMjUxLCA3NSwgNTUsIDM3LCAKLSAgICAyNTQsIDU3LCAxMjMsIDIxMSwgMjExLCA1NSwgMzcsIDQyLCAyNTMsIDE2NSwgNDksIDM3LCA0NiwgMjUzLCAxNjUsIDI0LCAKLSAgICAxMTksIDI1MywgMTY1LCA1NSwgNywgNiwgMSwgMTE4LCAyLCAyMjMsIDEzMSwgNTUsIDcsIDMsIDEsIDExOCwgMiwgMjIzLCAKLSAgICAxMzEsIDU1LCA3LCA2LCAxLCA1NCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCA1NCwgMiwgNjIsIDQ5LCA3LCA2LCAxLCA1NCwgMiwgCi0gICAgNjIsIDU1LCA3LCAzLCAxLCA1NCwgMiwgNjIsIDU1LCA3LCA2LCAxLCA1NCwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAKLSAgICA1NCwgMiwgMjMyLCAyNDMsIDU1LCA3LCA2LCAxLCAyNTAsIDI1MywgMiwgMjUwLCAxMTgsIDI0LCAxNzksIDcsIDMsIDEsIAotICAgIDI1MCwgMjUzLCAyLCAyNTAsIDExOCwgMjQsIDE3OSwgNywgNiwgMSwgMjQ5LCA0LCAyLCA2MiwgNDksIDcsIDMsIDEsIDI0OSwgCi0gICAgNCwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyNDksIDQsIDIsIDYyLCA1NSwgNywgMywgMSwgMjQ5LCA0LCAyLCA2MiwgNTUsIDcsIAotICAgIDYsIDEsIDI0OSwgNCwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyNDksIDQsIDIsIDIzMiwgMjQzLCA1NSwgNywgNiwgMSwgCi0gICAgMjQ5LCA0LCAyLCAyNTAsIDExNywgNywgMywgMSwgMjQ5LCA0LCAyLCAyNTAsIDExNywgNywgNiwgMSwgMjQ5LCA0LCAyLCAKLSAgICAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjQ5LCAyMjQsIDU1LCA3LCA2LCAxLCAxOTEsIDIsIDIzMiwgMzgsIAotICAgIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTkxLCAyLCAyMzIsIDM4LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDE5MSwgMiwgCi0gICAgMjMyLCAzOCwgMjQsIDE3OSwgNywgMywgMSwgMTkxLCAyLCAyMzIsIDM4LCAyNCwgMTc5LCA3LCA2LCAxLCAxOTEsIDIsIAotICAgIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgMTkxLCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDE5MSwgMiwgMjE3LCA0MywgCi0gICAgNTUsIDcsIDMsIDEsIDE5MSwgMiwgMjE3LCA0MywgNTUsIDcsIDYsIDEsIDE5MSwgMiwgMjUwLCAxMTgsIDI0LCAyNTEsIDc0LCAKLSAgICA3LCAzLCAxLCAxOTEsIDIsIDI1MCwgMTE4LCAyNCwgMjUxLCA3NCwgNywgNiwgMSwgMjQ0LCAyMzEsIDIsIDYyLCA0OSwgNywgCi0gICAgMywgMSwgMjQ0LCAyMzEsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIDI0MywgCi0gICAgMTc4LCAyLCAyMzIsIDM3LCA3LCA2LCAxLCAyNDIsIDQyLCAyLCA2MiwgNDksIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDYyLCAKLSAgICA0OSwgNywgNiwgMSwgMjQyLCA0MiwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCA2MiwgNTUsIDcsIDYsIDEsIAotICAgIDI0MiwgNDIsIDIsIDI0NywgMjA5LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAyNDcsIDIwOSwgNywgNiwgMSwgMjQyLCA0MiwgMiwgCi0gICAgMjUwLCAxMTcsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAyNTEsIDc1LCAKLSAgICA1NSwgNywgMywgMSwgMjQyLCA0MiwgMiwgMjUxLCA3NSwgNTUsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyMTcsIDQzLCA1NSwgCi0gICAgNywgMywgMSwgMjQwLCAxNDYsIDIsIDIxNywgNDMsIDU1LCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjQ3LCAyMTAsIDI0LCAKLSAgICAxNzksIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyNDcsIDIxMCwgMjQsIDE3OSwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMTc5LCAKLSAgICA3LCAzLCAxLCAyMzUsIDI4LCAyLCAxNzksIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDYyLCA1NSwgNywgMywgMSwgMjM1LCAyOCwgCi0gICAgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMzUsIDI4LCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDIzMiwgCi0gICAgMjQzLCA1NSwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDYyLCA1NSwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDYyLCA1NSwgNywgCi0gICAgNiwgMSwgMjMzLCAxNzEsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDIzMiwgMzcsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCA2MiwgCi0gICAgMjUxLCAyMjAsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMzMsIAotICAgIDE3MSwgMiwgMjMyLCAyNDMsIDU1LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgMjQ5LCAyMjQsIDU1LCA3LCAzLCAxLCAyMzMsIAotICAgIDE3MSwgMiwgMjQ5LCAyMjQsIDU1LCA3LCA2LCAxLCAyMzIsIDExMCwgMiwgMTc5LCA3LCAzLCAxLCAyMzIsIDExMCwgMiwgCi0gICAgMTc5LCA3LCA2LCAxLCAyMzIsIDExMCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMzIsIDExMCwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAKLSAgICAyMzIsIDExMCwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMzIsIDExMCwgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAKLSAgICA2MiwgNDksIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgNjIsIDU1LCA3LCAzLCAKLSAgICAxLCAyMzAsIDk4LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjMwLCAKLSAgICA5OCwgMiwgMjMyLCAyNDMsIDU1LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIDIzMCwgOTgsIAotICAgIDIsIDI0OSwgMjI0LCA1NSwgNywgNiwgMSwgMTU3LCAyLCAyMTcsIDQzLCAyNCwgMTc5LCA3LCAzLCAxLCAxNTcsIDIsIDIxNywgCi0gICAgNDMsIDI0LCAxNzksIDcsIDYsIDEsIDE1NywgMiwgMjE3LCA0MywgMjQsIDI0NywgMjA5LCA3LCAzLCAxLCAxNTcsIDIsIAotICAgIDIxNywgNDMsIDI0LCAyNDcsIDIwOSwgNywgNiwgMSwgMTU3LCAyLCAyMzIsIDM4LCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIAotICAgIDE1NywgMiwgMjMyLCAzOCwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxNTcsIDIsIDIzMiwgMzgsIDI0LCAxNzksIDcsIDMsIAotICAgIDEsIDE1NywgMiwgMjMyLCAzOCwgMjQsIDE3OSwgNywgNiwgMSwgMjI2LCAyMzAsIDIsIDE3OSwgNywgMywgMSwgMjI2LCAKLSAgICAyMzAsIDIsIDE3OSwgNywgNiwgMSwgMjI2LCAyMzAsIDIsIDYyLCA0OSwgNywgMywgMSwgMjI2LCAyMzAsIDIsIDYyLCA0OSwgCi0gICAgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDYyLCA0OSwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjI0LCAKLSAgICAxMTMsIDIsIDYyLCA1NSwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDYyLCAKLSAgICAyNTEsIDIyMCwgMjQsIDIzMiwgMzcsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCA2MiwgMjUxLCAyMjAsIDI0LCAyMzIsIDM3LCAKLSAgICA3LCA2LCAxLCAyMjQsIDExMywgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgMjMyLCAyNDMsIDU1LCAKLSAgICA3LCA2LCAxLCAyMjMsIDQsIDIsIDYyLCA0OSwgNywgMywgMSwgMjIzLCA0LCAyLCA2MiwgNDksIDcsIDYsIDEsIDIyMywgNCwgCi0gICAgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjIzLCA0LCAyLCAyNTQsIDE2NCwgMjQsIAotICAgIDYyLCA0OSwgNywgMywgMSwgMjIzLCA0LCAyLCAyNTQsIDE2NCwgMjQsIDYyLCA0OSwgNywgNiwgMSwgMjIzLCA0LCAyLCAKLSAgICAyNTAsIDE2NywgMjQsIDYyLCA0OSwgNywgMywgMSwgMjIzLCA0LCAyLCAyNTAsIDE2NywgMjQsIDYyLCA0OSwgNywgNiwgMSwgCi0gICAgMjIzLCA0LCAyLCA2MiwgMjUxLCAyMjAsIDI0LCA2MiwgNDksIDcsIDMsIDEsIDIyMywgNCwgMiwgNjIsIDI1MSwgMjIwLCAKLSAgICAyNCwgNjIsIDQ5LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgNjIsIDQ5LCAKLSAgICA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMTgsIAotICAgIDEwMCwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjMyLCAyNDMsIDU1LCA3LCA2LCAxLCAyMTgsIAotICAgIDEwMCwgMiwgMjQ5LCAyMjQsIDU1LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjQ5LCAyMjQsIDU1LCA3LCA2LCAxLCAxMTEsIAotICAgIDIsIDI0NywgMjEwLCA1NSwgNywgMywgMSwgMTExLCAyLCAyNDcsIDIxMCwgNTUsIDcsIDYsIDEsIDExMSwgMiwgMjE3LCA0MywgCi0gICAgNTUsIDcsIDMsIDEsIDExMSwgMiwgMjE3LCA0MywgNTUsIDcsIDYsIDEsIDExMSwgMiwgMjQ5LCAyMjQsIDU1LCA3LCAzLCAxLCAKLSAgICAxMTEsIDIsIDI0OSwgMjI0LCA1NSwgNywgNiwgMSwgMTExLCAyLCAyMTcsIDQzLCAyNCwgMTc5LCA3LCAzLCAxLCAxMTEsIDIsIAotICAgIDIxNywgNDMsIDI0LCAxNzksIDcsIDYsIDEsIDExMSwgMiwgMjMyLCAzOCwgMjQsIDI0NywgMjA5LCA3LCAzLCAxLCAxMTEsIAotICAgIDIsIDIzMiwgMzgsIDI0LCAyNDcsIDIwOSwgNywgNiwgMSwgMjE1LCA4MCwgMiwgMjE3LCA0MiwgNywgMywgMSwgMjE1LCA4MCwgCi0gICAgMiwgMjE3LCA0MiwgNywgNiwgMSwgMjE1LCA4MCwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMTUsIDgwLCAyLCA2MiwgNTUsIDcsIAotICAgIDYsIDEsIDIxNCwgODMsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAyMTQsIDgzLCAyLCAyNDIsIDExMywgNywgNiwgMSwgMjE0LCAKLSAgICA4MywgMiwgMTc5LCA3LCAzLCAxLCAyMTQsIDgzLCAyLCAxNzksIDcsIDYsIDEsIDIxNCwgODMsIDIsIDI0NywgMjA5LCA3LCAKLSAgICAzLCAxLCAyMTQsIDgzLCAyLCAyNDcsIDIwOSwgNywgNiwgMSwgMjE0LCA4MywgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMTQsIAotICAgIDgzLCAyLCA2MiwgNDksIDcsIDYsIDEsIDIxNCwgODMsIDIsIDYyLCA1NSwgNywgMywgMSwgMjE0LCA4MywgMiwgNjIsIDU1LCAKLSAgICA3LCA2LCAxLCAyMTMsIDE2NywgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMTMsIDE2NywgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMTMsIAotICAgIDE2NywgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDIxMywgMTY3LCAyLCAyNDcsIDIwOSwgNywgNiwgMSwgMjEzLCAxMDYsIDIsIAotICAgIDYyLCA0OSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDI0OSwgMjIzLCA3LCAKLSAgICAzLCAxLCAyMTIsIDE1MywgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxMiwgCi0gICAgMTUzLCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAKLSAgICAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIAotICAgIDI0NywgMjA5LCA3LCAzLCAxLCAyMTQsIDgzLCAyLCAyMjMsIDEzMSwgNDksIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAyMjMsIAotICAgIDEzMSwgNDksIDcsIDMsIDEsIDExOCwgMiwgNDYsIDE1MSwgMjIzLCAxMzAsIDcsIDMsIDEsIDE4NCwgMjIzLCA0LCAyLCA2MiwgCi0gICAgNDksIDcsIDMsIDEsIDE4NCwgMjIzLCA0LCAyLCAyNDcsIDIwNywgOTAsIDcsIDMsIDEsIDE4NCwgMjIzLCA0LCAyLCAxMjQsIAotICAgIDkwLCA3LCA2LCAxLCAyMjAsIDI1NSwgMTk3LCA3LCAzLCAxLCAyNDgsIDUsIDcsIDYsIDEsIDExOCwgMiwgNjIsIDU1LCA3LCAKLSAgICAzLCAxLCAxMTgsIDIsIDYyLCA1NSwgNywgNiwgMSwgMTE4LCAyLCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMTE4LCAyLCAyNDEsIAotICAgIDM4LCA0OSwgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDE3OSwgNywgMywgMSwgMTE4LCAyLCAyNDksIDIyNCwgCi0gICAgMjQsIDE3OSwgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTgsIDIsIDI0OSwgCi0gICAgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIDM4LCA0OSwgNywgMywgMSwgCi0gICAgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjE3LCAKLSAgICA0MiwgNywgMywgMSwgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDIxNywgNDIsIDcsIDYsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIAotICAgIDI0LCA2MiwgNTUsIDcsIDMsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCA2MiwgNTUsIDcsIDYsIDEsIDExOCwgMiwgMjUxLCAKLSAgICA3NSwgMjQsIDE3OSwgNywgMywgMSwgMTE4LCAyLCAyNTEsIDc1LCAyNCwgMTc5LCA3LCA2LCAxLCAxMTgsIDIsIDI1MSwgNzUsIAotICAgIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTE4LCAyLCAyNTEsIDc1LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDExOCwgMiwgCi0gICAgMjUxLCA3NSwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAyNDEsIDM4LCA0OSwgNywgCi0gICAgNiwgMSwgMTE4LCAyLCAyNTEsIDc1LCAyNCwgMjE3LCA0MiwgNywgMywgMSwgMTE4LCAyLCAyNTEsIDc1LCAyNCwgMjE3LCAKLSAgICA0MiwgNywgNiwgMSwgMTE4LCAyLCAyNTEsIDc1LCAyNCwgNjIsIDU1LCA3LCAzLCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAKLSAgICA2MiwgNTUsIDcsIDYsIDEsIDE5MSwgMiwgNjIsIDU1LCA3LCAzLCAxLCAxOTEsIDIsIDYyLCA1NSwgNywgNiwgMSwgMTkxLCAKLSAgICAyLCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMTkxLCAyLCAyNDEsIDM4LCA0OSwgNywgNiwgMSwgMTkxLCAyLCAyMTcsIDQyLCAKLSAgICA3LCAzLCAxLCAxOTEsIDIsIDIxNywgNDIsIDcsIDYsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCAxNzksIDcsIDMsIDEsIAotICAgIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCAxNzksIDcsIDYsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCAyNDIsIDExMywgNywgMywgCi0gICAgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAKLSAgICAzOCwgNDksIDcsIDMsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIDM4LCA0OSwgNywgNiwgMSwgMTkxLCAyLCAyNDksIAotICAgIDIyNCwgMjQsIDIxNywgNDIsIDcsIDMsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCAyMTcsIDQyLCA3LCA2LCAxLCAxOTEsIAotICAgIDIsIDI0OSwgMjI0LCAyNCwgNjIsIDU1LCA3LCAzLCAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgNjIsIDU1LCA3LCA2LCAxLCAKLSAgICAyNDAsIDE0NiwgMiwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyNDEsIDM4LCA0OSwgNywgNiwgMSwgCi0gICAgMjQwLCAxNDYsIDIsIDYyLCA1NSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDYyLCA1NSwgNywgNiwgMSwgMTU3LCAyLCA2MiwgCi0gICAgNTUsIDcsIDMsIDEsIDE1NywgMiwgNjIsIDU1LCA3LCA2LCAxLCAxNTcsIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxNTcsIAotICAgIDIsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgMTc5LCA3LCAzLCAxLCAxNTcsIDIsIDI0OSwgCi0gICAgMjI0LCAyNCwgMTc5LCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDE1NywgMiwgCi0gICAgMjQ5LCAyMjQsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAzLCAKLSAgICAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyMTcsIAotICAgIDQyLCA3LCAzLCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgMjE3LCA0MiwgNywgNiwgMSwgMTU3LCAyLCAyNDksIDIyNCwgCi0gICAgMjQsIDYyLCA1NSwgNywgMywgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDYyLCA1NSwgNywgNiwgMSwgMTU3LCAyLCAyNDAsIAotICAgIDIzNiwgMjQsIDE3OSwgNywgMywgMSwgMTU3LCAyLCAyNDAsIDIzNiwgMjQsIDE3OSwgNywgNiwgMSwgMTU3LCAyLCAyNDAsIAotICAgIDIzNiwgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDE1NywgCi0gICAgMiwgMjQwLCAyMzYsIDI0LCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMTU3LCAyLCAyNDAsIDIzNiwgMjQsIDI0MSwgMzgsIDQ5LCAKLSAgICA3LCA2LCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgMjE3LCA0MiwgNywgMywgMSwgMTU3LCAyLCAyNDAsIDIzNiwgMjQsIAotICAgIDIxNywgNDIsIDcsIDYsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCA2MiwgNTUsIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAKLSAgICAyMzYsIDI0LCA2MiwgNTUsIDcsIDYsIDEsIDExMSwgMiwgNjIsIDU1LCA3LCAzLCAxLCAxMTEsIDIsIDYyLCA1NSwgNywgNiwgCi0gICAgMSwgMTExLCAyLCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMTExLCAyLCAyNDEsIDM4LCA0OSwgNywgNiwgMSwgMTExLCAyLCAKLSAgICAyNDAsIDIzNiwgMjQsIDE3OSwgNywgMywgMSwgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDE3OSwgNywgNiwgMSwgMTExLCAyLCAKLSAgICAyNDAsIDIzNiwgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIAotICAgIDExMSwgMiwgMjQwLCAyMzYsIDI0LCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDI0MSwgCi0gICAgMzgsIDQ5LCA3LCA2LCAxLCAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgMjE3LCA0MiwgNywgMywgMSwgMTExLCAyLCAyNDAsIAotICAgIDIzNiwgMjQsIDIxNywgNDIsIDcsIDYsIDEsIDExMSwgMiwgMjQwLCAyMzYsIDI0LCA2MiwgNTUsIDcsIDMsIDEsIDExMSwgMiwgCi0gICAgMjQwLCAyMzYsIDI0LCA2MiwgNTUsIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAyNDIsIDExMywgNywgMywgMSwgMjEzLCAxMDYsIAotICAgIDIsIDI0MiwgMTEzLCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgNjIsIDU1LCAKLSAgICA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAyNDEsIDM4LCA0OSwgNywgCi0gICAgNiwgMSwgMjEzLCAxMDYsIDIsIDIxNywgNDIsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAyMTcsIDQyLCA3LCA2LCAxLCAyMzEsIAotICAgIDM2LCAyMzIsIDIxNCwgNywgMywgMSwgMjMxLCAzNiwgMjMyLCAyMTQsIDcsIDYsIDEsIDIzMSwgMzYsIDIxNSwgNzksIDcsIAotICAgIDMsIDEsIDIzMSwgMzYsIDIxNSwgNzksIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAyMzIsIDE3NywgNywgMywgMSwgMjEzLCAKLSAgICAxMDYsIDIsIDIzMiwgMTc3LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIAotICAgIDI0OCwgOTksIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNTQsIDUzLCAKLSAgICAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIAotICAgIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgCi0gICAgNTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI1LCAKLSAgICAzOSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgCi0gICAgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIAotICAgIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgCi0gICAgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMjYsIDUwLCAKLSAgICAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDI0OCwgOTksIDI1LCAzLCAxLCAKLSAgICAyNDUsIDY0LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyMDcsIDI0LCAyMTQsIAotICAgIDI0NSwgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIAotICAgIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI1LCAzOSwgMjUsIDYsIDEsIDI0NSwgNjQsIDIsIAotICAgIDI0OCwgOTksIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNDUsIDY0LCAKLSAgICAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIAotICAgIDEsIDI0NSwgNjQsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCAzOSwgMjUsIDMsIAotICAgIDEsIDI0NSwgMjksIDIsIDI0OCwgOTksIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAKLSAgICAzLCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAKLSAgICAyMjYsIDIzNCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgCi0gICAgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgCi0gICAgMjQ1LCAyOSwgMiwgMjI1LCAzOSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAKLSAgICAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIAotICAgIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIyNiwgCi0gICAgMjM0LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIyNSwgMzksIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgCi0gICAgMjQ4LCA5OSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMzUsIAotICAgIDE4NCwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAKLSAgICAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIyNSwgNDAsIAotICAgIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMzUsIDE4NCwgCi0gICAgMiwgMjI1LCAzOSwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyNDgsIDk5LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDIyNSwgCi0gICAgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIAotICAgIDIzNSwgMTg0LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjA3LCAyNCwgMjI2LCAKLSAgICAyMzQsIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgCi0gICAgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIyNywgNjYsIDIsIDIyNSwgMzksIDI1LCAzLCAxLCAyMjcsIDY2LCAyLCAKLSAgICAyNDgsIDk5LCAyNSwgMywgMSwgMjI3LCA2NiwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjI3LCA2NiwgCi0gICAgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMjcsIDY2LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAKLSAgICAxLCAyMjcsIDY2LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIyNSwgMzksIDI1LCA2LCAKLSAgICAxLCAyMjcsIDY2LCAyLCAyNDgsIDk5LCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgCi0gICAgNiwgMSwgMjI3LCA2NiwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAyMjUsIDQwLCAyNCwgCi0gICAgMjI2LCAyMzQsIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAKLSAgICAyMjUsIDM5LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDI0OCwgOTksIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjI1LCA0MCwgCi0gICAgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjE1LCAKLSAgICAxMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgCi0gICAgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMDcsIAotICAgIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjA3LCAKLSAgICAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyMTUsIAotICAgIDEyOSwgMiwgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgMzksIDI1LCAzLCAxLCAyMjcsIAotICAgIDY4LCAyLCAyNDgsIDk5LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgCi0gICAgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAKLSAgICAyMzQsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgCi0gICAgNDAsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIyNywgCi0gICAgNjgsIDIsIDIyNSwgMzksIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyNDgsIDk5LCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCAKLSAgICA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyMjcsIAotICAgIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgCi0gICAgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjA3LCAKLSAgICAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI2LCAKLSAgICAyMzQsIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDIyNiwgMjM0LCAyNSwgCi0gICAgMywgMSwgMjQ1LCAyOSwgMiwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjYsIDIzNCwgMjUsIDMsIDEsIAotICAgIDIzNSwgMTg0LCAyLCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIyNywgCi0gICAgNjYsIDIsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjI3LCA2NiwgMiwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgCi0gICAgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMTQsIAotICAgIDI0NSwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIAotICAgIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAKLSAgICAyMjUsIDQwLCAyNCwgMjE0LCAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIxNCwgCi0gICAgMjQ2LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzUsIDI0LCAyMTIsIAotICAgIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgMjM1LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAKLSAgICAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgCi0gICAgMjA3LCAyNCwgMjI2LCA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNSwgCi0gICAgNTEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI1LCAKLSAgICA0MCwgMjQsIDIxNCwgMjQ2LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIxNCwgMjQ2LCAKLSAgICAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNSwgMjQsIDIyNSwgNTEsIAotICAgIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMjYsIDIzNSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNTQsIDUzLCAKLSAgICAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMjYsIAotICAgIDUxLCAyNCwgMjI1LCA1MSwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIAotICAgIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgCi0gICAgMjQ2LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMTQsIDI0NiwgMjQsIDIxMiwgMjEwLCAKLSAgICAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM1LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIAotICAgIDI5LCAyLCAyMDcsIDI0LCAyMjYsIDIzNSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgCi0gICAgMjQsIDIyNiwgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIyNiwgNTEsIDI0LCAKLSAgICAyMTIsIDIxMCwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjQ1LCAyOSwgCi0gICAgMiwgMjA3LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NiwgMjQsIAotICAgIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMTQsIDI0NiwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAKLSAgICAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzUsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgCi0gICAgMjA3LCAyNCwgMjI2LCAyMzUsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgCi0gICAgNTEsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCA1MSwgMjQsIDIyNSwgNTEsIDI1LCAKLSAgICAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAKLSAgICAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgCi0gICAgMywgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjE0LCAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIAotICAgIDIyNSwgNDAsIDI0LCAyMjYsIDIzNSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCAKLSAgICAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUxLCAyNCwgMjEyLCAKLSAgICAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCA2LCAxLCAyMjcsIAotICAgIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNSwgNTEsIDI1LCAKLSAgICA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDYsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjI3LCA2OCwgCi0gICAgMiwgMjA3LCAyNCwgMjE0LCAyNDYsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIAotICAgIDIyNiwgMjM1LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgMjM1LCAyNCwgMjI1LCAKLSAgICA1MSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUxLCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIAotICAgIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgNTEsIDI0LCAyMjUsIDUxLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjE0LCAKLSAgICAxMDEsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMzIsIDM3LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjE0LCAyNDYsIDI0LCAKLSAgICAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI2LCAyMzUsIAotICAgIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNiwgNTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjYsIAotICAgIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMTQsIDEwMSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIAotICAgIDIzMiwgMzcsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNiwgMjM0LCAKLSAgICAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI1LCA1MSwgMjUsIDIzNCwgMTEsIDI1LCAyMjUsIDUxLCAyNSwgMjI1LCAzOSwgMjUsIAotICAgIDIyNiwgNTAsIDI1LCAyNDcsIDIwNCwgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMTQsIDI0NiwgMjQsIAotICAgIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjYsIDIzNSwgCi0gICAgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI2LCA1MCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNiwgCi0gICAgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDYsIDEsIDI0NSwgNjQsIDIsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgCi0gICAgMjI2LCAyMzQsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIyNiwgMjM0LCAKLSAgICAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI1LCA1MSwgMjUsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDIyNSwgNDAsIAotICAgIDI0LCAyMjYsIDIzNCwgMjUsIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIxNCwgMTAxLCAKLSAgICAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIzMiwgMzcsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjQ3LCAyMDQsIDI0LCAyMTQsIAotICAgIDI0NSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyNDcsIDIwNCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjM1LCAxODQsIAotICAgIDIsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjQ3LCAyMDQsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjM1LCAKLSAgICAxODQsIDIsIDIxNCwgMTAxLCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDIzMiwgMzcsIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgCi0gICAgMjE0LCAyNDUsIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjI2LCAyMzQsIDI1LCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIAotICAgIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMTQsIDEwMSwgCi0gICAgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMzIsIDM3LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDI0NywgMjA0LCAyNCwgMjE0LCAKLSAgICAyNDUsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjQ3LCAyMDQsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIyMywgMTkxLCAKLSAgICAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjIzLCAxOTEsIDIsIDI0OCwgOTksIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjI2LCAKLSAgICA1MCwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwNCwgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgCi0gICAgMjE0LCAxMDEsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjMyLCAzNywgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMTQsIAotICAgIDI0NSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyMywgMTkxLCAyLCAyNDgsIDk5LCAyNSwgCi0gICAgMjQ3LCAyMDQsIDI0LCAyMTQsIDI0NSwgMjUsIDI0NywgMjA0LCAyNCwgMjI2LCAyMzQsIDI1LCAyMTQsIDI0NSwgMjUsIDMsIAotICAgIDEsIDIyNywgNjgsIDIsIDIxNCwgMjQ2LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMTIsIDIxMCwgCi0gICAgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNiwgMjM1LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjYsIAotICAgIDUwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI2LCA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgCi0gICAgMjE0LCAyNDUsIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIxNCwgMjQ1LCAKLSAgICAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIDUxLCAyNSwgMjI2LCAKLSAgICAyMzQsIDI1LCAyNDgsIDk5LCAyNDUsIDEwOSwgMjI0LCAxNzIsIDI0NSwgMTE4LCAyMjQsIDE3MiwgMjQ1LCAxMDksIDIxOSwgCi0gICAgMjA2LCAyNDUsIDExOCwgMjE5LCAyMDYsIDIxNywgOTUsIDIxOSwgMjA2LCAyNDMsIDIzNSwgMjE5LCAyMDYsIDIyMCwgNTEsIAotICAgIDIxOSwgMjA2LCAyNDQsIDgxLCAyMTksIDIwNiwgMjI1LCAyNywgMjE5LCAyMDYsIDIxNywgMTIzLCAyMTksIDIwNiwgMjQyLCAKLSAgICAxNywgMjE5LCAyMDYsIDIxMiwgODAsIDIxMywgMjMwLCAyMTksIDIwNiwgMjEyLCA4MCwgMjEzLCAyMzAsIDIyOCwgMTc4LCAKLSAgICAyMTIsIDgwLCAyMTMsIDIzMCwgMjM1LCA2NiwgMjMzLCA2MiwgNzcsIDIyMywgMTQwLCA3NywgMjQwLCAxNjAsIDIyOCwgCi0gICAgMTc5LCAyNDAsIDE2MCwgMjQ0LCA4MSwgMjQ4LCAxMDEsIDI0NSwgMTA5LCAyNDgsIDEwMSwgMjQ1LCAxMTgsIDI0OCwgMTAxLCAKLSAgICAxOTksIDEzNCwgNTEsIDcxLCAyMzIsIDI0MiwgNTEsIDExNSwgMjMyLCAyNDIsIDQyLCAyMjAsIDgxLCAyMjQsIDE0MywgNzcsIAotICAgIDQ2LCAyMjAsIDgxLCAyMjQsIDE0MywgNzcsIDIyMCwgODEsIDIzMiwgMTY0LCAyMjQsIDE0MywgNzcsIDIyMCwgODEsIDI0MSwgCi0gICAgMTQ5LCAyMjQsIDE0MywgNzcsIDQyLCA1MSwgMjI0LCAxNDMsIDc3LCA0NiwgNTEsIDIyNCwgMTQzLCA3NywgNTEsIDIzMiwgCi0gICAgMTY0LCAyMjQsIDE0MywgNzcsIDUxLCAyNDEsIDE0OSwgMjI0LCAxNDMsIDc3LCAyNDgsIDE0OSwgNTEsIDI0OCwgMTQ5LCAKLSAgICAyNTEsIDQyLCAyMTYsIDE4MCwgMjUxLCA0MiwgMTIyLCA2MiwgMjMzLCA4MCwgMTE3LCA2MiwgMjMzLCA4MCwgMTk5LCAyNDUsIAotICAgIDEyMCwgMjQwLCAxNTgsIDIyNSwgMTQ0LCAyMzIsIDI0MywgMjIxLCA1NywgMjI2LCAxNDMsIDIyMSwgNTcsIDIzMywgNjIsIAotICAgIDI0NSwgMTE2LCAyMjMsIDE0MCwgMjQ1LCAxMTYsIDIyNSwgMTI2LCAyNDcsIDE0OCwgMjQzLCAyNDQsIDIzMywgNjIsIDIyNiwgCi0gICAgMjQxLCAyMjMsIDE0MCwgMjI2LCAyNDEsIDIzMCwgMTQsIDIyOCwgMTg0LCAyMTksIDIwNiwgMjI2LCA1OCwgMjMxLCA2LCAKLSAgICA1MiwgMjI2LCA1OCwgMjE3LCAyMDEsIDIxNywgMTAxLCA1MiwgMjI1LCA3MSwgNTEsIDIyNSwgNzEsIDIxNiwgMTY5LCAyMjUsIAotICAgIDcxLCAyMjMsIDIwMiwgMjI1LCA3MSwgMjIzLCAyMDIsIDUxLCAyMjUsIDcxLCAyMjMsIDIwMiwgMjE2LCAxNjksIDIyNSwgCi0gICAgNzEsIDI1MCwgMTcwLCAyMjAsIDgxLCAyMzMsIDY2LCAyNTQsIDE5LCAyMjQsIDE0MywgNzcsIDIyMCwgODEsIDIyMywgMTQ0LCAKLSAgICAyNTQsIDE5LCAyMjQsIDE0MywgNzcsIDIyNCwgMCwgNzcsIDUxLCAyNDQsIDI1NCwgNzcsIDIzNSwgMTk4LCAyMjYsIDI0MywgCi0gICAgMjE1LCAxNTAsIDEzNywgMjE3LCA2NSwgMjUwLCAxNzEsIDIzNSwgMjEzLCAyMjUsIDE0NCwgMjUzLCAxMzAsIDI0MCwgMTYxLCAKLSAgICAyNTEsIDQyLCAyNDMsIDIyOCwgMjIwLCAyMywgNDIsIDQxLCAyNTEsIDg1LCAyLCAyMjQsIDE1MiwgNDYsIDQxLCAyNTEsIAotICAgIDg1LCAyLCAyMjQsIDE1MiwgNTEsIDIyNCwgMTU4LCA3NywgMjI0LCAxNTgsIDI0NCwgMjU0LCA3NywgMjQ0LCAyNTQsIDIyNCwgCi0gICAgMTU4LCA3NywgMjE3LCAyMywgNSwgMjQ1LCAzMCwgMjIzLCAyMDIsIDIyNSwgMjAwLCA1MiwgODMsIDEzMiwgMjUxLCA0MiwgCi0gICAgODMsIDk1LCAyNTEsIDQyLCAxMTUsIDI1MywgMTMyLCAyMjMsIDIwMiwgMjIxLCA3MCwgMjQ5LCAxOTQsIDIxNSwgMTM0LCAKLSAgICAxMTcsIDI1MywgMTMxLCAyNTQsIDY3LCAyMTQsIDE2NSwgMjQ5LCAxNTYsIDIzMCwgMjUxLCA1MiwgMjE4LCAxNzksIDI0OCwgCi0gICAgMTAxLCAyMzUsIDE5MSwgMjE1LCAxNTAsIDI0NCwgMjEsIDIyNSwgMjcsIDc3LCAxMzMsIDYyLCAyMjUsIDI2LCAyMjQsIAotICAgIDE2OSwgMjI1LCA3MSwgMjQzLCAyMzcsIDYyLCAyMjUsIDI2LCAyNDQsIDUwLCA2MiwgMjI1LCAyNiwgMTE3LCA2MiwgMjI1LCAKLSAgICAyNiwgMjQzLCAyMzcsIDYyLCA3NywgMjQ2LCA3MiwgMjQ5LCA3MCwgMjE2LCAxNzksIDcxLCAyNDMsIDIzNywgMjQ3LCA3MiwgCi0gICAgMjMxLCAxNDcsIDE0LCAyMTksIDIwNiwgMjEzLCAxOTYsIDIzNSwgNjYsIDI0MywgMTk4LCAyNTMsIDIyMiwgMjM1LCAxODksIAotICAgIDIxNywgMzgsIDIzNSwgMTg5LCAyMjEsIDU3LCAyMzUsIDE4OSwgMjI1LCAxNTYsIDIzNSwgMjI1LCAyMTgsIDEyNywgMjE4LCAKLSAgICAxOTYsIDI1NCwgMTY2LCAyMTgsIDEyNywgMjE4LCAxOTYsIDIzNSwgMjI1LCAxMiwgMjQzLCAyNDUsIDIyMSwgMywgMjU0LCAKLSAgICAxNjYsIDEyLCAyNDMsIDI0NSwgMjIxLCAzLCAyMzAsIDEwLCAyMSwgMjIxLCA0LCAyMjgsIDE4MCwgMjEsIDIyMSwgNCwgCi0gICAgMjE4LCAyMjMsIDIxMiwgNzksIDIxOCwgMjIzLCA3LCAzLCAxLCA3MiwgMjE4LCAyMjMsIDE2MywgMjE4LCAyMjMsIDE4MCwgCi0gICAgMjE4LCAyMjMsIDE4OSwgMjE4LCAyMjMsIDE5OCwgMjE4LCAyMjMsIDE5NSwgMjE4LCAyMjMsIDIwMCwgMjE4LCAyMjMsIDk0LCAKLSAgICA1MiwgMjE4LCAyMjMsIDIzMCwgMjUwLCAyMTgsIDIyMywgMjQ1LCA2MSwgNTIsIDIxOCwgMjIzLCA0MiwgMjI2LCAxMzEsIAotICAgIDIxOCwgMjIzLCA0NiwgMjI2LCAxMzEsIDIxOCwgMjIzLCA3LCAzLCAxLCAyMDQsIDIxOSwgMTAsIDIxMiwgNzksIDIxOSwgCi0gICAgMTAsIDExNiwgMjE5LCAxMCwgMTA5LCAyMTksIDEwLCAxNjYsIDIxOSwgMTAsIDE2MywgMjE5LCAxMCwgMTgwLCAyMTksIDEwLCAKLSAgICAxODksIDIxOSwgMTAsIDE5OCwgMjE5LCAxMCwgMTk1LCAyMTksIDEwLCAyMDAsIDIxOSwgMTAsIDk0LCA1MiwgMjE5LCAxMCwgCi0gICAgMjMwLCAyNTAsIDIxOSwgMTAsIDI0NSwgNjEsIDUyLCAyMTksIDEwLCA0MiwgMjI2LCAxMzEsIDIxOSwgMTAsIDQ2LCAyMjYsIAotICAgIDEzMSwgNywgMjE5LCAxMCwgMywgMSwgNjEsIDcsIDIxOSwgMTAsIDMsIDEsIDc0LCA3LCAyMTksIDEwLCAzLCAxLCA3NSwgNywgCi0gICAgMjE5LCAxMCwgMywgMSwgMjEzLCAxNjYsIDcsIDIxOSwgMTAsIDMsIDEsIDIyMiwgMTEzLCA3LCAyMTksIDEwLCAzLCAxLCAKLSAgICAyNDIsIDQxLCA3LCAyMTksIDEwLCAzLCAxLCAyMzUsIDI3LCA3LCAyMTksIDEwLCAzLCAxLCAxNTAsIDcsIDIxOSwgMTAsIDMsIAotICAgIDEsIDE4MywgNywgMjE5LCAxMCwgMywgMSwgMjA0LCA3LCAyMTksIDEwLCAzLCAxLCAyMjYsIDIyOSwgNywgMjE5LCAxMCwgMywgCi0gICAgMSwgMTk3LCA3LCAyMTksIDEwLCAzLCAxLCAyMTgsIDk5LCAyNDUsIDEzLCA1MiwgMjQ5LCAxNjUsIDUyLCAyNDksIDU3LCAKLSAgICA1MiwgMjQzLCAyMjEsIDI0MywgMjI0LCA1MiwgMjMyLCAyMjcsIDUyLCAyMzEsIDcsIDUyLCAyMzAsIDI5LCA1MiwgMjI2LCAKLSAgICAzOCwgNTIsIDIyMywgMjksIDUyLCAyMTMsIDIwNCwgNTIsIDE1NiwgMjIwLCAyMjksIDUyLCAyNDcsIDgxLCA1MiwgMjQ1LCAKLSAgICAxNCwgNTIsIDIzNCwgODUsIDUyLCAyMTYsIDc2LCA1MiwgMjQ2LCA1NSwgNTIsIDI0MywgMTYsIDIyNiwgNjgsIDUyLCAyMjYsIAotICAgIDM2LCA1MiwgMjQyLCA4OCwgNTIsIDI1MywgOTgsIDUyLCAyNDAsIDIxNSwgNTIsIDI1MCwgMTE5LCA1MiwgMjMyLCAyMjAsIAotICAgIDIxNiwgMjE2LCA1MiwgMjE5LCAxODgsIDUyLCAyMTcsIDE5OCwgNTIsIDIzNSwgMjM4LCAyMjMsIDI5LCA1MiwgMzcsIDQyLCAKLSAgICAyNDEsIDIzOCwgNDksIDM3LCA0NiwgMjQxLCAyMzgsIDQ5LCAzNywgMTg0LCA3MSwgMjMyLCAyNDMsIDIyNiwgMjQ0LCAzNywgCi0gICAgMjIwLCAxNzUsIDcxLCAyMzIsIDI0MywgMjI2LCAyNDQsIDM3LCAyNTMsIDI1NSwgNzYsIDQ5LCAzNywgMjQ5LCAxOTUsIDc2LCAKLSAgICA0OSwgMzcsIDQyLCA3NiwgNDksIDM3LCA0NiwgNzYsIDQ5LCAzNywgMjIzLCAxMzEsIDIyNiwgMjQ0LCAzNywgMjQ5LCAxOTUsIAotICAgIDIyMywgMTMxLCAyMjYsIDI0NCwgMzcsIDI1MywgMjU1LCAyMjMsIDEzMSwgMjI2LCAyNDQsIDM3LCAxMzMsIDE3NiwgNDksIAotICAgIDM3LCAyNDMsIDIzNywgMTc2LCA0OSwgMzcsIDI0NSwgMTA0LCAyNDksIDIyOCwgMzcsIDI0NSwgMTA0LCAyMTksIDE2NiwgCi0gICAgMzcsIDI0NSwgMTA0LCAyNDcsIDIwMCwgMzcsIDI0NSwgMTA0LCAyNDksIDIyOSwgMjUyLCA5NywgMzcsIDQyLCA0NiwgNzYsIAotICAgIDQ5LCAzNywgMjQ1LCAxMDQsIDIyMiwgMTA3LCAzNywgMjQ1LCAxMDQsIDIzNCwgMTQxLCAzNywgMjQ1LCAxMDQsIDIxNSwgCi0gICAgMTI2LCAyMjUsIDE0MSwgMjE2LCAxODMsIDM3LCAyMjMsIDIwMywgMjE5LCAyMzIsIDIyNiwgMjQ0LCAzNywgNTEsIDcxLCAKLSAgICAyMTksIDQ1LCAyMjYsIDI0NCwgMzcsIDI1NCwgOSwgODcsIDM3LCAyMTYsIDE2OSwgMjE1LCAxNTIsIDM3LCAyMTMsIDIzMiwgCi0gICAgMjUxLCA2OCwgNDksIDM3LCAxMzIsIDc2LCAyMjYsIDI0NCwgMzcsIDE4NCwgNTEsIDIxOSwgMjMyLCAyMjYsIDI0NCwgMzcsIAotICAgIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDU3LCAzNywgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDU3LCAzNywgCi0gICAgNDIsIDc2LCA1NSwgMzcsIDQ2LCA3NiwgNTUsIDM3LCAyNTMsIDEzMywgNDksIDI1NCwgMTcxLCAyMjcsIDk3LCAyNTQsIAotICAgIDE1NiwgMjExLCAyMTEsIDIxNywgMTQ5LCAyMTksIDE5LCAxODcsIDYsIDI1MCwgMjUyLCAyNDgsIDIyLCAyNTAsIDExMiwgCi0gICAgMjUwLCAxMDksIDIzMiwgMjQzLCA4NywgMjUwLCAxNzIsIDIyNywgOTcsIDI1MCwgMjEyLCAyMTUsIDE1OSwgMjQ1LCAxNSwgCi0gICAgMjQ5LCAxMzAsIDIyMiwgMTA0LCAyNDgsIDIyLCAyNDQsIDE0NywgMTEzLCAzLCAyNDMsIDE3NywgMTEzLCA2LCAyNDIsIDQxLCAKLSAgICAyNTEsIDE0MiwgNiwgMjQyLCA0MSwgMTg3LCA2LCAyNDIsIDQxLCAyMjUsIDE2OSwgMjQ5LCAxMzAsIDIyNSwgMTY5LCAyNDksIAotICAgIDEzMSwgMTEwLCAxMTcsIDIyNSwgMjQwLCAxMTMsIDYsIDcyLCAyNTEsIDE0MiwgNiwgNzIsIDExMywgNiwgMTUwLCAxMTMsIAotICAgIDMsIDE1MCwgMjMzLCAxNzEsIDU0LCAyNTIsIDYwLCA4NywgMTg3LCA2LCAyMDQsIDIyOCwgNTIsIDUyLCAyMTksIDIxOCwgCi0gICAgMjI0LCAxMiwgMjQ5LCAxMDEsIDExMywgNiwgMjI2LCAyMjksIDE4NywgNiwgMjI2LCAyMjksIDE4NywgNiwgMjI0LCAyNDAsIAotICAgIDExMywgNiwgMTQ5LCAyNTEsIDE0MiwgNiwgMTQ5LCAxODcsIDYsIDE0OSwgMjI1LCA3NiwgMjE4LCAyMSwgMjIzLCAyMTQsIAotICAgIDIyMSwgNTMsIDc3LCAyMTcsIDIxMCwgNTIsIDIxNiwgMjEwLCAxNTIsIDUyLCAyMTQsIDIxNywgMTg3LCA2LCAyMTIsIDE1MiwgCi0gICAgMjI3LCAxLCA1MiwgMjI3LCA4NywgNTIsIDIzNSwgMTkxLCAyMjcsIDg3LCA1MiwgMjUxLCAxNDIsIDYsIDIxMiwgMTUyLCAKLSAgICAyMTYsIDU4LCAyNSwgMywgMSwgMjM1LCAxODMsIDIzNCwgMTc5LCA1MiwgMjU0LCAxNiwgNTIsIDExMywgNiwgMjUzLCA3NCwgCi0gICAgMjUxLCAxNDIsIDYsIDI1MCwgMjUyLCAyNDUsIDMzLCA4NywgMTEzLCAzLCA3NCwgMTEzLCA2LCA3NCwgMTEzLCA2LCAyNDQsIAotICAgIDIzMCwgMjE2LCA1OCwgNiwgMjQ0LCAyMzAsIDExMywgNiwgMTgzLCAxMTMsIDMsIDc1LCAxMDYsIDg3LCAyNTEsIDIwNiwgCi0gICAgODcsIDI0MiwgMTc4LCA4NywgMjQ4LCAxMzUsIDg3LCAyMzUsIDIyOSwgMjE5LCAyMTYsIDIyMywgODksIDYsIDIyNCwgMjQwLCAKLSAgICAyNDQsIDE1MCwgNTIsIDE4NywgMywgMjI1LCAyNDAsIDE4NywgMywgMjQzLCA4MywgMTg3LCA2LCAyNDMsIDgzLCAxODcsIDYsIAotICAgIDIyNSwgMjQwLCAxODcsIDIzMCwgOTcsIDIxOCwgMjQxLCAyMTYsIDU4LCAzNSwgNiwgMjQzLCAxNzcsIDIxNiwgNTgsIDM1LCAKLSAgICA2LCAxNTAsIDIyMywgMjAyLCAzNSwgNiwgMTUwLCAyMTYsIDU4LCAzNSwgNiwgMjEzLCAxMDUsIDE4NywgMzIsIDYsIDI0OSwgCi0gICAgMywgMTg3LCAzMiwgMywgMjQ5LCAzLCAxODcsIDMyLCAzLCA3NCwgMTg3LCAzMiwgMywgNzIsIDE4NywgMzIsIDMsIDIzNSwgCi0gICAgMTQyLCAyMjUsIDU0LCAyMzIsIDI0MiwgMjE2LCA1OCwgMjU0LCAzNSwgMjI2LCA1OCwgNTIsIDI1NCwgODgsIDIxNiwgNTgsIAotICAgIDMsIDI0NCwgMjMwLCAxNiwgMzEsIDIyMiwgMTY3LCAyMTksIDIxNiwgMjE0LCA5NywgMjQzLCAyMjgsIDEyMiwgMjIxLCAzOSwgCi0gICAgMjE0LCA5NywgMjQzLCAyMjgsIDEyMiwgMjI5LCAyNSwgMjE0LCA5NywgMjQzLCAyMjgsIDEyMiwgMjE3LCAxOTQsIDIxNCwgCi0gICAgOTcsIDI0MywgMjI4LCAxMjIsIDIxNywgMTIxLCAyMTQsIDk3LCAyNDMsIDIyOCwgMTE3LCAyMTcsIDExOSwgMjE0LCA5NywgCi0gICAgMjQzLCAyMjgsIDEyMiwgMjQ0LCA4NiwgMjE0LCA5NywgMjQzLCAyMjgsIDExNywgMjQ0LCA4NSwgMjE0LCA5NywgMjQzLCAKLSAgICAyMjgsIDEzMywgMjQ0LCA4NSwgMjE0LCA5NywgMjQzLCAyMjgsIDI0MywgMjM3LCAyNDQsIDg1LCAyMTQsIDk3LCAyNDMsIAotICAgIDIyOCwgMTIyLCAyMjAsIDQzLCAyMTQsIDk3LCAyNDMsIDIyOCwgMjQ0LCA1MCwgMjIwLCA0MSwgMjE0LCA5NywgMjQzLCAKLSAgICAyMjgsIDEyMiwgMjQ1LCAxNDUsIDIxNCwgOTcsIDI0MywgMjI4LCAxMzMsIDI0NSwgMTQzLCAyMTQsIDk3LCAyNDMsIDIyOCwgCi0gICAgMjQ0LCA1MCwgMjQ1LCAxNDMsIDIxNCwgOTcsIDI0MywgMjI4LCAyMjEsIDQzLCAyNDUsIDE0MywgMjQzLCAyMjgsIDIyOCwgCi0gICAgNTMsIDExNiwgMjIzLCAxMDAsIDIyOCwgNTQsIDExNiwgMjIzLCAxMDAsIDIyOCwgNTQsIDEwOSwgMjIzLCAxMDAsIDIyOCwgCi0gICAgNTQsIDE2NiwgMjIzLCAxMDAsIDIyOCwgNTQsIDE2MywgMjIzLCAxMDAsIDIyOCwgNTQsIDE4MCwgMjIzLCAxMDAsIDIyOCwgCi0gICAgNTQsIDE4OSwgMjIzLCAxMDAsIDIyOCwgNTQsIDE5OCwgMjIzLCAxMDAsIDIyOCwgNTQsIDE5NSwgMjIzLCAxMDAsIDIyOCwgCi0gICAgNTQsIDIwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIDIxNywgMjAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ1LCAxMjQsIDIyMywgCi0gICAgMTAwLCAyMjgsIDU0LCAyMTYsIDQxLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ0LCA4MywgMjIzLCAxMDAsIDIyOCwgNTQsIAotICAgIDEyMiwgMjQwLCAyMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDQsIDUwLCAyNDAsIDIwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIAotICAgIDEyMiwgMjE3LCAxMDAsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAxMTYsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAxMDksIDMsIAotICAgIDIyMywgMTAwLCAyMjgsIDU0LCAxNjYsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAxNjMsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAKLSAgICAxODAsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAxODksIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAxOTgsIDMsIDIyMywgMTAwLCAKLSAgICAyMjgsIDU0LCAxOTUsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAyMDAsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAyMTcsIDIwMCwgCi0gICAgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDI0NSwgMTI0LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjE2LCA0MSwgMywgMjIzLCAKLSAgICAxMDAsIDIyOCwgNTQsIDI0NCwgODMsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAxMjIsIDI0MCwgMjAwLCAzLCAyMjMsIDEwMCwgCi0gICAgMjI4LCA1NCwgMjQ0LCA1MCwgMjQwLCAyMDAsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAxMjIsIDIxNywgMTAwLCAyMjMsIAotICAgIDEwMCwgMjI4LCA1NCwgMTIyLCAyMTcsIDEwMSwgMjUwLCAyNTMsIDI0OSwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDI0NCwgCi0gICAgNTAsIDIxNywgMTAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjE3LCAyMDEsIDIxNywgMTAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMjIzLCAyMDIsIDEyMiwgMjQwLCAyMDAsIDcsIDMsIDEsIDIyMywgMjAyLCAyNTAsIDI1MiwgMjIzLCAxMDAsIDIyOCwgNTQsIAotICAgIDIyMCwgNTMsIDIzMywgMTAxLCAxNywgMjIzLCAxMDAsIDIyOCwgNTQsIDI0NCwgODQsIDI0NSwgMTgyLCAxNywgMjIzLCAKLSAgICAxMDAsIDIyOCwgNTQsIDI0NCwgODQsIDIxNywgMTAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTIyLCAyNDAsIDIwMSwgMjE3LCAKLSAgICAxMDAsIDIxNCwgOTcsIDI0MywgMjI4LCAyMTIsIDgwLCAyMTcsIDExOSwgMTMyLCA2OCwgMjE1LCAxMjQsIDY4LCA5NSwgNjgsIAotICAgIDI0NiwgNTgsIDY4LCA0MiwgNDYsIDY4LCAxMTQsIDExOSwgNjgsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNjgsIDIyOCwgMTY3LCAKLSAgICAyNDUsIDE3NiwgNjgsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNjgsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNjgsIDEzMiwgNzYsIDIsIAotICAgIDkwLCA5NSwgNzYsIDIsIDkwLCAxMzIsIDIxNCwgMjAsIDY4LCA5NSwgMjE0LCAyMCwgNjgsIDEzMiwgMTE3LCAyNDEsIDIxOCwgCi0gICAgNjgsIDIxNSwgMTI0LCAxMTcsIDI0MSwgMjE4LCA2OCwgOTUsIDExNywgMjQxLCAyMTgsIDY4LCAyNDYsIDU4LCAxMTcsIAotICAgIDI0MSwgMjE4LCA2OCwgMTMyLCA3NiwgMiwgMjE4LCAyNywgOTUsIDc2LCAyLCAyMTgsIDI3LCAxMzIsIDc2LCAyNDMsIDIxMywgCi0gICAgMTM0LCAyMTUsIDEyNCwgNzYsIDI0MywgMjEzLCAxMzQsIDk1LCA3NiwgMjQzLCAyMTMsIDEzNCwgMjQ2LCA1OCwgNzYsIAotICAgIDI0MywgMjEzLCAxMzQsIDExNCwgMTE5LCA3NiwgMiwgMjUyLCA0NywgMTMyLCA3NiwgMiwgMTAxLCA5NSwgNzYsIDIsIDEwMSwgCi0gICAgMTMyLCA3NiwgMiwgMjMyLCAxNzcsIDk1LCA3NiwgMiwgMjMyLCAxNzcsIDQyLCA0NiwgMjE0LCAyMCwgNjgsIDQyLCA0NiwgCi0gICAgNzYsIDIsIDkwLCAyNDYsIDU4LCAyMTIsIDI4LCA2OCwgMjE1LCAxMjQsIDc2LCAyLCAyMTcsIDMwLCAyMzMsIDYxLCAyMTUsIAotICAgIDEyNCwgNzYsIDIsIDIxNywgMzAsIDIyMywgMTM4LCAyNDYsIDU4LCA3NiwgMiwgMjE3LCAzMCwgMjMzLCA2MSwgMjQ2LCA1OCwgCi0gICAgNzYsIDIsIDIxNywgMzAsIDIyMywgMTM4LCA5NSwgNzYsIDIsIDI0OSwgMTAwLCAyNDYsIDU3LCAyNDYsIDU4LCA3NiwgMiwgCi0gICAgMjQ5LCAxMDAsIDIzMywgNjEsIDI1MywgMjU1LCAyMTYsIDIyNywgMjIxLCA3MywgNjgsIDI0OSwgMTk1LCAyMTYsIDIyNywgCi0gICAgMjIxLCA3MywgNjgsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNzYsIDIxMSwgMjExLCAxODQsIDEzNCwgMTMyLCA3NiwgMjExLCAKLSAgICAyMTEsIDI1MiwgNjAsIDExMCwgOTUsIDc2LCAyMTEsIDIxMSwgMTM0LCAyNTMsIDI1NSwgMjI3LCA0MCwgMjQ5LCAyMjksIAotICAgIDY4LCAyNDksIDE5NSwgMjI3LCA0MCwgMjQ5LCAyMjksIDY4LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDIxNSwgMTIzLCAKLSAgICAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNTcsIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCAyMjMsIDEzOCwgCi0gICAgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDIzMywgNjEsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAyMTUsIDEyMywgOTUsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNTcsIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDIyMywgMTM4LCAyNDYsIDU4LCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCAyMzMsIDYxLCA5NSwgNzYsIDExMCwgMTMyLCA2OCwgMjE1LCAxMjQsIDc2LCAxMzIsIDY1LCAKLSAgICAyNDYsIDU4LCA2OCwgMTMyLCA3NiwgMTEwLCA5NSwgNjgsIDEzMiwgMjI2LCAxOTcsIDI1MywgMTYyLCAyMTUsIDEyNCwgCi0gICAgMjI2LCAxOTcsIDI1MywgMTYyLCA5NSwgMjI2LCAxOTcsIDI1MywgMTYyLCAyNDYsIDU4LCAyMjYsIDE5NywgMjUzLCAxNjIsIAotICAgIDEzMiwgMjQxLCAyMzgsIDExMCwgOTUsIDI0MSwgMjM3LCA5NSwgMjQxLCAyMzgsIDExMCwgMTMyLCAyNDEsIDIzNywgMTMyLCAKLSAgICA1MSwgNzYsIDIsIDkwLCA0MiwgNDYsIDUxLCA3NiwgMiwgOTAsIDk1LCA1MSwgNzYsIDIsIDkwLCAxMzIsIDUxLCA2OCwgCi0gICAgMjE1LCAxMjQsIDUxLCA2OCwgOTUsIDUxLCA2OCwgMjQ2LCA1OCwgNTEsIDY4LCA0MiwgNDYsIDUxLCA2OCwgMTE0LCAxMTksIAotICAgIDUxLCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA1MSwgNjgsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNTEsIDY4LCAyMTksIDIxNSwgCi0gICAgMjQ1LCAxNzYsIDUxLCA2OCwgMjE5LCAyMTUsIDIxMywgMjUwLCA1MSwgNjgsIDEzMiwgMjE2LCAxNjksIDY4LCA5NSwgMjE2LCAKLSAgICAxNjksIDY4LCAxMzIsIDIxOSwgMTYyLCA2OCwgOTUsIDIxOSwgMTYyLCA2OCwgMjE1LCAxMjQsIDc2LCAyLCA1MSwgOTAsIAotICAgIDI0NiwgNTgsIDc2LCAyLCA1MSwgOTAsIDEzMiwgMjQ4LCAxMDAsIDY4LCAyMTUsIDEyNCwgMjQ4LCAxMDAsIDY4LCA5NSwgCi0gICAgMjQ4LCAxMDAsIDY4LCAyNDYsIDU4LCAyNDgsIDEwMCwgNjgsIDEzMiwgNzYsIDIxMSwgMjExLCAxMzQsIDk1LCA3NiwgMjExLCAKLSAgICAyMTEsIDEzNCwgMTMyLCA2NywgNjgsIDIxNSwgMTI0LCA2NywgNjgsIDk1LCA2NywgNjgsIDI0NiwgNTgsIDY3LCA2OCwgCi0gICAgMjE1LCAxMjQsIDY3LCA3NiwgMjQzLCAyMTMsIDEzNCwgMjE1LCAxMjQsIDY3LCA3NiwgMjI3LCA2MywgMjI2LCA4OSwgMjE1LCAKLSAgICAxMjQsIDY3LCA3NiwgMjI3LCA2MywgMjI2LCA5MCwgMiwgMTk5LCAxMzQsIDIxNSwgMTI0LCA2NywgNzYsIDIyNywgNjMsIAotICAgIDIyNiwgOTAsIDIsIDcxLCAxMzQsIDIxNSwgMTI0LCA2NywgNTEsIDY4LCAyMTUsIDEyNCwgNjcsIDUxLCA3NiwgMjI3LCA2MywgCi0gICAgMjI2LCA4OSwgOTUsIDY3LCA3NiwgMjQzLCAyMTMsIDIxNCwgNDAsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNzYsIDIxMSwgMjExLCAKLSAgICAyNDksIDk5LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDc2LCAyMTEsIDIxMSwgMjQ5LCA5OSwgMTE0LCAxMTksIDY3LCA2OCwgNDYsIAotICAgIDc2LCAyLCAzLCAyNDksIDIyOCwgMjQ2LCA1OCwgNzYsIDEzMiwgNjUsIDIxNSwgMTI0LCA2OCwgMTMzLCA5NSwgMjUzLCAKLSAgICAxNjIsIDEzMiwgNzYsIDIsIDcxLCA5MCwgOTUsIDc2LCAyLCA3MSwgOTAsIDQyLCA0NiwgNzYsIDIsIDcxLCA5MCwgMTMyLCAKLSAgICA3NiwgMiwgNTEsIDcxLCA5MCwgOTUsIDc2LCAyLCA1MSwgNzEsIDkwLCA0MiwgNDYsIDc2LCAyLCA1MSwgNzEsIDkwLCAxMzIsIAotICAgIDIyNywgMzgsIDY4LCA5NSwgMjI3LCAzOCwgNjgsIDQyLCA0NiwgMjI3LCAzOCwgNjgsIDMxLCAyNTQsIDYzLCAyNDksIDE1MywgCi0gICAgMjI2LCAxMjUsIDI0NywgMTg1LCAyMTcsIDE0MCwgMjQ0LCAyNTAsIDIxNywgMTQwLCAyNDcsIDkyLCAyMjgsIDE2MywgMjQ0LCAKLSAgICAyNTEsIDI0NSwgMTEwLCAyMjEsIDQ4LCAyMzUsIDI0MSwgMjMwLCAzOSwgMjQ1LCAxMjcsIDIyNywgOTcsIDIyOCwgMTYzLCAKLSAgICAyNTQsIDMzLCAyNDUsIDEyNywgMjI3LCA5NywgMywgMjQ1LCAxMjcsIDIyNywgOTcsIDI0OSwgMTI1LCAyNTMsIDE1MywgCi0gICAgMjMxLCAxMjYsIDI0NywgOTIsIDIyOCwgMTYzLCAyNDksIDEyNywgMjUzLCAxNTMsIDIzMSwgMTI2LCAzLCAyNDksIDEyNSwgCi0gICAgMjUzLCAxNTMsIDIzMSwgMTI2LCAyNDUsIDEwMSwgNjUsIDIyNSwgNTYsIDIzMCwgOTcsIDIyNSwgNjMsIDIzMCwgOTcsIAotICAgIDI0OSwgMTA0LCAyMzAsIDk3LCAyMTgsIDI0MSwgMjMwLCAyNTEsIDUyLCAyMzAsIDI0OSwgNTIsIDYyLCAyMjUsIDE1NiwgCi0gICAgMjQ3LCAxMjEsIDIyMCwgMjMsIDIyMSwgNDksIDIzMCwgMjUwLCAyNTMsIDEzMywgMjI3LCAzMywgMjIzLCAxMzEsIDIyNywgCi0gICAgMzMsIDI1MSwgNDMsIDIyNywgMzMsIDQxLCAyMjMsIDk1LCAyNDksIDUwLCAyMjMsIDk1LCAyNDMsIDIzMCwgMjIzLCA5NSwgCi0gICAgMjI1LCA1MiwgMTA4LCAyMzUsIDIzMSwgNDYsIDI1NCwgMTgsIDI1NCwgMTgsIDIzMSwgMTUzLCAyNTQsIDE4LCAyMTksIAotICAgIDE4NywgMjU0LCAxOCwgMjQ3LCAxMjMsIDI0NywgOTIsIDIyOCwgMTYzLCAyNDcsIDEyNiwgMjI2LCAxMzYsIDEwOCwgMjI4LCAKLSAgICAxNjMsIDIyNiwgMTM2LCAxMDgsIDIzMiwgMTk5LCAyNTQsIDI3LCAyMzIsIDE5OSwgMjI3LCAyNCwgMjM1LCAxOTUsIDIxNSwgCi0gICAgMTQ2LCAyMzUsIDIwOCwgNTEsIDIzNSwgMjA4LCAyMTYsIDE2OSwgMjM1LCAyMDgsIDI0OSwgMTIxLCAyMzUsIDIwOCwgMjE4LCAKLSAgICAyMTMsIDIzNSwgMjA4LCAyMTQsIDExMCwgMjM1LCAyMDgsIDI0OSwgMTk1LCAyMzUsIDIwOCwgMjQ5LCAxOTUsIDI0OSwgCi0gICAgMTIxLCAyMzUsIDIwOCwgMjUzLCAyNTUsIDI0OSwgMTIxLCAyMzUsIDIwOCwgMjE3LCAxMzksIDI1MSwgMjQzLCAyMjQsIDI5LCAKLSAgICAyMjUsIDUzLCA2MiwgMjMwLCAyNTAsIDI0NSwgMCwgMjQzLCAyMiwgMjI1LCA1MywgMjQxLCA0MywgMjE3LCA0MywgMjI3LCAKLSAgICAzMywgMjIzLCAyMDIsIDIxNywgNDIsIDIzNSwgMTkxLCAyMzMsIDg5LCAxOTcsIDIyMCwgODMsIDIxNCwgMTksIDIxMywgCi0gICAgMTg4LCAyMjUsIDYzLCAyMjgsIDE2MywgMjE3LCA0MiwgMjMwLCAyNTEsIDIxNywgNDIsIDI1MywgMTI2LCAxMjMsIDEwOCwgCi0gICAgMjI4LCAxNjMsIDI1MywgMTI2LCAxMjMsIDEwOCwgMjUzLCAyMTgsIDEyMywgMTA4LCAyNTMsIDIxOCwgMjUxLCAxNywgMjI4LCAKLSAgICAxNjMsIDI1NCwgMTY1LCAxMjMsIDEwOCwgMjI5LCAxODEsIDI1MywgMjE4LCAyMjgsIDE3MCwgMjU0LCAxNjUsIDEyMywgCi0gICAgMTA4LCAyNTQsIDU3LCAxMjMsIDEwOCwgMjI4LCAxNjMsIDI1NCwgNTcsIDEyMywgMTA4LCAyNTQsIDU3LCAxMjMsIDE2NywgCi0gICAgMTIzLCAxMDgsIDIxNiwgMTY5LCAyMTcsIDQyLCAyNTQsIDY0LCAxMjMsIDEwOCwgMjQ1LCA1NywgMTA4LCAyNDMsIDIxLCAKLSAgICAyNDUsIDU3LCAxMDgsIDI0NywgMTg2LCAyNTEsIDIwMCwgMjUzLCAyMjAsIDIxNywgMTQ5LCAyMzIsIDI1MCwgMjQzLCAyMSwgCi0gICAgMTIzLCAxMDgsIDI1MywgMjE4LCAxMjMsIDIxMSwgMjExLCAxNjcsIDIxNywgMTQ5LCAyMzYsIDEwLCAyMjcsIDk3LCAyMzYsIAotICAgIDEwLCA2NSwgMTY3LCAyNTMsIDIxOCwgMTIzLCAxMDgsIDI0OSwgMTY1LCAyNDUsIDYwLCAyNDUsIDYxLCAyNDksIDE2NCwgCi0gICAgMjIzLCAxMzEsIDIzNSwgMjUyLCAxMjMsIDEwOCwgMjIzLCAxMzEsIDEyMywgMTA4LCAyNDksIDkzLCAxMDgsIDI0NSwgMzIsIAotICAgIDI0NSwgNTksIDEwOCwgMjE5LCA5NiwgMjQ1LCA2MCwgMjQ4LCA2LCAxMjMsIDEwOCwgMTIzLCAyMTEsIDIxMSwgMjUxLCA3LCAKLSAgICAyNDgsIDIzLCAyMzEsIDE1MywgMjUxLCA2LCAyMjQsIDE1NiwgMTIzLCAxMDgsIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjQwLCAKLSAgICA5NywgMTA4LCAyMjgsIDE2MywgMjQwLCA5NywgMTA4LCAyMTksIDQ5LCAyNDUsIDU3LCAxMDgsIDIzMywgMzksIDE2NywgCi0gICAgMTIzLCAxMDgsIDI0MiwgMTA3LCAxNjcsIDEyMywgMTA4LCAyMzMsIDM5LCAxMTAsIDEyMywgMTA4LCAyNDIsIDEwNywgMTEwLCAKLSAgICAxMjMsIDEwOCwgMjMzLCAzOSwgMjUxLCAxNywgMjI4LCAxNjMsIDEyMywgMTA4LCAyNDIsIDEwNywgMjUxLCAxNywgMjI4LCAKLSAgICAxNjMsIDEyMywgMTA4LCAyMzAsIDE2NywgMjMzLCAzOCwgMjMwLCAxNjcsIDI0MiwgMTA2LCAyNTEsIDIwMCwgMjI4LCAxNjMsIAotICAgIDI0NSwgNTcsIDEwOCwgMjI4LCAxNjMsIDIzMywgMzgsIDIyOCwgMTYzLCAyNDIsIDEwNiwgMjI5LCAxODEsIDIzMywgMzksIAotICAgIDIyOCwgMTcwLCAxMjMsIDEwOCwgMjI5LCAxODEsIDI0MiwgMTA3LCAyMjgsIDE3MCwgMTIzLCAxMDgsIDIzMywgMzksIDE2NywgCi0gICAgMjQ1LCA1NywgMTA4LCAyNDIsIDEwNywgMTY3LCAyNDUsIDU3LCAxMDgsIDIyOSwgMTgxLCAyMzMsIDM5LCAyMjgsIDE3MCwgCi0gICAgMjQ1LCA1NywgMTA4LCAyMjksIDE4MSwgMjQyLCAxMDcsIDIyOCwgMTcwLCAyNDUsIDU3LCAxMDgsIDIzMywgMzksIDE2NywgCi0gICAgMjQyLCAxMDYsIDI0MiwgMTA3LCAxNjcsIDIzMywgMzgsIDIyOSwgMTgxLCAyMzMsIDM5LCAyMjgsIDE3MCwgMjQyLCAxMDYsIAotICAgIDIyOSwgMTgxLCAyNDIsIDEwNywgMjI4LCAxNzAsIDIzMywgMzgsIDIyNSwgODIsIDIxOSwgMCwgMjI1LCA4MywgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjE5LCAxLCAxNjcsIDEyMywgMTA4LCAyMjUsIDgzLCAxNjcsIDI0NSwgNTcsIDEwOCwgMjE5LCAxLCAxNjcsIAotICAgIDI0NSwgNTcsIDEwOCwgMjQ3LCA5MiwgMjI4LCAxNjMsIDIyNSwgODUsIDI0NywgOTIsIDIyOCwgMTYzLCAyMTksIDIsIDIxOSwgCi0gICAgOSwgMjI3LCA5NywgMjE4LCAyMjIsIDIyNywgOTcsIDIyOCwgMTYzLCAxMTgsIDIxOSwgOSwgMjI3LCA5NywgMjI4LCAxNjMsIAotICAgIDExOCwgMjE4LCAyMjIsIDIyNywgOTcsIDIxOSwgOSwgNjUsIDE2NywgMTIzLCAxMDgsIDIxOCwgMjIyLCA2NSwgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjI5LCAxODEsIDExOCwgMjE5LCA5LCA2NSwgMjI4LCAxNzAsIDEyMywgMTA4LCAyMjksIDE4MSwgMTE4LCAKLSAgICAyMTgsIDIyMiwgNjUsIDIyOCwgMTcwLCAxMjMsIDEwOCwgMjE5LCA5LCA2NSwgMiwgMjI4LCAxNjMsIDEyMywgMTA4LCAyMTgsIAotICAgIDIyMiwgNjUsIDIsIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjMwLCAxNTEsIDIzMCwgMTUyLCAyMzAsIDE1MywgMjMwLCAxNTIsIAotICAgIDIxNSwgMTQ2LCA0MSwgMjM2LCAxMCwgMjI3LCA5NywgNDEsIDIyNywgMTcsIDIyNywgOTcsIDQxLCAyMzYsIDEwLCA2NSwgCi0gICAgMTY3LCAxMjMsIDEwOCwgNDEsIDIyNywgMTcsIDY1LCAxNjcsIDEyMywgMTA4LCA0MSwgMjUwLCAxODMsIDQxLCAyNDksIDQzLCAKLSAgICAzNiwgMjI1LCAxNTYsIDM2LCAyMzAsIDI1MCwgMzYsIDIxNywgMzgsIDM2LCAyNDcsIDEyMSwgMjIwLCAyMywgMzYsIDYyLCAKLSAgICAyMjcsIDMzLCAzNiwgMjIzLCAxMzEsIDIyNywgMzMsIDM2LCAyNTMsIDEzMywgMjI3LCAzMywgMzYsIDI0NSwgNjAsIDM2LCAKLSAgICAyNDgsIDEwMSwgOTEsIDIyNSwgMTU2LCA5MSwgMjMwLCAyNTAsIDkxLCAyMTcsIDM4LCA5MSwgNjIsIDIyNywgMzMsIDQ2LCAKLSAgICAyMTgsIDM2LCA0MiwgMjE4LCAzNiwgMTE5LCAyMTgsIDM2LCAxMTQsIDIxOCwgMzYsIDI1MywgMTM2LCAyMzAsIDIyNiwgCi0gICAgMjE2LCAxNDksIDI0MywgMjUwLCAyMTYsIDE2OSwgNzEsIDI1MiwgNjAsIDQ2LCAyMTYsIDU3LCA1MSwgNzEsIDI1MiwgNjAsIAotICAgIDUxLCA0NiwgMjE2LCA1NywgMjQ3LCA5MiwgMjI4LCAxNjMsIDIyNSwgNDgsIDIyOCwgMTYzLCAyMTYsIDE0OSwgMjQ3LCA5MiwgCi0gICAgMjI4LCAxNjMsIDI0MywgMjUxLCAyMjksIDE4MywgNTEsIDcxLCAyNTIsIDYwLCA1MSwgNDYsIDIxNiwgNTcsIDIyNSwgODMsIAotICAgIDIxNSwgMTU0LCAyMjMsIDI0MSwgMjE5LCAxLCAyMTUsIDE1NCwgMjIzLCAyNDEsIDIyOCwgMTY4LCAyMTksIDIyLCAyMjcsIAotICAgIDk3LCAyNDksIDEyNSwgMjUzLCAxNTMsIDIyOCwgMTY4LCAyMTksIDIxLCAyMjgsIDE2OCwgMjE5LCAyMiwgNjUsIDE2NywgCi0gICAgMTIzLCAxMDgsIDI0OSwgMTI1LCAyNTMsIDE1MywgMjI4LCAxNjgsIDIxOSwgMjIsIDE2NywgMTIzLCAxMDgsIDIyNywgMTcsIAotICAgIDIyNywgOTcsIDIzNiwgMTAsIDIyNywgOTcsIDIzMCwgMTU3LCAyNDEsIDE4NSwgMjQ5LCAxMzYsIDIzMSwgMjAwLCAyMzUsIAotICAgIDIwNSwgMjEzLCAxMzMsIDIzMCwgMjIsIDIyOCwgMTY5LCA0NiwgMjU0LCAxOSwgMiwgMjUzLCAxOTUsIDQ2LCAyMTYsIDE4MywgCi0gICAgMjMwLCA5NywgMjMyLCAxOTksIDI1NCwgMjcsIDIzMCwgOTcsIDIzMiwgMTk5LCAyMjcsIDI0LCAyMzAsIDk3LCAyMzUsIAotICAgIDE5NSwgMjMwLCA5NywgMjE1LCAxNDYsIDI0NywgMjAxLCAyMjcsIDMzLCA2MiwgMjI3LCAzMywgMjE5LCA5NiwgMjI3LCAzMywgCi0gICAgMjQ3LCAxMjEsIDIxNywgMzgsIDI1MSwgOTAsIDQyLCAyMjgsIDE2OCwgMjQ0LCAxNDksIDIyMSwgNjksIDIyNSwgNjMsIDQ2LCAKLSAgICAyMjgsIDE2OCwgMjQ0LCAxNDksIDIyMSwgNjksIDIyNSwgNjMsIDQyLCAyMjEsIDY5LCAyMjUsIDYzLCA0NiwgMjIxLCA2OSwgCi0gICAgMjI1LCA2MywgMjIzLCAyMDIsIDIxNywgNDMsIDI0NSwgNjAsIDI0OSwgNDAsIDIzMiwgMTk5LCAyMjcsIDI0LCAyNDksIDQwLCAKLSAgICAyMzIsIDE5OSwgMjU0LCAyNywgNTEsIDIxOSwgOCwgNTEsIDIxOCwgMjIxLCA1MSwgMjM1LCAxOTUsIDUxLCAyMTUsIDE0NiwgCi0gICAgMjI1LCAxNzksIDEyMywgMjQsIDIyNiwgMTM2LCAxMDgsIDIzMywgMzksIDIsIDI0NywgNzQsIDI0MiwgMTA3LCAyLCAyNDcsIAotICAgIDc0LCAyMTQsIDE2NCwgMjMwLCAxNjcsIDIzMywgMzgsIDIxNCwgMTY0LCAyMzAsIDE2NywgMjQyLCAxMDYsIDIzMywgMzksIAotICAgIDEyMywgMjExLCAyMTEsIDE2NywgMjQyLCAxMDYsIDI0MiwgMTA3LCAxMjMsIDIxMSwgMjExLCAxNjcsIDIzMywgMzgsIDEyMywgCi0gICAgMjExLCAyMTEsIDE2NywgMjMzLCAzOCwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNiwgMTIzLCAyMTEsIDIxMSwgMTY3LCAKLSAgICAyMjUsIDgyLCAxMjMsIDIxMSwgMjExLCAxNjcsIDIxOSwgMCwgMjQ3LCA5MiwgMjI4LCAxNjMsIDIyNSwgODYsIDE2NywgCi0gICAgMjQ1LCA2MiwgMjQ3LCA5MiwgMjI4LCAxNjMsIDIxOSwgMywgMTY3LCAyNDUsIDYyLCAyMjgsIDE2MywgNDEsIDIzNiwgMTAsIAotICAgIDY1LCAxNjcsIDEyMywgMTA4LCAyMjgsIDE2MywgNDEsIDIyNywgMTcsIDY1LCAxNjcsIDEyMywgMTA4LCA0MSwgMjM2LCAxMCwgCi0gICAgNjUsIDE2NywgMjI4LCAxNjMsIDEyMywgMTA4LCA0MSwgMjI3LCAxNywgNjUsIDE2NywgMjI4LCAxNjMsIDEyMywgMTA4LCAKLSAgICAyMzMsIDM5LCAyNTEsIDE3LCAyMjgsIDE2MywgMjQ1LCA1NywgMTA4LCAyNDIsIDEwNywgMjUxLCAxNywgMjI4LCAxNjMsIAotICAgIDI0NSwgNTcsIDEwOCwgMjI1LCA4MywgMjUxLCAxNywgMjI4LCAxNjMsIDI0NSwgNTcsIDEwOCwgMjE5LCAxLCAyNTEsIDE3LCAKLSAgICAyMjgsIDE2MywgMjQ1LCA1NywgMTA4LCAyMjgsIDE2MywgMjI4LCAxNjgsIDIxOSwgMjIsIDIyNywgOTcsIDI0NywgOTIsIAotICAgIDIyOCwgMTYzLCAyNDksIDEyNywgMjUzLCAxNTMsIDIyOCwgMTY4LCAyMTksIDIxLCAyMjgsIDE2MywgMjI4LCAxNjgsIDIxOSwgCi0gICAgMjIsIDY1LCAxNjcsIDEyMywgMTA4LCAyNDcsIDkyLCAyMjgsIDE2MywgMjQ5LCAxMjcsIDI1MywgMTUzLCAyMjgsIDE2OCwgCi0gICAgMjE5LCAyMiwgMTY3LCAyNDUsIDYyLCA3MSwgMjQ1LCAxMjAsIDIzMSwgMzUsIDE5OSwgMjQ1LCAxMjAsIDExNCwgNDYsIAotICAgIDI0NywgMjA3LCAyNDUsIDEyMCwgMTE5LCA0NiwgMjQ3LCAyMDcsIDI0NSwgMTIwLCAyNDUsIDEyNywgNjUsIDIsIDE4NCwgCi0gICAgMTk5LCA5MCwgMjQ1LCAxMjcsIDY1LCAyLCA3MSwgMjUyLCA2MCwgMjUzLCAxMjMsIDI0NSwgMTAxLCA2NSwgMTk5LCA5MCwgCi0gICAgMywgMjQ1LCAxMjcsIDY1LCAyLCA3MSwgMjUyLCA2MCwgMjUzLCAxMjMsIDI0NSwgMTAxLCA2NSwgMTk5LCA5MCwgMjQ1LCAKLSAgICAxMjcsIDY1LCAyLCA2MiwgNDksIDI0NSwgMTI3LCA2NSwgMiwgMjI2LCAyNDcsIDMsIDI0NSwgMTI3LCA2NSwgMiwgMjI2LCAKLSAgICAyNDcsIDI0NSwgMTI3LCA2NSwgMiwgMjE1LCAxNTMsIDI0NSwgMTI3LCA2NSwgMiwgMTE3LCAxOTksIDIxOSwgMzIsIDI0OSwgCi0gICAgMTI1LCAyLCAxODQsIDE5OSwgOTAsIDI0OSwgMTI1LCAyLCA3MSwgMjUyLCA2MCwgMjUzLCAxMjMsIDI0NSwgMTAxLCA2NSwgCi0gICAgMTk5LCA5MCwgMywgMjQ5LCAxMjUsIDIsIDcxLCAyNTIsIDYwLCAyNTMsIDEyMywgMjQ1LCAxMDEsIDY1LCAxOTksIDkwLCAKLSAgICAyNDksIDEyNSwgMiwgMjI2LCAyNDcsIDMsIDI0OSwgMTI1LCAyLCAyMjYsIDI0NywgMjEyLCAxNTMsIDE3NCwgMjUyLCA5MSwgCi0gICAgMjMxLCAxMjUsIDI0NywgMjAyLCA1MiwgMjQ1LCAxMjksIDY4LCAyNDAsIDIyMSwgMTE0LCAyNTMsIDE2NCwgMTE5LCAyNTMsIAotICAgIDE2NCwgMjI1LCA1OSwgMjI2LCA0MSwgMjE0LCAxNiwgMjMyLCAyNDIsIDQyLCAyNTAsIDExNSwgNDYsIDI1MCwgMTE1LCA0MiwgCi0gICAgMjQ0LCAyNiwgNDYsIDI0NCwgMjYsIDI1MSwgMTAxLCA0NiwgMjQ5LCA3MiwgMjUxLCAxMDEsIDQyLCAyNDksIDcyLCAyMTYsIAotICAgIDIyNywgNDYsIDI0OSwgNzIsIDIxNiwgMjI3LCA0MiwgMjQ5LCA3MiwgMjIzLCAyMDIsIDIyOCwgMTYzLCA1MiwgNDEsIDIzMiwgCi0gICAgMTU5LCAyNTMsIDE5NSwgMjIyLCA4MywgMjIyLCA5MCwgMjE3LCAyMTAsIDIyNCwgMTMsIDIyNSwgMTIxLCAyMzUsIDIzNSwgCi0gICAgMjE0LCAxNDUsIDIxOSwgMTY2LCAyMjUsIDE3MywgNjUsIDIzNSwgMjA0LCA1MiwgMjE2LCA1OCwgMjI4LCAxNjMsIDUyLCAKLSAgICAyMTQsIDI2LCAyNDAsIDIyMywgMjE2LCAyMjcsIDQyLCAyNDksIDk5LCAyMTYsIDIyNywgNDYsIDI0OSwgOTksIDI1MSwgCi0gICAgMTAxLCA0MiwgMjQ5LCA5OSwgMjUxLCAxMDEsIDQ2LCAyNDksIDk5LCAyMTYsIDIyNywgMTUxLCAyMzUsIDIwOCwgMjUxLCAKLSAgICAxMDEsIDE1MSwgMjM1LCAyMDgsIDI0MywgMjEwLCAyMjAsIDMsIDExNCwgMjUzLCAxNjUsIDI1MSwgMjAxLCAxMTcsIDE5OSwgCi0gICAgMjUyLCA0OSwgMjI3LCAyNiwgMjM0LCAxNDQsIDI0NSwgNTMsIDIxMSwgMjExLCAyMTcsIDE0OSwgMjIzLCAxNDgsIDIxMywgCi0gICAgMTY3LCAyMzUsIDI1MiwgMTE4LCAyMjQsIDEwLCAyNTEsIDg5LCAyMzQsIDE0MywgMjMzLCA2NiwgMjU0LCAxOSwgMTI1LCAKLSAgICAyMjMsIDE0NCwgMjU0LCAxOSwgMTI1LCAyNDUsIDUzLCAyMTEsIDIxMSwgMjE3LCAxNDksIDIzMywgNzAsIDI1MSwgMjEyLCAKLSAgICAyMjMsIDEzMCwgMjQ5LCAxMywgMjU0LCA2NCwgMjUzLCAxNzIsIDIxOCwgMTI2LCAyMTYsIDIxNywgMjIzLCAzNCwgMjQ3LCAKLSAgICAxNjcsIDIyNywgMTgsIDI0OSwgMTM4LCAyMTgsIDMsIDIyMCwgMTQsIDI0OSwgOTAsIDI0OSwgODksIDE5NCwgMTk2LCAxNiwgCi0gICAgMjQwLCAxNDMsIDE5NCwgMTk2LCAxNiwgMjE5LCAxNjAsIDIyNCwgMTcyLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDUsIAotICAgIDYyLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDcsIDEyNiwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ3LCAyMDAsIAotICAgIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDIzNSwgNTksIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0OSwgMjI4LCAxOTQsIAotICAgIDE5NiwgMTYsIDI0OSwgMjI5LCAyMTksIDc1LCAxOTQsIDE5NiwgMTYsIDI0OSwgMjI5LCAyMzUsIDU5LCAxOTQsIDE5NiwgCi0gICAgMTYsIDIyMCwgMjQsIDEzNCwgMTk0LCAxOTYsIDE2LCAyNTIsIDk4LCAxMzQsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIAotICAgIDIyMCwgMjMsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI1MiwgOTcsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDIzMywgCi0gICAgMzgsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0MiwgMTA2LCAxOTQsIDE5NiwgMTYsIDEzMiwgMjE0LCAyNTEsIDE5NCwgCi0gICAgMTk2LCAxNiwgOTUsIDIxNCwgMjUxLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAxMzIsIDY4LCAxOTQsIDE5NiwgMTYsIAotICAgIDIyNCwgMTczLCA5NSwgNjgsIDE5NCwgMTk2LCAxNiwgMjQ5LCAyMjksIDI1MiwgOTcsIDE5NCwgMTk2LCAxNiwgMTE5LCAKLSAgICAyMTgsIDM3LCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyNDgsIDYsIDIxOSwgNzUsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIAotICAgIDExOSwgMjUwLCAxNzAsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0OCwgNSwgMTk0LCAxOTYsIDE2LCAxMTksIDIxOCwgCi0gICAgMzcsIDIzNSwgNTksIDE5NCwgMTk2LCAxNiwgMjE1LCAxMjQsIDIxNCwgMjUxLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAKLSAgICAyMTUsIDEyNCwgNjgsIDE5NCwgMTk2LCAxNiwgMTE0LCAyMTgsIDM3LCAyMjYsIDI0NywgMTk0LCAxOTYsIDE2LCAyNDgsIAotICAgIDE3LCAyMTksIDc1LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAxMTQsIDI1MCwgMTcwLCAxOTQsIDE5NiwgMTYsIDIyNCwgCi0gICAgMTczLCAyNDgsIDE2LCAxOTQsIDE5NiwgMTYsIDExNCwgMjE4LCAzNywgMjM1LCA1OSwgMTk0LCAxOTYsIDE2LCAyNDYsIDU4LCAKLSAgICAyMTQsIDI1MSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ2LCA1OCwgNjgsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNDIsIAotICAgIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDI0OCwgNiwgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjQ3LCAyMDEsIDIxNSwgCi0gICAgMTUzLCAxOTQsIDE5NiwgMTYsIDIzNSwgNjAsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDI0OSwgMjI5LCAyMTUsIDE1MywgCi0gICAgMTk0LCAxOTYsIDE2LCAxMTQsIDIyMCwgMTg1LCAyMzUsIDU5LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTQyLCAyMjQsIDE3MiwgCi0gICAgMTk0LCAxOTYsIDE2LCAyNDksIDIyOSwgMjE5LCA5NSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ5LCAxNjQsIDE5NCwgCi0gICAgMTk2LCAxNiwgMTE0LCAyMTgsIDM3LCAyNDcsIDIwOSwgMTk0LCAxOTYsIDE2LCAyNDgsIDE3LCAyNDcsIDIwOSwgMTk0LCAKLSAgICAxOTYsIDE2LCAyMTksIDk2LCAyNDcsIDIwOSwgMTk0LCAxOTYsIDE2LCAyMzUsIDYwLCAyNDcsIDIwOSwgMTk0LCAxOTYsIAotICAgIDE2LCAyNDksIDIyOSwgMjQ3LCAyMDksIDE5NCwgMTk2LCAxNiwgMTE5LCAyMjAsIDE4NSwgMjE5LCA3NSwgMTk0LCAxOTYsIAotICAgIDE2LCA0MiwgMjIwLCAxODUsIDIxOSwgNzUsIDE5NCwgMTk2LCAxNiwgMjE3LCA0MywgMjQ3LCAyMDksIDE5NCwgMTk2LCAxNiwgCi0gICAgMjQyLCAxMDcsIDI0NywgMjA5LCAxOTQsIDE5NiwgMTYsIDI0OSwgMTU4LCAxMzQsIDE5NCwgMTk2LCAxNiwgMjQ4LCAxNywgCi0gICAgMjE3LCA0MiwgMTk0LCAxOTYsIDE2LCAyMTIsIDI3LCAxOTQsIDE5NiwgMTYsIDIxOSwgNzYsIDIxNywgNDIsIDE5NCwgMTk2LCAKLSAgICAxNiwgMjIxLCA3MSwgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDIyOCwgMTYzLCAyNDUsIDYyLCAxOTQsIAotICAgIDE5NiwgMTYsIDIyNCwgMTczLCAyMjQsIDE1NywgMTk0LCAxOTYsIDE2LCAxMTksIDI1MCwgMTcxLCAyMTcsIDQyLCAxOTQsIAotICAgIDE5NiwgMTYsIDExNCwgMjUwLCAxNzEsIDIxNywgNDIsIDE5NCwgMTk2LCAxNiwgMjM1LCAxODMsIDE5NCwgMTk2LCAxNiwgCi0gICAgMjIzLCAxOTAsIDE5NCwgMTk2LCAxNiwgMjI3LCA2NywgMTk0LCAxOTYsIDE2LCAyNTQsIDUzLCAyMTUsIDE1MywgMTk0LCAKLSAgICAxOTYsIDE2LCAyNDUsIDY0LCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyMzUsIDE4NCwgMjE1LCAxNTMsIDE5NCwgMTk2LCAKLSAgICAxNiwgMjI3LCA2OCwgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjU0LCA1MiwgMjI4LCAxNjMsIDI1MCwgNjYsIDc3LCA0NiwgCi0gICAgMjU0LCAxOSwgMiwgMjQ2LCA1OCwgMjEyLCAyOCwgNjgsIDIyMCwgMTU5LCAyMjcsIDQwLCAyNTEsIDg5LCAyNTEsIDIyMiwgCi0gICAgODcsIDcxLCAyMzIsIDI0MywgMiwgMjMxLCAzNywgMjQ3LCA3NCwgMjM1LCAyMTMsIDg3LCAyNDksIDEyMiwgMjE1LCAxNTEsIAotICAgIDg3LCAyNDcsIDE0MSwgMjE1LCAxNTEsIDg3LCAyNDUsIDExMiwgODcsIDI0OSwgMTQ5LCA4NywgNjcsIDQxLCAyLCAyNTAsIAotICAgIDEwOSwgNzEsIDIzMiwgMjQyLCAyNDUsIDg5LCA4NywgMjU0LCA0OCwgMjM0LCAxNDUsIDg3LCAyNDEsIDE5NywgODcsIDM2LCAKLSAgICAxOTksIDI1MiwgNjAsIDIsIDIyOCwgMTYxLCAzNiwgMjE2LCAxODQsIDI0NiwgNjAsIDI1MSwgNjMsIDI0OSwgMjI5LCAyLCAKLSAgICAyMjgsIDE2NSwgNjgsIDIxNSwgMTQ5LCA4NywgMjMwLCAyMDcsIDg3LCAyNDAsIDE1NiwgODcsIDIyNywgMzksIDI0MiwgNDAsIAotICAgIDg3LCAyMjcsIDM5LCAyMzMsIDE2OSwgODcsIDIyNiwgMTE3LCA4NywgMjI2LCAxMTYsIDg3LCAyNDcsIDE0OSwgMjQ5LCAzOCwgCi0gICAgMTYsIDI0MywgMjQ1LCAxMDksIDIxOSwgMjM0LCA4NywgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MiwgMjQ4LCAzNCwgMjIxLCAKLSAgICA1OCwgMjM0LCAxNDUsIDg3LCAyMjUsIDczLCAyMjYsIDIwMCwgMjI5LCAxNjQsIDIyNiwgMjAwLCAyMjUsIDY5LCAyMjIsIAotICAgIDEwOCwgODcsIDI0OSwgMjEwLCAyMjIsIDEwOCwgODcsIDQyLCAyMjYsIDEzMiwgMjE1LCAxMzEsIDEwMSwgNDIsIDIyNiwgCi0gICAgMTMyLCAyNDQsIDI0NSwgNDIsIDIyNiwgMTMyLCAyMzIsIDE2MywgMTAxLCA0NiwgMjI2LCAxMzIsIDIxNSwgMTMxLCAxMDEsIAotICAgIDQ2LCAyMjYsIDEzMiwgMjQ0LCAyNDUsIDQ2LCAyMjYsIDEzMiwgMjMyLCAxNjMsIDEwMSwgNDIsIDQxLCAyNTEsIDg1LCAKLSAgICAyMTUsIDEzMSwgMjQ5LCA5OSwgNDIsIDQxLCAyNTEsIDg1LCAyNDQsIDI0NSwgNDIsIDQxLCAyNTEsIDg1LCAyMzIsIDE2MywgCi0gICAgMjQ5LCA5OSwgNDYsIDQxLCAyNTEsIDg1LCAyMTUsIDEzMSwgMjQ5LCA5OSwgNDYsIDQxLCAyNTEsIDg1LCAyNDQsIDI0NSwgCi0gICAgNDYsIDQxLCAyNTEsIDg1LCAyMzIsIDE2MywgMjQ5LCA5OSwgNDIsIDI0OSwgNDAsIDI1MSwgODUsIDIxNSwgMTMxLCAxMDEsIAotICAgIDQyLCAyNDksIDQwLCAyNTEsIDg1LCAyMzEsIDM3LCAyMjUsIDIzMywgNDIsIDI0OSwgNDAsIDI1MSwgODUsIDIzMiwgMTYzLCAKLSAgICAxMDEsIDI0OSwgNDAsIDI1MSwgODUsIDI0NCwgMjQ1LCA0NiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjE1LCAxMzEsIDEwMSwgNDYsIAotICAgIDI0OSwgNDAsIDI1MSwgODUsIDIzMSwgMzcsIDIyNSwgMjMzLCA0NiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjMyLCAxNjMsIDEwMSwgCi0gICAgMjM1LCAyMDksIDI0NCwgMjQ1LCAxOTksIDIzMiwgMjQzLCAyNDQsIDI0NSwgMjE1LCAxMzEsIDQyLCAxNjcsIDIzMiwgMTYzLCAKLSAgICA0NiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjIyLCA5MSwgMjE1LCAxMzEsIDQ2LCAxNjcsIDIzMiwgMTYzLCA0MiwgMjQ5LCA0MCwgCi0gICAgMjUxLCA4NSwgMjIyLCA5MSwgMjE4LCAyNDIsIDIxNiwgMjI2LCAyMTgsIDI0MiwgMjUxLCAxMDAsIDIxNiwgMjI3LCA0MSwgCi0gICAgMTI1LCAyNTEsIDEwMSwgNDEsIDEyNSwgMjUxLCAxMDEsIDQxLCAyNTEsIDg1LCAxMTAsIDIxNiwgMjI3LCA0MSwgMTI1LCAKLSAgICAzNCwgMTYsIDI1MSwgMTAwLCA0MiwgNzEsIDkyLCAyMzIsIDI0MiwgNDYsIDcxLCA5MiwgMjMyLCAyNDIsIDE5OSwgMjIyLCAKLSAgICAxMjMsIDIzMiwgMjQxLCAxOTksIDIyMiwgMTIzLCAyMzIsIDI0MCwgMTk5LCAyMjIsIDEyMywgMjMyLCAyMzksIDE5OSwgCi0gICAgMjIyLCAxMjMsIDIzMiwgMjM4LCAyNDcsIDI1MywgMTYsIDE3NywgNzEsIDI0LCAyMTYsIDIyNywgMjIzLCAxNDgsIDI0NywgCi0gICAgMjUzLCAxNiwgMTc3LCA3MSwgMjQsIDI1MSwgMTAxLCAyMjMsIDE0OCwgMjQ3LCAyNTMsIDE2LCAxNzcsIDcxLCAyLCAyNDksIAotICAgIDIyOCwgMjQ3LCAyNTMsIDE2LCAxNzcsIDExOSwgMjQsIDE5OSwgMiwgMjQ5LCAyMjgsIDI0NywgMjUzLCAxNiwgMTc3LCAKLSAgICAxMTQsIDI0LCAxOTksIDIsIDI0OSwgMjI4LCAyNDcsIDI1MywgMTYsIDE3NywgNzEsIDIsIDIxNiwgMTgzLCAyNDcsIDI1MywgCi0gICAgMTYsIDE3NywgMTE5LCAyNCwgMTk5LCAyLCAyMTYsIDE4MywgMjQ3LCAyNTMsIDE2LCAxNzcsIDExNCwgMjQsIDE5OSwgMiwgCi0gICAgMjE2LCAxODMsIDI0NywgMjUzLCAxNiwgMTc3LCA3MSwgMjQsIDIxNCwgMTksIDI0NywgMjUzLCAxNiwgMTc3LCAxMTksIDI0LCAKLSAgICAxOTksIDIsIDIxNCwgMTksIDI0NywgMjUzLCAxNiwgMTc3LCAxMTQsIDI0LCAxOTksIDIsIDIxNCwgMTksIDI0NywgMjUzLCAKLSAgICAxNiwgMTc3LCAxMTksIDI0LCAyNDEsIDMxLCAyNDcsIDI1MywgMTYsIDE3NywgMTE0LCAyNCwgMjQxLCAzMSwgMjQ3LCAyNTMsIAotICAgIDE2LCAxNzcsIDcxLCAyNCwgMjE2LCAyMjcsIDIzMywgNzAsIDI0NywgMjUzLCAxNiwgMTc3LCA3MSwgMjQsIDI1MSwgMTAxLCAKLSAgICAyMzMsIDcwLCA0MSwgMjQ0LCAxLCAyMjMsIDIwNiwgODcsIDI0NSwgMTM5LCA4NywgNzEsIDIzMiwgMjQzLCAyNDQsIDI0NSwgCi0gICAgMjMxLCAxMDAsIDI1MSwgNzQsIDIzMSwgMTAwLCAxODQsIDExMCwgMjIwLCAxNzQsIDIzMSwgMTAwLCAyMjAsIDE3NSwgMTEwLCAKLSAgICAyMzIsIDE5MCwgMjMxLCAxMDAsIDE4NCwgMTEwLCAxMTcsIDIyMCwgMTYxLCAyMzEsIDEwMCwgMTE3LCAyMjAsIDE2MiwgCi0gICAgMTEwLCAyMzIsIDE5MCwgMjMxLCAxMDAsIDExNywgMjIwLCAxNjIsIDIzNSwgNjcsIDIzMSwgMTAwLCAyMTYsIDE2NiwgMjMxLCAKLSAgICAxMDAsIDIxNywgMTc2LCAyMzEsIDEwMCwgMjI2LCA2MywgMjQ1LCAxODAsIDI0MiwgMTAwLCAyNDMsIDE5MSwgMjE2LCAyMjcsIAotICAgIDIyNiwgMTMxLCAyNTEsIDEwMSwgMjI2LCAxMzEsIDIxNiwgMjI3LCAyNDksIDQwLCAxMjUsIDI1MSwgMTAxLCAyNDksIDQwLCAKLSAgICAxMjUsIDIxNiwgMjI3LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgMjUxLCAxMDEsIDIxNiwgMjE5LCAyMjAsIDIzMywgCi0gICAgMTI1LCA2NywgMjE2LCAxOTcsIDI1MSwgMjEyLCAyMjMsIDEzMSwgMiwgMjQ5LCAyMjgsIDIxOSwgNjAsIDI0NCwgMzMsIAotICAgIDI1NCwgMTc3LCAyNDksIDM3LCAyNDUsIDEyOCwgMjM1LCAxOTUsIDI0OCwgMzQsIDI0NCwgMjQ3LCA4NywgODMsIDIyMywgCi0gICAgMTQ0LCA1MSwgMjE2LCAxODMsIDgzLCAyMzMsIDY2LCA1MSwgMjE2LCAxODMsIDgzLCAyMTUsIDEzMywgNTEsIDIxNiwgMTgzLCAKLSAgICA4MywgMjQ2LCA1OSwgNTEsIDIxNiwgMTgzLCA4MywgMjIzLCAxNDQsIDUxLCAyMTYsIDE4NCwgMiwgNzEsIDEzNCwgODMsIAotICAgIDIzMywgNjYsIDUxLCAyMTYsIDE4NCwgMiwgNzEsIDEzNCwgODMsIDIyMywgMTQ0LCAyMTYsIDE4NCwgMiwgNTEsIDcxLCAKLSAgICAxMzQsIDI1NCwgODEsIDI0OSwgMTk2LCAyMTksIDY2LCAyMTcsIDM5LCAyNDksIDE5NiwgMjQwLCAyMjQsIDIsIDI0NCwgMTksIAotICAgIDIyMiwgMTU3LCAxNiwgMzEsIDIyOCwgNTgsIDE2LCAzMSwgMjE5LCA5MSwgNjUsIDI0MSwgMjE3LCAxNiwgMzEsIDIxOSwgCi0gICAgOTEsIDY1LCAyMTcsIDE2NSwgMTYsIDMxLCAyNDUsIDEwMSwgNjUsIDIxNywgMTY1LCAxNiwgMzEsIDI0NSwgMTAxLCA2NSwgCi0gICAgMjE2LCAyMDAsIDE2LCAzMSwgMjQ1LCA5MSwgMTYsIDMxLCAyNTQsIDE2OCwgMTYsIDMxLCAyNTEsIDIyMSwgMTYsIDMxLCAKLSAgICAyNTIsIDk2LCAxNiwgMzEsIDE5OSwgMjE4LCAzOCwgMTYsIDMxLCAyMzIsIDI0MywgMjQ0LCAxMTQsIDE2LCAzMSwgNzEsIAotICAgIDIxOCwgMzgsIDE2LCAzMSwgMjQzLCAyNDUsIDI0NCwgMTE0LCAxNiwgMzEsIDI1MCwgMTYyLCAyMjMsIDIwNSwgMTYsIDMxLCAKLSAgICAyMjAsIDIwOCwgMjI2LCAyNTQsIDE2LCAzMSwgMjIwLCAyMDgsIDIzNSwgMjUxLCAxNiwgMzEsIDI0OCwgOTcsIDIzMiwgCi0gICAgMjMzLCAyNDUsIDQyLCAxNiwgMzEsIDI0NywgMjM4LCAyNDksIDExNywgMTE2LCAxNiwgMzEsIDI0NywgMjM4LCAyNDksIAotICAgIDExNywgMTA5LCAxNiwgMzEsIDI0NywgMjM4LCAyNDksIDExNywgMTY2LCAxNiwgMzEsIDI0NywgMjM4LCAyNDksIDExNywgCi0gICAgMTYzLCAxNiwgMzEsIDE0NiwgMjU0LCAxNjgsIDE2LCAzMSwgMjE4LCAxMjMsIDIzNiwgNTcsIDE2LCAzMSwgMjQ1LCAxMDEsIAotICAgIDY1LCAyMTYsIDIwMSwgMjUxLCAxMzYsIDE2LCAzMSwgMjUwLCAxOTMsIDE2LCAzMSwgMjQ1LCAxMDEsIDY1LCAyMzEsIDE0NiwgCi0gICAgMTYsIDMxLCAyMTksIDYsIDE2LCAzMSwgMjQ1LCA0MiwgMTYsIDMxLCAyNDQsIDc2LCAyMjEsIDU3LCAxNiwgMzEsIDI0MiwgCi0gICAgOTksIDIyMSwgNTcsIDE2LCAzMSwgMjI0LCAxNCwgMjIxLCA1NywgMTYsIDMxLCAyMTUsIDE0NSwgMjIxLCA1NywgMTYsIDMxLCAKLSAgICAyMTksIDIwNiwgMTYsIDMxLCAyNDgsIDE0LCAyNTEsIDEzOSwgODcsIDIyNywgNDAsIDI1MSwgODksIDE2LCAzMSwgMjI5LCAKLSAgICAxNjcsIDE2LCAzMSwgMjQ4LCAxNSwgMjQzLCAyNDUsIDEwOSwgMTYsIDMxLCAyMTksIDcsIDI0MywgMjQ1LCAxMDksIDIyNywgCi0gICAgMTA1LCAxMDEsIDIyNywgMTA1LCAyNTAsIDg3LCAyMjcsIDEwNSwgMjQzLCAyNDgsIDIyNywgMTA1LCAyMzUsIDE5MSwgMjQzLCAKLSAgICAyNDgsIDIyNywgMTA1LCAyNTEsIDIxOSwgMjUxLCA1MywgMjI3LCAxMDUsIDI1MSwgOTYsIDIxNywgNjUsIDIyNywgMTA1LCAKLSAgICAyNTEsIDgyLCAyNTIsIDY1LCAyNDAsIDk2LCAyMjcsIDEwNSwgMjU0LCAzNiwgNjUsIDI1MCwgNjUsIDIyNywgMTA1LCAyNDgsIAotICAgIDEwMSwgMjI3LCAxMDUsIDI0OSwgMjksIDI1NCwgMTcxLCAyMjgsIDU2LCAyMjcsIDEwNSwgNTEsIDI1MiwgOTcsIDM2LCAyMSwgCi0gICAgMTE2LCAzNiwgMjEsIDEwOSwgMzYsIDIxLCAxNjYsIDM2LCAyMSwgMTYzLCAzNiwgMjEsIDE4MCwgMzYsIDIxLCAxODksIDM2LCAKLSAgICAyMSwgMTk4LCAzNiwgMjEsIDE5NSwgMzYsIDIxLCAyMDAsIDM2LCA1MCwgMjE3LCAyMDAsIDM2LCA1MCwgMjQ1LCAxMjQsIAotICAgIDM2LCA1MCwgMjE2LCA0MSwgMzYsIDUwLCAyMTcsIDExNywgMzYsIDUwLCAyNDMsIDIzMSwgMzYsIDUwLCAyNDQsIDg3LCAzNiwgCi0gICAgNTAsIDIyMCwgNDcsIDM2LCA1MCwgMjIxLCA0MCwgMzYsIDUwLCAyNDUsIDE0NywgMzYsIDUwLCAyMjksIDI4LCAzNiwgNTAsIAotICAgIDIxNiwgMzgsIDg2LCAyMSwgMTE2LCA4NiwgMjEsIDEwOSwgODYsIDIxLCAxNjYsIDg2LCAyMSwgMTYzLCA4NiwgMjEsIDE4MCwgCi0gICAgODYsIDIxLCAxODksIDg2LCAyMSwgMTk4LCA4NiwgMjEsIDE5NSwgODYsIDIxLCAyMDAsIDg2LCA1MCwgMjE3LCAyMDAsIDg2LCAKLSAgICA1MCwgMjQ1LCAxMjQsIDg2LCA1MCwgMjE2LCA0MSwgODYsIDUwLCAyMTcsIDExNywgODYsIDUwLCAyNDMsIDIzMSwgODYsIAotICAgIDUwLCAyNDQsIDg3LCA4NiwgNTAsIDIyMCwgNDcsIDg2LCA1MCwgMjIxLCA0MCwgODYsIDUwLCAyNDUsIDE0NywgODYsIDUwLCAKLSAgICAyMjksIDI4LCA4NiwgNTAsIDIxNiwgMzgsIDIxLCAxMjIsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMTE3LCAyNDMsIDIwMCwgCi0gICAgMjE5LCA2OSwgMjEsIDEzMywgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAyNDMsIDIzNywgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAKLSAgICAyNDQsIDUwLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDIyMCwgNTMsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjIxLCA0MywgCi0gICAgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAyNDUsIDE1MCwgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAyMjksIDMxLCAyNDMsIAotICAgIDIwMCwgMjE5LCA2OSwgNTAsIDIxNywgMjAxLCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDI0NSwgMTI1LCAyNDMsIDIwMCwgCi0gICAgMjE5LCA2OSwgNTAsIDIxNiwgNDIsIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjE3LCAxMTgsIDI0MywgMjAwLCAyMTksIDY5LCAKLSAgICA1MCwgMjQzLCAyMzIsIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjQ0LCA4OCwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyMjAsIAotICAgIDQ4LCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDIyMSwgNDEsIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjQ1LCAxNDgsIDI0MywgCi0gICAgMjAwLCAyMTksIDY5LCA1MCwgMjI5LCAyOSwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyMTYsIDM5LCAyNDMsIDIwMCwgMjE5LCAKLSAgICA2OSwgODYsIDcsIDMsIDEsIDYxLCA4NiwgNywgMywgMSwgMjUzLCA3NCwgODYsIDcsIDMsIDEsIDI1MCwgMjUyLCA4NiwgNywgCi0gICAgMywgMSwgMjQ5LCAzLCA4NiwgNywgMywgMSwgNzQsIDg2LCA3LCAzLCAxLCAyNDQsIDIzMCwgODYsIDcsIDMsIDEsIDI0MywgCi0gICAgMTc3LCA4NiwgNywgMywgMSwgMjQyLCA0MSwgODYsIDcsIDMsIDEsIDcyLCA4NiwgNywgMywgMSwgMjM1LCAxNDIsIDg2LCA3LCAKLSAgICAzLCAxLCAyMzUsIDI3LCA4NiwgNywgMywgMSwgMTUwLCA4NiwgNywgMywgMSwgMTgzLCA4NiwgNywgMywgMSwgMjA0LCA4NiwgCi0gICAgNywgMywgMSwgNzUsIDg2LCA3LCAzLCAxLCAyMjYsIDIyOSwgODYsIDcsIDMsIDEsIDIyNCwgMjQwLCA4NiwgNywgMywgMSwgCi0gICAgMTQ5LCA4NiwgNywgMywgMSwgMTk3LCA4NiwgNywgMywgMSwgMjE4LCA5OSwgODYsIDcsIDMsIDEsIDY5LCA4NiwgNywgMywgCi0gICAgMSwgMjE1LCA3OSwgODYsIDcsIDMsIDEsIDIxNCwgODIsIDg2LCA3LCAzLCAxLCAyMTMsIDE2NiwgODYsIDcsIDMsIDEsIAotICAgIDIxMywgMTA1LCA4NiwgNywgMywgMSwgMjEyLCAxNTIsIDM2LCA3LCA2LCAxLCA2MSwgMzYsIDcsIDYsIDEsIDI1MywgNzQsIAotICAgIDM2LCA3LCA2LCAxLCAyNTAsIDI1MiwgMzYsIDcsIDYsIDEsIDI0OSwgMywgMzYsIDcsIDYsIDEsIDc0LCAzNiwgNywgNiwgMSwgCi0gICAgMjQ0LCAyMzAsIDM2LCA3LCA2LCAxLCAyNDMsIDE3NywgMzYsIDcsIDYsIDEsIDI0MiwgNDEsIDM2LCA3LCA2LCAxLCA3MiwgCi0gICAgMzYsIDcsIDYsIDEsIDIzNSwgMTQyLCAzNiwgNywgNiwgMSwgMjM1LCAyNywgMzYsIDcsIDYsIDEsIDE1MCwgMzYsIDcsIDYsIAotICAgIDEsIDE4MywgMzYsIDcsIDYsIDEsIDIwNCwgMzYsIDcsIDYsIDEsIDc1LCAzNiwgNywgNiwgMSwgMjI2LCAyMjksIDM2LCA3LCAKLSAgICA2LCAxLCAyMjQsIDI0MCwgMzYsIDcsIDYsIDEsIDE0OSwgMzYsIDcsIDYsIDEsIDE5NywgMzYsIDcsIDYsIDEsIDIxOCwgOTksIAotICAgIDM2LCA3LCA2LCAxLCA2OSwgMzYsIDcsIDYsIDEsIDIxNSwgNzksIDM2LCA3LCA2LCAxLCAyMTQsIDgyLCAzNiwgNywgNiwgMSwgCi0gICAgMjEzLCAxNjYsIDM2LCA3LCA2LCAxLCAyMTMsIDEwNSwgMzYsIDcsIDYsIDEsIDIxMiwgMTUyLCAzNiwgNywgMywgMSwgNjEsIAotICAgIDM2LCA3LCAzLCAxLCAyNTMsIDc0LCAzNiwgNywgMywgMSwgMjUwLCAyNTIsIDM2LCA3LCAzLCAxLCAyNDksIDMsIDM2LCA3LCAKLSAgICAzLCAxLCA3NCwgMzYsIDcsIDMsIDEsIDI0NCwgMjMwLCAzNiwgNywgMywgMSwgMjQzLCAxNzcsIDM2LCA3LCAzLCAxLCAyNDIsIAotICAgIDQxLCAzNiwgNywgMywgMSwgNzIsIDM2LCA3LCAzLCAxLCAyMzUsIDE0MiwgMzYsIDcsIDMsIDEsIDIzNSwgMjcsIDM2LCA3LCAKLSAgICAzLCAxLCAxNTAsIDM2LCA3LCAzLCAxLCAxODMsIDM2LCA3LCAzLCAxLCAyMDQsIDM2LCA3LCAzLCAxLCA3NSwgMzYsIDcsIDMsIAotICAgIDEsIDIyNiwgMjI5LCAzNiwgNywgMywgMSwgMjI0LCAyNDAsIDM2LCA3LCAzLCAxLCAxNDksIDM2LCA3LCAzLCAxLCAxOTcsIAotICAgIDM2LCA3LCAzLCAxLCAyMTgsIDk5LCAzNiwgNywgMywgMSwgNjksIDM2LCA3LCAzLCAxLCAyMTUsIDc5LCAzNiwgNywgMywgMSwgCi0gICAgMjE0LCA4MiwgMzYsIDcsIDMsIDEsIDIxMywgMTY2LCAzNiwgNywgMywgMSwgMjEzLCAxMDUsIDM2LCA3LCAzLCAxLCAyMTIsIAotICAgIDE1MiwgMzYsIDIxLCAyMTIsIDc5LCAxNDYsIDM2LCA1MCwgMjQ1LCAxMjQsIDE0NiwgMzYsIDUwLCAyMTYsIDQxLCAxNDYsIAotICAgIDM2LCA1MCwgMjE3LCAxMTcsIDE0NiwgMzYsIDUwLCAyNDMsIDIzMSwgMTQ2LCAzNiwgNTAsIDI0NCwgODcsIDE0NiwgMzYsIAotICAgIDUwLCAyMjAsIDQ3LCAxNDYsIDM2LCA1MCwgMjIxLCA0MCwgMTQ2LCAzNiwgNTAsIDI0NSwgMTQ3LCAxNDYsIDM2LCA1MCwgCi0gICAgMjI5LCAyOCwgMTQ2LCAzNiwgNTAsIDIxNiwgMzgsIDUxLCAzNiwgMjEsIDExNiwgNTEsIDM2LCAyMSwgMTA5LCA1MSwgMzYsIAotICAgIDIxLCAxNjYsIDUxLCAzNiwgMjEsIDE2MywgNTEsIDM2LCAyMSwgMTgwLCA1MSwgMzYsIDIxLCAxODksIDUxLCAzNiwgMjEsIAotICAgIDE5OCwgNTEsIDM2LCAyMSwgMTk1LCA1MSwgMzYsIDIxLCAyMDAsIDUxLCAzNiwgNTAsIDIxNywgMjAwLCAxNDYsIDM2LCAyMSwgCi0gICAgMjEyLCA3OSwgOTIsIDk2LCAxNzcsIDI0MSwgMzEsIDkyLCA5NiwgMTA3LCAyNDEsIDMxLCA5MiwgOTYsIDE3NywgMjE0LCAKLSAgICAyMTYsIDkyLCA5NiwgMTA3LCAyMTQsIDIxNiwgOTIsIDk2LCAxNzcsIDIxNiwgMTY5LCAyNDgsIDEwMiwgMjQxLCAzMSwgOTIsIAotICAgIDk2LCAxMDcsIDIxNiwgMTY5LCAyNDgsIDEwMiwgMjQxLCAzMSwgOTIsIDk2LCAxNzcsIDIxNiwgMTY5LCAyNDgsIDEwMiwgCi0gICAgMjE0LCAyMTYsIDkyLCA5NiwgMTA3LCAyMTYsIDE2OSwgMjQ4LCAxMDIsIDIxNCwgMjE2LCA5MiwgOTYsIDE3NywgMjI0LCAKLSAgICAxNjksIDI0OCwgMTAyLCAyNDEsIDMxLCA5MiwgOTYsIDEwNywgMjI0LCAxNjksIDI0OCwgMTAyLCAyNDEsIDMxLCA5MiwgOTYsIAotICAgIDE3NywgMjI0LCAxNjksIDI0OCwgMTAyLCAyMTQsIDIxNiwgOTIsIDk2LCAxMDcsIDIyNCwgMTY5LCAyNDgsIDEwMiwgMjE0LCAKLSAgICAyMTYsIDkyLCA5NiwgMTc3LCAxMTksIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCAxMTksIDE3NywgMjQsIDQ2LCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCAxMTksIDEwNywgMjQsIDQ2LCAyMzMsIDIsIDkyLCA5NiwgMTA3LCAxMTksIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCAKLSAgICAxNzcsIDExOSwgMjQsIDIzMywgNzAsIDkyLCA5NiwgMTE5LCAxNzcsIDI0LCA0MiwgMjQxLCAyMDUsIDkyLCA5NiwgMTE5LCAKLSAgICAxMDcsIDI0LCA0MiwgMjMzLCAyLCA5MiwgOTYsIDEwNywgMTE5LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDExNCwgMjQsIAotICAgIDIyMywgMTQ4LCA5MiwgOTYsIDExNCwgMTc3LCAyNCwgNDYsIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgNDYsIAotICAgIDIzMywgMiwgOTIsIDk2LCAxMDcsIDExNCwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDE3NywgMTE0LCAyNCwgMjMzLCA3MCwgCi0gICAgOTIsIDk2LCAxMTQsIDE3NywgMjQsIDQyLCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDEwNywgMjQsIDQyLCAyMzMsIDIsIDkyLCAKLSAgICA5NiwgMTA3LCAxMTQsIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgNzEsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCA3MSwgCi0gICAgMTc3LCAyNCwgNDYsIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgNDYsIDExOSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTA3LCAyNCwgNDYsIDExNCwgMjMzLCAyLCA5MiwgOTYsIDcxLCAxMDcsIDI0LCA0NiwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTc3LCAyNCwgNDYsIDExNCwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxNzcsIDI0LCA0NiwgMTE5LCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCAxMDcsIDcxLCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgMTc3LCA3MSwgMjQsIDIzMywgNzAsIDkyLCA5NiwgNzEsIAotICAgIDE3NywgMjQsIDQyLCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDEwNywgMjQsIDQyLCAxMTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICAxMTksIDEwNywgMjQsIDQyLCAxMTQsIDIzMywgMiwgOTIsIDk2LCA3MSwgMTA3LCAyNCwgNDIsIDIzMywgMiwgOTIsIDk2LCAKLSAgICAxMTksIDE3NywgMjQsIDQyLCAxMTQsIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTc3LCAyNCwgNDIsIDExOSwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgMTA3LCA3MSwgMjQsIDIzMywgNzAsIDkyLCA5NiwgMTc3LCAxMTksIDI0LCAyNDEsIDMxLCA5MiwgOTYsIDQyLCAKLSAgICAxMDcsIDI0LCA0NiwgMTE5LCAyMzMsIDIsIDkyLCA5NiwgNDYsIDEwNywgMjQsIDQyLCAxMTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICAxMTksIDE3NywgMjQsIDE5OSwgMjQxLCAyMDUsIDkyLCA5NiwgMTE5LCAxMDcsIDI0LCAxOTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICA0NiwgMTc3LCAyNCwgNDIsIDExOSwgMjQxLCAyMDUsIDkyLCA5NiwgNDIsIDE3NywgMjQsIDQ2LCAxMTksIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDEwNywgMTE5LCAyNCwgMjQxLCAzMSwgOTIsIDk2LCAxNzcsIDExNCwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgNDIsIAotICAgIDEwNywgMjQsIDQ2LCAxMTQsIDIzMywgMiwgOTIsIDk2LCA0NiwgMTA3LCAyNCwgNDIsIDExNCwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExNCwgMTc3LCAyNCwgMTk5LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDEwNywgMjQsIDE5OSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDQ2LCAxNzcsIDI0LCA0MiwgMTE0LCAyNDEsIDIwNSwgOTIsIDk2LCA0MiwgMTc3LCAyNCwgNDYsIDExNCwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgMTA3LCAxMTQsIDI0LCAyNDEsIDMxLCA5MiwgOTYsIDE3NywgNzEsIDI0LCAyNDEsIDMxLCA5MiwgOTYsIDQyLCAKLSAgICAxMDcsIDI0LCA0NiwgNzEsIDIzMywgMiwgOTIsIDk2LCA0NiwgMTA3LCAyNCwgNDIsIDcxLCAyMzMsIDIsIDkyLCA5NiwgNzEsIAotICAgIDE3NywgMjQsIDE5OSwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCAxMTksIDE5OSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTA3LCAyNCwgMTE0LCAxOTksIDIzMywgMiwgOTIsIDk2LCA3MSwgMTA3LCAyNCwgMTk5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgNDIsIDExNCwgMTA3LCAyNCwgNDYsIDExOSwgMjMzLCAyLCA5MiwgOTYsIDQ2LCAxMTQsIDEwNywgMjQsIDQyLCAxMTksIAotICAgIDIzMywgMiwgOTIsIDk2LCA0MiwgMTE5LCAxMDcsIDI0LCA0NiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgNDYsIDExOSwgMTA3LCAKLSAgICAyNCwgNDIsIDExNCwgMjMzLCAyLCA5MiwgOTYsIDExOSwgMTc3LCAyNCwgMTE0LCAxOTksIDI0MSwgMjA1LCA5MiwgOTYsIAotICAgIDExNCwgMTc3LCAyNCwgMTE5LCAxOTksIDI0MSwgMjA1LCA5MiwgOTYsIDQ2LCAxNzcsIDI0LCA0MiwgNzEsIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDQyLCAxNzcsIDI0LCA0NiwgNzEsIDI0MSwgMjA1LCA5MiwgOTYsIDEwNywgNzEsIDI0LCAyNDEsIDMxLCA5MiwgCi0gICAgOTYsIDE3NywgNTEsIDI0OCwgMTAyLCAyNDEsIDMxLCA5MiwgOTYsIDEwNywgNTEsIDI0OCwgMTAyLCAyNDEsIDMxLCA5MiwgCi0gICAgOTYsIDE3NywgNTEsIDI0OCwgMTAyLCAyMTQsIDIxNiwgOTIsIDk2LCAxMDcsIDUxLCAyNDgsIDEwMiwgMjE0LCAyMTYsIDkyLCAKLSAgICA5NiwgNTEsIDI0MSwgMzEsIDkyLCA5NiwgNTEsIDIxNCwgMjE2LCA5MiwgOTYsIDExOSwgMjIwLCA4MSwgMjQsIDQ2LCAyNDYsIAotICAgIDY3LCA5MiwgOTYsIDExOSwgNTEsIDI0LCA0NiwgMjIwLCA4MCwgOTIsIDk2LCA1MSwgMTE5LCAyNCwgMjIzLCAxNDgsIDkyLCAKLSAgICA5NiwgMTE5LCAyMjAsIDgxLCAyNCwgNDIsIDI0NiwgNjcsIDkyLCA5NiwgMTE5LCA1MSwgMjQsIDQyLCAyMjAsIDgwLCA5MiwgCi0gICAgOTYsIDUxLCAxMTksIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDExNCwgMjIwLCA4MSwgMjQsIDQ2LCAyNDYsIDY3LCA5MiwgOTYsIAotICAgIDExNCwgNTEsIDI0LCA0NiwgMjIwLCA4MCwgOTIsIDk2LCA1MSwgMTE0LCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgMTE0LCAKLSAgICAyMjAsIDgxLCAyNCwgNDIsIDI0NiwgNjcsIDkyLCA5NiwgMTE0LCA1MSwgMjQsIDQyLCAyMjAsIDgwLCA5MiwgOTYsIDUxLCAKLSAgICAxMTQsIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDcxLCAyMjAsIDgxLCAyNCwgNDYsIDI0NiwgNjcsIDkyLCA5NiwgNzEsIDUxLCAKLSAgICAyNCwgNDYsIDIyMCwgODAsIDkyLCA5NiwgNTEsIDcxLCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgNzEsIDIyMCwgODEsIDI0LCAKLSAgICA0MiwgMjQ2LCA2NywgOTIsIDk2LCA3MSwgNTEsIDI0LCA0MiwgMjIwLCA4MCwgOTIsIDk2LCA1MSwgNzEsIDI0LCAyMzMsIAotICAgIDcwLCA5MiwgOTYsIDExOSwgMjIwLCA4MSwgMjQsIDE5OSwgMjQ2LCA2NywgOTIsIDk2LCAxMTksIDUxLCAyNCwgMTk5LCAKLSAgICAyMjAsIDgwLCA5MiwgOTYsIDUxLCAxMTksIDI0LCAyNDEsIDMxLCA5MiwgOTYsIDExNCwgMjIwLCA4MSwgMjQsIDE5OSwgCi0gICAgMjQ2LCA2NywgOTIsIDk2LCAxMTQsIDUxLCAyNCwgMTk5LCAyMjAsIDgwLCA5MiwgOTYsIDUxLCAxMTQsIDI0LCAyNDEsIDMxLCAKLSAgICA5MiwgOTYsIDcxLCAyMjAsIDgxLCAyNCwgMTk5LCAyNDYsIDY3LCA5MiwgOTYsIDcxLCA1MSwgMjQsIDE5OSwgMjIwLCA4MCwgCi0gICAgOTIsIDk2LCA1MSwgNzEsIDI0LCAyNDEsIDMxLCA5MiwgOTYsIDE3NywgMjUzLCAxOTYsIDExOSwgMjQsIDIyMywgMTQ4LCAKLSAgICA5MiwgOTYsIDE3NywgMjUzLCAxOTYsIDExOSwgMjQsIDIzMywgNzAsIDkyLCA5NiwgMTc3LCAyNTMsIDE5NiwgMTE0LCAyNCwgCi0gICAgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDI1MywgMTk2LCAxMTQsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCAxNzcsIDI0NywgMjA3LCAKLSAgICAyMTUsIDEzMSwgNDYsIDIxMSwgMjExLCAyMzIsIDE2MywgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDI0NywgMjA3LCAyMTUsIAotICAgIDEzMSwgNDIsIDIxMSwgMjExLCAyMzIsIDE2MywgMjIzLCAxNDgsIDkyLCA5NiwgMTc3LCAyNDcsIDIwNywgMjQ5LCA3MCwgCi0gICAgOTIsIDk2LCAxNzcsIDIzMywgNzAsIDkyLCA5NiwgMTc3LCAyMTUsIDEzNCwgOTIsIDk2LCAxNzcsIDIyMywgMTQ4LCA5MiwgCi0gICAgOTYsIDE3NywgMjQ2LCA2MCwgOTIsIDk2LCAxMDcsIDIzMywgNzAsIDkyLCA5NiwgMTA3LCAyMTUsIDEzNCwgOTIsIDk2LCAKLSAgICAxMDcsIDIyMywgMTQ4LCA5MiwgOTYsIDEwNywgMjQ2LCA2MCwgOTIsIDk2LCAxNzcsIDQyLCAyNCwgMTA3LCAyMjMsIDE0OCwgCi0gICAgOTIsIDk2LCAxNzcsIDExNCwgMjQsIDEwNywgMjQ2LCA2MCwgOTIsIDk2LCAxMDcsIDQyLCAyNCwgMTc3LCAyMjMsIDE0OCwgCi0gICAgOTIsIDk2LCAxMDcsIDExNCwgMjQsIDE3NywgMjQ2LCA2MCwgMjE1LCAxMzEsIDE1MSwgMjUxLCAxMzYsIDIzMiwgMTYzLCAKLSAgICAxMjIsIDI0NSwgMTQ2LCAyNTEsIDEzNiwgMjMyLCAxNjMsIDEyMiwgMjI0LCAxNjcsIDI1MSwgMTM2LCAyMzIsIDE2MywgCi0gICAgMTMzLCAyNDUsIDE0NCwgMjUxLCAxMzYsIDIzMiwgMTYzLCAxNTEsIDI1MSwgMTM2LCAyMzIsIDE2MywgMjQ0LCA1MCwgMjQ1LCAKLSAgICAxNDQsIDI1MSwgMTM2LCAyMzIsIDE2MywgMTMzLCAyMjQsIDE2NSwgMjUxLCAxMzYsIDIzMiwgMTYzLCAyMjEsIDQzLCAyNDUsIAotICAgIDE0NCwgMjUxLCAxMzYsIDI0MywgMjAwLCAyNTEsIDEzNiwgNDIsIDIyMSwgNDMsIDI0NSwgMTQ0LCAyNTEsIDEzNiwgNDIsIAotICAgIDEzMywgMjI0LCAxNjUsIDI1MSwgMTM2LCA0MiwgMjQ0LCA1MCwgMjQ1LCAxNDQsIDI1MSwgMTM2LCA0MiwgMTUxLCAyNTEsIAotICAgIDEzNiwgNDIsIDEzMywgMjQ1LCAxNDQsIDI1MSwgMTM2LCA0MiwgMTIyLCAyMjQsIDE2NywgMjUxLCAxMzYsIDQyLCAxMjIsIAotICAgIDI0NSwgMTQ2LCAyNTEsIDEzNiwgNDYsIDE1MSwgMjUxLCAxMzYsIDE3NywgMjIxLCAxNCwgMjMxLCAxNDcsIDIyMSwgMTQsIAotICAgIDI0OCwgMTA3LCAyMjEsIDE0LCAyMTUsIDEzMSwgMTIyLCAyNDUsIDE0NiwgMjUxLCAxMzYsIDQ2LCAxMjIsIDI0NSwgMTQ2LCAKLSAgICAyNTEsIDEzNiwgMjI0LCAxNzEsIDIzMiwgMTYzLCAyMzMsIDcwLCAyMjQsIDE3MSwgMjMyLCAxNjMsIDIyMywgMTQ4LCAyMjQsIAotICAgIDE3MSwgMjE1LCAxMzEsIDIzMywgNzAsIDIyNCwgMTcxLCAyMTUsIDEzMSwgNDIsIDI0LCAyMzIsIDE2MywgNDIsIDI0LCAKLSAgICAyMzIsIDE2MywgMjIzLCAxNDgsIDIyNCwgMTcxLCAyMTUsIDEzMSwgNDIsIDI0LCAyMzIsIDE2MywgMjIzLCAxNDgsIDIyNCwgCi0gICAgMTcxLCAyMTUsIDEzMSwgNDIsIDI0LCAyMTUsIDEzMSwgNDYsIDI0LCAyMzIsIDE2MywgMjMzLCA3MCwgMjI0LCAxNzEsIAotICAgIDIxNSwgMTMxLCA0MiwgMjQsIDIxNSwgMTMxLCA0NiwgMjQsIDIzMiwgMTYzLCAyMjMsIDE0OCwgMjI0LCAxNzEsIDIxNSwgCi0gICAgMTMxLCAyMjMsIDE0OCwgMjI0LCAxNzEsIDIxNSwgMTMxLCA0NiwgMjQsIDIzMiwgMTYzLCAyMzMsIDcwLCAyMjQsIDE3MSwgCi0gICAgMjE1LCAxMzEsIDQ2LCAyNCwgMjMyLCAxNjMsIDQyLCAyNCwgMjMyLCAxNjMsIDIyMywgMTQ4LCA4MywgMjE5LCAxNjYsIDY3LCAKLSAgICAyMTksIDE2NiwgNjcsIDQxLCAyLCAyMjMsIDg1LCAyNDksIDk4LCA2NywgNDEsIDI0OSwgMTI2LCA4MywgMywgMjE5LCAxNjYsIAotICAgIDQxLCAyLCAxOTksIDI0NCwgNzQsIDQxLCAyLCA3MSwgMjQ0LCA3NCwgNDEsIDIsIDIyNywgMTEsIDI0OSwgNjYsIDI0NCwgCi0gICAgNzQsIDQxLCAyLCAyMTUsIDEzMSwgNDIsIDIxMSwgMjExLCAyMzIsIDE2MywgNDYsIDI0NCwgNzQsIDQxLCAyLCAyMTUsIAotICAgIDEzMSwgNDYsIDIxMSwgMjExLCAyMzIsIDE2MywgNDIsIDI0NCwgNzQsIDQxLCAyLCAyNDcsIDIwNywgMjQ5LCA2NiwgMjQ0LCAKLSAgICA3NCwgODMsIDMsIDIxOSwgMTY2LCA2NywgMywgMjE5LCAxNjYsIDgzLCAyMjQsIDksIDY3LCAyMjQsIDksIDgzLCA3MSwgCi0gICAgMjI0LCA5LCA2NywgNzEsIDIyNCwgOSwgODMsIDIyNiwgMTM0LCA2NywgMjI2LCAxMzQsIDgzLCAyMTUsIDEzMywgMjE2LCAKLSAgICAxODMsIDY3LCAyMTUsIDEzMywgMjE2LCAxODMsIDgzLCAyMTUsIDEzMywgMywgMjE2LCAxODMsIDY3LCAyMTUsIDEzMywgMywgCi0gICAgMjE2LCAxODMsIDgzLCAyMjMsIDE0NCwgMjE2LCAxODMsIDY3LCAyMjMsIDE0NCwgMjE2LCAxODMsIDgzLCAyMjMsIDE0NCwgCi0gICAgMywgMjE2LCAxODMsIDY3LCAyMjMsIDE0NCwgMywgMjE2LCAxODMsIDgzLCAyMjMsIDE0NCwgMjI1LCAxNDIsIDY3LCAyMjMsIAotICAgIDE0NCwgMjI1LCAxNDIsIDgzLCAyNDYsIDU5LCAyMTYsIDE4MywgNjcsIDI0NiwgNTksIDIxNiwgMTgzLCA4MywgMjQ2LCA1OSwgCi0gICAgMywgMjE2LCAxODMsIDY3LCAyNDYsIDU5LCAzLCAyMTYsIDE4MywgODMsIDIzMywgNjYsIDIxNiwgMTgzLCA2NywgMjMzLCAKLSAgICA2NiwgMjE2LCAxODMsIDgzLCAyMzMsIDY2LCAzLCAyMTYsIDE4MywgNjcsIDIzMywgNjYsIDMsIDIxNiwgMTgzLCA4MywgCi0gICAgMjMzLCA2NiwgMjI1LCAxNDIsIDY3LCAyMzMsIDY2LCAyMjUsIDE0MiwgODMsIDI0NywgMjAwLCA2NywgMjQ3LCAyMDAsIDY3LCAKLSAgICAyNDcsIDIwMSwgMjQ5LCAxMjYsIDgzLCAzLCAyNDcsIDIwMCwgMjQ0LCA1OCwgMjMyLCAxNTksIDY3LCAyNDksIDIyOCwgCi0gICAgMjQ2LCA3MiwgMjQ5LCAyMjgsIDI0OSwgMjI5LCAyLCA3MSwgMjQ0LCA3NCwgMjUxLCA0MCwgODMsIDI0OSwgMjI4LCAyNDksIAotICAgIDIyOSwgMiwgNDIsIDE1MSwgMjUxLCAxNDQsIDI0OSwgMjI5LCAyLCA0NiwgMTUxLCAyNTEsIDE0NCwgMjQ5LCAyMjksIDIsIAotICAgIDIzMiwgMTYzLCAxNTEsIDI1MSwgMTQ0LCAyNDksIDIyOSwgMiwgMjE1LCAxMzEsIDE1MSwgMjUxLCAxNDQsIDI0OSwgMjI5LCAKLSAgICAyLCAyMTUsIDEzMSwgNDYsIDIyNCwgMTcxLCAyNTEsIDE0NCwgMjQ5LCAyMjksIDIsIDI1NCwgNjQsIDI1MSwgMTcsIDIxNSwgCi0gICAgMTMxLCA0MiwgMjI0LCAxNzEsIDI1MSwgMTQ0LCA0MiwgMTUxLCA4MywgMjQ5LCAyMjgsIDQ2LCAxNTEsIDgzLCAyNDksIAotICAgIDIyOCwgMjM1LCAxOTIsIDI1MSwgNDIsIDIzNSwgMTkyLCA2NywgMjQ5LCAyMjgsIDIxNSwgMTMxLCAxNTEsIDIzNSwgMTkyLCAKLSAgICA2NywgMjQ5LCAyMjgsIDIzMiwgMTYzLCAxNTEsIDIzNSwgMTkyLCA2NywgMjQ5LCAyMjgsIDIxNSwgMTMxLCA0MiwgMjI0LCAKLSAgICAxNzEsIDI0OSwgMjI2LCAyNTMsIDE5NSwgMjE1LCAxMzEsIDQ2LCAyMjQsIDE3MSwgMjQ5LCAyMjYsIDI1MywgMTk1LCAyMzIsIAotICAgIDE2MywgNDYsIDIyNCwgMTcxLCAyNDksIDIyNiwgMjUzLCAxOTUsIDIzMiwgMTYzLCA0MiwgMjI0LCAxNzEsIDI0OSwgMjI2LCAKLSAgICAyNTMsIDE5NSwgMjE1LCAxMzEsIDE1MSwgMjQ5LCAyMjgsIDIzMiwgMTYzLCAxNTEsIDI0OSwgMjI4LCA4MywgMjMyLCAxNjMsIAotICAgIDQ2LCAyMTYsIDE4MywgODMsIDIzMiwgMTYzLCA0MiwgMjE2LCAxODMsIDgzLCAyMTUsIDEzMSwgNDIsIDIxNiwgMTgzLCA4MywgCi0gICAgMjE1LCAxMzEsIDQ2LCAyMTYsIDE4MywgNjcsIDI1MSwgNDIsIDQxLCAyLCA0MiwgMTUxLCAyNTEsIDE0NCwgNDEsIDIsIDQ2LCAKLSAgICAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgMjE1LCAxMzEsIDQyLCAyNDcsIDIwNywgMTUxLCAyNTEsIDE0NCwgNDEsIDIsIDIzMiwgCi0gICAgMTYzLCA0NiwgMjQ3LCAyMDcsIDE1MSwgMjUxLCAxNDQsIDY3LCA0MSwgMiwgNzEsIDI1MSwgMTU1LCAyMzIsIDI0MiwgNjcsIAotICAgIDIxNSwgMTMzLCAyMTYsIDE4NCwgMiwgMjQ3LCA3NCwgMjE1LCAxMzMsIDIxNiwgMTg0LCAyLCA0MiwgMTUxLCAyNTEsIDE0NCwgCi0gICAgMjE1LCAxMzMsIDIxNiwgMTg0LCAyLCA0NiwgMTUxLCAyNTEsIDE0NCwgMjMzLCAxMDgsIDI0OSwgMjI4LCA2NywgNDEsIDIsIAotICAgIDIxNSwgMTMxLCA0MiwgMjI0LCAxNzAsIDY3LCA0MSwgMiwgMjMyLCAxNjMsIDQyLCAyMjQsIDE3MCwgNjcsIDQxLCAyLCAKLSAgICAyMzIsIDE2MywgNDYsIDIyNCwgMTcwLCA2NywgNDEsIDIsIDIxNSwgMTMxLCA0NiwgMjI0LCAxNzAsIDY3LCAyNDksIDIyOSwgCi0gICAgMiwgMjE1LCAxMzEsIDQyLCAyMjQsIDE3MCwgNjcsIDI0OSwgMjI5LCAyLCAyMzIsIDE2MywgNDIsIDIyNCwgMTcwLCA2NywgCi0gICAgMjQ5LCAyMjksIDIsIDIzMiwgMTYzLCA0NiwgMjI0LCAxNzAsIDY3LCAyNDksIDIyOSwgMiwgMjE1LCAxMzEsIDQ2LCAyMjQsIAotICAgIDE3MCwgMjE1LCAxMzEsIDQyLCAyMTYsIDE4MywgMjE1LCAxMzEsIDQ2LCAyMTYsIDE4MywgMjMyLCAxNjMsIDQyLCAyMTYsIAotICAgIDE4MywgNjcsIDIzMSwgMTQ3LCAyMTksIDE2NiwgODMsIDIzMSwgMTQ3LCAyMTksIDE2NiwgNjcsIDIzMSwgMTQ3LCAzLCAKLSAgICAyMTksIDE2NiwgODMsIDIzMSwgMTQ3LCAzLCAyMTksIDE2NiwgMjMyLCAxNjMsIDQ2LCAyMTYsIDE4MywgODMsIDIxOCwgCi0gICAgMjM5LCAyLCAyMjQsIDI1LCAyNDksIDE4NCwgMjE1LCAxNjQsIDIxOSwgMjQ0LCAyNDksIDE2MCwgODMsIDIxOSwgOTUsIDY3LCAKLSAgICAyMTksIDk1LCAyMzMsIDAsIDIxNywgODYsIDIxOCwgMjM4LCAyNTMsIDE0OSwgMjI4LCAxODIsIDI0NywgMjQ1LCAyMjgsIAotICAgIDE4MiwgMjQ5LCAxMzUsIDIyNywgMjksIDgzLCAyMTcsIDIwOSwgNjcsIDIxNywgMjA5LCAyNTIsIDc1LCAyNTEsIDg5LCAKLSAgICAyNTIsIDc1LCA5MiwgMiwgMjUwLCA2NSwgMjUyLCA3NSwgOTIsIDIsIDIxMywgMTY2LCAyMjIsIDE2OSwgMjE1LCAxNjUsIDIsIAotICAgIDIyNCwgNTEsIDI0NiwgMzksIDI0MCwgMjMwLCAyNTEsIDE5OSwgNjcsIDIyMCwgMTgyLCAyMjUsIDIzMywgODMsIDIyMCwgCi0gICAgMTgyLCAyMjUsIDIzMywgMjIxLCAxMCwgMjIzLCAyMDIsIDIyMywgODksIDI0NCwgMjQsIDI0MSwgMjEyLCAyNTEsIDQyLCAKLSAgICA4MywgNDIsIDIyNSwgMTQxLCAyMzUsIDIzOSwgODMsIDQ2LCAyMjUsIDE0MSwgMjM1LCAyMzksIDY3LCA0MiwgMjI1LCAxNDEsIAotICAgIDIzNSwgMjM5LCA2NywgMTE0LCAyMjUsIDE0MSwgMjM1LCAyMzksIDY3LCA0NiwgMjI1LCAxNDEsIDIzNSwgMjM5LCA2NywgCi0gICAgMTE5LCAyMjUsIDE0MSwgMjM1LCAyMzksIDIyMCwgMjksIDI0LCAyNDksIDY5LCAyNTAsIDE1MiwgNTIsIDIyNCwgNjIsIDUyLCAKLSAgICAyNTEsIDE2MiwgNTIsIDI1MCwgMjExLCAyNTQsIDEzLCAyMjcsIDEyLCAyNDksIDcwLCAyNTAsIDQ4LCAyMjMsIDE5MCwgCi0gICAgMjQ5LCA3MSwgNjUsIDIzMiwgMTczLCAyNDksIDcxLCA2NSwgMjM1LCAxMTcsIDIxOSwgOTYsIDI0LCAyNDksIDc2LCAyNDQsIAotICAgIDEzNiwgODcsIDI1NCwgMTUzLCAyMjEsIDEyLCAyNDIsIDUsIDI0LCAyMjAsIDExNSwgMjI2LCA5NSwgODcsIDIxMiwgMjQ1LCAKLSAgICAyMTMsIDU4LCAyMTYsIDE3MywgMzEsIDI0MSwgMjA3LCAyMTYsIDE3MywgMzEsIDIzMywgMTMxLCAyMTYsIDE3MywgMzEsIAotICAgIDI0NCwgNjUsIDIxNiwgMTczLCAzMSwgMjE3LCA4NywgMjE2LCAxNzMsIDMxLCAyMTMsIDIyNCwgMjE2LCAxNzMsIDMxLCAKLSAgICAyMTQsIDI0LCAyMTYsIDE3MywgMzEsIDIzMCwgMTg1LCAyMTYsIDE3MywgMzEsIDI0NSwgMTc5LCAyMTMsIDI0MiwgNjUsIAotICAgIDI0NywgMjI2LCA2NywgMjQzLCAyMDksIDI0NCwgMTU4LCA2NywgMjIwLCAyLCAyNDQsIDE1OCwgODMsIDIyMCwgMiwgMjQ0LCAKLSAgICAxNTgsIDY3LCAyMTgsIDIzOSwgMiwgMjI0LCAyNSwgMjQ0LCA2MSwgMjI0LCAxNjcsIDIzMCwgMTk4LCAyMzMsIDEwMywgCi0gICAgMjI0LCAxNjcsIDIzMCwgMTk4LCAyMzEsIDExOCwgMjQ0LCAxMDcsIDUyLCAyNDUsIDE3OSwgMjMxLCAyNTMsIDUyLCAyMzUsIAotICAgIDQxLCAyMjIsIDEzNywgMjE1LCAxMTYsIDIyOSwgMTc1LCAyMjUsIDE1NCwgMjUzLCAxODMsIDIxNywgMjQ3LCAyNDMsIDI4LCAKLSAgICAyNTAsIDE5MSwgMjMzLCA0MywgMjE0LCAxMzEsIDIzMywgMTAsIDIyMiwgMTEwLCAyMjIsIDE4OCwgMjUwLCAxODAsIDI1MywgCi0gICAgMjEyLCAyMjUsIDE4NCwgNjcsIDI1MCwgNTQsIDIzNCwgODcsIDY3LCAyNTAsIDU0LCAyMjQsIDE1OSwgNjcsIDI1MCwgNTQsIAotICAgIDIyMywgOTcsIDY3LCAyNTAsIDU0LCAyNTEsIDE1NCwgNjcsIDI1MCwgNTQsIDIzNCwgMzksIDY3LCAyNTAsIDU0LCAyMjYsIAotICAgIDEwNSwgODMsIDI1MCwgNTQsIDIzNCwgODcsIDgzLCAyNTAsIDU0LCAyMjQsIDE1OSwgODMsIDI1MCwgNTQsIDIyMywgOTcsIAotICAgIDgzLCAyNTAsIDU0LCAyNTEsIDE1NCwgODMsIDI1MCwgNTQsIDIzNCwgMzksIDgzLCAyNTAsIDU0LCAyMjYsIDEwNSwgODMsIAotICAgIDIxOSwgMjA0LCAyMTgsIDI1MSwgNjcsIDI0MSwgMjEyLCAyMTgsIDI1MSwgNjcsIDI0NywgMjAxLCAyMTgsIDI1MSwgODMsIAotICAgIDI0OSwgMTgyLCAyMTgsIDI1MSwgNjcsIDIxOSwgMjA0LCAyMTgsIDI1MSwgODMsIDI0MSwgMjEyLCAyMTgsIDI1MSwgODMsIAotICAgIDI0NywgMjAxLCAyMTgsIDI1MSwgNjcsIDI0OSwgMTgyLCAyMTgsIDI1MSwgMjQwLCAyMzAsIDIxOSwgMTcwLCAyMjQsIDE2NywgCi0gICAgMjI4LCAxNTgsIDI0NSwgMTQ2LCAyMjgsIDE1OCwgMjUxLCAyNDksIDI0NSwgMTQ2LCAyMjgsIDE1MywgMjUxLCAyNDksIAotICAgIDIyMCwgNDYsIDIyOCwgMTUzLCAyMzAsIDEyNywgMjQ0LCAzNSwgNTIsIDIzMCwgMTI3LCAyMzAsIDksIDUyLCAyMzAsIDEyNywgCi0gICAgMjIwLCAyNTUsIDUyLCAyMTMsIDI1MCwgMTc1LCAyNDksIDcwLCAyNDUsIDE3NiwgMTc1LCAyNDksIDcwLCAyMTUsIDE0MiwgCi0gICAgMjI0LCA1LCA4NywgMjI0LCA1LCAxNiwgMzEsIDIxNiwgMTQsIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCAxMywgCi0gICAgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDEyLCAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgMTEsIAotICAgIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCAxMCwgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDksIDIyNSwgCi0gICAgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCA4LCAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDI0MywgMjYsIDIzMSwgMjAxLCAKLSAgICA4MywgMjE1LCAxNDIsIDIyNCwgNSwgODcsIDIyNCwgNiwgMjI2LCAxNDgsIDg3LCAyMjYsIDEyNCwgMjI2LCAxNDgsIDg3LCAKLSAgICAyMjYsIDQ5LCAyMjYsIDE0OCwgNTIsIDIxMywgMjQwLCA4NywgMjQ3LCAxOTMsIDI0NCwgMTU3LCAyNDcsIDE5MywgMjQ0LCAKLSAgICAxNTYsIDI0NywgMTkzLCAyNDQsIDE1NSwgMjQ3LCAxOTMsIDI0NCwgMTU0LCAyNDcsIDE5MywgMjQ0LCAxNTMsIDI0NywgCi0gICAgMTkzLCAyNDQsIDE1MiwgNjcsIDI0OSwgMjI5LCAyLCA2MiwgMjIzLCAxNDgsIDY3LCAyNDksIDIyOSwgMiwgMTE3LCAyNDcsIAotICAgIDcyLCA4MywgMjQ5LCAyMjksIDIsIDY3LCA2MiwgMjIzLCAxNDgsIDgzLCAyNDksIDIyOSwgMiwgMTE3LCA2NywgMjQ3LCA3MiwgCi0gICAgMjMwLCAyMTIsIDMxLCAyMTMsIDU4LCAyMzAsIDIxMiwgMzEsIDIxMiwgMjQ0LCAyNDcsIDE3NiwgMzEsIDI0MiwgMTA4LCAKLSAgICAyMTMsIDU4LCAyNDcsIDE3NiwgMzEsIDIzMywgMzcsIDIxMiwgMjQ0LCAyNDcsIDE3NiwgMzEsIDIzMywgMzcsIDIxMywgNTgsIAotICAgIDI0NywgMTc2LCAzMSwgMjQyLCAxMDgsIDIxMiwgMjQ0LCA2NywgMjQ0LCA0MiwgODMsIDI0NCwgNDIsIDI0MiwgNSwgMjQsIAotICAgIDIyNSwgMjM2LCAyNTQsIDI5LCAyNDksIDY4LCAyMTgsIDE4MCwgMjE5LCAxMDMsIDY1LCAyNTQsIDEzMSwgMjIyLCAxMjQsIAotICAgIDI1NCwgNzcsIDI0NCwgMjAsIDI0MywgMzYsIDIxOSwgMTAzLCA2NSwgMjQxLCAxODcsIDI1MywgMTE1LCA4NywgMjQ0LCAzMSwgCi0gICAgMjI2LCAyNTAsIDY3LCAyMTksIDk1LCAxMzMsIDIzMiwgMjM3LCAyNDksIDExNCwgMjIzLCAxNDgsIDEzMywgMjMyLCAyMzcsIAotICAgIDI0OSwgMTE0LCAyMzMsIDcwLCAyMTQsIDM0LCA1MiwgMTI0LCAyMTQsIDExMSwgNTIsIDI0NiwgNjQsIDI0NCwgMTA3LCA1MiwgCi0gICAgMjQ2LCA2NCwgMjMxLCAyNTMsIDUyLCAyMzUsIDIwMCwgMjQ0LCAxMDcsIDI0LCAyMzEsIDI1MywgNTIsIDIzMSwgMjUzLCAKLSAgICAyNCwgMjQ0LCAxMDcsIDUyLCAyMzEsIDI1MywgMiwgMjE5LCA0NSwgNTIsIDIzMSwgMjUzLCAyLCAyMTksIDQ1LCAyNCwgCi0gICAgMjMxLCAyNTMsIDI0LCAyNDQsIDEwNywgNTIsIDcxLCAyMzEsIDI1MywgMiwgMjE5LCA0NSwgNTIsIDE5OSwgMjMxLCAyNTMsIAotICAgIDIsIDIxOSwgNDUsIDUyLCAyMzEsIDE0NywgNjcsIDI0OSwgMjI4LCAyMzEsIDE0NywgODMsIDI0OSwgMjI4LCAyMzEsIDE0NywgCi0gICAgMywgNjcsIDI0OSwgMjI4LCAyMzEsIDIxNiwgODcsIDI0NywgMTE5LCA4NywgMjE1LCAxNDAsIDIyNiwgMTIzLCA4NywgMjQ5LCAKLSAgICAxNjksIDI0MywgMTk2LCAyMTUsIDExMiwgMjI5LCAxNzAsIDI1MCwgOTUsIDIyNiwgMTg4LCAyMzUsIDQ3LCAyMTQsIDE2MiwgCi0gICAgMjUwLCAzMCwgODMsIDIzMCwgMTk5LCAyMzIsIDI1MywgMjIxLCAzMywgMjIxLCA2NywgMjI0LCAxNTAsIDIyMSwgNTEsIAotICAgIDIxOSwgMjM5LCAyNTIsIDc4LCAyNTIsIDQ2LCA5MSwgMjM0LCAxNDQsIDY3LCAyNDYsIDQ4LCAyMzEsIDI0OCwgNjcsIDI0NiwgCi0gICAgNDgsIDIzNCwgODcsIDgzLCAyNDYsIDQ4LCAyMzEsIDI0OCwgODMsIDI0NiwgNDgsIDIzNCwgODcsIDIxOSwgMjQ1LCAyMTMsIAotICAgIDIxNiwgMjE5LCAyNDgsIDIxOCwgMjM5LCAyNTEsIDIyNywgMjQ5LCAxODQsIDIyNCwgNTAsIDgzLCAyMTksIDI0NCwgMjE3LCAKLSAgICA4OCwgMjQ5LCAxODUsIDI0LCAyMjQsIDUwLCAyMTYsIDU4LCA2NywgMjIwLCAxODIsIDIyNSwgMjMzLCAyMTYsIDU4LCA4MywgCi0gICAgMjIwLCAxODIsIDIyNSwgMjMzLCA2NywgMjQ3LCAyMDEsIDIzNSwgMjUyLCAyMTksIDE2NiwgMjQ5LCA2NSwgMjMzLCAxMTUsIAotICAgIDI0NywgMTQ1LCAyNTAsIDE3NiwgMjI3LCAzMiwgMjI1LCAyMzYsIDI1MCwgMTc3LCAyMjAsIDE2LCAyNDEsIDE5NiwgMiwgCi0gICAgNjcsIDI0OSwgNzAsIDM2LCAyNDksIDY1LCAyMzMsIDExNSwgMjUwLCA4OCwgMjI4LCAxODYsIDI0NSwgODMsIDI1NCwgNTAsIAotICAgIDIyNywgNTcsIDQyLCAyMTQsIDEwLCAyMTYsIDIwOCwgODMsIDIxNiwgMjEsIDQyLCAyMTQsIDEwLCAyMTYsIDIwOCwgNjcsIAotICAgIDIxNiwgMjEsIDQyLCAyMTQsIDEwLCAyMTYsIDIwOCwgODMsIDQyLCAyMzMsIDExNiwgMjMxLCAxMTcsIDY3LCA0MiwgMjMzLCAKLSAgICAxMTYsIDIzMSwgMTE3LCAyNDYsIDQ0LCAyMjAsIDEwLCA1MiwgMTA3LCA2NywgMjQ2LCA1OSwgMjE2LCAxODMsIDQyLCAyNDksIAotICAgIDE5MywgMjQ1LCA4MywgOTEsIDIyMiwgMTY5LCAyNDQsIDE0MywgMjQ3LCAyMDcsIDIzNSwgMjUyLCA2NywgMjQ5LCAyMjksIAotICAgIDIzNSwgMjUyLCA4MywgMjE5LCAxNjYsIDgzLCAyMTYsIDE1MCwgMjIzLCAyMTIsIDQyLCAyNDUsIDgyLCAyMjMsIDIxMiwgCi0gICAgNDIsIDI0NSwgODEsIDI1MywgMTI3LCAxNiwgMzEsIDIxNSwgMTE2LCAxMDcsIDI0OSwgMjI5LCAyLCAyMTksIDQ1LCAyNCwgCi0gICAgMTE3LCAxNzYsIDQ5LCAyMjYsIDY0LCAyMjMsIDE0NSwgMjM1LCAyMDIsIDIyNiwgNjQsIDIzMywgNjcsIDIzNSwgMjAyLCAKLSAgICAyMjYsIDY0LCAyMzUsIDE5MSwgMjI2LCA2NCwgODMsIDI0OSwgNzEsIDIyNywgNjMsIDIyMCwgMjA5LCAyMjAsIDE5NywgCi0gICAgMjIwLCAxNTQsIDI0OSwgMjU0LCAyNTAsIDE1OCwgMjQxLCAxNDMsIDIyMCwgNTQsIDI0MywgMzcsIDIxMywgMjE2LCAyNDAsIAotICAgIDIxMCwgMjQzLCAzNywgMiwgMjQxLCAyNTEsIDIzMSwgMjM2LCAxNiwgMzEsIDIzMywgMSwgMjMwLCAxODUsIDIxNSwgMTY1LCAKLSAgICAyMjcsIDYzLCAyNDIsIDEwMCwgMjQzLCAyMzgsIDI0NCwgNDMsIDIzNSwgMjUyLCAyNDEsIDQ1LCAyNDQsIDk4LCAyMjIsIAotICAgIDE4NSwgNDEsIDI0MywgMjM3LCAyNDksIDk4LCAyMjAsIDMyLCAyNDAsIDEwNSwgMjIwLCAzNSwgMjI2LCA0NCwgMiwgMjUyLCAKLSAgICA3OCwgMjE3LCAxOTUsIDIzNSwgMTMxLCAyNTIsIDY1LCA4NywgMjQxLCAyMTUsIDI0MiwgMTEwLCA4NywgMjQzLCAyMDMsIAotICAgIDIyNSwgMjgsIDI0OSwgNDQsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgNjcsIDI0NCwgNDMsIDIsIDE5OSwgMjMxLCAzNywgCi0gICAgODMsIDIxOSwgNDYsIDIxNSwgMTMxLCAyNTEsIDE0MCwgMjIyLCAxMTIsIDgzLCAyMjIsIDExMiwgMjMyLCAxNjMsIDI1MSwgCi0gICAgMTQwLCAyMjIsIDExMiwgNjcsIDIyMiwgMTEyLCA2NywgMTA3LCAyNTAsIDY2LCA3NywgMjE3LCAyMTAsIDIzMiwgMjA2LCAKLSAgICA1MiwgMjE4LCA0LCAyNDYsIDQzLCAyNTQsIDk5LCAyNDUsIDc4LCAyMjQsIDQ4LCAyNDQsIDU0LCAyMjQsIDQ4LCAyNDEsIAotICAgIDI1NCwgMjE0LCAxNTIsIDI0MSwgMjU0LCAyMTMsIDE4NiwgMjQxLCAyNTQsIDIzMiwgMTYzLCA0NiwgMjI2LCA3MywgMjI2LCAKLSAgICA3MywgMjE1LCAxMzEsIDQ2LCAyMjYsIDczLCA2NywgMjI5LCA2MSwgODMsIDIyOSwgNjEsIDI1MCwgNjYsIDc3LCAxMDcsIAotICAgIDI1MCwgNjYsIDc3LCAyMzAsIDE1NCwgMjEzLCAxNjYsIDEwNywgMjMwLCAxNTQsIDIxMywgMTY2LCAyNTIsIDc1LCAyMTMsIAotICAgIDE2NiwgMTA3LCAyNTIsIDc1LCAyMTMsIDE2NiwgMjI2LCAyNTAsIDI1LCAyNDksIDcwLCAxMDcsIDI1LCAyNDksIDcwLCAKLSAgICAyMjcsIDQwLCAyNTAsIDEwOSwgMjQ5LCA3MCwgMTA3LCAyMjcsIDQwLCAyNTAsIDEwOSwgMjQ5LCA3MCwgNywgMjQ5LCA3MCwgCi0gICAgMjIxLCAxMywgNjcsIDcsIDI0OSwgNzAsIDIyNiwgMjUwLCA3LCAyNDksIDcwLCAyMzEsIDI1MCwgMjQ5LCA3MCwgMjE5LCAKLSAgICA5NiwgNjUsIDI0OCwgOTUsIDI0MywgMjM3LCAyMTcsIDIyMywgMjUzLCAxMzIsIDI0MywgMjM3LCAyNTIsIDc2LCAyNTMsIAotICAgIDEzMiwgMTA3LCAyNDMsIDIzNywgMjUyLCA3NiwgMjUzLCAxMzIsIDI0MywgMjM3LCAyNDksIDE4MCwgMjUzLCAxMzIsIDgzLCAKLSAgICAyNDMsIDIzNywgMjI1LCAxNDMsIDIxOSwgOTUsIDY3LCAyNDMsIDIzNywgMjI1LCAxNDMsIDIxOSwgOTUsIDIxOSwgMTk5LCAKLSAgICAyMTksIDUxLCAyMjYsIDI1MCwgNjcsIDIxOSwgOTUsIDM2LCA2NywgMjE5LCA5NSwgMjI3LCA0MCwgMjUwLCAxMDksIDgzLCAKLSAgICAyMTksIDk1LCA4MywgMjUwLCAxMDksIDY3LCAyMTksIDk1LCAyMjYsIDI1MCwgODMsIDIxOSwgOTUsIDEwNywgMjI2LCAyNTAsIAotICAgIDgzLCAyMTksIDk1LCAyMjUsIDE5MiwgMjE5LCA5NSwgMjIxLCAxMywgNjcsIDIxOSwgOTUsIDEwNywgMjUzLCAxMzIsIDIyNywgCi0gICAgNDAsIDI1MCwgMTA5LCAyNTMsIDEzMiwgMjQ1LCAxNTAsIDIxOSwgMTc2LCAyNTMsIDEzMiwgMjQ1LCAxNTAsIDIyNSwgMTQzLCAKLSAgICA4MywgMjE5LCA5NSwgMjQ1LCAxNTAsIDIyNSwgMTQzLCAyMjUsIDE5MiwgMjE5LCA5NSwgMjIwLCA1MywgMjI1LCAxNDMsIAotICAgIDgzLCAyMTksIDk1LCAyNDUsIDE1MCwgMjI1LCAxNDMsIDIyNCwgNywgODMsIDIxOSwgOTUsIDEwNywgMjQ1LCAxNTAsIDIyNSwgCi0gICAgMTQzLCAyMjQsIDcsIDgzLCAyMTksIDk1LCAyMTYsIDQyLCAyMjUsIDE0MywgODMsIDIxOSwgOTUsIDIyMCwgNDgsIDIyNSwgCi0gICAgMTQzLCAyNTMsIDEzMiwgMjE3LCAyMjMsIDI1MywgMTMyLCAyMjcsIDQwLCAyNTAsIDEwOSwgMjE3LCAyMjMsIDI1MywgMTMyLCAKLSAgICAxMDcsIDIxNywgMjIzLCAyNTMsIDEzMiwgMjIwLCA1MywgMjI2LCAzMywgODMsIDI0LCA2NywgMjQ0LCAyMywgODMsIDI0NCwgCi0gICAgMjMsIDY3LCAyNDQsIDIzLCAyNDUsIDE1MCwgMjI2LCAzMywgMjI2LCAyNTAsIDgzLCAyNDQsIDIzLCAzNiwgMjI3LCA0MCwgCi0gICAgMjUwLCAxMDksIDI0NSwgMTUwLCAyMjUsIDE0MywgMjE5LCA5NSwgMTA3LCAyMTcsIDIyMywgMjI1LCAxOTIsIDI1MywgMTMyLCAKLSAgICAyMTksIDI0NiwgMjE3LCA1OSwgMjE2LCAxNzYsIDIxOSwgMjQ2LCAxMDcsIDI1MCwgNTEsIDIxOSwgMjQ2LCAyMTksIDIwMSwgCi0gICAgMTA3LCAyMTksIDIwMSwgMjUyLCA3NiwgMjUzLCAxMzIsIDI0NSwgMTUwLCAyMTcsIDIyMywgMjI1LCA1NSwgMjUzLCAxMzIsIAotICAgIDEwNywgMjQ1LCAxNTAsIDIxNywgMjIzLCAyMjUsIDU1LCAyNTMsIDEzMiwgMjQ5LCA3MSwgNzcsIDIyMSwgMTMsIDY3LCAKLSAgICAyNDksIDIyOCwgMTQ2LCA5MSwgMjQ5LCA3MSwgNzcsIDIzMiwgMTYzLCA0NiwgMjQ2LCA0MSwgNjcsIDIxOSwgMTY2LCAyMTUsIAotICAgIDEzMSwgNDYsIDI0NiwgNDEsIDY3LCAyMTksIDE2NiwgMjMyLCAxNjMsIDQ2LCAyMjEsIDEzLCA2NywgMjE5LCAxNjYsIDIxNSwgCi0gICAgMTMxLCA0NiwgMjIxLCAxMywgNjcsIDIxOSwgMTY2LCA4MywgMjI0LCAxNTgsIDE1MiwgMjI3LCAxNCwgNjcsIDIyNCwgMTU4LCAKLSAgICAxNTIsIDIyNywgMTQsIDY3LCAyNDQsIDI1NCwgMTUyLCAyMjcsIDE0LCA4MywgMjQ3LCAyMDEsIDIzMCwgMjUxLCA2NywgCi0gICAgMjEzLCAxNjYsIDEwNywgMjQ0LCAyNTQsIDE1MiwgODcsIDE3NywgNzEsIDEzNCwgMjMxLCAxNDcsIDcxLCAxMzQsIDEwNywgCi0gICAgNzEsIDEzNCwgMTA3LCAyMjAsIDgxLCAyMTYsIDU4LCAyNDksIDE1OCwgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCAKLSAgICAyMjAsIDgxLCAyNDksIDE1OCwgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCA1MSwgMjE2LCA1OCwgMjQ5LCAxNTgsIAotICAgIDIyNCwgMTQzLCAxNTIsIDIyNywgMTQsIDEwNywgNTEsIDI0OSwgMTU4LCAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIAotICAgIDExNSwgMjIwLCA4MSwgMjQ5LCAxNTgsIDIyNCwgMTQzLCAxNTIsIDIyNywgMTQsIDEwNywgMTE1LCA1MSwgMjQ5LCAxNTgsIAotICAgIDIyNCwgMTQzLCAxNTIsIDIyNywgMTQsIDI0OSwgMzMsIDIxOSwgODAsIDIyNiwgMTQzLCA1LCAyMjcsIDE0LCAxMDcsIDI0NCwgCi0gICAgMjU0LCAxNTIsIDIyNywgMTQsIDEwNywgMjQxLCAyMTIsIDI0NCwgMjU0LCAxNTIsIDIyNywgMTQsIDEwNywgODMsIDI0MSwgCi0gICAgMjExLCAyMjMsIDg5LCAxMDcsIDgzLCAyNDEsIDIxMiwgMjUxLCA0MiwgMjQ0LCAyNCwgMjQxLCAyMTEsIDIyMywgODksIAotICAgIDI0NCwgMjQsIDI0MSwgMjEyLCAyNTEsIDQyLCAyMzEsIDE0NywgNDIsIDIyNiwgMTMyLCAyMjcsIDE0LCAyMzEsIDE0NywgCi0gICAgNDYsIDIyNiwgMTMyLCAyMjcsIDE0LCAyMzEsIDE0NywgMjQ0LCAzMiwgNDIsIDIyNiwgMTMyLCAyMjcsIDE0LCAyMzEsIAotICAgIDE0NywgMjQ0LCAzMiwgNDYsIDIyNiwgMTMyLCAyMjcsIDE0LCAyMzEsIDE0NywgMjMzLCA2NiwgMjU0LCAxOSwgMjUxLCA4NSwgCi0gICAgMjI3LCAxNCwgMjMxLCAxNDcsIDIyMywgMTQ0LCAyNTQsIDE5LCAyNTEsIDg1LCAyMjcsIDE0LCAxMDcsIDIzMywgNjYsIAotICAgIDI1NCwgMTksIDIyNCwgMTQzLCAxNTIsIDIyNywgMTQsIDEwNywgMjIzLCAxNDQsIDI1NCwgMTksIDIyNCwgMTQzLCAxNTIsIAotICAgIDIyNywgMTQsIDEwNywgMjMzLCA2NiwgMjU0LCAxOSwgMjUxLCA4NSwgMjI3LCAxNCwgMTA3LCAyMjMsIDE0NCwgMjU0LCAxOSwgCi0gICAgMjUxLCA4NSwgMjI3LCAxNCwgMTc3LCA0MiwgMjE2LCAyMTksIDIyMCwgMjMzLCAyNTEsIDg1LCAyMjcsIDE0LCAxNzcsIDQ2LCAKLSAgICAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODUsIDIyNywgMTQsIDIzMSwgMTQ3LCA0MiwgMjQ5LCA0MCwgMjUxLCA4NSwgCi0gICAgMjI3LCAxNCwgMjMxLCAxNDcsIDQ2LCAyNDksIDQwLCAyNTEsIDg1LCAyMjcsIDE0LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIAotICAgIDExNiwgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAxMDksIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgMTY2LCAyNDcsIDE1NiwgCi0gICAgMTQ2LCAzNiwgMjEsIDE2MywgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAxODAsIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgMTg5LCAKLSAgICAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDE5OCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAxOTUsIDI0NywgMTU2LCAxNDYsIAotICAgIDM2LCAyMSwgMjAwLCAyNDcsIDE1NiwgMTQ2LCAzNiwgNTAsIDIxNywgMjAwLCAyNDcsIDE1NiwgMzYsIDM1LCAyMSwgMTE2LCAKLSAgICAyNDcsIDE1NiwgMzYsIDM1LCAyMSwgMTA5LCAyNDcsIDE1NiwgMzYsIDM1LCAyMSwgMTY2LCAyNDcsIDE1NiwgMzYsIDM1LCAKLSAgICAyMSwgMTYzLCAyNDcsIDE1NiwgMzYsIDM1LCAyMSwgMTgwLCAyNDcsIDE1NiwgMzYsIDM1LCAyMSwgMTg5LCAyNDcsIDE1NiwgCi0gICAgMzYsIDM1LCAyMSwgMTk4LCAyNDcsIDE1NiwgMzYsIDM1LCAyMSwgMTk1LCAyNDcsIDE1NiwgMzYsIDM1LCAyMSwgMjAwLCAKLSAgICAyNDcsIDE1NiwgMzYsIDM1LCA1MCwgMjE3LCAyMDAsIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDExNiwgMjQ3LCAxNTYsIAotICAgIDE0NiwgMzYsIDM1LCAyMSwgMTA5LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAxNjYsIDI0NywgMTU2LCAxNDYsIDM2LCAKLSAgICAzNSwgMjEsIDE2MywgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMTgwLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAKLSAgICAxODksIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDE5OCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMTk1LCAyNDcsIAotICAgIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAyMDAsIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgNTAsIDIxNywgMjAwLCAxMDcsIDIxMywgCi0gICAgMjMxLCA5NSwgNjgsIDEwNywgOTQsIDUyLCAxMDcsIDIzMCwgMjUxLCA1MiwgMTA3LCAyNDcsIDEyMSwgNTIsIDEwNywgMjE5LCAKLSAgICAyMTUsIDI0NSwgMTc2LCA2OCwgMTA3LCA5NSwgNjgsIDEwNywgMjI4LCAxNjcsIDI0NSwgMTc2LCA2OCwgMjQ2LCA1MiwgCi0gICAgMjI1LCAxNDUsIDk1LCA2OCwgMTA3LCAyMjMsIDg2LCA5NSwgNjgsIDIxNiwgMTgyLCA5NSwgNjgsIDEwNywgMjE2LCAxODIsIAotICAgIDk1LCA2OCwgMjQ4LCAxMDAsIDIxNiwgMTgyLCA5NSwgNjgsIDEwNywgMjQ4LCAxMDAsIDIxNiwgMTgyLCA5NSwgNjgsIDgzLCAKLSAgICA5NSwgNjgsIDIxNywgOTcsIDIxNiwgMjI1LCA5NSwgMjUzLCAxNjQsIDIxNywgOTcsIDI1MSwgOTksIDk1LCAyNTMsIDE2NCwgCi0gICAgODMsIDk1LCAyNTMsIDE2NCwgMTA3LCA4MywgMjQ5LCAzMywgMjQ2LCA1OCwgMjQsIDk1LCA2OCwgMTA3LCA4MywgMjQ5LCAKLSAgICAzMywgMjE1LCAxMjQsIDI0LCA5NSwgNjgsIDIxOSwgMTYzLCA4MywgOTUsIDY4LCAxMDcsIDI0OSwgMTQ1LCA4MywgOTUsIAotICAgIDY4LCAyMjMsIDE0MywgNjcsIDk1LCA2OCwgMjMzLCA2NSwgNjcsIDk1LCA2OCwgMjUyLCAxMDAsIDIyMSwgMTMsIDY3LCA5NSwgCi0gICAgNjgsIDI0MywgMjExLCAyMjEsIDEzLCA2NywgOTUsIDY4LCAxMDcsIDIzMiwgMTYzLCAyMjMsIDE0MiwgNjcsIDk1LCA2OCwgCi0gICAgMTA3LCAyMTUsIDEzMSwgMjIzLCAxNDIsIDY3LCA5NSwgNjgsIDIyOCwgMTYwLCAyMzIsIDE2MywgMjIzLCAxNDIsIDY3LCAKLSAgICA5NSwgNjgsIDI0OSwgNDAsIDIzMiwgMTc3LCAyMjgsIDE2MCwgMjE1LCAxMzEsIDIyMywgMTQyLCA2NywgOTUsIDY4LCAzNiwgCi0gICAgMTA3LCA2NywgOTUsIDY4LCAyMTMsIDIzNywgOTUsIDY4LCAyNTEsIDE0MywgMjE5LCAyMTUsIDI0NSwgMTc2LCA2OCwgMjUxLCAKLSAgICAxNDMsIDk1LCA2OCwgMjUxLCAxNDMsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNjgsIDEwNywgMjUxLCAxNDMsIDIxOSwgMjE1LCAKLSAgICAyNDUsIDE3NiwgNjgsIDEwNywgMjUxLCAxNDMsIDk1LCA2OCwgMTA3LCAyNTEsIDE0MywgMjI4LCAxNjcsIDI0NSwgMTc2LCAKLSAgICA2OCwgMjE3LCAyMjUsIDk1LCA2OCwgMTA3LCAyMTcsIDIyNCwgOTUsIDY4LCAyMTQsIDIsIDk1LCA2OCwgMTA3LCAyMTQsIDIsIAotICAgIDk1LCA2OCwgMjI3LCAzNywgOTUsIDY4LCA1MSwgMjQ5LCA0MCwgMjMyLCAxNzcsIDEzMywgMjQ3LCAxNjYsIDI1NCwgMTgsIAotICAgIDY3LCAyMTYsIDE4NCwgMjQ5LCAxMjYsIDMsIDY3LCAyMTYsIDE4MywgMjI2LCA0NywgMjI3LCA0MCwgMjE5LCA4LCAyMjcsIAotICAgIDQwLCAyMTgsIDIyMSwgNDIsIDIyMywgMywgMjUyLCA5MSwgMjQ4LCAxMSwgNDYsIDIyMywgMywgMjUyLCA5MSwgMjQ4LCAxMSwgCi0gICAgMTY3LCAyLCA2MiwgMjM1LCAyMTIsIDIyMywgMjAzLCAyMTksIDIzMiwgMjI1LCA4MSwgMjE5LCA4LCAyMTgsIDIyMiwgMjI1LCAKLSAgICA4MSwgMjE5LCAyMzEsIDcxLCAyNTIsIDYwLCAyLCAxOTksIDkwLCAxODQsIDI0NywgMTIwLCA5MSwgMjMyLCAxOTksIDI1NCwgCi0gICAgMjcsIDkxLCAyMzIsIDE5OSwgMjI3LCAyNCwgNjcsIDI0NywgMjAxLCAyLCAyNTAsIDEwNywgMjQ3LCA3NCwgMjQsIDIsIAotICAgIDI0NywgNzQsIDI0NSwgMTI3LCA2NSwgMjI3LCAzNSwgMjE1LCAxMjMsIDIzMiwgMTYzLCA0NiwgMjQ5LCAxMDAsIDIsIDI0NywgCi0gICAgNzQsIDIxNSwgMTMxLCA0MiwgMjQ5LCAxMDAsIDIsIDI0NywgNzQsIDQyLCAyMjYsIDI1MiwgMjM1LCA2OSwgNDYsIDIyNiwgCi0gICAgMjUyLCAyMzUsIDY5LCAyNDMsIDIwMCwgMjI2LCAyNTIsIDIzNSwgNjksIDIzMywgMTA4LCAxMTQsIDIxOCwgMzYsIDIzMywgCi0gICAgMTA4LCAxMTksIDIxOCwgMzYsIDQyLCAyNCwgNDYsIDUxLCAyMTYsIDU3LCA0MiwgMjQsIDQ2LCAyMTgsIDM2LCA0MiwgMjMwLCAKLSAgICAxNTcsIDE4NCwgNDYsIDIxOCwgMzYsIDE4NCwgNDIsIDIxOCwgMzYsIDExNCwgMjE4LCAzNywgMiwgMjQ5LCAyMjksIDQ5LCAKLSAgICAyMzIsIDE2MCwgMjQ3LCAxMjUsIDI1MSwgNywgMTk5LCAyMjMsIDQ0LCA2NywgMjQ5LCAxNDQsIDI0NywgMjAwLCA2NywgCi0gICAgMjQ5LCAxNDQsIDI0NywgMjAxLCAyLCAxMzIsIDIxNywgNjgsIDY3LCAyNDksIDE0NCwgMjQ3LCAyMDEsIDIsIDk1LCAyMTcsIAotICAgIDY4LCA2NywgNDEsIDIsIDEzMiwgMjE3LCA2OCwgNjcsIDQxLCAyLCA5NSwgMjE3LCA2OCwgMTQsIDQyLCA2NywgNDEsIDEyNSwgCi0gICAgMTQsIDQ2LCA2NywgNDEsIDEyNSwgMTQsIDQyLCAyNTQsIDE5LCAxMjUsIDE0LCA0NiwgMjU0LCAxOSwgMTI1LCAxNCwgNDIsIAotICAgIDUxLCAyNTQsIDE5LCAxMjUsIDE0LCA0NiwgNTEsIDI1NCwgMTksIDEyNSwgMTQsIDQyLCA2NywgMjE2LCAyMTksIDIyMCwgCi0gICAgMjMzLCAxMjUsIDE0LCA0NiwgNjcsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAxNCwgNDIsIDI0NCwgMzIsIDIyNiwgMTMxLCAKLSAgICAxNCwgNDYsIDI0NCwgMzIsIDIyNiwgMTMxLCAyMTUsIDEyNCwgMjI0LCAxNjksIDY4LCAyNDYsIDU4LCAyMjQsIDE2OSwgNjgsIAotICAgIDI1MywgMjU1LCAyNDMsIDc0LCAyNDksIDIyOSwgNjgsIDI0OSwgMTk1LCAyNDMsIDc0LCAyNDksIDIyOSwgNjgsIDQ2LCA3NiwgCi0gICAgMiwgMzYsIDIyNSwgMTU2LCAxODQsIDEzMiwgNjgsIDE4NCwgOTUsIDY4LCAxODQsIDQyLCA0NiwgNjgsIDE4NCwgMTMyLCAKLSAgICA1MSwgNjgsIDE4NCwgOTUsIDUxLCA2OCwgMTg0LCA0MiwgNDYsIDUxLCA2OCwgMTg0LCAxMzIsIDc2LCAyNDMsIDIxMywgCi0gICAgMTM0LCAxODQsIDk1LCA3NiwgMjQzLCAyMTMsIDEzNCwgMTg0LCAxMzIsIDUxLCA3NiwgMjQzLCAyMTMsIDEzNCwgMTg0LCAKLSAgICA5NSwgNTEsIDc2LCAyNDMsIDIxMywgMTM0LCAxODQsIDk1LCAyMTksIDE2MiwgNjgsIDQ0LCA0NSwgMjUxLCAxMzgsIDQ0LCAKLSAgICA0NSwgMjQ3LCA3MSwgNDQsIDQ1LCAyNDYsIDE5OSwgNDQsIDQ1LCAyNDcsIDcwLCA0NCwgNDUsIDI0NiwgMTM1LCA0NCwgNDUsIAotICAgIDI0NywgNiwgNDQsIDQ1LCAyNDYsIDE5OCwgNDQsIDQ1LCAyNDcsIDY5LCA0NCwgNDUsIDI0NiwgMTAzLCA0NCwgNDUsIDI0NiwgCi0gICAgMjMwLCA0NCwgNDUsIDI0NiwgMTY2LCA0NCwgNDUsIDI0NywgMzcsIDQ0LCA0NSwgMjQ2LCAxMzQsIDQ0LCA0NSwgMjQ3LCA1LCAKLSAgICA0NCwgNDUsIDI0NiwgMTk3LCA0NCwgNDUsIDI0NywgNjgsIDQ0LCA0NSwgMjQ2LCA4NywgNDQsIDQ1LCAyNDYsIDIxNCwgNDQsIAotICAgIDQ1LCAyNDYsIDE1MCwgNDQsIDQ1LCAyNDcsIDIxLCA0NCwgNDUsIDI0NiwgMTE4LCA0NCwgNDUsIDI0NiwgMjQ1LCA0NCwgCi0gICAgNDUsIDI0NiwgMTgxLCA0NCwgNDUsIDI0NywgNTIsIDQ0LCA0NSwgMjQ2LCAxMDIsIDQ0LCA0NSwgMjQ2LCAyMjksIDQ0LCAKLSAgICA0NSwgMjQ2LCAxNjUsIDQ0LCA0NSwgMjQ3LCAzNiwgNDQsIDQ1LCAyNDYsIDEzMywgNDQsIDQ1LCAyNDcsIDQsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxOTYsIDQ0LCA0NSwgMjQ3LCA2NywgNDQsIDQ1LCAyNDYsIDc5LCA0NCwgNDUsIDI0NiwgMjA2LCA0NCwgNDUsIAotICAgIDI0NiwgMTQyLCA0NCwgNDUsIDI0NywgMTMsIDQ0LCA0NSwgMjQ2LCAxMTAsIDQ0LCA0NSwgMjQ2LCAyMzcsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNzMsIDQ0LCA0NSwgMjQ3LCA0NCwgNDQsIDQ1LCAyNDYsIDk0LCA0NCwgNDUsIDI0NiwgMjIxLCA0NCwgNDUsIAotICAgIDI0NiwgMTU3LCA0NCwgNDUsIDI0NywgMjgsIDQ0LCA0NSwgMjQ2LCAxMjUsIDQ0LCA0NSwgMjQ2LCAyNTIsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxODgsIDQ0LCA0NSwgMjQ3LCA1OSwgNDQsIDQ1LCAyNDYsIDg2LCA0NCwgNDUsIDI0NiwgMjEzLCA0NCwgNDUsIAotICAgIDI0NiwgMTQ5LCA0NCwgNDUsIDI0NywgMjAsIDQ0LCA0NSwgMjQ2LCAxMTcsIDQ0LCA0NSwgMjQ2LCAyNDQsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxODAsIDQ0LCA0NSwgMjQ3LCA1MSwgNDQsIDQ1LCAyNDYsIDEwMSwgNDQsIDQ1LCAyNDYsIDIyOCwgNDQsIDQ1LCAKLSAgICAyNDYsIDE2NCwgNDQsIDQ1LCAyNDcsIDM1LCA0NCwgNDUsIDI0NiwgMTMyLCA0NCwgNDUsIDI0NywgMywgNDQsIDQ1LCAyNDYsIAotICAgIDE5NSwgNDQsIDQ1LCAyNDcsIDY2LCA0NCwgNDUsIDI0NiwgNzUsIDQ0LCA0NSwgMjQ2LCAyMDIsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxMzgsIDQ0LCA0NSwgMjQ3LCA5LCA0NCwgNDUsIDI0NiwgMTA2LCA0NCwgNDUsIDI0NiwgMjMzLCA0NCwgNDUsIDI0NiwgCi0gICAgMTY5LCA0NCwgNDUsIDI0NywgNDAsIDQ0LCA0NSwgMjQ2LCA5MCwgNDQsIDQ1LCAyNDYsIDIxNywgNDQsIDQ1LCAyNDYsIAotICAgIDE1MywgNDQsIDQ1LCAyNDcsIDI0LCA0NCwgNDUsIDI0NiwgMTIxLCA0NCwgNDUsIDI0NiwgMjQ4LCA0NCwgNDUsIDI0NiwgCi0gICAgMTg0LCA0NCwgNDUsIDI0NywgNTUsIDQ0LCA0NSwgMjQ2LCA4MiwgNDQsIDQ1LCAyNDYsIDIwOSwgNDQsIDQ1LCAyNDYsIAotICAgIDE0NSwgNDQsIDQ1LCAyNDcsIDE2LCA0NCwgNDUsIDI0NiwgMTEzLCA0NCwgNDUsIDI0NiwgMjQwLCA0NCwgNDUsIDI0NiwgCi0gICAgMTc2LCA0NCwgNDUsIDI0NywgNDcsIDQ0LCA0NSwgMjQ2LCA5NywgNDQsIDQ1LCAyNDYsIDIyNCwgNDQsIDQ1LCAyNDYsIAotICAgIDE2MCwgNDQsIDQ1LCAyNDcsIDMxLCA0NCwgNDUsIDI0NiwgMTI4LCA0NCwgNDUsIDI0NiwgMjU1LCA0NCwgNDUsIDI0NiwgCi0gICAgMTkxLCA0NCwgNDUsIDI0NywgNjIsIDQ0LCA0NSwgMjQ2LCA3OCwgNDQsIDQ1LCAyNDYsIDIwNSwgNDQsIDQ1LCAyNDYsIAotICAgIDE0MSwgNDQsIDQ1LCAyNDcsIDEyLCA0NCwgNDUsIDI0NiwgMTA5LCA0NCwgNDUsIDI0NiwgMjM2LCA0NCwgNDUsIDI0NiwgCi0gICAgMTcyLCA0NCwgNDUsIDI0NywgNDMsIDQ0LCA0NSwgMjQ2LCA5MywgNDQsIDQ1LCAyNDYsIDIyMCwgNDQsIDQ1LCAyNDYsIAotICAgIDE1NiwgNDQsIDQ1LCAyNDcsIDI3LCA0NCwgNDUsIDI0NiwgMTI0LCA0NCwgNDUsIDI0NiwgMjUxLCA0NCwgNDUsIDI0NiwgCi0gICAgMTg3LCA0NCwgNDUsIDI0NywgNTgsIDQ0LCA0NSwgMjQ2LCA4NSwgNDQsIDQ1LCAyNDYsIDIxMiwgNDQsIDQ1LCAyNDYsIAotICAgIDE0OCwgNDQsIDQ1LCAyNDcsIDE5LCA0NCwgNDUsIDI0NiwgMTE2LCA0NCwgNDUsIDI0NiwgMjQzLCA0NCwgNDUsIDI0NiwgCi0gICAgMTc5LCA0NCwgNDUsIDI0NywgNTAsIDQ0LCA0NSwgMjQ2LCAxMDAsIDQ0LCA0NSwgMjQ2LCAyMjcsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNjMsIDQ0LCA0NSwgMjQ3LCAzNCwgNDQsIDQ1LCAyNDYsIDEzMSwgNDQsIDQ1LCAyNDcsIDIsIDQ0LCA0NSwgMjQ2LCAxOTQsIAotICAgIDQ0LCA0NSwgMjQ3LCA2NSwgNDQsIDQ1LCAyNDYsIDczLCA0NCwgNDUsIDI0NiwgMjAwLCA0NCwgNDUsIDI0NiwgMTM2LCA0NCwgCi0gICAgNDUsIDI0NywgNywgNDQsIDQ1LCAyNDYsIDEwNCwgNDQsIDQ1LCAyNDYsIDIzMSwgNDQsIDQ1LCAyNDYsIDE2NywgNDQsIDQ1LCAKLSAgICAyNDcsIDM4LCA0NCwgNDUsIDI0NiwgODgsIDQ0LCA0NSwgMjQ2LCAyMTUsIDQ0LCA0NSwgMjQ2LCAxNTEsIDQ0LCA0NSwgCi0gICAgMjQ3LCAyMiwgNDQsIDQ1LCAyNDYsIDExOSwgNDQsIDQ1LCAyNDYsIDI0NiwgNDQsIDQ1LCAyNDYsIDE4MiwgNDQsIDQ1LCAKLSAgICAyNDcsIDUzLCA0NCwgNDUsIDI0NiwgODAsIDQ0LCA0NSwgMjQ2LCAyMDcsIDQ0LCA0NSwgMjQ2LCAxNDMsIDQ0LCA0NSwgCi0gICAgMjQ3LCAxNCwgNDQsIDQ1LCAyNDYsIDExMSwgNDQsIDQ1LCAyNDYsIDIzOCwgNDQsIDQ1LCAyNDYsIDE3NCwgNDQsIDQ1LCAKLSAgICAyNDcsIDQ1LCA0NCwgNDUsIDI0NiwgOTUsIDQ0LCA0NSwgMjQ2LCAyMjIsIDQ0LCA0NSwgMjQ2LCAxNTgsIDQ0LCA0NSwgCi0gICAgMjQ3LCAyOSwgNDQsIDQ1LCAyNDYsIDEyNiwgNDQsIDQ1LCAyNDYsIDI1MywgNDQsIDQ1LCAyNDYsIDE4OSwgNDQsIDQ1LCAKLSAgICAyNDcsIDYwLCA0NCwgNDUsIDI0NiwgNzYsIDQ0LCA0NSwgMjQ2LCAyMDMsIDQ0LCA0NSwgMjQ2LCAxMzksIDQ0LCA0NSwgCi0gICAgMjQ3LCAxMCwgNDQsIDQ1LCAyNDYsIDEwNywgNDQsIDQ1LCAyNDYsIDIzNCwgNDQsIDQ1LCAyNDYsIDE3MCwgNDQsIDQ1LCAKLSAgICAyNDcsIDQxLCA0NCwgNDUsIDI0NiwgOTEsIDQ0LCA0NSwgMjQ2LCAyMTgsIDQ0LCA0NSwgMjQ2LCAxNTQsIDQ0LCA0NSwgCi0gICAgMjQ3LCAyNSwgNDQsIDQ1LCAyNDYsIDEyMiwgNDQsIDQ1LCAyNDYsIDI0OSwgNDQsIDQ1LCAyNDYsIDE4NSwgNDQsIDQ1LCAKLSAgICAyNDcsIDU2LCA0NCwgNDUsIDI0NiwgODMsIDQ0LCA0NSwgMjQ2LCAyMTAsIDQ0LCA0NSwgMjQ2LCAxNDYsIDQ0LCA0NSwgCi0gICAgMjQ3LCAxNywgNDQsIDQ1LCAyNDYsIDExNCwgNDQsIDQ1LCAyNDYsIDI0MSwgNDQsIDQ1LCAyNDYsIDE3NywgNDQsIDQ1LCAKLSAgICAyNDcsIDQ4LCA0NCwgNDUsIDI0NiwgOTgsIDQ0LCA0NSwgMjQ2LCAyMjUsIDQ0LCA0NSwgMjQ2LCAxNjEsIDQ0LCA0NSwgCi0gICAgMjQ3LCAzMiwgNDQsIDQ1LCAyNDYsIDEyOSwgNDQsIDQ1LCAyNDcsIDAsIDQ0LCA0NSwgMjQ2LCAxOTIsIDQ0LCA0NSwgMjQ3LCAKLSAgICA2MywgNDQsIDQ1LCAyNDYsIDc0LCA0NCwgNDUsIDI0NiwgMjAxLCA0NCwgNDUsIDI0NiwgMTM3LCA0NCwgNDUsIDI0NywgOCwgCi0gICAgNDQsIDQ1LCAyNDYsIDEwNSwgNDQsIDQ1LCAyNDYsIDIzMiwgNDQsIDQ1LCAyNDYsIDE2OCwgNDQsIDQ1LCAyNDcsIDM5LCAKLSAgICA0NCwgNDUsIDI0NiwgODksIDQ0LCA0NSwgMjQ2LCAyMTYsIDQ0LCA0NSwgMjQ2LCAxNTIsIDQ0LCA0NSwgMjQ3LCAyMywgNDQsIAotICAgIDQ1LCAyNDYsIDEyMCwgNDQsIDQ1LCAyNDYsIDI0NywgNDQsIDQ1LCAyNDYsIDE4MywgNDQsIDQ1LCAyNDcsIDU0LCA0NCwgCi0gICAgNDUsIDI0NiwgODEsIDQ0LCA0NSwgMjQ2LCAyMDgsIDQ0LCA0NSwgMjQ2LCAxNDQsIDQ0LCA0NSwgMjQ3LCAxNSwgNDQsIDQ1LCAKLSAgICAyNDYsIDExMiwgNDQsIDQ1LCAyNDYsIDIzOSwgNDQsIDQ1LCAyNDYsIDE3NSwgNDQsIDQ1LCAyNDcsIDQ2LCA0NCwgNDUsIAotICAgIDI0NiwgOTYsIDQ0LCA0NSwgMjQ2LCAyMjMsIDQ0LCA0NSwgMjQ2LCAxNTksIDQ0LCA0NSwgMjQ3LCAzMCwgNDQsIDQ1LCAKLSAgICAyNDYsIDEyNywgNDQsIDQ1LCAyNDYsIDI1NCwgNDQsIDQ1LCAyNDYsIDE5MCwgNDQsIDQ1LCAyNDcsIDYxLCA0NCwgNDUsIAotICAgIDI0NiwgNzcsIDQ0LCA0NSwgMjQ2LCAyMDQsIDQ0LCA0NSwgMjQ2LCAxNDAsIDQ0LCA0NSwgMjQ3LCAxMSwgNDQsIDQ1LCAKLSAgICAyNDYsIDEwOCwgNDQsIDQ1LCAyNDYsIDIzNSwgNDQsIDQ1LCAyNDYsIDE3MSwgNDQsIDQ1LCAyNDcsIDQyLCA0NCwgNDUsIAotICAgIDI0NiwgOTIsIDQ0LCA0NSwgMjQ2LCAyMTksIDQ0LCA0NSwgMjQ2LCAxNTUsIDQ0LCA0NSwgMjQ3LCAyNiwgNDQsIDQ1LCAKLSAgICAyNDYsIDEyMywgNDQsIDQ1LCAyNDYsIDI1MCwgNDQsIDQ1LCAyNDYsIDE4NiwgNDQsIDQ1LCAyNDcsIDU3LCA0NCwgNDUsIAotICAgIDI0NiwgODQsIDQ0LCA0NSwgMjQ2LCAyMTEsIDQ0LCA0NSwgMjQ2LCAxNDcsIDQ0LCA0NSwgMjQ3LCAxOCwgNDQsIDQ1LCAKLSAgICAyNDYsIDExNSwgNDQsIDQ1LCAyNDYsIDI0MiwgNDQsIDQ1LCAyNDYsIDE3OCwgNDQsIDQ1LCAyNDcsIDQ5LCA0NCwgNDUsIAotICAgIDI0NiwgOTksIDQ0LCA0NSwgMjQ2LCAyMjYsIDQ0LCA0NSwgMjQ2LCAxNjIsIDQ0LCA0NSwgMjQ3LCAzMywgNDQsIDQ1LCAKLSAgICAyNDYsIDEzMCwgNDQsIDQ1LCAyNDcsIDEsIDQ0LCA0NSwgMjQ2LCAxOTMsIDQ0LCA0NSwgMjQ3LCA2NCwgOTUsIDIxNiwgMjQsIAotICAgIDc2LCAyLCA3MSwgOTAsIDk1LCAyMTYsIDI0LCA3NiwgMiwgNTEsIDcxLCA5MCwgMTMyLCA1MSwgNzYsIDIsIDcxLCA5MCwgCi0gICAgOTUsIDUxLCA3NiwgMiwgNzEsIDkwLCA0MiwgNDYsIDUxLCA3NiwgMiwgNzEsIDkwLCA5NSwgMjE2LCAyNCwgNzYsIDI0MywgCi0gICAgMjEzLCAxMzQsIDEzMiwgNTEsIDc2LCAyNDMsIDIxMywgMTM0LCA5NSwgNTEsIDc2LCAyNDMsIDIxMywgMTM0LCAyNDYsIDU4LCAKLSAgICA3NiwgMiwgMTk5LCA5MCwgMjE1LCAxMjQsIDc2LCAyLCAxOTksIDkwLCAyMTUsIDEyNCwgMjE2LCAxNjksIDY4LCAyNDYsIAotICAgIDU4LCAyMTYsIDE2OSwgNjgsIDEzMiwgNTEsIDI0OCwgMTAyLCA2OCwgOTUsIDUxLCAyNDgsIDEwMiwgNjgsIDEzMiwgMjE2LCAKLSAgICAxNjksIDI0OCwgMTAyLCA2OCwgOTUsIDIxNiwgMTY5LCAyNDgsIDEwMiwgNjgsIDk1LCAyMTYsIDI0LCAyMTYsIDE2OSwgCi0gICAgMjQ4LCAxMDIsIDY4LCA5NSwgNzYsIDIsIDI0NiwgNzIsIDIxOSwgNzksIDIxNSwgMTI0LCA3NiwgMjExLCAyMTEsIDEzNCwgCi0gICAgMjQ2LCA1OCwgNzYsIDIxMSwgMjExLCAxMzQsIDk1LCA3NiwgMiwgMjE4LCAyOCwgMiwgNzEsIDkwLCA5NSwgNzYsIDIsIAotICAgIDIxOCwgMjgsIDIsIDUxLCA3MSwgOTAsIDk1LCAyMTYsIDI0LCA3NiwgMiwgMjE4LCAyNywgOTUsIDIxNiwgMjQsIDc2LCAyLCAKLSAgICAyMTgsIDI4LCAyLCA3MSwgOTAsIDk1LCAyMTYsIDI0LCA3NiwgMiwgMjE4LCAyOCwgMiwgNTEsIDcxLCA5MCwgMTMyLCAyNTMsIAotICAgIDE2NiwgOTUsIDI1MywgMTY2LCAxMzIsIDUxLCAyNTMsIDE2NiwgOTUsIDUxLCAyNTMsIDE2NiwgMTMyLCA3NiwgMjExLCAKLSAgICAyMTEsIDgzLCAyNDcsIDIwMCwgOTUsIDc2LCAyMTEsIDIxMSwgODMsIDI0NywgMjAwLCAxMzIsIDc2LCAyNDMsIDIxMywgCi0gICAgMjUyLCA2MCwgMjExLCAyMTEsIDgzLCAyNDcsIDIwMCwgOTUsIDc2LCAyNDMsIDIxMywgMjUyLCA2MCwgMjExLCAyMTEsIDgzLCAKLSAgICAyNDcsIDIwMCwgMjI4LCAxNjcsIDIxMywgMjUwLCAyNCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA2OCwgMjI4LCAxNjcsIDI0NSwgCi0gICAgMTc2LCAyNCwgMjE5LCAyMTUsIDIxMywgMjUwLCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA3NiwgMiwgMTAxLCAyMjgsIAotICAgIDE2NywgMjQ1LCAxNzYsIDc2LCAyLCAxMDEsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNzYsIDIsIDEwMSwgMjE5LCAyMTUsIDIxMywgCi0gICAgMjUwLCA3NiwgMiwgMTAxLCAyMjgsIDE2NywgMjEzLCAyNTAsIDc2LCAyNCwgMjI4LCAxNjcsIDI0NSwgMTc2LCA2OCwgMjI4LCAKLSAgICAxNjcsIDI0NSwgMTc2LCA3NiwgMjQsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNjgsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNzYsIAotICAgIDI0LCAyMTksIDIxNSwgMjEzLCAyNTAsIDY4LCAyMTksIDIxNSwgMjEzLCAyNTAsIDc2LCAyNCwgMjI4LCAxNjcsIDIxMywgCi0gICAgMjUwLCA2OCwgMjIzLCAxMjUsIDI0NywgMjA3LCAyNDksIDY1LCAyNDQsIDE0MywgMjQ3LCAyMDYsIDI0NCwgMTQzLCAyNDcsIAotICAgIDIwNywgMjQ5LCA2NSwgMjIzLCAxMjUsIDI0NywgMjA2LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDc2LCAyNDksIDY1LCAyMjgsIAotICAgIDE2NywgMjQ1LCAxNzYsIDY4LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDc2LCAyNDksIDY1LCAyMTksIDIxNSwgMjQ1LCAxNzYsIAotICAgIDY4LCAyNDQsIDE0MywgMjQ3LCAyMDcsIDI0OSwgNjUsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNjgsIDIyMywgMTI1LCAyNDcsIAotICAgIDIwNywgMjQ5LCA2NSwgMjE5LCAyMTUsIDI0NSwgMTc2LCA2OCwgMjI4LCAxNjcsIDI0NSwgMTc2LCA3NiwgMjQ5LCA2NSwgCi0gICAgMjI4LCAxNjcsIDIxMywgMjUwLCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA3NiwgMjQ5LCA2NSwgMjI4LCAxNjcsIDI0NSwgCi0gICAgMTc2LCA2OCwgMjE0LCAyMCwgNzYsIDIyNSwgMTQxLCAyNDcsIDE0NywgMjIzLCAxNDgsIDc2LCAyMjUsIDE0MSwgOTUsIAotICAgIDIxNywgMTQxLCAyNDksIDMyLCAyMTUsIDEyMywgNzYsIDIyNSwgMTQxLCA5NSwgMjE3LCAxNDEsIDI0OSwgMzIsIDI0NiwgCi0gICAgNTcsIDc2LCAyMjUsIDE0MSwgMjQ2LCA1OCwgMjE3LCAxNDEsIDI0OSwgMzIsIDIzMywgNjEsIDc2LCAyMjUsIDE0MSwgMjQ2LCAKLSAgICA1OCwgMjE3LCAxNDEsIDI0OSwgMzIsIDIyMywgMTM4LCAyMjMsIDE0MSwgMjUzLCAxOTYsIDI0OSwgMTk1LCA2OCwgMjMzLCAKLSAgICA2NCwgMjUzLCAxOTYsIDI1MywgMjU1LCA2OCwgMjE2LCAyMjcsIDI1MywgMTk2LCAyNTMsIDI1NSwgNjgsIDI1MSwgMTAxLCAKLSAgICAyNTMsIDE5NiwgMjUzLCAyNTUsIDY4LCAyMTYsIDIyNywgMjUzLCAxOTYsIDI0OSwgMTk1LCA3NiwgMiwgMjMwLCAyNTAsIAotICAgIDIxNiwgMjI3LCAyNTMsIDE5NiwgMjUzLCAyNTUsIDc2LCAyLCAyMjUsIDE1NiwgMjMyLCAxNjMsIDQ2LCAyMjEsIDcyLCAKLSAgICAyNDksIDE5NSwgNjgsIDIzMiwgMTYzLCA0MiwgMjIxLCA3MiwgMjUzLCAyNTUsIDY4LCAyNTMsIDI1NSwgMjQ5LCAxOTMsIAotICAgIDI0OSwgMjI5LCA2OCwgMjQ5LCAxOTUsIDI0OSwgMTkzLCAyNDksIDIyOSwgNjgsIDk1LCA3NiwgNzgsIDIyMCwgMTc1LCAKLSAgICAxMzIsIDY4LCAxMzIsIDc2LCA3OCwgMjIwLCAxNzUsIDk1LCA2OCwgMjIwLCAxNzUsIDk1LCA3NiwgNzgsIDEzMiwgNjgsIAotICAgIDk1LCA3NiwgMiwgOTQsIDU1LCAxMzIsIDc2LCAyLCA5NCwgNTUsIDk1LCA3NiwgMjE3LCA5MywgMjEzLCAxNjYsIDQyLCA0NiwgCi0gICAgNzYsIDIxNywgOTMsIDMsIDI0OSwgMjI4LCAyMTUsIDEyNCwgMjE2LCAyNCwgNzYsIDI0MywgMjEzLCAzLCAyNDksIDIyOCwgCi0gICAgNDIsIDIwNiwgMTE0LCA0NiwgMjA2LCAxMTksIDI0MSwgMjM3LCA0MiwgMjA2LCAxMTksIDQ2LCAyMDYsIDExNCwgMjQxLCAKLSAgICAyMzcsIDExNCwgMjA2LCA0NiwgMTE5LCAyMDYsIDQyLCAyNDEsIDIzNywgMTE0LCAyMDYsIDQyLCAxMTksIDIwNiwgNDYsIAotICAgIDI0MSwgMjM3LCA0MiwgMjA2LCAxMTQsIDQ2LCAyMDYsIDExNCwgMjQxLCAyMzcsIDExNCwgMjA2LCA0NiwgMTE5LCAyMDYsIAotICAgIDQ2LCAyNDEsIDIzNywgNDIsIDIwNiwgMTE5LCA0NiwgMjA2LCAxMTksIDI0MSwgMjM3LCAxMTQsIDIwNiwgNDIsIDExOSwgCi0gICAgMjA2LCA0MiwgMjQxLCAyMzcsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCAyMTEsIDIxMSwgMTM0LCA5NSwgMjQxLCAKLSAgICAyMzgsIDIsIDIwNiwgMTE0LCAyMTEsIDIxMSwgMTM0LCAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDYsIDIxMSwgCi0gICAgMjExLCAxMzQsIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDQ2LCAyMTEsIDIxMSwgMTM0LCAxMzIsIDI0MSwgMjM4LCAyLCAKLSAgICAyMDYsIDExOSwgMjExLCAyMTEsIDEzNCwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDExOSwgMjExLCAyMTEsIDEzNCwgMjE1LCAKLSAgICAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDQyLCAyMTEsIDIxMSwgMTM0LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgCi0gICAgMjExLCAyMTEsIDEzNCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDI0MywgMjEzLCAxMzQsIDk1LCAyNDEsIDIzOCwgCi0gICAgMiwgMjA2LCAxMTQsIDI0MywgMjEzLCAxMzQsIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCA0NiwgMjQzLCAyMTMsIAotICAgIDEzNCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDYsIDI0MywgMjEzLCAxMzQsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgCi0gICAgMTE5LCAyNDMsIDIxMywgMTM0LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMTE5LCAyNDMsIDIxMywgMTM0LCAyMTUsIDEyNCwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI0MywgMjEzLCAxMzQsIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDQyLCAyNDMsIAotICAgIDIxMywgMTM0LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgNzgsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA2MCwgCi0gICAgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDQyLCAyNTEsIDIwNywgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIAotICAgIDIyMywgMTQ4LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCA3OCwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNjAsIAotICAgIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDQyLCAyNTEsIDIwNywgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgMjIzLCAKLSAgICAxNDgsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCA3OCwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDIxNSwgMTM0LCAxMzIsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDExOSwgNzgsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDYwLCA5NSwgMjQxLCAyMzgsIAotICAgIDIsIDIwNiwgMTE0LCA3OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyMTUsIDEzNCwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIAotICAgIDExOSwgNzgsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA2MCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDc4LCAKLSAgICAxODQsIDI0OCwgMTAxLCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExOSwgMjUxLCAyMjAsIDE4NCwgMjQ4LCAxMDEsIDk1LCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDc4LCAxODQsIDI0OCwgMTAxLCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMTE5LCAyNTEsIAotICAgIDIyMCwgMTg0LCAyNDgsIDEwMSwgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDQyLCAyNTEsIDIwNywgMjQ2LCA1OCwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgMjIzLCAxNDgsIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDQyLCAyNTEsIDIwNywgMjE1LCAKLSAgICAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDIyMywgMTQ4LCA0NiwgNTEsIDc2LCAyLCAyMjMsIDg1LCAyNDEsIDIxOSwgMjQ1LCAKLSAgICA2MSwgNSwgNzgsIDk1LCA2OCwgMjE3LCA0MywgMjI3LCAzNCwgNzgsIDk1LCA2OCwgMTMyLCA3NiwgNzgsIDIxNywgNDMsIAotICAgIDIyNywgMzMsIDk1LCA3NiwgNzgsIDIxNywgNDMsIDIyNywgMzMsIDk1LCA3NiwgNzgsIDI1NCwgNTcsIDEyMywgMTA4LCAKLSAgICAyMzMsIDM5LCA3OCwgMTMyLCA2OCwgMTMyLCA3NiwgMjE3LCA5MywgMjMzLCAzOCwgMjQyLCAxMDcsIDc4LCA5NSwgNjgsIAotICAgIDIxOSwgOSwgNzgsIDk1LCA2OCwgMTMyLCA3NiwgMjE3LCA5MywgMjE5LCA4LCAyMTgsIDIyMiwgNzgsIDEzMiwgNjgsIDQyLCAKLSAgICAyNDQsIDYwLCAyMTgsIDI3LCA0NiwgMjQ0LCA2MCwgMjE4LCAyNywgMTE0LCAyNDQsIDYwLCAyMTgsIDI3LCAxMTksIDI0NCwgCi0gICAgNjAsIDIxOCwgMjcsIDIxNiwgMTY5LCA3MSwgMjUyLCA2MCwgMjQ4LCAxMSwgMjEyLCAxNTMsIDE3NCwgMjE5LCAxNzQsIAotICAgIDIxMiwgMTUzLCAxNzQsIDIxNiwgMTUsIDI0OSwgMTY0LCA0MiwgNjcsIDI0OSwgNDAsIDEyNSwgNDYsIDY3LCAyNDksIDQwLCAKLSAgICAxMjUsIDQyLCA2NywgMjI2LCAxMzEsIDQ2LCA2NywgMjI2LCAxMzEsIDIxMiwgMTUzLCAxNzQsIDQyLCAyMzYsIDEwLCAxMjUsIAotICAgIDIxMiwgMTUzLCAxNzQsIDQ2LCAyMzYsIDEwLCAxMjUsIDIxMiwgMTUzLCAxNzQsIDQyLCAyNTEsIDE2NSwgMTI1LCAyMTIsIAotICAgIDE1MywgMTc0LCA0NiwgMjUxLCAxNjUsIDEyNSwgNDIsIDQxLCAyNTEsIDg1LCAyLCAyMTUsIDE1MywgNDYsIDQxLCAyNTEsIAotICAgIDg1LCAyLCAyMTUsIDE1MywgNDIsIDQxLCAyNTEsIDg1LCAyLCAyMTcsIDY5LCAyMzUsIDI1MiwgMjE2LCAyMjcsIDI0OSwgCi0gICAgOTksIDQ2LCA0MSwgMjUxLCA4NSwgMiwgMjE3LCA2OSwgMjM1LCAyNTIsIDI1MSwgMTAxLCAyNDksIDk5LCA0MiwgNDEsIAotICAgIDI1MSwgODUsIDIsIDIxNywgNjksIDIzNSwgMjUyLCAyNTEsIDEwMSwgMjQ5LCA5OSwgNDYsIDQxLCAyNTEsIDg1LCAyLCAKLSAgICAyMTcsIDY5LCAyMzUsIDI1MiwgMjE2LCAyMjcsIDI0OSwgOTksIDQyLCAyNTQsIDE5LCAyNTEsIDg1LCAyLCAyNDcsIDc0LCAKLSAgICA0NiwgMjU0LCAxOSwgMjUxLCA4NSwgMiwgMjQ3LCA3NCwgNDIsIDI1MywgMTk2LCAyMzMsIDM5LCAxMjUsIDQ2LCAyNTMsIAotICAgIDE5NiwgMjQyLCAxMDcsIDEyNSwgNTEsIDQyLCAyNTMsIDE5NiwgMjQyLCAxMDcsIDEyNSwgNTEsIDQ2LCAyNTMsIDE5NiwgCi0gICAgMjMzLCAzOSwgMTI1LCA0MiwgODMsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCA0NiwgODMsIDIxNiwgMjE5LCAyMjAsIAotICAgIDIzMywgMTI1LCAyNDYsIDcyLCAyNDQsIDEwNCwgNzEsIDIxMiwgMjgsIDIzMiwgMjQyLCAyMzEsIDE1MywgMjU0LCAxOSwgCi0gICAgMjI3LCAzNSwgMjMzLCA3MCwgNDYsIDI1NCwgMTksIDIxNCwgMjQ0LCAyLCAyMTksIDE2NiwgMjMxLCAxNTMsIDQ2LCAyNTQsIAotICAgIDE5LCAyLCAyNDcsIDc0LCAyNTQsIDE5LCAyLCAyMjMsIDQsIDIzNSwgMjEyLCAyNTQsIDE2NCwgMjU0LCAxOCwgMjE5LCAKLSAgICAxODcsIDI1NCwgMTksIDIyNywgMzUsIDIzMywgNzAsIDIxOSwgMTg3LCAyNTQsIDE5LCAyMjcsIDM1LCAyMTUsIDEzNCwgCi0gICAgMjE2LCA1OCwgMjU0LCAxOCwgMjIzLCAyMDIsIDI1NCwgMTgsIDI1NCwgMTksIDIsIDIxNSwgMTUzLCAyMjMsIDIwMiwgMjU0LCAKLSAgICAxOSwgMiwgMjE1LCAxNTMsIDIyNywgMTEyLCAyNTQsIDE5LCAyMjcsIDM1LCAyMTUsIDEzNCwgMjI3LCAxMTIsIDI1NCwgMTksIAotICAgIDIyNywgMzUsIDI0NiwgNjAsIDIzMSwgMTUzLCAyNTQsIDE5LCAyLCAyMjcsIDQwLCAyNTMsIDE3NiwgMjQ1LCA5OCwgMjM1LCAKLSAgICAyNTIsIDc2LCAyMjUsIDE0MSwgMTE0LCAyNCwgMjIzLCAxNDgsIDIzMSwgMTUzLCAyNTQsIDE5LCAyLCAyMjcsIDQwLCAyNTMsIAotICAgIDE3NiwgMjQ1LCA5OCwgMjM1LCAyNTIsIDc2LCAyMjUsIDE0MSwgMTE0LCAyNCwgMjMzLCA3MCwgMjMxLCAxNTMsIDI1NCwgCi0gICAgMTksIDIsIDIyNywgNDAsIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIDIyNSwgMTQxLCAxMTksIDI0LCAyMjMsIAotICAgIDE0OCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIDIyNSwgCi0gICAgMTQxLCAxMTksIDI0LCAyMzMsIDcwLCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIAotICAgIDIzNSwgMjUyLCA3NiwgMjI1LCAxNDEsIDQ2LCAyNCwgMjE1LCAxMzQsIDIzMSwgMTUzLCAyNTQsIDE5LCAyLCAyMjcsIDQwLCAKLSAgICAyNTMsIDE3NiwgMjQ1LCA5OCwgMjM1LCAyNTIsIDc2LCAyMjUsIDE0MSwgNDIsIDI0LCAyMTUsIDEzNCwgMjMxLCAxNTMsIAotICAgIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIDIyNSwgMTQxLCA0NiwgMjQsIAotICAgIDI0NiwgNjAsIDIzMSwgMTUzLCAyNTQsIDE5LCAyLCAyMjcsIDQwLCAyNTMsIDE3NiwgMjQ1LCA5OCwgMjM1LCAyNTIsIDc2LCAKLSAgICAyMjUsIDE0MSwgNDIsIDI0LCAyNDYsIDYwLCAyMjMsIDIwMiwgMjQ1LCAxMTAsIDIyMSwgNDgsIDI0NSwgMTEwLCAyMjEsIAotICAgIDQ5LCAyLCAyMjYsIDI0NywgMjQ1LCAxMTAsIDIyMSwgNDksIDIsIDMsIDI0OSwgMjI5LCA0OSwgMjQ1LCAxMTAsIDIyMSwgCi0gICAgNDksIDIsIDQ2LCA3NiwgNDksIDI0NSwgMTEwLCAyMjEsIDQ5LCAyLCA0MiwgNzYsIDQ5LCAyNDksIDIyOSwgMiwgMTk5LCAKLSAgICAxMzQsIDM2LCA3MSwgMTM0LCAzNiwgMjI2LCAxMzUsIDM2LCAyMjMsIDIwMywgMjE5LCAyMzEsIDM2LCAyMjYsIDQ3LCAyNDksIAotICAgIDIyOSwgMjQ3LCAxMjUsIDI1MSwgNywgMTk5LCAyNTIsIDYwLCAyNCwgMjE2LCAyMjcsIDE1MSwgMjQ3LCAxMjUsIDI1MSwgNywgCi0gICAgNzEsIDEzNCwgMjQ5LCAyMjksIDIsIDIxOCwgMjI0LCAyMTMsIDE2NiwgMzYsIDI1MywgMjU0LCAyNDcsIDEyMSwgNTIsIAotICAgIDExNCwgNzYsIDIxNywgOTMsIDI0OSwgMjI4LCAzNiwgNjcsIDI1MSwgNDIsIDM2LCAyNTEsIDQyLCAzNiwgMjMzLCAzOCwgCi0gICAgMzYsIDI0MiwgMTA2LCAyNDksIDIyOSwgMiwgMywgMjQ5LCAyMjksIDIxMSwgMjExLCAyMTcsIDE0OSwgMjIzLCAxNDgsIAotICAgIDI0OSwgMjI5LCAyLCAxMTcsIDE5OSwgMjE5LCAzMywgMjExLCAyMTEsIDIxNywgMTQ5LCAyMjMsIDE0OCwgOTEsIDIyMywgCi0gICAgMTI1LCAyNDcsIDIwNywgMjIwLCAyMywgOTEsIDI0NCwgMTQzLCAyNDcsIDIwNywgMjIwLCAyMywgOTEsIDI1MywgMTMyLCAKLSAgICA5MSwgMywgMjQ5LCAyMjgsIDkxLCAyMTksIDE2NiwgMTE3LCAyMzUsIDY4LCAyMTksIDE2NCwgMjE2LCAxODQsIDIsIDYyLCAKLSAgICA0OSwgMjE2LCAxODQsIDIsIDIxNSwgMTUzLCAyMjMsIDQsIDIzNSwgMjUyLCAyMTYsIDE4MywgMjE2LCAxODQsIDIsIDIyMSwgCi0gICAgNTUsIDI1MywgMTIzLCAyNTEsIDEwMCwgNDYsIDIxNiwgMTg0LCA3OCwgNDIsIDIxNiwgMTgzLCA0MiwgMjE2LCAxODQsIAotICAgIDI1MSwgMjA3LCA3MSwgMTM0LCA3MSwgMjUyLCA2MCwgMjUxLCAyMDcsIDQ2LCAyMTYsIDE4MywgMjUxLCA5MSwgMiwgNDIsIAotICAgIDE1MSwgMjUxLCAxNDQsIDI1MSwgOTEsIDIsIDQ2LCAxNTEsIDI1MSwgMTQ0LCA4MywgMjUxLCA5MCwgMjksIDIsIDQyLCAKLSAgICAxNTEsIDI1MSwgMTQ0LCAyOSwgMiwgNDYsIDE1MSwgMjUxLCAxNDQsIDY3LCAyNDAsIDIyMywgODMsIDI0MCwgMjIzLCA0MiwgCi0gICAgMjEzLCAyMjksIDI0NCwgMTA0LCA0NiwgMjEzLCAyMjksIDI0NCwgMTA0LCA0MiwgNTEsIDIxMywgMjI5LCAyNDQsIDEwNCwgCi0gICAgNDYsIDUxLCAyMTMsIDIyOSwgMjQ0LCAxMDQsIDIzNSwgMjQ0LCAyMzUsIDIzMSwgMjE3LCA2NiwgMTEwLCAyMzUsIDIzMSwgCi0gICAgMjM1LCAyMzIsIDIyOSwgMTgzLCAyLCA3MSwgMTM0LCAyNDYsIDY2LCAyMzAsIDE1NywgNDEsIDIsIDI0OSwgMTIwLCAyMjYsIAotICAgIDI1MSwgMjM1LCAyNDIsIDI1MywgMTUyLCAyMjAsIDE0NCwgMjI1LCA2MywgMjQ1LCA2MSwgNSwgMjQsIDIyMCwgMjUsIDIyNiwgCi0gICAgMTM1LCAyNDUsIDYxLCA1LCAyNCwgMjIwLCAyNSwgMjI2LCAxMzYsIDIsIDIxNywgNDMsIDQ5LCAyNDAsIDk3LCAyMTEsIAotICAgIDIxMSwgMjQsIDIyMCwgMjUsIDIyNiwgMTM1LCAyNDIsIDE1OSwgMjE5LCA5NCwgMjE3LCAxMzgsIDI0NiwgNTksIDIxNiwgCi0gICAgMTg0LCAyLCA0MiwgMTUxLCAyNTEsIDE0NCwgMjQ2LCA1OSwgMjE2LCAxODQsIDIsIDQ2LCAxNTEsIDI1MSwgMTQ0LCA4MywgCi0gICAgMjQ3LCAyMDEsIDIsIDExOSwgNjgsIDgzLCAyMzIsIDE1OSwgNjcsIDI0OSwgMjI5LCAyLCAxMTksIDY4LCA4MywgMjQ5LCAKLSAgICAyMjksIDIsIDExOSwgNjgsIDI0NSwgNDgsIDY3LCAyMTksIDE2NiwgMjQ1LCA0OCwgODMsIDIxOSwgMTY2LCAyNDUsIDQ4LCAKLSAgICA2NywgMjQ3LCAyMDAsIDI0NSwgNDgsIDgzLCAyNDcsIDIwMCwgMjQ1LCA0OCwgNjcsIDI0OSwgMjI4LCAyNDUsIDQ4LCA4MywgCi0gICAgMjQ5LCAyMjgsIDIyMywgNDMsIDIyMywgMjAzLCAyMTksIDIzMiwgMjI3LCAzMywgMjE5LCAyMzIsIDIsIDIyNiwgMjQ3LCAKLSAgICAyMjMsIDIwMywgMjE5LCAyMzIsIDIsIDE5OSwgOTAsIDI1MSwgMTcyLCAyMTksIDIzMSwgMjUxLCAxNzIsIDIyMywgMjAzLCAKLSAgICAyMTksIDIzMSwgNTEsIDIyNSwgMTU2LCAyMTYsIDE2OSwgMjI1LCAxNTYsIDIzMywgNjYsIDI0OSwgMzMsIDI1NCwgMTksIAotICAgIDEyNSwgMjIzLCAxNDQsIDI0OSwgMzMsIDI1NCwgMTksIDEyNSwgMjE3LCAzMSwgMjMwLCAyNDgsIDIzMCwgOTcsIDM2LCA2MiwgCi0gICAgMjI3LCAzMywgMjMwLCA5NywgMzYsIDk0LCAyMjcsIDMzLCAyMzAsIDk3LCAzNiwgMjksIDIyNywgMzMsIDIzMCwgOTcsIAotICAgIDIxNSwgMTQ3LCAyMjcsIDM0LCAyLCAyNDcsIDc0LCAyMzAsIDk3LCAyMTUsIDE0NywgMjI3LCAzNCwgMiwgMjI1LCAxNTYsIAotICAgIDIzMCwgOTcsIDQxLCAyMzUsIDE5NiwgMjI3LCAzMywgMjMwLCA5NywgNDEsIDIxNSwgMTQ3LCAyMjcsIDMzLCAxMTcsIDIzMiwgCi0gICAgMTk5LCAyNCwgMjI3LCAzMywgMTE3LCAyMzIsIDE5OSwgMTY3LCAyMjcsIDMzLCAyMzAsIDk3LCAyOSwgMjI3LCAzMywgMjMwLCAKLSAgICAyMjQsIDExNywgMjE4LCAyNDQsIDIxOCwgMjQyLCAyLCAyMzUsIDIwOCwgMjI0LCAxNjksIDIzNSwgMjA5LCAyMjcsIDMzLCAKLSAgICAyNDQsIDY4LCAyMjYsIDEyNywgMjM1LCAyMDgsIDIzNSwgMjA5LCAyLCA1MSwgOTAsIDIzNSwgMjA5LCAyNTMsIDg5LCAyLCAKLSAgICAyMjAsIDIzLCAyNDksIDIyNSwgMjQzLCAxOTcsIDI1MywgMjU1LCAyMzUsIDIwNiwgMjMyLCAyNDMsIDIzNSwgMjA3LCAyLCAKLSAgICAyMjQsIDgsIDIyNiwgMTEwLCAyNTMsIDE3MywgMjI1LCAxMzUsIDIzMiwgMjQzLCAyMzUsIDIwNywgMiwgMjIxLCA3MiwgCi0gICAgMjI2LCAxMTAsIDI1MywgMTczLCAyMjUsIDEzNSwgMjMyLCAyNDMsIDIzNSwgMjA3LCAyMjgsIDE2MywgMjM1LCAyNDYsIAotICAgIDIxNywgMTQ5LCAyMjUsIDEzNSwgMjM1LCAyMDksIDI1MywgMTczLCAxMTgsIDIyNSwgMTQ1LCAyMjcsIDMzLCAyMjQsIDE2MywgCi0gICAgMjM1LCAyMDksIDIyNywgMzMsIDIzNSwgMjA5LCAyLCAxMzIsIDc2LCAyLCAxMDEsIDIzNSwgMjA5LCAyLCAyOSwgNTIsIAotICAgIDIzNSwgMjA5LCAyLCAyMzUsIDE5NSwgMjM1LCAyMDksIDIsIDIxNSwgMTQ2LCAyMzUsIDIwOSwgMiwgMjI2LCAyNDcsIDIzNSwgCi0gICAgMjA5LCAyLCAyMTUsIDE1MywgMjM1LCA2OSwgMjMzLCAxMDgsIDQyLCAyMTYsIDE4NCwgMjI3LCAzMywgMjEyLCAxNTMsIAotICAgIDE3NCwgMjIyLCAxMTksIDI0OSwgMTQ4LCAyMTIsIDE1MywgMTc0LCAyMjIsIDExOSwgMjI1LCAxODgsIDIxMiwgMTUzLCAKLSAgICAxNzQsIDIyMiwgMTE5LCAyMjUsIDYwLCA5NCwgNSwgMiwgMywgMjQ5LCAyMjksIDQ5LCA5NCwgNSwgMiwgMjQ5LCAyMjQsIAotICAgIDI1NCwgMTc1LCA0OSwgOTQsIDUsIDIsIDIxNywgNDMsIDQ5LCA5NCwgNSwgMiwgNjIsIDU1LCA5NCwgNSwgMiwgMjE3LCA0MywgCi0gICAgNTUsIDk0LCA1LCAyLCAyMTksIDEwLCAxMDksIDk0LCA1LCAyLCA4MywgMjE2LCAxODMsIDIzMCwgMjUxLCA1LCAyLCAyNDksIAotICAgIDE1OCwgNDksIDIzMCwgMjUxLCA1LCAyLCA2MiwgNTUsIDIzMCwgMjUxLCA1LCAyLCAyNDQsIDE0MywgMjQ3LCA3MiwgMjMwLCAKLSAgICAyNTEsIDUsIDIsIDIyMywgMTI1LCAyNDcsIDcyLCA5NCwgNSwgMjM1LCAyNTIsIDQyLCAxNTEsIDI0OSwgMjI4LCA5NCwgNSwgCi0gICAgMjM1LCAyNTIsIDQ2LCAxNTEsIDI0OSwgMjI4LCAyMTQsIDIzMSwgMTY3LCAyNDksIDcxLCAyMjUsIDYzLCAyMzAsIDE1NCwgCi0gICAgNSwgMiwgNjIsIDQ5LCAyMzAsIDE1NCwgNSwgMiwgMjE1LCAxNTMsIDIyMSwgNjksIDIyNSwgNjQsIDIsIDI1MSwgMTAxLCAKLSAgICAyNDksIDE5MiwgMjIwLCA1LCAyMjUsIDYzLCAyMzAsIDE1NCwgNSwgMjM1LCAyNTIsIDQyLCAxNTEsIDI0OSwgMjI4LCAyMzAsIAotICAgIDE1NCwgNSwgMjM1LCAyNTIsIDQ2LCAxNTEsIDI0OSwgMjI4LCAzNiwgMjMwLCAxNTQsIDUsIDIsIDI0OSwgMjI0LCAyNTQsIAotICAgIDE3NCwgMjMwLCAxNTQsIDUsIDIzNSwgMjUyLCA1MSwgMjQ5LCAyMjgsIDM2LCAyNDcsIDEyMSwgNTIsIDk0LCA1LCAyMzUsIAotICAgIDI1MiwgMjE2LCAxODMsIDIzMCwgMjUxLCA1LCAyMzUsIDI1MiwgMjE2LCAxODMsIDIzMCwgMTU0LCA1LCAyMzUsIDI1MiwgCi0gICAgMjE2LCAxODMsIDIzNSwgMjAzLCAyMjUsIDYzLCAyMjMsIDEzOSwgMjM1LCAyMDMsIDIyNSwgNjMsIDIxMiwgMTUzLCAxNzQsIAotICAgIDIyMywgMjQwLCAyNDksIDE0OCwgMjU0LCA0MywgMTY3LCAyNDksIDEwNCwgMjM1LCAxOTYsIDIsIDI0NywgNzQsIDIxNSwgCi0gICAgMTQ3LCAyLCAyMzAsIDI1MSwgNTIsIDIxNSwgMTQ3LCAyLCAyMjYsIDI0NywgMjM1LCAxOTYsIDIsIDIyNiwgMjQ3LCAyMzUsIAotICAgIDE5NiwgMiwgMjMyLCAxOTksIDI1NCwgMjcsIDIxNSwgMTQ3LCAyLCAyMzIsIDE5OSwgMjI3LCAyNCwgMjE1LCAxNDcsIDc4LCAKLSAgICAyMzUsIDE5NSwgMjM1LCAxOTYsIDc4LCAyMTUsIDE0NiwgMjE1LCAxNDcsIDc4LCAyNTIsIDYwLCA3OCwgMjM1LCAxOTUsIAotICAgIDIzNSwgMTk2LCA3OCwgMjUyLCA2MCwgNzgsIDIxNSwgMTQ2LCAyMTUsIDE0NywgMjUxLCAyMDcsIDI0LCAyMzUsIDY4LCAyLCAKLSAgICAyMTUsIDE0NiwgMjM1LCAxOTYsIDI1MSwgMjA3LCAyNCwgMjM1LCA2OCwgMiwgMjM1LCAxOTUsIDI0OSwgMTkzLCAyMTUsIAotICAgIDE0NywgMiwgMjIxLCA1NCwgMjQ5LCAxOTMsIDIzNSwgMTk2LCAyLCAyMjEsIDU0LCA1MSwgNDEsIDIzNSwgMTk1LCA1MSwgCi0gICAgNDEsIDIxNSwgMTQ2LCAyNDksIDE5MywgMjE1LCAxNDcsIDIsIDIyMSwgNTUsIDI0LCAyMjAsIDUsIDIyNSwgNjMsIDIzMiwgCi0gICAgMTk5LCAyNCwgMiwgNjIsIDQ5LCAyMzIsIDE5OSwgMTY3LCAyLCA2MiwgNDksIDUxLCAyMzIsIDE5OSwgMjU0LCAyNywgNTEsIAotICAgIDIzMiwgMTk5LCAyMjcsIDI0LCAxMTcsIDIzNSwgMTk3LCAyMzIsIDE5OSwgMjU0LCAyNywgMTE3LCAyMzUsIDE5NywgMjMyLCAKLSAgICAxOTksIDIyNywgMjQsIDIyMCwgMTMsIDIzMywgMTA4LCAyMjcsIDI0LCAyMjAsIDEzLCAyMzMsIDEwOCwgMjU0LCAyNywgCi0gICAgMjMyLCAxOTksIDE2NywgMjI2LCAyNDUsIDIzMiwgMTk5LCAyNTQsIDI3LCAyMzIsIDE5OSwgMjQsIDIsIDIzMSwgMzcsIAotICAgIDIxOSwgNzksIDIzMiwgMTk5LCAxNjcsIDIsIDIzMSwgMzcsIDIxOSwgNzksIDIzMiwgMTk5LCAyNCwgMiwgMTk5LCAyNDgsIAotICAgIDEwMSwgMjMyLCAxOTksIDE2NywgMiwgMTk5LCAyNDgsIDEwMSwgMjMyLCAxOTksIDI0LCAyLCA1MSwgMjI2LCAyNDcsIDIzMiwgCi0gICAgMTk5LCAyNCwgMiwgMjE1LCAxNTMsIDIzMiwgMTk5LCAyNCwgMiwgNTEsIDIxNSwgMTUzLCAzLCAyMTQsIDIyOCwgMiwgMjE1LCAKLSAgICAxNTMsIDIzMiwgMTk5LCAxNjcsIDIsIDUxLCAyMjYsIDI0NywgMjMyLCAxOTksIDE2NywgMiwgNTEsIDIxNSwgMTUzLCAyMTIsIAotICAgIDE1MywgMTc0LCAyNDcsIDgzLCAyNTMsIDI0NiwgMjEyLCAxNTMsIDE3NCwgMjI0LCA0MCwgMjUzLCAyNDYsIDI0NSwgNjEsIAotICAgIDUsIDIsIDYyLCA1NSwgMjQwLCA5NywgMiwgNjIsIDQ5LCAyMTYsIDE2OSwgMTk5LCAyNTIsIDYwLCAyLCA1MSwgNzEsIDkwLCAKLSAgICAyMTYsIDE2OSwgMTk5LCAyNTIsIDYwLCAyLCAyMTYsIDE2OSwgNzEsIDkwLCAyMTcsIDQzLCAyMjcsIDM0LCAyLCA2MiwgNDksIAotICAgIDIxNywgNDMsIDIyNywgMzQsIDIsIDIyMywgMTI1LCAyNDcsIDcyLCAyMjAsIDg4LCAyMzAsIDI1MSwgMjIwLCA4NywgMjQ5LCAKLSAgICAxMzksIDIsIDYyLCA0OSwgMjQ1LCA2MSwgMiwgMjUzLCAxMzIsIDI1NCwgNTcsIDEyMywgMjExLCAyMTEsIDIsIDI0OSwgCi0gICAgMjI0LCAyNTQsIDE3NCwgMjUzLCAyMTgsIDEyMywgMTY3LCAxMjMsIDEwOCwgMjQ1LCA2MSwgNSwgNzgsIDk0LCA1MiwgOTQsIAotICAgIDUsIDc4LCAyNDUsIDYxLCA1MiwgMjQ1LCA2MSwgNSwgNzgsIDIxNywgNDMsIDIyNywgMzMsIDUxLCAyNDksIDE2NSwgMjQ1LCAKLSAgICA2MiwgMTE3LCAyNDksIDEzNCwgMjQ1LCA2MSwgMjIwLCAxMDIsIDEzMywgMjQ5LCAxMzQsIDI0NSwgNjEsIDIyMCwgMTAyLCAKLSAgICAyNDUsIDYxLCA1LCAyLCAxMTcsIDE3NiwgNzgsIDI0LCAxMTcsIDE3NiwgNTUsIDI0NSwgNTcsIDIsIDI0MywgMjM3LCAxNzYsIAotICAgIDQ5LCAyMzMsIDM5LCAyLCAyNDksIDIyOSwgMjM1LCAyMTIsIDI0MiwgMTA3LCAyLCAyNDksIDIyOSwgMjM1LCAyMTIsIDIzMywgCi0gICAgMzksIDIsIDIyNCwgMTU4LCAxNTIsIDQ5LCAyNDIsIDEwNywgMiwgMjI0LCAxNTgsIDE1MiwgNDksIDIzMywgMzksIDE2NywgCi0gICAgMjIwLCAyNSwgMTIzLCAxMDgsIDI0MiwgMTA3LCAxNjcsIDIyMCwgMjUsIDEyMywgMTA4LCAyMzMsIDM5LCAxNjcsIDIyMCwgCi0gICAgMjUsIDEyMywgMjExLCAyMTEsIDIsIDYyLCAyMzUsIDIxMiwgMjQyLCAxMDcsIDE2NywgMjIwLCAyNSwgMTIzLCAyMTEsIAotICAgIDIxMSwgMiwgNjIsIDIzNSwgMjEyLCAyMzMsIDM5LCAxNjcsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDIsIDYyLCA0OSwgCi0gICAgMjQyLCAxMDcsIDE2NywgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDQ5LCAyMzMsIDM5LCAxNjcsIDIyMCwgMjUsIAotICAgIDEyMywgMjExLCAyMTEsIDIsIDYyLCA3OCwgMjIzLCAxNDgsIDI0MiwgMTA3LCAxNjcsIDIyMCwgMjUsIDEyMywgMjExLCAKLSAgICAyMTEsIDIsIDYyLCA3OCwgMjMzLCA3MCwgMjMzLCAzOSwgMTY3LCAyNTMsIDIxOSwgMjQyLCAxMDcsIDE2NywgMjUzLCAyMTksIAotICAgIDIzMywgMzksIDI0LCAyMjAsIDc5LCAyMjgsIDE2MywgMTIzLCAxMDgsIDI0MiwgMTA3LCAyNCwgMjIwLCA3OSwgMjI4LCAKLSAgICAxNjMsIDEyMywgMTA4LCAyMzMsIDM5LCAyNCwgMjI4LCAxNjMsIDI1MywgMjE5LCAyNDIsIDEwNywgMjQsIDIyOCwgMTYzLCAKLSAgICAyNTMsIDIxOSwgMjMzLCAzOSwgNzgsIDI0NiwgNjUsIDEyMywgNzgsIDI0MiwgMTA2LCAyNDIsIDEwNywgNzgsIDI0NiwgNjUsIAotICAgIDEyMywgNzgsIDIzMywgMzgsIDIzMywgMzksIDc4LCAyMjAsIDg4LCAxNjcsIDI0NSwgNjIsIDI0MiwgMTA3LCA3OCwgMjIwLCAKLSAgICA4OCwgMTY3LCAyNDUsIDYyLCAyMzMsIDM5LCA3OCwgMjIwLCA4OCwgNzgsIDI0MiwgMTA2LCAyNDIsIDEwNywgNzgsIDIyMCwgCi0gICAgODgsIDc4LCAyMzMsIDM4LCAyMzMsIDM5LCA3OCwgMjQyLCAxMDcsIDc4LCAyNDYsIDY1LCAyNDUsIDYyLCAyNDIsIDEwNywgCi0gICAgNzgsIDIzMywgMzksIDc4LCAyNDYsIDY1LCAyNDUsIDYyLCAyMzMsIDM5LCA3OCwgMjIwLCAyNSwgMTIzLCA3OCwgMjQyLCAKLSAgICAxMDcsIDc4LCAyMjAsIDI1LCAyNDUsIDYyLCAyNDIsIDEwNywgNzgsIDIyMCwgMjUsIDEyMywgNzgsIDIzMywgMzksIDc4LCAKLSAgICAyMjAsIDI1LCAyNDUsIDYyLCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDIzMywgMzgsIDIyMCwgMjUsIDEyMywgCi0gICAgMjExLCAyMTEsIDE2NywgMjQyLCAxMDYsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjMzLCAzOSwgMiwgNjIsIAotICAgIDIzNSwgMjEyLCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA3LCAyLCA2MiwgMjM1LCAyMTIsIDI0NiwgCi0gICAgNjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjMzLCAzOCwgMjQ2LCA2NSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNiwgCi0gICAgMjQ2LCA2NSwgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMzMsIDM4LCAyNDYsIDY1LCAyMjAsIDI1LCAxMjMsIAotICAgIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA2LCAyMjAsIDg4LCAxNjcsIDIzMywgMzgsIDIyMCwgODgsIDE2NywgMjQyLCAxMDYsIAotICAgIDIyMCwgODgsIDc4LCAyMzMsIDM5LCA3OCwgMjQ1LCA2MSwgNTIsIDIyMCwgODgsIDc4LCAyNDIsIDEwNywgNzgsIDI0NSwgCi0gICAgNjEsIDUyLCA1MSwgMjI5LCAxNzMsIDIzMywgMzgsIDUxLCAyMjksIDE3MywgMjQyLCAxMDYsIDUxLCAyMjksIDE3MywgMjMzLCAKLSAgICAzOSwgMiwgMjE1LCAxNTMsIDI0MiwgMTA3LCAyMjYsIDI0NSwgMjMzLCAzOCwgMjQyLCAxMDcsIDI1MSwgMjA3LCAyMzMsIAotICAgIDM4LCAyMzMsIDM5LCAyNDksIDE5MywgMjUxLCA3LCAyNDksIDM0LCAyNDIsIDEwNywgMjQ5LCAxOTMsIDI1MSwgNywgMjQ5LCAKLSAgICAzNCwgMjMzLCAzOSwgMjQ5LCAxOTMsIDI1MSwgNywgMjQ5LCAzNSwgNzgsIDIyMCwgMjUsIDI0NSwgNjIsIDI0MiwgMTA3LCAKLSAgICAyNDksIDE5MywgMjUxLCA3LCAyNDksIDM1LCA3OCwgMjIwLCAyNSwgMjQ1LCA2MiwgMjIwLCA2LCAyMTcsIDE1MywgMjMzLCAKLSAgICAxMDYsIDIxNywgMTUzLCAyMjAsIDYsIDIxNywgMTU0LCAxNjcsIDEyMywgMTA4LCAyMzMsIDEwNiwgMjE3LCAxNTQsIDE2NywgCi0gICAgMTIzLCAxMDgsIDI0NSwgNjEsIDUsIDIsIDI1MSwgMzcsIDQ5LCAyMjUsIDgzLCA3OCwgMjIwLCA3OSwgMjQ1LCA2MSwgNTIsIAotICAgIDIxOSwgMSwgNzgsIDIyMCwgNzksIDI0NSwgNjEsIDUyLCAyMjUsIDgzLCA3OCwgMjIwLCA3OSwgMjI4LCAxNjMsIDEyMywgCi0gICAgMTA4LCAyMTksIDEsIDc4LCAyMjAsIDc5LCAyMjgsIDE2MywgMTIzLCAxMDgsIDIyNSwgODMsIDc4LCAyNDUsIDYxLCA1MiwgCi0gICAgMjE5LCAxLCA3OCwgMjQ1LCA2MSwgNTIsIDIyNSwgODMsIDc4LCAyMjgsIDE2MywgMTIzLCAxMDgsIDIxOSwgMSwgNzgsIAotICAgIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjI1LCA4MywgNzgsIDI1NCwgNTcsIDEyMywgMTA4LCAyMTksIDEsIDc4LCAyNTQsIDU3LCAKLSAgICAxMjMsIDEwOCwgMjI1LCA4MywgNzgsIDIyOCwgMTYzLCAyNTQsIDU3LCAxMjMsIDEwOCwgMjE5LCAxLCA3OCwgMjI4LCAxNjMsIAotICAgIDI1NCwgNTcsIDEyMywgMTA4LCA1MSwgMjI1LCA4MiwgNTEsIDIxOSwgMCwgMjE5LCA5LCAyLCAyNDcsIDc0LCAyMTgsIDIyMiwgCi0gICAgMiwgMjQ3LCA3NCwgMjE5LCA5LCAyLCA5NCwgNSwgNTUsIDIxOCwgMjIyLCAyLCA5NCwgNSwgNTUsIDIxOSwgOSwgMiwgMjMwLCAKLSAgICAxNTQsIDUsIDU1LCAyMTgsIDIyMiwgMiwgMjMwLCAxNTQsIDUsIDU1LCAyMTksIDksIDY1LCAxNjcsIDEyMywgMjExLCAyMTEsIAotICAgIDIsIDYyLCA0OSwgMjE4LCAyMjIsIDY1LCAxNjcsIDEyMywgMjExLCAyMTEsIDIsIDYyLCA0OSwgMjE5LCA5LCA2NSwgNzgsIAotICAgIDI0NSwgNjEsIDUyLCAyMTgsIDIyMiwgNjUsIDc4LCAyNDUsIDYxLCA1MiwgMjE5LCA5LCA2NSwgNzgsIDIxNywgNDMsIDIyNywgCi0gICAgMzMsIDIxOCwgMjIyLCA2NSwgNzgsIDIxNywgNDMsIDIyNywgMzMsIDIxOSwgOSwgNjUsIDc4LCAyNTQsIDU3LCAxMjMsIAotICAgIDEwOCwgMjE4LCAyMjIsIDY1LCA3OCwgMjU0LCA1NywgMTIzLCAxMDgsIDIxOSwgOSwgNjUsIDc4LCAyMjgsIDE2MywgMTIzLCAKLSAgICAxMDgsIDIxOCwgMjIyLCA2NSwgNzgsIDIyOCwgMTYzLCAxMjMsIDEwOCwgNDEsIDQyLCAyMjcsIDQwLCA5MiwgMjI3LCAzMywgCi0gICAgNDEsIDQ2LCAyMjcsIDQwLCA5MiwgMjI3LCAzMywgMjQ5LCAxOTMsIDIxOSwgOCwgMjQ5LCAxOTMsIDIxOCwgMjIxLCAyNDksIAotICAgIDE5MywgMjE5LCA5LCAxNjcsIDEyMywgMTA4LCAyNDksIDE5MywgMjE4LCAyMjIsIDE2NywgMTIzLCAxMDgsIDIxOSwgOSwgCi0gICAgNzgsIDIxOCwgMjIxLCAyMTgsIDIyMiwgNzgsIDIxOSwgOCwgMjE5LCA5LCA3OCwgMjE5LCA4LCAyMTgsIDIyMiwgNzgsIAotICAgIDIxOCwgMjIxLCAyMTgsIDIyMiwgMjUxLCAyMDcsIDIxOSwgOCwgMjE4LCAyMjIsIDI1MSwgMjA3LCAyNCwgMjM1LCA2OCwgCi0gICAgMjUxLCA3LCAyNDgsIDEwMiwgMiwgMjE5LCA4LCAyNDUsIDEyNywgNjUsIDIyNywgMzUsIDI0NiwgNTcsIDIyNSwgMTgwLCAyLCAKLSAgICAyMTcsIDIyMCwgMjE2LCAyMjYsIDIxNiwgMTk4LCAyMzUsIDE5NSwgMjQzLCAyNDYsIDIyOCwgMTc2LCAyMjAsIDE3NSwgNDIsIAotICAgIDIxOCwgMzYsIDIyMCwgMTc1LCAxMTksIDIxOCwgMzYsIDIyMCwgMTc1LCAxMTQsIDIxOCwgMzYsIDIyNiwgNDgsIDIsIDE5NywgCi0gICAgNzEsIDI1MiwgNjAsIDIxNiwgMTY5LCA0NiwgMjE2LCA1NywgNTEsIDcxLCAyNTIsIDYwLCA0MiwgMjE2LCA1NywgNzEsIAotICAgIDI1MiwgNjAsIDUxLCA0MiwgMjE2LCA1NywgNTEsIDcxLCAyNTIsIDYwLCA1MSwgNDIsIDIxNiwgNTcsIDE4NCwgMjQ4LCAKLSAgICAxMDIsIDI0MywgMjEzLCA0MiwgMjMxLCAxMjcsIDY1LCA1MSwgMjE0LCAyMTYsIDIyMCwgMTc1LCAxMTksIDIxOCwgMzcsIDIsIAotICAgIDIyNiwgMjQ3LCAyMjAsIDE3NSwgMTE0LCAyMTgsIDM3LCAyLCAyMTUsIDE1MywgMjIwLCAxNzUsIDExNCwgMjE4LCAzNywgCi0gICAgNzgsIDIyMCwgMTc1LCAxMTksIDIxOCwgMzYsIDUxLCAxMTksIDIxOCwgMzYsIDUxLCAxMTQsIDIxOCwgMzYsIDUxLCAyMTksIAotICAgIDQ1LCAyMjgsIDE2MywgNTIsIDIyMywgMjAyLCA1MSwgMjE5LCA0NSwgMjI4LCAxNjMsIDUyLCAyNDcsIDkyLCAyMjgsIDE2MywgCi0gICAgMjQ3LCAxMjcsIDIsIDIyMywgMjAyLCAyMjksIDE4MiwgMjIwLCAyMywgNzEsIDIzMiwgMjQzLCAyLCAyNDksIDIyOSwgNDksIAotICAgIDcxLCAyMzIsIDI0MywgMiwgMjQ5LCAyMjksIDU1LCAxMTksIDIxOCwgMzcsIDIsIDI0OSwgMjI5LCA1NSwgMjI2LCAxMzYsIAotICAgIDIsIDE5OSwgOTAsIDIyNiwgMTM2LCAyLCAyMTcsIDQzLCAyMjcsIDMzLCAyMTYsIDE2OSwgNzEsIDI1MiwgNjAsIDI1MSwgCi0gICAgMTY3LCAyMjMsIDI0MSwgMjE2LCAxNjksIDcxLCAyNTIsIDYwLCAyLCAxOTksIDkwLCAyMTYsIDE2OSwgMjQ5LCAxNjUsIAotICAgIDIyNywgMzMsIDIxNiwgMTY5LCAyMjksIDE3MywgMjMzLCAzOCwgMjE2LCAxNjksIDIyOSwgMTczLCAyNDIsIDEwNiwgMjQ2LCAKLSAgICA2NSwgMjIwLCAyNSwgMjMzLCAzOSwgMTY3LCAxMjMsIDEwOCwgMjQ2LCA2NSwgMjIwLCAyNSwgMjQyLCAxMDcsIDE2NywgCi0gICAgMTIzLCAxMDgsIDIxNiwgMTY5LCAyMTksIDIzMiwgMjUxLCAxNjcsIDIyMywgMjQxLCAyMzMsIDEwOCwgMjE2LCAxNjksIDcxLCAKLSAgICAyNTIsIDYwLCAyMjcsIDMzLCA1MSwgMjE5LCAyMzIsIDIyNywgMzMsIDY3LCA3MSwgMTM0LCAyMzAsIDk3LCA2NywgNzEsIAotICAgIDEzNCwgMjI4LCAxNjcsIDI0NSwgMTc2LCA2NywgNjgsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNjcsIDY4LCAyMTksIDIxNSwgCi0gICAgMjQ1LCAxNzYsIDY3LCA2OCwgMjE5LCAyMTUsIDIxMywgMjUwLCA2NywgNjgsIDQyLCA0NiwgNjcsIDY4LCAxMzIsIDgzLCAKLSAgICA2OCwgMjE1LCAxMjQsIDgzLCA2OCwgMjQ2LCA1OCwgODMsIDY4LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDgzLCA2OCwgMjI4LCAKLSAgICAxNjcsIDIxMywgMjUwLCA4MywgNjgsIDIxOSwgMjE1LCAyNDUsIDE3NiwgODMsIDY4LCAyMTksIDIxNSwgMjEzLCAyNTAsIAotICAgIDgzLCA2OCwgNDIsIDQ2LCA4MywgNjgsIDExNCwgMTE5LCA4MywgNjgsIDk1LCA3NiwgMiwgMjE3LCAzMCwgMjQ2LCA1NywgCi0gICAgOTUsIDc2LCAyLCAyMTcsIDMwLCAyMTUsIDEyMywgMTMyLCA3NiwgMiwgMjE3LCAzMCwgMjQ2LCA1NywgMTMyLCA3NiwgMiwgCi0gICAgMjE3LCAzMCwgMjE1LCAxMjMsIDQxLCAyLCAyMTYsIDIyNywgMTUxLCAyNTEsIDE0NCwgNDEsIDIsIDI1MSwgMTAxLCAxNTEsIAotICAgIDI1MSwgMTQ0LCA0MSwgMiwgMjE1LCAxMzEsIDQ2LCAyNDcsIDIwNywgMTUxLCAyNTEsIDE0NCwgNDEsIDIsIDIzMiwgMTYzLCAKLSAgICA0MiwgMjQ3LCAyMDcsIDE1MSwgMjUxLCAxNDQsIDI0NywgMjAxLCAyLCA0MiwgMTUxLCAyNTEsIDE0NCwgMjQ3LCAyMDEsIDIsIAotICAgIDQ2LCAxNTEsIDI1MSwgMTQ0LCAyNDcsIDIwMSwgMiwgMjE2LCAyMjcsIDE1MSwgMjUxLCAxNDQsIDI0NywgMjAxLCAyLCAKLSAgICAyNTEsIDEwMSwgMTUxLCAyNTEsIDE0NCwgMjQ2LCA3MiwgMjE5LCAxNjYsIDgzLCAyMzMsIDEwOCwgMjE5LCAxNjYsIDY3LCAKLSAgICAyMzMsIDEwOCwgMjE5LCAxNjYsIDgzLCAyMTQsIDE2NCwgMywgMjE5LCAxNjYsIDY3LCAyMTQsIDE2NCwgMywgMjE5LCAxNjYsIAotICAgIDgzLCAyMjYsIDY1LCA2NywgMjI2LCA2NSwgNjcsIDI0MSwgMTc4LCA4MywgMjQxLCAxNzgsIDE5OSwgODMsIDI0MSwgMTc4LCAKLSAgICA4MywgMjMzLCAxMDgsIDI0OSwgMjI4LCA4MywgMjMxLCAxNDcsIDI0NywgMjAwLCA2NywgMjMxLCAxNDcsIDI0NywgMjAwLCAKLSAgICA4MywgMjMxLCAxNDcsIDIzMiwgMTU5LCA2NywgMjMxLCAxNDcsIDIzMiwgMTU5LCA4MywgMywgMjQ3LCAyMDAsIDgzLCAzLCAKLSAgICAyMzIsIDE1OSwgNjcsIDMsIDIzMiwgMTU5LCA4MywgMTk5LCAyNDUsIDEyMSwgNjcsIDE5OSwgMjQ1LCAxMjEsIDgzLCA3MSwgCi0gICAgMjQ1LCAxMjEsIDY3LCA3MSwgMjQ1LCAxMjEsIDQyLCA3NiwgMiwgMywgMjQ5LCAyMjgsIDEzMywgMTMyLCAyNTMsIDE2MiwgCi0gICAgNDIsIDc2LCAyLCAzNiwgMjI1LCAxNTYsIDE4NCwgMTMyLCAyMTksIDE2MiwgNjgsIDEzMiwgMjE2LCAyNCwgNzYsIDIsIDcxLCAKLSAgICA5MCwgMTMyLCAyMTYsIDI0LCA3NiwgMiwgNTEsIDcxLCA5MCwgMTMyLCAyMTYsIDI0LCA3NiwgMjQzLCAyMTMsIDEzNCwgCi0gICAgMTMyLCAyMTYsIDI0LCAyMTYsIDE2OSwgMjQ4LCAxMDIsIDY4LCAxMzIsIDc2LCAyLCAyNDYsIDcyLCAyMTksIDc5LCAxMzIsIAotICAgIDc2LCAyLCAyMTgsIDI4LCAyLCA3MSwgOTAsIDEzMiwgNzYsIDIsIDIxOCwgMjgsIDIsIDUxLCA3MSwgOTAsIDEzMiwgMjE2LCAKLSAgICAyNCwgNzYsIDIsIDIxOCwgMjcsIDEzMiwgMjE2LCAyNCwgNzYsIDIsIDIxOCwgMjgsIDIsIDcxLCA5MCwgMTMyLCAyMTYsIAotICAgIDI0LCA3NiwgMiwgMjE4LCAyOCwgMiwgNTEsIDcxLCA5MCwgMTMyLCA3NiwgMjE3LCA5MywgMjEzLCAxNjYsIDIxNCwgMjAsIAotICAgIDc2LCAyMjUsIDE0MSwgMjQ3LCAxNDcsIDIzMywgNzAsIDI0NSwgNjEsIDUsIDc4LCAxMzIsIDY4LCAyMjMsIDIwMywgMjE3LCAKLSAgICA0MywgMjI3LCAzNCwgNzgsIDEzMiwgNjgsIDEzMiwgNzYsIDc4LCAyMjMsIDIwMywgMjU0LCA1NywgMTIzLCAxMDgsIDk1LCAKLSAgICA3NiwgMjE3LCA5MywgMjQyLCAxMDYsIDk1LCA3NiwgMjE3LCA5MywgMjE4LCAyMjEsIDEzMiwgMjI0LCAxNjksIDY4LCA5NSwgCi0gICAgMjI0LCAxNjksIDY4LCAyMjMsIDIwMywgMjE3LCA0MywgMjI3LCAzNCwgNzgsIDk1LCA2OCwgOTUsIDc2LCA3OCwgMjIzLCAKLSAgICAyMDMsIDI1NCwgNTcsIDEyMywgMTA4LCAyMTcsIDQzLCAyMjcsIDM0LCA3OCwgMTMyLCA2OCwgMTMyLCA3NiwgNzgsIDI1NCwgCi0gICAgNTcsIDEyMywgMTA4LCAxMzIsIDc2LCA3OCwgMjIzLCAyMDMsIDIxNywgNDMsIDIyNywgMzMsIDk1LCA3NiwgNzgsIDIyMywgCi0gICAgMjAzLCAyMTcsIDQzLCAyMjcsIDMzLCA2NywgMjMxLCAxNDcsIDIxOSwgOTUsIDgzLCAzLCAyMTksIDk1LCA2NywgMywgMjE5LCAKLSAgICA5NSwgODMsIDIyMywgMTQ0LCAyMjYsIDY1LCA2NywgMjIzLCAxNDQsIDIyNiwgNjUsIDEwNywgMjMzLCAxMDgsIDI0OSwgCi0gICAgMjI4LCAxMDcsIDIyNiwgMjQ4LCAyLCAyMjYsIDI0OCwgMjM1LCAyMTIsIDEwNywgMjQ5LCAyMjksIDIsIDI0OSwgMjI5LCAKLSAgICAyMzUsIDIxMiwgMTA3LCAyNDksIDIyOCwgMTA3LCAzNiwgMjIyLCAxNjksIDEzNiwgNiwgMSwgMjUzLCA3NSwgMTM2LCA2LCAKLSAgICAxLCAyNTEsIDQ2LCAxMzYsIDYsIDEsIDIxNCwgMjMwLCAxMzYsIDYsIDEsIDI0MiwgMTYxLCAxMzYsIDYsIDEsIDI0NywgOTQsIAotICAgIDEzNiwgNiwgMSwgMjEzLCAxMiwgMTM2LCA2LCAxLCAyMTIsIDYxLCAxMzYsIDYsIDEsIDI0NSwgMjQ1LCAxMzYsIDYsIDEsIAotICAgIDIxMiwgODQsIDEzNiwgNiwgMSwgMjM1LCAxNDYsIDEzNiwgNiwgMSwgNzAsIDIzNSwgMTQ2LCAxMzYsIDYsIDEsIDcyLCAKLSAgICAxMzYsIDYsIDEsIDI0NywgMTEyLCAxMzYsIDYsIDEsIDIzNCwgMjQ1LCAxMzYsIDYsIDEsIDIzMiwgMjE1LCAxMzYsIDYsIDEsIAotICAgIDIzMCwgMTAxLCAxMzYsIDYsIDEsIDIzMCwgMTIsIDEzNiwgNiwgMSwgMjI3LCA1MSwgMTM2LCA2LCAxLCAyMjUsIDEzOCwgCi0gICAgMTM2LCA2LCAxLCAyMjMsIDEyNCwgMTM2LCA2LCAxLCAyMjAsIDExLCAxMzYsIDYsIDEsIDIxNiwgNDYsIDEzNiwgNiwgMSwgCi0gICAgMjE1LCAxNzEsIDEzNiwgNiwgMSwgMjQzLCAyMTYsIDEzNiwgNiwgMSwgMjQxLCAxODQsIDEzNiwgNiwgMSwgMjI3LCAzLCAKLSAgICAxMzYsIDYsIDEsIDIyNiwgOTYsIDEzNiwgNiwgMSwgMjIwLCAxNTMsIDEzNiwgNiwgMSwgMjE2LCAxMjUsIDEzNiwgNiwgMSwgCi0gICAgMjUwLCAxMiwgMTM2LCA2LCAxLCAyMjEsIDI0LCAxMzYsIDYsIDEsIDIxMywgMTgsIDEzNiwgNiwgMSwgMjEzLCAyMCwgMTM2LCAKLSAgICA2LCAxLCAyMTMsIDQ3LCAxMzYsIDYsIDEsIDIxOSwgMTg1LCAxNTksIDEzNiwgNiwgMSwgMjEyLCAyMDMsIDEzNiwgNiwgMSwgCi0gICAgMywgMjEyLCAxNzQsIDEzNiwgNiwgMSwgMywgMjEyLCAxNzUsIDIsIDIxOCwgMjcsIDEzNiwgNiwgMSwgMjEyLCAyMzUsIAotICAgIDEzNiwgNiwgMSwgMjM1LCAxODIsIDMsIDIxMiwgMTc0LCAxMzYsIDYsIDEsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMTM2LCA2LCAKLSAgICAxLCAyMzUsIDE4MiwgMjUxLCAxNzIsIDIxMiwgMTc0LCAxMzYsIDYsIDEsIDI0NCwgNTEsIDEzNiwgNiwgMSwgMjM1LCAxNDQsIAotICAgIDEzNiwgNiwgMSwgMjIwLCAxNTIsIDEzNiwgNiwgMSwgMjE2LCAxNjAsIDYxLCAxMzYsIDYsIDEsIDIzMywgOTgsIDIzMCwgCi0gICAgMTAxLCAxMzYsIDMsIDEsIDI1MywgNzUsIDEzNiwgMywgMSwgMjUxLCA0NiwgMTM2LCAzLCAxLCAyMTQsIDIzMCwgMTM2LCAzLCAKLSAgICAxLCAyNDIsIDE2MSwgMTM2LCAzLCAxLCAyNDcsIDk0LCAxMzYsIDMsIDEsIDIxMywgMTIsIDEzNiwgMywgMSwgMjEyLCA2MSwgCi0gICAgMTM2LCAzLCAxLCAyNDUsIDI0NSwgMTM2LCAzLCAxLCAyMTIsIDg0LCAxMzYsIDMsIDEsIDIzNSwgMTQ2LCAxMzYsIDMsIDEsIAotICAgIDcwLCAyMzUsIDE0NiwgMTM2LCAzLCAxLCA3MiwgMTM2LCAzLCAxLCAyNDcsIDExMiwgMTM2LCAzLCAxLCAyMzQsIDI0NSwgCi0gICAgMTM2LCAzLCAxLCAyMzIsIDIxNSwgMTM2LCAzLCAxLCAyMzAsIDEwMSwgMTM2LCAzLCAxLCAyMzAsIDEyLCAxMzYsIDMsIDEsIAotICAgIDIyNywgNTEsIDEzNiwgMywgMSwgMjI1LCAxMzgsIDEzNiwgMywgMSwgMjIzLCAxMjQsIDEzNiwgMywgMSwgMjIwLCAxMSwgCi0gICAgMTM2LCAzLCAxLCAyMTYsIDQ2LCAxMzYsIDMsIDEsIDIxNSwgMTcxLCAxMzYsIDMsIDEsIDI0MywgMjE2LCAxMzYsIDMsIDEsIAotICAgIDI0MSwgMTg0LCAxMzYsIDMsIDEsIDIyNywgMywgMTM2LCAzLCAxLCAyMjYsIDk2LCAxMzYsIDMsIDEsIDIyMCwgMTUzLCAKLSAgICAxMzYsIDMsIDEsIDIxNiwgMTI1LCAxMzYsIDMsIDEsIDI1MCwgMTIsIDEzNiwgMywgMSwgMjIxLCAyNCwgMTM2LCAzLCAxLCAKLSAgICAyMTMsIDE4LCAxMzYsIDMsIDEsIDIxMywgMjAsIDEzNiwgMywgMSwgMjEzLCA0NywgMTM2LCAzLCAxLCAyMTksIDE4NSwgCi0gICAgMTU5LCAxMzYsIDMsIDEsIDIxMiwgMjAzLCAxMzYsIDMsIDEsIDMsIDIxMiwgMTc0LCAxMzYsIDMsIDEsIDMsIDIxMiwgMTc1LCAKLSAgICAyLCAyMTgsIDI3LCAxMzYsIDMsIDEsIDIxMiwgMjM1LCAxMzYsIDMsIDEsIDIzNSwgMTgyLCAzLCAyMTIsIDE3NCwgMTM2LCAKLSAgICAzLCAxLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDEzNiwgMywgMSwgMjM1LCAxODIsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMTM2LCAKLSAgICAzLCAxLCAyNDQsIDUxLCAxMzYsIDMsIDEsIDIzNSwgMTQ0LCAxMzYsIDMsIDEsIDIyMCwgMTUyLCAxMzYsIDMsIDEsIDIxNiwgCi0gICAgMTYwLCA2MSwgMTM2LCAzLCAxLCAyMzMsIDk4LCAyMzAsIDEwMSwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDUxLCAxMzQsIDcsIAotICAgIDMsIDEsIDIzMywgMTcxLCAyLCA1MSwgMTM0LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgNiwgCi0gICAgMSwgMjI2LCAyMzAsIDIsIDkwLCA3LCA2LCAxLCAyMjQsIDExMywgMiwgMjE4LCAyNywgNywgMywgMSwgMTE4LCAyLCA5MCwgCi0gICAgNywgMywgMSwgMjE4LCAxMDAsIDIsIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgMjQyLCA0MiwgMiwgMjQ3LCAyNDYsIDcsIDMsIAotICAgIDEsIDI0MiwgNDIsIDIsIDI0NywgMjQ2LCA3LCA2LCAxLCAyMzUsIDI4LCAyLCAyNDcsIDI0NiwgNywgMywgMSwgMjM1LCAyOCwgCi0gICAgMiwgMjQ3LCAyNDYsIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAyNDcsIDI0NiwgNywgMywgMSwgMjEyLCAxNTMsIDIsIDI0NywgCi0gICAgMjQ2LCA3LCA2LCAxLCAyNTQsIDUyLCA3LCA2LCAxLCAyMzIsIDExMCwgMiwgMTAxLCA3LCA2LCAxLCAyMTYsIDU4LCA2MSwgCi0gICAgNywgNiwgMSwgMjE2LCA1OCwgMjU0LCA1MiwgNywgMywgMSwgMjE1LCA4MCwgMiwgNDYsIDEwMSwgNywgNiwgMSwgMjE0LCAKLSAgICA4MywgMiwgMTAxLCA3LCAzLCAxLCAyMTQsIDgzLCAyLCAxMDEsIDcsIDMsIDEsIDIxNSwgODAsIDIsIDI0OSwgNDEsIDcsIDYsIAotICAgIDEsIDE1MSwgMjQyLCA0MSwgNywgMywgMSwgMTUxLCAyNDIsIDQxLCA3LCAzLCAxLCAyMTgsIDI1LCAyMjYsIDksIDcsIDMsIAotICAgIDEsIDE5MSwgMiwgMjI4LCAxNjEsIDcsIDMsIDEsIDIxNiwgNTgsIDIyNCwgMTEzLCAyLCAyMTgsIDI3LCA3LCAzLCAxLCAKLSAgICAxNTcsIDIsIDExNSwgMjIzLCAxMzEsIDIzNSwgMjEyLCA3LCAxLCAzLCA2LCAyMTYsIDU4LCA3NCwgNywgMjE5LCAxMCwgMywgCi0gICAgMSwgMjM1LCAxNDIsIDU5LCAxLCA2LCAyMTUsIDc5LCA3LCA2LCAxLCAyMjMsIDQsIDIsIDIxOCwgMTk1LCAyMTgsIDI3LCA3LCAKLSAgICA2LCAxLCAyMTIsIDE1MywgMiwgMjE4LCAxOTUsIDIxOCwgMjcsIDc5LCA2LCAxLCAyNTQsIDczLCA3OSwgMywgMSwgMjU0LCAKLSAgICA3MywgNzksIDYsIDEsIDIxNCwgMTUxLCA3OSwgMywgMSwgMjE0LCAxNTEsIDc5LCA2LCAxLCAyNDMsIDgzLCA3OSwgMywgMSwgCi0gICAgMjQzLCA4MywgNzksIDYsIDEsIDI0OCwgMTM2LCA3OSwgMywgMSwgMjQ4LCAxMzYsIDc5LCA2LCAxLCAyNDUsIDE1MSwgNzksIAotICAgIDMsIDEsIDI0NSwgMTUxLCA3OSwgNiwgMSwgMjE5LCAyMjAsIDc5LCAzLCAxLCAyMTksIDIyMCwgNzksIDYsIDEsIDIxMiwgCi0gICAgOTQsIDc5LCAzLCAxLCAyMTIsIDk0LCA3OSwgNiwgMSwgMjQxLCAyMzEsIDc5LCAzLCAxLCAyNDEsIDIzMSwgNzksIDYsIDEsIAotICAgIDIxNywgMTMwLCA3OSwgMywgMSwgMjE3LCAxMzAsIDc5LCA2LCAxLCAyNDAsIDEwOSwgNzksIDMsIDEsIDI0MCwgMTA5LCA3OSwgCi0gICAgNiwgMSwgMjM0LCAyMzIsIDc5LCAzLCAxLCAyMzQsIDIzMiwgNzksIDYsIDEsIDIzMywgOTYsIDc5LCAzLCAxLCAyMzMsIDk2LCAKLSAgICA3OSwgNiwgMSwgMjMxLCA0MiwgNzksIDMsIDEsIDIzMSwgNDIsIDc5LCA2LCAxLCAyMjksIDY0LCA3OSwgMywgMSwgMjI5LCAKLSAgICA2NCwgNzksIDYsIDEsIDIzMywgMjQyLCA3OSwgMywgMSwgMjMzLCAyNDIsIDc5LCA2LCAxLCA3NSwgNzksIDMsIDEsIDc1LCAKLSAgICA3OSwgNiwgMSwgMjI1LCAyNDAsIDc5LCAzLCAxLCAyMjUsIDI0MCwgNzksIDYsIDEsIDIyMywgMTEyLCA3OSwgMywgMSwgCi0gICAgMjIzLCAxMTIsIDc5LCA2LCAxLCAyMjAsIDkxLCA3OSwgMywgMSwgMjIwLCA5MSwgNzksIDYsIDEsIDIxNywgMjQ4LCA3OSwgCi0gICAgMywgMSwgMjE3LCAyNDgsIDc5LCA2LCAxLCAyMTUsIDE5NiwgNzksIDMsIDEsIDIxNSwgMTk2LCA3OSwgNiwgMSwgMjQ0LCAKLSAgICA5MCwgNzksIDMsIDEsIDI0NCwgOTAsIDc5LCA2LCAxLCAyMzQsIDExOCwgNzksIDMsIDEsIDIzNCwgMTE4LCA3OSwgNiwgMSwgCi0gICAgMjI1LCA0NiwgNzksIDMsIDEsIDIyNSwgNDYsIDc5LCA2LCAxLCAyMjcsIDQ0LCA3OSwgMywgMSwgMjI3LCA0NCwgNzksIDYsIAotICAgIDEsIDI0NywgMjA1LCAyNTQsIDc4LCA3OSwgMywgMSwgMjQ3LCAyMDUsIDI1NCwgNzgsIDc5LCA2LCAxLCA1MywgNzksIDI1NCwgCi0gICAgMTAzLCA3OSwgMywgMSwgNTMsIDc5LCAyNTQsIDEwMywgNzksIDYsIDEsIDI0OSwgNTUsIDI0NSwgMTUxLCA3OSwgMywgMSwgCi0gICAgMjQ5LCA1NSwgMjQ1LCAxNTEsIDc5LCA2LCAxLCAyNDcsIDIwNSwgMjM0LCAyMzIsIDc5LCAzLCAxLCAyNDcsIDIwNSwgMjM0LCAKLSAgICAyMzIsIDc5LCA2LCAxLCAyNDcsIDIwNSwgMjI5LCA2NCwgNzksIDMsIDEsIDI0NywgMjA1LCAyMjksIDY0LCA3OSwgNiwgMSwgCi0gICAgMjQ5LCA1NSwgMjI5LCA2NCwgNzksIDMsIDEsIDI0OSwgNTUsIDIyOSwgNjQsIDc5LCA2LCAxLCA1MywgNzksIDIyNywgNDQsIAotICAgIDc5LCAzLCAxLCA1MywgNzksIDIyNywgNDQsIDc5LCA2LCAxLCAyMjIsIDE2MSwgNzksIDMsIDEsIDIyMiwgMTYxLCA3OSwgNiwgCi0gICAgMSwgMjQ5LCA2OCwgMjIwLCAyMzUsIDc5LCAzLCAxLCAyNDksIDY4LCAyMjAsIDIzNSwgNzksIDYsIDEsIDUzLCA3OSwgMjIwLCAKLSAgICAyMzUsIDc5LCAzLCAxLCA1MywgNzksIDIyMCwgMjM1LCA3OSwgNiwgMSwgNTMsIDc5LCAyNDUsIDQwLCA3OSwgMywgMSwgNTMsIAotICAgIDc5LCAyNDUsIDQwLCA3OSwgNiwgMSwgMjU0LCA5MCwgMjM0LCAxMjMsIDc5LCAzLCAxLCAyNTQsIDkwLCAyMzQsIDEyMywgCi0gICAgNzksIDYsIDEsIDI0NywgMjA1LCAyNDEsIDMyLCA3OSwgMywgMSwgMjQ3LCAyMDUsIDI0MSwgMzIsIDc5LCA2LCAxLCA1MywgCi0gICAgNzksIDI0MSwgMzIsIDc5LCAzLCAxLCA1MywgNzksIDI0MSwgMzIsIDc5LCA2LCAxLCA1MywgNzksIDE1OSwgNzksIDMsIDEsIAotICAgIDUzLCA3OSwgMTU5LCA3OSwgNiwgMSwgMjMzLCAxNzAsIDE1OSwgNzksIDMsIDEsIDIzMywgMTcwLCAxNTksIDc5LCA2LCAxLCAKLSAgICA1MywgNzksIDI0MSwgMjAxLCA3OSwgMywgMSwgNTMsIDc5LCAyNDEsIDIwMSwgNzksIDYsIDEsIDUzLCA3OSwgMjQxLCAyMzQsIAotICAgIDc5LCAzLCAxLCA1MywgNzksIDI0MSwgMjM0LCA3OSwgNiwgMSwgNTMsIDc5LCAyNDMsIDc4LCA3OSwgMywgMSwgNTMsIDc5LCAKLSAgICAyNDMsIDc4LCA3OSwgNiwgMSwgNTMsIDc5LCAyNDcsIDExNSwgNzksIDMsIDEsIDUzLCA3OSwgMjQ3LCAxMTUsIDc5LCA2LCAKLSAgICAxLCA1MywgNzksIDIyMCwgMjAyLCA3OSwgMywgMSwgNTMsIDc5LCAyMjAsIDIwMiwgNzksIDYsIDEsIDUzLCAyMjgsIDYzLCAKLSAgICAyMjAsIDIwMiwgNzksIDMsIDEsIDUzLCAyMjgsIDYzLCAyMjAsIDIwMiwgNzksIDYsIDEsIDUzLCAyMjgsIDYzLCAyMjksIAotICAgIDExMywgNzksIDMsIDEsIDUzLCAyMjgsIDYzLCAyMjksIDExMywgNzksIDYsIDEsIDUzLCAyMjgsIDYzLCAyMjgsIDEwLCA3OSwgCi0gICAgMywgMSwgNTMsIDIyOCwgNjMsIDIyOCwgMTAsIDc5LCA2LCAxLCA1MywgMjI4LCA2MywgMjE0LCAyMSwgNzksIDMsIDEsIDUzLCAKLSAgICAyMjgsIDYzLCAyMTQsIDIxLCA3OSwgMTYsIDIzNCwgMjUwLCA3OSwgMTYsIDIzMSwgNDMsIDIyMywgMTEyLCA3OSwgMTYsIAotICAgIDIyNSwgMjQxLCAyMjMsIDExMiwgNzksIDE2LCAyMTksIDg3LCA3OSwgMTYsIDIxNywgMjQ5LCAyMjMsIDExMiwgNzksIDE2LCAKLSAgICAyMzQsIDExOSwgMjIzLCAxMTIsIDc5LCAxNiwgMjIwLCAyMDMsIDIyMCwgOTEsIDc5LCA2LCAxLCAyNDksIDU1LCAyMjAsIAotICAgIDIzNSwgNzksIDMsIDEsIDI0OSwgNTUsIDIyMCwgMjM1LCA3OSwgNiwgMSwgMjQ5LCA1NSwgMjQzLCA3OCwgNzksIDMsIDEsIAotICAgIDI0OSwgNTUsIDI0MywgNzgsIDc5LCAzNywgMjI5LCA2NSwgNDksIDc5LCAzNywgMjE5LCAxNzksIDI1MywgMTM5LCA3OSwgCi0gICAgMzcsIDIxOSwgMTc5LCAyMzMsIDQ1LCA3OSwgNTMsIDIyOCwgNjMsIDI0MywgMjAwLCAyMTksIDY5LCA3OSwgNTMsIDIyOCwgCi0gICAgNjMsIDI0NywgMTQ5LCAyMjQsIDE1OCwgNzcsIDc5LCA1MywgMjI4LCA2MywgMjM1LCAyMzQsIDIyNCwgMTU4LCA3NywgNzksIAotICAgIDUzLCAyMjgsIDYzLCAyMTQsIDIxOCwgMjQ3LCAxMjQsIDc5LCAyNDMsIDIyOCwgMTIyLCAyNDIsIDksIDc5LCAyNDMsIDIwMCwgCi0gICAgMjE5LCA2OSwgNzksIDIzMCwgMTk0LCAyNDcsIDEyNCwgMTAwLCAzLCAxLCAyNTQsIDMyLCAxMDAsIDMsIDEsIDI1MiwgNzEsIAotICAgIDEwMCwgMywgMSwgMjQzLCA4MiwgMTAwLCAzLCAxLCAyNDcsIDgyLCAxMDAsIDMsIDEsIDI0NSwgMTA4LCAxMDAsIDMsIDEsIAotICAgIDIxNCwgMTQxLCAxMDAsIDMsIDEsIDIxMiwgODIsIDEwMCwgMywgMSwgMjE4LCAxMSwgMTAwLCAzLCAxLCAyMzUsIDI1MSwgCi0gICAgMTAwLCAzLCAxLCAyMzQsIDIzOSwgMTAwLCAzLCAxLCAyMzMsIDEwNCwgMTAwLCAzLCAxLCAyMzEsIDI0OCwgMTAwLCAzLCAxLCAKLSAgICAyMzAsIDE1LCAxMDAsIDMsIDEsIDIyNywgNjIsIDEwMCwgMywgMSwgMjI2LCAxNDUsIDEwMCwgMywgMSwgMjEyLCA3MSwgCi0gICAgMTAwLCAzLCAxLCAyMjQsIDYxLCAxMDAsIDMsIDEsIDIyMiwgMTU5LCAxMDAsIDMsIDEsIDIxOCwgMSwgMTAwLCAzLCAxLCAKLSAgICAyMTUsIDE2MCwgMTAwLCAzLCAxLCAyMjYsIDE2LCAxMDAsIDMsIDEsIDIzNCwgMTI3LCAxMDAsIDMsIDEsIDI0MiwgMjE3LCAKLSAgICAxMDAsIDMsIDEsIDIyNCwgMjE3LCAxMDAsIDMsIDEsIDIyMCwgMjAwLCAxMDAsIDMsIDEsIDI1MCwgMzQsIDEwMCwgMywgMSwgCi0gICAgMjUwLCAxOTUsIDEwMCwgMywgMSwgMjM1LCAxMDMsIDEwMCwgMywgMSwgMjQ5LCAyMzMsIDEwMCwgMywgMSwgMjUwLCA3OSwgCi0gICAgMTAwLCAzLCAxLCAyMTMsIDE1MSwgMTAwLCAzLCAxLCAyMzUsIDExMywgMTAwLCAzLCAxLCAyNDIsIDI0LCAxMDAsIDMsIDEsIAotICAgIDI0MSwgMjIyLCAxMDAsIDMsIDEsIDI0MSwgMTYwLCAxMDAsIDMsIDEsIDIxNCwgNiwgMTAwLCAzLCAxLCAyNDEsIDI0MywgCi0gICAgMTAwLCAzLCAxLCAyNDEsIDUxLCAyMTcsIDYyLCAxLCAxODYsIDIxNywgNjIsIDEsIDIxMywgODcsIDIxNywgNjIsIDEsIAotICAgIDIxMywgODYsIDIxNywgNjIsIDEsIDIxMywgNzYsIDIxNywgNjIsIDEsIDIxMywgNzQsIDIxNywgNjIsIDEsIDI1MSwgMjA5LCAKLSAgICAyNTQsIDE3NiwgMjEzLCA3MCwgMjE3LCA2MiwgMSwgMjEzLCA3MCwgMjE3LCA2MiwgMSwgMjEzLCA4NCwgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA4MSwgMjE3LCA2MiwgMSwgMjEzLCA4MywgMjE3LCA2MiwgMSwgMjEzLCA4MiwgMjE3LCA2MiwgMSwgMjEzLCAzLCAKLSAgICAyMTcsIDYyLCAxLCAyMTMsIDc4LCAyMTcsIDYyLCAxLCAyMTMsIDY4LCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDY4LCAKLSAgICAyMTcsIDYyLCAxLCAyMTMsIDY1LCAyMTcsIDYyLCAxLCAyMTMsIDcyLCAyMTcsIDYyLCAxLCAyNTEsIDIwOSwgMjU0LCAxNzYsIAotICAgIDIxMywgNzIsIDIxNywgNjIsIDEsIDIxNiwgNzksIDIxMywgNzIsIDIxNywgNjIsIDEsIDIxMywgNzEsIDIxNywgNjIsIDEsIAotICAgIDIxMywgOTEsIDIxNywgNjIsIDEsIDIxMywgNjYsIDIxNywgNjIsIDEsIDIxNiwgNzksIDIxMywgNjYsIDIxNywgNjIsIDEsIAotICAgIDIxMywgNTYsIDIxNywgNjIsIDEsIDIxNiwgNzksIDIxMywgNTYsIDIxNywgNjIsIDEsIDIxMiwgMjU1LCAyMTcsIDYyLCAxLCAKLSAgICAyMTMsIDQwLCAyMTcsIDYyLCAxLCAyNTQsIDExMiwgMjEzLCA0MCwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA0MCwgCi0gICAgMjE3LCA2MiwgMSwgMjEzLCA2NCwgMjE3LCA2MiwgMSwgMjEzLCA2MywgMjE3LCA2MiwgMSwgMjEzLCA2MCwgMjE3LCA2MiwgCi0gICAgMSwgMjE2LCA3OSwgMjEzLCA3MywgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA1OCwgMjE3LCA2MiwgMSwgMjEzLCA1NywgCi0gICAgMjE3LCA2MiwgMSwgMjEyLCAyMDMsIDIxNywgNjIsIDEsIDIxMywgNTQsIDIxNywgNjIsIDEsIDIxMywgNTMsIDIxNywgNjIsIAotICAgIDEsIDIxMywgNzUsIDIxNywgNjIsIDEsIDIxNiwgNzksIDIxMywgNzUsIDIxNywgNjIsIDEsIDI1MywgNzksIDIxMywgNzUsIAotICAgIDIxNywgNjIsIDEsIDIxMywgNTIsIDIxNywgNjIsIDEsIDIxMywgNTAsIDIxNywgNjIsIDEsIDIxMywgNTEsIDIxNywgNjIsIAotICAgIDEsIDIxMywgNDksIDIxNywgNjIsIDEsIDIxMywgNDgsIDIxNywgNjIsIDEsIDIxMywgODUsIDIxNywgNjIsIDEsIDIxMywgCi0gICAgNDYsIDIxNywgNjIsIDEsIDIxMywgNDUsIDIxNywgNjIsIDEsIDIxMywgNDQsIDIxNywgNjIsIDEsIDIxMywgNDMsIDIxNywgCi0gICAgNjIsIDEsIDIxMywgNDEsIDIxNywgNjIsIDEsIDIxNywgMjQxLCAyMTMsIDQxLCAyMTcsIDYyLCAxLCAyMTMsIDM5LCAyMTcsIAotICAgIDYyLCA1OSwgMSwgMjMzLCAxNDksIDc3LCAyMTcsIDYyLCAyMjEsIDU4LCA3NywgMjE3LCA2MiwgMjQ5LCAxMzMsIDIzNSwgCi0gICAgNjYsIDI4LCA0LCAyMzIsIDIwNywgMjgsIDQsIDIzMCwgMjMwLCAyOCwgNCwgMjIzLCAxMTAsIDI4LCA0LCAyMTksIDI0MSwgCi0gICAgMjgsIDQsIDIyMCwgMTg2LCAyOCwgNCwgMjUxLCAxMjcsIDI4LCA0LCAyMTYsIDI1MiwgMjgsIDQsIDI0OSwgMTc0LCAyOCwgCi0gICAgNCwgMjI4LCAxODMsIDI4LCA0LCAyMjcsIDI1MiwgMjgsIDQsIDI0MiwgMTU2LCAyMjcsIDEyMCwgMjgsIDQsIDIxMiwgMTUsIAotICAgIDI4LCA0LCAyNDcsIDk3LCAyOCwgNCwgMjQ4LCA1NSwgMjgsIDQsIDIzNSwgNzAsIDI4LCA0LCAyMTcsIDEwOCwgMjgsIDQsIAotICAgIDI1MCwgMjIsIDI4LCA0LCAyMjUsIDI1MiwgMjgsIDQsIDIyNSwgMTQ5LCAyOCwgNCwgMjQyLCAyMzEsIDI4LCA0LCAyNDIsIAotICAgIDIyNywgMjgsIDQsIDI0MiwgMjI4LCAyOCwgNCwgMjQyLCAyMjksIDI4LCA0LCAyMTksIDE1NywgMjgsIDQsIDIxOSwgMTE3LCAKLSAgICAyOCwgNCwgMjE5LCAxMjgsIDI4LCA0LCAyMTksIDE1NiwgMjgsIDQsIDIxOSwgMTMyLCAyOCwgNCwgMjE5LCAxMzMsIDI4LCAKLSAgICA0LCAyMTksIDEyMSwgMjgsIDQsIDI1MCwgMTQ2LCAyOCwgNCwgMjUwLCAxMjYsIDI4LCA0LCAyNTAsIDEyOCwgMjgsIDQsIAotICAgIDI1MCwgMTQ1LCAyOCwgNCwgMjUwLCAxNDMsIDI4LCA0LCAyNTAsIDE0NCwgMjgsIDQsIDI1MCwgMTI3LCAyOCwgNCwgMjExLCAKLSAgICAyNDIsIDI4LCA0LCAyMTEsIDIyMiwgMjgsIDQsIDIxMSwgMjMzLCAyOCwgNCwgMjExLCAyNDEsIDI4LCA0LCAyMTEsIDIzNiwgCi0gICAgMjgsIDQsIDIxMSwgMjM3LCAyOCwgNCwgMjExLCAyMjUsIDI4LCA0LCAyNTAsIDE0MiwgMjgsIDQsIDI1MCwgMTI5LCAyOCwgCi0gICAgNCwgMjUwLCAxMzEsIDI4LCA0LCAyNTAsIDE0MSwgMjgsIDQsIDI1MCwgMTM5LCAyOCwgNCwgMjUwLCAxNDAsIDI4LCA0LCAKLSAgICAyNTAsIDEzMCwgMjgsIDQsIDIyNCwgMTI1LCAyOCwgNCwgMjI0LCAxMTUsIDI4LCA0LCAyMjQsIDEyMSwgMjgsIDQsIDIyNCwgCi0gICAgMTI0LCAyOCwgNCwgMjI0LCAxMjIsIDI4LCA0LCAyMjQsIDEyMywgMjgsIDQsIDIyNCwgMTIwLCAyOCwgNCwgMjMzLCAxODEsIAotICAgIDI4LCA0LCAyMzMsIDE3MywgMjgsIDQsIDIzMywgMTc2LCAyOCwgNCwgMjMzLCAxODAsIDI4LCA0LCAyMzMsIDE3NywgMjgsIAotICAgIDQsIDIzMywgMTc4LCAyOCwgNCwgMjMzLCAxNzQsIDI4LCA0LCAyMTMsIDExOCwgMjgsIDQsIDIxMywgMTA4LCAyOCwgNCwgCi0gICAgMjEzLCAxMTQsIDI4LCA0LCAyMTMsIDExNywgMjgsIDQsIDIxMywgMTE1LCAyOCwgNCwgMjEzLCAxMTYsIDI4LCA0LCAyMTMsIAotICAgIDExMywgMjgsIDQsIDI0MiwgNTIsIDI4LCA0LCAyNDIsIDQzLCAyOCwgNCwgMjQyLCA0NiwgMjgsIDQsIDI0MiwgNTEsIDI4LCAKLSAgICA0LCAyNDIsIDQ4LCAyOCwgNCwgMjQyLCA0OSwgMjgsIDQsIDI0MiwgNDUsIDM3LCAzMywgMSwgMjUxLCAyNTEsIDM3LCAzMywgCi0gICAgMSwgMjE0LCAyMzIsIDM3LCAzMywgMSwgMjQyLCAyMTIsIDM3LCAzMywgMSwgMjQ4LCA0MSwgMzcsIDMzLCAxLCAyMTIsIDY3LCAKLSAgICAzNywgMzMsIDEsIDIxMiwgODcsIDM3LCAzMywgMSwgMTgxLCAzNywgMzMsIDEsIDI0NSwgMTMxLCAzNywgMzMsIDEsIDI0NSwgCi0gICAgMTE3LCAzNywgMzMsIDEsIDI0NSwgMTA4LCAzNywgMzMsIDEsIDc1LCAzNywgMzMsIDEsIDIyNiwgOTYsIDM3LCAzMywgMSwgCi0gICAgMjQ1LCA1NSwgMzcsIDMzLCAxLCAyNDUsIDQ1LCAzNywgMzMsIDEsIDIxNywgMjI5LCAzNywgMzMsIDEsIDE1OSwgMzcsIDMzLCAKLSAgICAxLCAyMTYsIDEzNiwgMzcsIDMzLCAxLCAyNTAsIDY3LCAzNywgMzMsIDEsIDIyMSwgMjQsIDM3LCAzMywgMSwgMjIwLCAyNDUsIAotICAgIDM3LCAzMywgMSwgMjQ0LCA1MSwgMzcsIDMzLCAxLCAyNDUsIDQ0LCAzNywgMzMsIDEsIDYxLCAzNywgMzMsIDEsIDIzNiwgCi0gICAgNTUsIDM3LCAzMywgMSwgMjQ3LCAxMTMsIDM3LCAzMywgMSwgMjMwLCAyMTAsIDIxNSwgMTc1LCAzNywgMzMsIDEsIDIxMywgCi0gICAgNDksIDM3LCAzMywgMSwgMjEyLCAyMDMsIDM3LCAzMywgMSwgMjM1LCAxODEsIDYxLCAzNywgMzMsIDEsIDIzMiwgMjIxLCAKLSAgICAyMTIsIDE3NCwgMzcsIDMzLCAxLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDM3LCAzMywgMSwgMjM1LCAxODEsIDI1MSwgMTcyLCAKLSAgICAyMTIsIDE3NCwgNDYsIDI1NCwgMTksIDIxOSwgNSwgMjMxLCAyMTcsIDQ2LCAyNTQsIDE5LCAyNDYsIDcyLCAyMTksIDUsIAotICAgIDIzMSwgMjE3LCA0MiwgMjE5LCA1LCAxMjUsIDQ2LCAyMTksIDUsIDEyNSwgNDIsIDI0NiwgNzIsIDIxOSwgNSwgMTI1LCA0NiwgCi0gICAgMjQ2LCA3MiwgMjE5LCA1LCAxMjUsIDIyNCwgNDgsIDIzNSwgMTk5LCAyMzEsIDIxNywgMjI0LCA0OCwgMjQ2LCA3MiwgMjM1LCAKLSAgICAxOTksIDIzMSwgMjE3LCAyNDYsIDcyLCAyMTYsIDE5OSwgMjMxLCAyMTcsIDQyLCAyMTYsIDE5OSwgMTI1LCA0NiwgMjE2LCAKLSAgICAxOTksIDEyNSwgMjI0LCA0OCwgMjE5LCAxNjYsIDQyLCAyMjQsIDQ4LCAyMjcsIDY0LCAxMjUsIDQ2LCAyMjQsIDQ4LCAyMjcsIAotICAgIDY0LCAxMjUsIDI0NSwgMTY2LCAyNDksIDk3LCAyMjYsIDE0MSwgMjQzLCAyNDcsIDIyNiwgMTQxLCAyMjMsIDIwMiwgMjQzLCAKLSAgICAyNDcsIDIyNiwgMTQxLCAyNDAsIDE1NywgMjQ2LCA3MiwgMjI3LCAxMTUsIDI0NiwgNTgsIDI1NCwgMjgsIDIxNSwgMTI0LCAKLSAgICAyNTQsIDI4LCAyNDYsIDcyLCAyMjMsIDE0NCwgMjU0LCAxOCwgNTEsIDIyNywgMTEyLCAyNDAsIDE2MCwgMjM1LCAxOTEsIAotICAgIDIzNSwgMTk4LCAyMjYsIDE4NiwgMjUxLCA4MSwgMjQwLCAxNjEsIDIsIDI0NywgMjA5LCAyMTcsIDQzLCAyLCAyMjMsIDEzMSwgCi0gICAgNDksIDQyLCAxMTUsIDIyNiwgMTMzLCAxMjUsIDQ2LCAxMTUsIDIyNiwgMTMzLCAxMjUsIDIxNywgNDMsIDIsIDYyLCA0OSwgCi0gICAgMjE3LCA0MywgMiwgNjIsIDU1LCA0MiwgNzEsIDI1MiwgNjAsIDIsIDIyNCwgMTUyLCA0NiwgNzEsIDI1MiwgNjAsIDIsIAotICAgIDIyNCwgMTUyLCAyMTYsIDIyNywgNDIsIDE1MSwgMTI1LCAyMTYsIDIyNywgNDYsIDE1MSwgMTI1LCAyNTEsIDEwMSwgNDIsIAotICAgIDE1MSwgMTI1LCAyNTEsIDEwMSwgNDYsIDE1MSwgMTI1LCA0MiwgMjIwLCAxMTMsIDExMSwgMTI1LCA0NiwgMjIwLCAxMTMsIAotICAgIDExMSwgMTI1LCA0MiwgNTEsIDIyNiwgMTMxLCA0NiwgNTEsIDIyNiwgMTMxLCAxMTcsIDE3NiwgMTEwLCAxMjIsIDYyLCAKLSAgICAyMjUsIDI2LCAxMjIsIDYyLCAxMTAsIDExNywgMTc2LCAyMjUsIDI2LCA5MSwgMjQzLCAyMzcsIDYyLCAyMjUsIDI2LCAyNDQsIAotICAgIDUwLCA2MiwgNzcsIDIyMywgMjAyLCAyMjQsIDE1OCwgNzcsIDcxLCAyMTcsIDQyLCAyMjMsIDEzMSwgMjI1LCAxNDQsIDIxMywgCi0gICAgMTk2LCAyMjEsIDU4LCAyMzEsIDM3LCAyNDcsIDc0LCA5LCAzNCwgMjIzLCAyMjcsIDksIDM0LCAyNDksIDIwMywgOSwgMzQsIAotICAgIDIyMiwgOTUsIDExNiwgOSwgMzQsIDIyMiwgOTUsIDEwOSwgOSwgMzQsIDIyMiwgOTUsIDE2NiwgOSwgMzQsIDIyNiwgNDMsIAotICAgIDksIDM0LCAyNTEsIDg5LCA5LCAzNCwgMjE4LCA0MCwgOSwgMzQsIDIzNCwgNDIsIDExNiwgOSwgMzQsIDIzNCwgNDIsIDEwOSwgCi0gICAgOSwgMzQsIDI0NywgMTIyLCA5LCAzNCwgMjIyLCA5OCwgOSwgMzQsIDMsIDExNiwgOSwgMzQsIDMsIDEwOSwgOSwgMzQsIAotICAgIDIzMywgMTIxLCAxMTYsIDksIDM0LCAyMzMsIDEyMSwgMTA5LCA5LCAzNCwgMjMzLCAxMjEsIDE2NiwgOSwgMzQsIDIzMywgCi0gICAgMTIxLCAxNjMsIDksIDM0LCAyMTksIDI1MiwgOSwgMzQsIDIxNywgOTgsIDksIDM0LCAyMTksIDI1MCwgMTE2LCA5LCAzNCwgCi0gICAgMjE5LCAyNTAsIDEwOSwgOSwgMzQsIDI0MSwgMjEyLCAxMTYsIDksIDM0LCAyNDEsIDIxMiwgMTA5LCA5LCAzNCwgMjQxLCAKLSAgICAyNTQsIDksIDM0LCAyMjQsIDM5LCA5LCAzNCwgMjUwLCAxOSwgOSwgMzQsIDIxOCwgMjM4LCA5LCAzNCwgMjMwLCAxOTgsIDksIAotICAgIDM0LCAyNDgsIDM5LCA5LCAzNCwgMjMwLCAxOTAsIDksIDM0LCAyNDksIDIxOCwgOSwgMzQsIDIxNCwgMjUsIDExNiwgOSwgCi0gICAgMzQsIDIxNCwgMjUsIDEwOSwgOSwgMzQsIDI0NCwgNjUsIDksIDM0LCAyMjYsIDEwNiwgMTE2LCA5LCAzNCwgMjI2LCAxMDYsIAotICAgIDEwOSwgOSwgMzQsIDIyMCwgODYsIDE1MSwgMjE2LCAxOTQsIDIxNiwgMTQ2LCA5LCAzNCwgMjQ5LCA4NCwgOSwgMzQsIDI0NywgCi0gICAgOTAsIDksIDM0LCAyMzUsIDEzNSwgOSwgMzQsIDI1MSwgMTIyLCA2NSwgMjQ5LCAxODcsIDksIDM0LCAyNDQsIDIzOSwgOSwgCi0gICAgMzQsIDIxOSwgMTgxLCAxMTYsIDksIDM0LCAyMTksIDE4MSwgMTA5LCA5LCAzNCwgMjUyLCA3MywgOSwgMzQsIDIyMCwgOTMsIAotICAgIDksIDM0LCAyNTAsIDI0OSwgMjIwLCA5MywgOSwgMzQsIDIyOSwgMTcyLCAxMTYsIDksIDM0LCAyMjksIDE3MiwgMTA5LCA5LCAKLSAgICAzNCwgMjI5LCAxNzIsIDE2NiwgOSwgMzQsIDIyOSwgMTcyLCAxNjMsIDksIDM0LCAyMzEsIDExMSwgOSwgMzQsIDIyMCwgCi0gICAgMjM3LCA5LCAzNCwgMjI0LCA0NSwgOSwgMzQsIDI0NSwgNCwgOSwgMzQsIDIyNywgNzUsIDksIDM0LCAyNTEsIDYxLCAxMTYsIAotICAgIDksIDM0LCAyNTEsIDYxLCAxMDksIDksIDM0LCAyMzEsIDE1MSwgOSwgMzQsIDIzMCwgMTkzLCA5LCAzNCwgMjQyLCAxMTcsIAotICAgIDExNiwgOSwgMzQsIDI0MiwgMTE3LCAxMDksIDksIDM0LCAyNDIsIDExNywgMTY2LCA5LCAzNCwgMjE3LCA2MCwgOSwgMzQsIAotICAgIDI0OSwgMTg2LCA5LCAzNCwgMjEzLCAyNTAsIDExNiwgOSwgMzQsIDIxMywgMjUwLCAxMDksIDksIDM0LCAyNTAsIDI0OSwgCi0gICAgMjIyLCA4OSwgOSwgMzQsIDIyMCwgODYsIDI0MCwgMjM1LCA5LCAzNCwgMjQwLCAyMzUsIDksIDM0LCAyNTAsIDI0OSwgMjE5LCAKLSAgICAxOTAsIDksIDM0LCAyNTAsIDI0OSwgMjIwLCAyMzIsIDksIDM0LCAyNDQsIDEsIDksIDM0LCAyNTAsIDI0OSwgMjUwLCAxNjAsIAotICAgIDksIDM0LCAyMjAsIDg2LCAyMTQsIDQxLCA5LCAzNCwgMjE0LCA0MiwgMTE2LCA5LCAzNCwgMjE0LCA0MiwgMTA5LCA5LCAzNCwgCi0gICAgMjQ5LCAyMjAsIDksIDM0LCAyNTAsIDI0OSwgMjQyLCAxNDIsIDksIDM0LCAxODQsIDExNiwgOSwgMzQsIDE4NCwgMTA5LCA5LCAKLSAgICAzNCwgMjUwLCAyNDksIDIzMiwgMTkwLCA5LCAzNCwgMjUwLCAyNDksIDI0MywgNjQsIDksIDM0LCAyMzAsIDE4OSwgMTE2LCAKLSAgICA5LCAzNCwgMjMwLCAxODksIDEwOSwgOSwgMzQsIDIyNCwgNTAsIDksIDM0LCAyNTEsIDEzMCwgOSwgMzQsIDI1MCwgMjQ5LCAKLSAgICAyMTgsIDcsIDIzMywgNzYsIDksIDM0LCAyNTAsIDI0OSwgMjMzLCA3NywgOSwgMzQsIDI1MCwgMjQ5LCAyMTMsIDIyNCwgOSwgCi0gICAgMzQsIDI1MCwgMjQ5LCAyNDQsIDE1LCA5LCAzNCwgMjQ1LCAxNzQsIDExNiwgOSwgMzQsIDI0NSwgMTc0LCAxMDksIDksIDM0LCAKLSAgICAyNDUsIDE3NCwgMTY2LCA5LCAzNCwgMjUwLCAyNDksIDI0NSwgMTczLCA5LCAzNCwgMjQxLCAyMTksIDksIDM0LCAyNTAsIAotICAgIDI0OSwgMjQwLCAyMzIsIDksIDM0LCAyNTEsIDExOSwgOSwgMzQsIDI0MiwgMTk4LCA5LCAzNCwgMjUwLCAyNDksIDI0NCwgCi0gICAgNTksIDksIDM0LCAyNTAsIDI0OSwgMjUxLCAxNjAsIDksIDM0LCAyNTAsIDI0OSwgMjIyLCAxNzIsIDksIDM0LCAyMjAsIDg2LCAKLSAgICAyMTMsIDI0MywgOSwgMzQsIDIyMCwgODYsIDIxMywgMzIsIDksIDM0LCAyNTAsIDI0OSwgMjQzLCAyMTQsIDksIDM0LCAyMzUsIAotICAgIDE0MSwgMjQ1LCA4LCA5LCAzNCwgMjUwLCAyNDksIDI0NSwgOCwgOSwgMzQsIDIzNSwgMTQxLCAyMTYsIDIyOCwgOSwgMzQsIAotICAgIDI1MCwgMjQ5LCAyMTYsIDIyOCwgOSwgMzQsIDIzNSwgMTQxLCAyNDYsIDUwLCA5LCAzNCwgMjUwLCAyNDksIDI0NiwgNTAsIAotICAgIDksIDM0LCAyMTYsIDU1LCA5LCAzNCwgMjM1LCAxNDEsIDIxNiwgNTUsIDksIDM0LCAyNTAsIDI0OSwgMjE2LCA1NSwgNTcsIAotICAgIDM0LCAxMTYsIDU3LCAzNCwgMjMyLCAyNDIsIDU3LCAzNCwgMjQ3LCA3NCwgNTcsIDM0LCAyMjAsIDIzLCA1NywgMzQsIDIyMiwgCi0gICAgOTQsIDU3LCAzNCwgMTAxLCA1NywgMzQsIDEwOSwgNTcsIDM0LCAyMzMsIDksIDU3LCAzNCwgMjMxLCAyNDgsIDU3LCAzNCwgCi0gICAgMjMzLCA1NywgNTcsIDM0LCAyNDUsIDg4LCA1NywgMzQsIDE5NSwgNTcsIDM0LCAxMTksIDI1MSwgODksIDU3LCAzNCwgMjQ5LCAKLSAgICA4NiwgNTcsIDM0LCAyNDAsIDEwNCwgNTcsIDM0LCAyMTgsIDQwLCA1NywgMzQsIDIyNywgNDAsIDI1MSwgODksIDU3LCAzNCwgCi0gICAgMjM0LCA0MSwgNTcsIDM0LCAyMjUsIDEwNCwgNTcsIDM0LCAyMTMsIDE5MCwgNTcsIDM0LCAyMTksIDE3NSwgNTcsIDM0LCAKLSAgICA0NiwgMjI3LCA0MCwgMjUxLCA4OSwgNTcsIDM0LCAyNDEsIDE2MSwgMjQ1LCAxMDMsIDU3LCAzNCwgMjE3LCAyMDAsIDU3LCAKLSAgICAzNCwgMjQ3LCAxMjIsIDU3LCAzNCwgMjIyLCA5OCwgNTcsIDM0LCAyNDksIDIwMywgNTcsIDM0LCAyMjUsIDY1LCA1NywgMzQsIAotICAgIDI1NCwgMTIwLCA1NywgMzQsIDIzMCwgMTgwLCA1NywgMzQsIDI0NSwgMTAzLCA1NywgMzQsIDI0NSwgMTc5LCA1NywgMzQsIAotICAgIDIyMiwgMTE4LCA1NywgMzQsIDI0MiwgMTUwLCA1NywgMzQsIDI0MiwgMTUxLCAyMjAsIDksIDU3LCAzNCwgMjQ1LCA3LCA1NywgCi0gICAgMzQsIDI1MSwgMTcxLCA1NywgMzQsIDIxMywgMjA4LCA1NywgMzQsIDI1MCwgMzgsIDU3LCAzNCwgMjIzLCA5OCwgNTcsIDM0LCAKLSAgICAyMzUsIDI0NywgNTcsIDM0LCAyMjAsIDcsIDU3LCAzNCwgMjMzLCAxMjAsIDU3LCAzNCwgMjQ5LCA5NSwgNTcsIDM0LCAyMTksIAotICAgIDE2OSwgNTcsIDM0LCAyMzAsIDE4NSwgNTcsIDM0LCAyMjMsIDEyMSwgNTcsIDM0LCAyMTMsIDE5MywgNTcsIDM0LCAyMjcsIAotICAgIDU2LCA1NywgMzQsIDIxNiwgNjEsIDU3LCAzNCwgMjQ2LCAzNSwgNTcsIDM0LCAyMjAsIDE3NSwgMjE3LCA5OCwgNTcsIDM0LCAKLSAgICAyNDYsIDcyLCAyNDksIDIwMywgNTcsIDM0LCAxODQsIDIxOSwgNDgsIDU3LCAzNCwgMTE3LCAyNDEsIDI0OSwgNTcsIDM0LCAKLSAgICAyMjAsIDE4MCwgNTcsIDM0LCAyNTEsIDk1LCA1NywgMzQsIDIxOSwgMjQ5LCA1NywgMzQsIDI1MSwgNjUsIDU3LCAzNCwgCi0gICAgMjE5LCA3OCwgNTcsIDM0LCAyNDEsIDIxMSwgNTcsIDM0LCAyNDIsIDEwLCA1NywgMzQsIDI0NywgNzcsIDU3LCAzNCwgMjQxLCAKLSAgICAyNTQsIDU3LCAzNCwgMjUxLCA4MSwgNTcsIDM0LCAyMjQsIDM5LCA1NywgMzQsIDIyMiwgMTA2LCA1NywgMzQsIDI0NywgCi0gICAgMTUxLCA1NywgMzQsIDI1MywgODQsIDU3LCAzNCwgMjE5LCAxNjYsIDU3LCAzNCwgMjI4LCAxNjIsIDU3LCAzNCwgMjE4LCAKLSAgICAyMzgsIDU3LCAzNCwgMjIyLCAxMjksIDU3LCAzNCwgMjMwLCAxOTgsIDU3LCAzNCwgMjE2LCAxOTMsIDU3LCAzNCwgMjMzLCAKLSAgICAxNDUsIDU3LCAzNCwgMjE5LCA2OSwgNTcsIDM0LCAyNDgsIDM5LCA1NywgMzQsIDIxNCwgNSwgNTcsIDM0LCAyNDcsIDEwMCwgCi0gICAgMjI4LCAxNjIsIDU3LCAzNCwgMjQ5LCAxNTQsIDU3LCAzNCwgMjQzLCAxOTQsIDU3LCAzNCwgMjQ5LCAyMTQsIDU3LCAzNCwgCi0gICAgMjE5LCA4MiwgNTcsIDM0LCAyMTQsIDI0LCA1NywgMzQsIDI0NCwgNjUsIDU3LCAzNCwgMjQ5LCAyMTEsIDU3LCAzNCwgMjQ0LCAKLSAgICAxMjksIDU3LCAzNCwgNTEsIDIxMywgMTY2LCA1NywgMzQsIDE1MSwgMjE2LCAxOTQsIDIxNiwgMTQ2LCA1NywgMzQsIDIyMCwgCi0gICAgMTcsIDU3LCAzNCwgMjQ0LCAxMzksIDU3LCAzNCwgMjQ5LCA4NCwgNTcsIDM0LCAyNDcsIDkwLCA1NywgMzQsIDIyNSwgNjIsIAotICAgIDU3LCAzNCwgMjM1LCAxMzUsIDU3LCAzNCwgMjMxLCAxMzEsIDU3LCAzNCwgMjE3LCA0MSwgNTcsIDM0LCAyMTgsIDE5MCwgCi0gICAgNTcsIDM0LCAyMzMsIDMsIDU3LCAzNCwgMjE1LCAxMDMsIDU3LCAzNCwgMjQ0LCA4OSwgNTcsIDM0LCAyNTEsIDEyMiwgNjUsIAotICAgIDI0OSwgMTg3LCA1NywgMzQsIDIyMCwgMTE0LCA1NywgMzQsIDI0NiwgNzIsIDIxNywgMTk1LCA1NywgMzQsIDIxMywgMjM4LCAKLSAgICA1NywgMzQsIDIyMCwgMzEsIDU3LCAzNCwgMjQ3LCAxMzksIDU3LCAzNCwgMjQ0LCAyMzksIDU3LCAzNCwgMjE5LCAxOTMsIAotICAgIDU3LCAzNCwgNjgsIDU3LCAzNCwgMjE5LCA3MSwgNTcsIDM0LCAyMTksIDE4MCwgNTcsIDM0LCAyMTYsIDIxMiwgNTcsIDM0LCAKLSAgICAyNDIsIDEyMywgNTcsIDM0LCAyNTAsIDE1MSwgNTcsIDM0LCAyMTksIDk5LCA1NywgMzQsIDI1MiwgNzMsIDU3LCAzNCwgCi0gICAgMjIzLCAxODQsIDU3LCAzNCwgMjIwLCA5MywgNTcsIDM0LCAyMzUsIDEzMCwgNTcsIDM0LCAyMjksIDE3MSwgNTcsIDM0LCAKLSAgICAyMjAsIDIzNywgNTcsIDM0LCAyNDQsIDExOCwgNTcsIDM0LCAyMjcsIDc1LCA1NywgMzQsIDI1NCwgMjcsIDU3LCAzNCwgCi0gICAgMjI1LCAxNjIsIDU3LCAzNCwgMjQ1LCAxODMsIDU3LCAzNCwgMjUxLCA2MCwgNTcsIDM0LCAyMzEsIDE1MSwgNTcsIDM0LCAKLSAgICAyMzAsIDI1MiwgNTcsIDM0LCAyMjEsIDc2LCA1NywgMzQsIDI1MywgMTY3LCA1NywgMzQsIDIzMCwgMTkzLCA1NywgMzQsIAotICAgIDIxNiwgMjMyLCA1NywgMzQsIDIyNywgMzEsIDU3LCAzNCwgMjUxLCAxMjQsIDU3LCAzNCwgMjE5LCA2NywgNTcsIDM0LCAKLSAgICAyNDksIDE2MywgNTcsIDM0LCAyNDIsIDExNiwgNTcsIDM0LCAyMTcsIDYwLCA1NywgMzQsIDIzNSwgMjE0LCA1NywgMzQsIAotICAgIDI1MSwgMTM0LCA1NywgMzQsIDIxNCwgNDIsIDI0NSwgMTAzLCA1NywgMzQsIDI0OSwgMTg2LCA1NywgMzQsIDIxMywgMjQ5LCAKLSAgICA1NywgMzQsIDIyMiwgODksIDU3LCAzNCwgMjQwLCAyMzUsIDU3LCAzNCwgMjE5LCAxOTAsIDU3LCAzNCwgMjE0LCAyNTQsIAotICAgIDU3LCAzNCwgMjUxLCAyNDgsIDU3LCAzNCwgMjI1LCAyMDUsIDU3LCAzNCwgMjUyLCA5MiwgNTcsIDM0LCAyMjAsIDIzMiwgCi0gICAgNTcsIDM0LCAyMjQsIDMsIDU3LCAzNCwgMjIzLCAzNywgNTcsIDM0LCAyNDQsIDEsIDU3LCAzNCwgMjUxLCAxMjMsIDU3LCAKLSAgICAzNCwgMjUwLCAxNjAsIDU3LCAzNCwgMjUxLCAxNDksIDU3LCAzNCwgMjMwLCAxOTUsIDU3LCAzNCwgMjE0LCA0MSwgNTcsIAotICAgIDM0LCAyNDksIDIyMCwgNTcsIDM0LCAyMTMsIDIyMSwgNTcsIDM0LCAyNDcsIDEzMiwgNTcsIDM0LCAyMTQsIDE0MiwgNTcsIAotICAgIDM0LCAyNDIsIDE0MiwgNTcsIDM0LCAyMzIsIDE5MCwgNTcsIDM0LCAyNDMsIDY0LCA1NywgMzQsIDIzMCwgMTg4LCA1NywgCi0gICAgMzQsIDIyMCwgMjIsIDU3LCAzNCwgMjIwLCAxNzUsIDIxOCwgMjYsIDI1MSwgMTYwLCA1NywgMzQsIDIyNCwgNTAsIDU3LCAKLSAgICAzNCwgMjUxLCAxMzAsIDU3LCAzNCwgMjEzLCAxODUsIDU3LCAzNCwgMjQ0LCAxNTgsIDU3LCAzNCwgMjMzLCA3NiwgNTcsIAotICAgIDM0LCAyMTgsIDcsIDIzMywgNzYsIDU3LCAzNCwgMjMzLCA3MiwgNTcsIDM0LCAyMTksIDIxNywgNTcsIDM0LCAyMzMsIDc3LCAKLSAgICA1NywgMzQsIDIxMywgMjI0LCA1NywgMzQsIDI0NCwgMTUsIDU3LCAzNCwgMjQ1LCAxNzMsIDU3LCAzNCwgMjQxLCAyMTksIAotICAgIDU3LCAzNCwgMjQzLCAyMjYsIDU3LCAzNCwgMjQwLCAyMzIsIDU3LCAzNCwgMjUxLCAxMTksIDU3LCAzNCwgMjE4LCAxNCwgCi0gICAgNTcsIDM0LCAyNDIsIDE2LCA1NywgMzQsIDI0NCwgODIsIDU3LCAzNCwgMjIyLCAxOTcsIDIxMywgMjIxLCA1NywgMzQsIAotICAgIDI1MCwgMTUzLCA1NywgMzQsIDI0MiwgMTk4LCA1NywgMzQsIDI0NCwgNTksIDU3LCAzNCwgMjUxLCAxNjAsIDU3LCAzNCwgCi0gICAgMjIyLCAxNzIsIDU3LCAzNCwgMjQ4LCAyNSwgNTcsIDM0LCAyMTMsIDI0MywgNTcsIDM0LCAyNDEsIDE5NCwgNTcsIDM0LCAKLSAgICAyMTMsIDMyLCA1NywgMzQsIDIzMSwgNSwgNTcsIDM0LCAyNTEsIDE0NCwgNTcsIDM0LCAyNDUsIDExMywgNTcsIDM0LCAyNDMsIAotICAgIDIxNCwgNTcsIDM0LCAyMTYsIDE2NywgNTcsIDM0LCAyNDYsIDM3LCA1NywgMzQsIDIyNCwgMzMsIDU3LCAzNCwgMjI4LCAKLSAgICAxNjQsIDU3LCAzNCwgMjQ1LCA4LCA1NywgMzQsIDIxNiwgMjI4LCA1NywgMzQsIDI0NiwgNTAsIDU3LCAzNCwgMjE2LCA1NSwgCi0gICAgNTcsIDM0LCAyNDQsIDE3LCAxMDUsIDI0NywgMjQ0LCAxMzcsIDQyLCAyMTEsIDIxMSwgMjIzLCAxNDgsIDEwNSwgMjQ3LCAKLSAgICAyNDQsIDEzNywgNzgsIDIxMSwgMjExLCA1NSwgMTA1LCAyNDcsIDI0NCwgMTM3LCA0MiwgMjExLCAyMTEsIDIzMSwgMzcsIAotICAgIDI0LCAyMjMsIDE0OCwgMTA1LCAyNDcsIDI0NCwgMTM3LCA3OCwgMjExLCAyMTEsIDIzMSwgMzcsIDI0LCA1NSwgMTA1LCAKLSAgICAyNDcsIDI0NCwgMTM3LCAyNDMsIDIwMCwgMjE4LCAyMTAsIDEwNSwgMjQ3LCAyNDQsIDEzNywgMjE4LCAyMTEsIDI0MywgCi0gICAgMjEzLCA0OSwgMTA1LCAyNDcsIDI0NCwgMTM3LCAyMTgsIDIxMSwgMjQzLCAyMTMsIDU1LCAxMDUsIDI0NywgMjQ0LCAxMzcsIAotICAgIDIxOCwgMjExLCAyNDMsIDIxMywgMjMzLCA3MCwgMTA1LCAyNDcsIDI0NCwgMTM3LCAyMTgsIDIxMSwgMjQzLCAyMTMsIDIxNSwgCi0gICAgMTMxLCAyMzMsIDcwLCAxMDUsIDI0NywgMjQ0LCAxMzcsIDIxOCwgMjExLCAyNDMsIDIxMywgMjE1LCAxMzEsIDIyMywgMTQ4LCAKLSAgICAxMDUsIDI0NywgMjQ0LCAxMzcsIDIxOCwgMjExLCAyNDMsIDIxMywgMjMyLCAxNjMsIDIzMywgNzAsIDEwNSwgMjQ3LCAyNDQsIAotICAgIDEzNywgMjI2LCAyNDYsIDEwNSwgMjE5LCAyMDYsIDEwNSwgMjQ5LCAxNTcsIDEwNSwgMjQzLCAyMDAsIDIxOSwgNjksIDI0NywgCi0gICAgMTI5LCA3NywgMjM1LCAxMzEsIDIzNSwgMjMzLCAyMTksIDk4LCA4NywgMTA1LCAyMzUsIDE1NiwgNzcsIDEwNSwgMjQ5LCAKLSAgICAxODksIDc3LCAxMDUsIDUwLCAyMTIsIDc5LCA0MiwgMjU0LCAxOSwgMTI1LCA0NiwgMjU0LCAxOSwgMTI1LCA0MiwgNTEsIAotICAgIDI1NCwgMTksIDEyNSwgNDYsIDUxLCAyNTQsIDE5LCAxMjUsIDQyLCAyNDksIDEwMCwgMTI1LCA0NiwgMjQ5LCAxMDAsIDEyNSwgCi0gICAgNDIsIDY3LCAyNDksIDEwMCwgMTI1LCA0NiwgNjcsIDI0OSwgMTAwLCAxMjUsIDQyLCA4MywgMjMzLCA0NCwgMTI1LCA0NiwgCi0gICAgODMsIDIzMywgNDQsIDEyNSwgMjI1LCAxMTcsIDc3LCAyNDMsIDgsIDc3LCA0MiwgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIAotICAgIDQ2LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgNDIsIDY3LCAyMzMsIDQ0LCAxMjUsIDQ2LCA2NywgMjMzLCA0NCwgMTI1LCAKLSAgICA0MiwgNjcsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCA0NiwgNjcsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCA0MiwgNjcsIAotICAgIDQxLCAxMjUsIDQ2LCA2NywgNDEsIDEyNSwgMjE0LCAyMCwgMjQ4LCAxMDEsIDIyMywgMjAyLCA1MSwgMjI1LCA3MiwgMjI0LCAKLSAgICAxNDMsIDc3LCA1MSwgMjI1LCA3MiwgMjI0LCAxNDMsIDc3LCAxMTUsIDUxLCAyMjUsIDcyLCAyMjQsIDE0MywgNzcsIDIyNSwgCi0gICAgMTE3LCAxNTIsIDI0NCwgMTU4LCAyNDEsIDI0NywgMjI4LCA1NCwgMTE2LCAyNDEsIDI0NywgMjI4LCA1NCwgMTA5LCAyNDEsIAotICAgIDI0NywgMjI4LCA1NCwgMTY2LCAyNDEsIDI0NywgMjI4LCA1NCwgMTYzLCAyNDEsIDI0NywgMjI4LCA1NCwgMTgwLCAyNDEsIAotICAgIDI0NywgMjI4LCA1NCwgMTg5LCAyNDEsIDI0NywgMjI4LCA1NCwgMTk4LCAyNDEsIDI0NywgMjI4LCA1NCwgMTk1LCAyNDEsIAotICAgIDI0NywgMjI4LCA1NCwgMjAwLCAxMDUsIDIzMywgMjksIDE2MCwgNzcsIDEwNSwgMjIzLCAxMjUsIDE2MCwgNzcsIDEwNSwgCi0gICAgMjQ3LCAyNTEsIDE2MCwgNzcsIDEwNSwgMjQ1LCA4NywgMTYwLCA3NywgMjMsIDIyMCwgODEsIDYyLCAxNjAsIDc3LCAyMywgCi0gICAgNTEsIDYyLCAxNjAsIDc3LCAyMTQsIDE2LCAyNDgsIDEwMSwgNzEsIDIzNCwgMjM4LCAyMjMsIDIyOCwgNzcsIDcxLCAyMzQsIAotICAgIDIzOCwgMjIzLCAyMjgsIDIsIDIxNCwgMTE2LCAyMTksIDIxOCwgNzcsIDcxLCAyMzQsIDIzOCwgMjIzLCAyMjgsIDE1MiwgCi0gICAgMjE1LCAxMzEsIDI0MiwgOSwgNzEsIDIzNCwgMjM4LCAyMjMsIDIyOCwgMiwgMjE0LCAxMTYsIDIxOSwgMjE4LCAxNTIsIAotICAgIDIxNSwgMTMxLCAyNDIsIDksIDcxLCAyMzQsIDIzOCwgMjIzLCAyMjgsIDE1MiwgMjMyLCAxNjMsIDI0MiwgOSwgMzYsIDIyNSwgCi0gICAgMTE3LCA3NywgMTA1LCAyMDEsIDIzMiwgMjQzLCAyNDQsIDExNSwgMjIxLCA1OCwgODcsIDI0MSwgMjQ3LCAyMjgsIDU0LCAKLSAgICAyMTcsIDIwMCwgMjQxLCAyNDcsIDIyOCwgNTQsIDIxNiwgMzgsIDI0MSwgMjQ3LCAyMjgsIDU0LCAyMTcsIDExNSwgNzEsIAotICAgIDEwNSwgMjM1LCAxNTYsIDc3LCAyMzEsIDIwMywgNzcsIDIyNiwgMTI3LCAyNTQsIDQ5LCA3NywgMTA1LCA0MywgMjM1LCAKLSAgICAyMzUsIDEwNSwgMTUxLCAyNDQsIDc1LCAyMTksIDIwNiwgMTQyLCAxLCAzLCA2MSwgMTQyLCAxLCA2MSwgMTQyLCAxLCAzLCAKLSAgICA3MiwgMTQyLCAxLCA3MiwgMTQyLCAxLCAzLCA2OSwgMTQyLCAxLCA2OSwgMTQyLCAxLCAzLCA3NCwgMTQyLCAxLCA3NCwgCi0gICAgMTQyLCAxLCAzLCA3NSwgMTQyLCAxLCA3NSwgMTQyLCAxLCAxODEsIDE0MiwgMSwgMjQzLCAxMTAsIDE0MiwgMSwgMjM0LCAKLSAgICAxMDEsIDE0MiwgMSwgMjQyLCAxOTAsIDE0MiwgMSwgMjMzLCAyMzgsIDE0MiwgMSwgMjQyLCA5MiwgMTQyLCAxLCAyMzQsIAotICAgIDE4OCwgMTQyLCAxLCAyNDMsIDM4LCAxNDIsIDEsIDIzNCwgMzcsIDE0MiwgMSwgMjQyLCAxNTAsIDE0MiwgMSwgMjIyLCAKLSAgICAyMDIsIDE0MiwgMSwgMjEyLCAxMDksIDE0MiwgMSwgMjIwLCAxMTcsIDE0MiwgMSwgMjEyLCAzNywgMTQyLCAxLCAyMTksIAotICAgIDI3LCAxNDIsIDEsIDIxMiwgOCwgMTQyLCAxLCAyMjIsIDEwMCwgMTQyLCAxLCAyMTIsIDg3LCAxNDIsIDEsIDIxOSwgMjQyLCAKLSAgICAxNDIsIDEsIDIxMiwgMTYsIDE0MiwgMSwgMjE4LCA1MiwgMTQyLCAxLCAyNDgsIDE2NCwgMTQyLCAxLCAyMTcsIDcxLCAxNDIsIAotICAgIDEsIDI0NywgMjExLCAxNDIsIDEsIDMsIDIxNiwgODIsIDE0MiwgMSwgMjE2LCA4MiwgMTQyLCAxLCAyNDYsIDMzLCAxNDIsIAotICAgIDEsIDIxNywgMjI5LCAxNDIsIDEsIDI0OCwgNDEsIDE0MiwgMSwgMTA4LCAxNDIsIDEsIDI0NywgOTksIDE0MiwgMSwgMjA1LCAKLSAgICAxNDIsIDEsIDIyOSwgNjQsIDE0MiwgMSwgMjI4LCA5MiwgMTQyLCAxLCAyMjksIDE4NywgMTQyLCAxLCAyMjgsIDE4NSwgCi0gICAgMTQyLCAxLCAxNTksIDE0MiwgMSwgMjUyLCAxMDcsIDE0MiwgMSwgMTkzLCAxNDIsIDEsIDI0MSwgMTY1LCAxNDIsIDEsIAotICAgIDI1MSwgMTg0LCAxNDIsIDEsIDIyNSwgMjQwLCAxNDIsIDEsIDI0MCwgMjEyLCAxNDIsIDEsIDI1MSwgNTQsIDE0MiwgMSwgCi0gICAgMjI1LCAzNSwgMTQyLCAxLCAyNDEsIDIyMiwgMTQyLCAxLCAyNTEsIDI1MSwgMTQyLCAxLCAyMjYsIDk2LCAxNDIsIDEsIAotICAgIDI0MSwgNTQsIDE0MiwgMSwgMjUxLCAxMjgsIDE0MiwgMSwgMjI1LCAxNTAsIDE0MiwgMSwgMTg4LCAxNDIsIDEsIDIzMSwgCi0gICAgNDIsIDE0MiwgMSwgMjMwLCAxNzIsIDE0MiwgMSwgMjMxLCAxNTYsIDE0MiwgMSwgMjMwLCAyMzEsIDE0MiwgMSwgMywgMTg2LCAKLSAgICAxNDIsIDEsIDE4NiwgMTQyLCAxLCAzLCAyMTIsIDIwMywgMTQyLCAxLCAyMTIsIDIwMywgMTQyLCAxLCAzLCAyMTIsIDIzNSwgCi0gICAgMTQyLCAxLCAyMTIsIDIzNSwgMTQyLCAxLCAyMDMsIDE0MiwgMSwgMjIzLCAxODgsIDE0MiwgMSwgMjIzLCA1MSwgMTQyLCAxLCAKLSAgICAyMjQsIDIxLCAxNDIsIDEsIDIyMywgMTEyLCAxNDIsIDEsIDMsIDIxNCwgNDksIDE0MiwgMSwgMjE0LCA0OSwgMTQyLCAxLCAKLSAgICAyMTMsIDIzNSwgMTQyLCAxLCAyMTQsIDYsIDE0MiwgMSwgMjEzLCAyMTQsIDE0MiwgMSwgMjA0LCAxNDIsIDEsIDIxNCwgOTksIAotICAgIDE0MiwgMSwgMywgMTgxLCAxNDIsIDEsIDMsIDIzNCwgMTg4LCAzNywgMjM0LCAyMDYsIDIxNCwgMTE2LCAyMTksIDIxOCwgCi0gICAgNzcsIDM3LCAyMzQsIDIwNiwgMjIxLCA3NSwgMjE5LCAyMTgsIDc3LCAyMzQsIDIwNiwgMjE0LCAxMTYsIDIxOSwgMjE4LCAKLSAgICA3NywgMjM0LCAyMDYsIDIyMSwgNzUsIDIxOSwgMjE4LCA3NywgMTQyLCAyMzUsIDE1NiwgNzcsIDE0MiwgMjE0LCAxMTYsIAotICAgIDIzNSwgMTU2LCA3NywgMTQyLCAyNDcsIDE3MywgMjEyLCAyMTYsIDIzNCwgMjA2LCA1MSwgMjQwLCAxNjAsIDU2LCAxLCAzLCAKLSAgICA2MSwgNTYsIDEsIDYxLCA1NiwgMSwgMywgNzIsIDU2LCAxLCA3MiwgNTYsIDEsIDMsIDY5LCA1NiwgMSwgNjksIDU2LCAxLCAKLSAgICAzLCA3NCwgNTYsIDEsIDc0LCA1NiwgMSwgMywgNzUsIDU2LCAxLCA3NSwgNTYsIDEsIDE4MSwgNTYsIDEsIDI0MywgMTEwLCAKLSAgICA1NiwgMSwgMjM0LCAxMDEsIDU2LCAxLCAyNDIsIDE5MCwgNTYsIDEsIDIzMywgMjM4LCA1NiwgMSwgMjQyLCA5MiwgNTYsIDEsIAotICAgIDIzNCwgMTg4LCA1NiwgMSwgMjQzLCAzOCwgNTYsIDEsIDIzNCwgMzcsIDU2LCAxLCAyNDIsIDE1MCwgNTYsIDEsIDIyMiwgCi0gICAgMjAyLCA1NiwgMSwgMjEyLCAxMDksIDU2LCAxLCAyMjAsIDExNywgNTYsIDEsIDIxMiwgMzcsIDU2LCAxLCAyMTksIDI3LCAKLSAgICA1NiwgMSwgMjEyLCA4LCA1NiwgMSwgMjIyLCAxMDAsIDU2LCAxLCAyMTIsIDg3LCA1NiwgMSwgMjE5LCAyNDIsIDU2LCAxLCAKLSAgICAyMTIsIDE2LCA1NiwgMSwgMjE4LCA1MiwgNTYsIDEsIDI0OCwgMTY0LCA1NiwgMSwgMjE3LCA3MSwgNTYsIDEsIDI0NywgCi0gICAgMjExLCA1NiwgMSwgMywgMjE2LCA4MiwgNTYsIDEsIDIxNiwgODIsIDU2LCAxLCAyNDYsIDMzLCA1NiwgMSwgMjE3LCAyMjksIAotICAgIDU2LCAxLCAyNDgsIDQxLCA1NiwgMSwgMTA4LCA1NiwgMSwgMjQ3LCA5OSwgNTYsIDEsIDIwNSwgNTYsIDEsIDIyOSwgNjQsIAotICAgIDU2LCAxLCAyMjgsIDkyLCA1NiwgMSwgMjI5LCAxODcsIDU2LCAxLCAyMjgsIDE4NSwgNTYsIDEsIDE1OSwgNTYsIDEsIDI1MiwgCi0gICAgMTA3LCA1NiwgMSwgMTkzLCA1NiwgMSwgMjQxLCAxNjUsIDU2LCAxLCAyNTEsIDE4NCwgNTYsIDEsIDIyNSwgMjQwLCA1NiwgCi0gICAgMSwgMjQwLCAyMTIsIDU2LCAxLCAyNTEsIDU0LCA1NiwgMSwgMjI1LCAzNSwgNTYsIDEsIDI0MSwgMjIyLCA1NiwgMSwgMjUxLCAKLSAgICAyNTEsIDU2LCAxLCAyMjYsIDk2LCA1NiwgMSwgMjQxLCA1NCwgNTYsIDEsIDI1MSwgMTI4LCA1NiwgMSwgMjI1LCAxNTAsIAotICAgIDU2LCAxLCAxODgsIDU2LCAxLCAyMzEsIDQyLCA1NiwgMSwgMjMwLCAxNzIsIDU2LCAxLCAyMzEsIDE1NiwgNTYsIDEsIDIzMCwgCi0gICAgMjMxLCA1NiwgMSwgMywgMTg2LCA1NiwgMSwgMTg2LCA1NiwgMSwgMywgMjEyLCAyMDMsIDU2LCAxLCAyMTIsIDIwMywgNTYsIAotICAgIDEsIDMsIDIxMiwgMjM1LCA1NiwgMSwgMjEyLCAyMzUsIDU2LCAxLCAyMDMsIDU2LCAxLCAyMjMsIDE4OCwgNTYsIDEsIDIyMywgCi0gICAgNTEsIDU2LCAxLCAyMjQsIDIxLCA1NiwgMSwgMjIzLCAxMTIsIDU2LCAxLCAzLCAyMTQsIDQ5LCA1NiwgMSwgMjE0LCA0OSwgCi0gICAgNTYsIDEsIDIxMywgMjM1LCA1NiwgMSwgMjE0LCA2LCA1NiwgMSwgMjEzLCAyMTQsIDU2LCAxLCAyMDQsIDU2LCAxLCAyMTQsIAotICAgIDk5LCA1NiwgMSwgMywgMTgxLCA1NiwgMSwgMywgMjM0LCAxODgsIDU2LCAxLCAyMTUsIDEsIDU2LCAxLCAyMTQsIDE1NCwgCi0gICAgNTYsIDEsIDIxNCwgMjMyLCA1NiwgMSwgMjE0LCAxMTksIDU2LCAyMzEsIDM3LCAyNDcsIDc0LCAyMzQsIDIwNiwgMjI1LCAKLSAgICA1NywgMjE5LCAyMTgsIDc3LCA1NiwgMjM1LCAxNTYsIDc3LCA1NiwgMjE0LCAxMTYsIDIzNSwgMTU2LCA3NywgNTYsIDI0NywgCi0gICAgMTczLCAyMzQsIDgsIDIwMiwgMSwgMjUzLCA3NCwgMjAyLCAxLCAyMjYsIDIyOSwgMjAyLCAxLCAxODMsIDIwMiwgMSwgMjQ0LCAKLSAgICAyMzAsIDIwMiwgMSwgMjQ5LCAzLCAyMDIsIDEsIDIxOCwgOTksIDIwMiwgMSwgMjA0LCAyMDIsIDEsIDE1MCwgMjAyLCAxLCAKLSAgICAyNDMsIDE3NywgMjAyLCAxLCAyMzUsIDI3LCAyMDIsIDEsIDI0MiwgNDEsIDIwMiwgMSwgMjM1LCAxNDIsIDIwMiwgMSwgCi0gICAgMjI0LCAyNDAsIDIwMiwgMSwgMjEzLCAxNjYsIDIwMiwgMSwgMjEyLCA3NiwgMjAyLCAxLCAyNTAsIDkzLCAyMDIsIDEsIAotICAgIDIyMSwgMjYsIDIwMiwgMSwgMTQ5LCAyMDIsIDEsIDIxMiwgMTUyLCAyMDIsIDEsIDI1MCwgMjUyLCAyMDIsIDEsIDE5NywgCi0gICAgMjAyLCAxLCA2MSwgMjAyLCAxLCA3NSwgMjAyLCAxLCA3NCwgMjAyLCAxLCAyNDUsIDE1NCwgMjAyLCAxLCAyNTQsIDEwOCwgCi0gICAgMjAyLCAxLCAyNDUsIDE1MiwgMjAyLCAxLCAyNTMsIDEwOCwgMjAyLCAxLCAyMjcsIDIsIDIwMiwgMSwgMjU0LCAzMiwgMjAyLCAKLSAgICAxLCAyNDUsIDEwOCwgMjAyLCAxLCAyNTQsIDI0LCAyMDIsIDEsIDI0NSwgOTYsIDIwMiwgMSwgMjQ1LCA1NSwgMjAyLCAxLCAKLSAgICA3MiwgMjAyLCAxLCA2OSwgMjAyLCAxLCAyMzUsIDE1NCwgMjAyLCAxLCAyMTUsIDc5LCAyMDIsIDEsIDIyOSwgMTYxLCAyMDIsIAotICAgIDEsIDI0MiwgMTU0LCAyMDIsIDEsIDIzNiwgMjksIDIzLCAxLCAyMzQsIDY3LCAyMywgMSwgMjE5LCAxNTAsIDIzLCAxLCAKLSAgICAyMzQsIDYwLCAyMywgMSwgMjI5LCA1NywgMjMsIDEsIDIyOSwgNTUsIDIzLCAxLCAyMjksIDU0LCAyMywgMSwgMjE3LCA1NSwgCi0gICAgMjMsIDEsIDIxOSwgMTM5LCAyMywgMSwgMjIzLCAxNzksIDIzLCAxLCAyMjMsIDE3NCwgMjMsIDEsIDIyMywgMTcxLCAyMywgCi0gICAgMSwgMjIzLCAxNjQsIDIzLCAxLCAyMjMsIDE1OSwgMjMsIDEsIDIyMywgMTU0LCAyMywgMSwgMjIzLCAxNjUsIDIzLCAxLCAKLSAgICAyMjMsIDE3NywgMjMsIDEsIDIzMSwgMzAsIDIzLCAxLCAyMjUsIDIyNywgMjMsIDEsIDIxOSwgMTQ3LCAyMywgMSwgMjI1LCAKLSAgICAyMTYsIDIzLCAxLCAyMjAsIDc2LCAyMywgMSwgMjE5LCAxNDQsIDIzLCAxLCAyMzYsIDUxLCAyMywgMSwgMjQ5LCAyMzksIAotICAgIDIzLCAxLCAyMTksIDE1NCwgMjMsIDEsIDI1MCwgNDMsIDIzLCAxLCAyMzQsIDExNiwgMjMsIDEsIDIxNywgMTI2LCAyMywgMSwgCi0gICAgMjI2LCA3LCAyMywgMSwgMjQxLCAxNTgsIDIzLCAxLCA2MSwgMjMsIDEsIDI1NCwgMTQ4LCAyMywgMSwgMTg2LCAyMywgMSwgCi0gICAgMjEzLCA4MCwgMjMsIDEsIDI0NSwgNzYsIDIzLCAxLCA3NCwgMjMsIDEsIDIxMywgMjcsIDIzLCAxLCAyMTMsIDM4LCAyMywgCi0gICAgMSwgNzUsIDIzLCAxLCAyMTQsIDQ5LCAyMywgMSwgMjE0LCA0NiwgMjMsIDEsIDIyNywgOTksIDIzLCAxLCAyMTIsIDIzNSwgCi0gICAgMjMsIDEsIDY5LCAyMywgMSwgMjEzLCAyNTIsIDIzLCAxLCAyMTQsIDYsIDIzLCAxLCAyMTMsIDIzNSwgMjMsIDEsIDIxMiwgCi0gICAgMjAzLCAyMywgMSwgMjQ1LCAyMiwgMjMsIDEsIDIxMiwgMjU1LCAyMywgMSwgNzIsIDIzLCAyNDQsIDcyLCAyMywgMSwgMjE5LCAKLSAgICAxNDgsIDIzLCAxLCAyMjksIDQ3LCAyMywgMSwgMjI5LCA0OSwgMjMsIDEsIDIyOSwgNTIsIDIzLCAxLCAyMjMsIDE3MiwgMjMsIAotICAgIDEsIDIyMywgMTUzLCAyMywgMSwgMjIzLCAxNjEsIDIzLCAxLCAyMjMsIDE2NiwgMjMsIDEsIDIyMywgMTUxLCAyMywgMSwgCi0gICAgMjMxLCAyMywgMjMsIDEsIDIzMSwgMjAsIDIzLCAxLCAyMzEsIDI0LCAyMywgMSwgMjM0LCAyMjYsIDIzLCAxLCAyMjUsIAotICAgIDIyMiwgMjMsIDEsIDIyNSwgMjA4LCAyMywgMSwgMjI1LCAyMTQsIDIzLCAxLCAyMjUsIDIxMSwgMjMsIDEsIDIyNSwgMjI1LCAKLSAgICAyMywgMSwgMjI1LCAyMDksIDIzLCAxLCAyMzQsIDIyNCwgMjMsIDEsIDIzNCwgMjIyLCAyMywgMSwgMjIwLCA2OSwgMjMsIDEsIAotICAgIDIyMCwgNjcsIDIzLCAxLCAyMjAsIDU5LCAyMywgMSwgMjIwLCA2NCwgMjMsIDEsIDIyMCwgNzQsIDIzLCAxLCAyMjYsIDE2MCwgCi0gICAgMjMsIDEsIDIxOSwgMTUxLCAyMywgMSwgMjEzLCAxNywgMjMsIDEsIDIxMywgMTMsIDIzLCAxLCAyMTMsIDE0LCAyMywgMSwgCi0gICAgMjM0LCAyMjUsIDIzLCAxLCAyMTksIDE1MiwgMjMsIDEsIDIxMywgMjMsIDIzLCAxLCAyMTIsIDIyOSwgMjMsIDEsIDIxMiwgCi0gICAgMjI4LCAyMywgMSwgMjEyLCAyMzEsIDIzLCAxLCAyMTIsIDE5NCwgMjMsIDEsIDIxMiwgMTk1LCAyMywgMSwgMjEyLCAxOTgsIAotICAgIDIzLCAxLCAyNTMsIDIwNCwgMjMsIDEsIDI1MywgMTk4LCAxMDUsIDI1NCwgMTAsIDIzMiwgMjMyLCA3NywgMTA1LCAyNTQsIAotICAgIDEwLCAyMjMsIDIwMywgNzcsIDEwNSwgMjU0LCAxMCwgMTIyLCA3NywgMTA1LCAyNTQsIDEwLCAxMTcsIDc3LCAxMDUsIDI1NCwgCi0gICAgMTAsIDEzMywgNzcsIDEwNSwgMjU0LCAxMCwgMjQzLCAyMzcsIDc3LCAxMDUsIDI1NCwgMTAsIDIxNiwgMjI3LCA3NywgMTA1LCAKLSAgICAyNTQsIDEwLCAyMzEsIDM3LCA3NywgMTA1LCAyNTQsIDEwLCAyNTEsIDEwMSwgNzcsIDEwNSwgMjU0LCAxMCwgMjQ0LCA2MSwgCi0gICAgNzcsIDEwNSwgMjU0LCAxMCwgMjIyLCA5NSwgNzcsIDEwNSwgMjU0LCAxMCwgMjE3LCAxMjIsIDc3LCAxMDUsIDI1NCwgMTAsIAotICAgIDI0MywgMjMwLCA3NywgMTA1LCAyNTQsIDEwLCAyNDEsIDIwOCwgNzcsIDEwNSwgMjU0LCAxMCwgMjQ1LCAxODAsIDc3LCAKLSAgICAxMDUsIDI1NCwgMTAsIDIzMSwgMjQ5LCA3NywgMjAyLCAxLCAyNTEsIDU0LCAyMDIsIDEsIDIxMiwgMzcsIDIwMiwgMSwgCi0gICAgMjM1LCAxMTAsIDIwMiwgMSwgMjQyLCA5MiwgMjAyLCAxLCAyNDUsIDE2NSwgMjAyLCAxLCAyNDUsIDkzLCAyMDIsIDEsIAotICAgIDIyNywgNDksIDIwMiwgMSwgMjI3LCA1MywgMjAyLCAxLCAyMzUsIDE3NywgMjAyLCAxLCAyNTQsIDEyLCAyMDIsIDEsIDIzNSwgCi0gICAgMjIxLCAyMDIsIDEsIDIxNSwgMTM5LCAyMDIsIDEsIDIzNiwgMTEsIDIwMiwgMSwgMjI5LCAxNDIsIDIwMiwgMSwgMjU0LCAKLSAgICAxMDIsIDIwMiwgMSwgMjUzLCAxMDMsIDIwMiwgMSwgMjU0LCA0NSwgMjAyLCAxLCAyMjcsIDcwLCAyMDIsIDEsIDIyNywgNTUsIAotICAgIDIwMiwgMSwgMjM1LCAyMTgsIDIwMiwgNDAsIDEsIDIyNiwgMjI5LCAyMDIsIDQwLCAxLCAyMTgsIDk5LCAyMDIsIDQwLCAxLCAKLSAgICAyMzUsIDI3LCAyMDIsIDQwLCAxLCAyNDIsIDQxLCAyMDIsIDEsIDI0MiwgMjI2LCAyMDIsIDEsIDIzMywgMjYsIDIwMiwgMSwgCi0gICAgMjExLCAyNDksIDksIDIxOSwgNDUsIDIxOCwgOTksIDksIDIxOSwgNDUsIDIxMywgMjQ1LCA5LCAyMTksIDQ1LCAyMTMsIAotICAgIDE0NiwgOSwgMjE5LCA0NSwgMjUxLCA4LCA5LCAyMTksIDQ1LCAyMTgsIDE5OSwgOSwgMjE5LCA0NSwgMjQwLCAxNTAsIDksIAotICAgIDIxOSwgNDUsIDI0MCwgMTU0LCA5LCAyMTksIDQ1LCAyNDAsIDIxOCwgOSwgMjE5LCA0NSwgMjQwLCAxNTEsIDksIDIxOSwgCi0gICAgNDUsIDIxOCwgMTAyLCA5LCAyMTksIDQ1LCAyNDAsIDE1MywgOSwgMjE5LCA0NSwgMjQwLCAxNDksIDksIDIxOSwgNDUsIAotICAgIDI0MCwgMjE2LCA5LCAyMTksIDQ1LCAyNDAsIDE1MiwgOSwgMjE5LCA0NSwgMjQwLCAxNDgsIDksIDIxOSwgNDUsIDIwNCwgOSwgCi0gICAgMjE5LCA0NSwgMjQyLCA0MSwgOSwgMjE5LCA0NSwgMTk3LCA5LCAyMTksIDQ1LCAyMjYsIDIyOSwgOSwgMjE5LCA0NSwgMjE5LCAKLSAgICAyMDgsIDksIDIxOSwgNDUsIDI0OSwgMywgOSwgMjE5LCA0NSwgMjQwLCAxNTUsIDksIDIxOSwgNDUsIDI0MSwgMTc1LCA5LCAKLSAgICAyMTksIDQ1LCAyMTgsIDExMSwgOSwgMjE5LCA0NSwgMjE4LCAxNzgsIDksIDIxOSwgNDUsIDIxOSwgMTA3LCA5LCAyMTksIAotICAgIDQ1LCAyMjEsIDMxLCA5LCAyMTksIDQ1LCAyMjYsIDk4LCA5LCAyMTksIDQ1LCAyMjQsIDI0MiwgOSwgMjE5LCA0NSwgMjE2LCAKLSAgICAyNTMsIDksIDIxOSwgNDUsIDIxOCwgMTAxLCA5LCAyMTksIDQ1LCAyMTgsIDE4OSwgOSwgMjE5LCA0NSwgMjQwLCAxNjIsIDksIAotICAgIDIxOSwgNDUsIDI0MCwgMTQ3LCA5LCAyMTksIDQ1LCAyMjYsIDI1LCA5LCAyMTksIDQ1LCAyMjQsIDI0MCwgNTYsIDEsIDMsIAotICAgIDIzMywgMjM4LCA1NiwgMSwgMywgMjIwLCAxMTcsIDU2LCAxLCAzLCAyMTksIDI3LCA1NiwgMSwgMywgMTA4LCA1NiwgMSwgMywgCi0gICAgMjI4LCA5MiwgNTYsIDEsIDMsIDE1OSwgNTYsIDEsIDMsIDI0MSwgMTY1LCA1NiwgMSwgMywgMjQwLCAyMTIsIDU2LCAxLCAzLCAKLSAgICAyNDEsIDIyMiwgNTYsIDEsIDMsIDI0MSwgNTQsIDU2LCAxLCAzLCAyMzAsIDE3MiwgNTYsIDEsIDMsIDIwMywgNTYsIDEsIDMsIAotICAgIDIyMywgMTg4LCA1NiwgMSwgMywgMjIzLCA1MSwgNTYsIDEsIDMsIDIyNCwgMjEsIDU2LCAxLCAzLCAyMjMsIDExMiwgODYsIAotICAgIDIzLCAyMzQsIDY3LCA4NiwgMjMsIDIyOSwgNTcsIDg2LCAyMywgMjE3LCA1NSwgODYsIDIzLCAyMjMsIDE3OSwgODYsIDIzLCAKLSAgICAyMzEsIDMwLCA4NiwgMjMsIDIyNSwgMjI3LCA4NiwgMjMsIDIyMCwgNzYsIDg2LCAyMywgMjM2LCA1MSwgODYsIDIzLCAyNDksIAotICAgIDIzOSwgODYsIDIzLCAyNTAsIDQzLCA4NiwgMjMsIDIzNCwgMTE2LCA4NiwgMjMsIDIxNywgMTI2LCA4NiwgMjMsIDIyNiwgNywgCi0gICAgODYsIDIzLCAyNDEsIDE1OCwgODYsIDIzLCAyMzQsIDY4LCA2MSwgODYsIDIzLCAyMjksIDU4LCA2MSwgODYsIDIzLCAyMTcsIAotICAgIDU2LCA2MSwgODYsIDIzLCAyMjMsIDE4MCwgNjEsIDg2LCAyMywgMjMxLCAzMSwgNjEsIDg2LCAyMywgMjI1LCAyMjgsIDYxLCAKLSAgICA4NiwgMjMsIDIyMCwgNzcsIDYxLCA4NiwgMjMsIDIzNiwgNTIsIDYxLCA4NiwgMjMsIDI0OSwgMjQwLCA2MSwgODYsIDIzLCAKLSAgICAyNTAsIDQ0LCA2MSwgODYsIDIzLCAyMzQsIDExNywgNjEsIDg2LCAyMywgMjE3LCAxMjcsIDYxLCA4NiwgMjMsIDIyNiwgOCwgCi0gICAgNjEsIDg2LCAyMywgMjQxLCAxNTksIDYxLCA4NiwgMjMsIDI0OSwgMjQwLCA2OSwgODYsIDIzNCwgMTIsIDEzNywgMjI3LCAKLSAgICA4MywgODYsIDIzNCwgMTIsIDEzNywgMTU3LCAyNDAsIDIxMiwgODYsIDE0MywgMTE2LCA4NiwgMTQzLCAxMDksIDg2LCAxNDMsIAotICAgIDE2NiwgODYsIDE0MywgMTYzLCA4NiwgMTQzLCAxODAsIDg2LCAxNDMsIDE4OSwgODYsIDE0MywgMTk4LCA4NiwgMTQzLCAKLSAgICAxOTUsIDg2LCAxNDMsIDIwMCwgODYsIDE0MywgMjE3LCAyMDAsIDg2LCAxNDMsIDIzMCwgMTk4LCA4NiwgMTQzLCAyNDQsIAotICAgIDY1LCA4NiwgMTQzLCAyMTQsIDI0LCA4NiwgMTQzLCAyMTMsIDIwMSwgODYsIDE0MywgMjMxLCAxMDYsIDg2LCAxNDMsIDI0NSwgCi0gICAgMTc5LCA4NiwgMTQzLCAyMTgsIDIzOCwgODYsIDE0MywgMjE5LCA3MiwgODYsIDE0MywgMjQxLCAyMjgsIDg2LCAxNDMsIAotICAgIDIxOSwgMjM4LCA4NiwgMTQzLCAyMzAsIDI0LCA4NiwgMTQzLCAyMTksIDE5MiwgODYsIDE0MywgMjQ0LCA3MSwgODYsIDE0MywgCi0gICAgMjQ5LCAxNDAsIDg2LCAxNDMsIDIzMywgMTQ4LCA4NiwgMTQzLCAyMjMsIDIyMywgODYsIDE0MywgMjUwLCAyMDMsIDg2LCAKLSAgICAxNDMsIDIxOSwgMzAsIDg2LCAxNDMsIDIxOCwgMjIwLCA4NiwgMTQzLCAyNDUsIDg2LCA4NiwgMTQzLCAyMjMsIDIxNSwgODYsIAotICAgIDE0MywgMjU0LCA1OSwgODYsIDE0MywgMjQ0LCA5NywgODYsIDE0MywgMjIzLCAyMTMsIDg2LCAxNDMsIDIyMSwgNzYsIDg2LCAKLSAgICAxNDMsIDIyNCwgMjAsIDM2LCAxNDMsIDIyNCwgMTU3LCAzNiwgMTQzLCAyMzQsIDg5LCAzNiwgMTQzLCAyMjIsIDExNiwgMzYsIAotICAgIDE0MywgMjM0LCA4LCAzNiwgNTAsIDIxNywgMjAxLCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDM2LCA1MCwgMjE2LCAzOSwgCi0gICAgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAzNiwgNTAsIDIxNywgMTE2LCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDM2LCA1MCwgCi0gICAgMjQzLCAyNDEsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMzYsIDUwLCAyNDQsIDg0LCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIAotICAgIDM2LCA1MCwgMjIwLCA0MCwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAzNiwgNTAsIDIyMSwgMzgsIDIyNywgNjMsIDgzLCAKLSAgICAyMTksIDE2NiwgMzYsIDUwLCAyNDUsIDE0MiwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAyMjYsIDEyMywgNTIsIDM2LCA1MCwgCi0gICAgMjE2LCAzOSwgMTE2LCAzNiwgNTAsIDIxNiwgMzksIDEwOSwgMzYsIDUwLCAyMTYsIDM5LCAxNjYsIDM2LCA1MCwgMjE2LCAKLSAgICAzOSwgMTYzLCAzNiwgNTAsIDIxNiwgMzksIDE4MCwgMzYsIDUwLCAyMTYsIDM5LCAxODksIDM2LCA1MCwgMjE2LCAzOSwgCi0gICAgMTk4LCAzNiwgNTAsIDIxNiwgMzksIDE5NSwgMzYsIDUwLCAyMTYsIDM5LCAyMDAsIDM2LCA1MCwgMjE3LCAxMTUsIDM2LCAKLSAgICA1MCwgMjE3LCAxMTYsIDExNiwgMzYsIDUwLCAyMTcsIDExNiwgMTA5LCAzNiwgNTAsIDIxNywgMTE2LCAxNjYsIDM2LCA1MCwgCi0gICAgMjE3LCAxMTYsIDE2MywgMzYsIDUwLCAyMTcsIDExNiwgMTgwLCAzNiwgMjMsIDIzNCwgNjcsIDM2LCAyMywgMjI5LCA1NywgCi0gICAgMzYsIDIzLCAyMTcsIDU1LCAzNiwgMjMsIDIyMywgMTc5LCAzNiwgMjMsIDIzMSwgMzAsIDM2LCAyMywgMjI1LCAyMjcsIDM2LCAKLSAgICAyMywgMjIwLCA3NiwgMzYsIDIzLCAyMzYsIDUxLCAzNiwgMjMsIDI0OSwgMjM5LCAzNiwgMjMsIDI1MCwgNDMsIDM2LCAyMywgCi0gICAgMjM0LCAxMTYsIDM2LCAyMywgMjE3LCAxMjYsIDM2LCAyMywgMjI2LCA3LCAzNiwgMjMsIDI0MSwgMTU4LCAzNiwgMjMsIAotICAgIDIzNCwgNjgsIDYxLCAzNiwgMjMsIDIyOSwgNTgsIDYxLCAzNiwgMjMsIDIxNywgNTYsIDYxLCAzNiwgMjMsIDIyMywgMTgwLCAKLSAgICA2MSwgMzYsIDIzLCAyMzEsIDMxLCA2MSwgMzYsIDIzLCAyMjUsIDIyOCwgNjEsIDM2LCAyMywgMjIwLCA3NywgNjEsIDM2LCAKLSAgICAyMywgMjM2LCA1MiwgNjEsIDM2LCAyMywgMjQ5LCAyNDAsIDYxLCAzNiwgMjMsIDI1MCwgNDQsIDYxLCAzNiwgMjMsIDIzNCwgCi0gICAgMTE3LCA2MSwgMzYsIDIzLCAyMTcsIDEyNywgNjEsIDM2LCAyMywgMjI2LCA4LCA2MSwgMzYsIDIzLCAyNDEsIDE1OSwgNjEsIAotICAgIDM2LCAyMzQsIDEyLCAxMzcsIDI1MCwgODQsIDM2LCAyMzQsIDEyLCAxMzcsIDIzNSwgNTAsIDM2LCAyMywgMjM2LCA1MiwgCi0gICAgNjksIDIzNCwgMTIsIDIxOSwgOTgsIDg3LCAzNiwgMTQzLCAxMTYsIDM2LCAxNDMsIDEwOSwgMzYsIDE0MywgMTY2LCAzNiwgCi0gICAgMTQzLCAxNjMsIDM2LCAxNDMsIDE4MCwgMzYsIDE0MywgMTg5LCAzNiwgMTQzLCAxOTgsIDM2LCAxNDMsIDE5NSwgMzYsIAotICAgIDE0MywgMjAwLCAzNiwgMTQzLCAyMTcsIDIwMCwgMzYsIDE0MywgMjMwLCAxOTgsIDM2LCAxNDMsIDI0NCwgNjUsIDM2LCAKLSAgICAxNDMsIDIxNCwgMjQsIDM2LCAxNDMsIDIxMywgMjAxLCAzNiwgMTQzLCAyMzEsIDEwNiwgMzYsIDE0MywgMjQ1LCAxNzksIAotICAgIDM2LCAxNDMsIDIxOCwgMjM4LCAzNiwgMTQzLCAyMTksIDcyLCAzNiwgMTQzLCAyNDEsIDIyOCwgMzYsIDE0MywgMjE5LCAKLSAgICAyMzgsIDM2LCAxNDMsIDIzMCwgMjQsIDM2LCAxNDMsIDIxOSwgMTkyLCAzNiwgMTQzLCAyNDQsIDcxLCAzNiwgMTQzLCAyNDksIAotICAgIDE0MCwgMzYsIDE0MywgMjMzLCAxNDgsIDM2LCAxNDMsIDIyMiwgOTMsIDM2LCAxNDMsIDIzMSwgMjUyLCAzNiwgMTQzLCAKLSAgICAyNDQsIDEwNiwgMzYsIDE0MywgMjE4LCAyNTAsIDM2LCAxNDMsIDI0NSwgMSwgMzYsIDE0MywgMjI1LCA2OCwgMzYsIDE0MywgCi0gICAgMjUzLCAxMTIsIDM2LCAxNDMsIDIzNSwgMTU3LCAzNiwgMTQzLCAyMjMsIDIxMywgMzYsIDE0MywgMjQ5LCAxMDMsIDM2LCAKLSAgICAxNDMsIDI0OSwgOTQsIDM2LCAxNDMsIDI0MSwgMTUxLCAzNiwgMTQzLCAyNTAsIDEwOCwgMzYsIDE0MywgMjMyLCAxNjUsIAotICAgIDM2LCAxNDMsIDIzMywgNzAsIDM2LCAxNDMsIDIyMywgMTQ4LCAzNiwgMTQzLCAyMzEsIDE0OCwgMzYsIDE0MywgMjIzLCAKLSAgICAyMzcsIDM2LCAxNDMsIDIxOSwgMzAsIDM2LCAxNDMsIDIxOCwgMjIwLCAzNiwgMTQzLCAyNDUsIDg2LCAzNiwgMTQzLCAyMjMsIAotICAgIDIxNSwgMzYsIDE0MywgMjU0LCA1OSwgMzYsIDE0MywgMjI5LCA0MywgMzYsIDUwLCAyMTcsIDExNiwgMTg5LCAzNiwgNTAsIAotICAgIDIxNywgMTE2LCAxOTgsIDM2LCA1MCwgMjE3LCAxMTYsIDE5NSwgMzYsIDUwLCAyMTcsIDExNiwgMjAwLCAzNiwgNTAsIDI0MywgCi0gICAgMjQwLCAzNiwgNTAsIDI0MywgMjQxLCAxMTYsIDM2LCA1MCwgMjQzLCAyNDEsIDEwOSwgMzYsIDUwLCAyNDMsIDI0MSwgMTY2LCAKLSAgICAzNiwgNTAsIDI0MywgMjQxLCAxNjMsIDM2LCA1MCwgMjQzLCAyNDEsIDE4MCwgMzYsIDUwLCAyNDMsIDI0MSwgMTg5LCAzNiwgCi0gICAgNTAsIDI0MywgMjQxLCAxOTgsIDM2LCA1MCwgMjQzLCAyNDEsIDE5NSwgMzYsIDUwLCAyNDMsIDI0MSwgMjAwLCAzNiwgNTAsIAotICAgIDI0NCwgODMsIDEwNSwgMjAxLCAxNiwgMzEsIDIzNSwgMTMzLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDQsIDExNywgMTA1LCAKLSAgICAyMDEsIDE2LCAzMSwgMjMxLCAyMjMsIDEwNSwgMjAxLCAxNiwgMzEsIDI1MywgMjE3LCAxMDUsIDIwMSwgMTYsIDMxLCAyMzEsIAotICAgIDE5NiwgMTA1LCAyMDEsIDE2LCAzMSwgMjM1LCA0OCwgMTA1LCAyMDEsIDE2LCAzMSwgMjM1LCA0OSwgMTA1LCAyMDEsIDE2LCAKLSAgICAzMSwgMjUzLCAxMDQsIDEwNSwgMjAxLCAxNiwgMzEsIDIyMSwgNTYsIDEwNSwgMjAxLCAxNiwgMzEsIDIyNywgMTA0LCAxMDUsIAotICAgIDIwMSwgMTYsIDMxLCAyMjgsIDE1MSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCAzNiwgNDEsIDI0MSwgMTc1LCA0MSwgMjQ1LCAKLSAgICA1MSwgNDEsIDI0NSwgMTAsIDIzMiwgMjQ4LCAyMzMsIDEyLCA1MiwgMzYsIDU2LCA2MSwgMzYsIDU2LCA3MiwgMzYsIDU2LCAKLSAgICA2OSwgMzYsIDU2LCA3NCwgMzYsIDU2LCA3NSwgMzYsIDU2LCAxODEsIDM2LCA1NiwgMjM0LCAxMDEsIDM2LCA1NiwgMjMzLCAKLSAgICAyMzgsIDM2LCA1NiwgMjM0LCAxODgsIDM2LCA1NiwgMjM0LCAzNywgMzYsIDU2LCAyMjIsIDIwMiwgMzYsIDU2LCAyMjAsIAotICAgIDExNywgMzYsIDU2LCAyMTksIDI3LCAzNiwgNTYsIDIyMiwgMTAwLCAzNiwgNTYsIDIxOSwgMjQyLCAzNiwgNTYsIDIxOCwgCi0gICAgNTIsIDM2LCA1NiwgMjE3LCA3MSwgMzYsIDU2LCAyMTYsIDgyLCAzNiwgNTYsIDIxNywgMjI5LCAzNiwgNTYsIDEwOCwgMzYsIAotICAgIDU2LCAyMDUsIDM2LCA1NiwgMjI5LCA2NCwgMzYsIDU2LCAyMjgsIDkyLCAzNiwgNTYsIDIyOSwgMTg3LCAzNiwgNTYsIDIyOCwgCi0gICAgMTg1LCAzNiwgNTYsIDE1OSwgMzYsIDU2LCAyNDEsIDE2NSwgMzYsIDU2LCAyNDAsIDIxMiwgMzYsIDU2LCAyNDEsIDIyMiwgCi0gICAgMzYsIDU2LCAyNDEsIDU0LCAzNiwgNTYsIDE4OCwgMzYsIDU2LCAyMzEsIDQyLCAzNiwgNTYsIDIzMCwgMTcyLCAzNiwgNTYsIAotICAgIDIzMSwgMTU2LCAzNiwgNTYsIDIzMCwgMjMxLCAzNiwgNTYsIDE4NiwgMzYsIDU2LCAyMTIsIDIwMywgMzYsIDU2LCAyMTIsIAotICAgIDIzNSwgMzYsIDU2LCAyMDMsIDM2LCA1NiwgMjIzLCAxODgsIDM2LCA1NiwgMjIzLCA1MSwgMzYsIDU2LCAyMjQsIDIxLCAzNiwgCi0gICAgNTYsIDIyMywgMTEyLCAzNiwgNTYsIDIxNCwgNDksIDM2LCA1NiwgMjEzLCAyMzUsIDM2LCA1NiwgMjE0LCA2LCAzNiwgNTYsIAotICAgIDIxMywgMjE0LCA0MSwgMjUzLCAyMzgsIDQxLCAyNTMsIDE1NCwgNDEsIDI1NCwgNiwgNDEsIDI1NCwgMTkwLCA0MSwgMjM1LCAKLSAgICAyMjMsIDQxLCAyMzUsIDE5MywgNDEsIDIxNSwgMTM3LCA0MSwgMjQ1LCAzMSwgNDEsIDI0NSwgMTYzLCA0MSwgMjI3LCA1MiwgCi0gICAgNDEsIDIyNywgNDYsIDQxLCAyMzQsIDI0OSwgNDEsIDIzNCwgMjE5LCA0MSwgMjM0LCAyMTYsIDQxLCAyNDMsIDY4LCA0MSwgCi0gICAgMjQzLCA3NywgNDEsIDI0MiwgMTgwLCA0MSwgMjQyLCAxNzYsIDQxLCAyMzMsIDE3MiwgNDEsIDI0MiwgMTY5LCA0MSwgMjM0LCAKLSAgICA4MSwgNDEsIDIzNCwgODAsIDQxLCAyMzQsIDc5LCA0MSwgMjM0LCA3OCwgNDEsIDI0MiwgNjcsIDQxLCAyNDIsIDY2LCA0MSwgCi0gICAgMjMzLCAyMTQsIDQxLCAyMzMsIDIxNiwgNDEsIDIzNCwgMTg0LCA0MSwgMjM0LCAxMCwgNDEsIDIzNCwgMTcsIDQxLCAyMjIsIAotICAgIDE4NywgNDEsIDIyMiwgMTUzLCA0MSwgMjIwLCA1NywgNDEsIDIyMSwgNjEsIDQxLCAyMjEsIDYwLCA0MSwgMjQ4LCAxNjEsIAotICAgIDQxLCAyNDcsIDI0MywgNDEsIDI0NywgNzUsIDQxLCAyMTYsIDI0MywgNDEsIDIzMCwgMjAsIDQxLCAyMjgsIDE1MiwgNDEsIAotICAgIDI0MiwgMTQsIDQxLCAyMjYsIDIwOCwgNDEsIDIyNiwgMjA3LCA0MSwgMjUyLCAxMDUsIDQxLCAyMjUsIDIzNywgNDEsIDIyNSwgCi0gICAgMjAxLCA0MSwgMjI1LCAyMDIsIDQxLCAyNTEsIDE1NywgNDEsIDI0MCwgMjExLCA0MSwgMjQwLCAyMDcsIDQxLCAyNTEsIDIwLCAKLSAgICA0MSwgMjQwLCAxOTQsIDQxLCAyNDEsIDE5OSwgNDEsIDIyNiwgMzUsIDQxLCAyMjYsIDY5LCA0MSwgMjQxLCAxODMsIDQxLCAKLSAgICAyMjYsIDY2LCA0MSwgMjI2LCA4MiwgNDEsIDI1MSwgMjM3LCA0MSwgMjI1LCAxNDAsIDQxLCAyNTEsIDEwNiwgNDEsIDI0MSwgCi0gICAgNDIsIDQxLCAyMjUsIDEzMCwgNDEsIDI0MSwgMzUsIDQxLCAyNDEsIDM3LCA0MSwgMjMyLCA3LCA0MSwgMjMyLCAzLCA0MSwgCi0gICAgMjMyLCAxMSwgNDEsIDIzMSwgMjEzLCA0MSwgMjMxLCAyMzgsIDQxLCAyMzEsIDEwLCA0MSwgMjMwLCAyNDUsIDQxLCAyMzAsIAotICAgIDI0NCwgNDEsIDIzMSwgMTM4LCA0MSwgMjMxLCAxMzUsIDQxLCAyMzEsIDEzOSwgNDEsIDIxMywgOTAsIDQxLCAyMTMsIDg4LCAKLSAgICA0MSwgMjEyLCAxOTIsIDQxLCAyMjMsIDEyMywgNDEsIDIyMywgMTI3LCA0MSwgMjIzLCAyOCwgNDEsIDIyMywgMjMsIDQxLCAKLSAgICAyMjMsIDIzNSwgNDEsIDIyMywgMjMyLCA0MSwgMjE0LCAyMiwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxMiwgNzksIAotICAgIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAxMTYsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAxMDksIDEwNSwgCi0gICAgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAxNjYsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAxNjMsIDEwNSwgMjAxLCAKLSAgICAxNiwgMzEsIDI0MCwgMjI2LCAxODAsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAxODksIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0MCwgMjI2LCAxOTgsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAxOTUsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgCi0gICAgMjI2LCAyMDAsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTcsIDIwMCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAKLSAgICAyMjYsIDI0NSwgMTI0LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjE2LCA0MSwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQwLCAyMjYsIDIxNywgMTE3LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjQzLCAyMzEsIDEwNSwgMjAxLCAxNiwgCi0gICAgMzEsIDI0MCwgMjI2LCAyNDQsIDg3LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjIwLCA0NywgMTA1LCAyMDEsIDE2LCAKLSAgICAzMSwgMjQwLCAyMjYsIDIyMSwgNDAsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyNDUsIDE0NywgMTA1LCAyMDEsIAotICAgIDE2LCAzMSwgMjQwLCAyMjYsIDIyOSwgMjgsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDM4LCAxMDUsIDIwMSwgCi0gICAgMTYsIDMxLCAyNDAsIDIyNiwgMjE2LCAzMiwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgMjgsIDEwNSwgMjAxLCAKLSAgICAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDI5LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjE2LCAzNCwgNDEsIDI0MCwgCi0gICAgMjE3LCA0MSwgMjQ4LCAxNjQsIDQxLCAyNTMsIDEwOCwgNDEsIDEzNCwgNDEsIDIyNiwgMjQ5LCA0MSwgMjI2LCA5OSwgNDEsIAotICAgIDI0NywgMTAxLCA0MSwgMjQ3LCAxMDIsIDIxOSwgMTY1LCA0MSwgMjQ3LCAxMDIsIDI0OSwgNDksIDQxLCAyMzUsIDE1NCwgCi0gICAgNDEsIDI0NSwgNTQsIDIzMCwgMjUsIDI0MSwgMjAwLCA0MSwgMjQ1LCA1NCwgMjMwLCAyNSwgMjE4LCAxMjAsIDQxLCAyNDUsIAotICAgIDU0LCAyMzAsIDI1LCAyMTgsIDI0LCA0MSwgMjQ1LCA1NCwgMjMwLCAyNSwgMjMxLCAxMzQsIDQxLCAyNDksIDk2LCA0MSwgCi0gICAgMjI2LCAyMTQsIDI1NCwgMzQsIDQxLCAyMDUsIDQxLCAyMzAsIDE3MywgNjEsIDQxLCAxODgsIDQxLCAxODEsIDQxLCAyMzQsIAotICAgIDE5MSwgNDEsIDIzMSwgMTkyLCA0MSwgMjQzLCA1NiwgNDEsIDI1MCwgMjA2LCA0MSwgMjM0LCAxOTAsIDQxLCAyMjYsIDI2LCAKLSAgICA0MSwgMjI5LCAxNjMsIDQxLCAyMzAsIDE3MywgMjQ0LCAyMzAsIDQxLCAyMzAsIDE3MywgMjQzLCAxNzcsIDQxLCAyMzEsIAotICAgIDgyLCA0MSwgMjM0LCAxNDAsIDQxLCAyNDAsIDE1NSwgNDEsIDIzNCwgMTAzLCA0MSwgMjMxLCA0NCwgNDEsIDI0MiwgMTkyLCAKLSAgICA0MSwgMjE3LCA3MywgNDEsIDIzMCwgMTczLCAxNTAsIDQxLCAyMzAsIDIzOCwgNDEsIDI0NywgMTA5LCA0MSwgMjM0LCA0OSwgCi0gICAgNDEsIDI0NCwgMTQsIDQxLCAyMjgsIDIwMCwgNDEsIDIzMCwgMTczLCAxODMsIDQxLCAyMzAsIDIzNSwgNDEsIDI0OSwgMTc2LCAKLSAgICA0MSwgMjM0LCA0MywgNDEsIDIzMCwgMjM2LCAyMTksIDE2NSwgNDEsIDI0OSwgMTc3LCAyMTksIDE2NSwgNDEsIDIzMiwgCi0gICAgMTEwLCAyMTksIDE2NSwgNDEsIDIzNCwgNDQsIDIxOSwgMTY1LCA0MSwgMjMwLCAyMzYsIDI0OSwgNDksIDQxLCAyNDksIAotICAgIDE3NywgMjQ5LCA0OSwgNDEsIDIzMiwgMTEwLCAyNDksIDQ5LCA0MSwgMjM0LCA0NCwgMjQ5LCA0OSwgNDEsIDIzMiwgMTEwLCAKLSAgICAxMTAsIDE5NywgNDEsIDIzMiwgMTEwLCAxMTAsIDIyMywgNCwgMjE5LCAxNjUsIDQxLCAxOTMsIDQxLCAyMzQsIDQsIDQxLCAKLSAgICAyMzAsIDE3NSwgNDEsIDI0MiwgMTI3LCA0MSwgMjI0LCA2NiwgNDEsIDIyNCwgNjcsIDExMCwgMTk3LCA0MSwgMjI0LCA2NywgCi0gICAgMTEwLCAyMjMsIDQsIDIxOSwgMTY1LCA0MSwgMjI1LCA0NywgNDEsIDIyOCwgMTI0LCA0MSwgMjMwLCAxNzMsIDE5NywgNDEsIAotICAgIDIzMCwgMTc0LCA0MSwgMjI1LCA0LCA0MSwgMjI4LCAzMywgNDEsIDIzMCwgMTczLCAyMTUsIDc5LCA0MSwgMjMwLCAxMjAsIAotICAgIDQxLCAyMzMsIDIwNywgNDEsIDIzMCwgMTIxLCAyMzEsIDEzOCwgNDEsIDIyNSwgMywgNDEsIDIyOCwgMzIsIDQxLCAyMzAsIAotICAgIDE3MywgMjE0LCA4MiwgNDEsIDIzMCwgMTE1LCA0MSwgMjMzLCAyMDUsIDQxLCAyMzAsIDExNiwgMjMxLCAxMzgsIDQxLCAKLSAgICAyMzUsIDI4LCAyMjcsIDg2LCA0MSwgMjMyLCAxMTAsIDIyNywgODYsIDQxLCAyNTQsIDQ1LCA0MSwgMjUxLCA4NywgNDEsIAotICAgIDI1MCwgMTQ3LCA0MSwgMjUwLCAxMjUsIDQxLCAyNTAsIDI1MywgMTEwLCAyMzQsIDE0MCwgNDEsIDI0OSwgMTc1LCA0MSwgCi0gICAgMjQ4LCA4OCwgNDEsIDI0MiwgNTMsIDQxLCAxNTksIDQxLCAyNDAsIDIxOCwgNDEsIDIzNSwgMjUxLCA0MSwgMjM0LCA1NiwgCi0gICAgNDEsIDIzNCwgNDQsIDI1MCwgMTgyLCA0MSwgMjMzLCAyNDAsIDQxLCAyMzIsIDIxMSwgNDEsIDIzMiwgMjEwLCA0MSwgMjMyLCAKLSAgICAyMDAsIDQxLCAyMzIsIDEyMiwgNDEsIDIzMSwgMTkzLCAyMjAsIDcsIDQxLCAyMzEsIDksIDQxLCAyMzAsIDIyMiwgNDEsIAotICAgIDIyNiwgMjQsIDQxLCAyMjUsIDE1MywgNDEsIDIyNSwgOTksIDQxLCAyMjUsIDk3LCA0MSwgMjE5LCAxNTksIDQxLCAyMTgsIAotICAgIDIwMywgNDEsIDIxNCwgOCwgNDEsIDIxNSwgODAsIDExMCwgMTgzLCA0MSwgMTE4LCAxMTAsIDE4MywgMTA1LCAyMDEsIDE2LCAKLSAgICAzMSwgMjQ4LCA5MiwgMTE2LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAxMDksIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgCi0gICAgOTIsIDE2NiwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMTYzLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAxODAsIAotICAgIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDE4OSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMTk4LCAxMDUsIDIwMSwgCi0gICAgMTYsIDMxLCAyNDgsIDkyLCAxOTUsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIwMCwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE3LCAyMDAsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDI0NSwgMTI0LCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMTYsIDQxLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMTcsIDExNywgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjQzLCAyMzEsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDI0NCwgODcsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIyMCwgNDcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIyMSwgNDAsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDI0NSwgMTQ3LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMjksIDI4LCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMTYsIDM4LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMTYsIDMyLCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMTYsIDI4LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMTYsIDI5LCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMTYsIDM0LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMTYsIDM1LCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMTYsIDMwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMTYsIDMxLCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMTYsIDM3LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMTYsIDMzLCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMTcsIDExNSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE3LCAxMTQsIDQxLCAyNDMsIDk0LCAyNDEsIAotICAgIDE3NywgMzEsIDIxNywgMTQ5LCAyNDksIDgwLCAyNDEsIDIwNywgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjI0LCAxNSwgCi0gICAgMjQ1LCAxNzksIDI0MSwgMTc3LCAzMSwgMjQ3LCAxODMsIDI1MywgMTIzLCAyMTcsIDE0OSwgMjUxLCAyMzIsIDI0MSwgMTc3LCAKLSAgICAzMSwgMjEyLCAyMTQsIDI0NCwgNywgMjQxLCAxNzcsIDMxLCAyMTQsIDQzLCAyNDEsIDE3NywgMzEsIDI0OSwgMTQyLCAyNDEsIAotICAgIDE3NywgMzEsIDIxNywgMTQ5LCAyNTMsIDE3NCwgMjQxLCAxNzcsIDMxLCAyNDEsIDQ2LCAyMTYsIDI0OSwgMjQxLCAxNzcsIAotICAgIDMxLCAzLCAyMTgsIDEyLCAyNDEsIDE3NywgMzEsIDIxNiwgMTk1LCAyNDEsIDE3NywgMzEsIDIyNiwgOTQsIDI0MSwgMTc3LCAKLSAgICAzMSwgMjE5LCA5NywgMjQxLCAxNzcsIDMxLCAyNDQsIDEwOCwgMjQxLCAxNzcsIDMxLCAyNDIsIDEwOSwgMjI1LCAxMjAsIAotICAgIDI0MSwgMTc3LCAzMSwgMjMwLCAyMjUsIDI0MSwgMTc3LCAzMSwgMjQ1LCA4NSwgMjQxLCAxNzcsIDMxLCAyNDQsIDgsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjEzLCAxOTQsIDIyNywgNjMsIDIxNywgMTQ5LCAyNDgsIDM3LCAyNDEsIDE3NywgMzEsIDI1MywgMjIxLCAKLSAgICAyNDEsIDE3NywgMzEsIDI0OSwgMTI0LCAyNDEsIDE3NywgMzEsIDI1MSwgMTUwLCAyMTcsIDkyLCAyNDEsIDE3NywgMzEsIAotICAgIDI0MiwgMTI1LCAyNDEsIDE3NywgMzEsIDIxOSwgMTc3LCAyNTMsIDIzNywgMjQxLCAxNzcsIDMxLCAyMjMsIDIwNSwgMjQxLCAKLSAgICAxNzcsIDMxLCAyMzUsIDIxNywgMjQxLCAxNzcsIDMxLCAyNDIsIDEwOSwgMjE4LCAxMiwgMjQxLCAxNzcsIDMxLCAyMzAsIAotICAgIDE4MSwgMjQ5LCA5OCwgMjQxLCAxNzcsIDMxLCAyNDIsIDEwOSwgMjI1LCA3NywgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgCi0gICAgMjU0LCAxNzgsIDIxNCwgMjQsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDI0OSwgMjAxLCAyNDQsIDY1LCAyNDEsIDE3NywgCi0gICAgMzEsIDIzNSwgMjMwLCAyNDEsIDE3NywgMzEsIDI0NiwgMTIsIDI0MSwgMTc3LCAzMSwgMjIzLCAyMDgsIDI0MSwgMTc3LCAKLSAgICAzMSwgMjQyLCAxMDksIDIyNSwgMTA0LCAyNDEsIDE3NywgMzEsIDIyNSwgNjEsIDI0MSwgMTc3LCAzMSwgMjQ4LCAxMDYsIAotICAgIDY1LCAyMTcsIDE0OSwgMjMzLCAyLCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyNDQsIDE0MiwgMjQxLCAxNzcsIDMxLCAKLSAgICAyMjcsIDI5LCAyNDEsIDE3NywgMzEsIDIyNywgMTA4LCAyNDEsIDE3NywgMzEsIDI0OCwgMTAsIDI0MSwgMTc3LCAzMSwgCi0gICAgMjQ4LCAzMCwgMjQxLCAxNzcsIDMxLCAyMzUsIDI0MywgMjQxLCAxNzcsIDMxLCAyNTEsIDc3LCAyNDEsIDE3NywgMzEsIAotICAgIDI0OSwgMTU5LCAyMTEsIDIxMSwgMjMxLCAxNDEsIDI0MSwgMTc3LCAzMSwgMjQzLCA2MywgMjE2LCAyNDksIDI0MSwgMTc3LCAKLSAgICAzMSwgMjI1LCAxMiwgMjE1LCAxMjUsIDI0MSwgMTc3LCAzMSwgMjI3LCAyOCwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgCi0gICAgMjEzLCAyNTQsIDI0MSwgMTc3LCAzMSwgMjIzLCAxOTgsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDI1MCwgMTUzLCAyNDEsIAotICAgIDE3NywgMzEsIDIxNywgMTQ5LCAyNTMsIDE3MCwgMjE3LCA4NywgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjM0LCAxODUsIAotICAgIDIxOSwgNzQsIDIzMCwgMTg1LCAyNDEsIDE3NywgMzEsIDI0NywgMjM5LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyMzEsIAotICAgIDIxNSwgMjMyLCA4LCAyNDEsIDE3NywgMzEsIDI1NCwgMTc5LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyMTQsIDM4LCAKLSAgICAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyNDMsIDIzLCAyMTMsIDIyNCwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjM1LCAKLSAgICA1NSwgMjMzLCAxMzEsIDI0MSwgMTc3LCAzMSwgMjQ3LCAxMzYsIDI0MSwgMTc3LCAzMSwgMjMyLCAyNDksIDI0MSwgMTc3LCAKLSAgICAzMSwgMjM1LCAyMjAsIDIxNiwgMTQ1LCAyNDEsIDE3NywgMzEsIDMsIDIyNSwgNzcsIDI0MSwgMTc3LCAzMSwgMjU0LCAxMjIsIAotICAgIDI0OSwgMTUxLCAyNDEsIDE3NywgMzEsIDI1MSwgMjM1LCAyNDksIDE1MSwgOCwgNCwgMjM1LCAxNTgsIDgsIDQsIDIzNSwgCi0gICAgMTUxLCA4LCA0LCA3MiwgOCwgNCwgMjM1LCAxODAsIDgsIDQsIDIzNiwgNTMsIDgsIDQsIDIzNiwgMzYsIDgsIDQsIDIzNiwgCi0gICAgNTUsIDgsIDQsIDIzNiwgNTQsIDgsIDQsIDI1MywgMTIyLCA4LCA0LCAyNTMsIDg1LCA4LCA0LCA2MSwgOCwgNCwgMjUzLCAKLSAgICAyMzksIDgsIDQsIDIxNSwgMTM1LCA4LCA0LCAyMTUsIDEzOCwgOCwgNCwgMjE1LCAxMzYsIDgsIDQsIDIyNywgOCwgOCwgNCwgCi0gICAgMjI2LCAyMzgsIDgsIDQsIDc1LCA4LCA0LCAyMjcsIDQxLCA4LCA0LCAyNDUsIDIsIDgsIDQsIDc0LCA4LCA0LCAyMTMsIAotICAgIDE4MywgOCwgNCwgMjUxLCAxNTEsIDgsIDQsIDI1MSwgMTQ4LCA4LCA0LCAyNTEsIDE4NCwgOCwgNCwgMjUxLCAxNjEsIDgsIAotICAgIDQsIDI1MSwgMTc0LCA4LCA0LCAyNTEsIDE3MywgOCwgNCwgMjUxLCAxNzYsIDgsIDQsIDI1MSwgMTc1LCA4LCA0LCAyNTIsIAotICAgIDQxLCA4LCA0LCAyNTIsIDMzLCA4LCA0LCAyNTIsIDEwNywgOCwgNCwgMjUyLCA2MSwgOCwgNCwgMjUxLCAzMCwgOCwgNCwgCi0gICAgMjUxLCAzNCwgOCwgNCwgMjUxLCAzMSwgOCwgNCwgMjUxLCAxMDUsIDgsIDQsIDI1MSwgODksIDgsIDQsIDI1MSwgMTI4LCA4LCAKLSAgICA0LCAyNTEsIDExMCwgOCwgNCwgMjUxLCAxOTgsIDgsIDQsIDI1MSwgMjUxLCA4LCA0LCAyNTEsIDIxMCwgOCwgNCwgMjUxLCAKLSAgICAxNiwgOCwgNCwgMjUxLCAxMywgOCwgNCwgMjUxLCA1NCwgOCwgNCwgMjUxLCAyOSwgOCwgNCwgMjUxLCAyMywgOCwgNCwgCi0gICAgMjUxLCAyNywgOCwgNCwgMjUxLCAxLCA4LCA0LCAyNTEsIDAsIDgsIDQsIDI1MSwgNiwgOCwgNCwgMjUxLCA0LCA4LCA0LCAKLSAgICAyNTEsIDIsIDgsIDQsIDI1MSwgMywgOCwgNCwgMjI1LCAxODEsIDgsIDQsIDIyNSwgMTc3LCA4LCA0LCAyMjUsIDI0MCwgOCwgCi0gICAgNCwgMjI1LCAxOTEsIDgsIDQsIDIyNSwgMjA3LCA4LCA0LCAyMjUsIDIzNCwgOCwgNCwgMjI1LCAyMzAsIDgsIDQsIDIyNiwgCi0gICAgMTEzLCA4LCA0LCAyMjYsIDEwNCwgOCwgNCwgMTkzLCA4LCA0LCAyMjYsIDE0OSwgOCwgNCwgMjI1LCAyMSwgOCwgNCwgMjI1LCAKLSAgICAyMywgOCwgNCwgMjI1LCAyMiwgOCwgNCwgMjI1LCAxMTMsIDgsIDQsIDIyNSwgMTAyLCA4LCA0LCAyMjUsIDE1MCwgOCwgNCwgCi0gICAgMjI1LCAxMjUsIDgsIDQsIDIyNSwgOCwgOCwgNCwgMjI1LCA1LCA4LCA0LCAyMjUsIDM1LCA4LCA0LCAyMjUsIDIwLCA4LCA0LCAKLSAgICAyMjUsIDEzLCA4LCA0LCAyMjUsIDE4LCA4LCA0LCAyMjQsIDI0NCwgOCwgNCwgMjI0LCAyNDMsIDgsIDQsIDIyNCwgMjQ4LCAKLSAgICA4LCA0LCAyMjQsIDI0NywgOCwgNCwgMjI0LCAyNDUsIDgsIDQsIDIyNCwgMjQ2LCA4LCA0LCAyNTIsIDE2LCA4LCA0LCAyNTIsIAotICAgIDE1LCA4LCA0LCAyNTIsIDIyLCA4LCA0LCAyNTIsIDE3LCA4LCA0LCAyNTIsIDE5LCA4LCA0LCAyNTIsIDE4LCA4LCA0LCAKLSAgICAyNTIsIDIxLCA4LCA0LCAyNTIsIDIwLCA4LCA0LCAyNTIsIDI4LCA4LCA0LCAyNTIsIDI3LCA4LCA0LCAyNTIsIDMxLCA4LCAKLSAgICA0LCAyNTIsIDI5LCA4LCA0LCAyNTIsIDcsIDgsIDQsIDI1MiwgOSwgOCwgNCwgMjUyLCA4LCA4LCA0LCAyNTIsIDEyLCA4LCAKLSAgICA0LCAyNTIsIDExLCA4LCA0LCAyNTIsIDE0LCA4LCA0LCAyNTIsIDEzLCA4LCA0LCAyNTIsIDIzLCA4LCA0LCAyNTIsIDI2LCAKLSAgICA4LCA0LCAyNTIsIDI0LCA4LCA0LCAyNTIsIDMsIDgsIDQsIDI1MiwgMiwgOCwgNCwgMjUyLCAxMCwgOCwgNCwgMjUyLCA2LCAKLSAgICA4LCA0LCAyNTIsIDQsIDgsIDQsIDI1MiwgNSwgOCwgNCwgMjUxLCAyNTUsIDgsIDQsIDI1MSwgMjU0LCA4LCA0LCAyNTIsIDEsIAotICAgIDgsIDQsIDI1MiwgMCwgOCwgNCwgMjI5LCAyNDgsIDgsIDQsIDIyOSwgMjQ3LCA4LCA0LCAyMjksIDI1MywgOCwgNCwgMjI5LCAKLSAgICAyNDksIDgsIDQsIDIyOSwgMjUwLCA4LCA0LCAyMjksIDI1MiwgOCwgNCwgMjI5LCAyNTEsIDgsIDQsIDIyOSwgMjU1LCA4LCAKLSAgICA0LCAyMjksIDI1NCwgOCwgNCwgMjMwLCAxLCA4LCA0LCAyMzAsIDAsIDgsIDQsIDIyOSwgMjQ0LCA4LCA0LCAyMjksIDI0MywgCi0gICAgOCwgNCwgMjI5LCAyNDYsIDgsIDQsIDIyOSwgMjQ1LCA4LCA0LCAyMjksIDIzOCwgOCwgNCwgMjI5LCAyMzcsIDgsIDQsIAotICAgIDIyOSwgMjQyLCA4LCA0LCAyMjksIDI0MSwgOCwgNCwgMjI5LCAyMzksIDgsIDQsIDIyOSwgMjQwLCA4LCA0LCAyMjksIDIzMiwgCi0gICAgOCwgNCwgMjI5LCAyMzEsIDgsIDQsIDIyOSwgMjM2LCA4LCA0LCAyMjksIDIzNSwgOCwgNCwgMjI5LCAyMzMsIDgsIDQsIAotICAgIDIyOSwgMjM0LCA4LCA0LCAyNDEsIDk2LCA4LCA0LCAyNDEsIDk1LCA4LCA0LCAyNDEsIDEwMSwgOCwgNCwgMjQxLCA5NywgOCwgCi0gICAgNCwgMjQxLCA5OCwgOCwgNCwgMjQxLCAxMDAsIDgsIDQsIDI0MSwgOTksIDgsIDQsIDI0MSwgMTA0LCA4LCA0LCAyNDEsIAotICAgIDEwMywgOCwgNCwgMjQxLCAxMDYsIDgsIDQsIDI0MSwgMTA1LCA4LCA0LCAyNDEsIDg3LCA4LCA0LCAyNDEsIDg5LCA4LCA0LCAKLSAgICAyNDEsIDg4LCA4LCA0LCAyNDEsIDkyLCA4LCA0LCAyNDEsIDkxLCA4LCA0LCAyNDEsIDk0LCA4LCA0LCAyNDEsIDkzLCA4LCAKLSAgICA0LCAyNDEsIDgzLCA4LCA0LCAyNDEsIDgyLCA4LCA0LCAyNDEsIDkwLCA4LCA0LCAyNDEsIDg2LCA4LCA0LCAyNDEsIDg0LCAKLSAgICA4LCA0LCAyNDEsIDg1LCA4LCA0LCAyNDEsIDc3LCA4LCA0LCAyNDEsIDgxLCA4LCA0LCAyNDEsIDgwLCA4LCA0LCAyNDEsIAotICAgIDc4LCA4LCA0LCAyNDEsIDc5LCA4LCA0LCAyMzAsIDI0MSwgOCwgNCwgMjMwLCAyNDAsIDgsIDQsIDIzMSwgNDIsIDgsIDQsIAotICAgIDIzMCwgMjQ3LCA4LCA0LCAyMzEsIDE2LCA4LCA0LCAyMzEsIDM0LCA4LCA0LCAyMzEsIDMyLCA4LCA0LCAyMzEsIDIwMiwgOCwgCi0gICAgNCwgMjMxLCAxOTgsIDgsIDQsIDE4OCwgOCwgNCwgMjMxLCAyMzUsIDgsIDQsIDIzMCwgMTQ0LCA4LCA0LCAyMzAsIDE0MywgCi0gICAgOCwgNCwgMjMwLCAxNDcsIDgsIDQsIDIzMCwgMTQ1LCA4LCA0LCAyMzAsIDE5MSwgOCwgNCwgMjMwLCAxNzcsIDgsIDQsIAotICAgIDIzMCwgMjMxLCA4LCA0LCAyMzAsIDE5NiwgOCwgNCwgMjMxLCA5MywgOCwgNCwgMjMxLCAxNTYsIDgsIDQsIDIzMCwgMTI1LCAKLSAgICA4LCA0LCAyMzAsIDEyMiwgOCwgNCwgMjMwLCAxNzIsIDgsIDQsIDIzMCwgMTQwLCA4LCA0LCAyMzAsIDEzMywgOCwgNCwgCi0gICAgMjMwLCAxMzgsIDgsIDQsIDIzMCwgMTAwLCA4LCA0LCAyMzAsIDk5LCA4LCA0LCAyMzAsIDEwNSwgOCwgNCwgMjMwLCAxMDIsIAotICAgIDgsIDQsIDI0NCwgNTIsIDgsIDQsIDI0NCwgNDcsIDgsIDQsIDI0NCwgOTAsIDgsIDQsIDI0NCwgNjcsIDgsIDQsIDI0NCwgCi0gICAgMTM1LCA4LCA0LCAyNDQsIDEyNiwgOCwgNCwgMjQ0LCAxNjQsIDgsIDQsIDI0NCwgMTM4LCA4LCA0LCAyNDMsIDIyOSwgOCwgCi0gICAgNCwgMjQ0LCAxMiwgOCwgNCwgMjQzLCAyNTIsIDgsIDQsIDI0MywgMTkwLCA4LCA0LCAyNDMsIDE4OSwgOCwgNCwgMjQzLCAKLSAgICAyMDUsIDgsIDQsIDI0MywgMTk1LCA4LCA0LCAyNDMsIDE5MywgOCwgNCwgMjQzLCAxOTQsIDgsIDQsIDI0MywgMTgwLCA4LCAKLSAgICA0LCAyNDMsIDE3OSwgOCwgNCwgMjQzLCAxODMsIDgsIDQsIDI0MywgMTgxLCA4LCA0LCAyMTQsIDEyNSwgOCwgNCwgMjE0LCAKLSAgICAxMjAsIDgsIDQsIDIxNCwgMTU0LCA4LCA0LCAyMTQsIDEzNCwgOCwgNCwgMjE0LCAxNDYsIDgsIDQsIDIxNCwgMTQzLCA4LCAKLSAgICA0LCAyMTQsIDE0OCwgOCwgNCwgMjE0LCAxNDcsIDgsIDQsIDIxNCwgMjM5LCA4LCA0LCAyMTQsIDIzNSwgOCwgNCwgMjE1LCAKLSAgICAxLCA4LCA0LCAyMTQsIDI1MCwgOCwgNCwgMjE0LCAxMDYsIDgsIDQsIDIxNCwgMTAyLCA4LCA0LCAyMTQsIDExOSwgOCwgNCwgCi0gICAgMjE0LCAxMDcsIDgsIDQsIDIxNCwgMTU1LCA4LCA0LCAyMTQsIDIyMSwgOCwgNCwgMjE0LCA5MywgOCwgNCwgMjE0LCA5MiwgCi0gICAgOCwgNCwgMjE0LCA5OSwgOCwgNCwgMjE0LCA5NiwgOCwgNCwgMjE0LCA5NCwgOCwgNCwgMjE0LCA5NSwgOCwgNCwgMjE0LCAKLSAgICA4NiwgOCwgNCwgMjE0LCA4NSwgOCwgNCwgMjE0LCA5MCwgOCwgNCwgMjE0LCA4OSwgOCwgNCwgMjE0LCA4NywgOCwgNCwgCi0gICAgMjE0LCA4OCwgOCwgNCwgMjQ3LCAxMzAsIDgsIDQsIDI0NywgMTE4LCA4LCA0LCAyNDcsIDIxMSwgOCwgNCwgMjQ3LCAxNTUsIAotICAgIDgsIDQsIDI0NywgMTg4LCA4LCA0LCAyNDcsIDE5MiwgOCwgNCwgMjQ3LCAxOTEsIDgsIDQsIDI0OCwgOTgsIDgsIDQsIDI0OCwgCi0gICAgOTMsIDgsIDQsIDI0OCwgMTY0LCA4LCA0LCAyNDgsIDExNywgOCwgNCwgMjQ2LCAxNywgOCwgNCwgMjQ2LCAxOCwgOCwgNCwgCi0gICAgMjQ3LCA3NCwgOCwgNCwgMjQ2LCA1NiwgOCwgNCwgMjQ3LCA5OSwgOCwgNCwgMjQ3LCA3NiwgOCwgNCwgMjQ3LCAyMzcsIDgsIAotICAgIDQsIDI0OCwgNDEsIDgsIDQsIDI0NywgMjUyLCA4LCA0LCAyNDYsIDgsIDgsIDQsIDI0NiwgNiwgOCwgNCwgMjQ2LCAzMywgOCwgCi0gICAgNCwgMjQ2LCAxNiwgOCwgNCwgMjQ2LCAxMSwgOCwgNCwgMjQ2LCAxNCwgOCwgNCwgMjE3LCAyMCwgOCwgNCwgMjE3LCAxNCwgCi0gICAgOCwgNCwgMjE3LCA3MSwgOCwgNCwgMjE3LCAyOSwgOCwgNCwgMjE3LCA2MywgOCwgNCwgMjE3LCA2NSwgOCwgNCwgMjE3LCAKLSAgICA2NCwgOCwgNCwgMjE3LCAyNTMsIDgsIDQsIDIxNywgMjQwLCA4LCA0LCAyMTgsIDUyLCA4LCA0LCAyMTgsIDUsIDgsIDQsIAotICAgIDIxNiwgNjYsIDgsIDQsIDIxNiwgNjUsIDgsIDQsIDIxNiwgNjgsIDgsIDQsIDIxNiwgNjcsIDgsIDQsIDIxNiwgMjE4LCA4LCAKLSAgICA0LCAyMTYsIDIxNCwgOCwgNCwgMTA4LCA4LCA0LCAyMTYsIDIyNiwgOCwgNCwgMjE3LCAxNjYsIDgsIDQsIDIxNywgMjI5LCAKLSAgICA4LCA0LCAyMTcsIDE5MCwgOCwgNCwgMjE2LCA1MiwgOCwgNCwgMjE2LCA0OCwgOCwgNCwgMjE2LCA4MiwgOCwgNCwgMjE2LCAKLSAgICA2NCwgOCwgNCwgMjE2LCA1MywgOCwgNCwgMjE2LCA2MiwgOCwgNCwgMjQ4LCA1OCwgOCwgNCwgMjQ4LCA1NywgOCwgNCwgCi0gICAgMjQ4LCA2MywgOCwgNCwgMjQ4LCA1OSwgOCwgNCwgMjQ4LCA2MCwgOCwgNCwgMjQ4LCA2MiwgOCwgNCwgMjQ4LCA2MSwgOCwgCi0gICAgNCwgMjQ4LCA3OSwgOCwgNCwgMjQ4LCA3OCwgOCwgNCwgMjQ4LCA4NiwgOCwgNCwgMjQ4LCA4MCwgOCwgNCwgMjQ4LCA0OCwgCi0gICAgOCwgNCwgMjQ4LCA1MCwgOCwgNCwgMjQ4LCA0OSwgOCwgNCwgMjQ4LCA1MywgOCwgNCwgMjQ4LCA1MiwgOCwgNCwgMjQ4LCAKLSAgICA1NiwgOCwgNCwgMjQ4LCA1NCwgOCwgNCwgMjQ4LCA3MSwgOCwgNCwgMjQ4LCA3NCwgOCwgNCwgMjQ4LCA3MiwgOCwgNCwgCi0gICAgMjQ4LCA0NCwgOCwgNCwgMjQ4LCA0MywgOCwgNCwgMjQ4LCA1MSwgOCwgNCwgMjQ4LCA0NywgOCwgNCwgMjQ4LCA0NSwgOCwgCi0gICAgNCwgMjQ4LCA0NiwgOCwgNCwgMjI5LCAyMDYsIDgsIDQsIDIyOSwgMjA1LCA4LCA0LCAyMjksIDIxMywgOCwgNCwgMjI5LCAKLSAgICAyMDgsIDgsIDQsIDIyOSwgMjA5LCA4LCA0LCAyMjksIDIxMCwgOCwgNCwgMjI5LCAyMjIsIDgsIDQsIDIyOSwgMjIxLCA4LCAKLSAgICA0LCAyMjksIDIyOCwgOCwgNCwgMjI5LCAyMjMsIDgsIDQsIDIyOSwgMTk4LCA4LCA0LCAyMjksIDE5NywgOCwgNCwgMjI5LCAKLSAgICAyMDQsIDgsIDQsIDIyOSwgMTk5LCA4LCA0LCAyMjksIDIxNCwgOCwgNCwgMjI5LCAyMjAsIDgsIDQsIDIyOSwgMjE4LCA4LCAKLSAgICA0LCAyMjksIDE5MCwgOCwgNCwgMjI5LCAxODksIDgsIDQsIDIyOSwgMTk1LCA4LCA0LCAyMjksIDE5MywgOCwgNCwgMjI5LCAKLSAgICAxOTEsIDgsIDQsIDIyOSwgMTkyLCA4LCA0LCAyNDEsIDYzLCA4LCA0LCAyNDEsIDYyLCA4LCA0LCAyNDEsIDY5LCA4LCA0LCAKLSAgICAyNDEsIDY0LCA4LCA0LCAyNDEsIDY2LCA4LCA0LCAyNDEsIDY1LCA4LCA0LCAyNDEsIDY4LCA4LCA0LCAyNDEsIDY3LCA4LCAKLSAgICA0LCAyNDEsIDc0LCA4LCA0LCAyNDEsIDczLCA4LCA0LCAyNDEsIDc2LCA4LCA0LCAyNDEsIDc1LCA4LCA0LCAyNDEsIDU3LCAKLSAgICA4LCA0LCAyNDEsIDU4LCA4LCA0LCAyNDEsIDYwLCA4LCA0LCAyNDEsIDU5LCA4LCA0LCAyNDEsIDYxLCA4LCA0LCAyNDEsIAotICAgIDcwLCA4LCA0LCAyNDEsIDcyLCA4LCA0LCAyNDEsIDcxLCA4LCA0LCAyNDEsIDU2LCA4LCA0LCAyMjksIDIwLCA4LCA0LCAKLSAgICAyMjksIDE4LCA4LCA0LCAyMjksIDY0LCA4LCA0LCAyMjksIDIzLCA4LCA0LCAyMjksIDQ2LCA4LCA0LCAyMjksIDYwLCA4LCAKLSAgICA0LCAyMjksIDU5LCA4LCA0LCAyMzAsIDUsIDgsIDQsIDIwNSwgOCwgNCwgMjMwLCAxNywgOCwgNCwgMjI4LCA0MiwgOCwgNCwgCi0gICAgMjI4LCA0NCwgOCwgNCwgMjI4LCA0MywgOCwgNCwgMjI4LCAxNjIsIDgsIDQsIDIyOCwgMTQ5LCA4LCA0LCAyMjgsIDE4NSwgCi0gICAgOCwgNCwgMjI4LCAxNzEsIDgsIDQsIDIyOSwgMTY1LCA4LCA0LCAyMjksIDE4NywgOCwgNCwgMjI5LCAxNzYsIDgsIDQsIAotICAgIDIyOCwgMzcsIDgsIDQsIDIyOCwgMzQsIDgsIDQsIDIyOCwgOTIsIDgsIDQsIDIyOCwgNDEsIDgsIDQsIDIyOCwgMzksIDgsIAotICAgIDQsIDIyOCwgNDAsIDgsIDQsIDI0MSwgMTI3LCA4LCA0LCAyNDEsIDEyNiwgOCwgNCwgMjQxLCAxMzIsIDgsIDQsIDI0MSwgCi0gICAgMTI4LCA4LCA0LCAyNDEsIDEyOSwgOCwgNCwgMjQxLCAxMzEsIDgsIDQsIDI0MSwgMTMwLCA4LCA0LCAyNDEsIDEzNywgOCwgCi0gICAgNCwgMjQxLCAxMzYsIDgsIDQsIDI0MSwgMTM5LCA4LCA0LCAyNDEsIDEzOCwgOCwgNCwgMjQxLCAxMTksIDgsIDQsIDI0MSwgCi0gICAgMTIxLCA4LCA0LCAyNDEsIDEyMCwgOCwgNCwgMjQxLCAxMjMsIDgsIDQsIDI0MSwgMTI1LCA4LCA0LCAyNDEsIDEyNCwgOCwgCi0gICAgNCwgMjQxLCAxMzMsIDgsIDQsIDI0MSwgMTM1LCA4LCA0LCAyNDEsIDEzNCwgOCwgNCwgMjQxLCAxMTUsIDgsIDQsIDI0MSwgCi0gICAgMTE0LCA4LCA0LCAyNDEsIDEyMiwgOCwgNCwgMjQxLCAxMTgsIDgsIDQsIDI0MSwgMTE2LCA4LCA0LCAyNDEsIDExNywgOCwgCi0gICAgNCwgMjQxLCAxMDksIDgsIDQsIDI0MSwgMTA4LCA4LCA0LCAyNDEsIDExMywgOCwgNCwgMjQxLCAxMTIsIDgsIDQsIDI0MSwgCi0gICAgMTEwLCA4LCA0LCAyNDEsIDExMSwgOCwgNCwgMjMyLCAyMjQsIDgsIDQsIDIzMiwgMjE4LCA4LCA0LCAyMzMsIDEzLCA4LCA0LCAKLSAgICAyMzIsIDIzMSwgOCwgNCwgMjMzLCA1LCA4LCA0LCAyMzMsIDQsIDgsIDQsIDIzMywgOCwgOCwgNCwgMjMzLCA2LCA4LCA0LCAKLSAgICAyMzMsIDEwMiwgOCwgNCwgMjMzLCA5MywgOCwgNCwgMjMzLCAxNTcsIDgsIDQsIDIzMywgMTExLCA4LCA0LCAyMzIsIDEzNywgCi0gICAgOCwgNCwgMjMyLCAxMzYsIDgsIDQsIDIzMiwgMTM5LCA4LCA0LCAyMzIsIDEzOCwgOCwgNCwgMjMyLCAxNzEsIDgsIDQsIAotICAgIDIzMiwgMTYxLCA4LCA0LCAyMzIsIDIwOCwgOCwgNCwgMjMyLCAxNzUsIDgsIDQsIDIzMywgMjgsIDgsIDQsIDIzMywgODIsIAotICAgIDgsIDQsIDIzMywgNDEsIDgsIDQsIDIzMiwgMTMyLCA4LCA0LCAyMzIsIDEzMSwgOCwgNCwgMjMyLCAxNTYsIDgsIDQsIDIzMiwgCi0gICAgMTM1LCA4LCA0LCAyMzIsIDEzMywgOCwgNCwgMjMyLCAxMzQsIDgsIDQsIDIzMiwgMTE0LCA4LCA0LCAyMzIsIDExMywgOCwgCi0gICAgNCwgMjMyLCAxMjEsIDgsIDQsIDIzMiwgMTE3LCA4LCA0LCAyMzIsIDExNSwgOCwgNCwgMjMyLCAxMTYsIDgsIDQsIDI0MiwgCi0gICAgMTY1LCA4LCA0LCAyNDIsIDE2NCwgOCwgNCwgMjQyLCAxOTAsIDgsIDQsIDI0MiwgMTc1LCA4LCA0LCAyNDIsIDE4MiwgOCwgCi0gICAgNCwgMjQyLCAxODEsIDgsIDQsIDI0MiwgMTg0LCA4LCA0LCAyNDIsIDE4MywgOCwgNCwgMjQzLCA2NSwgOCwgNCwgMjQzLCAKLSAgICA2MCwgOCwgNCwgMjQzLCAxMTAsIDgsIDQsIDI0MywgNzUsIDgsIDQsIDI0MiwgNzIsIDgsIDQsIDI0MiwgNzEsIDgsIDQsIAotICAgIDI0MiwgNzQsIDgsIDQsIDI0MiwgNzMsIDgsIDQsIDI0MiwgMTMwLCA4LCA0LCAyNDIsIDEyOCwgOCwgNCwgMjQyLCAxNTAsIAotICAgIDgsIDQsIDI0MiwgMTM4LCA4LCA0LCAyNDMsIDksIDgsIDQsIDI0MywgNywgOCwgNCwgMjQzLCAzOCwgOCwgNCwgMjQzLCAyMCwgCi0gICAgOCwgNCwgMjQyLCA2MiwgOCwgNCwgMjQyLCA2MSwgOCwgNCwgMjQyLCA5MiwgOCwgNCwgMjQyLCA3MCwgOCwgNCwgMjQyLCAKLSAgICA2MywgOCwgNCwgMjQyLCA2OSwgOCwgNCwgMjM0LCA3MCwgOCwgNCwgMjM0LCA2OSwgOCwgNCwgMjM0LCAxMDEsIDgsIDQsIAotICAgIDIzNCwgODQsIDgsIDQsIDIzNCwgOTQsIDgsIDQsIDIzNCwgOTcsIDgsIDQsIDIzNCwgOTUsIDgsIDQsIDIzNCwgMjA3LCA4LCAKLSAgICA0LCAyMzQsIDE5NiwgOCwgNCwgMTgxLCA4LCA0LCAyMzQsIDIzMywgOCwgNCwgMjMzLCAyMjEsIDgsIDQsIDIzMywgMjI2LCAKLSAgICA4LCA0LCAyMzMsIDIyMywgOCwgNCwgMjM0LCA5LCA4LCA0LCAyMzQsIDUsIDgsIDQsIDIzNCwgMzcsIDgsIDQsIDIzNCwgMTYsIAotICAgIDgsIDQsIDIzNCwgMTYyLCA4LCA0LCAyMzQsIDE0NiwgOCwgNCwgMjM0LCAxODgsIDgsIDQsIDIzNCwgMTY1LCA4LCA0LCAKLSAgICAyMzMsIDIxMCwgOCwgNCwgMjMzLCAyMDgsIDgsIDQsIDIzMywgMjM4LCA4LCA0LCAyMzMsIDIyMCwgOCwgNCwgMjMzLCAyMTMsIAotICAgIDgsIDQsIDIzMywgMjE3LCA4LCA0LCAyNDIsIDI0NywgOCwgNCwgMjQyLCAyNDYsIDgsIDQsIDI0MiwgMjUxLCA4LCA0LCAKLSAgICAyNDIsIDI0OCwgOCwgNCwgMjQyLCAyNTAsIDgsIDQsIDI0MiwgMjQ5LCA4LCA0LCAyNDMsIDIsIDgsIDQsIDI0MywgMSwgOCwgCi0gICAgNCwgMjQzLCA1LCA4LCA0LCAyNDMsIDMsIDgsIDQsIDI0MiwgMjM4LCA4LCA0LCAyNDIsIDIzNywgOCwgNCwgMjQyLCAyNDAsIAotICAgIDgsIDQsIDI0MiwgMjM5LCA4LCA0LCAyNDIsIDI0MywgOCwgNCwgMjQyLCAyNDIsIDgsIDQsIDI0MiwgMjQ1LCA4LCA0LCAKLSAgICAyNDIsIDI0NCwgOCwgNCwgMjQyLCAyNTMsIDgsIDQsIDI0MiwgMjUyLCA4LCA0LCAyNDMsIDAsIDgsIDQsIDI0MiwgMjU0LCAKLSAgICA4LCA0LCAyNDIsIDIzMywgOCwgNCwgMjQyLCAyMzIsIDgsIDQsIDI0MiwgMjQxLCA4LCA0LCAyNDIsIDIzNiwgOCwgNCwgCi0gICAgMjQyLCAyMzQsIDgsIDQsIDI0MiwgMjM1LCA4LCA0LCAyMzEsIDYwLCA4LCA0LCAyMzEsIDYxLCA4LCA0LCAyMzEsIDc5LCA4LCAKLSAgICA0LCAyMzEsIDc4LCA4LCA0LCAyMzEsIDgxLCA4LCA0LCAyMzEsIDgwLCA4LCA0LCAyMzEsIDUxLCA4LCA0LCAyMzEsIDUzLCAKLSAgICA4LCA0LCAyMzEsIDUyLCA4LCA0LCAyMzEsIDU2LCA4LCA0LCAyMzEsIDU1LCA4LCA0LCAyMzEsIDU4LCA4LCA0LCAyMzEsIAotICAgIDU3LCA4LCA0LCAyMzEsIDYyLCA4LCA0LCAyMzEsIDY0LCA4LCA0LCAyMzEsIDYzLCA4LCA0LCAyMzEsIDQ3LCA4LCA0LCAKLSAgICAyMzEsIDQ2LCA4LCA0LCAyMzEsIDU0LCA4LCA0LCAyMzEsIDUwLCA4LCA0LCAyMzEsIDQ4LCA4LCA0LCAyMzEsIDQ5LCA4LCAKLSAgICA0LCAyNDAsIDE3MiwgOCwgNCwgMjQwLCAxNzEsIDgsIDQsIDI0MCwgMTc4LCA4LCA0LCAyNDAsIDE3MywgOCwgNCwgMjQwLCAKLSAgICAxNzUsIDgsIDQsIDI0MCwgMTc0LCA4LCA0LCAyNDAsIDE3NywgOCwgNCwgMjQwLCAxNzYsIDgsIDQsIDI0MCwgMTgzLCA4LCAKLSAgICA0LCAyNDAsIDE4MiwgOCwgNCwgMjQwLCAxODUsIDgsIDQsIDI0MCwgMTg0LCA4LCA0LCAyNDAsIDE2NCwgOCwgNCwgMjQwLCAKLSAgICAxNjMsIDgsIDQsIDI0MCwgMTY2LCA4LCA0LCAyNDAsIDE2NSwgOCwgNCwgMjQwLCAxNjgsIDgsIDQsIDI0MCwgMTY3LCA4LCAKLSAgICA0LCAyNDAsIDE3MCwgOCwgNCwgMjQwLCAxNjksIDgsIDQsIDI0MCwgMTc5LCA4LCA0LCAyNDAsIDE4MSwgOCwgNCwgMjQwLCAKLSAgICAxODAsIDgsIDQsIDIyOSwgMTEwLCA4LCA0LCAyMjksIDExMiwgOCwgNCwgMjI5LCAxMTEsIDgsIDQsIDIyOSwgMTUwLCA4LCAKLSAgICA0LCAyMjksIDE0OSwgOCwgNCwgMjI5LCAxNTksIDgsIDQsIDIyOSwgMTUzLCA4LCA0LCAyMjksIDczLCA4LCA0LCAyMjksIAotICAgIDcyLCA4LCA0LCAyMjksIDc0LCA4LCA0LCAyMjksIDgyLCA4LCA0LCAyMjksIDc5LCA4LCA0LCAyMjksIDkwLCA4LCA0LCAKLSAgICAyMjksIDg0LCA4LCA0LCAyMjksIDE0MywgOCwgNCwgMjI5LCAxNDgsIDgsIDQsIDIyOSwgMTQ1LCA4LCA0LCAyNDEsIDE0MiwgCi0gICAgOCwgNCwgMjQxLCAxNTIsIDgsIDQsIDI0MSwgMTYwLCA4LCA0LCAyNDEsIDIzNCwgOCwgNCwgMjQxLCAyMjcsIDgsIDQsIAotICAgIDE1OSwgOCwgNCwgMjQxLCAyNDUsIDgsIDQsIDI0MCwgMTk2LCA4LCA0LCAyNDAsIDE5NSwgOCwgNCwgMjQwLCAxOTgsIDgsIAotICAgIDQsIDI0MCwgMTk3LCA4LCA0LCAyNDAsIDIyOSwgOCwgNCwgMjQwLCAyMjAsIDgsIDQsIDI0MSwgNTQsIDgsIDQsIDI0MSwgCi0gICAgMzQsIDgsIDQsIDI0MSwgMTc5LCA4LCA0LCAyNDEsIDIyMiwgOCwgNCwgMjQxLCAxOTAsIDgsIDQsIDIxNCwgMjcsIDgsIDQsIAotICAgIDIxNCwgMTIsIDgsIDQsIDIxNCwgNDksIDgsIDQsIDIxNCwgMzUsIDgsIDQsIDIxMywgMTczLCA4LCA0LCAyMTMsIDE3NSwgOCwgCi0gICAgNCwgMjEzLCAxNzQsIDgsIDQsIDIxMywgMTkxLCA4LCA0LCAyMTMsIDIxNCwgOCwgNCwgMjEzLCAxOTcsIDgsIDQsIDIxMywgCi0gICAgMjQ2LCA4LCA0LCAyMTQsIDYsIDgsIDQsIDIxMywgMjUxLCA4LCA0LCAyMTIsIDIzLCA4LCA0LCAyMTIsIDIyLCA4LCA0LCAKLSAgICAyMTIsIDM3LCA4LCA0LCAyMTIsIDI1LCA4LCA0LCAyMTIsIDMwLCA4LCA0LCAyMTIsIDMyLCA4LCA0LCAyMTIsIDMxLCA4LCAKLSAgICA0LCAyMTIsIDk1LCA4LCA0LCAyMTIsIDkyLCA4LCA0LCAyMTIsIDEwOSwgOCwgNCwgMjEyLCA5OCwgOCwgNCwgMjEyLCAxLCAKLSAgICA4LCA0LCAyMTIsIDMsIDgsIDQsIDIxMiwgMiwgOCwgNCwgMjEyLCAxMiwgOCwgNCwgMjEyLCAxMSwgOCwgNCwgMjEyLCAxNiwgCi0gICAgOCwgNCwgMjEyLCAxMywgOCwgNCwgMjEyLCA3NywgOCwgNCwgMjEyLCA4NywgOCwgNCwgMjEyLCA4MSwgOCwgNCwgMjExLCAKLSAgICAyNTMsIDgsIDQsIDIxMSwgMjUyLCA4LCA0LCAyMTIsIDgsIDgsIDQsIDIxMiwgMCwgOCwgNCwgMjExLCAyNTQsIDgsIDQsIAotICAgIDIxMSwgMjU1LCA4LCA0LCAyMTEsIDI0NCwgOCwgNCwgMjExLCAyNDMsIDgsIDQsIDIxMSwgMjQ5LCA4LCA0LCAyMTEsIDI0NywgCi0gICAgOCwgNCwgMjExLCAyNDUsIDgsIDQsIDIxMSwgMjQ2LCA4LCA0LCAyNDksIDIyMSwgOCwgNCwgMjQ5LCAyMTcsIDgsIDQsIAotICAgIDI0OSwgMjQ0LCA4LCA0LCAyNDksIDIzMCwgOCwgNCwgMjQ5LCAyNDEsIDgsIDQsIDI0OSwgMjM1LCA4LCA0LCAyNDksIDI0MywgCi0gICAgOCwgNCwgMjQ5LCAyNDIsIDgsIDQsIDI1MCwgMTU2LCA4LCA0LCAyNTAsIDE1MCwgOCwgNCwgMjUwLCAyMTksIDgsIDQsIAotICAgIDI1MCwgMTgzLCA4LCA0LCAyNDksIDQ1LCA4LCA0LCAyNDksIDQ3LCA4LCA0LCAyNDksIDQ2LCA4LCA0LCAyNDksIDkyLCA4LCAKLSAgICA0LCAyNDksIDgzLCA4LCA0LCAyNDksIDE3NSwgOCwgNCwgMjQ5LCAxMDgsIDgsIDQsIDI1MCwgOTQsIDgsIDQsIDI1MCwgCi0gICAgMTI0LCA4LCA0LCAyNTAsIDk5LCA4LCA0LCAyNDksIDI2LCA4LCA0LCAyNDksIDI1LCA4LCA0LCAyNDksIDUzLCA4LCA0LCAKLSAgICAyNDksIDQzLCA4LCA0LCAyNDksIDMxLCA4LCA0LCAyNDksIDQyLCA4LCA0LCAyNDksIDYsIDgsIDQsIDI0OSwgNSwgOCwgNCwgCi0gICAgMjQ5LCAxNiwgOCwgNCwgMjQ5LCAxMiwgOCwgNCwgMjQ5LCA3LCA4LCA0LCAyNDksIDksIDgsIDQsIDIxMSwgMjI3LCA4LCA0LCAKLSAgICAyMTEsIDIyNiwgOCwgNCwgMjExLCAyMzMsIDgsIDQsIDIxMSwgMjI4LCA4LCA0LCAyMTEsIDIzMCwgOCwgNCwgMjExLCAyMjksIAotICAgIDgsIDQsIDIxMSwgMjMyLCA4LCA0LCAyMTEsIDIzMSwgOCwgNCwgMjExLCAyMzksIDgsIDQsIDIxMSwgMjM4LCA4LCA0LCAKLSAgICAyMTEsIDI0MiwgOCwgNCwgMjExLCAyNDAsIDgsIDQsIDIxMSwgMjIzLCA4LCA0LCAyMTEsIDIyNSwgOCwgNCwgMjExLCAyMjQsIAotICAgIDgsIDQsIDIxMSwgMjM0LCA4LCA0LCAyMTEsIDIzNywgOCwgNCwgMjExLCAyMzUsIDgsIDQsIDIxMSwgMjE4LCA4LCA0LCAKLSAgICAyMTEsIDIyMiwgOCwgNCwgMjExLCAyMjEsIDgsIDQsIDIxMSwgMjE5LCA4LCA0LCAyMTEsIDIyMCwgOCwgNCwgMjExLCAyMTMsIAotICAgIDgsIDQsIDIxMSwgMjEyLCA4LCA0LCAyMTEsIDIxNywgOCwgNCwgMjExLCAyMTYsIDgsIDQsIDIxMSwgMjE0LCA4LCA0LCAKLSAgICAyMTEsIDIxNSwgOCwgNCwgMjI3LCAyMjQsIDgsIDQsIDIyNywgMjIzLCA4LCA0LCAyMjcsIDIyOSwgOCwgNCwgMjI3LCAyMjUsIAotICAgIDgsIDQsIDIyNywgMjI2LCA4LCA0LCAyMjcsIDIyOCwgOCwgNCwgMjI3LCAyMjcsIDgsIDQsIDIyNywgMjM0LCA4LCA0LCAKLSAgICAyMjcsIDIzMywgOCwgNCwgMjI3LCAyMzcsIDgsIDQsIDIyNywgMjM2LCA4LCA0LCAyMjcsIDIxNywgOCwgNCwgMjI3LCAyMTgsIAotICAgIDgsIDQsIDIyNywgMjIxLCA4LCA0LCAyMjcsIDIyMiwgOCwgNCwgMjI3LCAyMzAsIDgsIDQsIDIyNywgMjMyLCA4LCA0LCAKLSAgICAyMjcsIDIxMiwgOCwgNCwgMjI3LCAyMjAsIDgsIDQsIDIyNywgMjE2LCA4LCA0LCAyMjcsIDIxMywgOCwgNCwgMjI3LCAyMTQsIAotICAgIDgsIDQsIDIyNywgMjA3LCA4LCA0LCAyMjcsIDIwNiwgOCwgNCwgMjI3LCAyMTEsIDgsIDQsIDIyNywgMjEwLCA4LCA0LCAKLSAgICAyMjcsIDIwOCwgOCwgNCwgMjI3LCAyMDksIDgsIDQsIDIyMCwgNTUsIDgsIDQsIDE4OSwgOCwgNCwgMjIwLCAxMTcsIDgsIDQsIAotICAgIDIyMCwgNTgsIDgsIDQsIDIyMCwgMTA5LCA4LCA0LCAyMjAsIDExMiwgOCwgNCwgMjIwLCAxMTAsIDgsIDQsIDIyMiwgMTQyLCAKLSAgICA4LCA0LCAyMjIsIDEzMiwgOCwgNCwgMjIyLCAyMDIsIDgsIDQsIDIyMiwgMTUwLCA4LCA0LCAyMTgsIDIyOCwgOCwgNCwgCi0gICAgMjE4LCAyMzAsIDgsIDQsIDIxOCwgMjI5LCA4LCA0LCAyMTksIDIyMSwgOCwgNCwgMjE5LCAyMTAsIDgsIDQsIDIxOSwgMjQyLCAKLSAgICA4LCA0LCAyMTksIDIyNCwgOCwgNCwgMjIxLCAzNSwgOCwgNCwgMjIyLCAxMDAsIDgsIDQsIDIyMSwgNTksIDgsIDQsIDIxOCwgCi0gICAgMjA2LCA4LCA0LCAyMTgsIDIwNCwgOCwgNCwgMjE5LCAyNywgOCwgNCwgMjE4LCAyMjcsIDgsIDQsIDIxOCwgMjA5LCA4LCA0LCAKLSAgICAyMTgsIDIxNywgOCwgNCwgMjE4LCAxMTMsIDgsIDQsIDIxOCwgMTEyLCA4LCA0LCAyMTgsIDE3NywgOCwgNCwgMjE4LCAxMTksIAotICAgIDgsIDQsIDIxOCwgMTE0LCA4LCA0LCAyMTgsIDExOCwgOCwgNCwgMjE5LCAxMjMsIDgsIDQsIDIxOSwgMTIyLCA4LCA0LCAKLSAgICAyMTksIDEyOCwgOCwgNCwgMjE5LCAxMjQsIDgsIDQsIDIxOSwgMTI1LCA4LCA0LCAyMTksIDEyNywgOCwgNCwgMjE5LCAxMjYsIAotICAgIDgsIDQsIDIxOSwgMTM1LCA4LCA0LCAyMTksIDEzNCwgOCwgNCwgMjE5LCAxNTcsIDgsIDQsIDIxOSwgMTM2LCA4LCA0LCAKLSAgICAyMTksIDExOSwgOCwgNCwgMjE5LCAxMTgsIDgsIDQsIDIxOSwgMTIxLCA4LCA0LCAyMTksIDEyMCwgOCwgNCwgMjE5LCAxMzAsIAotICAgIDgsIDQsIDIxOSwgMTMzLCA4LCA0LCAyMTksIDEzMSwgOCwgNCwgMjE5LCAxMTUsIDgsIDQsIDIxOSwgMTE0LCA4LCA0LCAKLSAgICAyMTksIDExNywgOCwgNCwgMjE5LCAxMTYsIDgsIDQsIDIxOSwgMTA5LCA4LCA0LCAyMTksIDEwOCwgOCwgNCwgMjE5LCAxMTMsIAotICAgIDgsIDQsIDIxOSwgMTEyLCA4LCA0LCAyMTksIDExMCwgOCwgNCwgMjE5LCAxMTEsIDgsIDQsIDIxMiwgNzAsIDgsIDQsIDIxMiwgCi0gICAgNjksIDgsIDQsIDIxMiwgNzUsIDgsIDQsIDIxMiwgNzIsIDgsIDQsIDIxMiwgNTIsIDgsIDQsIDIxMiwgNTQsIDgsIDQsIAotICAgIDIxMiwgNTMsIDgsIDQsIDIxMiwgNTcsIDgsIDQsIDIxMiwgNTYsIDgsIDQsIDIxMiwgNjAsIDgsIDQsIDIxMiwgNTgsIDgsIAotICAgIDQsIDIxMiwgNjQsIDgsIDQsIDIxMiwgNjMsIDgsIDQsIDIxMiwgNjcsIDgsIDQsIDIxMiwgNjUsIDgsIDQsIDIxMiwgNDgsIAotICAgIDgsIDQsIDIxMiwgNDcsIDgsIDQsIDIxMiwgNTUsIDgsIDQsIDIxMiwgNTEsIDgsIDQsIDIxMiwgNDksIDgsIDQsIDIxMiwgCi0gICAgNTAsIDgsIDQsIDIxMiwgNDAsIDgsIDQsIDIxMiwgMzksIDgsIDQsIDIxMiwgNDQsIDgsIDQsIDIxMiwgNDMsIDgsIDQsIAotICAgIDIxMiwgNDEsIDgsIDQsIDIxMiwgNDIsIDgsIDQsIDI1MCwgNzIsIDgsIDQsIDI1MCwgNjksIDgsIDQsIDI1MCwgOTIsIDgsIAotICAgIDQsIDI1MCwgODAsIDgsIDQsIDI1MCwgMiwgOCwgNCwgMjUwLCAxLCA4LCA0LCAyNTAsIDQsIDgsIDQsIDI1MCwgMywgOCwgNCwgCi0gICAgMjUwLCAxNiwgOCwgNCwgMjUwLCAxNSwgOCwgNCwgMjUwLCAyMywgOCwgNCwgMjUwLCAxOCwgOCwgNCwgMjUwLCA1MiwgOCwgCi0gICAgNCwgMjUwLCA1MCwgOCwgNCwgMjUwLCA2NywgOCwgNCwgMjUwLCA1OCwgOCwgNCwgMjQ5LCAyNTIsIDgsIDQsIDI1MCwgNiwgCi0gICAgOCwgNCwgMjUwLCAwLCA4LCA0LCAyNDksIDI1MywgOCwgNCwgMjQ5LCAyNTUsIDgsIDQsIDI0OSwgMjQ2LCA4LCA0LCAyNDksIAotICAgIDI0NSwgOCwgNCwgMjQ5LCAyNTAsIDgsIDQsIDI0OSwgMjQ5LCA4LCA0LCAyNDksIDI0NywgOCwgNCwgMjQ5LCAyNDgsIDgsIAotICAgIDQsIDIyMywgODAsIDgsIDQsIDIyMywgODEsIDgsIDQsIDIyMywgNjcsIDgsIDQsIDIyMywgNjgsIDgsIDQsIDIyMywgNzEsIAotICAgIDgsIDQsIDIyMywgNzAsIDgsIDQsIDIyMywgNzMsIDgsIDQsIDIyMywgNzIsIDgsIDQsIDIyMywgNzUsIDgsIDQsIDIyMywgCi0gICAgNzQsIDgsIDQsIDIyMywgNzksIDgsIDQsIDIyMywgNzYsIDgsIDQsIDIyMywgNjMsIDgsIDQsIDIyMywgNjIsIDgsIDQsIAotICAgIDIyMywgNjksIDgsIDQsIDIyMywgNjYsIDgsIDQsIDIyMywgNjQsIDgsIDQsIDIyMywgNjUsIDgsIDQsIDIyMywgNTcsIDgsIAotICAgIDQsIDIyMywgNTYsIDgsIDQsIDIyMywgNjEsIDgsIDQsIDIyMywgNjAsIDgsIDQsIDIyMywgNTgsIDgsIDQsIDIyMywgNTksIAotICAgIDgsIDQsIDIyOCwgMTQ1LCA4LCA0LCAyMjgsIDE0NCwgOCwgNCwgMjI4LCAxNDcsIDgsIDQsIDIyOCwgMTQ2LCA4LCA0LCAKLSAgICAyMjgsIDEzNywgOCwgNCwgMjI4LCAxMzksIDgsIDQsIDIyOCwgMTM4LCA4LCA0LCAyMjgsIDE0MSwgOCwgNCwgMjI4LCAxNDAsIAotICAgIDgsIDQsIDIyOCwgMTQzLCA4LCA0LCAyMjgsIDE0MiwgOCwgNCwgMjI4LCAxMzIsIDgsIDQsIDIyOCwgMTMxLCA4LCA0LCAKLSAgICAyMjgsIDEzNiwgOCwgNCwgMjI4LCAxMzUsIDgsIDQsIDIyOCwgMTMzLCA4LCA0LCAyMjgsIDEzNCwgOCwgNCwgMjI4LCAxMjYsIAotICAgIDgsIDQsIDIyOCwgMTI1LCA4LCA0LCAyMjgsIDEzMCwgOCwgNCwgMjI4LCAxMjksIDgsIDQsIDIyOCwgMTI3LCA4LCA0LCAKLSAgICAyMjgsIDEyOCwgOCwgNCwgMjIwLCAyNTEsIDgsIDQsIDIyMCwgMjQ3LCA4LCA0LCAyMjEsIDI0LCA4LCA0LCAyMjEsIDYsIDgsIAotICAgIDQsIDIyMCwgMTQwLCA4LCA0LCAyMjAsIDE0MiwgOCwgNCwgMjIwLCAxNDEsIDgsIDQsIDIyMCwgMTYwLCA4LCA0LCAyMjAsIAotICAgIDE1NywgOCwgNCwgMjIwLCAxODcsIDgsIDQsIDIyMCwgMTc4LCA4LCA0LCAyMjAsIDIyMiwgOCwgNCwgMjIwLCAyMTUsIDgsIAotICAgIDQsIDIyMCwgMjQzLCA4LCA0LCAyMjAsIDIzMCwgOCwgNCwgMjIwLCAxMzYsIDgsIDQsIDIyMCwgMTM1LCA4LCA0LCAyMjAsIAotICAgIDE1MCwgOCwgNCwgMjIwLCAxMzksIDgsIDQsIDIyMCwgMTM3LCA4LCA0LCAyMjAsIDEzOCwgOCwgNCwgMjIwLCAxMjAsIDgsIAotICAgIDQsIDIyMCwgMTE5LCA4LCA0LCAyMjAsIDEyNiwgOCwgNCwgMjIwLCAxMjMsIDgsIDQsIDIyMCwgMTIxLCA4LCA0LCAyMjAsIAotICAgIDEyMiwgOCwgNCwgMjI0LCAzMywgOCwgNCwgMjI0LCAyOCwgOCwgNCwgMjAzLCA4LCA0LCAyMjQsIDM5LCA4LCA0LCAyMjMsIAotICAgIDMxLCA4LCA0LCAyMjMsIDMzLCA4LCA0LCAyMjMsIDMyLCA4LCA0LCAyMjMsIDkwLCA4LCA0LCAyMjMsIDgzLCA4LCA0LCAKLSAgICAyMjMsIDExMiwgOCwgNCwgMjIzLCA5NCwgOCwgNCwgMjIzLCAxOTYsIDgsIDQsIDIyNCwgMjEsIDgsIDQsIDIyMywgMjMxLCAKLSAgICA4LCA0LCAyMjMsIDI0LCA4LCA0LCAyMjMsIDIyLCA4LCA0LCAyMjMsIDUxLCA4LCA0LCAyMjMsIDMwLCA4LCA0LCAyMjMsIAotICAgIDI2LCA4LCA0LCAyMjMsIDI3LCA4LCA0LCAyMjMsIDcsIDgsIDQsIDIyMywgNiwgOCwgNCwgMjIzLCAxMiwgOCwgNCwgMjIzLCAKLSAgICAxMCwgOCwgNCwgMjIzLCA4LCA4LCA0LCAyMjMsIDksIDgsIDQsIDIzNSwgMTAxLCA4LCA0LCAyMzUsIDEwMCwgOCwgNCwgCi0gICAgMjM1LCAxMTAsIDgsIDQsIDIzNSwgMTAyLCA4LCA0LCAyMzUsIDEwNiwgOCwgNCwgMjM1LCAxMDUsIDgsIDQsIDIzNSwgMTA4LCAKLSAgICA4LCA0LCAyMzUsIDEwNywgOCwgNCwgMjM1LCA0NCwgOCwgNCwgMjM1LCA0MywgOCwgNCwgMjM1LCA0NiwgOCwgNCwgMjM1LCAKLSAgICA0NSwgOCwgNCwgMjM1LCA1OSwgOCwgNCwgMjM1LCA1NywgOCwgNCwgMjM1LCA3MSwgOCwgNCwgMjM1LCA2MSwgOCwgNCwgCi0gICAgMjM1LCAzOCwgOCwgNCwgMjM1LCAzNiwgOCwgNCwgMjM1LCA1NCwgOCwgNCwgMjM1LCA0MiwgOCwgNCwgMjM1LCAzOSwgOCwgCi0gICAgNCwgMjM1LCA0MCwgOCwgNCwgMjM1LCAzMCwgOCwgNCwgMjM1LCAyOSwgOCwgNCwgMjM1LCAzNCwgOCwgNCwgMjM1LCAzMywgCi0gICAgOCwgNCwgMjM1LCAzMSwgOCwgNCwgMjM1LCAzMiwgOCwgNCwgMjI0LCAxOTEsIDgsIDQsIDIyNCwgMTg5LCA4LCA0LCAyMjQsIAotICAgIDE5OCwgOCwgNCwgMjI0LCAxOTIsIDgsIDQsIDIyNCwgMTk1LCA4LCA0LCAyMjQsIDE5NCwgOCwgNCwgMjI0LCAxOTcsIDgsIAotICAgIDQsIDIyNCwgMTk2LCA4LCA0LCAyMjQsIDE0NCwgOCwgNCwgMjI0LCAxNDEsIDgsIDQsIDIyNCwgMTQ2LCA4LCA0LCAyMjQsIAotICAgIDE0NSwgOCwgNCwgMjI0LCAxNzgsIDgsIDQsIDIyNCwgMTc3LCA4LCA0LCAyMjQsIDE4NywgOCwgNCwgMjI0LCAxODEsIDgsIAotICAgIDQsIDIyNCwgMTM2LCA4LCA0LCAyMjQsIDEzMiwgOCwgNCwgMjI0LCAxNzUsIDgsIDQsIDIyNCwgMTQwLCA4LCA0LCAyMjQsIAotICAgIDEzOCwgOCwgNCwgMjI0LCAxMzksIDgsIDQsIDIyNCwgMTE2LCA4LCA0LCAyMjQsIDExNCwgOCwgNCwgMjI0LCAxMjYsIDgsIAotICAgIDQsIDIyNCwgMTE5LCA4LCA0LCAyMjQsIDExNywgOCwgNCwgMjI0LCAxMTgsIDgsIDQsIDIzNSwgOTAsIDgsIDQsIDIzNSwgCi0gICAgODksIDgsIDQsIDIzNSwgOTYsIDgsIDQsIDIzNSwgOTEsIDgsIDQsIDIzNSwgOTMsIDgsIDQsIDIzNSwgOTIsIDgsIDQsIAotICAgIDIzNSwgOTUsIDgsIDQsIDIzNSwgOTQsIDgsIDQsIDIzNSwgODEsIDgsIDQsIDIzNSwgODMsIDgsIDQsIDIzNSwgODIsIDgsIAotICAgIDQsIDIzNSwgODYsIDgsIDQsIDIzNSwgODUsIDgsIDQsIDIzNSwgODgsIDgsIDQsIDIzNSwgODcsIDgsIDQsIDIzNSwgNzcsIAotICAgIDgsIDQsIDIzNSwgNzYsIDgsIDQsIDIzNSwgODQsIDgsIDQsIDIzNSwgODAsIDgsIDQsIDIzNSwgNzgsIDgsIDQsIDIzNSwgCi0gICAgNzksIDgsIDQsIDIzNSwgNzMsIDgsIDQsIDIzNSwgNzIsIDgsIDQsIDIzNSwgNzUsIDgsIDQsIDIzNSwgNzQsIDgsIDQsIAotICAgIDIyOCwgMjQ5LCA4LCA0LCAyMjgsIDI0OCwgOCwgNCwgMjI5LCAwLCA4LCA0LCAyMjgsIDI1MCwgOCwgNCwgMjI4LCAyNTIsIAotICAgIDgsIDQsIDIyOCwgMjUxLCA4LCA0LCAyMjgsIDI1NSwgOCwgNCwgMjI4LCAyNTMsIDgsIDQsIDIyOCwgMjM4LCA4LCA0LCAKLSAgICAyMjgsIDIzOSwgOCwgNCwgMjI4LCAyNDQsIDgsIDQsIDIyOCwgMjQzLCA4LCA0LCAyMjgsIDI0NywgOCwgNCwgMjI4LCAyNDUsIAotICAgIDgsIDQsIDIyOCwgMjMzLCA4LCA0LCAyMjgsIDI0MiwgOCwgNCwgMjI4LCAyMzcsIDgsIDQsIDIyOCwgMjM0LCA4LCA0LCAKLSAgICAyMjgsIDIzNSwgOCwgNCwgMjI4LCAyMjgsIDgsIDQsIDIyOCwgMjI3LCA4LCA0LCAyMjgsIDIzMiwgOCwgNCwgMjI4LCAyMzEsIAotICAgIDgsIDQsIDIyOCwgMjI5LCA4LCA0LCAyMjgsIDIzMCwgOCwgNCwgMjI4LCAwLCA4LCA0LCAyMjcsIDI1NSwgOCwgNCwgMjI4LCAKLSAgICAxMCwgOCwgNCwgMjI4LCA0LCA4LCA0LCAyMjgsIDcsIDgsIDQsIDIyOCwgNiwgOCwgNCwgMjI4LCA5LCA4LCA0LCAyMjgsIDgsIAotICAgIDgsIDQsIDIyNywgMjQzLCA4LCA0LCAyMjcsIDI0NSwgOCwgNCwgMjI3LCAyNDQsIDgsIDQsIDIyNywgMjQ5LCA4LCA0LCAKLSAgICAyMjcsIDI0OCwgOCwgNCwgMjI3LCAyNTMsIDgsIDQsIDIyNywgMjUwLCA4LCA0LCAyMjcsIDI0MSwgOCwgNCwgMjI3LCAyNDAsIAotICAgIDgsIDQsIDIyNywgMjQ3LCA4LCA0LCAyMjcsIDI0MiwgOCwgNCwgMjEzLCAxMzgsIDgsIDQsIDIxMywgMTM3LCA4LCA0LCAKLSAgICAyMTMsIDE0NSwgOCwgNCwgMjEzLCAxNDAsIDgsIDQsIDIxMywgMTQyLCA4LCA0LCAyMTMsIDE0MSwgOCwgNCwgMjEzLCAxNDQsIAotICAgIDgsIDQsIDIxMywgMTQzLCA4LCA0LCAyMTMsIDEyNywgOCwgNCwgMjEzLCAxMjgsIDgsIDQsIDIxMywgMTMyLCA4LCA0LCAKLSAgICAyMTMsIDEzMSwgOCwgNCwgMjEzLCAxMzYsIDgsIDQsIDIxMywgMTM0LCA4LCA0LCAyMTMsIDEwOSwgOCwgNCwgMjEzLCAxMDcsIAotICAgIDgsIDQsIDIxMywgMTE5LCA4LCA0LCAyMTMsIDExMiwgOCwgNCwgMjEzLCAxMTAsIDgsIDQsIDIxMywgMTExLCA4LCA0LCAKLSAgICAyMTIsIDI0MSwgOCwgNCwgMjEyLCAyMzksIDgsIDQsIDIxMiwgMjU1LCA4LCA0LCAyMTIsIDI0MiwgOCwgNCwgMjEyLCAyNDksIAotICAgIDgsIDQsIDIxMiwgMjQ4LCA4LCA0LCAyMTIsIDI1MiwgOCwgNCwgMjEyLCAyNTAsIDgsIDQsIDIxMiwgMTgyLCA4LCA0LCAKLSAgICAyMTIsIDE4MSwgOCwgNCwgMjEyLCAxODUsIDgsIDQsIDIxMiwgMTgzLCA4LCA0LCAyMTIsIDIxNSwgOCwgNCwgMjEyLCAyMTIsIAotICAgIDgsIDQsIDIxMiwgMjM1LCA4LCA0LCAyMTIsIDIxOSwgOCwgNCwgMjEyLCAxNzMsIDgsIDQsIDIxMiwgMTcwLCA4LCA0LCAKLSAgICAyMTIsIDIwMywgOCwgNCwgMjEyLCAxODAsIDgsIDQsIDIxMiwgMTc2LCA4LCA0LCAyMTIsIDE3NywgOCwgNCwgMjEyLCAxNTUsIAotICAgIDgsIDQsIDIxMiwgMTU0LCA4LCA0LCAyMTIsIDE2MSwgOCwgNCwgMjEyLCAxNTgsIDgsIDQsIDIxMiwgMTU2LCA4LCA0LCAKLSAgICAyMTIsIDE1NywgOCwgMzQsIDIyNCwgMTc4LCA4LCAzNCwgMjMzLCAxMywgOCwgMzQsIDIzNCwgNzAsIDgsIDM0LCAyMjgsIDQsIAotICAgIDgsIDM0LCAyNDksIDEyLCA4LCAzNCwgMjE5LCAxMjgsIDgsIDM0LCAyNDIsIDI0NCwgOCwgMzQsIDI0MywgMjAsIDgsIDM0LCAKLSAgICAyMzEsIDQyLCA4LCAzNCwgMjQwLCAxNzIsIDgsIDM0LCAyMzIsIDExNiwgOCwgMzQsIDI1MiwgMywgOCwgMzQsIDIzMCwgCi0gICAgMTk2LCA4LCAzNCwgMjEyLCAyMzUsIDgsIDM0LCAyMjUsIDgsIDgsIDM0LCAyNDAsIDE2NiwgOCwgMzQsIDIxNywgMjUzLCA4LCAKLSAgICAzNCwgMjQzLCAxMTAsIDgsIDM0LCAyMTIsIDAsIDgsIDM0LCAyNDksIDYsIDgsIDM0LCAyNDgsIDQ2LCA4LCAzNCwgMjUxLCAKLSAgICAyNywgOCwgMzQsIDI0MiwgMjQwLCA4LCAzNCwgMjI3LCAyNTAsIDgsIDM0LCAyMTYsIDgyLCA4LCAzNCwgMjI3LCA0MSwgOCwgCi0gICAgMzQsIDIzNSwgNzcsIDgsIDM0LCAyMTIsIDEyLCA4LCAzNCwgMjI0LCAyNDQsIDgsIDM0LCAyNDEsIDk0LCA4LCAzNCwgMjEyLCAKLSAgICAyNDEsIDgsIDM0LCAyMTQsIDk1LCA4LCAzNCwgMjIwLCAxMjYsIDgsIDM0LCAyMTQsIDIyMSwgOCwgMzQsIDIxMiwgMTA5LCAKLSAgICA4LCAzNCwgMjM1LCA3MSwgOCwgMzQsIDIyNywgMjE2LCA4LCAzNCwgMjM1LCA3NSwgOCwgMzQsIDI0MiwgMTMwLCA4LCAzNCwgCi0gICAgMjM1LCA5NSwgOCwgMzQsIDIxMywgMjE0LCA4LCAzNCwgMjQ2LCAzMywgOCwgMzQsIDIyMCwgMTM4LCA4LCAzNCwgMjMzLCA4LCAKLSAgICA4LCAzNCwgMjQ5LCAxNiwgOCwgMzQsIDI0OSwgNDYsIDgsIDM0LCAyNDksIDIzMCwgOCwgMzQsIDI0MCwgMTY5LCA4LCAzNCwgCi0gICAgMjIwLCAyNTEsIDgsIDM0LCAyMTEsIDI1NSwgOCwgMzQsIDIyMCwgMTc4LCA4LCAzNCwgMjUwLCA2NywgOCwgMzQsIDIxMSwgCi0gICAgMjMwLCA4LCAzNCwgMjI5LCAyNTIsIDgsIDM0LCAyMzQsIDE4OCwgMjMyLCAyMjUsIDEsIDI1MiwgMTA3LCAyMzIsIDIyNSwgCi0gICAgMSwgMTkzLCAyMzIsIDIyNSwgMSwgMjI2LCAyMywgMjMyLCAyMjUsIDEsIDI0OCwgMTY0LCAyMzIsIDIyNSwgMSwgMjE4LCAKLSAgICA1MiwgMjMyLCAyMjUsIDEsIDIxNywgMTYxLCAyMzIsIDIyNSwgMSwgMjQzLCAxMTAsIDIzMiwgMjI1LCAxLCAxODEsIDIzMiwgCi0gICAgMjI1LCAxLCAyMzQsIDEzOCwgMjMyLCAyMjUsIDEsIDIzNSwgMTM5LCAyMzIsIDIyNSwgMSwgMjUwLCAyMTksIDIzMiwgMjI1LCAKLSAgICAxLCAyNTAsIDkyLCAyMzIsIDIyNSwgMSwgMjQ1LCAyNDksIDIzMiwgMjI1LCAxLCAyMTYsIDE0MSwgMjMyLCAyMjUsIDEsIAotICAgIDIxNiwgMTMzLCAyMzIsIDIyNSwgMSwgMTg4LCAyMzIsIDIyNSwgMSwgMjA1LCAyMzIsIDIyNSwgMSwgMjMzLCAxNTcsIDIzMiwgCi0gICAgMjI1LCAxLCAyMjIsIDIwMiwgMjMyLCAyMjUsIDEsIDIxMiwgNzUsIDIzMiwgMjI1LCAxLCAyMTIsIDEwOSwgMjMyLCAyMjUsIAotICAgIDEsIDIyOSwgMTU5LCAyMzIsIDIyNSwgMSwgMTU5LCAyMzIsIDIyNSwgMSwgMjEzLCAxNTMsIDIzMiwgMjI1LCAxLCAyNDEsIAotICAgIDE3NCwgMjMyLCAyMjUsIDEsIDI0NCwgMTY0LCAyMzIsIDIyNSwgMSwgMjE0LCA0OSwgMjMyLCAyMjUsIDEsIDIyMSwgMjQsIAotICAgIDIzMiwgMjI1LCAxLCAxODYsIDIzMiwgMjI1LCAxLCAyNDIsIDIyNSwgMjMyLCAyMjUsIDEsIDYxLCAyMzIsIDIyNSwgMSwgCi0gICAgMjU0LCAxNDgsIDIzMiwgMjI1LCAxLCA3NCwgMjMyLCAyMjUsIDEsIDI0NSwgMjIsIDIzMiwgMjI1LCAxLCA3MiwgMjMyLCAKLSAgICAyMjUsIDEsIDc1LCAyMzIsIDIyNSwgMSwgNjksIDIzMiwgMjI1LCAxLCAyMTUsIDE4MywgMjMyLCAyMjUsIDEsIDIxNSwgCi0gICAgMTc4LCAyMzIsIDIyNSwgMSwgMjI3LCA5OSwgMjMyLCAyMjUsIDEsIDE2MCwgMjMwLCAxMDQsIDIxNywgNzEsIDIzMiwgMjI1LCAKLSAgICAxLCAxNjAsIDIzMCwgNDYsIDIyNSwgMTUwLCAyMzIsIDIyNSwgMSwgMTYwLCAyMzAsIDEwNCwgMjQ5LCAxNSwgMjMyLCAyMjUsIAotICAgIDEsIDE2MCwgMjMwLCAxMDQsIDI1MSwgMTI4LCAyMzIsIDIyNSwgMSwgMTYwLCAyMzAsIDEwNCwgMjA1LCAyMzIsIDIyNSwgMSwgCi0gICAgMTYwLCAyMzAsIDEwNCwgMjM1LCAxMTYsIDIzMiwgMjI1LCAyMjUsIDI3LCAyNDksIDE1NywgMjMyLCAyMjUsIDIyNSwgMjcsIAotICAgIDI0MywgMjAwLCAyMTksIDY5LCAzOSwgNCwgMjQ1LCAxNjUsIDM5LCA0LCAyNDUsIDE2MiwgMzksIDQsIDI0MSwgMjA0LCAzOSwgCi0gICAgNCwgMjE0LCAxLCAzOSwgNCwgMjE0LCAwLCAzOSwgNCwgMjI2LCA4NiwgMzksIDQsIDI1MSwgMTkxLCAzOSwgNCwgMjUxLCAKLSAgICAyNDIsIDM5LCA0LCAyMzEsIDE3OSwgMzksIDQsIDIzNCwgMCwgMzksIDQsIDIzMSwgNzMsIDM5LCA0LCAyNDMsIDUxLCAzOSwgCi0gICAgNCwgMjQ0LCAxMTYsIDM5LCA0LCAyMTQsIDIyNywgMzksIDQsIDIxNywgMjE5LCAzOSwgNCwgMjE3LCAxNDcsIDM5LCA0LCAKLSAgICAyNDcsIDIyNCwgMzksIDQsIDI0NywgMjIxLCAzOSwgNCwgMjMzLCA3NCwgMzksIDQsIDIyNCwgMSwgMzksIDQsIDI0OCwgMjgsIAotICAgIDM5LCA0LCAyMjksIDIxOSwgMzksIDQsIDIyMiwgODksIDM5LCA0LCAyMjAsIDI0MSwgMzksIDQsIDIxMiwgODUsIDM5LCA0LCAKLSAgICAyMTIsIDY2LCAzOSwgNCwgMjUwLCAxMTYsIDM5LCA0LCAyMzUsIDEyNSwgMzksIDQsIDIyOSwgNywgMzksIDQsIDIxMywgMzUsIAotICAgIDM5LCA0LCAyMzQsIDE4NywgMzksIDQsIDIyOSwgMTM2LCAzOSwgNCwgMjQzLCAzMSwgMzksIDQsIDIzMSwgMTQ1LCAzOSwgNCwgCi0gICAgMjI5LCAxODQsIDM5LCA0LCAyMjgsIDE2LCAzOSwgNCwgNzIsIDM5LCA0LCAyMzUsIDI1MSwgMzksIDQsIDI0MSwgMTY1LCAKLSAgICAzOSwgNCwgMjQxLCAxNDYsIDM5LCA0LCAyMTMsIDIzNSwgMzksIDQsIDIxMywgMjI2LCAzOSwgNCwgMjI1LCAyNDAsIDM5LCAKLSAgICA0LCAyNTEsIDE4OSwgMzksIDQsIDI1MSwgMTg0LCAzOSwgNCwgMjMxLCAxNzIsIDM5LCA0LCAyMzMsIDI1MywgMzksIDQsIAotICAgIDIzMSwgNzAsIDM5LCA0LCAyNDMsIDQ3LCAzOSwgNCwgMjQ0LCA5MCwgMzksIDQsIDIxNCwgMTU0LCAzOSwgNCwgMjE3LCA3MSwgCi0gICAgMzksIDQsIDIxNywgMTI4LCAzOSwgNCwgMjQ3LCAyMTYsIDM5LCA0LCAyNDcsIDIyMCwgMzksIDQsIDIzMywgMTMsIDM5LCA0LCAKLSAgICAyMjMsIDE4OCwgMzksIDQsIDI0NywgMjExLCAzOSwgNCwgMjI5LCAyMTMsIDM5LCA0LCAyMjAsIDExNywgMzksIDQsIDIyMCwgCi0gICAgMjEyLCAzOSwgNCwgMjEyLCAzNywgMzksIDQsIDIxMiwgNjIsIDM5LCA0LCAyNDksIDI0NCwgMzksIDQsIDIzNSwgMTEwLCAKLSAgICAzOSwgNCwgMjI5LCAwLCAzOSwgNCwgMjEyLCAyNTUsIDM5LCA0LCAyMzQsIDEwMSwgMzksIDQsIDIyOSwgMTI4LCAzOSwgNCwgCi0gICAgMjQyLCAxOTAsIDM5LCA0LCAyMzEsIDQyLCAzOSwgNCwgMjI5LCA2NCwgMzksIDQsIDIyOCwgMTAsIDM5LCA0LCA2MSwgMzksIAotICAgIDQsIDI1NCwgMzIsIDM5LCA0LCAyMjksIDE1NSwgMzksIDQsIDE1OSwgMzksIDQsIDI0MiwgMSwgMzksIDQsIDIxNCwgNDksIAotICAgIDM5LCA0LCAyMTQsIDM5LCAzOSwgNCwgMTkzLCAzOSwgNCwgMjUxLCAxOTUsIDM5LCA0LCAyNTIsIDEwNywgMzksIDQsIDIzMSwgCi0gICAgMTg3LCAzOSwgNCwgMjM0LCA0LCAzOSwgNCwgMjM0LCAzLCAzOSwgNCwgMjMxLCA3NywgMzksIDQsIDI0MywgNTUsIDM5LCA0LCAKLSAgICAyNDQsIDE2NCwgMzksIDQsIDIxNSwgMSwgMzksIDQsIDIxOCwgNTIsIDM5LCA0LCAyMTcsIDE2MSwgMzksIDQsIDI0NywgCi0gICAgMjMyLCAzOSwgNCwgMjQ3LCAyMjMsIDM5LCA0LCAyMzMsIDE1NywgMzksIDQsIDIwMywgMzksIDQsIDI0OCwgMTY0LCAzOSwgCi0gICAgNCwgMjI5LCAyMjgsIDM5LCA0LCAyMjIsIDIwMiwgMzksIDQsIDIyMSwgMjQsIDM5LCA0LCAyMTIsIDEwOSwgMzksIDQsIAotICAgIDIxMiwgNzUsIDM5LCA0LCAyNTAsIDIxOSwgMzksIDQsIDIzNSwgMTM5LCAzOSwgNCwgMjI5LCAxNiwgMzksIDQsIDE4NiwgCi0gICAgMzksIDQsIDE4MSwgMzksIDQsIDIzNCwgMjM5LCAzOSwgNCwgMjI5LCAxNDEsIDM5LCA0LCAyNDMsIDExMCwgMzksIDQsIAotICAgIDE4OCwgMzksIDQsIDIwNSwgMzksIDQsIDIyOCwgMjMsIDM5LCA0LCAyMjcsIDQ5LCAzOSwgNCwgMjI3LCA0NSwgMzksIDQsIAotICAgIDI0MSwgMzksIDM5LCA0LCAyMTMsIDIwMiwgMzksIDQsIDIxMywgMTk4LCAzOSwgNCwgMjI1LCAxMjksIDM5LCA0LCAyNTEsIAotICAgIDE4NywgMzksIDQsIDI1MSwgMTE4LCAzOSwgNCwgMjMxLCAxNjcsIDM5LCA0LCAyMzMsIDI1MSwgMzksIDQsIDIzMSwgNjYsIAotICAgIDM5LCA0LCAyNDMsIDQzLCAzOSwgNCwgMjQ0LCAzLCAzOSwgNCwgMjE0LCAxMDgsIDM5LCA0LCAyMTYsIDIzMCwgMzksIDQsIAotICAgIDIxNywgMTA2LCAzOSwgNCwgMjQ3LCAyMTQsIDM5LCA0LCAyNDcsIDIxOCwgMzksIDQsIDIzMiwgMTgwLCAzOSwgNCwgMjIzLCAKLSAgICA5OSwgMzksIDQsIDI0NywgNzksIDM5LCA0LCAyMjksIDIwMCwgMzksIDQsIDIxOSwgMjI2LCAzOSwgNCwgMjIwLCAxODEsIAotICAgIDM5LCA0LCAyMTIsIDE0LCAzOSwgNCwgMjEyLCA1OSwgMzksIDQsIDI0OSwgMTEzLCAzOSwgNCwgMjM1LCA2MiwgMzksIDQsIAotICAgIDIyOCwgMjQ2LCAzOSwgNCwgMjEyLCAyMjAsIDM5LCA0LCAyMzQsIDE5LCAzOSwgNCwgMjI5LCAxMjYsIDM5LCA0LCAyNDIsIAotICAgIDE0MCwgMzksIDQsIDIzMCwgMjAyLCAzOSwgNCwgMjI4LCAxNzUsIDM5LCA0LCAyMjcsIDI1MSwgMzksIDQsIDY5LCAzOSwgNCwgCi0gICAgMjE1LCAxNjAsIDM5LCA0LCAyNDAsIDIxMiwgMzksIDQsIDI0MCwgMjAyLCAzOSwgNCwgMjEzLCAxODMsIDM5LCA0LCAyMTMsIAotICAgIDE3NywgMzksIDQsIDIyNSwgMzUsIDM5LCA0LCAyNTEsIDE4NiwgMzksIDQsIDI1MSwgNTQsIDM5LCA0LCAyMzEsIDE2NiwgCi0gICAgMzksIDQsIDIzMywgMjQ5LCAzOSwgNCwgMjMxLCA2NSwgMzksIDQsIDI0MywgNDIsIDM5LCA0LCAyNDMsIDIwNSwgMzksIDQsIAotICAgIDIxNCwgOTksIDM5LCA0LCAyMTYsIDgyLCAzOSwgNCwgMjE3LCA5MCwgMzksIDQsIDI0NywgMjEyLCAzOSwgNCwgMjQ3LCAKLSAgICAyMTcsIDM5LCA0LCAyMzIsIDE1NiwgMzksIDQsIDIyMywgNTEsIDM5LCA0LCAyNDYsIDMzLCAzOSwgNCwgMjI5LCAxOTUsIAotICAgIDM5LCA0LCAyMTksIDI3LCAzOSwgNCwgMjIwLCAxNTAsIDM5LCA0LCAyMTIsIDgsIDM5LCA0LCAyMTIsIDU1LCAzOSwgNCwgCi0gICAgMjQ5LCA1MywgMzksIDQsIDIzNSwgNTQsIDM5LCA0LCAyMjgsIDI0MiwgMzksIDQsIDIxMiwgMjAzLCAzOSwgNCwgMjMzLCAKLSAgICAyMzgsIDM5LCA0LCAyMjksIDEyNSwgMzksIDQsIDI0MiwgOTIsIDM5LCA0LCAyMzAsIDE3MiwgMzksIDQsIDIyOCwgOTIsIAotICAgIDM5LCA0LCAyMjcsIDI0NywgMzksIDQsIDc1LCAzOSwgNCwgMjI3LCA2MiwgMzksIDQsIDIyOSwgODYsIDM5LCA0LCAyNDEsIAotICAgIDU0LCAzOSwgNCwgMjQxLCA0MiwgMzksIDQsIDIxMywgMjE0LCAzOSwgNCwgMjEzLCAyMDMsIDM5LCA0LCAyMjUsIDE1MCwgCi0gICAgMzksIDQsIDI1MSwgMTg4LCAzOSwgNCwgMjUxLCAxMjgsIDM5LCA0LCAyMzEsIDE2OCwgMzksIDQsIDIzMywgMjUyLCAzOSwgCi0gICAgNCwgMjMxLCA2OCwgMzksIDQsIDI0MywgNDUsIDM5LCA0LCAyNDMsIDQ0LCAzOSwgNCwgMjQ0LCAxMiwgMzksIDQsIDIxNCwgCi0gICAgMTE5LCAzOSwgNCwgMTA4LCAzOSwgNCwgMjE3LCAxMDksIDM5LCA0LCAyNDcsIDIxNSwgMzksIDQsIDI0NywgMjE5LCAzOSwgCi0gICAgNCwgMjMyLCAyMDgsIDM5LCA0LCAyMjMsIDExMiwgMzksIDQsIDI0NywgOTksIDM5LCA0LCAyMjksIDIwNCwgMzksIDQsIAotICAgIDIxOSwgMjQyLCAzOSwgNCwgMjIwLCAxODcsIDM5LCA0LCAyMTIsIDE2LCAzOSwgNCwgMjEyLCA2MCwgMzksIDQsIDI0OSwgCi0gICAgMTc1LCAzOSwgNCwgMjM1LCA3MSwgMzksIDQsIDIyOCwgMjQ3LCAzOSwgNCwgMjEyLCAyMzUsIDM5LCA0LCAyMzQsIDM3LCAKLSAgICAzOSwgNCwgMjI5LCAxMjcsIDM5LCA0LCAyNDIsIDE1MCwgMzksIDQsIDIzMCwgMjMxLCAzOSwgNCwgMjI4LCAxODUsIDM5LCAKLSAgICA0LCAyMjcsIDI1MywgMzksIDQsIDc0LCAzOSwgNCwgMjQ1LCAxMDgsIDM5LCA0LCAyMjksIDE0NiwgMzksIDQsIDI0MSwgCi0gICAgMjIyLCAzOSwgNCwgMjQxLCAxOTMsIDM5LCA0LCAyMTQsIDYsIDM5LCA0LCAyMTMsIDI1MywgMzksIDQsIDIyNiwgOTYsIDM5LCAKLSAgICA0LCAyNTEsIDE5MiwgMzksIDQsIDI1MSwgMjUxLCAzOSwgNCwgMjMxLCAxODAsIDM5LCA0LCAyMzQsIDEsIDM5LCA0LCAyMzMsIAotICAgIDI1NSwgMzksIDQsIDIzMSwgNzQsIDM5LCA0LCAyNDMsIDUyLCAzOSwgNCwgMjQzLCA1MCwgMzksIDQsIDI0NCwgMTIzLCAzOSwgCi0gICAgNCwgMjE0LCAyMzIsIDM5LCA0LCAyMTcsIDIyOSwgMzksIDQsIDIxNywgMTQ4LCAzOSwgNCwgMjQ3LCAyMjUsIDM5LCA0LCAKLSAgICAyNDcsIDIyMiwgMzksIDQsIDIzMywgODIsIDM5LCA0LCAyMjQsIDIxLCAzOSwgNCwgMjQ4LCA0MSwgMzksIDQsIDIyOSwgCi0gICAgMjIwLCAzOSwgNCwgMjIyLCAxMDAsIDM5LCA0LCAyMjAsIDI0MywgMzksIDQsIDIxMiwgODcsIDM5LCA0LCAyMTIsIDY3LCAKLSAgICAzOSwgNCwgMjUwLCAxMjQsIDM5LCA0LCAyMzUsIDEyNywgMzksIDQsIDIyOSwgOSwgMzksIDQsIDIxMywgMzgsIDM5LCA0LCAKLSAgICAyMzQsIDE4OCwgMzksIDQsIDIyOSwgMTM3LCAzOSwgNCwgMjI5LCAxMzMsIDM5LCA0LCAyNDMsIDM4LCAzOSwgNCwgMjQzLCAKLSAgICAyNywgMzksIDQsIDIzMSwgMTU2LCAzOSwgNCwgMjI5LCAxODcsIDM5LCA0LCAyMjgsIDE3LCAzOSwgNCwgMjI5LCAxNjEsIAotICAgIDM5LCA0LCAyMzMsIDQ2LCAzOSwgMjQ5LCAxNTcsIDM5LCAyNDMsIDIwMCwgMjE5LCA2OSwgMzksIDIyNCwgMTU4LCA3NywgCi0gICAgMzksIDQsIDIyOSwgMjAzLCAyNDQsIDE2NCwgMzksIDQsIDIyOSwgMjAzLCAxODEsIDM5LCA0LCAyMjksIDIwMywgMjE5LCAKLSAgICAyMjYsIDM5LCAxNiwgMjQ0LCAxMTMsIDM5LCAxNiwgMjM0LCAxODYsIDM5LCAxNiwgMjE3LCAzNCwgMzksIDE2LCAyMjksIAotICAgIDM5LCAzOSwgMTYsIDI1MiwgNjYsIDM5LCAxNiwgMjQ0LCAxNjMsIDM5LCAxNiwgMjE4LCA0OSwgMzksIDE2LCAyNDgsIDEyMSwgCi0gICAgMzksIDE2LCAyNDcsIDc4LCAzOSwgMTYsIDIzMywgMjI3LCAzOSwgMTYsIDIxNiwgMjM0LCAzOSwgMTYsIDI0NywgOTgsIDM5LCAKLSAgICAxNiwgMjM1LCA2MywgMzksIDIxLCAyMTIsIDc5LCAzOSwgMjEsIDExNiwgMzksIDIxLCAxMDksIDM5LCAyMSwgMTY2LCAzOSwgCi0gICAgMjEsIDE2MywgMzksIDIxLCAxODAsIDM5LCAyMSwgMTg5LCAzOSwgMjEsIDE5OCwgMzksIDIxLCAxOTUsIDM5LCAyMSwgMjAwLCAKLSAgICAzOSwgNCwgMjI5LCAyMDMsIDE4OCwgMzksIDQsIDIyOSwgMjAzLCAyNDcsIDk5LCAzMywgNiwgMSwgMjEyLCA4MywgMzMsIDMsIAotICAgIDEsIDIxMiwgODMsIDMzLCA2LCAxLCAyNDUsIDI0NSwgMzMsIDMsIDEsIDI0NSwgMjQ1LCAzMywgNiwgMSwgMjIzLCAyMDIsIAotICAgIDI0NSwgMjQ3LCAzMywgMywgMSwgMjIzLCAyMDIsIDI0NSwgMjQ3LCAzMywgNiwgMSwgMjM1LCAxODMsIDMzLCAzLCAxLCAKLSAgICAyMzUsIDE4MywgMzMsIDYsIDEsIDI0NywgMTEzLCAzMywgMywgMSwgMjQ3LCAxMTMsIDMzLCA2LCAxLCAyMzAsIDIxMCwgCi0gICAgMjE1LCAxNzUsIDMzLCAzLCAxLCAyMzAsIDIxMCwgMjE1LCAxNzUsIDMzLCA2LCAxLCAyNTEsIDY0LCAyMjcsIDY3LCAzMywgCi0gICAgMywgMSwgMjUxLCA2NCwgMjI3LCA2NywgMzMsIDYsIDEsIDIyOSwgMTY5LCAyMTMsIDIyLCAzMywgMywgMSwgMjI5LCAxNjksIAotICAgIDIxMywgMjIsIDMzLCA2LCAxLCAyMTMsIDE5LCAyLCAyNTIsIDEwMiwgMjEzLCAyMiwgMzMsIDMsIDEsIDIxMywgMTksIDIsIAotICAgIDI1MiwgMTAyLCAyMTMsIDIyLCAzMywgNiwgMSwgMjM1LCAxODEsIDIxMywgNDksIDMzLCAzLCAxLCAyMzUsIDE4MSwgMjEzLCAKLSAgICA0OSwgMzMsIDYsIDEsIDIyMywgMjAyLCAyMTIsIDIwMywgMzMsIDMsIDEsIDIyMywgMjAyLCAyMTIsIDIwMywgMzMsIDYsIDEsIAotICAgIDIzNSwgMTgxLCA2MSwgMzMsIDMsIDEsIDIzNSwgMTgxLCA2MSwgMzMsIDYsIDEsIDI0OSwgMTkzLCAyMzIsIDIyMSwgMjEyLCAKLSAgICAxNzQsIDMzLCAzLCAxLCAyNDksIDE5MywgMjMyLCAyMjEsIDIxMiwgMTc0LCAzMywgNiwgMSwgMjUxLCAxMzcsIDIxMiwgCi0gICAgMTc0LCAzMywgMywgMSwgMjUxLCAxMzcsIDIxMiwgMTc0LCAzMywgNiwgMSwgMjM1LCAxODEsIDI0OSwgMTkzLCAyMzIsIAotICAgIDIyMSwgMjEyLCAxNzQsIDMzLCAzLCAxLCAyMzUsIDE4MSwgMjQ5LCAxOTMsIDIzMiwgMjIxLCAyMTIsIDE3NCwgMzMsIDYsIAotICAgIDEsIDIxMiwgMjM3LCAzMywgMywgMSwgMjEyLCAyMzcsIDMzLCA2LCAxLCAyMjMsIDIwMiwgMjE2LCAxMzYsIDMzLCAzLCAxLCAKLSAgICAyMjMsIDIwMiwgMjE2LCAxMzYsIDMzLCA2LCAxLCAyMTksIDIzNiwgMjQ4LCA0MSwgMzMsIDMsIDEsIDIxOSwgMjM2LCAyNDgsIAotICAgIDQxLCAzMywgNiwgMSwgMjE5LCAyMzYsIDI0NSwgMTMxLCAzMywgMywgMSwgMjE5LCAyMzYsIDI0NSwgMTMxLCAzMywgNiwgMSwgCi0gICAgMjE5LCAyMzYsIDI0NSwgMTE3LCAzMywgMywgMSwgMjE5LCAyMzYsIDI0NSwgMTE3LCAzMywgNiwgMSwgMjMwLCAyMTQsIDc1LCAKLSAgICAzMywgMywgMSwgMjMwLCAyMTQsIDc1LCAzMywgNiwgMSwgMjUxLCAxNjMsIDc1LCAzMywgMywgMSwgMjUxLCAxNjMsIDc1LCAKLSAgICAzMywgNiwgMSwgNTEsIDIzMCwgMjE0LCA3NSwgMzMsIDMsIDEsIDUxLCAyMzAsIDIxNCwgNzUsIDMzLCAxLCAyMzAsIDE1NiwgCi0gICAgNzUsIDM3LCAzMywgMjE0LCA4NCwgMzcsIDMzLCAyMTcsIDIwMSwgMjMxLCA0LCA1MiwgMzcsIDMzLCAyNDAsIDIwMSwgMjMxLCAKLSAgICA0LCA1MiwgMzcsIDMzLCAyMTcsIDEwMSwgMjMxLCA0LCA1MiwgMjIwLCAyMSwgMjUzLCAxMzIsIDM3LCAzMywgMjM0LCAxOTgsIAotICAgIDM3LCAzMywgMjI2LCAxMDEsIDMzLCAyMzQsIDE5OCwgMzMsIDIyNiwgMTAxLCAzMywgNiwgMSwgMjQ2LCAxLCAzMywgMywgMSwgCi0gICAgMjQ2LCAxLCAzMywgNiwgMSwgMjQ1LCAyMzgsIDMzLCAzLCAxLCAyNDUsIDIzOCwgMzMsIDYsIDEsIDIxMiwgNDUsIDMzLCAzLCAKLSAgICAxLCAyMTIsIDQ1LCAzMywgNiwgMSwgMjUwLCAxNDAsIDMzLCAzLCAxLCAyNTAsIDE0MCwgMzMsIDYsIDEsIDI0NSwgMjM3LCAKLSAgICAzMywgMywgMSwgMjQ1LCAyMzcsIDMzLCA2LCAxLCAyMTcsIDIzMCwgMiwgMjMxLCAzNywgMTAxLCAzMywgMywgMSwgMjE3LCAKLSAgICAyMzAsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDYsIDEsIDIxNiwgNDMsIDMzLCAzLCAxLCAyMTYsIDQzLCAzMywgNiwgMSwgCi0gICAgMjE2LCAxMTksIDMzLCAzLCAxLCAyMTYsIDExOSwgMzMsIDYsIDEsIDIxNiwgMTIzLCAzMywgMywgMSwgMjE2LCAxMjMsIDMzLCAKLSAgICA2LCAxLCAyMTcsIDIzNSwgMzMsIDMsIDEsIDIxNywgMjM1LCAzMywgNiwgMSwgMjQwLCAxOTAsIDMzLCAzLCAxLCAyNDAsIAotICAgIDE5MCwgMzMsIDYsIDEsIDIyMCwgMTMyLCAzMywgMywgMSwgMjIwLCAxMzIsIDIwLCAxLCA2MSwgMjAsIDEsIDE4MSwgMjAsIAotICAgIDEsIDY5LCAyMCwgMSwgMjMzLCAyMzgsIDIwLCAxLCAyNDUsIDE2NSwgMjAsIDEsIDIyNCwgMSwgMjAsIDEsIDIxOCwgMzUsIAotICAgIDIwLCAxLCA3NSwgMjAsIDEsIDIyOCwgMTAsIDIwLCAxLCA3MiwgMjAsIDEsIDIzMywgMTU3LCAyMCwgMSwgMTkzLCAyMCwgMSwgCi0gICAgMjIzLCAxMzYsIDIwLCAxLCAyMjMsIDE4MiwgMjAsIDEsIDIzMywgNzMsIDIwLCAxLCAyMzEsIDE0NCwgMjAsIDEsIDIxOCwgCi0gICAgNDksIDIwLCAxLCAyMjksIDIyNiwgMjAsIDEsIDIyOSwgMTQsIDIwLCAxLCAxODMsIDIwLCAxLCAyMTgsIDIwNSwgMjAsIDEsIAotICAgIDIzMCwgMTcyLCAyMCwgMSwgMjIwLCAyMDcsIDIwLCAxLCAyMjAsIDExNywgMjAsIDEsIDIyMCwgMjE3LCAyMCwgMSwgMjIxLCAKLSAgICA0NCwgMjAsIDEsIDIzMywgMTc3LCAyMCwgMSwgMjM0LCAxNjIsIDIwLCAxLCAyMjgsIDY0LCAyMCwgMSwgMjI4LCA5MiwgMjAsIAotICAgIDEsIDIyOCwgMjQxLCAyMCwgMSwgMjEyLCAyMTcsIDIwLCAxLCAyMjAsIDE1MCwgMjAsIDEsIDIxMiwgMTc4LCAyMCwgMSwgCi0gICAgMTg2LCAyMCwgMSwgMjI4LCAxMjAsIDIwLCAxLCAyMzQsIDE0OCwgMjAsIDEsIDIyNiwgMjcsIDIwLCAxLCAyMjksIDcsIDIwLCAKLSAgICAxLCAyMjgsIDEwMSwgMjAsIDEsIDIyNSwgMzAsIDIwLCAxLCAyMTMsIDE4MCwgMjAsIDEsIDIyNiwgODYsIDIwLCAxLCAyNDQsIAotICAgIDExNiwgMjAsIDEsIDIyMywgNTEsIDIwLCAxLCAyMzIsIDE1NiwgMjAsIDEsIDIzMSwgNDIsIDIwLCAxLCAyMjksIDY0LCAyMCwgCi0gICAgMSwgMjIzLCAyMDQsIDIwLCAxLCAyMjQsIDYxLCAyMCwgMSwgMjM0LCAxNzEsIDIwLCAxLCAyMjksIDkzLCAyMCwgMSwgMjI5LCAKLSAgICAxNDEsIDIwLCAxLCAyMjksIDE1OSwgMjAsIDEsIDIyMCwgMTg3LCAyMCwgMSwgMjI1LCAzMywgMjAsIDEsIDI0MywgMjA1LCAKLSAgICAyMCwgMSwgMjQ0LCA2LCAyMCwgMSwgMjE0LCA0OSwgMjAsIDEsIDIwNSwgMjAsIDEsIDIzMywgMTMsIDIwLCAxLCAyMjUsIAotICAgIDI0MCwgMjAsIDEsIDIzMiwgMTc0LCAyMCwgMSwgMjM0LCAzNywgMjAsIDEsIDIzMSwgMTc3LCAyMCwgMSwgMjIzLCAyMzMsIAotICAgIDIwLCAxLCAyMzEsIDEyMiwgMjAsIDEsIDE4OCwgMjAsIDEsIDIxNywgNzEsIDIwLCAxLCAyMzQsIDEwMSwgMjAsIDEsIDIzMCwgCi0gICAgMjMxLCAyMCwgMSwgMjMxLCAxODUsIDIwLCAxLCAyMTcsIDE4MywgMjAsIDEsIDIzNCwgNCwgMjAsIDEsIDIxNywgMjAwLCAKLSAgICAyMCwgMSwgMjI4LCA5MywgMjAsIDEsIDIyMiwgMTY2LCAyMCwgMSwgMjQ0LCAxNjAsIDIwLCAxLCAyMzQsIDYsIDIwLCAxLCAKLSAgICAyMzQsIDMzLCAyMCwgMzcsIDE1MiwgMjM0LCAxNCwgMjAsIDM3LCAxNTIsIDIxNiwgNzQsIDIwLCAyMjksIDEzLCAyMCwgCi0gICAgMjQzLCAyMDAsIDIxOSwgNjksIDIwLCAyNDksIDE2NCwgMjAsIDI0OSwgMTU3LCAyMCwgMjIxLCA3MCwgMjAsIDIyNCwgMTU4LCAKLSAgICA3NywgNTksIDEsIDI1MCwgMzMsIDE2MCwgMjEyLCAyNDUsIDIyNSwgMTkzLCA1OSwgMSwgMjUwLCAzMywgMTYwLCAyMTMsIAotICAgIDU5LCAyMjUsIDE5MywgNTksIDEsIDI1MCwgMzMsIDE2MCwgMjEyLCAyNDUsIDIyMSwgNywgNTksIDEsIDI1MCwgMzMsIDE2MCwgCi0gICAgMjEzLCA1OSwgMjIxLCA3LCA1OSwgMSwgMjUwLCAzMywgMTYwLCAyMTIsIDI0NSwgMjI0LCAxNzUsIDU5LCAxLCAyNTAsIDMzLCAKLSAgICAxNjAsIDIxMywgNTksIDIyNCwgMTc1LCA1OSwgMSwgMjUwLCAzMywgMTYwLCAyMTIsIDI0NSwgMjIzLCA1MSwgNTksIDEsIAotICAgIDI1MCwgMzMsIDE2MCwgMjEzLCA1OSwgMjIzLCA1MSwgNTksIDEsIDI0NCwgMjQ0LCAyNDYsIDcyLCAxNjAsIDEzNCwgNTksIAotICAgIDEsIDEyNCwgMjQ2LCA3MiwgMTYwLCAxMzQsIDU5LCAxLCAyMzEsIDM4LCAyNDYsIDcyLCAxNjAsIDEzNCwgNTksIDEsIDExNSwgCi0gICAgMjQ2LCA3MiwgMTYwLCAxMzQsIDU5LCAxLCAyNDQsIDI0MywgMjQ2LCA3MiwgMTYwLCAxMzQsIDU5LCAxLCAyNDQsIDI0NCwgCi0gICAgMjQ2LCA3MiwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAxMjQsIDI0NiwgNzIsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgCi0gICAgMSwgMjMxLCAzOCwgMjQ2LCA3MiwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAxMTUsIDI0NiwgNzIsIDIzMywgNjMsIAotICAgIDE2MCwgMTM0LCA1OSwgMSwgMjQ0LCAyNDMsIDI0NiwgNzIsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMjQ0LCAyNDQsIAotICAgIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMTI0LCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDIzMSwgMzgsIDIzMywgCi0gICAgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMTE1LCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQzLCAyMzMsIDYzLCAKLSAgICAxNjAsIDEzNCwgNTksIDEsIDYyLCA3MSwgMTM0LCA1OSwgMSwgNjIsIDIyMCwgMjMsIDU5LCAxLCA2MiwgMTk5LCAxMzQsIAotICAgIDU5LCAxLCAyMzIsIDE2MywgNDYsIDI0OSwgMTAwLCAyNTQsIDE4LCA1OSwgMSwgMjI0LCA0OCwgMTE0LCA2OCwgNTksIDEsIAotICAgIDIyNCwgNDgsIDExOSwgNjgsIDU5LCAxLCAyMjQsIDQ4LCAyNDQsIDI1NCwgNzcsIDU5LCAxLCAyMjQsIDQ4LCAyMzUsIDE5MSwgCi0gICAgMjQ0LCAyNTQsIDc3LCA1OSwgMSwgMTE1LCAyMzUsIDE5MSwgMjQ0LCAyNTQsIDc3LCA1OSwgMSwgMjE5LCA1MSwgMjQsIAotICAgIDEyNCwgMjE2LCAyNDEsIDU5LCAxLCAyMTksIDUxLCAyNCwgMTE1LCAyMTYsIDI0MSwgNywgNiwgMSwgMjQ1LCAxNTYsIDI1NCwgCi0gICAgNzgsIDcsIDMsIDEsIDI0NSwgMTU2LCAyNTQsIDc4LCA3LCA2LCAxLCAyNDUsIDE1NiwgMjU0LCAxMDMsIDcsIDMsIDEsIAotICAgIDI0NSwgMTU2LCAyNTQsIDEwMywgNywgNiwgMSwgMjQxLCAxOTEsIDcsIDMsIDEsIDI0MSwgMTkxLCA3LCA2LCAxLCAyMTYsIAotICAgIDYsIDcsIDMsIDEsIDIxNiwgNiwgNywgNiwgMSwgMjE2LCAxODcsIDcsIDMsIDEsIDIxNiwgMTg3LCA3LCA2LCAxLCAyNDksIAotICAgIDUxLCA3LCAzLCAxLCAyNDksIDUxLCA3LCA2LCAxLCAyNDksIDUyLCAyLCAyNDksIDE1NywgNywgMywgMSwgMjQ5LCA1MiwgMiwgCi0gICAgMjQ5LCAxNTcsIDcsIDEsIDMsIDYsIDI0NCwgMjMwLCA3LCAxLCAzLCA2LCAxOTcsIDcsIDYsIDEsIDI1NCwgMjMyLCA3LCAzLCAKLSAgICAxLCAyNTQsIDIzMiwgNywgNiwgMSwgMjUzLCAyNDAsIDcsIDMsIDEsIDI1MywgMjQwLCA3LCA2LCAxLCAyNTMsIDEwOCwgNywgCi0gICAgMywgMSwgMjUzLCAxMDgsIDcsIDYsIDEsIDI1MywgOTIsIDcsIDMsIDEsIDI1MywgOTIsIDcsIDYsIDEsIDI1MywgOTMsIDIsIAotICAgIDE5OSwgMTM0LCA3LCAzLCAxLCAyNTMsIDkzLCAyLCAxOTksIDEzNCwgNywgNiwgMSwgMjUzLCA4MywgNywgMywgMSwgMjUzLCAKLSAgICA4MywgNywgNiwgMSwgMjIzLCAyMDIsIDI1MCwgMjUzLCAyLCAyNDcsIDc0LCA3LCAzLCAxLCAyMjMsIDIwMiwgMjUwLCAyNTMsIAotICAgIDIsIDI0NywgNzQsIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDkwLCA3LCAzLCAxLCAyMzUsIDI4LCAyLCA5MCwgNywgNiwgMSwgCi0gICAgMjM1LCAyOCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAyNDcsIDIwNywgOTAsIDcsIDYsIDEsIAotICAgIDIzNSwgMjgsIDIsIDIxOSwgNDUsIDI0LCAyNDcsIDIwNywgOTAsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDIxOSwgNDUsIDI0LCAKLSAgICAyNDcsIDIwNywgOTAsIDcsIDYsIDEsIDI1MSwgNjMsIDE1MCwgNywgMywgMSwgMjUxLCA2MywgMTUwLCA3LCA2LCAxLCAyMzMsIAotICAgIDE3MSwgMiwgMTI0LCA5MCwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDEyNCwgOTAsIDcsIDYsIDEsIDE1NywgMiwgMTg0LCAKLSAgICAyMTksIDQ1LCAyMjYsIDI0NCwgNywgMywgMSwgMTU3LCAyLCAxODQsIDIxOSwgNDUsIDIyNiwgMjQ0LCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDIzMiwgMTc3LCA3LCAzLCAxLCAxNTcsIDIsIDIzMiwgMTc3LCA3LCA2LCAxLCAyMjcsIDQ5LCA3LCAzLCAxLCAyMjcsIAotICAgIDQ5LCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgMjE5LCA0NSwgMjE3LCA5MywgMjQ3LCAyNDYsIDcsIDMsIDEsIDIyNiwgMjMwLCAKLSAgICAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgNywgNiwgMSwgMjI2LCAyMzAsIDIsIDI0NCwgMjIsIDcsIDMsIDEsIAotICAgIDIyNiwgMjMwLCAyLCAyNDQsIDIyLCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgMjE5LCAxNjEsIDIxOCwgMjcsIDcsIDMsIDEsIAotICAgIDIyNiwgMjMwLCAyLCAyMTksIDE2MSwgMjE4LCAyNywgNywgNiwgMSwgMjI0LCAyNDEsIDIsIDIxOSwgNDUsIDIxNywgOTMsIAotICAgIDI0NywgMjQ2LCA3LCAzLCAxLCAyMjQsIDI0MSwgMiwgMjE5LCA0NSwgMjE3LCA5MywgMjQ3LCAyNDYsIDcsIDYsIDEsIDIyNCwgCi0gICAgMjQxLCAyLCAyNDcsIDIwNywgOTAsIDcsIDMsIDEsIDIyNCwgMjQxLCAyLCAyNDcsIDIwNywgOTAsIDcsIDYsIDEsIDIyNCwgCi0gICAgMTEzLCAyMjMsIDg4LCA3LCAzLCAxLCAyMjQsIDExMywgMjIzLCA4OCwgNywgNiwgMSwgMjIzLCA0MSwgMjIzLCA4OCwgNywgCi0gICAgMywgMSwgMjIzLCA0MSwgMjIzLCA4OCwgNywgNiwgMSwgMjE1LCA4MCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCAzLCAxLCAyMTUsIAotICAgIDgwLCAyLCAyNDcsIDIwNywgOTAsIDcsIDYsIDEsIDIxNCwgOTAsIDcsIDMsIDEsIDIxNCwgOTAsIDcsIDYsIDEsIDIxNCwgCi0gICAgMTI2LCAyMTIsIDE1MiwgNywgMywgMSwgMjE0LCAxMjYsIDIxMiwgMTUyLCA3LCA2LCAxLCAyMTcsIDEwNSwgMiwgOTAsIDcsIAotICAgIDMsIDEsIDIxNywgMTA1LCAyLCA5MCwgNywgNiwgMSwgMjE3LCAxMDUsIDIsIDIxOSwgNDUsIDIxNywgOTMsIDI0NywgMjQ2LCAKLSAgICA3LCAzLCAxLCAyMTcsIDEwNSwgMiwgMjE5LCA0NSwgMjE3LCA5MywgMjQ3LCAyNDYsIDcsIDYsIDEsIDIxNCwgMjIyLCA3LCAKLSAgICAzLCAxLCAyMTQsIDIyMiwgNywgNiwgMSwgMjQ1LCAzMCwgNywgMywgMSwgMjQ1LCAzMCwgNywgNiwgMSwgMjM1LCAxNjksIDcsIAotICAgIDMsIDEsIDIzNSwgMTY5LCA3LCA2LCAxLCAyNDksIDE0NiwgNywgMywgMSwgMjQ5LCAxNDYsIDU5LCAxLCAyMTUsIDEwNCwgNywgCi0gICAgMywgMSwgMjQ2LCAyNCwgNywgMywgMSwgMjMyLCAxNDIsIDcsIDMsIDEsIDIzMCwgMTUwLCA3LCAzLCAxLCAyMjgsIDU3LCA3LCAKLSAgICAzLCAxLCAyMjMsIDQwLCA3LCAxLCAzLCA2LCAyMjMsIDQwLCA3LCAzLCAxLCAyMTYsIDcyLCA3LCAzLCAxLCAyMTUsIDE2NywgCi0gICAgNywgNiwgMSwgMjM1LCAyMTAsIDI0OSwgMywgNywgMywgMSwgMjM1LCAyMTAsIDI0OSwgMywgNywgNiwgMSwgMjM1LCAyMTAsIAotICAgIDI0NCwgMjMwLCA3LCAzLCAxLCAyMzUsIDIxMCwgMjQ0LCAyMzAsIDcsIDYsIDEsIDIzNSwgMjEwLCAyNDMsIDE3NywgNywgNiwgCi0gICAgMSwgMjE2LCA1OCwgMjM1LCAyMTAsIDI0MywgMTc3LCA3LCAzLCAxLCAyMTYsIDU4LCAyMzUsIDIxMCwgMjQzLCAxNzcsIDcsIAotICAgIDYsIDEsIDIxNiwgNTgsIDE1MCwgNywgMywgMSwgMjE2LCA1OCwgMTUwLCA3LCA2LCAxLCAyMzUsIDIxMCwgMTQ5LCA3LCAzLCAKLSAgICAxLCAyMzUsIDIxMCwgMTQ5LCA3LCA2LCAxLCAyMzUsIDIxMCwgMTk3LCA3LCAzLCAxLCAyMzUsIDIxMCwgMTk3LCA3LCA2LCAKLSAgICAxLCAyMzUsIDIxMCwgMjE4LCA5OSwgNywgMywgMSwgMjM1LCAyMTAsIDIxOCwgOTksIDU5LCAxLCAxMTUsIDI0OSwgMjI0LCAKLSAgICAyNTQsIDE3NCwgNTksIDEsIDI0OSwgMTY0LCA1OSwgMSwgMjIwLCAxNzUsIDI0NSwgNjEsIDUyLCA3LCA2LCAxLCAyMjIsIAotICAgIDE3MCwgNywgMywgMSwgMjIyLCAxNzAsIDcsIDYsIDEsIDIxNiwgNTgsIDI0MiwgNDEsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAKLSAgICAyMjMsIDIwNywgMjQxLCAzOCwgMjQsIDI1MSwgMjE4LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAyNDcsIDI0NiwgNywgMywgMSwgCi0gICAgMjMwLCA5OCwgMiwgMjQ3LCAyNDYsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAyMjcsIDExMiwgOTAsIDcsIDMsIDEsIDI0MywgCi0gICAgMTc4LCAyLCAyMjcsIDExMiwgOTAsIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDIyNywgMTEyLCA5MCwgNywgMywgMSwgMjM1LCAKLSAgICAyOCwgMiwgMjI3LCAxMTIsIDkwLCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAyMjcsIDExMiwgOTAsIDcsIDMsIDEsIDIzMCwgOTgsIAotICAgIDIsIDIyNywgMTEyLCA5MCwgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDIyNywgMTEyLCA5MCwgNywgMywgMSwgMjI0LCAxMTMsIAotICAgIDIsIDIyNywgMTEyLCA5MCwgNywgNiwgMSwgMjIzLCA0LCAyLCAyMjcsIDExMiwgOTAsIDcsIDMsIDEsIDIyMywgNCwgMiwgCi0gICAgMjI3LCAxMTIsIDkwLCA3LCAxLCAzLCA2LCAyMTYsIDU4LCAxODMsIDcsIDI0NSwgNjYsIDEsIDIyMywgMjAyLCAyNDQsIAotICAgIDIzMCwgNywgMjQ1LCA2NiwgMSwgMjIzLCAyMDIsIDIyNiwgMjI5LCA3LCAyNDUsIDY2LCAxLCAyMzUsIDE5MSwgMTgzLCA3LCAKLSAgICAyNDUsIDY2LCAxLCAyNDAsIDE0NiwgMjMyLCAxODIsIDcsIDI0NSwgNjYsIDEsIDI1MywgMTkzLCAxODMsIDIxOCwgMTc1LCAKLSAgICAyMzAsIDMyLCAxLCA2MSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDcyLCAyMTgsIDE3NSwgMjMwLCAzMiwgNSwgMjQ2LCAzLCAKLSAgICAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgNjksIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCA3NCwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIAotICAgIDc1LCAyMTgsIDE3NSwgMjMwLCAzMiwgNSwgMjQxLCAyMzYsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMzQsIDM3LCAyMTgsIAotICAgIDE3NSwgMjMwLCAzMiwgMSwgMjM0LCAxMTMsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNDIsIDE1MCwgMjE4LCAxNzUsIDIzMCwgCi0gICAgMzIsIDEsIDI0MiwgMjAwLCAyMTgsIDE3NSwgMjMwLCAzMiwgNSwgMjUzLCAyNDIsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAKLSAgICAyNDksIDE3NSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI1MCwgMjMsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMzUsIDcxLCAKLSAgICAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjM1LCAxMTEsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMTYsIDk1LCAyMTgsIDE3NSwgCi0gICAgMjMwLCAzMiwgMSwgMjE2LCAxMDAsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNDgsIDU2LCAyMTgsIDE3NSwgMjMwLCAzMiwgCi0gICAgMSwgMjQ4LCA2NSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDEwOCwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIxNywgMTA5LCAKLSAgICAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjQ3LCA5OSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI0NywgMjE1LCAyMTgsIDE3NSwgCi0gICAgMjMwLCAzMiwgMSwgMjI4LCAxODUsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMjUsIDE1MCwgMjE4LCAxNzUsIDIzMCwgMzIsIAotICAgIDEsIDIyNSwgMjUzLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjUxLCAxMjgsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNTEsIAotICAgIDE4OCwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIzMCwgMjMxLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjIzLCAxMTIsIDIxOCwgCi0gICAgMTc1LCAyMzAsIDMyLCAxLCAyMzIsIDIwOCwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIyMywgNzMsIDIxOCwgMTc1LCAyMzAsIAotICAgIDMyLCAxLCAyMTksIDI0MiwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI0MSwgNTQsIDIxOCwgMTc1LCAyMzAsIDMyLCAzMCwgNSwgCi0gICAgNjEsIDIxOCwgMTc1LCAyMzAsIDMyLCAzMCwgNSwgNzIsIDIxOCwgMTc1LCAyMzAsIDMyLCAzMCwgNSwgNjksIDIxOCwgMTc1LCAKLSAgICAyMzAsIDMyLCAzMCwgNSwgNzQsIDIxOCwgMTc1LCAyMzAsIDMyLCAzMCwgNSwgMjI3LCA0OSwgMjE4LCAxNzUsIDIzMCwgMzIsIAotICAgIDIyNSwgMTQ2LCAyMzEsIDIyMSwgMjE4LCAxNzUsIDIzMCwgMzIsIDIyNSwgMTQ2LCAyMzEsIDIyMCwgMjE4LCAxNzUsIDIzMCwgCi0gICAgMzIsIDIyNSwgMTQ2LCAyMzEsIDIxOSwgMjE4LCAxNzUsIDIzMCwgMzIsIDIyNSwgMTQ2LCAyMzEsIDIxOCwgMjI4LCAxNjcsIAotICAgIDIzNSwgMjM3LCAyNDMsIDIyOCwgMTIyLCAyMjQsIDE2NiwgMjI4LCAxNjcsIDIzNSwgMjM3LCAyNDMsIDIyOCwgMTIyLCAKLSAgICAyNDIsIDksIDIyOCwgMTY3LCAyMzUsIDIzNywgMjQzLCAyMjgsIDEzMywgMjI0LCAxNjQsIDIyOCwgMTY3LCAyMzUsIDIzNywgCi0gICAgMjQzLCAyMjgsIDEyMiwgMjIwLCA0NSwgMjI4LCAxNjcsIDIzNSwgMjM3LCAyNDMsIDIyOCwgMTIyLCAyNDUsIDE0NSwgMjI4LCAKLSAgICAxNjcsIDIzNSwgMjM3LCAyNDMsIDIyOCwgMTMzLCAyMjAsIDQ0LCAyMjgsIDE2NywgMjM1LCAyMzcsIDIyNCwgMTY3LCA3NywgCi0gICAgMjI4LCAxNjcsIDIzNSwgMjM3LCAyMjUsIDE3MiwgNzcsIDIyOCwgMTY3LCAyMzUsIDIzNywgMjIzLCAyOSwgNzcsIDIyOCwgCi0gICAgMTY3LCAyMzUsIDIzNywgMjI0LCAxNjgsIDc3LCAyMjYsIDIwLCAxLCAxODEsIDIyNiwgMjAsIDEsIDIzNCwgMTM4LCAyMjYsIAotICAgIDIwLCAxLCAyNDMsIDExMCwgMjI2LCAyMCwgMSwgMjI5LCAxNTksIDIyNiwgMjAsIDEsIDI1MCwgMjE5LCAyMjYsIDIwLCAxLCAKLSAgICAyNTAsIDkyLCAyMjYsIDIwLCAxLCAyMzUsIDEzOSwgMjI2LCAyMCwgMSwgMjI4LCAyMywgMjI2LCAyMCwgMSwgMjE4LCA1MiwgCi0gICAgMjI2LCAyMCwgMSwgMjE3LCAxNjEsIDIyNiwgMjAsIDEsIDI0OCwgMTY0LCAyMjYsIDIwLCAxLCAyMDUsIDIyNiwgMjAsIDEsIAotICAgIDE5MywgMjI2LCAyMCwgMSwgMjI2LCAyMywgMjI2LCAyMCwgMSwgMjUyLCAxMDcsIDIyNiwgMjAsIDEsIDE4OCwgMjI2LCAyMCwgCi0gICAgMSwgMjE2LCAxNDEsIDIyNiwgMjAsIDEsIDIxNiwgMTMzLCAyMjYsIDIwLCAxLCAyNDUsIDI0OSwgMjI2LCAyMCwgMSwgMjE0LCAKLSAgICA0OSwgMjI2LCAyMCwgMSwgMjEyLCA3NSwgMjI2LCAyMCwgMSwgMjEyLCAxMDksIDIyNiwgMjAsIDEsIDMsIDYxLCAyMjYsIAotICAgIDIwLCAxLCAxODYsIDIyNiwgMjAsIDEsIDIwMywgMjI2LCAyMCwgMSwgMjMzLCAxNTcsIDIyNiwgMjAsIDEsIDIyMSwgMjQsIAotICAgIDIyNiwgMjAsIDEsIDIyMiwgMjAyLCAyMjYsIDIwLCAxLCAxNTksIDIyNiwgMjAsIDEsIDYxLCAyMjYsIDIwLCAxLCA3MiwgCi0gICAgMjI2LCAyMCwgMSwgNjksIDIyNiwgMjAsIDEsIDc0LCAyMjYsIDIwLCAxLCA3NSwgMjI2LCAyMCwgMSwgMjI0LCAyMzIsIAotICAgIDIyNiwgMjAsIDEsIDIxMywgMTUzLCAyMjYsIDIwLCAxLCAyNDQsIDE2NCwgMjI2LCAyMCwgMSwgMjQzLCA1LCAyMjYsIDIwLCAKLSAgICAxLCAyNDUsIDE2NSwgMjI2LCAyMCwgMjE5LCAxOCwgMSwgMjE0LCA0OSwgMjI2LCAyMCwgMjE5LCAxOCwgMSwgMTg2LCAyMjYsIAotICAgIDIwLCAxLCAyMTYsIDExNSwgMjI2LCAyMCwgMSwgMjE2LCAxMDUsIDIyNiwgMjAsIDEsIDI0OCwgODYsIDIyNiwgMjAsIDEsIAotICAgIDIyOCwgMTk4LCAyMjYsIDIwLCAxLCAyNTQsIDUwLCAxODYsIDIyNiwgMjAsIDEsIDIxNCwgMTE1LCAyMjEsIDI0LCAyMjYsIAotICAgIDIwLCAxLCAyMTQsIDExNiwgMTU5LCAyMjYsIDIwLCAxLCAyNTMsIDEzOCwgMjQ0LCAxNjQsIDIyNiwgMjAsIDIxOSwgMTgsIAotICAgIDEsIDIwMywgMjI2LCAyMCwgMjE4LCAyMjUsIDEsIDIwMywgMjI2LCAyMCwgMSwgMjUwLCAxODcsIDIyNiwgMjAsIDIyMCwgCi0gICAgODEsIDI0MSwgMjIwLCA3NywgMjI2LCAyMCwgNTEsIDI0MSwgMjIwLCA3NywgMjI2LCAyMCwgMTUyLCAyMjEsIDE3LCAyMjYsIAotICAgIDIwLCAxNTIsIDUxLCAyMjEsIDE3LCAxNjksIDUsIDI1MywgMjQyLCAxNjksIDUsIDIxNCwgMTI4LCAxNjksIDEsIDYxLCAKLSAgICAxNjksIDEsIDI1NCwgMjMyLCAxNjksIDEsIDcyLCAxNjksIDEsIDIzNiwgMjgsIDE2OSwgMSwgNjksIDE2OSwgMSwgMjE1LCAKLSAgICA5MiwgMTY5LCAxLCAxNjEsIDE0OSwgMTY5LCAxLCAxNjEsIDIyMywgODIsIDE2OSwgMSwgMTYxLCAxNTAsIDE2OSwgMSwgCi0gICAgMTYxLCAyMzIsIDIxNCwgMTY5LCAxLCA3NCwgMTY5LCAxLCAyNDUsIDE2NSwgMTY5LCAxLCAyNTQsIDEwOCwgMTY5LCAxLCAKLSAgICA3NSwgMTY5LCAxLCAyMjcsIDQ5LCAxNjksIDEsIDI1MywgMTA4LCAxNjksIDEsIDE4MSwgMTY5LCAxLCAyMzQsIDEzOCwgCi0gICAgMTY5LCAxLCAyNDMsIDExMCwgMTY5LCAxLCAyNDIsIDIyNSwgMTY5LCAxLCAyMjksIDE1OSwgMTY5LCAxLCAyNTAsIDIxOSwgCi0gICAgMTY5LCAxLCAyNTAsIDkyLCAxNjksIDEsIDIzNSwgMTM5LCAxNjksIDEsIDIzNSwgMTE1LCAxNjksIDEsIDIyOCwgMjMsIAotICAgIDE2OSwgMSwgMjE2LCAxMTUsIDE2OSwgMSwgMjE2LCAxMDUsIDE2OSwgMSwgMjQ4LCA4NiwgMTY5LCAxLCAyNDgsIDcwLCAKLSAgICAxNjksIDEsIDIyOCwgMTk4LCAxNjksIDEsIDIxOCwgNTIsIDE2OSwgMSwgMjE3LCAxNjEsIDE2OSwgMSwgMjQ4LCAxNjQsIAotICAgIDE2OSwgMSwgMjQ3LCAyMzIsIDE2OSwgMSwgMjA1LCAxNjksIDEsIDE5MywgMTY5LCAxLCAyMjYsIDIzLCAxNjksIDEsIDI1MiwgCi0gICAgMTA3LCAxNjksIDEsIDI1MSwgMTk1LCAxNjksIDEsIDE4OCwgMTY5LCAxLCAxODYsIDE2OSwgMSwgMjAzLCAxNjksIDEsIAotICAgIDIzMywgMTU3LCAxNjksIDEsIDIxNSwgMSwgMTY5LCAxLCAyMjEsIDI0LCAxNjksIDEsIDIxOSwgMTU3LCAxNjksIDEsIDIyMiwgCi0gICAgMjAyLCAxNjksIDEsIDE1OSwgMTY5LCAxLCAyMzIsIDIxMywgMTY5LCAyNDksIDEzMywgNSwgMjQyLCAyNSwgMTY5LCAzMCwgCi0gICAgNSwgMjU0LCAyMzIsIDE2OSwgMzAsIDUsIDcyLCAxNjksIDMwLCA1LCAyMzYsIDI4LCAxNjksIDMwLCA1LCA2OSwgMTY5LCAKLSAgICAzMCwgNSwgMjE1LCA5MiwgMTY5LCAzMCwgNSwgMTYxLCAxNDksIDE2OSwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgMTY5LCAzMCwgCi0gICAgNSwgMTYxLCAxNTAsIDE2OSwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDE2OSwgMzAsIDUsIDc0LCAxNjksIDMwLCA1LCAyNDUsIAotICAgIDE2NSwgMTY5LCAzMCwgNSwgMjU0LCAxMDgsIDE2OSwgMzAsIDUsIDc1LCAxNjksIDMwLCA1LCAyMjcsIDQ5LCAxNjksIDMwLCAKLSAgICA1LCAyNTMsIDEwOCwgMTY5LCA1LCAyMTQsIDEzMywgMTY5LCAyNDgsIDEyMywgMTY5LCA1MSwgMjQ4LCAxMjMsIDE2OSwgMjEsIAotICAgIDIxMiwgNzksIDE2OSwgMjEsIDExNiwgMTY5LCAyMSwgMTA5LCAxNjksIDIxLCAxNjYsIDE2OSwgMjEsIDE2MywgMTY5LCAyMSwgCi0gICAgMTgwLCAxNjksIDIxLCAxODksIDE2OSwgMjEsIDE5OCwgMTY5LCAyMSwgMTk1LCAxNjksIDIxLCAyMDAsIDM3LCA4MiwgMjEsIAotICAgIDIxMiwgNzksIDM3LCA4MiwgMjEsIDExNiwgMzcsIDgyLCAyMSwgMTA5LCAzNywgODIsIDIxLCAxNjYsIDM3LCA4MiwgMjEsIAotICAgIDE2MywgMzcsIDgyLCAyMSwgMTgwLCAzNywgODIsIDIxLCAxODksIDM3LCA4MiwgMjEsIDE5OCwgMzcsIDgyLCAyMSwgMTk1LCAKLSAgICAzNywgODIsIDIxLCAyMDAsIDM3LCA4MiwgMSwgNjEsIDM3LCA4MiwgMSwgNjksIDM3LCA4MiwgMSwgMTgxLCAzNywgODIsIDEsIAotICAgIDIwNSwgMzcsIDgyLCAxLCAxOTMsIDM3LCA4MiwgMSwgMjAzLCAzNywgODIsIDEsIDIxNCwgMTU0LCAzNywgODIsIDUsIDI1MywgCi0gICAgOTEsIDgyLCA1LCAyMTksIDIwNSwgMjUwLCAxODcsIDgyLCA1LCAyNTAsIDE4OCwgMjE0LCAxMzMsIDgyLCA1LCA1MSwgMjUwLCAKLSAgICAxODgsIDIxNCwgMTMzLCA4MiwgNSwgMjUwLCAxODgsIDEwOSwgODIsIDUsIDI1MCwgMTg4LCAxNjYsIDgyLCA1LCAyNTAsIAotICAgIDE4OCwgMjUzLCA5MSwgODIsIDUsIDIyNSwgMTEsIDgyLCAyNDMsIDc2LCAyNDQsIDcyLCA4MiwgMjUwLCAxNzAsIDgyLCAKLSAgICAyNDEsIDIxNCwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAyMTIsIDc5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDExNiwgCi0gICAgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAxMDksIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMTY2LCAyMzQsIDE5NCwgMjMzLCAKLSAgICAxNCwgMjEsIDE2MywgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAxODAsIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMTg5LCAyMzQsIAotICAgIDE5NCwgMjMzLCAxNCwgMjEsIDE5OCwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAxOTUsIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgCi0gICAgMjAwLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMTgxLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjM0LCAxMzgsIDIzNCwgMTk0LCAKLSAgICAyMzMsIDE0LCAxLCAyNDMsIDExMCwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyOSwgMTU5LCAyMzQsIDE5NCwgMjMzLCAxNCwgCi0gICAgMSwgMjIyLCAyMDIsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMjEsIDI0LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjEyLCAKLSAgICAxMDksIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMjgsIDIzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjE4LCA1MiwgMjM0LCAKLSAgICAxOTQsIDIzMywgMTQsIDEsIDI0MCwgMjE0LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjA1LCAyMzQsIDE5NCwgMjMzLCAxNCwgCi0gICAgMSwgMTkzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjI2LCAyMywgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDE4OCwgMjM0LCAKLSAgICAxOTQsIDIzMywgMTQsIDEsIDI0OCwgMTY0LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjUyLCAxMDcsIDIzNCwgMTk0LCAyMzMsIAotICAgIDE0LCAxLCAyMDMsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAxODYsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMzMsIDE1NywgCi0gICAgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIxNCwgNDksIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMTcsIDE2MSwgMjM0LCAxOTQsIAotICAgIDIzMywgMTQsIDEsIDE1OSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIxNSwgMSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDI1MCwgCi0gICAgMjE5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgNjEsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMjcsIDk5LCAyMzQsIDE5NCwgCi0gICAgMjMzLCAxNCwgMSwgNzIsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMjcsIDQ5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMzAsIAotICAgIDIxNSwgMTgzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMzAsIDc0LCAyMzQsIDE5NCwgMjMzLCAxNCwgMzAsIDY5LCAyMzQsIDE5NCwgCi0gICAgMjMzLCAxNCwgMzAsIDI0NSwgMTY1LCAyMzQsIDE5NCwgMjMzLCAxNCwgMzAsIDc1LCAyMzQsIDE5NCwgMjMzLCAxNCwgMTYwLCAKLSAgICAyMjUsIDE2MywgMjM0LCAxOTQsIDIzMywgMTQsIDE2MCwgMjUwLCAyMDAsIDIzNCwgMTk0LCAyMzMsIDE0LCAxNjAsIDI1MCwgCi0gICAgMjAxLCAyMjUsIDE2MywgMjM0LCAxOTQsIDIzMywgMTQsIDUsIDI0OSwgMjAsIDIzNCwgMTk0LCAyMzMsIDE0LCA1LCAyMjAsIAotICAgIDEyNSwgMjIzLCAyNDMsIDEsIDE4MSwgMjIzLCAyNDMsIDEsIDI0MywgMTEwLCAyMjMsIDI0MywgMSwgMjI5LCAxNTksIDIyMywgCi0gICAgMjQzLCAxLCAyMTgsIDUyLCAyMjMsIDI0MywgMSwgMjQ4LCAxNjQsIDIyMywgMjQzLCAxLCAyMDUsIDIyMywgMjQzLCAxLCAKLSAgICAxOTMsIDIyMywgMjQzLCAxLCAyNTIsIDEwNywgMjIzLCAyNDMsIDEsIDE4OCwgMjIzLCAyNDMsIDEsIDI1MCwgMjE5LCAyMjMsIAotICAgIDI0MywgMSwgMjM1LCAxMzksIDIyMywgMjQzLCAxLCAyMjgsIDIzLCAyMjMsIDI0MywgMSwgMjIyLCAyMDIsIDIyMywgMjQzLCAKLSAgICAxLCAyMDMsIDIyMywgMjQzLCAxLCAyMzMsIDE1NywgMjIzLCAyNDMsIDEsIDE4NiwgMjIzLCAyNDMsIDEsIDIxNCwgNDksIAotICAgIDIyMywgMjQzLCAxLCAxNTksIDIyMywgMjQzLCAxLCAyMzEsIDE4NywgMjIzLCAyNDMsIDEsIDIyOSwgMTQxLCAyMjMsIDI0MywgCi0gICAgMSwgMjI5LCAyMjgsIDIyMywgMjQzLCAxLCAyMjcsIDI1NCwgMjIzLCAyNDMsIDEsIDYxLCAyMjMsIDI0MywgMzAsIDUsIDcyLCAKLSAgICAyMjMsIDI0MywgMzAsIDUsIDY5LCAyMjMsIDI0MywgMzAsIDUsIDc0LCAyMjMsIDI0MywgMzAsIDUsIDI1NCwgMTA4LCAyMjMsIAotICAgIDI0MywgMzAsIDUsIDc1LCAyMjMsIDI0MywgMzAsIDUsIDI1MywgMTA4LCAyMjMsIDI0MywgMzAsIDUsIDI0NSwgMjIsIDIyMywgCi0gICAgMjQzLCAzMCwgNSwgMjQ1LCAxODksIDIyMywgMjQzLCAyNDksIDEzMywgNSwgMjI5LCAxNjEsIDIyMywgMjQzLCAyNDksIAotICAgIDEzMywgNSwgMjA0LCAyMjMsIDI0MywgMjQ5LCAxMzMsIDUsIDE0OSwgMjIzLCAyNDMsIDI0OSwgMTMzLCA1LCAyNDIsIDQxLCAKLSAgICAyMjMsIDI0MywgMjE0LCAxMzMsIDIyMywgMjQzLCAyMjIsIDkyLCA3NywgMjMsIDk3LCAyMTcsIDUxLCAyMywgOTcsIDIxNywgCi0gICAgNTAsIDIzLCA5NywgMjE3LCA0OCwgMjMsIDk3LCAyMTcsIDUzLCAyMywgOTcsIDIyMywgMTc0LCAyMywgOTcsIDIyMywgMTU4LCAKLSAgICAyMywgOTcsIDIyMywgMTUzLCAyMywgOTcsIDIyMywgMTU1LCAyMywgOTcsIDIyMywgMTcxLCAyMywgOTcsIDIyMywgMTY0LCAKLSAgICAyMywgOTcsIDIyMywgMTU3LCAyMywgOTcsIDIyMywgMTc2LCAyMywgOTcsIDIyMywgMTU5LCAyMywgOTcsIDIyMywgMTc4LCAKLSAgICAyMywgOTcsIDIyMywgMTc1LCAyMywgOTcsIDIzMSwgMjYsIDIzLCA5NywgMjMxLCAxNywgMjMsIDk3LCAyMzEsIDIwLCAyMywgCi0gICAgOTcsIDIyNSwgMjEyLCAyMywgOTcsIDIyNSwgMjIzLCAyMywgOTcsIDIyNSwgMjI0LCAyMywgOTcsIDIxOSwgMTQyLCAyMywgCi0gICAgOTcsIDIzNiwgNDEsIDIzLCA5NywgMjM2LCA0OCwgMjMsIDk3LCAyMTksIDE1MywgMjMsIDk3LCAyMTksIDE0MCwgMjMsIDk3LCAKLSAgICAyMjYsIDYsIDIzLCA5NywgMjQxLCAxNTMsIDIzLCA5NywgMjE5LCAxMzcsIDE0NCwgNSwgMjI2LCAxNTUsIDE0NCwgNSwgCi0gICAgMjUwLCAxMjEsIDE0NCwgNSwgMjMzLCA5MCwgMTQ0LCA1LCAyMTMsIDIyOCwgMTQ0LCAxLCA2MSwgMTQ0LCAxLCAyNDAsIAotICAgIDE0NiwgMjM0LCAxOTcsIDE0NCwgMSwgNzIsIDE0NCwgMSwgMjM2LCAyOCwgMTQ0LCAxLCA2OSwgMTQ0LCAxLCAyMjYsIDIxNCwgCi0gICAgMjUwLCA5NywgMTQ0LCAxLCAyMjksIDE2MCwgMjMzLCA1MiwgMTQ0LCAxLCAyMjksIDE2MCwgMjMzLCA1MywgMjI0LCAzNCwgCi0gICAgMTQ0LCAxLCA3NCwgMTQ0LCAxLCAyNTQsIDEwOCwgMTQ0LCAxLCA3NSwgMTQ0LCAxLCAxODEsIDE0NCwgMSwgMjM1LCAxNywgCi0gICAgMjIyLCAxNDQsIDE0NCwgMSwgMjM1LCAxNywgMjMwLCAxMzYsIDE0NCwgMSwgMjQzLCAxMTAsIDE0NCwgMSwgMjQzLCAxMTEsIAotICAgIDIzMCwgMTM2LCAxNDQsIDEsIDIyOSwgMTU5LCAxNDQsIDEsIDI1MCwgMjE5LCAxNDQsIDEsIDI1MCwgMjIwLCAyMzAsIDEzNiwgCi0gICAgMTQ0LCAxLCAyMzUsIDEzOSwgMTQ0LCAxLCAyMjgsIDI0LCAyMzAsIDEzNiwgMTQ0LCAxLCAyMzUsIDE0MCwgMjMyLCAxMiwgCi0gICAgMTQ0LCAxLCAyMjgsIDIzLCAxNDQsIDEsIDIxNiwgMTE1LCAxNDQsIDEsIDIxNiwgMTE2LCAyMzIsIDEyLCAxNDQsIDEsIAotICAgIDI0OCwgODYsIDE0NCwgMSwgMjQ4LCA4NywgMjMyLCAxMiwgMTQ0LCAxLCAyMzAsIDQ2LCAyMzAsIDEzNiwgMTQ0LCAxLCAKLSAgICAyMTgsIDUyLCAxNDQsIDEsIDIxOCwgNTMsIDIzMCwgMTM2LCAxNDQsIDEsIDI0OCwgMTY0LCAxNDQsIDEsIDI0OCwgMTY1LCAKLSAgICAyMzIsIDEyLCAxNDQsIDEsIDIwNSwgMTQ0LCAxLCAxOTMsIDE0NCwgMSwgMjI2LCAyMTQsIDIzMCwgMTM2LCAxNDQsIDEsIAotICAgIDI1MiwgMTA3LCAxNDQsIDEsIDI1MiwgMTA4LCAyMzAsIDEzNiwgMTQ0LCAxLCAxODgsIDE0NCwgMSwgMTg2LCAxNDQsIDEsIAotICAgIDIwMywgMTQ0LCAxLCAyMjQsIDc3LCAyNTQsIDExNSwgMTQ0LCAxLCAyMzMsIDE1NywgMTQ0LCAxLCAyMTQsIDQ5LCAxNDQsIAotICAgIDEsIDIyMiwgMjAzLCAyMzAsIDEzNiwgMTQ0LCAxLCAyMjIsIDIwMywgMjMyLCAxMiwgMTQ0LCAxLCAyMjIsIDIwMiwgMTQ0LCAKLSAgICAxLCAxNTksIDE0NCwgNSwgMjUwLCAxMjIsIDIxNywgMjAzLCAxNDQsIDMwLCA1LCAyMTcsIDI1NCwgMTQ0LCAzMCwgNSwgCi0gICAgMjE2LCAyNDYsIDE0NCwgMzAsIDUsIDIxMywgMTc4LCAxNDQsIDMwLCA1LCAyMTMsIDE3OSwgMjMxLCAxMzMsIDE0NCwgMzAsIAotICAgIDUsIDIxOCwgMjQ4LCAxNDQsIDMwLCA1LCAyMTgsIDI0OSwgMjMxLCAxMjEsIDE0NCwgMzAsIDUsIDIxOCwgMTYsIDE0NCwgCi0gICAgMzAsIDUsIDI0NywgMTQ2LCAyMzAsIDEzNSwgMTQ0LCAzMCwgNSwgMjI2LCA1OSwgMTQ0LCAyNDksIDEzMywgNSwgMjM0LCAKLSAgICAxNjQsIDE0NCwgMjQ5LCAxMzMsIDUsIDIyNiwgNzEsIDE0NCwgMjQ5LCAxMzMsIDUsIDI1MCwgMjA3LCAxNDQsIDIyNiwgCi0gICAgMTY3LCAxNDQsIDQyLCAyMjMsIDIyMSwgMTQ0LCA0NiwgMjIzLCAyMjEsIDE0NCwgMjI2LCAyMDMsIDI1NCwgMjYsIDE0NCwgCi0gICAgMjI2LCAyMDMsIDIzMiwgMjksIDE0NCwgMjI2LCAyMDMsIDIzMiwgMTQ2LCAxNDQsIDIyNiwgMjAzLCAyMTMsIDIyMywgMTQ0LCAKLSAgICAyMjYsIDIwMywgMjI2LCAxNjgsIDE0NCwgMjI2LCAyMDMsIDIzMiwgMjM0LCAxNDQsIDIyNiwgMjAzLCAyMzIsIDE0MCwgCi0gICAgMTQ0LCAyMjYsIDIwMywgMjU0LCAxNTQsIDE0NCwgMjI2LCAyMDMsIDI1NCwgMTU1LCAyNTQsIDE1NCwgMTQ0LCAyMjYsIAotICAgIDIwMywgMjI1LCAxODMsIDE0NCwgMjE2LCA1OCwgMjI2LCAyMDMsIDIyNSwgMTgzLCAxNDQsIDIyNiwgMTY0LCAxNDQsIDIxLCAKLSAgICAyMTIsIDc5LCAxNDQsIDIxLCAxMTYsIDE0NCwgMjEsIDEwOSwgMTQ0LCAyMSwgMTY2LCAxNDQsIDIxLCAxNjMsIDE0NCwgMjEsIAotICAgIDE4MCwgMTQ0LCAyMSwgMTg5LCAxNDQsIDIxLCAxOTgsIDE0NCwgMjEsIDE5NSwgMTQ0LCAyMSwgMjAwLCAxNDQsIDIyNiwgCi0gICAgMjAzLCAyMTcsIDIyLCAyMTYsIDcwLCAxNDQsIDIyNiwgMjAzLCAyMzUsIDE2NSwgMTYyLCAxLCA2MSwgMTYyLCAxLCA3MiwgCi0gICAgMTYyLCAxLCA2OSwgMTYyLCAxLCA3NCwgMTYyLCAxLCAyNTQsIDEwOCwgMTYyLCAxLCA3NSwgMTYyLCAxLCAxODEsIDE2MiwgCi0gICAgMSwgMjM0LCAxMzgsIDE2MiwgMSwgMjQzLCAxMTAsIDE2MiwgMSwgMjQyLCAyMjUsIDE2MiwgMSwgMjI5LCA3NSwgMTYyLCAxLCAKLSAgICAyMjksIDE1OSwgMTYyLCAxLCAyNTAsIDkyLCAxNjIsIDEsIDI1MCwgNDksIDE2MiwgMSwgMjM1LCAxMzksIDE2MiwgMSwgCi0gICAgMjM1LCAxMTUsIDE2MiwgMSwgMjI5LCA2NiwgMTYyLCAxLCAyMjksIDY4LCAxNjIsIDEsIDIyOSwgNjcsIDE2MiwgMSwgMjE4LCAKLSAgICA1MiwgMTYyLCAxLCAyMTcsIDE2MSwgMTYyLCAxLCAyNDgsIDE2NCwgMTYyLCAxLCAyNDcsIDIzMiwgMTYyLCAxLCAyMjgsIAotICAgIDYyLCAxNjIsIDEsIDIwNSwgMTYyLCAxLCAyNDgsIDg2LCAxNjIsIDEsIDE5MywgMTYyLCAxLCAyMjUsIDEwMCwgMTYyLCAxLCAKLSAgICAyMjYsIDIzLCAxNjIsIDEsIDI1MiwgMTA3LCAxNjIsIDEsIDI1MSwgMTk1LCAxNjIsIDEsIDIzMCwgMTY1LCAxNjIsIDEsIAotICAgIDE4OCwgMTYyLCAxLCAyNTIsIDMxLCAxNjIsIDEsIDE4NiwgMTYyLCAxLCAyMDMsIDE2MiwgMSwgMjMzLCAxNTcsIDE2MiwgMSwgCi0gICAgMjE1LCAxLCAxNjIsIDEsIDIxOSwgMTU3LCAxNjIsIDEsIDIyMiwgMjAyLCAxNjIsIDEsIDE1OSwgMTYyLCAzMCwgNSwgMjU0LCAKLSAgICAyMzIsIDE2MiwgMzAsIDUsIDcyLCAxNjIsIDMwLCA1LCAyMzYsIDI4LCAxNjIsIDMwLCA1LCAyNDUsIDE1MiwgMTYyLCAzMCwgCi0gICAgNSwgNjksIDE2MiwgMzAsIDUsIDIyNywgOTksIDE2MiwgMzAsIDUsIDc1LCAxNjIsIDMwLCA1LCAyNTQsIDEwOCwgMTYyLCAKLSAgICAzMCwgNSwgMjUzLCAxMDgsIDE2MiwgMzAsIDUsIDIxNSwgMTgzLCAxNjIsIDI0OSwgMTMzLCA1LCAxODYsIDE2MiwgMjQ5LCAKLSAgICAxMzMsIDUsIDIwMywgMTYyLCAyNDksIDEzMywgNSwgMjMzLCAxNTcsIDE2MiwgMjQ5LCAxMzMsIDUsIDIxNCwgNDksIDE2MiwgCi0gICAgMSwgNDAsIDIzNSwgMjcsIDE2MiwgMSwgNDAsIDI0MywgMTc3LCAxNjIsIDEsIDQwLCAyMjksIDE2MSwgMTYyLCAyNDksIAotICAgIDEzMywgNSwgNDAsIDIyOSwgMTYxLCAxNjIsIDEsIDQwLCAyNTAsIDkzLCAxNjIsIDEsIDQwLCAyMTgsIDk5LCAxNjIsIDEsIAotICAgIDQwLCAyMDQsIDE2MiwgMSwgNDAsIDIyNiwgMjI5LCAxNjIsIDEsIDQwLCAyMTMsIDEwNSwgMTYyLCAxLCA0MCwgMTQ5LCAKLSAgICAxNjIsIDEsIDQwLCAxNTAsIDE2MiwgMSwgNDAsIDIxOSwgMTU4LCAxNjIsIDI0OSwgMTMzLCA1LCA0MCwgMTgzLCAxNjIsIAotICAgIDI0OSwgMTMzLCA1LCA0MCwgMjQyLCA0MSwgMTYyLCAyMSwgMjEyLCA3OSwgMTYyLCAyMSwgMTE2LCAxNjIsIDIxLCAxMDksIAotICAgIDE2MiwgMjEsIDE2NiwgMTYyLCAyMSwgMTYzLCAxNjIsIDIxLCAxODAsIDE2MiwgMjEsIDE4OSwgMTYyLCAyMSwgMTk4LCAKLSAgICAxNjIsIDIxLCAxOTUsIDE2MiwgMjEsIDIwMCwgMTYyLCAyMjUsIDI3LCAyMTksIDE4MywgMTYyLCAyMjUsIDI3LCAyNDgsIAotICAgIDEyMywgMTYyLCAyMjUsIDI3LCA1MSwgMjQ4LCAxMjMsIDE2MiwgMjI1LCAyNywgMjE2LCAxNjksIDI0OCwgMTIzLCA2NCwgMSwgCi0gICAgMjM0LCAxMzIsIDI0MywgMTEwLCA2NCwgMSwgMjM0LCAxMzIsIDI1MCwgMjE5LCA2NCwgMSwgMjM0LCAxMzIsIDI1MCwgOTIsIAotICAgIDY0LCAxLCAyMzQsIDEzMiwgMjM1LCAxMzksIDY0LCAxLCAyMzQsIDEzMiwgMjM1LCAxMTUsIDY0LCAxLCAyMzQsIDEzMiwgCi0gICAgMjI4LCAyMywgNjQsIDEsIDIzNCwgMTMyLCAyMTYsIDExNSwgNjQsIDEsIDIzNCwgMTMyLCAyMTYsIDEwNSwgNjQsIDEsIAotICAgIDIzNCwgMTMyLCAyNDgsIDg2LCA2NCwgMSwgMjM0LCAxMzIsIDI0OCwgNzAsIDY0LCAxLCAyMzQsIDEzMiwgMjQ3LCAyMzIsIAotICAgIDY0LCAxLCAyMzQsIDEzMiwgMjA1LCA2NCwgMSwgMjM0LCAxMzIsIDIyMiwgMjAyLCA2NCwgMSwgMjM0LCAxMzIsIDE1OSwgCi0gICAgNjQsIDEsIDIzNCwgMTMyLCAyNDEsIDE3NCwgNjQsIDEsIDIzNCwgMTMyLCAyNDQsIDE2NCwgNjQsIDU5LCAxLCAyMzQsIAotICAgIDEzMiwgMjI0LCAyLCA2NCwgMSwgMjM0LCAxMzIsIDIxMywgMTUzLCA2NCwgMSwgMjM0LCAxMzIsIDIxMiwgMTA5LCA2NCwgMSwgCi0gICAgMjM0LCAxMzIsIDIwMywgNjQsIDIzMiwgMTk4LCAyMzQsIDEzMiwgMjI3LCAxMTcsIDY0LCAyMzIsIDE5OCwgMjM0LCAxMzIsIAotICAgIDIyNCwgMTg4LCA2NCwgMjMyLCAxOTgsIDIzNCwgMTMyLCAyNDEsIDEwNywgNjQsIDE2LCAyNTQsIDk4LCAyNDQsIDI1MywgCi0gICAgNjQsIDE2LCAyNTQsIDk4LCAxMTYsIDY0LCAxNiwgMjU0LCA5OCwgMTA5LCA2NCwgMSwgMjU0LCA5OCwgMjAzLCA2NCwgNSwgCi0gICAgMjI2LCAxNTEsIDIzNCwgMjE4LCAyMTYsIDI0MSwgMzgsIDE5MCwgMSwgMTE1LCAyMzQsIDM3LCAzOCwgMTkwLCAxLCAxMjQsIAotICAgIDIzNCwgMzcsIDM4LCAxOTAsIDEsIDExNSwgMjM0LCAxMTMsIDM4LCAxOTAsIDEsIDEyNCwgMjM0LCAxMTMsIDM4LCAxOTAsIAotICAgIDEsIDExNSwgMjM0LCAxMjAsIDM4LCAxOTAsIDEsIDEyNCwgMjM0LCAxMjAsIDM4LCAxOTAsIDEsIDExNSwgMjQyLCAxNTAsIAotICAgIDM4LCAxOTAsIDEsIDEyNCwgMjQyLCAxNTAsIDM4LCAxOTAsIDEsIDExNSwgMjI5LCA5MCwgMzgsIDE5MCwgMSwgMTI0LCAKLSAgICAyMjksIDkwLCAzOCwgMTkwLCAxLCAxMTUsIDI0OSwgMTc1LCAzOCwgMTkwLCAxLCAxMjQsIDI0OSwgMTc1LCAzOCwgMTkwLCAKLSAgICAxLCAxMTUsIDI1MCwgMjMsIDM4LCAxOTAsIDEsIDEyNCwgMjUwLCAyMywgMzgsIDE5MCwgMSwgMTE1LCAyMTksIDI0MiwgMzgsIAotICAgIDE5MCwgMSwgMTI0LCAyMTksIDI0MiwgMzgsIDE5MCwgMSwgMTE1LCAyMjcsIDI1MywgMzgsIDE5MCwgMSwgMTI0LCAyMjcsIAotICAgIDI1MywgMzgsIDE5MCwgMSwgMTE1LCAyNDcsIDk5LCAzOCwgMTkwLCAxLCAxMjQsIDI0NywgOTksIDM4LCAxOTAsIDEsIDExNSwgCi0gICAgMTA4LCAzOCwgMTkwLCAxLCAxMjQsIDEwOCwgMzgsIDE5MCwgMSwgMTE1LCAyMTcsIDEwOSwgMzgsIDE5MCwgMSwgMTI0LCAKLSAgICAyMTcsIDEwOSwgMzgsIDE5MCwgMSwgMTE1LCAyMjgsIDE4NSwgMzgsIDE5MCwgMSwgMTI0LCAyMjgsIDE4NSwgMzgsIDE5MCwgCi0gICAgMSwgMTE1LCAyNTEsIDEyOCwgMzgsIDE5MCwgMSwgMTI0LCAyNTEsIDEyOCwgMzgsIDE5MCwgMSwgMTE1LCAyMjUsIDE1MCwgCi0gICAgMzgsIDE5MCwgMSwgMTI0LCAyMjUsIDE1MCwgMzgsIDE5MCwgMSwgMTE1LCAyMjUsIDI1MywgMzgsIDE5MCwgMSwgMTI0LCAKLSAgICAyMjUsIDI1MywgMzgsIDE5MCwgMSwgMTE1LCAyNDQsIDEyLCAzOCwgMTkwLCAxLCAxMjQsIDI0NCwgMTIsIDM4LCAxOTAsIDEsIAotICAgIDExNSwgMjMwLCAyMzEsIDM4LCAxOTAsIDEsIDEyNCwgMjMwLCAyMzEsIDM4LCAxOTAsIDEsIDExNSwgMjEyLCAyMzUsIDM4LCAKLSAgICAxOTAsIDEsIDEyNCwgMjEyLCAyMzUsIDM4LCAxOTAsIDEsIDExNSwgMjIzLCAxMTIsIDM4LCAxOTAsIDEsIDEyNCwgMjIzLCAKLSAgICAxMTIsIDM4LCAxOTAsIDEsIDExNSwgMjMyLCAyMDgsIDM4LCAxOTAsIDEsIDEyNCwgMjMyLCAyMDgsIDM4LCAxOTAsIDEsIAotICAgIDExNSwgMjE0LCAxMTksIDM4LCAxOTAsIDEsIDEyNCwgMjE0LCAxMTksIDM4LCAxOTAsIDEsIDExNSwgMjQxLCA1NCwgMzgsIAotICAgIDE5MCwgMSwgMTI0LCAyNDEsIDU0LCAzOCwgMTkwLCAxLCAxMTUsIDc1LCAzOCwgMTkwLCAxLCAxMjQsIDc1LCAzOCwgMTkwLCAKLSAgICAyMzIsIDksIDIzNCwgMjM1LCAzOCwgMTkwLCAzMCwgMjU0LCAyMzIsIDM4LCAxOTAsIDMwLCA3MiwgMzgsIDE5MCwgMzAsIAotICAgIDIxNSwgMTgzLCAzOCwgMTkwLCAzMCwgNjksIDM4LCAxOTAsIDMwLCA3NCwgMzgsIDE5MCwgMzAsIDc1LCAzOCwgMTkwLCAKLSAgICAyMzIsIDksIDIzNCwgMTE1LCAzOCwgMTkwLCAzMCwgMjQwLCAxMTEsIDM4LCAxOTAsIDMwLCAyMTUsIDE4MiwgMzgsIDE5MCwgCi0gICAgMzAsIDIxNSwgMTk2LCAzOCwgMTkwLCAzMCwgMjUzLCAxMDYsIDM4LCAxOTAsIDMwLCAyNTMsIDgzLCAzOCwgMTkwLCAzMCwgCi0gICAgMjU0LCAzMiwgMzgsIDE5MCwgMzAsIDI1NCwgNDUsIDM4LCAxOTAsIDE2MCwgMjMyLCA5LCAyNDUsIDEzNywgMzgsIDE5MCwgCi0gICAgMTYwLCAyMzIsIDksIDIyOCwgNjEsIDM4LCAxOTAsIDE2MCwgMjMyLCA5LCAyMTcsIDEwOSwgMzgsIDE5MCwgMTYwLCAyMzIsIAotICAgIDksIDIxOSwgMjI4LCAzOCwgMTkwLCAxNiwgMjM0LCAyMiwgMzgsIDE5MCwgMTYsIDIyOCwgNjEsIDM4LCAxOTAsIDE2LCAKLSAgICAyMjIsIDE2OCwgMzgsIDE5MCwgMTYsIDI0MSwgNTUsIDI0MSwgNTAsIDM4LCAxOTAsIDE2LCAyMzQsIDMxLCAyMzQsIDMwLCAKLSAgICAyOCwgNCwgMjE2LCA5OCwgMjgsIDQsIDIxNiwgMTAxLCAyOCwgNCwgMjE2LCAxMDQsIDI4LCA0LCAyMTYsIDEwMiwgMjgsIDQsIAotICAgIDIxNiwgMTAzLCAyOCwgNCwgMjE2LCAxMDAsIDI4LCA0LCAyNDgsIDY0LCAyOCwgNCwgMjQ4LCA2NiwgMjgsIDQsIDI0OCwgCi0gICAgNjksIDI4LCA0LCAyNDgsIDY3LCAyOCwgNCwgMjQ4LCA2OCwgMjgsIDQsIDI0OCwgNjUsIDI4LCA0LCAyNDUsIDIzOSwgMjgsIAotICAgIDQsIDI0NSwgMjQyLCAyOCwgNCwgMjQ1LCAyNDgsIDI4LCA0LCAyNDUsIDI0NiwgMjgsIDQsIDI0NSwgMjQ3LCAyOCwgNCwgCi0gICAgMjQ1LCAyNDAsIDI4LCA0LCAyNTAsIDEzOCwgMjgsIDQsIDI1MCwgMTMyLCAyOCwgNCwgMjUwLCAxMzQsIDI4LCA0LCAyNTAsIAotICAgIDEzNywgMjgsIDQsIDI1MCwgMTM1LCAyOCwgNCwgMjUwLCAxMzYsIDI4LCA0LCAyNTAsIDEzMywgMjgsIDQsIDI1MiwgMzEsIAotICAgIDI4LCA0LCAyNTIsIDEwLCAyOCwgNCwgMjUyLCAyMiwgMjgsIDQsIDI1MiwgMzAsIDI4LCA0LCAyNTIsIDI1LCAyOCwgNCwgCi0gICAgMjUyLCAyNiwgMjgsIDQsIDI1MiwgMTQsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjM0LCAyOCwgMjMxLCAxNDAsIDIzMSwgCi0gICAgMTk0LCAxLCAyMjIsIDE2OCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzMsIDEzMywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAKLSAgICAyMzAsIDI0MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAxOTMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjA1LCAyMzEsIAotICAgIDE0MCwgMjMxLCAxOTQsIDEsIDI1MCwgMzksIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjE3LCA0NCwgMjMxLCAxNDAsIDIzMSwgCi0gICAgMTk0LCAxLCAyMzQsIDEwOSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMjksIDgwLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIAotICAgIDIxNywgMTAzLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIxNCwgNDQsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjEzLCA1OCwgCi0gICAgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDAsIDIwNiwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTUsIDE2MCwgMjMxLCAKLSAgICAxNDAsIDIzMSwgMTk0LCAxLCA3MiwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMjYsIDE4LCAyMzEsIDE0MCwgMjMxLCAxOTQsIAotICAgIDEsIDI1MywgMTE4LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI0MiwgMTQzLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIzNSwgCi0gICAgMTE0LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIyNCwgNTcsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjUyLCAxMDcsIAotICAgIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjM1LCAxMDMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjQ3LCAxNzEsIDIzMSwgCi0gICAgMTQwLCAyMzEsIDE5NCwgMSwgMjQyLCAxOTcsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjQ3LCAyMTMsIDIzMSwgMTQwLCAKLSAgICAyMzEsIDE5NCwgMSwgMjUxLCAxOTQsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjM0LCAyOSwgMjMyLCAxODEsIDIzMSwgCi0gICAgMTQwLCAyMzEsIDE5NCwgMSwgMjMzLCAxMzQsIDIzMiwgMTgxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIzMCwgMjQyLCAKLSAgICAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMjYsIDIxNCwgMjMyLCAxODEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgCi0gICAgMSwgMjMwLCA0NiwgMjMyLCAxODEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjE3LCA0NSwgMjMyLCAxODEsIDIzMSwgMTQwLCAKLSAgICAyMzEsIDE5NCwgMSwgMjI5LCA4MSwgMjMyLCAxODEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjQwLCAxNDYsIDIzMiwgCi0gICAgMTgxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyMjcsIDYxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyMzUsIAotICAgIDI0OSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjU0LCAzMSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjEzLCAKLSAgICAyOSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjE5LCAyMTksIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIxNSwgCi0gICAgMTU3LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyNTAsIDYwLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyMjgsIAotICAgIDQ3LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDI1MCwgNjEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjMyLCAxNDMsIDIzNSwgMTQ4LCAKLSAgICAyMzEsIDE0MCwgMjMxLCAxOTQsIDI1MywgMjE2LCAyMzUsIDE0OCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMjEyLCA3OSwgCi0gICAgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMTE2LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxMDksIDIzMSwgMTQwLCAyMzEsIAotICAgIDE5NCwgMjEsIDE2NiwgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMTYzLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxODAsIAotICAgIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDE4OSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMTk4LCAyMzEsIDE0MCwgMjMxLCAKLSAgICAxOTQsIDIxLCAxOTUsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDIwMCwgMjMsIDEzNSwgMjI3LCAxOTcsIDIzLCAxMzUsIAotICAgIDIyNywgMjAyLCAyMywgMTM1LCAyMTIsIDIzNCwgMjMsIDEzNSwgMjEyLCAyMzMsIDIzLCAxMzUsIDIxMiwgMjMyLCAyMywgCi0gICAgMTM1LCAyMTUsIDI0NiwgMjMsIDEzNSwgMjE1LCAyNDksIDIzLCAxMzUsIDIxMiwgMjAxLCAyMywgMTM1LCAyMTIsIDE5NywgCi0gICAgMjMsIDEzNSwgMjQ1LCAyMSwgMjMsIDEzNSwgMjQ1LCAxOSwgMjMsIDEzNSwgMjQ1LCAyMCwgMjMsIDEzNSwgMjQ1LCAxNywgCi0gICAgMjMsIDEzNSwgMjQwLCAxMzYsIDIzLCAxMzUsIDI0MCwgMTM1LCAyMywgMTM1LCAyNDAsIDEzMywgMjMsIDEzNSwgMjQwLCAKLSAgICAxMzQsIDIzLCAxMzUsIDI0MCwgMTM5LCAyMywgMTM1LCAyNDAsIDEzMiwgMjMsIDEzNSwgMjQwLCAxMzEsIDIzLCAxMzUsIAotICAgIDI0MCwgMTQxLCAyMywgMTM1LCAyNTMsIDIwMywgMjMsIDEzNSwgMjUzLCAyMDIsIDIzLCA4OSwgMjI5LCA1MCwgMjMsIDg5LCAKLSAgICAyMjksIDU2LCAyMywgODksIDIxOSwgMTM5LCAyMywgODksIDIxOSwgMTM4LCAyMywgODksIDIxNywgNTAsIDIzLCA4OSwgCi0gICAgMjE3LCA0OCwgMjMsIDg5LCAyMTcsIDQ3LCAyMywgODksIDIxNywgNTMsIDIzLCA4OSwgMjE3LCA1NCwgMjMsIDg5LCAyMTcsIAotICAgIDQ2LCAyMywgODksIDIyMywgMTU4LCAyMywgODksIDIyMywgMTczLCAyMywgODksIDIxOSwgMTQ1LCAyMywgODksIDIyMywgCi0gICAgMTcwLCAyMywgODksIDIyMywgMTYwLCAyMywgODksIDIyMywgMTYyLCAyMywgODksIDIyMywgMTQ5LCAyMywgODksIDIyMywgCi0gICAgMTUwLCAyMywgODksIDIzNCwgMjIzLCAyMywgODksIDIzMSwgMjUsIDIzLCA4OSwgMjMxLCAxOSwgMjMsIDg5LCAyMTksIAotICAgIDE0OSwgMjMsIDg5LCAyMzEsIDIyLCAyMywgODksIDIzMSwgMjgsIDIzLCA4OSwgMjI1LCAyMDgsIDIzLCA4OSwgMjI1LCAKLSAgICAyMTcsIDIzLCA4OSwgMjI1LCAyMjEsIDIzLCA4OSwgMjE5LCAxNDcsIDIzLCA4OSwgMjI1LCAyMTEsIDIzLCA4OSwgMjI1LCAKLSAgICAyMjUsIDIzLCA4OSwgMjI1LCAyMjYsIDIzLCA4OSwgMjIwLCA2OCwgMjMsIDg5LCAyMjAsIDcxLCAyMywgODksIDIxOSwgCi0gICAgMTQzLCAyMywgODksIDIxOSwgMTQxLCAyMywgODksIDIyMCwgNjYsIDIzLCA4OSwgMjIwLCA3NCwgMjMsIDg5LCAyMjAsIDc1LCAKLSAgICAyMywgODksIDIyMCwgNjAsIDIzLCA4OSwgMjIwLCA3MywgMjMsIDg5LCAyMjYsIDE1OCwgMjMsIDg5LCAyMjYsIDE1OSwgMjMsIAotICAgIDg5LCAyMTMsIDE1LCAyMywgODksIDIxMywgMTYsIDIzLCA4OSwgMjQ5LCAyMzcsIDIzLCA4OSwgMjQ5LCAyMzYsIDIzLCA4OSwgCi0gICAgMjE5LCAxNTQsIDIzLCA4OSwgMjI2LCA0LCAyMywgODksIDIyNiwgMywgOSwgMTMsIDIzOCwgMTcsIDksIDEzLCAyMzgsIDE2LCAKLSAgICA5LCAxMywgMjM4LCAxNSwgOSwgMTMsIDIzOCwgMTQsIDksIDEzLCAyMzgsIDEzLCA5LCAxMywgMjM4LCAxMiwgOSwgMTMsIAotICAgIDIzOCwgMTEsIDksIDEzLCAyMzgsIDEwLCA5LCAxMywgMjM4LCA5LCA5LCAxMywgMjM4LCA4LCA5LCAxMywgMjM4LCA3LCA5LCAKLSAgICAxMywgMjM4LCA2LCA5LCAxMywgMjM4LCA1LCA5LCAxMywgMjM4LCA0LCA5LCAxMywgMjM4LCAzLCA5LCAxMywgMjM4LCAyLCAKLSAgICA5LCAxMywgMjM4LCAxLCA5LCAxMywgMjM4LCAwLCA5LCAxMywgMjM3LCAyNTUsIDksIDEzLCAyMzcsIDI1NCwgOSwgMTMsIAotICAgIDIzNywgMjUzLCA5LCAxMywgMjM3LCAyNTIsIDksIDEzLCAyMzcsIDI1MSwgOSwgMTMsIDIzNywgMjUwLCA5LCAxMywgMjM3LCAKLSAgICAyNDksIDksIDEzLCAyMzcsIDI0OCwgOSwgMTMsIDIzNywgMjQ3LCA5LCAxMywgMjM3LCAyNDYsIDksIDEzLCAyMzcsIDI0NSwgCi0gICAgOSwgMTMsIDIzNywgMjQ0LCA5LCAxMywgMjM3LCAyNDMsIDksIDEzLCAyMzcsIDI0MiwgOSwgMTMsIDIzNywgMjQxLCA5LCAKLSAgICAxMywgMjM3LCAyNDAsIDksIDEzLCAyMzcsIDIzOSwgOSwgMTMsIDIzNywgMjM4LCA5LCAxMywgMjM3LCAyMzcsIDksIDEzLCAKLSAgICAyMzcsIDIzNiwgOSwgMTMsIDIzNywgMjM1LCA5LCAxMywgMjM3LCAyMzQsIDksIDEzLCAyMzcsIDIzMywgOSwgMTMsIDIzNywgCi0gICAgMjMyLCA5LCAxMywgMjM3LCAyMzEsIDksIDEzLCAyMzcsIDIzMCwgOSwgMTMsIDIzNywgMjI5LCA5LCAxMywgMjM3LCAyMjgsIAotICAgIDksIDEzLCAyMzcsIDIyNywgOSwgMTMsIDIzNywgMjI2LCA5LCAxMywgMjM3LCAyMjUsIDksIDEzLCAyMzcsIDIyNCwgOSwgCi0gICAgMTMsIDIzNywgMjIzLCA5LCAxMywgMjM3LCAyMjIsIDksIDEzLCAyMzcsIDIyMSwgOSwgMTMsIDIzNywgMjIwLCA5LCAxMywgCi0gICAgMjM3LCAyMTksIDksIDEzLCAyMzcsIDIxOCwgOSwgMTMsIDIzNywgMjE3LCA5LCAxMywgMjM3LCAyMTYsIDksIDEzLCAyMzcsIAotICAgIDIxNSwgOSwgMTMsIDIzNywgMjE0LCA5LCAxMywgMjM3LCAyMTMsIDksIDEzLCAyMzcsIDIxMiwgOSwgMTMsIDIzNywgMjExLCAKLSAgICA5LCAxMywgMjM3LCAyMTAsIDksIDEzLCAyMzcsIDIwOSwgOSwgMTMsIDIzNywgMjA4LCA5LCAxMywgMjM3LCAyMDcsIDksIAotICAgIDEzLCAyMzcsIDIwNiwgOSwgMTMsIDIzNywgMjA1LCA5LCAxMywgMjM3LCAyMDQsIDksIDEzLCAyMzcsIDIwMywgOSwgMTMsIAotICAgIDIzNywgMjAyLCA5LCAxMywgMjM3LCAyMDEsIDksIDEzLCAyMzcsIDIwMCwgOSwgMTMsIDIzNywgMTk5LCA5LCAxMywgMjM3LCAKLSAgICAxOTgsIDksIDEzLCAyMzcsIDE5NywgOSwgMTMsIDIzNywgMTk2LCA5LCAxMywgMjM3LCAxOTUsIDksIDEzLCAyMzcsIDE5NCwgCi0gICAgOSwgMTMsIDIzNywgMTkzLCA5LCAxMywgMjM3LCAxOTIsIDksIDEzLCAyMzcsIDE5MSwgOSwgMTMsIDIzNywgMTkwLCA5LCAKLSAgICAxMywgMjM3LCAxODksIDksIDEzLCAyMzcsIDE4OCwgOSwgMTMsIDIzNywgMTg3LCA5LCAxMywgMjM3LCAxODYsIDksIDEzLCAKLSAgICAyMzcsIDE4NSwgOSwgMTMsIDIzNywgMTg0LCA5LCAxMywgMjM3LCAxODMsIDksIDEzLCAyMzcsIDE4MiwgOSwgMTMsIDIzNywgCi0gICAgMTgxLCA5LCAxMywgMjM3LCAxODAsIDksIDEzLCAyMzcsIDE3OSwgOSwgMTMsIDIzNywgMTc4LCA5LCAxMywgMjM3LCAxNzcsIAotICAgIDksIDEzLCAyMzcsIDE3NiwgOSwgMTMsIDIzNywgMTc1LCA5LCAxMywgMjM3LCAxNzQsIDksIDEzLCAyMzcsIDE3MywgOSwgCi0gICAgMTMsIDIzNywgMTcyLCA5LCAxMywgMjM3LCAxNzEsIDksIDEzLCAyMzcsIDE3MCwgOSwgMTMsIDIzNywgMTY5LCA5LCAxMywgCi0gICAgMjM3LCAxNjgsIDksIDEzLCAyMzcsIDE2NywgOSwgMTMsIDIzNywgMTY2LCA5LCAxMywgMjM3LCAxNjUsIDksIDEzLCAyMzcsIAotICAgIDE2NCwgOSwgMTMsIDIzNywgMTYzLCA5LCAxMywgMjM3LCAxNjIsIDksIDEzLCAyMzcsIDE2MSwgOSwgMTMsIDIzNywgMTYwLCAKLSAgICA5LCAxMywgMjM3LCAxNTksIDksIDEzLCAyMzcsIDE1OCwgOSwgMTMsIDIzNywgMTU3LCA5LCAxMywgMjM3LCAxNTYsIDksIAotICAgIDEzLCAyMzcsIDE1NSwgOSwgMTMsIDIzNywgMTU0LCA5LCAxMywgMjM3LCAxNTMsIDksIDEzLCAyMzcsIDE1MiwgOSwgMTMsIAotICAgIDIzNywgMTUxLCA5LCAxMywgMjM3LCAxNTAsIDksIDEzLCAyMzcsIDE0OSwgOSwgMTMsIDIzNywgMTQ4LCA5LCAxMywgMjM3LCAKLSAgICAxNDcsIDksIDEzLCAyMzcsIDE0NiwgOSwgMTMsIDIzNywgMTQ1LCA5LCAxMywgMjM3LCAxNDQsIDksIDEzLCAyMzcsIDE0MywgCi0gICAgOSwgMTMsIDIzNywgMTQyLCA5LCAxMywgMjM3LCAxNDEsIDksIDEzLCAyMzcsIDE0MCwgOSwgMTMsIDIzNywgMTM5LCA5LCAKLSAgICAxMywgMjM3LCAxMzgsIDksIDEzLCAyMzcsIDEzNywgOSwgMTMsIDIzNywgMTM2LCA5LCAxMywgMjM3LCAxMzUsIDksIDEzLCAKLSAgICAyMzcsIDEzNCwgOSwgMTMsIDIzNywgMTMzLCA5LCAxMywgMjM3LCAxMzIsIDksIDEzLCAyMzcsIDEzMSwgOSwgMTMsIDIzNywgCi0gICAgMTMwLCA5LCAxMywgMjM3LCAxMjksIDksIDEzLCAyMzcsIDEyOCwgOSwgMTMsIDIzNywgMTI3LCA5LCAxMywgMjM3LCAxMjYsIAotICAgIDksIDEzLCAyMzcsIDEyNSwgOSwgMTMsIDIzNywgMTI0LCA5LCAxMywgMjM3LCAxMjMsIDksIDEzLCAyMzcsIDEyMiwgOSwgCi0gICAgMTMsIDIzNywgMTIxLCA5LCAxMywgMjM3LCAxMjAsIDksIDEzLCAyMzcsIDExOSwgOSwgMTMsIDIzNywgMTE4LCA5LCAxMywgCi0gICAgMjM3LCAxMTcsIDksIDEzLCAyMzcsIDExNiwgOSwgMTMsIDIzNywgMTE1LCA5LCAxMywgMjM3LCAxMTQsIDksIDEzLCAyMzcsIAotICAgIDExMywgOSwgMTMsIDIzNywgMTEyLCA5LCAxMywgMjM3LCAxMTEsIDksIDEzLCAyMzcsIDExMCwgOSwgMTMsIDIzNywgMTA5LCAKLSAgICA5LCAxMywgMjM3LCAxMDgsIDksIDEzLCAyMzcsIDEwNywgOSwgMTMsIDIzNywgMTA2LCA5LCAxMywgMjM3LCAxMDUsIDksIAotICAgIDEzLCAyMzcsIDEwNCwgOSwgMTMsIDIzNywgMTAzLCA5LCAxMywgMjM3LCAxMDIsIDksIDEzLCAyMzcsIDEwMSwgOSwgMTMsIAotICAgIDIzNywgMTAwLCA5LCAxMywgMjM3LCA5OSwgOSwgMTMsIDIzNywgOTgsIDksIDEzLCAyMzcsIDk3LCA5LCAxMywgMjM3LCA5NiwgCi0gICAgOSwgMTMsIDIzNywgOTUsIDksIDEzLCAyMzcsIDk0LCA5LCAxMywgMjM3LCA5MywgOSwgMTMsIDIzNywgOTIsIDksIDEzLCAKLSAgICAyMzcsIDkxLCA5LCAxMywgMjM3LCA5MCwgOSwgMTMsIDIzNywgODksIDksIDEzLCAyMzcsIDg4LCA5LCAxMywgMjM3LCA4NywgCi0gICAgOSwgMTMsIDIzNywgODYsIDksIDEzLCAyMzcsIDg1LCA5LCAxMywgMjM3LCA4NCwgOSwgMTMsIDIzNywgODMsIDksIDEzLCAKLSAgICAyMzcsIDgyLCA5LCAxMywgMjM3LCA4MSwgOSwgMTMsIDIzNywgODAsIDksIDEzLCAyMzcsIDc5LCA5LCAxMywgMjM3LCA3OCwgCi0gICAgOSwgMTMsIDIzNywgNzcsIDksIDEzLCAyMzcsIDc2LCA5LCAxMywgMjM3LCA3NSwgOSwgMTMsIDIzNywgNzQsIDksIDEzLCAKLSAgICAyMzcsIDczLCA5LCAxMywgMjM3LCA3MiwgOSwgMTMsIDIzNywgNzEsIDksIDEzLCAyMzcsIDcwLCA5LCAxMywgMjM3LCA2OSwgCi0gICAgOSwgMTMsIDIzNywgNjgsIDksIDEzLCAyMzcsIDY3LCA5LCAxMywgMjM3LCA2NiwgOSwgMTMsIDIzNywgNjUsIDksIDEzLCAKLSAgICAyMzcsIDY0LCA5LCAxMywgMjM3LCA2MywgOSwgMTMsIDIzNywgNjIsIDksIDEzLCAyMzcsIDYxLCA5LCAxMywgMjM3LCA2MCwgCi0gICAgOSwgMTMsIDIzNywgNTksIDksIDEzLCAyMzcsIDU4LCA5LCAxMywgMjM3LCA1NywgOSwgMTMsIDIzNywgNTYsIDksIDEzLCAKLSAgICAyMzcsIDU1LCA5LCAxMywgMjM3LCA1NCwgOSwgMTMsIDIzNywgNTMsIDksIDEzLCAyMzcsIDUyLCA5LCAxMywgMjM3LCA1MSwgCi0gICAgOSwgMTMsIDIzNywgNTAsIDksIDEzLCAyMzcsIDQ5LCA5LCAxMywgMjM3LCA0OCwgOSwgMTMsIDIzNywgNDcsIDksIDEzLCAKLSAgICAyMzcsIDQ2LCA5LCAxMywgMjM3LCA0NSwgOSwgMTMsIDIzNywgNDQsIDksIDEzLCAyMzcsIDQzLCA5LCAxMywgMjM3LCA0MiwgCi0gICAgOSwgMTMsIDIzNywgNDEsIDksIDEzLCAyMzcsIDQwLCA5LCAxMywgMjM3LCAzOSwgOSwgMTMsIDIzNywgMzgsIDksIDEzLCAKLSAgICAyMzcsIDM3LCA5LCAxMywgMjM3LCAzNiwgOSwgMTMsIDIzNywgMzUsIDksIDEzLCAyMzcsIDM0LCA5LCAxMywgMjM3LCAzMywgCi0gICAgOSwgMTMsIDIzNywgMzIsIDksIDEzLCAyMzcsIDMxLCA5LCAxMywgMjM3LCAzMCwgOSwgMTMsIDIzNywgMjksIDksIDEzLCAKLSAgICAyMzcsIDI4LCA5LCAxMywgMjM3LCAyNywgOSwgMTMsIDIzNywgMjYsIDksIDEzLCAyMzcsIDI1LCA5LCAxMywgMjM3LCAyNCwgCi0gICAgOSwgMTMsIDIzNywgMjMsIDksIDEzLCAyMzcsIDIyLCA5LCAxMywgMjM3LCAyMSwgOSwgMTMsIDIzNywgMjAsIDksIDEzLCAKLSAgICAyMzcsIDE5LCA5LCAxMywgMjM3LCAxOCwgOSwgMTMsIDIzNywgMTcsIDksIDEzLCAyMzcsIDE2LCA5LCAxMywgMjM3LCAxNSwgCi0gICAgOSwgMTMsIDIzNywgMTQsIDksIDEzLCAyMzcsIDEzLCA5LCAxMywgMjM3LCAxMiwgOSwgMTMsIDIzNywgMTEsIDksIDEzLCAKLSAgICAyMzcsIDEwLCA5LCAxMywgMjM3LCA5LCA5LCAxMywgMjM3LCA4LCA5LCAxMywgMjM3LCA3LCA5LCAxMywgMjM3LCA2LCA5LCAKLSAgICAxMywgMjM3LCA1LCA5LCAxMywgMjM3LCA0LCA5LCAxMywgMjM3LCAzLCA5LCAxMywgMjM3LCAyLCA5LCAxMywgMjM3LCAxLCAKLSAgICA5LCAxMywgMjM3LCAwLCA5LCAxMywgMjM2LCAyNTUsIDksIDEzLCAyMzYsIDI1NCwgOSwgMTMsIDIzNiwgMjUzLCA5LCAxMywgCi0gICAgMjM2LCAyNTIsIDksIDEzLCAyMzYsIDI1MSwgOSwgMTMsIDIzNiwgMjUwLCA5LCAxMywgMjM2LCAyNDksIDksIDEzLCAyMzYsIAotICAgIDI0OCwgOSwgMTMsIDIzNiwgMjQ3LCA5LCAxMywgMjM2LCAyNDYsIDksIDEzLCAyMzYsIDI0NSwgOSwgMTMsIDIzNiwgMjQ0LCAKLSAgICA5LCAxMywgMjM2LCAyNDMsIDksIDEzLCAyMzYsIDI0MiwgOSwgMTMsIDIzNiwgMjQxLCA5LCAxMywgMjM2LCAyNDAsIDksIAotICAgIDEzLCAyMzYsIDIzOSwgOSwgMTMsIDIzNiwgMjM4LCA5LCAxMywgMjM2LCAyMzcsIDksIDEzLCAyMzYsIDIzNiwgOSwgMTMsIAotICAgIDIzNiwgMjM1LCA5LCAxMywgMjM2LCAyMzQsIDksIDEzLCAyMzYsIDIzMywgOSwgMTMsIDIzNiwgMjMyLCA5LCAxMywgMjM2LCAKLSAgICAyMzEsIDksIDEzLCAyMzYsIDIzMCwgOSwgMTMsIDIzNiwgMjI5LCA5LCAxMywgMjM2LCAyMjgsIDksIDEzLCAyMzYsIDIyNywgCi0gICAgOSwgMTMsIDIzNiwgMjI2LCA5LCAxMywgMjM2LCAyMjUsIDksIDEzLCAyMzYsIDIyNCwgOSwgMTMsIDIzNiwgMjIzLCA5LCAKLSAgICAxMywgMjM2LCAyMjIsIDksIDEzLCAyMzYsIDIyMSwgOSwgMTMsIDIzNiwgMjIwLCA5LCAxMywgMjM2LCAyMTksIDksIDEzLCAKLSAgICAyMzYsIDIxOCwgOSwgMTMsIDIzNiwgMjE3LCA5LCAxMywgMjM2LCAyMTYsIDksIDEzLCAyMzYsIDIxNSwgOSwgMTMsIDIzNiwgCi0gICAgMjE0LCA5LCAxMywgMjM2LCAyMTMsIDksIDEzLCAyMzYsIDIxMiwgOSwgMTMsIDIzNiwgMjExLCA5LCAxMywgMjM2LCAyMTAsIAotICAgIDksIDEzLCAyMzYsIDIwOSwgOSwgMTMsIDIzNiwgMjA4LCA5LCAxMywgMjM2LCAyMDcsIDksIDEzLCAyMzYsIDIwNiwgOSwgCi0gICAgMTMsIDIzNiwgMjA1LCA5LCAxMywgMjM2LCAyMDQsIDksIDEzLCAyMzYsIDIwMywgOSwgMTMsIDIzNiwgMjAyLCA5LCAxMywgCi0gICAgMjM2LCAyMDEsIDksIDEzLCAyMzYsIDIwMCwgOSwgMTMsIDIzNiwgMTk5LCA5LCAxMywgMjM2LCAxOTgsIDksIDEzLCAyMzYsIAotICAgIDE5NywgOSwgMTMsIDIzNiwgMTk2LCA5LCAxMywgMjM2LCAxOTUsIDksIDEzLCAyMzYsIDE5NCwgOSwgMTMsIDIzNiwgMTkzLCAKLSAgICA5LCAxMywgMjM2LCAxOTIsIDksIDEzLCAyMzYsIDE5MSwgOSwgMTMsIDIzNiwgMTkwLCA5LCAxMywgMjM2LCAxODksIDksIAotICAgIDEzLCAyMzYsIDE4OCwgOSwgMTMsIDIzNiwgMTg3LCA5LCAxMywgMjM2LCAxODYsIDksIDEzLCAyMzYsIDE4NSwgOSwgMTMsIAotICAgIDIzNiwgMTg0LCA5LCAxMywgMjM2LCAxODMsIDksIDEzLCAyMzYsIDE4MiwgOSwgMTMsIDIzNiwgMTgxLCA5LCAxMywgMjM2LCAKLSAgICAxODAsIDksIDEzLCAyMzYsIDE3OSwgOSwgMTMsIDIzNiwgMTc4LCA5LCAxMywgMjM2LCAxNzcsIDksIDEzLCAyMzYsIDE3NiwgCi0gICAgOSwgMTMsIDIzNiwgMTc1LCA5LCAxMywgMjM2LCAxNzQsIDksIDEzLCAyMzYsIDE3MywgOSwgMTMsIDIzNiwgMTcyLCA5LCAKLSAgICAxMywgMjM2LCAxNzEsIDksIDEzLCAyMzYsIDE3MCwgOSwgMTMsIDIzNiwgMTY5LCA5LCAxMywgMjM2LCAxNjgsIDksIDEzLCAKLSAgICAyMzYsIDE2NywgOSwgMTMsIDIzNiwgMTY2LCA5LCAxMywgMjM2LCAxNjUsIDksIDEzLCAyMzYsIDE2NCwgOSwgMTMsIDIzNiwgCi0gICAgMTYzLCA5LCAxMywgMjM2LCAxNjIsIDksIDEzLCAyMzYsIDE2MSwgOSwgMTMsIDIzNiwgMTYwLCA5LCAxMywgMjM2LCAxNTksIAotICAgIDksIDEzLCAyMzYsIDE1OCwgOSwgMTMsIDIzNiwgMTU3LCA5LCAxMywgMjM2LCAxNTYsIDksIDEzLCAyMzYsIDE1NSwgOSwgCi0gICAgMTMsIDIzNiwgMTU0LCA5LCAxMywgMjM2LCAxNTMsIDksIDEzLCAyMzYsIDE1MiwgOSwgMTMsIDIzNiwgMTUxLCA5LCAxMywgCi0gICAgMjM2LCAxNTAsIDksIDEzLCAyMzYsIDE0OSwgOSwgMTMsIDIzNiwgMTQ4LCA5LCAxMywgMjM2LCAxNDcsIDksIDEzLCAyMzYsIAotICAgIDE0NiwgOSwgMTMsIDIzNiwgMTQ1LCA5LCAxMywgMjM2LCAxNDQsIDksIDEzLCAyMzYsIDE0MywgOSwgMTMsIDIzNiwgMTQyLCAKLSAgICA5LCAxMywgMjM2LCAxNDEsIDksIDEzLCAyMzYsIDE0MCwgOSwgMTMsIDIzNiwgMTM5LCA5LCAxMywgMjM2LCAxMzgsIDksIAotICAgIDEzLCAyMzYsIDEzNywgOSwgMTMsIDIzNiwgMTM2LCA5LCAxMywgMjM2LCAxMzUsIDksIDEzLCAyMzYsIDEzNCwgOSwgMTMsIAotICAgIDIzNiwgMTMzLCA5LCAxMywgMjM2LCAxMzIsIDksIDEzLCAyMzYsIDEzMSwgOSwgMTMsIDIzNiwgMTMwLCA5LCAxMywgMjM2LCAKLSAgICAxMjksIDksIDEzLCAyMzYsIDEyOCwgOSwgMTMsIDIzNiwgMTI3LCA5LCAxMywgMjM2LCAxMjYsIDksIDEzLCAyMzYsIDEyNSwgCi0gICAgOSwgMTMsIDIzNiwgMTI0LCA5LCAxMywgMjM2LCAxMjMsIDksIDEzLCAyMzYsIDEyMiwgOSwgMTMsIDIzNiwgMTIxLCA5LCAKLSAgICAxMywgMjM2LCAxMjAsIDksIDEzLCAyMzYsIDExOSwgOSwgMTMsIDIzNiwgMTE4LCA5LCAxMywgMjM2LCAxMTcsIDksIDEzLCAKLSAgICAyMzYsIDExNiwgOSwgMTMsIDIzNiwgMTE1LCA5LCAxMywgMjM2LCAxMTQsIDksIDEzLCAyMzYsIDExMywgOSwgMTMsIDIzNiwgCi0gICAgMTEyLCA5LCAxMywgMjM2LCAxMTEsIDksIDEzLCAyMzYsIDExMCwgOSwgMTMsIDIzNiwgMTA5LCA5LCAxMywgMjM2LCAxMDgsIAotICAgIDksIDEzLCAyMzYsIDEwNywgOSwgMTMsIDIzNiwgMTA2LCA5LCAxMywgMjM2LCAxMDUsIDksIDEzLCAyMzYsIDEwNCwgOSwgCi0gICAgMTMsIDIzNiwgMTAzLCA5LCAxMywgMjM2LCAxMDIsIDksIDEzLCAyMzYsIDEwMSwgOSwgMTMsIDIzNiwgMTAwLCA5LCAxMywgCi0gICAgMjM2LCA5OSwgOSwgMTMsIDIzNiwgOTgsIDksIDEzLCAyMzYsIDk3LCA5LCAxMywgMjM2LCA5NiwgOSwgMTMsIDIzNiwgOTUsIAotICAgIDksIDEzLCAyMzYsIDk0LCA5LCAxMywgMjM2LCA5MywgOSwgMTMsIDIzNiwgOTIsIDksIDEzLCAyMzYsIDkxLCA5LCAxMywgCi0gICAgMjM2LCA5MCwgOSwgMTMsIDIzNiwgODksIDksIDEzLCAyMzYsIDg4LCA5LCAxMywgMjM2LCA4NywgOSwgMTMsIDIzNiwgODYsIAotICAgIDksIDEzLCAyMzYsIDg1LCA5LCAxMywgMjM2LCA4NCwgOSwgMTMsIDIzNiwgODMsIDksIDEzLCAyMzYsIDgyLCA5LCAxMywgCi0gICAgMjM2LCA4MSwgOSwgMTMsIDIzNiwgODAsIDksIDEzLCAyMzYsIDc5LCA5LCAxMywgMjM2LCA3OCwgOSwgMTMsIDIzNiwgNzcsIAotICAgIDksIDEzLCAyMzYsIDc2LCA5LCAxMywgMjM2LCA3NSwgOSwgMTMsIDIzNiwgNzQsIDksIDEzLCAyMzYsIDczLCA5LCAxMywgCi0gICAgMjM2LCA3MiwgOSwgMTMsIDIzNiwgNzEsIDksIDEzLCAyMzYsIDcwLCA5LCAxMywgMjM2LCA2OSwgOSwgMTMsIDIzNiwgNjgsIAotICAgIDksIDEzLCAyMzYsIDY3LCA5LCAxMywgMjM2LCA2NiwgOSwgMTMsIDIzNiwgNjUsIDksIDEzLCAyMzYsIDY0LCA5LCAxMywgCi0gICAgMjM2LCA2MywgOSwgMTMsIDIzNiwgNjIsIDksIDEzLCAyMzYsIDYxLCA5LCAxMywgMjM2LCA2MCwgNywgMywgMjYsIDI0NCwgCi0gICAgOTQsIDcsIDMsIDI2LCAyNDQsIDkwLCA3LCAzLCAyNiwgMjQ0LCA0NSwgNywgMywgMjYsIDI0NCwgOTMsIDcsIDMsIDI2LCAKLSAgICAyNDQsIDkyLCA3LCAzLCAyNiwgMTg0LCAyMjMsIDQsIDIxOCwgOTksIDcsIDMsIDI2LCAyMTksIDEwNywgMTQxLCAzLCAyNiwgCi0gICAgMjMxLCAxMjMsIDIyOCwgMTUwLCAxNDEsIDMsIDI2LCAyMzEsIDEyMywgMjQ1LCAxNjksIDE0MSwgMywgMjYsIDIzMSwgMTIzLCAKLSAgICAyMzUsIDIyNCwgMTQxLCAzLCAyNiwgMjE0LCAxNTcsIDIyOCwgMTUwLCAxNDEsIDMsIDI2LCAyMzEsIDEyMywgMjEzLCAxNDgsIAotICAgIDkzLCAxLCAyMTIsIDIyNSwgMiwgMjQxLCAxNDQsIDkzLCAyMjUsIDE0NSwgMjM1LCA1MywgMjE0LCAyNDMsIDkzLCAyNiwgCi0gICAgMjEyLCAyNTMsIDIxMiwgMjI1LCAyMTIsIDIyNSwgMjI2LCAxMTIsIDkzLCAxLCAyNTQsIDQ4LCAyNTMsIDc4LCA5MywgMSwgCi0gICAgMjEzLCAyMzIsIDI1NCwgNzgsIDkzLCAxLCAyMTMsIDIzMiwgMjQ4LCAxMzQsIDkzLCAxLCAyMTMsIDIzMiwgMjQxLCAyMjIsIAotICAgIDkzLCAxLCAyMTMsIDIzMiwgMjM0LCAyNTQsIDkzLCAxLCAyMTMsIDIzMiwgMjMzLCAxMTgsIDkzLCAxLCAyMTMsIDIzMiwgCi0gICAgNDAsIDIzMSwgMTI5LCA5MywgMSwgMjEzLCAyMzIsIDIyMywgMjE5LCA5MywgMSwgMjEzLCAyMzIsIDIxNywgMjQ1LCA5MywgCi0gICAgMSwgMjU0LCA0OCwgOTQsIDUyLCA5MywgMSwgMjIwLCAyMDEsIDIsIDIyMCwgMjAxLCAyNDcsIDc0LCA5MywgMSwgMjIwLCAKLSAgICAyMDEsIDIsIDIyMCwgODUsIDI0NywgNzQsIDkzLCAxLCAyMjAsIDIwMSwgMiwgMjQ4LCAxNTEsIDI0LCAyMjAsIDIwMSwgCi0gICAgMjQ3LCA3NCwgOTMsIDEsIDIyMCwgMjAxLCAyLCAyNDgsIDE1MSwgMjQsIDIyMCwgODUsIDI0NywgNzQsIDkzLCAxLCAxMDYsIAotICAgIDIsIDIyNiwgMTEyLCA5MywgMSwgMTA2LCAyLCAyMjQsIDIyMCwgOTMsIDEsIDEwNiwgMiwgMjMxLCAyMzQsIDkzLCAxLCAKLSAgICAyNTEsIDIwNiwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyNDIsIDE3OCwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyNDgsIDEzNSwgMiwgCi0gICAgMjQ4LCAxNTAsIDkzLCAxLCAyNDEsIDIyMywgMiwgMjMxLCAyMzQsIDkzLCAxLCAyMTQsIDIzNywgMiwgMjQ4LCAxNTAsIDkzLCAKLSAgICAxLCAyMTIsIDkxLCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIxNywgMTg0LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIxMiwgMjI1LCAKLSAgICAyLCAyNDgsIDE1MCwgOTMsIDEsIDQwLCAyMzQsIDI1NSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMzQsIDI1NSwgMiwgMjQ4LCAKLSAgICAxNTAsIDkzLCAxLCAyMzMsIDExOSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMzEsIDEzMCwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAKLSAgICAyMjgsIDUxLCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIyMiwgMTY1LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDQwLCAyMjYsIDk3LCAKLSAgICAyLCAyNDgsIDE1MCwgOTMsIDEsIDIyNiwgOTcsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjE2LCAxMzgsIDIsIDI0OCwgMTUwLCAKLSAgICA5MywgMSwgMjI0LCAxODUsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjIzLCAyMjAsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjIwLCAKLSAgICAyMDEsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjE3LCAyNDYsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjE0LCAyMzcsIDIsIDI0MSwgCi0gICAgNDcsIDkzLCAxLCAyNTEsIDIwNiwgMiwgMjI0LCA1OSwgOTMsIDEsIDIzNCwgMjU1LCAyLCAyMjQsIDU5LCA5MywgMSwgMjI2LCAKLSAgICA5NywgMiwgMjI0LCA1OSwgOTMsIDI2LCAxMDYsIDIzMywgMTE4LCAxMiwgMSwgMTA2LCAyMTQsIDMxLCA0OCwgMTcsIDEyLCAKLSAgICAxLCAxMDYsIDIxNCwgMzEsIDQwLCAxNywgMTIsIDEsIDI1MSwgMjQxLCA0OCwgMTcsIDEyLCAxLCAyNTEsIDI0MSwgNDAsIAotICAgIDE3LCAxMiwgMSwgMjUxLCAyNDEsIDcwLCAxNywgMTIsIDEsIDI1MSwgMjQxLCAxMzgsIDE3LCAxMiwgMSwgMjI2LCA4MSwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjI2LCA4MSwgNDAsIDE3LCAxMiwgMSwgMjI2LCA4MSwgNzAsIDE3LCAxMiwgMSwgMjI2LCA4MSwgCi0gICAgMTM4LCAxNywgMTIsIDEsIDI1MSwgMjI5LCA0OCwgMTcsIDEyLCAxLCAyNTEsIDIyOSwgNDAsIDE3LCAxMiwgMSwgMjUxLCAKLSAgICAyMjksIDcwLCAxNywgMTIsIDEsIDI1MSwgMjI5LCAxMzgsIDE3LCAxMiwgMSwgMjE2LCAxMDgsIDQ4LCAxNywgMTIsIDEsIAotICAgIDIxNiwgMTA4LCA0MCwgMTcsIDEyLCAxLCAyMTYsIDEwOCwgNzAsIDE3LCAxMiwgMSwgMjE2LCAxMDgsIDEzOCwgMTcsIDEyLCAKLSAgICAxLCAyMTcsIDIxNCwgNDgsIDE3LCAxMiwgMSwgMjE3LCAyMTQsIDQwLCAxNywgMTIsIDEsIDIxNywgMjE0LCA3MCwgMTcsIAotICAgIDEyLCAxLCAyMTcsIDIxNCwgMTM4LCAxNywgMTIsIDEsIDIxNiwgMTEwLCA0OCwgMTcsIDEyLCAxLCAyMTYsIDExMCwgNDAsIAotICAgIDE3LCAxMiwgMSwgMjE2LCAxMTAsIDcwLCAxNywgMTIsIDEsIDIxNiwgMTEwLCAxMzgsIDE3LCAxMiwgMSwgMjE0LCAyMjYsIAotICAgIDQ4LCAxNywgMTIsIDEsIDIxNCwgMjI2LCA0MCwgMTcsIDEyLCAxLCAyMTQsIDIyNiwgNzAsIDE3LCAxMiwgMSwgMjE0LCAKLSAgICAyMjYsIDEzOCwgMTcsIDEyLCAxLCAyMjYsIDc5LCA0OCwgMTcsIDEyLCAxLCAyMjYsIDc5LCA0MCwgMTcsIDEyLCAxLCAyMjYsIAotICAgIDc5LCA3MCwgMTcsIDEyLCAxLCAyMjYsIDc5LCAxMzgsIDE3LCAxMiwgMSwgMjQ1LCAyNTUsIDQ4LCAxNywgMTIsIDEsIDI0NSwgCi0gICAgMjU1LCA0MCwgMTcsIDEyLCAxLCAyNDUsIDI1NSwgNzAsIDE3LCAxMiwgMSwgMjQ1LCAyNTUsIDEzOCwgMTcsIDEyLCAxLCAKLSAgICAyMjgsIDE1LCA0OCwgMTcsIDEyLCAxLCAyMjgsIDE1LCA0MCwgMTcsIDEyLCAxLCAyMjgsIDE1LCA3MCwgMTcsIDEyLCAxLCAKLSAgICAyMjgsIDE1LCAxMzgsIDE3LCAxMiwgMSwgMjE3LCAyMzQsIDQ4LCAxNywgMTIsIDEsIDIxNywgMjM0LCA0MCwgMTcsIDEyLCAKLSAgICAxLCAyMTcsIDIzNCwgNzAsIDE3LCAxMiwgMSwgMjE3LCAyMzQsIDEzOCwgMTcsIDEyLCAxLCAyMTcsIDIzMiwgNDgsIDE3LCAKLSAgICAxMiwgMSwgMjE3LCAyMzIsIDQwLCAxNywgMTIsIDEsIDIxNywgMjMyLCA3MCwgMTcsIDEyLCAxLCAyMTcsIDIzMiwgMTM4LCAKLSAgICAxNywgMTIsIDEsIDI0OCwgODQsIDQ4LCAxNywgMTIsIDEsIDI0OCwgODQsIDQwLCAxNywgMTIsIDEsIDI0OCwgMTQ3LCA0OCwgCi0gICAgMTcsIDEyLCAxLCAyNDgsIDE0NywgNDAsIDE3LCAxMiwgMSwgMjQ2LCAyNiwgNDgsIDE3LCAxMiwgMSwgMjQ2LCAyNiwgNDAsIAotICAgIDE3LCAxMiwgMSwgMjQ4LCA4MiwgNDgsIDE3LCAxMiwgMSwgMjQ4LCA4MiwgNDAsIDE3LCAxMiwgMSwgMjM1LCAxMjIsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDIzNSwgMTIyLCA0MCwgMTcsIDEyLCAxLCAyMjMsIDc4LCA0OCwgMTcsIDEyLCAxLCAyMjMsIDc4LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyMzQsIDE4MSwgNDgsIDE3LCAxMiwgMSwgMjM0LCAxODEsIDQwLCAxNywgMTIsIDEsIDIzNCwgMTgxLCAKLSAgICA3MCwgMTcsIDEyLCAxLCAyMzQsIDE4MSwgMTM4LCAxNywgMTIsIDEsIDI0MywgOTgsIDQ4LCAxNywgMTIsIDEsIDI0MywgOTgsIAotICAgIDQwLCAxNywgMTIsIDEsIDI0MywgOTgsIDcwLCAxNywgMTIsIDEsIDI0MywgOTgsIDEzOCwgMTcsIDEyLCAxLCAyNDIsIDgzLCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyNDIsIDgzLCA0MCwgMTcsIDEyLCAxLCAyNDIsIDgzLCA3MCwgMTcsIDEyLCAxLCAyNDIsIDgzLCAKLSAgICAxMzgsIDE3LCAxMiwgMSwgMjI5LCA4OSwgNDgsIDE3LCAxMiwgMSwgMjI5LCA4OSwgNDAsIDE3LCAxMiwgMSwgMjI5LCA4OSwgCi0gICAgNzAsIDE3LCAxMiwgMSwgMjI5LCA4OSwgMTM4LCAxNywgMTIsIDEsIDIyOCwgMTc0LCAyNDIsIDE5NSwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMjI4LCAxNzQsIDI0MiwgMTk1LCA0MCwgMTcsIDEyLCAxLCAyMjMsIDExNiwgNDgsIDE3LCAxMiwgMSwgMjIzLCAxMTYsIAotICAgIDQwLCAxNywgMTIsIDEsIDIyMywgMTE2LCA3MCwgMTcsIDEyLCAxLCAyMjMsIDExNiwgMTM4LCAxNywgMTIsIDEsIDI0MSwgCi0gICAgMjAzLCAyLCA3MywgNzgsIDQ4LCAxNywgMTIsIDEsIDI0MSwgMjAzLCAyLCA3MywgNzgsIDQwLCAxNywgMTIsIDEsIDI0MSwgCi0gICAgMjAzLCAyNDIsIDE0OCwgNDgsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDI0MiwgMTQ4LCA0MCwgMTcsIDEyLCAxLCAyNDEsIAotICAgIDIwMywgMjQyLCAxNDgsIDcwLCAxNywgMTIsIDEsIDI0MSwgMjAzLCAyNDIsIDE0OCwgMTM4LCAxNywgMTIsIDEsIDI0MSwgCi0gICAgMjAzLCAyNDcsIDk2LCA0OCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgMjQ3LCA5NiwgNDAsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIAotICAgIDI0NywgOTYsIDcwLCAxNywgMTIsIDEsIDI0MSwgMjAzLCAyNDcsIDk2LCAxMzgsIDE3LCAxMiwgMSwgNzMsIDI1MiwgNTMsIAotICAgIDQ4LCAxNywgMTIsIDEsIDczLCAyNTIsIDUzLCA0MCwgMTcsIDEyLCAxLCA3MywgMjUyLCA1MywgMiwgMTkyLCA3OCwgNDgsIAotICAgIDE3LCAxMiwgMSwgNzMsIDI1MiwgNTMsIDIsIDE5MiwgNzgsIDQwLCAxNywgMTIsIDE2LCA2MiwgNDksIDEyLCAxNiwgNjIsIAotICAgIDU1LCAxMiwgMTYsIDExNywgMTc2LCA0OSwgMTIsIDE2LCAxMTcsIDE3NiwgNTUsIDEyLCAxNiwgMTMzLCAxNzYsIDQ5LCAxMiwgCi0gICAgMTYsIDEzMywgMTc2LCA1NSwgMTIsIDE2LCAxMzMsIDE3NiwgMjI1LCAxNDEsIDI0NiwgNTgsIDQ5LCAxMiwgMTYsIDEzMywgCi0gICAgMTc2LCAyMjUsIDE0MSwgMjQ2LCA1OCwgNTUsIDEyLCAxNiwgMjQzLCAyMzcsIDE3NiwgNDksIDEyLCAxNiwgMjQzLCAyMzcsIAotICAgIDE3NiwgNTUsIDEyLCAxNiwgNTEsIDcxLCAyNTIsIDYwLCA1NSwgMTIsIDE2LCAxMTcsIDE3NiwgMjE0LCAxNjYsIDQ5LCAxMiwgCi0gICAgMTYsIDExNywgMTc2LCAyMTQsIDE2NiwgNTUsIDEyLCAxNiwgMjIzLCAxMzAsIDEyLCAxNiwgMywgMjE4LCAzMCwgNDksIDEyLCAKLSAgICAxNiwgMywgMjE4LCAzMCwgNTUsIDEyLCAxLCAyMjksIDE2MiwgNDgsIDE3LCAxMiwgMSwgMjI5LCAxNjIsIDQwLCAxNywgMTIsIAotICAgIDEsIDIyOSwgMTYyLCA3MCwgMTcsIDEyLCAxLCAyMjksIDE2MiwgMTM4LCAxNywgMTIsIDEsIDExMSwgNDgsIDE3LCAxMiwgMSwgCi0gICAgMTExLCA0MCwgMTcsIDEyLCAxLCAyMjcsIDEwMCwgNDgsIDE3LCAxMiwgMSwgMjI3LCAxMDAsIDQwLCAxNywgMTIsIDEsIAotICAgIDIxMiwgMjA0LCA0OCwgMTcsIDEyLCAxLCAyMTIsIDIwNCwgNDAsIDE3LCAxMiwgMSwgMTExLCAyLCAxOTIsIDc4LCA0OCwgCi0gICAgMTcsIDEyLCAxLCAyMTQsIDIzMywgNDgsIDE3LCAxMiwgMSwgMjE0LCAyMzMsIDQwLCAxNywgMTIsIDEsIDIzNCwgODIsIAotICAgIDIyNywgMTAwLCA0OCwgMTcsIDEyLCAxLCAyMzQsIDgyLCAyMjcsIDEwMCwgNDAsIDE3LCAxMiwgMSwgMjM0LCA4MiwgMjEyLCAKLSAgICAyMDQsIDQ4LCAxNywgMTIsIDEsIDIzNCwgODIsIDIxMiwgMjA0LCA0MCwgMTcsIDEyLCAxLCAxOTEsIDQ4LCAxNywgMTIsIDEsIAotICAgIDE5MSwgNDAsIDE3LCAxMiwgMSwgMTkxLCA3MCwgMTcsIDEyLCAxLCAxOTEsIDEzOCwgMTcsIDEyLCAxLCAyMTUsIDE3NywgCi0gICAgMjM0LCAxOTIsIDIzNCwgODIsIDEwNiwgMjEwLCA3MCwgMTcsIDEyLCAxLCAyMTUsIDE3NywgMjM0LCAxOTIsIDIzNCwgODIsIAotICAgIDEwNiwgMjEwLCAxMzgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxMDYsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgCi0gICAgMTkyLCA3OCwgMiwgMTA2LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDI1NCwgMTQ5LCA0OCwgMTcsIDEyLCAKLSAgICAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDI1NCwgMTQ5LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIxNCwgCi0gICAgMTUsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjE0LCAxNSwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAKLSAgICAxOTIsIDc4LCAyLCAxMTEsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTExLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgNzMsIDIsIDE5MiwgNzgsIDIsIDIyNywgMTAwLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIyNywgMTAwLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIxMiwgMjA0LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgCi0gICAgNzgsIDIsIDIxMiwgMjA0LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDE5MSwgNDgsIDE3LCAxMiwgMjYsIAotICAgIDczLCAyLCAxOTIsIDc4LCAyLCAxOTEsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTkxLCA3MCwgMTcsIAotICAgIDEyLCAyNiwgMjE1LCAxNzcsIDIzNCwgODIsIDczLCAyLCAxOTIsIDc4LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIAotICAgIDIxNSwgMTc3LCAyMzQsIDgyLCA3MywgMiwgMTkyLCA3OCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMTUsIDE3NywgCi0gICAgMjM0LCA4MiwgNzMsIDIsIDE5MiwgNzgsIDIsIDEwNiwgMjEwLCA3MCwgMTcsIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDI0NCwgMTM2LCA3MywgNDAsIDE3LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCA3MCwgMTcsIDEyLCAxLCAyNDQsIAotICAgIDEzNiwgNzMsIDEzOCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAKLSAgICAxOTIsIDc4LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICA3MywgMiwgMTkyLCA3OCwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgNzMsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDEyMSwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDI1MSwgMjMxLCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCA2MywgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDI1MSwgMjMxLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCA3MywgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIxNywgMjE2LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTIxLCA0OCwgMTcsIDEyLCAKLSAgICAyNiwgMjE3LCAyMTYsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCA0OCwgMTcsIDEyLCAKLSAgICAyNiwgMjE3LCAyMTYsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDczLCA0OCwgMTcsIDEyLCAKLSAgICAyNiwgMjE3LCAxNDYsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDIxNywgMTQ2LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDIxNywgMTQ2LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIxNywgMTQ2LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDE0NSwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDEyMSwgMiwgMTQ1LCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMTIxLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMTM2LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAyMzQsIDEzNiwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAxMzYsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAKLSAgICA4NiwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgCi0gICAgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAKLSAgICAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMTQ1LCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAyMzQsIDEzNiwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIxOCwgMzAsIDIsIDEyMSwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIxOCwgMzAsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjEyLCAxMDUsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjU0LCAxMDQsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDI0MiwgCi0gICAgMjIxLCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgCi0gICAgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCAKLSAgICAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCAKLSAgICAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCAKLSAgICAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgMTA2LCAKLSAgICAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTA2LCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMjEsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMjMzLCAxMjcsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTA2LCAyMTAsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTQ1LCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAyMzQsIDEzNiwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDIxMCwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDYzLCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICA2MywgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgNjMsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgNjMsIDIsIDYzLCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgNjMsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgNjMsIDIsIDczLCA0OCwgMTcsIDEyLCAKLSAgICAyNiwgMjI4LCAxNzQsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAyMjgsIDE3NCwgMiwgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAyMjgsIDE3NCwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAyNDEsIDIwMywgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjQxLCAyMDMsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjQxLCAKLSAgICAyMDMsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjQxLCAyMDMsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIAotICAgIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMjM0LCAxMzYsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCA3MywgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCA3MywgCi0gICAgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDE1NiwgMiwgMjE4LCAyMjMsIDEwNiwgNDgsIDE3LCAxMiwgMjYsIDIyMywgCi0gICAgMjQ2LCAyLCAyMTgsIDIyMywgMTA2LCA0OCwgMTcsIDEyLCAyNiwgMTA2LCAyMTAsIDIsIDIxOCwgMjIzLCAxMDYsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyNDgsIDEyOCwgNDgsIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDIzNCwgMjA5LCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjQ0LCAxMzQsIDQ4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyNDgsIAotICAgIDEzMCwgNDgsIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDIzNCwgMjExLCA0OCwgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgCi0gICAgMjE4LCAyMjMsIDEwNiwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMTIsIDEwMiwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCA2MywgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMjgsIDE3NCwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIAotICAgIDc4LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIAotICAgIDI1MSwgMjMxLCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAyMTIsIDEwMiwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDI1MSwgMjMxLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAyMjgsIDE3NCwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDI1MSwgMjMxLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCA3MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMjE2LCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyMTIsIDEwMiwgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDIxNywgMjE2LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyMjgsIDE3NCwgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDIxNywgMjE2LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA3MywgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDIxNywgMTQ2LCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIDIxNywgMTQ2LCAyLCAyMTIsIDEwMiwgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIxNywgMTQ2LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIxNywgMTQ2LCAyLCAyMjgsIDE3NCwgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIxNywgMTQ2LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIxNywgMTQ2LCAyLCA3MywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCA3MywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA3MywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMDYsIDQwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMjMzLCAxMjcsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTA2LCAyMTAsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNzMsIDQwLCAxNywgMTIsIAotICAgIDI2LCA2MywgMiwgMTA2LCA0MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIAotICAgIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAKLSAgICAxNzQsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDIyOCwgMTc0LCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAKLSAgICAxNzQsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMTA2LCAKLSAgICAyMTAsIDIsIDIxOCwgMjIzLCAxMDYsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAKLSAgICA3MywgMiwgMjEyLCAxMDIsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMjI4LCAKLSAgICAxNzQsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgNzMsIDQwLCAxNywgCi0gICAgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDEyMSwgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIAotICAgIDc4LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIAotICAgIDI1MSwgMjMxLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjUxLCAKLSAgICAyMzEsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjUxLCAKLSAgICAyMzEsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIxNywgCi0gICAgMjE2LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyMTcsIAotICAgIDIxNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCAyMTcsIAotICAgIDE0NiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDcwLCAKLSAgICAxNywgMTIsIDI2LCAxMjEsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDEyMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMzQsIAotICAgIDEzNiwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAxMzYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgCi0gICAgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjM0LCAKLSAgICAxMzYsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAxMjEsIAotICAgIDcwLCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgNjMsIAotICAgIDcwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDEyMSwgNzAsIAotICAgIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCA2MywgNzAsIAotICAgIDE3LCAxMiwgMjYsIDIxOCwgMzAsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIxMiwgMTA1LCAyLCA2MywgNzAsIDE3LCAxMiwgCi0gICAgMjYsIDI1NCwgMTA0LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAKLSAgICAyNDIsIDIyMSwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjQ0LCAKLSAgICAxMTIsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyNDQsIDExMiwgCi0gICAgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgCi0gICAgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIAotICAgIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMjM0LCAKLSAgICAxMzYsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMjMzLCAxMjcsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgCi0gICAgNjMsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEyMSwgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA2MywgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxNDUsIDcwLCAKLSAgICAxNywgMTIsIDI2LCA2MywgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAKLSAgICAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgCi0gICAgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgCi0gICAgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjQxLCAyMDMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjQxLCAyMDMsIDIsIDIxOCwgCi0gICAgMjIzLCAxMDYsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDEyMSwgNzAsIDE3LCAKLSAgICAxMiwgMjYsIDczLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDczLCAKLSAgICAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCA3MywgCi0gICAgMiwgMTkyLCA3OCwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDYzLCAxMzgsIDE3LCAxMiwgCi0gICAgMjYsIDI1MSwgMjMxLCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNjMsIDEzOCwgMTcsIDEyLCAKLSAgICAyNiwgMjE3LCAyMTYsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDIxNywgMTQ2LCAyLCA2MywgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDE0NiwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDEzOCwgMTcsIDEyLCAKLSAgICAyNiwgMjIyLCA4NiwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCAxMzgsIDE3LCAxMiwgCi0gICAgMjYsIDIyMCwgMjQwLCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMjMzLCAxMjcsIDEzOCwgCi0gICAgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA2MywgMTM4LCAxNywgCi0gICAgMTIsIDI2LCAyMjgsIDE3NCwgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAKLSAgICAxMiwgMjYsIDczLCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCA3MywgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAyNiwgCi0gICAgMjIxLCAxNiwgMiwgMjQ0LCAxMzQsIDEzOCwgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjQ4LCAxMzAsIDEzOCwgMTcsIDEyLCAKLSAgICAyNiwgMjIxLCAxNiwgMiwgMjM0LCAyMTEsIDEzOCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyMTgsIDMwLCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDI1NCwgMTA0LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDI0MiwgMjIxLCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjIyLCA4NiwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAxMjEsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAKLSAgICAyNiwgMTIxLCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDE0NSwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAxNDUsIDIsIAotICAgIDczLCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAxMzYsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAxMzYsIDIsIAotICAgIDczLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIAotICAgIDczLCA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIAotICAgIDczLCA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMjIzLCAyNDYsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMjMsIAotICAgIDI0NiwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAyMjMsIDI0NiwgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAKLSAgICAyMjMsIDI0NiwgNDgsIDE3LCAxMiwgMjYsIDIxOCwgMzAsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgCi0gICAgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgCi0gICAgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgCi0gICAgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIAotICAgIDczLCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIAotICAgIDczLCA0MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDEyMSwgMiwgNzMsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAxNDUsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIAotICAgIDIzNCwgMTM2LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIzNCwgMTM2LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIAotICAgIDIyMiwgMTk2LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIAotICAgIDI0OCwgMTYwLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIAotICAgIDIyMCwgMjQwLCAyLCAxNDUsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAKLSAgICAyNDAsIDIsIDIzNCwgMTM2LCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAKLSAgICAyNDAsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMjIsIDE5NiwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMjAsIDI0MCwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIAotICAgIDIyMCwgMjQwLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIAotICAgIDIyMiwgODYsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjE4LCAzMCwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxNDUsIDEzOCwgMTcsIDEyLCAyNiwgCi0gICAgMjIyLCA4NiwgMiwgMTIxLCAxMzgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDIzNCwgMTM2LCAxMzgsIDE3LCAxMiwgMjYsIAotICAgIDIyMCwgMjQwLCAyLCAxNDUsIDEzOCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEyMSwgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMjAsIDI0MCwgMiwgMjM0LCAxMzYsIDEzOCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgCi0gICAgMjEyLCAxMDUsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIDEwNiwgMiwgMjQ0LCAxMzIsIDQwLCAxNywgMTIsIDI2LCAxMDYsIAotICAgIDIsIDI0NCwgMTMyLCA0OCwgMTcsIDIyNywgMTMsIDQyLCAyMjYsIDEzMSwgMjI3LCAxMywgNDYsIDIyNiwgMTMxLCAxMiwgCi0gICAgMjYsIDIxNywgMjE2LCAyLCAxNDUsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDEyMSwgMiwgMTQ1LCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDEyMSwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIAotICAgIDEyMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMjM0LCAxMzYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjE3LCAyMTYsIDIsIDYzLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNjMsIDIsIDEyMSwgNzAsIDE3LCAKLSAgICAxMiwgMjYsIDIxNywgMjE2LCAyLCA2MywgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDYzLCAyLCAxMjEsIAotICAgIDQwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDYzLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAxMjEsIDIsIDYzLCAyLCA3MywgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDEyMSwgMiwgNjMsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTIxLCAKLSAgICAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxNDUsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIAotICAgIDIsIDE0NSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCA2MywgMiwgMTIxLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjIyLCA4NiwgMiwgNjMsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCAxNDUsIDcwLCAKLSAgICAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCA2MywgMiwgNjMsIAotICAgIDcwLCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgMTIxLCAyLCAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgCi0gICAgMTIxLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAKLSAgICAyNDAsIDIsIDEyMSwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgCi0gICAgMjYsIDIyMCwgMjQwLCAyLCAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCAyLCAyMzQsIAotICAgIDEzNiwgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyMjAsIAotICAgIDI0MCwgMiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCAyLCA2MywgNzAsIDE3LCAxMiwgCi0gICAgMjYsIDI0OCwgMTYwLCAyLCAxMjEsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIzNCwgMTM2LCAKLSAgICAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAyMzQsIDEzNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMTgsIAotICAgIDMwLCAyLCA2MywgMiwgMTIxLCA0MCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgNjMsIDIsIDEyMSwgNzAsIDE3LCAxMiwgCi0gICAgMjYsIDIxOCwgMzAsIDIsIDYzLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxOCwgMzAsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDI1NCwgMTA0LCAyLCAxNDUsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDYzLCAyLCA2MywgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCA2MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgNjMsIAotICAgIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDI0MiwgCi0gICAgMjIxLCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgMiwgNjMsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDIzNCwgMTM2LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCAyMzQsIAotICAgIDEzNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNjMsIDIsIDEyMSwgNDAsIDE3LCAxMiwgMjYsIDIyNCwgCi0gICAgMjI2LCAyLCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAyLCA2MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIzMywgMTI3LCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEyMSwgMiwgMTA2LCAKLSAgICAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTQ1LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgCi0gICAgMiwgMTQ1LCAyLCAxNDUsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMjM0LCAxMzYsIDIsIDYzLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjMzLCAxMjcsIDIsIDIzNCwgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA2MywgMiwgCi0gICAgMTIxLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMTIxLCAKLSAgICAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxMjEsIDIsIAotICAgIDczLCA0MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgMiwgCi0gICAgNjMsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMjM0LCAxMzYsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAyMzQsIAotICAgIDEzNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDI0MSwgCi0gICAgMjAzLCAyLCA2MywgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjQxLCAyMDMsIDIsIDYzLCAyLCA2MywgNzAsIDE3LCAxMiwgCi0gICAgMjYsIDIyOCwgMTc0LCAyLCAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDEyMSwgMiwgMTA2LCAKLSAgICAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAKLSAgICAyLCAxNDUsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDE0NSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMjgsIDE3NCwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDYzLCAyLCAxMDYsIDIxMCwgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgNjMsIDIsIDYzLCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDIzNCwgMTM2LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAKLSAgICAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDE0NSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMjM0LCAxMzYsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDIzNCwgMTM2LCAKLSAgICAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIAotICAgIDIxNiwgMiwgNjMsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIAotICAgIDI2LCAxNDUsIDIsIDEyMSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDYzLCAyLCAxMDYsIDIxMCwgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDIzNCwgMTM2LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgCi0gICAgMTk2LCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyNDgsIDE2MCwgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxMjEsIDIsIDczLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgNjMsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgNjMsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA2MywgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA2MywgMiwgCi0gICAgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEyMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgCi0gICAgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIAotICAgIDIyOCwgMTc0LCAyLCAxNDUsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAyMzQsIDEzNiwgMiwgNzMsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTQ1LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA2MywgMiwgNjMsIAotICAgIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTQ1LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAKLSAgICAxNDUsIDIsIDEyMSwgNDAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDEyMSwgMiwgCi0gICAgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIAotICAgIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjM0LCAyNTUsIDIsIDYzLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCAxNDUsIDIsIDYzLCA3MCwgMTcsIAotICAgIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDYzLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDIzNCwgMTM2LCAyLCAKLSAgICA3MywgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCAxNzUsIAotICAgIDIxNSwgMTAyLCAyNTMsIDE1MywgMjM0LCAxMywgMjE5LCA3MCwgNSwgNDgsIDE3LCAxMiwgMjYsIDIyNCwgMjIyLCAyMTUsIAotICAgIDEwMiwgMjUzLCAxNTMsIDIzNCwgMTMsIDIxOSwgNzAsIDUsIDQ4LCAxNywgMTIsIDI2LCAyNTQsIDYyLCA0OCwgMTcsIDEyLCAKLSAgICAyNiwgMjU0LCA5MSwgNDgsIDE3LCAxMiwgMjYsIDIzMCwgMjIzLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxNzYsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyMjQsIDM1LCA0OCwgMTcsIDEyLCAyNiwgMjU0LCA4MCwgNDgsIDE3LCAxMiwgMjYsIDIxNCwgMzMsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyMjIsIDE3NSwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTc0LCAyNTQsIDgwLCAyMTQsIDMyLCAxMiwgMjYsIAotICAgIDIzNSwgMTM0LCAyMjMsIDE4NywgNTIsIDEyLCAyNiwgMjUxLCAxNTMsIDI1MywgMjA5LCAyNTMsIDIxMCwgNDMsIDIyMiwgCi0gICAgNzYsIDQzLCAyMjEsIDIyMSwgNDMsIDIyMSwgMTUzLCA0MywgMjIxLCAxNDIsIDQzLCAyMjEsIDEzMSwgNDMsIDIyMSwgMTIwLCAKLSAgICA0MywgMjIxLCAxMDksIDQzLCAyMjEsIDk4LCA0MywgMjIxLCA4NywgNDMsIDIyMiwgNzUsIDQzLCAyMjIsIDY0LCA0MywgCi0gICAgMjIyLCA1MywgNDMsIDIyMiwgNDIsIDQzLCAyMjIsIDMxLCA0MywgMjIyLCAyMCwgNDMsIDIyMiwgOSwgMjI1LCA3NCwgMjQzLCAKLSAgICAyNDUsIDMxLCA3MSwgMjQ5LCAxNTcsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDEwNSwgMjQ5LCAxNTcsIDIyNSwgNzQsIAotICAgIDI0MywgMjQ1LCAzMSwgNzEsIDEwNSwgMjQzLCAyMDAsIDIxOSwgNjksIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDI0OSwgCi0gICAgMTY0LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAyMjEsIDcwLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAyNDQsIAotICAgIDI1NCwgNzcsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDIyNCwgMTU4LCA3NywgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCAKLSAgICA3MSwgNDIsIDY3LCAyMzMsIDQ0LCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCA2NywgMjMzLCA0NCwgCi0gICAgMjUxLCA4MywgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMTk5LCAyNDUsIDEyMCwgMzcsIDI2LCA0MiwgMjQyLCA5LCAKLSAgICAzNywgMjYsIDQ2LCAyNDIsIDksIDM3LCA1MSwgMjE3LCA0MywgNDIsIDI0MiwgOSwgMzcsIDUxLCAyMTcsIDQzLCA0NiwgCi0gICAgMjQyLCA5LCAzNywgMjMyLCAzOCwgNDIsIDI0MiwgOSwgMzcsIDIzMiwgMzgsIDQ2LCAyNDIsIDksIDM3LCAyNDksIDEzNywgCi0gICAgMjMyLCAzNywgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMTE3LCA2MiwgMjMzLCA4MCwgMjI1LCA3NCwgMjQzLCAyNDUsIAotICAgIDMxLCA3MSwgMjQ1LCAxMTgsIDI0OCwgMTAxLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAyNDUsIDEwOSwgMjQ4LCAKLSAgICAxMDEsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDExNSwgMjMyLCAyNDIsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIAotICAgIDIxNCwgMTYsIDExNSwgMjMyLCAyNDIsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCAyMjYsIDEzMSwgMjI1LCA3NCwgCi0gICAgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDIyNiwgMTMxLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgMjQ5LCA0MCwgCi0gICAgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgMjQ5LCA0MCwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIAotICAgIDcxLCA0MiwgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCAyMTYsIDIxOSwgCi0gICAgMjIwLCAyMzMsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDgzLCAyMzMsIDQ0LCAxMjUsIDIyNSwgNzQsIAotICAgIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCA4MywgMjMzLCA0NCwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgCi0gICAgNTEsIDI1NCwgMTksIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDUxLCAyNTQsIDE5LCAxMjUsIDIyNSwgCi0gICAgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCAyNTQsIDE5LCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCAKLSAgICAyNTQsIDE5LCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCAyNDksIDEwMCwgMTI1LCAyMjUsIDc0LCAyNDMsIAotICAgIDI0NSwgMzEsIDcxLCA0NiwgMjQ5LCAxMDAsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDY3LCAyNDksIAotICAgIDEwMCwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgNjcsIDI0OSwgMTAwLCAxMjUsIDIyMSwgNTIsIDI0NywgCi0gICAgNzQsIDY3LCAyMjEsIDUyLCAyNDcsIDc0LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgNDEsIDEyNSwgMjI1LCAKLSAgICA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDQxLCAxMjUsIDI0OCwgMTAwLCAyMjYsIDI0MywgMjUwLCAxMDYsIDIyNiwgCi0gICAgMjQzLCAyMTQsIDE2LCAyMjYsIDI0MywgNTEsIDIxNCwgMTYsIDIyNiwgMjQzLCAyNDgsIDEwMCwgMTE1LCAyMzIsIDI0MiwgCi0gICAgMjUwLCAxMDYsIDExNSwgMjMyLCAyNDIsIDIxNCwgMTYsIDExNSwgMjMyLCAyNDIsIDMsIDI0OSwgMTU3LCAzLCAxMDUsIAotICAgIDI0OSwgMTU3LCAzLCAyNDMsIDIwMCwgMjE5LCA2OSwgMywgMjIxLCA3MCwgMywgMjQ5LCAxNjQsIDMsIDIyNCwgMTU4LCA3NywgCi0gICAgMywgMjQ0LCAyNTQsIDc3LCAzLCAyNDUsIDExOCwgMjQ4LCAxMDEsIDMsIDQyLCAyMjYsIDEzMSwgMywgNDYsIDIyNiwgMTMxLCAKLSAgICAzLCA0MiwgMjQ5LCA0MCwgMTI1LCAzLCA0NiwgMjQ5LCA0MCwgMTI1LCAzLCA0MiwgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIAotICAgIDMsIDQ2LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgMywgNTAsIDUyLCAzLCAyNTQsIDM1LCAzLCAyNTMsIDEzMiwgMywgCi0gICAgOTQsIDUyLCAzLCAyNDAsIDE1OSwgMywgMjMzLCAzOSwgNTIsIDMsIDI0MiwgMTA3LCA1MiwgMywgMjQ1LCA2MSwgNTIsIDMsIAotICAgIDIyMywgMjAzLCAyMTksIDIzMSwgMywgMjQ3LCA4NiwgNTIsIDMsIDIyNiwgNTcsIDUyLCAzLCAyNDksIDE1NiwgMjUzLCAKLSAgICAxMjIsIDEyLCAyNDQsIDEzMiwgNDgsIDE3LCAxMiwgMjE3LCAyNTEsIDIsIDI0NCwgMTMyLCA0OSwgMTIsIDI0OCwgMTI4LCAKLSAgICA0OCwgMTcsIDEyLCAyMTgsIDI4LCAyNDMsIDIyNywgMTIsIDIzNCwgMjA5LCA0OCwgMTcsIDEyLCAyNDQsIDEzNCwgNDgsIAotICAgIDE3LCAxMiwgMjQ0LCAxMzQsIDEzOCwgMTcsIDEyLCAyNDgsIDEzMCwgNDgsIDE3LCAxMiwgMjQ4LCAxMzAsIDEzOCwgMTcsIAotICAgIDEyLCAyMzQsIDIxMSwgNDgsIDE3LCAxMiwgMjM0LCAyMTEsIDEzOCwgMTcsIDEyLCAyMjEsIDE2LCA0OCwgMTcsIDEyLCAKLSAgICAyMjEsIDE2LCAxMzgsIDE3LCAxMiwgMjE4LCAyNDcsIDQ4LCAxNywgMTIsIDIxOCwgMjQ3LCAxMzgsIDE3LCAxMiwgMSwgCi0gICAgMTkyLCA0OCwgMTcsIDEyLCAxLCAxMDYsIDIsIDIzMiwgMzMsIDc4LCA0OCwgMTcsIDEyLCAxLCAxMDYsIDIsIDIzMiwgMzMsIAotICAgIDc4LCA0MCwgMTcsIDEyLCAxLCAxMDYsIDIsIDE5MiwgNzgsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMiwgMTkyLCA3OCwgNDAsIAotICAgIDE3LCAxMiwgMSwgMjE0LCAxNSwgMiwgMTkyLCA3OCwgNDgsIDE3LCAxMiwgMSwgMjE0LCAxNSwgMiwgMTkyLCA3OCwgNDAsIAotICAgIDE3LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDI1MSwgMjIwLCA0OCwgMTcsIDEyLCAxLCAxMDYsIDIsIDE5MiwgMjUxLCAyMjAsIAotICAgIDQwLCAxNywgMTIsIDEsIDczLCAyLCAxOTIsIDc4LCA0OCwgMTcsIDEyLCAxLCA3MywgMiwgMTkyLCA3OCwgNDAsIDE3LCAxMiwgCi0gICAgMSwgNzMsIDIsIDE5MiwgNzgsIDcwLCAxNywgMTIsIDEsIDczLCAyLCAxOTIsIDc4LCAxMzgsIDE3LCAxMiwgMSwgMTA2LCAKLSAgICA0OCwgMTcsIDEyLCAxLCAxMDYsIDQwLCAxNywgMTIsIDEsIDI1MSwgMjMxLCA0OCwgMTcsIDEyLCAxLCAyNTEsIDIzMSwgNDAsIAotICAgIDE3LCAxMiwgMSwgMjUxLCAyMzEsIDcwLCAxNywgMTIsIDEsIDI1MSwgMjMxLCAxMzgsIDE3LCAxMiwgMSwgMjE3LCAyMTYsIAotICAgIDIzMSwgMjI4LCA0OCwgMTcsIDEyLCAxLCAyMTcsIDIxNiwgMjMxLCAyMjgsIDQwLCAxNywgMTIsIDEsIDIxNywgMjE2LCA0OCwgCi0gICAgMTcsIDEyLCAxLCAyMTcsIDIxNiwgNDAsIDE3LCAxMiwgMSwgMjE3LCAyMTYsIDcwLCAxNywgMTIsIDEsIDIxNywgMjE2LCAKLSAgICAxMzgsIDE3LCAxMiwgMSwgMjE3LCAxNDYsIDQ4LCAxNywgMTIsIDEsIDIxNywgMTQ2LCA0MCwgMTcsIDEyLCAxLCAyMTcsIAotICAgIDE0NiwgNzAsIDE3LCAxMiwgMSwgMjE3LCAxNDYsIDEzOCwgMTcsIDEyLCAxLCAxNDUsIDQ4LCAxNywgMTIsIDEsIDE0NSwgCi0gICAgNDAsIDE3LCAxMiwgMSwgMTQ1LCA3MCwgMTcsIDEyLCAxLCAxNDUsIDEzOCwgMTcsIDEyLCAxLCAxMjEsIDQ4LCAxNywgMTIsIAotICAgIDEsIDEyMSwgNDAsIDE3LCAxMiwgMSwgMTIxLCA3MCwgMTcsIDEyLCAxLCAxMjEsIDEzOCwgMTcsIDEyLCAxLCAyMzQsIDEzNiwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjM0LCAxMzYsIDQwLCAxNywgMTIsIDEsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAxLCAyMzQsIAotICAgIDEzNiwgMTM4LCAxNywgMTIsIDEsIDI0OCwgMTQxLCA0OCwgMTcsIDEyLCAxLCAyNDgsIDE0MSwgNDAsIDE3LCAxMiwgMSwgCi0gICAgMjE3LCAxNTYsIDQ4LCAxNywgMTIsIDEsIDIxNywgMTU2LCA0MCwgMTcsIDEyLCAxLCAyMjMsIDI0NiwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDEsIDIxMiwgMTAyLCA0OCwgMTcsIDEyLCAxLCAyMTIsIDEwMiwgNDAsIDE3LCAKLSAgICAxMiwgMSwgMjIyLCA4NiwgNDgsIDE3LCAxMiwgMSwgMjIyLCA4NiwgNDAsIDE3LCAxMiwgMSwgMjIyLCA4NiwgNzAsIDE3LCAKLSAgICAxMiwgMSwgMjIyLCA4NiwgMTM4LCAxNywgMTIsIDEsIDIyMCwgMjQwLCA0OCwgMTcsIDEyLCAxLCAyMjAsIDI0MCwgNDAsIAotICAgIDE3LCAxMiwgMSwgMjIwLCAyNDAsIDcwLCAxNywgMTIsIDEsIDIyMCwgMjQwLCAxMzgsIDE3LCAxMiwgMSwgMjIyLCAxOTYsIAotICAgIDQ4LCAxNywgMTIsIDEsIDIyMiwgMTk2LCA0MCwgMTcsIDEyLCAxLCAyMjIsIDE5NiwgNzAsIDE3LCAxMiwgMSwgMjIyLCAKLSAgICAxOTYsIDEzOCwgMTcsIDEyLCAxLCAyNDgsIDE2MCwgNDgsIDE3LCAxMiwgMSwgMjQ4LCAxNjAsIDQwLCAxNywgMTIsIDEsIAotICAgIDI0OCwgMTYwLCA3MCwgMTcsIDEyLCAxLCAyNDgsIDE2MCwgMTM4LCAxNywgMTIsIDEsIDIxOCwgMzAsIDQ4LCAxNywgMTIsIAotICAgIDEsIDIxOCwgMzAsIDQwLCAxNywgMTIsIDEsIDIxOCwgMzAsIDcwLCAxNywgMTIsIDEsIDIxOCwgMzAsIDEzOCwgMTcsIDEyLCAKLSAgICAxLCAyMTIsIDEwNSwgNDgsIDE3LCAxMiwgMSwgMjEyLCAxMDUsIDQwLCAxNywgMTIsIDEsIDIxMiwgMTA1LCA3MCwgMTcsIAotICAgIDEyLCAxLCAyMTIsIDEwNSwgMTM4LCAxNywgMTIsIDEsIDI1NCwgMTA0LCA0OCwgMTcsIDEyLCAxLCAyNTQsIDEwNCwgNDAsIAotICAgIDE3LCAxMiwgMSwgMjU0LCAxMDQsIDcwLCAxNywgMTIsIDEsIDI1NCwgMTA0LCAxMzgsIDE3LCAxMiwgMSwgMjQyLCAyMjEsIAotICAgIDQ4LCAxNywgMTIsIDEsIDI0MiwgMjIxLCA0MCwgMTcsIDEyLCAxLCAyNDIsIDIyMSwgNzAsIDE3LCAxMiwgMSwgMjQyLCAKLSAgICAyMjEsIDEzOCwgMTcsIDEyLCAxLCAyNDQsIDExMiwgNDgsIDE3LCAxMiwgMSwgMjQ0LCAxMTIsIDQwLCAxNywgMTIsIDEsIAotICAgIDI0NCwgMTEyLCA3MCwgMTcsIDEyLCAxLCAyNDQsIDExMiwgMTM4LCAxNywgMTIsIDEsIDIyNCwgMjI2LCA0OCwgMTcsIDEyLCAKLSAgICAxLCAyMjQsIDIyNiwgNDAsIDE3LCAxMiwgMSwgMjI0LCAyMjYsIDcwLCAxNywgMTIsIDEsIDIyNCwgMjI2LCAxMzgsIDE3LCAKLSAgICAxMiwgMSwgMjM0LCAyNTUsIDQ4LCAxNywgMTIsIDEsIDIzNCwgMjU1LCA0MCwgMTcsIDEyLCAxLCAyMzQsIDI1NSwgNzAsIAotICAgIDE3LCAxMiwgMSwgMjM0LCAyNTUsIDEzOCwgMTcsIDEyLCAxLCAyMzMsIDEyNywgNDgsIDE3LCAxMiwgMSwgMjMzLCAxMjcsIAotICAgIDQwLCAxNywgMTIsIDEsIDIzMywgMTI3LCA3MCwgMTcsIDEyLCAxLCAyMzMsIDEyNywgMTM4LCAxNywgMTIsIDEsIDYzLCA0OCwgCi0gICAgMTcsIDEyLCAxLCA2MywgNDAsIDE3LCAxMiwgMSwgNjMsIDcwLCAxNywgMTIsIDEsIDYzLCAxMzgsIDE3LCAxMiwgMSwgMjI4LCAKLSAgICAxNzQsIDQ4LCAxNywgMTIsIDEsIDIyOCwgMTc0LCA0MCwgMTcsIDEyLCAxLCAyMjgsIDE3NCwgNzAsIDE3LCAxMiwgMSwgCi0gICAgMjI4LCAxNzQsIDEzOCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgNDgsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDQwLCAxNywgMTIsIAotICAgIDEsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDEsIDIxNCwgMTUsIDQ4LCAxNywgCi0gICAgMTIsIDEsIDIxNCwgMTUsIDQwLCAxNywgMTIsIDEsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAxLCAxMDYsIDIxMCwgNDAsIDE3LCAKLSAgICAxMiwgMSwgNzMsIDQ4LCAxNywgMTIsIDEsIDczLCA0MCwgMTcsIDEyLCAxLCA3MywgNzAsIDE3LCAxMiwgMSwgNzMsIDEzOCwgCi0gICAgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMiwgMjMyLCAzMywgNzgsIDQ4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgCi0gICAgMiwgMTA2LCAyLCAyMzIsIDMzLCA3OCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDIsIDE5MiwgNzgsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAyLCAxOTIsIDc4LCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIAotICAgIDEwNiwgMiwgMTkyLCAyNTEsIDIyMCwgNDgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDIsIDE5MiwgMjUxLCAKLSAgICAyMjAsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgCi0gICAgNDAsIDE3LCAyMTIsIDgwLCAyMTMsIDIzMCwgMjI4LCAxODQsIDIxOSwgMjA2LCAxMjAsIDI0NCwgMjU0LCA3NywgMTIwLCAKLSAgICAyMjQsIDE0MywgNzcsIDEyMCwgNTAsIDUyLCAxMjAsIDI0NywgODYsIDUyLCAxMjAsIDIyNiwgNTcsIDUyLCAxMjAsIDI1NCwgCi0gICAgMzUsIDEyMCwgMjUzLCAyMjYsIDEyMCwgNDIsIDIyNiwgMTMxLCAxMjAsIDQ2LCAyMjYsIDEzMSwgMTIwLCAyNTMsIDEzMiwgCi0gICAgMTIwLCA5NCwgNTIsIDEyMCwgMjQ5LCAxNTcsIDEyMCwgMjQwLCAxNTksIDEyMCwgMjQzLCAyMDAsIDIxOSwgNjksIDEyMCwgCi0gICAgMjE5LCAyMzEsIDEyMCwgMjEsIDIxMiwgNzksIDEyMCwgMjEsIDExNiwgMTIwLCAyMSwgMTA5LCAxMjAsIDIxLCAxNjYsIAotICAgIDEyMCwgMjEsIDE2MywgMTIwLCAyMSwgMTgwLCAxMjAsIDIxLCAxODksIDEyMCwgMjEsIDE5OCwgMTIwLCAyMSwgMTk1LCAKLSAgICAxMjAsIDIxLCAyMDAsIDEyMCwgMjQ5LCAxNjQsIDEyMCwgMjIxLCA3MCwgMTIwLCAyMzMsIDM5LCA1MiwgMTIwLCAyNDUsIAotICAgIDYxLCA1MiwgMTIwLCAyNDIsIDEwNywgNTIsIDEyMCwgMjI0LCAxNTgsIDc3LCAxMjAsIDI0OSwgMTU2LCAyNTMsIDEyMiwgCi0gICAgMTIwLCA3LCA2LCAxLCA2MSwgMTIwLCA3LCA2LCAxLCAyNTMsIDc0LCAxMjAsIDcsIDYsIDEsIDI1MCwgMjUyLCAxMjAsIDcsIAotICAgIDYsIDEsIDI0OSwgMywgMTIwLCA3LCA2LCAxLCA3NCwgMTIwLCA3LCA2LCAxLCAyNDQsIDIzMCwgMTIwLCA3LCA2LCAxLCAKLSAgICAyNDMsIDE3NywgMTIwLCA3LCA2LCAxLCAyNDIsIDQxLCAxMjAsIDcsIDYsIDEsIDcyLCAxMjAsIDcsIDYsIDEsIDIzNSwgCi0gICAgMTQyLCAxMjAsIDcsIDYsIDEsIDIzNSwgMjcsIDEyMCwgNywgNiwgMSwgMTUwLCAxMjAsIDcsIDYsIDEsIDE4MywgMTIwLCA3LCAKLSAgICA2LCAxLCAyMDQsIDEyMCwgNywgNiwgMSwgNzUsIDEyMCwgNywgNiwgMSwgMjI2LCAyMjksIDEyMCwgNywgNiwgMSwgMjI0LCAKLSAgICAyNDAsIDEyMCwgNywgNiwgMSwgMTQ5LCAxMjAsIDcsIDYsIDEsIDE5NywgMTIwLCA3LCA2LCAxLCAyMTgsIDk5LCAxMjAsIDcsIAotICAgIDYsIDEsIDY5LCAxMjAsIDcsIDYsIDEsIDIxNSwgNzksIDEyMCwgNywgNiwgMSwgMjE0LCA4MiwgMTIwLCA3LCA2LCAxLCAKLSAgICAyMTMsIDE2NiwgMTIwLCA3LCA2LCAxLCAyMTMsIDEwNSwgMTIwLCA3LCA2LCAxLCAyMTIsIDE1MiwgMTIwLCA0MiwgNDEsIAotICAgIDEyNSwgMTIwLCAyMjMsIDIwMywgMjE5LCAyMzEsIDEyMCwgNDYsIDQxLCAxMjUsIDEyMCwgMjQ5LCAyMjQsIDI1NCwgMTc0LCAKLSAgICAxMjAsIDExNSwgMjMyLCAyNDIsIDEyMCwgMjQyLCAxMTQsIDI1NCwgMTc0LCAxMjAsIDcsIDMsIDEsIDYxLCAxMjAsIDcsIDMsIAotICAgIDEsIDI1MywgNzQsIDEyMCwgNywgMywgMSwgMjUwLCAyNTIsIDEyMCwgNywgMywgMSwgMjQ5LCAzLCAxMjAsIDcsIDMsIDEsIAotICAgIDc0LCAxMjAsIDcsIDMsIDEsIDI0NCwgMjMwLCAxMjAsIDcsIDMsIDEsIDI0MywgMTc3LCAxMjAsIDcsIDMsIDEsIDI0MiwgCi0gICAgNDEsIDEyMCwgNywgMywgMSwgNzIsIDEyMCwgNywgMywgMSwgMjM1LCAxNDIsIDEyMCwgNywgMywgMSwgMjM1LCAyNywgMTIwLCAKLSAgICA3LCAzLCAxLCAxNTAsIDEyMCwgNywgMywgMSwgMTgzLCAxMjAsIDcsIDMsIDEsIDIwNCwgMTIwLCA3LCAzLCAxLCA3NSwgCi0gICAgMTIwLCA3LCAzLCAxLCAyMjYsIDIyOSwgMTIwLCA3LCAzLCAxLCAyMjQsIDI0MCwgMTIwLCA3LCAzLCAxLCAxNDksIDEyMCwgCi0gICAgNywgMywgMSwgMTk3LCAxMjAsIDcsIDMsIDEsIDIxOCwgOTksIDEyMCwgNywgMywgMSwgNjksIDEyMCwgNywgMywgMSwgMjE1LCAKLSAgICA3OSwgMTIwLCA3LCAzLCAxLCAyMTQsIDgyLCAxMjAsIDcsIDMsIDEsIDIxMywgMTY2LCAxMjAsIDcsIDMsIDEsIDIxMywgCi0gICAgMTA1LCAxMjAsIDcsIDMsIDEsIDIxMiwgMTUyLCAxMjAsIDQyLCAyNDksIDQwLCAxMjUsIDEyMCwgNzEsIDIzMiwgMjQyLCAKLSAgICAxMjAsIDQ2LCAyNDksIDQwLCAxMjUsIDEyMCwgMjE3LCA0MiwgMTIwLCA0MiwgNjcsIDIyNiwgMTMxLCAxMjAsIDQ2LCA2NywgCi0gICAgMjI2LCAxMzEsIDk4LCAxMDUsIDI0MywgMjAwLCAyMTksIDY5LCA5OCwgNDIsIDI0OSwgMTAwLCAxMjUsIDk4LCA0NiwgMjQ5LCAKLSAgICAxMDAsIDEyNSwgOTgsIDEwNSwgMjQ5LCAxNTcsIDk4LCA1NiwgMjMxLCAzNywgMjQ3LCA3NCwgOTgsIDU2LCAxLCAyMTMsIAotICAgIDIxNCwgOTgsIDU2LCAxLCAzLCA2MSwgOTgsIDU2LCAxLCAzLCA3MiwgOTgsIDU2LCAxLCAzLCA2OSwgOTgsIDU2LCAxLCAzLCAKLSAgICA3NCwgOTgsIDU2LCAxLCAzLCA3NSwgOTgsIDU2LCAxLCAzLCAxODYsIDk4LCA1NiwgMSwgMywgMjEyLCAyMDMsIDk4LCA1NiwgCi0gICAgMSwgMywgMjEyLCAyMzUsIDk4LCA1NiwgMSwgMywgMjE2LCA4MiwgOTgsIDIzNCwgMjA2LCAyMjUsIDU3LCAyMTksIDIxOCwgCi0gICAgNzcsIDk4LCA1NiwgMSwgNjEsIDk4LCA1NiwgMSwgNzIsIDk4LCA1NiwgMSwgNjksIDk4LCA1NiwgMSwgNzQsIDk4LCA1NiwgCi0gICAgMSwgNzUsIDk4LCA1NiwgMSwgMTgxLCA5OCwgNTYsIDEsIDIzNCwgMTAxLCA5OCwgNTYsIDEsIDIzMywgMjM4LCA5OCwgNTYsIAotICAgIDEsIDIzNCwgMTg4LCA5OCwgNTYsIDEsIDIzNCwgMzcsIDk4LCA1NiwgMSwgMjIyLCAyMDIsIDk4LCA1NiwgMSwgMjIwLCAKLSAgICAxMTcsIDk4LCA1NiwgMSwgMjE5LCAyNywgOTgsIDU2LCAxLCAyMjIsIDEwMCwgOTgsIDU2LCAxLCAyMTksIDI0MiwgOTgsIAotICAgIDU2LCAxLCAyMTgsIDUyLCA5OCwgNTYsIDEsIDIxNywgNzEsIDk4LCA1NiwgMSwgMjE2LCA4MiwgOTgsIDU2LCAxLCAyMTcsIAotICAgIDIyOSwgOTgsIDU2LCAxLCAxMDgsIDk4LCA1NiwgMSwgMjA1LCA5OCwgNTYsIDEsIDIyOSwgNjQsIDk4LCA1NiwgMSwgMjI4LCAKLSAgICA5MiwgOTgsIDU2LCAxLCAyMjksIDE4NywgOTgsIDU2LCAxLCAyMjgsIDE4NSwgOTgsIDU2LCAxLCAxNTksIDk4LCA1NiwgMSwgCi0gICAgMjQxLCAxNjUsIDk4LCA1NiwgMSwgMjQwLCAyMTIsIDk4LCA1NiwgMSwgMjQxLCAyMjIsIDk4LCA1NiwgMSwgMjQxLCA1NCwgCi0gICAgOTgsIDU2LCAxLCAxODgsIDk4LCA1NiwgMSwgMjMxLCA0MiwgOTgsIDU2LCAxLCAyMzAsIDE3MiwgOTgsIDU2LCAxLCAyMzEsIAotICAgIDE1NiwgOTgsIDU2LCAxLCAyMzAsIDIzMSwgOTgsIDU2LCAxLCAxODYsIDk4LCA1NiwgMSwgMjEyLCAyMDMsIDk4LCA1NiwgMSwgCi0gICAgMjEyLCAyMzUsIDk4LCA1NiwgMSwgMjAzLCA5OCwgNTYsIDEsIDIyMywgMTg4LCA5OCwgNTYsIDEsIDIyMywgNTEsIDk4LCAKLSAgICA1NiwgMSwgMjI0LCAyMSwgOTgsIDU2LCAxLCAyMjMsIDExMiwgOTgsIDU2LCAxLCAyMTQsIDQ5LCA5OCwgNTYsIDEsIDIwNCwgCi0gICAgOTgsIDU2LCAyMTQsIDExNiwgMjE5LCAyMTgsIDc3LCA5OCwgNTYsIDIyMSwgNzUsIDIxOSwgMjE4LCA3NywgOTgsIDIzLCAKLSAgICAyNDQsIDcyLCA5OCwgMjMsIDEsIDIzNCwgNjcsIDk4LCAyMywgMSwgMjE5LCAxNTAsIDk4LCAyMywgMSwgMjM0LCA2MCwgOTgsIAotICAgIDIzLCAxLCAyMjksIDU3LCA5OCwgMjMsIDEsIDIyOSwgNTUsIDk4LCAyMywgMSwgMjI5LCA1NCwgOTgsIDIzLCAxLCAyMTcsIAotICAgIDU1LCA5OCwgMjMsIDEsIDIxOSwgMTM5LCA5OCwgMjMsIDEsIDIyMywgMTc5LCA5OCwgMjMsIDEsIDIyMywgMTc0LCA5OCwgCi0gICAgMjMsIDEsIDIyMywgMTcxLCA5OCwgMjMsIDEsIDIyMywgMTY0LCA5OCwgMjMsIDEsIDIyMywgMTU5LCA5OCwgMjMsIDEsIAotICAgIDIyMywgMTU0LCA5OCwgMjMsIDEsIDIyMywgMTY1LCA5OCwgMjMsIDEsIDIyMywgMTc3LCA5OCwgMjMsIDEsIDIzMSwgMzAsIAotICAgIDk4LCAyMywgMSwgMjI1LCAyMjcsIDk4LCAyMywgMSwgMjE5LCAxNDcsIDk4LCAyMywgMSwgMjI1LCAyMTYsIDk4LCAyMywgMSwgCi0gICAgMjIwLCA3NiwgOTgsIDIzLCAxLCAyMTksIDE0NCwgOTgsIDIzLCAxLCAyMzYsIDUxLCA5OCwgMjMsIDEsIDI0OSwgMjM5LCAKLSAgICA5OCwgMjMsIDEsIDIxOSwgMTU0LCA5OCwgMjMsIDEsIDI1MCwgNDMsIDk4LCAyMywgMSwgMjM0LCAxMTYsIDk4LCAyMywgMSwgCi0gICAgMjE3LCAxMjYsIDk4LCAyMywgMSwgMjI2LCA3LCA5OCwgMjMsIDEsIDI0MSwgMTU4LCA5OCwgMjMsIDEsIDYxLCA5OCwgMjMsIAotICAgIDEsIDI1NCwgMTQ4LCA5OCwgMjMsIDEsIDE4NiwgOTgsIDIzLCAxLCAyMTMsIDgwLCA5OCwgMjMsIDEsIDI0NSwgNzYsIDk4LCAKLSAgICAyMywgMSwgNzQsIDk4LCAyMywgMSwgMjEzLCAyNywgOTgsIDIzLCAxLCAyMTMsIDM4LCA5OCwgMjMsIDEsIDc1LCA5OCwgMjMsIAotICAgIDEsIDIxNCwgNDksIDk4LCAyMywgMSwgMjE0LCA0NiwgOTgsIDIzLCAxLCAyMjcsIDk5LCA5OCwgMjMsIDEsIDIxMiwgMjM1LCAKLSAgICA5OCwgMjMsIDEsIDY5LCA5OCwgMjMsIDEsIDIxMywgMjUyLCA5OCwgMjMsIDEsIDIxNCwgNiwgOTgsIDIzLCAxLCAyMTMsIAotICAgIDIzNSwgOTgsIDIzLCAxLCAyMTIsIDIwMywgOTgsIDIzLCAxLCAyNDUsIDIyLCA5OCwgMjMsIDEsIDIxMiwgMjU1LCA5OCwgCi0gICAgMjMsIDEsIDcyLCAxMjAsIDI1MCwgMTEwLCA1MiwgMTIwLCAyMjUsIDEwOCwgNTIsIDEyMCwgMjI4LCAxNjMsIDUyLCAxMjAsIAotICAgIDIzMiwgMzcsIDEyMCwgMjUxLCA2MywgMTM0LCAxMjAsIDIxMywgMzEsIDUyLCAxMjAsIDIxMywgMjA0LCA1MiwgOTgsIDI0MywgCi0gICAgMjQzLCAxNzcsIDIxNCwgMjE2LCA5OCwgMTMyLCA2OCwgOTgsIDIxNSwgMTI0LCA2OCwgOTgsIDk1LCA2OCwgOTgsIDI0NiwgCi0gICAgNTgsIDY4LCA5OCwgODMsIDIxOSwgMTY2LCA5OCwgNjcsIDI0OSwgMjI4LCAyMzUsIDIwMSwgMjU0LCAxMCwgMjU0LCAyOSwgCi0gICAgMjM1LCAyMDEsIDI1NCwgMTAsIDIyMSwgNTcsIDIzNSwgMjAxLCAyNTQsIDEwLCAyMTcsIDE4OSwgMjI3LCAxMTMsIDIyMywgCi0gICAgMjI0LCAyNTAsIDc4LCAyMjMsIDIyNCwgMjUwLCA3OCwgNTgsIDU0LCA0LCAyNTMsIDU4LCA2MSwgNTgsIDU0LCA0LCAyNTMsIAotICAgIDI3LCA3NCwgNTgsIDU0LCA0LCAyNTMsIDM2LCA3MiwgNTgsIDU0LCA0LCAyNTMsIDQsIDc1LCA1OCwgNTQsIDQsIDI1MywgCi0gICAgNTQsIDY5LCA1OCwgNTQsIDQsIDI1MywgNzMsIDI0OCwgMTY0LCA1OCwgNTQsIDQsIDI1MywgMjAsIDI0OCwgNDEsIDU4LCAKLSAgICA1NCwgNCwgMjUzLCA2MCwgMjQ3LCAyMTEsIDU4LCA1NCwgNCwgMjUzLCA1MCwgMjQ3LCA5OSwgNTgsIDU0LCA0LCAyNTMsIAotICAgIDE0LCAyNDYsIDMzLCA1OCwgNTQsIDQsIDI1MywgOCwgMjM1LCAxMzksIDU4LCA1NCwgNCwgMjUzLCAxOSwgMjM1LCAxMjcsIAotICAgIDU4LCA1NCwgNCwgMjUzLCAyOSwgMjM1LCA3MSwgNTgsIDU0LCA0LCAyNTMsIDAsIDIzNSwgNTQsIDU4LCA1NCwgNCwgMjUyLCAKLSAgICAyNDQsIDE4MSwgNTgsIDU0LCA0LCAyNTMsIDIxLCAyMzQsIDE4OCwgNTgsIDU0LCA0LCAyNTIsIDI1NCwgMjM0LCAxMDEsIAotICAgIDU4LCA1NCwgNCwgMjUyLCAyNTEsIDIzNCwgMzcsIDU4LCA1NCwgNCwgMjUyLCAyNDAsIDIzMywgMjM4LCA1OCwgNTQsIDQsIAotICAgIDI1MiwgMjQxLCAxODgsIDU4LCA1NCwgNCwgMjUzLCA1MSwgMjMxLCAxNTYsIDU4LCA1NCwgNCwgMjUyLCAyNDgsIDIzMSwgCi0gICAgNDIsIDU4LCA1NCwgNCwgMjUzLCA0OSwgMjMwLCAyMzEsIDU4LCA1NCwgNCwgMjUzLCA0MSwgMjMwLCAxNzIsIDU4LCA1NCwgCi0gICAgNCwgMjUzLCA2MiwgMjA1LCA1OCwgNTQsIDQsIDI1MywgNDAsIDIyOSwgMTg3LCA1OCwgNTQsIDQsIDI1MywgMzQsIDIyOSwgCi0gICAgNjQsIDU4LCA1NCwgNCwgMjUzLCAxMywgMjI4LCAxODUsIDU4LCA1NCwgNCwgMjUzLCAxMCwgMjI4LCA5MiwgNTgsIDU0LCA0LCAKLSAgICAyNTMsIDY5LCAxOTMsIDU4LCA1NCwgNCwgMjUyLCAyNDksIDIyNiwgOTYsIDU4LCA1NCwgNCwgMjUzLCAyNiwgMjI1LCAyNDAsIAotICAgIDU4LCA1NCwgNCwgMjUzLCA1MywgMjI1LCAxNTAsIDU4LCA1NCwgNCwgMjUzLCAxNSwgMjI1LCAzNSwgNTgsIDU0LCA0LCAKLSAgICAyNTMsIDQ4LCAyMjQsIDIzMiwgNTgsIDU0LCA0LCAyNTIsIDI0MywgMjI0LCAyMTMsIDU4LCA1NCwgNCwgMjUzLCA0MywgCi0gICAgMjI0LCAxOTgsIDU4LCA1NCwgNCwgMjUzLCAzMiwgMjI0LCAxODcsIDU4LCA1NCwgNCwgMjUzLCA1LCAyMDMsIDU4LCA1NCwgCi0gICAgNCwgMjUzLCAzNywgMjI0LCAyMSwgNTgsIDU0LCA0LCAyNTMsIDEyLCAyMjMsIDE4OCwgNTgsIDU0LCA0LCAyNTMsIDcxLCAKLSAgICAyMjMsIDExMiwgNTgsIDU0LCA0LCAyNTMsIDM4LCAyMjMsIDUxLCA1OCwgNTQsIDQsIDI1MywgMzMsIDIyMiwgMjAyLCA1OCwgCi0gICAgNTQsIDQsIDI1MywgNTYsIDIyMiwgMTAwLCA1OCwgNTQsIDQsIDI1MywgMjQsIDIyMCwgMTE3LCA1OCwgNTQsIDQsIDI1MywgCi0gICAgNTIsIDIxOSwgMjQyLCA1OCwgNTQsIDQsIDI1MywgNywgMjE5LCAyNywgNTgsIDU0LCA0LCAyNTMsIDYsIDIxOCwgNTIsIDU4LCAKLSAgICA1NCwgNCwgMjUzLCA2NywgMjE3LCAyMjksIDU4LCA1NCwgNCwgMjUzLCAyOCwgMjE3LCA3MSwgNTgsIDU0LCA0LCAyNTMsIAotICAgIDY1LCAxMDgsIDU4LCA1NCwgNCwgMjUyLCAyNTIsIDIxNiwgODIsIDU4LCA1NCwgNCwgMjUzLCAxMSwgMjE0LCA0OSwgNTgsIAotICAgIDU0LCA0LCAyNTIsIDI0NiwgMjE0LCA2LCA1OCwgNTQsIDQsIDI1MywgMjUsIDIxMywgMjM1LCA1OCwgNTQsIDQsIDI1MywgCi0gICAgMjMsIDIxMywgMjE0LCA1OCwgNTQsIDQsIDI1MywgNDcsIDIxMiwgMTA5LCA1OCwgNTQsIDQsIDI1MiwgMjQ3LCAyMTIsIDg3LCAKLSAgICA1OCwgNTQsIDQsIDI1MywgNDQsIDIxMiwgMTYsIDU4LCA1NCwgNCwgMjUzLCAzOSwgMjU0LCAyMzQsIDU4LCA1NCwgNCwgCi0gICAgMjUzLCAyMiwgMjU0LCAyMzMsIDU4LCA1NCwgNCwgMjUyLCAyMzcsIDI1MywgMTA4LCA1OCwgNTQsIDQsIDI1MiwgMjUwLCAKLSAgICAyNDYsIDEsIDU4LCA1NCwgNCwgMjUyLCAyMzMsIDI0NiwgMCwgNTgsIDU0LCA0LCAyNTMsIDE3LCAyMjgsIDMxLCA1OCwgNTQsIAotICAgIDQsIDI1MywgMzUsIDIyNSwgMzQsIDU4LCA1NCwgNCwgMjUzLCAzLCAyMjUsIDM3LCA1OCwgNTQsIDQsIDI1MiwgMjQ1LCAKLSAgICAyMjQsIDc2LCA1OCwgNTQsIDQsIDI1MywgMzEsIDIyNCwgNzUsIDU4LCA1NCwgNCwgMjUyLCAyNTMsIDIyMywgMTExLCA1OCwgCi0gICAgNTQsIDQsIDI1MiwgMjU1LCAyMTgsIDUwLCA1OCwgNTQsIDQsIDI1MiwgMjM1LCAyMTYsIDQzLCA1OCwgNTQsIDQsIDI1MiwgCi0gICAgMjMyLCAxMDksIDU4LCA1NCwgMTYsIDI1MywgNDYsIDU4LCA1NCwgMTYsIDI1MywgNDUsIDU4LCA1NCwgMTYsIDI1MywgNDIsIAotICAgIDU4LCA1NCwgMTYsIDI1MywgMzAsIDU4LCA1NCwgMTYsIDI1MywgMTgsIDU4LCA1NCwgMTYsIDI1MywgMTYsIDU4LCA1NCwgCi0gICAgMTYsIDI1MywgOSwgNTgsIDU0LCAxNiwgMjUzLCAyLCA1OCwgNTQsIDE2LCAyNTMsIDEsIDU4LCA1NCwgMTYsIDI1MiwgMjQyLCAKLSAgICA1OCwgNTQsIDE2LCAyNTIsIDIzOSwgNTgsIDU0LCAxNiwgMjUyLCAyMzgsIDU4LCA1NCwgMTYsIDI1MiwgMjM2LCA1OCwgNTQsIAotICAgIDE2LCAyNTIsIDIzNCwgNTgsIDU0LCAxMDIsIDI1MiwgMjMxLCAyMzEsIDI0OCwgNTgsIDU0LCAxMDIsIDI1MiwgMjMwLCAKLSAgICAyMTMsIDIwOCwgNTgsIDU0LCAxMDIsIDI1MiwgMjI5LCAyNDgsIDI1LCA1OCwgNTQsIDEwMiwgMjUyLCAyMjgsIDI0NSwgNTgsIAotICAgIDU4LCA1NCwgMTAyLCAyNTIsIDIyNywgMjMxLCAyMjIsIDU4LCA1NCwgMTAyLCAyNTIsIDIyNiwgMjE5LCAxMDEsIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDIyNSwgMjQ1LCA0LCA1OCwgNTQsIDEwMiwgMjUyLCAyMjQsIDIyNCwgNDUsIDU4LCA1NCwgMTAyLCAyNTIsIAotICAgIDIyMywgMjIwLCAyNDIsIDU4LCA1NCwgMTAyLCAyNTIsIDIyMiwgMjQxLCAyMjEsIDU4LCA1NCwgMTAyLCAyNTIsIDIyMSwgCi0gICAgMjE5LCAyMTIsIDU4LCA1NCwgMTAyLCAyNTIsIDIyMCwgMjUxLCAxMjYsIDU4LCA1NCwgMTAyLCAyNTIsIDIxOSwgMjQ5LCAKLSAgICA4NCwgNTgsIDU0LCAxMDIsIDI1MiwgMjE4LCAyNTEsIDQ0LCA1OCwgNTQsIDEwMiwgMjUyLCAyMTcsIDIxMywgMjQzLCA1OCwgCi0gICAgNTQsIDEwMiwgMjUyLCAyMTYsIDI1MiwgNTYsIDU4LCA1NCwgMTAyLCAyNTIsIDIxNSwgMjI3LCA3MSwgNTgsIDU0LCAxMDIsIAotICAgIDI1MiwgMjE0LCAyMTksIDE4NiwgNTgsIDU0LCAxMDIsIDI1MiwgMjEzLCAyNDksIDExLCA1OCwgNTQsIDIzMCwgMjEyLCAKLSAgICAyNTIsIDIxMiwgMjM0LCAyMjksIDU4LCA1NCwgMjMwLCAyMTIsIDI1MiwgMjExLCAyMzQsIDIzNywgNTgsIDU0LCAxMDIsIAotICAgIDI1MiwgMjEwLCAyMjcsIDg0LCA1OCwgNTQsIDEwMiwgMjUyLCAyMDksIDIxMywgMjIxLCA1OCwgNTQsIDEwMiwgMjUyLCAKLSAgICAyMDgsIDU4LCA1NCwgMjMwLCAyMTIsIDI1MiwgMjA3LCAyNTMsIDE4OCwgNTgsIDU0LCAyMzAsIDIxMiwgMjUyLCAyMDYsIAotICAgIDIzMSwgMTE2LCA1OCwgNTQsIDEwMiwgMjUyLCAyMDUsIDI1MSwgNjIsIDU4LCA1NCwgMTAyLCAyNTIsIDIwNCwgMjQyLCAKLSAgICAxNDIsIDU4LCA1NCwgMTAyLCAyNTIsIDIwMywgNTgsIDU0LCAxMDIsIDI1MiwgMjAyLCAyMTMsIDE5OSwgNTgsIDU0LCAxMDIsIAotICAgIDI1MiwgMjAxLCA1OCwgNTQsIDEwMiwgMjUyLCAyMDAsIDU4LCA1NCwgMTAyLCAyNTIsIDE5OSwgMjQwLCAyMzUsIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDE5OCwgNTgsIDU0LCAxMDIsIDI1MiwgMTk3LCA1OCwgNTQsIDEwMiwgMjUyLCAxOTYsIDU4LCA1NCwgMjMwLCAKLSAgICAyMTIsIDI1MiwgMTk0LCAyMTYsIDU2LCA1OCwgNTQsIDEwMiwgMjUyLCAxOTMsIDU4LCA1NCwgMTAyLCAyNTIsIDE5MiwgNTgsIAotICAgIDU0LCAxMDIsIDI1MiwgMTkxLCAyNDksIDE4NywgNTgsIDU0LCAxMDIsIDI1MiwgMTkwLCA1OCwgNTQsIDEwMiwgMjUyLCAKLSAgICAxODksIDU4LCA1NCwgMTAyLCAyNTIsIDE4OCwgMjQzLCA2OSwgNTgsIDU0LCAxMDIsIDI1MiwgMTg3LCAyNTMsIDE3NSwgNTgsIAotICAgIDU0LCAxMDIsIDI1MiwgMTg2LCA1OCwgNTQsIDEwMiwgMjUyLCAxODUsIDU4LCA1NCwgMTAyLCAyNTIsIDE4NCwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMTgzLCA1OCwgNTQsIDEwMiwgMjUyLCAxODIsIDU4LCA1NCwgMTAyLCAyNTIsIDE4MSwgNTgsIDU0LCAxMDIsIAotICAgIDI1MiwgMTgwLCA1OCwgNTQsIDEwMiwgMjUyLCAxNzksIDU4LCA1NCwgMTAyLCAyNTIsIDE3OCwgNTgsIDU0LCAxMDIsIDI1MiwgCi0gICAgMTc3LCAyMzAsIDIwNCwgNTgsIDU0LCAxMDIsIDI1MiwgMTc2LCA1OCwgNTQsIDEwMiwgMjUyLCAxNzUsIDIxNiwgMTkzLCAKLSAgICA1OCwgNTQsIDEwMiwgMjUyLCAxNzQsIDU4LCA1NCwgMTAyLCAyNTIsIDE3MywgNTgsIDU0LCAxMDIsIDI1MiwgMTcyLCA1OCwgCi0gICAgNTQsIDEwMiwgMjUyLCAxNzEsIDU4LCA1NCwgMTAyLCAyNTIsIDE3MCwgNTgsIDU0LCAxMDIsIDI1MiwgMTY5LCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxNjgsIDU4LCA1NCwgMTAyLCAyNTIsIDE2NywgNTgsIDU0LCAxMDIsIDI1MiwgMTY2LCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAxNjUsIDU4LCA1NCwgMTAyLCAyNTIsIDE2NCwgNTgsIDU0LCAxMDIsIDI1MiwgMTYzLCAyNDEsIDE5NSwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMTQyLCAyNDMsIDI1MywgNTgsIDU0LCAxMDIsIDI1MiwgMTM5LCAyNTIsIDM2LCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAxMzQsIDIxOSwgMTkzLCA1OCwgNTQsIDEwMiwgMjUyLCAxMzMsIDY4LCA1OCwgNTQsIDEwMiwgMjUyLCAxMzIsIDU4LCAKLSAgICA1NCwgMTAyLCAyNTIsIDEzMSwgMjE4LCAxODEsIDU4LCA1NCwgMTAyLCAyNTIsIDEzMCwgNTgsIDU0LCAxMDIsIDI1MiwgCi0gICAgMTI5LCA1OCwgNTQsIDEwMiwgMjUyLCAxMjgsIDIxMywgMjM5LCAyNTAsIDc1LCA1OCwgNTQsIDEwMiwgMjUyLCAxMjcsIAotICAgIDI1MCwgNzUsIDU4LCA1NCwgMTAyLCAyNTIsIDEyNiwgMjUwLCA3NiwgMjQzLCAyMjUsIDU4LCA1NCwgMTAyLCAyNTIsIDEyNSwgCi0gICAgMjEzLCAyNDEsIDU4LCA1NCwgMTAyLCAyNTIsIDEyNCwgNTgsIDU0LCAxMDIsIDI1MiwgMTIzLCA1OCwgNTQsIDIzMCwgMjEyLCAKLSAgICAyNTIsIDEyMiwgMjQ3LCAxNTAsIDU4LCA1NCwgMTAyLCAyNTIsIDEyMSwgNTgsIDU0LCAxMDIsIDI1MiwgMTIwLCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxMTgsIDU4LCA1NCwgMTAyLCAyNTIsIDExNywgNTgsIDU0LCAxMDIsIDI1MiwgMTE2LCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAxMTUsIDI0OCwgMTA0LCA1OCwgNTQsIDEwMiwgMjUyLCAxMTQsIDU4LCA1NCwgMTAyLCAyNTIsIDExMywgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMTEyLCA1OCwgNTQsIDEwMiwgMjUyLCAxMTEsIDU4LCA1NCwgMTAyLCAyNTIsIDExMCwgNTgsIDU0LCAxMDIsIAotICAgIDIxNCwgMTYzLCAyNTIsIDE5NSwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE2MiwgNTgsIDU0LCAxMDIsIDIxNCwgCi0gICAgMTYzLCAyNTIsIDE2MSwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE2MCwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAKLSAgICAyNTIsIDE1OSwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE1OCwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIAotICAgIDE1NywgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE1NiwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE1NSwgCi0gICAgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE1NCwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE1MywgNTgsIDU0LCAKLSAgICAxMDIsIDIxNCwgMTYzLCAyNTIsIDE1MiwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE1MSwgNTgsIDU0LCAxMDIsIAotICAgIDIxNCwgMTYzLCAyNTIsIDE1MCwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE0OSwgNTgsIDU0LCAxMDIsIDIxNCwgCi0gICAgMTYzLCAyNTIsIDE0OCwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE0NywgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAKLSAgICAyNTIsIDE0NiwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE0NSwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIAotICAgIDE0NCwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE0MywgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE0MSwgCi0gICAgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDE0MCwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDEzOCwgNTgsIDU0LCAKLSAgICAxMDIsIDIxNCwgMTYzLCAyNTIsIDEzNywgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDEzNiwgNTgsIDU0LCAxMDIsIAotICAgIDIxNCwgMTYzLCAyNTIsIDEzNSwgNTgsIDU0LCAxMDIsIDIxNCwgMTYzLCAyNTIsIDExOSwgNTgsIDU0LCAxMDIsIDIxNCwgCi0gICAgMTYzLCAyNTIsIDEwOSwgMjU0LCAxNDEsIDIxMywgMTk2LCAyMjEsIDU4LCAyMzIsIDI0MiwgMjU0LCAxNDEsIDIxMywgMTk2LCAKLSAgICAyMjEsIDU4LCAyNDcsIDc0LCAyNTQsIDE0MSwgMjUwLCA2NiwgNzcsIDI1NCwgMTQxLCA1MCwgMTE2LCAyNTQsIDE0MSwgNTAsIAotICAgIDEwOSwgMjU0LCAxNDEsIDUwLCAxNjYsIDI1NCwgMTQxLCA1MCwgMTYzLCAyNTQsIDE0MSwgNTAsIDE4MCwgMjU0LCAxNDEsIAotICAgIDUwLCAxODksIDI1NCwgMTQxLCA1MCwgMTk4LCAyNTQsIDE0MSwgNTAsIDE5NSwgMjU0LCAxNDEsIDUwLCAyMDAsIDI1NCwgCi0gICAgMTQxLCA1MCwgMjE3LCAyMDAsIDI1NCwgMTQxLCA1MCwgMjE2LCAzOCwgMjU0LCAxNDEsIDUwLCAyMTcsIDExNSwgMjU0LCAKLSAgICAxNDEsIDUwLCAyNDMsIDI0MCwgMjU0LCAxNDEsIDUwLCAyNDQsIDgzLCAyNTQsIDE0MSwgNTAsIDIyMCwgMzksIDI1NCwgCi0gICAgMTQxLCA1MCwgMjIxLCAzNywgMjU0LCAxNDEsIDUwLCAyNDUsIDE0MSwgMjU0LCAxNDEsIDUwLCAyMjksIDI2LCAyNTQsIAotICAgIDE0MSwgNTAsIDEyMiwgMjQwLCAyMDAsIDI1NCwgMTQxLCA1MCwgMTE3LCAyNDAsIDIwMCwgMjU0LCAxNDEsIDUwLCAxMzMsIAotICAgIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDI0MywgMjM3LCAyNDAsIDIwMCwgMjU0LCAxNDEsIDUwLCAyNDQsIDUwLCAyNDAsIAotICAgIDIwMCwgMjU0LCAxNDEsIDUwLCAyMjAsIDUzLCAyNDAsIDIwMCwgMjU0LCAxNDEsIDUwLCAyMjEsIDQzLCAyNDAsIDIwMCwgCi0gICAgMjU0LCAxNDEsIDUwLCAyNDUsIDE1MCwgMjQwLCAyMDAsIDI1NCwgMTQxLCA1MCwgMjI5LCAzMSwgMjQwLCAyMDAsIDI1NCwgCi0gICAgMTQxLCA1MCwgMTIyLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAxMTcsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDEzMywgCi0gICAgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjQzLCAyMzcsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDI0NCwgNTAsIDIxNywgCi0gICAgMTAwLCAyNTQsIDE0MSwgNTAsIDIyMCwgNTMsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyMSwgNDMsIDIxNywgMTAwLCAKLSAgICAyNTQsIDE0MSwgNTAsIDI0NSwgMTUwLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyMjksIDMxLCAyMTcsIDEwMCwgMjU0LCAKLSAgICAxNDEsIDUwLCAyMTcsIDIwMSwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjE2LCAzOSwgMjE3LCAxMDAsIDI1NCwgMTQxLCAKLSAgICA1MCwgMjE3LCAxMTYsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDI0MywgMjQxLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAKLSAgICAyNDQsIDg0LCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyMjAsIDQwLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyMjEsIAotICAgIDM4LCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyNDUsIDE0MiwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjI5LCAyNywgCi0gICAgMjE3LCAxMDAsIDI1NCwgMTQxLCAyMTMsIDI1NSwgMjUyLCA0OCwgMjE1LCAxNDQsIDI1NCwgMTQxLCAyMTMsIDI1NSwgMjQ0LCAKLSAgICA2MSwgMjE5LCA0LCAyNTQsIDE0MSwgMjEzLCAyNTUsIDIyMiwgOTUsIDIxOSwgNCwgMjU0LCAxNDEsIDIxMywgMjU1LCAyMTcsIAotICAgIDEyMiwgMjE5LCA0LCAyNTQsIDE0MSwgMjEzLCAyNTUsIDI0MywgMjMwLCAyMTksIDQsIDI1NCwgMTQxLCAyNDYsIDM2LCAKLSAgICAyMzEsIDE1NSwgMjQ0LCA2MSwgMjE5LCA0LCAyNTQsIDE0MSwgMjMyLCAyMjgsIDIzMSwgMTU1LCAyNDQsIDYxLCAyMTksIDQsIAotICAgIDI1NCwgMTQxLCAyMzEsIDE1NSwgMjIyLCA5NSwgMjE5LCA0LCAyNTQsIDE0MSwgMjMxLCAxNTUsIDIxNywgMTIyLCAyMTksIAotICAgIDQsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgMjI0LCAxNjYsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgCi0gICAgMjQyLCA5LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAxMjIsIDI0NiwgNTQsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIAotICAgIDE4MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA4MywgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA1MCwgCi0gICAgMjQwLCAyMDAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgNTAsIDIxNywgMTAwLCAyNSwgMjU0LCAxNjcsIDI1MywgCi0gICAgMTEwLCAyNDQsIDg0LCAyMTcsIDEwMCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA1MCwgMjE4LCAxOCwgMjUsIAotICAgIDI1NCwgMTY3LCAyNTMsIDExMCwgMjE3LCAyMDEsIDIxOCwgMTgsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgODQsIAotICAgIDIxOCwgMTgsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgMjQwLCAyMDEsIDIxOCwgMTgsIDI1LCAyNTQsIDE2NywgCi0gICAgMjUzLCAxMTAsIDI0NCwgNTAsIDI0MCwgMjAxLCAyMTgsIDE4LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAxMjIsIDIxNywgCi0gICAgMTAxLCAyMTgsIDE4LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAyMTcsIDEwMSwgMjE4LCAxOCwgMjUsIAotICAgIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA1MCwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjE3LCAyMDEsIAotICAgIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgODQsIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAKLSAgICAxMTAsIDEyMiwgMjQwLCAyMDEsIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgNTAsIDI0MCwgMjAxLCAKLSAgICAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAxMjIsIDIxNywgMTAxLCAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIAotICAgIDI1MywgMTEwLCAyMTcsIDIwMSwgMjE3LCAxMDEsIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgODQsIAotICAgIDIxNywgMTAxLCAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyMTcsIDIwMSwgMjMwLCAyMzQsIDI1LCAyNTQsIAotICAgIDE2NywgMjQxLCAxODksIDEyMiwgMjI1LCAxNjQsIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIDExNiwgMjUsIDI1NCwgMTY3LCAKLSAgICAyNDEsIDE4NiwgMTE2LCAyNSwgMjU0LCAxNjcsIDI0NSwgNjcsIDEwOSwgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMTA5LCAKLSAgICAyNSwgMjU0LCAxNjcsIDI0OSwgOCwgMTE3LCAyNDYsIDUzLCAyNSwgMjU0LCAxNjcsIDI0NSwgNjcsIDExNywgMjQ2LCA1MywgCi0gICAgMjUsIDI1NCwgMTY3LCAyMTYsIDE2MSwgMTgwLCAyNSwgMjU0LCAxNjcsIDIxNiwgMTYxLCAyMTcsIDIwMCwgMjUsIDI1NCwgCi0gICAgMTY3LCAyMTYsIDE2MSwgMjE3LCAyMDEsIDI1NCwgNTAsIDE3LCAyNSwgMjU0LCAxNjcsIDI0MSwgMTg2LCAyMTcsIDIwMCwgCi0gICAgMjUsIDI1NCwgMTY3LCAyMzEsIDEwOCwgMjE3LCAyMDAsIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIDIxNywgMjAwLCAyNSwgCi0gICAgMjU0LCAxNjcsIDIxNywgMTM0LCAyMTcsIDExNSwgMjUsIDI1NCwgMTY3LCAyMTYsIDE2MSwgMjQ0LCA4MywgMjUsIDI1NCwgCi0gICAgMTY3LCAyMTYsIDE2MSwgMjQ0LCA4NCwgMjU0LCA1MCwgMTcsIDI1LCAyNTQsIDE2NywgMjQxLCAxODYsIDI0NCwgODMsIDI1LCAKLSAgICAyNTQsIDE2NywgMjE3LCAxMzQsIDI0NCwgODMsIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIDEyMiwgMjQwLCAyMDAsIDI1LCAKLSAgICAyNTQsIDE2NywgMjE3LCAxMzQsIDEzMywgMjQwLCAyMDAsIDI1LCAyNTQsIDE2NywgMjQ1LCA2NywgMjQ0LCA1MCwgMjQwLCAKLSAgICAyMDAsIDI1LCAyNTQsIDE2NywgMjE2LCAxNjEsIDI0NCwgNTAsIDI0MCwgMjAwLCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAKLSAgICAyNDQsIDUwLCAyNDAsIDIwMCwgMjUsIDI1NCwgMTY3LCAyNTAsIDE1OSwgMjQ0LCA1MCwgMjQwLCAyMDAsIDI1LCAyNTQsIAotICAgIDE2NywgMjMwLCA0LCAyNDQsIDUwLCAyNDAsIDIwMCwgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMTIyLCAyMTcsIDEwMCwgCi0gICAgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMjQ0LCA1MCwgMjE3LCAxMDAsIDI1LCAyNTQsIDE2NywgMjQ4LCA4LCAyNDQsIDUwLCAKLSAgICAyMzAsIDIzNCwgMjUsIDI1NCwgMTY3LCAyMTksIDU4LCAyNDQsIDg0LCAyMzAsIDIzNCwgMjUsIDEyMiwgMTUxLCA1MiwgMjUsIAotICAgIDEyMiwgMTUxLCA1LCAyNTQsIDUwLCAxNywgMjUsIDExNywgMjE3LCAxMjAsIDUyLCAyNSwgMTMzLCAyMjQsIDE2NSwgNTIsIAotICAgIDI1LCAyMTMsIDM2LCA1MiwgMjUsIDIxOCwgMTksIDUyLCAyNSwgMjQ2LCA1NSwgNTIsIDI1LCAyMjcsIDExMCwgNTIsIDI1LCAKLSAgICAxMTcsIDIyNywgMTA5LCA1MiwgMjUsIDEzMywgMjI3LCAxMDksIDUyLCAyNSwgMjQzLCAyMzcsIDIyNywgMTA5LCA1MiwgMjUsIAotICAgIDI0NCwgNTAsIDIyNywgMTA5LCA1MiwgMjUsIDIzMSwgMTAyLCA1MiwgMjUsIDIzMywgMTc5LCAyNTIsIDQ4LCA1MiwgMjUsIAotICAgIDIzMiwgMjIzLCA1MiwgMjUsIDIyNiwgMjU1LCA1MiwgMjUsIDIxMywgMTQ3LCA1MiwgMjUsIDI1MywgMTU4LCA1MiwgMjUsIAotICAgIDI1MywgMTcxLCA1MiwgMjUsIDI0MiwgMTIwLCA1MiwgMjUsIDIxNiwgMTQ0LCAyNTIsIDQ4LCA1MiwgMjUsIDIxMiwgODAsIAotICAgIDUyLCAyMjMsIDEwMCwgMjIxLCAzNCwgNTIsIDIyMywgMTAwLCAyMTUsIDE1NSwgNTIsIDIyMywgMTAwLCAyMjEsIDYyLCA1MiwgCi0gICAgMjIzLCAxMDAsIDIyMSwgMzIsIDUyLCAyMjMsIDEwMCwgMjQ3LCAxNjUsIDIyMSwgMzIsIDUyLCAyMjMsIDEwMCwgMjIwLCAKLSAgICA5NCwgNTIsIDIyMywgMTAwLCAyNDgsIDQsIDUyLCAyMjMsIDEwMCwgMjI0LCAxNTEsIDUyLCAyMjMsIDEwMCwgMjIxLCA1MCwgCi0gICAgNTIsIDIyMywgMTAwLCAyNDYsIDE1LCA1MiwgMjIzLCAxMDAsIDI1MywgMTUzLCA1MiwgMjIzLCAxMDAsIDI1MCwgMTA1LCAKLSAgICA1MiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyNiwgODgsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjUsIDE1OCwgMjQxLCAKLSAgICAyMTksIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMTcsIDI1MiwgMjQxLCAyMTksIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTAsIAotICAgIDE3OSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MCwgMzgsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMTMsIDIwOCwgMjI2LCAKLSAgICAxOSwgMjQ3LCAxNDMsIDUsIDI0MSwgMTk1LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQzLCA2MSwgMjI2LCAxOSwgMjQ3LCAKLSAgICAxNDMsIDUsIDIxNywgNzAsIDIyNiwgMTksIDI0NywgMTQzLCA1LCA2OCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MSwgOTUsIAotICAgIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjAsIDIwOSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0OSwgMTgxLCAyMjYsIDE5LCAKLSAgICAyNDcsIDE0MywgNSwgMjMxLCAyNDcsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMzEsIDE5OSwgMjI2LCAxOSwgMjQ3LCAxNDMsIAotICAgIDUsIDIyMiwgMTM0LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjMzLCA5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUxLCAKLSAgICAxMTMsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTAsIDE2MywgMjI1LCAxNjcsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDcsIAotICAgIDg3LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ5LCAxNjEsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjAsIDE1LCAyMjYsIAotICAgIDE5LCAyNDcsIDE0MywgNSwgMjQ5LCAxNjIsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTEsIDIzOSwgMjI2LCAxOSwgMjQ3LCAKLSAgICAxNDMsIDUsIDIyMCwgMTk2LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQwLCAyMzUsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAKLSAgICAyNDEsIDE2MywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MSwgNDEsIDIzMywgNjAsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAKLSAgICAyNTAsIDE1NiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyNCwgNDUsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDUsIDE4NiwgCi0gICAgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0NiwgNjEsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMTYsIDY5LCAyMjYsIDE5LCAKLSAgICAyNDcsIDE0MywgNSwgMjUxLCAyNDIsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjUsIDE2OCwgMjE2LCAxOTMsIDIyNiwgMTksIAotICAgIDI0NywgMTQzLCA1LCAyMTQsIDE0MCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyNiwgMTQ2LCAyMjYsIDE5LCAyNDcsIDE0MywgCi0gICAgNSwgMjIzLCA5MiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIzMiwgMjUyLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI2LCAKLSAgICAyMzksIDI1MiwgMTAxLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ0LCAxNywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0MiwgCi0gICAgMTE1LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjE5LCA1OSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDMsIDI1MywgODQsIAotICAgIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMTQsIDE2LCAyNTIsIDY3LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMzcsIDIyNywgCi0gICAgMTEyLCA5MCwgMjMyLCAxMjAsIDEsIDYxLCAyMzIsIDEyMCwgMSwgNzQsIDIzMiwgMTIwLCAxLCAyNTMsIDc0LCAyMzIsIAotICAgIDEyMCwgMSwgMjUxLCAxOTYsIDIzMiwgMTIwLCAxLCAyNDMsIDE3NywgMjMyLCAxMjAsIDEsIDI0OSwgMywgMjMyLCAxMjAsIAotICAgIDEsIDcyLCAyMzIsIDEyMCwgMSwgMjE0LCA4MiwgMjMyLCAxMjAsIDEsIDIxMiwgMTUyLCAyMzIsIDEyMCwgMSwgMjE3LCAKLSAgICAxNjMsIDIzMiwgMTIwLCAxLCAyMzUsIDE0MiwgMjMyLCAxMjAsIDEsIDIzNSwgMjcsIDIzMiwgMTIwLCAxLCAyMjQsIDI0MCwgCi0gICAgMjMyLCAxMjAsIDEsIDE1MCwgMjMyLCAxMjAsIDEsIDE4MywgMjMyLCAxMjAsIDEsIDIwNCwgMjMyLCAxMjAsIDEsIDIzMCwgCi0gICAgMjM1LCAyMzIsIDEyMCwgMSwgMjI4LCAxOTksIDIzMiwgMTIwLCAxLCA2OSwgMjMyLCAxMjAsIDEsIDIyNiwgMjI5LCAyMzIsIAotICAgIDEyMCwgMSwgMjM0LCA1NiwgMjMyLCAxMjAsIDEsIDE0OSwgMjMyLCAxMjAsIDEsIDE5NywgMjMyLCAxMjAsIDEsIDIxOCwgCi0gICAgOTksIDIzMiwgMTIwLCAxLCAyMTYsIDExOCwgMjMyLCAxMjAsIDEsIDI1NCwgMzIsIDIzMiwgMTIwLCAxLCAyNDUsIDEwOCwgCi0gICAgMjMyLCAxMjAsIDEsIDI0MiwgNDEsIDIzMiwgMTIwLCAxLCAyMTMsIDE2NiwgMjUwLCAxNjksIDEsIDYxLCAyNTAsIDE2OSwgCi0gICAgMSwgMjI2LCAyMTUsIDI1MCwgMTY5LCAxLCAyNDksIDMsIDI1MCwgMTY5LCAxLCAxNTAsIDI1MCwgMTY5LCAxLCAyMTUsIDkwLCAKLSAgICAyNTAsIDE2OSwgMSwgMTQ5LCAyNTAsIDE2OSwgMSwgMjMzLCA4NiwgMjUwLCAxNjksIDEsIDI1NCwgMjM0LCAyNTAsIDE2OSwgCi0gICAgMSwgMjI0LCAyNDAsIDI1MCwgMTY5LCAxLCAyNTMsIDc0LCAyNTAsIDE2OSwgMSwgMTgzLCAyNTAsIDE2OSwgMSwgNzUsIAotICAgIDI1MCwgMTY5LCAxLCAyNDgsIDE2NiwgMjUwLCAxNjksIDEsIDIxOCwgOTksIDI1MCwgMTY5LCAxLCAyMjEsIDI2LCAyNTAsIAotICAgIDE2OSwgMSwgMjIxLCAyNSwgMjUwLCAxNjksIDEsIDE5NywgMjUwLCAxNjksIDEsIDI1MCwgMjUxLCAyNTAsIDE2OSwgMSwgCi0gICAgNjksIDI1MCwgMTY5LCAxLCAyMjgsIDE5OSwgMjUwLCAxNjksIDEsIDIxMywgMTY2LCAyNTAsIDE2OSwgMSwgMjA0LCAyNTAsIAotICAgIDE2OSwgMSwgMjE2LCAxMTcsIDI1MCwgMTY5LCAxLCAyMjYsIDIyOSwgMjUwLCAxNjksIDEsIDIxOSwgMTU4LCAyNTAsIDE2OSwgCi0gICAgMSwgNzIsIDI1MCwgMTY5LCAxLCA3NCwgMjUwLCAxNjksIDEsIDIxNSwgODcsIDI1MCwgMTY5LCAxLCAyMzUsIDI3LCAyNTAsIAotICAgIDE2OSwgMSwgMjM1LCAxOCwgMjUwLCAxNjksIDEsIDIyOSwgMjMwLCAyNTAsIDE2OSwgMSwgMjE1LCA5MiwgMjUwLCAxNjksIAotICAgIDEsIDI0MywgMTc3LCAyNTAsIDE2OSwgMSwgMjQzLCAxMTIsIDI1MCwgMTY5LCAxLCAyMTksIDEwNywgMjUwLCAxNjksIDEsIAotICAgIDIxOSwgMTA2LCAyNTAsIDE2OSwgMSwgMjI5LCAxNjEsIDI1MCwgMTY5LCAxLCAyMzYsIDI4LCAyNTAsIDE2OSwgMSwgMjUwLCAKLSAgICAyNTAsIDI1MCwgMTY5LCAxLCAyMTYsIDExOCwgMjUwLCAxNjksIDEsIDIxNSwgODksIDI1MCwgMTY5LCAxLCAyMjMsIDgyLCAKLSAgICAyNTAsIDE2OSwgMSwgMjMxLCAxOTIsIDI1MCwgMTY5LCAxLCAyMzEsIDE5MSwgMjUwLCAxNjksIDEsIDIzMSwgMTkwLCAyNTAsIAotICAgIDE2OSwgMSwgMjMxLCAxODksIDI1MCwgMTY5LCAxLCAyMzMsIDg1LCAyNTAsIDE2OSwgMSwgMjQ1LCAxOTAsIDI1MCwgMTY5LCAKLSAgICAxLCAyMTUsIDg4LCA1MywgMzIsIDEsIDYxLCA1MywgMzIsIDEsIDI1MSwgMjUxLCA1MywgMzIsIDEsIDIzNCwgMTg4LCA1MywgCi0gICAgMzIsIDEsIDI0OCwgNDEsIDUzLCAzMiwgMSwgNzQsIDUzLCAzMiwgMSwgMjE0LCAyMzIsIDUzLCAzMiwgMSwgMjEyLCA4NywgCi0gICAgNTMsIDMyLCAxLCAyNDEsIDIyMiwgNTMsIDMyLCAxLCAyMTcsIDE0OCwgNTMsIDMyLCAxLCA3MiwgNTMsIDMyLCAxLCAxODEsIAotICAgIDUzLCAzMiwgMSwgMjQ1LCAxMzEsIDUzLCAzMiwgMSwgMjQ1LCAxMTcsIDUzLCAzMiwgMSwgMjQ1LCAxMDgsIDUzLCAzMiwgMSwgCi0gICAgMjQ1LCA0MCwgNTMsIDMyLCAxLCA3NSwgNTMsIDMyLCAxLCAyMjYsIDk2LCA1MywgMzIsIDEsIDIyMCwgMjQzLCA1MywgMzIsIAotICAgIDEsIDIzMywgMjM4LCA1MywgMzIsIDEsIDI0NSwgNTUsIDUzLCAzMiwgMSwgMjQ1LCA0NSwgNTMsIDMyLCAxLCAyMTcsIDIyOSwgCi0gICAgNTMsIDMyLCAxLCA2OSwgNTMsIDMyLCAxLCAyNDUsIDEzNCwgNTMsIDMyLCAxLCAyMjYsIDEyLCA1MywgMzIsIDEsIDIzNCwgCi0gICAgMTI1LCA1MywgMzIsIDEsIDI0NSwgMTU5LCA1MywgMzIsIDEsIDI0NSwgNDcsIDUzLCAzMiwgMSwgMjUwLCA2NywgNTMsIDMyLCAKLSAgICAxLCAyMzYsIDI4LCA1MywgMzIsIDEsIDIxNSwgOTIsIDUzLCAzMiwgMjI4LCA1NCwgMTE2LCA1MywgMzIsIDIyOCwgNTQsIAotICAgIDE4MCwgNTMsIDMyLCAyMjgsIDU0LCAyMTcsIDIwMCwgNTMsIDMyLCAyMjgsIDU0LCAyNDQsIDgzLCAyNDIsIDEyOSwgMSwgCi0gICAgMjU0LCAxMTEsIDI0MiwgMTI5LCAxLCAyNTIsIDgyLCAyNDIsIDEyOSwgMSwgMjQyLCAxODcsIDI0MiwgMTI5LCAxLCAyNDgsIAotICAgIDE0OCwgMjQyLCAxMjksIDEsIDI1NCwgMTA3LCAyNDIsIDEyOSwgMSwgMjI0LCAyMjMsIDI0MiwgMTI5LCAxLCAyMzUsIDE1MywgCi0gICAgMjQyLCAxMjksIDEsIDI0MiwgMjAsIDI0MiwgMTI5LCAxLCAyMTcsIDExMSwgMjQyLCAxMjksIDEsIDI0NSwgMTQwLCAyNDIsIAotICAgIDEyOSwgMSwgMjMzLCAyMTEsIDI0MiwgMTI5LCAxLCAyMzMsIDEzNiwgMjQyLCAxMjksIDEsIDIzMSwgMjQyLCAyNDIsIDEyOSwgCi0gICAgMSwgMjMwLCA2LCAyNDIsIDEyOSwgMSwgMjM1LCAxMjAsIDI0MiwgMTI5LCAxLCAyMTUsIDEwNywgMjQyLCAxMjksIDEsIAotICAgIDIyNiwgMTk2LCAyNDIsIDEyOSwgMSwgMjI5LCAyNiwgMjQyLCAxMjksIDEsIDIyNCwgNTYsIDI0MiwgMTI5LCAxLCAyMjIsIAotICAgIDEzNiwgMjQyLCAxMjksIDEsIDIxNywgMjEyLCAyNDIsIDEyOSwgMSwgMjEzLCAyMTksIDI0MiwgMTI5LCAxLCAyNDQsIDE0NiwgCi0gICAgMjQyLCAxMjksIDEsIDIzNiwgMzIsIDI0MiwgMTI5LCAxLCAyNDAsIDE5MSwgMjQyLCAxMjksIDEsIDIyNywgNywgMjQyLCAKLSAgICAxMjksIDEsIDIyOSwgMzEsIDI0MCwgMjAwLCAyMTUsIDE3OSwgMSwgMjU0LCA1NiwgMjE1LCAxNzksIDEsIDI1MSwgMjAzLCAKLSAgICAyMTUsIDE3OSwgMSwgMjQzLCA4NCwgMjE1LCAxNzksIDEsIDIzNCwgMTM4LCAyMTUsIDE3OSwgMSwgMjQ4LCA1LCAyMTUsIAotICAgIDE3OSwgMSwgMjQxLCA1NCwgMjE1LCAxNzksIDEsIDIxMywgMjE0LCAyMTUsIDE3OSwgMSwgMjEyLCA3OCwgMjE1LCAxNzksIAotICAgIDEsIDI0MCwgMjI4LCAyMTUsIDE3OSwgMSwgMjE3LCAxODMsIDIxNSwgMTc5LCAxLCAyMTIsIDIyNCwgMjE1LCAxNzksIDEsIAotICAgIDIzNCwgMjU0LCAyMTUsIDE3OSwgMSwgMjIwLCAyMDAsIDIxNSwgMTc5LCAxLCAyMzMsIDEyMiwgMjE1LCAxNzksIDEsIDIzMSwgCi0gICAgMTI5LCAyMTUsIDE3OSwgMSwgMjQ3LCAyMjksIDIxNSwgMTc5LCAxLCAyMjgsIDUwLCAyMTUsIDE3OSwgMSwgMjEyLCA4LCAKLSAgICAyMTUsIDE3OSwgMSwgMjIyLCAxNjMsIDIxNSwgMTc5LCAxLCAyNTQsIDEwMywgMjE1LCAxNzksIDEsIDIyNSwgMzUsIDIxNSwgCi0gICAgMTc5LCAxLCAyMjIsIDE5NCwgMjE1LCAxNzksIDEsIDIyNCwgMTgwLCAyMTUsIDE3OSwgMSwgMjI0LCAzNiwgMjE1LCAxNzksIAotICAgIDEsIDIxNywgMTUyLCAyMTUsIDE3OSwgMSwgMjQyLCAyMjAsIDIxNSwgMTc5LCAxLCAxMDgsIDIxNSwgMTc5LCAxLCA3MiwgCi0gICAgMjE1LCAxNzksIDEsIDY5LCAyMTUsIDE3OSwgMSwgMjE5LCAxMTcsIDIxNSwgMTc5LCAyMTMsIDE5NiwgMjQ3LCAxMjQsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCA2MSwgNTMsIDIyNiwgNDUsIDUsIDcyLCA1MywgMjI2LCA0NSwgNSwgNjksIDUzLCAyMjYsIDQ1LCA1LCAKLSAgICAxODEsIDUzLCAyMjYsIDQ1LCA1LCAyMzMsIDIzOCwgNTMsIDIyNiwgNDUsIDUsIDI0MywgMTEwLCA1MywgMjI2LCA0NSwgNSwgCi0gICAgMjQyLCA5MiwgNTMsIDIyNiwgNDUsIDUsIDIxMywgMTUzLCA1MywgMjI2LCA0NSwgNSwgMjUwLCAyMTksIDUzLCAyMjYsIDQ1LCAKLSAgICA1LCAyMzUsIDEzOSwgNTMsIDIyNiwgNDUsIDUsIDIzNSwgMTEwLCA1MywgMjI2LCA0NSwgNSwgMjE4LCA1MiwgNTMsIDIyNiwgCi0gICAgNDUsIDUsIDIxNiwgODIsIDUzLCAyMjYsIDQ1LCA1LCAyNDgsIDE2NCwgNTMsIDIyNiwgNDUsIDUsIDI0NywgMjExLCA1MywgCi0gICAgMjI2LCA0NSwgNSwgMjQ2LCAzMywgNTMsIDIyNiwgNDUsIDUsIDIxNywgMTYxLCA1MywgMjI2LCA0NSwgNSwgMTkzLCA1MywgCi0gICAgMjI2LCA0NSwgNSwgMjUyLCAxMDcsIDUzLCAyMjYsIDQ1LCA1LCAyNDQsIDE2NCwgNTMsIDIyNiwgNDUsIDUsIDIwNSwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDIyOCwgOTIsIDUzLCAyMjYsIDQ1LCA1LCAxODgsIDUzLCAyMjYsIDQ1LCA1LCAyMzEsIDQyLCA1MywgCi0gICAgMjI2LCA0NSwgNSwgMjMwLCAxNzIsIDUzLCAyMjYsIDQ1LCA1LCAxODYsIDUzLCAyMjYsIDQ1LCA1LCAyMTUsIDEsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyMTQsIDE1NCwgNTMsIDIyNiwgNDUsIDUsIDIwMywgNTMsIDIyNiwgNDUsIDUsIDIyMywgNTEsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyMzMsIDE1NywgNTMsIDIyNiwgNDUsIDUsIDIyMiwgMjAyLCA1MywgMjI2LCA0NSwgNSwgMjEyLCAxMDksIAotICAgIDUzLCAyMjYsIDQ1LCA1LCAyMjEsIDI0LCA1MywgMjI2LCA0NSwgNSwgMjE5LCAxNTcsIDUzLCAyMjYsIDQ1LCA1LCAxNTksIAotICAgIDUzLCAyMjYsIDQ1LCA1LCAyNTMsIDEwMiwgNTMsIDIyNiwgNDUsIDUsIDI1MywgMTAxLCA1MywgMjI2LCA0NSwgNSwgMjUzLCAKLSAgICAxMDAsIDUzLCAyMjYsIDQ1LCA1LCAyMTMsIDEzMCwgNTMsIDIyNiwgNDUsIDUsIDI0OCwgMTQ1LCA1MywgMjI2LCA0NSwgNSwgCi0gICAgMjQ4LCAxNDQsIDUzLCAyMjYsIDQ1LCA1LCAyNTIsIDg4LCA1MywgMjI2LCA0NSwgNSwgMjUxLCAxNCwgNTMsIDIyNiwgNDUsIAotICAgIDIxMywgMTk2LCAyNDcsIDEyNCwgNTMsIDIyNiwgNDUsIDUwLCAxMTYsIDUzLCAyMjYsIDQ1LCA1MCwgMTA5LCA1MywgMjI2LCAKLSAgICA0NSwgNTAsIDIxNywgMjAwLCA1MywgMjI2LCA0NSwgNTAsIDIxNiwgMzgsIDUzLCAyMjYsIDQ1LCA1MCwgMjQwLCAyMDAsIAotICAgIDE3MSwgNiwgMSwgMTg0LCA3MiwgMTcxLCA2LCAxLCAxODQsIDc0LCAxNzEsIDYsIDEsIDE4NCwgNjEsIDE3MSwgNiwgMSwgCi0gICAgMTg0LCAyNTQsIDExNCwgMTcxLCA2LCAxLCAxODQsIDc1LCAxNzEsIDYsIDEsIDE4NCwgMjI3LCA0OSwgMTcxLCA2LCAxLCAKLSAgICAyMjAsIDE3NSwgNzIsIDE3MSwgNiwgMSwgMjIwLCAxNzUsIDc0LCAxNzEsIDYsIDEsIDIyMCwgMTc1LCA2MSwgMTcxLCA2LCAKLSAgICAxLCAyMjAsIDE3NSwgMjU0LCAxMTQsIDE3MSwgNiwgMSwgMjIwLCAxNzUsIDc1LCAxNzEsIDYsIDEsIDIyMCwgMTc1LCAyMjcsIAotICAgIDQ5LCAxNzEsIDYsIDEsIDI1MywgODMsIDE3MSwgNiwgMSwgMjI2LCAyNDAsIDE3MSwgNiwgMSwgMjEzLCAxODMsIDE3MSwgNiwgCi0gICAgMSwgMjEzLCAzNSwgMTcxLCA2LCAxLCAyNDIsIDQxLCAxNzEsIDYsIDEsIDIyNiwgODYsIDE3MSwgNiwgMSwgMjUxLCAyNDIsIAotICAgIDE3MSwgNiwgMSwgMjE3LCAyMTksIDE3MSwgNiwgMSwgMjQ4LCAyOCwgMTcxLCA2LCAxLCAyNTAsIDY0LCAxNzEsIDYsIDEsIAotICAgIDIzNSwgMTI1LCAxNzEsIDYsIDEsIDIzNCwgMTk1LCAxNzEsIDYsIDEsIDI0MywgNTksIDE3MSwgNiwgMSwgMjQ1LCAxNTksIAotICAgIDE3MSwgNiwgMSwgMjE0LCAyMjcsIDE3MSwgNiwgMSwgMjQ1LCAyNSwgMTcxLCA2LCAxLCAyMTcsIDE0NywgMTcxLCA2LCAxLCAKLSAgICAyNDUsIDQ1LCAxNzEsIDYsIDEsIDIxMiwgODUsIDE3MSwgNiwgMSwgMjQ1LCA0MCwgMTcxLCA2LCAxLCAyMTIsIDY2LCAxNzEsIAotICAgIDYsIDEsIDI0NSwgNTUsIDE3MSwgNiwgMSwgMjQ1LCAxMzEsIDE3MSwgNiwgMSwgMjQ1LCAxMTcsIDE3MSwgNiwgMSwgMjQ1LCAKLSAgICAxMDgsIDE3MSwgNiwgMSwgMjQ1LCA5NiwgMTcxLCA2LCAxLCAyMjcsIDg1LCAxNzEsIDYsIDEsIDI0NSwgNSwgMTcxLCAzLCAKLSAgICAxLCAxODQsIDcyLCAxNzEsIDMsIDEsIDE4NCwgNzQsIDE3MSwgMywgMSwgMTg0LCA2MSwgMTcxLCAzLCAxLCAxODQsIDI1NCwgCi0gICAgMTE0LCAxNzEsIDMsIDEsIDE4NCwgNzUsIDE3MSwgMywgMSwgMTg0LCAyMjcsIDQ5LCAxNzEsIDMsIDEsIDIyMCwgMTc1LCAKLSAgICA3MiwgMTcxLCAzLCAxLCAyMjAsIDE3NSwgNzQsIDE3MSwgMywgMSwgMjIwLCAxNzUsIDYxLCAxNzEsIDMsIDEsIDIyMCwgCi0gICAgMTc1LCAyNTQsIDExNCwgMTcxLCAzLCAxLCAyMjAsIDE3NSwgNzUsIDE3MSwgMywgMSwgMjIwLCAxNzUsIDIyNywgNDksIAotICAgIDE3MSwgMywgMSwgMjUzLCA4MywgMTcxLCAzLCAxLCAyMjYsIDI0MCwgMTcxLCAzLCAxLCAyMTMsIDE4MywgMTcxLCAzLCAxLCAKLSAgICAyMTMsIDM1LCAxNzEsIDMsIDEsIDI0MiwgNDEsIDE3MSwgMywgMSwgMjI2LCA4NiwgMTcxLCAzLCAxLCAyNTEsIDI0MiwgCi0gICAgMTcxLCAzLCAxLCAyMTcsIDIxOSwgMTcxLCAzLCAxLCAyNDgsIDI4LCAxNzEsIDMsIDEsIDI1MCwgNjQsIDE3MSwgMywgMSwgCi0gICAgMjM1LCAxMjUsIDE3MSwgMywgMSwgMjM0LCAxOTUsIDE3MSwgMywgMSwgMjQzLCA1OSwgMTcxLCAzLCAxLCAyNDUsIDE1OSwgCi0gICAgMTcxLCAzLCAxLCAyMTQsIDIyNywgMTcxLCAzLCAxLCAyNDUsIDI1LCAxNzEsIDMsIDEsIDIxNywgMTQ3LCAxNzEsIDMsIDEsIAotICAgIDI0NSwgNDUsIDE3MSwgMywgMSwgMjEyLCA4NSwgMTcxLCAzLCAxLCAyNDUsIDQwLCAxNzEsIDMsIDEsIDIxMiwgNjYsIDE3MSwgCi0gICAgMywgMSwgMjQ1LCA1NSwgMTcxLCAzLCAxLCAyNDUsIDEzMSwgMTcxLCAzLCAxLCAyNDUsIDExNywgMTcxLCAzLCAxLCAyNDUsIAotICAgIDEwOCwgMTcxLCAzLCAxLCAyNDUsIDk2LCAxNzEsIDMsIDEsIDIyNywgODUsIDE3MSwgMywgMSwgMjQ1LCA1LCAyMjAsIDI0OSwgCi0gICAgMSwgMjI2LCA4NCwgMjIwLCAyNDksIDEsIDIxNiwgMjE4LCAyMjAsIDI0OSwgMSwgMjM0LCAxMDAsIDIyMCwgMjQ5LCAxLCAKLSAgICAyNDQsIDExNiwgMjIwLCAyNDksIDEsIDIxNywgMTI1LCAyMjAsIDI0OSwgMSwgMjE5LCAyNDIsIDIyMCwgMjQ5LCAxLCAyMTgsIAotICAgIDIxNCwgMjIwLCAyNDksIDEsIDI0OSwgMjU0LCAyMjAsIDI0OSwgMSwgMjEzLCAzNywgMjIwLCAyNDksIDEsIDI0MCwgMTk5LCAKLSAgICAyMjAsIDI0OSwgMSwgMjUxLCAxODMsIDIyMCwgMjQ5LCAxLCAyNDgsIDQwLCAyMjAsIDI0OSwgMSwgMjQzLCA5NiwgMjIwLCAKLSAgICAyNDksIDEsIDIxNCwgMTA0LCAyMjAsIDI0OSwgMSwgMjE3LCAxMjksIDIyMCwgMjQ5LCAxLCAyMTIsIDE0LCAyMjAsIDI0OSwgCi0gICAgMSwgMjMxLCAxNTQsIDIyMCwgMjQ5LCAxLCAyMzUsIDUyLCAyMjAsIDI0OSwgMSwgMjEzLCAyMTIsIDIyMCwgMjQ5LCAxLCAKLSAgICAyNDIsIDI5LCAyMjAsIDI0OSwgMSwgMjMyLCAxOTUsIDIyMCwgMjQ5LCAxLCAyMzEsIDIsIDIyMCwgMjQ5LCAxLCAyMzYsIAotICAgIDM1LCAyMjAsIDI0OSwgMSwgMjQ1LCAxNTgsIDIyMCwgMjQ5LCAxLCAyNTMsIDE0NiwgMjIwLCAyNDksIDEsIDI1NCwgMTUyLCAKLSAgICAyMjAsIDI0OSwgMSwgMjI3LCA2MiwgMjIwLCAyNDksIDEsIDIxMywgMTk5LCAyMjAsIDI0OSwgMSwgMjI2LCAyNTQsIDIyMCwgCi0gICAgMjQ5LCAxLCAyNTQsIDExNCwgMjIwLCAyNDksIDEsIDIyMywgMTA5LCAyMjAsIDI0OSwgMSwgMjI4LCA1MCwgMjIwLCAyNDksIAotICAgIDEsIDI0NSwgMTczLCAyMjAsIDI0OSwgMSwgMjU0LCAxMTksIDIyMCwgMjQ5LCAxLCAyNDAsIDEwNCwgMjIwLCAyNDksIDEsIAotICAgIDIxNSwgMTM0LCAyMjAsIDI0OSwgMSwgMjI3LCAxMTgsIDIyMCwgMjQ5LCAxLCAyMjcsIDQyLCAyMjAsIDI0OSwgMSwgMjI3LCAKLSAgICA4NCwgMjIwLCAyNDksIDEsIDI1MywgODYsIDIyMCwgMjQ5LCAxLCAyNTMsIDE4OSwgMjIwLCAyNDksIDEsIDIyNywgMjQsIAotICAgIDIyMCwgMjQ5LCAxLCAyNTQsIDEwMCwgMjIwLCAyNDksIDEsIDI0NSwgNDksIDIyMCwgMjQ5LCAxLCAyNTMsIDE2OCwgMjIwLCAKLSAgICAyNDksIDEsIDI0NSwgMTgzLCAyMjAsIDI0OSwgMSwgMjQwLCAxMTAsIDIyMCwgMjQ5LCAxLCAyMTMsIDQsIDIyNywgOSwgMSwgCi0gICAgMjU0LCA3OCwgMjI3LCA5LCAxLCAyNTIsIDEwNywgMjI3LCA5LCAxLCAyMTgsIDUyLCAyMjcsIDksIDEsIDIzNSwgMTM5LCAKLSAgICAyMjcsIDksIDEsIDIxMywgMTUzLCAyMjcsIDksIDEsIDIzNCwgMTM4LCAyMjcsIDksIDEsIDI0OCwgMjcsIDIyNywgOSwgMSwgCi0gICAgMjAzLCAyMjcsIDksIDEsIDIyMiwgMjAyLCAyMjcsIDksIDEsIDIyMCwgMjA2LCAyMjcsIDksIDEsIDI0NywgMjMyLCAyMjcsIAotICAgIDksIDEsIDI1MCwgMTQ4LCAyMjcsIDksIDEsIDI0MywgMTEwLCAyMjcsIDksIDEsIDI0NCwgMTY0LCAyMjcsIDksIDEsIDIyNCwgCi0gICAgMjMwLCAyMjcsIDksIDEsIDIzNSwgMTMsIDIyNywgOSwgMSwgMjMzLCAxNTIsIDIyNywgOSwgMSwgMjMxLCAxMywgMjI3LCA5LCAKLSAgICAxLCAyMjgsIDM1LCAyMjcsIDksIDEsIDIxNCwgMTQsIDIyNywgOSwgMSwgMTU5LCAyMjcsIDksIDEsIDE4NiwgMjI3LCA5LCAKLSAgICAxLCA2MSwgMjI3LCA5LCAxLCA3NCwgMjI3LCA5LCAxLCA3MiwgMjI3LCA5LCAxLCA3NSwgMjI3LCA5LCAxLCA2OSwgMjI3LCAKLSAgICA5LCAxLCAyNTQsIDIzMiwgMjI3LCA5LCAxLCAyNDUsIDE2NSwgMjI3LCA5LCAxLCAyMjcsIDQ5LCAyMjcsIDksIDIxLCAyMTIsIAotICAgIDc5LCAyMjcsIDksIDIxLCAxMTYsIDIyNywgOSwgMjEsIDEwOSwgMjI3LCA5LCAyMSwgMTY2LCAyMjcsIDksIDIxLCAxNjMsIAotICAgIDIyNywgOSwgMjEsIDE4MCwgMjI3LCA5LCAyMSwgMTg5LCAyMjcsIDksIDIxLCAxOTgsIDIyNywgOSwgMjEsIDE5NSwgMjI3LCAKLSAgICA5LCAyMSwgMjAwLCAyNDksIDEwLCA0LCA2MSwgMjQ5LCAxMCwgNCwgNzQsIDI0OSwgMTAsIDQsIDcyLCAyNDksIDEwLCA0LCAKLSAgICA3NSwgMjQ5LCAxMCwgNCwgNjksIDI0OSwgMTAsIDQsIDIzNSwgMTM5LCAyNDksIDEwLCA0LCAyMzUsIDcxLCAyNDksIDEwLCAKLSAgICA0LCAxODEsIDI0OSwgMTAsIDQsIDIzNCwgMTg4LCAyNDksIDEwLCA0LCAyMzQsIDEwMSwgMjQ5LCAxMCwgNCwgMjM0LCAzNywgCi0gICAgMjQ5LCAxMCwgNCwgMjMzLCAyMzgsIDI0OSwgMTAsIDQsIDIzMywgMTU3LCAyNDksIDEwLCA0LCAyMzMsIDgyLCAyNDksIDEwLCAKLSAgICA0LCAyMzMsIDEzLCAyNDksIDEwLCA0LCAyMzIsIDIwOCwgMjQ5LCAxMCwgNCwgMjMyLCAxNTYsIDI0OSwgMTAsIDQsIDE4OCwgCi0gICAgMjQ5LCAxMCwgNCwgMjMxLCAxNTYsIDI0OSwgMTAsIDQsIDIzMSwgNDIsIDI0OSwgMTAsIDQsIDIzMCwgMjMxLCAyNDksIDEwLCAKLSAgICA0LCAyMzAsIDE3MiwgMjQ5LCAxMCwgNCwgMjA1LCAyNDksIDEwLCA0LCAyMjksIDE4NywgMjQ5LCAxMCwgNCwgMjI5LCA2NCwgCi0gICAgMjQ5LCAxMCwgNCwgMjI4LCAxODUsIDI0OSwgMTAsIDQsIDIyOCwgOTIsIDI0OSwgMTAsIDQsIDE5MywgMjQ5LCAxMCwgNCwgCi0gICAgMjI2LCA5NiwgMjQ5LCAxMCwgNCwgMjI1LCAyNDAsIDI0OSwgMTAsIDQsIDIyNSwgMTUwLCAyNDksIDEwLCA0LCAyMjUsIDM1LCAKLSAgICAyNDksIDEwLCA0LCAyMDMsIDI0OSwgMTAsIDQsIDIyNCwgMjEsIDI0OSwgMTAsIDQsIDIyMywgMTg4LCAyNDksIDEwLCA0LCAKLSAgICAyMjMsIDExMiwgMjQ5LCAxMCwgNCwgMjIzLCA1MSwgMjQ5LCAxMCwgNCwgMjIyLCAyMDIsIDI0OSwgMTAsIDQsIDIyMiwgCi0gICAgMTAwLCAyNDksIDEwLCA0LCAyMjAsIDExNywgMjQ5LCAxMCwgNCwgMjE5LCAyNDIsIDI0OSwgMTAsIDQsIDIxOSwgMjcsIAotICAgIDI0OSwgMTAsIDQsIDIxOCwgNTIsIDI0OSwgMTAsIDQsIDIxNywgMjI5LCAyNDksIDEwLCA0LCAyMTcsIDcxLCAyNDksIDEwLCAKLSAgICA0LCAxMDgsIDI0OSwgMTAsIDQsIDIxNiwgODIsIDI0OSwgMTAsIDQsIDIxNCwgNDksIDI0OSwgMTAsIDQsIDIxNCwgNiwgCi0gICAgMjQ5LCAxMCwgNCwgMjEzLCAyMzUsIDI0OSwgMTAsIDQsIDIxMywgMjE0LCAyNDksIDEwLCA0LCAyMTMsIDE1MywgMjQ5LCAKLSAgICAxMCwgNCwgMjEzLCAxNTAsIDI0OSwgMTAsIDQsIDIxMiwgMTA5LCAyNDksIDEwLCA0LCAyMTIsIDE2LCAyMzUsIDI1MywgCi0gICAgMjUzLCAxOTcsIDEsIDI1NCwgNzYsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjUxLCAyMDIsIDIzNSwgMjUzLCAyNTMsIAotICAgIDE5NywgMSwgMjQyLCAxNzcsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjQ4LCAxMzMsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgCi0gICAgMjQxLCAyMjIsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjE0LCAxNCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMTIsIDkwLCAKLSAgICAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDI0MSwgMTgwLCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIxNywgMTc5LCAyMzUsIAotICAgIDI1MywgMjUzLCAxOTcsIDEsIDIxMiwgMjIzLCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIzNCwgMjMwLCAyMzUsIDI1MywgCi0gICAgMjUzLCAxOTcsIDEsIDIzMywgMTE3LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIzMSwgMTI5LCAyMzUsIDI1MywgMjUzLCAKLSAgICAxOTcsIDEsIDIyOCwgNTAsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjIyLCAxNjQsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgCi0gICAgMjUzLCA3OCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMjYsIDk2LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIyMiwgMTkzLCAKLSAgICAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIyNCwgMTc5LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIyMywgMjE5LCAyMzUsIAotICAgIDI1MywgMjUzLCAxOTcsIDEsIDIyMCwgMjAwLCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIxNywgMjQzLCAyMzUsIDI1MywgCi0gICAgMjUzLCAxOTcsIDIyMiwgOTIsIDUyLCAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAxMTYsIDIzNSwgMjUzLCAyNTMsIDE5NywgCi0gICAgNTAsIDEwOSwgMjM1LCAyNTMsIDI1MywgMTk3LCA1MCwgMTY2LCAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAyMTcsIDIwMCwgCi0gICAgMjM1LCAyNTMsIDI1MywgMTk3LCA1MCwgMjE2LCAzOCwgMjM1LCAyNTMsIDI1MywgMTk3LCA1MCwgMTIyLCAyNDAsIDIwMCwgCi0gICAgMjM1LCAyNTMsIDI1MywgMTk3LCA1MCwgMTIyLCAyMTcsIDEwMCwgMjM1LCAyNTMsIDI1MywgMTk3LCA1MCwgMjE3LCAyMDEsIAotICAgIDIxNywgMTAwLCAyMjUsIDI1MSwgMSwgMjU0LCA3NCwgMjI1LCAyNTEsIDEsIDI1MSwgMjA1LCAyMjUsIDI1MSwgMSwgMjQzLCAKLSAgICA4NSwgMjI1LCAyNTEsIDEsIDI0OCwgNywgMjI1LCAyNTEsIDEsIDI0MSwgMjIyLCAyMjUsIDI1MSwgMSwgMjE0LCAyMSwgCi0gICAgMjI1LCAyNTEsIDEsIDIxMiwgMTAzLCAyMjUsIDI1MSwgMSwgMjQxLCAxODIsIDIyNSwgMjUxLCAxLCAyMTcsIDE4MywgMjI1LCAKLSAgICAyNTEsIDEsIDIxMiwgMjI0LCAyMjUsIDI1MSwgMSwgMjM0LCAyNTQsIDIyNSwgMjUxLCAxLCAyMzMsIDEyMywgMjI1LCAyNTEsIAotICAgIDEsIDIzMSwgMTI5LCAyMjUsIDI1MSwgMSwgMjI4LCA1MCwgMjI1LCAyNTEsIDEsIDIyMSwgNjQsIDIyNSwgMjUxLCAxLCAKLSAgICAyNTQsIDEwMywgMjI1LCAyNTEsIDEsIDIyNiwgOTYsIDIyNSwgMjUxLCAxLCAyMjIsIDE5NCwgMjI1LCAyNTEsIDEsIDIyNCwgCi0gICAgMTg0LCAyMjUsIDI1MSwgMSwgMjIzLCA5MSwgMjI1LCAyNTEsIDEsIDIyMCwgMjAwLCAyMjUsIDI1MSwgMSwgMjE3LCAyNDgsIAotICAgIDIyNSwgMjUxLCA1MCwgMTE2LCAyMjUsIDI1MSwgNTAsIDIxNywgMjAwLCAyMjUsIDI1MSwgNTAsIDIxNiwgMzgsIDIyNSwgCi0gICAgMjUxLCA1MCwgMTIyLCAyNDAsIDIwMCwgMjI1LCAyNTEsIDUwLCAxMDksIDIyNSwgMjUxLCA1MCwgMTY2LCAyMjUsIDI1MSwgCi0gICAgMjEzLCAxOTYsIDIyMSwgNTcsIDIzMiwgMTE5LCAxLCA2MSwgMjMyLCAxMTksIDEsIDI1MywgNzQsIDIzMiwgMTE5LCAxLCAKLSAgICAyNDMsIDE3NywgMjMyLCAxMTksIDEsIDI0OSwgMywgMjMyLCAxMTksIDEsIDc0LCAyMzIsIDExOSwgMSwgMjE1LCA3OSwgCi0gICAgMjMyLCAxMTksIDEsIDcyLCAyMzIsIDExOSwgMSwgMjEzLCAxMDUsIDIzMiwgMTE5LCAxLCAyMzUsIDI3LCAyMzIsIDExOSwgCi0gICAgMSwgMTUwLCAyMzIsIDExOSwgMSwgMTgzLCAyMzIsIDExOSwgMSwgMjA0LCAyMzIsIDExOSwgMSwgNzUsIDIzMiwgMTE5LCAxLCAKLSAgICAxNDksIDIzMiwgMTE5LCAxLCAyMTksIDE1OCwgMjMyLCAxMTksIDEsIDIxOCwgOTksIDIzMiwgMTE5LCAxLCA2OSwgMjMyLCAKLSAgICAxMTksIDEsIDI0NCwgMjMwLCAyMzIsIDExOSwgMSwgMjI0LCAyNDAsIDIzMiwgMTE5LCAxLCAxOTcsIDIzMiwgMTE5LCAxLCAKLSAgICAyMTYsIDExOCwgMjMyLCAxMTksIDEsIDI1NCwgMzIsIDIzMiwgMTE5LCAxLCAyNDUsIDEwOCwgMjMyLCAxMTksIDEsIDIzMiwgCi0gICAgMTIxLCAyMzIsIDExOSwgMSwgMjI4LCAxOTksIDIzMiwgMTE5LCAxLCAyNTAsIDI1MiwgMjMyLCAxMTksIDIxNiwgMTgwLCAKLSAgICA3NywgMjM0LCAxMjYsIDEsIDYxLCAyMzQsIDEyNiwgMzAsIDUsIDcyLCAyMzQsIDEyNiwgMzAsIDUsIDY5LCAyMzQsIDEyNiwgCi0gICAgMzAsIDUsIDE2MSwgMTQ5LCAyMzQsIDEyNiwgMzAsIDUsIDc0LCAyMzQsIDEyNiwgMzAsIDUsIDc1LCAyMzQsIDEyNiwgMzAsIAotICAgIDIzMywgNDcsIDc3LCAyMzQsIDEyNiwgNSwgNTEsIDIyMywgMTMxLCA1NSwgMjM0LCAxMjYsIDUsIDI1MywgMjQyLCAyMzQsIAotICAgIDEyNiwgNSwgMjE0LCAxMjgsIDIzNCwgMTI2LCAxLCAxODEsIDIzNCwgMTI2LCAxLCAyMzQsIDEzOCwgMjM0LCAxMjYsIDEsIAotICAgIDI0MywgMTEwLCAyMzQsIDEyNiwgMSwgMjQyLCAyMjUsIDIzNCwgMTI2LCAxLCAyNTAsIDIxOSwgMjM0LCAxMjYsIDEsIDI1MCwgCi0gICAgOTIsIDIzNCwgMTI2LCAxLCAyMzUsIDEzOSwgMjM0LCAxMjYsIDEsIDIyOCwgMjMsIDIzNCwgMTI2LCAxLCAyMTYsIDExNSwgCi0gICAgMjM0LCAxMjYsIDEsIDIxNiwgMTA1LCAyMzQsIDEyNiwgMSwgMjQ4LCA4NiwgMjM0LCAxMjYsIDEsIDI0OCwgNzAsIDIzNCwgCi0gICAgMTI2LCAxLCAyMjgsIDE5OCwgMjM0LCAxMjYsIDEsIDIxOCwgNTIsIDIzNCwgMTI2LCAxLCAyMTcsIDE2MSwgMjM0LCAxMjYsIAotICAgIDEsIDI0OCwgMTY0LCAyMzQsIDEyNiwgMSwgMjQ3LCAyMzIsIDIzNCwgMTI2LCAxLCAyMDUsIDIzNCwgMTI2LCAxLCAxOTMsIAotICAgIDIzNCwgMTI2LCAxLCAyMjYsIDIzLCAyMzQsIDEyNiwgMSwgMjUyLCAxMDcsIDIzNCwgMTI2LCAxLCAyNTEsIDE5NSwgMjM0LCAKLSAgICAxMjYsIDEsIDE4OCwgMjM0LCAxMjYsIDEsIDE4NiwgMjM0LCAxMjYsIDEsIDIwMywgMjM0LCAxMjYsIDEsIDIzMywgMTU3LCAKLSAgICAyMzQsIDEyNiwgMSwgMjE1LCAxLCAyMzQsIDEyNiwgMSwgMjIxLCAyNCwgMjM0LCAxMjYsIDEsIDIxOSwgMTU3LCAyMzQsIAotICAgIDEyNiwgMSwgMjIyLCAyMDIsIDIzNCwgMTI2LCAxLCAyMTIsIDEwOSwgMjM0LCAxMjYsIDEsIDE1OSwgMjM0LCAxMjYsIDEsIAotICAgIDIzNCwgNTUsIDIzNCwgMTI2LCAxLCAyMTYsIDg3LCAyMzQsIDEyNiwgNSwgMjUyLCA2MCwgNDksIDIzNCwgMTI2LCA1LCAKLSAgICAyNTAsIDE1NCwgMjM0LCAxMjYsIDUsIDYyLCA1NSwgMjM0LCAxMjYsIDIxNCwgMTMzLCAyMzQsIDEyNiwgMjEsIDExNiwgCi0gICAgMjM0LCAxMjYsIDIxLCAxMDksIDIzNCwgMTI2LCAyMSwgMTY2LCAyMzQsIDEyNiwgMjEsIDE2MywgMjM0LCAxMjYsIDUwLCAKLSAgICAyMTcsIDIwMCwgMjM0LCAxMjYsIDUwLCAyMTYsIDM4LCAyMzQsIDEyNiwgNTAsIDEyMiwgMjQwLCAyMDAsIDIzNCwgMTI2LCAKLSAgICA1MCwgMTIyLCAyMTcsIDEwMCwgMjM0LCAxMjYsIDIyNSwgMjcsIDI0NywgNzQsIDIzNCwgMTI2LCAyMjUsIDI3LCAzLCAyNDksIAotICAgIDIyOCwgMjM0LCAxMjYsIDIyNSwgMjcsIDI0OSwgMjI4LCAyMzQsIDEyNiwgMjI1LCAyNywgMjQ5LCA3NywgMTM0LCAyMzQsIAotICAgIDEyNiwgMjI1LCAyNywgMjMxLCAyNDMsIDIzNCwgMTI2LCAyMjUsIDI3LCAyMzIsIDE3MCwgMjM0LCAxMjYsIDIyNSwgMjcsIAotICAgIDI0OCwgMTIzLCAyMzQsIDEyNiwgMjI1LCAyNywgNTEsIDI0OCwgMTIzLCAyMzQsIDEyNiwgMjI1LCAyNywgMjMyLCAyMzYsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0MSwgMjIyLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMzMsIDExNywgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQxLCAxODAsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIzMSwgMTI5LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjQsIDE3OSwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjE0LCAxNCwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIwLCAyMDAsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyMywgMjE5LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNTEsIDIwMiwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjE3LCAyNDMsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyMiwgMTQyLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMzQsIDIzMCwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjI4LCA1MCwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjM0LCAxMjIsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyMiwgMTkzLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjIsIDE2NCwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQ0LCAxMjMsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI1NCwgNzgsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI1MywgNzcsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0NywgMjMwLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDIsIDE3NywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQ4LCAxMzMsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0MiwgMjE0LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTcsIDE3OSwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjEyLCA4OSwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQ3LCAyMjcsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxMiwgMjIzLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTcsIDE1MCwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjE3LCAxMzEsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDUwLCAxMTYsIDUzLCAKLSAgICAyMTksIDIxNSwgMjUzLCAyMDgsIDUwLCAyNDQsIDgzLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxMjgsIDIzNSwgMjM1LCAKLSAgICAyNTMsIDg4LCAxLCA2MSwgMjUzLCA4OCwgMSwgMjU0LCAyMzIsIDI1MywgODgsIDEsIDI1MywgMjQwLCAyNTMsIDg4LCAxLCAKLSAgICAyNTQsIDE5MSwgMjUzLCA4OCwgMSwgMjU0LCAzMiwgMjUzLCA4OCwgMSwgMjU0LCAxOTIsIDI1MywgODgsIDEsIDI1NCwgCi0gICAgMTQ4LCAyNTMsIDg4LCAxLCAyNTQsIDE0NCwgMjUzLCA4OCwgMSwgNzQsIDI1MywgODgsIDEsIDI0NSwgMTY1LCAyNTMsIDg4LCAKLSAgICAxLCA3NSwgMjUzLCA4OCwgMSwgMjI3LCA0OSwgMjUzLCA4OCwgMSwgNzIsIDI1MywgODgsIDEsIDIzNiwgMjgsIDI1MywgODgsIAotICAgIDEsIDY5LCAyNTMsIDg4LCAxLCAyMTUsIDkyLCAyNTMsIDg4LCAxLCAyMzQsIDE4OCwgMjUzLCA4OCwgMSwgMjEzLCAxNTAsIAotICAgIDI1MywgODgsIDEsIDIxMywgMTE2LCAyNTMsIDg4LCAxLCAyMTMsIDEyNSwgMjUzLCA4OCwgMSwgMjQzLCAzOCwgMjUzLCA4OCwgCi0gICAgMSwgMjQzLCAwLCAyNTMsIDg4LCAxLCAyNDIsIDIxMiwgMjUzLCA4OCwgMSwgMjUwLCAxMjQsIDI1MywgODgsIDEsIDIzNSwgCi0gICAgMTI3LCAyNTMsIDg4LCAxLCAyMTcsIDIyOSwgMjUzLCA4OCwgMSwgMjE3LCAxNDgsIDI1MywgODgsIDEsIDI0OCwgNDEsIAotICAgIDI1MywgODgsIDEsIDI0NywgMjI1LCAyNTMsIDg4LCAxLCAyMTYsIDExMiwgMjUzLCA4OCwgMSwgMjI2LCA5NiwgMjUzLCA4OCwgCi0gICAgMSwgMjQ0LCAxMjMsIDI1MywgODgsIDEsIDI1MSwgMjUxLCAyNTMsIDg4LCAxLCAyNTEsIDE5MiwgMjUzLCA4OCwgMSwgMjI5LCAKLSAgICAxNDgsIDI1MywgODgsIDEsIDIyOSwgNzAsIDI1MywgODgsIDEsIDIyOSwgNzEsIDI1MywgODgsIDEsIDIyOSwgMTg3LCAyNTMsIAotICAgIDg4LCAxLCAyMjgsIDE3LCAyNTMsIDg4LCAxLCAyMjgsIDE5NywgMjUzLCA4OCwgMSwgMjMxLCAxNTYsIDI1MywgODgsIDEsIAotICAgIDI0MSwgMTAyLCAyNTMsIDg4LCAxLCAyMTIsIDE1OSwgMjUzLCA4OCwgMSwgMjEzLCAzOCwgMjUzLCA4OCwgMSwgMjE0LCAKLSAgICAyMzIsIDI1MywgODgsIDEsIDIyNCwgMjEsIDI1MywgODgsIDEsIDIzMywgODIsIDI1MywgODgsIDEsIDIyMiwgMTAwLCAyNTMsIAotICAgIDg4LCAxLCAyMTIsIDg3LCAyNTMsIDg4LCAxLCAyMjAsIDI0MywgMjUzLCA4OCwgMSwgMjEyLCA2NywgMjUzLCA4OCwgMSwgCi0gICAgMjIwLCAxMjQsIDI1MywgODgsIDEsIDIxOSwgMTI5LCAyNTMsIDg4LCAxLCAyNDEsIDIyMiwgMjUzLCA4OCwgMjU0LCAxODEsIAotICAgIDc3LCAyMTcsIDMyLCAxMTcsIDE3NiwgMTEwLCAxMjIsIDYyLCAyMjUsIDI2LCAzLCAxMTcsIDE3NiwgMTEwLCAxMjIsIDYyLCAKLSAgICAyMjUsIDI2LCAyMzMsIDEwOCwgMTE3LCAxNzYsIDExMCwgMTIyLCA2MiwgMjI1LCAyNiwgMjMzLCAxMDgsIDEyMiwgNjIsIAotICAgIDExMCwgMTE3LCAxNzYsIDIyNSwgMjYsIDIzMywgMTA4LCAxMTcsIDIyMywgMTI5LCAxMTAsIDEyMiwgMjIzLCAxMzEsIDIyNSwgCi0gICAgMjYsIDIzMywgMTA4LCAxMjIsIDIyMywgMTMxLCAxMTAsIDExNywgMjIzLCAxMjksIDIyNSwgMjYsIDIzNSwgMjE1LCAyMjYsIAotICAgIDEyNiwgMSwgMjU0LCA3NiwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyNTEsIDIwMiwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAKLSAgICAyNDIsIDE3NywgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyNDgsIDEzMywgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyNDEsIAotICAgIDIyMiwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMTQsIDE0LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIxMiwgOTAsIDIzNSwgCi0gICAgMjE1LCAyMjYsIDEyNiwgMSwgMjQxLCAxODAsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjE3LCAxNzksIDIzNSwgMjE1LCAKLSAgICAyMjYsIDEyNiwgMSwgMjEyLCAyMjMsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjM0LCAyMzAsIDIzNSwgMjE1LCAyMjYsIAotICAgIDEyNiwgMSwgMjMzLCAxMTcsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjMxLCAxMjksIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgCi0gICAgMjI4LCA1MCwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMjIsIDE2NCwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyNTMsIDc4LCAKLSAgICAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIyNiwgOTYsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjIyLCAxOTMsIDIzNSwgCi0gICAgMjE1LCAyMjYsIDEyNiwgMSwgMjI0LCAxNzksIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjIzLCAyMTksIDIzNSwgMjE1LCAKLSAgICAyMjYsIDEyNiwgMSwgMjIwLCAyMDAsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjE3LCAyNDMsIDIzNSwgMjE1LCAyMjYsIAotICAgIDEyNiwgNTAsIDExNiwgMjM1LCAyMTUsIDIyNiwgMTI2LCA1MCwgMTA5LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDUwLCAxNjYsIAotICAgIDIzNSwgMjE1LCAyMjYsIDEyNiwgNTAsIDE2MywgMjM1LCAyMTUsIDIyNiwgMTI2LCA1MCwgMjE3LCAyMDAsIDIzNSwgMjE1LCAKLSAgICAyMjYsIDEyNiwgNTAsIDIxNiwgMzgsIDIzNSwgMjE1LCAyMjYsIDEyNiwgNTAsIDEyMiwgMjQwLCAyMDAsIDIzNSwgMjE1LCAKLSAgICAyMjYsIDEyNiwgNTAsIDEyMiwgMjE3LCAxMDAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjU0LCA3NiwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTk4LCAxLCAyNTEsIDIwMiwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyNDIsIDE3NywgMjM1LCAyMTUsIDIyNiwgCi0gICAgMTk4LCAxLCAyNDgsIDEzMywgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyNDEsIDIyMiwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAKLSAgICAyMTQsIDEzLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIxMiwgOTAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjQxLCAxODAsIAotICAgIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjE3LCAxNzksIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjEyLCAyMjMsIDIzNSwgCi0gICAgMjE1LCAyMjYsIDE5OCwgMSwgMjM0LCAyMzAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjMzLCAxMTcsIDIzNSwgMjE1LCAKLSAgICAyMjYsIDE5OCwgMSwgMjMxLCAxMjgsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjI4LCA1MCwgMjM1LCAyMTUsIDIyNiwgCi0gICAgMTk4LCAxLCAyMjIsIDE2NCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMjYsIDk2LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIAotICAgIDIyMiwgMTkzLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIyMCwgMjAwLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIxNywgCi0gICAgMjQzLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDUwLCAxMTYsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDEwOSwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTk4LCA1MCwgMTY2LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDUwLCAxNjMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIAotICAgIDIxNywgMjAwLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDUwLCAyMTYsIDM4LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDUwLCAxMjIsIAotICAgIDI0MCwgMjAwLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDUwLCAxMjIsIDIxNywgMTAwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCA2MSwgCi0gICAgNTMsIDE4NSwgMSwgMjEzLCAyOCwgNjEsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTQ4LCA1MywgMTg1LCAxLCAyMjcsIAotICAgIDE2LCA3MiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgNzIsIDUzLCAxODUsIDEsIDIxMywgMjgsIDc0LCA1MywgMTg1LCAxLCAKLSAgICAyMjcsIDE2LCA3NSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjI3LCA5OSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjI3LCA5OSwgCi0gICAgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxODUsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTg1LCA1MywgMTg1LCAxLCAKLSAgICAyMjcsIDE2LCAyNTQsIDE0NywgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxNDcsIDUzLCAxODUsIDEsIDIyNywgMTYsIAotICAgIDI1NCwgMTIxLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDEyMSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxNDIsIAotICAgIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTQyLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE2MCwgNTMsIDE4NSwgMSwgCi0gICAgMjEzLCAyOCwgMjU0LCAxNjAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTQ2LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAKLSAgICAyNDQsIDIzNiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjQ0LCAyMzYsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1MywgODMsIAotICAgIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1MywgODMsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTI5LCA1MywgMTg1LCAxLCAKLSAgICAyMTMsIDI4LCAyNTQsIDEyOSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxNDAsIDUzLCAxODUsIDEsIDIxMywgMjgsIAotICAgIDI1NCwgMTQwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMjcsIDk4LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyMjcsIDk4LCA1MywgCi0gICAgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDg2LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDg2LCA1MywgMTg1LCAxLCAyMjcsIAotICAgIDE2LCAyNTQsIDEzOSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCAxMTksIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgCi0gICAgMTE3LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDMyLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDEzNywgNTMsIAotICAgIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxMzcsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgOTAsIDUzLCAxODUsIDEsIDIxMywgCi0gICAgMjgsIDI0NSwgOTAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgMTA1LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNDUsIAotICAgIDEwNSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCA3NywgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjQ1LCA3NywgNTMsIDE4NSwgCi0gICAgMSwgMjEzLCAyOCwgMjU0LCAyNCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCA5NiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgCi0gICAgMjU0LCAxMzYsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgNzAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDIyNywgNDEsIDUzLCAKLSAgICAxODUsIDEsIDIyNywgMTYsIDI0MCwgMTA2LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDE3MSwgNTMsIDE4NSwgMSwgCi0gICAgMjEzLCAyOCwgMjQ1LCAxNzEsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1MywgMjE1LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAKLSAgICAyNTMsIDIxNSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjM1LCAxNzksIDUzLCAxODUsIDEsIDIxMywgMjgsIDIzNSwgMTc5LCAKLSAgICA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMjcsIDI1LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyMjcsIDI1LCA1MywgMTg1LCAxLCAKLSAgICAyMjcsIDE2LCAyNTMsIDIxMSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjUzLCAyMTEsIDUzLCAxODUsIDEsIDIyNywgMTYsIAotICAgIDI1NCwgMTM1LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTMsIDE1MiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxMzMsIAotICAgIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1MywgMTQ2LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTMsIDE0NiwgNTMsIDE4NSwgMSwgCi0gICAgMjI3LCAxNiwgMjQ1LCA0MCwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjQ1LCA0MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCAKLSAgICAxMjIsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1MywgMTIyLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDEzMCwgNTMsIAotICAgIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxMzAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDIyNywgOCwgNTMsIDE4NSwgMSwgMjI3LCAKLSAgICAxNiwgMjUyLCA0NSwgMjIzLCAzOCwgMjEsIDExNiwgMjIzLCAzOCwgMjEsIDEwOSwgMjIzLCAzOCwgMjEsIDE2NiwgMjIzLCAKLSAgICAzOCwgMjEsIDE2MywgMjIzLCAzOCwgMjEsIDE4MCwgMjIzLCAzOCwgMjEsIDE4OSwgMjIzLCAzOCwgMjEsIDE5OCwgMjIzLCAKLSAgICAzOCwgMjEsIDE5NSwgMjIzLCAzOCwgMjEsIDIwMCwgMjIzLCAzOCwgNTAsIDIxNywgMjAwLCAyMjMsIDM4LCA1MCwgMjE2LCAKLSAgICAzOCwgMjIzLCAzOCwgNTAsIDIxNywgMTE1LCAyMjMsIDM4LCA1MCwgMjQzLCAyNDAsIDIyMywgMzgsIDUwLCAyNDQsIDgzLCAKLSAgICAyMjMsIDM4LCA1MCwgMjIwLCAzOSwgMjIzLCAzOCwgNTAsIDIyMSwgMzcsIDIyMywgMzgsIDUwLCAyNDUsIDE0MSwgMjIzLCAKLSAgICAzOCwgNTAsIDIyOSwgMjYsIDIyMywgMzgsIDUwLCAxMjIsIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgMTE3LCAyNDAsIDIwMCwgCi0gICAgMjIzLCAzOCwgNTAsIDEzMywgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAyNDMsIDIzNywgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAKLSAgICAyNDQsIDUwLCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDIyMCwgNTMsIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgMjIxLCA0MywgCi0gICAgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAyNDUsIDE1MCwgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAyMjksIDMxLCAyNDAsIAotICAgIDIwMCwgMjIzLCAzOCwgMjQzLCAyMjgsIDEyMiwgMjQyLCA5LCAyMjMsIDM4LCAyNDMsIDIyOCwgMTIyLCAyMjQsIDE2NiwgCi0gICAgMjIzLCAzOCwgMjQzLCAyMjgsIDEyMiwgMjE3LCAxMjEsIDIyMywgMzgsIDI0MywgMjI4LCAxMTcsIDIxNywgMTE5LCAxMTIsIAotICAgIDUsIDI1MCwgMTg3LCAxMTIsIDUsIDI1MywgMjQyLCAxMTIsIDUsIDIxNCwgMTI4LCAxMTIsIDUsIDIzNSwgMTA0LCAxMTIsIAotICAgIDUsIDIxNSwgMTMyLCAxMTIsIDEsIDYxLCAxMTIsIDEsIDI1NCwgMjMyLCAxMTIsIDEsIDcyLCAxMTIsIDEsIDIzNiwgMjgsIAotICAgIDExMiwgMSwgNjksIDExMiwgMSwgMjE1LCA5MiwgMTEyLCAxLCAxNjEsIDE0OSwgMTEyLCAxLCAxNjEsIDIyMywgODIsIDExMiwgCi0gICAgMSwgMTYxLCAxNTAsIDExMiwgMSwgMTYxLCAyMzIsIDIxNCwgMTEyLCAxLCA3NCwgMTEyLCAxLCAyNTQsIDEwOCwgMTEyLCAxLCAKLSAgICA3NSwgMTEyLCAxLCAyNTMsIDEwOCwgMTEyLCAxLCAxODEsIDExMiwgMSwgMjM0LCAxMzgsIDExMiwgMSwgMjQzLCAxMTAsIAotICAgIDExMiwgMSwgMjQyLCAyMjUsIDExMiwgMSwgMjI5LCAxNTksIDExMiwgMSwgMjUwLCAyMTksIDExMiwgMSwgMjUwLCA5MiwgCi0gICAgMTEyLCAxLCAyMzUsIDEzOSwgMTEyLCAxLCAyMzUsIDExNSwgMTEyLCAxLCAyMjgsIDIzLCAxMTIsIDEsIDIxNiwgMTE1LCAKLSAgICAxMTIsIDEsIDIxNiwgMTA1LCAxMTIsIDEsIDI0OCwgODYsIDExMiwgMSwgMjQ4LCA3MCwgMTEyLCAxLCAyMjgsIDE5OCwgCi0gICAgMTEyLCAxLCAyMTgsIDUyLCAxMTIsIDEsIDIxNywgMTYxLCAxMTIsIDEsIDI0OCwgMTY0LCAxMTIsIDEsIDI0NywgMjMyLCAKLSAgICAxMTIsIDEsIDIwNSwgMTEyLCAxLCAxOTMsIDExMiwgMSwgMjI2LCAyMywgMTEyLCAxLCAyNTIsIDEwNywgMTEyLCAxLCAyNTEsIAotICAgIDE5NSwgMTEyLCAxLCAxODgsIDExMiwgMSwgMTg2LCAxMTIsIDEsIDIwMywgMTEyLCAxLCAyMzMsIDE1NywgMTEyLCAxLCAKLSAgICAyMTUsIDEsIDExMiwgMSwgMjIxLCAyNCwgMTEyLCAxLCAyMTksIDE1NywgMTEyLCAxLCAyMjIsIDIwMiwgMTEyLCAxLCAxNTksIAotICAgIDExMiwgMSwgMjMyLCAyMTMsIDExMiwgMSwgNTMsIDE3OCwgMjMyLCAyMTIsIDExMiwgMSwgNTMsIDE3OCwgMjIzLCA4MSwgCi0gICAgMTEyLCAxLCA1MywgMTc4LCAyMjgsIDE4OSwgMTEyLCAzMCwgNSwgMjU0LCAyMzIsIDExMiwgMzAsIDUsIDI1MSwgMTkzLCAKLSAgICAyNTQsIDIzMiwgMTEyLCAzMCwgNSwgNzIsIDExMiwgMzAsIDUsIDIzNiwgMjgsIDExMiwgMzAsIDUsIDY5LCAxMTIsIDMwLCAKLSAgICA1LCAyMTUsIDkyLCAxMTIsIDMwLCA1LCAxNjEsIDE0OSwgMTEyLCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxMTIsIDMwLCA1LCAKLSAgICAxNjEsIDE1MCwgMTEyLCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTEyLCAzMCwgNSwgNzQsIDExMiwgMzAsIDUsIDI1NCwgCi0gICAgMTA4LCAxMTIsIDMwLCA1LCA3NSwgMTEyLCAzMCwgNSwgMjUzLCAxMDgsIDExMiwgMjE0LCAxMzMsIDExMiwgMjQ4LCAxMjMsIAotICAgIDExMiwgNTEsIDI0OCwgMTIzLCAxMTIsIDIyNSwgMjcsIDI0NywgNzQsIDExMiwgMjI1LCAyNywgNTEsIDI0NywgNzQsIDExMiwgCi0gICAgMjI1LCAyNywgMjMyLCAyNDIsIDExMiwgMjI1LCAyNywgMjQ5LCA3NywgMTM0LCAxMTIsIDIyNSwgMjcsIDIzMiwgMTcwLCAKLSAgICAxMTIsIDUwLCAxMTYsIDExMiwgNTAsIDEwOSwgMTEyLCA1MCwgMTY2LCAxMTIsIDUwLCAxNjMsIDExMiwgNTAsIDE4MCwgCi0gICAgMTEyLCA1MCwgMTg5LCAxMTIsIDUwLCAxOTgsIDExMiwgNTAsIDE5NSwgMTEyLCA1MCwgMjAwLCAxMTIsIDUwLCAyMTcsIAotICAgIDIwMCwgMTEyLCA1MCwgMjE2LCAzOCwgMTEyLCA1MCwgMjE3LCAxMTUsIDExMiwgNTAsIDI0MywgMjQwLCAxMTIsIDUwLCAKLSAgICAyNDQsIDgzLCAxMTIsIDUwLCAyMjAsIDM5LCAxMTIsIDUwLCAyMjEsIDM3LCAxMTIsIDUwLCAyNDUsIDE0MSwgMTEyLCA1MCwgCi0gICAgMjI5LCAyNiwgMTEyLCA1MCwgMTIyLCAyNDAsIDIwMCwgMTEyLCA1MCwgMTIyLCAyMTcsIDEwMCwgMTEyLCAyMSwgMjEyLCAKLSAgICA3OSwgMTEyLCAyMSwgMTE2LCAxMTIsIDIxLCAxMDksIDExMiwgMjEsIDE2NiwgMTEyLCAyMSwgMTYzLCAxMTIsIDIxLCAxODAsIAotICAgIDExMiwgMjEsIDE4OSwgMTEyLCAyMSwgMTk4LCAxMTIsIDIxLCAxOTUsIDExMiwgMjEsIDIwMCwgMjA4LCA1LCAyNTAsIDE4NywgCi0gICAgMjA4LCA1LCAyNTMsIDI0MiwgMjA4LCA1LCAyMTQsIDEyOCwgMjA4LCAxLCA2MSwgMjA4LCAxLCAyNTQsIDIzMiwgMjA4LCAxLCAKLSAgICA3MiwgMjA4LCAxLCAyMzYsIDI4LCAyMDgsIDEsIDY5LCAyMDgsIDEsIDIxNSwgOTIsIDIwOCwgMSwgNzQsIDIwOCwgMSwgCi0gICAgMjU0LCAxMDgsIDIwOCwgMSwgNzUsIDIwOCwgMSwgMjUzLCAxMDgsIDIwOCwgMSwgMTgxLCAyMDgsIDEsIDIzNCwgMTM4LCAKLSAgICAyMDgsIDEsIDI0MywgMTEwLCAyMDgsIDEsIDI0MiwgMjI1LCAyMDgsIDEsIDIyOSwgMTU5LCAyMDgsIDEsIDI1MCwgMjE5LCAKLSAgICAyMDgsIDEsIDI1MCwgOTIsIDIwOCwgMSwgMjM1LCAxMzksIDIwOCwgMSwgMjM1LCAxMTUsIDIwOCwgMSwgMjI4LCAyMywgCi0gICAgMjA4LCAxLCAyMTYsIDExNSwgMjA4LCAxLCAyMTYsIDEwNSwgMjA4LCAxLCAyNDgsIDg2LCAyMDgsIDEsIDI0OCwgNzUsIAotICAgIDIwOCwgMSwgMjQ4LCA3MCwgMjA4LCAxLCAyMjMsIDE5MiwgMjA4LCAxLCAyMjgsIDE5OCwgMjA4LCAxLCAyMTgsIDUyLCAKLSAgICAyMDgsIDEsIDIxNywgMTYxLCAyMDgsIDEsIDI0OCwgMTY0LCAyMDgsIDEsIDI0NywgMjMyLCAyMDgsIDEsIDIwNSwgMjA4LCAKLSAgICAxLCAxOTMsIDIwOCwgMSwgMjI2LCAyMywgMjA4LCAxLCAyNTIsIDEwNywgMjA4LCAxLCAyNTEsIDE5NSwgMjA4LCAxLCAxODgsIAotICAgIDIwOCwgMSwgMTg2LCAyMDgsIDEsIDIwMywgMjA4LCAxLCAyMzMsIDE1NywgMjA4LCAxLCAyMTUsIDEsIDIwOCwgMSwgMjIxLCAKLSAgICAyNCwgMjA4LCAxLCAyMTksIDE1NywgMjA4LCAxLCAyMjIsIDIwMiwgMjA4LCAxLCAxNTksIDIwOCwgMzAsIDUsIDI1NCwgCi0gICAgMjMyLCAyMDgsIDMwLCA1LCA3MiwgMjA4LCAzMCwgNSwgMjM2LCAyOCwgMjA4LCAzMCwgNSwgNjksIDIwOCwgMzAsIDUsIAotICAgIDIxNSwgOTIsIDIwOCwgMzAsIDUsIDc0LCAyMDgsIDMwLCA1LCAyNTQsIDEwOCwgMjA4LCAzMCwgNSwgNzUsIDIwOCwgMzAsIAotICAgIDUsIDI1MywgMTA4LCAyMDgsIDUsIDIxNCwgMTMzLCAyMDgsIDUsIDIyOCwgNjAsIDIwOCwgMjU0LCAxODEsIDUyLCAyMDgsIAotICAgIDI0NSwgODAsIDUyLCAyMDgsIDUwLCA1MiwgMjA4LCAyMjIsIDkyLCA3NywgMjA4LCA1MSwgMjIyLCA5MiwgNzcsIDIwOCwgCi0gICAgMjQ4LCAxMjMsIDIwOCwgNTEsIDI0OCwgMTIzLCAxNSwgNSwgNjEsIDE1LCA1LCAxMTgsIDI5LCA2MSwgMTUsIDUsIDExOCwgCi0gICAgMjksIDI1MiwgOTQsIDE1LCA1LCAxMTgsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDExOCwgMjksIDE1OSwgMTUsIAotICAgIDUsIDExOCwgMjksIDIzNiwgMzAsIDE1LCA1LCAxMTgsIDI5LCAyMzMsIDEzOSwgMjQyLCA3NSwgMTUsIDUsIDExOCwgMjksIAotICAgIDIzMCwgMTMxLCAxNSwgNSwgMTE4LCAyOSwgMjIyLCAxOTAsIDE1LCA1LCAyNTQsIDIzNCwgMTUsIDUsIDI1NCwgMTg1LCAxNSwgCi0gICAgNSwgMjU0LCAxODYsIDI5LCAyNTMsIDE0NCwgMTUsIDUsIDI1NCwgMTg2LCAyOSwgMjQ2LCAyMiwgMjQyLCA3NSwgMTUsIDUsIAotICAgIDI1NCwgMTg2LCAyOSwgMjQzLCA5NCwgMTUsIDUsIDI1NCwgMTg2LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAKLSAgICAyNTQsIDE4NiwgMjksIDE1OSwgMTUsIDUsIDI1NCwgMTg2LCAyOSwgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIDI1NCwgCi0gICAgMTg2LCAyOSwgMjM2LCA0LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyMzMsIDE0MCwgMTUsIDUsIDI1NCwgMTg2LCAyOSwgMjIwLCAKLSAgICAyMjgsIDE1LCA1LCAyNTQsIDE4NiwgMjksIDExMSwgOTQsIDExMSwgOTQsIDY5LCAxNSwgNSwgMjU0LCAxODYsIDI0MiwgNzUsIAotICAgIDE1LCA1LCAyNTQsIDE4MywgMTUsIDUsIDI1NCwgMTg0LCAyOSwgMjUyLCA3OSwgMTUsIDUsIDI1NCwgMTg0LCAyOSwgMjQzLCAKLSAgICA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyNTQsIDE4NCwgMjksIDIzMSwgMTU3LCA5NCwgMjQ1LCAxMDgsIDE1LCA1LCAyNTQsIAotICAgIDE4NCwgMjksIDIyMSwgMjIsIDE1LCA1LCAyNTQsIDE4NCwgMjksIDIxOCwgMjIsIDE1LCA1LCAyNTQsIDE2MCwgMTUsIDUsIAotICAgIDI1NCwgOTQsIDE1LCA1LCAyNTQsIDk1LCAyOSwgMjQ1LCA1MCwgMTUsIDUsIDI1NCwgOTUsIDI5LCAyMjAsIDE5MCwgOTQsIAotICAgIDI0MiwgMTY2LCAxNSwgNSwgMjU0LCA4NiwgMTUsIDUsIDI1NCwgODcsIDI5LCAyNTQsIDg2LCAxNSwgNSwgMjU0LCA4NywgCi0gICAgMjksIDI0NywgMTY4LCAxNSwgNSwgMjU0LCA4NywgMjksIDI0MiwgMTY2LCAxNSwgNSwgMjU0LCA4NywgMjksIDE1OSwgMTUsIAotICAgIDUsIDI1NCwgODcsIDI5LCAyMzUsIDMsIDE1LCA1LCAyNTQsIDg3LCAyOSwgMjM0LCAxMDEsIDE1LCA1LCAyNTQsIDg3LCAyOSwgCi0gICAgMjIwLCAyNDMsIDE1LCA1LCAyNTQsIDg3LCAyOSwgMjE1LCAxMDAsIDE1LCA1LCAyNTQsIDgzLCAxNSwgNSwgMjU0LCA3NiwgCi0gICAgMTUsIDUsIDI1NCwgNDEsIDE1LCA1LCAyNTQsIDQyLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNTQsIDMyLCAxNSwgNSwgMjU0LCAKLSAgICAzMywgMTEwLCAyNTQsIDMyLCAxNSwgNSwgMjU0LCAzMywgMTMzLCAyMTcsIDM4LCAxNSwgNSwgMjU0LCAzMywgOTQsIDIzMCwgCi0gICAgMzUsIDIyNywgMzAsIDI1NCwgMzMsIDk0LCAyMzAsIDM0LCAxNSwgNSwgMjU0LCAzMywgOTQsIDIzMCwgMzUsIDIxOSwgMTY1LCAKLSAgICAxNSwgNSwgMjU0LCA1LCAxNSwgNSwgMjUzLCAyMzUsIDE1LCA1LCAyNTMsIDIwNSwgMTUsIDUsIDI1MywgMjA2LCAyOSwgCi0gICAgMjMzLCAyMTcsIDE1LCA1LCAyNTMsIDE3OSwgMTUsIDUsIDI1MywgMTUxLCAxNSwgNSwgMjUzLCAxNDYsIDE1LCA1LCAyNTMsIAotICAgIDE0NywgMjEyLCAzMywgMjE3LCAxOTIsIDE1LCA1LCAyNTMsIDE0NywgMjM1LCA3LCAyMTcsIDE5MiwgMTUsIDUsIDI1MywgCi0gICAgMTQ3LCAxMTAsIDI1MywgMTQ3LCAyMTYsIDc4LCAxMTAsIDIxNiwgNzgsIDIxNiwgNzgsIDExMCwgMjE2LCA3OCwgMjI2LCAKLSAgICAxNDksIDE1LCA1LCAyNTMsIDE0NywgMTEwLCAyNTMsIDE0NywgMTEwLCAyNTMsIDE0NiwgMTUsIDUsIDI1MywgMTQ3LCAxMTAsIAotICAgIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ3LCAyNDksIDY1LCAyNTMsIDE0NywgMTEwLCAyNTMsIDE0NywgMTEwLCAyNTMsIDE0NiwgCi0gICAgMTUsIDUsIDI1MywgMTQ0LCAxNSwgNSwgMjUzLCAxNDEsIDE1LCA1LCAyNTIsIDEwNywgMTUsIDUsIDI1MiwgOTQsIDE1LCA1LCAKLSAgICAyNTIsIDg5LCAxNSwgNSwgMjUyLCA4NiwgMTUsIDUsIDI1MiwgODAsIDE1LCA1LCAyNTIsIDgxLCAxMTAsIDI1MiwgODAsIAotICAgIDE1LCA1LCAyNTIsIDc5LCAxNSwgNSwgMTM0LCAxNSwgNSwgMjUyLCA1OSwgMTUsIDUsIDI1MSwgMTg0LCAxNSwgNSwgMjUxLCAKLSAgICAxODUsIDI5LCA2MSwgMTUsIDUsIDI1MSwgMTg1LCAyOSwgMjQzLCA3MiwgMTUsIDUsIDI1MSwgMTg1LCAyOSwgMjM2LCAzMSwgCi0gICAgMjQyLCA3NSwgMTUsIDUsIDI1MSwgNTQsIDE1LCA1LCAyNTEsIDU1LCAxMTAsIDI1MSwgNTUsIDI1NCwgMTg1LCAxNSwgNSwgCi0gICAgMjUxLCA1NSwgMTEwLCAyNTEsIDU1LCAyMTUsIDE2MCwgMTUsIDUsIDI1MSwgNTUsIDI0OSwgNjUsIDI1MSwgNTQsIDE1LCA1LCAKLSAgICAyNTEsIDM4LCAxNSwgNSwgMjUxLCAzOSwgMTEwLCAyNTEsIDM4LCAxNSwgNSwgMjUxLCAyNywgMTUsIDUsIDI1MSwgMjYsIAotICAgIDE1LCA1LCAyNDgsIDE2NCwgMTUsIDUsIDI0OCwgMTU1LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAxMTgsIDk0LCAKLSAgICAyMzEsIDIxMCwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjU0LCA0MSwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIAotICAgIDc1LCAyOSwgMjUyLCA3OSwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjUxLCAxODQsIDE1LCA1LCAyNDgsIDE1NiwgCi0gICAgMjM0LCA3NSwgMjksIDI0MywgMTEwLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyNDMsIDExMSwgOTQsIDIzMSwgCi0gICAgMjEwLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyNDIsIDE5MCwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAKLSAgICAyOSwgMjQyLCAxNzMsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDI0MiwgODQsIDE1LCA1LCAyNDgsIDE1NiwgCi0gICAgMjM0LCA3NSwgMjksIDE1OSwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjM1LCAxNzcsIDE1LCA1LCAyNDgsIAotICAgIDE1NiwgMjM0LCA3NSwgMjksIDIzNSwgMTc4LCA5NCwgMjMyLCAxNTYsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIAotICAgIDIzNCwgMjQ3LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMzMsIDE1NywgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIAotICAgIDc1LCAyOSwgMjMyLCAxNTYsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIzMiwgMTU3LCA5NCwgMjMxLCAyMDksIAotICAgIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIzMiwgMTQyLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAKLSAgICAyMjksIDE4NywgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjI2LCAxNTAsIDk0LCAyMjYsIDE0OSwgMTUsIDUsIAotICAgIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjIwLCAxMTcsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIxOCwgMjIsIAotICAgIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIxNSwgMTk4LCA5NCwgMjQyLCAxNzMsIDE1LCA1LCAyNDgsIDE1NiwgCi0gICAgMjM0LCA3NSwgMjksIDIxNSwgMTAwLCAxNSwgNSwgMjQ4LCAxMzIsIDE1LCA1LCAyNDgsIDExMSwgMTUsIDUsIDI0OCwgMTEwLCAKLSAgICAxNSwgNSwgMjQ4LCAxMDksIDE1LCA1LCAyNDcsIDIxMSwgMTUsIDUsIDI0NywgMTk0LCAxNSwgNSwgMjQ3LCAxNjksIDE1LCAKLSAgICA1LCAyNDcsIDE3MCwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjQ3LCAxNjgsIDE1LCA1LCAyNDcsIDE1OCwgMTUsIDUsIDI0NywgCi0gICAgMTU5LCAyMzQsIDIxMywgMTExLCAyNDIsIDc2LCAyNDcsIDEzOSwgMTUsIDUsIDI0NywgMTM5LCAxNSwgNSwgMjQ2LCAzMywgCi0gICAgMTUsIDUsIDI0NiwgMzQsIDExMCwgMjQ2LCAzMywgMTUsIDUsIDI0NiwgMzQsIDI0MiwgNzUsIDE1LCA1LCAyNDYsIDM0LCAKLSAgICAyMjAsIDIyNSwgMTUsIDUsIDI0NiwgMzEsIDE1LCA1LCAyNDYsIDMyLCAyOSwgMjQ1LCAzNywgMTUsIDUsIDI0NiwgMzAsIAotICAgIDE1LCA1LCAyNDYsIDI5LCAxNSwgNSwgMjQ2LCAyOCwgMTUsIDUsIDI0NiwgMjcsIDE1LCA1LCAyNDYsIDIzLCAxNSwgNSwgCi0gICAgMjQ2LCAyMSwgMTUsIDUsIDI0NiwgMjIsIDI0MiwgNzUsIDE1LCA1LCAyNDYsIDIyLCAyNDIsIDc2LCAyNDIsIDc1LCAxNSwgCi0gICAgNSwgMjQ2LCAyMCwgMTUsIDUsIDI0NiwgMTMsIDE1LCA1LCA3NCwgMTUsIDUsIDE5MSwgMjksIDIyNiwgMTQ5LCAxNSwgNSwgCi0gICAgMTkxLCAxMTAsIDE5MSwgMjI4LCA1MSwgMTEwLCAyMjgsIDUwLCAxNSwgNSwgMjQ1LCAxOTAsIDE1LCA1LCAyNDUsIDE5MSwgCi0gICAgMjksIDExOCwgOTQsIDI0MiwgMzAsIDk0LCAyNDgsIDE2NCwgMTUsIDUsIDI0NSwgMTkxLCAyOSwgMjQzLCA3MiwgMTUsIDUsIAotICAgIDI0NSwgMTkxLCAyOSwgMjMxLCA0MiwgMTUsIDUsIDI0NSwgMTkxLCAyOSwgMjIyLCAxNzksIDE1LCA1LCAyNDUsIDE5MSwgCi0gICAgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjQ1LCAxOTEsIDI5LCA2OSwgMTUsIDUsIDI0NSwgMTY3LCAxNSwgNSwgMjQ1LCAxNTcsIAotICAgIDE1LCA1LCAyNDUsIDEzMSwgMTUsIDUsIDI0NSwgMTA4LCAxNSwgNSwgMjQ1LCAxMDksIDI5LCAyNDMsIDgwLCAxNSwgNSwgCi0gICAgMjQ1LCAxMDksIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDI0NSwgMTA5LCAyOSwgMjMxLCAxNTYsIDE1LCA1LCAKLSAgICAyNDUsIDEwOSwgMjQ5LCA2NSwgMjQ1LCAxMDgsIDE1LCA1LCAyNDUsIDEwOSwgMjI3LCAzMCwgMjQ1LCAxMDgsIDE1LCA1LCAKLSAgICAyNDUsIDEwOSwgMjE5LCAxNjUsIDE1LCA1LCAyNDUsIDUyLCAxNSwgNSwgMjQ1LCA1MCwgMTUsIDUsIDI0NSwgMzcsIDE1LCAKLSAgICA1LCAyNDQsIDIzNCwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgNjEsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDExOCwgOTQsIDIzMywgCi0gICAgMTI4LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAxMTgsIDk0LCAyMzMsIDEyOSwgMjksIDIzMywgMTI4LCAxNSwgNSwgMjQ0LCAKLSAgICAyMzUsIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyNDYsIAotICAgIDIyLCAyNDIsIDc1LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyNDYsIDIyLCAyNDIsIDc2LCAyNDIsIDc1LCAxNSwgNSwgMjQ0LCAKLSAgICAyMzUsIDI5LCAxNTksIDE1LCA1LCAyNDQsIDIzNSwgMjksIDI0MiwgMzAsIDI0MiwgNzUsIDE1LCA1LCAyNDQsIDIzNSwgMjksIAotICAgIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDIzNCwgMjEyLCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAKLSAgICAyMzQsIDIxMywgMjE5LCAxNjUsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDIzMywgMjM2LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAKLSAgICAyMzMsIDE1NywgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjMzLCAxMjksIDI5LCAyMzMsIDEyOCwgMTUsIDUsIDI0NCwgMjM1LCAKLSAgICAyOSwgMjMzLCAxMywgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjMyLCAxNTYsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDIxNSwgCi0gICAgMTk3LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDI0MywgMTEwLCAxNSwgNSwgMjQzLCAxMTEsIAotICAgIDI0MiwgNzUsIDE1LCA1LCAyNDMsIDEwOCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMTE4LCA5NCwgMjQ4LCAxNjUsIDk0LCAKLSAgICAxNTksIDE1LCA1LCAyNDMsIDEwOSwgMjksIDExOCwgOTQsIDE1OSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMTE4LCA5NCwgCi0gICAgMjM2LCAzMCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjU0LCAxODQsIDIxNywgMTkzLCA5NCwgMjE4LCA0MSwgMTUsIDUsIAotICAgIDI0MywgMTA5LCAyOSwgMjU0LCAzMiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjUzLCAxNDYsIDE1LCA1LCAyNDMsIDEwOSwgCi0gICAgMjksIDI1MywgMTQ1LCA5NCwgMjQzLCA5NCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDI0MywgMTA5LCAKLSAgICAyOSwgMjUyLCA2MCwgOTQsIDIwMywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjUxLCAyNywgMTUsIDUsIDI0MywgMTA5LCAyOSwgCi0gICAgMjUxLCAyOCwgOTQsIDIwMywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQ4LCAxNjQsIDE1LCA1LCAyNDMsIDEwOSwgMjksIAotICAgIDI0NywgMjExLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDcsIDE3MCwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjQzLCAxMDksIAotICAgIDI5LCAyNDYsIDMxLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDUsIDEzMSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQ1LCAKLSAgICAxMzIsIDk0LCAyMzMsIDE1NywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQ1LCAxMDgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIAotICAgIDI0NSwgMTA5LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MywgODEsIDIxNywgMTkyLCAKLSAgICAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIDE5MCwgMTUsIDUsIDI0MywgCi0gICAgMTA5LCAyOSwgMjQyLCAxODgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MiwgMTg5LCA5NCwgNjEsIDE1LCA1LCAyNDMsIAotICAgIDEwOSwgMjksIDI0MiwgMTc0LCA5NCwgMjE5LCAyNywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQyLCAzMCwgOTQsIDIzMiwgCi0gICAgMTU3LCA5NCwgMjQ1LCAzNywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQyLCAxMiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQyLCAKLSAgICAxMywgOTQsIDIzMywgMTU3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDEsIDE2NiwgOTQsIDIzMywgMTMsIDE1LCA1LCAyNDMsIAotICAgIDEwOSwgMjksIDI0MCwgMjA4LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjQzLCAKLSAgICAxMDksIDI5LCAyMzUsIDE2NCwgOTQsIDI0MCwgMjEzLCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzNCwgCi0gICAgMjQ3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzQsIDIxMiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjM0LCA5OCwgMTUsIDUsIAotICAgIDI0MywgMTA5LCAyOSwgMjM0LCA5OSwgOTQsIDIzMywgMTI4LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzMsIDIzNywgOTQsIAotICAgIDI1NCwgMzIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzMywgMTU3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzEsIDE1NywgCi0gICAgOTQsIDI0NSwgMTA4LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzEsIDQyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMjgsIDUwLCAKLSAgICAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMjgsIDUxLCAxMTAsIDIyOCwgNTAsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDE5MywgMTUsIAotICAgIDUsIDI0MywgMTA5LCAyOSwgMjIyLCAxNzksIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIyMiwgMTQ3LCAxNSwgNSwgMjQzLCAKLSAgICAxMDksIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjIwLCAyNDQsIDk0LCAyMTYsIDYyLCAxNSwgNSwgCi0gICAgMjQzLCAxMDksIDI5LCAyMjAsIDIxMCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjE4LCAyNDQsIDE1LCA1LCAyNDMsIDEwOSwgCi0gICAgMjksIDIxOCwgMjIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDY5LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMTUsIDE4OCwgMTUsIAotICAgIDUsIDI0MywgMTA5LCAyOSwgMjE1LCAxODksIDk0LCAyNDYsIDMzLCAxNSwgNSwgMjQzLCAxMDksIDExMCwgMjQzLCAxMDgsIAotICAgIDE1LCA1LCAyNDMsIDEwMywgMTUsIDUsIDI0MywgMTA0LCAyNDksIDY1LCAyNDMsIDEwMywgMTUsIDUsIDI0MywgMTAxLCAxNSwgCi0gICAgNSwgMjQzLCAxMDIsIDExMCwgMjQzLCAxMDIsIDI0MywgNzMsIDExMCwgMjQzLCA3MiwgMTUsIDUsIDI0MywgOTQsIDE1LCA1LCAKLSAgICAyNDMsIDk1LCAyNDMsIDEwMiwgMTEwLCAyNDMsIDEwMiwgMjQzLCA3MywgMTEwLCAyNDMsIDcyLCAxNSwgNSwgMjQzLCA5MywgCi0gICAgMTUsIDUsIDI0MywgOTEsIDE1LCA1LCAyNDMsIDgyLCAxNSwgNSwgMjQzLCA4MCwgMTUsIDUsIDI0MywgODEsIDIxNywgMTkyLCAKLSAgICAxNSwgNSwgMjQzLCA4MSwgMTEwLCAyNDMsIDgwLCAxNSwgNSwgMjQzLCA4MSwgMjQ5LCA2NSwgMjQzLCA4MCwgMTUsIDUsIAotICAgIDI0MywgNzIsIDE1LCA1LCAyNDMsIDcxLCAxNSwgNSwgMjQzLCA2NiwgMTUsIDUsIDI0MywgMTIsIDE1LCA1LCAyNDMsIDEzLCAKLSAgICAyOSwgMjMzLCAyMTcsIDE1LCA1LCAyNDIsIDE5MCwgMTUsIDUsIDI0MiwgMTkxLCAyOSwgNzQsIDE1LCA1LCAyNDIsIDE5MSwgCi0gICAgMjksIDY5LCAxNSwgNSwgMjQyLCAxOTEsIDI0OSwgNjUsIDI0MiwgMTkwLCAxNSwgNSwgMjQyLCAxODgsIDE1LCA1LCAyNDIsIAotICAgIDE4OSwgMTEwLCAyNDIsIDE4OCwgMTUsIDUsIDI0MiwgMTg5LCAyNDksIDY1LCAyNDIsIDE4OCwgMTUsIDUsIDI0MiwgMTg1LCAKLSAgICAxNSwgNSwgMjQyLCAxNzMsIDE1LCA1LCAyNDIsIDE3NCwgMjQyLCA3NSwgMTUsIDUsIDI0MiwgMTcxLCAxNSwgNSwgMjQyLCAKLSAgICAxNzIsIDI5LCAxMTgsIDk0LCAyMzYsIDMwLCAxNSwgNSwgMjQyLCAxNzIsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIAotICAgIDI0MiwgMTcyLCAyOSwgMjM2LCAzMCwgMTUsIDUsIDI0MiwgMTcyLCAyOSwgMjMyLCAxNTcsIDk0LCAyMzYsIDMwLCAxNSwgNSwgCi0gICAgMjQyLCAxNzIsIDI5LCAxOTMsIDE1LCA1LCAyNDIsIDE2OCwgMTUsIDUsIDI0MiwgMTY2LCAxNSwgNSwgMjQyLCAxNjcsIAotICAgIDI0OSwgNjUsIDI0MiwgMTY2LCAxNSwgNSwgMjQyLCAxNjcsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjQyLCAxNjcsIDI5LCAKLSAgICAyMTgsIDIyLCAxNSwgNSwgMjQyLCAxNjcsIDIxNywgMTkyLCAxNSwgNSwgMjQyLCA5MiwgMTUsIDUsIDI0MiwgOTMsIDI0OSwgCi0gICAgNjUsIDI0MiwgOTIsIDE1LCA1LCAyNDIsIDkwLCAxNSwgNSwgMjQyLCA5MSwgMjksIDIzNCwgMjQ3LCAxNSwgNSwgMjQyLCAKLSAgICA5MSwgMjksIDIzNCwgMjQ4LCAyOSwgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIDI0MiwgOTEsIDI5LCAyMjgsIDUwLCAxNSwgCi0gICAgNSwgMjQyLCA5MSwgMjksIDIyMiwgMTgwLCA5NCwgMjE2LCA3NywgMTUsIDUsIDI0MiwgOTEsIDI0MiwgNzUsIDE1LCA1LCAKLSAgICAyNDIsIDg0LCAxNSwgNSwgMjQyLCA4NSwgMjksIDExOCwgOTQsIDIzMywgMjE3LCAxNSwgNSwgMjQyLCA4NSwgMjksIDIzMywgCi0gICAgMjE3LCAxNSwgNSwgMjQyLCA4NSwgMTEwLCAyNDIsIDg1LCAyMzIsIDE0OSwgMTUsIDUsIDI0MiwgNzksIDE1LCA1LCAyNDIsIAotICAgIDc3LCAxNSwgNSwgMjQyLCA3OCwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjQyLCA2OSwgMTUsIDUsIDI0MiwgNjgsIDE1LCA1LCAKLSAgICAyNDIsIDY1LCAxNSwgNSwgMjQyLCA2NCwgMTUsIDUsIDE1OSwgMTUsIDUsIDI0MiwgMzAsIDIxNywgMTkyLCAxNSwgNSwgCi0gICAgMjQyLCAzMCwgMjQyLCA3NSwgMTUsIDUsIDI0MiwgMTIsIDE1LCA1LCAyNDEsIDE2NSwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgCi0gICAgMjUzLCAxNDYsIDE1LCA1LCAyNDEsIDE2NiwgMjksIDI1MywgMTQ0LCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAyNTIsIDk0LCAKLSAgICAxNSwgNSwgMjQxLCAxNjYsIDI5LCAyNDcsIDEzOSwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjQzLCAxMDEsIDE1LCA1LCAyNDEsIAotICAgIDE2NiwgMjksIDIzNCwgOTAsIDE1LCA1LCAyNDEsIDE2NiwgMjksIDIyOCwgNTAsIDE1LCA1LCAyNDEsIDE2NiwgMjksIDIyMCwgCi0gICAgMjQzLCAxNSwgNSwgMjQxLCAxNjYsIDI5LCA2OSwgMTUsIDUsIDI0MCwgMjEyLCAxNSwgNSwgMjQwLCAyMDgsIDE1LCA1LCAKLSAgICAyNDAsIDIwOSwgMjksIDI1NCwgMzIsIDE1LCA1LCAyNDAsIDIwOSwgMjksIDI0MiwgMTIsIDE1LCA1LCAyNDAsIDIwOSwgMjksIAotICAgIDIzNCwgMjEyLCAxNSwgNSwgMjQwLCAyMDksIDI5LCAyMzIsIDIyNiwgMTUsIDUsIDI0MCwgMjA5LCAyOSwgMjE1LCAxODgsIAotICAgIDE1LCA1LCAyNDAsIDIwNSwgMTUsIDUsIDcyLCAxNSwgNSwgMjQwLCAxNDYsIDYxLCAxNSwgNSwgMjQwLCAxMDgsIDE1LCA1LCAKLSAgICAyMzYsIDU4LCAxNSwgNSwgMjM2LCA1OSwgMTEwLCAyMzYsIDU5LCAyNTEsIDI3LCAxNSwgNSwgMjM2LCA1OSwgMTEwLCAyMzYsIAotICAgIDU5LCAyMTksIDE2NSwgMTUsIDUsIDIzNiwgMzMsIDE1LCA1LCAyMzYsIDMwLCAxNSwgNSwgMjM2LCAzMSwgMjQ3LCAxOTQsIAotICAgIDE1LCA1LCAyMzYsIDMxLCAyMjMsIDE4OCwgMTUsIDUsIDIzNiwgMzEsIDExMCwgMjM2LCAzMSwgMjIwLCAxOTQsIDExMCwgCi0gICAgMjIwLCAxOTQsIDIxNSwgMTg5LCAxMTAsIDIxNSwgMTg4LCAxNSwgNSwgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIDIzNiwgCi0gICAgMjIsIDE1LCA1LCAyMzYsIDIzLCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyMzYsIDIxLCAxNSwgNSwgMjM2LCAKLSAgICAxMSwgMTUsIDUsIDIzNiwgMTIsIDI5LCAyMTgsIDIyLCAxNSwgNSwgMjM2LCAxMiwgMjQ5LCA2NSwgMjM2LCAxMSwgMTUsIDUsIAotICAgIDIzNiwgMTIsIDIyNywgMzAsIDIzNiwgMTEsIDE1LCA1LCAyMzYsIDEyLCAyMTksIDE2NSwgMTUsIDUsIDIzNiwgNCwgMTUsIAotICAgIDUsIDIzNSwgMjUxLCAxNSwgNSwgMjM1LCAxNzcsIDE1LCA1LCAyMzUsIDE2MywgMTUsIDUsIDE4MSwgMTUsIDUsIDIzNSwgCi0gICAgMTcsIDI5LCA2MSwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNTQsIDE2MCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNTQsIDE2MSwgCi0gICAgOTQsIDIzMywgMjM2LCAxNSwgNSwgMjM1LCAxNywgMjksIDI1MywgMTQ0LCAxNSwgNSwgMjM1LCAxNywgMjksIDI1MiwgOTQsIAotICAgIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjUyLCA3OSwgMTUsIDUsIDIzNSwgMTcsIDI5LCAxMzQsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjUxLCAxODQsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQ1LCA1MCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDUsIDM3LCAxNSwgCi0gICAgNSwgMjM1LCAxNywgMjksIDI0MywgMTEwLCAxNSwgNSwgMjM1LCAxNywgMjksIDI0MywgOTQsIDE1LCA1LCAyMzUsIDE3LCAKLSAgICAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQzLCA3MiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyNDMsIDczLCA5NCwgMjIxLCAyMywgOTQsIDYxLCAxNSwgNSwgMjM1LCAxNywgMjksIDI0MiwgMTkwLCAxNSwgNSwgMjM1LCAKLSAgICAxNywgMjksIDI0MiwgMTczLCAxNSwgNSwgMjM1LCAxNywgMjksIDI0MiwgMTY3LCA5NCwgMjIyLCAxNDcsIDE1LCA1LCAyMzUsIAotICAgIDE3LCAyOSwgMjQyLCAxNjcsIDI0OSwgNjUsIDI0MiwgMTY2LCAxNSwgNSwgMjM1LCAxNywgMjksIDI0MiwgOTIsIDE1LCA1LCAKLSAgICAyMzUsIDE3LCAyOSwgMjQyLCA2OCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzYsIDMwLCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDIzNiwgMTEsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjM0LCAyNDcsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjM0LCAxMDEsIDE1LCAKLSAgICA1LCAyMzUsIDE3LCAyOSwgMjM0LCA5OCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzMsIDEzLCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDIzMiwgMTU2LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzMSwgMTU2LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzMSwgMTU3LCA5NCwgCi0gICAgMjQ2LCAzMywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzEsIDE1NywgOTQsIDI0MiwgMTkwLCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDIzMSwgMTU3LCA5NCwgMjE3LCAyMjksIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjMxLCA0MiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyMzEsIDQzLCA5NCwgMjI4LCA0NSwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjksIDE4NywgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyMjgsIDUwLCAxNSwgNSwgMjM1LCAxNywgMjksIDIyNSwgMjQwLCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMywgNTEsIDE1LCAKLSAgICA1LCAyMzUsIDE3LCAyOSwgMjIyLCAyMDIsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIyLCAxNDcsIDE1LCA1LCAyMzUsIDE3LCAKLSAgICAyOSwgMjIxLCAyNCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjAsIDIxMCwgCi0gICAgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjAsIDE1MCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjAsIDEwOCwgMTUsIDUsIDIzNSwgCi0gICAgMTcsIDI5LCAyMTgsIDI1MiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMTgsIDEsIDE1LCA1LCAyMzUsIDE3LCAyOSwgNjksIDE1LCAKLSAgICA1LCAyMzUsIDE3LCAyOSwgMjE1LCAxOTcsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMzUsIDE3LCAKLSAgICAyOSwgMjE1LCAxNjMsIDI5LCAxOTMsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjE1LCAxMDAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjEyLCAzNywgMTUsIDUsIDIzNSwgMTUsIDE1LCA1LCAyMzUsIDE2LCAyNDksIDY1LCAyMzUsIDE1LCAxNSwgNSwgMjM1LCA4LCAKLSAgICAxNSwgNSwgMjM1LCA1LCAxNSwgNSwgMjM1LCAzLCAxNSwgNSwgMjM1LCAyLCAxNSwgNSwgMjM1LCAwLCAxNSwgNSwgMjM1LCAKLSAgICAxLCAxMTAsIDIzNSwgMCwgMTUsIDUsIDIzNCwgMjQ3LCAxNSwgNSwgMjM0LCAyNDgsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAKLSAgICAxNSwgNSwgMjM0LCAyNDMsIDE1LCA1LCAyMzQsIDI0NCwgMjksIDI1MiwgOTQsIDE1LCA1LCAyMzQsIDI0NCwgMjQ5LCA2NSwgCi0gICAgMjM0LCAyNDMsIDE1LCA1LCAyMzQsIDI0MSwgMTUsIDUsIDIzNCwgMjQwLCAxNSwgNSwgMjM0LCAyMTIsIDE1LCA1LCAyMzQsIAotICAgIDIxMywgMjMzLCAxNDEsIDI5LCAxMTEsIDExMCwgMjMzLCAxNDEsIDI5LCA2OSwgMTUsIDUsIDIzNCwgMjEzLCAxMTAsIDIzNCwgCi0gICAgMjEzLCAyMzMsIDE0MSwgMjksIDExMSwgMTEwLCAyMzMsIDE0MSwgMjksIDY5LCAxNSwgNSwgMjM0LCAxNjMsIDE1LCA1LCAKLSAgICAyMzQsIDEwMSwgMTUsIDUsIDIzNCwgMTAyLCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIzNCwgMTAyLCAyOSwgNjksIDE1LCA1LCAKLSAgICAyMzQsIDEwMiwgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjM0LCA5OCwgMTUsIDUsIDIzNCwgOTAsIDE1LCA1LCAyMzQsIDc3LCAKLSAgICAxNSwgNSwgMjM0LCA3NiwgMTUsIDUsIDIzNCwgNzQsIDE1LCA1LCAyMzQsIDc1LCAxMTAsIDIzNCwgNzQsIDE1LCA1LCAyMzMsIAotICAgIDIzOCwgMTUsIDUsIDIzMywgMjM5LCAxMTAsIDI0MSwgMTY2LCAyOSwgMjUzLCAxNDUsIDIzMywgMjM5LCAxMTAsIDI0MSwgCi0gICAgMTY2LCAyOSwgMjUzLCAxNDQsIDE1LCA1LCAyMzMsIDIzNiwgMTUsIDUsIDIzMywgMjM0LCAxNSwgNSwgMjMzLCAyMzUsIAotICAgIDIxNCwgMjQ0LCAxNywgMTUsIDUsIDIzMywgMjMzLCAxNSwgNSwgMjMzLCAyMzAsIDE1LCA1LCAyMzMsIDIzMSwgMjQyLCA3NSwgCi0gICAgMTUsIDUsIDIzMywgMjI5LCAxNSwgNSwgMjMzLCAyMTcsIDE1LCA1LCAyMzMsIDIxOCwgMjI3LCAzMCwgMjMzLCAyMTcsIDE1LCAKLSAgICA1LCAyMzMsIDIxMiwgMTUsIDUsIDIzMywgMTk0LCAxNSwgNSwgMjMzLCAxNTcsIDE1LCA1LCAyMzMsIDE0MCwgMTUsIDUsIAotICAgIDIzMywgMTQxLCAyOSwgNjEsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDExOCwgOTQsIDI0OCwgMTY1LCA5NCwgMTU5LCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAxMTgsIDk0LCAyNDMsIDcyLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAxMTgsIDk0LCAyMzMsIDEyOCwgCi0gICAgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjU0LCA4NiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjU0LCAzMiwgMTUsIDUsIDIzMywgCi0gICAgMTQxLCAyOSwgMjUzLCAxNDcsIDIxMiwgMzMsIDIxNywgMTkyLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNTIsIDk0LCAxNSwgCi0gICAgNSwgMjMzLCAxNDEsIDI5LCAyNTEsIDE4NCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjQ4LCAxMTEsIDE1LCA1LCAyMzMsIAotICAgIDE0MSwgMjksIDI0NSwgMTA4LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDMsIDExMCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgCi0gICAgMjQzLCA3MiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjQyLCA4NCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjQyLCA4NSwgOTQsIAotICAgIDI0MiwgODQsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDE1OSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjQyLCAxMiwgMTUsIDUsIAotICAgIDIzMywgMTQxLCAyOSwgMjQxLCAxNjYsIDI5LCAyMjgsIDUwLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzYsIDMxLCAyNDIsIAotICAgIDc1LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzYsIDExLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzYsIDEyLCA5NCwgMTU5LCAKLSAgICAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzYsIDEyLCA5NCwgMjMyLCAxNTYsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNCwgCi0gICAgMTAxLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzQsIDkwLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzMsIDIzNiwgMTUsIDUsIAotICAgIDIzMywgMTQxLCAyOSwgMjMzLCAyMzAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMywgMjMxLCA5NCwgMjQxLCAxNjYsIDk0LCAKLSAgICA2MSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMzLCAxNDAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMiwgMjI2LCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAyMzIsIDE1NiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMyLCAxNDQsIDE1LCA1LCAyMzMsIDE0MSwgCi0gICAgMjksIDIzMSwgMTU2LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzEsIDE1NywgOTQsIDI0NSwgMTA4LCAxNSwgNSwgMjMzLCAKLSAgICAxNDEsIDI5LCAyMzAsIDEzMSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjI5LCAxODcsIDE1LCA1LCAyMzMsIDE0MSwgMjksIAotICAgIDIyMCwgMjQ0LCA5NCwgMjE4LCAyNDQsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIyMCwgMTkwLCA5NCwgMjQyLCAxNjcsIDk0LCAKLSAgICAyNDUsIDUwLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMjAsIDE5MCwgOTQsIDI0MiwgMTY3LCAyMTcsIDE5MiwgMTUsIDUsIAotICAgIDIzMywgMTQxLCAyOSwgMjIwLCAxNDgsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIyMCwgMTQ5LCA5NCwgMjIwLCAxNDgsIDE1LCAKLSAgICA1LCAyMzMsIDE0MSwgMjksIDIxOCwgMjQ0LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMTgsIDMzLCAxNSwgNSwgMjMzLCAxNDEsIAotICAgIDI5LCAyMTgsIDIyLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMTcsIDIzMCwgOTQsIDExOCwgOTQsIDIxOSwgMjgsIDk0LCAKLSAgICAyMDUsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDY5LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAxMTEsIDk0LCA2MSwgMTUsIDUsIAotICAgIDIzMywgMTQxLCAyOSwgMTExLCA5NCwgMTExLCA5NCwgNjksIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIxNSwgMTk4LCA5NCwgCi0gICAgMjUzLCAxNDYsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMTUsIDEwMCwgCi0gICAgMTUsIDUsIDIzMywgMTQxLCAyMTksIDE2NSwgMTUsIDUsIDIzMywgMTM4LCAxNSwgNSwgMjMzLCAxMzksIDI5LCAyMjAsIAotICAgIDI0MywgMTUsIDUsIDIzMywgMTM5LCAyOSwgMjIwLCAyNDQsIDk0LCAyMTgsIDI0NCwgMTUsIDUsIDIzMywgMTM5LCAyNDIsIAotICAgIDc1LCAxNSwgNSwgMjMzLCAxMzksIDI0MiwgNzYsIDExMCwgMjMzLCAxMzksIDI0MiwgNzYsIDIyMCwgMjQzLCAxNSwgNSwgCi0gICAgMjMzLCAxMzUsIDE1LCA1LCAyMzMsIDEyOCwgMTUsIDUsIDIzMywgMTI5LCAyOSwgMjMzLCAxMjgsIDE1LCA1LCAyMzMsIAotICAgIDEyNiwgMTUsIDUsIDIzMywgMTI3LCAyOSwgMjMzLCAyMTcsIDE1LCA1LCAyMzMsIDEyNywgMjksIDIzMywgMjE4LCA5NCwgCi0gICAgMjIzLCA1MSwgMTUsIDUsIDIzMywgMTMsIDE1LCA1LCAyMzIsIDI1NCwgMTUsIDUsIDIzMiwgMjQ1LCAxNSwgNSwgMjMyLCAKLSAgICAyMjYsIDE1LCA1LCAyMzIsIDE1NiwgMTUsIDUsIDIzMiwgMTU3LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIzMiwgMTU0LCAxNSwgCi0gICAgNSwgMjMyLCAxNTUsIDI5LCAyNTQsIDg2LCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjMyLCAxNTUsIAotICAgIDI5LCAyNDUsIDM3LCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyNDUsIDM4LCAyMTcsIDE5MiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgCi0gICAgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDI0MSwgMTY2LCAyOSwgMjUyLCA5NCwgMTUsIDUsIAotICAgIDIzMiwgMTU1LCAyOSwgMjM2LCAxMSwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjM1LCA1LCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAKLSAgICAyMzUsIDMsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIzNSwgNCwgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAKLSAgICAyMzQsIDEwMSwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjMzLCAxNTgsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIzMiwgMTU1LCAKLSAgICAyOSwgMjMzLCAxNDAsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIzMSwgMTU3LCA5NCwgMjQ1LCAxMDgsIDE1LCA1LCAyMzIsIAotICAgIDE1NSwgMjksIDIyOSwgMTg3LCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMjgsIDkyLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAKLSAgICAyMjAsIDExOCwgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMjAsIDEwMCwgOTQsIDI1MSwgNTQsIDE1LCAKLSAgICA1LCAyMzIsIDE1NSwgMjksIDIxNiwgNzcsIDE1LCA1LCAyMzIsIDE1NSwgMjE3LCAxOTIsIDE1LCA1LCAyMzIsIDE1NSwgCi0gICAgMjQ5LCA2NSwgMjMyLCAxNTQsIDE1LCA1LCAyMzIsIDE1NSwgMjI3LCAzMCwgMjMyLCAxNTQsIDE1LCA1LCAyMzIsIDE1NSwgCi0gICAgMjE5LCAxNjUsIDE1LCA1LCAyMzIsIDE1NSwgMjIwLCAyMjUsIDE1LCA1LCAyMzIsIDE1MywgMTUsIDUsIDIzMiwgMTQ5LCAKLSAgICAxNSwgNSwgMjMyLCAxNTAsIDExMCwgMjMyLCAxNDksIDE1LCA1LCAyMzIsIDE1MCwgMjI3LCAzMCwgMjMyLCAxNDksIDE1LCAKLSAgICA1LCAyMzIsIDE1MCwgMjIwLCAyMjUsIDE1LCA1LCAyMzIsIDE0NywgMTUsIDUsIDIzMiwgMTQ0LCAxNSwgNSwgMjMyLCAxNDIsIAotICAgIDE1LCA1LCAyMzIsIDE0MywgMTEwLCAyMzIsIDE0MiwgMTUsIDUsIDIzMiwgMTQzLCAxMTAsIDIzMiwgMTQzLCAyNDMsIDczLCAKLSAgICAxMTAsIDI0MywgNzIsIDE1LCA1LCAxODgsIDE1LCA1LCAyMzIsIDQzLCAyOSwgMjE4LCAyMiwgMTUsIDUsIDIzMiwgNDMsIAotICAgIDI0MiwgNzUsIDE1LCA1LCAyMzIsIDQyLCAxNSwgNSwgMjMyLCAxNSwgMTUsIDUsIDIzMSwgMjI5LCAxNSwgNSwgMjMxLCAKLSAgICAyMTAsIDE1LCA1LCAyMzEsIDIwOSwgMTUsIDUsIDIzMSwgMTU2LCAxNSwgNSwgMjMxLCAxMTIsIDE1LCA1LCAyMzEsIDQyLCAKLSAgICAxNSwgNSwgMjMxLCAxLCAxNSwgNSwgMjMwLCAxNzIsIDE1LCA1LCAyMzAsIDE3MywgMTEwLCAyMzAsIDE3MiwgMTUsIDUsIAotICAgIDIzMCwgMTYzLCAxNSwgNSwgMjMwLCAxNjQsIDI0MiwgNzUsIDE1LCA1LCAyMzAsIDE0OCwgMTUsIDUsIDIzMCwgMTM0LCAxNSwgCi0gICAgNSwgMjMwLCAxMzEsIDE1LCA1LCAyMzAsIDEzMiwgMjksIDYxLCAxNSwgNSwgMjMwLCAxMzIsIDI5LCAyMzMsIDIxNywgMTUsIAotICAgIDUsIDIzMCwgMTMyLCAyOSwgMjEyLCAxMDksIDE1LCA1LCAyMzAsIDEzMiwgMTEwLCAyMzAsIDEzMSwgMTUsIDUsIDIzMCwgCi0gICAgMTMyLCAxMTAsIDIzMCwgMTMyLCAyOSwgMTE4LCA5NCwgMjA1LCAxNSwgNSwgMjMwLCAxMzIsIDI0OSwgNjUsIDIzMCwgMTMxLCAKLSAgICAxNSwgNSwgMjMwLCAxMjksIDE1LCA1LCAyMzAsIDEzMCwgMjksIDYxLCAxNSwgNSwgMjMwLCAxMzAsIDI5LCAxMTgsIDk0LCAKLSAgICAyNDcsIDIxMSwgMTUsIDUsIDIzMCwgMTMwLCAyOSwgMjQ3LCAyMTEsIDE1LCA1LCAyMzAsIDEzMCwgMjQyLCA3NSwgMTUsIDUsIAotICAgIDIwNSwgMTUsIDUsIDIzMCwgNDUsIDE1LCA1LCAyMzAsIDM0LCAxNSwgNSwgMjMwLCAzNSwgMjM1LCAxOTAsIDE1LCA1LCAKLSAgICAyMzAsIDM1LCAyOSwgMjIwLCAxNTEsIDIxNywgMTkyLCAxNSwgNSwgMjMwLCAzNSwgMjI3LCAzMCwgMjMwLCAzNCwgMTUsIDUsIAotICAgIDIzMCwgMzMsIDE1LCA1LCAyMzAsIDI4LCAyMjgsIDM2LCAxNSwgNSwgMjMwLCAyNywgMTUsIDUsIDIzMCwgMjYsIDE1LCA1LCAKLSAgICAyMjksIDE4NywgMTUsIDUsIDIyOSwgMTg4LCAyOSwgNjEsIDE1LCA1LCAyMjksIDE4OCwgMjksIDIxNSwgMTg4LCAxNSwgNSwgCi0gICAgMjI5LCAxODgsIDIyMCwgMjI1LCAxNSwgNSwgMjI5LCA2NCwgMTUsIDUsIDIyOSwgNjUsIDI5LCA3NCwgMTUsIDUsIDIyOSwgCi0gICAgNjMsIDE1LCA1LCAyMjksIDM0LCAxNSwgNSwgMjI5LCAzNSwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjI5LCAKLSAgICAzNSwgMjksIDI0MywgNzMsIDk0LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIyOSwgMzIsIDE1LCA1LCAyMjksIDMzLCAKLSAgICAyOSwgMjU0LCAzMiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyNTMsIDE0NiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyNTMsIDE0NywgCi0gICAgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjI5LCAzMywgMjksIDI0MiwgODQsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjMxLCAxNTcsIAotICAgIDk0LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMjksIDE4NywgMTUsIDUsIDIyOSwgMzMsIDI5LCAKLSAgICAyMjgsIDUwLCAxNSwgNSwgMjI5LCAzMywgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjI5LCAzMywgMjksIDIyMCwgMjQ0LCA5NCwgCi0gICAgMTE4LCAyNTQsIDMyLCAxNSwgNSwgMjI5LCAzMywgMjksIDIyMCwgMjQ0LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMjksIDMzLCAKLSAgICAyOSwgMjIwLCAyNDQsIDk0LCAyNTMsIDE0NywgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjI5LCAzMywgMjksIDIxNSwgMTk4LCAKLSAgICA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjE1LCAxMDAsIDE1LCA1LCAyMjksIDIxLCAxNSwgNSwgMjI4LCAKLSAgICA5MiwgMTUsIDUsIDIyOCwgNjUsIDE1LCA1LCAyMjgsIDUwLCAxNSwgNSwgMjI4LCA1MSwgMjMzLCAxMzksIDI5LCAyNDMsIAotICAgIDcyLCAxNSwgNSwgMjI4LCA1MSwgMjMzLCAxMzksIDI5LCAyMzEsIDIxMCwgMTUsIDUsIDIyOCwgNTEsIDIzMywgMTM5LCAyOSwgCi0gICAgMjIyLCAxNzksIDE1LCA1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMjksIDIyMiwgMTgwLCAxMTAsIDIyOCwgNTEsIDIzMywgMTM5LCAKLSAgICAyOSwgMjIyLCAxNzksIDE1LCA1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMjksIDIxNSwgMTAwLCAxNSwgNSwgMjI4LCA1MSwgCi0gICAgMjE3LCAxOTIsIDE1LCA1LCAyMjgsIDUxLCAxMTAsIDIyOCwgNTAsIDE1LCA1LCAyMjgsIDUxLCAyNDksIDY1LCAyMjgsIDUwLCAKLSAgICAxNSwgNSwgMjI4LCA1MSwgMjQ5LCA2NSwgMjI4LCA1MSwgMjMzLCAxMzksIDExMCwgMjMzLCAxMzgsIDE1LCA1LCAyMjgsIAotICAgIDQ1LCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyNTMsIDE0MSwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgCi0gICAgMjUxLCAxODQsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDI0NiwgMjksIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIAotICAgIDE4NCwgMjksIDI0MiwgODQsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAKLSAgICAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDIzNSwgMywgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjMzLCAxNTcsIAotICAgIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDIyOSwgMTg3LCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAKLSAgICAyMjAsIDk3LCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyMTUsIDE5NywgMTUsIDUsIDIyOCwgNDYsIDIzNCwgNzUsIAotICAgIDI5LCAyNTEsIDE4NCwgMTUsIDUsIDIyOCwgNDYsIDIzNCwgNzUsIDI5LCAyNTEsIDE4NSwgNjksIDE1LCA1LCAxOTMsIDE1LCAKLSAgICA1LCAyMjYsIDIwNCwgMTUsIDUsIDIyNiwgMTc0LCAxNSwgNSwgMjI2LCAxNDksIDE1LCA1LCAyMjYsIDM3LCAxNSwgNSwgCi0gICAgMjI1LCAyNDAsIDE1LCA1LCAyMjUsIDI0MSwgMjksIDYxLCAxNSwgNSwgMjI1LCAyNDEsIDI5LCAyNTQsIDE4NSwgMTUsIDUsIAotICAgIDIyNSwgMjQxLCAyOSwgMjUxLCAxODQsIDE1LCA1LCAyMjUsIDI0MSwgMjksIDI1MSwgNTQsIDE1LCA1LCAyMjUsIDI0MSwgCi0gICAgMjksIDc0LCAxNSwgNSwgMjI1LCAyNDEsIDI5LCA3MiwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgMjQwLCAxMDgsIDE1LCA1LCAKLSAgICAyMjUsIDI0MSwgMjksIDY5LCAxNSwgNSwgMjI1LCAyNDEsIDI5LCAyMTUsIDE5NywgMTUsIDUsIDIyNSwgMjQxLCAyNDksIAotICAgIDY1LCAyMjUsIDI0MCwgMTUsIDUsIDIyNSwgMTg1LCAxNSwgNSwgMjI1LCAxODYsIDI5LCAyMzQsIDI0MywgMTUsIDUsIDIyNSwgCi0gICAgMTg2LCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMjUsIDE4NiwgMjksIDIxMiwgMTA5LCAxNSwgNSwgMjI1LCAxODYsIDIyNywgCi0gICAgMzAsIDIyNSwgMTg1LCAxNSwgNSwgMjAzLCAxNSwgNSwgMjI0LCA3MiwgMTUsIDUsIDIyMywgMTg4LCAxNSwgNSwgMjIzLCAKLSAgICA1MSwgMTUsIDUsIDIyMiwgMjAyLCAxNSwgNSwgMjIyLCAxOTEsIDIyOCwgMzYsIDE1LCA1LCAyMjIsIDE5MCwgMTUsIDUsIAotICAgIDIyMiwgMTkxLCAyOSwgNjEsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDI0NiwgMzMsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDI0NiwgCi0gICAgMzEsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDE1OSwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjM0LCAyNDcsIDE1LCA1LCAyMjIsIAotICAgIDE5MSwgMjksIDIzMywgMjE3LCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMzIsIDE0MiwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgCi0gICAgMjMxLCA0MiwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjI4LCA1MCwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjIyLCAxNzksIDE1LCAKLSAgICA1LCAyMjIsIDE5MSwgMjksIDIyMCwgMjEwLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMTgsIDQxLCAxNSwgNSwgMjIyLCAxOTEsIAotICAgIDI5LCAyMTUsIDE5NywgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjE1LCAxOTQsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIxNSwgCi0gICAgMTY3LCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMTUsIDEyMSwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjE1LCAxMDAsIDE1LCA1LCAKLSAgICAyMjIsIDE5MSwgMTEwLCAyMjIsIDE5MCwgMTUsIDUsIDIyMiwgMTkxLCAyNDIsIDc1LCAxNSwgNSwgMjIyLCAxNzksIDE1LCAKLSAgICA1LCAyMjIsIDE4MCwgMjMzLCAxNDEsIDI5LCAyNTMsIDE0NCwgMTUsIDUsIDIyMiwgMTU1LCAxNSwgNSwgMjIyLCAxNDcsIAotICAgIDE1LCA1LCAyMjEsIDI0LCAxNSwgNSwgMjIxLCAyMiwgMTUsIDUsIDIyMSwgMjMsIDI5LCA2MSwgMTUsIDUsIDIyMSwgMjMsIAotICAgIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjIxLCAyMywgMjksIDI0MiwgMTY2LCAxNSwgNSwgMjIxLCAyMywgMjksIDIyOSwgMTg3LCAKLSAgICAxNSwgNSwgMjIxLCAyMywgMjksIDIyMCwgMTQ4LCAxNSwgNSwgMjIxLCAyMywgMjksIDIxNiwgNjIsIDE1LCA1LCAyMjEsIAotICAgIDIzLCAyOSwgNjksIDE1LCA1LCAyMjEsIDIzLCAyOSwgMTExLCA5NCwgNjEsIDE1LCA1LCAyMjEsIDIxLCAxNSwgNSwgMjIxLCAKLSAgICAxOSwgMTUsIDUsIDIyMSwgMSwgMTUsIDUsIDIyMCwgMjQzLCAxNSwgNSwgMjIwLCAyNDQsIDI0MCwgMjEyLCAxNSwgNSwgCi0gICAgMjIwLCAyNDQsIDExMCwgMjIwLCAyNDQsIDI0MywgMTAyLCAxMTAsIDI0MywgMTAyLCAyNDMsIDczLCAxMTAsIDI0MywgNzIsIAotICAgIDE1LCA1LCAyMjAsIDI0NCwgMTEwLCAyMjAsIDI0NCwgMjE4LCA0MiwgMTEwLCAyMTgsIDQyLCAyNDMsIDczLCAxMTAsIDI0MywgCi0gICAgNzIsIDE1LCA1LCAyMjAsIDIzNiwgMTUsIDUsIDIyMCwgMjMxLCAxNSwgNSwgMjIwLCAyMjgsIDE1LCA1LCAyMjAsIDIyNywgCi0gICAgMTUsIDUsIDIyMCwgMjI0LCAxNSwgNSwgMjIwLCAyMTAsIDE1LCA1LCAyMjAsIDIxMSwgMjksIDYxLCAxNSwgNSwgMjIwLCAKLSAgICAyMTEsIDI5LCAyMzYsIDExLCAxNSwgNSwgMjIwLCAyMDQsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDYxLCAxNSwgNSwgMjIwLCAKLSAgICAyMDUsIDI5LCAyNTIsIDgwLCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyNTEsIDM4LCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyNDcsIAotICAgIDE1OCwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgMjQzLCA3MiwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgMjM2LCAzMCwgMTUsIDUsIAotICAgIDIyMCwgMjA1LCAyOSwgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgMjMzLCAyMTIsIDE1LCA1LCAKLSAgICAyMjAsIDIwNSwgMjksIDIzMiwgMTQ0LCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyMzAsIDE2MywgMTUsIDUsIDIyMCwgMjA1LCAKLSAgICAyOSwgMjIyLCAxNzksIDE1LCA1LCAyMjAsIDE5OCwgMTUsIDUsIDIyMCwgMTkzLCAxNSwgNSwgMjIwLCAxOTQsIDIxNywgCi0gICAgMTkyLCAxNSwgNSwgMjIwLCAxOTQsIDExMCwgMjIwLCAxOTQsIDI1MSwgMjgsIDExMCwgMjUxLCAyNywgMTUsIDUsIDIyMCwgCi0gICAgMTg5LCAxNSwgNSwgMjIwLCAxNTAsIDE1LCA1LCAyMjAsIDE1MSwgMTEwLCAyMzUsIDE5MSwgMjIwLCAxNTAsIDE1LCA1LCAKLSAgICAyMjAsIDE0OCwgMTUsIDUsIDIyMCwgMTQ3LCAxNSwgNSwgMjIwLCAxMTcsIDE1LCA1LCAyMjAsIDExOCwgMjQyLCA3NSwgMTUsIAotICAgIDUsIDIyMCwgMTA4LCAxNSwgNSwgMjIwLCAxMDYsIDE1LCA1LCAyMjAsIDEwNywgMTEwLCAyMjAsIDEwNywgMjIwLCAxNDgsIAotICAgIDE1LCA1LCAyMjAsIDk5LCAxNSwgNSwgMjIwLCA5NywgMTUsIDUsIDIxOSwgMjcsIDE1LCA1LCAyMTksIDI4LCAxMTAsIDIxOSwgCi0gICAgMjcsIDE1LCA1LCAyMTgsIDI1NSwgMTUsIDUsIDIxOCwgMjU0LCAxNSwgNSwgMjE4LCAyNTIsIDE1LCA1LCAyMTgsIDI0NCwgCi0gICAgMTUsIDUsIDIxOCwgMjQzLCAxNSwgNSwgMjE4LCAyMTcsIDE1LCA1LCAyMTgsIDIxNiwgMTUsIDUsIDIxOCwgNTIsIDE1LCA1LCAKLSAgICAyMTgsIDUzLCAyNTMsIDEzMiwgMTUsIDUsIDIxOCwgNTMsIDI5LCAyNDEsIDE2NSwgMTUsIDUsIDIxOCwgNTMsIDI5LCAyMzEsIAotICAgIDQyLCAxNSwgNSwgMjE4LCA1MywgMjQyLCA3NSwgMTUsIDUsIDIxOCwgNDEsIDE1LCA1LCAyMTgsIDQyLCAxMTAsIDIxOCwgCi0gICAgNDIsIDIyOSwgNjUsIDExMCwgMjI5LCA2NSwgMjQ3LCAxNDAsIDExMCwgMjQ3LCAxMzksIDE1LCA1LCAyMTgsIDQyLCAyMTksIAotICAgIDE2NSwgMTUsIDUsIDIxOCwgMzMsIDE1LCA1LCAxMjYsIDI5LCAyNTEsIDE4NCwgMTUsIDUsIDEyNiwgMjksIDI0MiwgODQsIAotICAgIDE1LCA1LCAxMjYsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDEyNiwgMjksIDIyMCwgMTUwLCAxNSwgNSwgMTI2LCAyOSwgMjE2LCAKLSAgICA3NywgMTUsIDUsIDEyNiwgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjE4LCAyMiwgMTUsIDUsIDIxOCwgMSwgMTUsIDUsIDIxNywgCi0gICAgMjI5LCAxNSwgNSwgMjE3LCAyMzAsIDI0MiwgNzUsIDE1LCA1LCAyMTcsIDcxLCAxNSwgNSwgMjE3LCA3MiwgMjE3LCAxOTIsIAotICAgIDE1LCA1LCAyMTcsIDQ0LCAxNSwgNSwgMjE3LCAyNSwgMTUsIDUsIDIxNywgMjYsIDI5LCAyMTgsIDIyLCAxNSwgNSwgMjE3LCAKLSAgICAyNiwgMTEwLCAyMTcsIDI1LCAxNSwgNSwgMjE3LCAyNiwgMTEwLCAyMTcsIDI2LCAyNDMsIDEwMiwgMTEwLCAyNDMsIDEwMiwgCi0gICAgMjQzLCA3MywgMTEwLCAyNDMsIDcyLCAxNSwgNSwgMjE2LCA4MiwgMTUsIDUsIDIxNiwgNzcsIDE1LCA1LCAyMTYsIDc1LCAKLSAgICAxNSwgNSwgMjE2LCA3MiwgMTUsIDUsIDIxNiwgNjIsIDE1LCA1LCAyMTYsIDYzLCAxMTAsIDIxNiwgNjMsIDIxMiwgMTEwLCAKLSAgICAxMTAsIDIxMiwgMTA5LCAxNSwgNSwgNjksIDE1LCA1LCAxMTEsIDI0MiwgODQsIDE1LCA1LCAxMTEsIDExMSwgNjksIDE1LCAKLSAgICA1LCAxMTEsIDExMCwgMTExLCAyMjYsIDIxNCwgMTEwLCAyMjYsIDIxNCwgMjQzLCA3MywgMTEwLCAyNDMsIDcyLCAxNSwgNSwgCi0gICAgMTExLCAxMTAsIDExMSwgMjE4LCAyMTgsIDExMCwgMjE4LCAyMTcsIDE1LCA1LCAxMTEsIDExMCwgMTExLCAxMTEsIDIyMywgCi0gICAgMjAyLCAxMTAsIDExMSwgMjIzLCAyMDEsIDE1LCA1LCAyMTUsIDE5NywgMTUsIDUsIDIxNSwgMTk0LCAxNSwgNSwgMjE1LCAKLSAgICAxODgsIDE1LCA1LCAyMTUsIDE4OSwgMjMzLCAyMTIsIDE1LCA1LCAyMTUsIDE4OSwgMjksIDI1MiwgOTQsIDE1LCA1LCAyMTUsIAotICAgIDE4OSwgMjksIDIzMSwgNDIsIDE1LCA1LCAyMTUsIDE4OSwgMjksIDExMSwgOTQsIDExMSwgOTQsIDY5LCAxNSwgNSwgMjE1LCAKLSAgICAxODksIDI5LCAxMTEsIDk0LCAxMTEsIDk0LCAxMTEsIDI0MiwgNzUsIDE1LCA1LCAyMTUsIDE4OSwgMjQyLCA3NSwgMTUsIDUsIAotICAgIDIxNSwgMTg5LCAyMjAsIDIyNSwgMTUsIDUsIDIxNSwgMTg5LCAyMjAsIDIyNiwgMjksIDI1MiwgOTQsIDE1LCA1LCAyMTUsIAotICAgIDE4NCwgMTUsIDUsIDIxNSwgMTY3LCAxNSwgNSwgMjE1LCAxNjgsIDI5LCAyMzMsIDE0MCwgMTUsIDUsIDIxNSwgMTY4LCAyOSwgCi0gICAgMjMxLCAxNTcsIDk0LCAyNDgsIDE2NCwgMTUsIDUsIDIxNSwgMTY4LCAyOSwgMjIxLCAyMiwgMTUsIDUsIDIxNSwgMTY4LCAKLSAgICAyOSwgNjksIDE1LCA1LCAyMTUsIDE2NiwgMTUsIDUsIDIxNSwgMTYyLCAxNSwgNSwgMjE1LCAxNjMsIDI5LCAyMzQsIDIxMiwgCi0gICAgMTUsIDUsIDIxNSwgMTYzLCAyOSwgMTkzLCAxNSwgNSwgMjE1LCAxNjAsIDE1LCA1LCAyMTUsIDE2MSwgMjQyLCA3NSwgMTUsIAotICAgIDUsIDIxNSwgMTIxLCAxNSwgNSwgMjE1LCAxMjIsIDI0OSwgNjUsIDIxNSwgMTIxLCAxNSwgNSwgMjE1LCAxMjIsIDIyMCwgCi0gICAgMjI1LCAxNSwgNSwgMjE1LCAxMTksIDE1LCA1LCAyMTUsIDEyMCwgMjksIDExOCwgOTQsIDE1OSwgMTUsIDUsIDIxNSwgMTIwLCAKLSAgICAyOSwgMTE4LCA5NCwgMjA1LCAxNSwgNSwgMjE1LCAxMjAsIDI5LCAyNTQsIDg2LCAxNSwgNSwgMjE1LCAxMjAsIDI5LCAxNTksIAotICAgIDE1LCA1LCAyMTUsIDEyMCwgMjksIDIyOCwgNTAsIDE1LCA1LCAyMTUsIDEyMCwgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjE1LCAKLSAgICAxMjAsIDI5LCAyMTUsIDE5OCwgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjE1LCAxMjAsIDI5LCAyMTUsIDE5OCwgOTQsIDI1MSwgCi0gICAgMTg0LCAxNSwgNSwgMjE1LCAxMTgsIDE1LCA1LCAyMTUsIDExNSwgMTUsIDUsIDIxNSwgMTE0LCAxNSwgNSwgMjE1LCAxMTAsIAotICAgIDE1LCA1LCAyMTUsIDExMSwgMjksIDYxLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyNTMsIDE0MSwgMTUsIDUsIDIxNSwgMTExLCAKLSAgICAyOSwgMTM0LCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyNDYsIDIzLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyNDMsIDExMCwgMTUsIAotICAgIDUsIDIxNSwgMTExLCAyOSwgMjQzLCA5NCwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAKLSAgICAyMTUsIDExMSwgMjksIDI0MywgNzIsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI0MiwgOTIsIDE1LCA1LCAyMTUsIDExMSwgMjksIAotICAgIDE1OSwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjM2LCAzMCwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjM2LCAxMSwgMTUsIDUsIAotICAgIDIxNSwgMTExLCAyOSwgMjM1LCAxNjMsIDE1LCA1LCAyMTUsIDExMSwgMjksIDIzNCwgMTAxLCAxNSwgNSwgMjE1LCAxMTEsIAotICAgIDI5LCAyMzIsIDE0MiwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjMxLCAxLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAxOTMsIDE1LCAKLSAgICA1LCAyMTUsIDExMSwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMjAsIDEwNiwgMTUsIDUsIDIxNSwgCi0gICAgMTExLCAyOSwgMjE2LCA4MiwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMTExLCA5NCwgMjQyLCA4NCwgMTUsIDUsIDIxNSwgMTExLCAKLSAgICAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMTUsIDExMSwgMjksIDIxNSwgMTA4LCAxNSwgNSwgMjE1LCAxMDgsIDE1LCA1LCAyMTUsIAotICAgIDEwOSwgMjksIDY5LCAxNSwgNSwgMjE1LCAxMDAsIDE1LCA1LCAyMTUsIDEwMSwgMjksIDYxLCAxNSwgNSwgMjE1LCAxMDEsIAotICAgIDI5LCAyMzMsIDIzOCwgMTUsIDUsIDIxNSwgMTAxLCAyOSwgMjMzLCAyMTcsIDE1LCA1LCAyMTUsIDEwMSwgMjksIDIxOCwgCi0gICAgMjIsIDE1LCA1LCAyMTUsIDk2LCAxNSwgNSwgMjE1LCA5OSwgMTUsIDUsIDIxNSwgOTcsIDE1LCA1LCAyMTUsIDkzLCAxNSwgCi0gICAgNSwgMjE1LCA4MiwgMTUsIDUsIDIxNSwgODMsIDI5LCAyMzQsIDIxMiwgMTUsIDUsIDIxNSwgODEsIDE1LCA1LCAyMTIsIAotICAgIDEwOSwgMTUsIDUsIDIxMiwgMTEwLCAyMTcsIDE5MiwgMTUsIDUsIDIxMiwgMTEwLCA5MSwgMjksIDIzMywgMjE3LCAxNSwgNSwgCi0gICAgMjEyLCAxMDYsIDE1LCA1LCAyMTIsIDk5LCAxNSwgNSwgMjEyLCA4NiwgMTUsIDUsIDIxMiwgMzcsIDE1LCA1LCAyMTIsIDM4LCAKLSAgICAxMTAsIDIxMiwgMzcsIDE1LCA1LCAyMTIsIDM2LCAxNSwgNSwgMjEyLCAzNCwgMTUsIDUsIDIxMiwgMzUsIDIzNSwgNywgCi0gICAgMjE3LCAxOTIsIDE1LCA1LCAyMTIsIDI5LCAxNSwgNSwgMjEyLCAyMSwgMTUsIDUsIDIxMiwgOCwgMTUsIDUsIDIxMiwgNiwgCi0gICAgMTUsIDUsIDIxMiwgNywgMjksIDYxLCAxNSwgNSwgMjEyLCA1LCAxNSwgNSwgMjEyLCA0LCAxNSwgMTI4LCA1LCAxMTcsIAotICAgIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAxMzMsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjUzLCAxNDYsIDE1LCAKLSAgICAxMjgsIDUsIDI0NCwgNTAsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgCi0gICAgMjIxLCA0MywgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDI0NSwgMTUwLCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMjI5LCAzMSwgCi0gICAgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDEzMywgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyNDcsIDEzOSwgMTUsIAotICAgIDEyOCwgNSwgMjQ0LCA1MCwgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDIyMCwgNTMsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAKLSAgICAyMjEsIDQzLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjQ1LCAxNTAsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyMjksIDMxLCAKLSAgICAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDY5LCAxNSwgMTI4LCA1LCAyNDQsIDUwLCA2OSwgMTUsIDEyOCwgNSwgCi0gICAgMjIwLCA1MywgNjksIDE1LCAxMjgsIDUsIDIyMSwgNDMsIDY5LCAxNSwgMTI4LCA1LCAyNDUsIDE1MCwgNjksIDE1LCAxMjgsIAotICAgIDUsIDIyOSwgMzEsIDY5LCAxNSwgMTI4LCA1LCAxMjIsIDI0MywgMTQsIDE1LCAxMjgsIDUsIDExNywgMjQzLCAxNCwgMTUsIAotICAgIDEyOCwgNSwgMTMzLCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgCi0gICAgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMjIwLCA1MywgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMjIxLCA0MywgMjQzLCAxNCwgMTUsIAotICAgIDEyOCwgNSwgMjQ1LCAxNTAsIDI0MywgMTQsIDE1LCAxMjgsIDUsIDIyOSwgMzEsIDI0MywgMTQsIDE1LCAxMjgsIDUsIDEyMiwgCi0gICAgMjQzLCAxMSwgMTUsIDEyOCwgNSwgMTE3LCAyNDMsIDExLCAxNSwgMTI4LCA1LCAxMzMsIDI0MywgMTEsIDE1LCAxMjgsIDUsIAotICAgIDI0MywgMjM3LCAyNDMsIDExLCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyNDMsIDExLCAxNSwgMTI4LCA1LCAxMTcsIDIyMSwgMSwgCi0gICAgMTUsIDEyOCwgNSwgMTMzLCAyMjEsIDEsIDE1LCAxMjgsIDUsIDEzMywgMjIxLCAyLCAyMTQsIDI0NCwgMTcsIDE1LCAxMjgsIAotICAgIDUsIDI0MywgMjM3LCAyMjEsIDEsIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDIyMSwgMSwgMTUsIDEyOCwgNSwgMjIwLCA1MywgCi0gICAgMjIxLCAxLCAxNSwgMTI4LCA1LCAyMjEsIDQzLCAyMjEsIDEsIDE1LCAxMjgsIDUsIDI0NSwgMTUwLCAyMjEsIDEsIDE1LCAKLSAgICAxMjgsIDUsIDIyOSwgMzEsIDIyMSwgMSwgMTUsIDEyOCwgNSwgMTIyLCAyMjAsIDI1MiwgMTUsIDEyOCwgNSwgMTE3LCAyMjAsIAotICAgIDI1MiwgMTUsIDEyOCwgNSwgMTMzLCAyMjAsIDI1MiwgMTUsIDEyOCwgNSwgMTMzLCAyMjAsIDI1MywgMjE0LCAyNDQsIDE3LCAKLSAgICAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjIwLCAyNTIsIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDIyMCwgMjUyLCAxNSwgMTI4LCAKLSAgICA1LCAyMjEsIDIsIDI5LCAyNDMsIDk1LCA5NCwgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDIyMSwgMiwgMjksIDI0MywgOTUsIAotICAgIDk0LCAyMzEsIDEsIDE1LCAxMjgsIDUsIDEyMiwgMjUxLCAyNCwgMTUsIDEyOCwgNSwgMTE3LCAyNTEsIDI0LCAxNSwgMTI4LCAKLSAgICA1LCAxMzMsIDI1MSwgMjQsIDE1LCAxMjgsIDUsIDEzMywgMjUxLCAyNSwgMjE0LCAyNDQsIDE3LCAxNSwgMTI4LCA1LCAyNDMsIAotICAgIDIzNywgMjUxLCAyNCwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjUxLCAyNCwgMTUsIDEyOCwgNSwgMTMzLCAyMTQsIDI0NCwgCi0gICAgMjQzLCAyNDUsIDI0NSwgMzksIDE1LCAxMjgsIDUsIDEzMywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyNDUsIDM2LCAxNSwgMTI4LCAKLSAgICA1LCAyNDMsIDIzNywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzIsIDI0NiwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDIxNCwgCi0gICAgMjQ0LCAyNDMsIDI0NSwgMjMyLCAyNDQsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzMiwgCi0gICAgMjQ3LCA2MSwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjMyLCAyNDcsIDI1MywgNzQsIDE1LCAKLSAgICAxMjgsIDUsIDIyMCwgNTMsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjUzLCAxNDMsIDE1LCAxMjgsIDUsIDIyMSwgNDMsIDIxNCwgCi0gICAgMjQ0LCAyNDMsIDI0NSwgMjM2LCAzLCAxNSwgMTI4LCA1LCAyMjEsIDQzLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzNiwgNSwgCi0gICAgNjEsIDE1LCAxMjgsIDUsIDIyMSwgNDMsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjM2LCA1LCAyNTMsIDc0LCAxNSwgMTI4LCA1LCAKLSAgICAyNDUsIDE1MCwgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMTUsIDk1LCAxNSwgMTI4LCA1LCAyNDUsIDE1MCwgMjE0LCAyNDQsIAotICAgIDI0MywgMjQ1LCAyMTUsIDk0LCAxNSwgMTI4LCA1LCAyMjksIDMxLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzNiwgMTksIDE1LCAKLSAgICAxMjgsIDUsIDIyOSwgMzEsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjM2LCAxOCwgMTUsIDEyOCwgNSwgMjI5LCAzMSwgMjE0LCAKLSAgICAyNDQsIDI0MywgMjQ1LCAyMzYsIDE3LCAxNSwgMTI4LCA1LCAyMjksIDMxLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzNiwgMjAsIAotICAgIDYxLCAxNSwgMTI4LCA1LCAxMTcsIDI1MywgMTQ3LCAyMTcsIDE5MiwgMTUsIDEyOCwgNSwgMTMzLCAyNTMsIDE0NywgMjE3LCAKLSAgICAxOTIsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyNTMsIDE0NywgMjE3LCAxOTIsIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDI1MywgCi0gICAgMTQ3LCAyMTcsIDE5MiwgMTUsIDEyOCwgNSwgMjIwLCA1MywgMjUzLCAxNDcsIDIxNywgMTkyLCAxNSwgMTI4LCA1LCAxMjIsIAotICAgIDI1MiwgNjksIDE1LCAxMjgsIDUsIDExNywgMjUyLCA2OSwgMTUsIDEyOCwgNSwgMTMzLCAyNTIsIDY5LCAxNSwgMTI4LCA1LCAKLSAgICAyNDMsIDIzNywgMjUyLCA2OSwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDI1MiwgNzAsIDIxNCwgMjQ0LCAxNywgMTUsIDEyOCwgCi0gICAgNSwgMjQ0LCA1MCwgMjUyLCA2OSwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjUyLCA3MCwgMjE0LCAyNDQsIDE3LCAxNSwgMTI4LCAKLSAgICA1LCAyMjksIDQxLCAxNSwgMTI4LCA1LCAyMjksIDQyLCAxNSwgMTI4LCA1LCAxMjIsIDI0NSwgMzUsIDE1LCAxMjgsIDUsIAotICAgIDExNywgMjQ1LCAzNSwgMTUsIDEyOCwgNSwgMTIyLCAyMTcsIDEyMiwgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDExNywgMjE3LCAKLSAgICAxMjAsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyMjAsIDQyLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMTIyLCAKLSAgICAyMTcsIDEyMiwgMjE0LCAyNDQsIDI0MywgMjQ1LCA2MSwgMTUsIDEyOCwgNSwgMTE3LCAyMTcsIDEyMCwgMjE0LCAyNDQsIAotICAgIDI0MywgMjQ1LCA2MSwgMTUsIDEyOCwgNSwgMTIyLCAyNDUsIDE0NiwgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDEyMiwgMjI0LCAKLSAgICAxNjcsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCA1MywgMjUzLCAxMzUsIDEyMiwgMjIwLCA0MywgMTUsIDEyOCwgNSwgNTMsIAotICAgIDI1MywgMTM1LCAxMjIsIDIyNCwgMTY2LCAxNSwgMjI1LCAyNywgNSwgNTMsIDI1MywgMTM1LCAyMTMsIDE5NiwgMjQ3LCAKLSAgICAxMjQsIDE1LCAyMjUsIDI3LCA1LCA3MSwgMjQ5LCAxNjQsIDE1LCAyMjUsIDI3LCA1LCAyNDcsIDIwNywgMjQ5LCAxNjQsIAotICAgIDE1LCAyMjUsIDI3LCA1LCAyNDcsIDIwNywgMjE2LCAxNzksIDEwLCAxMSwgMjU1LCA1OCwgMTAsIDExLCAyNTUsIDU3LCAxMCwgCi0gICAgMTEsIDI1NSwgNTYsIDEwLCAxMSwgMjU1LCA1NSwgMTAsIDExLCAyNTUsIDU0LCAxMCwgMTEsIDI1NSwgNTMsIDEwLCAxMSwgCi0gICAgMjU1LCA1MiwgMTAsIDExLCAyNTUsIDUxLCAxMCwgMTEsIDI1NSwgNTAsIDEwLCAxMSwgMjU1LCA0OSwgMTAsIDExLCAyNTUsIAotICAgIDQ4LCAxMCwgMTEsIDI1NSwgNDcsIDEwLCAxMSwgMjU1LCA0NiwgMTAsIDExLCAyNTUsIDQ1LCAxMCwgMTEsIDI1NSwgNDQsIAotICAgIDEwLCAxMSwgMjU1LCA0MywgMTAsIDExLCAyNTUsIDQyLCAxMCwgMTEsIDI1NSwgNDEsIDEwLCAxMSwgMjU1LCA0MCwgMTAsIAotICAgIDExLCAyNTUsIDM5LCAxMCwgMTEsIDI1NSwgMzgsIDEwLCAxMSwgMjU1LCAzNywgMTAsIDExLCAyNTUsIDM2LCAxMCwgMTEsIAotICAgIDI1NSwgMzUsIDEwLCAxMSwgMjU1LCAzNCwgMTAsIDExLCAyNTUsIDMzLCAxMCwgMTEsIDI1NSwgMzIsIDEwLCAxMSwgMjU1LCAKLSAgICAzMSwgMTAsIDExLCAyNTUsIDMwLCAxMCwgMTEsIDI1NSwgMjksIDEwLCAxMSwgMjU1LCAyOCwgMTAsIDExLCAyNTUsIDI3LCAKLSAgICAxMCwgMTEsIDI1NSwgMjYsIDEwLCAxMSwgMjU1LCAyNSwgMTAsIDExLCAyNTUsIDI0LCAxMCwgMTEsIDI1NSwgMjMsIDEwLCAKLSAgICAxMSwgMjU1LCAyMiwgMTAsIDExLCAyNTUsIDIxLCAxMCwgMTEsIDI1NSwgMjAsIDEwLCAxMSwgMjU1LCAxOSwgMTAsIDExLCAKLSAgICAyNTUsIDE4LCAxMCwgMTEsIDI1NSwgMTcsIDEwLCAxMSwgMjU1LCAxNiwgMTAsIDExLCAyNTUsIDE1LCAxMCwgMTEsIDI1NSwgCi0gICAgMTQsIDEwLCAxMSwgMjU1LCAxMywgMTAsIDExLCAyNTUsIDEyLCAxMCwgMTEsIDI1NSwgMTEsIDEwLCAxMSwgMjU1LCAxMCwgCi0gICAgMTAsIDExLCAyNTUsIDksIDEwLCAxMSwgMjU1LCA4LCAxMCwgMTEsIDI1NSwgNywgMTAsIDExLCAyNTUsIDYsIDEwLCAxMSwgCi0gICAgMjU1LCA1LCAxMCwgMTEsIDI1NSwgNCwgMTAsIDExLCAyNTUsIDMsIDEwLCAxMSwgMjU1LCAyLCAxMCwgMTEsIDI1NSwgMSwgCi0gICAgMTAsIDExLCAyNTUsIDAsIDEwLCAxMSwgMjU0LCAyNTUsIDEwLCAxMSwgMjU0LCAyNTQsIDEwLCAxMSwgMjU0LCAyNTMsIDEwLCAKLSAgICAxMSwgMjU0LCAyNTIsIDEwLCAxMSwgMjU0LCAyNTEsIDEwLCAxMSwgMjU0LCAyNTAsIDEwLCAxMSwgMjU0LCAyNDksIDEwLCAKLSAgICAxMSwgMjU0LCAyNDgsIDEwLCAxMSwgMjU0LCAyNDcsIDEwLCAxMSwgMjU0LCAyNDYsIDEwLCAxMSwgMjU0LCAyNDUsIDEwLCAKLSAgICAxMSwgMjU0LCAyNDQsIDEwLCAxMSwgMjU0LCAyNDMsIDEwLCAxMSwgMjU0LCAyNDIsIDEwLCAxMSwgMjU0LCAyNDEsIDEwLCAKLSAgICAxMSwgMjU0LCAyNDAsIDEwLCAxMSwgMjU0LCAyMzksIDEwLCAxMSwgMjU0LCAyMzgsIDEwLCAxMSwgMjU0LCAyMzcsIDEwLCAKLSAgICAxMSwgMjU0LCAyMzYsIDEwLCAxMSwgMjU0LCAyMzUsIDEwLCAxMSwgMjUzLCA3MiwgMTAsIDExLCAyNTMsIDcwLCAxMCwgMTEsIAotICAgIDI1MywgNjgsIDEwLCAxMSwgMjUzLCA2NiwgMTAsIDExLCAyNTMsIDY0LCAxMCwgMTEsIDI1MywgNjMsIDEwLCAxMSwgMjUzLCAKLSAgICA2MSwgMTAsIDExLCAyNTMsIDU5LCAxMCwgMTEsIDI1MywgNTcsIDEwLCAxMSwgMjUzLCA1NSwgMTAsIDExLCAyNTAsIDI0OCwgCi0gICAgMTAsIDExLCAyNTAsIDI0NywgMTAsIDExLCAyNTAsIDI0NiwgMTAsIDExLCAyNTAsIDI0NSwgMTAsIDExLCAyNTAsIDI0NCwgCi0gICAgMTAsIDExLCAyNTAsIDI0MywgMTAsIDExLCAyNTAsIDI0MiwgMTAsIDExLCAyNTAsIDI0MSwgMTAsIDExLCAyNTAsIDI0MCwgCi0gICAgMTAsIDExLCAyNTAsIDIzOSwgMTAsIDExLCAyNTAsIDIzOCwgMTAsIDExLCAyNTAsIDIzNywgMTAsIDExLCAyNTAsIDIzNiwgCi0gICAgMTAsIDExLCAyNTAsIDIzNSwgMTAsIDExLCAyNTAsIDIzNCwgMTAsIDExLCAyNTAsIDIzMywgMTAsIDExLCAyNTAsIDIzMiwgCi0gICAgMTAsIDExLCAyNTAsIDIzMSwgMTAsIDExLCAyNTAsIDIzMCwgMTAsIDExLCAyNTAsIDIyOSwgMTAsIDExLCAyNTAsIDIyOCwgCi0gICAgMTAsIDExLCAyNTAsIDIyNywgMTAsIDExLCAyNTAsIDIyNiwgMTAsIDExLCAyNTAsIDIyNSwgMTAsIDExLCAyNTAsIDIyNCwgCi0gICAgMTAsIDExLCAyNTAsIDIyMywgMTAsIDExLCAyNTAsIDIyMiwgMTAsIDExLCAyNTAsIDIyMSwgMTAsIDExLCAyNDksIDIsIDEwLCAKLSAgICAxMSwgMjQ5LCAxLCAxMCwgMTEsIDI0OSwgMCwgMTAsIDExLCAyNDgsIDI1NSwgMTAsIDExLCAyNDgsIDI1NCwgMTAsIDExLCAKLSAgICAyNDgsIDI1MywgMTAsIDExLCAyNDgsIDI1MiwgMTAsIDExLCAyNDgsIDI1MSwgMTAsIDExLCAyNDgsIDI1MCwgMTAsIDExLCAKLSAgICAyNDgsIDI0OSwgMTAsIDExLCAyNDgsIDI0OCwgMTAsIDExLCAyNDgsIDI0NywgMTAsIDExLCAyNDgsIDI0NiwgMTAsIDExLCAKLSAgICAyNDgsIDI0NSwgMTAsIDExLCAyNDgsIDI0NCwgMTAsIDExLCAyNDgsIDI0MywgMTAsIDExLCAyNDgsIDI0MiwgMTAsIDExLCAKLSAgICAyNDgsIDI0MSwgMTAsIDExLCAyNDgsIDI0MCwgMTAsIDExLCAyNDgsIDIzOSwgMTAsIDExLCAyNDgsIDIzOCwgMTAsIDExLCAKLSAgICAyNDgsIDIzNywgMTAsIDExLCAyNDgsIDIzNiwgMTAsIDExLCAyNDgsIDIzNSwgMTAsIDExLCAyNDgsIDIzNCwgMTAsIDExLCAKLSAgICAyNDgsIDIzMywgMTAsIDExLCAyNDgsIDIzMiwgMTAsIDExLCAyNDgsIDIzMSwgMTAsIDExLCAyNDgsIDIzMCwgMTAsIDExLCAKLSAgICAyNDgsIDIyOSwgMTAsIDExLCAyNDgsIDIyOCwgMTAsIDExLCAyNDgsIDIyNywgMTAsIDExLCAyNDgsIDIyNiwgMTAsIDExLCAKLSAgICAyNDgsIDIyNSwgMTAsIDExLCAyNDgsIDIyNCwgMTAsIDExLCAyNDgsIDIyMywgMTAsIDExLCAyNDgsIDIyMiwgMTAsIDExLCAKLSAgICAyNDgsIDIyMSwgMTAsIDExLCAyNDgsIDIyMCwgMTAsIDExLCAyNDgsIDIxOSwgMTAsIDExLCAyNDgsIDIxOCwgMTAsIDExLCAKLSAgICAyNDgsIDIxNywgMTAsIDExLCAyNDgsIDIxNiwgMTAsIDExLCAyNDgsIDIxNSwgMTAsIDExLCAyNDgsIDIxNCwgMTAsIDExLCAKLSAgICAyNDgsIDIxMywgMTAsIDExLCAyNDgsIDIxMiwgMTAsIDExLCAyNDgsIDIxMSwgMTAsIDExLCAyNDgsIDIxMCwgMTAsIDExLCAKLSAgICAyNDgsIDIwOSwgMTAsIDExLCAyNDgsIDIwOCwgMTAsIDExLCAyNDgsIDIwNywgMTAsIDExLCAyNDgsIDIwNiwgMTAsIDExLCAKLSAgICAyNDgsIDIwNSwgMTAsIDExLCAyNDgsIDIwNCwgMTAsIDExLCAyNDgsIDIwMywgMTAsIDExLCAyNDgsIDIwMiwgMTAsIDExLCAKLSAgICAyNDgsIDIwMSwgMTAsIDExLCAyNDgsIDIwMCwgMTAsIDExLCAyNDgsIDE5OSwgMTAsIDExLCAyNDgsIDE5OCwgMTAsIDExLCAKLSAgICAyNDgsIDE5NywgMTAsIDExLCAyNDgsIDE5NiwgMTAsIDExLCAyNDgsIDE5NSwgMTAsIDExLCAyNDgsIDE5NCwgMTAsIDExLCAKLSAgICAyNDgsIDE5MywgMTAsIDExLCAyNDgsIDE5MiwgMTAsIDExLCAyNDgsIDE5MSwgMTAsIDExLCAyNDgsIDE5MCwgMTAsIDExLCAKLSAgICAyNDgsIDE4OSwgMTAsIDExLCAyNDgsIDE4OCwgMTAsIDExLCAyNDgsIDE4NywgMTAsIDExLCAyNDgsIDE4NiwgMTAsIDExLCAKLSAgICAyNDgsIDE4NSwgMTAsIDExLCAyNDgsIDE4NCwgMTAsIDExLCAyNDgsIDE4MywgMTAsIDExLCAyNDgsIDE4MiwgMTAsIDExLCAKLSAgICAyNDgsIDE4MSwgMTAsIDExLCAyNDgsIDE4MCwgMTAsIDExLCAyNDgsIDE3OSwgMTAsIDExLCAyNDgsIDE3OCwgMTAsIDExLCAKLSAgICAyNDgsIDE3NywgMTAsIDExLCAyNDgsIDE3NiwgMTAsIDExLCAyNDgsIDE3NSwgMTAsIDExLCAyNDgsIDE3NCwgMTAsIDExLCAKLSAgICAyNDgsIDE3MywgMTAsIDExLCAyNDgsIDE3MiwgMTAsIDExLCAyNDgsIDE3MSwgMTAsIDExLCAyNDgsIDE3MCwgMTAsIDExLCAKLSAgICAyNDgsIDE2OSwgMTAsIDExLCAyNDgsIDE2OCwgMTAsIDExLCAyNDgsIDE2NywgMTAsIDExLCAyNDUsIDIzNSwgMTAsIDExLCAKLSAgICAyNDUsIDIzNCwgMTAsIDExLCAyNDUsIDIzMywgMTAsIDExLCAyNDUsIDIzMiwgMTAsIDExLCAyNDUsIDIzMSwgMTAsIDExLCAKLSAgICAyNDUsIDIzMCwgMTAsIDExLCAyNDUsIDIyOSwgMTAsIDExLCAyNDUsIDIyOCwgMTAsIDExLCAyNDUsIDIyNywgMTAsIDExLCAKLSAgICAyNDUsIDIyNiwgMTAsIDExLCAyNDUsIDIyNSwgMTAsIDExLCAyNDUsIDIyNCwgMTAsIDExLCAyNDUsIDIyMywgMTAsIDExLCAKLSAgICAyNDUsIDIyMiwgMTAsIDExLCAyNDUsIDIyMSwgMTAsIDExLCAyNDUsIDIyMCwgMTAsIDExLCAyNDUsIDIxOSwgMTAsIDExLCAKLSAgICAyNDUsIDIxOCwgMTAsIDExLCAyNDUsIDIxNywgMTAsIDExLCAyNDUsIDIxNiwgMTAsIDExLCAyNDUsIDIxNSwgMTAsIDExLCAKLSAgICAyNDUsIDIxNCwgMTAsIDExLCAyNDUsIDIxMywgMTAsIDExLCAyNDUsIDIxMiwgMTAsIDExLCAyNDUsIDIxMSwgMTAsIDExLCAKLSAgICAyNDUsIDIxMCwgMTAsIDExLCAyNDUsIDIwOSwgMTAsIDExLCAyNDUsIDIwOCwgMTAsIDExLCAyNDUsIDIwNywgMTAsIDExLCAKLSAgICAyNDUsIDIwNiwgMTAsIDExLCAyNDUsIDIwNSwgMTAsIDExLCAyNDUsIDIwNCwgMTAsIDExLCAyNDUsIDIwMywgMTAsIDExLCAKLSAgICAyNDUsIDIwMiwgMTAsIDExLCAyNDUsIDIwMSwgMTAsIDExLCAyNDUsIDIwMCwgMTAsIDExLCAyNDUsIDE5OSwgMTAsIDExLCAKLSAgICAyNDUsIDE5OCwgMTAsIDExLCAyNDUsIDE5NywgMTAsIDExLCAyNDUsIDE5NiwgMTAsIDExLCAyNDUsIDE5NSwgMTAsIDExLCAKLSAgICAyNDUsIDE5NCwgMTAsIDExLCAyNDUsIDE5MywgMTAsIDExLCAyNDUsIDE5MiwgMTAsIDExLCAyNDQsIDIyOSwgMTAsIDExLCAKLSAgICAyNDQsIDIyOCwgMTAsIDExLCAyNDQsIDIyNywgMTAsIDExLCAyNDQsIDIyNiwgMTAsIDExLCAyNDQsIDIyNSwgMTAsIDExLCAKLSAgICAyNDQsIDIyNCwgMTAsIDExLCAyNDQsIDIyMywgMTAsIDExLCAyNDQsIDIyMiwgMTAsIDExLCAyNDQsIDIyMSwgMTAsIDExLCAKLSAgICAyNDQsIDIyMCwgMTAsIDExLCAyNDQsIDIxOSwgMTAsIDExLCAyNDQsIDIxOCwgMTAsIDExLCAyNDQsIDIxNywgMTAsIDExLCAKLSAgICAyNDQsIDIxNiwgMTAsIDExLCAyNDQsIDIxNSwgMTAsIDExLCAyNDQsIDIxNCwgMTAsIDExLCAyNDQsIDIxMywgMTAsIDExLCAKLSAgICAyNDQsIDIxMiwgMTAsIDExLCAyNDQsIDIxMSwgMTAsIDExLCAyNDQsIDIxMCwgMTAsIDExLCAyNDQsIDIwOSwgMTAsIDExLCAKLSAgICAyNDQsIDIwOCwgMTAsIDExLCAyNDQsIDIwNywgMTAsIDExLCAyNDQsIDIwNiwgMTAsIDExLCAyNDQsIDIwNSwgMTAsIDExLCAKLSAgICAyNDQsIDIwNCwgMTAsIDExLCAyNDQsIDIwMywgMTAsIDExLCAyNDQsIDIwMiwgMTAsIDExLCAyNDQsIDIwMSwgMTAsIDExLCAKLSAgICAyNDQsIDIwMCwgMTAsIDExLCAyNDQsIDE5OSwgMTAsIDExLCAyNDQsIDE5OCwgMTAsIDExLCAyNDQsIDE5NywgMTAsIDExLCAKLSAgICAyNDQsIDE5NiwgMTAsIDExLCAyNDQsIDE5NSwgMTAsIDExLCAyNDQsIDE5NCwgMTAsIDExLCAyNDQsIDE5MywgMTAsIDExLCAKLSAgICAyNDQsIDE5MiwgMTAsIDExLCAyNDQsIDE5MSwgMTAsIDExLCAyNDQsIDE5MCwgMTAsIDExLCAyNDQsIDE4OSwgMTAsIDExLCAKLSAgICAyNDQsIDE4OCwgMTAsIDExLCAyNDQsIDE4NywgMTAsIDExLCAyNDQsIDE4NiwgMTAsIDExLCAyNDQsIDE4NSwgMTAsIDExLCAKLSAgICAyNDQsIDE4NCwgMTAsIDExLCAyNDQsIDE4MywgMTAsIDExLCAyNDQsIDE4MiwgMTAsIDExLCAyNDQsIDE4MSwgMTAsIDExLCAKLSAgICAyNDQsIDE4MCwgMTAsIDExLCAyNDQsIDE3OSwgMTAsIDExLCAyNDQsIDE3OCwgMTAsIDExLCAyNDQsIDE3NywgMTAsIDExLCAKLSAgICAyNDQsIDE3NiwgMTAsIDExLCAyNDQsIDE3NSwgMTAsIDExLCAyNDQsIDE3NCwgMTAsIDExLCAyNDQsIDE3MywgMTAsIDExLCAKLSAgICAyNDQsIDE3MiwgMTAsIDExLCAyNDQsIDE3MSwgMTAsIDExLCAyNDQsIDE3MCwgMTAsIDExLCAyNDQsIDE2OSwgMTAsIDExLCAKLSAgICAyNDQsIDE2OCwgMTAsIDExLCAyNDQsIDE2NywgMTAsIDExLCAyNDQsIDE2NiwgMTAsIDExLCAyNDQsIDE2NSwgMTAsIDExLCAKLSAgICAyNDMsIDE3NiwgMTAsIDExLCAyNDMsIDE3NSwgMTAsIDExLCAyNDMsIDE3NCwgMTAsIDExLCAyNDMsIDE3MywgMTAsIDExLCAKLSAgICAyNDMsIDE3MiwgMTAsIDExLCAyNDMsIDE3MSwgMTAsIDExLCAyNDMsIDE3MCwgMTAsIDExLCAyNDMsIDE2OSwgMTAsIDExLCAKLSAgICAyNDMsIDE2OCwgMTAsIDExLCAyNDMsIDE2NywgMTAsIDExLCAyNDMsIDE2NiwgMTAsIDExLCAyNDMsIDE2NSwgMTAsIDExLCAKLSAgICAyNDMsIDE2NCwgMTAsIDExLCAyNDMsIDE2MywgMTAsIDExLCAyNDMsIDE2MiwgMTAsIDExLCAyNDMsIDE2MSwgMTAsIDExLCAKLSAgICAyNDMsIDE2MCwgMTAsIDExLCAyNDMsIDE1OSwgMTAsIDExLCAyNDMsIDE1OCwgMTAsIDExLCAyNDMsIDE1NywgMTAsIDExLCAKLSAgICAyNDMsIDE1NiwgMTAsIDExLCAyNDMsIDE1NSwgMTAsIDExLCAyNDMsIDE1NCwgMTAsIDExLCAyNDMsIDE1MywgMTAsIDExLCAKLSAgICAyNDMsIDE1MiwgMTAsIDExLCAyNDMsIDE1MSwgMTAsIDExLCAyNDMsIDE1MCwgMTAsIDExLCAyNDMsIDE0OSwgMTAsIDExLCAKLSAgICAyNDMsIDE0OCwgMTAsIDExLCAyNDMsIDE0NywgMTAsIDExLCAyNDMsIDE0NiwgMTAsIDExLCAyNDMsIDE0NSwgMTAsIDExLCAKLSAgICAyNDMsIDE0NCwgMTAsIDExLCAyNDMsIDE0MywgMTAsIDExLCAyNDMsIDE0MiwgMTAsIDExLCAyNDMsIDE0MSwgMTAsIDExLCAKLSAgICAyNDMsIDE0MCwgMTAsIDExLCAyNDMsIDEzOSwgMTAsIDExLCAyNDMsIDEzOCwgMTAsIDExLCAyNDMsIDEzNywgMTAsIDExLCAKLSAgICAyNDMsIDEzNiwgMTAsIDExLCAyNDMsIDEzNSwgMTAsIDExLCAyNDMsIDEzNCwgMTAsIDExLCAyNDMsIDEzMywgMTAsIDExLCAKLSAgICAyNDMsIDEzMiwgMTAsIDExLCAyNDMsIDEzMSwgMTAsIDExLCAyNDMsIDEzMCwgMTAsIDExLCAyNDMsIDEyOSwgMTAsIDExLCAKLSAgICAyNDMsIDEyOCwgMTAsIDExLCAyNDMsIDEyNywgMTAsIDExLCAyNDMsIDEyNiwgMTAsIDExLCAyNDMsIDEyNSwgMTAsIDExLCAKLSAgICAyNDMsIDEyNCwgMTAsIDExLCAyNDMsIDEyMywgMTAsIDExLCAyNDMsIDEyMiwgMTAsIDExLCAyNDMsIDEyMSwgMTAsIDExLCAKLSAgICAyNDMsIDEyMCwgMTAsIDExLCAyNDMsIDExOSwgMTAsIDExLCAyNDMsIDExOCwgMTAsIDExLCAyNDMsIDExNywgMTAsIDExLCAKLSAgICAyNDMsIDExNiwgMTAsIDExLCAyNDMsIDExNSwgMTAsIDExLCAyNDMsIDExNCwgMTAsIDExLCAyNDMsIDExMywgMTAsIDExLCAKLSAgICAyNDIsIDM5LCAxMCwgMTEsIDI0MiwgMzgsIDEwLCAxMSwgMjQyLCAzNywgMTAsIDExLCAyNDIsIDM2LCAxMCwgMTEsIDI0MiwgCi0gICAgMzUsIDEwLCAxMSwgMjQyLCAzNCwgMTAsIDExLCAyNDIsIDMzLCAxMCwgMTEsIDI0MiwgMzIsIDEwLCAxMSwgMjQyLCAzMSwgCi0gICAgMTAsIDExLCAyNDAsIDEzMCwgMTAsIDExLCAyNDAsIDEyOSwgMTAsIDExLCAyNDAsIDEyOCwgMTAsIDExLCAyNDAsIDEyNywgCi0gICAgMTAsIDExLCAyNDAsIDEyNiwgMTAsIDExLCAyNDAsIDEyNSwgMTAsIDExLCAyNDAsIDEyNCwgMTAsIDExLCAyNDAsIDEyMywgCi0gICAgMTAsIDExLCAyNDAsIDEyMiwgMTAsIDExLCAyNDAsIDEyMSwgMTAsIDExLCAyNDAsIDEyMCwgMTAsIDExLCAyNDAsIDExOSwgCi0gICAgMTAsIDExLCAyNDAsIDExOCwgMTAsIDExLCAyNDAsIDExNywgMTAsIDExLCAyNDAsIDExNiwgMTAsIDExLCAyNDAsIDExNSwgCi0gICAgMTAsIDExLCAyNDAsIDExNCwgMTAsIDExLCAyNDAsIDExMywgMTAsIDExLCAyNDAsIDExMiwgMTAsIDExLCAyMzUsIDI2LCAKLSAgICAxMCwgMTEsIDIzNSwgMjUsIDEwLCAxMSwgMjM1LCAyNCwgMTAsIDExLCAyMzUsIDIzLCAxMCwgMTEsIDIzNSwgMjIsIDEwLCAKLSAgICAxMSwgMjM1LCAyMSwgMTAsIDExLCAyMzUsIDIwLCAxMCwgMTEsIDIzNSwgMTksIDEwLCAxMSwgMjMzLCAxNjgsIDEwLCAxMSwgCi0gICAgMjMzLCAxNjcsIDEwLCAxMSwgMjMzLCAxNjYsIDEwLCAxMSwgMjMzLCAxNjUsIDEwLCAxMSwgMjMzLCAxNjQsIDEwLCAxMSwgCi0gICAgMjMzLCAxNjMsIDEwLCAxMSwgMjMzLCAxNjIsIDEwLCAxMSwgMjMzLCAxNjEsIDEwLCAxMSwgMjMzLCAxNjAsIDEwLCAxMSwgCi0gICAgMjMzLCAxNTksIDEwLCAxMSwgMjMyLCAxMDksIDEwLCAxMSwgMjMyLCAxMDgsIDEwLCAxMSwgMjMyLCAxMDcsIDEwLCAxMSwgCi0gICAgMjMyLCAxMDYsIDEwLCAxMSwgMjMyLCAxMDUsIDEwLCAxMSwgMjMyLCAxMDQsIDEwLCAxMSwgMjMyLCAxMDMsIDEwLCAxMSwgCi0gICAgMjMyLCAxMDIsIDEwLCAxMSwgMjMyLCAxMDEsIDEwLCAxMSwgMjMyLCAxMDAsIDEwLCAxMSwgMjMyLCA5OSwgMTAsIDExLCAKLSAgICAyMzIsIDk4LCAxMCwgMTEsIDIzMiwgOTcsIDEwLCAxMSwgMjMyLCA5NiwgMTAsIDExLCAyMzIsIDk1LCAxMCwgMTEsIDIzMiwgCi0gICAgOTQsIDEwLCAxMSwgMjMyLCA5MywgMTAsIDExLCAyMzIsIDkyLCAxMCwgMTEsIDIzMiwgOTEsIDEwLCAxMSwgMjMyLCA5MCwgCi0gICAgMTAsIDExLCAyMzIsIDg5LCAxMCwgMTEsIDIzMiwgODgsIDEwLCAxMSwgMjMyLCA4NywgMTAsIDExLCAyMzIsIDg2LCAxMCwgCi0gICAgMTEsIDIzMiwgODUsIDEwLCAxMSwgMjMyLCA4NCwgMTAsIDExLCAyMzIsIDgzLCAxMCwgMTEsIDIzMiwgODIsIDEwLCAxMSwgCi0gICAgMjMyLCA4MSwgMTAsIDExLCAyMzIsIDgwLCAxMCwgMTEsIDIzMiwgNzksIDEwLCAxMSwgMjMyLCA3OCwgMTAsIDExLCAyMzIsIAotICAgIDc3LCAxMCwgMTEsIDIzMiwgNzYsIDEwLCAxMSwgMjMyLCA3NSwgMTAsIDExLCAyMzIsIDc0LCAxMCwgMTEsIDIzMiwgNzMsIAotICAgIDEwLCAxMSwgMjMyLCA3MiwgMTAsIDExLCAyMzIsIDcxLCAxMCwgMTEsIDIzMiwgNzAsIDEwLCAxMSwgMjMyLCA2OSwgMTAsIAotICAgIDExLCAyMzIsIDY4LCAxMCwgMTEsIDIzMiwgNjcsIDEwLCAxMSwgMjMyLCA2NiwgMTAsIDExLCAyMzIsIDY1LCAxMCwgMTEsIAotICAgIDIzMiwgNjQsIDEwLCAxMSwgMjMyLCA2MywgMTAsIDExLCAyMzIsIDYyLCAxMCwgMTEsIDIzMiwgNjEsIDEwLCAxMSwgMjMyLCAKLSAgICA2MCwgMTAsIDExLCAyMzIsIDU5LCAxMCwgMTEsIDIzMiwgNTgsIDEwLCAxMSwgMjMyLCA1NywgMTAsIDExLCAyMzIsIDU2LCAKLSAgICAxMCwgMTEsIDIzMiwgNTUsIDEwLCAxMSwgMjMyLCA1NCwgMTAsIDExLCAyMzIsIDUzLCAxMCwgMTEsIDIzMiwgNTIsIDEwLCAKLSAgICAxMSwgMjMyLCA1MSwgMTAsIDExLCAyMzIsIDUwLCAxMCwgMTEsIDIzMiwgNDksIDEwLCAxMSwgMjMyLCA0OCwgMTAsIDExLCAKLSAgICAyMzIsIDQ3LCAxMCwgMTEsIDIzMiwgNDYsIDEwLCAxMSwgMjMyLCA0NSwgMTAsIDExLCAyMzIsIDQ0LCAxMCwgMTEsIDIzMCwgCi0gICAgOTUsIDEwLCAxMSwgMjMwLCA5NCwgMTAsIDExLCAyMzAsIDkzLCAxMCwgMTEsIDIzMCwgOTIsIDEwLCAxMSwgMjMwLCA5MSwgCi0gICAgMTAsIDExLCAyMzAsIDkwLCAxMCwgMTEsIDIzMCwgODksIDEwLCAxMSwgMjMwLCA4OCwgMTAsIDExLCAyMzAsIDg3LCAxMCwgCi0gICAgMTEsIDIzMCwgODYsIDEwLCAxMSwgMjMwLCA4NSwgMTAsIDExLCAyMzAsIDg0LCAxMCwgMTEsIDIzMCwgODMsIDEwLCAxMSwgCi0gICAgMjMwLCA4MiwgMTAsIDExLCAyMzAsIDgxLCAxMCwgMTEsIDIzMCwgODAsIDEwLCAxMSwgMjMwLCA3OSwgMTAsIDExLCAyMzAsIAotICAgIDc4LCAxMCwgMTEsIDIzMCwgNzcsIDEwLCAxMSwgMjMwLCA3NiwgMTAsIDExLCAyMzAsIDc1LCAxMCwgMTEsIDIzMCwgNzQsIAotICAgIDEwLCAxMSwgMjMwLCA3MywgMTAsIDExLCAyMzAsIDcyLCAxMCwgMTEsIDIzMCwgNzEsIDEwLCAxMSwgMjMwLCA3MCwgMTAsIAotICAgIDExLCAyMzAsIDY5LCAxMCwgMTEsIDIzMCwgNjgsIDEwLCAxMSwgMjMwLCA2NywgMTAsIDExLCAyMzAsIDY2LCAxMCwgMTEsIAotICAgIDIzMCwgNjUsIDEwLCAxMSwgMjMwLCA2NCwgMTAsIDExLCAyMzAsIDYzLCAxMCwgMTEsIDIzMCwgNjIsIDEwLCAxMSwgMjMwLCAKLSAgICA2MSwgMTAsIDExLCAyMzAsIDYwLCAxMCwgMTEsIDIzMCwgNTksIDEwLCAxMSwgMjMwLCA1OCwgMTAsIDExLCAyMzAsIDU3LCAKLSAgICAxMCwgMTEsIDIzMCwgNTYsIDEwLCAxMSwgMjMwLCA1NSwgMTAsIDExLCAyMzAsIDU0LCAxMCwgMTEsIDIzMCwgNTMsIDEwLCAKLSAgICAxMSwgMjMwLCA1MiwgMTAsIDExLCAyMzAsIDUxLCAxMCwgMTEsIDIzMCwgNTAsIDEwLCAxMSwgMjMwLCA0OSwgMTAsIDExLCAKLSAgICAyMzAsIDQ4LCAxMCwgMTEsIDIzMCwgNDcsIDEwLCAxMSwgMjI4LCAyMjIsIDEwLCAxMSwgMjI4LCAyMjEsIDEwLCAxMSwgCi0gICAgMjI4LCAyMjAsIDEwLCAxMSwgMjI4LCAyMTksIDEwLCAxMSwgMjI4LCAyMTgsIDEwLCAxMSwgMjI4LCAyMTcsIDEwLCAxMSwgCi0gICAgMjI4LCAyMTYsIDEwLCAxMSwgMjI4LCAyMTUsIDEwLCAxMSwgMjI4LCAyMTQsIDEwLCAxMSwgMjI4LCAyMTMsIDEwLCAxMSwgCi0gICAgMjI4LCAyMTIsIDEwLCAxMSwgMjI4LCAyMTEsIDEwLCAxMSwgMjI4LCAyMTAsIDEwLCAxMSwgMjI4LCAyMDksIDEwLCAxMSwgCi0gICAgMjI4LCAyMDgsIDEwLCAxMSwgMjI4LCAyMDcsIDEwLCAxMSwgMjI4LCAyMDYsIDEwLCAxMSwgMjI4LCAyMDUsIDEwLCAxMSwgCi0gICAgMjI4LCAyMDQsIDEwLCAxMSwgMjI4LCAyMDMsIDEwLCAxMSwgMjI4LCAyMDIsIDEwLCAxMSwgMjI4LCAyMDEsIDEwLCAxMSwgCi0gICAgMjI4LCA5MSwgMTAsIDExLCAyMjgsIDkwLCAxMCwgMTEsIDIyOCwgODksIDEwLCAxMSwgMjI4LCA4OCwgMTAsIDExLCAyMjgsIAotICAgIDg3LCAxMCwgMTEsIDIyOCwgODYsIDEwLCAxMSwgMjI4LCA4NSwgMTAsIDExLCAyMjgsIDg0LCAxMCwgMTEsIDIyOCwgODMsIAotICAgIDEwLCAxMSwgMjI4LCA4MiwgMTAsIDExLCAyMjgsIDgxLCAxMCwgMTEsIDIyOCwgODAsIDEwLCAxMSwgMjI4LCA3OSwgMTAsIAotICAgIDExLCAyMjgsIDc4LCAxMCwgMTEsIDIyOCwgNzcsIDEwLCAxMSwgMjI4LCA3NiwgMTAsIDExLCAyMjgsIDc1LCAxMCwgMTEsIAotICAgIDIyOCwgNzQsIDEwLCAxMSwgMjI4LCA3MywgMTAsIDExLCAyMjgsIDcyLCAxMCwgMTEsIDIyOCwgNzEsIDEwLCAxMSwgMjI4LCAKLSAgICA3MCwgMTAsIDExLCAyMjgsIDY5LCAxMCwgMTEsIDIyOCwgNjgsIDEwLCAxMSwgMjI4LCA2NywgMTAsIDExLCAyMjgsIDY2LCAKLSAgICAxMCwgMTEsIDIyNywgMTk2LCAxMCwgMTEsIDIyNywgMTk1LCAxMCwgMTEsIDIyNywgMTk0LCAxMCwgMTEsIDIyNywgMTkzLCAKLSAgICAxMCwgMTEsIDIyNywgMTkyLCAxMCwgMTEsIDIyNywgMTkxLCAxMCwgMTEsIDIyNywgMTkwLCAxMCwgMTEsIDIyNywgMTg5LCAKLSAgICAxMCwgMTEsIDIyNywgMTg4LCAxMCwgMTEsIDIyNywgMTg3LCAxMCwgMTEsIDIyNywgMTg2LCAxMCwgMTEsIDIyNywgMTg1LCAKLSAgICAxMCwgMTEsIDIyNywgMTg0LCAxMCwgMTEsIDIyNywgMTgzLCAxMCwgMTEsIDIyNywgMTgyLCAxMCwgMTEsIDIyNywgMTgxLCAKLSAgICAxMCwgMTEsIDIyNywgMTgwLCAxMCwgMTEsIDIyNywgMTc5LCAxMCwgMTEsIDIyNywgMTc4LCAxMCwgMTEsIDIyNywgMTc3LCAKLSAgICAxMCwgMTEsIDIyNywgMTc2LCAxMCwgMTEsIDIyNywgMTc1LCAxMCwgMTEsIDIyNywgMTc0LCAxMCwgMTEsIDIyNywgMTczLCAKLSAgICAxMCwgMTEsIDIyNywgMTcyLCAxMCwgMTEsIDIyNywgMTcxLCAxMCwgMTEsIDIyNywgMTcwLCAxMCwgMTEsIDIyNywgMTY5LCAKLSAgICAxMCwgMTEsIDIyNywgMTY4LCAxMCwgMTEsIDIyNywgMTY3LCAxMCwgMTEsIDIyNywgMTY2LCAxMCwgMTEsIDIyNywgMTY1LCAKLSAgICAxMCwgMTEsIDIyNywgMTY0LCAxMCwgMTEsIDIyNywgMTYzLCAxMCwgMTEsIDIyNywgMTYyLCAxMCwgMTEsIDIyNywgMTYxLCAKLSAgICAxMCwgMTEsIDIyNywgMTYwLCAxMCwgMTEsIDIyNywgMTU5LCAxMCwgMTEsIDIyNywgMTU4LCAxMCwgMTEsIDIyNywgMTU3LCAKLSAgICAxMCwgMTEsIDIyNywgMTU2LCAxMCwgMTEsIDIyNywgMTU1LCAxMCwgMTEsIDIyNywgMTU0LCAxMCwgMTEsIDIyNywgMTUzLCAKLSAgICAxMCwgMTEsIDIyNywgMTUyLCAxMCwgMTEsIDIyNywgMTUxLCAxMCwgMTEsIDIyNywgMTUwLCAxMCwgMTEsIDIyNywgMTQ5LCAKLSAgICAxMCwgMTEsIDIyNywgMTQ4LCAxMCwgMTEsIDIyNywgMTQ3LCAxMCwgMTEsIDIyNywgMTQ2LCAxMCwgMTEsIDIyNywgMTQ1LCAKLSAgICAxMCwgMTEsIDIyNywgMTQ0LCAxMCwgMTEsIDIyNywgMTQzLCAxMCwgMTEsIDIyNywgMTQyLCAxMCwgMTEsIDIyNywgMTQxLCAKLSAgICAxMCwgMTEsIDIyNywgMTQwLCAxMCwgMTEsIDIyNywgMTM5LCAxMCwgMTEsIDIyNywgMTM4LCAxMCwgMTEsIDIyNywgMTM3LCAKLSAgICAxMCwgMTEsIDIyNywgMTM2LCAxMCwgMTEsIDIyNywgMTM1LCAxMCwgMTEsIDIyNywgMTM0LCAxMCwgMTEsIDIyNywgMTMzLCAKLSAgICAxMCwgMTEsIDIyNywgMTMyLCAxMCwgMTEsIDIyNywgMTMxLCAxMCwgMTEsIDIyNywgMTMwLCAxMCwgMTEsIDIyNywgMTI5LCAKLSAgICAxMCwgMTEsIDIyNywgMTI4LCAxMCwgMTEsIDIyNywgMTI3LCAxMCwgMTEsIDIyNywgMTI2LCAxMCwgMTEsIDIyNywgMTI1LCAKLSAgICAxMCwgMTEsIDIyNywgMTI0LCAxMCwgMTEsIDIyNywgMTIzLCAxMCwgMTEsIDIyNywgMTIyLCAxMCwgMTEsIDIyNiwgMjI4LCAKLSAgICAxMCwgMTEsIDIyNiwgMjI3LCAxMCwgMTEsIDIyNiwgMjI2LCAxMCwgMTEsIDIyNiwgMjI1LCAxMCwgMTEsIDIyNiwgMjI0LCAKLSAgICAxMCwgMTEsIDIyNiwgMjIzLCAxMCwgMTEsIDIyNiwgMjIyLCAxMCwgMTEsIDIyNiwgMjIxLCAxMCwgMTEsIDIyNiwgMjIwLCAKLSAgICAxMCwgMTEsIDIyNiwgMjE5LCAxMCwgMTEsIDIyNiwgMjE4LCAxMCwgMTEsIDIyNiwgMjE3LCAxMCwgMTEsIDIyNiwgMjE2LCAKLSAgICAxMCwgMTEsIDIyNCwgMjM5LCAxMCwgMTEsIDIyNCwgMjM4LCAxMCwgMTEsIDIyNCwgMjM3LCAxMCwgMTEsIDIyNCwgMjM2LCAKLSAgICAxMCwgMTEsIDIyNCwgMjM1LCAxMCwgMTEsIDIyNCwgMjM0LCAxMCwgMTEsIDIyNCwgMjMzLCAxMCwgMTEsIDIyNCwgMTExLCAKLSAgICAxMCwgMTEsIDIyNCwgMTEwLCAxMCwgMTEsIDIyNCwgMTA5LCAxMCwgMTEsIDIyNCwgMTA4LCAxMCwgMTEsIDIyNCwgMTA3LCAKLSAgICAxMCwgMTEsIDIyNCwgMTA2LCAxMCwgMTEsIDIyNCwgMTA1LCAxMCwgMTEsIDIyNCwgMTA0LCAxMCwgMTEsIDIyNCwgMTAzLCAKLSAgICAxMCwgMTEsIDIyNCwgMTAyLCAxMCwgMTEsIDIyNCwgMTAxLCAxMCwgMTEsIDIyNCwgMTAwLCAxMCwgMTEsIDIyNCwgOTksIAotICAgIDEwLCAxMSwgMjI0LCA5OCwgMTAsIDExLCAyMjQsIDk3LCAxMCwgMTEsIDIyNCwgOTYsIDEwLCAxMSwgMjI0LCA5NSwgMTAsIAotICAgIDExLCAyMjQsIDk0LCAxMCwgMTEsIDIyNCwgOTMsIDEwLCAxMSwgMjI0LCA5MiwgMTAsIDExLCAyMjQsIDkxLCAxMCwgMTEsIAotICAgIDIyNCwgOTAsIDEwLCAxMSwgMjI0LCA4OSwgMTAsIDExLCAyMjQsIDg4LCAxMCwgMTEsIDIyNCwgODcsIDEwLCAxMSwgMjI0LCAKLSAgICA4NiwgMTAsIDExLCAyMjQsIDg1LCAxMCwgMTEsIDIyNCwgODQsIDEwLCAxMSwgMjI0LCA4MywgMTAsIDExLCAyMjQsIDgyLCAKLSAgICAxMCwgMTEsIDIyNCwgODEsIDEwLCAxMSwgMjI0LCA4MCwgMTAsIDExLCAyMjQsIDc5LCAxMCwgMTEsIDIyNCwgNzgsIDEwLCAKLSAgICAxMSwgMjIzLCAxLCAxMCwgMTEsIDIyMywgMCwgMTAsIDExLCAyMjIsIDI1NSwgMTAsIDExLCAyMjIsIDI1NCwgMTAsIDExLCAKLSAgICAyMjIsIDI1MywgMTAsIDExLCAyMjIsIDI1MiwgMTAsIDExLCAyMjIsIDI1MSwgMTAsIDExLCAyMjIsIDI1MCwgMTAsIDExLCAKLSAgICAyMjIsIDI0OSwgMTAsIDExLCAyMjIsIDI0OCwgMTAsIDExLCAyMjIsIDI0NywgMTAsIDExLCAyMjIsIDI0NiwgMTAsIDExLCAKLSAgICAyMjIsIDI0NSwgMTAsIDExLCAyMjIsIDI0NCwgMTAsIDExLCAyMjIsIDI0MywgMTAsIDExLCAyMjIsIDI0MiwgMTAsIDExLCAKLSAgICAyMjIsIDI0MSwgMTAsIDExLCAyMjIsIDI0MCwgMTAsIDExLCAyMjIsIDIzOSwgMTAsIDExLCAyMjIsIDIzOCwgMTAsIDExLCAKLSAgICAyMjIsIDIzNywgMTAsIDExLCAyMjIsIDIzNiwgMTAsIDExLCAyMjIsIDIzNSwgMTAsIDExLCAyMjIsIDIzNCwgMTAsIDExLCAKLSAgICAyMjIsIDIzMywgMTAsIDExLCAyMjIsIDIzMiwgMTAsIDExLCAyMjIsIDIzMSwgMTAsIDExLCAyMjIsIDIzMCwgMTAsIDExLCAKLSAgICAyMjIsIDIyOSwgMTAsIDExLCAyMjIsIDIyOCwgMTAsIDExLCAyMjIsIDIyNywgMTAsIDExLCAyMjIsIDIyNiwgMTAsIDExLCAKLSAgICAyMjIsIDIyNSwgMTAsIDExLCAyMjIsIDIyNCwgMTAsIDExLCAyMjIsIDIyMywgMTAsIDExLCAyMjIsIDIyMiwgMTAsIDExLCAKLSAgICAyMjIsIDIyMSwgMTAsIDExLCAyMjIsIDIyMCwgMTAsIDExLCAyMjIsIDIxOSwgMTAsIDExLCAyMjIsIDIxOCwgMTAsIDExLCAKLSAgICAyMjIsIDIxNywgMTAsIDExLCAyMjIsIDIxNiwgMTAsIDExLCAyMjIsIDIxNSwgMTAsIDExLCAyMjIsIDIxNCwgMTAsIDExLCAKLSAgICAyMjIsIDIxMywgMTAsIDExLCAyMjIsIDIxMiwgMTAsIDExLCAyMjIsIDIxMSwgMTAsIDExLCAyMjIsIDIxMCwgMTAsIDExLCAKLSAgICAyMjIsIDIwOSwgMTAsIDExLCAyMjIsIDIwOCwgMTAsIDExLCAyMjIsIDIwNywgMTAsIDExLCAyMjIsIDIwNiwgMTAsIDExLCAKLSAgICAyMjIsIDIwNSwgMTAsIDExLCAyMjIsIDIwNCwgMTAsIDExLCAyMTgsIDk3LCAxMCwgMTEsIDIxOCwgOTYsIDEwLCAxMSwgCi0gICAgMjE4LCA5NSwgMTAsIDExLCAyMTgsIDk0LCAxMCwgMTEsIDIxOCwgOTMsIDEwLCAxMSwgMjE4LCA5MiwgMTAsIDExLCAyMTgsIAotICAgIDkxLCAxMCwgMTEsIDIxOCwgOTAsIDEwLCAxMSwgMjE4LCA4OSwgMTAsIDExLCAyMTgsIDg4LCAxMCwgMTEsIDIxOCwgODcsIAotICAgIDEwLCAxMSwgMjE4LCA4NiwgMTAsIDExLCAyMTgsIDg1LCAxMCwgMTEsIDIxOCwgODQsIDEwLCAxMSwgMjE4LCA4MywgMTAsIAotICAgIDExLCAyMTgsIDgyLCAxMCwgMTEsIDIxOCwgODEsIDEwLCAxMSwgMjE4LCA4MCwgMTAsIDExLCAyMTgsIDc5LCAxMCwgMTEsIAotICAgIDIxOCwgNzgsIDEwLCAxMSwgMjE4LCA3NywgMTAsIDExLCAyMTgsIDc2LCAxMCwgMTEsIDIxOCwgNzUsIDEwLCAxMSwgMjE4LCAKLSAgICA3NCwgMTAsIDExLCAyMTgsIDczLCAxMCwgMTEsIDIxOCwgNzIsIDEwLCAxMSwgMjE4LCA3MSwgMTAsIDExLCAyMTgsIDcwLCAKLSAgICAxMCwgMTEsIDIxOCwgNjksIDEwLCAxMSwgMjE4LCA2OCwgMTAsIDExLCAyMTgsIDY3LCAxMCwgMTEsIDIxOCwgNjYsIDEwLCAKLSAgICAxMSwgMjE4LCA2NSwgMTAsIDExLCAyMTgsIDY0LCAxMCwgMTEsIDIxOCwgNjMsIDEwLCAxMSwgMjE4LCA2MiwgMTAsIDExLCAKLSAgICAyMTgsIDYxLCAxMCwgMTEsIDIxOCwgNjAsIDEwLCAxMSwgMjE4LCA1OSwgMTAsIDExLCAyMTgsIDU4LCAxMCwgMTEsIDIxOCwgCi0gICAgNTcsIDEwLCAxMSwgMjE4LCA1NiwgMTAsIDExLCAyMTgsIDU1LCAxMCwgMTEsIDIxOCwgNTQsIDEwLCAxMSwgMjE1LCAyNDUsIAotICAgIDEwLCAxMSwgMjE1LCAyNDQsIDEwLCAxMSwgMjE1LCAyNDMsIDEwLCAxMSwgMjE1LCAyNDIsIDEwLCAxMSwgMjE1LCAyNDEsIAotICAgIDEwLCAxMSwgMjE1LCAyNDAsIDEwLCAxMSwgMjE1LCAyMzksIDEwLCAxMSwgMjE1LCAyMzgsIDEwLCAxMSwgMjE1LCAyMzcsIAotICAgIDEwLCAxMSwgMjE1LCAyMzYsIDEwLCAxMSwgMjE1LCAyMzUsIDEwLCAxMSwgMjE1LCAyMzQsIDEwLCAxMSwgMjE1LCAyMzMsIAotICAgIDEwLCAxMSwgMjE1LCAyMzIsIDEwLCAxMSwgMjE1LCAyMzEsIDEwLCAxMSwgMjE1LCAyMzAsIDEwLCAxMSwgMjE1LCAyMjksIAotICAgIDEwLCAxMSwgMjE1LCAyMjgsIDEwLCAxMSwgMjE1LCAyMjcsIDEwLCAxMSwgMjE1LCAyMjYsIDEwLCAxMSwgMjE1LCAyMjUsIAotICAgIDEwLCAxMSwgMjE1LCAyMjQsIDEwLCAxMSwgMjE1LCAyMjMsIDEwLCAxMSwgMjE1LCAyMjIsIDEwLCAxMSwgMjE1LCAyMjEsIAotICAgIDEwLCAxMSwgMjE1LCAyMjAsIDEwLCAxMSwgMjE1LCAyMTksIDEwLCAxMSwgMjE1LCAyMTgsIDEwLCAxMSwgMjE1LCAyMTcsIAotICAgIDEwLCAxMSwgMjE1LCAyMTYsIDEwLCAxMSwgMjE1LCAyMTUsIDEwLCAxMSwgMjE1LCAyMTQsIDEwLCAxMSwgMjE1LCAyMTMsIAotICAgIDEwLCAxMSwgMjE1LCAyMTIsIDEwLCAxMSwgMjE1LCAyMTEsIDEwLCAxMSwgMjE1LCAyMTAsIDEwLCAxMSwgMjE1LCAyMDksIAotICAgIDEwLCAxMSwgMjE1LCAyMDgsIDEwLCAxMSwgMjE1LCAyMDcsIDEwLCAxMSwgMjE1LCAyMDYsIDEwLCAxMSwgMjE1LCAyMDUsIAotICAgIDEwLCAxMSwgMjE1LCAyMDQsIDEwLCAxMSwgMjE1LCAyMDMsIDEwLCAxMSwgMjE1LCAyMDIsIDEwLCAxMSwgMjE1LCAyMDEsIAotICAgIDEwLCAxMSwgMjE1LCAyMDAsIDEwLCAxMSwgMjE1LCAxOTksIDEwLCAxMSwgMjE1LCA3OCwgMTAsIDExLCAyMTUsIDc3LCAxMCwgCi0gICAgMTEsIDIxNSwgNzYsIDEwLCAxMSwgMjE1LCA3NSwgMTAsIDExLCAyMTUsIDc0LCAxMCwgMTEsIDIxNSwgNzMsIDEwLCAxMSwgCi0gICAgMjE1LCA3MiwgMTAsIDExLCAyMTUsIDcxLCAxMCwgMTEsIDIxNSwgNzAsIDEwLCAxMSwgMjE1LCA2OSwgMTAsIDExLCAyMTUsIAotICAgIDY4LCAxMCwgMTEsIDIxNSwgNjcsIDEwLCAxMSwgMjE1LCA2NiwgMTAsIDExLCAyMTUsIDY1LCAxMCwgMTEsIDIxNSwgNjQsIAotICAgIDEwLCAxMSwgMjE1LCA2MywgMTAsIDExLCAyMTUsIDYyLCAxMCwgMTEsIDIxNSwgNjEsIDEwLCAxMSwgMjE1LCA2MCwgMTAsIAotICAgIDExLCAyMTUsIDU5LCAxMCwgMTEsIDIxNSwgNTgsIDEwLCAxMSwgMjE1LCA1NywgMTAsIDExLCAyMTUsIDU2LCAxMCwgMTEsIAotICAgIDIxNSwgNTUsIDEwLCAxMSwgMjE1LCA1NCwgMTAsIDExLCAyMTUsIDUzLCAxMCwgMTEsIDIxNSwgNTIsIDEwLCAxMSwgMjE1LCAKLSAgICA1MSwgMTAsIDExLCAyMTUsIDUwLCAxMCwgMTEsIDIxNSwgNDksIDEwLCAxMSwgMjE1LCA0OCwgMTAsIDExLCAyMTUsIDQ3LCAKLSAgICAxMCwgMTEsIDIxNSwgNDYsIDEwLCAxMSwgMjE1LCA0NSwgMTAsIDExLCAyMTUsIDQ0LCAxMCwgMTEsIDIxNSwgNDMsIDEwLCAKLSAgICAxMSwgMjE1LCA0MiwgMTAsIDExLCAyMTUsIDQxLCAxMCwgMTEsIDIxNSwgNDAsIDEwLCAxMSwgMjE1LCAzOSwgMTAsIDExLCAKLSAgICAyMTUsIDM4LCAxMCwgMTEsIDIxNSwgMzcsIDEwLCAxMSwgMjE1LCAzNiwgMTAsIDExLCAyMTUsIDM1LCAxMCwgMTEsIDIxNSwgCi0gICAgMzQsIDEwLCAxMSwgMjE1LCAzMywgMTAsIDExLCAyMTUsIDMyLCAxMCwgMTEsIDIxNSwgMzEsIDEwLCAxMSwgMjE1LCAzMCwgCi0gICAgMTAsIDExLCAyMTUsIDI5LCAxMCwgMTEsIDIxNSwgMjgsIDEwLCAxMSwgMjE1LCAyNywgMTAsIDExLCAyMTUsIDI2LCAxMCwgCi0gICAgMTEsIDIxNSwgMjUsIDEwLCAxMSwgMjE1LCAyNCwgMTAsIDExLCAyMTUsIDIzLCAxMCwgMTEsIDIxNSwgMjIsIDEwLCAxMSwgCi0gICAgMjE1LCAyMSwgMTAsIDExLCAyMTUsIDIwLCAxMCwgMTEsIDIxNSwgMTksIDEwLCAxMSwgMjE1LCAxOCwgMTAsIDExLCAyMTUsIAotICAgIDE3LCAxMCwgMTEsIDIxNSwgMTYsIDEwLCAxMSwgMjE1LCAxNSwgMTAsIDExLCAyMTUsIDE0LCAxMCwgMTEsIDIxNSwgMTMsIAotICAgIDEwLCAxMSwgMjE1LCAxMiwgMTAsIDExLCAyMTUsIDExLCAxMCwgMTEsIDIxNSwgMTAsIDEwLCAxMSwgMjE1LCA5LCAxMCwgCi0gICAgMTEsIDIxNSwgOCwgMTAsIDExLCAyMTUsIDcsIDEwLCAxMSwgMjE1LCA2LCAxMCwgMTEsIDIxNSwgNSwgMTAsIDExLCAyMTUsIAotICAgIDQsIDEwLCAxMSwgMjE1LCAzLCAxMCwgMTEsIDIxNSwgMiwgMTAsIDExLCAyMTQsIDgxLCAxMCwgMTEsIDIxNCwgODAsIDEwLCAKLSAgICAxMSwgMjE0LCA3OSwgMTAsIDExLCAyMTQsIDc4LCAxMCwgMTEsIDIxNCwgNzcsIDEwLCAxMSwgMjE0LCA3NiwgMTAsIDExLCAKLSAgICAyMTQsIDc1LCAxMCwgMTEsIDIxNCwgNzQsIDEwLCAxMSwgMjE0LCA3MywgMTAsIDExLCAyMTQsIDcyLCAxMCwgMTEsIDIxNCwgCi0gICAgNzEsIDEwLCAxMSwgMjE0LCA3MCwgMTAsIDExLCAyMTQsIDY5LCAxMCwgMTEsIDIxNCwgNjgsIDEwLCAxMSwgMjE0LCA2NywgCi0gICAgMTAsIDExLCAyMTQsIDY2LCAxMCwgMTEsIDIxNCwgNjUsIDEwLCAxMSwgMjE0LCA2NCwgMTAsIDExLCAyMTQsIDYzLCAxMCwgCi0gICAgMTEsIDIxNCwgNjIsIDEwLCAxMSwgMjE0LCA2MSwgMTAsIDExLCAyMTQsIDYwLCAxMCwgMTEsIDIxNCwgNTksIDEwLCAxMSwgCi0gICAgMjE0LCA1OCwgMTAsIDExLCAyMTQsIDU3LCAxMCwgMTEsIDIxNCwgNTYsIDEwLCAxMSwgMjE0LCA1NSwgMTAsIDExLCAyMTQsIAotICAgIDU0LCAxMCwgMTEsIDIxNCwgNTMsIDEwLCAxMSwgMjE0LCA1MiwgMTAsIDExLCAyMTQsIDUxLCAxMCwgMTEsIDIxNCwgNTAsIAotICAgIDEwLCAxMSwgMjEzLCAxNjUsIDEwLCAxMSwgMjEzLCAxNjQsIDEwLCAxMSwgMjEzLCAxNjMsIDEwLCAxMSwgMjEzLCAxNjIsIAotICAgIDEwLCAxMSwgMjEzLCAxNjEsIDEwLCAxMSwgMjEzLCAxNjAsIDEwLCAxMSwgMjEzLCAxNTksIDEwLCAxMSwgMjEzLCAxNTgsIAotICAgIDEwLCAxMSwgMjEzLCAxNTcsIDEwLCAxMSwgMjEzLCAxNTYsIDEwLCAxMSwgMjEzLCAxNTUsIDEwLCAxMSwgMjEzLCAxNTQsIAotICAgIDEwLCAxMSwgMjEzLCAxMDMsIDEwLCAxMSwgMjEzLCAxMDIsIDEwLCAxMSwgMjEzLCAxMDEsIDEwLCAxMSwgMjEzLCAxMDAsIAotICAgIDEwLCAxMSwgMjEzLCA5OSwgMTAsIDExLCAyMTMsIDk4LCAxMCwgMTEsIDIxMywgOTcsIDEwLCAxMSwgMjEzLCA5NiwgMTAsIAotICAgIDExLCAyMTMsIDk1LCAxMCwgMTEsIDIxMiwgMTUxLCAxMCwgMTEsIDIxMiwgMTUwLCAxMCwgMTEsIDIxMiwgMTQ5LCAxMCwgCi0gICAgMTEsIDIxMiwgMTQ4LCAxMCwgMTEsIDIxMiwgMTQ3LCAxMCwgMTEsIDIxMiwgMTQ2LCAxMCwgMTEsIDIxMiwgMTQ1LCAxMCwgCi0gICAgMTEsIDIxMiwgMTQ0LCAxMCwgMTEsIDIxMiwgMTQzLCAxMCwgMTEsIDIxMiwgMTQyLCAxMCwgMTEsIDIxMiwgMTQxLCAxMCwgCi0gICAgMTEsIDIxMiwgMTQwLCAxMCwgMTEsIDIxMiwgMTM5LCAxMCwgMTEsIDIxMiwgMTM4LCAxMCwgMTEsIDIxMiwgMTM3LCAxMCwgCi0gICAgMTEsIDIxMiwgMTM2LCAxMCwgMTEsIDIxMiwgMTM1LCAxMCwgMTEsIDIxMiwgMTM0LCAxMCwgMTEsIDIxMiwgMTMzLCAxMCwgCi0gICAgMTEsIDIxMiwgMTMyLCAxMCwgMTEsIDIxMiwgMTMxLCAxMCwgMTEsIDIxMiwgMTMwLCAxMCwgMTEsIDIxMiwgMTI5LCAxMCwgCi0gICAgMTEsIDIxMiwgMTI4LCAxMCwgMTEsIDIxMiwgMTI3LCAxMCwgMTEsIDIxMiwgMTI2LCAxMCwgMTEsIDIxMiwgMTI1LCAxMCwgCi0gICAgMTEsIDIxMiwgMTI0LCAxMCwgMTEsIDIxMiwgMTIzLCAxMCwgMTEsIDIxMiwgMTIyLCAxMCwgMTEsIDIxMiwgMTIxLCAxMCwgCi0gICAgMTEsIDIxMiwgMTIwLCAxMCwgMTEsIDIxMiwgMTE5LCAxMCwgMTEsIDIxMiwgMTE4LCAxMCwgMTEsIDIxMiwgMTE3LCAxMCwgCi0gICAgMTEsIDIxMiwgMTE2LCAxMCwgMTEsIDIxMiwgMTE1LCAxMCwgMTEsIDIxMiwgMTE0LCAxMCwgMTEsIDIxMiwgMTEzLCAxMCwgCi0gICAgMTEsIDIxMiwgMTEyLCAxMCwgMTEsIDIxMiwgMTExLCAxMCwgMTEsIDI1NCwgMjMxLCAxMCwgMTEsIDI1NCwgMjMwLCAxMCwgCi0gICAgMTEsIDI1NCwgMjI5LCAxMCwgMTEsIDI1NCwgMjI4LCAxMCwgMTEsIDI1NCwgMjI3LCAxMCwgMTEsIDI1NCwgMjI2LCAxMCwgCi0gICAgMTEsIDI1NCwgMjI1LCAxMCwgMTEsIDI1NCwgMjI0LCAxMCwgMTEsIDI1NCwgMjIzLCAxMCwgMTEsIDI1NCwgMjIyLCAxMCwgCi0gICAgMTEsIDI1NCwgMjIxLCAxMCwgMTEsIDI1NCwgMjIwLCAxMCwgMTEsIDI1NCwgMjE5LCAxMCwgMTEsIDI1NCwgMjE4LCAxMCwgCi0gICAgMTEsIDI1NCwgMjE3LCAxMCwgMTEsIDI1NCwgMjE2LCAxMCwgMTEsIDI1NCwgMjE1LCAxMCwgMTEsIDI1NCwgMjE0LCAxMCwgCi0gICAgMTEsIDI1NCwgMjEzLCAxMCwgMTEsIDI1NCwgMjEyLCAxMCwgMTEsIDI1NCwgMjExLCAxMCwgMTEsIDI1NCwgMjEwLCAxMCwgCi0gICAgMTEsIDI1NCwgMjA5LCAxMCwgMTEsIDI1NCwgMjA4LCAxMCwgMTEsIDI1NCwgMjA3LCAxMCwgMTEsIDI1NCwgMjA2LCAxMCwgCi0gICAgMTEsIDI1NCwgMjA1LCAxMCwgMTEsIDI1NCwgMjA0LCAxMCwgMTEsIDI1NCwgMjAzLCAxMCwgMTEsIDI1NCwgMjAyLCAxMCwgCi0gICAgMTEsIDI1NCwgMjAxLCAxMCwgMTEsIDI1NCwgMjAwLCAxMCwgMTEsIDI1NCwgMTk5LCAxMCwgMTEsIDI1NCwgMTk4LCAyMCwgCi0gICAgMSwgMTUzLCAyMjksIDk4LCAyMzEsIDgzLCAyMCwgMSwgMTUzLCAyNDMsIDQ2LCAyNDQsIDUsIDIwLCAxLCAxNTMsIDIyNSwgCi0gICAgMTMxLCAyMzEsIDg0LCAyMjUsIDE4OSwgMjAsIDEsIDE1MywgMjI1LCAxMzEsIDIzMSwgODQsIDIyNSwgMTkwLCAyMCwgMSwgCi0gICAgMTUzLCAyMzAsIDQ0LCAyMzEsIDgzLCAyMCwgMSwgMTUzLCAyMjAsIDE0NiwgMjAsIDEsIDE1MywgMjE3LCAxOSwgMjMxLCAKLSAgICA4MywgMjAsIDEsIDE1MywgMjI3LCAyMzgsIDIzMSwgODMsIDIwLCAxLCAxNTMsIDIyMCwgMTk5LCAyMjYsIDIxNCwgMjI5LCAKLSAgICAwLCAyMCwgMSwgMTUzLCAyMjUsIDEzMSwgMjI2LCAyMTQsIDIyOSwgMSwgMjI1LCAxODksIDIwLCAxLCAxNTMsIDIyNSwgCi0gICAgMTMxLCAyMjYsIDIxNCwgMjI5LCAxLCAyMjUsIDE5MCwgMjAsIDEsIDE1MywgMjMyLCAyMywgMjAsIDEsIDE1MywgMjE2LCAKLSAgICA4MywgMjMyLCAyNCwgMjAsIDEsIDE1MywgMjI5LCAxNTQsIDIwLCAxLCAxNTMsIDIzMiwgMjAsIDIwLCAxLCAxNTMsIDIzMSwgCi0gICAgMjM5LCAyMCwgMSwgMTUzLCAyMzAsIDExOSwgMjAsIDEsIDE1MywgMjIxLCA0NSwgMjAsIDEsIDE1MywgMjI4LCA5NiwgMjAsIAotICAgIDEsIDE1MywgMjM0LCAxNTUsIDIwLCAxLCAxNTMsIDIyOCwgMjI1LCAyMCwgMSwgMTUzLCAyMTgsIDIwNSwgMjAsIDEsIDE1MywgCi0gICAgMjI5LCA5NywgMjAsIDEsIDE1MywgMjMzLCAxMTAsIDIwLCAxLCAxNTMsIDIzMywgMzYsIDIzMywgMjEwLCAyMCwgMSwgMTUzLCAKLSAgICAyMjgsIDEwMywgMjMxLCA5MSwgMjAsIDEsIDE1MywgMjMyLCAyNywgMjAsIDEsIDE1MywgMjI2LCAxMTksIDIwLCAxLCAxNTMsIAotICAgIDI0MiwgMjA3LCAyMCwgMSwgMTUzLCAyMjYsIDE3NywgMjAsIDEsIDE1MywgMjMwLCAyMjEsIDIyOSwgMTMwLCAyMCwgMSwgCi0gICAgMTUzLCAyMjcsIDIxOSwgMjMxLCA5NCwgMjAsIDEsIDE1MywgMTExLCAyMTIsIDE3OSwgMjMwLCAzOCwgMjAsIDEsIDE1MywgCi0gICAgMjQyLCAyMDgsIDIwLCAxLCAxNTMsIDIyOCwgMTAzLCAyMjgsIDEwNCwgMjAsIDEsIDE1MywgMjIwLCA1NiwgMjAsIDEsIAotICAgIDE1MywgMjMxLCA3NiwgMjAsIDEsIDE1MywgMjMxLCA5NywgMjAsIDEsIDE1MywgMjMwLCAyMDAsIDIwLCAxLCAxNTMsIDIzNCwgCi0gICAgMjUzLCAyMCwgMSwgMTUzLCAyMjYsIDIxNCwgMjMzLCA3MSwgMjAsIDEsIDE1MywgMjI5LCAyMjksIDIzMywgNzEsIDIwLCAxLCAKLSAgICAxNTMsIDIyNiwgMzQsIDIwLCAxLCAxNTMsIDIzMiwgMjEsIDIwLCAxLCAxNTMsIDIyOSwgMzgsIDIwLCAxLCAxNTMsIDIyNSwgCi0gICAgMjAsIDIwLCAxLCAxNTMsIDIxNiwgODAsIDIwLCAxLCAxNTMsIDIzMiwgMTUyLCAyMCwgMSwgMTUzLCAyMTksIDIyNywgMjAsIAotICAgIDEsIDE1MywgMjE3LCAxNjksIDIwLCAxLCAxNTMsIDIzMiwgMTgsIDIwLCAxLCAxNTMsIDIzNCwgMTYyLCAyMCwgMSwgMTUzLCAKLSAgICAyMjksIDIyNSwgMjAsIDEsIDE1MywgMjMzLCAyMjIsIDIwLCAxLCAxNTMsIDIzMCwgMjAxLCAyMCwgMSwgMTUzLCAyMjAsIAotICAgIDE0MywgMjAsIDEsIDE1MywgMjMyLCAxOTEsIDIwLCAxLCAxNTMsIDI0NCwgNjIsIDIwLCAxLCAxNTMsIDIyMywgMTAxLCAyMCwgCi0gICAgMSwgMTUzLCAyMzMsIDI1MCwgMjAsIDEsIDE1MywgMjE5LCAyMjMsIDIwLCAxLCAxNTMsIDIzMSwgMjM2LCAyMjUsIDIzMSwgCi0gICAgMjAsIDEsIDE1MywgMjIwLCAxOTIsIDIwLCAxLCAxNTMsIDIyOCwgMTAyLCAyMCwgMSwgMTUzLCAyMjAsIDE3NywgMjI4LCAKLSAgICAxMTMsIDIxMiwgMTg3LCAyMCwgMSwgMTUzLCAyMjgsIDEsIDIzMCwgMjE4LCAyMCwgMSwgMTUzLCAyMjYsIDIwOSwgMjAsIDEsIAotICAgIDE1MywgMjI4LCAyMjYsIDIwLCAxLCAxNTMsIDIxNSwgMTQxLCAyMCwgMSwgMTUzLCAyMjksIDEzMywgMjAsIDEsIDE1MywgCi0gICAgMjMyLCAxNywgMjAsIDEsIDE1MywgMjI5LCAxMiwgMjAsIDEsIDE1MywgMjMxLCAxODIsIDIwLCAxLCAxNTMsIDIyOCwgMTIsIAotICAgIDIwLCAxLCAxNTMsIDIxNywgMTczLCAyMCwgMSwgMTUzLCAyMTksIDIyMSwgMjAsIDEsIDE1MywgMjI2LCAyMTAsIDIwLCAxLCAKLSAgICAxNTMsIDIyOCwgMTE3LCAyMCwgMSwgMTUzLCAyMzIsIDI1LCAyMCwgMSwgMTUzLCAyMjgsIDEwLCAyMCwgMSwgMTUzLCAyMzQsIAotICAgIDIyMSwgMjAsIDEsIDE1MywgMjI4LCAxMjAsIDIwLCAxLCAxNTMsIDIxNCwgMjI3LCAyMCwgMSwgMTUzLCAyMzIsIDE1NiwgCi0gICAgMjAsIDEsIDE1MywgMjI5LCAxODAsIDIwLCAxLCAxNTMsIDIzMCwgMTYsIDIwLCAxLCAxNTMsIDIzMSwgMTgxLCAyMCwgMSwgCi0gICAgMjI2LCAxNCwgMjI4LCAxMTUsIDIwLCAxLCAyMjYsIDE0LCAyMTYsIDgzLCAyMzIsIDIyLCAyMCwgMSwgMjI2LCAxNCwgMjIwLCAKLSAgICAxMTEsIDIwLCAxLCAyMjYsIDE0LCAyMjEsIDQ5LCAyMTYsIDgyLCAyMCwgMSwgMjI2LCAxNCwgMjMyLCAxOTMsIDIyOCwgOTksIAotICAgIDIwLCAxLCAyMjYsIDE0LCAyMzEsIDE4OCwgMjMyLCAyNiwgMjAsIDEsIDIyNiwgMTQsIDIzNCwgOTYsIDIwLCAxLCAyMjYsIAotICAgIDE0LCAyMTMsIDYsIDIwLCAxLCAyMjYsIDE0LCAyMzEsIDE4MywgMjAsIDEsIDIyNiwgMTQsIDIzNCwgMjQyLCAyMCwgMSwgCi0gICAgMjI2LCAxNCwgMjI2LCA4MywgMjAsIDEsIDIyNiwgMTQsIDIxMywgNzcsIDIzMywgNzEsIDIwLCAxLCAyMjYsIDE0LCAyMzMsIAotICAgIDEyNywgMjI4LCAxMTMsIDIyOCwgMjAsIDIwLCAxLCAyMjYsIDE0LCAyMjgsIDk3LCAyMjAsIDIxOCwgMjAsIDEsIDIyNiwgCi0gICAgMTQsIDIyOSwgMTk2LCAyMjksIDE1LCAyMCwgMSwgMjI2LCAxNCwgMjQyLCAyMDUsIDIwLCAxLCAyMjYsIDE0LCAyMjUsIAotICAgIDE4MSwgMjAsIDEsIDIyNiwgMTQsIDIxNiwgODMsIDIyOCwgMTExLCAyMCwgMSwgMjI2LCAxNCwgMjIwLCAyMjMsIDIyOSwgCi0gICAgMTAsIDIwLCAxLCAyMjYsIDE0LCAyMjAsIDIxOSwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgODQsIDIxNywgMTcyLCAyMCwgMSwgCi0gICAgMjI2LCAxNCwgMjMxLCAxNzAsIDIzMSwgMTg0LCAyMCwgMSwgMjI2LCAxNCwgMjI4LCAxMSwgMjI4LCA5OSwgMjAsIDEsIAotICAgIDIyNiwgMTQsIDIzNCwgMTUxLCAyMCwgMSwgMjI2LCAxNCwgMjQyLCAyMDYsIDIwLCAxLCAyMjYsIDE0LCAyMzQsIDE0NywgCi0gICAgMjAsIDEsIDIyNiwgMTQsIDIzMywgMTUxLCAyMCwgMSwgMjI2LCAxNCwgMjI2LCAxMjEsIDIwLCAxLCAyMjYsIDE0LCAyMTQsIAotICAgIDE1OSwgMjAsIDEsIDIyNiwgMTQsIDIyOSwgOTksIDIzMCwgMTE3LCAyMCwgMSwgMjI2LCAxNCwgMjI5LCAxMzIsIDIzMSwgCi0gICAgMTY2LCAyMCwgMSwgMjI2LCAxNCwgMjEzLCAxODEsIDIwLCAxLCAyMjYsIDE0LCAyMjIsIDE4MiwgMjAsIDEsIDIyNiwgMTQsIAotICAgIDIxOCwgNDUsIDIwLCAxLCAyMjYsIDE0LCAyMzEsIDk2LCAyMCwgMSwgMjI2LCAxNCwgMjI5LCAxMTcsIDIwLCAxLCAyMjYsIAotICAgIDE0LCAyMjksIDExOCwgMjMzLCAxMDcsIDIwLCAxLCAyMjYsIDE0LCAyMzEsIDg2LCAyMCwgMSwgMjI2LCAxNCwgMjE4LCAKLSAgICAyNTMsIDIwLCAxLCAyMjYsIDE0LCAyMzEsIDE3NCwgMjAsIDEsIDIyNiwgMTQsIDIzMCwgMjAzLCAyMCwgMSwgMjI2LCAxNCwgCi0gICAgMjI4LCAyMSwgMjAsIDEsIDIyNiwgMTQsIDIyNSwgMjQsIDIwLCAxLCAyMjYsIDE0LCAyMzEsIDk1LCAyMjksIDEzNCwgMjAsIAotICAgIDEsIDIyNiwgMTQsIDI0NCwgOTUsIDIwLCAxLCAyMjYsIDE0LCAyMzEsIDE2MSwgMjAsIDEsIDIyNiwgMTQsIDI0NCwgMTE2LCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjM0LCAxNTksIDIwLCAxLCAyMjYsIDE0LCAyMzIsIDQzLCAyMjksIDQsIDIwLCAxLCAyMjYsIAotICAgIDE0LCAyMzIsIDQzLCAyMjgsIDIzNiwgMjAsIDEsIDIyNiwgMTQsIDIzMywgMzUsIDIwLCAxLCAyMjYsIDE0LCAyMjksIDE0MCwgCi0gICAgMjAsIDEsIDIyNiwgMTQsIDIyOCwgMTIyLCAyMCwgMSwgMjI2LCAxNCwgMTg4LCAyMCwgMSwgMjI2LCAxNCwgMjM0LCA4MywgCi0gICAgMjAsIDEsIDIyNiwgMTQsIDIyOSwgODcsIDIwLCAxLCAxMzEsIDIyOSwgOTgsIDIzMiwgMjQsIDIwLCAxLCAxMzEsIDIyNywgCi0gICAgMjM3LCAyMCwgMSwgMTMxLCAyMTIsIDE4NywgMjAsIDEsIDEzMSwgMjE0LCAzNywgMjAsIDEsIDEzMSwgMjI5LCAxMzMsIDIwLCAKLSAgICAxLCAxMzEsIDIyOSwgMjE3LCAyMCwgMSwgMTMxLCAyMjksIDEwNSwgMjAsIDEsIDEzMSwgMjQyLCAyMTUsIDIwLCAxLCAxMzEsIAotICAgIDIzMSwgMTc4LCAyMCwgMSwgMTMxLCAyNDMsIDUzLCAyMCwgMSwgMTMxLCAyMjgsIDMsIDIzMCwgMjM5LCAyMzEsIDk4LCAyMCwgCi0gICAgMSwgMTMxLCAyMjgsIDk1LCAyMzEsIDE2OSwgMjAsIDEsIDEzMSwgMjMxLCAxNzUsIDIwLCAxLCAxMzEsIDIyNSwgMTg3LCAKLSAgICAyMCwgMSwgMTMxLCAyMjksIDIwMiwgMjAsIDEsIDEzMSwgMjMxLCAxODYsIDI1MCwgMjE1LCAyMCwgMSwgMTMxLCAyMzQsIAotICAgIDE0OSwgMjAsIDEsIDEzMSwgMjQyLCAyMTYsIDIwLCAxLCAxMzEsIDIzNCwgMTU2LCAyMCwgMSwgMTMxLCAyMTIsIDIwNCwgCi0gICAgMjMwLCAxNDYsIDIwLCAxLCAxMzEsIDIyNywgMjMxLCAyMCwgMSwgMTMxLCAyMzEsIDE2MywgMjAsIDEsIDEzMSwgMjI4LCAKLSAgICAxMjEsIDIwLCAxLCAxMzEsIDIzMSwgMTY5LCAyMCwgMSwgMTMxLCAyMTMsIDcsIDIwLCAxLCAxMzEsIDIzNCwgMiwgMjAsIDEsIAotICAgIDEzMSwgMjM1LCAxNCwgMjAsIDEsIDEzMSwgMjIxLCA0NCwgMjAsIDEsIDEzMSwgMjI5LCAyMTEsIDIwLCAxLCAxMzEsIDIxOCwgCi0gICAgNDMsIDIwLCAxLCAxMzEsIDIyOCwgMjQwLCAyMCwgMSwgMTMxLCAyMTcsIDE5LCAyMTIsIDE4OSwgMjAsIDEsIDEzMSwgMjE5LCAKLSAgICAyMywgMjAsIDEsIDEzMSwgMjI5LCAxMjQsIDIyOCwgMjAsIDIwLCAxLCAxMzEsIDIxNCwgMTU4LCAyMCwgMSwgMTMxLCAyMzAsIAotICAgIDE5LCAyMCwgMSwgMTMxLCAyMzIsIDQzLCAyMzQsIDE1OCwgMjAsIDEsIDEzMSwgMjI4LCAxMDQsIDIwLCAxLCAxMzEsIDIyOSwgCi0gICAgMTE5LCAyMCwgMSwgMTMxLCAyMzMsIDExMSwgMjAsIDEsIDEzMSwgMjMxLCAxNzEsIDIwLCAxLCAxMzEsIDIzMSwgNzUsIDIwLCAKLSAgICAxLCAxMzEsIDIyOCwgOTgsIDIwLCAxLCAxMzEsIDIxNywgMTY4LCAyMCwgMSwgMTMxLCAyMjksIDEyMSwgMjAsIDEsIDEzMSwgCi0gICAgMjQzLCAyMDQsIDIwLCAxLCAxMzEsIDIyOSwgMjE2LCAyMCwgMSwgMTMxLCAyMjgsIDEyMywgMjAsIDEsIDEzMSwgMjI4LCAKLSAgICAxMTksIDIwLCAxLCAxMzEsIDI1MSwgMzYsIDIwLCAxLCAxMzEsIDIxNCwgMTYwLCAyMCwgMSwgMTMxLCAyMzEsIDE3NiwgMjAsIAotICAgIDEsIDEzMSwgMjIzLCA1MSwgMjAsIDEsIDEzMSwgMjI5LCAxNCwgMjAsIDEsIDEzMSwgMjMzLCAxMjYsIDIwLCAxLCAxMzEsIAotICAgIDIxNywgMTcsIDIwLCAxLCAxMzEsIDIyOCwgMTA1LCAyMjksIDg3LCAyMCwgMSwgMTMxLCAyMjksIDYsIDIwLCAxLCAxMzEsIAotICAgIDIzNCwgMTYyLCAyMCwgMSwgMTMxLCAyMjksIDEyNSwgMjAsIDEsIDEzMSwgMjMyLCAxNywgMjAsIDEsIDEzMSwgMjMxLCAKLSAgICAxNjQsIDIwLCAxLCAxMzEsIDIzMiwgMTU2LCAyMCwgMSwgMTMxLCAyMzMsIDIxMCwgMjAsIDEsIDEzMSwgMjI5LCAxMiwgMjAsIAotICAgIDEsIDEzMSwgMjI5LCA4NywgMjAsIDEsIDEzMSwgMjEzLCAxNzIsIDIwLCAxLCAxMzEsIDIyOSwgMTIyLCAyMCwgMSwgMTMxLCAKLSAgICAyMjgsIDEwOCwgMjAsIDEsIDEzMSwgMjI4LCAxMDAsIDIwLCAxLCAxMzEsIDIzMywgMjI0LCAyMjgsIDIyNiwgMjAsIDEsIAotICAgIDEzMSwgMjI4LCAxMDYsIDIwLCAxLCAxMzEsIDIyOSwgMjI0LCAyMCwgMSwgMTMxLCAyMzIsIDQzLCAyMjgsIDExMSwgMjAsIAotICAgIDEsIDEzMSwgMjEzLCA5MSwgMjAsIDEsIDEzMSwgMjI5LCAyMjMsIDIwLCAxLCAxMzEsIDIyMCwgMTQ1LCAyMCwgMSwgMTMxLCAKLSAgICAyMjEsIDQ3LCAyMCwgMSwgMTMxLCAyMzEsIDE3MiwgMjAsIDEsIDEzMSwgMjMyLCAyNCwgMjAsIDEsIDEzMSwgMjMxLCAxODIsIAotICAgIDIwLCAxLCAxMzEsIDIzNCwgMTUwLCAyMCwgMSwgMTMxLCAyMzEsIDE3MywgMjAsIDEsIDEzMSwgMjM0LCAxNTQsIDIwLCAxLCAKLSAgICAxMzEsIDIzMSwgMTg2LCAyMjUsIDIzNSwgMjAsIDEsIDEzMSwgMjEyLCAxNzEsIDIwLCAxLCAxMzEsIDIyOSwgMiwgMjAsIDEsIAotICAgIDEzMSwgMjMxLCAzMywgMjAsIDEsIDEzMSwgMjMwLCAxNzAsIDIwLCAxLCAxMzEsIDIyMCwgMTk1LCAyMCwgMSwgMTMxLCAKLSAgICAyMzQsIDE3MiwgMjMzLCA5NCwgMjAsIDEsIDEzMSwgMjM0LCAxNzIsIDI0NCwgMTI4LCAyMCwgMSwgMTMxLCAyMjksIDE1MiwgCi0gICAgMjAsIDEsIDEzMSwgMjMwLCAxNiwgMjAsIDEsIDEzMSwgMjMyLCAyMjksIDIwLCAxLCAxMzEsIDIyNSwgMTk3LCAyMCwgMSwgCi0gICAgMTMxLCAyMjYsIDc0LCAyMCwgMSwgMTMxLCAyMTcsIDE4MywgMjAsIDEsIDEwMywgMjMxLCAxNjIsIDIwLCAxLCAxMDMsIAotICAgIDIxNCwgMzUsIDIwLCAxLCAxMDMsIDIyOSwgMCwgMjAsIDEsIDEwMywgMjMxLCA4MywgMjAsIDEsIDEwMywgMjI4LCAyNTQsIAotICAgIDIwLCAxLCAxMDMsIDIzMywgNywgMjAsIDEsIDEwMywgMjI5LCAzLCAyMCwgMSwgMTAzLCAyMjgsIDExOCwgMjAsIDEsIDEwMywgCi0gICAgMjI5LCAxMzksIDIwLCAxLCAxMDMsIDIyOCwgMjAsIDIwLCAxLCAxMDMsIDIxMywgMTgyLCAyMCwgMSwgMTAzLCAyMjksIDk1LCAKLSAgICAyMCwgMSwgMTAzLCAyMjAsIDI0MSwgMjAsIDEsIDEwMywgMjI5LCAxMDYsIDIwLCAxLCAxMDMsIDIzNCwgMTU3LCAyMCwgMSwgCi0gICAgMTAzLCAyMTcsIDE3MCwgMjAsIDEsIDEwMywgMjIwLCAyMjEsIDIwLCAxLCAxMDMsIDIyOSwgMTEsIDIwLCAxLCAxMDMsIAotICAgIDIxOCwgMjUzLCAyMCwgMSwgMTAzLCAyMzQsIDE2MiwgMjAsIDEsIDEwMywgMjEzLCA3OSwgMjAsIDEsIDEwMywgMjMzLCAKLSAgICAyMjUsIDIwLCAxLCAxMDMsIDIyMiwgMTUwLCAyMCwgMSwgMTAzLCAyMzEsIDg4LCAyMCwgMSwgMTAzLCAyMjksIDIxNSwgMjAsIAotICAgIDEsIDEwMywgMjMxLCAyNTEsIDIwLCAxLCAxMDMsIDIzMSwgOTQsIDIwLCAxLCAxMDMsIDIyMSwgNDYsIDIwLCAxLCAxMDMsIAotICAgIDIxMywgMzAsIDIwLCAxLCAxMDMsIDIyOSwgNSwgMjAsIDEsIDEwMywgMjM0LCAxNTMsIDIzMSwgMTY1LCAyMCwgMSwgMTAzLCAKLSAgICAyMjksIDEwMiwgMjAsIDEsIDEwMywgMjE2LCA4MiwgMjAsIDEsIDEwMywgMjQyLCAyMjQsIDIwLCAxLCAxMDMsIDIyOSwgOTIsIAotICAgIDIwLCAxLCAxMDMsIDI0NCwgOTYsIDIwLCAxLCAxMDMsIDIyOSwgMjE5LCAyMCwgMSwgMTAzLCAyMzEsIDY3LCAyMCwgMSwgCi0gICAgMTAzLCAyMzMsIDMxLCAyMCwgMSwgMTAzLCAyMjksIDIwMSwgMjAsIDEsIDEwMywgMjMwLCAyMTcsIDIwLCAxLCAxMDMsIAotICAgIDIzMSwgNzEsIDIwLCAxLCAxMDMsIDIyNSwgNiwgMjAsIDEsIDEwMywgMjMxLCA2OSwgMjAsIDEsIDEwMywgMjMxLCA4NSwgCi0gICAgMjAsIDEsIDEwMywgMjMyLCAxNDIsIDIwLCAxLCAxMDMsIDIyOCwgMTEwLCAyMCwgMSwgMTAzLCAyMzEsIDE4NSwgMjAsIDEsIAotICAgIDEwMywgMjMzLCAyMDIsIDIwLCAxLCAxMDMsIDIyOCwgMTIsIDIwLCAxLCAxMDMsIDIxNywgMTczLCAyMCwgMSwgMTAzLCAKLSAgICAyMTksIDIyMSwgMjAsIDEsIDEwMywgMjEyLCAxNzEsIDIwLCAxLCAxMDMsIDIzNCwgMTU0LCAyMCwgMSwgMTAzLCAyMjQsIAotICAgIDYwLCAyMCwgMSwgMTAzLCAyMTcsIDIxOCwgMjAsIDEsIDEwMywgMjI5LCAxMDMsIDIwLCAxLCAxMDMsIDIzMSwgOTAsIDIwLCAKLSAgICAxLCAxMDMsIDIyOCwgMTA5LCAyMCwgMSwgMTAzLCAyMzQsIDE1MiwgMjAsIDEsIDEwMywgMjI1LCAxOTEsIDIwLCAxLCAxMDMsIAotICAgIDIyNiwgMjgsIDIwLCAxLCAxMDMsIDIyNywgMjQ2LCAyMCwgMSwgMTAzLCAyMzMsIDM1LCAyMCwgMSwgMTAzLCAyMjksIDE0MCwgCi0gICAgMjAsIDEsIDEwMywgMjMxLCA4NywgMjAsIDEsIDEwMywgMjI5LCAxMTQsIDIwLCAxLCAxMDMsIDIxMiwgMTg0LCAyMCwgMSwgCi0gICAgMTAzLCAyMjYsIDE0OSwgMjAsIDEsIDEwMywgMjEyLCAxODMsIDIwLCAxLCAxMDMsIDIyOSwgMjI0LCAyMCwgMSwgMTAzLCAKLSAgICAyMjgsIDk5LCAyMCwgMSwgMTAzLCAyMTksIDI1LCAyMCwgMSwgMTAzLCAyMzMsIDIyOSwgMjAsIDEsIDEwMywgMjI5LCAxMjksIAotICAgIDIwLCAxLCAxMDMsIDIyOSwgMTAwLCAyMCwgMSwgMTAzLCAyMTYsIDY2LCAyMCwgMSwgMTAzLCAyMzEsIDk4LCAyMCwgMSwgCi0gICAgMTAzLCAyMzMsIDIxOSwgMjAsIDEsIDEwMywgMjI4LCAxMDcsIDIwLCAxLCAxMDMsIDIxNywgMTcxLCAyMCwgMSwgMTAzLCAKLSAgICAyMzIsIDE5LCAyMCwgMSwgMTAzLCAyMjksIDEzOCwgMjAsIDEsIDEwMywgMjMzLCAzMCwgMjAsIDEsIDEwMywgMjI5LCAxMjAsIAotICAgIDIwLCAxLCAxMDMsIDIyOCwgMTEyLCAyMCwgMSwgMTAzLCAyMjgsIDI0MCwgMjAsIDEsIDEwMywgMjQyLCAyMDksIDIwLCAxLCAKLSAgICAxMDMsIDIzMywgMjM4LCAyMCwgMSwgMTAzLCAyMjMsIDIzNCwgMjI3LCA3NSwgMjAsIDEsIDEwMywgMjE4LCAzNSwgMjAsIDEsIAotICAgIDEwMywgMjE2LCAyMjMsIDIwLCAxLCAxMDMsIDIyOCwgMTAsIDIwLCAxLCAxMDMsIDIyMywgMTM2LCAyMCwgMSwgMTAzLCAKLSAgICAyMzMsIDczLCAyMCwgMSwgMTAzLCAyMzEsIDE0NCwgMjAsIDEsIDEwMywgMTgzLCAyMCwgMSwgMTAzLCAyMTgsIDIwNSwgMjAsIAotICAgIDEsIDEwMywgMjMwLCAxNzIsIDIwLCAxLCAxMDMsIDIyMCwgMjA3LCAyMCwgMSwgMTAzLCAyMjAsIDIxNywgMjAsIDEsIDEwMywgCi0gICAgMjMzLCAxNzcsIDIwLCAxLCAxMDMsIDIyOCwgOTIsIDIwLCAxLCAxMDMsIDIyMCwgMTUwLCAyMCwgMSwgMTAzLCAyMjgsIAotICAgIDEwMSwgMjAsIDEsIDEwMywgMjI2LCA4NiwgMjAsIDEsIDEwMywgMjI5LCA2NCwgMjAsIDEsIDEwMywgMjIwLCAxNzYsIDIwLCAKLSAgICAxLCAxMDMsIDIyNSwgMTksIDIwLCAxLCAxMDMsIDIzMCwgMTE3LCAyMCwgMSwgMTAzLCAyMzIsIDE3NCwgMjAsIDEsIDEwMywgCi0gICAgMjIzLCAyMzQsIDIzMCwgMTY2LCAyMCwgMSwgMTAzLCAyMTcsIDcxLCAyMCwgMSwgMTAzLCAyMjgsIDkzLCAyMCwgMSwgMTAzLCAKLSAgICAyMzEsIDE4NiwgMTk4LCAyMCwgMSwgMTAzLCAyMjIsIDE0OCwgMjAsIDEsIDEwMywgMjQ0LCAxNjMsIDIwLCAxLCA4MCwgCi0gICAgMjI5LCAyMjMsIDIwLCAxLCA4MCwgMjE2LCAyMjksIDIwLCAxLCA4MCwgMjMxLCAxNzUsIDIwLCAxLCA4MCwgMjMzLCAxMTEsIAotICAgIDIwLCAxLCA4MCwgMjE0LCAxMDksIDIwLCAxLCA4MCwgMjMyLCAxNzgsIDIwLCAxLCA4MCwgMjI2LCAyMTMsIDIwLCAxLCA4MCwgCi0gICAgMjE5LCAyMzAsIDIwLCAxLCA4MCwgMjI0LCAzNywgMjAsIDEsIDgwLCAyMjgsIDExNCwgMjAsIDEsIDgwLCAyMjksIDE5NCwgCi0gICAgMjAsIDEsIDgwLCAyMjUsIDMzLCAyMCwgMSwgODAsIDIxOCwgMTMsIDIwLCAxLCA4MCwgMjI5LCAxMDgsIDIwLCAxLCA4MCwgCi0gICAgMjMzLCAyNTQsIDIwLCAxLCA4MCwgMjEzLCAxNzUsIDIwLCAxLCA4MCwgMjIyLCA4OSwgMjAsIDEsIDgwLCAyMjksIDEzMCwgCi0gICAgMjAsIDEsIDgwLCAyMjYsIDIxMCwgMjAsIDEsIDgwLCAyMTYsIDIzMCwgMjAsIDEsIDgwLCAyMzMsIDIyMywgMjAsIDEsIDgwLCAKLSAgICAyMzIsIDE5MiwgMjAsIDEsIDgwLCAyMjgsIDExNywgMjAsIDEsIDgwLCAyMjksIDg0LCAyMCwgMSwgODAsIDIzMiwgMjUsIAotICAgIDIwLCAxLCA4MCwgMjI5LCAxMDEsIDIwLCAxLCA4MCwgMjI5LCA4MywgMjAsIDEsIDgwLCAyMjgsIDExNiwgMjAsIDEsIDgwLCAKLSAgICAyMjMsIDEzNCwgMjAsIDEsIDgwLCAyMjksIDIsIDIwLCAxLCA4MCwgMjI2LCA4NSwgMjAsIDEsIDgwLCAyMjIsIDIwMCwgMjAsIAotICAgIDEsIDgwLCAyMjksIDExNSwgMjAsIDEsIDgwLCAyMzEsIDc3LCAyMCwgMSwgODAsIDI0MiwgMjAzLCAyMCwgMSwgODAsIDIyOSwgCi0gICAgMTA0LCAyMCwgMSwgODAsIDIyOSwgMTMsIDIwLCAxLCA4MCwgMjMxLCAyMzUsIDIwLCAxLCA4MCwgMjMyLCAxNzYsIDIwLCAxLCAKLSAgICA4MCwgMjI5LCAxMzUsIDIwLCAxLCA4MCwgMjI5LCAyMDcsIDIwLCAxLCA4MCwgMjE4LCAzNCwgMjI4LCA5OSwgMjAsIDEsIAotICAgIDgwLCAyMjEsIDQ4LCAyMCwgMSwgODAsIDIyNSwgMjksIDIwLCAxLCA4MCwgMjI5LCAyMjcsIDIxOSwgMjM1LCAyMCwgMSwgCi0gICAgODAsIDIyOSwgMTIzLCAyMjgsIDIwLCAyMCwgMSwgODAsIDIxMiwgMjUxLCAyMCwgMSwgODAsIDI0MiwgMjA0LCAyMCwgMSwgCi0gICAgODAsIDIxNiwgODEsIDIwLCAxLCA4MCwgMjEzLCAxMCwgMjAsIDEsIDgwLCAyMjUsIDE1MCwgMjAsIDEsIDgwLCAyMTYsIDcxLCAKLSAgICAyMCwgMSwgODAsIDIzNCwgMTYwLCAyMCwgMSwgODAsIDIxOSwgMjQsIDIwLCAxLCA4MCwgMjE3LCAxNzIsIDIwLCAxLCA4MCwgCi0gICAgMjE0LCAxNjEsIDIwLCAxLCA4MCwgMjEzLCAyNDcsIDIwLCAxLCA4MCwgMjMzLCAxNTQsIDIwLCAxLCA4MCwgMjI1LCAzNSwgCi0gICAgMjAsIDEsIDgwLCAyMTgsIDQ0LCAyMCwgMSwgODAsIDI0MiwgMjIzLCAyMCwgMSwgODAsIDIyOSwgMTQ0LCAyMCwgMSwgODAsIAotICAgIDIyMCwgMjIwLCAyMCwgMSwgODAsIDIzMSwgNzIsIDIwLCAxLCA4MCwgMjMxLCAxNzksIDIwLCAxLCA4MCwgMjI3LCAyMzUsIAotICAgIDIwLCAxLCA4MCwgMjI4LCAyMjMsIDIwLCAxLCA4MCwgMjQzLCA0OSwgMjAsIDEsIDgwLCAyMTYsIDcyLCAyMCwgMSwgODAsIAotICAgIDIzMywgMjMyLCAyMCwgMSwgODAsIDIxMywgNTcsIDIwLCAxLCA4MCwgMjI4LCAxMSwgMjQ5LCAyMDksIDIwLCAxLCA4MCwgCi0gICAgMjEyLCAyNDEsIDIwLCAxLCA4MCwgMjMxLCA4OSwgMjAsIDEsIDgwLCAyMjksIDIxMiwgMjAsIDEsIDgwLCAyMjUsIDIzMiwgCi0gICAgMjAsIDEsIDgwLCAyMTIsIDE4OCwgMjAsIDEsIDgwLCAyMzMsIDMyLCAyMCwgMSwgODAsIDI0MywgMjA0LCAyMCwgMSwgODAsIAotICAgIDI0MywgNDgsIDIwLCAxLCA4MCwgMjI5LCA5NCwgMjAsIDEsIDgwLCAyMzQsIDE2MiwgMjAsIDEsIDgwLCAyMzIsIDI4LCAyMCwgCi0gICAgMSwgODAsIDIyOSwgMTA3LCAyMCwgMSwgODAsIDI0MiwgMjEwLCAyMCwgMSwgODAsIDI0NCwgMTY0LCAyMCwgMSwgODAsIAotICAgIDIyOCwgOTQsIDIwLCAxLCA4MCwgMjI2LCAyOSwgMjAsIDEsIDgwLCAyMTMsIDgsIDIwLCAxLCA4MCwgMjI5LCAxMzEsIDIwLCAKLSAgICAxLCA4MCwgMjI4LCAxMSwgMjUxLCAyMDAsIDIwLCAxLCA4MCwgMjI3LCAyMTUsIDIwLCAxLCA4MCwgMjI1LCAxMjcsIDIwLCAKLSAgICAxLCA4MCwgMjMxLCAzMywgMjAsIDEsIDgwLCAyNDMsIDIwMiwgMjAsIDEsIDgwLCAyMzAsIDM4LCAyMCwgMSwgODAsIDIzMCwgCi0gICAgMTcwLCAyMCwgMSwgODAsIDI0MiwgMjA5LCAyMCwgMSwgODAsIDI0MywgMjA2LCA3MiwgMjAsIDEsIDgwLCAyMzAsIDExOCwgCi0gICAgMjAsIDEsIDgwLCAyMjUsIDMyLCAyMCwgMSwgODAsIDIyOSwgOTYsIDIwLCAxLCA4MCwgMjMzLCAyMTAsIDIwLCAxLCA4MCwgCi0gICAgMjI1LCAyMjksIDIwLCAxLCA4MCwgMjI4LCAxMDIsIDIwLCAxLCA4MCwgMjEzLCA5LCAyMCwgMSwgODAsIDIyOSwgMTE2LCAKLSAgICAyMCwgMSwgODAsIDIyNiwgMjE0LCAyMjYsIDYyLCAyMCwgMSwgODAsIDI0MywgMjA2LCAyNTAsIDIwMywgMjAsIDEsIDgwLCAKLSAgICAyNDQsIDYsIDIwLCAxLCA4MCwgMjI5LCA3LCAyMCwgMSwgODAsIDYxLCAyMCwgMSwgODAsIDIxNiwgMjIzLCAyMCwgMSwgODAsIAotICAgIDc1LCAyMCwgMSwgODAsIDcyLCAyMCwgMSwgODAsIDIzMywgMTA5LCAyMCwgMSwgODAsIDIyNiwgMjE0LCAyMjUsIDE1NywgCi0gICAgMjAsIDEsIDgwLCAyMTgsIDQ5LCAyMCwgMSwgODAsIDIxOCwgMiwgMjAsIDEsIDgwLCAyMjksIDIyNywgMjMwLCAxMDYsIAotICAgIDI0MCwgMjIxLCAyMCwgMSwgODAsIDIyMCwgMTk1LCAyMCwgMSwgODAsIDIxMywgNSwgMjAsIDEsIDgwLCAyMjksIDc3LCAyMCwgCi0gICAgMSwgODAsIDIxMiwgMTkzLCAyMCwgMSwgODAsIDIxMiwgMjE4LCAyMTgsIDE4NSwgMjAsIDEsIDgwLCAyMTIsIDIxOCwgMjQ5LCAKLSAgICA4NiwgMjAsIDEsIDgwLCAyMTIsIDE3OCwgMjAsIDEsIDgwLCAyMTIsIDE4NiwgMjAsIDEsIDgwLCAyMzQsIDE0OCwgMjAsIDEsIAotICAgIDgwLCAyMjYsIDI3LCAyMCwgMSwgODAsIDIyOSwgOCwgMjQ1LCA2NSwgMjAsIDEsIDgwLCAyMjUsIDMwLCAyMCwgMSwgODAsIAotICAgIDIxMywgMTgwLCAyMCwgMSwgODAsIDI0NCwgMTE2LCAyMCwgMSwgODAsIDIxNCwgMjI3LCAyMCwgMSwgODAsIDIzMiwgMTU2LCAKLSAgICAyMCwgMSwgODAsIDIzMSwgNDIsIDIwLCAxLCA4MCwgMjIzLCAyMDQsIDIwLCAxLCA4MCwgMjI0LCA2MSwgMjAsIDEsIDgwLCAKLSAgICAyMjksIDc2LCAyMCwgMSwgODAsIDIyOSwgMTU5LCAyMCwgMSwgODAsIDIyMCwgMTg3LCAyMCwgMSwgODAsIDIyMCwgMTc2LCAKLSAgICAyMCwgMSwgODAsIDI0MywgMjA2LCAyMjMsIDIzNiwgMjAsIDEsIDgwLCAyMDUsIDIwLCAxLCA4MCwgMjI1LCAyNDAsIDIwLCAKLSAgICAxLCA4MCwgMjMyLCAxNzQsIDIwLCAxLCA4MCwgMjM0LCAzNywgMjAsIDEsIDgwLCAyMzEsIDEyMiwgMjAsIDEsIDgwLCAxODgsIAotICAgIDIwLCAxLCA4MCwgMjMxLCAyMzIsIDIwLCAxLCA4MCwgMjE3LCAxNzQsIDIwLCAxLCA4MCwgMjM0LCAxMDEsIDIwLCAxLCA4MCwgCi0gICAgMjMwLCAyMjAsIDIwLCAxLCA4MCwgMjE3LCAyMDAsIDIwLCAxLCA4MCwgMjQ0LCAxMzcsIDIwLCAxLCA4MCwgMjQyLCAxOTksIAotICAgIDIwLCAxLCAyMjYsIDEzLCAxODEsIDIwLCAxLCAyMjYsIDEzLCA2OSwgMjAsIDEsIDIyNiwgMTMsIDIzMywgMjM4LCAyMCwgMSwgCi0gICAgMjI2LCAxMywgMjQ1LCAxNjUsIDIwLCAxLCAyMjYsIDEzLCAyMjQsIDEsIDIwLCAxLCAyMjYsIDEzLCAyMTgsIDM1LCAyMCwgCi0gICAgMSwgMjI2LCAxMywgMjI4LCAxMCwgMjAsIDEsIDIyNiwgMTMsIDIzMywgMTU3LCAyMCwgMSwgMjI2LCAxMywgMjIzLCAxMzYsIAotICAgIDIwLCAxLCAyMjYsIDEzLCAyMjMsIDE4MiwgMjAsIDEsIDIyNiwgMTMsIDIzMSwgMTQ0LCAyMCwgMSwgMjI2LCAxMywgMjE4LCAKLSAgICA0OSwgMjAsIDEsIDIyNiwgMTMsIDIyOSwgMjI2LCAyMCwgMSwgMjI2LCAxMywgMjI5LCAxNCwgMjAsIDEsIDIyNiwgMTMsIAotICAgIDE4MywgMjAsIDEsIDIyNiwgMTMsIDIxOCwgMjA1LCAyMCwgMSwgMjI2LCAxMywgMjIwLCAyMDcsIDIwLCAxLCAyMjYsIDEzLCAKLSAgICAyMjAsIDExNywgMjAsIDEsIDIyNiwgMTMsIDIyMSwgNDQsIDIwLCAxLCAyMjYsIDEzLCAyMzMsIDE3NywgMjAsIDEsIDIyNiwgCi0gICAgMTMsIDIzNCwgMTYyLCAyMCwgMSwgMjI2LCAxMywgMjI4LCA2NCwgMjAsIDEsIDIyNiwgMTMsIDIyOCwgOTIsIDIwLCAxLCAKLSAgICAyMjYsIDEzLCAyMjgsIDI0MSwgMjAsIDEsIDIyNiwgMTMsIDIxMiwgMjE3LCAyMCwgMSwgMjI2LCAxMywgMjIwLCAxNTAsIAotICAgIDIwLCAxLCAyMjYsIDEzLCAxODYsIDIwLCAxLCAyMjYsIDEzLCAyMjgsIDEyMCwgMjAsIDEsIDIyNiwgMTMsIDIyNiwgMjcsIAotICAgIDIwLCAxLCAyMjYsIDEzLCAyMjgsIDEwMSwgMjAsIDEsIDIyNiwgMTMsIDIxMywgMTgwLCAyMCwgMSwgMjI2LCAxMywgMjI2LCAKLSAgICA4NiwgMjAsIDEsIDIyNiwgMTMsIDIyMywgNTEsIDIwLCAxLCAyMjYsIDEzLCAyMjksIDY0LCAyMCwgMSwgMjI2LCAxMywgCi0gICAgMjIzLCAyMDQsIDIwLCAxLCAyMjYsIDEzLCAyMzQsIDE3MSwgMjAsIDEsIDIyNiwgMTMsIDIyOSwgOTMsIDIwLCAxLCAyMjYsIAotICAgIDEzLCAyMjksIDE0MSwgMjAsIDEsIDIyNiwgMTMsIDIyMCwgMTg3LCAyMCwgMSwgMjI2LCAxMywgMjI1LCAzMywgMjAsIDEsIAotICAgIDIyNiwgMTMsIDI0NCwgNiwgMjAsIDEsIDIyNiwgMTMsIDIxNCwgNDksIDIwLCAxLCAyMjYsIDEzLCAyMzMsIDEzLCAyMCwgMSwgCi0gICAgMjI2LCAxMywgMjMyLCAxNzQsIDIwLCAxLCAyMjYsIDEzLCAyMzQsIDM3LCAyMCwgMSwgMjI2LCAxMywgMjMxLCAxNzcsIDIwLCAKLSAgICAxLCAyMjYsIDEzLCAyMjMsIDIzMywgMjAsIDEsIDIyNiwgMTMsIDE4OCwgMjAsIDEsIDIyNiwgMTMsIDIzMCwgMjMxLCAyMCwgCi0gICAgMSwgMjI2LCAxMywgMjMxLCAxODUsIDIwLCAxLCAyMjYsIDEzLCAyMTcsIDE4MywgMjAsIDEsIDIyNiwgMTMsIDIzNCwgNCwgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDIyMiwgMTY2LCAyMCwgMSwgMjI2LCAxMywgMjE0LCA5OCwgNTYsIDEsIDI1MywgMTkzLCA3NCwgCi0gICAgMTQyLCAxLCAyNTMsIDE5MywgMjEzLCAzOCwgNDcsIDI3LCAxNiwgMjI1LCAzOSwgNDcsIDI3LCAxNiwgMjQ4LCAxMDMsIDQ3LCAKLSAgICAyNywgMTYsIDIyNiwgNTAsIDQ3LCAyNywgMTYsIDIyNiwgMjM3LCAyNDUsIDEzNSwgNDcsIDI3LCAxNiwgMjI2LCAyMzcsIAotICAgIDI0NywgMTUzLCA0NywgMjcsIDE2LCAyMTQsIDI0OCwgMjQ1LCAxMzUsIDQ3LCAyNywgMTYsIDIxNCwgMjQ4LCAyNDcsIDE1MywgCi0gICAgNDcsIDI3LCAxNiwgMjM0LCAyMDIsIDQ3LCAyNywgMTYsIDIxOCwgMTE1LCA0NywgMjcsIDE2LCAyMjYsIDEzNywgNDcsIDI3LCAKLSAgICAxNiwgMjEyLCAyMDgsIDQ3LCAyNywgMTYsIDIxMiwgMjA5LCAyNDcsIDE1MywgNDcsIDI3LCAxNiwgMjMzLCAyNDMsIDQ3LCAKLSAgICAyNywgMTYsIDI1MywgMjM2LCAyNDUsIDEzNSwgNDcsIDI3LCAxNiwgMjQ0LCAyNDksIDI0NSwgMTM1LCA0NywgMjcsIDE2LCAKLSAgICAyMTcsIDIxMSwgNDcsIDI3LCAxNiwgMjM0LCAxNjcsIDQ3LCAyNywgMTYsIDI1MywgMjI3LCA0NywgMjcsIDE2LCAyNTMsIAotICAgIDIyOCwgMjQ3LCAxNTMsIDQ3LCAyNywgMTYsIDIxOCwgMTIxLCA0NywgMjcsIDE2LCAyMTcsIDExMiwgNDcsIDI3LCAxNiwgCi0gICAgMjI3LCA3MiwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDI0MiwgMTM1LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjI1LCAzOCwgCi0gICAgNDcsIDI3LCAxNiwgMjUwLCA4NSwgNDcsIDI3LCAxNiwgMjE0LCAyMzgsIDQ3LCAyNywgMTYsIDIzNSwgMTYyLCAyNTMsIAotICAgIDE5MSwgNDcsIDI3LCAxNiwgMjM0LCAxNjksIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMzQsIDE2OCwgMjUzLCAxOTEsIDQ3LCAKLSAgICAyNywgMTYsIDIyMiwgMTMxLCA0NywgMjcsIDE2LCAyMjYsIDEyOCwgNDcsIDI3LCAxNiwgMjE5LCA4NiwgMjUzLCAyMzAsIAotICAgIDQ3LCAyNywgMTYsIDIyNiwgMjM2LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjE0LCAyNDcsIDI1MywgMTkxLCA0NywgMjcsIAotICAgIDE2LCAyNTMsIDIzMSwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDI1MywgMjI1LCA0NywgMjcsIDE2LCAyMzQsIDQ2LCA0NywgCi0gICAgMjcsIDE2LCAyMjMsIDE5OSwgNDcsIDI3LCAxNiwgMjI1LCAyMzgsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMTcsIDM2LCAKLSAgICA0NywgMjcsIDE2LCAyNTQsIDMwLCA0NywgMjcsIDE2LCAyMjIsIDc4LCA0NywgMjcsIDE2LCAyMTgsIDEyNCwgMjUzLCAxOTEsIAotICAgIDQ3LCAyNywgMTYsIDIxOCwgMTI0LCAyMzEsIDEwNywgMjE5LCA4NCwgNDcsIDI3LCAxNiwgMjI2LCAyMzEsIDI1MywgMTkxLCAKLSAgICA0NywgMjcsIDE2LCAyMTcsIDE0MywgNDcsIDI3LCAxNiwgMjMzLCA1MSwgNDcsIDI3LCAxNiwgMjQ1LCAyNTIsIDQ3LCAyNywgCi0gICAgMTYsIDIxNiwgMTg1LCA0NywgMjcsIDE2LCAyMTcsIDE4NSwgNDcsIDI3LCAxNiwgMjMzLCAyNDYsIDQ3LCAyNywgMTYsIAotICAgIDI1MywgMjM2LCAyNDQsIDI0OSwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgCi0gICAgMjM2LCA3LCA0NywgMjcsIDE2LCAyMTYsIDE1NywgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIzNCwgMjA1LCAyMTYsIDE1NiwgCi0gICAgNDcsIDI3LCAxNiwgMjI2LCA3NSwgNDcsIDI3LCAxNiwgMjI1LCA0MywgNDcsIDI3LCAxNiwgMjM0LCAyMCwgNDcsIDI3LCAKLSAgICAxNiwgMjUwLCAxNywgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIyNCwgMzgsIDQ3LCAyNywgMTYsIDIyNiwgMTQwLCAyNTMsIAotICAgIDE5MSwgNDcsIDI3LCAxNiwgMjI2LCAxMzgsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyNDAsIDEwMiwgNDcsIDI3LCAxNiwgCi0gICAgMjMwLCAyMywgNDcsIDI3LCAxNiwgMjI2LCAzMiwgNDcsIDI3LCAxNiwgMjM0LCAyMSwgMjU0LCA1OCwgNDcsIDI3LCAxNiwgCi0gICAgMjE2LCAxNTcsIDI1NCwgNTgsIDQ3LCAyNywgMTYsIDIxOSwgNjMsIDQ3LCAyNywgMTYsIDI0MiwgMTAxLCA0NywgMjcsIDE2LCAKLSAgICAyMzUsIDE2MiwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNywgNzIsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjYsIDIzNywgCi0gICAgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNiwgMzEsIDQ3LCAyNywgMTYsIDIzNCwgNywgNDcsIDI3LCAxNiwgMjI2LCAzMCwgCi0gICAgNDcsIDI3LCAxNiwgMjMzLCAyNDUsIDQ3LCAyNywgMTYsIDIyNiwgNzYsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMzQsIAotICAgIDE2OCwgMjI5LCAxNzgsIDI1NCwgNywgNDcsIDI3LCAxNiwgMjM0LCAxNjksIDIyOSwgMTc4LCAyNTQsIDcsIDQ3LCAyNywgCi0gICAgMTYsIDIxMiwgMjA2LCA0NywgMjcsIDE2LCAyNTMsIDIyOCwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDI1MywgMjI5LCAyMTgsIAotICAgIDEyMiwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIxMiwgMjA3LCA0NywgMjcsIDE2LCAyMzMsIDI0NCwgNDcsIDI3LCAxNiwgCi0gICAgMjQ1LCAxMzAsIDQ3LCAyNywgMTYsIDI1MCwgODYsIDQ3LCAyNywgMTYsIDIzMSwgMTEsIDIzNSwgMTYxLCA0NywgMjcsIDE2LCAKLSAgICAyMTQsIDI0OCwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNSwgMjM4LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI1LCA0NCwgCi0gICAgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNywgNjksIDQ3LCAyNywgMTYsIDI1MywgMjUxLCA0NywgMjcsIDE2LCAyMzIsIAotICAgIDExOCwgNDcsIDI3LCAxNiwgMjI2LCAxMzgsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjYsIDE0MCwgMjI5LCAxNzcsIDQ3LCAKLSAgICAyNywgMTYsIDI0NSwgMjYsIDIyNiwgMTM5LCA0NywgMjcsIDE2LCAyMzMsIDE3NSwgNDcsIDI3LCAxNiwgMjUzLCAyNTIsIAotICAgIDQ3LCAyNywgMTYsIDIxNiwgMTU3LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjQ1LCAxMzMsIDQ3LCAyNywgMTYsIDIxOCwgCi0gICAgMTI0LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjE4LCAxMTYsIDQ3LCAyNywgMTYsIDI1MCwgMTcsIDIyOSwgMTc3LCA0NywgCi0gICAgMjcsIDE2LCAyNDUsIDY5LCA0NywgMjcsIDE2LCAyMjIsIDc5LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjEzLCAxMzksIAotICAgIDIzNCwgNDYsIDQ3LCAyNywgMTYsIDIxNiwgMTU0LCA0NywgMjcsIDE2LCAyMjUsIDQ1LCA0NywgMjcsIDE2LCAyMTYsIDE1OCwgCi0gICAgNDcsIDI3LCAxNiwgMjE2LCAxNTUsIDQ3LCAyNywgMTYsIDIyNSwgNDIsIDQ3LCAyNywgMTYsIDIxNiwgMTUzLCA0NywgMjcsIAotICAgIDE2LCAyMjUsIDQxLCA0NywgMjcsIDE2LCAyNDIsIDEzNCwgNDcsIDI3LCAxNiwgMjUzLCAxODUsIDQ3LCAyNywgMTYsIDI0NSwgCi0gICAgMjYsIDI1MywgMTg1LCA0NywgMjcsIDE2LCAyMjYsIDIzMSwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIxNywgMTQyLCAyNDUsIAotICAgIDM0LCA0NywgMjcsIDE2LCAyMTcsIDE0MiwgMjQ0LCAyNDgsIDQ3LCAyNywgMTYsIDIxNywgMTQ0LCAyNTMsIDIzMiwgNDcsIAotICAgIDI3LCAxNiwgMjE3LCAxMzcsIDIzNCwgMjUxLCAyNTMsIDIyNCwgNDcsIDI3LCAxNiwgMjM0LCAyMDQsIDQ3LCAyNywgMTYsIAotICAgIDI0NSwgOTcsIDQ3LCAyNywgMTYsIDIxMywgMiwgMjM0LCAyMDEsIDQ3LCAyNywgMTYsIDIxMywgMiwgMjU0LCA3LCA0NywgCi0gICAgMjcsIDE2LCAyMTksIDg1LCA0NywgMjcsIDE2LCAyMzQsIDQ3LCAyNTQsIDcsIDQ3LCAyNywgMTYsIDI0NywgMTU0LCAyNTMsIAotICAgIDE5MSwgNDcsIDI3LCAxNiwgMjMzLCAyNDcsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMzMsIDI0NywgMjU0LCA1OCwgNDcsIAotICAgIDI3LCAxNiwgMjMzLCAyNDcsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyNTMsIDIzMSwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIAotICAgIDI1MywgMjMzLCA0NywgMjcsIDE2LCAyNDcsIDE1MywgNDcsIDI3LCAxNiwgMjE2LCAxNjgsIDQ3LCAyNywgMTYsIDIxNywgCi0gICAgMTc3LCA0NywgMjcsIDE2LCAyMzQsIDExLCA0NywgMjcsIDE2LCAyMzMsIDU2LCAyNDUsIDkyLCAyNTAsIDgsIDQ3LCAyNywgCi0gICAgMTYsIDIzMywgNTYsIDI0NSwgMjUzLCAyNTAsIDksIDQ3LCAyNywgMTYsIDIzMywgNTYsIDIxNiwgMTcwLCAyNTAsIDksIDQ3LCAKLSAgICAyNywgMTYsIDIzMywgNTYsIDIxNywgMTg3LCAyNTAsIDksIDQ3LCAyNywgMTYsIDIzMywgNTYsIDIzNiwgMiwgMjUwLCA4LCAKLSAgICA0NywgMjcsIDE2LCAyNDIsIDEzNSwgMjI5LCAxNzgsIDI1NCwgNywgNDcsIDI3LCAxNiwgMjQyLCAxMzUsIDIyNiwgMTI5LCAKLSAgICAyNTMsIDE4MSwgNDcsIDI3LCAxNiwgMjQyLCAxMzUsIDIyNiwgMTI5LCAyNDcsIDIzNiwgNDcsIDI3LCAxNiwgMjQ3LCAxNzcsIAotICAgIDQ3LCAyNywgMTYsIDI0NywgMTc4LCAyMjYsIDEyOSwgMjUzLCAxODIsIDIzNCwgMjAxLCA0NywgMjcsIDE2LCAyNDcsIDE3OCwgCi0gICAgMjI2LCAxMjksIDI1MywgMTgyLCAyNTQsIDcsIDQ3LCAyNywgMTYsIDI0NywgMTc4LCAyMjYsIDEyOSwgMjQ3LCAyMzYsIDQ3LCAKLSAgICAyNywgMTYsIDIxNiwgMTc0LCA0NywgMjcsIDE2LCAyNTMsIDE4NiwgNDcsIDI3LCAxNiwgMjM2LCA5LCA0NywgMjcsIDE2LCAKLSAgICAyNDcsIDE5OCwgNDcsIDI3LCAxNiwgMjU0LCAxMTYsIDIyNSwgMTM0LCAyNTMsIDE4NywgNDcsIDI3LCAxNiwgMjU0LCAxMTYsIAotICAgIDI1MywgMTg0LCA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjUzLCAxODcsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyMzEsIDEwMSwgCi0gICAgNDcsIDI3LCAxNiwgMjU0LCAxMTYsIDIzMSwgMTEwLCA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjQyLCAxMzYsIDQ3LCAyNywgCi0gICAgMTYsIDI1NCwgMTE2LCAyNDIsIDEzMywgNDcsIDI3LCAxNiwgMjU0LCAxMTYsIDIyNSwgMTM0LCAyNDIsIDEzNiwgNDcsIDI3LCAKLSAgICAxNiwgMjMxLCAyMTQsIDIyNSwgNTAsIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjU0LCA2MCwgMjI1LCA1MCwgCi0gICAgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyNDcsIDIzNSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAKLSAgICAyNTQsIDYwLCAyNDcsIDIzNSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMTYsIDE2MywgMjQwLCAxMDAsIAotICAgIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMTYsIDE3NSwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIxNywgMTgxLCAyNDAsIDEwMCwgCi0gICAgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIxNywgMTgxLCAyMzMsIDU5LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIAotICAgIDIzMywgNTksIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjI1LCAxNzEsIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAKLSAgICAyMzUsIDE2NywgMjE3LCAyMDQsIDI0MCwgMTAxLCA0NywgMjcsIDE2LCAyNTMsIDIyOSwgMjE3LCAyMDQsIDI0MCwgMTAxLCAKLSAgICA0NywgMjcsIDE2LCAyNDQsIDE0MCwgMjE3LCAxNzgsIDQ3LCAyNywgMTYsIDI0NCwgMTQwLCAyMzAsIDIxMywgNDcsIDI3LCAKLSAgICAxNiwgMjQ0LCAxNDAsIDI0NywgMTgyLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjE0LCAyNDIsIDI0MCwgMTAwLCA0NywgMjcsIAotICAgIDE2LCAyMzEsIDIxNCwgMjI1LCA0OSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMjUsIDE3MSwgMjE3LCAKLSAgICAxODEsIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyNDIsIDEzMSwgMjMwLCA5OCwgMjUzLCAyMzIsIDQ3LCAyNywgMTYsIDI0MiwgCi0gICAgMTMxLCAyMzAsIDk4LCAyNDcsIDE1MiwgNDcsIDI3LCAxNiwgMjQ1LCAxMDYsIDIzNCwgMjUxLCAyNDMsIDIwNywgMjE0LCAKLSAgICAxMDUsIDQ3LCAyNywgMTYsIDIzNiwgOCwgNDcsIDI3LCAxNiwgMjM2LCA2LCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjUzLCAKLSAgICAxOTIsIDI0NywgMjM0LCAyNDAsIDk5LCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjQ3LCAxOTYsIDE5MywgNDcsIDI3LCAxNiwgCi0gICAgMjQzLCAyMDcsIDI0NywgMTk2LCAyMzAsIDIzLCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjMwLCAxOCwgMjQwLCAxMDAsIDQ3LCAKLSAgICAyNywgMTYsIDI0MywgMjA3LCAyNDcsIDE5NiwgMjQ3LCAyMTEsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyMjAsIDMwLCAyNDcsIAotICAgIDE5NSwgMjQ3LCAyMTEsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNDcsIDE5NiwgMjM0LCAxODgsIDQ3LCAyNywgMTYsIDI0MywgCi0gICAgMjA3LCAyNDcsIDE5NiwgMjEyLCAxNiwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI0NywgMTk2LCAyMjksIDY1LCAyMzQsIAotICAgIDIwMSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI0NywgMTk2LCAyMjksIDY1LCAyNTQsIDcsIDQ3LCAyNywgMTYsIDI0MywgCi0gICAgMjA3LCAyMzEsIDI1NCwgMjUwLCAxMCwgMjQ3LCAxODIsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyMzEsIDI1NCwgMjUwLCAKLSAgICAxMCwgMjMwLCAyMTMsIDQ3LCAyNywgMTYsIDI0NCwgOTEsIDIyMCwgMzAsIDI1MCwgMTAsIDIxNCwgMjQxLCA0NywgMjcsIAotICAgIDE2LCAyNDMsIDIwNywgMjIwLCAzMCwgMjUwLCAxMCwgMjE4LCAxMjUsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyMjksIDE3OSwgCi0gICAgNDcsIDI3LCAxNiwgMjUwLCAxMSwgMjExLCAyNDgsIDQ3LCAyNywgMTYsIDI1MCwgMTEsIDIzNCwgNDUsIDQ3LCAyNywgMTYsIAotICAgIDI1MCwgMTEsIDIxOSwgMTk3LCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjQwLCAxNDYsIDIxMywgMSwgMjE3LCAxODIsIDQ3LCAKLSAgICAyNywgMTYsIDI0MywgMjA3LCAyNDUsIDEwNywgMjUzLCAyNTMsIDQ3LCAyNywgMTYsIDIxMywgMSwgMjE2LCAxNjQsIDQ3LCAKLSAgICAyNywgMTYsIDI0NywgMTkwLCAyMTYsIDE2NCwgNDcsIDI3LCAxNiwgMjQ3LCAxOTAsIDIxNywgMTgyLCA0NywgMjcsIDE2LCAKLSAgICAyNDcsIDE5MCwgMjUzLCAyMzQsIDI0NSwgMjUzLCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyNDcsIDE5MCwgMjMwLCAyMTEsIAotICAgIDIxNywgMTg2LCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyNDcsIDE5MCwgMjQ3LCAxNzQsIDI0NSwgMywgMjQ3LCA5MywgNDcsIAotICAgIDI3LCAxNiwgMjQ3LCAxOTAsIDIxNiwgMTcyLCAyMjcsIDc3LCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyMTMsIDEsIDI1MywgCi0gICAgMjM0LCAyNDUsIDI1MywgMjQ3LCA5MywgNDcsIDI3LCAxNiwgMjEzLCAxLCAyMzAsIDIxMSwgMjE3LCAxODYsIDI0NywgOTMsIAotICAgIDQ3LCAyNywgMTYsIDIxMywgMSwgMjQ3LCAxNzQsIDI0NSwgMywgMjQ3LCA5MywgNDcsIDI3LCAxNiwgMjEzLCAxLCAyMTYsIAotICAgIDE3MiwgMjI3LCA3NywgMjQ3LCA5MywgNDcsIDI3LCAxNiwgMjQzLCAyNSwgMjQ3LCAxODksIDQ3LCAyNywgMTYsIDI0MywgCi0gICAgMjUsIDIxMywgMCwgNDcsIDI3LCAxNiwgMjQ3LCAxOTcsIDI1MywgMjM0LCAyMzEsIDEyLCA0NywgMjcsIDE2LCAyNDcsIAotICAgIDE5NywgMjUzLCAyMzQsIDIzMSwgMTM3LCA0NywgMjcsIDE2LCAyNDcsIDE5NywgMjQ3LCAxNTMsIDQ3LCAyNywgMTYsIDI0NywgCi0gICAgMTk3LCAyMTcsIDEzNSwgNDcsIDI3LCAxNiwgMjIwLCA4OSwgMjE3LCAxMzUsIDQ3LCAyNywgMTYsIDIyMCwgODksIDIxNywgCi0gICAgMTM2LCAyNDcsIDEzOCwgNDcsIDI3LCAxNiwgMjIwLCA4OSwgMjE3LCAxMzYsIDIxNiwgMTY1LCA0NywgMjcsIDE2LCAyMjAsIAotICAgIDg5LCAyMTcsIDEzNiwgMjE3LCAxNzUsIDQ3LCAyNywgMTYsIDIyMCwgODksIDI1MywgMTU5LCA0NywgMjcsIDE2LCAyMjAsIAotICAgIDg5LCAyNTMsIDE2MCwgMjQ3LCAxMzgsIDQ3LCAyNywgMTYsIDIyMCwgODksIDI1MywgMTYwLCAyMTYsIDE2NSwgNDcsIDI3LCAKLSAgICAxNiwgMjIwLCA4OSwgMjUzLCAxNjAsIDIxNywgMTc1LCA0NywgMjcsIDE2LCAyNDcsIDE3NSwgMjQzLCA2LCA0NywgMjcsIAotICAgIDE2LCAyNDcsIDE4MSwgMjI3LCAyLCA0NywgMjcsIDE2LCAyMTksIDc3LCA0NywgMjcsIDE2LCAyNTMsIDE3OCwgMTkzLCA0NywgCi0gICAgMjcsIDE2LCAyNTMsIDE3OCwgMjE0LCAxMDUsIDQ3LCAyNywgMTYsIDI1MywgMTc4LCAyNDMsIDExMCwgNDcsIDI3LCAxNiwgCi0gICAgMjUzLCAxNzgsIDI0NywgMjExLCA0NywgMjcsIDE2LCAyNTMsIDE3OCwgMjM0LCAxODgsIDQ3LCAyNywgMTYsIDI1MywgMTc4LCAKLSAgICAyMTIsIDE2LCA0NywgMjcsIDE2LCAyNTMsIDE3OCwgMjI5LCA2NCwgNDcsIDI3LCAxNiwgMjM0LCAxNjgsIDIyOSwgMTc4LCAKLSAgICAyMzEsIDEwOSwgNDcsIDI3LCAxNiwgMjM0LCAxNjksIDIyOSwgMTc4LCAyMzEsIDEwOSwgNDcsIDI3LCAxNiwgMjM0LCAxNjgsIAotICAgIDIyOSwgMTc4LCAyMzQsIDIwMSwgNDcsIDI3LCAxNiwgMjM0LCAxNjksIDIyOSwgMTc4LCAyMzQsIDIwMSwgNDcsIDI3LCAxNiwgCi0gICAgMjM0LCA0NywgMjM0LCAyMDEsIDQ3LCAyNywgMTYsIDI0MiwgMTM1LCAyMjksIDE3OCwgMjM0LCAyMDEsIDI3LCAxNiwgMjIwLCAKLSAgICA4MSwgMjUyLCA1NSwgMjcsIDE2LCA1MSwgMjUyLCA1NSwgMjcsIDE2LCA0MCwgMjUyLCA1NSwgMjcsIDE2LCAyMjMsIDIwMywgCi0gICAgNDAsIDI1MiwgNTUsIDI3LCAxNiwgMjQ4LCAxMDAsIDI1MiwgNTUsIDI3LCAxNiwgMjIwLCAxNzUsIDI1MiwgNTUsIDI3LCAKLSAgICAxNiwgNDIsIDIyMywgMjI4LCA1MiwgMjcsIDE2LCA0NiwgMjIzLCAyMjgsIDUyLCAyNywgMTYsIDIyMywgMjI4LCAyNDcsIAotICAgIDcyLCAyNywgMTYsIDI0OCwgMTQxLCAyMjIsIDgyLCAyNywgMTYsIDI0OCwgMTY1LCAyNTAsIDE4MSwgMjcsIDE2LCAyMjIsIAotICAgIDgyLCAyNywgMTYsIDI0OSwgMTcxLCAyNywgMTYsIDIyMywgMjI2LCAyNDQsIDgwLCAyNywgMTYsIDIyMywgMjI2LCAyNDQsIAotICAgIDc5LCAyNywgMTYsIDIyMywgMjI2LCAyNDQsIDc4LCAyNywgMTYsIDI0NCwgMTAwLCAyNywgMTYsIDI0NCwgMTAxLCA1NSwgCi0gICAgMjcsIDE2LCAyNTEsIDc2LCA3NywgMjcsIDE2LCAyNTAsIDIxMCwgMjcsIDE2LCAyNTEsIDg2LCAyNywgMTYsIDEyNSwgMjcsIAotICAgIDE2LCAyMjcsIDU5LCAyMTksIDEwMiwgMjcsIDE2LCAyMTYsIDIzLCAyMTksIDEwMiwgMjcsIDE2LCAyMTcsIDk2LCAyMTksIAotICAgIDEwMiwgMjcsIDE2LCAyNDMsIDIzNiwgMjE5LCAxMDIsIDI3LCAxNiwgMjQ0LCA0OSwgMjE5LCAxMDIsIDI3LCAxNiwgMjIwLCAKLSAgICA1MiwgMjE5LCAxMDIsIDI3LCAxNiwgMjIwLCA1MCwgMjQzLCAyMjAsIDI3LCAxNiwgMjQzLCAyMzQsIDI0MywgMjIwLCAyNywgCi0gICAgMTYsIDI0MywgMTc4LCAyNDksIDIwNywgMjcsIDE2LCAyNDMsIDE3OCwgMjQ5LCAyMDgsIDIyNywgNCwgMjU0LCA1MSwgMjcsIAotICAgIDE2LCAyNDMsIDE3OCwgMjQ5LCAyMDgsIDIyNywgNCwgMjUyLCA0MiwgMjcsIDE2LCAyNTAsIDI1MywgMjQ5LCAyMDcsIDI3LCAKLSAgICAxNiwgMjQ0LCAyMzEsIDI0OSwgMjA3LCAyNywgMTYsIDI0NCwgMjMxLCAyNDksIDIwOCwgMjI3LCA0LCAyNTQsIDUxLCAyNywgCi0gICAgMTYsIDI0NCwgMjMxLCAyNDksIDIwOCwgMjI3LCA0LCAyNTIsIDQyLCAyNywgMTYsIDI0NiwgMzgsIDI0OSwgMjA2LCAyNywgCi0gICAgMTYsIDI0NiwgMzgsIDI0OSwgMjA1LCAyNywgMTYsIDIzMCwgMTU1LCAyMzEsIDE1NSwgMjIzLCAyMTMsIDI3LCAxNiwgNTEsIAotICAgIDIyMCwgMjU0LCAyNywgMTYsIDUxLCAyNDQsIDM0LCAyNywgMTYsIDI0NCwgMzUsIDIxNSwgMTM0LCAyNywgMTYsIDI0NCwgCi0gICAgMzUsIDI0NiwgNjAsIDI3LCAxNiwgMjMwLCA5LCAyMTUsIDEzNCwgMjcsIDE2LCAyMzAsIDksIDI0NiwgNjAsIDI3LCAxNiwgCi0gICAgMjIwLCAyNTUsIDIxNSwgMTM0LCAyNywgMTYsIDIyMCwgMjU1LCAyNDYsIDYwLCAyNywgMTYsIDIyNCwgMTY3LCAxNjAsIAotICAgIDIyMCwgMjU0LCAyNywgMTYsIDIyNCwgMTY3LCAxNjAsIDI0NCwgMzQsIDI3LCAxNiwgMjQ5LCAxNTUsIDIxNywgNDAsIDI3LCAKLSAgICAxNiwgMjQ5LCAyNywgMjE3LCA0MCwgMjcsIDE2LCAyMjcsIDQsIDI1NCwgNTEsIDI3LCAxNiwgMjI3LCA0LCAyNTIsIDQyLCAKLSAgICAyNywgMTYsIDIyNCwgMTQ5LCAyNTQsIDUxLCAyNywgMTYsIDIyNCwgMTQ5LCAyNTIsIDQyLCAyNywgMTYsIDIzMCwgMTU4LCAKLSAgICAyMjMsIDIxMywgMjcsIDE2LCAyMTMsIDIzNiwgMjIzLCAyMTMsIDI3LCAxNiwgMTUxLCAyMjMsIDIxMywgMjcsIDE2LCAyMjQsIAotICAgIDE2NywgMjIzLCAyMTMsIDI3LCAxNiwgMjQ1LCAxNDYsIDIyMywgMjEzLCAyNywgMTYsIDIyMCwgNDYsIDIyMywgMjEzLCAyNywgCi0gICAgMTYsIDIxNywgMTEzLCAyMjMsIDIxMywgMjcsIDE2LCAyMjAsIDM4LCAyMjMsIDIxMywgMjcsIDE2LCAxMjIsIDI0MCwgMjAxLCAKLSAgICAyMTYsIDM2LCAyMjMsIDIxMywgMjcsIDE2LCAyMTMsIDE2NywgMjI4LCAxNTQsIDI3LCAxNiwgOTQsIDIyOCwgMTU0LCAyNywgCi0gICAgMTYsIDI0OSwgMjI5LCAyMTMsIDE2NywgMjI4LCAxNTQsIDI3LCAxNiwgNDEsIDIyOCwgMTU1LCAyMTMsIDIzOCwgMjcsIDE2LCAKLSAgICA0MSwgMjI4LCAxNTUsIDI1MSwgMTQ0LCAyNywgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgMTE0LCAyMTMsIDIzOCwgMjcsIAotICAgIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDExNCwgMjUxLCAxNDQsIDI3LCAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCA0MiwgCi0gICAgMjEzLCAyMzgsIDI3LCAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCA0MiwgMjUxLCAxNDQsIDI3LCAxNiwgMjE2LCAxODQsIAotICAgIDIyOCwgMTU1LCA0NiwgMjEzLCAyMzgsIDI3LCAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCA0NiwgMjUxLCAxNDQsIDI3LCAxNiwgCi0gICAgMjE2LCAxODQsIDIyOCwgMTU1LCAxMTksIDIxMywgMjM4LCAyNywgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgMTE5LCAyNTEsIAotICAgIDE0NCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDExNCwgNDYsIDIxMywgMjM4LCAyNywgMTYsIDIxNiwgMTg0LCAKLSAgICAyMjgsIDE1NSwgMTE0LCA0NiwgMjUxLCAxNDQsIDI3LCAxNiwgMjMwLCAxOTksIDIyOCwgMTU1LCAyMTMsIDIzOCwgMjcsIAotICAgIDE2LCAyMzAsIDE5OSwgMjI4LCAxNTUsIDI1MSwgMTQ0LCAyNywgMTYsIDIxNiwgMTgxLCAyMjgsIDE1NSwgMTE5LCAyMTMsIAotICAgIDIzOCwgMjcsIDE2LCAyMTYsIDE4MSwgMjI4LCAxNTUsIDExOSwgMjUxLCAxNDQsIDI3LCAxNiwgMjI2LCAxMzIsIDIyOCwgCi0gICAgMTU0LCAyNywgMTYsIDIxNCwgMTEzLCAyMjgsIDE1NCwgMjcsIDE2LCAyMjgsIDE1NSwgMjUxLCAxNDQsIDI3LCAxNiwgMjI4LCAKLSAgICA1OSwgMjI4LCAxNTQsIDI3LCAxNiwgMjQ5LCAxNzgsIDIyOCwgMTU1LCAyMTMsIDIzOCwgMjcsIDE2LCAyNDksIDE3OCwgCi0gICAgMjI4LCAxNTUsIDI1MSwgMTQ0LCAyNywgMTYsIDI1MSwgNzQsIDI3LCAxNiwgMjEzLCAyMzYsIDIyOCwgMTU4LCAyNywgMTYsIAotICAgIDE1MSwgMjI4LCAxNTgsIDI3LCAxNiwgMjI0LCAxNjcsIDIyOCwgMTU4LCAyNywgMTYsIDI0NSwgMTQ2LCAyMjgsIDE1OCwgCi0gICAgMjcsIDE2LCAyMjAsIDQ2LCAyMjgsIDE1OCwgMjcsIDE2LCAyMTcsIDExMywgMjI4LCAxNTgsIDI3LCAxNiwgMjIwLCAzOCwgCi0gICAgMjI4LCAxNTgsIDI3LCAxNiwgMTIyLCAyNDAsIDIwMSwgMjE2LCAzNiwgMjI4LCAxNTgsIDI3LCAxNiwgMzcsIDIxOSwgNzksIAotICAgIDI3LCAxNiwgMzcsIDIxOSwgMTcyLCAyMTksIDc5LCAyNywgMTYsIDM3LCAyMTYsIDE5MiwgMjcsIDE2LCAzNywgMjE2LCAKLSAgICAxOTEsIDI3LCAxNiwgMzcsIDIxNiwgMTkwLCAyNywgMTYsIDI0NCwgNzAsIDIxNiwgMTkyLCAyNywgMTYsIDI0NCwgNzAsIAotICAgIDIxNiwgMTkxLCAyNywgMTYsIDI0NCwgNzAsIDIxNiwgMTkwLCAyNywgMTYsIDM3LCAyNTMsIDEwNSwgMjQ3LCA3NCwgMjcsIAotICAgIDE2LCAzNywgMjQ0LCA0MSwgMjcsIDE2LCAzNywgMjQ0LCA0MCwgMjcsIDE2LCAzNywgMjQ0LCAzOSwgMjcsIDE2LCAzNywgCi0gICAgMjQ0LCAzOCwgMjcsIDE2LCAzNywgMjQ0LCAzNywgMjcsIDE2LCAyNTEsIDIzNCwgMjUxLCAyNTAsIDI3LCAxNiwgMjQ1LCAKLSAgICAxMDEsIDI1MSwgMjUwLCAyNywgMTYsIDI1MSwgMjM0LCAyMTcsIDY1LCAyNywgMTYsIDI0NSwgMTAxLCAyMTcsIDY1LCAyNywgCi0gICAgMTYsIDI1MSwgMjM0LCAyMjAsIDgsIDI3LCAxNiwgMjQ1LCAxMDEsIDIyMCwgOCwgMjcsIDE2LCAyNTEsIDIzNCwgMjI1LCAKLSAgICAyNDcsIDI3LCAxNiwgMjQ1LCAxMDEsIDIyNSwgMjQ3LCAyNywgMTYsIDM3LCAyNTQsIDE3NCwgMjcsIDE2LCAzNywgMjE5LCAKLSAgICAxMDQsIDI3LCAxNiwgMzcsIDIxNywgMTkxLCAyNywgMTYsIDM3LCAyMTksIDEwNSwgMjcsIDE2LCAzNywgMjMxLCAyMjUsIAotICAgIDI3LCAxNiwgMzcsIDIzMSwgMjI0LCAyNywgMTYsIDM3LCAyNTQsIDE3MywgMjcsIDE2LCAzNywgMjMyLCAxNjcsIDI3LCAxNiwgCi0gICAgMjUzLCAxNjksIDIxNSwgMTM0LCAyNywgMTYsIDI1MywgMTY5LCAyNDYsIDYwLCAyNywgMTYsIDM3LCAyNDcsIDg5LCAyNywgCi0gICAgMTYsIDM3LCAyMjMsIDEyOCwgMjcsIDE2LCAzNywgMjQ0LCAyNywgMjcsIDE2LCAzNywgMjIwLCA0LCAyNywgMTYsIDM3LCAKLSAgICAyNTEsIDIxNSwgMjcsIDE2LCAzNywgNTEsIDIxNiwgMjMyLCAyNywgMTYsIDM3LCAyMTYsIDE2OSwgMjE2LCAyMzIsIDI3LCAKLSAgICAxNiwgMjIzLCAxMzIsIDI3LCAxNiwgMjE5LCAyMCwgMjcsIDE2LCAyMTIsIDE1MiwgMjcsIDE2LCAyMjUsIDIzOSwgMjcsIAotICAgIDE2LCAyMzEsIDkyLCAyNywgMTYsIDI0MywgMjQyLCAyNywgMTYsIDI0OSwgNzgsIDI3LCAxNiwgMjQ4LCAyOSwgMjcsIDE2LCAKLSAgICAyNDIsIDEyNiwgMjI4LCAxNTksIDIyMCwgMjMsIDI3LCAxNiwgMjQyLCAxMjYsIDIyOCwgMTU5LCAyMjgsIDE4NiwgMjIwLCAKLSAgICAyMywgMjcsIDE2LCAyMTYsIDIxMywgMjcsIDE2LCAyMTYsIDU5LCAyNywgMTYsIDIzNSwgMTkxLCAyMTYsIDU5LCAyNywgMTYsIAotICAgIDIxNiwgNjAsIDIyMCwgMjMsIDI3LCAxNiwgMjE2LCA2MCwgMjE1LCAxMzQsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCA0NCwgCi0gICAgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDQxLCAyNywgMTYsIDIyNywgMTUsIDIxOSwgNDAsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCAKLSAgICAzOSwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDM4LCAyNywgMTYsIDIyNywgMTUsIDIxOSwgMzcsIDI3LCAxNiwgMjI3LCAxNSwgCi0gICAgMjE5LCAzNiwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDM1LCAyNywgMTYsIDIyNywgMTUsIDIxOSwgMzQsIDI3LCAxNiwgMjI3LCAKLSAgICAxNSwgMjE5LCA0MywgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDQyLCAyNywgMTYsIDI0MSwgMjI5LCAyNywgMTYsIDIyOSwgCi0gICAgMTg2LCAyNywgMTYsIDI0NSwgMTAxLCA2NSwgMjE5LCA3MywgMjcsIDE2LCAyNDgsIDIyLCAyMjAsIDIzLCAyNywgMTYsIDM3LCAKLSAgICAxMTksIDI1MSwgOTUsIDI3LCAxNiwgMzcsIDExNCwgMjUxLCA5NSwgMjcsIDE2LCAzNywgMjQxLCAyMzksIDI3LCAxNiwgMzcsIAotICAgIDIxOSwgMjUxLCAyMjUsIDE3NSwgMjcsIDE2LCAyMjYsIDkxLCA3NywgMjcsIDE2LCAyMjYsIDkxLCAxMTQsIDc3LCAyNywgCi0gICAgMTYsIDE1MSwgMjI2LCA5MSwgNzcsIDI3LCAxNiwgMjQyLCAxNTgsIDIxNSwgMTM0LCAyNywgMTYsIDI0MiwgMTU4LCAyNDYsIAotICAgIDYwLCAyNywgMTYsIDIsIDI0NCwgNjksIDI3LCAxNiwgMjQ4LCAxMjUsIDI3LCAxNiwgMjQ4LCAxMjYsIDI1NCwgNjMsIDI3LCAKLSAgICAxNiwgMjMxLCAxOTcsIDI3LCAxNiwgMjMyLCAxODIsIDI3LCAxNiwgMjUxLCA3MSwgMjcsIDE2LCAyMjEsIDc0LCAyMTMsIAotICAgIDIzOCwgMjcsIDE2LCAyMjEsIDc0LCAyNTEsIDE0NCwgMjcsIDE2LCAyMzAsIDI1MywgMjcsIDE2LCAyMzAsIDI1NCwgMjUxLCAKLSAgICAxNDQsIDI3LCAxNiwgMjIxLCA2OCwgMjEzLCAyMzgsIDI3LCAxNiwgMjIxLCA2OCwgMjUxLCAxNDQsIDI3LCAxNiwgMjQzLCAKLSAgICAxOTIsIDIxMywgMjM4LCAyNywgMTYsIDI0MywgMTkyLCAyNTEsIDE0NCwgMjcsIDE2LCAyMzIsIDE4MywgMjI2LCA1NSwgCi0gICAgMjIzLCAyMTMsIDI3LCAxNiwgMjMyLCAxODMsIDIzNiwgMCwgMjIzLCAyMTMsIDI3LCAxNiwgMjUxLCA3MiwgMjIzLCAyMTMsIAotICAgIDI3LCAxNiwgMjIxLCA3NCwgMjIzLCAyMTMsIDI3LCAxNiwgMjMwLCAyNTQsIDIyMywgMjEzLCAyNywgMTYsIDIyMSwgNjgsIAotICAgIDIyMywgMjEzLCAyNywgMTYsIDIxNywgMjAyLCAyMjYsIDUzLCAyNDksIDQ4LCAyMjUsIDU4LCAyMjYsIDU0LCAyNywgMTYsIAotICAgIDIxNywgMjAyLCAyMjYsIDUzLCAyNDksIDQ4LCAyMjUsIDU4LCAyMzUsIDI1NSwgMjcsIDE2LCAyMTcsIDIwMiwgMjI2LCA1MywgCi0gICAgMjQ5LCA0OCwgMjI1LCA1OCwgMjI2LCA1NSwgMjQ3LCAxNjMsIDI3LCAxNiwgMjE3LCAyMDIsIDIzNSwgMjU0LCAyNDksIDQ4LCAKLSAgICAyMjUsIDU4LCAyMjYsIDU0LCAyNywgMTYsIDIxNywgMjAyLCAyMzUsIDI1NCwgMjQ5LCA0OCwgMjI1LCA1OCwgMjM1LCAyNTUsIAotICAgIDI3LCAxNiwgMjE3LCAyMDIsIDIzNSwgMjU0LCAyNDksIDQ4LCAyMjUsIDU4LCAyMzYsIDAsIDI0NywgMTYzLCAyNywgMTYsIAotICAgIDIxNywgMjAyLCAyMzUsIDI1NCwgMjQ5LCA0OCwgMjI1LCA1OCwgMjM2LCAwLCAyNDcsIDE2MiwgMjcsIDE2LCAyMTcsIDIwMiwgCi0gICAgMjM1LCAyNTQsIDI0OSwgNDgsIDIyNSwgNTgsIDIzNiwgMCwgMjQ3LCAxNjEsIDI3LCAxNiwgMjQ5LCA3MywgMjcsIDE2LCAKLSAgICAyNDIsIDEwMywgMjUwLCAyNTMsIDI0OSwgMjA3LCAyNywgMTYsIDI0MiwgMTAzLCAyNDQsIDIzMSwgMjQ5LCAyMDcsIDI3LCAKLSAgICAxNiwgNDEsIDI1MywgNzQsIDI3LCAxNiwgMjE0LCAxMzIsIDI3LCAxNiwgMjI1LCAxNDgsIDI3LCAxNiwgMjQ5LCAxOTgsIAotICAgIDI3LCAxNiwgMjIyLCAxMjEsIDI3LCAxNiwgMjQ5LCAyMDIsIDI3LCAxNiwgMjE2LCAyMjAsIDI3LCAxNiwgMjI1LCAxMjIsIAotICAgIDI3LCAxNiwgMjI1LCAxMjMsIDI0NCwgMjksIDI3LCAxNiwgMjIyLCAxMjIsIDI0NCwgMjksIDI3LCAxNiwgMjE2LCAyMjEsIAotICAgIDIyMywgMjEwLCAyNywgMTYsIDIyNiwgMzksIDIxOSwgMTEsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE3NCwgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTYzLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNTMsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDE0NiwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTM4LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzIsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDEzMSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTMwLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxMjksIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE3MywgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTcyLCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxNzEsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE3MCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTY5LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNjgsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2NywgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTY2LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNjUsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDE2NCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTYyLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNjEsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDE2MCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTU5LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxNTgsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDEzNywgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTM2LCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxMzUsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDEzNCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTMzLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNzQsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE2MywgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTQ2LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxMzgsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDEzMSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTMwLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNzIsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE3MSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTcwLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxNjksIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE2NiwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTY1LCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNjQsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1OSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTU4LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNTcsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1NiwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTU1LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNTQsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDE1MiwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTUxLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNTAsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE0OSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTQ4LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxNDcsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE0NSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTQ0LCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNDMsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE0MiwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTQxLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNDAsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzOSwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTM3LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxMzYsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDEzNSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTM0LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxMzMsIDM3LCAyNSwgCi0gICAgMjcsIDIxNiwgMTY2LCAzNywgMjUsIDI3LCAyMTcsIDE3NiwgMzcsIDI1LCAyNywgMjI2LCA2MywgMjUsIDI3LCAyMzMsIDU1LCAKLSAgICAyMzAsIDIxMiwgMzEsIDI0NSwgMTc5LCAyNDcsIDE3NiwgMzEsIDI0MSwgMjA2LCAyNDUsIDE3OSwgMjQ3LCAxNzYsIDMxLCAKLSAgICAyNDAsIDIwNCwgMjQ1LCAxNzksIDI0NywgMTc2LCAzMSwgMjQ1LCAxNzgsIDI0MSwgMjA3LCAyNDcsIDE3NiwgMzEsIDI0NSwgCi0gICAgMTc4LCAyNDAsIDIwMywgMjQ3LCAxNzYsIDMxLCAyNDUsIDE3OSwgMTcwLCAzMSwgMjUwLCAxMDgsIDE3MCwgMzEsIDI0MywgCi0gICAgMjAwLCAyNDksIDIyOCwgMTcwLCAzMSwgMjMwLCAyNDYsIDE3MCwgMzEsIDI1MiwgNTAsIDE3MCwgMzEsIDIzNCwgMTg1LCAKLSAgICAyMjAsIDcsIDE3MCwgMzEsIDI0OSwgMTE4LCAxNzAsIDMxLCAyNTMsIDE0OCwgMTcwLCAzMSwgMjI3LCAyOSwgMTcwLCAzMSwgCi0gICAgMjUxLCA4MCwgMjI2LCAyNTQsIDE3MCwgMzEsIDI0OCwgMjQsIDE2NywgMjQ3LCAxMzEsIDE3MCwgMzEsIDI0NywgMTI4LCAKLSAgICAxNzAsIDMxLCAyMTIsIDIxMywgMTcwLCAzMSwgMjM1LCAyNDMsIDE3MCwgMzEsIDIyNiwgNzIsIDE3MCwgMzEsIDIyNCwgMjAsIAotICAgIDE3MCwgMzEsIDI0OSwgMTI4LCAxNzAsIDMxLCAyNDEsIDQ2LCAyNTIsIDEwMSwgMTcwLCAzMSwgMjE0LCA0MywgMTcwLCAzMSwgCi0gICAgMjQ0LCA4LCAxNzAsIDMxLCAyNTQsIDE1MSwgMTcwLCAzMSwgMjIzLCAyMzksIDE3MCwgMzEsIDIyMywgMjE3LCAxNzAsIDMxLCAKLSAgICAyNDUsIDE3NywgMTcwLCAzMSwgMjM1LCA1NiwgMTcwLCAzMSwgMjQ5LCAxMjMsIDE3MCwgMzEsIDI0NSwgMTAwLCAxNzAsIAotICAgIDMxLCAyNDYsIDcsIDE3MCwgMzEsIDI1MCwgODEsIDE3MCwgMzEsIDI0OCwgMzMsIDE3MCwgMzEsIDIyLCAyMjMsIDIxNiwgCi0gICAgMTcwLCAzMSwgMjI2LCAyMDUsIDE3MCwgMzEsIDIzMywgNTgsIDE3MCwgMzEsIDI0OSwgMTkxLCAxNzAsIDMxLCAyMzQsIDg2LCAKLSAgICAxNzAsIDMxLCAyNDMsIDYyLCAxNzAsIDMxLCAyMTksIDUyLCAxNzAsIDMxLCAyMjUsIDE2LCAxNzAsIDMxLCAyNDMsIDE5OSwgCi0gICAgMTcwLCAzMSwgMjIzLCAyMTgsIDE3MCwgMzEsIDIzMywgOTUsIDE2NywgMjMwLCAyMjcsIDE3MCwgMzEsIDIyMywgMjE0LCAKLSAgICAxNzAsIDMxLCAyNDIsIDE0NCwgMjExLCAyMTEsIDIzMSwgMTQxLCAxNzAsIDMxLCAyNDUsIDEwMiwgMTcwLCAzMSwgMjE5LCAKLSAgICA2NCwgMTcwLCAzMSwgMjQyLCAxMDUsIDE3MCwgMzEsIDI0NSwgOTQsIDE3MCwgMzEsIDIyNiwgMTA4LCAxNzAsIDMxLCAyMjMsIAotICAgIDEyMiwgMTcwLCAzMSwgMjQ0LCAyOCwgMTcwLCAzMSwgMjE0LCAyNDAsIDE2NywgMjE0LCAyOCwgMTcwLCAzMSwgMjQ5LCAKLSAgICAxMzIsIDE3MCwgMzEsIDIzMSwgMTU0LCAxNzAsIDMxLCAyNDUsIDI3LCAxNzAsIDMxLCAyMTUsIDE0MywgMTcwLCAzMSwgCi0gICAgMjQ3LCAxNjQsIDE3MCwgMzEsIDI0OSwgMTkzLCAyMzAsIDE4MCwgMTcwLCAzMSwgMjQyLCA4NywgMTcwLCAzMSwgMjQzLCAKLSAgICA2MywgMjM1LCAyNTEsIDE3MCwgMzEsIDIzMSwgMjA0LCAxNzAsIDMxLCAyNTQsIDE3MCwgMTcwLCAzMSwgMjQ1LCAxMTUsIAotICAgIDE3MCwgMzEsIDI0NiwgNjMsIDE3MCwgMzEsIDIxNCwgMjYsIDE3MCwgMzEsIDIyMCwgNzgsIDE3MCwgMzEsIDIzNSwgMjE5LCAKLSAgICAxNzAsIDMxLCAyNDcsIDI0OSwgMTcwLCAzMSwgMjQ4LCAxMDUsIDE3MCwgMzEsIDI0NywgMTYwLCAxNzAsIDMxLCAyNDQsIAotICAgIDI1MiwgMTcwLCAzMSwgMjIxLCAzNiwgMTcwLCAzMSwgMjE5LCA2OCwgMTcwLCAzMSwgMjQxLCAyNDEsIDE3MCwgMzEsIDI0OSwgCi0gICAgMTUxLCAxNzAsIDMxLCAyNDksIDE4OCwgMTcwLCAzMSwgMjQ0LCAxNDUsIDE3MCwgMzEsIDI1NCwgMTE3LCAxNzAsIDMxLCAKLSAgICAyNDksIDE1MCwgMTcwLCAzMSwgMjI3LCA2MywgMjE3LCAxNDksIDIxNCwgMjE5LCAxNzAsIDMxLCAyNDcsIDE4NCwgMTcwLCAKLSAgICAzMSwgMjMzLCAxNDcsIDE3MCwgMzEsIDI0MywgMjM5LCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAxMTYsIAotICAgIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIDEwOSwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgCi0gICAgMTY2LCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAxNjMsIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgCi0gICAgMjEsIDE4MCwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgMTg5LCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAKLSAgICAxNDUsIDIxLCAxOTgsIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIDE5NSwgMjQ5LCA4OCwgMjIzLCAxMDMsIAotICAgIDIxNSwgMTQ1LCAyMSwgMjAwLCAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxMTYsIDI0OSwgODgsIDIyMywgCi0gICAgMTAzLCAyMTcsIDE5NiwgMjEsIDEwOSwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTY2LCAyNDksIDg4LCAKLSAgICAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxNjMsIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE4MCwgMjQ5LCAKLSAgICA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTg5LCAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxOTgsIAotICAgIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE5NSwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgCi0gICAgMjAwLCAxNCwgMjIsIDYsIDYxLCAxNCwgMjIsIDYsIDI1MywgNzQsIDE0LCAyMiwgNiwgMjUwLCAyNTIsIDE0LCAyMiwgNiwgCi0gICAgMjQ5LCAzLCAxNCwgMjIsIDYsIDc0LCAxNCwgMjIsIDYsIDI0NCwgMjMwLCAxNCwgMjIsIDYsIDI0MywgMTc3LCAxNCwgMjIsIAotICAgIDYsIDI0MiwgNDEsIDE0LCAyMiwgNiwgNzIsIDE0LCAyMiwgNiwgMjM1LCAxNDIsIDE0LCAyMiwgNiwgMjM1LCAyNywgMTQsIAotICAgIDIyLCA2LCAxNTAsIDE0LCAyMiwgNiwgMTgzLCAxNCwgMjIsIDYsIDIwNCwgMTQsIDIyLCA2LCA3NSwgMTQsIDIyLCA2LCAKLSAgICAyMjYsIDIyOSwgMTQsIDIyLCA2LCAyMjQsIDI0MCwgMTQsIDIyLCA2LCAxNDksIDE0LCAyMiwgNiwgMTk3LCAxNCwgMjIsIDYsIAotICAgIDIxOCwgOTksIDE0LCAyMiwgNiwgNjksIDE0LCAyMiwgNiwgMjE1LCA3OSwgMTQsIDIyLCA2LCAyMTQsIDgyLCAxNCwgMjIsIAotICAgIDYsIDIxMywgMTY2LCAxNCwgMjIsIDYsIDIxMywgMTA1LCAxNCwgMjIsIDYsIDIxMiwgMTUyLCAxNCwgMjIsIDMsIDYxLCAxNCwgCi0gICAgMjIsIDMsIDI1MywgNzQsIDE0LCAyMiwgMywgMjUwLCAyNTIsIDE0LCAyMiwgMywgMjQ5LCAzLCAxNCwgMjIsIDMsIDc0LCAKLSAgICAxNCwgMjIsIDMsIDI0NCwgMjMwLCAxNCwgMjIsIDMsIDI0MywgMTc3LCAxNCwgMjIsIDMsIDI0MiwgNDEsIDE0LCAyMiwgMywgCi0gICAgNzIsIDE0LCAyMiwgMywgMjM1LCAxNDIsIDE0LCAyMiwgMywgMjM1LCAyNywgMTQsIDIyLCAzLCAxNTAsIDE0LCAyMiwgMywgCi0gICAgMTgzLCAxNCwgMjIsIDMsIDIwNCwgMTQsIDIyLCAzLCA3NSwgMTQsIDIyLCAzLCAyMjYsIDIyOSwgMTQsIDIyLCAzLCAyMjQsIAotICAgIDI0MCwgMTQsIDIyLCAzLCAxNDksIDE0LCAyMiwgMywgMTk3LCAxNCwgMjIsIDMsIDIxOCwgOTksIDE0LCAyMiwgMywgNjksIAotICAgIDE0LCAyMiwgMywgMjE1LCA3OSwgMTQsIDIyLCAzLCAyMTQsIDgyLCAxNCwgMjIsIDMsIDIxMywgMTY2LCAxNCwgMjIsIDMsIAotICAgIDIxMywgMTA1LCAxNCwgMjIsIDMsIDIxMiwgMTUyLCAxNCwgMzIsIDYsIDYxLCAxNCwgMzIsIDYsIDI1MywgNzQsIDE0LCAzMiwgCi0gICAgNiwgMjUwLCAyNTIsIDE0LCAzMiwgNiwgMjQ5LCAzLCAxNCwgMzIsIDYsIDc0LCAxNCwgMzIsIDYsIDI0NCwgMjMwLCAxNCwgCi0gICAgMzIsIDYsIDI0MywgMTc3LCAxNCwgMzIsIDYsIDI0MiwgNDEsIDE0LCAzMiwgNiwgNzIsIDE0LCAzMiwgNiwgMjM1LCAxNDIsIAotICAgIDE0LCAzMiwgNiwgMjM1LCAyNywgMTQsIDMyLCA2LCAxNTAsIDE0LCAzMiwgNiwgMTgzLCAxNCwgMzIsIDYsIDIwNCwgMTQsIAotICAgIDMyLCA2LCA3NSwgMTQsIDMyLCA2LCAyMjYsIDIyOSwgMTQsIDMyLCA2LCAyMjQsIDI0MCwgMTQsIDMyLCA2LCAxNDksIDE0LCAKLSAgICAzMiwgNiwgMTk3LCAxNCwgMzIsIDYsIDIxOCwgOTksIDE0LCAzMiwgNiwgNjksIDE0LCAzMiwgNiwgMjE1LCA3OSwgMTQsIAotICAgIDMyLCA2LCAyMTQsIDgyLCAxNCwgMzIsIDYsIDIxMywgMTY2LCAxNCwgMzIsIDYsIDIxMywgMTA1LCAxNCwgMzIsIDYsIDIxMiwgCi0gICAgMTUyLCAxNCwgMzIsIDMsIDYxLCAxNCwgMzIsIDMsIDI1MywgNzQsIDE0LCAzMiwgMywgMjUwLCAyNTIsIDE0LCAzMiwgMywgCi0gICAgMjQ5LCAzLCAxNCwgMzIsIDMsIDc0LCAxNCwgMzIsIDMsIDI0NCwgMjMwLCAxNCwgMzIsIDMsIDI0MywgMTc3LCAxNCwgMzIsIAotICAgIDMsIDcyLCAxNCwgMzIsIDMsIDIzNSwgMTQyLCAxNCwgMzIsIDMsIDIzNSwgMjcsIDE0LCAzMiwgMywgMTUwLCAxNCwgMzIsIAotICAgIDMsIDE4MywgMTQsIDMyLCAzLCAyMDQsIDE0LCAzMiwgMywgNzUsIDE0LCAzMiwgMywgMjI2LCAyMjksIDE0LCAzMiwgMywgCi0gICAgMjI0LCAyNDAsIDE0LCAzMiwgMywgMTQ5LCAxNCwgMzIsIDMsIDE5NywgMTQsIDMyLCAzLCAyMTgsIDk5LCAxNCwgMzIsIDMsIAotICAgIDY5LCAxNCwgMzIsIDMsIDIxNSwgNzksIDE0LCAzMiwgMywgMjE0LCA4MiwgMTQsIDMyLCAzLCAyMTMsIDE2NiwgMTQsIDMyLCAKLSAgICAzLCAyMTMsIDEwNSwgMTQsIDMyLCAzLCAyMTIsIDE1MiwgMTQsIDIyLCAzMiwgNiwgNjEsIDE0LCAyMiwgMzIsIDYsIDI1MywgCi0gICAgNzQsIDE0LCAyMiwgMzIsIDYsIDI1MCwgMjUyLCAxNCwgMjIsIDMyLCA2LCAyNDksIDMsIDE0LCAyMiwgMzIsIDYsIDc0LCAKLSAgICAxNCwgMjIsIDMyLCA2LCAyNDQsIDIzMCwgMTQsIDIyLCAzMiwgNiwgMjQzLCAxNzcsIDE0LCAyMiwgMzIsIDYsIDI0MiwgNDEsIAotICAgIDE0LCAyMiwgMzIsIDYsIDcyLCAxNCwgMjIsIDMyLCA2LCAyMzUsIDE0MiwgMTQsIDIyLCAzMiwgNiwgMjM1LCAyNywgMTQsIAotICAgIDIyLCAzMiwgNiwgMTUwLCAxNCwgMjIsIDMyLCA2LCAxODMsIDE0LCAyMiwgMzIsIDYsIDIwNCwgMTQsIDIyLCAzMiwgNiwgCi0gICAgNzUsIDE0LCAyMiwgMzIsIDYsIDIyNiwgMjI5LCAxNCwgMjIsIDMyLCA2LCAyMjQsIDI0MCwgMTQsIDIyLCAzMiwgNiwgMTQ5LCAKLSAgICAxNCwgMjIsIDMyLCA2LCAxOTcsIDE0LCAyMiwgMzIsIDYsIDIxOCwgOTksIDE0LCAyMiwgMzIsIDYsIDY5LCAxNCwgMjIsIAotICAgIDMyLCA2LCAyMTUsIDc5LCAxNCwgMjIsIDMyLCA2LCAyMTQsIDgyLCAxNCwgMjIsIDMyLCA2LCAyMTMsIDE2NiwgMTQsIDIyLCAKLSAgICAzMiwgNiwgMjEzLCAxMDUsIDE0LCAyMiwgMzIsIDYsIDIxMiwgMTUyLCAxNCwgMjIsIDMyLCAzLCA2MSwgMTQsIDIyLCAzMiwgCi0gICAgMywgMjUzLCA3NCwgMTQsIDIyLCAzMiwgMywgMjUwLCAyNTIsIDE0LCAyMiwgMzIsIDMsIDI0OSwgMywgMTQsIDIyLCAzMiwgCi0gICAgMywgNzQsIDE0LCAyMiwgMzIsIDMsIDI0NCwgMjMwLCAxNCwgMjIsIDMyLCAzLCAyNDMsIDE3NywgMTQsIDIyLCAzMiwgMywgCi0gICAgMjQyLCA0MSwgMTQsIDIyLCAzMiwgMywgNzIsIDE0LCAyMiwgMzIsIDMsIDIzNSwgMTQyLCAxNCwgMjIsIDMyLCAzLCAyMzUsIAotICAgIDI3LCAxNCwgMjIsIDMyLCAzLCAxNTAsIDE0LCAyMiwgMzIsIDMsIDE4MywgMTQsIDIyLCAzMiwgMywgMjA0LCAxNCwgMjIsIAotICAgIDMyLCAzLCA3NSwgMTQsIDIyLCAzMiwgMywgMjI2LCAyMjksIDE0LCAyMiwgMzIsIDMsIDIyNCwgMjQwLCAxNCwgMjIsIDMyLCAKLSAgICAzLCAxNDksIDE0LCAyMiwgMzIsIDMsIDE5NywgMTQsIDIyLCAzMiwgMywgMjE4LCA5OSwgMTQsIDIyLCAzMiwgMywgNjksIAotICAgIDE0LCAyMiwgMzIsIDMsIDIxNSwgNzksIDE0LCAyMiwgMzIsIDMsIDIxNCwgODIsIDE0LCAyMiwgMzIsIDMsIDIxMywgMTY2LCAKLSAgICAxNCwgMjIsIDMyLCAzLCAyMTMsIDEwNSwgMTQsIDIyLCAzMiwgMywgMjEyLCAxNTIsIDE0LCAxMTMsIDYsIDYxLCAxNCwgCi0gICAgMTEzLCA2LCAyNTAsIDI1MiwgMTQsIDExMywgNiwgMjQ5LCAzLCAxNCwgMTEzLCA2LCAyNDMsIDE3NywgMTQsIDExMywgNiwgCi0gICAgMjM1LCAxNDIsIDE0LCAxMTMsIDYsIDIzNSwgMjcsIDE0LCAxMTMsIDYsIDIwNCwgMTQsIDExMywgNiwgNzUsIDE0LCAxMTMsIAotICAgIDYsIDIyNiwgMjI5LCAxNCwgMTEzLCA2LCAyMjQsIDI0MCwgMTQsIDExMywgNiwgMTk3LCAxNCwgMTEzLCA2LCAyMTgsIDk5LCAKLSAgICAxNCwgMTEzLCA2LCA2OSwgMTQsIDExMywgNiwgMjE1LCA3OSwgMTQsIDExMywgNiwgMjE0LCA4MiwgMTQsIDExMywgNiwgCi0gICAgMjEzLCAxNjYsIDE0LCAxMTMsIDYsIDIxMywgMTA1LCAxNCwgMTEzLCA2LCAyMTIsIDE1MiwgMTQsIDExMywgMywgNjEsIDE0LCAKLSAgICAxMTMsIDMsIDI1MywgNzQsIDE0LCAxMTMsIDMsIDI1MCwgMjUyLCAxNCwgMTEzLCAzLCAyNDksIDMsIDE0LCAxMTMsIDMsIAotICAgIDI0NCwgMjMwLCAxNCwgMTEzLCAzLCAyNDIsIDQxLCAxNCwgMTEzLCAzLCA3MiwgMTQsIDExMywgMywgMjM1LCAxNDIsIDE0LCAKLSAgICAxMTMsIDMsIDIzNSwgMjcsIDE0LCAxMTMsIDMsIDE1MCwgMTQsIDExMywgMywgMTgzLCAxNCwgMTEzLCAzLCAyMDQsIDE0LCAKLSAgICAxMTMsIDMsIDIyNiwgMjI5LCAxNCwgMTEzLCAzLCAyMjQsIDI0MCwgMTQsIDExMywgMywgMTQ5LCAxNCwgMTEzLCAzLCAxOTcsIAotICAgIDE0LCAxMTMsIDMsIDIxOCwgOTksIDE0LCAxMTMsIDMsIDY5LCAxNCwgMTEzLCAzLCAyMTUsIDc5LCAxNCwgMTEzLCAzLCAKLSAgICAyMTQsIDgyLCAxNCwgMTEzLCAzLCAyMTMsIDE2NiwgMTQsIDExMywgMywgMjEzLCAxMDUsIDE0LCAxMTMsIDMsIDIxMiwgCi0gICAgMTUyLCAxNCwgMjIsIDExMywgNiwgNjEsIDE0LCAyMiwgMTEzLCA2LCAyNTMsIDc0LCAxNCwgMjIsIDExMywgNiwgMjUwLCAKLSAgICAyNTIsIDE0LCAyMiwgMTEzLCA2LCAyNDksIDMsIDE0LCAyMiwgMTEzLCA2LCA3NCwgMTQsIDIyLCAxMTMsIDYsIDI0NCwgCi0gICAgMjMwLCAxNCwgMjIsIDExMywgNiwgMjQzLCAxNzcsIDE0LCAyMiwgMTEzLCA2LCAyNDIsIDQxLCAxNCwgMjIsIDExMywgNiwgCi0gICAgNzIsIDE0LCAyMiwgMTEzLCA2LCAyMzUsIDE0MiwgMTQsIDIyLCAxMTMsIDYsIDIzNSwgMjcsIDE0LCAyMiwgMTEzLCA2LCAKLSAgICAxNTAsIDE0LCAyMiwgMTEzLCA2LCAxODMsIDE0LCAyMiwgMTEzLCA2LCAyMDQsIDE0LCAyMiwgMTEzLCA2LCA3NSwgMTQsIAotICAgIDIyLCAxMTMsIDYsIDIyNiwgMjI5LCAxNCwgMjIsIDExMywgNiwgMjI0LCAyNDAsIDE0LCAyMiwgMTEzLCA2LCAxNDksIDE0LCAKLSAgICAyMiwgMTEzLCA2LCAxOTcsIDE0LCAyMiwgMTEzLCA2LCAyMTgsIDk5LCAxNCwgMjIsIDExMywgNiwgNjksIDE0LCAyMiwgCi0gICAgMTEzLCA2LCAyMTUsIDc5LCAxNCwgMjIsIDExMywgNiwgMjE0LCA4MiwgMTQsIDIyLCAxMTMsIDYsIDIxMywgMTY2LCAxNCwgCi0gICAgMjIsIDExMywgNiwgMjEzLCAxMDUsIDE0LCAyMiwgMTEzLCA2LCAyMTIsIDE1MiwgMTQsIDIyLCAxMTMsIDMsIDYxLCAxNCwgCi0gICAgMjIsIDExMywgMywgMjUzLCA3NCwgMTQsIDIyLCAxMTMsIDMsIDI1MCwgMjUyLCAxNCwgMjIsIDExMywgMywgMjQ5LCAzLCAKLSAgICAxNCwgMjIsIDExMywgMywgNzQsIDE0LCAyMiwgMTEzLCAzLCAyNDQsIDIzMCwgMTQsIDIyLCAxMTMsIDMsIDI0MywgMTc3LCAKLSAgICAxNCwgMjIsIDExMywgMywgMjQyLCA0MSwgMTQsIDIyLCAxMTMsIDMsIDcyLCAxNCwgMjIsIDExMywgMywgMjM1LCAxNDIsIAotICAgIDE0LCAyMiwgMTEzLCAzLCAyMzUsIDI3LCAxNCwgMjIsIDExMywgMywgMTUwLCAxNCwgMjIsIDExMywgMywgMTgzLCAxNCwgCi0gICAgMjIsIDExMywgMywgMjA0LCAxNCwgMjIsIDExMywgMywgNzUsIDE0LCAyMiwgMTEzLCAzLCAyMjYsIDIyOSwgMTQsIDIyLCAKLSAgICAxMTMsIDMsIDIyNCwgMjQwLCAxNCwgMjIsIDExMywgMywgMTQ5LCAxNCwgMjIsIDExMywgMywgMTk3LCAxNCwgMjIsIDExMywgCi0gICAgMywgMjE4LCA5OSwgMTQsIDIyLCAxMTMsIDMsIDY5LCAxNCwgMjIsIDExMywgMywgMjE1LCA3OSwgMTQsIDIyLCAxMTMsIDMsIAotICAgIDIxNCwgODIsIDE0LCAyMiwgMTEzLCAzLCAyMTMsIDE2NiwgMTQsIDIyLCAxMTMsIDMsIDIxMywgMTA1LCAxNCwgMjIsIDExMywgCi0gICAgMywgMjEyLCAxNTIsIDE0LCAxMjksIDYsIDYxLCAxNCwgMTI5LCA2LCAyNTMsIDc0LCAxNCwgMTI5LCA2LCAyNDksIDMsIDE0LCAKLSAgICAxMjksIDYsIDc0LCAxNCwgMTI5LCA2LCAyNDQsIDIzMCwgMTQsIDEyOSwgNiwgMjQzLCAxNzcsIDE0LCAxMjksIDYsIDIzNSwgCi0gICAgMTQyLCAxNCwgMTI5LCA2LCAyMzUsIDI3LCAxNCwgMTI5LCA2LCAxNTAsIDE0LCAxMjksIDYsIDE4MywgMTQsIDEyOSwgNiwgCi0gICAgMjA0LCAxNCwgMTI5LCA2LCA3NSwgMTQsIDEyOSwgNiwgMjI2LCAyMjksIDE0LCAxMjksIDYsIDIyNCwgMjQwLCAxNCwgMTI5LCAKLSAgICA2LCAxOTcsIDE0LCAxMjksIDYsIDIxOCwgOTksIDE0LCAxMjksIDYsIDY5LCAxNCwgMTI5LCA2LCAyMTUsIDc5LCAxNCwgCi0gICAgMTI5LCA2LCAyMTQsIDgyLCAxNCwgMTI5LCA2LCAyMTMsIDE2NiwgMTQsIDEyOSwgNiwgMjEzLCAxMDUsIDE0LCAxMjksIDMsIAotICAgIDYxLCAxNCwgMTI5LCAzLCAyNTMsIDc0LCAxNCwgMTI5LCAzLCAyNTAsIDI1MiwgMTQsIDEyOSwgMywgMjQ5LCAzLCAxNCwgCi0gICAgMTI5LCAzLCA3NCwgMTQsIDEyOSwgMywgMjQ0LCAyMzAsIDE0LCAxMjksIDMsIDI0MywgMTc3LCAxNCwgMTI5LCAzLCAyNDIsIAotICAgIDQxLCAxNCwgMTI5LCAzLCA3MiwgMTQsIDEyOSwgMywgMjM1LCAxNDIsIDE0LCAxMjksIDMsIDIzNSwgMjcsIDE0LCAxMjksIAotICAgIDMsIDE1MCwgMTQsIDEyOSwgMywgMTgzLCAxNCwgMTI5LCAzLCAyMDQsIDE0LCAxMjksIDMsIDc1LCAxNCwgMTI5LCAzLCAKLSAgICAyMjYsIDIyOSwgMTQsIDEyOSwgMywgMjI0LCAyNDAsIDE0LCAxMjksIDMsIDE0OSwgMTQsIDEyOSwgMywgMTk3LCAxNCwgCi0gICAgMTI5LCAzLCAyMTgsIDk5LCAxNCwgMTI5LCAzLCA2OSwgMTQsIDEyOSwgMywgMjE1LCA3OSwgMTQsIDEyOSwgMywgMjE0LCAKLSAgICA4MiwgMTQsIDEyOSwgMywgMjEzLCAxNjYsIDE0LCAxMjksIDMsIDIxMywgMTA1LCAxNCwgMTI5LCAzLCAyMTIsIDE1MiwgMTQsIAotICAgIDE4NywgNiwgNjEsIDE0LCAxODcsIDYsIDI1MywgNzQsIDE0LCAxODcsIDYsIDI0OSwgMywgMTQsIDE4NywgNiwgNzQsIDE0LCAKLSAgICAxODcsIDYsIDI0NCwgMjMwLCAxNCwgMTg3LCA2LCAyNDMsIDE3NywgMTQsIDE4NywgNiwgNzIsIDE0LCAxODcsIDYsIDIzNSwgCi0gICAgMTQyLCAxNCwgMTg3LCA2LCAyMzUsIDI3LCAxNCwgMTg3LCA2LCAxNTAsIDE0LCAxODcsIDYsIDE4MywgMTQsIDE4NywgNiwgCi0gICAgNzUsIDE0LCAxODcsIDYsIDE5NywgMTQsIDE4NywgNiwgMjE4LCA5OSwgMTQsIDE4NywgNiwgNjksIDE0LCAxODcsIDYsIAotICAgIDIxNSwgNzksIDE0LCAxODcsIDYsIDIxNCwgODIsIDE0LCAxODcsIDYsIDIxMywgMTY2LCAxNCwgMTg3LCA2LCAyMTMsIDEwNSwgCi0gICAgMTQsIDE4NywgMywgNjEsIDE0LCAxODcsIDMsIDI1MywgNzQsIDE0LCAxODcsIDMsIDI1MCwgMjUyLCAxNCwgMTg3LCAzLCAKLSAgICAyNDksIDMsIDE0LCAxODcsIDMsIDc0LCAxNCwgMTg3LCAzLCAyNDQsIDIzMCwgMTQsIDE4NywgMywgMjQzLCAxNzcsIDE0LCAKLSAgICAxODcsIDMsIDI0MiwgNDEsIDE0LCAxODcsIDMsIDcyLCAxNCwgMTg3LCAzLCAyMzUsIDE0MiwgMTQsIDE4NywgMywgMjM1LCAKLSAgICAyNywgMTQsIDE4NywgMywgMTUwLCAxNCwgMTg3LCAzLCAxODMsIDE0LCAxODcsIDMsIDIwNCwgMTQsIDE4NywgMywgNzUsIAotICAgIDE0LCAxODcsIDMsIDIyNiwgMjI5LCAxNCwgMTg3LCAzLCAyMjQsIDI0MCwgMTQsIDE4NywgMywgMTQ5LCAxNCwgMTg3LCAzLCAKLSAgICAxOTcsIDE0LCAxODcsIDMsIDIxOCwgOTksIDE0LCAxODcsIDMsIDY5LCAxNCwgMTg3LCAzLCAyMTUsIDc5LCAxNCwgMTg3LCAKLSAgICAzLCAyMTQsIDgyLCAxNCwgMTg3LCAzLCAyMTMsIDE2NiwgMTQsIDE4NywgMywgMjEzLCAxMDUsIDE0LCAxODcsIDMsIDIxMiwgCi0gICAgMTUyLCAxNCwgMjIsIDEyOSwgNiwgNjEsIDE0LCAyMiwgMTI5LCA2LCAyNTMsIDc0LCAxNCwgMjIsIDEyOSwgNiwgMjUwLCAKLSAgICAyNTIsIDE0LCAyMiwgMTI5LCA2LCAyNDksIDMsIDE0LCAyMiwgMTI5LCA2LCA3NCwgMTQsIDIyLCAxMjksIDYsIDI0NCwgCi0gICAgMjMwLCAxNCwgMjIsIDEyOSwgNiwgMjQzLCAxNzcsIDE0LCAyMiwgMTI5LCA2LCAyNDIsIDQxLCAxNCwgMjIsIDEyOSwgNiwgCi0gICAgNzIsIDE0LCAyMiwgMTI5LCA2LCAyMzUsIDE0MiwgMTQsIDIyLCAxMjksIDYsIDIzNSwgMjcsIDE0LCAyMiwgMTI5LCA2LCAKLSAgICAxNTAsIDE0LCAyMiwgMTI5LCA2LCAxODMsIDE0LCAyMiwgMTI5LCA2LCAyMDQsIDE0LCAyMiwgMTI5LCA2LCA3NSwgMTQsIAotICAgIDIyLCAxMjksIDYsIDIyNiwgMjI5LCAxNCwgMjIsIDEyOSwgNiwgMjI0LCAyNDAsIDE0LCAyMiwgMTI5LCA2LCAxNDksIDE0LCAKLSAgICAyMiwgMTI5LCA2LCAxOTcsIDE0LCAyMiwgMTI5LCA2LCAyMTgsIDk5LCAxNCwgMjIsIDEyOSwgNiwgNjksIDE0LCAyMiwgCi0gICAgMTI5LCA2LCAyMTUsIDc5LCAxNCwgMjIsIDEyOSwgNiwgMjE0LCA4MiwgMTQsIDIyLCAxMjksIDYsIDIxMywgMTY2LCAxNCwgCi0gICAgMjIsIDEyOSwgNiwgMjEzLCAxMDUsIDE0LCAyMiwgMTI5LCA2LCAyMTIsIDE1MiwgMTQsIDIyLCAxMjksIDMsIDYxLCAxNCwgCi0gICAgMjIsIDEyOSwgMywgMjUzLCA3NCwgMTQsIDIyLCAxMjksIDMsIDI1MCwgMjUyLCAxNCwgMjIsIDEyOSwgMywgMjQ5LCAzLCAKLSAgICAxNCwgMjIsIDEyOSwgMywgNzQsIDE0LCAyMiwgMTI5LCAzLCAyNDQsIDIzMCwgMTQsIDIyLCAxMjksIDMsIDI0MywgMTc3LCAKLSAgICAxNCwgMjIsIDEyOSwgMywgMjQyLCA0MSwgMTQsIDIyLCAxMjksIDMsIDcyLCAxNCwgMjIsIDEyOSwgMywgMjM1LCAxNDIsIAotICAgIDE0LCAyMiwgMTI5LCAzLCAyMzUsIDI3LCAxNCwgMjIsIDEyOSwgMywgMTUwLCAxNCwgMjIsIDEyOSwgMywgMTgzLCAxNCwgCi0gICAgMjIsIDEyOSwgMywgMjA0LCAxNCwgMjIsIDEyOSwgMywgNzUsIDE0LCAyMiwgMTI5LCAzLCAyMjYsIDIyOSwgMTQsIDIyLCAKLSAgICAxMjksIDMsIDIyNCwgMjQwLCAxNCwgMjIsIDEyOSwgMywgMTQ5LCAxNCwgMjIsIDEyOSwgMywgMTk3LCAxNCwgMjIsIDEyOSwgCi0gICAgMywgMjE4LCA5OSwgMTQsIDIyLCAxMjksIDMsIDY5LCAxNCwgMjIsIDEyOSwgMywgMjE1LCA3OSwgMTQsIDIyLCAxMjksIDMsIAotICAgIDIxNCwgODIsIDE0LCAyMiwgMTI5LCAzLCAyMTMsIDE2NiwgMTQsIDIyLCAxMjksIDMsIDIxMywgMTA1LCAxNCwgMjIsIDEyOSwgCi0gICAgMywgMjEyLCAxNTIsIDE0LCAzNSwgNiwgNjEsIDE0LCAzNSwgNiwgMjUzLCA3NCwgMTQsIDM1LCA2LCAyNTAsIDI1MiwgMTQsIAotICAgIDM1LCA2LCAyNDksIDMsIDE0LCAzNSwgNiwgNzQsIDE0LCAzNSwgNiwgMjQ0LCAyMzAsIDE0LCAzNSwgNiwgMjQzLCAxNzcsIAotICAgIDE0LCAzNSwgNiwgMjQyLCA0MSwgMTQsIDM1LCA2LCA3MiwgMTQsIDM1LCA2LCAyMzUsIDE0MiwgMTQsIDM1LCA2LCAyMzUsIAotICAgIDI3LCAxNCwgMzUsIDYsIDE1MCwgMTQsIDM1LCA2LCAxODMsIDE0LCAzNSwgNiwgMjA0LCAxNCwgMzUsIDYsIDc1LCAxNCwgCi0gICAgMzUsIDYsIDIyNiwgMjI5LCAxNCwgMzUsIDYsIDIyNCwgMjQwLCAxNCwgMzUsIDYsIDE0OSwgMTQsIDM1LCA2LCAxOTcsIDE0LCAKLSAgICAzNSwgNiwgMjE4LCA5OSwgMTQsIDM1LCA2LCA2OSwgMTQsIDM1LCA2LCAyMTUsIDc5LCAxNCwgMzUsIDYsIDIxNCwgODIsIAotICAgIDE0LCAzNSwgNiwgMjEzLCAxNjYsIDE0LCAzNSwgNiwgMjEzLCAxMDUsIDE0LCAzNSwgNiwgMjEyLCAxNTIsIDE0LCAzNSwgMywgCi0gICAgNjEsIDE0LCAzNSwgMywgMjUzLCA3NCwgMTQsIDM1LCAzLCAyNTAsIDI1MiwgMTQsIDM1LCAzLCAyNDksIDMsIDE0LCAzNSwgCi0gICAgMywgNzQsIDE0LCAzNSwgMywgMjQ0LCAyMzAsIDE0LCAzNSwgMywgMjQzLCAxNzcsIDE0LCAzNSwgMywgMjQyLCA0MSwgMTQsIAotICAgIDM1LCAzLCA3MiwgMTQsIDM1LCAzLCAyMzUsIDE0MiwgMTQsIDM1LCAzLCAyMzUsIDI3LCAxNCwgMzUsIDMsIDE1MCwgMTQsIAotICAgIDM1LCAzLCAxODMsIDE0LCAzNSwgMywgMjA0LCAxNCwgMzUsIDMsIDc1LCAxNCwgMzUsIDMsIDIyNiwgMjI5LCAxNCwgMzUsIAotICAgIDMsIDIyNCwgMjQwLCAxNCwgMzUsIDMsIDE0OSwgMTQsIDM1LCAzLCAxOTcsIDE0LCAzNSwgMywgMjE4LCA5OSwgMTQsIDM1LCAKLSAgICAzLCA2OSwgMTQsIDM1LCAzLCAyMTUsIDc5LCAxNCwgMzUsIDMsIDIxNCwgODIsIDE0LCAzNSwgMywgMjEzLCAxNjYsIDE0LCAKLSAgICAzNSwgMywgMjEzLCAxMDUsIDE0LCAzNSwgMywgMjEyLCAxNTIsIDE0LCAzNSwgMjIsIDYsIDYxLCAxNCwgMzUsIDIyLCA2LCAKLSAgICAyNTMsIDc0LCAxNCwgMzUsIDIyLCA2LCAyNTAsIDI1MiwgMTQsIDM1LCAyMiwgNiwgMjQ5LCAzLCAxNCwgMzUsIDIyLCA2LCAKLSAgICA3NCwgMTQsIDM1LCAyMiwgNiwgMjQ0LCAyMzAsIDE0LCAzNSwgMjIsIDYsIDI0MywgMTc3LCAxNCwgMzUsIDIyLCA2LCAyNDIsIAotICAgIDQxLCAxNCwgMzUsIDIyLCA2LCA3MiwgMTQsIDM1LCAyMiwgNiwgMjM1LCAxNDIsIDE0LCAzNSwgMjIsIDYsIDIzNSwgMjcsIAotICAgIDE0LCAzNSwgMjIsIDYsIDE1MCwgMTQsIDM1LCAyMiwgNiwgMTgzLCAxNCwgMzUsIDIyLCA2LCAyMDQsIDE0LCAzNSwgMjIsIAotICAgIDYsIDc1LCAxNCwgMzUsIDIyLCA2LCAyMjYsIDIyOSwgMTQsIDM1LCAyMiwgNiwgMjI0LCAyNDAsIDE0LCAzNSwgMjIsIDYsIAotICAgIDE0OSwgMTQsIDM1LCAyMiwgNiwgMTk3LCAxNCwgMzUsIDIyLCA2LCAyMTgsIDk5LCAxNCwgMzUsIDIyLCA2LCA2OSwgMTQsIAotICAgIDM1LCAyMiwgNiwgMjE1LCA3OSwgMTQsIDM1LCAyMiwgNiwgMjE0LCA4MiwgMTQsIDM1LCAyMiwgNiwgMjEzLCAxNjYsIDE0LCAKLSAgICAzNSwgMjIsIDYsIDIxMywgMTA1LCAxNCwgMzUsIDIyLCA2LCAyMTIsIDE1MiwgMTQsIDM1LCAyMiwgMywgNjEsIDE0LCAzNSwgCi0gICAgMjIsIDMsIDI1MywgNzQsIDE0LCAzNSwgMjIsIDMsIDI1MCwgMjUyLCAxNCwgMzUsIDIyLCAzLCAyNDksIDMsIDE0LCAzNSwgCi0gICAgMjIsIDMsIDc0LCAxNCwgMzUsIDIyLCAzLCAyNDQsIDIzMCwgMTQsIDM1LCAyMiwgMywgMjQzLCAxNzcsIDE0LCAzNSwgMjIsIAotICAgIDMsIDI0MiwgNDEsIDE0LCAzNSwgMjIsIDMsIDcyLCAxNCwgMzUsIDIyLCAzLCAyMzUsIDE0MiwgMTQsIDM1LCAyMiwgMywgCi0gICAgMjM1LCAyNywgMTQsIDM1LCAyMiwgMywgMTUwLCAxNCwgMzUsIDIyLCAzLCAxODMsIDE0LCAzNSwgMjIsIDMsIDIwNCwgMTQsIAotICAgIDM1LCAyMiwgMywgNzUsIDE0LCAzNSwgMjIsIDMsIDIyNiwgMjI5LCAxNCwgMzUsIDIyLCAzLCAyMjQsIDI0MCwgMTQsIDM1LCAKLSAgICAyMiwgMywgMTQ5LCAxNCwgMzUsIDIyLCAzLCAxOTcsIDE0LCAzNSwgMjIsIDMsIDIxOCwgOTksIDE0LCAzNSwgMjIsIDMsIAotICAgIDY5LCAxNCwgMzUsIDIyLCAzLCAyMTUsIDc5LCAxNCwgMzUsIDIyLCAzLCAyMTQsIDgyLCAxNCwgMzUsIDIyLCAzLCAyMTMsIAotICAgIDE2NiwgMTQsIDM1LCAyMiwgMywgMjEzLCAxMDUsIDE0LCAzNSwgMjIsIDMsIDIxMiwgMTUyLCAxNCwgMzUsIDMyLCA2LCA2MSwgCi0gICAgMTQsIDM1LCAzMiwgNiwgMjUzLCA3NCwgMTQsIDM1LCAzMiwgNiwgMjUwLCAyNTIsIDE0LCAzNSwgMzIsIDYsIDI0OSwgMywgCi0gICAgMTQsIDM1LCAzMiwgNiwgNzQsIDE0LCAzNSwgMzIsIDYsIDI0NCwgMjMwLCAxNCwgMzUsIDMyLCA2LCAyNDMsIDE3NywgMTQsIAotICAgIDM1LCAzMiwgNiwgMjQyLCA0MSwgMTQsIDM1LCAzMiwgNiwgNzIsIDE0LCAzNSwgMzIsIDYsIDIzNSwgMTQyLCAxNCwgMzUsIAotICAgIDMyLCA2LCAyMzUsIDI3LCAxNCwgMzUsIDMyLCA2LCAxNTAsIDE0LCAzNSwgMzIsIDYsIDE4MywgMTQsIDM1LCAzMiwgNiwgCi0gICAgMjA0LCAxNCwgMzUsIDMyLCA2LCA3NSwgMTQsIDM1LCAzMiwgNiwgMjI2LCAyMjksIDE0LCAzNSwgMzIsIDYsIDIyNCwgMjQwLCAKLSAgICAxNCwgMzUsIDMyLCA2LCAxNDksIDE0LCAzNSwgMzIsIDYsIDE5NywgMTQsIDM1LCAzMiwgNiwgMjE4LCA5OSwgMTQsIDM1LCAKLSAgICAzMiwgNiwgNjksIDE0LCAzNSwgMzIsIDYsIDIxNSwgNzksIDE0LCAzNSwgMzIsIDYsIDIxNCwgODIsIDE0LCAzNSwgMzIsIDYsIAotICAgIDIxMywgMTY2LCAxNCwgMzUsIDMyLCA2LCAyMTMsIDEwNSwgMTQsIDM1LCAzMiwgNiwgMjEyLCAxNTIsIDE0LCAzNSwgMzIsIAotICAgIDMsIDYxLCAxNCwgMzUsIDMyLCAzLCAyNTMsIDc0LCAxNCwgMzUsIDMyLCAzLCAyNTAsIDI1MiwgMTQsIDM1LCAzMiwgMywgCi0gICAgMjQ5LCAzLCAxNCwgMzUsIDMyLCAzLCA3NCwgMTQsIDM1LCAzMiwgMywgMjQ0LCAyMzAsIDE0LCAzNSwgMzIsIDMsIDI0MywgCi0gICAgMTc3LCAxNCwgMzUsIDMyLCAzLCAyNDIsIDQxLCAxNCwgMzUsIDMyLCAzLCA3MiwgMTQsIDM1LCAzMiwgMywgMjM1LCAxNDIsIAotICAgIDE0LCAzNSwgMzIsIDMsIDIzNSwgMjcsIDE0LCAzNSwgMzIsIDMsIDE1MCwgMTQsIDM1LCAzMiwgMywgMTgzLCAxNCwgMzUsIAotICAgIDMyLCAzLCAyMDQsIDE0LCAzNSwgMzIsIDMsIDc1LCAxNCwgMzUsIDMyLCAzLCAyMjYsIDIyOSwgMTQsIDM1LCAzMiwgMywgCi0gICAgMjI0LCAyNDAsIDE0LCAzNSwgMzIsIDMsIDE0OSwgMTQsIDM1LCAzMiwgMywgMTk3LCAxNCwgMzUsIDMyLCAzLCAyMTgsIDk5LCAKLSAgICAxNCwgMzUsIDMyLCAzLCA2OSwgMTQsIDM1LCAzMiwgMywgMjE1LCA3OSwgMTQsIDM1LCAzMiwgMywgMjE0LCA4MiwgMTQsIAotICAgIDM1LCAzMiwgMywgMjEzLCAxNjYsIDE0LCAzNSwgMzIsIDMsIDIxMywgMTA1LCAxNCwgMzUsIDMyLCAzLCAyMTIsIDE1MiwgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDYsIDYxLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjUzLCA3NCwgMTQsIDM1LCAyMiwgMzIsIDYsIAotICAgIDI1MCwgMjUyLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjQ5LCAzLCAxNCwgMzUsIDIyLCAzMiwgNiwgNzQsIDE0LCAzNSwgMjIsIAotICAgIDMyLCA2LCAyNDQsIDIzMCwgMTQsIDM1LCAyMiwgMzIsIDYsIDI0MywgMTc3LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjQyLCA0MSwgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDYsIDcyLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjM1LCAxNDIsIDE0LCAzNSwgMjIsIDMyLCA2LCAKLSAgICAyMzUsIDI3LCAxNCwgMzUsIDIyLCAzMiwgNiwgMTUwLCAxNCwgMzUsIDIyLCAzMiwgNiwgMTgzLCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjA0LCAxNCwgMzUsIDIyLCAzMiwgNiwgNzUsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjYsIDIyOSwgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDYsIDIyNCwgMjQwLCAxNCwgMzUsIDIyLCAzMiwgNiwgMTQ5LCAxNCwgMzUsIDIyLCAzMiwgNiwgMTk3LCAxNCwgMzUsIAotICAgIDIyLCAzMiwgNiwgMjE4LCA5OSwgMTQsIDM1LCAyMiwgMzIsIDYsIDY5LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjE1LCA3OSwgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNCwgODIsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTMsIDE2NiwgMTQsIDM1LCAyMiwgMzIsIAotICAgIDYsIDIxMywgMTA1LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjEyLCAxNTIsIDE0LCAzNSwgMjIsIDMyLCAzLCA2MSwgMTQsIDM1LCAKLSAgICAyMiwgMzIsIDMsIDI1MywgNzQsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNTAsIDI1MiwgMTQsIDM1LCAyMiwgMzIsIDMsIDI0OSwgCi0gICAgMywgMTQsIDM1LCAyMiwgMzIsIDMsIDc0LCAxNCwgMzUsIDIyLCAzMiwgMywgMjQ0LCAyMzAsIDE0LCAzNSwgMjIsIDMyLCAzLCAKLSAgICAyNDMsIDE3NywgMTQsIDM1LCAyMiwgMzIsIDMsIDI0MiwgNDEsIDE0LCAzNSwgMjIsIDMyLCAzLCA3MiwgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDMsIDIzNSwgMTQyLCAxNCwgMzUsIDIyLCAzMiwgMywgMjM1LCAyNywgMTQsIDM1LCAyMiwgMzIsIDMsIDE1MCwgMTQsIAotICAgIDM1LCAyMiwgMzIsIDMsIDE4MywgMTQsIDM1LCAyMiwgMzIsIDMsIDIwNCwgMTQsIDM1LCAyMiwgMzIsIDMsIDc1LCAxNCwgCi0gICAgMzUsIDIyLCAzMiwgMywgMjI2LCAyMjksIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjQsIDI0MCwgMTQsIDM1LCAyMiwgMzIsIDMsIAotICAgIDE0OSwgMTQsIDM1LCAyMiwgMzIsIDMsIDE5NywgMTQsIDM1LCAyMiwgMzIsIDMsIDIxOCwgOTksIDE0LCAzNSwgMjIsIDMyLCAKLSAgICAzLCA2OSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxNSwgNzksIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTQsIDgyLCAxNCwgMzUsIAotICAgIDIyLCAzMiwgMywgMjEzLCAxNjYsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTMsIDEwNSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxMiwgCi0gICAgMTUyLCAxNCwgMjMwLCAyMDgsIDYsIDYxLCAxNCwgMjMwLCAyMDgsIDYsIDI1MywgNzQsIDE0LCAyMzAsIDIwOCwgNiwgMjUwLCAKLSAgICAyNTIsIDE0LCAyMzAsIDIwOCwgNiwgMjQ5LCAzLCAxNCwgMjMwLCAyMDgsIDYsIDc0LCAxNCwgMjMwLCAyMDgsIDYsIDI0NCwgCi0gICAgMjMwLCAxNCwgMjMwLCAyMDgsIDYsIDI0MywgMTc3LCAxNCwgMjMwLCAyMDgsIDYsIDI0MiwgNDEsIDE0LCAyMzAsIDIwOCwgCi0gICAgNiwgNzIsIDE0LCAyMzAsIDIwOCwgNiwgMjM1LCAxNDIsIDE0LCAyMzAsIDIwOCwgNiwgMjM1LCAyNywgMTQsIDIzMCwgMjA4LCAKLSAgICA2LCAxNTAsIDE0LCAyMzAsIDIwOCwgNiwgMTgzLCAxNCwgMjMwLCAyMDgsIDYsIDIwNCwgMTQsIDIzMCwgMjA4LCA2LCA3NSwgCi0gICAgMTQsIDIzMCwgMjA4LCA2LCAyMjYsIDIyOSwgMTQsIDIzMCwgMjA4LCA2LCAyMjQsIDI0MCwgMTQsIDIzMCwgMjA4LCA2LCAKLSAgICAxNDksIDE0LCAyMzAsIDIwOCwgNiwgMTk3LCAxNCwgMjMwLCAyMDgsIDYsIDIxOCwgOTksIDE0LCAyMzAsIDIwOCwgNiwgNjksIAotICAgIDE0LCAyMzAsIDIwOCwgNiwgMjE1LCA3OSwgMTQsIDIzMCwgMjA4LCA2LCAyMTQsIDgyLCAxNCwgMjMwLCAyMDgsIDYsIDIxMywgCi0gICAgMTY2LCAxNCwgMjMwLCAyMDgsIDYsIDIxMywgMTA1LCAxNCwgMjMwLCAyMDgsIDYsIDIxMiwgMTUyLCAxNCwgMjMwLCAyMDgsIAotICAgIDMsIDYxLCAxNCwgMjMwLCAyMDgsIDMsIDI1MywgNzQsIDE0LCAyMzAsIDIwOCwgMywgMjUwLCAyNTIsIDE0LCAyMzAsIDIwOCwgCi0gICAgMywgMjQ5LCAzLCAxNCwgMjMwLCAyMDgsIDMsIDc0LCAxNCwgMjMwLCAyMDgsIDMsIDI0NCwgMjMwLCAxNCwgMjMwLCAyMDgsIAotICAgIDMsIDI0MywgMTc3LCAxNCwgMjMwLCAyMDgsIDMsIDI0MiwgNDEsIDE0LCAyMzAsIDIwOCwgMywgNzIsIDE0LCAyMzAsIDIwOCwgCi0gICAgMywgMjM1LCAxNDIsIDE0LCAyMzAsIDIwOCwgMywgMjM1LCAyNywgMTQsIDIzMCwgMjA4LCAzLCAxNTAsIDE0LCAyMzAsIAotICAgIDIwOCwgMywgMTgzLCAxNCwgMjMwLCAyMDgsIDMsIDIwNCwgMTQsIDIzMCwgMjA4LCAzLCA3NSwgMTQsIDIzMCwgMjA4LCAzLCAKLSAgICAyMjYsIDIyOSwgMTQsIDIzMCwgMjA4LCAzLCAyMjQsIDI0MCwgMTQsIDIzMCwgMjA4LCAzLCAxNDksIDE0LCAyMzAsIDIwOCwgCi0gICAgMywgMTk3LCAxNCwgMjMwLCAyMDgsIDMsIDIxOCwgOTksIDE0LCAyMzAsIDIwOCwgMywgNjksIDE0LCAyMzAsIDIwOCwgMywgCi0gICAgMjE1LCA3OSwgMTQsIDIzMCwgMjA4LCAzLCAyMTQsIDgyLCAxNCwgMjMwLCAyMDgsIDMsIDIxMywgMTY2LCAxNCwgMjMwLCAKLSAgICAyMDgsIDMsIDIxMywgMTA1LCAxNCwgMjMwLCAyMDgsIDMsIDIxMiwgMTUyLCAxNCwgMzIsIDMsIDI0NywgNzMsIDcyLCAxNCwgCi0gICAgMzIsIDMsIDI0NywgNzMsIDIzNSwgMTQyLCAxNCwgMjIsIDYsIDI1NCwgNTIsIDE0LCAyMiwgNiwgMjUxLCAyMDMsIDE0LCAKLSAgICAyMiwgNiwgMjQzLCA4MywgMTQsIDIyLCA2LCAyNDgsIDUsIDE0LCAyMiwgNiwgMjQ1LCA2MywgMTQsIDIyLCA2LCAyMTIsIAotICAgIDc4LCAxNCwgMjIsIDYsIDI0NSwgMjgsIDE0LCAyMiwgNiwgMjE3LCAxMzIsIDE0LCAyMiwgNiwgMjM1LCAxODMsIDE0LCAyMiwgCi0gICAgNiwgMjM0LCAyMjcsIDE0LCAyMiwgNiwgMjMzLCAxMjIsIDE0LCAyMiwgNiwgMjMwLCAxNzIsIDE0LCAyMiwgNiwgMjI4LCAKLSAgICA5MiwgMTQsIDIyLCA2LCAyMTMsIDE0NSwgMTQsIDIyLCA2LCAyMjcsIDY1LCAxNCwgMjIsIDYsIDIyNSwgMjQwLCAxNCwgMjIsIAotICAgIDYsIDIyMywgMTkwLCAxNCwgMjIsIDYsIDIxNywgMTMzLCA4NywgMTQsIDIyLCA2LCAyMjAsIDEwMywgMTQsIDIyLCA2LCAKLSAgICAyMTcsIDI0OCwgMTQsIDIyLCA2LCAyMTUsIDEyOCwgMTQsIDIyLCA2LCAyMjYsIDksIDE0LCAyMiwgNiwgMjUwLCA0NywgMTQsIAotICAgIDIyLCA2LCAyMjUsIDQ2LCAxNCwgMjIsIDYsIDIyNywgNjcsIDE0LCAyMiwgMjMwLCAzOSwgMTQsIDIyLCAzLCAyNTQsIDUyLCAKLSAgICAxNCwgMjIsIDMsIDI1MSwgMjAzLCAxNCwgMjIsIDMsIDI0MywgODMsIDE0LCAyMiwgMywgMjQ4LCA1LCAxNCwgMjIsIDMsIAotICAgIDI0NSwgNjMsIDE0LCAyMiwgMywgMjEyLCA3OCwgMTQsIDIyLCAzLCAyNDUsIDI4LCAxNCwgMjIsIDMsIDIxNywgMTMyLCAxNCwgCi0gICAgMjIsIDMsIDIzNSwgMTgzLCAxNCwgMjIsIDMsIDIzNCwgMjI3LCAxNCwgMjIsIDMsIDIzMywgMTIyLCAxNCwgMjIsIDMsIAotICAgIDIzMCwgMTcyLCAxNCwgMjIsIDMsIDIyOCwgOTIsIDE0LCAyMiwgMywgMjEzLCAxNDUsIDE0LCAyMiwgMywgMjI3LCA2NSwgCi0gICAgMTQsIDIyLCAzLCAyMjUsIDI0MCwgMTQsIDIyLCAzLCAyMjMsIDE5MCwgMTQsIDIyLCAzLCA0MCwgMjIwLCAxMDMsIDE0LCAKLSAgICAyMiwgMywgMjIwLCAxMDMsIDE0LCAyMiwgMywgMjE3LCAyNDgsIDE0LCAyMiwgMywgMjE1LCAxMjgsIDE0LCAyMiwgMywgCi0gICAgMjI2LCA5LCAxNCwgMjIsIDMsIDI1MCwgNDcsIDE0LCAyMiwgMywgMjI1LCA0NiwgMTQsIDIyLCAzLCAyMjcsIDY3LCAxNCwgCi0gICAgMjIsIDIyNiwgMTI1LCAyNDcsIDE4NSwgMTQsIDIyLCAyNDUsIDY0LCA4NywgMTQsIDIyLCAyMTcsIDEzMywgODcsIDE0LCAKLSAgICAyMiwgMjM0LCAyMjgsIDg3LCAxNCwgMjIsIDIyNiwgMTAsIDg3LCAxNCwgMjIsIDIyMywgMTkxLCA4NywgMTQsIDIyLCAyMjUsIAotICAgIDI0MSwgODcsIDE0LCAzMiwgNiwgMjU0LCA1MiwgMTQsIDMyLCA2LCAyNTEsIDIwMywgMTQsIDMyLCA2LCAyNDMsIDgzLCAxNCwgCi0gICAgMzIsIDYsIDI0OCwgNSwgMTQsIDMyLCA2LCAyNDUsIDYzLCAxNCwgMzIsIDYsIDIxMiwgNzgsIDE0LCAzMiwgNiwgMjQ1LCAKLSAgICAyOCwgMTQsIDMyLCA2LCAyMTcsIDEzMiwgMTQsIDMyLCA2LCAyMzUsIDE4MywgMTQsIDMyLCA2LCAyMzQsIDIyNywgMTQsIAotICAgIDMyLCA2LCAyMzMsIDEyMiwgMTQsIDMyLCA2LCAyMzAsIDE3MiwgMTQsIDMyLCA2LCAyMjgsIDkyLCAxNCwgMzIsIDYsIDIxMywgCi0gICAgMTQ1LCAxNCwgMzIsIDYsIDIyNywgNjUsIDE0LCAzMiwgNiwgMjI1LCAyNDAsIDE0LCAzMiwgNiwgMjIzLCAxOTAsIDE0LCAKLSAgICAzMiwgNiwgMjE3LCAxMzMsIDg3LCAxNCwgMzIsIDYsIDIyMCwgMTAzLCAxNCwgMzIsIDYsIDIxNywgMjQ4LCAxNCwgMzIsIDYsIAotICAgIDIxNSwgMTI4LCAxNCwgMzIsIDYsIDIyNiwgOSwgMTQsIDMyLCA2LCAyNTAsIDQ3LCAxNCwgMzIsIDYsIDIyNSwgNDYsIDE0LCAKLSAgICAzMiwgNiwgMjI3LCA2NywgMTQsIDMyLCAyMzAsIDM5LCAxNCwgMzIsIDMsIDI1NCwgNTIsIDE0LCAzMiwgMywgMjUxLCAyMDMsIAotICAgIDE0LCAzMiwgMywgMjQzLCA4MywgMTQsIDMyLCAzLCAyNDgsIDUsIDE0LCAzMiwgMywgMjQ1LCA2MywgMTQsIDMyLCAzLCAKLSAgICAyMTIsIDc4LCAxNCwgMzIsIDMsIDI0NSwgMjgsIDE0LCAzMiwgMywgMjE3LCAxMzIsIDE0LCAzMiwgMywgMjM1LCAxODMsIAotICAgIDE0LCAzMiwgMywgMjM0LCAyMjcsIDE0LCAzMiwgMywgMjMzLCAxMjIsIDE0LCAzMiwgMywgMjMwLCAxNzIsIDE0LCAzMiwgMywgCi0gICAgMjI4LCA5MiwgMTQsIDMyLCAzLCAyMTMsIDE0NSwgMTQsIDMyLCAzLCAyMjcsIDY1LCAxNCwgMzIsIDMsIDIyNSwgMjQwLCAKLSAgICAxNCwgMzIsIDMsIDIyMywgMTkwLCAxNCwgMzIsIDMsIDQwLCAyMjAsIDEwMywgMTQsIDMyLCAzLCAyMjAsIDEwMywgMTQsIAotICAgIDMyLCAzLCAyMTcsIDI0OCwgMTQsIDMyLCAzLCAyMTUsIDEyOCwgMTQsIDMyLCAzLCAyMjYsIDksIDE0LCAzMiwgMywgMjUwLCAKLSAgICA0NywgMTQsIDMyLCAzLCAyMjUsIDQ2LCAxNCwgMzIsIDMsIDIyNywgNjcsIDE0LCAzMiwgMjI2LCAxMjUsIDI0NywgMTg1LCAKLSAgICAxNCwgMzIsIDI0NSwgNjQsIDg3LCAxNCwgMzIsIDIxNywgMTMzLCA4NywgMTQsIDMyLCAyMzQsIDIyOCwgODcsIDE0LCAzMiwgCi0gICAgMjI2LCAxMCwgODcsIDE0LCAzMiwgMjIzLCAxOTEsIDg3LCAxNCwgMzIsIDIyNSwgMjQxLCA4NywgMTQsIDIyLCAzMiwgNiwgCi0gICAgMjU0LCA1MiwgMTQsIDIyLCAzMiwgNiwgMjUxLCAyMDMsIDE0LCAyMiwgMzIsIDYsIDI0MywgODMsIDE0LCAyMiwgMzIsIDYsIAotICAgIDI0OCwgNSwgMTQsIDIyLCAzMiwgNiwgMjQ1LCA2MywgMTQsIDIyLCAzMiwgNiwgMjEyLCA3OCwgMTQsIDIyLCAzMiwgNiwgCi0gICAgMjQ1LCAyOCwgMTQsIDIyLCAzMiwgNiwgMjE3LCAxMzIsIDE0LCAyMiwgMzIsIDYsIDIzNSwgMTgzLCAxNCwgMjIsIDMyLCA2LCAKLSAgICAyMzQsIDIyNywgMTQsIDIyLCAzMiwgNiwgMjMzLCAxMjIsIDE0LCAyMiwgMzIsIDYsIDIzMCwgMTcyLCAxNCwgMjIsIDMyLCAKLSAgICA2LCAyMjgsIDkyLCAxNCwgMjIsIDMyLCA2LCAyMTMsIDE0NSwgMTQsIDIyLCAzMiwgNiwgMjI3LCA2NSwgMTQsIDIyLCAzMiwgCi0gICAgNiwgMjI1LCAyNDAsIDE0LCAyMiwgMzIsIDYsIDIyMywgMTkwLCAxNCwgMjIsIDMyLCA2LCAyMTcsIDEzMywgODcsIDE0LCAKLSAgICAyMiwgMzIsIDYsIDIyMCwgMTAzLCAxNCwgMjIsIDMyLCA2LCAyMTcsIDI0OCwgMTQsIDIyLCAzMiwgNiwgMjE1LCAxMjgsIAotICAgIDE0LCAyMiwgMzIsIDYsIDIyNiwgOSwgMTQsIDIyLCAzMiwgNiwgMjUwLCA0NywgMTQsIDIyLCAzMiwgNiwgMjI1LCA0NiwgCi0gICAgMTQsIDIyLCAzMiwgNiwgMjI3LCA2NywgMTQsIDIyLCAzMiwgMjMwLCAzOSwgMTQsIDIyLCAzMiwgMywgMjU0LCA1MiwgMTQsIAotICAgIDIyLCAzMiwgMywgMjUxLCAyMDMsIDE0LCAyMiwgMzIsIDMsIDI0MywgODMsIDE0LCAyMiwgMzIsIDMsIDI0OCwgNSwgMTQsIAotICAgIDIyLCAzMiwgMywgMjQ1LCA2MywgMTQsIDIyLCAzMiwgMywgMjEyLCA3OCwgMTQsIDIyLCAzMiwgMywgMjQ1LCAyOCwgMTQsIAotICAgIDIyLCAzMiwgMywgMjE3LCAxMzIsIDE0LCAyMiwgMzIsIDMsIDIzNSwgMTgzLCAxNCwgMjIsIDMyLCAzLCAyMzQsIDIyNywgCi0gICAgMTQsIDIyLCAzMiwgMywgMjMzLCAxMjIsIDE0LCAyMiwgMzIsIDMsIDIzMCwgMTcyLCAxNCwgMjIsIDMyLCAzLCAyMjgsIDkyLCAKLSAgICAxNCwgMjIsIDMyLCAzLCAyMTMsIDE0NSwgMTQsIDIyLCAzMiwgMywgMjI3LCA2NSwgMTQsIDIyLCAzMiwgMywgMjI1LCAyNDAsIAotICAgIDE0LCAyMiwgMzIsIDMsIDIyMywgMTkwLCAxNCwgMjIsIDMyLCAzLCA0MCwgMjIwLCAxMDMsIDE0LCAyMiwgMzIsIDMsIDIyMCwgCi0gICAgMTAzLCAxNCwgMjIsIDMyLCAzLCAyMTcsIDI0OCwgMTQsIDIyLCAzMiwgMywgMjE1LCAxMjgsIDE0LCAyMiwgMzIsIDMsIAotICAgIDIyNiwgOSwgMTQsIDIyLCAzMiwgMywgMjUwLCA0NywgMTQsIDIyLCAzMiwgMywgMjI1LCA0NiwgMTQsIDIyLCAzMiwgMywgCi0gICAgMjI3LCA2NywgMTQsIDIyLCAzMiwgMjI2LCAxMjUsIDI0NywgMTg1LCAxNCwgMjIsIDMyLCAyNDUsIDY0LCA4NywgMTQsIDIyLCAKLSAgICAzMiwgMjE3LCAxMzMsIDg3LCAxNCwgMjIsIDMyLCAyMzQsIDIyOCwgODcsIDE0LCAyMiwgMzIsIDIyNiwgMTAsIDg3LCAxNCwgCi0gICAgMjIsIDMyLCAyMjMsIDE5MSwgODcsIDE0LCAyMiwgMzIsIDIyNSwgMjQxLCA4NywgMTQsIDM1LCAyMiwgNiwgMjU0LCA1MiwgCi0gICAgMTQsIDM1LCAyMiwgNiwgMjUxLCAyMDMsIDE0LCAzNSwgMjIsIDYsIDI0MywgODMsIDE0LCAzNSwgMjIsIDYsIDI0OCwgNSwgCi0gICAgMTQsIDM1LCAyMiwgNiwgMjQ1LCA2MywgMTQsIDM1LCAyMiwgNiwgMjEyLCA3OCwgMTQsIDM1LCAyMiwgNiwgMjQ1LCAyOCwgCi0gICAgMTQsIDM1LCAyMiwgNiwgMjE3LCAxMzIsIDE0LCAzNSwgMjIsIDYsIDIzNSwgMTgzLCAxNCwgMzUsIDIyLCA2LCAyMzQsIAotICAgIDIyNywgMTQsIDM1LCAyMiwgNiwgMjMzLCAxMjIsIDE0LCAzNSwgMjIsIDYsIDIzMCwgMTcyLCAxNCwgMzUsIDIyLCA2LCAKLSAgICAyMjgsIDkyLCAxNCwgMzUsIDIyLCA2LCAyMTMsIDE0NSwgMTQsIDM1LCAyMiwgNiwgMjI3LCA2NSwgMTQsIDM1LCAyMiwgNiwgCi0gICAgMjI1LCAyNDAsIDE0LCAzNSwgMjIsIDYsIDIyMywgMTkwLCAxNCwgMzUsIDIyLCA2LCAyMTcsIDEzMywgODcsIDE0LCAzNSwgCi0gICAgMjIsIDYsIDIyMCwgMTAzLCAxNCwgMzUsIDIyLCA2LCAyMTcsIDI0OCwgMTQsIDM1LCAyMiwgNiwgMjE1LCAxMjgsIDE0LCAKLSAgICAzNSwgMjIsIDYsIDIyNiwgOSwgMTQsIDM1LCAyMiwgNiwgMjUwLCA0NywgMTQsIDM1LCAyMiwgNiwgMjI1LCA0NiwgMTQsIAotICAgIDM1LCAyMiwgNiwgMjI3LCA2NywgMTQsIDM1LCAyMiwgMjMwLCAzOSwgMTQsIDM1LCAyMiwgMywgMjU0LCA1MiwgMTQsIDM1LCAKLSAgICAyMiwgMywgMjUxLCAyMDMsIDE0LCAzNSwgMjIsIDMsIDI0MywgODMsIDE0LCAzNSwgMjIsIDMsIDI0OCwgNSwgMTQsIDM1LCAKLSAgICAyMiwgMywgMjQ1LCA2MywgMTQsIDM1LCAyMiwgMywgMjEyLCA3OCwgMTQsIDM1LCAyMiwgMywgMjQ1LCAyOCwgMTQsIDM1LCAKLSAgICAyMiwgMywgMjE3LCAxMzIsIDE0LCAzNSwgMjIsIDMsIDIzNSwgMTgzLCAxNCwgMzUsIDIyLCAzLCAyMzQsIDIyNywgMTQsIAotICAgIDM1LCAyMiwgMywgMjMzLCAxMjIsIDE0LCAzNSwgMjIsIDMsIDIzMCwgMTcyLCAxNCwgMzUsIDIyLCAzLCAyMjgsIDkyLCAxNCwgCi0gICAgMzUsIDIyLCAzLCAyMTMsIDE0NSwgMTQsIDM1LCAyMiwgMywgMjI3LCA2NSwgMTQsIDM1LCAyMiwgMywgMjI1LCAyNDAsIDE0LCAKLSAgICAzNSwgMjIsIDMsIDIyMywgMTkwLCAxNCwgMzUsIDIyLCAzLCA0MCwgMjIwLCAxMDMsIDE0LCAzNSwgMjIsIDMsIDIyMCwgCi0gICAgMTAzLCAxNCwgMzUsIDIyLCAzLCAyMTcsIDI0OCwgMTQsIDM1LCAyMiwgMywgMjE1LCAxMjgsIDE0LCAzNSwgMjIsIDMsIAotICAgIDIyNiwgOSwgMTQsIDM1LCAyMiwgMywgMjUwLCA0NywgMTQsIDM1LCAyMiwgMywgMjI1LCA0NiwgMTQsIDM1LCAyMiwgMywgCi0gICAgMjI3LCA2NywgMTQsIDM1LCAyMiwgMjI2LCAxMjUsIDI0NywgMTg1LCAxNCwgMzUsIDIyLCAyNDUsIDY0LCA4NywgMTQsIDM1LCAKLSAgICAyMiwgMjE3LCAxMzMsIDg3LCAxNCwgMzUsIDIyLCAyMzQsIDIyOCwgODcsIDE0LCAzNSwgMjIsIDIyNiwgMTAsIDg3LCAxNCwgCi0gICAgMzUsIDIyLCAyMjMsIDE5MSwgODcsIDE0LCAzNSwgMjIsIDIyNSwgMjQxLCA4NywgMTQsIDM1LCAyMiwgMzIsIDYsIDI1NCwgCi0gICAgNTIsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNTEsIDIwMywgMTQsIDM1LCAyMiwgMzIsIDYsIDI0MywgODMsIDE0LCAzNSwgMjIsIAotICAgIDMyLCA2LCAyNDgsIDUsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDUsIDYzLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjEyLCA3OCwgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDYsIDI0NSwgMjgsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTcsIDEzMiwgMTQsIDM1LCAyMiwgMzIsIAotICAgIDYsIDIzNSwgMTgzLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjM0LCAyMjcsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMzMsIDEyMiwgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDYsIDIzMCwgMTcyLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjI4LCA5MiwgMTQsIDM1LCAyMiwgMzIsIAotICAgIDYsIDIxMywgMTQ1LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjI3LCA2NSwgMTQsIDM1LCAyMiwgMzIsIDYsIDIyNSwgMjQwLCAxNCwgCi0gICAgMzUsIDIyLCAzMiwgNiwgMjIzLCAxOTAsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTcsIDEzMywgODcsIDE0LCAzNSwgMjIsIDMyLCAKLSAgICA2LCAyMjAsIDEwMywgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNywgMjQ4LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjE1LCAxMjgsIAotICAgIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjYsIDksIDE0LCAzNSwgMjIsIDMyLCA2LCAyNTAsIDQ3LCAxNCwgMzUsIDIyLCAzMiwgNiwgCi0gICAgMjI1LCA0NiwgMTQsIDM1LCAyMiwgMzIsIDYsIDIyNywgNjcsIDE0LCAzNSwgMjIsIDMyLCAyMzAsIDM5LCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgMywgMjU0LCA1MiwgMTQsIDM1LCAyMiwgMzIsIDMsIDI1MSwgMjAzLCAxNCwgMzUsIDIyLCAzMiwgMywgMjQzLCA4MywgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDMsIDI0OCwgNSwgMTQsIDM1LCAyMiwgMzIsIDMsIDI0NSwgNjMsIDE0LCAzNSwgMjIsIDMyLCAzLCAKLSAgICAyMTIsIDc4LCAxNCwgMzUsIDIyLCAzMiwgMywgMjQ1LCAyOCwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxNywgMTMyLCAxNCwgMzUsIAotICAgIDIyLCAzMiwgMywgMjM1LCAxODMsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMzQsIDIyNywgMTQsIDM1LCAyMiwgMzIsIDMsIDIzMywgCi0gICAgMTIyLCAxNCwgMzUsIDIyLCAzMiwgMywgMjMwLCAxNzIsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjgsIDkyLCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgMywgMjEzLCAxNDUsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjcsIDY1LCAxNCwgMzUsIDIyLCAzMiwgMywgMjI1LCAyNDAsIAotICAgIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjMsIDE5MCwgMTQsIDM1LCAyMiwgMzIsIDMsIDQwLCAyMjAsIDEwMywgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDMsIDIyMCwgMTAzLCAxNCwgMzUsIDIyLCAzMiwgMywgMjE3LCAyNDgsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTUsIAotICAgIDEyOCwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyNiwgOSwgMTQsIDM1LCAyMiwgMzIsIDMsIDI1MCwgNDcsIDE0LCAzNSwgMjIsIAotICAgIDMyLCAzLCAyMjUsIDQ2LCAxNCwgMzUsIDIyLCAzMiwgMywgMjI3LCA2NywgMTQsIDM1LCAyMiwgMzIsIDIyNiwgMTI1LCAKLSAgICAyNDcsIDE4NSwgMTQsIDM1LCAyMiwgMzIsIDI0NSwgNjQsIDg3LCAxNCwgMzUsIDIyLCAzMiwgMjE3LCAxMzMsIDg3LCAxNCwgCi0gICAgMzUsIDIyLCAzMiwgMjM0LCAyMjgsIDg3LCAxNCwgMzUsIDIyLCAzMiwgMjI2LCAxMCwgODcsIDE0LCAzNSwgMjIsIDMyLCAKLSAgICAyMjMsIDE5MSwgODcsIDE0LCAzNSwgMjIsIDMyLCAyMjUsIDI0MSwgODcsIDE0LCAyMiwgNiwgMjQ3LCAxNzksIDE0LCAyMiwgCi0gICAgMywgMjQ3LCAxNzksIDE0LCAyMiwgMjEsIDIxMiwgNzksIDE0LCAyMiwgMjEsIDExNiwgMTQsIDIyLCAyMSwgMTA5LCAxNCwgCi0gICAgMjIsIDIxLCAxNjYsIDE0LCAyMiwgMjEsIDE2MywgMTQsIDIyLCAyMSwgMTgwLCAxNCwgMjIsIDIxLCAxODksIDE0LCAyMiwgCi0gICAgMjEsIDE5OCwgMTQsIDIyLCAyMSwgMTk1LCAxNCwgMjIsIDIxLCAyMDAsIDE0LCAxODcsIDIxLCAyMTIsIDc5LCAxNCwgMTg3LCAKLSAgICAyMSwgMTE2LCAxNCwgMTg3LCAyMSwgMTA5LCAxNCwgMTg3LCAyMSwgMTY2LCAxNCwgMTg3LCAyMSwgMTYzLCAxNCwgMTg3LCAKLSAgICAyMSwgMTgwLCAxNCwgMTg3LCAyMSwgMTg5LCAxNCwgMTg3LCAyMSwgMTk4LCAxNCwgMTg3LCAyMSwgMTk1LCAxNCwgMTg3LCAKLSAgICAyMSwgMjAwLCAxNCwgMzUsIDIxLCAyMTIsIDc5LCAxNCwgMzUsIDIxLCAxMTYsIDE0LCAzNSwgMjEsIDEwOSwgMTQsIDM1LCAKLSAgICAyMSwgMTY2LCAxNCwgMzUsIDIxLCAxNjMsIDE0LCAzNSwgMjEsIDE4MCwgMTQsIDM1LCAyMSwgMTg5LCAxNCwgMzUsIDIxLCAKLSAgICAxOTgsIDE0LCAzNSwgMjEsIDE5NSwgMTQsIDM1LCAyMSwgMjAwLCAxNCwgMzUsIDIyLCAyMSwgMjEyLCA3OSwgMTQsIDM1LCAKLSAgICAyMiwgMjEsIDExNiwgMTQsIDM1LCAyMiwgMjEsIDEwOSwgMTQsIDM1LCAyMiwgMjEsIDE2NiwgMTQsIDM1LCAyMiwgMjEsIAotICAgIDE2MywgMTQsIDM1LCAyMiwgMjEsIDE4MCwgMTQsIDM1LCAyMiwgMjEsIDE4OSwgMTQsIDM1LCAyMiwgMjEsIDE5OCwgMTQsIAotICAgIDM1LCAyMiwgMjEsIDE5NSwgMTQsIDM1LCAyMiwgMjEsIDIwMCwgMTQsIDIzMCwgMjA4LCAyMSwgMjEyLCA3OSwgMTQsIDIzMCwgCi0gICAgMjA4LCAyMSwgMTE2LCAxNCwgMjMwLCAyMDgsIDIxLCAxMDksIDE0LCAyMzAsIDIwOCwgMjEsIDE2NiwgMTQsIDIzMCwgMjA4LCAKLSAgICAyMSwgMTYzLCAxNCwgMjMwLCAyMDgsIDIxLCAxODAsIDE0LCAyMzAsIDIwOCwgMjEsIDE4OSwgMTQsIDIzMCwgMjA4LCAyMSwgCi0gICAgMTk4LCAxNCwgMjMwLCAyMDgsIDIxLCAxOTUsIDE0LCAyMzAsIDIwOCwgMjEsIDIwMCwgMjMyLCAxMCwgODUsIDI0NSwgMTc2LCAKLSAgICAyMTMsIDIyNCwgMjMyLCAxMCwgODUsIDIxOSwgMjE1LCAyMTMsIDIyNCwgMjMyLCAxMCwgODUsIDIxMywgMjUwLCAyMTMsIAotICAgIDIyNCwgMjMyLCAxMCwgODUsIDIyOCwgMTY3LCAyMTMsIDIyNCwgMjMyLCAxMCwgODUsIDIyNCwgNCwgMjQ2LCA1MCwgMjMyLCAKLSAgICAxMCwgODUsIDI0MiwgMTA0LCAyNDYsIDUwLCAyMzIsIDEwLCA4NSwgNjcsIDI0NiwgNTAsIDIzMiwgMTAsIDg1LCAxMjIsIAotICAgIDY1LCAyNTAsIDc3LCAyMzIsIDEwLCA4NSwgMTE3LCA2NSwgMjUwLCA3NywgMjMyLCAxMCwgODUsIDEzMywgNjUsIDI1MCwgCi0gICAgNzcsIDIzMiwgMTAsIDg1LCAyNDMsIDIzNywgNjUsIDI1MCwgNzcsIDIzMiwgMTAsIDg1LCAyNDQsIDUwLCA2NSwgMjUwLCAKLSAgICA3NywgMjMyLCAxMCwgODUsIDIyMCwgNTMsIDY1LCAyNTAsIDc3LCAyMzIsIDEwLCA4NSwgMjIxLCA0MywgNjUsIDI1MCwgNzcsIAotICAgIDIzMiwgMTAsIDg1LCAyNDUsIDE1MCwgNjUsIDI1MCwgNzcsIDIzMiwgMTAsIDg1LCAyMjksIDMxLCA2NSwgMjUwLCA3NywgCi0gICAgMjMyLCAxMCwgODUsIDEyMiwgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAxMTcsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCAKLSAgICA4NSwgMTMzLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIDI0MywgMjM3LCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIAotICAgIDI0NCwgNTAsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgMjIwLCA1MywgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAKLSAgICAyMjEsIDQzLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIDI0NSwgMTUwLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIAotICAgIDIyOSwgMzEsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgMTIyLCA2NSwgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAxMTcsIAotICAgIDY1LCAyNDksIDIyNywgMjMyLCAxMCwgODUsIDEzMywgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjQzLCAyMzcsIDY1LCAKLSAgICAyNDksIDIyNywgMjMyLCAxMCwgODUsIDI0NCwgNTAsIDY1LCAyNDksIDIyNywgMjMyLCAxMCwgODUsIDIyMCwgNTMsIDY1LCAKLSAgICAyNDksIDIyNywgMjMyLCAxMCwgODUsIDIyMSwgNDMsIDY1LCAyNDksIDIyNywgMjMyLCAxMCwgODUsIDI0NSwgMTUwLCA2NSwgCi0gICAgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyMjksIDMxLCA2NSwgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyMjUsIDE1OSwgMjMyLCAKLSAgICAxMCwgODUsIDIyNywgMjIsIDIzMiwgMTAsIDg1LCAyNTIsIDczLCAyMzIsIDEwLCA4NSwgMjUwLCA3LCAyMzIsIDEwLCA4NSwgCi0gICAgMjE5LCAxNzEsIDIzMiwgMTAsIDg1LCAyMTgsIDI0MCwgMjMyLCAxMCwgODUsIDI1MywgOTUsIDIzMiwgMTAsIDg1LCAyMTMsIAotICAgIDIxNywgMjMyLCAxMCwgODUsIDIzNSwgNjUsIDIzMiwgMTAsIDg1LCAyNTIsIDEwMSwgMTI3LCA4NSwgMTk5LCAyNTIsIDEwMSwgCi0gICAgMTI3LCA4NSwgMjQxLCAzMCwgMTI3LCA4NSwgMjQxLCAyOSwgMTI3LCA4NSwgMjQxLCAyOCwgMTI3LCA4NSwgMjQxLCAyNywgCi0gICAgMTI3LCA4NSwgMjQxLCAyNiwgMTI3LCA4NSwgMjQxLCAyNSwgMTI3LCA4NSwgMjQxLCAyNCwgMTI3LCA4NSwgMjQxLCAyMywgCi0gICAgMTI3LCA4NSwgMjQxLCAyMiwgMTI3LCA4NSwgMjQxLCAyMSwgMTI3LCA4NSwgMjQxLCAyMCwgMTI3LCA4NSwgMjQxLCAxOSwgCi0gICAgMTI3LCA4NSwgMjQxLCAxOCwgMTI3LCA4NSwgMjQxLCAxNywgMTI3LCA4NSwgMjQxLCAxNiwgMTI3LCA4NSwgMjQxLCAxNSwgCi0gICAgMTI3LCA4NSwgMjQxLCAxNCwgMTI3LCA4NSwgMjQxLCAxMywgMTI3LCA4NSwgMjQxLCAxMiwgMTI3LCA4NSwgMjQxLCAxMSwgCi0gICAgMTI3LCA4NSwgMjQxLCAxMCwgMTI3LCA4NSwgMjQxLCA5LCAxMjcsIDg1LCAyNDEsIDgsIDEyNywgODUsIDI0MSwgNywgMTI3LCAKLSAgICA4NSwgMjQxLCA2LCAxMjcsIDg1LCAyNDEsIDUsIDEyNywgODUsIDI0MSwgNCwgMTI3LCA4NSwgMjQxLCAzLCAxMjcsIDg1LCAKLSAgICAyNDEsIDIsIDEyNywgODUsIDI0MSwgMSwgMTI3LCA4NSwgMjQxLCAwLCAxMjcsIDg1LCAyNDAsIDI1NSwgMTI3LCA4NSwgCi0gICAgMjQwLCAyNTQsIDEyNywgODUsIDI0MCwgMjUzLCAxMjcsIDg1LCAyNDAsIDI1MiwgMTI3LCA4NSwgMjQwLCAyNTEsIDEyNywgCi0gICAgODUsIDI0MCwgMjUwLCAxMjcsIDg1LCAyNDAsIDI0OSwgMTI3LCA4NSwgMjQwLCAyNDgsIDEyNywgODUsIDI0MCwgMjQ3LCAKLSAgICAxMjcsIDg1LCAyNDAsIDI0NiwgMTI3LCA4NSwgMjQwLCAyNDUsIDEyNywgODUsIDI0MCwgMjQ0LCAxMjcsIDg1LCAyNDAsIAotICAgIDI0MywgMTI3LCA4NSwgMjQwLCAyNDIsIDEyNywgODUsIDI0MCwgMjQxLCAxMjcsIDg1LCAyNDAsIDI0MCwgMTI3LCA4NSwgCi0gICAgMjQwLCAyMzksIDEyNywgODUsIDI0MCwgMjM4LCAxMjcsIDg1LCA3MSwgMjUyLCAxMDEsIDEyNywgODUsIDIxNCwgMjE1LCAKLSAgICAxMjcsIDg1LCAyMTQsIDIxNCwgMTI3LCA4NSwgMjE0LCAyMTMsIDEyNywgODUsIDIxNCwgMjEyLCAxMjcsIDg1LCAyMTQsIAotICAgIDIxMSwgMTI3LCA4NSwgMjE0LCAyMTAsIDEyNywgODUsIDIxNCwgMjA5LCAxMjcsIDg1LCAyMTQsIDIwOCwgMTI3LCA4NSwgCi0gICAgMjE0LCAyMDcsIDEyNywgODUsIDIxNCwgMjA2LCAxMjcsIDg1LCAyMTQsIDIwNSwgMTI3LCA4NSwgMjE0LCAyMDQsIDEyNywgCi0gICAgODUsIDIxNCwgMjAzLCAxMjcsIDg1LCAyMTQsIDIwMiwgMTI3LCA4NSwgMjE0LCAyMDEsIDEyNywgODUsIDIxNCwgMjAwLCAKLSAgICAxMjcsIDg1LCAyMTQsIDE5OSwgMTI3LCA4NSwgMjE0LCAxOTgsIDEyNywgODUsIDIxNCwgMTk3LCAxMjcsIDg1LCAyMTQsIAotICAgIDE5NiwgMTI3LCA4NSwgMjE0LCAxOTUsIDEyNywgODUsIDIxNCwgMTk0LCAxMjcsIDg1LCAyMTQsIDE5MywgMTI3LCA4NSwgCi0gICAgMjE0LCAxOTIsIDEyNywgODUsIDIxNCwgMTkxLCAxMjcsIDg1LCAyMTQsIDE5MCwgMTI3LCA4NSwgMjE0LCAxODksIDEyNywgCi0gICAgODUsIDIxNCwgMTg4LCAxMjcsIDg1LCAyMTQsIDE4NywgMTI3LCA4NSwgMjE0LCAxODYsIDEyNywgODUsIDIxNCwgMTg1LCAKLSAgICAxMjcsIDg1LCAyMTQsIDE4NCwgMTI3LCA4NSwgMjE0LCAxODMsIDEyNywgODUsIDIxNCwgMTgyLCAxMjcsIDg1LCAyMTQsIAotICAgIDE4MSwgMTI3LCA4NSwgMjE0LCAxODAsIDEyNywgODUsIDIxNCwgMTc5LCAxMjcsIDg1LCAyMTQsIDE3OCwgMTI3LCA4NSwgCi0gICAgMjE0LCAxNzcsIDEyNywgODUsIDIxNCwgMTc2LCAxMjcsIDg1LCAyMTQsIDE3NSwgMTI3LCA4NSwgMjE0LCAxNzQsIDEyNywgCi0gICAgODUsIDIxNCwgMTczLCAxMjcsIDg1LCAyMTQsIDE3MiwgMTI3LCA4NSwgMjE0LCAxNzEsIDEyNywgODUsIDIxNCwgMTcwLCAKLSAgICAxMjcsIDg1LCAyMTQsIDE2OSwgMTI3LCA4NSwgMjE0LCAxNjgsIDEyNywgODUsIDIxNCwgMTY3LCAyMjUsIDE2NSwgMjUwLCAKLSAgICAxNzUsIDI1MiwgMTAxLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI1NCwgMTY5LCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIAotICAgIDE3NSwgMTE3LCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMTMzLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAKLSAgICAyNTAsIDE3NSwgMjQzLCAyMzcsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDQsIDUwLCA2NSwgMjE5LCAKLSAgICAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjIwLCA1MywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyMSwgCi0gICAgNDMsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDUsIDE1MCwgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgCi0gICAgMjUwLCAxNzUsIDIyOSwgMzEsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMTcsIDIwMSwgNjUsIDIxOSwgCi0gICAgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNSwgMTM3LCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM0LCAKLSAgICA0MCwgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyNCwgMTYwLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAKLSAgICAyNTAsIDE3NSwgMjM0LCA4OCwgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI1NCwgMTY5LCA2NSwgMjQxLCAKLSAgICAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMTE3LCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMTMzLCA2NSwgCi0gICAgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQzLCAyMzcsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAKLSAgICAyNDQsIDUwLCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjIwLCA1MywgNjUsIDI0MSwgMjA5LCAyMjUsIAotICAgIDE2NSwgMjUwLCAxNzUsIDIyMSwgNDMsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDUsIDE1MCwgNjUsIAotICAgIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyOSwgMzEsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAKLSAgICAyMTcsIDIwMSwgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNSwgMTM3LCA2NSwgMjQxLCAyMDksIDIyNSwgCi0gICAgMTY1LCAyNTAsIDE3NSwgMjM0LCA0MCwgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyNCwgMTYwLCA2NSwgCi0gICAgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM0LCA4OCwgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDI1NCwgMTY5LCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMTE3LCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAKLSAgICAyNTAsIDE3NSwgMTMzLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQzLCAyMzcsIDY1LCAyNDcsIDE5OSwgCi0gICAgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDQsIDUwLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjIwLCA1MywgCi0gICAgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyMSwgNDMsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgCi0gICAgMTc1LCAyNDUsIDE1MCwgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyOSwgMzEsIDY1LCAyNDcsIDE5OSwgCi0gICAgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMTcsIDIwMSwgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNSwgMTM3LCAKLSAgICA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM0LCA0MCwgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAKLSAgICAxNzUsIDIyNCwgMTYwLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM0LCA4OCwgNjUsIDI0NywgMTk5LCAKLSAgICAyMjUsIDE2NSwgMjUwLCAxNzUsIDgzLCAyMzUsIDY1LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI1NCwgMTY5LCA2NSwgMjQ5LCAKLSAgICAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMTE3LCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMTMzLCA2NSwgCi0gICAgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQzLCAyMzcsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAKLSAgICAyNDQsIDUwLCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjIwLCA1MywgNjUsIDI0OSwgMTc5LCAyMjUsIAotICAgIDE2NSwgMjUwLCAxNzUsIDIyMSwgNDMsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDUsIDE1MCwgNjUsIAotICAgIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyOSwgMzEsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAKLSAgICAyMTcsIDIwMSwgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNSwgMTM3LCA2NSwgMjQ5LCAxNzksIDIyNSwgCi0gICAgMTY1LCAyNTAsIDE3NSwgMjM0LCA0MCwgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyNCwgMTYwLCA2NSwgCi0gICAgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM0LCA4OCwgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDY3LCAyMzUsIDY1LCAyMSwgMjEyLCA4MCwgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAyMTIsIDgwLCAyNDksIDE1NywgMjEsIAotICAgIDEyMiwgMjQ5LCAxNTcsIDIxLCAxMTcsIDI0OSwgMTU3LCAyMSwgMTMzLCAyNDksIDE1NywgMjEsIDI0MywgMjM3LCAyNDksIAotICAgIDE1NywgMjEsIDI0NCwgNTAsIDI0OSwgMTU3LCAyMSwgMjIwLCA1MywgMjQ5LCAxNTcsIDIxLCAyMjEsIDQzLCAyNDksIDE1NywgCi0gICAgMjEsIDI0NSwgMTUwLCAyNDksIDE1NywgMjEsIDIyOSwgMzEsIDI0OSwgMTU3LCA4NiwgNywgNiwgMSwgNjEsIDg2LCA3LCA2LCAKLSAgICAxLCAyNTMsIDc0LCA4NiwgNywgNiwgMSwgMjUwLCAyNTIsIDg2LCA3LCA2LCAxLCAyNDksIDMsIDg2LCA3LCA2LCAxLCA3NCwgCi0gICAgODYsIDcsIDYsIDEsIDI0NCwgMjMwLCA4NiwgNywgNiwgMSwgMjQzLCAxNzcsIDg2LCA3LCA2LCAxLCAyNDIsIDQxLCA4NiwgCi0gICAgNywgNiwgMSwgNzIsIDg2LCA3LCA2LCAxLCAyMzUsIDE0MiwgODYsIDcsIDYsIDEsIDIzNSwgMjcsIDg2LCA3LCA2LCAxLCAKLSAgICAxNTAsIDg2LCA3LCA2LCAxLCAxODMsIDg2LCA3LCA2LCAxLCAyMDQsIDg2LCA3LCA2LCAxLCA3NSwgODYsIDcsIDYsIDEsIAotICAgIDIyNiwgMjI5LCA4NiwgNywgNiwgMSwgMjI0LCAyNDAsIDg2LCA3LCA2LCAxLCAxNDksIDg2LCA3LCA2LCAxLCAxOTcsIDg2LCAKLSAgICA3LCA2LCAxLCAyMTgsIDk5LCA4NiwgNywgNiwgMSwgNjksIDg2LCA3LCA2LCAxLCAyMTUsIDc5LCA4NiwgNywgNiwgMSwgCi0gICAgMjE0LCA4MiwgODYsIDcsIDYsIDEsIDIxMywgMTY2LCA4NiwgNywgNiwgMSwgMjEzLCAxMDUsIDg2LCA3LCA2LCAxLCAyMTIsIAotICAgIDE1MiwgMjE2LCAyMTksIDIyMCwgMjMzLCAyNTEsIDg0LCA3LCA2LCAxLCAxOTcsIDM2LCAzMiwgNywgNiwgMSwgMjUwLCAKLSAgICAyNTIsIDM2LCAzMiwgNywgNiwgMSwgMTQ5LCAzNiwgMjUwLCAxMjUsIDM2LCAyMTMsIDE2OCwgOTEsIDcsIDYsIDEsIDYxLCAKLSAgICA5MSwgNywgNiwgMSwgMjUzLCA3NCwgOTEsIDcsIDYsIDEsIDI1MCwgMjUyLCA5MSwgNywgNiwgMSwgMjQ5LCAzLCA5MSwgNywgCi0gICAgNiwgMSwgNzQsIDkxLCA3LCA2LCAxLCAyNDQsIDIzMCwgOTEsIDcsIDYsIDEsIDI0MywgMTc3LCA5MSwgNywgNiwgMSwgMjQyLCAKLSAgICA0MSwgOTEsIDcsIDYsIDEsIDcyLCA5MSwgNywgNiwgMSwgMjM1LCAxNDIsIDkxLCA3LCA2LCAxLCAyMzUsIDI3LCA5MSwgNywgCi0gICAgNiwgMSwgMTUwLCA5MSwgNywgNiwgMSwgMTgzLCA5MSwgNywgNiwgMSwgMjA0LCA5MSwgNywgNiwgMSwgNzUsIDkxLCA3LCA2LCAKLSAgICAxLCAyMjYsIDIyOSwgOTEsIDcsIDYsIDEsIDIyNCwgMjQwLCA5MSwgNywgNiwgMSwgMTQ5LCA5MSwgNywgNiwgMSwgMTk3LCAKLSAgICA5MSwgNywgNiwgMSwgMjE4LCA5OSwgOTEsIDcsIDYsIDEsIDY5LCA5MSwgNywgNiwgMSwgMjE1LCA3OSwgOTEsIDcsIDYsIDEsIAotICAgIDIxNCwgODIsIDkxLCA3LCA2LCAxLCAyMTMsIDE2NiwgOTEsIDcsIDYsIDEsIDIxMywgMTA1LCA5MSwgNywgNiwgMSwgMjEyLCAKLSAgICAxNTIsIDkxLCAyNDAsIDE5MywgOTEsIDIzMCwgMTIwLCA5MSwgMjIyLCAxMDIsIDkxLCAyMTksIDE1OCwgOTEsIDIyNSwgOTgsIAotICAgIDkxLCAyMTQsIDcsIDE0NiwgMzYsIDcsIDYsIDEsIDYxLCAxNDYsIDM2LCA3LCA2LCAxLCAyNTMsIDc0LCAxNDYsIDM2LCA3LCAKLSAgICA2LCAxLCAyNTAsIDI1MiwgMTQ2LCAzNiwgNywgNiwgMSwgMjQ5LCAzLCAxNDYsIDM2LCA3LCA2LCAxLCA3NCwgMTQ2LCAzNiwgCi0gICAgNywgNiwgMSwgMjQ0LCAyMzAsIDE0NiwgMzYsIDcsIDYsIDEsIDI0MywgMTc3LCAxNDYsIDM2LCA3LCA2LCAxLCAyNDIsIDQxLCAKLSAgICAxNDYsIDM2LCA3LCA2LCAxLCA3MiwgMTQ2LCAzNiwgNywgNiwgMSwgMjM1LCAxNDIsIDE0NiwgMzYsIDcsIDYsIDEsIDIzNSwgCi0gICAgMjcsIDE0NiwgMzYsIDcsIDYsIDEsIDE1MCwgMTQ2LCAzNiwgNywgNiwgMSwgMTgzLCAxNDYsIDM2LCA3LCA2LCAxLCAyMDQsIAotICAgIDE0NiwgMzYsIDcsIDYsIDEsIDc1LCAxNDYsIDM2LCA3LCA2LCAxLCAyMjYsIDIyOSwgMTQ2LCAzNiwgNywgNiwgMSwgMjI0LCAKLSAgICAyNDAsIDE0NiwgMzYsIDcsIDYsIDEsIDE0OSwgMTQ2LCAzNiwgNywgNiwgMSwgMTk3LCAxNDYsIDM2LCA3LCA2LCAxLCAyMTgsIAotICAgIDk5LCAxNDYsIDM2LCA3LCA2LCAxLCA2OSwgMTQ2LCAzNiwgNywgNiwgMSwgMjE1LCA3OSwgMTQ2LCAzNiwgNywgNiwgMSwgCi0gICAgMjE0LCA4MiwgMTQ2LCAzNiwgNywgNiwgMSwgMjEzLCAxNjYsIDE0NiwgMzYsIDcsIDYsIDEsIDIxMywgMTA1LCAxNDYsIDM2LCAKLSAgICA3LCA2LCAxLCAyMTIsIDE1MiwgMTQ2LCA5MSwgNywgNiwgMSwgNjEsIDE0NiwgOTEsIDcsIDYsIDEsIDI1MywgNzQsIDE0NiwgCi0gICAgOTEsIDcsIDYsIDEsIDI1MCwgMjUyLCAxNDYsIDkxLCA3LCA2LCAxLCAyNDksIDMsIDE0NiwgOTEsIDcsIDYsIDEsIDc0LCAKLSAgICAxNDYsIDkxLCA3LCA2LCAxLCAyNDQsIDIzMCwgMTQ2LCA5MSwgNywgNiwgMSwgMjQzLCAxNzcsIDE0NiwgOTEsIDcsIDYsIDEsIAotICAgIDI0MiwgNDEsIDE0NiwgOTEsIDcsIDYsIDEsIDcyLCAxNDYsIDkxLCA3LCA2LCAxLCAyMzUsIDE0MiwgMTQ2LCA5MSwgNywgNiwgCi0gICAgMSwgMjM1LCAyNywgMTQ2LCA5MSwgNywgNiwgMSwgMTUwLCAxNDYsIDkxLCA3LCA2LCAxLCAxODMsIDE0NiwgOTEsIDcsIDYsIAotICAgIDEsIDIwNCwgMTQ2LCA5MSwgNywgNiwgMSwgNzUsIDE0NiwgOTEsIDcsIDYsIDEsIDIyNiwgMjI5LCAxNDYsIDkxLCA3LCA2LCAKLSAgICAxLCAyMjQsIDI0MCwgMTQ2LCA5MSwgNywgNiwgMSwgMTQ5LCAxNDYsIDkxLCA3LCA2LCAxLCAxOTcsIDE0NiwgOTEsIDcsIDYsIAotICAgIDEsIDIxOCwgOTksIDE0NiwgOTEsIDcsIDYsIDEsIDY5LCAxNDYsIDkxLCA3LCA2LCAxLCAyMTUsIDc5LCAxNDYsIDkxLCA3LCAKLSAgICA2LCAxLCAyMTQsIDgyLCAxNDYsIDkxLCA3LCA2LCAxLCAyMTMsIDE2NiwgMTQ2LCA5MSwgNywgNiwgMSwgMjEzLCAxMDUsIAotICAgIDE0NiwgOTEsIDcsIDYsIDEsIDIxMiwgMTUyLCAyNDksIDY4LCAxNDYsIDkxLCA3LCA2LCAxLCAyMjYsIDIyOSwgMTQ2LCA5MSwgCi0gICAgMjQwLCAxMDYsIDE0NiwgOTEsIDE5MywgMTQ2LCA5MSwgMjIyLCAyMDIsIDE0NiwgOTEsIDI1NCwgMTg1LCAxNDYsIDkxLCAKLSAgICAyMTQsIDcsIDQxLCAyNDcsIDExNiwgOTEsIDI0OSwgMjE2LCA5MSwgMjQ5LCAxMDksIDkxLCAyNDMsIDIyMiwgOTEsIDI0MCwgCi0gICAgOTgsIDkxLCAyMjksIDE2OCwgOTEsIDIyOSwgMTYxLCA5MSwgMjI3LCA4MCwgOTEsIDIxOSwgMjIyLCA5MSwgMTE0LCAyLCAKLSAgICAyNDQsIDI1NCwgNzcsIDkxLCAyMTQsIDEwMCwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgNjEsIDIyMywgMjUzLCAyMzUsIAotICAgIDIzNiwgMTYsIDEsIDI1MywgNzQsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDI1MCwgMjUyLCAyMjMsIDI1MywgMjM1LCAKLSAgICAyMzYsIDE2LCAxLCAyNDksIDMsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDc0LCAyMjMsIDI1MywgMjM1LCAyMzYsIAotICAgIDE2LCAxLCAyNDQsIDIzMCwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjQzLCAxNzcsIDIyMywgMjUzLCAyMzUsIDIzNiwgCi0gICAgMTYsIDEsIDI0MiwgNDEsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDcyLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAKLSAgICAyMzUsIDE0MiwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjM1LCAyNywgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgCi0gICAgMTUwLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAxODMsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIwNCwgMjIzLCAKLSAgICAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgNzUsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIyNiwgMjI5LCAyMjMsIDI1MywgCi0gICAgMjM1LCAyMzYsIDE2LCAxLCAyMjQsIDI0MCwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMTQ5LCAyMjMsIDI1MywgMjM1LCAKLSAgICAyMzYsIDE2LCAxLCAxOTcsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIxOCwgOTksIDIyMywgMjUzLCAyMzUsIDIzNiwgCi0gICAgMTYsIDEsIDY5LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMTUsIDc5LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAKLSAgICAyMTQsIDgyLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMTMsIDE2NiwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgCi0gICAgMjEzLCAxMDUsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIxMiwgMTUyLCA0MSwgMTQyLCAyNDEsIDQ5LCA5MSwgNTYsIAotICAgIDIzNCwgMjcsIDkxLCA1NiwgMjIyLCAyMDIsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0MywgOTEsIDksIDIxNSwgMTQ4LCAKLSAgICAyMzgsIDQ3LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTUsIDkxLCA1NiwgMjQ4LCA0MSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIAotICAgIDYyLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDksIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAyMSwgOTEsIDksIDIxNSwgMTQ4LCAKLSAgICAyMzgsIDQ4LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNjEsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAzNSwgOTEsIDksIDIxNSwgCi0gICAgMTQ4LCAyMzgsIDI4LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzcsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1OCwgOTEsIDksIAotICAgIDIxNSwgMTQ4LCAyMzgsIDQ0LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNjAsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAzNiwgCi0gICAgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDU5LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjIsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAKLSAgICAyNywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDIwLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTAsIDkxLCA5LCAyMTUsIDE0OCwgCi0gICAgMjM4LCA1MiwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDMwLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDEsIDkxLCA5LCAyMTUsIAotICAgIDE0OCwgMjM4LCAzOSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDY1LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNjQsIDkxLCA5LCAKLSAgICAyMTUsIDE0OCwgMjM4LCAxOCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQ1LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNjMsIAotICAgIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1NCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQwLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgCi0gICAgMTksIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0MiwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDI0LCA5MSwgOSwgMjE1LCAxNDgsIAotICAgIDIzOCwgMjMsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1MywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDMxLCA5MSwgOSwgMjE1LCAKLSAgICAxNDgsIDIzOCwgMzMsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAzNCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDI2LCA5MSwgOSwgCi0gICAgMjE1LCAxNDgsIDIzOCwgNTcsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1MSwgMjE2LCAyMTksIDIyMCwgMjMzLCAyNTEsIDg0LCAKLSAgICA5LCAyMTUsIDE0OCwgMjM4LCAzMiwgMjE2LCAyMTksIDIyMCwgMjMzLCAyNTEsIDg0LCA5LCAyMTUsIDE0OCwgMjM4LCA2NCwgCi0gICAgMjE2LCAyMTksIDIyMCwgMjMzLCAyNTEsIDg0LCA5LCAyMTUsIDE0OCwgMjM4LCA2MiwgMjE2LCAyMTksIDIyMCwgMjMzLCAKLSAgICAyNTEsIDg0LCA5LCAyMTUsIDE0OCwgMjM4LCA0NiwgMjE2LCAyMTksIDIyMCwgMjMzLCAyNTEsIDg0LCA5LCAyMTUsIDE0OCwgCi0gICAgMjM4LCAyOSwgMjE2LCAyMTksIDIyMCwgMjMzLCAyNTEsIDg0LCA5LCAyMTUsIDE0OCwgMjM4LCA0MiwgMjE2LCAyMTksIAotICAgIDIyMCwgMjMzLCAyNTEsIDg0LCA5LCAyMTUsIDE0OCwgMjM4LCAyNSwgMjE2LCAyMTksIDIyMCwgMjMzLCAyNTEsIDg0LCA5LCAKLSAgICAyMTUsIDE0OCwgMjM4LCA1NiwgMjE2LCAyMTksIDIyMCwgMjMzLCAyNTEsIDg0LCA5LCAyMTUsIDE0OCwgMjM4LCAzOCwgMzYsIAotICAgIDE0MywgMjU0LCAxNTAsIDM2LCAxNDMsIDI1NCwgMTcyLCAyNDksIDE0LCAyNDQsIDExLCAyNDksIDE5MywgMjE1LCAxNjQsIAotICAgIDIyOSwgNDQsIDIsIDIxOSwgOTIsIDIxOCwgMjMzLCAxMTAsIDIzMCwgMTg0LCAyMTgsIDIzMiwgMjQ5LCAyMTksIDI1MywgCi0gICAgMTIzLCAyNDYsIDksIDIxOCwgMjMxLCAxMTAsIDI1MSwgNDcsIDIyNCwgNDksIDI1MSwgNjgsIDI1MywgMTIzLCAyMjksIDQzLCAKLSAgICAyMTQsIDI1LCAyMTQsIDE5LCAyMTQsIDExMiwgMjMxLCA4LCAyMTQsIDksIDI0NSwgMTgwLCAyNDIsIDE1NywgMjQ1LCAxMiwgCi0gICAgMjQ1LCAxODAsIDI0MiwgMTU3LCAyNTQsIDM3LCAyNDUsIDE4MCwgMjQyLCAxNTcsIDI1MywgMTQwLCAyNDIsIDE1NywgMiwgCi0gICAgMjMxLCAxMTUsIDE1NiwgMjMwLCAxOTksIDg3LCAyMTQsIDExLCAyNDksIDc3LCAyMzAsIDE5OSwgODcsIDI0NCwgNjEsIAotICAgIDIyNCwgMTY3LCAyMzAsIDE5OSwgODcsIDIxNCwgMTEsIDI0MiwgMTg2LCAyMzAsIDE5OSwgODcsIDI0MywgMjAwLCAyMzAsIAotICAgIDE5OSwgODcsIDIxNCwgMzYsIDI0MiwgMTg2LCAyMzAsIDE5OSwgODcsIDIzMywgMTAzLCAyMjQsIDE2NywgMjMwLCAxOTksIAotICAgIDg3LCAyMTQsIDM2LCAyNDksIDc3LCAyMzAsIDE5OSwgODcsIDI0OSwgNzcsIDIzMCwgMTk4LCAxNTYsIDIzMCwgMTk5LCAyLCAKLSAgICAyNDQsIDE1OCwgMjQ0LCA2MSwgMjI0LCAxNjcsIDIzMCwgMTk5LCAyLCAyNDQsIDE1OCwgMjMzLCAxMDMsIDIyNCwgMTY3LCAKLSAgICAyMzAsIDE5OSwgMiwgMjQ0LCAxNTgsIDI0MywgMjAwLCAyMzAsIDE5OSwgMiwgMjQ0LCAxNTgsIDIxOCwgMjM5LCAyLCAyNDQsIAotICAgIDE1OCwgMjQyLCAxNTUsIDIxOSwgOTUsIDIyMCwgMTc5LCAyMTksIDk1LCAyNTAsIDUzLCAyMjIsIDg3LCAyNDUsIDYsIDIxNiwgCi0gICAgMTkzLCAyNDgsIDM1LCAyMTYsIDE5MywgMjI2LCAxODYsIDIxNiwgMTkzLCAyNTAsIDIxMywgMjE2LCA3MywgMjUwLCA1NSwgCi0gICAgMjUxLCAxMzMsIDIyMywgOTMsIDI0MSwgMTY0LCAyMTgsIDIzNiwgMjUxLCAxMzMsIDI0NSwgMTg0LCA2NSwgMjMyLCAwLCAKLSAgICAyNDUsIDE4NCwgNjUsIDIyMywgMTg0LCAyNDEsIDE4OCwgMjQzLCAyMzcsIDIzMywgNzgsIDI0OSwgMTgzLCAyMzEsIDIzMywgCi0gICAgMjMzLCA3NywgMjQ0LCAxNDQsIDIzMywgNzcsIDIzMywgNzgsIDI0NCwgMTYsIDIzNSwgMjUyLCAyMTMsIDIyNCwgMjMwLCAKLSAgICAxMjgsIDIxNiwgMjQ1LCAyNTMsIDEwNywgMjQyLCAxMTksIDIzMSwgMTMxLCAyMTQsIDIzLCAyMTgsIDgsIDIzMywgNTAsIAotICAgIDI1MiwgNjgsIDIyNSwgMTk0LCAyMjQsIDQsIDI1MywgMjIzLCAyNDIsIDEwNCwgMjUzLCAyMjMsIDIyNiwgOTIsIDIyNiwgCi0gICAgOTMsIDI1MCwgNTYsIDIxOSwgNTQsIDI0MiwgNiwgMjIwLCAxOCwgNjUsIDIyNSwgMTc2LCAyMzEsIDE1MiwgMjI3LCA2MywgCi0gICAgMjUxLCAxMTksIDIyNSwgMTA5LCAyMzMsIDYwLCAyMjMsIDE4NSwgMjQ5LCA4MiwgMjIzLCAxODUsIDI1MiwgNzgsIDI0OSwgCi0gICAgMTEyLCAyMjMsIDE4NCwgMjQ5LCAzNiwgMjQsIDIyMywgMTg0LCAyMTksIDgxLCAyNTEsIDkzLCAyMTksIDIwMiwgMjUxLCAKLSAgICA3OCwgMjQzLCAyMjEsIDI0MywgMjE3LCAyMjMsIDEwOCwgMjE4LCAxOTEsIDIyNSwgMTExLCAyNDgsIDEyMCwgMjI3LCAxMDEsIAotICAgIDIxOCwgMjA4LCAyNDMsIDIxOCwgMjIwLCAxNTUsIDI0NCwgNjAsIDI1MCwgMjA5LCAyLCAyMTgsIDE4NCwgMjQ3LCAyNDIsIAotICAgIDIxOSwgMjM2LCAyNDAsIDEwNSwgMjQ5LCA4MSwgMjIwLCAyNTAsIDI0MCwgMTA0LCAyNDAsIDEwNSwgMjQ5LCA4MSwgMjQ2LCAKLSAgICA2MiwgMjQ5LCAxMTEsIDI1MCwgMjEsIDEzNCwgMjUwLCAxODYsIDIzMiwgMTk0LCAyNDksIDMwLCAyNDEsIDQxLCAyMjUsIAotICAgIDExMywgMjIwLCAxNjQsIDI1MSwgMjEzLCAyNTEsIDg5LCAyMjUsIDExNCwgNjUsIDI0NCwgMiwgMjQ5LCAxMTAsIDI0MywgCi0gICAgMjQ5LCAyNCwgMjM0LCA0MSwgMjE3LCAyMjcsIDIxMywgMjE2LCAyNDEsIDI1MiwgMjIyLCAxODMsIDI1MSwgMTAzLCAyNCwgCi0gICAgMjQ5LCA0MywgMjEzLCAyMjIsIDI0MiwgMTYwLCAyNDksIDE3MiwgMjQyLCAxNjAsIDIxNiwgMTUxLCAyNDYsIDQ1LCAyNTEsIAotICAgIDIzOCwgMjMwLCAxNjMsIDI0OSwgMjAwLCAyNTEsIDIzOCwgMjMwLCAxNjIsIDI1MiwgMTA0LCAyNTEsIDEwMiwgMjIzLCAKLSAgICAxODYsIDIxMywgMTg5LCAyMjUsIDc1LCAyNTEsIDE1OCwgMjUwLCAyMDgsIDIzNSwgMTM2LCAyNTAsIDE0LCAyMTYsIDE5MywgCi0gICAgMjQ0LCAxMzAsIDI1MCwgMTMsIDI0NCwgNjMsIDI0NCwgNjQsIDIxOSwgMjAwLCAyNTIsIDc3LCAyMjYsIDEyMiwgMjI1LCAKLSAgICAxMjQsIDI0OSwgMTQzLCAyNTIsIDc4LCAyMTgsIDEwLCAyMTYsIDE5MywgMjQ5LCA2OCwgMjQ0LCAzNiwgMjI1LCAxOTUsIAotICAgIDI0OCwgMzIsIDIzNSwgMTMxLCAyNDcsIDg1LCAyNTAsIDE2NCwgMjE5LCA1MywgMjEzLCAyMjUsIDI1MCwgMzUsIDIzMCwgCi0gICAgMTk5LCAyMTQsIDE0NCwgMjUwLCA5NiwgMjIyLCAxMTcsIDIyMiwgMTQxLCAyNDIsIDEyNCwgMjUwLCAxODMsIDI1MCwgMTY1LCAKLSAgICAyNDAsIDIzMiwgMjQ0LCA5OSwgMjEzLCAyNDEsIDIyMywgMTAyLCAyNDksIDE3MywgMjQ0LCA1NSwgMjI1LCAxMzYsIDI0LCAKLSAgICAyNDQsIDU5LCAyMzEsIDQwLCAyMzAsIDE3OCwgMjUwLCAxOTgsIDI0OSwgMjMyLCAyNDEsIDIxNiwgMjUzLCAxNTYsIDIyNiwgCi0gICAgMTg5LCAyMTYsIDIyNywgMjQxLCAyMzQsIDI0OSwgMjIyLCAyMTcsIDE5NSwgMjE3LCA2NywgMjQ5LCAyMTMsIDI1MSwgMTI1LCAKLSAgICAyMjYsIDUyLCAyNTMsIDE1NSwgMjE0LCAxNTAsIDI0MywgODYsIDI0NywgMTQ5LCAyNDEsIDE0MiwgMjIwLCAxMiwgMjMyLCAKLSAgICAzOSwgMjUxLCAxNjgsIDI0MywgODcsIDI0NywgMTkyLCAyNTEsIDkyLCAyNDQsIDIxLCAyMjUsIDE2NSwgMjUwLCAxNzMsIAotICAgIDI3LCAyMjgsIDE1OCwgMjMwLCAxNTUsIDI3LCAyMjgsIDE1MywgMjIyLCAxMzAsIDI0MiwgODAsIDI3LCAyMzQsIDE0MywgCi0gICAgMjE2LCAxNDgsIDIxNCwgMTM1LCAyNywgMjIyLCAxMTEsIDIyMywgMzUsIDIyMCwgMTkxLCAyLCAyMjIsIDE0MywgMjE3LCAKLSAgICAxOTcsIDIyNCwgNjgsIDI0LCAyNTIsIDc4LCAyMjAsIDMzLCAyNCwgMjIwLCAzMywgMjUxLCAxMTIsIDI1MiwgNDMsIDI0LCAKLSAgICAyNDEsIDM2LCAyNTAsIDU3LCAyNDQsIDQyLCAyMTksIDI0NywgMjIzLCAzNiwgMjE4LCAyMTIsIDIxNiwgMTUyLCAyNDAsIAotICAgIDIzMywgMjI0LCA2OSwgMjU0LCAzOCwgMjQ0LCAwLCAyMjMsIDQ3LCAyNDQsIDAsIDIxOCwgMTg2LCAyNDAsIDIyMiwgMjUxLCAKLSAgICA0OCwgMjQwLCAyMjIsIDIsIDI0MywgNzAsIDIyNywgOTUsIDI1MSwgNDgsIDIzNSwgMTMxLCAyMjUsIDExOSwgMjI3LCA5NCwgCi0gICAgMjQ1LCAxMSwgMjI1LCAxMTksIDIyNywgOTQsIDI0MCwgMjMxLCAyNTIsIDY0LCAyNTMsIDk3LCAyMTcsIDIwNSwgMjMyLCAKLSAgICAzOSwgMjQwLCAyMjcsIDIzMiwgMTY2LCAyNDAsIDIyNywgMjQ5LCAxMTUsIDIxOSwgNjUsIDIyMiwgMTE2LCAyNDcsIDI1MCwgCi0gICAgMjE5LCA2NSwgMjQ0LCAxNDgsIDIzNSwgMTQ3LCAyMzMsIDExMywgMjM1LCAxMzEsIDI1MCwgMTU4LCAyNDUsIDExLCAyNTAsIAotICAgIDE1OCwgMjI0LCAzMywgMjMwLCAxODIsIDIyNiwgMjM4LCAyMTQsIDI1LCAyNTEsIDUyLCAyNDksIDg0LCAyMTcsIDYwLCAKLSAgICAyMzMsIDQyLCAyMjQsIDcwLCAyNTAsIDE1NiwgMjQ2LCA1MCwgMjQ5LCA3NSwgMjEzLCAyNDQsIDIxOSwgMjU0LCAyMTksIAotICAgIDI1MiwgMjQwLCAyMzIsIDIyNCwgNDUsIDI0MiwgMTQ2LCAyMjAsIDIzNywgMjMwLCAyMTUsIDIyMywgOTYsIDI1MCwgNDUsIAotICAgIDI0NywgOTAsIDIyNSwgMjA1LCAyNTEsIDEyNiwgMjQ1LCAxMjYsIDIyNywgMTAzLCAyMTksIDE4NCwgMjIwLCAyMzIsIDI1MSwgCi0gICAgNTEsIDI1NCwgMywgMjQxLCA0MCwgMjMzLCAxNDQsIDI1MSwgMjM2LCAyNDQsIDU5LCAyMTYsIDE1MSwgMjQ0LCA1OSwgMjUxLCAKLSAgICAxMzIsIDIxNiwgNTUsIDI0MSwgMjMyLCAyNTAsIDQ2LCAyNTIsIDEwNCwgMjUwLCA0NiwgMjQzLCAyMTIsIDI1MiwgMTA0LCAKLSAgICAyNTAsIDQ2LCAyNTEsIDE2MCwgMjI2LCA3MCwgMjM0LCAzNSwgMjI1LCAxMjgsIDI0NiwgNDIsIDI1MCwgMTk5LCAyNTIsIAotICAgIDk1LCAyNTAsIDE5OSwgMjQ3LCA4NCwgMjMwLCAxODMsIDI0NCwgMTU4LCAyNDksIDg1LCAyNDQsIDE1OCwgMjE3LCA2MSwgCi0gICAgMjQ0LCAxNTgsIDIyNCwgNzEsIDI0NCwgMTU4LCAyNTAsIDE1NywgMjQ0LCAxNTgsIDI0NiwgNTEsIDI0NCwgMTU4LCAyMTksIAotICAgIDE3MywgMjEzLCAyNDQsIDI0MCwgMjMzLCAyNDQsIDE1OCwgMjMwLCAyMTYsIDI0NCwgMTU4LCAyNDcsIDkxLCAyNDQsIDE1OCwgCi0gICAgMjI1LCAyMDYsIDI0NCwgMTU4LCAyNDMsIDIxNSwgMjQ0LCAxNTgsIDI0MiwgMywgMjQ0LCAxNTgsIDIxMywgMjExLCAyNDQsIAotICAgIDE1OCwgMjUxLCAyNDcsIDI0NCwgMTU4LCAyMjYsIDE3MiwgMjQ0LCAxNTgsIDIyNSwgMjA2LCAyMjgsIDE2NCwgMjI2LCAKLSAgICAxMDYsIDIyNSwgNjcsIDI0NCwgMjM3LCAyNDUsIDE4MywgMjI4LCAxNjQsIDIzMCwgMTgwLCAyMTYsIDIzMiwgNjcsIDExNCwgCi0gICAgMjI1LCAxNDEsIDI1MiwgOTksIDIzNSwgMjM5LCA2NywgMTE5LCAyMjUsIDE0MSwgMjUyLCA5OSwgMjM1LCAyMzksIDY3LCAKLSAgICA0MiwgMjI1LCAxNDEsIDI1MiwgOTksIDIzNSwgMjM5LCA2NywgNDYsIDIyNSwgMTQxLCAyNTIsIDk5LCAyMzUsIDIzOSwgCi0gICAgMjQ0LCA1MywgMjQxLCAyNTUsIDUyLCAyMTQsIDE3LCAyNDEsIDI1NSwgNTIsIDIyNywgODEsIDI0MSwgMjU1LCA1MiwgMjE3LCAKLSAgICA4OSwgMTE0LCA1MiwgMjE3LCA4OSwgMTE5LCA1MiwgMjQ5LCAyMTIsIDI0MSwgMjUwLCA1MiwgMjI3LCA0MCwgMjQxLCAyNTAsIAotICAgIDUyLCAyNDksIDYzLCAyMTMsIDIwNywgMjQxLCAyMzQsIDI0NCwgMjM4LCAyMjksIDE4NSwgMjE4LCA5OCwgMjM1LCAxMjYsIAotICAgIDI0NiwgNDcsIDIzNCwgOTEsIDI1MSwgMTcwLCAyMTMsIDIwNywgMjQ5LCAxODYsIDIyNSwgMTQsIDI0MSwgMjUzLCAyMjUsIAotICAgIDExMCwgMjMxLCAyNDAsIDIyMCwgMTg0LCAyNTMsIDExOSwgMjIwLCAxODQsIDI0MSwgMTUwLCAyMjAsIDE4NCwgMjEzLCAKLSAgICAyMDcsIDIyMiwgMTU2LCAyMTMsIDIwNywgMjUxLCAxMTEsIDI0MywgMjU0LCAyNTEsIDE5LCAyMzUsIDI1MiwgMjIwLCA5NSwgCi0gICAgMjUxLCAxOCwgMjM1LCAyNTIsIDIyMCwgOTUsIDI1MSwgODgsIDI0MiwgMTcwLCAyMzEsIDI0OCwgMjEzLCAyMDgsIDI0NCwgCi0gICAgMTQyLCAyMzEsIDI0OSwgMjQsIDIxMywgMjA5LCAyNDEsIDQ2LCAyNDEsIDI0OSwgMTE3LCAyMzEsIDEyMywgMjQxLCA0NiwgCi0gICAgMjQxLCAyNDksIDExNywgMjEzLCAyMDYsIDI0MSwgNDYsIDI0MSwgMjQ5LCAyMjUsIDEzMywgMjI3LCA5MywgMjEzLCAyMDksIAotICAgIDIsIDI1MSwgMzUsIDI0NSwgMTgxLCAyNTEsIDY5LCAyLCAyMTQsIDIyMywgMjI2LCA0NCwgMiwgMjUxLCAxMzUsIDI0MiwgCi0gICAgMTYsIDIzMSwgMjQ5LCAyLCAyNDIsIDg5LCAyMjUsIDI0MSwgMjMxLCAyMzcsIDIzMSwgMjQ5LCAyLCAyMTYsIDYxLCAyMjcsIAotICAgIDc0LCAyMzEsIDI0OCwgMjI3LCA3NCwgMjEzLCAyMDgsIDI1MiwgMTAzLCAyNDksIDEyOSwgMjEzLCAxOTIsIDIyNSwgNzAsIAotICAgIDIzNSwgMTMxLCAyMjcsIDg5LCAyMzUsIDEzMSwgMjQyLCAxNDUsIDI0MiwgMTk4LCAyNTIsIDEwNCwgMjU0LCAyMiwgMjQ0LCAKLSAgICAyNDIsIDI1NCwgNjksIDI1NCwgNzAsIDIzMCwgMjA2LCAyMzYsIDEsIDIyMCwgMjgsIDIzNSwgMjI5LCAyNDcsIDI0MSwgCi0gICAgMjI2LCA0MywgMjQyLCA4NiwgMjQ4LCAxMjQsIDIzMiwgMjMwLCAyMzAsIDMwLCAyMjUsIDEzMiwgMjQ0LCAxNTksIDIzMSwgCi0gICAgMjA1LCAyNDIsIDE1LCAyNTIsIDU4LCAyMjUsIDEzNSwgMjE4LCAxMTcsIDIyNSwgMTk4LCAyMzQsIDczLCA3NywgMjMyLCAKLSAgICAxNjYsIDIzMywgMzQsIDIyMywgMTMwLCAyNDMsIDMwLCAyMTksIDcxLCAyMzQsIDcyLCAyNTEsIDk3LCAyNDksIDg3LCAyLCAKLSAgICAyNDEsIDIxMSwgMjE0LCAzLCAyNTEsIDI0NSwgMjQxLCAyMTEsIDI1MSwgNjMsIDI0MSwgMjExLCAxMTcsIDI0MSwgMjA5LCAKLSAgICAyMTksIDE5OCwgMjQxLCAyMTEsIDI0MiwgOTgsIDI0MSwgMjExLCAyNDEsIDIxMiwgMiwgNjgsIDI1MSwgMTMxLCAyNDEsIAotICAgIDIxMSwgMjQyLCAxMDQsIDI0MSwgMjExLCAyMTMsIDMzLCAyNDEsIDIxMSwgMjI1LCAxNSwgMjQxLCAyMTEsIDI0MSwgMjEyLCAKLSAgICAyLCAyMjMsIDE4NiwgMjIzLCAxOTcsIDI0MSwgMjA5LCAyNDEsIDIxMiwgMjQ4LCAzMiwgMjQ3LCAyMDEsIDIyMSwgNSwgMiwgCi0gICAgMTE4LCA2MiwgMjM1LCAyMTIsIDI0NSwgMTI5LCAxNzcsIDI1MSwgNDUsIDI1NCwgMjEsIDg3LCAyNTEsIDEyMCwgMjIwLCAKLSAgICAyMCwgODcsIDI0OSwgMTY2LCA4NywgMjE5LCAxNzgsIDIxOCwgMTkzLCA4NywgMjQ2LCA0MCwgMjQ4LCAxMDIsIDg3LCAyMjUsIAotICAgIDE5OSwgNjUsIDIyNSwgMTI5LCAyNDQsIDMwLCAyNTEsIDE4MSwgMjQ3LCAxMTcsIDg3LCAyMTksIDE5MSwgMjUyLCA3NywgCi0gICAgMjE3LCAxMDIsIDI1MiwgNzcsIDY3LCAyNDQsIDIwLCAyNDAsIDIwMSwgMjI1LCAxMzksIDg3LCAyMzAsIDIxOSwgMjUyLCAKLSAgICA5MCwgMjQ5LCAzOSwgMjQ0LCAyNTUsIDEwNywgMjQ3LCA4NiwgNTIsIDI0OSwgNzksIDI1MCwgMTc0LCAyNTIsIDYzLCAyLCAKLSAgICAyMTMsIDMxLCA1MiwgMjUyLCA2MywgMiwgMjQ3LCA4NiwgNTIsIDI1MiwgNjMsIDIsIDI0NSwgMTQsIDUyLCAyNTIsIDYzLCAKLSAgICAyLCAyMjUsIDEwOCwgNTIsIDIzMCwgMjE5LCAyLCAyMTMsIDIyMCwgMjUwLCA3NCwgMiwgMjE1LCAxMjQsIDIxNiwgMTg5LCAKLSAgICAyNCwgMjEzLCAzMSwgNTIsIDIyMiwgOTcsIDIyNiwgNDIsIDI0OSwgMTQ3LCAyNTEsIDY3LCAyMzAsIDI1NSwgMjQ0LCAyNSwgCi0gICAgMjQ3LCAxMzcsIDIyNywgMjcsIDI0NywgMTQyLCAyNDYsIDQsIDI0NCwgNzYsIDI0NCwgOSwgMjI3LCA0MCwgMjQ0LCA3NiwgCi0gICAgMjQ0LCA5LCAyMjYsIDIwMSwgMiwgMjQ5LCA0MSwgMjI2LCAyMDEsIDI0NCwgMTUxLCAyMTUsIDEzNCwgMjUwLCAyMDQsIAotICAgIDIxNywgMjI2LCAyNTAsIDIwNCwgMjUwLCAxNzUsIDIzNSwgMjM5LCAyNTAsIDc0LCAyLCAyMTUsIDEyNCwgMjE2LCAxODgsIAotICAgIDI1MCwgNzQsIDIsIDI0NiwgNTgsIDIxNiwgMTg4LCAyNTIsIDYwLCAyNTAsIDczLCAyNDksIDE5OSwgMjI1LCAxMCwgMjIzLCAKLSAgICA4NywgMjI1LCAxMCwgMjI2LCAxNDcsIDIxOSwgNjEsIDIyMywgNDIsIDIxNiwgMTgwLCAyMjMsIDQyLCAyNTEsIDExNiwgCi0gICAgMjE4LCAzOSwgMjMzLCA3NSwgMjI4LCAxNTYsIDIyOCwgMTU3LCAyLCAyNDgsIDMxLCAyNDksIDg2LCAyNDksIDE5MywgMjUxLCAKLSAgICAxMTcsIDIyNywgNDAsIDI1MSwgMTE3LCAyNDIsIDEwNCwgMjUxLCAxMTcsIDI1MSwgMTMxLCAyNTEsIDExNywgMjI3LCAyMywgCi0gICAgMjUxLCAxMTcsIDI1MSwgMTE0LCAyMzAsIDI1LCAyNTIsIDkzLCAyMjIsIDEwNSwgMjMxLCAxMjQsIDIxNywgMjEwLCAyMjQsIAotICAgIDE2LCAyMjYsIDE5OSwgMjQ0LCAxMjcsIDIzMiwgMzksIDIyMiwgMTQwLCAyNTQsIDAsIDIyNSwgMzEsIDI1NCwgMTU3LCAKLSAgICAyMzIsIDE2OCwgMjUwLCA2MywgMjMxLCAxMzYsIDIyNiwgMjUzLCAyMTYsIDE5NiwgMjM1LCAyNDgsIDIxNiwgMTk2LCAyMjYsIAotICAgIDIwNiwgMjQ1LCAyMzYsIDg3LCAyMzUsIDI0NSwgMjQ1LCA3OCwgMjQ1LCA3OSwgMiwgMjQ2LCA1OCwgNzYsIDQ5LCAyNDksIAotICAgIDE5MywgMjMyLCA2LCAyLCAyMzIsIDE2MiwgMjQ0LCA0MiwgMjQ5LCAxOTMsIDIzMiwgNiwgMiwgMjI0LCA0OCwgMjQ0LCA0MiwgCi0gICAgMjI3LCA0MCwgMjMyLCA2LCAyLCAyMjQsIDQ4LCAyNDQsIDQyLCAyMjcsIDQwLCAyMzIsIDYsIDIsIDIzMiwgMTYyLCAyNDQsIAotICAgIDQyLCAyMjUsIDExNiwgMjI1LCAxMTcsIDI0MCwgMjM1LCAyMjksIDE2NiwgMjMwLCAyMjksIDIyNSwgMjQ5LCAyMzAsIDIyOSwgCi0gICAgMjI1LCAyNTAsIDIsIDk1LCA3NiwgMjUzLCAxMjMsIDIzMywgNzAsIDIxNCwgMTUzLCAyMzAsIDIyOCwgMjMwLCAyMjksIAotICAgIDIyNSwgMjUwLCAyMjcsIDk2LCAyMjgsIDE4NiwgMjMwLCAyMjksIDIyNSwgMjQ4LCAyNTQsIDEsIDIsIDI1MiwgNDksIDI1MCwgCi0gICAgMTk4LCAyMTQsIDE1MCwgMjUwLCAxOTgsIDIxNywgMjA3LCAyMjQsIDYzLCAyMTQsIDE0OSwgMjE2LCAyNSwgOTUsIDI1MywgCi0gICAgMTYyLCAyNDksIDE5NSwgOTUsIDI0LCAxMzIsIDIyNywgNDAsIDI0OSwgMjI5LCAyNTMsIDE2MiwgMjQ5LCAxOTUsIDk1LCAKLSAgICAyNCwgMTMyLCAyMjcsIDQwLCAyNDksIDIyOSwgMjUzLCAxNjMsIDIsIDM2LCAxMjIsIDIyNiwgMjQ0LCAyNDksIDE5NSwgCi0gICAgMjQ2LCA1OCwgMjQsIDIxNSwgMTI0LCAyMjcsIDQwLCAyNDksIDIyOSwgMjUzLCAxNjIsIDI1MywgMjU1LCAyNDYsIDU4LCAKLSAgICAyNCwgMjE1LCAxMjQsIDIyNywgNDAsIDI0OSwgMjI5LCAyNTMsIDE2MiwgMTE1LCAyNTEsIDY2LCA4NywgMTI0LCAyNTEsIAotICAgIDY2LCA4NywgMjE5LCAxOTUsIDIsIDI1MCwgMTkyLCA5MCwgMjE5LCAxOTQsIDIxOSwgMTk1LCAyLCAxMjIsIDIxOSwgMjE4LCAKLSAgICAyMTQsIDE5LCAyMTksIDE5NSwgMiwgMTMzLCAyMTksIDIxOCwgMjE0LCAxOCwgMjUyLCAzNSwgMjQ1LCAxMjksIDIyNSwgCi0gICAgMTYxLCAyMzMsIDY2LCAyMzIsIDE2LCAyNDIsIDE2MCwgMjIzLCAxNDQsIDIzMiwgMTYsIDI0MiwgMTYwLCAyMzIsIDIwNCwgCi0gICAgMiwgMjM1LCAyMjIsIDIyNiwgNzQsIDI0OSwgMTkzLCAyMzIsIDIwNCwgMiwgMjM0LCAxNDQsIDIzNCwgMTQ0LCAyMzIsIAotICAgIDIwMywgMjI3LCA0MCwgMjMyLCAyMDMsIDI1MSwgMjIxLCAyNTEsIDIyMiwgMiwgMjUwLCAxOTIsIDkwLCAyNTEsIDExNSwgCi0gICAgMjMyLCAyMzMsIDg3LCAyMjQsIDY0LCAyNTEsIDE1LCAyNTIsIDEwMiwgMiwgMTMyLCA3NiwgNDksIDI0NSwgMTAxLCAyLCAKLSAgICAxMzIsIDc2LCA0OSwgMjI3LCA2MywgMiwgMjQ0LCAyNTQsIDE1MiwgMiwgNDIsIDQ2LCA3NiwgNDksIDIxOSwgMjI1LCAyLCAKLSAgICA5NSwgNzYsIDQ5LCAyMTYsIDIyNywgMiwgMjE1LCAxMjQsIDc2LCA0OSwgMjI4LCAxODYsIDEyMiwgMjE1LCAxNTQsIDI0NSwgCi0gICAgMTQ4LCA4NywgMjM0LCAxNDIsIDIxNywgMjAwLCAyMzUsIDIxNiwgMTYsIDMxLCA3LCA2LCAyMzMsIDMzLCAyMzUsIDIxNiwgCi0gICAgMTYsIDMxLCA3LCAzLCAyMzMsIDMzLCAyMzUsIDIxNiwgMTYsIDMxLCAyMjgsIDU1LCAyMzUsIDIxNiwgMTYsIDMxLCAyMTgsIAotICAgIDEyOCwgMjM1LCAyMTYsIDE2LCAzMSwgNywgMjMzLCAzMywgMjQ0LCA2NSwgMjQ1LCAxMjksIDIxNiwgMjIyLCAyMTMsIDE4NywgCi0gICAgMjQyLCA0LCAyMjgsIDM4LCAyNCwgMjUxLCAxMjEsIDI0MSwgNTIsIDIyNSwgMTgyLCAyMzEsIDM5LCAyMTcsIDIwOCwgMjQ5LCAKLSAgICA1NCwgMjUyLCA3OCwgMjIwLCA1MywgMjI1LCAxNDMsIDIxOSwgOTYsIDIsIDIzMSwgMzcsIDI0NywgNzQsIDIzNSwgMTMxLCAKLSAgICAxNiwgMzEsIDI1MSwgMjMzLCAyMTYsIDE3OCwgMjQ1LCAxMTQsIDgzLCA0MSwgMjUxLCAxNSwgNjcsIDQxLCAyNTEsIDE1LCAKLSAgICAyMzMsIDEwOCwgMjI0LCA0LCAyNDksIDIyOCwgMjMzLCAxMDgsIDI1MSwgMTMxLCAyNDksIDIyOCwgMjMzLCAxMDgsIDIyNywgCi0gICAgMjMsIDI0NywgMjAwLCAyMzMsIDEwOCwgMjUxLCAxMzEsIDI0NywgMjAwLCAzLCAyMjcsIDIzLCAyNDcsIDIwMCwgMywgMjUxLCAKLSAgICAxMzEsIDI0NywgMjAwLCAyMTUsIDEzMywgMjI0LCA0LCAyMTYsIDE4MywgMjQ2LCA1OSwgMjI0LCA0LCAyMTYsIDE4MywgCi0gICAgMjE1LCAxMzMsIDMsIDIyNCwgNCwgMjE2LCAxODMsIDI0NiwgNTksIDMsIDIyNCwgNCwgMjE2LCAxODMsIDI0OSwgMTk3LCAKLSAgICAyNDQsIDE1OSwgMTIyLCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAxMTcsIDIyNywgMTA2LCAyNDksIDE5NywgCi0gICAgMjQ0LCAxNTksIDEzMywgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQzLCAyMzcsIDIyNywgMTA2LCAyNDksIAotICAgIDE5NywgMjQ0LCAxNTksIDI0NCwgNTAsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDIyMCwgNTMsIDIyNywgMTA2LCAKLSAgICAyNDksIDE5NywgMjQ0LCAxNTksIDIyMSwgNDMsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDI0NSwgMTUwLCAyMjcsIAotICAgIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjksIDMxLCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMTcsIDIwMSwgCi0gICAgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQ1LCAxMjUsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIAotICAgIDIxNiwgNDIsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDIyNywgNTgsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjE2LCAKLSAgICAyMiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMTcsIDk0LCAyNDksIDE5NywgMjQ0LCAxNTksIDI0MywgMjMzLCAyNDksIDE5NywgCi0gICAgMjQ0LCAxNTksIDI0NCwgNDgsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjIwLCA0OSwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjEsIAotICAgIDQyLCAyNDksIDE5NywgMjQ0LCAxNTksIDI0NSwgMTQ5LCAyNDksIDE5NywgMjQ0LCAxNTksIDIyOSwgMzAsIDI0OSwgMTk3LCAKLSAgICAyNDQsIDE1OSwgMjE3LCAxOTksIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQ1LCAxMjMsIDI0OSwgMTk3LCAyNDQsIDE1OSwgCi0gICAgMjE2LCA0MCwgMjMwLCAxODcsIDI0MywgMjAxLCAyMTYsIDI0NywgMjE2LCAyMTUsIDIxOSwgODgsIDY1LCAyMzMsIDExLCAKLSAgICAyMjAsIDk2LCA2NSwgMjM1LCAxMzIsIDIzMCwgMTc2LCAyNDIsIDEwMiwgMjQ0LCAxNTksIDIsIDIyMCwgMiwgMjQ0LCAyMzcsIAotICAgIDI0NCwgMTU5LCAyLCAyMTcsIDIyMiwgNjUsIDIzNSwgNTYsIDIyMCwgMiwgMjQ0LCAxNTksIDIsIDIyNywgNDAsIDIzMCwgCi0gICAgMTgwLCAyMjAsIDIsIDI0NCwgMTU5LCAyLCAyMjcsIDQwLCAyMzAsIDE4MSwgMjQsIDIyMCwgMiwgMjQ0LCAyMzcsIDIyMCwgCi0gICAgMiwgMjQ0LCAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgxLCAyNCwgMjQ5LCAxNjgsIDIxOCwgMTkyLCAyMjAsIDIsIDI0NCwgCi0gICAgMTU5LCAyLCAyMjcsIDQwLCAyMzAsIDE4MSwgMjQsIDIxNywgNTgsIDI0NCwgMjM3LCAyMjAsIDIsIDI0NCwgMTU5LCAyLCAKLSAgICAyNDIsIDgsIDIyMCwgMiwgMjQ0LCAxNTksIDIsIDI0MCwgMjM0LCAyMTMsIDIxOCwgMjQ0LCAxNTgsIDIyMCwgMiwgMjQ0LCAKLSAgICAxNTksIDIsIDIyMCwgMiwgMjQ0LCAyMzcsIDI0NCwgMTU5LCAyMjIsIDEzNSwgMjQ4LCAxMywgMjQ0LCAyLCAyMjMsIDIzOCwgCi0gICAgMjQ0LCAxNTgsIDIyMCwgMiwgMjQ0LCAxNTksIDIsIDI0MSwgMjEwLCAyNDQsIDIzNywgMjIwLCAyLCAyNDQsIDE1OSwgMiwgCi0gICAgMjE4LCAyMzQsIDIyMCwgMSwgMjQ0LCAxNTgsIDIyOSwgMTY5LCAyNDQsIDE1OCwgMjE1LCAxNTgsIDI0NCwgMTU4LCAyNDQsIAotICAgIDE1OSwgMiwgMjQ5LCAxNjgsIDIxOCwgMTkyLCAyMjYsIDY3LCAyNDQsIDE1OCwgMjQ5LCAxNDEsIDI0NCwgMTU4LCAyNDQsIAotICAgIDE1OSwgMjE3LCA5MSwgMTE4LCAyMzQsIDcyLCAyMzQsIDcxLCAyNDQsIDE1OSwgMiwgMjQ5LCAxOTMsIDI0NCwgMjM3LCAKLSAgICAyNDQsIDE1OSwgMiwgMjE5LCAzMSwgMjE2LCAyMzMsIDI0LCAyMTMsIDIxOCwgMjQ0LCAyMzksIDI0NCwgMTU5LCAyLCAyMTksIAotICAgIDMxLCAyMTYsIDIzMywgMjQsIDIxNywgNTgsIDI0NCwgMjM3LCAyNDcsIDE0NCwgMjQ0LCAxNTgsIDI1NCwgMTcsIDI0NCwgCi0gICAgMTU4LCAyMjUsIDEwNywgMjQ0LCAxNTgsIDI0OSwgNTYsIDI0NCwgMTU4LCAyMjYsIDQ2LCAyNDQsIDE1OCwgMjQ0LCAxNTksIAotICAgIDIsIDIzMiwgMTc5LCA2NSwgMjE2LCAxNjIsIDI0NywgMTQ0LCAyNTEsIDE3LCAyMjMsIDIzOCwgMjQ0LCAxNTgsIDI0NCwgCi0gICAgMTIxLCAyNDQsIDE1OCwgMjE0LCA0LCAyNDQsIDE1OCwgMjIwLCAxOSwgMjQ0LCAxNTgsIDIxNywgMjQsIDI0NCwgMTU4LCAKLSAgICAyMzIsIDE2OSwgMjQ5LCA1NiwgMjQ0LCAxNTgsIDI0NCwgMTU5LCAyLCAyMjcsIDQwLCAyMzAsIDE4MSwgMjQsIDI0OSwgCi0gICAgMTY4LCAyMTgsIDE5MiwgMjQ0LCAxNTksIDIyMiwgMTA5LCAyMzUsIDI1MiwgMjQ0LCAxMjIsIDI1MywgMTI5LCAyNDQsIAotICAgIDE1OCwgMjQ0LCAxOCwgMjQ0LCAxNTgsIDI0NywgMTE3LCAyNDQsIDE1OCwgMjQ0LCAxNTksIDIxMywgMjE2LCAyMzAsIDE4MCwgCi0gICAgMjQ0LCAxNTksIDIsIDIzMSwgMTQ5LCAyMzEsIDIwNywgMjQyLCAxMDIsIDI1MCwgMTU3LCAyNDQsIDE1OSwgMiwgMjIwLCAyLCAKLSAgICAyNDQsIDIzNywgMjUwLCAxNTcsIDI0NCwgMTU5LCAyLCAyMTcsIDIyMiwgNjUsIDIzNSwgNTYsIDIyMCwgMiwgMjUwLCAxNTcsIAotICAgIDI0NCwgMTU5LCAyLCAyMjcsIDQwLCAyMzAsIDE4MCwgMjIwLCAyLCAyNTAsIDE1NywgMjQ0LCAxNTksIDIsIDI0MSwgMjEwLCAKLSAgICAyNDQsIDIzNywgMjUwLCAxNTcsIDI0NCwgMTU5LCAyLCAyMTMsIDE4NCwgMjIwLCAzLCAyMzQsIDcxLCAyNTAsIDE1NywgCi0gICAgMjQ0LCAxNTksIDIsIDI0OSwgMTkzLCAyNDQsIDIzNywgMjI1LCAxMDcsIDI1MCwgMTU3LCAyNDQsIDE1OCwgMjQ5LCA1NiwgCi0gICAgMjUwLCAxNTcsIDI0NCwgMTU4LCAyMTQsIDQsIDI1MCwgMTU3LCAyNDQsIDE1OCwgMjQ0LCAxNTksIDIsIDIyOCwgMTg2LCAKLSAgICAyNDIsIDEzOSwgMjQzLCAxMCwgMjQ0LCAxNTksIDIsIDIyNywgODEsIDI0MywgMTAsIDIyNiwgNDQsIDI1MSwgOTQsIDI0OCwgCi0gICAgMjYsIDIyMiwgODgsIDIzMCwgMjE1LCAyNDEsIDIxMywgMjMwLCAyMTUsIDIxOSwgMTk2LCAyMzAsIDIxNSwgMjQxLCAyNDQsIAotICAgIDIyNiwgNDQsIDIyNCwgNDcsIDEyMiwgMjQxLCAyNTQsIDIyNiwgNDQsIDIyNCwgNDcsIDI1MSwgMTA0LCAyNDEsIDI1MCwgCi0gICAgMjM1LCAyNTIsIDI1MCwgMTEzLCAyMjYsIDQ0LCAyNDMsIDIwOCwgMjI2LCA0NCwgMiwgMjI1LCAxMDcsIDI0NCwgMTU4LCAKLSAgICAyMjYsIDQ0LCAyLCAyNDQsIDEwLCAyNDEsIDI0OSwgMjIzLCAxMDQsIDI0MSwgMTk4LCAyMTksIDgzLCAyMzIsIDIwMiwgCi0gICAgMjI0LCA1MywgMjUwLCAxNzYsIDI0MSwgMTQ4LCAyMTYsIDIwNSwgMjQxLCAxNDgsIDIxNiwgMjA2LCAyLCAyNTEsIDQzLCAKLSAgICAyMjgsIDE2NCwgMjE2LCAyMDUsIDIzMSwgOTksIDE3NywgMjI0LCA1NCwgMjE5LCA4OSwgMjE2LCAyMDMsIDIxNiwgMjA0LCAKLSAgICAyNTAsIDE3NiwgMjUxLCAyMSwgMjI3LCA2MCwgMjUxLCAyMSwgMjE2LCAxNTksIDI1MSwgMjIsIDIxOSwgNjksIDIzMSwgMCwgCi0gICAgMjU0LCAzOSwgMjQ0LCA2NiwgMjQ1LCA5NSwgMjI1LCAxMzMsIDI1MCwgMTc2LCAyMjcsIDYwLCAyMjUsIDEzMywgMjUwLCAKLSAgICAxNzYsIDIxNywgMjM5LCAyMjcsIDYwLCAyMTcsIDIzOSwgMjUzLCA5NiwgMjI3LCA2MCwgMjUzLCA5NiwgMjI0LCAxMSwgCi0gICAgMjE0LCAyMjQsIDI0OCwgOSwgMjE2LCAxNTAsIDI1MywgMTU3LCAyMzIsIDE3MiwgMjE2LCAyMTEsIDIzMCwgMjA5LCAyMzAsIAotICAgIDE4NiwgMjI0LCA1MiwgMjE4LCAyMDcsIDIyNCwgNTIsIDIzMCwgMTg2LCAyNTAsIDIxNCwgMjU0LCAxMzQsIDIxNiwgMjAyLCAKLSAgICAyMjAsIDE5NiwgMjIzLCA4NCwgMjE5LCAxODksIDE5OSwgMjE2LCAyMDksIDIzMywgMiwgNzEsIDIxNiwgMjA5LCAyMzMsIDIsIAotICAgIDI0OSwgMTI5LCA1MiwgMjI1LCAxMzMsIDI1MCwgMTYxLCAyMjMsIDE5NywgMjMzLCAyLCAyMTYsIDE4MCwgMjQ0LCA0MywgCi0gICAgMjI3LCA2MywgMjI1LCAxMTgsIDI0NywgNzcsIDIyOCwgMTg2LCAyNDUsIDg0LCA1MiwgMjIwLCAwLCA4NywgMjI4LCAxODYsIAotICAgIDIyMCwgMCwgODcsIDIyNSwgOSwgMjMyLCAyMjIsIDIzNSwgMjUyLCAyMzUsIDE1NSwgMjI1LCAxNzMsIDg3LCAyNDcsIDEwMCwgCi0gICAgMjI4LCAxNjMsIDIzMiwgMjIyLCA4NywgMjI1LCAxMTIsIDIxNCwgMjUsIDg3LCAyMjgsIDE3NywgMjE0LCAyNSwgODcsIAotICAgIDI1MSwgMTgwLCAyMjgsIDE4NiwgMjUxLCAxNzksIDI1MSwgMTc4LCAyMzAsIDE4NiwgMjUxLCAxNzgsIDIyNiwgODgsIDIyOCwgCi0gICAgMTg2LCAyMjYsIDg3LCAyNTAsIDM3LCAyNDksIDY0LCAyMzEsIDEyMCwgODcsIDIxMywgMjA1LCA4NywgMjIzLCAyMTEsIAotICAgIDI1MiwgMTA0LCA4NywgMjE2LCAyNDgsIDIxNCwgMjUsIDI0OSwgMTkwLCAyMjAsIDE1OCwgMjUyLCAzOCwgMjUyLCAzNiwgCi0gICAgMjI2LCAxMTUsIDI0OSwgMTE2LCAyNDksIDI4LCAyNTIsIDg3LCAyNDksIDIxNSwgNDIsIDIzMiwgMTQ4LCAxMDQsIDE2LCAKLSAgICAzMSwgMjI0LCAxNDgsIDEwNCwgMTYsIDMxLCAyNTQsIDEwMCwgMTA0LCAxNiwgMzEsIDI0NCwgNjUsIDEwNCwgMTYsIDMxLCAKLSAgICAyNDUsIDE3OSwgMTA0LCAxNiwgMzEsIDIxNCwgMjQsIDEwNCwgMTYsIDMxLCAyNTMsIDIxMywgMTA0LCAxNiwgMzEsIDI1MywgCi0gICAgMjE0LCAyMjMsIDI1NSwgMTA0LCAxNiwgMzEsIDI1MywgMjE0LCAyMjMsIDI1NCwgMTA0LCAxNiwgMzEsIDI1MywgMjE0LCAKLSAgICAyMTQsIDEyNCwgMTA0LCAxNiwgMzEsIDI1MywgMjE0LCAyMTQsIDEyMywgMTA0LCAxNiwgMzEsIDIxNCwgMTM4LCAxMDQsIAotICAgIDE2LCAzMSwgMjE0LCAxMzcsIDEwNCwgMTYsIDMxLCAyMTQsIDEzNiwgMTA0LCAxNiwgMzEsIDIxOCwgMjQ1LCAxMDQsIDE2LCAKLSAgICAzMSwgMjI2LCAxLCAyMTgsIDI0NSwgMTA0LCAxNiwgMzEsIDgzLCAyMTgsIDI0NSwgMTA0LCAxNiwgMzEsIDIzMSwgMTE5LCAKLSAgICAyMTksIDE2LCAxMDQsIDE2LCAzMSwgMjMxLCAxMTksIDIxOSwgMTUsIDEwNCwgMTYsIDMxLCAyMzEsIDExOSwgMjE5LCAxNCwgCi0gICAgMTA0LCAxNiwgMzEsIDI0OSwgMjMxLCAxMDQsIDE2LCAzMSwgMjIyLCAxNzIsIDEwNCwgMTYsIDMxLCAyMjksIDE5LCAxMDQsIAotICAgIDE2LCAzMSwgMjE0LCAxMjIsIDEwNCwgMTYsIDMxLCAyMTQsIDEyMSwgMTA0LCAxNiwgMzEsIDIyMywgMTA1LCAyMjIsIDE3MiwgCi0gICAgMTA0LCAxNiwgMzEsIDIyMywgMTA1LCAyMjIsIDE3MSwgMTA0LCAxNiwgMzEsIDI0MiwgMTQyLCAxMDQsIDE2LCAzMSwgMjIwLCAKLSAgICA5MiwgMTA0LCAxNiwgMzEsIDIzNSwgMTc1LCAyMjcsIDIwLCAxMDQsIDE2LCAzMSwgMjM1LCAxNzUsIDIyNywgMTksIDEwNCwgCi0gICAgMTYsIDMxLCAyNDksIDc0LCA2NSwgMjM1LCAxNzQsIDEwNCwgMTYsIDMxLCAyMjMsIDI1MSwgNjUsIDIzNSwgMTc0LCAxMDQsIAotICAgIDE2LCAzMSwgMjQ5LCAxMDcsIDIyNywgMjAsIDEwNCwgMTYsIDMxLCAyMzUsIDE3MywgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIAotICAgIDIxOSwgMTcsIDY1LCAyNDksIDEwNiwgMTA0LCAxNiwgMzEsIDI0OSwgNzQsIDY1LCAyNDksIDEwNiwgMTA0LCAxNiwgMzEsIAotICAgIDI0OSwgNzQsIDY1LCAyNDksIDEwNSwgMTA0LCAxNiwgMzEsIDI0OSwgMTA3LCAyNTMsIDI1MCwgMTA0LCAxNiwgMzEsIDIyMiwgCi0gICAgMTczLCA2NSwgMjQ5LCAxMDcsIDI1MywgMjUwLCAxMDQsIDE2LCAzMSwgMjE5LCAxNywgNjUsIDIyMiwgMTczLCA2NSwgMjQ5LCAKLSAgICAxMDYsIDEwNCwgMTYsIDMxLCAyMTQsIDIyMCwgMTA0LCAxNiwgMzEsIDIxNywgMzcsIDIyNywgMjAsIDEwNCwgMTYsIDMxLCAKLSAgICAyMzMsIDgxLCAyMjcsIDIwLCAxMDQsIDE2LCAzMSwgMjUzLCAyNDksIDIyNywgMjAsIDEwNCwgMTYsIDMxLCAyMTksIDE3LCAKLSAgICA2NSwgMjUzLCAyNDgsIDEwNCwgMTYsIDMxLCAyMjIsIDE3MywgNjUsIDI1MywgMjQ4LCAxMDQsIDE2LCAzMSwgMjE5LCAxNywgCi0gICAgNjUsIDIyMiwgMTczLCA2NSwgMjUzLCAyNDgsIDEwNCwgMTYsIDMxLCAyMTQsIDEzOSwgNjUsIDI1MywgMjQ4LCAxMDQsIDE2LCAKLSAgICAzMSwgMjIzLCAyNTEsIDY1LCAyNTMsIDI0OCwgMTA0LCAxNiwgMzEsIDIyMywgMjUxLCA2NSwgMjUzLCAyNDcsIDEwNCwgMTYsIAotICAgIDMxLCAyMjMsIDI1MCwgMTA0LCAxNiwgMzEsIDIyMywgMjQ5LCAxMDQsIDE2LCAzMSwgMjIzLCAyNDgsIDEwNCwgMTYsIDMxLCAKLSAgICAyMjMsIDI0NywgMTA0LCAxNiwgMzEsIDI1NCwgNjYsIDEwNCwgMTYsIDMxLCAyNTQsIDY1LCAxMDQsIDE2LCAzMSwgMjMxLCAKLSAgICAyMjYsIDEwNCwgMTYsIDMxLCAyMjIsIDE3OCwgMTA0LCAxNiwgMzEsIDI1MywgMTYxLCAxMDQsIDE2LCAzMSwgMjI0LCAxOCwgCi0gICAgMTA0LCAxNiwgMzEsIDIyNCwgMTcsIDEwNCwgMTYsIDMxLCAyNTMsIDk5LCAxMDQsIDE2LCAzMSwgMjUxLCAxNTIsIDIyNywgCi0gICAgMjAsIDEwNCwgMTYsIDMxLCAyMTgsIDAsIDEwNCwgMTYsIDMxLCAyMTcsIDI1NSwgMTA0LCAxNiwgMzEsIDIyNCwgMTUzLCAKLSAgICAyMzIsIDI1MSwgMTA0LCAxNiwgMzEsIDI1MSwgMTA5LCAxMDQsIDE2LCAzMSwgMjUxLCAxMDgsIDEwNCwgMTYsIDMxLCAyNTEsIAotICAgIDEwNywgMTA0LCAxNiwgMzEsIDI1NCwgNDcsIDEwNCwgMTYsIDMxLCAyMjcsIDg0LCAxMDQsIDE2LCAzMSwgMjE5LCAxODAsIAotICAgIDEwNCwgMTYsIDMxLCAyMTcsIDM1LCAxMDQsIDE2LCAzMSwgMjQyLCA3NywgMTA0LCAxNiwgMzEsIDIxNCwgMTIsIDEwNCwgCi0gICAgMTYsIDMxLCAyMjUsIDEwNiwgMTA0LCAxNiwgMzEsIDI1MCwgMjAyLCAxMDQsIDE2LCAzMSwgMjE2LCA1MCwgMTA0LCAxNiwgCi0gICAgMzEsIDI1MCwgMTc4LCAyMzAsIDE5MiwgMTA0LCAxNiwgMzEsIDIyMiwgMTIwLCA2NSwgMjM1LCA1OCwgMTA0LCAxNiwgMzEsIAotICAgIDI1MCwgMjExLCAxMDQsIDE2LCAzMSwgMjE2LCAxNzcsIDEwNCwgMTYsIDMxLCAyMTksIDkzLCAyMTYsIDE3NywgMTA0LCAxNiwgCi0gICAgMzEsIDIzMiwgMjAxLCAxMDQsIDE2LCAzMSwgMjE5LCAyNDAsIDEwNCwgMTYsIDMxLCAyMTUsIDExMywgMTA0LCAxNiwgMzEsIAotICAgIDI0MCwgMjMzLCAyNDYsIDE5LCAxMDQsIDE2LCAzMSwgMjUzLCAxNDIsIDEwNCwgMTYsIDMxLCAyMjUsIDExNCwgMjUzLCAKLSAgICAxNDIsIDEwNCwgMTYsIDMxLCAyNTEsIDcwLCAxMDQsIDE2LCAzMSwgMjI1LCAxMDUsIDI1MSwgNzAsIDEwNCwgMTYsIDMxLCAKLSAgICAyNTQsIDQ0LCAxMDQsIDE2LCAzMSwgMjE5LCA1NywgMjE4LCAyMjYsIDIxOSwgNTYsIDEwNCwgMTYsIDMxLCAyMTksIDU3LCAKLSAgICAyMTgsIDIyNiwgMjE5LCA1NSwgMTA0LCAxNiwgMzEsIDIxOSwgMTMsIDEwNCwgMTYsIDMxLCAyMjUsIDgwLCAxMDQsIDE2LCAKLSAgICAzMSwgMjQ3LCAxMzMsIDEwNCwgMTYsIDMxLCAyNDcsIDEzNSwgMTA0LCAxNiwgMzEsIDI0NywgMTM0LCAxMDQsIDE2LCAzMSwgCi0gICAgMjI1LCAxNywgMTA0LCAxNiwgMzEsIDIyNSwgNywgMTA0LCAxNiwgMzEsIDI0OSwgNjIsIDEwNCwgMTYsIDMxLCAyNDksIDYxLCAKLSAgICAxMDQsIDE2LCAzMSwgMjQ5LCA2MCwgMTA0LCAxNiwgMzEsIDI0OSwgNTksIDEwNCwgMTYsIDMxLCAyNDksIDU4LCAxMDQsIAotICAgIDE2LCAzMSwgMjU0LCA3NywgMTA0LCAxNiwgMzEsIDI1MiwgMzksIDY1LCAyMzEsIDIxMiwgMTA0LCAxNiwgMzEsIDI1MiwgCi0gICAgMzksIDY1LCAyMTQsIDI0OSwgMTA0LCAxNiwgMzEsIDIyMywgMjA5LCAxMDQsIDE2LCAzMSwgMjQwLCAyMjUsIDEwNCwgMTYsIAotICAgIDMxLCAyMjksIDQzLCAxMDQsIDE2LCAzMSwgMjQ4LCA5MSwgMTA0LCAxNiwgMzEsIDIzMCwgMjA0LCAxMDQsIDE2LCAzMSwgCi0gICAgMTUxLCAyNDYsIDQ5LCAxMDQsIDE2LCAzMSwgMTUxLCAyMjcsIDAsIDksIDEzLCAyNDAsIDk1LCA5LCAxMywgMjQwLCA5NCwgCi0gICAgOSwgMTMsIDI0MCwgOTMsIDksIDEzLCAyNDAsIDkyLCA5LCAxMywgMjQwLCA5MSwgOSwgMTMsIDI0MCwgOTAsIDksIDEzLCAKLSAgICAyNDAsIDg5LCA5LCAxMywgMjQwLCA4OCwgOSwgMTMsIDI0MCwgODcsIDksIDEzLCAyNDAsIDg2LCA5LCAxMywgMjQwLCA4NSwgCi0gICAgOSwgMTMsIDI0MCwgODQsIDksIDEzLCAyNDAsIDgzLCA5LCAxMywgMjQwLCA4MiwgOSwgMTMsIDI0MCwgODEsIDksIDEzLCAKLSAgICAyNDAsIDgwLCA5LCAxMywgMjQwLCA3OSwgOSwgMTMsIDI0MCwgNzgsIDksIDEzLCAyNDAsIDc3LCA5LCAxMywgMjQwLCA3NiwgCi0gICAgOSwgMTMsIDI0MCwgNzUsIDksIDEzLCAyNDAsIDc0LCA5LCAxMywgMjQwLCA3MywgOSwgMTMsIDI0MCwgNzIsIDksIDEzLCAKLSAgICAyNDAsIDcxLCA5LCAxMywgMjQwLCA3MCwgOSwgMTMsIDI0MCwgNjksIDksIDEzLCAyNDAsIDY4LCA5LCAxMywgMjQwLCA2NywgCi0gICAgOSwgMTMsIDI0MCwgNjYsIDksIDEzLCAyNDAsIDY1LCA5LCAxMywgMjQwLCA2NCwgOSwgMTMsIDI0MCwgNjMsIDksIDEzLCAKLSAgICAyNDAsIDYyLCA5LCAxMywgMjQwLCA2MSwgOSwgMTMsIDI0MCwgNjAsIDksIDEzLCAyNDAsIDU5LCA5LCAxMywgMjQwLCA1OCwgCi0gICAgOSwgMTMsIDI0MCwgNTcsIDksIDEzLCAyNDAsIDU2LCA5LCAxMywgMjQwLCA1NSwgOSwgMTMsIDI0MCwgNTQsIDksIDEzLCAKLSAgICAyNDAsIDUzLCA5LCAxMywgMjQwLCA1MiwgOSwgMTMsIDI0MCwgNTEsIDksIDEzLCAyNDAsIDUwLCA5LCAxMywgMjQwLCA0OSwgCi0gICAgOSwgMTMsIDI0MCwgNDgsIDksIDEzLCAyNDAsIDQ3LCA5LCAxMywgMjQwLCA0NiwgOSwgMTMsIDI0MCwgNDUsIDksIDEzLCAKLSAgICAyNDAsIDQ0LCA5LCAxMywgMjQwLCA0MywgOSwgMTMsIDI0MCwgNDIsIDksIDEzLCAyNDAsIDQxLCA5LCAxMywgMjQwLCA0MCwgCi0gICAgOSwgMTMsIDI0MCwgMzksIDksIDEzLCAyNDAsIDM4LCA5LCAxMywgMjQwLCAzNywgOSwgMTMsIDI0MCwgMzYsIDksIDEzLCAKLSAgICAyNDAsIDM1LCA5LCAxMywgMjQwLCAzNCwgOSwgMTMsIDI0MCwgMzMsIDksIDEzLCAyNDAsIDMyLCA5LCAxMywgMjQwLCAzMSwgCi0gICAgOSwgMTMsIDI0MCwgMzAsIDksIDEzLCAyNDAsIDI5LCA5LCAxMywgMjQwLCAyOCwgOSwgMTMsIDI0MCwgMjcsIDksIDEzLCAKLSAgICAyNDAsIDI2LCA5LCAxMywgMjQwLCAyNSwgOSwgMTMsIDI0MCwgMjQsIDksIDEzLCAyNDAsIDIzLCA5LCAxMywgMjQwLCAyMiwgCi0gICAgOSwgMTMsIDI0MCwgMjEsIDksIDEzLCAyNDAsIDIwLCA5LCAxMywgMjQwLCAxOSwgOSwgMTMsIDI0MCwgMTgsIDksIDEzLCAKLSAgICAyNDAsIDE3LCA5LCAxMywgMjQwLCAxNiwgOSwgMTMsIDI0MCwgMTUsIDksIDEzLCAyNDAsIDE0LCA5LCAxMywgMjQwLCAxMywgCi0gICAgOSwgMTMsIDI0MCwgMTIsIDksIDEzLCAyNDAsIDExLCA5LCAxMywgMjQwLCAxMCwgOSwgMTMsIDI0MCwgOSwgOSwgMTMsIAotICAgIDI0MCwgOCwgOSwgMTMsIDI0MCwgNywgOSwgMTMsIDI0MCwgNiwgOSwgMTMsIDI0MCwgNSwgOSwgMTMsIDI0MCwgNCwgOSwgCi0gICAgMTMsIDI0MCwgMywgOSwgMTMsIDI0MCwgMiwgOSwgMTMsIDI0MCwgMSwgOSwgMTMsIDI0MCwgMCwgOSwgMTMsIDIzOSwgMjU1LCAKLSAgICA5LCAxMywgMjM5LCAyNTQsIDksIDEzLCAyMzksIDI1MywgOSwgMTMsIDIzOSwgMjUyLCA5LCAxMywgMjM5LCAyNTEsIDksIAotICAgIDEzLCAyMzksIDI1MCwgOSwgMTMsIDIzOSwgMjQ5LCA5LCAxMywgMjM5LCAyNDgsIDksIDEzLCAyMzksIDI0NywgOSwgMTMsIAotICAgIDIzOSwgMjQ2LCA5LCAxMywgMjM5LCAyNDUsIDksIDEzLCAyMzksIDI0NCwgOSwgMTMsIDIzOSwgMjQzLCA5LCAxMywgMjM5LCAKLSAgICAyNDIsIDksIDEzLCAyMzksIDI0MSwgOSwgMTMsIDIzOSwgMjQwLCA5LCAxMywgMjM5LCAyMzksIDksIDEzLCAyMzksIDIzOCwgCi0gICAgOSwgMTMsIDIzOSwgMjM3LCA5LCAxMywgMjM5LCAyMzYsIDksIDEzLCAyMzksIDIzNSwgOSwgMTMsIDIzOSwgMjM0LCA5LCAKLSAgICAxMywgMjM5LCAyMzMsIDksIDEzLCAyMzksIDIzMiwgOSwgMTMsIDIzOSwgMjMxLCA5LCAxMywgMjM5LCAyMzAsIDksIDEzLCAKLSAgICAyMzksIDIyOSwgOSwgMTMsIDIzOSwgMjI4LCA5LCAxMywgMjM5LCAyMjcsIDksIDEzLCAyMzksIDIyNiwgOSwgMTMsIDIzOSwgCi0gICAgMjI1LCA5LCAxMywgMjM5LCAyMjQsIDksIDEzLCAyMzksIDIyMywgOSwgMTMsIDIzOSwgMjIyLCA5LCAxMywgMjM5LCAyMjEsIAotICAgIDksIDEzLCAyMzksIDIyMCwgOSwgMTMsIDIzOSwgMjE5LCA5LCAxMywgMjM5LCAyMTgsIDksIDEzLCAyMzksIDIxNywgOSwgCi0gICAgMTMsIDIzOSwgMjE2LCA5LCAxMywgMjM5LCAyMTUsIDksIDEzLCAyMzksIDIxNCwgOSwgMTMsIDIzOSwgMjEzLCA5LCAxMywgCi0gICAgMjM5LCAyMTIsIDksIDEzLCAyMzksIDIxMSwgOSwgMTMsIDIzOSwgMjEwLCA5LCAxMywgMjM5LCAyMDksIDksIDEzLCAyMzksIAotICAgIDIwOCwgOSwgMTMsIDIzOSwgMjA3LCA5LCAxMywgMjM5LCAyMDYsIDksIDEzLCAyMzksIDIwNSwgOSwgMTMsIDIzOSwgMjA0LCAKLSAgICA5LCAxMywgMjM5LCAyMDMsIDksIDEzLCAyMzksIDIwMiwgOSwgMTMsIDIzOSwgMjAxLCA5LCAxMywgMjM5LCAyMDAsIDksIAotICAgIDEzLCAyMzksIDE5OSwgOSwgMTMsIDIzOSwgMTk4LCA5LCAxMywgMjM5LCAxOTcsIDksIDEzLCAyMzksIDE5NiwgOSwgMTMsIAotICAgIDIzOSwgMTk1LCA5LCAxMywgMjM5LCAxOTQsIDksIDEzLCAyMzksIDE5MywgOSwgMTMsIDIzOSwgMTkyLCA5LCAxMywgMjM5LCAKLSAgICAxOTEsIDksIDEzLCAyMzksIDE5MCwgOSwgMTMsIDIzOSwgMTg5LCA5LCAxMywgMjM5LCAxODgsIDksIDEzLCAyMzksIDE4NywgCi0gICAgOSwgMTMsIDIzOSwgMTg2LCA5LCAxMywgMjM5LCAxODUsIDksIDEzLCAyMzksIDE4NCwgOSwgMTMsIDIzOSwgMTgzLCA5LCAKLSAgICAxMywgMjM5LCAxODIsIDksIDEzLCAyMzksIDE4MSwgOSwgMTMsIDIzOSwgMTgwLCA5LCAxMywgMjM5LCAxNzksIDksIDEzLCAKLSAgICAyMzksIDE3OCwgOSwgMTMsIDIzOSwgMTc3LCA5LCAxMywgMjM5LCAxNzYsIDksIDEzLCAyMzksIDE3NSwgOSwgMTMsIDIzOSwgCi0gICAgMTc0LCA5LCAxMywgMjM5LCAxNzMsIDksIDEzLCAyMzksIDE3MiwgOSwgMTMsIDIzOSwgMTcxLCA5LCAxMywgMjM5LCAxNzAsIAotICAgIDksIDEzLCAyMzksIDE2OSwgOSwgMTMsIDIzOSwgMTY4LCA5LCAxMywgMjM5LCAxNjcsIDksIDEzLCAyMzksIDE2NiwgOSwgCi0gICAgMTMsIDIzOSwgMTY1LCA5LCAxMywgMjM5LCAxNjQsIDksIDEzLCAyMzksIDE2MywgOSwgMTMsIDIzOSwgMTYyLCA5LCAxMywgCi0gICAgMjM5LCAxNjEsIDksIDEzLCAyMzksIDE2MCwgOSwgMTMsIDIzOSwgMTU5LCA5LCAxMywgMjM5LCAxNTgsIDksIDEzLCAyMzksIAotICAgIDE1NywgOSwgMTMsIDIzOSwgMTU2LCA5LCAxMywgMjM5LCAxNTUsIDksIDEzLCAyMzksIDE1NCwgOSwgMTMsIDIzOSwgMTUzLCAKLSAgICA5LCAxMywgMjM5LCAxNTIsIDksIDEzLCAyMzksIDE1MSwgOSwgMTMsIDIzOSwgMTUwLCA5LCAxMywgMjM5LCAxNDksIDksIAotICAgIDEzLCAyMzksIDE0OCwgOSwgMTMsIDIzOSwgMTQ3LCA5LCAxMywgMjM5LCAxNDYsIDksIDEzLCAyMzksIDE0NSwgOSwgMTMsIAotICAgIDIzOSwgMTQ0LCA5LCAxMywgMjM5LCAxNDMsIDksIDEzLCAyMzksIDE0MiwgOSwgMTMsIDIzOSwgMTQxLCA5LCAxMywgMjM5LCAKLSAgICAxNDAsIDksIDEzLCAyMzksIDEzOSwgOSwgMTMsIDIzOSwgMTM4LCA5LCAxMywgMjM5LCAxMzcsIDksIDEzLCAyMzksIDEzNiwgCi0gICAgOSwgMTMsIDIzOSwgMTM1LCA5LCAxMywgMjM5LCAxMzQsIDksIDEzLCAyMzksIDEzMywgOSwgMTMsIDIzOSwgMTMyLCA5LCAKLSAgICAxMywgMjM5LCAxMzEsIDksIDEzLCAyMzksIDEzMCwgOSwgMTMsIDIzOSwgMTI5LCA5LCAxMywgMjM5LCAxMjgsIDksIDEzLCAKLSAgICAyMzksIDEyNywgOSwgMTMsIDIzOSwgMTI2LCA5LCAxMywgMjM5LCAxMjUsIDksIDEzLCAyMzksIDEyNCwgOSwgMTMsIDIzOSwgCi0gICAgMTIzLCA5LCAxMywgMjM5LCAxMjIsIDksIDEzLCAyMzksIDEyMSwgOSwgMTMsIDIzOSwgMTIwLCA5LCAxMywgMjM5LCAxMTksIAotICAgIDksIDEzLCAyMzksIDExOCwgOSwgMTMsIDIzOSwgMTE3LCA5LCAxMywgMjM5LCAxMTYsIDksIDEzLCAyMzksIDExNSwgOSwgCi0gICAgMTMsIDIzOSwgMTE0LCA5LCAxMywgMjM5LCAxMTMsIDksIDEzLCAyMzksIDExMiwgOSwgMTMsIDIzOSwgMTExLCA5LCAxMywgCi0gICAgMjM5LCAxMTAsIDksIDEzLCAyMzksIDEwOSwgOSwgMTMsIDIzOSwgMTA4LCA5LCAxMywgMjM5LCAxMDcsIDksIDEzLCAyMzksIAotICAgIDEwNiwgOSwgMTMsIDIzOSwgMTA1LCA5LCAxMywgMjM5LCAxMDQsIDksIDEzLCAyMzksIDEwMywgOSwgMTMsIDIzOSwgMTAyLCAKLSAgICA5LCAxMywgMjM5LCAxMDEsIDksIDEzLCAyMzksIDEwMCwgOSwgMTMsIDIzOSwgOTksIDksIDEzLCAyMzksIDk4LCA5LCAxMywgCi0gICAgMjM5LCA5NywgOSwgMTMsIDIzOSwgOTYsIDksIDEzLCAyMzksIDk1LCA5LCAxMywgMjM5LCA5NCwgOSwgMTMsIDIzOSwgOTMsIAotICAgIDksIDEzLCAyMzksIDkyLCA5LCAxMywgMjM5LCA5MSwgOSwgMTMsIDIzOSwgOTAsIDksIDEzLCAyMzksIDg5LCA5LCAxMywgCi0gICAgMjM5LCA4OCwgOSwgMTMsIDIzOSwgODcsIDksIDEzLCAyMzksIDg2LCA5LCAxMywgMjM5LCA4NSwgOSwgMTMsIDIzOSwgODQsIAotICAgIDksIDEzLCAyMzksIDgzLCA5LCAxMywgMjM5LCA4MiwgOSwgMTMsIDIzOSwgODEsIDksIDEzLCAyMzksIDgwLCA5LCAxMywgCi0gICAgMjM5LCA3OSwgOSwgMTMsIDIzOSwgNzgsIDksIDEzLCAyMzksIDc3LCA5LCAxMywgMjM5LCA3NiwgOSwgMTMsIDIzOSwgNzUsIAotICAgIDksIDEzLCAyMzksIDc0LCA5LCAxMywgMjM5LCA3MywgOSwgMTMsIDIzOSwgNzIsIDksIDEzLCAyMzksIDcxLCA5LCAxMywgCi0gICAgMjM5LCA3MCwgOSwgMTMsIDIzOSwgNjksIDksIDEzLCAyMzksIDY4LCA5LCAxMywgMjM5LCA2NywgOSwgMTMsIDIzOSwgNjYsIAotICAgIDksIDEzLCAyMzksIDY1LCA5LCAxMywgMjM5LCA2NCwgOSwgMTMsIDIzOSwgNjMsIDksIDEzLCAyMzksIDYyLCA5LCAxMywgCi0gICAgMjM5LCA2MSwgOSwgMTMsIDIzOSwgNjAsIDksIDEzLCAyMzksIDU5LCA5LCAxMywgMjM5LCA1OCwgOSwgMTMsIDIzOSwgNTcsIAotICAgIDksIDEzLCAyMzksIDU2LCA5LCAxMywgMjM5LCA1NSwgOSwgMTMsIDIzOSwgNTQsIDksIDEzLCAyMzksIDUzLCA5LCAxMywgCi0gICAgMjM5LCA1MiwgOSwgMTMsIDIzOSwgNTEsIDksIDEzLCAyMzksIDUwLCA5LCAxMywgMjM5LCA0OSwgOSwgMTMsIDIzOSwgNDgsIAotICAgIDksIDEzLCAyMzksIDQ3LCA5LCAxMywgMjM5LCA0NiwgOSwgMTMsIDIzOSwgNDUsIDksIDEzLCAyMzksIDQ0LCA5LCAxMywgCi0gICAgMjM5LCA0MywgOSwgMTMsIDIzOSwgNDIsIDksIDEzLCAyMzksIDQxLCA5LCAxMywgMjM5LCA0MCwgOSwgMTMsIDIzOSwgMzksIAotICAgIDksIDEzLCAyMzksIDM4LCA5LCAxMywgMjM5LCAzNywgOSwgMTMsIDIzOSwgMzYsIDksIDEzLCAyMzksIDM1LCA5LCAxMywgCi0gICAgMjM5LCAzNCwgOSwgMTMsIDIzOSwgMzMsIDksIDEzLCAyMzksIDMyLCA5LCAxMywgMjM5LCAzMSwgOSwgMTMsIDIzOSwgMzAsIAotICAgIDksIDEzLCAyMzksIDI5LCA5LCAxMywgMjM5LCAyOCwgOSwgMTMsIDIzOSwgMjcsIDksIDEzLCAyMzksIDI2LCA5LCAxMywgCi0gICAgMjM5LCAyNSwgOSwgMTMsIDIzOSwgMjQsIDksIDEzLCAyMzksIDIzLCA5LCAxMywgMjM5LCAyMiwgOSwgMTMsIDIzOSwgMjEsIAotICAgIDksIDEzLCAyMzksIDIwLCA5LCAxMywgMjM5LCAxOSwgOSwgMTMsIDIzOSwgMTgsIDksIDEzLCAyMzksIDE3LCA5LCAxMywgCi0gICAgMjM5LCAxNiwgOSwgMTMsIDIzOSwgMTUsIDksIDEzLCAyMzksIDE0LCA5LCAxMywgMjM5LCAxMywgOSwgMTMsIDIzOSwgMTIsIAotICAgIDksIDEzLCAyMzksIDExLCA5LCAxMywgMjM5LCAxMCwgOSwgMTMsIDIzOSwgOSwgOSwgMTMsIDIzOSwgOCwgOSwgMTMsIDIzOSwgCi0gICAgNywgOSwgMTMsIDIzOSwgNiwgOSwgMTMsIDIzOSwgNSwgOSwgMTMsIDIzOSwgNCwgOSwgMTMsIDIzOSwgMywgOSwgMTMsIAotICAgIDIzOSwgMiwgOSwgMTMsIDIzOSwgMSwgOSwgMTMsIDIzOSwgMCwgOSwgMTMsIDIzOCwgMjU1LCA5LCAxMywgMjM4LCAyNTQsIAotICAgIDksIDEzLCAyMzgsIDI1MywgOSwgMTMsIDIzOCwgMjUyLCA5LCAxMywgMjM4LCAyNTEsIDksIDEzLCAyMzgsIDI1MCwgOSwgCi0gICAgMTMsIDIzOCwgMjQ5LCA5LCAxMywgMjM4LCAyNDgsIDksIDEzLCAyMzgsIDI0NywgOSwgMTMsIDIzOCwgMjQ2LCA5LCAxMywgCi0gICAgMjM4LCAyNDUsIDksIDEzLCAyMzgsIDI0NCwgOSwgMTMsIDIzOCwgMjQzLCA5LCAxMywgMjM4LCAyNDIsIDksIDEzLCAyMzgsIAotICAgIDI0MSwgOSwgMTMsIDIzOCwgMjQwLCA5LCAxMywgMjM4LCAyMzksIDksIDEzLCAyMzgsIDIzOCwgOSwgMTMsIDIzOCwgMjM3LCAKLSAgICA5LCAxMywgMjM4LCAyMzYsIDksIDEzLCAyMzgsIDIzNSwgOSwgMTMsIDIzOCwgMjM0LCA5LCAxMywgMjM4LCAyMzMsIDksIAotICAgIDEzLCAyMzgsIDIzMiwgOSwgMTMsIDIzOCwgMjMxLCA5LCAxMywgMjM4LCAyMzAsIDksIDEzLCAyMzgsIDIyOSwgOSwgMTMsIAotICAgIDIzOCwgMjI4LCA5LCAxMywgMjM4LCAyMjcsIDksIDEzLCAyMzgsIDIyNiwgOSwgMTMsIDIzOCwgMjI1LCA5LCAxMywgMjM4LCAKLSAgICAyMjQsIDksIDEzLCAyMzgsIDIyMywgOSwgMTMsIDIzOCwgMjIyLCA5LCAxMywgMjM4LCAyMjEsIDksIDEzLCAyMzgsIDIyMCwgCi0gICAgOSwgMTMsIDIzOCwgMjE5LCA5LCAxMywgMjM4LCAyMTgsIDksIDEzLCAyMzgsIDIxNywgOSwgMTMsIDIzOCwgMjE2LCA5LCAKLSAgICAxMywgMjM4LCAyMTUsIDksIDEzLCAyMzgsIDIxNCwgOSwgMTMsIDIzOCwgMjEzLCA5LCAxMywgMjM4LCAyMTIsIDksIDEzLCAKLSAgICAyMzgsIDIxMSwgOSwgMTMsIDIzOCwgMjEwLCA5LCAxMywgMjM4LCAyMDksIDksIDEzLCAyMzgsIDIwOCwgOSwgMTMsIDIzOCwgCi0gICAgMjA3LCA5LCAxMywgMjM4LCAyMDYsIDksIDEzLCAyMzgsIDIwNSwgOSwgMTMsIDIzOCwgMjA0LCA5LCAxMywgMjM4LCAyMDMsIAotICAgIDksIDEzLCAyMzgsIDIwMiwgOSwgMTMsIDIzOCwgMjAxLCA5LCAxMywgMjM4LCAyMDAsIDksIDEzLCAyMzgsIDE5OSwgOSwgCi0gICAgMTMsIDIzOCwgMTk4LCA5LCAxMywgMjM4LCAxOTcsIDksIDEzLCAyMzgsIDE5NiwgOSwgMTMsIDIzOCwgMTk1LCA5LCAxMywgCi0gICAgMjM4LCAxOTQsIDksIDEzLCAyMzgsIDE5MywgOSwgMTMsIDIzOCwgMTkyLCA5LCAxMywgMjM4LCAxOTEsIDksIDEzLCAyMzgsIAotICAgIDE5MCwgOSwgMTMsIDIzOCwgMTg5LCA5LCAxMywgMjM4LCAxODgsIDksIDEzLCAyMzgsIDE4NywgOSwgMTMsIDIzOCwgMTg2LCAKLSAgICA5LCAxMywgMjM4LCAxODUsIDksIDEzLCAyMzgsIDE4NCwgOSwgMTMsIDIzOCwgMTgzLCA5LCAxMywgMjM4LCAxODIsIDksIAotICAgIDEzLCAyMzgsIDE4MSwgOSwgMTMsIDIzOCwgMTgwLCA5LCAxMywgMjM4LCAxNzksIDksIDEzLCAyMzgsIDE3OCwgOSwgMTMsIAotICAgIDIzOCwgMTc3LCA5LCAxMywgMjM4LCAxNzYsIDksIDEzLCAyMzgsIDE3NSwgOSwgMTMsIDIzOCwgMTc0LCA5LCAxMywgMjM4LCAKLSAgICAxNzMsIDksIDEzLCAyMzgsIDE3MiwgOSwgMTMsIDIzOCwgMTcxLCA5LCAxMywgMjM4LCAxNzAsIDksIDEzLCAyMzgsIDE2OSwgCi0gICAgOSwgMTMsIDIzOCwgMTY4LCA5LCAxMywgMjM4LCAxNjcsIDksIDEzLCAyMzgsIDE2NiwgOSwgMTMsIDIzOCwgMTY1LCA5LCAKLSAgICAxMywgMjM4LCAxNjQsIDksIDEzLCAyMzgsIDE2MywgOSwgMTMsIDIzOCwgMTYyLCA5LCAxMywgMjM4LCAxNjEsIDksIDEzLCAKLSAgICAyMzgsIDE2MCwgOSwgMTMsIDIzOCwgMTU5LCA5LCAxMywgMjM4LCAxNTgsIDksIDEzLCAyMzgsIDE1NywgOSwgMTMsIDIzOCwgCi0gICAgMTU2LCA5LCAxMywgMjM4LCAxNTUsIDksIDEzLCAyMzgsIDE1NCwgOSwgMTMsIDIzOCwgMTUzLCA5LCAxMywgMjM4LCAxNTIsIAotICAgIDksIDEzLCAyMzgsIDE1MSwgOSwgMTMsIDIzOCwgMTUwLCA5LCAxMywgMjM4LCAxNDksIDksIDEzLCAyMzgsIDE0OCwgOSwgCi0gICAgMTMsIDIzOCwgMTQ3LCA5LCAxMywgMjM4LCAxNDYsIDksIDEzLCAyMzgsIDE0NSwgOSwgMTMsIDIzOCwgMTQ0LCA5LCAxMywgCi0gICAgMjM4LCAxNDMsIDksIDEzLCAyMzgsIDE0MiwgOSwgMTMsIDIzOCwgMTQxLCA5LCAxMywgMjM4LCAxNDAsIDksIDEzLCAyMzgsIAotICAgIDEzOSwgOSwgMTMsIDIzOCwgMTM4LCA5LCAxMywgMjM4LCAxMzcsIDksIDEzLCAyMzgsIDEzNiwgOSwgMTMsIDIzOCwgMTM1LCAKLSAgICA5LCAxMywgMjM4LCAxMzQsIDksIDEzLCAyMzgsIDEzMywgOSwgMTMsIDIzOCwgMTMyLCA5LCAxMywgMjM4LCAxMzEsIDksIAotICAgIDEzLCAyMzgsIDEzMCwgOSwgMTMsIDIzOCwgMTI5LCA5LCAxMywgMjM4LCAxMjgsIDksIDEzLCAyMzgsIDEyNywgOSwgMTMsIAotICAgIDIzOCwgMTI2LCA5LCAxMywgMjM4LCAxMjUsIDksIDEzLCAyMzgsIDEyNCwgOSwgMTMsIDIzOCwgMTIzLCA5LCAxMywgMjM4LCAKLSAgICAxMjIsIDksIDEzLCAyMzgsIDEyMSwgOSwgMTMsIDIzOCwgMTIwLCA5LCAxMywgMjM4LCAxMTksIDksIDEzLCAyMzgsIDExOCwgCi0gICAgOSwgMTMsIDIzOCwgMTE3LCA5LCAxMywgMjM4LCAxMTYsIDksIDEzLCAyMzgsIDExNSwgOSwgMTMsIDIzOCwgMTE0LCA5LCAKLSAgICAxMywgMjM4LCAxMTMsIDksIDEzLCAyMzgsIDExMiwgOSwgMTMsIDIzOCwgMTExLCA5LCAxMywgMjM4LCAxMTAsIDksIDEzLCAKLSAgICAyMzgsIDEwOSwgOSwgMTMsIDIzOCwgMTA4LCA5LCAxMywgMjM4LCAxMDcsIDksIDEzLCAyMzgsIDEwNiwgOSwgMTMsIDIzOCwgCi0gICAgMTA1LCA5LCAxMywgMjM4LCAxMDQsIDksIDEzLCAyMzgsIDEwMywgOSwgMTMsIDIzOCwgMTAyLCA5LCAxMywgMjM4LCAxMDEsIAotICAgIDksIDEzLCAyMzgsIDEwMCwgOSwgMTMsIDIzOCwgOTksIDksIDEzLCAyMzgsIDk4LCA5LCAxMywgMjM4LCA5NywgOSwgMTMsIAotICAgIDIzOCwgOTYsIDksIDEzLCAyMzgsIDk1LCA5LCAxMywgMjM4LCA5NCwgOSwgMTMsIDIzOCwgOTMsIDksIDEzLCAyMzgsIDkyLCAKLSAgICA5LCAxMywgMjM4LCA5MSwgOSwgMTMsIDIzOCwgOTAsIDksIDEzLCAyMzgsIDg5LCA5LCAxMywgMjM4LCA4OCwgOSwgMTMsIAotICAgIDIzOCwgODcsIDksIDEzLCAyMzgsIDg2LCA5LCAxMywgMjM4LCA4NSwgOSwgMTMsIDIzOCwgODQsIDksIDEzLCAyMzgsIDgzLCAKLSAgICA5LCAxMywgMjM4LCA4MiwgOSwgMTMsIDIzOCwgODEsIDksIDEzLCAyMzgsIDgwLCA5LCAxMywgMjM4LCA3OSwgOSwgMTMsIAotICAgIDIzOCwgNzgsIDksIDEzLCAyMzgsIDc3LCA5LCAxMywgMjM4LCA3NiwgOSwgMTMsIDIzOCwgNzUsIDksIDEzLCAyMzgsIDc0LCAKLSAgICA5LCAxMywgMjM4LCA3MywgOSwgMTMsIDIzOCwgNzIsIDksIDEzLCAyMzgsIDcxLCA5LCAxMywgMjM4LCA3MCwgOSwgMTMsIAotICAgIDIzOCwgNjksIDksIDEzLCAyMzgsIDY4LCA5LCAxMywgMjM4LCA2NywgOSwgMTMsIDIzOCwgNjYsIDIzMywgMTE0LCAyMTgsIAotICAgIDMzLCAxMjYsIDIxOSwgMjA2LCAxMjYsIDI0NCwgMjU0LCA3NywgMTI2LCAyMjQsIDE0MywgNzcsIDEyNiwgNTAsIDUyLCAKLSAgICAxMjYsIDI0NywgODYsIDUyLCAxMjYsIDIyNiwgNTcsIDUyLCAxMjYsIDI1NCwgMzUsIDEyNiwgMjUzLCAyMjYsIDEyNiwgNDIsIAotICAgIDIyNiwgMTMxLCAxMjYsIDQ2LCAyMjYsIDEzMSwgMTI2LCAyNTMsIDEzMiwgMTI2LCA5NCwgNTIsIDEyNiwgMjQ5LCAxNTcsIAotICAgIDEyNiwgMjQwLCAxNTksIDEyNiwgMjQzLCAyMDAsIDIxOSwgNjksIDEyNiwgMjE5LCAyMzEsIDEyNiwgMjEsIDIxMiwgNzksIAotICAgIDEyNiwgMjEsIDExNiwgMTI2LCAyMSwgMTA5LCAxMjYsIDIxLCAxNjYsIDEyNiwgMjEsIDE2MywgMTI2LCAyMSwgMTgwLCAKLSAgICAxMjYsIDIxLCAxODksIDEyNiwgMjEsIDE5OCwgMTI2LCAyMSwgMTk1LCAxMjYsIDIxLCAyMDAsIDEyNiwgMjQ5LCAxNjQsIAotICAgIDEyNiwgMjIxLCA3MCwgMTI2LCAyMzMsIDM5LCA1MiwgMTI2LCAyNDUsIDYxLCA1MiwgMTI2LCAyNDIsIDEwNywgNTIsIDEyNiwgCi0gICAgMjI0LCAxNTgsIDc3LCAxMjYsIDI0OSwgMTU2LCAyNTMsIDEyMiwgMTI2LCA3LCA2LCAxLCA2MSwgMTI2LCA3LCA2LCAxLCAKLSAgICAyNTMsIDc0LCAxMjYsIDcsIDYsIDEsIDI1MCwgMjUyLCAxMjYsIDcsIDYsIDEsIDI0OSwgMywgMTI2LCA3LCA2LCAxLCA3NCwgCi0gICAgMTI2LCA3LCA2LCAxLCAyNDQsIDIzMCwgMTI2LCA3LCA2LCAxLCAyNDMsIDE3NywgMTI2LCA3LCA2LCAxLCAyNDIsIDQxLCAKLSAgICAxMjYsIDcsIDYsIDEsIDcyLCAxMjYsIDcsIDYsIDEsIDIzNSwgMTQyLCAxMjYsIDcsIDYsIDEsIDIzNSwgMjcsIDEyNiwgNywgCi0gICAgNiwgMSwgMTUwLCAxMjYsIDcsIDYsIDEsIDE4MywgMTI2LCA3LCA2LCAxLCAyMDQsIDEyNiwgNywgNiwgMSwgNzUsIDEyNiwgCi0gICAgNywgNiwgMSwgMjI2LCAyMjksIDEyNiwgNywgNiwgMSwgMjI0LCAyNDAsIDEyNiwgNywgNiwgMSwgMTQ5LCAxMjYsIDcsIDYsIAotICAgIDEsIDE5NywgMTI2LCA3LCA2LCAxLCAyMTgsIDk5LCAxMjYsIDcsIDYsIDEsIDY5LCAxMjYsIDcsIDYsIDEsIDIxNSwgNzksIAotICAgIDEyNiwgNywgNiwgMSwgMjE0LCA4MiwgMTI2LCA3LCA2LCAxLCAyMTMsIDE2NiwgMTI2LCA3LCA2LCAxLCAyMTMsIDEwNSwgCi0gICAgMTI2LCA3LCA2LCAxLCAyMTIsIDE1MiwgMTI2LCA0MiwgNDEsIDEyNSwgMTI2LCAyMjMsIDIwMywgMjE5LCAyMzEsIDEyNiwgCi0gICAgNDYsIDQxLCAxMjUsIDEyNiwgMjQ5LCAyMjQsIDI1NCwgMTc0LCAxMjYsIDExNSwgMjMyLCAyNDIsIDEyNiwgMjQyLCAxMTQsIAotICAgIDI1NCwgMTc0LCAxMjYsIDcsIDMsIDEsIDYxLCAxMjYsIDcsIDMsIDEsIDI1MywgNzQsIDEyNiwgNywgMywgMSwgMjUwLCAKLSAgICAyNTIsIDEyNiwgNywgMywgMSwgMjQ5LCAzLCAxMjYsIDcsIDMsIDEsIDc0LCAxMjYsIDcsIDMsIDEsIDI0NCwgMjMwLCAxMjYsIAotICAgIDcsIDMsIDEsIDI0MywgMTc3LCAxMjYsIDcsIDMsIDEsIDI0MiwgNDEsIDEyNiwgNywgMywgMSwgNzIsIDEyNiwgNywgMywgMSwgCi0gICAgMjM1LCAxNDIsIDEyNiwgNywgMywgMSwgMjM1LCAyNywgMTI2LCA3LCAzLCAxLCAxNTAsIDEyNiwgNywgMywgMSwgMTgzLCAKLSAgICAxMjYsIDcsIDMsIDEsIDIwNCwgMTI2LCA3LCAzLCAxLCA3NSwgMTI2LCA3LCAzLCAxLCAyMjYsIDIyOSwgMTI2LCA3LCAzLCAKLSAgICAxLCAyMjQsIDI0MCwgMTI2LCA3LCAzLCAxLCAxNDksIDEyNiwgNywgMywgMSwgMTk3LCAxMjYsIDcsIDMsIDEsIDIxOCwgOTksIAotICAgIDEyNiwgNywgMywgMSwgNjksIDEyNiwgNywgMywgMSwgMjE1LCA3OSwgMTI2LCA3LCAzLCAxLCAyMTQsIDgyLCAxMjYsIDcsIAotICAgIDMsIDEsIDIxMywgMTY2LCAxMjYsIDcsIDMsIDEsIDIxMywgMTA1LCAxMjYsIDcsIDMsIDEsIDIxMiwgMTUyLCAxMjYsIDQyLCAKLSAgICAyNDksIDQwLCAxMjUsIDEyNiwgNzEsIDIzMiwgMjQyLCAxMjYsIDQ2LCAyNDksIDQwLCAxMjUsIDEyNiwgMjE3LCA0MiwgCi0gICAgMjUwLCAxOTQsIDIxOCwgMzMsIDQzLCAyMjEsIDI1NCwgNDMsIDIyMSwgMjQzLCA0MywgMjIxLCAyMzIsIDQzLCAyMjEsIAotICAgIDIyMCwgNDMsIDIyMSwgMjA5LCA0MywgMjIxLCAxOTgsIDQzLCAyMjEsIDE4NywgNDMsIDIyMSwgMTc2LCA0MywgMjIxLCAKLSAgICAxNjUsIDQzLCAyMjEsIDE1NywgNDMsIDIyMSwgMTU2LCA0MywgMjIxLCAxNTUsIDQzLCAyMjEsIDE1NCwgNDMsIDIyMSwgCi0gICAgMTUyLCA0MywgMjIxLCAxNTEsIDQzLCAyMjEsIDE1MCwgNDMsIDIyMSwgMTQ5LCA0MywgMjIxLCAxNDgsIDQzLCAyMjEsIAotICAgIDE0NywgNDMsIDIyMSwgMTQ2LCA0MywgMjIxLCAxNDUsIDQzLCAyMjEsIDE0NCwgNDMsIDIyMSwgMTQzLCA0MywgMjIxLCAKLSAgICAxNDEsIDQzLCAyMjEsIDE0MCwgNDMsIDIyMSwgMTM5LCA0MywgMjIxLCAxMzgsIDQzLCAyMjEsIDEzNywgNDMsIDIyMSwgCi0gICAgMTM2LCA0MywgMjIxLCAxMzUsIDQzLCAyMjEsIDEzNCwgNDMsIDIyMSwgMTMzLCA0MywgMjIxLCAxMzIsIDQzLCAyMjEsIAotICAgIDEzMCwgNDMsIDIyMSwgMTI5LCA0MywgMjIxLCAxMjgsIDQzLCAyMjEsIDEyNywgNDMsIDIyMSwgMTI2LCA0MywgMjIxLCAKLSAgICAxMjUsIDQzLCAyMjEsIDEyNCwgNDMsIDIyMSwgMTIzLCA0MywgMjIxLCAxMjIsIDQzLCAyMjEsIDEyMSwgNDMsIDIyMSwgCi0gICAgMTE5LCA0MywgMjIxLCAxMTgsIDQzLCAyMjEsIDExNywgNDMsIDIyMSwgMTE2LCA0MywgMjIxLCAxMTUsIDQzLCAyMjEsIAotICAgIDExNCwgNDMsIDIyMSwgMTEzLCA0MywgMjIxLCAxMTIsIDQzLCAyMjEsIDExMSwgNDMsIDIyMSwgMTEwLCA0MywgMjIxLCAKLSAgICAxMDgsIDQzLCAyMjEsIDEwNywgNDMsIDIyMSwgMTA2LCA0MywgMjIxLCAxMDUsIDQzLCAyMjEsIDEwNCwgNDMsIDIyMSwgCi0gICAgMTAzLCA0MywgMjIxLCAxMDIsIDQzLCAyMjEsIDEwMSwgNDMsIDIyMSwgMTAwLCA0MywgMjIxLCA5OSwgNDMsIDIyMSwgOTcsIAotICAgIDQzLCAyMjEsIDk2LCA0MywgMjIxLCA5NSwgNDMsIDIyMSwgOTQsIDQzLCAyMjEsIDkzLCA0MywgMjIxLCA5MiwgNDMsIDIyMSwgCi0gICAgOTEsIDQzLCAyMjEsIDkwLCA0MywgMjIxLCA4OSwgNDMsIDIyMSwgODgsIDQzLCAyMjEsIDg2LCA0MywgMjIxLCA4NSwgNDMsIAotICAgIDIyMSwgODQsIDQzLCAyMjEsIDgzLCA0MywgMjIxLCA4MiwgNDMsIDIyMSwgODEsIDQzLCAyMjEsIDgwLCA0MywgMjIxLCA3OSwgCi0gICAgNDMsIDIyMSwgNzgsIDQzLCAyMjEsIDc3LCA0MywgMjIyLCA3NCwgNDMsIDIyMiwgNzMsIDQzLCAyMjIsIDcyLCA0MywgMjIyLCAKLSAgICA3MSwgNDMsIDIyMiwgNzAsIDQzLCAyMjIsIDY5LCA0MywgMjIyLCA2OCwgNDMsIDIyMiwgNjcsIDQzLCAyMjIsIDY2LCA0MywgCi0gICAgMjIyLCA2NSwgNDMsIDIyMiwgNjMsIDQzLCAyMjIsIDYyLCA0MywgMjIyLCA2MSwgNDMsIDIyMiwgNjAsIDQzLCAyMjIsIDU5LCAKLSAgICA0MywgMjIyLCA1OCwgNDMsIDIyMiwgNTcsIDQzLCAyMjIsIDU2LCA0MywgMjIyLCA1NSwgNDMsIDIyMiwgNTQsIDQzLCAyMjIsIAotICAgIDUyLCA0MywgMjIyLCA1MSwgNDMsIDIyMiwgNTAsIDQzLCAyMjIsIDQ5LCA0MywgMjIyLCA0OCwgNDMsIDIyMiwgNDcsIDQzLCAKLSAgICAyMjIsIDQ2LCA0MywgMjIyLCA0NSwgNDMsIDIyMiwgNDQsIDQzLCAyMjIsIDQzLCA0MywgMjIyLCA0MSwgNDMsIDIyMiwgNDAsIAotICAgIDQzLCAyMjIsIDM5LCA0MywgMjIyLCAzOCwgNDMsIDIyMiwgMzcsIDQzLCAyMjIsIDM2LCA0MywgMjIyLCAzNSwgNDMsIDIyMiwgCi0gICAgMzQsIDQzLCAyMjIsIDMzLCA0MywgMjIyLCAzMiwgNDMsIDIyMiwgMzAsIDQzLCAyMjIsIDI5LCA0MywgMjIyLCAyOCwgNDMsIAotICAgIDIyMiwgMjcsIDQzLCAyMjIsIDI2LCA0MywgMjIyLCAyNSwgNDMsIDIyMiwgMjQsIDQzLCAyMjIsIDIzLCA0MywgMjIyLCAyMiwgCi0gICAgNDMsIDIyMiwgMjEsIDQzLCAyMjIsIDE5LCA0MywgMjIyLCAxOCwgNDMsIDIyMiwgMTcsIDQzLCAyMjIsIDE2LCA0MywgMjIyLCAKLSAgICAxNSwgNDMsIDIyMiwgMTQsIDQzLCAyMjIsIDEzLCA0MywgMjIyLCAxMiwgNDMsIDIyMiwgMTEsIDQzLCAyMjIsIDEwLCA0MywgCi0gICAgMjIyLCA4LCA0MywgMjIyLCA3LCA0MywgMjIyLCA2LCA0MywgMjIyLCA1LCA0MywgMjIyLCA0LCA0MywgMjIyLCAzLCA0MywgCi0gICAgMjIyLCAyLCA0MywgMjIyLCAxLCA0MywgMjIyLCAwLCA0MywgMjIxLCAyNTUsIDQzLCAyMjEsIDI1MywgNDMsIDIyMSwgMjUyLCAKLSAgICA0MywgMjIxLCAyNTEsIDQzLCAyMjEsIDI1MCwgNDMsIDIyMSwgMjQ5LCA0MywgMjIxLCAyNDgsIDQzLCAyMjEsIDI0NywgNDMsIAotICAgIDIyMSwgMjQ2LCA0MywgMjIxLCAyNDUsIDQzLCAyMjEsIDI0NCwgNDMsIDIyMSwgMjQyLCA0MywgMjIxLCAyNDEsIDQzLCAKLSAgICAyMjEsIDI0MCwgNDMsIDIyMSwgMjM5LCA0MywgMjIxLCAyMzgsIDQzLCAyMjEsIDIzNywgNDMsIDIyMSwgMjM2LCA0MywgCi0gICAgMjIxLCAyMzUsIDQzLCAyMjEsIDIzNCwgNDMsIDIyMSwgMjMzLCA0MywgMjIxLCAyMzEsIDQzLCAyMjEsIDIzMCwgNDMsIAotICAgIDIyMSwgMjI5LCA0MywgMjIxLCAyMjgsIDQzLCAyMjEsIDIyNywgNDMsIDIyMSwgMjI2LCA0MywgMjIxLCAyMjUsIDQzLCAKLSAgICAyMjEsIDIyNCwgNDMsIDIyMSwgMjIzLCA0MywgMjIxLCAyMjIsIDQzLCAyMjEsIDIxOSwgNDMsIDIyMSwgMjE4LCA0MywgCi0gICAgMjIxLCAyMTcsIDQzLCAyMjEsIDIxNiwgNDMsIDIyMSwgMjE1LCA0MywgMjIxLCAyMTQsIDQzLCAyMjEsIDIxMywgNDMsIAotICAgIDIyMSwgMjEyLCA0MywgMjIxLCAyMTEsIDQzLCAyMjEsIDIxMCwgNDMsIDIyMSwgMjA4LCA0MywgMjIxLCAyMDcsIDQzLCAKLSAgICAyMjEsIDIwNiwgNDMsIDIyMSwgMjA1LCA0MywgMjIxLCAyMDQsIDQzLCAyMjEsIDIwMywgNDMsIDIyMSwgMjAyLCA0MywgCi0gICAgMjIxLCAyMDEsIDQzLCAyMjEsIDIwMCwgNDMsIDIyMSwgMTk5LCA0MywgMjIxLCAxOTcsIDQzLCAyMjEsIDE5NiwgNDMsIAotICAgIDIyMSwgMTk1LCA0MywgMjIxLCAxOTQsIDQzLCAyMjEsIDE5MywgNDMsIDIyMSwgMTkyLCA0MywgMjIxLCAxOTEsIDQzLCAKLSAgICAyMjEsIDE5MCwgNDMsIDIyMSwgMTg5LCA0MywgMjIxLCAxODgsIDQzLCAyMjEsIDE4NiwgNDMsIDIyMSwgMTg1LCA0MywgCi0gICAgMjIxLCAxODQsIDQzLCAyMjEsIDE4MywgNDMsIDIyMSwgMTgyLCA0MywgMjIxLCAxODEsIDQzLCAyMjEsIDE4MCwgNDMsIAotICAgIDIyMSwgMTc5LCA0MywgMjIxLCAxNzgsIDQzLCAyMjEsIDE3NywgNDMsIDIyMSwgMTc1LCA0MywgMjIxLCAxNzQsIDQzLCAKLSAgICAyMjEsIDE3MywgNDMsIDIyMSwgMTcyLCA0MywgMjIxLCAxNzEsIDQzLCAyMjEsIDE3MCwgNDMsIDIyMSwgMTY5LCA0MywgCi0gICAgMjIxLCAxNjgsIDQzLCAyMjEsIDE2NywgNDMsIDIyMSwgMTY2LCA0MywgMjIxLCAxNjQsIDQzLCAyMjEsIDE2MywgNDMsIAotICAgIDIyMSwgMTYyLCA0MywgMjIxLCAxNjEsIDQzLCAyMjEsIDE2MCwgNDMsIDIyMSwgMTU5LCA0MywgMjIxLCAxNTgsIAorICAgIDAsIDIxOSwgMTgsIDI0NSwgMzEsIDc4LCAyMjMsIDI1NCwgNzgsIDU0LCA1MCwgMjQ3LCAxMzIsIDUwLCAyMjUsIDE4MiwgCisgICAgNTAsIDI1NCwgMTI2LCAyNTQsIDU3LCA0MywgMjI2LCAzLCA0NCwgMjI2LCAzLCAyNTMsIDIxNiwgOTYsIDUwLCAyNDksIAorICAgIDIxOSwgMjQwLCAxNjcsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjE5LCA0NiwgMjEsIDIxMCwgODYsIDIxLCAxMTAsIDIxLCAKKyAgICAxMDUsIDIxLCAxNTgsIDIxLCAxNjEsIDIxLCAxODksIDIxLCAxOTQsIDIxLCAxOTgsIDIxLCAxOTUsIDIxLCAyMDAsIDI0OSwgCisgICAgMjI2LCAyMjAsIDE1MCwgMjMzLCAxNSwgNTAsIDI0NSwgOTgsIDUwLCAyNDIsIDEzMCwgNTAsIDIyNCwgMTMsIDc4LCAyNDksIAorICAgIDIxNywgMjUzLCAyMDYsIDcsIDYsIDEsIDYxLCA3LCA2LCAxLCAyNTMsIDE1OCwgNywgNiwgMSwgMjUxLCA2NiwgNywgNiwgMSwgCisgICAgMjQ5LCA2MCwgNywgNiwgMSwgNzUsIDcsIDYsIDEsIDI0NSwgNiwgNywgNiwgMSwgMjQzLCAyMDIsIDcsIDYsIDEsIDI0MiwgCisgICAgNjAsIDcsIDYsIDEsIDczLCA3LCA2LCAxLCAyMzUsIDE0NCwgNywgNiwgMSwgMjM1LCAyMywgNywgNiwgMSwgMTU2LCA3LCA2LCAKKyAgICAxLCAxOTMsIDcsIDYsIDEsIDIzMCwgMjUsIDcsIDYsIDEsIDc2LCA3LCA2LCAxLCAyMjYsIDEwNSwgNywgNiwgMSwgMjI0LCAKKyAgICA5NiwgNywgNiwgMSwgMTUzLCA3LCA2LCAxLCAyMjIsIDkxLCA3LCA2LCAxLCAyMTcsIDE1MiwgNywgNiwgMSwgNzAsIDcsIDYsIAorICAgIDEsIDIxNCwgMTA1LCA3LCA2LCAxLCAyMTIsIDk4LCA3LCA2LCAxLCAyMTEsIDE3OCwgNywgNiwgMSwgMjExLCAxMTcsIDcsIAorICAgIDYsIDEsIDIxMCwgMTU5LCA0MywgNDIsIDEyNywgMjIzLCA1MCwgMjE5LCA0NiwgNDQsIDQyLCAxMjcsIDI1MCwgMzEsIDI1NSwgCisgICAgMTQsIDEyMSwgMjMyLCAyMTMsIDI0MiwgMTM3LCAyNTUsIDE0LCA3LCA0LCAxLCA2MSwgNywgNCwgMSwgMjUzLCAxNTgsIDcsIAorICAgIDQsIDEsIDI1MSwgNjYsIDcsIDQsIDEsIDI0OSwgNjAsIDcsIDQsIDEsIDc1LCA3LCA0LCAxLCAyNDUsIDYsIDcsIDQsIDEsIAorICAgIDI0MywgMjAyLCA3LCA0LCAxLCAyNDIsIDYwLCA3LCA0LCAxLCA3MywgNywgNCwgMSwgMjM1LCAxNDQsIDcsIDQsIDEsIDIzNSwgCisgICAgMjMsIDcsIDQsIDEsIDE1NiwgNywgNCwgMSwgMTkzLCA3LCA0LCAxLCAyMzAsIDI1LCA3LCA0LCAxLCA3NiwgNywgNCwgMSwgCisgICAgMjI2LCAxMDUsIDcsIDQsIDEsIDIyNCwgOTYsIDcsIDQsIDEsIDE1MywgNywgNCwgMSwgMjIyLCA5MSwgNywgNCwgMSwgMjE3LCAKKyAgICAxNTIsIDcsIDQsIDEsIDcwLCA3LCA0LCAxLCAyMTQsIDEwNSwgNywgNCwgMSwgMjEyLCA5OCwgNywgNCwgMSwgMjExLCAxNzgsIAorICAgIDcsIDQsIDEsIDIxMSwgMTE3LCA3LCA0LCAxLCAyMTAsIDE1OSwgNDMsIDI0OSwgOTksIDEyNywgNjcsIDIzMiwgMjEzLCA0NCwgCisgICAgMjQ5LCA5OSwgMTI3LCAxODIsIDIyOCwgNzMsIDIxOSwgMTgsIDIzNSwgMTkzLCAyNDUsIDMxLCA3OCwgMjUwLCAxNzYsIDUwLCAKKyAgICAyMjQsIDIyOCwgNTAsIDI0OSwgOTgsIDUwLCAyMTEsIDQwLCA1MCwgMjUxLCAxMzUsIDEzMCwgMjIxLCAxNzMsIDUwLCAyNDgsIAorICAgIDEsIDI0OSwgMTYzLCA1MCwgMjQ0LCAxMzYsIDIyNiwgMTU0LCAyMzUsIDIzOCwgMjMzLCA0MiwgNTIsIDI1NCwgMTEwLCAKKyAgICAyMjMsIDI1NCwgNzgsIDIyOCwgNTIsIDUwLCAyMTksIDUyLCAyNDAsIDE2OCwgMjIzLCAxMDIsIDUwLCAyMzEsIDIzMiwgCisgICAgMjQ4LCA3MSwgNTAsIDIyNSwgMjEsIDUwLCAyMTgsIDIzLCAxMDUsIDIxOCwgMjMsIDE1OCwgMjU1LCAzLCAyNTUsIDE0LCAKKyAgICAyMzAsIDIyOCwgNTAsIDIyNSwgNjgsIDUwLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDI1MCwgMTgzLCAyMTgsIDIzLCAxMTAsIAorICAgIDIzMSwgMTQ4LCAyMjYsIDE1NCwgMjM1LCAyMzgsIDIyMiwgMjQ3LCA1MiwgMjU0LCAxMTAsIDIyMywgMjU0LCA3OCwgMjEyLCAKKyAgICAxMTQsIDI0NCwgMiwgMTIzLCAyMjQsIDIxLCAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDI0MiwgMjcsIDIxMiwgMTE0LCAyNDQsIAorICAgIDIsIDEzNCwgMjI0LCAxOSwgMjM1LCAxOTMsIDIyNCwgMTMsIDc4LCA3LCA2LCAxLCAxMTUsIDIsIDI0MiwgMTM2LCA3LCA2LCAKKyAgICAxLCAxMTUsIDIsIDE0MiwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAxMTUsIDIsIDE4MiwgNywgNiwgMSwgCisgICAgMTE1LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDExNSwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA2LCAxLCAyNTQsIDI0MywgNywgNiwgCisgICAgMSwgMjUxLCA2NywgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDE2MCwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgMTQyLCAKKyAgICA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDE2MCwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgCisgICAgMjQyLCAxMzYsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAxNDIsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyNTAsIDMwLCA3LCA2LCAKKyAgICAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyNDUsIDU5LCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAxODIsIDcsIDYsIAorICAgIDEsIDE0NCwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE0NCwgMiwgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIDI1MCwgMzAsIDcsIAorICAgIDYsIDEsIDE0NCwgMiwgMTgyLCA3LCA2LCAxLCAxNDQsIDIsIDI0OCwgMSwgMjMwLCA4NCwgNTAsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgOTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDEwNCwgMiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIAorICAgIDI1MCwgMzAsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMTQyLCA3LCA2LCAxLCAKKyAgICAyMTYsIDE1MSwgNywgNCwgMSwgMjIwLCA3NiwgMjIyLCA5MSwgNywgNCwgMSwgMTE1LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgCisgICAgMTE1LCAyLCAxNDIsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMCwgNywgNCwgMSwgMTE1LCAyLCAxODIsIDcsIDQsIDEsIAorICAgIDExNSwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA0OCwgNywgNCwgMSwgMjU0LCAyNDMsIDcsIDQsIAorICAgIDEsIDI1MSwgNjcsIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAxNjAsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNjAsIDIsIDE0MiwgCisgICAgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMwLCA3LCA0LCAxLCAxNjAsIDIsIDI0OCwgMSwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIAorICAgIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMTQyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjUwLCAzMCwgNywgNCwgCisgICAgMSwgMjQwLCAxNTQsIDIsIDI0OCwgMSwgNywgNCwgMSwgMjQ1LCA1OSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMTgyLCA3LCA0LCAKKyAgICAxLCAxNDQsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNDQsIDIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMwLCA3LCAKKyAgICA0LCAxLCAxNDQsIDIsIDE4MiwgNywgNCwgMSwgMTQ0LCAyLCAyNDgsIDEsIDI0NywgMTY5LCA1MCwgNywgNCwgMSwgMTQ0LCAKKyAgICAyLCA5MSwgNywgNCwgMSwgMTA0LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgCisgICAgMjUwLCAzMCwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDEsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAxNDIsIDcsIDQsIDEsIAorICAgIDIxNiwgMTUxLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAxMTUsIDIsIDIzMSwgMjMyLCA3LCA0LCAKKyAgICAxLCAxMTUsIDIsIDIzMSwgMjMyLCA3LCA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgCisgICAgMTQ2LCA3LCA2LCAxLCAxMTUsIDIsIDIyNiwgMjI0LCA3LCA0LCAxLCAxMTUsIDIsIDIyNiwgMjI0LCA3LCA2LCAxLCAyNTEsIAorICAgIDY3LCAyLCAxNDIsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDE0MiwgNywgNiwgMSwgMjUxLCA2NywgMiwgMjUwLCAzMCwgNywgNCwgCisgICAgMSwgMjUxLCA2NywgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjUxLCA2NywgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAKKyAgICA1OSwgNDgsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAyNTAsIDIzNCwgNywgCisgICAgNiwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDksIAorICAgIDYxLCAyLCA5MSwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgOTEsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIAorICAgIDE2MCwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDE2MCwgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDE2MCwgMiwgMjUxLCAxNDYsIAorICAgIDcsIDYsIDEsIDE2MCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxNjAsIDIsIDU5LCA0OCwgNywgNiwgMSwgMTYwLCAyLCAyMjYsIAorICAgIDIyNCwgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyNCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTYwLCAKKyAgICAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyNTAsIAorICAgIDMwLCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyNTEsIDE0NiwgNywgNiwgCisgICAgMSwgMjQzLCAyMDMsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjQzLCAyMDMsIAorICAgIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDI1MCwgCisgICAgMzAsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDkxLCA3LCA0LCAxLCAyNDIsIAorICAgIDYxLCAyLCA5MSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDE4MiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDE4MiwgNywgNiwgMSwgCisgICAgMjQwLCAxNTQsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDI0MCwgMTU0LCAKKyAgICAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDI1MSwgMTQ2LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAKKyAgICAyMjQsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMjYsIDIyNCwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDU5LCA0OCwgNywgNCwgCisgICAgMSwgMjQ3LCAxMTksIDczLCA3LCA2LCAyNywgMjM2LCAzMSwgNywgNCwgMjcsIDIzNiwgMzEsIDcsIDYsIDEsIDIzNSwgMTQ1LCAKKyAgICAyLCAyNTAsIDMwLCA3LCA0LCAxLCAyMzUsIDE0NSwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjM1LCAyNCwgMiwgMjUwLCAxODMsIAorICAgIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyMzMsIDIzOSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIAorICAgIDE0MiwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDE0MiwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAKKyAgICAyMzMsIDE0OSwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjMzLCAxNDksIAorICAgIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjMwLCAyMjQsIDI0NywgMTIwLCA3LCA0LCAxLCAyMzMsIDE0OSwgCisgICAgMiwgMjMwLCAyMjQsIDI0NywgMTIwLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgOTEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAKKyAgICA5MSwgNywgNiwgMSwgMjMwLCAyNiwgMiwgMTQyLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAxNDIsIDcsIDYsIDEsIDIzMCwgMjYsIAorICAgIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjMwLCAyNiwgMiwgMjUwLCAKKyAgICAyMzQsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMzAsIDI2LCAyMjQsIDIwNCwgMjUxLCA3OCwgCisgICAgMjU0LCA1NywgNywgNiwgMSwgMjQ1LCAxMzgsIDcsIDQsIDEsIDI0NSwgMTM4LCA3LCA2LCAxLCAxNDQsIDIsIDIzMSwgMjMyLCAKKyAgICA3LCA0LCAxLCAxNDQsIDIsIDIzMSwgMjMyLCA3LCA2LCAxLCAxNDQsIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxNDQsIDIsIAorICAgIDI1MSwgMTQ2LCA3LCA2LCAxLCAxNDQsIDIsIDUyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgNTIsIDE0MiwgNywgNiwgMjcsIAorICAgIDIyNiwgMjM0LCA3LCA0LCAyNywgMjI2LCAyMzQsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAxNDIsIDcsIDQsIDEsIDIyMywgCisgICAgMjI0LCAyLCAxNDIsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDI1MCwgCisgICAgMTgzLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyNTAsIDIzNCwgNywgCisgICAgNiwgMSwgMjIyLCA5MiwgMiwgMTQyLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAxNDIsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIAorICAgIDI1MCwgMzAsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDI1MCwgMTgzLCA3LCAKKyAgICA0LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIyMiwgCisgICAgOTIsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAKKyAgICAyNTAsIDE4MywgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjUwLCAyMzQsIAorICAgIDcsIDYsIDEsIDIxNywgMTUzLCAyLCA5MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDkxLCA3LCA2LCAxLCAxMDQsIDIsIDE4MiwgCisgICAgNywgNCwgMSwgMTA0LCAyLCAxODIsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAKKyAgICAyMzIsIDcsIDYsIDEsIDEwNCwgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDEwNCwgMiwgMjUxLCAxNDYsIDcsIDYsIDEsIDEwNCwgCisgICAgMiwgMjIyLCAyMzQsIDQ4LCA3LCA0LCAxLCAxMDQsIDIsIDIyMiwgMjM0LCA0OCwgNywgNiwgMSwgMTA0LCAyLCA1MiwgMTQyLCAKKyAgICA3LCA0LCAxLCAxMDQsIDIsIDUyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjI2LCAyMjQsIDcsIDQsIDEsIDEwNCwgMiwgCisgICAgMjI2LCAyMjQsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDI1MCwgMzAsIDcsIAorICAgIDYsIDEsIDIxMSwgMTE4LCAyLCAyNTAsIDMwLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjExLCAKKyAgICAxMTgsIDIsIDI0OCwgMSwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDE0MiwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDE0MiwgNywgCisgICAgNiwgMSwgMjEwLCAxNjAsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjEwLCAKKyAgICAxNjAsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDE5OSwgMjIyLCA5MSwgCisgICAgNywgNCwgMSwgNTcsIDIsIDkxLCA3LCA2LCAxLCA1NywgMiwgMTAzLCA3LCA2LCAxLCA1NywgMiwgMjE2LCAxMSwgNywgNCwgCisgICAgMSwgNTcsIDIsIDIxNiwgMTEsIDcsIDYsIDEsIDEzOCwgMTk0LCA3LCA0LCAxLCAxMzgsIDE5NCwgNywgNiwgMSwgMjA0LCAKKyAgICA3NiwgNywgNiwgMSwgMjUxLCA2NywgMiwgMTAzLCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAxMDMsIDcsIDYsIDEsIDI1NCwgCisgICAgMjE5LCAyNDksIDYwLCA3LCA2LCAxLCAyNDksIDYxLCAyLCAxMDMsIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDIxNiwgMTEsIDcsIAorICAgIDQsIDEsIDI0OSwgNjEsIDIsIDIxNiwgMTEsIDcsIDQsIDEsIDIxNSwgOTQsIDI0OCwgNTQsIDcsIDYsIDEsIDIyMywgNDksIAorICAgIDc1LCA3LCA2LCAxLCAyMjEsIDE5NSwgNywgNiwgMSwgMjA0LCA3NSwgNywgNiwgMSwgMjQ1LCA3LCAyLCAxMDMsIDcsIDQsIAorICAgIDEsIDI0NSwgNywgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIDEwNywgNywgNCwgMSwgCisgICAgMjQwLCAyMDEsIDcsIDYsIDEsIDIzNSwgMTg1LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgOTEsIDcsIDYsIDEsIDIzNSwgMjQsIAorICAgIDIsIDEwMywgNywgNCwgMSwgMjM1LCAyNCwgMiwgMTAzLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMTMwLCA3LCA0LCAxLCAKKyAgICAyMzMsIDEwMCwgMiwgOTEsIDcsIDYsIDEsIDIxNSwgOTQsIDE5MywgNywgNiwgMSwgMjMwLCAyNiwgMiwgNDMsIDEwMywgNywgCisgICAgNCwgMSwgMjMwLCAyNiwgMiwgMTk5LCA0NCwgMjMzLCAzNiwgNywgNiwgMSwgMTQ0LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA2LCAKKyAgICAxLCAxNDQsIDIsIDI0MCwgMjQ4LCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ4LCA3LCA2LCAxLCAyMjYsIDIxOSwgNywgNCwgCisgICAgMSwgMjI2LCAyMTksIDcsIDYsIDEsIDIyNiwgMTA2LCAyLCAxMDMsIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAxMDMsIDcsIDEsIAorICAgIDIxMCwgMjE0LCA3LCA2LCAxLCAxMzgsIDEwNSwgNywgNCwgMSwgMTM4LCAxMDUsIDcsIDYsIDEsIDI0NSwgNzUsIDcsIDEsIAorICAgIDIyMywgNDksIDI0NSwgNzYsIDIzMiwgMTIzLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjI2LCA2NiwgMTAzLCA3LCA2LCAxLCAKKyAgICAyMTcsIDE1MywgMiwgMTAzLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMTAzLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjIzLCAKKyAgICA1NSwgMTAzLCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ4LCA3LCA0LCAxLCAxMDQsIDIsIDI0MCwgMjQ4LCA3LCA2LCAxLCAKKyAgICAyMTQsIDE1NywgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDEwMywgNywgNiwgMSwgMjExLCAxMTgsIDIsIDEwMywgNywgNCwgMSwgCisgICAgMjExLCAxMTgsIDIsIDEwMywgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDkxLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgOTEsIDcsIAorICAgIDYsIDEsIDI0NSwgOCwgNywgNiwgMSwgMjQ1LCA5LCAyMjMsIDQ4LCA3LCA0LCAxLCAyNDUsIDksIDIyMywgNDgsIDcsIDQsIAorICAgIDEsIDI0NSwgOSwgMiwgMjE3LCA3NywgNywgMSwgMTEzLCAyLCA5MSwgNywgNiwgMSwgMTM4LCAxODksIDcsIDQsIDEsIDEzOCwgCisgICAgMTg5LCA3LCAxLCAyMzUsIDE5MywgMjQyLCAxODAsIDIxOCwgMTMwLCAyLCA5MSwgNywgMSwgMjExLCAxODEsIDcsIDEsIAorICAgIDI0OCwgNDcsIDI1MCwgMTEsIDcsIDEsIDIzMywgNzcsIDI1MCwgMTEsIDcsIDEsIDI1NCwgMTM3LCAyNTAsIDExLCA3LCAxLCAKKyAgICAyMjMsIDU1LCAyNTAsIDExLCA3LCA2LCAxLCAyNDYsIDQwLCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjQ5LCA2MSwgMiwgNCwgCisgICAgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDYsIDQwLCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjMyLCAKKyAgICAxODgsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCA0LCAxLCAyMzUsIDE0NCwgNywgNCwgMSwgMjMyLCAxODgsIDcsIDYsIDEsIAorICAgIDIyOCwgMTg2LCA3LCA2LCAxLCAyMzAsIDI2LCAyLCA0LCAxLCAyMzUsIDE0NCwgNywgNCwgMSwgMjI4LCAxODYsIDcsIDYsIAorICAgIDEsIDExNSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAKKyAgICAyNTAsIDIzNCwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAxNDQsIDIsIDI1MCwgMjM0LCA3LCAKKyAgICA0LCAxLCAxNDQsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAxMDQsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgCisgICAgMjM0LCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIAorICAgIDIzMSwgMjMyLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgCisgICAgMjUwLCAyMzQsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCAKKyAgICAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIxNSwgOTQsIDc1LCA3LCA2LCAxLCAxMTUsIDIsIDI0OCwgMiwgMjIsIDIzMSwgCisgICAgMjMyLCA3LCA0LCAxLCAxMTUsIDIsIDI0OCwgMiwgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAxMTUsIDIsIDU5LCA3NywgMjIsIAorICAgIDIzMSwgMjMyLCA3LCA0LCAxLCAxMTUsIDIsIDU5LCA3NywgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAyNTQsIDI0NCwgMiwgCisgICAgMjMxLCAyMzIsIDcsIDQsIDEsIDI1NCwgMjQ0LCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDkxLCA3LCA0LCAKKyAgICAxLCAyNDMsIDIwMywgMiwgOTEsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIAorICAgIDI1MCwgMjM0LCA3LCA2LCAxLCAyMzUsIDI0LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjUwLCAyMzQsIAorICAgIDcsIDYsIDEsIDE0NCwgMiwgMjI2LCAyMjQsIDcsIDQsIDEsIDE0NCwgMiwgMjI2LCAyMjQsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMjI2LCAyMjUsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTQ0LCAyLCAyMjYsIDIyNSwgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAKKyAgICAyNDUsIDksIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDUsIDksIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMzUsIDE0NSwgMiwgCisgICAgMjUwLCAyMzQsIDcsIDYsIDEsIDI0NiwgMzksIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDQsIDEsIDIxMCwgMTU5LCA3LCA0LCAxLCAKKyAgICAyNDYsIDM5LCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMTQyLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMTQyLCA3LCA2LCAxLCAKKyAgICAyNDAsIDE5OSwgNywgNiwgMSwgMjExLCAxODEsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMzAsIAorICAgIDI2LCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNzcsIDIyLCAxNDIsIDcsIDQsIDEsIDExNSwgMiwgCisgICAgMjIyLCAyMzQsIDc3LCAyMiwgMTQyLCA3LCA2LCAxLCAyNTQsIDI0NCwgMiwgMTQyLCA3LCA0LCAxLCAyNTQsIDI0NCwgMiwgCisgICAgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIDIxOCwgMTAzLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIxOCwgMTAzLCAyMiwgCisgICAgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTE1LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIAorICAgIDEsIDExNSwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxMTUsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNiwgCisgICAgMSwgMTYwLCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNjAsIDIsIAorICAgIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMTYwLCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDYsIDEsIDI0MCwgCisgICAgMTU0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDI0MCwgCisgICAgMTU0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIAorICAgIDYsIDEsIDE0NCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNDQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTQ0LCAKKyAgICAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDE0NCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA2LCAxLCAyMjMsIAorICAgIDIyNCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAxLCAyMjMsIAorICAgIDIyNCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCAKKyAgICA2LCAxLCAxMDQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDEwNCwgCisgICAgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxMDQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNiwgMSwgMjIyLCAKKyAgICA5MiwgMiwgMjQ5LCAyMjAsIDUxLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAyNDksIDIyMCwgNTEsIDcsIDYsIDEsIDIxNywgCisgICAgMTUzLCAyLCAyNDksIDIyMCwgNTEsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyNDksIDIyMCwgNTEsIDcsIDYsIDEsIDIxMCwgCisgICAgMjMxLCA3LCA0LCAxLCAyMTAsIDIzMSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0MiwgNjEsIAorICAgIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAxOTksIDQ0LCAyMzMsIDM2LCA3LCA0LCAxLCAyNDksIDYxLCAyLCAKKyAgICAyNDksIDEwMCwgNywgNiwgMSwgMjI2LCAxMzQsIDcsIDQsIDEsIDIyNiwgMTM0LCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgCisgICAgMTAzLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMTAzLCA3LCA2LCAxLCAxMTUsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTE1LCAyLCAKKyAgICA1OSwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIAorICAgIDE0NCwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE0NCwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAyMzIsIDcsIAorICAgIDYsIDEsIDE0NCwgMiwgMjE2LCA4OSwgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgODksIDIyLCAyMzEsIAorICAgIDIzMiwgNywgNiwgMSwgMTQ0LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDU5LCA3NywgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxNDQsIDIsIDU5LCA3NywgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAKKyAgICAyMTEsIDExOCwgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjMzLCAxNDksIAorICAgIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDI0OSwgCisgICAgMTAwLCA3LCA0LCAxLCAyNDcsIDExOSwgMjM1LCAxNDQsIDcsIDQsIDEsIDI0OCwgMTQzLCAyNDcsIDIyMCwgNywgNCwgMSwgCisgICAgMjI0LCAzMSwgMjQ3LCAyMjAsIDcsIDYsIDEsIDExNSwgMiwgOTEsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDkxLCA3LCA0LCAxLCAKKyAgICAyNTEsIDY3LCAyLCA5MSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDEzMCwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDI0NywgCisgICAgMjU1LCA5MSwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjE3LCAyNTAsIDIxNywgNzcsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAKKyAgICAyMTcsIDI1MCwgMjE3LCA3NywgNywgNiwgMSwgMjQyLCAxODAsIDIxOCwgMTI5LCA3LCA0LCAxLCAyNDIsIDE4MCwgMjE4LCAKKyAgICAxMjksIDcsIDYsIDEsIDU3LCAyLCA5MSwgNywgNiwgMSwgMTA0LCAxMzAsIDcsIDYsIDEsIDIxNSwgOTQsIDIxNCwgMTA1LCAKKyAgICA3LCA2LCAxLCAxNjAsIDIsIDkxLCA3LCA0LCAxLCAxNjAsIDIsIDkxLCA3LCA2LCAxLCAyMzUsIDE0NSwgMiwgOTEsIDcsIDQsIAorICAgIDEsIDIzNSwgMTQ1LCAyLCA5MSwgNywgNiwgMSwgNCwgMjI0LCA5NywgMiwgMjQxLCA1MiwgMjE3LCA3NywgNywgNCwgMSwgCisgICAgMjI0LCA5NywgMiwgMjQxLCA1MiwgMjE3LCA3NywgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDkxLCA3LCA0LCAxLCAyMjMsIAorICAgIDIyNCwgMiwgOTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCA5MSwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDkxLCA3LCA0LCAxLCAKKyAgICAyMTUsIDk0LCA2MSwgNywgNCwgMSwgMjU0LCAxNDMsIDcsIDQsIDEsIDIxNSwgOTQsIDI1NCwgMTQzLCA3LCA0LCAxLCA1NywgCisgICAgMiwgMTAzLCA3LCA0LCAxLCAyMDQsIDc2LCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjQ5LCAKKyAgICA2MSwgMiwgMjE3LCA3NywgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMTAzLCA3LCA0LCAxLCAyMjMsIDQ5LCA3NSwgNywgNCwgMSwgCisgICAgMjIxLCAxOTUsIDcsIDQsIDEsIDIyMSwgMTk2LCAyLCAxMDMsIDcsIDQsIDEsIDIwNCwgNzUsIDcsIDQsIDEsIDIyMywgNDksIAorICAgIDIwNCwgNzUsIDcsIDQsIDEsIDIyMywgNDksIDIwNCwgMTYwLCAyLCAxMDMsIDcsIDQsIDEsIDI1MCwgMCwgMjIzLCA0OSwgCisgICAgMjA0LCA3NSwgNywgNCwgMSwgMjQ3LCAxMTksIDIzNSwgMTQ1LCAyLCA5MSwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDEwMywgCisgICAgNywgNCwgMSwgMTE5LCAyNDMsIDIwMiwgNywgMSwgNCwgNiwgMjQzLCAyMDIsIDcsIDQsIDEsIDI0MywgMTA3LCA3LCA0LCAxLCAKKyAgICAyMjMsIDE1MSwgMjQwLCAyNDgsIDcsIDQsIDEsIDIxNSwgOTQsIDI0MiwgNjAsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDEwMywgCisgICAgNywgNCwgMSwgMjQxLCAyMDgsIDIsIDEwMywgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDE4NSwgCisgICAgNywgMSwgNCwgNiwgNzMsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMzMsIDE0OSwgCisgICAgMiwgMjUyLCA0MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjMzLCAxLCA3LCA0LCAxLCAKKyAgICAyMTUsIDk0LCAxOTMsIDcsIDQsIDEsIDIxNSwgOTQsIDIzMiwgNTAsIDIsIDE5OSwgMjMzLCAzNiwgNywgNCwgMSwgMjMyLCAKKyAgICA1MCwgMiwgMTAzLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCA0MywgMTAzLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyMjMsIDU1LCAKKyAgICAxMDMsIDcsIDEsIDQsIDYsIDIzMCwgMjUsIDcsIDQsIDEsIDI1MiwgMTM0LCA3NiwgNywgMSwgNCwgNiwgMjI2LCAyMzQsIDcsIAorICAgIDQsIDEsIDI1MCwgMCwgMjI2LCAyMDEsIDcsIDQsIDEsIDIyNSwgMTMzLCA3LCA0LCAxLCAyMTUsIDk0LCAxNTMsIDcsIDQsIAorICAgIDEsIDIxNSwgOTQsIDIyMywgMjI0LCAyLCAxOTksIDIzMywgMzYsIDcsIDQsIDEsIDIxNSwgOTQsIDIyMywgMjI0LCAyLCAKKyAgICAxMDMsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAxOTksIDIzMywgMzYsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyMTcsIDc3LCAKKyAgICA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjQ0LCA4NywgNywgNCwgMSwgMjIzLCA0OSwgMjIzLCAyMjQsIDIsIDI0NCwgODcsIDcsIAorICAgIDEsIDQsIDYsIDE1MywgNywgMSwgNCwgNiwgMjM1LCAxOTMsIDE1MywgNywgNCwgMSwgMjIyLCA5MiwgMiwgMTAzLCA3LCA0LCAKKyAgICAxLCAyNDUsIDc1LCA3LCA0LCAxLCAyNDcsIDExOSwgMjM1LCAxNDUsIDIsIDIxOCwgMTAzLCAyMiwgMTAzLCA3LCA0LCAxLCAKKyAgICAyMTgsIDIzMSwgMjIzLCA0OSwgMjQ1LCA3NSwgNywgNCwgMSwgMjQ1LCA3NiwgMiwgMjQ5LCAxMDAsIDcsIDQsIDEsIDIxNSwgCisgICAgOTQsIDIxNywgMTUyLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAxMDQsIDEzMCwgNywgCisgICAgNCwgMSwgMjE0LCAxNTcsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAxMDMsIDcsIDQsIDEsIDIxNSwgOTQsIDIxNCwgMTA1LCA3LCAKKyAgICA0LCAxLCAyMTUsIDk0LCAyMTIsIDk4LCA3LCA0LCAxLCAyMTUsIDk0LCAyMTEsIDExNywgNywgMSwgNCwgNiwgMjExLCAxMTcsIAorICAgIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNDksIDEwMCwgNywgNCwgCisgICAgMSwgMjQ1LCA4LCA3LCA0LCAxLCAyNDUsIDksIDIsIDI0OSwgMTAwLCA3LCAxLCAyNDIsIDE4MCwgMjE4LCAxMjksIDcsIDEsIAorICAgIDIyNSwgMTM5LCAyMTMsIDEzNSwgMjQzLCAyNDksIDcsIDEsIDIzNSwgMTkzLCAyNDIsIDE4MCwgMjE4LCAxMjksIDcsIDEsIAorICAgIDIxOCwgMTEwLCAyNTEsIDY2LCA3LCAxLCAyNTEsIDI0NiwgMjUwLCAxMSwgNywgMSwgNCwgNiwgMjUzLCAxNTgsIDcsIDQsIAorICAgIDEsIDI1MCwgMCwgMjA0LCA3NSwgNywgMSwgNCwgNiwgMjQzLCAyMDMsIDIsIDEwMywgNywgMSwgNCwgNiwgMjQyLCA2MCwgNywgCisgICAgNCwgMSwgMjM1LCAxNDUsIDIsIDI0OSwgMTI3LCA3LCA0LCAxLCAyMTUsIDk0LCAyMzUsIDIzLCA3LCAxLCA0LCA2LCAxNTYsIAorICAgIDcsIDQsIDEsIDIyNCwgOTcsIDIsIDEwMywgNywgMSwgMjQyLCAxODAsIDIxOCwgMTMwLCAyLCA5MSwgNywgMSwgMjIzLCA0OSwgCisgICAgMjQyLCAxODAsIDIxOCwgMTMwLCAyLCA5MSwgNywgNCwgMSwgMjQ2LCA0MCwgMjQ3LCAyMjAsIDcsIDQsIDEsIDI0OCwgMjYsIAorICAgIDI0NywgMjIwLCA3LCA0LCAxLCAyNDYsIDQwLCAyNDcsIDIyMSwgMiwgMjQ5LCAxMDAsIDcsIDQsIDEsIDIxNSwgMTg1LCAKKyAgICAyNDcsIDIyMCwgNywgNCwgMSwgMjE2LCAyMzUsIDI0NywgMjIwLCA3LCA0LCAxLCAyMTcsIDI5LCAyNDcsIDIyMSwgMiwgCisgICAgMjQ5LCAxMDAsIDcsIDQsIDEsIDI0NCwgMTM0LCAyNDcsIDIyMCwgNywgNCwgMSwgMjMyLCAxMDAsIDI0NywgMjIwLCA3LCA0LCAKKyAgICAxLCAyMzIsIDUxLCAyNDcsIDIyMCwgNywgMSwgMjUxLCAyNDYsIDIyNSwgMTgxLCA3LCAxLCAyNTEsIDI1NCwgMjI1LCAxODEsIAorICAgIDcsIDQsIDEsIDIxNSwgOTQsIDI0MiwgNjEsIDIsIDI0NCwgODcsIDcsIDQsIDEsIDIxNSwgOTQsIDI0MiwgNjEsIDIsIDI0NCwgCisgICAgODgsIDIyLCAyMTcsIDc3LCA1OCwgMSwgNCwgMjQyLCA2MCwgNTgsIDEsIDQsIDI0MiwgNjEsIDIsIDEwMywgNTgsIDEsIDQsIAorICAgIDIzNSwgMTQ0LCA1OCwgMSwgNCwgMTUzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMTUzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjIzLCAKKyAgICAyMjQsIDIsIDEwMywgNTgsIDEsIDQsIDYsIDIzNSwgMTkzLCAxNTMsIDU4LCAxLCA0LCAyMTIsIDk4LCA1OCwgMSwgNCwgCisgICAgMjExLCAxMTcsIDU4LCAxLCAyMjQsIDE5MCwgNTgsIDEsIDUyLCAyMjQsIDE5MCwgNTgsIDEsIDIxNSwgOTQsIDI0OSwgMjE5LCAKKyAgICA1OCwgMSwgMjU0LCA1NywgNTgsIDEsIDIyMywgNDksIDI0OSwgMjE5LCA1OCwgMSwgNDQsIDE2MywgMjIyLCAyMzMsIDU4LCAKKyAgICAxLCA0MywgMTYzLCAyMjIsIDIzMywgNTgsIDEsIDI0MiwgMTgwLCAyMTgsIDEyOSwgNTgsIDEsIDIyMywgNDksIDI0MiwgCisgICAgMTgwLCAyMTgsIDEyOSwgNTgsIDEsIDQzLCAyNTMsIDI0OSwgNTgsIDEsIDQ0LCAyNTMsIDI0OSwgNTgsIDEsIDEyMCwgMjUzLCAKKyAgICAyNDksIDU4LCAxLCAxMjQsIDI1MywgMjQ5LCA1OCwgMSwgMjUwLCAzMSwgMjU1LCAxNCwgMjUwLCAyMzQsIDU4LCAxLCA2NywgCisgICAgMjMyLCAyMTMsIDU4LCAxLCAyMzEsIDIzMiwgNTgsIDEsIDI1NSwgMywgMjU1LCAxNCwgNTgsIDEsIDI0MiwgMTM3LCAyNTUsIAorICAgIDE0LCA1OCwgMSwgMTIxLCA2NywgMjMyLCAyMTMsIDU4LCAxLCAxMjEsIDIzMSwgMjMyLCA1OCwgMSwgMTIxLCAyNDIsIDEzNywgCisgICAgMjU1LCAxNCwgNTgsIDEsIDEyMSwgMjU1LCAzLCAyNTUsIDE0LCA1OCwgMSwgMjE1LCAyMjIsIDI0OSwgMjI2LCA1OCwgMSwgCisgICAgMTYzLCAyMTUsIDIyMiwgMjQ5LCAyMjYsIDU4LCAxLCAyNTAsIDE3MywgNDQsIDE2MywgMjIyLCAyMzMsIDU4LCAxLCAyNTAsIAorICAgIDE3MywgNDMsIDE2MywgMjIyLCAyMzMsIDU4LCAxLCAxMjAsIDIxNywgODcsIDU4LCAxLCAxMjQsIDIxNywgODcsIDU4LCAxLCAKKyAgICA5NiwgNTAsIDU4LCAxLCAyMzAsIDE4MiwgNTAsIDI1MSwgMTQ2LCA1OSwgNDgsIDIyMiwgMjM0LCA0OCwgMjI2LCAyMjQsIDQsIAorICAgIDE4MiwgNTIsIDI1NSwgMywgMjU1LCAxNCwgNTgsIDEsIDIyMywgMzYsIDEwMywgNTgsIDEsIDI0OSwgMTMxLCAyNTUsIDE0LCAKKyAgICA1OCwgMSwgNCwgMjQzLCAxMDcsIDU4LCAxLCA0LCAxNTYsIDU4LCAxLCA0LCAyMjIsIDkxLCA1OCwgMSwgNCwgMjExLCAxNzgsIAorICAgIDU4LCAxLCA0LCAyMjMsIDQ5LCAyNDIsIDE4MCwgMjE4LCAxMjksIDU4LCAxLCAyNDUsIDIwLCAxMzgsIDEzMCwgNTgsIDEsIAorICAgIDEyNSwgMTM4LCAxMzAsIDU4LCAxLCAyMzAsIDIyNSwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDEzOCwgMTMwLCA1OCwgMSwgCisgICAgMjQ1LCAxOSwgMTM4LCAxMzAsIDU4LCAxLCAyMTAsIDI1NCwgMjQ4LCA0NCwgMTM4LCA3OCwgNTgsIDEsIDIxMSwgNzAsIAorICAgIDI0OCwgNDQsIDEzOCwgNzgsIDU4LCAxLCAyMTMsIDEzMywgNTgsIDEsIDIxNCwgMTg2LCA1OCwgMSwgNTIsIDI1NCwgNTcsIAorICAgIDU4LCAxLCAxMjEsIDEyNCwgMjUzLCAyNDksIDU4LCAxLCAxMjEsIDEyMCwgMjUzLCAyNDksIDU4LCAxLCAxMjEsIDQzLCAKKyAgICAyNTMsIDI0OSwgNTgsIDEsIDEyMSwgNDQsIDI1MywgMjQ5LCA1OCwgMSwgMTIxLCAyMjIsIDIzMywgNTgsIDEsIDIzMCwgCisgICAgMjI0LCAyNDIsIDEzNywgMjU1LCAxNCwgNTgsIDEsIDIzMCwgMjI0LCA1MiwgMjQyLCAxMzcsIDI1NSwgMTQsIDU4LCAxLCAKKyAgICAyMzAsIDIyNCwgNTIsIDI1NSwgMywgMjU1LCAxNCwgNTgsIDEsIDEyMSwgMTgyLCA1OCwgMSwgMjIzLCAxNTcsIDI0OSwgCisgICAgMjI2LCA1OCwgMSwgMjUyLCA1OCwgMTI1LCAyMTYsIDMwLCA1OCwgMSwgMjQ1LCAxNDMsIDEyNSwgMjE2LCAzMCwgNTgsIDEsIAorICAgIDI1MiwgNTgsIDEyMSwgMjE2LCAzMCwgNTgsIDEsIDI0NSwgMTQzLCAxMjEsIDIxNiwgMzAsIDU4LCAxLCAyMjAsIDU0LCA1OCwgCisgICAgMSwgMjA0LCAyMjAsIDU0LCA1OCwgMSwgMTIxLCA0MywgNzQsIDM4LCAyNDIsIDEzNywgMjU1LCAxNCwgMzgsIDI1NSwgMywgCisgICAgMjU1LCAxNCwgMzgsIDI1MCwgMzEsIDI1NSwgMTQsIDM4LCAxODIsIDM4LCAyMzEsIDIzMiwgMzgsIDIyNiwgMTE5LCAzOCwgCisgICAgMjUxLCAxNDYsIDM4LCA1OSwgNDgsIDM4LCAyNDgsIDEsIDM4LCAyNDEsIDUyLCA0OCwgMzgsIDIyMiwgMjM0LCA0OCwgMzgsIAorICAgIDUyLCAyNTUsIDMsIDI1NSwgMTQsIDM4LCAyNTAsIDIzNCwgMzgsIDY3LCAyMzIsIDIxNCwgNDgsIDM4LCA1MiwgNjcsIDIzMiwgCisgICAgMjE0LCA0OCwgMzgsIDUyLCAyNDIsIDEzNywgMjU1LCAxNCwgMzgsIDI1MCwgMjU1LCAzOCwgMjM1LCAxOTMsIDI1MSwgMTQ2LCAKKyAgICAzOCwgMjE1LCA5NCwgMjQ5LCAyMjAsIDQ4LCAzOCwgMjQ5LCAyMjAsIDQ4LCAzOCwgMjIzLCA0OSwgMjQ5LCAyMjAsIDQ4LCAKKyAgICAzOCwgMjQ5LCAyMjAsIDc3LCAyMjIsIDI1MSwgMzgsIDI0MiwgMTM3LCAyNTUsIDE1LCA1MSwgMzgsIDI1NSwgMywgMjU1LCAKKyAgICAxNSwgNTEsIDM4LCA0MywgMjE3LCA4OCwgNTEsIDM4LCA0NCwgMjE3LCA4OCwgNTEsIDM4LCA0MywgMjU0LCAxMTAsIDQ4LCAKKyAgICAzOCwgMjQwLCAyNDgsIDM4LCA0MywgMTYzLCAyMjIsIDIzNCwgNTEsIDM4LCAxMjAsIDIxNywgODgsIDUxLCAzOCwgMTI0LCAKKyAgICAyMTcsIDg4LCA1MSwgMzgsIDk2LCA1LCA1MSwgMzgsIDIzMCwgMTgyLCA1LCA1MSwgMzgsIDIyNiwgNjQsIDI0MSwgNTIsIAorICAgIDUxLCAzOCwgMjIzLCA1NSwgMjQxLCA1MiwgNTEsIDM4LCA1OSwgNTEsIDM4LCAyNDgsIDIsIDUxLCAzOCwgMjIyLCAyMzQsIAorICAgIDUxLCAzOCwgMjQ5LCAyMjAsIDUxLCAzOCwgMjUwLCAxODMsIDM4LCAyMjYsIDIyNCwgMzgsIDY3LCAyMzIsIDIxNCwgNTEsIAorICAgIDM4LCAyNTEsIDE0MCwgNTEsIDM4LCAyMzUsIDE5MywgNTIsIDI1NCwgMjQsIDUxLCAzOCwgMjUwLCAyMzUsIDUxLCAzOCwgCisgICAgMjUwLCAzMSwgMjU1LCAxNSwgNTEsIDM4LCAyNTEsIDE0NywgNTEsIDM4LCAyMzUsIDE5MywgMjUxLCAxNDcsIDUxLCAzOCwgCisgICAgMjE2LCA4OSwgNTEsIDM4LCAyMzEsIDIzMywgNTEsIDM4LCAxMjEsIDIzMiwgMjEzLCAzOCwgNTIsIDEyMSwgMjMyLCAyMTMsIAorICAgIDM4LCAyMTYsIDg5LCAyMjYsIDEyMCwgMzgsIDIxOSwgMjUxLCAyMTgsIDEwMywgMjI2LCAxMjAsIDM4LCAxOTksIDIxOCwgCisgICAgMTAzLCAyMjYsIDEyMCwgMzgsIDIxOSwgMjUxLCAyMTksIDQ3LCAyMjYsIDEyMCwgMzgsIDE5OSwgMjE5LCA0NywgMjI2LCAKKyAgICAxMjAsIDM4LCA0NCwgMTYzLCAyMjIsIDIzNCwgNTEsIDM4LCAyMzUsIDE5MywgMjUxLCAxNDAsIDUxLCAzOCwgNDIsIDUxLCAKKyAgICAzOCwgMjIxLCAxODAsIDUxLCAzOCwgMjExLCAxNzksIDQ4LCAzOCwgNjcsIDE4MiwgMzgsIDUyLCAyMjYsIDExOSwgMzgsIAorICAgIDI0MiwgMTM3LCAxMzgsIDc4LCAzOCwgMjU1LCAzLCAxMzgsIDc4LCAzOCwgMjYsIDIyNSwgMTc1LCAzOCwgMjYsIDIzNCwgMiwgCisgICAgMzgsIDI2LCAyNDcsIDI1MiwgMjE2LCAxOCwgMzgsIDI2LCAyMTAsIDIxOSwgMzgsIDI1MSwgMTQwLCA0OCwgMzgsIDI0NSwgCisgICAgOTgsIDUsIDUxLCAzOCwgNTIsIDY3LCAyMzIsIDIxNCwgNTEsIDM4LCA0MywgMjU0LCAxMTAsIDUxLCAzOCwgMjI4LCA1MiwgCisgICAgMjE2LCA4OSwgNDgsIDM4LCAyNDEsIDU4LCA0OCwgMzgsIDI1NCwgMTQ4LCAxMjgsIDIxNiwgNDIsIDQ4LCAzOCwgNDMsIDQ0LCAKKyAgICA4MCwgNTEsIDM4LCAyMTQsIDE1MywgODAsIDUxLCAzOCwgMjQyLCAxNDIsIDIzNSwgNjMsIDM4LCA0NCwgMjUzLCAyNTAsIAorICAgIDQ4LCAzOCwgNDMsIDE2MywgMjIyLCAyMzQsIDQ4LCAzOCwgMjQ0LCAxMzEsIDM4LCAyMTEsIDE3OSwgNTEsIDM4LCA0MywgCisgICAgMjUzLCAyNTAsIDUxLCAzOCwgNDQsIDI1MywgMjUwLCA1MSwgMzgsIDQ0LCAyNTMsIDI1MCwgMjIsIDEyMCwgMjUzLCAyNTAsIAorICAgIDUxLCAzOCwgNDQsIDE2MywgMjIyLCAyMzQsIDQ4LCAzOCwgNTksIDc3LCAyMjIsIDI1MSwgMzgsIDI1MywgMjE3LCA1MSwgCisgICAgMzgsIDUyLCAyMjIsIDIzNCwgNTEsIDM4LCAyMTAsIDM1LCA0OCwgMzgsIDUyLCAyNTEsIDE0NywgNTEsIDM4LCA1MiwgMjUxLCAKKyAgICAxNDYsIDM4LCA1MiwgMjMxLCAyMzIsIDM4LCA1MiwgMjMxLCAyMzMsIDUxLCAzOCwgNTIsIDE4MiwgMzgsIDUyLCAyMzUsIAorICAgIDE5MywgMjUxLCAxNDYsIDM4LCA1MiwgOTcsIDgwLCA1MSwgMzgsIDcsIDQsIDEsIDYxLCAzOCwgNywgNCwgMSwgNzUsIDM4LCAKKyAgICA3LCA0LCAxLCA3MywgMzgsIDcsIDQsIDEsIDc2LCAzOCwgNywgNCwgMSwgNzAsIDM4LCA3LCA0LCAxLCAyNTEsIDY2LCAzOCwgCisgICAgNywgNCwgMSwgMjQ5LCA2MCwgMzgsIDcsIDQsIDEsIDI0MiwgNjAsIDM4LCA3LCA0LCAxLCAxOTMsIDM4LCA3LCA0LCAxLCAKKyAgICAxNTMsIDM4LCA3LCA0LCAxLCAyMTcsIDE1MiwgMzgsIDcsIDQsIDEsIDIxNCwgMTA1LCAzOCwgNywgNCwgMSwgMjExLCAxNzgsIAorICAgIDI2LCA2LCAxLCAyNDEsIDE5NiwgMjYsIDQsIDEsIDI0MSwgMTk2LCAyNiwgNiwgMSwgMjU0LCAyMywgMjIxLCAyNDYsIDI2LCAKKyAgICA0LCAxLCAyNTQsIDIzLCAyMjEsIDI0NiwgMjYsIDIyNywgMTk4LCA1MCwgMjYsIDIzMiwgMTA4LCAyMjcsIDE5OCwgNTAsIAorICAgIDI2LCA2LCAxLCAyMjYsIDUxLCAyNDcsIDIyNywgMjYsIDQsIDEsIDIyNiwgNTEsIDI0NywgMjI3LCAyNiwgMjEwLCAyMTksIAorICAgIDI2LCA0LCAyMjMsIDQ5LCAyMzIsIDgzLCAyMTksIDE3OCwgODcsIDI2LCA0LCAyNDYsIDExOCwgMjMyLCA4MywgMjE5LCAKKyAgICAxNzgsIDg3LCAyNiwgNCwgMjIzLCA0OSwgMjQ2LCAxMTgsIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDIyNCwgMTMsIAorICAgIDc4LCAyNiwgMjE2LCAxOCwgMjYsIDI0NywgMjUyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIxNiwgMTgsIAorICAgIDI2LCAyNTQsIDk3LCAyMTcsIDIsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDI0NSwgNjQsIAorICAgIDIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMTYsIAorICAgIDE4LCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjE2LCAxOCwgMjYsIAorICAgIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDcsIDI1MiwgMjIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyNTQsIDE0MywgMjYsIDYsIDEsIAorICAgIDI1MiwgMjYsIDI2LCA2LCAxLCAyNDMsIDEwNywgMjYsIDYsIDEsIDI0OCwgNTQsIDI2LCA2LCAxLCAyNDUsIDEwMCwgMjYsIAorICAgIDYsIDEsIDIxMCwgODUsIDI2LCA2LCAxLCAyNDUsIDYzLCAyNiwgNiwgMSwgMjE2LCAxNzksIDI2LCA2LCAxLCAyMzUsIDE4NSwgCisgICAgMjYsIDYsIDEsIDIzNCwgMjIyLCAyNiwgNiwgMSwgMjMzLCA5OCwgMjYsIDYsIDEsIDIzMCwgMTAyLCAyNiwgNiwgMSwgMjI3LCAKKyAgICAyMzcsIDI2LCA2LCAxLCAyMTEsIDE1NywgMjYsIDYsIDEsIDIyNiwgMTk5LCAyNiwgNiwgMSwgMjI1LCAxMDgsIDI2LCA2LCAKKyAgICAxLCAyMjMsIDM3LCAyNiwgNiwgMSwgMjE5LCAxNzcsIDI2LCA2LCAxLCAyMTcsIDQxLCAyNiwgNiwgMSwgMjE0LCAxNTcsIAorICAgIDI2LCA2LCAxLCAyMjUsIDEzMywgMjYsIDYsIDEsIDI1MCwgMTEwLCAyNiwgNiwgMSwgMjI0LCAxNjEsIDI2LCA2LCAxLCAKKyAgICAyMjYsIDIwMSwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyNDcsIDI1MSwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDcsIAorICAgIDI1MSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTYsIDE4LCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDIxNiwgMTgsIDI2LCAKKyAgICA0LCAxLCAyNDUsIDY0LCAyLCAyMTYsIDE4LCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyMTQsIAorICAgIDE1OCwgMiwgMjQ3LCAyNTIsIDIyLCAyMTYsIDE4LCAyNiwgNCwgMSwgMjU0LCAxNDMsIDI2LCA0LCAxLCAyNTIsIDI2LCAyNiwgCisgICAgNCwgMSwgMjQzLCAxMDcsIDI2LCA0LCAxLCAyNDgsIDU0LCAyNiwgNCwgMSwgMjQ1LCAxMDAsIDI2LCA0LCAxLCAyMTAsIDg1LCAKKyAgICAyNiwgNCwgMSwgMjQ1LCA2MywgMjYsIDQsIDEsIDIxNiwgMTc5LCAyNiwgNCwgMSwgMjM1LCAxODUsIDI2LCA0LCAxLCAyMzQsIAorICAgIDIyMiwgMjYsIDQsIDEsIDIzMywgOTgsIDI2LCA0LCAxLCAyMzAsIDEwMiwgMjYsIDQsIDEsIDIyNywgMjM3LCAyNiwgNCwgMSwgCisgICAgMjExLCAxNTcsIDI2LCA0LCAxLCAyMjYsIDE5OSwgMjYsIDQsIDEsIDIyNSwgMTA4LCAyNiwgNCwgMSwgMjIzLCAzNywgMjYsIAorICAgIDQsIDEsIDQwLCAyMTksIDE3NywgMjYsIDQsIDEsIDIxOSwgMTc3LCAyNiwgNCwgMSwgMjE3LCA0MSwgMjYsIDQsIDEsIDIxNCwgCisgICAgMTU3LCAyNiwgNCwgMSwgMjI1LCAxMzMsIDI2LCA0LCAxLCAyNTAsIDExMCwgMjYsIDQsIDEsIDIyNCwgMTYxLCAyNiwgNCwgCisgICAgMSwgMjI2LCAyMDEsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTEsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAKKyAgICAyNTEsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjE2LCAxOCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTYsIDE4LCAyNiwgCisgICAgNCwgMSwgMjI2LCAyMDIsIDIsIDIxNiwgMTgsIDI2LCA2LCAyMzQsIDI0NywgODcsIDI2LCAyNTIsIDI3LCA4NywgMjYsIAorICAgIDIxNiwgMTgwLCA4NywgMjYsIDIxNCwgMTU4LCAyLCAyNDEsIDUyLCA4NywgMjYsIDIxNCwgMTU4LCAyLCAyNTUsIDMsIDIyLCAKKyAgICAyNDEsIDUyLCA4NywgMjYsIDIxNCwgMTU4LCAyLCAyNDgsIDIsIDIyLCAyNDEsIDUyLCA4NywgMjYsIDIyNSwgMTM0LCA4NywgCisgICAgMjYsIDIyNSwgMTA5LCA4NywgMjYsIDIzNCwgMjQ3LCA4NywgMjYsIDEsIDI1NCwgMjMsIDIzNCwgNiwgMjYsIDQsIDEsIAorICAgIDI1NCwgMjMsIDIzNCwgNiwgMjYsIDEsIDIxOCwgMTM3LCAyNiwgNCwgMSwgMjE4LCAxMzcsIDI2LCAxLCAyNDcsIDIyNywgCisgICAgMjYsIDQsIDEsIDI0NywgMjI3LCAyNiwgMSwgMjM0LCA2LCAyNiwgNCwgMSwgMjM0LCA2LCAyNiwgMSwgMjIxLCAyNDYsIDI2LCAKKyAgICA0LCAxLCAyMjEsIDI0NiwgODEsIDYsIDEsIDIyMCwgNTUsIDgxLCA0LCAxLCAyMjAsIDU1LCA4MSwgNiwgMSwgMjQ0LCAxNDAsIAorICAgIDgxLCA0LCAxLCAyNDQsIDE0MCwgODEsIDYsIDEsIDIzNCwgMTE3LCA4MSwgNCwgMSwgMjM0LCAxMTcsIDgxLCA2LCAxLCAKKyAgICAyNDEsIDQ1LCA4MSwgNCwgMSwgMjQxLCA0NSwgODEsIDYsIDEsIDI0MywgMTAyLCA4MSwgNCwgMSwgMjQzLCAxMDIsIDgxLCAKKyAgICA2LCAxLCAyMjAsIDIyLCA4MSwgNCwgMSwgMjIwLCAyMiwgODEsIDYsIDEsIDI0OCwgNjksIDgxLCA0LCAxLCAyNDgsIDY5LCAKKyAgICAyNiwgMjM0LCAyMjMsIDg3LCAyNiwgMjIzLCAzOCwgODcsIDI2LCAyMzIsIDgzLCAyMTksIDE3OCwgODcsIDI2LCAxLCAyMTAsIAorICAgIDIyNCwgMjYsIDYsIDIxNiwgMTgwLCA4NywgMjYsIDIzMiwgODMsIDI0NSwgMTAxLCA4NywgMjYsIDIyMywgNDksIDIzMiwgCisgICAgODMsIDI0NSwgMTAxLCA4NywgMjYsIDYsIDEsIDIyMCwgNywgMjYsIDQsIDEsIDIyMCwgNywgMjYsIDYsIDIzMiwgODMsIAorICAgIDIxOSwgMTc4LCA4NywgMjYsIDYsIDEsIDIyMSwgMjQzLCAyNiwgNCwgMSwgMjIxLCAyNDMsIDI2LCAyMjMsIDM4LCAyLCAKKyAgICAyMTgsIDEwMywgODcsIDI2LCA2LCAyMjMsIDQ5LCAyMzIsIDgzLCAyMTksIDE3OCwgODcsIDI2LCA2LCAyNDYsIDExOCwgCisgICAgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAyNiwgNiwgMjIzLCA0OSwgMjQ2LCAxMTgsIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgCisgICAgMzMsIDYsIDEsIDIzNiwgNjEsIDIsIDI0MiwgMTM2LCAzMywgNiwgMSwgMjM1LCAxODksIDMzLCA2LCAxLCAyNDcsIDE2MiwgCisgICAgMzMsIDYsIDEsIDI0MiwgMTg3LCAzMywgNiwgMSwgMjE0LCAyMDIsIDIzNiwgNjAsIDMzLCA2LCAxLCAyNDYsIDM2LCAzMywgCisgICAgNiwgMSwgMjUxLCA3NiwgNzMsIDMzLCA2LCAxLCAyMTEsIDgsIDMzLCA2LCAxLCAyMzUsIDEyNiwgMzMsIDYsIDEsIDIzMiwgCisgICAgMTg3LCAzMywgNiwgMSwgMjI4LCAxNzgsIDMzLCA2LCAxLCAyMTUsIDE3NCwgMzMsIDYsIDEsIDIzNCwgNDgsIDMzLCA2LCAxLCAKKyAgICAyNDAsIDE1NCwgMiwgMjQyLCAxMzYsIDMzLCA2LCAxLCAyMTksIDI1MSwgNzAsIDMzLCA2LCAxLCAyNDYsIDMyLCAzMywgNiwgCisgICAgMSwgNjEsIDMzLCA2LCAxLCAyNTIsIDc1LCAzMywgNiwgMSwgMjEzLCAyNTUsIDMzLCA2LCAxLCAyNDIsIDIzNiwgMzMsIDYsIAorICAgIDEsIDI0OCwgOTAsIDMzLCA2LCAxLCAyMzYsIDYwLCAzMywgNiwgMSwgMjEwLCA3NCwgMzMsIDYsIDEsIDIxMCwgOTQsIDMzLCAKKyAgICA2LCAxLCA3MywgMzMsIDYsIDEsIDIxOSwgMjUxLCA3MywgMzMsIDYsIDEsIDE3NiwgMzMsIDYsIDEsIDI0NSwgMTc0LCAzMywgCisgICAgNiwgMSwgMjQ1LCAxNTksIDMzLCA2LCAxLCAyNDUsIDE1MCwgMzMsIDYsIDEsIDc2LCAzMywgNiwgMSwgMjI1LCAyMjEsIDMzLCAKKyAgICA2LCAxLCAyNDUsIDkyLCAzMywgNiwgMSwgMjQ1LCA4MiwgMzMsIDYsIDEsIDIxNywgMjIsIDMzLCA2LCAxLCA3MCwgMzMsIDYsIAorICAgIDEsIDI0NSwgMjAyLCAzMywgNiwgMSwgMTYyLCAzMywgNiwgMSwgMjE1LCAxNzgsIDMzLCA2LCAxLCAyNTAsIDEzMSwgMzMsIAorICAgIDYsIDEsIDIyMCwgMTAyLCAzMywgNiwgMSwgMjIwLCA2NSwgMzMsIDYsIDEsIDI0MiwgMywgNTAsIDMzLCA2LCAxLCAyMTEsIAorICAgIDI3LCAzMywgNiwgMSwgMjE5LCA1MiwgNTAsIDMzLCA2LCAxLCA3NSwgMzMsIDYsIDEsIDIxMCwgMjEyLCAzMywgNiwgMSwgCisgICAgMTkxLCAzMywgNCwgMSwgNjEsIDMzLCA0LCAxLCAyNTIsIDc1LCAzMywgNCwgMSwgMjEzLCAyNTUsIDMzLCA0LCAxLCAyNDIsIAorICAgIDIzNiwgMzMsIDQsIDEsIDI0OCwgOTAsIDMzLCA0LCAxLCAyMzYsIDYwLCAzMywgNCwgMSwgMjEwLCA3NCwgMzMsIDQsIDEsIAorICAgIDIxMCwgOTQsIDMzLCA0LCAxLCA3MywgMzMsIDQsIDEsIDIxOSwgMjUxLCA3MywgMzMsIDQsIDEsIDE3NiwgMzMsIDQsIDEsIAorICAgIDI0NSwgMTc0LCAzMywgNCwgMSwgMjQ1LCAxNTksIDMzLCA0LCAxLCAyNDUsIDE1MCwgMzMsIDQsIDEsIDc2LCAzMywgNCwgMSwgCisgICAgMjI1LCAyMjEsIDMzLCA0LCAxLCAyNDUsIDkyLCAzMywgNCwgMSwgMjQ1LCA4MiwgMzMsIDQsIDEsIDIxNywgMjIsIDMzLCA0LCAKKyAgICAxLCA3MCwgMzMsIDQsIDEsIDI0NSwgMjAyLCAzMywgNCwgMSwgMTYyLCAzMywgNCwgMSwgMjE1LCAxNzgsIDMzLCA0LCAxLCAKKyAgICAyNTAsIDEzMSwgMzMsIDQsIDEsIDIyMCwgMTAyLCAzMywgNCwgMSwgMjIwLCA2NSwgMzMsIDQsIDEsIDI0MiwgMywgNTAsIAorICAgIDMzLCA0LCAxLCAyMTEsIDI3LCAzMywgNCwgMSwgMjE5LCA1MiwgNTAsIDMzLCA0LCAxLCA3NSwgMzMsIDQsIDEsIDIxMCwgCisgICAgMjEyLCAzMywgNCwgMSwgMTkxLCAzMywgNCwgMSwgMjM2LCA2MSwgMiwgMjQyLCAxMzYsIDMzLCA0LCAxLCAyMzUsIDE4OSwgCisgICAgMzMsIDQsIDEsIDI0NywgMTYyLCAzMywgNCwgMSwgMjQyLCAxODcsIDMzLCA0LCAxLCAyMTQsIDIwMiwgMjM2LCA2MCwgMzMsIAorICAgIDQsIDEsIDI0NiwgMzYsIDMzLCA0LCAxLCAyNTEsIDc2LCA3MywgMzMsIDQsIDEsIDIxMSwgOCwgMzMsIDQsIDEsIDIzNSwgCisgICAgMTI2LCAzMywgNCwgMSwgMjMyLCAxODcsIDMzLCA0LCAxLCAyMjgsIDE3OCwgMzMsIDQsIDEsIDIxNSwgMTc0LCAzMywgNCwgCisgICAgMSwgMjM0LCA0OCwgMzMsIDQsIDEsIDI0MCwgMTU0LCAyLCAyNDIsIDEzNiwgMzMsIDQsIDEsIDIxOSwgMjUxLCA3MCwgMzMsIAorICAgIDQsIDEsIDI0NiwgMzIsIDMzLCA2LCAxLCAyMjYsIDIwMSwgMzMsIDQsIDEsIDIyNiwgMjAxLCAzMywgNiwgMSwgMjExLCA1OSwgCisgICAgMzMsIDQsIDEsIDIxMSwgNTksIDMzLCA2LCAxLCAyMzUsIDE4MywgNzUsIDMzLCA0LCAxLCAyMzUsIDE4MywgNzUsIDMzLCA2LCAKKyAgICAxLCAyMzIsIDE5MiwgMjEwLCAxODMsIDMzLCA0LCAxLCAyMzIsIDE5MiwgMjEwLCAxODMsIDMzLCA2LCAxLCAyMzUsIDE4MywgCisgICAgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjM1LCAxODMsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIAorICAgIDI1MSwgMjQ5LCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MSwgMjQ5LCAyMTAsIDE4MywgMzMsIDYsIDEsIDIzNSwgMTgzLCAKKyAgICAyNTEsIDI0OSwgMjEwLCAxODMsIDMzLCA0LCAxLCAyMzUsIDE4MywgMjUxLCAyNDksIDIxMCwgMTgzLCAzMywgNiwgMSwgCisgICAgMjMzLCAyMzMsIDMzLCA0LCAxLCAyMzMsIDIzMywgMzMsIDYsIDEsIDIyNCwgMTYxLCAzMywgNCwgMSwgMjI0LCAxNjEsIDMzLCAKKyAgICA2LCAxLCAyNDQsIDgyLCAzMywgNCwgMSwgMjQ0LCA4MiwgMzMsIDYsIDEsIDIzNSwgMTQ2LCAzMywgNCwgMSwgMjM1LCAxNDYsIAorICAgIDMzLCA2LCAxLCAyMzUsIDE0NywgMiwgNTIsIDI0MiwgMTM3LCAyNTUsIDE0LCAzMywgNCwgMSwgMjM1LCAxNDcsIDIsIDUyLCAKKyAgICAyNDIsIDEzNywgMjU1LCAxNCwgMzMsIDYsIDEsIDIxNCwgMjA1LCAzMywgNCwgMSwgMjE0LCAyMDUsIDMzLCA2LCAxLCAyMjIsIAorICAgIDE4NSwgMjI2LCAyMDEsIDMzLCA0LCAxLCAyMjIsIDE4NSwgMjI2LCAyMDEsIDMzLCA2LCAxLCAyMjYsIDIwMiwgMiwgMjE2LCAKKyAgICA2NSwgMzMsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMTYsIDY1LCAzMywgNiwgMSwgMjI2LCAxNDAsIDMzLCA0LCAxLCAyMjYsIAorICAgIDE0MCwgMzMsIDYsIDEsIDIzNCwgNiwgMzMsIDQsIDEsIDIzNCwgNiwgMzMsIDIxNiwgMTQ2LCA1MCwgMzgsIDMzLCAyMTYsIAorICAgIDY1LCAzOCwgMzMsIDIyNiwgNjUsIDM4LCAzMywgMjQ4LCAxNTQsIDIyNSwgMTgsIDM4LCAzMywgMjI0LCAxNTUsIDIyNSwgCisgICAgMTgsIDM4LCAzMywgMjI1LCAzLCAzOCwgMzMsIDI0MCwgMjExLCAyMTYsIDE0NiwgNTAsIDM4LCAzMywgMjMwLCAxOTEsIDUwLCAKKyAgICAzMywgNiwgMSwgMjE5LCAyNTEsIDI0MCwgMTU0LCAyLCAyMTcsIDc3LCAzMywgNCwgMSwgMjE5LCAyNTEsIDI0MCwgMTU0LCAKKyAgICAyLCAyMTcsIDc3LCAzMywgNiwgMSwgMjIwLCAxNDYsIDUwLCAzMywgNCwgMSwgMjIwLCAxNDYsIDUwLCAzMywgNiwgMSwgCisgICAgMjQ1LCA5MywgMiwgMjE2LCAxMTQsIDMzLCA0LCAxLCAyNDUsIDkzLCAyLCAyMTYsIDExNCwgMzMsIDYsIDEsIDI0MiwgMjM3LCAKKyAgICAyLCAyMTQsIDE1NiwgMzMsIDQsIDEsIDI0MiwgMjM3LCAyLCAyMTQsIDE1NiwgMzMsIDYsIDEsIDI0MiwgMjM3LCAyLCA5MSwgCisgICAgMzMsIDQsIDEsIDI0MiwgMjM3LCAyLCA5MSwgMzMsIDYsIDEsIDI0MiwgMjM3LCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNCwgCisgICAgMSwgMjQyLCAyMzcsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA2LCAxLCAyMTAsIDc1LCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgCisgICAgMjEwLCA3NSwgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDIxMCwgOTUsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyMTAsIDk1LCAyLCAKKyAgICAyNDgsIDM5LCAzMywgNiwgMSwgMjM1LCAxMywgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDIzNSwgMTMsIDIsIDI0OCwgMzksIAorICAgIDMzLCA2LCAxLCAyMzUsIDEzLCAyLCA2NywgOTEsIDMzLCA0LCAxLCAyMzUsIDEzLCAyLCA2NywgOTEsIDMzLCA2LCAxLCAKKyAgICAyMzUsIDEzLCAyLCA5MSwgMzMsIDQsIDEsIDIzNSwgMTMsIDIsIDkxLCAzMywgNiwgMSwgMjUyLCAxMjQsIDE3NiwgMzMsIDQsIAorICAgIDEsIDI1MiwgMTI0LCAxNzYsIDMzLCA2LCAxLCAyNDUsIDE1MSwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDI0NSwgMTUxLCAyLCAKKyAgICAyNDgsIDM5LCAzMywgNiwgMjcsIDI0NSwgMTUxLCAyNDIsIDIzNiwgMzMsIDQsIDI3LCAyNDUsIDE1MSwgMjQyLCAyMzYsIAorICAgIDMzLCA2LCAxLCAyMjUsIDIyMiwgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDQsIDEsIDIyNSwgMjIyLCAyLCAyMzAsIDIyNCwgCisgICAgMTAzLCAzMywgNiwgMSwgMjU1LCAyMCwgMTYyLCAzMywgNCwgMSwgMjU1LCAyMCwgMTYyLCAzMywgNiwgMSwgMjQ1LCA4MywgCisgICAgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDI0NSwgODMsIDIsIDI0OCwgMzksIDMzLCA2LCAxLCAyMTcsIDIzLCAyLCAyNDgsIDM5LCAKKyAgICAzMywgNCwgMSwgMjE3LCAyMywgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDIxOCwgMTIxLCA3MCwgMzMsIDQsIDEsIDIxOCwgCisgICAgMTIxLCA3MCwgMzMsIDYsIDEsIDIxOCwgMTIxLCAxMDQsIDIsIDkxLCAzMywgNCwgMSwgMjE4LCAxMjEsIDEwNCwgMiwgOTEsIAorICAgIDMzLCA2LCAxLCAyNDIsIDQ5LCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjQyLCA0OSwgMiwgMjQ4LCAzOSwgMzMsIDYsIDI3LCAKKyAgICAyMTcsIDIzLCAyMTUsIDE3OCwgMzMsIDQsIDI3LCAyMTcsIDIzLCAyMTUsIDE3OCwgMzMsIDYsIDEsIDI1MCwgMTMyLCAyLCAKKyAgICAyNDgsIDM5LCAzMywgNCwgMSwgMjUwLCAxMzIsIDIsIDI0OCwgMzksIDMzLCA2LCAxLCAyNTAsIDEzMiwgMiwgNjcsIDkxLCAKKyAgICAzMywgNCwgMSwgMjUwLCAxMzIsIDIsIDY3LCA5MSwgMzMsIDYsIDEsIDIyMCwgMzMsIDMzLCA0LCAxLCAyMjAsIDMzLCAzMywgCisgICAgNiwgMSwgMjU1LCAyMCwgMjUwLCAxMzEsIDMzLCA0LCAxLCAyNTUsIDIwLCAyNTAsIDEzMSwgMzMsIDYsIDEsIDI1NSwgMjAsIAorICAgIDI1MCwgMTMyLCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjU1LCAyMCwgMjUwLCAxMzIsIDIsIDI0OCwgMzksIDMzLCAxLCAKKyAgICAyMjYsIDU4LCAzMywgNiwgMSwgMjEwLCA3NSwgMiwgMjUxLCAxNDYsIDMzLCA0LCAxLCAyMTAsIDc1LCAyLCAyNTEsIDE0NiwgCisgICAgMzMsIDYsIDEsIDIzNSwgMTMsIDIsIDEwMywgMzMsIDQsIDEsIDIzNSwgMTMsIDIsIDEwMywgMzMsIDYsIDEsIDI0NSwgMTc1LCAKKyAgICAyLCAyMTcsIDc3LCAzMywgNCwgMSwgMjQ1LCAxNzUsIDIsIDIxNywgNzcsIDMzLCA2LCAxLCAyNDUsIDE1MSwgMiwgMTAzLCAKKyAgICAzMywgNCwgMSwgMjQ1LCAxNTEsIDIsIDEwMywgMzMsIDYsIDEsIDI0NSwgMTUxLCAyLCAyMTcsIDc3LCAzMywgNCwgMSwgCisgICAgMjQ1LCAxNTEsIDIsIDIxNywgNzcsIDMzLCA2LCAxLCAyMzQsIDEyNywgMjUwLCAxMzEsIDMzLCA0LCAxLCAyMzQsIDEyNywgCisgICAgMjUwLCAxMzEsIDMzLCA2LCAxLCAyNDUsIDE2MCwgMiwgMjE3LCA3NywgMzMsIDQsIDEsIDI0NSwgMTYwLCAyLCAyMTcsIDc3LCAKKyAgICAzMywgNCwgMSwgMjI2LCA1OCwgMzMsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDYsIDMzLCA0LCAxLCAxMTUsIDIsIDI1MSwgCisgICAgMTQ2LCAzMywgNiwgMSwgMTE1LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAxMTUsIDIsIDI0OCwgMSwgMzMsIDYsIDI3LCAxMTUsIAorICAgIDIzNiwgNjAsIDMzLCA0LCAyNywgMTE1LCAyMzYsIDYwLCAzMywgNiwgMSwgMjM2LCA2MSwgMiwgMjUxLCAxNDYsIDMzLCA0LCAKKyAgICAxLCAyMzYsIDYxLCAyLCAyNTEsIDE0NiwgMzMsIDYsIDEsIDIyMSwgMTk1LCAzMywgNCwgMSwgMjIxLCAxOTUsIDMzLCA2LCAKKyAgICAxLCAyMjEsIDE5NiwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjIxLCAxOTYsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDIxMCwgNzUsIAorICAgIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDIxMCwgNzUsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDIxMCwgOTUsIDIsIDI0OCwgMSwgCisgICAgMzMsIDQsIDEsIDIxMCwgOTUsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDI1NSwgMjAsIDI0NiwgMzYsIDMzLCA0LCAxLCAyNTUsIAorICAgIDIwLCAyNDYsIDM2LCAzMywgNiwgMSwgMjQwLCAxNTQsIDIsIDIzMSwgMjMyLCAzMywgNCwgMSwgMjQwLCAxNTQsIDIsIDIzMSwgCisgICAgMjMyLCAzMywgNiwgMSwgMjQwLCAxNTQsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDEsIDMzLCA2LCAKKyAgICAxLCAxNDQsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDE0NCwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMjUyLCAxMzQsIDc2LCAzMywgCisgICAgNCwgMSwgMjUyLCAxMzQsIDc2LCAzMywgNiwgMSwgMjUyLCAxMzQsIDE0NCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjUyLCAKKyAgICAxMzQsIDE0NCwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMTYwLCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAxNjAsIDIsIDI0OCwgMSwgCisgICAgMzMsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzIsIDMzLCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMyLCAzMywgNiwgMSwgMTA0LCAyLCAKKyAgICAyNDgsIDEsIDMzLCA0LCAxLCAxMDQsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDEwNCwgMiwgNTIsIDE0MiwgMzMsIDQsIDEsIAorICAgIDEwNCwgMiwgNTIsIDE0MiwgMzMsIDYsIDEsIDI1MCwgMTMyLCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyNTAsIDEzMiwgMiwgCisgICAgMjQ4LCAxLCAzMywgNiwgMSwgMjQyLCAyMzcsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNDIsIDIzNywgMiwgMjQ4LCAzOSwgCisgICAgMzMsIDYsIDEsIDIxMSwgMjgsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDIxMSwgMjgsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIAorICAgIDI0MiwgMjM3LCAyLCAyMTgsIDEwMywgMjIsIDEwMywgMzMsIDQsIDEsIDI0MiwgMjM3LCAyLCAyMTgsIDEwMywgMjIsIDEwMywgCisgICAgMzMsIDYsIDEsIDI0MiwgNDksIDIsIDEwMywgMzMsIDQsIDEsIDI0MiwgNDksIDIsIDEwMywgMzMsIDYsIDEsIDI0MiwgNDksIAorICAgIDIsIDkxLCAzMywgNCwgMSwgMjQyLCA0OSwgMiwgOTEsIDMzLCA2LCAxLCAyMzQsIDE0LCAyNDgsIDkwLCAzMywgNCwgMSwgCisgICAgMjM0LCAxNCwgMjQ4LCA5MCwgMzMsIDYsIDEsIDIzNCwgMTQsIDI0NywgMTYyLCAzMywgNCwgMSwgMjM0LCAxNCwgMjQ3LCAKKyAgICAxNjIsIDMzLCA2LCAxLCAyMzQsIDE0LCAyMTAsIDI3LCAzMywgNCwgMSwgMjM0LCAxNCwgMjEwLCAyNywgMzMsIDYsIDEsIAorICAgIDIzNCwgMTQsIDI0NiwgMzAsIDMzLCA0LCAxLCAyMzQsIDE0LCAyNDYsIDMwLCAzMywgNiwgMSwgMjM0LCAxNCwgMjMyLCAKKyAgICAxODcsIDMzLCA0LCAxLCAyMzQsIDE0LCAyMzIsIDE4NywgMzMsIDYsIDEsIDIzNCwgMTQsIDIyOCwgMTc4LCAzMywgNCwgMSwgCisgICAgMjM0LCAxNCwgMjI4LCAxNzgsIDMzLCA2LCAxLCAyMzQsIDE0LCAyMTksIDEwOSwgMzMsIDQsIDEsIDIzNCwgMTQsIDIxOSwgCisgICAgMTA5LCAzMywgNiwgMSwgMjM0LCAxNCwgMjE2LCA2MCwgMzMsIDQsIDEsIDIzNCwgMTQsIDIxNiwgNjAsIDMzLCA2LCAxLCAKKyAgICAyMjMsIDQ5LCAyMTAsIDk0LCAzMywgNCwgMSwgMjIzLCA0OSwgMjEwLCA5NCwgMzMsIDYsIDEsIDI0NSwgMTc1LCAyLCAxMDMsIAorICAgIDMzLCA0LCAxLCAyNDUsIDE3NSwgMiwgMTAzLCAzMywgNiwgMSwgMjMyLCAyNTQsIDMzLCA0LCAxLCAyMzIsIDI1NCwgMzMsIAorICAgIDYsIDEsIDIyMywgMzksIDMzLCA0LCAxLCAyMjMsIDM5LCAzMywgNiwgMSwgMjExLCA5MiwgMzMsIDQsIDEsIDIxMSwgOTIsIAorICAgIDMzLCA2LCAxLCAyMjQsIDg4LCAzMywgNCwgMSwgMjI0LCA4OCwgMzMsIDYsIDEsIDIxMiwgMjIsIDMzLCA0LCAxLCAyMTIsIAorICAgIDIyLCAzMywgNiwgMSwgMjU0LCAxNjYsIDE3NiwgMzMsIDQsIDEsIDI1NCwgMTY2LCAxNzYsIDMzLCA2LCAxLCAyNDUsIDE3NSwgCisgICAgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDQsIDEsIDI0NSwgMTc1LCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNiwgMSwgMjQ1LCAKKyAgICAxNTEsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA0LCAxLCAyNDUsIDE1MSwgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDYsIDEsIAorICAgIDIyNSwgMjIyLCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjI1LCAyMjIsIDIsIDI0OCwgMzksIDMzLCA2LCAxLCAyMjAsIDM0LCAKKyAgICAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjIwLCAzNCwgMiwgMjQ4LCAzOSwgMTUwLCA2LCAxLCAyNTMsIDE2NCwgMTUwLCA2LCAKKyAgICAxLCAyNTIsIDM5LCAxNTAsIDYsIDEsIDI0MiwgMjAzLCAxNTAsIDYsIDEsIDI0OCwgMjIxLCAxNTAsIDYsIDEsIDI0NSwgCisgICAgMjEzLCAxNTAsIDYsIDEsIDIxMCwgMTE2LCAxNTAsIDYsIDEsIDI0NSwgMTk3LCAxNTAsIDYsIDEsIDI0NSwgNjUsIDE1MCwgCisgICAgNiwgMSwgMTExLCAxNTAsIDYsIDEsIDIxMCwgNzQsIDE1MCwgNiwgMSwgMjM1LCAyMjcsIDE1MCwgNiwgMSwgMjMyLCAxOTAsIAorICAgIDE1MCwgNiwgMSwgMjExLCAxNjAsIDE1MCwgNiwgMSwgMjUxLCAzMywgMTUwLCA2LCAxLCAyMzQsIDE2NSwgMTUwLCA2LCAxLCAKKyAgICAyNDEsIDY4LCAxNTAsIDYsIDEsIDIzNSwgMTQxLCAxNTAsIDYsIDEsIDI0MiwgMjQ2LCAxNTAsIDYsIDEsIDI1MCwgMTI2LCAKKyAgICAxNTAsIDYsIDEsIDIzMSwgNTgsIDE1MCwgNiwgMSwgMjExLCA4LCAxNTAsIDYsIDEsIDIyOCwgMzksIDE1MCwgNiwgMSwgCisgICAgMjIwLCAxMDIsIDE1MCwgNiwgMSwgMjEzLCAxMzgsIDE1MCwgNiwgMSwgMjUwLCAxNTcsIDE1MCwgNiwgMSwgMjI1LCAyMDUsIAorICAgIDE1MCwgNiwgMSwgMjM1LCAxMTAsIDE1MCwgNiwgMSwgMjA1LCAxNTAsIDYsIDEsIDIyMSwgMTYxLCAxNTAsIDYsIDEsIDIxMywgCisgICAgMTc5LCAxNTAsIDYsIDEsIDIxNiwgNjIsIDE1MCwgNiwgMSwgMjIzLCA5NSwgMTUwLCA2LCAxLCAyNDksIDIzOCwgMTUwLCA2LCAKKyAgICAxLCAyMTAsIDI0OSwgMTUwLCA2LCAxLCAyMjUsIDQ2LCAxNTAsIDYsIDEsIDIzNCwgMTc2LCAxNTAsIDYsIDEsIDIyNiwgCisgICAgMjIyLCAxNTAsIDYsIDEsIDI0NCwgMTQyLCAxNTAsIDU4LCAxLCA0MywgMTYzLCAyMjIsIDIzMywgMTUwLCAyNTQsIDU3LCAKKyAgICAxNTAsIDI0NSwgMTU0LCA3OCwgMTUwLCAyNDUsIDMxLCA3OCwgMTUwLCAyNDksIDIxOSwgMTUwLCAyMjQsIDEzLCA3OCwgCisgICAgMTUwLCAyNTUsIDIxLCA3OCwgMTUwLCA0LCAxLCAyNTMsIDE2NCwgMTUwLCA0LCAxLCAyNTIsIDM5LCAxNTAsIDQsIDEsIAorICAgIDI0MiwgMjAzLCAxNTAsIDQsIDEsIDI0OCwgMjIxLCAxNTAsIDQsIDEsIDI0NSwgMjEzLCAxNTAsIDQsIDEsIDIxMCwgMTE2LCAKKyAgICAxNTAsIDQsIDEsIDI0NSwgMTk3LCAxNTAsIDQsIDEsIDI0NSwgNjUsIDE1MCwgNCwgMSwgMTExLCAxNTAsIDQsIDEsIDIxMCwgCisgICAgNzQsIDE1MCwgNCwgMSwgMjM1LCAyMjcsIDE1MCwgNCwgMSwgMjMyLCAxOTAsIDE1MCwgNCwgMSwgMjExLCAxNjAsIDE1MCwgCisgICAgNCwgMSwgMjUxLCAzMywgMTUwLCA0LCAxLCAyMzQsIDE2NSwgMTUwLCA0LCAxLCAyNDEsIDY4LCAxNTAsIDQsIDEsIDIzNSwgCisgICAgMTQxLCAxNTAsIDQsIDEsIDI0MiwgMjQ2LCAxNTAsIDQsIDEsIDI1MCwgMTI2LCAxNTAsIDQsIDEsIDIzMSwgNTgsIDE1MCwgCisgICAgNCwgMSwgMjExLCA4LCAxNTAsIDQsIDEsIDIyOCwgMzksIDE1MCwgNCwgMSwgMjIwLCAxMDIsIDE1MCwgNCwgMSwgMjEzLCAKKyAgICAxMzgsIDE1MCwgNCwgMSwgMjUwLCAxNTcsIDE1MCwgNCwgMSwgMjI1LCAyMDUsIDE1MCwgNCwgMSwgMjM1LCAxMTAsIDE1MCwgCisgICAgNCwgMSwgMjA1LCAxNTAsIDQsIDEsIDIyMSwgMTYxLCAxNTAsIDQsIDEsIDIxMywgMTc5LCAxNTAsIDQsIDEsIDIxNiwgNjIsIAorICAgIDE1MCwgNCwgMSwgMjIzLCA5NSwgMTUwLCA0LCAxLCAyNDksIDIzOCwgMTUwLCA0LCAxLCAyMTAsIDI0OSwgMTUwLCA0LCAxLCAKKyAgICAyMjUsIDQ2LCAxNTAsIDQsIDEsIDIzNCwgMTc2LCAxNTAsIDQsIDEsIDIyNiwgMjIyLCAxNTAsIDQsIDEsIDI0NCwgMTQyLCAKKyAgICAxNTAsIDQsIDI3LCAyNDUsIDIxNCwgMjEwLCAyNDksIDE1MCwgMjQzLCAyMjksIDIxOCwgMTI5LCAxNTAsIDI0MCwgMTY4LCAKKyAgICAxNTAsIDI0NiwgOTUsIDUwLCA5NCwgMjU1LCAxNSwgMjQ1LCA1NywgOTQsIDI1NSwgMTUsIDIyMSwgMTYyLCA5NCwgMjU1LCAKKyAgICAxNSwgMjIwLCA4OCwgOTQsIDI1NSwgMTUsIDIxMCwgMTA0LCAyMjQsIDcxLCA5NCwgMjU1LCAxNSwgMjEwLCAxMDQsIDI0MywgCisgICAgMTI1LCA5NCwgMjU1LCAxNSwgMjE2LCA3NSwgOTQsIDI1NSwgMTUsIDIyMywgNDcsIDk0LCAyNTUsIDE1LCAyMTAsIDEwMywgCisgICAgOTQsIDI1NSwgMTUsIDIyNSwgMjQ1LCA5NCwgMjU1LCAxNSwgMjExLCAyMCwgOTQsIDI1NSwgMTUsIDIxNiwgMjE0LCA5NCwgCisgICAgMjU1LCAxNSwgMjQzLCA0MSwgOTQsIDI1NSwgMTUsIDI0MywgNDIsIDIzMCwgNjksIDk0LCAyNTUsIDE1LCAyNDMsIDM5LCAKKyAgICA5NCwgMjU1LCAxNSwgMjI0LCA3MiwgMjI2LCAxNiwgOTQsIDI1NSwgMTUsIDIxNiwgMjUzLCAyNDMsIDU2LCA5NCwgMjU1LCAKKyAgICAxNSwgMjI1LCAyMjYsIDk0LCAyNTUsIDE1LCAyNTMsIDIwMCwgMjQyLCA0MSwgOTQsIDI1NSwgMTUsIDIzMCwgNzksIDk0LCAKKyAgICAyNTUsIDE1LCAyMzEsIDIwOCwgOTQsIDI1NSwgMTUsIDIzMSwgNDksIDk0LCAyNTUsIDE1LCAyMzEsIDUwLCAyMzQsIDE3NywgCisgICAgOTQsIDI1NSwgMTUsIDI0OCwgMTYzLCA5NCwgMjU1LCAxNSwgMjI0LCA4MywgOTQsIDI1NSwgMTUsIDIxNiwgMjUzLCAyMjQsIAorICAgIDY3LCA5NCwgMjU1LCAxNSwgMjExLCAzMCwgMjUyLCA0MCwgMjEwLCAyMzAsIDk0LCAyNTUsIDE1LCAyMjYsIDIwNywgOTQsIAorICAgIDI1NSwgMTUsIDIzNiwgMTksIDk0LCAyNTUsIDE1LCAyNDgsIDcwLCA5NCwgMjU1LCAxNSwgMjEwLCAzMywgOTQsIDE2NCwgCisgICAgMjMxLCAxNDMsIDI1MCwgMzUsIDk0LCAyMjUsIDExLCAyMjAsIDM2LCA5NCwgMjI1LCAxMSwgMjQxLCAyNTAsIDIyMSwgMTYyLCAKKyAgICA5NCwgMjI1LCAxMSwgMjQxLCAyNTAsIDIyNSwgMjM5LCA5NCwgMjI1LCAxMSwgMjQxLCAyNTAsIDIyNCwgNzYsIDk0LCAyMjUsIAorICAgIDExLCAyNDEsIDE1OCwgOTQsIDIyNSwgMTEsIDIxNSwgMTc2LCA5NCwgMjI1LCAxMSwgMjIxLCAxNjIsIDk0LCAyMjUsIDExLCAKKyAgICAyMjUsIDIzOSwgOTQsIDIyNSwgMTEsIDIyNCwgNzYsIDk0LCAyMjUsIDExLCAyNDEsIDYxLCA5NCwgMjI1LCAxMSwgMjQxLCAKKyAgICA2MiwgMjQxLCAyNTIsIDMxLCAyMTQsIDMsIDk0LCAyMjUsIDExLCAyMjQsIDE3LCA5NCwgMjI1LCAxMSwgMjQ4LCAyMDgsIAorICAgIDE3NywgMjMxLCAxNzEsIDk0LCAyMjUsIDExLCAyMzEsIDM4LCA5NCwgMjI0LCAxNDEsIDIzMSwgMTY4LCA5NCwgMjI1LCAxMSwgCisgICAgMjIzLCAxNjksIDk0LCAyMjQsIDE0MSwgMjI1LCAyNDcsIDk0LCAyMjUsIDExLCAyMjAsIDIxLCAyNDcsIDEyMCwgOTQsIAorICAgIDIyNSwgMTEsIDIxOSwgMTU5LCAyNDcsIDEyMCwgOTQsIDIyNCwgMTQxLCAyMTksIDUzLCAyMjUsIDI0MSwgOTQsIDE2NCwgCisgICAgMjE0LCAxNjAsIDI0NywgMTIwLCA5NCwgMTY0LCAyMzIsIDEwOCwgMjQ3LCAxMjAsIDk0LCAyMjQsIDE0MSwgMjI3LCAxOTUsIAorICAgIDI0MiwgNDAsIDk0LCAyMjUsIDExLCAyMjQsIDc3LCAyMjQsIDcxLCA5NCwgMSwgMjU0LCAxNzAsIDk0LCAxLCAyNTIsIDI4LCAKKyAgICA5NCwgMSwgMjQyLCAyMDEsIDk0LCAxLCAyNDgsIDE4OSwgOTQsIDEsIDI0MSwgMjM4LCA5NCwgMSwgMjE0LCAzLCA5NCwgMSwgCisgICAgMjEwLCA5NywgOTQsIDEsIDI0MSwgMTk3LCA5NCwgMSwgMjE2LCAyMzAsIDk0LCAxLCAyMTAsIDIzMywgOTQsIDEsIDQwLCAKKyAgICAyMzQsIDI1MCwgOTQsIDEsIDIzNCwgMjUwLCA5NCwgMSwgMjMzLCA5NCwgOTQsIDEsIDQwLCAyMzEsIDY1LCA5NCwgMSwgCisgICAgMjMxLCA2NSwgOTQsIDEsIDQwLCAyMjcsIDE5NCwgOTQsIDEsIDIyNywgMTk0LCA5NCwgMSwgMjIxLCAyNDksIDk0LCAxLCAKKyAgICAyNTMsIDE2MiwgOTQsIDEsIDQwLCAyMjUsIDIyMSwgOTQsIDEsIDIyNSwgMjIxLCA5NCwgMSwgNDAsIDIxNSwgMTc5LCA5NCwgCisgICAgMSwgMjE1LCAxNzksIDk0LCAxLCAyMjQsIDM5LCA5NCwgMSwgMjIzLCA2NywgOTQsIDEsIDIyMCwgMjAsIDk0LCAxLCAyMTcsIAorICAgIDM4LCA5NCwgMjcsIDIxMSwgNiwgNTIsIDIxNCwgMywgOTQsIDI3LCAyMTEsIDYsIDIxNCwgNCwgMjEwLCAyMzMsIDk0LCAyNywgCisgICAgMjExLCA2LCA1MiwgMjEwLCAyMzMsIDk0LCAyMjQsIDE0MSwgMjQzLCA0MSwgOTQsIDIyNCwgMTQxLCAyNDMsIDM5LCAxMCwgCisgICAgNTQsIDUwLCAxMCwgNSwgMjIxLCAyNDIsIDEwLCAyNDQsIDMwLCAyMzEsIDE1NCwgMTAsIDUsIDIyMiwgMjMsIDEwLCA1LCAKKyAgICAyMjEsIDI0NSwgMjU0LCAzNywgMjQ5LCAxMDksIDIyMiwgMTkzLCAyNTQsIDM3LCAyNDQsIDQsIDIyMiwgMTkzLCAxMCwgCisgICAgMjIzLCAxMzQsIDI1NCwgMzcsIDIyNSwgMTgzLCAyMzAsIDE5MywgNTAsIDI1NCwgMzcsIDIyNSwgMTgzLCAyMTYsIDI0OCwgCisgICAgMjE2LCAxNDgsIDUwLCAyNTQsIDIyMSwgNTAsIDEwLCAyNDksIDIxOSwgMTAsIDI0OCwgMTUwLCAyMjAsIDEzNywgMTAsIAorICAgIDIyNSwgMTMsIDIxMywgMjQxLCA1MCwgMTAsIDUsIDIzMCwgMTc0LCAxMCwgNSwgMjIyLCAzLCAyNTQsIDE3MiwgMjEyLCA0NSwgCisgICAgMTAsIDUsIDI1NCwgMTcyLCAyNTMsIDIyMSwgMTAsIDUsIDIyMywgMTY3LCAyNTQsIDE3MSwgMTAsIDUsIDIyMywgMTc1LCAKKyAgICAyNTQsIDE1MiwgMjU0LCAxMDQsIDEwLCA1LCAyMTcsIDcwLCAxMCwgNCwgMTI1LCAyMTcsIDgwLCAxMCwgNCwgMTI1LCAyNywgCisgICAgMTEyLCAyLCAyMzMsIDEwMywgMiwgMjExLCA0MywgMTAsIDQsIDEyNSwgMjEwLCAxMDgsIDEwLCA0LCAyNDQsIDE2NSwgMTAsIAorICAgIDQsIDI0OCwgMTg0LCAxMCwgNCwgMjM0LCAyMDUsIDEwLCAyMjAsIDE1MCwgMTAsIDIxNSwgMjExLCA1OSwgMjI0LCAxNDEsIAorICAgIDc4LCAxMCwgMjI0LCAxMywgNzgsIDEwLCAxLCAyMzQsIDIwOSwgMjExLCA0MywgMTAsIDEsIDI0MiwgMTksIDEwLCAxLCAKKyAgICAxMTIsIDIsIDIzMSwgMjI4LCA0OCwgMTAsIDEsIDExMiwgMiwgMjAyLCA0OCwgMTAsIDEsIDIxMiwgMzEsIDIsIDIwMiwgNDgsIAorICAgIDEwLCAxLCAxMTIsIDIsIDIwMiwgNTEsIDEwLCAxLCA3OSwgMiwgMjAyLCA0OCwgMTAsIDEsIDI1NCwgMTcwLCAxMCwgMSwgCisgICAgMjUyLCA1NCwgMTAsIDEsIDIxNywgOCwgMjMxLCAxNjQsIDEwLCAxLCAyMTcsIDcsIDEwLCAxLCAyMTYsIDE5MiwgMTAsIDEsIAorICAgIDIzNSwgMTIzLCAxMCwgMSwgMjQyLCAzNywgMTAsIDEsIDIzNCwgMTI5LCAxMCwgMSwgMjQ4LCAxOTUsIDEwLCAxLCAyMTYsIAorICAgIDIwMiwgMTAsIDEsIDIyMywgOTUsIDEwLCAxLCAyMTAsIDEwOCwgMTAsIDEsIDIyMSwgMTY2LCAxMCwgMSwgMjIwLCA1OSwgCisgICAgMTAsIDEsIDIyMiwgMjYsIDEwLCAxLCAyNDgsIDIxNiwgMTAsIDEsIDIxNywgODAsIDEwLCAxLCAyMTAsIDExMSwgMTAsIDEsIAorICAgIDI1NCwgMTk2LCAxMCwgMSwgMjQyLCAyNDQsIDEwLCAxLCAyMzQsIDE3NSwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjM0LCAKKyAgICAxNzUsIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMiwgMjM1LCAxOTMsIDIxNCwgMTA1LCAxMCwgMSwgCisgICAgMjQ0LCAxNjgsIDc5LCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDIsIDEzNCwgMTcwLCA0OCwgMTAsIAorICAgIDIxNywgNDMsIDEwLCAxLCAyNDQsIDE0MiwgMTAsIDEsIDIyNCwgODEsIDEwLCAxLCAyMzQsIDI1MCwgMTAsIDEsIDIzMywgCisgICAgMTAyLCAxMCwgMSwgMjMxLCA3OCwgMTAsIDEsIDIyOCwgNjIsIDEwLCAxLCAyNDEsIDIxOCwgMTAsIDEsIDIxMiwgMzAsIDEwLCAKKyAgICAxLCAxMTIsIDIzMSwgMTkyLCAxMCwgMSwgMjExLCA0MywgMTAsIDI0NCwgMTYzLCAxMCwgMjQ4LCAxODIsIDEwLCAyMzQsIAorICAgIDIwMywgMTAsIDI0NCwgMTY1LCAxMCwgMjQ4LCAxODQsIDEwLCAyMzQsIDIwNSwgMTAsIDIyMCwgOTMsIDEwLCAyMTgsIDQ1LCAKKyAgICAxMCwgMjMxLCAyMjYsIDQ4LCAxMCwgMjAyLCA0OCwgMTAsIDIwMiwgNTEsIDEwLCAyMTgsIDY1LCAyNTQsIDE3MCwgMTAsIAorICAgIDIzNSwgMTkzLCAyNDgsIDE4NCwgMTAsIDE2NCwgMjI4LCA2MywgMjQyLCAyMTgsIDEwLCAyMDksIDI1NSwgMTAsIDI1LCA1LCAKKyAgICA0LCAyMTQsIDEwNiwgNDgsIDEwLCAyNSwgNSwgMjM1LCAxOTMsIDQsIDIxNCwgMTA2LCA0OCwgMTAsIDI1LCA1LCA1OSwgNTEsIAorICAgIDEwLCAyMjMsIDQ5LCAyNDgsIDE4NCwgMTAsIDI0NCwgMTY2LCAyLCAxMTMsIDI0NywgMTE4LCAxMCwgMjEyLCAzMiwgMjAyLCAKKyAgICA1MSwgMjU0LCAzNywgMjEsIDIxMCwgODYsIDI1NCwgMzcsIDIxLCAxMTAsIDI1NCwgMzcsIDIxLCAxMDUsIDI1NCwgMzcsIAorICAgIDIxLCAxNTgsIDI1NCwgMzcsIDIxLCAxNjEsIDI1NCwgMzcsIDIxLCAxODksIDI1NCwgMzcsIDIxLCAxOTQsIDI1NCwgMzcsIAorICAgIDIxLCAxOTgsIDI1NCwgMzcsIDIxLCAxOTUsIDI1NCwgMzcsIDIxLCAyMDAsIDEwLCAyMjUsIDE4MiwgNTAsIDEwLCAyNDgsIAorICAgIDgzLCAyMjAsIDEzNywgMTAsIDIxNiwgMTQ2LCAyMjAsIDEzNywgMTAsIDI0NCwgODEsIDIyNSwgOSwgMjE4LCAxNTYsIDEwLCAKKyAgICAxLCAyNDcsIDExOSwgMjUyLCA1NCwgMTAsIDEsIDI0NywgMTE5LCAyMjQsIDgxLCAxMCwgMSwgMjE4LCAyMywgMjU0LCAxNzAsIAorICAgIDEwLCAxLCAxMTIsIDIxMiwgNDYsIDEwLCAxLCAxMTIsIDIsIDIxMiwgMzIsIDIwMiwgNDgsIDEwLCAxLCAxMTIsIDIsIDIxMiwgCisgICAgMzIsIDIwMiwgNTEsIDEwLCAxLCAxMjUsIDI0MiwgMTksIDEwLCAxLCAxMjUsIDIwMiwgMjU0LCAxNzAsIDEwLCAxLCAxMjUsIAorICAgIDIwMiwgMjEyLCAzMCwgMTAsIDEsIDEwNCwgMiwgMjAyLCA0OCwgMTAsIDEsIDEyNSwgMjAyLCAyMTEsIDQzLCAxMCwgMSwgCisgICAgMjE1LCAxNDgsIDEwLCAxLCAyMTUsIDE0NiwgMTAsIDEsIDI1MiwgNjQsIDEwLCAxLCAyMTcsIDgsIDIsIDIyMiwgMjMzLCAKKyAgICAxMCwgMSwgMjE3LCA4LCAyLCAxMzQsIDE3MCwgNzcsIDI0NiwgMTAzLCAxMCwgMSwgMjI1LCAyMDUsIDEwLCAxLCAyMTcsIDUsIAorICAgIDEwLCAxLCAyNTIsIDUyLCAxMCwgMSwgMTIyLCAyLCAyMDIsIDQ4LCAxMCwgMSwgMTIyLCAyLCAxMTMsIDE3MCwgNjcsIDQ4LCAKKyAgICAxMCwgMSwgMjI3LCAxNTMsIDEwLCAxLCAyNDYsIDQzLCAxMCwgMSwgMTIyLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMTcsIAorICAgIDI2LCAxMCwgMSwgMjE3LCAyNCwgMTAsIDEsIDI0OCwgMTMwLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDIyMiwgMjMzLCAxMCwgMSwgCisgICAgMjQ4LCAxOTYsIDIsIDU5LCA1MSwgMTAsIDEsIDI0OCwgMTk2LCAyLCA1OSwgMjUyLCA0MywgMjIsIDQsIDIxNywgODAsIDEwLCAKKyAgICAxLCAyNDgsIDIwMSwgMTAsIDEsIDI0OCwgMTMyLCAxMCwgMSwgMjQ2LCA3MCwgMTAsIDEsIDI0OCwgMTk2LCAyLCAxMzQsIAorICAgIDE3MCwgNzcsIDI0NiwgMTAzLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDI0NCwgMTEsIDE3MCwgNDgsIDEwLCAxLCAyMjIsIDE3MSwgCisgICAgMTAsIDEsIDIyMywgOTYsIDIsIDQsIDIxNCwgMTA1LCAxMCwgMSwgMjIzLCA5NiwgMiwgMjIyLCAyMzMsIDEwLCAxLCAyMjMsIAorICAgIDk2LCAyLCA1OSwgNTEsIDEwLCAxLCAyMjMsIDk2LCAyLCA0LCAyMTQsIDEwNiwgNTEsIDEwLCAxLCAyMjMsIDk2LCAyLCA1OSwgCisgICAgMjUyLCA0MywgMjIsIDU5LCA0OCwgMTAsIDEsIDIyMywgOTYsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDIzNSwgMTIwLCAKKyAgICAxMCwgMSwgMjIzLCA5NiwgMiwgMjQ0LCAxMSwgMTcwLCA0OCwgMTAsIDEsIDIyMSwgMTY3LCAyLCA1OSwgMjUyLCA0MywgMjIsIAorICAgIDU5LCA0OCwgMTAsIDEsIDIyMSwgMTY3LCAyLCAxMzQsIDE3MCwgNTEsIDEwLCAxLCAyMjEsIDE2NywgMiwgMTM0LCAxNzAsIAorICAgIDI1MiwgNDMsIDIyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMjIsIDI3LCAyLCAxMTMsIDE3MCwgNTEsIDEwLCAxLCAyMjIsIAorICAgIDI3LCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMTcsIDgxLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyNTQsIDE5NywgMiwgCisgICAgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjQ3LCAxMTksIDI0NCwgMTQyLCAxMCwgMSwgMjQ0LCAxNDMsIDIsIDU5LCAyMzAsIAorICAgIDEwOSwgNTEsIDEwLCAxLCAyNDQsIDE0MywgMiwgNTksIDUxLCAxMCwgMSwgMjEzLCAyNDgsIDEwLCAxLCAyNDQsIDE0MywgMiwgCisgICAgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjI1LCAyMDMsIDEwLCAxLCAyMjQsIDgyLCAyLCA1OSwgNDgsIDEwLCAxLCAyMjQsIDgyLCAKKyAgICAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMzQsIDE3NCwgMTAsIDEsIDIxNywgMjUwLCAyMzQsIDI1MCwgMTAsIDEsIDIzNCwgCisgICAgMjUxLCAyLCAyMjIsIDIzMywgMTAsIDEsIDIzNCwgMjUxLCAyLCA1OSwgNDgsIDEwLCAxLCAyMjksIDc5LCAxMCwgMSwgMjM0LCAKKyAgICAyNTEsIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDI0MywgMTIyLCAxMCwgMSwgMjQzLCAxMjMsIDIsIDIyMiwgMjMzLCAxMCwgCisgICAgMSwgMjI5LCAyLCAxMCwgMSwgMjQzLCAxMjMsIDIsIDExMywgMTcwLCA1MSwgMTAsIDEsIDI0MiwgMTAxLCAxMCwgMSwgMjQzLCAKKyAgICAxMjMsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIzMywgMTAzLCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDIzMywgMTAzLCAKKyAgICAyLCA1OSwgNDgsIDEwLCAxLCAyMzMsIDEwMywgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjMzLCAxMDMsIDIsIDEzNCwgCisgICAgMTcwLCA1MSwgMTAsIDEsIDIyOCwgNjMsIDIsIDU5LCA1MSwgMTAsIDEsIDIyOCwgNjMsIDI0MiwgMjE4LCAxMCwgMSwgMjIyLCAKKyAgICAyMTQsIDEwLCAxLCAyMjgsIDYzLCAyLCAyMjIsIDIzMywgMTAsIDEsIDIyOCwgNjMsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIAorICAgIDI0MSwgMjE5LCAyNDcsIDE0MSwgMTAsIDEsIDIxNywgMjcsIDIsIDU5LCA0OCwgMTAsIDEsIDI0MSwgMjE5LCAyLCA3OSwgCisgICAgNDgsIDEwLCAxLCAyNDEsIDIxOSwgMjQyLCAxNzEsIDEwLCAxLCAyNDEsIDIxOSwgMjQyLCAxNzIsIDIsIDIwMiwgNDgsIDEwLCAKKyAgICAxLCAyMTcsIDgsIDIzMSwgMTY1LCAyNDIsIDE3MSwgMTAsIDEsIDIxMiwgMzEsIDIsIDIyMiwgMjMzLCAxMCwgMSwgMjM0LCAKKyAgICA3MywgMjI2LCAyMzQsIDEwLCAxLCAyMjYsIDIzNCwgMTAsIDEsIDcwLCAxMCwgMSwgMjEwLCAyMTIsIDEwLCAxLCAyMzQsIAorICAgIDczLCAyMTAsIDIxMiwgMTAsIDEsIDIxMiwgMzEsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDIxMywgMjU1LCAxMCwgMSwgCisgICAgMjQ0LCAxNjgsIDIxMSwgNDMsIDEwLCAxLCA3OSwgMiwgMjE3LCA3NywgMTAsIDEsIDc5LCAyLCA0LCAyMTQsIDEwNSwgMTAsIAorICAgIDEsIDIxMiwgMzEsIDIsIDU5LCA0OCwgMTAsIDEsIDc1LCAxMCwgMSwgNzksIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDc5LCAKKyAgICAyNTIsIDEzMiwgMTAsIDEsIDc5LCAyNTIsIDEzMywgMiwgMjAyLCA0OCwgMTAsIDI0MywgMjI5LCAyMTgsIDEyOSwgMTAsIDEsIAorICAgIDI1NCwgMjQzLCAxMCwgNCwgMTI1LCAyNywgMjIyLCAyNywgMiwgMjMzLCAxMDMsIDIsIDExMiwgMjMxLCAxOTIsIDEwLCA0LCAKKyAgICAxMjUsIDI3LCAyMjQsIDgyLCAyLCAyMzMsIDEwMywgMiwgMTEyLCAyMzEsIDE5MiwgMTAsIDQsIDEyNSwgNjYsIDY1LCAxNywgCisgICAgMTAsIDQsIDEyNSwgMjMzLCAxMDMsIDI1NCwgMTcwLCAxMCwgNCwgMTI1LCAyMzUsIDEyMywgMTAsIDQsIDEyNSwgMTM0LCAKKyAgICAyNDcsIDExOCwgMTAsIDQsIDEyNSwgMjIxLCAxNjYsIDEwLCAyNDUsIDE0MywgNjQsIDI1MywgMTY2LCAxMCwgMjE4LCAxNTIsIAorICAgIDY0LCAyMjIsIDEzOCwgMjQ1LCAxNzUsIDI0MSwgMTU1LCAxMCwgNCwgMTI1LCAyMjIsIDE4MywgMjEwLCA4NiwgMTAsIDQsIAorICAgIDEyNSwgMjE0LCAxNTksIDIyMywgMTE1LCAyMTAsIDg2LCAxMCwgNCwgMTI1LCAyNDcsIDExOSwgMjQxLCAyMzYsIDY0LCAKKyAgICAyMzQsIDEyOSwgMTAsIDQsIDEyNSwgNjYsIDUzLCAxNywgMTAsIDQsIDEyMSwgMjIxLCAxNjYsIDEwLCA0LCAxMjUsIDIzMSwgCisgICAgMjI3LCAxMCwgNCwgMjEyLCAzMCwgMTAsIDQsIDIxMSwgNDMsIDEwLCA0LCAxMjUsIDIxMSwgNDMsIDEwLCA0LCAxMjUsIAorICAgIDIyOCwgNjIsIDEwLCAyMjUsIDQxLCA2NCwgMjIyLCAxMywgMTAsIDI0NSwgMTUyLCAyNTAsIDE3NSwgMTIxLCAyMTgsIDEyOSwgCisgICAgMTAsIDI0NSwgMTUyLCAyNTAsIDE3NSwgMTI1LCAyMTgsIDEyOSwgMTAsIDIyMiwgMTgzLCAxMjUsIDIxOCwgMTMwLCAyLCAKKyAgICAyNDQsIDEwNCwgMjUwLCAxNzQsIDEwLCA0LCAxMjEsIDIzMSwgNzgsIDEwLCAxLCAyNDgsIDE5NiwgMiwgMjM1LCAxOTMsIAorICAgIDIxNCwgMTA1LCAxMCwgMSwgMjIzLCA5NiwgMiwgMjM1LCAxOTMsIDIxNCwgMTA1LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgCisgICAgMjEwLCA4NiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDExMCwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDEwNSwgMjQ1LCAyMiwgCisgICAgMjU0LCAzNywgMjEsIDE1OCwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDE2MSwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDE4OSwgCisgICAgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDE5NCwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDE5OCwgMjQ1LCAyMiwgMjU0LCAzNywgCisgICAgMjEsIDE5NSwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDIwMCwgMTAsIDEsIDIyMCwgNjAsIDIsIDU5LCA1MSwgMTAsIDEsIAorICAgIDI0OCwgMjE3LCAyLCA1OSwgNTEsIDEwLCAxLCAyNDIsIDI0NSwgMiwgNTksIDUxLCAxMCwgNSwgMjE5LCAxNTgsIDI1NCwgCisgICAgMTI2LCAxMCwgNSwgMjE5LCAxNTgsIDIyNCwgMjM1LCAyMzEsIDU4LCAxMCwgMSwgMjQxLCAyMTksIDIsIDIzNSwgMTkzLCAKKyAgICAyMTQsIDEwNSwgMTg4LCAyNDUsIDE0MywgNjQsIDIyNiwgMTQsIDE4OCwgMjE4LCAxOSwgMjQzLCAyMjksIDIxOCwgMTI5LCAKKyAgICAxODgsIDIxOCwgNjcsIDI0MywgMjI5LCAyMTgsIDEyOSwgMTg4LCAyMTgsIDE5LCAyNDksIDIyNiwgMTg4LCAyMTgsIDY3LCAKKyAgICAyNDksIDIyNiwgMTg4LCAyMDMsIDI0OSwgMjI2LCAxODgsIDI0OSwgMjI3LCAyMTksIDEwNiwgMjMzLCA0NiwgMTg4LCAyNDksIAorICAgIDIyNywgMjE5LCAxMDYsIDIyMiwgMjUxLCAxODgsIDIxOCwgMTksIDI0OSwgMjI3LCAyMTksIDEwNiwgMjMzLCA0NiwgMTg4LCAKKyAgICAyMTgsIDY3LCAyNDksIDIyNywgMjE5LCAxMDYsIDIyMiwgMjUxLCAxODgsIDI0OSwgMTgwLCAxODgsIDI0MiwgMSwgMjI2LCAKKyAgICAyNTAsIDE4OCwgMjQyLCAxLCAyMzEsIDM2LCAxODgsIDI0MiwgMSwgMjUzLCAyMTgsIDE4OCwgMjU1LCAyMSwgNzgsIDE4OCwgCisgICAgMSwgMjU0LCAxNzQsIDE4OCwgMSwgMjE4LCAyMywgMjU0LCAxNzQsIDE4OCwgMSwgMjUyLCAyNSwgMTg4LCAxLCAyNDMsIAorICAgIDExMywgMTg4LCAxLCAyNDMsIDExNCwgMjQzLCA5MSwgMTg4LCAxLCAyNDgsIDE5MiwgMTg4LCAxLCAyNDcsIDExOSwgMjQ4LCAKKyAgICAxOTMsIDIyMiwgMjI5LCAxODgsIDEsIDI0MSwgMjM4LCAxODgsIDEsIDIxMiwgMzAsIDE4OCwgMSwgMjEwLCAxMDgsIDE4OCwgCisgICAgMSwgMjQxLCAxOTUsIDE4OCwgMSwgMjE2LCAyMjYsIDE4OCwgMSwgMjE2LCAyMjcsIDI0MywgOTEsIDE4OCwgMSwgMjEwLCAKKyAgICAxOTksIDE4OCwgMSwgMjEwLCAyMDAsIDI0MSwgMjM4LCAxODgsIDEsIDIzNCwgMjI1LCAxODgsIDEsIDIzMywgMTAxLCAxODgsIAorICAgIDEsIDIzMCwgMTkwLCAxODgsIDEsIDIyNywgMTk0LCAxODgsIDEsIDIyMCwgMTQzLCAxODgsIDEsIDQwLCAyMjAsIDE0MywgCisgICAgMTg4LCAxLCA3NSwgMTg4LCAxLCAyMjUsIDIyMSwgMTg4LCAxLCAyMjMsIDQ5LCAyMjUsIDIyMSwgMTg4LCAxLCAyMjIsIDI0LCAKKyAgICAxODgsIDEsIDIyNCwgNzUsIDE4OCwgMSwgMjIyLCAyMjksIDE4OCwgMSwgMjIwLCAyMCwgMTg4LCAxLCAyMTcsIDM2LCAxODgsIAorICAgIDEsIDIyNSwgMTY5LCAyNTIsIDEyLCAxODgsIDEsIDIyNSwgMTY5LCAyNDIsIDI0MiwgMTg4LCAxLCAyMjUsIDE2OSwgMjQ4LCAKKyAgICAyMCwgMTg4LCAyMjQsIDE1MSwgNDgsIDE4OCwgMjI0LCAxNTEsIDUxLCAxODgsIDIyNCwgMTUxLCAyNDYsIDExNywgMTg4LCAKKyAgICAyMTAsIDE3LCA0OCwgMTg4LCAyMTAsIDE3LCA1MSwgMTg4LCAyMTAsIDE3LCAyNDYsIDExNywgMTg4LCAyMjMsIDEzMSwgNDgsIAorICAgIDE4OCwgMjIzLCAxMzEsIDUxLCAxODgsIDI0NiwgMTE4LCAyMTAsIDI0LCAyNDEsIDQ0LCAxODgsIDI0NiwgMTE4LCAyMTAsIAorICAgIDI0LCAyNTQsIDEwNSwgMTg4LCAyNDEsIDI0MSwgNDgsIDE4OCwgMjQxLCAyNDEsIDUxLCAxODgsIDI0MSwgMjQwLCAyNDYsIAorICAgIDExNywgMTg4LCAyNDUsIDc5LCA0OCwgMTg4LCAyNDUsIDc5LCA1MSwgMTg4LCAyMjIsIDEwNywgMTg4LCAyNDQsIDEzNiwgCisgICAgMjQ3LCAxMjAsIDE4OCwgMjIzLCAyNDgsIDE4OCwgMjIyLCAxMzQsIDE4OCwgMTEzLCA2NywgMTcwLCA0OCwgMTg4LCAxMTMsIAorICAgIDY3LCAxNzAsIDUxLCAxODgsIDEzNCwgMTcwLCA0OCwgMTg4LCAxMzQsIDE3MCwgNTEsIDE4OCwgMjI2LCAyNDgsIDIzMiwgCisgICAgMjE0LCA0OCwgMTg4LCAyMjYsIDI0OCwgMjMyLCAyMTQsIDUxLCAxODgsIDIzMCwgNTYsIDE4OCwgMjUyLCAxMzEsIDE4OCwgCisgICAgMSwgMjE5LCA0OSwgMjEwLCA4MCwgMTg4LCAxLCAyMTksIDQ5LCAyMzQsIDEyMiwgMTg4LCAxLCAyMTksIDQ5LCAyNDQsIAorICAgIDE1NCwgMTAsIDEsIDI1MiwgNTUsIDIsIDEzNCwgMTcwLCAyNDAsIDI1MCwgNTEsIDEwLCAxLCAyNTIsIDU1LCAyLCA1OSwgCisgICAgMjUyLCA0MywgMjIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDI1MiwgNTUsIDIsIDEzNCwgMTcwLCAyMjUsIDcsIDIxNCwgMTUzLCAKKyAgICA1MSwgMTAsIDEsIDI1MiwgNTUsIDIsIDEzNCwgMTcwLCAyMjUsIDcsIDIxNCwgMTUzLCAyNTIsIDQzLCAyMiwgMTEzLCAxNzAsIAorICAgIDQ4LCAxMCwgMSwgMjUyLCA1NSwgMiwgMTEzLCAxNzAsIDI1MiwgNDMsIDIyLCA1OSwgNDgsIDEwLCAxLCAyNTIsIDU1LCAyLCAKKyAgICAyMzUsIDE5MywgNCwgMjE0LCAxMDYsIDUxLCAxMCwgMSwgMjUyLCA1NSwgMiwgNCwgMjE0LCAxMDUsIDEwLCAxLCAxMjIsIDIsIAorICAgIDExMywgMTcwLCA0OCwgMTAsIDEsIDEyMiwgMiwgMTM0LCAxNzAsIDIyNSwgNywgMjE0LCAxNTMsIDUxLCAxMCwgMSwgMjQ4LCAKKyAgICAxOTYsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgMjUyLCA0MywgMjIsIDQsIDIxNywgODAsIDEwLCAxLCAyNDgsIDE5NiwgMiwgCisgICAgMjM1LCAxOTMsIDQsIDIxNCwgMTA2LCA1MSwgMTAsIDEsIDIyMywgOTYsIDIsIDkxLCAxMCwgMSwgMjIxLCAxNjcsIDIsIAorICAgIDI0NCwgMTEsIDE3MCwgNDgsIDEwLCAxLCAyNTQsIDE5NywgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjU0LCAxOTcsIDIsIAorICAgIDEzNCwgMTcwLCAyMjUsIDcsIDI0NiwgMTA0LCA0OCwgMTAsIDEsIDI1NCwgMTk3LCAyLCAxMTMsIDE3MCwgMjEzLCAxODksIAorICAgIDQ4LCAxMCwgMSwgMjQ0LCAxNDMsIDIsIDExMywgMTcwLCA1MSwgMTAsIDEsIDI0NCwgMTQzLCAyLCAxMzQsIDE3MCwgMjI1LCAKKyAgICA3LCAyMTQsIDE1MywgNTEsIDEwLCAxLCAyMzQsIDE3NSwgMiwgNTksIDQ4LCAxMCwgMSwgMjM0LCAxNzUsIDIsIDEzNCwgCisgICAgMTcwLCA0OCwgMTAsIDEsIDIzNCwgMTc1LCAyLCAxMzQsIDE3MCwgMjI1LCA3LCAyMTQsIDE1MywgNTEsIDEwLCAxLCA2NiwgCisgICAgMiwgNTksIDQ4LCAxMCwgMSwgNjYsIDIsIDU5LCA1MSwgMTAsIDEsIDIyOCwgNjMsIDIsIDExMywgMTcwLCA1MSwgMTAsIDEsIAorICAgIDIyOCwgNjMsIDIsIDQsIDIxNywgODAsIDEwLCAxLCAyMjgsIDYzLCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDIzMywgMTAzLCAKKyAgICAyLCAxMzAsIDEwLCAxLCAyMjMsIDk2LCAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDQ4LCAxMCwgMSwgMjIzLCA5NiwgMiwgCisgICAgMjAyLCA0OCwgMTAsIDEsIDIyMSwgMTY3LCAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDQ4LCAxMCwgMSwgMTIyLCAyLCA0LCAKKyAgICAxMCwgMSwgMjE3LCA4MSwgNTEsIDEwLCAxLCAxMjIsIDIsIDQsIDEwLCAxLCAyMTcsIDgxLCAyMiwgMTEzLCAyNDcsIDExOCwgCisgICAgMTAsIDEsIDIyMSwgMTY3LCAyLCA0LCAxMCwgMSwgMjE3LCA4MSwgMjIsIDExMywgMjQ3LCAxMTgsIDEwLCAxLCAyMjMsIDk2LCAKKyAgICAyLCA0LCAxMCwgMSwgMjE3LCA4MSwgMjIsIDExMywgMjQ3LCAxMTgsIDEwLCAxLCAxMjIsIDIsIDQsIDEwLCAxLCAyMTcsIAorICAgIDgxLCA0OCwgMTAsIDEsIDExMiwgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDExMywgNDgsIDEwLCAxLCAxMTIsIDIsIDI0NSwgCisgICAgMjIsIDI1NCwgMzcsIDIxLCAxMzQsIDQ4LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgCisgICAgMTEzLCA0OCwgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDEzNCwgNDgsIDEwLCAxLCAKKyAgICAyNDQsIDE2OCwgNzksIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAyNDQsIDExLCA1MSwgMTAsIDEsIDIxMiwgMzEsIDIsIAorICAgIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMTMsIDQ4LCAxMCwgMSwgMjEyLCAzMSwgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIAorICAgIDEzNCwgNDgsIDEwLCAxLCA3OSwgMjUyLCAxMzMsIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMTMsIDQ4LCAxMCwgMSwgCisgICAgNzksIDI1MiwgMTMzLCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTM0LCA0OCwgMTAsIDEsIDEyMiwgMiwgMjQ1LCAyMiwgCisgICAgMjU0LCAzNywgMjEsIDI0NCwgMTEsIDUxLCAxMCwgMSwgMjIxLCAxNjcsIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAyNDQsIAorICAgIDExLCA0OCwgMTAsIDEsIDIyMSwgMTY3LCAyLCAyMzUsIDE5MywgMjE0LCAxMDUsIDEwLCAxLCAyMzQsIDI1MSwgMiwgMTEzLCAKKyAgICAxNzAsIDQ4LCAyMTYsIDIwNSwgMSwgMjQyLCA0NiwgMjE2LCAyMDUsIDEsIDIyMCwgNjgsIDIxNiwgMjA1LCAxLCAyMjgsIAorICAgIDYxLCAyMTYsIDIwNSwgMSwgMjIzLCAxODQsIDIxNiwgMjA1LCAxLCAyNTIsIDE4OSwgMjE2LCAyMDUsIDEsIDIzMiwgMjUxLCAKKyAgICAyMTYsIDIwNSwgMSwgMjM1LCA4LCAyMTYsIDIwNSwgMSwgMjU0LCAxNTksIDIxNiwgMjA1LCAxLCAyMTQsIDI1LCAyMTYsIAorICAgIDIwNSwgMSwgMjMxLCA3NywgMjE2LCAyMDUsIDEsIDI0NCwgMTk0LCAyMTYsIDIwNSwgMSwgMjQ4LCAyMywgMjE2LCAyMDUsIAorICAgIDEsIDIxNiwgMjA3LCAyMTYsIDIwNSwgMSwgMjMzLCAxMzEsIDIxNiwgMjA1LCAxLCAyNDMsIDEzMSwgMjE2LCAyMDUsIDEsIAorICAgIDI0MiwgMTc3LCAyMTYsIDIwNSwgMSwgMjIxLCAxNjUsIDIxNiwgMjA1LCAxLCAyNDgsIDE0OCwgMjE2LCAyMDUsIDEsIDIxMCwgCisgICAgMTAwLCAyMTYsIDIwNSwgMSwgMjE3LCAzNywgMjE2LCAyMDUsIDEsIDIxMSwgMTAzLCAyMTYsIDIwNSwgMSwgMjI1LCAyMzMsIAorICAgIDIxNiwgMjA1LCAxLCAyMzUsIDEyOCwgMjE2LCAyMDUsIDEsIDI1MCwgMTM0LCAyMTYsIDIwNSwgMSwgMjE1LCAxNTUsIDIxNiwgCisgICAgMjA1LCAxLCAyNDEsIDE4OCwgMjE2LCAyMDUsIDEsIDIzNCwgMTMxLCAyMTYsIDIwNSwgMSwgMjE2LCAyMDYsIDIxNiwgMjA1LCAKKyAgICAxLCAyMTAsIDExNSwgMjE2LCAyMDUsIDEsIDIyMCwgNTgsIDIxNiwgMjA1LCAxLCAyMjIsIDMwLCAyMTYsIDIwNSwgMSwgCisgICAgMjQ4LCAyMTksIDIxNiwgMjA1LCAxLCAxMTEsIDIxNiwgMjA1LCAxLCAyMTAsIDIzLCAyMTYsIDIwNSwgMSwgMjU0LCAxOTMsIAorICAgIDIxNiwgMjA1LCAxLCAyNDIsIDI0MywgMjE2LCAyMDUsIDEsIDIyNCwgODUsIDIxNiwgMjA1LCAxLCAyMTIsIDYzLCAyMTYsIAorICAgIDIwNSwgMjU1LCAyMiwgMjE2LCAyMDUsIDI1NSwgMzgsIDIxNiwgMjA1LCAyNDAsIDExNCwgMjE2LCAyMDUsIDI0NSwgMjA4LCAKKyAgICAyMTYsIDIwNSwgMjE0LCAyMjIsIDIxNiwgMjA1LCAyMjYsIDE4MiwgMjE2LCAyMDUsIDI0NSwgMjE2LCAyMTYsIDIwNSwgCisgICAgMjQ1LCAxNiwgMjE2LCAyMDUsIDIyNiwgMjQ3LCAyMTYsIDIwNSwgMjI2LCAyNTUsIDIxNiwgMjA1LCAyMTgsIDQ1LCAyMTYsIAorICAgIDIwNSwgMSwgMjI5LCAyMjUsIDIyOCwgMTM3LCAyMSwgMjEwLCA4NiwgMjI4LCAxMzcsIDIxLCAxMTAsIDIyOCwgMTM3LCAyMSwgCisgICAgMTA1LCAyMjgsIDEzNywgMjEsIDE1OCwgMjI4LCAxMzcsIDIxLCAxNjEsIDIyOCwgMTM3LCAyMSwgMTg5LCAyMjgsIDEzNywgCisgICAgMjEsIDE5NCwgMjI4LCAxMzcsIDIxLCAxOTgsIDIyOCwgMTM3LCAyMSwgMTk1LCAyMjgsIDEzNywgMjEsIDIwMCwgMjI4LCAKKyAgICAxMzcsIDEsIDYxLCAyMjgsIDEzNywgMSwgMjQ1LCAyMDksIDIyOCwgMTM3LCAxLCA3MywgMjI4LCAxMzcsIDEsIDc1LCAyMjgsIAorICAgIDEzNywgMSwgNzAsIDIyOCwgMTM3LCAxLCAyMjYsIDE4MywgMjI4LCAxMzcsIDEsIDc2LCAyMjgsIDEzNywgMSwgMjQ4LCAKKyAgICAyMDksIDIyOCwgMTM3LCAxLCAyMzAsIDI1LCAyMjgsIDEzNywgMSwgMjUyLCAxOTEsIDIyOCwgMTM3LCAxLCAxOTAsIDIyOCwgCisgICAgMTM3LCAxLCAyMTcsIDEwNSwgMjI4LCAxMzcsIDEsIDIzNSwgMTQxLCAyMjgsIDEzNywgMSwgMjUwLCAxNTcsIDIyOCwgMTM3LCAKKyAgICAxLCAyNDgsIDIyMSwgMjI4LCAxMzcsIDEsIDIwNSwgMjI4LCAxMzcsIDEsIDIyMiwgMTc5LCAyMjgsIDEzNywgMSwgMjA2LCAKKyAgICAyMjgsIDEzNywgMSwgMjQzLCA3OSwgMjI4LCAxMzcsIDEsIDI0NCwgMTk2LCAyMjgsIDEzNywgMSwgMTc2LCAyMjgsIDEzNywgCisgICAgMSwgMjMzLCAxMzUsIDIyOCwgMTM3LCAxLCAyMjksIDIyOSwgMjExLCAyMjMsIDIyOCwgMTM3LCAxLCAxODQsIDIyOCwgMTM3LCAKKyAgICAxLCAyMjcsIDE2NSwgMjI4LCAxMzcsIDEsIDE5NywgMjI4LCAxMzcsIDEsIDE2MiwgMjI4LCAxMzcsIDEsIDIxMiwgNjUsIAorICAgIDIyOCwgMTM3LCAxLCAxOTEsIDIyOCwgMTM3LCAxLCAyMjcsIDE2NiwgMjExLCAyMjMsIDIyOCwgMTM3LCAxLCAyMzUsIDYxLCAKKyAgICAyMzUsIDE0MSwgMjI4LCAxMzcsIDEsIDIzNSwgNjEsIDI1MCwgMTU3LCAyMjgsIDEzNywgMSwgMjM1LCA2MSwgMjA1LCAyMjgsIAorICAgIDEzNywgMzgsIDIxOSwgMjUxLCAxMjUsIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMjE5LCAyNTEsIDEyMSwgMjE2LCAzMCwgCisgICAgMjI4LCAxMzcsIDM4LCAyMTksIDI1MSwgMjIyLCAyMjgsIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMTk5LCAyNDgsIDM4LCAKKyAgICAyMTYsIDMwLCAyMjgsIDEzNywgMzgsIDE5OSwgMTI1LCAyMTYsIDMwLCAyMjgsIDEzNywgMzgsIDE5OSwgMTIxLCAyMTYsIAorICAgIDMwLCAyMjgsIDEzNywgMzgsIDE5OSwgMjIyLCAyMjgsIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMjI5LCAxOTMsIDc4LCAKKyAgICAyMjgsIDEzNywgMzgsIDUyLCA1OSwgNDgsIDIyOCwgMTM3LCAxMjUsIDEzOCwgMjU0LCA1NywgMjI4LCAxMzcsIDEyMSwgCisgICAgMTM4LCAyNTQsIDU3LCAyMjgsIDEzNywgMTYsIDIyNiwgMTg0LCAyNDgsIDUwLCAyMjgsIDEzNywgMTYsIDI0MywgNzgsIAorICAgIDIyOCwgMTM3LCAyNDksIDIxOSwgMjI4LCAxMzcsIDI0NSwgMzEsIDc4LCAyMjgsIDEzNywgMjMzLCAxMDgsIDIyMSwgMjUyLCAKKyAgICAxLCAyNTQsIDE3NiwgMjIxLCAyNTIsIDEsIDI1MSwgMjI4LCAyMjEsIDI1MiwgMSwgMjQzLCAxMTIsIDIyMSwgMjUyLCAxLCAKKyAgICAyNDgsIDE5NCwgMjIxLCAyNTIsIDEsIDIzNSwgMTUyLCAyMjEsIDI1MiwgMSwgMjUyLCAxODksIDIyMSwgMjUyLCAxLCAyMTAsIAorICAgIDg5LCAyMjEsIDI1MiwgMSwgMjM1LCAxNjAsIDIyMSwgMjUyLCAxLCAyMTYsIDY3LCAyMjEsIDI1MiwgMSwgMjEwLCAxODIsIAorICAgIDIyMSwgMjUyLCAxLCAyMzUsIDksIDIyMSwgMjUyLCAxLCAyMzMsIDEyOCwgMjIxLCAyNTIsIDEsIDIzMCwgMTkwLCAyMjEsIAorICAgIDI1MiwgMSwgMjI3LCAxOTQsIDIyMSwgMjUyLCAxLCAyMTksIDE1NiwgMjIxLCAyNTIsIDEsIDIzNSwgMjU1LCAyMjEsIDI1MiwgCisgICAgMSwgMjQ0LCAxMjEsIDIyMSwgMjUyLCAxLCAyMTUsIDE4MSwgMjIxLCAyNTIsIDEsIDIyNCwgMTAsIDIyMSwgMjUyLCAxLCAKKyAgICAyMjIsIDIyOSwgMjIxLCAyNTIsIDEsIDIyMCwgODUsIDIyMSwgMjUyLCAxLCAyMTcsIDEwMCwgMjIxLCAyNTIsIDE2NCwgCisgICAgMjM1LCAyNTUsIDIyMSwgMjUyLCAxNjQsIDIzNSwgMjU0LCAyMjEsIDI1MiwgMTY0LCAyMjYsIDI0MywgMjIxLCAyNTIsIAorICAgIDE2NCwgMjQ4LCAyMDcsIDIyMSwgMjUyLCA1OCwgMSwgMjQ1LCAxMDUsIDIxMCwgMTgyLCAyMjEsIDI1MiwgMTY0LCAyNDUsIAorICAgIDEwNSwgMjEwLCAxODIsIDIyMSwgMjUyLCAyNSwgNSwgMTk5LCA3NSwgMjIxLCAyNTIsIDI1LCA1LCA3NSwgMjIxLCAyNTIsIAorICAgIDI1LCA1LCAyMjYsIDExOCwgMjU1LCA3MywgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDI1NSwgNzMsIDIyMSwgMjUyLCAyNSwgNSwgCisgICAgMjU1LCA3MywgMjIxLCAyNTIsIDI1LCA1LCAyMjYsIDExOCwgNjEsIDIyMSwgMjUyLCAyNSwgNSwgMTk5LCA2MSwgMjIxLCAKKyAgICAyNTIsIDI1LCA1LCA2MSwgMjIxLCAyNTIsIDU4LCAxLCAyMTksIDI1MSwgNjEsIDIyMSwgMjUyLCAyNSwgNSwgMjE5LCAyNTEsIAorICAgIDYxLCAyMjEsIDI1MiwgMjUsIDUsIDE5OSwgNzAsIDIyMSwgMjUyLCAyNSwgNSwgNzAsIDIyMSwgMjUyLCA1OCwgMSwgNzMsIAorICAgIDIyMSwgMjUyLCAyNSwgNSwgMTk5LCA3MywgMjIxLCAyNTIsIDI1LCA1LCA3MywgMjIxLCAyNTIsIDI1LCA1LCA3NiwgMjIxLCAKKyAgICAyNTIsIDI1LCA1LCAyMTgsIDQ1LCAyMjEsIDI1MiwgMTY0LCAyMjksIDkyLCAyMjEsIDI1MiwgMjI0LCAxNDEsIDIyOSwgOTIsIAorICAgIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjU0LCAyMTgsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjU0LCAxMTQsIDIyMSwgMjUyLCAKKyAgICAyMjQsIDE0MSwgMjUyLCAxMTQsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjUzLCAyMDEsIDIyMSwgMjUyLCAyMjQsIDE0MSwgCisgICAgMjIwLCA4LCAyMjEsIDI1MiwgMjU1LCAyMSwgNzgsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjMxLCA2OCwgMjI0LCA0NSwgMjIxLCAKKyAgICAyNTIsIDIyNCwgMTQxLCAyMTAsIDMxLCAyMjEsIDI1MiwgMjI0LCAxNDEsIDIyNCwgNDUsIDIyMSwgMjUyLCAyMjQsIDE0MSwgCisgICAgMjEwLCAxMTQsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjE1LCA5MCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTQsIDksIDIyMSwgCisgICAgMjUyLCAyMjQsIDE0MSwgMjE5LCA1MywgMjMxLCAxNDUsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjU0LCAxMDAsIDIzMSwgMTgyLCAKKyAgICAxLCAyNDIsIDI0LCAyMzEsIDE4MiwgMSwgMjU1LCAyNSwgMjMxLCAxODIsIDEsIDI1NCwgMjE2LCAyMzEsIDE4MiwgMSwgCisgICAgMjU0LCAyNTUsIDIzMSwgMTgyLCAxLCAyNTQsIDIwOSwgMjMxLCAxODIsIDEsIDIxNCwgMTI0LCAyMzEsIDE4MiwgMSwgMjUzLCAKKyAgICAxNjAsIDIzMSwgMTgyLCAxLCAyMzUsIDE2MCwgMjMxLCAxODIsIDEsIDI1MywgMTk4LCAyMzEsIDE4MiwgMSwgMjU0LCAxODEsIAorICAgIDIzMSwgMTgyLCAxLCAyNTQsIDE4NiwgMjMxLCAxODIsIDEsIDI1NCwgMTc4LCAyMzEsIDE4MiwgMSwgMjU0LCAxMzYsIDIzMSwgCisgICAgMTgyLCAxLCAyNTQsIDEyMywgMjMxLCAxODIsIDEsIDI1MywgMjM3LCAyMzEsIDE4MiwgMSwgMjM1LCAyNTUsIDIzMSwgMTgyLCAKKyAgICAxLCAyNTQsIDcyLCAyMzEsIDE4MiwgMSwgMjUzLCAyMDgsIDIzMSwgMTgyLCAxLCAyNTQsIDQ1LCAyMzEsIDE4MiwgMSwgCisgICAgMjU0LCA0MSwgMjMxLCAxODIsIDEsIDI1MywgMjMxLCAyMzEsIDE4MiwgMSwgMjUzLCAyMDYsIDIzMSwgMTgyLCAxLCAyNDYsIAorICAgIDU1LCAyMzEsIDE4MiwgMSwgMjM1LCAyLCAyMzEsIDE4MiwgMSwgMjU0LCAxOTYsIDIzMSwgMTgyLCAyNTQsIDIyMiwgNzgsIAorICAgIDIzMSwgMTgyLCAyMTMsIDEzNiwgNzgsIDIzMSwgMTgyLCAyNDMsIDUzLCA3OCwgMjMxLCAxODIsIDIyNCwgMTQwLCAxMCwgMSwgCisgICAgMjUyLCA1NSwgMiwgNCwgMjE0LCAxMDYsIDUxLCAxMCwgMSwgMTUxLCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyMTcsIDgxLCAKKyAgICAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyNDQsIDE0MywgMiwgNTksIDI1MiwgNDMsIDIyLCAxMzQsIDE3MCwgNDgsIDEwLCAKKyAgICAxLCAyMjQsIDgyLCAyLCA1OSwgNTEsIDEwLCAxLCAyMzMsIDEwMywgMiwgNTIsIDEzMCwgMTAsIDEsIDY2LCAyLCAxMzQsIAorICAgIDE3MCwgNDgsIDEwLCAxLCA3OSwgMiwgMTEzLCAxNzAsIDI1MiwgNDMsIDIyLCAyMDIsIDQ4LCAxMCwgMSwgNzksIDIsIDExMywgCisgICAgMTcwLCAyNTIsIDQzLCAyMiwgNTksIDQ4LCAxMCwgMSwgMjIzLCA5NiwgMiwgMjMyLCAxMjMsIDEwLCAxLCAyMTIsIDMxLCAyLCAKKyAgICA1OSwgMjExLCAyMzEsIDEwLCAxLCAyMjIsIDIwMSwgMjExLCA0MywgMTAsIDI0OSwgOTksIDI0NCwgMTY1LCAxMCwgMjQ5LCAKKyAgICA5OSwgMjQ4LCAxODQsIDEwLCAyNDksIDk5LCAyMzQsIDIwNSwgMTAsIDI0OSwgOTksIDI0NCwgMTYzLCAxMCwgMjQ5LCA5OSwgCisgICAgMjQ4LCAxODIsIDEwLCAyNDksIDk5LCAyMzQsIDIwMywgMTAsIDEzOCwgMTIzLCA1OSwgNDgsIDEwLCAxMzgsIDExMywgMTcwLCAKKyAgICA0OCwgMTAsIDEzOCwgMjMyLCAxMjQsIDQ4LCAxMCwgMTM4LCAxMjMsIDU5LCA1MSwgMTAsIDEzOCwgMTEzLCAxNzAsIDUxLCAKKyAgICAxMCwgMTM4LCAyMzIsIDEyNCwgNTEsIDEwLCAyMDQsIDI0NCwgMTYzLCAxMCwgMjA0LCAyNDgsIDE4MiwgMTAsIDIwNCwgCisgICAgMjM0LCAyMDMsIDEwLCA0LCAxMjUsIDIxMiwgMzAsIDEwLCAyNDQsIDE2NiwgMiwgMjIyLCAyMzMsIDEwLCAyNDQsIDE2NiwgCisgICAgMiwgNTksIDQ4LCAxMCwgMjM0LCAyMDYsIDIsIDU5LCA1MSwgMTAsIDQzLCAyNTMsIDI1MCwgNDgsIDEwLCA0NCwgMjUzLCAKKyAgICAyNTAsIDQ4LCAxMCwgNDMsIDI1MywgMjUwLCA1MSwgMTAsIDQ0LCAyNTMsIDI1MCwgNTEsIDEwLCA1MiwgNDQsIDI1MywgCisgICAgMjUwLCA0OCwgMTAsIDUyLCA0NCwgMjUzLCAyNTAsIDc3LCAyLCAyNDcsIDEyMCwgMTAsIDQ0LCAyNTMsIDI1MCwgNzcsIDIsIAorICAgIDI0NywgMTIwLCAxMCwgMjQ4LCAxODUsIDIsIDI0NywgMTIwLCA4NCwgNSwgMjM1LCAxOTMsIDI1MCwgMjU1LCA4NCwgNSwgCisgICAgMjUwLCAyNTUsIDg0LCA1LCAyNTQsIDc1LCA4NCwgNSwgMjEzLCAxNDcsIDg0LCAxLCAyMTksIDI1MSwgNjEsIDg0LCAxLCAKKyAgICA2MSwgODQsIDEsIDI1NSwgNzMsIDg0LCAxLCA3MywgODQsIDEsIDIzNiwgMzMsIDg0LCAxLCA3MCwgODQsIDEsIDIxNCwgCisgICAgMTE4LCA4NCwgMSwgMTQ5LCAxNTMsIDg0LCAxLCAxNDksIDE1NiwgODQsIDEsIDI1MSwgMiwgNzUsIDg0LCAxLCAyMTksIAorICAgIDI1MSwgNzUsIDg0LCAxLCA3NSwgODQsIDEsIDI1NCwgMjAxLCA4NCwgMSwgMjUxLCAyLCA3NiwgODQsIDEsIDIxOSwgMjUxLCAKKyAgICA3NiwgODQsIDEsIDc2LCA4NCwgMSwgMjUzLCAxOTIsIDg0LCAxLCAxNzYsIDg0LCAxLCAyMzQsIDEzMiwgODQsIDEsIDI0MywgCisgICAgMTM1LCA4NCwgMSwgMjQyLCAyNDksIDg0LCAxLCAyMjksIDc3LCA4NCwgMSwgMjUxLCAzMywgODQsIDEsIDI1MCwgMTU3LCAKKyAgICA4NCwgMSwgMjM1LCAxNDEsIDg0LCAxLCAyMzUsIDExNCwgODQsIDEsIDIyNywgMTY1LCA4NCwgMSwgMjE1LCAxNTYsIDg0LCAKKyAgICAxLCAyMTUsIDE0NCwgODQsIDEsIDI0OCwgMTM1LCA4NCwgMSwgMjQ4LCAxMTksIDg0LCAxLCAyMjgsIDExMCwgODQsIDEsIAorICAgIDIxNywgMTA1LCA4NCwgMSwgMjE2LCAyMDgsIDg0LCAxLCAyNDgsIDIyMSwgODQsIDEsIDI0OCwgMjUsIDg0LCAxLCAxOTcsIAorICAgIDg0LCAxLCAyMjgsIDkyLCA4NCwgMSwgMTkwLCA4NCwgMSwgMjI1LCAxNDcsIDg0LCAxLCAyNTIsIDE5MSwgODQsIDEsIDI1MiwgCisgICAgMTgsIDg0LCAxLCAxODQsIDg0LCAxLCAxOTEsIDg0LCAxLCAyMDUsIDg0LCAxLCAyMjIsIDE3OSwgODQsIDEsIDIzMywgMTM1LCAKKyAgICA4NCwgMSwgMjMyLCAxODQsIDg0LCAxLCAyMzIsIDE3NSwgODQsIDEsIDIxNCwgMjcsIDg0LCAxLCAyMjAsIDEwMiwgODQsIDEsIAorICAgIDIxOCwgMjIzLCA4NCwgMSwgMjA2LCA4NCwgMSwgMTYyLCA4NCwgMjUsIDUsIDIyNiwgMjM0LCA4NCwgMjUsIDUsIDIyNiwgCisgICAgMTgxLCA4NCwgNSwgMjI3LCAyMDUsIDg0LCA1LCAyNTMsIDE3NSwgODQsIDI1LCA1LCAyNTUsIDczLCA4NCwgMjUsIDUsIDczLCAKKyAgICA4NCwgMjUsIDUsIDIzNiwgMzMsIDg0LCAyNSwgNSwgNzAsIDg0LCAyNSwgNSwgMjE0LCAxMTgsIDg0LCAyNSwgNSwgMTQ5LCAKKyAgICAxNTMsIDg0LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgODQsIDI1LCA1LCAyNTEsIDIsIDc1LCA4NCwgMjUsIDUsIDIxOSwgCisgICAgMjUxLCA3NSwgODQsIDI1LCA1LCA3NSwgODQsIDI1LCA1LCAyNTQsIDIwMSwgODQsIDI1LCA1LCAyNTEsIDIsIDc2LCA4NCwgCisgICAgMjUsIDUsIDIxOSwgMjUxLCA3NiwgODQsIDI1LCA1LCA3NiwgODQsIDI1LCA1LCAyNTMsIDE5MiwgODQsIDUsIDIxMywgMTUyLCAKKyAgICA4NCwgMjUsIDUsIDIyNCwgMTg1LCA3NSwgODQsIDI1LCA1LCAyNTMsIDE3MSwgODQsIDIyNiwgMjA0LCA4NCwgMjE4LCAxMTEsIAorICAgIDUsIDIxNCwgMjE2LCA4NCwgMjE4LCAxMTEsIDUsIDI1NCwgNzcsIDg0LCAyNDIsIDEzNywgMjU1LCAxNCwgODQsIDI1NSwgMywgCisgICAgMjU1LCAxNCwgODQsIDI1LCA1LCAyNTEsIDIsIDE5OSwgNzUsIDg0LCAyNSwgNSwgMjE0LCAyMTQsIDg0LCAyNSwgNSwgMjE0LCAKKyAgICAxMTcsIDg0LCAxLCAyMjQsIDg4LCA4NCwgMSwgMjM0LCAxMTUsIDg0LCAxLCAyNDIsIDIyNiwgODQsIDEsIDIxMCwgMTE2LCAKKyAgICA4NCwgMSwgMjQ4LCAxMjQsIDg0LCAxLCAyMjMsIDM5LCA4NCwgMSwgMjQ0LCAxOTYsIDg0LCAxLCAyMTAsIDE2OCwgODQsIDEsIAorICAgIDE0OSwgMjIyLCAxODAsIDg0LCAxLCAxNDksIDIzMiwgMTg1LCA4NCwgMjUsIDUsIDE0OSwgMTU2LCA4NCwgMjUsIDUsIDE0OSwgCisgICAgMjMyLCAxODUsIDg0LCAyNDgsIDE3OCwgODQsIDUyLCAyNDgsIDE3OCwgODQsIDIxLCAyMTAsIDg2LCA4NCwgMjEsIDExMCwgCisgICAgODQsIDIxLCAxMDUsIDg0LCAyMSwgMTU4LCA4NCwgMjEsIDE2MSwgODQsIDIxLCAxODksIDg0LCAyMSwgMTk0LCA4NCwgMjEsIAorICAgIDE5OCwgODQsIDIxLCAxOTUsIDg0LCAyMSwgMjAwLCA4NCwgMjU1LCAyMSwgNTAsIDg0LCA1LCAxMjUsIDIxOSwgMTcsIDI0NywgCisgICAgMTIwLCA4NCwgMSwgMjUxLCAyLCA2MSwgODQsIDEsIDIyNiwgMjM0LCA4NCwgMSwgMjI2LCAxODEsIDg0LCAxLCAyNTMsIAorICAgIDE3MSwgODQsIDEsIDIxNCwgMjE0LCA4NCwgMSwgMjE0LCAxMTcsIDg0LCAxLCAyMTAsIDgyLCA4NCwgMSwgMTE0LCAxOTEsIAorICAgIDg0LCAxLCAyNDMsIDI5LCA4NCwgMSwgMjM1LCA5NiwgODQsIDEsIDI0MiwgMTgwLCAyMTgsIDEyOSwgODQsIDEsIDI0OCwgCisgICAgMTI1LCA4NCwgMSwgMjUyLCAxMTEsIDE0NiwgNSwgMjUwLCAyNTUsIDE0NiwgNSwgMjU0LCA3NSwgMTQ2LCA1LCAyMTMsIAorICAgIDE0NywgMTQ2LCAxLCA2MSwgMTQ2LCAxLCAyNTUsIDczLCAxNDYsIDEsIDczLCAxNDYsIDEsIDIzNiwgMzMsIDE0NiwgMSwgCisgICAgNzAsIDE0NiwgMSwgMjE0LCAxMTgsIDE0NiwgMSwgMTQ5LCAxNTMsIDE0NiwgMSwgMTQ5LCAxNTYsIDE0NiwgMSwgNzUsIAorICAgIDE0NiwgMSwgMjU0LCAyMDEsIDE0NiwgMSwgNzYsIDE0NiwgMSwgMjUzLCAxOTIsIDE0NiwgMSwgMTc2LCAxNDYsIDEsIDIzNCwgCisgICAgMTMyLCAxNDYsIDEsIDI0MywgMTM1LCAxNDYsIDEsIDI0MiwgMjQ5LCAxNDYsIDEsIDIyOSwgNzcsIDE0NiwgMSwgMjUxLCAKKyAgICAzMywgMTQ2LCAxLCAyNTAsIDE1NywgMTQ2LCAxLCAyMzUsIDE0MSwgMTQ2LCAxLCAyMzUsIDExNCwgMTQ2LCAxLCAyMjcsIAorICAgIDE2NSwgMTQ2LCAxLCAyMTUsIDE1NiwgMTQ2LCAxLCAyMTUsIDE0NCwgMTQ2LCAxLCAyNDgsIDEzNSwgMTQ2LCAxLCAyNDgsIAorICAgIDExOSwgMTQ2LCAxLCAyMjgsIDExMCwgMTQ2LCAxLCAyMTcsIDEwNSwgMTQ2LCAxLCAyMTYsIDIwOCwgMTQ2LCAxLCAyNDgsIAorICAgIDIyMSwgMTQ2LCAxLCAyNDgsIDI1LCAxNDYsIDEsIDE5NywgMTQ2LCAxLCAxOTAsIDE0NiwgMSwgMjI1LCAxNDcsIDE0NiwgMSwgCisgICAgMjUyLCAxOTEsIDE0NiwgMSwgMjUyLCAxOCwgMTQ2LCAxLCAxODQsIDE0NiwgMSwgMTkxLCAxNDYsIDEsIDIwNSwgMTQ2LCAxLCAKKyAgICAyMzMsIDEzNSwgMTQ2LCAxLCAyMjAsIDEwMiwgMTQ2LCAxLCAyMTgsIDIyMywgMTQ2LCAxLCAyMDYsIDE0NiwgMSwgMTYyLCAKKyAgICAxNDYsIDUsIDIyNywgMjA1LCAxNDYsIDUsIDI1MywgMTc1LCAxNDYsIDI1LCA1LCAyNTUsIDczLCAxNDYsIDI1LCA1LCA3MywgCisgICAgMTQ2LCAyNSwgNSwgMjM2LCAzMywgMTQ2LCAyNSwgNSwgNzAsIDE0NiwgMjUsIDUsIDIxNCwgMTE4LCAxNDYsIDI1LCA1LCAKKyAgICAxNDksIDE1MywgMTQ2LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTQ2LCAyNSwgNSwgNzUsIDE0NiwgMjUsIDUsIDI1NCwgCisgICAgMjAxLCAxNDYsIDI1LCA1LCA3NiwgMTQ2LCAyNSwgNSwgMjUzLCAxOTIsIDE0NiwgNSwgMjEzLCAxNTIsIDE0NiwgMSwgMjM0LCAKKyAgICAxMjQsIDIxNywgMTA1LCAxNDYsIDI1MywgMTkzLCAyMzMsIDIzLCA3OCwgMTQ2LCAxLCAyMjIsIDE3OSwgMTQ2LCAxLCAyMjMsIAorICAgIDM5LCAxNDYsIDEsIDIxMCwgMTY4LCAxNDYsIDEsIDE0OSwgMjIyLCAxODAsIDE0NiwgMSwgMTQ5LCAyMzIsIDE4NSwgMTQ2LCAKKyAgICAyNSwgNSwgMTQ5LCAxNTYsIDE0NiwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE0NiwgMjEsIDIxMCwgODYsIDE0NiwgMjEsIAorICAgIDExMCwgMTQ2LCAyMSwgMTA1LCAxNDYsIDIxLCAxNTgsIDE0NiwgMjEsIDE2MSwgMTQ2LCAyMSwgMTg5LCAxNDYsIDIxLCAKKyAgICAxOTQsIDE0NiwgMjEsIDE5OCwgMTQ2LCAyMSwgMTk1LCAxNDYsIDIxLCAyMDAsIDE0NiwgMSwgMjIzLCAxODgsIDIsIDIzMCwgCisgICAgMjI0LCAyNDcsIDI1NCwgMTQ2LCAxLCAyMjMsIDE4OCwgMiwgMjMyLCAxMDgsIDI0NywgMjU0LCAxNDYsIDIyMiwgMTE4LCAKKyAgICA3OCwgMTQ2LCAyMjIsIDExOCwgNTAsIDE0NiwgMjQ5LCA5OCwgMjI3LCAxOTcsIDExMCwgMTQ2LCAyNDksIDk4LCAyMjcsIAorICAgIDE5NywgMTA1LCAxNDYsIDI0OSwgOTgsIDIyNywgMTk3LCAxNTgsIDE0NiwgMjQ5LCA5OCwgMjI3LCAxOTcsIDE2MSwgMTQ2LCAKKyAgICAyNDksIDk4LCAyMjcsIDE5NywgMTIzLCAyMzMsIDE2LCAyMTYsIDIwMSwgMjE2LCAxOTYsIDI0OCwgNDgsIDE0NiwgMjQ5LCAKKyAgICA5OCwgMjQ4LCA0OSwgMjE5LCAxMTksIDE0NiwgMjM1LCAxNjEsIDE0NiwgMjQzLCAxMDMsIDc4LCAxODMsIDUsIDI1NCwgCisgICAgMjU0LCAyNTEsIDI0MywgMTgzLCA1LCAyNTEsIDI0MywgMTgzLCA1LCAyMTMsIDE0NywgMTgzLCAxLCA2MSwgMTgzLCAxLCAKKyAgICAyNTUsIDczLCAxODMsIDEsIDczLCAxODMsIDEsIDIzNiwgMzMsIDE4MywgMSwgNzAsIDE4MywgMSwgMjE0LCAxMTgsIDE4MywgCisgICAgMSwgMjQ1LCAyMDksIDE4MywgMSwgMjU0LCAyMDEsIDE4MywgMSwgMjI2LCAxODMsIDE4MywgMSwgMjUzLCAxOTIsIDE4MywgCisgICAgMSwgMTc2LCAxODMsIDEsIDIzNCwgMTMyLCAxODMsIDEsIDI0MywgMTM1LCAxODMsIDEsIDI0MiwgMjQ5LCAxODMsIDEsIAorICAgIDIyOSwgNzcsIDE4MywgMSwgMjUxLCAzMywgMTgzLCAxLCAyNTAsIDE1NywgMTgzLCAxLCAyMzUsIDE0MSwgMTgzLCAxLCAKKyAgICAyMzUsIDExNCwgMTgzLCAxLCAyMjcsIDE2NSwgMTgzLCAxLCAyMTUsIDE1NiwgMTgzLCAxLCAyMTUsIDE0NCwgMTgzLCAxLCAKKyAgICAyNDgsIDEzNSwgMTgzLCAxLCAyNDgsIDExOSwgMTgzLCAxLCAyMjgsIDExMCwgMTgzLCAxLCAyMTcsIDEwNSwgMTgzLCAxLCAKKyAgICAyMTYsIDIwOCwgMTgzLCAxLCAyNDgsIDIyMSwgMTgzLCAxLCAyNDgsIDI1LCAxODMsIDEsIDE5NywgMTgzLCAxLCAxOTAsIAorICAgIDE4MywgMSwgMjI1LCAxNDcsIDE4MywgMSwgMjUyLCAxOTEsIDE4MywgMSwgMjUyLCAxOCwgMTgzLCAxLCAxODQsIDE4MywgMSwgCisgICAgMTkxLCAxODMsIDEsIDIwNSwgMTgzLCAxLCAyMzMsIDEzNSwgMTgzLCAxLCAyMzIsIDE4NCwgMTgzLCAxLCAyMTQsIDI3LCAKKyAgICAxODMsIDEsIDIyMCwgMTAyLCAxODMsIDEsIDIwNiwgMTgzLCAxLCAxNjIsIDE4MywgNSwgMjI3LCAyMDUsIDE4MywgMjUsIDUsIAorICAgIDI1NSwgNzMsIDE4MywgMjUsIDUsIDczLCAxODMsIDI1LCA1LCAyMzYsIDMzLCAxODMsIDI1LCA1LCA3MCwgMTgzLCAyNSwgNSwgCisgICAgMjE0LCAxMTgsIDE4MywgMjUsIDUsIDI0NSwgMjA5LCAxODMsIDI1LCA1LCAyNTQsIDIwMSwgMTgzLCAyNSwgNSwgMjI2LCAKKyAgICAxODMsIDE4MywgMjUsIDUsIDI1MywgMTkyLCAxODMsIDUsIDIxMywgMTUyLCAxODMsIDUsIDIxNCwgMjE4LCAxODMsIDEsIAorICAgIDIzNCwgMTE1LCAxODMsIDEsIDI0MiwgMjI2LCAxODMsIDEsIDIxMCwgMTE2LCAxODMsIDEsIDIyMiwgMTc5LCAxODMsIDEsIAorICAgIDI0NCwgMTk2LCAxODMsIDIxLCAyMTAsIDg2LCAxODMsIDIxLCAxMTAsIDE4MywgMjEsIDEwNSwgMTgzLCAyMSwgMTU4LCAKKyAgICAxODMsIDIxLCAxNjEsIDE4MywgMjEsIDE4OSwgMTgzLCAyMSwgMTk0LCAxODMsIDIxLCAxOTgsIDE4MywgMjEsIDE5NSwgCisgICAgMTgzLCAyMSwgMjAwLCAxODMsIDIxNiwgNzQsIDE4MywgMjU0LCAyNTMsIDE4MywgMjM1LCAxNzgsIDE4MywgMjE0LCAxNDYsIAorICAgIDE4MywgMjQ1LCAxODEsIDIyNiwgMTg4LCAxODMsIDUsIDIxMSwgNzgsIDE3MSwgNSwgMjUwLCAyNTUsIDE3MSwgNSwgMjU0LCAKKyAgICA3NSwgMTcxLCA1LCAyMTMsIDE0NywgMTcxLCAxLCA2MSwgMTcxLCAxLCAyNTUsIDczLCAxNzEsIDEsIDczLCAxNzEsIDEsIAorICAgIDIzNiwgMzMsIDE3MSwgMSwgNzAsIDE3MSwgMSwgMjE0LCAxMTgsIDE3MSwgMSwgMTQ5LCAxNTMsIDE3MSwgMSwgMTQ5LCAKKyAgICAxNTYsIDE3MSwgMjUsIDI1MSwgMiwgNzUsIDE3MSwgMSwgNzUsIDE3MSwgMSwgMjU0LCAyMDEsIDE3MSwgMjUsIDI1MSwgMiwgCisgICAgNzYsIDE3MSwgMSwgNzYsIDE3MSwgMSwgMjUzLCAxOTIsIDE3MSwgMSwgMTc2LCAxNzEsIDEsIDIzNCwgMTMyLCAxNzEsIDEsIAorICAgIDI0MywgMTM1LCAxNzEsIDEsIDI0MiwgMjQ5LCAxNzEsIDEsIDIyOSwgNzcsIDE3MSwgMSwgMjUxLCAzMywgMTcxLCAxLCAKKyAgICAyNTAsIDE1NywgMTcxLCAxLCAyMzUsIDE0MSwgMTcxLCAxLCAyMzUsIDExNCwgMTcxLCAxLCAyMjcsIDE2NSwgMTcxLCAxLCAKKyAgICAyMTUsIDE1NiwgMTcxLCAxLCAyMTUsIDE0NCwgMTcxLCAxLCAyNDgsIDEzNSwgMTcxLCAxLCAyNDgsIDExOSwgMTcxLCAxLCAKKyAgICAyMjgsIDExMCwgMTcxLCAxLCAyMTcsIDEwNSwgMTcxLCAxLCAyMTYsIDIwOCwgMTcxLCAxLCAyNDgsIDIyMSwgMTcxLCAxLCAKKyAgICAyNDgsIDI1LCAxNzEsIDEsIDE5NywgMTcxLCAxLCAxOTAsIDE3MSwgMSwgMjI1LCAxNDcsIDE3MSwgMSwgMjUyLCAxOTEsIAorICAgIDE3MSwgMSwgMjUyLCAxOCwgMTcxLCAxLCAxODQsIDE3MSwgMSwgMTkxLCAxNzEsIDEsIDIwNSwgMTcxLCAxLCAyMzMsIDEzNSwgCisgICAgMTcxLCAxLCAyMzIsIDE4NCwgMTcxLCAxLCAyMTQsIDI3LCAxNzEsIDEsIDIyMCwgMTAyLCAxNzEsIDEsIDIxOCwgMjIzLCAKKyAgICAxNzEsIDEsIDIwNiwgMTcxLCAxLCAxNjIsIDE3MSwgNSwgMjI3LCAyMDUsIDE3MSwgNSwgMjUzLCAxNzUsIDE3MSwgMjUsIDUsIAorICAgIDI1NSwgNzMsIDE3MSwgMjUsIDUsIDczLCAxNzEsIDI1LCA1LCAyMzYsIDMzLCAxNzEsIDI1LCA1LCA3MCwgMTcxLCAyNSwgNSwgCisgICAgMjE0LCAxMTgsIDE3MSwgMjUsIDUsIDE0OSwgMTUzLCAxNzEsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNzEsIDI1LCA1LCAKKyAgICAyNTEsIDIsIDc1LCAxNzEsIDI1LCA1LCA3NSwgMTcxLCAyNSwgNSwgMjU0LCAyMDEsIDE3MSwgMjUsIDUsIDI1MSwgMiwgNzYsIAorICAgIDE3MSwgMjUsIDUsIDc2LCAxNzEsIDI1LCA1LCAyNTMsIDE5MiwgMTcxLCA1LCAyMTMsIDE1MiwgMTcxLCAyMjYsIDIwNCwgCisgICAgMTcxLCAxLCAxNDksIDIyMiwgMTgwLCAxNzEsIDEsIDE0OSwgMjMyLCAxODUsIDE3MSwgMjUsIDUsIDE0OSwgMTU2LCAxNzEsIAorICAgIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNzEsIDIxLCAyMTAsIDg2LCAxNzEsIDIxLCAxMTAsIDE3MSwgMjEsIDEwNSwgMTcxLCAKKyAgICAyMSwgMTU4LCAxNzEsIDIxLCAxNjEsIDE3MSwgMjEsIDE4OSwgMTcxLCAyMSwgMTk0LCAxNzEsIDIxLCAxOTgsIDE3MSwgMjEsIAorICAgIDE5NSwgMTcxLCAyMSwgMjAwLCAxNzEsIDI1NSwgMjEsIDUwLCAxNzEsIDIyMiwgMTE4LCA1MCwgMTU3LCA1LCAyNTAsIDI1NSwgCisgICAgMTU3LCA1LCAyNTQsIDc1LCAxNTcsIDUsIDIxMywgMTQ3LCAxNTcsIDEsIDYxLCAxNTcsIDEsIDI1NSwgNzMsIDE1NywgMSwgCisgICAgNzMsIDE1NywgMSwgMjM2LCAzMywgMTU3LCAxLCA3MCwgMTU3LCAxLCAyMTQsIDExOCwgMTU3LCAxLCAxNDksIDE1MywgMTU3LCAKKyAgICAxLCAxNDksIDE1NiwgMTU3LCAxLCA3NSwgMTU3LCAxLCAyNTQsIDIwMSwgMTU3LCAxLCA3NiwgMTU3LCAxLCAyNTMsIDE5MiwgCisgICAgMTU3LCAxLCAxNzYsIDE1NywgMSwgMjM0LCAxMzIsIDE1NywgMSwgMjQzLCAxMzUsIDE1NywgMSwgMjQyLCAyNDksIDE1NywgCisgICAgMSwgMjI5LCA3NywgMTU3LCAxLCAyNTEsIDMzLCAxNTcsIDEsIDI1MCwgMTU3LCAxNTcsIDEsIDIzNSwgMTQxLCAxNTcsIDEsIAorICAgIDIzNSwgMTE0LCAxNTcsIDEsIDIyNywgMTY1LCAxNTcsIDEsIDIxNSwgMTU2LCAxNTcsIDEsIDIxNSwgMTQ0LCAxNTcsIDEsIAorICAgIDI0OCwgMTM1LCAxNTcsIDEsIDI0OCwgMTE5LCAxNTcsIDEsIDIyOCwgMTEwLCAxNTcsIDEsIDIxNywgMTA1LCAxNTcsIDEsIAorICAgIDIxNiwgMjA4LCAxNTcsIDEsIDI0OCwgMjIxLCAxNTcsIDEsIDI0OCwgMjUsIDE1NywgMSwgMTk3LCAxNTcsIDEsIDE5MCwgCisgICAgMTU3LCAxLCAyMjUsIDE0NywgMTU3LCAxLCAyNTIsIDE5MSwgMTU3LCAxLCAyNTIsIDE4LCAxNTcsIDEsIDE4NCwgMTU3LCAxLCAKKyAgICAxOTEsIDE1NywgMSwgMjA1LCAxNTcsIDEsIDIzMywgMTM1LCAxNTcsIDEsIDIzMiwgMTg0LCAxNTcsIDEsIDIxNCwgMjcsIAorICAgIDE1NywgMSwgMjIwLCAxMDIsIDE1NywgMSwgMjE4LCAyMjMsIDE1NywgMSwgMjA2LCAxNTcsIDEsIDE2MiwgMTU3LCA1LCAKKyAgICAyMjcsIDIwNSwgMTU3LCA1LCAyNTMsIDE3NSwgMTU3LCAyNSwgNSwgMjU1LCA3MywgMTU3LCAyNSwgNSwgNzMsIDE1NywgMjUsIAorICAgIDUsIDIzNiwgMzMsIDE1NywgMjUsIDUsIDcwLCAxNTcsIDI1LCA1LCAyMTQsIDExOCwgMTU3LCAyNSwgNSwgMTQ5LCAxNTMsIAorICAgIDE1NywgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDE1NywgMjUsIDUsIDc1LCAxNTcsIDI1LCA1LCAyNTQsIDIwMSwgMTU3LCAyNSwgCisgICAgNSwgNzYsIDE1NywgMjUsIDUsIDI1MywgMTkyLCAxNTcsIDUsIDIxMywgMTUyLCAxNTcsIDI1NCwgMjAyLCAyMzMsIDIzLCAKKyAgICA3OCwgMTU3LCAyNTMsIDE5MywgMjMzLCAyMywgNzgsIDE1NywgMSwgMjIyLCAxNzksIDE1NywgMSwgMjIzLCAzOSwgMTU3LCAKKyAgICAxLCAyMTAsIDE2OCwgMTU3LCAxLCAxNDksIDIyMiwgMTgwLCAxNTcsIDEsIDE0OSwgMjMyLCAxODUsIDE1NywgMjUsIDUsIAorICAgIDE0OSwgMTU2LCAxNTcsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNTcsIDIxLCAyMTAsIDg2LCAxNTcsIDIxLCAxMTAsIDE1NywgCisgICAgMjEsIDEwNSwgMTU3LCAyMSwgMTU4LCAxNTcsIDIxLCAxNjEsIDE1NywgMjEsIDE4OSwgMTU3LCAyMSwgMTk0LCAxNTcsIDIxLCAKKyAgICAxOTgsIDE1NywgMjEsIDE5NSwgMTU3LCAyMSwgMjAwLCAxNTcsIDIzNSwgMTYxLCAxNTcsIDEsIDIxMiwgNjUsIDE1NywgCisgICAgMjQ0LCAyLCAxMjMsIDIyNCwgMjEsIDE1NywgMjQ0LCAyLCAxMjMsIDI0MiwgMjcsIDE1NywgMjQ0LCAyLCAxMzQsIDIyNCwgCisgICAgMTksIDE1NywgMjQ0LCAyLCAxMjMsIDIxOSwgMTE3LCAxNTcsIDI0NCwgMiwgMTIzLCAyNDUsIDE4OCwgMTU3LCAyNDQsIDIsIAorICAgIDEzNCwgMjE5LCAxMTYsIDM2LCA1LCAyNTQsIDc1LCAzNiwgNSwgMjEzLCAxNDcsIDM2LCAxLCA2MSwgMzYsIDEsIDI1NSwgCisgICAgNzMsIDM2LCAxLCA3MywgMzYsIDEsIDIzNiwgMzMsIDM2LCAxLCA3MCwgMzYsIDEsIDIxNCwgMTE4LCAzNiwgMSwgNzUsIDM2LCAKKyAgICAxLCAyNDUsIDIwOSwgMzYsIDEsIDI1NCwgMjAxLCAzNiwgMSwgNzYsIDM2LCAxLCAyMjYsIDE4MywgMzYsIDEsIDI1MywgCisgICAgMTkyLCAzNiwgMSwgMTc2LCAzNiwgMSwgMjI5LCA3NywgMzYsIDEsIDI1MSwgMzMsIDM2LCAxLCAyMzUsIDE0MSwgMzYsIDEsIAorICAgIDIyNywgMTY1LCAzNiwgMSwgMjE1LCAxNTYsIDM2LCAxLCAyMjgsIDExMCwgMzYsIDEsIDIxNywgMTA1LCAzNiwgMSwgMTk3LCAKKyAgICAzNiwgMSwgMjI4LCA5MiwgMzYsIDEsIDE5MCwgMzYsIDEsIDE4NCwgMzYsIDEsIDE5MSwgMzYsIDEsIDIwNSwgMzYsIDEsIAorICAgIDIyMiwgMTc5LCAzNiwgMSwgMjMzLCAxMzUsIDM2LCAxLCAyMzIsIDE4NCwgMzYsIDEsIDIzMiwgMTc1LCAzNiwgMSwgMjE0LCAKKyAgICAyNywgMzYsIDEsIDIyMCwgMTAyLCAzNiwgMSwgMjE4LCAyMjMsIDM2LCAxLCAyMDYsIDM2LCAxLCAxNjIsIDM2LCAyNSwgNSwgCisgICAgMjU1LCA3MywgMzYsIDI1LCA1LCA3MywgMzYsIDI1LCA1LCAyMzYsIDMzLCAzNiwgMjUsIDUsIDcwLCAzNiwgMjUsIDUsIAorICAgIDIxNCwgMTE4LCAzNiwgMjUsIDUsIDc1LCAzNiwgMjUsIDUsIDI0NSwgMjA5LCAzNiwgMjUsIDUsIDI1NCwgMjAxLCAzNiwgCisgICAgMjUsIDUsIDc2LCAzNiwgMjUsIDUsIDIyNiwgMTgzLCAzNiwgMjUsIDUsIDI1MywgMTkyLCAzNiwgNSwgMjEzLCAxNTIsIDM2LCAKKyAgICAyMjYsIDIwNCwgMzYsIDI1MywgMTkzLCAyMzMsIDIzLCA3OCwgMzYsIDIxLCAyMTAsIDg2LCAzNiwgMjEsIDExMCwgMzYsIAorICAgIDIxLCAxMDUsIDM2LCAyMSwgMTU4LCAzNiwgMjEsIDE2MSwgMzYsIDIxLCAxODksIDM2LCAyMSwgMTk0LCAzNiwgMjEsIDE5OCwgCisgICAgMzYsIDIxLCAxOTUsIDM2LCAyMSwgMjAwLCAzNiwgNTQsIDIxNiwgMjQ3LCAzNiwgNTQsIDEyMywgMjQwLCAyMTAsIDM2LCAKKyAgICA1NCwgMTIzLCAyMTYsIDE0NywgMzYsIDI0OCwgMTQ2LCA1MCwgMzYsIDIzMCwgMTM1LCA1MCwgMzYsIDIxMSwgNDUsIDUwLCAKKyAgICAzNiwgMjQ4LCA4NywgNTAsIDM2LCAyNDksIDEzOSwgNTAsIDM2LCAyNTMsIDIzOCwgNzcsIDUwLCAzNiwgMjIyLCAxMTgsIAorICAgIDUwLCAzNiwgNTQsIDUwLCAxNDgsIDUsIDI1MCwgMjU1LCAxNDgsIDUsIDI1NCwgNzUsIDE0OCwgNSwgMjEzLCAxNDcsIDE0OCwgCisgICAgMSwgNjEsIDE0OCwgMSwgMjU1LCA3MywgMTQ4LCAxLCA3MywgMTQ4LCAxLCAyMzYsIDMzLCAxNDgsIDEsIDcwLCAxNDgsIDEsIAorICAgIDIxNCwgMTE4LCAxNDgsIDEsIDE0OSwgMTUzLCAxNDgsIDEsIDE0OSwgMTU2LCAxNDgsIDEsIDc1LCAxNDgsIDEsIDI0NSwgCisgICAgMjA5LCAxNDgsIDEsIDI1NCwgMjAxLCAxNDgsIDEsIDc2LCAxNDgsIDEsIDIyNiwgMTgzLCAxNDgsIDEsIDI1MywgMTkyLCAKKyAgICAxNDgsIDEsIDE3NiwgMTQ4LCAxLCAyMzQsIDEzMiwgMTQ4LCAxLCAyNDMsIDEzNSwgMTQ4LCAxLCAyNDIsIDI0OSwgMTQ4LCAKKyAgICAxLCAyMjksIDc3LCAxNDgsIDEsIDI1MSwgMzMsIDE0OCwgMSwgMjUwLCAxNTcsIDE0OCwgMSwgMjM1LCAxNDEsIDE0OCwgMSwgCisgICAgMjM1LCAxMTQsIDE0OCwgMSwgMjI3LCAxNjUsIDE0OCwgMSwgMjE1LCAxNTYsIDE0OCwgMSwgMjE1LCAxNDQsIDE0OCwgMSwgCisgICAgMjQ4LCAxMzUsIDE0OCwgMSwgMjQ4LCAxMTksIDE0OCwgMSwgMjI4LCAxMTAsIDE0OCwgMSwgMjE3LCAxMDUsIDE0OCwgMSwgCisgICAgMjE2LCAyMDgsIDE0OCwgMSwgMjQ4LCAyMjEsIDE0OCwgMSwgMjQ4LCAyNSwgMTQ4LCAxLCAxOTcsIDE0OCwgMSwgMTkwLCAKKyAgICAxNDgsIDEsIDIyNSwgMTQ3LCAxNDgsIDEsIDI1MiwgMTkxLCAxNDgsIDEsIDI1MiwgMTgsIDE0OCwgMSwgMTg0LCAxNDgsIDEsIAorICAgIDE5MSwgMTQ4LCAxLCAyMDUsIDE0OCwgMSwgMjIyLCAxNzksIDE0OCwgMSwgMjMzLCAxMzUsIDE0OCwgMSwgMjMyLCAxODQsIAorICAgIDE0OCwgMSwgMjE0LCAyNywgMTQ4LCAxLCAyMjAsIDEwMiwgMTQ4LCAxLCAyMTgsIDIyMywgMTQ4LCAxLCAyMDYsIDE0OCwgMSwgCisgICAgMTYyLCAxNDgsIDUsIDI1MywgMTc1LCAxNDgsIDI1LCA1LCAyNTUsIDczLCAxNDgsIDI1LCA1LCA3MywgMTQ4LCAyNSwgNSwgCisgICAgMjM2LCAzMywgMTQ4LCAyNSwgNSwgNzAsIDE0OCwgMjUsIDUsIDIxNCwgMTE4LCAxNDgsIDI1LCA1LCAxNDksIDE1MywgMTQ4LCAKKyAgICAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTQ4LCAyNSwgNSwgNzUsIDE0OCwgMjUsIDUsIDI0NSwgMjA5LCAxNDgsIDI1LCA1LCAKKyAgICAyNTQsIDIwMSwgMTQ4LCAyNSwgNSwgNzYsIDE0OCwgMjUsIDUsIDIyNiwgMTgzLCAxNDgsIDI1LCA1LCAyNTMsIDE5MiwgCisgICAgMTQ4LCA1LCAyMTMsIDE1MiwgMTQ4LCAyMzMsIDIzLCA3OCwgMTQ4LCAyNTQsIDIwMiwgMjMzLCAyMywgNzgsIDE0OCwgMSwgCisgICAgMjE1LCAxODMsIDE0OCwgMSwgMjQ2LCAzOCwgMTQ4LCAxLCAxNDksIDIyMiwgMTgwLCAxNDgsIDEsIDE0OSwgMjMyLCAxODUsIAorICAgIDE0OCwgMjUsIDUsIDE0OSwgMTU2LCAxNDgsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNDgsIDIxLCAyMTAsIDg2LCAxNDgsIAorICAgIDIxLCAxMTAsIDE0OCwgMjEsIDEwNSwgMTQ4LCAyMSwgMTU4LCAxNDgsIDIxLCAxNjEsIDE0OCwgMjEsIDE4OSwgMTQ4LCAyMSwgCisgICAgMTk0LCAxNDgsIDIxLCAxOTgsIDE0OCwgMjEsIDE5NSwgMTQ4LCAyMSwgMjAwLCAxNDgsIDI0NCwgMiwgMjEsIDIxMCwgODcsIAorICAgIDMxLCAyMjYsIDIzNywgMjI0LCAyMjMsIDY0LCAxNjEsIDE0OCwgMjQ0LCAyLCAyMSwgMTIzLCAzMSwgMjI2LCAyMzcsIDIyNCwgCisgICAgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDExMywgMzEsIDIyNiwgMjM3LCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAKKyAgICAyNDQsIDIsIDIxLCAxMzQsIDMxLCAyMjYsIDIzNywgMjI0LCAyMjMsIDY0LCAxNjEsIDE0OCwgMjQ0LCAyLCAyMSwgMTIzLCAKKyAgICAzMSwgMjQ1LCA0MiwgMjI0LCAyMjMsIDY0LCAxNjEsIDE0OCwgMjQ0LCAyLCAyMSwgMTEzLCAzMSwgMjQ1LCA0MiwgMjI0LCAKKyAgICAyMjMsIDY0LCAxNjEsIDE0OCwgMjQ0LCAyLCAyMSwgMTM0LCAzMSwgMjQ1LCA0MiwgMjI0LCAyMjMsIDY0LCAxNjEsIDE0OCwgCisgICAgNSwgMjE1LCA4NCwgMTY1LCA1LCAyNTQsIDc1LCAxNjUsIDUsIDIxMywgMTQ3LCAxNjUsIDEsIDYxLCAxNjUsIDEsIDI1NSwgCisgICAgNzMsIDE2NSwgMSwgNzMsIDE2NSwgMSwgMjM2LCAzMywgMTY1LCAxLCA3MCwgMTY1LCAxLCAyMTQsIDExOCwgMTY1LCAxLCAKKyAgICAxNDksIDE1MywgMTY1LCAxLCAxNDksIDE1NiwgMTY1LCAxLCA3NSwgMTY1LCAxLCAyNDUsIDIwOSwgMTY1LCAxLCAyNTQsIAorICAgIDIwMSwgMTY1LCAxLCA3NiwgMTY1LCAxLCAyMjYsIDE4MywgMTY1LCAxLCAyNTMsIDE5MiwgMTY1LCAxLCAxNzYsIDE2NSwgMSwgCisgICAgMjM0LCAxMzIsIDE2NSwgMSwgMjQzLCAxMzUsIDE2NSwgMSwgMjQyLCAyNDksIDE2NSwgMSwgMjI5LCA3NywgMTY1LCAxLCAKKyAgICAyNTEsIDMzLCAxNjUsIDEsIDI1MCwgMTU3LCAxNjUsIDEsIDIzNSwgMTQxLCAxNjUsIDEsIDIzNSwgMTE0LCAxNjUsIDEsIAorICAgIDIyNywgMTY1LCAxNjUsIDEsIDIxNSwgMTU2LCAxNjUsIDEsIDIxNSwgMTQ0LCAxNjUsIDEsIDI0OCwgMTM1LCAxNjUsIDEsIAorICAgIDI0OCwgMTE5LCAxNjUsIDEsIDIyOCwgMTEwLCAxNjUsIDEsIDIxNywgMTA1LCAxNjUsIDEsIDIxNiwgMjA4LCAxNjUsIDEsIAorICAgIDI0OCwgMjIxLCAxNjUsIDEsIDI0OCwgMjUsIDE2NSwgMSwgMTk3LCAxNjUsIDEsIDE5MCwgMTY1LCAxLCAyMjUsIDE0NywgCisgICAgMTY1LCAxLCAyNTIsIDE5MSwgMTY1LCAxLCAyNTIsIDE4LCAxNjUsIDEsIDE4NCwgMTY1LCAxLCAxOTEsIDE2NSwgMSwgMjA1LCAKKyAgICAxNjUsIDEsIDIyMiwgMTc5LCAxNjUsIDEsIDIzMywgMTM1LCAxNjUsIDEsIDIzMiwgMTg0LCAxNjUsIDEsIDIxNCwgMjcsIAorICAgIDE2NSwgMSwgMjIwLCAxMDIsIDE2NSwgMSwgMjE4LCAyMjMsIDE2NSwgMSwgMjA2LCAxNjUsIDEsIDE2MiwgMTY1LCA1LCAKKyAgICAyMjcsIDIwNSwgMTY1LCA1LCAyNTMsIDE3NSwgMTY1LCAyNSwgNSwgMjU1LCA3MywgMTY1LCAyNSwgNSwgNzMsIDE2NSwgMjUsIAorICAgIDUsIDIzNiwgMzMsIDE2NSwgMjUsIDUsIDcwLCAxNjUsIDI1LCA1LCAyMTQsIDExOCwgMTY1LCAyNSwgNSwgMTQ5LCAxNTMsIAorICAgIDE2NSwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDE2NSwgMjUsIDUsIDc1LCAxNjUsIDI1LCA1LCAyNDUsIDIwOSwgMTY1LCAyNSwgCisgICAgNSwgMjU0LCAyMDEsIDE2NSwgMjUsIDUsIDc2LCAxNjUsIDI1LCA1LCAyMjYsIDE4MywgMTY1LCAyNSwgNSwgMjUzLCAxOTIsIAorICAgIDE2NSwgNSwgMjEzLCAxNTIsIDE2NSwgMjMzLCAyMywgNzgsIDE2NSwgMjU0LCAyMDIsIDIzMywgMjMsIDc4LCAxNjUsIDEsIAorICAgIDI0NCwgMTk2LCAxNjUsIDEsIDE0OSwgMjIyLCAxODAsIDE2NSwgMSwgMTQ5LCAyMzIsIDE4NSwgMTY1LCAyNSwgNSwgMTQ5LCAKKyAgICAxNTYsIDE2NSwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE2NSwgMjEsIDIxMCwgODYsIDE2NSwgMjEsIDExMCwgMTY1LCAyMSwgCisgICAgMTA1LCAxNjUsIDIxLCAxNTgsIDE2NSwgMjEsIDE2MSwgMTY1LCAyMSwgMTg5LCAxNjUsIDIxLCAxOTQsIDE2NSwgMjEsIAorICAgIDE5OCwgMTY1LCAyMSwgMTk1LCAxNjUsIDIxLCAyMDAsIDE2NSwgNSwgMjM1LCAxMDIsIDE2NSwgNSwgMjE0LCAxNjEsIDEzNiwgCisgICAgNSwgMjU0LCA3NSwgMTM2LCA1LCAyMTMsIDE0NywgMTM2LCAxLCA2MSwgMTM2LCAxLCAyNTUsIDczLCAxMzYsIDEsIDczLCAKKyAgICAxMzYsIDEsIDIzNiwgMzMsIDEzNiwgMSwgNzAsIDEzNiwgMSwgMjE0LCAxMTgsIDEzNiwgMSwgMTQ5LCAxNTMsIDEzNiwgMSwgCisgICAgMTQ5LCAxNTYsIDEzNiwgMSwgNzUsIDEzNiwgMSwgMjQ1LCAyMDksIDEzNiwgMSwgMjU0LCAyMDEsIDEzNiwgMSwgNzYsIAorICAgIDEzNiwgMSwgMjI2LCAxODMsIDEzNiwgMSwgMjUzLCAxOTIsIDEzNiwgMSwgMTc2LCAxMzYsIDEsIDIzNCwgMTMyLCAxMzYsIAorICAgIDEsIDI0MywgMTM1LCAxMzYsIDEsIDI0MiwgMjQ5LCAxMzYsIDEsIDIyOSwgNzcsIDEzNiwgMSwgMjUxLCAzMywgMTM2LCAxLCAKKyAgICAyNTAsIDE1NywgMTM2LCAxLCAyMzUsIDE0MSwgMTM2LCAxLCAyMzUsIDExNCwgMTM2LCAxLCAyMjcsIDE2NSwgMTM2LCAxLCAKKyAgICAyMTUsIDE1NiwgMTM2LCAxLCAyMTUsIDE0NCwgMTM2LCAxLCAyNDgsIDEzNSwgMTM2LCAxLCAyNDgsIDExOSwgMTM2LCAxLCAKKyAgICAyMjgsIDExMCwgMTM2LCAxLCAyMTcsIDEwNSwgMTM2LCAxLCAyMTYsIDIwOCwgMTM2LCAxLCAyNDgsIDIyMSwgMTM2LCAxLCAKKyAgICAyNDgsIDI1LCAxMzYsIDEsIDE5NywgMTM2LCAxLCAyMjgsIDkyLCAxMzYsIDEsIDE5MCwgMTM2LCAxLCAyMjUsIDE0NywgCisgICAgMTM2LCAxLCAyNTIsIDE5MSwgMTM2LCAxLCAyNTIsIDE4LCAxMzYsIDEsIDE4NCwgMTM2LCAxLCAxOTEsIDEzNiwgMSwgMjA1LCAKKyAgICAxMzYsIDEsIDIyMiwgMTc5LCAxMzYsIDEsIDIzMywgMTM1LCAxMzYsIDEsIDIzMiwgMTg0LCAxMzYsIDEsIDIzMiwgMTc1LCAKKyAgICAxMzYsIDEsIDIxNCwgMjcsIDEzNiwgMSwgMjIwLCAxMDIsIDEzNiwgMSwgMjE4LCAyMjMsIDEzNiwgMSwgMjA2LCAxMzYsIDEsIAorICAgIDE2MiwgMTM2LCAxLCAyMTUsIDEyNSwgMTM2LCA1LCAyNTMsIDE3NSwgMTM2LCAyNSwgNSwgMjU1LCA3MywgMTM2LCAyNSwgNSwgCisgICAgNzMsIDEzNiwgMjUsIDUsIDIzNiwgMzMsIDEzNiwgMjUsIDUsIDcwLCAxMzYsIDI1LCA1LCAyMTQsIDExOCwgMTM2LCAyNSwgCisgICAgNSwgMTQ5LCAxNTMsIDEzNiwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDEzNiwgMjUsIDUsIDc1LCAxMzYsIDI1LCA1LCAyNDUsIAorICAgIDIwOSwgMTM2LCAyNSwgNSwgMjU0LCAyMDEsIDEzNiwgMjUsIDUsIDc2LCAxMzYsIDI1LCA1LCAyMjYsIDE4MywgMTM2LCAyNSwgCisgICAgNSwgMjUzLCAxOTIsIDEzNiwgNSwgMjEzLCAxNTIsIDEzNiwgMSwgNTksIDIyMywgNzMsIDEzNiwgMjUzLCAxOTMsIDIzMywgCisgICAgMjMsIDc4LCAxMzYsIDEsIDE0OSwgMjIyLCAxODAsIDEzNiwgMSwgMTQ5LCAyMzIsIDE4NSwgMTM2LCAyNSwgNSwgMTQ5LCAKKyAgICAxNTYsIDEzNiwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDEzNiwgMjEsIDIxMCwgODYsIDEzNiwgMjEsIDExMCwgMTM2LCAyMSwgCisgICAgMTA1LCAxMzYsIDIxLCAxNTgsIDEzNiwgMjEsIDE2MSwgMTM2LCAyMSwgMTg5LCAxMzYsIDIxLCAxOTQsIDEzNiwgMjEsIAorICAgIDE5OCwgMTM2LCAyMSwgMTk1LCAxMzYsIDIxLCAyMDAsIDEzNiwgNTQsIDIxNiwgMjQ3LCAxMzYsIDU0LCAxMjMsIDI0MCwgCisgICAgMjEwLCAxMzYsIDU0LCAxMjMsIDIxNiwgMTQ3LCAxMzYsIDI0NCwgMiwgMTIzLCAyMjQsIDIxLCAxMzYsIDI0NCwgMiwgMTIzLCAKKyAgICAyNDIsIDI3LCAxMzYsIDI0NCwgMiwgMTM0LCAyMjQsIDE5LCAxMzYsIDI0OCwgMTUwLCA3OCwgMTM2LCAxLCAyNTAsIDk5LCAKKyAgICAyMjgsIDExMSwgMTM2LCAxLCAyNTAsIDk5LCAyMzAsIDI1LCAxMzYsIDEsIDI1MCwgOTksIDIyMiwgMTgwLCAxMzYsIDEsIAorICAgIDI1MCwgOTksIDE1NiwgMTM2LCAxLCAyNTAsIDk5LCAyMzIsIDE4NSwgMTM2LCAxLCAyNTAsIDk5LCAyMzUsIDIzLCAxNzUsIAorICAgIDUsIDI1NCwgNzQsIDE3NSwgNSwgMjEzLCAxNDYsIDE3NSwgMSwgMjUzLCAxNjUsIDE3NSwgMSwgMjU1LCAyNywgMTc1LCAxLCAKKyAgICAyNTQsIDIyMywgMTc1LCAxLCAyNTQsIDIzOCwgMTc1LCAxLCAyMzUsIDE1MSwgMTc1LCAxLCAyMzYsIDMyLCAxNzUsIDEsIAorICAgIDIxNCwgMTEwLCAxNzUsIDEsIDIxNCwgMTEyLCAxNzUsIDEsIDIzNSwgMTczLCAxNzUsIDEsIDIzNSwgMTc0LCAxNzUsIDEsIAorICAgIDIzNiwgMTgsIDE3NSwgMSwgMjM2LCAyMCwgMTc1LCAxLCAyNDUsIDE3LCAxNzUsIDEsIDI0NSwgMjA0LCAxNzUsIDEsIDI1NCwgCisgICAgMTg4LCAxNzUsIDEsIDIyNiwgMTA4LCAxNzUsIDEsIDIyNiwgMTc3LCAxNzUsIDEsIDI1MywgMTc4LCAxNzUsIDEsIDI1NCwgCisgICAgMTQ2LCAyMzQsIDE4NywgMTc1LCAxLCAyMzEsIDIwOSwgMjM0LCAxODcsIDE3NSwgMSwgMjU0LCAxNDYsIDI0MywgODIsIAorICAgIDE3NSwgMSwgMjMxLCAyMDksIDI0MywgODIsIDE3NSwgMSwgMjM0LCAyMjksIDIyOSwgMjIyLCAxNzUsIDEsIDIyMSwgMjM2LCAKKyAgICAyNDMsIDgyLCAxNzUsIDEsIDI1NCwgMTQ2LCAyNTAsIDIxNiwgMTc1LCAxLCAyMzEsIDIwOSwgMjUwLCAyMTYsIDE3NSwgMSwgCisgICAgMjU0LCAxNDYsIDIzNSwgMTI3LCAxNzUsIDEsIDIzMSwgMjA5LCAyMzUsIDEyNywgMTc1LCAxLCAyMTcsIDk4LCAyMjksIAorICAgIDIyMiwgMTc1LCAxLCAyMTcsIDk4LCAyMjEsIDIzNSwgMjI5LCAyMjMsIDE3NSwgMSwgMjIxLCAyMzYsIDIzNSwgMTI3LCAKKyAgICAxNzUsIDEsIDI1NCwgMTQ2LCAyMTUsIDE1MiwgMTc1LCAxLCAyMzEsIDIwOSwgMjE1LCAxNTIsIDE3NSwgMSwgMjU0LCAxNDYsIAorICAgIDI0OCwgMTI2LCAxNzUsIDEsIDIzMSwgMjA5LCAyNDgsIDEyNiwgMTc1LCAxLCAyMzAsIDUzLCAyMjksIDE4MCwgMTc1LCAxLCAKKyAgICAyMjEsIDIzNiwgMjQ4LCAxMjYsIDE3NSwgMSwgMjU0LCAxNDYsIDIxNywgMzAsIDE3NSwgMSwgMjMxLCAyMDksIDIxNywgMzAsIAorICAgIDE3NSwgMSwgMjU0LCAxNDYsIDI0OCwgMTQ0LCAxNzUsIDEsIDIzMSwgMjA5LCAyNDgsIDE0NCwgMTc1LCAxLCAyNDgsIDE3NCwgCisgICAgMjI5LCAxODAsIDE3NSwgMSwgMjIxLCAyMzYsIDI0OCwgMTQ0LCAxNzUsIDEsIDI1NCwgMTQ2LCAyMjUsIDIyOCwgMTc1LCAxLCAKKyAgICAyMzEsIDIwOSwgMjI1LCAyMjgsIDE3NSwgMSwgMjU0LCAxNDYsIDI1MiwgMTEyLCAxNzUsIDEsIDIzMSwgMjA5LCAyNTIsIAorICAgIDExMiwgMTc1LCAxLCAyMzEsIDEzMSwgMTc1LCAxLCAyNTQsIDEzMSwgMjUyLCAxMTIsIDE3NSwgMSwgMjExLCA1MSwgMTc1LCAKKyAgICAxLCAyMjMsIDEzMywgMTc1LCAxLCAyNDgsIDE3NCwgMjMzLCA2NywgMTc1LCAxLCAyMTQsIDEsIDE3NSwgMSwgMjE3LCA5OCwgCisgICAgMjIxLCAyMTAsIDE3NSwgMSwgMjMwLCA1MywgMjIxLCAyMTAsIDE3NSwgMSwgMjQ4LCAxNzQsIDIyMSwgMjEwLCAxNzUsIDEsIAorICAgIDI0MSwgMjQyLCAxNzUsIDEsIDIzMCwgNTMsIDIzMywgNjcsIDE3NSwgMSwgMjQ0LCAxNTYsIDE3NSwgNSwgMjU0LCAxNzcsIAorICAgIDE3NSwgMjUsIDUsIDI1NCwgMjMzLCAxNzUsIDI1LCA1LCAyMzQsIDE1NSwgMjU0LCAyNDAsIDE3NSwgMjUsIDUsIDI0NywgCisgICAgMjI4LCAyNTQsIDI0MCwgMTc1LCAyNSwgNSwgMjM0LCAxNTUsIDIzNSwgMTcwLCAxNzUsIDI1LCA1LCAyNDcsIDIyOCwgMjM1LCAKKyAgICAxNzAsIDE3NSwgMjUsIDUsIDIzNCwgMTU1LCAyMjYsIDg4LCAxNzUsIDI1LCA1LCAyNDcsIDIyOCwgMjI2LCA4OCwgMTc1LCAKKyAgICAyNSwgNSwgMjQzLCAxMjQsIDE3NSwgMjUsIDUsIDIzNCwgMTUsIDE3NSwgMjUsIDUsIDI0NywgMjI4LCAyMzQsIDE1LCAxNzUsIAorICAgIDI1LCA1LCAyMzQsIDE3LCAyNDgsIDY3LCAxNzUsIDI1LCA1LCAyMzQsIDE2LCAyNDIsIDQ3LCAyNTQsIDIzMywgMTc1LCAyNSwgCisgICAgNSwgMjM0LCAxNiwgMjQyLCA0NywgMjQ3LCAyMjgsIDI1NCwgMjMzLCAxNzUsIDI1LCA1LCAyMzQsIDE2LCAyNDIsIDQ3LCAKKyAgICAyNDMsIDgxLCAxNzUsIDI1LCA1LCAyNDMsIDgxLCAxNzUsIDI1LCA1LCAyNDcsIDIyOCwgMjQzLCAxMjQsIDE3NSwgMjUsIDUsIAorICAgIDI0NywgMjI4LCAyNDMsIDgxLCAxNzUsIDIyNCwgMTQxLCAyMzMsIDIwNywgMTY4LCAxMzUsIDIzNCwgMjksIDIzNCwgMjQ2LCAKKyAgICAxNjgsIDEzNSwgMjM0LCAxMDYsIDIzNCwgMTI4LCAxNjgsIDEzNSwgMjM0LCAxMDYsIDIzNCwgOTksIDE2OCwgMTM1LCAyMzQsIAorICAgIDEwNiwgMjM0LCA5NSwgMTY4LCAxMzUsIDIzNCwgMTA2LCAyMzQsIDEwMywgMTY4LCAxMzUsIDIzNCwgMTA2LCAyMjMsIDE1NCwgCisgICAgMTY4LCAxMzUsIDIyOSwgNSwgMjI4LCAyNDgsIDE2OCwgMTM1LCAyNTAsIDg3LCAyNTAsIDE0NywgMTY4LCAxMzUsIDI1MCwgCisgICAgODcsIDI1MCwgOTUsIDE2OCwgMTM1LCAyNTAsIDg3LCAyNTAsIDE0NiwgMTY4LCAxMzUsIDIxOSwgNTksIDIxOSwgNTgsIAorICAgIDE2OCwgMTM1LCAyNTAsIDg3LCAyNTAsIDgzLCAxNjgsIDEzNSwgMjEwLCAyNDUsIDIxMCwgMjUyLCAxNjgsIDEzNSwgMjQ3LCAKKyAgICAxNDYsIDI1MCwgMTU0LCAxNjgsIDEzNSwgMjE2LCA0MiwgMjI1LCAyMzgsIDE2OCwgMTM1LCAyMTYsIDE1NywgMjE2LCAyMDAsIAorICAgIDE2OCwgMTM1LCAyMTYsIDE1NywgMjI5LCAyMDEsIDE2OCwgMTM1LCAyMTYsIDE1NywgMjI1LCAxMTEsIDE2OCwgMTM1LCAKKyAgICAyMjgsIDc1LCAyMjksIDk4LCAxNjgsIDEzNSwgMjQ3LCAxNDYsIDI0OCwgNjgsIDE2OCwgMTM1LCAyMTYsIDQyLCAyMTcsIAorICAgIDU1LCAxNjgsIDEzNSwgMjE2LCAxNTcsIDIxNiwgMTMxLCAxNjgsIDEzNSwgMjE2LCAxNTcsIDIxNiwgMjA0LCAxNjgsIDEzNSwgCisgICAgMjE2LCAxNTcsIDIxNiwgMTU0LCAxNjgsIDEzNSwgMjI4LCA3NSwgMjI3LCAyMzcsIDE2OCwgMTM1LCAyNTEsIDIwNiwgMjUyLCAKKyAgICAxNjQsIDE2OCwgMTM1LCAyMjUsIDE3LCAyMjUsIDQyLCAxNjgsIDEzNSwgMjI1LCAxMjIsIDIyNSwgMTEzLCAxNjgsIDEzNSwgCisgICAgMjQ0LCA0NCwgMjQ0LCAxOTYsIDE2OCwgMTM1LCAyMjUsIDEyMiwgMjI1LCAxNDEsIDE2OCwgMTM1LCAyNDQsIDQ0LCAyNDQsIAorICAgIDE3MywgMTY4LCAxMzUsIDIyNSwgMTIyLCAyMjEsIDI0NywgMTY4LCAxMzUsIDIzMCwgMTYyLCAxODQsIDE2OCwgMTM1LCAKKyAgICAyMTAsIDI0NSwgMjExLCA3OSwgMTY4LCAxMzUsIDIyMiwgMjEyLCAyMjIsIDEzOSwgMTY4LCAxMzUsIDIyMiwgMTQwLCAxNjgsIAorICAgIDEzNSwgMjMyLCAxNTcsIDIzMiwgMjA2LCAxNjgsIDEzNSwgMjMyLCA5OCwgMTY4LCAxMzUsIDIxMSwgMjI4LCAyMTIsIDYxLCAKKyAgICAxNjgsIDEzNSwgMjE5LCA1OSwgMjIyLCA2LCAxNjgsIDEzNSwgMjE5LCA1OSwgMjIyLCAxMTQsIDE2OCwgMTM1LCAyMTksIAorICAgIDU5LCAyMTgsIDgyLCAxNjgsIDEzNSwgMjQxLCA2OSwgMjQxLCAxNTksIDE2OCwgMTM1LCAyMzIsIDE1NywgMjUwLCA2OCwgCisgICAgMTY4LCAxMzUsIDE0NCwgMjU0LCAxMTUsIDE2OCwgMTM1LCAyNDEsIDY5LCAyMjgsIDcwLCAxNjgsIDEzNSwgMjI2LCA2OCwgCisgICAgMTY4LCAxMzUsIDIyMSwgMjMwLCA2MSwgMTY4LCAxMzUsIDIzMSwgMjA0LCAyNDIsIDE3LCAxNjgsIDEzNSwgMjIxLCAyMzAsIAorICAgIDI1NSwgNzMsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjU0LCAxMzYsIDE2OCwgMTM1LCAyMjEsIDIzMCwgNzMsIDE2OCwgMTM1LCAKKyAgICAyMjEsIDIzMCwgMjM2LCAzMywgMTY4LCAxMzUsIDIyMSwgMjMwLCAyMTQsIDIxNCwgMTY4LCAxMzUsIDIyMSwgMjMwLCAyMTQsIAorICAgIDIxMiwgMTY4LCAxMzUsIDIyMSwgMjMwLCA3MCwgMTY4LCAxMzUsIDIyMSwgMjMwLCAyMTQsIDExOCwgMTY4LCAxMzUsIDIyNSwgCisgICAgMTI0LCAxNjgsIDI0OSwgOTgsIDE2LCAyNTIsIDE2NSwgMTY4LCAxMzUsIDIyMSwgMjMwLCA3NSwgMTY4LCAxMzUsIDIyMSwgCisgICAgMjMwLCAyNTQsIDI0MywgMTY4LCAxMzUsIDIyMSwgMjMwLCA3NiwgMTY4LCAxMzUsIDIyMSwgMjMwLCAyNTQsIDIwMiwgMjMxLCAKKyAgICAxOTgsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjU0LCAyMDIsIDIzMSwgMTk5LCAxNjgsIDEzNSwgMjMzLCAxMDYsIDE2OCwgCisgICAgMTM1LCAyMzEsIDE5NSwgMTY4LCAxMzUsIDIzMSwgMTk2LCAxNjgsIDEzNSwgMjMxLCAyMDQsIDI0NSwgMTgwLCAxNjgsIAorICAgIDEzNSwgMjMxLCAyMDQsIDIxNiwgMTU2LCAxNjgsIDEzNSwgMjMxLCAyMDQsIDIxNSwgMjI4LCAxNjgsIDEzNSwgMjMxLCAKKyAgICAyMDQsIDI1MCwgMTM1LCAxNjgsIDEzNSwgMjE2LCAxOTgsIDE2OCwgMTM1LCAyMjgsIDIwNSwgMTY4LCAxMzUsIDIxMSwgNzMsIAorICAgIDE2OCwgMTM1LCAyNDQsIDM1LCAxNjgsIDIxLCAyMTAsIDg2LCAxNjgsIDIxLCAxMTAsIDE2OCwgMjEsIDEwNSwgMTY4LCAyMSwgCisgICAgMTU4LCAxNjgsIDIxLCAxNjEsIDE2OCwgMjEsIDE4OSwgMTY4LCAyMSwgMTk0LCAxNjgsIDIxLCAxOTgsIDE2OCwgMjEsIAorICAgIDE5NSwgMTY4LCAyMSwgMjAwLCAxNjgsIDEzNSwgMjU0LCAxMTEsIDE2OCwgMTM1LCAyMzQsIDEwNCwgMjA5LCAyMDksIDEsIAorICAgIDIzNCwgMjgsIDIwOSwgMjA5LCAxLCAyMzQsIDEwNiwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDIzNCwgMTA2LCAyMTcsIDYyLCAKKyAgICAyMDksIDIwOSwgMSwgMjI5LCA0LCAyMDksIDIwOSwgMSwgMjQ5LCAyMzgsIDIwOSwgMjA5LCAxLCAyMTksIDU5LCAyMTcsIAorICAgIDYyLCAyMDksIDIwOSwgMSwgMjI3LCAxMzQsIDIwOSwgMjA5LCAxLCAyNDcsIDE0NSwgMjA5LCAyMDksIDEsIDExMSwgMjA5LCAKKyAgICAyMDksIDEsIDIxNiwgMTU3LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgMjE2LCAxNTcsIDIxNywgNjIsIDIwOSwgMjA5LCAxLCAKKyAgICAyMjgsIDc0LCAyMDksIDIwOSwgMSwgMjUxLCAyMDUsIDIwOSwgMjA5LCAxLCAyMjUsIDE2LCAyMDksIDIwOSwgMSwgMjI1LCAKKyAgICAxMjIsIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAyNDQsIDQ0LCAyMTcsIDYyLCAyMDksIDIwOSwgMSwgMjI1LCAxMjIsIDIxNywgCisgICAgNjIsIDIwOSwgMjA5LCAxLCAyNDQsIDQ0LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgMjMwLCAxNjEsIDIwOSwgMjA5LCAxLCAKKyAgICAyMTAsIDI0NCwgMjA5LCAyMDksIDEsIDIzMiwgMTU3LCAyMzIsIDIwNiwgMjA5LCAyMDksIDEsIDIzMiwgMTU3LCAyMzIsIAorICAgIDEyMSwgMjA5LCAyMDksIDEsIDIxMSwgMjI3LCAyMDksIDIwOSwgMSwgMjE5LCA1OSwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIAorICAgIDI0MSwgNjksIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCA3NiwgMjA5LCAyMDksIDEsIDI0MSwgNjksIDIxNywgNjIsIDIwOSwgCisgICAgMjA5LCAyNDUsIDE2MywgMjA5LCAyMDksIDI1LCA1LCA2MSwgMjA5LCAyMDksIDI1LCA1LCAyMzEsIDIwNCwgMjM0LCAyMzQsIAorICAgIDIwOSwgMjA5LCAyNSwgNSwgMjU1LCA3MywgMjA5LCAyMDksIDI1LCA1LCAyNTQsIDEzNiwgMjA5LCAyMDksIDI1LCA1LCA3MywgCisgICAgMjA5LCAyMDksIDI1LCA1LCAyMzYsIDMzLCAyMDksIDIwOSwgMjUsIDUsIDIxMSwgMTE3LCAyMDksIDIwOSwgMjUsIDUsIAorICAgIDIxMCwgMTY5LCAyMDksIDIwOSwgMjUsIDUsIDcwLCAyMDksIDIwOSwgMjUsIDUsIDIxNCwgMTE4LCAyMDksIDIwOSwgMjUsIAorICAgIDUsIDIzMSwgMjA0LCAyMzQsIDEzLCAyMDksIDIwOSwgMjIwLCAxNDUsIDUsIDIzMiwgMTU2LCAyMDksIDIwOSwgMjIwLCAKKyAgICAxNDUsIDUsIDIyNywgMTM0LCAyMDksIDIwOSwgMjUsIDUsIDc1LCAyMDksIDIwOSwgMjUsIDUsIDI0NSwgMTk1LCAyMDksIAorICAgIDIwOSwgMjUsIDUsIDc2LCAyMDksIDIwOSwgMjUsIDUsIDI1MywgMTY3LCAyMDksIDIwOSwgMjUsIDUsIDI1NCwgMjAxLCAKKyAgICAyMDksIDIwOSwgMjM0LCAyOSwgMjMzLCAxMzUsIDIwOSwgMjA5LCAxMzgsIDIzMSwgMjA0LCAyNDUsIDE4MCwgMjA5LCAyMDksIAorICAgIDEzOCwgMjMxLCAyMDQsIDIxNiwgMTU2LCAyMDksIDIwOSwgMTM4LCAyMzEsIDIwNCwgMjE2LCAxMTcsIDIwOSwgMjA5LCAKKyAgICAxMzgsIDIzMSwgMjA0LCAyNTAsIDIyMywgMjA5LCAyMDksIDI1MSwgNCwgNzgsIDIwOSwgMjA5LCAyMjgsIDIxNCwgMjA5LCAKKyAgICAyMDksIDIxLCAyMTAsIDg2LCAyMDksIDIwOSwgMjEsIDExMCwgMjA5LCAyMDksIDIxLCAxMDUsIDIwOSwgMjA5LCAyMSwgCisgICAgMTU4LCAyMDksIDIwOSwgMjEsIDE2MSwgMjA5LCAyMDksIDIxLCAxODksIDIwOSwgMjA5LCAyMSwgMTk0LCAyMDksIDIwOSwgCisgICAgMjEsIDE5OCwgMjA5LCAyMDksIDIxLCAxOTUsIDIwOSwgMjA5LCAyMSwgMjAwLCAyMDksIDIwOSwgMjQxLCA2OSwgMjI4LCAKKyAgICA3NCwgMjA5LCAyMDksIDI0MSwgNjksIDIzMCwgMTYxLCAyMDksIDIwOSwgMSwgMjM0LCAxMDcsIDI0MiwgMTc0LCAyMDksIAorICAgIDIwOSwgMSwgMjM0LCAxMDcsIDIyNywgMTM0LCA2MywgMywgMjI2LCAyMDQsIDYzLCAxNjQsIDI0MiwgMTE1LCAyMTEsIDAsIAorICAgIDIzMCwgMjQ4LCAyMTUsIDE4OSwgNjEsIDYzLCAxNjQsIDI0MiwgMTE1LCAyMTEsIDAsIDIzMCwgMjQ4LCAyNTUsIDE1OSwgCisgICAgMjIyLCAyMTYsIDI1MiwgNzcsIDE4NCwgNjMsIDE2NCwgMjQyLCAxMTUsIDIxMSwgMCwgMjMwLCAyNDgsIDI1NSwgMTU5LCAKKyAgICAyNDIsIDExNSwgMjE1LCAxNzMsIDE4NCwgNjMsIDE2NCwgNjUsIDIxMSwgMCwgMjMwLCAyNDgsIDIzMSwgOTMsIDE4NCwgNjMsIAorICAgIDE2NCwgMjQ5LCAyNTIsIDIxMSwgMCwgMjMwLCAyNDgsIDIyMCwgMTA5LCAxODQsIDYzLCAxNjQsIDI1MCwgMjM5LCAyMTEsIAorICAgIDAsIDIzMCwgMjQ4LCAyMjUsIDExMiwgMjIwLCA5NiwgMTg0LCA2MywgMTY0LCAyMTEsIDAsIDIzMCwgMjQ4LCAyMTUsIDE3MywgCisgICAgMjIwLCA5NiwgMTg0LCA2MywgMTY0LCAyMjEsIDIwOCwgMjIwLCA5NSwgNjMsIDE2NCwgMjUxLCAxMjgsIDIxMSwgMCwgMjMwLCAKKyAgICAyNDcsIDYzLCAxNjQsIDI1MSwgMjIzLCAyMjAsIDMsIDIxMSwgMCwgMjMwLCAyNDcsIDYzLCAxNjQsIDIzNSwgMTk3LCAyMTUsIAorICAgIDE3MiwgNjMsIDE2NCwgMjQ4LCA2MSwgMjE1LCAxNzMsIDI1MSwgMTI3LCA2MywgMTY0LCAyMjAsIDk1LCA2MywgMTY0LCAKKyAgICAyMjcsIDEzOSwgMjIwLCA5NSwgNjMsIDE2NCwgMjE1LCAxNzMsIDIyMCwgOTUsIDYzLCAxNjQsIDIyNywgMTM5LCAyMTUsIAorICAgIDE3MywgMjIwLCA5NSwgNjMsIDE2NCwgMjIyLCAyMzYsIDI1MCwgMTIyLCAyMTgsIDIzNiwgMjIwLCA5NSwgNjMsIDE2NCwgCisgICAgMjIzLCA0MiwgMjQyLCAxNDYsIDIyMCwgOTUsIDYzLCAxNjQsIDI1MCwgMjM5LCAyNTUsIDE2MywgMjIyLCAxNDQsIDIzMSwgCisgICAgOTIsIDE5OSwgMjUxLCA3LCA2MywgMTY0LCAyNDIsIDExNSwgMjE1LCAxNzIsIDYzLCAyMzIsIDE0NCwgNSwgMjUwLCAxNTUsIAorICAgIDIyMiwgMTQzLCA2MywgMjMyLCAxNDQsIDUsIDIzMiwgMjUyLCAyMjIsIDE0MywgNjMsIDI1MywgMjEyLCA1LCAyMjAsIDEwNSwgCisgICAgMjQzLCA2NSwgMjU1LCAxNjQsIDIyMiwgMTQzLCA2MywgMjUzLCAyMTIsIDUsIDI1NSwgMTYxLCAxOTAsIDYzLCAyNTMsIAorICAgIDIxMiwgNSwgMjIxLCAxODIsIDIxNSwgMTY4LCA2MywgNSwgMjIzLCAxMzAsIDI0NywgMTU5LCAyNDMsIDY0LCA2MywgNSwgCisgICAgMjIzLCAxMzAsIDI0NywgMTU5LCAyNDIsIDE3NiwgNjMsIDUsIDIyMywgMTMwLCAyNDcsIDE1OSwgMjQyLCAxMTYsIDYzLCA1LCAKKyAgICAyMjMsIDEzMCwgMjI5LCAyMTksIDI0MywgNjQsIDYzLCA1LCAyMjMsIDEzMCwgMjI5LCAyMTksIDI0MiwgMTc2LCA2MywgNSwgCisgICAgMjIzLCAxMzAsIDI0NywgMTU5LCAyMjMsIDEzMCwgMjI5LCAyMTgsIDYzLCAyMSwgMjEwLCA4NiwgNjMsIDIxLCAxMTAsIDYzLCAKKyAgICAyMSwgMTA1LCA2MywgMjEsIDE1OCwgNjMsIDIxLCAxNjEsIDYzLCAyMSwgMTg5LCA2MywgMjEsIDE5NCwgNjMsIDIxLCAxOTgsIAorICAgIDYzLCAyMSwgMTk1LCA2MywgMjEsIDIwMCwgNjMsIDIxLCAxNjMsIDExMCwgNjMsIDIxLCAxNjMsIDEwNSwgNjMsIDIxLCAKKyAgICAxNjMsIDE1OCwgNjMsIDIxLCAxNjMsIDE2MSwgNjMsIDIxLCAxNjMsIDE4OSwgNjMsIDIxLCAxNjMsIDE5NCwgNjMsIDIxLCAKKyAgICAxNjMsIDE5OCwgNjMsIDIxLCAxNjMsIDE5NSwgNjMsIDIxLCAxNjMsIDIwMCwgNjMsIDIxLCAxNjMsIDIxMCwgODYsIDYzLCAKKyAgICAxNjQsIDI1MSwgMTMwLCAyMjIsIDE0MywgNjMsIDE2NCwgMjI5LCA2OCwgMjUxLCA2OCwgMjI3LCAxNDksIDIxMCwgMjUsIAorICAgIDYzLCAxNjQsIDI1MCwgMjM5LCAyNTUsIDE2MywgMjIyLCAxNDQsIDI1MSwgNjksIDIzMCwgMjAyLCAyNTEsIDcsIDYzLCAKKyAgICAxNjQsIDIyOSwgNjgsIDI1MSwgNjgsIDIyMCwgMTA2LCAyMjIsIDE0MywgNjMsIDE2NCwgMjUwLCAxMzIsIDIzMCwgMjQ3LCAKKyAgICA2MywgMTY0LCAyMTUsIDE4NCwgMjU1LCAxNjAsIDYzLCAxNjQsIDI0MiwgMTAwLCAyMjIsIDE0NCwgMjQyLCA2MywgNjMsIAorICAgIDE2NCwgMjQyLCAxMDAsIDIyMiwgMTQ0LCAyNDIsIDY5LCA2MywgMTY0LCAyNTQsIDExNiwgMjM0LCAxMjMsIDI0MiwgNjMsIAorICAgIDYzLCAxNjQsIDI1NCwgMTE2LCAyMzQsIDEyMywgMjQyLCA2OSwgNjMsIDUsIDIxMSwgNjUsIDIxNSwgMTcxLCA2MywgNSwgCisgICAgMjMxLCAxNjcsIDIxNSwgMTcxLCA2MywgMSwgMTc2LCA2MywgMSwgMjM0LCAxMzIsIDYzLCAxLCAyNDMsIDEzNSwgNjMsIDEsIAorICAgIDI0MiwgMjQ5LCA2MywgMSwgMjI5LCA3NywgNjMsIDEsIDI1MSwgMzMsIDYzLCAxLCAyNTAsIDE1NywgNjMsIDEsIDIzNSwgCisgICAgMTQxLCA2MywgMSwgMjI3LCAxNjUsIDYzLCAxLCAyMTUsIDE1NiwgNjMsIDEsIDIxNSwgMTQ0LCA2MywgMSwgMjQ4LCAxMzUsIAorICAgIDYzLCAxLCAyNDgsIDExOSwgNjMsIDEsIDIyOCwgMTEwLCA2MywgMSwgMjE3LCAxMDUsIDYzLCAxLCAyMTYsIDIwOCwgNjMsIAorICAgIDEsIDI0OCwgMjIxLCA2MywgMSwgMjQ4LCAyNSwgNjMsIDEsIDE5NywgNjMsIDEsIDE5MCwgNjMsIDEsIDIyNSwgMTQ3LCA2MywgCisgICAgMSwgMjUyLCAxOTEsIDYzLCAxLCAyNTIsIDE4LCA2MywgMSwgMTg0LCA2MywgMSwgMjE1LCAxODMsIDYzLCAxLCAyMTUsIAorICAgIDE3NSwgNjMsIDEsIDI0NiwgMzgsIDYzLCAxLCAyNDYsIDMzLCA2MywgMSwgMjEyLCA2NSwgNjMsIDEsIDIxMCwgODIsIDYzLCAKKyAgICAxLCAyMTAsIDExNiwgNjMsIDEsIDI1NSwgMTY2LCA2MywgMSwgMTkxLCA2MywgMSwgMjA1LCA2MywgMSwgMjMzLCAxMzUsIAorICAgIDYzLCAxLCAyMjAsIDEwMiwgNjMsIDEsIDIxOCwgMjIzLCA2MywgMSwgMjA2LCA2MywgMSwgMTYyLCA2MywgMSwgNjEsIDYzLCAKKyAgICAxLCAyMzMsIDIzMSwgNjMsIDEsIDI0NCwgNzcsIDIwNSwgNjMsIDEsIDIzNCwgNDYsIDYzLCAxLCAyMjIsIDE3OSwgNjMsIAorICAgIDI1LCA1LCAyNTUsIDczLCA2MywgMjUsIDUsIDczLCA2MywgMjUsIDUsIDIzNiwgMzMsIDYzLCAyNSwgNSwgNzAsIDYzLCAyNSwgCisgICAgNSwgMjE0LCAxMTgsIDYzLCAyNSwgNSwgMTQ5LCAxNTMsIDYzLCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgNjMsIDI1LCA1LCAKKyAgICAxNDksIDE1NiwgNjMsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCA2MywgMjUsIDUsIDc1LCA2MywgMjUsIDUsIDI0NSwgMjA5LCAKKyAgICA2MywgMjUsIDUsIDc2LCA2MywgMjUsIDUsIDIyNiwgMTgzLCA2MywgNSwgMjIyLCAyMjEsIDIxOCwgODQsIDIyOSwgNzgsIAorICAgIDIyMiwgMjExLCA2MywgNSwgMjIyLCAyMTYsIDI1MiwgNzYsIDYzLCAyNSwgNSwgMjIzLCA0OSwgNzMsIDYzLCAyNSwgNSwgCisgICAgMjIzLCA0OSwgMjM2LCAzMywgNjMsIDUsIDIyNywgMTQ5LCAyMTAsIDI2LCAyMjksIDIyNiwgMjQ4LCAyMjEsIDYzLCA1LCAKKyAgICAyMTksIDcxLCAyMzMsIDYwLCA2MywgMTY0LCAyNDIsIDI5LCA2MywgMTY0LCAyMjYsIDU3LCA2MywgNSwgMjMzLCA2MywgCisgICAgMjIyLCAxNDMsIDYzLCA1LCAyMTEsIDcwLCAyMjIsIDE0MywgNjMsIDUsIDIzMywgNjQsIDIxNSwgMTg0LCAyNTEsIDcsIDYzLCAKKyAgICA1LCAyMzEsIDk1LCAyNTEsIDcsIDYzLCA1LCAyNDIsIDExOSwgMjUxLCA4LCAyMjMsIDQwLCA2MywgNSwgMjQyLCAxMTksIAorICAgIDIzMSwgODUsIDIyMywgNDAsIDYzLCA1LCAyMzUsIDE5MywgMjMxLCA5NSwgMjUxLCA3LCA2MywgMjE4LCA3MywgNSwgMjMzLCAKKyAgICA2NCwgMjE1LCAxODQsIDI1MSwgNywgNjMsIDIxOCwgNzMsIDUsIDIzMSwgOTUsIDI1MSwgNywgNjMsIDIxOCwgNzMsIDUsIAorICAgIDIzNSwgMTkzLCAyMzEsIDk1LCAyNTEsIDcsIDYzLCAyMTgsIDczLCAxLCAxNzYsIDYzLCAyMTgsIDczLCAxLCAyMzQsIDEzMiwgCisgICAgNjMsIDIxOCwgNzMsIDEsIDI0MywgMTM1LCA2MywgMjE4LCA3MywgMSwgMjQyLCAyNDksIDYzLCAyMTgsIDczLCAxLCAyMjksIAorICAgIDc3LCA2MywgMjE4LCA3MywgMSwgMjUxLCAzMywgNjMsIDIxOCwgNzMsIDEsIDI1MCwgMTU3LCA2MywgMjE4LCA3MywgMSwgCisgICAgMjM1LCAxNDEsIDYzLCAyMTgsIDczLCAxLCAyMjcsIDE2NSwgNjMsIDIxOCwgNzMsIDEsIDIxNSwgMTU2LCA2MywgMjE4LCAKKyAgICA3MywgMSwgMjE1LCAxNDQsIDYzLCAyMTgsIDczLCAxLCAyNDgsIDEzNSwgNjMsIDIxOCwgNzMsIDEsIDI0OCwgMTE5LCA2MywgCisgICAgMjE4LCA3MywgMSwgMjI4LCAxMTAsIDYzLCAyMTgsIDczLCAxLCAyMTcsIDEwNSwgNjMsIDIxOCwgNzMsIDEsIDIxNiwgMjA4LCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjQ4LCAyMjEsIDYzLCAyMTgsIDczLCAxLCAyNDgsIDI1LCA2MywgMjE4LCA3MywgMSwgMTk3LCAKKyAgICA2MywgMjE4LCA3MywgMSwgMTkwLCA2MywgMjE4LCA3MywgMSwgMjI1LCAxNDcsIDYzLCAyMTgsIDczLCAxLCAyNTIsIDE5MSwgCisgICAgNjMsIDIxOCwgNzMsIDEsIDI1MiwgMTgsIDYzLCAyMTgsIDczLCAxLCAxODQsIDYzLCAyMTgsIDczLCAxLCAyMTUsIDE4MywgCisgICAgNjMsIDIxOCwgNzMsIDEsIDIxNSwgMTc1LCA2MywgMjE4LCA3MywgMSwgMjQ2LCAzOCwgNjMsIDIxOCwgNzMsIDEsIDI0NiwgCisgICAgMzMsIDYzLCAyMTgsIDczLCAxLCAyMTIsIDY1LCA2MywgMjE4LCA3MywgMSwgMjEwLCA4MiwgNjMsIDIxOCwgNzMsIDEsIAorICAgIDIxMCwgMTE2LCA2MywgMjE4LCA3MywgMSwgMjU1LCAxNjYsIDYzLCAyMTgsIDczLCAxLCAxOTEsIDYzLCAyMTgsIDczLCAxLCAKKyAgICAyMDUsIDYzLCAyMTgsIDczLCAxLCAyMzMsIDEzNSwgNjMsIDIxOCwgNzMsIDEsIDIyMCwgMTAyLCA2MywgMjE4LCA3MywgMSwgCisgICAgMjE4LCAyMjMsIDYzLCAyMTgsIDczLCAxLCAyMDYsIDYzLCAyMTgsIDczLCAxLCAxNjIsIDYzLCAyMTgsIDczLCAxLCA2MSwgCisgICAgNjMsIDIxOCwgNzMsIDEsIDIzMywgMjMxLCA2MywgMjE4LCA3MywgMSwgMjQ0LCA3NywgMjEyLCA2NSwgNjMsIDIxOCwgNzMsIAorICAgIDEsIDI0NCwgNzcsIDE5MSwgNjMsIDIxOCwgNzMsIDEsIDI0NCwgNzcsIDIwNSwgNjMsIDIzMywgMjE4LCAyMjIsIDE0MSwgCisgICAgMjM0LCAxMzIsIDYzLCAyMzMsIDIxOCwgMjIyLCAxNDEsIDIzNCwgMTMzLCAyNTEsIDY5LCAyMzAsIDIwMiwgMjUxLCA3LCAKKyAgICA2MywgMjUwLCAyNTIsIDUsIDExNCwgMjUyLCA3MCwgNjMsIDI1MCwgMjUyLCA1LCAxOTIsIDI1MiwgNzAsIDYzLCAyNTAsIAorICAgIDI1MiwgNSwgMjUwLCAyNTMsIDIxNywgMjAsIDYzLCAyNTAsIDI1MiwgNSwgMjIxLCAyMDcsIDI1NSwgMTY1LCA2MywgMTYsIAorICAgIDI0NiwgOTEsIDI1MSwgMTI1LCA2MywgMTYsIDIyMywgMTI5LCAyMjIsIDIyMiwgNjMsIDE2LCAyMjYsIDc3LCAyNDMsIDYzLCAKKyAgICA2MywgMTYsIDIyMywgMTI5LCAyMjIsIDIyMywgMjIzLCA0MiwgMjQyLCAxNDUsIDYzLCAxNiwgMjI1LCAxMTIsIDE5MCwgNjMsIAorICAgIDE2LCAyMjgsIDU5LCAyNTEsIDEyNSwgNjMsIDE2LCAyMjgsIDU5LCAyNTEsIDEyNiwgMjI3LCAxMzksIDI1NSwgMTYyLCA2MywgCisgICAgMTYsIDIyOCwgNTksIDI1MSwgMTI2LCAyNDIsIDExNywgMjU1LCAxNjIsIDYzLCAxNiwgMjI4LCA1OSwgMjUxLCAxMjYsIAorICAgIDI1MSwgNjksIDI1NSwgMTYyLCA2MywgNSwgMjIzLCAxMzAsIDIyOSwgMjE5LCAyMjMsIDEzMCwgMjQ3LCAxNTgsIDYzLCA1LCAKKyAgICAyMjMsIDEzMCwgMjI5LCAyMTksIDI0MiwgMTE2LCA2MywgMTY0LCAyNTEsIDEyOSwgMjIwLCAzLCAyNDIsIDIxNSwgMjMwLCAKKyAgICAyNDgsIDIyMywgNDEsIDYzLCAxNjQsIDIzMCwgMTYzLCAyMTEsIDAsIDI0MiwgMjE1LCAyMzAsIDI0OCwgMjIzLCA0MSwgNjMsIAorICAgIDE2NCwgMjI3LCAxMzksIDIxNSwgMTcyLCA2MywgMTY0LCA2NSwgMjUxLCAxNTIsIDIyMiwgMjEzLCAyMTEsIDAsIDIzMCwgCisgICAgMjQ4LCAyMzEsIDkzLCAxODQsIDYzLCAxNjQsIDI0OSwgMjUyLCAyNTEsIDE1MiwgMjIyLCAyMTMsIDIxMSwgMCwgMjMwLCAKKyAgICAyNDgsIDIyMCwgMTA5LCAxODQsIDIyMiwgMjUwLCAyMTcsIDI1NSwgNTAsIDIzMywgNDUsIDIxNywgMjU1LCA1MCwgMjIyLCAKKyAgICAyNTAsIDIxNywgMjU1LCA1LCAyLCAyNDcsIDExOCwgMjMzLCA0NSwgMjE3LCAyNTUsIDUsIDIsIDI0NywgMTE4LCA2MywgCisgICAgMTY0LCAyMzMsIDU1LCAyMzEsIDk2LCAyMjIsIDE0MywgNjMsIDE2NCwgMjE1LCAyNTAsIDIzMSwgOTYsIDIyMiwgMTQzLCAKKyAgICA2OCwgMSwgMTc2LCA2OCwgMSwgMjM0LCAxMzIsIDY4LCAxLCAyNDMsIDEzNSwgNjgsIDEsIDI0MiwgMjQ5LCA2OCwgMSwgCisgICAgMjI5LCA3NywgNjgsIDEsIDI1MSwgMzMsIDY4LCAxLCAyNTAsIDE1NywgNjgsIDEsIDIzNSwgMTQxLCA2OCwgMSwgMjM1LCAKKyAgICAxMTQsIDY4LCAxLCAyMjcsIDE2NSwgNjgsIDEsIDIyOCwgNzYsIDY4LCAxLCAyMTUsIDE1NiwgNjgsIDEsIDIxNSwgMTQ0LCAKKyAgICA2OCwgMSwgMjQ4LCAxMzUsIDY4LCAxLCAyNDgsIDExOSwgNjgsIDEsIDIyOCwgMTEwLCA2OCwgMSwgMjE3LCAxMDUsIDY4LCAKKyAgICAxLCAyMTYsIDIwOCwgNjgsIDEsIDI0OCwgMjIxLCA2OCwgMSwgMjQ4LCAyNSwgNjgsIDEsIDE5NywgNjgsIDEsIDE5MCwgNjgsIAorICAgIDEsIDIyNSwgMTQ3LCA2OCwgMSwgMjUyLCAxOTEsIDY4LCAxLCAyNTIsIDE4LCA2OCwgMSwgMTg0LCA2OCwgMSwgMTkxLCA2OCwgCisgICAgMSwgMjA1LCA2OCwgMSwgMjMzLCAxMzUsIDY4LCAxLCAyMTIsIDY1LCA2OCwgMSwgMjA2LCA2OCwgMSwgMTYyLCA2OCwgMSwgCisgICAgMjMyLCAxODQsIDY4LCAxLCA2MSwgNjgsIDEsIDIyMCwgODYsIDYxLCA2OCwgMSwgNzMsIDY4LCAxLCAyMzYsIDMzLCA2OCwgCisgICAgMSwgNzAsIDY4LCAxLCAyMTQsIDExOCwgNjgsIDEsIDc1LCA2OCwgMSwgMjMwLCAxNTEsIDc1LCA2OCwgMSwgNzYsIDY4LCAxLCAKKyAgICAyNTMsIDE5MiwgNjgsIDI1LCA1LCAyMTcsIDY0LCAyNTUsIDczLCA2OCwgMjUsIDUsIDI1NSwgNzMsIDY4LCAyNSwgNSwgNzMsIAorICAgIDY4LCAyNSwgNSwgMjM2LCAzMywgNjgsIDI1LCA1LCA3MCwgNjgsIDI1LCA1LCAyMTQsIDExOCwgNjgsIDI1LCA1LCA3NSwgCisgICAgNjgsIDI1LCA1LCAyNTQsIDIwMSwgNjgsIDI1LCA1LCAyMzAsIDE1MSwgMjM2LCAzMywgNjgsIDI1LCA1LCAyMzAsIDE1MSwgCisgICAgNzYsIDY4LCAyNSwgNSwgMTYwLCA0OCwgNjgsIDUsIDI1NCwgNzUsIDY4LCA1LCA1OSwgNTEsIDY4LCA1LCAyMTMsIDE0NywgCisgICAgNjgsIDUsIDIxMywgMTUyLCA2OCwgNSwgMjUzLCAyMzUsIDY4LCAxMTYsIDUsIDE0NywgMTkxLCA2OCwgMTE2LCA1LCAxNDcsIAorICAgIDIwNSwgNjgsIDExNiwgNSwgMTQ3LCAyMTIsIDY1LCA2OCwgMTE2LCA1LCAxNDcsIDE2MiwgNjgsIDEsIDI0MiwgMTMyLCAKKyAgICAyMDYsIDY4LCAyMSwgMjEwLCA4NiwgNjgsIDIxLCAxMTAsIDY4LCAyMSwgMTA1LCA2OCwgMjEsIDE1OCwgNjgsIDIxLCAxNjEsIAorICAgIDY4LCAyMSwgMTg5LCA2OCwgMjEsIDE5NCwgNjgsIDIxLCAxOTgsIDY4LCAyMSwgMTk1LCA2OCwgMjEsIDIwMCwgNjgsIDUsIAorICAgIDIzMiwgMTkyLCAyMjEsIDE3MiwgNjgsIDUsIDIyMSwgMTcyLCA2OCwgMTYsIDIzMiwgMTUzLCA2OCwgMTYsIDI0OSwgMjEzLCAKKyAgICA2OCwgMTYsIDI1NCwgMjIwLCA2OCwgMTYsIDI0MywgNDgsIDY4LCAxLCAyMjAsIDEwMiwgNjgsIDEsIDIxOCwgMjIzLCA2OCwgCisgICAgMSwgMTQ5LCAxNTMsIDY4LCAxLCAxNDksIDIyMiwgMTgwLCA2OCwgMSwgMTQ5LCAxNTYsIDY4LCAxLCAxNDksIDIzMiwgMTg1LCAKKyAgICA2OCwgMjUsIDUsIDE0OSwgMTUzLCA2OCwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDY4LCAyNSwgNSwgMTQ5LCAxNTYsIDY4LCAKKyAgICAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgNjgsIDEsIDIzMCwgMTUxLCAyMjksIDc3LCA2OCwgMSwgMjMwLCAxNTEsIDIzNSwgCisgICAgMTE0LCA2OCwgMSwgMjMwLCAxNTEsIDI1MiwgMTExLCA2OCwgMSwgMjMwLCAxNTEsIDI1MiwgMTA2LCA2OCwgMTE2LCA1LCAKKyAgICAyMzAsIDE1MSwgMTQ3LCAxOTcsIDY4LCAxMTYsIDUsIDIzMCwgMTUxLCAxNDcsIDE4NCwgNjgsIDExNiwgNSwgMjMwLCAxNTEsIAorICAgIDE0NywgMjMzLCAxMzUsIDY4LCAxLCAyMjAsIDEwOCwgMjM0LCAyMTMsIDIyMCwgMTAyLCA2OCwgMjUsIDUsIDIyMCwgMTA4LCAKKyAgICAyMzQsIDIxMywgMjQ1LCA1NSwgNjgsIDEzOCwgMTY0LCAyMjAsIDEwOCwgMjM0LCAyMTMsIDI0MSwgMjQ3LCA2OCwgMTM4LCAKKyAgICAxNjQsIDIyMCwgMTA4LCAyMzQsIDIxMywgMjM0LCAxODMsIDIyNSwgMTIxLCA2OCwgMSwgMjEyLCA3LCAyMjQsIDEwOCwgCisgICAgMjM0LCAyMTMsIDIxNiwgMjA4LCA2OCwgMSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIyNCwgMTE0LCA2OCwgMjUsIAorICAgIDUsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgMjEzLCAyNDUsIDU1LCA2OCwgMjUsIDUsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgCisgICAgMjEzLCAyMTQsIDIxNCwgNjgsIDUsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMTYsIDI5LCA2OCwgNSwgMjEyLCA3LCAKKyAgICAyMjQsIDEwOCwgMjM0LCAyMTMsIDIxNiwgMjgsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjE2LCAyNywgCisgICAgNjgsIDUsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMTYsIDI2LCA2OCwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAKKyAgICAyMTMsIDIxNiwgMjUsIDY4LCAxLCAyNDUsIDIxOSwgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMjgsIDExMCwgNjgsIDEsIDI0NSwgCisgICAgMjE5LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIxMCwgMTc2LCA2OCwgMSwgMjQ1LCAyMTksIDIyNCwgMTA4LCAyMzQsIDIxMywgCisgICAgMjQyLCAyMTcsIDY4LCAyNSwgNSwgMjQzLCA1OSwgMjM0LCAyMTMsIDczLCA2OCwgMjUsIDUsIDIzNCwgMTg4LCAyMjYsIAorICAgIDIzNCwgNjgsIDI1LCA1LCAyMzQsIDE4OCwgNzAsIDY4LCAyNSwgNSwgMjM0LCAxODgsIDI0NSwgMjA5LCA2OCwgMSwgMjIwLCAKKyAgICA4NiwgMTc2LCA2OCwgMSwgMjIwLCA4NiwgMjM0LCAxMzIsIDY4LCAxLCAyMjAsIDg2LCAyNDMsIDEzNSwgNjgsIDEsIDIyMCwgCisgICAgODYsIDI1MSwgMzMsIDY4LCAxLCAyMjAsIDg2LCAyMTAsIDExNiwgNjgsIDEsIDIyMCwgODYsIDIyNywgMTY1LCA2OCwgMSwgCisgICAgMjIwLCA4NiwgMjQ4LCAyMjEsIDY4LCAxLCAyMjAsIDg2LCAxOTcsIDY4LCAxLCAyMjAsIDg2LCAyMjUsIDE0NywgNjgsIDEsIAorICAgIDIyMCwgODYsIDI0NCwgMTk2LCA2OCwgMSwgMjIwLCA4NiwgMjUyLCAxOTEsIDY4LCAxLCAyMjAsIDg2LCAyMTYsIDIwOCwgCisgICAgNjgsIDEsIDIyMCwgODYsIDE2MiwgNjgsIDExNiwgNSwgMjIwLCA4NiwgMTQ3LCAyMTIsIDY1LCA2OCwgMjUsIDUsIDIyMCwgCisgICAgODYsIDI1NSwgNzMsIDY4LCAyNSwgNSwgMjIwLCA4NiwgNzUsIDY4LCAyNSwgNSwgMjIwLCA4NiwgMTYwLCA0OCwgNjgsIDI1LCAKKyAgICA1LCAyMjAsIDg2LCA0MCwgMjExLCAxMTcsIDY4LCA1LCAyMjAsIDg2LCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4NiwgMjE2LCAKKyAgICAyNywgNjgsIDUsIDIyMCwgODYsIDIxNiwgMjUsIDY4LCA1LCAyMjAsIDg2LCAyMTYsIDI0LCA2OCwgNSwgMjIwLCA4NiwgCisgICAgMjQ5LCAxNTIsIDIxNiwgMjgsIDY4LCA1LCAyMjAsIDg2LCAyNDksIDE1MiwgMjE2LCAyNywgNjgsIDUsIDIyMCwgODYsIAorICAgIDI0OSwgMTUyLCAyNDUsIDE1MywgMjE2LCAzMCwgNjgsIDEsIDIyMiwgMTI4LCAyMjYsIDYzLCAyNDQsIDE5NiwgNjgsIDUsIAorICAgIDIyMiwgMTI4LCAyMjYsIDYzLCAyMTYsIDI1LCA2OCwgMjIwLCA4NiwgMjEsIDIxMCwgODYsIDY4LCAyMjAsIDg2LCAyMSwgCisgICAgMTEwLCA2OCwgMjIwLCA4NiwgMjEsIDEwNSwgNjgsIDIyMCwgODYsIDIxLCAxNTgsIDY4LCAyMjAsIDg2LCAyMSwgMTYxLCAKKyAgICA2OCwgMjIwLCA4NiwgMjEsIDE4OSwgNjgsIDIyMCwgODYsIDIxLCAxOTQsIDY4LCAyMjAsIDg2LCAyMSwgMTk4LCA2OCwgCisgICAgMjIwLCA4NiwgMjEsIDE5NSwgNjgsIDIyMCwgODYsIDIxLCAyMDAsIDY4LCA1LCAyMzQsIDEyNiwgMjE2LCAyOSwgNjgsIDUsIAorICAgIDIzNCwgMTI2LCAyMTYsIDI3LCA2OCwgMjUsIDUsIDI1NCwgMTkwLCA2MSwgNjgsIDI1LCA1LCAyNTQsIDE5MCwgMjU0LCAKKyAgICAyMDEsIDY4LCAxNiwgMjIwLCA4NiwgMTEwLCA2OCwgMTYsIDIyMCwgODYsIDI0NSwgMzAsIDk4LCA2LCAxLCAyNTQsIDEyMywgCisgICAgOTgsIDYsIDEsIDI1MiwgMTUyLCA5OCwgNiwgMSwgMjQzLCAxMDYsIDk4LCA2LCAxLCAyNDcsIDEyOCwgOTgsIDYsIDEsIAorICAgIDI0NSwgMTUwLCA5OCwgNiwgMSwgMjEzLCAxNjAsIDk4LCA2LCAxLCAyMTAsIDg5LCA5OCwgNiwgMSwgMjE3LCA2MCwgOTgsIAorICAgIDYsIDEsIDIzNSwgMjU1LCA5OCwgNiwgMSwgMjM0LCAyMzQsIDk4LCA2LCAxLCAyMzMsIDgxLCA5OCwgNiwgMSwgMjMxLCAKKyAgICAxODUsIDk4LCA2LCAxLCAyMjksIDE5NSwgOTgsIDYsIDEsIDIyNiwgMTk2LCA5OCwgNiwgMSwgMjI2LCAxNywgOTgsIDYsIDEsIAorICAgIDIxMCwgNzgsIDk4LCA2LCAxLCAyMjMsIDE3MSwgOTgsIDYsIDEsIDIyMSwgMjQzLCA5OCwgNiwgMSwgMjE3LCA1MCwgOTgsIAorICAgIDYsIDEsIDIxNCwgMTkwLCA5OCwgNiwgMSwgMjI1LCAxNDAsIDk4LCA2LCAxLCAyMzQsIDEyMSwgOTgsIDYsIDEsIDI0MiwgCisgICAgMjQxLCA5OCwgNiwgMSwgMjI0LCA3MywgOTgsIDYsIDEsIDIyMCwgMjAsIDk4LCA2LCAxLCAyNTAsIDk3LCA5OCwgNiwgMSwgCisgICAgMjUxLCA3LCA5OCwgNiwgMSwgMjM1LCAxMDAsIDk4LCA2LCAxLCAyNTAsIDQwLCA5OCwgNiwgMSwgMjUwLCAxNDMsIDk4LCA2LCAKKyAgICAxLCAyMTEsIDE2MywgOTgsIDYsIDEsIDIzNSwgMTExLCA5OCwgNiwgMSwgMjQyLCA0MywgOTgsIDYsIDEsIDI0MSwgMjM4LCAKKyAgICA5OCwgNiwgMSwgMjQxLCAxNzUsIDk4LCA2LCAxLCAyMTIsIDIyLCA5OCwgNiwgMSwgMjQyLCA0LCA5OCwgNiwgMSwgMjQxLCAKKyAgICA2NSwgOTgsIDYsIDEsIDIxMCwgMjQ2LCA5OCwgNiwgMSwgMjU0LCAyMzIsIDk4LCAxLCAyNTQsIDEyMywgOTgsIDEsIDI1MiwgCisgICAgMTUyLCA5OCwgMSwgMjQzLCAxMDYsIDk4LCAxLCAyNDcsIDEyOCwgOTgsIDEsIDI0NSwgMTUwLCA5OCwgMSwgMjEzLCAxNjAsIAorICAgIDk4LCAxLCAyMTAsIDg5LCA5OCwgMSwgMjE3LCA2MCwgOTgsIDEsIDIzNSwgMjU1LCA5OCwgMSwgMjM0LCAyMzQsIDk4LCAxLCAKKyAgICAyMzMsIDgxLCA5OCwgMSwgMjMxLCAxODUsIDk4LCAxLCAyMjksIDE5NSwgOTgsIDEsIDIyNiwgMTk2LCA5OCwgMSwgMjI2LCAKKyAgICAxNywgOTgsIDEsIDIxMCwgNzgsIDk4LCAxLCAyMjMsIDE3MSwgOTgsIDEsIDIyMSwgMjQzLCA5OCwgMSwgMjE3LCA1MCwgOTgsIAorICAgIDEsIDIxNCwgMTkwLCA5OCwgMSwgMjI1LCAxNDAsIDk4LCAxLCAyMzQsIDEyMSwgOTgsIDEsIDI0MiwgMjQxLCA5OCwgMSwgCisgICAgMjI0LCA3MywgOTgsIDEsIDIyMCwgMjAsIDk4LCAxLCAyNTAsIDk3LCA5OCwgMSwgMjUxLCA3LCA5OCwgMSwgMjM1LCAxMDAsIAorICAgIDk4LCAxLCAyNTAsIDQwLCA5OCwgMSwgMjUwLCAxNDMsIDk4LCAxLCAyMTEsIDE2MywgOTgsIDEsIDIzNSwgMTExLCA5OCwgMSwgCisgICAgMjQyLCA0MywgOTgsIDEsIDI0MSwgMjM4LCA5OCwgMSwgMjQxLCAxNzUsIDk4LCAxLCAyMTIsIDIyLCA5OCwgMSwgMjQyLCA0LCAKKyAgICA5OCwgMSwgMjQxLCA2NSwgOTgsIDEsIDI0NCwgMTIxLCA5OCwgMSwgMjEwLCAyNDYsIDk4LCAxLCAyNDUsIDE2NSwgOTgsIDEsIAorICAgIDIxNSwgOTQsIDI0MywgMTA2LCA5OCwgMSwgMjU0LCAxOTYsIDk4LCAyMjYsIDE1LCAyMjAsIDEzNywgNTgsIDEsIDk4LCAKKyAgICAyMjksIDE5NSwgOTgsIDEsIDI1NCwgMjMyLCA5OCwgMSwgMjQyLCAzLCA1MCwgOTgsIDEsIDIzMywgMTI3LCA1MCwgMjQsIAorICAgIDEwMCwgMjM0LCA1OCwgMjQsIDEwMCwgMjE4LCAyMTUsIDI0LCAxMDAsIDIyOCwgMjI2LCAyNCwgMTAwLCAyMTYsIDEwMSwgCisgICAgMjQsIDEwMCwgMjE4LCAyMDQsIDI0LCAxMDAsIDIyMywgMjYsIDI0LCAxMDAsIDIzMCwgMjE3LCAyNCwgMTAwLCAyMjUsIDk1LCAKKyAgICAyNCwgMTAwLCAyMTgsIDIxMiwgMjQsIDEwMCwgMjE5LCAxNDgsIDI0LCAxMDAsIDIxOCwgMjA5LCAyNCwgMTAwLCAyMzYsIAorICAgIDU2LCAyNCwgMTAwLCAyNTAsIDQ2LCAyNCwgMTAwLCAyMTgsIDIxOSwgMjQsIDEwMCwgMjUwLCAxMDYsIDI0LCAxMDAsIDIzNCwgCisgICAgMTEwLCAyNCwgMTAwLCAyMTYsIDE3MywgMjQsIDEwMCwgMjI1LCAxMzEsIDI0LCAxMDAsIDI0MSwgMTcyLCAyNCwgMTAwLCAKKyAgICAyMjgsIDIyMiwgMjQsIDEwMCwgMjE4LCAyMTMsIDI0LCAxMDAsIDIyOCwgMjE2LCAyNCwgMTAwLCAyMjgsIDIyMCwgMjQsIAorICAgIDEwMCwgMjE2LCA5OCwgMjQsIDEwMCwgMjIzLCAxNCwgMjQsIDEwMCwgMjE4LCAyMTEsIDI0LCAxMDAsIDIyMywgMjQsIDI0LCAKKyAgICAxMDAsIDIzNCwgMjE4LCAyNCwgMTAwLCAyMzAsIDIxMCwgMjQsIDEwMCwgMjM0LCAyMjEsIDI0LCAxMDAsIDIyNSwgOTAsIAorICAgIDI0LCAxMDAsIDIyNSwgODgsIDI0LCAxMDAsIDIyNSwgNzYsIDI0LCAxMDAsIDIyNSwgODQsIDI0LCAxMDAsIDIyNSwgODIsIAorICAgIDI0LCAxMDAsIDIyNSwgNzksIDI0LCAxMDAsIDIyNSwgODEsIDI0LCAxMDAsIDIyNSwgNzgsIDI0LCAxMDAsIDIyNSwgODMsIAorICAgIDI0LCAxMDAsIDIyNSwgOTMsIDI0LCAxMDAsIDIyNSwgOTQsIDI0LCAxMDAsIDIyNSwgNzcsIDI0LCAxMDAsIDIyNSwgODcsIAorICAgIDI0LCAxMDAsIDIzNCwgMjE5LCAyNCwgMTAwLCAyMzQsIDIxNywgMjQsIDEwMCwgMjE5LCAxNDEsIDI0LCAxMDAsIDIxOSwgCisgICAgMTM5LCAyNCwgMTAwLCAyMTksIDEzMSwgMjQsIDEwMCwgMjE5LCAxMzQsIDI0LCAxMDAsIDIxOSwgMTQwLCAyNCwgMTAwLCAKKyAgICAyMTksIDEzNiwgMjQsIDEwMCwgMjE5LCAxMzUsIDI0LCAxMDAsIDIxOSwgMTMzLCAyNCwgMTAwLCAyMTksIDE0NCwgMjQsIAorICAgIDEwMCwgMjE5LCAxNDYsIDI0LCAxMDAsIDIxOSwgMTQ3LCAyNCwgMTAwLCAyMTksIDE0MiwgMjQsIDEwMCwgMjE5LCAxMzIsIAorICAgIDI0LCAxMDAsIDIxOSwgMTM3LCAyNCwgMTAwLCAyMTksIDE0NSwgMjQsIDEwMCwgMjUwLCA5MCwgMjQsIDEwMCwgMjUwLCA4OCwgCisgICAgMjQsIDEwMCwgMjUwLCAxNjgsIDI0LCAxMDAsIDI1MCwgMTY2LCAyNCwgMTAwLCAyMjYsIDMyLCAyNCwgMTAwLCAyMzYsIDUxLCAKKyAgICAyNCwgMTAwLCAyMzYsIDQyLCAyNCwgMTAwLCAyMzYsIDUwLCAyNCwgMTAwLCAyMzYsIDQ3LCAyNCwgMTAwLCAyMzYsIDQ1LCAKKyAgICAyNCwgMTAwLCAyMzYsIDQ5LCAyNCwgMTAwLCAyMTgsIDIxNiwgMjQsIDEwMCwgMjM2LCA1NCwgMjQsIDEwMCwgMjM2LCA1NSwgCisgICAgMjQsIDEwMCwgMjM2LCA0MywgMjQsIDEwMCwgMjM2LCA0OCwgMjQsIDEwMCwgMjExLCAyNiwgMjQsIDEwMCwgMjUwLCA0NSwgCisgICAgMjQsIDEwMCwgMjUwLCA5MSwgMjQsIDEwMCwgMjUwLCA4OSwgMjQsIDEwMCwgMjUwLCAxNjksIDI0LCAxMDAsIDI1MCwgMTY3LCAKKyAgICAyNCwgMTAwLCAyNTAsIDEwNCwgMjQsIDEwMCwgMjUwLCAxMDUsIDI0LCAxMDAsIDI1MCwgOTIsIDI0LCAxMDAsIDI1MCwgCisgICAgMTcwLCAyNCwgMTAwLCAyMjUsIDEyOSwgMjQsIDEwMCwgMjM0LCAyMjAsIDI0LCAxMDAsIDIxOCwgMjE3LCAyNCwgMTAwLCAKKyAgICAyMTEsIDMyLCAyNCwgMTAwLCAyMzQsIDQ5LCAyNCwgMTAwLCAyMjgsIDIxOCwgMjQsIDEwMCwgMjI4LCAyMjQsIDI0LCAxMDAsIAorICAgIDIyOCwgMjIzLCAyNCwgMTAwLCAyMTYsIDk1LCAyNCwgMTAwLCAyNDQsIDEwMywgMjQsIDE0MywgMjQ0LCAxMDMsIDI0LCAKKyAgICAxNDMsIDYxLCAyNCwgMTQzLCAyNTQsIDI0MywgMjQsIDE0MywgMTkxLCAyNCwgMTQzLCAyMTEsIDkyLCAyNCwgMTQzLCAyNDUsIAorICAgIDExNywgMjQsIDE0MywgNzUsIDI0LCAxNDMsIDIxMSwgMzYsIDI0LCAxNDMsIDIxMSwgNDcsIDI0LCAxNDMsIDc2LCAyNCwgCisgICAgMTQzLCAyMTIsIDY1LCAyNCwgMTQzLCAyMTIsIDYyLCAyNCwgMTQzLCAyMjYsIDIzNCwgMjQsIDE0MywgMjEwLCAyNDQsIDI0LCAKKyAgICAxNDMsIDcwLCAyNCwgMTQzLCAyMTIsIDExLCAyNCwgMTQzLCAyMTIsIDIyLCAyNCwgMTQzLCAyMTEsIDI1MCwgMjQsIDE0MywgCisgICAgMjEwLCAyMTIsIDI0LCAxNDMsIDI0NSwgNTUsIDI0LCAxNDMsIDIxMSwgOCwgMjQsIDE0MywgNzMsIDI0LCAxNDMsIDI1NSwgCisgICAgMTU3LCAyNCwgMTQzLCAyNTUsIDE1NiwgMjQsIDE0MywgMjExLCAxMDYsIDI0LCAxNDMsIDIxMSwgMTA0LCAyNCwgMTQzLCAKKyAgICAyNDUsIDExNSwgMjQsIDE0MywgMjQ1LCAxMTQsIDI0LCAxNDMsIDI0NSwgMTE2LCAyNCwgMTQzLCAyMTEsIDM1LCAyNCwgCisgICAgMTQzLCAyMTEsIDM0LCAyNCwgMTQzLCAyMjcsIDg0LCAyNCwgMTQzLCAyMjcsIDg1LCAyNCwgMTQzLCAyMjcsIDc4LCAyNCwgCisgICAgMTQzLCAyMjcsIDgzLCAyNCwgMTQzLCAyMjcsIDgxLCAyNCwgMTQzLCAyMTAsIDIzOCwgMjQsIDE0MywgMjEwLCAyMzcsIDI0LCAKKyAgICAxNDMsIDIxMCwgMjM2LCAyNCwgMTQzLCAyMTAsIDIzOSwgMjQsIDE0MywgMjEwLCAyNDAsIDI0LCAxNDMsIDIxNSwgMzAsIAorICAgIDI0LCAxNDMsIDIxNSwgMjksIDI0LCAxNDMsIDIxNSwgMjcsIDI0LCAxNDMsIDIxNSwgMjQsIDI0LCAxNDMsIDIxNSwgMjUsIAorICAgIDI0LCAxNDMsIDIxMCwgMjExLCAyNCwgMTQzLCAyMTAsIDIwOCwgMjQsIDE0MywgMjEwLCAyMDksIDI0LCAxNDMsIDIxMCwgCisgICAgMjAzLCAyNCwgMTQzLCAyMTAsIDIwNCwgMjQsIDE0MywgMjEwLCAyMDUsIDI0LCAxNDMsIDIxMCwgMjA3LCAyNCwgMTQzLCAKKyAgICAyNDUsIDQ5LCAyNCwgMTQzLCAyNDUsIDUxLCAyNCwgMTQzLCAyMTEsIDcsIDI0LCAxNDMsIDI0MCwgMTUzLCAyNCwgMTQzLCAKKyAgICAyNDAsIDE0NSwgMjQsIDE0MywgMjQwLCAxNDgsIDI0LCAxNDMsIDI0MCwgMTQ2LCAyNCwgMTQzLCAyNDAsIDE1MCwgMjQsIAorICAgIDE0MywgMjQwLCAxNTIsIDI0LCAxNDMsIDI1NCwgMzQsIDI0LCAxNDMsIDI1NCwgMzEsIDI0LCAxNDMsIDI1NCwgMjksIDI0LCAKKyAgICAxNDMsIDI1NCwgMzAsIDI0LCAxNDMsIDIxOCwgMjIwLCAyNCwgMTQzLCAyNTUsIDE1OCwgMjQsIDE0MywgMjExLCAxMDUsIAorICAgIDI0LCAxNDMsIDIxMSwgMzMsIDI0LCAxNDMsIDIyNywgODAsIDI0LCAxNDMsIDIyNywgNzksIDI0LCA5MCwgMjM0LCA1OCwgCisgICAgMjQsIDkwLCAyMTgsIDIxNSwgMjQsIDkwLCAyMzQsIDUxLCAyNCwgOTAsIDIyOCwgMjI2LCAyNCwgOTAsIDIyOCwgMjI0LCAKKyAgICAyNCwgOTAsIDIyOCwgMjIzLCAyNCwgOTAsIDIxNiwgMTAxLCAyNCwgOTAsIDIyMywgMjYsIDI0LCA5MCwgMjIzLCAyMSwgMjQsIAorICAgIDkwLCAyMjMsIDE4LCAyNCwgOTAsIDIyMywgMTEsIDI0LCA5MCwgMjIzLCA2LCAyNCwgOTAsIDIyMywgMSwgMjQsIDkwLCAKKyAgICAyMjMsIDEyLCAyNCwgOTAsIDIyMywgMjQsIDI0LCA5MCwgMjMwLCAyMTcsIDI0LCA5MCwgMjI1LCA5NSwgMjQsIDkwLCAyMjUsIAorICAgIDg0LCAyNCwgOTAsIDIxOSwgMTQ4LCAyNCwgOTAsIDIxOCwgMjA5LCAyNCwgOTAsIDIzNiwgNTYsIDI0LCA5MCwgMjUwLCA0NiwgCisgICAgMjQsIDkwLCAyNTAsIDEwNiwgMjQsIDkwLCAyMzQsIDExMCwgMjQsIDkwLCAyMTYsIDE3MywgMjQsIDkwLCAyMjUsIDEzMSwgCisgICAgMjQsIDkwLCAyNDEsIDE3MiwgMjQsIDkwLCAyMzQsIDUyLCAyNCwgOTAsIDIzNCwgNTAsIDI0LCA5MCwgMjI4LCAyMjIsIDI0LCAKKyAgICA5MCwgMjI4LCAyMTYsIDI0LCA5MCwgMjI4LCAyMTgsIDI0LCA5MCwgMjI4LCAyMjEsIDI0LCA5MCwgMjI4LCAyMTcsIDI0LCAKKyAgICA5MCwgMjE2LCA5OCwgMjQsIDkwLCAyMTYsIDk1LCAyNCwgOTAsIDIyMywgMTksIDI0LCA5MCwgMjIzLCAxNCwgMjQsIDkwLCAKKyAgICAyMjMsIDAsIDI0LCA5MCwgMjIyLCAyNTUsIDI0LCA5MCwgMjE4LCAyMTEsIDI0LCA5MCwgMjIzLCAxNiwgMjQsIDkwLCAyMjMsIAorICAgIDE1LCAyNCwgOTAsIDIyMywgOCwgMjQsIDkwLCAyMjMsIDEwLCAyNCwgOTAsIDIyMywgMjMsIDI0LCA5MCwgMjIzLCAzLCAyNCwgCisgICAgOTAsIDIyMywgMTMsIDI0LCA5MCwgMjIzLCAyMiwgMjQsIDkwLCAyMjIsIDI1NCwgMjQsIDkwLCAyMzAsIDIxMywgMjQsIDkwLCAKKyAgICAyMzAsIDIwOCwgMjQsIDkwLCAyMzAsIDIxMCwgMjQsIDkwLCAyMzAsIDIwNywgMjQsIDkwLCAyMzAsIDIwNSwgMjQsIDkwLCAKKyAgICAyMzAsIDIxMSwgMjQsIDkwLCAyMzAsIDIxNiwgMjQsIDkwLCAyMzAsIDIxNCwgMjQsIDkwLCAyMzQsIDIyMSwgMjQsIDkwLCAKKyAgICAyMjUsIDg2LCAyNCwgOTAsIDIyNSwgODcsIDI0LCA5MCwgMjI1LCA5MiwgMjQsIDkwLCAyMzQsIDIxOSwgMjQsIDkwLCAyMTksIAorICAgIDE0MSwgMjQsIDkwLCAyMTksIDEzMSwgMjQsIDkwLCAyMTksIDEzNCwgMjQsIDkwLCAyMTksIDEzNiwgMjQsIDkwLCAyMjYsIAorICAgIDMyLCAyNCwgOTAsIDIzNiwgNTEsIDI0LCA5MCwgMjM2LCA0NCwgMjQsIDkwLCAyMTgsIDIxNiwgMjQsIDkwLCAyMzYsIDUyLCAKKyAgICAyNCwgOTAsIDIxMSwgMjYsIDI0LCA5MCwgMjExLCAyMiwgMjQsIDkwLCAyMTEsIDIzLCAyNCwgOTAsIDIyNSwgMTI5LCAyNCwgCisgICAgOTAsIDIzNCwgMjIwLCAyNCwgOTAsIDI0MSwgMTcwLCAyNCwgOTAsIDI0MSwgMTY4LCAyNCwgOTAsIDI0MSwgMTcxLCAyNCwgCisgICAgOTAsIDI0MSwgMTY5LCAyNCwgOTAsIDIxMSwgMzIsIDI0LCA5MCwgMjM0LCA1NCwgMjQsIDkwLCAyMzQsIDUzLCAyNCwgOTAsIAorICAgIDIzNCwgNTcsIDI0LCA5MCwgMjM0LCA1NSwgMjQsIDkwLCAyMzQsIDU2LCAyNCwgOTAsIDIxOCwgMjEzLCAyOSwgMywgMTYyLCAKKyAgICAyOSwgMywgMjQwLCAyMjIsIDI5LCAzLCAyNDEsIDE4MCwgMjksIDMsIDI0MiwgNDYsIDI5LCAzLCAyNDEsIDIyMCwgMjksIDMsIAorICAgIDI0MSwgMjM4LCAyOSwgMywgMjQxLCA2OCwgMjksIDMsIDI0MSwgNjcsIDI5LCAzLCAyMzMsIDEzNSwgMjksIDMsIDIzMiwgCisgICAgOTgsIDI5LCAzLCAyMzIsIDI0MSwgMjksIDMsIDIzMywgMTM0LCAyOSwgMywgMjMzLCA1MCwgMjksIDMsIDIzMywgNTgsIDI5LCAKKyAgICAzLCAyMzIsIDE1NiwgMjksIDMsIDIzMiwgNzAsIDI5LCAzLCAyNDEsIDE4OSwgMjksIDMsIDI0MSwgMTgzLCAyOSwgMywgCisgICAgMjQxLCAxODUsIDI5LCAzLCAyNDEsIDE4OCwgMjksIDMsIDI0MSwgMTg2LCAyOSwgMywgMjQxLCAxODcsIDI5LCAzLCAyNDEsIAorICAgIDE4NCwgMjksIDMsIDI0MSwgMTgyLCAyOSwgMywgMTg0LCAyOSwgMywgMjMwLCAxMDIsIDI5LCAzLCAyMzAsIDIzMCwgMjksIAorICAgIDMsIDIzMSwgMjM3LCAyOSwgMywgMjMxLCA4MCwgMjksIDMsIDIzMSwgOTEsIDI5LCAzLCAyMzAsIDE2MSwgMjksIDMsIDIzMCwgCisgICAgNDIsIDI5LCAzLCAyMTcsIDE2MywgMjksIDMsIDIxNywgMTU3LCAyOSwgMywgMjE3LCAxNTksIDI5LCAzLCAyMTcsIDE2MiwgCisgICAgMjksIDMsIDIxNywgMTYwLCAyOSwgMywgMjE3LCAxNjEsIDI5LCAzLCAyMTcsIDE1OCwgMjksIDMsIDIxNywgMTU2LCAyOSwgCisgICAgMywgMjA1LCAyOSwgMywgMjIyLCAxNDAsIDI5LCAzLCAyMjMsIDM1LCAyOSwgMywgMjIzLCAxODQsIDI5LCAzLCAyMjMsIAorICAgIDEwOCwgMjksIDMsIDIyMywgMTI4LCAyOSwgMywgMjIyLCAyMTEsIDI5LCAzLCAyMjIsIDEwOSwgMjksIDMsIDIwNiwgMjksIAorICAgIDMsIDIxOCwgODMsIDI5LCAzLCAyMTksIDE5MSwgMjksIDMsIDIyMiwgMzEsIDI5LCAzLCAyMjEsIDE3MCwgMjksIDMsIDIyMSwgCisgICAgMTgxLCAyOSwgMywgMjE5LCA1OCwgMjksIDMsIDIxNywgMjUzLCAyOSwgMywgMjIwLCAxMDIsIDI5LCAzLCAyMTksIDIyNSwgCisgICAgMjksIDMsIDIyMCwgMzIsIDI5LCAzLCAyMjAsIDk4LCAyOSwgMywgMjIwLCA2MSwgMjksIDMsIDIyMCwgNjMsIDI5LCAzLCAKKyAgICAyMjAsIDcsIDI5LCAzLCAyMTksIDIwOCwgMjksIDMsIDIyNCwgODgsIDI5LCAzLCAyMjQsIDMwLCAyOSwgMywgMjI0LCA1MywgCisgICAgMjksIDMsIDIyNCwgODcsIDI5LCAzLCAyMjQsIDY4LCAyOSwgMywgMjI0LCA2OSwgMjksIDMsIDIyNCwgNDIsIDI5LCAzLCAKKyAgICAyMjQsIDQxLCAyOSwgMywgMjIzLCAyNDIsIDI5LCAzLCAyMjMsIDIzOCwgMjksIDMsIDIyMywgMjQxLCAyOSwgMywgMjIzLCAKKyAgICAyMzksIDI5LCAzLCAyMjMsIDI0MCwgMjksIDMsIDIyNCwgNjUsIDI5LCAzLCAyMjQsIDU5LCAyOSwgMywgMjI0LCA2MSwgMjksIAorICAgIDMsIDIyNCwgNjQsIDI5LCAzLCAyMjQsIDYyLCAyOSwgMywgMjI0LCA2MywgMjksIDMsIDIyNCwgNjAsIDI5LCAzLCAyMjQsIAorICAgIDU4LCAyOSwgMywgMjI0LCA1NCwgMjksIDMsIDIyNCwgNTcsIDI5LCAzLCAyMjQsIDU1LCAyOSwgMywgMjI0LCA1NiwgMjksIAorICAgIDMsIDI1MiwgMTkxLCAyOSwgMywgMjUxLCAxMjUsIDI5LCAzLCAyNTIsIDYsIDI5LCAzLCAyNTIsIDE4OSwgMjksIDMsIDI1MiwgCisgICAgNjYsIDI5LCAzLCAyNTIsIDc1LCAyOSwgMywgMjUxLCAyMDUsIDI5LCAzLCAyNTEsIDgzLCAyOSwgMywgMjE0LCAyNywgMjksIAorICAgIDMsIDIxMiwgMTE2LCAyOSwgMywgMjEzLCAxNzYsIDI5LCAzLCAyMTQsIDI2LCAyOSwgMywgMjEzLCAyNTAsIDI5LCAzLCAKKyAgICAyMTMsIDI1NSwgMjksIDMsIDIxMywgMTM4LCAyOSwgMywgMjEyLCAxMDcsIDI5LCAzLCAyMTcsIDEwNSwgMjksIDMsIDIxNSwgCisgICAgMTE4LCAyOSwgMywgMjE2LCAxMTcsIDI5LCAzLCAyMTcsIDEwMSwgMjksIDMsIDIxNywgMTEsIDI5LCAzLCAyMTcsIDIyLCAKKyAgICAyOSwgMywgMTExLCAyOSwgMywgMjE1LCA4MCwgMjksIDMsIDI1MSwgMzMsIDI5LCAzLCAyNDksIDExMiwgMjksIDMsIDI1MCwgCisgICAgNTEsIDI5LCAzLCAyNTEsIDMyLCAyOSwgMywgMjUwLCAxODIsIDI5LCAzLCAyNTAsIDE5MCwgMjksIDMsIDI0OSwgMjM4LCAKKyAgICAyOSwgMywgMjQ5LCA4MSwgMjksIDMsIDIxMSwgMTY1LCAyOSwgMywgMjExLCAxNDEsIDI5LCAzLCAyMTEsIDE1NywgMjksIDMsIAorICAgIDIxMSwgMTY0LCAyOSwgMywgMjExLCAxNjEsIDI5LCAzLCAyMTEsIDE2MiwgMjksIDMsIDIxMSwgMTQ4LCAyOSwgMywgMjExLCAKKyAgICAxNDcsIDI5LCAzLCAyMTEsIDEzNiwgMjksIDMsIDIxMSwgMTMyLCAyOSwgMywgMjExLCAxMzUsIDI5LCAzLCAyMTEsIDEzMywgCisgICAgMjksIDMsIDIxMSwgMTM0LCAyOSwgMywgMTk3LCAyOSwgMywgMjI3LCAyMzcsIDI5LCAzLCAyMjgsIDIzMywgMjksIDMsIAorICAgIDIyOSwgMjI1LCAyOSwgMywgMjI5LCAxMDMsIDI5LCAzLCAyMjksIDEwNywgMjksIDMsIDIyOCwgNzQsIDI5LCAzLCAyMjcsIAorICAgIDE3NCwgMjksIDMsIDIyNywgMTY1LCAyOSwgMywgMjI3LCAxMjgsIDI5LCAzLCAyMjcsIDE0OCwgMjksIDMsIDIyNywgMTY0LCAKKyAgICAyOSwgMywgMjI3LCAxNTUsIDI5LCAzLCAyMjcsIDE1NiwgMjksIDMsIDIyNywgMTM0LCAyOSwgMywgMjI3LCAxMTksIDI5LCAKKyAgICAzLCAyNDIsIDE4MCwgNjEsIDI5LCAzLCAyNDIsIDE4MCwgNzAsIDI5LCAzLCAyNDIsIDE4MCwgNzMsIDI5LCAzLCAyNDIsIAorICAgIDE4MCwgMjU1LCA3MywgMjksIDMsIDI0MiwgMTgwLCAyNDUsIDIwOSwgMjksIDMsIDI0MiwgMTgwLCA3NSwgMjksIDMsIDI0MiwgCisgICAgMTgwLCA3NiwgMjksIDMsIDI0MiwgMTgwLCAyMTIsIDY1LCAyOSwgMywgMTc2LCAyOSwgMywgMjMzLCAyMTcsIDI5LCAzLCAKKyAgICAyMzQsIDkyLCAyOSwgMywgMjM1LCAxMCwgMjksIDMsIDIzNCwgMTgxLCAyOSwgMywgMjM0LCAxODIsIDI5LCAzLCAyMzQsIAorICAgIDI4LCAyOSwgMywgMjM0LCAyNywgMjksIDMsIDIzMywgMTgyLCAyOSwgMywgMjMzLCAxNzYsIDI5LCAzLCAyMzMsIDE4MSwgCisgICAgMjksIDMsIDIzMywgMTc3LCAyOSwgMywgMjMzLCAxNzgsIDI5LCAzLCAyMzMsIDE3MSwgMjksIDMsIDIzMywgMTY1LCAyOSwgCisgICAgMywgMjMzLCAxNjcsIDI5LCAzLCAyMzMsIDE3MCwgMjksIDMsIDIzMywgMTY4LCAyOSwgMywgMjMzLCAxNjksIDI5LCAzLCAKKyAgICAyMzMsIDE2NiwgMjksIDMsIDIzMywgMTY0LCAyOSwgMywgMjMzLCAxNjAsIDI5LCAzLCAyMzMsIDE2MywgMjksIDMsIDIzMywgCisgICAgMTYxLCAyOSwgMywgMjMzLCAxNjIsIDI5LCAzLCAyMTIsIDY1LCAyOSwgMywgMjExLCAxOTUsIDI5LCAzLCAyMTEsIDI1MCwgCisgICAgMjksIDMsIDIxMiwgNjQsIDI5LCAzLCAyMTIsIDE3LCAyOSwgMywgMjEyLCAyMiwgMjksIDMsIDIxMSwgMjI3LCAyOSwgMywgCisgICAgMjExLCAyMjYsIDI5LCAzLCAyMjUsIDEzOSwgNjEsIDI5LCAzLCAyMjUsIDEzOSwgNzAsIDI5LCAzLCAyMjUsIDEzOSwgNzMsIAorICAgIDI5LCAzLCAyMjUsIDEzOSwgMjU1LCA3MywgMjksIDMsIDIyNSwgMTM5LCAyNDUsIDIwOSwgMjksIDMsIDIyNSwgMTM5LCA3NSwgCisgICAgMjksIDMsIDIyNSwgMTM5LCA3NiwgMjksIDMsIDIxMCwgMTE2LCAyOSwgMywgMjEwLCAxMywgMjksIDMsIDIxMCwgNDQsIDI5LCAKKyAgICAzLCAyMTAsIDExNSwgMjksIDMsIDIxMCwgOTIsIDI5LCAzLCAyMTAsIDk0LCAyOSwgMywgMjEwLCAyMywgMjksIDMsIDIxMCwgCisgICAgMCwgMjksIDMsIDIxMCwgODIsIDI5LCAzLCAyMTAsIDYyLCAyOSwgMywgMjEwLCA2OSwgMjksIDMsIDIxMCwgODEsIDI5LCAzLCAKKyAgICAyMTAsIDczLCAyOSwgMywgMjEwLCA3NCwgMjksIDMsIDIxMCwgNjcsIDI5LCAzLCAyMTAsIDUzLCAyOSwgMywgMTkxLCAyOSwgCisgICAgMywgMjEwLCAyMTIsIDI5LCAzLCAyMTEsIDgsIDI5LCAzLCAyMTEsIDEwMywgMjksIDMsIDIxMSwgNDQsIDI5LCAzLCAyMTEsIAorICAgIDQ3LCAyOSwgMywgMjEwLCAyNDQsIDI5LCAzLCAyMTAsIDIzNSwgMjksIDMsIDI0OCwgMjIxLCAyOSwgMywgMjQ2LCA3OCwgCisgICAgMjksIDMsIDI0OCwgMywgMjksIDMsIDI0OCwgMjIwLCAyOSwgMywgMjQ4LCA3NywgMjksIDMsIDI0OCwgOTAsIDI5LCAzLCAKKyAgICAyNDcsIDE0NSwgMjksIDMsIDI0NiwgNDcsIDI5LCAzLCAyNDgsIDEzNSwgMjksIDMsIDI0OCwgMTAwLCAyOSwgMywgMjQ4LCAKKyAgICAxMTIsIDI5LCAzLCAyNDgsIDEzNCwgMjksIDMsIDI0OCwgMTIyLCAyOSwgMywgMjQ4LCAxMjMsIDI5LCAzLCAyNDgsIDEwNSwgCisgICAgMjksIDMsIDI0OCwgOTEsIDI5LCAzLCAyMzUsIDE0MSwgMjksIDMsIDIzNSwgNTEsIDI5LCAzLCAyMzUsIDEwOCwgMjksIDMsIAorICAgIDIzNSwgMTQwLCAyOSwgMywgMjM1LCAxMjQsIDI5LCAzLCAyMzUsIDEyNiwgMjksIDMsIDIzNSwgNjgsIDI5LCAzLCAyMzUsIAorICAgIDMxLCAyOSwgMywgMjQzLCAxMzUsIDI5LCAzLCAyNDIsIDExMywgMjksIDMsIDI0MiwgMjE0LCAyOSwgMywgMjQzLCAxMzIsIAorICAgIDI5LCAzLCAyNDMsIDU1LCAyOSwgMywgMjQzLCA2MiwgMjksIDMsIDI0MiwgMTc0LCAyOSwgMywgMjQyLCAxNzMsIDI5LCAzLCAKKyAgICAyNDIsIDc4LCAyOSwgMywgMjQyLCA3NCwgMjksIDMsIDI0MiwgNzcsIDI5LCAzLCAyNDIsIDc1LCAyOSwgMywgMjQyLCA3NiwgCisgICAgMjksIDMsIDI0MywgMjksIDI5LCAzLCAyNDMsIDksIDI5LCAzLCAyNDMsIDE5LCAyOSwgMywgMjQzLCAyOCwgMjksIDMsIAorICAgIDI0MywgMjMsIDI5LCAzLCAyNDMsIDI0LCAyOSwgMywgMjQzLCAxMywgMjksIDMsIDI0MiwgMjU0LCAyOSwgMywgMjE2LCAKKyAgICAyMDgsIDI5LCAzLCAyMTYsIDEzNiwgMjksIDMsIDIxNiwgMTc1LCAyOSwgMywgMjE2LCAyMDcsIDI5LCAzLCAyMTYsIDE5NCwgCisgICAgMjksIDMsIDIxNiwgMTk1LCAyOSwgMywgMjE2LCAxNTYsIDI5LCAzLCAyMTYsIDEyOCwgMjksIDMsIDI1MCwgMTU3LCAyOSwgCisgICAgMywgMjUwLCA2OSwgMjksIDMsIDI1MCwgMTEwLCAyOSwgMywgMjUwLCAxNTYsIDI5LCAzLCAyNTAsIDEyOCwgMjksIDMsIAorICAgIDI1MCwgMTMxLCAyOSwgMywgMjUwLCA4NiwgMjksIDMsIDI1MCwgNTgsIDI5LCAzLCAyMjUsIDE0NywgMjksIDMsIDIyNSwgCisgICAgMTE0LCAyOSwgMywgMjI1LCAxMzMsIDI5LCAzLCAyMjUsIDE0NiwgMjksIDMsIDIyNSwgMTM1LCAyOSwgMywgMjI1LCAxMzYsIAorICAgIDI5LCAzLCAyMjUsIDEyMSwgMjksIDMsIDIyNSwgMTEwLCAyOSwgMywgMjE1LCAxODMsIDI5LCAzLCAyMTUsIDE2MywgMjksIAorICAgIDMsIDIxNSwgMTY3LCAyOSwgMywgMjE1LCAxODIsIDI5LCAzLCAyMTUsIDE3NywgMjksIDMsIDIxNSwgMTc4LCAyOSwgMywgCisgICAgMjE1LCAxNjYsIDI5LCAzLCAyMTUsIDE2MSwgMjksIDMsIDIxNSwgMzksIDI5LCAzLCAyMTUsIDMxLCAyOSwgMywgMjE1LCAKKyAgICAzNSwgMjksIDMsIDIxNSwgMzgsIDI5LCAzLCAyMTUsIDM2LCAyOSwgMywgMjE1LCAzNywgMjksIDMsIDIxNSwgMzMsIDI5LCAKKyAgICAzLCAyMTUsIDMyLCAyOSwgMywgMjQ0LCAxOTYsIDI5LCAzLCAyNDMsIDIzNCwgMjksIDMsIDI0NCwgMTIxLCAyOSwgMywgCisgICAgMjQ0LCAxOTUsIDI5LCAzLCAyNDQsIDE0NywgMjksIDMsIDI0NCwgMTU0LCAyOSwgMywgMjQ0LCA0MywgMjksIDMsIDI0MywgCisgICAgMjEzLCAyOSwgMywgMTkwLCAyOSwgMywgMjI0LCAxNTAsIDI5LCAzLCAyMjUsIDEwOCwgMjksIDMsIDIyNiwgODksIDI5LCAzLCAKKyAgICAyMjUsIDIxMSwgMjksIDMsIDIyNSwgMjIxLCAyOSwgMywgMjI1LCAxNiwgMjksIDMsIDIyNCwgMTE0LCAyOSwgMywgMjIyLCAKKyAgICA5OSwgMjksIDMsIDIzMCwgMzEsIDI5LCAzLCAyNDMsIDIwNywgMjksIDM4LCAyNDMsIDUzLCAyMiwgMjUsIDIzMywgMjMsIAorICAgIDc4LCAyOSwgMzgsIDI1LCAyMzMsIDIzLCA3OCwgMjksIDM4LCAyNDMsIDUzLCA3OCwgMjksIDIyMSwgMTczLCA3OCwgMjksIAorICAgIDIxMSwgMjA4LCAyOSwgMjQzLCAyMjksIDIxOCwgMTI5LCAyOSwgMjQ5LCAyMTksIDI5LCAyMjAsIDE1MCwgMjksIDI0OSwgCisgICAgMjI2LCAyOSwgMjI0LCAxOTksIDI0OSwgMjI2LCAyOSwgMjI0LCAxMywgNzgsIDI5LCAyMjYsIDE1LCAyMjAsIDEzNywgMjksIAorICAgIDIxLCAxMTAsIDI5LCAyMSwgMTA1LCAyOSwgMjEsIDE1OCwgMjksIDIxLCAxNjEsIDI5LCAyMSwgMTg5LCAyOSwgMjEsIDE5NCwgCisgICAgMjksIDIxLCAxOTgsIDI5LCAyMSwgMTk1LCAyOSwgMjEsIDIwMCwgMjksIDU0LCAyMTYsIDI0NywgMjksIDU0LCAyMTUsIDczLCAKKyAgICAyOSwgNTQsIDIxNiwgMTYyLCAyOSwgNTQsIDI0NCwgMTUsIDI5LCA1NCwgMjQ0LCAxMTQsIDI5LCA1NCwgMjE5LCAxMTEsIAorICAgIDI5LCA1NCwgMjIwLCAxMTYsIDI5LCA1NCwgMjQ1LCAxODQsIDI5LCA1NCwgMjI4LCAxOTUsIDI5LCA1NCwgMjQwLCAyMTAsIAorICAgIDI5LCA1NCwgMjE2LCAyNDgsIDIxNiwgMTQ3LCAyOSwgMywgMjIxLCAxNzcsIDIzMCwgNDIsIDI5LCAzLCAyMzAsIDM4LCAyOSwgCisgICAgMywgMjMwLCAzOSwgMjksIDMsIDIzMCwgNDAsIDI5LCAzLCAyMjEsIDE3NywgMjUxLCA4MywgMjksIDMsIDI1MSwgODAsIDI5LCAKKyAgICAzLCAyNTEsIDgxLCAyOSwgMywgMjUxLCA4MiwgMjksIDMsIDIyMSwgMTc3LCAyNDMsIDIxMywgMjksIDMsIDI0MywgMjA5LCAKKyAgICAyOSwgMywgMjQzLCAyMTAsIDI5LCAzLCAyNDMsIDIxMSwgMjksIDMsIDIyMSwgMTc3LCAyMjQsIDExNCwgMjksIDMsIDIyNCwgCisgICAgMTEwLCAyOSwgMywgMjI0LCAxMTEsIDI5LCAzLCAyMjQsIDExMiwgMjksIDIxNiwgMzEsIDE2NCwgMjEwLCAyNDcsIDI5LCAKKyAgICAyMTYsIDMxLCAxNjQsIDI0OCwgNDEsIDI5LCAyMTYsIDMxLCAxNjQsIDIyMiwgMjM4LCAyOSwgMjE2LCAzMSwgMTY0LCAyMTksIAorICAgIDI1MSwgMjIyLCAyMzgsIDI5LCAyMTYsIDMxLCAxNjQsIDI0NywgMjM1LCAyOSwgMjE2LCAzMSwgMTY0LCAyMzQsIDE2NCwgCisgICAgMjksIDIxNiwgMzEsIDE2NCwgMjUwLCA5NCwgMjksIDIxNiwgMzEsIDE2NCwgMjQxLCAxNzcsIDI5LCAyMTYsIDMxLCAxNjQsIAorICAgIDI0OCwgNDAsIDI5LCAyMTYsIDMxLCAxNjQsIDIzMywgMTk0LCAxNjksIDEsIDYxLCAxNjksIDEsIDc1LCAxNjksIDEsIDczLCAKKyAgICAxNjksIDEsIDc2LCAxNjksIDEsIDcwLCAxNjksIDEsIDIxNCwgMTA1LCAxNjksIDEsIDI0MywgMTM1LCAxNjksIDEsIDE3NiwgCisgICAgMTY5LCAxLCAyNDMsIDYyLCAxNjksIDEsIDI0MiwgMjE0LCAxNjksIDEsIDI0MiwgMTc0LCAxNjksIDEsIDI0MiwgMTEzLCAKKyAgICAxNjksIDEsIDI0MiwgNzksIDE2OSwgMSwgMTYyLCAxNjksIDEsIDI0MSwgMjM4LCAxNjksIDEsIDI0MSwgMTgwLCAxNjksIDEsIAorICAgIDI0MSwgNjgsIDE2OSwgMSwgMjQwLCAyMjIsIDE2OSwgMSwgMjQwLCAyMDEsIDE2OSwgMSwgMjMzLCAxMzUsIDE2OSwgMSwgCisgICAgMjMzLCA1OCwgMTY5LCAxLCAyMzIsIDI0MSwgMTY5LCAxLCAyMzIsIDE1NiwgMTY5LCAxLCAyMzIsIDk4LCAxNjksIDEsIAorICAgIDIzMiwgNzEsIDE2OSwgMSwgMTg0LCAxNjksIDEsIDIzMSwgOTEsIDE2OSwgMSwgMjMwLCAyMzAsIDE2OSwgMSwgMjMwLCAKKyAgICAxNjEsIDE2OSwgMSwgMjMwLCAxMDIsIDE2OSwgMSwgMTk3LCAxNjksIDEsIDI0MSwgOTAsIDE2OSwgMSwgMjI5LCAyMTMsIAorICAgIDE2OSwgMSwgMjI5LCAxMDcsIDE2OSwgMSwgMjI4LCAyMzMsIDE2OSwgMSwgMjI4LCA3NCwgMTY5LCAxLCAyMjcsIDIzNywgCisgICAgMTY5LCAxLCAyMjcsIDE3NiwgMTY5LCAxLCAyMjQsIDI5LCAxNjksIDEsIDIyNCwgMTYsIDE2OSwgMSwgMjI0LCA5LCAxNjksIAorICAgIDEsIDIyNCwgMSwgMTY5LCAxLCAyMjMsIDI0NiwgMTY5LCAxLCAyMjMsIDI0NCwgMTY5LCAxLCAyMDYsIDE2OSwgMSwgMjIyLCAKKyAgICA5MSwgMTY5LCAxLCAyMjEsIDE4MSwgMTY5LCAxLCAyMTksIDE5MSwgMTY5LCAxLCAyMTksIDU4LCAxNjksIDEsIDIxOCwgODMsIAorICAgIDE2OSwgMSwgMjE4LCAyLCAxNjksIDEsIDI0OCwgMjIxLCAxNjksIDEsIDIxNywgMTA1LCAxNjksIDEsIDI0OCwgOTAsIDE2OSwgCisgICAgMSwgMjE3LCAyMiwgMTY5LCAxLCAyNDgsIDMsIDE2OSwgMSwgMjE2LCAxMTcsIDE2OSwgMSwgMjQ3LCAxNDUsIDE2OSwgMSwgCisgICAgMjQ2LCA3OCwgMTY5LCAxLCAyNDYsIDUwLCAxNjksIDEsIDI0NywgMTU2LCAxNjksIDEsIDIxNiwgNTksIDE2OSwgMSwgMjE2LCAKKyAgICA1OCwgMTY5LCAxLCAyMTYsIDQ3LCAxNjksIDEsIDIxNiwgNDYsIDE2OSwgMSwgMjE2LCA0NSwgMTY5LCAxLCAyMTYsIDQ0LCAKKyAgICAxNjksIDEsIDIxNSwgMTgzLCAxNjksIDEsIDIxNSwgMTc4LCAxNjksIDEsIDIxNSwgMTY3LCAxNjksIDEsIDIxNSwgMTY2LCAKKyAgICAxNjksIDEsIDIxNSwgMTYzLCAxNjksIDEsIDIxNSwgMTYyLCAxNjksIDEsIDIxMiwgNjUsIDE2OSwgMSwgMjEyLCAyMiwgCisgICAgMTY5LCAxLCAyMTEsIDI1MCwgMTY5LCAxLCAyMTEsIDIyNywgMTY5LCAxLCAyMTEsIDE5NSwgMTY5LCAxLCAyMTEsIDE4MywgCisgICAgMTY5LCAxLCAxOTEsIDE2OSwgMSwgMjExLCA0NywgMTY5LCAxLCAyMTEsIDgsIDE2OSwgMSwgMjEwLCAyNDQsIDE2OSwgMSwgCisgICAgMjEwLCAyMTIsIDE2OSwgMSwgMjEwLCAxNzcsIDE4LCAxOSwgMjQwLCAxNjgsIDE4LCAxOSwgNzUsIDE4LCAxOSwgMjU1LCAKKyAgICAzNywgMTgsIDE5LCA3MywgMTgsIDE5LCAyMzYsIDMzLCAxOCwgMTksIDc2LCAxOCwgMTksIDIyNiwgMTgzLCAxOCwgMTksIAorICAgIDIxMSwgMTE2LCAyMjYsIDE4MywgMTgsIDE5LCA3MiwgMjQ1LCAyMDksIDE4LCAxOSwgNzIsIDczLCAxOCwgMTksIDYxLCAxOCwgCisgICAgMTksIDI1NSwgNzMsIDE4LCAxOSwgMjEyLCAyMiwgMTgsIDE5LCAxNTksIDIxMiwgMjIsIDE4LCAxOSwgMjExLCAyNTAsIDE4LCAKKyAgICAxOSwgMTU5LCAyMTEsIDI1MCwgMTgsIDE5LCAyMTEsIDI0MiwgMTgsIDE5LCAxNTksIDIxMSwgMjQyLCAxOCwgMTksIDIxMSwgCisgICAgMjI3LCAxOCwgMTksIDE1OSwgMjExLCAyMjcsIDE4LCAxOSwgMjExLCAyMTUsIDE4LCAxOSwgMTU5LCAyMTEsIDIxNSwgMTgsIAorICAgIDE5LCAyMjksIDE5MCwgMjExLCAyMTUsIDE4LCAxOSwgMjEyLCA2NSwgMTgsIDE5LCAxNTksIDIxMiwgNjUsIDE4LCAxOSwgCisgICAgMjEyLCA2NCwgMTgsIDE5LCAxNTksIDIxMiwgNjQsIDE4LCAxOSwgMjI5LCAxOTAsIDIxMiwgNjQsIDE4LCAxOSwgMjU0LCAKKyAgICAyMDEsIDE4LCAxOSwgMjExLCAxMTYsIDIxMiwgOTgsIDE4LCAxOSwgMjQyLCAxODAsIDIxOCwgMTI5LCAxOCwgMTksIDQwLCAKKyAgICAxNDIsIDE4LCAxOSwgNDAsIDI0MiwgMTM2LCAxOCwgMTksIDQwLCAyNTEsIDE3NSwgMTYzLCAyMjIsIDIzMywgMTgsIDE5LCAKKyAgICA0MCwgMjE2LCAxNCwgMTYzLCAyMjIsIDIzMywgMTgsIDE5LCA0MCwgNDQsIDE2MywgMjIyLCAyMzMsIDE4LCAxOSwgNDAsIAorICAgIDIyMiwgMjMzLCAxOCwgMTksIDQwLCA1MiwgMTQyLCAxOCwgMTksIDQwLCA1MiwgMjE5LCAyNTEsIDY3LCAyMTgsIDkwLCAxOCwgCisgICAgMTksIDQwLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDE4LCAxOSwgNDAsIDIxOSwgMjUxLCAyMDMsIDkxLCAxOCwgMTksIDQwLCAKKyAgICAyMjUsIDIyLCAxOCwgMTksIDQwLCAxMjQsIDIxNywgODcsIDE4LCAxOSwgMjQ1LCAxNTAsIDE4LCAxOSwgMjM1LCAyNTUsIAorICAgIDE4LCAxOSwgMjI2LCAxOTYsIDE4LCAxOSwgMjU0LCAxMjMsIDE4LCAxOSwgMjI1LCAyMjEsIDE4LCAxOSwgMjI2LCA4NywgCisgICAgMTgsIDE5LCAyMjUsIDEwOCwgMTgsIDE5LCAyMjUsIDcxLCAxOCwgMTksIDIyNSwgMTYsIDE4LCAxOSwgMjI0LCAyNDksIDE4LCAKKyAgICAxOSwgMjExLCAxMTYsIDIyNCwgMjQ5LCAxOCwgMTksIDcyLCAyNDEsIDIyMCwgMTgsIDE5LCA3MiwgMjQxLCAxODAsIDE4LCAKKyAgICAxOSwgMTkwLCAxOCwgMTksIDIyNiwgODksIDE4LCAxOSwgMjI0LCAxMTIsIDE4LCAxOSwgMTU5LCAyMjQsIDExMiwgMTgsIAorICAgIDE5LCAyMjQsIDExMCwgMTgsIDE5LCAxNTksIDIyNCwgMTEwLCAxOCwgMTksIDIyNCwgMTA5LCAxOCwgMTksIDE1OSwgMjI0LCAKKyAgICAxMDksIDE4LCAxOSwgMjI0LCAxMDcsIDE4LCAxOSwgMTU5LCAyMjQsIDEwNywgMTgsIDE5LCAyMjQsIDEwNiwgMTgsIDE5LCAKKyAgICAxNTksIDIyNCwgMTA2LCAxOCwgMTksIDIyNCwgMTE0LCAxOCwgMTksIDE1OSwgMjI0LCAxMTQsIDE4LCAxOSwgMjI0LCAxMTMsIAorICAgIDE4LCAxOSwgMTU5LCAyMjQsIDExMywgMTgsIDE5LCAyMTEsIDExNiwgMjI0LCAxMTMsIDE4LCAxOSwgMjI2LCAxMDUsIDE4LCAKKyAgICAxOSwgMTU5LCAyMjYsIDEwNSwgMTgsIDE5LCA3MiwgMjQyLCA2MCwgMTgsIDE5LCAyMTcsIDIyLCAxOCwgMTksIDIxNywgOTksIAorICAgIDE4LCAxOSwgMjE2LCAxMTcsIDE4LCAxOSwgMjE2LCAxMDMsIDE4LCAxOSwgMTExLCAxOCwgMTksIDIxNiwgMTcsIDE4LCAxOSwgCisgICAgMjExLCAxMTYsIDIxNiwgMTcsIDE4LCAxOSwgNzIsIDI0OCwgNzcsIDE4LCAxOSwgNzIsIDI0OCwgMywgMTgsIDE5LCAyMTcsIAorICAgIDEwNSwgMTgsIDE5LCAyMTcsIDEwMSwgMTgsIDE5LCAyMTUsIDc4LCAxOCwgMTksIDE1OSwgMjE1LCA3OCwgMTgsIDE5LCAKKyAgICAyMTUsIDYyLCAxOCwgMTksIDE1OSwgMjE1LCA2MiwgMTgsIDE5LCAyMTUsIDYxLCAxOCwgMTksIDE1OSwgMjE1LCA2MSwgMTgsIAorICAgIDE5LCAxMDUsIDE4LCAxOSwgMTU5LCAxMDUsIDE4LCAxOSwgMjE1LCA1NCwgMTgsIDE5LCAxNTksIDIxNSwgNTQsIDE4LCAxOSwgCisgICAgMjE1LCA4MCwgMTgsIDE5LCAxNTksIDIxNSwgODAsIDE4LCAxOSwgMjE1LCA3OSwgMTgsIDE5LCAxNTksIDIxNSwgNzksIDE4LCAKKyAgICAxOSwgMjI5LCAxOTAsIDIxNSwgNzksIDE4LCAxOSwgMjE3LCAxNTIsIDE4LCAxOSwgMjE1LCAxNTEsIDE4LCAxOSwgMjE1LCAKKyAgICAxMzUsIDE4LCAxOSwgMjE1LCAxMzMsIDE4LCAxOSwgMjE1LCAxNTYsIDE4LCAxOSwgMjM0LCAxODIsIDE4LCAxOSwgMjM1LCAKKyAgICA3LCAxOCwgMTksIDIzNCwgOTIsIDE4LCAxOSwgMjM0LCA4MywgMTgsIDE5LCAyMzQsIDI4LCAxOCwgMTksIDIzNCwgMTAsIAorICAgIDE4LCAxOSwgMjExLCAxMTYsIDIzNCwgMTAsIDE4LCAxOSwgMTc2LCAxOCwgMTksIDIzNSwgMTAsIDE4LCAxOSwgMjMzLCAKKyAgICAxNzgsIDE4LCAxOSwgMTU5LCAyMzMsIDE3OCwgMTgsIDE5LCAyMzMsIDE3NiwgMTgsIDE5LCAxNTksIDIzMywgMTc2LCAxOCwgCisgICAgMTksIDIzMywgMTc1LCAxOCwgMTksIDE1OSwgMjMzLCAxNzUsIDE4LCAxOSwgMjMzLCAxNzQsIDE4LCAxOSwgMTU5LCAyMzMsIAorICAgIDE3NCwgMTgsIDE5LCAyMzMsIDE3MywgMTgsIDE5LCAxNTksIDIzMywgMTczLCAxOCwgMTksIDIzMywgMTgyLCAxOCwgMTksIAorICAgIDE1OSwgMjMzLCAxODIsIDE4LCAxOSwgMjMzLCAxODEsIDE4LCAxOSwgMTU5LCAyMzMsIDE4MSwgMTgsIDE5LCAyMjksIDE5MCwgCisgICAgMjMzLCAxODEsIDE4LCAxOSwgMjM1LCAyMywgMTgsIDE5LCAyMzMsIDE4MywgMTgsIDE5LCAyMTksIDI3LCAyMzQsIDE3NiwgCisgICAgMTgsIDE5LCAyMTksIDI3LCAyMzQsIDg0LCAxOCwgMTksIDIxOSwgMjcsIDIzNCwgMjMsIDE4LCAxOSwgMjE5LCAyNywgMjM0LCAKKyAgICAyNDgsIDE4LCAxOSwgMjUwLCAxOTAsIDE4LCAxOSwgMjUxLCAzMSwgMTgsIDE5LCAyNTAsIDUxLCAxOCwgMTksIDI1MCwgNDEsIAorICAgIDE4LCAxOSwgMjQ5LCAyMzgsIDE4LCAxOSwgMjQ5LCAxNzQsIDE4LCAxOSwgMjExLCAxMTYsIDI0OSwgMTc0LCAxOCwgMTksIAorICAgIDI1MSwgMzMsIDE4LCAxOSwgMjUxLCAzMiwgMTgsIDE5LCAyNDksIDc5LCAxOCwgMTksIDE1OSwgMjQ5LCA3OSwgMTgsIDE5LCAKKyAgICAyNDksIDc3LCAxOCwgMTksIDE1OSwgMjQ5LCA3NywgMTgsIDE5LCAyNDksIDc2LCAxOCwgMTksIDE1OSwgMjQ5LCA3NiwgMTgsIAorICAgIDE5LCAyNDksIDc1LCAxOCwgMTksIDE1OSwgMjQ5LCA3NSwgMTgsIDE5LCAyNDksIDc0LCAxOCwgMTksIDE1OSwgMjQ5LCA3NCwgCisgICAgMTgsIDE5LCAyNDksIDgxLCAxOCwgMTksIDE1OSwgMjQ5LCA4MSwgMTgsIDE5LCAyNDksIDgwLCAxOCwgMTksIDE1OSwgMjQ5LCAKKyAgICA4MCwgMTgsIDE5LCAyMjksIDE5MCwgMjQ5LCA4MCwgMTgsIDE5LCAyNTEsIDY2LCAxOCwgMTksIDIyMSwgMjA5LCAyMTYsIAorICAgIDIxMCwgMTgsIDE5LCAyMzEsIDkxLCAxOCwgMTksIDIzMSwgMjM2LCAxOCwgMTksIDIzMCwgMjMwLCAxOCwgMTksIDIzMCwgCisgICAgMjAxLCAxOCwgMTksIDIzMCwgMTYxLCAxOCwgMTksIDIzMCwgMTMyLCAxOCwgMTksIDIxMSwgMTE2LCAyMzAsIDEzMiwgMTgsIAorICAgIDE5LCAxODQsIDE4LCAxOSwgMjMxLCAyMzcsIDE4LCAxOSwgMjMwLCA0MCwgMTgsIDE5LCAxNTksIDIzMCwgNDAsIDE4LCAxOSwgCisgICAgMjMwLCAzOCwgMTgsIDE5LCAxNTksIDIzMCwgMzgsIDE4LCAxOSwgMjMwLCAzNywgMTgsIDE5LCAxNTksIDIzMCwgMzcsIDE4LCAKKyAgICAxOSwgMjMwLCAzNiwgMTgsIDE5LCAxNTksIDIzMCwgMzYsIDE4LCAxOSwgMjMwLCAzNSwgMTgsIDE5LCAxNTksIDIzMCwgMzUsIAorICAgIDE4LCAxOSwgMjMwLCA0MiwgMTgsIDE5LCAxNTksIDIzMCwgNDIsIDE4LCAxOSwgMjMwLCA0MSwgMTgsIDE5LCAxNTksIDIzMCwgCisgICAgNDEsIDE4LCAxOSwgMjI5LCAxOTAsIDIzMCwgNDEsIDE4LCAxOSwgMTkzLCAxOCwgMTksIDE1OSwgMTkzLCAxOCwgMTksIAorICAgIDIzMCwgMjM0LCAxOCwgMTksIDI1MywgMjA1LCAxOTMsIDE4LCAxOSwgMjIxLCAyMDksIDE5MywgMTgsIDE5LCAyMjksIDEwNywgCisgICAgMTgsIDE5LCAyMjksIDIyNCwgMTgsIDE5LCAyMjgsIDIzMywgMTgsIDE5LCAyMjgsIDIwOCwgMTgsIDE5LCAyMjgsIDc0LCAKKyAgICAxOCwgMTksIDIyOCwgNjQsIDE4LCAxOSwgMjExLCAxMTYsIDIyOCwgNjQsIDE4LCAxOSwgMTk3LCAxOCwgMTksIDIyOSwgCisgICAgMjI1LCAxOCwgMTksIDIyNywgMTcyLCAxOCwgMTksIDE1OSwgMjI3LCAxNzIsIDE4LCAxOSwgMjI3LCAxNzQsIDE4LCAxOSwgCisgICAgMTU5LCAyMjcsIDE3NCwgMTgsIDE5LCAyMjcsIDE3MywgMTgsIDE5LCAxNTksIDIyNywgMTczLCAxOCwgMTksIDIyOSwgMTkwLCAKKyAgICAyMjcsIDE3MywgMTgsIDE5LCAyMzAsIDI1LCAxOCwgMTksIDcyLCAyMjksIDc5LCAxOCwgMTksIDIyOCwgMjM4LCAxOCwgMTksIAorICAgIDIzMywgNTgsIDE4LCAxOSwgMjMzLCAxMzMsIDE4LCAxOSwgMjMyLCAyNDEsIDE4LCAxOSwgMjMyLCAyMjcsIDE4LCAxOSwgCisgICAgMjMyLCAxNTYsIDE4LCAxOSwgMjMyLCAxMjcsIDE4LCAxOSwgMjExLCAxMTYsIDIzMiwgMTI3LCAxOCwgMTksIDIzMywgMTM1LCAKKyAgICAxOCwgMTksIDIzMywgMTM0LCAxOCwgMTksIDIzMiwgNjgsIDE4LCAxOSwgMTU5LCAyMzIsIDY4LCAxOCwgMTksIDIzMiwgNjcsIAorICAgIDE4LCAxOSwgMTU5LCAyMzIsIDY3LCAxOCwgMTksIDIzMiwgNjYsIDE4LCAxOSwgMTU5LCAyMzIsIDY2LCAxOCwgMTksIDIzMiwgCisgICAgNjUsIDE4LCAxOSwgMTU5LCAyMzIsIDY1LCAxOCwgMTksIDIzMiwgNjQsIDE4LCAxOSwgMTU5LCAyMzIsIDY0LCAxOCwgMTksIAorICAgIDIzMiwgNzAsIDE4LCAxOSwgMTU5LCAyMzIsIDcwLCAxOCwgMTksIDIzMiwgNjksIDE4LCAxOSwgMTU5LCAyMzIsIDY5LCAxOCwgCisgICAgMTksIDE1NiwgMTgsIDE5LCAxNTksIDE1NiwgMTgsIDE5LCAxNDcsIDE1NiwgMTgsIDE5LCAyMjEsIDE4MSwgMTgsIDE5LCAKKyAgICAyMjIsIDI5LCAxOCwgMTksIDIxOSwgMTkxLCAxOCwgMTksIDIxOSwgMTc1LCAxOCwgMTksIDIxOSwgNTgsIDE4LCAxOSwgCisgICAgMjE5LCA0MCwgMTgsIDE5LCAyMTEsIDExNiwgMjE5LCA0MCwgMTgsIDE5LCAyMDYsIDE4LCAxOSwgMjIyLCAzMSwgMTgsIDE5LCAKKyAgICAyMTcsIDI0OSwgMTgsIDE5LCAxNTksIDIxNywgMjQ5LCAxOCwgMTksIDIxNywgMjQzLCAxOCwgMTksIDE1OSwgMjE3LCAyNDMsIAorICAgIDE4LCAxOSwgMjE3LCAyNDIsIDE4LCAxOSwgMTU5LCAyMTcsIDI0MiwgMTgsIDE5LCAyMTcsIDIzOCwgMTgsIDE5LCAxNTksIAorICAgIDIxNywgMjM4LCAxOCwgMTksIDIxNywgMjM3LCAxOCwgMTksIDE1OSwgMjE3LCAyMzcsIDE4LCAxOSwgMjE3LCAyNTMsIDE4LCAKKyAgICAxOSwgMTU5LCAyMTcsIDI1MywgMTgsIDE5LCAyMTcsIDI1MiwgMTgsIDE5LCAxNTksIDIxNywgMjUyLCAxOCwgMTksIDIyOSwgCisgICAgMTkwLCAyMTcsIDI1MiwgMTgsIDE5LCAyMjIsIDkxLCAxOCwgMTksIDI1MywgMjA1LCAyMjIsIDkxLCAxOCwgMTksIDIxNywgCisgICAgMjU0LCAxOCwgMTksIDI1MSwgMjE4LCAyMjIsIDkxLCAxOCwgMTksIDIzMCwgMTI3LCAyMTksIDEwOCwgMTgsIDE5LCAyMjksIAorICAgIDE5MCwgMjE5LCA5OSwgMTgsIDE5LCAyMjksIDE5MCwgMjIyLCA4OSwgMTgsIDE5LCAyMjksIDE5MCwgMjE4LCAyMzUsIDE4LCAKKyAgICAxOSwgMjI5LCAxOTAsIDIxOCwgODYsIDE4LCAxOSwgMjI5LCAxOTAsIDIxOSwgOTgsIDE4LCAxOSwgMjI5LCAxOTAsIDIyMSwgCisgICAgMTg0LCAxOCwgMTksIDIyMCwgNjMsIDE4LCAxOSwgMjIwLCAzMiwgMTgsIDE5LCAyMjAsIDI3LCAxOCwgMTksIDIyMCwgNywgCisgICAgMTgsIDE5LCAyMjAsIDEsIDE4LCAxOSwgMjIwLCAxMDIsIDE4LCAxOSwgMjIwLCA5OCwgMTgsIDE5LCAyMTksIDIwNiwgMTgsIAorICAgIDE5LCAxNTksIDIxOSwgMjA2LCAxOCwgMTksIDIxOSwgMjA1LCAxOCwgMTksIDE1OSwgMjE5LCAyMDUsIDE4LCAxOSwgMjE5LCAKKyAgICAyMDQsIDE4LCAxOSwgMTU5LCAyMTksIDIwNCwgMTgsIDE5LCAyMTksIDIwMywgMTgsIDE5LCAxNTksIDIxOSwgMjAzLCAxOCwgCisgICAgMTksIDIxOSwgMjAyLCAxOCwgMTksIDE1OSwgMjE5LCAyMDIsIDE4LCAxOSwgMjE5LCAyMDgsIDE4LCAxOSwgMTU5LCAyMTksIAorICAgIDIwOCwgMTgsIDE5LCAyMTksIDIwNywgMTgsIDE5LCAxNTksIDIxOSwgMjA3LCAxOCwgMTksIDIyMCwgMTA0LCAxOCwgMTksIAorICAgIDIxMSwgNDcsIDE4LCAxOSwgMjExLCAxMDEsIDE4LCAxOSwgMjExLCA4LCAxOCwgMTksIDIxMCwgMjU1LCAxOCwgMTksIDIxMCwgCisgICAgMjQ0LCAxOCwgMTksIDIxMCwgMjI5LCAxOCwgMTksIDIxMSwgMTE2LCAyMTAsIDIyOSwgMTgsIDE5LCAxOTEsIDE4LCAxOSwgCisgICAgMjExLCAxMDMsIDE4LCAxOSwgMjEwLCAxNzQsIDE4LCAxOSwgMTU5LCAyMTAsIDE3NCwgMTgsIDE5LCAyMTAsIDE3MywgMTgsIAorICAgIDE5LCAxNTksIDIxMCwgMTczLCAxOCwgMTksIDIxMCwgMTcyLCAxOCwgMTksIDE1OSwgMjEwLCAxNzIsIDE4LCAxOSwgMjEwLCAKKyAgICAxNzEsIDE4LCAxOSwgMTU5LCAyMTAsIDE3MSwgMTgsIDE5LCAyMTAsIDE3MCwgMTgsIDE5LCAxNTksIDIxMCwgMTcwLCAxOCwgCisgICAgMTksIDIxMCwgMTc2LCAxOCwgMTksIDE1OSwgMjEwLCAxNzYsIDE4LCAxOSwgMjEwLCAxNzUsIDE4LCAxOSwgMTU5LCAyMTAsIAorICAgIDE3NSwgMTgsIDE5LCAyMjksIDE5MCwgMjEwLCAxNzUsIDE4LCAxOSwgMjExLCAxMTcsIDE4LCAxOSwgMjUyLCA0LCAyMTEsIAorICAgIDExNywgMTgsIDE5LCAxNTksIDIxMSwgMTE3LCAxOCwgMTksIDIyMSwgMjA5LCAyMTEsIDgsIDE4LCAxOSwgMjIzLCAxMjgsIAorICAgIDE4LCAxOSwgMjIzLCAyMjMsIDIyMywgMTI4LCAxOCwgMTksIDE1OSwgMjMzLCA1OCwgMTgsIDE5LCAyMjMsIDE4MywgMTgsIAorICAgIDE5LCAyMjMsIDM1LCAxOCwgMTksIDIyMiwgMjM5LCAxOCwgMTksIDIyMiwgMjExLCAxOCwgMTksIDIyMiwgMTk3LCAxOCwgCisgICAgMTksIDE1OSwgMjMyLCAxNTYsIDE4LCAxOSwgMjA1LCAxOCwgMTksIDIyMywgMTg0LCAxOCwgMTksIDE1OSwgMjMzLCAxMzUsIAorICAgIDE4LCAxOSwgMjIyLCAxMDgsIDE4LCAxOSwgMTU5LCAyMjIsIDEwOCwgMTgsIDE5LCAxNTMsIDE4LCAxOSwgMTU5LCAxNTMsIAorICAgIDE4LCAxOSwgMTQ3LCAxNTMsIDE4LCAxOSwgMjQ0LCAxNTQsIDE4LCAxOSwgMjQ0LCAxOTMsIDE4LCAxOSwgMjQ0LCAxMjEsIAorICAgIDE4LCAxOSwgMjQ0LCAxMDgsIDE4LCAxOSwgMjQ0LCA0MywgMTgsIDE5LCAyNDQsIDM0LCAxOCwgMTksIDI0NCwgMTk2LCAxOCwgCisgICAgMTksIDI0NCwgMTk1LCAxOCwgMTksIDI0MywgMjEyLCAxOCwgMTksIDE1OSwgMjQzLCAyMTIsIDE4LCAxOSwgMjQ1LCA2LCAKKyAgICAxOCwgMTksIDIxNiwgMTk1LCAxOCwgMTksIDIzMCwgMjMsIDIxNiwgMTk1LCAxOCwgMTksIDIxNiwgMTc1LCAxOCwgMTksIAorICAgIDIzMCwgMjMsIDIxNiwgMTc1LCAxOCwgMTksIDIxNiwgMTcxLCAxOCwgMTksIDIzMCwgMjMsIDIxNiwgMTcxLCAxOCwgMTksIAorICAgIDIxNiwgMTU2LCAxOCwgMTksIDIxNiwgMTUzLCAxOCwgMTksIDIxNiwgMjA4LCAxOCwgMTksIDIxNiwgMjA3LCAxOCwgMTksIAorICAgIDIxNiwgMTI3LCAxOCwgMTksIDE1OSwgMjE2LCAxMjcsIDE4LCAxOSwgMjE2LCAyMTAsIDE4LCAxOSwgMjE1LCAxNDIsIDE4LCAKKyAgICAxOSwgMjE1LCAxNDAsIDE4LCAxOSwgMjE1LCAxMzksIDE4LCAxOSwgMjE1LCAxNDQsIDE4LCAxOSwgMjE1LCAxNDUsIDE4LCAKKyAgICAxOSwgMjE1LCA1MiwgMTgsIDE5LCAyMTUsIDUxLCAxOCwgMTksIDIxNSwgNTAsIDE4LCAxOSwgMjE1LCA1MywgMTgsIDE5LCAKKyAgICAyMjcsIDE5MywgMjQxLCAyMzgsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MSwgMTgwLCAxOCwgMTksIDIyNywgMTkzLCAyNDEsIAorICAgIDE2MSwgMTgsIDE5LCAyMjcsIDE5MywgMjQxLCA2OCwgMTgsIDE5LCAyMjcsIDE5MywgMjQxLCA1MywgMTgsIDE5LCAyMjcsIAorICAgIDE5MywgMTYyLCAxOCwgMTksIDIyNywgMTkzLCAyNDIsIDQ2LCAxOCwgMTksIDIyNywgMTkzLCAyNDIsIDYwLCAxOCwgMTksIAorICAgIDIyNywgMTkyLCAyNDIsIDYwLCAxOCwgMTksIDI0MSwgMTU0LCAxOCwgMTksIDIyNCwgODQsIDE4LCAxOSwgMjI0LCA1MywgCisgICAgMTgsIDE5LCAyMjQsIDQ4LCAxOCwgMTksIDIyNCwgNDIsIDE4LCAxOSwgMjI0LCAzNywgMTgsIDE5LCAyMjQsIDg4LCAxOCwgCisgICAgMTksIDIyNCwgODcsIDE4LCAxOSwgMjI0LCA5NiwgMTgsIDE5LCAyMTYsIDU1LCAxOCwgMTksIDIxNiwgNTMsIDE4LCAxOSwgCisgICAgMjE2LCA1MiwgMTgsIDE5LCAyMTYsIDU2LCAxOCwgMTksIDE1OSwgMjIzLCAxMjgsIDE4LCAxOSwgMTU5LCAyMjMsIDM1LCAKKyAgICAxOCwgMTksIDE1OSwgMjIyLCAyMTEsIDE4LCAxOSwgMTU5LCAyMDUsIDE4LCAxOSwgMjI5LCA3NSwgMTgsIDE5LCAyMjksIAorICAgIDI3LCAxOCwgMTksIDIyOSwgMjMsIDE4LCAxOSwgMjI5LCA0LCAxOCwgMTksIDIyOCwgMjU1LCAxOCwgMTksIDIyOSwgNzcsIAorICAgIDE4LCAxOSwgMjI5LCA3NiwgMTgsIDE5LCAyMjksIDc5LCAxOCwgMTksIDIyOCwgMTAzLCAxOCwgMTksIDIyMSwgMjA5LCAKKyAgICAyMjAsIDYzLCAxOCwgMTksIDIyMSwgMjA5LCAyMjAsIDMyLCAxOCwgMTksIDIyMSwgMjA5LCAyMjAsIDcsIDE4LCAxOSwgCisgICAgMjIxLCAyMDksIDIyMCwgMTAyLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDE5NSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAKKyAgICAxNzUsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTU2LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDIwOCwgMTgsIDE5LCAyMTEsIAorICAgIDIxMywgMjE2LCAyMTAsIDE4LCAxOSwgMjMyLCAyNDgsIDE4LCAxOSwgMjMyLCAyNDcsIDE4LCAxOSwgMjMyLCAyNDYsIDE4LCAKKyAgICAxOSwgMjMyLCAyNDUsIDE4LCAxOSwgMjMyLCAyNTQsIDE4LCAxOSwgMjMyLCAyNTMsIDE4LCAxOSwgMjMyLCAyNTUsIDE4LCAKKyAgICAxOSwgMjE2LCAyMDksIDIxNiwgMTk1LCAxOCwgMTksIDIxNiwgMjA5LCAyMTYsIDE3NSwgMTgsIDE5LCAyMTYsIDIwOSwgCisgICAgMjE2LCAxNzEsIDE4LCAxOSwgMjE2LCAyMDksIDIxNiwgMTU2LCAxOCwgMTksIDIxNiwgMjA5LCAyMTYsIDE1MywgMTgsIDE5LCAKKyAgICAyMTYsIDIwOSwgMjE2LCAyMDgsIDE4LCAxOSwgMjE2LCAyMDksIDIxNiwgMjA3LCAxOCwgMTksIDIxNiwgMjA5LCAyMTYsIAorICAgIDIxMCwgMTgsIDE5LCAyNTQsIDE4OSwgMjUzLCAxNTgsIDE4LCAxOSwgMjUxLCAyMTgsIDc1LCAxOCwgMTksIDI1MSwgMjE4LCAKKyAgICA3MywgMTgsIDE5LCAyNTEsIDIxOCwgNzYsIDE4LCAxOSwgMjUxLCAyMTgsIDYxLCAxOCwgMTksIDI1MSwgMjE4LCAyMTIsIAorICAgIDIyLCAxOCwgMTksIDI1MSwgMjE4LCAyMTEsIDI1MCwgMTgsIDE5LCAyNTEsIDIxOCwgMjExLCAyMjcsIDE4LCAxOSwgMjUxLCAKKyAgICAyMTgsIDIxMiwgNjUsIDE4LCAxOSwgMjUxLCAyMTgsIDIyOSwgMTA3LCAxOCwgMTksIDI1MSwgMjE4LCAyMjgsIDIzMywgMTgsIAorICAgIDE5LCAyNTEsIDIxOCwgMjI4LCA3NCwgMTgsIDE5LCAyNTEsIDIxOCwgMTk3LCAxOCwgMTksIDI1MSwgMjE4LCAyMzQsIDE4MiwgCisgICAgMTgsIDE5LCAyNTEsIDIxOCwgMjM0LCA5MiwgMTgsIDE5LCAyNTEsIDIxOCwgMjM0LCAyOCwgMTgsIDE5LCAyNTEsIDIxOCwgCisgICAgMTc2LCAxOCwgMTksIDIyMSwgMjA5LCAyNDEsIDIzOCwgMTgsIDE5LCAyMjEsIDIwOSwgMjQxLCAxODAsIDE4LCAxOSwgMjIxLCAKKyAgICAyMDksIDI0MSwgNjgsIDE4LCAxOSwgMjIxLCAyMDksIDE2MiwgMTgsIDE5LCA3MiwgMjQyLCAyMjAsIDE4LCAxOSwgNzIsIAorICAgIDI0MiwgMjI0LCAxOCwgMTksIDcyLCAyNDIsIDIzNiwgMTgsIDE5LCA3MiwgMjQyLCAyMzUsIDE4LCAxOSwgNzIsIDI0MiwgCisgICAgMjI1LCAxOCwgMTksIDcyLCAyNDIsIDI0OSwgMTgsIDE5LCA3MiwgMjIyLCAxNDAsIDE4LCAxOSwgNzIsIDIyMiwgMjExLCAKKyAgICAxOCwgMTksIDcyLCAyMjMsIDEyOCwgMTgsIDE5LCA3MiwgMjIzLCAxMDgsIDE4LCAxOSwgNzIsIDIyMywgMzUsIDE4LCAxOSwgCisgICAgNzIsIDIwNSwgMTgsIDE5LCA3MiwgMjExLCAxOTUsIDE4LCAxOSwgNzIsIDIxMSwgMjI3LCAxOCwgMTksIDcyLCAyMTIsIDIyLCAKKyAgICAxOCwgMTksIDcyLCAyMTIsIDE3LCAxOCwgMTksIDcyLCAyMTEsIDI1MCwgMTgsIDE5LCA3MiwgMjEyLCA2NSwgMTgsIDE5LCAKKyAgICA3MiwgMjQwLCAxOTQsIDE4LCAxOSwgNzIsIDI0MCwgMTk1LCAxOCwgMTksIDcyLCAyNDAsIDE5OCwgMTgsIDE5LCA3MiwgCisgICAgMjQwLCAxOTcsIDE4LCAxOSwgNzIsIDI0MCwgMTk2LCAxOCwgMTksIDcyLCAyNDAsIDIwMCwgMTgsIDE5LCA3MiwgMjE2LCAKKyAgICAxMzYsIDE4LCAxOSwgNzIsIDIxNiwgMTU2LCAxOCwgMTksIDcyLCAyMTYsIDE5NSwgMTgsIDE5LCA3MiwgMjE2LCAxOTQsIAorICAgIDE4LCAxOSwgNzIsIDIxNiwgMTc1LCAxOCwgMTksIDcyLCAyMTYsIDIwOCwgMTgsIDE5LCA3MiwgMjE1LCAxMjMsIDE4LCAxOSwgCisgICAgNzIsIDIxNSwgMTMzLCAxOCwgMTksIDcyLCAyMTUsIDE1MSwgMTgsIDE5LCA3MiwgMjE1LCAxNTAsIDE4LCAxOSwgNzIsIAorICAgIDIxNSwgMTM1LCAxOCwgMTksIDcyLCAyMTUsIDE1NiwgMTgsIDE5LCA3MiwgMjI0LCAxNTAsIDE4LCAxOSwgNzIsIDIyNSwgCisgICAgMTYsIDE4LCAxOSwgNzIsIDIyNSwgMjIxLCAxOCwgMTksIDcyLCAyMjUsIDIxMSwgMTgsIDE5LCA3MiwgMjI1LCAxMDgsIDE4LCAKKyAgICAxOSwgNzIsIDE5MCwgMTgsIDE5LCA3MiwgMjI2LCAxMDUsIDE4LCAxOSwgNzIsIDI0MiwgMTEzLCAxOCwgMTksIDcyLCAyNDIsIAorICAgIDE3NCwgMTgsIDE5LCA3MiwgMjQzLCA2MiwgMTgsIDE5LCA3MiwgMjQzLCA1NSwgMTgsIDE5LCA3MiwgMjQyLCAyMTQsIDE4LCAKKyAgICAxOSwgNzIsIDI0MywgMTM1LCAxOCwgMTksIDcyLCAyMzQsIDEwMCwgMTgsIDE5LCA3MiwgMjM0LCAxMDUsIDE4LCAxOSwgNzIsIAorICAgIDIzNCwgMTE5LCAxOCwgMTksIDcyLCAyMzQsIDExOCwgMTgsIDE5LCA3MiwgMjM0LCAxMTIsIDE4LCAxOSwgNzIsIDIzNCwgCisgICAgMTMyLCAxOCwgMTksIDcyLCAyMzQsIDQxLCAxOCwgMTksIDcyLCAyMzQsIDQyLCAxOCwgMTksIDcyLCAyMzQsIDQ1LCAxOCwgCisgICAgMTksIDcyLCAyMzQsIDQ0LCAxOCwgMTksIDcyLCAyMzQsIDQzLCAxOCwgMTksIDcyLCAyMzQsIDQ2LCAxOCwgMTksIDcyLCAKKyAgICAyMzQsIDQ3LCAxOCwgMTksIDcyLCAyMjcsIDIzNywgMTgsIDE5LCA3MiwgMjI4LCA3NCwgMTgsIDE5LCA3MiwgMjI5LCAxMDcsIAorICAgIDE4LCAxOSwgNzIsIDIyOSwgMTAzLCAxOCwgMTksIDcyLCAyMjgsIDIzMywgMTgsIDE5LCA3MiwgMTk3LCAxOCwgMTksIDcyLCAKKyAgICAyMzAsIDEwMiwgMTgsIDE5LCA3MiwgMjMwLCAxNjEsIDE4LCAxOSwgNzIsIDIzMSwgOTEsIDE4LCAxOSwgNzIsIDIzMSwgODAsIAorICAgIDE4LCAxOSwgNzIsIDIzMCwgMjMwLCAxOCwgMTksIDcyLCAxODQsIDE4LCAxOSwgNzIsIDIxMCwgMjEyLCAxOCwgMTksIDcyLCAKKyAgICAyMTAsIDI0NCwgMTgsIDE5LCA3MiwgMjExLCA0NywgMTgsIDE5LCA3MiwgMjExLCA0NCwgMTgsIDE5LCA3MiwgMjExLCA4LCAKKyAgICAxOCwgMTksIDcyLCAxOTEsIDE4LCAxOSwgNzIsIDIzNSwgNTEsIDE4LCAxOSwgMjIxLCAyMDksIDIzNSwgNTEsIDE4LCAxOSwgCisgICAgNzIsIDIzNSwgNjgsIDE4LCAxOSwgNzIsIDIzNSwgMTI2LCAxOCwgMTksIDcyLCAyMzUsIDEyNCwgMTgsIDE5LCA3MiwgMjM1LCAKKyAgICAxMDgsIDE4LCAxOSwgMjIxLCAyMDksIDIzNSwgMTA4LCAxOCwgMTksIDcyLCAyMzUsIDE0MSwgMTgsIDE5LCA3MiwgMjM1LCAKKyAgICA4MSwgMTgsIDE5LCA3MiwgMjM1LCA4NSwgMTgsIDE5LCA3MiwgMjM1LCA5NSwgMTgsIDE5LCA3MiwgMjM1LCA5NCwgMTgsIAorICAgIDE5LCA3MiwgMjM1LCA5MywgMTgsIDE5LCA3MiwgMjM1LCA5NiwgMTgsIDE5LCA3MiwgMjMyLCA5OCwgMTgsIDE5LCA3MiwgCisgICAgMjMyLCAxNTYsIDE4LCAxOSwgNzIsIDIzMywgNTgsIDE4LCAxOSwgNzIsIDIzMywgNTAsIDE4LCAxOSwgNzIsIDIzMiwgMjQxLCAKKyAgICAxOCwgMTksIDcyLCAyMzMsIDEzNSwgMTgsIDE5LCA3MiwgMjQ3LCAxNDksIDE4LCAxOSwgNzIsIDI0NywgMTUwLCAxOCwgMTksIAorICAgIDcyLCAyNDcsIDE1NSwgMTgsIDE5LCA3MiwgMjQ3LCAxNTQsIDE4LCAxOSwgNzIsIDI0NywgMTUxLCAxOCwgMTksIDcyLCAKKyAgICAyNDcsIDE1NiwgMTgsIDE5LCA3MiwgMjMyLCAyNDQsIDE4LCAxOSwgNzIsIDIzMiwgMjQ2LCAxOCwgMTksIDcyLCAyMzIsIAorICAgIDI1MCwgMTgsIDE5LCA3MiwgMjMyLCAyNDksIDE4LCAxOSwgNzIsIDIzMiwgMjQ4LCAxOCwgMTksIDcyLCAyMzIsIDI1NCwgCisgICAgMTgsIDE5LCA3MiwgMjE2LCA1MCwgMTgsIDE5LCA3MiwgMjE2LCA1MiwgMTgsIDE5LCA3MiwgMjE2LCA1NSwgMTgsIDE5LCAKKyAgICA3MiwgMjE2LCA1NCwgMTgsIDE5LCA3MiwgMjE2LCA1MywgMTgsIDE5LCA3MiwgMjE2LCA1NiwgMTgsIDE5LCA3MiwgMjE2LCAKKyAgICA0NSwgMTgsIDE5LCA3MiwgMjE2LCA0NiwgMTgsIDE5LCA3MiwgMjE2LCA1OCwgMTgsIDE5LCA3MiwgMjE2LCA1NywgMTgsIAorICAgIDE5LCA3MiwgMjE2LCA0NywgMTgsIDE5LCA3MiwgMjE2LCA1OSwgMTgsIDE5LCA3MiwgMjEwLCAxMywgMTgsIDE5LCA3MiwgCisgICAgMjEwLCAyMywgMTgsIDE5LCA3MiwgMjEwLCA5NCwgMTgsIDE5LCA3MiwgMjEwLCA5MiwgMTgsIDE5LCA3MiwgMjEwLCA0NCwgCisgICAgMTgsIDE5LCA3MiwgMjEwLCAxMTYsIDE4LCAxOSwgNzIsIDIxMCwgMTU5LCAxOCwgMTksIDcyLCA2NSwgMjEwLCAxNTksIDE4LCAKKyAgICAxOSwgNzIsIDI0NiwgMjgsIDE4LCAxOSwgNzIsIDI0NiwgMjksIDE4LCAxOSwgNzIsIDI0NiwgMzYsIDE4LCAxOSwgNzIsIAorICAgIDI0NiwgMzUsIDE4LCAxOSwgNzIsIDI0NiwgMzEsIDE4LCAxOSwgNzIsIDI0NiwgMzgsIDE4LCAxOSwgNzIsIDIxOCwgODMsIAorICAgIDE4LCAxOSwgNzIsIDIxOSwgNTgsIDE4LCAxOSwgNzIsIDIyMSwgMTgxLCAxOCwgMTksIDcyLCAyMjEsIDE3MCwgMTgsIDE5LCAKKyAgICA3MiwgMjE5LCAxOTEsIDE4LCAxOSwgNzIsIDIwNiwgMTgsIDE5LCA3MiwgMjE5LCAyMjUsIDE4LCAxOSwgNzIsIDIyMCwgNywgCisgICAgMTgsIDE5LCA3MiwgMjIwLCA2MywgMTgsIDE5LCA3MiwgMjIwLCA2MSwgMTgsIDE5LCA3MiwgMjIwLCAzMiwgMTgsIDE5LCAKKyAgICA3MiwgMjIwLCAxMDIsIDE4LCAxOSwgNzIsIDIyMCwgMTA0LCAxOCwgMTksIDcyLCAyMTUsIDE2MywgMTgsIDE5LCA3MiwgCisgICAgMjE1LCAxNjYsIDE4LCAxOSwgNzIsIDIxNSwgMTc4LCAxOCwgMTksIDcyLCAyMTUsIDE3NywgMTgsIDE5LCA3MiwgMjE1LCAKKyAgICAxNjcsIDE4LCAxOSwgNzIsIDIxNSwgMTgzLCAxOCwgMTksIDcyLCAyNTAsIDY5LCAxOCwgMTksIDcyLCAyNTAsIDg2LCAxOCwgCisgICAgMTksIDcyLCAyNTAsIDEzMSwgMTgsIDE5LCA3MiwgMjUwLCAxMjgsIDE4LCAxOSwgNzIsIDI1MCwgMTEwLCAxOCwgMTksIDcyLCAKKyAgICAyNTAsIDE1NywgMTgsIDE5LCA3MiwgMjE1LCAxMjYsIDE4LCAxOSwgNzIsIDIxNSwgMTI3LCAxOCwgMTksIDcyLCAyMTUsIAorICAgIDEzMCwgMTgsIDE5LCA3MiwgMjE1LCAxMjksIDE4LCAxOSwgNzIsIDIxNSwgMTI4LCAxOCwgMTksIDcyLCAyMTUsIDEzMSwgCisgICAgMTgsIDE5LCAyNTAsIDExMSwgNTAsIDE4LCAxOSwgMjQzLCAyMjksIDIxOCwgMTI5LCAxOCwgMTksIDIyNCwgODAsIDE4LCAKKyAgICAxOSwgMjI5LCA3MywgMTgsIDE5LCAyMjgsIDEwMCwgMTgsIDE5LCAyMjgsIDk5LCAxOCwgMTksIDIyOCwgOTgsIDE4LCAxOSwgCisgICAgMjI4LCA5NywgMTgsIDE5LCAyMjgsIDEwMiwgMTgsIDE5LCAyMjgsIDEwMSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjUsIAorICAgIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI0LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyMywgMTgsIDE5LCAyMTEsIDIxMywgCisgICAgMjE2LCAxMjIsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTIxLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyOCwgMTgsIDE5LCAKKyAgICAyMTEsIDIxMywgMjE2LCAxMjcsIDE4LCAxOSwgMjExLCAyMTMsIDQwLCAyMTYsIDIxMCwgMTgsIDE5LCAyNTEsIDIxOCwgCisgICAgMjEyLCA5OCwgMjI2LCAyMjYsIDIxOSwgMTksIDc4LCAyMjYsIDIyNiwgMSwgMjUyLCA0OCwgMjI2LCAyMjYsIDEsIDIzMiwgCisgICAgODcsIDIyNiwgMjI2LCAxLCAyNDQsIDE1MSwgMjI2LCAyMjYsIDEsIDIyMiwgMTUsIDIyNiwgMjI2LCAxLCAyMjgsIDE5MywgCisgICAgMjI2LCAyMjYsIDEsIDIxNCwgMjI2LCAyMjYsIDIyNiwgMSwgMjQ4LCAxOTcsIDIyNiwgMjI2LCAxLCAyMTYsIDgwLCAyMjYsIAorICAgIDIyNiwgMSwgMjQ5LCAyMjksIDIyNiwgMjI2LCAxLCAyNTAsIDE4MCwgMjI2LCAyMjYsIDEsIDIzMCwgOTEsIDIyNiwgMjI2LCAKKyAgICAxLCAyNDIsIDE1NiwgMjI2LCAyMjYsIDEsIDIyOSwgNjMsIDIyNiwgMjI2LCAxLCAyMTgsIDEyMiwgMjI2LCAyMjYsIDEsIAorICAgIDIyMiwgMTM1LCAyMjYsIDIyNiwgMSwgMjU0LCAxOTgsIDIyNiwgMjI2LCAxLCAyMjYsIDE4NywgMjI2LCAyMjYsIDEsIDIxNCwgCisgICAgMTUwLCAyMjYsIDIyNiwgMSwgMjQ1LCAyMzEsIDIyNiwgMjI2LCAxLCAyMzUsIDE4OCwgMjI2LCAyMjYsIDEsIDI0NSwgMjMyLCAKKyAgICAyMjYsIDIyNiwgMSwgMjI2LCAxNTgsIDIyNiwgMjI2LCAxLCAyMTQsIDIwNiwgMjI2LCAyMjYsIDEsIDIzNiwgMzksIDIyNiwgCisgICAgMjI2LCAxLCAyNDUsIDIyOSwgMjI2LCAyMjYsIDEsIDIyNSwgMjAyLCAyMjYsIDIyNiwgMjQ0LCAxNTAsIDc4LCAyMjYsIAorICAgIDIyNiwgMjIzLCA0OSwgMjQ0LCAxNTAsIDc4LCAxNzgsIDEsIDI0NCwgMTQxLCAyNDQsIDEzMywgMjQ0LCAxNTUsIDI0NSwgNiwgCisgICAgMTc4LCAxLCAyMTQsIDEwNSwgMTc4LCAxLCAyMTQsIDEzNSwgMjE0LCAxNTEsIDcwLCAxNzgsIDEsIDIxMCwgMjE0LCAxNzgsIAorICAgIDEsIDIxMSwgMTE3LCAxNzgsIDEsIDIxMiwgOTgsIDE3OCwgMSwgMjE2LCAxMzAsIDIxNiwgMTI5LCAyMTYsIDE1MSwgMTc4LCAKKyAgICAxLCAyNDUsIDU5LCAxNzgsIDEsIDI1NCwgOTMsIDYxLCAxNzgsIDEsIDIyNiwgMTQzLCA3NiwgMTc4LCAxLCAyNTUsIDE3LCAKKyAgICA2MSwgMTc4LCAxLCAyNTQsIDIyNywgMTc4LCAxLCAyMzIsIDEzMywgNzYsIDE3OCwgMSwgMjE5LCAyNDQsIDc2LCAxNzgsIDEsIAorICAgIDc2LCAxNzgsIDEsIDIyNiwgMjM0LCAxNzgsIDEsIDIyNiwgMTk2LCAxNzgsIDEsIDIyMywgMTY0LCAyMjMsIDE3NywgMjIzLCAKKyAgICA5NCwgMTUzLCAxNzgsIDEsIDIzNCwgMTkzLCAxNzgsIDEsIDI1MCwgMTc3LCAxNzgsIDEsIDIzNCwgMTk0LCAyMzUsIDIzLCAKKyAgICAxNzgsIDEsIDI0MywgMjAyLCAxNzgsIDEsIDI0NSwgMTM4LCAxNzgsIDEsIDI0MywgNTgsIDI0MiwgNjYsIDI0MywgMjAyLCAKKyAgICAxNzgsIDEsIDI0MywgOTYsIDE3OCwgMSwgMjExLCAxODgsIDIxMSwgMTgyLCAyMTIsIDk4LCAxNzgsIDEsIDI0MiwgMzgsIAorICAgIDI0MiwgNjAsIDE3OCwgMSwgMjQyLCA0MiwgMjQyLCA2MCwgMTc4LCAxLCAyMzIsIDEzNSwgMjQyLCA2MCwgMTc4LCAxLCAKKyAgICAyMTksIDI0NywgMjQyLCA2MCwgMTc4LCAxLCAyMjksIDE4NSwgMjI3LCAxNTcsIDIyOSwgMTg2LCAyMzAsIDI1LCAxNzgsIDEsIAorICAgIDIxOSwgMjQ1LCAyMzAsIDI1LCAxNzgsIDEsIDI0NiwgMTE1LCAxNzgsIDEsIDIzNSwgMTY4LCAyMzUsIDE3MiwgMjM1LCAKKyAgICAxNjIsIDczLCAxNzgsIDEsIDc1LCAxNzgsIDEsIDIzNSwgMTE3LCAyMzUsIDE0NCwgMTc4LCAxLCAyNDMsIDQzLCAxNzgsIDEsIAorICAgIDIzMiwgMTM2LCAyNTQsIDI0MywgMTc4LCAxLCAyMTksIDI0OSwgNjEsIDE3OCwgMSwgMjM1LCAxNTQsIDI0NSwgMTEzLCAKKyAgICAxNzgsIDEsIDIyNSwgMTY0LCAyMjUsIDE4NiwgMjI2LCAxMDUsIDE3OCwgMSwgMjU0LCAxNjMsIDI0NSwgMTExLCAxNzgsIDEsIAorICAgIDIxOSwgMjQsIDIyMiwgOTEsIDE3OCwgMSwgMjE5LCAxNzksIDIzMiwgMTMyLCAyMjIsIDkxLCAxNzgsIDEsIDIxOSwgMjQzLCAKKyAgICAyMjIsIDkxLCAxNzgsIDEsIDI1MSwgNjYsIDE3OCwgMSwgMjEwLCAxNTksIDE3OCwgMSwgMjE2LCA2MywgMjE2LCA3MywgCisgICAgMjE1LCA0MSwgMjE3LCAxNTIsIDE3OCwgMSwgMjE5LCAyNDIsIDIxNywgMTUyLCAxNzgsIDEsIDI0OSwgNjAsIDE3OCwgMSwgCisgICAgMjUyLCAzMSwgMjUyLCAzNCwgMjUxLCAyMjQsIDI1MywgMTU4LCAxNzgsIDEsIDIxOSwgMjQ4LCAyNTMsIDE1OCwgMTc4LCAxLCAKKyAgICAyNDYsIDExNCwgMTc4LCAxLCAyMjYsIDE3MSwgMTc4LCAxLCAyNDUsIDE5NiwgMjQ1LCAxOTgsIDc1LCAxNzgsIDEsIDIzMSwgCisgICAgMTc4LCAyMzEsIDE4NiwgMTkzLCAxNzgsIDEsIDIzMiwgMTM0LCAxOTMsIDE3OCwgMSwgMjE5LCAyNDYsIDE5MywgMTc4LCAxLCAKKyAgICAyMzMsIDczLCAyMzMsIDExNCwgMjMyLCAxNDMsIDE1NiwgMTc4LCAxLCAyNDYsIDExNiwgMTc4LCAxLCAyMzUsIDIzMCwgCisgICAgMTc4LCAxLCAyMzUsIDIzMSwgMTc4LCAxLCAyNDgsIDIxMCwgMjQ4LCAyMTUsIDI0OSwgNjAsIDE3OCwgMSwgMjI2LCAxMzgsIAorICAgIDI0NSwgNTgsIDc2LCAxNzgsIDEsIDI0NSwgMjI3LCAxNzgsIDEsIDIzNSwgMTg3LCAxNzgsIDEsIDI0OSwgNzgsIDE3OCwgMSwgCisgICAgMjUxLCAxNywgMTc4LCAxLCAyNTAsIDE4OSwgMTc4LCAxLCAyMTgsIDE2MSwgMTc4LCAxLCAyMzIsIDEzMSwgMTc4LCAxLCAKKyAgICAyMTksIDI0MSwgMTc4LCAxLCAyNDAsIDExMCwgMTc4LCAxLCAyMjQsIDk2LCAxNzgsIDEsIDIxMSwgMTc4LCAxNzgsIDIxOSwgCisgICAgMTU1LCAyMjQsIDE0MCwgMTc4LCAyMzAsIDg1LCAyMjQsIDE0MCwgMTc4LCAyNDksIDEzMSwgMjI0LCAxNDAsIDE3OCwgMjU0LCAKKyAgICA2LCA4NywgMTc4LCAyMTUsIDgyLCA4NywgMTc4LCAyNTIsIDQ2LCA4NywgMjE3LCA4MywgMSwgNjEsIDIxNywgODMsIDEsIAorICAgIDczLCAyMTcsIDgzLCAxLCA3MCwgMjE3LCA4MywgMSwgMTc2LCAyMTcsIDgzLCAxLCAyNDMsIDEzNSwgMjE3LCA4MywgMSwgCisgICAgMjI5LCA3NywgMjE3LCA4MywgMSwgMjE3LCAxMDUsIDIxNywgODMsIDEsIDI0OCwgMjIxLCAyMTcsIDgzLCAxLCAxOTcsIAorICAgIDIxNywgODMsIDEsIDE5MCwgMjE3LCA4MywgMSwgMjUyLCAxOTEsIDIxNywgODMsIDEsIDE4NCwgMjE3LCA4MywgMSwgMTkxLCAKKyAgICAyMTcsIDgzLCAxLCAyMzMsIDEzNSwgMjE3LCA4MywgMSwgMjEyLCA2NSwgMjE3LCA4MywgMSwgMjA2LCAyMTcsIDgzLCAxLCAKKyAgICAxNjIsIDIxNywgODMsIDI1LCA1LCA3MywgMjE3LCA4MywgMjUsIDUsIDcwLCAyMTcsIDgzLCA1LCAyMTMsIDE1MiwgMjQyLCAKKyAgICA3LCAxLCA2MSwgMjQyLCA3LCAxLCA3MywgMjQyLCA3LCAxLCA3MCwgMjQyLCA3LCAxLCAxNzYsIDI0MiwgNywgMSwgMjQzLCAKKyAgICAxMzUsIDI0MiwgNywgMSwgMjI5LCA3NywgMjQyLCA3LCAxLCAyMTcsIDEwNSwgMjQyLCA3LCAxLCAyNDgsIDIyMSwgMjQyLCAKKyAgICA3LCAxLCAxOTcsIDI0MiwgNywgMSwgMTkwLCAyNDIsIDcsIDEsIDI1MiwgMTkxLCAyNDIsIDcsIDEsIDE4NCwgMjQyLCA3LCAKKyAgICAxLCAxOTEsIDI0MiwgNywgMSwgMjA1LCAyNDIsIDcsIDEsIDIzMywgMTM1LCAyNDIsIDcsIDEsIDIxMiwgNjUsIDI0MiwgNywgCisgICAgMSwgMjA2LCAyNDIsIDcsIDEsIDE2MiwgMjQyLCA3LCAyNSwgNSwgNzMsIDI0MiwgNywgMjUsIDUsIDcwLCAyNDIsIDcsIDUsIAorICAgIDIyNiwgNDksIDIyNSwgMTI2LCAyMTksIDE1NSwgMjI0LCAxNDAsIDIyNSwgMTI2LCA1MiwgMjI0LCAxNDAsIDI1MSwgMTIwLCAKKyAgICAxLCA2MSwgMjUxLCAxMjAsIDEsIDczLCAyNTEsIDEyMCwgMSwgNzAsIDI1MSwgMTIwLCAxLCAxNzYsIDI1MSwgMTIwLCAxLCAKKyAgICAyNDMsIDEzNSwgMjUxLCAxMjAsIDEsIDIyOSwgNzcsIDI1MSwgMTIwLCAxLCAyMTcsIDEwNSwgMjUxLCAxMjAsIDEsIDI0OCwgCisgICAgMjIxLCAyNTEsIDEyMCwgMSwgMTk3LCAyNTEsIDEyMCwgMSwgMTkwLCAyNTEsIDEyMCwgMSwgMjUyLCAxOTEsIDI1MSwgMTIwLCAKKyAgICAxLCAxODQsIDI1MSwgMTIwLCAxLCAxOTEsIDI1MSwgMTIwLCAxLCAyMDUsIDI1MSwgMTIwLCAxLCAyMzMsIDEzNSwgMjUxLCAKKyAgICAxMjAsIDEsIDIxMiwgNjUsIDI1MSwgMTIwLCAxLCAyMDYsIDI1MSwgMTIwLCAxLCAxNjIsIDI1MSwgMTIwLCAyNSwgNSwgNzMsIAorICAgIDI1MSwgMTIwLCAyNSwgNSwgNzAsIDIxNywgODIsIDEsIDYxLCAyMTcsIDgyLCAxLCA3MywgMjE3LCA4MiwgMSwgNzAsIDIxNywgCisgICAgODIsIDEsIDE3NiwgMjE3LCA4MiwgMSwgMjQzLCAxMzUsIDIxNywgODIsIDEsIDIyOSwgNzcsIDIxNywgODIsIDEsIDIxNywgCisgICAgMTA1LCAyMTcsIDgyLCAxLCAyNDgsIDIyMSwgMjE3LCA4MiwgMSwgMTk3LCAyMTcsIDgyLCAxLCAxOTAsIDIxNywgODIsIDEsIAorICAgIDI1MiwgMTkxLCAyMTcsIDgyLCAxLCAxODQsIDIxNywgODIsIDEsIDE5MSwgMjE3LCA4MiwgMSwgMjMzLCAxMzUsIDIxNywgCisgICAgODIsIDEsIDIxMiwgNjUsIDIxNywgODIsIDEsIDIwNiwgMjE3LCA4MiwgMjUsIDUsIDczLCAyMTcsIDgyLCAyNSwgNSwgNzAsIAorICAgIDY5LCAxLCAxNzYsIDY5LCAxLCAyMzQsIDEzMiwgNjksIDEsIDIzNCwgMjgsIDY5LCAxLCAyMzQsIDEwNSwgNjksIDEsIDIyOSwgCisgICAgNCwgNjksIDEsIDI1MSwgMzMsIDY5LCAxLCAyNTAsIDE1NywgNjksIDEsIDI0OSwgMjM4LCA2OSwgMSwgMjUwLCA4NiwgNjksIAorICAgIDEsIDIyNywgMTM0LCA2OSwgMSwgMjQ4LCAyMjEsIDY5LCAxLCAyMTUsIDE0NCwgNjksIDEsIDI0NywgMTQ1LCA2OSwgMSwgCisgICAgMjE1LCAxMzksIDY5LCAxLCAyMjgsIDgwLCA2OSwgMSwgMjE3LCAxMDUsIDY5LCAxLCAyMTYsIDIwOCwgNjksIDEsIDExMSwgCisgICAgNjksIDEsIDIxNiwgMTU2LCA2OSwgMSwgMjI4LCA3NCwgNjksIDEsIDI1MiwgMTkxLCA2OSwgMSwgMjI1LCAxNDcsIDY5LCAxLCAKKyAgICAyMjUsIDE2LCA2OSwgMSwgMjI1LCAxMjEsIDY5LCAxLCAyMzAsIDE2MSwgNjksIDEsIDIxMCwgMjQ0LCA2OSwgMSwgMjIyLCAKKyAgICAyMTEsIDY5LCAxLCAyMzIsIDE1NiwgNjksIDEsIDIxMywgMTM4LCA2OSwgMSwgMjIwLCAxMDIsIDY5LCAxLCAyMTgsIDE4NCwgCisgICAgNjksIDEsIDIwNiwgNjksIDEsIDE2MiwgNjksIDEsIDIzMywgMTM1LCA2OSwgMSwgMjI0LCA4OCwgNjksIDIzNSwgMjQzLCAKKyAgICAyNSwgMjI0LCA3NCwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCA4NywgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCA1MywgNjksIAorICAgIDIzNSwgMjQzLCAyNSwgMjI0LCA0OCwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCAzMCwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCAKKyAgICAyLCA2OSwgMjM1LCAyNDMsIDI1LCAyMjMsIDI0NiwgNjksIDIzNSwgMjQzLCAyNSwgMjIzLCAyNDUsIDY5LCAyMzUsIDI0MywgCisgICAgMjUsIDIyMiwgMTAwLCA2OSwgMjM1LCAyNDMsIDI1LCAyMjIsIDkzLCA2OSwgMjM1LCAyNDMsIDI1LCAyMzIsIDYyLCA2OSwgCisgICAgMjM1LCAyNDMsIDI1LCAyMzIsIDUyLCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDY5LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIAorICAgIDgwLCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDM4LCAyMTUsIDQ5LCAxMTAsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgMzgsIAorICAgIDIxNSwgNDksIDEwNSwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCA3MCwgNjksIDI1LCAyMzUsIDIyOSwgMjU0LCA0NSwgNjksIAorICAgIDI1LCAyMzUsIDIyOSwgMjU1LCA3MywgNjksIDI1LCA1LCAyNTUsIDczLCA2OSwgMjUsIDUsIDczLCA2OSwgMjUsIDUsIDIzNiwgCisgICAgMzMsIDY5LCAyNSwgNSwgMjExLCAxMTcsIDY5LCAyNSwgNSwgMjEwLCAxNjksIDY5LCAyNSwgNSwgNzAsIDY5LCAyNSwgNSwgCisgICAgMjE0LCAxMTgsIDY5LCAyNSwgNSwgMjE0LCAyMjksIDY5LCAyNSwgNSwgMjI2LCAyMzQsIDY5LCAyNSwgNSwgMTkxLCA2OSwgCisgICAgMjUsIDUsIDIzNiwgNjAsIDY5LCAyNSwgNSwgNzUsIDY5LCAyNSwgNSwgMjU0LCAyNDMsIDY5LCAyNSwgNSwgMjU0LCAyMDEsIAorICAgIDY5LCAyNSwgNSwgMjI2LCAxODMsIDY5LCAyNSwgNSwgMjUzLCAxOTIsIDY5LCA1LCAyMjgsIDIwNiwgNjksIDUsIDIyMywgCisgICAgMTI2LCA2OSwgNSwgMjEwLCAxODAsIDY5LCA1LCAyMzAsIDUyLCA2OSwgNSwgMjE1LCAyMTMsIDY5LCA1LCAyNTIsIDE0MywgCisgICAgNjksIDUsIDIyMiwgMjA2LCA2OSwgNSwgMjE2LCA0MCwgNjksIDUsIDIzNCwgMjQxLCA2OSwgNSwgMjU0LCAyMDMsIDY5LCA1LCAKKyAgICAyMjEsIDI0NCwgMjIxLCAyMzgsIDY5LCA1LCAyMTMsIDE0OSwgNjksIDUsIDI0OSwgMjMyLCA2OSwgNSwgMjUyLCAxMTcsIAorICAgIDY5LCA1LCAyMzQsIDEyNSwgNjksIDUsIDI1MiwgMTM3LCA2OSwgNSwgMjUxLCA5LCAyMjUsIDcyLCAyMzMsIDE4NywgNjksIAorICAgIDUsIDIzMywgMzAsIDIxNiwgMTcsIDY5LCA1LCAyNTIsIDIwLCA2OSwgNSwgMjI1LCAxMjMsIDIzMCwgOTksIDY5LCA1LCAKKyAgICAyMzQsIDksIDY5LCAyNDksIDk4LCAxNiwgMjIzLCAyOCwgNjksIDUsIDI1MywgMTc0LCA2OSwgNSwgMjUzLCAxOTUsIDY5LCAKKyAgICAyMSwgMjEwLCA4NiwgNjksIDIxLCAxMTAsIDY5LCAyMSwgMTA1LCA2OSwgMjEsIDE1OCwgNjksIDIxLCAxNjEsIDY5LCAyMSwgCisgICAgMTg5LCA2OSwgMjEsIDE5NCwgNjksIDIxLCAxOTgsIDY5LCAyMSwgMTk1LCA2OSwgMjEsIDIwMCwgNjksIDE2LCAyMzMsIDMwLCAKKyAgICAyNTMsIDE5NywgMjE5LCA0MywgNjksIDE2LCAyMzMsIDMwLCAyNTMsIDE5NywgMjMwLCA3MSwgNjksIDE2LCAyMzMsIDMwLCAKKyAgICAyNTMsIDE5NywgMjI1LCA3MSwgNjksIDE2LCAyMzMsIDMwLCAyNTMsIDE5NywgMjUyLCA0OSwgNjksIDE2LCAyMzMsIDMwLCAKKyAgICAyNTMsIDE5NywgMjUxLCAxMDMsIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDIyNCwgMjE1LCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyMjQsIDIwOSwgNjksIDE2LCAyMzMsIDMwLCAyNTMsIDE5NywgMjI0LCAyMDcsIDY5LCAxNiwgMjMzLCAzMCwgCisgICAgMjUzLCAxOTcsIDIyNCwgMjEzLCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyMjQsIDIxMSwgODMsIDI1MSwgMjM2LCAKKyAgICA4MywgMjQ1LCAxNjMsIDgzLCAyNDksIDIxOSwgODMsIDI0MywgMjI5LCAyMTgsIDEyOSwgODMsIDI0OSwgMjI2LCA4MywgCisgICAgMjQ0LCAxMSwgMjQ3LCAxMTgsIDgzLCAyMTYsIDM5LCAyMTksIDUyLCAyNDAsIDE2OCwgODMsIDIxOSwgMTkwLCAzLCAyNTEsIAorICAgIDE3MiwgMjMxLCAxNTQsIDgzLCAyMzEsIDE4MywgMjQ5LCAyMTksIDgzLCAyMzEsIDE4MywgMjQzLCAyMjksIDIxOCwgMTI5LCAKKyAgICA4MywgMjI4LCAxOTEsIDgzLCAyNDMsIDI1MywgNDUsIDIyMSwgMTU3LCAxMTAsIDgzLCAyNDMsIDI1MywgNDUsIDIyMSwgCisgICAgMTU3LCAxMDUsIDgzLCAyNDMsIDI1MywgNDUsIDIyMSwgMTU3LCAxNTgsIDgzLCAyNSwgMjIwLCAxMzcsIDgzLCAyMSwgMjEwLCAKKyAgICA4NiwgODMsIDIxLCAxMTAsIDgzLCAyMSwgMTA1LCA4MywgMjEsIDE1OCwgODMsIDIxLCAxNjEsIDgzLCAyMSwgMTg5LCA4MywgCisgICAgMjEsIDE5NCwgODMsIDIxLCAxOTgsIDgzLCAyMSwgMTk1LCA4MywgMjEsIDIwMCwgODMsIDEsIDYxLCA4MywgMSwgNzUsIDgzLCAKKyAgICAxLCA3MywgODMsIDEsIDc2LCA4MywgMSwgNzAsIDgzLCAxLCAyMjYsIDIzNCwgODMsIDEsIDIxNCwgMjE0LCA4MywgMSwgCisgICAgMjQ1LCAyMDksIDgzLCAxLCAxOTcsIDgzLCAxLCAyNTQsIDExNSwgODMsIDEsIDI1MiwgMTkxLCA4MywgMSwgMTkwLCA4MywgCisgICAgMSwgMjI0LCA4OCwgODMsIDEsIDI0MywgMTM1LCA4MywgMSwgMTg0LCA4MywgMSwgMjMzLCAxMzUsIDgzLCAxLCAyMDYsIDgzLCAKKyAgICAxLCAyMjAsIDEwMiwgODMsIDEsIDIxNywgMTA1LCA4MywgMSwgMjQ4LCAyMjEsIDgzLCAxLCAyNTAsIDE1NywgODMsIDEsIAorICAgIDIzNSwgMTQxLCA4MywgMSwgMTkxLCA4MywgMSwgMjA1LCA4MywgMSwgMjEyLCA2NSwgODMsIDEsIDI0NCwgMTk2LCA4MywgMSwgCisgICAgMTc2LCA4MywgMSwgMjM0LCAxMzIsIDgzLCAxLCAyMTUsIDE4MywgODMsIDEsIDIxMCwgMTE2LCA4MywgMSwgMjQyLCA0NiwgCisgICAgODMsIDEsIDIxMCwgMTYsIDgzLCAxLCAyMzIsIDI1NCwgODMsIDEsIDIxMCwgNjksIDgzLCAxLCAyNTAsIDExMCwgODMsIDEsIAorICAgIDIxNiwgMzksIDE5OSwgMjUsIDUwLCA4MywgMSwgMjE2LCAzOSwgNzUsIDgzLCAxLCAyMTYsIDM5LCA3MywgODMsIDEsIDIxNiwgCisgICAgMzksIDc2LCA4MywgMSwgMjE2LCAzOSwgNzAsIDgzLCAxLCAyMTYsIDM5LCAyMjYsIDIzNCwgODMsIDEsIDIxNiwgMzksIAorICAgIDIxNCwgMjE0LCA4MywgMSwgMjE2LCAzOSwgMjU0LCAxMTUsIDgzLCAxLCAyMTYsIDM5LCAyNTIsIDE5MSwgODMsIDEsIDIxNiwgCisgICAgMzksIDE5MCwgODMsIDEsIDIxNiwgMzksIDIyNCwgODgsIDgzLCAxLCAyMTYsIDM5LCAyNDMsIDEzNSwgODMsIDEsIDIxNiwgCisgICAgMzksIDE4NCwgODMsIDEsIDIxNiwgMzksIDIxNywgMTA1LCA4MywgMSwgMjE2LCAzOSwgMjQ4LCAyMjEsIDgzLCAxLCAyMTYsIAorICAgIDM5LCAyNTAsIDE1NywgODMsIDEsIDIxNiwgMzksIDIzNSwgMTQxLCA4MywgMSwgMjE2LCAzOSwgMjE1LCAxODMsIDgzLCAxLCAKKyAgICAyMTYsIDM5LCAxOTEsIDgzLCAxLCAyMTYsIDM5LCAyMTIsIDY1LCA4MywgMSwgMjE2LCAzOSwgMTc2LCA4MywgMSwgMjE2LCAKKyAgICAzOSwgMjQzLCAxMzIsIDgzLCAxLCAyMTYsIDM5LCAyNDIsIDQ2LCA4MywgMSwgMjE2LCAzOSwgMjM1LCAxMDcsIDgzLCAxLCAKKyAgICAyMTYsIDM5LCAyMjgsIDIzMSwgODMsIDEsIDIxNiwgMzksIDI0NiwgMzgsIDgzLCAxLCAyMTksIDE5MCwgNzUsIDgzLCAxLCAKKyAgICAyMTksIDE5MCwgNzMsIDgzLCAxLCAyMTksIDE5MCwgMjM1LCAxNTIsIDgzLCAxLCAyMTksIDE5MCwgMjE0LCAyMTQsIDgzLCAKKyAgICAxLCAyMTksIDE5MCwgNzAsIDgzLCAxLCAyMTksIDE5MCwgMjU0LCAxMTUsIDgzLCAxLCAyMTksIDE5MCwgMTc2LCA4MywgMSwgCisgICAgMjE5LCAxOTAsIDI0MywgMTM1LCA4MywgMSwgMjE5LCAxOTAsIDE2MiwgODMsIDEsIDIxOSwgMTkwLCAxOTAsIDgzLCAxLCAKKyAgICAyMTksIDE5MCwgMjIwLCAxMDIsIDgzLCAxLCAyMTksIDE5MCwgMjE3LCAxMDUsIDgzLCAxLCAyMTksIDE5MCwgMjQ4LCAyMjEsIAorICAgIDgzLCAxLCAyMTksIDE5MCwgMjM1LCAxNDEsIDgzLCAxLCAyMTksIDE5MCwgMjQ0LCAxOTYsIDgzLCAxLCAyMTksIDE5MCwgCisgICAgMjQzLCAxMzIsIDgzLCAxLCAyMTksIDE5MCwgMjQyLCA0NiwgODMsIDEsIDIxOSwgMTkwLCAyMTUsIDE4MywgODMsIDEsIAorICAgIDIxOSwgMTkwLCAyMTAsIDExNiwgODMsIDEsIDIxOSwgMTkwLCAyMjMsIDE4NCwgODMsIDEsIDIxOSwgMTkwLCAyNTAsIDE1NywgCisgICAgODMsIDEsIDIxOSwgMTkwLCAyMTAsIDgyLCA4MywgMSwgMjMxLCAxODMsIDczLCA4MywgMSwgMjMxLCAxODMsIDE3NiwgODMsIAorICAgIDEsIDIzMSwgMTgzLCAyMDUsIDgzLCAxLCAyMzEsIDE4MywgMjQ0LCAxOTYsIDgzLCAxLCAyMzEsIDE4MywgMjEwLCA4MiwgCisgICAgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjU0LCA3NiwgMTEwLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTMsIAorICAgIDE0OCwgMTEwLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDgsIDE4NiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgCisgICAgMjE0LCAyMjQsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIzNSwgMTkzLCAyMTQsIDIyNCwgODMsIDEsIDI1NCwgMTYyLCAKKyAgICAyNDMsIDExNiwgMjUyLCAxNTUsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDEzNCwgMjUyLCAxNTUsIDgzLCAxLCAyNTQsIAorICAgIDE2MiwgMjQzLCAxMTYsIDYxLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCA3MywgODMsIDEsIDI1NCwgMTYyLCAyNDMsIAorICAgIDExNiwgMTc2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMjksIDc3LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAKKyAgICAyNTEsIDMzLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTUsIDE1NiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgCisgICAgMjE1LCAxNDQsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI0OCwgMTM1LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAKKyAgICAyMjgsIDExMCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE3LCAxMDUsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDI0OCwgMjIxLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAxOTAsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIyNSwgCisgICAgMTQ3LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTgsIDIyMywgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjEwLCAKKyAgICA4MiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjEwLCAxMTYsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI1NCwgCisgICAgMjA5LCA4MywgMSwgMjE2LCAzOSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTcsIDEwNSwgODMsIDEsIDIxNiwgMzksIDI1NCwgCisgICAgMTYyLCAyNDMsIDExNiwgMjEwLCA4MiwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI0MiwgMjQ5LCAKKyAgICA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjI5LCA3NywgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgCisgICAgMjQzLCAxMTYsIDI1MSwgMzMsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMzUsIDExNCwgODMsIDEsIAorICAgIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNSwgMTU2LCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIAorICAgIDExNiwgMjQ4LCAxMTksIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTcsIDEwNSwgODMsIDEsIDIzMSwgCisgICAgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI0OCwgMjUsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAKKyAgICAyMTgsIDIyMywgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI0OSwgNzIsIDgzLCAxLCAyMzEsIDE4MywgCisgICAgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTAsIDgyLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjEwLCAKKyAgICAxMTYsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDE2MywgNzAsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDE2MywgCisgICAgMTkxLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjUyLCAxOCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIAorICAgIDExNiwgMjQ4LCAyMTEsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMzIsIDI1NCwgMTgsIDE5LCAKKyAgICAyMjYsIDEwOSwgMTgsIDE5LCAyNTMsIDE2NywgMTgsIDE5LCAyNTUsIDI4LCAxOCwgMTksIDIxMiwgMjUsIDE4LCAxOSwgCisgICAgMjI0LCAyMjEsIDE4LCAxOSwgMjI1LCAyMjksIDE4LCAxOSwgMjI0LCAxMDUsIDE4LCAxOSwgMjE3LCAzMSwgMTgsIDE5LCAKKyAgICAyMzQsIDE4OSwgMTgsIDE5LCAyMzMsIDE3OSwgMTgsIDE5LCAyMzEsIDEzMiwgMTgsIDE5LCAyMjgsIDM3LCAxOCwgMTksIAorICAgIDIyOSwgMTgxLCAxOCwgMTksIDIzMywgNjgsIDE4LCAxOSwgMjE5LCAyMiwgMTgsIDE5LCAyMjEsIDIxMSwgMTgsIDE5LCAKKyAgICAyMTksIDIzMiwgMTgsIDE5LCAyMjAsIDY2LCAxOCwgMTksIDIxOSwgMjAxLCAxOCwgMTksIDIxMCwgMjIwLCAxOCwgMTksIAorICAgIDIxMSwgNTIsIDE4LCAxOSwgMjIzLCAxMzQsIDE4LCAxOSwgMjI3LCAxNzEsIDE4LCAxOSwgMjI2LCAyMTYsIDIyNywgMTcxLCAKKyAgICAxOCwgMTksIDIyNywgMTcwLCAxOCwgMTksIDIyNiwgMjE2LCAyMjcsIDE3MCwgMTgsIDE5LCAyMjcsIDE2OSwgMTgsIDE5LCAKKyAgICAyMjYsIDIxNiwgMjI3LCAxNjksIDE4LCAxOSwgMjI3LCAxNjgsIDE4LCAxOSwgMjI2LCAyMTYsIDIyNywgMTY4LCAxOCwgMTksIAorICAgIDIyMiwgMTA1LCAxOCwgMTksIDIyMiwgMTA0LCAxOCwgMTksIDIyMiwgMTAzLCAxOCwgMTksIDIyMiwgMTAyLCAxOCwgMTksIAorICAgIDIyMiwgMTAxLCAxOCwgMTksIDIyMiwgMTA5LCAxOCwgMTksIDIyNiwgMjE2LCAyMjYsIDEwNSwgMTgsIDE5LCAyMjYsIDIxNiwgCisgICAgMjE3LCAxNTIsIDE4LCAxOSwgMjI2LCAyMTYsIDIzNSwgMjMsIDE4LCAxOSwgMjI2LCAyMTYsIDI1MSwgNjYsIDE4LCAxOSwgCisgICAgMjI2LCAyMTYsIDE5MywgMTgsIDE5LCAyMjYsIDIxNiwgMjMwLCAyNSwgMTgsIDE5LCAyMjYsIDIxNiwgMjIyLCA5MSwgMTgsIAorICAgIDE5LCAyMjYsIDIxNiwgMjIwLCAxMDQsIDE4LCAxOSwgMjQ1LCAyMTksIDIxMiwgOTgsIDE4LCAxOSwgMjEyLCA3LCAyMTIsIAorICAgIDk4LCAxOCwgMTksIDQwLCA0LCAyMjIsIDIzMywgMTgsIDE5LCA0MCwgMjIzLCAxNTcsIDI0NywgMTIwLCAxOCwgMTksIDIyMywgCisgICAgMjIzLCAyMjIsIDEwNiwgMTgsIDE5LCAxNTksIDIzMiwgMTI3LCAxOCwgMTksIDE1OSwgMjMzLCAxMzQsIDE4LCAxOSwgMjE2LCAKKyAgICAxMjYsIDE4LCAxOSwgMjE2LCAxMjgsIDE4LCAxOSwgMjE1LCAxMzYsIDE4LCAxOSwgMjE1LCAxMzgsIDE4LCAxOSwgMjE1LCAKKyAgICAxNDMsIDE4LCAxOSwgMjE2LCA0OSwgMTgsIDE5LCAyMTYsIDUxLCAxOCwgMTksIDIyMSwgMjA5LCAyMTksIDIwNiwgMTgsIAorICAgIDE5LCAyMjEsIDIwOSwgMjIwLCAxLCAxOCwgMTksIDIyMSwgMjA5LCAyNDEsIDUzLCAxOCwgMTksIDcyLCAyNDIsIDczLCAxOCwgCisgICAgMTksIDcyLCAyNDgsIDUyLCAyNDMsIDU1LCAxOCwgMTksIDcyLCAyNDMsIDEzMiwgMTgsIDE5LCA3MiwgMjQyLCA3OCwgMTgsIAorICAgIDE5LCAyMjEsIDIwOSwgMjM1LCAzMywgMTgsIDE5LCA3MiwgMjM1LCAzMSwgMTgsIDE5LCAyNTIsIDY4LCAyNDgsIDUyLCAKKyAgICAxNTYsIDE4LCAxOSwgMjUyLCA2OCwgMjQ4LCA1MiwgMTUzLCAxOCwgMTksIDcyLCAyNDgsIDQ3LCAyMjIsIDkxLCAyMzIsIAorICAgIDIyMywgMjEzLCAxMjIsIDIzMywgMTAsIDIzMiwgMjIzLCAxLCAxNzYsIDIzMiwgMjIzLCAxLCAyMzQsIDEzMiwgMjMyLCAKKyAgICAyMjMsIDEsIDI0MywgMTM1LCAyMzIsIDIyMywgMSwgMjQyLCAyNDksIDIzMiwgMjIzLCAxLCAyMjksIDc3LCAyMzIsIDIyMywgCisgICAgMSwgMjUxLCAzMywgMjMyLCAyMjMsIDEsIDI1MCwgMTU3LCAyMzIsIDIyMywgMSwgMjM1LCAxNDEsIDIzMiwgMjIzLCAxLCAKKyAgICAyMzUsIDExNCwgMjMyLCAyMjMsIDEsIDIxMSwgNzEsIDIzMiwgMjIzLCAxLCAyMTcsIDEwNSwgMjMyLCAyMjMsIDEsIDIxNiwgCisgICAgMjA4LCAyMzIsIDIyMywgMSwgMjQ4LCAyMjEsIDIzMiwgMjIzLCAxLCAyNDgsIDI1LCAyMzIsIDIyMywgMSwgMTk3LCAyMzIsIAorICAgIDIyMywgMSwgMTkwLCAyMzIsIDIyMywgMSwgMjI1LCAxNDcsIDIzMiwgMjIzLCAxLCAyNTIsIDE5MSwgMjMyLCAyMjMsIDEsIAorICAgIDI1MiwgMTgsIDIzMiwgMjIzLCAxLCAxODQsIDIzMiwgMjIzLCAxLCAxOTEsIDIzMiwgMjIzLCAxLCAyMDUsIDIzMiwgMjIzLCAKKyAgICAxLCAyMzMsIDEzNSwgMjMyLCAyMjMsIDEsIDIxMiwgNjUsIDIzMiwgMjIzLCAxLCAyMjAsIDEwMiwgMjMyLCAyMjMsIDEsIAorICAgIDIxOCwgMjIzLCAyMzIsIDIyMywgMSwgMjA2LCAyMzIsIDIyMywgMSwgMTYyLCAyMzIsIDIyMywgMjUsIDUsIDYxLCAyMzIsIAorICAgIDIyMywgMjUsIDUsIDczLCAyMzIsIDIyMywgMjUsIDUsIDcwLCAyMzIsIDIyMywgMjUsIDUsIDI0NSwgMjA5LCAyMzIsIDIyMywgCisgICAgMjUsIDUsIDI1NCwgMjAxLCAyMzIsIDIyMywgMjUsIDUsIDIyNiwgMTgzLCAyMzIsIDIyMywgMjUsIDUsIDI1MywgMTkyLCAKKyAgICAyMzIsIDIyMywgMjUsIDUsIDc1LCAyMzIsIDIyMywgMjUsIDUsIDc2LCAyMzIsIDIyMywgMjE4LCA3MywgMSwgMTkxLCAyMzIsIAorICAgIDIyMywgMjE4LCA3MywgMSwgMjA1LCAyMzIsIDIyMywgMjE4LCA3MywgMSwgMjEyLCA2NSwgMjMyLCAyMjMsIDQsIDEsIDE3NiwgCisgICAgMjMyLCAyMjMsIDQsIDEsIDIyOSwgNzcsIDIzMiwgMjIzLCA0LCAxLCAyNTQsIDc1LCAyMzIsIDIyMywgNCwgMSwgMjE3LCAKKyAgICAxMDUsIDIzMiwgMjIzLCA0LCAxLCAxOTcsIDIzMiwgMjIzLCA0LCAxLCAxOTAsIDIzMiwgMjIzLCA0LCAxLCAxODQsIDIzMiwgCisgICAgMjIzLCA0LCAxLCAyMDUsIDIzMiwgMjIzLCA0LCAxLCAyMzMsIDEzNSwgMjMyLCAyMjMsIDUsIDIzMCwgODksIDIzMiwgMjIzLCAKKyAgICA1LCAyMzQsIDE3MSwgMjMyLCAyMjMsIDUsIDIyMiwgMzIsIDIzMiwgMjIzLCA1LCAyMzIsIDEyNywgMjMyLCAyMjMsIDI0NSwgCisgICAgMzEsIDc4LCAyMzIsIDIyMywgMjI0LCAxMywgNzgsIDIzMiwgMjIzLCAyMSwgMjEwLCA4NiwgMjMyLCAyMjMsIDIxLCAxMTAsIAorICAgIDIzMiwgMjIzLCAyMSwgMTA1LCAyMzIsIDIyMywgMjEsIDE1OCwgMjMyLCAyMjMsIDIxLCAxNjEsIDIzMiwgMjIzLCAyMSwgCisgICAgMTg5LCAyMzIsIDIyMywgMjEsIDE5NCwgMjMyLCAyMjMsIDIxLCAxOTgsIDIzMiwgMjIzLCAyMSwgMTk1LCAyMzIsIDIyMywgCisgICAgMjEsIDIwMCwgMzksIDIzMywgNTksIDEsIDE3NiwgMzksIDIzMywgNTksIDEsIDIxMSwgMTY1LCAzOSwgMjMzLCA1OSwgMSwgCisgICAgMjI5LCA3NywgMzksIDIzMywgNTksIDEsIDIxNSwgMTgzLCAzOSwgMjMzLCA1OSwgMSwgMjA2LCAzOSwgMjMzLCA1OSwgMSwgCisgICAgMTkxLCAzOSwgMjMzLCA1OSwgMSwgMjE3LCAxMDUsIDM5LCAyMzMsIDU5LCAxLCAyMTYsIDIwOCwgMzksIDIzMywgNTksIDEsIAorICAgIDIzMywgMTM1LCAzOSwgMjMzLCA1OSwgMSwgMTkwLCAzOSwgMjMzLCA1OSwgMSwgMjI1LCAxNDcsIDM5LCAyMzMsIDU5LCAxLCAKKyAgICAxODQsIDM5LCAyMzMsIDU5LCAxLCAyNDQsIDE5NiwgMzksIDIzMywgNTksIDEsIDIxNCwgMjcsIDM5LCAyMzMsIDU5LCAxLCAKKyAgICAxNjIsIDM5LCAyMzMsIDU5LCAxLCAyMjQsIDg4LCAzOSwgMjMzLCA1OSwgMSwgMjM0LCAxMzIsIDM5LCAyMzMsIDU5LCAxLCAKKyAgICAyMTUsIDE3NSwgMzksIDIzMywgNTksIDEsIDE5NywgMzksIDIzMywgNTksIDEsIDYxLCAzOSwgMjMzLCA1OSwgMSwgNzMsIAorICAgIDM5LCAyMzMsIDU5LCAxLCAyNDUsIDIwOSwgMzksIDIzMywgNTksIDEsIDI0NSwgMTk3LCAzOSwgMjMzLCA1OSwgMSwgNzAsIAorICAgIDM5LCAyMzMsIDU5LCAxLCAyMjYsIDE4MywgMzksIDIzMywgNTksIDEsIDc2LCAzOSwgMjMzLCA1OSwgMSwgMjE0LCAyMTQsIAorICAgIDM5LCAyMzMsIDU5LCAxLCA3NSwgMzksIDIzMywgNTksIDEsIDI1MywgMTkwLCAzOSwgMjMzLCA1OSwgMSwgMjU0LCAyMDEsIAorICAgIDM5LCAyMzMsIDU5LCAxLCAyMTYsIDI4LCAzOSwgMjMzLCA1OSwgMSwgMjE2LCAyNywgMzksIDIzMywgNTksIDEsIDIxNiwgCisgICAgMjYsIDM5LCAyMzMsIDU5LCAxLCAyMTYsIDI1LCAzOSwgMjMzLCA1OSwgMSwgMjE2LCAyNCwgMTY2LCAzOSwgMTczLCAxLCAKKyAgICAxMjUsIDIyNCwgODgsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMjQsIDg4LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTc2LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjExLCAxNjUsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMjksIDc3LCAxNjYsIDM5LCAKKyAgICAxNzMsIDEsIDEyMSwgMTc2LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjExLCAxNjUsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAKKyAgICAyMjksIDc3LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjE1LCAxODMsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMDYsIDE2NiwgCisgICAgMzksIDE3MywgMSwgMTI1LCAxOTEsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTUsIDE4MywgMTY2LCAzOSwgMTczLCAxLCAKKyAgICAxMjEsIDIwNiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxNywgMTA1LCAxNjYsIAorICAgIDM5LCAxNzMsIDEsIDEyNSwgMjE2LCAyMDgsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxOTcsIDE2NiwgMzksIDE3MywgMSwgCisgICAgMTIxLCAyMTcsIDEwNSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxNiwgMjA4LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTk3LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTkwLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjI1LCAxNDcsIDE2NiwgMzksIDE3MywgCisgICAgMSwgMTI1LCAxODQsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxOTAsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMjUsIDE0NywgCisgICAgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE4NCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDI0NCwgMTk2LCAxNjYsIDM5LCAxNzMsIAorICAgIDEsIDEyNSwgMjE0LCAyNywgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIzMywgMTM1LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgCisgICAgMjQ0LCAxOTYsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTQsIDI3LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjMzLCAxMzUsIAorICAgIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxNjIsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyNDgsIDIyMSwgMTY2LCAzOSwgMTczLCAKKyAgICAxLCAxMjUsIDI1MiwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTYyLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjQ4LCAKKyAgICAyMjEsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyNTIsIDE5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIzMywgMTg0LCAxNjYsIAorICAgIDM5LCAxNzMsIDEsIDEyNSwgMjExLCAxMzgsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMzMsIDE4NCwgMTY2LCAzOSwgMTczLCAKKyAgICAxLCAxMjEsIDIxMSwgMTM4LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjE4LCA4MiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIAorICAgIDIxOCwgODIsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1LCAyMTksIDIzOSwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjU1LCA3MywgCisgICAgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjM2LCAzMywgMTY2LCAzOSwgMTczLCAyNSwgNSwgNzAsIDE2NiwgMzksIDE3MywgMjUsIAorICAgIDUsIDIxNCwgMTE4LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCA3NSwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjU0LCAyNDMsIDE2NiwgCisgICAgMzksIDE3MywgMjUsIDUsIDc2LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMjcsIDAsIDE2NiwgMzksIDE3MywgMjUsIDUsIAorICAgIDIxNCwgMjE0LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTMsIDE2NywgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjU1LCAyOCwgCisgICAgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjE0LCAxMTEsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIyNiwgMTA5LCAxNjYsIDM5LCAKKyAgICAxNzMsIDI1LCA1LCAyMjYsIDI1MywgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjE0LCAyMTAsIDE2NiwgMzksIDE3MywgMjUsIDUsIAorICAgIDIzNSwgMTUyLCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMTQsIDEwNSwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjI5LCA3OSwgCisgICAgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjMwLCAyNSwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMTkzLCAxNjYsIDM5LCAxNzMsIDEsIAorICAgIDQwLCAyMzUsIDIzLCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyNDksIDYwLCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyNTMsIDE1OCwgCisgICAgMTY2LCAzOSwgMTczLCAxMzgsIDIzMSwgMTU4LCAxNjYsIDM5LCAxNzMsIDEzOCwgMjMxLCAxNTcsIDE2NiwgMzksIDE3MywgCisgICAgMjEsIDIxMCwgODYsIDE2NiwgMzksIDE3MywgMjEsIDExMCwgMTY2LCAzOSwgMTczLCAyMSwgMTA1LCAxNjYsIDM5LCAxNzMsIAorICAgIDIxLCAxNTgsIDE2NiwgMzksIDE3MywgMjEsIDE2MSwgMTY2LCAzOSwgMTczLCAyMSwgMTg5LCAxNjYsIDM5LCAxNzMsIDIxLCAKKyAgICAxOTQsIDE2NiwgMzksIDE3MywgMjEsIDE5OCwgMTY2LCAzOSwgMTczLCAyMSwgMTk1LCAxNjYsIDM5LCAxNzMsIDIxLCAyMDAsIAorICAgIDE2NiwgMzksIDE3MywgODksIDIxLCAxMTAsIDE2NiwgMzksIDE3MywgNSwgMjMzLCAxMjAsIDE2NiwgMzksIDE3MywgNSwgCisgICAgMjMzLCAxMTksIDY5LCAxNiwgMjI1LCAyMzYsIDY5LCAxNiwgMjMwLCA3MiwgMjM0LCAyNSwgNjksIDE2LCAyMjUsIDcyLCAKKyAgICAyMzQsIDI1LCA2OSwgMTYsIDI1MiwgNTAsIDIzNCwgMjUsIDY5LCAxNiwgMjUxLCAxMDQsIDIzNCwgMjUsIDY5LCAxNiwgCisgICAgMjI0LCAyMTYsIDIzNCwgMjUsIDY5LCAxNiwgMjI0LCAyMTAsIDIzNCwgMjUsIDY5LCAxNiwgMjI0LCAyMDgsIDIzNCwgMjUsIAorICAgIDY5LCAxNiwgMjI0LCAyMTQsIDIzNCwgMjUsIDY5LCAxNiwgMjI0LCAyMTIsIDIzNCwgMjUsIDY5LCAxNiwgMjQ4LCAxNzMsIAorICAgIDIzNCwgMjUsIDY5LCAxNiwgMjQ4LCAxNjksIDIzNCwgMjUsIDY5LCAxNiwgMjQ4LCAxNjgsIDIzNCwgMjUsIDY5LCAxNiwgCisgICAgMjQ4LCAxNzEsIDIzNCwgMjUsIDY5LCAxNiwgMjQ4LCAxNzAsIDIzNCwgMjUsIDY5LCAxNiwgMjQ4LCAxNjcsIDIzNCwgMjUsIAorICAgIDY5LCAxNiwgMjE1LCA4NywgNjksIDE2LCAyMzAsIDcyLCAyMjIsIDIwNSwgNjksIDE2LCAyMjUsIDcyLCAyMjIsIDIwNSwgCisgICAgNjksIDE2LCAyNTIsIDUwLCAyMjIsIDIwNSwgNjksIDE2LCAyNTEsIDEwNCwgMjIyLCAyMDUsIDY5LCAxNiwgMjI0LCAyMTYsIAorICAgIDIyMiwgMjA1LCA2OSwgMTYsIDIyNCwgMjEwLCAyMjIsIDIwNSwgNjksIDE2LCAyMjQsIDIwOCwgMjIyLCAyMDUsIDY5LCAxNiwgCisgICAgMjI0LCAyMTQsIDIyMiwgMjA1LCA2OSwgMTYsIDIyNCwgMjEyLCAyMjIsIDIwNSwgNjksIDE2LCAyNDgsIDE3MywgMjIyLCAKKyAgICAyMDUsIDY5LCAxNiwgMjQ4LCAxNjksIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgMTY4LCAyMjIsIDIwNSwgNjksIDE2LCAyNDgsIAorICAgIDE3MSwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAxNzAsIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgMTY3LCAyMjIsIDIwNSwgCisgICAgMjUxLCAxMjEsIDEsIDE3NiwgMjUxLCAxMjEsIDEsIDI0MywgMTM1LCAyNTEsIDEyMSwgMSwgMjI5LCA3NywgMjUxLCAxMjEsIAorICAgIDEsIDIyOSwgMjIsIDI1MSwgMTIxLCAxLCAxOTAsIDI1MSwgMTIxLCAxLCAyNTIsIDE5MSwgMjUxLCAxMjEsIDEsIDE4NCwgCisgICAgMjUxLCAxMjEsIDEsIDIzMCwgMTA1LCAyNTEsIDEyMSwgMSwgMjE3LCAxMDUsIDI1MSwgMTIxLCAxLCAyNDgsIDIyMSwgMjUxLCAKKyAgICAxMjEsIDEsIDE5NywgMjUxLCAxMjEsIDEsIDIyOCwgMzYsIDI1MSwgMTIxLCAxLCAyNTEsIDMzLCAyNTEsIDEyMSwgMSwgCisgICAgMjM1LCAxNDEsIDI1MSwgMTIxLCAxLCAyMjcsIDE2NSwgMjUxLCAxMjEsIDEsIDIyNywgMTU4LCAyNTEsIDEyMSwgMSwgMTkxLCAKKyAgICAyNTEsIDEyMSwgMSwgMjA1LCAyNTEsIDEyMSwgMSwgMjMzLCAxMzUsIDI1MSwgMTIxLCAxLCAyMTQsIDI3LCAyNTEsIDEyMSwgCisgICAgMSwgMjA2LCAyNTEsIDEyMSwgMSwgNjEsIDI1MSwgMTIxLCAxLCAxNjIsIDI1MSwgMTIxLCAyNSwgNSwgNzMsIDI1MSwgMTIxLCAKKyAgICAyNSwgNSwgNzAsIDI1MSwgMTIxLCAyNSwgNSwgNzUsIDI1MSwgMTIxLCAyNSwgNSwgNzYsIDI1MSwgMTIxLCAyNSwgNSwgCisgICAgMjU0LCAyNDMsIDI1MSwgMTIxLCAyMjYsIDYwLCAyNTEsIDEyMSwgMjQ1LCAxNDMsIDY0LCAyMjEsIDE3MiwgMzksIDg5LCAxLCAKKyAgICAxMjUsIDE3NiwgMzksIDg5LCAxLCAxMjUsIDIzNCwgMTMyLCAzOSwgODksIDEsIDEyNSwgMjMzLCAxNzEsIDM5LCA4OSwgMSwgCisgICAgMTIxLCAxNzYsIDM5LCA4OSwgMSwgMTIxLCAyMzMsIDE3MSwgMzksIDg5LCAxLCAxMjEsIDIzNCwgMTMyLCAzOSwgODksIDEsIAorICAgIDIyOSwgNzcsIDM5LCA4OSwgMSwgMTI1LCAyNTEsIDMzLCAzOSwgODksIDEsIDEyNSwgMjUwLCAxNTcsIDM5LCA4OSwgMSwgCisgICAgMTIxLCAyNTEsIDMzLCAzOSwgODksIDEsIDEyMSwgMjA2LCAzOSwgODksIDEsIDEyMSwgMjUwLCAxNTcsIDM5LCA4OSwgMSwgCisgICAgMjI3LCAxNjUsIDM5LCA4OSwgMSwgMjIzLCAxNDAsIDM5LCA4OSwgMSwgMTI1LCAyMjMsIDEzOCwgMzksIDg5LCAxLCAyNDgsIAorICAgIDIyMSwgMzksIDg5LCAxLCAxMjEsIDIyMywgMTM4LCAzOSwgODksIDEsIDIyMywgMTQ5LCAzOSwgODksIDEsIDEyNSwgMjE3LCAKKyAgICAxMDUsIDM5LCA4OSwgMSwgMTI1LCAyMTYsIDIwOCwgMzksIDg5LCAxLCAxMjEsIDIxNywgMTA1LCAzOSwgODksIDEsIDEyMSwgCisgICAgMjE2LCAyMDgsIDM5LCA4OSwgMSwgMTk3LCAzOSwgODksIDEsIDI1MiwgMTkxLCAzOSwgODksIDEsIDEyNSwgMTkwLCAzOSwgCisgICAgODksIDEsIDEyNSwgMjI1LCAxNDcsIDM5LCA4OSwgMSwgMTI1LCAyNDQsIDE5NiwgMzksIDg5LCAxLCAxMjEsIDE5MCwgMzksIAorICAgIDg5LCAxLCAxMjEsIDI0NCwgMTk2LCAzOSwgODksIDEsIDEyMSwgMjI1LCAxNDcsIDM5LCA4OSwgMSwgMTg0LCAzOSwgODksIAorICAgIDEsIDEyMSwgMTkxLCAzOSwgODksIDEsIDEyNSwgMTkxLCAzOSwgODksIDEsIDIwNSwgMzksIDg5LCAxLCAyMjIsIDEzNywgCisgICAgMzksIDg5LCAxLCAyMzMsIDEzNSwgMzksIDg5LCAxLCAyMzIsIDkzLCAzOSwgODksIDEsIDIxMiwgNjUsIDM5LCA4OSwgMSwgCisgICAgMTI1LCAyMjAsIDEwMiwgMzksIDg5LCAxLCAxMjUsIDIxOCwgMjIzLCAzOSwgODksIDEsIDEyNSwgMjA2LCAzOSwgODksIDEsIAorICAgIDEyNSwgMTYyLCAzOSwgODksIDEsIDIzMiwgMTg0LCAzOSwgODksIDEsIDYxLCAzOSwgODksIDEsIDEyMSwgMTYyLCAzOSwgCisgICAgODksIDEsIDczLCAzOSwgODksIDEsIDIzNiwgMzMsIDM5LCA4OSwgMSwgNzAsIDM5LCA4OSwgMSwgMjE0LCAxMTgsIDM5LCAKKyAgICA4OSwgMSwgMjQ1LCAyMDksIDM5LCA4OSwgMSwgMjI2LCAxODMsIDM5LCA4OSwgMSwgMjMzLCAxMjAsIDM5LCA4OSwgMSwgCisgICAgMjQyLCAxMzIsIDIwNiwgMzksIDg5LCAxMTYsIDUsIDE0NywgMjA1LCAzOSwgODksIDExNiwgNSwgMTQ3LCAyMzMsIDEzNSwgCisgICAgMzksIDg5LCAxMTYsIDUsIDIzMywgMTM2LCAyMTcsIDU4LCAyMzMsIDEwOSwgMzksIDg5LCA1LCAyMzEsIDIwNCwgMjM0LCAKKyAgICAyMzEsIDIzMywgMTA5LCAzOSwgODksIDExNiwgNSwgNDAsIDIyOSwgNzcsIDM5LCA4OSwgMTE2LCA1LCAxMjEsIDE5MCwgMzksIAorICAgIDg5LCAxMTYsIDUsIDEyNSwgMjIzLCAxMzksIDE3NywgMTIxLCAxOTAsIDM5LCA4OSwgMTE2LCA1LCAxODQsIDM5LCA4OSwgCisgICAgMTE2LCA1LCAyNTIsIDE5MSwgMzksIDg5LCAxMTYsIDUsIDIwNiwgMzksIDg5LCA1LCAyMjIsIDEwLCAzOSwgODksIDI1LCA1LCAKKyAgICA2MSwgMzksIDg5LCAyNSwgNSwgMjMxLCAyMDQsIDIyMSwgMjI2LCAzOSwgODksIDI1LCA1LCAyNTUsIDczLCAzOSwgODksIAorICAgIDI1LCA1LCAyMTcsIDY0LCAyNTUsIDczLCAzOSwgODksIDI1LCA1LCA3MywgMzksIDg5LCAyNSwgNSwgMjM2LCAzMywgMzksIAorICAgIDg5LCAyNSwgNSwgMjE0LCAyMTQsIDM5LCA4OSwgMjUsIDUsIDIxNCwgMTE3LCAzOSwgODksIDI1LCA1LCA3MCwgMzksIDg5LCAKKyAgICAyNSwgNSwgMjE0LCAxMTgsIDM5LCA4OSwgMjUsIDUsIDc2LCAzOSwgODksIDI1LCA1LCAyMjcsIDEsIDUxLCAzOSwgODksIAorICAgIDI1LCA1LCAyMjYsIDEwOSwgMzksIDg5LCAyNSwgNSwgNzUsIDM5LCA4OSwgMjUsIDUsIDI1NCwgMjQzLCAzOSwgODksIDI1LCAKKyAgICA1LCAyMjYsIDE4MywgMzksIDg5LCAyNSwgNSwgMjU0LCAyMDEsIDM5LCA4OSwgMjUsIDUsIDg5LCAyNTQsIDIwMSwgMzksIAorICAgIDg5LCAyNSwgNSwgMjI3LCAxLCA0OCwgMzksIDg5LCA1LCAyMzEsIDIwNCwgMjM0LCAyMzAsIDM5LCA4OSwgNSwgMjE2LCAyOSwgCisgICAgMzksIDg5LCA1LCAyMTYsIDI4LCAzOSwgODksIDUsIDIzNCwgOTcsIDIxNiwgMjcsIDM5LCA4OSwgNSwgMjM0LCA5NywgMjE2LCAKKyAgICAyNiwgMzksIDg5LCA1LCAyMzQsIDk3LCAyMTYsIDI1LCAzOSwgODksIDUsIDIyMywgMTg4LCAyNDIsIDQ1LCAzOSwgODksIDUsIAorICAgIDIzMSwgMjA0LCAyMjEsIDI1MywgMzksIDg5LCA1LCAyMzQsIDk2LCAyMzQsIDIxNSwgMzksIDg5LCAzOCwgMjQ5LCAxMTUsIAorICAgIDI0NywgMTIwLCAzOSwgODksIDI0MSwgNDYsIDIxLCAyMTAsIDg2LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxMTAsIDM5LCA4OSwgCisgICAgMjQxLCA0NiwgMjEsIDEwNSwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTU4LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxNjEsIDM5LCAKKyAgICA4OSwgMjQxLCA0NiwgMjEsIDE4OSwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTk0LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxOTgsIAorICAgIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE5NSwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMjAwLCAzOSwgODksIDg5LCAyMSwgMjEwLCAKKyAgICA4NiwgMzksIDg5LCA4OSwgMjEsIDExMCwgMzksIDg5LCA4OSwgMjEsIDEwNSwgMzksIDg5LCA4OSwgMjEsIDE1OCwgMzksIAorICAgIDg5LCA4OSwgMjEsIDE2MSwgMzksIDg5LCA4OSwgMjEsIDE4OSwgMzksIDg5LCA4OSwgMjEsIDE5NCwgMzksIDg5LCA4OSwgCisgICAgMjEsIDE5OCwgMzksIDg5LCA4OSwgMjEsIDE5NSwgMzksIDg5LCA4OSwgMjEsIDIwMCwgMzksIDg5LCA1LCAyMTEsIDI0OSwgCisgICAgMzksIDg5LCA1LCAyMTEsIDI0OCwgMzksIDg5LCA1LCAyMjEsIDIxNSwgMzksIDg5LCA1LCAyMzQsIDE2MCwgMzksIDg5LCA1LCAKKyAgICAyNDAsIDIzMiwgMzksIDg5LCA1LCAyNDcsIDEzNCwgMzksIDg5LCA1LCAyMjMsIDQ5LCAyMjIsIDE4NywgMjIzLCAxNDksIAorICAgIDM5LCA4OSwgNSwgMjMxLCAyMDQsIDIxMSwgNzIsIDM5LCA4OSwgNSwgMjM1LCA2LCAzOSwgODksIDUsIDIzNSwgNSwgMzksIAorICAgIDg5LCA1LCAyMjEsIDIyMiwgMzksIDg5LCA1LCAyMjEsIDIyMSwgMzksIDg5LCA1LCAyNDIsIDksIDM5LCA4OSwgNSwgMjUxLCAKKyAgICAzMCwgMTAyLCA1LCAyMTQsIDIwMCwgMjIzLCAzMCwgMTAyLCA1LCAyMTQsIDIwMCwgMjUxLCAxLCAxMDIsIDUsIDI1MCwgCisgICAgMTg2LCAxMDIsIDUsIDIxOCwgMTUsIDEwMiwgNSwgMjUxLCAyMzMsIDEwMiwgMSwgMjU0LCAxODQsIDEwMiwgMSwgMjU0LCAKKyAgICAxODUsIDIxNywgMTMsIDEwMiwgMSwgMjM2LCAyOSwgMTAyLCAxLCAyMzYsIDMwLCAyMTcsIDEzLCAxMDIsIDEsIDIxNCwgCisgICAgMjAzLCAxMDIsIDEsIDIxNCwgMjA0LCAyMTcsIDEzLCAxMDIsIDEsIDIyMywgMTg4LCAyMjMsIDc5LCAxMDIsIDEsIDIyMywgCisgICAgMTg4LCAyMjMsIDgwLCAyMTcsIDEzLCAxMDIsIDEsIDIzMywgMTM2LCAyMzMsIDI0LCAxMDIsIDEsIDIzMywgMTM2LCAyMzMsIAorICAgIDI1LCAyMTcsIDEzLCAxMDIsIDEsIDI0NSwgMTc5LCAxMDIsIDEsIDI1NCwgMTk5LCAxMDIsIDEsIDIyNiwgMjEyLCAxMDIsIAorICAgIDEsIDIyNiwgMjEzLCAyMTcsIDEzLCAxMDIsIDEsIDE3NiwgMTAyLCAxLCAyMzUsIDEzLCAyMzEsIDIwNywgMTAyLCAxLCAKKyAgICAyNDMsIDEzNSwgMTAyLCAxLCAyNDMsIDEzNiwgMjQyLCAxNjEsIDEwMiwgMSwgMjI5LCA3NywgMTAyLCAxLCAyNTEsIDMzLCAKKyAgICAxMDIsIDEsIDI1MSwgMzQsIDIzMywgMTIzLCAxMDIsIDEsIDIzNSwgMTQxLCAxMDIsIDEsIDIzNSwgMTQyLCAyMzUsIDExOCwgCisgICAgMTAyLCAxLCAyMjcsIDE2NSwgMTAyLCAxLCAyMTcsIDEwNiwgMjMzLCA3NiwgMTAyLCAxLCAyMTcsIDEwNiwgMjMwLCA2NywgCisgICAgMjMxLCAyMDcsIDEwMiwgMSwgMjQ4LCAyMjIsIDIzMCwgNjcsIDI1NCwgMTQ1LCAxMDIsIDEsIDI0OCwgMjIyLCAyMzAsIDY3LCAKKyAgICAyMzEsIDIwNywgMTAyLCAxLCAyMjksIDIyOSwgMjIzLCAxNTIsIDEwMiwgMSwgMjE3LCAxMDUsIDEwMiwgMSwgMjE3LCAxMDYsIAorICAgIDIxNywgMzUsIDEwMiwgMSwgMjQ4LCAyMjEsIDEwMiwgMSwgMjQ4LCAyMjIsIDIzMSwgMjI1LCAxMDIsIDEsIDE5NywgMTAyLCAKKyAgICAxLCAxOTAsIDEwMiwgMSwgMjI2LCA5MCwgMjM0LCAyMjYsIDEwMiwgMSwgMjUyLCAxOTEsIDEwMiwgMSwgMjUyLCAxOTIsIAorICAgIDIzNCwgMTcyLCAxMDIsIDEsIDE4NCwgMTAyLCAxLCAxOTEsIDEwMiwgMSwgMjA1LCAxMDIsIDEsIDIzMywgMTM1LCAxMDIsIAorICAgIDEsIDIxMiwgNjUsIDEwMiwgMSwgMjIyLCAzNCwgMjIyLCAyMCwgMTAyLCAxLCAyMjIsIDM0LCAyMjEsIDIzMywgMTAyLCAxLCAKKyAgICAyMDYsIDEwMiwgMSwgMTYyLCAxMDIsIDUsIDIyMywgNzAsIDEwMiwgMjUsIDUsIDIxNywgMTMsIDEwMiwgMjUsIDUsIDIxNCwgCisgICAgMTk5LCAxMDIsIDI1LCA1LCAyMTQsIDIwMCwgMjIxLCAyMjksIDEwMiwgMjUsIDUsIDIxOCwgNDcsIDEwMiwgMjUsIDUsIAorICAgIDIxOCwgNDgsIDIzNiwgMjEsIDEwMiwgMjUsIDUsIDIyMywgMTg4LCAyMjMsIDc5LCAxMDIsIDI1LCA1LCAyMjMsIDE4OCwgCisgICAgMjIzLCA4MCwgMjE3LCAxMywgMTAyLCAyNSwgNSwgMjMzLCAxMzYsIDIzMywgMjQsIDEwMiwgMjUsIDUsIDIzMywgMTM2LCAKKyAgICAyMzMsIDI1LCAyMTcsIDEzLCAxMDIsIDI1LCA1LCAyMTcsIDY1LCAxMDIsIDI1LCA1LCAyMTcsIDY2LCAyMjMsIDc5LCAxMDIsIAorICAgIDI1LCA1LCAyMTcsIDY2LCAyMTcsIDEzLCAxMDIsIDI1LCA1LCAyMTcsIDY2LCAyMjMsIDgwLCAyMTcsIDEzLCAxMDIsIDI1LCAKKyAgICA1LCAyMjUsIDE4NCwgMTAyLCAyNSwgNSwgMjI1LCAxODUsIDIxNywgMTMsIDEwMiwgMjU0LCAyNTAsIDI1NCwgMjQ5LCAxMDIsIAorICAgIDEsIDIzNCwgMjUxLCAyMjEsIDIyOCwgMTAyLCAxLCAyMzQsIDEwMiwgMjIxLCAyMjgsIDEwMiwgMSwgMjE1LCAzNCwgMjIxLCAKKyAgICAyMjgsIDEwMiwgMSwgMjQ1LCAyMDMsIDIyMSwgMjI4LCAxMDIsIDEsIDIxNCwgMCwgMjIxLCAyMjgsIDEwMiwgMSwgMjEwLCAKKyAgICAxMDcsIDIyMSwgMjI4LCAxMDIsIDEsIDI1MywgMjA5LCAyMjEsIDIyOCwgMTAyLCAyMSwgMjEwLCA4NiwgMTAyLCAyMSwgCisgICAgMTEwLCAxMDIsIDIxLCAxMDUsIDEwMiwgMjEsIDE1OCwgMTAyLCAyMSwgMTYxLCAxMDIsIDIxLCAxODksIDEwMiwgMjEsIAorICAgIDE5NCwgMTAyLCAyMSwgMTk4LCAxMDIsIDIxLCAxOTUsIDEwMiwgMjEsIDIwMCwgMTAyLCAyMjYsIDI5LCAxMDIsIDIyNiwgCisgICAgNTUsIDEwMiwgMjExLCAyMzgsIDEwMiwgMjUwLCAyMzYsIDIyNiwgNDgsIDEwMiwgMjUwLCAyMzYsIDIxOSwgMTcyLCAxMDIsIAorICAgIDI1MCwgMjM2LCAyMjYsIDIsIDEwMiwgMjI2LCA1NCwgMTAyLCAyOCwgMTYsIDI0NywgMTI2LCAxMDIsIDI4LCAxNiwgMjQ4LCAKKyAgICA1MSwgMTAyLCAyOCwgMTYsIDI0NiwgNjQsIDEwMiwgMjgsIDE2LCAyNDgsIDE3NiwgMTAyLCAyOCwgMTYsIDI0OCwgMTc3LCAKKyAgICAyMTgsIDE1LCAxMDIsIDI4LCAxNiwgMjQ3LCAyMDUsIDEwMiwgMjgsIDE2LCAyNDgsIDIxNCwgMTAyLCAyOCwgMTYsIDI0OCwgCisgICAgMzMsIDEwMiwgMjgsIDE2LCAyNDgsIDE5OCwgMTAyLCAyOCwgMTYsIDI0OCwgMTc3LCAyNDMsIDU3LCAxMDIsIDI4LCAxNiwgCisgICAgMzgsIDIxNywgOSwgMTAyLCAyOCwgMTYsIDM4LCAyNDUsIDE0MSwgMTAyLCAyOCwgMTYsIDM4LCAyMzQsIDE2NywgMTAyLCAKKyAgICAyOCwgMTYsIDM4LCAyMzQsIDE2OSwgMTAyLCAyOCwgMTYsIDM4LCAyMzUsIDEyMiwgMTAyLCAyOCwgMTYsIDM4LCAyMzQsIAorICAgIDE2OCwgMiwgMjM1LCAxMjIsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNzAsIDIsIDIzNSwgMTIyLCAxMDIsIDI4LCAxNiwgCisgICAgMzgsIDI1MiwgMzcsIDEwMiwgMjgsIDE2LCAzOCwgMjQyLCAxNjUsIDEwMiwgMjgsIDE2LCAyMjIsIDI0OSwgMjA0LCAyNDYsIAorICAgIDc0LCAxMDIsIDI4LCAxNiwgMjIyLCAyNDksIDIwNCwgMjQ4LCAyMTIsIDEwMiwgMjgsIDE2LCAyMjIsIDI0OSwgMjUwLCAwLCAKKyAgICAyMTUsIDExMSwgMTAyLCAyOCwgMTYsIDIyMiwgMjQ5LCAyNTAsIDAsIDIxNywgNzMsIDEwMiwgMjgsIDE2LCAyMzMsIDQ0LCAKKyAgICAyMDQsIDIyNiwgNDMsIDEwMiwgMjgsIDE2LCAyMzMsIDQ0LCAyMDQsIDIyNCwgMTM5LCAxMDIsIDI4LCAxNiwgMjMzLCA0NCwgCisgICAgMjUwLCAwLCAyMjUsIDM4LCAxMDIsIDI4LCAxNiwgMjMzLCA0NCwgMjUwLCAwLCAyMjUsIDI2LCAxMDIsIDI4LCAxNiwgMjMzLCAKKyAgICA0NCwgMjA0LCAyMjUsIDYxLCAyMDcsIDUsIDIyNiwgMjYsIDIwNywgNSwgMjI2LCAzOSwgMjA3LCA1LCAyMjYsIDM1LCAyMDcsIAorICAgIDEsIDYxLCAyMDcsIDEsIDczLCAyMDcsIDEsIDcwLCAyMDcsIDEsIDI1NCwgMjQzLCAyMDcsIDEsIDc2LCAyMDcsIDEsIDc1LCAKKyAgICAyMDcsIDEsIDI0NSwgNTUsIDIwNywgMSwgMTc2LCAyMDcsIDEsIDIyNCwgODgsIDIwNywgMSwgMjQzLCAxMzUsIDIwNywgMSwgCisgICAgMjI5LCA3NywgMjA3LCAxLCAyNTEsIDMzLCAyMDcsIDEsIDIzNSwgMTQxLCAyMDcsIDEsIDIxMCwgMTE2LCAyMDcsIDEsIAorICAgIDIyNywgMTY1LCAyMDcsIDEsIDIxNywgMTA1LCAyMDcsIDEsIDI0OCwgMjIxLCAyMDcsIDEsIDE5NywgMjA3LCAxLCAxOTAsIAorICAgIDIwNywgMSwgMjQ0LCAxOTYsIDIwNywgMSwgMjE0LCAyNywgMjA3LCAxLCAyNTIsIDE5MSwgMjA3LCAxLCAxODQsIDIwNywgMSwgCisgICAgMTkxLCAyMDcsIDEsIDIwNSwgMjA3LCAxLCAyMzMsIDEzNSwgMjA3LCAxLCAyMTIsIDY1LCAyMDcsIDEsIDIwNiwgMjA3LCAxLCAKKyAgICAyMTEsIDE2NSwgMjA3LCAxLCAxNjIsIDIwNywgMTE2LCA1LCAyMjYsIDUyLCAyMDcsIDExNiwgNSwgMjI2LCAyOCwgMjA3LCAKKyAgICAxMTYsIDUsIDIyNiwgMjUsIDIwNywgMjUsIDUsIDIyNiwgNDIsIDIwNywgMjUsIDUsIDIyNiwgMjQsIDIwNywgMjUsIDUsIAorICAgIDIyNiwgNDYsIDIwNywgMjUsIDUsIDIyNiwgMzQsIDIwNywgMjUsIDUsIDIyNiwgNTMsIDIwNywgMjUsIDUsIDIyNiwgNDQsIAorICAgIDIwNywgNSwgMjI2LCA1NiwgMjA3LCA1LCAyMTMsIDE1MiwgMjA3LCAxMTYsIDUsIDIyNSwgMjQ4LCAxODQsIDIwNywgMTE2LCAKKyAgICA1LCAyMjUsIDI0OCwgMjEyLCA2NSwgMjA3LCAxLCAyMzQsIDEzMiwgMjA3LCAxLCAyMTcsIDIzMSwgMjA3LCAyMSwgMjEwLCAKKyAgICA4NiwgMjA3LCAyMSwgMTEwLCAyMDcsIDIxLCAxMDUsIDIwNywgMjEsIDE1OCwgMjA3LCAyMSwgMTYxLCAyMDcsIDIxLCAxODksIAorICAgIDIwNywgMjEsIDE5NCwgMjA3LCAyMSwgMTk4LCAyMDcsIDIxLCAxOTUsIDIwNywgMjEsIDIwMCwgMjA3LCAyNTMsIDE3NSwgCisgICAgMjA3LCAxLCAyMjMsIDUyLCAyMDcsIDEsIDIzMywgNywgMjA3LCAxLCAyNTIsIDE4LCAyMDcsIDEsIDQwLCAyMzUsIDIzLCAKKyAgICAyMDcsIDEsIDQwLCAxOTMsIDI1MiwgMTIwLCAxLCA2MSwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCA2MSwgMjUyLCAxMjAsIDEsIAorICAgIDE2MiwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAxNjIsIDI1MiwgMTIwLCAxLCAyMzEsIDE4MSwgMTYyLCAyNTIsIDEyMCwgMSwgCisgICAgMjUyLCAxOTEsIDI1MiwgMTIwLCAxLCAyMzQsIDIxMiwgMjUyLCAxOTEsIDI1MiwgMTIwLCAxLCAxOTAsIDI1MiwgMTIwLCAxLCAKKyAgICAyMTksIDE2NCwgMTkwLCAyNTIsIDEyMCwgMSwgMTk3LCAyNTIsIDEyMCwgMSwgMjMxLCAxODEsIDE5NywgMjUyLCAxMjAsIDEsIAorICAgIDIxMiwgNjUsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgMjEyLCA2NSwgMjUyLCAxMjAsIDEsIDIyNiwgNjcsIDIxMiwgNjUsIAorICAgIDI1MiwgMTIwLCAxLCAyNDMsIDEzNSwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAyNDMsIDEzNSwgMjUyLCAxMjAsIDEsIDIzNSwgCisgICAgMTQxLCAyNTIsIDEyMCwgMSwgMjQ4LCAyMjEsIDI1MiwgMTIwLCAxLCAyMDUsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgMjA1LCAKKyAgICAyNTIsIDEyMCwgMSwgMTg0LCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDE4NCwgMjUyLCAxMjAsIDEsIDIxOSwgMjYsIDIxNywgCisgICAgMTA1LCAyNTIsIDEyMCwgMSwgMjI4LCA1NSwgMjE3LCAxMDUsIDI1MiwgMTIwLCAxLCAyMDYsIDI1MiwgMTIwLCAxLCAyMTksIAorICAgIDE2NCwgMjA2LCAyNTIsIDEyMCwgMSwgMjMxLCAxODEsIDIwNiwgMjUyLCAxMjAsIDEsIDE5MSwgMjUyLCAxMjAsIDEsIDIxOSwgCisgICAgMTY0LCAxOTEsIDI1MiwgMTIwLCAxLCAyMjksIDc3LCAyNTIsIDEyMCwgMSwgMjMzLCAxMzUsIDI1MiwgMTIwLCAxLCAyMTksIAorICAgIDE2NCwgMjMzLCAxMzUsIDI1MiwgMTIwLCAxLCAyMjcsIDE2NSwgMjUyLCAxMjAsIDEsIDI1MSwgMzMsIDI1MiwgMTIwLCAxLCAKKyAgICAyMjksIDE0OCwgMjUyLCAxMjAsIDEsIDIzMSwgMTI0LCAyNTIsIDEyMCwgMSwgNzMsIDI1MiwgMTIwLCAxLCA3MCwgMjUyLCAKKyAgICAxMjAsIDUsIDIxNiwgMzMsIDI1MiwgMTIwLCAyNSwgNSwgNzUsIDI1MiwgMTIwLCAyNSwgNSwgMjI2LCA2NywgNzUsIDI1MiwgCisgICAgMTIwLCAyNSwgNSwgMjQ1LCAyMDksIDI1MiwgMTIwLCAyNSwgNSwgNzMsIDI1MiwgMTIwLCAyNSwgNSwgMjM0LCAyMTIsIDczLCAKKyAgICAyNTIsIDEyMCwgMjUsIDUsIDc2LCAyNTIsIDEyMCwgMjUsIDUsIDIzNCwgMjEyLCA3NiwgMjUyLCAxMjAsIDI1LCA1LCA3MCwgCisgICAgMjUyLCAxMjAsIDI1LCA1LCAxMDQsIDMxLCAyMTksIDE2NCwgMjA2LCAyNTIsIDEyMCwgMTE2LCA1LCAyMjksIDc5LCAyNTIsIAorICAgIDEyMCwgMTE2LCA1LCAyNDIsIDYwLCAyNTIsIDEyMCwgMjI2LCAzNywgMjUyLCAxMjAsIDIyNiwgMzMsIDI1MiwgMTIwLCAxNiwgCisgICAgMjUxLCAyNDEsIDIyOSwgMjI5LCAyMzEsIDM3LCAyNTIsIDEyMCwgMTYsIDI1MSwgMjQxLCAyMjUsIDY0LCAyNTIsIDEyMCwgCisgICAgMTYsIDI1MSwgMjQxLCAyMzUsIDQ4LCAyNTIsIDEyMCwgMTYsIDI1MSwgMjQxLCAyMjYsIDM3LCAxOTYsIDEsIDE3NiwgMTk2LCAKKyAgICAxLCAyMzQsIDM5LCAxOTYsIDEsIDIzNCwgMTMyLCAxOTYsIDEsIDI0MywgMTM1LCAxOTYsIDEsIDI0MiwgMTg2LCAxOTYsIDEsIAorICAgIDIyOSwgNzcsIDE5NiwgMSwgMjUxLCAzMywgMTk2LCAxLCAyNTAsIDE1NywgMTk2LCAxLCAyMzUsIDE0MSwgMTk2LCAxLCAKKyAgICAyMjcsIDE2NSwgMTk2LCAxLCAyMTcsIDEwNSwgMTk2LCAxLCAyMTYsIDIwOCwgMTk2LCAxLCAyNDgsIDIyMSwgMTk2LCAxLCAKKyAgICAxOTcsIDE5NiwgMSwgMTkwLCAxOTYsIDEsIDIyNSwgNDIsIDE5NiwgMSwgMjI1LCAxNDcsIDE5NiwgMSwgMjQ0LCAxOTYsIAorICAgIDE5NiwgMSwgMjQ0LCA3NSwgMTk2LCAxLCAyNTIsIDE5MSwgMTk2LCAxLCAyNTEsIDIyMiwgMTk2LCAxLCAxODQsIDE5NiwgMSwgCisgICAgMjMwLCAxNjgsIDE5NiwgMSwgMjE1LCAxODMsIDE5NiwgMSwgMjE1LCAxNzUsIDE5NiwgMSwgMjQ2LCAzOCwgMTk2LCAxLCAKKyAgICAxOTEsIDE5NiwgMSwgMjA1LCAxOTYsIDEsIDIzMywgMTM1LCAxOTYsIDEsIDE2MiwgMTk2LCAxLCAyNDEsIDE1MywgMTk2LCAKKyAgICAxLCAyMTQsIDI3LCAxOTYsIDEsIDIwNiwgMTk2LCAxLCAyMjAsIDEwMiwgMTk2LCAxLCAyMTIsIDY1LCAxOTYsIDEsIDYxLCAKKyAgICAxOTYsIDIxOCwgNzMsIDEsIDE5MSwgMTk2LCAyMTgsIDczLCAxLCAyMDUsIDE5NiwgMjUsIDUsIDI1NSwgNzMsIDE5NiwgMjUsIAorICAgIDUsIDczLCAxOTYsIDI1LCA1LCA3NiwgMTk2LCAyNSwgNSwgMjI2LCAxODMsIDE5NiwgMjUsIDUsIDcwLCAxOTYsIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgMTk2LCAyNSwgNSwgNzUsIDE5NiwgMTE2LCA1LCAyMzUsIDIzLCAxOTYsIDExNiwgNSwgMTkzLCAxOTYsIAorICAgIDExNiwgNSwgMTU2LCAxOTYsIDExNiwgNSwgMjMwLCAyNSwgMTk2LCAxMTYsIDUsIDIyNiwgMTA1LCAxOTYsIDExNiwgNSwgCisgICAgMTUzLCAxOTYsIDExNiwgNSwgMjE3LCAxNTIsIDE5NiwgMTE2LCA1LCAyMjcsIDE0MiwgMTk2LCAxMTYsIDUsIDIzNCwgMjMwLCAKKyAgICAxOTYsIDUsIDIyMywgMTUwLCAxOTYsIDUsIDIyNywgMjA1LCAxOTYsIDIyNCwgMTQxLCAyMTcsIDEwMywgMTk2LCAyMjQsIAorICAgIDE0MSwgMjI3LCAxNTIsIDIxNiwgMTIwLCAyMTcsIDEwMywgMTk2LCAyMjQsIDE0MSwgMjUwLCAxNjQsIDE5NiwgMjI0LCAKKyAgICAxNDEsIDIxNSwgMTcwLCAyNTAsIDE2NCwgMTk2LCAyMjQsIDE0MSwgMjE1LCAxNjksIDE5NiwgMjEsIDIxMCwgODYsIDE5NiwgCisgICAgMjEsIDExMCwgMTk2LCAyMSwgMTA1LCAxOTYsIDIxLCAxNTgsIDE5NiwgMjEsIDE2MSwgMTk2LCAyMSwgMTg5LCAxOTYsIDIxLCAKKyAgICAxOTQsIDE5NiwgMjEsIDE5OCwgMTk2LCAyMSwgMTk1LCAxOTYsIDIxLCAyMDAsIDE5NiwgMSwgMjE1LCAxNTYsIDE5NiwgMSwgCisgICAgMjE1LCAxNDQsIDE5NiwgMSwgMjQ4LCAxMzUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIDIxMCwgODYsIDIyNiwgMjEwLCAKKyAgICAyNTAsIDEwMywgMjEsIDExMCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMTA1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAKKyAgICAxNTgsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIDE2MSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMTg5LCAyMjYsIDIxMCwgCisgICAgMjUwLCAxMDMsIDIxLCAxOTQsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIDE5OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgCisgICAgMTk1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAyMDAsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjMzLCAxMzUsIDIyNiwgCisgICAgMjEwLCAyNTAsIDEwMywgMSwgMjUzLCAyMDYsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjU0LCAyMTYsIDIyNiwgMjEwLCAKKyAgICAyNTAsIDEwMywgMSwgMjU0LCAxMTUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjU0LCAxNzgsIDIyNiwgMjEwLCAyNTAsIAorICAgIDEwMywgMSwgMjMzLCAxMzQsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjU1LCAzNSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAKKyAgICAyNTUsIDM2LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI1NSwgMzQsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjU1LCAyOSwgCisgICAgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzIsIDI0MSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzUsIDE3MSwgMjI2LCAKKyAgICAyMTAsIDI1MCwgMTAzLCAxLCAyMzYsIDM0LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzNSwgMTkwLCAyMjYsIDIxMCwgCisgICAgMjUwLCAxMDMsIDEsIDIzNSwgMTc5LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzMiwgOTgsIDIyNiwgMjEwLCAyNTAsIAorICAgIDEwMywgMSwgMjE0LCAyMjEsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjE0LCAyMTksIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgCisgICAgMjE0LCAxNjgsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjE0LCAxMTEsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjMzLCAKKyAgICA1OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNDUsIDEwOCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNDUsIDIxMiwgCisgICAgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNDUsIDE1MCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNDUsIDg2LCAyMjYsIAorICAgIDIxMCwgMjUwLCAxMDMsIDEsIDIzMiwgMTU2LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIyNiwgMTM3LCAyMjYsIDIxMCwgCisgICAgMjUwLCAxMDMsIDEsIDIyNiwgMjUyLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIyNiwgMTI1LCAyMjYsIDIxMCwgMjUwLCAKKyAgICAxMDMsIDEsIDIyNiwgMjIyLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIzMCwgMTAzLCAyMTUsIDEyMSwgMjI2LCAyMTAsIDI1MCwgCisgICAgMTAzLCAyNDMsIDEzMCwgMjE1LCAxMjIsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjMwLCAxMDEsIDIxNSwgMTIyLCAyMjYsIAorICAgIDIxMCwgMjUwLCAxMDMsIDIyMywgOTIsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjI1LCAxNDUsIDIyNiwgMjEwLCAyNTAsIDEwMywgCisgICAgMjU0LCAyMDgsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjI0LCAxNDEsIDIzMCwgOTgsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjI0LCAKKyAgICAxNDEsIDUyLCAyMzAsIDk4LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjE4LCA4LCAyMDcsIDIyNCwgMTQxLCAyNTEsIAorICAgIDI0MSwgMjI2LCAzOCwgMjA3LCAyMjQsIDE0MSwgMjUxLCAyNDEsIDIyNCwgMTI5LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgCisgICAgMjUxLCAxOSwgMjA3LCAyMjQsIDE0MSwgMjUxLCAyNDEsIDIzMywgOCwgMjIxLCAyMjUsIDIwNywgMjI0LCAxNDEsIDI1MSwgCisgICAgMjQxLCAyMzUsIDEzLCAyMjEsIDIyNSwgMjA3LCAyMjQsIDE0MSwgMjUxLCAyNDEsIDI0OCwgMjIyLCAyMjEsIDIyNSwgMjA3LCAKKyAgICAyMjQsIDE0MSwgMjUxLCAyNDEsIDI1MiwgMTkyLCAyMjEsIDIyNSwgMjEzLCAyNTIsIDEzOCwgMjM0LCAyMTAsIDIxMywgCisgICAgMjUyLCAxMzgsIDIyMCwgNzcsIDIxMywgMjUyLCAxMzgsIDIyNCwgMTk4LCAyMTMsIDI1MiwgNSwgMjI4LCAyMDksIDIxMywgCisgICAgMjUyLCA1LCAyMTEsIDgwLCAyMzAsIDIyMiwgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMTEsIDgwLCAyNTQsIDIxMywgMjM1LCAKKyAgICAyNDMsIDIxOCwgMCwgMjEzLCAyNTIsIDEzOCwgMjExLCA4MCwgMjM1LCAyNDMsIDIxOCwgMCwgMjEzLCAyNTIsIDEzOCwgCisgICAgMjExLCA4MCwgMjM0LCAxOTgsIDIzNSwgMjQzLCAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIDI1MSwgMiwgNTEsIDIxMywgMjUyLCAKKyAgICAxMzgsIDIxMSwgODAsIDIzNCwgMTk4LCAyMzUsIDI0MywgMjE4LCAxLCAyMjEsIDE5NywgMjEzLCAyNTIsIDEzOCwgNTIsIAorICAgIDIxOCwgMCwgMjEzLCAyNTIsIDEzOCwgMjE1LCAyMTEsIDIxOCwgMCwgMjEzLCAyNTIsIDEzOCwgMjM0LCAxOTgsIDI1NCwgCisgICAgNzcsIDIxMywgMjUyLCAxMzgsIDU5LCA1MSwgMjEzLCAyNTIsIDEzOCwgMTEzLCAxNzAsIDUxLCAyMTMsIDI1MiwgMTM4LCAKKyAgICAxMzQsIDE3MCwgNTEsIDIxMywgMjUyLCAxMzgsIDIyMiwgMjQwLCAyMzQsIDIwOSwgMjM1LCAyNDMsIDIxOCwgMCwgMjEzLCAKKyAgICAyNTIsIDEzOCwgMjUzLCAyMDQsIDIzNSwgMjQzLCAyMTgsIDAsIDIxMywgMjUyLCA1LCAyMTMsIDE0OCwgMjE4LCAwLCAyMTMsIAorICAgIDI1MiwgNSwgMjEzLCAxNDgsIDIxNCwgMjE2LCAyMTMsIDI1MiwgNSwgMjIzLCA0OSwgMjEzLCAxNDgsIDIxNCwgMjE2LCAKKyAgICAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDI1NCwgNzcsIDIxMywgMjUyLCA1LCAyMjMsIDQ5LCAyMTMsIDE0OCwgMjU0LCA3NywgCisgICAgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyMTQsIDIxNywgMiwgMjE3LCA3NywgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyNTQsIAorICAgIDc4LCAyLCAyMTcsIDc3LCAyMTMsIDI1MiwgNSwgMjU0LCA3NiwgMjU0LCA5MSwgMjEzLCAyNTIsIDUsIDI1NCwgNzYsIDI1MiwgCisgICAgMTY2LCAyMTMsIDI1MiwgNSwgMjU0LCA3NiwgMjE0LCAyMCwgMjEzLCAyNTIsIDUsIDI1NCwgNzYsIDIxNCwgMjEsIDIsIAorICAgIDIxNywgNzcsIDIxMywgMjUyLCA1LCAyMTYsIDY4LCAyMTMsIDI1MiwgNSwgMjQxLCAxOTEsIDE5OSwgMjU0LCA3NSwgMjEzLCAKKyAgICAyNTIsIDUsIDE5OSwgMjU0LCA3NSwgMjEzLCAyNTIsIDUsIDIyMiwgMTQyLCAxOTksIDI1NCwgNzUsIDIxMywgMjUyLCA1LCAKKyAgICAyNTQsIDc2LCAyMTQsIDIyMywgMjMwLCA5MCwgMjEzLCAyNTIsIDUsIDI1NCwgMjAsIDIxMywgMjUyLCA1LCAyMjIsIDE4NywgCisgICAgMjU0LCAyMCwgMjEzLCAyNTIsIDEzOCwgMjUxLCAyLCA0OCwgMjEzLCAyNTIsIDUsIDIzNSwgMTAyLCAyMTMsIDI1MiwgNSwgCisgICAgMjE0LCAxNjEsIDcsIDEsIDQsIDYsIDYxLCA3LCAxLCA0LCA2LCAyNTQsIDI0MywgNywgNCwgMSwgMjE1LCA5NCwgMjU0LCAKKyAgICAyNDMsIDcsIDEsIDQsIDYsIDI1MiwgMTM0LCAyNTMsIDE1OCwgNywgMSwgNCwgNiwgMjUxLCA2NiwgNywgMSwgNCwgNiwgCisgICAgMjQ5LCA2MCwgNywgMSwgNCwgNiwgMjQ1LCA1OSwgNywgMSwgNCwgNiwgNzUsIDcsIDQsIDEsIDIxNSwgOTQsIDIwNCwgNzUsIAorICAgIDcsIDQsIDEsIDIxNSwgOTQsIDczLCA3LCAxLCA0LCA2LCAyMzUsIDE0NCwgNywgMSwgNCwgNiwgMjM1LCAyMywgNywgMSwgNCwgCisgICAgNiwgMjMzLCAxNDksIDIsIDkxLCA3LCAxLCA0LCA2LCAxOTMsIDcsIDEsIDQsIDYsIDIyMywgNDksIDIzMCwgMjUsIDcsIDEsIAorICAgIDQsIDYsIDc2LCA3LCAxLCA0LCA2LCAyMDQsIDc2LCA3LCA0LCAxLCAyMTksIDE4NywgNzYsIDcsIDQsIDEsIDIxOSwgMTg3LCAKKyAgICAyMDQsIDc2LCA3LCA0LCAxLCAyMTksIDE4NywgMTQ0LCAyLCA5MSwgNywgNCwgMSwgMjE1LCA5NCwgMjI2LCAyMzQsIDcsIDEsIAorICAgIDQsIDYsIDIyNiwgMTM0LCA3LCA0LCAxLCAyMTYsIDE0LCAxNjMsIDc2LCA3LCA0LCAxLCAyNTEsIDE3NSwgMTYzLCA3NiwgNywgCisgICAgMSwgNCwgNiwgMjI2LCAxMDUsIDcsIDEsIDQsIDYsIDIyMywgNDksIDE1MywgNywgMSwgNCwgNiwgMjE1LCA5NCwgMTUzLCA3LCAKKyAgICAxLCA0LCA2LCAyMTcsIDE1MiwgNywgMSwgNCwgNiwgNzAsIDcsIDQsIDEsIDIxOSwgMTg3LCA3MCwgNywgNCwgMSwgMjE5LCAKKyAgICAxODcsIDI0OCwgMCwgNzAsIDcsIDQsIDEsIDIxOSwgMTg3LCAyMTUsIDk0LCAxOTMsIDcsIDEsIDQsIDYsIDIxNCwgMTA1LCAKKyAgICA3LCAxLCA0LCA2LCAyMTIsIDk4LCA3LCAxLCA0LCA2LCAyMTAsIDE1OSwgNywgMSwgNCwgNiwgMjQ1LCA4LCA3LCAxLCAyMTMsIAorICAgIDEzNSwgMjMzLCA4MiwgMjE4LCAyNTAsIDcsIDEsIDI1NCwgMTk2LCAyNiwgMSwgNCwgNiwgMjQzLCAxMDcsIDI2LCAxLCA0LCAKKyAgICA2LCAyMzMsIDk4LCAyNiwgMSwgNCwgNiwgMjI1LCAxMDgsIDI2LCAxLCA0LCA2LCAyMjMsIDM3LCAyNiwgMSwgNCwgNiwgCisgICAgMjI0LCAxNjEsIDMzLCAxLCA0LCA2LCAyNDUsIDE3NCwgNTgsIDEsIDYsIDYxLCA1OCwgMSwgNiwgMjU0LCAyNDMsIDU4LCAxLCAKKyAgICA2LCAyNTMsIDE1OCwgNTgsIDEsIDYsIDI1MiwgMTM0LCAyNTMsIDE1OCwgNTgsIDEsIDYsIDI0OSwgNjAsIDU4LCAxLCA2LCAKKyAgICA3NSwgNTgsIDEsIDYsIDIyMywgNDksIDc1LCA1OCwgMSwgNiwgMjQzLCAyMDIsIDU4LCAxLCA2LCAyNDIsIDYwLCA1OCwgMSwgCisgICAgNiwgNzMsIDU4LCAxLCA2LCAyMzUsIDE0NCwgNTgsIDEsIDYsIDIzNSwgMjMsIDU4LCAxLCA2LCAxNTYsIDU4LCAxLCA2LCAKKyAgICAxOTMsIDU4LCAxLCA2LCAyMzAsIDI1LCA1OCwgMSwgNiwgMjIzLCA0OSwgMjMwLCAyNSwgNTgsIDEsIDYsIDc2LCA1OCwgMSwgCisgICAgNiwgMjI2LCAxMzQsIDU4LCAxLCA2LCAyMjYsIDEwNSwgNTgsIDEsIDYsIDE1MywgNTgsIDEsIDYsIDIxNywgMTUyLCA1OCwgCisgICAgMSwgNiwgNzAsIDU4LCAxLCA2LCAyMTIsIDk4LCA1OCwgMSwgNCwgNjEsIDU4LCAxLCA0LCAyMTUsIDk0LCA2MSwgNTgsIDEsIAorICAgIDQsIDI1NCwgMTQzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjU0LCAyNDMsIDU4LCAxLCA0LCAyNTMsIDE1OCwgNTgsIDEsIDQsIAorICAgIDI0OSwgNjAsIDU4LCAxLCA0LCA3NSwgNTgsIDEsIDQsIDIyMSwgMTk1LCA1OCwgMSwgNCwgMjA0LCA3NSwgNTgsIDEsIDQsIAorICAgIDIxNSwgOTQsIDIwNCwgNzUsIDU4LCAxLCA0LCAyNDMsIDIwMiwgNTgsIDEsIDQsIDIxNSwgOTQsIDczLCA1OCwgMSwgNCwgCisgICAgMjM1LCAyMywgNTgsIDEsIDQsIDE5MywgNTgsIDEsIDQsIDI0NSwgMTM4LCA1OCwgMSwgNCwgNzYsIDU4LCAxLCA0LCAyMDQsIAorICAgIDc2LCA1OCwgMSwgNCwgMjE2LCAxNCwgMTYzLCA3NiwgNTgsIDEsIDQsIDI1MSwgMTc1LCAxNjMsIDc2LCA1OCwgMSwgNCwgCisgICAgMjI2LCAxMDUsIDU4LCAxLCA0LCAyMTcsIDE1MiwgNTgsIDEsIDQsIDcwLCA1OCwgMSwgNCwgMjE5LCAxODcsIDcwLCA1OCwgCisgICAgMSwgNCwgMjE1LCA5NCwgMTkzLCA1OCwgMSwgNCwgMjE0LCAxMDUsIDU4LCAxLCA0LCAyNTQsIDE5NiwgNTgsIDEsIDQsIAorICAgIDI1MiwgMjYsIDU4LCAxLCA0LCAyNiwgMjQzLCAxMDcsIDU4LCAxLCA0LCAyNDgsIDU0LCA1OCwgMSwgNCwgMjYsIDIyNSwgCisgICAgMTMzLCA1OCwgMSwgNCwgMjUwLCAxMTAsIDcsIDIxOCwgNjUsIDQsIDEsIDczLCA3LCAyMTgsIDY1LCA0LCAxLCAxNTMsIDcsIAorICAgIDIxOCwgNjUsIDQsIDEsIDcwLCA3LCAyMTgsIDY1LCA0LCAxLCAyMTQsIDEwNSwgMjYsIDIxOCwgNjUsIDQsIDEsIDI1MiwgCisgICAgMjYsIDI2LCAyMTgsIDY1LCA0LCAxLCAyNDMsIDEwNywgMjYsIDIxOCwgNjUsIDQsIDEsIDIyMywgMzcsIDI2LCAyMTgsIDY1LCAKKyAgICA0LCAxLCAyMjUsIDEzMywgMjYsIDIxOCwgNjUsIDQsIDEsIDI1MCwgMTEwLCA3LCA0LCAxLCAyMTQsIDIxNCwgNywgNCwgMSwgCisgICAgNTcsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDI0NSwgCisgICAgNywgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjMyLCA1MCwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjMwLCAKKyAgICAyNiwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIyMywgCisgICAgMjI0LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjQ0LCA4OCwgMjIsIDIzMCwgMjI0LCAxODIsIAorICAgIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyMzAsIDIyNCwgMTgyLCAKKyAgICA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjE1LCA5NCwgMjQzLCAyMDIsIDU4LCAxLCAKKyAgICAzMywgMjQ1LCAxNTAsIDcsIDQsIDEsIDIzNSwgMjEzLCAyNDMsIDIwMiwgNywgNCwgMSwgMjE2LCAyMTEsIDIsIDIxOCwgCisgICAgMTA3LCA3LCA0LCA2LCAxLCAyNDAsIDE1NCwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMTg2LCAyLCA5MSwgNywgNCwgMSwgMjI2LCAKKyAgICAxMDYsIDIsIDkxLCA3LCA0LCA2LCAxLCAxMDQsIDIsIDkxLCA3LCA0LCAxLCAyMTQsIDE1OCwgMiwgOTEsIDcsIDQsIDEsIAorICAgIDU3LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjQ1LCA3LCAKKyAgICAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjMyLCA1MCwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjQ1LCA3NiwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMTEsIDE3OSwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAxMTUsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjU0LCAxNDQsIDIsIDIyMywgCisgICAgNTUsIDEwMywgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjQxLCA1MiwgMjIsIDIxNywgNzcsIDcsIDQsIDEsIDE2MCwgMiwgMjIzLCAKKyAgICA1NSwgMTAzLCA3LCA0LCAxLCAyMDQsIDE2MCwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyMjMsIDQ5LCAyMDQsIDE2MCwgCisgICAgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyMjEsIDE5NiwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyNDAsIDE1NCwgCisgICAgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyMDQsIDE0NCwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyNDUsIDc2LCAyLCAKKyAgICAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDEwNCwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyNDUsIDksIDIsIDIyMywgNTUsIAorICAgIDEwMywgNTgsIDEsIDQsIDIxNSwgOTQsIDI1NCwgMTQzLCA1OCwgMSwgNCwgMjUxLCA2NiwgNTgsIDEsIDQsIDI1MSwgNjcsIAorICAgIDIsIDI0OSwgMTAwLCA1OCwgMSwgNCwgMjQ1LCA1OSwgNTgsIDEsIDQsIDIyMywgNDksIDIwNCwgNzUsIDU4LCAxLCA0LCAKKyAgICAyNDUsIDYsIDU4LCAxLCA0LCAyNDcsIDExOSwgMjM1LCAxNDUsIDIsIDkxLCA1OCwgMSwgNCwgMTE5LCAyNDMsIDIwMiwgNTgsIAorICAgIDEsIDQsIDIxNSwgOTQsIDI0MiwgNjAsIDU4LCAxLCA0LCAyNDAsIDE1NCwgMiwgOTEsIDU4LCAxLCA0LCAyMzUsIDE4NSwgCisgICAgNTgsIDEsIDQsIDYsIDczLCA1OCwgMSwgNCwgNiwgMjQwLCAxNTQsIDIsIDkxLCA1OCwgMSwgNCwgMjM1LCAxNDUsIDIsIAorICAgIDI0OSwgMTI3LCA1OCwgMSwgNCwgMjMzLCAxNDksIDIsIDIyMywgNTUsIDEwMywgNTgsIDEsIDQsIDIzMywgMTQ5LCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDU4LCAxLCA0LCA2LCAxNTYsIDU4LCAxLCA0LCAyMzIsIDUwLCAyLCAxMDMsIDU4LCAxLCA0LCAyMTUsIAorICAgIDk0LCAyMzIsIDUwLCAyLCAxOTksIDIzMywgMzYsIDU4LCAxLCA0LCAyMzAsIDI2LCAyLCA0MywgMTAzLCA1OCwgMSwgNCwgCisgICAgMjMwLCAyNiwgMiwgMjIzLCA1NSwgMTAzLCA1OCwgMSwgNCwgNiwgMjMwLCAyNSwgNTgsIDEsIDQsIDI1MiwgMTM0LCA3NiwgCisgICAgNTgsIDEsIDQsIDIyNSwgMTMzLCA1OCwgMSwgNCwgMjIyLCA5MiwgMiwgMTAzLCA1OCwgMSwgNCwgMjQ1LCA3NSwgNTgsIDEsIAorICAgIDQsIDIxNywgMTUzLCAyLCAyMjYsIDY2LCAxMDMsIDU4LCAxLCA0LCAxMDQsIDEzMCwgNTgsIDEsIDQsIDIxNCwgMTU3LCA1OCwgCisgICAgMSwgNCwgNiwgNzAsIDU4LCAxLCA0LCAyMTQsIDEwNiwgMiwgMTAzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjE0LCAxMDUsIDU4LCAKKyAgICAxLCA0LCAyMTAsIDE1OSwgNTgsIDEsIDQsIDIxMCwgMTYwLCAyLCAyMjMsIDU1LCAxMDMsIDU4LCAxLCA0LCAyMTAsIDE2MCwgCisgICAgMiwgMjQ5LCAxMDAsIDU4LCAxLCA0LCAyNDUsIDgsIDU4LCAxLCA0LCAyMTYsIDE3OSwgMzgsIDI0NiwgMTE4LCAyNDIsIAorICAgIDEzNywgMjU1LCAxNCwgMzgsIDI0NiwgMTE4LCAyNTUsIDMsIDI1NSwgMTQsIDM4LCAyMTksIDY5LCA1MSwgMzgsIDIxOCwgNiwgCisgICAgNzgsIDM4LCAyMzEsIDIzMSwgMzgsIDI0MiwgMTM0LCAzOCwgMjMxLCAyMjksIDM4LCAyNTUsIDEsIDM4LCAyNDIsIDEzNSwgCisgICAgMzgsIDI1NSwgMiwgMzgsIDcsIDQsIDEsIDIyMywgMjI0LCA1MSwgMzgsIDI1MSwgMTQ1LCAzOCwgMjMxLCAyMzAsIDM4LCAKKyAgICA1MiwgMjUwLCAzMSwgNDgsIDM4LCAyMjYsIDIyNSwgNDgsIDM4LCAyMTAsIDM1LCA1MSwgMzgsIDIzNSwgMTcyLCA1MSwgMzgsIAorICAgIDIxNCwgMTUxLCA0OCwgMzgsIDIxNCwgMTM0LCA0OCwgMzgsIDcsIDQsIDEsIDI0NCwgNjMsIDIwNCwgMTE1LCA0OCwgMzgsIAorICAgIDcsIDQsIDEsIDI1NCwgMjQzLCAzOCwgNywgNCwgMSwgMjU0LCA3MywgMzgsIDcsIDQsIDEsIDI1MywgMTc2LCAzOCwgNywgNCwgCisgICAgMSwgMjUxLCA2NywgMjUwLCAxODMsIDM4LCA3LCA0LCAxLCAyMzUsIDIxMywgMjQ5LCA2MCwgMzgsIDcsIDQsIDEsIDI0NSwgCisgICAgNTksIDM4LCA3LCA0LCAxLCAyNDMsIDIwMiwgMzgsIDcsIDEsIDQsIDYsIDI0MywgMjAyLCAzOCwgNywgNCwgMSwgMjM1LCAKKyAgICAyMywgMzgsIDcsIDQsIDEsIDE1NiwgMzgsIDcsIDEsIDQsIDYsIDE1NiwgMzgsIDcsIDEsIDQsIDYsIDE5MywgMzgsIDcsIDQsIAorICAgIDEsIDIzMCwgMjUsIDM4LCA3LCAxLCA0LCA2LCAyMzAsIDI1LCAzOCwgNywgMSwgNCwgNiwgMTUzLCAzOCwgNywgNCwgMSwgCisgICAgMjIzLCAyMjQsIDIyMiwgMTg2LCAzOCwgNywgNCwgMSwgMjIyLCA5MSwgMzgsIDcsIDQsIDEsIDE5OSwgMjIyLCA5MSwgMzgsIAorICAgIDcsIDQsIDEsIDIxMCwgMTU5LCAzOCwgNTIsIDIzNSwgMTkzLCAyNTEsIDE0NywgNTEsIDM4LCAyNTQsIDE0OCwgMTI4LCAKKyAgICAyMTYsIDQyLCA1MSwgMzgsIDQzLCAyNTMsIDI1MCwgNDgsIDM4LCA0NCwgMjUzLCAyNTAsIDIyLCAxMjQsIDI1MywgMjUwLCAKKyAgICA1MSwgNywgNiwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNTEsIDcsIDQsIDEsIDExNSwgMiwgMjIyLCAyMzQsIDUxLCA3LCA2LCAKKyAgICAxLCA1NywgMiwgNTksIDQ4LCA3LCA0LCAxLCA1NywgMiwgNTksIDQ4LCA3LCA2LCAxLCA1NywgMiwgNTksIDUxLCA3LCA0LCAKKyAgICAxLCA1NywgMiwgNTksIDUxLCA3LCA2LCAxLCA1NywgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCA1NywgMiwgMjMyLCAyMTQsIAorICAgIDUxLCA3LCA2LCAxLCAyNTEsIDY3LCAyLCAyNTAsIDE4NCwgMjIsIDE0MiwgNywgNCwgMSwgMjUxLCA2NywgMiwgMjUwLCAKKyAgICAxODQsIDIyLCAxNDIsIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgNTksIDQ4LCAKKyAgICA3LCA2LCAxLCAyNDksIDYxLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjQ5LCAKKyAgICA2MSwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDI0OSwgNjEsIAorICAgIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAzMSwgCisgICAgNTEsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAKKyAgICAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTYwLCAyLCAyMzEsIDIzMywgCisgICAgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyMzEsIDIzMywgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAKKyAgICA1MSwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCA1MSwgNywgNiwgMSwgMTYwLCAyLCAyMTYsIDg5LCA1MSwgNywgNCwgMSwgCisgICAgMTYwLCAyLCAyMTYsIDg5LCA1MSwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDE4NCwgMjIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDI1MCwgMTg0LCAyMiwgMjUxLCAxNDYsIDcsIDYsIDEsIDI0NSwgNywgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDUsIAorICAgIDcsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMjMxLCAKKyAgICAyMzIsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQyLCA2MSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAKKyAgICAyNDIsIDYxLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgCisgICAgMjQ4LCAxLCA3LCA0LCAxLCAyNDIsIDYxLCAyLCAyNDgsIDEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDI1MCwgMTgzLCA3LCA0LCAKKyAgICAxLCAyNDIsIDYxLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjUxLCAxNDcsIDUxLCA3LCA0LCAxLCAyNDIsIAorICAgIDYxLCAyLCAyNTEsIDE0NywgNTEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyMTYsIDg5LCA1MSwgNywgNCwgMSwgMjQwLCAKKyAgICAxNTQsIDIsIDIxNiwgODksIDUxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAyLCAyMiwgMTQyLCA3LCA0LCAxLCAyNDAsIAorICAgIDE1NCwgMiwgMjQ4LCAyLCAyMiwgMTQyLCA3LCA2LCAxLCAyMzUsIDI0LCAyLCAxNDIsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIAorICAgIDE0MiwgNywgNiwgMSwgMjM1LCAyNCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCA1OSwgNTEsIDcsIDYsIDEsIAorICAgIDIzNSwgMjQsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAKKyAgICAyMzMsIDE0OSwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgCisgICAgNTksIDI1MiwgNDMsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDU5LCAyNTIsIDQzLCAyMiwgMjMxLCAKKyAgICAyMzIsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMzIsIDIxNCwgCisgICAgNTEsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyNTAsIDMxLCA1MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDI1MCwgMzEsIDUxLCAKKyAgICA3LCA2LCAxLCAyMzIsIDUwLCAyLCAxNDIsIDcsIDQsIDEsIDIzMiwgNTAsIDIsIDE0MiwgNywgNiwgMSwgMjMyLCA1MCwgMiwgCisgICAgNTksIDQ4LCA3LCA0LCAxLCAyMzIsIDUwLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIzMiwgNTAsIDIsIDU5LCA1MSwgNywgNCwgCisgICAgMSwgMjMyLCA1MCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIAorICAgIDU5LCA0OCwgNywgNiwgMSwgMjMwLCAyNiwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCA1OSwgNTEsIDcsIDYsIAorICAgIDEsIDIzMCwgMjYsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAKKyAgICAyMzAsIDI2LCAyLCAyNTAsIDMxLCA1MSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDE0NCwgCisgICAgMiwgMjE2LCA4OSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMTYsIDg5LCAyMiwgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDIxNiwgODksIDIyLCAyNDgsIDEsIDcsIDQsIDEsIDE0NCwgMiwgMjE2LCA4OSwgMjIsIDI0OCwgMSwgNywgNiwgMSwgMTQ0LCAKKyAgICAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNDQsIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIAorICAgIDEsIDE0NCwgMiwgMjMxLCAyMzMsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzMsIDIyLCAxNDIsIDcsIDYsIAorICAgIDEsIDIyNiwgMTA2LCAyLCAxNDIsIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAxNDIsIDcsIDYsIDEsIDIyNiwgMTA2LCAyLCA1OSwgCisgICAgNDgsIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCA1OSwgNDgsIDcsIDQsIDEsIAorICAgIDIyMywgMjI0LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAKKyAgICA1OSwgNTEsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCA1OSwgMjUyLCA0MywgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyMjMsIAorICAgIDIyNCwgMiwgNTksIDI1MiwgNDMsIDIyLCAyMzEsIDIzMiwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDIzMiwgMjE0LCA1MSwgNywgCisgICAgNCwgMSwgMjIzLCAyMjQsIDIsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgMjIyLCA5MiwgMiwgNTksIDQ4LCA3LCA0LCAxLCAKKyAgICAyMjIsIDkyLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjIyLCA5MiwgMiwgNTksIAorICAgIDUxLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyNTUsIDMsIDIyLCA1OSwgNDgsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDI1NSwgMywgCisgICAgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjUwLCAyMzUsIDIyLCA1OSwgNDgsIDcsIDQsIDEsIDIyMiwgOTIsIAorICAgIDIsIDI1MCwgMjM1LCAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjIsIDkyLCAyLCA1OSwgMjUyLCA0MywgMjIsIDU5LCA0OCwgNywgCisgICAgNCwgMSwgMjIyLCA5MiwgMiwgNTksIDI1MiwgNDMsIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCA1OSwgNDgsIAorICAgIDcsIDQsIDEsIDIxNywgMTUzLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxNywgCisgICAgMTUzLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAKKyAgICAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyNTAsIDMxLCA1MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIAorICAgIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMiwgNTEsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCA1MSwgNywgCisgICAgNiwgMSwgMTA0LCAyLCAyMTYsIDg5LCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyMTYsIDg5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAKKyAgICAyNTAsIDMxLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNTAsIDMxLCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyMTYsIDg5LCAyMiwgCisgICAgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIxNiwgODksIDIyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAKKyAgICAyNDgsIDEsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAyNDgsIDEsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCAxODIsIAorICAgIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAxODIsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxNCwgCisgICAgMTA2LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyNDIsIAorICAgIDEzNiwgNywgNiwgMSwgMjEyLCA5OSwgMiwgMTQyLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAxNDIsIDcsIDYsIDEsIDIxMiwgCisgICAgOTksIDIsIDI0OCwgMSwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyMTIsIDk5LCAyLCA1OSwgNDgsIAorICAgIDcsIDQsIDEsIDIxMiwgOTksIDIsIDU5LCA0OCwgNywgNiwgMSwgMjEyLCA5OSwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTIsIAorICAgIDk5LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMSwgMTc5LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCA1OSwgCisgICAgNDgsIDcsIDYsIDEsIDIxMSwgMTc5LCAyLCAyNDgsIDEsIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAyNDgsIDEsIDcsIDYsIDEsIAorICAgIDIxMSwgMTE4LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAKKyAgICAyNTAsIDMwLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDU5LCA1MSwgNywgCisgICAgNCwgMSwgMjEwLCAxNjAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgCisgICAgMjEwLCAxNjAsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAKKyAgICAyMTcsIDE1MywgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyMjIsIDIzNCwgNDgsIDcsIDQsIDEsIDIxMSwgCisgICAgMTE4LCAyLCAyMjIsIDIzNCwgNDgsIDcsIDQsIDEsIDExNSwgMiwgNDQsIDE2MywgMjIyLCAyMzMsIDcsIDQsIDEsIDE5OSwgCisgICAgMjIyLCA5MiwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxOTksIDIyMiwgOTIsIDIsIDI0NywgMjU1LCA5MSwgNywgNCwgMSwgMTk5LCAKKyAgICAyMjIsIDkyLCAyLCAxMjUsIDkxLCA3LCA2LCAxLCAyMjAsIDc2LCAyMjIsIDkxLCA3LCA0LCAxLCAyNDgsIDU0LCA3LCA2LCAKKyAgICAxLCAxMTUsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTE1LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDExNSwgMiwgMjQxLCA1MiwgNDgsIAorICAgIDcsIDQsIDEsIDExNSwgMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNCwgMSwgCisgICAgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNCwgCisgICAgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIAorICAgIDQ4LCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAKKyAgICAyMiwgMTgyLCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAxODIsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIAorICAgIDU5LCA1MSwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgNTksIDUxLCA3LCA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAKKyAgICAyMiwgMTQyLCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAKKyAgICAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTE1LCAyLCAKKyAgICAyNTEsIDE0NywgMjIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgMjQxLCA1MiwgNDgsIDcsIAorICAgIDYsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAxODIsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAxODIsIDcsIAorICAgIDYsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCA1OSwgNTEsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCA1OSwgCisgICAgNTEsIDcsIDYsIDEsIDE2MCwgMiwgNTksIDUxLCA3LCA0LCAxLCAxNjAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTYwLCAyLCAKKyAgICAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTYwLCAyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTYwLCAyLCAxODIsIDcsIDQsIDEsIAorICAgIDE2MCwgMiwgMTgyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMSwgCisgICAgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAKKyAgICAzMSwgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgCisgICAgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDE4MiwgNywgCisgICAgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMTgyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCA1OSwgNTEsIDcsIAorICAgIDQsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDI0MSwgNTIsIDQ4LCA3LCAKKyAgICA0LCAxLCAyNDAsIDE1NCwgMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIAorICAgIDI0MCwgMTU0LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDE0NCwgMiwgNTksIDUxLCA3LCA0LCAxLCAxNDQsIDIsIDU5LCA1MSwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTQ0LCAyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAyNTAsIDMxLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgCisgICAgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIAorICAgIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCAxODIsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDE4MiwgCisgICAgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgNTksIDUxLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCA1OSwgCisgICAgNTEsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgCisgICAgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDE0NCwgCisgICAgMiwgMjQwLCAyNDksIDIyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDE4MiwgNywgNCwgCisgICAgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDE4MiwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDU5LCA1MSwgNywgCisgICAgNCwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIAorICAgIDEwNCwgMiwgNTksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxMDQsIDIsIDI0MSwgNTIsIAorICAgIDQ4LCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgCisgICAgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDEwNCwgMiwgMjQwLCAyNDksIAorICAgIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxMDQsIAorICAgIDIsIDI0MCwgMjQ5LCAyMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAxODIsIDcsIDQsIAorICAgIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAxODIsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCA1OSwgNTEsIDcsIAorICAgIDQsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNDIsIDEzNiwgNywgNCwgCisgICAgMSwgMjExLCAxMTgsIDIsIDI0MiwgMTM2LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTEsIAorICAgIDExOCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAKKyAgICAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDE4MiwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDE4MiwgNywgNiwgCisgICAgMSwgMjMwLCAyMjMsIDIzMiwgMTg1LCA3LCA0LCAxLCAyMzAsIDIyMywgMjMyLCAxODUsIDcsIDYsIDEsIDIzMCwgMjIzLCAKKyAgICAyMTQsIDEwNSwgNywgNCwgMSwgMjMwLCAyMjMsIDIxNCwgMTA1LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjMyLCAxMjMsIDcsIAorICAgIDQsIDEsIDIxMSwgMTE4LCAyLCAyMzIsIDEyMywgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIAorICAgIDI1NCwgMTQ0LCAyLCAyNDgsIDE1MywgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCAKKyAgICA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgCisgICAgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDQsIAorICAgIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTQsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgCisgICAgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAKKyAgICAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgCisgICAgMTEwLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyNTQsIDE0NCwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAKKyAgICAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTUzLCAyNiwgNCwgCisgICAgMSwgMjQ1LCAxMDEsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIAorICAgIDI0NSwgMTAxLCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDIyNCwgMTU0LCAyNiwgCisgICAgNiwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTUzLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAKKyAgICAxMywgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgCisgICAgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAKKyAgICAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1MywgMjYsIDQsIDEsIAorICAgIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgCisgICAgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgCisgICAgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIAorICAgIDE1NCwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTUzLCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAKKyAgICAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA2NCwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIAorICAgIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAKKyAgICAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAKKyAgICAyLCAyNDgsIDE1MywgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIAorICAgIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAKKyAgICAxMTAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIAorICAgIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTQsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAKKyAgICAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgCisgICAgMjM1LCAxODYsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTUsIDIyLCAKKyAgICAyMjUsIDE3NSwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjI2LCAKKyAgICAyMDAsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIAorICAgIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCAKKyAgICA0LCAxLCAyMjYsIDIwMCwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyNDgsIAorICAgIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDIyNCwgMTU0LCAyNiwgNiwgMSwgMjI2LCAyMDAsIAorICAgIDIsIDI0OCwgMTUzLCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgCisgICAgMjAwLCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIAorICAgIDExMCwgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjE0LCAxNTgsIAorICAgIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgCisgICAgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAKKyAgICAyMTQsIDE1OCwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NCwgMjIsIAorICAgIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMTQsIAorICAgIDE1OCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1MywgMjYsIDYsIAorICAgIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgCisgICAgMjI2LCAyMDIsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgMjI2LCAKKyAgICAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgCisgICAgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAKKyAgICAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIAorICAgIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAKKyAgICAyMjQsIDE1NCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1MywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIAorICAgIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgCisgICAgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAKKyAgICAyMjYsIDExMCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjI2LCAKKyAgICAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIAorICAgIDI1NCwgMTQ0LCAyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCAKKyAgICAxMDEsIDIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIAorICAgIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjI2LCAKKyAgICAxMTAsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyMjYsIDExMCwgMjYsIAorICAgIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgCisgICAgMjI2LCAyMDIsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNTQsIAorICAgIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgCisgICAgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIAorICAgIDE3NiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzYsIDIyLCAKKyAgICAyMTAsIDIxOSwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjU0LCAKKyAgICAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIAorICAgIDE0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAKKyAgICAxNjcsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgCisgICAgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTEsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMjUsIDE3NiwgMjIsIDIyNCwgMTY3LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTAsIDIxOSwgCisgICAgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIAorICAgIDE1NSwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAKKyAgICAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgCisgICAgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgCisgICAgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NiwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIAorICAgIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAKKyAgICAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIAorICAgIDI0OCwgMTU0LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAKKyAgICAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMSwgMjIsIAorICAgIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NiwgMjIsIDIyNCwgMTY3LCAyNiwgCisgICAgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NiwgMjIsIDIyNCwgMTY3LCAyNiwgNCwgMSwgMjI2LCAKKyAgICAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMTAsIAorICAgIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIAorICAgIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMjYsIDExMSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAKKyAgICAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc2LCAyMiwgCisgICAgMjEwLCAyMTksIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDIyNiwgCisgICAgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAKKyAgICAxNCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgCisgICAgMTY3LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTEsIDIyLCAyMjQsIDE2NywgMjYsIDYsIAorICAgIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NiwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIAorICAgIDI1NCwgMTQ0LCAyLCAyMzEsIDIzMiwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCAKKyAgICA0LCAxLCAyNTQsIDE0NCwgMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI2LCAxMTEsIDIyLCAyMTAsIAorICAgIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjUsIDE3NiwgCisgICAgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIxMywgMTIwLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIAorICAgIDIzMSwgMjMyLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjI2LCAKKyAgICAxMTAsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNjcsIDI2LCAyMzQsIDIsIDI2LCAyMjQsIDE2NywgMjYsIDIyNCwgCisgICAgMTU0LCAyNiwgMjI1LCAxNzUsIDI2LCAyNDcsIDI1MiwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjE0LCAKKyAgICAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAKKyAgICAyMjYsIDExMSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNDUsIAorICAgIDY0LCAyLCAyMjUsIDE3NiwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAKKyAgICAyNDUsIDEwMSwgMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA2NCwgCisgICAgMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE2NywgMjYsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgCisgICAgMjYsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjM1LCAKKyAgICAxODYsIDIsIDIxMywgMTIwLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIzMSwgMjMyLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIAorICAgIDI0NywgMjUyLCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDcsIDI1MiwgMjIsIDIyNiwgMTEwLCAyNiwgCisgICAgNCwgMSwgMjM1LCAxODYsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUyLCAyMiwgMjI1LCAKKyAgICAxNzUsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjEzLCAxMjAsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjMxLCAyMzIsIAorICAgIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMjYsIDExMCwgMjYsIDI0OCwgCisgICAgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAKKyAgICAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIxMywgMTIwLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIzMSwgMjMyLCAyNiwgNCwgCisgICAgMSwgMjE0LCAxNTgsIDIsIDI0NywgMjUyLCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDcsIDI1MiwgCisgICAgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjIzLCAzOCwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMjMsIDM4LCAyLCAyNDgsIAorICAgIDE1MywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDcsIDI1MiwgCisgICAgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIxMywgMTIwLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIAorICAgIDIzMSwgMjMyLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjI2LCAKKyAgICAxMTAsIDI2LCA2LCAxLCAyMjMsIDM4LCAyLCAyNDgsIDE1MywgMjYsIDI0NywgMjUyLCAyMiwgMjE0LCAxMywgMjYsIDI0NywgCisgICAgMjUyLCAyMiwgMjI2LCAxMTAsIDI2LCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIAorICAgIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjYsIDExMSwgCisgICAgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIAorICAgIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgCisgICAgMjAwLCAyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIAorICAgIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTY3LCAyNiwgMjI2LCAxMTAsIDI2LCAyNDgsIDE1MywgCisgICAgMjQ1LCAxNTEsIDIyNCwgMjcsIDI0NSwgMTYwLCAyMjQsIDI3LCAyNDUsIDE1MSwgMjE5LCAxOCwgMjQ1LCAxNjAsIDIxOSwgCisgICAgMTgsIDIxNiwgMTQxLCAyMTksIDE4LCAyNDQsIDksIDIxOSwgMTgsIDIxOSwgMTIzLCAyMTksIDE4LCAyNDQsIDExMiwgMjE5LCAKKyAgICAxOCwgMjI0LCAxNDEsIDIxOSwgMTgsIDIxNiwgMTcwLCAyMTksIDE4LCAyNDIsIDM1LCAyMTksIDE4LCAyMTAsIDg3LCAyMTEsIAorICAgIDI0NSwgMjE5LCAxOCwgMjEwLCA4NywgMjExLCAyNDUsIDIyOCwgNjcsIDIxMCwgODcsIDIxMSwgMjQ1LCAyMzUsIDYzLCAKKyAgICAyMzMsIDM4LCA3OCwgMjIyLCAyNDMsIDc4LCAyNDAsIDE2OCwgMjI4LCA2OCwgMjQwLCAxNjgsIDI0NCwgMTEyLCAyNDgsIAorICAgIDE1NiwgMjQ1LCAxNTEsIDI0OCwgMTU2LCAyNDUsIDE2MCwgMjQ4LCAxNTYsIDIwMywgMTMwLCA1MiwgNjcsIDIzMiwgMjEzLCAKKyAgICA1MiwgMTIxLCAyMzIsIDIxMywgNDMsIDIxOSwgMTU1LCAyMjMsIDI1NCwgNzgsIDQ0LCAyMTksIDE1NSwgMjIzLCAyNTQsIAorICAgIDc4LCAyMTksIDE1NSwgMjMyLCAxMDksIDIyMywgMjU0LCA3OCwgMjE5LCAxNTUsIDI0MSwgMTYzLCAyMjMsIDI1NCwgNzgsIAorICAgIDQzLCA1MiwgMjIzLCAyNTQsIDc4LCA0NCwgNTIsIDIyMywgMjU0LCA3OCwgNTIsIDIzMiwgMTA5LCAyMjMsIDI1NCwgNzgsIAorICAgIDUyLCAyNDEsIDE2MywgMjIzLCAyNTQsIDc4LCAyNDgsIDIwNSwgNTIsIDI0OCwgMjA1LCAyNTEsIDExMywgMjE1LCAyMjIsIAorICAgIDI1MSwgMTEzLCAxMjMsIDU5LCAyMzMsIDU2LCAxMTMsIDU5LCAyMzMsIDU2LCAyMDMsIDI0NSwgMTYzLCAyNDAsIDE2NiwgCisgICAgMjI1LCAxMCwgMjMyLCAyMTQsIDIyMCwgMTM3LCAyMjYsIDE1LCAyMjAsIDEzNywgMjMzLCAzOCwgMjQ1LCAxNTgsIDIyMiwgCisgICAgMjQzLCAyNDUsIDE1OCwgMjI0LCAyNDYsIDI0NywgMTk2LCAyNDQsIDE5LCAyMzMsIDM4LCAyMjYsIDExNywgMjIyLCAyNDMsIAorICAgIDIyNiwgMTE3LCAyMjksIDE5NCwgMjI4LCA3MywgMjE5LCAxOCwgMjI1LCAxODMsIDIzMCwgMTkzLCA1MCwgMjI1LCAxODMsIAorICAgIDIxNiwgMjQ4LCAyMTYsIDE0OCwgNTAsIDIyNCwgMTkwLCA1MiwgMjI0LCAxOTAsIDIxNSwgMjExLCAyMjQsIDE5MCwgMjIzLCAKKyAgICA0OSwgMjI0LCAxOTAsIDIyMywgNDksIDUyLCAyMjQsIDE5MCwgMjIzLCA0OSwgMjE1LCAyMTEsIDIyNCwgMTkwLCAyNTAsIAorICAgIDIzOCwgMjE5LCAxNTUsIDIzMywgNDIsIDI1NCwgMTEwLCAyMjMsIDI1NCwgNzgsIDIxOSwgMTU1LCAyMjIsIDI0NywgMjU0LCAKKyAgICAxMTAsIDIyMywgMjU0LCA3OCwgMjIzLCAxMDcsIDc4LCA1MiwgMjQ1LCAzMSwgNzgsIDIzNSwgMjAxLCAyMjYsIDExOSwgCisgICAgMjE0LCAxODAsIDEzNSwgMjE2LCAxMTEsIDI1MCwgMjM5LCAyMzUsIDIxNiwgMjI1LCAxMCwgMjUzLCAyMTQsIDI0MCwgMTY5LCAKKyAgICAyNTEsIDExMywgMjQ0LCAyLCAyMTksIDk1LCA0MywgNDIsIDI1MSwgMTU4LCAyLCAyMjQsIDcsIDQ0LCA0MiwgMjUxLCAxNTgsIAorICAgIDIsIDIyNCwgNywgNTIsIDIyNCwgMTMsIDc4LCAyMjQsIDEzLCAyNDUsIDMxLCA3OCwgMjQ1LCAzMSwgMjI0LCAxMywgNzgsIAorICAgIDIxNiwgNzAsIDUsIDI0NSwgNjUsIDIyMywgNDksIDIyNSwgNjgsIDUwLCA4NSwgMTQwLCAyNTEsIDExMywgODUsIDk3LCAKKyAgICAyNTEsIDExMywgMTIxLCAyNTMsIDIxNiwgMjIzLCA0OSwgMjIwLCAxNTAsIDI1MCwgMSwgMjE0LCAxNjMsIDExMywgMjUzLCAKKyAgICAyMTUsIDI1NCwgMTU4LCAyMTMsIDE4OCwgMjQ5LCAyMTcsIDIzMCwgMTgyLCA1MCwgMjE3LCAyMzQsIDI0OCwgMTU2LCAyMzUsIAorICAgIDE5MywgMjE0LCAxODAsIDI0NCwgNTIsIDIyNCwgMTQxLCA3OCwgMTM0LCA1OSwgMjI0LCAxNDAsIDIyNCwgMjQsIDIyNCwgCisgICAgMTkwLCAyNDQsIDExLCA1OSwgMjI0LCAxNDAsIDI0NCwgODEsIDU5LCAyMjQsIDE0MCwgMTEzLCA1OSwgMjI0LCAxNDAsIAorICAgIDI0NCwgMTEsIDU5LCA3OCwgMjQ2LCAxMTgsIDI0OSwgMTMwLCAyMTUsIDIyMSwgNjcsIDI0NCwgMTEsIDI0NywgMTE4LCAKKyAgICAyMzEsIDgyLCAxMSwgMjE5LCAxOCwgMjExLCAyMDksIDIzNSwgNjMsIDI0MywgMjI3LCAyNTQsIDUyLCAyMzUsIDE5MSwgCisgICAgMjE2LCA4NSwgMjM1LCAxOTEsIDIyMCwgMTM3LCAyMzUsIDE5MSwgMjI1LCAyMiwgMjM1LCAyMjgsIDIxNywgMTgyLCAyMTcsIAorICAgIDI1MSwgMjU1LCA1LCAyMTcsIDE4MiwgMjE3LCAyNTEsIDIzNSwgMjI4LCAxMCwgMjQ0LCAyMCwgMjIwLCA4MCwgMjU1LCA1LCAKKyAgICAxMCwgMjQ0LCAyMCwgMjIwLCA4MCwgMjI5LCAxODksIDIxLCAyMjAsIDgxLCAyMjgsIDY5LCAyMSwgMjIwLCA4MSwgMjE4LCAKKyAgICAyMywgMjEwLCA4NiwgMjE4LCAyMywgNywgNCwgMSwgNzMsIDIxOCwgMjMsIDE2MSwgMjE4LCAyMywgMTg5LCAyMTgsIDIzLCAKKyAgICAxOTQsIDIxOCwgMjMsIDE5OCwgMjE4LCAyMywgMTk1LCAyMTgsIDIzLCAyMDAsIDIxOCwgMjMsIDk2LCA1MCwgMjE4LCAyMywgCisgICAgMjMwLCAxODEsIDIxOCwgMjMsIDI0NSwgOTgsIDUwLCAyMTgsIDIzLCA0MywgMjI2LCAzLCAyMTgsIDIzLCA0NCwgMjI2LCAzLCAKKyAgICAyMTgsIDIzLCA3LCA0LCAxLCAyMzAsIDI1LCAyMTgsIDY1LCAyMTAsIDg2LCAyMTgsIDY1LCAxMTAsIDIxOCwgNjUsIDEwNSwgCisgICAgMjE4LCA2NSwgMTU4LCAyMTgsIDY1LCAxNjEsIDIxOCwgNjUsIDE4OSwgMjE4LCA2NSwgMTk0LCAyMTgsIDY1LCAxOTgsIAorICAgIDIxOCwgNjUsIDE5NSwgMjE4LCA2NSwgMjAwLCAyMTgsIDY1LCA5NiwgNTAsIDIxOCwgNjUsIDIzMCwgMTgxLCAyMTgsIDY1LCAKKyAgICAyNDUsIDk4LCA1MCwgMjE4LCA2NSwgNDMsIDIyNiwgMywgMjE4LCA2NSwgNDQsIDIyNiwgMywgNywgMjE4LCA2NSwgNCwgMSwgCisgICAgNjEsIDcsIDIxOCwgNjUsIDQsIDEsIDc1LCA3LCAyMTgsIDY1LCA0LCAxLCA3NiwgNywgMjE4LCA2NSwgNCwgMSwgMjExLCAKKyAgICAxNzgsIDcsIDIxOCwgNjUsIDQsIDEsIDIyMSwgMTk1LCA3LCAyMTgsIDY1LCA0LCAxLCAyNDIsIDYwLCA3LCAyMTgsIDY1LCAKKyAgICA0LCAxLCAyMzUsIDIzLCA3LCAyMTgsIDY1LCA0LCAxLCAxNTYsIDcsIDIxOCwgNjUsIDQsIDEsIDE5MywgNywgMjE4LCA2NSwgCisgICAgNCwgMSwgMjMwLCAyNSwgNywgMjE4LCA2NSwgNCwgMSwgMjI2LCAxMDUsIDcsIDIxOCwgNjUsIDQsIDEsIDIyMiwgOTEsIDcsIAorICAgIDIxOCwgNjUsIDQsIDEsIDIxNywgMTUyLCAyNDUsIDQ2LCA1MCwgMjQ5LCAyMjcsIDUwLCAyNDksIDExNywgNTAsIDI0MywgCisgICAgMjUxLCAyNDMsIDI1NCwgNTAsIDIzMiwgMTk4LCA1MCwgMjMwLCAxOTQsIDUwLCAyMjksIDIxMCwgNTAsIDIyNSwgMTYyLCAKKyAgICA1MCwgMjIyLCAxMTgsIDUwLCAyMTEsIDIxNywgNTAsIDE2NiwgMjIwLCA0OSwgNTAsIDI0NywgMTI3LCA1MCwgMjQ1LCA0NywgCisgICAgNTAsIDIzNCwgNzYsIDUwLCAyMTUsIDExMiwgNTAsIDI0NiwgMTAxLCA1MCwgMjQzLCA0MCwgMjI1LCAxOTMsIDUwLCAyMjUsIAorICAgIDE2MCwgNTAsIDI0MiwgMTA5LCA1MCwgMjUzLCAxODIsIDUwLCAyNDAsIDIyOCwgNTAsIDI1MCwgMTg1LCA1MCwgMjMyLCAKKyAgICAxOTEsIDIxNiwgMywgNTAsIDIxOSwgMCwgNTAsIDIxNiwgMjQ1LCA1MCwgMjM1LCAyNDEsIDIyMiwgMTE4LCA1MCwgMzgsIAorICAgIDQzLCAyNDEsIDI1NSwgNDgsIDM4LCA0NCwgMjQxLCAyNTUsIDQ4LCAzOCwgMTk5LCA2NywgMjMyLCAyMTQsIDIyNiwgMTIwLCAKKyAgICAzOCwgMjE5LCAyNTEsIDY3LCAyMzIsIDIxNCwgMjI2LCAxMjAsIDM4LCAyNTQsIDg4LCA4MCwgNDgsIDM4LCAyNTAsIDIsIAorICAgIDgwLCA0OCwgMzgsIDQzLCA4MCwgNDgsIDM4LCA0NCwgODAsIDQ4LCAzOCwgMjIyLCAyMzQsIDIyNiwgMTIwLCAzOCwgMjUwLCAKKyAgICAyLCAyMjIsIDIzNCwgMjI2LCAxMjAsIDM4LCAyNTQsIDg4LCAyMjIsIDIzNCwgMjI2LCAxMjAsIDM4LCAxMzQsIDE3MCwgNDgsIAorICAgIDM4LCAyNDQsIDExLCAxNzAsIDQ4LCAzOCwgMjQ1LCAxNDYsIDI1MCwgMzUsIDM4LCAyNDUsIDE0NiwgMjE4LCAyMzQsIDM4LCAKKyAgICAyNDUsIDE0NiwgMjQ3LCAyNDgsIDM4LCAyNDUsIDE0NiwgMjUwLCAzNiwgMjUyLCAxODAsIDM4LCA0MywgNDQsIDgwLCA0OCwgCisgICAgMzgsIDI0NSwgMTQ2LCAyMjEsIDE4OCwgMzgsIDI0NSwgMTQ2LCAyMzQsIDEzNSwgMzgsIDI0NSwgMTQ2LCAyMTQsIDE1NSwgCisgICAgMjI1LCA3LCAyMTUsIDIyNSwgMzgsIDIyMywgNTAsIDIxOSwgNDcsIDIyNiwgMTIwLCAzOCwgNTIsIDY3LCAyMTgsIDEwMywgCisgICAgMjI2LCAxMjAsIDM4LCAyNTQsIDk4LCA4NywgMzgsIDIxNSwgMjExLCAyMTQsIDE4MiwgMzgsIDIxMSwgMjQ3LCAyNTEsIAorICAgIDE0MCwgNDgsIDM4LCAxNDAsIDgwLCAyMjYsIDEyMCwgMzgsIDE5OSwgNTIsIDIxOSwgNDcsIDIyNiwgMTIwLCAzOCwgOTcsIAorICAgIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjQ2LCAxMDMsIDM4LCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjQ2LCAKKyAgICAxMDMsIDM4LCA0MywgODAsIDUxLCAzOCwgNDQsIDgwLCA1MSwgMzgsIDI1MywgMjE3LCA0OCwgMjU1LCAxMSwgMjI2LCAyMzEsIAorICAgIDI1NCwgMjUxLCAyMTYsIDQyLCAyMTYsIDE5NiwgMjE4LCA3NCwgMTM5LCA2LCAyNTEsIDY2LCAyNDgsIDcxLCAyNTAsIDE3OCwgCisgICAgMjUwLCAxNzUsIDIzMiwgMjE0LCA4NywgMjUwLCAyNDAsIDIyNiwgMjMxLCAyNTEsIDI2LCAyMTQsIDE4OSwgMjQ1LCA0OCwgCisgICAgMjQ5LCAxOTEsIDIyMSwgMTg1LCAyNDgsIDcxLCAyNDQsIDE3OSwgMTE5LCA0LCAyNDMsIDIwMiwgMTE5LCA2LCAyNDIsIDYwLCAKKyAgICAyNTEsIDIxOSwgNiwgMjQyLCA2MCwgMTM5LCA2LCAyNDIsIDYwLCAyMjUsIDM3LCAyNDksIDE5MSwgMjI1LCAzNywgMjQ5LCAKKyAgICAxOTIsIDExNywgMTEzLCAyMjUsIDEwOCwgMTE5LCA2LCA3MywgMjUxLCAyMTksIDYsIDczLCAxMTksIDYsIDE1NiwgMTE5LCAKKyAgICA0LCAxNTYsIDIzMywgMTQ5LCA1NywgMjUyLCAxNDEsIDg3LCAxMzksIDYsIDIzMCwgMjUsIDIyNywgMTk2LCA1MCwgMjE5LCAKKyAgICAzMSwgMjIzLCAxMTksIDI0OSwgMTYyLCAxMTksIDYsIDIyNiwgMTA1LCAxMzksIDYsIDIyNiwgMTA1LCAxMzksIDYsIDIyNCwgCisgICAgOTYsIDExOSwgNiwgMTUzLCAyNTEsIDIxOSwgNiwgMTUzLCAxMzksIDYsIDE1MywgMjI0LCAxOTYsIDIxNywgNzEsIDIyMywgCisgICAgNjIsIDIyMCwgMTMyLCA3OCwgMjE3LCAxLCA1MCwgMjE1LCAyNTMsIDE2NCwgNTAsIDIxMywgMjQwLCAxMzksIDYsIDIxMCwgCisgICAgMTU5LCAyMjYsIDEzMywgNTAsIDIyNiwgMjIxLCA1MCwgMjM1LCAxOTMsIDIyNiwgMjIxLCA1MCwgMjUxLCAyMTksIDYsIAorICAgIDIxMCwgMTU5LCAyMTUsIDk0LCAyNiwgNCwgMSwgMjM1LCAxODUsIDIzNCwgMTczLCA1MCwgMjU0LCAxMDcsIDUwLCAxMTksIAorICAgIDYsIDI1MywgMTU4LCAyNTEsIDIxOSwgNiwgMjUxLCA2NiwgMjQ1LCA2OCwgODcsIDExOSwgNCwgNzUsIDExOSwgNiwgNzUsIAorICAgIDExOSwgNiwgMjQ1LCA2LCAyMTUsIDk0LCA2LCAyNDUsIDYsIDExOSwgNiwgMTkzLCAxMTksIDQsIDc2LCAxMTIsIDg3LCAKKyAgICAyNTIsIDI5LCA4NywgMjQyLCAyMDIsIDg3LCAyNDgsIDE5MCwgODcsIDIzNSwgMjMyLCAyMTksIDI5LCAyMjIsIDE4NywgNiwgCisgICAgMjI0LCA5NiwgMjQ0LCAxODIsIDUwLCAxMzksIDQsIDIyNSwgMTA4LCAxMzksIDQsIDI0MywgMTA3LCAxMzksIDYsIDI0MywgCisgICAgMTA3LCAxMzksIDYsIDIyNSwgMTA4LCAxMzksIDIzMCwgMjQsIDIxOCwgNDAsIDIxNSwgOTQsIDM1LCA2LCAyNDMsIDIwMiwgCisgICAgMjE1LCA5NCwgMzUsIDYsIDE1NiwgMjIzLCA0OSwgMzUsIDYsIDE1NiwgMjE1LCA5NCwgMzUsIDYsIDIxMSwgMTE3LCAxMzksIAorICAgIDMyLCA2LCAyNDksIDYwLCAxMzksIDMyLCA0LCAyNDksIDYwLCAxMzksIDMyLCA0LCA3NSwgMTM5LCAzMiwgNCwgNzMsIDEzOSwgCisgICAgMzIsIDQsIDIzNSwgMTQ0LCAyMjQsIDE3MCwgMjMyLCAyMTMsIDIxNSwgOTQsIDI1NCwgMTI2LCAyMjUsIDE4MywgNTAsIAorICAgIDI1NCwgMTgwLCAyMTUsIDk0LCA0LCAyNDUsIDYsIDE2LCAzMSwgMjIxLCAyNTIsIDIxOSwgMjksIDIxMiwgMTE0LCAyNDQsIAorICAgIDIsIDEyMywgMjIwLCAxMTgsIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjI4LCAxOTQsIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgCisgICAgMjE2LCAyNDEsIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjE2LCAxNjgsIDIxMiwgMTE0LCAyNDQsIDIsIDExMywgMjE2LCAKKyAgICAxNjYsIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjQ0LCAxMTcsIDIxMiwgMTE0LCAyNDQsIDIsIDExMywgMjQ0LCAxMTYsIAorICAgIDIxMiwgMTE0LCAyNDQsIDIsIDEzNCwgMjQ0LCAxMTYsIDIxMiwgMTE0LCAyNDQsIDIsIDI0NCwgMTEsIDI0NCwgMTE2LCAKKyAgICAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDIxOSwgMTE1LCAyMTIsIDExNCwgMjQ0LCAyLCAyNDQsIDgxLCAyMTksIDExMywgCisgICAgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyNDUsIDE4OCwgMjEyLCAxMTQsIDI0NCwgMiwgMTM0LCAyNDUsIDE4NiwgMjEyLCAKKyAgICAxMTQsIDI0NCwgMiwgMjQ0LCA4MSwgMjQ1LCAxODYsIDIxMiwgMTE0LCAyNDQsIDIsIDIyMCwgMTIyLCAyNDUsIDE4NiwgCisgICAgMjQ0LCAyLCAyMjcsIDE5NywgMTEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDExMCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMDUsIAorICAgIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTU4LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE2MSwgMjIyLCAxOTgsIDIyNywgMTk4LCAKKyAgICAxODksIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTk0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE5OCwgMjIyLCAxOTgsIDIyNywgCisgICAgMTk4LCAxOTUsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjAwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDIxNiwgMjQ3LCAyMjIsIAorICAgIDE5OCwgMjI3LCAxOTgsIDI0NSwgMTY3LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDIxNSwgNzYsIDIyMiwgMTk4LCAyMjcsIDE5OCwgCisgICAgMjQ0LCAxMTQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyNDAsIDIxMCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDgxLCAKKyAgICAyNDAsIDIxMCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMjMsIDIxNiwgMTQ3LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDExMCwgCisgICAgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMDUsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTU4LCA0LCAyMjIsIDE5OCwgMjI3LCAKKyAgICAxOTgsIDE2MSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxODksIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTk0LCA0LCAyMjIsIAorICAgIDE5OCwgMjI3LCAxOTgsIDE5OCwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxOTUsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgCisgICAgMjAwLCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDIxNiwgMjQ3LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NSwgMTY3LCA0LCAKKyAgICAyMjIsIDE5OCwgMjI3LCAxOTgsIDIxNSwgNzYsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjQ0LCAxMTQsIDQsIDIyMiwgCisgICAgMTk4LCAyMjcsIDE5OCwgMTIzLCAyNDAsIDIxMCwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDgxLCAyNDAsIDIxMCwgCisgICAgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMjMsIDIxNiwgMTQ3LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjE2LCAxNDgsIAorICAgIDI1MSwgNjcsIDI0OSwgNjAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjQ0LCA4MSwgMjE2LCAxNDcsIDIyMiwgMTk4LCAyMjcsIAorICAgIDE5OCwgMjE2LCAyNDgsIDIxNiwgMTQ3LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDIyMywgNDksIDEyMywgMjQwLCAyMTAsIDcsIAorICAgIDQsIDEsIDIyMywgNDksIDI1MSwgNjYsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE5LCAxMjUsIDIzMywgNzgsIDE3LCAyMjIsIAorICAgIDE5OCwgMjI3LCAxOTgsIDI0NCwgMTE1LCAyNDUsIDIyNiwgMTcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjQ0LCAxMTUsIDIxNiwgCisgICAgMTQ3LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjQwLCAyMTEsIDIxNiwgMTQ3LCAyMTIsIDExNCwgMjQ0LCAyLCAyMTAsIAorICAgIDg3LCAyMTYsIDE2NiwgMTQwLCA3NCwgMjE0LCAxNTMsIDc0LCA5NywgNzQsIDI0NiwgMTA0LCA3NCwgNDMsIDQ0LCA3NCwgCisgICAgMTIwLCAxMjQsIDc0LCAyMjgsIDU2LCAyMTIsIDksIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIDIxOSwgMjgsIDI0NSwgCisgICAgMjIwLCA3NCwgMjE5LCAyOCwgMjEyLCA5LCA3NCwgMTQwLCA4MCwgMiwgOTEsIDk3LCA4MCwgMiwgOTEsIDE0MCwgMjEyLCAKKyAgICAzNiwgNzQsIDk3LCAyMTIsIDM2LCA3NCwgMTQwLCAxMTMsIDI0MSwgMjM0LCA3NCwgMjE0LCAxNTMsIDExMywgMjQxLCAyMzQsIAorICAgIDc0LCA5NywgMTEzLCAyNDEsIDIzNCwgNzQsIDI0NiwgMTA0LCAxMTMsIDI0MSwgMjM0LCA3NCwgMTQwLCA4MCwgMiwgMjE3LCAKKyAgICA3NywgOTcsIDgwLCAyLCAyMTcsIDc3LCAxNDAsIDgwLCAyNDMsIDI0MywgMTMwLCAyMTQsIDE1MywgODAsIDI0MywgMjQzLCAKKyAgICAxMzAsIDk3LCA4MCwgMjQzLCAyNDMsIDEzMCwgMjQ2LCAxMDQsIDgwLCAyNDMsIDI0MywgMTMwLCAxMjAsIDEyNCwgODAsIDIsIAorICAgIDI1MiwgMTI3LCAxNDAsIDgwLCAyLCAxMDMsIDk3LCA4MCwgMiwgMTAzLCAxNDAsIDgwLCAyLCAyMzIsIDEyMywgOTcsIDgwLCAKKyAgICAyLCAyMzIsIDEyMywgNDMsIDQ0LCAyMTIsIDM2LCA3NCwgNDMsIDQ0LCA4MCwgMiwgOTEsIDI0NiwgMTA0LCAyMTAsIDM1LCAKKyAgICA3NCwgMjE0LCAxNTMsIDgwLCAyLCAyMTYsIDc3LCAyMzMsIDM3LCAyMTQsIDE1MywgODAsIDIsIDIxNiwgNzcsIDIyMiwgCisgICAgMjQxLCAyNDYsIDEwNCwgODAsIDIsIDIxNiwgNzcsIDIzMywgMzcsIDI0NiwgMTA0LCA4MCwgMiwgMjE2LCA3NywgMjIyLCAKKyAgICAyNDEsIDk3LCA4MCwgMiwgMjQ5LCAxNjEsIDI0NiwgMTAzLCAyNDYsIDEwNCwgODAsIDIsIDI0OSwgMTYxLCAyMzMsIDM3LCAKKyAgICAyNTQsIDg4LCAyMTYsIDE0LCAyMjAsIDE1MywgNzQsIDI1MCwgMiwgMjE2LCAxNCwgMjIwLCAxNTMsIDc0LCAyMjgsIDU2LCAKKyAgICAyMTIsIDksIDgwLCAyMTYsIDQyLCAxOTksIDEzMCwgMTQwLCA4MCwgMjE2LCA0MiwgMjUyLCAxNDEsIDExNywgOTcsIDgwLCAKKyAgICAyMTYsIDQyLCAxMzAsIDI1NCwgODgsIDIwNCwgMjUwLCAzNiwgNzQsIDI1MCwgMiwgMjA0LCAyNTAsIDM2LCA3NCwgMTQwLCAKKyAgICAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIxNCwgMTUyLCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjQ2LCAxMDMsIAorICAgIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIyMiwgMjQxLCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgCisgICAgMTM5LCAyMzMsIDM3LCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMTQsIDE1MiwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIAorICAgIDEzOSwgMjQ2LCAxMDMsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIyMiwgMjQxLCAyNDYsIDEwNCwgMjQxLCAKKyAgICAyNTUsIDIsIDI1MiwgMTM5LCAyMzMsIDM3LCA5NywgODAsIDExNywgMTQwLCA3NCwgMjE0LCAxNTMsIDgwLCAxNDAsIDY0LCAKKyAgICAyNDYsIDEwNCwgNzQsIDE0MCwgODAsIDExNywgOTcsIDc0LCAxNDAsIDIyNiwgNzAsIDI1MywgMjQ3LCAyMTQsIDE1MywgCisgICAgMjI2LCA3MCwgMjUzLCAyNDcsIDk3LCAyMjYsIDcwLCAyNTMsIDI0NywgMjQ2LCAxMDQsIDIyNiwgNzAsIDI1MywgMjQ3LCAKKyAgICAxNDAsIDI0MSwgMjU1LCAxMTcsIDk3LCAyNDEsIDI1NCwgOTcsIDI0MSwgMjU1LCAxMTcsIDE0MCwgMjQxLCAyNTQsIDE0MCwgCisgICAgNTIsIDgwLCAyLCA5MSwgNDMsIDQ0LCA1MiwgODAsIDIsIDkxLCA5NywgNTIsIDgwLCAyLCA5MSwgMTQwLCA1MiwgNzQsIAorICAgIDIxNCwgMTUzLCA1MiwgNzQsIDk3LCA1MiwgNzQsIDI0NiwgMTA0LCA1MiwgNzQsIDQzLCA0NCwgNTIsIDc0LCAxMjAsIDEyNCwgCisgICAgNTIsIDc0LCAyMjgsIDU2LCAyMTIsIDksIDUyLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDUyLCA3NCwgMjE5LCAyOCwgMjQ1LCAKKyAgICAyMjAsIDUyLCA3NCwgMjE5LCAyOCwgMjEyLCA5LCA1MiwgNzQsIDE0MCwgMjE1LCAyMTEsIDc0LCA5NywgMjE1LCAyMTEsIAorICAgIDc0LCAxNDAsIDIxOCwgMjMwLCA3NCwgOTcsIDIxOCwgMjMwLCA3NCwgMjE0LCAxNTMsIDgwLCAyLCA1MiwgOTEsIDI0NiwgCisgICAgMTA0LCA4MCwgMiwgNTIsIDkxLCAxNDAsIDI0OCwgMTU1LCA3NCwgMjE0LCAxNTMsIDI0OCwgMTU1LCA3NCwgOTcsIDI0OCwgCisgICAgMTU1LCA3NCwgMjQ2LCAxMDQsIDI0OCwgMTU1LCA3NCwgMTQwLCA4MCwgMjE2LCA0MiwgMTMwLCA5NywgODAsIDIxNiwgNDIsIAorICAgIDEzMCwgMTQwLCA3MSwgNzQsIDIxNCwgMTUzLCA3MSwgNzQsIDk3LCA3MSwgNzQsIDI0NiwgMTA0LCA3MSwgNzQsIDIxNCwgCisgICAgMTUzLCA3MSwgODAsIDI0MywgMjQzLCAxMzAsIDIxNCwgMTUzLCA3MSwgODAsIDIyNiwgMTk3LCAyMjUsIDIxNCwgMjE0LCAKKyAgICAxNTMsIDcxLCA4MCwgMjI2LCAxOTcsIDIyNSwgMjE1LCAyLCAyMDMsIDEzMCwgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAxOTcsIAorICAgIDIyNSwgMjE1LCAyLCA2NywgMTMwLCAyMTQsIDE1MywgNzEsIDUyLCA3NCwgMjE0LCAxNTMsIDcxLCA1MiwgODAsIDIyNiwgCisgICAgMTk3LCAyMjUsIDIxNCwgOTcsIDcxLCA4MCwgMjQzLCAyNDMsIDIxMiwgNTYsIDIyOCwgNTYsIDIxMiwgOSwgODAsIDIxNiwgCisgICAgNDIsIDI0OSwgMTYwLCAyMTksIDI4LCAyNDUsIDIyMCwgODAsIDIxNiwgNDIsIDI0OSwgMTYwLCAxMjAsIDEyNCwgNzEsIDc0LCAKKyAgICA0NCwgODAsIDIsIDQsIDI1MCwgMzUsIDI0NiwgMTA0LCA4MCwgMTQwLCA2NCwgMjE0LCAxNTMsIDc0LCAxMzQsIDk3LCAyNTMsIAorICAgIDI0NywgMTQwLCA4MCwgMiwgNjcsIDkxLCA5NywgODAsIDIsIDY3LCA5MSwgNDMsIDQ0LCA4MCwgMiwgNjcsIDkxLCAxNDAsIAorICAgIDgwLCAyLCA1MiwgNjcsIDkxLCA5NywgODAsIDIsIDUyLCA2NywgOTEsIDQzLCA0NCwgODAsIDIsIDUyLCA2NywgOTEsIDE0MCwgCisgICAgMjI2LCAxNzMsIDc0LCA5NywgMjI2LCAxNzMsIDc0LCA0MywgNDQsIDIyNiwgMTczLCA3NCwgMzEsIDI1NCwgMTU0LCAyNDksIAorICAgIDIxNCwgMjI1LCAyNTMsIDI0NywgMjMzLCAyMTYsIDE4NywgMjQ1LCAyNywgMjE2LCAxODcsIDI0NywgMTM4LCAyMjgsIDUyLCAKKyAgICAyNDUsIDI4LCAyNDUsIDE1MiwgMjIwLCAxMjcsIDIzNSwgMjQ1LCAyMjksIDIyMSwgMjQ1LCAxNzAsIDIyNiwgMjMxLCAyMjgsIAorICAgIDUyLCAyNTQsIDEyNCwgMjQ1LCAxNzAsIDIyNiwgMjMxLCA0LCAyNDUsIDE3MCwgMjI2LCAyMzEsIDI0OSwgMTg2LCAyNTMsIAorICAgIDIzOCwgMjMxLCA2MiwgMjQ3LCAxMzgsIDIyOCwgNTIsIDI0OSwgMTg4LCAyNTMsIDIzOCwgMjMxLCA2MiwgNCwgMjQ5LCAKKyAgICAxODYsIDI1MywgMjM4LCAyMzEsIDYyLCAyNDUsIDE0MywgNjQsIDIyNCwgMTcyLCAyMzAsIDI0LCAyMjQsIDE4MCwgMjMwLCAKKyAgICAyNCwgMjQ5LCAxNjUsIDIzMCwgMjQsIDIxOCwgNDAsIDIzMCwgMTgyLCA1MCwgMjMwLCAxODAsIDUwLCA1OSwgMjI1LCAyMiwgCisgICAgMjQ3LCAxNjksIDIxOSwgOTUsIDIyMCwgMTI4LCAyMzAsIDE4MSwgMjUzLCAyMTcsIDIyNiwgMTY3LCAyMjIsIDIzNCwgMjI2LCAKKyAgICAxNjcsIDI1MSwgMTE0LCAyMjYsIDE2NywgNDIsIDIyMiwgMTkzLCAyNDksIDEwOSwgMjIyLCAxOTMsIDI0NCwgNCwgMjIyLCAKKyAgICAxOTMsIDIyNCwgMTY4LCAxMTEsIDIzNSwgMjM0LCA0NCwgMjU0LCAxMDksIDI1NCwgMTA5LCAyMzEsIDg4LCAyNTQsIDEwOSwgCisgICAgMjE4LCAyNTUsIDI1NCwgMTA5LCAyNDcsIDE3MSwgMjQ3LCAxMzgsIDIyOCwgNTIsIDI0NywgMTc0LCAyMjYsIDgsIDExMSwgCisgICAgMjI4LCA1MiwgMjI2LCA4LCAxMTEsIDIzMiwgMTQ2LCAyNTQsIDExOCwgMjMyLCAxNDYsIDIyNiwgMTU4LCAyMzUsIDE5OCwgCisgICAgMjE0LCAxNzUsIDIzNSwgMjExLCA1MiwgMjM1LCAyMTEsIDIxNSwgMjExLCAyMzUsIDIxMSwgMjQ5LCAxODIsIDIzNSwgMjExLCAKKyAgICAyMTgsIDEzLCAyMzUsIDIxMSwgMjEzLCAxMjksIDIzNSwgMjExLCAyNTAsIDIsIDIzNSwgMjExLCAyNTAsIDIsIDI0OSwgCisgICAgMTgyLCAyMzUsIDIxMSwgMjU0LCA4OCwgMjQ5LCAxODIsIDIzNSwgMjExLCAyMTYsIDE4NiwgMjUyLCA2NywgMjIzLCAxMzcsIAorICAgIDIyNCwgMTY5LCA1OSwgMjMwLCAxODEsIDI0NSwgMzMsIDI0MywgNDYsIDIyNCwgMTY5LCAyNDEsIDU3LCAyMTYsIDg5LCAKKyAgICAyMjYsIDE2NywgMjIzLCA0OSwgMTgyLCAyMzUsIDE5MywgMjMzLCA2NSwgMjIyLCA5MSwgMjE5LCAxNTcsIDIxMiwgMzUsIAorICAgIDIxMSwgMjAwLCAyMjQsIDE4MCwgMjI4LCA1MiwgMTgyLCAyMzAsIDE4MiwgMTgyLCAyNTMsIDIxMCwgMTI4LCAxMTEsIDIyOCwgCisgICAgNTIsIDI1MywgMjEwLCAxMjgsIDExMSwgMjU0LCA0OCwgMTI4LCAxMTEsIDI1NCwgNDgsIDI1MSwgODgsIDIyOCwgNTIsIAorICAgIDI1NSwgNCwgMTI4LCAxMTEsIDIyOSwgMTAwLCAyNTQsIDQ4LCAyMjgsIDU5LCAyNTUsIDQsIDEyOCwgMTExLCAyNTQsIDE0OCwgCisgICAgMTI4LCAxMTEsIDIyOCwgNTIsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjU0LCAxNDgsIDEyOCwgMTc3LCAxMjgsIDExMSwgMjE1LCAKKyAgICAyMTEsIDE4MiwgMjU0LCAxNTUsIDEyOCwgMTExLCAyNDUsIDk0LCAxMTEsIDI0MywgNDUsIDI0NSwgOTQsIDExMSwgMjQ3LCAKKyAgICAyMzQsIDI1MiwgMjMsIDI1NCwgNTAsIDIxNiwgMTk2LCAyMzIsIDIyMSwgMjQzLCA0NSwgMTI4LCAxMTEsIDI1NCwgNDgsIAorICAgIDEyOCwgMjE2LCA0MiwgMTc3LCAyMTYsIDE5NiwgMjM2LCAxNSwgMjI2LCAyMzEsIDIzNiwgMTUsIDY0LCAxNzcsIDI1NCwgCisgICAgNDgsIDEyOCwgMTExLCAyNDksIDIyNywgMjQ1LCA5NywgMjQ1LCA5OCwgMjQ5LCAyMjYsIDIyMiwgMjM0LCAyMzYsIDAsIAorICAgIDEyOCwgMTExLCAyMjIsIDIzNCwgMTI4LCAxMTEsIDI0OSwgMTU0LCAxMTEsIDI0NSwgNjcsIDI0NSwgOTYsIDExMSwgMjE4LCAKKyAgICAxNTcsIDI0NSwgOTcsIDI0OCwgNTUsIDEyOCwgMTExLCAxMjgsIDIxNiwgNDIsIDI1MSwgNzgsIDI0OCwgNzIsIDIzMSwgODgsIAorICAgIDI1MSwgNzcsIDIyNCwgMTEsIDEyOCwgMTExLCAyMjgsIDUyLCAxMjgsIDExMSwgMjQwLCAxMDQsIDExMSwgMjI4LCA1MiwgCisgICAgMjQwLCAxMDQsIDExMSwgMjE4LCAxMDksIDI0NSwgOTQsIDExMSwgMjMzLCAxNSwgMTc3LCAxMjgsIDExMSwgMjQyLCAxMzAsIAorICAgIDE3NywgMTI4LCAxMTEsIDIzMywgMTUsIDExNywgMTI4LCAxMTEsIDI0MiwgMTMwLCAxMTcsIDEyOCwgMTExLCAyMzMsIDE1LCAKKyAgICAyNTEsIDg4LCAyMjgsIDUyLCAxMjgsIDExMSwgMjQyLCAxMzAsIDI1MSwgODgsIDIyOCwgNTIsIDEyOCwgMTExLCAyMzAsIAorICAgIDk3LCAyMzMsIDE0LCAyMzAsIDk3LCAyNDIsIDEyOSwgMjUyLCAyMywgMjI4LCA1MiwgMjQ1LCA5NCwgMTExLCAyMjgsIDUyLCAKKyAgICAyMzMsIDE0LCAyMjgsIDUyLCAyNDIsIDEyOSwgMjI5LCAxMDAsIDIzMywgMTUsIDIyOCwgNTksIDEyOCwgMTExLCAyMjksIAorICAgIDEwMCwgMjQyLCAxMzAsIDIyOCwgNTksIDEyOCwgMTExLCAyMzMsIDE1LCAxNzcsIDI0NSwgOTQsIDExMSwgMjQyLCAxMzAsIAorICAgIDE3NywgMjQ1LCA5NCwgMTExLCAyMjksIDEwMCwgMjMzLCAxNSwgMjI4LCA1OSwgMjQ1LCA5NCwgMTExLCAyMjksIDEwMCwgCisgICAgMjQyLCAxMzAsIDIyOCwgNTksIDI0NSwgOTQsIDExMSwgMjMzLCAxNSwgMTc3LCAyNDIsIDEyOSwgMjQyLCAxMzAsIDE3NywgCisgICAgMjMzLCAxNCwgMjI5LCAxMDAsIDIzMywgMTUsIDIyOCwgNTksIDI0MiwgMTI5LCAyMjksIDEwMCwgMjQyLCAxMzAsIDIyOCwgCisgICAgNTksIDIzMywgMTQsIDIyNCwgMjAyLCAyMTgsIDU1LCAyMjQsIDIwMywgMTc3LCAxMjgsIDExMSwgMjE4LCA1NiwgMTc3LCAKKyAgICAxMjgsIDExMSwgMjI0LCAyMDMsIDE3NywgMjQ1LCA5NCwgMTExLCAyMTgsIDU2LCAxNzcsIDI0NSwgOTQsIDExMSwgMjQ3LCAKKyAgICAxMzgsIDIyOCwgNTIsIDIyNCwgMjA1LCAyNDcsIDEzOCwgMjI4LCA1MiwgMjE4LCA1NywgMjE4LCA2NCwgMjI2LCAyMzEsIAorICAgIDIxOCwgMjIsIDIyNiwgMjMxLCAyMjgsIDUyLCAxMTUsIDIxOCwgNjQsIDIyNiwgMjMxLCAyMjgsIDUyLCAxMTUsIDIxOCwgCisgICAgMjIsIDIyNiwgMjMxLCAyMTgsIDY0LCA2NCwgMTc3LCAxMjgsIDExMSwgMjE4LCAyMiwgNjQsIDE3NywgMTI4LCAxMTEsIAorICAgIDIyOSwgMTAwLCAxMTUsIDIxOCwgNjQsIDY0LCAyMjgsIDU5LCAxMjgsIDExMSwgMjI5LCAxMDAsIDExNSwgMjE4LCAyMiwgCisgICAgNjQsIDIyOCwgNTksIDEyOCwgMTExLCAyMTgsIDY0LCA2NCwgMiwgMjI4LCA1MiwgMTI4LCAxMTEsIDIxOCwgMjIsIDY0LCAyLCAKKyAgICAyMjgsIDUyLCAxMjgsIDExMSwgMjMwLCA4MSwgMjMwLCA4MiwgMjMwLCA4MywgMjMwLCA4MiwgMjE0LCAxNzUsIDQyLCAyMzYsIAorICAgIDE1LCAyMjYsIDIzMSwgNDIsIDIyNiwgMTUwLCAyMjYsIDIzMSwgNDIsIDIzNiwgMTUsIDY0LCAxNzcsIDEyOCwgMTExLCA0MiwgCisgICAgMjI2LCAxNTAsIDY0LCAxNzcsIDEyOCwgMTExLCA0MiwgMjUwLCAyNTEsIDQyLCAyNDksIDEwMiwgMzcsIDIyNSwgMjIsIDM3LCAKKyAgICAyMzAsIDE4MSwgMzcsIDIxNiwgODUsIDM3LCAyNDcsIDE2OSwgMjE5LCA5NSwgMzcsIDU5LCAyMjYsIDE2NywgMzcsIDIyMiwgCisgICAgMjM0LCAyMjYsIDE2NywgMzcsIDI1MywgMjE3LCAyMjYsIDE2NywgMzcsIDI0NSwgOTcsIDM3LCAyNDgsIDE1NiwgOTIsIAorICAgIDIyNSwgMjIsIDkyLCAyMzAsIDE4MSwgOTIsIDIxNiwgODUsIDkyLCA1OSwgMjI2LCAxNjcsIDQ0LCAyMTcsIDg3LCA0MywgCisgICAgMjE3LCA4NywgMTI0LCAyMTcsIDg3LCAxMjAsIDIxNywgODcsIDI1MywgMjIwLCAyMzAsIDE1NiwgMjE1LCAxOTEsIDI0NCwgCisgICAgMjUsIDIxNSwgMjExLCA2NywgMjUyLCAxNDEsIDQ0LCAyMTUsIDkzLCA1MiwgNjcsIDI1MiwgMTQxLCA1MiwgNDQsIDIxNSwgCisgICAgOTMsIDI0NywgMTM4LCAyMjgsIDUyLCAyMjQsIDE2MywgMjI4LCA1MiwgMjE1LCAxOTEsIDI0NywgMTM4LCAyMjgsIDUyLCAKKyAgICAyNDQsIDI2LCAyMjksIDEwMiwgNTIsIDY3LCAyNTIsIDE0MSwgNTIsIDQ0LCAyMTUsIDkzLCAyMjQsIDIwMywgMjE0LCAxODQsIAorICAgIDIyMywgOTEsIDIxOCwgNTYsIDIxNCwgMTg0LCAyMjMsIDkxLCAyMjgsIDU3LCAyMTgsIDc3LCAyMjYsIDIzMSwgMjQ5LCAKKyAgICAxODYsIDI1MywgMjM4LCAyMjgsIDU3LCAyMTgsIDc2LCAyMjgsIDU3LCAyMTgsIDc3LCA2NCwgMTc3LCAxMjgsIDExMSwgCisgICAgMjQ5LCAxODYsIDI1MywgMjM4LCAyMjgsIDU3LCAyMTgsIDc3LCAxNzcsIDEyOCwgMTExLCAyMjYsIDE1MCwgMjI2LCAyMzEsIAorICAgIDIzNiwgMTUsIDIyNiwgMjMxLCAyMzAsIDg3LCAyNDEsIDIwMCwgMjQ5LCAxOTYsIDIzMSwgMTM3LCAyMzUsIDIwOCwgMjExLCAKKyAgICAxNDUsIDIyOSwgMjAyLCAyMjgsIDU4LCA0NCwgMjU0LCAxMTAsIDIsIDI1NCwgMjUsIDQ0LCAyMTUsIDIyNSwgMjMwLCAyNCwgCisgICAgMjMyLCAxNDYsIDI1NCwgMTE4LCAyMzAsIDI0LCAyMzIsIDE0NiwgMjI2LCAxNTgsIDIzMCwgMjQsIDIzNSwgMTk4LCAyMzAsIAorICAgIDI0LCAyMTQsIDE3NSwgMjQ3LCAyNDksIDIyNiwgMTY3LCA1OSwgMjI2LCAxNjcsIDIxOCwgMTU3LCAyMjYsIDE2NywgMjQ3LCAKKyAgICAxNjksIDIxNiwgODUsIDI1MSwgMTY0LCA0MywgMjI4LCA1NywgMjQ0LCAxODEsIDIyMCwgMTQ5LCAyMjQsIDE4MCwgNDQsIAorICAgIDIyOCwgNTcsIDI0NCwgMTgxLCAyMjAsIDE0OSwgMjI0LCAxODAsIDQzLCAyMjAsIDE0OSwgMjI0LCAxODAsIDQ0LCAyMjAsIAorICAgIDE0OSwgMjI0LCAxODAsIDIyMywgNDksIDIxNiwgODksIDI0NSwgOTcsIDI0OSwgOTksIDIzMiwgMTQ2LCAyMjYsIDE1OCwgCisgICAgMjQ5LCA5OSwgMjMyLCAxNDYsIDI1NCwgMTE4LCA1MiwgMjE4LCA2MywgNTIsIDIxOCwgMjEsIDUyLCAyMzUsIDE5OCwgNTIsIAorICAgIDIxNCwgMTc1LCAyMjUsIDQ3LCAxMjgsIDIyLCAyMjYsIDgsIDExMSwgMjMzLCAxNSwgMiwgMjQ3LCAxMjAsIDI0MiwgMTMwLCAKKyAgICAyLCAyNDcsIDEyMCwgMjEzLCAxODcsIDIzMCwgOTcsIDIzMywgMTQsIDIxMywgMTg3LCAyMzAsIDk3LCAyNDIsIDEyOSwgCisgICAgMjMzLCAxNSwgMTI4LCAyMTYsIDQyLCAxNzcsIDI0MiwgMTI5LCAyNDIsIDEzMCwgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgCisgICAgMTQsIDEyOCwgMjE2LCA0MiwgMTc3LCAyMzMsIDE0LCAxMjgsIDIxNiwgNDIsIDE3NywgMjQyLCAxMjksIDEyOCwgMjE2LCAKKyAgICA0MiwgMTc3LCAyMjQsIDIwMiwgMTI4LCAyMTYsIDQyLCAxNzcsIDIxOCwgNTUsIDI0NywgMTM4LCAyMjgsIDUyLCAyMjQsIAorICAgIDIwNiwgMTc3LCAyNDUsIDk5LCAyNDcsIDEzOCwgMjI4LCA1MiwgMjE4LCA1OCwgMTc3LCAyNDUsIDk5LCAyMjgsIDUyLCA0MiwgCisgICAgMjM2LCAxNSwgNjQsIDE3NywgMTI4LCAxMTEsIDIyOCwgNTIsIDQyLCAyMjYsIDE1MCwgNjQsIDE3NywgMTI4LCAxMTEsIDQyLCAKKyAgICAyMzYsIDE1LCA2NCwgMTc3LCAyMjgsIDUyLCAxMjgsIDExMSwgNDIsIDIyNiwgMTUwLCA2NCwgMTc3LCAyMjgsIDUyLCAxMjgsIAorICAgIDExMSwgMjMzLCAxNSwgMjUxLCA4OCwgMjI4LCA1MiwgMjQ1LCA5NCwgMTExLCAyNDIsIDEzMCwgMjUxLCA4OCwgMjI4LCA1MiwgCisgICAgMjQ1LCA5NCwgMTExLCAyMjQsIDIwMywgMjUxLCA4OCwgMjI4LCA1MiwgMjQ1LCA5NCwgMTExLCAyMTgsIDU2LCAyNTEsIDg4LCAKKyAgICAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDIyOCwgNTIsIDIyOCwgNTcsIDIxOCwgNzcsIDIyNiwgMjMxLCAyNDcsIDEzOCwgCisgICAgMjI4LCA1MiwgMjQ5LCAxODgsIDI1MywgMjM4LCAyMjgsIDU3LCAyMTgsIDc2LCAyMjgsIDUyLCAyMjgsIDU3LCAyMTgsIDc3LCAKKyAgICA2NCwgMTc3LCAxMjgsIDExMSwgMjQ3LCAxMzgsIDIyOCwgNTIsIDI0OSwgMTg4LCAyNTMsIDIzOCwgMjI4LCA1NywgMjE4LCAKKyAgICA3NywgMTc3LCAyNDUsIDk5LCA2NywgMjQ1LCAxNjMsIDIzMCwgMjIyLCAyMDMsIDI0NSwgMTYzLCAxMjAsIDQ0LCAyNDcsIAorICAgIDI1NSwgMjQ1LCAxNjMsIDEyNCwgNDQsIDI0NywgMjU1LCAyNDUsIDE2MywgMjQ1LCAxNzAsIDY0LCAyLCAxOTksIDIwMywgCisgICAgOTEsIDI0NSwgMTcwLCA2NCwgMiwgNjcsIDI1MiwgMTQxLCAyNTMsIDIwNywgMjQ1LCAxNDMsIDY0LCAyMDMsIDkxLCA0LCAKKyAgICAyNDUsIDE3MCwgNjQsIDIsIDY3LCAyNTIsIDE0MSwgMjUzLCAyMDcsIDI0NSwgMTQzLCA2NCwgMjAzLCA5MSwgMjQ1LCAxNzAsIAorICAgIDY0LCAyLCA1OSwgNDgsIDI0NSwgMTcwLCA2NCwgMiwgMjI2LCAxMjMsIDQsIDI0NSwgMTcwLCA2NCwgMiwgMjI2LCAxMjMsIAorICAgIDI0NSwgMTcwLCA2NCwgMiwgMjE0LCAxODMsIDI0NSwgMTcwLCA2NCwgMiwgMTEzLCAyMDMsIDIxOCwgOTAsIDI0OSwgMTg2LCAKKyAgICAyLCAxOTksIDIwMywgOTEsIDI0OSwgMTg2LCAyLCA2NywgMjUyLCAxNDEsIDI1MywgMjA3LCAyNDUsIDE0MywgNjQsIDIwMywgCisgICAgOTEsIDQsIDI0OSwgMTg2LCAyLCA2NywgMjUyLCAxNDEsIDI1MywgMjA3LCAyNDUsIDE0MywgNjQsIDIwMywgOTEsIDI0OSwgCisgICAgMTg2LCAyLCAyMjYsIDEyMywgNCwgMjQ5LCAxODYsIDIsIDIyNiwgMTIzLCAyMTAsIDE2MCwgMTg3LCAyNTIsIDE3MywgMjMxLCAKKyAgICA2MSwgMjQ3LCAyNTAsIDUwLCAyNDUsIDE3MiwgNzQsIDI0MCwgMjM0LCAxMjAsIDI1MywgMjQ5LCAxMjQsIDI1MywgMjQ5LCAKKyAgICAyMjQsIDE3NSwgMjI1LCAxNjUsIDIxMiwgMzIsIDIzMiwgMjEzLCA0MywgMjUwLCAxODEsIDQ0LCAyNTAsIDE4MSwgNDMsIAorICAgIDI0NCwgNTcsIDQ0LCAyNDQsIDU3LCAyNTEsIDE3NSwgNDQsIDI0OSwgMTMyLCAyNTEsIDE3NSwgNDMsIDI0OSwgMTMyLCAKKyAgICAyMTYsIDE0LCA0NCwgMjQ5LCAxMzIsIDIxNiwgMTQsIDQzLCAyNDksIDEzMiwgMjIzLCA0OSwgMjI4LCA1MiwgNTAsIDQyLCAKKyAgICAyMzIsIDEwNCwgMjU0LCAyNSwgMjIxLCAxNjQsIDIyMSwgMTcxLCAyMTcsIDEsIDIyMywgMTIwLCAyMjQsIDI0MSwgMjM1LCAKKyAgICAyMzgsIDIxMywgMTY1LCAyMTgsIDIzNCwgMjI1LCA0MSwgNjQsIDIzNSwgMjA3LCA1MCwgMjE1LCA5NCwgMjI4LCA1MiwgNTAsIAorICAgIDIxMiwgNDIsIDI0MCwgMjM2LCAyMTYsIDE0LCA0MywgMjQ5LCAxNjAsIDIxNiwgMTQsIDQ0LCAyNDksIDE2MCwgMjUxLCAKKyAgICAxNzUsIDQzLCAyNDksIDE2MCwgMjUxLCAxNzUsIDQ0LCAyNDksIDE2MCwgMjE2LCAxNCwgMTYzLCAyMzUsIDIxMSwgMjUxLCAKKyAgICAxNzUsIDE2MywgMjM1LCAyMTEsIDI0MywgMjQwLCAyMTksIDc1LCAxMjAsIDI1MywgMjUwLCAyNTIsIDI0LCAxMTMsIDIwMywgCisgICAgMjUyLCAxMjksIDIyNiwgMTYwLCAyMzQsIDEzOCwgMjQ1LCA5MCwgMjE2LCA0MiwgMjE2LCAxOTYsIDIyMiwgMjUxLCAyMTEsIAorICAgIDE3OSwgMjM2LCAwLCAxMTUsIDIyMywgMTE3LCAyNTEsIDE2MywgMjM0LCAxMzcsIDIzMywgNDIsIDI1NCwgMTEwLCAxMjcsIAorICAgIDIyMiwgMjQ3LCAyNTQsIDExMCwgMTI3LCAyNDUsIDkwLCAyMTYsIDQyLCAyMTYsIDE5NiwgMjMzLCA0NiwgMjUyLCAzNSwgCisgICAgMjIyLCAyMzMsIDI0OSwgNzAsIDI1NCwgMTU1LCAyNTQsIDEsIDIxNywgMTgxLCAyMTYsIDQsIDIyMiwgMTIzLCAyNDcsIAorICAgIDIxNSwgMjI2LCAxNTEsIDI0OSwgMTk4LCAyMTcsIDUyLCAyMTksIDg2LCAyNDksIDE1MSwgMjQ5LCAxNTAsIDI1NCwgNjYsIAorICAgIDI0MywgMjI1LCAxNiwgMjQwLCAxNTEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjE4LCAyMjgsIDIyNCwgMjcsIDI1NCwgCisgICAgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ1LCA5OSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDcsIAorICAgIDE3NCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDcsIDI0OCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKKyAgICAyMjQsIDI4LCAyMzUsIDU2LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI1MCwgMzUsIDI1NCwgNjYsIDI0MywgCisgICAgMjI1LCAxNiwgMjUwLCAzNiwgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUwLCAzNiwgMjM1LCA1NiwgMjU0LCAKKyAgICA2NiwgMjQzLCAyMjUsIDE2LCAyMTksIDk2LCAxMzAsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUyLCAxODEsIDEzMCwgCisgICAgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyMTksIDk1LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIAorICAgIDI1MiwgMTgwLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDIzMywgMTQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgCisgICAgMjI0LCAyOCwgMjQyLCAxMjksIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTQwLCAyMTQsIDE5LCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDk3LCAyMTQsIDE5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDE0MCwgNzQsIDI1NCwgNjYsIAorICAgIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgOTcsIDc0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1MCwgMzYsIDI1MiwgMTgwLCAKKyAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDEyNCwgMjE3LCA4OCwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgCisgICAgMjQ4LCA1NSwgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMTI0LCAyNTAsIDIzOCwgMjU0LCAKKyAgICA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDgsIDU0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDEyNCwgMjE3LCA4OCwgCisgICAgMjM1LCA1NiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMTQsIDE1MywgMjE0LCAxOSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKKyAgICAyMjQsIDI4LCAyMTQsIDE1MywgNzQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTIwLCAyMTcsIDg4LCAyMjYsIDEyMywgCisgICAgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDgsIDY2LCAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAKKyAgICAxMjAsIDI1MCwgMjM4LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0OCwgNjUsIDI1NCwgNjYsIDI0MywgCisgICAgMjI1LCAxNiwgMTIwLCAyMTcsIDg4LCAyMzUsIDU2LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI0NiwgMTA0LCAyMTQsIDE5LCAKKyAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0NiwgMTA0LCA3NCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjMsIAorICAgIDI1MywgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ4LCA1NSwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgCisgICAgMjI1LCAxNiwgMjQ3LCAyNDksIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIzNSwgNTcsIDIxNCwgMTgzLCAKKyAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1MCwgMzYsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDEyMCwgCisgICAgMjIwLCA1LCAyMzUsIDU2LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyMywgMjUzLCAyMjQsIDI3LCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDI1MCwgMzYsIDIxOCwgMTU2LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0OSwgMjI2LCAKKyAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDEyMCwgMjE3LCA4OCwgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI0OCwgCisgICAgNjYsIDI0OCwgMSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMTgsIDE1NywgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgCisgICAgMTYsIDIzNSwgNTcsIDI0OCwgMSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTAsIDM2LCAyNDgsIDEsIDI1NCwgNjYsIAorICAgIDI0MywgMjI1LCAxNiwgMTI0LCAyMjAsIDUsIDIxOCwgMTM1LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDQzLCAyMjAsIDUsIAorICAgIDIxOCwgMTM1LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxNiwgODksIDI0OCwgMSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKKyAgICAyNDIsIDEzMCwgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI0OSwgMjIwLCAxMzAsIDI1NCwgNjYsIDI0MywgCisgICAgMjI1LCAxNiwgMjQ4LCA2NiwgMTgyLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxMCwgMzQsIDI1NCwgNjYsIDI0MywgMjI1LCAKKyAgICAxNiwgMjE4LCAxMzYsIDE4MiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjAsIDE1MSwgMjE0LCAxODMsIDI1NCwgNjYsIAorICAgIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjI4LCA1MiwgMjQ1LCA5OSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAKKyAgICAyMjQsIDEyLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDEyNCwgMjUwLCAyMzksIDE4MiwgMjU0LCA2NiwgMjQzLCAyMjUsIAorICAgIDE2LCAxMjAsIDI1MCwgMjM5LCAxODIsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjM1LCAxODUsIDI1NCwgNjYsIDI0MywgCisgICAgMjI1LCAxNiwgMjIzLCAzNywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjYsIDIwMSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKKyAgICAyNTQsIDE0NCwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ1LCAxMDEsIDIxNCwgMTgzLCAyNTQsIDY2LCAKKyAgICAyNDMsIDIyNSwgMTYsIDIzNSwgMTg2LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjYsIDIwMiwgMjE0LCAKKyAgICAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjU0LCAxNDMsIDIyOCwgNTIsIDI1MCwgMTMwLCA3OCwgNDQsIDI1NCwgCisgICAgMTEwLCAyLCAyNDYsIDEwNCwgMjEwLCAzNSwgNzQsIDIxOSwgMjM1LCAyMDQsIDI1MSwgMTYzLCAyNTIsIDQ1LCA4NywgNjcsIAorICAgIDIzMiwgMjE0LCAyLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDIzNSwgMjE2LCA4NywgMjQ5LCAxODMsIDIxNCwgMTgxLCA4NywgCisgICAgMjQ3LCAxODksIDIxNCwgMTgxLCA4NywgMjQ1LCAxNTQsIDg3LCAyNDksIDIxMCwgODcsIDcxLCA0MiwgMiwgMjUwLCAxNzUsIAorICAgIDY3LCAyMzIsIDIxMywgMjQ1LCAxMzAsIDg3LCAyNTQsIDEzOSwgMjM0LCAxMzksIDg3LCAyNDEsIDIxMywgODcsIDM3LCAKKyAgICAyMDMsIDI1MiwgMTQxLCAyLCAyMjgsIDUwLCAzNywgMjE1LCAyMjYsIDI0NiwgMTA2LCAyNTEsIDEzNSwgMjUwLCAzNiwgMiwgCisgICAgMjI4LCA1NCwgNzQsIDIxNCwgMTc5LCA4NywgMjMwLCAxMzcsIDg3LCAyNDAsIDE2NCwgODcsIDIyNiwgMTc0LCAyNDIsIDU5LCAKKyAgICA4NywgMjI2LCAxNzQsIDIzMywgMTQ3LCA4NywgMjI1LCAyNDQsIDg3LCAyMjUsIDI0MywgODcsIDI0NywgMTk3LCAyNDksIAorICAgIDk3LCAxNiwgMjQ0LCAyMCwgMTA1LCAyMTksIDUwLCA4NywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI3LCAyNDgsIAorICAgIDgzLCAyMjAsIDEzOCwgMjM0LCAxMzksIDg3LCAyMjQsIDE5MiwgMjI2LCA3NSwgMjI5LCA4MiwgMjI2LCA3NSwgMjI0LCAKKyAgICAxODgsIDIyMSwgMTg5LCA4NywgMjUwLCAxNywgMjIxLCAxODksIDg3LCA0MywgMjI2LCA0LCAyMTQsIDE2MCwgMTAzLCA0MywgCisgICAgMjI2LCA0LCAyNDUsIDIxLCA0MywgMjI2LCA0LCAyMzIsIDEwOCwgMTAzLCA0NCwgMjI2LCA0LCAyMTQsIDE2MCwgMTAzLCAKKyAgICA0NCwgMjI2LCA0LCAyNDUsIDIxLCA0NCwgMjI2LCA0LCAyMzIsIDEwOCwgMTAzLCA0MywgNDIsIDI1MSwgMTU4LCAyMTQsIAorICAgIDE2MCwgMjQ5LCAxNjAsIDQzLCA0MiwgMjUxLCAxNTgsIDI0NSwgMjEsIDQzLCA0MiwgMjUxLCAxNTgsIDIzMiwgMTA4LCAKKyAgICAyNDksIDE2MCwgNDQsIDQyLCAyNTEsIDE1OCwgMjE0LCAxNjAsIDI0OSwgMTYwLCA0NCwgNDIsIDI1MSwgMTU4LCAyNDUsIAorICAgIDIxLCA0NCwgNDIsIDI1MSwgMTU4LCAyMzIsIDEwOCwgMjQ5LCAxNjAsIDQzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjE0LCAKKyAgICAxNjAsIDEwMywgNDMsIDI0OSwgOTksIDI1MSwgMTU4LCAyMzAsIDIyNCwgMjI1LCAxMDEsIDQzLCAyNDksIDk5LCAyNTEsIAorICAgIDE1OCwgMjMyLCAxMDgsIDEwMywgMjQ5LCA5OSwgMjUxLCAxNTgsIDI0NSwgMjEsIDQ0LCAyNDksIDk5LCAyNTEsIDE1OCwgCisgICAgMjE0LCAxNjAsIDEwMywgNDQsIDI0OSwgOTksIDI1MSwgMTU4LCAyMzAsIDIyNCwgMjI1LCAxMDEsIDQ0LCAyNDksIDk5LCAKKyAgICAyNTEsIDE1OCwgMjMyLCAxMDgsIDEwMywgMjM1LCAyMTIsIDI0NSwgMjEsIDIwMywgMjMyLCAyMTQsIDI0NSwgMjEsIDIxNCwgCisgICAgMTYwLCA0MywgMTc3LCAyMzIsIDEwOCwgNDQsIDI0OSwgOTksIDI1MSwgMTU4LCAyMjEsIDE3MiwgMjE0LCAxNjAsIDQ0LCAKKyAgICAxNzcsIDIzMiwgMTA4LCA0MywgMjQ5LCA5OSwgMjUxLCAxNTgsIDIyMSwgMTcyLCAyMTgsIDQxLCAyMTYsIDEzLCAyMTgsIAorICAgIDQxLCAyNTEsIDE3NCwgMjE2LCAxNCwgNDIsIDEyNywgMjUxLCAxNzUsIDQyLCAxMjcsIDI1MSwgMTc1LCA0MiwgMjUxLCAKKyAgICAxNTgsIDExNywgMjE2LCAxNCwgNDIsIDEyNywgMzQsIDE2LCAyNTEsIDE3NCwgNDMsIDY3LCA5MywgMjMyLCAyMTMsIDQ0LCAKKyAgICA2NywgOTMsIDIzMiwgMjEzLCAyMDMsIDIyMSwgMjA1LCAyMzIsIDIxMiwgMjAzLCAyMjEsIDIwNSwgMjMyLCAyMTEsIDIwMywgCisgICAgMjIxLCAyMDUsIDIzMiwgMjEwLCAyMDMsIDIyMSwgMjA1LCAyMzIsIDIwOSwgMjQ4LCA0NiwgMTYsIDE5MiwgNjcsIDIyLCAKKyAgICAyMTYsIDE0LCAyMjIsIDI1MSwgMjQ4LCA0NiwgMTYsIDE5MiwgNjcsIDIyLCAyNTEsIDE3NSwgMjIyLCAyNTEsIDI0OCwgNDYsIAorICAgIDE2LCAxOTIsIDY3LCAyLCAyNTAsIDM1LCAyNDgsIDQ2LCAxNiwgMTkyLCAxMjQsIDIyLCAyMDMsIDIsIDI1MCwgMzUsIDI0OCwgCisgICAgNDYsIDE2LCAxOTIsIDEyMCwgMjIsIDIwMywgMiwgMjUwLCAzNSwgMjQ4LCA0NiwgMTYsIDE5MiwgNjcsIDIsIDIxNSwgMjI1LCAKKyAgICAyNDgsIDQ2LCAxNiwgMTkyLCAxMjQsIDIyLCAyMDMsIDIsIDIxNSwgMjI1LCAyNDgsIDQ2LCAxNiwgMTkyLCAxMjAsIDIyLCAKKyAgICAyMDMsIDIsIDIxNSwgMjI1LCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIDIxMiwgMzUsIDI0OCwgNDYsIDE2LCAxOTIsIAorICAgIDEyNCwgMjIsIDIwMywgMiwgMjEyLCAzNSwgMjQ4LCA0NiwgMTYsIDE5MiwgMTIwLCAyMiwgMjAzLCAyLCAyMTIsIDM1LCAKKyAgICAyNDgsIDQ2LCAxNiwgMTkyLCAxMjQsIDIyLCAyNDEsIDQ0LCAyNDgsIDQ2LCAxNiwgMTkyLCAxMjAsIDIyLCAyNDEsIDQ0LCAKKyAgICAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIDIxNiwgMTQsIDIzMywgNDYsIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgCisgICAgMjUxLCAxNzUsIDIzMywgNDYsIDQyLCAyNDQsIDMyLCAyMjMsIDU0LCA4NywgMjQ1LCAxODIsIDg3LCA2NywgMjMyLCAyMTQsIAorICAgIDI0NSwgMjEsIDIzMSwgMzMsIDI1MSwgMTQ2LCAyMzEsIDMzLCAxOTksIDExNywgMjE5LCAyNTAsIDIzMSwgMzMsIDIxOSwgCisgICAgMjUxLCAxMTcsIDIzMiwgMTM3LCAyMzEsIDMzLCAxOTksIDExNywgMTEzLCAyMTksIDIzNywgMjMxLCAzMywgMTEzLCAyMTksIAorICAgIDIzOCwgMTE3LCAyMzIsIDEzNywgMjMxLCAzMywgMTEzLCAyMTksIDIzOCwgMjM1LCA2NCwgMjMxLCAzMywgMjE1LCAyMDgsIAorICAgIDIzMSwgMzMsIDIxNiwgMjIzLCAyMzEsIDMzLCAyMjUsIDE4OCwgMjQ1LCAyMjQsIDI0MiwgMTIyLCAyNDMsIDIxOSwgMjE2LCAKKyAgICAxNCwgMjI2LCAzLCAyNTEsIDE3NSwgMjI2LCAzLCAyMTYsIDE0LCAyNDksIDk5LCAxMjcsIDI1MSwgMTc1LCAyNDksIDk5LCAKKyAgICAxMjcsIDIxNiwgMTQsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCAyNTEsIDE3NSwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDcxLCAKKyAgICAyMTUsIDIzOSwgMjUyLCAzNSwgMjIyLCAyMzQsIDIsIDI1MCwgMzUsIDIxOCwgMTIwLCAyNDQsIDY0LCAyNTUsIDE3LCAyNDksIAorICAgIDk2LCAyNDUsIDE3MSwgMjM1LCAxOTgsIDI0OCwgODMsIDI0NSwgMjQsIDg3LCA4NSwgMjIyLCAyNDcsIDUyLCAyMTUsIDIyNSwgCisgICAgODUsIDIzMywgNDIsIDUyLCAyMTUsIDIyNSwgODUsIDIxNCwgMTYyLCA1MiwgMjE1LCAyMjUsIDg1LCAyNDYsIDEwNSwgNTIsIAorICAgIDIxNSwgMjI1LCA4NSwgMjIyLCAyNDcsIDUyLCAyMTUsIDIyNiwgMiwgNjcsIDEzMCwgODUsIDIzMywgNDIsIDUyLCAyMTUsIAorICAgIDIyNiwgMiwgNjcsIDEzMCwgODUsIDIyMiwgMjQ3LCAyMTUsIDIyNiwgMiwgNTIsIDY3LCAxMzAsIDI1NCwgMTczLCAyNTAsIAorICAgIDMsIDIxOCwgMTI2LCAyMTYsIDg2LCAyNTAsIDMsIDI0MCwgMjM3LCAyLCAyNDQsIDUwLCAyMjEsIDI0MSwgMTYsIDMxLCAKKyAgICAyMjcsIDIwMiwgMTYsIDMxLCAyMTgsIDE1MiwgNjQsIDI0MSwgMjMzLCAxNiwgMzEsIDIxOCwgMTUyLCA2NCwgMjE2LCAyMTIsIAorICAgIDE2LCAzMSwgMjQ1LCAxNDMsIDY0LCAyMTYsIDIxMiwgMTYsIDMxLCAyNDUsIDE0MywgNjQsIDIxNSwgMjQzLCAxNiwgMzEsIAorICAgIDI0NSwgMTMyLCAxNiwgMzEsIDI1NSwgNywgMTYsIDMxLCAyNTIsIDQ0LCAxNiwgMzEsIDI1MiwgMTc5LCAxNiwgMzEsIDIwMywgCisgICAgMjE3LCA4OSwgMTYsIDMxLCAyMzIsIDIxNCwgMjQ0LCAxNDUsIDE2LCAzMSwgNjcsIDIxNywgODksIDE2LCAzMSwgMjQ0LCAKKyAgICAyMCwgMjQ0LCAxNDUsIDE2LCAzMSwgMjUwLCAyMzAsIDIyMywgNTMsIDE2LCAzMSwgMjIwLCAyOCwgMjI2LCAxMzAsIDE2LCAKKyAgICAzMSwgMjIwLCAyOCwgMjM1LCAyNTUsIDE2LCAzMSwgMjQ4LCAxNTEsIDIzMiwgMjA0LCAyNDUsIDc3LCAxNiwgMzEsIDI0OCwgCisgICAgMzEsIDI0OSwgMTc4LCAxMTAsIDE2LCAzMSwgMjQ4LCAzMSwgMjQ5LCAxNzgsIDEwNSwgMTYsIDMxLCAyNDgsIDMxLCAyNDksIAorICAgIDE3OCwgMTU4LCAxNiwgMzEsIDI0OCwgMzEsIDI0OSwgMTc4LCAxNjEsIDE2LCAzMSwgMTUyLCAyNTUsIDcsIDE2LCAzMSwgCisgICAgMjE3LCAxNzcsIDIzNiwgNjIsIDE2LCAzMSwgMjQ1LCAxNDMsIDY0LCAyMTUsIDI0NCwgMjUxLCAyMTMsIDE2LCAzMSwgMjUxLCAKKyAgICA1LCAxNiwgMzEsIDI0NSwgMTQzLCA2NCwgMjMxLCA4MSwgMTYsIDMxLCAyMTgsIDYxLCAxNiwgMzEsIDI0NSwgNzcsIDE2LCAKKyAgICAzMSwgMjQ0LCAxMDcsIDIyMCwgMTM3LCAxNiwgMzEsIDI0MiwgMTIxLCAyMjAsIDEzNywgMTYsIDMxLCAyMjMsIDEyMSwgCisgICAgMjIwLCAxMzcsIDE2LCAzMSwgMjE0LCAxNzQsIDIyMCwgMTM3LCAxNiwgMzEsIDIxOSwgMTgsIDE2LCAzMSwgMjQ4LCA2MywgCisgICAgMjUxLCAyMTYsIDg3LCAyMDQsIDI1MSwgMTYzLCAxNiwgMzEsIDIyOSwgODUsIDE2LCAzMSwgMjQ4LCA2NCwgMjQ0LCAyMCwgCisgICAgMTA1LCAxNiwgMzEsIDIxOCwgNjIsIDI0NCwgMjAsIDEwNSwgMjI2LCAyNDEsIDEwMywgMjI2LCAyNDEsIDI1MCwgMTUyLCAKKyAgICAyMjYsIDI0MSwgMjQ0LCAyMywgMjI2LCAyNDEsIDIzNSwgMTkzLCAyNDQsIDIzLCAyMjYsIDI0MSwgMjUyLCA0MiwgMjUxLCAKKyAgICAxMjQsIDIyNiwgMjQxLCAyNTEsIDE3MCwgMjE2LCAxMTEsIDIyNiwgMjQxLCAyNTEsIDE1NSwgMjUyLCAxNDYsIDI0MCwgCisgICAgMTAzLCAyMjYsIDI0MSwgMjU0LCAxMjcsIDY0LCAyNTAsIDEyOSwgMjI2LCAyNDEsIDI0OCwgMTU2LCAyMjYsIDI0MSwgMjQ5LCAKKyAgICA4NywgMjU1LCAxMSwgMjI3LCAyMDAsIDIyNiwgMjQxLCA1MiwgMjUyLCAxODAsIDM3LCAyMSwgMTEwLCAzNywgMjEsIDEwNSwgCisgICAgMzcsIDIxLCAxNTgsIDM3LCAyMSwgMTYxLCAzNywgMjEsIDE4OSwgMzcsIDIxLCAxOTQsIDM3LCAyMSwgMTk4LCAzNywgMjEsIAorICAgIDE5NSwgMzcsIDIxLCAyMDAsIDM3LCA1NCwgMjE2LCAyNDcsIDM3LCA1NCwgMjQ1LCAxNjcsIDM3LCA1NCwgMjE1LCA3NiwgCisgICAgMzcsIDU0LCAyMTYsIDE2NCwgMzcsIDU0LCAyNDQsIDUsIDM3LCA1NCwgMjQ0LCAxMTgsIDM3LCA1NCwgMjE5LCAxMTksIDM3LCAKKyAgICA1NCwgMjIwLCAxMTksIDM3LCA1NCwgMjQ1LCAxOTAsIDM3LCA1NCwgMjI4LCAxOTcsIDM3LCA1NCwgMjE1LCA3MywgODgsIAorICAgIDIxLCAxMTAsIDg4LCAyMSwgMTA1LCA4OCwgMjEsIDE1OCwgODgsIDIxLCAxNjEsIDg4LCAyMSwgMTg5LCA4OCwgMjEsIDE5NCwgCisgICAgODgsIDIxLCAxOTgsIDg4LCAyMSwgMTk1LCA4OCwgMjEsIDIwMCwgODgsIDU0LCAyMTYsIDI0NywgODgsIDU0LCAyNDUsIAorICAgIDE2NywgODgsIDU0LCAyMTUsIDc2LCA4OCwgNTQsIDIxNiwgMTY0LCA4OCwgNTQsIDI0NCwgNSwgODgsIDU0LCAyNDQsIDExOCwgCisgICAgODgsIDU0LCAyMTksIDExOSwgODgsIDU0LCAyMjAsIDExOSwgODgsIDU0LCAyNDUsIDE5MCwgODgsIDU0LCAyMjgsIDE5NywgCisgICAgODgsIDU0LCAyMTUsIDczLCAyMSwgMTIzLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAxMTMsIDI0MywgMjI5LCAyMTgsIAorICAgIDEyOSwgMjEsIDEzNCwgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjQ0LCAxMSwgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgCisgICAgMjQ0LCA4MSwgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjE5LCAxMjUsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDIyMCwgCisgICAgMTIyLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyNDUsIDE5MywgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjI4LCAyMDAsIAorICAgIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDIxNiwgMjQ4LCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyNDUsIDE2OCwgMjQzLCAKKyAgICAyMjksIDIxOCwgMTI5LCA1NCwgMjE1LCA3NywgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjE2LCAxNjUsIDI0MywgMjI5LCAKKyAgICAyMTgsIDEyOSwgNTQsIDI0NCwgNiwgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjQ0LCAxMTksIDI0MywgMjI5LCAyMTgsIAorICAgIDEyOSwgNTQsIDIxOSwgMTIwLCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyMjAsIDEyMCwgMjQzLCAyMjksIDIxOCwgMTI5LCAKKyAgICA1NCwgMjQ1LCAxOTEsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDIyOCwgMTk4LCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAKKyAgICAyMTUsIDc0LCAyNDMsIDIyOSwgMjE4LCAxMjksIDg4LCA3LCA0LCAxLCA2MSwgODgsIDcsIDQsIDEsIDI1MywgMTU4LCA4OCwgCisgICAgNywgNCwgMSwgMjUxLCA2NiwgODgsIDcsIDQsIDEsIDI0OSwgNjAsIDg4LCA3LCA0LCAxLCA3NSwgODgsIDcsIDQsIDEsIAorICAgIDI0NSwgNiwgODgsIDcsIDQsIDEsIDI0MywgMjAyLCA4OCwgNywgNCwgMSwgMjQyLCA2MCwgODgsIDcsIDQsIDEsIDczLCA4OCwgCisgICAgNywgNCwgMSwgMjM1LCAxNDQsIDg4LCA3LCA0LCAxLCAyMzUsIDIzLCA4OCwgNywgNCwgMSwgMTU2LCA4OCwgNywgNCwgMSwgCisgICAgMTkzLCA4OCwgNywgNCwgMSwgMjMwLCAyNSwgODgsIDcsIDQsIDEsIDc2LCA4OCwgNywgNCwgMSwgMjI2LCAxMDUsIDg4LCA3LCAKKyAgICA0LCAxLCAyMjQsIDk2LCA4OCwgNywgNCwgMSwgMTUzLCA4OCwgNywgNCwgMSwgMjIyLCA5MSwgODgsIDcsIDQsIDEsIDIxNywgCisgICAgMTUyLCA4OCwgNywgNCwgMSwgNzAsIDg4LCA3LCA0LCAxLCAyMTQsIDEwNSwgODgsIDcsIDQsIDEsIDIxMiwgOTgsIDg4LCA3LCAKKyAgICA0LCAxLCAyMTEsIDE3OCwgODgsIDcsIDQsIDEsIDIxMSwgMTE3LCA4OCwgNywgNCwgMSwgMjEwLCAxNTksIDM3LCA3LCA2LCAKKyAgICAxLCA2MSwgMzcsIDcsIDYsIDEsIDI1MywgMTU4LCAzNywgNywgNiwgMSwgMjUxLCA2NiwgMzcsIDcsIDYsIDEsIDI0OSwgNjAsIAorICAgIDM3LCA3LCA2LCAxLCA3NSwgMzcsIDcsIDYsIDEsIDI0NSwgNiwgMzcsIDcsIDYsIDEsIDI0MywgMjAyLCAzNywgNywgNiwgMSwgCisgICAgMjQyLCA2MCwgMzcsIDcsIDYsIDEsIDczLCAzNywgNywgNiwgMSwgMjM1LCAxNDQsIDM3LCA3LCA2LCAxLCAyMzUsIDIzLCAKKyAgICAzNywgNywgNiwgMSwgMTU2LCAzNywgNywgNiwgMSwgMTkzLCAzNywgNywgNiwgMSwgMjMwLCAyNSwgMzcsIDcsIDYsIDEsIAorICAgIDc2LCAzNywgNywgNiwgMSwgMjI2LCAxMDUsIDM3LCA3LCA2LCAxLCAyMjQsIDk2LCAzNywgNywgNiwgMSwgMTUzLCAzNywgNywgCisgICAgNiwgMSwgMjIyLCA5MSwgMzcsIDcsIDYsIDEsIDIxNywgMTUyLCAzNywgNywgNiwgMSwgNzAsIDM3LCA3LCA2LCAxLCAyMTQsIAorICAgIDEwNSwgMzcsIDcsIDYsIDEsIDIxMiwgOTgsIDM3LCA3LCA2LCAxLCAyMTEsIDE3OCwgMzcsIDcsIDYsIDEsIDIxMSwgMTE3LCAKKyAgICAzNywgNywgNiwgMSwgMjEwLCAxNTksIDM3LCA3LCA0LCAxLCA2MSwgMzcsIDcsIDQsIDEsIDI1MywgMTU4LCAzNywgNywgNCwgCisgICAgMSwgMjUxLCA2NiwgMzcsIDcsIDQsIDEsIDI0OSwgNjAsIDM3LCA3LCA0LCAxLCA3NSwgMzcsIDcsIDQsIDEsIDI0NSwgNiwgCisgICAgMzcsIDcsIDQsIDEsIDI0MywgMjAyLCAzNywgNywgNCwgMSwgMjQyLCA2MCwgMzcsIDcsIDQsIDEsIDczLCAzNywgNywgNCwgCisgICAgMSwgMjM1LCAxNDQsIDM3LCA3LCA0LCAxLCAyMzUsIDIzLCAzNywgNywgNCwgMSwgMTU2LCAzNywgNywgNCwgMSwgMTkzLCAKKyAgICAzNywgNywgNCwgMSwgMjMwLCAyNSwgMzcsIDcsIDQsIDEsIDc2LCAzNywgNywgNCwgMSwgMjI2LCAxMDUsIDM3LCA3LCA0LCAKKyAgICAxLCAyMjQsIDk2LCAzNywgNywgNCwgMSwgMTUzLCAzNywgNywgNCwgMSwgMjIyLCA5MSwgMzcsIDcsIDQsIDEsIDIxNywgCisgICAgMTUyLCAzNywgNywgNCwgMSwgNzAsIDM3LCA3LCA0LCAxLCAyMTQsIDEwNSwgMzcsIDcsIDQsIDEsIDIxMiwgOTgsIDM3LCA3LCAKKyAgICA0LCAxLCAyMTEsIDE3OCwgMzcsIDcsIDQsIDEsIDIxMSwgMTE3LCAzNywgNywgNCwgMSwgMjEwLCAxNTksIDM3LCAyMSwgCisgICAgMjEwLCA4NiwgMTUyLCAzNywgNTQsIDI0NSwgMTY3LCAxNTIsIDM3LCA1NCwgMjE1LCA3NiwgMTUyLCAzNywgNTQsIDIxNiwgCisgICAgMTY0LCAxNTIsIDM3LCA1NCwgMjQ0LCA1LCAxNTIsIDM3LCA1NCwgMjQ0LCAxMTgsIDE1MiwgMzcsIDU0LCAyMTksIDExOSwgCisgICAgMTUyLCAzNywgNTQsIDIyMCwgMTE5LCAxNTIsIDM3LCA1NCwgMjQ1LCAxOTAsIDE1MiwgMzcsIDU0LCAyMjgsIDE5NywgMTUyLCAKKyAgICAzNywgNTQsIDIxNSwgNzMsIDUyLCAzNywgMjEsIDExMCwgNTIsIDM3LCAyMSwgMTA1LCA1MiwgMzcsIDIxLCAxNTgsIDUyLCAKKyAgICAzNywgMjEsIDE2MSwgNTIsIDM3LCAyMSwgMTg5LCA1MiwgMzcsIDIxLCAxOTQsIDUyLCAzNywgMjEsIDE5OCwgNTIsIDM3LCAKKyAgICAyMSwgMTk1LCA1MiwgMzcsIDIxLCAyMDAsIDUyLCAzNywgNTQsIDIxNiwgMjQ3LCAxNTIsIDM3LCAyMSwgMjEwLCA4NiwgOTMsIAorICAgIDk5LCAxOTIsIDI0MSwgNDQsIDkzLCA5OSwgMTE0LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjEzLCAyMzksIDkzLCA5OSwgCisgICAgMTE0LCAyMTMsIDIzOSwgOTMsIDk5LCAxOTIsIDIxNSwgMjExLCAyNDgsIDE1NywgMjQxLCA0NCwgOTMsIDk5LCAxMTQsIAorICAgIDIxNSwgMjExLCAyNDgsIDE1NywgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDIxNSwgMjExLCAyNDgsIDE1NywgMjEzLCAyMzksIAorICAgIDkzLCA5OSwgMTE0LCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDIxMywgMjM5LCA5MywgOTksIDE5MiwgMjI0LCAyNCwgMjQ4LCAKKyAgICAxNTcsIDI0MSwgNDQsIDkzLCA5OSwgMTE0LCAyMjQsIDI0LCAyNDgsIDE1NywgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDIyNCwgCisgICAgMjQsIDI0OCwgMTU3LCAyMTMsIDIzOSwgOTMsIDk5LCAxMTQsIDIyNCwgMjQsIDI0OCwgMTU3LCAyMTMsIDIzOSwgOTMsIDk5LCAKKyAgICAxOTIsIDEyNCwgMjIsIDIyMiwgMjUxLCA5MywgOTksIDEyNCwgMTkyLCAyMiwgNDQsIDI0MSwgMjIxLCA5MywgOTksIDEyNCwgCisgICAgMTE0LCAyMiwgNDQsIDIzMiwgMjMwLCA5MywgOTksIDExNCwgMTI0LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCAxMjQsIAorICAgIDIyLCAyMzMsIDQ2LCA5MywgOTksIDEyNCwgMTkyLCAyMiwgNDMsIDI0MSwgMjIxLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgCisgICAgNDMsIDIzMiwgMjMwLCA5MywgOTksIDExNCwgMTI0LCAyMiwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIDIyMiwgCisgICAgMjUxLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgNDQsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDQsIDIzMiwgCisgICAgMjMwLCA5MywgOTksIDExNCwgMTIwLCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCAxMjAsIDIyLCAyMzMsIDQ2LCA5MywgCisgICAgOTksIDEyMCwgMTkyLCAyMiwgNDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDMsIDIzMiwgMjMwLCA5MywgCisgICAgOTksIDExNCwgMTIwLCAyMiwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDY3LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgNjcsIAorICAgIDE5MiwgMjIsIDQ0LCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDQ0LCAxMjQsIDIzMiwgMjMwLCA5MywgOTksIAorICAgIDEyNCwgMTE0LCAyMiwgNDQsIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgNjcsIDExNCwgMjIsIDQ0LCAyMzIsIDIzMCwgOTMsIAorICAgIDk5LCAxMjQsIDE5MiwgMjIsIDQ0LCAxMjAsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgNDQsIDEyNCwgMjQxLCAKKyAgICAyMjEsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDIyMiwgMjUxLCA5MywgOTksIDE5MiwgNjcsIDIyLCAyMzMsIDQ2LCA5MywgOTksIAorICAgIDY3LCAxOTIsIDIyLCA0MywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0MywgMTI0LCAyMzIsIDIzMCwgOTMsIAorICAgIDk5LCAxMjQsIDExNCwgMjIsIDQzLCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDY3LCAxMTQsIDIyLCA0MywgMjMyLCAyMzAsIAorICAgIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCA0MywgMTIwLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDE5MiwgMjIsIDQzLCAxMjQsIAorICAgIDI0MSwgMjIxLCA5MywgOTksIDExNCwgNjcsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMTI0LCAyMiwgMjQxLCA0NCwgCisgICAgOTMsIDk5LCA0MywgMTE0LCAyMiwgNDQsIDEyNCwgMjMyLCAyMzAsIDkzLCA5OSwgNDQsIDExNCwgMjIsIDQzLCAxMjQsIAorICAgIDIzMiwgMjMwLCA5MywgOTksIDEyNCwgMTkyLCAyMiwgMjAzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDIwMywgCisgICAgMjMyLCAyMzAsIDkzLCA5OSwgNDQsIDE5MiwgMjIsIDQzLCAxMjQsIDI0MSwgMjIxLCA5MywgOTksIDQzLCAxOTIsIDIyLCAKKyAgICA0NCwgMTI0LCAyNDEsIDIyMSwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCAxMjAsIDIyLCAKKyAgICAyNDEsIDQ0LCA5MywgOTksIDQzLCAxMTQsIDIyLCA0NCwgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTE0LCAyMiwgNDMsIAorICAgIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAyMiwgCisgICAgMjAzLCAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTkyLCAyMiwgNDMsIDEyMCwgMjQxLCAyMjEsIDkzLCA5OSwgNDMsIDE5MiwgCisgICAgMjIsIDQ0LCAxMjAsIDI0MSwgMjIxLCA5MywgOTksIDExNCwgMTIwLCAyMiwgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDY3LCAKKyAgICAyMiwgMjQxLCA0NCwgOTMsIDk5LCA0MywgMTE0LCAyMiwgNDQsIDY3LCAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTE0LCAyMiwgCisgICAgNDMsIDY3LCAyMzIsIDIzMCwgOTMsIDk5LCA2NywgMTkyLCAyMiwgMjAzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgCisgICAgMjIsIDEyNCwgMjAzLCAyMzIsIDIzMCwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDEyMCwgMjAzLCAyMzIsIDIzMCwgOTMsIDk5LCAKKyAgICA2NywgMTE0LCAyMiwgMjAzLCAyMzIsIDIzMCwgOTMsIDk5LCA0MywgMTIwLCAxMTQsIDIyLCA0NCwgMTI0LCAyMzIsIDIzMCwgCisgICAgOTMsIDk5LCA0NCwgMTIwLCAxMTQsIDIyLCA0MywgMTI0LCAyMzIsIDIzMCwgOTMsIDk5LCA0MywgMTI0LCAxMTQsIDIyLCAKKyAgICA0NCwgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTI0LCAxMTQsIDIyLCA0MywgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCAKKyAgICAxMjQsIDE5MiwgMjIsIDEyMCwgMjAzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDE5MiwgMjIsIDEyNCwgMjAzLCAyNDEsIAorICAgIDIyMSwgOTMsIDk5LCA0NCwgMTkyLCAyMiwgNDMsIDY3LCAyNDEsIDIyMSwgOTMsIDk5LCA0MywgMTkyLCAyMiwgNDQsIDY3LCAKKyAgICAyNDEsIDIyMSwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDUyLCAyNDgsIDE1NywgMjQxLCAKKyAgICA0NCwgOTMsIDk5LCAxMTQsIDUyLCAyNDgsIDE1NywgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDUyLCAyNDgsIDE1NywgMjEzLCAKKyAgICAyMzksIDkzLCA5OSwgMTE0LCA1MiwgMjQ4LCAxNTcsIDIxMywgMjM5LCA5MywgOTksIDUyLCAyNDEsIDQ0LCA5MywgOTksIAorICAgIDUyLCAyMTMsIDIzOSwgOTMsIDk5LCAxMjQsIDIxOSwgMTU1LCAyMiwgNDQsIDI0NiwgMTEzLCA5MywgOTksIDEyNCwgNTIsIAorICAgIDIyLCA0NCwgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIDIyMiwgMjUxLCA5MywgOTksIDEyNCwgMjE5LCAxNTUsIAorICAgIDIyLCA0MywgMjQ2LCAxMTMsIDkzLCA5OSwgMTI0LCA1MiwgMjIsIDQzLCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgMTI0LCAyMiwgCisgICAgMjMzLCA0NiwgOTMsIDk5LCAxMjAsIDIxOSwgMTU1LCAyMiwgNDQsIDI0NiwgMTEzLCA5MywgOTksIDEyMCwgNTIsIDIyLCAKKyAgICA0NCwgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDEyMCwgMjIsIDIyMiwgMjUxLCA5MywgOTksIDEyMCwgMjE5LCAxNTUsIDIyLCAKKyAgICA0MywgMjQ2LCAxMTMsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIDQzLCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgMTIwLCAyMiwgCisgICAgMjMzLCA0NiwgOTMsIDk5LCA2NywgMjE5LCAxNTUsIDIyLCA0NCwgMjQ2LCAxMTMsIDkzLCA5OSwgNjcsIDUyLCAyMiwgNDQsIAorICAgIDIxOSwgMTU0LCA5MywgOTksIDUyLCA2NywgMjIsIDIyMiwgMjUxLCA5MywgOTksIDY3LCAyMTksIDE1NSwgMjIsIDQzLCAKKyAgICAyNDYsIDExMywgOTMsIDk5LCA2NywgNTIsIDIyLCA0MywgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDY3LCAyMiwgMjMzLCA0NiwgCisgICAgOTMsIDk5LCAxMjQsIDIxOSwgMTU1LCAyMiwgMjAzLCAyNDYsIDExMywgOTMsIDk5LCAxMjQsIDUyLCAyMiwgMjAzLCAyMTksIAorICAgIDE1NCwgOTMsIDk5LCA1MiwgMTI0LCAyMiwgMjQxLCA0NCwgOTMsIDk5LCAxMjAsIDIxOSwgMTU1LCAyMiwgMjAzLCAyNDYsIAorICAgIDExMywgOTMsIDk5LCAxMjAsIDUyLCAyMiwgMjAzLCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgMTIwLCAyMiwgMjQxLCA0NCwgCisgICAgOTMsIDk5LCA2NywgMjE5LCAxNTUsIDIyLCAyMDMsIDI0NiwgMTEzLCA5MywgOTksIDY3LCA1MiwgMjIsIDIwMywgMjE5LCAKKyAgICAxNTQsIDkzLCA5OSwgNTIsIDY3LCAyMiwgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDI1NCwgMjYsIDEyNCwgMjIsIDIyMiwgCisgICAgMjUxLCA5MywgOTksIDE5MiwgMjU0LCAyNiwgMTI0LCAyMiwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDI1NCwgMjYsIDEyMCwgCisgICAgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAyNTQsIDI2LCAxMjAsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDI0NywgCisgICAgMjU1LCAyMTQsIDE2MCwgNDQsIDIxNiwgNDIsIDIzMiwgMTA4LCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMjQ3LCAyNTUsIAorICAgIDIxNCwgMTYwLCA0MywgMjE2LCA0MiwgMjMyLCAxMDgsIDIyMiwgMjUxLCA5MywgOTksIDE5MiwgMjQ3LCAyNTUsIDI0OSwgCisgICAgMTMwLCA5MywgOTksIDE5MiwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDIxNCwgMTYzLCA5MywgOTksIDE5MiwgMjIyLCAyNTEsIAorICAgIDkzLCA5OSwgMTkyLCAyNDYsIDEwNiwgOTMsIDk5LCAxMTQsIDIzMywgNDYsIDkzLCA5OSwgMTE0LCAyMTQsIDE2MywgOTMsIAorICAgIDk5LCAxMTQsIDIyMiwgMjUxLCA5MywgOTksIDExNCwgMjQ2LCAxMDYsIDkzLCA5OSwgMTkyLCA0MywgMjIsIDExNCwgMjIyLCAKKyAgICAyNTEsIDkzLCA5OSwgMTkyLCAxMjAsIDIyLCAxMTQsIDI0NiwgMTA2LCA5MywgOTksIDExNCwgNDMsIDIyLCAxOTIsIDIyMiwgCisgICAgMjUxLCA5MywgOTksIDExNCwgMTIwLCAyMiwgMTkyLCAyNDYsIDEwNiwgMjE0LCAxNjAsIDE2MywgMjUxLCAyMTMsIDIzMiwgCisgICAgMTA4LCAxMjMsIDI0NSwgMTg5LCAyNTEsIDIxMywgMjMyLCAxMDgsIDEyMywgMjI0LCAyMiwgMjUxLCAyMTMsIDIzMiwgMTA4LCAKKyAgICAxMzQsIDI0NSwgMTg3LCAyNTEsIDIxMywgMjMyLCAxMDgsIDE2MywgMjUxLCAyMTMsIDIzMiwgMTA4LCAyNDQsIDgxLCAyNDUsIAorICAgIDE4NywgMjUxLCAyMTMsIDIzMiwgMTA4LCAxMzQsIDIyNCwgMjAsIDI1MSwgMjEzLCAyMzIsIDEwOCwgMjIwLCAxMjIsIDI0NSwgCisgICAgMTg3LCAyNTEsIDIxMywgMjQzLCAyMjksIDI1MSwgMjEzLCA0MywgMjIwLCAxMjIsIDI0NSwgMTg3LCAyNTEsIDIxMywgNDMsIAorICAgIDEzNCwgMjI0LCAyMCwgMjUxLCAyMTMsIDQzLCAyNDQsIDgxLCAyNDUsIDE4NywgMjUxLCAyMTMsIDQzLCAxNjMsIDI1MSwgCisgICAgMjEzLCA0MywgMTM0LCAyNDUsIDE4NywgMjUxLCAyMTMsIDQzLCAxMjMsIDIyNCwgMjIsIDI1MSwgMjEzLCA0MywgMTIzLCAKKyAgICAyNDUsIDE4OSwgMjUxLCAyMTMsIDQ0LCAxNjMsIDI1MSwgMjEzLCAxOTIsIDIyMCwgOTIsIDIzMSwgODIsIDIyMCwgOTIsIAorICAgIDI0OCwgMTYyLCAyMjAsIDkyLCAyMTQsIDE2MCwgMTIzLCAyNDUsIDE4OSwgMjUxLCAyMTMsIDQ0LCAxMjMsIDI0NSwgMTg5LCAKKyAgICAyNTEsIDIxMywgMjI0LCAyNiwgMjMyLCAxMDgsIDIzMywgNDYsIDIyNCwgMjYsIDIzMiwgMTA4LCAyMjIsIDI1MSwgMjI0LCAKKyAgICAyNiwgMjE0LCAxNjAsIDIzMywgNDYsIDIyNCwgMjYsIDIxNCwgMTYwLCA0MywgMjIsIDIzMiwgMTA4LCA0MywgMjIsIDIzMiwgCisgICAgMTA4LCAyMjIsIDI1MSwgMjI0LCAyNiwgMjE0LCAxNjAsIDQzLCAyMiwgMjMyLCAxMDgsIDIyMiwgMjUxLCAyMjQsIDI2LCAKKyAgICAyMTQsIDE2MCwgNDMsIDIyLCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDEwOCwgMjMzLCA0NiwgMjI0LCAyNiwgMjE0LCAxNjAsIAorICAgIDQzLCAyMiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMDgsIDIyMiwgMjUxLCAyMjQsIDI2LCAyMTQsIDE2MCwgMjIyLCAKKyAgICAyNTEsIDIyNCwgMjYsIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTA4LCAyMzMsIDQ2LCAyMjQsIDI2LCAyMTQsIDE2MCwgNDQsIAorICAgIDIyLCAyMzIsIDEwOCwgNDMsIDIyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDg1LCAyMTgsIDIzNCwgNzEsIDIxOCwgMjM0LCA3MSwgCisgICAgNDIsIDIsIDIyMiwgMTgzLCAyNDksIDE1OSwgNzEsIDQyLCAyNDksIDE4NywgODUsIDQsIDIxOCwgMjM0LCA0MiwgMiwgMjAzLCAKKyAgICAyNDQsIDEwNSwgNDIsIDIsIDY3LCAyNDQsIDEwNSwgNDIsIDIsIDIyNiwgMTQ0LCAyNDksIDEyNiwgMjQ0LCAxMDUsIDQyLCAKKyAgICAyLCAyMTQsIDE2MCwgNDMsIDIxNiwgNDIsIDIzMiwgMTA4LCA0NCwgMjQ0LCAxMDUsIDQyLCAyLCAyMTQsIDE2MCwgNDQsIAorICAgIDIxNiwgNDIsIDIzMiwgMTA4LCA0MywgMjQ0LCAxMDUsIDQyLCAyLCAyNDcsIDI1NSwgMjQ5LCAxMjYsIDI0NCwgMTA1LCA4NSwgCisgICAgNCwgMjE4LCAyMzQsIDcxLCA0LCAyMTgsIDIzNCwgODUsIDIyMywgMTE2LCA3MSwgMjIzLCAxMTYsIDg1LCA2NywgMjIzLCAKKyAgICAxMTYsIDcxLCA2NywgMjIzLCAxMTYsIDg1LCAyMjYsIDYsIDcxLCAyMjYsIDYsIDg1LCAyMTQsIDE2MiwgMjE1LCAyMjUsIAorICAgIDcxLCAyMTQsIDE2MiwgMjE1LCAyMjUsIDg1LCAyMTQsIDE2MiwgNCwgMjE1LCAyMjUsIDcxLCAyMTQsIDE2MiwgNCwgMjE1LCAKKyAgICAyMjUsIDg1LCAyMjIsIDI0NywgMjE1LCAyMjUsIDcxLCAyMjIsIDI0NywgMjE1LCAyMjUsIDg1LCAyMjIsIDI0NywgNCwgCisgICAgMjE1LCAyMjUsIDcxLCAyMjIsIDI0NywgNCwgMjE1LCAyMjUsIDg1LCAyMjIsIDI0NywgMjI1LCA4LCA3MSwgMjIyLCAyNDcsIAorICAgIDIyNSwgOCwgODUsIDI0NiwgMTA1LCAyMTUsIDIyNSwgNzEsIDI0NiwgMTA1LCAyMTUsIDIyNSwgODUsIDI0NiwgMTA1LCA0LCAKKyAgICAyMTUsIDIyNSwgNzEsIDI0NiwgMTA1LCA0LCAyMTUsIDIyNSwgODUsIDIzMywgNDIsIDIxNSwgMjI1LCA3MSwgMjMzLCA0MiwgCisgICAgMjE1LCAyMjUsIDg1LCAyMzMsIDQyLCA0LCAyMTUsIDIyNSwgNzEsIDIzMywgNDIsIDQsIDIxNSwgMjI1LCA4NSwgMjMzLCAKKyAgICA0MiwgMjI1LCA4LCA3MSwgMjMzLCA0MiwgMjI1LCA4LCA4NSwgMjQ3LCAyNDgsIDcxLCAyNDcsIDI0OCwgNzEsIDI0NywgCisgICAgMjQ5LCAyNDksIDE4NywgODUsIDQsIDI0NywgMjQ4LCAyNDQsIDg5LCAyMzIsIDEwNCwgNzEsIDI1MCwgMzUsIDI0NiwgMTE4LCAKKyAgICAyNTAsIDM1LCAyNTAsIDM2LCAyLCA2NywgMjQ0LCAxMDUsIDI1MSwgMTExLCA4NSwgMjUwLCAzNSwgMjUwLCAzNiwgMiwgNDMsIAorICAgIDE2MywgMjUxLCAyMjEsIDI1MCwgMzYsIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCAyNTAsIDM2LCAyLCAyMzIsIDEwOCwgMTYzLCAKKyAgICAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDE2MywgMjUxLCAyMjEsIDI1MCwgMzYsIDIsIDIxNCwgMTYwLCA0NCwgCisgICAgMjI0LCAyNiwgMjUxLCAyMjEsIDI1MCwgMzYsIDIsIDI1NCwgMTU1LCAyNTEsIDg4LCAyMTQsIDE2MCwgNDMsIDIyNCwgMjYsIAorICAgIDI1MSwgMjIxLCA0MywgMTYzLCA4NSwgMjUwLCAzNSwgNDQsIDE2MywgODUsIDI1MCwgMzUsIDIzNSwgMTk0LCAyNTEsIDExMywgCisgICAgMjM1LCAxOTQsIDcxLCAyNTAsIDM1LCAyMTQsIDE2MCwgMTYzLCAyMzUsIDE5NCwgNzEsIDI1MCwgMzUsIDIzMiwgMTA4LCAKKyAgICAxNjMsIDIzNSwgMTk0LCA3MSwgMjUwLCAzNSwgMjE0LCAxNjAsIDQzLCAyMjQsIDI2LCAyNTAsIDMzLCAyNTQsIDI1LCAyMTQsIAorICAgIDE2MCwgNDQsIDIyNCwgMjYsIDI1MCwgMzMsIDI1NCwgMjUsIDIzMiwgMTA4LCA0NCwgMjI0LCAyNiwgMjUwLCAzMywgMjU0LCAKKyAgICAyNSwgMjMyLCAxMDgsIDQzLCAyMjQsIDI2LCAyNTAsIDMzLCAyNTQsIDI1LCAyMTQsIDE2MCwgMTYzLCAyNTAsIDM1LCAyMzIsIAorICAgIDEwOCwgMTYzLCAyNTAsIDM1LCA4NSwgMjMyLCAxMDgsIDQ0LCAyMTUsIDIyNSwgODUsIDIzMiwgMTA4LCA0MywgMjE1LCAKKyAgICAyMjUsIDg1LCAyMTQsIDE2MCwgNDMsIDIxNSwgMjI1LCA4NSwgMjE0LCAxNjAsIDQ0LCAyMTUsIDIyNSwgNzEsIDI1MSwgCisgICAgMTEzLCA0MiwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDQyLCAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDIxNCwgMTYwLCAKKyAgICA0MywgMjQ3LCAyNTUsIDE2MywgMjUxLCAyMjEsIDQyLCAyLCAyMzIsIDEwOCwgNDQsIDI0NywgMjU1LCAxNjMsIDI1MSwgCisgICAgMjIxLCA3MSwgNDIsIDIsIDY3LCAyNTEsIDIzMiwgMjMyLCAyMTMsIDcxLCAyMTQsIDE2MiwgMjE1LCAyMjYsIDIsIDI0NywgCisgICAgMTIwLCAyMTQsIDE2MiwgMjE1LCAyMjYsIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCAyMTQsIDE2MiwgMjE1LCAyMjYsIDIsIDQ0LCAKKyAgICAxNjMsIDI1MSwgMjIxLCAyMzMsIDg1LCAyNTAsIDM1LCA3MSwgNDIsIDIsIDIxNCwgMTYwLCA0MywgMjI0LCAyNSwgNzEsIAorICAgIDQyLCAyLCAyMzIsIDEwOCwgNDMsIDIyNCwgMjUsIDcxLCA0MiwgMiwgMjMyLCAxMDgsIDQ0LCAyMjQsIDI1LCA3MSwgNDIsIAorICAgIDIsIDIxNCwgMTYwLCA0NCwgMjI0LCAyNSwgNzEsIDI1MCwgMzYsIDIsIDIxNCwgMTYwLCA0MywgMjI0LCAyNSwgNzEsIDI1MCwgCisgICAgMzYsIDIsIDIzMiwgMTA4LCA0MywgMjI0LCAyNSwgNzEsIDI1MCwgMzYsIDIsIDIzMiwgMTA4LCA0NCwgMjI0LCAyNSwgNzEsIAorICAgIDI1MCwgMzYsIDIsIDIxNCwgMTYwLCA0NCwgMjI0LCAyNSwgMjE0LCAxNjAsIDQzLCAyMTUsIDIyNSwgMjE0LCAxNjAsIDQ0LCAKKyAgICAyMTUsIDIyNSwgMjMyLCAxMDgsIDQzLCAyMTUsIDIyNSwgNzEsIDIzMSwgODIsIDIxOCwgMjM0LCA4NSwgMjMxLCA4MiwgCisgICAgMjE4LCAyMzQsIDcxLCAyMzEsIDgyLCA0LCAyMTgsIDIzNCwgODUsIDIzMSwgODIsIDQsIDIxOCwgMjM0LCAyMzIsIDEwOCwgCisgICAgNDQsIDIxNSwgMjI1LCA4NSwgMjE4LCAzOCwgMiwgMjIzLCAxMzIsIDI0OSwgMjQ3LCAyMTQsIDE5NCwgMjE5LCA2MCwgMjQ5LCAKKyAgICAyMjIsIDg1LCAyMTgsIDE1NiwgNzEsIDIxOCwgMTU2LCAyMzIsIDIyOCwgMjE2LCAxMzIsIDIxOCwgMzcsIDI1MywgMjM0LCAKKyAgICAyMjgsIDcxLCAyNDgsIDM4LCAyMjgsIDcxLCAyNDksIDE5NSwgMjI2LCAxNjMsIDg1LCAyMTcsIDAsIDcxLCAyMTcsIDAsIAorICAgIDI1MiwgMTU2LCAyNTEsIDE2MywgMjUyLCAxNTYsIDkzLCAyLCAyNTAsIDEyOSwgMjUyLCAxNTYsIDkzLCAyLCAyMTEsIDE3OCwgCisgICAgMjIxLCAyNTQsIDIxNCwgMTk1LCAyLCAyMjMsIDE2MCwgMjQ2LCA4NCwgMjQwLCAyNDMsIDI1MiwgMjIsIDcxLCAyMjAsIDIsIAorICAgIDIyNSwgMTAxLCA4NSwgMjIwLCAyLCAyMjUsIDEwMSwgMjIwLCA4NywgMjIzLCA0OSwgMjIyLCAxODcsIDI0NCwgNTUsIDI0MSwgCisgICAgMjI4LCAyNTEsIDExMywgODUsIDQzLCAyMjUsIDcsIDIzNSwgMjQyLCA4NSwgNDQsIDIyNSwgNywgMjM1LCAyNDIsIDcxLCAKKyAgICA0MywgMjI1LCA3LCAyMzUsIDI0MiwgNzEsIDEyMCwgMjI1LCA3LCAyMzUsIDI0MiwgNzEsIDQ0LCAyMjUsIDcsIDIzNSwgCisgICAgMjQyLCA3MSwgMTI0LCAyMjUsIDcsIDIzNSwgMjQyLCAyMTksIDEwMSwgMjIsIDI0OSwgMTI5LCAyNTAsIDIxOSwgNTAsIAorICAgIDIyMywgMTcyLCA1MCwgMjUxLCAyMzksIDUwLCAyNTEsIDI1LCAyNTQsIDEwMiwgMjI2LCAxNDUsIDI0OSwgMTMwLCAyNTAsIAorICAgIDExMSwgMjIzLCAzNywgMjQ5LCAxMzEsIDY0LCAyMzIsIDExOCwgMjQ5LCAxMzEsIDY0LCAyMzUsIDExNiwgMjE4LCAxNTcsIAorICAgIDIyLCAyNDksIDEzNiwgMjQ0LCAxNjgsIDg3LCAyNTQsIDI0OCwgMjIwLCA4OSwgMjQyLCAyMiwgMjIsIDIxOSwgMTg5LCAKKyAgICAyMjUsIDIyMCwgODcsIDIxMCwgMjU0LCAyMTEsIDY5LCAyMTUsIDIxNSwgMzEsIDI0MSwgMjIzLCAyMTUsIDIxNSwgMzEsIAorICAgIDIzMywgMTA3LCAyMTUsIDIxNSwgMzEsIDI0NCwgOTYsIDIxNSwgMjE1LCAzMSwgMjE2LCAxMzMsIDIxNSwgMjE1LCAzMSwgCisgICAgMjExLCAyMzksIDIxNSwgMjE1LCAzMSwgMjEyLCA0MCwgMjE1LCAyMTUsIDMxLCAyMzAsIDExNSwgMjE1LCAyMTUsIDMxLCAKKyAgICAyNDUsIDIyMywgMjEyLCAxLCA2NCwgMjQ4LCAxOCwgNzEsIDI0MywgMjM5LCAyNDQsIDE5MCwgNzEsIDIxOSwgNzQsIDI0NCwgCisgICAgMTkwLCA4NSwgMjE5LCA3NCwgMjQ0LCAxOTAsIDcxLCAyMTgsIDM4LCAyLCAyMjMsIDEzMiwgMjQ0LCA5MiwgMjI0LCAyMiwgCisgICAgMjMwLCAxMjgsIDIzMywgODAsIDIyNCwgMjIsIDIzMCwgMTI4LCAyMzEsIDU0LCAyNDQsIDEzOCwgNTAsIDI0NSwgMjIzLCAKKyAgICAyMzEsIDE5MCwgNTAsIDIzNSwgMzgsIDIyMSwgMjIwLCAyMTQsIDE0NSwgMjI5LCA5MywgMjI1LCAyMCwgMjU0LCAxMiwgCisgICAgMjE3LCA0MCwgMjQzLCA1MiwgMjUxLCAzLCAyMzMsIDE5LCAyMTMsIDE1MCwgMjMyLCAyMzgsIDIyMSwgMTkxLCAyMjIsIDE5LCAKKyAgICAyNTAsIDI0OCwgMjU0LCA0MiwgMjI1LCA1MiwgNzEsIDI1MCwgMTE3LCAyMzQsIDc4LCA3MSwgMjUwLCAxMTcsIDIyNCwgMTQsIAorICAgIDcxLCAyNTAsIDExNywgMjIyLCAxOTUsIDcxLCAyNTAsIDExNywgMjUxLCAyMzEsIDcxLCAyNTAsIDExNywgMjM0LCAzMCwgCisgICAgNzEsIDI1MCwgMTE3LCAyMjUsIDIzMSwgODUsIDI1MCwgMTE3LCAyMzQsIDc4LCA4NSwgMjUwLCAxMTcsIDIyNCwgMTQsIDg1LCAKKyAgICAyNTAsIDExNywgMjIyLCAxOTUsIDg1LCAyNTAsIDExNywgMjUxLCAyMzEsIDg1LCAyNTAsIDExNywgMjM0LCAzMCwgODUsIAorICAgIDI1MCwgMTE3LCAyMjUsIDIzMSwgODUsIDIxOSwgMTYsIDIxOCwgNTAsIDcxLCAyNDEsIDIyOCwgMjE4LCA1MCwgNzEsIDI0NywgCisgICAgMjQ5LCAyMTgsIDUwLCA4NSwgMjQ5LCAyNDUsIDIxOCwgNTAsIDcxLCAyMTksIDE2LCAyMTgsIDUwLCA4NSwgMjQxLCAyMjgsIAorICAgIDIxOCwgNTAsIDg1LCAyNDcsIDI0OSwgMjE4LCA1MCwgNzEsIDI0OSwgMjQ1LCAyMTgsIDUwLCAyNDAsIDI0MywgMjE4LCAKKyAgICAyMzgsIDIyNCwgMjIsIDIyOCwgNDcsIDI0NSwgMTg5LCAyMjgsIDQ3LCAyNTIsIDczLCAyNDUsIDE4OSwgMjI4LCA0MiwgCisgICAgMjUyLCA3MywgMjE5LCAxMTgsIDIyOCwgNDIsIDIzMCwgNTcsIDI0NCwgNjYsIDUwLCAyMzAsIDU3LCAyMjksIDE4OCwgNTAsIAorICAgIDIzMCwgNTcsIDIyMCwgNzYsIDUwLCAyMTIsIDksIDE4OCwgMjQ5LCAxMzAsIDI0NSwgMjIwLCAxODgsIDI0OSwgMTMwLCAKKyAgICAyMTQsIDE3MSwgMjIzLCAxMTIsIDg3LCAyMjMsIDExMiwgMTYsIDMxLCAyMTUsIDQ4LCAyMjUsIDM0LCAyMjMsIDExMiwgMTYsIAorICAgIDMxLCAyMTUsIDQ3LCAyMjUsIDM0LCAyMjMsIDExMiwgMTYsIDMxLCAyMTUsIDQ2LCAyMjUsIDM0LCAyMjMsIDExMiwgMTYsIAorICAgIDMxLCAyMTUsIDQ1LCAyMjUsIDM0LCAyMjMsIDExMiwgMTYsIDMxLCAyMTUsIDQ0LCAyMjUsIDM0LCAyMjMsIDExMiwgMTYsIAorICAgIDMxLCAyMTUsIDQzLCAyMjUsIDM0LCAyMjMsIDExMiwgMTYsIDMxLCAyMTUsIDQyLCAyMjUsIDM0LCAyMjMsIDExMiwgMTYsIAorICAgIDMxLCAyNDMsIDUwLCAyMzEsIDEzOCwgODUsIDIxNCwgMTcxLCAyMjMsIDExMiwgODcsIDIyMywgMTEzLCAyMjYsIDIwLCA4NywgCisgICAgMjI1LCAyNTIsIDIyNiwgMjAsIDg3LCAyMjUsIDE3NCwgMjI2LCAyMCwgNTAsIDIxMSwgMjU1LCA4NywgMjQ3LCAyNDEsIAorICAgIDI0NCwgMTg5LCAyNDcsIDI0MSwgMjQ0LCAxODgsIDI0NywgMjQxLCAyNDQsIDE4NywgMjQ3LCAyNDEsIDI0NCwgMTg2LCAKKyAgICAyNDcsIDI0MSwgMjQ0LCAxODUsIDI0NywgMjQxLCAyNDQsIDE4NCwgNzEsIDI1MCwgMzYsIDIsIDU5LCAyMjIsIDI1MSwgNzEsIAorICAgIDI1MCwgMzYsIDIsIDExMywgMjQ3LCAxMTgsIDg1LCAyNTAsIDM2LCAyLCA3MSwgNTksIDIyMiwgMjUxLCA4NSwgMjUwLCAzNiwgCisgICAgMiwgMTEzLCA3MSwgMjQ3LCAxMTgsIDIzMCwgMTQyLCAzMSwgMjExLCA2OSwgMjMwLCAxNDIsIDMxLCAyMTAsIDI1MywgMjQ3LCAKKyAgICAyMjQsIDMxLCAyNDIsIDEzMSwgMjExLCA2OSwgMjQ3LCAyMjQsIDMxLCAyMzMsIDEzLCAyMTAsIDI1MywgMjQ3LCAyMjQsIAorICAgIDMxLCAyMzMsIDEzLCAyMTEsIDY5LCAyNDcsIDIyNCwgMzEsIDI0MiwgMTMxLCAyMTAsIDI1MywgNzEsIDI0NCwgNzMsIDg1LCAKKyAgICAyNDQsIDczLCAyNDIsIDIyLCAyMiwgMjI1LCAxMDQsIDI1NCwgMTIwLCAyNDksIDEyOCwgMjE3LCAyMzUsIDIxOCwgMTY0LCAKKyAgICA2NCwgMjU0LCAyMjYsIDIyMSwgMjA2LCAyNTQsIDE2OSwgMjQ0LCA1MSwgMjQzLCA2MCwgMjE4LCAxNjQsIDY0LCAyNDEsIAorICAgIDIwMiwgMjUzLCAxOTksIDg3LCAyNDQsIDYyLCAyMjYsIDEyNiwgNzEsIDIxOCwgMTU2LCAxMzQsIDIzMiwgMjA4LCAyNDksIAorICAgIDE3NSwgMjIyLCAyNTEsIDEzNCwgMjMyLCAyMDgsIDI0OSwgMTc1LCAyMzMsIDQ2LCAyMTIsIDUwLCA1MCwgMTI1LCAyMTMsIAorICAgIDEzMCwgNTAsIDI0NiwgMTEwLCAyNDQsIDEzOCwgNTAsIDI0NiwgMTEwLCAyMzEsIDE5MCwgNTAsIDIzNSwgMjAzLCAyNDQsIAorICAgIDEzOCwgMjIsIDIzMSwgMTkwLCA1MCwgMjMxLCAxOTAsIDIyLCAyNDQsIDEzOCwgNTAsIDIzMSwgMTkwLCAyLCAyMTgsIDEwMywgCisgICAgNTAsIDIzMSwgMTkwLCAyLCAyMTgsIDEwMywgMjIsIDIzMSwgMTkwLCAyMiwgMjQ0LCAxMzgsIDUwLCA2NywgMjMxLCAxOTAsIAorICAgIDIsIDIxOCwgMTAzLCA1MCwgMjAzLCAyMzEsIDE5MCwgMiwgMjE4LCAxMDMsIDUwLCAyMzEsIDgyLCA3MSwgMjUwLCAzNSwgCisgICAgMjMxLCA4MiwgODUsIDI1MCwgMzUsIDIzMSwgODIsIDQsIDcxLCAyNTAsIDM1LCAyMzEsIDE1MywgODcsIDI0NywgMTY3LCAKKyAgICA4NywgMjE0LCAxNjksIDIyNSwgMjUxLCA4NywgMjQ5LCAyMzEsIDI0MywgMjI0LCAyMTQsIDE0MSwgMjI5LCA4OCwgMjUwLCAKKyAgICAxNjEsIDIyNiwgNjEsIDIzNSwgNDQsIDIxMywgMTg1LCAyNTAsIDkzLCA4NSwgMjMwLCAxMjksIDIzMiwgMjI1LCAyMjAsIAorICAgIDExMiwgMjIwLCAxNDcsIDIyNCwgNSwgMjIwLCAxMzAsIDIxOSwgNTUsIDI1MiwgMTU5LCAyNTIsIDEyNiwgOTIsIDIzNCwgCisgICAgMTM4LCA3MSwgMjQ2LCA5MywgMjMxLCAxODUsIDcxLCAyNDYsIDkzLCAyMzQsIDc4LCA4NSwgMjQ2LCA5MywgMjMxLCAxODUsIAorICAgIDg1LCAyNDYsIDkzLCAyMzQsIDc4LCAyMTksIDYxLCAyMTEsIDIzMCwgMjE5LCA2NCwgMjE4LCAzOCwgMjUyLCA1MSwgMjQ5LCAKKyAgICAyNDcsIDIyMywgMTU5LCA4NSwgMjE5LCA2MCwgMjE2LCAxMzQsIDI0OSwgMjQ4LCAyMiwgMjIzLCAxNTksIDIxNSwgOTQsIAorICAgIDcxLCAyMjAsIDIsIDIyNSwgMTAxLCAyMTUsIDk0LCA4NSwgMjIwLCAyLCAyMjUsIDEwMSwgNzEsIDI0NywgMjQ5LCAyMzYsIAorICAgIDAsIDIxOCwgMjM0LCAyNDksIDEyNSwgMjMzLCA5MSwgMjQ3LCAxOTMsIDI1MCwgMjQ0LCAyMjYsIDE2NiwgMjI1LCAxMDQsIAorICAgIDI1MCwgMjQ1LCAyMTksIDg4LCAyNDEsIDIxMiwgMiwgNzEsIDI0OSwgMTMwLCAzNywgMjQ5LCAxMjUsIDIzMywgOTEsIDI1MCwgCisgICAgMTUzLCAyMjgsIDc1LCAyNDUsIDEyNCwgMjU0LCAxNDEsIDIyNiwgMTkxLCA0MywgMjEyLCAyNiwgMjE1LCAyNTEsIDg1LCAKKyAgICAyMTUsIDU1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTEsIDcxLCAyMTUsIDU1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTEsIDg1LCAKKyAgICA0MywgMjMzLCA5MiwgMjMxLCA1MywgNzEsIDQzLCAyMzMsIDkyLCAyMzEsIDUzLCAyNDYsIDg5LCAyMTksIDgyLCA1MCwgCisgICAgMTE0LCA3MSwgMjQ2LCAxMDUsIDIxNSwgMjI1LCA0MywgMjUwLCAwLCAyNDUsIDEyNCwgOTIsIDIyMSwgMjU0LCAyNDQsIAorICAgIDE3NSwgMjQ3LCAyNTUsIDIzNiwgMCwgNzEsIDI1MCwgMzYsIDIzNiwgMCwgODUsIDIxOCwgMjM0LCA4NSwgMjE1LCAxOTIsIAorICAgIDIyMywgNjAsIDQzLCAyNDUsIDEyMywgMjIzLCA2MCwgNDMsIDI0NSwgMTIyLCAyNTMsIDIxMSwgMTYsIDMxLCAyMTQsIDE0NSwgCisgICAgMTE0LCAyNTAsIDM2LCAyLCAyMTgsIDEwMywgMjIsIDExMywgMTcwLCA0OCwgMjI1LCAxODksIDIyMiwgMjQ4LCAyMzUsIAorICAgIDIwNSwgMjI1LCAxODksIDIzMywgNDMsIDIzNSwgMjA1LCAyMjUsIDE4OSwgMjM1LCAxOTMsIDIyNSwgMTg5LCA4NSwgMjQ5LCAKKyAgICAxMzEsIDIyNiwgMTk3LCAyMjAsIDI5LCAyMjAsIDE3LCAyMTksIDIyOSwgMjUwLCA2MSwgMjUwLCAyMjYsIDI0MSwgMTU3LCAKKyAgICAyMTksIDEyNiwgMjQzLCA2MSwgMjExLCAyMzAsIDI0MCwgMjIwLCAyNDMsIDYxLCAyLCAyNDIsIDEyLCAyMzEsIDE3MywgMTYsIAorICAgIDMxLCAyMzIsIDIyOSwgMjMwLCAxMTUsIDIxNCwgMTk1LCAyMjYsIDE5NywgMjQyLCAxMjIsIDI0NCwgMTIsIDI0NCwgNzQsIAorICAgIDIzNiwgMCwgMjQxLCA1OSwgMjQ0LCAxMjksIDIyMiwgMTQsIDQyLCAyNDQsIDExLCAyNDksIDE1OSwgMjE5LCAxMDQsIDI0MCwgCisgICAgMTEyLCAyMTksIDEwNywgMjI1LCAxNjgsIDIsIDI1MiwgMTU5LCAyMTYsIDI0MiwgMjM1LCAxMzEsIDI1MiwgMTQ2LCA4NywgCisgICAgMjQxLCAyMzEsIDI0MiwgMTMzLCA4NywgMjQzLCAyMzIsIDIyNCwgMTQyLCAyNDksIDEwMywgMjI2LCAxOTcsIDg1LCAyMTgsIAorICAgIDIzNCwgNzEsIDI0NCwgNzQsIDIsIDIwMywgMjMwLCAyMjQsIDg1LCAyMTgsIDEwNCwgMjE0LCAxNjAsIDI1MSwgMjE3LCAKKyAgICAyMjEsIDE5MywgODUsIDIyMSwgMTkzLCAyMzIsIDEwOCwgMjUxLCAyMTcsIDIyMSwgMTkzLCA3MSwgMjIxLCAxOTMsIDcxLCAKKyAgICAxMTQsIDI1MCwgMTMwLCA3OCwgMjE3LCAxLCAyMzIsIDE1NCwgNTAsIDIxNywgNTMsIDI0NiwgODgsIDI1NCwgMTkxLCAyNDUsIAorICAgIDExOSwgMjIzLCAxNTcsIDI0NCwgODUsIDIyMywgMTU3LCAyNDIsIDE1LCAyMTMsIDE3NCwgMjQyLCAxNSwgMjExLCAxOTgsIAorICAgIDI0MiwgMTUsIDIzMiwgMTA4LCA0NCwgMjI1LCAxOTgsIDIyNSwgMTk4LCAyMTQsIDE2MCwgNDQsIDIyNSwgMTk4LCA3MSwgCisgICAgMjI4LCAyMzAsIDg1LCAyMjgsIDIzMCwgMjUwLCAxMzAsIDc4LCAxMTQsIDI1MCwgMTMwLCA3OCwgMjMwLCA4NCwgMjExLCAKKyAgICAxNzgsIDExNCwgMjMwLCA4NCwgMjExLCAxNzgsIDI1MiwgMTU2LCAyMTEsIDE3OCwgMTE0LCAyNTIsIDE1NiwgMjExLCAxNzgsIAorICAgIDIyNiwgMTI2LCAyNiwgMjQ5LCAxMzAsIDExNCwgMjYsIDI0OSwgMTMwLCAyMDQsIDI1MCwgMTc1LCAyNDksIDEzMCwgMTE0LCAKKyAgICAyMDQsIDI1MCwgMTc1LCAyNDksIDEzMCwgNywgMjQ5LCAxMzAsIDIyMCwgOTEsIDcxLCA3LCAyNDksIDEzMCwgMjI2LCAxMjYsIAorICAgIDcsIDI0OSwgMTMwLCAyMzEsIDE4NywgMjQ5LCAxMzAsIDIxOCwgMTU3LCA2NCwgMjQ4LCAxNDksIDI0NCwgMTEsIDIxNywgCisgICAgMTUsIDI1MywgMjE2LCAyNDQsIDExLCAyNTIsIDE1NywgMjUzLCAyMTYsIDExNCwgMjQ0LCAxMSwgMjUyLCAxNTcsIDI1MywgCisgICAgMjE2LCAyNDQsIDExLCAyNDksIDI0MywgMjUzLCAyMTYsIDg1LCAyNDQsIDExLCAyMjUsIDksIDIxOCwgMTU2LCA3MSwgMjQ0LCAKKyAgICAxMSwgMjI1LCA5LCAyMTgsIDE1NiwgMjE5LCAxMSwgMjE4LCAxMTEsIDIyNiwgMTI2LCA3MSwgMjE4LCAxNTYsIDM3LCA3MSwgCisgICAgMjE4LCAxNTYsIDIwNCwgMjUwLCAxNzUsIDg1LCAyMTgsIDE1NiwgODUsIDI1MCwgMTc1LCA3MSwgMjE4LCAxNTYsIDIyNiwgCisgICAgMTI2LCA4NSwgMjE4LCAxNTYsIDExNCwgMjI2LCAxMjYsIDg1LCAyMTgsIDE1NiwgMjI1LCA2MCwgMjE4LCAxNTYsIDIyMCwgCisgICAgOTEsIDcxLCAyMTgsIDE1NiwgMTE0LCAyNTMsIDIxNiwgMjA0LCAyNTAsIDE3NSwgMjUzLCAyMTYsIDI0NSwgMTkzLCAyMTgsIAorICAgIDI0NCwgMjUzLCAyMTYsIDI0NSwgMTkzLCAyMjUsIDksIDg1LCAyMTgsIDE1NiwgMjQ1LCAxOTMsIDIyNSwgOSwgMjI1LCA2MCwgCisgICAgMjE4LCAxNTYsIDIxOSwgMTI1LCAyMjUsIDksIDg1LCAyMTgsIDE1NiwgMjQ1LCAxOTMsIDIyNSwgOSwgMjIzLCAxMTQsIDg1LCAKKyAgICAyMTgsIDE1NiwgMTE0LCAyNDUsIDE5MywgMjI1LCA5LCAyMjMsIDExNCwgODUsIDIxOCwgMTU2LCAyMTUsIDc3LCAyMjUsIDksIAorICAgIDg1LCAyMTgsIDE1NiwgMjE5LCAxMjAsIDIyNSwgOSwgMjUzLCAyMTYsIDIxNywgMTUsIDI1MywgMjE2LCAyMDQsIDI1MCwgCisgICAgMTc1LCAyMTcsIDE1LCAyNTMsIDIxNiwgMTE0LCAyMTcsIDE1LCAyNTMsIDIxNiwgMjE5LCAxMjUsIDIyNSwgMTU3LCA4NSwgCisgICAgMjIsIDcxLCAyNDQsIDU0LCA4NSwgMjQ0LCA1NCwgNzEsIDI0NCwgNTQsIDI0NSwgMTkzLCAyMjUsIDE1NywgMjI2LCAxMjYsIAorICAgIDg1LCAyNDQsIDU0LCAzNywgMjA0LCAyNTAsIDE3NSwgMjQ1LCAxOTMsIDIyNSwgOSwgMjE4LCAxNTYsIDExNCwgMjE3LCAxNSwgCisgICAgMjI1LCA2MCwgMjUzLCAyMTYsIDIxOSwgNjIsIDIxNiwgMTA1LCAyMTUsIDIxOCwgMjE5LCA2MiwgMTE0LCAyNTAsIDExNCwgCisgICAgMjE5LCA2MiwgMjE5LCAxMywgMTE0LCAyMTksIDEzLCAyNTIsIDE1NywgMjUzLCAyMTYsIDI0NSwgMTkzLCAyMTcsIDE1LCAKKyAgICAyMjQsIDE3MSwgMjUzLCAyMTYsIDExNCwgMjQ1LCAxOTMsIDIxNywgMTUsIDIyNCwgMTcxLCAyNTMsIDIxNiwgMjQ5LCAxMzEsIAorICAgIDc4LCAyMjAsIDkxLCA3MSwgMjUwLCAzNSwgMTUyLCA5MiwgMjQ5LCAxMzEsIDc4LCAyMzIsIDEwOCwgNDQsIDI0NiwgODYsIAorICAgIDcxLCAyMTgsIDIzNCwgMjE0LCAxNjAsIDQ0LCAyNDYsIDg2LCA3MSwgMjE4LCAyMzQsIDIzMiwgMTA4LCA0NCwgMjIwLCA5MSwgCisgICAgNzEsIDIxOCwgMjM0LCAyMTQsIDE2MCwgNDQsIDIyMCwgOTEsIDcxLCAyMTgsIDIzNCwgODUsIDIyNCwgMTMsIDE2NCwgMjI2LCAKKyAgICAxNDcsIDcxLCAyMjQsIDEzLCAxNjQsIDIyNiwgMTQ3LCA3MSwgMjQ1LCAzMSwgMTY0LCAyMjYsIDE0NywgODUsIDI0NywgCisgICAgMjQ5LCAyMzAsIDE4MiwgNzEsIDIxMSwgMTc4LCAxMTQsIDI0NSwgMzEsIDE2NCwgODcsIDE5MiwgNjcsIDEzMCwgMjMxLCAKKyAgICA4MiwgNjcsIDEzMCwgMTE0LCA2NywgMTMwLCAxMTQsIDIxOSwgMTU1LCAyMTUsIDk0LCAyNDksIDIyMCwgMjIzLCAyNTQsIAorICAgIDE2NCwgMjI2LCAxNDcsIDExNCwgMjE5LCAxNTUsIDI0OSwgMjIwLCAyMjMsIDI1NCwgMTY0LCAyMjYsIDE0NywgMTE0LCA1MiwgCisgICAgMjE1LCA5NCwgMjQ5LCAyMjAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDUyLCAyNDksIDIyMCwgMjIzLCAyNTQsIAorICAgIDE2NCwgMjI2LCAxNDcsIDExNCwgMTIxLCAyMTksIDE1NSwgMjQ5LCAyMjAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAKKyAgICAxMTQsIDEyMSwgNTIsIDI0OSwgMjIwLCAyMjMsIDI1NCwgMTY0LCAyMjYsIDE0NywgMjQ5LCA5MSwgMjE4LCAxNDAsIDIyNiwgCisgICAgMTUsIDUsIDIyNiwgMTQ3LCAxMTQsIDI0NSwgMzEsIDE2NCwgMjI2LCAxNDcsIDExNCwgMjQxLCAyMjgsIDI0NSwgMzEsIAorICAgIDE2NCwgMjI2LCAxNDcsIDExNCwgODUsIDI0MSwgMjI3LCAyMjIsIDE4NywgMTE0LCA4NSwgMjQxLCAyMjgsIDI1MSwgMTEzLCAKKyAgICAyNDQsIDU1LCAyNDEsIDIyNywgMjIyLCAxODcsIDI0NCwgNTUsIDI0MSwgMjI4LCAyNTEsIDExMywgMjMxLCA4MiwgNDMsIAorICAgIDIyNiwgNCwgMjI2LCAxNDcsIDIzMSwgODIsIDQ0LCAyMjYsIDQsIDIyNiwgMTQ3LCAyMzEsIDgyLCAyNDQsIDYzLCA0MywgCisgICAgMjI2LCA0LCAyMjYsIDE0NywgMjMxLCA4MiwgMjQ0LCA2MywgNDQsIDIyNiwgNCwgMjI2LCAxNDcsIDIzMSwgODIsIDIzMywgCisgICAgNDIsIDI1NCwgMTEwLCAyNTEsIDE1OCwgMjI2LCAxNDcsIDIzMSwgODIsIDIyMiwgMjQ3LCAyNTQsIDExMCwgMjUxLCAxNTgsIAorICAgIDIyNiwgMTQ3LCAxMTQsIDIzMywgNDIsIDI1NCwgMTEwLCAyMjMsIDI1NCwgMTY0LCAyMjYsIDE0NywgMTE0LCAyMjIsIDI0NywgCisgICAgMjU0LCAxMTAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDIzMywgNDIsIDI1NCwgMTEwLCAyNTEsIDE1OCwgMjI2LCAKKyAgICAxNDcsIDExNCwgMjIyLCAyNDcsIDI1NCwgMTEwLCAyNTEsIDE1OCwgMjI2LCAxNDcsIDE5MiwgNDMsIDIxNiwgNiwgMjIwLCAKKyAgICA1MywgMjUxLCAxNTgsIDIyNiwgMTQ3LCAxOTIsIDQ0LCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU4LCAyMjYsIDE0NywgCisgICAgMjMxLCA4MiwgNDMsIDI0OSwgOTksIDI1MSwgMTU4LCAyMjYsIDE0NywgMjMxLCA4MiwgNDQsIDI0OSwgOTksIDI1MSwgMTU4LCAKKyAgICAyMjYsIDE0NywgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAxMTAsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMTA1LCAyNDcsIAorICAgIDIwNCwgMTUyLCAzNywgMjEsIDE1OCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAxNjEsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgCisgICAgMTg5LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDE5NCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAxOTgsIDI0NywgMjA0LCAKKyAgICAxNTIsIDM3LCAyMSwgMTk1LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDIwMCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDU0LCAyMTYsIAorICAgIDI0NywgMjQ3LCAyMDQsIDM3LCAzNSwgMjEsIDExMCwgMjQ3LCAyMDQsIDM3LCAzNSwgMjEsIDEwNSwgMjQ3LCAyMDQsIDM3LCAKKyAgICAzNSwgMjEsIDE1OCwgMjQ3LCAyMDQsIDM3LCAzNSwgMjEsIDE2MSwgMjQ3LCAyMDQsIDM3LCAzNSwgMjEsIDE4OSwgMjQ3LCAKKyAgICAyMDQsIDM3LCAzNSwgMjEsIDE5NCwgMjQ3LCAyMDQsIDM3LCAzNSwgMjEsIDE5OCwgMjQ3LCAyMDQsIDM3LCAzNSwgMjEsIAorICAgIDE5NSwgMjQ3LCAyMDQsIDM3LCAzNSwgMjEsIDIwMCwgMjQ3LCAyMDQsIDM3LCAzNSwgNTQsIDIxNiwgMjQ3LCAyNDcsIDIwNCwgCisgICAgMTUyLCAzNywgMzUsIDIxLCAxMTAsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDEwNSwgMjQ3LCAyMDQsIDE1MiwgMzcsIAorICAgIDM1LCAyMSwgMTU4LCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAxNjEsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIAorICAgIDE4OSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTk0LCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAxOTgsIDI0NywgCisgICAgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDE5NSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMjAwLCAyNDcsIDIwNCwgMTUyLCAKKyAgICAzNywgMzUsIDU0LCAyMTYsIDI0NywgMTE0LCAyMTEsIDI0NiwgOTcsIDc0LCAxMTQsIDk2LCA1MCwgMTE0LCAyMzAsIDE4MiwgCisgICAgNTAsIDExNCwgMjQ3LCAxNjksIDUwLCAxMTQsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMTE0LCA5NywgNzQsIDExNCwgMjI4LCAKKyAgICA1NiwgMjQ1LCAyMjAsIDc0LCAyNDYsIDk4LCAyMjUsIDExLCA5NywgNzQsIDExNCwgMjIyLCAxODQsIDk3LCA3NCwgMjE1LCAKKyAgICAyMjQsIDk3LCA3NCwgMTE0LCAyMTUsIDIyNCwgOTcsIDc0LCAyNDgsIDE1NSwgMjE1LCAyMjQsIDk3LCA3NCwgMTE0LCAyNDgsIAorICAgIDE1NSwgMjE1LCAyMjQsIDk3LCA3NCwgODUsIDk3LCA3NCwgMjE2LCAxNDQsIDIxNiwgMTIsIDk3LCAyNTMsIDI0OSwgMjE2LCAKKyAgICAxNDQsIDI1MSwgMTczLCA5NywgMjUzLCAyNDksIDg1LCA5NywgMjUzLCAyNDksIDExNCwgODUsIDI0OSwgOTEsIDI0NiwgCisgICAgMTA0LCAyMiwgOTcsIDc0LCAxMTQsIDg1LCAyNDksIDkxLCAyMTQsIDE1MywgMjIsIDk3LCA3NCwgMjE4LCAyMzEsIDg1LCAKKyAgICA5NywgNzQsIDExNCwgMjQ5LCAyMDYsIDg1LCA5NywgNzQsIDIyMiwgMjQ2LCA3MSwgOTcsIDc0LCAyMzMsIDQxLCA3MSwgOTcsIAorICAgIDc0LCAyNTIsIDE4MywgMjIwLCA5MSwgNzEsIDk3LCA3NCwgMjQzLCAyNDEsIDIyMCwgOTEsIDcxLCA5NywgNzQsIDExNCwgCisgICAgMjMyLCAxMDgsIDIyMiwgMjQ1LCA3MSwgOTcsIDc0LCAxMTQsIDIxNCwgMTYwLCAyMjIsIDI0NSwgNzEsIDk3LCA3NCwgMjI4LCAKKyAgICA0OSwgMjMyLCAxMDgsIDIyMiwgMjQ1LCA3MSwgOTcsIDc0LCAyNDksIDk5LCAyMzIsIDEyMywgMjI4LCA0OSwgMjE0LCAxNjAsIAorICAgIDIyMiwgMjQ1LCA3MSwgOTcsIDc0LCAzNywgMTE0LCA3MSwgOTcsIDc0LCAyMTEsIDI1MiwgOTcsIDc0LCAyNTEsIDIyMCwgCisgICAgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAyNTEsIDIyMCwgOTcsIDc0LCAyNTEsIDIyMCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDc0LCAKKyAgICAxMTQsIDI1MSwgMjIwLCAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDExNCwgMjUxLCAyMjAsIDk3LCA3NCwgMTE0LCAyNTEsIAorICAgIDIyMCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDc0LCAyMTcsIDE3LCA5NywgNzQsIDExNCwgMjE3LCAxNiwgOTcsIDc0LCAyMTIsIAorICAgIDE4LCA5NywgNzQsIDExNCwgMjEyLCAxOCwgOTcsIDc0LCAyMjYsIDE3MiwgOTcsIDc0LCA1MiwgMjQ5LCA5OSwgMjMyLCAKKyAgICAxMjMsIDEzNCwgMjQ3LCAyMTQsIDI1NCwgMTA5LCA3MSwgMjE1LCAyMjYsIDI0OSwgMTg3LCA0LCA3MSwgMjE1LCAyMjUsIAorICAgIDIyNSwgMTcxLCAyMDQsIDIxOCwgNjMsIDIwNCwgMjE4LCAyMSwgNDMsIDIyMiwgOTAsIDI1MiwgMTczLCAyNDgsIDYwLCA0NCwgCisgICAgMjIyLCA5MCwgMjUyLCAxNzMsIDI0OCwgNjAsIDE3NywgMiwgNTksIDIzNSwgMjE1LCAyMjMsIDUwLCAyMTksIDQ3LCAyMjQsIAorICAgIDIwMSwgMjE4LCA2MywgMjE4LCAyMiwgMjI0LCAyMDEsIDIxOSwgNDYsIDY3LCAyNTIsIDE0MSwgMiwgMjAzLCA5MSwgMTEsIAorICAgIDIyMiwgMjI4LCAyNDcsIDI1NCwgMTk5LCAyNDcsIDE2OCwgMTEsIDI0NCwgMTc1LCAyNDcsIDI1NCwgOTIsIDIzMiwgMTQ2LCAKKyAgICAyNTQsIDExOCwgOTIsIDIzMiwgMTQ2LCAyMjYsIDE1OCwgNzEsIDI0NywgMjQ5LCAyLCAyNTAsIDE3MywgMjQ3LCAxMjAsIAorICAgIDIyLCAyLCAyNDcsIDEyMCwgMjQ1LCAxNzAsIDY0LCAyMjYsIDE3MCwgMjE0LCAxNTIsIDIzMiwgMTA4LCA0NCwgMjQ5LCAKKyAgICAxNjEsIDIsIDI0NywgMTIwLCAyMTQsIDE2MCwgNDMsIDI0OSwgMTYxLCAyLCAyNDcsIDEyMCwgNDMsIDIyNiwgMTI4LCAyMzUsIAorICAgIDY2LCA0NCwgMjI2LCAxMjgsIDIzNSwgNjYsIDI0MywgMjI5LCAyMjYsIDEyOCwgMjM1LCA2NiwgMjMzLCA4NSwgMTIwLCAKKyAgICAyMTcsIDg3LCAyMzMsIDg1LCAxMjQsIDIxNywgODcsIDQzLCAyMiwgNDQsIDUyLCAyMTUsIDkzLCA0MywgMjIsIDQ0LCAyMTcsIAorICAgIDg3LCA0MywgMjMwLCA4NywgMTk5LCA0NCwgMjE3LCA4NywgMTk5LCA0MywgMjE3LCA4NywgMTIwLCAyMTcsIDg4LCAyLCAKKyAgICAyNTAsIDM2LCA0OCwgMjMyLCAxMDUsIDI0NywgMTczLCAyNTEsIDc4LCAyMDMsIDIyMiwgMTMzLCA3MSwgMjQ5LCAyMDUsIAorICAgIDI0NywgMjQ4LCA3MSwgMjQ5LCAyMDUsIDI0NywgMjQ5LCAyLCAxNDAsIDIxNiwgMTE0LCA3MSwgMjQ5LCAyMDUsIDI0NywgCisgICAgMjQ5LCAyLCA5NywgMjE2LCAxMTQsIDcxLCA0MiwgMiwgMTQwLCAyMTYsIDExNCwgNzEsIDQyLCAyLCA5NywgMjE2LCAxMTQsIAorICAgIDExLCA0MywgNzEsIDQyLCAxMjcsIDExLCA0NCwgNzEsIDQyLCAxMjcsIDExLCA0MywgMjU0LCAxMTAsIDEyNywgMTEsIDQ0LCAKKyAgICAyNTQsIDExMCwgMTI3LCAxMSwgNDMsIDUyLCAyNTQsIDExMCwgMTI3LCAxMSwgNDQsIDUyLCAyNTQsIDExMCwgMTI3LCAxMSwgCisgICAgNDMsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMTEsIDQ0LCA3MSwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDExLCA0MywgCisgICAgMjQ0LCA2MywgMjI2LCAzLCAxMSwgNDQsIDI0NCwgNjMsIDIyNiwgMywgMjE0LCAxNTMsIDIyNCwgMjQsIDc0LCAyNDYsIAorICAgIDEwNCwgMjI0LCAyNCwgNzQsIDI1NCwgODgsIDI0MywgOTgsIDI1MCwgMzYsIDc0LCAyNTAsIDIsIDI0MywgOTgsIDI1MCwgCisgICAgMzYsIDc0LCA0NCwgODAsIDIsIDM3LCAyMjUsIDIyLCAxOTksIDE0MCwgNzQsIDE5OSwgOTcsIDc0LCAxOTksIDQzLCA0NCwgCisgICAgNzQsIDE5OSwgMTQwLCA1MiwgNzQsIDE5OSwgOTcsIDUyLCA3NCwgMTk5LCA0MywgNDQsIDUyLCA3NCwgMTk5LCAxNDAsIDgwLCAKKyAgICAyNDMsIDI0MywgMTMwLCAxOTksIDk3LCA4MCwgMjQzLCAyNDMsIDEzMCwgMTk5LCAxNDAsIDUyLCA4MCwgMjQzLCAyNDMsIAorICAgIDEzMCwgMTk5LCA5NywgNTIsIDgwLCAyNDMsIDI0MywgMTMwLCAxOTksIDk3LCAyMTgsIDIzMCwgNzQsIDQ2LCA0NywgMjUxLCAKKyAgICAyMTUsIDQ2LCA0NywgMjQ3LCAxMTcsIDQ2LCA0NywgMjQ2LCAyNDUsIDQ2LCA0NywgMjQ3LCAxMTYsIDQ2LCA0NywgMjQ2LCAKKyAgICAxODEsIDQ2LCA0NywgMjQ3LCA1MiwgNDYsIDQ3LCAyNDYsIDI0NCwgNDYsIDQ3LCAyNDcsIDExNSwgNDYsIDQ3LCAyNDYsIAorICAgIDE0OSwgNDYsIDQ3LCAyNDcsIDIwLCA0NiwgNDcsIDI0NiwgMjEyLCA0NiwgNDcsIDI0NywgODMsIDQ2LCA0NywgMjQ2LCAKKyAgICAxODAsIDQ2LCA0NywgMjQ3LCA1MSwgNDYsIDQ3LCAyNDYsIDI0MywgNDYsIDQ3LCAyNDcsIDExNCwgNDYsIDQ3LCAyNDYsIAorICAgIDEzMywgNDYsIDQ3LCAyNDcsIDQsIDQ2LCA0NywgMjQ2LCAxOTYsIDQ2LCA0NywgMjQ3LCA2NywgNDYsIDQ3LCAyNDYsIDE2NCwgCisgICAgNDYsIDQ3LCAyNDcsIDM1LCA0NiwgNDcsIDI0NiwgMjI3LCA0NiwgNDcsIDI0NywgOTgsIDQ2LCA0NywgMjQ2LCAxNDgsIDQ2LCAKKyAgICA0NywgMjQ3LCAxOSwgNDYsIDQ3LCAyNDYsIDIxMSwgNDYsIDQ3LCAyNDcsIDgyLCA0NiwgNDcsIDI0NiwgMTc5LCA0NiwgNDcsIAorICAgIDI0NywgNTAsIDQ2LCA0NywgMjQ2LCAyNDIsIDQ2LCA0NywgMjQ3LCAxMTMsIDQ2LCA0NywgMjQ2LCAxMjUsIDQ2LCA0NywgCisgICAgMjQ2LCAyNTIsIDQ2LCA0NywgMjQ2LCAxODgsIDQ2LCA0NywgMjQ3LCA1OSwgNDYsIDQ3LCAyNDYsIDE1NiwgNDYsIDQ3LCAKKyAgICAyNDcsIDI3LCA0NiwgNDcsIDI0NiwgMjE5LCA0NiwgNDcsIDI0NywgOTAsIDQ2LCA0NywgMjQ2LCAxNDAsIDQ2LCA0NywgCisgICAgMjQ3LCAxMSwgNDYsIDQ3LCAyNDYsIDIwMywgNDYsIDQ3LCAyNDcsIDc0LCA0NiwgNDcsIDI0NiwgMTcxLCA0NiwgNDcsIAorICAgIDI0NywgNDIsIDQ2LCA0NywgMjQ2LCAyMzQsIDQ2LCA0NywgMjQ3LCAxMDUsIDQ2LCA0NywgMjQ2LCAxMzIsIDQ2LCA0NywgCisgICAgMjQ3LCAzLCA0NiwgNDcsIDI0NiwgMTk1LCA0NiwgNDcsIDI0NywgNjYsIDQ2LCA0NywgMjQ2LCAxNjMsIDQ2LCA0NywgMjQ3LCAKKyAgICAzNCwgNDYsIDQ3LCAyNDYsIDIyNiwgNDYsIDQ3LCAyNDcsIDk3LCA0NiwgNDcsIDI0NiwgMTQ3LCA0NiwgNDcsIDI0NywgMTgsIAorICAgIDQ2LCA0NywgMjQ2LCAyMTAsIDQ2LCA0NywgMjQ3LCA4MSwgNDYsIDQ3LCAyNDYsIDE3OCwgNDYsIDQ3LCAyNDcsIDQ5LCA0NiwgCisgICAgNDcsIDI0NiwgMjQxLCA0NiwgNDcsIDI0NywgMTEyLCA0NiwgNDcsIDI0NiwgMTIxLCA0NiwgNDcsIDI0NiwgMjQ4LCA0NiwgCisgICAgNDcsIDI0NiwgMTg0LCA0NiwgNDcsIDI0NywgNTUsIDQ2LCA0NywgMjQ2LCAxNTIsIDQ2LCA0NywgMjQ3LCAyMywgNDYsIDQ3LCAKKyAgICAyNDYsIDIxNSwgNDYsIDQ3LCAyNDcsIDg2LCA0NiwgNDcsIDI0NiwgMTM2LCA0NiwgNDcsIDI0NywgNywgNDYsIDQ3LCAyNDYsIAorICAgIDE5OSwgNDYsIDQ3LCAyNDcsIDcwLCA0NiwgNDcsIDI0NiwgMTY3LCA0NiwgNDcsIDI0NywgMzgsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMzAsIDQ2LCA0NywgMjQ3LCAxMDEsIDQ2LCA0NywgMjQ2LCAxMjgsIDQ2LCA0NywgMjQ2LCAyNTUsIDQ2LCA0NywgMjQ2LCAKKyAgICAxOTEsIDQ2LCA0NywgMjQ3LCA2MiwgNDYsIDQ3LCAyNDYsIDE1OSwgNDYsIDQ3LCAyNDcsIDMwLCA0NiwgNDcsIDI0NiwgCisgICAgMjIyLCA0NiwgNDcsIDI0NywgOTMsIDQ2LCA0NywgMjQ2LCAxNDMsIDQ2LCA0NywgMjQ3LCAxNCwgNDYsIDQ3LCAyNDYsIAorICAgIDIwNiwgNDYsIDQ3LCAyNDcsIDc3LCA0NiwgNDcsIDI0NiwgMTc0LCA0NiwgNDcsIDI0NywgNDUsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMzcsIDQ2LCA0NywgMjQ3LCAxMDgsIDQ2LCA0NywgMjQ2LCAxMjQsIDQ2LCA0NywgMjQ2LCAyNTEsIDQ2LCA0NywgMjQ2LCAKKyAgICAxODcsIDQ2LCA0NywgMjQ3LCA1OCwgNDYsIDQ3LCAyNDYsIDE1NSwgNDYsIDQ3LCAyNDcsIDI2LCA0NiwgNDcsIDI0NiwgCisgICAgMjE4LCA0NiwgNDcsIDI0NywgODksIDQ2LCA0NywgMjQ2LCAxMzksIDQ2LCA0NywgMjQ3LCAxMCwgNDYsIDQ3LCAyNDYsIAorICAgIDIwMiwgNDYsIDQ3LCAyNDcsIDczLCA0NiwgNDcsIDI0NiwgMTcwLCA0NiwgNDcsIDI0NywgNDEsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMzMsIDQ2LCA0NywgMjQ3LCAxMDQsIDQ2LCA0NywgMjQ2LCAxMzEsIDQ2LCA0NywgMjQ3LCAyLCA0NiwgNDcsIDI0NiwgCisgICAgMTk0LCA0NiwgNDcsIDI0NywgNjUsIDQ2LCA0NywgMjQ2LCAxNjIsIDQ2LCA0NywgMjQ3LCAzMywgNDYsIDQ3LCAyNDYsIAorICAgIDIyNSwgNDYsIDQ3LCAyNDcsIDk2LCA0NiwgNDcsIDI0NiwgMTQ2LCA0NiwgNDcsIDI0NywgMTcsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMDksIDQ2LCA0NywgMjQ3LCA4MCwgNDYsIDQ3LCAyNDYsIDE3NywgNDYsIDQ3LCAyNDcsIDQ4LCA0NiwgNDcsIDI0NiwgCisgICAgMjQwLCA0NiwgNDcsIDI0NywgMTExLCA0NiwgNDcsIDI0NiwgMTE5LCA0NiwgNDcsIDI0NiwgMjQ2LCA0NiwgNDcsIDI0NiwgCisgICAgMTgyLCA0NiwgNDcsIDI0NywgNTMsIDQ2LCA0NywgMjQ2LCAxNTAsIDQ2LCA0NywgMjQ3LCAyMSwgNDYsIDQ3LCAyNDYsIAorICAgIDIxMywgNDYsIDQ3LCAyNDcsIDg0LCA0NiwgNDcsIDI0NiwgMTM0LCA0NiwgNDcsIDI0NywgNSwgNDYsIDQ3LCAyNDYsIDE5NywgCisgICAgNDYsIDQ3LCAyNDcsIDY4LCA0NiwgNDcsIDI0NiwgMTY1LCA0NiwgNDcsIDI0NywgMzYsIDQ2LCA0NywgMjQ2LCAyMjgsIDQ2LCAKKyAgICA0NywgMjQ3LCA5OSwgNDYsIDQ3LCAyNDYsIDEyNiwgNDYsIDQ3LCAyNDYsIDI1MywgNDYsIDQ3LCAyNDYsIDE4OSwgNDYsIAorICAgIDQ3LCAyNDcsIDYwLCA0NiwgNDcsIDI0NiwgMTU3LCA0NiwgNDcsIDI0NywgMjgsIDQ2LCA0NywgMjQ2LCAyMjAsIDQ2LCA0NywgCisgICAgMjQ3LCA5MSwgNDYsIDQ3LCAyNDYsIDE0MSwgNDYsIDQ3LCAyNDcsIDEyLCA0NiwgNDcsIDI0NiwgMjA0LCA0NiwgNDcsIAorICAgIDI0NywgNzUsIDQ2LCA0NywgMjQ2LCAxNzIsIDQ2LCA0NywgMjQ3LCA0MywgNDYsIDQ3LCAyNDYsIDIzNSwgNDYsIDQ3LCAKKyAgICAyNDcsIDEwNiwgNDYsIDQ3LCAyNDYsIDEyMiwgNDYsIDQ3LCAyNDYsIDI0OSwgNDYsIDQ3LCAyNDYsIDE4NSwgNDYsIDQ3LCAKKyAgICAyNDcsIDU2LCA0NiwgNDcsIDI0NiwgMTUzLCA0NiwgNDcsIDI0NywgMjQsIDQ2LCA0NywgMjQ2LCAyMTYsIDQ2LCA0NywgCisgICAgMjQ3LCA4NywgNDYsIDQ3LCAyNDYsIDEzNywgNDYsIDQ3LCAyNDcsIDgsIDQ2LCA0NywgMjQ2LCAyMDAsIDQ2LCA0NywgMjQ3LCAKKyAgICA3MSwgNDYsIDQ3LCAyNDYsIDE2OCwgNDYsIDQ3LCAyNDcsIDM5LCA0NiwgNDcsIDI0NiwgMjMxLCA0NiwgNDcsIDI0NywgCisgICAgMTAyLCA0NiwgNDcsIDI0NiwgMTI5LCA0NiwgNDcsIDI0NywgMCwgNDYsIDQ3LCAyNDYsIDE5MiwgNDYsIDQ3LCAyNDcsIDYzLCAKKyAgICA0NiwgNDcsIDI0NiwgMTYwLCA0NiwgNDcsIDI0NywgMzEsIDQ2LCA0NywgMjQ2LCAyMjMsIDQ2LCA0NywgMjQ3LCA5NCwgNDYsIAorICAgIDQ3LCAyNDYsIDE0NCwgNDYsIDQ3LCAyNDcsIDE1LCA0NiwgNDcsIDI0NiwgMjA3LCA0NiwgNDcsIDI0NywgNzgsIDQ2LCA0NywgCisgICAgMjQ2LCAxNzUsIDQ2LCA0NywgMjQ3LCA0NiwgNDYsIDQ3LCAyNDYsIDIzOCwgNDYsIDQ3LCAyNDcsIDEwOSwgNDYsIDQ3LCAKKyAgICAyNDYsIDEyMCwgNDYsIDQ3LCAyNDYsIDI0NywgNDYsIDQ3LCAyNDYsIDE4MywgNDYsIDQ3LCAyNDcsIDU0LCA0NiwgNDcsIAorICAgIDI0NiwgMTUxLCA0NiwgNDcsIDI0NywgMjIsIDQ2LCA0NywgMjQ2LCAyMTQsIDQ2LCA0NywgMjQ3LCA4NSwgNDYsIDQ3LCAKKyAgICAyNDYsIDEzNSwgNDYsIDQ3LCAyNDcsIDYsIDQ2LCA0NywgMjQ2LCAxOTgsIDQ2LCA0NywgMjQ3LCA2OSwgNDYsIDQ3LCAyNDYsIAorICAgIDE2NiwgNDYsIDQ3LCAyNDcsIDM3LCA0NiwgNDcsIDI0NiwgMjI5LCA0NiwgNDcsIDI0NywgMTAwLCA0NiwgNDcsIDI0NiwgCisgICAgMTI3LCA0NiwgNDcsIDI0NiwgMjU0LCA0NiwgNDcsIDI0NiwgMTkwLCA0NiwgNDcsIDI0NywgNjEsIDQ2LCA0NywgMjQ2LCAKKyAgICAxNTgsIDQ2LCA0NywgMjQ3LCAyOSwgNDYsIDQ3LCAyNDYsIDIyMSwgNDYsIDQ3LCAyNDcsIDkyLCA0NiwgNDcsIDI0NiwgCisgICAgMTQyLCA0NiwgNDcsIDI0NywgMTMsIDQ2LCA0NywgMjQ2LCAyMDUsIDQ2LCA0NywgMjQ3LCA3NiwgNDYsIDQ3LCAyNDYsIAorICAgIDE3MywgNDYsIDQ3LCAyNDcsIDQ0LCA0NiwgNDcsIDI0NiwgMjM2LCA0NiwgNDcsIDI0NywgMTA3LCA0NiwgNDcsIDI0NiwgCisgICAgMTIzLCA0NiwgNDcsIDI0NiwgMjUwLCA0NiwgNDcsIDI0NiwgMTg2LCA0NiwgNDcsIDI0NywgNTcsIDQ2LCA0NywgMjQ2LCAKKyAgICAxNTQsIDQ2LCA0NywgMjQ3LCAyNSwgNDYsIDQ3LCAyNDYsIDIxNywgNDYsIDQ3LCAyNDcsIDg4LCA0NiwgNDcsIDI0NiwgCisgICAgMTM4LCA0NiwgNDcsIDI0NywgOSwgNDYsIDQ3LCAyNDYsIDIwMSwgNDYsIDQ3LCAyNDcsIDcyLCA0NiwgNDcsIDI0NiwgMTY5LCAKKyAgICA0NiwgNDcsIDI0NywgNDAsIDQ2LCA0NywgMjQ2LCAyMzIsIDQ2LCA0NywgMjQ3LCAxMDMsIDQ2LCA0NywgMjQ2LCAxMzAsIAorICAgIDQ2LCA0NywgMjQ3LCAxLCA0NiwgNDcsIDI0NiwgMTkzLCA0NiwgNDcsIDI0NywgNjQsIDQ2LCA0NywgMjQ2LCAxNjEsIDQ2LCAKKyAgICA0NywgMjQ3LCAzMiwgNDYsIDQ3LCAyNDYsIDIyNCwgNDYsIDQ3LCAyNDcsIDk1LCA0NiwgNDcsIDI0NiwgMTQ1LCA0NiwgNDcsIAorICAgIDI0NywgMTYsIDQ2LCA0NywgMjQ2LCAyMDgsIDQ2LCA0NywgMjQ3LCA3OSwgNDYsIDQ3LCAyNDYsIDE3NiwgNDYsIDQ3LCAKKyAgICAyNDcsIDQ3LCA0NiwgNDcsIDI0NiwgMjM5LCA0NiwgNDcsIDI0NywgMTEwLCA5NywgMjE1LCA1OCwgODAsIDIsIDY3LCA5MSwgCisgICAgOTcsIDIxNSwgNTgsIDgwLCAyLCA1MiwgNjcsIDkxLCAxNDAsIDUyLCA4MCwgMiwgNjcsIDkxLCA5NywgNTIsIDgwLCAyLCAKKyAgICA2NywgOTEsIDQzLCA0NCwgNTIsIDgwLCAyLCA2NywgOTEsIDk3LCAyMTUsIDU4LCA4MCwgMjQzLCAyNDMsIDEzMCwgMTQwLCAKKyAgICA1MiwgODAsIDI0MywgMjQzLCAxMzAsIDk3LCA1MiwgODAsIDI0MywgMjQzLCAxMzAsIDI0NiwgMTA0LCA4MCwgMiwgMjAzLCAKKyAgICA5MSwgMjE0LCAxNTMsIDgwLCAyLCAyMDMsIDkxLCAyMTQsIDE1MywgMjE1LCAyMTEsIDc0LCAyNDYsIDEwNCwgMjE1LCAyMTEsIAorICAgIDc0LCAxNDAsIDUyLCAyNDgsIDE1NywgNzQsIDk3LCA1MiwgMjQ4LCAxNTcsIDc0LCAxNDAsIDIxNSwgMjExLCAyNDgsIDE1NywgCisgICAgNzQsIDk3LCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDc0LCA5NywgMjE1LCA1OCwgMjE1LCAyMTEsIDI0OCwgMTU3LCA3NCwgOTcsIAorICAgIDgwLCAyLCAyNDYsIDExOCwgMjE4LCAxMzksIDIxNCwgMTUzLCA4MCwgMjE2LCA0MiwgMTMwLCAyNDYsIDEwNCwgODAsIDIxNiwgCisgICAgNDIsIDEzMCwgOTcsIDgwLCAyLCAyMTcsIDc4LCAyLCA2NywgOTEsIDk3LCA4MCwgMiwgMjE3LCA3OCwgMiwgNTIsIDY3LCAKKyAgICA5MSwgOTcsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc3LCA5NywgMjE1LCA1OCwgODAsIDIsIDIxNywgNzgsIDIsIDY3LCA5MSwgCisgICAgOTcsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc4LCAyLCA1MiwgNjcsIDkxLCAxNDAsIDI1MywgMjUxLCA5NywgMjUzLCAyNTEsIAorICAgIDE0MCwgNTIsIDI1MywgMjUxLCA5NywgNTIsIDI1MywgMjUxLCAxNDAsIDgwLCAyMTYsIDQyLCA4NSwgMjQ3LCAyNDgsIDk3LCAKKyAgICA4MCwgMjE2LCA0MiwgODUsIDI0NywgMjQ4LCAxNDAsIDgwLCAyNDMsIDI0MywgMjUyLCAxNDEsIDIxNiwgNDIsIDg1LCAyNDcsIAorICAgIDI0OCwgOTcsIDgwLCAyNDMsIDI0MywgMjUyLCAxNDEsIDIxNiwgNDIsIDg1LCAyNDcsIDI0OCwgMjI4LCA1NiwgMjEyLCA5LCAKKyAgICAyMiwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgMjIsIDIxOSwgMjgsIDIxMiwgOSwgNzQsIAorICAgIDIyOCwgNTYsIDIxMiwgOSwgODAsIDIsIDEwMywgMjI4LCA1NiwgMjQ1LCAyMjAsIDgwLCAyLCAxMDMsIDIxOSwgMjgsIDI0NSwgCisgICAgMjIwLCA4MCwgMiwgMTAzLCAyMTksIDI4LCAyMTIsIDksIDgwLCAyLCAxMDMsIDIyOCwgNTYsIDIxMiwgOSwgODAsIDIyLCAKKyAgICAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA4MCwgMjIsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgCisgICAgMjE5LCAyOCwgMjQ1LCAyMjAsIDgwLCAyMiwgMjE5LCAyOCwgMjEyLCA5LCA3NCwgMjE5LCAyOCwgMjEyLCA5LCA4MCwgMjIsIAorICAgIDIyOCwgNTYsIDIxMiwgOSwgNzQsIDIyMiwgMjI4LCAyNDcsIDI1NSwgMjQ5LCAxMjUsIDI0NCwgMTc1LCAyNDcsIDI1NCwgCisgICAgMjQ0LCAxNzUsIDI0NywgMjU1LCAyNDksIDEyNSwgMjIyLCAyMjgsIDI0NywgMjU0LCAyMTksIDI4LCAyNDUsIDIyMCwgODAsIAorICAgIDI0OSwgMTI1LCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA4MCwgMjQ5LCAxMjUsIDIxOSwgCisgICAgMjgsIDI0NSwgMjIwLCA3NCwgMjQ0LCAxNzUsIDI0NywgMjU1LCAyNDksIDEyNSwgMjI4LCA1NiwgMjQ1LCAyMjAsIDc0LCAKKyAgICAyMjIsIDIyOCwgMjQ3LCAyNTUsIDI0OSwgMTI1LCAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCAKKyAgICA4MCwgMjQ5LCAxMjUsIDIyOCwgNTYsIDIxMiwgOSwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgODAsIDI0OSwgMTI1LCAyMjgsIAorICAgIDU2LCAyNDUsIDIyMCwgNzQsIDIxMiwgMzYsIDgwLCAyMjUsIDcsIDI0NywgMTk1LCAyMjIsIDI1MSwgODAsIDIyNSwgNywgCisgICAgOTcsIDIxNiwgMTg4LCAyNDksIDkwLCAyMTQsIDE1MiwgODAsIDIyNSwgNywgOTcsIDIxNiwgMTg4LCAyNDksIDkwLCAyNDYsIAorICAgIDEwMywgODAsIDIyNSwgNywgMjQ2LCAxMDQsIDIxNiwgMTg4LCAyNDksIDkwLCAyMzMsIDM3LCA4MCwgMjI1LCA3LCAyNDYsIAorICAgIDEwNCwgMjE2LCAxODgsIDI0OSwgOTAsIDIyMiwgMjQxLCAyMjIsIDI0NCwgMjU0LCAyNiwgMjUwLCAyLCA3NCwgMjMzLCA0MCwgCisgICAgMjU0LCAyNiwgMjU0LCA4OCwgNzQsIDIxNiwgMTQsIDI1NCwgMjYsIDI1NCwgODgsIDc0LCAyNTEsIDE3NSwgMjU0LCAyNiwgCisgICAgMjU0LCA4OCwgNzQsIDIxNiwgMTQsIDI1NCwgMjYsIDI1MCwgMiwgODAsIDIsIDIzMCwgMTgxLCAyMTYsIDE0LCAyNTQsIDI2LCAKKyAgICAyNTQsIDg4LCA4MCwgMiwgMjI1LCAyMiwgMjMyLCAxMDgsIDQ0LCAyMjAsIDE1MiwgMjUwLCAyLCA3NCwgMjMyLCAxMDgsIAorICAgIDQzLCAyMjAsIDE1MiwgMjU0LCA4OCwgNzQsIDI1NCwgODgsIDI1MCwgMCwgMjUwLCAzNiwgNzQsIDI1MCwgMiwgMjUwLCAwLCAKKyAgICAyNTAsIDM2LCA3NCwgOTcsIDgwLCA3NywgMjE5LCAyNTEsIDE0MCwgNzQsIDE0MCwgODAsIDc3LCAyMTksIDI1MSwgOTcsIAorICAgIDc0LCAyMTksIDI1MSwgOTcsIDgwLCA3NywgMTQwLCA3NCwgOTcsIDgwLCAyLCA5NiwgNTEsIDE0MCwgODAsIDIsIDk2LCA1MSwgCisgICAgOTcsIDgwLCAyMTYsIDEzOSwgMjExLCAxNzgsIDQzLCA0NCwgODAsIDIxNiwgMTM5LCA0LCAyNTAsIDM1LCAyMTQsIDE1MywgCisgICAgMjE1LCA1OCwgODAsIDI0MywgMjQzLCA0LCAyNTAsIDM1LCA0MywgMjUyLCAxMzksIDEyMCwgNDQsIDI1MiwgMTM5LCAxMjQsIAorICAgIDI0MSwgMjU0LCA0MywgMjUyLCAxMzksIDEyNCwgNDQsIDI1MiwgMTM5LCAxMjAsIDI0MSwgMjU0LCAxMjAsIDI1MiwgMTM5LCAKKyAgICA0NCwgMTI0LCAyNTIsIDEzOSwgNDMsIDI0MSwgMjU0LCAxMjAsIDI1MiwgMTM5LCA0MywgMTI0LCAyNTIsIDEzOSwgNDQsIAorICAgIDI0MSwgMjU0LCA0MywgMjUyLCAxMzksIDEyMCwgNDQsIDI1MiwgMTM5LCAxMjAsIDI0MSwgMjU0LCAxMjAsIDI1MiwgMTM5LCAKKyAgICA0NCwgMTI0LCAyNTIsIDEzOSwgNDQsIDI0MSwgMjU0LCA0MywgMjUyLCAxMzksIDEyNCwgNDQsIDI1MiwgMTM5LCAxMjQsIAorICAgIDI0MSwgMjU0LCAxMjAsIDI1MiwgMTM5LCA0MywgMTI0LCAyNTIsIDEzOSwgNDMsIDI0MSwgMjU0LCAxNDAsIDI0MSwgMjU1LCAKKyAgICAyLCAyNTIsIDEzOSwgMTIwLCAyMTYsIDQyLCAxMzAsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgMjE2LCA0MiwgCisgICAgMTMwLCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0NCwgMjE2LCA0MiwgMTMwLCAyNDYsIDEwNCwgMjQxLCAKKyAgICAyNTUsIDIsIDI1MiwgMTM5LCA0NCwgMjE2LCA0MiwgMTMwLCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyMTYsIAorICAgIDQyLCAxMzAsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgMjE2LCA0MiwgMTMwLCAyMTQsIDE1MywgMjQxLCAKKyAgICAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjE2LCA0MiwgMTMwLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgCisgICAgMjE2LCA0MiwgMTMwLCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCAyNDMsIDI0MywgMTMwLCA5NywgMjQxLCAKKyAgICAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDI0MywgMjQzLCAxMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIAorICAgIDQ0LCAyNDMsIDI0MywgMTMwLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0NCwgMjQzLCAyNDMsIDEzMCwgCisgICAgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgMjQzLCAyNDMsIDEzMCwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIAorICAgIDEzOSwgMTI0LCAyNDMsIDI0MywgMTMwLCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjQzLCAyNDMsIAorICAgIDEzMCwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI0MywgMjQzLCAxMzAsIDE0MCwgMjQxLCAyNTUsIAorICAgIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjQ2LCAxMDYsIDIxNCwgMTUzLCAKKyAgICAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNTIsIDMwLCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMjIsIAorICAgIDI1MSwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCA3NywgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjQ2LCAKKyAgICAxMDYsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNTIsIDMwLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAyMjIsIDI1MSwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgNzcsIDk3LCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDIxNCwgMTYzLCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCA3NywgOTcsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMjQ2LCAxMDYsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgNzcsIDE0MCwgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAyMTQsIDE2MywgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCA3NywgMTQwLCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDI0NiwgMTA2LCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCA3NywgMTk5LCAyNDgsIDE1NiwgCisgICAgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgMjUyLCA0MywgMTk5LCAyNDgsIDE1NiwgOTcsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMTIwLCA3NywgMTk5LCAyNDgsIDE1NiwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyNTIsIAorICAgIDQzLCAxOTksIDI0OCwgMTU2LCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjUyLCAzMCwgMjQ2LCAKKyAgICAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNTEsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIAorICAgIDQzLCAyNTIsIDMwLCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMjIsIDI1MSwgNDQsIDUyLCA4MCwgMiwgCisgICAgMjIyLCAxODMsIDI0MSwgMjM1LCAyNDUsIDk4LCA1LCA3NywgOTcsIDc0LCAyMTYsIDg5LCAyMjYsIDE2OCwgNzcsIDk3LCAKKyAgICA3NCwgMTQwLCA4MCwgNzcsIDIxNiwgODksIDIyNiwgMTY3LCA5NywgODAsIDc3LCAyMTYsIDg5LCAyMjYsIDE2NywgOTcsIAorICAgIDgwLCA3NywgMjU0LCAxNDgsIDEyOCwgMTExLCAyMzMsIDE1LCA3NywgMTQwLCA3NCwgMTQwLCA4MCwgMjE2LCAxMzksIDIzMywgCisgICAgMTQsIDI0MiwgMTMwLCA3NywgOTcsIDc0LCAyMTgsIDY0LCA3NywgOTcsIDc0LCAxNDAsIDgwLCAyMTYsIDEzOSwgMjE4LCAKKyAgICA2MywgMjE4LCAyMiwgNzcsIDE0MCwgNzQsIDQzLCAyNDQsIDkxLCAyMTcsIDc3LCA0NCwgMjQ0LCA5MSwgMjE3LCA3NywgCisgICAgMTIwLCAyNDQsIDkxLCAyMTcsIDc3LCAxMjQsIDI0NCwgOTEsIDIxNywgNzcsIDIxNSwgMjExLCA2NywgMjUyLCAxNDEsIAorICAgIDI0OCwgNjAsIDIxMCwgMTYwLCAxODcsIDIxOCwgMjQyLCAyMTAsIDE2MCwgMTg3LCAyMTUsIDQ5LCAyNDksIDIyNiwgNDMsIAorICAgIDcxLCAyNDksIDk5LCAxMjcsIDQ0LCA3MSwgMjQ5LCA5OSwgMTI3LCA0MywgNzEsIDIyNiwgMywgNDQsIDcxLCAyMjYsIDMsIAorICAgIDIxMCwgMTYwLCAxODcsIDQzLCAyMzYsIDE1LCAxMjcsIDIxMCwgMTYwLCAxODcsIDQ0LCAyMzYsIDE1LCAxMjcsIDIxMCwgCisgICAgMTYwLCAxODcsIDQzLCAyNTEsIDI0MiwgMTI3LCAyMTAsIDE2MCwgMTg3LCA0NCwgMjUxLCAyNDIsIDEyNywgNDMsIDQyLCAKKyAgICAyNTEsIDE1OCwgMiwgMjE0LCAxODMsIDQ0LCA0MiwgMjUxLCAxNTgsIDIsIDIxNCwgMTgzLCA0MywgNDIsIDI1MSwgMTU4LCAKKyAgICAyLCAyMTYsIDExNSwgMjM2LCAwLCAyMTYsIDE0LCAyNDksIDE2MCwgNDQsIDQyLCAyNTEsIDE1OCwgMiwgMjE2LCAxMTUsIAorICAgIDIzNiwgMCwgMjUxLCAxNzUsIDI0OSwgMTYwLCA0MywgNDIsIDI1MSwgMTU4LCAyLCAyMTYsIDExNSwgMjM2LCAwLCAyNTEsIAorICAgIDE3NSwgMjQ5LCAxNjAsIDQ0LCA0MiwgMjUxLCAxNTgsIDIsIDIxNiwgMTE1LCAyMzYsIDAsIDIxNiwgMTQsIDI0OSwgMTYwLCAKKyAgICA0MywgMjU0LCAxMTAsIDI1MSwgMTU4LCAyLCAyNDcsIDEyMCwgNDQsIDI1NCwgMTEwLCAyNTEsIDE1OCwgMiwgMjQ3LCAxMjAsIAorICAgIDQzLCAyNTQsIDI2LCAyMzMsIDE1LCAxMjcsIDQ0LCAyNTQsIDI2LCAyNDIsIDEzMCwgMTI3LCA1MiwgNDMsIDI1NCwgMjYsIAorICAgIDI0MiwgMTMwLCAxMjcsIDUyLCA0NCwgMjU0LCAyNiwgMjMzLCAxNSwgMTI3LCA0MywgODUsIDIxNiwgNiwgMjIwLCA1MywgCisgICAgMTI3LCA0NCwgODUsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCAyNDYsIDExOCwgMjQ0LCAxMzUsIDY3LCAyMTAsIDM1LCAyMzIsIAorICAgIDIxMywgMjMxLCA4OCwgMjU0LCAxMTAsIDIyNiwgMTcwLCAyMzMsIDQ2LCA0NCwgMjU0LCAxMTAsIDIxNCwgMTIsIDIsIDIxOCwgCisgICAgMjM0LCAyMzEsIDg4LCA0NCwgMjU0LCAxMTAsIDIsIDI0NywgMTIwLCAyNTQsIDExMCwgMiwgMjIyLCA5MiwgMjM1LCAyMTUsIAorICAgIDI1NSwgMywgMjU0LCAxMDksIDIxOCwgMjU1LCAyNTQsIDExMCwgMjI2LCAxNzAsIDIzMywgNDYsIDIxOCwgMjU1LCAyNTQsIAorICAgIDExMCwgMjI2LCAxNzAsIDIxNCwgMTYzLCAyMTUsIDk0LCAyNTQsIDEwOSwgMjIzLCA0OSwgMjU0LCAxMDksIDI1NCwgMTEwLCAKKyAgICAyLCAyMTQsIDE4MywgMjIzLCA0OSwgMjU0LCAxMTAsIDIsIDIxNCwgMTgzLCAyMjYsIDI0OCwgMjU0LCAxMTAsIDIyNiwgCisgICAgMTcwLCAyMTQsIDE2MywgMjI2LCAyNDgsIDI1NCwgMTEwLCAyMjYsIDE3MCwgMjQ2LCAxMDYsIDIzMSwgODgsIDI1NCwgMTEwLCAKKyAgICAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgMTIwLCAyMiwgMjIyLCAyNTEsIDIzMSwgODgsIAorICAgIDI1NCwgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgMTIwLCAyMiwgMjMzLCA0NiwgCisgICAgMjMxLCA4OCwgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCAxMjQsIDIyLCAKKyAgICAyMjIsIDI1MSwgMjMxLCA4OCwgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCAKKyAgICA3LCAxMjQsIDIyLCAyMzMsIDQ2LCAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIAorICAgIDgwLCAyMjUsIDcsIDQ0LCAyMiwgMjE0LCAxNjMsIDIzMSwgODgsIDI1NCwgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAKKyAgICAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgNDMsIDIyLCAyMTQsIDE2MywgMjMxLCA4OCwgMjU0LCAxMTAsIDIsIDIwNCwgCisgICAgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCA0NCwgMjIsIDI0NiwgMTA2LCAyMzEsIDg4LCAyNTQsIAorICAgIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDQzLCAyMiwgMjQ2LCAxMDYsIDIyMywgCisgICAgNDksIDI0NSwgMTUyLCAyMjAsIDEyNywgMjQ1LCAxNTIsIDIyMCwgMTI4LCAyLCAyMjYsIDEyMywgMjQ1LCAxNTIsIDIyMCwgCisgICAgMTI4LCAyLCA0LCAyNTAsIDM2LCA0OCwgMjQ1LCAxNTIsIDIyMCwgMTI4LCAyLCA0NCwgODAsIDQ4LCAyNDUsIDE1MiwgMjIwLCAKKyAgICAxMjgsIDIsIDQzLCA4MCwgNDgsIDI1MCwgMzYsIDIsIDIwMywgMTMwLCAzNywgNjcsIDEzMCwgMzcsIDIyNiwgNywgMzcsIAorICAgIDIyMywgNTAsIDIxOSwgNDYsIDM3LCAyMjUsIDE3MSwgMjUwLCAzNiwgMjQ3LCAxNzMsIDI1MSwgNzgsIDIwMywgMjUyLCAKKyAgICAxNDEsIDIyLCAyMTYsIDE0LCAxNjMsIDI0NywgMTczLCAyNTEsIDc4LCA2NywgMTMwLCAyNTAsIDM2LCAyLCAyMTgsIDI0LCAKKyAgICAyMTEsIDE3OCwgMzcsIDI1NCwgODcsIDI0NywgMTY5LCA1MCwgMTIwLCA4MCwgMjE2LCAxMzksIDI1MCwgMzUsIDM3LCA3MSwgCisgICAgMjUxLCAxMTMsIDM3LCAyNTEsIDExMywgMzcsIDIzMywgMTQsIDM3LCAyNDIsIDEyOSwgMjUwLCAzNiwgMiwgNCwgMjUwLCAKKyAgICAzNiwgMjE2LCA0MiwgMjE2LCAxOTYsIDIyMiwgMjUxLCAyNTAsIDM2LCAyLCAxMTMsIDIwMywgMjE4LCA5MSwgMjE2LCA0MiwgCisgICAgMjE2LCAxOTYsIDIyMiwgMjUxLCA5MiwgMjIyLCAyMjgsIDI0NywgMjU1LCAyMTksIDk1LCA5MiwgMjQ0LCAxNzUsIDI0NywgCisgICAgMjU1LCAyMTksIDk1LCA5MiwgMjUzLCAyMTYsIDkyLCA0LCAyNTAsIDM1LCA5MiwgMjE4LCAyMzQsIDExMywgMjM1LCA2NSwgCisgICAgMjE4LCAyMzIsIDIxNSwgMjI2LCAyLCA1OSwgNDgsIDIxNSwgMjI2LCAyLCAyMTQsIDE4MywgMjIyLCA5MiwgMjM2LCAwLCAKKyAgICAyMTUsIDIyNSwgMjE1LCAyMjYsIDIsIDIyMCwgMTM0LCAyNTMsIDIwNywgMjUxLCAxNzQsIDQ0LCAyMTUsIDIyNiwgNzcsIAorICAgIDQzLCAyMTUsIDIyNSwgNDMsIDIxNSwgMjI2LCAyNTIsIDMwLCA2NywgMTMwLCA2NywgMjUyLCAxNDEsIDI1MiwgMzAsIDQ0LCAKKyAgICAyMTUsIDIyNSwgMjUxLCAxNjUsIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCAyNTEsIDE2NSwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIAorICAgIDg1LCAyNTEsIDE2NCwgMzAsIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCAzMCwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDcxLCAKKyAgICAyNDAsIDIzNiwgODUsIDI0MCwgMjM2LCA0MywgMjExLCAyNDQsIDI0NCwgMTM1LCA0NCwgMjExLCAyNDQsIDI0NCwgMTM1LCAKKyAgICA0MywgNTIsIDIxMSwgMjQ0LCAyNDQsIDEzNSwgNDQsIDUyLCAyMTEsIDI0NCwgMjQ0LCAxMzUsIDIzNSwgMjQ4LCAyMzUsIAorICAgIDIzNCwgMjE2LCAxMTIsIDExNywgMjM1LCAyMzQsIDIzNSwgMjM1LCAyMjksIDEwMiwgMiwgNjcsIDEzMCwgMjQ2LCAxMTIsIAorICAgIDIzMCwgODcsIDQyLCAyLCAyNDksIDE4MSwgMjI2LCAxMjcsIDIzNSwgMjQ2LCAyNTMsIDIzNywgMjE5LCAyMTksIDIyNCwgCisgICAgMTgwLCAyNDUsIDk4LCA1LCAyMiwgMjE5LCA5NywgMjI2LCA3LCAyNDUsIDk4LCA1LCAyMiwgMjE5LCA5NywgMjI2LCA4LCAyLCAKKyAgICAyMTYsIDg5LCA0OCwgMjQwLCAxMDQsIDIxNiwgNDIsIDIyLCAyMTksIDk3LCAyMjYsIDcsIDI0MiwgMTgzLCAyMTgsIDE1NSwgCisgICAgMjE2LCAxODUsIDI0NiwgMTA1LCAyMTUsIDIyNiwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDI0NiwgMTA1LCAyMTUsIDIyNiwgCisgICAgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDg1LCAyNDcsIDI0OSwgMiwgMTI0LCA3NCwgODUsIDIzMiwgMTA0LCA3MSwgMjUwLCAKKyAgICAzNiwgMiwgMTI0LCA3NCwgODUsIDI1MCwgMzYsIDIsIDEyNCwgNzQsIDI0NSwgODUsIDcxLCAyMTgsIDIzNCwgMjQ1LCA4NSwgCisgICAgODUsIDIxOCwgMjM0LCAyNDUsIDg1LCA3MSwgMjQ3LCAyNDgsIDI0NSwgODUsIDg1LCAyNDcsIDI0OCwgMjQ1LCA4NSwgNzEsIAorICAgIDI1MCwgMzUsIDI0NSwgODUsIDg1LCAyNTAsIDM1LCAyMjIsIDEzMiwgMjIzLCA1MCwgMjE5LCA0NywgMjI2LCAxNjcsIDIxOSwgCisgICAgNDcsIDIsIDIyNiwgMTIzLCAyMjMsIDUwLCAyMTksIDQ3LCAyLCAyMDMsIDkxLCAyNTEsIDI0OSwgMjE5LCA0NiwgMjUxLCAKKyAgICAyNDksIDIyMywgNTAsIDIxOSwgNDYsIDUyLCAyMjUsIDIyLCAyMTUsIDIxMSwgMjI1LCAyMiwgMjMzLCA0MiwgMjQ5LCA5MSwgCisgICAgMjU0LCAxMTAsIDEyNywgMjIyLCAyNDcsIDI0OSwgOTEsIDI1NCwgMTEwLCAxMjcsIDIxNiwgNzgsIDIzMCwgMTc5LCAyMzAsIAorICAgIDI0LCAzNywgNTksIDIyNiwgMTY3LCAyMzAsIDI0LCAzNywgOTYsIDIyNiwgMTY3LCAyMzAsIDI0LCAzNywgMzAsIDIyNiwgCisgICAgMTY3LCAyMzAsIDI0LCAyMTQsIDE3NiwgMjI2LCAxNjgsIDIsIDI0NywgMTIwLCAyMzAsIDI0LCAyMTQsIDE3NiwgMjI2LCAKKyAgICAxNjgsIDIsIDIyNSwgMjIsIDIzMCwgMjQsIDQyLCAyMzUsIDE5OSwgMjI2LCAxNjcsIDIzMCwgMjQsIDQyLCAyMTQsIDE3NiwgCisgICAgMjI2LCAxNjcsIDExMywgMjMyLCAxNDYsIDIyLCAyMjYsIDE2NywgMTEzLCAyMzIsIDE0NiwgMTc3LCAyMjYsIDE2NywgMjMwLCAKKyAgICAyNCwgMzAsIDIyNiwgMTY3LCAyMzAsIDE1NCwgMTEzLCAyMTgsIDQzLCAyMTgsIDQxLCAyLCAyMzUsIDIxMSwgMjI0LCAyNCwgCisgICAgMjM1LCAyMTIsIDIyNiwgMTY3LCAyNDQsIDk5LCAyMjUsIDI1NSwgMjM1LCAyMTEsIDIzNSwgMjEyLCAyLCA1MiwgOTEsIAorICAgIDIzNSwgMjEyLCAyNTMsIDE3MywgMiwgMjE5LCA5NSwgMjUwLCAzMiwgMjQzLCAyMjYsIDI1NCwgODgsIDIzNSwgMjA5LCAKKyAgICAyMzIsIDIxNCwgMjM1LCAyMTAsIDIsIDIyMywgMTE1LCAyMjUsIDIzNywgMjU0LCAyLCAyMjUsIDEsIDIzMiwgMjE0LCAyMzUsIAorICAgIDIxMCwgMiwgMjIwLCAxNTIsIDIyNSwgMjM3LCAyNTQsIDIsIDIyNSwgMSwgMjMyLCAyMTQsIDIzNSwgMjEwLCAyMjgsIDUyLCAKKyAgICAyMzUsIDI1MCwgMjE2LCAxOTYsIDIyNSwgMSwgMjM1LCAyMTIsIDI1NCwgMiwgMTE1LCAyMjUsIDExLCAyMjYsIDE2NywgCisgICAgMjI0LCAxOCwgMjM1LCAyMTIsIDIyNiwgMTY3LCAyMzUsIDIxMiwgMiwgMTQwLCA4MCwgMiwgMTAzLCAyMzUsIDIxMiwgMiwgCisgICAgMzAsIDUwLCAyMzUsIDIxMiwgMiwgMjM1LCAxOTgsIDIzNSwgMjEyLCAyLCAyMTQsIDE3NSwgMjM1LCAyMTIsIDIsIDIyNiwgCisgICAgMTIzLCAyMzUsIDIxMiwgMiwgMjE0LCAxODMsIDIzNSwgNjYsIDIzMywgODUsIDQzLCAyMTUsIDIyNiwgMjI2LCAxNjcsIAorICAgIDIxMCwgMTYwLCAxODcsIDIyMSwgMjAxLCAyNDksIDIwOSwgMjEwLCAxNjAsIDE4NywgMjIxLCAyMDEsIDIyNSwgNTYsIDIxMCwgCisgICAgMTYwLCAxODcsIDIyMSwgMjAxLCAyMjQsIDE3NiwgOTYsIDUsIDIsIDQsIDI1MCwgMzYsIDQ4LCA5NiwgNSwgMiwgMjUwLCAKKyAgICAzMSwgMjU1LCAxNSwgNDgsIDk2LCA1LCAyLCAyMTYsIDg5LCA0OCwgOTYsIDUsIDIsIDU5LCA1MSwgOTYsIDUsIDIsIDIxNiwgCisgICAgODksIDUxLCA5NiwgNSwgMiwgMjE4LCA2NSwgMTA1LCA5NiwgNSwgMiwgODUsIDIxNSwgMjI1LCAyMzAsIDE4MiwgNSwgMiwgCisgICAgMjQ5LCAyMjAsIDQ4LCAyMzAsIDE4MiwgNSwgMiwgNTksIDUxLCAyMzAsIDE4MiwgNSwgMiwgMjQ0LCAxNzUsIDI0NywgMTE4LCAKKyAgICAyMzAsIDE4MiwgNSwgMiwgMjIyLCAyMjgsIDI0NywgMTE4LCA5NiwgNSwgMjM2LCAwLCA0MywgMTYzLCAyNTAsIDM1LCA5NiwgCisgICAgNSwgMjM2LCAwLCA0NCwgMTYzLCAyNTAsIDM1LCAyMTMsIDI1NCwgMTc3LCAyNDksIDEzMSwgMjI0LCAxODAsIDIzMCwgODQsIAorICAgIDUsIDIsIDU5LCA0OCwgMjMwLCA4NCwgNSwgMiwgMjE0LCAxODMsIDIyMCwgMTQ5LCAyMjQsIDE4MSwgMiwgMjUxLCAxNzUsIAorICAgIDI0OSwgMjU1LCAyMTksIDc3LCAyMjQsIDE4MCwgMjMwLCA4NCwgNSwgMjM2LCAwLCA0MywgMTYzLCAyNTAsIDM1LCAyMzAsIAorICAgIDg0LCA1LCAyMzYsIDAsIDQ0LCAxNjMsIDI1MCwgMzUsIDM3LCAyMzAsIDg0LCA1LCAyLCAyNTAsIDMxLCAyNTUsIDE0LCAKKyAgICAyMzAsIDg0LCA1LCAyMzYsIDAsIDUyLCAyNTAsIDM1LCAzNywgMjQ3LCAxNjksIDUwLCA5NiwgNSwgMjM2LCAwLCAyMTUsIAorICAgIDIyNSwgMjMwLCAxODIsIDUsIDIzNiwgMCwgMjE1LCAyMjUsIDIzMCwgODQsIDUsIDIzNiwgMCwgMjE1LCAyMjUsIDIzNSwgCisgICAgMjA2LCAyMjQsIDE4MCwgMjIyLCAyNDIsIDIzNSwgMjA2LCAyMjQsIDE4MCwgMjEwLCAxNjAsIDE4NywgMjIzLCA5MCwgMjQ5LCAKKyAgICAyMDksIDI1NCwgMTM0LCAxNzcsIDI0OSwgMTY1LCAyMzUsIDE5OSwgMiwgMjQ3LCAxMjAsIDIxNCwgMTc2LCAyLCAyMzAsIAorICAgIDE4MiwgNTAsIDIxNCwgMTc2LCAyLCAyMjYsIDEyMywgMjM1LCAxOTksIDIsIDIyNiwgMTIzLCAyMzUsIDE5OSwgMiwgMjMyLCAKKyAgICAxNDYsIDI1NCwgMTE4LCAyMTQsIDE3NiwgMiwgMjMyLCAxNDYsIDIyNiwgMTU4LCAyMTQsIDE3NiwgNzcsIDIzNSwgMTk4LCAKKyAgICAyMzUsIDE5OSwgNzcsIDIxNCwgMTc1LCAyMTQsIDE3NiwgNzcsIDI1MiwgMTQxLCA3NywgMjM1LCAxOTgsIDIzNSwgMTk5LCAKKyAgICA3NywgMjUyLCAxNDEsIDc3LCAyMTQsIDE3NSwgMjE0LCAxNzYsIDI1MiwgMzAsIDIyLCAyMzUsIDY1LCAyLCAyMTQsIDE3NSwgCisgICAgMjM1LCAxOTksIDI1MiwgMzAsIDIyLCAyMzUsIDY1LCAyLCAyMzUsIDE5OCwgMjUwLCAwLCAyMTQsIDE3NiwgMiwgMjIwLCAKKyAgICAxMzMsIDI1MCwgMCwgMjM1LCAxOTksIDIsIDIyMCwgMTMzLCA1MiwgNDIsIDIzNSwgMTk4LCA1MiwgNDIsIDIxNCwgMTc1LCAKKyAgICAyNTAsIDAsIDIxNCwgMTc2LCAyLCAyMjAsIDEzNCwgMjIsIDIxOSwgNzcsIDIyNCwgMTgwLCAyMzIsIDE0NiwgMjIsIDIsIAorICAgIDU5LCA0OCwgMjMyLCAxNDYsIDE3NywgMiwgNTksIDQ4LCA1MiwgMjMyLCAxNDYsIDI1NCwgMTE4LCA1MiwgMjMyLCAxNDYsIAorICAgIDIyNiwgMTU4LCAxMTMsIDIzNSwgMjAwLCAyMzIsIDE0NiwgMjU0LCAxMTgsIDExMywgMjM1LCAyMDAsIDIzMiwgMTQ2LCAKKyAgICAyMjYsIDE1OCwgMjE5LCA4NSwgMjMzLCA4NSwgMjI2LCAxNTgsIDIxOSwgODUsIDIzMywgODUsIDI1NCwgMTE4LCAyMzIsIAorICAgIDE0NiwgMTc3LCAyMjYsIDEyMSwgMjMyLCAxNDYsIDI1NCwgMTE4LCAyMzIsIDE0NiwgMjIsIDIsIDIzMCwgMjI0LCAyMTgsIAorICAgIDEzOSwgMjMyLCAxNDYsIDE3NywgMiwgMjMwLCAyMjQsIDIxOCwgMTM5LCAyMzIsIDE0NiwgMjIsIDIsIDIwMywgMjQ4LCAKKyAgICAxNTYsIDIzMiwgMTQ2LCAxNzcsIDIsIDIwMywgMjQ4LCAxNTYsIDIzMiwgMTQ2LCAyMiwgMiwgNTIsIDIyNiwgMTIzLCAyMzIsIAorICAgIDE0NiwgMjIsIDIsIDIxNCwgMTgzLCAyMzIsIDE0NiwgMjIsIDIsIDUyLCAyMTQsIDE4MywgNCwgMjEzLCAyNTEsIDIsIDIxNCwgCisgICAgMTgzLCAyMzIsIDE0NiwgMTc3LCAyLCA1MiwgMjI2LCAxMjMsIDIzMiwgMTQ2LCAxNzcsIDIsIDUyLCAyMTQsIDE4MywgMjEwLCAKKyAgICAxNjAsIDE4NywgMjQ3LCAxMjksIDI1NCwgNzksIDIxMCwgMTYwLCAxODcsIDIyMywgMTQ4LCAyNTQsIDc5LCAyNDUsIDk4LCAKKyAgICA1LCAyLCA1OSwgNTEsIDI0MCwgMTA0LCAyLCA1OSwgNDgsIDIxNSwgMjExLCAyMDMsIDI1MiwgMTQxLCAyLCA1MiwgNjcsIAorICAgIDkxLCAyMTUsIDIxMSwgMjAzLCAyNTIsIDE0MSwgMiwgMjE1LCAyMTEsIDY3LCA5MSwgMjE2LCA4OSwgMjI2LCAxNjgsIDIsIAorICAgIDU5LCA0OCwgMjE2LCA4OSwgMjI2LCAxNjgsIDIsIDIyMiwgMjI4LCAyNDcsIDExOCwgMjE5LCAxNjIsIDIzMCwgMTgyLCAKKyAgICAyMTksIDE2MSwgMjQ5LCAxOTksIDIsIDU5LCA0OCwgMjQ1LCA5OCwgMiwgMjUzLCAyMTYsIDI1NCwgMTQ4LCAxMjgsIDIxNiwgCisgICAgNDIsIDIsIDI1MCwgMzEsIDI1NSwgMTQsIDI1NCwgNDgsIDEyOCwgMTc3LCAxMjgsIDExMSwgMjQ1LCA5OCwgNSwgNzcsIDk2LCAKKyAgICA1MCwgOTYsIDUsIDc3LCAyNDUsIDk4LCA1MCwgMjQ1LCA5OCwgNSwgNzcsIDIxNiwgODksIDIyNiwgMTY3LCA1MiwgMjQ5LCAKKyAgICAyMjcsIDI0NSwgOTksIDExMywgMjQ5LCAxOTQsIDI0NSwgOTgsIDIxOSwgMTc2LCAxMzQsIDI0OSwgMTk0LCAyNDUsIDk4LCAKKyAgICAyMTksIDE3NiwgMjQ1LCA5OCwgNSwgMiwgMTEzLCAxNzAsIDc3LCAyMiwgMTEzLCAxNzAsIDUxLCAyNDUsIDk0LCAyLCAyNDQsIAorICAgIDExLCAxNzAsIDQ4LCAyMzMsIDE1LCAyLCAyNTAsIDM2LCAyMzUsIDIxNSwgMjQyLCAxMzAsIDIsIDI1MCwgMzYsIDIzNSwgCisgICAgMjE1LCAyMzMsIDE1LCAyLCAyMjQsIDEzLCAxNjQsIDQ4LCAyNDIsIDEzMCwgMiwgMjI0LCAxMywgMTY0LCA0OCwgMjMzLCAKKyAgICAxNSwgMTc3LCAyMTksIDk3LCAxMjgsIDExMSwgMjQyLCAxMzAsIDE3NywgMjE5LCA5NywgMTI4LCAxMTEsIDIzMywgMTUsIAorICAgIDE3NywgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAyLCA1OSwgMjM1LCAyMTUsIDI0MiwgMTMwLCAxNzcsIDIxOSwgOTcsIDEyOCwgCisgICAgMjE2LCA0MiwgMiwgNTksIDIzNSwgMjE1LCAyMzMsIDE1LCAxNzcsIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMiwgNTksIDQ4LCAKKyAgICAyNDIsIDEzMCwgMTc3LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDIsIDU5LCA0OCwgMjMzLCAxNSwgMTc3LCAyMTksIDk3LCAKKyAgICAxMjgsIDIxNiwgNDIsIDIsIDU5LCA3NywgMjIyLCAyNTEsIDI0MiwgMTMwLCAxNzcsIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgCisgICAgMiwgNTksIDc3LCAyMzMsIDQ2LCAyMzMsIDE1LCAxNzcsIDI1NCwgNDksIDI0MiwgMTMwLCAxNzcsIDI1NCwgNDksIDIzMywgCisgICAgMTUsIDIyLCAyMTksIDE1MywgMjI4LCA1MiwgMTI4LCAxMTEsIDI0MiwgMTMwLCAyMiwgMjE5LCAxNTMsIDIyOCwgNTIsIAorICAgIDEyOCwgMTExLCAyMzMsIDE1LCAyMiwgMjI4LCA1MiwgMjU0LCA0OSwgMjQyLCAxMzAsIDIyLCAyMjgsIDUyLCAyNTQsIDQ5LCAKKyAgICAyMzMsIDE1LCA3NywgMjQ2LCAxMTEsIDEyOCwgNzcsIDI0MiwgMTI5LCAyNDIsIDEzMCwgNzcsIDI0NiwgMTExLCAxMjgsIAorICAgIDc3LCAyMzMsIDE0LCAyMzMsIDE1LCA3NywgMjE5LCAxNjIsIDE3NywgMjQ1LCA5OSwgMjQyLCAxMzAsIDc3LCAyMTksIDE2MiwgCisgICAgMTc3LCAyNDUsIDk5LCAyMzMsIDE1LCA3NywgMjE5LCAxNjIsIDc3LCAyNDIsIDEyOSwgMjQyLCAxMzAsIDc3LCAyMTksIAorICAgIDE2MiwgNzcsIDIzMywgMTQsIDIzMywgMTUsIDc3LCAyNDIsIDEzMCwgNzcsIDI0NiwgMTExLCAyNDUsIDk5LCAyNDIsIDEzMCwgCisgICAgNzcsIDIzMywgMTUsIDc3LCAyNDYsIDExMSwgMjQ1LCA5OSwgMjMzLCAxNSwgNzcsIDIxOSwgOTcsIDEyOCwgNzcsIDI0MiwgCisgICAgMTMwLCA3NywgMjE5LCA5NywgMjQ1LCA5OSwgMjQyLCAxMzAsIDc3LCAyMTksIDk3LCAxMjgsIDc3LCAyMzMsIDE1LCA3NywgCisgICAgMjE5LCA5NywgMjQ1LCA5OSwgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgMTQsIDIxOSwgOTcsIDEyOCwgMjE2LCAKKyAgICA0MiwgMTc3LCAyNDIsIDEyOSwgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgMTUsIDIsIDU5LCAyMzUsIDIxNSwgCisgICAgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAxNzcsIDI0MiwgMTMwLCAyLCA1OSwgMjM1LCAyMTUsIDI0NiwgMTExLCAxMjgsIAorICAgIDIxNiwgNDIsIDE3NywgMjMzLCAxNCwgMjQ2LCAxMTEsIDEyOCwgMjE2LCA0MiwgMTc3LCAyNDIsIDEyOSwgMjQ2LCAxMTEsIAorICAgIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMTc3LCAyMzMsIDE0LCAyNDYsIDExMSwgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAKKyAgICAxNzcsIDI0MiwgMTI5LCAyMTksIDE2MiwgMTc3LCAyMzMsIDE0LCAyMTksIDE2MiwgMTc3LCAyNDIsIDEyOSwgMjE5LCAxNjIsIAorICAgIDc3LCAyMzMsIDE1LCA3NywgMjQ1LCA5OCwgNTAsIDIxOSwgMTYyLCA3NywgMjQyLCAxMzAsIDc3LCAyNDUsIDk4LCA1MCwgCisgICAgNTIsIDIyOSwgOTEsIDIzMywgMTQsIDUyLCAyMjksIDkxLCAyNDIsIDEyOSwgNTIsIDIyOSwgOTEsIDIzMywgMTUsIDIsIAorICAgIDIxNCwgMTgzLCAyNDIsIDEzMCwgMjI2LCAxMjEsIDIzMywgMTQsIDI0MiwgMTMwLCAyNTIsIDMwLCAyMzMsIDE0LCAyMzMsIAorICAgIDE1LCAyNTAsIDAsIDI1MSwgNzgsIDI0OSwgOTIsIDI0MiwgMTMwLCAyNTAsIDAsIDI1MSwgNzgsIDI0OSwgOTIsIDIzMywgCisgICAgMTUsIDI1MCwgMCwgMjUxLCA3OCwgMjQ5LCA5MywgNzcsIDIxOSwgOTcsIDI0NSwgOTksIDI0MiwgMTMwLCAyNTAsIDAsIAorICAgIDI1MSwgNzgsIDI0OSwgOTMsIDc3LCAyMTksIDk3LCAyNDUsIDk5LCAyMTksIDc4LCAyMTYsIDIwMCwgMjMzLCA4MywgMjE2LCAKKyAgICAyMDAsIDIxOSwgNzgsIDIxNiwgMjAxLCAxNzcsIDEyOCwgMTExLCAyMzMsIDgzLCAyMTYsIDIwMSwgMTc3LCAxMjgsIDExMSwgCisgICAgMjQ1LCA5OCwgNSwgMiwgMjUxLCAxMDgsIDQ4LCAyMjQsIDIwMywgNzcsIDIxOSwgMTUzLCAyNDUsIDk4LCA1MCwgMjE4LCAKKyAgICA1NiwgNzcsIDIxOSwgMTUzLCAyNDUsIDk4LCA1MCwgMjI0LCAyMDMsIDc3LCAyMTksIDE1MywgMjI4LCA1MiwgMTI4LCAxMTEsIAorICAgIDIxOCwgNTYsIDc3LCAyMTksIDE1MywgMjI4LCA1MiwgMTI4LCAxMTEsIDIyNCwgMjAzLCA3NywgMjQ1LCA5OCwgNTAsIDIxOCwgCisgICAgNTYsIDc3LCAyNDUsIDk4LCA1MCwgMjI0LCAyMDMsIDc3LCAyMjgsIDUyLCAxMjgsIDExMSwgMjE4LCA1NiwgNzcsIDIyOCwgCisgICAgNTIsIDEyOCwgMTExLCAyMjQsIDIwMywgNzcsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjE4LCA1NiwgNzcsIDI1NCwgMTQ4LCAKKyAgICAxMjgsIDExMSwgMjI0LCAyMDMsIDc3LCAyMjgsIDUyLCAyNTQsIDE0OCwgMTI4LCAxMTEsIDIxOCwgNTYsIDc3LCAyMjgsIAorICAgIDUyLCAyNTQsIDE0OCwgMTI4LCAxMTEsIDUyLCAyMjQsIDIwMiwgNTIsIDIxOCwgNTUsIDIxOCwgNjQsIDIsIDI0NywgMTIwLCAKKyAgICAyMTgsIDIyLCAyLCAyNDcsIDEyMCwgMjE4LCA2NCwgMiwgOTYsIDUsIDUxLCAyMTgsIDIyLCAyLCA5NiwgNSwgNTEsIDIxOCwgCisgICAgNjQsIDIsIDIzMCwgODQsIDUsIDUxLCAyMTgsIDIyLCAyLCAyMzAsIDg0LCA1LCA1MSwgMjE4LCA2NCwgNjQsIDE3NywgMTI4LCAKKyAgICAyMTYsIDQyLCAyLCA1OSwgNDgsIDIxOCwgMjIsIDY0LCAxNzcsIDEyOCwgMjE2LCA0MiwgMiwgNTksIDQ4LCAyMTgsIDY0LCAKKyAgICA2NCwgNzcsIDI0NSwgOTgsIDUwLCAyMTgsIDIyLCA2NCwgNzcsIDI0NSwgOTgsIDUwLCAyMTgsIDY0LCA2NCwgNzcsIDIxNiwgCisgICAgODksIDIyNiwgMTY3LCAyMTgsIDIyLCA2NCwgNzcsIDIxNiwgODksIDIyNiwgMTY3LCAyMTgsIDY0LCA2NCwgNzcsIDI1NCwgCisgICAgMTQ4LCAxMjgsIDExMSwgMjE4LCAyMiwgNjQsIDc3LCAyNTQsIDE0OCwgMTI4LCAxMTEsIDIxOCwgNjQsIDY0LCA3NywgMjI4LCAKKyAgICA1MiwgMTI4LCAxMTEsIDIxOCwgMjIsIDY0LCA3NywgMjI4LCA1MiwgMTI4LCAxMTEsIDQyLCA0MywgMjA0LCA5MywgMjI2LCAKKyAgICAxNjcsIDQyLCA0NCwgMjA0LCA5MywgMjI2LCAxNjcsIDI1MCwgMCwgMjE4LCA2MywgMjUwLCAwLCAyMTgsIDIxLCAyNTAsIDAsIAorICAgIDIxOCwgNjQsIDE3NywgMTI4LCAxMTEsIDI1MCwgMCwgMjE4LCAyMiwgMTc3LCAxMjgsIDExMSwgMjE4LCA2NCwgNzcsIDIxOCwgCisgICAgMjEsIDIxOCwgMjIsIDc3LCAyMTgsIDYzLCAyMTgsIDY0LCA3NywgMjE4LCA2MywgMjE4LCAyMiwgNzcsIDIxOCwgMjEsIAorICAgIDIxOCwgMjIsIDI1MiwgMzAsIDIxOCwgNjMsIDIxOCwgMjIsIDI1MiwgMzAsIDIyLCAyMzUsIDY1LCAyNTEsIDc4LCAyNDgsIAorICAgIDE1NywgMiwgMjE4LCA2MywgMjQ1LCAxNzAsIDY0LCAyMjYsIDE3MCwgMjQ2LCAxMDMsIDIyNSwgNDgsIDIsIDIxNywgMTIsIAorICAgIDIxNiwgMTMsIDIxNSwgMjQwLCAyMzUsIDE5OCwgMjQ0LCAyMSwgMjI4LCA2NSwgMjE5LCAyNTEsIDQzLCAyMTcsIDg3LCAKKyAgICAyMTksIDI1MSwgMTI0LCAyMTcsIDg3LCAyMTksIDI1MSwgMTIwLCAyMTcsIDg3LCAyMjUsIDE3MiwgMiwgMjIyLCA5MSwgNjcsIAorICAgIDI1MiwgMTQxLCAyMTUsIDIxMSwgNDQsIDIxNSwgOTMsIDUyLCA2NywgMjUyLCAxNDEsIDQzLCAyMTUsIDkzLCA2NywgMjUyLCAKKyAgICAxNDEsIDUyLCA0MywgMjE1LCA5MywgNTIsIDY3LCAyNTIsIDE0MSwgNTIsIDQzLCAyMTUsIDkzLCAxOTksIDI0OCwgMTU3LCAKKyAgICAyNDMsIDI0MywgNDMsIDIzMSwgNjMsIDY0LCA1MiwgMjEzLCAyMzksIDIxOSwgMjUxLCAxMjQsIDIxNywgODgsIDIsIDIyNiwgCisgICAgMTIzLCAyMTksIDI1MSwgMTIwLCAyMTcsIDg4LCAyLCAyMTQsIDE4MywgMjE5LCAyNTEsIDEyMCwgMjE3LCA4OCwgNzcsIAorICAgIDIxOSwgMjUxLCAxMjQsIDIxNywgODcsIDUyLCAxMjQsIDIxNywgODcsIDUyLCAxMjAsIDIxNywgODcsIDUyLCAyMTgsIDEwMywgCisgICAgMjI4LCA1MiwgNTAsIDIyMywgNDksIDUyLCAyMTgsIDEwMywgMjI4LCA1MiwgNTAsIDI0NywgMTM4LCAyMjgsIDUyLCAyNDcsIAorICAgIDE3NSwgMiwgMjIzLCA0OSwgMjI5LCAxMDEsIDIxOSwgOTUsIDY3LCAyMzIsIDIxNCwgMiwgMjUwLCAzNiwgNDgsIDY3LCAKKyAgICAyMzIsIDIxNCwgMiwgMjUwLCAzNiwgNTEsIDEyNCwgMjE3LCA4OCwgMiwgMjUwLCAzNiwgNTEsIDIyNiwgOCwgMiwgMjAzLCAKKyAgICA5MSwgMjI2LCA4LCAyLCAyMTYsIDg5LCAyMjYsIDE2NywgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgMjUxLCAyNDQsIDIyMywgCisgICAgOTEsIDIxNSwgMjExLCA2NywgMjUyLCAxNDEsIDIsIDIwMywgOTEsIDIxNSwgMjExLCAyNDksIDIyNywgMjI2LCAxNjcsIAorICAgIDIxNSwgMjExLCAyMjksIDkxLCAyMzMsIDE0LCAyMTUsIDIxMSwgMjI5LCA5MSwgMjQyLCAxMjksIDI0NiwgMTExLCAyMTksIAorICAgIDk3LCAyMzMsIDE1LCAxNzcsIDEyOCwgMTExLCAyNDYsIDExMSwgMjE5LCA5NywgMjQyLCAxMzAsIDE3NywgMTI4LCAxMTEsIAorICAgIDIxNSwgMjExLCAyMTksIDQ3LCAyNTEsIDI0NCwgMjIzLCA5MSwgMjMzLCA4NSwgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgCisgICAgMjI2LCAxNjcsIDUyLCAyMTksIDQ3LCAyMjYsIDE2NywgNzEsIDY3LCAxMzAsIDIzMCwgMjQsIDcxLCA2NywgMTMwLCAyMjgsIAorICAgIDU2LCAyNDUsIDIyMCwgNzEsIDc0LCAyMjgsIDU2LCAyMTIsIDksIDcxLCA3NCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDcxLCA3NCwgCisgICAgMjE5LCAyOCwgMjEyLCA5LCA3MSwgNzQsIDQzLCA0NCwgNzEsIDc0LCAxNDAsIDg1LCA3NCwgMjE0LCAxNTMsIDg1LCA3NCwgCisgICAgMjQ2LCAxMDQsIDg1LCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDg1LCA3NCwgMjI4LCA1NiwgMjEyLCA5LCA4NSwgNzQsIAorICAgIDIxOSwgMjgsIDI0NSwgMjIwLCA4NSwgNzQsIDIxOSwgMjgsIDIxMiwgOSwgODUsIDc0LCA0MywgNDQsIDg1LCA3NCwgMTIwLCAKKyAgICAxMjQsIDg1LCA3NCwgOTcsIDgwLCAyLCAyMTYsIDc3LCAyNDYsIDEwMywgOTcsIDgwLCAyLCAyMTYsIDc3LCAyMTQsIDE1MiwgCisgICAgMTQwLCA4MCwgMiwgMjE2LCA3NywgMjQ2LCAxMDMsIDE0MCwgODAsIDIsIDIxNiwgNzcsIDIxNCwgMTUyLCA0MiwgMiwgMjE2LCAKKyAgICAxNCwgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDI1MSwgMTc1LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAKKyAgICAyNDcsIDI1NSwgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDIzMiwgMTA4LCA0MywgMjQ3LCAyNTUsIDE2MywgMjUxLCAyMjEsIAorICAgIDI0NywgMjQ5LCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgMjQ3LCAyNDksIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCAyNDcsIDI0OSwgCisgICAgMiwgMjE2LCAxNCwgMTYzLCAyNTEsIDIyMSwgMjQ3LCAyNDksIDIsIDI1MSwgMTc1LCAxNjMsIDI1MSwgMjIxLCAyNDYsIAorICAgIDExOCwgMjE4LCAyMzQsIDg1LCAyMzMsIDg1LCAyMTgsIDIzNCwgNzEsIDIzMywgODUsIDIxOCwgMjM0LCA4NSwgMjEzLCAKKyAgICAxODcsIDQsIDIxOCwgMjM0LCA3MSwgMjEzLCAxODcsIDQsIDIxOCwgMjM0LCA4NSwgMjI1LCAxOTAsIDcxLCAyMjUsIDE5MCwgCisgICAgNzEsIDI0MSwgMTkzLCA4NSwgMjQxLCAxOTMsIDIwMywgODUsIDI0MSwgMTkzLCA4NSwgMjMzLCA4NSwgMjUwLCAzNSwgODUsIAorICAgIDIzMSwgODIsIDI0NywgMjQ4LCA3MSwgMjMxLCA4MiwgMjQ3LCAyNDgsIDg1LCAyMzEsIDgyLCAyMzIsIDEwNCwgNzEsIDIzMSwgCisgICAgODIsIDIzMiwgMTA0LCA4NSwgNCwgMjQ3LCAyNDgsIDg1LCA0LCAyMzIsIDEwNCwgNzEsIDQsIDIzMiwgMTA0LCA4NSwgMjAzLCAKKyAgICAyNDUsIDE2NCwgNzEsIDIwMywgMjQ1LCAxNjQsIDg1LCA2NywgMjQ1LCAxNjQsIDcxLCA2NywgMjQ1LCAxNjQsIDQzLCA4MCwgCisgICAgMiwgNCwgMjUwLCAzNSwgMTM0LCAxNDAsIDI1MywgMjQ3LCA0MywgODAsIDIsIDM3LCAyMjUsIDIyLCAxOTksIDE0MCwgMjE4LCAKKyAgICAyMzAsIDc0LCAxNDAsIDIxNSwgNTgsIDgwLCAyLCA2NywgOTEsIDE0MCwgMjE1LCA1OCwgODAsIDIsIDUyLCA2NywgOTEsIAorICAgIDE0MCwgMjE1LCA1OCwgODAsIDI0MywgMjQzLCAxMzAsIDE0MCwgMjE1LCA1OCwgMjE1LCAyMTEsIDI0OCwgMTU3LCA3NCwgCisgICAgMTQwLCA4MCwgMiwgMjQ2LCAxMTgsIDIxOCwgMTM5LCAxNDAsIDgwLCAyLCAyMTcsIDc4LCAyLCA2NywgOTEsIDE0MCwgODAsIAorICAgIDIsIDIxNywgNzgsIDIsIDUyLCA2NywgOTEsIDE0MCwgMjE1LCA1OCwgODAsIDIsIDIxNywgNzcsIDE0MCwgMjE1LCA1OCwgCisgICAgODAsIDIsIDIxNywgNzgsIDIsIDY3LCA5MSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OCwgMiwgNTIsIDY3LCA5MSwgCisgICAgMTQwLCA4MCwgMjE2LCAxMzksIDIxMSwgMTc4LCAyMTIsIDM2LCA4MCwgMjI1LCA3LCAyNDcsIDE5NSwgMjMzLCA0NiwgMjQ1LCAKKyAgICA5OCwgNSwgNzcsIDE0MCwgNzQsIDIyMywgNTAsIDIxNiwgODksIDIyNiwgMTY4LCA3NywgMTQwLCA3NCwgMTQwLCA4MCwgNzcsIAorICAgIDIyMywgNTAsIDI1NCwgMTQ4LCAxMjgsIDExMSwgOTcsIDgwLCAyMTYsIDEzOSwgMjQyLCAxMjksIDk3LCA4MCwgMjE2LCAKKyAgICAxMzksIDIxOCwgMjEsIDE0MCwgMjI0LCAyNCwgNzQsIDk3LCAyMjQsIDI0LCA3NCwgMjIzLCA1MCwgMjE2LCA4OSwgMjI2LCAKKyAgICAxNjgsIDc3LCA5NywgNzQsIDk3LCA4MCwgNzcsIDIyMywgNTAsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjE2LCA4OSwgMjI2LCAKKyAgICAxNjgsIDc3LCAxNDAsIDc0LCAxNDAsIDgwLCA3NywgMjU0LCAxNDgsIDEyOCwgMTExLCAxNDAsIDgwLCA3NywgMjIzLCA1MCwgCisgICAgMjE2LCA4OSwgMjI2LCAxNjcsIDk3LCA4MCwgNzcsIDIyMywgNTAsIDIxNiwgODksIDIyNiwgMTY3LCA3MSwgMjMxLCA4MiwgCisgICAgMjE4LCAxNTYsIDg1LCA0LCAyMTgsIDE1NiwgNzEsIDQsIDIxOCwgMTU2LCA4NSwgMjIyLCAyNDcsIDIyNSwgMTkwLCA3MSwgCisgICAgMjIyLCAyNDcsIDIyNSwgMTkwLCAxMTQsIDIzMywgODUsIDI1MCwgMzUsIDExNCwgMjI2LCAxMjQsIDIsIDIyNiwgMTI0LCAKKyAgICAyMzUsIDIxNSwgMTE0LCAyNTAsIDM2LCAyLCAyNTAsIDM2LCAyMzUsIDIxNSwgMTE0LCAyNTAsIDM1LCAxMTQsIDM3LCAyMjEsIAorICAgIDI1NCwgMTQ1LCA2LCAxLCAyNTMsIDE1OSwgMTQ1LCA2LCAxLCAyNTEsIDExNywgMTQ1LCA2LCAxLCAyMTMsIDI1MywgMTQ1LCAKKyAgICA2LCAxLCAyNDIsIDE4NSwgMTQ1LCA2LCAxLCAyNDcsIDE0MCwgMTQ1LCA2LCAxLCAyMTEsIDIxLCAxNDUsIDYsIDEsIDIxMCwgCisgICAgNjgsIDE0NSwgNiwgMSwgMjQ2LCAzNCwgMTQ1LCA2LCAxLCAyMTAsIDkxLCAxNDUsIDYsIDEsIDIzNSwgMTQ4LCAxNDUsIDYsIAorICAgIDEsIDY1LCAyMzUsIDE0OCwgMTQ1LCA2LCAxLCA3MywgMTQ1LCA2LCAxLCAyNDcsIDE2MCwgMTQ1LCA2LCAxLCAyMzQsIDI0MCwgCisgICAgMTQ1LCA2LCAxLCAyMzIsIDE4NiwgMTQ1LCA2LCAxLCAyMzAsIDI5LCAxNDUsIDYsIDEsIDIyOSwgMTkxLCAxNDUsIDYsIDEsIAorICAgIDIyNiwgMTg1LCAxNDUsIDYsIDEsIDIyNSwgNCwgMTQ1LCA2LCAxLCAyMjIsIDIyNywgMTQ1LCA2LCAxLCAyMTksIDgzLCAKKyAgICAxNDUsIDYsIDEsIDIxNSwgODEsIDE0NSwgNiwgMSwgMjE0LCAyMDEsIDE0NSwgNiwgMSwgMjQzLCAyNDYsIDE0NSwgNiwgMSwgCisgICAgMjQxLCAxOTksIDE0NSwgNiwgMSwgMjI2LCAxMzUsIDE0NSwgNiwgMSwgMjI1LCAyMjEsIDE0NSwgNiwgMSwgMjE5LCAyMjgsIAorICAgIDE0NSwgNiwgMSwgMjE1LCAxNjcsIDE0NSwgNiwgMSwgMjUwLCA3NSwgMTQ1LCA2LCAxLCAyMjAsIDEwMiwgMTQ1LCA2LCAxLCAKKyAgICAyMTEsIDI3LCAxNDUsIDYsIDEsIDIxMSwgMjksIDE0NSwgNiwgMSwgMjExLCA1NywgMTQ1LCA2LCAxLCAyMTgsIDI1MywgCisgICAgMTYyLCAxNDUsIDYsIDEsIDIxMCwgMjEyLCAxNDUsIDYsIDEsIDQsIDIxMCwgMTgzLCAxNDUsIDYsIDEsIDQsIDIxMCwgMTg0LCAKKyAgICAyLCAyMTcsIDc3LCAxNDUsIDYsIDEsIDIxMCwgMjQ0LCAxNDUsIDYsIDEsIDIzNSwgMTg0LCA0LCAyMTAsIDE4MywgMTQ1LCAKKyAgICA2LCAxLCAyNTEsIDI0OSwgMjEwLCAxODMsIDE0NSwgNiwgMSwgMjM1LCAxODQsIDI1MSwgMjQ5LCAyMTAsIDE4MywgMTQ1LCAKKyAgICA2LCAxLCAyNDQsIDgyLCAxNDUsIDYsIDEsIDIzNSwgMTQ2LCAxNDUsIDYsIDEsIDIxOSwgMjI3LCAxNDUsIDYsIDEsIDIxNSwgCisgICAgMjAyLCA2MSwgMTQ1LCA2LCAxLCAyMzMsIDc1LCAyMzAsIDI5LCAxNDUsIDQsIDEsIDI1MywgMTU5LCAxNDUsIDQsIDEsIAorICAgIDI1MSwgMTE3LCAxNDUsIDQsIDEsIDIxMywgMjUzLCAxNDUsIDQsIDEsIDI0MiwgMTg1LCAxNDUsIDQsIDEsIDI0NywgMTQwLCAKKyAgICAxNDUsIDQsIDEsIDIxMSwgMjEsIDE0NSwgNCwgMSwgMjEwLCA2OCwgMTQ1LCA0LCAxLCAyNDYsIDM0LCAxNDUsIDQsIDEsIAorICAgIDIxMCwgOTEsIDE0NSwgNCwgMSwgMjM1LCAxNDgsIDE0NSwgNCwgMSwgNjUsIDIzNSwgMTQ4LCAxNDUsIDQsIDEsIDczLCAKKyAgICAxNDUsIDQsIDEsIDI0NywgMTYwLCAxNDUsIDQsIDEsIDIzNCwgMjQwLCAxNDUsIDQsIDEsIDIzMiwgMTg2LCAxNDUsIDQsIDEsIAorICAgIDIzMCwgMjksIDE0NSwgNCwgMSwgMjI5LCAxOTEsIDE0NSwgNCwgMSwgMjI2LCAxODUsIDE0NSwgNCwgMSwgMjI1LCA0LCAKKyAgICAxNDUsIDQsIDEsIDIyMiwgMjI3LCAxNDUsIDQsIDEsIDIxOSwgODMsIDE0NSwgNCwgMSwgMjE1LCA4MSwgMTQ1LCA0LCAxLCAKKyAgICAyMTQsIDIwMSwgMTQ1LCA0LCAxLCAyNDMsIDI0NiwgMTQ1LCA0LCAxLCAyNDEsIDE5OSwgMTQ1LCA0LCAxLCAyMjYsIDEzNSwgCisgICAgMTQ1LCA0LCAxLCAyMjUsIDIyMSwgMTQ1LCA0LCAxLCAyMTksIDIyOCwgMTQ1LCA0LCAxLCAyMTUsIDE2NywgMTQ1LCA0LCAxLCAKKyAgICAyNTAsIDc1LCAxNDUsIDQsIDEsIDIyMCwgMTAyLCAxNDUsIDQsIDEsIDIxMSwgMjcsIDE0NSwgNCwgMSwgMjExLCAyOSwgCisgICAgMTQ1LCA0LCAxLCAyMTEsIDU3LCAxNDUsIDQsIDEsIDIxOCwgMjUzLCAxNjIsIDE0NSwgNCwgMSwgMjEwLCAyMTIsIDE0NSwgCisgICAgNCwgMSwgNCwgMjEwLCAxODMsIDE0NSwgNCwgMSwgNCwgMjEwLCAxODQsIDIsIDIxNywgNzcsIDE0NSwgNCwgMSwgMjEwLCAKKyAgICAyNDQsIDE0NSwgNCwgMSwgMjM1LCAxODQsIDQsIDIxMCwgMTgzLCAxNDUsIDQsIDEsIDI1MSwgMjQ5LCAyMTAsIDE4MywgCisgICAgMTQ1LCA0LCAxLCAyMzUsIDE4NCwgMjUxLCAyNDksIDIxMCwgMTgzLCAxNDUsIDQsIDEsIDI0NCwgODIsIDE0NSwgNCwgMSwgCisgICAgMjM1LCAxNDYsIDE0NSwgNCwgMSwgMjE5LCAyMjcsIDE0NSwgNCwgMSwgMjE1LCAyMDIsIDYxLCAxNDUsIDQsIDEsIDIzMywgCisgICAgNzUsIDIzMCwgMjksIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCA1MiwgMTMwLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgNTIsIAorICAgIDEzMCwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDIzMCwgMjI0LCAxODIsIDcsIDYsIDEsIDIyNiwgMTA2LCAyLCA5MSwgNywgNiwgCisgICAgMSwgMjIzLCAyMjQsIDIsIDIxNywgNzcsIDcsIDQsIDEsIDExNSwgMiwgOTEsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyNDcsIAorICAgIDI1NSwgOTEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDI0OCwgMzksIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDI0OCwgMzksIDcsIAorICAgIDYsIDEsIDIzNSwgMjQsIDIsIDI0OCwgMzksIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDI0OCwgMzksIDcsIDYsIDEsIDIxMCwgCisgICAgMTYwLCAyLCAyNDgsIDM5LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjQ4LCAzOSwgNywgNiwgMSwgMjU0LCAxNDMsIDcsIDYsIAorICAgIDEsIDIzMiwgNTAsIDIsIDEwMywgNywgNiwgMSwgMjE1LCA5NCwgNjEsIDcsIDYsIDEsIDIxNSwgOTQsIDI1NCwgMTQzLCA3LCAKKyAgICA0LCAxLCAyMTQsIDEwNiwgMiwgNDQsIDEwMywgNywgNiwgMSwgMjEyLCA5OSwgMiwgMTAzLCA3LCA0LCAxLCAyMTIsIDk5LCAKKyAgICAyLCAxMDMsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAyNDksIDEwMCwgNywgNiwgMSwgMTYzLCAyNDIsIDYwLCA3LCA0LCAxLCAKKyAgICAxNjMsIDI0MiwgNjAsIDcsIDQsIDEsIDIxNywgNzUsIDIyNSwgMTMzLCA3LCA0LCAxLCAxNjAsIDIsIDIyOCwgNTAsIDcsIDQsIAorICAgIDEsIDIxNSwgOTQsIDIyMywgMjI0LCAyLCAyMTcsIDc3LCA3LCA0LCAxLCAxNDQsIDIsIDEyMSwgMjIyLCAyMzQsIDIzNSwgCisgICAgMjE1LCA3LCAxLCA0LCA2LCAyMTUsIDk0LCA3NSwgNywgMjE4LCA2NSwgNCwgMSwgMjM1LCAxNDQsIDU4LCAxLCA2LCAyMTQsIAorICAgIDEwNSwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjE3LCAyNTAsIDIxNywgNzcsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyMTcsIAorICAgIDI1MCwgMjE3LCA3NywgODEsIDYsIDEsIDI1NCwgMTY0LCA4MSwgNCwgMSwgMjU0LCAxNjQsIDgxLCA2LCAxLCAyMTMsIDE3MywgCisgICAgODEsIDQsIDEsIDIxMywgMTczLCA4MSwgNiwgMSwgMjQzLCAxMDcsIDgxLCA0LCAxLCAyNDMsIDEwNywgODEsIDYsIDEsIAorICAgIDI0OCwgMTkxLCA4MSwgNCwgMSwgMjQ4LCAxOTEsIDgxLCA2LCAxLCAyNDUsIDE5NCwgODEsIDQsIDEsIDI0NSwgMTk0LCA4MSwgCisgICAgNiwgMSwgMjE5LCAzMywgODEsIDQsIDEsIDIxOSwgMzMsIDgxLCA2LCAxLCAyMTAsIDEwMSwgODEsIDQsIDEsIDIxMCwgMTAxLCAKKyAgICA4MSwgNiwgMSwgMjQxLCAyNDgsIDgxLCA0LCAxLCAyNDEsIDI0OCwgODEsIDYsIDEsIDIxNiwgMTc3LCA4MSwgNCwgMSwgCisgICAgMjE2LCAxNzcsIDgxLCA2LCAxLCAyNDAsIDExNiwgODEsIDQsIDEsIDI0MCwgMTE2LCA4MSwgNiwgMSwgMjM0LCAyMjcsIDgxLCAKKyAgICA0LCAxLCAyMzQsIDIyNywgODEsIDYsIDEsIDIzMywgNzIsIDgxLCA0LCAxLCAyMzMsIDcyLCA4MSwgNiwgMSwgMjMwLCAyMzAsIAorICAgIDgxLCA0LCAxLCAyMzAsIDIzMCwgODEsIDYsIDEsIDIyOCwgMjMzLCA4MSwgNCwgMSwgMjI4LCAyMzMsIDgxLCA2LCAxLCAKKyAgICAyMzMsIDIzMywgODEsIDQsIDEsIDIzMywgMjMzLCA4MSwgNiwgMSwgNzYsIDgxLCA0LCAxLCA3NiwgODEsIDYsIDEsIDIyNSwgCisgICAgMTA4LCA4MSwgNCwgMSwgMjI1LCAxMDgsIDgxLCA2LCAxLCAyMjIsIDIxMSwgODEsIDQsIDEsIDIyMiwgMjExLCA4MSwgNiwgCisgICAgMSwgMjE5LCAxNjUsIDgxLCA0LCAxLCAyMTksIDE2NSwgODEsIDYsIDEsIDIxNywgNDEsIDgxLCA0LCAxLCAyMTcsIDQxLCAKKyAgICA4MSwgNiwgMSwgMjE0LCAyMjksIDgxLCA0LCAxLCAyMTQsIDIyOSwgODEsIDYsIDEsIDI0NCwgMTIxLCA4MSwgNCwgMSwgCisgICAgMjQ0LCAxMjEsIDgxLCA2LCAxLCAyMzQsIDExMiwgODEsIDQsIDEsIDIzNCwgMTEyLCA4MSwgNiwgMSwgMjI0LCAxNjEsIDgxLCAKKyAgICA0LCAxLCAyMjQsIDE2MSwgODEsIDYsIDEsIDIyNiwgMTc4LCA4MSwgNCwgMSwgMjI2LCAxNzgsIDgxLCA2LCAxLCAyNDcsIAorICAgIDI1MywgMjU0LCAxNzAsIDgxLCA0LCAxLCAyNDcsIDI1MywgMjU0LCAxNzAsIDgxLCA2LCAxLCA1NSwgODEsIDI1NCwgMTk2LCAKKyAgICA4MSwgNCwgMSwgNTUsIDgxLCAyNTQsIDE5NiwgODEsIDYsIDEsIDI0OSwgMTE1LCAyNDUsIDE5NCwgODEsIDQsIDEsIDI0OSwgCisgICAgMTE1LCAyNDUsIDE5NCwgODEsIDYsIDEsIDI0NywgMjUzLCAyMzQsIDIyNywgODEsIDQsIDEsIDI0NywgMjUzLCAyMzQsIAorICAgIDIyNywgODEsIDYsIDEsIDI0NywgMjUzLCAyMjgsIDIzMywgODEsIDQsIDEsIDI0NywgMjUzLCAyMjgsIDIzMywgODEsIDYsIAorICAgIDEsIDI0OSwgMTE1LCAyMjgsIDIzMywgODEsIDQsIDEsIDI0OSwgMTE1LCAyMjgsIDIzMywgODEsIDYsIDEsIDU1LCA4MSwgCisgICAgMjI2LCAxNzgsIDgxLCA0LCAxLCA1NSwgODEsIDIyNiwgMTc4LCA4MSwgNiwgMSwgMjIxLCAyNDYsIDgxLCA0LCAxLCAyMjEsIAorICAgIDI0NiwgODEsIDYsIDEsIDI0OSwgMTI4LCAyMjAsIDU1LCA4MSwgNCwgMSwgMjQ5LCAxMjgsIDIyMCwgNTUsIDgxLCA2LCAxLCAKKyAgICA1NSwgODEsIDIyMCwgNTUsIDgxLCA0LCAxLCA1NSwgODEsIDIyMCwgNTUsIDgxLCA2LCAxLCA1NSwgODEsIDI0NSwgNzUsIAorICAgIDgxLCA0LCAxLCA1NSwgODEsIDI0NSwgNzUsIDgxLCA2LCAxLCAyNTQsIDE4MiwgMjM0LCAxMTcsIDgxLCA0LCAxLCAyNTQsIAorICAgIDE4MiwgMjM0LCAxMTcsIDgxLCA2LCAxLCAyNDcsIDI1MywgMjQxLCA0NSwgODEsIDQsIDEsIDI0NywgMjUzLCAyNDEsIDQ1LCAKKyAgICA4MSwgNiwgMSwgNTUsIDgxLCAyNDEsIDQ1LCA4MSwgNCwgMSwgNTUsIDgxLCAyNDEsIDQ1LCA4MSwgNiwgMSwgNTUsIDgxLCAKKyAgICAxNjIsIDgxLCA0LCAxLCA1NSwgODEsIDE2MiwgODEsIDYsIDEsIDIzMywgMTQ4LCAxNjIsIDgxLCA0LCAxLCAyMzMsIDE0OCwgCisgICAgMTYyLCA4MSwgNiwgMSwgNTUsIDgxLCAyNDEsIDIxNywgODEsIDQsIDEsIDU1LCA4MSwgMjQxLCAyMTcsIDgxLCA2LCAxLCAKKyAgICA1NSwgODEsIDI0MSwgMjUxLCA4MSwgNCwgMSwgNTUsIDgxLCAyNDEsIDI1MSwgODEsIDYsIDEsIDU1LCA4MSwgMjQzLCAxMDIsIAorICAgIDgxLCA0LCAxLCA1NSwgODEsIDI0MywgMTAyLCA4MSwgNiwgMSwgNTUsIDgxLCAyNDcsIDE2MywgODEsIDQsIDEsIDU1LCA4MSwgCisgICAgMjQ3LCAxNjMsIDgxLCA2LCAxLCA1NSwgODEsIDIyMCwgMjIsIDgxLCA0LCAxLCA1NSwgODEsIDIyMCwgMjIsIDgxLCA2LCAxLCAKKyAgICA1NSwgMjI3LCAyMDgsIDIyMCwgMjIsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMDgsIDIyMCwgMjIsIDgxLCA2LCAxLCA1NSwgCisgICAgMjI3LCAyMDgsIDIyOSwgMjcsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMDgsIDIyOSwgMjcsIDgxLCA2LCAxLCA1NSwgMjI3LCAKKyAgICAyMDgsIDIyNywgMTQ4LCA4MSwgNCwgMSwgNTUsIDIyNywgMjA4LCAyMjcsIDE0OCwgODEsIDYsIDEsIDU1LCAyMjcsIDIwOCwgCisgICAgMjEyLCAzNywgODEsIDQsIDEsIDU1LCAyMjcsIDIwOCwgMjEyLCAzNywgODEsIDE2LCAyMzQsIDI0NiwgODEsIDE2LCAyMzAsIAorICAgIDIzMSwgMjIyLCAyMTEsIDgxLCAxNiwgMjI1LCAxMDksIDIyMiwgMjExLCA4MSwgMTYsIDIxOCwgMTQ3LCA4MSwgMTYsIDIxNywgCisgICAgNDIsIDIyMiwgMjExLCA4MSwgMTYsIDIzNCwgMTEzLCAyMjIsIDIxMSwgODEsIDE2LCAyMjAsIDIzLCAyMTksIDE2NSwgODEsIAorICAgIDYsIDEsIDI0OSwgMTE1LCAyMjAsIDU1LCA4MSwgNCwgMSwgMjQ5LCAxMTUsIDIyMCwgNTUsIDgxLCA2LCAxLCAyNDksIDExNSwgCisgICAgMjQzLCAxMDIsIDgxLCA0LCAxLCAyNDksIDExNSwgMjQzLCAxMDIsIDgxLCAzOCwgMjI4LCAyMzQsIDQ4LCA4MSwgMzgsIAorICAgIDIxOCwgMjQ3LCAyNTMsIDIyNCwgODEsIDM4LCAyMTgsIDI0NywgMjMzLCAyMSwgODEsIDYsIDEsIDI1MSwgMTk5LCAyMzQsIAorICAgIDExNywgODEsIDQsIDEsIDI1MSwgMTk5LCAyMzQsIDExNywgODEsIDU1LCAyMjcsIDIwOCwgMjQzLCAyMjksIDIxOCwgMTI5LCAKKyAgICA4MSwgNTUsIDIyNywgMjA4LCAyNDcsIDE5NywgMjI0LCAxMywgNzgsIDgxLCA1NSwgMjI3LCAyMDgsIDIzNSwgMjM3LCAyMjQsIAorICAgIDEzLCA3OCwgODEsIDU1LCAyMjcsIDIwOCwgMjEzLCAyNDEsIDI0NywgMTcyLCA4MSwgMjQ0LCAyLCAxMjMsIDI0MiwgMjcsIAorICAgIDgxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDgxLCAyMzAsIDEyNCwgMjQ3LCAxNzIsIDk4LCA0LCAxLCAyNTQsIDEyMywgOTgsIAorICAgIDQsIDEsIDI1MiwgMTUyLCA5OCwgNCwgMSwgMjQzLCAxMDYsIDk4LCA0LCAxLCAyNDcsIDEyOCwgOTgsIDQsIDEsIDI0NSwgCisgICAgMTUwLCA5OCwgNCwgMSwgMjEzLCAxNjAsIDk4LCA0LCAxLCAyMTAsIDg5LCA5OCwgNCwgMSwgMjE3LCA2MCwgOTgsIDQsIDEsIAorICAgIDIzNSwgMjU1LCA5OCwgNCwgMSwgMjM0LCAyMzQsIDk4LCA0LCAxLCAyMzMsIDgxLCA5OCwgNCwgMSwgMjMxLCAxODUsIDk4LCAKKyAgICA0LCAxLCAyMjksIDE5NSwgOTgsIDQsIDEsIDIyNiwgMTk2LCA5OCwgNCwgMSwgMjI2LCAxNywgOTgsIDQsIDEsIDIxMCwgNzgsIAorICAgIDk4LCA0LCAxLCAyMjMsIDE3MSwgOTgsIDQsIDEsIDIyMSwgMjQzLCA5OCwgNCwgMSwgMjE3LCA1MCwgOTgsIDQsIDEsIDIxNCwgCisgICAgMTkwLCA5OCwgNCwgMSwgMjI1LCAxNDAsIDk4LCA0LCAxLCAyMzQsIDEyMSwgOTgsIDQsIDEsIDI0MiwgMjQxLCA5OCwgNCwgCisgICAgMSwgMjI0LCA3MywgOTgsIDQsIDEsIDIyMCwgMjAsIDk4LCA0LCAxLCAyNTAsIDk3LCA5OCwgNCwgMSwgMjUxLCA3LCA5OCwgCisgICAgNCwgMSwgMjM1LCAxMDAsIDk4LCA0LCAxLCAyNTAsIDQwLCA5OCwgNCwgMSwgMjUwLCAxNDMsIDk4LCA0LCAxLCAyMTEsIAorICAgIDE2MywgOTgsIDQsIDEsIDIzNSwgMTExLCA5OCwgNCwgMSwgMjQyLCA0MywgOTgsIDQsIDEsIDI0MSwgMjM4LCA5OCwgNCwgMSwgCisgICAgMjQxLCAxNzUsIDk4LCA0LCAxLCAyMTIsIDIyLCA5OCwgNCwgMSwgMjQyLCA0LCA5OCwgNCwgMSwgMjQxLCA2NSwgOTgsIDQsIAorICAgIDEsIDIxMCwgMjQ2LCA5OCwgNCwgMSwgMjU0LCAyMzIsIDIxNiwgMTA4LCAxLCAxOTEsIDIxNiwgMTA4LCAxLCAyMTEsIDk5LCAKKyAgICAyMTYsIDEwOCwgMSwgMjExLCA5OCwgMjE2LCAxMDgsIDEsIDIxMSwgODgsIDIxNiwgMTA4LCAxLCAyMTEsIDg2LCAyMTYsIAorICAgIDEwOCwgMSwgMjUyLCAzMiwgMjU1LCAxNiwgMjExLCA4MSwgMjE2LCAxMDgsIDEsIDIxMSwgODEsIDIxNiwgMTA4LCAxLCAKKyAgICAyMTEsIDk2LCAyMTYsIDEwOCwgMSwgMjExLCA5MywgMjE2LCAxMDgsIDEsIDIxMSwgOTUsIDIxNiwgMTA4LCAxLCAyMTEsIAorICAgIDk0LCAyMTYsIDEwOCwgMSwgMjExLCAxMiwgMjE2LCAxMDgsIDEsIDIxMSwgOTAsIDIxNiwgMTA4LCAxLCAyMTEsIDc5LCAKKyAgICAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgNzksIDIxNiwgMTA4LCAxLCAyMTEsIDc2LCAyMTYsIDEwOCwgMSwgMjExLCAKKyAgICA4NCwgMjE2LCAxMDgsIDEsIDI1MiwgMzIsIDI1NSwgMTYsIDIxMSwgODQsIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCAKKyAgICA4NCwgMjE2LCAxMDgsIDEsIDIxMSwgODMsIDIxNiwgMTA4LCAxLCAyMTEsIDEwMywgMjE2LCAxMDgsIDEsIDIxMSwgNzcsIAorICAgIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCA3NywgMjE2LCAxMDgsIDEsIDIxMSwgNjYsIDIxNiwgMTA4LCAxLCAyMTUsIAorICAgIDExNSwgMjExLCA2NiwgMjE2LCAxMDgsIDEsIDIxMSwgOCwgMjE2LCAxMDgsIDEsIDIxMSwgNDksIDIxNiwgMTA4LCAxLCAKKyAgICAyNTQsIDIwNywgMjExLCA0OSwgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDQ5LCAyMTYsIDEwOCwgMSwgMjExLCA3NSwgCisgICAgMjE2LCAxMDgsIDEsIDIxMSwgNzQsIDIxNiwgMTA4LCAxLCAyMTEsIDcxLCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgCisgICAgODUsIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCA2OSwgMjE2LCAxMDgsIDEsIDIxMSwgNjcsIDIxNiwgMTA4LCAxLCAKKyAgICAyMTAsIDIxMiwgMjE2LCAxMDgsIDEsIDIxMSwgNjQsIDIxNiwgMTA4LCAxLCAyMTEsIDYzLCAyMTYsIDEwOCwgMSwgMjExLCAKKyAgICA4NywgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDg3LCAyMTYsIDEwOCwgMSwgMjUzLCAxNjMsIDIxMSwgODcsIDIxNiwgCisgICAgMTA4LCAxLCAyMTEsIDYyLCAyMTYsIDEwOCwgMSwgMjExLCA2MCwgMjE2LCAxMDgsIDEsIDIxMSwgNjEsIDIxNiwgMTA4LCAxLCAKKyAgICAyMTEsIDU5LCAyMTYsIDEwOCwgMSwgMjExLCA1OCwgMjE2LCAxMDgsIDEsIDIxMSwgOTcsIDIxNiwgMTA4LCAxLCAyMTEsIAorICAgIDU2LCAyMTYsIDEwOCwgMSwgMjExLCA1NCwgMjE2LCAxMDgsIDEsIDIxMSwgNTMsIDIxNiwgMTA4LCAxLCAyMTEsIDUyLCAKKyAgICAyMTYsIDEwOCwgMSwgMjExLCA1MCwgMjE2LCAxMDgsIDEsIDIxNywgMzQsIDIxMSwgNTAsIDIxNiwgMTA4LCAxLCAyMTEsIAorICAgIDQ4LCAyMTYsIDEwOCwgMSwgMjExLCA0NywgMjE2LCAxMDgsIDEsIDIxMCwgMjQ0LCAyMTYsIDEwOCwgNTgsIDEsIDIzMywgCisgICAgMTI2LCA3OCwgMjE2LCAxMDgsIDIyMCwgMTM4LCA3OCwgMjE2LCAxMDgsIDExNiwgMjM1LCA2MywgMjksIDMsIDIzMiwgMTU1LCAKKyAgICAyOSwgMywgMjMwLCAxNjAsIDI5LCAzLCAyMjIsIDIwOSwgMjksIDMsIDIxOSwgNTcsIDI5LCAzLCAyMjAsIDYsIDI5LCAzLCAKKyAgICAyNTEsIDIwNCwgMjksIDMsIDIxNiwgNDEsIDI5LCAzLCAyNDksIDIzNywgMjksIDMsIDIyOCwgNzIsIDI5LCAzLCAyMjcsIAorICAgIDEzMywgMjksIDMsIDI0MiwgMTgwLCAyMjcsIDAsIDI5LCAzLCAyMTAsIDIyLCAyOSwgMywgMjQ3LCAxNDMsIDI5LCAzLCAKKyAgICAyNDgsIDEwNCwgMjksIDMsIDIzNSwgNjcsIDI5LCAzLCAyMTYsIDE1NSwgMjksIDMsIDI1MCwgODUsIDI5LCAzLCAyMjUsIAorICAgIDEyMCwgMjksIDMsIDIyNSwgMTUsIDI5LCAzLCAyNDIsIDI1NSwgMjksIDMsIDI0MiwgMjUxLCAyOSwgMywgMjQyLCAyNTIsIAorICAgIDI5LCAzLCAyNDIsIDI1MywgMjksIDMsIDIxOCwgMjIzLCAyOSwgMywgMjE4LCAxNzksIDI5LCAzLCAyMTgsIDE5MiwgMjksIAorICAgIDMsIDIxOCwgMjIyLCAyOSwgMywgMjE4LCAxOTYsIDI5LCAzLCAyMTgsIDE5NywgMjksIDMsIDIxOCwgMTg0LCAyOSwgMywgCisgICAgMjUwLCAyMTMsIDI5LCAzLCAyNTAsIDE5MiwgMjksIDMsIDI1MCwgMTk0LCAyOSwgMywgMjUwLCAyMTIsIDI5LCAzLCAyNTAsIAorICAgIDIxMCwgMjksIDMsIDI1MCwgMjExLCAyOSwgMywgMjUwLCAxOTMsIDI5LCAzLCAyMDksIDI0MywgMjksIDMsIDIwOSwgMjIxLCAKKyAgICAyOSwgMywgMjA5LCAyMzQsIDI5LCAzLCAyMDksIDI0MiwgMjksIDMsIDIwOSwgMjM3LCAyOSwgMywgMjA5LCAyMzgsIDI5LCAKKyAgICAzLCAyMDksIDIyNiwgMjksIDMsIDI1MCwgMjA4LCAyOSwgMywgMjUwLCAxOTUsIDI5LCAzLCAyNTAsIDE5NywgMjksIDMsIAorICAgIDI1MCwgMjA3LCAyOSwgMywgMjUwLCAyMDUsIDI5LCAzLCAyNTAsIDIwNiwgMjksIDMsIDI1MCwgMTk2LCAyOSwgMywgMjIzLCAKKyAgICAyMzYsIDI5LCAzLCAyMjMsIDIyNiwgMjksIDMsIDIyMywgMjMyLCAyOSwgMywgMjIzLCAyMzUsIDI5LCAzLCAyMjMsIDIzMywgCisgICAgMjksIDMsIDIyMywgMjM0LCAyOSwgMywgMjIzLCAyMzEsIDI5LCAzLCAyMzMsIDE1OSwgMjksIDMsIDIzMywgMTUxLCAyOSwgCisgICAgMywgMjMzLCAxNTQsIDI5LCAzLCAyMzMsIDE1OCwgMjksIDMsIDIzMywgMTU1LCAyOSwgMywgMjMzLCAxNTYsIDI5LCAzLCAKKyAgICAyMzMsIDE1MiwgMjksIDMsIDIxMSwgMTMwLCAyOSwgMywgMjExLCAxMjAsIDI5LCAzLCAyMTEsIDEyNiwgMjksIDMsIDIxMSwgCisgICAgMTI5LCAyOSwgMywgMjExLCAxMjcsIDI5LCAzLCAyMTEsIDEyOCwgMjksIDMsIDIxMSwgMTI1LCAyOSwgMywgMjQyLCA3MSwgCisgICAgMjksIDMsIDI0MiwgNjIsIDI5LCAzLCAyNDIsIDY1LCAyOSwgMywgMjQyLCA3MCwgMjksIDMsIDI0MiwgNjcsIDI5LCAzLCAKKyAgICAyNDIsIDY4LCAyOSwgMywgMjQyLCA2NCwgMzgsIDMzLCAxLCAyNTIsIDc1LCAzOCwgMzMsIDEsIDIxMywgMjU1LCAzOCwgMzMsIAorICAgIDEsIDI0MiwgMjM2LCAzOCwgMzMsIDEsIDI0OCwgOTAsIDM4LCAzMywgMSwgMjEwLCA3NCwgMzgsIDMzLCAxLCAyMTAsIDk0LCAKKyAgICAzOCwgMzMsIDEsIDE3NiwgMzgsIDMzLCAxLCAyNDUsIDE3NCwgMzgsIDMzLCAxLCAyNDUsIDE1OSwgMzgsIDMzLCAxLCAyNDUsIAorICAgIDE1MCwgMzgsIDMzLCAxLCA3NiwgMzgsIDMzLCAxLCAyMjUsIDIyMSwgMzgsIDMzLCAxLCAyNDUsIDkyLCAzOCwgMzMsIDEsIAorICAgIDI0NSwgODIsIDM4LCAzMywgMSwgMjE3LCAyMiwgMzgsIDMzLCAxLCAxNjIsIDM4LCAzMywgMSwgMjE1LCAxNzgsIDM4LCAzMywgCisgICAgMSwgMjUwLCAxMzEsIDM4LCAzMywgMSwgMjIwLCAxMDIsIDM4LCAzMywgMSwgMjIwLCA2NSwgMzgsIDMzLCAxLCAyNDQsIDgyLCAKKyAgICAzOCwgMzMsIDEsIDI0NSwgODEsIDM4LCAzMywgMSwgNjEsIDM4LCAzMywgMSwgMjM2LCA2MCwgMzgsIDMzLCAxLCAyNDcsIAorICAgIDE2MSwgMzgsIDMzLCAxLCAyMzAsIDE0MCwgMjE0LCAyMDUsIDM4LCAzMywgMSwgMjExLCA1OSwgMzgsIDMzLCAxLCAyMTAsIAorICAgIDIxMiwgMzgsIDMzLCAxLCAyMzUsIDE4MywgNjEsIDM4LCAzMywgMSwgMjMyLCAxOTIsIDIxMCwgMTgzLCAzOCwgMzMsIDEsIAorICAgIDI1MSwgMjQ5LCAyMTAsIDE4MywgMzgsIDMzLCAxLCAyMzUsIDE4MywgMjUxLCAyNDksIDIxMCwgMTgzLCA0NCwgMjU0LCAKKyAgICAxMTAsIDIxOCwgNjAsIDIzMSwgMTU0LCA0NCwgMjU0LCAxMTAsIDI0NiwgMTE4LCAyMTgsIDYwLCAyMzEsIDE1NCwgNDMsIAorICAgIDIxOCwgNjAsIDEyNywgNDQsIDIxOCwgNjAsIDEyNywgNDMsIDI0NiwgMTE4LCAyMTgsIDYwLCAxMjcsIDQ0LCAyNDYsIDExOCwgCisgICAgMjE4LCA2MCwgMTI3LCAyMjMsIDE1NywgMjM1LCAyMDIsIDIzMSwgMTU0LCAyMjMsIDE1NywgMjQ2LCAxMTgsIDIzNSwgMjAyLCAKKyAgICAyMzEsIDE1NCwgMjQ2LCAxMTgsIDIxNSwgMjQxLCAyMzEsIDE1NCwgNDMsIDIxNSwgMjQxLCAxMjcsIDQ0LCAyMTUsIDI0MSwgCisgICAgMTI3LCAyMjMsIDE1NywgMjE4LCAyMzQsIDQzLCAyMjMsIDE1NywgMjI2LCAxOTgsIDEyNywgNDQsIDIyMywgMTU3LCAyMjYsIAorICAgIDE5OCwgMTI3LCAyNDUsIDIxMCwgMjQ5LCAxNTgsIDIyNiwgMTMsIDI0NCwgMjIsIDIyNiwgMTMsIDIyMywgNDksIDI0NCwgCisgICAgMjIsIDIyNiwgMTMsIDI0MCwgMTY1LCAyNDYsIDExOCwgMjI2LCAyNTEsIDI0NiwgMTA0LCAyNTQsIDExOSwgMjE0LCAxNTMsIAorICAgIDI1NCwgMTE5LCAyNDYsIDExOCwgMjIyLCAyNDcsIDI1NCwgMTA5LCA1MiwgMjI2LCAyNDgsIDI0MCwgMTY4LCAyMzUsIDE5MywgCisgICAgMjM1LCAyMDEsIDIyNiwgNTksIDI1MSwgMTU0LCAyNDAsIDE2OSwgMiwgMjQ4LCAxLCAyMTYsIDg5LCAyLCAyMjIsIDIzNCwgCisgICAgNDgsIDQzLCAxMjEsIDIyNiwgNSwgMTI3LCA0NCwgMTIxLCAyMjYsIDUsIDEyNywgMjE2LCA4OSwgMiwgNTksIDQ4LCAyMTYsIAorICAgIDg5LCAyLCA1OSwgNTEsIDQzLCA2NywgMjUyLCAxNDEsIDIsIDIyNCwgNywgNDQsIDY3LCAyNTIsIDE0MSwgMiwgMjI0LCA3LCAKKyAgICAyMTYsIDE0LCA0MywgMTYzLCAxMjcsIDIxNiwgMTQsIDQ0LCAxNjMsIDEyNywgMjUxLCAxNzUsIDQzLCAxNjMsIDEyNywgCisgICAgMjUxLCAxNzUsIDQ0LCAxNjMsIDEyNywgNDMsIDIxOSwgMTg3LCAxMDQsIDEyNywgNDQsIDIxOSwgMTg3LCAxMDQsIDEyNywgCisgICAgNDMsIDUyLCAyMjYsIDMsIDQ0LCA1MiwgMjI2LCAzLCAxMTMsIDE3MCwgMTE3LCAxMjMsIDU5LCAyMjQsIDE0MCwgMTIzLCAKKyAgICA1OSwgMTE3LCAxMTMsIDE3MCwgMjI0LCAxNDAsIDkyLCAyNDQsIDExLCA1OSwgMjI0LCAxNDAsIDI0NCwgODEsIDU5LCA3OCwgCisgICAgMjIzLCA0OSwgMjI0LCAxMywgNzgsIDY3LCAxODIsIDIyMiwgMjM0LCAyMjUsIDEwLCAyMTEsIDIwOSwgMjIwLCAxMzgsIAorICAgIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjE1LCA5NCwgMjQ5LCAyMTksIDIyMywgMTU3LCAyNDcsIDEyMCwgMjIzLCAxNTcsIDI0OSwgCisgICAgMjE5LCAyMTUsIDk0LCAyMjAsIDE1MCwgMjQ4LCAyMDYsIDIsIDQzLCAyNDIsIDEwOCwgMjQ4LCAyMDYsIDIsIDQ0LCAyNDIsIAorICAgIDEwOCwgMjE1LCA5NCwgMjQ4LCAyMDUsIDIxNiwgMTQsIDE2MywgMjIxLCAxNzMsIDUwLCAyMTUsIDU5LCAyNDgsIDE1NiwgCisgICAgMjE2LCAxNDMsIDI0OCwgMTU2LCA5LCAzNCwgMjIzLCA3NiwgOSwgMzQsIDI1MCwgMTAsIDksIDM0LCAyMjEsIDE3NiwgMTEwLCAKKyAgICA5LCAzNCwgMjIxLCAxNzYsIDEwNSwgOSwgMzQsIDIyMSwgMTc2LCAxNTgsIDksIDM0LCAyMjUsIDE2NywgOSwgMzQsIDI1MSwgCisgICAgMTYzLCA5LCAzNCwgMjE3LCA5MiwgOSwgMzQsIDIzNCwgMzMsIDExMCwgOSwgMzQsIDIzNCwgMzMsIDEwNSwgOSwgMzQsIAorICAgIDI0NywgMTcwLCA5LCAzNCwgMjIxLCAxNzksIDksIDM0LCA0LCAxMTAsIDksIDM0LCA0LCAxMDUsIDksIDM0LCAyMzMsIDk3LCAKKyAgICAxMTAsIDksIDM0LCAyMzMsIDk3LCAxMDUsIDksIDM0LCAyMzMsIDk3LCAxNTgsIDksIDM0LCAyMzMsIDk3LCAxNjEsIDksIAorICAgIDM0LCAyMTksIDY4LCA5LCAzNCwgMjE2LCAxNDUsIDksIDM0LCAyMTksIDY2LCAxMTAsIDksIDM0LCAyMTksIDY2LCAxMDUsIAorICAgIDksIDM0LCAyNDEsIDIyOCwgMTEwLCA5LCAzNCwgMjQxLCAyMjgsIDEwNSwgOSwgMzQsIDI0MiwgMTUsIDksIDM0LCAyMjMsIAorICAgIDE0NywgOSwgMzQsIDI1MCwgODIsIDksIDM0LCAyMTgsIDM3LCA5LCAzNCwgMjMwLCAxMjgsIDksIDM0LCAyNDgsIDg4LCA5LCAKKyAgICAzNCwgMjMwLCAxMjAsIDksIDM0LCAyNTAsIDI1LCA5LCAzNCwgMjEyLCA0MSwgMTEwLCA5LCAzNCwgMjEyLCA0MSwgMTA1LCAKKyAgICA5LCAzNCwgMjQ0LCA5NiwgOSwgMzQsIDIyNSwgMjMyLCAxMTAsIDksIDM0LCAyMjUsIDIzMiwgMTA1LCA5LCAzNCwgMjE5LCAKKyAgICAxNjAsIDE2MywgMjE1LCAyMzYsIDIxNSwgMTg4LCA5LCAzNCwgMjQ5LCAxNDUsIDksIDM0LCAyNDcsIDEzNiwgOSwgMzQsIAorICAgIDIzNSwgMTM3LCA5LCAzNCwgMjUxLCAxOTgsIDY0LCAyNDksIDI1MCwgOSwgMzQsIDI0NSwgMTUsIDksIDM0LCAyMTgsIDI0OSwgCisgICAgMTEwLCA5LCAzNCwgMjE4LCAyNDksIDEwNSwgOSwgMzQsIDI1MiwgMTU0LCA5LCAzNCwgMjE5LCAxNjcsIDksIDM0LCAyNTEsIAorICAgIDYzLCAyMTksIDE2NywgOSwgMzQsIDIyOSwgOTAsIDExMCwgOSwgMzQsIDIyOSwgOTAsIDEwNSwgOSwgMzQsIDIyOSwgOTAsIAorICAgIDE1OCwgOSwgMzQsIDIyOSwgOTAsIDE2MSwgOSwgMzQsIDIzMSwgNDYsIDksIDM0LCAyMjAsIDU3LCA5LCAzNCwgMjIzLCAKKyAgICAxNTMsIDksIDM0LCAyNDUsIDM3LCA5LCAzNCwgMjI2LCAyMDksIDksIDM0LCAyNTEsIDEzMywgMTEwLCA5LCAzNCwgMjUxLCAKKyAgICAxMzMsIDEwNSwgOSwgMzQsIDIzMSwgODYsIDksIDM0LCAyMzAsIDEyMywgOSwgMzQsIDI0MiwgMTQwLCAxMTAsIDksIDM0LCAKKyAgICAyNDIsIDE0MCwgMTA1LCA5LCAzNCwgMjQyLCAxNDAsIDE1OCwgOSwgMzQsIDIxNiwgMTA2LCA5LCAzNCwgMjQ5LCAyNDksIDksIAorICAgIDM0LCAyMTIsIDksIDExMCwgOSwgMzQsIDIxMiwgOSwgMTA1LCA5LCAzNCwgMjUxLCA2MywgMjIxLCAxNzAsIDksIDM0LCAKKyAgICAyMTksIDE2MCwgMjQwLCAyNDgsIDksIDM0LCAyNDAsIDI0OCwgOSwgMzQsIDI1MSwgNjMsIDIxOSwgMiwgOSwgMzQsIDI1MSwgCisgICAgNjMsIDIyMCwgNTIsIDksIDM0LCAyNDQsIDMyLCA5LCAzNCwgMjUxLCA2MywgMjUwLCAyMjgsIDksIDM0LCAyMTksIDE2MCwgCisgICAgMjEyLCA1NywgOSwgMzQsIDIxMiwgNTgsIDExMCwgOSwgMzQsIDIxMiwgNTgsIDEwNSwgOSwgMzQsIDI1MCwgMjcsIDksIDM0LCAKKyAgICAyNTEsIDYzLCAyNDIsIDE2NiwgOSwgMzQsIDE5OSwgMTEwLCA5LCAzNCwgMTk5LCAxMDUsIDksIDM0LCAyNTEsIDYzLCAyMzIsIAorICAgIDEzNywgOSwgMzQsIDI1MSwgNjMsIDI0MywgODgsIDksIDM0LCAyMzAsIDExOSwgMTEwLCA5LCAzNCwgMjMwLCAxMTksIDEwNSwgCisgICAgOSwgMzQsIDIyMywgMTU5LCA5LCAzNCwgMjUxLCAyMDcsIDksIDM0LCAyNTEsIDYzLCAyMTcsIDU2LCAyMzMsIDUyLCA5LCAKKyAgICAzNCwgMjUxLCA2MywgMjMzLCA1MywgOSwgMzQsIDI1MSwgNjMsIDIxMSwgMjM5LCA5LCAzNCwgMjUxLCA2MywgMjQ0LCA0NiwgCisgICAgOSwgMzQsIDI0NSwgMjE4LCAxMTAsIDksIDM0LCAyNDUsIDIxOCwgMTA1LCA5LCAzNCwgMjQ1LCAyMTgsIDE1OCwgOSwgMzQsIAorICAgIDI1MSwgNjMsIDI0NSwgMjE3LCA5LCAzNCwgMjQxLCAyMzUsIDksIDM0LCAyNTEsIDYzLCAyNDAsIDI0NSwgOSwgMzQsIDI1MSwgCisgICAgMTk0LCA5LCAzNCwgMjQyLCAyMjIsIDksIDM0LCAyNTEsIDYzLCAyNDQsIDkwLCA5LCAzNCwgMjUxLCA2MywgMjUxLCAyMzcsIAorICAgIDksIDM0LCAyNTEsIDYzLCAyMjIsIDEsIDksIDM0LCAyMTksIDE2MCwgMjEyLCAyLCA5LCAzNCwgMjE5LCAxNjAsIDIxMSwgCisgICAgNDEsIDksIDM0LCAyNTEsIDYzLCAyNDMsIDI0NCwgOSwgMzQsIDIzNSwgMTQzLCAyNDUsIDQxLCA5LCAzNCwgMjUxLCA2MywgCisgICAgMjQ1LCA0MSwgOSwgMzQsIDIzNSwgMTQzLCAyMTYsIDE1LCA5LCAzNCwgMjUxLCA2MywgMjE2LCAxNSwgOSwgMzQsIDIzNSwgCisgICAgMTQzLCAyNDYsIDk2LCA5LCAzNCwgMjUxLCA2MywgMjQ2LCA5NiwgOSwgMzQsIDIxNSwgOTEsIDksIDM0LCAyMzUsIDE0MywgCisgICAgMjE1LCA5MSwgOSwgMzQsIDI1MSwgNjMsIDIxNSwgOTEsIDYwLCAzNCwgMTEwLCA2MCwgMzQsIDIzMiwgMjEzLCA2MCwgMzQsIAorICAgIDI0NywgMTIwLCA2MCwgMzQsIDIxOSwgOTUsIDYwLCAzNCwgMjIxLCAxNzUsIDYwLCAzNCwgMTAzLCA2MCwgMzQsIDEwNSwgCisgICAgNjAsIDM0LCAyMzIsIDIzNywgNjAsIDM0LCAyMzEsIDE4NSwgNjAsIDM0LCAyMzMsIDMzLCA2MCwgMzQsIDI0NSwgMTI5LCAKKyAgICA2MCwgMzQsIDE5NSwgNjAsIDM0LCAxMjQsIDI1MSwgMTYzLCA2MCwgMzQsIDI0OSwgMTQ3LCA2MCwgMzQsIDI0MCwgMTExLCAKKyAgICA2MCwgMzQsIDIxNywgOTIsIDYwLCAzNCwgMjA0LCAyNTEsIDE2MywgNjAsIDM0LCAyMzQsIDMyLCA2MCwgMzQsIDIyNCwgCisgICAgMjI0LCA2MCwgMzQsIDIxMSwgMjAyLCA2MCwgMzQsIDIxOCwgMjQzLCA2MCwgMzQsIDQ0LCAyMDQsIDI1MSwgMTYzLCA2MCwgCisgICAgMzQsIDI0MSwgMTc2LCAyNDUsIDE0NSwgNjAsIDM0LCAyMTYsIDI0NywgNjAsIDM0LCAyNDcsIDE3MCwgNjAsIDM0LCAyMjEsIAorICAgIDE3OSwgNjAsIDM0LCAyNTAsIDEwLCA2MCwgMzQsIDIyNCwgMTgyLCA2MCwgMzQsIDI1NCwgMjE1LCA2MCwgMzQsIDIzMCwgCisgICAgMTEwLCA2MCwgMzQsIDI0NSwgMTQ1LCA2MCwgMzQsIDI0NSwgMjIzLCA2MCwgMzQsIDIyMSwgMjAwLCA2MCwgMzQsIDI0MiwgCisgICAgMTc0LCA2MCwgMzQsIDI0MiwgMTc1LCAyMTksIDgxLCA2MCwgMzQsIDI0NSwgNDAsIDYwLCAzNCwgMjUxLCAyNDgsIDYwLCAKKyAgICAzNCwgMjExLCAyMjEsIDYwLCAzNCwgMjUwLCAxMDEsIDYwLCAzNCwgMjIyLCAxOTYsIDYwLCAzNCwgMjM1LCAyNTEsIDYwLCAKKyAgICAzNCwgMjE5LCA3OSwgNjAsIDM0LCAyMzMsIDk2LCA2MCwgMzQsIDI0OSwgMTU2LCA2MCwgMzQsIDIxOCwgMjM3LCA2MCwgMzQsIAorICAgIDIzMCwgMTE1LCA2MCwgMzQsIDIyMiwgMjI0LCA2MCwgMzQsIDIxMSwgMjA2LCA2MCwgMzQsIDIyNiwgMTkwLCA2MCwgMzQsIAorICAgIDIxNSwgOTcsIDYwLCAzNCwgMjQ2LCA4MCwgNjAsIDM0LCAyMTksIDI1MSwgMjE2LCAxNDUsIDYwLCAzNCwgMjQ2LCAxMTgsIAorICAgIDI1MCwgMTAsIDYwLCAzNCwgMTk5LCAyMTgsIDEwOCwgNjAsIDM0LCAxMTMsIDI0MiwgMTAsIDYwLCAzNCwgMjIwLCAwLCA2MCwgCisgICAgMzQsIDI1MSwgMTY5LCA2MCwgMzQsIDIxOSwgNjUsIDYwLCAzNCwgMjUxLCAxMzcsIDYwLCAzNCwgMjE4LCAxMzgsIDYwLCAKKyAgICAzNCwgMjQxLCAyMjcsIDYwLCAzNCwgMjQyLCAyOCwgNjAsIDM0LCAyNDcsIDEyMywgNjAsIDM0LCAyNDIsIDE1LCA2MCwgMzQsIAorICAgIDI1MSwgMTU0LCA2MCwgMzQsIDIyMywgMTQ3LCA2MCwgMzQsIDIyMSwgMTg3LCA2MCwgMzQsIDI0NywgMTk5LCA2MCwgMzQsIAorICAgIDI1MywgMTY4LCA2MCwgMzQsIDIxOCwgMjM0LCA2MCwgMzQsIDIyOCwgNTEsIDYwLCAzNCwgMjE4LCAzNywgNjAsIDM0LCAKKyAgICAyMjEsIDIxMSwgNjAsIDM0LCAyMzAsIDEyOCwgNjAsIDM0LCAyMTUsIDIzNSwgNjAsIDM0LCAyMzMsIDEyMiwgNjAsIDM0LCAKKyAgICAyMTgsIDEyOSwgNjAsIDM0LCAyNDgsIDg4LCA2MCwgMzQsIDIxMiwgMjEsIDYwLCAzNCwgMjQ3LCAxNDYsIDIyOCwgNTEsIAorICAgIDYwLCAzNCwgMjQ5LCAyMTUsIDYwLCAzNCwgMjQzLCAyMjIsIDYwLCAzNCwgMjUwLCAyMSwgNjAsIDM0LCAyMTgsIDE0MiwgCisgICAgNjAsIDM0LCAyMTIsIDQwLCA2MCwgMzQsIDI0NCwgOTYsIDYwLCAzNCwgMjUwLCAxOCwgNjAsIDM0LCAyNDQsIDE2MSwgNjAsIAorICAgIDM0LCA1MiwgMjExLCAxNzgsIDYwLCAzNCwgMTYzLCAyMTUsIDIzNiwgMjE1LCAxODgsIDYwLCAzNCwgMjE5LCA4OSwgNjAsIAorICAgIDM0LCAyNDQsIDE3MSwgNjAsIDM0LCAyNDksIDE0NSwgNjAsIDM0LCAyNDcsIDEzNiwgNjAsIDM0LCAyMjQsIDE3OSwgNjAsIAorICAgIDM0LCAyMzUsIDEzNywgNjAsIDM0LCAyMzEsIDY3LCA2MCwgMzQsIDIxNiwgODgsIDYwLCAzNCwgMjE3LCAyNDUsIDYwLCAzNCwgCisgICAgMjMyLCAyMzEsIDYwLCAzNCwgMjE0LCAxMzEsIDYwLCAzNCwgMjQ0LCAxMjAsIDYwLCAzNCwgMjUxLCAxOTgsIDY0LCAyNDksIAorICAgIDI1MCwgNjAsIDM0LCAyMTksIDE4OCwgNjAsIDM0LCAyNDYsIDExOCwgMjE2LCAyNDIsIDYwLCAzNCwgMjExLCAyNTMsIDYwLCAKKyAgICAzNCwgMjE5LCAxMDMsIDYwLCAzNCwgMjQ3LCAxODcsIDYwLCAzNCwgMjQ1LCAxNSwgNjAsIDM0LCAyMTksIDUsIDYwLCAzNCwgCisgICAgNzQsIDYwLCAzNCwgMjE4LCAxMzEsIDYwLCAzNCwgMjE4LCAyNDgsIDYwLCAzNCwgMjE1LCAyNTUsIDYwLCAzNCwgMjQyLCAKKyAgICAxNDcsIDYwLCAzNCwgMjUwLCAyMTgsIDYwLCAzNCwgMjE4LCAxNjAsIDYwLCAzNCwgMjUyLCAxNTQsIDYwLCAzNCwgMjIzLCAKKyAgICAzMSwgNjAsIDM0LCAyMTksIDE2NywgNjAsIDM0LCAyMzUsIDEzMCwgNjAsIDM0LCAyMjksIDg5LCA2MCwgMzQsIDIyMCwgNTcsIAorICAgIDYwLCAzNCwgMjQ0LCAxNDksIDYwLCAzNCwgMjI2LCAyMDksIDYwLCAzNCwgMjU0LCAxMTgsIDYwLCAzNCwgMjI1LCAyOSwgCisgICAgNjAsIDM0LCAyNDUsIDIyNywgNjAsIDM0LCAyNTEsIDEzMiwgNjAsIDM0LCAyMzEsIDg2LCA2MCwgMzQsIDIzMCwgMTgzLCAKKyAgICA2MCwgMzQsIDIyMCwgMTU2LCA2MCwgMzQsIDI1MywgMjUyLCA2MCwgMzQsIDIzMCwgMTIzLCA2MCwgMzQsIDIxNiwgMTksIAorICAgIDYwLCAzNCwgMjI2LCAxNjUsIDYwLCAzNCwgMjUxLCAyMDEsIDYwLCAzNCwgMjE4LCAxMjcsIDYwLCAzNCwgMjQ5LCAyMjUsIAorICAgIDYwLCAzNCwgMjQyLCAxMzksIDYwLCAzNCwgMjE2LCAxMDYsIDYwLCAzNCwgMjM1LCAyMTcsIDYwLCAzNCwgMjUxLCAyMTEsIAorICAgIDYwLCAzNCwgMjEyLCA1OCwgMjQ1LCAxNDUsIDYwLCAzNCwgMjQ5LCAyNDksIDYwLCAzNCwgMjEyLCA4LCA2MCwgMzQsIDIyMSwgCisgICAgMTcwLCA2MCwgMzQsIDI0MCwgMjQ4LCA2MCwgMzQsIDIxOSwgMiwgNjAsIDM0LCAyMTQsIDIyLCA2MCwgMzQsIDI1MiwgNzIsIAorICAgIDYwLCAzNCwgMjI1LCA3MywgNjAsIDM0LCAyNTIsIDE3NCwgNjAsIDM0LCAyMjAsIDUyLCA2MCwgMzQsIDIyMywgMTEwLCA2MCwgCisgICAgMzQsIDIyMiwgMTI2LCA2MCwgMzQsIDI0NCwgMzIsIDYwLCAzNCwgMjUxLCAyMDAsIDYwLCAzNCwgMjUwLCAyMjgsIDYwLCAKKyAgICAzNCwgMjUxLCAyMjYsIDYwLCAzNCwgMjMwLCAxMjUsIDYwLCAzNCwgMjEyLCA1NywgNjAsIDM0LCAyNTAsIDI3LCA2MCwgMzQsIAorICAgIDIxMSwgMjM2LCA2MCwgMzQsIDI0NywgMTgwLCA2MCwgMzQsIDIxMywgMTYxLCA2MCwgMzQsIDI0MiwgMTY2LCA2MCwgMzQsIAorICAgIDIzMiwgMTM3LCA2MCwgMzQsIDI0MywgODgsIDYwLCAzNCwgMjMwLCAxMTgsIDYwLCAzNCwgMjE5LCA5NCwgNjAsIDM0LCAKKyAgICAyMTksIDI1MSwgMjE3LCA3NiwgMjUxLCAyMzcsIDYwLCAzNCwgMjIzLCAxNTksIDYwLCAzNCwgMjUxLCAyMDcsIDYwLCAzNCwgCisgICAgMjExLCAxOTcsIDYwLCAzNCwgMjQ0LCAxOTAsIDYwLCAzNCwgMjMzLCA1MiwgNjAsIDM0LCAyMTcsIDU2LCAyMzMsIDUyLCAKKyAgICA2MCwgMzQsIDIzMywgNDgsIDYwLCAzNCwgMjE5LCAzMCwgNjAsIDM0LCAyMzMsIDUzLCA2MCwgMzQsIDIxMSwgMjM5LCA2MCwgCisgICAgMzQsIDI0NCwgNDYsIDYwLCAzNCwgMjQ1LCAyMTcsIDYwLCAzNCwgMjQxLCAyMzUsIDYwLCAzNCwgMjQ0LCAwLCA2MCwgMzQsIAorICAgIDI0MCwgMjQ1LCA2MCwgMzQsIDI1MSwgMTk0LCA2MCwgMzQsIDIxNywgNjMsIDYwLCAzNCwgMjQyLCAzNCwgNjAsIDM0LCAKKyAgICAyNDQsIDExMywgNjAsIDM0LCAyMjIsIDI4LCAyMTEsIDIzNiwgNjAsIDM0LCAyNTAsIDIyMCwgNjAsIDM0LCAyNDIsIDIyMiwgCisgICAgNjAsIDM0LCAyNDQsIDkwLCA2MCwgMzQsIDI1MSwgMjM3LCA2MCwgMzQsIDIyMiwgMSwgNjAsIDM0LCAyNDgsIDc0LCA2MCwgCisgICAgMzQsIDIxMiwgMiwgNjAsIDM0LCAyNDEsIDIxMCwgNjAsIDM0LCAyMTEsIDQxLCA2MCwgMzQsIDIzMCwgMTkyLCA2MCwgMzQsIAorICAgIDI1MSwgMjIxLCA2MCwgMzQsIDI0NSwgMTU1LCA2MCwgMzQsIDI0MywgMjQ0LCA2MCwgMzQsIDIxNSwgMjA5LCA2MCwgMzQsIAorICAgIDI0NiwgODIsIDYwLCAzNCwgMjIzLCAxNDEsIDYwLCAzNCwgMjI4LCA1MywgNjAsIDM0LCAyNDUsIDQxLCA2MCwgMzQsIDIxNiwgCisgICAgMTUsIDYwLCAzNCwgMjQ2LCA5NiwgNjAsIDM0LCAyMTUsIDkxLCA2MCwgMzQsIDI0NCwgNDgsIDEwOSwgMjQ4LCAzNywgMTM1LCAKKyAgICA0MywgMjE2LCA0MiwgMjIyLCAyNTEsIDEwOSwgMjQ4LCAzNywgMTM1LCA3NywgMjE2LCA0MiwgNTEsIDEwOSwgMjQ4LCAzNywgCisgICAgMTM1LCA0MywgMjE2LCA0MiwgMjMwLCAyMjQsIDIyLCAyMjIsIDI1MSwgMTA5LCAyNDgsIDM3LCAxMzUsIDc3LCAyMTYsIDQyLCAKKyAgICAyMzAsIDIyNCwgMjIsIDUxLCAxMDksIDI0OCwgMzcsIDEzNSwgMjQzLCAyMjksIDIxOCwgMTAsIDEwOSwgMjQ4LCAzNywgCisgICAgMTM1LCAyMTgsIDExLCAyNDMsIDI0MywgNDgsIDEwOSwgMjQ4LCAzNywgMTM1LCAyMTgsIDExLCAyNDMsIDI0MywgNTEsIAorICAgIDEwOSwgMjQ4LCAzNywgMTM1LCAyMTgsIDExLCAyNDMsIDI0MywgMjMzLCA0NiwgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgCisgICAgMTEsIDI0MywgMjQzLCAyMTQsIDE2MCwgMjMzLCA0NiwgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCAKKyAgICAyMTQsIDE2MCwgMjIyLCAyNTEsIDEwOSwgMjQ4LCAzNywgMTM1LCAyMTgsIDExLCAyNDMsIDI0MywgMjMyLCAxMDgsIDIzMywgCisgICAgNDYsIDEwOSwgMjQ4LCAzNywgMTM1LCAyMjYsIDEyMiwgMTA5LCAyMTksIDE4LCAxMDksIDI0OSwgMjE5LCAxMDksIDI0MywgCisgICAgMjI5LCAyMTgsIDEyOSwgMjQ3LCAxNzcsIDc4LCAyMzUsIDEzMSwgMjM1LCAyMzYsIDIxOCwgMTU5LCA4NywgMTA5LCAyMzUsIAorICAgIDE1OCwgNzgsIDEwOSwgMjQ5LCAyNTIsIDc4LCAxMDksIDU0LCAyMTAsIDg2LCA0MywgMjU0LCAxMTAsIDEyNywgNDQsIDI1NCwgCisgICAgMTEwLCAxMjcsIDQzLCA1MiwgMjU0LCAxMTAsIDEyNywgNDQsIDUyLCAyNTQsIDExMCwgMTI3LCA0MywgMjQ5LCAxNjEsIAorICAgIDEyNywgNDQsIDI0OSwgMTYxLCAxMjcsIDQzLCA3MSwgMjQ5LCAxNjEsIDEyNywgNDQsIDcxLCAyNDksIDE2MSwgMTI3LCA0MywgCisgICAgODUsIDIzMywgMjAsIDEyNywgNDQsIDg1LCAyMzMsIDIwLCAxMjcsIDIyNCwgMjM3LCA3OCwgMjQzLCAzMiwgNzgsIDQzLCAKKyAgICAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNDQsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA0MywgNzEsIDIzMywgMjAsIDEyNywgNDQsIAorICAgIDcxLCAyMzMsIDIwLCAxMjcsIDQzLCA3MSwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDQ0LCA3MSwgMjE2LCA2LCAyMjAsIDUzLCAKKyAgICAxMjcsIDQzLCA3MSwgNDIsIDEyNywgNDQsIDcxLCA0MiwgMTI3LCAyMTIsIDM2LCAyNDgsIDE1NiwgMjIzLCA0OSwgNTIsIAorICAgIDIyNCwgMTkxLCAyMjMsIDI1NCwgNzgsIDUyLCAyMjQsIDE5MSwgMjIzLCAyNTQsIDc4LCAxMjEsIDUyLCAyMjQsIDE5MSwgCisgICAgMjIzLCAyNTQsIDc4LCAyMjQsIDIzNywgMTY0LCAyNDQsIDE5MCwgMjQyLCA4LCAyMjcsIDE5OCwgMTEwLCAyNDIsIDgsIAorICAgIDIyNywgMTk4LCAxMDUsIDI0MiwgOCwgMjI3LCAxOTgsIDE1OCwgMjQyLCA4LCAyMjcsIDE5OCwgMTYxLCAyNDIsIDgsIDIyNywgCisgICAgMTk4LCAxODksIDI0MiwgOCwgMjI3LCAxOTgsIDE5NCwgMjQyLCA4LCAyMjcsIDE5OCwgMTk4LCAyNDIsIDgsIDIyNywgMTk4LCAKKyAgICAxOTUsIDI0MiwgOCwgMjI3LCAxOTgsIDIwMCwgMTA5LCAyMzMsIDMsIDEzOCwgNzgsIDEwOSwgMjIyLCAyMjgsIDEzOCwgNzgsIAorICAgIDEwOSwgMjQ4LCA0NCwgMTM4LCA3OCwgMTA5LCAyNDUsIDEyOCwgMTM4LCA3OCwgMjQsIDIxOSwgMTU1LCA1OSwgMTM4LCA3OCwgCisgICAgMjQsIDUyLCA1OSwgMTM4LCA3OCwgMjEyLCAzMiwgMjQ4LCAxNTYsIDY3LCAyMzQsIDIzMywgMjIzLCA3NywgNzgsIDY3LCAKKyAgICAyMzQsIDIzMywgMjIzLCA3NywgMiwgMjEzLCAxMzUsIDIxOSwgMzEsIDc4LCA2NywgMjM0LCAyMzMsIDIyMywgNzcsIDE2NCwgCisgICAgMjE0LCAxNjAsIDI0MiwgMjcsIDY3LCAyMzQsIDIzMywgMjIzLCA3NywgMiwgMjEzLCAxMzUsIDIxOSwgMzEsIDE2NCwgMjE0LCAKKyAgICAxNjAsIDI0MiwgMjcsIDY3LCAyMzQsIDIzMywgMjIzLCA3NywgMTY0LCAyMzIsIDEwOCwgMjQyLCAyNywgMzcsIDIyNCwgCisgICAgMjM3LCA3OCwgMTA5LCAyMTcsIDMsIDIzMiwgMjE0LCAyNDQsIDE0NiwgMjIwLCAxMzgsIDg3LCAyNDIsIDgsIDIyNywgMTk4LCAKKyAgICAyMTYsIDI0NywgMjQyLCA4LCAyMjcsIDE5OCwgMjE1LCA3MywgMjQyLCA4LCAyMjcsIDE5OCwgMjE2LCAxNjIsIDY3LCAxMDksIAorICAgIDIzNSwgMTU4LCA3OCwgMjMxLCAxNDAsIDc4LCAyMjUsIDI1NSwgMjU0LCAxNDAsIDc4LCAxMDksIDQ1LCAyMzUsIDIzOCwgCisgICAgMTA5LCAxNjMsIDI0NCwgMTA2LCAyMTksIDE4LCAxNDEsIDEsIDQsIDYxLCAxNDEsIDEsIDYxLCAxNDEsIDEsIDQsIDczLCAKKyAgICAxNDEsIDEsIDczLCAxNDEsIDEsIDQsIDcwLCAxNDEsIDEsIDcwLCAxNDEsIDEsIDQsIDc1LCAxNDEsIDEsIDc1LCAxNDEsIDEsIAorICAgIDQsIDc2LCAxNDEsIDEsIDc2LCAxNDEsIDEsIDE3NiwgMTQxLCAxLCAyNDMsIDEzNSwgMTQxLCAxLCAyMzQsIDkyLCAxNDEsIAorICAgIDEsIDI0MiwgMjE0LCAxNDEsIDEsIDIzMywgMjE3LCAxNDEsIDEsIDI0MiwgMTEzLCAxNDEsIDEsIDIzNCwgMTgyLCAxNDEsIAorICAgIDEsIDI0MywgNjIsIDE0MSwgMSwgMjM0LCAyOCwgMTQxLCAxLCAyNDIsIDE3NCwgMTQxLCAxLCAyMDYsIDE0MSwgMSwgMjEwLCAKKyAgICAxMTYsIDE0MSwgMSwgMjE5LCAxOTEsIDE0MSwgMSwgMjEwLCA0NCwgMTQxLCAxLCAyMTgsIDgzLCAxNDEsIDEsIDIxMCwgMTMsIAorICAgIDE0MSwgMSwgMjIxLCAxODEsIDE0MSwgMSwgMjEwLCA5NCwgMTQxLCAxLCAyMTksIDU4LCAxNDEsIDEsIDIxMCwgMjMsIDE0MSwgCisgICAgMSwgMjE3LCAxMDUsIDE0MSwgMSwgMjQ4LCAyMjEsIDE0MSwgMSwgMjE2LCAxMTcsIDE0MSwgMSwgMjQ4LCAzLCAxNDEsIDEsIAorICAgIDQsIDIxNSwgMTE4LCAxNDEsIDEsIDIxNSwgMTE4LCAxNDEsIDEsIDI0NiwgNzgsIDE0MSwgMSwgMjE3LCAyMiwgMTQxLCAxLCAKKyAgICAyNDgsIDkwLCAxNDEsIDEsIDExMSwgMTQxLCAxLCAyNDcsIDE0NSwgMTQxLCAxLCAxOTcsIDE0MSwgMSwgMjI4LCAyMzMsIAorICAgIDE0MSwgMSwgMjI3LCAyMzcsIDE0MSwgMSwgMjI5LCAxMDcsIDE0MSwgMSwgMjI4LCA3NCwgMTQxLCAxLCAxNjIsIDE0MSwgMSwgCisgICAgMjUyLCAxOTEsIDE0MSwgMSwgMTkwLCAxNDEsIDEsIDI0MSwgMTgwLCAxNDEsIDEsIDI1MiwgNiwgMTQxLCAxLCAyMjUsIAorICAgIDEwOCwgMTQxLCAxLCAyNDAsIDIyMiwgMTQxLCAxLCAyNTEsIDEyNSwgMTQxLCAxLCAyMjQsIDE1MCwgMTQxLCAxLCAyNDEsIAorICAgIDIzOCwgMTQxLCAxLCAyNTIsIDc1LCAxNDEsIDEsIDIyNSwgMjIxLCAxNDEsIDEsIDI0MSwgNjgsIDE0MSwgMSwgMjUxLCAKKyAgICAyMDUsIDE0MSwgMSwgMjI1LCAxNiwgMTQxLCAxLCAxODQsIDE0MSwgMSwgMjMwLCAyMzAsIDE0MSwgMSwgMjMwLCAxMDIsIAorICAgIDE0MSwgMSwgMjMxLCA5MSwgMTQxLCAxLCAyMzAsIDE2MSwgMTQxLCAxLCA0LCAxOTEsIDE0MSwgMSwgMTkxLCAxNDEsIDEsIAorICAgIDQsIDIxMCwgMjEyLCAxNDEsIDEsIDIxMCwgMjEyLCAxNDEsIDEsIDQsIDIxMCwgMjQ0LCAxNDEsIDEsIDIxMCwgMjQ0LCAKKyAgICAxNDEsIDEsIDIwNSwgMTQxLCAxLCAyMjMsIDM1LCAxNDEsIDEsIDIyMiwgMTQwLCAxNDEsIDEsIDIyMywgMTI4LCAxNDEsIDEsIAorICAgIDIyMiwgMjExLCAxNDEsIDEsIDQsIDIxMiwgNjUsIDE0MSwgMSwgMjEyLCA2NSwgMTQxLCAxLCAyMTEsIDI1MCwgMTQxLCAxLCAKKyAgICAyMTIsIDIyLCAxNDEsIDEsIDIxMSwgMjI3LCAxNDEsIDEsIDIzMCwgMjUsIDE0MSwgMSwgMjEyLCAxMTYsIDE0MSwgMSwgNCwgCisgICAgMTc2LCAxNDEsIDEsIDQsIDIzNCwgMTgyLCAzOCwgMjM0LCAyMDEsIDIxMywgMTM1LCAyMTksIDMxLCA3OCwgMzgsIDIzNCwgCisgICAgMjAxLCAyMjAsIDE1NSwgMjE5LCAzMSwgNzgsIDIzNCwgMjAxLCAyMTMsIDEzNSwgMjE5LCAzMSwgNzgsIDIzNCwgMjAxLCAKKyAgICAyMjAsIDE1NSwgMjE5LCAzMSwgNzgsIDE0MSwgMjM1LCAxNTgsIDc4LCAxNDEsIDIxMywgMTM1LCAyMzUsIDE1OCwgNzgsIAorICAgIDE0MSwgMjQ3LCAyMjEsIDIxMCwgMjI1LCAyMzQsIDIwMSwgNTIsIDI0MCwgMTY4LCA1NiwgMSwgNCwgNjEsIDU2LCAxLCA2MSwgCisgICAgNTYsIDEsIDQsIDczLCA1NiwgMSwgNzMsIDU2LCAxLCA0LCA3MCwgNTYsIDEsIDcwLCA1NiwgMSwgNCwgNzUsIDU2LCAxLCAKKyAgICA3NSwgNTYsIDEsIDQsIDc2LCA1NiwgMSwgNzYsIDU2LCAxLCAxNzYsIDU2LCAxLCAyNDMsIDEzNSwgNTYsIDEsIDIzNCwgOTIsIAorICAgIDU2LCAxLCAyNDIsIDIxNCwgNTYsIDEsIDIzMywgMjE3LCA1NiwgMSwgMjQyLCAxMTMsIDU2LCAxLCAyMzQsIDE4MiwgNTYsIAorICAgIDEsIDI0MywgNjIsIDU2LCAxLCAyMzQsIDI4LCA1NiwgMSwgMjQyLCAxNzQsIDU2LCAxLCAyMDYsIDU2LCAxLCAyMTAsIDExNiwgCisgICAgNTYsIDEsIDIxOSwgMTkxLCA1NiwgMSwgMjEwLCA0NCwgNTYsIDEsIDIxOCwgODMsIDU2LCAxLCAyMTAsIDEzLCA1NiwgMSwgCisgICAgMjIxLCAxODEsIDU2LCAxLCAyMTAsIDk0LCA1NiwgMSwgMjE5LCA1OCwgNTYsIDEsIDIxMCwgMjMsIDU2LCAxLCAyMTcsIAorICAgIDEwNSwgNTYsIDEsIDI0OCwgMjIxLCA1NiwgMSwgMjE2LCAxMTcsIDU2LCAxLCAyNDgsIDMsIDU2LCAxLCA0LCAyMTUsIDExOCwgCisgICAgNTYsIDEsIDIxNSwgMTE4LCA1NiwgMSwgMjQ2LCA3OCwgNTYsIDEsIDIxNywgMjIsIDU2LCAxLCAyNDgsIDkwLCA1NiwgMSwgCisgICAgMTExLCA1NiwgMSwgMjQ3LCAxNDUsIDU2LCAxLCAxOTcsIDU2LCAxLCAyMjgsIDIzMywgNTYsIDEsIDIyNywgMjM3LCA1NiwgCisgICAgMSwgMjI5LCAxMDcsIDU2LCAxLCAyMjgsIDc0LCA1NiwgMSwgMTYyLCA1NiwgMSwgMjUyLCAxOTEsIDU2LCAxLCAxOTAsIDU2LCAKKyAgICAxLCAyNDEsIDE4MCwgNTYsIDEsIDI1MiwgNiwgNTYsIDEsIDIyNSwgMTA4LCA1NiwgMSwgMjQwLCAyMjIsIDU2LCAxLCAyNTEsIAorICAgIDEyNSwgNTYsIDEsIDIyNCwgMTUwLCA1NiwgMSwgMjQxLCAyMzgsIDU2LCAxLCAyNTIsIDc1LCA1NiwgMSwgMjI1LCAyMjEsIAorICAgIDU2LCAxLCAyNDEsIDY4LCA1NiwgMSwgMjUxLCAyMDUsIDU2LCAxLCAyMjUsIDE2LCA1NiwgMSwgMTg0LCA1NiwgMSwgMjMwLCAKKyAgICAyMzAsIDU2LCAxLCAyMzAsIDEwMiwgNTYsIDEsIDIzMSwgOTEsIDU2LCAxLCAyMzAsIDE2MSwgNTYsIDEsIDQsIDE5MSwgNTYsIAorICAgIDEsIDE5MSwgNTYsIDEsIDQsIDIxMCwgMjEyLCA1NiwgMSwgMjEwLCAyMTIsIDU2LCAxLCA0LCAyMTAsIDI0NCwgNTYsIDEsIAorICAgIDIxMCwgMjQ0LCA1NiwgMSwgMjA1LCA1NiwgMSwgMjIzLCAzNSwgNTYsIDEsIDIyMiwgMTQwLCA1NiwgMSwgMjIzLCAxMjgsIAorICAgIDU2LCAxLCAyMjIsIDIxMSwgNTYsIDEsIDQsIDIxMiwgNjUsIDU2LCAxLCAyMTIsIDY1LCA1NiwgMSwgMjExLCAyNTAsIDU2LCAKKyAgICAxLCAyMTIsIDIyLCA1NiwgMSwgMjExLCAyMjcsIDU2LCAxLCAyMzAsIDI1LCA1NiwgMSwgMjEyLCAxMTYsIDU2LCAxLCA0LCAKKyAgICAxNzYsIDU2LCAxLCA0LCAyMzQsIDE4MiwgNTYsIDEsIDIxNCwgMjcsIDU2LCAxLCAyMTMsIDE3NiwgNTYsIDEsIDIxMywgCisgICAgMjU1LCA1NiwgMSwgMjEzLCAxMzgsIDU2LCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDIzNCwgMjAxLCAyMjQsIDE3MywgMjE5LCAKKyAgICAzMSwgNzgsIDU2LCAyMzUsIDE1OCwgNzgsIDU2LCAyMTMsIDEzNSwgMjM1LCAxNTgsIDc4LCA1NiwgMjQ3LCAyMjEsIDIzMywgCisgICAgMjU1LCAyNTEsIDE4NCwgMSwgMjUzLCAxNTgsIDI1MSwgMTg0LCAxLCAyMjYsIDEwNSwgMjUxLCAxODQsIDEsIDE5MywgMjUxLCAKKyAgICAxODQsIDEsIDI0NSwgNiwgMjUxLCAxODQsIDEsIDI0OSwgNjAsIDI1MSwgMTg0LCAxLCAyMTcsIDE1MiwgMjUxLCAxODQsIDEsIAorICAgIDIzMCwgMjUsIDI1MSwgMTg0LCAxLCAxNTYsIDI1MSwgMTg0LCAxLCAyNDMsIDIwMiwgMjUxLCAxODQsIDEsIDIzNSwgMjMsIAorICAgIDI1MSwgMTg0LCAxLCAyNDIsIDYwLCAyNTEsIDE4NCwgMSwgMjM1LCAxNDQsIDI1MSwgMTg0LCAxLCAyMjQsIDk2LCAyNTEsIAorICAgIDE4NCwgMSwgMjExLCAxNzgsIDI1MSwgMTg0LCAxLCAyMTAsIDgzLCAyNTEsIDE4NCwgMSwgMjUwLCAxNTgsIDI1MSwgMTg0LCAKKyAgICAxLCAyMjAsIDEwNCwgMjUxLCAxODQsIDEsIDE1MywgMjUxLCAxODQsIDEsIDIxMCwgMTU5LCAyNTEsIDE4NCwgMSwgMjUxLCAKKyAgICA2NiwgMjUxLCAxODQsIDEsIDIyMiwgOTEsIDI1MSwgMTg0LCAxLCA2MSwgMjUxLCAxODQsIDEsIDc2LCAyNTEsIDE4NCwgMSwgCisgICAgNzUsIDI1MSwgMTg0LCAxLCAyNDUsIDE5NywgMjUxLCAxODQsIDEsIDI1NCwgMjAxLCAyNTEsIDE4NCwgMSwgMjQ1LCAxOTUsIAorICAgIDI1MSwgMTg0LCAxLCAyNTMsIDE5MiwgMjUxLCAxODQsIDEsIDIyNiwgMTM0LCAyNTEsIDE4NCwgMSwgMjU0LCAxMjMsIDI1MSwgCisgICAgMTg0LCAxLCAyNDUsIDE1MCwgMjUxLCAxODQsIDEsIDI1NCwgMTE1LCAyNTEsIDE4NCwgMSwgMjQ1LCAxMzgsIDI1MSwgMTg0LCAKKyAgICAxLCAyNDUsIDkyLCAyNTEsIDE4NCwgMSwgNzMsIDI1MSwgMTg0LCAxLCA3MCwgMjUxLCAxODQsIDEsIDIzNSwgMTU2LCAyNTEsIAorICAgIDE4NCwgMSwgMjE0LCAxMDUsIDI1MSwgMTg0LCAxLCAyMjksIDc5LCAyNTEsIDE4NCwgMSwgMjQyLCAxNzgsIDI1MSwgMTg0LCAKKyAgICAxLCAyMzYsIDM0LCAyNCwgMSwgMjM0LCA1OCwgMjQsIDEsIDIxOCwgMjE1LCAyNCwgMSwgMjM0LCA1MSwgMjQsIDEsIDIyOCwgCisgICAgMjI2LCAyNCwgMSwgMjI4LCAyMjQsIDI0LCAxLCAyMjgsIDIyMywgMjQsIDEsIDIxNiwgMTAxLCAyNCwgMSwgMjE4LCAyMDQsIAorICAgIDI0LCAxLCAyMjMsIDI2LCAyNCwgMSwgMjIzLCAyMSwgMjQsIDEsIDIyMywgMTgsIDI0LCAxLCAyMjMsIDExLCAyNCwgMSwgCisgICAgMjIzLCA2LCAyNCwgMSwgMjIzLCAxLCAyNCwgMSwgMjIzLCAxMiwgMjQsIDEsIDIyMywgMjQsIDI0LCAxLCAyMzAsIDIxNywgCisgICAgMjQsIDEsIDIyNSwgOTUsIDI0LCAxLCAyMTgsIDIxMiwgMjQsIDEsIDIyNSwgODQsIDI0LCAxLCAyMTksIDE0OCwgMjQsIDEsIAorICAgIDIxOCwgMjA5LCAyNCwgMSwgMjM2LCA1NiwgMjQsIDEsIDI1MCwgNDYsIDI0LCAxLCAyMTgsIDIxOSwgMjQsIDEsIDI1MCwgCisgICAgMTA2LCAyNCwgMSwgMjM0LCAxMTAsIDI0LCAxLCAyMTYsIDE3MywgMjQsIDEsIDIyNSwgMTMxLCAyNCwgMSwgMjQxLCAxNzIsIAorICAgIDI0LCAxLCA2MSwgMjQsIDEsIDI1NCwgMjQzLCAyNCwgMSwgMTkxLCAyNCwgMSwgMjExLCA5MiwgMjQsIDEsIDI0NSwgMTE3LCAKKyAgICAyNCwgMSwgNzUsIDI0LCAxLCAyMTEsIDM2LCAyNCwgMSwgMjExLCA0NywgMjQsIDEsIDc2LCAyNCwgMSwgMjEyLCA2NSwgMjQsIAorICAgIDEsIDIxMiwgNjIsIDI0LCAxLCAyMjYsIDIzNCwgMjQsIDEsIDIxMCwgMjQ0LCAyNCwgMSwgNzAsIDI0LCAxLCAyMTIsIDExLCAKKyAgICAyNCwgMSwgMjEyLCAyMiwgMjQsIDEsIDIxMSwgMjUwLCAyNCwgMSwgMjEwLCAyMTIsIDI0LCAxLCAyNDUsIDU1LCAyNCwgMSwgCisgICAgMjExLCA4LCAyNCwgMSwgNzMsIDI0LCAyNDQsIDEwMywgMjQsIDEsIDIxOCwgMjEzLCAyNCwgMSwgMjI4LCAyMTYsIDI0LCAxLCAKKyAgICAyMjgsIDIxOCwgMjQsIDEsIDIyOCwgMjIxLCAyNCwgMSwgMjIzLCAxOSwgMjQsIDEsIDIyMywgMCwgMjQsIDEsIDIyMywgOCwgCisgICAgMjQsIDEsIDIyMywgMTMsIDI0LCAxLCAyMjIsIDI1NCwgMjQsIDEsIDIzMCwgMjEwLCAyNCwgMSwgMjMwLCAyMDcsIDI0LCAxLCAKKyAgICAyMzAsIDIxMSwgMjQsIDEsIDIzNCwgMjIxLCAyNCwgMSwgMjI1LCA5MCwgMjQsIDEsIDIyNSwgNzYsIDI0LCAxLCAyMjUsIAorICAgIDgyLCAyNCwgMSwgMjI1LCA3OSwgMjQsIDEsIDIyNSwgOTMsIDI0LCAxLCAyMjUsIDc3LCAyNCwgMSwgMjM0LCAyMTksIDI0LCAKKyAgICAxLCAyMzQsIDIxNywgMjQsIDEsIDIxOSwgMTQxLCAyNCwgMSwgMjE5LCAxMzksIDI0LCAxLCAyMTksIDEzMSwgMjQsIDEsIAorICAgIDIxOSwgMTM2LCAyNCwgMSwgMjE5LCAxNDYsIDI0LCAxLCAyMjYsIDMyLCAyNCwgMSwgMjE4LCAyMTYsIDI0LCAxLCAyMTEsIAorICAgIDI2LCAyNCwgMSwgMjExLCAyMiwgMjQsIDEsIDIxMSwgMjMsIDI0LCAxLCAyMzQsIDIyMCwgMjQsIDEsIDIxOCwgMjE3LCAyNCwgCisgICAgMSwgMjExLCAzMiwgMjQsIDEsIDIxMCwgMjM4LCAyNCwgMSwgMjEwLCAyMzcsIDI0LCAxLCAyMTAsIDI0MCwgMjQsIDEsIAorICAgIDIxMCwgMjAzLCAyNCwgMSwgMjEwLCAyMDQsIDI0LCAxLCAyMTAsIDIwNywgMjQsIDEsIDI1NCwgMzQsIDI0LCAxLCAyNTQsIAorICAgIDI4LCAxMDksIDI1NCwgOTksIDIzMiwgMjAzLCA3OCwgMTA5LCAyNTQsIDk5LCAyMjMsIDUwLCA3OCwgMTA5LCAyNTQsIDk5LCAKKyAgICAxMjMsIDc4LCAxMDksIDI1NCwgOTksIDExMywgNzgsIDEwOSwgMjU0LCA5OSwgMTM0LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDQsIAorICAgIDExLCA3OCwgMTA5LCAyNTQsIDk5LCAyMTYsIDE0LCA3OCwgMTA5LCAyNTQsIDk5LCAyMzAsIDIyNCwgNzgsIDEwOSwgMjU0LCAKKyAgICA5OSwgMjUxLCAxNzUsIDc4LCAxMDksIDI1NCwgOTksIDI0NCwgOTIsIDc4LCAxMDksIDI1NCwgOTksIDIyMSwgMTc2LCA3OCwgCisgICAgMTA5LCAyNTQsIDk5LCAyMTYsIDE2OSwgNzgsIDEwOSwgMjU0LCA5OSwgMjQ0LCA0LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDEsIAorICAgIDIyNCwgNzgsIDEwOSwgMjU0LCA5OSwgMjQ1LCAyMjQsIDc4LCAxMDksIDI1NCwgOTksIDIzMSwgMTg2LCA3OCwgMjUxLCAKKyAgICAxODQsIDEsIDI1MSwgMTI1LCAyNTEsIDE4NCwgMSwgMjEwLCA0NCwgMjUxLCAxODQsIDEsIDIzNSwgMTA4LCAyNTEsIDE4NCwgCisgICAgMSwgMjQyLCAxMTMsIDI1MSwgMTg0LCAxLCAyNDUsIDIwOSwgMjUxLCAxODQsIDEsIDI0NSwgMTM1LCAyNTEsIDE4NCwgMSwgCisgICAgMjI2LCAxODMsIDI1MSwgMTg0LCAxLCAyMjYsIDE4NywgMjUxLCAxODQsIDEsIDIzNSwgMTc5LCAyNTEsIDE4NCwgMSwgMjU0LCAKKyAgICAxMDEsIDI1MSwgMTg0LCAxLCAyMzUsIDIyNCwgMjUxLCAxODQsIDEsIDIxNCwgMTY4LCAyNTEsIDE4NCwgMSwgMjM2LCAxNiwgCisgICAgMjUxLCAxODQsIDEsIDIyOSwgNTcsIDI1MSwgMTg0LCAxLCAyNTQsIDE5NSwgMjUxLCAxODQsIDEsIDI1MywgMTg3LCAyNTEsIAorICAgIDE4NCwgMSwgMjU0LCAxMzYsIDI1MSwgMTg0LCAxLCAyMjYsIDIwNCwgMjUxLCAxODQsIDEsIDIyNiwgMTg5LCAyNTEsIDE4NCwgCisgICAgMSwgMjM1LCAyMjEsIDI1MSwgMTg0LCA0MCwgMSwgMjI2LCAxMDUsIDI1MSwgMTg0LCA0MCwgMSwgMjE3LCAxNTIsIDI1MSwgCisgICAgMTg0LCA0MCwgMSwgMjM1LCAyMywgMjUxLCAxODQsIDQwLCAxLCAyNDIsIDYwLCAyNTEsIDE4NCwgMSwgMjQyLCAyNTAsIAorICAgIDI1MSwgMTg0LCAxLCAyMzIsIDI1NSwgMjUxLCAxODQsIDEsIDIwOSwgMjUwLCA5LCAyMTgsIDEwMywgMjE3LCAxNTIsIDksIAorICAgIDIxOCwgMTAzLCAyMTIsIDQsIDksIDIxOCwgMTAzLCAyMTEsIDE1OCwgOSwgMjE4LCAxMDMsIDI1MSwgNzksIDksIDIxOCwgCisgICAgMTAzLCAyMTcsIDI1NCwgOSwgMjE4LCAxMDMsIDI0MCwgMTU4LCA5LCAyMTgsIDEwMywgMjQwLCAxNjIsIDksIDIxOCwgMTAzLCAKKyAgICAyNDAsIDIzMSwgOSwgMjE4LCAxMDMsIDI0MCwgMTU5LCA5LCAyMTgsIDEwMywgMjE3LCAxNTUsIDksIDIxOCwgMTAzLCAyNDAsIAorICAgIDE2MSwgOSwgMjE4LCAxMDMsIDI0MCwgMTU3LCA5LCAyMTgsIDEwMywgMjQwLCAyMjksIDksIDIxOCwgMTAzLCAyNDAsIDE2MCwgCisgICAgOSwgMjE4LCAxMDMsIDI0MCwgMTU2LCA5LCAyMTgsIDEwMywgMjMwLCAyNSwgOSwgMjE4LCAxMDMsIDI0MiwgNjAsIDksIAorICAgIDIxOCwgMTAzLCAyMjIsIDkxLCA5LCAyMTgsIDEwMywgMjI2LCAxMDUsIDksIDIxOCwgMTAzLCAyMTksIDIxLCA5LCAyMTgsIAorICAgIDEwMywgMjQ5LCA2MCwgOSwgMjE4LCAxMDMsIDI0MCwgMTYzLCA5LCAyMTgsIDEwMywgMjQxLCAxOTAsIDksIDIxOCwgMTAzLCAKKyAgICAyMTcsIDE2NCwgOSwgMjE4LCAxMDMsIDIxNywgMjMzLCA5LCAyMTgsIDEwMywgMjE4LCAxNjgsIDksIDIxOCwgMTAzLCAyMjAsIAorICAgIDExMCwgOSwgMjE4LCAxMDMsIDIyNSwgMjI0LCA5LCAyMTgsIDEwMywgMjI0LCA5OCwgOSwgMjE4LCAxMDMsIDIxNiwgNDMsIAorICAgIDksIDIxOCwgMTAzLCAyMTcsIDE1NCwgOSwgMjE4LCAxMDMsIDIxNywgMjQ0LCA5LCAyMTgsIDEwMywgMjQwLCAxNzAsIDksIAorICAgIDIxOCwgMTAzLCAyNDAsIDE1NSwgOSwgMjE4LCAxMDMsIDIyNSwgMTQ5LCA5LCAyMTgsIDEwMywgMjI0LCA5NiwgNTYsIDEsIAorICAgIDQsIDIzMywgMjE3LCA1NiwgMSwgNCwgMjE5LCAxOTEsIDU2LCAxLCA0LCAyMTgsIDgzLCA1NiwgMSwgNCwgMTExLCA1NiwgMSwgCisgICAgNCwgMjI3LCAyMzcsIDU2LCAxLCA0LCAxNjIsIDU2LCAxLCA0LCAyNDEsIDE4MCwgNTYsIDEsIDQsIDI0MCwgMjIyLCA1NiwgCisgICAgMSwgNCwgMjQxLCAyMzgsIDU2LCAxLCA0LCAyNDEsIDY4LCA1NiwgMSwgNCwgMjMwLCAxMDIsIDU2LCAxLCA0LCAyMDUsIDU2LCAKKyAgICAxLCA0LCAyMjMsIDM1LCA1NiwgMSwgNCwgMjIyLCAxNDAsIDU2LCAxLCA0LCAyMjMsIDEyOCwgNTYsIDEsIDQsIDIyMiwgCisgICAgMjExLCA4OCwgMjQsIDIzNCwgNTgsIDg4LCAyNCwgMjI4LCAyMjYsIDg4LCAyNCwgMjE2LCAxMDEsIDg4LCAyNCwgMjIzLCAKKyAgICAyNiwgODgsIDI0LCAyMzAsIDIxNywgODgsIDI0LCAyMjUsIDk1LCA4OCwgMjQsIDIxOSwgMTQ4LCA4OCwgMjQsIDIzNiwgNTYsIAorICAgIDg4LCAyNCwgMjUwLCA0NiwgODgsIDI0LCAyNTAsIDEwNiwgODgsIDI0LCAyMzQsIDExMCwgODgsIDI0LCAyMTYsIDE3MywgCisgICAgODgsIDI0LCAyMjUsIDEzMSwgODgsIDI0LCAyNDEsIDE3MiwgODgsIDI0LCAyMzQsIDU5LCA2MSwgODgsIDI0LCAyMjgsIAorICAgIDIyNywgNjEsIDg4LCAyNCwgMjE2LCAxMDIsIDYxLCA4OCwgMjQsIDIyMywgMjcsIDYxLCA4OCwgMjQsIDIzMCwgMjE4LCA2MSwgCisgICAgODgsIDI0LCAyMjUsIDk2LCA2MSwgODgsIDI0LCAyMTksIDE0OSwgNjEsIDg4LCAyNCwgMjM2LCA1NywgNjEsIDg4LCAyNCwgCisgICAgMjUwLCA0NywgNjEsIDg4LCAyNCwgMjUwLCAxMDcsIDYxLCA4OCwgMjQsIDIzNCwgMTExLCA2MSwgODgsIDI0LCAyMTYsIAorICAgIDE3NCwgNjEsIDg4LCAyNCwgMjI1LCAxMzIsIDYxLCA4OCwgMjQsIDI0MSwgMTczLCA2MSwgODgsIDI0LCAyNTAsIDQ3LCA3MCwgCisgICAgODgsIDIzNCwgMywgMTM1LCAyMjYsIDIxNywgODgsIDIzNCwgMywgMTM1LCAxNDQsIDI0MCwgMjIyLCA4OCwgMTU0LCAxMTAsIAorICAgIDg4LCAxNTQsIDEwNSwgODgsIDE1NCwgMTU4LCA4OCwgMTU0LCAxNjEsIDg4LCAxNTQsIDE4OSwgODgsIDE1NCwgMTk0LCA4OCwgCisgICAgMTU0LCAxOTgsIDg4LCAxNTQsIDE5NSwgODgsIDE1NCwgMjAwLCA4OCwgMTU0LCAyMTYsIDI0NywgODgsIDE1NCwgMjMwLCAKKyAgICAxMjgsIDg4LCAxNTQsIDI0NCwgOTYsIDg4LCAxNTQsIDIxMiwgNDAsIDg4LCAxNTQsIDIxMSwgMjE0LCA4OCwgMTU0LCAyMzEsIAorICAgIDM5LCA4OCwgMTU0LCAyNDUsIDIyMywgODgsIDE1NCwgMjE4LCAzNywgODgsIDE1NCwgMjE4LCAxMzIsIDg4LCAxNTQsIDI0MSwgCisgICAgMjQ0LCA4OCwgMTU0LCAyMTksIDU0LCA4OCwgMTU0LCAyMjksIDIwNCwgODgsIDE1NCwgMjE5LCA0LCA4OCwgMTU0LCAyNDQsIAorICAgIDEwMiwgODgsIDE1NCwgMjQ5LCAyMDAsIDg4LCAxNTQsIDIzMywgMTI1LCA4OCwgMTU0LCAyMjMsIDcxLCA4OCwgMTU0LCAKKyAgICAyNTEsIDE1LCA4OCwgMTU0LCAyMTgsIDg3LCA4OCwgMTU0LCAyMTgsIDIwLCA4OCwgMTU0LCAyNDUsIDEyNywgODgsIDE1NCwgCisgICAgMjIzLCA2MywgODgsIDE1NCwgMjU0LCAxNTAsIDg4LCAxNTQsIDI0NCwgMTI4LCA4OCwgMTU0LCAyMjMsIDYxLCA4OCwgMTU0LCAKKyAgICAyMjAsIDE1NiwgODgsIDE1NCwgMjIzLCAxMjcsIDM3LCAxNTQsIDIyNCwgMTIsIDM3LCAxNTQsIDIzNCwgODAsIDM3LCAxNTQsIAorICAgIDIyMSwgMTk4LCAzNywgMTU0LCAyMzMsIDI1NSwgMzcsIDU0LCAyMTYsIDI0OCwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgCisgICAgMzcsIDU0LCAyMTUsIDc0LCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAzNywgNTQsIDIxNiwgMTYzLCAyMjYsIDE5NywgODUsIAorICAgIDIxOCwgMjM0LCAzNywgNTQsIDI0NCwgMTYsIDIyNiwgMTk3LCA4NSwgMjE4LCAyMzQsIDM3LCA1NCwgMjQ0LCAxMTUsIDIyNiwgCisgICAgMTk3LCA4NSwgMjE4LCAyMzQsIDM3LCA1NCwgMjE5LCAxMTIsIDIyNiwgMTk3LCA4NSwgMjE4LCAyMzQsIDM3LCA1NCwgMjIwLCAKKyAgICAxMTcsIDIyNiwgMTk3LCA4NSwgMjE4LCAyMzQsIDM3LCA1NCwgMjQ1LCAxODUsIDIyNiwgMTk3LCA4NSwgMjE4LCAyMzQsIAorICAgIDIyNSwgMjUxLCA1MCwgMzcsIDU0LCAyMTUsIDc0LCAxMTAsIDM3LCA1NCwgMjE1LCA3NCwgMTA1LCAzNywgNTQsIDIxNSwgCisgICAgNzQsIDE1OCwgMzcsIDU0LCAyMTUsIDc0LCAxNjEsIDM3LCA1NCwgMjE1LCA3NCwgMTg5LCAzNywgNTQsIDIxNSwgNzQsIAorICAgIDE5NCwgMzcsIDU0LCAyMTUsIDc0LCAxOTgsIDM3LCA1NCwgMjE1LCA3NCwgMTk1LCAzNywgNTQsIDIxNSwgNzQsIDIwMCwgCisgICAgMzcsIDU0LCAyMTYsIDE2MiwgMzcsIDU0LCAyMTYsIDE2MywgMTEwLCAzNywgNTQsIDIxNiwgMTYzLCAxMDUsIDM3LCA1NCwgCisgICAgMjE2LCAxNjMsIDE1OCwgMzcsIDU0LCAyMTYsIDE2MywgMTYxLCAzNywgNTQsIDIxNiwgMTYzLCAxODksIDM3LCAyNCwgMjM0LCAKKyAgICA1OCwgMzcsIDI0LCAyMjgsIDIyNiwgMzcsIDI0LCAyMTYsIDEwMSwgMzcsIDI0LCAyMjMsIDI2LCAzNywgMjQsIDIzMCwgCisgICAgMjE3LCAzNywgMjQsIDIyNSwgOTUsIDM3LCAyNCwgMjE5LCAxNDgsIDM3LCAyNCwgMjM2LCA1NiwgMzcsIDI0LCAyNTAsIDQ2LCAKKyAgICAzNywgMjQsIDI1MCwgMTA2LCAzNywgMjQsIDIzNCwgMTEwLCAzNywgMjQsIDIxNiwgMTczLCAzNywgMjQsIDIyNSwgMTMxLCAKKyAgICAzNywgMjQsIDI0MSwgMTcyLCAzNywgMjQsIDIzNCwgNTksIDYxLCAzNywgMjQsIDIyOCwgMjI3LCA2MSwgMzcsIDI0LCAyMTYsIAorICAgIDEwMiwgNjEsIDM3LCAyNCwgMjIzLCAyNywgNjEsIDM3LCAyNCwgMjMwLCAyMTgsIDYxLCAzNywgMjQsIDIyNSwgOTYsIDYxLCAKKyAgICAzNywgMjQsIDIxOSwgMTQ5LCA2MSwgMzcsIDI0LCAyMzYsIDU3LCA2MSwgMzcsIDI0LCAyNTAsIDQ3LCA2MSwgMzcsIDI0LCAKKyAgICAyNTAsIDEwNywgNjEsIDM3LCAyNCwgMjM0LCAxMTEsIDYxLCAzNywgMjQsIDIxNiwgMTc0LCA2MSwgMzcsIDI0LCAyMjUsIAorICAgIDEzMiwgNjEsIDM3LCAyNCwgMjQxLCAxNzMsIDYxLCAzNywgMjM0LCAzLCAxMzUsIDI1MCwgMTQ4LCAzNywgMjM0LCAzLCAKKyAgICAxMzUsIDIzNSwgNDcsIDM3LCAyNCwgMjM2LCA1NywgNzAsIDIzNCwgMywgMjE4LCAxNTksIDg3LCAzNywgMTU0LCAxMTAsIAorICAgIDM3LCAxNTQsIDEwNSwgMzcsIDE1NCwgMTU4LCAzNywgMTU0LCAxNjEsIDM3LCAxNTQsIDE4OSwgMzcsIDE1NCwgMTk0LCAzNywgCisgICAgMTU0LCAxOTgsIDM3LCAxNTQsIDE5NSwgMzcsIDE1NCwgMjAwLCAzNywgMTU0LCAyMTYsIDI0NywgMzcsIDE1NCwgMjMwLCAKKyAgICAxMjgsIDM3LCAxNTQsIDI0NCwgOTYsIDM3LCAxNTQsIDIxMiwgNDAsIDM3LCAxNTQsIDIxMSwgMjE0LCAzNywgMTU0LCAyMzEsIAorICAgIDM5LCAzNywgMTU0LCAyNDUsIDIyMywgMzcsIDE1NCwgMjE4LCAzNywgMzcsIDE1NCwgMjE4LCAxMzIsIDM3LCAxNTQsIDI0MSwgCisgICAgMjQ0LCAzNywgMTU0LCAyMTksIDU0LCAzNywgMTU0LCAyMjksIDIwNCwgMzcsIDE1NCwgMjE5LCA0LCAzNywgMTU0LCAyNDQsIAorICAgIDEwMiwgMzcsIDE1NCwgMjQ5LCAyMDAsIDM3LCAxNTQsIDIzMywgMTI1LCAzNywgMTU0LCAyMjEsIDE3NCwgMzcsIDE1NCwgCisgICAgMjMxLCAxODksIDM3LCAxNTQsIDI0NCwgMTM3LCAzNywgMTU0LCAyMTgsIDQ5LCAzNywgMTU0LCAyNDUsIDM0LCAzNywgMTU0LCAKKyAgICAyMjQsIDE4NywgMzcsIDE1NCwgMjUzLCAxOTYsIDM3LCAxNTQsIDIzNSwgMTU5LCAzNywgMTU0LCAyMjMsIDYxLCAzNywgCisgICAgMTU0LCAyNDksIDE2NCwgMzcsIDE1NCwgMjQ5LCAxNTUsIDM3LCAxNTQsIDI0MSwgMTY1LCAzNywgMTU0LCAyNTAsIDE3NCwgCisgICAgMzcsIDE1NCwgMjMyLCAxMTAsIDM3LCAxNTQsIDIzMywgNDYsIDM3LCAxNTQsIDIyMiwgMjUxLCAzNywgMTU0LCAyMzEsIDgzLCAKKyAgICAzNywgMTU0LCAyMjMsIDg3LCAzNywgMTU0LCAyMTgsIDg3LCAzNywgMTU0LCAyMTgsIDIwLCAzNywgMTU0LCAyNDUsIDEyNywgCisgICAgMzcsIDE1NCwgMjIzLCA2MywgMzcsIDE1NCwgMjU0LCAxNTAsIDM3LCAxNTQsIDIyOCwgMjEyLCAzNywgNTQsIDIxNiwgMTYzLCAKKyAgICAxOTQsIDM3LCA1NCwgMjE2LCAxNjMsIDE5OCwgMzcsIDU0LCAyMTYsIDE2MywgMTk1LCAzNywgNTQsIDIxNiwgMTYzLCAyMDAsIAorICAgIDM3LCA1NCwgMjQ0LCAxNSwgMzcsIDU0LCAyNDQsIDE2LCAxMTAsIDM3LCA1NCwgMjQ0LCAxNiwgMTA1LCAzNywgNTQsIDI0NCwgCisgICAgMTYsIDE1OCwgMzcsIDU0LCAyNDQsIDE2LCAxNjEsIDM3LCA1NCwgMjQ0LCAxNiwgMTg5LCAzNywgNTQsIDI0NCwgMTYsIAorICAgIDE5NCwgMzcsIDU0LCAyNDQsIDE2LCAxOTgsIDM3LCA1NCwgMjQ0LCAxNiwgMTk1LCAzNywgNTQsIDI0NCwgMTYsIDIwMCwgCisgICAgMzcsIDU0LCAyNDQsIDExNCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjM1LCAxMzMsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIAorICAgIDI0NCwgMTQ4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMzEsIDE2MCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjU0LCA0NywgCisgICAgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjMxLCAxMzIsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIzNSwgNDUsIDEwOSwgMjE3LCAzLCAKKyAgICAxNiwgMzEsIDIzNSwgNDYsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI1MywgMTg4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMjAsIAorICAgIDEzNiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjI2LCAyMzksIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIyOCwgNDAsIDEwOSwgCisgICAgMjE3LCAzLCAxNiwgMzEsIDI0OCwgODUsIDQyLCAyNDEsIDE5MCwgNDIsIDI0NSwgODgsIDQyLCAyNDUsIDQzLCAyMzIsIAorICAgIDIxOSwgMjMyLCAyNDAsIDUwLCAzNywgNTYsIDYxLCAzNywgNTYsIDczLCAzNywgNTYsIDcwLCAzNywgNTYsIDc1LCAzNywgCisgICAgNTYsIDc2LCAzNywgNTYsIDE3NiwgMzcsIDU2LCAyMzQsIDkyLCAzNywgNTYsIDIzMywgMjE3LCAzNywgNTYsIDIzNCwgMTgyLCAKKyAgICAzNywgNTYsIDIzNCwgMjgsIDM3LCA1NiwgMjA2LCAzNywgNTYsIDIxOSwgMTkxLCAzNywgNTYsIDIxOCwgODMsIDM3LCA1NiwgCisgICAgMjIxLCAxODEsIDM3LCA1NiwgMjE5LCA1OCwgMzcsIDU2LCAyMTcsIDEwNSwgMzcsIDU2LCAyMTYsIDExNywgMzcsIDU2LCAKKyAgICAyMTUsIDExOCwgMzcsIDU2LCAyMTcsIDIyLCAzNywgNTYsIDExMSwgMzcsIDU2LCAxOTcsIDM3LCA1NiwgMjI4LCAyMzMsIAorICAgIDM3LCA1NiwgMjI3LCAyMzcsIDM3LCA1NiwgMjI5LCAxMDcsIDM3LCA1NiwgMjI4LCA3NCwgMzcsIDU2LCAxNjIsIDM3LCA1NiwgCisgICAgMjQxLCAxODAsIDM3LCA1NiwgMjQwLCAyMjIsIDM3LCA1NiwgMjQxLCAyMzgsIDM3LCA1NiwgMjQxLCA2OCwgMzcsIDU2LCAKKyAgICAxODQsIDM3LCA1NiwgMjMwLCAyMzAsIDM3LCA1NiwgMjMwLCAxMDIsIDM3LCA1NiwgMjMxLCA5MSwgMzcsIDU2LCAyMzAsIAorICAgIDE2MSwgMzcsIDU2LCAxOTEsIDM3LCA1NiwgMjEwLCAyMTIsIDM3LCA1NiwgMjEwLCAyNDQsIDM3LCA1NiwgMjA1LCAzNywgCisgICAgNTYsIDIyMywgMzUsIDM3LCA1NiwgMjIyLCAxNDAsIDM3LCA1NiwgMjIzLCAxMjgsIDM3LCA1NiwgMjIyLCAyMTEsIDM3LCAKKyAgICA1NiwgMjEyLCA2NSwgMzcsIDU2LCAyMTEsIDI1MCwgMzcsIDU2LCAyMTIsIDIyLCAzNywgNTYsIDIxMSwgMjI3LCA0MiwgCisgICAgMjU0LCA3MSwgNDIsIDI1MywgMjM5LCA0MiwgMjU0LCA5NSwgNDIsIDI1NSwgMzEsIDQyLCAyMzUsIDIyNiwgNDIsIDIzNSwgCisgICAgMTk2LCA0MiwgMjE0LCAxNjYsIDQyLCAyNDUsIDY2LCA0MiwgMjQ1LCAyMDYsIDQyLCAyMjYsIDE4NiwgNDIsIDIyNiwgMTgwLCAKKyAgICA0MiwgMjM0LCAyNDUsIDQyLCAyMzQsIDIxNCwgNDIsIDIzNCwgMjExLCA0MiwgMjQzLCA5MiwgNDIsIDI0MywgMTAxLCA0MiwgCisgICAgMjQyLCAyMDQsIDQyLCAyNDIsIDIwMCwgNDIsIDIzMywgMTUwLCA0MiwgMjQyLCAxOTMsIDQyLCAyMzQsIDcyLCA0MiwgMjM0LCAKKyAgICA3MSwgNDIsIDIzNCwgNzAsIDQyLCAyMzQsIDY5LCA0MiwgMjQyLCA4NiwgNDIsIDI0MiwgODUsIDQyLCAyMzMsIDE5MywgNDIsIAorICAgIDIzMywgMTk1LCA0MiwgMjM0LCAxNzgsIDQyLCAyMzQsIDEsIDQyLCAyMzQsIDgsIDQyLCAyMjIsIDE2LCA0MiwgMjIxLCAKKyAgICAyMzcsIDQyLCAyMTksIDEyOSwgNDIsIDIyMCwgMTQxLCA0MiwgMjIwLCAxNDAsIDQyLCAyNDgsIDIxOCwgNDIsIDI0OCwgMzYsIAorICAgIDQyLCAyNDcsIDEyMSwgNDIsIDIxNiwgMzIsIDQyLCAyMjksIDIwMCwgNDIsIDIyOCwgNDEsIDQyLCAyNDIsIDMyLCA0MiwgCisgICAgMjI2LCA4NCwgNDIsIDIyNiwgODMsIDQyLCAyNTIsIDE4OCwgNDIsIDIyNSwgMTA1LCA0MiwgMjI1LCA2OSwgNDIsIDIyNSwgCisgICAgNzAsIDQyLCAyNTEsIDIzNCwgNDIsIDI0MCwgMjIxLCA0MiwgMjQwLCAyMTcsIDQyLCAyNTEsIDkxLCA0MiwgMjQwLCAyMDQsIAorICAgIDQyLCAyNDEsIDIxNSwgNDIsIDIyNSwgMTU5LCA0MiwgMjI1LCAxOTQsIDQyLCAyNDEsIDE5OCwgNDIsIDIyNSwgMTkxLCA0MiwgCisgICAgMjI1LCAyMDcsIDQyLCAyNTIsIDYxLCA0MiwgMjI1LCA2LCA0MiwgMjUxLCAxODAsIDQyLCAyNDEsIDU2LCA0MiwgMjI0LCAKKyAgICAyNTAsIDQyLCAyNDEsIDQ4LCA0MiwgMjQxLCA1MCwgNDIsIDIzMSwgMjAxLCA0MiwgMjMxLCAxOTcsIDQyLCAyMzEsIDIwNiwgCisgICAgNDIsIDIzMSwgMTUwLCA0MiwgMjMxLCAxNzUsIDQyLCAyMzAsIDE5NywgNDIsIDIzMCwgMTc2LCA0MiwgMjMwLCAxNzUsIDQyLCAKKyAgICAyMzEsIDc0LCA0MiwgMjMxLCA3MSwgNDIsIDIzMSwgNzUsIDQyLCAyMTEsIDEwMiwgNDIsIDIxMSwgMTAwLCA0MiwgMjEwLCAKKyAgICAyMDEsIDQyLCAyMjIsIDIyNiwgNDIsIDIyMiwgMjMwLCA0MiwgMjIyLCAxMTcsIDQyLCAyMjIsIDExMSwgNDIsIDIyMywgODUsIAorICAgIDQyLCAyMjMsIDgyLCA0MiwgMjEyLCAzOCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxMCwgODYsIDEwOSwgCisgICAgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAxMTAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAxMDUsIDEwOSwgCisgICAgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAxNTgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAxNjEsIDEwOSwgCisgICAgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAxODksIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAxOTQsIDEwOSwgCisgICAgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAxOTgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAxOTUsIDEwOSwgCisgICAgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMDAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTYsIDI0NywgCisgICAgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDI0NSwgMTY3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgCisgICAgMjE1LCA3NiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNiwgMTY0LCAxMDksIDIxNywgMywgMTYsIDMxLCAKKyAgICAyNDAsIDIzOSwgMjQ0LCA1LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjQ0LCAxMTgsIDEwOSwgMjE3LCAzLCAKKyAgICAxNiwgMzEsIDI0MCwgMjM5LCAyMTksIDExOSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIyMCwgMTE5LCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjQ1LCAxOTAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMjgsIAorICAgIDE5NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNSwgNzMsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgCisgICAgMjM5LCAyMTUsIDY3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE1LCA2MywgMTA5LCAyMTcsIDMsIDE2LCAKKyAgICAzMSwgMjQwLCAyMzksIDIxNSwgNjQsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTUsIDY5LCA0MiwgMjQwLCAKKyAgICAyMzAsIDQyLCAyNDgsIDIyMSwgNDIsIDI1MywgMTkyLCA0MiwgMTMwLCA0MiwgMjI2LCAxMjUsIDQyLCAyMjUsIDIyNSwgNDIsIAorICAgIDI0NywgMTQ3LCA0MiwgMjQ3LCAxNDgsIDIxOCwgMjMzLCA0MiwgMjQ3LCAxNDgsIDI0OSwgMTA4LCA0MiwgMjM1LCAxNTYsIAorICAgIDQyLCAyNDUsIDkxLCAyMjksIDIwNSwgMjQxLCAyMTYsIDQyLCAyNDUsIDkxLCAyMjksIDIwNSwgMjE3LCAxNzQsIDQyLCAKKyAgICAyNDUsIDkxLCAyMjksIDIwNSwgMjE3LCA3NCwgNDIsIDI0NSwgOTEsIDIyOSwgMjA1LCAyMzEsIDcwLCA0MiwgMjQ5LCAxNTcsIAorICAgIDQyLCAyMjYsIDkwLCAyNTQsIDEyNSwgNDIsIDE5NywgNDIsIDIzMCwgMTAzLCA2MSwgNDIsIDE4NCwgNDIsIDE3NiwgNDIsIAorICAgIDIzNCwgMTg1LCA0MiwgMjMxLCAxMjksIDQyLCAyNDMsIDgwLCA0MiwgMjUxLCAxOCwgNDIsIDIzNCwgMTg0LCA0MiwgMjI1LCAKKyAgICAxNTAsIDQyLCAyMjksIDgxLCA0MiwgMjMwLCAxMDMsIDI0NSwgNiwgNDIsIDIzMCwgMTAzLCAyNDMsIDIwMiwgNDIsIDIzMSwgCisgICAgMTUsIDQyLCAyMzQsIDEzNCwgNDIsIDI0MCwgMTYzLCA0MiwgMjM0LCA5NCwgNDIsIDIzMCwgMjMyLCA0MiwgMjQyLCAyMTYsIAorICAgIDQyLCAyMTYsIDExOSwgNDIsIDIzMCwgMTAzLCAxNTYsIDQyLCAyMzAsIDE2OSwgNDIsIDI0NywgMTU3LCA0MiwgMjM0LCA0MCwgCisgICAgNDIsIDI0NCwgNDUsIDQyLCAyMjgsIDExMiwgNDIsIDIzMCwgMTAzLCAxOTMsIDQyLCAyMzAsIDE2NiwgNDIsIDI0OSwgMjM5LCAKKyAgICA0MiwgMjM0LCAzNCwgNDIsIDIzMCwgMTY3LCAyMTgsIDIzMywgNDIsIDI0OSwgMjQwLCAyMTgsIDIzMywgNDIsIDIzMiwgNTAsIAorICAgIDIxOCwgMjMzLCA0MiwgMjM0LCAzNSwgMjE4LCAyMzMsIDQyLCAyMzAsIDE2NywgMjQ5LCAxMDgsIDQyLCAyNDksIDI0MCwgCisgICAgMjQ5LCAxMDgsIDQyLCAyMzIsIDUwLCAyNDksIDEwOCwgNDIsIDIzNCwgMzUsIDI0OSwgMTA4LCA0MiwgMjMyLCA1MCwgMTE3LCAKKyAgICAyMjIsIDkxLCA0MiwgMjMyLCA1MCwgMTE3LCAyMjIsIDkyLCAyMTgsIDIzMywgNDIsIDE5MCwgNDIsIDIzMywgMjUxLCA0MiwgCisgICAgMjMwLCAxMDUsIDQyLCAyNDIsIDE1MSwgNDIsIDIyMywgMTc2LCA0MiwgMjIzLCAxNzcsIDExNywgMjIyLCA5MSwgNDIsIAorICAgIDIyMywgMTc3LCAxMTcsIDIyMiwgOTIsIDIxOCwgMjMzLCA0MiwgMjI0LCAxNjIsIDQyLCAyMjgsIDEzLCA0MiwgMjMwLCAKKyAgICAxMDMsIDIyMiwgOTEsIDQyLCAyMzAsIDEwNCwgNDIsIDIyNCwgMTE2LCA0MiwgMjI3LCAxNzYsIDQyLCAyMzAsIDEwMywgCisgICAgMjE0LCAxMDUsIDQyLCAyMzAsIDQ5LCA0MiwgMjMzLCAxODUsIDQyLCAyMzAsIDUwLCAyMzEsIDc0LCA0MiwgMjI0LCAxMTUsIAorICAgIDQyLCAyMjcsIDE3NSwgNDIsIDIzMCwgMTAzLCAyMTIsIDk4LCA0MiwgMjMwLCA0MywgNDIsIDIzMywgMTgzLCA0MiwgMjMwLCAKKyAgICA0NCwgMjMxLCA3NCwgNDIsIDIzNSwgMjQsIDIyNiwgMjIwLCA0MiwgMjMyLCA1MCwgMjI2LCAyMjAsIDQyLCAyNTQsIDEzNiwgCisgICAgNDIsIDI1MSwgMTYwLCA0MiwgMjUwLCAyMTQsIDQyLCAyNTAsIDE5MSwgNDIsIDI1MSwgNjcsIDExNywgMjM0LCAxMzQsIDQyLCAKKyAgICAyNDksIDIzOCwgNDIsIDI0OCwgMTQyLCA0MiwgMjQyLCA3MiwgNDIsIDE2MiwgNDIsIDI0MCwgMjMxLCA0MiwgMjM1LCAyNTUsIAorICAgIDQyLCAyMzQsIDQ3LCA0MiwgMjM0LCAzNSwgMjUwLCAyNTAsIDQyLCAyMzMsIDIxOSwgNDIsIDIzMiwgMTU5LCA0MiwgMjMyLCAKKyAgICAxNTgsIDQyLCAyMzIsIDE0NywgNDIsIDIzMiwgNjMsIDQyLCAyMzEsIDEzMCwgMjE5LCA3OSwgNDIsIDIzMCwgMTk2LCA0MiwgCisgICAgMjMwLCAxNTIsIDQyLCAyMjUsIDE0OCwgNDIsIDIyNSwgMTksIDQyLCAyMjQsIDIxOSwgNDIsIDIyNCwgMjE3LCA0MiwgMjE4LCAKKyAgICAyMjcsIDQyLCAyMTgsIDIsIDQyLCAyMTIsIDI0LCA0MiwgMjE0LCAxMDYsIDExNywgMTkzLCA0MiwgMTE1LCAxMTcsIDE5MywgCisgICAgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDExMCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDEwNSwgCisgICAgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDE1OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDE2MSwgCisgICAgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDE4OSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDE5NCwgCisgICAgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDE5OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDE5NSwgCisgICAgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIwMCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNiwgCisgICAgMjQ3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjQ1LCAxNjcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgCisgICAgMTQ2LCAyMTUsIDc2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE2LCAxNjQsIDEwOSwgMjE3LCAzLCAxNiwgCisgICAgMzEsIDI0OCwgMTQ2LCAyNDQsIDUsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyNDQsIDExOCwgMTA5LCAyMTcsIAorICAgIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxOSwgMTE5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjIwLCAxMTksIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyNDUsIDE5MCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIAorICAgIDIyOCwgMTk3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA3MywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgCisgICAgMjQ4LCAxNDYsIDIxNSwgNjcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDYzLCAxMDksIDIxNywgMywgCisgICAgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2NCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNjksIDEwOSwgCisgICAgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDcwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCAKKyAgICA2NSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNjYsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgCisgICAgMTQ2LCAyMTUsIDcyLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2OCwgMTA5LCAyMTcsIDMsIDE2LCAKKyAgICAzMSwgMjQ4LCAxNDYsIDIxNiwgMTYyLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE2LCAxNjEsIDQyLCAyNDMsIAorICAgIDExOCwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjQ5LCAxNDAsIDI0MSwgMjIzLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAKKyAgICAyMjMsIDEyMiwgMjQ1LCAyMjMsIDI0MSwgMTkyLCAzMSwgMjQ3LCAyMzEsIDI1MywgMjA3LCAyMTYsIDE5NiwgMjUyLCA1NiwgCisgICAgMjQxLCAxOTIsIDMxLCAyMTAsIDIyMywgMjQ0LCAzOCwgMjQxLCAxOTIsIDMxLCAyMTIsIDU5LCAyNDEsIDE5MiwgMzEsIAorICAgIDI0OSwgMjAzLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNTQsIDMsIDI0MSwgMTkyLCAzMSwgMjQxLCA2MCwgMjE2LCAzOCwgCisgICAgMjQxLCAxOTIsIDMxLCA0LCAyMTcsIDYxLCAyNDEsIDE5MiwgMzEsIDIxNSwgMjM3LCAyNDEsIDE5MiwgMzEsIDIyNSwgMjE5LCAKKyAgICAyNDEsIDE5MiwgMzEsIDIxOCwgMTU4LCAyNDEsIDE5MiwgMzEsIDI0NCwgMTM5LCAyNDEsIDE5MiwgMzEsIDI0MiwgMTMyLCAKKyAgICAyMjQsIDI0MCwgMjQxLCAxOTIsIDMxLCAyMzAsIDE1NSwgMjQxLCAxOTIsIDMxLCAyNDUsIDEyNiwgMjQxLCAxOTIsIDMxLCAKKyAgICAyNDQsIDM5LCAyNDEsIDE5MiwgMzEsIDIxMSwgMjA3LCAyMjYsIDE5NywgMjE2LCAxOTYsIDI0OCwgODYsIDI0MSwgMTkyLCAKKyAgICAzMSwgMjU0LCA1MSwgMjQxLCAxOTIsIDMxLCAyNDksIDE4NSwgMjQxLCAxOTIsIDMxLCAyNTEsIDIyNywgMjE2LCAxMzgsIAorICAgIDI0MSwgMTkyLCAzMSwgMjQyLCAxNDksIDI0MSwgMTkyLCAzMSwgMjE4LCAyNDUsIDI1NCwgNzAsIDI0MSwgMTkyLCAzMSwgCisgICAgMjIzLCA1MywgMjQxLCAxOTIsIDMxLCAyMzUsIDIyMCwgMjQxLCAxOTIsIDMxLCAyNDIsIDEzMiwgMjE3LCA2MSwgMjQxLCAKKyAgICAxOTIsIDMxLCAyMzAsIDExMSwgMjQ5LCAxNTksIDI0MSwgMTkyLCAzMSwgMjQyLCAxMzIsIDIyNCwgMTk3LCAyNDEsIDE5MiwgCisgICAgMzEsIDIxNiwgMTk2LCAyNTUsIDE4LCAyMTIsIDQwLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNTAsIDgsIDI0NCwgOTYsIAorICAgIDI0MSwgMTkyLCAzMSwgMjM1LCAyMzMsIDI0MSwgMTkyLCAzMSwgMjQ2LCA1NywgMjQxLCAxOTIsIDMxLCAyMjMsIDU2LCAKKyAgICAyNDEsIDE5MiwgMzEsIDI0MiwgMTMyLCAyMjQsIDIyNCwgMjQxLCAxOTIsIDMxLCAyMjQsIDE3NywgMjQxLCAxOTIsIDMxLCAKKyAgICAyNDgsIDE2MSwgNjQsIDIxNiwgMTk2LCAyMzIsIDIzMCwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjQ0LCAxNzQsIDI0MSwgCisgICAgMTkyLCAzMSwgMjI2LCAxNjMsIDI0MSwgMTkyLCAzMSwgMjI2LCAyNDQsIDI0MSwgMTkyLCAzMSwgMjQ4LCA1OSwgMjQxLCAKKyAgICAxOTIsIDMxLCAyNDgsIDc5LCAyNDEsIDE5MiwgMzEsIDIzNSwgMjQ3LCAyNDEsIDE5MiwgMzEsIDI1MSwgMTQ5LCAyNDEsIAorICAgIDE5MiwgMzEsIDI0OSwgMjIxLCAyMTYsIDQyLCAyMzEsIDc2LCAyNDEsIDE5MiwgMzEsIDI0MywgODcsIDIxNiwgMzgsIDI0MSwgCisgICAgMTkyLCAzMSwgMjI0LCAxMjUsIDIxNCwgMTU0LCAyNDEsIDE5MiwgMzEsIDIyNiwgMTYyLCAyNDEsIDE5MiwgMzEsIDIxNiwgCisgICAgMTk2LCAyMTIsIDEzLCAyNDEsIDE5MiwgMzEsIDIyMywgNDUsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1MCwgMjIwLCAKKyAgICAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNTMsIDI1NSwgMjE2LCAxMzMsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDIzNCwgCisgICAgMTc5LCAyMTgsIDEzNCwgMjMwLCAxMTUsIDI0MSwgMTkyLCAzMSwgMjQ4LCAzMiwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgCisgICAgMjMxLCAxNTIsIDIzMSwgMjAyLCAyNDEsIDE5MiwgMzEsIDI1NSwgMTksIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDIxMiwgCisgICAgNTQsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI0MywgNDcsIDIxMSwgMjM5LCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAKKyAgICAyMzUsIDUyLCAyMzMsIDEwNywgMjQxLCAxOTIsIDMxLCAyNDcsIDE4NCwgMjQxLCAxOTIsIDMxLCAyMzIsIDIyMCwgMjQxLCAKKyAgICAxOTIsIDMxLCAyMzUsIDIyMywgMjE1LCAxODcsIDI0MSwgMTkyLCAzMSwgNCwgMjI0LCAxOTcsIDI0MSwgMTkyLCAzMSwgCisgICAgMjU0LCAyMTcsIDI0OSwgMjEyLCAyNDEsIDE5MiwgMzEsIDI1MiwgNTksIDI0OSwgMjEyLCA4LCAzLCAyMzUsIDE2MCwgOCwgCisgICAgMywgMjM1LCAxNTMsIDgsIDMsIDczLCA4LCAzLCAyMzUsIDE4MiwgOCwgMywgMjM2LCA1OCwgOCwgMywgMjM2LCA0MSwgOCwgCisgICAgMywgMjM2LCA2MCwgOCwgMywgMjM2LCA1OSwgOCwgMywgMjUzLCAyMDYsIDgsIDMsIDI1MywgMTY5LCA4LCAzLCA2MSwgOCwgCisgICAgMywgMjU0LCA3MiwgOCwgMywgMjE0LCAxNjQsIDgsIDMsIDIxNCwgMTY3LCA4LCAzLCAyMTQsIDE2NSwgOCwgMywgMjI2LCAKKyAgICAxNDAsIDgsIDMsIDIyNiwgMTE0LCA4LCAzLCA3NiwgOCwgMywgMjI2LCAxNzUsIDgsIDMsIDI0NSwgMzUsIDgsIDMsIDc1LCAKKyAgICA4LCAzLCAyMTEsIDE5NSwgOCwgMywgMjUxLCAyMjgsIDgsIDMsIDI1MSwgMjI1LCA4LCAzLCAyNTIsIDYsIDgsIDMsIDI1MSwgCisgICAgMjM4LCA4LCAzLCAyNTEsIDI1MSwgOCwgMywgMjUxLCAyNTAsIDgsIDMsIDI1MSwgMjUzLCA4LCAzLCAyNTEsIDI1MiwgOCwgCisgICAgMywgMjUyLCAxMjEsIDgsIDMsIDI1MiwgMTEzLCA4LCAzLCAyNTIsIDE5MSwgOCwgMywgMjUyLCAxNDIsIDgsIDMsIDI1MSwgCisgICAgMTAxLCA4LCAzLCAyNTEsIDEwNSwgOCwgMywgMjUxLCAxMDIsIDgsIDMsIDI1MSwgMTc5LCA4LCAzLCAyNTEsIDE2MywgOCwgCisgICAgMywgMjUxLCAyMDUsIDgsIDMsIDI1MSwgMTg1LCA4LCAzLCAyNTIsIDIxLCA4LCAzLCAyNTIsIDc1LCA4LCAzLCAyNTIsIDMzLCAKKyAgICA4LCAzLCAyNTEsIDg3LCA4LCAzLCAyNTEsIDg0LCA4LCAzLCAyNTEsIDEyNSwgOCwgMywgMjUxLCAxMDAsIDgsIDMsIDI1MSwgCisgICAgOTQsIDgsIDMsIDI1MSwgOTgsIDgsIDMsIDI1MSwgNzIsIDgsIDMsIDI1MSwgNzAsIDgsIDMsIDI1MSwgNzcsIDgsIDMsIAorICAgIDI1MSwgNzUsIDgsIDMsIDI1MSwgNzMsIDgsIDMsIDI1MSwgNzQsIDgsIDMsIDIyNSwgNDksIDgsIDMsIDIyNSwgNDUsIDgsIAorICAgIDMsIDIyNSwgMTA4LCA4LCAzLCAyMjUsIDU5LCA4LCAzLCAyMjUsIDc1LCA4LCAzLCAyMjUsIDEwMiwgOCwgMywgMjI1LCA5OCwgCisgICAgOCwgMywgMjI1LCAyNDAsIDgsIDMsIDIyNSwgMjMwLCA4LCAzLCAxOTAsIDgsIDMsIDIyNiwgMjEsIDgsIDMsIDIyNCwgMTM1LCAKKyAgICA4LCAzLCAyMjQsIDEzNywgOCwgMywgMjI0LCAxMzYsIDgsIDMsIDIyNCwgMjMzLCA4LCAzLCAyMjQsIDIyMiwgOCwgMywgCisgICAgMjI1LCAxNiwgOCwgMywgMjI0LCAyNDUsIDgsIDMsIDIyNCwgMTIxLCA4LCAzLCAyMjQsIDExNywgOCwgMywgMjI0LCAxNTAsIAorICAgIDgsIDMsIDIyNCwgMTM0LCA4LCAzLCAyMjQsIDEyNiwgOCwgMywgMjI0LCAxMzIsIDgsIDMsIDIyNCwgMTAwLCA4LCAzLCAKKyAgICAyMjQsIDk5LCA4LCAzLCAyMjQsIDEwNCwgOCwgMywgMjI0LCAxMDMsIDgsIDMsIDIyNCwgMTAxLCA4LCAzLCAyMjQsIDEwMiwgCisgICAgOCwgMywgMjUyLCA5NiwgOCwgMywgMjUyLCA5NSwgOCwgMywgMjUyLCAxMDIsIDgsIDMsIDI1MiwgOTcsIDgsIDMsIDI1MiwgCisgICAgOTksIDgsIDMsIDI1MiwgOTgsIDgsIDMsIDI1MiwgMTAxLCA4LCAzLCAyNTIsIDEwMCwgOCwgMywgMjUyLCAxMDgsIDgsIDMsIAorICAgIDI1MiwgMTA3LCA4LCAzLCAyNTIsIDExMSwgOCwgMywgMjUyLCAxMDksIDgsIDMsIDI1MiwgODcsIDgsIDMsIDI1MiwgODksIAorICAgIDgsIDMsIDI1MiwgODgsIDgsIDMsIDI1MiwgOTIsIDgsIDMsIDI1MiwgOTEsIDgsIDMsIDI1MiwgOTQsIDgsIDMsIDI1MiwgCisgICAgOTMsIDgsIDMsIDI1MiwgMTAzLCA4LCAzLCAyNTIsIDEwNiwgOCwgMywgMjUyLCAxMDQsIDgsIDMsIDI1MiwgODMsIDgsIDMsIAorICAgIDI1MiwgODIsIDgsIDMsIDI1MiwgOTAsIDgsIDMsIDI1MiwgODYsIDgsIDMsIDI1MiwgODQsIDgsIDMsIDI1MiwgODUsIDgsIAorICAgIDMsIDI1MiwgNzksIDgsIDMsIDI1MiwgNzgsIDgsIDMsIDI1MiwgODEsIDgsIDMsIDI1MiwgODAsIDgsIDMsIDIyOSwgMTY5LCAKKyAgICA4LCAzLCAyMjksIDE2OCwgOCwgMywgMjI5LCAxNzQsIDgsIDMsIDIyOSwgMTcwLCA4LCAzLCAyMjksIDE3MSwgOCwgMywgCisgICAgMjI5LCAxNzMsIDgsIDMsIDIyOSwgMTcyLCA4LCAzLCAyMjksIDE3NywgOCwgMywgMjI5LCAxNzYsIDgsIDMsIDIyOSwgMTc5LCAKKyAgICA4LCAzLCAyMjksIDE3OCwgOCwgMywgMjI5LCAxNjUsIDgsIDMsIDIyOSwgMTY0LCA4LCAzLCAyMjksIDE2NywgOCwgMywgCisgICAgMjI5LCAxNjYsIDgsIDMsIDIyOSwgMTU4LCA4LCAzLCAyMjksIDE1NywgOCwgMywgMjI5LCAxNjIsIDgsIDMsIDIyOSwgMTYxLCAKKyAgICA4LCAzLCAyMjksIDE1OSwgOCwgMywgMjI5LCAxNjAsIDgsIDMsIDIyOSwgMTUyLCA4LCAzLCAyMjksIDE1MSwgOCwgMywgCisgICAgMjI5LCAxNTYsIDgsIDMsIDIyOSwgMTU1LCA4LCAzLCAyMjksIDE1MywgOCwgMywgMjI5LCAxNTQsIDgsIDMsIDI0MSwgMTEwLCAKKyAgICA4LCAzLCAyNDEsIDEwOSwgOCwgMywgMjQxLCAxMTUsIDgsIDMsIDI0MSwgMTExLCA4LCAzLCAyNDEsIDExMiwgOCwgMywgCisgICAgMjQxLCAxMTQsIDgsIDMsIDI0MSwgMTEzLCA4LCAzLCAyNDEsIDExOCwgOCwgMywgMjQxLCAxMTcsIDgsIDMsIDI0MSwgMTIwLCAKKyAgICA4LCAzLCAyNDEsIDExOSwgOCwgMywgMjQxLCAxMDEsIDgsIDMsIDI0MSwgMTAzLCA4LCAzLCAyNDEsIDEwMiwgOCwgMywgCisgICAgMjQxLCAxMDYsIDgsIDMsIDI0MSwgMTA1LCA4LCAzLCAyNDEsIDEwOCwgOCwgMywgMjQxLCAxMDcsIDgsIDMsIDI0MSwgOTcsIAorICAgIDgsIDMsIDI0MSwgOTYsIDgsIDMsIDI0MSwgMTA0LCA4LCAzLCAyNDEsIDEwMCwgOCwgMywgMjQxLCA5OCwgOCwgMywgMjQxLCAKKyAgICA5OSwgOCwgMywgMjQxLCA5MSwgOCwgMywgMjQxLCA5NSwgOCwgMywgMjQxLCA5NCwgOCwgMywgMjQxLCA5MiwgOCwgMywgCisgICAgMjQxLCA5MywgOCwgMywgMjMwLCAxNzIsIDgsIDMsIDIzMCwgMTcxLCA4LCAzLCAyMzAsIDIzMCwgOCwgMywgMjMwLCAxNzgsIAorICAgIDgsIDMsIDIzMCwgMjAzLCA4LCAzLCAyMzAsIDIyMSwgOCwgMywgMjMwLCAyMTksIDgsIDMsIDIzMSwgMTM5LCA4LCAzLCAKKyAgICAyMzEsIDEzNCwgOCwgMywgMTg0LCA4LCAzLCAyMzEsIDE3MiwgOCwgMywgMjMwLCA3NCwgOCwgMywgMjMwLCA3MywgOCwgMywgCisgICAgMjMwLCA3NywgOCwgMywgMjMwLCA3NSwgOCwgMywgMjMwLCAxMjEsIDgsIDMsIDIzMCwgMTA3LCA4LCAzLCAyMzAsIDE2MSwgCisgICAgOCwgMywgMjMwLCAxMjYsIDgsIDMsIDIzMSwgMjYsIDgsIDMsIDIzMSwgOTEsIDgsIDMsIDIzMCwgNTUsIDgsIDMsIDIzMCwgCisgICAgNTEsIDgsIDMsIDIzMCwgMTAyLCA4LCAzLCAyMzAsIDcwLCA4LCAzLCAyMzAsIDYzLCA4LCAzLCAyMzAsIDY4LCA4LCAzLCAKKyAgICAyMzAsIDI4LCA4LCAzLCAyMzAsIDI3LCA4LCAzLCAyMzAsIDMzLCA4LCAzLCAyMzAsIDMwLCA4LCAzLCAyNDQsIDgzLCA4LCAKKyAgICAzLCAyNDQsIDc4LCA4LCAzLCAyNDQsIDEyMSwgOCwgMywgMjQ0LCA5OCwgOCwgMywgMjQ0LCAxNjcsIDgsIDMsIDI0NCwgCisgICAgMTU4LCA4LCAzLCAyNDQsIDE5NiwgOCwgMywgMjQ0LCAxNzAsIDgsIDMsIDI0NCwgMywgOCwgMywgMjQ0LCA0MywgOCwgMywgCisgICAgMjQ0LCAyNywgOCwgMywgMjQzLCAyMTgsIDgsIDMsIDI0MywgMjE3LCA4LCAzLCAyNDMsIDIzNCwgOCwgMywgMjQzLCAyMjMsIAorICAgIDgsIDMsIDI0MywgMjIxLCA4LCAzLCAyNDMsIDIyMiwgOCwgMywgMjQzLCAyMDUsIDgsIDMsIDI0MywgMjA0LCA4LCAzLCAKKyAgICAyNDMsIDIwOCwgOCwgMywgMjQzLCAyMDYsIDgsIDMsIDIxMywgMTQ0LCA4LCAzLCAyMTMsIDEzOSwgOCwgMywgMjEzLCAxNzYsIAorICAgIDgsIDMsIDIxMywgMTUzLCA4LCAzLCAyMTMsIDE2NiwgOCwgMywgMjEzLCAxNjMsIDgsIDMsIDIxMywgMTY4LCA4LCAzLCAKKyAgICAyMTMsIDE2NywgOCwgMywgMjE0LCA3LCA4LCAzLCAyMTQsIDIsIDgsIDMsIDIxNCwgMjcsIDgsIDMsIDIxNCwgMTgsIDgsIDMsIAorICAgIDIxMywgMTI1LCA4LCAzLCAyMTMsIDEyMSwgOCwgMywgMjEzLCAxMzgsIDgsIDMsIDIxMywgMTI2LCA4LCAzLCAyMTMsIDE3OCwgCisgICAgOCwgMywgMjEzLCAyNDQsIDgsIDMsIDIxMiwgMTEwLCA4LCAzLCAyMTIsIDEwOCwgOCwgMywgMjEyLCAxMTYsIDgsIDMsIAorICAgIDIxMiwgMTEzLCA4LCAzLCAyMTIsIDExMSwgOCwgMywgMjEyLCAxMTIsIDgsIDMsIDIxMiwgMTAyLCA4LCAzLCAyMTIsIDEwMSwgCisgICAgOCwgMywgMjEyLCAxMDYsIDgsIDMsIDIxMiwgMTA1LCA4LCAzLCAyMTIsIDEwMywgOCwgMywgMjEyLCAxMDQsIDgsIDMsIAorICAgIDI0NywgMTc4LCA4LCAzLCAyNDcsIDE2NiwgOCwgMywgMjQ4LCAzLCA4LCAzLCAyNDcsIDIwMywgOCwgMywgMjQ3LCAyMzYsIAorICAgIDgsIDMsIDI0NywgMjQwLCA4LCAzLCAyNDcsIDIzOSwgOCwgMywgMjQ4LCAxNTIsIDgsIDMsIDI0OCwgMTQ3LCA4LCAzLCAKKyAgICAyNDgsIDIyMSwgOCwgMywgMjQ4LCAxNzIsIDgsIDMsIDI0NiwgNjIsIDgsIDMsIDI0NiwgNjMsIDgsIDMsIDI0NywgMTIwLCAKKyAgICA4LCAzLCAyNDYsIDEwMiwgOCwgMywgMjQ3LCAxNDUsIDgsIDMsIDI0NywgMTIyLCA4LCAzLCAyNDgsIDMwLCA4LCAzLCAyNDgsIAorICAgIDkwLCA4LCAzLCAyNDgsIDQ1LCA4LCAzLCAyNDYsIDUzLCA4LCAzLCAyNDYsIDUxLCA4LCAzLCAyNDYsIDc4LCA4LCAzLCAKKyAgICAyNDYsIDYxLCA4LCAzLCAyNDYsIDU2LCA4LCAzLCAyNDYsIDU5LCA4LCAzLCAyMTYsIDY3LCA4LCAzLCAyMTYsIDYxLCA4LCAKKyAgICAzLCAyMTYsIDExNywgOCwgMywgMjE2LCA3NiwgOCwgMywgMjE2LCAxMDksIDgsIDMsIDIxNiwgMTExLCA4LCAzLCAyMTYsIAorICAgIDExMCwgOCwgMywgMjE3LCA0NiwgOCwgMywgMjE3LCAzMywgOCwgMywgMjE3LCAxMDUsIDgsIDMsIDIxNywgNTQsIDgsIDMsIAorICAgIDIxNSwgMTAyLCA4LCAzLCAyMTUsIDEwMSwgOCwgMywgMjE1LCAxMDQsIDgsIDMsIDIxNSwgMTAzLCA4LCAzLCAyMTYsIDUsIAorICAgIDgsIDMsIDIxNiwgMSwgOCwgMywgMTExLCA4LCAzLCAyMTYsIDEzLCA4LCAzLCAyMTYsIDIxMywgOCwgMywgMjE3LCAyMiwgOCwgCisgICAgMywgMjE2LCAyMzcsIDgsIDMsIDIxNSwgODgsIDgsIDMsIDIxNSwgODMsIDgsIDMsIDIxNSwgMTE4LCA4LCAzLCAyMTUsIAorICAgIDEwMCwgOCwgMywgMjE1LCA4OSwgOCwgMywgMjE1LCA5OCwgOCwgMywgMjQ4LCAxMDcsIDgsIDMsIDI0OCwgMTA2LCA4LCAzLCAKKyAgICAyNDgsIDExMiwgOCwgMywgMjQ4LCAxMDgsIDgsIDMsIDI0OCwgMTA5LCA4LCAzLCAyNDgsIDExMSwgOCwgMywgMjQ4LCAxMTAsIAorICAgIDgsIDMsIDI0OCwgMTI4LCA4LCAzLCAyNDgsIDEyNywgOCwgMywgMjQ4LCAxMzUsIDgsIDMsIDI0OCwgMTI5LCA4LCAzLCAKKyAgICAyNDgsIDk3LCA4LCAzLCAyNDgsIDk5LCA4LCAzLCAyNDgsIDk4LCA4LCAzLCAyNDgsIDEwMiwgOCwgMywgMjQ4LCAxMDEsIDgsIAorICAgIDMsIDI0OCwgMTA1LCA4LCAzLCAyNDgsIDEwMywgOCwgMywgMjQ4LCAxMjAsIDgsIDMsIDI0OCwgMTIzLCA4LCAzLCAyNDgsIAorICAgIDEyMSwgOCwgMywgMjQ4LCA5MywgOCwgMywgMjQ4LCA5MiwgOCwgMywgMjQ4LCAxMDAsIDgsIDMsIDI0OCwgOTYsIDgsIDMsIAorICAgIDI0OCwgOTQsIDgsIDMsIDI0OCwgOTUsIDgsIDMsIDIyOSwgMTI2LCA4LCAzLCAyMjksIDEyNSwgOCwgMywgMjI5LCAxMzMsIAorICAgIDgsIDMsIDIyOSwgMTI4LCA4LCAzLCAyMjksIDEyOSwgOCwgMywgMjI5LCAxMzAsIDgsIDMsIDIyOSwgMTQyLCA4LCAzLCAKKyAgICAyMjksIDE0MSwgOCwgMywgMjI5LCAxNDgsIDgsIDMsIDIyOSwgMTQzLCA4LCAzLCAyMjksIDExOCwgOCwgMywgMjI5LCAxMTcsIAorICAgIDgsIDMsIDIyOSwgMTI0LCA4LCAzLCAyMjksIDExOSwgOCwgMywgMjI5LCAxMzQsIDgsIDMsIDIyOSwgMTQwLCA4LCAzLCAKKyAgICAyMjksIDEzOCwgOCwgMywgMjI5LCAxMTAsIDgsIDMsIDIyOSwgMTA5LCA4LCAzLCAyMjksIDExNSwgOCwgMywgMjI5LCAxMTMsIAorICAgIDgsIDMsIDIyOSwgMTExLCA4LCAzLCAyMjksIDExMiwgOCwgMywgMjQxLCA3NywgOCwgMywgMjQxLCA3NiwgOCwgMywgMjQxLCAKKyAgICA4MywgOCwgMywgMjQxLCA3OCwgOCwgMywgMjQxLCA4MCwgOCwgMywgMjQxLCA3OSwgOCwgMywgMjQxLCA4MiwgOCwgMywgCisgICAgMjQxLCA4MSwgOCwgMywgMjQxLCA4OCwgOCwgMywgMjQxLCA4NywgOCwgMywgMjQxLCA5MCwgOCwgMywgMjQxLCA4OSwgOCwgCisgICAgMywgMjQxLCA3MSwgOCwgMywgMjQxLCA3MiwgOCwgMywgMjQxLCA3NCwgOCwgMywgMjQxLCA3MywgOCwgMywgMjQxLCA3NSwgCisgICAgOCwgMywgMjQxLCA4NCwgOCwgMywgMjQxLCA4NiwgOCwgMywgMjQxLCA4NSwgOCwgMywgMjQxLCA3MCwgOCwgMywgMjI4LCAKKyAgICAxODksIDgsIDMsIDIyOCwgMTg3LCA4LCAzLCAyMjgsIDIzMywgOCwgMywgMjI4LCAxOTIsIDgsIDMsIDIyOCwgMjE1LCA4LCAKKyAgICAzLCAyMjgsIDIyOSwgOCwgMywgMjI4LCAyMjgsIDgsIDMsIDIyOSwgMTgzLCA4LCAzLCAxOTcsIDgsIDMsIDIyOSwgMTk3LCAKKyAgICA4LCAzLCAyMjcsIDE4NiwgOCwgMywgMjI3LCAxODgsIDgsIDMsIDIyNywgMTg3LCA4LCAzLCAyMjgsIDUxLCA4LCAzLCAyMjgsIAorICAgIDM4LCA4LCAzLCAyMjgsIDc0LCA4LCAzLCAyMjgsIDYwLCA4LCAzLCAyMjksIDgzLCA4LCAzLCAyMjksIDEwNywgOCwgMywgCisgICAgMjI5LCA5NCwgOCwgMywgMjI3LCAxODEsIDgsIDMsIDIyNywgMTc3LCA4LCAzLCAyMjcsIDIzNywgOCwgMywgMjI3LCAxODUsIAorICAgIDgsIDMsIDIyNywgMTgzLCA4LCAzLCAyMjcsIDE4NCwgOCwgMywgMjQxLCAxNDEsIDgsIDMsIDI0MSwgMTQwLCA4LCAzLCAKKyAgICAyNDEsIDE0NiwgOCwgMywgMjQxLCAxNDIsIDgsIDMsIDI0MSwgMTQzLCA4LCAzLCAyNDEsIDE0NSwgOCwgMywgMjQxLCAxNDQsIAorICAgIDgsIDMsIDI0MSwgMTUxLCA4LCAzLCAyNDEsIDE1MCwgOCwgMywgMjQxLCAxNTMsIDgsIDMsIDI0MSwgMTUyLCA4LCAzLCAKKyAgICAyNDEsIDEzMywgOCwgMywgMjQxLCAxMzUsIDgsIDMsIDI0MSwgMTM0LCA4LCAzLCAyNDEsIDEzNywgOCwgMywgMjQxLCAxMzksIAorICAgIDgsIDMsIDI0MSwgMTM4LCA4LCAzLCAyNDEsIDE0NywgOCwgMywgMjQxLCAxNDksIDgsIDMsIDI0MSwgMTQ4LCA4LCAzLCAKKyAgICAyNDEsIDEyOSwgOCwgMywgMjQxLCAxMjgsIDgsIDMsIDI0MSwgMTM2LCA4LCAzLCAyNDEsIDEzMiwgOCwgMywgMjQxLCAxMzAsIAorICAgIDgsIDMsIDI0MSwgMTMxLCA4LCAzLCAyNDEsIDEyMywgOCwgMywgMjQxLCAxMjIsIDgsIDMsIDI0MSwgMTI3LCA4LCAzLCAKKyAgICAyNDEsIDEyNiwgOCwgMywgMjQxLCAxMjQsIDgsIDMsIDI0MSwgMTI1LCA4LCAzLCAyMzIsIDE5NSwgOCwgMywgMjMyLCAxODksIAorICAgIDgsIDMsIDIzMiwgMjQxLCA4LCAzLCAyMzIsIDIwMiwgOCwgMywgMjMyLCAyMzMsIDgsIDMsIDIzMiwgMjMyLCA4LCAzLCAKKyAgICAyMzIsIDIzNiwgOCwgMywgMjMyLCAyMzQsIDgsIDMsIDIzMywgNzksIDgsIDMsIDIzMywgNjksIDgsIDMsIDIzMywgMTM1LCAKKyAgICA4LCAzLCAyMzMsIDg4LCA4LCAzLCAyMzIsIDc5LCA4LCAzLCAyMzIsIDc4LCA4LCAzLCAyMzIsIDgxLCA4LCAzLCAyMzIsIAorICAgIDgwLCA4LCAzLCAyMzIsIDExNiwgOCwgMywgMjMyLCAxMDYsIDgsIDMsIDIzMiwgMTU2LCA4LCAzLCAyMzIsIDEyMCwgOCwgMywgCisgICAgMjMzLCAyLCA4LCAzLCAyMzMsIDU4LCA4LCAzLCAyMzMsIDE3LCA4LCAzLCAyMzIsIDc0LCA4LCAzLCAyMzIsIDcyLCA4LCAzLCAKKyAgICAyMzIsIDk4LCA4LCAzLCAyMzIsIDc3LCA4LCAzLCAyMzIsIDc1LCA4LCAzLCAyMzIsIDc2LCA4LCAzLCAyMzIsIDU0LCA4LCAKKyAgICAzLCAyMzIsIDUzLCA4LCAzLCAyMzIsIDYyLCA4LCAzLCAyMzIsIDU3LCA4LCAzLCAyMzIsIDU1LCA4LCAzLCAyMzIsIDU2LCAKKyAgICA4LCAzLCAyNDIsIDE4OSwgOCwgMywgMjQyLCAxODgsIDgsIDMsIDI0MiwgMjE0LCA4LCAzLCAyNDIsIDE5OSwgOCwgMywgCisgICAgMjQyLCAyMDYsIDgsIDMsIDI0MiwgMjA1LCA4LCAzLCAyNDIsIDIwOCwgOCwgMywgMjQyLCAyMDcsIDgsIDMsIDI0MywgODksIAorICAgIDgsIDMsIDI0MywgODQsIDgsIDMsIDI0MywgMTM1LCA4LCAzLCAyNDMsIDk5LCA4LCAzLCAyNDIsIDkxLCA4LCAzLCAyNDIsIAorICAgIDkwLCA4LCAzLCAyNDIsIDkzLCA4LCAzLCAyNDIsIDkyLCA4LCAzLCAyNDIsIDE1NCwgOCwgMywgMjQyLCAxNTIsIDgsIDMsIAorICAgIDI0MiwgMTc0LCA4LCAzLCAyNDIsIDE2MiwgOCwgMywgMjQzLCAzMywgOCwgMywgMjQzLCAzMSwgOCwgMywgMjQzLCA2MiwgOCwgCisgICAgMywgMjQzLCA0NCwgOCwgMywgMjQyLCA4MSwgOCwgMywgMjQyLCA4MCwgOCwgMywgMjQyLCAxMTMsIDgsIDMsIDI0MiwgODksIAorICAgIDgsIDMsIDI0MiwgODIsIDgsIDMsIDI0MiwgODgsIDgsIDMsIDIzNCwgNjEsIDgsIDMsIDIzNCwgNjAsIDgsIDMsIDIzNCwgCisgICAgOTIsIDgsIDMsIDIzNCwgNzUsIDgsIDMsIDIzNCwgODUsIDgsIDMsIDIzNCwgODgsIDgsIDMsIDIzNCwgODYsIDgsIDMsIAorICAgIDIzNCwgMjAyLCA4LCAzLCAyMzQsIDE5MCwgOCwgMywgMTc2LCA4LCAzLCAyMzQsIDIyOCwgOCwgMywgMjMzLCAyMDAsIDgsIAorICAgIDMsIDIzMywgMjA1LCA4LCAzLCAyMzMsIDIwMiwgOCwgMywgMjM0LCAwLCA4LCAzLCAyMzMsIDI1MiwgOCwgMywgMjM0LCAyOCwgCisgICAgOCwgMywgMjM0LCA3LCA4LCAzLCAyMzQsIDE1NiwgOCwgMywgMjM0LCAxNDAsIDgsIDMsIDIzNCwgMTgyLCA4LCAzLCAyMzQsIAorICAgIDE1OSwgOCwgMywgMjMzLCAxODksIDgsIDMsIDIzMywgMTg2LCA4LCAzLCAyMzMsIDIxNywgOCwgMywgMjMzLCAxOTksIDgsIAorICAgIDMsIDIzMywgMTkyLCA4LCAzLCAyMzMsIDE5NiwgOCwgMywgMjQzLCAxNSwgOCwgMywgMjQzLCAxNCwgOCwgMywgMjQzLCAxOSwgCisgICAgOCwgMywgMjQzLCAxNiwgOCwgMywgMjQzLCAxOCwgOCwgMywgMjQzLCAxNywgOCwgMywgMjQzLCAyNiwgOCwgMywgMjQzLCAKKyAgICAyNSwgOCwgMywgMjQzLCAyOSwgOCwgMywgMjQzLCAyNywgOCwgMywgMjQzLCA2LCA4LCAzLCAyNDMsIDUsIDgsIDMsIDI0MywgCisgICAgOCwgOCwgMywgMjQzLCA3LCA4LCAzLCAyNDMsIDExLCA4LCAzLCAyNDMsIDEwLCA4LCAzLCAyNDMsIDEzLCA4LCAzLCAyNDMsIAorICAgIDEyLCA4LCAzLCAyNDMsIDIxLCA4LCAzLCAyNDMsIDIwLCA4LCAzLCAyNDMsIDI0LCA4LCAzLCAyNDMsIDIyLCA4LCAzLCAKKyAgICAyNDMsIDEsIDgsIDMsIDI0MywgMCwgOCwgMywgMjQzLCA5LCA4LCAzLCAyNDMsIDQsIDgsIDMsIDI0MywgMiwgOCwgMywgCisgICAgMjQzLCAzLCA4LCAzLCAyMzAsIDI0OSwgOCwgMywgMjMwLCAyNTAsIDgsIDMsIDIzMSwgMTIsIDgsIDMsIDIzMSwgMTEsIDgsIAorICAgIDMsIDIzMSwgMTQsIDgsIDMsIDIzMSwgMTMsIDgsIDMsIDIzMCwgMjQwLCA4LCAzLCAyMzAsIDI0MiwgOCwgMywgMjMwLCAKKyAgICAyNDEsIDgsIDMsIDIzMCwgMjQ1LCA4LCAzLCAyMzAsIDI0NCwgOCwgMywgMjMwLCAyNDcsIDgsIDMsIDIzMCwgMjQ2LCA4LCAKKyAgICAzLCAyMzAsIDI1MSwgOCwgMywgMjMwLCAyNTMsIDgsIDMsIDIzMCwgMjUyLCA4LCAzLCAyMzAsIDIzNiwgOCwgMywgMjMwLCAKKyAgICAyMzUsIDgsIDMsIDIzMCwgMjQzLCA4LCAzLCAyMzAsIDIzOSwgOCwgMywgMjMwLCAyMzcsIDgsIDMsIDIzMCwgMjM4LCA4LCAKKyAgICAzLCAyNDAsIDE4MCwgOCwgMywgMjQwLCAxNzksIDgsIDMsIDI0MCwgMTg2LCA4LCAzLCAyNDAsIDE4MSwgOCwgMywgMjQwLCAKKyAgICAxODMsIDgsIDMsIDI0MCwgMTgyLCA4LCAzLCAyNDAsIDE4NSwgOCwgMywgMjQwLCAxODQsIDgsIDMsIDI0MCwgMTkxLCA4LCAKKyAgICAzLCAyNDAsIDE5MCwgOCwgMywgMjQwLCAxOTMsIDgsIDMsIDI0MCwgMTkyLCA4LCAzLCAyNDAsIDE3MiwgOCwgMywgMjQwLCAKKyAgICAxNzEsIDgsIDMsIDI0MCwgMTc0LCA4LCAzLCAyNDAsIDE3MywgOCwgMywgMjQwLCAxNzYsIDgsIDMsIDI0MCwgMTc1LCA4LCAKKyAgICAzLCAyNDAsIDE3OCwgOCwgMywgMjQwLCAxNzcsIDgsIDMsIDI0MCwgMTg3LCA4LCAzLCAyNDAsIDE4OSwgOCwgMywgMjQwLCAKKyAgICAxODgsIDgsIDMsIDIyOSwgMjQsIDgsIDMsIDIyOSwgMjYsIDgsIDMsIDIyOSwgMjUsIDgsIDMsIDIyOSwgNjcsIDgsIDMsIAorICAgIDIyOSwgNjUsIDgsIDMsIDIyOSwgNzcsIDgsIDMsIDIyOSwgNzAsIDgsIDMsIDIyOCwgMjQzLCA4LCAzLCAyMjgsIDI0MiwgOCwgCisgICAgMywgMjI4LCAyNDQsIDgsIDMsIDIyOCwgMjUyLCA4LCAzLCAyMjgsIDI0OSwgOCwgMywgMjI5LCA0LCA4LCAzLCAyMjgsIAorICAgIDI1NCwgOCwgMywgMjI5LCA1OCwgOCwgMywgMjI5LCA2NCwgOCwgMywgMjI5LCA2MCwgOCwgMywgMjQxLCAxNTYsIDgsIDMsIAorICAgIDI0MSwgMTY2LCA4LCAzLCAyNDEsIDE3NSwgOCwgMywgMjQxLCAyNTEsIDgsIDMsIDI0MSwgMjQzLCA4LCAzLCAxNjIsIDgsIAorICAgIDMsIDI0MiwgNiwgOCwgMywgMjQwLCAyMDYsIDgsIDMsIDI0MCwgMjA1LCA4LCAzLCAyNDAsIDIwOCwgOCwgMywgMjQwLCAKKyAgICAyMDcsIDgsIDMsIDI0MCwgMjQyLCA4LCAzLCAyNDAsIDIzMywgOCwgMywgMjQxLCA2OCwgOCwgMywgMjQxLCA0NywgOCwgMywgCisgICAgMjQxLCAxOTQsIDgsIDMsIDI0MSwgMjM4LCA4LCAzLCAyNDEsIDIwNiwgOCwgMywgMjEyLCA0MywgOCwgMywgMjEyLCAyOCwgCisgICAgOCwgMywgMjEyLCA2NSwgOCwgMywgMjEyLCA1MSwgOCwgMywgMjExLCAxODUsIDgsIDMsIDIxMSwgMTg3LCA4LCAzLCAyMTEsIAorICAgIDE4NiwgOCwgMywgMjExLCAyMDMsIDgsIDMsIDIxMSwgMjI3LCA4LCAzLCAyMTEsIDIxMCwgOCwgMywgMjEyLCA1LCA4LCAzLCAKKyAgICAyMTIsIDIyLCA4LCAzLCAyMTIsIDEwLCA4LCAzLCAyMTAsIDMwLCA4LCAzLCAyMTAsIDI5LCA4LCAzLCAyMTAsIDQ0LCA4LCAKKyAgICAzLCAyMTAsIDMyLCA4LCAzLCAyMTAsIDM3LCA4LCAzLCAyMTAsIDM5LCA4LCAzLCAyMTAsIDM4LCA4LCAzLCAyMTAsIDEwMiwgCisgICAgOCwgMywgMjEwLCA5OSwgOCwgMywgMjEwLCAxMTYsIDgsIDMsIDIxMCwgMTA1LCA4LCAzLCAyMTAsIDYsIDgsIDMsIDIxMCwgCisgICAgOCwgOCwgMywgMjEwLCA3LCA4LCAzLCAyMTAsIDE5LCA4LCAzLCAyMTAsIDE4LCA4LCAzLCAyMTAsIDIzLCA4LCAzLCAyMTAsIAorICAgIDIwLCA4LCAzLCAyMTAsIDg0LCA4LCAzLCAyMTAsIDk0LCA4LCAzLCAyMTAsIDg4LCA4LCAzLCAyMTAsIDIsIDgsIDMsIDIxMCwgCisgICAgMSwgOCwgMywgMjEwLCAxMywgOCwgMywgMjEwLCA1LCA4LCAzLCAyMTAsIDMsIDgsIDMsIDIxMCwgNCwgOCwgMywgMjA5LCAKKyAgICAyNDUsIDgsIDMsIDIwOSwgMjQ0LCA4LCAzLCAyMDksIDI1MCwgOCwgMywgMjA5LCAyNDgsIDgsIDMsIDIwOSwgMjQ2LCA4LCAKKyAgICAzLCAyMDksIDI0NywgOCwgMywgMjUwLCAyOCwgOCwgMywgMjUwLCAyNCwgOCwgMywgMjUwLCA1MSwgOCwgMywgMjUwLCAzNywgCisgICAgOCwgMywgMjUwLCA0OCwgOCwgMywgMjUwLCA0MiwgOCwgMywgMjUwLCA1MCwgOCwgMywgMjUwLCA0OSwgOCwgMywgMjUwLCAKKyAgICAyMjQsIDgsIDMsIDI1MCwgMjE3LCA4LCAzLCAyNTEsIDMzLCA4LCAzLCAyNTAsIDI1MSwgOCwgMywgMjQ5LCAxMDQsIDgsIDMsIAorICAgIDI0OSwgMTA2LCA4LCAzLCAyNDksIDEwNSwgOCwgMywgMjQ5LCAxNTMsIDgsIDMsIDI0OSwgMTQ0LCA4LCAzLCAyNDksIDIzOCwgCisgICAgOCwgMywgMjQ5LCAxNjksIDgsIDMsIDI1MCwgMTYwLCA4LCAzLCAyNTAsIDE5MCwgOCwgMywgMjUwLCAxNjUsIDgsIDMsIAorICAgIDI0OSwgODQsIDgsIDMsIDI0OSwgODIsIDgsIDMsIDI0OSwgMTEyLCA4LCAzLCAyNDksIDEwMiwgOCwgMywgMjQ5LCA4OSwgOCwgCisgICAgMywgMjQ5LCAxMDEsIDgsIDMsIDI0OSwgNjMsIDgsIDMsIDI0OSwgNjIsIDgsIDMsIDI0OSwgNzMsIDgsIDMsIDI0OSwgNjksIAorICAgIDgsIDMsIDI0OSwgNjQsIDgsIDMsIDI0OSwgNjYsIDgsIDMsIDIwOSwgMjI4LCA4LCAzLCAyMDksIDIyNywgOCwgMywgMjA5LCAKKyAgICAyMzQsIDgsIDMsIDIwOSwgMjI5LCA4LCAzLCAyMDksIDIzMSwgOCwgMywgMjA5LCAyMzAsIDgsIDMsIDIwOSwgMjMzLCA4LCAKKyAgICAzLCAyMDksIDIzMiwgOCwgMywgMjA5LCAyNDAsIDgsIDMsIDIwOSwgMjM5LCA4LCAzLCAyMDksIDI0MywgOCwgMywgMjA5LCAKKyAgICAyNDEsIDgsIDMsIDIwOSwgMjI0LCA4LCAzLCAyMDksIDIyNiwgOCwgMywgMjA5LCAyMjUsIDgsIDMsIDIwOSwgMjM1LCA4LCAKKyAgICAzLCAyMDksIDIzOCwgOCwgMywgMjA5LCAyMzYsIDgsIDMsIDIwOSwgMjE3LCA4LCAzLCAyMDksIDIyMSwgOCwgMywgMjA5LCAKKyAgICAyMjAsIDgsIDMsIDIwOSwgMjE4LCA4LCAzLCAyMDksIDIxOSwgOCwgMywgMjA5LCAyMTEsIDgsIDMsIDIwOSwgMjEwLCA4LCAKKyAgICAzLCAyMDksIDIxNiwgOCwgMywgMjA5LCAyMTQsIDgsIDMsIDIwOSwgMjEyLCA4LCAzLCAyMDksIDIxMywgOCwgMywgMjI3LCAKKyAgICAxMDQsIDgsIDMsIDIyNywgMTAzLCA4LCAzLCAyMjcsIDEwOSwgOCwgMywgMjI3LCAxMDUsIDgsIDMsIDIyNywgMTA2LCA4LCAKKyAgICAzLCAyMjcsIDEwOCwgOCwgMywgMjI3LCAxMDcsIDgsIDMsIDIyNywgMTE0LCA4LCAzLCAyMjcsIDExMywgOCwgMywgMjI3LCAKKyAgICAxMTcsIDgsIDMsIDIyNywgMTE2LCA4LCAzLCAyMjcsIDk3LCA4LCAzLCAyMjcsIDk4LCA4LCAzLCAyMjcsIDEwMSwgOCwgMywgCisgICAgMjI3LCAxMDIsIDgsIDMsIDIyNywgMTEwLCA4LCAzLCAyMjcsIDExMiwgOCwgMywgMjI3LCA5MiwgOCwgMywgMjI3LCAxMDAsIAorICAgIDgsIDMsIDIyNywgOTYsIDgsIDMsIDIyNywgOTMsIDgsIDMsIDIyNywgOTQsIDgsIDMsIDIyNywgODcsIDgsIDMsIDIyNywgCisgICAgODYsIDgsIDMsIDIyNywgOTEsIDgsIDMsIDIyNywgOTAsIDgsIDMsIDIyNywgODgsIDgsIDMsIDIyNywgODksIDgsIDMsIAorICAgIDIxOSwgMTI3LCA4LCAzLCAxOTQsIDgsIDMsIDIxOSwgMTkxLCA4LCAzLCAyMTksIDEzMCwgOCwgMywgMjE5LCAxODMsIDgsIAorICAgIDMsIDIxOSwgMTg2LCA4LCAzLCAyMTksIDE4NCwgOCwgMywgMjIxLCAyMjYsIDgsIDMsIDIyMSwgMjE0LCA4LCAzLCAyMDYsIAorICAgIDgsIDMsIDIyMSwgMjM0LCA4LCAzLCAyMTgsIDI4LCA4LCAzLCAyMTgsIDMwLCA4LCAzLCAyMTgsIDI5LCA4LCAzLCAyMTksIAorICAgIDM0LCA4LCAzLCAyMTksIDIzLCA4LCAzLCAyMTksIDU4LCA4LCAzLCAyMTksIDM4LCA4LCAzLCAyMjAsIDExNCwgOCwgMywgCisgICAgMjIxLCAxODEsIDgsIDMsIDIyMCwgMTM5LCA4LCAzLCAyMTgsIDUsIDgsIDMsIDIxOCwgMywgOCwgMywgMjE4LCA4MywgOCwgCisgICAgMywgMjE4LCAyNywgOCwgMywgMjE4LCA5LCA4LCAzLCAyMTgsIDE3LCA4LCAzLCAyMTcsIDE2NiwgOCwgMywgMjE3LCAxNjUsIAorICAgIDgsIDMsIDIxNywgMjMyLCA4LCAzLCAyMTcsIDE3MywgOCwgMywgMjE3LCAxNjgsIDgsIDMsIDIxNywgMTcyLCA4LCAzLCAKKyAgICAyMTgsIDE4NiwgOCwgMywgMjE4LCAxODUsIDgsIDMsIDIxOCwgMTkyLCA4LCAzLCAyMTgsIDE4NywgOCwgMywgMjE4LCAxODksIAorICAgIDgsIDMsIDIxOCwgMTkxLCA4LCAzLCAyMTgsIDE5MCwgOCwgMywgMjE4LCAyMDAsIDgsIDMsIDIxOCwgMTk4LCA4LCAzLCAKKyAgICAyMTgsIDIyMywgOCwgMywgMjE4LCAyMDEsIDgsIDMsIDIxOCwgMTgxLCA4LCAzLCAyMTgsIDE4MCwgOCwgMywgMjE4LCAxODQsIAorICAgIDgsIDMsIDIxOCwgMTgyLCA4LCAzLCAyMTgsIDE5NCwgOCwgMywgMjE4LCAxOTcsIDgsIDMsIDIxOCwgMTk1LCA4LCAzLCAKKyAgICAyMTgsIDE3NywgOCwgMywgMjE4LCAxNzUsIDgsIDMsIDIxOCwgMTc5LCA4LCAzLCAyMTgsIDE3OCwgOCwgMywgMjE4LCAxNzAsIAorICAgIDgsIDMsIDIxOCwgMTY5LCA4LCAzLCAyMTgsIDE3NCwgOCwgMywgMjE4LCAxNzMsIDgsIDMsIDIxOCwgMTcxLCA4LCAzLCAKKyAgICAyMTgsIDE3MiwgOCwgMywgMjEwLCA3NywgOCwgMywgMjEwLCA3NiwgOCwgMywgMjEwLCA4MiwgOCwgMywgMjEwLCA3OSwgOCwgCisgICAgMywgMjEwLCA1OSwgOCwgMywgMjEwLCA2MSwgOCwgMywgMjEwLCA2MCwgOCwgMywgMjEwLCA2NCwgOCwgMywgMjEwLCA2MywgCisgICAgOCwgMywgMjEwLCA2NywgOCwgMywgMjEwLCA2NSwgOCwgMywgMjEwLCA3MSwgOCwgMywgMjEwLCA3MCwgOCwgMywgMjEwLCAKKyAgICA3NCwgOCwgMywgMjEwLCA3MiwgOCwgMywgMjEwLCA1NSwgOCwgMywgMjEwLCA1NCwgOCwgMywgMjEwLCA2MiwgOCwgMywgCisgICAgMjEwLCA1OCwgOCwgMywgMjEwLCA1NiwgOCwgMywgMjEwLCA1NywgOCwgMywgMjEwLCA0NywgOCwgMywgMjEwLCA0NiwgOCwgCisgICAgMywgMjEwLCA1MSwgOCwgMywgMjEwLCA1MCwgOCwgMywgMjEwLCA0OCwgOCwgMywgMjEwLCA0OSwgOCwgMywgMjUwLCAxMzYsIAorICAgIDgsIDMsIDI1MCwgMTMzLCA4LCAzLCAyNTAsIDE1NywgOCwgMywgMjUwLCAxNDQsIDgsIDMsIDI1MCwgNjUsIDgsIDMsIDI1MCwgCisgICAgNjQsIDgsIDMsIDI1MCwgNjcsIDgsIDMsIDI1MCwgNjYsIDgsIDMsIDI1MCwgNzksIDgsIDMsIDI1MCwgNzgsIDgsIDMsIAorICAgIDI1MCwgODYsIDgsIDMsIDI1MCwgODEsIDgsIDMsIDI1MCwgMTE1LCA4LCAzLCAyNTAsIDExMywgOCwgMywgMjUwLCAxMzEsIAorICAgIDgsIDMsIDI1MCwgMTIxLCA4LCAzLCAyNTAsIDU5LCA4LCAzLCAyNTAsIDY5LCA4LCAzLCAyNTAsIDYzLCA4LCAzLCAyNTAsIAorICAgIDYwLCA4LCAzLCAyNTAsIDYyLCA4LCAzLCAyNTAsIDUzLCA4LCAzLCAyNTAsIDUyLCA4LCAzLCAyNTAsIDU3LCA4LCAzLCAKKyAgICAyNTAsIDU2LCA4LCAzLCAyNTAsIDU0LCA4LCAzLCAyNTAsIDU1LCA4LCAzLCAyMjIsIDE3NSwgOCwgMywgMjIyLCAxNzksIDgsIAorICAgIDMsIDIyMiwgMTU4LCA4LCAzLCAyMjIsIDE1OSwgOCwgMywgMjIyLCAxNjIsIDgsIDMsIDIyMiwgMTYxLCA4LCAzLCAyMjIsIAorICAgIDE2NSwgOCwgMywgMjIyLCAxNjMsIDgsIDMsIDIyMiwgMTY5LCA4LCAzLCAyMjIsIDE2OCwgOCwgMywgMjIyLCAxNzQsIDgsIAorICAgIDMsIDIyMiwgMTcwLCA4LCAzLCAyMjIsIDE1NCwgOCwgMywgMjIyLCAxNTIsIDgsIDMsIDIyMiwgMTYwLCA4LCAzLCAyMjIsIAorICAgIDE1NywgOCwgMywgMjIyLCAxNTUsIDgsIDMsIDIyMiwgMTU2LCA4LCAzLCAyMjIsIDE0NywgOCwgMywgMjIyLCAxNDYsIDgsIAorICAgIDMsIDIyMiwgMTUxLCA4LCAzLCAyMjIsIDE1MCwgOCwgMywgMjIyLCAxNDgsIDgsIDMsIDIyMiwgMTQ5LCA4LCAzLCAyMjgsIAorICAgIDM0LCA4LCAzLCAyMjgsIDMzLCA4LCAzLCAyMjgsIDM2LCA4LCAzLCAyMjgsIDM1LCA4LCAzLCAyMjgsIDI2LCA4LCAzLCAKKyAgICAyMjgsIDI4LCA4LCAzLCAyMjgsIDI3LCA4LCAzLCAyMjgsIDMwLCA4LCAzLCAyMjgsIDI5LCA4LCAzLCAyMjgsIDMyLCA4LCAKKyAgICAzLCAyMjgsIDMxLCA4LCAzLCAyMjgsIDIxLCA4LCAzLCAyMjgsIDIwLCA4LCAzLCAyMjgsIDI1LCA4LCAzLCAyMjgsIDI0LCAKKyAgICA4LCAzLCAyMjgsIDIyLCA4LCAzLCAyMjgsIDIzLCA4LCAzLCAyMjgsIDE1LCA4LCAzLCAyMjgsIDE0LCA4LCAzLCAyMjgsIAorICAgIDE5LCA4LCAzLCAyMjgsIDE4LCA4LCAzLCAyMjgsIDE2LCA4LCAzLCAyMjgsIDE3LCA4LCAzLCAyMjAsIDcyLCA4LCAzLCAKKyAgICAyMjAsIDY3LCA4LCAzLCAyMjAsIDEwMiwgOCwgMywgMjIwLCA4MywgOCwgMywgMjE5LCAyMTUsIDgsIDMsIDIxOSwgMjE3LCAKKyAgICA4LCAzLCAyMTksIDIxNiwgOCwgMywgMjE5LCAyMzYsIDgsIDMsIDIxOSwgMjMzLCA4LCAzLCAyMjAsIDcsIDgsIDMsIDIxOSwgCisgICAgMjU0LCA4LCAzLCAyMjAsIDQyLCA4LCAzLCAyMjAsIDM1LCA4LCAzLCAyMjAsIDYzLCA4LCAzLCAyMjAsIDUwLCA4LCAzLCAKKyAgICAyMTksIDIxMSwgOCwgMywgMjE5LCAyMDksIDgsIDMsIDIxOSwgMjI1LCA4LCAzLCAyMTksIDIxNCwgOCwgMywgMjE5LCAyMTIsIAorICAgIDgsIDMsIDIxOSwgMjEzLCA4LCAzLCAyMTksIDE5NCwgOCwgMywgMjE5LCAxOTMsIDgsIDMsIDIxOSwgMjAwLCA4LCAzLCAKKyAgICAyMTksIDE5NywgOCwgMywgMjE5LCAxOTUsIDgsIDMsIDIxOSwgMTk2LCA4LCAzLCAyMjMsIDE0MSwgOCwgMywgMjIzLCAxMzUsIAorICAgIDgsIDMsIDIwNSwgOCwgMywgMjIzLCAxNDcsIDgsIDMsIDIyMiwgMTIwLCA4LCAzLCAyMjIsIDEyMiwgOCwgMywgMjIyLCAKKyAgICAxMjEsIDgsIDMsIDIyMiwgMTg4LCA4LCAzLCAyMjIsIDE4MSwgOCwgMywgMjIyLCAyMTEsIDgsIDMsIDIyMiwgMTkyLCA4LCAKKyAgICAzLCAyMjMsIDQzLCA4LCAzLCAyMjMsIDEyOCwgOCwgMywgMjIzLCA4MSwgOCwgMywgMjIyLCAxMTMsIDgsIDMsIDIyMiwgCisgICAgMTEwLCA4LCAzLCAyMjIsIDE0MCwgOCwgMywgMjIyLCAxMTksIDgsIDMsIDIyMiwgMTE1LCA4LCAzLCAyMjIsIDExNiwgOCwgCisgICAgMywgMjIyLCA5NSwgOCwgMywgMjIyLCA5NCwgOCwgMywgMjIyLCAxMDAsIDgsIDMsIDIyMiwgOTgsIDgsIDMsIDIyMiwgOTYsIAorICAgIDgsIDMsIDIyMiwgOTcsIDgsIDMsIDIzNSwgOTgsIDgsIDMsIDIzNSwgOTcsIDgsIDMsIDIzNSwgMTA4LCA4LCAzLCAyMzUsIAorICAgIDk5LCA4LCAzLCAyMzUsIDEwNCwgOCwgMywgMjM1LCAxMDMsIDgsIDMsIDIzNSwgMTA2LCA4LCAzLCAyMzUsIDEwNSwgOCwgMywgCisgICAgMjM1LCA0MSwgOCwgMywgMjM1LCA0MCwgOCwgMywgMjM1LCA0MywgOCwgMywgMjM1LCA0MiwgOCwgMywgMjM1LCA1NiwgOCwgCisgICAgMywgMjM1LCA1NCwgOCwgMywgMjM1LCA2OCwgOCwgMywgMjM1LCA1OCwgOCwgMywgMjM1LCAzNCwgOCwgMywgMjM1LCAzMiwgCisgICAgOCwgMywgMjM1LCA1MSwgOCwgMywgMjM1LCAzOSwgOCwgMywgMjM1LCAzNiwgOCwgMywgMjM1LCAzNywgOCwgMywgMjM1LCAKKyAgICAyNiwgOCwgMywgMjM1LCAyNSwgOCwgMywgMjM1LCAzMCwgOCwgMywgMjM1LCAyOSwgOCwgMywgMjM1LCAyNywgOCwgMywgCisgICAgMjM1LCAyOCwgOCwgMywgMjI0LCA0NiwgOCwgMywgMjI0LCA0NCwgOCwgMywgMjI0LCA1MywgOCwgMywgMjI0LCA0NywgOCwgCisgICAgMywgMjI0LCA1MCwgOCwgMywgMjI0LCA0OSwgOCwgMywgMjI0LCA1MiwgOCwgMywgMjI0LCA1MSwgOCwgMywgMjIzLCAyNTUsIAorICAgIDgsIDMsIDIyMywgMjUyLCA4LCAzLCAyMjQsIDEsIDgsIDMsIDIyNCwgMCwgOCwgMywgMjI0LCAzMywgOCwgMywgMjI0LCAzMiwgCisgICAgOCwgMywgMjI0LCA0MiwgOCwgMywgMjI0LCAzNiwgOCwgMywgMjIzLCAyNDcsIDgsIDMsIDIyMywgMjQzLCA4LCAzLCAyMjQsIAorICAgIDMwLCA4LCAzLCAyMjMsIDI1MSwgOCwgMywgMjIzLCAyNDksIDgsIDMsIDIyMywgMjUwLCA4LCAzLCAyMjMsIDIyNywgOCwgMywgCisgICAgMjIzLCAyMjUsIDgsIDMsIDIyMywgMjM3LCA4LCAzLCAyMjMsIDIzMCwgOCwgMywgMjIzLCAyMjgsIDgsIDMsIDIyMywgMjI5LCAKKyAgICA4LCAzLCAyMzUsIDg3LCA4LCAzLCAyMzUsIDg2LCA4LCAzLCAyMzUsIDkzLCA4LCAzLCAyMzUsIDg4LCA4LCAzLCAyMzUsIAorICAgIDkwLCA4LCAzLCAyMzUsIDg5LCA4LCAzLCAyMzUsIDkyLCA4LCAzLCAyMzUsIDkxLCA4LCAzLCAyMzUsIDc4LCA4LCAzLCAKKyAgICAyMzUsIDgwLCA4LCAzLCAyMzUsIDc5LCA4LCAzLCAyMzUsIDgzLCA4LCAzLCAyMzUsIDgyLCA4LCAzLCAyMzUsIDg1LCA4LCAKKyAgICAzLCAyMzUsIDg0LCA4LCAzLCAyMzUsIDc0LCA4LCAzLCAyMzUsIDczLCA4LCAzLCAyMzUsIDgxLCA4LCAzLCAyMzUsIDc3LCAKKyAgICA4LCAzLCAyMzUsIDc1LCA4LCAzLCAyMzUsIDc2LCA4LCAzLCAyMzUsIDcwLCA4LCAzLCAyMzUsIDY5LCA4LCAzLCAyMzUsIAorICAgIDcyLCA4LCAzLCAyMzUsIDcxLCA4LCAzLCAyMjgsIDE2MiwgOCwgMywgMjI4LCAxNjEsIDgsIDMsIDIyOCwgMTY5LCA4LCAzLCAKKyAgICAyMjgsIDE2MywgOCwgMywgMjI4LCAxNjUsIDgsIDMsIDIyOCwgMTY0LCA4LCAzLCAyMjgsIDE2OCwgOCwgMywgMjI4LCAxNjYsIAorICAgIDgsIDMsIDIyOCwgMTUxLCA4LCAzLCAyMjgsIDE1MiwgOCwgMywgMjI4LCAxNTcsIDgsIDMsIDIyOCwgMTU2LCA4LCAzLCAKKyAgICAyMjgsIDE2MCwgOCwgMywgMjI4LCAxNTgsIDgsIDMsIDIyOCwgMTQ2LCA4LCAzLCAyMjgsIDE1NSwgOCwgMywgMjI4LCAxNTAsIAorICAgIDgsIDMsIDIyOCwgMTQ3LCA4LCAzLCAyMjgsIDE0OCwgOCwgMywgMjI4LCAxNDEsIDgsIDMsIDIyOCwgMTQwLCA4LCAzLCAKKyAgICAyMjgsIDE0NSwgOCwgMywgMjI4LCAxNDQsIDgsIDMsIDIyOCwgMTQyLCA4LCAzLCAyMjgsIDE0MywgOCwgMywgMjI3LCAxMzcsIAorICAgIDgsIDMsIDIyNywgMTM2LCA4LCAzLCAyMjcsIDE0OCwgOCwgMywgMjI3LCAxNDEsIDgsIDMsIDIyNywgMTQ1LCA4LCAzLCAKKyAgICAyMjcsIDE0NCwgOCwgMywgMjI3LCAxNDcsIDgsIDMsIDIyNywgMTQ2LCA4LCAzLCAyMjcsIDEyNCwgOCwgMywgMjI3LCAxMjYsIAorICAgIDgsIDMsIDIyNywgMTI1LCA4LCAzLCAyMjcsIDEzMCwgOCwgMywgMjI3LCAxMjksIDgsIDMsIDIyNywgMTM0LCA4LCAzLCAKKyAgICAyMjcsIDEzMSwgOCwgMywgMjI3LCAxMjIsIDgsIDMsIDIyNywgMTIwLCA4LCAzLCAyMjcsIDEyOCwgOCwgMywgMjI3LCAxMjMsIAorICAgIDgsIDMsIDIxMSwgMTUwLCA4LCAzLCAyMTEsIDE0OSwgOCwgMywgMjExLCAxNTcsIDgsIDMsIDIxMSwgMTUyLCA4LCAzLCAKKyAgICAyMTEsIDE1NCwgOCwgMywgMjExLCAxNTMsIDgsIDMsIDIxMSwgMTU2LCA4LCAzLCAyMTEsIDE1NSwgOCwgMywgMjExLCAxMzksIAorICAgIDgsIDMsIDIxMSwgMTQwLCA4LCAzLCAyMTEsIDE0NCwgOCwgMywgMjExLCAxNDMsIDgsIDMsIDIxMSwgMTQ4LCA4LCAzLCAKKyAgICAyMTEsIDE0NiwgOCwgMywgMjExLCAxMjEsIDgsIDMsIDIxMSwgMTE5LCA4LCAzLCAyMTEsIDEzMSwgOCwgMywgMjExLCAxMjQsIAorICAgIDgsIDMsIDIxMSwgMTIyLCA4LCAzLCAyMTEsIDEyMywgOCwgMywgMjEwLCAyNTAsIDgsIDMsIDIxMCwgMjQ4LCA4LCAzLCAKKyAgICAyMTEsIDgsIDgsIDMsIDIxMCwgMjUxLCA4LCAzLCAyMTEsIDIsIDgsIDMsIDIxMSwgMSwgOCwgMywgMjExLCA1LCA4LCAzLCAKKyAgICAyMTEsIDMsIDgsIDMsIDIxMCwgMTkxLCA4LCAzLCAyMTAsIDE5MCwgOCwgMywgMjEwLCAxOTQsIDgsIDMsIDIxMCwgMTkyLCAKKyAgICA4LCAzLCAyMTAsIDIyNCwgOCwgMywgMjEwLCAyMjEsIDgsIDMsIDIxMCwgMjQ0LCA4LCAzLCAyMTAsIDIyOCwgOCwgMywgCisgICAgMjEwLCAxODIsIDgsIDMsIDIxMCwgMTc4LCA4LCAzLCAyMTAsIDIxMiwgOCwgMywgMjEwLCAxODksIDgsIDMsIDIxMCwgMTg1LCAKKyAgICA4LCAzLCAyMTAsIDE4NiwgOCwgMywgMjEwLCAxNjIsIDgsIDMsIDIxMCwgMTYxLCA4LCAzLCAyMTAsIDE2OSwgOCwgMywgCisgICAgMjEwLCAxNjUsIDgsIDMsIDIxMCwgMTYzLCA4LCAzLCAyMTAsIDE2NCwgOCwgMzQsIDIyNCwgMzMsIDgsIDM0LCAyMzIsIAorICAgIDI0MSwgOCwgMzQsIDIzNCwgNjEsIDgsIDM0LCAyMjcsIDE0MSwgOCwgMzQsIDI0OSwgNjksIDgsIDM0LCAyMTgsIDE5MiwgOCwgCisgICAgMzQsIDI0MywgMTIsIDgsIDM0LCAyNDMsIDQ0LCA4LCAzNCwgMjMwLCAyMzAsIDgsIDM0LCAyNDAsIDE4MCwgOCwgMzQsIAorICAgIDIzMiwgNTYsIDgsIDM0LCAyNTIsIDgzLCA4LCAzNCwgMjMwLCAxMjYsIDgsIDM0LCAyMTAsIDI0NCwgOCwgMzQsIDIyNCwgCisgICAgMTIxLCA4LCAzNCwgMjQwLCAxNzQsIDgsIDM0LCAyMTcsIDQ2LCA4LCAzNCwgMjQzLCAxMzUsIDgsIDM0LCAyMTAsIDUsIDgsIAorICAgIDM0LCAyNDksIDYzLCA4LCAzNCwgMjQ4LCA5NSwgOCwgMzQsIDI1MSwgOTgsIDgsIDM0LCAyNDMsIDgsIDgsIDM0LCAyMjcsIAorICAgIDEzMSwgOCwgMzQsIDIxNSwgMTE4LCA4LCAzNCwgMjI2LCAxNzUsIDgsIDM0LCAyMzUsIDc0LCA4LCAzNCwgMjEwLCAxOSwgOCwgCisgICAgMzQsIDIyNCwgMTAwLCA4LCAzNCwgMjQxLCAxMDgsIDgsIDM0LCAyMTAsIDI1MCwgOCwgMzQsIDIxMiwgMTEyLCA4LCAzNCwgCisgICAgMjE5LCAyMDAsIDgsIDM0LCAyMTMsIDI0NCwgOCwgMzQsIDIxMCwgMTE2LCA4LCAzNCwgMjM1LCA2OCwgOCwgMzQsIDIyNywgCisgICAgOTYsIDgsIDM0LCAyMzUsIDcyLCA4LCAzNCwgMjQyLCAxNTQsIDgsIDM0LCAyMzUsIDkyLCA4LCAzNCwgMjExLCAyMjcsIDgsIAorICAgIDM0LCAyNDYsIDc4LCA4LCAzNCwgMjE5LCAyMTMsIDgsIDM0LCAyMzIsIDIzNiwgOCwgMzQsIDI0OSwgNzMsIDgsIDM0LCAKKyAgICAyNDksIDEwNSwgOCwgMzQsIDI1MCwgMzcsIDgsIDM0LCAyNDAsIDE3NywgOCwgMzQsIDIyMCwgNzIsIDgsIDM0LCAyMTAsIDQsIAorICAgIDgsIDM0LCAyMTksIDI1NCwgOCwgMzQsIDI1MCwgMTMxLCA4LCAzNCwgMjA5LCAyMzEsIDgsIDM0LCAyMjksIDE3MywgOCwgCisgICAgMzQsIDIzNCwgMTgyLCAyMzIsIDE5NiwgMSwgMjUyLCAxOTEsIDIzMiwgMTk2LCAxLCAxOTAsIDIzMiwgMTk2LCAxLCAyMjUsIAorICAgIDE0NywgMjMyLCAxOTYsIDEsIDI0OCwgMjIxLCAyMzIsIDE5NiwgMSwgMjE3LCAxMDUsIDIzMiwgMTk2LCAxLCAyMTYsIDIwOCwgCisgICAgMjMyLCAxOTYsIDEsIDI0MywgMTM1LCAyMzIsIDE5NiwgMSwgMTc2LCAyMzIsIDE5NiwgMSwgMjM0LCAxMzIsIDIzMiwgMTk2LCAKKyAgICAxLCAyMzUsIDE0MSwgMjMyLCAxOTYsIDEsIDI1MSwgMzMsIDIzMiwgMTk2LCAxLCAyNTAsIDE1NywgMjMyLCAxOTYsIDEsIAorICAgIDI0NiwgMzgsIDIzMiwgMTk2LCAxLCAyMTUsIDE4MywgMjMyLCAxOTYsIDEsIDIxNSwgMTc1LCAyMzIsIDE5NiwgMSwgMTg0LCAKKyAgICAyMzIsIDE5NiwgMSwgMTk3LCAyMzIsIDE5NiwgMSwgMjMzLCAxMzUsIDIzMiwgMTk2LCAxLCAyMDYsIDIzMiwgMTk2LCAxLCAKKyAgICAyMTAsIDgyLCAyMzIsIDE5NiwgMSwgMjEwLCAxMTYsIDIzMiwgMTk2LCAxLCAyMjksIDc3LCAyMzIsIDE5NiwgMSwgMTYyLCAKKyAgICAyMzIsIDE5NiwgMSwgMjExLCAxNjUsIDIzMiwgMTk2LCAxLCAyNDEsIDE4OSwgMjMyLCAxOTYsIDEsIDI0NCwgMTk2LCAyMzIsIAorICAgIDE5NiwgMSwgMjEyLCA2NSwgMjMyLCAxOTYsIDEsIDIyMCwgMTAyLCAyMzIsIDE5NiwgMSwgMTkxLCAyMzIsIDE5NiwgMSwgCisgICAgMjQyLCAyNDksIDIzMiwgMTk2LCAxLCA2MSwgMjMyLCAxOTYsIDEsIDI1NCwgMjQzLCAyMzIsIDE5NiwgMSwgNzUsIDIzMiwgCisgICAgMTk2LCAxLCAyNDUsIDU1LCAyMzIsIDE5NiwgMSwgNzMsIDIzMiwgMTk2LCAxLCA3NiwgMjMyLCAxOTYsIDEsIDcwLCAyMzIsIAorICAgIDE5NiwgMSwgMjE0LCAyMTQsIDIzMiwgMTk2LCAxLCAyMTQsIDIwOCwgMjMyLCAxOTYsIDEsIDIyNiwgMjM0LCAyMzIsIDE5NiwgCisgICAgMSwgMTM4LCAyMzAsIDMyLCAyMTYsIDExNywgMjMyLCAxOTYsIDEsIDEzOCwgMjI5LCAyMjksIDIyNSwgMTYsIDIzMiwgMTk2LCAKKyAgICAxLCAxMzgsIDIzMCwgMzIsIDI0OSwgNzIsIDIzMiwgMTk2LCAxLCAxMzgsIDIzMCwgMzIsIDI1MSwgMjA1LCAyMzIsIDE5NiwgCisgICAgMSwgMTM4LCAyMzAsIDMyLCAxOTcsIDIzMiwgMTk2LCAxLCAxMzgsIDIzMCwgMzIsIDIzNSwgMTE1LCAyMzIsIDE5NiwgMjI0LCAKKyAgICAxNDEsIDI0OSwgMjE5LCAyMzIsIDE5NiwgMjI0LCAxNDEsIDI0MywgMjI5LCAyMTgsIDEyOSwgNDEsIDMsIDI0NSwgMjA5LCAKKyAgICA0MSwgMywgMjQ1LCAyMDUsIDQxLCAzLCAyNDEsIDIyMCwgNDEsIDMsIDIxMiwgMTcsIDQxLCAzLCAyMTIsIDE2LCA0MSwgMywgCisgICAgMjI1LCAyMTEsIDQxLCAzLCAyNTIsIDEzLCA0MSwgMywgMjUyLCA2NiwgNDEsIDMsIDIzMSwgMTE2LCA0MSwgMywgMjMzLCAKKyAgICAyNDcsIDQxLCAzLCAyMzEsIDYsIDQxLCAzLCAyNDMsIDc1LCA0MSwgMywgMjQ0LCAxNDcsIDQxLCAzLCAyMTMsIDI1MCwgNDEsIAorICAgIDMsIDIxNywgMTEsIDQxLCAzLCAyMTYsIDE5NCwgNDEsIDMsIDI0OCwgMTYsIDQxLCAzLCAyNDgsIDEzLCA0MSwgMywgMjMzLCAKKyAgICA1MCwgNDEsIDMsIDIyMywgMTA4LCA0MSwgMywgMjQ4LCA3NywgNDEsIDMsIDIyOSwgMTM5LCA0MSwgMywgMjIxLCAxNzAsIAorICAgIDQxLCAzLCAyMjAsIDYxLCA0MSwgMywgMjEwLCA5MiwgNDEsIDMsIDIxMCwgNzMsIDQxLCAzLCAyNTAsIDE4MiwgNDEsIDMsIAorICAgIDIzNSwgMTI0LCA0MSwgMywgMjI4LCAxNzYsIDQxLCAzLCAyMTEsIDQ0LCA0MSwgMywgMjM0LCAxODEsIDQxLCAzLCAyMjksIAorICAgIDUxLCA0MSwgMywgMjQzLCA1NSwgNDEsIDMsIDIzMSwgODAsIDQxLCAzLCAyMjksIDEwMywgNDEsIDMsIDIyNywgMTU1LCA0MSwgCisgICAgMywgNzMsIDQxLCAzLCAyMzUsIDI1NSwgNDEsIDMsIDI0MSwgMTgwLCA0MSwgMywgMjQxLCAxNjAsIDQxLCAzLCAyMTEsIAorICAgIDI1MCwgNDEsIDMsIDIxMSwgMjQxLCA0MSwgMywgMjI1LCAxMDgsIDQxLCAzLCAyNTIsIDExLCA0MSwgMywgMjUyLCA2LCA0MSwgCisgICAgMywgMjMxLCAxMDksIDQxLCAzLCAyMzMsIDI0NCwgNDEsIDMsIDIzMSwgMywgNDEsIDMsIDI0MywgNzEsIDQxLCAzLCAyNDQsIAorICAgIDEyMSwgNDEsIDMsIDIxMywgMTc2LCA0MSwgMywgMjE2LCAxMTcsIDQxLCAzLCAyMTYsIDE3NSwgNDEsIDMsIDI0OCwgOCwgCisgICAgNDEsIDMsIDI0OCwgMTIsIDQxLCAzLCAyMzIsIDI0MSwgNDEsIDMsIDIyMywgMzUsIDQxLCAzLCAyNDgsIDMsIDQxLCAzLCAKKyAgICAyMjksIDEzMywgNDEsIDMsIDIxOSwgMTkxLCA0MSwgMywgMjIwLCAzMiwgNDEsIDMsIDIxMCwgNDQsIDQxLCAzLCAyMTAsIAorICAgIDY5LCA0MSwgMywgMjUwLCA1MSwgNDEsIDMsIDIzNSwgMTA4LCA0MSwgMywgMjI4LCAxNjksIDQxLCAzLCAyMTEsIDgsIDQxLCAKKyAgICAzLCAyMzQsIDkyLCA0MSwgMywgMjI5LCA0MywgNDEsIDMsIDI0MiwgMjE0LCA0MSwgMywgMjMwLCAyMzAsIDQxLCAzLCAyMjgsIAorICAgIDIzMywgNDEsIDMsIDIyNywgMTQ4LCA0MSwgMywgNjEsIDQxLCAzLCAyNTQsIDEyMywgNDEsIDMsIDIyOSwgNzIsIDQxLCAzLCAKKyAgICAxNjIsIDQxLCAzLCAyNDIsIDE4LCA0MSwgMywgMjEyLCA2NSwgNDEsIDMsIDIxMiwgNTUsIDQxLCAzLCAxOTAsIDQxLCAzLCAKKyAgICAyNTIsIDE4LCA0MSwgMywgMjUyLCAxOTEsIDQxLCAzLCAyMzEsIDEyNCwgNDEsIDMsIDIzMywgMjUxLCA0MSwgMywgMjMzLCAKKyAgICAyNTAsIDQxLCAzLCAyMzEsIDEwLCA0MSwgMywgMjQzLCA3OSwgNDEsIDMsIDI0NCwgMTk2LCA0MSwgMywgMjE0LCAyNywgNDEsIAorICAgIDMsIDIxNywgMTA1LCA0MSwgMywgMjE2LCAyMDgsIDQxLCAzLCAyNDgsIDI1LCA0MSwgMywgMjQ4LCAxNSwgNDEsIDMsIDIzMywgCisgICAgMTM1LCA0MSwgMywgMjA1LCA0MSwgMywgMjQ4LCAyMjEsIDQxLCAzLCAyMjksIDE0OCwgNDEsIDMsIDIwNiwgNDEsIDMsIAorICAgIDIyMCwgMTAyLCA0MSwgMywgMjEwLCAxMTYsIDQxLCAzLCAyMTAsIDgyLCA0MSwgMywgMjUxLCAzMywgNDEsIDMsIDIzNSwgCisgICAgMTQxLCA0MSwgMywgMjI4LCAxODUsIDQxLCAzLCAxOTEsIDQxLCAzLCAxNzYsIDQxLCAzLCAyMzQsIDIzNCwgNDEsIDMsIAorICAgIDIyOSwgNTYsIDQxLCAzLCAyNDMsIDEzNSwgNDEsIDMsIDE4NCwgNDEsIDMsIDE5NywgNDEsIDMsIDIyNywgMTY1LCA0MSwgMywgCisgICAgMjI2LCAxODMsIDQxLCAzLCAyMjYsIDE3OSwgNDEsIDMsIDI0MSwgNTMsIDQxLCAzLCAyMTEsIDIxNSwgNDEsIDMsIDIxMSwgCisgICAgMjExLCA0MSwgMywgMjI0LCAyNDksIDQxLCAzLCAyNTIsIDksIDQxLCAzLCAyNTEsIDE5MywgNDEsIDMsIDIzMSwgMTA0LCAKKyAgICA0MSwgMywgMjMzLCAyNDIsIDQxLCAzLCAyMzAsIDI1NSwgNDEsIDMsIDI0MywgNjcsIDQxLCAzLCAyNDQsIDM0LCA0MSwgMywgCisgICAgMjEzLCAxMjcsIDQxLCAzLCAyMTYsIDE3LCA0MSwgMywgMjE2LCAxNTMsIDQxLCAzLCAyNDgsIDYsIDQxLCAzLCAyNDgsIDEwLCAKKyAgICA0MSwgMywgMjMyLCAxMjcsIDQxLCAzLCAyMjIsIDE5NywgNDEsIDMsIDI0NywgMTI1LCA0MSwgMywgMjI5LCAxMjAsIDQxLCAKKyAgICAzLCAyMTksIDQwLCA0MSwgMywgMjIwLCAxLCA0MSwgMywgMjEwLCAyMSwgNDEsIDMsIDIxMCwgNjYsIDQxLCAzLCAyNDksIAorICAgIDE3NCwgNDEsIDMsIDIzNSwgNTksIDQxLCAzLCAyMjgsIDE1OSwgNDEsIDMsIDIxMCwgMjI5LCA0MSwgMywgMjM0LCAxMCwgCisgICAgNDEsIDMsIDIyOSwgNDEsIDQxLCAzLCAyNDIsIDE2NCwgNDEsIDMsIDIzMCwgMTMyLCA0MSwgMywgMjI4LCA2NCwgNDEsIDMsIAorICAgIDIyNywgMTMyLCA0MSwgMywgNzAsIDQxLCAzLCAyMTQsIDE5MCwgNDEsIDMsIDI0MCwgMjIyLCA0MSwgMywgMjQwLCAyMTIsIAorICAgIDQxLCAzLCAyMTEsIDE5NSwgNDEsIDMsIDIxMSwgMTg5LCA0MSwgMywgMjI0LCAxNTAsIDQxLCAzLCAyNTIsIDgsIDQxLCAzLCAKKyAgICAyNTEsIDEyNSwgNDEsIDMsIDIzMSwgMTAzLCA0MSwgMywgMjMzLCAyNDAsIDQxLCAzLCAyMzAsIDI1NCwgNDEsIDMsIDI0MywgCisgICAgNjYsIDQxLCAzLCAyNDMsIDIzNCwgNDEsIDMsIDIxMiwgMTE2LCA0MSwgMywgMjE1LCAxMTgsIDQxLCAzLCAyMTYsIDEzNiwgCisgICAgNDEsIDMsIDI0OCwgNCwgNDEsIDMsIDI0OCwgOSwgNDEsIDMsIDIzMiwgOTgsIDQxLCAzLCAyMjIsIDE0MCwgNDEsIDMsIAorICAgIDI0NiwgNzgsIDQxLCAzLCAyMjksIDExNSwgNDEsIDMsIDIxOCwgODMsIDQxLCAzLCAyMTksIDIyNSwgNDEsIDMsIDIxMCwgCisgICAgMTMsIDQxLCAzLCAyMTAsIDYyLCA0MSwgMywgMjQ5LCAxMTIsIDQxLCAzLCAyMzUsIDUxLCA0MSwgMywgMjI4LCAxNTUsIDQxLCAKKyAgICAzLCAyMTAsIDIxMiwgNDEsIDMsIDIzMywgMjE3LCA0MSwgMywgMjI5LCA0MCwgNDEsIDMsIDI0MiwgMTEzLCA0MSwgMywgCisgICAgMjMwLCAxMDIsIDQxLCAzLCAyMjcsIDIzNywgNDEsIDMsIDIyNywgMTI4LCA0MSwgMywgNzYsIDQxLCAzLCAyMjYsIDE5NiwgCisgICAgNDEsIDMsIDIyOSwgMCwgNDEsIDMsIDI0MSwgNjgsIDQxLCAzLCAyNDEsIDU2LCA0MSwgMywgMjExLCAyMjcsIDQxLCAzLCAKKyAgICAyMTEsIDIxNiwgNDEsIDMsIDIyNSwgMTYsIDQxLCAzLCAyNTIsIDEwLCA0MSwgMywgMjUxLCAyMDUsIDQxLCAzLCAyMzEsIAorICAgIDEwNSwgNDEsIDMsIDIzMywgMjQzLCA0MSwgMywgMjMxLCAxLCA0MSwgMywgMjQzLCA2OSwgNDEsIDMsIDI0MywgNjgsIDQxLCAKKyAgICAzLCAyNDQsIDQzLCA0MSwgMywgMjEzLCAxMzgsIDQxLCAzLCAxMTEsIDQxLCAzLCAyMTYsIDE1NiwgNDEsIDMsIDI0OCwgNywgCisgICAgNDEsIDMsIDI0OCwgMTEsIDQxLCAzLCAyMzIsIDE1NiwgNDEsIDMsIDIyMiwgMjExLCA0MSwgMywgMjQ3LCAxNDUsIDQxLCAzLCAKKyAgICAyMjksIDEyNCwgNDEsIDMsIDIxOSwgNTgsIDQxLCAzLCAyMjAsIDcsIDQxLCAzLCAyMTAsIDIzLCA0MSwgMywgMjEwLCA2NywgCisgICAgNDEsIDMsIDI0OSwgMjM4LCA0MSwgMywgMjM1LCA2OCwgNDEsIDMsIDIyOCwgMTYwLCA0MSwgMywgMjEwLCAyNDQsIDQxLCAzLCAKKyAgICAyMzQsIDI4LCA0MSwgMywgMjI5LCA0MiwgNDEsIDMsIDI0MiwgMTc0LCA0MSwgMywgMjMwLCAxNjEsIDQxLCAzLCAyMjgsIAorICAgIDc0LCA0MSwgMywgMjI3LCAxMzQsIDQxLCAzLCA3NSwgNDEsIDMsIDI0NSwgMTUwLCA0MSwgMywgMjI5LCA2MSwgNDEsIDMsIAorICAgIDI0MSwgMjM4LCA0MSwgMywgMjQxLCAyMDksIDQxLCAzLCAyMTIsIDIyLCA0MSwgMywgMjEyLCAxMiwgNDEsIDMsIDIyNSwgCisgICAgMjIxLCA0MSwgMywgMjUyLCAxNCwgNDEsIDMsIDI1MiwgNzUsIDQxLCAzLCAyMzEsIDExNywgNDEsIDMsIDIzMywgMjQ4LCAKKyAgICA0MSwgMywgMjMzLCAyNDYsIDQxLCAzLCAyMzEsIDcsIDQxLCAzLCAyNDMsIDc2LCA0MSwgMywgMjQzLCA3NCwgNDEsIDMsIAorICAgIDI0NCwgMTU0LCA0MSwgMywgMjEzLCAyNTUsIDQxLCAzLCAyMTcsIDIyLCA0MSwgMywgMjE2LCAxOTUsIDQxLCAzLCAyNDgsIAorICAgIDE3LCA0MSwgMywgMjQ4LCAxNCwgNDEsIDMsIDIzMywgNTgsIDQxLCAzLCAyMjMsIDEyOCwgNDEsIDMsIDI0OCwgOTAsIDQxLCAKKyAgICAzLCAyMjksIDE0MCwgNDEsIDMsIDIyMSwgMTgxLCA0MSwgMywgMjIwLCA2MywgNDEsIDMsIDIxMCwgOTQsIDQxLCAzLCAyMTAsIAorICAgIDc0LCA0MSwgMywgMjUwLCAxOTAsIDQxLCAzLCAyMzUsIDEyNiwgNDEsIDMsIDIyOCwgMTc4LCA0MSwgMywgMjExLCA0NywgCisgICAgNDEsIDMsIDIzNCwgMTgyLCA0MSwgMywgMjI5LCA1MiwgNDEsIDMsIDIyOSwgNDgsIDQxLCAzLCAyNDMsIDYyLCA0MSwgMywgCisgICAgMjQzLCA1MSwgNDEsIDMsIDIzMSwgOTEsIDQxLCAzLCAyMjksIDEwNywgNDEsIDMsIDIyNywgMTU2LCA0MSwgMywgMjI5LCAKKyAgICA3OSwgNDEsIDMsIDIzMywgMjIsIDQxLCAyNDksIDIxOSwgNDEsIDI0MywgMjI5LCAyMTgsIDEyOSwgNDEsIDIyNCwgMTMsIAorICAgIDc4LCA0MSwgMywgMjI5LCAxMjMsIDI0NCwgMTk2LCA0MSwgMywgMjI5LCAxMjMsIDE3NiwgNDEsIDMsIDIyOSwgMTIzLCAKKyAgICAyMTksIDQwLCA0MSwgMTYsIDI0NCwgMTQ0LCA0MSwgMTYsIDIzNCwgMTgwLCA0MSwgMTYsIDIxNiwgODEsIDQxLCAxNiwgCisgICAgMjI4LCAyMDgsIDQxLCAxNiwgMjUyLCAxNDcsIDQxLCAxNiwgMjQ0LCAxOTUsIDQxLCAxNiwgMjE3LCAxMDEsIDQxLCAxNiwgCisgICAgMjQ4LCAxNzYsIDQxLCAxNiwgMjQ3LCAxMjQsIDQxLCAxNiwgMjMzLCAyMDYsIDQxLCAxNiwgMjE2LCAyMSwgNDEsIDE2LCAKKyAgICAyNDcsIDE0NCwgNDEsIDE2LCAyMzUsIDYwLCA0MSwgMjEsIDIxMCwgODYsIDQxLCAyMSwgMTEwLCA0MSwgMjEsIDEwNSwgNDEsIAorICAgIDIxLCAxNTgsIDQxLCAyMSwgMTYxLCA0MSwgMjEsIDE4OSwgNDEsIDIxLCAxOTQsIDQxLCAyMSwgMTk4LCA0MSwgMjEsIDE5NSwgCisgICAgNDEsIDIxLCAyMDAsIDQxLCAzLCAyMjksIDEyMywgMTg0LCA0MSwgMywgMjI5LCAxMjMsIDI0NywgMTQ1LCAzMywgNiwgMSwgCisgICAgMjEwLCA5MCwgMzMsIDQsIDEsIDIxMCwgOTAsIDMzLCA2LCAxLCAyNDYsIDM0LCAzMywgNCwgMSwgMjQ2LCAzNCwgMzMsIDYsIAorICAgIDEsIDIyMywgNDksIDI0NiwgMzYsIDMzLCA0LCAxLCAyMjMsIDQ5LCAyNDYsIDM2LCAzMywgNiwgMSwgMjM1LCAxODUsIDMzLCAKKyAgICA0LCAxLCAyMzUsIDE4NSwgMzMsIDYsIDEsIDI0NywgMTYxLCAzMywgNCwgMSwgMjQ3LCAxNjEsIDMzLCA2LCAxLCAyMzAsIAorICAgIDE0MCwgMjE0LCAyMDUsIDMzLCA0LCAxLCAyMzAsIDE0MCwgMjE0LCAyMDUsIDMzLCA2LCAxLCAyNTEsIDEzNiwgMjI2LCAKKyAgICAyMDEsIDMzLCA0LCAxLCAyNTEsIDEzNiwgMjI2LCAyMDEsIDMzLCA2LCAxLCAyMjksIDg3LCAyMTEsIDMxLCAzMywgNCwgMSwgCisgICAgMjI5LCA4NywgMjExLCAzMSwgMzMsIDYsIDEsIDIxMSwgMjgsIDIsIDI1MiwgMTg1LCAyMTEsIDMxLCAzMywgNCwgMSwgMjExLCAKKyAgICAyOCwgMiwgMjUyLCAxODUsIDIxMSwgMzEsIDMzLCA2LCAxLCAyMzUsIDE4MywgMjExLCA1OSwgMzMsIDQsIDEsIDIzNSwgCisgICAgMTgzLCAyMTEsIDU5LCAzMywgNiwgMSwgMjIzLCA0OSwgMjEwLCAyMTIsIDMzLCA0LCAxLCAyMjMsIDQ5LCAyMTAsIDIxMiwgCisgICAgMzMsIDYsIDEsIDIzNSwgMTgzLCA2MSwgMzMsIDQsIDEsIDIzNSwgMTgzLCA2MSwgMzMsIDYsIDEsIDI1MCwgMCwgMjMyLCAKKyAgICAxOTIsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjUwLCAwLCAyMzIsIDE5MiwgMjEwLCAxODMsIDMzLCA2LCAxLCAyNTEsIDIxNCwgCisgICAgMjEwLCAxODMsIDMzLCA0LCAxLCAyNTEsIDIxNCwgMjEwLCAxODMsIDMzLCA2LCAxLCAyMzUsIDE4MywgMjUwLCAwLCAyMzIsIAorICAgIDE5MiwgMjEwLCAxODMsIDMzLCA0LCAxLCAyMzUsIDE4MywgMjUwLCAwLCAyMzIsIDE5MiwgMjEwLCAxODMsIDMzLCA2LCAxLCAKKyAgICAyMTAsIDI0NiwgMzMsIDQsIDEsIDIxMCwgMjQ2LCAzMywgNiwgMSwgMjIzLCA0OSwgMjE1LCAxNzgsIDMzLCA0LCAxLCAyMjMsIAorICAgIDQ5LCAyMTUsIDE3OCwgMzMsIDYsIDEsIDIxOSwgNTIsIDI0OCwgOTAsIDMzLCA0LCAxLCAyMTksIDUyLCAyNDgsIDkwLCAzMywgCisgICAgNiwgMSwgMjE5LCA1MiwgMjQ1LCAxNzQsIDMzLCA0LCAxLCAyMTksIDUyLCAyNDUsIDE3NCwgMzMsIDYsIDEsIDIxOSwgNTIsIAorICAgIDI0NSwgMTU5LCAzMywgNCwgMSwgMjE5LCA1MiwgMjQ1LCAxNTksIDMzLCA2LCAxLCAyMzAsIDE0NCwgNzYsIDMzLCA0LCAxLCAKKyAgICAyMzAsIDE0NCwgNzYsIDMzLCA2LCAxLCAyNTEsIDI0MCwgNzYsIDMzLCA0LCAxLCAyNTEsIDI0MCwgNzYsIDMzLCA2LCAxLCAKKyAgICA1MiwgMjMwLCAxNDQsIDc2LCAzMywgNCwgMSwgNTIsIDIzMCwgMTQ0LCA3NiwgMzMsIDEsIDIzMCwgODYsIDc2LCAzOCwgMzMsIAorICAgIDIxMiwgMTAwLCAzOCwgMzMsIDIxNiwgMjQ4LCAyMzAsIDE5MSwgNTAsIDM4LCAzMywgMjQwLCAyMTEsIDIzMCwgMTkxLCA1MCwgCisgICAgMzgsIDMzLCAyMTYsIDE0OCwgMjMwLCAxOTEsIDUwLCAyMTksIDkzLCAyNTMsIDIxNiwgMzgsIDMzLCAxLCAyMTQsIDIwMiwgCisgICAgMjM2LCA2MCwgMzgsIDMzLCAxLCA3MywgMzgsIDMzLCAxLCAyMTEsIDgsIDM4LCAzMywgMSwgNzAsIDM4LCAzMywgMSwgMjQyLCAKKyAgICAzLCA1MCwgMzgsIDMzLCAxLCAyMTEsIDI3LCAzOCwgMzMsIDEsIDIxOSwgNTIsIDUwLCAzOCwgMzMsIDEsIDIyNiwgMjAxLCAKKyAgICAzOCwgMzMsIDIzNCwgMTkyLCAzOCwgMzMsIDIyNSwgMjI3LCAzMywgMjM0LCAxOTIsIDMzLCAyMjUsIDIyNywgMzMsIDYsIDEsIAorICAgIDI0NiwgNDYsIDMzLCA0LCAxLCAyNDYsIDQ2LCAzMywgNiwgMSwgMjQ2LCAyNywgMzMsIDQsIDEsIDI0NiwgMjcsIDMzLCA2LCAKKyAgICAxLCAyMTAsIDUyLCAzMywgNCwgMSwgMjEwLCA1MiwgMzMsIDYsIDEsIDI1MCwgMjA2LCAzMywgNCwgMSwgMjUwLCAyMDYsIAorICAgIDMzLCA2LCAxLCAyNDYsIDI1LCAzMywgNCwgMSwgMjQ2LCAyNSwgMzMsIDYsIDEsIDIxNywgMjMsIDIsIDIzMCwgMjI0LCAKKyAgICAxMDMsIDMzLCA0LCAxLCAyMTcsIDIzLCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNiwgMSwgMjE1LCA3OCwgMzMsIDQsIDEsIAorICAgIDIxNSwgNzgsIDMzLCA2LCAxLCAyMTUsIDE2MCwgMzMsIDQsIDEsIDIxNSwgMTYwLCAzMywgNiwgMSwgMjE1LCAxNjQsIDMzLCAKKyAgICA0LCAxLCAyMTUsIDE2NCwgMzMsIDYsIDEsIDIxNywgMjgsIDMzLCA0LCAxLCAyMTcsIDI4LCAzMywgNiwgMSwgMjQwLCAxOTgsIAorICAgIDMzLCA0LCAxLCAyNDAsIDE5OCwgMzMsIDYsIDEsIDIxOSwgMjA2LCAzMywgNCwgMSwgMjE5LCAyMDYsIDM4LCAzMywgMSwgCisgICAgMjM1LCAxODMsIDc1LCAyMCwgMSwgNjEsIDIwLCAxLCAxNzYsIDIwLCAxLCA3MCwgMjAsIDEsIDIzMywgMjE3LCAyMCwgMSwgCisgICAgMjQ1LCAyMDksIDIwLCAxLCAyMjMsIDEwOCwgMjAsIDEsIDIxNywgODYsIDIwLCAxLCA3NiwgMjAsIDEsIDIyNywgMTQ4LCAKKyAgICAyMCwgMSwgNzMsIDIwLCAxLCAyMzMsIDEzNSwgMjAsIDEsIDE5MCwgMjAsIDEsIDIyMiwgMjM5LCAyMCwgMSwgMjIzLCAyOSwgCisgICAgMjAsIDEsIDIzMywgNDksIDIwLCAxLCAyMzEsIDc5LCAyMCwgMSwgMjE3LCAxMDEsIDIwLCAxLCAyMjksIDE0NiwgMjAsIDEsIAorICAgIDIyOCwgMTgzLCAyMCwgMSwgMTkzLCAyMCwgMSwgMjE4LCA0LCAyMCwgMSwgMjMwLCAxMDIsIDIwLCAxLCAyMjAsIDI3LCAyMCwgCisgICAgMSwgMjE5LCAxOTEsIDIwLCAxLCAyMjAsIDM3LCAyMCwgMSwgMjIwLCAxMjMsIDIwLCAxLCAyMzMsIDE1NSwgMjAsIDEsIAorICAgIDIzNCwgMTU2LCAyMCwgMSwgMjI3LCAyMDksIDIwLCAxLCAyMjcsIDIzNywgMjAsIDEsIDIyOCwgMTU0LCAyMCwgMSwgMjEwLCAKKyAgICAyMjYsIDIwLCAxLCAyMTksIDIyNSwgMjAsIDEsIDIxMCwgMTg3LCAyMCwgMSwgMTkxLCAyMCwgMSwgMjI4LCA5LCAyMCwgMSwgCisgICAgMjM0LCAxNDIsIDIwLCAxLCAyMjUsIDE1MSwgMjAsIDEsIDIyOCwgMTc2LCAyMCwgMSwgMjI3LCAyNDYsIDIwLCAxLCAyMjQsIAorICAgIDE0NCwgMjAsIDEsIDIxMSwgMTkyLCAyMCwgMSwgMjI1LCAyMTEsIDIwLCAxLCAyNDQsIDE0NywgMjAsIDEsIDIyMiwgMTQwLCAKKyAgICAyMCwgMSwgMjMyLCA5OCwgMjAsIDEsIDIzMCwgMjMwLCAyMCwgMSwgMjI4LCAyMzMsIDIwLCAxLCAyMjMsIDUxLCAyMCwgMSwgCisgICAgMjIzLCAxNzEsIDIwLCAxLCAyMzQsIDE2NSwgMjAsIDEsIDIyOSwgNywgMjAsIDEsIDIyOSwgNTYsIDIwLCAxLCAyMjksIDc3LCAKKyAgICAyMCwgMSwgMjIwLCA3LCAyMCwgMSwgMjI0LCAxNDcsIDIwLCAxLCAyNDMsIDIzNCwgMjAsIDEsIDI0NCwgMzcsIDIwLCAxLCAKKyAgICAyMTIsIDY1LCAyMCwgMSwgMTk3LCAyMCwgMSwgMjMyLCAyNDEsIDIwLCAxLCAyMjUsIDEwOCwgMjAsIDEsIDIzMiwgMTE5LCAKKyAgICAyMCwgMSwgMjM0LCAyOCwgMjAsIDEsIDIzMSwgMTE0LCAyMCwgMSwgMjIzLCA4MywgMjAsIDEsIDIzMSwgNTgsIDIwLCAxLCAKKyAgICAxODQsIDIwLCAxLCAyMTYsIDExNywgMjAsIDEsIDIzNCwgOTIsIDIwLCAxLCAyMzAsIDE2MSwgMjAsIDEsIDIzMSwgMTIyLCAKKyAgICAyMCwgMSwgMjE2LCAyMzAsIDIwLCAxLCAyMzMsIDI1MSwgMjAsIDEsIDIxNiwgMjQ3LCAyMCwgMSwgMjI3LCAyMzgsIDIwLCAKKyAgICAxLCAyMjEsIDI1MSwgMjAsIDEsIDI0NCwgMTkyLCAyMCwgMSwgMjMzLCAyNTMsIDIwLCAxLCAyMzQsIDI0LCAyMCwgMzgsIAorICAgIDE2NCwgMjM0LCA1LCAyMCwgMzgsIDE2NCwgMjE1LCAxMTAsIDIwLCAyMjgsIDE4MiwgMjAsIDI0MywgMjI5LCAyMTgsIDEyOSwgCisgICAgMjAsIDI0OSwgMjI2LCAyMCwgMjQ5LCAyMTksIDIwLCAyMjAsIDE1MCwgMjAsIDIyNCwgMTMsIDc4LCA1OCwgMSwgMjUwLCAKKyAgICA5NiwgMTM4LCAyMTAsIDI1NCwgMjI1LCA2MSwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjExLCA3MCwgMjI1LCA2MSwgNTgsIDEsIAorICAgIDI1MCwgOTYsIDEzOCwgMjEwLCAyNTQsIDIyMCwgODQsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMSwgNzAsIDIyMCwgODQsIAorICAgIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMCwgMjU0LCAyMjQsIDMwLCA1OCwgMSwgMjUwLCA5NiwgMTM4LCAyMTEsIDcwLCAKKyAgICAyMjQsIDMwLCA1OCwgMSwgMjUwLCA5NiwgMTM4LCAyMTAsIDI1NCwgMjIyLCAxNDAsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIAorICAgIDIxMSwgNzAsIDIyMiwgMTQwLCA1OCwgMSwgMjQ1LCAyMCwgMjQ2LCAxMTgsIDEzOCwgMTMwLCA1OCwgMSwgMTI1LCAyNDYsIAorICAgIDExOCwgMTM4LCAxMzAsIDU4LCAxLCAyMzAsIDIyNSwgMjQ2LCAxMTgsIDEzOCwgMTMwLCA1OCwgMSwgMTIxLCAyNDYsIDExOCwgCisgICAgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIDE5LCAyNDYsIDExOCwgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIDIwLCAyNDYsIDExOCwgCisgICAgMjMzLCAzOSwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDI0NiwgMTE4LCAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDIzMCwgCisgICAgMjI1LCAyNDYsIDExOCwgMjMzLCAzOSwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDI0NiwgMTE4LCAyMzMsIDM5LCAxMzgsIAorICAgIDEzMCwgNTgsIDEsIDI0NSwgMTksIDI0NiwgMTE4LCAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjAsIDIzMywgCisgICAgMzksIDEzOCwgMTMwLCA1OCwgMSwgMTI1LCAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDIzMCwgMjI1LCAyMzMsIDM5LCAKKyAgICAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjMzLCAzOSwgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIDE5LCAyMzMsIDM5LCAxMzgsIAorICAgIDEzMCwgNTgsIDEsIDU5LCA2NywgMTMwLCA1OCwgMSwgNTksIDIxOSwgOTUsIDU4LCAxLCA1OSwgMjAzLCAxMzAsIDU4LCAxLCAKKyAgICAyMzIsIDEwOCwgNDQsIDI0OSwgMTYxLCAyNTQsIDEwOSwgNTgsIDEsIDIyMywgMTU3LCAxMjAsIDc0LCA1OCwgMSwgMjIzLCAKKyAgICAxNTcsIDEyNCwgNzQsIDU4LCAxLCAyMjMsIDE1NywgMjQ1LCAzMSwgNzgsIDU4LCAxLCAyMjMsIDE1NywgMjM1LCAxOTMsIAorICAgIDI0NSwgMzEsIDc4LCA1OCwgMSwgMTIxLCAyMzUsIDE5MywgMjQ1LCAzMSwgNzgsIDU4LCAxLCAyMTgsIDExMSwgMjIsIDEyNSwgCisgICAgMjE2LCAzMCwgNTgsIDEsIDIxOCwgMTExLCAyMiwgMTIxLCAyMTYsIDMwLCA3LCA2LCAxLCAyNDUsIDE5OSwgMjU0LCAxNzAsIAorICAgIDcsIDQsIDEsIDI0NSwgMTk5LCAyNTQsIDE3MCwgNywgNiwgMSwgMjQ1LCAxOTksIDI1NCwgMTk2LCA3LCA0LCAxLCAyNDUsIAorICAgIDE5OSwgMjU0LCAxOTYsIDcsIDYsIDEsIDI0MSwgMjA3LCA3LCA0LCAxLCAyNDEsIDIwNywgNywgNiwgMSwgMjE1LCA0MCwgNywgCisgICAgNCwgMSwgMjE1LCA0MCwgNywgNiwgMSwgMjE1LCAyMjksIDcsIDQsIDEsIDIxNSwgMjI5LCA3LCA2LCAxLCAyNDksIDExMCwgCisgICAgNywgNCwgMSwgMjQ5LCAxMTAsIDcsIDYsIDEsIDI0OSwgMTExLCAyLCAyNDksIDIxOSwgNywgNCwgMSwgMjQ5LCAxMTEsIDIsIAorICAgIDI0OSwgMjE5LCA3LCAxLCA0LCA2LCAyNDUsIDYsIDcsIDEsIDQsIDYsIDIyMiwgOTEsIDcsIDYsIDEsIDI1NSwgNzMsIDcsIAorICAgIDQsIDEsIDI1NSwgNzMsIDcsIDYsIDEsIDI1NCwgNzMsIDcsIDQsIDEsIDI1NCwgNzMsIDcsIDYsIDEsIDI1MywgMTkyLCA3LCAKKyAgICA0LCAxLCAyNTMsIDE5MiwgNywgNiwgMSwgMjUzLCAxNzYsIDcsIDQsIDEsIDI1MywgMTc2LCA3LCA2LCAxLCAyNTMsIDE3NywgCisgICAgMiwgMjAzLCAxMzAsIDcsIDQsIDEsIDI1MywgMTc3LCAyLCAyMDMsIDEzMCwgNywgNiwgMSwgMjUzLCAxNjcsIDcsIDQsIDEsIAorICAgIDI1MywgMTY3LCA3LCA2LCAxLCAyMjMsIDQ5LCAyNTEsIDY3LCAyLCAyNDcsIDEyMCwgNywgNCwgMSwgMjIzLCA0OSwgMjUxLCAKKyAgICA2NywgMiwgMjQ3LCAxMjAsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCA5MSwgNywgNiwgCisgICAgMSwgMjM1LCAyNCwgMiwgMjQ3LCAyNTUsIDkxLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDYsIDEsIAorICAgIDIzNSwgMjQsIDIsIDIxOCwgMTAzLCAyMiwgMjQ3LCAyNTUsIDkxLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyMTgsIDEwMywgCisgICAgMjIsIDI0NywgMjU1LCA5MSwgNywgNiwgMSwgMjUxLCAxMzUsIDE1NiwgNywgNCwgMSwgMjUxLCAxMzUsIDE1NiwgNywgNiwgCisgICAgMSwgMjMzLCAxNDksIDIsIDEyNSwgOTEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAxMjUsIDkxLCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDE5OSwgMjE4LCAxMDMsIDIyNiwgMTIwLCA3LCA0LCAxLCAxNDQsIDIsIDE5OSwgMjE4LCAxMDMsIDIyNiwgMTIwLCA3LCA2LCAKKyAgICAxLCAxNDQsIDIsIDIzMiwgMTIzLCA3LCA0LCAxLCAxNDQsIDIsIDIzMiwgMTIzLCA3LCA2LCAxLCAyMjYsIDE4MywgNywgNCwgCisgICAgMSwgMjI2LCAxODMsIDcsIDYsIDEsIDIyNiwgMTA2LCAyLCAyMTgsIDEwMywgMjE2LCAxMzksIDI0OCwgMzksIDcsIDQsIDEsIAorICAgIDIyNiwgMTA2LCAyLCAyMTgsIDEwMywgMjE2LCAxMzksIDI0OCwgMzksIDcsIDYsIDEsIDIyNiwgMTA2LCAyLCAyNDQsIDUzLCAKKyAgICA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgMjQ0LCA1MywgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDIxOCwgMjI5LCAyMTcsIDc3LCAKKyAgICA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgMjE4LCAyMjksIDIxNywgNzcsIDcsIDYsIDEsIDIyNCwgOTcsIDIsIDIxOCwgMTAzLCAKKyAgICAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgNCwgMSwgMjI0LCA5NywgMiwgMjE4LCAxMDMsIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCAKKyAgICA2LCAxLCAyMjQsIDk3LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDQsIDEsIDIyNCwgOTcsIDIsIDI0NywgMjU1LCA5MSwgNywgNiwgCisgICAgMSwgMjIzLCAyMjQsIDIyMiwgMTg2LCA3LCA0LCAxLCAyMjMsIDIyNCwgMjIyLCAxODYsIDcsIDYsIDEsIDIyMiwgMTMwLCAKKyAgICAyMjIsIDE4NiwgNywgNCwgMSwgMjIyLCAxMzAsIDIyMiwgMTg2LCA3LCA2LCAxLCAyMTQsIDEwNiwgMiwgMjQ3LCAyNTUsIAorICAgIDkxLCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgMjQ3LCAyNTUsIDkxLCA3LCA2LCAxLCAyMTIsIDEwNiwgNywgNCwgMSwgMjEyLCAKKyAgICAxMDYsIDcsIDYsIDEsIDIxMywgMTQ1LCAyMTAsIDE1OSwgNywgNCwgMSwgMjEzLCAxNDUsIDIxMCwgMTU5LCA3LCA2LCAxLCAKKyAgICAyMTYsIDE1MiwgMiwgOTEsIDcsIDQsIDEsIDIxNiwgMTUyLCAyLCA5MSwgNywgNiwgMSwgMjE2LCAxNTIsIDIsIDIxOCwgCisgICAgMTAzLCAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgNCwgMSwgMjE2LCAxNTIsIDIsIDIxOCwgMTAzLCAyMTYsIDEzOSwgMjQ4LCAKKyAgICAzOSwgNywgNiwgMSwgMjEzLCAyNDUsIDcsIDQsIDEsIDIxMywgMjQ1LCA3LCA2LCAxLCAyNDUsIDY1LCA3LCA0LCAxLCAyNDUsIAorICAgIDY1LCA3LCA2LCAxLCAyMzUsIDE3MSwgNywgNCwgMSwgMjM1LCAxNzEsIDcsIDYsIDEsIDI0OSwgMjA3LCA3LCA0LCAxLCAKKyAgICAyNDksIDIwNywgNTgsIDEsIDIxNCwgMTMzLCA3LCA0LCAxLCAyNDYsIDY5LCA3LCA0LCAxLCAyMzIsIDg0LCA3LCA0LCAxLCAKKyAgICAyMzAsIDgwLCA3LCA0LCAxLCAyMjcsIDIwMSwgNywgNCwgMSwgMjIyLCAxMjksIDcsIDEsIDQsIDYsIDIyMiwgMTI5LCA3LCAKKyAgICA0LCAxLCAyMTUsIDEwOCwgNywgNCwgMSwgMjE0LCAxOTcsIDcsIDYsIDEsIDIzNSwgMjEzLCAyNDksIDYwLCA3LCA0LCAxLCAKKyAgICAyMzUsIDIxMywgMjQ5LCA2MCwgNywgNiwgMSwgMjM1LCAyMTMsIDI0NSwgNiwgNywgNCwgMSwgMjM1LCAyMTMsIDI0NSwgNiwgCisgICAgNywgNiwgMSwgMjM1LCAyMTMsIDI0MywgMjAyLCA3LCA2LCAxLCAyMTUsIDk0LCAyMzUsIDIxMywgMjQzLCAyMDIsIDcsIDQsIAorICAgIDEsIDIxNSwgOTQsIDIzNSwgMjEzLCAyNDMsIDIwMiwgNywgNiwgMSwgMjE1LCA5NCwgMTU2LCA3LCA0LCAxLCAyMTUsIDk0LCAKKyAgICAxNTYsIDcsIDYsIDEsIDIzNSwgMjEzLCAxNTMsIDcsIDQsIDEsIDIzNSwgMjEzLCAxNTMsIDcsIDYsIDEsIDIzNSwgMjEzLCAKKyAgICAyMjIsIDkxLCA3LCA0LCAxLCAyMzUsIDIxMywgMjIyLCA5MSwgNywgNiwgMSwgMjM1LCAyMTMsIDIxNywgMTUyLCA3LCA0LCAKKyAgICAxLCAyMzUsIDIxMywgMjE3LCAxNTIsIDU4LCAxLCAxMjEsIDI1MCwgMzEsIDI1NSwgMTQsIDU4LCAxLCAyNDksIDIyNiwgNTgsIAorICAgIDEsIDIxOSwgMjUxLCAyNDUsIDk4LCA1MCwgNywgNiwgMSwgMjIxLCAyNTUsIDcsIDQsIDEsIDIyMSwgMjU1LCA3LCA2LCAxLCAKKyAgICAyMTUsIDk0LCAyNDIsIDYwLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjIzLCA1NSwgMjQxLCA1MiwgMjIsIDI1MiwgNDEsIDcsIAorICAgIDYsIDEsIDIzMCwgMjYsIDIsIDI0OCwgMzksIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDI0OCwgMzksIDcsIDYsIDEsIDI1MSwgCisgICAgNjcsIDIsIDEzMCwgNywgNCwgMSwgMjUxLCA2NywgMiwgMTMwLCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMjI2LCAyNDgsIDkxLCAKKyAgICA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMjI2LCAyNDgsIDkxLCA3LCA2LCAxLCAyMzUsIDI0LCAyLCAyMjYsIDI0OCwgOTEsIDcsIAorICAgIDQsIDEsIDIzNSwgMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjMwLCAyNiwgMiwgMjI2LCAyNDgsIDkxLCA3LCA0LCAKKyAgICAxLCAyMzAsIDI2LCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAyMjYsIDI0OCwgOTEsIDcsIDQsIDEsIAorICAgIDIyMywgMjI0LCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNCwgMSwgCisgICAgMjIyLCA5MiwgMiwgMjI2LCAyNDgsIDkxLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAxMDMsIDU4LCAxLCA2LCAyNDIsIDYxLCAyLCAKKyAgICA5MSwgNTgsIDEsIDQsIDI3LCAyMjYsIDIzNCwgNywgMSwgNCwgNiwgMjE1LCA5NCwgMTkzLCA3LCAyNDUsIDEwMywgMSwgCisgICAgMjIzLCA0OSwgMjQ1LCA2LCA3LCAyNDUsIDEwMywgMSwgMjIzLCA0OSwgMjI2LCAxMDUsIDcsIDI0NSwgMTAzLCAxLCAyMzUsIAorICAgIDE5MywgMTkzLCA3LCAyNDUsIDEwMywgMSwgMjQwLCAxNTQsIDIzMiwgMTI5LCA3LCAyNDUsIDEwMywgMSwgMjU0LCAyMywgCisgICAgMTkzLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDYxLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDczLCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDUsIDI0NiwgNDgsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgNzAsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgNzUsIAorICAgIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgNzYsIDIxNywgMjMwLCAyMjksIDIxNCwgNSwgMjQxLCAyNTMsIDIxNywgMjMwLCAKKyAgICAyMjksIDIxNCwgMSwgMjM0LCAyOCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMzQsIDEwNSwgMjE3LCAyMzAsIDIyOSwgCisgICAgMjE0LCAxLCAyNDIsIDE3NCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDIsIDIyNCwgMjE3LCAyMzAsIDIyOSwgMjE0LCA1LCAKKyAgICAyNTQsIDc1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0OSwgMjM4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI1MCwgODYsIAorICAgIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjM1LCA2OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMzUsIDEwOSwgMjE3LCAKKyAgICAyMzAsIDIyOSwgMjE0LCAxLCAyMTUsIDEzMywgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMTUsIDEzOSwgMjE3LCAyMzAsIAorICAgIDIyOSwgMjE0LCAxLCAyNDgsIDEwNSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDgsIDExNCwgMjE3LCAyMzAsIDIyOSwgCisgICAgMjE0LCAxLCAxMTEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjE2LCAxNTYsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjQ3LCAKKyAgICAxNDUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjQ4LCA3LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIyOCwgNzQsIDIxNywgCisgICAgMjMwLCAyMjksIDIxNCwgMSwgMjI1LCAxNiwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMjUsIDEyMSwgMjE3LCAyMzAsIAorICAgIDIyOSwgMjE0LCAxLCAyNTEsIDIwNSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNTIsIDEwLCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDEsIDIzMCwgMTYxLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIyMiwgMjExLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIAorICAgIDIzMiwgMTU2LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIyMiwgMTY1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIxOSwgCisgICAgNTgsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjQxLCA2OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAyNSwgNSwgNjEsIDIxNywgCisgICAgMjMwLCAyMjksIDIxNCwgMjUsIDUsIDczLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDI1LCA1LCA3MCwgMjE3LCAyMzAsIDIyOSwgCisgICAgMjE0LCAyNSwgNSwgNzUsIDIxNywgMjMwLCAyMjksIDIxNCwgMjUsIDUsIDIyNiwgMTgzLCAyMTcsIDIzMCwgMjI5LCAyMTQsIAorICAgIDIyNSwgMTIsIDIzMSwgMTU4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDIyNSwgMTIsIDIzMSwgMTU3LCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDIyNSwgMTIsIDIzMSwgMTU2LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDIyNSwgMTIsIDIzMSwgMTU1LCAyMjgsIDU2LCAKKyAgICAyMzUsIDI0MCwgMjQ0LCAyLCAxMjMsIDIyNCwgMjEsIDIyOCwgNTYsIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgMjQyLCAyNywgCisgICAgMjI4LCA1NiwgMjM1LCAyNDAsIDI0NCwgMiwgMTM0LCAyMjQsIDE5LCAyMjgsIDU2LCAyMzUsIDI0MCwgMjQ0LCAyLCAxMjMsIAorICAgIDIxOSwgMTE3LCAyMjgsIDU2LCAyMzUsIDI0MCwgMjQ0LCAyLCAxMjMsIDI0NSwgMTg4LCAyMjgsIDU2LCAyMzUsIDI0MCwgCisgICAgMjQ0LCAyLCAxMzQsIDIxOSwgMTE2LCAyMjgsIDU2LCAyMzUsIDI0MCwgMjI0LCAyMiwgNzgsIDIyOCwgNTYsIDIzNSwgMjQwLCAKKyAgICAyMjUsIDQwLCA3OCwgMjI4LCA1NiwgMjM1LCAyNDAsIDIyMiwgMTE4LCA3OCwgMjI4LCA1NiwgMjM1LCAyNDAsIDIyNCwgMjMsIAorICAgIDc4LCAyMjUsIDE0NCwgMSwgMTc2LCAyMjUsIDE0NCwgMSwgMjM0LCAxMzIsIDIyNSwgMTQ0LCAxLCAyNDMsIDEzNSwgMjI1LCAKKyAgICAxNDQsIDEsIDIyOSwgNzcsIDIyNSwgMTQ0LCAxLCAyNTEsIDMzLCAyMjUsIDE0NCwgMSwgMjUwLCAxNTcsIDIyNSwgMTQ0LCAKKyAgICAxLCAyMzUsIDE0MSwgMjI1LCAxNDQsIDEsIDIyNywgMTY1LCAyMjUsIDE0NCwgMSwgMjE3LCAxMDUsIDIyNSwgMTQ0LCAxLCAKKyAgICAyMTYsIDIwOCwgMjI1LCAxNDQsIDEsIDI0OCwgMjIxLCAyMjUsIDE0NCwgMSwgMTk3LCAyMjUsIDE0NCwgMSwgMTkwLCAyMjUsIAorICAgIDE0NCwgMSwgMjI1LCAxNDcsIDIyNSwgMTQ0LCAxLCAyNTIsIDE5MSwgMjI1LCAxNDQsIDEsIDE4NCwgMjI1LCAxNDQsIDEsIAorICAgIDIxNSwgMTgzLCAyMjUsIDE0NCwgMSwgMjE1LCAxNzUsIDIyNSwgMTQ0LCAxLCAyNDYsIDM4LCAyMjUsIDE0NCwgMSwgMjEyLCAKKyAgICA2NSwgMjI1LCAxNDQsIDEsIDIxMCwgODIsIDIyNSwgMTQ0LCAxLCAyMTAsIDExNiwgMjI1LCAxNDQsIDEsIDQsIDYxLCAyMjUsIAorICAgIDE0NCwgMSwgMTkxLCAyMjUsIDE0NCwgMSwgMjA1LCAyMjUsIDE0NCwgMSwgMjMzLCAxMzUsIDIyNSwgMTQ0LCAxLCAyMjAsIAorICAgIDEwMiwgMjI1LCAxNDQsIDEsIDIwNiwgMjI1LCAxNDQsIDEsIDE2MiwgMjI1LCAxNDQsIDEsIDYxLCAyMjUsIDE0NCwgMSwgCisgICAgNzMsIDIyNSwgMTQ0LCAxLCA3MCwgMjI1LCAxNDQsIDEsIDc1LCAyMjUsIDE0NCwgMSwgNzYsIDIyNSwgMTQ0LCAxLCAyMjQsIAorICAgIDg4LCAyMjUsIDE0NCwgMSwgMjExLCAxNjUsIDIyNSwgMTQ0LCAxLCAyNDQsIDE5NiwgMjI1LCAxNDQsIDEsIDI0MywgMjksIAorICAgIDIyNSwgMTQ0LCAxLCAyNDUsIDIwOSwgMjI1LCAxNDQsIDIxOCwgNzMsIDEsIDIxMiwgNjUsIDIyNSwgMTQ0LCAyMTgsIDczLCAKKyAgICAxLCAxOTEsIDIyNSwgMTQ0LCAxLCAyMTUsIDE1NiwgMjI1LCAxNDQsIDEsIDIxNSwgMTQ0LCAyMjUsIDE0NCwgMSwgMjQ4LCAKKyAgICAxMzUsIDIyNSwgMTQ0LCAxLCAyMjgsIDExMCwgMjI1LCAxNDQsIDEsIDI1NCwgMTQxLCAxOTEsIDIyNSwgMTQ0LCAxLCAyMTMsIAorICAgIDEzNCwgMjIwLCAxMDIsIDIyNSwgMTQ0LCAxLCAyMTMsIDEzNSwgMTYyLCAyMjUsIDE0NCwgMSwgMjUzLCAyMjMsIDI0NCwgCisgICAgMTk2LCAyMjUsIDE0NCwgMjE4LCA3MywgMSwgMjA1LCAyMjUsIDE0NCwgMjE4LCAyNSwgMSwgMjA1LCAyMjUsIDE0NCwgMSwgCisgICAgMjUwLCAyNTUsIDIyNSwgMTQ0LCAyMTksIDE1NSwgMjQxLCAyMzYsIDc4LCAyMjUsIDE0NCwgNTIsIDI0MSwgMjM2LCA3OCwgCisgICAgMjI1LCAxNDQsIDE2NCwgMjIwLCA5NSwgMjI1LCAxNDQsIDE2NCwgNTIsIDIyMCwgOTUsIDE3OSwgNSwgMjU0LCA3NSwgMTc5LCAKKyAgICA1LCAyMTMsIDE0NywgMTc5LCAxLCA2MSwgMTc5LCAxLCAyNTUsIDczLCAxNzksIDEsIDczLCAxNzksIDEsIDIzNiwgMzMsIAorICAgIDE3OSwgMSwgNzAsIDE3OSwgMSwgMjE0LCAxMTgsIDE3OSwgMSwgMTQ5LCAxNTMsIDE3OSwgMSwgMTQ5LCAyMjIsIDE4MCwgCisgICAgMTc5LCAxLCAxNDksIDE1NiwgMTc5LCAxLCAxNDksIDIzMiwgMTg1LCAxNzksIDEsIDc1LCAxNzksIDEsIDI0NSwgMjA5LCAKKyAgICAxNzksIDEsIDI1NCwgMjAxLCAxNzksIDEsIDc2LCAxNzksIDEsIDIyNiwgMTgzLCAxNzksIDEsIDI1MywgMTkyLCAxNzksIDEsIAorICAgIDE3NiwgMTc5LCAxLCAyMzQsIDEzMiwgMTc5LCAxLCAyNDMsIDEzNSwgMTc5LCAxLCAyNDIsIDI0OSwgMTc5LCAxLCAyMjksIAorICAgIDc3LCAxNzksIDEsIDI1MSwgMzMsIDE3OSwgMSwgMjUwLCAxNTcsIDE3OSwgMSwgMjM1LCAxNDEsIDE3OSwgMSwgMjM1LCAKKyAgICAxMTQsIDE3OSwgMSwgMjI3LCAxNjUsIDE3OSwgMSwgMjE1LCAxNTYsIDE3OSwgMSwgMjE1LCAxNDQsIDE3OSwgMSwgMjQ4LCAKKyAgICAxMzUsIDE3OSwgMSwgMjQ4LCAxMTksIDE3OSwgMSwgMjI4LCAxMTAsIDE3OSwgMSwgMjE3LCAxMDUsIDE3OSwgMSwgMjE2LCAKKyAgICAyMDgsIDE3OSwgMSwgMjQ4LCAyMjEsIDE3OSwgMSwgMjQ4LCAyNSwgMTc5LCAxLCAxOTcsIDE3OSwgMSwgMTkwLCAxNzksIDEsIAorICAgIDIyNSwgMTQ3LCAxNzksIDEsIDI1MiwgMTkxLCAxNzksIDEsIDI1MiwgMTgsIDE3OSwgMSwgMTg0LCAxNzksIDEsIDE5MSwgCisgICAgMTc5LCAxLCAyMDUsIDE3OSwgMSwgMjMzLCAxMzUsIDE3OSwgMSwgMjE0LCAyNywgMTc5LCAxLCAyMjAsIDEwMiwgMTc5LCAxLCAKKyAgICAyMTgsIDIyMywgMTc5LCAxLCAyMDYsIDE3OSwgMSwgMTYyLCAxNzksIDEsIDIzMiwgMTg0LCAxNzksIDExNiwgNSwgMjQyLCAKKyAgICA0NCwgMTc5LCAyNSwgNSwgMjU1LCA3MywgMTc5LCAyNSwgNSwgNzMsIDE3OSwgMjUsIDUsIDIzNiwgMzMsIDE3OSwgMjUsIDUsIAorICAgIDcwLCAxNzksIDI1LCA1LCAyMTQsIDExOCwgMTc5LCAyNSwgNSwgMTQ5LCAxNTMsIDE3OSwgMjUsIDUsIDE0OSwgMjIyLCAKKyAgICAxODAsIDE3OSwgMjUsIDUsIDE0OSwgMTU2LCAxNzksIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNzksIDI1LCA1LCA3NSwgCisgICAgMTc5LCAyNSwgNSwgMjQ1LCAyMDksIDE3OSwgMjUsIDUsIDI1NCwgMjAxLCAxNzksIDI1LCA1LCA3NiwgMTc5LCAyNSwgNSwgCisgICAgMjI2LCAxODMsIDE3OSwgMjUsIDUsIDI1MywgMTkyLCAxNzksIDUsIDIxMywgMTUyLCAxNzksIDI0OCwgMTc4LCAxNzksIDUyLCAKKyAgICAyNDgsIDE3OCwgMTc5LCAyMSwgMjEwLCA4NiwgMTc5LCAyMSwgMTEwLCAxNzksIDIxLCAxMDUsIDE3OSwgMjEsIDE1OCwgCisgICAgMTc5LCAyMSwgMTYxLCAxNzksIDIxLCAxODksIDE3OSwgMjEsIDE5NCwgMTc5LCAyMSwgMTk4LCAxNzksIDIxLCAxOTUsIAorICAgIDE3OSwgMjEsIDIwMCwgMzgsIDg0LCAyMSwgMjEwLCA4NiwgMzgsIDg0LCAyMSwgMTEwLCAzOCwgODQsIDIxLCAxMDUsIDM4LCAKKyAgICA4NCwgMjEsIDE1OCwgMzgsIDg0LCAyMSwgMTYxLCAzOCwgODQsIDIxLCAxODksIDM4LCA4NCwgMjEsIDE5NCwgMzgsIDg0LCAKKyAgICAyMSwgMTk4LCAzOCwgODQsIDIxLCAxOTUsIDM4LCA4NCwgMjEsIDIwMCwgMzgsIDg0LCAxLCA2MSwgMzgsIDg0LCAxLCA3MCwgCisgICAgMzgsIDg0LCAxLCAxNzYsIDM4LCA4NCwgMSwgMTk3LCAzOCwgODQsIDEsIDE5MCwgMzgsIDg0LCAxLCAyMDUsIDM4LCA4NCwgCisgICAgMSwgMjEzLCAxNzYsIDM4LCA4NCwgNSwgMjUzLCAxNzUsIDg0LCA1LCAyMTksIDE3LCAyNTAsIDI1NSwgODQsIDUsIDI1MSwgCisgICAgMCwgMjEzLCAxNTIsIDg0LCA1LCA1MiwgMjUxLCAwLCAyMTMsIDE1MiwgODQsIDUsIDI1MSwgMCwgMTA1LCA4NCwgNSwgMjUxLCAKKyAgICAwLCAxNTgsIDg0LCA1LCAyNTEsIDAsIDI1MywgMTc1LCA4NCwgNSwgMjI0LCAxMjQsIDg0LCAyNDMsIDEwMCwgMjQ0LCAxMDMsIAorICAgIDg0LCAyNTAsIDIzOCwgODQsIDI0MSwgMjMwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAyMTAsIDg2LCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDIxLCAxMTAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDEwNSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgCisgICAgMTU4LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAxNjEsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDE4OSwgMjM0LCAxODgsIAorICAgIDIzMiwgMjQyLCAyMSwgMTk0LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAxOTgsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIAorICAgIDE5NSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMjAwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDE3NiwgMjM0LCAxODgsIAorICAgIDIzMiwgMjQyLCAxLCAyMzQsIDEzMiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyNDMsIDEzNSwgMjM0LCAxODgsIDIzMiwgCisgICAgMjQyLCAxLCAyMjksIDc3LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIwNiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMjAsIAorICAgIDEwMiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMTAsIDExNiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMjcsIDE2NSwgCisgICAgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMTcsIDEwNSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyNDAsIDIyNiwgMjM0LCAKKyAgICAxODgsIDIzMiwgMjQyLCAxLCAxOTcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMTkwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIAorICAgIDIyNSwgMTQ3LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDE4NCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyNDgsIDIyMSwgCisgICAgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyNTIsIDE5MSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMDUsIDIzNCwgMTg4LCAKKyAgICAyMzIsIDI0MiwgMSwgMTkxLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIzMywgMTM1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIAorICAgIDIxMiwgNjUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjE2LCAyMDgsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMTYyLCAKKyAgICAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIxNCwgMjcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjUxLCAzMywgMjM0LCAxODgsIAorICAgIDIzMiwgMjQyLCAxLCA2MSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMjYsIDIzNCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAKKyAgICA3MywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMjYsIDE4MywgMjM0LCAxODgsIDIzMiwgMjQyLCAyNSwgMjE0LCAyMTQsIAorICAgIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjUsIDc1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDI1LCA3MCwgMjM0LCAxODgsIDIzMiwgCisgICAgMjQyLCAyNSwgMjQ1LCAyMDksIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjUsIDc2LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEzOCwgCisgICAgMjI1LCAzMCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxMzgsIDI1MSwgMTIsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMTM4LCAyNTEsIAorICAgIDEzLCAyMjUsIDMwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDUsIDI0OSwgNzcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgNSwgMjE5LCAKKyAgICAxOTksIDIyMywgOTMsIDEsIDE3NiwgMjIzLCA5MywgMSwgMjQzLCAxMzUsIDIyMywgOTMsIDEsIDIyOSwgNzcsIDIyMywgOTMsIAorICAgIDEsIDIxNywgMTA1LCAyMjMsIDkzLCAxLCAyNDgsIDIyMSwgMjIzLCA5MywgMSwgMTk3LCAyMjMsIDkzLCAxLCAxOTAsIDIyMywgCisgICAgOTMsIDEsIDI1MiwgMTkxLCAyMjMsIDkzLCAxLCAxODQsIDIyMywgOTMsIDEsIDI1MSwgMzMsIDIyMywgOTMsIDEsIDIzNSwgCisgICAgMTQxLCAyMjMsIDkzLCAxLCAyMjcsIDE2NSwgMjIzLCA5MywgMSwgMjA2LCAyMjMsIDkzLCAxLCAyMDUsIDIyMywgOTMsIDEsIAorICAgIDIzMywgMTM1LCAyMjMsIDkzLCAxLCAxOTEsIDIyMywgOTMsIDEsIDIxMiwgNjUsIDIyMywgOTMsIDEsIDE2MiwgMjIzLCA5MywgCisgICAgMSwgMjMxLCAxMjQsIDIyMywgOTMsIDEsIDIyOSwgNTYsIDIyMywgOTMsIDEsIDIyOSwgMTQ4LCAyMjMsIDkzLCAxLCAyMjcsIAorICAgIDEzNSwgMjIzLCA5MywgMSwgNjEsIDIyMywgOTMsIDI1LCA1LCA3MywgMjIzLCA5MywgMjUsIDUsIDcwLCAyMjMsIDkzLCAyNSwgCisgICAgNSwgNzUsIDIyMywgOTMsIDI1LCA1LCAyNTQsIDIwMSwgMjIzLCA5MywgMjUsIDUsIDc2LCAyMjMsIDkzLCAyNSwgNSwgMjUzLCAKKyAgICAxOTIsIDIyMywgOTMsIDI1LCA1LCAyNDUsIDU1LCAyMjMsIDkzLCAyNSwgNSwgMjQ1LCAyMzMsIDIyMywgOTMsIDExNiwgNSwgCisgICAgMjI5LCA3OSwgMjIzLCA5MywgMTE2LCA1LCAyMzAsIDI1LCAyMjMsIDkzLCAxMTYsIDUsIDE1MywgMjIzLCA5MywgMTE2LCA1LCAKKyAgICAyNDIsIDYwLCAyMjMsIDkzLCAyMTMsIDE1MiwgMjIzLCA5MywgMjIxLCAxNzMsIDc4LCAyNCwgMTAwLCAyMTYsIDk3LCAyNCwgCisgICAgMTAwLCAyMTYsIDk2LCAyNCwgMTAwLCAyMTYsIDk0LCAyNCwgMTAwLCAyMTYsIDk5LCAyNCwgMTAwLCAyMjMsIDIxLCAyNCwgCisgICAgMTAwLCAyMjMsIDUsIDI0LCAxMDAsIDIyMywgMCwgMjQsIDEwMCwgMjIzLCAyLCAyNCwgMTAwLCAyMjMsIDE4LCAyNCwgMTAwLCAKKyAgICAyMjMsIDExLCAyNCwgMTAwLCAyMjMsIDQsIDI0LCAxMDAsIDIyMywgMjMsIDI0LCAxMDAsIDIyMywgNiwgMjQsIDEwMCwgCisgICAgMjIzLCAyNSwgMjQsIDEwMCwgMjIzLCAyMiwgMjQsIDEwMCwgMjMwLCAyMTMsIDI0LCAxMDAsIDIzMCwgMjA0LCAyNCwgMTAwLCAKKyAgICAyMzAsIDIwNywgMjQsIDEwMCwgMjI1LCA4MCwgMjQsIDEwMCwgMjI1LCA5MSwgMjQsIDEwMCwgMjI1LCA5MiwgMjQsIDEwMCwgCisgICAgMjE4LCAyMDcsIDI0LCAxMDAsIDIzNiwgNDYsIDI0LCAxMDAsIDIzNiwgNTMsIDI0LCAxMDAsIDIxOCwgMjE4LCAyNCwgMTAwLCAKKyAgICAyMTgsIDIwNSwgMjQsIDEwMCwgMjI1LCAxMzAsIDI0LCAxMDAsIDI0MSwgMTY3LCAyNCwgMTAwLCAyMTgsIDIwMiwgMTU1LCAKKyAgICA1LCAyMjYsIDI3LCAxNTUsIDUsIDI1MCwgMTg3LCAxNTUsIDUsIDIzMywgNjYsIDE1NSwgNSwgMjExLCAyNDMsIDE1NSwgMSwgCisgICAgNjEsIDE1NSwgMSwgMjQwLCAxNTQsIDIzNCwgMTkxLCAxNTUsIDEsIDczLCAxNTUsIDEsIDIzNiwgMzMsIDE1NSwgMSwgNzAsIAorICAgIDE1NSwgMSwgMjI2LCA5MCwgMjUwLCAxNjMsIDE1NSwgMSwgMjI5LCA3OCwgMjMzLCAyOCwgMTU1LCAxLCAyMjksIDc4LCAKKyAgICAyMzMsIDI5LCAyMjMsIDE0MiwgMTU1LCAxLCA3NSwgMTU1LCAxLCAyNTQsIDIwMSwgMTU1LCAxLCA3NiwgMTU1LCAxLCAxNzYsIAorICAgIDE1NSwgMSwgMjM1LCAxMywgMjIxLCAyMjgsIDE1NSwgMSwgMjM1LCAxMywgMjMwLCA2NiwgMTU1LCAxLCAyNDMsIDEzNSwgCisgICAgMTU1LCAxLCAyNDMsIDEzNiwgMjMwLCA2NiwgMTU1LCAxLCAyMjksIDc3LCAxNTUsIDEsIDI1MSwgMzMsIDE1NSwgMSwgMjUxLCAKKyAgICAzNCwgMjMwLCA2NiwgMTU1LCAxLCAyMzUsIDE0MSwgMTU1LCAxLCAyMjcsIDE2NiwgMjMwLCA2NiwgMTU1LCAxLCAyMzUsIAorICAgIDE0MiwgMjMxLCAyMDcsIDE1NSwgMSwgMjI3LCAxNjUsIDE1NSwgMSwgMjE1LCAxNTYsIDE1NSwgMSwgMjE1LCAxNTcsIDIzMSwgCisgICAgMjA3LCAxNTUsIDEsIDI0OCwgMTM1LCAxNTUsIDEsIDI0OCwgMTM2LCAyMzEsIDIwNywgMTU1LCAxLCAyMjksIDIyOSwgMjMwLCAKKyAgICA2NiwgMTU1LCAxLCAyMTcsIDEwNSwgMTU1LCAxLCAyMTcsIDEwNiwgMjMwLCA2NiwgMTU1LCAxLCAyNDgsIDIyMSwgMTU1LCAKKyAgICAxLCAyNDgsIDIyMiwgMjMxLCAyMDcsIDE1NSwgMSwgMTk3LCAxNTUsIDEsIDE5MCwgMTU1LCAxLCAyMjYsIDkwLCAyMzAsIAorICAgIDY2LCAxNTUsIDEsIDI1MiwgMTkxLCAxNTUsIDEsIDI1MiwgMTkyLCAyMzAsIDY2LCAxNTUsIDEsIDE4NCwgMTU1LCAxLCAKKyAgICAxOTEsIDE1NSwgMSwgMjA1LCAxNTUsIDEsIDIyMywgMTg4LCAyNTQsIDIxMCwgMTU1LCAxLCAyMzMsIDEzNSwgMTU1LCAxLCAKKyAgICAyMTIsIDY1LCAxNTUsIDEsIDIyMiwgMzQsIDIzMCwgNjYsIDE1NSwgMSwgMjIyLCAzNCwgMjMxLCAyMDcsIDE1NSwgMSwgCisgICAgMjA2LCAxNTUsIDEsIDE2MiwgMTU1LCA1LCAyNTAsIDE4OCwgMjE2LCAyNTAsIDE1NSwgMjUsIDUsIDIxNywgNDcsIDE1NSwgCisgICAgMjUsIDUsIDIxNiwgMzUsIDE1NSwgMjUsIDUsIDIxMSwgMTkwLCAxNTUsIDI1LCA1LCAyMTEsIDE5MSwgMjMxLCA2OSwgMTU1LCAKKyAgICAyNSwgNSwgMjE4LCA0NywgMTU1LCAyNSwgNSwgMjE4LCA0OCwgMjMxLCA1NywgMTU1LCAyNSwgNSwgMjE3LCA2NSwgMTU1LCAKKyAgICAyNSwgNSwgMjQ3LCAxOTQsIDIzMCwgNjUsIDE1NSwgMjUsIDUsIDIyNSwgMTg0LCAxNTUsIDExNiwgNSwgMjM0LCAxNTgsIAorICAgIDE1NSwgMTE2LCA1LCAyMjUsIDE5NiwgMTU1LCAxMTYsIDUsIDI1MSwgMTksIDE1NSwgMjI2LCA0MCwgMTU1LCA0MywgMjIzLCAKKyAgICA2OSwgMTU1LCA0NCwgMjIzLCA2OSwgMTU1LCAyMjYsIDc5LCAyNTQsIDExNywgMTU1LCAyMjYsIDc5LCAyMzEsIDIyNCwgCisgICAgMTU1LCAyMjYsIDc5LCAyMzIsIDg4LCAxNTUsIDIyNiwgNzksIDIxMSwgMjM4LCAxNTUsIDIyNiwgNzksIDIyNiwgNDEsIAorICAgIDE1NSwgMjI2LCA3OSwgMjMyLCAyMDUsIDE1NSwgMjI2LCA3OSwgMjMyLCA4MiwgMTU1LCAyMjYsIDc5LCAyNTQsIDI0OSwgCisgICAgMTU1LCAyMjYsIDc5LCAyNTQsIDI1MCwgMjU0LCAyNDksIDE1NSwgMjI2LCA3OSwgMjI1LCA1MSwgMTU1LCAyMTUsIDk0LCAKKyAgICAyMjYsIDc5LCAyMjUsIDUxLCAxNTUsIDIyNiwgMzYsIDE1NSwgMjEsIDIxMCwgODYsIDE1NSwgMjEsIDExMCwgMTU1LCAyMSwgCisgICAgMTA1LCAxNTUsIDIxLCAxNTgsIDE1NSwgMjEsIDE2MSwgMTU1LCAyMSwgMTg5LCAxNTUsIDIxLCAxOTQsIDE1NSwgMjEsIAorICAgIDE5OCwgMTU1LCAyMSwgMTk1LCAxNTUsIDIxLCAyMDAsIDE1NSwgMjI2LCA3OSwgMjE2LCA2OSwgMjE1LCAxMDYsIDE1NSwgCisgICAgMjI2LCA3OSwgMjM1LCAxNjcsIDE3MiwgMSwgNjEsIDE3MiwgMSwgNzMsIDE3MiwgMSwgNzAsIDE3MiwgMSwgNzUsIDE3MiwgCisgICAgMSwgMjU0LCAyMDEsIDE3MiwgMSwgNzYsIDE3MiwgMSwgMTc2LCAxNzIsIDEsIDIzNCwgMTMyLCAxNzIsIDEsIDI0MywgMTM1LCAKKyAgICAxNzIsIDEsIDI0MiwgMjQ5LCAxNzIsIDEsIDIyOCwgMjQ1LCAxNzIsIDEsIDIyOSwgNzcsIDE3MiwgMSwgMjUwLCAxNTcsIAorICAgIDE3MiwgMSwgMjUwLCAxMTIsIDE3MiwgMSwgMjM1LCAxNDEsIDE3MiwgMSwgMjM1LCAxMTQsIDE3MiwgMSwgMjI4LCAyMzUsIAorICAgIDE3MiwgMSwgMjI4LCAyMzcsIDE3MiwgMSwgMjI4LCAyMzYsIDE3MiwgMSwgMjE3LCAxMDUsIDE3MiwgMSwgMjE2LCAyMDgsIAorICAgIDE3MiwgMSwgMjQ4LCAyMjEsIDE3MiwgMSwgMjQ4LCAyNSwgMTcyLCAxLCAyMjcsIDIwNywgMTcyLCAxLCAxOTcsIDE3MiwgMSwgCisgICAgMjQ4LCAxMzUsIDE3MiwgMSwgMTkwLCAxNzIsIDEsIDIyNCwgMjIwLCAxNzIsIDEsIDIyNSwgMTQ3LCAxNzIsIDEsIDI1MiwgCisgICAgMTkxLCAxNzIsIDEsIDI1MiwgMTgsIDE3MiwgMSwgMjMwLCA5NSwgMTcyLCAxLCAxODQsIDE3MiwgMSwgMjUyLCAxMTEsIAorICAgIDE3MiwgMSwgMTkxLCAxNzIsIDEsIDIwNSwgMTcyLCAxLCAyMzMsIDEzNSwgMTcyLCAxLCAyMTQsIDI3LCAxNzIsIDEsIDIxOCwgCisgICAgMjIzLCAxNzIsIDEsIDIwNiwgMTcyLCAxLCAxNjIsIDE3MiwgMjUsIDUsIDI1NSwgNzMsIDE3MiwgMjUsIDUsIDczLCAxNzIsIAorICAgIDI1LCA1LCAyMzYsIDMzLCAxNzIsIDI1LCA1LCAyNDUsIDE5NSwgMTcyLCAyNSwgNSwgNzAsIDE3MiwgMjUsIDUsIDIyNiwgCisgICAgMjM0LCAxNzIsIDI1LCA1LCA3NiwgMTcyLCAyNSwgNSwgMjU0LCAyMDEsIDE3MiwgMjUsIDUsIDI1MywgMTkyLCAxNzIsIDI1LCAKKyAgICA1LCAyMTQsIDIxNCwgMTcyLCAxMTYsIDUsIDE5MSwgMTcyLCAxMTYsIDUsIDIwNSwgMTcyLCAxMTYsIDUsIDIzMywgMTM1LCAKKyAgICAxNzIsIDExNiwgNSwgMjEyLCA2NSwgMTcyLCAxLCA0MCwgMjM1LCAyMywgMTcyLCAxLCA0MCwgMjQzLCAyMDIsIDE3MiwgMSwgCisgICAgNDAsIDIyOSwgNzksIDE3MiwgMTE2LCA1LCA0MCwgMjI5LCA3OSwgMTcyLCAxLCA0MCwgMjUwLCAxNTgsIDE3MiwgMSwgNDAsIAorICAgIDIxNywgMTUyLCAxNzIsIDEsIDQwLCAyMzAsIDI1LCAxNzIsIDEsIDQwLCAyMjYsIDEwNSwgMTcyLCAxLCA0MCwgMjExLCAKKyAgICAxMTcsIDE3MiwgMSwgNDAsIDE1MywgMTcyLCAxLCA0MCwgMTU2LCAxNzIsIDEsIDQwLCAyMTgsIDIyNiwgMTcyLCAxMTYsIDUsIAorICAgIDQwLCAxOTMsIDE3MiwgMTE2LCA1LCA0MCwgMjQyLCA2MCwgMTcyLCAyMSwgMjEwLCA4NiwgMTcyLCAyMSwgMTEwLCAxNzIsIAorICAgIDIxLCAxMDUsIDE3MiwgMjEsIDE1OCwgMTcyLCAyMSwgMTYxLCAxNzIsIDIxLCAxODksIDE3MiwgMjEsIDE5NCwgMTcyLCAyMSwgCisgICAgMTk4LCAxNzIsIDIxLCAxOTUsIDE3MiwgMjEsIDIwMCwgMTcyLCAyMjQsIDE0MSwgMjE4LCAyNTEsIDE3MiwgMjI0LCAxNDEsIAorICAgIDI0OCwgMTc4LCAxNzIsIDIyNCwgMTQxLCA1MiwgMjQ4LCAxNzgsIDE3MiwgMjI0LCAxNDEsIDIxNSwgMjExLCAyNDgsIDE3OCwgCisgICAgNjgsIDEsIDIzNCwgMTI2LCAyNDMsIDEzNSwgNjgsIDEsIDIzNCwgMTI2LCAyNTEsIDMzLCA2OCwgMSwgMjM0LCAxMjYsIAorICAgIDI1MCwgMTU3LCA2OCwgMSwgMjM0LCAxMjYsIDIzNSwgMTQxLCA2OCwgMSwgMjM0LCAxMjYsIDIzNSwgMTE0LCA2OCwgMSwgCisgICAgMjM0LCAxMjYsIDIyNywgMTY1LCA2OCwgMSwgMjM0LCAxMjYsIDIxNSwgMTU2LCA2OCwgMSwgMjM0LCAxMjYsIDIxNSwgMTQ0LCAKKyAgICA2OCwgMSwgMjM0LCAxMjYsIDI0OCwgMTM1LCA2OCwgMSwgMjM0LCAxMjYsIDI0OCwgMTE5LCA2OCwgMSwgMjM0LCAxMjYsIAorICAgIDI0OCwgMjUsIDY4LCAxLCAyMzQsIDEyNiwgMTk3LCA2OCwgMSwgMjM0LCAxMjYsIDIwNiwgNjgsIDEsIDIzNCwgMTI2LCAKKyAgICAxNjIsIDY4LCAxLCAyMzQsIDEyNiwgMjQxLCAxODksIDY4LCAxLCAyMzQsIDEyNiwgMjQ0LCAxOTYsIDY4LCA1OCwgMSwgCisgICAgMjM0LCAxMjYsIDIyMywgMTA5LCA2OCwgMSwgMjM0LCAxMjYsIDIxMSwgMTY1LCA2OCwgMSwgMjM0LCAxMjYsIDIxMCwgMTE2LCAKKyAgICA2OCwgMSwgMjM0LCAxMjYsIDIwNSwgNjgsIDIzMiwgMTQ1LCAyMzQsIDEyNiwgMjI2LCAyNTMsIDY4LCAyMzIsIDE0NSwgCisgICAgMjM0LCAxMjYsIDIyNCwgNDMsIDY4LCAyMzIsIDE0NSwgMjM0LCAxMjYsIDI0MSwgMTIxLCA2OCwgMTYsIDI1NCwgMTkwLCAKKyAgICAyNDUsIDMwLCA2OCwgMTYsIDI1NCwgMTkwLCAxMTAsIDY4LCAxNiwgMjU0LCAxOTAsIDEwNSwgNjgsIDEsIDI1NCwgMTkwLCAKKyAgICAyMDUsIDY4LCA1LCAyMjYsIDIzLCAyMzQsIDIxMywgMjE2LCAzMCwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDI4LCAzOSwgCisgICAgMjA4LCAxLCAxMjUsIDIzNCwgMjgsIDM5LCAyMDgsIDEsIDEyMSwgMjM0LCAxMDUsIDM5LCAyMDgsIDEsIDEyNSwgMjM0LCAKKyAgICAxMDUsIDM5LCAyMDgsIDEsIDEyMSwgMjM0LCAxMTQsIDM5LCAyMDgsIDEsIDEyNSwgMjM0LCAxMTQsIDM5LCAyMDgsIDEsIAorICAgIDEyMSwgMjQyLCAxNzQsIDM5LCAyMDgsIDEsIDEyNSwgMjQyLCAxNzQsIDM5LCAyMDgsIDEsIDEyMSwgMjI5LCA0LCAzOSwgCisgICAgMjA4LCAxLCAxMjUsIDIyOSwgNCwgMzksIDIwOCwgMSwgMTIxLCAyNDksIDIzOCwgMzksIDIwOCwgMSwgMTI1LCAyNDksIAorICAgIDIzOCwgMzksIDIwOCwgMSwgMTIxLCAyNTAsIDg2LCAzOSwgMjA4LCAxLCAxMjUsIDI1MCwgODYsIDM5LCAyMDgsIDEsIDEyMSwgCisgICAgMjE5LCA1OCwgMzksIDIwOCwgMSwgMTI1LCAyMTksIDU4LCAzOSwgMjA4LCAxLCAxMjEsIDIyNywgMTM0LCAzOSwgMjA4LCAxLCAKKyAgICAxMjUsIDIyNywgMTM0LCAzOSwgMjA4LCAxLCAxMjEsIDI0NywgMTQ1LCAzOSwgMjA4LCAxLCAxMjUsIDI0NywgMTQ1LCAzOSwgCisgICAgMjA4LCAxLCAxMjEsIDExMSwgMzksIDIwOCwgMSwgMTI1LCAxMTEsIDM5LCAyMDgsIDEsIDEyMSwgMjE2LCAxNTYsIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjE2LCAxNTYsIDM5LCAyMDgsIDEsIDEyMSwgMjI4LCA3NCwgMzksIDIwOCwgMSwgMTI1LCAyMjgsIAorICAgIDc0LCAzOSwgMjA4LCAxLCAxMjEsIDI1MSwgMjA1LCAzOSwgMjA4LCAxLCAxMjUsIDI1MSwgMjA1LCAzOSwgMjA4LCAxLCAKKyAgICAxMjEsIDIyNSwgMTYsIDM5LCAyMDgsIDEsIDEyNSwgMjI1LCAxNiwgMzksIDIwOCwgMSwgMTIxLCAyMjUsIDEyMSwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMjUsIDEyMSwgMzksIDIwOCwgMSwgMTIxLCAyNDQsIDQzLCAzOSwgMjA4LCAxLCAxMjUsIDI0NCwgCisgICAgNDMsIDM5LCAyMDgsIDEsIDEyMSwgMjMwLCAxNjEsIDM5LCAyMDgsIDEsIDEyNSwgMjMwLCAxNjEsIDM5LCAyMDgsIDEsIAorICAgIDEyMSwgMjEwLCAyNDQsIDM5LCAyMDgsIDEsIDEyNSwgMjEwLCAyNDQsIDM5LCAyMDgsIDEsIDEyMSwgMjIyLCAyMTEsIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjIyLCAyMTEsIDM5LCAyMDgsIDEsIDEyMSwgMjMyLCAxNTYsIDM5LCAyMDgsIDEsIDEyNSwgMjMyLCAKKyAgICAxNTYsIDM5LCAyMDgsIDEsIDEyMSwgMjEzLCAxMzgsIDM5LCAyMDgsIDEsIDEyNSwgMjEzLCAxMzgsIDM5LCAyMDgsIDEsIAorICAgIDEyMSwgMjQxLCA2OCwgMzksIDIwOCwgMSwgMTI1LCAyNDEsIDY4LCAzOSwgMjA4LCAxLCAxMjEsIDc2LCAzOSwgMjA4LCAxLCAKKyAgICAxMjUsIDc2LCAzOSwgMjA4LCAyMzEsIDIwNCwgMjM0LCAyMzAsIDM5LCAyMDgsIDI1LCAyNTUsIDczLCAzOSwgMjA4LCAyNSwgCisgICAgNzMsIDM5LCAyMDgsIDI1LCAyMTQsIDIxNCwgMzksIDIwOCwgMjUsIDcwLCAzOSwgMjA4LCAyNSwgNzUsIDM5LCAyMDgsIDI1LCAKKyAgICA3NiwgMzksIDIwOCwgMjMxLCAyMDQsIDIzNCwgMTA4LCAzOSwgMjA4LCAyNSwgMjQwLCAxMTksIDM5LCAyMDgsIDI1LCAyMTQsIAorICAgIDIxMywgMzksIDIwOCwgMjUsIDIxNCwgMjI5LCAzOSwgMjA4LCAyNSwgMjUzLCAxOTAsIDM5LCAyMDgsIDI1LCAyNTMsIDE2NywgCisgICAgMzksIDIwOCwgMjUsIDI1NCwgMTIzLCAzOSwgMjA4LCAyNSwgMjU0LCAxMzYsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDQsIAorICAgIDI0NSwgMTgwLCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA0LCAyMjcsIDIwNiwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNCwgMjE2LCAKKyAgICAxNTYsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDQsIDIxOSwgNDIsIDM5LCAyMDgsIDE2LCAyMzQsIDEzLCAzOSwgMjA4LCAxNiwgCisgICAgMjI3LCAyMDYsIDM5LCAyMDgsIDE2LCAyMjEsIDI1MywgMzksIDIwOCwgMTYsIDI0MSwgNjksIDI0MSwgNjQsIDM5LCAyMDgsIAorICAgIDE2LCAyMzQsIDIyLCAyMzQsIDIxLCAxODYsIDE4NSwgMSwgNzUsIDE4NiwgMTg1LCAxLCA3NiwgMTg2LCAxODUsIDEsIDI1MCwgCisgICAgMTU3LCAxODYsIDE4NSwgMSwgMjI3LCAxNjUsIDE4NiwgMTg1LCAxLCAyMTUsIDE1NiwgMTg2LCAxODUsIDEsIDIxNSwgMTQ0LCAKKyAgICAxODYsIDE4NSwgMSwgMjQ4LCAxMzUsIDE4NiwgMTg1LCAxLCAyNDgsIDExOSwgMTg2LCAxODUsIDEsIDIyOCwgMTEwLCAxODYsIAorICAgIDE4NSwgMSwgMjIwLCAxMDIsIDE4NiwgMTg1LCAxLCAyMTgsIDIyMywgMTg2LCAxODUsIDI1LCA1LCAyMzYsIDMzLCAxODYsIAorICAgIDE4NSwgMjUsIDUsIDIxNCwgMTE4LCAxODYsIDE4NSwgMjUsIDUsIDI1NSwgMzcsIDE4NiwgMTg1LCAyNSwgNSwgMjUzLCAKKyAgICAxOTIsIDE4NiwgMTg1LCAyNSwgNSwgMjU1LCAzMCwgMTg2LCAxODUsIDI1MCwgMTI1LCAxODYsIDE4NSwgMjU0LCAyMDYsIAorICAgIDIzNCwgOTgsIDE4NiwgMTg1LCAyNTQsIDEwMywgMTg2LCAxODUsIDMsIDIyMywgNzQsIDc4LCAxODYsIDE4NSwgMjExLCAKKyAgICAyMDksIDIyMywgNzQsIDc4LCAxODYsIDE4NSwgMjUsIDUsIDIxMywgMTQ3LCAxODYsIDE4NSwgMjEzLCAxNTIsIDI5LCAzLCAKKyAgICAyMTUsIDEzNywgMjksIDMsIDIxNSwgMTQwLCAyOSwgMywgMjE1LCAxNDMsIDI5LCAzLCAyMTUsIDE0MSwgMjksIDMsIDIxNSwgCisgICAgMTQyLCAyOSwgMywgMjE1LCAxMzksIDI5LCAzLCAyNDgsIDExMywgMjksIDMsIDI0OCwgMTE1LCAyOSwgMywgMjQ4LCAxMTgsIAorICAgIDI5LCAzLCAyNDgsIDExNiwgMjksIDMsIDI0OCwgMTE3LCAyOSwgMywgMjQ4LCAxMTQsIDI5LCAzLCAyNDYsIDI4LCAyOSwgMywgCisgICAgMjQ2LCAzMSwgMjksIDMsIDI0NiwgMzcsIDI5LCAzLCAyNDYsIDM1LCAyOSwgMywgMjQ2LCAzNiwgMjksIDMsIDI0NiwgMjksIAorICAgIDI5LCAzLCAyNTAsIDIwNCwgMjksIDMsIDI1MCwgMTk4LCAyOSwgMywgMjUwLCAyMDAsIDI5LCAzLCAyNTAsIDIwMywgMjksIAorICAgIDMsIDI1MCwgMjAxLCAyOSwgMywgMjUwLCAyMDIsIDI5LCAzLCAyNTAsIDE5OSwgMjksIDMsIDI1MiwgMTExLCAyOSwgMywgCisgICAgMjUyLCA5MCwgMjksIDMsIDI1MiwgMTAyLCAyOSwgMywgMjUyLCAxMTAsIDI5LCAzLCAyNTIsIDEwNSwgMjksIDMsIDI1MiwgCisgICAgMTA2LCAyOSwgMywgMjUyLCA5NCwgMTg2LCAxODUsIDEsIDIzNCwgMTksIDE4NiwgMTg1LCAxLCAyMjEsIDI1MywgMTg2LCAKKyAgICAxODUsIDEsIDIzMywgMTA5LCAxODYsIDE4NSwgMSwgMjMwLCAxNzIsIDE4NiwgMTg1LCAxLCAxOTAsIDE4NiwgMTg1LCAxLCAKKyAgICAxOTcsIDE4NiwgMTg1LCAxLCAyNTAsIDEwMiwgMTg2LCAxODUsIDEsIDIxNiwgOTAsIDE4NiwgMTg1LCAxLCAyMzQsIDEwMSwgCisgICAgMTg2LCAxODUsIDEsIDIyOCwgMjUwLCAxODYsIDE4NSwgMSwgMjE2LCAxNTAsIDE4NiwgMTg1LCAxLCAyMTIsIDYwLCAxODYsIAorICAgIDE4NSwgMSwgMjExLCA2OSwgMTg2LCAxODUsIDEsIDI0MCwgMjE2LCAxODYsIDE4NSwgMSwgMjE0LCAxOTAsIDE4NiwgMTg1LCAKKyAgICAxLCA3MywgMTg2LCAxODUsIDEsIDIyNSwgMTQyLCAxODYsIDE4NSwgMSwgMjUzLCAyMDIsIDE4NiwgMTg1LCAxLCAyNDIsIAorICAgIDE2NywgMTg2LCAxODUsIDEsIDIzNSwgMTEyLCAxODYsIDE4NSwgMSwgMjIzLCAxNjYsIDE4NiwgMTg1LCAxLCAyNTIsIDE5MSwgCisgICAgMTg2LCAxODUsIDEsIDIzNSwgMTAwLCAxODYsIDE4NSwgMSwgMjQ3LCAyMTksIDE4NiwgMTg1LCAxLCAyNDIsIDIyMSwgMTg2LCAKKyAgICAxODUsIDEsIDI0OCwgNSwgMTg2LCAxODUsIDEsIDI1MiwgMTYsIDE4NiwgMTg1LCAxLCAyMzQsIDIwLCAyMzIsIDEyOCwgCisgICAgMTg2LCAxODUsIDEsIDIzMywgMTEwLCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIDIzMCwgMTczLCAyMzIsIDEyOCwgMTg2LCAKKyAgICAxODUsIDEsIDIyNiwgOTAsIDIzMiwgMTI4LCAxODYsIDE4NSwgMSwgMjI5LCAyMjksIDIzMiwgMTI4LCAxODYsIDE4NSwgMSwgCisgICAgMjE2LCA5MSwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAyMjgsIDI1MSwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAyNDAsIAorICAgIDE1NCwgMjMyLCAxMjgsIDE4NiwgMTg1LCAyNSwgNSwgMjI2LCAxOTUsIDE4NiwgMTg1LCAyNSwgNSwgMjM1LCAyNTMsIDE4NiwgCisgICAgMTg1LCAyNSwgNSwgMjU0LCAxMjIsIDE4NiwgMTg1LCAyNSwgNSwgMjExLCAzOCwgMTg2LCAxODUsIDI1LCA1LCAyMTksIDMyLCAKKyAgICAxODYsIDE4NSwgMjUsIDUsIDIxNCwgMTg3LCAxODYsIDE4NSwgMjUsIDUsIDI1MCwgMTIzLCAxODYsIDE4NSwgMjUsIDUsIAorICAgIDIyNywgMTkxLCAxODYsIDE4NSwgMjUwLCAxMjQsIDE4NiwgMTg1LCAyMzIsIDg1LCAyMzUsIDE1MCwgMTg2LCAxODUsIDI1NCwgCisgICAgNDYsIDIzNSwgMTUwLCAxODYsIDE4NSwgMjEsIDIxMCwgODYsIDE4NiwgMTg1LCAyMSwgMTEwLCAxODYsIDE4NSwgMjEsIAorICAgIDEwNSwgMTg2LCAxODUsIDIxLCAxNTgsIDE4NiwgMTg1LCAyMSwgMTYxLCAxODYsIDE4NSwgMjEsIDE4OSwgMTg2LCAxODUsIAorICAgIDIxLCAxOTQsIDE4NiwgMTg1LCAyMSwgMTk4LCAxODYsIDE4NSwgMjEsIDE5NSwgMTg2LCAxODUsIDIxLCAyMDAsIDI0LCAKKyAgICAxNDMsIDIyNywgNzcsIDI0LCAxNDMsIDIyNywgODIsIDI0LCAxNDMsIDIxMCwgMjQzLCAyNCwgMTQzLCAyMTAsIDI0MiwgMjQsIAorICAgIDE0MywgMjEwLCAyNDEsIDI0LCAxNDMsIDIxNSwgMjMsIDI0LCAxNDMsIDIxNSwgMjYsIDI0LCAxNDMsIDIxMCwgMjEwLCAyNCwgCisgICAgMTQzLCAyMTAsIDIwNiwgMjQsIDE0MywgMjQ1LCA1NCwgMjQsIDE0MywgMjQ1LCA1MiwgMjQsIDE0MywgMjQ1LCA1MywgMjQsIAorICAgIDE0MywgMjQ1LCA1MCwgMjQsIDE0MywgMjQwLCAxNDQsIDI0LCAxNDMsIDI0MCwgMTQzLCAyNCwgMTQzLCAyNDAsIDE0MSwgCisgICAgMjQsIDE0MywgMjQwLCAxNDIsIDI0LCAxNDMsIDI0MCwgMTQ3LCAyNCwgMTQzLCAyNDAsIDE0MCwgMjQsIDE0MywgMjQwLCAKKyAgICAxMzksIDI0LCAxNDMsIDI0MCwgMTQ5LCAyNCwgMTQzLCAyNTQsIDMzLCAyNCwgMTQzLCAyNTQsIDMyLCAyNCwgOTAsIDIyOCwgCisgICAgMjE5LCAyNCwgOTAsIDIyOCwgMjI1LCAyNCwgOTAsIDIxOCwgMjA0LCAyNCwgOTAsIDIxOCwgMjAzLCAyNCwgOTAsIDIxNiwgCisgICAgOTYsIDI0LCA5MCwgMjE2LCA5NCwgMjQsIDkwLCAyMTYsIDkzLCAyNCwgOTAsIDIxNiwgOTksIDI0LCA5MCwgMjE2LCAxMDAsIAorICAgIDI0LCA5MCwgMjE2LCA5MiwgMjQsIDkwLCAyMjMsIDUsIDI0LCA5MCwgMjIzLCAyMCwgMjQsIDkwLCAyMTgsIDIxMCwgMjQsIAorICAgIDkwLCAyMjMsIDE3LCAyNCwgOTAsIDIyMywgNywgMjQsIDkwLCAyMjMsIDksIDI0LCA5MCwgMjIyLCAyNTIsIDI0LCA5MCwgCisgICAgMjIyLCAyNTMsIDI0LCA5MCwgMjM0LCAyMTgsIDI0LCA5MCwgMjMwLCAyMTIsIDI0LCA5MCwgMjMwLCAyMDYsIDI0LCA5MCwgCisgICAgMjE4LCAyMTQsIDI0LCA5MCwgMjMwLCAyMDksIDI0LCA5MCwgMjMwLCAyMTUsIDI0LCA5MCwgMjI1LCA3NiwgMjQsIDkwLCAKKyAgICAyMjUsIDg1LCAyNCwgOTAsIDIyNSwgODksIDI0LCA5MCwgMjE4LCAyMTIsIDI0LCA5MCwgMjI1LCA3OSwgMjQsIDkwLCAyMjUsIAorICAgIDkzLCAyNCwgOTAsIDIyNSwgOTQsIDI0LCA5MCwgMjE5LCAxNDAsIDI0LCA5MCwgMjE5LCAxNDMsIDI0LCA5MCwgMjE4LCAKKyAgICAyMDgsIDI0LCA5MCwgMjE4LCAyMDYsIDI0LCA5MCwgMjE5LCAxMzgsIDI0LCA5MCwgMjE5LCAxNDYsIDI0LCA5MCwgMjE5LCAKKyAgICAxNDcsIDI0LCA5MCwgMjE5LCAxMzIsIDI0LCA5MCwgMjE5LCAxNDUsIDI0LCA5MCwgMjI2LCAzMCwgMjQsIDkwLCAyMjYsIAorICAgIDMxLCAyNCwgOTAsIDIxMSwgMjQsIDI0LCA5MCwgMjExLCAyNSwgMjQsIDkwLCAyNTAsIDQ0LCAyNCwgOTAsIDI1MCwgNDMsIAorICAgIDI0LCA5MCwgMjE4LCAyMTksIDI0LCA5MCwgMjI1LCAxMjgsIDI0LCA5MCwgMjI1LCAxMjcsIDksIDE0LCAyMzgsIDI0LCA5LCAKKyAgICAxNCwgMjM4LCAyMywgOSwgMTQsIDIzOCwgMjIsIDksIDE0LCAyMzgsIDIxLCA5LCAxNCwgMjM4LCAyMCwgOSwgMTQsIDIzOCwgCisgICAgMTksIDksIDE0LCAyMzgsIDE4LCA5LCAxNCwgMjM4LCAxNywgOSwgMTQsIDIzOCwgMTYsIDksIDE0LCAyMzgsIDE1LCA5LCAKKyAgICAxNCwgMjM4LCAxNCwgOSwgMTQsIDIzOCwgMTMsIDksIDE0LCAyMzgsIDEyLCA5LCAxNCwgMjM4LCAxMSwgOSwgMTQsIDIzOCwgCisgICAgMTAsIDksIDE0LCAyMzgsIDksIDksIDE0LCAyMzgsIDgsIDksIDE0LCAyMzgsIDcsIDksIDE0LCAyMzgsIDYsIDksIDE0LCAKKyAgICAyMzgsIDUsIDksIDE0LCAyMzgsIDQsIDksIDE0LCAyMzgsIDMsIDksIDE0LCAyMzgsIDIsIDksIDE0LCAyMzgsIDEsIDksIAorICAgIDE0LCAyMzgsIDAsIDksIDE0LCAyMzcsIDI1NSwgOSwgMTQsIDIzNywgMjU0LCA5LCAxNCwgMjM3LCAyNTMsIDksIDE0LCAKKyAgICAyMzcsIDI1MiwgOSwgMTQsIDIzNywgMjUxLCA5LCAxNCwgMjM3LCAyNTAsIDksIDE0LCAyMzcsIDI0OSwgOSwgMTQsIDIzNywgCisgICAgMjQ4LCA5LCAxNCwgMjM3LCAyNDcsIDksIDE0LCAyMzcsIDI0NiwgOSwgMTQsIDIzNywgMjQ1LCA5LCAxNCwgMjM3LCAyNDQsIAorICAgIDksIDE0LCAyMzcsIDI0MywgOSwgMTQsIDIzNywgMjQyLCA5LCAxNCwgMjM3LCAyNDEsIDksIDE0LCAyMzcsIDI0MCwgOSwgCisgICAgMTQsIDIzNywgMjM5LCA5LCAxNCwgMjM3LCAyMzgsIDksIDE0LCAyMzcsIDIzNywgOSwgMTQsIDIzNywgMjM2LCA5LCAxNCwgCisgICAgMjM3LCAyMzUsIDksIDE0LCAyMzcsIDIzNCwgOSwgMTQsIDIzNywgMjMzLCA5LCAxNCwgMjM3LCAyMzIsIDksIDE0LCAyMzcsIAorICAgIDIzMSwgOSwgMTQsIDIzNywgMjMwLCA5LCAxNCwgMjM3LCAyMjksIDksIDE0LCAyMzcsIDIyOCwgOSwgMTQsIDIzNywgMjI3LCAKKyAgICA5LCAxNCwgMjM3LCAyMjYsIDksIDE0LCAyMzcsIDIyNSwgOSwgMTQsIDIzNywgMjI0LCA5LCAxNCwgMjM3LCAyMjMsIDksIAorICAgIDE0LCAyMzcsIDIyMiwgOSwgMTQsIDIzNywgMjIxLCA5LCAxNCwgMjM3LCAyMjAsIDksIDE0LCAyMzcsIDIxOSwgOSwgMTQsIAorICAgIDIzNywgMjE4LCA5LCAxNCwgMjM3LCAyMTcsIDksIDE0LCAyMzcsIDIxNiwgOSwgMTQsIDIzNywgMjE1LCA5LCAxNCwgMjM3LCAKKyAgICAyMTQsIDksIDE0LCAyMzcsIDIxMywgOSwgMTQsIDIzNywgMjEyLCA5LCAxNCwgMjM3LCAyMTEsIDksIDE0LCAyMzcsIDIxMCwgCisgICAgOSwgMTQsIDIzNywgMjA5LCA5LCAxNCwgMjM3LCAyMDgsIDksIDE0LCAyMzcsIDIwNywgOSwgMTQsIDIzNywgMjA2LCA5LCAKKyAgICAxNCwgMjM3LCAyMDUsIDksIDE0LCAyMzcsIDIwNCwgOSwgMTQsIDIzNywgMjAzLCA5LCAxNCwgMjM3LCAyMDIsIDksIDE0LCAKKyAgICAyMzcsIDIwMSwgOSwgMTQsIDIzNywgMjAwLCA5LCAxNCwgMjM3LCAxOTksIDksIDE0LCAyMzcsIDE5OCwgOSwgMTQsIDIzNywgCisgICAgMTk3LCA5LCAxNCwgMjM3LCAxOTYsIDksIDE0LCAyMzcsIDE5NSwgOSwgMTQsIDIzNywgMTk0LCA5LCAxNCwgMjM3LCAxOTMsIAorICAgIDksIDE0LCAyMzcsIDE5MiwgOSwgMTQsIDIzNywgMTkxLCA5LCAxNCwgMjM3LCAxOTAsIDksIDE0LCAyMzcsIDE4OSwgOSwgCisgICAgMTQsIDIzNywgMTg4LCA5LCAxNCwgMjM3LCAxODcsIDksIDE0LCAyMzcsIDE4NiwgOSwgMTQsIDIzNywgMTg1LCA5LCAxNCwgCisgICAgMjM3LCAxODQsIDksIDE0LCAyMzcsIDE4MywgOSwgMTQsIDIzNywgMTgyLCA5LCAxNCwgMjM3LCAxODEsIDksIDE0LCAyMzcsIAorICAgIDE4MCwgOSwgMTQsIDIzNywgMTc5LCA5LCAxNCwgMjM3LCAxNzgsIDksIDE0LCAyMzcsIDE3NywgOSwgMTQsIDIzNywgMTc2LCAKKyAgICA5LCAxNCwgMjM3LCAxNzUsIDksIDE0LCAyMzcsIDE3NCwgOSwgMTQsIDIzNywgMTczLCA5LCAxNCwgMjM3LCAxNzIsIDksIAorICAgIDE0LCAyMzcsIDE3MSwgOSwgMTQsIDIzNywgMTcwLCA5LCAxNCwgMjM3LCAxNjksIDksIDE0LCAyMzcsIDE2OCwgOSwgMTQsIAorICAgIDIzNywgMTY3LCA5LCAxNCwgMjM3LCAxNjYsIDksIDE0LCAyMzcsIDE2NSwgOSwgMTQsIDIzNywgMTY0LCA5LCAxNCwgMjM3LCAKKyAgICAxNjMsIDksIDE0LCAyMzcsIDE2MiwgOSwgMTQsIDIzNywgMTYxLCA5LCAxNCwgMjM3LCAxNjAsIDksIDE0LCAyMzcsIDE1OSwgCisgICAgOSwgMTQsIDIzNywgMTU4LCA5LCAxNCwgMjM3LCAxNTcsIDksIDE0LCAyMzcsIDE1NiwgOSwgMTQsIDIzNywgMTU1LCA5LCAKKyAgICAxNCwgMjM3LCAxNTQsIDksIDE0LCAyMzcsIDE1MywgOSwgMTQsIDIzNywgMTUyLCA5LCAxNCwgMjM3LCAxNTEsIDksIDE0LCAKKyAgICAyMzcsIDE1MCwgOSwgMTQsIDIzNywgMTQ5LCA5LCAxNCwgMjM3LCAxNDgsIDksIDE0LCAyMzcsIDE0NywgOSwgMTQsIDIzNywgCisgICAgMTQ2LCA5LCAxNCwgMjM3LCAxNDUsIDksIDE0LCAyMzcsIDE0NCwgOSwgMTQsIDIzNywgMTQzLCA5LCAxNCwgMjM3LCAxNDIsIAorICAgIDksIDE0LCAyMzcsIDE0MSwgOSwgMTQsIDIzNywgMTQwLCA5LCAxNCwgMjM3LCAxMzksIDksIDE0LCAyMzcsIDEzOCwgOSwgCisgICAgMTQsIDIzNywgMTM3LCA5LCAxNCwgMjM3LCAxMzYsIDksIDE0LCAyMzcsIDEzNSwgOSwgMTQsIDIzNywgMTM0LCA5LCAxNCwgCisgICAgMjM3LCAxMzMsIDksIDE0LCAyMzcsIDEzMiwgOSwgMTQsIDIzNywgMTMxLCA5LCAxNCwgMjM3LCAxMzAsIDksIDE0LCAyMzcsIAorICAgIDEyOSwgOSwgMTQsIDIzNywgMTI4LCA5LCAxNCwgMjM3LCAxMjcsIDksIDE0LCAyMzcsIDEyNiwgOSwgMTQsIDIzNywgMTI1LCAKKyAgICA5LCAxNCwgMjM3LCAxMjQsIDksIDE0LCAyMzcsIDEyMywgOSwgMTQsIDIzNywgMTIyLCA5LCAxNCwgMjM3LCAxMjEsIDksIAorICAgIDE0LCAyMzcsIDEyMCwgOSwgMTQsIDIzNywgMTE5LCA5LCAxNCwgMjM3LCAxMTgsIDksIDE0LCAyMzcsIDExNywgOSwgMTQsIAorICAgIDIzNywgMTE2LCA5LCAxNCwgMjM3LCAxMTUsIDksIDE0LCAyMzcsIDExNCwgOSwgMTQsIDIzNywgMTEzLCA5LCAxNCwgMjM3LCAKKyAgICAxMTIsIDksIDE0LCAyMzcsIDExMSwgOSwgMTQsIDIzNywgMTEwLCA5LCAxNCwgMjM3LCAxMDksIDksIDE0LCAyMzcsIDEwOCwgCisgICAgOSwgMTQsIDIzNywgMTA3LCA5LCAxNCwgMjM3LCAxMDYsIDksIDE0LCAyMzcsIDEwNSwgOSwgMTQsIDIzNywgMTA0LCA5LCAKKyAgICAxNCwgMjM3LCAxMDMsIDksIDE0LCAyMzcsIDEwMiwgOSwgMTQsIDIzNywgMTAxLCA5LCAxNCwgMjM3LCAxMDAsIDksIDE0LCAKKyAgICAyMzcsIDk5LCA5LCAxNCwgMjM3LCA5OCwgOSwgMTQsIDIzNywgOTcsIDksIDE0LCAyMzcsIDk2LCA5LCAxNCwgMjM3LCA5NSwgCisgICAgOSwgMTQsIDIzNywgOTQsIDksIDE0LCAyMzcsIDkzLCA5LCAxNCwgMjM3LCA5MiwgOSwgMTQsIDIzNywgOTEsIDksIDE0LCAKKyAgICAyMzcsIDkwLCA5LCAxNCwgMjM3LCA4OSwgOSwgMTQsIDIzNywgODgsIDksIDE0LCAyMzcsIDg3LCA5LCAxNCwgMjM3LCA4NiwgCisgICAgOSwgMTQsIDIzNywgODUsIDksIDE0LCAyMzcsIDg0LCA5LCAxNCwgMjM3LCA4MywgOSwgMTQsIDIzNywgODIsIDksIDE0LCAKKyAgICAyMzcsIDgxLCA5LCAxNCwgMjM3LCA4MCwgOSwgMTQsIDIzNywgNzksIDksIDE0LCAyMzcsIDc4LCA5LCAxNCwgMjM3LCA3NywgCisgICAgOSwgMTQsIDIzNywgNzYsIDksIDE0LCAyMzcsIDc1LCA5LCAxNCwgMjM3LCA3NCwgOSwgMTQsIDIzNywgNzMsIDksIDE0LCAKKyAgICAyMzcsIDcyLCA5LCAxNCwgMjM3LCA3MSwgOSwgMTQsIDIzNywgNzAsIDksIDE0LCAyMzcsIDY5LCA5LCAxNCwgMjM3LCA2OCwgCisgICAgOSwgMTQsIDIzNywgNjcsIDksIDE0LCAyMzcsIDY2LCA5LCAxNCwgMjM3LCA2NSwgOSwgMTQsIDIzNywgNjQsIDksIDE0LCAKKyAgICAyMzcsIDYzLCA5LCAxNCwgMjM3LCA2MiwgOSwgMTQsIDIzNywgNjEsIDksIDE0LCAyMzcsIDYwLCA5LCAxNCwgMjM3LCA1OSwgCisgICAgOSwgMTQsIDIzNywgNTgsIDksIDE0LCAyMzcsIDU3LCA5LCAxNCwgMjM3LCA1NiwgOSwgMTQsIDIzNywgNTUsIDksIDE0LCAKKyAgICAyMzcsIDU0LCA5LCAxNCwgMjM3LCA1MywgOSwgMTQsIDIzNywgNTIsIDksIDE0LCAyMzcsIDUxLCA5LCAxNCwgMjM3LCA1MCwgCisgICAgOSwgMTQsIDIzNywgNDksIDksIDE0LCAyMzcsIDQ4LCA5LCAxNCwgMjM3LCA0NywgOSwgMTQsIDIzNywgNDYsIDksIDE0LCAKKyAgICAyMzcsIDQ1LCA5LCAxNCwgMjM3LCA0NCwgOSwgMTQsIDIzNywgNDMsIDksIDE0LCAyMzcsIDQyLCA5LCAxNCwgMjM3LCA0MSwgCisgICAgOSwgMTQsIDIzNywgNDAsIDksIDE0LCAyMzcsIDM5LCA5LCAxNCwgMjM3LCAzOCwgOSwgMTQsIDIzNywgMzcsIDksIDE0LCAKKyAgICAyMzcsIDM2LCA5LCAxNCwgMjM3LCAzNSwgOSwgMTQsIDIzNywgMzQsIDksIDE0LCAyMzcsIDMzLCA5LCAxNCwgMjM3LCAzMiwgCisgICAgOSwgMTQsIDIzNywgMzEsIDksIDE0LCAyMzcsIDMwLCA5LCAxNCwgMjM3LCAyOSwgOSwgMTQsIDIzNywgMjgsIDksIDE0LCAKKyAgICAyMzcsIDI3LCA5LCAxNCwgMjM3LCAyNiwgOSwgMTQsIDIzNywgMjUsIDksIDE0LCAyMzcsIDI0LCA5LCAxNCwgMjM3LCAyMywgCisgICAgOSwgMTQsIDIzNywgMjIsIDksIDE0LCAyMzcsIDIxLCA5LCAxNCwgMjM3LCAyMCwgOSwgMTQsIDIzNywgMTksIDksIDE0LCAKKyAgICAyMzcsIDE4LCA5LCAxNCwgMjM3LCAxNywgOSwgMTQsIDIzNywgMTYsIDksIDE0LCAyMzcsIDE1LCA5LCAxNCwgMjM3LCAxNCwgCisgICAgOSwgMTQsIDIzNywgMTMsIDksIDE0LCAyMzcsIDEyLCA5LCAxNCwgMjM3LCAxMSwgOSwgMTQsIDIzNywgMTAsIDksIDE0LCAKKyAgICAyMzcsIDksIDksIDE0LCAyMzcsIDgsIDksIDE0LCAyMzcsIDcsIDksIDE0LCAyMzcsIDYsIDksIDE0LCAyMzcsIDUsIDksIAorICAgIDE0LCAyMzcsIDQsIDksIDE0LCAyMzcsIDMsIDksIDE0LCAyMzcsIDIsIDksIDE0LCAyMzcsIDEsIDksIDE0LCAyMzcsIDAsIAorICAgIDksIDE0LCAyMzYsIDI1NSwgOSwgMTQsIDIzNiwgMjU0LCA5LCAxNCwgMjM2LCAyNTMsIDksIDE0LCAyMzYsIDI1MiwgOSwgCisgICAgMTQsIDIzNiwgMjUxLCA5LCAxNCwgMjM2LCAyNTAsIDksIDE0LCAyMzYsIDI0OSwgOSwgMTQsIDIzNiwgMjQ4LCA5LCAxNCwgCisgICAgMjM2LCAyNDcsIDksIDE0LCAyMzYsIDI0NiwgOSwgMTQsIDIzNiwgMjQ1LCA5LCAxNCwgMjM2LCAyNDQsIDksIDE0LCAyMzYsIAorICAgIDI0MywgOSwgMTQsIDIzNiwgMjQyLCA5LCAxNCwgMjM2LCAyNDEsIDksIDE0LCAyMzYsIDI0MCwgOSwgMTQsIDIzNiwgMjM5LCAKKyAgICA5LCAxNCwgMjM2LCAyMzgsIDksIDE0LCAyMzYsIDIzNywgOSwgMTQsIDIzNiwgMjM2LCA5LCAxNCwgMjM2LCAyMzUsIDksIAorICAgIDE0LCAyMzYsIDIzNCwgOSwgMTQsIDIzNiwgMjMzLCA5LCAxNCwgMjM2LCAyMzIsIDksIDE0LCAyMzYsIDIzMSwgOSwgMTQsIAorICAgIDIzNiwgMjMwLCA5LCAxNCwgMjM2LCAyMjksIDksIDE0LCAyMzYsIDIyOCwgOSwgMTQsIDIzNiwgMjI3LCA5LCAxNCwgMjM2LCAKKyAgICAyMjYsIDksIDE0LCAyMzYsIDIyNSwgOSwgMTQsIDIzNiwgMjI0LCA5LCAxNCwgMjM2LCAyMjMsIDksIDE0LCAyMzYsIDIyMiwgCisgICAgOSwgMTQsIDIzNiwgMjIxLCA5LCAxNCwgMjM2LCAyMjAsIDksIDE0LCAyMzYsIDIxOSwgOSwgMTQsIDIzNiwgMjE4LCA5LCAKKyAgICAxNCwgMjM2LCAyMTcsIDksIDE0LCAyMzYsIDIxNiwgOSwgMTQsIDIzNiwgMjE1LCA5LCAxNCwgMjM2LCAyMTQsIDksIDE0LCAKKyAgICAyMzYsIDIxMywgOSwgMTQsIDIzNiwgMjEyLCA5LCAxNCwgMjM2LCAyMTEsIDksIDE0LCAyMzYsIDIxMCwgOSwgMTQsIDIzNiwgCisgICAgMjA5LCA5LCAxNCwgMjM2LCAyMDgsIDksIDE0LCAyMzYsIDIwNywgOSwgMTQsIDIzNiwgMjA2LCA5LCAxNCwgMjM2LCAyMDUsIAorICAgIDksIDE0LCAyMzYsIDIwNCwgOSwgMTQsIDIzNiwgMjAzLCA5LCAxNCwgMjM2LCAyMDIsIDksIDE0LCAyMzYsIDIwMSwgOSwgCisgICAgMTQsIDIzNiwgMjAwLCA5LCAxNCwgMjM2LCAxOTksIDksIDE0LCAyMzYsIDE5OCwgOSwgMTQsIDIzNiwgMTk3LCA5LCAxNCwgCisgICAgMjM2LCAxOTYsIDksIDE0LCAyMzYsIDE5NSwgOSwgMTQsIDIzNiwgMTk0LCA5LCAxNCwgMjM2LCAxOTMsIDksIDE0LCAyMzYsIAorICAgIDE5MiwgOSwgMTQsIDIzNiwgMTkxLCA5LCAxNCwgMjM2LCAxOTAsIDksIDE0LCAyMzYsIDE4OSwgOSwgMTQsIDIzNiwgMTg4LCAKKyAgICA5LCAxNCwgMjM2LCAxODcsIDksIDE0LCAyMzYsIDE4NiwgOSwgMTQsIDIzNiwgMTg1LCA5LCAxNCwgMjM2LCAxODQsIDksIAorICAgIDE0LCAyMzYsIDE4MywgOSwgMTQsIDIzNiwgMTgyLCA5LCAxNCwgMjM2LCAxODEsIDksIDE0LCAyMzYsIDE4MCwgOSwgMTQsIAorICAgIDIzNiwgMTc5LCA5LCAxNCwgMjM2LCAxNzgsIDksIDE0LCAyMzYsIDE3NywgOSwgMTQsIDIzNiwgMTc2LCA5LCAxNCwgMjM2LCAKKyAgICAxNzUsIDksIDE0LCAyMzYsIDE3NCwgOSwgMTQsIDIzNiwgMTczLCA5LCAxNCwgMjM2LCAxNzIsIDksIDE0LCAyMzYsIDE3MSwgCisgICAgOSwgMTQsIDIzNiwgMTcwLCA5LCAxNCwgMjM2LCAxNjksIDksIDE0LCAyMzYsIDE2OCwgOSwgMTQsIDIzNiwgMTY3LCA5LCAKKyAgICAxNCwgMjM2LCAxNjYsIDksIDE0LCAyMzYsIDE2NSwgOSwgMTQsIDIzNiwgMTY0LCA5LCAxNCwgMjM2LCAxNjMsIDksIDE0LCAKKyAgICAyMzYsIDE2MiwgOSwgMTQsIDIzNiwgMTYxLCA5LCAxNCwgMjM2LCAxNjAsIDksIDE0LCAyMzYsIDE1OSwgOSwgMTQsIDIzNiwgCisgICAgMTU4LCA5LCAxNCwgMjM2LCAxNTcsIDksIDE0LCAyMzYsIDE1NiwgOSwgMTQsIDIzNiwgMTU1LCA5LCAxNCwgMjM2LCAxNTQsIAorICAgIDksIDE0LCAyMzYsIDE1MywgOSwgMTQsIDIzNiwgMTUyLCA5LCAxNCwgMjM2LCAxNTEsIDksIDE0LCAyMzYsIDE1MCwgOSwgCisgICAgMTQsIDIzNiwgMTQ5LCA5LCAxNCwgMjM2LCAxNDgsIDksIDE0LCAyMzYsIDE0NywgOSwgMTQsIDIzNiwgMTQ2LCA5LCAxNCwgCisgICAgMjM2LCAxNDUsIDksIDE0LCAyMzYsIDE0NCwgOSwgMTQsIDIzNiwgMTQzLCA5LCAxNCwgMjM2LCAxNDIsIDksIDE0LCAyMzYsIAorICAgIDE0MSwgOSwgMTQsIDIzNiwgMTQwLCA5LCAxNCwgMjM2LCAxMzksIDksIDE0LCAyMzYsIDEzOCwgOSwgMTQsIDIzNiwgMTM3LCAKKyAgICA5LCAxNCwgMjM2LCAxMzYsIDksIDE0LCAyMzYsIDEzNSwgOSwgMTQsIDIzNiwgMTM0LCA5LCAxNCwgMjM2LCAxMzMsIDksIAorICAgIDE0LCAyMzYsIDEzMiwgOSwgMTQsIDIzNiwgMTMxLCA5LCAxNCwgMjM2LCAxMzAsIDksIDE0LCAyMzYsIDEyOSwgOSwgMTQsIAorICAgIDIzNiwgMTI4LCA5LCAxNCwgMjM2LCAxMjcsIDksIDE0LCAyMzYsIDEyNiwgOSwgMTQsIDIzNiwgMTI1LCA5LCAxNCwgMjM2LCAKKyAgICAxMjQsIDksIDE0LCAyMzYsIDEyMywgOSwgMTQsIDIzNiwgMTIyLCA5LCAxNCwgMjM2LCAxMjEsIDksIDE0LCAyMzYsIDEyMCwgCisgICAgOSwgMTQsIDIzNiwgMTE5LCA5LCAxNCwgMjM2LCAxMTgsIDksIDE0LCAyMzYsIDExNywgOSwgMTQsIDIzNiwgMTE2LCA5LCAKKyAgICAxNCwgMjM2LCAxMTUsIDksIDE0LCAyMzYsIDExNCwgOSwgMTQsIDIzNiwgMTEzLCA5LCAxNCwgMjM2LCAxMTIsIDksIDE0LCAKKyAgICAyMzYsIDExMSwgOSwgMTQsIDIzNiwgMTEwLCA5LCAxNCwgMjM2LCAxMDksIDksIDE0LCAyMzYsIDEwOCwgOSwgMTQsIDIzNiwgCisgICAgMTA3LCA5LCAxNCwgMjM2LCAxMDYsIDksIDE0LCAyMzYsIDEwNSwgOSwgMTQsIDIzNiwgMTA0LCA5LCAxNCwgMjM2LCAxMDMsIAorICAgIDksIDE0LCAyMzYsIDEwMiwgOSwgMTQsIDIzNiwgMTAxLCA5LCAxNCwgMjM2LCAxMDAsIDksIDE0LCAyMzYsIDk5LCA5LCAxNCwgCisgICAgMjM2LCA5OCwgOSwgMTQsIDIzNiwgOTcsIDksIDE0LCAyMzYsIDk2LCA5LCAxNCwgMjM2LCA5NSwgOSwgMTQsIDIzNiwgOTQsIAorICAgIDksIDE0LCAyMzYsIDkzLCA5LCAxNCwgMjM2LCA5MiwgOSwgMTQsIDIzNiwgOTEsIDksIDE0LCAyMzYsIDkwLCA5LCAxNCwgCisgICAgMjM2LCA4OSwgOSwgMTQsIDIzNiwgODgsIDksIDE0LCAyMzYsIDg3LCA5LCAxNCwgMjM2LCA4NiwgOSwgMTQsIDIzNiwgODUsIAorICAgIDksIDE0LCAyMzYsIDg0LCA5LCAxNCwgMjM2LCA4MywgOSwgMTQsIDIzNiwgODIsIDksIDE0LCAyMzYsIDgxLCA5LCAxNCwgCisgICAgMjM2LCA4MCwgOSwgMTQsIDIzNiwgNzksIDksIDE0LCAyMzYsIDc4LCA5LCAxNCwgMjM2LCA3NywgOSwgMTQsIDIzNiwgNzYsIAorICAgIDksIDE0LCAyMzYsIDc1LCA5LCAxNCwgMjM2LCA3NCwgOSwgMTQsIDIzNiwgNzMsIDksIDE0LCAyMzYsIDcyLCA5LCAxNCwgCisgICAgMjM2LCA3MSwgOSwgMTQsIDIzNiwgNzAsIDksIDE0LCAyMzYsIDY5LCA5LCAxNCwgMjM2LCA2OCwgOSwgMTQsIDIzNiwgNjcsIAorICAgIDksIDE0LCAyMzYsIDY2LCA5LCAxNCwgMjM2LCA2NSwgNywgNCwgMjcsIDI0NCwgMTI1LCA3LCA0LCAyNywgMjQ0LCAxMjEsIAorICAgIDcsIDQsIDI3LCAyNDQsIDc2LCA3LCA0LCAyNywgMjQ0LCAxMjQsIDcsIDQsIDI3LCAyNDQsIDEyMywgNywgNCwgMjcsIDE5OSwgCisgICAgMjIyLCA5MiwgMjE3LCAxNTIsIDcsIDQsIDI3LCAyMTgsIDE2OCwgMTUwLCA0LCAyNywgMjMxLCA1OSwgMjI4LCAzOSwgMTUwLCAKKyAgICA0LCAyNywgMjMxLCA1OSwgMjQ1LCAyMTMsIDE1MCwgNCwgMjcsIDIzMSwgNTksIDIzNSwgMjI3LCAxNTAsIDQsIDI3LCAyMTMsIAorICAgIDE4MCwgMjI4LCAzOSwgMTUwLCA0LCAyNywgMjMxLCA1OSwgMjExLCAxNjAsIDk0LCAxLCAyMTAsIDIzNCwgMiwgMjQxLCAKKyAgICAxNTgsIDk0LCAyMjUsIDExLCAyMzUsIDUwLCAyMTQsIDExLCA5NCwgMjcsIDIxMSwgNiwgMjEwLCAyMzQsIDIxMCwgMjM0LCAKKyAgICAyMjUsIDIzOSwgOTQsIDEsIDI1NCwgMTM5LCAyNTMsIDE2MiwgOTQsIDEsIDIxMSwgMjQ3LCAyNTQsIDE3MCwgOTQsIDEsIAorICAgIDIxMSwgMjQ3LCAyNDgsIDE4OSwgOTQsIDEsIDIxMSwgMjQ3LCAyNDEsIDIzOCwgOTQsIDEsIDIxMSwgMjQ3LCAyMzQsIDI1MCwgCisgICAgOTQsIDEsIDIxMSwgMjQ3LCAyMzMsIDk0LCA5NCwgMSwgMjExLCAyNDcsIDQwLCAyMzEsIDY1LCA5NCwgMSwgMjExLCAyNDcsIAorICAgIDIyMywgNjcsIDk0LCAxLCAyMTEsIDI0NywgMjE3LCAzOCwgOTQsIDEsIDI1NCwgMTM5LCA5NiwgNTAsIDk0LCAxLCAyMjAsIAorICAgIDIxLCAyLCAyMjAsIDIxLCAyNDcsIDEyMCwgOTQsIDEsIDIyMCwgMjEsIDIsIDIxOSwgMTU5LCAyNDcsIDEyMCwgOTQsIDEsIAorICAgIDIyMCwgMjEsIDIsIDI0OCwgMjA4LCAyMiwgMjIwLCAyMSwgMjQ3LCAxMjAsIDk0LCAxLCAyMjAsIDIxLCAyLCAyNDgsIDIwOCwgCisgICAgMjIsIDIxOSwgMTU5LCAyNDcsIDEyMCwgOTQsIDEsIDExMiwgMiwgMjI1LCAyMzksIDk0LCAxLCAxMTIsIDIsIDIyNCwgNzYsIAorICAgIDk0LCAxLCAxMTIsIDIsIDIzMSwgMTcxLCA5NCwgMSwgMjUyLCAyOSwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyNDIsIDIwMiwgMiwgCisgICAgMjQ4LCAyMDcsIDk0LCAxLCAyNDgsIDE5MCwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyNDEsIDIzOSwgMiwgMjMxLCAxNzEsIDk0LCAKKyAgICAxLCAyMTQsIDQsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjEwLCA5OCwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMTYsIDIzMSwgMiwgCisgICAgMjQ4LCAyMDcsIDk0LCAxLCAyMTAsIDIzNCwgMiwgMjQ4LCAyMDcsIDk0LCAxLCA0MCwgMjM0LCAyNTEsIDIsIDI0OCwgMjA3LCAKKyAgICA5NCwgMSwgMjM0LCAyNTEsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjMzLCA5NSwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMzEsIAorICAgIDY2LCAyLCAyNDgsIDIwNywgOTQsIDEsIDIyNywgMTk1LCAyLCAyNDgsIDIwNywgOTQsIDEsIDIyMSwgMjUwLCAyLCAyNDgsIAorICAgIDIwNywgOTQsIDEsIDQwLCAyMjUsIDIyMiwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMjUsIDIyMiwgMiwgMjQ4LCAyMDcsIDk0LCAKKyAgICAxLCAyMTUsIDE4MCwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMjQsIDQwLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIyMywgNjgsIDIsIAorICAgIDI0OCwgMjA3LCA5NCwgMSwgMjIwLCAyMSwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMTcsIDM5LCAyLCAyNDgsIDIwNywgOTQsIAorICAgIDEsIDIxNCwgNCwgMiwgMjQxLCA2MSwgOTQsIDEsIDI1MiwgMjksIDIsIDIyMywgMTY5LCA5NCwgMSwgMjM0LCAyNTEsIDIsIAorICAgIDIyMywgMTY5LCA5NCwgMSwgMjI1LCAyMjIsIDIsIDIyMywgMTY5LCA5NCwgMjcsIDExMiwgMjMzLCA5NCwgMTAsIDEsIDExMiwgCisgICAgMjEyLCA0NywgNTMsIDE3LCAxMCwgMSwgMTEyLCAyMTIsIDQ3LCA0MCwgMTcsIDEwLCAxLCAyNTIsIDY1LCA1MywgMTcsIDEwLCAKKyAgICAxLCAyNTIsIDY1LCA0MCwgMTcsIDEwLCAxLCAyNTIsIDY1LCA2NSwgMTcsIDEwLCAxLCAyNTIsIDY1LCAxNDcsIDE3LCAxMCwgCisgICAgMSwgMjI1LCAyMDYsIDUzLCAxNywgMTAsIDEsIDIyNSwgMjA2LCA0MCwgMTcsIDEwLCAxLCAyMjUsIDIwNiwgNjUsIDE3LCAKKyAgICAxMCwgMSwgMjI1LCAyMDYsIDE0NywgMTcsIDEwLCAxLCAyNTIsIDUzLCA1MywgMTcsIDEwLCAxLCAyNTIsIDUzLCA0MCwgMTcsIAorICAgIDEwLCAxLCAyNTIsIDUzLCA2NSwgMTcsIDEwLCAxLCAyNTIsIDUzLCAxNDcsIDE3LCAxMCwgMSwgMjE1LCAxNDcsIDUzLCAxNywgCisgICAgMTAsIDEsIDIxNSwgMTQ3LCA0MCwgMTcsIDEwLCAxLCAyMTUsIDE0NywgNjUsIDE3LCAxMCwgMSwgMjE1LCAxNDcsIDE0NywgCisgICAgMTcsIDEwLCAxLCAyMTcsIDYsIDUzLCAxNywgMTAsIDEsIDIxNywgNiwgNDAsIDE3LCAxMCwgMSwgMjE3LCA2LCA2NSwgMTcsIAorICAgIDEwLCAxLCAyMTcsIDYsIDE0NywgMTcsIDEwLCAxLCAyMTUsIDE0OSwgNTMsIDE3LCAxMCwgMSwgMjE1LCAxNDksIDQwLCAxNywgCisgICAgMTAsIDEsIDIxNSwgMTQ5LCA2NSwgMTcsIDEwLCAxLCAyMTUsIDE0OSwgMTQ3LCAxNywgMTAsIDEsIDIxMywgMjQ5LCA1MywgCisgICAgMTcsIDEwLCAxLCAyMTMsIDI0OSwgNDAsIDE3LCAxMCwgMSwgMjEzLCAyNDksIDY1LCAxNywgMTAsIDEsIDIxMywgMjQ5LCAKKyAgICAxNDcsIDE3LCAxMCwgMSwgMjI1LCAyMDQsIDUzLCAxNywgMTAsIDEsIDIyNSwgMjA0LCA0MCwgMTcsIDEwLCAxLCAyMjUsIAorICAgIDIwNCwgNjUsIDE3LCAxMCwgMSwgMjI1LCAyMDQsIDE0NywgMTcsIDEwLCAxLCAyNDYsIDQ0LCA1MywgMTcsIDEwLCAxLCAKKyAgICAyNDYsIDQ0LCA0MCwgMTcsIDEwLCAxLCAyNDYsIDQ0LCA2NSwgMTcsIDEwLCAxLCAyNDYsIDQ0LCAxNDcsIDE3LCAxMCwgMSwgCisgICAgMjI3LCAxNTQsIDUzLCAxNywgMTAsIDEsIDIyNywgMTU0LCA0MCwgMTcsIDEwLCAxLCAyMjcsIDE1NCwgNjUsIDE3LCAxMCwgCisgICAgMSwgMjI3LCAxNTQsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDI3LCA1MywgMTcsIDEwLCAxLCAyMTcsIDI3LCA0MCwgMTcsIDEwLCAKKyAgICAxLCAyMTcsIDI3LCA2NSwgMTcsIDEwLCAxLCAyMTcsIDI3LCAxNDcsIDE3LCAxMCwgMSwgMjE3LCAyNSwgNTMsIDE3LCAxMCwgCisgICAgMSwgMjE3LCAyNSwgNDAsIDE3LCAxMCwgMSwgMjE3LCAyNSwgNjUsIDE3LCAxMCwgMSwgMjE3LCAyNSwgMTQ3LCAxNywgMTAsIAorICAgIDEsIDI0OCwgMTMzLCA1MywgMTcsIDEwLCAxLCAyNDgsIDEzMywgNDAsIDE3LCAxMCwgMSwgMjQ4LCAyMDIsIDUzLCAxNywgCisgICAgMTAsIDEsIDI0OCwgMjAyLCA0MCwgMTcsIDEwLCAxLCAyNDYsIDcxLCA1MywgMTcsIDEwLCAxLCAyNDYsIDcxLCA0MCwgMTcsIAorICAgIDEwLCAxLCAyNDgsIDEzMSwgNTMsIDE3LCAxMCwgMSwgMjQ4LCAxMzEsIDQwLCAxNywgMTAsIDEsIDIzNSwgMTIxLCA1MywgCisgICAgMTcsIDEwLCAxLCAyMzUsIDEyMSwgNDAsIDE3LCAxMCwgMSwgMjIyLCAxNzIsIDUzLCAxNywgMTAsIDEsIDIyMiwgMTcyLCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMzQsIDE3NSwgNTMsIDE3LCAxMCwgMSwgMjM0LCAxNzUsIDQwLCAxNywgMTAsIDEsIDIzNCwgCisgICAgMTc1LCA2NSwgMTcsIDEwLCAxLCAyMzQsIDE3NSwgMTQ3LCAxNywgMTAsIDEsIDI0MywgMTIzLCA1MywgMTcsIDEwLCAxLCAKKyAgICAyNDMsIDEyMywgNDAsIDE3LCAxMCwgMSwgMjQzLCAxMjMsIDY1LCAxNywgMTAsIDEsIDI0MywgMTIzLCAxNDcsIDE3LCAxMCwgCisgICAgMSwgMjQyLCAxMDIsIDUzLCAxNywgMTAsIDEsIDI0MiwgMTAyLCA0MCwgMTcsIDEwLCAxLCAyNDIsIDEwMiwgNjUsIDE3LCAKKyAgICAxMCwgMSwgMjQyLCAxMDIsIDE0NywgMTcsIDEwLCAxLCAyMjksIDMsIDUzLCAxNywgMTAsIDEsIDIyOSwgMywgNDAsIDE3LCAKKyAgICAxMCwgMSwgMjI5LCAzLCA2NSwgMTcsIDEwLCAxLCAyMjksIDMsIDE0NywgMTcsIDEwLCAxLCAyMjgsIDYzLCAyNDIsIDIxOSwgCisgICAgNTMsIDE3LCAxMCwgMSwgMjI4LCA2MywgMjQyLCAyMTksIDQwLCAxNywgMTAsIDEsIDIyMiwgMjE1LCA1MywgMTcsIDEwLCAxLCAKKyAgICAyMjIsIDIxNSwgNDAsIDE3LCAxMCwgMSwgMjIyLCAyMTUsIDY1LCAxNywgMTAsIDEsIDIyMiwgMjE1LCAxNDcsIDE3LCAxMCwgCisgICAgMSwgMjQxLCAyMTksIDIsIDc5LCA3NywgNTMsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDIsIDc5LCA3NywgNDAsIDE3LCAxMCwgCisgICAgMSwgMjQxLCAyMTksIDI0MiwgMTcyLCA1MywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMjQyLCAxNzIsIDQwLCAxNywgMTAsIDEsIAorICAgIDI0MSwgMjE5LCAyNDIsIDE3MiwgNjUsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDI0MiwgMTcyLCAxNDcsIDE3LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDI0NywgMTQyLCA1MywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMjQ3LCAxNDIsIDQwLCAxNywgMTAsIDEsIAorICAgIDI0MSwgMjE5LCAyNDcsIDE0MiwgNjUsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDI0NywgMTQyLCAxNDcsIDE3LCAxMCwgMSwgCisgICAgNzksIDI1MiwgMTMzLCA1MywgMTcsIDEwLCAxLCA3OSwgMjUyLCAxMzMsIDQwLCAxNywgMTAsIDEsIDc5LCAyNTIsIDEzMywgCisgICAgMiwgMjAyLCA3NywgNTMsIDE3LCAxMCwgMSwgNzksIDI1MiwgMTMzLCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAxNiwgNTksIAorICAgIDQ4LCAxMCwgMTYsIDU5LCA1MSwgMTAsIDE2LCAxMTMsIDE3MCwgNDgsIDEwLCAxNiwgMTEzLCAxNzAsIDUxLCAxMCwgMTYsIAorICAgIDEzNCwgMTcwLCA0OCwgMTAsIDE2LCAxMzQsIDE3MCwgNTEsIDEwLCAxNiwgMTM0LCAxNzAsIDIyNSwgNywgMjQ2LCAxMDQsIAorICAgIDQ4LCAxMCwgMTYsIDEzNCwgMTcwLCAyMjUsIDcsIDI0NiwgMTA0LCA1MSwgMTAsIDE2LCAyNDQsIDExLCAxNzAsIDQ4LCAxMCwgCisgICAgMTYsIDI0NCwgMTEsIDE3MCwgNTEsIDEwLCAxNiwgNTIsIDY3LCAyNTIsIDE0MSwgNTEsIDEwLCAxNiwgMTEzLCAxNzAsIAorICAgIDIxMywgMTg5LCA0OCwgMTAsIDE2LCAxMTMsIDE3MCwgMjEzLCAxODksIDUxLCAxMCwgMTYsIDIyMiwgMjMzLCAxMCwgMTYsIAorICAgIDQsIDIxNywgODEsIDQ4LCAxMCwgMTYsIDQsIDIxNywgODEsIDUxLCAxMCwgMSwgMjI5LCA4MCwgNTMsIDE3LCAxMCwgMSwgCisgICAgMjI5LCA4MCwgNDAsIDE3LCAxMCwgMSwgMjI5LCA4MCwgNjUsIDE3LCAxMCwgMSwgMjI5LCA4MCwgMTQ3LCAxNywgMTAsIDEsIAorICAgIDEwNCwgNTMsIDE3LCAxMCwgMSwgMTA0LCA0MCwgMTcsIDEwLCAxLCAyMjYsIDIzNSwgNTMsIDE3LCAxMCwgMSwgMjI2LCAKKyAgICAyMzUsIDQwLCAxNywgMTAsIDEsIDIxMCwgMjEzLCA1MywgMTcsIDEwLCAxLCAyMTAsIDIxMywgNDAsIDE3LCAxMCwgMSwgCisgICAgMTA0LCAyLCAyMDIsIDc3LCA1MywgMTcsIDEwLCAxLCAyMTQsIDAsIDUzLCAxNywgMTAsIDEsIDIxNCwgMCwgNDAsIDE3LCAKKyAgICAxMCwgMSwgMjM0LCA3MywgMjI2LCAyMzUsIDUzLCAxNywgMTAsIDEsIDIzNCwgNzMsIDIyNiwgMjM1LCA0MCwgMTcsIDEwLCAKKyAgICAxLCAyMzQsIDczLCAyMTAsIDIxMywgNTMsIDE3LCAxMCwgMSwgMjM0LCA3MywgMjEwLCAyMTMsIDQwLCAxNywgMTAsIDEsIAorICAgIDE2MCwgNTMsIDE3LCAxMCwgMSwgMTYwLCA0MCwgMTcsIDEwLCAxLCAxNjAsIDY1LCAxNywgMTAsIDEsIDE2MCwgMTQ3LCAxNywgCisgICAgMTAsIDEsIDIxNCwgMjA3LCAyMzQsIDE4NiwgMjM0LCA3MywgMTEyLCAyMzEsIDE5MywgNjUsIDE3LCAxMCwgMSwgMjE0LCAKKyAgICAyMDcsIDIzNCwgMTg2LCAyMzQsIDczLCAxMTIsIDIzMSwgMTkzLCAxNDcsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAKKyAgICAyLCAxMTIsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTEyLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIAorICAgIDIwMiwgNzcsIDIsIDI1NCwgMjQ0LCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDI1NCwgMjQ0LCA0MCwgCisgICAgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIxMiwgMzEsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgCisgICAgMiwgMjEyLCAzMSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxMDQsIDUzLCAxNywgMTAsIDI3LCA3OSwgCisgICAgMiwgMjAyLCA3NywgMiwgMTA0LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIyNiwgMjM1LCA1MywgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIyNiwgMjM1LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIAorICAgIDIxMCwgMjEzLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIxMCwgMjEzLCA0MCwgMTcsIDEwLCAyNywgCisgICAgNzksIDIsIDIwMiwgNzcsIDIsIDE2MCwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxNjAsIDQwLCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTYwLCA2NSwgMTcsIDEwLCAyNywgMjE0LCAyMDcsIDIzNCwgNzMsIDc5LCAyLCAKKyAgICAyMDIsIDc3LCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjE0LCAyMDcsIDIzNCwgNzMsIDc5LCAyLCAyMDIsIAorICAgIDc3LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE0LCAyMDcsIDIzNCwgNzMsIDc5LCAyLCAyMDIsIDc3LCAKKyAgICAyLCAxMTIsIDIzMSwgMTkzLCA2NSwgMTcsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDUzLCAxNywgMTAsIDEsIDI0NCwgMTY4LCAKKyAgICA3OSwgNDAsIDE3LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCA2NSwgMTcsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDE0NywgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxMjIsIAorICAgIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgCisgICAgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIAorICAgIDI1MiwgNTUsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDI1MiwgCisgICAgNTUsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAKKyAgICAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIAorICAgIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMzQsIAorICAgIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDExMiwgMjMxLCAKKyAgICAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDE1MSwgNTMsIAorICAgIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCAxMTIsIDIzMSwgMTkzLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMTUxLCAyLCAxMjIsIDUzLCAxNywgMTAsIAorICAgIDI3LCAxNTEsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMTIyLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAxMjIsIDIsIDY2LCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCAxMjIsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTUxLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjIxLCAxNjcsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIyMiwgMjcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgCisgICAgMjE3LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyNDgsIAorICAgIDIxNywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCAKKyAgICA2NiwgNTMsIDE3LCAxMCwgMjcsIDIxMCwgMTEyLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCAxNTEsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgMTUxLCA1MywgCisgICAgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDE1MSwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgMjM0LCAxMzAsIDUzLCAxNywgCisgICAgMTAsIDI3LCAyNDQsIDE0MywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgMTEyLCAyMzEsIDE5MywgNTMsIAorICAgIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDEyMiwgNTMsIDE3LCAxMCwgCisgICAgMjcsIDIyNCwgODIsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDIyNCwgODIsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDExMiwgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIzNCwgMjUxLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjM0LCAKKyAgICAyNTEsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDIzMywgMTAzLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjM0LCAyNTEsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIAorICAgIDI3LCAyMzQsIDI1MSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjMzLCAxMDMsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIzMywgMTAzLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAKKyAgICAyNywgMjMzLCAxMDMsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCAKKyAgICAxMjIsIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgNjYsIDUzLCAxNywgCisgICAgMTAsIDI3LCA2NiwgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIyOCwgNjMsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIyOCwgCisgICAgNjMsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAKKyAgICAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyNDEsIAorICAgIDIxOSwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjQxLCAyMTksIAorICAgIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgCisgICAgMTUxLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgCisgICAgNzksIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjE2LCAyMDMsIDIsIDIxOCwgMjMsIDExMiwgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIyMywgOTYsIDIsIDIxOCwgMjMsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDExMiwgMjMxLCAxOTMsIDIsIDIxOCwgMjMsIDExMiwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDI0OCwgMTgzLCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgMjM0LCAKKyAgICAyMDQsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyNDQsIDE2NiwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIAorICAgIDI0OCwgMTg1LCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgMjM0LCAyMDYsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAKKyAgICAyLCAyMTgsIDIzLCAxMTIsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA2NiwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgCisgICAgNzcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNzksIDQwLCAxNywgMTAsIAorICAgIDI3LCAyNTIsIDU1LCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMjEwLCAxMDksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyNTIsIDU1LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDIyOCwgNjMsIDQwLCAxNywgMTAsIAorICAgIDI3LCAyNTIsIDU1LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgNzksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDgsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgCisgICAgMjcsIDIxNywgOCwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNzksIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMTYsIDE5MywgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIxNiwgMTkzLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCAyMjgsIDYzLCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjE2LCAxOTMsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCA3OSwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCAKKyAgICA3OSwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMTIsIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjMzLCAKKyAgICAxMDMsIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTEyLCAKKyAgICAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAKKyAgICA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIAorICAgIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNjYsIDIsIDExMiwgNDAsIDE3LCAxMCwgMjcsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDIyOCwgNjMsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIyOCwgNjMsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgCisgICAgMjcsIDIyOCwgNjMsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDExMiwgMjMxLCAxOTMsIDIsIDIxOCwgMjMsIDExMiwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMjMsIDk2LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIxMCwgMTA5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDY2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgNzksIDIsIDIyOCwgNjMsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIAorICAgIDc5LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgCisgICAgMjAyLCA3NywgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAKKyAgICAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDI0MSwgMjE5LCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMTIyLCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjUyLCA1NSwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDI1MiwgNTUsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyMTcsIDgsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMTcsIAorICAgIDgsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAKKyAgICAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMTUxLCAyLCA2NiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDEyMiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgCisgICAgMTMwLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgCisgICAgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAKKyAgICAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIAorICAgIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgCisgICAgNjYsIDY1LCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDEyMiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCA2NiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIxMCwgMTEyLCAyLCA2NiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDI1NCwgMTk3LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNjYsIDY1LCAxNywgMTAsIAorICAgIDI3LCAyNDIsIDI0NSwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjQ0LCAxNDMsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyNDQsIAorICAgIDE0MywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjQsIAorICAgIDgyLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAKKyAgICAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDIzNCwgCisgICAgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDIzMywgMTAzLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIAorICAgIDY2LCA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMjIsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgNjYsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCA2NiwgMiwgMTUxLCA2NSwgCisgICAgMTcsIDEwLCAyNywgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIAorICAgIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIAorICAgIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgCisgICAgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCAKKyAgICAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgMjE4LCAKKyAgICAyMywgMTEyLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCA3OSwgCisgICAgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgNzksIAorICAgIDIsIDIwMiwgNzcsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDI1MiwgNTUsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjE3LCA4LCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjE2LCAxOTMsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMjEsIDE2NywgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIwLCA2MCwgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDIzMywgMTAzLCAxNDcsIAorICAgIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgNjYsIDE0NywgMTcsIAorICAgIDEwLCAyNywgMjI4LCA2MywgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMjQxLCAyMTksIDE0NywgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDc5LCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAKKyAgICAyMjAsIDk0LCAyLCAyNDQsIDE2NiwgMTQ3LCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyNDgsIDE4NSwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMjAsIDk0LCAyLCAyMzQsIDIwNiwgMTQ3LCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgCisgICAgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgMTEyLCAyMzEsIDE5MywgCisgICAgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCAxMTIsIDIzMSwgCisgICAgMTkzLCA1MywgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDExMiwgCisgICAgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAxMjIsIDIsIAorICAgIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAxMjIsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMTUxLCAyLCAxMTIsIAorICAgIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMTUxLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCAxMTIsIAorICAgIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgCisgICAgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIAorICAgIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjAsIAorICAgIDYwLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAKKyAgICAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgCisgICAgMjIzLCA5NiwgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMjMsIDk2LCA1MywgMTcsIDEwLCAyNywgMjIyLCAyNywgCisgICAgMiwgMjIzLCA5NiwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMjMsIDk2LCA1MywgMTcsIDEwLCAyNywgMjE3LCAKKyAgICA4MSwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgCisgICAgMjU0LCAxOTcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNzksIDQwLCAxNywgMTAsIAorICAgIDI3LCAyNDIsIDI0NSwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMTIyLCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDE1MSwgMiwgNzksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMzQsIDEzMCwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCA3OSwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIAorICAgIDc5LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTUxLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMjM0LCAxMzAsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIyMCwgNjAsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjIzLCA5NiwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMjIzLCA5NiwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDIyMCwgNjAsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDY1LCAxNywgMTAsIAorICAgIDI3LCAyMjEsIDE2NywgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDE1MSwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMjEsIDE2NywgMiwgMTIyLCAxNDcsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMzQsIDEzMCwgMTQ3LCAxNywgCisgICAgMTAsIDI3LCAyMjAsIDYwLCAyLCAxNTEsIDE0NywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMCwgNjAsIDIsIDIzNCwgMTMwLCAxNDcsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIxMCwgMTEyLCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCAxMTIsIDIsIDI0NCwgMTY0LCA0MCwgMTcsIDEwLCAyNywgCisgICAgMTEyLCAyLCAyNDQsIDE2NCwgNTMsIDE3LCAyMjYsIDE0NiwgNDMsIDIyNiwgMywgMjI2LCAxNDYsIDQ0LCAyMjYsIDMsIDEwLCAKKyAgICAyNywgMjE3LCA4LCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMjIsIDIsIDE1MSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTIyLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDEyMiwgMiwgCisgICAgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgCisgICAgMiwgNjYsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIAorICAgIDIxNywgOCwgMiwgNjYsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMTUxLCAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIAorICAgIDEwLCAyNywgMTUxLCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMTIyLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgCisgICAgMTAsIDI3LCAxMjIsIDIsIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDEyMiwgCisgICAgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDE1MSwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAKKyAgICAxNjcsIDIsIDE1MSwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgMiwgMTIyLCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIAorICAgIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgCisgICAgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMTIyLCAyLCAxMjIsIDQwLCAxNywgMTAsIDI3LCAKKyAgICAyMjIsIDI3LCAyLCAxMjIsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDIsIDY2LCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCAKKyAgICAyLCAyMzQsIDEzMCwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIAorICAgIDIyMCwgNjAsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDI0OCwgMjE3LCAyLCAxMjIsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMjM0LCAKKyAgICAxMzAsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIAorICAgIDIxNywgODEsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjE3LCA4MSwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNjYsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDE1MSwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNjYsIDIsIAorICAgIDY2LCA0MCwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCAKKyAgICA2NiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIAorICAgIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDY2LCAyLCAxMTIsIDIzMSwgCisgICAgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDI0NCwgCisgICAgMTQzLCAyLCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDEyMiwgMiwgNjYsIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAKKyAgICAxMjIsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCAyLCAxNTEsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCAyLCAxNTEsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMjM0LCAxMzAsIAorICAgIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIzMywgCisgICAgMTAzLCAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIAorICAgIDI3LCA2NiwgMiwgMTIyLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCA2NiwgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDY2LCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNjYsIDIsIDE1MSwgMiwgMTIyLCA2NSwgMTcsIDEwLCAKKyAgICAyNywgNjYsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCA2NiwgMiwgMjM0LCAxMzAsIDIsIDE1MSwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCA2NiwgMiwgMTUxLCAyLCAyMzQsIDEzMCwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA2NiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDY2LCAKKyAgICAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAKKyAgICAyLCAxMjIsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDY2LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgMiwgMTEyLCAKKyAgICAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIAorICAgIDIsIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDc5LCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAyMzQsIDEzMCwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDE1MSwgMiwgCisgICAgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjM0LCAxMzAsIDIsIDc5LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjE3LCA4LCAyLCAyMzQsIDEzMCwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNjYsIAorICAgIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIAorICAgIDE1MSwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMTUxLCAyLCAxMjIsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgCisgICAgMTAsIDI3LCAxNTEsIDIsIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIzNCwgCisgICAgMTMwLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMTIyLCAyLCA3OSwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDY2LCAKKyAgICAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDE1MSwgMiwgCisgICAgNzksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNjYsIDIsIDY2LCAyLCA3OSwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDEyMiwgCisgICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIAorICAgIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgCisgICAgMjM0LCAyNTEsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgMiwgMTIyLCA2NSwgMTcsIAorICAgIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDIsIDY2LCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIAorICAgIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCAxMjIsIDQwLCAxNywgMTAsIDI3LCAxNTEsIDIsIAorICAgIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAxMjIsIDIsIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgCisgICAgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyNTIsIAorICAgIDU1LCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDI1NCwgMTk3LCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgNjYsIDIsIDY2LCA2NSwgCisgICAgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIzNCwgMTMwLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIAorICAgIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjIsIDQsIDIxNCwgMTI4LCAyNTMsIDIzOCwgMjM0LCA0LCAyMTgsIDEzMCwgCisgICAgNSwgNTMsIDE3LCAxMCwgMjcsIDIyNCwgNzgsIDIxNCwgMTI4LCAyNTMsIDIzOCwgMjM0LCA0LCAyMTgsIDEzMCwgNSwgNTMsIAorICAgIDE3LCAxMCwgMjcsIDI1NCwgMTUzLCA1MywgMTcsIDEwLCAyNywgMjU0LCAxODMsIDUzLCAxNywgMTAsIDI3LCAyMzAsIDE1MywgCisgICAgNTMsIDE3LCAxMCwgMjcsIDIyMiwgNSwgNTMsIDE3LCAxMCwgMjcsIDIyMywgMTQzLCA1MywgMTcsIDEwLCAyNywgMjU0LCAKKyAgICAxNzIsIDUzLCAxNywgMTAsIDI3LCAyMTIsIDQ5LCA1MywgMTcsIDEwLCAyNywgMjIyLCA0LCA1MywgMTcsIDEwLCAyNywgCisgICAgMjIyLCAzLCAyNTQsIDE3MiwgMjEyLCA0OCwgMTAsIDI3LCAyMzUsIDEzNCwgMjIzLCAzNCwgNTAsIDEwLCAyNywgMjUxLCAKKyAgICAyMzAsIDI1NCwgMzksIDI1NCwgNDAsIDQ1LCAyMjEsIDE1NiwgNDUsIDIyMSwgNDUsIDQ1LCAyMjAsIDIzMywgNDUsIDIyMCwgCisgICAgMjIyLCA0NSwgMjIwLCAyMTEsIDQ1LCAyMjAsIDIwMCwgNDUsIDIyMCwgMTg5LCA0NSwgMjIwLCAxNzgsIDQ1LCAyMjAsIAorICAgIDE2NywgNDUsIDIyMSwgMTU1LCA0NSwgMjIxLCAxNDQsIDQ1LCAyMjEsIDEzMywgNDUsIDIyMSwgMTIyLCA0NSwgMjIxLCAKKyAgICAxMTEsIDQ1LCAyMjEsIDEwMCwgNDUsIDIyMSwgODksIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0OSwgMjE5LCAyMjQsIAorICAgIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAxMDksIDI0OSwgMjE5LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAxMDksIDI0MywgCisgICAgMjI5LCAyMTgsIDEyOSwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ5LCAyMjYsIDIyNCwgMTk0LCAyNDQsIDIwLCAKKyAgICAzMSwgNjcsIDIyMCwgMTUwLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyNDUsIDMxLCA3OCwgMjI0LCAxOTQsIDI0NCwgCisgICAgMjAsIDMxLCA2NywgMjI0LCAxMywgNzgsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCA3MSwgMjMzLCAyMCwgMTI3LCAKKyAgICAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgNzEsIDIzMywgMjAsIDI1MSwgMTU2LCAyMjQsIDE5NCwgMjQ0LCAyMCwgCisgICAgMzEsIDY3LCAyMDMsIDI0NSwgMTYzLCAzOCwgMjcsIDQzLCAyNDIsIDI3LCAzOCwgMjcsIDQ0LCAyNDIsIDI3LCAzOCwgNTIsIAorICAgIDIxNiwgODksIDQzLCAyNDIsIDI3LCAzOCwgNTIsIDIxNiwgODksIDQ0LCAyNDIsIDI3LCAzOCwgMjMxLCAyMzMsIDQzLCAKKyAgICAyNDIsIDI3LCAzOCwgMjMxLCAyMzMsIDQ0LCAyNDIsIDI3LCAzOCwgMjQ5LCAxOTcsIDIzMSwgMjMyLCAyMjQsIDE5NCwgCisgICAgMjQ0LCAyMCwgMzEsIDY3LCAxMTMsIDU5LCAyMzMsIDU2LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyNDUsIDE2MCwgCisgICAgMjQ4LCAxNTYsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0NSwgMTUxLCAyNDgsIDE1NiwgMjI0LCAxOTQsIDI0NCwgCisgICAgMjAsIDMxLCA2NywgMTIxLCAyMzIsIDIxMywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjEyLCAzMiwgMTIxLCAyMzIsIAorICAgIDIxMywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDIyNiwgMywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgCisgICAgNDQsIDIyNiwgMywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDI0OSwgOTksIDEyNywgMjI0LCAxOTQsIDI0NCwgCisgICAgMjAsIDMxLCA2NywgNDQsIDI0OSwgOTksIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDIxNiwgNiwgMjIwLCAKKyAgICA1MywgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDIyNCwgMTk0LCAKKyAgICAyNDQsIDIwLCAzMSwgNjcsIDQzLCA4NSwgMjMzLCAyMCwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgODUsIAorICAgIDIzMywgMjAsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDUyLCAyNTQsIDExMCwgMTI3LCAyMjQsIDE5NCwgCisgICAgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgNTIsIDI1NCwgMTEwLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCAKKyAgICAyNTQsIDExMCwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgMjU0LCAxMTAsIDEyNywgMjI0LCAxOTQsIAorICAgIDI0NCwgMjAsIDMxLCA2NywgNDMsIDI0OSwgMTYxLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCAyNDksIAorICAgIDE2MSwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgNzEsIDI0OSwgMTYxLCAxMjcsIDIyNCwgMTk0LCAKKyAgICAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA3MSwgMjQ5LCAxNjEsIDEyNywgMjIwLCAxMzEsIDI0NywgMTIwLCA3MSwgMjIwLCAxMzEsIAorICAgIDI0NywgMTIwLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgNDIsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCAKKyAgICA2NywgNDQsIDQyLCAxMjcsIDI0OCwgMTU1LCAyMjYsIDExOSwgMjUwLCAxNzIsIDIyNiwgMTE5LCAyMTIsIDMyLCAyMjYsIAorICAgIDExOSwgNTIsIDIxMiwgMzIsIDIyNiwgMTE5LCAyNDgsIDE1NSwgMTIxLCAyMzIsIDIxMywgMjUwLCAxNzIsIDEyMSwgMjMyLCAKKyAgICAyMTMsIDIxMiwgMzIsIDEyMSwgMjMyLCAyMTMsIDQsIDI0OSwgMjE5LCA0LCAxMDksIDI0OSwgMjE5LCA0LCAyNDMsIDIyOSwgCisgICAgMjE4LCAxMjksIDQsIDIyMCwgMTUwLCA0LCAyNDksIDIyNiwgNCwgMjI0LCAxMywgNzgsIDQsIDI0NSwgMzEsIDc4LCA0LCAKKyAgICAyNDUsIDE2MCwgMjQ4LCAxNTYsIDQsIDQzLCAyMjYsIDMsIDQsIDQ0LCAyMjYsIDMsIDQsIDQzLCAyNDksIDk5LCAxMjcsIDQsIAorICAgIDQ0LCAyNDksIDk5LCAxMjcsIDQsIDQzLCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNCwgNDQsIDIxNiwgNiwgMjIwLCA1MywgCisgICAgMTI3LCA0LCA1NCwgNTAsIDQsIDI1NCwgMTI2LCA0LCAyNTMsIDIxNiwgNCwgOTYsIDUwLCA0LCAyNDAsIDE2NywgNCwgMjMzLCAKKyAgICAxNSwgNTAsIDQsIDI0MiwgMTMwLCA1MCwgNCwgMjQ1LCA5OCwgNTAsIDQsIDIyMywgNTAsIDIxOSwgNDYsIDQsIDI0NywgCisgICAgMTMyLCA1MCwgNCwgMjI1LCAxODIsIDUwLCA0LCAyNDksIDIxNywgMjUzLCAyMDYsIDEwLCAyNDQsIDE2NCwgNTMsIDE3LCAKKyAgICAxMCwgMjE3LCA0NCwgMiwgMjQ0LCAxNjQsIDQ4LCAxMCwgMjQ4LCAxODMsIDUzLCAxNywgMTAsIDIxNywgNzgsIDI0NCwgMSwgCisgICAgMTAsIDIzNCwgMjA0LCA1MywgMTcsIDEwLCAyNDQsIDE2NiwgNTMsIDE3LCAxMCwgMjQ0LCAxNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNDgsIDE4NSwgNTMsIDE3LCAxMCwgMjQ4LCAxODUsIDE0NywgMTcsIDEwLCAyMzQsIDIwNiwgNTMsIDE3LCAxMCwgMjM0LCAKKyAgICAyMDYsIDE0NywgMTcsIDEwLCAyMjAsIDk0LCA1MywgMTcsIDEwLCAyMjAsIDk0LCAxNDcsIDE3LCAxMCwgMjE4LCA0NiwgNTMsIAorICAgIDE3LCAxMCwgMjE4LCA0NiwgMTQ3LCAxNywgMTAsIDEsIDIwMiwgNTMsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMzEsIDIyOCwgCisgICAgNzcsIDUzLCAxNywgMTAsIDEsIDExMiwgMiwgMjMxLCAyMjgsIDc3LCA0MCwgMTcsIDEwLCAxLCAxMTIsIDIsIDIwMiwgNzcsIAorICAgIDUzLCAxNywgMTAsIDEsIDExMiwgMiwgMjAyLCA3NywgNDAsIDE3LCAxMCwgMSwgMjEyLCAzMSwgMiwgMjAyLCA3NywgNTMsIAorICAgIDE3LCAxMCwgMSwgMjEyLCAzMSwgMiwgMjAyLCA3NywgNDAsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDI1MiwgNDMsIDUzLCAKKyAgICAxNywgMTAsIDEsIDExMiwgMiwgMjAyLCAyNTIsIDQzLCA0MCwgMTcsIDEwLCAxLCA3OSwgMiwgMjAyLCA3NywgNTMsIDE3LCAKKyAgICAxMCwgMSwgNzksIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDEsIDc5LCAyLCAyMDIsIDc3LCA2NSwgMTcsIDEwLCAxLCA3OSwgCisgICAgMiwgMjAyLCA3NywgMTQ3LCAxNywgMTAsIDEsIDExMiwgNTMsIDE3LCAxMCwgMSwgMTEyLCA0MCwgMTcsIDEwLCAxLCAyNTIsIAorICAgIDU1LCA1MywgMTcsIDEwLCAxLCAyNTIsIDU1LCA0MCwgMTcsIDEwLCAxLCAyNTIsIDU1LCA2NSwgMTcsIDEwLCAxLCAyNTIsIAorICAgIDU1LCAxNDcsIDE3LCAxMCwgMSwgMjE3LCA4LCAyMzEsIDE2NSwgNTMsIDE3LCAxMCwgMSwgMjE3LCA4LCAyMzEsIDE2NSwgCisgICAgNDAsIDE3LCAxMCwgMSwgMjE3LCA4LCA1MywgMTcsIDEwLCAxLCAyMTcsIDgsIDQwLCAxNywgMTAsIDEsIDIxNywgOCwgNjUsIAorICAgIDE3LCAxMCwgMSwgMjE3LCA4LCAxNDcsIDE3LCAxMCwgMSwgMjE2LCAxOTMsIDUzLCAxNywgMTAsIDEsIDIxNiwgMTkzLCA0MCwgCisgICAgMTcsIDEwLCAxLCAyMTYsIDE5MywgNjUsIDE3LCAxMCwgMSwgMjE2LCAxOTMsIDE0NywgMTcsIDEwLCAxLCAxNTEsIDUzLCAKKyAgICAxNywgMTAsIDEsIDE1MSwgNDAsIDE3LCAxMCwgMSwgMTUxLCA2NSwgMTcsIDEwLCAxLCAxNTEsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAxMjIsIDUzLCAxNywgMTAsIDEsIDEyMiwgNDAsIDE3LCAxMCwgMSwgMTIyLCA2NSwgMTcsIDEwLCAxLCAxMjIsIDE0NywgMTcsIAorICAgIDEwLCAxLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMSwgMjM0LCAxMzAsIDQwLCAxNywgMTAsIDEsIDIzNCwgMTMwLCA2NSwgCisgICAgMTcsIDEwLCAxLCAyMzQsIDEzMCwgMTQ3LCAxNywgMTAsIDEsIDI0OCwgMTk2LCA1MywgMTcsIDEwLCAxLCAyNDgsIDE5NiwgCisgICAgNDAsIDE3LCAxMCwgMSwgMjE2LCAyMDMsIDUzLCAxNywgMTAsIDEsIDIxNiwgMjAzLCA0MCwgMTcsIDEwLCAxLCAyMjMsIDk2LCAKKyAgICA1MywgMTcsIDEwLCAxLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAxLCAyMTAsIDEwOSwgNTMsIDE3LCAxMCwgMSwgMjEwLCAxMDksIAorICAgIDQwLCAxNywgMTAsIDEsIDIyMSwgMTY3LCA1MywgMTcsIDEwLCAxLCAyMjEsIDE2NywgNDAsIDE3LCAxMCwgMSwgMjIxLCAKKyAgICAxNjcsIDY1LCAxNywgMTAsIDEsIDIyMSwgMTY3LCAxNDcsIDE3LCAxMCwgMSwgMjIwLCA2MCwgNTMsIDE3LCAxMCwgMSwgCisgICAgMjIwLCA2MCwgNDAsIDE3LCAxMCwgMSwgMjIwLCA2MCwgNjUsIDE3LCAxMCwgMSwgMjIwLCA2MCwgMTQ3LCAxNywgMTAsIDEsIAorICAgIDIyMiwgMjcsIDUzLCAxNywgMTAsIDEsIDIyMiwgMjcsIDQwLCAxNywgMTAsIDEsIDIyMiwgMjcsIDY1LCAxNywgMTAsIDEsIAorICAgIDIyMiwgMjcsIDE0NywgMTcsIDEwLCAxLCAyNDgsIDIxNywgNTMsIDE3LCAxMCwgMSwgMjQ4LCAyMTcsIDQwLCAxNywgMTAsIAorICAgIDEsIDI0OCwgMjE3LCA2NSwgMTcsIDEwLCAxLCAyNDgsIDIxNywgMTQ3LCAxNywgMTAsIDEsIDIxNywgODEsIDUzLCAxNywgCisgICAgMTAsIDEsIDIxNywgODEsIDQwLCAxNywgMTAsIDEsIDIxNywgODEsIDY1LCAxNywgMTAsIDEsIDIxNywgODEsIDE0NywgMTcsIAorICAgIDEwLCAxLCAyMTAsIDExMiwgNTMsIDE3LCAxMCwgMSwgMjEwLCAxMTIsIDQwLCAxNywgMTAsIDEsIDIxMCwgMTEyLCA2NSwgCisgICAgMTcsIDEwLCAxLCAyMTAsIDExMiwgMTQ3LCAxNywgMTAsIDEsIDI1NCwgMTk3LCA1MywgMTcsIDEwLCAxLCAyNTQsIDE5NywgCisgICAgNDAsIDE3LCAxMCwgMSwgMjU0LCAxOTcsIDY1LCAxNywgMTAsIDEsIDI1NCwgMTk3LCAxNDcsIDE3LCAxMCwgMSwgMjQyLCAKKyAgICAyNDUsIDUzLCAxNywgMTAsIDEsIDI0MiwgMjQ1LCA0MCwgMTcsIDEwLCAxLCAyNDIsIDI0NSwgNjUsIDE3LCAxMCwgMSwgCisgICAgMjQyLCAyNDUsIDE0NywgMTcsIDEwLCAxLCAyNDQsIDE0MywgNTMsIDE3LCAxMCwgMSwgMjQ0LCAxNDMsIDQwLCAxNywgMTAsIAorICAgIDEsIDI0NCwgMTQzLCA2NSwgMTcsIDEwLCAxLCAyNDQsIDE0MywgMTQ3LCAxNywgMTAsIDEsIDIyNCwgODIsIDUzLCAxNywgCisgICAgMTAsIDEsIDIyNCwgODIsIDQwLCAxNywgMTAsIDEsIDIyNCwgODIsIDY1LCAxNywgMTAsIDEsIDIyNCwgODIsIDE0NywgMTcsIAorICAgIDEwLCAxLCAyMzQsIDI1MSwgNTMsIDE3LCAxMCwgMSwgMjM0LCAyNTEsIDQwLCAxNywgMTAsIDEsIDIzNCwgMjUxLCA2NSwgCisgICAgMTcsIDEwLCAxLCAyMzQsIDI1MSwgMTQ3LCAxNywgMTAsIDEsIDIzMywgMTAzLCA1MywgMTcsIDEwLCAxLCAyMzMsIDEwMywgCisgICAgNDAsIDE3LCAxMCwgMSwgMjMzLCAxMDMsIDY1LCAxNywgMTAsIDEsIDIzMywgMTAzLCAxNDcsIDE3LCAxMCwgMSwgNjYsIDUzLCAKKyAgICAxNywgMTAsIDEsIDY2LCA0MCwgMTcsIDEwLCAxLCA2NiwgNjUsIDE3LCAxMCwgMSwgNjYsIDE0NywgMTcsIDEwLCAxLCAyMjgsIAorICAgIDYzLCA1MywgMTcsIDEwLCAxLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAxLCAyMjgsIDYzLCA2NSwgMTcsIDEwLCAxLCAyMjgsIAorICAgIDYzLCAxNDcsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDUzLCAxNywgMTAsIDEsIDI0MSwgMjE5LCA0MCwgMTcsIDEwLCAxLCAKKyAgICAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAxLCAyMTIsIDMxLCA1MywgMTcsIDEwLCAKKyAgICAxLCAyMTIsIDMxLCA0MCwgMTcsIDEwLCAxLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAxLCAxMTIsIDIzMSwgMTkzLCAKKyAgICA0MCwgMTcsIDEwLCAxLCA3OSwgNTMsIDE3LCAxMCwgMSwgNzksIDQwLCAxNywgMTAsIDEsIDc5LCA2NSwgMTcsIDEwLCAxLCAKKyAgICA3OSwgMTQ3LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyLCAyMzEsIDIyOCwgNzcsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzMsIDEwMywgMiwgMTEyLCAyLCAyMzEsIDIyOCwgNzcsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyLCAKKyAgICAyMDIsIDc3LCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMiwgMjAyLCA3NywgNDAsIDE3LCAxMCwgMjcsIAorICAgIDIzMywgMTAzLCAyLCAxMTIsIDIsIDIwMiwgMjUyLCA0MywgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIsIAorICAgIDIwMiwgMjUyLCA0MywgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgCisgICAgMiwgMTEyLCA0MCwgMTcsIDIxMCwgODcsIDIxMSwgMjQ1LCAyMjgsIDczLCAyMTksIDE4LCAxMjYsIDI0NSwgMzEsIDc4LCAKKyAgICAxMjYsIDIyMywgMjU0LCA3OCwgMTI2LCA1NCwgNTAsIDEyNiwgMjQ3LCAxMzIsIDUwLCAxMjYsIDIyNSwgMTgyLCA1MCwgCisgICAgMTI2LCAyNTQsIDEyNiwgMTI2LCAyNTQsIDU3LCAxMjYsIDQzLCAyMjYsIDMsIDEyNiwgNDQsIDIyNiwgMywgMTI2LCAyNTMsIAorICAgIDIxNiwgMTI2LCA5NiwgNTAsIDEyNiwgMjQ5LCAyMTksIDEyNiwgMjQwLCAxNjcsIDEyNiwgMjQzLCAyMjksIDIxOCwgMTI5LCAKKyAgICAxMjYsIDIxOSwgNDYsIDEyNiwgMjEsIDIxMCwgODYsIDEyNiwgMjEsIDExMCwgMTI2LCAyMSwgMTA1LCAxMjYsIDIxLCAxNTgsIAorICAgIDEyNiwgMjEsIDE2MSwgMTI2LCAyMSwgMTg5LCAxMjYsIDIxLCAxOTQsIDEyNiwgMjEsIDE5OCwgMTI2LCAyMSwgMTk1LCAKKyAgICAxMjYsIDIxLCAyMDAsIDEyNiwgMjQ5LCAyMjYsIDEyNiwgMjIwLCAxNTAsIDEyNiwgMjMzLCAxNSwgNTAsIDEyNiwgMjQ1LCAKKyAgICA5OCwgNTAsIDEyNiwgMjQyLCAxMzAsIDUwLCAxMjYsIDIyNCwgMTMsIDc4LCAxMjYsIDI0OSwgMjE3LCAyNTMsIDIwNiwgCisgICAgMTI2LCA3LCA2LCAxLCA2MSwgMTI2LCA3LCA2LCAxLCAyNTMsIDE1OCwgMTI2LCA3LCA2LCAxLCAyNTEsIDY2LCAxMjYsIDcsIAorICAgIDYsIDEsIDI0OSwgNjAsIDEyNiwgNywgNiwgMSwgNzUsIDEyNiwgNywgNiwgMSwgMjQ1LCA2LCAxMjYsIDcsIDYsIDEsIDI0MywgCisgICAgMjAyLCAxMjYsIDcsIDYsIDEsIDI0MiwgNjAsIDEyNiwgNywgNiwgMSwgNzMsIDEyNiwgNywgNiwgMSwgMjM1LCAxNDQsIAorICAgIDEyNiwgNywgNiwgMSwgMjM1LCAyMywgMTI2LCA3LCA2LCAxLCAxNTYsIDEyNiwgNywgNiwgMSwgMTkzLCAxMjYsIDcsIDYsIAorICAgIDEsIDIzMCwgMjUsIDEyNiwgNywgNiwgMSwgNzYsIDEyNiwgNywgNiwgMSwgMjI2LCAxMDUsIDEyNiwgNywgNiwgMSwgMjI0LCAKKyAgICA5NiwgMTI2LCA3LCA2LCAxLCAxNTMsIDEyNiwgNywgNiwgMSwgMjIyLCA5MSwgMTI2LCA3LCA2LCAxLCAyMTcsIDE1MiwgCisgICAgMTI2LCA3LCA2LCAxLCA3MCwgMTI2LCA3LCA2LCAxLCAyMTQsIDEwNSwgMTI2LCA3LCA2LCAxLCAyMTIsIDk4LCAxMjYsIDcsIAorICAgIDYsIDEsIDIxMSwgMTc4LCAxMjYsIDcsIDYsIDEsIDIxMSwgMTE3LCAxMjYsIDcsIDYsIDEsIDIxMCwgMTU5LCAxMjYsIDQzLCAKKyAgICA0MiwgMTI3LCAxMjYsIDIyMywgNTAsIDIxOSwgNDYsIDEyNiwgNDQsIDQyLCAxMjcsIDEyNiwgMjUwLCAzMSwgMjU1LCAxNCwgCisgICAgMTI2LCAxMjEsIDIzMiwgMjEzLCAxMjYsIDI0MiwgMTM3LCAyNTUsIDE0LCAxMjYsIDcsIDQsIDEsIDYxLCAxMjYsIDcsIDQsIAorICAgIDEsIDI1MywgMTU4LCAxMjYsIDcsIDQsIDEsIDI1MSwgNjYsIDEyNiwgNywgNCwgMSwgMjQ5LCA2MCwgMTI2LCA3LCA0LCAxLCAKKyAgICA3NSwgMTI2LCA3LCA0LCAxLCAyNDUsIDYsIDEyNiwgNywgNCwgMSwgMjQzLCAyMDIsIDEyNiwgNywgNCwgMSwgMjQyLCA2MCwgCisgICAgMTI2LCA3LCA0LCAxLCA3MywgMTI2LCA3LCA0LCAxLCAyMzUsIDE0NCwgMTI2LCA3LCA0LCAxLCAyMzUsIDIzLCAxMjYsIDcsIAorICAgIDQsIDEsIDE1NiwgMTI2LCA3LCA0LCAxLCAxOTMsIDEyNiwgNywgNCwgMSwgMjMwLCAyNSwgMTI2LCA3LCA0LCAxLCA3NiwgCisgICAgMTI2LCA3LCA0LCAxLCAyMjYsIDEwNSwgMTI2LCA3LCA0LCAxLCAyMjQsIDk2LCAxMjYsIDcsIDQsIDEsIDE1MywgMTI2LCA3LCAKKyAgICA0LCAxLCAyMjIsIDkxLCAxMjYsIDcsIDQsIDEsIDIxNywgMTUyLCAxMjYsIDcsIDQsIDEsIDcwLCAxMjYsIDcsIDQsIDEsIAorICAgIDIxNCwgMTA1LCAxMjYsIDcsIDQsIDEsIDIxMiwgOTgsIDEyNiwgNywgNCwgMSwgMjExLCAxNzgsIDEyNiwgNywgNCwgMSwgCisgICAgMjExLCAxMTcsIDEyNiwgNywgNCwgMSwgMjEwLCAxNTksIDEyNiwgNDMsIDI0OSwgOTksIDEyNywgMTI2LCA2NywgMjMyLCAKKyAgICAyMTMsIDEyNiwgNDQsIDI0OSwgOTksIDEyNywgMTI2LCAxODIsIDEyNiwgNDMsIDcxLCAyMjYsIDMsIDEyNiwgNDQsIDcxLCAKKyAgICAyMjYsIDMsIDEwMSwgMTA5LCAyNDMsIDIyOSwgMjE4LCAxMjksIDEwMSwgNDMsIDI0OSwgMTYxLCAxMjcsIDEwMSwgNDQsIAorICAgIDI0OSwgMTYxLCAxMjcsIDEwMSwgMTA5LCAyNDksIDIxOSwgMTAxLCA1NiwgMjMwLCAyMjQsIDI0NywgMTIwLCAxMDEsIDU2LCAKKyAgICAxLCAyMTEsIDIyNywgMTAxLCA1NiwgMSwgNCwgNjEsIDEwMSwgNTYsIDEsIDQsIDczLCAxMDEsIDU2LCAxLCA0LCA3MCwgCisgICAgMTAxLCA1NiwgMSwgNCwgNzUsIDEwMSwgNTYsIDEsIDQsIDc2LCAxMDEsIDU2LCAxLCA0LCAxOTEsIDEwMSwgNTYsIDEsIDQsIAorICAgIDIxMCwgMjEyLCAxMDEsIDU2LCAxLCA0LCAyMTAsIDI0NCwgMTAxLCA1NiwgMSwgNCwgMjE1LCAxMTgsIDEwMSwgMjM0LCAKKyAgICAyMDEsIDIyNCwgMTczLCAyMTksIDMxLCA3OCwgMTAxLCA1NiwgMSwgNjEsIDEwMSwgNTYsIDEsIDczLCAxMDEsIDU2LCAxLCAKKyAgICA3MCwgMTAxLCA1NiwgMSwgNzUsIDEwMSwgNTYsIDEsIDc2LCAxMDEsIDU2LCAxLCAxNzYsIDEwMSwgNTYsIDEsIDIzNCwgOTIsIAorICAgIDEwMSwgNTYsIDEsIDIzMywgMjE3LCAxMDEsIDU2LCAxLCAyMzQsIDE4MiwgMTAxLCA1NiwgMSwgMjM0LCAyOCwgMTAxLCA1NiwgCisgICAgMSwgMjA2LCAxMDEsIDU2LCAxLCAyMTksIDE5MSwgMTAxLCA1NiwgMSwgMjE4LCA4MywgMTAxLCA1NiwgMSwgMjIxLCAxODEsIAorICAgIDEwMSwgNTYsIDEsIDIxOSwgNTgsIDEwMSwgNTYsIDEsIDIxNywgMTA1LCAxMDEsIDU2LCAxLCAyMTYsIDExNywgMTAxLCA1NiwgCisgICAgMSwgMjE1LCAxMTgsIDEwMSwgNTYsIDEsIDIxNywgMjIsIDEwMSwgNTYsIDEsIDExMSwgMTAxLCA1NiwgMSwgMTk3LCAxMDEsIAorICAgIDU2LCAxLCAyMjgsIDIzMywgMTAxLCA1NiwgMSwgMjI3LCAyMzcsIDEwMSwgNTYsIDEsIDIyOSwgMTA3LCAxMDEsIDU2LCAxLCAKKyAgICAyMjgsIDc0LCAxMDEsIDU2LCAxLCAxNjIsIDEwMSwgNTYsIDEsIDI0MSwgMTgwLCAxMDEsIDU2LCAxLCAyNDAsIDIyMiwgCisgICAgMTAxLCA1NiwgMSwgMjQxLCAyMzgsIDEwMSwgNTYsIDEsIDI0MSwgNjgsIDEwMSwgNTYsIDEsIDE4NCwgMTAxLCA1NiwgMSwgCisgICAgMjMwLCAyMzAsIDEwMSwgNTYsIDEsIDIzMCwgMTAyLCAxMDEsIDU2LCAxLCAyMzEsIDkxLCAxMDEsIDU2LCAxLCAyMzAsIAorICAgIDE2MSwgMTAxLCA1NiwgMSwgMTkxLCAxMDEsIDU2LCAxLCAyMTAsIDIxMiwgMTAxLCA1NiwgMSwgMjEwLCAyNDQsIDEwMSwgCisgICAgNTYsIDEsIDIwNSwgMTAxLCA1NiwgMSwgMjIzLCAzNSwgMTAxLCA1NiwgMSwgMjIyLCAxNDAsIDEwMSwgNTYsIDEsIDIyMywgCisgICAgMTI4LCAxMDEsIDU2LCAxLCAyMjIsIDIxMSwgMTAxLCA1NiwgMSwgMjEyLCA2NSwgMTAxLCA1NiwgMSwgMjMwLCAyNSwgMTAxLCAKKyAgICA1NiwgMjEzLCAxMzUsIDIxOSwgMzEsIDc4LCAxMDEsIDU2LCAyMjAsIDE1NSwgMjE5LCAzMSwgNzgsIDEwMSwgMjQsIDI0NCwgCisgICAgMTAzLCAxMDEsIDI0LCAxLCAyMzQsIDU4LCAxMDEsIDI0LCAxLCAyMTgsIDIxNSwgMTAxLCAyNCwgMSwgMjM0LCA1MSwgMTAxLCAKKyAgICAyNCwgMSwgMjI4LCAyMjYsIDEwMSwgMjQsIDEsIDIyOCwgMjI0LCAxMDEsIDI0LCAxLCAyMjgsIDIyMywgMTAxLCAyNCwgMSwgCisgICAgMjE2LCAxMDEsIDEwMSwgMjQsIDEsIDIxOCwgMjA0LCAxMDEsIDI0LCAxLCAyMjMsIDI2LCAxMDEsIDI0LCAxLCAyMjMsIDIxLCAKKyAgICAxMDEsIDI0LCAxLCAyMjMsIDE4LCAxMDEsIDI0LCAxLCAyMjMsIDExLCAxMDEsIDI0LCAxLCAyMjMsIDYsIDEwMSwgMjQsIDEsIAorICAgIDIyMywgMSwgMTAxLCAyNCwgMSwgMjIzLCAxMiwgMTAxLCAyNCwgMSwgMjIzLCAyNCwgMTAxLCAyNCwgMSwgMjMwLCAyMTcsIAorICAgIDEwMSwgMjQsIDEsIDIyNSwgOTUsIDEwMSwgMjQsIDEsIDIxOCwgMjEyLCAxMDEsIDI0LCAxLCAyMjUsIDg0LCAxMDEsIDI0LCAKKyAgICAxLCAyMTksIDE0OCwgMTAxLCAyNCwgMSwgMjE4LCAyMDksIDEwMSwgMjQsIDEsIDIzNiwgNTYsIDEwMSwgMjQsIDEsIDI1MCwgCisgICAgNDYsIDEwMSwgMjQsIDEsIDIxOCwgMjE5LCAxMDEsIDI0LCAxLCAyNTAsIDEwNiwgMTAxLCAyNCwgMSwgMjM0LCAxMTAsIAorICAgIDEwMSwgMjQsIDEsIDIxNiwgMTczLCAxMDEsIDI0LCAxLCAyMjUsIDEzMSwgMTAxLCAyNCwgMSwgMjQxLCAxNzIsIDEwMSwgCisgICAgMjQsIDEsIDYxLCAxMDEsIDI0LCAxLCAyNTQsIDI0MywgMTAxLCAyNCwgMSwgMTkxLCAxMDEsIDI0LCAxLCAyMTEsIDkyLCAKKyAgICAxMDEsIDI0LCAxLCAyNDUsIDExNywgMTAxLCAyNCwgMSwgNzUsIDEwMSwgMjQsIDEsIDIxMSwgMzYsIDEwMSwgMjQsIDEsIAorICAgIDIxMSwgNDcsIDEwMSwgMjQsIDEsIDc2LCAxMDEsIDI0LCAxLCAyMTIsIDY1LCAxMDEsIDI0LCAxLCAyMTIsIDYyLCAxMDEsIAorICAgIDI0LCAxLCAyMjYsIDIzNCwgMTAxLCAyNCwgMSwgMjEwLCAyNDQsIDEwMSwgMjQsIDEsIDcwLCAxMDEsIDI0LCAxLCAyMTIsIAorICAgIDExLCAxMDEsIDI0LCAxLCAyMTIsIDIyLCAxMDEsIDI0LCAxLCAyMTEsIDI1MCwgMTAxLCAyNCwgMSwgMjEwLCAyMTIsIDEwMSwgCisgICAgMjQsIDEsIDI0NSwgNTUsIDEwMSwgMjQsIDEsIDIxMSwgOCwgMTAxLCAyNCwgMSwgNzMsIDEyNiwgMjUwLCAxNzYsIDUwLCAKKyAgICAxMjYsIDIyNCwgMjI4LCA1MCwgMTI2LCAyMjgsIDUyLCA1MCwgMTI2LCAyMzEsIDIzMiwgMTI2LCAyNTEsIDEzNSwgMTMwLCAKKyAgICAxMjYsIDIxMSwgNDAsIDUwLCAxMjYsIDIxMSwgMjE3LCA1MCwgMTAxLCAyNDQsIDE4LCAxOTIsIDIxMywgMjM5LCAxMDEsIAorICAgIDE0MCwgNzQsIDEwMSwgMjE0LCAxNTMsIDc0LCAxMDEsIDk3LCA3NCwgMTAxLCAyNDYsIDEwNCwgNzQsIDEwMSwgODUsIDIxOCwgCisgICAgMjM0LCAxMDEsIDcxLCAyNTAsIDM1LCAyMzUsIDIwNCwgMjU0LCA5OSwgMjU0LCAxMjAsIDIzNSwgMjA0LCAyNTQsIDk5LCAKKyAgICAyMjAsIDEzNywgMjM1LCAyMDQsIDI1NCwgOTksIDIxNiwgMjM2LCAyMjYsIDI0OSwgMjIzLCA3MiwgMjUwLCAxNDIsIDIyMywgCisgICAgNzIsIDI1MCwgMTQyLCA2MiwgNTcsIDMsIDI1MywgMTQyLCA2MSwgNjIsIDU3LCAzLCAyNTMsIDExMSwgNzUsIDYyLCA1NywgCisgICAgMywgMjUzLCAxMjAsIDczLCA2MiwgNTcsIDMsIDI1MywgODgsIDc2LCA2MiwgNTcsIDMsIDI1MywgMTM4LCA3MCwgNjIsIDU3LCAKKyAgICAzLCAyNTMsIDE1NywgMjQ4LCAyMjEsIDYyLCA1NywgMywgMjUzLCAxMDQsIDI0OCwgOTAsIDYyLCA1NywgMywgMjUzLCAxNDQsIAorICAgIDI0OCwgMywgNjIsIDU3LCAzLCAyNTMsIDEzNCwgMjQ3LCAxNDUsIDYyLCA1NywgMywgMjUzLCA5OCwgMjQ2LCA3OCwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDkyLCAyMzUsIDE0MSwgNjIsIDU3LCAzLCAyNTMsIDEwMywgMjM1LCAxMjYsIDYyLCA1NywgMywgMjUzLCAKKyAgICAxMTMsIDIzNSwgNjgsIDYyLCA1NywgMywgMjUzLCA4NCwgMjM1LCA1MSwgNjIsIDU3LCAzLCAyNTMsIDcyLCAxNzYsIDYyLCAKKyAgICA1NywgMywgMjUzLCAxMDUsIDIzNCwgMTgyLCA2MiwgNTcsIDMsIDI1MywgODIsIDIzNCwgOTIsIDYyLCA1NywgMywgMjUzLCAKKyAgICA3OSwgMjM0LCAyOCwgNjIsIDU3LCAzLCAyNTMsIDY4LCAyMzMsIDIxNywgNjIsIDU3LCAzLCAyNTMsIDY5LCAxODQsIDYyLCAKKyAgICA1NywgMywgMjUzLCAxMzUsIDIzMSwgOTEsIDYyLCA1NywgMywgMjUzLCA3NiwgMjMwLCAyMzAsIDYyLCA1NywgMywgMjUzLCAKKyAgICAxMzMsIDIzMCwgMTYxLCA2MiwgNTcsIDMsIDI1MywgMTI1LCAyMzAsIDEwMiwgNjIsIDU3LCAzLCAyNTMsIDE0NiwgMTk3LCAKKyAgICA2MiwgNTcsIDMsIDI1MywgMTI0LCAyMjksIDEwNywgNjIsIDU3LCAzLCAyNTMsIDExOCwgMjI4LCAyMzMsIDYyLCA1NywgMywgCisgICAgMjUzLCA5NywgMjI4LCA3NCwgNjIsIDU3LCAzLCAyNTMsIDk0LCAyMjcsIDIzNywgNjIsIDU3LCAzLCAyNTMsIDE1MywgMTkwLCAKKyAgICA2MiwgNTcsIDMsIDI1MywgNzcsIDIyNSwgMjIxLCA2MiwgNTcsIDMsIDI1MywgMTEwLCAyMjUsIDEwOCwgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDEzNywgMjI1LCAxNiwgNjIsIDU3LCAzLCAyNTMsIDk5LCAyMjQsIDE1MCwgNjIsIDU3LCAzLCAyNTMsIDEzMiwgCisgICAgMjI0LCA4OCwgNjIsIDU3LCAzLCAyNTMsIDcxLCAyMjQsIDY5LCA2MiwgNTcsIDMsIDI1MywgMTI3LCAyMjQsIDUzLCA2MiwgCisgICAgNTcsIDMsIDI1MywgMTE2LCAyMjQsIDQyLCA2MiwgNTcsIDMsIDI1MywgODksIDIwNSwgNjIsIDU3LCAzLCAyNTMsIDEyMSwgCisgICAgMjIzLCAxMjgsIDYyLCA1NywgMywgMjUzLCA5NiwgMjIzLCAzNSwgNjIsIDU3LCAzLCAyNTMsIDE1NSwgMjIyLCAyMTEsIDYyLCAKKyAgICA1NywgMywgMjUzLCAxMjIsIDIyMiwgMTQwLCA2MiwgNTcsIDMsIDI1MywgMTE3LCAyMDYsIDYyLCA1NywgMywgMjUzLCAxNDAsIAorICAgIDIyMSwgMTgxLCA2MiwgNTcsIDMsIDI1MywgMTA4LCAyMTksIDE5MSwgNjIsIDU3LCAzLCAyNTMsIDEzNiwgMjE5LCA1OCwgCisgICAgNjIsIDU3LCAzLCAyNTMsIDkxLCAyMTgsIDgzLCA2MiwgNTcsIDMsIDI1MywgOTAsIDIxNywgMTA1LCA2MiwgNTcsIDMsIAorICAgIDI1MywgMTUxLCAyMTcsIDIyLCA2MiwgNTcsIDMsIDI1MywgMTEyLCAyMTYsIDExNywgNjIsIDU3LCAzLCAyNTMsIDE0OSwgCisgICAgMTExLCA2MiwgNTcsIDMsIDI1MywgODAsIDIxNSwgMTE4LCA2MiwgNTcsIDMsIDI1MywgOTUsIDIxMiwgNjUsIDYyLCA1NywgCisgICAgMywgMjUzLCA3NCwgMjEyLCAyMiwgNjIsIDU3LCAzLCAyNTMsIDEwOSwgMjExLCAyNTAsIDYyLCA1NywgMywgMjUzLCAxMDcsIAorICAgIDIxMSwgMjI3LCA2MiwgNTcsIDMsIDI1MywgMTMxLCAyMTAsIDExNiwgNjIsIDU3LCAzLCAyNTMsIDc1LCAyMTAsIDk0LCA2MiwgCisgICAgNTcsIDMsIDI1MywgMTI4LCAyMTAsIDIzLCA2MiwgNTcsIDMsIDI1MywgMTIzLCAyNTUsIDc1LCA2MiwgNTcsIDMsIDI1MywgCisgICAgMTA2LCAyNTUsIDc0LCA2MiwgNTcsIDMsIDI1MywgNjUsIDI1MywgMTkyLCA2MiwgNTcsIDMsIDI1MywgNzgsIDI0NiwgNDYsIAorICAgIDYyLCA1NywgMywgMjUzLCA2MSwgMjQ2LCA0NSwgNjIsIDU3LCAzLCAyNTMsIDEwMSwgMjI3LCAxNzQsIDYyLCA1NywgMywgCisgICAgMjUzLCAxMTksIDIyNCwgMTQ4LCA2MiwgNTcsIDMsIDI1MywgODcsIDIyNCwgMTUyLCA2MiwgNTcsIDMsIDI1MywgNzMsIAorICAgIDIyMywgMTg2LCA2MiwgNTcsIDMsIDI1MywgMTE1LCAyMjMsIDE4NSwgNjIsIDU3LCAzLCAyNTMsIDgxLCAyMjIsIDIxMCwgCisgICAgNjIsIDU3LCAzLCAyNTMsIDgzLCAyMTcsIDEwMiwgNjIsIDU3LCAzLCAyNTMsIDYzLCAyMTUsIDc4LCA2MiwgNTcsIDMsIAorICAgIDI1MywgNjAsIDEwNSwgNjIsIDU3LCAxNiwgMjUzLCAxMzAsIDYyLCA1NywgMTYsIDI1MywgMTI5LCA2MiwgNTcsIDE2LCAKKyAgICAyNTMsIDEyNiwgNjIsIDU3LCAxNiwgMjUzLCAxMTQsIDYyLCA1NywgMTYsIDI1MywgMTAyLCA2MiwgNTcsIDE2LCAyNTMsIAorICAgIDEwMCwgNjIsIDU3LCAxNiwgMjUzLCA5MywgNjIsIDU3LCAxNiwgMjUzLCA4NiwgNjIsIDU3LCAxNiwgMjUzLCA4NSwgNjIsIAorICAgIDU3LCAxNiwgMjUzLCA3MCwgNjIsIDU3LCAxNiwgMjUzLCA2NywgNjIsIDU3LCAxNiwgMjUzLCA2NiwgNjIsIDU3LCAxNiwgCisgICAgMjUzLCA2NCwgNjIsIDU3LCAxNiwgMjUzLCA2MiwgNjIsIDU3LCAxMDYsIDI1MywgNTksIDIzMSwgMTg1LCA2MiwgNTcsIAorICAgIDEwNiwgMjUzLCA1OCwgMjExLCAyMjEsIDYyLCA1NywgMTA2LCAyNTMsIDU3LCAyNDgsIDc0LCA2MiwgNTcsIDEwNiwgMjUzLCAKKyAgICA1NiwgMjQ1LCA5NSwgNjIsIDU3LCAxMDYsIDI1MywgNTUsIDIzMSwgMTU5LCA2MiwgNTcsIDEwNiwgMjUzLCA1NCwgMjE4LCAKKyAgICAxNjIsIDYyLCA1NywgMTA2LCAyNTMsIDUzLCAyNDUsIDM3LCA2MiwgNTcsIDEwNiwgMjUzLCA1MiwgMjIzLCAxNTMsIDYyLCAKKyAgICA1NywgMTA2LCAyNTMsIDUxLCAyMjAsIDYyLCA2MiwgNTcsIDEwNiwgMjUzLCA1MCwgMjQxLCAyMzcsIDYyLCA1NywgMTA2LCAKKyAgICAyNTMsIDQ5LCAyMTksIDI1LCA2MiwgNTcsIDEwNiwgMjUzLCA0OCwgMjUxLCAyMDMsIDYyLCA1NywgMTA2LCAyNTMsIDQ3LCAKKyAgICAyNDksIDE0NSwgNjIsIDU3LCAxMDYsIDI1MywgNDYsIDI1MSwgMTE1LCA2MiwgNTcsIDEwNiwgMjUzLCA0NSwgMjEyLCAyLCAKKyAgICA2MiwgNTcsIDEwNiwgMjUzLCA0NCwgMjUyLCAxMzYsIDYyLCA1NywgMTA2LCAyNTMsIDQzLCAyMjYsIDIwNSwgNjIsIDU3LCAKKyAgICAxMDYsIDI1MywgNDIsIDIxOCwgMjU0LCA2MiwgNTcsIDEwNiwgMjUzLCA0MSwgMjQ5LCA2OCwgNjIsIDU3LCAyMzAsIDE0MiwgCisgICAgMjUzLCA0MCwgMjM0LCAyMjQsIDYyLCA1NywgMjMwLCAxNDIsIDI1MywgMzksIDIzNCwgMjMyLCA2MiwgNTcsIDEwNiwgMjUzLCAKKyAgICAzOCwgMjI2LCAyMTgsIDYyLCA1NywgMTA2LCAyNTMsIDM3LCAyMTEsIDIzNiwgNjIsIDU3LCAxMDYsIDI1MywgMzYsIDYyLCAKKyAgICA1NywgMjMwLCAxNDIsIDI1MywgMzUsIDI1NCwgMTcsIDYyLCA1NywgMjMwLCAxNDIsIDI1MywgMzQsIDIzMSwgNTIsIDYyLCAKKyAgICA1NywgMTA2LCAyNTMsIDMzLCAyNTEsIDEzNCwgNjIsIDU3LCAxMDYsIDI1MywgMzIsIDI0MiwgMTY2LCA2MiwgNTcsIDEwNiwgCisgICAgMjUzLCAzMSwgNjIsIDU3LCAxMDYsIDI1MywgMzAsIDIxMSwgMjEyLCA2MiwgNTcsIDEwNiwgMjUzLCAyOSwgNjIsIDU3LCAKKyAgICAxMDYsIDI1MywgMjgsIDYyLCA1NywgMTA2LCAyNTMsIDI3LCAyNDAsIDI0OCwgNjIsIDU3LCAxMDYsIDI1MywgMjYsIDYyLCAKKyAgICA1NywgMTA2LCAyNTMsIDI1LCA2MiwgNTcsIDEwNiwgMjUzLCAyNCwgNjIsIDU3LCAyMzAsIDE0MiwgMjUzLCAyMiwgMjE1LCAKKyAgICA5MiwgNjIsIDU3LCAxMDYsIDI1MywgMjEsIDYyLCA1NywgMTA2LCAyNTMsIDIwLCA2MiwgNTcsIDEwNiwgMjUzLCAxOSwgCisgICAgMjQ5LCAyNTAsIDYyLCA1NywgMTA2LCAyNTMsIDE4LCA2MiwgNTcsIDEwNiwgMjUzLCAxNywgNjIsIDU3LCAxMDYsIDI1MywgCisgICAgMTYsIDI0MywgOTMsIDYyLCA1NywgMTA2LCAyNTMsIDE1LCAyNTQsIDQsIDYyLCA1NywgMTA2LCAyNTMsIDE0LCA2MiwgNTcsIAorICAgIDEwNiwgMjUzLCAxMywgNjIsIDU3LCAxMDYsIDI1MywgMTIsIDYyLCA1NywgMTA2LCAyNTMsIDExLCA2MiwgNTcsIDEwNiwgCisgICAgMjUzLCAxMCwgNjIsIDU3LCAxMDYsIDI1MywgOSwgNjIsIDU3LCAxMDYsIDI1MywgOCwgNjIsIDU3LCAxMDYsIDI1MywgNywgCisgICAgNjIsIDU3LCAxMDYsIDI1MywgNiwgNjIsIDU3LCAxMDYsIDI1MywgNSwgMjMwLCAxMzQsIDYyLCA1NywgMTA2LCAyNTMsIDQsIAorICAgIDYyLCA1NywgMTA2LCAyNTMsIDMsIDIxNSwgMjM1LCA2MiwgNTcsIDEwNiwgMjUzLCAyLCA2MiwgNTcsIDEwNiwgMjUzLCAxLCAKKyAgICA2MiwgNTcsIDEwNiwgMjUzLCAwLCA2MiwgNTcsIDEwNiwgMjUyLCAyNTUsIDYyLCA1NywgMTA2LCAyNTIsIDI1NCwgNjIsIAorICAgIDU3LCAxMDYsIDI1MiwgMjUzLCA2MiwgNTcsIDEwNiwgMjUyLCAyNTIsIDYyLCA1NywgMTA2LCAyNTIsIDI1MSwgNjIsIDU3LCAKKyAgICAxMDYsIDI1MiwgMjUwLCA2MiwgNTcsIDEwNiwgMjUyLCAyNDksIDYyLCA1NywgMTA2LCAyNTIsIDI0OCwgNjIsIDU3LCAxMDYsIAorICAgIDI1MiwgMjQ3LCAyNDEsIDIxMSwgNjIsIDU3LCAxMDYsIDI1MiwgMjI2LCAyNDQsIDI4LCA2MiwgNTcsIDEwNiwgMjUyLCAKKyAgICAyMjMsIDI1MiwgMTE2LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTgsIDIxOSwgNSwgNjIsIDU3LCAxMDYsIDI1MiwgMjE3LCA3NCwgCisgICAgNjIsIDU3LCAxMDYsIDI1MiwgMjE2LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTUsIDIxNywgMjM2LCA2MiwgNTcsIDEwNiwgMjUyLCAKKyAgICAyMTQsIDYyLCA1NywgMTA2LCAyNTIsIDIxMywgNjIsIDU3LCAxMDYsIDI1MiwgMjEyLCAyMTEsIDI1NCwgMjUwLCAxMzksIAorICAgIDYyLCA1NywgMTA2LCAyNTIsIDIxMSwgMjUwLCAxMzksIDYyLCA1NywgMTA2LCAyNTIsIDIxMCwgMjUwLCAxNDAsIDI0MywgCisgICAgMjU1LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDksIDIxMiwgMCwgNjIsIDU3LCAxMDYsIDI1MiwgMjA4LCA2MiwgNTcsIDEwNiwgCisgICAgMjUyLCAyMDcsIDYyLCA1NywgMjMwLCAxNDIsIDI1MiwgMjA2LCAyNDcsIDE5OCwgNjIsIDU3LCAxMDYsIDI1MiwgMjA1LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUyLCAyMDQsIDYyLCA1NywgMTA2LCAyNTIsIDIwMiwgNjIsIDU3LCAxMDYsIDI1MiwgMjAxLCA2MiwgCisgICAgNTcsIDEwNiwgMjUyLCAyMDAsIDYyLCA1NywgMTA2LCAyNTIsIDE5OSwgMjQ4LCAxNTksIDYyLCA1NywgMTA2LCAyNTIsIAorICAgIDE5OCwgNjIsIDU3LCAxMDYsIDI1MiwgMTk3LCA2MiwgNTcsIDEwNiwgMjUyLCAxOTYsIDYyLCA1NywgMTA2LCAyNTIsIDE5NSwgCisgICAgNjIsIDU3LCAxMDYsIDI1MiwgMTk0LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MywgMjMsIDYyLCA1NywgMTA2LCAyMTMsIAorICAgIDE4NiwgMjUyLCAyNDYsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyNDUsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgCisgICAgMjUyLCAyNDQsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyNDMsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAKKyAgICAyNDIsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyNDEsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyNDAsIAorICAgIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzksIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzgsIDYyLCA1NywgCisgICAgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzcsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzYsIDYyLCA1NywgMTA2LCAKKyAgICAyMTMsIDE4NiwgMjUyLCAyMzUsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzQsIDYyLCA1NywgMTA2LCAyMTMsIAorICAgIDE4NiwgMjUyLCAyMzMsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzIsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgCisgICAgMjUyLCAyMzEsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzAsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAKKyAgICAyMjksIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjgsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjcsIAorICAgIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjUsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjQsIDYyLCA1NywgCisgICAgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjIsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjEsIDYyLCA1NywgMTA2LCAKKyAgICAyMTMsIDE4NiwgMjUyLCAyMjAsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMTksIDYyLCA1NywgMTA2LCAyMTMsIAorICAgIDE4NiwgMjUyLCAyMDMsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAxOTMsIDI1NCwgMjM2LCAyMTEsIDIwOSwgMjIwLCAKKyAgICAxMzgsIDIzMiwgMjEzLCAyNTQsIDIzNiwgMjExLCAyMDksIDIyMCwgMTM4LCAyNDcsIDEyMCwgMjU0LCAyMzYsIDI1MCwgCisgICAgMTMwLCA3OCwgMjU0LCAyMzYsIDU0LCAxMTAsIDI1NCwgMjM2LCA1NCwgMTA1LCAyNTQsIDIzNiwgNTQsIDE1OCwgMjU0LCAKKyAgICAyMzYsIDU0LCAxNjEsIDI1NCwgMjM2LCA1NCwgMTg5LCAyNTQsIDIzNiwgNTQsIDE5NCwgMjU0LCAyMzYsIDU0LCAxOTgsIAorICAgIDI1NCwgMjM2LCA1NCwgMTk1LCAyNTQsIDIzNiwgNTQsIDIwMCwgMjU0LCAyMzYsIDU0LCAyMTYsIDI0NywgMjU0LCAyMzYsIAorICAgIDU0LCAyMTUsIDczLCAyNTQsIDIzNiwgNTQsIDIxNiwgMTYyLCAyNTQsIDIzNiwgNTQsIDI0NCwgMTUsIDI1NCwgMjM2LCA1NCwgCisgICAgMjQ0LCAxMTQsIDI1NCwgMjM2LCA1NCwgMjE5LCAxMTEsIDI1NCwgMjM2LCA1NCwgMjIwLCAxMTYsIDI1NCwgMjM2LCA1NCwgCisgICAgMjQ1LCAxODQsIDI1NCwgMjM2LCA1NCwgMjI4LCAxOTUsIDI1NCwgMjM2LCA1NCwgMTIzLCAyNDAsIDIxMCwgMjU0LCAyMzYsIAorICAgIDU0LCAxMTMsIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDEzNCwgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMjQ0LCAxMSwgCisgICAgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMjQ0LCA4MSwgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMjE5LCAxMjUsIDI0MCwgCisgICAgMjEwLCAyNTQsIDIzNiwgNTQsIDIyMCwgMTIyLCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAyNDUsIDE5MywgMjQwLCAyMTAsIAorICAgIDI1NCwgMjM2LCA1NCwgMjI4LCAyMDAsIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDEyMywgMjE2LCAxNDcsIDI1NCwgMjM2LCAKKyAgICA1NCwgMTEzLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAxMzQsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDI0NCwgMTEsIAorICAgIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDI0NCwgODEsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIxOSwgMTI1LCAyMTYsIAorICAgIDE0NywgMjU0LCAyMzYsIDU0LCAyMjAsIDEyMiwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ1LCAxOTMsIDIxNiwgMTQ3LCAKKyAgICAyNTQsIDIzNiwgNTQsIDIyOCwgMjAwLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMTYsIDI0OCwgMjE2LCAxNDcsIDI1NCwgCisgICAgMjM2LCA1NCwgMjE1LCA3NCwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjE2LCAxNjMsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgCisgICAgNTQsIDI0NCwgMTYsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDI0NCwgMTE1LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAKKyAgICAyMTksIDExMiwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjIwLCAxMTcsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDI0NSwgCisgICAgMTg1LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMjgsIDE5NiwgMjE2LCAxNDcsIDI1NCwgMjM2LCAyMTIsIDE0LCAyNTIsIAorICAgIDEyOCwgMjE0LCAxNzMsIDI1NCwgMjM2LCAyMTIsIDE0LCAyNDQsIDkyLCAyMTgsIDU5LCAyNTQsIDIzNiwgMjEyLCAxNCwgCisgICAgMjIxLCAxNzYsIDIxOCwgNTksIDI1NCwgMjM2LCAyMTIsIDE0LCAyMTYsIDE2OSwgMjE4LCA1OSwgMjU0LCAyMzYsIDIxMiwgCisgICAgMTQsIDI0NCwgNCwgMjE4LCA1OSwgMjU0LCAyMzYsIDI0NiwgODEsIDIzMSwgOTAsIDI0NCwgOTIsIDIxOCwgNTksIDI1NCwgCisgICAgMjM2LCAyMzIsIDE5OSwgMjMxLCA5MCwgMjQ0LCA5MiwgMjE4LCA1OSwgMjU0LCAyMzYsIDIzMSwgOTAsIDIyMSwgMTc2LCAKKyAgICAyMTgsIDU5LCAyNTQsIDIzNiwgMjMxLCA5MCwgMjE2LCAxNjksIDIxOCwgNTksIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIAorICAgIDIyNCwgMjEsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIDI0MiwgMjcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIAorICAgIDI0NiwgMTAwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTg5LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCAxMTQsIDI2LCAKKyAgICAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDIxNiwgCisgICAgMTQ3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCAxMTUsIDIxNiwgMTQ3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCAKKyAgICA4MSwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDIxNiwgMjQ4LCAyMTcsIDY3LCAyNiwgMjU1LCA2LCAyNTMsIAorICAgIDE5NCwgMjQ0LCAxMTUsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIDI0MCwgMjExLCAyMTcsIDY3LCAyNiwgCisgICAgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjQwLCAyMTEsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIAorICAgIDIxNiwgMTQ4LCAyMTcsIDY3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjE2LCAxNDgsIDIxNywgNjcsIDI2LCAKKyAgICAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyMTgsIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDIxNiwgMjQ4LCAyMTgsIAorICAgIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgMTE1LCAyMTgsIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgCisgICAgMjQwLCAyMTEsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjQwLCAyMTEsIDIxOCwgMTUwLCAKKyAgICAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAyMTYsIDE0OCwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyMTYsIAorICAgIDI0OCwgMjE2LCAxNDgsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCAxMTUsIDIxNiwgMTQ4LCAyMTgsIAorICAgIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDIxNiwgMjQ4LCAyMzAsIDE2NCwgMjYsIDI1NSwgNiwgMjQxLCAyMDUsIDEyMywgCisgICAgMjI1LCAzMSwgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDExMCwgMjYsIDI1NSwgNiwgMjQxLCAyMDEsIDExMCwgMjYsIDI1NSwgCisgICAgNiwgMjQ1LCAxMDQsIDEwNSwgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDEwNSwgMjYsIDI1NSwgNiwgMjQ5LCA2NSwgMTEzLCAKKyAgICAyNDYsIDk5LCAyNiwgMjU1LCA2LCAyNDUsIDEwNCwgMTEzLCAyNDYsIDk5LCAyNiwgMjU1LCA2LCAyMTUsIDIwMywgMTg5LCAKKyAgICAyNiwgMjU1LCA2LCAyMTUsIDIwMywgMjE2LCAyNDcsIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAyMTYsIDI0OCwgMjU0LCAxNDEsIAorICAgIDE3LCAyNiwgMjU1LCA2LCAyNDEsIDIwMSwgMjE2LCAyNDcsIDI2LCAyNTUsIDYsIDIzMSwgNDEsIDIxNiwgMjQ3LCAyNiwgCisgICAgMjU1LCA2LCAyMTYsIDE4MSwgMjE2LCAyNDcsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAyMTYsIDE2MiwgMjYsIDI1NSwgNiwgCisgICAgMjE1LCAyMDMsIDI0NCwgMTE0LCAyNiwgMjU1LCA2LCAyMTUsIDIwMywgMjQ0LCAxMTUsIDI1NCwgMTQxLCAxNywgMjYsIAorICAgIDI1NSwgNiwgMjQxLCAyMDEsIDI0NCwgMTE0LCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMjQ0LCAxMTQsIDI2LCAyNTUsIDYsIAorICAgIDIxNiwgMTgxLCAxMjMsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMTM0LCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgCisgICAgMjQ1LCAxMDQsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyMTUsIDIwMywgMjQ0LCA4MSwgMjQwLCAyMTAsIDI2LCAKKyAgICAyNTUsIDYsIDIxNiwgMTgxLCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgMjUwLCAyMjcsIDI0NCwgODEsIDI0MCwgCisgICAgMjEwLCAyNiwgMjU1LCA2LCAyMjksIDE4MiwgMjQ0LCA4MSwgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAxMjMsIAorICAgIDIxNiwgMTQ3LCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMjQ0LCA4MSwgMjE2LCAxNDcsIDI2LCAyNTUsIDYsIDI0OCwgNTcsIAorICAgIDI0NCwgODEsIDIzMCwgMTY0LCAyNiwgMjU1LCA2LCAyMTgsIDExOCwgMjQ0LCAxMTUsIDIzMCwgMTY0LCAyNiwgMTIzLCAKKyAgICAxNjMsIDUwLCAyNiwgMTIzLCAxNjMsIDUsIDI1NCwgMTQxLCAxNywgMjYsIDExMywgMjE2LCAxNjcsIDUwLCAyNiwgMTM0LCAKKyAgICAyMjQsIDIwLCA1MCwgMjYsIDIxMSwgNDUsIDUwLCAyNiwgMjE3LCA2OCwgNTAsIDI2LCAyNDYsIDEwMSwgNTAsIDI2LCAyMjYsIAorICAgIDI0NiwgNTAsIDI2LCAxMTMsIDIyNiwgMjQ1LCA1MCwgMjYsIDEzNCwgMjI2LCAyNDUsIDUwLCAyNiwgMjQ0LCAxMSwgMjI2LCAKKyAgICAyNDUsIDUwLCAyNiwgMjQ0LCA4MSwgMjI2LCAyNDUsIDUwLCAyNiwgMjMxLCAzNSwgNTAsIDI2LCAyMzMsIDE1NywgMjUyLCAKKyAgICAxMjgsIDUwLCAyNiwgMjMyLCAxOTQsIDUwLCAyNiwgMjI2LCAxMzEsIDUwLCAyNiwgMjExLCAxNTksIDUwLCAyNiwgMjUzLCAKKyAgICAyNDMsIDUwLCAyNiwgMjU0LCAwLCA1MCwgMjYsIDI0MiwgMTQ0LCA1MCwgMjYsIDIxNSwgMTg2LCAyNTIsIDEyOCwgNTAsIAorICAgIDI2LCAyMTAsIDg3LCA1MCwgMjIyLCAxOTgsIDIyMCwgMTEzLCA1MCwgMjIyLCAxOTgsIDIxNCwgMTg1LCA1MCwgMjIyLCAKKyAgICAxOTgsIDIyMCwgMTQyLCA1MCwgMjIyLCAxOTgsIDIyMCwgMTExLCA1MCwgMjIyLCAxOTgsIDI0NywgMjEzLCAyMjAsIDExMSwgCisgICAgNTAsIDIyMiwgMTk4LCAyMTksIDE2OCwgNTAsIDIyMiwgMTk4LCAyNDgsIDUzLCA1MCwgMjIyLCAxOTgsIDIyNCwgNiwgNTAsIAorICAgIDIyMiwgMTk4LCAyMjAsIDEyOSwgNTAsIDIyMiwgMTk4LCAyNDYsIDYwLCA1MCwgMjIyLCAxOTgsIDI1MywgMjM4LCA1MCwgCisgICAgMjIyLCAxOTgsIDI1MCwgMTcxLCA1MCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjUsIDIxMywgMjI1LCAxNDMsIDI0NywgCisgICAgMTkxLCA1LCAyMjUsIDI0LCAyNDEsIDIzNSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTcsIDQ1LCAyNDEsIDIzNSwgMjI1LCAKKyAgICAxNDMsIDI0NywgMTkxLCA1LCAyNTAsIDI0NywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTAsIDEwMSwgMjI1LCAxNDMsIAorICAgIDI0NywgMTkxLCA1LCAyMTEsIDIyMSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDEsIDIxMSwgMjI1LCAxNDMsIDI0NywgCisgICAgMTkxLCA1LCAyNDMsIDg1LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxNiwgMTE2LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIAorICAgIDc0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MSwgMTY5LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyMCwgMjksIDIyNSwgCisgICAgMTQzLCAyNDcsIDE5MSwgNSwgMjQ5LCAyNDQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjMxLCAxODQsIDIyNSwgMTQzLCAKKyAgICAyNDcsIDE5MSwgNSwgMjMxLCAxMzYsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjIxLCAyMTYsIDIyNSwgMTQzLCAyNDcsIAorICAgIDE5MSwgNSwgMjMyLCAyMzcsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjUxLCAxODgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgCisgICAgMjUwLCAyMzEsIDIyNSwgMzUsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQ3LCAxMzMsIDIyNSwgMTQzLCAyNDcsIDE5MSwgCisgICAgNSwgMjQ5LCAyMjMsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE5LCA4NywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDksIAorICAgIDIyNCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTIsIDYzLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyMCwgMTYsIDIyNSwgCisgICAgMTQzLCAyNDcsIDE5MSwgNSwgMjQwLCAyNDgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQxLCAxNzgsIDIyNSwgMTQzLCAKKyAgICAyNDcsIDE5MSwgNSwgMjUxLCAxMTIsIDIzMywgMzYsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjUwLCAyMjQsIDIyNSwgCisgICAgMTQzLCAyNDcsIDE5MSwgNSwgMjIzLCAxNTMsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQ1LCAyMzAsIDIyNSwgMTQzLCAKKyAgICAyNDcsIDE5MSwgNSwgMjQ2LCAxMDcsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE1LCAxMDUsIDIyNSwgMTQzLCAyNDcsIAorICAgIDE5MSwgNSwgMjUyLCA2NiwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjUsIDM2LCAyMTUsIDIzNSwgMjI1LCAxNDMsIDI0NywgCisgICAgMTkxLCA1LCAyMTMsIDE1OSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjYsIDE4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIAorICAgIDIyMiwgMTkwLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIzMiwgMjI0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyNiwgCisgICAgMTE1LCAyNTIsIDE4NCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDQsIDQ4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIAorICAgIDI0MiwgMTM4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxOCwgMTE5LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDQsIDI1MywgCisgICAgMTY4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxMiwgMzIsIDI1MiwgMTQ4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDM4LCAKKyAgICAyMjYsIDI0OCwgOTEsIDIzMiwgNjAsIDEsIDYxLCAyMzIsIDYwLCAxLCA3NSwgMjMyLCA2MCwgMSwgMjUzLCAxNTgsIDIzMiwgCisgICAgNjAsIDEsIDI1MiwgMTksIDIzMiwgNjAsIDEsIDI0MywgMjAyLCAyMzIsIDYwLCAxLCAyNDksIDYwLCAyMzIsIDYwLCAxLCAKKyAgICA3MywgMjMyLCA2MCwgMSwgMjEyLCA5OCwgMjMyLCA2MCwgMSwgMjEwLCAxNTksIDIzMiwgNjAsIDEsIDIxNiwgMjEwLCAyMzIsIAorICAgIDYwLCAxLCAyMzUsIDE0NCwgMjMyLCA2MCwgMSwgMjM1LCAyMywgMjMyLCA2MCwgMSwgMjI0LCA5NiwgMjMyLCA2MCwgMSwgCisgICAgMTU2LCAyMzIsIDYwLCAxLCAxOTMsIDIzMiwgNjAsIDEsIDIzMCwgMjUsIDIzMiwgNjAsIDEsIDIzMCwgMTY2LCAyMzIsIDYwLCAKKyAgICAxLCAyMjgsIDExMSwgMjMyLCA2MCwgMSwgNzAsIDIzMiwgNjAsIDEsIDIyNiwgMTA1LCAyMzIsIDYwLCAxLCAyMzQsIDQ3LCAKKyAgICAyMzIsIDYwLCAxLCAxNTMsIDIzMiwgNjAsIDEsIDIyMiwgOTEsIDIzMiwgNjAsIDEsIDIxNywgMTUyLCAyMzIsIDYwLCAxLCAKKyAgICAyMTUsIDE1OSwgMjMyLCA2MCwgMSwgMjU0LCAxMjMsIDIzMiwgNjAsIDEsIDI0NSwgMTUwLCAyMzIsIDYwLCAxLCAyNDIsIAorICAgIDYwLCAyMzIsIDYwLCAxLCAyMTEsIDE3OCwgMjUwLCAyMzcsIDEsIDYxLCAyNTAsIDIzNywgMSwgMjI2LCA5MSwgMjUwLCAKKyAgICAyMzcsIDEsIDI0OSwgNjAsIDI1MCwgMjM3LCAxLCAxNTYsIDI1MCwgMjM3LCAxLCAyMTQsIDExNiwgMjUwLCAyMzcsIDEsIAorICAgIDE1MywgMjUwLCAyMzcsIDEsIDIzMywgNjIsIDI1MCwgMjM3LCAxLCAyNTUsIDc1LCAyNTAsIDIzNywgMSwgMjI0LCA5NiwgCisgICAgMjUwLCAyMzcsIDEsIDI1MywgMTU4LCAyNTAsIDIzNywgMSwgMTkzLCAyNTAsIDIzNywgMSwgNzYsIDI1MCwgMjM3LCAxLCAKKyAgICAyNDgsIDIyMywgMjUwLCAyMzcsIDEsIDIxNywgMTUyLCAyNTAsIDIzNywgMSwgMjIwLCAxMDQsIDI1MCwgMjM3LCAxLCAyMjAsIAorICAgIDEwMywgMjUwLCAyMzcsIDEsIDIyMiwgOTEsIDI1MCwgMjM3LCAxLCAyNTEsIDY1LCAyNTAsIDIzNywgMSwgNzAsIDI1MCwgCisgICAgMjM3LCAxLCAyMjgsIDExMSwgMjUwLCAyMzcsIDEsIDIxMSwgMTc4LCAyNTAsIDIzNywgMSwgMjMwLCAyNSwgMjUwLCAyMzcsIAorICAgIDEsIDIxNSwgMTU4LCAyNTAsIDIzNywgMSwgMjI2LCAxMDUsIDI1MCwgMjM3LCAxLCAyMTgsIDIyNiwgMjUwLCAyMzcsIDEsIAorICAgIDczLCAyNTAsIDIzNywgMSwgNzUsIDI1MCwgMjM3LCAxLCAyMTQsIDExMywgMjUwLCAyMzcsIDEsIDIzNSwgMjMsIDI1MCwgCisgICAgMjM3LCAxLCAyMzUsIDE0LCAyNTAsIDIzNywgMSwgMjI5LCAxNTAsIDI1MCwgMjM3LCAxLCAyMTQsIDExOCwgMjUwLCAyMzcsIAorICAgIDEsIDI0MywgMjAyLCAyNTAsIDIzNywgMSwgMjQzLCAxMzcsIDI1MCwgMjM3LCAxLCAyMTgsIDE2OCwgMjUwLCAyMzcsIDEsIAorICAgIDIxOCwgMTY3LCAyNTAsIDIzNywgMSwgMjI5LCA3OSwgMjUwLCAyMzcsIDEsIDIzNiwgMzMsIDI1MCwgMjM3LCAxLCAyNTEsIAorICAgIDY0LCAyNTAsIDIzNywgMSwgMjE1LCAxNTksIDI1MCwgMjM3LCAxLCAyMTQsIDExNSwgMjUwLCAyMzcsIDEsIDIyMiwgMTgwLCAKKyAgICAyNTAsIDIzNywgMSwgMjMxLCAxMjksIDI1MCwgMjM3LCAxLCAyMzEsIDEyOCwgMjUwLCAyMzcsIDEsIDIzMSwgMTI3LCAyNTAsIAorICAgIDIzNywgMSwgMjMxLCAxMjYsIDI1MCwgMjM3LCAxLCAyMzMsIDYxLCAyNTAsIDIzNywgMSwgMjQ1LCAyMzQsIDI1MCwgMjM3LCAKKyAgICAxLCAyMTQsIDExNCwgNTUsIDMyLCAxLCA2MSwgNTUsIDMyLCAxLCAyNTIsIDc1LCA1NSwgMzIsIDEsIDIzNCwgMTgyLCA1NSwgCisgICAgMzIsIDEsIDI0OCwgOTAsIDU1LCAzMiwgMSwgNzUsIDU1LCAzMiwgMSwgMjEzLCAyNTUsIDU1LCAzMiwgMSwgMjEwLCA5NCwgCisgICAgNTUsIDMyLCAxLCAyNDEsIDIzOCwgNTUsIDMyLCAxLCAyMTYsIDE5NSwgNTUsIDMyLCAxLCA3MywgNTUsIDMyLCAxLCAxNzYsIAorICAgIDU1LCAzMiwgMSwgMjQ1LCAxNzQsIDU1LCAzMiwgMSwgMjQ1LCAxNTksIDU1LCAzMiwgMSwgMjQ1LCAxNTAsIDU1LCAzMiwgMSwgCisgICAgMjQ1LCA3NSwgNTUsIDMyLCAxLCA3NiwgNTUsIDMyLCAxLCAyMjUsIDIyMSwgNTUsIDMyLCAxLCAyMjAsIDYzLCA1NSwgMzIsIAorICAgIDEsIDIzMywgMjE3LCA1NSwgMzIsIDEsIDI0NSwgOTIsIDU1LCAzMiwgMSwgMjQ1LCA4MiwgNTUsIDMyLCAxLCAyMTcsIDIyLCAKKyAgICA1NSwgMzIsIDEsIDcwLCA1NSwgMzIsIDEsIDI0NSwgMTc3LCA1NSwgMzIsIDEsIDIyNSwgMTM2LCA1NSwgMzIsIDEsIDIzNCwgCisgICAgMTE5LCA1NSwgMzIsIDEsIDI0NSwgMjAyLCA1NSwgMzIsIDEsIDI0NSwgODQsIDU1LCAzMiwgMSwgMjUwLCAxMzEsIDU1LCAKKyAgICAzMiwgMSwgMjM2LCAzMywgNTUsIDMyLCAxLCAyMTQsIDExOCwgNTUsIDMyLCAyMjcsIDE5OCwgMTEwLCA1NSwgMzIsIDIyNywgCisgICAgMTk4LCAxODksIDU1LCAzMiwgMjI3LCAxOTgsIDIxNiwgMjQ3LCA1NSwgMzIsIDIyNywgMTk4LCAyNDQsIDExNCwgMjQyLCAKKyAgICAxNTMsIDEsIDI1NCwgMjA0LCAyNDIsIDE1MywgMSwgMjUyLCAxNjMsIDI0MiwgMTUzLCAxLCAyNDIsIDIxMSwgMjQyLCAxNTMsIAorICAgIDEsIDI0OCwgMjA0LCAyNDIsIDE1MywgMSwgMjU0LCAyMDAsIDI0MiwgMTUzLCAxLCAyMjQsIDc5LCAyNDIsIDE1MywgMSwgCisgICAgMjM1LCAxNTUsIDI0MiwgMTUzLCAxLCAyNDIsIDM5LCAyNDIsIDE1MywgMSwgMjE2LCAxNTgsIDI0MiwgMTUzLCAxLCAyNDUsIAorICAgIDE4MywgMjQyLCAxNTMsIDEsIDIzMywgMTkwLCAyNDIsIDE1MywgMSwgMjMzLCAxMTMsIDI0MiwgMTUzLCAxLCAyMzEsIDE3OSwgCisgICAgMjQyLCAxNTMsIDEsIDIyOSwgMTg0LCAyNDIsIDE1MywgMSwgMjM1LCAxMTksIDI0MiwgMTUzLCAxLCAyMTQsIDEzNiwgMjQyLCAKKyAgICAxNTMsIDEsIDIyNiwgNjksIDI0MiwgMTUzLCAxLCAyMjgsIDE5NSwgMjQyLCAxNTMsIDEsIDIyMywgMTY1LCAyNDIsIDE1MywgCisgICAgMSwgMjIxLCAyMTgsIDI0MiwgMTUzLCAxLCAyMTcsIDQsIDI0MiwgMTUzLCAxLCAyMTEsIDIzNCwgMjQyLCAxNTMsIDEsIAorICAgIDI0NCwgMTc4LCAyNDIsIDE1MywgMSwgMjM2LCAzNywgMjQyLCAxNTMsIDEsIDI0MCwgMTk5LCAyNDIsIDE1MywgMSwgMjI2LCAKKyAgICAxMzksIDI0MiwgMTUzLCAxLCAyMjgsIDIwMCwgMjQwLCAyMTAsIDIxNCwgMjA5LCAxLCAyNTQsIDE0NywgMjE0LCAyMDksIDEsIAorICAgIDI1MiwgMjYsIDIxNCwgMjA5LCAxLCAyNDMsIDEwOCwgMjE0LCAyMDksIDEsIDIzNCwgMTMyLCAyMTQsIDIwOSwgMSwgMjQ4LCAKKyAgICA1NCwgMjE0LCAyMDksIDEsIDI0MSwgNjgsIDIxNCwgMjA5LCAxLCAyMTEsIDIyNywgMjE0LCAyMDksIDEsIDIxMCwgODUsIAorICAgIDIxNCwgMjA5LCAxLCAyNDAsIDI0MSwgMjE0LCAyMDksIDEsIDIxNiwgMjMwLCAyMTQsIDIwOSwgMSwgMjEwLCAyMzMsIDIxNCwgCisgICAgMjA5LCAxLCAyMzQsIDI1MCwgMjE0LCAyMDksIDEsIDIyMCwgMjAsIDIxNCwgMjA5LCAxLCAyMzMsIDk4LCAyMTQsIDIwOSwgCisgICAgMSwgMjMxLCA2NSwgMjE0LCAyMDksIDEsIDI0OCwgMjEsIDIxNCwgMjA5LCAxLCAyMjcsIDE5NCwgMjE0LCAyMDksIDEsIAorICAgIDIxMCwgMTMsIDIxNCwgMjA5LCAxLCAyMjEsIDI0OCwgMjE0LCAyMDksIDEsIDI1NCwgMTk2LCAyMTQsIDIwOSwgMSwgMjI0LCAKKyAgICAxNTAsIDIxNCwgMjA5LCAxLCAyMjIsIDI1LCAyMTQsIDIwOSwgMSwgMjI0LCAzNSwgMjE0LCAyMDksIDEsIDIyMywgMTQ0LCAKKyAgICAyMTQsIDIwOSwgMSwgMjE2LCAxOTksIDIxNCwgMjA5LCAxLCAyNDIsIDI0NCwgMjE0LCAyMDksIDEsIDExMSwgMjE0LCAyMDksIAorICAgIDEsIDczLCAyMTQsIDIwOSwgMSwgNzAsIDIxNCwgMjA5LCAxLCAyMTgsIDE3OSwgMjE0LCAyMDksIDIxMSwgMjA5LCAyNDcsIAorICAgIDE3MiwgNTUsIDIyNSwgMTY5LCA1LCA2MSwgNTUsIDIyNSwgMTY5LCA1LCA3MywgNTUsIDIyNSwgMTY5LCA1LCA3MCwgNTUsIAorICAgIDIyNSwgMTY5LCA1LCAxNzYsIDU1LCAyMjUsIDE2OSwgNSwgMjMzLCAyMTcsIDU1LCAyMjUsIDE2OSwgNSwgMjQzLCAxMzUsIAorICAgIDU1LCAyMjUsIDE2OSwgNSwgMjQyLCAxMTMsIDU1LCAyMjUsIDE2OSwgNSwgMjExLCAxNjUsIDU1LCAyMjUsIDE2OSwgNSwgCisgICAgMjUxLCAzMywgNTUsIDIyNSwgMTY5LCA1LCAyMzUsIDE0MSwgNTUsIDIyNSwgMTY5LCA1LCAyMzUsIDEwOCwgNTUsIDIyNSwgCisgICAgMTY5LCA1LCAyMTcsIDEwNSwgNTUsIDIyNSwgMTY5LCA1LCAyMTUsIDExOCwgNTUsIDIyNSwgMTY5LCA1LCAyNDgsIDIyMSwgCisgICAgNTUsIDIyNSwgMTY5LCA1LCAyNDgsIDMsIDU1LCAyMjUsIDE2OSwgNSwgMjQ2LCA3OCwgNTUsIDIyNSwgMTY5LCA1LCAyMTYsIAorICAgIDIwOCwgNTUsIDIyNSwgMTY5LCA1LCAxOTAsIDU1LCAyMjUsIDE2OSwgNSwgMjUyLCAxOTEsIDU1LCAyMjUsIDE2OSwgNSwgCisgICAgMjQ0LCAxOTYsIDU1LCAyMjUsIDE2OSwgNSwgMTk3LCA1NSwgMjI1LCAxNjksIDUsIDIyNywgMjM3LCA1NSwgMjI1LCAxNjksIAorICAgIDUsIDE4NCwgNTUsIDIyNSwgMTY5LCA1LCAyMzAsIDIzMCwgNTUsIDIyNSwgMTY5LCA1LCAyMzAsIDEwMiwgNTUsIDIyNSwgCisgICAgMTY5LCA1LCAxOTEsIDU1LCAyMjUsIDE2OSwgNSwgMjE0LCAyNywgNTUsIDIyNSwgMTY5LCA1LCAyMTMsIDE3NiwgNTUsIAorICAgIDIyNSwgMTY5LCA1LCAyMDUsIDU1LCAyMjUsIDE2OSwgNSwgMjIyLCAxNDAsIDU1LCAyMjUsIDE2OSwgNSwgMjMzLCAxMzUsIAorICAgIDU1LCAyMjUsIDE2OSwgNSwgMjA2LCA1NSwgMjI1LCAxNjksIDUsIDIxMCwgMTE2LCA1NSwgMjI1LCAxNjksIDUsIDIyMCwgCisgICAgMTAyLCA1NSwgMjI1LCAxNjksIDUsIDIxOCwgMjIzLCA1NSwgMjI1LCAxNjksIDUsIDE2MiwgNTUsIDIyNSwgMTY5LCA1LCAKKyAgICAyNTMsIDE4NiwgNTUsIDIyNSwgMTY5LCA1LCAyNTMsIDE4NSwgNTUsIDIyNSwgMTY5LCA1LCAyNTMsIDE4NCwgNTUsIDIyNSwgCisgICAgMTY5LCA1LCAyMTEsIDE0MiwgNTUsIDIyNSwgMTY5LCA1LCAyNDgsIDIwMCwgNTUsIDIyNSwgMTY5LCA1LCAyNDgsIDE5OSwgCisgICAgNTUsIDIyNSwgMTY5LCA1LCAyNTIsIDE3MCwgNTUsIDIyNSwgMTY5LCA1LCAyNTEsIDg1LCA1NSwgMjI1LCAxNjksIDIxMSwgCisgICAgMjA5LCAyNDcsIDE3MiwgNTUsIDIyNSwgMTY5LCA1NCwgMTEwLCA1NSwgMjI1LCAxNjksIDU0LCAxMDUsIDU1LCAyMjUsIAorICAgIDE2OSwgNTQsIDIxNiwgMjQ3LCA1NSwgMjI1LCAxNjksIDU0LCAyMTUsIDczLCA1NSwgMjI1LCAxNjksIDU0LCAyNDAsIDIxMCwgCisgICAgMTgxLCA2LCAxLCAxOTksIDczLCAxODEsIDYsIDEsIDE5OSwgNzUsIDE4MSwgNiwgMSwgMTk5LCA2MSwgMTgxLCA2LCAxLCAKKyAgICAxOTksIDI1NCwgMjA5LCAxODEsIDYsIDEsIDE5OSwgNzYsIDE4MSwgNiwgMSwgMTk5LCAyMjYsIDE4MywgMTgxLCA2LCAxLCAKKyAgICAyMTksIDI1MSwgNzMsIDE4MSwgNiwgMSwgMjE5LCAyNTEsIDc1LCAxODEsIDYsIDEsIDIxOSwgMjUxLCA2MSwgMTgxLCA2LCAKKyAgICAxLCAyMTksIDI1MSwgMjU0LCAyMDksIDE4MSwgNiwgMSwgMjE5LCAyNTEsIDc2LCAxODEsIDYsIDEsIDIxOSwgMjUxLCAyMjYsIAorICAgIDE4MywgMTgxLCA2LCAxLCAyNTMsIDE2NywgMTgxLCA2LCAxLCAyMjYsIDExNiwgMTgxLCA2LCAxLCAyMTEsIDE5NSwgMTgxLCAKKyAgICA2LCAxLCAyMTEsIDQ0LCAxODEsIDYsIDEsIDI0MiwgNjAsIDE4MSwgNiwgMSwgMjI1LCAyMTEsIDE4MSwgNiwgMSwgMjUyLCAKKyAgICA2NiwgMTgxLCA2LCAxLCAyMTcsIDExLCAxODEsIDYsIDEsIDI0OCwgNzcsIDE4MSwgNiwgMSwgMjUwLCAxMjgsIDE4MSwgNiwgCisgICAgMSwgMjM1LCAxMjQsIDE4MSwgNiwgMSwgMjM0LCAxODksIDE4MSwgNiwgMSwgMjQzLCA4MywgMTgxLCA2LCAxLCAyNDUsIAorICAgIDIwMiwgMTgxLCA2LCAxLCAyMTMsIDI1MCwgMTgxLCA2LCAxLCAyNDUsIDU5LCAxODEsIDYsIDEsIDIxNiwgMTk0LCAxODEsIAorICAgIDYsIDEsIDI0NSwgODIsIDE4MSwgNiwgMSwgMjEwLCA5MiwgMTgxLCA2LCAxLCAyNDUsIDc1LCAxODEsIDYsIDEsIDIxMCwgCisgICAgNzMsIDE4MSwgNiwgMSwgMjQ1LCA5MiwgMTgxLCA2LCAxLCAyNDUsIDE3NCwgMTgxLCA2LCAxLCAyNDUsIDE1OSwgMTgxLCA2LCAKKyAgICAxLCAyNDUsIDE1MCwgMTgxLCA2LCAxLCAyNDUsIDEzOCwgMTgxLCA2LCAxLCAyMjYsIDIxOSwgMTgxLCA2LCAxLCAyNDUsIAorICAgIDM4LCAxODEsIDQsIDEsIDE5OSwgNzMsIDE4MSwgNCwgMSwgMTk5LCA3NSwgMTgxLCA0LCAxLCAxOTksIDYxLCAxODEsIDQsIAorICAgIDEsIDE5OSwgMjU0LCAyMDksIDE4MSwgNCwgMSwgMTk5LCA3NiwgMTgxLCA0LCAxLCAxOTksIDIyNiwgMTgzLCAxODEsIDQsIAorICAgIDEsIDIxOSwgMjUxLCA3MywgMTgxLCA0LCAxLCAyMTksIDI1MSwgNzUsIDE4MSwgNCwgMSwgMjE5LCAyNTEsIDYxLCAxODEsIAorICAgIDQsIDEsIDIxOSwgMjUxLCAyNTQsIDIwOSwgMTgxLCA0LCAxLCAyMTksIDI1MSwgNzYsIDE4MSwgNCwgMSwgMjE5LCAyNTEsIAorICAgIDIyNiwgMTgzLCAxODEsIDQsIDEsIDI1MywgMTY3LCAxODEsIDQsIDEsIDIyNiwgMTE2LCAxODEsIDQsIDEsIDIxMSwgMTk1LCAKKyAgICAxODEsIDQsIDEsIDIxMSwgNDQsIDE4MSwgNCwgMSwgMjQyLCA2MCwgMTgxLCA0LCAxLCAyMjUsIDIxMSwgMTgxLCA0LCAxLCAKKyAgICAyNTIsIDY2LCAxODEsIDQsIDEsIDIxNywgMTEsIDE4MSwgNCwgMSwgMjQ4LCA3NywgMTgxLCA0LCAxLCAyNTAsIDEyOCwgCisgICAgMTgxLCA0LCAxLCAyMzUsIDEyNCwgMTgxLCA0LCAxLCAyMzQsIDE4OSwgMTgxLCA0LCAxLCAyNDMsIDgzLCAxODEsIDQsIDEsIAorICAgIDI0NSwgMjAyLCAxODEsIDQsIDEsIDIxMywgMjUwLCAxODEsIDQsIDEsIDI0NSwgNTksIDE4MSwgNCwgMSwgMjE2LCAxOTQsIAorICAgIDE4MSwgNCwgMSwgMjQ1LCA4MiwgMTgxLCA0LCAxLCAyMTAsIDkyLCAxODEsIDQsIDEsIDI0NSwgNzUsIDE4MSwgNCwgMSwgCisgICAgMjEwLCA3MywgMTgxLCA0LCAxLCAyNDUsIDkyLCAxODEsIDQsIDEsIDI0NSwgMTc0LCAxODEsIDQsIDEsIDI0NSwgMTU5LCAKKyAgICAxODEsIDQsIDEsIDI0NSwgMTUwLCAxODEsIDQsIDEsIDI0NSwgMTM4LCAxODEsIDQsIDEsIDIyNiwgMjE5LCAxODEsIDQsIDEsIAorICAgIDI0NSwgMzgsIDIyMCwgNjksIDEsIDIyNSwgMjA5LCAyMjAsIDY5LCAxLCAyMTYsIDUsIDIyMCwgNjksIDEsIDIzNCwgOTEsIAorICAgIDIyMCwgNjksIDEsIDI0NCwgMTQ3LCAyMjAsIDY5LCAxLCAyMTYsIDE3MiwgMjIwLCA2OSwgMSwgMjE5LCA1OCwgMjIwLCA2OSwgCisgICAgMSwgMjE4LCAxNCwgMjIwLCA2OSwgMSwgMjUwLCA2MSwgMjIwLCA2OSwgMSwgMjExLCA0NiwgMjIwLCA2OSwgMSwgMjQwLCAKKyAgICAyMDksIDIyMCwgNjksIDEsIDI1MiwgNSwgMjIwLCA2OSwgMSwgMjQ4LCA4OSwgMjIwLCA2OSwgMSwgMjQzLCAxMjEsIDIyMCwgCisgICAgNjksIDEsIDIxMywgMTIzLCAyMjAsIDY5LCAxLCAyMTYsIDE3NiwgMjIwLCA2OSwgMSwgMjEwLCAyMSwgMjIwLCA2OSwgMSwgCisgICAgMjMxLCA4OSwgMjIwLCA2OSwgMSwgMjM1LCA0OSwgMjIwLCA2OSwgMSwgMjExLCAyMjUsIDIyMCwgNjksIDEsIDI0MiwgNDgsIAorICAgIDIyMCwgNjksIDEsIDIzMiwgMTQyLCAyMjAsIDY5LCAxLCAyMzAsIDE4OSwgMjIwLCA2OSwgMSwgMjM2LCA0MCwgMjIwLCA2OSwgCisgICAgMSwgMjQ1LCAyMDEsIDIyMCwgNjksIDEsIDI1MywgMjMxLCAyMjAsIDY5LCAxLCAyNTQsIDI0NywgMjIwLCA2OSwgMSwgMjI2LCAKKyAgICAxOTYsIDIyMCwgNjksIDEsIDIxMSwgMjEyLCAyMjAsIDY5LCAxLCAyMjYsIDEzMCwgMjIwLCA2OSwgMSwgMjU0LCAyMDksIAorICAgIDIyMCwgNjksIDEsIDIyMiwgMjA4LCAyMjAsIDY5LCAxLCAyMjcsIDE5NCwgMjIwLCA2OSwgMSwgMjQ1LCAyMTcsIDIyMCwgCisgICAgNjksIDEsIDI1NCwgMjE0LCAyMjAsIDY5LCAxLCAyNDAsIDExMSwgMjIwLCA2OSwgMSwgMjE0LCAxNjMsIDIyMCwgNjksIDEsIAorICAgIDIyNiwgMjU0LCAyMjAsIDY5LCAxLCAyMjYsIDE3NiwgMjIwLCA2OSwgMSwgMjI2LCAyMTgsIDIyMCwgNjksIDEsIDI1MywgCisgICAgMTcwLCAyMjAsIDY5LCAxLCAyNTQsIDE5LCAyMjAsIDY5LCAxLCAyMjYsIDE1OCwgMjIwLCA2OSwgMSwgMjU0LCAxOTIsIAorICAgIDIyMCwgNjksIDEsIDI0NSwgODYsIDIyMCwgNjksIDEsIDI1MywgMjUzLCAyMjAsIDY5LCAxLCAyNDUsIDIyNywgMjIwLCA2OSwgCisgICAgMSwgMjQwLCAxMTgsIDIyMCwgNjksIDEsIDIxMSwgMTMsIDIyNiwgMTQxLCAxLCAyNTQsIDE3MCwgMjI2LCAxNDEsIDEsIAorICAgIDI1MiwgMTkxLCAyMjYsIDE0MSwgMSwgMjE3LCAxMDUsIDIyNiwgMTQxLCAxLCAyMzUsIDE0MSwgMjI2LCAxNDEsIDEsIDIxMSwgCisgICAgMTY1LCAyMjYsIDE0MSwgMSwgMjM0LCAxMzIsIDIyNiwgMTQxLCAxLCAyNDgsIDc2LCAyMjYsIDE0MSwgMSwgMjA1LCAyMjYsIAorICAgIDE0MSwgMSwgMjA2LCAyMjYsIDE0MSwgMSwgMjIwLCAyNiwgMjI2LCAxNDEsIDEsIDI0OCwgMjUsIDIyNiwgMTQxLCAxLCAKKyAgICAyNTAsIDIxNSwgMjI2LCAxNDEsIDEsIDI0MywgMTM1LCAyMjYsIDE0MSwgMSwgMjQ0LCAxOTYsIDIyNiwgMTQxLCAxLCAyMjQsIAorICAgIDg2LCAyMjYsIDE0MSwgMSwgMjM1LCA5LCAyMjYsIDE0MSwgMSwgMjMzLCAxMzAsIDIyNiwgMTQxLCAxLCAyMzAsIDIwMCwgCisgICAgMjI2LCAxNDEsIDEsIDIyNywgMTc4LCAyMjYsIDE0MSwgMSwgMjEyLCAzMCwgMjI2LCAxNDEsIDEsIDE2MiwgMjI2LCAxNDEsIAorICAgIDEsIDE5MSwgMjI2LCAxNDEsIDEsIDYxLCAyMjYsIDE0MSwgMSwgNzUsIDIyNiwgMTQxLCAxLCA3MywgMjI2LCAxNDEsIDEsIAorICAgIDc2LCAyMjYsIDE0MSwgMSwgNzAsIDIyNiwgMTQxLCAxLCAyNTUsIDczLCAyMjYsIDE0MSwgMSwgMjQ1LCAyMDksIDIyNiwgCisgICAgMTQxLCAxLCAyMjYsIDE4MywgMjI2LCAxNDEsIDIxLCAyMTAsIDg2LCAyMjYsIDE0MSwgMjEsIDExMCwgMjI2LCAxNDEsIDIxLCAKKyAgICAxMDUsIDIyNiwgMTQxLCAyMSwgMTU4LCAyMjYsIDE0MSwgMjEsIDE2MSwgMjI2LCAxNDEsIDIxLCAxODksIDIyNiwgMTQxLCAKKyAgICAyMSwgMTk0LCAyMjYsIDE0MSwgMjEsIDE5OCwgMjI2LCAxNDEsIDIxLCAxOTUsIDIyNiwgMTQxLCAyMSwgMjAwLCAyNDksIAorICAgIDY3LCAzLCA2MSwgMjQ5LCA2NywgMywgNzUsIDI0OSwgNjcsIDMsIDczLCAyNDksIDY3LCAzLCA3NiwgMjQ5LCA2NywgMywgCisgICAgNzAsIDI0OSwgNjcsIDMsIDIzNSwgMTQxLCAyNDksIDY3LCAzLCAyMzUsIDY4LCAyNDksIDY3LCAzLCAxNzYsIDI0OSwgNjcsIAorICAgIDMsIDIzNCwgMTgyLCAyNDksIDY3LCAzLCAyMzQsIDkyLCAyNDksIDY3LCAzLCAyMzQsIDI4LCAyNDksIDY3LCAzLCAyMzMsIAorICAgIDIxNywgMjQ5LCA2NywgMywgMjMzLCAxMzUsIDI0OSwgNjcsIDMsIDIzMywgNTgsIDI0OSwgNjcsIDMsIDIzMiwgMjQxLCAKKyAgICAyNDksIDY3LCAzLCAyMzIsIDE1NiwgMjQ5LCA2NywgMywgMjMyLCA5OCwgMjQ5LCA2NywgMywgMTg0LCAyNDksIDY3LCAzLCAKKyAgICAyMzEsIDkxLCAyNDksIDY3LCAzLCAyMzAsIDIzMCwgMjQ5LCA2NywgMywgMjMwLCAxNjEsIDI0OSwgNjcsIDMsIDIzMCwgCisgICAgMTAyLCAyNDksIDY3LCAzLCAxOTcsIDI0OSwgNjcsIDMsIDIyOSwgMTA3LCAyNDksIDY3LCAzLCAyMjgsIDIzMywgMjQ5LCAKKyAgICA2NywgMywgMjI4LCA3NCwgMjQ5LCA2NywgMywgMjI3LCAyMzcsIDI0OSwgNjcsIDMsIDE5MCwgMjQ5LCA2NywgMywgMjI1LCAKKyAgICAyMjEsIDI0OSwgNjcsIDMsIDIyNSwgMTA4LCAyNDksIDY3LCAzLCAyMjUsIDE2LCAyNDksIDY3LCAzLCAyMjQsIDE1MCwgCisgICAgMjQ5LCA2NywgMywgMjA1LCAyNDksIDY3LCAzLCAyMjMsIDEyOCwgMjQ5LCA2NywgMywgMjIzLCAzNSwgMjQ5LCA2NywgMywgCisgICAgMjIyLCAyMTEsIDI0OSwgNjcsIDMsIDIyMiwgMTQwLCAyNDksIDY3LCAzLCAyMDYsIDI0OSwgNjcsIDMsIDIyMSwgMTgxLCAKKyAgICAyNDksIDY3LCAzLCAyMTksIDE5MSwgMjQ5LCA2NywgMywgMjE5LCA1OCwgMjQ5LCA2NywgMywgMjE4LCA4MywgMjQ5LCA2NywgCisgICAgMywgMjE3LCAxMDUsIDI0OSwgNjcsIDMsIDIxNywgMjIsIDI0OSwgNjcsIDMsIDIxNiwgMTE3LCAyNDksIDY3LCAzLCAxMTEsIAorICAgIDI0OSwgNjcsIDMsIDIxNSwgMTE4LCAyNDksIDY3LCAzLCAyMTIsIDY1LCAyNDksIDY3LCAzLCAyMTIsIDIyLCAyNDksIDY3LCAKKyAgICAzLCAyMTEsIDI1MCwgMjQ5LCA2NywgMywgMjExLCAyMjcsIDI0OSwgNjcsIDMsIDIxMSwgMTY1LCAyNDksIDY3LCAzLCAyMTEsIAorICAgIDE2MiwgMjQ5LCA2NywgMywgMjEwLCAxMTYsIDI0OSwgNjcsIDMsIDIxMCwgMjMsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjU0LCAKKyAgICAxNjgsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjUyLCAyNSwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNDIsIDIwMSwgMjM2LCAxLCAKKyAgICAyNTQsIDI3LCAxLCAyNDgsIDE4OCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNDEsIDIzOCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAKKyAgICAyMTIsIDMwLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIxMCwgOTcsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjQxLCAxOTUsIDIzNiwgCisgICAgMSwgMjU0LCAyNywgMSwgMjE2LCAyMjYsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjEwLCAyMzIsIDIzNiwgMSwgMjU0LCAyNywgCisgICAgMSwgMjM0LCAyMjUsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjMzLCA5MywgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMzEsIDY1LCAKKyAgICAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyNywgMTk0LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyMSwgMjQ5LCAyMzYsIDEsIDI1NCwgCisgICAgMjcsIDEsIDI1MywgMTYyLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyNSwgMjIxLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyMiwgCisgICAgMjQsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjI0LCAzNCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjMsIDY3LCAyMzYsIDEsIAorICAgIDI1NCwgMjcsIDEsIDIyMCwgMjAsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjE3LCAzNiwgMjM2LCAxLCAyNTQsIDI3LCAyMjEsIAorICAgIDE3MywgNTAsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDExMCwgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMTA1LCAyMzYsIDEsIDI1NCwgCisgICAgMjcsIDU0LCAxNTgsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDIxNiwgMjQ3LCAyMzYsIDEsIDI1NCwgMjcsIDU0LCAyMTUsIDczLCAKKyAgICAyMzYsIDEsIDI1NCwgMjcsIDU0LCAxMjMsIDI0MCwgMjEwLCAyMzYsIDEsIDI1NCwgMjcsIDU0LCAxMjMsIDIxNiwgMTQ3LCAKKyAgICAyMzYsIDEsIDI1NCwgMjcsIDU0LCAyMTYsIDI0OCwgMjE2LCAxNDcsIDIyNSwgMTE5LCAxLCAyNTQsIDE2NSwgMjI1LCAxMTksIAorICAgIDEsIDI1MiwgMjgsIDIyNSwgMTE5LCAxLCAyNDMsIDEwOSwgMjI1LCAxMTksIDEsIDI0OCwgNTYsIDIyNSwgMTE5LCAxLCAKKyAgICAyNDEsIDIzOCwgMjI1LCAxMTksIDEsIDIxMiwgMzcsIDIyNSwgMTE5LCAxLCAyMTAsIDExMCwgMjI1LCAxMTksIDEsIDI0MSwgCisgICAgMTk3LCAyMjUsIDExOSwgMSwgMjE2LCAyMzAsIDIyNSwgMTE5LCAxLCAyMTAsIDIzMywgMjI1LCAxMTksIDEsIDIzNCwgMjUwLCAKKyAgICAyMjUsIDExOSwgMSwgMjMzLCA5OSwgMjI1LCAxMTksIDEsIDIzMSwgNjUsIDIyNSwgMTE5LCAxLCAyMjcsIDE5NCwgMjI1LCAKKyAgICAxMTksIDEsIDIyMCwgMTQ0LCAyMjUsIDExOSwgMSwgMjU0LCAxOTYsIDIyNSwgMTE5LCAxLCAyMjUsIDIyMSwgMjI1LCAxMTksIAorICAgIDEsIDIyMiwgMjUsIDIyNSwgMTE5LCAxLCAyMjQsIDM5LCAyMjUsIDExOSwgMSwgMjIyLCAxODksIDIyNSwgMTE5LCAxLCAKKyAgICAyMjAsIDIwLCAyMjUsIDExOSwgMSwgMjE3LCA0MSwgMjI1LCAxMTksIDU0LCAxMTAsIDIyNSwgMTE5LCA1NCwgMjE2LCAyNDcsIAorICAgIDIyNSwgMTE5LCA1NCwgMjE1LCA3MywgMjI1LCAxMTksIDU0LCAxMjMsIDI0MCwgMjEwLCAyMjUsIDExOSwgNTQsIDEwNSwgCisgICAgMjI1LCAxMTksIDU0LCAxNTgsIDIyNSwgMTE5LCAyMTEsIDIwOSwgMjIwLCAxMzcsIDIzMiwgNTksIDEsIDYxLCAyMzIsIDU5LCAKKyAgICAxLCAyNTMsIDE1OCwgMjMyLCA1OSwgMSwgMjQzLCAyMDIsIDIzMiwgNTksIDEsIDI0OSwgNjAsIDIzMiwgNTksIDEsIDc1LCAKKyAgICAyMzIsIDU5LCAxLCAyMTQsIDEwNSwgMjMyLCA1OSwgMSwgNzMsIDIzMiwgNTksIDEsIDIxMSwgMTE3LCAyMzIsIDU5LCAxLCAKKyAgICAyMzUsIDIzLCAyMzIsIDU5LCAxLCAxNTYsIDIzMiwgNTksIDEsIDE5MywgMjMyLCA1OSwgMSwgMjMwLCAyNSwgMjMyLCA1OSwgCisgICAgMSwgNzYsIDIzMiwgNTksIDEsIDE1MywgMjMyLCA1OSwgMSwgMjE4LCAyMjYsIDIzMiwgNTksIDEsIDIxNywgMTUyLCAyMzIsIAorICAgIDU5LCAxLCA3MCwgMjMyLCA1OSwgMSwgMjQ1LCA2LCAyMzIsIDU5LCAxLCAyMjQsIDk2LCAyMzIsIDU5LCAxLCAyMjIsIDkxLCAKKyAgICAyMzIsIDU5LCAxLCAyMTUsIDE1OSwgMjMyLCA1OSwgMSwgMjU0LCAxMjMsIDIzMiwgNTksIDEsIDI0NSwgMTUwLCAyMzIsIAorICAgIDU5LCAxLCAyMzIsIDYyLCAyMzIsIDU5LCAxLCAyMjgsIDExMSwgMjMyLCA1OSwgMSwgMjUxLCA2NiwgMjMyLCA1OSwgMjE1LCAKKyAgICAyMjIsIDc4LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgNjEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCA3NSwgMjMxLCA0OCwgCisgICAgMjQxLCAxNzQsIDEsIDczLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgNzYsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAxOTEsIAorICAgIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMTIsIDY1LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjUyLCAxOTEsIDIzMSwgNDgsIAorICAgIDI0MSwgMTc0LCAxLCAyNTIsIDE5MCwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDE5MCwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIAorICAgIDE4NCwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDE5NywgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIyOSwgMjI4LCAyMzEsIDQ4LCAKKyAgICAyNDEsIDE3NCwgMSwgMjI5LCAxMDcsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjksIDEwNiwgMjMxLCA0OCwgMjQxLCAxNzQsIAorICAgIDEsIDIwNSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIyMywgMTg3LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjMzLCAxMzUsIAorICAgIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMzQsIDEzMiwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDI0MSwgMTg5LCAyMzEsIDQ4LCAKKyAgICAyNDEsIDE3NCwgMSwgMjA2LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjIyLCAzMywgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIAorICAgIDIyMSwgMTgxLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMTc2LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjI0LCA4OCwgMjMxLCAKKyAgICA0OCwgMjQxLCAxNzQsIDEsIDIxNywgMTA1LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjE3LCAxMDQsIDIzMSwgNDgsIDI0MSwgCisgICAgMTc0LCAxLCAyMTcsIDIyLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjE3LCAyMSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIAorICAgIDExMSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDI0OCwgMjIxLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMTYsIDIxMywgMTcwLCAKKyAgICAyMzEsIDQ4LCAyNDEsIDE3NCwgMTYsIDIxMywgMTY5LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCA2MSwgMjMxLCA0OCwgMjQ5LCAKKyAgICA5NCwgMSwgNzUsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDczLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCA3NiwgMjMxLCA0OCwgCisgICAgMjQ5LCA5NCwgMSwgMTkxLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMTIsIDY1LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyNTIsIAorICAgIDE5MSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMTkwLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAxODQsIDIzMSwgNDgsIDI0OSwgCisgICAgOTQsIDEsIDE5NywgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjI5LCAxMDcsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIwNSwgMjMxLCAKKyAgICA0OCwgMjQ5LCA5NCwgMSwgMjMzLCAxMzUsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIzNCwgMTMyLCAyMzEsIDQ4LCAyNDksIAorICAgIDk0LCAxLCAyNDEsIDE4OSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjA2LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyNTQsIDIzLCAKKyAgICAyMDYsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIyMSwgMTgxLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAxNzYsIDIzMSwgNDgsIAorICAgIDI0OSwgOTQsIDEsIDIyNCwgODgsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIxNywgMTA1LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAKKyAgICAyMTcsIDIyLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAxMTEsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDI0OCwgMjIxLCAyMzEsIAorICAgIDQ4LCAyNDksIDk0LCAyMzIsIDE0NSwgMjIyLCAyMTcsIDIzMSwgNDgsIDI0OSwgOTQsIDIzMiwgMTQ1LCAyMzYsIDYsIDIzNCwgCisgICAgMTIwLCAxLCA2MSwgMjM0LCAxMjAsIDI1LCA1LCA3MywgMjM0LCAxMjAsIDI1LCA1LCA3MCwgMjM0LCAxMjAsIDI1LCA1LCAKKyAgICAxNDksIDE1MywgMjM0LCAxMjAsIDI1LCA1LCA3NSwgMjM0LCAxMjAsIDI1LCA1LCA3NiwgMjM0LCAxMjAsIDI1LCAyMzMsIAorICAgIDIzLCA3OCwgMjM0LCAxMjAsIDUsIDUyLCAyMjIsIDIzNCwgNTEsIDIzNCwgMTIwLCA1LCAyNTQsIDc1LCAyMzQsIDEyMCwgNSwgCisgICAgMjEzLCAxNDcsIDIzNCwgMTIwLCAxLCAxNzYsIDIzNCwgMTIwLCAxLCAyMzQsIDEzMiwgMjM0LCAxMjAsIDEsIDI0MywgMTM1LCAKKyAgICAyMzQsIDEyMCwgMSwgMjQyLCAyNDksIDIzNCwgMTIwLCAxLCAyNTEsIDMzLCAyMzQsIDEyMCwgMSwgMjUwLCAxNTcsIDIzNCwgCisgICAgMTIwLCAxLCAyMzUsIDE0MSwgMjM0LCAxMjAsIDEsIDIyNywgMTY1LCAyMzQsIDEyMCwgMSwgMjE1LCAxNTYsIDIzNCwgMTIwLCAKKyAgICAxLCAyMTUsIDE0NCwgMjM0LCAxMjAsIDEsIDI0OCwgMTM1LCAyMzQsIDEyMCwgMSwgMjQ4LCAxMTksIDIzNCwgMTIwLCAxLCAKKyAgICAyMjgsIDExMCwgMjM0LCAxMjAsIDEsIDIxNywgMTA1LCAyMzQsIDEyMCwgMSwgMjE2LCAyMDgsIDIzNCwgMTIwLCAxLCAyNDgsIAorICAgIDIyMSwgMjM0LCAxMjAsIDEsIDI0OCwgMjUsIDIzNCwgMTIwLCAxLCAxOTcsIDIzNCwgMTIwLCAxLCAxOTAsIDIzNCwgMTIwLCAKKyAgICAxLCAyMjUsIDE0NywgMjM0LCAxMjAsIDEsIDI1MiwgMTkxLCAyMzQsIDEyMCwgMSwgMjUyLCAxOCwgMjM0LCAxMjAsIDEsIAorICAgIDE4NCwgMjM0LCAxMjAsIDEsIDE5MSwgMjM0LCAxMjAsIDEsIDIwNSwgMjM0LCAxMjAsIDEsIDIzMywgMTM1LCAyMzQsIDEyMCwgCisgICAgMSwgMjE0LCAyNywgMjM0LCAxMjAsIDEsIDIyMCwgMTAyLCAyMzQsIDEyMCwgMSwgMjE4LCAyMjMsIDIzNCwgMTIwLCAxLCAKKyAgICAyMDYsIDIzNCwgMTIwLCAxLCAyMTAsIDExNiwgMjM0LCAxMjAsIDEsIDE2MiwgMjM0LCAxMjAsIDEsIDIzNCwgNDYsIDIzNCwgCisgICAgMTIwLCAxLCAyMTUsIDEyNCwgMjM0LCAxMjAsIDUsIDI1MiwgMTQxLCA0OCwgMjM0LCAxMjAsIDUsIDI1MCwgMjIxLCAyMzQsIAorICAgIDEyMCwgNSwgNTksIDUxLCAyMzQsIDEyMCwgMjEzLCAxNTIsIDIzNCwgMTIwLCAyMSwgMTEwLCAyMzQsIDEyMCwgMjEsIDEwNSwgCisgICAgMjM0LCAxMjAsIDIxLCAxNTgsIDIzNCwgMTIwLCAyMSwgMTYxLCAyMzQsIDEyMCwgNTQsIDIxNiwgMjQ3LCAyMzQsIDEyMCwgCisgICAgNTQsIDIxNSwgNzMsIDIzNCwgMTIwLCA1NCwgMTIzLCAyNDAsIDIxMCwgMjM0LCAxMjAsIDU0LCAxMjMsIDIxNiwgMTQ3LCAKKyAgICAyMzQsIDEyMCwgMjI0LCAxNDEsIDI0NywgMTIwLCAyMzQsIDEyMCwgMjI0LCAxNDEsIDQsIDI1MCwgMzUsIDIzNCwgMTIwLCAKKyAgICAyMjQsIDE0MSwgMjUwLCAzNSwgMjM0LCAxMjAsIDIyNCwgMTQxLCAyNDksIDEzNywgMTMwLCAyMzQsIDEyMCwgMjI0LCAxNDEsIAorICAgIDIzMSwgMTgwLCAyMzQsIDEyMCwgMjI0LCAxNDEsIDIzMiwgMTE1LCAyMzQsIDEyMCwgMjI0LCAxNDEsIDI0OCwgMTc4LCAKKyAgICAyMzQsIDEyMCwgMjI0LCAxNDEsIDUyLCAyNDgsIDE3OCwgMjM0LCAxMjAsIDIyNCwgMTQxLCAyMzIsIDIwNywgNTUsIDIxOSwgCisgICAgMjgsIDI1NCwgMzgsIDEsIDI0MSwgMjM4LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjMzLCA5MywgNTUsIDIxOSwgMjgsIAorICAgIDI1NCwgMzgsIDEsIDI0MSwgMTk1LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjMxLCA2NSwgNTUsIDIxOSwgMjgsIDI1NCwgCisgICAgMzgsIDEsIDIyNCwgMzQsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTIsIDMwLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgCisgICAgMSwgMjIwLCAyMCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIyMywgNjcsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAKKyAgICAyNTIsIDI1LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjE3LCAzNiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIyMSwgCisgICAgMjI2LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjM0LCAyMjUsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMjcsIAorICAgIDE5NCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIzNCwgMTE2LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjIyLCAyNCwgCisgICAgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIyMSwgMjQ5LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjQ0LCAxNTQsIDU1LCAKKyAgICAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNTQsIDE3MCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI1MywgMTYxLCA1NSwgCisgICAgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjQ4LCAyMiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI0MiwgMjAxLCA1NSwgMjE5LCAKKyAgICAyOCwgMjU0LCAzOCwgMSwgMjQ4LCAxODgsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNDIsIDIzOCwgNTUsIDIxOSwgMjgsIAorICAgIDI1NCwgMzgsIDEsIDIxNiwgMjI2LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjEwLCA5NiwgNTUsIDIxOSwgMjgsIDI1NCwgCisgICAgMzgsIDEsIDI0OCwgMTksIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTAsIDIzMiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIAorICAgIDEsIDIxNiwgMTk3LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjE2LCAxNzgsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCA1NCwgCisgICAgMTEwLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgNTQsIDI0NCwgMTE0LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMTMyLCAyMzUsIAorICAgIDIzOCwgMjUzLCAxNzIsIDEsIDYxLCAyNTMsIDE3MiwgMSwgMjU1LCA3MywgMjUzLCAxNzIsIDEsIDI1NCwgNzMsIDI1MywgCisgICAgMTcyLCAxLCAyNTUsIDMyLCAyNTMsIDE3MiwgMSwgMjU0LCAxMjMsIDI1MywgMTcyLCAxLCAyNTUsIDMzLCAyNTMsIDE3MiwgCisgICAgMSwgMjU0LCAyNDMsIDI1MywgMTcyLCAxLCAyNTQsIDIzOSwgMjUzLCAxNzIsIDEsIDc1LCAyNTMsIDE3MiwgMSwgMjQ1LCAKKyAgICAyMDksIDI1MywgMTcyLCAxLCA3NiwgMjUzLCAxNzIsIDEsIDIyNiwgMTgzLCAyNTMsIDE3MiwgMSwgNzMsIDI1MywgMTcyLCAKKyAgICAxLCAyMzYsIDMzLCAyNTMsIDE3MiwgMSwgNzAsIDI1MywgMTcyLCAxLCAyMTQsIDExOCwgMjUzLCAxNzIsIDEsIDIzNCwgCisgICAgMTgyLCAyNTMsIDE3MiwgMSwgMjExLCAxNjIsIDI1MywgMTcyLCAxLCAyMTEsIDEyOCwgMjUzLCAxNzIsIDEsIDIxMSwgMTM3LCAKKyAgICAyNTMsIDE3MiwgMSwgMjQzLCA2MiwgMjUzLCAxNzIsIDEsIDI0MywgMjQsIDI1MywgMTcyLCAxLCAyNDIsIDIzNiwgMjUzLCAKKyAgICAxNzIsIDEsIDI1MCwgMTkwLCAyNTMsIDE3MiwgMSwgMjM1LCAxMjYsIDI1MywgMTcyLCAxLCAyMTcsIDIyLCAyNTMsIDE3MiwgCisgICAgMSwgMjE2LCAxOTUsIDI1MywgMTcyLCAxLCAyNDgsIDkwLCAyNTMsIDE3MiwgMSwgMjQ4LCAxNywgMjUzLCAxNzIsIDEsIAorICAgIDIxNSwgMTUxLCAyNTMsIDE3MiwgMSwgMjI1LCAyMjEsIDI1MywgMTcyLCAxLCAyNDQsIDE1NCwgMjUzLCAxNzIsIDEsIDI1MiwgCisgICAgNzUsIDI1MywgMTcyLCAxLCAyNTIsIDE0LCAyNTMsIDE3MiwgMSwgMjI5LCA2NCwgMjUzLCAxNzIsIDEsIDIyOCwgMjM5LCAKKyAgICAyNTMsIDE3MiwgMSwgMjI4LCAyNDAsIDI1MywgMTcyLCAxLCAyMjksIDEwNywgMjUzLCAxNzIsIDEsIDIyNywgMTU2LCAyNTMsIAorICAgIDE3MiwgMSwgMjI4LCAxMDUsIDI1MywgMTcyLCAxLCAyMzEsIDkxLCAyNTMsIDE3MiwgMSwgMjQxLCAxMTYsIDI1MywgMTcyLCAKKyAgICAxLCAyMTAsIDE2NiwgMjUzLCAxNzIsIDEsIDIxMSwgNDcsIDI1MywgMTcyLCAxLCAyMTMsIDI1NSwgMjUzLCAxNzIsIDEsIAorICAgIDIyMywgMTI4LCAyNTMsIDE3MiwgMSwgMjMzLCA1OCwgMjUzLCAxNzIsIDEsIDIyMSwgMTgxLCAyNTMsIDE3MiwgMSwgMjEwLCAKKyAgICA5NCwgMjUzLCAxNzIsIDEsIDIyMCwgNjMsIDI1MywgMTcyLCAxLCAyMTAsIDc0LCAyNTMsIDE3MiwgMSwgMjE5LCAxOTgsIAorICAgIDI1MywgMTcyLCAxLCAyMTgsIDE5MywgMjUzLCAxNzIsIDEsIDI0MSwgMjM4LCAyNTMsIDE3MiwgMjU1LCAyMSwgNzgsIDIxNiwgCisgICAgNzksIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgMTQwLCA0LCAxMTMsIDE3MCwgMTE3LCAxMjMsIDU5LCAyMjQsIAorICAgIDE0MCwgMjMzLCA4NSwgMTEzLCAxNzAsIDExNywgMTIzLCA1OSwgMjI0LCAxNDAsIDIzMywgODUsIDEyMywgNTksIDExNywgCisgICAgMTEzLCAxNzAsIDIyNCwgMTQwLCAyMzMsIDg1LCAxMTMsIDIyMiwgMjMyLCAxMTcsIDEyMywgMjIyLCAyMzQsIDIyNCwgMTQwLCAKKyAgICAyMzMsIDg1LCAxMjMsIDIyMiwgMjM0LCAxMTcsIDExMywgMjIyLCAyMzIsIDIyNCwgMTQwLCAyMzUsIDIxOCwgMjI1LCAyNTQsIAorICAgIDEsIDI1NCwgMTY4LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDI1MiwgMjUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjQyLCAKKyAgICAyMDEsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjQ4LCAxODgsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjQxLCAyMzgsIAorICAgIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjEyLCAzMCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMTAsIDk3LCAyMzUsIDIxOCwgCisgICAgMjI1LCAyNTQsIDEsIDI0MSwgMTk1LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIxNiwgMjI2LCAyMzUsIDIxOCwgMjI1LCAKKyAgICAyNTQsIDEsIDIxMCwgMjMyLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIzNCwgMjI1LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIAorICAgIDIzMywgOTMsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjMxLCA2NSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMjcsIDE5NCwgCisgICAgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMjEsIDI0OSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNTMsIDE2MiwgMjM1LCAKKyAgICAyMTgsIDIyNSwgMjU0LCAxLCAyMjUsIDIyMSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMjIsIDI0LCAyMzUsIDIxOCwgCisgICAgMjI1LCAyNTQsIDEsIDIyNCwgMzQsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjIzLCA2NywgMjM1LCAyMTgsIDIyNSwgMjU0LCAKKyAgICAxLCAyMjAsIDIwLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIxNywgMzYsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIDExMCwgCisgICAgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMTA1LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAxNTgsIDIzNSwgMjE4LCAyMjUsIAorICAgIDI1NCwgNTQsIDE2MSwgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMjE2LCAyNDcsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIAorICAgIDIxNSwgNzMsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIDEyMywgMjQwLCAyMTAsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIAorICAgIDEyMywgMjE2LCAxNDcsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyNTQsIDE2OCwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI1MiwgCisgICAgMjUsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyNDIsIDIwMSwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI0OCwgMTg4LCAyMzUsIAorICAgIDIxOCwgMjI2LCA3MiwgMSwgMjQxLCAyMzgsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMTIsIDI5LCAyMzUsIDIxOCwgMjI2LCAKKyAgICA3MiwgMSwgMjEwLCA5NywgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI0MSwgMTk1LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgCisgICAgMjE2LCAyMjYsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMTAsIDIzMiwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIzNCwgMjI1LCAKKyAgICAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjMzLCA5MywgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIzMSwgNjQsIDIzNSwgMjE4LCAKKyAgICAyMjYsIDcyLCAxLCAyMjcsIDE5NCwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIyMSwgMjQ5LCAyMzUsIDIxOCwgMjI2LCA3MiwgCisgICAgMSwgMjI1LCAyMjEsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMjIsIDI0LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjIwLCAKKyAgICAyMCwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIxNywgMzYsIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMTEwLCAyMzUsIDIxOCwgCisgICAgMjI2LCA3MiwgNTQsIDEwNSwgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAxNTgsIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMTYxLCAKKyAgICAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDIxNiwgMjQ3LCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDIxNSwgNzMsIDIzNSwgCisgICAgMjE4LCAyMjYsIDcyLCA1NCwgMTIzLCAyNDAsIDIxMCwgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAxMjMsIDIxNiwgMTQ3LCAKKyAgICA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgNjEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDYxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAKKyAgICAyNTQsIDI0MywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDczLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCA3MywgNTUsIDIwMSwgMSwgCisgICAgMjExLCAzNywgNzUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCA3NiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDIyNiwgMjM0LCAKKyAgICA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyMjYsIDIzNCwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NSwgMjUsIDU1LCAyMDEsIDEsIAorICAgIDIxMSwgMzcsIDI1NSwgMjUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDI0MiwgNTUsIDIwMSwgMSwgMjExLCAzNywgCisgICAgMjU0LCAyNDIsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIxNiwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMTYsIAorICAgIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIzNywgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMzcsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTQ5LCAyNTQsIDI1NSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyNTUsIDU1LCAyMDEsIDEsIDIyNiwgCisgICAgMTQ5LCAyNTQsIDI0MSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTIsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgCisgICAgMTIsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTMsIDE2NywgNTUsIDIwMSwgMSwgMjExLCAzNywgMjUzLCAxNjcsIDU1LCAKKyAgICAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIyNCwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMjQsIDU1LCAyMDEsIDEsIAorICAgIDIyNiwgMTQ5LCAyNTQsIDIzNSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMzUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAKKyAgICAyMjYsIDIzMywgNTUsIDIwMSwgMSwgMjExLCAzNywgMjI2LCAyMzMsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDE3OCwgCisgICAgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAxNzgsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIzNCwgNTUsIDIwMSwgCisgICAgMSwgMjI2LCAxNDksIDI0NSwgMTYxLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxNTksIDU1LCAyMDEsIDEsIDIyNiwgCisgICAgMTQ5LCAyNTQsIDEyMywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjMyLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIAorICAgIDIzMiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTMxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNDUsIDEzMSwgNTUsIAorICAgIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTQ3LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNDUsIDE0NywgNTUsIDIwMSwgMSwgCisgICAgMjI2LCAxNDksIDI0NSwgMTE4LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNDUsIDExOCwgNTUsIDIwMSwgMSwgMjExLCAzNywgCisgICAgMjU0LCAxMTUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDEzOCwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMzEsIAorICAgIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDEwOCwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDIyNiwgMTc1LCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjQwLCAxMTMsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDIxNSwgNTUsIDIwMSwgMSwgMjExLCAKKyAgICAzNywgMjQ1LCAyMTUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDQ1LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIAorICAgIDQ1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjM1LCAxODEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDIzNSwgMTgxLCA1NSwgCisgICAgMjAxLCAxLCAyMjYsIDE0OSwgMjI2LCAxNTksIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDIyNiwgMTU5LCA1NSwgMjAxLCAxLCAKKyAgICAyMjYsIDE0OSwgMjU0LCA0MSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCA0MSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIAorICAgIDI1NCwgMjMwLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjUzLCAyMzcsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIyOCwgCisgICAgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1MywgMjMxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTMsIDIzMSwgNTUsIDIwMSwgCisgICAgMSwgMjI2LCAxNDksIDI0NSwgNzUsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgNzUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAKKyAgICAyNTMsIDIwNiwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjUzLCAyMDYsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIyNSwgCisgICAgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMjUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyMjYsIDE0MCwgNTUsIDIwMSwgCisgICAgMSwgMjI2LCAxNDksIDI1MiwgMTI1LCAyMjIsIDEyNywgMjEsIDExMCwgMjIyLCAxMjcsIDIxLCAxMDUsIDIyMiwgMTI3LCAKKyAgICAyMSwgMTU4LCAyMjIsIDEyNywgMjEsIDE2MSwgMjIyLCAxMjcsIDIxLCAxODksIDIyMiwgMTI3LCAyMSwgMTk0LCAyMjIsIAorICAgIDEyNywgMjEsIDE5OCwgMjIyLCAxMjcsIDIxLCAxOTUsIDIyMiwgMTI3LCAyMSwgMjAwLCAyMjIsIDEyNywgNTQsIDIxNiwgCisgICAgMjQ3LCAyMjIsIDEyNywgNTQsIDIxNSwgNzMsIDIyMiwgMTI3LCA1NCwgMjE2LCAxNjIsIDIyMiwgMTI3LCA1NCwgMjQ0LCAKKyAgICAxNSwgMjIyLCAxMjcsIDU0LCAyNDQsIDExNCwgMjIyLCAxMjcsIDU0LCAyMTksIDExMSwgMjIyLCAxMjcsIDU0LCAyMjAsIAorICAgIDExNiwgMjIyLCAxMjcsIDU0LCAyNDUsIDE4NCwgMjIyLCAxMjcsIDU0LCAyMjgsIDE5NSwgMjIyLCAxMjcsIDU0LCAxMjMsIAorICAgIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDExMywgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgMTM0LCAyNDAsIDIxMCwgMjIyLCAKKyAgICAxMjcsIDU0LCAyNDQsIDExLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAyNDQsIDgxLCAyNDAsIDIxMCwgMjIyLCAxMjcsIAorICAgIDU0LCAyMTksIDEyNSwgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgMjIwLCAxMjIsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIAorICAgIDI0NSwgMTkzLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAyMjgsIDIwMCwgMjQwLCAyMTAsIDIyMiwgMTI3LCAyNDQsIDIsIAorICAgIDEyMywgMjQyLCAyNywgMjIyLCAxMjcsIDI0NCwgMiwgMTIzLCAyMjQsIDIxLCAyMjIsIDEyNywgMjQ0LCAyLCAxMjMsIDIxNiwgCisgICAgMTY4LCAyMjIsIDEyNywgMjQ0LCAyLCAxMTMsIDIxNiwgMTY2LCAxMTgsIDUsIDI1MCwgMjU1LCAxMTgsIDUsIDI1NCwgNzUsIAorICAgIDExOCwgNSwgMjEzLCAxNDcsIDExOCwgNSwgMjM1LCAxMDIsIDExOCwgNSwgMjE0LCAxNjEsIDExOCwgMSwgNjEsIDExOCwgMSwgCisgICAgMjU1LCA3MywgMTE4LCAxLCA3MywgMTE4LCAxLCAyMzYsIDMzLCAxMTgsIDEsIDcwLCAxMTgsIDEsIDIxNCwgMTE4LCAxMTgsIAorICAgIDEsIDE0OSwgMTUzLCAxMTgsIDEsIDE0OSwgMjIyLCAxODAsIDExOCwgMSwgMTQ5LCAxNTYsIDExOCwgMSwgMTQ5LCAyMzIsIAorICAgIDE4NSwgMTE4LCAxLCA3NSwgMTE4LCAxLCAyNTQsIDIwMSwgMTE4LCAxLCA3NiwgMTE4LCAxLCAyNTMsIDE5MiwgMTE4LCAxLCAKKyAgICAxNzYsIDExOCwgMSwgMjM0LCAxMzIsIDExOCwgMSwgMjQzLCAxMzUsIDExOCwgMSwgMjQyLCAyNDksIDExOCwgMSwgMjI5LCAKKyAgICA3NywgMTE4LCAxLCAyNTEsIDMzLCAxMTgsIDEsIDI1MCwgMTU3LCAxMTgsIDEsIDIzNSwgMTQxLCAxMTgsIDEsIDIzNSwgCisgICAgMTE0LCAxMTgsIDEsIDIyNywgMTY1LCAxMTgsIDEsIDIxNSwgMTU2LCAxMTgsIDEsIDIxNSwgMTQ0LCAxMTgsIDEsIDI0OCwgCisgICAgMTM1LCAxMTgsIDEsIDI0OCwgMTE5LCAxMTgsIDEsIDIyOCwgMTEwLCAxMTgsIDEsIDIxNywgMTA1LCAxMTgsIDEsIDIxNiwgCisgICAgMjA4LCAxMTgsIDEsIDI0OCwgMjIxLCAxMTgsIDEsIDI0OCwgMjUsIDExOCwgMSwgMTk3LCAxMTgsIDEsIDE5MCwgMTE4LCAxLCAKKyAgICAyMjUsIDE0NywgMTE4LCAxLCAyNTIsIDE5MSwgMTE4LCAxLCAyNTIsIDE4LCAxMTgsIDEsIDE4NCwgMTE4LCAxLCAxOTEsIAorICAgIDExOCwgMSwgMjA1LCAxMTgsIDEsIDIzMywgMTM1LCAxMTgsIDEsIDIxNCwgMjcsIDExOCwgMSwgMjIwLCAxMDIsIDExOCwgMSwgCisgICAgMjE4LCAyMjMsIDExOCwgMSwgMjA2LCAxMTgsIDEsIDE2MiwgMTE4LCAxLCAyMzIsIDE4NCwgMTE4LCAxLCA1NSwgMzYsIAorICAgIDIzMiwgMTc1LCAxMTgsIDEsIDU1LCAzNiwgMjIyLCAxNzksIDExOCwgMSwgNTUsIDM2LCAyMjgsIDkyLCAxMTgsIDI1LCA1LCAKKyAgICAyNTUsIDczLCAxMTgsIDI1LCA1LCAyNTIsIDE1LCAyNTUsIDczLCAxMTgsIDI1LCA1LCA3MywgMTE4LCAyNSwgNSwgMjM2LCAKKyAgICAzMywgMTE4LCAyNSwgNSwgNzAsIDExOCwgMjUsIDUsIDIxNCwgMTE4LCAxMTgsIDI1LCA1LCAxNDksIDE1MywgMTE4LCAyNSwgCisgICAgNSwgMTQ5LCAyMjIsIDE4MCwgMTE4LCAyNSwgNSwgMTQ5LCAxNTYsIDExOCwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDExOCwgCisgICAgMjUsIDUsIDc1LCAxMTgsIDI1LCA1LCAyNTQsIDIwMSwgMTE4LCAyNSwgNSwgNzYsIDExOCwgMjUsIDUsIDI1MywgMTkyLCAKKyAgICAxMTgsIDIxMywgMTUyLCAxMTgsIDI0OCwgMTc4LCAxMTgsIDUyLCAyNDgsIDE3OCwgMTE4LCAyMjQsIDE0MSwgMjQ3LCAxMjAsIAorICAgIDExOCwgMjI0LCAxNDEsIDUyLCAyNDcsIDEyMCwgMTE4LCAyMjQsIDE0MSwgMjMyLCAyMTMsIDExOCwgMjI0LCAxNDEsIDI0OSwgCisgICAgMTM3LCAxMzAsIDExOCwgMjI0LCAxNDEsIDIzMiwgMTE1LCAxMTgsIDU0LCAxMTAsIDExOCwgNTQsIDEwNSwgMTE4LCA1NCwgCisgICAgMTU4LCAxMTgsIDU0LCAxNjEsIDExOCwgNTQsIDE4OSwgMTE4LCA1NCwgMTk0LCAxMTgsIDU0LCAxOTgsIDExOCwgNTQsIAorICAgIDE5NSwgMTE4LCA1NCwgMjAwLCAxMTgsIDU0LCAyMTYsIDI0NywgMTE4LCA1NCwgMjE1LCA3MywgMTE4LCA1NCwgMjE2LCAKKyAgICAxNjIsIDExOCwgNTQsIDI0NCwgMTUsIDExOCwgNTQsIDI0NCwgMTE0LCAxMTgsIDU0LCAyMTksIDExMSwgMTE4LCA1NCwgCisgICAgMjIwLCAxMTYsIDExOCwgNTQsIDI0NSwgMTg0LCAxMTgsIDU0LCAyMjgsIDE5NSwgMTE4LCA1NCwgMTIzLCAyNDAsIDIxMCwgCisgICAgMTE4LCA1NCwgMTIzLCAyMTYsIDE0NywgMTE4LCAyMSwgMjEwLCA4NiwgMTE4LCAyMSwgMTEwLCAxMTgsIDIxLCAxMDUsIAorICAgIDExOCwgMjEsIDE1OCwgMTE4LCAyMSwgMTYxLCAxMTgsIDIxLCAxODksIDExOCwgMjEsIDE5NCwgMTE4LCAyMSwgMTk4LCAKKyAgICAxMTgsIDIxLCAxOTUsIDExOCwgMjEsIDIwMCwgMjM0LCAyNDQsIDUsIDI1MCwgMjU1LCAyMzQsIDI0NCwgNSwgMjU0LCA3NSwgCisgICAgMjM0LCAyNDQsIDUsIDIxMywgMTQ3LCAyMzQsIDI0NCwgMSwgNjEsIDIzNCwgMjQ0LCAxLCAyNTUsIDczLCAyMzQsIDI0NCwgCisgICAgMSwgNzMsIDIzNCwgMjQ0LCAxLCAyMzYsIDMzLCAyMzQsIDI0NCwgMSwgNzAsIDIzNCwgMjQ0LCAxLCAyMTQsIDExOCwgMjM0LCAKKyAgICAyNDQsIDEsIDc1LCAyMzQsIDI0NCwgMSwgMjU0LCAyMDEsIDIzNCwgMjQ0LCAxLCA3NiwgMjM0LCAyNDQsIDEsIDI1MywgCisgICAgMTkyLCAyMzQsIDI0NCwgMSwgMTc2LCAyMzQsIDI0NCwgMSwgMjM0LCAxMzIsIDIzNCwgMjQ0LCAxLCAyNDMsIDEzNSwgMjM0LCAKKyAgICAyNDQsIDEsIDI0MiwgMjQ5LCAyMzQsIDI0NCwgMSwgMjI5LCA3NywgMjM0LCAyNDQsIDEsIDI1MSwgMzMsIDIzNCwgMjQ0LCAKKyAgICAxLCAyNTAsIDE1NywgMjM0LCAyNDQsIDEsIDIzNSwgMTQxLCAyMzQsIDI0NCwgMSwgMjM1LCAxMTQsIDIzNCwgMjQ0LCAxLCAKKyAgICAyMjcsIDE2NSwgMjM0LCAyNDQsIDEsIDIxNSwgMTU2LCAyMzQsIDI0NCwgMSwgMjE1LCAxNDQsIDIzNCwgMjQ0LCAxLCAyNDgsIAorICAgIDEzNSwgMjM0LCAyNDQsIDEsIDI0OCwgMTI0LCAyMzQsIDI0NCwgMSwgMjQ4LCAxMTksIDIzNCwgMjQ0LCAxLCAyMjMsIDM5LCAKKyAgICAyMzQsIDI0NCwgMSwgMjI4LCAxMTAsIDIzNCwgMjQ0LCAxLCAyMTcsIDEwNSwgMjM0LCAyNDQsIDEsIDIxNiwgMjA4LCAyMzQsIAorICAgIDI0NCwgMSwgMjQ4LCAyMjEsIDIzNCwgMjQ0LCAxLCAyNDgsIDI1LCAyMzQsIDI0NCwgMSwgMTk3LCAyMzQsIDI0NCwgMSwgCisgICAgMTkwLCAyMzQsIDI0NCwgMSwgMjI1LCAxNDcsIDIzNCwgMjQ0LCAxLCAyNTIsIDE5MSwgMjM0LCAyNDQsIDEsIDI1MiwgMTgsIAorICAgIDIzNCwgMjQ0LCAxLCAxODQsIDIzNCwgMjQ0LCAxLCAxOTEsIDIzNCwgMjQ0LCAxLCAyMDUsIDIzNCwgMjQ0LCAxLCAyMzMsIAorICAgIDEzNSwgMjM0LCAyNDQsIDEsIDIxNCwgMjcsIDIzNCwgMjQ0LCAxLCAyMjAsIDEwMiwgMjM0LCAyNDQsIDEsIDIxOCwgMjIzLCAKKyAgICAyMzQsIDI0NCwgMSwgMjA2LCAyMzQsIDI0NCwgMSwgMTYyLCAyMzQsIDI0NCwgMjUsIDUsIDI1NSwgNzMsIDIzNCwgMjQ0LCAKKyAgICAyNSwgNSwgNzMsIDIzNCwgMjQ0LCAyNSwgNSwgMjM2LCAzMywgMjM0LCAyNDQsIDI1LCA1LCA3MCwgMjM0LCAyNDQsIDI1LCAKKyAgICA1LCAyMTQsIDExOCwgMjM0LCAyNDQsIDI1LCA1LCA3NSwgMjM0LCAyNDQsIDI1LCA1LCAyNTQsIDIwMSwgMjM0LCAyNDQsIAorICAgIDI1LCA1LCA3NiwgMjM0LCAyNDQsIDI1LCA1LCAyNTMsIDE5MiwgMjM0LCAyNDQsIDUsIDIxMywgMTUyLCAyMzQsIDI0NCwgNSwgCisgICAgMjI3LCAyMDUsIDIzNCwgMjQ0LCAyNTUsIDIxLCA1MCwgMjM0LCAyNDQsIDI0NSwgMTIxLCA1MCwgMjM0LCAyNDQsIDU0LCAKKyAgICA1MCwgMjM0LCAyNDQsIDIyMSwgMTczLCA3OCwgMjM0LCAyNDQsIDUyLCAyMjEsIDE3MywgNzgsIDIzNCwgMjQ0LCAyNDgsIAorICAgIDE3OCwgMjM0LCAyNDQsIDUyLCAyNDgsIDE3OCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjIyLCAxOCwgMjE5LCAzNiwgMjE5LCAKKyAgICA0NCwgMSwgMjE3LCA4MCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjUyLCAxNjgsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI1MSwgCisgICAgMjMsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0OCwgMjAzLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNDMsIDEyMCwgMjE5LCAKKyAgICAzNiwgMjE5LCA0NCwgMSwgMjMxLCAyMTAsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyOSwgNzQsIDIxOSwgMzYsIDIxOSwgNDQsIAorICAgIDEsIDIzMywgMTEyLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjksIDIxMywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjE0LCAyNCwgCisgICAgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI2LCA3MywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjExLCA4NCwgMjE5LCAzNiwgMjE5LCAKKyAgICA0NCwgMSwgMjIzLCAxNjgsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0MiwgMzcsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIzNCwgCisgICAgMjQ4LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMzUsIDEzNiwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI3LCAxNjIsIDIxOSwgCisgICAgMzYsIDIxOSwgNDQsIDEsIDI1NCwgMjA5LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNDUsIDIwNywgMjE5LCAzNiwgMjE5LCAKKyAgICA0NCwgMSwgMjM2LCAzNCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjE0LCAyMDgsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyNiwgCisgICAgMjIyLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNDUsIDE5NywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjMxLCAyMjMsIDIxOSwgCisgICAgMzYsIDIxOSwgNDQsIDIxLCAyMTAsIDg2LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTEwLCAyMTksIDM2LCAyMTksIDQ0LCAKKyAgICAyMSwgMTA1LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTU4LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTYxLCAyMTksIDM2LCAKKyAgICAyMTksIDQ0LCAyMSwgMTg5LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTk0LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTk4LCAKKyAgICAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTk1LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMjAwLCAyNTAsIDE1MSwgNSwgMjUwLCAKKyAgICAyNTUsIDI1MCwgMTUxLCA1LCAyNTQsIDc1LCAyNTAsIDE1MSwgNSwgMjEzLCAxNDcsIDI1MCwgMTUxLCAxLCAyNTUsIDczLCAKKyAgICAyNTAsIDE1MSwgMSwgNzMsIDI1MCwgMTUxLCAxLCA3MCwgMjUwLCAxNTEsIDEsIDc1LCAyNTAsIDE1MSwgMSwgMjM1LCAxMCwgCisgICAgMjUwLCAxNTEsIDEsIDIzNCwgMTMxLCAyNTAsIDE1MSwgMSwgMjQzLCAxMzIsIDI1MCwgMTUxLCAxLCAyNDIsIDI0OCwgMjUwLCAKKyAgICAxNTEsIDEsIDIyOSwgNzYsIDI1MCwgMTUxLCAxLCAyNTEsIDMyLCAyNTAsIDE1MSwgMSwgMjUwLCAxNTYsIDI1MCwgMTUxLCAKKyAgICAxLCAyMzUsIDE0MCwgMjUwLCAxNTEsIDEsIDIzNSwgMTEzLCAyNTAsIDE1MSwgMSwgMjI3LCAxNjQsIDI1MCwgMTUxLCAxLCAKKyAgICAyMTUsIDE1NSwgMjUwLCAxNTEsIDEsIDIxNSwgMTQzLCAyNTAsIDE1MSwgMSwgMjQ4LCAxMzQsIDI1MCwgMTUxLCAxLCAyNDgsIAorICAgIDExOCwgMjUwLCAxNTEsIDEsIDIyOCwgMTA5LCAyNTAsIDE1MSwgMSwgMjE3LCAxMDEsIDI1MCwgMTUxLCAxLCAyMTYsIDIwNywgCisgICAgMjUwLCAxNTEsIDEsIDI0OCwgMjIwLCAyNTAsIDE1MSwgMSwgMjQ4LCAyNCwgMjUwLCAxNTEsIDEsIDIyOSwgMjI1LCAyNTAsIAorICAgIDE1MSwgMSwgMjI2LCA4OSwgMjUwLCAxNTEsIDEsIDIyNSwgMTQ2LCAyNTAsIDE1MSwgMSwgMjUyLCAxODksIDI1MCwgMTUxLCAKKyAgICAxLCAyNTIsIDE3LCAyNTAsIDE1MSwgMSwgMjMxLCAyMzcsIDI1MCwgMTUxLCAxLCAyMTAsIDE2NywgMjUwLCAxNTEsIDEsIAorICAgIDIxMSwgMTAzLCAyNTAsIDE1MSwgMSwgMjIzLCAxODQsIDI1MCwgMTUxLCAxLCAyMzMsIDEzNCwgMjUwLCAxNTEsIDEsIDIxMiwgCisgICAgNjQsIDI1MCwgMTUxLCAxLCAyMjIsIDMxLCAyNTAsIDE1MSwgMSwgMjQyLCA0NiwgMjUwLCAxNTEsIDI1LCA1LCA2MSwgMjUwLCAKKyAgICAxNTEsIDI1LCA1LCA3MywgMjUwLCAxNTEsIDI1LCA1LCAyMzYsIDMzLCAyNTAsIDE1MSwgMjUsIDUsIDcwLCAyNTAsIDE1MSwgCisgICAgMjUsIDUsIDIxNCwgMTE4LCAyNTAsIDE1MSwgMjUsIDUsIDc1LCAyNTAsIDE1MSwgMjUsIDUsIDI1NCwgMjAxLCAyNTAsIAorICAgIDE1MSwgMjUsIDUsIDc2LCAyNTAsIDE1MSwgMjUsIDUsIDI1MywgMTkyLCAyNTAsIDE1MSwgMjUsIDUsIDIyNiwgMjE5LCAKKyAgICAyNTAsIDE1MSwgMTQ0LCA3OCwgMjUwLCAxNTEsIDI1MywgMTkzLCA3OCwgMjUwLCAxNTEsIDIxMywgMTUyLCAyNTAsIDE1MSwgCisgICAgMjMxLCAyMzUsIDI1MCwgMTUxLCAyMSwgMjEwLCA4NiwgMjUwLCAxNTEsIDIxLCAxMTAsIDI1MCwgMTUxLCAyMSwgMTA1LCAKKyAgICAyNTAsIDE1MSwgMjEsIDE1OCwgMjUwLCAxNTEsIDIxLCAxNjEsIDI1MCwgMTUxLCAyMSwgMTg5LCAyNTAsIDE1MSwgMjEsIAorICAgIDE5NCwgMjUwLCAxNTEsIDIxLCAxOTgsIDI1MCwgMTUxLCAyMSwgMTk1LCAyNTAsIDE1MSwgMjEsIDIwMCwgMjUwLCAxNTEsIAorICAgIDIyMSwgMTczLCA3OCwgMjUwLCAxNTEsIDI0OCwgMTc4LCAyNTAsIDE1MSwgNTIsIDI0OCwgMTc4LCAyNTAsIDE1MSwgMjI0LCAKKyAgICAxMywgNzgsIDE3NCwgNSwgMjUwLCAyNTUsIDE3NCwgNSwgMjU0LCA3NSwgMTc0LCA1LCAyMTMsIDE0NywgMTc0LCAxLCA2MSwgCisgICAgMTc0LCAxLCAyNTUsIDczLCAxNzQsIDEsIDczLCAxNzQsIDEsIDIzNiwgMzMsIDE3NCwgMSwgNzAsIDE3NCwgMSwgMjE0LCAKKyAgICAxMTgsIDE3NCwgMSwgMTQ5LCAxNTMsIDE3NCwgMSwgMTQ5LCAyMjIsIDE4MCwgMTc0LCAxLCAxNDksIDE1NiwgMTc0LCAxLCAKKyAgICAxNDksIDIzMiwgMTg1LCAxNzQsIDEsIDc1LCAxNzQsIDEsIDI1NCwgMjAxLCAxNzQsIDEsIDc2LCAxNzQsIDEsIDI1MywgCisgICAgMTkyLCAxNzQsIDEsIDE3NiwgMTc0LCAxLCAyMzQsIDEzMiwgMTc0LCAxLCAyNDMsIDEzNSwgMTc0LCAxLCAyNDIsIDI0OSwgCisgICAgMTc0LCAxLCAyMjksIDc3LCAxNzQsIDEsIDI1MSwgMzMsIDE3NCwgMSwgMjUwLCAxNTcsIDE3NCwgMSwgMjM1LCAxNDEsIAorICAgIDE3NCwgMSwgMjM1LCAxMTQsIDE3NCwgMSwgMjI3LCAxNjUsIDE3NCwgMSwgMjE1LCAxNTYsIDE3NCwgMSwgMjE1LCAxNDQsIAorICAgIDE3NCwgMSwgMjQ4LCAxMzUsIDE3NCwgMSwgMjQ4LCAxMTksIDE3NCwgMSwgMjI4LCAxMTAsIDE3NCwgMSwgMjE3LCAxMDUsIAorICAgIDE3NCwgMSwgMjE2LCAyMDgsIDE3NCwgMSwgMjQ4LCAyMjEsIDE3NCwgMSwgMjQ4LCAyNSwgMTc0LCAxLCAxOTcsIDE3NCwgMSwgCisgICAgMTkwLCAxNzQsIDEsIDIyNSwgMTQ3LCAxNzQsIDEsIDI1MiwgMTkxLCAxNzQsIDEsIDI1MiwgMTgsIDE3NCwgMSwgMTg0LCAKKyAgICAxNzQsIDEsIDE5MSwgMTc0LCAxLCAyMDUsIDE3NCwgMSwgMjMzLCAxMzUsIDE3NCwgMSwgMjMyLCAxODQsIDE3NCwgMSwgCisgICAgMjE0LCAyNywgMTc0LCAxLCAyMjAsIDEwMiwgMTc0LCAxLCAyMTgsIDIyMywgMTc0LCAxLCAyMDYsIDE3NCwgMSwgMTYyLCAKKyAgICAxNzQsIDI1LCA1LCAyNTUsIDczLCAxNzQsIDI1LCA1LCA3MywgMTc0LCAyNSwgNSwgMjM2LCAzMywgMTc0LCAyNSwgNSwgNzAsIAorICAgIDE3NCwgMjUsIDUsIDIxNCwgMTE4LCAxNzQsIDI1LCA1LCAxNDksIDE1MywgMTc0LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgCisgICAgMTc0LCAyNSwgNSwgMTQ5LCAxNTYsIDE3NCwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE3NCwgMjUsIDUsIDc1LCAxNzQsIDI1LCAKKyAgICA1LCAyNTQsIDIwMSwgMTc0LCAyNSwgNSwgNzYsIDE3NCwgMjUsIDUsIDI1MywgMTkyLCAxNzQsIDUsIDIxMywgMTUyLCAxNzQsIAorICAgIDUsIDI1MywgMTc1LCAxNzQsIDUsIDIzNSwgMTAyLCAxNzQsIDUsIDIxNCwgMTYxLCAxNzQsIDIyNiwgMjA0LCAxNzQsIDI0OCwgCisgICAgMTc4LCAxNzQsIDUyLCAyNDgsIDE3OCwgMTc0LCAyNTUsIDIxLCA1MCwgMTc0LCAyMjAsIDEzNywgMTc0LCAyMSwgMjEwLCAKKyAgICA4NiwgMTc0LCAyMSwgMTEwLCAxNzQsIDIxLCAxMDUsIDE3NCwgMjEsIDE1OCwgMTc0LCAyMSwgMTYxLCAxNzQsIDIxLCAxODksIAorICAgIDE3NCwgMjEsIDE5NCwgMTc0LCAyMSwgMTk4LCAxNzQsIDIxLCAxOTUsIDE3NCwgMjEsIDIwMCwgMjE3LCA2OSwgMSwgNjEsIAorICAgIDIxNywgNjksIDEsIDI1NSwgNzMsIDIxNywgNjksIDEsIDczLCAyMTcsIDY5LCAxLCAyMzYsIDMzLCAyMTcsIDY5LCAxLCA3MCwgCisgICAgMjE3LCA2OSwgMSwgMjE0LCAxMTgsIDIxNywgNjksIDEsIDc1LCAyMTcsIDY5LCAxLCAyNTQsIDIwMSwgMjE3LCA2OSwgMSwgCisgICAgNzYsIDIxNywgNjksIDEsIDI1MywgMTkyLCAyMTcsIDY5LCAxLCAxNzYsIDIxNywgNjksIDEsIDIzNCwgMTMyLCAyMTcsIDY5LCAKKyAgICAxLCAyNDMsIDEzNSwgMjE3LCA2OSwgMSwgMjQyLCAyNDksIDIxNywgNjksIDEsIDIyOSwgNzcsIDIxNywgNjksIDEsIDI1MSwgCisgICAgMzMsIDIxNywgNjksIDEsIDI1MCwgMTU3LCAyMTcsIDY5LCAxLCAyMzUsIDE0MSwgMjE3LCA2OSwgMSwgMjM1LCAxMTQsIAorICAgIDIxNywgNjksIDEsIDIyNywgMTY1LCAyMTcsIDY5LCAxLCAyMTUsIDE1NiwgMjE3LCA2OSwgMSwgMjE1LCAxNDQsIDIxNywgCisgICAgNjksIDEsIDI0OCwgMTM1LCAyMTcsIDY5LCAxLCAyNDgsIDExOSwgMjE3LCA2OSwgMSwgMjI4LCAxMTAsIDIxNywgNjksIDEsIAorICAgIDIxNywgMTA1LCAyMTcsIDY5LCAxLCAyMTYsIDIwOCwgMjE3LCA2OSwgMSwgMjQ4LCAyMjEsIDIxNywgNjksIDEsIDI0OCwgCisgICAgMjUsIDIxNywgNjksIDEsIDE5NywgMjE3LCA2OSwgMSwgMTkwLCAyMTcsIDY5LCAxLCAyMjUsIDE0NywgMjE3LCA2OSwgMSwgCisgICAgMjUyLCAxOTEsIDIxNywgNjksIDEsIDI1MiwgMTgsIDIxNywgNjksIDEsIDE4NCwgMjE3LCA2OSwgMSwgMTkxLCAyMTcsIDY5LCAKKyAgICAxLCAyMDUsIDIxNywgNjksIDEsIDIzMywgMTM1LCAyMTcsIDY5LCAxLCAyMTQsIDI3LCAyMTcsIDY5LCAxLCAyMjAsIDEwMiwgCisgICAgMjE3LCA2OSwgMSwgMjA2LCAyMTcsIDY5LCAxLCAxNjIsIDIxNywgNjksIDEsIDIyMiwgMTc5LCAyMTcsIDY5LCA1LCAyNTQsIAorICAgIDc1LCAyMTcsIDY5LCA1LCAyMTMsIDE0NywgMjE3LCA2OSwgMjUsIDUsIDI1NSwgNzMsIDIxNywgNjksIDI1LCA1LCA3MywgCisgICAgMjE3LCA2OSwgMjUsIDUsIDIzNiwgMzMsIDIxNywgNjksIDI1LCA1LCA3MCwgMjE3LCA2OSwgMjUsIDUsIDIxNCwgMTE4LCAKKyAgICAyMTcsIDY5LCAyNSwgNSwgNzUsIDIxNywgNjksIDI1LCA1LCAyNTQsIDIwMSwgMjE3LCA2OSwgMjUsIDUsIDc2LCAyMTcsIAorICAgIDY5LCAyNSwgNSwgMjUzLCAxOTIsIDIxNywgNjksIDUsIDIxMywgMTUyLCAyMTcsIDY5LCA1LCAyMjcsIDIwNSwgMjE3LCA2OSwgCisgICAgMjEsIDIxMCwgODYsIDIxNywgNjksIDIxLCAxMTAsIDIxNywgNjksIDIxLCAxMDUsIDIxNywgNjksIDIxLCAxNTgsIDIxNywgCisgICAgNjksIDIxLCAxNjEsIDIxNywgNjksIDIxLCAxODksIDIxNywgNjksIDIxLCAxOTQsIDIxNywgNjksIDIxLCAxOTgsIDIxNywgCisgICAgNjksIDIxLCAxOTUsIDIxNywgNjksIDIxLCAyMDAsIDE1LCA1LCA2MSwgMTUsIDUsIDExNSwgMzAsIDYxLCAxNSwgNSwgMTE1LCAKKyAgICAzMCwgMjUyLCAxNzYsIDE1LCA1LCAxMTUsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAxMTUsIDMwLCAxNjIsIAorICAgIDE1LCA1LCAxMTUsIDMwLCAyMzYsIDM1LCAxNSwgNSwgMTE1LCAzMCwgMjMzLCAxMTYsIDI0MiwgOTQsIDE1LCA1LCAxMTUsIAorICAgIDMwLCAyMzAsIDYxLCAxNSwgNSwgMTE1LCAzMCwgMjIyLCAyMSwgMTUsIDUsIDI1NSwgNzUsIDE1LCA1LCAyNTUsIDI1LCAxNSwgCisgICAgNSwgMjU1LCAyNiwgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjU1LCAyNiwgMzAsIDI0NiwgNjcsIDI0MiwgOTQsIDE1LCA1LCAKKyAgICAyNTUsIDI2LCAzMCwgMjQzLCAxMTgsIDE1LCA1LCAyNTUsIDI2LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgCisgICAgMjU1LCAyNiwgMzAsIDE2MiwgMTUsIDUsIDI1NSwgMjYsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjU1LCAyNiwgCisgICAgMzAsIDIzNiwgOSwgMTUsIDUsIDI1NSwgMjYsIDMwLCAyMzMsIDExNywgMTUsIDUsIDI1NSwgMjYsIDMwLCAyMjAsIDQ4LCAKKyAgICAxNSwgNSwgMjU1LCAyNiwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDcwLCAxNSwgNSwgMjU1LCAyNiwgMjQyLCA5NCwgMTUsIDUsIAorICAgIDI1NSwgMjMsIDE1LCA1LCAyNTUsIDI0LCAzMCwgMjUyLCAxNjAsIDE1LCA1LCAyNTUsIDI0LCAzMCwgMjQzLCAxMDUsIDIxNiwgCisgICAgMjM5LCAxNSwgNSwgMjU1LCAyNCwgMzAsIDIzMSwgOTIsIDk2LCAyNDUsIDE1MCwgMTUsIDUsIDI1NSwgMjQsIDMwLCAyMjAsIAorICAgIDEwMCwgMTUsIDUsIDI1NSwgMjQsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjU0LCAyNTUsIDE1LCA1LCAyNTQsIDE4NiwgMTUsIAorICAgIDUsIDI1NCwgMTg3LCAzMCwgMjQ1LCA4NywgMTUsIDUsIDI1NCwgMTg3LCAzMCwgMjIwLCAxMCwgOTYsIDI0MiwgMTkwLCAxNSwgCisgICAgNSwgMjU0LCAxNzgsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDI1NCwgMTc4LCAxNSwgNSwgMjU0LCAxNzksIDMwLCAyNDcsIAorICAgIDIxNiwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjQyLCAxOTAsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDE2MiwgMTUsIDUsIDI1NCwgCisgICAgMTc5LCAzMCwgMjM0LCAyNTUsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDIzNCwgOTIsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIAorICAgIDIyMCwgNjMsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjU0LCAxNzUsIDE1LCA1LCAyNTQsIDE2OCwgCisgICAgMTUsIDUsIDI1NCwgMTMyLCAxNSwgNSwgMjU0LCAxMzMsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjU0LCAxMjMsIDE1LCA1LCAKKyAgICAyNTQsIDEyNCwgMTE3LCAyNTQsIDEyMywgMTUsIDUsIDI1NCwgMTI0LCAxMzQsIDIxNiwgODUsIDE1LCA1LCAyNTQsIDEyNCwgCisgICAgOTYsIDIyOSwgMjE3LCAyMjYsIDE2NCwgMjU0LCAxMjQsIDk2LCAyMjksIDIxNiwgMTUsIDUsIDI1NCwgMTI0LCA5NiwgMjI5LCAKKyAgICAyMTcsIDIxOCwgMjMzLCAxNSwgNSwgMjU0LCA5NCwgMTUsIDUsIDI1NCwgNjcsIDE1LCA1LCAyNTQsIDM1LCAxNSwgNSwgCisgICAgMjU0LCAzNiwgMzAsIDIzMywgMTk2LCAxNSwgNSwgMjU0LCA4LCAxNSwgNSwgMjUzLCAyMzYsIDE1LCA1LCAyNTMsIDIzMSwgCisgICAgMTUsIDUsIDI1MywgMjMyLCAyMTAsIDQwLCAyMTYsIDIzOSwgMTUsIDUsIDI1MywgMjMyLCAyMzUsIDMsIDIxNiwgMjM5LCAKKyAgICAxNSwgNSwgMjUzLCAyMzIsIDExNywgMjUzLCAyMzIsIDIxNSwgMTE0LCAxMTcsIDIxNSwgMTE0LCAyMTUsIDExNCwgMTE3LCAKKyAgICAyMTUsIDExNCwgMjI2LCAyMSwgMTUsIDUsIDI1MywgMjMyLCAxMTcsIDI1MywgMjMyLCAxMTcsIDI1MywgMjMxLCAxNSwgNSwgCisgICAgMjUzLCAyMzIsIDExNywgMjUzLCAyMzIsIDExNywgMjUzLCAyMzIsIDI0OSwgMTI1LCAyNTMsIDIzMiwgMTE3LCAyNTMsIAorICAgIDIzMiwgMTE3LCAyNTMsIDIzMSwgMTUsIDUsIDI1MywgMjI5LCAxNSwgNSwgMjUzLCAyMjYsIDE1LCA1LCAyNTIsIDE5MSwgCisgICAgMTUsIDUsIDI1MiwgMTc2LCAxNSwgNSwgMjUyLCAxNzEsIDE1LCA1LCAyNTIsIDE2NywgMTUsIDUsIDI1MiwgMTYxLCAxNSwgCisgICAgNSwgMjUyLCAxNjIsIDExNywgMjUyLCAxNjEsIDE1LCA1LCAyNTIsIDE2MCwgMTUsIDUsIDEzMCwgMTUsIDUsIDI1MiwgMTQwLCAKKyAgICAxNSwgNSwgMjUyLCA2LCAxNSwgNSwgMjUyLCA3LCAzMCwgNjEsIDE1LCA1LCAyNTIsIDcsIDMwLCAyNDMsIDk2LCAxNSwgNSwgCisgICAgMjUyLCA3LCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI1MSwgMTI1LCAxNSwgNSwgMjUxLCAxMjYsIDExNywgMjUxLCAKKyAgICAxMjYsIDI1NSwgMjUsIDE1LCA1LCAyNTEsIDEyNiwgMTE3LCAyNTEsIDEyNiwgMjE0LCAxOTAsIDE1LCA1LCAyNTEsIDEyNiwgCisgICAgMjQ5LCAxMjUsIDI1MSwgMTI1LCAxNSwgNSwgMjUxLCAxMDksIDE1LCA1LCAyNTEsIDExMCwgMTE3LCAyNTEsIDEwOSwgMTUsIAorICAgIDUsIDI1MSwgOTgsIDE1LCA1LCAyNTEsIDk3LCAxNSwgNSwgMjQ4LCAyMjEsIDE1LCA1LCAyNDgsIDIxMiwgMTUsIDUsIDI0OCwgCisgICAgMjEzLCAyMzQsIDY2LCAzMCwgMTE1LCA5NiwgMjMxLCAxNDcsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI1NCwgCisgICAgMTMyLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyNTIsIDE2MCwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAKKyAgICAzMCwgMjUyLCA2LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyNDMsIDEzNSwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIAorICAgIDY2LCAzMCwgMjQzLCAxMzYsIDk2LCAyMzEsIDE0NywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjQyLCAyMTQsIAorICAgIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI0MiwgMTk3LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAKKyAgICAyNDIsIDEwMywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMTYyLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIAorICAgIDMwLCAyMzUsIDE3OSwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjM1LCAxODAsIDk2LCAyMzIsIDk4LCAxNSwgNSwgCisgICAgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzQsIDI0MiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjMzLCAxMzUsIAorICAgIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzMiwgOTgsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzMiwgCisgICAgOTksIDk2LCAyMzEsIDE0NiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjMyLCA4NCwgMTUsIDUsIDI0OCwgMjEzLCAKKyAgICAyMzQsIDY2LCAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIyNiwgMjIsIDk2LCAyMjYsIAorICAgIDIxLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMTksIDE5MSwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgCisgICAgMjE3LCA3MiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjE0LCAyMzEsIDk2LCAyNDIsIDE5NywgMTUsIDUsIAorICAgIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyNDgsIDE4NywgMTUsIDUsIDI0OCwgMTY2LCAxNSwgNSwgCisgICAgMjQ4LCAxNjUsIDE1LCA1LCAyNDgsIDE2NCwgMTUsIDUsIDI0OCwgMywgMTUsIDUsIDI0NywgMjQyLCAxNSwgNSwgMjQ3LCAKKyAgICAyMTcsIDE1LCA1LCAyNDcsIDIxOCwgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNDcsIDIxNiwgMTUsIDUsIDI0NywgMjA2LCAxNSwgCisgICAgNSwgMjQ3LCAyMDcsIDIzNCwgMjA4LCAxMDQsIDI0MiwgOTUsIDI0NywgMTg3LCAxNSwgNSwgMjQ3LCAxODcsIDE1LCA1LCAKKyAgICAyNDYsIDc4LCAxNSwgNSwgMjQ2LCA3OSwgMTE3LCAyNDYsIDc4LCAxNSwgNSwgMjQ2LCA3OSwgMjQyLCA5NCwgMTUsIDUsIAorICAgIDI0NiwgNzksIDIyMCwgNDUsIDE1LCA1LCAyNDYsIDc2LCAxNSwgNSwgMjQ2LCA3NywgMzAsIDI0NSwgNzIsIDE1LCA1LCAKKyAgICAyNDYsIDc1LCAxNSwgNSwgMjQ2LCA3NCwgMTUsIDUsIDI0NiwgNzMsIDE1LCA1LCAyNDYsIDcyLCAxNSwgNSwgMjQ2LCA2OCwgCisgICAgMTUsIDUsIDI0NiwgNjYsIDE1LCA1LCAyNDYsIDY3LCAyNDIsIDk0LCAxNSwgNSwgMjQ2LCA2NywgMjQyLCA5NSwgMjQyLCAKKyAgICA5NCwgMTUsIDUsIDI0NiwgNjUsIDE1LCA1LCAyNDYsIDU4LCAxNSwgNSwgNzUsIDE1LCA1LCAxNjAsIDMwLCAyMjYsIDIxLCAKKyAgICAxNSwgNSwgMTYwLCAxMTcsIDE2MCwgMjI3LCAxOTUsIDExNywgMjI3LCAxOTQsIDE1LCA1LCAyNDUsIDIzNCwgMTUsIDUsIAorICAgIDI0NSwgMjM1LCAzMCwgMTE1LCA5NiwgMjQyLCA0OSwgOTYsIDI0OCwgMjIxLCAxNSwgNSwgMjQ1LCAyMzUsIDMwLCAyNDMsIAorICAgIDk2LCAxNSwgNSwgMjQ1LCAyMzUsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDI0NSwgMjM1LCAzMCwgMjIyLCA4LCAxNSwgNSwgCisgICAgMjQ1LCAyMzUsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjQ1LCAyMzUsIDMwLCA3MCwgMTUsIDUsIDI0NSwgMjExLCAxNSwgNSwgCisgICAgMjQ1LCAyMDAsIDE1LCA1LCAyNDUsIDE3NCwgMTUsIDUsIDI0NSwgMTUwLCAxNSwgNSwgMjQ1LCAxNTEsIDMwLCAyNDMsIAorICAgIDEwNCwgMTUsIDUsIDI0NSwgMTUxLCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjQ1LCAxNTEsIDMwLCAyMzEsIAorICAgIDkxLCAxNSwgNSwgMjQ1LCAxNTEsIDI0OSwgMTI1LCAyNDUsIDE1MCwgMTUsIDUsIDI0NSwgMTUxLCAyMjYsIDE2NCwgMjQ1LCAKKyAgICAxNTAsIDE1LCA1LCAyNDUsIDE1MSwgMjE4LCAyMzMsIDE1LCA1LCAyNDUsIDg5LCAxNSwgNSwgMjQ1LCA4NywgMTUsIDUsIAorICAgIDI0NSwgNzIsIDE1LCA1LCAyNDUsIDEwLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDYxLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDExNSwgCisgICAgOTYsIDIzMywgMTA0LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDExNSwgOTYsIDIzMywgMTA1LCAzMCwgMjMzLCAxMDQsIDE1LCA1LCAKKyAgICAyNDUsIDExLCAzMCwgMjU0LCAxMjMsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyNDUsIDExLCAzMCwgCisgICAgMjQ2LCA2NywgMjQyLCA5NCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyNDYsIDY3LCAyNDIsIDk1LCAyNDIsIDk0LCAxNSwgNSwgCisgICAgMjQ1LCAxMSwgMzAsIDE2MiwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyNDIsIDQ5LCAyNDIsIDk0LCAxNSwgNSwgMjQ1LCAxMSwgCisgICAgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjM0LCAyMDcsIDE1LCA1LCAyNDUsIDExLCAzMCwgCisgICAgMjM0LCAyMDgsIDIxOCwgMjMzLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDIzMywgMjE1LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIAorICAgIDIzMywgMTM1LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDIzMywgMTA1LCAzMCwgMjMzLCAxMDQsIDE1LCA1LCAyNDUsIDExLCAzMCwgCisgICAgMjMyLCAyNDEsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjMyLCA5OCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMTQsIDIzMCwgMTUsIAorICAgIDUsIDI0NSwgMTEsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDI0MywgMTM1LCAxNSwgNSwgMjQzLCAxMzYsIDI0MiwgOTQsIDE1LCAKKyAgICA1LCAyNDMsIDEzMywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMTE1LCA5NiwgMjQ4LCAyMjIsIDk2LCAxNjIsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDExNSwgOTYsIDE2MiwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMTE1LCA5NiwgMjM2LCAzNSwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMjU1LCAyNCwgMjE2LCAyNDAsIDk2LCAyMTcsIDkzLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTQsIDEyMywgCisgICAgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUzLCAyMzEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MywgMjMwLCA5NiwgMjQzLCAKKyAgICAxMTgsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTIsIDE0MSwgOTYsIAorICAgIDIwNSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUxLCA5OCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUxLCA5OSwgOTYsIDIwNSwgCisgICAgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ4LCAyMjEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0OCwgMywgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMjQ3LCAyMTgsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDYsIDc2LCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNDUsIDE3NCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ1LCAxNzUsIDk2LCAyMzMsIDEzNSwgMTUsIDUsIAorICAgIDI0MywgMTM0LCAzMCwgMjQ1LCAxNTAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0NSwgMTUxLCAzMCwgMjQzLCAxMDUsIDIxNiwgCisgICAgMjM5LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MywgCisgICAgOTYsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgMjE0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDIsIDIxMiwgMTUsIDUsIAorICAgIDI0MywgMTM0LCAzMCwgMjQyLCAyMTMsIDk2LCA2MSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCAxOTgsIDk2LCAyMTgsIAorICAgIDgzLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDIsIDQ5LCA5NiwgMjMyLCA5OSwgOTYsIDI0NSwgNzIsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDI0MiwgMzAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgMzEsIDk2LCAyMzMsIDEzNSwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMjQxLCAxODEsIDk2LCAyMzIsIDI0MSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQwLCAyMTgsIDE1LCA1LCAKKyAgICAyNDMsIDEzNCwgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzNSwgMTY2LCA5NiwgMjQwLCAKKyAgICAyMjMsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjM0LCAyNDIsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIAorICAgIDIzNCwgMjA3LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzQsIDg5LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzQsIDkwLCA5NiwgCisgICAgMjMzLCAxMDQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzMywgMjE2LCA5NiwgMjU0LCAxMjMsIDE1LCA1LCAyNDMsIDEzNCwgCisgICAgMzAsIDIzMywgMTM1LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzEsIDkyLCA5NiwgMjQ1LCAxNTAsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgCisgICAgMjI3LCAxOTUsIDExNywgMjI3LCAxOTQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDE5MCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgCisgICAgMjIyLCA4LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMjEsIDIzMSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjIwLCA2MywgMTUsIAorICAgIDUsIDI0MywgMTM0LCAzMCwgMjIwLCA2NCwgOTYsIDIxNSwgOTgsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIyMCwgMzAsIDE1LCAKKyAgICA1LCAyNDMsIDEzNCwgMzAsIDIxOCwgNDMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIxNywgNzIsIDE1LCA1LCAyNDMsIDEzNCwgCisgICAgMzAsIDcwLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjE0LCAyMjAsIDk2LCAKKyAgICAyNDYsIDc4LCAxNSwgNSwgMjQzLCAxMzQsIDExNywgMjQzLCAxMzMsIDE1LCA1LCAyNDMsIDEyOCwgMTUsIDUsIDI0MywgCisgICAgMTI5LCAyNDksIDEyNSwgMjQzLCAxMjgsIDE1LCA1LCAyNDMsIDEyNiwgMTUsIDUsIDI0MywgMTI3LCAxMTcsIDI0MywgMTI3LCAKKyAgICAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIDE1LCA1LCAyNDMsIDExOCwgMTUsIDUsIDI0MywgMTE5LCAyNDMsIDEyNywgMTE3LCAKKyAgICAyNDMsIDEyNywgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAxNSwgNSwgMjQzLCAxMTcsIDE1LCA1LCAyNDMsIDExNSwgMTUsIDUsIAorICAgIDI0MywgMTA2LCAxNSwgNSwgMjQzLCAxMDQsIDE1LCA1LCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyNDMsIDEwNSwgCisgICAgMTE3LCAyNDMsIDEwNCwgMTUsIDUsIDI0MywgMTA1LCAyNDksIDEyNSwgMjQzLCAxMDQsIDE1LCA1LCAyNDMsIDk2LCAxNSwgCisgICAgNSwgMjQzLCA5NSwgMTUsIDUsIDI0MywgOTAsIDE1LCA1LCAyNDMsIDM2LCAxNSwgNSwgMjQzLCAzNywgMzAsIDIzMywgMTk2LCAKKyAgICAxNSwgNSwgMjQyLCAyMTQsIDE1LCA1LCAyNDIsIDIxNSwgMzAsIDc1LCAxNSwgNSwgMjQyLCAyMTUsIDMwLCA3MCwgMTUsIDUsIAorICAgIDI0MiwgMjE1LCAyNDksIDEyNSwgMjQyLCAyMTQsIDE1LCA1LCAyNDIsIDIxMiwgMTUsIDUsIDI0MiwgMjEzLCAxMTcsIDI0MiwgCisgICAgMjEyLCAxNSwgNSwgMjQyLCAyMTMsIDI0OSwgMTI1LCAyNDIsIDIxMiwgMTUsIDUsIDI0MiwgMjA5LCAxNSwgNSwgMjQyLCAKKyAgICAxOTcsIDE1LCA1LCAyNDIsIDE5OCwgMjQyLCA5NCwgMTUsIDUsIDI0MiwgMTk1LCAxNSwgNSwgMjQyLCAxOTYsIDMwLCAxMTUsIAorICAgIDk2LCAyMzYsIDM1LCAxNSwgNSwgMjQyLCAxOTYsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyNDIsIDE5NiwgCisgICAgMzAsIDIzNiwgMzUsIDE1LCA1LCAyNDIsIDE5NiwgMzAsIDIzMiwgOTksIDk2LCAyMzYsIDM1LCAxNSwgNSwgMjQyLCAxOTYsIAorICAgIDMwLCAxOTAsIDE1LCA1LCAyNDIsIDE5MiwgMTUsIDUsIDI0MiwgMTkwLCAxNSwgNSwgMjQyLCAxOTEsIDI0OSwgMTI1LCAKKyAgICAyNDIsIDE5MCwgMTUsIDUsIDI0MiwgMTkxLCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyNDIsIDE5MSwgMzAsIDIxNywgNzIsIAorICAgIDE1LCA1LCAyNDIsIDE5MSwgMjE2LCAyMzksIDE1LCA1LCAyNDIsIDExMywgMTUsIDUsIDI0MiwgMTE0LCAyNDksIDEyNSwgCisgICAgMjQyLCAxMTMsIDE1LCA1LCAyNDIsIDExMSwgMTUsIDUsIDI0MiwgMTEyLCAzMCwgMjM0LCAyNDIsIDE1LCA1LCAyNDIsIAorICAgIDExMiwgMzAsIDIzNCwgMjQzLCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI0MiwgMTEyLCAzMCwgMjI3LCAxOTQsIAorICAgIDE1LCA1LCAyNDIsIDExMiwgMzAsIDIyMiwgOSwgOTYsIDIxNSwgMTEzLCAxNSwgNSwgMjQyLCAxMTIsIDI0MiwgOTQsIDE1LCAKKyAgICA1LCAyNDIsIDEwMywgMTUsIDUsIDI0MiwgMTA0LCAzMCwgMTE1LCA5NiwgMjMzLCAxOTYsIDE1LCA1LCAyNDIsIDEwNCwgMzAsIAorICAgIDIzMywgMTk2LCAxNSwgNSwgMjQyLCAxMDQsIDExNywgMjQyLCAxMDQsIDIzMiwgOTEsIDE1LCA1LCAyNDIsIDk4LCAxNSwgNSwgCisgICAgMjQyLCA5NiwgMTUsIDUsIDI0MiwgOTcsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjQyLCA4OCwgMTUsIDUsIDI0MiwgODcsIDE1LCAKKyAgICA1LCAyNDIsIDg0LCAxNSwgNSwgMjQyLCA4MywgMTUsIDUsIDE2MiwgMTUsIDUsIDI0MiwgNDksIDIxNiwgMjM5LCAxNSwgNSwgCisgICAgMjQyLCA0OSwgMjQyLCA5NCwgMTUsIDUsIDI0MiwgMzAsIDE1LCA1LCAyNDEsIDE4MCwgMTUsIDUsIDI0MSwgMTgxLCAzMCwgCisgICAgMjUzLCAyMzEsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjQxLCAxODEsIDMwLCAyNTIsIDE3NiwgCisgICAgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjQ3LCAxODcsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDI0MywgMTI2LCAxNSwgNSwgMjQxLCAKKyAgICAxODEsIDMwLCAyMzQsIDgxLCAxNSwgNSwgMjQxLCAxODEsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDI0MSwgMTgxLCAzMCwgCisgICAgMjIwLCA2MywgMTUsIDUsIDI0MSwgMTgxLCAzMCwgNzAsIDE1LCA1LCAyNDAsIDIyMiwgMTUsIDUsIDI0MCwgMjE4LCAxNSwgCisgICAgNSwgMjQwLCAyMTksIDMwLCAyNTQsIDEyMywgMTUsIDUsIDI0MCwgMjE5LCAzMCwgMjQyLCAzMCwgMTUsIDUsIDI0MCwgMjE5LCAKKyAgICAzMCwgMjM0LCAyMDcsIDE1LCA1LCAyNDAsIDIxOSwgMzAsIDIzMiwgMTk3LCAxNSwgNSwgMjQwLCAyMTksIDMwLCAyMTQsIAorICAgIDIxOSwgMTUsIDUsIDI0MCwgMjE1LCAxNSwgNSwgNzMsIDE1LCA1LCAyNDAsIDE1NCwgNjEsIDE1LCA1LCAyNDAsIDExNSwgCisgICAgMTUsIDUsIDIzNiwgNjMsIDE1LCA1LCAyMzYsIDY0LCAxMTcsIDIzNiwgNjQsIDI1MSwgOTgsIDE1LCA1LCAyMzYsIDY0LCAKKyAgICAxMTcsIDIzNiwgNjQsIDIxOCwgMjMzLCAxNSwgNSwgMjM2LCAzOCwgMTUsIDUsIDIzNiwgMzUsIDE1LCA1LCAyMzYsIDM2LCAKKyAgICAyNDcsIDI0MiwgMTUsIDUsIDIzNiwgMzYsIDIyMywgMzUsIDE1LCA1LCAyMzYsIDM2LCAxMTcsIDIzNiwgMzYsIDIyMCwgMTQsIAorICAgIDExNywgMjIwLCAxNCwgMjE0LCAyMjAsIDExNywgMjE0LCAyMTksIDE1LCA1LCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgCisgICAgMjM2LCAyNywgMTUsIDUsIDIzNiwgMjgsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyMzYsIDI2LCAxNSwgNSwgCisgICAgMjM2LCAxNiwgMTUsIDUsIDIzNiwgMTcsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjM2LCAxNywgMjQ5LCAxMjUsIDIzNiwgMTYsIAorICAgIDE1LCA1LCAyMzYsIDE3LCAyMjYsIDE2NCwgMjM2LCAxNiwgMTUsIDUsIDIzNiwgMTcsIDIxOCwgMjMzLCAxNSwgNSwgMjM2LCAKKyAgICA5LCAxNSwgNSwgMjM1LCAyNTUsIDE1LCA1LCAyMzUsIDE3OSwgMTUsIDUsIDIzNSwgMTY1LCAxNSwgNSwgMTc2LCAxNSwgNSwgCisgICAgMjM1LCAxMywgMzAsIDYxLCAxNSwgNSwgMjM1LCAxMywgMzAsIDI1NCwgMjU1LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI1NSwgCisgICAgMCwgOTYsIDIzMywgMjE1LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI1MiwgCisgICAgMTc2LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI1MiwgMTYwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDEzMCwgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyNTIsIDYsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQ1LCA4NywgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDUsIDcyLCAKKyAgICAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MywgMTM1LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MywgMTE4LCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDMsIDk2LCAxNSwgNSwgMjM1LCAxMywgCisgICAgMzAsIDI0MywgOTcsIDk2LCAyMjAsIDEwMSwgOTYsIDYxLCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MiwgMjE0LCAxNSwgNSwgCisgICAgMjM1LCAxMywgMzAsIDI0MiwgMTk3LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MiwgMTkxLCA5NiwgMjIxLCAyMzEsIDE1LCA1LCAKKyAgICAyMzUsIDEzLCAzMCwgMjQyLCAxOTEsIDI0OSwgMTI1LCAyNDIsIDE5MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDIsIDExMywgCisgICAgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDIsIDg3LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzNiwgMzUsIDE1LCA1LCAyMzUsIDEzLCAKKyAgICAzMCwgMjM2LCAxNiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzQsIDI0MiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzQsIDkyLCAKKyAgICAxNSwgNSwgMjM1LCAxMywgMzAsIDIzNCwgODksIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMyLCAyNDEsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjMyLCA5OCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzEsIDkxLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMSwgCisgICAgOTIsIDk2LCAyNDYsIDc4LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMSwgOTIsIDk2LCAyNDIsIDIxNCwgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyMzEsIDkyLCA5NiwgMjE3LCAyMiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyMzAsIDIzMSwgOTYsIDIyNywgMTg5LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyOSwgMTA3LCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyNSwgMTA4LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyMiwgCisgICAgMTQwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIwNiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjEsIDIzMSwgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyMjAsIDEwMiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyMCwgCisgICAgMzAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE5LCAyMjUsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE5LCAxODIsIDE1LCA1LCAKKyAgICAyMzUsIDEzLCAzMCwgMjE4LCA1MSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTcsIDUwLCAxNSwgNSwgMjM1LCAxMywgMzAsIAorICAgIDcwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxNCwgMjE5LCAxNSwgNSwgCisgICAgMjM1LCAxMywgMzAsIDIxNCwgMTkzLCAzMCwgMTkwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIxMCwgNDQsIDE1LCA1LCAyMzUsIDExLCAxNSwgNSwgMjM1LCAxMiwgMjQ5LCAxMjUsIDIzNSwgMTEsIDE1LCAKKyAgICA1LCAyMzUsIDQsIDE1LCA1LCAyMzUsIDEsIDE1LCA1LCAyMzQsIDI1NSwgMTUsIDUsIDIzNCwgMjU0LCAxNSwgNSwgMjM0LCAKKyAgICAyNTIsIDE1LCA1LCAyMzQsIDI1MywgMTE3LCAyMzQsIDI1MiwgMTUsIDUsIDIzNCwgMjQyLCAxNSwgNSwgMjM0LCAyNDMsIAorICAgIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjM0LCAyMzgsIDE1LCA1LCAyMzQsIDIzOSwgMzAsIDI1MiwgMTc2LCAxNSwgCisgICAgNSwgMjM0LCAyMzksIDI0OSwgMTI1LCAyMzQsIDIzOCwgMTUsIDUsIDIzNCwgMjM2LCAxNSwgNSwgMjM0LCAyMzUsIDE1LCA1LCAKKyAgICAyMzQsIDIwNywgMTUsIDUsIDIzNCwgMjA4LCAyMzMsIDExOCwgMzAsIDEwNCwgMTE3LCAyMzMsIDExOCwgMzAsIDcwLCAxNSwgCisgICAgNSwgMjM0LCAyMDgsIDExNywgMjM0LCAyMDgsIDIzMywgMTE4LCAzMCwgMTA0LCAxMTcsIDIzMywgMTE4LCAzMCwgNzAsIDE1LCAKKyAgICA1LCAyMzQsIDE1NywgMTUsIDUsIDIzNCwgOTIsIDE1LCA1LCAyMzQsIDkzLCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMzQsIAorICAgIDkzLCAzMCwgNzAsIDE1LCA1LCAyMzQsIDkzLCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMzQsIDg5LCAxNSwgNSwgMjM0LCA4MSwgCisgICAgMTUsIDUsIDIzNCwgNjgsIDE1LCA1LCAyMzQsIDY3LCAxNSwgNSwgMjM0LCA2NSwgMTUsIDUsIDIzNCwgNjYsIDExNywgMjM0LCAKKyAgICA2NSwgMTUsIDUsIDIzMywgMjE3LCAxNSwgNSwgMjMzLCAyMTgsIDExNywgMjQxLCAxODEsIDMwLCAyNTMsIDIzMCwgMjMzLCAKKyAgICAyMTgsIDExNywgMjQxLCAxODEsIDMwLCAyNTMsIDIyOSwgMTUsIDUsIDIzMywgMjE1LCAxNSwgNSwgMjMzLCAyMTMsIDE1LCAKKyAgICA1LCAyMzMsIDIxNCwgMjE0LCAxMiwgMTcsIDE1LCA1LCAyMzMsIDIxMiwgMTUsIDUsIDIzMywgMjA5LCAxNSwgNSwgMjMzLCAKKyAgICAyMTAsIDI0MiwgOTQsIDE1LCA1LCAyMzMsIDIwOCwgMTUsIDUsIDIzMywgMTk2LCAxNSwgNSwgMjMzLCAxOTcsIDIyNiwgCisgICAgMTY0LCAyMzMsIDE5NiwgMTUsIDUsIDIzMywgMTkxLCAxNSwgNSwgMjMzLCAxNzIsIDE1LCA1LCAyMzMsIDEzNSwgMTUsIDUsIAorICAgIDIzMywgMTE3LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCA2MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMTE1LCA5NiwgMjQ4LCAKKyAgICAyMjIsIDk2LCAxNjIsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDExNSwgOTYsIDI0MywgOTYsIDE1LCA1LCAyMzMsIDExOCwgMzAsIAorICAgIDExNSwgOTYsIDIzMywgMTA0LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNTQsIDE3OCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgCisgICAgMjU0LCAxMjMsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI1MywgMjMyLCAyMTAsIDQwLCAyMTYsIDIzOSwgMTUsIDUsIDIzMywgCisgICAgMTE4LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI1MiwgNiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjQ4LCAKKyAgICAxNjYsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI0NSwgMTUwLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDMsIDEzNSwgMTUsIDUsIAorICAgIDIzMywgMTE4LCAzMCwgMjQzLCA5NiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjQyLCAxMDMsIDE1LCA1LCAyMzMsIDExOCwgCisgICAgMzAsIDI0MiwgMTA0LCA5NiwgMjQyLCAxMDMsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDE2MiwgMTUsIDUsIDIzMywgMTE4LCAKKyAgICAzMCwgMjQyLCAzMCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjQxLCAxODEsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDIzMywgCisgICAgMTE4LCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjM2LCAxNiwgMTUsIDUsIDIzMywgMTE4LCAKKyAgICAzMCwgMjM2LCAxNywgOTYsIDE2MiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjM2LCAxNywgOTYsIDIzMiwgOTgsIDE1LCA1LCAKKyAgICAyMzMsIDExOCwgMzAsIDIzNCwgOTIsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzNCwgODEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIAorICAgIDIzMywgMjE1LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzMsIDIwOSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMzLCAyMTAsIAorICAgIDk2LCAyNDEsIDE4MSwgOTYsIDYxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzMsIDExNywgMTUsIDUsIDIzMywgMTE4LCAzMCwgCisgICAgMjMyLCAxOTcsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMiwgOTgsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMiwgODYsIDE1LCAKKyAgICA1LCAyMzMsIDExOCwgMzAsIDIzMSwgOTEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMSwgOTIsIDk2LCAyNDUsIDE1MCwgMTUsIAorICAgIDUsIDIzMywgMTE4LCAzMCwgMjMwLCA2MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyMzMsIDExOCwgCisgICAgMzAsIDIyMCwgNjQsIDk2LCAyMTgsIDQzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMjAsIDEwLCA5NiwgMjQyLCAxOTEsIDk2LCAKKyAgICAyNDUsIDg3LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMjAsIDEwLCA5NiwgMjQyLCAxOTEsIDIxNiwgMjM5LCAxNSwgNSwgCisgICAgMjMzLCAxMTgsIDMwLCAyMTksIDIyMywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE5LCAyMjQsIDk2LCAyMTksIDIyMywgMTUsIAorICAgIDUsIDIzMywgMTE4LCAzMCwgMjE4LCA0MywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE3LCA4NCwgMTUsIDUsIDIzMywgMTE4LCAKKyAgICAzMCwgMjE3LCA3MiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE3LCAyMywgOTYsIDExNSwgOTYsIDIxOCwgODQsIDk2LCAxOTcsIAorICAgIDE1LCA1LCAyMzMsIDExOCwgMzAsIDcwLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAxMDQsIDk2LCA2MSwgMTUsIDUsIDIzMywgCisgICAgMTE4LCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgNzAsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxNCwgMjMxLCA5NiwgMjUzLCAKKyAgICAyMzEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIAorICAgIDIzMywgMTE4LCAyMTgsIDIzMywgMTUsIDUsIDIzMywgMTE1LCAxNSwgNSwgMjMzLCAxMTYsIDMwLCAyMjAsIDYzLCAxNSwgNSwgCisgICAgMjMzLCAxMTYsIDMwLCAyMjAsIDY0LCA5NiwgMjE4LCA0MywgMTUsIDUsIDIzMywgMTE2LCAyNDIsIDk0LCAxNSwgNSwgMjMzLCAKKyAgICAxMTYsIDI0MiwgOTUsIDExNywgMjMzLCAxMTYsIDI0MiwgOTUsIDIyMCwgNjMsIDE1LCA1LCAyMzMsIDExMSwgMTUsIDUsIAorICAgIDIzMywgMTA0LCAxNSwgNSwgMjMzLCAxMDUsIDMwLCAyMzMsIDEwNCwgMTUsIDUsIDIzMywgMTAyLCAxNSwgNSwgMjMzLCAKKyAgICAxMDMsIDMwLCAyMzMsIDE5NiwgMTUsIDUsIDIzMywgMTAzLCAzMCwgMjMzLCAxOTcsIDk2LCAyMjIsIDE0MCwgMTUsIDUsIAorICAgIDIzMiwgMjQxLCAxNSwgNSwgMjMyLCAyMjYsIDE1LCA1LCAyMzIsIDIxNiwgMTUsIDUsIDIzMiwgMTk3LCAxNSwgNSwgMjMyLCAKKyAgICA5OCwgMTUsIDUsIDIzMiwgOTksIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzMiwgOTYsIDE1LCA1LCAyMzIsIDk3LCAzMCwgCisgICAgMjU0LCAxNzgsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjQ1LCA3MiwgMTUsIAorICAgIDUsIDIzMiwgOTcsIDMwLCAyNDUsIDczLCAyMTYsIDIzOSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyNDMsIDEwNSwgMjE2LCAKKyAgICAyMzksIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjQxLCAxODEsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMzYsIAorICAgIDE2LCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzNSwgMSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMzQsIDI1NSwgMTUsIDUsIDIzMiwgCisgICAgOTcsIDMwLCAyMzUsIDAsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMzQsIDkyLCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMzAsIDIzMywgMTM2LCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjMzLCAxMTcsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAzMCwgMjMxLCA5MiwgOTYsIDI0NSwgMTUwLCAxNSwgNSwgMjMyLCA5NywgMzAsIDIyOSwgMTA3LCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMzAsIDIyNywgMjM3LCAxNSwgNSwgMjMyLCA5NywgMzAsIDIxOSwgMTkyLCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAzMCwgMjE5LCAxNzQsIDk2LCAyNTEsIDEyNSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMTUsIDExMywgMTUsIDUsIDIzMiwgCisgICAgOTcsIDIxNiwgMjM5LCAxNSwgNSwgMjMyLCA5NywgMjQ5LCAxMjUsIDIzMiwgOTYsIDE1LCA1LCAyMzIsIDk3LCAyMjYsIAorICAgIDE2NCwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDIxOCwgMjMzLCAxNSwgNSwgMjMyLCA5NywgMjIwLCA0NSwgMTUsIDUsIAorICAgIDIzMiwgOTUsIDE1LCA1LCAyMzIsIDkxLCAxNSwgNSwgMjMyLCA5MiwgMTE3LCAyMzIsIDkxLCAxNSwgNSwgMjMyLCA5MiwgCisgICAgMjI2LCAxNjQsIDIzMiwgOTEsIDE1LCA1LCAyMzIsIDkyLCAyMjAsIDQ1LCAxNSwgNSwgMjMyLCA4OSwgMTUsIDUsIDIzMiwgCisgICAgODYsIDE1LCA1LCAyMzIsIDg0LCAxNSwgNSwgMjMyLCA4NSwgMTE3LCAyMzIsIDg0LCAxNSwgNSwgMjMyLCA4NSwgMTE3LCAKKyAgICAyMzIsIDg1LCAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIDE1LCA1LCAxODQsIDE1LCA1LCAyMzEsIDIzOSwgMzAsIDIxNywgNzIsIAorICAgIDE1LCA1LCAyMzEsIDIzOSwgMjQyLCA5NCwgMTUsIDUsIDIzMSwgMjM4LCAxNSwgNSwgMjMxLCAyMTAsIDE1LCA1LCAyMzEsIAorICAgIDE2NiwgMTUsIDUsIDIzMSwgMTQ3LCAxNSwgNSwgMjMxLCAxNDYsIDE1LCA1LCAyMzEsIDkxLCAxNSwgNSwgMjMxLCA0NywgCisgICAgMTUsIDUsIDIzMCwgMjMwLCAxNSwgNSwgMjMwLCAxODgsIDE1LCA1LCAyMzAsIDEwMiwgMTUsIDUsIDIzMCwgMTAzLCAxMTcsIAorICAgIDIzMCwgMTAyLCAxNSwgNSwgMjMwLCA5MywgMTUsIDUsIDIzMCwgOTQsIDI0MiwgOTQsIDE1LCA1LCAyMzAsIDc4LCAxNSwgNSwgCisgICAgMjMwLCA2NCwgMTUsIDUsIDIzMCwgNjEsIDE1LCA1LCAyMzAsIDYyLCAzMCwgNjEsIDE1LCA1LCAyMzAsIDYyLCAzMCwgMjMzLCAKKyAgICAxOTYsIDE1LCA1LCAyMzAsIDYyLCAzMCwgMjEwLCAxMTYsIDE1LCA1LCAyMzAsIDYyLCAxMTcsIDIzMCwgNjEsIDE1LCA1LCAKKyAgICAyMzAsIDYyLCAxMTcsIDIzMCwgNjIsIDMwLCAxMTUsIDk2LCAxOTcsIDE1LCA1LCAyMzAsIDYyLCAyNDksIDEyNSwgMjMwLCAKKyAgICA2MSwgMTUsIDUsIDIzMCwgNTksIDE1LCA1LCAyMzAsIDYwLCAzMCwgNjEsIDE1LCA1LCAyMzAsIDYwLCAzMCwgMTE1LCA5NiwgCisgICAgMjQ4LCAzLCAxNSwgNSwgMjMwLCA2MCwgMzAsIDI0OCwgMywgMTUsIDUsIDIzMCwgNjAsIDI0MiwgOTQsIDE1LCA1LCAxOTcsIAorICAgIDE1LCA1LCAyMjksIDIyNywgMTUsIDUsIDIyOSwgMjE2LCAxNSwgNSwgMjI5LCAyMTcsIDIzNSwgMTkyLCAxNSwgNSwgMjI5LCAKKyAgICAyMTcsIDMwLCAyMTksIDIyNiwgMjE2LCAyMzksIDE1LCA1LCAyMjksIDIxNywgMjI2LCAxNjQsIDIyOSwgMjE2LCAxNSwgNSwgCisgICAgMjI5LCAyMTUsIDE1LCA1LCAyMjksIDIwOCwgMjI3LCAxODAsIDE1LCA1LCAyMjksIDIwNywgMTUsIDUsIDIyOSwgMjA2LCAKKyAgICAxNSwgNSwgMjI5LCAxMDcsIDE1LCA1LCAyMjksIDEwOCwgMzAsIDYxLCAxNSwgNSwgMjI5LCAxMDgsIDMwLCAyMTQsIDIxOSwgCisgICAgMTUsIDUsIDIyOSwgMTA4LCAyMjAsIDQ1LCAxNSwgNSwgMjI4LCAyMzMsIDE1LCA1LCAyMjgsIDIzNCwgMzAsIDc1LCAxNSwgCisgICAgNSwgMjI4LCAyMzIsIDE1LCA1LCAyMjgsIDIwMywgMTUsIDUsIDIyOCwgMjA0LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAKKyAgICAxNSwgNSwgMjI4LCAyMDQsIDMwLCAyNDMsIDk3LCA5NiwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjI4LCAyMDEsIAorICAgIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDI1NCwgMTIzLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyNTMsIDIzMSwgMTUsIDUsIDIyOCwgCisgICAgMjAyLCAzMCwgMjUzLCAyMzIsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjQyLCAxMDMsIDE1LCA1LCAKKyAgICAyMjgsIDIwMiwgMzAsIDIzMSwgOTIsIDk2LCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIyOSwgCisgICAgMTA3LCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjIwLCA2MywgMTUsIDUsIAorICAgIDIyOCwgMjAyLCAzMCwgMjIwLCA2NCwgOTYsIDExNSwgMjU0LCAxMjMsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIyMCwgNjQsIAorICAgIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjIwLCA2NCwgOTYsIDI1MywgMjMyLCA5NiwgMjUzLCAyMzEsIAorICAgIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIxNCwgMjMxLCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIxNCwgCisgICAgMTI2LCAxNSwgNSwgMjI4LCAxOTAsIDE1LCA1LCAyMjcsIDIzNywgMTUsIDUsIDIyNywgMjEwLCAxNSwgNSwgMjI3LCAxOTQsIAorICAgIDE1LCA1LCAyMjcsIDE5NSwgMjMzLCAxMTYsIDMwLCAyNDMsIDk2LCAxNSwgNSwgMjI3LCAxOTUsIDIzMywgMTE2LCAzMCwgCisgICAgMjMxLCAxNDcsIDE1LCA1LCAyMjcsIDE5NSwgMjMzLCAxMTYsIDMwLCAyMjIsIDgsIDE1LCA1LCAyMjcsIDE5NSwgMjMzLCAKKyAgICAxMTYsIDMwLCAyMjIsIDksIDExNywgMjI3LCAxOTUsIDIzMywgMTE2LCAzMCwgMjIyLCA4LCAxNSwgNSwgMjI3LCAxOTUsIAorICAgIDIzMywgMTE2LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyMjcsIDE5NSwgMjE2LCAyMzksIDE1LCA1LCAyMjcsIDE5NSwgMTE3LCAKKyAgICAyMjcsIDE5NCwgMTUsIDUsIDIyNywgMTk1LCAyNDksIDEyNSwgMjI3LCAxOTQsIDE1LCA1LCAyMjcsIDE5NSwgMjQ5LCAxMjUsIAorICAgIDIyNywgMTk1LCAyMzMsIDExNiwgMTE3LCAyMzMsIDExNSwgMTUsIDUsIDIyNywgMTg5LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgCisgICAgMjQsIDMwLCAyNTMsIDIyNiwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAzMCwgMjUyLCA2LCAxNSwgNSwgMjI3LCAxOTAsIAorICAgIDI1NSwgMjQsIDMwLCAyNDYsIDc0LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyNDIsIDEwMywgMTUsIDUsIDIyNywgCisgICAgMTkwLCAyNTUsIDI0LCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAzMCwgMjM0LCAKKyAgICAyNTUsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgMzAsIDIzMywgMTM1LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIAorICAgIDMwLCAyMjksIDEwNywgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAzMCwgMjE5LCAxNzEsIDE1LCA1LCAyMjcsIDE5MCwgCisgICAgMjU1LCAyNCwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjI3LCAxOTAsIDIzNCwgNjYsIDMwLCAyNTIsIDYsIDE1LCA1LCAyMjcsIAorICAgIDE5MCwgMjM0LCA2NiwgMzAsIDI1MiwgNywgNzAsIDE1LCA1LCAxOTAsIDE1LCA1LCAyMjYsIDgwLCAxNSwgNSwgMjI2LCA0NywgCisgICAgMTUsIDUsIDIyNiwgMjEsIDE1LCA1LCAyMjUsIDE2MSwgMTUsIDUsIDIyNSwgMTA4LCAxNSwgNSwgMjI1LCAxMDksIDMwLCAKKyAgICA2MSwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgMjU1LCAyNSwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgMjUyLCA2LCAxNSwgNSwgCisgICAgMjI1LCAxMDksIDMwLCAyNTEsIDEyNSwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgNzUsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDczLCAKKyAgICAxNSwgNSwgMjI1LCAxMDksIDMwLCAyNDAsIDExNSwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgNzAsIDE1LCA1LCAyMjUsIDEwOSwgCisgICAgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjI1LCAxMDksIDI0OSwgMTI1LCAyMjUsIDEwOCwgMTUsIDUsIDIyNSwgNTMsIDE1LCA1LCAKKyAgICAyMjUsIDU0LCAzMCwgMjM0LCAyMzgsIDE1LCA1LCAyMjUsIDU0LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMjUsIDU0LCAzMCwgCisgICAgMjEwLCAxMTYsIDE1LCA1LCAyMjUsIDU0LCAyMjYsIDE2NCwgMjI1LCA1MywgMTUsIDUsIDIwNSwgMTUsIDUsIDIyMywgMTgyLCAKKyAgICAxNSwgNSwgMjIzLCAzNSwgMTUsIDUsIDIyMiwgMTQwLCAxNSwgNSwgMjA2LCAxNSwgNSwgMjIyLCAyMiwgMjI3LCAxODAsIAorICAgIDE1LCA1LCAyMjIsIDIxLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDYxLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDI0NiwgNzgsIDE1LCAKKyAgICA1LCAyMjIsIDIyLCAzMCwgMjQ2LCA3NiwgMTUsIDUsIDIyMiwgMjIsIDMwLCAxNjIsIDE1LCA1LCAyMjIsIDIyLCAzMCwgCisgICAgMjM0LCAyNDIsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjMyLCA4NCwgMTUsIAorICAgIDUsIDIyMiwgMjIsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDIyMiwgMjIsIAorICAgIDMwLCAyMjIsIDgsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjIwLCAzMCwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMTcsIDkzLCAxNSwgCisgICAgNSwgMjIyLCAyMiwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIxNCwgMjI1LCAxNSwgNSwgMjIyLCAyMiwgCisgICAgMzAsIDIxNCwgMTk3LCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIxNCwgMTUwLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIxNCwgMTI2LCAKKyAgICAxNSwgNSwgMjIyLCAyMiwgMTE3LCAyMjIsIDIxLCAxNSwgNSwgMjIyLCAyMiwgMjQyLCA5NCwgMTUsIDUsIDIyMiwgOCwgMTUsIAorICAgIDUsIDIyMiwgOSwgMjMzLCAxMTgsIDMwLCAyNTMsIDIyOSwgMTUsIDUsIDIyMSwgMjM5LCAxNSwgNSwgMjIxLCAyMzEsIDE1LCAKKyAgICA1LCAyMjAsIDEwMiwgMTUsIDUsIDIyMCwgMTAwLCAxNSwgNSwgMjIwLCAxMDEsIDMwLCA2MSwgMTUsIDUsIDIyMCwgMTAxLCAKKyAgICAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDI0MiwgMTkwLCAxNSwgNSwgMjIwLCAxMDEsIDMwLCAyMjksIAorICAgIDEwNywgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMjE5LCAyMjMsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDIxNSwgOTgsIDE1LCA1LCAKKyAgICAyMjAsIDEwMSwgMzAsIDcwLCAxNSwgNSwgMjIwLCAxMDEsIDMwLCAxMDQsIDk2LCA2MSwgMTUsIDUsIDIyMCwgOTksIDE1LCAKKyAgICA1LCAyMjAsIDk3LCAxNSwgNSwgMjIwLCA3OCwgMTUsIDUsIDIyMCwgNjMsIDE1LCA1LCAyMjAsIDY0LCAyNDAsIDIyMiwgMTUsIAorICAgIDUsIDIyMCwgNjQsIDExNywgMjIwLCA2NCwgMjQzLCAxMjcsIDExNywgMjQzLCAxMjcsIDI0MywgOTcsIDExNywgMjQzLCA5NiwgCisgICAgMTUsIDUsIDIyMCwgNjQsIDExNywgMjIwLCA2NCwgMjE3LCA5NCwgMTE3LCAyMTcsIDk0LCAyNDMsIDk3LCAxMTcsIDI0MywgCisgICAgOTYsIDE1LCA1LCAyMjAsIDU2LCAxNSwgNSwgMjIwLCA1MSwgMTUsIDUsIDIyMCwgNDgsIDE1LCA1LCAyMjAsIDQ3LCAxNSwgCisgICAgNSwgMjIwLCA0NCwgMTUsIDUsIDIyMCwgMzAsIDE1LCA1LCAyMjAsIDMxLCAzMCwgNjEsIDE1LCA1LCAyMjAsIDMxLCAzMCwgCisgICAgMjM2LCAxNiwgMTUsIDUsIDIyMCwgMjQsIDE1LCA1LCAyMjAsIDI1LCAzMCwgNjEsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjUyLCAKKyAgICAxNjEsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjUxLCAxMDksIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjQ3LCAyMDYsIDE1LCA1LCAKKyAgICAyMjAsIDI1LCAzMCwgMjQzLCA5NiwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMzYsIDM1LCAxNSwgNSwgMjIwLCAyNSwgMzAsIAorICAgIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjMzLCAxOTEsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjMyLCAKKyAgICA4NiwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMzAsIDkzLCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIyMiwgOCwgMTUsIDUsIDIyMCwgCisgICAgMTgsIDE1LCA1LCAyMjAsIDEzLCAxNSwgNSwgMjIwLCAxNCwgMjE2LCAyMzksIDE1LCA1LCAyMjAsIDE0LCAxMTcsIDIyMCwgCisgICAgMTQsIDI1MSwgOTksIDExNywgMjUxLCA5OCwgMTUsIDUsIDIyMCwgOSwgMTUsIDUsIDIxOSwgMjI1LCAxNSwgNSwgMjE5LCAKKyAgICAyMjYsIDExNywgMjM1LCAxOTMsIDIxOSwgMjI1LCAxNSwgNSwgMjE5LCAyMjMsIDE1LCA1LCAyMTksIDIyMiwgMTUsIDUsIAorICAgIDIxOSwgMTkxLCAxNSwgNSwgMjE5LCAxOTIsIDI0MiwgOTQsIDE1LCA1LCAyMTksIDE4MiwgMTUsIDUsIDIxOSwgMTgwLCAxNSwgCisgICAgNSwgMjE5LCAxODEsIDExNywgMjE5LCAxODEsIDIxOSwgMjIzLCAxNSwgNSwgMjE5LCAxNzMsIDE1LCA1LCAyMTksIDE3MSwgCisgICAgMTUsIDUsIDIxOCwgODMsIDE1LCA1LCAyMTgsIDg0LCAxMTcsIDIxOCwgODMsIDE1LCA1LCAyMTgsIDU0LCAxNSwgNSwgMjE4LCAKKyAgICA1MywgMTUsIDUsIDIxOCwgNTEsIDE1LCA1LCAyMTgsIDQzLCAxNSwgNSwgMjE4LCA0MiwgMTUsIDUsIDIxOCwgMTcsIDE1LCAKKyAgICA1LCAyMTgsIDE2LCAxNSwgNSwgMjE3LCAxMDUsIDE1LCA1LCAyMTcsIDEwNiwgMjUzLCAyMTYsIDE1LCA1LCAyMTcsIDEwNiwgCisgICAgMzAsIDI0MSwgMTgwLCAxNSwgNSwgMjE3LCAxMDYsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDIxNywgMTA2LCAyNDIsIDk0LCAKKyAgICAxNSwgNSwgMjE3LCA5MywgMTUsIDUsIDIxNywgOTQsIDExNywgMjE3LCA5NCwgMjI4LCAyMzQsIDExNywgMjI4LCAyMzQsIAorICAgIDI0NywgMTg4LCAxMTcsIDI0NywgMTg3LCAxNSwgNSwgMjE3LCA5NCwgMjE4LCAyMzMsIDE1LCA1LCAyMTcsIDg0LCAxNSwgNSwgCisgICAgMTI5LCAzMCwgMjUyLCA2LCAxNSwgNSwgMTI5LCAzMCwgMjQyLCAxMDMsIDE1LCA1LCAxMjksIDMwLCAyMjAsIDYzLCAxNSwgCisgICAgNSwgMTI5LCAzMCwgMjE5LCAyMjUsIDE1LCA1LCAxMjksIDMwLCAyMTUsIDExMywgMTUsIDUsIDEyOSwgMzAsIDIxNCwgMjE5LCAKKyAgICAxNSwgNSwgMjE3LCA3MiwgMTUsIDUsIDIxNywgNTAsIDE1LCA1LCAyMTcsIDIyLCAxNSwgNSwgMjE3LCAyMywgMjQyLCA5NCwgCisgICAgMTUsIDUsIDIxNiwgMTE3LCAxNSwgNSwgMjE2LCAxMTgsIDIxNiwgMjM5LCAxNSwgNSwgMjE2LCA5MCwgMTUsIDUsIDIxNiwgCisgICAgNzIsIDE1LCA1LCAyMTYsIDczLCAzMCwgMjE3LCA3MiwgMTUsIDUsIDIxNiwgNzMsIDExNywgMjE2LCA3MiwgMTUsIDUsIAorICAgIDIxNiwgNzMsIDExNywgMjE2LCA3MywgMjQzLCAxMjcsIDExNywgMjQzLCAxMjcsIDI0MywgOTcsIDExNywgMjQzLCA5NiwgCisgICAgMTUsIDUsIDIxNSwgMTE4LCAxNSwgNSwgMjE1LCAxMTMsIDE1LCA1LCAyMTUsIDExMSwgMTUsIDUsIDIxNSwgMTA4LCAxNSwgCisgICAgNSwgMjE1LCA5OCwgMTUsIDUsIDIxNSwgOTksIDExNywgMjE1LCA5OSwgMjEwLCAxMTcsIDExNywgMjEwLCAxMTYsIDE1LCA1LCAKKyAgICA3MCwgMTUsIDUsIDEwNCwgMjQyLCAxMDMsIDE1LCA1LCAxMDQsIDEwNCwgNzAsIDE1LCA1LCAxMDQsIDExNywgMTA0LCAyMjYsIAorICAgIDkwLCAxMTcsIDIyNiwgOTAsIDI0MywgOTcsIDExNywgMjQzLCA5NiwgMTUsIDUsIDEwNCwgMTE3LCAxMDQsIDIxOCwgMTgsIAorICAgIDExNywgMjE4LCAxNywgMTUsIDUsIDEwNCwgMTE3LCAxMDQsIDEwNCwgMjIzLCA0OSwgMTE3LCAxMDQsIDIyMywgNDgsIDE1LCAKKyAgICA1LCAyMTQsIDIzMCwgMTUsIDUsIDIxNCwgMjI1LCAxNSwgNSwgMjE0LCAyMTksIDE1LCA1LCAyMTQsIDIyMCwgMjMzLCAxOTEsIAorICAgIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjE0LCAyMjAsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDIxNCwgCisgICAgMjIwLCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgNzAsIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIAorICAgIDEwNCwgMjQyLCA5NCwgMTUsIDUsIDIxNCwgMjIwLCAyNDIsIDk0LCAxNSwgNSwgMjE0LCAyMjAsIDIyMCwgNDUsIDE1LCA1LCAKKyAgICAyMTQsIDIyMCwgMjIwLCA0NiwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjE0LCAyMTUsIDE1LCA1LCAyMTQsIDE5NywgMTUsIDUsIAorICAgIDIxNCwgMTk4LCAzMCwgMjMzLCAxMTcsIDE1LCA1LCAyMTQsIDE5OCwgMzAsIDIzMSwgOTIsIDk2LCAyNDgsIDIyMSwgMTUsIAorICAgIDUsIDIxNCwgMTk4LCAzMCwgMjIwLCAxMDAsIDE1LCA1LCAyMTQsIDE5OCwgMzAsIDcwLCAxNSwgNSwgMjE0LCAxOTYsIDE1LCAKKyAgICA1LCAyMTQsIDE5MiwgMTUsIDUsIDIxNCwgMTkzLCAzMCwgMjM0LCAyMDcsIDE1LCA1LCAyMTQsIDE5MywgMzAsIDE5MCwgMTUsIAorICAgIDUsIDIxNCwgMTkwLCAxNSwgNSwgMjE0LCAxOTEsIDI0MiwgOTQsIDE1LCA1LCAyMTQsIDE1MCwgMTUsIDUsIDIxNCwgMTUxLCAKKyAgICAyNDksIDEyNSwgMjE0LCAxNTAsIDE1LCA1LCAyMTQsIDE1MSwgMjIwLCA0NSwgMTUsIDUsIDIxNCwgMTQ4LCAxNSwgNSwgCisgICAgMjE0LCAxNDksIDMwLCAxMTUsIDk2LCAxNjIsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDExNSwgOTYsIDE5NywgMTUsIDUsIAorICAgIDIxNCwgMTQ5LCAzMCwgMjU0LCAxNzgsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDE2MiwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgCisgICAgMjI3LCAxOTQsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgCisgICAgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgOTYsIDI1MiwgNiwgMTUsIDUsIDIxNCwgMTQ3LCAKKyAgICAxNSwgNSwgMjE0LCAxNDQsIDE1LCA1LCAyMTQsIDE0MywgMTUsIDUsIDIxNCwgMTM5LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKKyAgICA2MSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjUzLCAyMjYsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDEzMCwgMTUsIDUsIDIxNCwgCisgICAgMTQwLCAzMCwgMjQ2LCA2OCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjQzLCAxMzUsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAorICAgIDI0MywgMTE4LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAorICAgIDI0MywgOTYsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MiwgMTEzLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxNjIsIDE1LCA1LCAKKyAgICAyMTQsIDE0MCwgMzAsIDIzNiwgMzUsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzNiwgMTYsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAorICAgIDIzNSwgMTY1LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMzQsIDkyLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMzIsIDg0LCAxNSwgCisgICAgNSwgMjE0LCAxNDAsIDMwLCAyMzAsIDE4OCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTkwLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKKyAgICAyMjAsIDYzLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTksIDE4MCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjE1LCAxMTgsIAorICAgIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDEwNCwgOTYsIDI0MiwgMTAzLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTQsIDIxOSwgCisgICAgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjE0LCAxMzcsIDE1LCA1LCAyMTQsIDEzNywgMTUsIDUsIDIxNCwgMTM4LCAzMCwgNzAsIAorICAgIDE1LCA1LCAyMTQsIDEyNiwgMTUsIDUsIDIxNCwgMTI3LCAzMCwgNjEsIDE1LCA1LCAyMTQsIDEyNywgMzAsIDIzMywgMjE3LCAKKyAgICAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMzMsIDE5NiwgMTUsIDUsIDIxNCwgMTI3LCAzMCwgMjE3LCA3MiwgMTUsIDUsIDIxNCwgCisgICAgMTIyLCAxNSwgNSwgMjE0LCAxMjUsIDE1LCA1LCAyMTQsIDEyMywgMTUsIDUsIDIxNCwgMTE5LCAxNSwgNSwgMjE0LCAxMDgsIAorICAgIDE1LCA1LCAyMTQsIDEwOSwgMzAsIDIzNCwgMjA3LCAxNSwgNSwgMjE0LCAxMDcsIDE1LCA1LCAyMTAsIDExNiwgMTUsIDUsIAorICAgIDIxMCwgMTE3LCAyMTYsIDIzOSwgMTUsIDUsIDIxMCwgMTE3LCA5MiwgMzAsIDIzMywgMTk2LCAxNSwgNSwgMjEwLCAxMTMsIAorICAgIDE1LCA1LCAyMTAsIDEwNiwgMTUsIDUsIDIxMCwgOTMsIDE1LCA1LCAyMTAsIDQ0LCAxNSwgNSwgMjEwLCA0NSwgMTE3LCAKKyAgICAyMTAsIDQ0LCAxNSwgNSwgMjEwLCA0MywgMTUsIDUsIDIxMCwgNDEsIDE1LCA1LCAyMTAsIDQyLCAyMzUsIDMsIDIxNiwgCisgICAgMjM5LCAxNSwgNSwgMjEwLCAzNiwgMTUsIDUsIDIxMCwgMjgsIDE1LCA1LCAyMTAsIDEzLCAxNSwgNSwgMjEwLCAxMSwgMTUsIAorICAgIDUsIDIxMCwgMTIsIDMwLCA2MSwgMTUsIDUsIDIxMCwgMTAsIDE1LCA1LCAyMTAsIDksIDE1LCAxMzIsIDUsIDExMywgMjUzLCAKKyAgICAyMzEsIDE1LCAxMzIsIDUsIDEzNCwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDI1MywgMjMxLCAxNSwgMTMyLCAKKyAgICA1LCAyNDQsIDgxLCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgMjE5LCAxMjUsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyMjAsIAorICAgIDEyMiwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDI1MywgCisgICAgMjMxLCAxNSwgMTMyLCA1LCAxMzQsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyNDcsIDE4NywgMTUsIDEzMiwgCisgICAgNSwgMjQ0LCA4MSwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDIxOSwgMTI1LCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjIwLCAKKyAgICAxMjIsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyNDUsIDE5MywgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyNDcsIAorICAgIDE4NywgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgNzAsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDcwLCAxNSwgMTMyLCA1LCAyMTksIAorICAgIDEyNSwgNzAsIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCA3MCwgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIDcwLCAxNSwgMTMyLCA1LCAKKyAgICAyMjgsIDIwMCwgNzAsIDE1LCAxMzIsIDUsIDEyMywgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMTEzLCAyNDMsIDM4LCAxNSwgCisgICAgMTMyLCA1LCAxMzQsIDI0MywgMzgsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDI0MywgMzgsIDE1LCAxMzIsIDUsIDI0NCwgODEsIAorICAgIDI0MywgMzgsIDE1LCAxMzIsIDUsIDIxOSwgMTI1LCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgMjQzLCAzOCwgCisgICAgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIDI0MywgMzgsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAKKyAgICAxMjMsIDI0MywgMzUsIDE1LCAxMzIsIDUsIDExMywgMjQzLCAzNSwgMTUsIDEzMiwgNSwgMTM0LCAyNDMsIDM1LCAxNSwgCisgICAgMTMyLCA1LCAyNDQsIDExLCAyNDMsIDM1LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyNDMsIDM1LCAxNSwgMTMyLCA1LCAxMTMsIAorICAgIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc5LCAyMTQsIDEyLCAxNywgCisgICAgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgCisgICAgMjE5LCAxMjUsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAyNDUsIDE5MywgCisgICAgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDEyMywgMjIwLCA3MywgMTUsIAorICAgIDEzMiwgNSwgMTEzLCAyMjAsIDczLCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzMsIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA3NCwgCisgICAgMjE0LCAxMiwgMTcsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDIyMCwgNzMsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDIyMCwgNzMsIAorICAgIDE1LCAxMzIsIDUsIDIyMCwgNzksIDMwLCAyNDMsIDExOSwgOTYsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyMjAsIDc5LCAzMCwgCisgICAgMjQzLCAxMTksIDk2LCAyMzAsIDE4OCwgMTUsIDEzMiwgNSwgMTIzLCAyNTEsIDk1LCAxNSwgMTMyLCA1LCAxMTMsIDI1MSwgCisgICAgOTUsIDE1LCAxMzIsIDUsIDEzNCwgMjUxLCA5NSwgMTUsIDEzMiwgNSwgMTM0LCAyNTEsIDk2LCAyMTQsIDEyLCAxNywgMTUsIAorICAgIDEzMiwgNSwgMjQ0LCAxMSwgMjUxLCA5NSwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjUxLCA5NSwgMTUsIDEzMiwgNSwgMTM0LCAKKyAgICAyMTQsIDEyLCAyNDQsIDIwLCAyNDUsIDc0LCAxNSwgMTMyLCA1LCAxMzQsIDIxNCwgMTIsIDI0NCwgMjAsIDI0NSwgNzEsIAorICAgIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDIxNCwgMTIsIDI0NCwgMjAsIDIzMiwgMjE3LCAxNSwgMTMyLCA1LCAyNDQsIDExLCAKKyAgICAyMTQsIDEyLCAyNDQsIDIwLCAyMzIsIDIxNSwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjE0LCAxMiwgMjQ0LCAyMCwgMjMyLCAKKyAgICAyMTgsIDYxLCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzIsIDIxOCwgMjUzLCAxNTgsIDE1LCAKKyAgICAxMzIsIDUsIDIxOSwgMTI1LCAyMTQsIDEyLCAyNDQsIDIwLCAyNTMsIDIyOCwgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDIxNCwgCisgICAgMTIsIDI0NCwgMjAsIDIzNiwgOCwgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDIxNCwgMTIsIDI0NCwgMjAsIDIzNiwgMTAsIDYxLCAKKyAgICAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgMjE0LCAxMiwgMjQ0LCAyMCwgMjM2LCAxMCwgMjUzLCAxNTgsIDE1LCAxMzIsIDUsIAorICAgIDI0NSwgMTkzLCAyMTQsIDEyLCAyNDQsIDIwLCAyMTQsIDEyMSwgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIDIxNCwgMTIsIDI0NCwgCisgICAgMjAsIDIxNCwgMTIwLCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjE0LCAxMiwgMjQ0LCAyMCwgMjM2LCAyNCwgMTUsIDEzMiwgCisgICAgNSwgMjI4LCAyMDAsIDIxNCwgMTIsIDI0NCwgMjAsIDIzNiwgMjMsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyMTQsIDEyLCAKKyAgICAyNDQsIDIwLCAyMzYsIDIyLCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjE0LCAxMiwgMjQ0LCAyMCwgMjM2LCAyNSwgNjEsIAorICAgIDE1LCAxMzIsIDUsIDExMywgMjUzLCAyMzIsIDIxNiwgMjM5LCAxNSwgMTMyLCA1LCAxMzQsIDI1MywgMjMyLCAyMTYsIDIzOSwgCisgICAgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjUzLCAyMzIsIDIxNiwgMjM5LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyNTMsIDIzMiwgCisgICAgMjE2LCAyMzksIDE1LCAxMzIsIDUsIDIxOSwgMTI1LCAyNTMsIDIzMiwgMjE2LCAyMzksIDE1LCAxMzIsIDUsIDEyMywgMjUyLCAKKyAgICAxNTAsIDE1LCAxMzIsIDUsIDExMywgMjUyLCAxNTAsIDE1LCAxMzIsIDUsIDEzNCwgMjUyLCAxNTAsIDE1LCAxMzIsIDUsIAorICAgIDI0NCwgMTEsIDI1MiwgMTUwLCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyNTIsIDE1MSwgMjE0LCAxMiwgMTcsIDE1LCAxMzIsIAorICAgIDUsIDI0NCwgODEsIDI1MiwgMTUwLCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyNTIsIDE1MSwgMjE0LCAxMiwgMTcsIDE1LCAKKyAgICAxMzIsIDUsIDIyOCwgMjEwLCAxNSwgMTMyLCA1LCAyMjgsIDIxMSwgMTUsIDEzMiwgNSwgMTIzLCAyNDUsIDcwLCAxNSwgCisgICAgMTMyLCA1LCAxMTMsIDI0NSwgNzAsIDE1LCAxMzIsIDUsIDEyMywgMjE2LCAxNjksIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAKKyAgICAxMTMsIDIxNiwgMTY3LCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjE5LCAxMTQsIDI0NywgMTg3LCAxNSwgCisgICAgMTMyLCA1LCAxMjMsIDIxNiwgMTY5LCAyMTQsIDEyLCAyNDQsIDIwLCA2MSwgMTUsIDEzMiwgNSwgMTEzLCAyMTYsIDE2NywgCisgICAgMjE0LCAxMiwgMjQ0LCAyMCwgNjEsIDE1LCAxMzIsIDUsIDEyMywgMjQ1LCAxODksIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAKKyAgICAxMjMsIDIyNCwgMjIsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCA1NSwgMjUzLCAyMTksIDEyMywgMjE5LCAxMTUsIDE1LCAxMzIsIAorICAgIDUsIDU1LCAyNTMsIDIxOSwgMTIzLCAyMjQsIDIxLCAxNSwgMjI0LCAxNDEsIDUsIDU1LCAyNTMsIDIxOSwgMjExLCAyMDksIAorICAgIDI0NywgMTcyLCAxNSwgMjI0LCAxNDEsIDUsIDY3LCAyNDksIDIyNiwgMTUsIDIyNCwgMTQxLCA1LCAyNDcsIDI1NSwgMjQ5LCAKKyAgICAyMjYsIDE1LCAyMjQsIDE0MSwgNSwgMjQ3LCAyNTUsIDIxNSwgMjIxLCAxMiwgMTMsIDI1NSwgMTU1LCAxMiwgMTMsIDI1NSwgCisgICAgMTU0LCAxMiwgMTMsIDI1NSwgMTUzLCAxMiwgMTMsIDI1NSwgMTUyLCAxMiwgMTMsIDI1NSwgMTUxLCAxMiwgMTMsIDI1NSwgCisgICAgMTUwLCAxMiwgMTMsIDI1NSwgMTQ5LCAxMiwgMTMsIDI1NSwgMTQ4LCAxMiwgMTMsIDI1NSwgMTQ3LCAxMiwgMTMsIDI1NSwgCisgICAgMTQ2LCAxMiwgMTMsIDI1NSwgMTQ1LCAxMiwgMTMsIDI1NSwgMTQ0LCAxMiwgMTMsIDI1NSwgMTQzLCAxMiwgMTMsIDI1NSwgCisgICAgMTQyLCAxMiwgMTMsIDI1NSwgMTQxLCAxMiwgMTMsIDI1NSwgMTQwLCAxMiwgMTMsIDI1NSwgMTM5LCAxMiwgMTMsIDI1NSwgCisgICAgMTM4LCAxMiwgMTMsIDI1NSwgMTM3LCAxMiwgMTMsIDI1NSwgMTM2LCAxMiwgMTMsIDI1NSwgMTM1LCAxMiwgMTMsIDI1NSwgCisgICAgMTM0LCAxMiwgMTMsIDI1NSwgMTMzLCAxMiwgMTMsIDI1NSwgMTMyLCAxMiwgMTMsIDI1NSwgMTMxLCAxMiwgMTMsIDI1NSwgCisgICAgMTMwLCAxMiwgMTMsIDI1NSwgMTI5LCAxMiwgMTMsIDI1NSwgMTI4LCAxMiwgMTMsIDI1NSwgMTI3LCAxMiwgMTMsIDI1NSwgCisgICAgMTI2LCAxMiwgMTMsIDI1NSwgMTI1LCAxMiwgMTMsIDI1NSwgMTI0LCAxMiwgMTMsIDI1NSwgMTIzLCAxMiwgMTMsIDI1NSwgCisgICAgMTIyLCAxMiwgMTMsIDI1NSwgMTIxLCAxMiwgMTMsIDI1NSwgMTIwLCAxMiwgMTMsIDI1NSwgMTE5LCAxMiwgMTMsIDI1NSwgCisgICAgMTE4LCAxMiwgMTMsIDI1NSwgMTE3LCAxMiwgMTMsIDI1NSwgMTE2LCAxMiwgMTMsIDI1NSwgMTE1LCAxMiwgMTMsIDI1NSwgCisgICAgMTE0LCAxMiwgMTMsIDI1NSwgMTEzLCAxMiwgMTMsIDI1NSwgMTEyLCAxMiwgMTMsIDI1NSwgMTExLCAxMiwgMTMsIDI1NSwgCisgICAgMTEwLCAxMiwgMTMsIDI1NSwgMTA5LCAxMiwgMTMsIDI1NSwgMTA4LCAxMiwgMTMsIDI1NSwgMTA3LCAxMiwgMTMsIDI1NSwgCisgICAgMTA2LCAxMiwgMTMsIDI1NSwgMTA1LCAxMiwgMTMsIDI1NSwgMTA0LCAxMiwgMTMsIDI1NSwgMTAzLCAxMiwgMTMsIDI1NSwgCisgICAgMTAyLCAxMiwgMTMsIDI1NSwgMTAxLCAxMiwgMTMsIDI1NSwgMTAwLCAxMiwgMTMsIDI1NSwgOTksIDEyLCAxMywgMjU1LCAKKyAgICA5OCwgMTIsIDEzLCAyNTUsIDk3LCAxMiwgMTMsIDI1NSwgOTYsIDEyLCAxMywgMjU1LCA5NSwgMTIsIDEzLCAyNTUsIDk0LCAKKyAgICAxMiwgMTMsIDI1NSwgOTMsIDEyLCAxMywgMjU1LCA5MiwgMTIsIDEzLCAyNTUsIDkxLCAxMiwgMTMsIDI1NSwgOTAsIDEyLCAKKyAgICAxMywgMjU1LCA4OSwgMTIsIDEzLCAyNTUsIDg4LCAxMiwgMTMsIDI1NSwgODcsIDEyLCAxMywgMjU1LCA4NiwgMTIsIDEzLCAKKyAgICAyNTUsIDg1LCAxMiwgMTMsIDI1NSwgODQsIDEyLCAxMywgMjU1LCA4MywgMTIsIDEzLCAyNTUsIDgyLCAxMiwgMTMsIDI1NSwgCisgICAgODEsIDEyLCAxMywgMjU1LCA4MCwgMTIsIDEzLCAyNTUsIDc5LCAxMiwgMTMsIDI1NSwgNzgsIDEyLCAxMywgMjU1LCA3NywgCisgICAgMTIsIDEzLCAyNTUsIDc2LCAxMiwgMTMsIDI1MywgMTU2LCAxMiwgMTMsIDI1MywgMTU0LCAxMiwgMTMsIDI1MywgMTUyLCAKKyAgICAxMiwgMTMsIDI1MywgMTUwLCAxMiwgMTMsIDI1MywgMTQ4LCAxMiwgMTMsIDI1MywgMTQ3LCAxMiwgMTMsIDI1MywgMTQ1LCAKKyAgICAxMiwgMTMsIDI1MywgMTQzLCAxMiwgMTMsIDI1MywgMTQxLCAxMiwgMTMsIDI1MywgMTM5LCAxMiwgMTMsIDI1MSwgNjIsIAorICAgIDEyLCAxMywgMjUxLCA2MSwgMTIsIDEzLCAyNTEsIDYwLCAxMiwgMTMsIDI1MSwgNTksIDEyLCAxMywgMjUxLCA1OCwgMTIsIAorICAgIDEzLCAyNTEsIDU3LCAxMiwgMTMsIDI1MSwgNTYsIDEyLCAxMywgMjUxLCA1NSwgMTIsIDEzLCAyNTEsIDU0LCAxMiwgMTMsIAorICAgIDI1MSwgNTMsIDEyLCAxMywgMjUxLCA1MiwgMTIsIDEzLCAyNTEsIDUxLCAxMiwgMTMsIDI1MSwgNTAsIDEyLCAxMywgMjUxLCAKKyAgICA0OSwgMTIsIDEzLCAyNTEsIDQ4LCAxMiwgMTMsIDI1MSwgNDcsIDEyLCAxMywgMjUxLCA0NiwgMTIsIDEzLCAyNTEsIDQ1LCAKKyAgICAxMiwgMTMsIDI1MSwgNDQsIDEyLCAxMywgMjUxLCA0MywgMTIsIDEzLCAyNTEsIDQyLCAxMiwgMTMsIDI1MSwgNDEsIDEyLCAKKyAgICAxMywgMjUxLCA0MCwgMTIsIDEzLCAyNTEsIDM5LCAxMiwgMTMsIDI1MSwgMzgsIDEyLCAxMywgMjUxLCAzNywgMTIsIDEzLCAKKyAgICAyNTEsIDM2LCAxMiwgMTMsIDI1MSwgMzUsIDEyLCAxMywgMjQ5LCA1OSwgMTIsIDEzLCAyNDksIDU4LCAxMiwgMTMsIDI0OSwgCisgICAgNTcsIDEyLCAxMywgMjQ5LCA1NiwgMTIsIDEzLCAyNDksIDU1LCAxMiwgMTMsIDI0OSwgNTQsIDEyLCAxMywgMjQ5LCA1MywgCisgICAgMTIsIDEzLCAyNDksIDUyLCAxMiwgMTMsIDI0OSwgNTEsIDEyLCAxMywgMjQ5LCA1MCwgMTIsIDEzLCAyNDksIDQ5LCAxMiwgCisgICAgMTMsIDI0OSwgNDgsIDEyLCAxMywgMjQ5LCA0NywgMTIsIDEzLCAyNDksIDQ2LCAxMiwgMTMsIDI0OSwgNDUsIDEyLCAxMywgCisgICAgMjQ5LCA0NCwgMTIsIDEzLCAyNDksIDQzLCAxMiwgMTMsIDI0OSwgNDIsIDEyLCAxMywgMjQ5LCA0MSwgMTIsIDEzLCAyNDksIAorICAgIDQwLCAxMiwgMTMsIDI0OSwgMzksIDEyLCAxMywgMjQ5LCAzOCwgMTIsIDEzLCAyNDksIDM3LCAxMiwgMTMsIDI0OSwgMzYsIAorICAgIDEyLCAxMywgMjQ5LCAzNSwgMTIsIDEzLCAyNDksIDM0LCAxMiwgMTMsIDI0OSwgMzMsIDEyLCAxMywgMjQ5LCAzMiwgMTIsIAorICAgIDEzLCAyNDksIDMxLCAxMiwgMTMsIDI0OSwgMzAsIDEyLCAxMywgMjQ5LCAyOSwgMTIsIDEzLCAyNDksIDI4LCAxMiwgMTMsIAorICAgIDI0OSwgMjcsIDEyLCAxMywgMjQ5LCAyNiwgMTIsIDEzLCAyNDksIDI1LCAxMiwgMTMsIDI0OSwgMjQsIDEyLCAxMywgMjQ5LCAKKyAgICAyMywgMTIsIDEzLCAyNDksIDIyLCAxMiwgMTMsIDI0OSwgMjEsIDEyLCAxMywgMjQ5LCAyMCwgMTIsIDEzLCAyNDksIDE5LCAKKyAgICAxMiwgMTMsIDI0OSwgMTgsIDEyLCAxMywgMjQ5LCAxNywgMTIsIDEzLCAyNDksIDE2LCAxMiwgMTMsIDI0OSwgMTUsIDEyLCAKKyAgICAxMywgMjQ5LCAxNCwgMTIsIDEzLCAyNDksIDEzLCAxMiwgMTMsIDI0OSwgMTIsIDEyLCAxMywgMjQ5LCAxMSwgMTIsIDEzLCAKKyAgICAyNDksIDEwLCAxMiwgMTMsIDI0OSwgOSwgMTIsIDEzLCAyNDksIDgsIDEyLCAxMywgMjQ5LCA3LCAxMiwgMTMsIDI0OSwgNiwgCisgICAgMTIsIDEzLCAyNDksIDUsIDEyLCAxMywgMjQ5LCA0LCAxMiwgMTMsIDI0OSwgMywgMTIsIDEzLCAyNDksIDIsIDEyLCAxMywgCisgICAgMjQ5LCAxLCAxMiwgMTMsIDI0OSwgMCwgMTIsIDEzLCAyNDgsIDI1NSwgMTIsIDEzLCAyNDgsIDI1NCwgMTIsIDEzLCAyNDgsIAorICAgIDI1MywgMTIsIDEzLCAyNDgsIDI1MiwgMTIsIDEzLCAyNDgsIDI1MSwgMTIsIDEzLCAyNDgsIDI1MCwgMTIsIDEzLCAyNDgsIAorICAgIDI0OSwgMTIsIDEzLCAyNDgsIDI0OCwgMTIsIDEzLCAyNDgsIDI0NywgMTIsIDEzLCAyNDgsIDI0NiwgMTIsIDEzLCAyNDgsIAorICAgIDI0NSwgMTIsIDEzLCAyNDgsIDI0NCwgMTIsIDEzLCAyNDgsIDI0MywgMTIsIDEzLCAyNDgsIDI0MiwgMTIsIDEzLCAyNDgsIAorICAgIDI0MSwgMTIsIDEzLCAyNDgsIDI0MCwgMTIsIDEzLCAyNDgsIDIzOSwgMTIsIDEzLCAyNDgsIDIzOCwgMTIsIDEzLCAyNDgsIAorICAgIDIzNywgMTIsIDEzLCAyNDgsIDIzNiwgMTIsIDEzLCAyNDgsIDIzNSwgMTIsIDEzLCAyNDgsIDIzNCwgMTIsIDEzLCAyNDgsIAorICAgIDIzMywgMTIsIDEzLCAyNDgsIDIzMiwgMTIsIDEzLCAyNDgsIDIzMSwgMTIsIDEzLCAyNDgsIDIzMCwgMTIsIDEzLCAyNDgsIAorICAgIDIyOSwgMTIsIDEzLCAyNDgsIDIyOCwgMTIsIDEzLCAyNDgsIDIyNywgMTIsIDEzLCAyNDgsIDIyNiwgMTIsIDEzLCAyNDgsIAorICAgIDIyNSwgMTIsIDEzLCAyNDgsIDIyNCwgMTIsIDEzLCAyNDYsIDIzLCAxMiwgMTMsIDI0NiwgMjIsIDEyLCAxMywgMjQ2LCAyMSwgCisgICAgMTIsIDEzLCAyNDYsIDIwLCAxMiwgMTMsIDI0NiwgMTksIDEyLCAxMywgMjQ2LCAxOCwgMTIsIDEzLCAyNDYsIDE3LCAxMiwgCisgICAgMTMsIDI0NiwgMTYsIDEyLCAxMywgMjQ2LCAxNSwgMTIsIDEzLCAyNDYsIDE0LCAxMiwgMTMsIDI0NiwgMTMsIDEyLCAxMywgCisgICAgMjQ2LCAxMiwgMTIsIDEzLCAyNDYsIDExLCAxMiwgMTMsIDI0NiwgMTAsIDEyLCAxMywgMjQ2LCA5LCAxMiwgMTMsIDI0NiwgCisgICAgOCwgMTIsIDEzLCAyNDYsIDcsIDEyLCAxMywgMjQ2LCA2LCAxMiwgMTMsIDI0NiwgNSwgMTIsIDEzLCAyNDYsIDQsIDEyLCAKKyAgICAxMywgMjQ2LCAzLCAxMiwgMTMsIDI0NiwgMiwgMTIsIDEzLCAyNDYsIDEsIDEyLCAxMywgMjQ2LCAwLCAxMiwgMTMsIDI0NSwgCisgICAgMjU1LCAxMiwgMTMsIDI0NSwgMjU0LCAxMiwgMTMsIDI0NSwgMjUzLCAxMiwgMTMsIDI0NSwgMjUyLCAxMiwgMTMsIDI0NSwgCisgICAgMjUxLCAxMiwgMTMsIDI0NSwgMjUwLCAxMiwgMTMsIDI0NSwgMjQ5LCAxMiwgMTMsIDI0NSwgMjQ4LCAxMiwgMTMsIDI0NSwgCisgICAgMjQ3LCAxMiwgMTMsIDI0NSwgMjQ2LCAxMiwgMTMsIDI0NSwgMjQ1LCAxMiwgMTMsIDI0NSwgMjQ0LCAxMiwgMTMsIDI0NSwgCisgICAgMjQzLCAxMiwgMTMsIDI0NSwgMjQyLCAxMiwgMTMsIDI0NSwgMjQxLCAxMiwgMTMsIDI0NSwgMjQwLCAxMiwgMTMsIDI0NSwgCisgICAgMjM5LCAxMiwgMTMsIDI0NSwgMjM4LCAxMiwgMTMsIDI0NSwgMjM3LCAxMiwgMTMsIDI0NSwgMjM2LCAxMiwgMTMsIDI0NSwgCisgICAgNSwgMTIsIDEzLCAyNDUsIDQsIDEyLCAxMywgMjQ1LCAzLCAxMiwgMTMsIDI0NSwgMiwgMTIsIDEzLCAyNDUsIDEsIDEyLCAKKyAgICAxMywgMjQ1LCAwLCAxMiwgMTMsIDI0NCwgMjU1LCAxMiwgMTMsIDI0NCwgMjU0LCAxMiwgMTMsIDI0NCwgMjUzLCAxMiwgMTMsIAorICAgIDI0NCwgMjUyLCAxMiwgMTMsIDI0NCwgMjUxLCAxMiwgMTMsIDI0NCwgMjUwLCAxMiwgMTMsIDI0NCwgMjQ5LCAxMiwgMTMsIAorICAgIDI0NCwgMjQ4LCAxMiwgMTMsIDI0NCwgMjQ3LCAxMiwgMTMsIDI0NCwgMjQ2LCAxMiwgMTMsIDI0NCwgMjQ1LCAxMiwgMTMsIAorICAgIDI0NCwgMjQ0LCAxMiwgMTMsIDI0NCwgMjQzLCAxMiwgMTMsIDI0NCwgMjQyLCAxMiwgMTMsIDI0NCwgMjQxLCAxMiwgMTMsIAorICAgIDI0NCwgMjQwLCAxMiwgMTMsIDI0NCwgMjM5LCAxMiwgMTMsIDI0NCwgMjM4LCAxMiwgMTMsIDI0NCwgMjM3LCAxMiwgMTMsIAorICAgIDI0NCwgMjM2LCAxMiwgMTMsIDI0NCwgMjM1LCAxMiwgMTMsIDI0NCwgMjM0LCAxMiwgMTMsIDI0NCwgMjMzLCAxMiwgMTMsIAorICAgIDI0NCwgMjMyLCAxMiwgMTMsIDI0NCwgMjMxLCAxMiwgMTMsIDI0NCwgMjMwLCAxMiwgMTMsIDI0NCwgMjI5LCAxMiwgMTMsIAorICAgIDI0NCwgMjI4LCAxMiwgMTMsIDI0NCwgMjI3LCAxMiwgMTMsIDI0NCwgMjI2LCAxMiwgMTMsIDI0NCwgMjI1LCAxMiwgMTMsIAorICAgIDI0NCwgMjI0LCAxMiwgMTMsIDI0NCwgMjIzLCAxMiwgMTMsIDI0NCwgMjIyLCAxMiwgMTMsIDI0NCwgMjIxLCAxMiwgMTMsIAorICAgIDI0NCwgMjIwLCAxMiwgMTMsIDI0NCwgMjE5LCAxMiwgMTMsIDI0NCwgMjE4LCAxMiwgMTMsIDI0NCwgMjE3LCAxMiwgMTMsIAorICAgIDI0NCwgMjE2LCAxMiwgMTMsIDI0NCwgMjE1LCAxMiwgMTMsIDI0NCwgMjE0LCAxMiwgMTMsIDI0NCwgMjEzLCAxMiwgMTMsIAorICAgIDI0NCwgMjEyLCAxMiwgMTMsIDI0NCwgMjExLCAxMiwgMTMsIDI0NCwgMjEwLCAxMiwgMTMsIDI0NCwgMjA5LCAxMiwgMTMsIAorICAgIDI0NCwgMjA4LCAxMiwgMTMsIDI0NCwgMjA3LCAxMiwgMTMsIDI0NCwgMjA2LCAxMiwgMTMsIDI0NCwgMjA1LCAxMiwgMTMsIAorICAgIDI0NCwgMjA0LCAxMiwgMTMsIDI0NCwgMjAzLCAxMiwgMTMsIDI0NCwgMjAyLCAxMiwgMTMsIDI0NCwgMjAxLCAxMiwgMTMsIAorICAgIDI0NCwgMjAwLCAxMiwgMTMsIDI0NCwgMTk5LCAxMiwgMTMsIDI0NCwgMTk4LCAxMiwgMTMsIDI0NCwgMTk3LCAxMiwgMTMsIAorICAgIDI0MywgMjAxLCAxMiwgMTMsIDI0MywgMjAwLCAxMiwgMTMsIDI0MywgMTk5LCAxMiwgMTMsIDI0MywgMTk4LCAxMiwgMTMsIAorICAgIDI0MywgMTk3LCAxMiwgMTMsIDI0MywgMTk2LCAxMiwgMTMsIDI0MywgMTk1LCAxMiwgMTMsIDI0MywgMTk0LCAxMiwgMTMsIAorICAgIDI0MywgMTkzLCAxMiwgMTMsIDI0MywgMTkyLCAxMiwgMTMsIDI0MywgMTkxLCAxMiwgMTMsIDI0MywgMTkwLCAxMiwgMTMsIAorICAgIDI0MywgMTg5LCAxMiwgMTMsIDI0MywgMTg4LCAxMiwgMTMsIDI0MywgMTg3LCAxMiwgMTMsIDI0MywgMTg2LCAxMiwgMTMsIAorICAgIDI0MywgMTg1LCAxMiwgMTMsIDI0MywgMTg0LCAxMiwgMTMsIDI0MywgMTgzLCAxMiwgMTMsIDI0MywgMTgyLCAxMiwgMTMsIAorICAgIDI0MywgMTgxLCAxMiwgMTMsIDI0MywgMTgwLCAxMiwgMTMsIDI0MywgMTc5LCAxMiwgMTMsIDI0MywgMTc4LCAxMiwgMTMsIAorICAgIDI0MywgMTc3LCAxMiwgMTMsIDI0MywgMTc2LCAxMiwgMTMsIDI0MywgMTc1LCAxMiwgMTMsIDI0MywgMTc0LCAxMiwgMTMsIAorICAgIDI0MywgMTczLCAxMiwgMTMsIDI0MywgMTcyLCAxMiwgMTMsIDI0MywgMTcxLCAxMiwgMTMsIDI0MywgMTcwLCAxMiwgMTMsIAorICAgIDI0MywgMTY5LCAxMiwgMTMsIDI0MywgMTY4LCAxMiwgMTMsIDI0MywgMTY3LCAxMiwgMTMsIDI0MywgMTY2LCAxMiwgMTMsIAorICAgIDI0MywgMTY1LCAxMiwgMTMsIDI0MywgMTY0LCAxMiwgMTMsIDI0MywgMTYzLCAxMiwgMTMsIDI0MywgMTYyLCAxMiwgMTMsIAorICAgIDI0MywgMTYxLCAxMiwgMTMsIDI0MywgMTYwLCAxMiwgMTMsIDI0MywgMTU5LCAxMiwgMTMsIDI0MywgMTU4LCAxMiwgMTMsIAorICAgIDI0MywgMTU3LCAxMiwgMTMsIDI0MywgMTU2LCAxMiwgMTMsIDI0MywgMTU1LCAxMiwgMTMsIDI0MywgMTU0LCAxMiwgMTMsIAorICAgIDI0MywgMTUzLCAxMiwgMTMsIDI0MywgMTUyLCAxMiwgMTMsIDI0MywgMTUxLCAxMiwgMTMsIDI0MywgMTUwLCAxMiwgMTMsIAorICAgIDI0MywgMTQ5LCAxMiwgMTMsIDI0MywgMTQ4LCAxMiwgMTMsIDI0MywgMTQ3LCAxMiwgMTMsIDI0MywgMTQ2LCAxMiwgMTMsIAorICAgIDI0MywgMTQ1LCAxMiwgMTMsIDI0MywgMTQ0LCAxMiwgMTMsIDI0MywgMTQzLCAxMiwgMTMsIDI0MywgMTQyLCAxMiwgMTMsIAorICAgIDI0MywgMTQxLCAxMiwgMTMsIDI0MywgMTQwLCAxMiwgMTMsIDI0MywgMTM5LCAxMiwgMTMsIDI0MywgMTM4LCAxMiwgMTMsIAorICAgIDI0MiwgNTgsIDEyLCAxMywgMjQyLCA1NywgMTIsIDEzLCAyNDIsIDU2LCAxMiwgMTMsIDI0MiwgNTUsIDEyLCAxMywgMjQyLCAKKyAgICA1NCwgMTIsIDEzLCAyNDIsIDUzLCAxMiwgMTMsIDI0MiwgNTIsIDEyLCAxMywgMjQyLCA1MSwgMTIsIDEzLCAyNDIsIDUwLCAKKyAgICAxMiwgMTMsIDI0MCwgMTM4LCAxMiwgMTMsIDI0MCwgMTM3LCAxMiwgMTMsIDI0MCwgMTM2LCAxMiwgMTMsIDI0MCwgMTM1LCAKKyAgICAxMiwgMTMsIDI0MCwgMTM0LCAxMiwgMTMsIDI0MCwgMTMzLCAxMiwgMTMsIDI0MCwgMTMyLCAxMiwgMTMsIDI0MCwgMTMxLCAKKyAgICAxMiwgMTMsIDI0MCwgMTMwLCAxMiwgMTMsIDI0MCwgMTI5LCAxMiwgMTMsIDI0MCwgMTI4LCAxMiwgMTMsIDI0MCwgMTI3LCAKKyAgICAxMiwgMTMsIDI0MCwgMTI2LCAxMiwgMTMsIDI0MCwgMTI1LCAxMiwgMTMsIDI0MCwgMTI0LCAxMiwgMTMsIDI0MCwgMTIzLCAKKyAgICAxMiwgMTMsIDI0MCwgMTIyLCAxMiwgMTMsIDI0MCwgMTIxLCAxMiwgMTMsIDI0MCwgMTIwLCAxMiwgMTMsIDIzNSwgMjIsIAorICAgIDEyLCAxMywgMjM1LCAyMSwgMTIsIDEzLCAyMzUsIDIwLCAxMiwgMTMsIDIzNSwgMTksIDEyLCAxMywgMjM1LCAxOCwgMTIsIAorICAgIDEzLCAyMzUsIDE3LCAxMiwgMTMsIDIzNSwgMTYsIDEyLCAxMywgMjM1LCAxNSwgMTIsIDEzLCAyMzMsIDE0NiwgMTIsIDEzLCAKKyAgICAyMzMsIDE0NSwgMTIsIDEzLCAyMzMsIDE0NCwgMTIsIDEzLCAyMzMsIDE0MywgMTIsIDEzLCAyMzMsIDE0MiwgMTIsIDEzLCAKKyAgICAyMzMsIDE0MSwgMTIsIDEzLCAyMzMsIDE0MCwgMTIsIDEzLCAyMzMsIDEzOSwgMTIsIDEzLCAyMzMsIDEzOCwgMTIsIDEzLCAKKyAgICAyMzMsIDEzNywgMTIsIDEzLCAyMzIsIDQ5LCAxMiwgMTMsIDIzMiwgNDgsIDEyLCAxMywgMjMyLCA0NywgMTIsIDEzLCAyMzIsIAorICAgIDQ2LCAxMiwgMTMsIDIzMiwgNDUsIDEyLCAxMywgMjMyLCA0NCwgMTIsIDEzLCAyMzIsIDQzLCAxMiwgMTMsIDIzMiwgNDIsIAorICAgIDEyLCAxMywgMjMyLCA0MSwgMTIsIDEzLCAyMzIsIDQwLCAxMiwgMTMsIDIzMiwgMzksIDEyLCAxMywgMjMyLCAzOCwgMTIsIAorICAgIDEzLCAyMzIsIDM3LCAxMiwgMTMsIDIzMiwgMzYsIDEyLCAxMywgMjMyLCAzNSwgMTIsIDEzLCAyMzIsIDM0LCAxMiwgMTMsIAorICAgIDIzMiwgMzMsIDEyLCAxMywgMjMyLCAzMiwgMTIsIDEzLCAyMzIsIDMxLCAxMiwgMTMsIDIzMiwgMzAsIDEyLCAxMywgMjMyLCAKKyAgICAyOSwgMTIsIDEzLCAyMzIsIDI4LCAxMiwgMTMsIDIzMiwgMjcsIDEyLCAxMywgMjMyLCAyNiwgMTIsIDEzLCAyMzIsIDI1LCAKKyAgICAxMiwgMTMsIDIzMiwgMjQsIDEyLCAxMywgMjMyLCAyMywgMTIsIDEzLCAyMzIsIDIyLCAxMiwgMTMsIDIzMiwgMjEsIDEyLCAKKyAgICAxMywgMjMyLCAyMCwgMTIsIDEzLCAyMzIsIDE5LCAxMiwgMTMsIDIzMiwgMTgsIDEyLCAxMywgMjMyLCAxNywgMTIsIDEzLCAKKyAgICAyMzIsIDE2LCAxMiwgMTMsIDIzMiwgMTUsIDEyLCAxMywgMjMyLCAxNCwgMTIsIDEzLCAyMzIsIDEzLCAxMiwgMTMsIDIzMiwgCisgICAgMTIsIDEyLCAxMywgMjMyLCAxMSwgMTIsIDEzLCAyMzIsIDEwLCAxMiwgMTMsIDIzMiwgOSwgMTIsIDEzLCAyMzIsIDgsIDEyLCAKKyAgICAxMywgMjMyLCA3LCAxMiwgMTMsIDIzMiwgNiwgMTIsIDEzLCAyMzIsIDUsIDEyLCAxMywgMjMyLCA0LCAxMiwgMTMsIDIzMiwgCisgICAgMywgMTIsIDEzLCAyMzIsIDIsIDEyLCAxMywgMjMyLCAxLCAxMiwgMTMsIDIzMiwgMCwgMTIsIDEzLCAyMzEsIDI1NSwgMTIsIAorICAgIDEzLCAyMzEsIDI1NCwgMTIsIDEzLCAyMzEsIDI1MywgMTIsIDEzLCAyMzEsIDI1MiwgMTIsIDEzLCAyMzEsIDI1MSwgMTIsIAorICAgIDEzLCAyMzEsIDI1MCwgMTIsIDEzLCAyMzEsIDI0OSwgMTIsIDEzLCAyMzEsIDI0OCwgMTIsIDEzLCAyMzEsIDI0NywgMTIsIAorICAgIDEzLCAyMzEsIDI0NiwgMTIsIDEzLCAyMzEsIDI0NSwgMTIsIDEzLCAyMzEsIDI0NCwgMTIsIDEzLCAyMzEsIDI0MywgMTIsIAorICAgIDEzLCAyMzEsIDI0MiwgMTIsIDEzLCAyMzEsIDI0MSwgMTIsIDEzLCAyMzEsIDI0MCwgMTIsIDEzLCAyMzAsIDIyLCAxMiwgCisgICAgMTMsIDIzMCwgMjEsIDEyLCAxMywgMjMwLCAyMCwgMTIsIDEzLCAyMzAsIDE5LCAxMiwgMTMsIDIzMCwgMTgsIDEyLCAxMywgCisgICAgMjMwLCAxNywgMTIsIDEzLCAyMzAsIDE2LCAxMiwgMTMsIDIzMCwgMTUsIDEyLCAxMywgMjMwLCAxNCwgMTIsIDEzLCAyMzAsIAorICAgIDEzLCAxMiwgMTMsIDIzMCwgMTIsIDEyLCAxMywgMjMwLCAxMSwgMTIsIDEzLCAyMzAsIDEwLCAxMiwgMTMsIDIzMCwgOSwgCisgICAgMTIsIDEzLCAyMzAsIDgsIDEyLCAxMywgMjMwLCA3LCAxMiwgMTMsIDIzMCwgNiwgMTIsIDEzLCAyMzAsIDUsIDEyLCAxMywgCisgICAgMjMwLCA0LCAxMiwgMTMsIDIzMCwgMywgMTIsIDEzLCAyMzAsIDIsIDEyLCAxMywgMjMwLCAxLCAxMiwgMTMsIDIzMCwgMCwgCisgICAgMTIsIDEzLCAyMjksIDI1NSwgMTIsIDEzLCAyMjksIDI1NCwgMTIsIDEzLCAyMjksIDI1MywgMTIsIDEzLCAyMjksIDI1MiwgCisgICAgMTIsIDEzLCAyMjksIDI1MSwgMTIsIDEzLCAyMjksIDI1MCwgMTIsIDEzLCAyMjksIDI0OSwgMTIsIDEzLCAyMjksIDI0OCwgCisgICAgMTIsIDEzLCAyMjksIDI0NywgMTIsIDEzLCAyMjksIDI0NiwgMTIsIDEzLCAyMjksIDI0NSwgMTIsIDEzLCAyMjksIDI0NCwgCisgICAgMTIsIDEzLCAyMjksIDI0MywgMTIsIDEzLCAyMjksIDI0MiwgMTIsIDEzLCAyMjksIDI0MSwgMTIsIDEzLCAyMjksIDI0MCwgCisgICAgMTIsIDEzLCAyMjksIDIzOSwgMTIsIDEzLCAyMjksIDIzOCwgMTIsIDEzLCAyMjksIDIzNywgMTIsIDEzLCAyMjksIDIzNiwgCisgICAgMTIsIDEzLCAyMjksIDIzNSwgMTIsIDEzLCAyMjksIDIzNCwgMTIsIDEzLCAyMjksIDIzMywgMTIsIDEzLCAyMjksIDIzMiwgCisgICAgMTIsIDEzLCAyMjksIDIzMSwgMTIsIDEzLCAyMjksIDIzMCwgMTIsIDEzLCAyMjgsIDEzNCwgMTIsIDEzLCAyMjgsIDEzMywgCisgICAgMTIsIDEzLCAyMjgsIDEzMiwgMTIsIDEzLCAyMjgsIDEzMSwgMTIsIDEzLCAyMjgsIDEzMCwgMTIsIDEzLCAyMjgsIDEyOSwgCisgICAgMTIsIDEzLCAyMjgsIDEyOCwgMTIsIDEzLCAyMjgsIDEyNywgMTIsIDEzLCAyMjgsIDEyNiwgMTIsIDEzLCAyMjgsIDEyNSwgCisgICAgMTIsIDEzLCAyMjgsIDEyNCwgMTIsIDEzLCAyMjgsIDEyMywgMTIsIDEzLCAyMjgsIDEyMiwgMTIsIDEzLCAyMjgsIDEyMSwgCisgICAgMTIsIDEzLCAyMjgsIDEyMCwgMTIsIDEzLCAyMjgsIDExOSwgMTIsIDEzLCAyMjgsIDExOCwgMTIsIDEzLCAyMjgsIDExNywgCisgICAgMTIsIDEzLCAyMjgsIDExNiwgMTIsIDEzLCAyMjgsIDExNSwgMTIsIDEzLCAyMjgsIDExNCwgMTIsIDEzLCAyMjgsIDExMywgCisgICAgMTIsIDEzLCAyMjcsIDIzNiwgMTIsIDEzLCAyMjcsIDIzNSwgMTIsIDEzLCAyMjcsIDIzNCwgMTIsIDEzLCAyMjcsIDIzMywgCisgICAgMTIsIDEzLCAyMjcsIDIzMiwgMTIsIDEzLCAyMjcsIDIzMSwgMTIsIDEzLCAyMjcsIDIzMCwgMTIsIDEzLCAyMjcsIDIyOSwgCisgICAgMTIsIDEzLCAyMjcsIDIyOCwgMTIsIDEzLCAyMjcsIDIyNywgMTIsIDEzLCAyMjcsIDIyNiwgMTIsIDEzLCAyMjcsIDIyNSwgCisgICAgMTIsIDEzLCAyMjcsIDIyNCwgMTIsIDEzLCAyMjcsIDIyMywgMTIsIDEzLCAyMjcsIDIyMiwgMTIsIDEzLCAyMjcsIDIyMSwgCisgICAgMTIsIDEzLCAyMjcsIDIyMCwgMTIsIDEzLCAyMjcsIDIxOSwgMTIsIDEzLCAyMjcsIDIxOCwgMTIsIDEzLCAyMjcsIDIxNywgCisgICAgMTIsIDEzLCAyMjcsIDIxNiwgMTIsIDEzLCAyMjcsIDIxNSwgMTIsIDEzLCAyMjcsIDIxNCwgMTIsIDEzLCAyMjcsIDIxMywgCisgICAgMTIsIDEzLCAyMjcsIDIxMiwgMTIsIDEzLCAyMjcsIDIxMSwgMTIsIDEzLCAyMjcsIDc2LCAxMiwgMTMsIDIyNywgNzUsIDEyLCAKKyAgICAxMywgMjI3LCA3NCwgMTIsIDEzLCAyMjcsIDczLCAxMiwgMTMsIDIyNywgNzIsIDEyLCAxMywgMjI3LCA3MSwgMTIsIDEzLCAKKyAgICAyMjcsIDcwLCAxMiwgMTMsIDIyNywgNjksIDEyLCAxMywgMjI3LCA2OCwgMTIsIDEzLCAyMjcsIDY3LCAxMiwgMTMsIDIyNywgCisgICAgNjYsIDEyLCAxMywgMjI3LCA2NSwgMTIsIDEzLCAyMjcsIDY0LCAxMiwgMTMsIDIyNywgNjMsIDEyLCAxMywgMjI3LCA2MiwgCisgICAgMTIsIDEzLCAyMjcsIDYxLCAxMiwgMTMsIDIyNywgNjAsIDEyLCAxMywgMjI3LCA1OSwgMTIsIDEzLCAyMjcsIDU4LCAxMiwgCisgICAgMTMsIDIyNywgNTcsIDEyLCAxMywgMjI3LCA1NiwgMTIsIDEzLCAyMjcsIDU1LCAxMiwgMTMsIDIyNywgNTQsIDEyLCAxMywgCisgICAgMjI3LCA1MywgMTIsIDEzLCAyMjcsIDUyLCAxMiwgMTMsIDIyNywgNTEsIDEyLCAxMywgMjI3LCA1MCwgMTIsIDEzLCAyMjcsIAorICAgIDQ5LCAxMiwgMTMsIDIyNywgNDgsIDEyLCAxMywgMjI3LCA0NywgMTIsIDEzLCAyMjcsIDQ2LCAxMiwgMTMsIDIyNywgNDUsIAorICAgIDEyLCAxMywgMjI3LCA0NCwgMTIsIDEzLCAyMjcsIDQzLCAxMiwgMTMsIDIyNywgNDIsIDEyLCAxMywgMjI3LCA0MSwgMTIsIAorICAgIDEzLCAyMjcsIDQwLCAxMiwgMTMsIDIyNywgMzksIDEyLCAxMywgMjI3LCAzOCwgMTIsIDEzLCAyMjcsIDM3LCAxMiwgMTMsIAorICAgIDIyNywgMzYsIDEyLCAxMywgMjI3LCAzNSwgMTIsIDEzLCAyMjcsIDM0LCAxMiwgMTMsIDIyNywgMzMsIDEyLCAxMywgMjI3LCAKKyAgICAzMiwgMTIsIDEzLCAyMjcsIDMxLCAxMiwgMTMsIDIyNywgMzAsIDEyLCAxMywgMjI3LCAyOSwgMTIsIDEzLCAyMjcsIDI4LCAKKyAgICAxMiwgMTMsIDIyNywgMjcsIDEyLCAxMywgMjI3LCAyNiwgMTIsIDEzLCAyMjcsIDI1LCAxMiwgMTMsIDIyNywgMjQsIDEyLCAKKyAgICAxMywgMjI3LCAyMywgMTIsIDEzLCAyMjcsIDIyLCAxMiwgMTMsIDIyNywgMjEsIDEyLCAxMywgMjI3LCAyMCwgMTIsIDEzLCAKKyAgICAyMjcsIDE5LCAxMiwgMTMsIDIyNywgMTgsIDEyLCAxMywgMjI3LCAxNywgMTIsIDEzLCAyMjcsIDE2LCAxMiwgMTMsIDIyNywgCisgICAgMTUsIDEyLCAxMywgMjI3LCAxNCwgMTIsIDEzLCAyMjcsIDEzLCAxMiwgMTMsIDIyNywgMTIsIDEyLCAxMywgMjI3LCAxMSwgCisgICAgMTIsIDEzLCAyMjcsIDEwLCAxMiwgMTMsIDIyNywgOSwgMTIsIDEzLCAyMjcsIDgsIDEyLCAxMywgMjI3LCA3LCAxMiwgMTMsIAorICAgIDIyNywgNiwgMTIsIDEzLCAyMjcsIDUsIDEyLCAxMywgMjI3LCA0LCAxMiwgMTMsIDIyNywgMywgMTIsIDEzLCAyMjcsIDIsIAorICAgIDEyLCAxMywgMjI2LCAxMDQsIDEyLCAxMywgMjI2LCAxMDMsIDEyLCAxMywgMjI2LCAxMDIsIDEyLCAxMywgMjI2LCAxMDEsIAorICAgIDEyLCAxMywgMjI2LCAxMDAsIDEyLCAxMywgMjI2LCA5OSwgMTIsIDEzLCAyMjYsIDk4LCAxMiwgMTMsIDIyNiwgOTcsIDEyLCAKKyAgICAxMywgMjI2LCA5NiwgMTIsIDEzLCAyMjYsIDk1LCAxMiwgMTMsIDIyNiwgOTQsIDEyLCAxMywgMjI2LCA5MywgMTIsIDEzLCAKKyAgICAyMjYsIDkyLCAxMiwgMTMsIDIyNCwgOTUsIDEyLCAxMywgMjI0LCA5NCwgMTIsIDEzLCAyMjQsIDkzLCAxMiwgMTMsIDIyNCwgCisgICAgOTIsIDEyLCAxMywgMjI0LCA5MSwgMTIsIDEzLCAyMjQsIDkwLCAxMiwgMTMsIDIyNCwgODksIDEyLCAxMywgMjIzLCAyMjIsIAorICAgIDEyLCAxMywgMjIzLCAyMjEsIDEyLCAxMywgMjIzLCAyMjAsIDEyLCAxMywgMjIzLCAyMTksIDEyLCAxMywgMjIzLCAyMTgsIAorICAgIDEyLCAxMywgMjIzLCAyMTcsIDEyLCAxMywgMjIzLCAyMTYsIDEyLCAxMywgMjIzLCAyMTUsIDEyLCAxMywgMjIzLCAyMTQsIAorICAgIDEyLCAxMywgMjIzLCAyMTMsIDEyLCAxMywgMjIzLCAyMTIsIDEyLCAxMywgMjIzLCAyMTEsIDEyLCAxMywgMjIzLCAyMTAsIAorICAgIDEyLCAxMywgMjIzLCAyMDksIDEyLCAxMywgMjIzLCAyMDgsIDEyLCAxMywgMjIzLCAyMDcsIDEyLCAxMywgMjIzLCAyMDYsIAorICAgIDEyLCAxMywgMjIzLCAyMDUsIDEyLCAxMywgMjIzLCAyMDQsIDEyLCAxMywgMjIzLCAyMDMsIDEyLCAxMywgMjIzLCAyMDIsIAorICAgIDEyLCAxMywgMjIzLCAyMDEsIDEyLCAxMywgMjIzLCAyMDAsIDEyLCAxMywgMjIzLCAxOTksIDEyLCAxMywgMjIzLCAxOTgsIAorICAgIDEyLCAxMywgMjIzLCAxOTcsIDEyLCAxMywgMjIzLCAxOTYsIDEyLCAxMywgMjIzLCAxOTUsIDEyLCAxMywgMjIzLCAxOTQsIAorICAgIDEyLCAxMywgMjIzLCAxOTMsIDEyLCAxMywgMjIzLCAxOTIsIDEyLCAxMywgMjIzLCAxOTEsIDEyLCAxMywgMjIzLCAxOTAsIAorICAgIDEyLCAxMywgMjIzLCAxODksIDEyLCAxMywgMjIyLCA4OCwgMTIsIDEzLCAyMjIsIDg3LCAxMiwgMTMsIDIyMiwgODYsIDEyLCAKKyAgICAxMywgMjIyLCA4NSwgMTIsIDEzLCAyMjIsIDg0LCAxMiwgMTMsIDIyMiwgODMsIDEyLCAxMywgMjIyLCA4MiwgMTIsIDEzLCAKKyAgICAyMjIsIDgxLCAxMiwgMTMsIDIyMiwgODAsIDEyLCAxMywgMjIyLCA3OSwgMTIsIDEzLCAyMjIsIDc4LCAxMiwgMTMsIDIyMiwgCisgICAgNzcsIDEyLCAxMywgMjIyLCA3NiwgMTIsIDEzLCAyMjIsIDc1LCAxMiwgMTMsIDIyMiwgNzQsIDEyLCAxMywgMjIyLCA3MywgCisgICAgMTIsIDEzLCAyMjIsIDcyLCAxMiwgMTMsIDIyMiwgNzEsIDEyLCAxMywgMjIyLCA3MCwgMTIsIDEzLCAyMjIsIDY5LCAxMiwgCisgICAgMTMsIDIyMiwgNjgsIDEyLCAxMywgMjIyLCA2NywgMTIsIDEzLCAyMjIsIDY2LCAxMiwgMTMsIDIyMiwgNjUsIDEyLCAxMywgCisgICAgMjIyLCA2NCwgMTIsIDEzLCAyMjIsIDYzLCAxMiwgMTMsIDIyMiwgNjIsIDEyLCAxMywgMjIyLCA2MSwgMTIsIDEzLCAyMjIsIAorICAgIDYwLCAxMiwgMTMsIDIyMiwgNTksIDEyLCAxMywgMjIyLCA1OCwgMTIsIDEzLCAyMjIsIDU3LCAxMiwgMTMsIDIyMiwgNTYsIAorICAgIDEyLCAxMywgMjIyLCA1NSwgMTIsIDEzLCAyMjIsIDU0LCAxMiwgMTMsIDIyMiwgNTMsIDEyLCAxMywgMjIyLCA1MiwgMTIsIAorICAgIDEzLCAyMjIsIDUxLCAxMiwgMTMsIDIyMiwgNTAsIDEyLCAxMywgMjIyLCA0OSwgMTIsIDEzLCAyMjIsIDQ4LCAxMiwgMTMsIAorICAgIDIyMiwgNDcsIDEyLCAxMywgMjIyLCA0NiwgMTIsIDEzLCAyMjIsIDQ1LCAxMiwgMTMsIDIyMiwgNDQsIDEyLCAxMywgMjIyLCAKKyAgICA0MywgMTIsIDEzLCAyMjIsIDQyLCAxMiwgMTMsIDIyMiwgNDEsIDEyLCAxMywgMjIyLCA0MCwgMTIsIDEzLCAyMjIsIDM5LCAKKyAgICAxMiwgMTMsIDIyMiwgMzgsIDEyLCAxMywgMjIyLCAzNywgMTIsIDEzLCAyMjIsIDM2LCAxMiwgMTMsIDIyMiwgMzUsIDEyLCAKKyAgICAxMywgMjE3LCAxNTAsIDEyLCAxMywgMjE3LCAxNDksIDEyLCAxMywgMjE3LCAxNDgsIDEyLCAxMywgMjE3LCAxNDcsIDEyLCAKKyAgICAxMywgMjE3LCAxNDYsIDEyLCAxMywgMjE3LCAxNDUsIDEyLCAxMywgMjE3LCAxNDQsIDEyLCAxMywgMjE3LCAxNDMsIDEyLCAKKyAgICAxMywgMjE3LCAxNDIsIDEyLCAxMywgMjE3LCAxNDEsIDEyLCAxMywgMjE3LCAxNDAsIDEyLCAxMywgMjE3LCAxMzksIDEyLCAKKyAgICAxMywgMjE3LCAxMzgsIDEyLCAxMywgMjE3LCAxMzcsIDEyLCAxMywgMjE3LCAxMzYsIDEyLCAxMywgMjE3LCAxMzUsIDEyLCAKKyAgICAxMywgMjE3LCAxMzQsIDEyLCAxMywgMjE3LCAxMzMsIDEyLCAxMywgMjE3LCAxMzIsIDEyLCAxMywgMjE3LCAxMzEsIDEyLCAKKyAgICAxMywgMjE3LCAxMzAsIDEyLCAxMywgMjE3LCAxMjksIDEyLCAxMywgMjE3LCAxMjgsIDEyLCAxMywgMjE3LCAxMjcsIDEyLCAKKyAgICAxMywgMjE3LCAxMjYsIDEyLCAxMywgMjE3LCAxMjUsIDEyLCAxMywgMjE3LCAxMjQsIDEyLCAxMywgMjE3LCAxMjMsIDEyLCAKKyAgICAxMywgMjE3LCAxMjIsIDEyLCAxMywgMjE3LCAxMjEsIDEyLCAxMywgMjE3LCAxMjAsIDEyLCAxMywgMjE3LCAxMTksIDEyLCAKKyAgICAxMywgMjE3LCAxMTgsIDEyLCAxMywgMjE3LCAxMTcsIDEyLCAxMywgMjE3LCAxMTYsIDEyLCAxMywgMjE3LCAxMTUsIDEyLCAKKyAgICAxMywgMjE3LCAxMTQsIDEyLCAxMywgMjE3LCAxMTMsIDEyLCAxMywgMjE3LCAxMTIsIDEyLCAxMywgMjE3LCAxMTEsIDEyLCAKKyAgICAxMywgMjE3LCAxMTAsIDEyLCAxMywgMjE3LCAxMDksIDEyLCAxMywgMjE3LCAxMDgsIDEyLCAxMywgMjE3LCAxMDcsIDEyLCAKKyAgICAxMywgMjE1LCAyMiwgMTIsIDEzLCAyMTUsIDIxLCAxMiwgMTMsIDIxNSwgMjAsIDEyLCAxMywgMjE1LCAxOSwgMTIsIDEzLCAKKyAgICAyMTUsIDE4LCAxMiwgMTMsIDIxNSwgMTcsIDEyLCAxMywgMjE1LCAxNiwgMTIsIDEzLCAyMTUsIDE1LCAxMiwgMTMsIDIxNSwgCisgICAgMTQsIDEyLCAxMywgMjE1LCAxMywgMTIsIDEzLCAyMTUsIDEyLCAxMiwgMTMsIDIxNSwgMTEsIDEyLCAxMywgMjE1LCAxMCwgCisgICAgMTIsIDEzLCAyMTUsIDksIDEyLCAxMywgMjE1LCA4LCAxMiwgMTMsIDIxNSwgNywgMTIsIDEzLCAyMTUsIDYsIDEyLCAxMywgCisgICAgMjE1LCA1LCAxMiwgMTMsIDIxNSwgNCwgMTIsIDEzLCAyMTUsIDMsIDEyLCAxMywgMjE1LCAyLCAxMiwgMTMsIDIxNSwgMSwgCisgICAgMTIsIDEzLCAyMTUsIDAsIDEyLCAxMywgMjE0LCAyNTUsIDEyLCAxMywgMjE0LCAyNTQsIDEyLCAxMywgMjE0LCAyNTMsIDEyLCAKKyAgICAxMywgMjE0LCAyNTIsIDEyLCAxMywgMjE0LCAyNTEsIDEyLCAxMywgMjE0LCAyNTAsIDEyLCAxMywgMjE0LCAyNDksIDEyLCAKKyAgICAxMywgMjE0LCAyNDgsIDEyLCAxMywgMjE0LCAyNDcsIDEyLCAxMywgMjE0LCAyNDYsIDEyLCAxMywgMjE0LCAyNDUsIDEyLCAKKyAgICAxMywgMjE0LCAyNDQsIDEyLCAxMywgMjE0LCAyNDMsIDEyLCAxMywgMjE0LCAyNDIsIDEyLCAxMywgMjE0LCAyNDEsIDEyLCAKKyAgICAxMywgMjE0LCAyNDAsIDEyLCAxMywgMjE0LCAyMzksIDEyLCAxMywgMjE0LCAyMzgsIDEyLCAxMywgMjE0LCAyMzcsIDEyLCAKKyAgICAxMywgMjE0LCAyMzYsIDEyLCAxMywgMjE0LCAyMzUsIDEyLCAxMywgMjE0LCAyMzQsIDEyLCAxMywgMjE0LCAyMzMsIDEyLCAKKyAgICAxMywgMjE0LCAyMzIsIDEyLCAxMywgMjE0LCAxMDQsIDEyLCAxMywgMjE0LCAxMDMsIDEyLCAxMywgMjE0LCAxMDIsIDEyLCAKKyAgICAxMywgMjE0LCAxMDEsIDEyLCAxMywgMjE0LCAxMDAsIDEyLCAxMywgMjE0LCA5OSwgMTIsIDEzLCAyMTQsIDk4LCAxMiwgMTMsIAorICAgIDIxNCwgOTcsIDEyLCAxMywgMjE0LCA5NiwgMTIsIDEzLCAyMTQsIDk1LCAxMiwgMTMsIDIxNCwgOTQsIDEyLCAxMywgMjE0LCAKKyAgICA5MywgMTIsIDEzLCAyMTQsIDkyLCAxMiwgMTMsIDIxNCwgOTEsIDEyLCAxMywgMjE0LCA5MCwgMTIsIDEzLCAyMTQsIDg5LCAKKyAgICAxMiwgMTMsIDIxNCwgODgsIDEyLCAxMywgMjE0LCA4NywgMTIsIDEzLCAyMTQsIDg2LCAxMiwgMTMsIDIxNCwgODUsIDEyLCAKKyAgICAxMywgMjE0LCA4NCwgMTIsIDEzLCAyMTQsIDgzLCAxMiwgMTMsIDIxNCwgODIsIDEyLCAxMywgMjE0LCA4MSwgMTIsIDEzLCAKKyAgICAyMTQsIDgwLCAxMiwgMTMsIDIxNCwgNzksIDEyLCAxMywgMjE0LCA3OCwgMTIsIDEzLCAyMTQsIDc3LCAxMiwgMTMsIDIxNCwgCisgICAgNzYsIDEyLCAxMywgMjE0LCA3NSwgMTIsIDEzLCAyMTQsIDc0LCAxMiwgMTMsIDIxNCwgNzMsIDEyLCAxMywgMjE0LCA3MiwgCisgICAgMTIsIDEzLCAyMTQsIDcxLCAxMiwgMTMsIDIxNCwgNzAsIDEyLCAxMywgMjE0LCA2OSwgMTIsIDEzLCAyMTQsIDY4LCAxMiwgCisgICAgMTMsIDIxNCwgNjcsIDEyLCAxMywgMjE0LCA2NiwgMTIsIDEzLCAyMTQsIDY1LCAxMiwgMTMsIDIxNCwgNjQsIDEyLCAxMywgCisgICAgMjE0LCA2MywgMTIsIDEzLCAyMTQsIDYyLCAxMiwgMTMsIDIxNCwgNjEsIDEyLCAxMywgMjE0LCA2MCwgMTIsIDEzLCAyMTQsIAorICAgIDU5LCAxMiwgMTMsIDIxNCwgNTgsIDEyLCAxMywgMjE0LCA1NywgMTIsIDEzLCAyMTQsIDU2LCAxMiwgMTMsIDIxNCwgNTUsIAorICAgIDEyLCAxMywgMjE0LCA1NCwgMTIsIDEzLCAyMTQsIDUzLCAxMiwgMTMsIDIxNCwgNTIsIDEyLCAxMywgMjE0LCA1MSwgMTIsIAorICAgIDEzLCAyMTQsIDUwLCAxMiwgMTMsIDIxNCwgNDksIDEyLCAxMywgMjE0LCA0OCwgMTIsIDEzLCAyMTQsIDQ3LCAxMiwgMTMsIAorICAgIDIxNCwgNDYsIDEyLCAxMywgMjE0LCA0NSwgMTIsIDEzLCAyMTQsIDQ0LCAxMiwgMTMsIDIxNCwgNDMsIDEyLCAxMywgMjE0LCAKKyAgICA0MiwgMTIsIDEzLCAyMTQsIDQxLCAxMiwgMTMsIDIxNCwgNDAsIDEyLCAxMywgMjE0LCAzOSwgMTIsIDEzLCAyMTQsIDM4LCAKKyAgICAxMiwgMTMsIDIxNCwgMzcsIDEyLCAxMywgMjE0LCAzNiwgMTIsIDEzLCAyMTQsIDM1LCAxMiwgMTMsIDIxNCwgMzQsIDEyLCAKKyAgICAxMywgMjE0LCAzMywgMTIsIDEzLCAyMTQsIDMyLCAxMiwgMTMsIDIxNCwgMzEsIDEyLCAxMywgMjE0LCAzMCwgMTIsIDEzLCAKKyAgICAyMTQsIDI5LCAxMiwgMTMsIDIxNCwgMjgsIDEyLCAxMywgMjEyLCA5NywgMTIsIDEzLCAyMTIsIDk2LCAxMiwgMTMsIDIxMiwgCisgICAgOTUsIDEyLCAxMywgMjEyLCA5NCwgMTIsIDEzLCAyMTIsIDkzLCAxMiwgMTMsIDIxMiwgOTIsIDEyLCAxMywgMjEyLCA5MSwgCisgICAgMTIsIDEzLCAyMTIsIDkwLCAxMiwgMTMsIDIxMiwgODksIDEyLCAxMywgMjEyLCA4OCwgMTIsIDEzLCAyMTIsIDg3LCAxMiwgCisgICAgMTMsIDIxMiwgODYsIDEyLCAxMywgMjEyLCA4NSwgMTIsIDEzLCAyMTIsIDg0LCAxMiwgMTMsIDIxMiwgODMsIDEyLCAxMywgCisgICAgMjEyLCA4MiwgMTIsIDEzLCAyMTIsIDgxLCAxMiwgMTMsIDIxMiwgODAsIDEyLCAxMywgMjEyLCA3OSwgMTIsIDEzLCAyMTIsIAorICAgIDc4LCAxMiwgMTMsIDIxMiwgNzcsIDEyLCAxMywgMjEyLCA3NiwgMTIsIDEzLCAyMTIsIDc1LCAxMiwgMTMsIDIxMiwgNzQsIAorICAgIDEyLCAxMywgMjEyLCA3MywgMTIsIDEzLCAyMTIsIDcyLCAxMiwgMTMsIDIxMiwgNzEsIDEyLCAxMywgMjEyLCA3MCwgMTIsIAorICAgIDEzLCAyMTIsIDY5LCAxMiwgMTMsIDIxMiwgNjgsIDEyLCAxMywgMjEyLCA2NywgMTIsIDEzLCAyMTIsIDY2LCAxMiwgMTMsIAorICAgIDIxMSwgMTc3LCAxMiwgMTMsIDIxMSwgMTc2LCAxMiwgMTMsIDIxMSwgMTc1LCAxMiwgMTMsIDIxMSwgMTc0LCAxMiwgMTMsIAorICAgIDIxMSwgMTczLCAxMiwgMTMsIDIxMSwgMTcyLCAxMiwgMTMsIDIxMSwgMTcxLCAxMiwgMTMsIDIxMSwgMTcwLCAxMiwgMTMsIAorICAgIDIxMSwgMTY5LCAxMiwgMTMsIDIxMSwgMTY4LCAxMiwgMTMsIDIxMSwgMTY3LCAxMiwgMTMsIDIxMSwgMTY2LCAxMiwgMTMsIAorICAgIDIxMSwgMTE1LCAxMiwgMTMsIDIxMSwgMTE0LCAxMiwgMTMsIDIxMSwgMTEzLCAxMiwgMTMsIDIxMSwgMTEyLCAxMiwgMTMsIAorICAgIDIxMSwgMTExLCAxMiwgMTMsIDIxMSwgMTEwLCAxMiwgMTMsIDIxMSwgMTA5LCAxMiwgMTMsIDIxMSwgMTA4LCAxMiwgMTMsIAorICAgIDIxMSwgMTA3LCAxMiwgMTMsIDIxMCwgMTU4LCAxMiwgMTMsIDIxMCwgMTU3LCAxMiwgMTMsIDIxMCwgMTU2LCAxMiwgMTMsIAorICAgIDIxMCwgMTU1LCAxMiwgMTMsIDIxMCwgMTU0LCAxMiwgMTMsIDIxMCwgMTUzLCAxMiwgMTMsIDIxMCwgMTUyLCAxMiwgMTMsIAorICAgIDIxMCwgMTUxLCAxMiwgMTMsIDIxMCwgMTUwLCAxMiwgMTMsIDIxMCwgMTQ5LCAxMiwgMTMsIDIxMCwgMTQ4LCAxMiwgMTMsIAorICAgIDIxMCwgMTQ3LCAxMiwgMTMsIDIxMCwgMTQ2LCAxMiwgMTMsIDIxMCwgMTQ1LCAxMiwgMTMsIDIxMCwgMTQ0LCAxMiwgMTMsIAorICAgIDIxMCwgMTQzLCAxMiwgMTMsIDIxMCwgMTQyLCAxMiwgMTMsIDIxMCwgMTQxLCAxMiwgMTMsIDIxMCwgMTQwLCAxMiwgMTMsIAorICAgIDIxMCwgMTM5LCAxMiwgMTMsIDIxMCwgMTM4LCAxMiwgMTMsIDIxMCwgMTM3LCAxMiwgMTMsIDIxMCwgMTM2LCAxMiwgMTMsIAorICAgIDIxMCwgMTM1LCAxMiwgMTMsIDIxMCwgMTM0LCAxMiwgMTMsIDIxMCwgMTMzLCAxMiwgMTMsIDIxMCwgMTMyLCAxMiwgMTMsIAorICAgIDIxMCwgMTMxLCAxMiwgMTMsIDIxMCwgMTMwLCAxMiwgMTMsIDIxMCwgMTI5LCAxMiwgMTMsIDIxMCwgMTI4LCAxMiwgMTMsIAorICAgIDIxMCwgMTI3LCAxMiwgMTMsIDIxMCwgMTI2LCAxMiwgMTMsIDIxMCwgMTI1LCAxMiwgMTMsIDIxMCwgMTI0LCAxMiwgMTMsIAorICAgIDIxMCwgMTIzLCAxMiwgMTMsIDIxMCwgMTIyLCAxMiwgMTMsIDIxMCwgMTIxLCAxMiwgMTMsIDIxMCwgMTIwLCAxMiwgMTMsIAorICAgIDIxMCwgMTE5LCAxMiwgMTMsIDIxMCwgMTE4LCAxMiwgMTMsIDI1NSwgNzIsIDEyLCAxMywgMjU1LCA3MSwgMTIsIDEzLCAKKyAgICAyNTUsIDcwLCAxMiwgMTMsIDI1NSwgNjksIDEyLCAxMywgMjU1LCA2OCwgMTIsIDEzLCAyNTUsIDY3LCAxMiwgMTMsIDI1NSwgCisgICAgNjYsIDEyLCAxMywgMjU1LCA2NSwgMTIsIDEzLCAyNTUsIDY0LCAxMiwgMTMsIDI1NSwgNjMsIDEyLCAxMywgMjU1LCA2MiwgCisgICAgMTIsIDEzLCAyNTUsIDYxLCAxMiwgMTMsIDI1NSwgNjAsIDEyLCAxMywgMjU1LCA1OSwgMTIsIDEzLCAyNTUsIDU4LCAxMiwgCisgICAgMTMsIDI1NSwgNTcsIDEyLCAxMywgMjU1LCA1NiwgMTIsIDEzLCAyNTUsIDU1LCAxMiwgMTMsIDI1NSwgNTQsIDEyLCAxMywgCisgICAgMjU1LCA1MywgMTIsIDEzLCAyNTUsIDUyLCAxMiwgMTMsIDI1NSwgNTEsIDEyLCAxMywgMjU1LCA1MCwgMTIsIDEzLCAyNTUsIAorICAgIDQ5LCAxMiwgMTMsIDI1NSwgNDgsIDEyLCAxMywgMjU1LCA0NywgMTIsIDEzLCAyNTUsIDQ2LCAxMiwgMTMsIDI1NSwgNDUsIAorICAgIDEyLCAxMywgMjU1LCA0NCwgMTIsIDEzLCAyNTUsIDQzLCAxMiwgMTMsIDI1NSwgNDIsIDEyLCAxMywgMjU1LCA0MSwgMTIsIAorICAgIDEzLCAyNTUsIDQwLCAxMiwgMTMsIDI1NSwgMzksIDIwLCAxLCAxNjcsIDIyOSwgMTIsIDIzMSwgMTYsIDIwLCAxLCAxNjcsIAorICAgIDI0MywgNzAsIDI0NCwgMzYsIDIwLCAxLCAxNjcsIDIyNCwgMjUxLCAyMzEsIDE3LCAyMjUsIDU3LCAyMCwgMSwgMTY3LCAKKyAgICAyMjQsIDI1MSwgMjMxLCAxNywgMjI1LCA1OCwgMjAsIDEsIDE2NywgMjI5LCAyMjYsIDIzMSwgMTYsIDIwLCAxLCAxNjcsIAorICAgIDIxOSwgMjIxLCAyMCwgMSwgMTY3LCAyMTYsIDY2LCAyMzEsIDE2LCAyMCwgMSwgMTY3LCAyMjcsIDExOCwgMjMxLCAxNiwgCisgICAgMjAsIDEsIDE2NywgMjIwLCAxOSwgMjI2LCA5MCwgMjI4LCAxNjksIDIwLCAxLCAxNjcsIDIyNCwgMjUxLCAyMjYsIDkwLCAKKyAgICAyMjgsIDE3MCwgMjI1LCA1NywgMjAsIDEsIDE2NywgMjI0LCAyNTEsIDIyNiwgOTAsIDIyOCwgMTcwLCAyMjUsIDU4LCAyMCwgCisgICAgMSwgMTY3LCAyMzEsIDIxOCwgMjAsIDEsIDE2NywgMjE1LCAxMTksIDIzMSwgMjE5LCAyMCwgMSwgMTY3LCAyMjksIDcxLCAKKyAgICAyMCwgMSwgMTY3LCAyMzEsIDIxNSwgMjAsIDEsIDE2NywgMjMxLCAxNzYsIDIwLCAxLCAxNjcsIDIzMCwgNDgsIDIwLCAxLCAKKyAgICAxNjcsIDIyMCwgMTI0LCAyMCwgMSwgMTY3LCAyMjcsIDI0MSwgMjAsIDEsIDE2NywgMjM0LCAxNDksIDIwLCAxLCAxNjcsIAorICAgIDIyOCwgMTM4LCAyMCwgMSwgMTY3LCAyMTgsIDQsIDIwLCAxLCAxNjcsIDIyOSwgMTEsIDIwLCAxLCAxNjcsIDIzMywgODcsIAorICAgIDIwLCAxLCAxNjcsIDIzMywgMTIsIDIzMywgMTg5LCAyMCwgMSwgMTY3LCAyMjcsIDI0OCwgMjMxLCAyNCwgMjAsIDEsIDE2NywgCisgICAgMjMxLCAyMjIsIDIwLCAxLCAxNjcsIDIyNSwgMjQ2LCAyMCwgMSwgMTY3LCAyNDIsIDIzMSwgMjAsIDEsIDE2NywgMjI2LCAKKyAgICA1MCwgMjAsIDEsIDE2NywgMjMwLCAxNTEsIDIyOSwgNDUsIDIwLCAxLCAxNjcsIDIyNywgOTksIDIzMSwgMjcsIDIwLCAxLCAKKyAgICAxNjcsIDEwNCwgMjEwLCAxODgsIDIyOSwgMjIwLCAyMCwgMSwgMTY3LCAyNDIsIDIzMiwgMjAsIDEsIDE2NywgMjI3LCAyNDgsIAorICAgIDIyNywgMjQ5LCAyMCwgMSwgMTY3LCAyMTksIDEyOCwgMjAsIDEsIDE2NywgMjMxLCA5LCAyMCwgMSwgMTY3LCAyMzEsIDMwLCAKKyAgICAyMCwgMSwgMTY3LCAyMzAsIDEzMCwgMjAsIDEsIDE2NywgMjM0LCAyNDksIDIwLCAxLCAxNjcsIDIyNiwgOTAsIDIzMywgNDcsIAorICAgIDIwLCAxLCAxNjcsIDIyOSwgMTQ5LCAyMzMsIDQ3LCAyMCwgMSwgMTY3LCAyMjUsIDE1OCwgMjAsIDEsIDE2NywgMjMxLCAKKyAgICAyMTYsIDIwLCAxLCAxNjcsIDIyOCwgMjA3LCAyMCwgMSwgMTY3LCAyMjQsIDEzNCwgMjAsIDEsIDE2NywgMjE1LCAxMTYsIAorICAgIDIwLCAxLCAxNjcsIDIzMiwgOTQsIDIwLCAxLCAxNjcsIDIxOSwgNDEsIDIwLCAxLCAxNjcsIDIxNiwgMjE2LCAyMCwgMSwgCisgICAgMTY3LCAyMzEsIDIxMywgMjAsIDEsIDE2NywgMjM0LCAxNTYsIDIwLCAxLCAxNjcsIDIyOSwgMTQ1LCAyMCwgMSwgMTY3LCAKKyAgICAyMzMsIDIwMSwgMjAsIDEsIDE2NywgMjMwLCAxMzEsIDIwLCAxLCAxNjcsIDIxOSwgMjE4LCAyMCwgMSwgMTY3LCAyMzIsIAorICAgIDEzOCwgMjAsIDEsIDE2NywgMjQ0LCA5MywgMjAsIDEsIDE2NywgMjIyLCAxOTksIDIwLCAxLCAxNjcsIDIzMywgMjQxLCAyMCwgCisgICAgMSwgMTY3LCAyMTksIDM3LCAyMCwgMSwgMTY3LCAyMzEsIDE3MywgMjI1LCA5OSwgMjAsIDEsIDE2NywgMjIwLCAxMiwgMjAsIAorICAgIDEsIDE2NywgMjI3LCAyNDcsIDIwLCAxLCAxNjcsIDIxOSwgMjUzLCAyMjgsIDIsIDIxMCwgMTk2LCAyMCwgMSwgMTY3LCAKKyAgICAyMjcsIDEzOCwgMjMwLCAxNDgsIDIwLCAxLCAxNjcsIDIyNiwgODUsIDIwLCAxLCAxNjcsIDIyOCwgMTM5LCAyMCwgMSwgCisgICAgMTY3LCAyMTQsIDE3MCwgMjAsIDEsIDE2NywgMjI5LCA0OCwgMjAsIDEsIDE2NywgMjMxLCAyMTIsIDIwLCAxLCAxNjcsIAorICAgIDIyOCwgMTgxLCAyMCwgMSwgMTY3LCAyMzEsIDExOSwgMjAsIDEsIDE2NywgMjI3LCAxNTEsIDIwLCAxLCAxNjcsIDIxNiwgCisgICAgMjIwLCAyMCwgMSwgMTY3LCAyMTksIDM0LCAyMCwgMSwgMTY3LCAyMjYsIDg2LCAyMCwgMSwgMTY3LCAyMjgsIDYsIDIwLCAxLCAKKyAgICAxNjcsIDIzMSwgMjIwLCAyMCwgMSwgMTY3LCAyMjcsIDE0OCwgMjAsIDEsIDE2NywgMjM0LCAyMTYsIDIwLCAxLCAxNjcsIAorICAgIDIyOCwgOSwgMjAsIDEsIDE2NywgMjEzLCAyNTAsIDIwLCAxLCAxNjcsIDIzMiwgOTgsIDIwLCAxLCAxNjcsIDIyOSwgOTgsIAorICAgIDIwLCAxLCAxNjcsIDIyOSwgMTk2LCAyMCwgMSwgMTY3LCAyMzEsIDExOCwgMjAsIDEsIDIyNSwgMTM4LCAyMjgsIDQsIDIwLCAKKyAgICAxLCAyMjUsIDEzOCwgMjE1LCAxMTksIDIzMSwgMjE3LCAyMCwgMSwgMjI1LCAxMzgsIDIxOSwgMTg1LCAyMCwgMSwgMjI1LCAKKyAgICAxMzgsIDIyMCwgMTI4LCAyMTUsIDExOCwgMjAsIDEsIDIyNSwgMTM4LCAyMzIsIDE0MCwgMjI3LCAyNDQsIDIwLCAxLCAyMjUsIAorICAgIDEzOCwgMjMxLCAxMjUsIDIzMSwgMjIxLCAyMCwgMSwgMjI1LCAxMzgsIDIzNCwgODcsIDIwLCAxLCAyMjUsIDEzOCwgMjExLCAKKyAgICAxNSwgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDEyMCwgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDIzNywgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMjUsIDIwOCwgMjAsIDEsIDIyNSwgMTM4LCAyMTEsIDg5LCAyMzMsIDQ3LCAyMCwgMSwgMjI1LCAxMzgsIDIzMywgCisgICAgMTAzLCAyMjgsIDIsIDIyNywgMTYwLCAyMCwgMSwgMjI1LCAxMzgsIDIyNywgMjQyLCAyMjAsIDM4LCAyMCwgMSwgMjI1LCAKKyAgICAxMzgsIDIyOSwgMTE2LCAyMjgsIDE4NCwgMjAsIDEsIDIyNSwgMTM4LCAyNDIsIDIyOSwgMjAsIDEsIDIyNSwgMTM4LCAyMjUsIAorICAgIDQ5LCAyMCwgMSwgMjI1LCAxMzgsIDIxNSwgMTE5LCAyMjgsIDAsIDIwLCAxLCAyMjUsIDEzOCwgMjIwLCA0MywgMjI4LCAKKyAgICAxNzksIDIwLCAxLCAyMjUsIDEzOCwgMjIwLCAzOSwgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDE3LCAyMTYsIDIxOSwgMjAsIDEsIAorICAgIDIyNSwgMTM4LCAyMzEsIDEwNywgMjMxLCAxMjEsIDIwLCAxLCAyMjUsIDEzOCwgMjI3LCAxNDksIDIyNywgMjQ0LCAyMCwgMSwgCisgICAgMjI1LCAxMzgsIDIzNCwgMTQ1LCAyMCwgMSwgMjI1LCAxMzgsIDI0MiwgMjMwLCAyMCwgMSwgMjI1LCAxMzgsIDIzNCwgMTQxLCAKKyAgICAyMCwgMSwgMjI1LCAxMzgsIDIzMywgMTI5LCAyMCwgMSwgMjI1LCAxMzgsIDIyNSwgMjQ5LCAyMCwgMSwgMjI1LCAxMzgsIAorICAgIDIxMywgMTgyLCAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgMTMsIDIzMCwgNDYsIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCA0NywgCisgICAgMjMxLCAxMDMsIDIwLCAxLCAyMjUsIDEzOCwgMjExLCAxOTMsIDIwLCAxLCAyMjUsIDEzOCwgMjIyLCAxMSwgMjAsIDEsIAorICAgIDIyNSwgMTM4LCAyMTcsIDk3LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMjksIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCAzMiwgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDMzLCAyMzMsIDg0LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTksIDIwLCAxLCAyMjUsIAorICAgIDEzOCwgMjE4LCA1MiwgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDExMSwgMjAsIDEsIDIyNSwgMTM4LCAyMzAsIDEzMywgMjAsIAorICAgIDEsIDIyNSwgMTM4LCAyMjcsIDE2MywgMjAsIDEsIDIyNSwgMTM4LCAyMjQsIDEzOCwgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIAorICAgIDI4LCAyMjksIDQ5LCAyMCwgMSwgMjI1LCAxMzgsIDI0NCwgMTI2LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgOTgsIDIwLCAxLCAKKyAgICAyMjUsIDEzOCwgMjQ0LCAxNDcsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCAxNTMsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAyMzksIAorICAgIDIyOCwgMTczLCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMjM5LCAyMjgsIDE0OSwgMjAsIDEsIDIyNSwgMTM4LCAyMzMsIDExLCAKKyAgICAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgNTUsIDIwLCAxLCAyMjUsIDEzOCwgMjI4LCAxMSwgMjAsIDEsIDIyNSwgMTM4LCAxODQsIAorICAgIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCA3NCwgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDEsIDIwLCAxLCAxMzcsIDIyOSwgMTIsIAorICAgIDIzMSwgMjE5LCAyMCwgMSwgMTM3LCAyMjcsIDExNywgMjAsIDEsIDEzNywgMjEwLCAxOTYsIDIwLCAxLCAxMzcsIDIxMiwgCisgICAgNTMsIDIwLCAxLCAxMzcsIDIyOSwgNDgsIDIwLCAxLCAxMzcsIDIyOSwgMTM3LCAyMCwgMSwgMTM3LCAyMjksIDE5LCAyMCwgCisgICAgMSwgMTM3LCAyNDIsIDIzOSwgMjAsIDEsIDEzNywgMjMxLCAxMTUsIDIwLCAxLCAxMzcsIDI0MywgNzcsIDIwLCAxLCAxMzcsIAorICAgIDIyNywgMTQwLCAyMzAsIDE3MCwgMjMxLCAzMSwgMjAsIDEsIDEzNywgMjI3LCAyNDAsIDIzMSwgMTA2LCAyMCwgMSwgMTM3LCAKKyAgICAyMzEsIDExMiwgMjAsIDEsIDEzNywgMjI1LCA1NSwgMjAsIDEsIDEzNywgMjI5LCAxMjIsIDIwLCAxLCAxMzcsIDIzMSwgCisgICAgMTIzLCAyNTEsIDI5LCAyMCwgMSwgMTM3LCAyMzQsIDE0MywgMjAsIDEsIDEzNywgMjQyLCAyNDAsIDIwLCAxLCAxMzcsIAorICAgIDIzNCwgMTUwLCAyMCwgMSwgMTM3LCAyMTAsIDIxMywgMjMwLCA3NiwgMjAsIDEsIDEzNywgMjI3LCAxMTEsIDIwLCAxLCAKKyAgICAxMzcsIDIzMSwgMTAwLCAyMCwgMSwgMTM3LCAyMjgsIDEwLCAyMCwgMSwgMTM3LCAyMzEsIDEwNiwgMjAsIDEsIDEzNywgCisgICAgMjExLCAxNiwgMjAsIDEsIDEzNywgMjMzLCAyNDksIDIwLCAxLCAxMzcsIDIzNSwgMTAsIDIwLCAxLCAxMzcsIDIyMCwgMTIzLCAKKyAgICAyMCwgMSwgMTM3LCAyMjksIDEzMSwgMjAsIDEsIDEzNywgMjE3LCA5NSwgMjAsIDEsIDEzNywgMjI4LCAxNTMsIDIwLCAxLCAKKyAgICAxMzcsIDIxNiwgNjYsIDIxMCwgMTk4LCAyMCwgMSwgMTM3LCAyMTgsIDc5LCAyMCwgMSwgMTM3LCAyMjksIDM5LCAyMjcsIAorICAgIDE2MCwgMjAsIDEsIDEzNywgMjEzLCAxODEsIDIwLCAxLCAxMzcsIDIyOSwgMTk5LCAyMCwgMSwgMTM3LCAyMzEsIDIzOSwgCisgICAgMjM0LCAxNTIsIDIwLCAxLCAxMzcsIDIyNywgMjQ5LCAyMCwgMSwgMTM3LCAyMjksIDM0LCAyMCwgMSwgMTM3LCAyMzMsIDg4LCAKKyAgICAyMCwgMSwgMTM3LCAyMzEsIDEwOCwgMjAsIDEsIDEzNywgMjMxLCA4LCAyMCwgMSwgMTM3LCAyMjcsIDI0MywgMjAsIDEsIAorICAgIDEzNywgMjE2LCAyMTUsIDIwLCAxLCAxMzcsIDIyOSwgMzYsIDIwLCAxLCAxMzcsIDI0MywgMjMzLCAyMCwgMSwgMTM3LCAKKyAgICAyMjksIDEzNiwgMjAsIDEsIDEzNywgMjI4LCAxMiwgMjAsIDEsIDEzNywgMjI4LCA4LCAyMCwgMSwgMTM3LCAyNTEsIDEwNywgCisgICAgMjAsIDEsIDEzNywgMjEzLCAxODMsIDIwLCAxLCAxMzcsIDIzMSwgMTEzLCAyMCwgMSwgMTM3LCAyMjIsIDE0MCwgMjAsIDEsIAorICAgIDEzNywgMjI4LCAxODMsIDIwLCAxLCAxMzcsIDIzMywgMTAyLCAyMCwgMSwgMTM3LCAyMTYsIDY0LCAyMCwgMSwgMTM3LCAKKyAgICAyMjcsIDI1MCwgMjI5LCAxLCAyMCwgMSwgMTM3LCAyMjgsIDE3NSwgMjAsIDEsIDEzNywgMjM0LCAxNTYsIDIwLCAxLCAxMzcsIAorICAgIDIyOSwgNDAsIDIwLCAxLCAxMzcsIDIzMSwgMjEyLCAyMCwgMSwgMTM3LCAyMzEsIDEwMSwgMjAsIDEsIDEzNywgMjMyLCA5OCwgCisgICAgMjAsIDEsIDEzNywgMjMzLCAxODksIDIwLCAxLCAxMzcsIDIyOCwgMTgxLCAyMCwgMSwgMTM3LCAyMjksIDEsIDIwLCAxLCAKKyAgICAxMzcsIDIxMSwgMTg0LCAyMCwgMSwgMTM3LCAyMjksIDM3LCAyMCwgMSwgMTM3LCAyMjcsIDI1MywgMjAsIDEsIDEzNywgCisgICAgMjI3LCAyNDUsIDIwLCAxLCAxMzcsIDIzMywgMjAzLCAyMjgsIDEzOSwgMjAsIDEsIDEzNywgMjI3LCAyNTEsIDIwLCAxLCAKKyAgICAxMzcsIDIyOSwgMTQ0LCAyMCwgMSwgMTM3LCAyMzEsIDIzOSwgMjI4LCAwLCAyMCwgMSwgMTM3LCAyMTEsIDEwMywgMjAsIDEsIAorICAgIDEzNywgMjI5LCAxNDMsIDIwLCAxLCAxMzcsIDIxOSwgMjIwLCAyMCwgMSwgMTM3LCAyMjAsIDEyNiwgMjAsIDEsIDEzNywgCisgICAgMjMxLCAxMDksIDIwLCAxLCAxMzcsIDIzMSwgMjE5LCAyMCwgMSwgMTM3LCAyMzEsIDExOSwgMjAsIDEsIDEzNywgMjM0LCAKKyAgICAxNDQsIDIwLCAxLCAxMzcsIDIzMSwgMTEwLCAyMCwgMSwgMTM3LCAyMzQsIDE0OCwgMjAsIDEsIDEzNywgMjMxLCAxMjMsIAorICAgIDIyNSwgMTAzLCAyMCwgMSwgMTM3LCAyMTAsIDE3OSwgMjAsIDEsIDEzNywgMjI4LCAxNzEsIDIwLCAxLCAxMzcsIDIzMCwgCisgICAgMjIwLCAyMCwgMSwgMTM3LCAyMzAsIDEwMCwgMjAsIDEsIDEzNywgMjIwLCAxNSwgMjAsIDEsIDEzNywgMjM0LCAxNjYsIAorICAgIDIzMywgNzAsIDIwLCAxLCAxMzcsIDIzNCwgMTY2LCAyNDQsIDE2MCwgMjAsIDEsIDEzNywgMjI5LCA2OSwgMjAsIDEsIDEzNywgCisgICAgMjI5LCAxOTYsIDIwLCAxLCAxMzcsIDIzMiwgMjAwLCAyMCwgMSwgMTM3LCAyMjUsIDY1LCAyMCwgMSwgMTM3LCAyMjUsIAorICAgIDE5OSwgMjAsIDEsIDEzNywgMjE2LCAyMzAsIDIwLCAxLCAxMDcsIDIzMSwgOTksIDIwLCAxLCAxMDcsIDIxMiwgNTEsIDIwLCAKKyAgICAxLCAxMDcsIDIyOCwgMTY5LCAyMCwgMSwgMTA3LCAyMzEsIDE2LCAyMCwgMSwgMTA3LCAyMjgsIDE2NywgMjAsIDEsIDEwNywgCisgICAgMjMyLCAyMzUsIDIwLCAxLCAxMDcsIDIyOCwgMTcyLCAyMCwgMSwgMTA3LCAyMjgsIDcsIDIwLCAxLCAxMDcsIDIyOSwgNTQsIAorICAgIDIwLCAxLCAxMDcsIDIyNywgMTYwLCAyMCwgMSwgMTA3LCAyMTEsIDE5NCwgMjAsIDEsIDEwNywgMjI5LCA5LCAyMCwgMSwgCisgICAgMTA3LCAyMjAsIDYxLCAyMCwgMSwgMTA3LCAyMjksIDIwLCAyMCwgMSwgMTA3LCAyMzQsIDE1MSwgMjAsIDEsIDEwNywgMjE2LCAKKyAgICAyMTcsIDIwLCAxLCAxMDcsIDIyMCwgNDEsIDIwLCAxLCAxMDcsIDIyOCwgMTgwLCAyMCwgMSwgMTA3LCAyMTgsIDUyLCAyMCwgCisgICAgMSwgMTA3LCAyMzQsIDE1NiwgMjAsIDEsIDEwNywgMjExLCA5MSwgMjAsIDEsIDEwNywgMjMzLCAyMDQsIDIwLCAxLCAxMDcsIAorICAgIDIyMSwgMjM0LCAyMCwgMSwgMTA3LCAyMzEsIDIxLCAyMCwgMSwgMTA3LCAyMjksIDEzNSwgMjAsIDEsIDEwNywgMjMxLCAKKyAgICAxODgsIDIwLCAxLCAxMDcsIDIzMSwgMjcsIDIwLCAxLCAxMDcsIDIyMCwgMTI1LCAyMCwgMSwgMTA3LCAyMTEsIDM5LCAyMCwgCisgICAgMSwgMTA3LCAyMjgsIDE3NCwgMjAsIDEsIDEwNywgMjM0LCAxNDcsIDIzMSwgMTAyLCAyMCwgMSwgMTA3LCAyMjksIDE2LCAKKyAgICAyMCwgMSwgMTA3LCAyMTUsIDExOCwgMjAsIDEsIDEwNywgMjQyLCAyNDgsIDIwLCAxLCAxMDcsIDIyOSwgNiwgMjAsIDEsIAorICAgIDEwNywgMjQ0LCAxMjcsIDIwLCAxLCAxMDcsIDIyOSwgMTM5LCAyMCwgMSwgMTA3LCAyMzEsIDAsIDIwLCAxLCAxMDcsIDIzMywgCisgICAgNSwgMjAsIDEsIDEwNywgMjI5LCAxMjEsIDIwLCAxLCAxMDcsIDIzMCwgMTQ3LCAyMCwgMSwgMTA3LCAyMzEsIDQsIDIwLCAxLCAKKyAgICAxMDcsIDIyNCwgMTE4LCAyMCwgMSwgMTA3LCAyMzEsIDIsIDIwLCAxLCAxMDcsIDIzMSwgMTgsIDIwLCAxLCAxMDcsIDIzMiwgCisgICAgODQsIDIwLCAxLCAxMDcsIDIyNywgMjU1LCAyMCwgMSwgMTA3LCAyMzEsIDEyMiwgMjAsIDEsIDEwNywgMjMzLCAxODAsIDIwLCAKKyAgICAxLCAxMDcsIDIyNywgMTUxLCAyMCwgMSwgMTA3LCAyMTYsIDIyMCwgMjAsIDEsIDEwNywgMjE5LCAzNCwgMjAsIDEsIDEwNywgCisgICAgMjEwLCAxNzksIDIwLCAxLCAxMDcsIDIzNCwgMTQ4LCAyMCwgMSwgMTA3LCAyMjMsIDE3MCwgMjAsIDEsIDEwNywgMjE3LCAKKyAgICAxMCwgMjAsIDEsIDEwNywgMjI5LCAxNywgMjAsIDEsIDEwNywgMjMxLCAyMywgMjAsIDEsIDEwNywgMjI3LCAyNTQsIDIwLCAKKyAgICAxLCAxMDcsIDIzNCwgMTQ2LCAyMCwgMSwgMTA3LCAyMjUsIDU5LCAyMCwgMSwgMTA3LCAyMjUsIDE1MiwgMjAsIDEsIDEwNywgCisgICAgMjI3LCAxMjcsIDIwLCAxLCAxMDcsIDIzMywgMTEsIDIwLCAxLCAxMDcsIDIyOSwgNTUsIDIwLCAxLCAxMDcsIDIzMSwgMjAsIAorICAgIDIwLCAxLCAxMDcsIDIyOSwgMjksIDIwLCAxLCAxMDcsIDIxMCwgMTkzLCAyMCwgMSwgMTA3LCAyMjYsIDIxLCAyMCwgMSwgCisgICAgMTA3LCAyMTAsIDE5MiwgMjAsIDEsIDEwNywgMjI5LCAxNDQsIDIwLCAxLCAxMDcsIDIyNywgMjQ0LCAyMCwgMSwgMTA3LCAKKyAgICAyMTgsIDgxLCAyMCwgMSwgMTA3LCAyMzMsIDIwOCwgMjAsIDEsIDEwNywgMjI5LCA0NCwgMjAsIDEsIDEwNywgMjI5LCAxNCwgCisgICAgMjAsIDEsIDEwNywgMjE1LCAxMDIsIDIwLCAxLCAxMDcsIDIzMSwgMzEsIDIwLCAxLCAxMDcsIDIzMywgMTk4LCAyMCwgMSwgCisgICAgMTA3LCAyMjcsIDI1MiwgMjAsIDEsIDEwNywgMjE2LCAyMTgsIDIwLCAxLCAxMDcsIDIzMSwgMjE0LCAyMCwgMSwgMTA3LCAKKyAgICAyMjksIDUzLCAyMCwgMSwgMTA3LCAyMzMsIDQsIDIwLCAxLCAxMDcsIDIyOSwgMzUsIDIwLCAxLCAxMDcsIDIyOCwgMSwgMjAsIAorICAgIDEsIDEwNywgMjI4LCAxNTMsIDIwLCAxLCAxMDcsIDI0MiwgMjMzLCAyMCwgMSwgMTA3LCAyMzMsIDIxNywgMjAsIDEsIDEwNywgCisgICAgMjIzLCA4NCwgMjI2LCAyMDksIDIwLCAxLCAxMDcsIDIxNywgODYsIDIwLCAxLCAxMDcsIDIxNiwgMTAsIDIwLCAxLCAxMDcsIAorICAgIDIyNywgMTQ4LCAyMCwgMSwgMTA3LCAyMjIsIDIzOSwgMjAsIDEsIDEwNywgMjMzLCA0OSwgMjAsIDEsIDEwNywgMjMxLCA3OSwgCisgICAgMjAsIDEsIDEwNywgMTkzLCAyMCwgMSwgMTA3LCAyMTgsIDQsIDIwLCAxLCAxMDcsIDIzMCwgMTAyLCAyMCwgMSwgMTA3LCAKKyAgICAyMjAsIDI3LCAyMCwgMSwgMTA3LCAyMjAsIDM3LCAyMCwgMSwgMTA3LCAyMzMsIDE1NSwgMjAsIDEsIDEwNywgMjI3LCAyMzcsIAorICAgIDIwLCAxLCAxMDcsIDIxOSwgMjI1LCAyMCwgMSwgMTA3LCAyMjcsIDI0NiwgMjAsIDEsIDEwNywgMjI1LCAyMTEsIDIwLCAxLCAKKyAgICAxMDcsIDIyOCwgMjMzLCAyMCwgMSwgMTA3LCAyMTksIDI1MiwgMjAsIDEsIDEwNywgMjI0LCAxMzMsIDIwLCAxLCAxMDcsIAorICAgIDIzMCwgNDYsIDIwLCAxLCAxMDcsIDIzMiwgMTE5LCAyMCwgMSwgMTA3LCAyMjMsIDg0LCAyMzAsIDk2LCAyMCwgMSwgMTA3LCAKKyAgICAyMTYsIDExNywgMjAsIDEsIDEwNywgMjI3LCAyMzgsIDIwLCAxLCAxMDcsIDIzMSwgMTIzLCAxOTgsIDIwLCAxLCAxMDcsIAorICAgIDIyMSwgMjMyLCAyMCwgMSwgMTA3LCAyNDQsIDE5NSwgMjAsIDEsIDgyLCAyMjksIDE0MywgMjAsIDEsIDgyLCAyMTYsIDE2LCAKKyAgICAyMCwgMSwgODIsIDIzMSwgMTEyLCAyMCwgMSwgODIsIDIzMywgODgsIDIwLCAxLCA4MiwgMjEzLCAxMjgsIDIwLCAxLCA4MiwgCisgICAgMjMyLCAxMjUsIDIwLCAxLCA4MiwgMjI2LCA4OSwgMjAsIDEsIDgyLCAyMTksIDQ1LCAyMCwgMSwgODIsIDIyMywgMTQ1LCAKKyAgICAyMCwgMSwgODIsIDIyOCwgMywgMjAsIDEsIDgyLCAyMjksIDExNCwgMjAsIDEsIDgyLCAyMjQsIDE0NywgMjAsIDEsIDgyLCAKKyAgICAyMTcsIDYyLCAyMCwgMSwgODIsIDIyOSwgMjIsIDIwLCAxLCA4MiwgMjMzLCAyNDUsIDIwLCAxLCA4MiwgMjExLCAxODcsIAorICAgIDIwLCAxLCA4MiwgMjIxLCAxNzAsIDIwLCAxLCA4MiwgMjI5LCA0NSwgMjAsIDEsIDgyLCAyMjYsIDg2LCAyMCwgMSwgODIsIAorICAgIDIxNiwgMTcsIDIwLCAxLCA4MiwgMjMzLCAyMDIsIDIwLCAxLCA4MiwgMjMyLCAxMzksIDIwLCAxLCA4MiwgMjI4LCA2LCAyMCwgCisgICAgMSwgODIsIDIyOCwgMjU0LCAyMCwgMSwgODIsIDIzMSwgMjIwLCAyMCwgMSwgODIsIDIyOSwgMTUsIDIwLCAxLCA4MiwgMjI4LCAKKyAgICAyNTMsIDIwLCAxLCA4MiwgMjI4LCA1LCAyMCwgMSwgODIsIDIyMiwgMjM3LCAyMCwgMSwgODIsIDIyOCwgMTcxLCAyMCwgMSwgCisgICAgODIsIDIyNSwgMjEwLCAyMCwgMSwgODIsIDIyMiwgMzEsIDIwLCAxLCA4MiwgMjI5LCAzMCwgMjAsIDEsIDgyLCAyMzEsIDEwLCAKKyAgICAyMCwgMSwgODIsIDI0MiwgMjI3LCAyMCwgMSwgODIsIDIyOSwgMTgsIDIwLCAxLCA4MiwgMjI4LCAxODIsIDIwLCAxLCA4MiwgCisgICAgMjMxLCAxNzIsIDIwLCAxLCA4MiwgMjMyLCAxMjEsIDIwLCAxLCA4MiwgMjI5LCA1MCwgMjAsIDEsIDgyLCAyMjksIDEyNywgCisgICAgMjAsIDEsIDgyLCAyMTcsIDg1LCAyMjcsIDI0NCwgMjAsIDEsIDgyLCAyMjAsIDEyNywgMjAsIDEsIDgyLCAyMjQsIDE0MywgCisgICAgMjAsIDEsIDgyLCAyMjksIDE0NywgMjE5LCA1MSwgMjAsIDEsIDgyLCAyMjksIDM4LCAyMjcsIDE2MCwgMjAsIDEsIDgyLCAKKyAgICAyMTEsIDQsIDIwLCAxLCA4MiwgMjQyLCAyMjgsIDIwLCAxLCA4MiwgMjE1LCAxMTcsIDIwLCAxLCA4MiwgMjExLCAxOSwgMjAsIAorICAgIDEsIDgyLCAyMjUsIDE2LCAyMCwgMSwgODIsIDIxNSwgMTA3LCAyMCwgMSwgODIsIDIzNCwgMTU0LCAyMCwgMSwgODIsIDIxOCwgCisgICAgODAsIDIwLCAxLCA4MiwgMjE2LCAyMTksIDIwLCAxLCA4MiwgMjEzLCAxODQsIDIwLCAxLCA4MiwgMjEyLCA2LCAyMCwgMSwgCisgICAgODIsIDIzMywgMTMyLCAyMCwgMSwgODIsIDIyNCwgMTUwLCAyMCwgMSwgODIsIDIxNywgOTYsIDIwLCAxLCA4MiwgMjQyLCAKKyAgICAyNDcsIDIwLCAxLCA4MiwgMjI5LCA1OSwgMjAsIDEsIDgyLCAyMjAsIDQwLCAyMCwgMSwgODIsIDIzMSwgNSwgMjAsIDEsIAorICAgIDgyLCAyMzEsIDExNiwgMjAsIDEsIDgyLCAyMjcsIDExNSwgMjAsIDEsIDgyLCAyMjgsIDEzNiwgMjAsIDEsIDgyLCAyNDMsIAorICAgIDczLCAyMCwgMSwgODIsIDIxNSwgMTA4LCAyMCwgMSwgODIsIDIzMywgMjExLCAyMCwgMSwgODIsIDIxMSwgNjcsIDIwLCAxLCAKKyAgICA4MiwgMjI3LCAxNDksIDI1MCwgMTYsIDIwLCAxLCA4MiwgMjEwLCAyNTAsIDIwLCAxLCA4MiwgMjMxLCAyMiwgMjAsIDEsIAorICAgIDgyLCAyMjksIDEzMiwgMjAsIDEsIDgyLCAyMjUsIDEwMCwgMjAsIDEsIDgyLCAyMTAsIDE5NywgMjAsIDEsIDgyLCAyMzMsIAorICAgIDYsIDIwLCAxLCA4MiwgMjQzLCAyMzMsIDIwLCAxLCA4MiwgMjQzLCA3MiwgMjAsIDEsIDgyLCAyMjksIDgsIDIwLCAxLCA4MiwgCisgICAgMjM0LCAxNTYsIDIwLCAxLCA4MiwgMjMxLCAyMjMsIDIwLCAxLCA4MiwgMjI5LCAyMSwgMjAsIDEsIDgyLCAyNDIsIDIzNCwgCisgICAgMjAsIDEsIDgyLCAyNDQsIDE5NiwgMjAsIDEsIDgyLCAyMjcsIDIzOSwgMjAsIDEsIDgyLCAyMjUsIDE1MywgMjAsIDEsIDgyLCAKKyAgICAyMTEsIDE3LCAyMCwgMSwgODIsIDIyOSwgNDYsIDIwLCAxLCA4MiwgMjI3LCAxNDksIDI1MiwgMjMsIDIwLCAxLCA4MiwgCisgICAgMjI3LCA5NSwgMjAsIDEsIDgyLCAyMjQsIDI0NywgMjAsIDEsIDgyLCAyMzAsIDIyMCwgMjAsIDEsIDgyLCAyNDMsIDIzMSwgCisgICAgMjAsIDEsIDgyLCAyMjksIDIyMCwgMjAsIDEsIDgyLCAyMzAsIDEwMCwgMjAsIDEsIDgyLCAyNDIsIDIzMywgMjAsIDEsIDgyLCAKKyAgICAyNDMsIDIzNSwgNzMsIDIwLCAxLCA4MiwgMjMwLCA0NywgMjAsIDEsIDgyLCAyMjQsIDE0NiwgMjAsIDEsIDgyLCAyMjksIAorICAgIDEwLCAyMCwgMSwgODIsIDIzMywgMTg5LCAyMCwgMSwgODIsIDIyNSwgOTcsIDIwLCAxLCA4MiwgMjI3LCAyNDcsIDIwLCAxLCAKKyAgICA4MiwgMjExLCAxOCwgMjAsIDEsIDgyLCAyMjksIDMxLCAyMCwgMSwgODIsIDIyNiwgOTAsIDIyNSwgMTg3LCAyMCwgMSwgODIsIAorICAgIDI0MywgMjM1LCAyNTEsIDE1LCAyMCwgMSwgODIsIDI0NCwgMzcsIDIwLCAxLCA4MiwgMjI4LCAxNzYsIDIwLCAxLCA4MiwgCisgICAgNjEsIDIwLCAxLCA4MiwgMjE2LCAxMCwgMjAsIDEsIDgyLCA3NiwgMjAsIDEsIDgyLCA3MywgMjAsIDEsIDgyLCAyMzMsIDg2LCAKKyAgICAyMCwgMSwgODIsIDIyNiwgOTAsIDIyNSwgMjMsIDIwLCAxLCA4MiwgMjE3LCAxMDEsIDIwLCAxLCA4MiwgMjE3LCA1MSwgMjAsIAorICAgIDEsIDgyLCAyMjksIDE0NywgMjMwLCAzNCwgMjQwLCAyMzQsIDIwLCAxLCA4MiwgMjIwLCAxNSwgMjAsIDEsIDgyLCAyMTEsIAorICAgIDE0LCAyMCwgMSwgODIsIDIyOCwgMjQ3LCAyMCwgMSwgODIsIDIxMCwgMjAyLCAyMCwgMSwgODIsIDIxMCwgMjI3LCAyMTcsIAorICAgIDI0MCwgMjAsIDEsIDgyLCAyMTAsIDIyNywgMjQ5LCAxNDcsIDIwLCAxLCA4MiwgMjEwLCAxODcsIDIwLCAxLCA4MiwgMjEwLCAKKyAgICAxOTUsIDIwLCAxLCA4MiwgMjM0LCAxNDIsIDIwLCAxLCA4MiwgMjI1LCAxNTEsIDIwLCAxLCA4MiwgMjI4LCAxNzcsIDI0NSwgCisgICAgMTAyLCAyMCwgMSwgODIsIDIyNCwgMTQ0LCAyMCwgMSwgODIsIDIxMSwgMTkyLCAyMCwgMSwgODIsIDI0NCwgMTQ3LCAyMCwgCisgICAgMSwgODIsIDIxMywgMjUwLCAyMCwgMSwgODIsIDIzMiwgOTgsIDIwLCAxLCA4MiwgMjMwLCAyMzAsIDIwLCAxLCA4MiwgMjIzLCAKKyAgICA1MSwgMjAsIDEsIDgyLCAyMjMsIDE3MSwgMjAsIDEsIDgyLCAyMjgsIDI0NiwgMjAsIDEsIDgyLCAyMjksIDc3LCAyMCwgMSwgCisgICAgODIsIDIyMCwgNywgMjAsIDEsIDgyLCAyMTksIDI1MiwgMjAsIDEsIDgyLCAyNDMsIDIzNSwgMjIzLCA4NiwgMjAsIDEsIDgyLCAKKyAgICAxOTcsIDIwLCAxLCA4MiwgMjI1LCAxMDgsIDIwLCAxLCA4MiwgMjMyLCAxMTksIDIwLCAxLCA4MiwgMjM0LCAyOCwgMjAsIDEsIAorICAgIDgyLCAyMzEsIDU4LCAyMCwgMSwgODIsIDE4NCwgMjAsIDEsIDgyLCAyMzEsIDE2OSwgMjAsIDEsIDgyLCAyMTYsIDIyMSwgCisgICAgMjAsIDEsIDgyLCAyMzQsIDkyLCAyMCwgMSwgODIsIDIzMCwgMTUwLCAyMCwgMSwgODIsIDIxNiwgMjQ3LCAyMCwgMSwgODIsIAorICAgIDI0NCwgMTY5LCAyMCwgMSwgODIsIDI0MiwgMjIzLCAyMCwgMSwgMjI1LCAxMzcsIDE3NiwgMjAsIDEsIDIyNSwgMTM3LCA3MCwgCisgICAgMjAsIDEsIDIyNSwgMTM3LCAyMzMsIDIxNywgMjAsIDEsIDIyNSwgMTM3LCAyNDUsIDIwOSwgMjAsIDEsIDIyNSwgMTM3LCAKKyAgICAyMjMsIDEwOCwgMjAsIDEsIDIyNSwgMTM3LCAyMTcsIDg2LCAyMCwgMSwgMjI1LCAxMzcsIDIyNywgMTQ4LCAyMCwgMSwgCisgICAgMjI1LCAxMzcsIDIzMywgMTM1LCAyMCwgMSwgMjI1LCAxMzcsIDIyMiwgMjM5LCAyMCwgMSwgMjI1LCAxMzcsIDIyMywgMjksIAorICAgIDIwLCAxLCAyMjUsIDEzNywgMjMxLCA3OSwgMjAsIDEsIDIyNSwgMTM3LCAyMTcsIDEwMSwgMjAsIDEsIDIyNSwgMTM3LCAKKyAgICAyMjksIDE0NiwgMjAsIDEsIDIyNSwgMTM3LCAyMjgsIDE4MywgMjAsIDEsIDIyNSwgMTM3LCAxOTMsIDIwLCAxLCAyMjUsIAorICAgIDEzNywgMjE4LCA0LCAyMCwgMSwgMjI1LCAxMzcsIDIyMCwgMjcsIDIwLCAxLCAyMjUsIDEzNywgMjE5LCAxOTEsIDIwLCAxLCAKKyAgICAyMjUsIDEzNywgMjIwLCAxMjMsIDIwLCAxLCAyMjUsIDEzNywgMjMzLCAxNTUsIDIwLCAxLCAyMjUsIDEzNywgMjM0LCAxNTYsIAorICAgIDIwLCAxLCAyMjUsIDEzNywgMjI3LCAyMDksIDIwLCAxLCAyMjUsIDEzNywgMjI3LCAyMzcsIDIwLCAxLCAyMjUsIDEzNywgCisgICAgMjI4LCAxNTQsIDIwLCAxLCAyMjUsIDEzNywgMjEwLCAyMjYsIDIwLCAxLCAyMjUsIDEzNywgMjE5LCAyMjUsIDIwLCAxLCAKKyAgICAyMjUsIDEzNywgMTkxLCAyMCwgMSwgMjI1LCAxMzcsIDIyOCwgOSwgMjAsIDEsIDIyNSwgMTM3LCAyMjUsIDE1MSwgMjAsIDEsIAorICAgIDIyNSwgMTM3LCAyMjcsIDI0NiwgMjAsIDEsIDIyNSwgMTM3LCAyMTEsIDE5MiwgMjAsIDEsIDIyNSwgMTM3LCAyMjUsIDIxMSwgCisgICAgMjAsIDEsIDIyNSwgMTM3LCAyMjIsIDE0MCwgMjAsIDEsIDIyNSwgMTM3LCAyMjgsIDIzMywgMjAsIDEsIDIyNSwgMTM3LCAKKyAgICAyMjMsIDUxLCAyMCwgMSwgMjI1LCAxMzcsIDIzNCwgMTY1LCAyMCwgMSwgMjI1LCAxMzcsIDIyOSwgNywgMjAsIDEsIDIyNSwgCisgICAgMTM3LCAyMjksIDU2LCAyMCwgMSwgMjI1LCAxMzcsIDIyMCwgNywgMjAsIDEsIDIyNSwgMTM3LCAyMjQsIDE0NywgMjAsIDEsIAorICAgIDIyNSwgMTM3LCAyNDQsIDM3LCAyMCwgMSwgMjI1LCAxMzcsIDIxMiwgNjUsIDIwLCAxLCAyMjUsIDEzNywgMjMyLCAyNDEsIAorICAgIDIwLCAxLCAyMjUsIDEzNywgMjMyLCAxMTksIDIwLCAxLCAyMjUsIDEzNywgMjM0LCAyOCwgMjAsIDEsIDIyNSwgMTM3LCAKKyAgICAyMzEsIDExNCwgMjAsIDEsIDIyNSwgMTM3LCAyMjMsIDgzLCAyMCwgMSwgMjI1LCAxMzcsIDE4NCwgMjAsIDEsIDIyNSwgCisgICAgMTM3LCAyMzAsIDE2MSwgMjAsIDEsIDIyNSwgMTM3LCAyMzEsIDEyMiwgMjAsIDEsIDIyNSwgMTM3LCAyMTYsIDIzMCwgMjAsIAorICAgIDEsIDIyNSwgMTM3LCAyMzMsIDI1MSwgMjAsIDEsIDIyNSwgMTM3LCAyMjEsIDI1MSwgMjAsIDEsIDIyNSwgMTM3LCAyMTIsIAorICAgIDExNSwgOTUsIDEsIDE5MCwgOTUsIDEsIDI1MiwgMTkxLCA5NSwgMSwgOCwgMTkwLCA5NSwgMSwgMjI1LCA0MiwgOTUsIDEsIAorICAgIDE4NCwgOTUsIDEsIDIzMCwgMjMzLCA5NSwgMSwgMjU0LCAyMywgMTg0LCA5NSwgMSwgMjQ0LCAxOTYsIDk1LCAxLCAyMTQsIAorICAgIDI3LCA5NSwgMSwgMjEzLCAxNzcsIDk1LCAxLCAyMTcsIDEwNSwgOTUsIDEsIDI0OCwgMjIxLCA5NSwgMSwgOCwgMjE1LCAKKyAgICAxNTYsIDk1LCAxLCA4LCAyMTcsIDEwNSwgOTUsIDEsIDIxNSwgMTU2LCA5NSwgMSwgMjQ4LCAxMzUsIDk1LCAxLCAxOTcsIAorICAgIDk1LCAxLCAyMjgsIDIzNywgOTUsIDEsIDgsIDIyOCwgMTEwLCA5NSwgMSwgMjU0LCAyMywgMTk3LCA5NSwgMSwgMjI4LCAKKyAgICAxMTAsIDk1LCAxLCAyMjgsIDk2LCA5NSwgMSwgMjMzLCAxMzUsIDk1LCAxLCAyMzIsIDYxLCA5NSwgMSwgMjMyLCAyNTQsIAorICAgIDk1LCAxLCAyMzIsIDI0MywgOTUsIDEsIDIxNiwgNTYsIDk1LCAxLCAyNDcsIDE1MywgOTUsIDEsIDIxNiwgNDgsIDk1LCAxLCAKKyAgICAyNDcsIDE1MiwgOTUsIDEsIDE3NiwgOTUsIDEsIDI0MywgMTM1LCA5NSwgMSwgOCwgMTc2LCA5NSwgMSwgMjI0LCA4OCwgOTUsIAorICAgIDEsIDIyNCwgNjYsIDk1LCAxLCAyMjksIDc3LCA5NSwgMSwgMjI5LCAyOCwgOTUsIDEsIDI1NCwgMjMsIDIyOSwgNzcsIDk1LCAKKyAgICAxLCAxNjIsIDk1LCAxLCAyMTEsIDE2NSwgOTUsIDEsIDI0MiwgMjQ5LCA5NSwgMSwgMjQyLCAyMjYsIDk1LCAxLCAyMTUsIAorICAgIDE2NSwgOTUsIDEsIDI0NiwgMjYsIDk1LCAxLCAyMjcsIDE2NSwgOTUsIDEsIDIyNywgMTUwLCA5NSwgMSwgMjE1LCAxNzUsIAorICAgIDk1LCAxLCAyNDYsIDMzLCA5NSwgMSwgOCwgMjE1LCAxNzUsIDk1LCAxLCA4LCAyNDYsIDMzLCA5NSwgMSwgMjIzLCAxMDYsIAorICAgIDIxNSwgMTc1LCA5NSwgMSwgMjIwLCAxMDIsIDk1LCAxLCAyMTgsIDIyMywgOTUsIDEsIDIxMCwgODIsIDk1LCAxLCAyMTAsIAorICAgIDE0LCA5NSwgMSwgMjE1LCAxODMsIDk1LCAxLCAyNDYsIDM4LCA5NSwgMSwgOCwgMjE1LCAxODMsIDk1LCAxLCAyMDYsIDk1LCAKKyAgICAxLCAyMTAsIDExNiwgOTUsIDEsIDIxMCwgMTUsIDk1LCAxLCAyMDksIDI0MywgOTUsIDEsIDIwOSwgMjIzLCA5NSwgMSwgCisgICAgMjU0LCAyMywgMjA5LCAyNDMsIDk1LCAxLCAyMDksIDIxNSwgOTUsIDEsIDIwOSwgMjIyLCA5NSwgMSwgMjEyLCA2NSwgOTUsIAorICAgIDEsIDI1NCwgMjA5LCA5NSwgMSwgMjQxLCAxODksIDk1LCAxLCAyMjksIDE5MiwgOTUsIDUsIDI1MywgMjIyLCA5NSwgNSwgCisgICAgMjIzLCAxMDYsIDIxMywgMTMzLCA5NSwgNSwgMjIzLCAxMDYsIDI1MywgMjIyLCA5NSwgMjUsIDUsIDYxLCA5NSwgMjUsIDUsIAorICAgIDI1NSwgNzMsIDk1LCAyNSwgNSwgMjU0LCAyMDUsIDk1LCAyNSwgNSwgMjU0LCAxMjMsIDk1LCAyNSwgNSwgMjU0LCAxMTUsIAorICAgIDk1LCAyNSwgNSwgNzYsIDk1LCAyNSwgNSwgMjI2LCAxODMsIDk1LCAyNSwgNSwgMjExLCAyMjcsIDk1LCAyNSwgNSwgMjEyLCAKKyAgICA5OCwgOTUsIDI1LCA1LCA3NSwgOTUsIDI1LCA1LCAyNDUsIDE1MCwgOTUsIDI1LCA1LCAyNDUsIDEzOCwgOTUsIDI1LCA1LCAKKyAgICAyMjYsIDIzMiwgOTUsIDI1LCA1LCA3MywgOTUsIDI1LCA1LCAyNDAsIDExOSwgOTUsIDI1LCA1LCAyNDAsIDExOCwgOTUsIAorICAgIDI1LCA1LCAyNDAsIDExNywgOTUsIDI1LCA1LCAyMzUsIDE4OSwgOTUsIDI1LCA1LCAyMzYsIDYwLCA5NSwgMjUsIDUsIDIzNiwgCisgICAgMzMsIDk1LCAyNSwgNSwgMjM1LCAxNTYsIDk1LCAyNSwgNSwgMjM1LCAyMzEsIDk1LCAyNSwgNSwgNzAsIDk1LCAyNSwgNSwgCisgICAgMjE0LCAyMjksIDk1LCAyNSwgNSwgMjE0LCAyMjgsIDk1LCAyNSwgNSwgMjE0LCAyMjcsIDk1LCAyNSwgNSwgMjE0LCAxMTgsIAorICAgIDk1LCAyNSwgNSwgMjE0LCAyMTEsIDk1LCAyNSwgNSwgMjE0LCAxNzgsIDk1LCAyNSwgNSwgMjExLCAxMTcsIDk1LCAyNSwgNSwgCisgICAgMjExLCA4LCA5NSwgMjUsIDUsIDI1NCwgMjQzLCA5NSwgMjUsIDUsIDI1NCwgMjM5LCA5NSwgMjUsIDUsIDI0NSwgODYsIDk1LCAKKyAgICAyNSwgNSwgMjIyLCAxODMsIDI0NSwgODYsIDk1LCAyNSwgNSwgMjQ1LCA5MiwgOTUsIDI1LCA1LCAyMjIsIDE4MywgMjQ1LCAKKyAgICA5MiwgOTUsIDI1LCA1LCAyNTQsIDIwMSwgOTUsIDI1LCA1LCAyNDUsIDE5NSwgOTUsIDI1LCA1LCAyNTMsIDE5MiwgOTUsIAorICAgIDI1LCA1LCAyMjYsIDEzNCwgOTUsIDI1LCA1LCAyMzAsIDI1LCA5NSwgMjUsIDUsIDIyOSwgNzksIDk1LCAxMzgsIDIyMiwgCisgICAgMjUxLCA5NSwgMTM4LCAyMTYsIDE0LCAyMjIsIDI1MSwgOTUsIDEzOCwgNDgsIDk1LCAxMzgsIDUxLCA5NSwgMSwgMjE2LCAKKyAgICAyOCwgOTUsIDEsIDIxNiwgMjcsIDk1LCAxLCAyMTYsIDI2LCA5NSwgMSwgMjE2LCAyNSwgOTUsIDEsIDIxNiwgMjQsIDk1LCAKKyAgICAxLCAyMTYsIDIzLCA5NSwgMSwgMjE2LCAyMiwgOTUsIDEsIDIyMywgMTA2LCAyMTYsIDI5LCA5NSwgMSwgMjIzLCAxMDYsIAorICAgIDIxNiwgMjgsIDk1LCAxLCAyMjMsIDEwNiwgMjE2LCAyNiwgOTUsIDEsIDIyMywgMTA2LCAyMTYsIDI1LCA5NSwgMSwgMjIzLCAKKyAgICAxMDYsIDIxNiwgMjQsIDk1LCAxLCAyMjMsIDEwNiwgMjE2LCAyMiwgNTYsIDEsIDI1NCwgMjMsIDc1LCAxNDEsIDEsIDI1NCwgCisgICAgMjMsIDIxMSwgNDcsIDQ5LCAyOCwgMTYsIDIyNCwgMTU0LCA0OSwgMjgsIDE2LCAyNDgsIDE1OCwgNDksIDI4LCAxNiwgMjI1LCAKKyAgICAxNzUsIDQ5LCAyOCwgMTYsIDIyNiwgMTEzLCAyNDUsIDE3OCwgNDksIDI4LCAxNiwgMjI2LCAxMTMsIDI0NywgMjAxLCA0OSwgCisgICAgMjgsIDE2LCAyMTQsIDE2LCAyNDUsIDE3OCwgNDksIDI4LCAxNiwgMjE0LCAxNiwgMjQ3LCAyMDEsIDQ5LCAyOCwgMTYsIAorICAgIDIzNCwgMTk3LCA0OSwgMjgsIDE2LCAyMTcsIDE2OSwgNDksIDI4LCAxNiwgMjI2LCA5LCA0OSwgMjgsIDE2LCAyMTAsIDIxNywgCisgICAgNDksIDI4LCAxNiwgMjEwLCAyMTgsIDI0NywgMjAxLCA0OSwgMjgsIDE2LCAyMzMsIDIzNCwgNDksIDI4LCAxNiwgMjU0LCAKKyAgICA2OCwgMjQ1LCAxNzgsIDQ5LCAyOCwgMTYsIDI0NSwgMjYsIDI0NSwgMTc4LCA0OSwgMjgsIDE2LCAyMTcsIDIsIDQ5LCAyOCwgCisgICAgMTYsIDIzNCwgMTYxLCA0OSwgMjgsIDE2LCAyNTQsIDU4LCA0OSwgMjgsIDE2LCAyNTQsIDU5LCAyNDcsIDIwMSwgNDksIDI4LCAKKyAgICAxNiwgMjE3LCAxNzUsIDQ5LCAyOCwgMTYsIDIxNiwgMTU5LCA0OSwgMjgsIDE2LCAyMjYsIDIwNiwgMjU0LCAyMSwgNDksIAorICAgIDI4LCAxNiwgMjQyLCAxNTksIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIyNCwgMTUzLCA0OSwgMjgsIDE2LCAyNTAsIDE0OSwgCisgICAgNDksIDI4LCAxNiwgMjE0LCA2LCA0OSwgMjgsIDE2LCAyMzUsIDE2NCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjM0LCAxNjMsIAorICAgIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIzNCwgMTYyLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMjEsIDIxMywgNDksIDI4LCAxNiwgCisgICAgMjI2LCAwLCA0OSwgMjgsIDE2LCAyMTgsIDE0NiwgMjU0LCA2MSwgNDksIDI4LCAxNiwgMjI2LCAxMTIsIDI1NCwgMjEsIDQ5LCAKKyAgICAyOCwgMTYsIDIxNCwgMTUsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDI1NCwgNjIsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDI1NCwgCisgICAgNTYsIDQ5LCAyOCwgMTYsIDIzNCwgMzcsIDQ5LCAyOCwgMTYsIDIyMywgNDYsIDQ5LCAyOCwgMTYsIDIyNSwgMTA2LCAyNTQsIAorICAgIDIxLCA0OSwgMjgsIDE2LCAyMTYsIDgzLCA0OSwgMjgsIDE2LCAyNTQsIDEyMSwgNDksIDI4LCAxNiwgMjIxLCAxNTksIDQ5LCAKKyAgICAyOCwgMTYsIDIxNywgMTc4LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMTcsIDE3OCwgMjMxLCA0MCwgMjE4LCAxNDQsIDQ5LCAKKyAgICAyOCwgMTYsIDIyNiwgMTA3LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMTYsIDE5MCwgNDksIDI4LCAxNiwgMjMzLCAyNywgNDksIAorICAgIDI4LCAxNiwgMjQ2LCA0MSwgNDksIDI4LCAxNiwgMjE1LCAyMjcsIDQ5LCAyOCwgMTYsIDIxNiwgMjMyLCA0OSwgMjgsIDE2LCAKKyAgICAyMzMsIDIzNywgNDksIDI4LCAxNiwgMjU0LCA2OCwgMjQ1LCAyNiwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIAorICAgIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIzNiwgMTIsIDQ5LCAyOCwgMTYsIDIxNSwgMTk5LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAKKyAgICAyMzQsIDIwMCwgMjE1LCAxOTgsIDQ5LCAyOCwgMTYsIDIyNSwgMjAwLCA0OSwgMjgsIDE2LCAyMjQsIDE1OCwgNDksIDI4LCAKKyAgICAxNiwgMjM0LCAxMSwgNDksIDI4LCAxNiwgMjUwLCA4MCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjIzLCAxNDYsIDQ5LCAyOCwgCisgICAgMTYsIDIyNiwgMTIsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIyNiwgMTAsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDI0MCwgMTA5LCAKKyAgICA0OSwgMjgsIDE2LCAyMjksIDIwMywgNDksIDI4LCAxNiwgMjI1LCAxNTYsIDQ5LCAyOCwgMTYsIDIzNCwgMTIsIDI1NCwgCisgICAgMTQ5LCA0OSwgMjgsIDE2LCAyMTUsIDE5OSwgMjU0LCAxNDksIDQ5LCAyOCwgMTYsIDIxOCwgMTIzLCA0OSwgMjgsIDE2LCAKKyAgICAyNDIsIDEyMywgNDksIDI4LCAxNiwgMjM1LCAxNjQsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIyNiwgMjA2LCAyMjksIDk1LCAKKyAgICA0OSwgMjgsIDE2LCAyMjYsIDExMywgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjI1LCAxNTUsIDQ5LCAyOCwgMTYsIDIzMywgCisgICAgMjU0LCA0OSwgMjgsIDE2LCAyMjUsIDE1NCwgNDksIDI4LCAxNiwgMjMzLCAyMzYsIDQ5LCAyOCwgMTYsIDIyNSwgMjAxLCAKKyAgICAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMzQsIDE2MiwgMjI5LCA5NiwgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjM0LCAxNjMsIAorICAgIDIyOSwgOTYsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIDIxMCwgMjE1LCA0OSwgMjgsIDE2LCAyNTQsIDU5LCAyMjksIDk1LCA0OSwgCisgICAgMjgsIDE2LCAyNTQsIDYwLCAyMTcsIDE3NiwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjEwLCAyMTYsIDQ5LCAyOCwgMTYsIAorICAgIDIzMywgMjM1LCA0OSwgMjgsIDE2LCAyNDUsIDE3MywgNDksIDI4LCAxNiwgMjUwLCAxNTAsIDQ5LCAyOCwgMTYsIDIzMCwgCisgICAgMTk4LCAyMzUsIDE2MywgNDksIDI4LCAxNiwgMjE0LCAxNiwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjI1LCAxMDYsIDIyOSwgCisgICAgOTUsIDQ5LCAyOCwgMTYsIDIyNCwgMTU5LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjYsIDIwMywgNDksIDI4LCAxNiwgMjU0LCAKKyAgICA4NCwgNDksIDI4LCAxNiwgMjMyLCA1OCwgNDksIDI4LCAxNiwgMjI2LCAxMCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjI2LCAKKyAgICAxMiwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjQ1LCA2MCwgMjI2LCAxMSwgNDksIDI4LCAxNiwgMjMzLCAxNTMsIDQ5LCAyOCwgCisgICAgMTYsIDI1NCwgODUsIDQ5LCAyOCwgMTYsIDIxNSwgMTk5LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyNDUsIDE3NiwgNDksIDI4LCAKKyAgICAxNiwgMjE3LCAxNzgsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIxNywgMTcwLCA0OSwgMjgsIDE2LCAyNTAsIDgwLCAyMjksIAorICAgIDk1LCA0OSwgMjgsIDE2LCAyNDUsIDEwNiwgNDksIDI4LCAxNiwgMjIxLCAxNjAsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIxMSwgCisgICAgMTUxLCAyMzQsIDM3LCA0OSwgMjgsIDE2LCAyMTUsIDE5NiwgNDksIDI4LCAxNiwgMjI0LCAxNjAsIDQ5LCAyOCwgMTYsIAorICAgIDIxNSwgMjAwLCA0OSwgMjgsIDE2LCAyMTUsIDE5NywgNDksIDI4LCAxNiwgMjI0LCAxNTcsIDQ5LCAyOCwgMTYsIDIxNSwgCisgICAgMTk1LCA0OSwgMjgsIDE2LCAyMjQsIDE1NiwgNDksIDI4LCAxNiwgMjQyLCAxNTgsIDQ5LCAyOCwgMTYsIDI1NCwgMTQsIDQ5LCAKKyAgICAyOCwgMTYsIDI0NSwgNjAsIDI1NCwgMTQsIDQ5LCAyOCwgMTYsIDIyNiwgMTA3LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMTYsIAorICAgIDE4OSwgMjQ1LCA2OSwgNDksIDI4LCAxNiwgMjE2LCAxODksIDI0NSwgMjUsIDQ5LCAyOCwgMTYsIDIxNiwgMTkxLCAyNTQsIAorICAgIDYzLCA0OSwgMjgsIDE2LCAyMTYsIDE4NCwgMjM0LCAyNDcsIDI1NCwgNTUsIDQ5LCAyOCwgMTYsIDIzNCwgMTk5LCA0OSwgCisgICAgMjgsIDE2LCAyNDUsIDEzOSwgNDksIDI4LCAxNiwgMjExLCAxMSwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIDIxMSwgMTEsIAorICAgIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIDIxOCwgMTQ1LCA0OSwgMjgsIDE2LCAyMzQsIDM4LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAKKyAgICAyNDcsIDIwMiwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjMzLCAyMzgsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIzMywgMjM4LCAKKyAgICAyNTQsIDE0OSwgNDksIDI4LCAxNiwgMjMzLCAyMzgsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDI1NCwgNjIsIDIyOSwgOTUsIAorICAgIDQ5LCAyOCwgMTYsIDI1NCwgNjQsIDQ5LCAyOCwgMTYsIDI0NywgMjAxLCA0OSwgMjgsIDE2LCAyMTUsIDIxMCwgNDksIDI4LCAKKyAgICAxNiwgMjE2LCAyMjQsIDQ5LCAyOCwgMTYsIDIzNCwgMiwgNDksIDI4LCAxNiwgMjMzLCAzMiwgMjQ1LCAxMzQsIDI1MCwgNzEsIAorICAgIDQ5LCAyOCwgMTYsIDIzMywgMzIsIDI0NiwgNDIsIDI1MCwgNzIsIDQ5LCAyOCwgMTYsIDIzMywgMzIsIDIxNSwgMjEyLCAKKyAgICAyNTAsIDcyLCA0OSwgMjgsIDE2LCAyMzMsIDMyLCAyMTYsIDIzNCwgMjUwLCA3MiwgNDksIDI4LCAxNiwgMjMzLCAzMiwgCisgICAgMjM2LCA3LCAyNTAsIDcxLCA0OSwgMjgsIDE2LCAyNDIsIDE1OSwgMjI5LCA5NiwgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjQyLCAKKyAgICAxNTksIDIyNiwgMSwgMjU0LCAxMCwgNDksIDI4LCAxNiwgMjQyLCAxNTksIDIyNiwgMSwgMjQ4LCAyOSwgNDksIDI4LCAxNiwgCisgICAgMjQ3LCAyMjUsIDQ5LCAyOCwgMTYsIDI0NywgMjI2LCAyMjYsIDEsIDI1NCwgMTEsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAKKyAgICAyNDcsIDIyNiwgMjI2LCAxLCAyNTQsIDExLCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyNDcsIDIyNiwgMjI2LCAxLCAyNDgsIAorICAgIDI5LCA0OSwgMjgsIDE2LCAyMTUsIDIxNiwgNDksIDI4LCAxNiwgMjU0LCAxNSwgNDksIDI4LCAxNiwgMjM2LCAxNCwgNDksIAorICAgIDI4LCAxNiwgMjQ3LCAyNDYsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyMjUsIDAsIDI1NCwgMTYsIDQ5LCAyOCwgMTYsIDI1NCwgCisgICAgMjExLCAyNTQsIDEzLCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjU0LCAxNiwgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDIzMSwgCisgICAgMzQsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyMzEsIDQ1LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjQyLCAxNjAsIDQ5LCAKKyAgICAyOCwgMTYsIDI1NCwgMjExLCAyNDIsIDE1NywgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDIyNSwgMCwgMjQyLCAxNjAsIDQ5LCAKKyAgICAyOCwgMTYsIDIzMSwgMTUxLCAyMjQsIDE2NSwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyNTQsIDE1MSwgCisgICAgMjI0LCAxNjUsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjQ4LCAyOCwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIAorICAgIDIzMSwgMTUxLCAyNTQsIDE1MSwgMjQ4LCAyOCwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMTUsIDIwNSwgCisgICAgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMTUsIDIxNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNiwgMjI4LCAKKyAgICAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNiwgMjI4LCAyMzMsIDM1LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgCisgICAgMjMxLCAxNTEsIDIzMywgMzUsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjI1LCAzOSwgMjQwLCAxMDcsIDQ5LCAKKyAgICAyOCwgMTYsIDIzNSwgMTY5LCAyMTYsIDI1MSwgMjQwLCAxMDgsIDQ5LCAyOCwgMTYsIDI1NCwgNjAsIDIxNiwgMjUxLCAyNDAsIAorICAgIDEwOCwgNDksIDI4LCAxNiwgMjQ0LCAxNzIsIDIxNiwgMjI1LCA0OSwgMjgsIDE2LCAyNDQsIDE3MiwgMjMwLCAxNDMsIDQ5LCAKKyAgICAyOCwgMTYsIDI0NCwgMTcyLCAyNDcsIDIzMCwgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNCwgMTAsIDI0MCwgMTA3LCA0OSwgCisgICAgMjgsIDE2LCAyMzEsIDE1MSwgMjI0LCAxNjQsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjI1LCAzOSwgMjE2LCAKKyAgICAyMjgsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyNDIsIDE1NSwgMjMwLCAyNiwgMjU0LCA2MywgNDksIDI4LCAxNiwgMjQyLCAKKyAgICAxNTUsIDIzMCwgMjYsIDI0NywgMjAwLCA0OSwgMjgsIDE2LCAyNDUsIDE0OCwgMjM0LCAyNDcsIDI0MywgMjM2LCAyMTMsIAorICAgIDEyNCwgNDksIDI4LCAxNiwgMjM2LCAxMywgNDksIDI4LCAxNiwgMjM2LCAxMSwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI1NCwgCisgICAgMjIsIDI0OCwgMjcsIDI0MCwgMTA2LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDE5MCwgNDksIDI4LCAxNiwgCisgICAgMjQzLCAyMzYsIDI0NywgMjQ0LCAyMjksIDIwMywgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDIyOSwgMTk4LCAyNDAsIDEwNywgCisgICAgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NywgMjQ0LCAyNDgsIDMsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyMTksIDEwMiwgCisgICAgMjQ3LCAyNDMsIDI0OCwgMywgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NywgMjQ0LCAyMzQsIDE4MiwgNDksIDI4LCAxNiwgCisgICAgMjQzLCAyMzYsIDI0NywgMjQ0LCAyMTAsIDIzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIyOCwgMjM0LCAKKyAgICAyMzQsIDE5NiwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NywgMjQ0LCAyMjgsIDIzNCwgMjU0LCA5NiwgNDksIDI4LCAxNiwgCisgICAgMjQzLCAyMzYsIDIzMSwgMTkxLCAyNTAsIDczLCAyNDcsIDIzMCwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDIzMSwgMTkxLCAKKyAgICAyNTAsIDczLCAyMzAsIDE0MywgNDksIDI4LCAxNiwgMjQ0LCAxMjIsIDIxOSwgMTAyLCAyNTAsIDczLCAyMTQsIDksIDQ5LCAKKyAgICAyOCwgMTYsIDI0MywgMjM2LCAyMTksIDEwMiwgMjUwLCA3MywgMjE3LCAxNzksIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyMjksIAorICAgIDk3LCA0OSwgMjgsIDE2LCAyNTAsIDc0LCAyMDksIDI0OSwgNDksIDI4LCAxNiwgMjUwLCA3NCwgMjM0LCAzNiwgNDksIDI4LCAKKyAgICAxNiwgMjUwLCA3NCwgMjE5LCA5LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQwLCAxNTQsIDIxMSwgMTAsIDIxNiwgMjI5LCAKKyAgICA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ1LCAxNDksIDI1NCwgODYsIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIDIxNSwgMjA2LCAKKyAgICA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjE1LCAyMDYsIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyMTYsIDIyOSwgNDksIDI4LCAKKyAgICAxNiwgMjQ3LCAyMzgsIDI1NCwgNjUsIDI0NiwgNDIsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjMwLCAxNDEsIAorICAgIDIxNiwgMjMzLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjQ3LCAyMzgsIDI0NywgMjIyLCAyNDUsIDM2LCAyNDcsIDEzOSwgCisgICAgNDksIDI4LCAxNiwgMjQ3LCAyMzgsIDIxNSwgMjE0LCAyMjYsIDIxMSwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIAorICAgIDI1NCwgNjUsIDI0NiwgNDIsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyMzAsIDE0MSwgMjE2LCAyMzMsIDI0NywgCisgICAgMTM5LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyNDcsIDIyMiwgMjQ1LCAzNiwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgCisgICAgMTAsIDIxNSwgMjE0LCAyMjYsIDIxMSwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDI0MywgNDksIDI0NywgMjM3LCA0OSwgMjgsIAorICAgIDE2LCAyNDMsIDQ5LCAyMTEsIDksIDQ5LCAyOCwgMTYsIDI0NywgMjQ1LCAyNTQsIDY1LCAyMzAsIDE5OSwgNDksIDI4LCAxNiwgCisgICAgMjQ3LCAyNDUsIDI1NCwgNjUsIDIzMSwgNzMsIDQ5LCAyOCwgMTYsIDI0NywgMjQ1LCAyNDcsIDIwMSwgNDksIDI4LCAxNiwgCisgICAgMjQ3LCAyNDUsIDIxNiwgMTgyLCA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjE2LCAxODIsIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAKKyAgICAyMTYsIDE4MywgMjQ3LCAxODYsIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAyMTYsIDE4MywgMjE1LCAyMDcsIDQ5LCAyOCwgMTYsIAorICAgIDIxOSwgMTYzLCAyMTYsIDE4MywgMjE2LCAyMjIsIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAyNTMsIDI0NCwgNDksIDI4LCAxNiwgCisgICAgMjE5LCAxNjMsIDI1MywgMjQ1LCAyNDcsIDE4NiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDI1MywgMjQ1LCAyMTUsIDIwNywgCisgICAgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDI1MywgMjQ1LCAyMTYsIDIyMiwgNDksIDI4LCAxNiwgMjQ3LCAyMjMsIDI0MywgMzAsIAorICAgIDQ5LCAyOCwgMTYsIDI0NywgMjI5LCAyMjYsIDEzNCwgNDksIDI4LCAxNiwgMjE4LCAxMzcsIDQ5LCAyOCwgMTYsIDI1NCwgNywgCisgICAgMTkwLCA0OSwgMjgsIDE2LCAyNTQsIDcsIDIxMywgMTI0LCA0OSwgMjgsIDE2LCAyNTQsIDcsIDI0MywgMTM1LCA0OSwgMjgsIAorICAgIDE2LCAyNTQsIDcsIDI0OCwgMywgNDksIDI4LCAxNiwgMjU0LCA3LCAyMzQsIDE4MiwgNDksIDI4LCAxNiwgMjU0LCA3LCAKKyAgICAyMTAsIDIzLCA0OSwgMjgsIDE2LCAyNTQsIDcsIDIyOCwgMjMzLCA0OSwgMjgsIDE2LCAyMzQsIDE2MiwgMjI5LCA5NiwgCisgICAgMjMxLCA0NCwgNDksIDI4LCAxNiwgMjM0LCAxNjMsIDIyOSwgOTYsIDIzMSwgNDQsIDQ5LCAyOCwgMTYsIDIzNCwgMTYyLCAKKyAgICAyMjksIDk2LCAyMzQsIDE5NiwgNDksIDI4LCAxNiwgMjM0LCAxNjMsIDIyOSwgOTYsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAKKyAgICAyMzQsIDM4LCAyMzQsIDE5NiwgNDksIDI4LCAxNiwgMjQyLCAxNTksIDIyOSwgOTYsIDIzNCwgMTk2LCAyOCwgMTYsIDIxOSwgCisgICAgMTU1LCAyNTIsIDEzNSwgMjgsIDE2LCA1MiwgMjUyLCAxMzUsIDI4LCAxNiwgNDAsIDI1MiwgMTM1LCAyOCwgMTYsIDIyMywgCisgICAgNTAsIDQwLCAyNTIsIDEzNSwgMjgsIDE2LCAyNDgsIDE1NSwgMjUyLCAxMzUsIDI4LCAxNiwgMjE5LCAyNTEsIDI1MiwgMTM1LCAKKyAgICAyOCwgMTYsIDQzLCAyMjMsIDc3LCA1MCwgMjgsIDE2LCA0NCwgMjIzLCA3NywgNTAsIDI4LCAxNiwgMjIzLCA3NywgMjQ3LCAKKyAgICAxMTgsIDI4LCAxNiwgMjQ4LCAxOTYsIDIyMSwgMTYzLCAyOCwgMTYsIDI0OCwgMjIyLCAyNTAsIDI0OSwgMjgsIDE2LCAyMjEsIAorICAgIDE2MywgMjgsIDE2LCAyNDksIDIzNCwgMjgsIDE2LCAyMjMsIDc1LCAyNDQsIDExMSwgMjgsIDE2LCAyMjMsIDc1LCAyNDQsIAorICAgIDExMCwgMjgsIDE2LCAyMjMsIDc1LCAyNDQsIDEwOSwgMjgsIDE2LCAyNDQsIDEzMSwgMjgsIDE2LCAyNDQsIDEzMiwgNTEsIAorICAgIDI4LCAxNiwgMjUxLCAxNDgsIDc4LCAyOCwgMTYsIDI1MSwgMjQsIDI4LCAxNiwgMjUxLCAxNTksIDI4LCAxNiwgMTI3LCAyOCwgCisgICAgMTYsIDIyNiwgMTkzLCAyMTgsIDE2MywgMjgsIDE2LCAyMTUsIDU3LCAyMTgsIDE2MywgMjgsIDE2LCAyMTYsIDE0MiwgMjE4LCAKKyAgICAxNjMsIDI4LCAxNiwgMjQ0LCAxMCwgMjE4LCAxNjMsIDI4LCAxNiwgMjQ0LCA4MCwgMjE4LCAxNjMsIDI4LCAxNiwgMjE5LCAKKyAgICAxMjQsIDIxOCwgMTYzLCAyOCwgMTYsIDIxOSwgMTIyLCAyNDMsIDI1MCwgMjgsIDE2LCAyNDQsIDgsIDI0MywgMjUwLCAyOCwgCisgICAgMTYsIDI0MywgMjAzLCAyNTAsIDE0LCAyOCwgMTYsIDI0MywgMjAzLCAyNTAsIDE1LCAyMjYsIDEzNiwgMjU0LCAxNDIsIDI4LCAKKyAgICAxNiwgMjQzLCAyMDMsIDI1MCwgMTUsIDIyNiwgMTM2LCAyNTIsIDEyMiwgMjgsIDE2LCAyNTEsIDY3LCAyNTAsIDE0LCAyOCwgCisgICAgMTYsIDI0NSwgNywgMjUwLCAxNCwgMjgsIDE2LCAyNDUsIDcsIDI1MCwgMTUsIDIyNiwgMTM2LCAyNTQsIDE0MiwgMjgsIDE2LCAKKyAgICAyNDUsIDcsIDI1MCwgMTUsIDIyNiwgMTM2LCAyNTIsIDEyMiwgMjgsIDE2LCAyNDYsIDgzLCAyNTAsIDEzLCAyOCwgMTYsIAorICAgIDI0NiwgODMsIDI1MCwgMTIsIDI4LCAxNiwgMjMwLCA4NSwgMjMxLCA5MCwgMjIzLCA2MSwgMjgsIDE2LCA1MiwgMjIwLCA3NSwgCisgICAgMjgsIDE2LCA1MiwgMjQ0LCA2NSwgMjgsIDE2LCAyNDQsIDY2LCAyMTQsIDE2MywgMjgsIDE2LCAyNDQsIDY2LCAyNDYsIAorICAgIDEwNiwgMjgsIDE2LCAyMjksIDE4OCwgMjE0LCAxNjMsIDI4LCAxNiwgMjI5LCAxODgsIDI0NiwgMTA2LCAyOCwgMTYsIDIyMCwgCisgICAgNzYsIDIxNCwgMTYzLCAyOCwgMTYsIDIyMCwgNzYsIDI0NiwgMTA2LCAyOCwgMTYsIDIyNCwgMjIsIDEzOCwgMjIwLCA3NSwgCisgICAgMjgsIDE2LCAyMjQsIDIyLCAxMzgsIDI0NCwgNjUsIDI4LCAxNiwgMjQ5LCAyMTYsIDIxNiwgODcsIDI4LCAxNiwgMjQ5LCAKKyAgICA4NSwgMjE2LCA4NywgMjgsIDE2LCAyMjYsIDEzNiwgMjU0LCAxNDIsIDI4LCAxNiwgMjI2LCAxMzYsIDI1MiwgMTIyLCAyOCwgCisgICAgMTYsIDIyNCwgNCwgMjU0LCAxNDIsIDI4LCAxNiwgMjI0LCA0LCAyNTIsIDEyMiwgMjgsIDE2LCAyMzAsIDg4LCAyMjMsIDYxLCAKKyAgICAyOCwgMTYsIDIxMSwgMjUxLCAyMjMsIDYxLCAyOCwgMTYsIDE2MywgMjIzLCA2MSwgMjgsIDE2LCAyMjQsIDIyLCAyMjMsIAorICAgIDYxLCAyOCwgMTYsIDI0NSwgMTg5LCAyMjMsIDYxLCAyOCwgMTYsIDIxOSwgMTE4LCAyMjMsIDYxLCAyOCwgMTYsIDIxNiwgCisgICAgMTYwLCAyMjMsIDYxLCAyOCwgMTYsIDIxOSwgMTEwLCAyMjMsIDYxLCAyOCwgMTYsIDEyMywgMjQwLCAyMTEsIDIxNSwgNzEsIAorICAgIDIyMywgNjEsIDI4LCAxNiwgMjExLCAxNzksIDIyOCwgNDMsIDI4LCAxNiwgOTYsIDIyOCwgNDMsIDI4LCAxNiwgMjUwLCAzNiwgCisgICAgMjExLCAxNzksIDIyOCwgNDMsIDI4LCAxNiwgNDIsIDIyOCwgNDQsIDIxMSwgMjUzLCAyOCwgMTYsIDQyLCAyMjgsIDQ0LCAKKyAgICAyNTEsIDIyMSwgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgMTIwLCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNiwgCisgICAgMjI4LCA0NCwgMTIwLCAyNTEsIDIyMSwgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgNDMsIDIxMSwgMjUzLCAyOCwgMTYsIAorICAgIDIxNSwgMjI2LCAyMjgsIDQ0LCA0MywgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDQ0LCAyMTEsIDI1MywgCisgICAgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgNDQsIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCAxMjQsIAorICAgIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCAxMjQsIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAKKyAgICAyMjgsIDQ0LCAxMjAsIDQ0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgMTIwLCA0NCwgMjUxLCAyMjEsIAorICAgIDI4LCAxNiwgMjMwLCAxMjksIDIyOCwgNDQsIDIxMSwgMjUzLCAyOCwgMTYsIDIzMCwgMTI5LCAyMjgsIDQ0LCAyNTEsIDIyMSwgCisgICAgMjgsIDE2LCAyMTUsIDIyMywgMjI4LCA0NCwgMTI0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyMywgMjI4LCA0NCwgMTI0LCAKKyAgICAyNTEsIDIyMSwgMjgsIDE2LCAyMjYsIDQsIDIyOCwgNDMsIDI4LCAxNiwgMjEzLCAxMzIsIDIyOCwgNDMsIDI4LCAxNiwgCisgICAgMjI4LCA0NCwgMjUxLCAyMjEsIDI4LCAxNiwgMjI3LCAyMDMsIDIyOCwgNDMsIDI4LCAxNiwgMjQ5LCAyNDEsIDIyOCwgNDQsIAorICAgIDIxMSwgMjUzLCAyOCwgMTYsIDI0OSwgMjQxLCAyMjgsIDQ0LCAyNTEsIDIyMSwgMjgsIDE2LCAyNTEsIDE0NiwgMjgsIDE2LCAKKyAgICAyMTEsIDI1MSwgMjI4LCA0NywgMjgsIDE2LCAxNjMsIDIyOCwgNDcsIDI4LCAxNiwgMjI0LCAyMiwgMjI4LCA0NywgMjgsIAorICAgIDE2LCAyNDUsIDE4OSwgMjI4LCA0NywgMjgsIDE2LCAyMTksIDExOCwgMjI4LCA0NywgMjgsIDE2LCAyMTYsIDE2MCwgMjI4LCAKKyAgICA0NywgMjgsIDE2LCAyMTksIDExMCwgMjI4LCA0NywgMjgsIDE2LCAxMjMsIDI0MCwgMjExLCAyMTUsIDcxLCAyMjgsIDQ3LCAKKyAgICAyOCwgMTYsIDM4LCAyMTgsIDEzOSwgMjgsIDE2LCAzOCwgMjE4LCAyNDAsIDIxOCwgMTM5LCAyOCwgMTYsIDM4LCAyMTUsIAorICAgIDIzNCwgMjgsIDE2LCAzOCwgMjE1LCAyMzMsIDI4LCAxNiwgMzgsIDIxNSwgMjMyLCAyOCwgMTYsIDI0NCwgMTAxLCAyMTUsIAorICAgIDIzNCwgMjgsIDE2LCAyNDQsIDEwMSwgMjE1LCAyMzMsIDI4LCAxNiwgMjQ0LCAxMDEsIDIxNSwgMjMyLCAyOCwgMTYsIDM4LCAKKyAgICAyNTMsIDE4OSwgMjQ3LCAxMjAsIDI4LCAxNiwgMzgsIDI0NCwgNzIsIDI4LCAxNiwgMzgsIDI0NCwgNzEsIDI4LCAxNiwgMzgsIAorICAgIDI0NCwgNzAsIDI4LCAxNiwgMzgsIDI0NCwgNjksIDI4LCAxNiwgMzgsIDI0NCwgNjgsIDI4LCAxNiwgMjUyLCA1OCwgMjUyLCAKKyAgICA3NCwgMjgsIDE2LCAyNDUsIDE0MywgMjUyLCA3NCwgMjgsIDE2LCAyNTIsIDU4LCAyMTYsIDExMSwgMjgsIDE2LCAyNDUsIAorICAgIDE0MywgMjE2LCAxMTEsIDI4LCAxNiwgMjUyLCA1OCwgMjE5LCA4MCwgMjgsIDE2LCAyNDUsIDE0MywgMjE5LCA4MCwgMjgsIAorICAgIDE2LCAyNTIsIDU4LCAyMjUsIDExNSwgMjgsIDE2LCAyNDUsIDE0MywgMjI1LCAxMTUsIDI4LCAxNiwgMzgsIDI1NSwgMTQsIAorICAgIDI4LCAxNiwgMzgsIDIxOCwgMTY1LCAyOCwgMTYsIDM4LCAyMTYsIDIzOCwgMjgsIDE2LCAzOCwgMjE4LCAxNjYsIDI4LCAxNiwgCisgICAgMzgsIDIzMSwgMTYyLCAyOCwgMTYsIDM4LCAyMzEsIDE2MSwgMjgsIDE2LCAzOCwgMjU1LCAxMywgMjgsIDE2LCAzOCwgMjMyLCAKKyAgICAxMTIsIDI4LCAxNiwgMjUzLCAyNTQsIDIxNCwgMTYzLCAyOCwgMTYsIDI1MywgMjU0LCAyNDYsIDEwNiwgMjgsIDE2LCAzOCwgCisgICAgMjQ3LCAxMzUsIDI4LCAxNiwgMzgsIDIyMiwgMjMxLCAyOCwgMTYsIDM4LCAyNDQsIDU4LCAyOCwgMTYsIDM4LCAyMTksIDc2LCAKKyAgICAyOCwgMTYsIDM4LCAyNTIsIDM4LCAyOCwgMTYsIDM4LCA1MiwgMjE2LCAxOSwgMjgsIDE2LCAzOCwgMjE1LCAyMTEsIDIxNiwgCisgICAgMTksIDI4LCAxNiwgMjIyLCAyMzUsIDI4LCAxNiwgMjE4LCA3NSwgMjgsIDE2LCAyMTAsIDE1OSwgMjgsIDE2LCAyMjUsIAorICAgIDEwNywgMjgsIDE2LCAyMzEsIDI1LCAyOCwgMTYsIDI0NCwgMTcsIDI4LCAxNiwgMjQ5LCAxMzgsIDI4LCAxNiwgMjQ4LCA3OCwgCisgICAgMjgsIDE2LCAyNDIsIDE1MCwgMjI4LCA0OCwgMjE5LCA5NSwgMjgsIDE2LCAyNDIsIDE1MCwgMjI4LCA0OCwgMjI4LCA3NSwgCisgICAgMjE5LCA5NSwgMjgsIDE2LCAyMTYsIDAsIDI4LCAxNiwgMjE1LCA5NSwgMjgsIDE2LCAyMzUsIDE5MywgMjE1LCA5NSwgMjgsIAorICAgIDE2LCAyMTUsIDk2LCAyMTksIDk1LCAyOCwgMTYsIDIxNSwgOTYsIDIxNCwgMTYzLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIAorICAgIDEwMiwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCA5OSwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCA5OCwgMjgsIDE2LCAyMjYsIAorICAgIDE0OCwgMjE4LCA5NywgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCA5NiwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCA5NSwgMjgsIAorICAgIDE2LCAyMjYsIDE0OCwgMjE4LCA5NCwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCA5MywgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCAKKyAgICA5MiwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCAxMDEsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgMTAwLCAyOCwgMTYsIDI0MSwgCisgICAgMjQ1LCAyOCwgMTYsIDIyOSwgMTA1LCAyOCwgMTYsIDI0NSwgMTQzLCA2NCwgMjE4LCAxMzMsIDI4LCAxNiwgMjQ4LCA3MSwgCisgICAgMjE5LCA5NSwgMjgsIDE2LCAzOCwgMTI0LCAyNTEsIDE2OSwgMjgsIDE2LCAzOCwgMTIwLCAyNTEsIDE2OSwgMjgsIDE2LCAKKyAgICAzOCwgMjQyLCAwLCAyOCwgMTYsIDM4LCAyMTksIDY3LCAyMjUsIDQzLCAyOCwgMTYsIDIyNSwgMjE2LCA3OCwgMjgsIDE2LCAKKyAgICAyMjUsIDIxNiwgMTIwLCA3OCwgMjgsIDE2LCAxNjMsIDIyNSwgMjE2LCA3OCwgMjgsIDE2LCAyNDIsIDE4MiwgMjE0LCAxNjMsIAorICAgIDI4LCAxNiwgMjQyLCAxODIsIDI0NiwgMTA2LCAyOCwgMTYsIDIsIDI0NCwgMTAwLCAyOCwgMTYsIDI0OCwgMTgwLCAyOCwgCisgICAgMTYsIDI0OCwgMTgxLCAyNTQsIDE1NCwgMjgsIDE2LCAyMzEsIDEzMywgMjgsIDE2LCAyMzIsIDEyOSwgMjgsIDE2LCAyNTEsIAorICAgIDE0MywgMjgsIDE2LCAyMjAsIDE1NCwgMjExLCAyNTMsIDI4LCAxNiwgMjIwLCAxNTQsIDI1MSwgMjIxLCAyOCwgMTYsIDIzMCwgCisgICAgMTg0LCAyOCwgMTYsIDIzMCwgMTg1LCAyNTEsIDIyMSwgMjgsIDE2LCAyMjAsIDE0OCwgMjExLCAyNTMsIDI4LCAxNiwgMjIwLCAKKyAgICAxNDgsIDI1MSwgMjIxLCAyOCwgMTYsIDI0MywgMjIwLCAyMTEsIDI1MywgMjgsIDE2LCAyNDMsIDIyMCwgMjUxLCAyMjEsIAorICAgIDI4LCAxNiwgMjMyLCAxMzAsIDIyNSwgMTgwLCAyMjMsIDYxLCAyOCwgMTYsIDIzMiwgMTMwLCAyMzYsIDQsIDIyMywgNjEsIAorICAgIDI4LCAxNiwgMjUxLCAxNDQsIDIyMywgNjEsIDI4LCAxNiwgMjIwLCAxNTQsIDIyMywgNjEsIDI4LCAxNiwgMjMwLCAxODUsIAorICAgIDIyMywgNjEsIDI4LCAxNiwgMjIwLCAxNDgsIDIyMywgNjEsIDI4LCAxNiwgMjE2LCAyNDksIDIyNSwgMTc4LCAyNDksIDEwNywgCisgICAgMjI0LCAxNzQsIDIyNSwgMTc5LCAyOCwgMTYsIDIxNiwgMjQ5LCAyMjUsIDE3OCwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAyMzYsIAorICAgIDMsIDI4LCAxNiwgMjE2LCAyNDksIDIyNSwgMTc4LCAyNDksIDEwNywgMjI0LCAxNzQsIDIyNSwgMTgwLCAyNDcsIDIxMSwgCisgICAgMjgsIDE2LCAyMTYsIDI0OSwgMjM2LCAyLCAyNDksIDEwNywgMjI0LCAxNzQsIDIyNSwgMTc5LCAyOCwgMTYsIDIxNiwgMjQ5LCAKKyAgICAyMzYsIDIsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjM2LCAzLCAyOCwgMTYsIDIxNiwgMjQ5LCAyMzYsIDIsIDI0OSwgMTA3LCAKKyAgICAyMjQsIDE3NCwgMjM2LCA0LCAyNDcsIDIxMSwgMjgsIDE2LCAyMTYsIDI0OSwgMjM2LCAyLCAyNDksIDEwNywgMjI0LCAxNzQsIAorICAgIDIzNiwgNCwgMjQ3LCAyMTAsIDI4LCAxNiwgMjE2LCAyNDksIDIzNiwgMiwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAyMzYsIDQsIAorICAgIDI0NywgMjA5LCAyOCwgMTYsIDI0OSwgMTMzLCAyOCwgMTYsIDI0MiwgMTI2LCAyNTEsIDY3LCAyNTAsIDE0LCAyOCwgMTYsIAorICAgIDI0MiwgMTI2LCAyNDUsIDcsIDI1MCwgMTQsIDI4LCAxNiwgNDIsIDI1MywgMTU4LCAyOCwgMTYsIDIxMywgMTUxLCAyOCwgCisgICAgMTYsIDIyNSwgMTQsIDI4LCAxNiwgMjUwLCA1LCAyOCwgMTYsIDIyMSwgMjAzLCAyOCwgMTYsIDI1MCwgOSwgMjgsIDE2LCAKKyAgICAyMTYsIDcsIDI4LCAxNiwgMjI0LCAyNDIsIDI4LCAxNiwgMjI0LCAyNDMsIDI0NCwgNjAsIDI4LCAxNiwgMjIxLCAyMDQsIAorICAgIDI0NCwgNjAsIDI4LCAxNiwgMjE2LCA4LCAyMjMsIDU4LCAyOCwgMTYsIDIyNSwgMTYzLCAyMTgsIDY2LCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAyMjksIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxOCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMjA4LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMDEsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE5MywgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMTg3LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxODYsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDE4NSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTg0LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjgsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDIyNywgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjI2LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAyMjUsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIyNCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjIzLCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAyMjIsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIyMSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMjIwLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMTksIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxNywgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMjE2LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMTUsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDIxNCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjEzLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxOTIsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDE5MSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTkwLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAxODksIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE4OCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjI5LCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAyMTgsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwMSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMTkzLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxODYsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE4NSwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMjI3LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMjYsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDIyNSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjI0LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMjEsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDIyMCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjE5LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAyMTQsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIxMywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjEyLCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAyMTEsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIxMCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMjA5LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDcsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwNiwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMjA1LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDQsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDIwMywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjAyLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDAsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDE5OSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTk4LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAxOTcsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE5NiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTk1LCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAxOTQsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE5MiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMTkxLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTAsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE4OSwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMTg4LCAzOCwgMjYsIDI4LCAyMTUsIDIwOCwgMzgsIDI2LCAyOCwgMjE2LCAyMjMsIDM4LCAyNiwgCisgICAgMjgsIDIyNSwgMTg4LCAyNiwgMjgsIDIzMywgMzEsIDIzMCwgMTQyLCAzMSwgMjQ1LCAyMjMsIDI0NywgMjI0LCAzMSwgMjQxLCAKKyAgICAyMjIsIDI0NSwgMjIzLCAyNDcsIDIyNCwgMzEsIDI0MCwgMjE0LCAyNDUsIDIyMywgMjQ3LCAyMjQsIDMxLCAyNDUsIDIyMiwgCisgICAgMjQxLCAyMjMsIDI0NywgMjI0LCAzMSwgMjQ1LCAyMjIsIDI0MCwgMjEzLCAyNDcsIDIyNCwgMzEsIDI0NSwgMjIzLCAxODAsIAorICAgIDMxLCAyNTAsIDE3NCwgMTgwLCAzMSwgMjQzLCAyMjksIDI1MCwgMzUsIDE4MCwgMzEsIDIzMCwgMTc3LCAxODAsIDMxLCAKKyAgICAyNTIsIDEzMCwgMTgwLCAzMSwgMjM0LCAxNzksIDIxOSwgNzksIDE4MCwgMzEsIDI0OSwgMTc5LCAxODAsIDMxLCAyNTMsIAorICAgIDIzMywgMTgwLCAzMSwgMjI2LCAxNjMsIDE4MCwgMzEsIDI1MSwgMTUzLCAyMjYsIDEzMCwgMTgwLCAzMSwgMjQ4LCA3MywgCisgICAgMTc3LCAyNDcsIDE3OSwgMTgwLCAzMSwgMjQ3LCAxNzYsIDE4MCwgMzEsIDIxMCwgMjIyLCAxODAsIDMxLCAyMzUsIDI0NywgCisgICAgMTgwLCAzMSwgMjI1LCAxOTcsIDE4MCwgMzEsIDIyMywgMTI3LCAxODAsIDMxLCAyNDksIDE4OSwgMTgwLCAzMSwgMjQxLCAKKyAgICA2MCwgMjUyLCAxODQsIDE4MCwgMzEsIDIxMiwgNTksIDE4MCwgMzEsIDI0NCwgMzksIDE4MCwgMzEsIDI1NCwgMjQ2LCAxODAsIAorICAgIDMxLCAyMjMsIDg5LCAxODAsIDMxLCAyMjMsIDY1LCAxODAsIDMxLCAyNDUsIDIyMSwgMTgwLCAzMSwgMjM1LCA1MywgMTgwLCAKKyAgICAzMSwgMjQ5LCAxODQsIDE4MCwgMzEsIDI0NSwgMTQyLCAxODAsIDMxLCAyNDYsIDUyLCAxODAsIDMxLCAyNTAsIDE0NSwgCisgICAgMTgwLCAzMSwgMjQ4LCA4MiwgMTgwLCAzMSwgMjMsIDIyMywgNjQsIDE4MCwgMzEsIDIyNiwgODEsIDE4MCwgMzEsIDIzMywgCisgICAgMzQsIDE4MCwgMzEsIDI0OSwgMjU0LCAxODAsIDMxLCAyMzQsIDc3LCAxODAsIDMxLCAyNDMsIDg2LCAxODAsIDMxLCAyMTgsIAorICAgIDExMiwgMTgwLCAzMSwgMjI0LCAxMzAsIDE4MCwgMzEsIDI0MywgMjI4LCAxODAsIDMxLCAyMjMsIDY2LCAxODAsIDMxLCAKKyAgICAyMzMsIDcxLCAxNzcsIDIzMCwgMTU3LCAxODAsIDMxLCAyMjMsIDYyLCAxODAsIDMxLCAyNDIsIDE2OCwgMjE2LCA0MiwgCisgICAgMjMxLCA3NiwgMTgwLCAzMSwgMjQ1LCAxNDQsIDE4MCwgMzEsIDIxOCwgMTI0LCAxODAsIDMxLCAyNDIsIDEyOCwgMTgwLCAKKyAgICAzMSwgMjQ1LCAxMzYsIDE4MCwgMzEsIDIyNSwgMjM1LCAxODAsIDMxLCAyMjIsIDIyNSwgMTgwLCAzMSwgMjQ0LCA1OSwgCisgICAgMTgwLCAzMSwgMjE0LCA4LCAxNzcsIDIxMiwgNDQsIDE4MCwgMzEsIDI0OSwgMTkzLCAxODAsIDMxLCAyMzEsIDg5LCAxODAsIAorICAgIDMxLCAyNDUsIDYxLCAxODAsIDMxLCAyMTQsIDE3MiwgMTgwLCAzMSwgMjQ3LCAyMTIsIDE4MCwgMzEsIDI1MCwgMCwgMjMwLCAKKyAgICAxMTAsIDE4MCwgMzEsIDI0MiwgMTA2LCAxODAsIDMxLCAyNDMsIDg3LCAyMzUsIDI1NSwgMTgwLCAzMSwgMjMxLCAxNDEsIAorICAgIDE4MCwgMzEsIDI1NSwgMTAsIDE4MCwgMzEsIDI0NSwgMTU3LCAxODAsIDMxLCAyNDYsIDEwOSwgMTgwLCAzMSwgMjEyLCA0MiwgCisgICAgMTgwLCAzMSwgMjE5LCAxNTAsIDE4MCwgMzEsIDIzNSwgMjIyLCAxODAsIDMxLCAyNDgsIDQyLCAxODAsIDMxLCAyNDgsIAorICAgIDE2MCwgMTgwLCAzMSwgMjQ3LCAyMDgsIDE4MCwgMzEsIDI0NSwgMjksIDE4MCwgMzEsIDIyMCwgMTE1LCAxODAsIDMxLCAKKyAgICAyMTgsIDEyOCwgMTgwLCAzMSwgMjQyLCAyLCAxODAsIDMxLCAyNDksIDIxMiwgMTgwLCAzMSwgMjQ5LCAyNTEsIDE4MCwgMzEsIAorICAgIDI0NCwgMTc3LCAxODAsIDMxLCAyNTQsIDIxMiwgMTgwLCAzMSwgMjQ5LCAyMTEsIDE4MCwgMzEsIDIyNiwgMTk3LCAyMTYsIAorICAgIDE5NiwgMjEzLCAyNDIsIDE4MCwgMzEsIDI0NywgMjMyLCAxODAsIDMxLCAyMzMsIDEyNCwgMTgwLCAzMSwgMjQ0LCAxMywgCisgICAgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIDExMCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIAorICAgIDEwNSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIDE1OCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgCisgICAgMjEsIDE2MSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIDE4OSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIAorICAgIDE3NCwgMjEsIDE5NCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIDE5OCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAKKyAgICAyMTQsIDE3NCwgMjEsIDE5NSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIDIwMCwgMjQ5LCAxNDksIDIyMiwgCisgICAgMjAyLCAyMTYsIDI0MywgMjEsIDExMCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDEwNSwgMjQ5LCAxNDksIAorICAgIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDE1OCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDE2MSwgMjQ5LCAKKyAgICAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDE4OSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDE5NCwgCisgICAgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDE5OCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIAorICAgIDE5NSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDIwMCwgMTEsIDIzLCA2LCA2MSwgMTEsIDIzLCA2LCAKKyAgICAyNTMsIDE1OCwgMTEsIDIzLCA2LCAyNTEsIDY2LCAxMSwgMjMsIDYsIDI0OSwgNjAsIDExLCAyMywgNiwgNzUsIDExLCAyMywgCisgICAgNiwgMjQ1LCA2LCAxMSwgMjMsIDYsIDI0MywgMjAyLCAxMSwgMjMsIDYsIDI0MiwgNjAsIDExLCAyMywgNiwgNzMsIDExLCAKKyAgICAyMywgNiwgMjM1LCAxNDQsIDExLCAyMywgNiwgMjM1LCAyMywgMTEsIDIzLCA2LCAxNTYsIDExLCAyMywgNiwgMTkzLCAxMSwgCisgICAgMjMsIDYsIDIzMCwgMjUsIDExLCAyMywgNiwgNzYsIDExLCAyMywgNiwgMjI2LCAxMDUsIDExLCAyMywgNiwgMjI0LCA5NiwgCisgICAgMTEsIDIzLCA2LCAxNTMsIDExLCAyMywgNiwgMjIyLCA5MSwgMTEsIDIzLCA2LCAyMTcsIDE1MiwgMTEsIDIzLCA2LCA3MCwgCisgICAgMTEsIDIzLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCA2LCAyMTIsIDk4LCAxMSwgMjMsIDYsIDIxMSwgMTc4LCAxMSwgMjMsIDYsIAorICAgIDIxMSwgMTE3LCAxMSwgMjMsIDYsIDIxMCwgMTU5LCAxMSwgMjMsIDQsIDYxLCAxMSwgMjMsIDQsIDI1MywgMTU4LCAxMSwgCisgICAgMjMsIDQsIDI1MSwgNjYsIDExLCAyMywgNCwgMjQ5LCA2MCwgMTEsIDIzLCA0LCA3NSwgMTEsIDIzLCA0LCAyNDUsIDYsIDExLCAKKyAgICAyMywgNCwgMjQzLCAyMDIsIDExLCAyMywgNCwgMjQyLCA2MCwgMTEsIDIzLCA0LCA3MywgMTEsIDIzLCA0LCAyMzUsIDE0NCwgCisgICAgMTEsIDIzLCA0LCAyMzUsIDIzLCAxMSwgMjMsIDQsIDE1NiwgMTEsIDIzLCA0LCAxOTMsIDExLCAyMywgNCwgMjMwLCAyNSwgCisgICAgMTEsIDIzLCA0LCA3NiwgMTEsIDIzLCA0LCAyMjYsIDEwNSwgMTEsIDIzLCA0LCAyMjQsIDk2LCAxMSwgMjMsIDQsIDE1MywgCisgICAgMTEsIDIzLCA0LCAyMjIsIDkxLCAxMSwgMjMsIDQsIDIxNywgMTUyLCAxMSwgMjMsIDQsIDcwLCAxMSwgMjMsIDQsIDIxNCwgCisgICAgMTA1LCAxMSwgMjMsIDQsIDIxMiwgOTgsIDExLCAyMywgNCwgMjExLCAxNzgsIDExLCAyMywgNCwgMjExLCAxMTcsIDExLCAKKyAgICAyMywgNCwgMjEwLCAxNTksIDExLCAzMiwgNiwgNjEsIDExLCAzMiwgNiwgMjUzLCAxNTgsIDExLCAzMiwgNiwgMjUxLCA2NiwgCisgICAgMTEsIDMyLCA2LCAyNDksIDYwLCAxMSwgMzIsIDYsIDc1LCAxMSwgMzIsIDYsIDI0NSwgNiwgMTEsIDMyLCA2LCAyNDMsIAorICAgIDIwMiwgMTEsIDMyLCA2LCAyNDIsIDYwLCAxMSwgMzIsIDYsIDczLCAxMSwgMzIsIDYsIDIzNSwgMTQ0LCAxMSwgMzIsIDYsIAorICAgIDIzNSwgMjMsIDExLCAzMiwgNiwgMTU2LCAxMSwgMzIsIDYsIDE5MywgMTEsIDMyLCA2LCAyMzAsIDI1LCAxMSwgMzIsIDYsIAorICAgIDc2LCAxMSwgMzIsIDYsIDIyNiwgMTA1LCAxMSwgMzIsIDYsIDIyNCwgOTYsIDExLCAzMiwgNiwgMTUzLCAxMSwgMzIsIDYsIAorICAgIDIyMiwgOTEsIDExLCAzMiwgNiwgMjE3LCAxNTIsIDExLCAzMiwgNiwgNzAsIDExLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAzMiwgCisgICAgNiwgMjEyLCA5OCwgMTEsIDMyLCA2LCAyMTEsIDE3OCwgMTEsIDMyLCA2LCAyMTEsIDExNywgMTEsIDMyLCA2LCAyMTAsIAorICAgIDE1OSwgMTEsIDMyLCA0LCA2MSwgMTEsIDMyLCA0LCAyNTMsIDE1OCwgMTEsIDMyLCA0LCAyNTEsIDY2LCAxMSwgMzIsIDQsIAorICAgIDI0OSwgNjAsIDExLCAzMiwgNCwgNzUsIDExLCAzMiwgNCwgMjQ1LCA2LCAxMSwgMzIsIDQsIDI0MywgMjAyLCAxMSwgMzIsIAorICAgIDQsIDczLCAxMSwgMzIsIDQsIDIzNSwgMTQ0LCAxMSwgMzIsIDQsIDIzNSwgMjMsIDExLCAzMiwgNCwgMTU2LCAxMSwgMzIsIAorICAgIDQsIDE5MywgMTEsIDMyLCA0LCAyMzAsIDI1LCAxMSwgMzIsIDQsIDc2LCAxMSwgMzIsIDQsIDIyNiwgMTA1LCAxMSwgMzIsIAorICAgIDQsIDIyNCwgOTYsIDExLCAzMiwgNCwgMTUzLCAxMSwgMzIsIDQsIDIyMiwgOTEsIDExLCAzMiwgNCwgMjE3LCAxNTIsIDExLCAKKyAgICAzMiwgNCwgNzAsIDExLCAzMiwgNCwgMjE0LCAxMDUsIDExLCAzMiwgNCwgMjEyLCA5OCwgMTEsIDMyLCA0LCAyMTEsIDE3OCwgCisgICAgMTEsIDMyLCA0LCAyMTEsIDExNywgMTEsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIDIzLCAzMiwgNiwgNjEsIDExLCAyMywgMzIsIAorICAgIDYsIDI1MywgMTU4LCAxMSwgMjMsIDMyLCA2LCAyNTEsIDY2LCAxMSwgMjMsIDMyLCA2LCAyNDksIDYwLCAxMSwgMjMsIDMyLCAKKyAgICA2LCA3NSwgMTEsIDIzLCAzMiwgNiwgMjQ1LCA2LCAxMSwgMjMsIDMyLCA2LCAyNDMsIDIwMiwgMTEsIDIzLCAzMiwgNiwgCisgICAgMjQyLCA2MCwgMTEsIDIzLCAzMiwgNiwgNzMsIDExLCAyMywgMzIsIDYsIDIzNSwgMTQ0LCAxMSwgMjMsIDMyLCA2LCAyMzUsIAorICAgIDIzLCAxMSwgMjMsIDMyLCA2LCAxNTYsIDExLCAyMywgMzIsIDYsIDE5MywgMTEsIDIzLCAzMiwgNiwgMjMwLCAyNSwgMTEsIAorICAgIDIzLCAzMiwgNiwgNzYsIDExLCAyMywgMzIsIDYsIDIyNiwgMTA1LCAxMSwgMjMsIDMyLCA2LCAyMjQsIDk2LCAxMSwgMjMsIAorICAgIDMyLCA2LCAxNTMsIDExLCAyMywgMzIsIDYsIDIyMiwgOTEsIDExLCAyMywgMzIsIDYsIDIxNywgMTUyLCAxMSwgMjMsIDMyLCAKKyAgICA2LCA3MCwgMTEsIDIzLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAyMywgMzIsIDYsIDIxMiwgOTgsIDExLCAyMywgMzIsIDYsIAorICAgIDIxMSwgMTc4LCAxMSwgMjMsIDMyLCA2LCAyMTEsIDExNywgMTEsIDIzLCAzMiwgNiwgMjEwLCAxNTksIDExLCAyMywgMzIsIAorICAgIDQsIDYxLCAxMSwgMjMsIDMyLCA0LCAyNTMsIDE1OCwgMTEsIDIzLCAzMiwgNCwgMjUxLCA2NiwgMTEsIDIzLCAzMiwgNCwgCisgICAgMjQ5LCA2MCwgMTEsIDIzLCAzMiwgNCwgNzUsIDExLCAyMywgMzIsIDQsIDI0NSwgNiwgMTEsIDIzLCAzMiwgNCwgMjQzLCAKKyAgICAyMDIsIDExLCAyMywgMzIsIDQsIDI0MiwgNjAsIDExLCAyMywgMzIsIDQsIDczLCAxMSwgMjMsIDMyLCA0LCAyMzUsIDE0NCwgCisgICAgMTEsIDIzLCAzMiwgNCwgMjM1LCAyMywgMTEsIDIzLCAzMiwgNCwgMTU2LCAxMSwgMjMsIDMyLCA0LCAxOTMsIDExLCAyMywgCisgICAgMzIsIDQsIDIzMCwgMjUsIDExLCAyMywgMzIsIDQsIDc2LCAxMSwgMjMsIDMyLCA0LCAyMjYsIDEwNSwgMTEsIDIzLCAzMiwgCisgICAgNCwgMjI0LCA5NiwgMTEsIDIzLCAzMiwgNCwgMTUzLCAxMSwgMjMsIDMyLCA0LCAyMjIsIDkxLCAxMSwgMjMsIDMyLCA0LCAKKyAgICAyMTcsIDE1MiwgMTEsIDIzLCAzMiwgNCwgNzAsIDExLCAyMywgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMjMsIDMyLCA0LCAyMTIsIAorICAgIDk4LCAxMSwgMjMsIDMyLCA0LCAyMTEsIDE3OCwgMTEsIDIzLCAzMiwgNCwgMjExLCAxMTcsIDExLCAyMywgMzIsIDQsIDIxMCwgCisgICAgMTU5LCAxMSwgMTE5LCA2LCA2MSwgMTEsIDExOSwgNiwgMjUxLCA2NiwgMTEsIDExOSwgNiwgMjQ5LCA2MCwgMTEsIDExOSwgCisgICAgNiwgMjQzLCAyMDIsIDExLCAxMTksIDYsIDIzNSwgMTQ0LCAxMSwgMTE5LCA2LCAyMzUsIDIzLCAxMSwgMTE5LCA2LCAyMzAsIAorICAgIDI1LCAxMSwgMTE5LCA2LCA3NiwgMTEsIDExOSwgNiwgMjI2LCAxMDUsIDExLCAxMTksIDYsIDIyNCwgOTYsIDExLCAxMTksIAorICAgIDYsIDIyMiwgOTEsIDExLCAxMTksIDYsIDIxNywgMTUyLCAxMSwgMTE5LCA2LCA3MCwgMTEsIDExOSwgNiwgMjE0LCAxMDUsIAorICAgIDExLCAxMTksIDYsIDIxMiwgOTgsIDExLCAxMTksIDYsIDIxMSwgMTc4LCAxMSwgMTE5LCA2LCAyMTEsIDExNywgMTEsIDExOSwgCisgICAgNiwgMjEwLCAxNTksIDExLCAxMTksIDQsIDYxLCAxMSwgMTE5LCA0LCAyNTMsIDE1OCwgMTEsIDExOSwgNCwgMjUxLCA2NiwgCisgICAgMTEsIDExOSwgNCwgMjQ5LCA2MCwgMTEsIDExOSwgNCwgMjQ1LCA2LCAxMSwgMTE5LCA0LCAyNDIsIDYwLCAxMSwgMTE5LCA0LCAKKyAgICA3MywgMTEsIDExOSwgNCwgMjM1LCAxNDQsIDExLCAxMTksIDQsIDIzNSwgMjMsIDExLCAxMTksIDQsIDE1NiwgMTEsIDExOSwgCisgICAgNCwgMTkzLCAxMSwgMTE5LCA0LCAyMzAsIDI1LCAxMSwgMTE5LCA0LCAyMjYsIDEwNSwgMTEsIDExOSwgNCwgMjI0LCA5NiwgCisgICAgMTEsIDExOSwgNCwgMTUzLCAxMSwgMTE5LCA0LCAyMjIsIDkxLCAxMSwgMTE5LCA0LCAyMTcsIDE1MiwgMTEsIDExOSwgNCwgCisgICAgNzAsIDExLCAxMTksIDQsIDIxNCwgMTA1LCAxMSwgMTE5LCA0LCAyMTIsIDk4LCAxMSwgMTE5LCA0LCAyMTEsIDE3OCwgMTEsIAorICAgIDExOSwgNCwgMjExLCAxMTcsIDExLCAxMTksIDQsIDIxMCwgMTU5LCAxMSwgMjMsIDExOSwgNiwgNjEsIDExLCAyMywgMTE5LCAKKyAgICA2LCAyNTMsIDE1OCwgMTEsIDIzLCAxMTksIDYsIDI1MSwgNjYsIDExLCAyMywgMTE5LCA2LCAyNDksIDYwLCAxMSwgMjMsIAorICAgIDExOSwgNiwgNzUsIDExLCAyMywgMTE5LCA2LCAyNDUsIDYsIDExLCAyMywgMTE5LCA2LCAyNDMsIDIwMiwgMTEsIDIzLCAKKyAgICAxMTksIDYsIDI0MiwgNjAsIDExLCAyMywgMTE5LCA2LCA3MywgMTEsIDIzLCAxMTksIDYsIDIzNSwgMTQ0LCAxMSwgMjMsIAorICAgIDExOSwgNiwgMjM1LCAyMywgMTEsIDIzLCAxMTksIDYsIDE1NiwgMTEsIDIzLCAxMTksIDYsIDE5MywgMTEsIDIzLCAxMTksIAorICAgIDYsIDIzMCwgMjUsIDExLCAyMywgMTE5LCA2LCA3NiwgMTEsIDIzLCAxMTksIDYsIDIyNiwgMTA1LCAxMSwgMjMsIDExOSwgNiwgCisgICAgMjI0LCA5NiwgMTEsIDIzLCAxMTksIDYsIDE1MywgMTEsIDIzLCAxMTksIDYsIDIyMiwgOTEsIDExLCAyMywgMTE5LCA2LCAKKyAgICAyMTcsIDE1MiwgMTEsIDIzLCAxMTksIDYsIDcwLCAxMSwgMjMsIDExOSwgNiwgMjE0LCAxMDUsIDExLCAyMywgMTE5LCA2LCAKKyAgICAyMTIsIDk4LCAxMSwgMjMsIDExOSwgNiwgMjExLCAxNzgsIDExLCAyMywgMTE5LCA2LCAyMTEsIDExNywgMTEsIDIzLCAxMTksIAorICAgIDYsIDIxMCwgMTU5LCAxMSwgMjMsIDExOSwgNCwgNjEsIDExLCAyMywgMTE5LCA0LCAyNTMsIDE1OCwgMTEsIDIzLCAxMTksIAorICAgIDQsIDI1MSwgNjYsIDExLCAyMywgMTE5LCA0LCAyNDksIDYwLCAxMSwgMjMsIDExOSwgNCwgNzUsIDExLCAyMywgMTE5LCA0LCAKKyAgICAyNDUsIDYsIDExLCAyMywgMTE5LCA0LCAyNDMsIDIwMiwgMTEsIDIzLCAxMTksIDQsIDI0MiwgNjAsIDExLCAyMywgMTE5LCAKKyAgICA0LCA3MywgMTEsIDIzLCAxMTksIDQsIDIzNSwgMTQ0LCAxMSwgMjMsIDExOSwgNCwgMjM1LCAyMywgMTEsIDIzLCAxMTksIDQsIAorICAgIDE1NiwgMTEsIDIzLCAxMTksIDQsIDE5MywgMTEsIDIzLCAxMTksIDQsIDIzMCwgMjUsIDExLCAyMywgMTE5LCA0LCA3NiwgCisgICAgMTEsIDIzLCAxMTksIDQsIDIyNiwgMTA1LCAxMSwgMjMsIDExOSwgNCwgMjI0LCA5NiwgMTEsIDIzLCAxMTksIDQsIDE1MywgCisgICAgMTEsIDIzLCAxMTksIDQsIDIyMiwgOTEsIDExLCAyMywgMTE5LCA0LCAyMTcsIDE1MiwgMTEsIDIzLCAxMTksIDQsIDcwLCAKKyAgICAxMSwgMjMsIDExOSwgNCwgMjE0LCAxMDUsIDExLCAyMywgMTE5LCA0LCAyMTIsIDk4LCAxMSwgMjMsIDExOSwgNCwgMjExLCAKKyAgICAxNzgsIDExLCAyMywgMTE5LCA0LCAyMTEsIDExNywgMTEsIDIzLCAxMTksIDQsIDIxMCwgMTU5LCAxMSwgMTMzLCA2LCA2MSwgCisgICAgMTEsIDEzMywgNiwgMjUzLCAxNTgsIDExLCAxMzMsIDYsIDI0OSwgNjAsIDExLCAxMzMsIDYsIDc1LCAxMSwgMTMzLCA2LCAKKyAgICAyNDUsIDYsIDExLCAxMzMsIDYsIDI0MywgMjAyLCAxMSwgMTMzLCA2LCAyMzUsIDE0NCwgMTEsIDEzMywgNiwgMjM1LCAyMywgCisgICAgMTEsIDEzMywgNiwgMTU2LCAxMSwgMTMzLCA2LCAxOTMsIDExLCAxMzMsIDYsIDIzMCwgMjUsIDExLCAxMzMsIDYsIDc2LCAKKyAgICAxMSwgMTMzLCA2LCAyMjYsIDEwNSwgMTEsIDEzMywgNiwgMjI0LCA5NiwgMTEsIDEzMywgNiwgMjIyLCA5MSwgMTEsIDEzMywgCisgICAgNiwgMjE3LCAxNTIsIDExLCAxMzMsIDYsIDcwLCAxMSwgMTMzLCA2LCAyMTQsIDEwNSwgMTEsIDEzMywgNiwgMjEyLCA5OCwgCisgICAgMTEsIDEzMywgNiwgMjExLCAxNzgsIDExLCAxMzMsIDYsIDIxMSwgMTE3LCAxMSwgMTMzLCA0LCA2MSwgMTEsIDEzMywgNCwgCisgICAgMjUzLCAxNTgsIDExLCAxMzMsIDQsIDI1MSwgNjYsIDExLCAxMzMsIDQsIDI0OSwgNjAsIDExLCAxMzMsIDQsIDc1LCAxMSwgCisgICAgMTMzLCA0LCAyNDUsIDYsIDExLCAxMzMsIDQsIDI0MywgMjAyLCAxMSwgMTMzLCA0LCAyNDIsIDYwLCAxMSwgMTMzLCA0LCAKKyAgICA3MywgMTEsIDEzMywgNCwgMjM1LCAxNDQsIDExLCAxMzMsIDQsIDIzNSwgMjMsIDExLCAxMzMsIDQsIDE1NiwgMTEsIDEzMywgCisgICAgNCwgMTkzLCAxMSwgMTMzLCA0LCAyMzAsIDI1LCAxMSwgMTMzLCA0LCA3NiwgMTEsIDEzMywgNCwgMjI2LCAxMDUsIDExLCAKKyAgICAxMzMsIDQsIDIyNCwgOTYsIDExLCAxMzMsIDQsIDE1MywgMTEsIDEzMywgNCwgMjIyLCA5MSwgMTEsIDEzMywgNCwgMjE3LCAKKyAgICAxNTIsIDExLCAxMzMsIDQsIDcwLCAxMSwgMTMzLCA0LCAyMTQsIDEwNSwgMTEsIDEzMywgNCwgMjEyLCA5OCwgMTEsIDEzMywgCisgICAgNCwgMjExLCAxNzgsIDExLCAxMzMsIDQsIDIxMSwgMTE3LCAxMSwgMTMzLCA0LCAyMTAsIDE1OSwgMTEsIDEzOSwgNiwgNjEsIAorICAgIDExLCAxMzksIDYsIDI1MywgMTU4LCAxMSwgMTM5LCA2LCAyNDksIDYwLCAxMSwgMTM5LCA2LCA3NSwgMTEsIDEzOSwgNiwgCisgICAgMjQ1LCA2LCAxMSwgMTM5LCA2LCAyNDMsIDIwMiwgMTEsIDEzOSwgNiwgNzMsIDExLCAxMzksIDYsIDIzNSwgMTQ0LCAxMSwgCisgICAgMTM5LCA2LCAyMzUsIDIzLCAxMSwgMTM5LCA2LCAxNTYsIDExLCAxMzksIDYsIDE5MywgMTEsIDEzOSwgNiwgNzYsIDExLCAKKyAgICAxMzksIDYsIDIyMiwgOTEsIDExLCAxMzksIDYsIDIxNywgMTUyLCAxMSwgMTM5LCA2LCA3MCwgMTEsIDEzOSwgNiwgMjE0LCAKKyAgICAxMDUsIDExLCAxMzksIDYsIDIxMiwgOTgsIDExLCAxMzksIDYsIDIxMSwgMTc4LCAxMSwgMTM5LCA2LCAyMTEsIDExNywgMTEsIAorICAgIDEzOSwgNCwgNjEsIDExLCAxMzksIDQsIDI1MywgMTU4LCAxMSwgMTM5LCA0LCAyNTEsIDY2LCAxMSwgMTM5LCA0LCAyNDksIAorICAgIDYwLCAxMSwgMTM5LCA0LCA3NSwgMTEsIDEzOSwgNCwgMjQ1LCA2LCAxMSwgMTM5LCA0LCAyNDMsIDIwMiwgMTEsIDEzOSwgNCwgCisgICAgMjQyLCA2MCwgMTEsIDEzOSwgNCwgNzMsIDExLCAxMzksIDQsIDIzNSwgMTQ0LCAxMSwgMTM5LCA0LCAyMzUsIDIzLCAxMSwgCisgICAgMTM5LCA0LCAxNTYsIDExLCAxMzksIDQsIDE5MywgMTEsIDEzOSwgNCwgMjMwLCAyNSwgMTEsIDEzOSwgNCwgNzYsIDExLCAKKyAgICAxMzksIDQsIDIyNiwgMTA1LCAxMSwgMTM5LCA0LCAyMjQsIDk2LCAxMSwgMTM5LCA0LCAxNTMsIDExLCAxMzksIDQsIDIyMiwgCisgICAgOTEsIDExLCAxMzksIDQsIDIxNywgMTUyLCAxMSwgMTM5LCA0LCA3MCwgMTEsIDEzOSwgNCwgMjE0LCAxMDUsIDExLCAxMzksIAorICAgIDQsIDIxMiwgOTgsIDExLCAxMzksIDQsIDIxMSwgMTc4LCAxMSwgMTM5LCA0LCAyMTEsIDExNywgMTEsIDEzOSwgNCwgMjEwLCAKKyAgICAxNTksIDExLCAyMywgMTMzLCA2LCA2MSwgMTEsIDIzLCAxMzMsIDYsIDI1MywgMTU4LCAxMSwgMjMsIDEzMywgNiwgMjUxLCAKKyAgICA2NiwgMTEsIDIzLCAxMzMsIDYsIDI0OSwgNjAsIDExLCAyMywgMTMzLCA2LCA3NSwgMTEsIDIzLCAxMzMsIDYsIDI0NSwgNiwgCisgICAgMTEsIDIzLCAxMzMsIDYsIDI0MywgMjAyLCAxMSwgMjMsIDEzMywgNiwgMjQyLCA2MCwgMTEsIDIzLCAxMzMsIDYsIDczLCAKKyAgICAxMSwgMjMsIDEzMywgNiwgMjM1LCAxNDQsIDExLCAyMywgMTMzLCA2LCAyMzUsIDIzLCAxMSwgMjMsIDEzMywgNiwgMTU2LCAKKyAgICAxMSwgMjMsIDEzMywgNiwgMTkzLCAxMSwgMjMsIDEzMywgNiwgMjMwLCAyNSwgMTEsIDIzLCAxMzMsIDYsIDc2LCAxMSwgMjMsIAorICAgIDEzMywgNiwgMjI2LCAxMDUsIDExLCAyMywgMTMzLCA2LCAyMjQsIDk2LCAxMSwgMjMsIDEzMywgNiwgMTUzLCAxMSwgMjMsIAorICAgIDEzMywgNiwgMjIyLCA5MSwgMTEsIDIzLCAxMzMsIDYsIDIxNywgMTUyLCAxMSwgMjMsIDEzMywgNiwgNzAsIDExLCAyMywgCisgICAgMTMzLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAxMzMsIDYsIDIxMiwgOTgsIDExLCAyMywgMTMzLCA2LCAyMTEsIDE3OCwgMTEsIAorICAgIDIzLCAxMzMsIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDEzMywgNiwgMjEwLCAxNTksIDExLCAyMywgMTMzLCA0LCA2MSwgMTEsIAorICAgIDIzLCAxMzMsIDQsIDI1MywgMTU4LCAxMSwgMjMsIDEzMywgNCwgMjUxLCA2NiwgMTEsIDIzLCAxMzMsIDQsIDI0OSwgNjAsIAorICAgIDExLCAyMywgMTMzLCA0LCA3NSwgMTEsIDIzLCAxMzMsIDQsIDI0NSwgNiwgMTEsIDIzLCAxMzMsIDQsIDI0MywgMjAyLCAxMSwgCisgICAgMjMsIDEzMywgNCwgMjQyLCA2MCwgMTEsIDIzLCAxMzMsIDQsIDczLCAxMSwgMjMsIDEzMywgNCwgMjM1LCAxNDQsIDExLCAKKyAgICAyMywgMTMzLCA0LCAyMzUsIDIzLCAxMSwgMjMsIDEzMywgNCwgMTU2LCAxMSwgMjMsIDEzMywgNCwgMTkzLCAxMSwgMjMsIAorICAgIDEzMywgNCwgMjMwLCAyNSwgMTEsIDIzLCAxMzMsIDQsIDc2LCAxMSwgMjMsIDEzMywgNCwgMjI2LCAxMDUsIDExLCAyMywgCisgICAgMTMzLCA0LCAyMjQsIDk2LCAxMSwgMjMsIDEzMywgNCwgMTUzLCAxMSwgMjMsIDEzMywgNCwgMjIyLCA5MSwgMTEsIDIzLCAKKyAgICAxMzMsIDQsIDIxNywgMTUyLCAxMSwgMjMsIDEzMywgNCwgNzAsIDExLCAyMywgMTMzLCA0LCAyMTQsIDEwNSwgMTEsIDIzLCAKKyAgICAxMzMsIDQsIDIxMiwgOTgsIDExLCAyMywgMTMzLCA0LCAyMTEsIDE3OCwgMTEsIDIzLCAxMzMsIDQsIDIxMSwgMTE3LCAxMSwgCisgICAgMjMsIDEzMywgNCwgMjEwLCAxNTksIDExLCAzNSwgNiwgNjEsIDExLCAzNSwgNiwgMjUzLCAxNTgsIDExLCAzNSwgNiwgMjUxLCAKKyAgICA2NiwgMTEsIDM1LCA2LCAyNDksIDYwLCAxMSwgMzUsIDYsIDc1LCAxMSwgMzUsIDYsIDI0NSwgNiwgMTEsIDM1LCA2LCAyNDMsIAorICAgIDIwMiwgMTEsIDM1LCA2LCAyNDIsIDYwLCAxMSwgMzUsIDYsIDczLCAxMSwgMzUsIDYsIDIzNSwgMTQ0LCAxMSwgMzUsIDYsIAorICAgIDIzNSwgMjMsIDExLCAzNSwgNiwgMTU2LCAxMSwgMzUsIDYsIDE5MywgMTEsIDM1LCA2LCAyMzAsIDI1LCAxMSwgMzUsIDYsIAorICAgIDc2LCAxMSwgMzUsIDYsIDIyNiwgMTA1LCAxMSwgMzUsIDYsIDIyNCwgOTYsIDExLCAzNSwgNiwgMTUzLCAxMSwgMzUsIDYsIAorICAgIDIyMiwgOTEsIDExLCAzNSwgNiwgMjE3LCAxNTIsIDExLCAzNSwgNiwgNzAsIDExLCAzNSwgNiwgMjE0LCAxMDUsIDExLCAzNSwgCisgICAgNiwgMjEyLCA5OCwgMTEsIDM1LCA2LCAyMTEsIDE3OCwgMTEsIDM1LCA2LCAyMTEsIDExNywgMTEsIDM1LCA2LCAyMTAsIAorICAgIDE1OSwgMTEsIDM1LCA0LCA2MSwgMTEsIDM1LCA0LCAyNTMsIDE1OCwgMTEsIDM1LCA0LCAyNTEsIDY2LCAxMSwgMzUsIDQsIAorICAgIDI0OSwgNjAsIDExLCAzNSwgNCwgNzUsIDExLCAzNSwgNCwgMjQ1LCA2LCAxMSwgMzUsIDQsIDI0MywgMjAyLCAxMSwgMzUsIAorICAgIDQsIDI0MiwgNjAsIDExLCAzNSwgNCwgNzMsIDExLCAzNSwgNCwgMjM1LCAxNDQsIDExLCAzNSwgNCwgMjM1LCAyMywgMTEsIAorICAgIDM1LCA0LCAxNTYsIDExLCAzNSwgNCwgMTkzLCAxMSwgMzUsIDQsIDIzMCwgMjUsIDExLCAzNSwgNCwgNzYsIDExLCAzNSwgNCwgCisgICAgMjI2LCAxMDUsIDExLCAzNSwgNCwgMjI0LCA5NiwgMTEsIDM1LCA0LCAxNTMsIDExLCAzNSwgNCwgMjIyLCA5MSwgMTEsIDM1LCAKKyAgICA0LCAyMTcsIDE1MiwgMTEsIDM1LCA0LCA3MCwgMTEsIDM1LCA0LCAyMTQsIDEwNSwgMTEsIDM1LCA0LCAyMTIsIDk4LCAxMSwgCisgICAgMzUsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCA2LCAKKyAgICA2MSwgMTEsIDM1LCAyMywgNiwgMjUzLCAxNTgsIDExLCAzNSwgMjMsIDYsIDI1MSwgNjYsIDExLCAzNSwgMjMsIDYsIDI0OSwgCisgICAgNjAsIDExLCAzNSwgMjMsIDYsIDc1LCAxMSwgMzUsIDIzLCA2LCAyNDUsIDYsIDExLCAzNSwgMjMsIDYsIDI0MywgMjAyLCAKKyAgICAxMSwgMzUsIDIzLCA2LCAyNDIsIDYwLCAxMSwgMzUsIDIzLCA2LCA3MywgMTEsIDM1LCAyMywgNiwgMjM1LCAxNDQsIDExLCAKKyAgICAzNSwgMjMsIDYsIDIzNSwgMjMsIDExLCAzNSwgMjMsIDYsIDE1NiwgMTEsIDM1LCAyMywgNiwgMTkzLCAxMSwgMzUsIDIzLCAKKyAgICA2LCAyMzAsIDI1LCAxMSwgMzUsIDIzLCA2LCA3NiwgMTEsIDM1LCAyMywgNiwgMjI2LCAxMDUsIDExLCAzNSwgMjMsIDYsIAorICAgIDIyNCwgOTYsIDExLCAzNSwgMjMsIDYsIDE1MywgMTEsIDM1LCAyMywgNiwgMjIyLCA5MSwgMTEsIDM1LCAyMywgNiwgMjE3LCAKKyAgICAxNTIsIDExLCAzNSwgMjMsIDYsIDcwLCAxMSwgMzUsIDIzLCA2LCAyMTQsIDEwNSwgMTEsIDM1LCAyMywgNiwgMjEyLCA5OCwgCisgICAgMTEsIDM1LCAyMywgNiwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDYsIDIxMSwgMTE3LCAxMSwgMzUsIDIzLCA2LCAyMTAsIAorICAgIDE1OSwgMTEsIDM1LCAyMywgNCwgNjEsIDExLCAzNSwgMjMsIDQsIDI1MywgMTU4LCAxMSwgMzUsIDIzLCA0LCAyNTEsIDY2LCAKKyAgICAxMSwgMzUsIDIzLCA0LCAyNDksIDYwLCAxMSwgMzUsIDIzLCA0LCA3NSwgMTEsIDM1LCAyMywgNCwgMjQ1LCA2LCAxMSwgMzUsIAorICAgIDIzLCA0LCAyNDMsIDIwMiwgMTEsIDM1LCAyMywgNCwgMjQyLCA2MCwgMTEsIDM1LCAyMywgNCwgNzMsIDExLCAzNSwgMjMsIAorICAgIDQsIDIzNSwgMTQ0LCAxMSwgMzUsIDIzLCA0LCAyMzUsIDIzLCAxMSwgMzUsIDIzLCA0LCAxNTYsIDExLCAzNSwgMjMsIDQsIAorICAgIDE5MywgMTEsIDM1LCAyMywgNCwgMjMwLCAyNSwgMTEsIDM1LCAyMywgNCwgNzYsIDExLCAzNSwgMjMsIDQsIDIyNiwgMTA1LCAKKyAgICAxMSwgMzUsIDIzLCA0LCAyMjQsIDk2LCAxMSwgMzUsIDIzLCA0LCAxNTMsIDExLCAzNSwgMjMsIDQsIDIyMiwgOTEsIDExLCAKKyAgICAzNSwgMjMsIDQsIDIxNywgMTUyLCAxMSwgMzUsIDIzLCA0LCA3MCwgMTEsIDM1LCAyMywgNCwgMjE0LCAxMDUsIDExLCAzNSwgCisgICAgMjMsIDQsIDIxMiwgOTgsIDExLCAzNSwgMjMsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCA0LCAyMTEsIDExNywgMTEsIDM1LCAKKyAgICAyMywgNCwgMjEwLCAxNTksIDExLCAzNSwgMzIsIDYsIDYxLCAxMSwgMzUsIDMyLCA2LCAyNTMsIDE1OCwgMTEsIDM1LCAzMiwgCisgICAgNiwgMjUxLCA2NiwgMTEsIDM1LCAzMiwgNiwgMjQ5LCA2MCwgMTEsIDM1LCAzMiwgNiwgNzUsIDExLCAzNSwgMzIsIDYsIAorICAgIDI0NSwgNiwgMTEsIDM1LCAzMiwgNiwgMjQzLCAyMDIsIDExLCAzNSwgMzIsIDYsIDI0MiwgNjAsIDExLCAzNSwgMzIsIDYsIAorICAgIDczLCAxMSwgMzUsIDMyLCA2LCAyMzUsIDE0NCwgMTEsIDM1LCAzMiwgNiwgMjM1LCAyMywgMTEsIDM1LCAzMiwgNiwgMTU2LCAKKyAgICAxMSwgMzUsIDMyLCA2LCAxOTMsIDExLCAzNSwgMzIsIDYsIDIzMCwgMjUsIDExLCAzNSwgMzIsIDYsIDc2LCAxMSwgMzUsIAorICAgIDMyLCA2LCAyMjYsIDEwNSwgMTEsIDM1LCAzMiwgNiwgMjI0LCA5NiwgMTEsIDM1LCAzMiwgNiwgMTUzLCAxMSwgMzUsIDMyLCAKKyAgICA2LCAyMjIsIDkxLCAxMSwgMzUsIDMyLCA2LCAyMTcsIDE1MiwgMTEsIDM1LCAzMiwgNiwgNzAsIDExLCAzNSwgMzIsIDYsIAorICAgIDIxNCwgMTA1LCAxMSwgMzUsIDMyLCA2LCAyMTIsIDk4LCAxMSwgMzUsIDMyLCA2LCAyMTEsIDE3OCwgMTEsIDM1LCAzMiwgNiwgCisgICAgMjExLCAxMTcsIDExLCAzNSwgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDMyLCA0LCA2MSwgMTEsIDM1LCAzMiwgNCwgMjUzLCAKKyAgICAxNTgsIDExLCAzNSwgMzIsIDQsIDI1MSwgNjYsIDExLCAzNSwgMzIsIDQsIDI0OSwgNjAsIDExLCAzNSwgMzIsIDQsIDc1LCAKKyAgICAxMSwgMzUsIDMyLCA0LCAyNDUsIDYsIDExLCAzNSwgMzIsIDQsIDI0MywgMjAyLCAxMSwgMzUsIDMyLCA0LCAyNDIsIDYwLCAKKyAgICAxMSwgMzUsIDMyLCA0LCA3MywgMTEsIDM1LCAzMiwgNCwgMjM1LCAxNDQsIDExLCAzNSwgMzIsIDQsIDIzNSwgMjMsIDExLCAKKyAgICAzNSwgMzIsIDQsIDE1NiwgMTEsIDM1LCAzMiwgNCwgMTkzLCAxMSwgMzUsIDMyLCA0LCAyMzAsIDI1LCAxMSwgMzUsIDMyLCAKKyAgICA0LCA3NiwgMTEsIDM1LCAzMiwgNCwgMjI2LCAxMDUsIDExLCAzNSwgMzIsIDQsIDIyNCwgOTYsIDExLCAzNSwgMzIsIDQsIAorICAgIDE1MywgMTEsIDM1LCAzMiwgNCwgMjIyLCA5MSwgMTEsIDM1LCAzMiwgNCwgMjE3LCAxNTIsIDExLCAzNSwgMzIsIDQsIDcwLCAKKyAgICAxMSwgMzUsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAzMiwgNCwgMjEyLCA5OCwgMTEsIDM1LCAzMiwgNCwgMjExLCAxNzgsIAorICAgIDExLCAzNSwgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCAyMywgMzIsIDYsIDYxLCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNiwgMjUzLCAxNTgsIDExLCAzNSwgMjMsIDMyLCA2LCAyNTEsIDY2LCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNiwgMjQ5LCA2MCwgMTEsIDM1LCAyMywgMzIsIDYsIDc1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQ1LCA2LCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNiwgMjQzLCAyMDIsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDIsIDYwLCAxMSwgMzUsIDIzLCAzMiwgNiwgNzMsIDExLCAKKyAgICAzNSwgMjMsIDMyLCA2LCAyMzUsIDE0NCwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNSwgMjMsIDExLCAzNSwgMjMsIDMyLCA2LCAKKyAgICAxNTYsIDExLCAzNSwgMjMsIDMyLCA2LCAxOTMsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzAsIDI1LCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNiwgNzYsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDEwNSwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNCwgOTYsIDExLCAzNSwgCisgICAgMjMsIDMyLCA2LCAxNTMsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjIsIDkxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE3LCAxNTIsIAorICAgIDExLCAzNSwgMjMsIDMyLCA2LCA3MCwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNiwgCisgICAgMjEyLCA5OCwgMTEsIDM1LCAyMywgMzIsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjExLCAxMTcsIDExLCAKKyAgICAzNSwgMjMsIDMyLCA2LCAyMTAsIDE1OSwgMTEsIDM1LCAyMywgMzIsIDQsIDYxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUzLCAKKyAgICAxNTgsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTEsIDY2LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ5LCA2MCwgMTEsIDM1LCAyMywgCisgICAgMzIsIDQsIDc1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ1LCA2LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQzLCAyMDIsIDExLCAKKyAgICAzNSwgMjMsIDMyLCA0LCAyNDIsIDYwLCAxMSwgMzUsIDIzLCAzMiwgNCwgNzMsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzUsIAorICAgIDE0NCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMjMsIDExLCAzNSwgMjMsIDMyLCA0LCAxNTYsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA0LCAxOTMsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzAsIDI1LCAxMSwgMzUsIDIzLCAzMiwgNCwgNzYsIDExLCAzNSwgMjMsIAorICAgIDMyLCA0LCAyMjYsIDEwNSwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNCwgOTYsIDExLCAzNSwgMjMsIDMyLCA0LCAxNTMsIDExLCAKKyAgICAzNSwgMjMsIDMyLCA0LCAyMjIsIDkxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE3LCAxNTIsIDExLCAzNSwgMjMsIDMyLCA0LCAKKyAgICA3MCwgMTEsIDM1LCAyMywgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgCisgICAgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjExLCAxMTcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTAsIAorICAgIDE1OSwgMTEsIDIzMCwgMTM4LCA2LCA2MSwgMTEsIDIzMCwgMTM4LCA2LCAyNTMsIDE1OCwgMTEsIDIzMCwgMTM4LCA2LCAKKyAgICAyNTEsIDY2LCAxMSwgMjMwLCAxMzgsIDYsIDI0OSwgNjAsIDExLCAyMzAsIDEzOCwgNiwgNzUsIDExLCAyMzAsIDEzOCwgNiwgCisgICAgMjQ1LCA2LCAxMSwgMjMwLCAxMzgsIDYsIDI0MywgMjAyLCAxMSwgMjMwLCAxMzgsIDYsIDI0MiwgNjAsIDExLCAyMzAsIAorICAgIDEzOCwgNiwgNzMsIDExLCAyMzAsIDEzOCwgNiwgMjM1LCAxNDQsIDExLCAyMzAsIDEzOCwgNiwgMjM1LCAyMywgMTEsIDIzMCwgCisgICAgMTM4LCA2LCAxNTYsIDExLCAyMzAsIDEzOCwgNiwgMTkzLCAxMSwgMjMwLCAxMzgsIDYsIDIzMCwgMjUsIDExLCAyMzAsIAorICAgIDEzOCwgNiwgNzYsIDExLCAyMzAsIDEzOCwgNiwgMjI2LCAxMDUsIDExLCAyMzAsIDEzOCwgNiwgMjI0LCA5NiwgMTEsIDIzMCwgCisgICAgMTM4LCA2LCAxNTMsIDExLCAyMzAsIDEzOCwgNiwgMjIyLCA5MSwgMTEsIDIzMCwgMTM4LCA2LCAyMTcsIDE1MiwgMTEsIAorICAgIDIzMCwgMTM4LCA2LCA3MCwgMTEsIDIzMCwgMTM4LCA2LCAyMTQsIDEwNSwgMTEsIDIzMCwgMTM4LCA2LCAyMTIsIDk4LCAxMSwgCisgICAgMjMwLCAxMzgsIDYsIDIxMSwgMTc4LCAxMSwgMjMwLCAxMzgsIDYsIDIxMSwgMTE3LCAxMSwgMjMwLCAxMzgsIDYsIDIxMCwgCisgICAgMTU5LCAxMSwgMjMwLCAxMzgsIDQsIDYxLCAxMSwgMjMwLCAxMzgsIDQsIDI1MywgMTU4LCAxMSwgMjMwLCAxMzgsIDQsIAorICAgIDI1MSwgNjYsIDExLCAyMzAsIDEzOCwgNCwgMjQ5LCA2MCwgMTEsIDIzMCwgMTM4LCA0LCA3NSwgMTEsIDIzMCwgMTM4LCA0LCAKKyAgICAyNDUsIDYsIDExLCAyMzAsIDEzOCwgNCwgMjQzLCAyMDIsIDExLCAyMzAsIDEzOCwgNCwgMjQyLCA2MCwgMTEsIDIzMCwgCisgICAgMTM4LCA0LCA3MywgMTEsIDIzMCwgMTM4LCA0LCAyMzUsIDE0NCwgMTEsIDIzMCwgMTM4LCA0LCAyMzUsIDIzLCAxMSwgMjMwLCAKKyAgICAxMzgsIDQsIDE1NiwgMTEsIDIzMCwgMTM4LCA0LCAxOTMsIDExLCAyMzAsIDEzOCwgNCwgMjMwLCAyNSwgMTEsIDIzMCwgCisgICAgMTM4LCA0LCA3NiwgMTEsIDIzMCwgMTM4LCA0LCAyMjYsIDEwNSwgMTEsIDIzMCwgMTM4LCA0LCAyMjQsIDk2LCAxMSwgMjMwLCAKKyAgICAxMzgsIDQsIDE1MywgMTEsIDIzMCwgMTM4LCA0LCAyMjIsIDkxLCAxMSwgMjMwLCAxMzgsIDQsIDIxNywgMTUyLCAxMSwgCisgICAgMjMwLCAxMzgsIDQsIDcwLCAxMSwgMjMwLCAxMzgsIDQsIDIxNCwgMTA1LCAxMSwgMjMwLCAxMzgsIDQsIDIxMiwgOTgsIDExLCAKKyAgICAyMzAsIDEzOCwgNCwgMjExLCAxNzgsIDExLCAyMzAsIDEzOCwgNCwgMjExLCAxMTcsIDExLCAyMzAsIDEzOCwgNCwgMjEwLCAKKyAgICAxNTksIDExLCAzMiwgNCwgMjQ3LCAxMTksIDczLCAxMSwgMzIsIDQsIDI0NywgMTE5LCAyMzUsIDE0NCwgMTEsIDIzLCA2LCAKKyAgICAyNTQsIDE0MywgMTEsIDIzLCA2LCAyNTIsIDI2LCAxMSwgMjMsIDYsIDI0MywgMTA3LCAxMSwgMjMsIDYsIDI0OCwgNTQsIAorICAgIDExLCAyMywgNiwgMjQ1LCAxMDAsIDExLCAyMywgNiwgMjEwLCA4NSwgMTEsIDIzLCA2LCAyNDUsIDYzLCAxMSwgMjMsIDYsIAorICAgIDIxNiwgMTc5LCAxMSwgMjMsIDYsIDIzNSwgMTg1LCAxMSwgMjMsIDYsIDIzNCwgMjIyLCAxMSwgMjMsIDYsIDIzMywgOTgsIAorICAgIDExLCAyMywgNiwgMjMwLCAxMDIsIDExLCAyMywgNiwgMjI3LCAyMzcsIDExLCAyMywgNiwgMjExLCAxNTcsIDExLCAyMywgNiwgCisgICAgMjI2LCAxOTksIDExLCAyMywgNiwgMjI1LCAxMDgsIDExLCAyMywgNiwgMjIzLCAzNywgMTEsIDIzLCA2LCAyMTYsIDE4MCwgCisgICAgODcsIDExLCAyMywgNiwgMjE5LCAxNzcsIDExLCAyMywgNiwgMjE3LCA0MSwgMTEsIDIzLCA2LCAyMTQsIDE1NywgMTEsIDIzLCAKKyAgICA2LCAyMjUsIDEzMywgMTEsIDIzLCA2LCAyNTAsIDExMCwgMTEsIDIzLCA2LCAyMjQsIDE2MSwgMTEsIDIzLCA2LCAyMjYsIAorICAgIDIwMSwgMTEsIDIzLCAyMjksIDIyMSwgMTEsIDIzLCA0LCAyNTQsIDE0MywgMTEsIDIzLCA0LCAyNTIsIDI2LCAxMSwgMjMsIAorICAgIDQsIDI0MywgMTA3LCAxMSwgMjMsIDQsIDI0OCwgNTQsIDExLCAyMywgNCwgMjQ1LCAxMDAsIDExLCAyMywgNCwgMjEwLCA4NSwgCisgICAgMTEsIDIzLCA0LCAyNDUsIDYzLCAxMSwgMjMsIDQsIDIxNiwgMTc5LCAxMSwgMjMsIDQsIDIzNSwgMTg1LCAxMSwgMjMsIDQsIAorICAgIDIzNCwgMjIyLCAxMSwgMjMsIDQsIDIzMywgOTgsIDExLCAyMywgNCwgMjMwLCAxMDIsIDExLCAyMywgNCwgMjI3LCAyMzcsIAorICAgIDExLCAyMywgNCwgMjExLCAxNTcsIDExLCAyMywgNCwgMjI2LCAxOTksIDExLCAyMywgNCwgMjI1LCAxMDgsIDExLCAyMywgNCwgCisgICAgMjIzLCAzNywgMTEsIDIzLCA0LCA0MCwgMjE5LCAxNzcsIDExLCAyMywgNCwgMjE5LCAxNzcsIDExLCAyMywgNCwgMjE3LCAKKyAgICA0MSwgMTEsIDIzLCA0LCAyMTQsIDE1NywgMTEsIDIzLCA0LCAyMjUsIDEzMywgMTEsIDIzLCA0LCAyNTAsIDExMCwgMTEsIAorICAgIDIzLCA0LCAyMjQsIDE2MSwgMTEsIDIzLCA0LCAyMjYsIDIwMSwgMTEsIDIzLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAyMywgCisgICAgMjQ1LCAxMDEsIDg3LCAxMSwgMjMsIDIxNiwgMTgwLCA4NywgMTEsIDIzLCAyMzQsIDIyMywgODcsIDExLCAyMywgMjI1LCAKKyAgICAxMzQsIDg3LCAxMSwgMjMsIDIyMywgMzgsIDg3LCAxMSwgMjMsIDIyNSwgMTA5LCA4NywgMTEsIDMyLCA2LCAyNTQsIDE0MywgCisgICAgMTEsIDMyLCA2LCAyNTIsIDI2LCAxMSwgMzIsIDYsIDI0MywgMTA3LCAxMSwgMzIsIDYsIDI0OCwgNTQsIDExLCAzMiwgNiwgCisgICAgMjQ1LCAxMDAsIDExLCAzMiwgNiwgMjEwLCA4NSwgMTEsIDMyLCA2LCAyNDUsIDYzLCAxMSwgMzIsIDYsIDIxNiwgMTc5LCAKKyAgICAxMSwgMzIsIDYsIDIzNSwgMTg1LCAxMSwgMzIsIDYsIDIzNCwgMjIyLCAxMSwgMzIsIDYsIDIzMywgOTgsIDExLCAzMiwgNiwgCisgICAgMjMwLCAxMDIsIDExLCAzMiwgNiwgMjI3LCAyMzcsIDExLCAzMiwgNiwgMjExLCAxNTcsIDExLCAzMiwgNiwgMjI2LCAxOTksIAorICAgIDExLCAzMiwgNiwgMjI1LCAxMDgsIDExLCAzMiwgNiwgMjIzLCAzNywgMTEsIDMyLCA2LCAyMTYsIDE4MCwgODcsIDExLCAzMiwgCisgICAgNiwgMjE5LCAxNzcsIDExLCAzMiwgNiwgMjE3LCA0MSwgMTEsIDMyLCA2LCAyMTQsIDE1NywgMTEsIDMyLCA2LCAyMjUsIAorICAgIDEzMywgMTEsIDMyLCA2LCAyNTAsIDExMCwgMTEsIDMyLCA2LCAyMjQsIDE2MSwgMTEsIDMyLCA2LCAyMjYsIDIwMSwgMTEsIAorICAgIDMyLCAyMjksIDIyMSwgMTEsIDMyLCA0LCAyNTQsIDE0MywgMTEsIDMyLCA0LCAyNTIsIDI2LCAxMSwgMzIsIDQsIDI0MywgCisgICAgMTA3LCAxMSwgMzIsIDQsIDI0OCwgNTQsIDExLCAzMiwgNCwgMjQ1LCAxMDAsIDExLCAzMiwgNCwgMjEwLCA4NSwgMTEsIDMyLCAKKyAgICA0LCAyNDUsIDYzLCAxMSwgMzIsIDQsIDIxNiwgMTc5LCAxMSwgMzIsIDQsIDIzNSwgMTg1LCAxMSwgMzIsIDQsIDIzNCwgCisgICAgMjIyLCAxMSwgMzIsIDQsIDIzMywgOTgsIDExLCAzMiwgNCwgMjMwLCAxMDIsIDExLCAzMiwgNCwgMjI3LCAyMzcsIDExLCAKKyAgICAzMiwgNCwgMjExLCAxNTcsIDExLCAzMiwgNCwgMjI2LCAxOTksIDExLCAzMiwgNCwgMjI1LCAxMDgsIDExLCAzMiwgNCwgCisgICAgMjIzLCAzNywgMTEsIDMyLCA0LCA0MCwgMjE5LCAxNzcsIDExLCAzMiwgNCwgMjE5LCAxNzcsIDExLCAzMiwgNCwgMjE3LCAKKyAgICA0MSwgMTEsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDMyLCA0LCAyMjUsIDEzMywgMTEsIDMyLCA0LCAyNTAsIDExMCwgMTEsIAorICAgIDMyLCA0LCAyMjQsIDE2MSwgMTEsIDMyLCA0LCAyMjYsIDIwMSwgMTEsIDMyLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAzMiwgCisgICAgMjQ1LCAxMDEsIDg3LCAxMSwgMzIsIDIxNiwgMTgwLCA4NywgMTEsIDMyLCAyMzQsIDIyMywgODcsIDExLCAzMiwgMjI1LCAKKyAgICAxMzQsIDg3LCAxMSwgMzIsIDIyMywgMzgsIDg3LCAxMSwgMzIsIDIyNSwgMTA5LCA4NywgMTEsIDIzLCAzMiwgNiwgMjU0LCAKKyAgICAxNDMsIDExLCAyMywgMzIsIDYsIDI1MiwgMjYsIDExLCAyMywgMzIsIDYsIDI0MywgMTA3LCAxMSwgMjMsIDMyLCA2LCAyNDgsIAorICAgIDU0LCAxMSwgMjMsIDMyLCA2LCAyNDUsIDEwMCwgMTEsIDIzLCAzMiwgNiwgMjEwLCA4NSwgMTEsIDIzLCAzMiwgNiwgMjQ1LCAKKyAgICA2MywgMTEsIDIzLCAzMiwgNiwgMjE2LCAxNzksIDExLCAyMywgMzIsIDYsIDIzNSwgMTg1LCAxMSwgMjMsIDMyLCA2LCAyMzQsIAorICAgIDIyMiwgMTEsIDIzLCAzMiwgNiwgMjMzLCA5OCwgMTEsIDIzLCAzMiwgNiwgMjMwLCAxMDIsIDExLCAyMywgMzIsIDYsIDIyNywgCisgICAgMjM3LCAxMSwgMjMsIDMyLCA2LCAyMTEsIDE1NywgMTEsIDIzLCAzMiwgNiwgMjI2LCAxOTksIDExLCAyMywgMzIsIDYsIAorICAgIDIyNSwgMTA4LCAxMSwgMjMsIDMyLCA2LCAyMjMsIDM3LCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE4MCwgODcsIDExLCAyMywgCisgICAgMzIsIDYsIDIxOSwgMTc3LCAxMSwgMjMsIDMyLCA2LCAyMTcsIDQxLCAxMSwgMjMsIDMyLCA2LCAyMTQsIDE1NywgMTEsIDIzLCAKKyAgICAzMiwgNiwgMjI1LCAxMzMsIDExLCAyMywgMzIsIDYsIDI1MCwgMTEwLCAxMSwgMjMsIDMyLCA2LCAyMjQsIDE2MSwgMTEsIAorICAgIDIzLCAzMiwgNiwgMjI2LCAyMDEsIDExLCAyMywgMzIsIDIyOSwgMjIxLCAxMSwgMjMsIDMyLCA0LCAyNTQsIDE0MywgMTEsIAorICAgIDIzLCAzMiwgNCwgMjUyLCAyNiwgMTEsIDIzLCAzMiwgNCwgMjQzLCAxMDcsIDExLCAyMywgMzIsIDQsIDI0OCwgNTQsIDExLCAKKyAgICAyMywgMzIsIDQsIDI0NSwgMTAwLCAxMSwgMjMsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA0LCAyNDUsIDYzLCAxMSwgCisgICAgMjMsIDMyLCA0LCAyMTYsIDE3OSwgMTEsIDIzLCAzMiwgNCwgMjM1LCAxODUsIDExLCAyMywgMzIsIDQsIDIzNCwgMjIyLCAKKyAgICAxMSwgMjMsIDMyLCA0LCAyMzMsIDk4LCAxMSwgMjMsIDMyLCA0LCAyMzAsIDEwMiwgMTEsIDIzLCAzMiwgNCwgMjI3LCAyMzcsIAorICAgIDExLCAyMywgMzIsIDQsIDIxMSwgMTU3LCAxMSwgMjMsIDMyLCA0LCAyMjYsIDE5OSwgMTEsIDIzLCAzMiwgNCwgMjI1LCAKKyAgICAxMDgsIDExLCAyMywgMzIsIDQsIDIyMywgMzcsIDExLCAyMywgMzIsIDQsIDQwLCAyMTksIDE3NywgMTEsIDIzLCAzMiwgNCwgCisgICAgMjE5LCAxNzcsIDExLCAyMywgMzIsIDQsIDIxNywgNDEsIDExLCAyMywgMzIsIDQsIDIxNCwgMTU3LCAxMSwgMjMsIDMyLCA0LCAKKyAgICAyMjUsIDEzMywgMTEsIDIzLCAzMiwgNCwgMjUwLCAxMTAsIDExLCAyMywgMzIsIDQsIDIyNCwgMTYxLCAxMSwgMjMsIDMyLCAKKyAgICA0LCAyMjYsIDIwMSwgMTEsIDIzLCAzMiwgMjI1LCAyNTMsIDI0NywgMjMzLCAxMSwgMjMsIDMyLCAyNDUsIDEwMSwgODcsIAorICAgIDExLCAyMywgMzIsIDIxNiwgMTgwLCA4NywgMTEsIDIzLCAzMiwgMjM0LCAyMjMsIDg3LCAxMSwgMjMsIDMyLCAyMjUsIDEzNCwgCisgICAgODcsIDExLCAyMywgMzIsIDIyMywgMzgsIDg3LCAxMSwgMjMsIDMyLCAyMjUsIDEwOSwgODcsIDExLCAzNSwgMjMsIDYsIAorICAgIDI1NCwgMTQzLCAxMSwgMzUsIDIzLCA2LCAyNTIsIDI2LCAxMSwgMzUsIDIzLCA2LCAyNDMsIDEwNywgMTEsIDM1LCAyMywgNiwgCisgICAgMjQ4LCA1NCwgMTEsIDM1LCAyMywgNiwgMjQ1LCAxMDAsIDExLCAzNSwgMjMsIDYsIDIxMCwgODUsIDExLCAzNSwgMjMsIDYsIAorICAgIDI0NSwgNjMsIDExLCAzNSwgMjMsIDYsIDIxNiwgMTc5LCAxMSwgMzUsIDIzLCA2LCAyMzUsIDE4NSwgMTEsIDM1LCAyMywgNiwgCisgICAgMjM0LCAyMjIsIDExLCAzNSwgMjMsIDYsIDIzMywgOTgsIDExLCAzNSwgMjMsIDYsIDIzMCwgMTAyLCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyMjcsIDIzNywgMTEsIDM1LCAyMywgNiwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDYsIDIyNiwgMTk5LCAxMSwgMzUsIDIzLCAKKyAgICA2LCAyMjUsIDEwOCwgMTEsIDM1LCAyMywgNiwgMjIzLCAzNywgMTEsIDM1LCAyMywgNiwgMjE2LCAxODAsIDg3LCAxMSwgMzUsIAorICAgIDIzLCA2LCAyMTksIDE3NywgMTEsIDM1LCAyMywgNiwgMjE3LCA0MSwgMTEsIDM1LCAyMywgNiwgMjE0LCAxNTcsIDExLCAzNSwgCisgICAgMjMsIDYsIDIyNSwgMTMzLCAxMSwgMzUsIDIzLCA2LCAyNTAsIDExMCwgMTEsIDM1LCAyMywgNiwgMjI0LCAxNjEsIDExLCAKKyAgICAzNSwgMjMsIDYsIDIyNiwgMjAxLCAxMSwgMzUsIDIzLCAyMjksIDIyMSwgMTEsIDM1LCAyMywgNCwgMjU0LCAxNDMsIDExLCAKKyAgICAzNSwgMjMsIDQsIDI1MiwgMjYsIDExLCAzNSwgMjMsIDQsIDI0MywgMTA3LCAxMSwgMzUsIDIzLCA0LCAyNDgsIDU0LCAxMSwgCisgICAgMzUsIDIzLCA0LCAyNDUsIDEwMCwgMTEsIDM1LCAyMywgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgNCwgMjQ1LCA2MywgMTEsIAorICAgIDM1LCAyMywgNCwgMjE2LCAxNzksIDExLCAzNSwgMjMsIDQsIDIzNSwgMTg1LCAxMSwgMzUsIDIzLCA0LCAyMzQsIDIyMiwgCisgICAgMTEsIDM1LCAyMywgNCwgMjMzLCA5OCwgMTEsIDM1LCAyMywgNCwgMjMwLCAxMDIsIDExLCAzNSwgMjMsIDQsIDIyNywgMjM3LCAKKyAgICAxMSwgMzUsIDIzLCA0LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgNCwgMjI2LCAxOTksIDExLCAzNSwgMjMsIDQsIDIyNSwgCisgICAgMTA4LCAxMSwgMzUsIDIzLCA0LCAyMjMsIDM3LCAxMSwgMzUsIDIzLCA0LCA0MCwgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDQsIAorICAgIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCA0LCAyMTcsIDQxLCAxMSwgMzUsIDIzLCA0LCAyMTQsIDE1NywgMTEsIDM1LCAyMywgNCwgCisgICAgMjI1LCAxMzMsIDExLCAzNSwgMjMsIDQsIDI1MCwgMTEwLCAxMSwgMzUsIDIzLCA0LCAyMjQsIDE2MSwgMTEsIDM1LCAyMywgCisgICAgNCwgMjI2LCAyMDEsIDExLCAzNSwgMjMsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDM1LCAyMywgMjQ1LCAxMDEsIDg3LCAKKyAgICAxMSwgMzUsIDIzLCAyMTYsIDE4MCwgODcsIDExLCAzNSwgMjMsIDIzNCwgMjIzLCA4NywgMTEsIDM1LCAyMywgMjI1LCAxMzQsIAorICAgIDg3LCAxMSwgMzUsIDIzLCAyMjMsIDM4LCA4NywgMTEsIDM1LCAyMywgMjI1LCAxMDksIDg3LCAxMSwgMzUsIDIzLCAzMiwgNiwgCisgICAgMjU0LCAxNDMsIDExLCAzNSwgMjMsIDMyLCA2LCAyNTIsIDI2LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQzLCAxMDcsIDExLCAKKyAgICAzNSwgMjMsIDMyLCA2LCAyNDgsIDU0LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQ1LCAxMDAsIDExLCAzNSwgMjMsIDMyLCA2LCAKKyAgICAyMTAsIDg1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQ1LCA2MywgMTEsIDM1LCAyMywgMzIsIDYsIDIxNiwgMTc5LCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNiwgMjM1LCAxODUsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzQsIDIyMiwgMTEsIDM1LCAyMywgMzIsIDYsIDIzMywgCisgICAgOTgsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzAsIDEwMiwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNywgMjM3LCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNiwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDE5OSwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNSwgCisgICAgMTA4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjIzLCAzNywgMTEsIDM1LCAyMywgMzIsIDYsIDIxNiwgMTgwLCA4NywgMTEsIDM1LCAKKyAgICAyMywgMzIsIDYsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE3LCA0MSwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNCwgCisgICAgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI1LCAxMzMsIDExLCAzNSwgMjMsIDMyLCA2LCAyNTAsIDExMCwgMTEsIDM1LCAKKyAgICAyMywgMzIsIDYsIDIyNCwgMTYxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI2LCAyMDEsIDExLCAzNSwgMjMsIDMyLCAyMjksIAorICAgIDIyMSwgMTEsIDM1LCAyMywgMzIsIDQsIDI1NCwgMTQzLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUyLCAyNiwgMTEsIDM1LCAyMywgCisgICAgMzIsIDQsIDI0MywgMTA3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ4LCA1NCwgMTEsIDM1LCAyMywgMzIsIDQsIDI0NSwgMTAwLCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgMzIsIDQsIDI0NSwgNjMsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA0LCAyMTYsIDE3OSwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMTg1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM0LCAyMjIsIAorICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMzMsIDk4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjMwLCAxMDIsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA0LCAyMjcsIDIzNywgMTEsIDM1LCAyMywgMzIsIDQsIDIxMSwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI2LCAxOTksIAorICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMjUsIDEwOCwgMTEsIDM1LCAyMywgMzIsIDQsIDIyMywgMzcsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA0LCA0MCwgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTksIDE3NywgMTEsIDM1LCAyMywgMzIsIDQsIDIxNywgNDEsIAorICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDM1LCAyMywgMzIsIDQsIDIyNSwgMTMzLCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNCwgMjUwLCAxMTAsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjQsIDE2MSwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNiwgMjAxLCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgMjI1LCAyNTMsIDI0NywgMjMzLCAxMSwgMzUsIDIzLCAzMiwgMjQ1LCAxMDEsIDg3LCAxMSwgMzUsIAorICAgIDIzLCAzMiwgMjE2LCAxODAsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjM0LCAyMjMsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjI1LCAKKyAgICAxMzQsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjIzLCAzOCwgODcsIDExLCAzNSwgMjMsIDMyLCAyMjUsIDEwOSwgODcsIDExLCAKKyAgICAyMywgNiwgMjQ3LCAyMjcsIDExLCAyMywgNCwgMjQ3LCAyMjcsIDExLCAyMywgMjEsIDIxMCwgODYsIDExLCAyMywgMjEsIAorICAgIDExMCwgMTEsIDIzLCAyMSwgMTA1LCAxMSwgMjMsIDIxLCAxNTgsIDExLCAyMywgMjEsIDE2MSwgMTEsIDIzLCAyMSwgMTg5LCAKKyAgICAxMSwgMjMsIDIxLCAxOTQsIDExLCAyMywgMjEsIDE5OCwgMTEsIDIzLCAyMSwgMTk1LCAxMSwgMjMsIDIxLCAyMDAsIDExLCAKKyAgICAxMzksIDIxLCAyMTAsIDg2LCAxMSwgMTM5LCAyMSwgMTEwLCAxMSwgMTM5LCAyMSwgMTA1LCAxMSwgMTM5LCAyMSwgMTU4LCAKKyAgICAxMSwgMTM5LCAyMSwgMTYxLCAxMSwgMTM5LCAyMSwgMTg5LCAxMSwgMTM5LCAyMSwgMTk0LCAxMSwgMTM5LCAyMSwgMTk4LCAKKyAgICAxMSwgMTM5LCAyMSwgMTk1LCAxMSwgMTM5LCAyMSwgMjAwLCAxMSwgMzUsIDIxLCAyMTAsIDg2LCAxMSwgMzUsIDIxLCAxMTAsIAorICAgIDExLCAzNSwgMjEsIDEwNSwgMTEsIDM1LCAyMSwgMTU4LCAxMSwgMzUsIDIxLCAxNjEsIDExLCAzNSwgMjEsIDE4OSwgMTEsIAorICAgIDM1LCAyMSwgMTk0LCAxMSwgMzUsIDIxLCAxOTgsIDExLCAzNSwgMjEsIDE5NSwgMTEsIDM1LCAyMSwgMjAwLCAxMSwgMzUsIAorICAgIDIzLCAyMSwgMjEwLCA4NiwgMTEsIDM1LCAyMywgMjEsIDExMCwgMTEsIDM1LCAyMywgMjEsIDEwNSwgMTEsIDM1LCAyMywgCisgICAgMjEsIDE1OCwgMTEsIDM1LCAyMywgMjEsIDE2MSwgMTEsIDM1LCAyMywgMjEsIDE4OSwgMTEsIDM1LCAyMywgMjEsIDE5NCwgCisgICAgMTEsIDM1LCAyMywgMjEsIDE5OCwgMTEsIDM1LCAyMywgMjEsIDE5NSwgMTEsIDM1LCAyMywgMjEsIDIwMCwgMTEsIDIzMCwgCisgICAgMTM4LCAyMSwgMjEwLCA4NiwgMTEsIDIzMCwgMTM4LCAyMSwgMTEwLCAxMSwgMjMwLCAxMzgsIDIxLCAxMDUsIDExLCAyMzAsIAorICAgIDEzOCwgMjEsIDE1OCwgMTEsIDIzMCwgMTM4LCAyMSwgMTYxLCAxMSwgMjMwLCAxMzgsIDIxLCAxODksIDExLCAyMzAsIDEzOCwgCisgICAgMjEsIDE5NCwgMTEsIDIzMCwgMTM4LCAyMSwgMTk4LCAxMSwgMjMwLCAxMzgsIDIxLCAxOTUsIDExLCAyMzAsIDEzOCwgMjEsIAorICAgIDIwMCwgMTAsIDExLCAyNTQsIDE3MCwgMTAsIDExLCAyNTIsIDU0LCAxMCwgMTEsIDIzNSwgMTIzLCAxMCwgMTEsIDI0OCwgCisgICAgMTk1LCAxMCwgMTEsIDIxMiwgMzAsIDEwLCAxMSwgMjEwLCAxMDgsIDEwLCAxMSwgMjQyLCAzNywgMTAsIDExLCAyMTcsIDgwLCAKKyAgICAxMCwgMTEsIDIxMSwgNDMsIDEwLCAxMSwgMjM0LCAyNTAsIDEwLCAxMSwgMjMzLCAxMDIsIDEwLCAxMSwgMjMxLCA3OCwgMTAsIAorICAgIDExLCAyMjgsIDYyLCAxMCwgMTEsIDIyMSwgMTY2LCAxMCwgMTEsIDI1NCwgMTk2LCAxMCwgMTEsIDI0NCwgMTQyLCAxMCwgCisgICAgMTEsIDIyMiwgMjYsIDEwLCAxMSwgMjI0LCA4MSwgMTAsIDExLCAyMjMsIDk1LCAxMCwgMTEsIDIyMCwgNTksIDEwLCAxMSwgCisgICAgMjE3LCA3LCAxMCwgMTEsIDIxNiwgMTkyLCAxMCwgMTEsIDIzNCwgMTI5LCAxMCwgMTEsIDIxNiwgMjAyLCAxMCwgMTEsIAorICAgIDI0OCwgMjE2LCAxMCwgMTEsIDIxMCwgMTExLCAxMCwgMTEsIDI0MiwgMjQ0LCAxMCwgMTEsIDI0NywgMTE5LCAyNTIsIDU0LCAKKyAgICAxMCwgMTEsIDI0NywgMTE5LCAyMjgsIDYyLCAxMCwgMTEsIDI0NywgMTE5LCAyNDQsIDE0MiwgMTAsIDExLCAyNDcsIDExOSwgCisgICAgMjI0LCA4MSwgMTAsIDExLCA2NSwgMjUyLCA1NCwgMTAsIDExLCA2NSwgMjM1LCAxMjMsIDEwLCAxMSwgNjUsIDI0MSwgMjE4LCAKKyAgICAxMCwgMTEsIDY1LCAyNDIsIDM3LCAxMCwgMTEsIDY1LCAyMTEsIDQzLCAxMCwgMTEsIDY1LCAyMzQsIDI1MCwgMTAsIDExLCAKKyAgICA2NSwgMjMzLCAxMDIsIDEwLCAxMSwgNjUsIDIzMSwgNzgsIDEwLCAxMSwgNjUsIDIyOCwgNjIsIDEwLCAxMSwgNjUsIDIyMSwgCisgICAgMTY2LCAxMCwgMTEsIDY1LCAyNTQsIDE5NiwgMTAsIDExLCA2NSwgMjQ0LCAxNDIsIDEwLCAxMSwgNjUsIDIyMiwgMjYsIDEwLCAKKyAgICAxMSwgNjUsIDIyNCwgODEsIDEwLCAxMSwgNjUsIDIyMCwgNTksIDEwLCAxMSwgNjUsIDIxNywgNywgMTAsIDExLCA2NSwgCisgICAgMjE2LCAxOTIsIDEwLCAxMSwgNjUsIDIzNCwgMTI5LCAxMCwgMTEsIDY1LCAyNDgsIDIxNiwgMTAsIDExLCA2NSwgMjQyLCAKKyAgICAyNDQsIDEwLCAxMSwgMjE3LCA3NiwgMjM1LCAxMjMsIDEwLCAxMSwgMjE3LCA3NiwgMjQyLCAzNywgMTAsIDExLCAyMTcsIAorICAgIDc2LCAyMTEsIDQzLCAxMCwgMTEsIDIxNywgNzYsIDIzMywgMTAyLCAxMCwgMTEsIDIxNywgNzYsIDIyOCwgNjIsIDEwLCAxMSwgCisgICAgMjE3LCA3NiwgMjIxLCAxNjYsIDEwLCAxMSwgMjE3LCA3NiwgMjU0LCAxOTYsIDEwLCAxMSwgMjE3LCA3NiwgMjIyLCAyNiwgCisgICAgMTAsIDExLCAyMTcsIDc2LCAyMjQsIDgxLCAxMCwgMTEsIDIxNywgNzYsIDIyMCwgNTksIDEwLCAxMSwgMjE3LCA3NiwgMjM0LCAKKyAgICAxMjksIDEwLCAxMSwgMjE3LCA3NiwgMjQ4LCAyMTYsIDEwLCAxMSwgMjE3LCA3NiwgMjQyLCAyNDQsIDEwLCAxMSwgMjE3LCAKKyAgICA3NiwgMjQ3LCAxMTksIDIyOCwgNjIsIDEwLCAxMSwgMjE3LCA3NiwgMjQ3LCAxMTksIDIyNCwgODEsIDEwLCAxMSwgMjE4LCAKKyAgICAxMTAsIDI1MiwgNTQsIDEwLCAxMSwgMjE4LCAxMTAsIDIzNSwgMTIzLCAxMCwgMTEsIDIxOCwgMTEwLCAyNDEsIDIxOCwgMTAsIAorICAgIDExLCAyMTgsIDExMCwgMjQyLCAzNywgMTAsIDExLCAyMTgsIDExMCwgMjE3LCA4MCwgMTAsIDExLCAyMTgsIDExMCwgMjExLCAKKyAgICA0MywgMTAsIDExLCAyMTgsIDExMCwgMjM0LCAyNTAsIDEwLCAxMSwgMjE4LCAxMTAsIDIzMSwgNzgsIDEwLCAxMSwgMjE4LCAKKyAgICAxMTAsIDIyOCwgNjIsIDEwLCAxMSwgMjE4LCAxMTAsIDIyMSwgMTY2LCAxMCwgMTEsIDIxOCwgMTEwLCAyNTQsIDE5NiwgMTAsIAorICAgIDExLCAyMTgsIDExMCwgMjQ0LCAxNDIsIDEwLCAxMSwgMjE4LCAxMTAsIDIyMiwgMjYsIDEwLCAxMSwgMjE4LCAxMTAsIDIyNCwgCisgICAgODEsIDEwLCAxMSwgMjE4LCAxMTAsIDIyMCwgNTksIDEwLCAxMSwgMjE4LCAxMTAsIDIxNywgNywgMTAsIDExLCAyMTgsIAorICAgIDExMCwgMjE2LCAxOTIsIDEwLCAxMSwgMjE4LCAxMTAsIDIzNCwgMTI5LCAxMCwgMTEsIDIxOCwgMTEwLCAyNDgsIDIxNiwgCisgICAgMTAsIDExLCAyMTgsIDExMCwgMjEwLCAxMTEsIDEwLCAxMSwgMjE4LCAxMTAsIDI0MiwgMjQ0LCAxMCwgMTEsIDIxOCwgMTEwLCAKKyAgICAyNDcsIDExOSwgMjUyLCA1NCwgMTAsIDExLCAyMTgsIDExMCwgMjQ3LCAxMTksIDI0NCwgMTQyLCAxMCwgMTEsIDIzMiwgCisgICAgMTIyLCAyNTQsIDE3MCwgMTAsIDExLCAyMzIsIDEyMiwgMjUyLCA1NCwgMTAsIDExLCAyMzIsIDEyMiwgMjM1LCAxMjMsIDEwLCAKKyAgICAxMSwgMjMyLCAxMjIsIDI0OCwgMTk1LCAxMCwgMTEsIDIzMiwgMTIyLCAyNDEsIDIxOCwgMTAsIDExLCAyMzIsIDEyMiwgCisgICAgMjEyLCAzMCwgMTAsIDExLCAyMzIsIDEyMiwgMjEwLCAxMDgsIDEwLCAxMSwgMjMyLCAxMjIsIDI0MiwgMzcsIDEwLCAxMSwgCisgICAgMjMyLCAxMjIsIDIxNywgODAsIDEwLCAxMSwgMjMyLCAxMjIsIDIxMSwgNDMsIDEwLCAxMSwgMjMyLCAxMjIsIDIzMywgMTAyLCAKKyAgICAxMCwgMTEsIDIzMiwgMTIyLCAyMzEsIDc4LCAxMCwgMTEsIDIzMiwgMTIyLCAyMjgsIDYyLCAxMCwgMTEsIDIzMiwgMTIyLCAKKyAgICAyMjEsIDE2NiwgMTAsIDExLCAyMzIsIDEyMiwgMjU0LCAxOTYsIDEwLCAxMSwgMjMyLCAxMjIsIDI0NCwgMTQyLCAxMCwgMTEsIAorICAgIDIzMiwgMTIyLCAyMjIsIDI2LCAxMCwgMTEsIDIzMiwgMTIyLCAyMjQsIDgxLCAxMCwgMTEsIDIzMiwgMTIyLCAyMjMsIDk1LCAKKyAgICAxMCwgMTEsIDIzMiwgMTIyLCAyMjAsIDU5LCAxMCwgMTEsIDIzMiwgMTIyLCAyMTcsIDcsIDEwLCAxMSwgMjMyLCAxMjIsIAorICAgIDIxNiwgMTkyLCAxMCwgMTEsIDIzMiwgMTIyLCAyMzQsIDEyOSwgMTAsIDExLCAyMzIsIDEyMiwgMjE2LCAyMDIsIDEwLCAxMSwgCisgICAgMjMyLCAxMjIsIDI0OCwgMjE2LCAxMCwgMTEsIDIzMiwgMTIyLCAyMTAsIDExMSwgMTAsIDExLCAyMzIsIDEyMiwgMjQyLCAKKyAgICAyNDQsIDEwLCAxMSwgMTM5LCAyNTIsIDU0LCAxMCwgMTEsIDEzOSwgMjM1LCAxMjMsIDEwLCAxMSwgMTM5LCAyNDgsIDE5NSwgCisgICAgMTAsIDExLCAxMzksIDIxMiwgMzAsIDEwLCAxMSwgMTM5LCAyMTAsIDEwOCwgMTAsIDExLCAxMzksIDI0MiwgMzcsIDEwLCAKKyAgICAxMSwgMTM5LCAyMTcsIDgwLCAxMCwgMTEsIDEzOSwgMjExLCA0MywgMTAsIDExLCAxMzksIDIzMywgMTAyLCAxMCwgMTEsIAorICAgIDEzOSwgMjMxLCA3OCwgMTAsIDExLCAxMzksIDIyOCwgNjIsIDEwLCAxMSwgMTM5LCAyMjEsIDE2NiwgMTAsIDExLCAxMzksIAorICAgIDI1NCwgMTk2LCAxMCwgMTEsIDEzOSwgMjQ0LCAxNDIsIDEwLCAxMSwgMTM5LCAyMjIsIDI2LCAxMCwgMTEsIDEzOSwgMjI0LCAKKyAgICA4MSwgMTAsIDExLCAxMzksIDIyMywgOTUsIDEwLCAxMSwgMTM5LCAyMjAsIDU5LCAxMCwgMTEsIDEzOSwgMjE3LCA3LCAxMCwgCisgICAgMTEsIDEzOSwgMjE2LCAxOTIsIDEwLCAxMSwgMTM5LCAyMzQsIDEyOSwgMTAsIDExLCAxMzksIDIxNiwgMjAyLCAxMCwgMTEsIAorICAgIDEzOSwgMjQ4LCAyMTYsIDEwLCAxMSwgMTM5LCAyMTAsIDExMSwgMTAsIDExLCAxMzksIDI0MiwgMjQ0LCAxMCwgMTEsIDIyNiwgCisgICAgMTY4LCA2NiwgMiwgMTIyLCAyLCAyMTcsIDQzLCAxMCwgMTEsIDIyNiwgMTY4LCAxMjIsIDIsIDI0OCwgMTk1LCAyMzEsIAorICAgIDIwNSwgODYsIDI0NSwgMjIwLCAyMTEsIDIzOSwgMjMxLCAyMDUsIDg2LCAyMTksIDI4LCAyMTEsIDIzOSwgMjMxLCAyMDUsIAorICAgIDg2LCAyMTIsIDksIDIxMSwgMjM5LCAyMzEsIDIwNSwgODYsIDIyOCwgNTYsIDIxMSwgMjM5LCAyMzEsIDIwNSwgODYsIDIyMywgCisgICAgMTExLCAyNDYsIDk2LCAyMzEsIDIwNSwgODYsIDI0MiwgMTI3LCAyNDYsIDk2LCAyMzEsIDIwNSwgODYsIDcxLCAyNDYsIDk2LCAKKyAgICAyMzEsIDIwNSwgODYsIDEyMywgNjQsIDI1MCwgMTQxLCAyMzEsIDIwNSwgODYsIDExMywgNjQsIDI1MCwgMTQxLCAyMzEsIAorICAgIDIwNSwgODYsIDEzNCwgNjQsIDI1MCwgMTQxLCAyMzEsIDIwNSwgODYsIDI0NCwgMTEsIDY0LCAyNTAsIDE0MSwgMjMxLCAKKyAgICAyMDUsIDg2LCAyNDQsIDgxLCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMjE5LCAxMjUsIDY0LCAyNTAsIDE0MSwgCisgICAgMjMxLCAyMDUsIDg2LCAyMjAsIDEyMiwgNjQsIDI1MCwgMTQxLCAyMzEsIDIwNSwgODYsIDI0NSwgMTkzLCA2NCwgMjUwLCAKKyAgICAxNDEsIDIzMSwgMjA1LCA4NiwgMjI4LCAyMDAsIDY0LCAyNTAsIDE0MSwgMjMxLCAyMDUsIDg2LCAxMjMsIDY0LCAyNTIsIAorICAgIDE1MywgMjMxLCAyMDUsIDg2LCAxMTMsIDY0LCAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAxMzQsIDY0LCAyNTIsIDE1MywgCisgICAgMjMxLCAyMDUsIDg2LCAyNDQsIDExLCA2NCwgMjUyLCAxNTMsIDIzMSwgMjA1LCA4NiwgMjQ0LCA4MSwgNjQsIDI1MiwgMTUzLCAKKyAgICAyMzEsIDIwNSwgODYsIDIxOSwgMTI1LCA2NCwgMjUyLCAxNTMsIDIzMSwgMjA1LCA4NiwgMjIwLCAxMjIsIDY0LCAyNTIsIAorICAgIDE1MywgMjMxLCAyMDUsIDg2LCAyNDUsIDE5MywgNjQsIDI1MiwgMTUzLCAyMzEsIDIwNSwgODYsIDIyOCwgMjAwLCA2NCwgCisgICAgMjUyLCAxNTMsIDIzMSwgMjA1LCA4NiwgMTIzLCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAxMTMsIDY0LCAyNTAsIDM0LCAKKyAgICAyMzEsIDIwNSwgODYsIDEzNCwgNjQsIDI1MCwgMzQsIDIzMSwgMjA1LCA4NiwgMjQ0LCAxMSwgNjQsIDI1MCwgMzQsIDIzMSwgCisgICAgMjA1LCA4NiwgMjQ0LCA4MSwgNjQsIDI1MCwgMzQsIDIzMSwgMjA1LCA4NiwgMjE5LCAxMjUsIDY0LCAyNTAsIDM0LCAyMzEsIAorICAgIDIwNSwgODYsIDIyMCwgMTIyLCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAyNDUsIDE5MywgNjQsIDI1MCwgMzQsIDIzMSwgCisgICAgMjA1LCA4NiwgMjI4LCAyMDAsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDIyNSwgMjUsIDIzMSwgMjA1LCA4NiwgMjI2LCAKKyAgICAxNTYsIDIzMSwgMjA1LCA4NiwgMjUyLCAxNTQsIDIzMSwgMjA1LCA4NiwgMjUwLCA3MCwgMjMxLCAyMDUsIDg2LCAyMTgsIAorICAgIDIzOSwgMjMxLCAyMDUsIDg2LCAyMTgsIDM5LCAyMzEsIDIwNSwgODYsIDI1MywgMTc5LCAyMzEsIDIwNSwgODYsIDIxMSwgCisgICAgMjMyLCAyMzEsIDIwNSwgODYsIDIzNSwgNjIsIDIzMSwgMjA1LCA4NiwgMjUyLCAxODQsIDEzMSwgODYsIDIwMywgMjUyLCAKKyAgICAxODQsIDEzMSwgODYsIDI0MSwgNDMsIDEzMSwgODYsIDI0MSwgNDIsIDEzMSwgODYsIDI0MSwgNDEsIDEzMSwgODYsIDI0MSwgCisgICAgNDAsIDEzMSwgODYsIDI0MSwgMzksIDEzMSwgODYsIDI0MSwgMzgsIDEzMSwgODYsIDI0MSwgMzcsIDEzMSwgODYsIDI0MSwgCisgICAgMzYsIDEzMSwgODYsIDI0MSwgMzUsIDEzMSwgODYsIDI0MSwgMzQsIDEzMSwgODYsIDI0MSwgMzMsIDEzMSwgODYsIDI0MSwgCisgICAgMzIsIDEzMSwgODYsIDI0MSwgMzEsIDEzMSwgODYsIDI0MSwgMzAsIDEzMSwgODYsIDI0MSwgMjksIDEzMSwgODYsIDI0MSwgCisgICAgMjgsIDEzMSwgODYsIDI0MSwgMjcsIDEzMSwgODYsIDI0MSwgMjYsIDEzMSwgODYsIDI0MSwgMjUsIDEzMSwgODYsIDI0MSwgCisgICAgMjQsIDEzMSwgODYsIDI0MSwgMjMsIDEzMSwgODYsIDI0MSwgMjIsIDEzMSwgODYsIDI0MSwgMjEsIDEzMSwgODYsIDI0MSwgCisgICAgMjAsIDEzMSwgODYsIDI0MSwgMTksIDEzMSwgODYsIDI0MSwgMTgsIDEzMSwgODYsIDI0MSwgMTcsIDEzMSwgODYsIDI0MSwgCisgICAgMTYsIDEzMSwgODYsIDI0MSwgMTUsIDEzMSwgODYsIDI0MSwgMTQsIDEzMSwgODYsIDI0MSwgMTMsIDEzMSwgODYsIDI0MSwgCisgICAgMTIsIDEzMSwgODYsIDI0MSwgMTEsIDEzMSwgODYsIDI0MSwgMTAsIDEzMSwgODYsIDI0MSwgOSwgMTMxLCA4NiwgMjQxLCA4LCAKKyAgICAxMzEsIDg2LCAyNDEsIDcsIDEzMSwgODYsIDI0MSwgNiwgMTMxLCA4NiwgMjQxLCA1LCAxMzEsIDg2LCAyNDEsIDQsIDEzMSwgCisgICAgODYsIDI0MSwgMywgMTMxLCA4NiwgMjQxLCAyLCAxMzEsIDg2LCAyNDEsIDEsIDEzMSwgODYsIDI0MSwgMCwgMTMxLCA4NiwgCisgICAgMjQwLCAyNTUsIDEzMSwgODYsIDI0MCwgMjU0LCAxMzEsIDg2LCAyNDAsIDI1MywgMTMxLCA4NiwgMjQwLCAyNTIsIDEzMSwgCisgICAgODYsIDI0MCwgMjUxLCAxMzEsIDg2LCA2NywgMjUyLCAxODQsIDEzMSwgODYsIDIxMywgMjM4LCAxMzEsIDg2LCAyMTMsIAorICAgIDIzNywgMTMxLCA4NiwgMjEzLCAyMzYsIDEzMSwgODYsIDIxMywgMjM1LCAxMzEsIDg2LCAyMTMsIDIzNCwgMTMxLCA4NiwgCisgICAgMjEzLCAyMzMsIDEzMSwgODYsIDIxMywgMjMyLCAxMzEsIDg2LCAyMTMsIDIzMSwgMTMxLCA4NiwgMjEzLCAyMzAsIDEzMSwgCisgICAgODYsIDIxMywgMjI5LCAxMzEsIDg2LCAyMTMsIDIyOCwgMTMxLCA4NiwgMjEzLCAyMjcsIDEzMSwgODYsIDIxMywgMjI2LCAKKyAgICAxMzEsIDg2LCAyMTMsIDIyNSwgMTMxLCA4NiwgMjEzLCAyMjQsIDEzMSwgODYsIDIxMywgMjIzLCAxMzEsIDg2LCAyMTMsIAorICAgIDIyMiwgMTMxLCA4NiwgMjEzLCAyMjEsIDEzMSwgODYsIDIxMywgMjIwLCAxMzEsIDg2LCAyMTMsIDIxOSwgMTMxLCA4NiwgCisgICAgMjEzLCAyMTgsIDEzMSwgODYsIDIxMywgMjE3LCAxMzEsIDg2LCAyMTMsIDIxNiwgMTMxLCA4NiwgMjEzLCAyMTUsIDEzMSwgCisgICAgODYsIDIxMywgMjE0LCAxMzEsIDg2LCAyMTMsIDIxMywgMTMxLCA4NiwgMjEzLCAyMTIsIDEzMSwgODYsIDIxMywgMjExLCAKKyAgICAxMzEsIDg2LCAyMTMsIDIxMCwgMTMxLCA4NiwgMjEzLCAyMDksIDEzMSwgODYsIDIxMywgMjA4LCAxMzEsIDg2LCAyMTMsIAorICAgIDIwNywgMTMxLCA4NiwgMjEzLCAyMDYsIDEzMSwgODYsIDIxMywgMjA1LCAxMzEsIDg2LCAyMTMsIDIwNCwgMTMxLCA4NiwgCisgICAgMjEzLCAyMDMsIDEzMSwgODYsIDIxMywgMjAyLCAxMzEsIDg2LCAyMTMsIDIwMSwgMTMxLCA4NiwgMjEzLCAyMDAsIDEzMSwgCisgICAgODYsIDIxMywgMTk5LCAxMzEsIDg2LCAyMTMsIDE5OCwgMTMxLCA4NiwgMjEzLCAxOTcsIDEzMSwgODYsIDIxMywgMTk2LCAKKyAgICAxMzEsIDg2LCAyMTMsIDE5NSwgMTMxLCA4NiwgMjEzLCAxOTQsIDEzMSwgODYsIDIxMywgMTkzLCAxMzEsIDg2LCAyMTMsIAorICAgIDE5MiwgMTMxLCA4NiwgMjEzLCAxOTEsIDEzMSwgODYsIDIxMywgMTkwLCAyMjUsIDMzLCAyNTAsIDI0MywgMjUyLCAxODQsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyNTUsIDksIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMTEzLCA2NCwgMjE5LCAKKyAgICAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDEzNCwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDExLCA2NCwgCisgICAgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgODEsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjE5LCAKKyAgICAxMjUsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjIwLCAxMjIsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIAorICAgIDI0MywgMjQ1LCAxOTMsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjI4LCAyMDAsIDY0LCAyMTksIDE1LCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjE2LCAyNDgsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM1LCAxMzksIAorICAgIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCAzMSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAKKyAgICAyMjQsIDE1LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgNzksIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAKKyAgICAyNTAsIDI0MywgMjU1LCA5LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMTMsIDY0LCAyNDEsIDIyNSwgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDEzNCwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCAxMSwgNjQsIAorICAgIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCA4MSwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgCisgICAgMjE5LCAxMjUsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIyMCwgMTIyLCA2NCwgMjQxLCAyMjUsIDIyNSwgCisgICAgMzMsIDI1MCwgMjQzLCAyNDUsIDE5MywgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjI4LCAyMDAsIDY0LCAKKyAgICAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIxNiwgMjQ4LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAKKyAgICAyMzUsIDEzOSwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCAzMSwgNjQsIDI0MSwgMjI1LCAyMjUsIAorICAgIDMzLCAyNTAsIDI0MywgMjI0LCAxNSwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCA3OSwgNjQsIDI0MSwgCisgICAgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjU1LCA5LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMTMsIDY0LCAKKyAgICAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDEzNCwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCAKKyAgICAxMSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCA4MSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIAorICAgIDI0MywgMjE5LCAxMjUsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDIyMCwgMTIyLCA2NCwgMjQ3LCAyNDcsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDUsIDE5MywgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjI4LCAyMDAsIAorICAgIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDIxNiwgMjQ4LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgCisgICAgMjQzLCAyMzUsIDEzOSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCAzMSwgNjQsIDI0NywgMjQ3LCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjI0LCAxNSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCA3OSwgNjQsIAorICAgIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgODUsIDIzNSwgNjIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNTUsIDksIDY0LCAKKyAgICAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDExMywgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMTM0LCAKKyAgICA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDExLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgCisgICAgMjQzLCAyNDQsIDgxLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTksIDEyNSwgNjQsIDI0OSwgMjQyLCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjIwLCAxMjIsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NSwgMTkzLCAKKyAgICA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjgsIDIwMCwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIAorICAgIDI0MywgMjE2LCAyNDgsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNSwgMTM5LCA2NCwgMjQ5LCAyNDIsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDMxLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjQsIDE1LCA2NCwgCisgICAgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDc5LCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAKKyAgICA3MSwgMjM1LCA2MiwgMjEsIDIxMCwgODcsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDIxMCwgODcsIDI0OSwgMjE5LCAyMSwgCisgICAgMTIzLCAyNDksIDIxOSwgMjEsIDExMywgMjQ5LCAyMTksIDIxLCAxMzQsIDI0OSwgMjE5LCAyMSwgMjQ0LCAxMSwgMjQ5LCAKKyAgICAyMTksIDIxLCAyNDQsIDgxLCAyNDksIDIxOSwgMjEsIDIxOSwgMTI1LCAyNDksIDIxOSwgMjEsIDIyMCwgMTIyLCAyNDksIAorICAgIDIxOSwgMjEsIDI0NSwgMTkzLCAyNDksIDIxOSwgMjEsIDIyOCwgMjAwLCAyNDksIDIxOSwgODgsIDcsIDYsIDEsIDYxLCA4OCwgCisgICAgNywgNiwgMSwgMjUzLCAxNTgsIDg4LCA3LCA2LCAxLCAyNTEsIDY2LCA4OCwgNywgNiwgMSwgMjQ5LCA2MCwgODgsIDcsIDYsIAorICAgIDEsIDc1LCA4OCwgNywgNiwgMSwgMjQ1LCA2LCA4OCwgNywgNiwgMSwgMjQzLCAyMDIsIDg4LCA3LCA2LCAxLCAyNDIsIDYwLCAKKyAgICA4OCwgNywgNiwgMSwgNzMsIDg4LCA3LCA2LCAxLCAyMzUsIDE0NCwgODgsIDcsIDYsIDEsIDIzNSwgMjMsIDg4LCA3LCA2LCAKKyAgICAxLCAxNTYsIDg4LCA3LCA2LCAxLCAxOTMsIDg4LCA3LCA2LCAxLCAyMzAsIDI1LCA4OCwgNywgNiwgMSwgNzYsIDg4LCA3LCAKKyAgICA2LCAxLCAyMjYsIDEwNSwgODgsIDcsIDYsIDEsIDIyNCwgOTYsIDg4LCA3LCA2LCAxLCAxNTMsIDg4LCA3LCA2LCAxLCAyMjIsIAorICAgIDkxLCA4OCwgNywgNiwgMSwgMjE3LCAxNTIsIDg4LCA3LCA2LCAxLCA3MCwgODgsIDcsIDYsIDEsIDIxNCwgMTA1LCA4OCwgNywgCisgICAgNiwgMSwgMjEyLCA5OCwgODgsIDcsIDYsIDEsIDIxMSwgMTc4LCA4OCwgNywgNiwgMSwgMjExLCAxMTcsIDg4LCA3LCA2LCAxLCAKKyAgICAyMTAsIDE1OSwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgNywgNiwgMSwgMjIyLCA5MSwgMzcsIDMyLCA3LCA2LCAxLCAKKyAgICAyNTEsIDY2LCAzNywgMzIsIDcsIDYsIDEsIDE1MywgMzcsIDI1MCwgMTkxLCAzNywgMjExLCAxODAsIDkyLCA3LCA2LCAxLCAKKyAgICA2MSwgOTIsIDcsIDYsIDEsIDI1MywgMTU4LCA5MiwgNywgNiwgMSwgMjUxLCA2NiwgOTIsIDcsIDYsIDEsIDI0OSwgNjAsIAorICAgIDkyLCA3LCA2LCAxLCA3NSwgOTIsIDcsIDYsIDEsIDI0NSwgNiwgOTIsIDcsIDYsIDEsIDI0MywgMjAyLCA5MiwgNywgNiwgMSwgCisgICAgMjQyLCA2MCwgOTIsIDcsIDYsIDEsIDczLCA5MiwgNywgNiwgMSwgMjM1LCAxNDQsIDkyLCA3LCA2LCAxLCAyMzUsIDIzLCAKKyAgICA5MiwgNywgNiwgMSwgMTU2LCA5MiwgNywgNiwgMSwgMTkzLCA5MiwgNywgNiwgMSwgMjMwLCAyNSwgOTIsIDcsIDYsIDEsIAorICAgIDc2LCA5MiwgNywgNiwgMSwgMjI2LCAxMDUsIDkyLCA3LCA2LCAxLCAyMjQsIDk2LCA5MiwgNywgNiwgMSwgMTUzLCA5MiwgNywgCisgICAgNiwgMSwgMjIyLCA5MSwgOTIsIDcsIDYsIDEsIDIxNywgMTUyLCA5MiwgNywgNiwgMSwgNzAsIDkyLCA3LCA2LCAxLCAyMTQsIAorICAgIDEwNSwgOTIsIDcsIDYsIDEsIDIxMiwgOTgsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgOTIsIDcsIDYsIDEsIDIxMSwgMTE3LCAKKyAgICA5MiwgNywgNiwgMSwgMjEwLCAxNTksIDkyLCAyNDAsIDIwMSwgOTIsIDIzMCwgNDksIDkyLCAyMjEsIDE4MywgOTIsIDIxOCwgCisgICAgMjI2LCA5MiwgMjI0LCAyMTgsIDkyLCAyMTIsIDIzLCAxNTIsIDM3LCA3LCA2LCAxLCA2MSwgMTUyLCAzNywgNywgNiwgMSwgCisgICAgMjUzLCAxNTgsIDE1MiwgMzcsIDcsIDYsIDEsIDI1MSwgNjYsIDE1MiwgMzcsIDcsIDYsIDEsIDI0OSwgNjAsIDE1MiwgMzcsIAorICAgIDcsIDYsIDEsIDc1LCAxNTIsIDM3LCA3LCA2LCAxLCAyNDUsIDYsIDE1MiwgMzcsIDcsIDYsIDEsIDI0MywgMjAyLCAxNTIsIAorICAgIDM3LCA3LCA2LCAxLCAyNDIsIDYwLCAxNTIsIDM3LCA3LCA2LCAxLCA3MywgMTUyLCAzNywgNywgNiwgMSwgMjM1LCAxNDQsIAorICAgIDE1MiwgMzcsIDcsIDYsIDEsIDIzNSwgMjMsIDE1MiwgMzcsIDcsIDYsIDEsIDE1NiwgMTUyLCAzNywgNywgNiwgMSwgMTkzLCAKKyAgICAxNTIsIDM3LCA3LCA2LCAxLCAyMzAsIDI1LCAxNTIsIDM3LCA3LCA2LCAxLCA3NiwgMTUyLCAzNywgNywgNiwgMSwgMjI2LCAKKyAgICAxMDUsIDE1MiwgMzcsIDcsIDYsIDEsIDIyNCwgOTYsIDE1MiwgMzcsIDcsIDYsIDEsIDE1MywgMTUyLCAzNywgNywgNiwgMSwgCisgICAgMjIyLCA5MSwgMTUyLCAzNywgNywgNiwgMSwgMjE3LCAxNTIsIDE1MiwgMzcsIDcsIDYsIDEsIDcwLCAxNTIsIDM3LCA3LCA2LCAKKyAgICAxLCAyMTQsIDEwNSwgMTUyLCAzNywgNywgNiwgMSwgMjEyLCA5OCwgMTUyLCAzNywgNywgNiwgMSwgMjExLCAxNzgsIDE1MiwgCisgICAgMzcsIDcsIDYsIDEsIDIxMSwgMTE3LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTAsIDE1OSwgMjIzLCAxNTcsIDIzMSwgOTcsIDUwLCAKKyAgICAyMjMsIDE1NywgMjMxLCA5NCwgNTAsIDE1MiwgOTIsIDcsIDYsIDEsIDYxLCAxNTIsIDkyLCA3LCA2LCAxLCAyNTMsIDE1OCwgCisgICAgMTUyLCA5MiwgNywgNiwgMSwgMjUxLCA2NiwgMTUyLCA5MiwgNywgNiwgMSwgMjQ5LCA2MCwgMTUyLCA5MiwgNywgNiwgMSwgCisgICAgNzUsIDE1MiwgOTIsIDcsIDYsIDEsIDI0NSwgNiwgMTUyLCA5MiwgNywgNiwgMSwgMjQzLCAyMDIsIDE1MiwgOTIsIDcsIDYsIAorICAgIDEsIDI0MiwgNjAsIDE1MiwgOTIsIDcsIDYsIDEsIDczLCAxNTIsIDkyLCA3LCA2LCAxLCAyMzUsIDE0NCwgMTUyLCA5MiwgNywgCisgICAgNiwgMSwgMjM1LCAyMywgMTUyLCA5MiwgNywgNiwgMSwgMTU2LCAxNTIsIDkyLCA3LCA2LCAxLCAxOTMsIDE1MiwgOTIsIDcsIAorICAgIDYsIDEsIDIzMCwgMjUsIDE1MiwgOTIsIDcsIDYsIDEsIDc2LCAxNTIsIDkyLCA3LCA2LCAxLCAyMjYsIDEwNSwgMTUyLCA5MiwgCisgICAgNywgNiwgMSwgMjI0LCA5NiwgMTUyLCA5MiwgNywgNiwgMSwgMTUzLCAxNTIsIDkyLCA3LCA2LCAxLCAyMjIsIDkxLCAxNTIsIAorICAgIDkyLCA3LCA2LCAxLCAyMTcsIDE1MiwgMTUyLCA5MiwgNywgNiwgMSwgNzAsIDE1MiwgOTIsIDcsIDYsIDEsIDIxNCwgMTA1LCAKKyAgICAxNTIsIDkyLCA3LCA2LCAxLCAyMTIsIDk4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgMTUyLCA5MiwgNywgNiwgMSwgCisgICAgMjExLCAxMTcsIDE1MiwgOTIsIDcsIDYsIDEsIDIxMCwgMTU5LCAyNDksIDEyOCwgMTUyLCA5MiwgNywgNiwgMSwgMjI2LCAKKyAgICAxMDUsIDE1MiwgOTIsIDI0MCwgMTEzLCAxNTIsIDkyLCAxOTAsIDE1MiwgOTIsIDIwNiwgMTUyLCA5MiwgMjU1LCAyNSwgCisgICAgMTUyLCA5MiwgMjEyLCAyMywgNDIsIDI0NywgMTY0LCA5MiwgMjUwLCAyMywgOTIsIDI0OSwgMTcwLCA5MiwgMjQzLCAyNTIsIAorICAgIDkyLCAyNDAsIDEwNSwgOTIsIDIyOSwgODYsIDkyLCAyMjksIDc5LCA5MiwgMjI2LCAyMTQsIDkyLCAyMTksIDM1LCA5MiwgCisgICAgMTIwLCAyLCAyNDUsIDMxLCA3OCwgOTIsIDIxMywgMTE5LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCA2MSwgMjIzLCAKKyAgICAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjUzLCAxNTgsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDI1MSwgNjYsIDIyMywgCisgICAgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDI0OSwgNjAsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDc1LCAyMjMsIDEwMywgCisgICAgMjM1LCAyMzksIDE2LCAxLCAyNDUsIDYsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDI0MywgMjAyLCAyMjMsIDEwMywgCisgICAgMjM1LCAyMzksIDE2LCAxLCAyNDIsIDYwLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCA3MywgMjIzLCAxMDMsIDIzNSwgCisgICAgMjM5LCAxNiwgMSwgMjM1LCAxNDQsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIzNSwgMjMsIDIyMywgMTAzLCAyMzUsIAorICAgIDIzOSwgMTYsIDEsIDE1NiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMTkzLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAKKyAgICAxLCAyMzAsIDI1LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCA3NiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgCisgICAgMjI2LCAxMDUsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIyNCwgOTYsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIAorICAgIDE1MywgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjIyLCA5MSwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjE3LCAKKyAgICAxNTIsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDcwLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTQsIDEwNSwgCisgICAgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjEyLCA5OCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjExLCAxNzgsIAorICAgIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxMSwgMTE3LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTAsIDE1OSwgCisgICAgNDIsIDE0MSwgMjQxLCA2MywgOTIsIDU2LCAyMzQsIDE4LCA5MiwgNTYsIDIwNiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDUwLCAKKyAgICA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTQsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2MiwgOTIsIDU2LCAyNDgsIDkwLCA5MiwgCisgICAgOSwgMjE0LCAxNzcsIDIzOCwgNjksIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1NiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDI4LCAKKyAgICA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTUsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2OCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIAorICAgIDQyLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzUsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0NCwgOTIsIDksIDIxNCwgMTc3LCAKKyAgICAyMzgsIDY1LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTEsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2NywgOTIsIDksIDIxNCwgCisgICAgMTc3LCAyMzgsIDQzLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAyOSwgOTIsIDksIAorICAgIDIxNCwgMTc3LCAyMzgsIDM0LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMjcsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1NywgCisgICAgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU5LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzcsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAKKyAgICA0OCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQ2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNzIsIDkyLCA5LCAyMTQsIDE3NywgCisgICAgMjM4LCA3MSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDI1LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTIsIDkyLCA5LCAyMTQsIAorICAgIDE3NywgMjM4LCA3MCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDYxLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDcsIDkyLCA5LCAKKyAgICAyMTQsIDE3NywgMjM4LCAyNiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQ5LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzEsIAorICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzMCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDYwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgCisgICAgMzgsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0MCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQxLCA5MiwgOSwgMjE0LCAxNzcsIAorICAgIDIzOCwgMzMsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2NCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU4LCAyMTYsIDYsIDIyMCwgCisgICAgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCAzOSwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAKKyAgICAxNzcsIDIzOCwgNzEsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDY5LCAyMTYsIDYsIAorICAgIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCA1MywgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgCisgICAgMjE0LCAxNzcsIDIzOCwgMzYsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDQ5LCAyMTYsIAorICAgIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCAzMiwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgCisgICAgMjE0LCAxNzcsIDIzOCwgNjMsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDQ1LCAzNywgCisgICAgMTU0LCAyNTQsIDI0NSwgMzcsIDE1NCwgMjU1LCAxMiwgMjQ5LCA3MSwgMjQ0LCA0MiwgMjUwLCAwLCAyMTQsIDE5NCwgMjI4LCAKKyAgICAyMTMsIDIsIDIxOCwgMTUzLCAyMTgsIDMzLCAxMTcsIDIzMCwgMTE0LCAyMTgsIDMyLCAyNTAsIDI2LCAyNTMsIDIwNywgCisgICAgMjQ2LCA1NCwgMjE4LCAzMSwgMTE3LCAyNTEsIDExOCwgMjIzLCAxNTgsIDI1MSwgMTQwLCAyNTMsIDIwNywgMjI4LCAyMTIsIAorICAgIDIxMiwgNDEsIDIxMiwgMzUsIDIxMywgMTMxLCAyMzAsIDE5NSwgMjEyLCAyNSwgMjQ1LCAyMjQsIDI0MiwgMTgxLCAyNDUsIAorICAgIDQ1LCAyNDUsIDIyNCwgMjQyLCAxODEsIDI1NCwgMTI4LCAyNDUsIDIyNCwgMjQyLCAxODEsIDI1MywgMjI1LCAyNDIsIDE4MSwgCisgICAgMiwgMjMxLCA1MSwgMTY2LCAyMzAsIDEyOSwgODcsIDIxMiwgMjcsIDI0OSwgMTM3LCAyMzAsIDEyOSwgODcsIDI0NCwgOTIsIAorICAgIDIyNCwgMjIsIDIzMCwgMTI5LCA4NywgMjEyLCAyNywgMjQyLCAyMTAsIDIzMCwgMTI5LCA4NywgMjQzLCAyMjksIDIzMCwgCisgICAgMTI5LCA4NywgMjEyLCA1MiwgMjQyLCAyMTAsIDIzMCwgMTI5LCA4NywgMjMzLCA4MCwgMjI0LCAyMiwgMjMwLCAxMjksIDg3LCAKKyAgICAyMTIsIDUyLCAyNDksIDEzNywgMjMwLCAxMjksIDg3LCAyNDksIDEzNywgMjMwLCAxMjgsIDE2NiwgMjMwLCAxMjksIDIsIAorICAgIDI0NCwgMTkwLCAyNDQsIDkyLCAyMjQsIDIyLCAyMzAsIDEyOSwgMiwgMjQ0LCAxOTAsIDIzMywgODAsIDIyNCwgMjIsIDIzMCwgCisgICAgMTI5LCAyLCAyNDQsIDE5MCwgMjQzLCAyMjksIDIzMCwgMTI5LCAyLCAyNDQsIDE5MCwgMjE4LCAzOCwgMiwgMjQ0LCAxOTAsIAorICAgIDI0MiwgMTc5LCAyMTgsIDE1NiwgMjE5LCAyNTUsIDIxOCwgMTU2LCAyNTAsIDExNiwgMjIxLCAxNjgsIDI0NSwgMzksIDIxNSwgCisgICAgMjM1LCAyNDgsIDg0LCAyMTUsIDIzNSwgMjI2LCA1OSwgMjE1LCAyMzUsIDI1MSwgMjcsIDIxNSwgMTA5LCAyNTAsIDExOCwgCisgICAgMjUxLCAyMTAsIDIyMiwgMTkxLCAyNDEsIDE3OSwgMjE4LCAzNiwgMjUxLCAyMTAsIDI0NSwgMjI4LCA2NCwgMjMxLCAxOTQsIAorICAgIDI0NSwgMjI4LCA2NCwgMjIzLCAzMSwgMjQxLCAyMDQsIDI0NCwgMTEsIDIzMywgNTQsIDI0OSwgMjQ2LCAyMzEsIDE3MCwgCisgICAgMjMzLCA1MywgMjQ0LCAxNzYsIDIzMywgNTMsIDIzMywgNTQsIDI0NCwgNDcsIDIzNiwgMCwgMjExLCAyMzksIDIzMCwgNTgsIAorICAgIDIxNiwgMzQsIDI1MywgMTkxLCAyNDIsIDE0MywgMjMxLCA2NywgMjEyLCAzOSwgMjE3LCA1NywgMjMzLCAyNiwgMjUyLCAKKyAgICAxNDksIDIyNSwgNjIsIDIyMywgMTExLCAyNTQsIDU0LCAyNDIsIDEyNywgMjU0LCA1NCwgMjI1LCAyMTcsIDIyNSwgMjE4LCAKKyAgICAyNTAsIDExOSwgMjE4LCAxMTQsIDI0MiwgMjMsIDIxOSwgOTAsIDY0LCAyMjUsIDQ0LCAyMzEsIDg3LCAyMjYsIDE5NywgCisgICAgMjUxLCAxOTQsIDIyNCwgMjI5LCAyMzMsIDM2LCAyMjMsIDMyLCAyNDksIDE0MiwgMjIzLCAzMiwgMjUyLCAxNTksIDI0OSwgCisgICAgMTczLCAyMjMsIDMxLCAyNDksIDk1LCAyMiwgMjIzLCAzMSwgMjE4LCAxNDEsIDI1MSwgMTY3LCAyMTksIDE0LCAyNTEsIAorICAgIDE1MSwgMjQzLCAyNTEsIDI0MywgMjQ3LCAyMjIsIDIwNywgMjE3LCAyNDYsIDIyNCwgMjMxLCAyNDgsIDE3NSwgMjI2LCAKKyAgICAyMzYsIDIxOCwgNywgMjQzLCAyNDgsIDIxOSwgMjMwLCAyNDQsIDkxLCAyNTEsIDIxLCAyLCAyMTcsIDIzOSwgMjQ4LCAzNSwgCisgICAgMjE5LCA1MiwgMjQwLCAxMTIsIDI0OSwgMTQxLCAyMjAsIDcwLCAyNDAsIDExMSwgMjQwLCAxMTIsIDI0OSwgMTQxLCAyNDYsIAorICAgIDEwOCwgMjQ5LCAxNzIsIDI1MCwgODQsIDEzMCwgMjUwLCAyNTQsIDIzMiwgMTQxLCAyNDksIDg4LCAyNDEsIDU1LCAyMjQsIAorICAgIDIzMywgMjE5LCAyNDAsIDI1MiwgMzYsIDI1MSwgMTYzLCAyMjQsIDIzNCwgNjQsIDI0NCwgMzMsIDI0OSwgMTcxLCAyNDQsIAorICAgIDI0LCAyMiwgMjM0LCAzMiwgMjE3LCAxOSwgMjExLCAyMzAsIDI0MiwgMTMsIDIyMiwgMTIsIDI1MSwgMTc3LCAyMiwgMjQ5LCAKKyAgICAxMDIsIDIxMSwgMjM3LCAyNDIsIDE4NCwgMjQ5LCAyMzUsIDI0MiwgMTg0LCAyMTUsIDE5MywgMjQ2LCA5MCwgMjUyLCA2MiwgCisgICAgMjMwLCA5MywgMjUwLCA3LCAyNTIsIDYyLCAyMzAsIDkyLCAyNTIsIDE4NywgMjUxLCAxNzYsIDIyMywgMzMsIDIxMSwgMjAxLCAKKyAgICAyMjQsIDE5NSwgMjUxLCAyMzUsIDI1MSwgMjAsIDIzNSwgMTM4LCAyNTAsIDc3LCAyMTUsIDIzNSwgMjQ0LCAxNjIsIDI1MCwgCisgICAgNzYsIDI0NCwgOTQsIDI0NCwgOTUsIDIxOSwgMTIsIDI1MiwgMTU4LCAyMjUsIDI1MCwgMjI0LCAyNDQsIDI0OSwgMjA0LCAKKyAgICAyNTIsIDE1OSwgMjE3LCA1OSwgMjE1LCAyMzUsIDI0OSwgMTI4LCAyNDQsIDY3LCAyMjUsIDYzLCAyNDgsIDgxLCAyMzUsIAorICAgIDEzMSwgMjQ3LCAxMzEsIDI1MCwgMjMyLCAyMTgsIDExMywgMjExLCAyNDAsIDI1MCwgOTgsIDIzMCwgMTI5LCAyMTMsIDE2NCwgCisgICAgMjUwLCAxNjIsIDIyMSwgMTk5LCAyMjEsIDIyNCwgMjQyLCAxNDgsIDI1MCwgMjUxLCAyNTAsIDIzMywgMjQwLCAyNDUsIAorICAgIDI0NCwgMTMwLCAyMTIsIDAsIDIyMiwgMjAwLCAyNDksIDIzNiwgMjQ0LCA4NiwgMjI1LCAyLCAyMiwgMjQ0LCA5MCwgMjMwLCAKKyAgICAyMjcsIDIzMCwgMTA4LCAyNTEsIDEwLCAyNTAsIDM5LCAyNDEsIDIzMiwgMjUzLCAyNDEsIDIyNiwgNjIsIDIxNiwgMTQsIAorICAgIDI0MSwgMjUxLCAyNTAsIDI5LCAyMTYsIDI0MiwgMjE2LCAxMTMsIDI1MCwgMjAsIDI1MSwgMjAyLCAyMjUsIDE3NywgMjUzLCAKKyAgICAyNDAsIDIxMywgMTcyLCAyNDMsIDExMCwgMjQ3LCAxOTcsIDI0MSwgMTU2LCAyMTksIDg0LCAyMzEsIDIzNCwgMjUxLCAyNDUsIAorICAgIDI0MywgMTExLCAyNDcsIDI0MCwgMjUxLCAxNjYsIDI0NCwgNTIsIDIyNSwgMzMsIDI1MCwgMjQxLCAyOCwgMjI4LCA0NywgCisgICAgMjMwLCA4NSwgMjgsIDIyOCwgNDIsIDIyMSwgMjEyLCAyNDIsIDk5LCAyOCwgMjM0LCAxMzcsIDIxNSwgMTkwLCAyMTMsIAorICAgIDE1NCwgMjgsIDIyMSwgMTkyLCAyMjIsIDEyNCwgMjIwLCAxMSwgMiwgMjIxLCAyMjcsIDIxNiwgMjQ0LCAyMjMsIDE3OCwgCisgICAgMjIsIDI1MiwgMTU5LCAyMTksIDEwNSwgMjIsIDIxOSwgMTA1LCAyNTEsIDE4NywgMjUyLCAxMjMsIDIyLCAyNDEsIDQ5LCAKKyAgICAyNTAsIDEyMCwgMjQ0LCA3MywgMjE5LCA2MywgMjIyLCAxMjUsIDIxOCwgMTIsIDIxNSwgMTk0LCAyNDAsIDI0NiwgMjIzLCAKKyAgICAxNzksIDI1NCwgMTI5LCAyNDQsIDMxLCAyMjIsIDEzNiwgMjQ0LCAzMSwgMjE3LCAyNDEsIDI0MCwgMjM1LCAyNTEsIDExOSwgCisgICAgMjQwLCAyMzUsIDIsIDI0MywgOTQsIDIyNiwgMjI5LCAyNTEsIDExOSwgMjM1LCAxMzEsIDIyNCwgMjM5LCAyMjYsIDIyOCwgCisgICAgMjQ1LCA0NCwgMjI0LCAyMzksIDIyNiwgMjI4LCAyNDAsIDI0NCwgMjUyLCAxNDUsIDI1MywgMTgxLCAyMTYsIDI1MiwgMjMxLCAKKyAgICAyMzQsIDI0MCwgMjQwLCAyMzIsIDExMSwgMjQwLCAyNDAsIDI0OSwgMTc2LCAyMTgsIDEyNSwgMjIxLCAxOTgsIDI0OCwgNDMsIAorICAgIDIxOCwgMTI1LCAyNDQsIDE4MCwgMjM1LCAxNDksIDIzMywgODksIDIzNSwgMTMxLCAyNTAsIDIyNiwgMjQ1LCA0NCwgMjUwLCAKKyAgICAyMjYsIDIyMywgMTQxLCAyMzAsIDExMiwgMjI2LCAxMTQsIDIxMiwgNDEsIDI1MSwgMTIzLCAyNDksIDE0NSwgMjE2LCAxMDYsIAorICAgIDIzMywgMTgsIDIyMywgMTgwLCAyNTAsIDIyNCwgMjQ2LCA5NiwgMjQ5LCAxMzUsIDIxMiwgMywgMjE5LCA3MCwgMjE5LCA2OCwgCisgICAgMjQwLCAyNDUsIDIyMywgMTUzLCAyNDIsIDE3MCwgMjIwLCA1NywgMjMwLCAxNDUsIDIyMiwgMTk0LCAyNTAsIDEwOCwgMjQ3LCAKKyAgICAxMzYsIDIyNSwgNzMsIDI1MSwgMjAzLCAyNDUsIDE2OSwgMjI2LCAyMzgsIDIxOCwgMjUyLCAyMjAsIDUyLCAyNTEsIDEyMiwgCisgICAgMjU0LCA5MiwgMjQxLCA1NCwgMjMzLCAxMjEsIDI1MiwgNjAsIDI0NCwgOTAsIDIxNSwgMTkzLCAyNDQsIDkwLCAyNTEsIAorICAgIDIwOSwgMjE1LCA5MSwgMjQxLCAyNDksIDI1MCwgMTA5LCAyNTIsIDE4NywgMjUwLCAxMDksIDI0MywgMjQyLCAyNTIsIDE4NywgCisgICAgMjUwLCAxMDksIDI1MSwgMjM3LCAyMjUsIDE5NSwgMjM0LCAyNiwgMjI0LCAyNDgsIDI0NiwgODcsIDI1MSwgMTEsIDI1MiwgCisgICAgMTc3LCAyNTEsIDExLCAyNDcsIDEzMCwgMjMwLCAxMTMsIDI0NCwgMTkwLCAyNDksIDE0NiwgMjQ0LCAxOTAsIDIxNiwgMTA3LCAKKyAgICAyNDQsIDE5MCwgMjIzLCAxODEsIDI0NCwgMTkwLCAyNTAsIDIyNSwgMjQ0LCAxOTAsIDI0NiwgOTcsIDI0NCwgMTkwLCAyMTgsIAorICAgIDI0MSwgMjEyLCAzLCAyNDAsIDI0NiwgMjQ0LCAxOTAsIDIzMCwgMTQ2LCAyNDQsIDE5MCwgMjQ3LCAxMzcsIDI0NCwgMTkwLCAKKyAgICAyMjUsIDc0LCAyNDQsIDE5MCwgMjQzLCAyNDUsIDI0NCwgMTkwLCAyNDIsIDIwLCAyNDQsIDE5MCwgMjExLCAyMjQsIDI0NCwgCisgICAgMTkwLCAyNTIsIDcxLCAyNDQsIDE5MCwgMjI2LCA0NSwgMjQ0LCAxOTAsIDIyNSwgNzQsIDIyOCwgNTMsIDIyNSwgMjMyLCAKKyAgICAyMjQsIDE4NiwgMjQ1LCAxMywgMjQ1LCAyMjcsIDIyOCwgNTMsIDIzMCwgMTEwLCAyMTYsIDE5LCA3MSwgMTIwLCAyMjUsIDcsIAorICAgIDI1MiwgMTgyLCAyMzUsIDI0MiwgNzEsIDEyNCwgMjI1LCA3LCAyNTIsIDE4MiwgMjM1LCAyNDIsIDcxLCA0MywgMjI1LCA3LCAKKyAgICAyNTIsIDE4MiwgMjM1LCAyNDIsIDcxLCA0NCwgMjI1LCA3LCAyNTIsIDE4MiwgMjM1LCAyNDIsIDI0NCwgODQsIDI0MiwgMTYsIAorICAgIDUwLCAyMTIsIDMzLCAyNDIsIDE2LCA1MCwgMjI2LCAyMTUsIDI0MiwgMTYsIDUwLCAyMTYsIDEzNSwgMTIwLCA1MCwgMjE2LCAKKyAgICAxMzUsIDEyNCwgNTAsIDI1MCwgMTksIDI0MiwgMTEsIDUwLCAyMDQsIDI0MiwgMTEsIDUwLCAyNDksIDEyMywgMjExLCAyMjAsIAorICAgIDI0MSwgMjUxLCAyNDUsIDE0LCAyMjksIDEwNCwgMjE3LCAxNTEsIDIzNSwgMTI1LCAyNDYsIDkyLCAyMzQsIDgyLCAyNTEsIAorICAgIDI0NywgMjExLCAyMjAsIDI0OSwgMjQ5LCAyMjQsIDEyNywgMjQyLCAxNCwgMjI0LCAyMzAsIDIzMSwgMTc3LCAyMjAsIDQsIAorICAgIDI1MywgMjAzLCAyMjAsIDQsIDI0MSwgMTY0LCAyMjAsIDQsIDIxMSwgMjIwLCAyMjEsIDI0MCwgMjExLCAyMjAsIDI1MSwgCisgICAgMTg2LCAyNDQsIDI5LCAyNTEsIDkwLCAyMzYsIDAsIDIxOSwgMTY5LCAyNTEsIDg5LCAyMzYsIDAsIDIxOSwgMTY5LCAyNTEsIAorICAgIDE2MiwgMjQyLCAxOTQsIDIzMSwgMTg1LCAyMTEsIDIyMSwgMjQ0LCAxNzQsIDIzMSwgMTg2LCAyMiwgMjExLCAyMjIsIDI0MSwgCisgICAgNjAsIDI0MiwgMTAsIDExMywgMjMxLCA1OSwgMjQxLCA2MCwgMjQyLCAxMCwgMTEzLCAyMTEsIDIxOSwgMjQxLCA2MCwgMjQyLCAKKyAgICAxMCwgMjI0LCAyNTUsIDIyNiwgMjI3LCAyMTEsIDIyMiwgMiwgMjUxLCAxMDYsIDI0NSwgMjI1LCAyNTEsIDE0MSwgMiwgCisgICAgMjEzLCAyNDYsIDIyNSwgMTY4LCAyLCAyNTEsIDIxMiwgMjQyLCAzNCwgMjMxLCAxODYsIDIsIDI0MiwgMTEwLCAyMjUsIAorICAgIDEwOSwgMjMxLCAxNzQsIDIzMSwgMTg2LCAyLCAyMTUsIDk3LCAyMjYsIDIwOCwgMjMxLCAxODUsIDIyNiwgMjA4LCAyMTEsIAorICAgIDIyMSwgMjUyLCAxODYsIDI0OSwgMTkwLCAyMTEsIDIwNSwgMjI0LCAxODksIDIzNSwgMTMxLCAyMjYsIDIyMywgMjM1LCAKKyAgICAxMzEsIDI0MiwgMTY5LCAyNDIsIDIyMiwgMjUyLCAxODcsIDI1NCwgMTEzLCAyNDUsIDE4LCAyNTQsIDE2MCwgMjU0LCAxNjEsIAorICAgIDIzMCwgMTM2LCAyMzYsIDUsIDIxOSwgMTAwLCAyMzUsIDIzMiwgMjQ4LCAzNCwgMjI1LCAxNjcsIDI0MiwgMTA1LCAyNDgsIAorICAgIDE3OSwgMjMyLCAyMDEsIDIyOSwgMjExLCAyMjQsIDI1NCwgMjQ0LCAxOTEsIDIzMSwgMTQyLCAyNDIsIDMzLCAyNTIsIDEzOCwgCisgICAgMjI1LCAxLCAyMTcsIDE3MSwgMjI1LCA2NiwgMjM0LCA2NCwgNzgsIDIzMiwgMTExLCAyMzMsIDEwLCAyMjIsIDIzMywgMjQzLCAKKyAgICA1NCwgMjE4LCAxMzEsIDIzNCwgNjMsIDI1MSwgMTcxLCAyNDksIDE0OCwgMiwgMjQxLCAyMjcsIDIxMiwgMTksIDI1MiwgNjksIAorICAgIDI0MSwgMjI3LCAyNTEsIDEzNSwgMjQxLCAyMjcsIDExMywgMjQxLCAyMjUsIDIxOSwgMTAsIDI0MSwgMjI3LCAyNDIsIDEyMCwgCisgICAgMjQxLCAyMjcsIDI0MSwgMjI4LCAyLCA3NCwgMjUxLCAyMDgsIDI0MSwgMjI3LCAyNDIsIDEyNywgMjQxLCAyMjcsIDIxMSwgCisgICAgNDIsIDI0MSwgMjI3LCAyMjQsIDEyOCwgMjQxLCAyMjcsIDI0MSwgMjI4LCAyLCAyMjMsIDMzLCAyMjMsIDQ0LCAyNDEsIAorICAgIDIyNSwgMjQxLCAyMjgsIDI0OCwgODEsIDI0NywgMjQ5LCAyMjAsIDgyLCAyLCAxMTUsIDU5LCAyMzUsIDIxNSwgMjQ1LCAKKyAgICAxNzIsIDE5MiwgMjUxLCAxMTYsIDI1NCwgMTEyLCA4NywgMjUxLCAxOTUsIDIxOSwgOTIsIDg3LCAyNDksIDIyOCwgODcsIAorICAgIDIxOCwgMjQ2LCAyMTcsIDI0OCwgODcsIDI0NiwgODUsIDI0OCwgMTU3LCA4NywgMjI1LCA2NywgNjQsIDIyNCwgMjQ5LCAKKyAgICAyNDQsIDYxLCAyNTIsIDMsIDI0NywgMTY1LCA4NywgMjE5LCAzLCAyNTIsIDE1OCwgMjE2LCAxNDksIDI1MiwgMTU4LCA3MSwgCisgICAgMjQ0LCA1MSwgMjQwLCAyMTEsIDIyNSwgNSwgODcsIDIzMCwgMTQ5LCAyNTIsIDE3MiwgMjQ5LCA5OCwgMjQ1LCAzMiwgMTE0LCAKKyAgICAyNDcsIDEzMiwgNTAsIDI0OSwgMTM5LCAyNTAsIDI0MiwgMjUyLCAxNDQsIDIsIDIxMSwgNDAsIDUwLCAyNTIsIDE0NCwgMiwgCisgICAgMjQ3LCAxMzIsIDUwLCAyNTIsIDE0NCwgMiwgMjQ1LCA0NywgNTAsIDI1MiwgMTQ0LCAyLCAyMjQsIDIyOCwgNTAsIDIzMCwgCisgICAgMTQ5LCAyLCAyMTEsIDIzNSwgMjUwLCAxMzgsIDIsIDIxNCwgMTUzLCAyMTUsIDIzMSwgMjIsIDIxMSwgNDAsIDUwLCAyMjEsIAorICAgIDE3OCwgMjI1LCAxNjYsIDI0OSwgMjA4LCAyNTEsIDEzOSwgMjMwLCAxODYsIDI0NCwgNTYsIDI0NywgMTg1LCAyMjYsIDE2MSwgCisgICAgMjQ3LCAxOTAsIDI0NiwgNDksIDI0NCwgMTA3LCAyNDQsIDQwLCAyMDQsIDI0NCwgMTA3LCAyNDQsIDQwLCAyMjYsIDc2LCAyLCAKKyAgICAyNDksIDEwMCwgMjI2LCA3NiwgMjQ0LCAxODMsIDIxNCwgMTYzLCAyNTEsIDE2LCAyMTcsIDE4LCAyNTEsIDE2LCAyNTAsIAorICAgIDI0MywgMjM1LCAyNDIsIDI1MCwgMTM4LCAyLCAyMTQsIDE1MywgMjE1LCAyMzAsIDI1MCwgMTM4LCAyLCAyNDYsIDEwNCwgCisgICAgMjE1LCAyMzAsIDI1MiwgMTQxLCAyNTAsIDEzNywgMjUwLCA2LCAyMjQsIDEyMywgMjIyLCAxODUsIDIyNCwgMTIzLCAyMjYsIAorICAgIDE5LCAyMTgsIDEyMSwgMjIyLCAxMzEsIDIxNSwgMjIyLCAyMjIsIDEzMSwgMjUxLCAxOTEsIDIxNywgOTEsIDIzMywgNTEsIAorICAgIDIyOCwgNDUsIDIyOCwgNDYsIDIsIDI0OCwgODAsIDI0OSwgMTQ3LCAyNTAsIDAsIDI1MSwgMTkyLCAyMDQsIDI1MSwgMTkyLCAKKyAgICAyNDIsIDEyNywgMjUxLCAxOTIsIDI1MSwgMjA4LCAyNTEsIDE5MiwgMjI2LCAxNTcsIDI1MSwgMTkyLCAyNTEsIDE4OSwgCisgICAgMjI5LCAyMDUsIDI1MiwgMTc1LCAyMjEsIDE4NiwgMjMxLCA2MCwgMjE3LCAxLCAyMjMsIDEyMywgMjI2LCA3NCwgMjQ0LCAKKyAgICAxNTksIDIzMSwgMjM0LCAyMjEsIDIyMywgMjU0LCA4OSwgMjI0LCAxNDUsIDI1NCwgMjUyLCAyMzIsIDExMywgMjUwLCAxMjcsIAorICAgIDIzMSwgNzIsIDIyNiwgMTI5LCAyMTUsIDIzOCwgMjM1LCAyNTIsIDIxNSwgMjM4LCAyMjYsIDgyLCAyNDYsIDI0LCA4NywgCisgICAgMjM1LCAyNDksIDI0NSwgMTE5LCAyNDUsIDEyMCwgMiwgMjQ2LCAxMDQsIDgwLCA0OCwgMjUwLCAwLCAyMzEsIDIwMCwgMiwgCisgICAgMjMyLCAxMDcsIDI0NCwgNzMsIDI1MCwgMCwgMjMxLCAyMDAsIDIsIDIyMywgMTU3LCAyNDQsIDczLCAyMDQsIDIzMSwgMjAwLCAKKyAgICAyLCAyMjMsIDE1NywgMjQ0LCA3MywgMjA0LCAyMzEsIDIwMCwgMiwgMjMyLCAxMDcsIDI0NCwgNzMsIDIyNCwgMjM2LCAyMjQsIAorICAgIDIzNywgMjQwLCAyNDgsIDIyOSwgODQsIDIzMCwgMTU5LCAyMjUsIDExNywgMjMwLCAxNTksIDIyNSwgMTE4LCAyLCA5NywgCisgICAgODAsIDI1MywgMjA3LCAyMzMsIDQ2LCAyMTMsIDE3NSwgMjMwLCAxNTgsIDIzMCwgMTU5LCAyMjUsIDExOCwgMjI2LCAyMzAsIAorICAgIDIyOCwgNzUsIDIzMCwgMTU5LCAyMjUsIDExNiwgMjU0LCA5MCwgMiwgMjUyLCAxMjksIDI1MSwgMTAsIDIxMywgMTcyLCAKKyAgICAyNTEsIDEwLCAyMTYsIDI1NCwgMjIzLCAxNzMsIDIxMywgMTcxLCAyMTUsIDYwLCA5NywgMjUzLCAyNDcsIDI1MCwgMiwgOTcsIAorICAgIDIyLCAxNDAsIDIwNCwgMjUwLCAzNiwgMjUzLCAyNDcsIDI1MCwgMiwgOTcsIDIyLCAxNDAsIDIwNCwgMjUwLCAzNiwgMjUzLCAKKyAgICAyNDgsIDIsIDM3LCAxMjMsIDIyNiwgMTIwLCAyNTAsIDIsIDI0NiwgMTA0LCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCAzNiwgCisgICAgMjUzLCAyNDcsIDI1NCwgODgsIDI0NiwgMTA0LCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCAzNiwgMjUzLCAyNDcsIDEyMSwgCisgICAgMjUxLCAxMzgsIDg3LCAxMjUsIDI1MSwgMTM4LCA4NywgMjE5LCA3LCAyLCAyNTEsIDQsIDkxLCAyMTksIDYsIDIxOSwgNywgCisgICAgMiwgMTIzLCAyMTksIDMxLCAyMTIsIDM1LCAyMTksIDcsIDIsIDEzNCwgMjE5LCAzMSwgMjEyLCAzNCwgMjUyLCAxMTUsIAorICAgIDI0NSwgMTcyLCAyMjUsIDI3LCAyMzMsIDQyLCAyMzEsIDIxMSwgMjQyLCAxODQsIDIyMiwgMjQ3LCAyMzEsIDIxMSwgMjQyLCAKKyAgICAxODQsIDIzMiwgMTUyLCAyLCAyMzUsIDIyNSwgMjI1LCAxOTksIDI1MCwgMCwgMjMyLCAxNTIsIDIsIDIzNCwgMTM4LCAyMzQsIAorICAgIDEzOCwgMjMyLCAxNTEsIDIwNCwgMjMyLCAxNTEsIDI1MiwgNDQsIDI1MiwgNDUsIDIsIDI1MSwgNCwgOTEsIDI1MSwgMTkwLCAKKyAgICAyMzIsIDIwNCwgODcsIDIyMywgMTc0LCAyNTEsIDg2LCAyNTIsIDE4NSwgMiwgMTQwLCA4MCwgNDgsIDI0NSwgMTQzLCAyLCAKKyAgICAxNDAsIDgwLCA0OCwgMjI2LCAxOTcsIDIsIDI0NSwgMzEsIDE2NCwgMiwgNDMsIDQ0LCA4MCwgNDgsIDIxOSwgMzksIDIsIAorICAgIDk3LCA4MCwgNDgsIDIxNiwgMTQsIDIsIDIxNCwgMTUzLCA4MCwgNDgsIDIyOCwgNzUsIDEyMywgMjE0LCAxODQsIDI0NSwgCisgICAgMTkxLCA4NywgMjM0LCAxMzYsIDIxNiwgMjQ3LCAyMzUsIDIxOSwgMTYsIDMxLCA3LCA2LCAyMzMsIDksIDIzNSwgMjE5LCAKKyAgICAxNiwgMzEsIDcsIDQsIDIzMywgOSwgMjM1LCAyMTksIDE2LCAzMSwgMjI3LCAxOTksIDIzNSwgMjE5LCAxNiwgMzEsIDIxNywgCisgICAgMTgzLCAyMzUsIDIxOSwgMTYsIDMxLCA3LCAyMzMsIDksIDI0NCwgOTYsIDI0NSwgMTcyLCAyMTYsIDksIDIxMSwgMTk5LCAKKyAgICAyNDIsIDIxLCAyMjcsIDE4MiwgMjIsIDI1MSwgMTk3LCAyNDEsIDY2LCAyMjUsIDUwLCAyMzAsIDIyNiwgMjE2LCAyNTUsIAorICAgIDI0OSwgMTE0LCAyNTIsIDE1OSwgMjE5LCAxMjUsIDIyNSwgOSwgMjE4LCAxNTcsIDIsIDIzMCwgMjI0LCAyNDcsIDEyMCwgCisgICAgMjM1LCAxMzEsIDE2LCAzMSwgMjUyLCA1NywgMjE1LCAyMjAsIDI0NSwgMTU2LCA4NSwgNDIsIDI1MSwgODYsIDcxLCA0MiwgCisgICAgMjUxLCA4NiwgMjMzLCA4NSwgMjIzLCAxMTEsIDI1MCwgMzUsIDIzMywgODUsIDI1MSwgMjA4LCAyNTAsIDM1LCAyMzMsIDg1LCAKKyAgICAyMjYsIDE1NywgMjQ3LCAyNDgsIDIzMywgODUsIDI1MSwgMjA4LCAyNDcsIDI0OCwgNCwgMjI2LCAxNTcsIDI0NywgMjQ4LCAKKyAgICA0LCAyNTEsIDIwOCwgMjQ3LCAyNDgsIDIxNCwgMTYyLCAyMjMsIDExMSwgMjE1LCAyMjUsIDI0NiwgMTA1LCAyMjMsIDExMSwgCisgICAgMjE1LCAyMjUsIDIxNCwgMTYyLCA0LCAyMjMsIDExMSwgMjE1LCAyMjUsIDI0NiwgMTA1LCA0LCAyMjMsIDExMSwgMjE1LCAKKyAgICAyMjUsIDM3LCAyNDksIDEzMSwgMjI0LCAyNTIsIDI0OSwgMTMxLCAyMjQsIDI1MywgMiwgMjQyLCAyNiwgNTEsIDI0OSwgCisgICAgMTMxLCAyMjQsIDI1MiwgMjI4LCA0OSwgNDMsIDIyMCwgMTUzLCAyLCAxMzQsIDI0NywgMTE4LCAyNTAsIDQsIDI0NCwgMTkxLCAKKyAgICAxMjMsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAxMTMsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAxMzQsIAorICAgIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyNDQsIDExLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjQ0LCA4MSwgCisgICAgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxOSwgMTI1LCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjIwLCAKKyAgICAxMjIsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyNDUsIDE5MywgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIAorICAgIDIyOCwgMjAwLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE2LCAyNDgsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgCisgICAgMTkxLCAyNDUsIDE2OCwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNSwgNzcsIDIyNiwgMjQyLCAyNTAsIDQsIAorICAgIDI0NCwgMTkxLCAyMjYsIDE5MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE1LCA1NiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE2LCAKKyAgICAxNDAsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NCwgNywgMjUwLCA0LCAyNDQsIDE5MSwgMjQ0LCA3OSwgMjUwLCA0LCAyNDQsIAorICAgIDE5MSwgMjE5LCAxMjEsIDI1MCwgNCwgMjQ0LCAxOTEsIDIyMCwgMTIxLCAyNTAsIDQsIDI0NCwgMTkxLCAyNDUsIDE5MiwgCisgICAgMjUwLCA0LCAyNDQsIDE5MSwgMjI4LCAxOTksIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNiwgMjQ2LCAyNTAsIDQsIDI0NCwgMTkxLCAKKyAgICAyNDUsIDE2NiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE1LCA3NSwgMjMwLCAxMTcsIDI0MywgMjMwLCAyMTYsIDM2LCAyMTYsIDIsIAorICAgIDIxOCwgMTQ4LCA2NCwgMjMyLCAyMzksIDIxOSwgMTcwLCA2NCwgMjM1LCAxMzIsIDIzMCwgMTA2LCAyNDIsIDEyNCwgMjQ0LCAKKyAgICAxOTAsIDI0MiwgMTI0LCAyNDQsIDE5MSwgMiwgMjE5LCA3NCwgMjQ1LCAxMywgMjQ0LCAxOTEsIDIsIDIxNywgMTQsIDY0LCAKKyAgICAyMzUsIDUzLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMCwgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIwNCwgCisgICAgMjMwLCAxMTEsIDIyLCAyMTksIDc0LCAyNDUsIDEzLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMSwgMjIsIAorICAgIDI0OSwgMjMwLCAyMTcsIDI0NywgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTEsIDIyLCAyMTYsIDEwNCwgCisgICAgMjQ1LCAxMywgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDI0MiwgMjUsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyNDAsIDI0NywgCisgICAgMjExLCAyMzMsIDI0NCwgMTkwLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjE5LCA3NCwgMjQ1LCAxMywgMjQ0LCAxOTEsIAorICAgIDIyMSwgMjE3LCAyNDgsIDYyLCAyNDQsIDMzLCAyMjMsIDg4LCAyNDQsIDE5MCwgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDI0MSwgCisgICAgMjI2LCAyNDUsIDEzLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjE4LCAzNCwgMjE5LCA3MywgMjQ0LCAxOTAsIDIyOSwgODcsIAorICAgIDI0NCwgMTkwLCAyNDUsIDIzLCAyNDQsIDE5MCwgMjE0LCAxODgsIDI0NCwgMTkwLCAyNDQsIDE5MSwgMiwgMjQ5LCAyMzAsIAorICAgIDIxNywgMjQ3LCAyMjUsIDE5MiwgMjQ0LCAxOTAsIDI0OSwgMjAxLCAyNDQsIDE5MCwgMjQ5LCAyMDIsIDI0NCwgMTkwLCAKKyAgICAyMzQsIDYyLCAyNDQsIDE5MCwgMjQ0LCAxOTEsIDIxNiwgMTM3LCAxMTUsIDIzNCwgNjMsIDIzNCwgNjIsIDI0NCwgMTkxLCAKKyAgICAyLCAyMTksIDc0LCAyNDUsIDEzLCAyMzQsIDYyLCAyNDQsIDE5MSwgMiwgMjUwLCAwLCAyNDUsIDEzLCAyNDQsIDE5MSwgMiwgCisgICAgMjE4LCA4OCwgMjE2LCAxOSwgMjQ0LCAxOTEsIDIsIDIxOCwgODgsIDIxNiwgMjAsIDIyLCAyMTEsIDIzMywgMjQ1LCAxNSwgCisgICAgMjQ0LCAxOTEsIDIsIDIxOCwgODgsIDIxNiwgMjAsIDIyLCAyMTYsIDEwNCwgMjQ1LCAxMywgMjQ3LCAxOTIsIDI0NCwgMTkwLCAKKyAgICAyMTEsIDIwNCwgMjQ0LCAxOTAsIDI1NCwgMTA4LCAyNDQsIDE5MCwgMjI0LCAyMjcsIDI0NCwgMTkwLCAyNDksIDExNiwgCisgICAgMjQ0LCAxOTAsIDIyNSwgMTcwLCAyNDQsIDE5MCwgMjQ0LCAxOTEsIDIsIDIzMiwgMTI2LCA2NCwgMjE1LCAyMDQsIDI0NywgCisgICAgMTkyLCAyNTEsIDg4LCAyMjMsIDg4LCAyNDQsIDE5MCwgMjQzLCAyMzksIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTEwLCAKKyAgICAyNTQsIDEwNiwgMjQ0LCAxOTAsIDI0NCwgMTUyLCAyNDQsIDE5MCwgMjEyLCAyMCwgMjQ0LCAxOTAsIDIxOSwgOTEsIDI0NCwgCisgICAgMTkwLCAyMTYsIDcxLCAyNDQsIDE5MCwgMjQyLCAxMjUsIDI0NCwgMTkwLCAyMzIsIDExNCwgMjQ5LCAxMTYsIDI0NCwgMTkwLCAKKyAgICAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMCwgMjQwLCAyMDMsIDI0NCwgMTkwLCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIAorICAgIDExMSwgMjIsIDI0OSwgMjMwLCAyMTcsIDI0NywgMjQ0LCAxOTEsIDIyMSwgMTkwLCAyMzYsIDAsIDI0NCwgMTUzLCAyNTMsIAorICAgIDIxMywgMjQ0LCAxOTAsIDI0NCwgNDksIDI0NCwgMTkwLCAyMTksIDkyLCAyNDQsIDE5MCwgMjQ3LCAxNjUsIDI0NCwgMTkwLCAKKyAgICAyNDQsIDE5MSwgMjExLCAyMzAsIDIzMCwgMTEwLCAyNDQsIDE5MSwgMiwgMjMxLCA4NCwgMjMxLCAxNDQsIDI0MiwgMTI0LCAKKyAgICAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDIxOSwgNzQsIDI0NSwgMTMsIDI1MCwgMjI1LCAyNDQsIDE5MSwgMiwgMjE3LCAxNCwgCisgICAgNjQsIDIzNSwgNTMsIDIxOSwgNzQsIDI1MCwgMjI1LCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMCwgMjE5LCA3NCwgMjUwLCAKKyAgICAyMjUsIDI0NCwgMTkxLCAyLCAyNDEsIDIyNiwgMjQ1LCAxMywgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyMTEsIDE5NiwgCisgICAgMjE5LCA3NSwgMjM0LCA2MiwgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyNTAsIDAsIDI0NSwgMTMsIDIyNCwgMjI3LCAyNTAsIAorICAgIDIyNSwgMjQ0LCAxOTAsIDI0OSwgMTE2LCAyNTAsIDIyNSwgMjQ0LCAxOTAsIDIxMiwgMjAsIDI1MCwgMjI1LCAyNDQsIDE5MCwgCisgICAgMjQ0LCAxOTEsIDIsIDIyOCwgNzUsIDI0MiwgMTYzLCAyNDMsIDM0LCAyNDQsIDE5MSwgMiwgMjI2LCAyMTUsIDI0MywgMzQsIAorICAgIDIyNSwgMTY4LCAyNTEsIDE2OCwgMjQ4LCA3NSwgMjIxLCAxNjksIDIzMCwgMTQ1LCAyNDEsIDIyOSwgMjMwLCAxNDUsIDIxOSwgCisgICAgOCwgMjMwLCAxNDUsIDI0MiwgNSwgMjI1LCAxNjgsIDIyMywgMTU2LCAxMjMsIDI0MiwgMTUsIDIyNSwgMTY4LCAyMjMsIAorICAgIDE1NiwgMjUxLCAxNzgsIDI0MiwgMTEsIDIzNiwgMCwgMjUwLCAxNzksIDIyNSwgMTY4LCAyNDMsIDIzOCwgMjI1LCAxNjgsIAorICAgIDIsIDIyNCwgMjI3LCAyNDQsIDE5MCwgMjI1LCAxNjgsIDIsIDI0NCwgNDEsIDI0MiwgMTAsIDIyMiwgMjAzLCAyNDEsIDIxNCwgCisgICAgMjE4LCAxNDMsIDIzMiwgMTQ5LCAyMjMsIDE2MiwgMjUwLCAyNDQsIDI0MSwgMTYyLCAyMTUsIDI0OCwgMjQxLCAxNjIsIAorICAgIDIxNSwgMjQ5LCAyLCAyNTEsIDExNCwgMjI4LCA1MywgMjE1LCAyNDgsIDIzMSwgMzIsIDE5MiwgMjIzLCAxNjMsIDIxOCwgCisgICAgMTQ5LCAyMTUsIDI0NiwgMjE1LCAyNDcsIDI1MCwgMjQ0LCAyNTEsIDkyLCAyMjYsIDE5NCwgMjUxLCA5MiwgMjE1LCAyMDEsIAorICAgIDI1MSwgOTMsIDIxOCwgMTI5LCAyMzAsIDE4NywgMjU0LCAxMzAsIDI0NCwgOTcsIDI0NSwgMTM3LCAyMjQsIDI1NSwgMjUwLCAKKyAgICAyNDQsIDIyNiwgMTk0LCAyMjQsIDI1NSwgMjUwLCAyNDQsIDIxNywgMzIsIDIyNiwgMTk0LCAyMTcsIDMyLCAyNTMsIDE4MCwgCisgICAgMjI2LCAxOTQsIDI1MywgMTgwLCAyMjMsIDExOCwgMjEzLCAyNDcsIDI0OCwgNTgsIDIxNSwgMTkyLCAyNTMsIDI0MiwgMjMyLCAKKyAgICAxMTcsIDIxNSwgMjU0LCAyMzAsIDEzOSwgMjMwLCAxMTYsIDIyMywgMTYxLCAyMTgsIDYsIDIyMywgMTYxLCAyMzAsIDExNiwgCisgICAgMjUxLCAyOCwgMjU0LCAyMjksIDIxNSwgMjQ1LCAyMjAsIDE2LCAyMjIsIDE4MiwgMjE5LCAxLCAyMDMsIDIxNSwgMjUyLCAKKyAgICAyMzIsIDIzMCwgNjcsIDIxNSwgMjUyLCAyMzIsIDIzMCwgMjQ5LCAxOTAsIDUwLCAyMjQsIDI1NSwgMjUwLCAyMjksIDIyMywgCisgICAgNDQsIDIzMiwgMjMwLCAyMTUsIDIyMiwgMjQ0LCA3NCwgMjI2LCAxOTcsIDIyNCwgMjM4LCAyNDcsIDEyMywgMjI4LCA3NSwgCisgICAgMjQ1LCAxMjUsIDUwLCAyMTksIDcyLCA4NywgMjI4LCA3NSwgMjE5LCA3MiwgODcsIDIyNCwgMTIyLCAyMzIsIDE5MywgMjM2LCAKKyAgICAwLCAyMzUsIDE1NywgMjI1LCA0MSwgODcsIDI0NywgMTQ2LCAyMjgsIDUyLCAyMzIsIDE5MywgODcsIDIyNCwgMjMyLCAyMTIsIAorICAgIDQxLCA4NywgMjI4LCA2NiwgMjEyLCA0MSwgODcsIDI1MiwgMiwgMjI4LCA3NSwgMjUyLCAxLCAyNTIsIDAsIDIzMCwgMTE2LCAKKyAgICAyNTIsIDAsIDIyNSwgMjEzLCAyMjgsIDc1LCAyMjUsIDIxMiwgMjUwLCAxMDAsIDI0OSwgMTI0LCAyMzEsIDU2LCA4NywgCisgICAgMjExLCAyMTgsIDg3LCAyMjMsIDU5LCAyNTIsIDE4NywgODcsIDIxNiwgMzcsIDIxMiwgNDEsIDI0OSwgMjUzLCAyMTksIAorICAgIDIzNCwgMjUyLCAxMTgsIDI1MiwgMTE2LCAyMjUsIDI0MiwgMjQ5LCAxNzcsIDI0OSwgODYsIDI1MiwgMTY5LCAyNTAsIDIyLCAKKyAgICA0MywgMjMyLCA5MCwgMTA4LCAxNiwgMzEsIDIyNCwgMywgMTA4LCAxNiwgMzEsIDI1NCwgMTkyLCAxMDgsIDE2LCAzMSwgCisgICAgMjQ0LCA5NiwgMTA4LCAxNiwgMzEsIDI0NSwgMjIzLCAxMDgsIDE2LCAzMSwgMjEyLCA0MCwgMTA4LCAxNiwgMzEsIDI1NCwgCisgICAgNDMsIDEwOCwgMTYsIDMxLCAyNTQsIDQ0LCAyMjMsIDEwNSwgMTA4LCAxNiwgMzEsIDI1NCwgNDQsIDIyMywgMTA0LCAxMDgsIAorICAgIDE2LCAzMSwgMjU0LCA0NCwgMjEzLCAxNDMsIDEwOCwgMTYsIDMxLCAyNTQsIDQ0LCAyMTMsIDE0MiwgMTA4LCAxNiwgMzEsIAorICAgIDIxMywgMTU3LCAxMDgsIDE2LCAzMSwgMjEzLCAxNTYsIDEwOCwgMTYsIDMxLCAyMTMsIDE1NSwgMTA4LCAxNiwgMzEsIDIxOCwgCisgICAgNDQsIDEwOCwgMTYsIDMxLCAyMjUsIDEyNSwgMjE4LCA0NCwgMTA4LCAxNiwgMzEsIDg1LCAyMTgsIDQ0LCAxMDgsIDE2LCAKKyAgICAzMSwgMjMxLCA1NSwgMjE4LCA3MSwgMTA4LCAxNiwgMzEsIDIzMSwgNTUsIDIxOCwgNzAsIDEwOCwgMTYsIDMxLCAyMzEsIAorICAgIDU1LCAyMTgsIDY5LCAxMDgsIDE2LCAzMSwgMjUwLCAzOCwgMTA4LCAxNiwgMzEsIDIyMiwgMSwgMTA4LCAxNiwgMzEsIDIyOCwgCisgICAgMTg4LCAxMDgsIDE2LCAzMSwgMjEzLCAxNDEsIDEwOCwgMTYsIDMxLCAyMTMsIDE0MCwgMTA4LCAxNiwgMzEsIDIyMiwgMjA0LCAKKyAgICAyMjIsIDEsIDEwOCwgMTYsIDMxLCAyMjIsIDIwNCwgMjIyLCAwLCAxMDgsIDE2LCAzMSwgMjQyLCAxNjYsIDEwOCwgMTYsIAorICAgIDMxLCAyMTksIDE2NiwgMTA4LCAxNiwgMzEsIDIzNSwgMTc3LCAyMjYsIDE1MywgMTA4LCAxNiwgMzEsIDIzNSwgMTc3LCAKKyAgICAyMjYsIDE1MiwgMTA4LCAxNiwgMzEsIDI0OSwgMTM0LCA2NCwgMjM1LCAxNzYsIDEwOCwgMTYsIDMxLCAyMjMsIDEwMSwgNjQsIAorICAgIDIzNSwgMTc2LCAxMDgsIDE2LCAzMSwgMjQ5LCAxNjgsIDIyNiwgMTUzLCAxMDgsIDE2LCAzMSwgMjM1LCAxNzUsIDIyNiwgCisgICAgMTUzLCAxMDgsIDE2LCAzMSwgMjE4LCA3MiwgNjQsIDI0OSwgMTY3LCAxMDgsIDE2LCAzMSwgMjQ5LCAxMzQsIDY0LCAyNDksIAorICAgIDE2NywgMTA4LCAxNiwgMzEsIDI0OSwgMTM0LCA2NCwgMjQ5LCAxNjYsIDEwOCwgMTYsIDMxLCAyNDksIDE2OCwgMjU0LCA4MywgCisgICAgMTA4LCAxNiwgMzEsIDIyMiwgMiwgNjQsIDI0OSwgMTY4LCAyNTQsIDgzLCAxMDgsIDE2LCAzMSwgMjE4LCA3MiwgNjQsIAorICAgIDIyMiwgMiwgNjQsIDI0OSwgMTY3LCAxMDgsIDE2LCAzMSwgMjEzLCAyNDMsIDEwOCwgMTYsIDMxLCAyMTYsIDg0LCAyMjYsIAorICAgIDE1MywgMTA4LCAxNiwgMzEsIDIzMywgNTcsIDIyNiwgMTUzLCAxMDgsIDE2LCAzMSwgMjU0LCA4MiwgMjI2LCAxNTMsIDEwOCwgCisgICAgMTYsIDMxLCAyMTgsIDcyLCA2NCwgMjU0LCA4MSwgMTA4LCAxNiwgMzEsIDIyMiwgMiwgNjQsIDI1NCwgODEsIDEwOCwgMTYsIAorICAgIDMxLCAyMTgsIDcyLCA2NCwgMjIyLCAyLCA2NCwgMjU0LCA4MSwgMTA4LCAxNiwgMzEsIDIxMywgMTU4LCA2NCwgMjU0LCA4MSwgCisgICAgMTA4LCAxNiwgMzEsIDIyMywgMTAxLCA2NCwgMjU0LCA4MSwgMTA4LCAxNiwgMzEsIDIyMywgMTAxLCA2NCwgMjU0LCA4MCwgCisgICAgMTA4LCAxNiwgMzEsIDIyMywgMTAwLCAxMDgsIDE2LCAzMSwgMjIzLCA5OSwgMTA4LCAxNiwgMzEsIDIyMywgOTgsIDEwOCwgCisgICAgMTYsIDMxLCAyMjMsIDk3LCAxMDgsIDE2LCAzMSwgMjU0LCAxNTcsIDEwOCwgMTYsIDMxLCAyNTQsIDE1NiwgMTA4LCAxNiwgCisgICAgMzEsIDIzMSwgMTYzLCAxMDgsIDE2LCAzMSwgMjIyLCA3LCAxMDgsIDE2LCAzMSwgMjUzLCAyNDYsIDEwOCwgMTYsIDMxLCAKKyAgICAyMjMsIDEyNSwgMTA4LCAxNiwgMzEsIDIyMywgMTI0LCAxMDgsIDE2LCAzMSwgMjUzLCAxODMsIDEwOCwgMTYsIDMxLCAyNTEsIAorICAgIDIyOSwgMjI2LCAxNTMsIDEwOCwgMTYsIDMxLCAyMTcsIDQ5LCAxMDgsIDE2LCAzMSwgMjE3LCA0OCwgMTA4LCAxNiwgMzEsIAorICAgIDIyNCwgOCwgMjMyLCAyMjIsIDEwOCwgMTYsIDMxLCAyNTEsIDE4MywgMTA4LCAxNiwgMzEsIDI1MSwgMTgyLCAxMDgsIDE2LCAKKyAgICAzMSwgMjUxLCAxODEsIDEwOCwgMTYsIDMxLCAyNTQsIDEzOCwgMTA4LCAxNiwgMzEsIDIyNiwgMjE4LCAxMDgsIDE2LCAzMSwgCisgICAgMjE4LCAyNDgsIDEwOCwgMTYsIDMxLCAyMTYsIDgyLCAxMDgsIDE2LCAzMSwgMjQyLCA5NiwgMTA4LCAxNiwgMzEsIDIxMiwgCisgICAgMjgsIDEwOCwgMTYsIDMxLCAyMjQsIDIyNiwgMTA4LCAxNiwgMzEsIDI1MSwgMTQsIDEwOCwgMTYsIDMxLCAyMTUsIDg2LCAKKyAgICAxMDgsIDE2LCAzMSwgMjUwLCAyNDYsIDIzMCwgMTIyLCAxMDgsIDE2LCAzMSwgMjIxLCAyMDIsIDY0LCAyMzUsIDU1LCAxMDgsIAorICAgIDE2LCAzMSwgMjUxLCAyNSwgMTA4LCAxNiwgMzEsIDIxNSwgMjE5LCAxMDgsIDE2LCAzMSwgMjE4LCAxNTQsIDIxNSwgMjE5LCAKKyAgICAxMDgsIDE2LCAzMSwgMjMyLCAxNDgsIDEwOCwgMTYsIDMxLCAyMTksIDU2LCAxMDgsIDE2LCAzMSwgMjE0LCAxNDIsIDEwOCwgCisgICAgMTYsIDMxLCAyNDAsIDI0NiwgMjQ2LCA2NCwgMTA4LCAxNiwgMzEsIDI1MywgMjI3LCAxMDgsIDE2LCAzMSwgMjI0LCAyMzQsIAorICAgIDI1MywgMjI3LCAxMDgsIDE2LCAzMSwgMjUxLCAxNDIsIDEwOCwgMTYsIDMxLCAyMjQsIDIyNSwgMjUxLCAxNDIsIDEwOCwgCisgICAgMTYsIDMxLCAyNTQsIDEzNSwgMTA4LCAxNiwgMzEsIDIxOCwgMTE3LCAyMTgsIDI2LCAyMTgsIDExNiwgMTA4LCAxNiwgMzEsIAorICAgIDIxOCwgMTE3LCAyMTgsIDI2LCAyMTgsIDExNSwgMTA4LCAxNiwgMzEsIDIxOCwgNjgsIDEwOCwgMTYsIDMxLCAyMjQsIDIwMCwgCisgICAgMTA4LCAxNiwgMzEsIDI0NywgMTgxLCAxMDgsIDE2LCAzMSwgMjQ3LCAxODMsIDEwOCwgMTYsIDMxLCAyNDcsIDE4MiwgMTA4LCAKKyAgICAxNiwgMzEsIDIyNCwgMTMxLCAxMDgsIDE2LCAzMSwgMjI0LCAxMjAsIDEwOCwgMTYsIDMxLCAyNDksIDEyMiwgMTA4LCAxNiwgCisgICAgMzEsIDI0OSwgMTIxLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMjAsIDEwOCwgMTYsIDMxLCAyNDksIDExOSwgMTA4LCAxNiwgMzEsIAorICAgIDI0OSwgMTE4LCAxMDgsIDE2LCAzMSwgMjU0LCAxNjksIDEwOCwgMTYsIDMxLCAyNTIsIDExOSwgNjQsIDIzMSwgMTQ5LCAKKyAgICAxMDgsIDE2LCAzMSwgMjUyLCAxMTksIDY0LCAyMTQsIDE3LCAxMDgsIDE2LCAzMSwgMjIzLCA1NywgMTA4LCAxNiwgMzEsIAorICAgIDI0MCwgMjM4LCAxMDgsIDE2LCAzMSwgMjI4LCAyMTIsIDEwOCwgMTYsIDMxLCAyNDgsIDE0NSwgMTA4LCAxNiwgMzEsIDIzMCwgCisgICAgMTM0LCAxMDgsIDE2LCAzMSwgMTYzLCAyNDYsIDk0LCAxMDgsIDE2LCAzMSwgMTYzLCAyMjYsIDEzMiwgOSwgMTQsIDI0MCwgCisgICAgMTAyLCA5LCAxNCwgMjQwLCAxMDEsIDksIDE0LCAyNDAsIDEwMCwgOSwgMTQsIDI0MCwgOTksIDksIDE0LCAyNDAsIDk4LCA5LCAKKyAgICAxNCwgMjQwLCA5NywgOSwgMTQsIDI0MCwgOTYsIDksIDE0LCAyNDAsIDk1LCA5LCAxNCwgMjQwLCA5NCwgOSwgMTQsIDI0MCwgCisgICAgOTMsIDksIDE0LCAyNDAsIDkyLCA5LCAxNCwgMjQwLCA5MSwgOSwgMTQsIDI0MCwgOTAsIDksIDE0LCAyNDAsIDg5LCA5LCAKKyAgICAxNCwgMjQwLCA4OCwgOSwgMTQsIDI0MCwgODcsIDksIDE0LCAyNDAsIDg2LCA5LCAxNCwgMjQwLCA4NSwgOSwgMTQsIDI0MCwgCisgICAgODQsIDksIDE0LCAyNDAsIDgzLCA5LCAxNCwgMjQwLCA4MiwgOSwgMTQsIDI0MCwgODEsIDksIDE0LCAyNDAsIDgwLCA5LCAKKyAgICAxNCwgMjQwLCA3OSwgOSwgMTQsIDI0MCwgNzgsIDksIDE0LCAyNDAsIDc3LCA5LCAxNCwgMjQwLCA3NiwgOSwgMTQsIDI0MCwgCisgICAgNzUsIDksIDE0LCAyNDAsIDc0LCA5LCAxNCwgMjQwLCA3MywgOSwgMTQsIDI0MCwgNzIsIDksIDE0LCAyNDAsIDcxLCA5LCAKKyAgICAxNCwgMjQwLCA3MCwgOSwgMTQsIDI0MCwgNjksIDksIDE0LCAyNDAsIDY4LCA5LCAxNCwgMjQwLCA2NywgOSwgMTQsIDI0MCwgCisgICAgNjYsIDksIDE0LCAyNDAsIDY1LCA5LCAxNCwgMjQwLCA2NCwgOSwgMTQsIDI0MCwgNjMsIDksIDE0LCAyNDAsIDYyLCA5LCAKKyAgICAxNCwgMjQwLCA2MSwgOSwgMTQsIDI0MCwgNjAsIDksIDE0LCAyNDAsIDU5LCA5LCAxNCwgMjQwLCA1OCwgOSwgMTQsIDI0MCwgCisgICAgNTcsIDksIDE0LCAyNDAsIDU2LCA5LCAxNCwgMjQwLCA1NSwgOSwgMTQsIDI0MCwgNTQsIDksIDE0LCAyNDAsIDUzLCA5LCAKKyAgICAxNCwgMjQwLCA1MiwgOSwgMTQsIDI0MCwgNTEsIDksIDE0LCAyNDAsIDUwLCA5LCAxNCwgMjQwLCA0OSwgOSwgMTQsIDI0MCwgCisgICAgNDgsIDksIDE0LCAyNDAsIDQ3LCA5LCAxNCwgMjQwLCA0NiwgOSwgMTQsIDI0MCwgNDUsIDksIDE0LCAyNDAsIDQ0LCA5LCAKKyAgICAxNCwgMjQwLCA0MywgOSwgMTQsIDI0MCwgNDIsIDksIDE0LCAyNDAsIDQxLCA5LCAxNCwgMjQwLCA0MCwgOSwgMTQsIDI0MCwgCisgICAgMzksIDksIDE0LCAyNDAsIDM4LCA5LCAxNCwgMjQwLCAzNywgOSwgMTQsIDI0MCwgMzYsIDksIDE0LCAyNDAsIDM1LCA5LCAKKyAgICAxNCwgMjQwLCAzNCwgOSwgMTQsIDI0MCwgMzMsIDksIDE0LCAyNDAsIDMyLCA5LCAxNCwgMjQwLCAzMSwgOSwgMTQsIDI0MCwgCisgICAgMzAsIDksIDE0LCAyNDAsIDI5LCA5LCAxNCwgMjQwLCAyOCwgOSwgMTQsIDI0MCwgMjcsIDksIDE0LCAyNDAsIDI2LCA5LCAKKyAgICAxNCwgMjQwLCAyNSwgOSwgMTQsIDI0MCwgMjQsIDksIDE0LCAyNDAsIDIzLCA5LCAxNCwgMjQwLCAyMiwgOSwgMTQsIDI0MCwgCisgICAgMjEsIDksIDE0LCAyNDAsIDIwLCA5LCAxNCwgMjQwLCAxOSwgOSwgMTQsIDI0MCwgMTgsIDksIDE0LCAyNDAsIDE3LCA5LCAKKyAgICAxNCwgMjQwLCAxNiwgOSwgMTQsIDI0MCwgMTUsIDksIDE0LCAyNDAsIDE0LCA5LCAxNCwgMjQwLCAxMywgOSwgMTQsIDI0MCwgCisgICAgMTIsIDksIDE0LCAyNDAsIDExLCA5LCAxNCwgMjQwLCAxMCwgOSwgMTQsIDI0MCwgOSwgOSwgMTQsIDI0MCwgOCwgOSwgMTQsIAorICAgIDI0MCwgNywgOSwgMTQsIDI0MCwgNiwgOSwgMTQsIDI0MCwgNSwgOSwgMTQsIDI0MCwgNCwgOSwgMTQsIDI0MCwgMywgOSwgCisgICAgMTQsIDI0MCwgMiwgOSwgMTQsIDI0MCwgMSwgOSwgMTQsIDI0MCwgMCwgOSwgMTQsIDIzOSwgMjU1LCA5LCAxNCwgMjM5LCAKKyAgICAyNTQsIDksIDE0LCAyMzksIDI1MywgOSwgMTQsIDIzOSwgMjUyLCA5LCAxNCwgMjM5LCAyNTEsIDksIDE0LCAyMzksIDI1MCwgCisgICAgOSwgMTQsIDIzOSwgMjQ5LCA5LCAxNCwgMjM5LCAyNDgsIDksIDE0LCAyMzksIDI0NywgOSwgMTQsIDIzOSwgMjQ2LCA5LCAKKyAgICAxNCwgMjM5LCAyNDUsIDksIDE0LCAyMzksIDI0NCwgOSwgMTQsIDIzOSwgMjQzLCA5LCAxNCwgMjM5LCAyNDIsIDksIDE0LCAKKyAgICAyMzksIDI0MSwgOSwgMTQsIDIzOSwgMjQwLCA5LCAxNCwgMjM5LCAyMzksIDksIDE0LCAyMzksIDIzOCwgOSwgMTQsIDIzOSwgCisgICAgMjM3LCA5LCAxNCwgMjM5LCAyMzYsIDksIDE0LCAyMzksIDIzNSwgOSwgMTQsIDIzOSwgMjM0LCA5LCAxNCwgMjM5LCAyMzMsIAorICAgIDksIDE0LCAyMzksIDIzMiwgOSwgMTQsIDIzOSwgMjMxLCA5LCAxNCwgMjM5LCAyMzAsIDksIDE0LCAyMzksIDIyOSwgOSwgCisgICAgMTQsIDIzOSwgMjI4LCA5LCAxNCwgMjM5LCAyMjcsIDksIDE0LCAyMzksIDIyNiwgOSwgMTQsIDIzOSwgMjI1LCA5LCAxNCwgCisgICAgMjM5LCAyMjQsIDksIDE0LCAyMzksIDIyMywgOSwgMTQsIDIzOSwgMjIyLCA5LCAxNCwgMjM5LCAyMjEsIDksIDE0LCAyMzksIAorICAgIDIyMCwgOSwgMTQsIDIzOSwgMjE5LCA5LCAxNCwgMjM5LCAyMTgsIDksIDE0LCAyMzksIDIxNywgOSwgMTQsIDIzOSwgMjE2LCAKKyAgICA5LCAxNCwgMjM5LCAyMTUsIDksIDE0LCAyMzksIDIxNCwgOSwgMTQsIDIzOSwgMjEzLCA5LCAxNCwgMjM5LCAyMTIsIDksIAorICAgIDE0LCAyMzksIDIxMSwgOSwgMTQsIDIzOSwgMjEwLCA5LCAxNCwgMjM5LCAyMDksIDksIDE0LCAyMzksIDIwOCwgOSwgMTQsIAorICAgIDIzOSwgMjA3LCA5LCAxNCwgMjM5LCAyMDYsIDksIDE0LCAyMzksIDIwNSwgOSwgMTQsIDIzOSwgMjA0LCA5LCAxNCwgMjM5LCAKKyAgICAyMDMsIDksIDE0LCAyMzksIDIwMiwgOSwgMTQsIDIzOSwgMjAxLCA5LCAxNCwgMjM5LCAyMDAsIDksIDE0LCAyMzksIDE5OSwgCisgICAgOSwgMTQsIDIzOSwgMTk4LCA5LCAxNCwgMjM5LCAxOTcsIDksIDE0LCAyMzksIDE5NiwgOSwgMTQsIDIzOSwgMTk1LCA5LCAKKyAgICAxNCwgMjM5LCAxOTQsIDksIDE0LCAyMzksIDE5MywgOSwgMTQsIDIzOSwgMTkyLCA5LCAxNCwgMjM5LCAxOTEsIDksIDE0LCAKKyAgICAyMzksIDE5MCwgOSwgMTQsIDIzOSwgMTg5LCA5LCAxNCwgMjM5LCAxODgsIDksIDE0LCAyMzksIDE4NywgOSwgMTQsIDIzOSwgCisgICAgMTg2LCA5LCAxNCwgMjM5LCAxODUsIDksIDE0LCAyMzksIDE4NCwgOSwgMTQsIDIzOSwgMTgzLCA5LCAxNCwgMjM5LCAxODIsIAorICAgIDksIDE0LCAyMzksIDE4MSwgOSwgMTQsIDIzOSwgMTgwLCA5LCAxNCwgMjM5LCAxNzksIDksIDE0LCAyMzksIDE3OCwgOSwgCisgICAgMTQsIDIzOSwgMTc3LCA5LCAxNCwgMjM5LCAxNzYsIDksIDE0LCAyMzksIDE3NSwgOSwgMTQsIDIzOSwgMTc0LCA5LCAxNCwgCisgICAgMjM5LCAxNzMsIDksIDE0LCAyMzksIDE3MiwgOSwgMTQsIDIzOSwgMTcxLCA5LCAxNCwgMjM5LCAxNzAsIDksIDE0LCAyMzksIAorICAgIDE2OSwgOSwgMTQsIDIzOSwgMTY4LCA5LCAxNCwgMjM5LCAxNjcsIDksIDE0LCAyMzksIDE2NiwgOSwgMTQsIDIzOSwgMTY1LCAKKyAgICA5LCAxNCwgMjM5LCAxNjQsIDksIDE0LCAyMzksIDE2MywgOSwgMTQsIDIzOSwgMTYyLCA5LCAxNCwgMjM5LCAxNjEsIDksIAorICAgIDE0LCAyMzksIDE2MCwgOSwgMTQsIDIzOSwgMTU5LCA5LCAxNCwgMjM5LCAxNTgsIDksIDE0LCAyMzksIDE1NywgOSwgMTQsIAorICAgIDIzOSwgMTU2LCA5LCAxNCwgMjM5LCAxNTUsIDksIDE0LCAyMzksIDE1NCwgOSwgMTQsIDIzOSwgMTUzLCA5LCAxNCwgMjM5LCAKKyAgICAxNTIsIDksIDE0LCAyMzksIDE1MSwgOSwgMTQsIDIzOSwgMTUwLCA5LCAxNCwgMjM5LCAxNDksIDksIDE0LCAyMzksIDE0OCwgCisgICAgOSwgMTQsIDIzOSwgMTQ3LCA5LCAxNCwgMjM5LCAxNDYsIDksIDE0LCAyMzksIDE0NSwgOSwgMTQsIDIzOSwgMTQ0LCA5LCAKKyAgICAxNCwgMjM5LCAxNDMsIDksIDE0LCAyMzksIDE0MiwgOSwgMTQsIDIzOSwgMTQxLCA5LCAxNCwgMjM5LCAxNDAsIDksIDE0LCAKKyAgICAyMzksIDEzOSwgOSwgMTQsIDIzOSwgMTM4LCA5LCAxNCwgMjM5LCAxMzcsIDksIDE0LCAyMzksIDEzNiwgOSwgMTQsIDIzOSwgCisgICAgMTM1LCA5LCAxNCwgMjM5LCAxMzQsIDksIDE0LCAyMzksIDEzMywgOSwgMTQsIDIzOSwgMTMyLCA5LCAxNCwgMjM5LCAxMzEsIAorICAgIDksIDE0LCAyMzksIDEzMCwgOSwgMTQsIDIzOSwgMTI5LCA5LCAxNCwgMjM5LCAxMjgsIDksIDE0LCAyMzksIDEyNywgOSwgCisgICAgMTQsIDIzOSwgMTI2LCA5LCAxNCwgMjM5LCAxMjUsIDksIDE0LCAyMzksIDEyNCwgOSwgMTQsIDIzOSwgMTIzLCA5LCAxNCwgCisgICAgMjM5LCAxMjIsIDksIDE0LCAyMzksIDEyMSwgOSwgMTQsIDIzOSwgMTIwLCA5LCAxNCwgMjM5LCAxMTksIDksIDE0LCAyMzksIAorICAgIDExOCwgOSwgMTQsIDIzOSwgMTE3LCA5LCAxNCwgMjM5LCAxMTYsIDksIDE0LCAyMzksIDExNSwgOSwgMTQsIDIzOSwgMTE0LCAKKyAgICA5LCAxNCwgMjM5LCAxMTMsIDksIDE0LCAyMzksIDExMiwgOSwgMTQsIDIzOSwgMTExLCA5LCAxNCwgMjM5LCAxMTAsIDksIAorICAgIDE0LCAyMzksIDEwOSwgOSwgMTQsIDIzOSwgMTA4LCA5LCAxNCwgMjM5LCAxMDcsIDksIDE0LCAyMzksIDEwNiwgOSwgMTQsIAorICAgIDIzOSwgMTA1LCA5LCAxNCwgMjM5LCAxMDQsIDksIDE0LCAyMzksIDEwMywgOSwgMTQsIDIzOSwgMTAyLCA5LCAxNCwgMjM5LCAKKyAgICAxMDEsIDksIDE0LCAyMzksIDEwMCwgOSwgMTQsIDIzOSwgOTksIDksIDE0LCAyMzksIDk4LCA5LCAxNCwgMjM5LCA5NywgOSwgCisgICAgMTQsIDIzOSwgOTYsIDksIDE0LCAyMzksIDk1LCA5LCAxNCwgMjM5LCA5NCwgOSwgMTQsIDIzOSwgOTMsIDksIDE0LCAyMzksIAorICAgIDkyLCA5LCAxNCwgMjM5LCA5MSwgOSwgMTQsIDIzOSwgOTAsIDksIDE0LCAyMzksIDg5LCA5LCAxNCwgMjM5LCA4OCwgOSwgCisgICAgMTQsIDIzOSwgODcsIDksIDE0LCAyMzksIDg2LCA5LCAxNCwgMjM5LCA4NSwgOSwgMTQsIDIzOSwgODQsIDksIDE0LCAyMzksIAorICAgIDgzLCA5LCAxNCwgMjM5LCA4MiwgOSwgMTQsIDIzOSwgODEsIDksIDE0LCAyMzksIDgwLCA5LCAxNCwgMjM5LCA3OSwgOSwgCisgICAgMTQsIDIzOSwgNzgsIDksIDE0LCAyMzksIDc3LCA5LCAxNCwgMjM5LCA3NiwgOSwgMTQsIDIzOSwgNzUsIDksIDE0LCAyMzksIAorICAgIDc0LCA5LCAxNCwgMjM5LCA3MywgOSwgMTQsIDIzOSwgNzIsIDksIDE0LCAyMzksIDcxLCA5LCAxNCwgMjM5LCA3MCwgOSwgCisgICAgMTQsIDIzOSwgNjksIDksIDE0LCAyMzksIDY4LCA5LCAxNCwgMjM5LCA2NywgOSwgMTQsIDIzOSwgNjYsIDksIDE0LCAyMzksIAorICAgIDY1LCA5LCAxNCwgMjM5LCA2NCwgOSwgMTQsIDIzOSwgNjMsIDksIDE0LCAyMzksIDYyLCA5LCAxNCwgMjM5LCA2MSwgOSwgCisgICAgMTQsIDIzOSwgNjAsIDksIDE0LCAyMzksIDU5LCA5LCAxNCwgMjM5LCA1OCwgOSwgMTQsIDIzOSwgNTcsIDksIDE0LCAyMzksIAorICAgIDU2LCA5LCAxNCwgMjM5LCA1NSwgOSwgMTQsIDIzOSwgNTQsIDksIDE0LCAyMzksIDUzLCA5LCAxNCwgMjM5LCA1MiwgOSwgCisgICAgMTQsIDIzOSwgNTEsIDksIDE0LCAyMzksIDUwLCA5LCAxNCwgMjM5LCA0OSwgOSwgMTQsIDIzOSwgNDgsIDksIDE0LCAyMzksIAorICAgIDQ3LCA5LCAxNCwgMjM5LCA0NiwgOSwgMTQsIDIzOSwgNDUsIDksIDE0LCAyMzksIDQ0LCA5LCAxNCwgMjM5LCA0MywgOSwgCisgICAgMTQsIDIzOSwgNDIsIDksIDE0LCAyMzksIDQxLCA5LCAxNCwgMjM5LCA0MCwgOSwgMTQsIDIzOSwgMzksIDksIDE0LCAyMzksIAorICAgIDM4LCA5LCAxNCwgMjM5LCAzNywgOSwgMTQsIDIzOSwgMzYsIDksIDE0LCAyMzksIDM1LCA5LCAxNCwgMjM5LCAzNCwgOSwgCisgICAgMTQsIDIzOSwgMzMsIDksIDE0LCAyMzksIDMyLCA5LCAxNCwgMjM5LCAzMSwgOSwgMTQsIDIzOSwgMzAsIDksIDE0LCAyMzksIAorICAgIDI5LCA5LCAxNCwgMjM5LCAyOCwgOSwgMTQsIDIzOSwgMjcsIDksIDE0LCAyMzksIDI2LCA5LCAxNCwgMjM5LCAyNSwgOSwgCisgICAgMTQsIDIzOSwgMjQsIDksIDE0LCAyMzksIDIzLCA5LCAxNCwgMjM5LCAyMiwgOSwgMTQsIDIzOSwgMjEsIDksIDE0LCAyMzksIAorICAgIDIwLCA5LCAxNCwgMjM5LCAxOSwgOSwgMTQsIDIzOSwgMTgsIDksIDE0LCAyMzksIDE3LCA5LCAxNCwgMjM5LCAxNiwgOSwgCisgICAgMTQsIDIzOSwgMTUsIDksIDE0LCAyMzksIDE0LCA5LCAxNCwgMjM5LCAxMywgOSwgMTQsIDIzOSwgMTIsIDksIDE0LCAyMzksIAorICAgIDExLCA5LCAxNCwgMjM5LCAxMCwgOSwgMTQsIDIzOSwgOSwgOSwgMTQsIDIzOSwgOCwgOSwgMTQsIDIzOSwgNywgOSwgMTQsIAorICAgIDIzOSwgNiwgOSwgMTQsIDIzOSwgNSwgOSwgMTQsIDIzOSwgNCwgOSwgMTQsIDIzOSwgMywgOSwgMTQsIDIzOSwgMiwgOSwgCisgICAgMTQsIDIzOSwgMSwgOSwgMTQsIDIzOSwgMCwgOSwgMTQsIDIzOCwgMjU1LCA5LCAxNCwgMjM4LCAyNTQsIDksIDE0LCAyMzgsIAorICAgIDI1MywgOSwgMTQsIDIzOCwgMjUyLCA5LCAxNCwgMjM4LCAyNTEsIDksIDE0LCAyMzgsIDI1MCwgOSwgMTQsIDIzOCwgMjQ5LCAKKyAgICA5LCAxNCwgMjM4LCAyNDgsIDksIDE0LCAyMzgsIDI0NywgOSwgMTQsIDIzOCwgMjQ2LCA5LCAxNCwgMjM4LCAyNDUsIDksIAorICAgIDE0LCAyMzgsIDI0NCwgOSwgMTQsIDIzOCwgMjQzLCA5LCAxNCwgMjM4LCAyNDIsIDksIDE0LCAyMzgsIDI0MSwgOSwgMTQsIAorICAgIDIzOCwgMjQwLCA5LCAxNCwgMjM4LCAyMzksIDksIDE0LCAyMzgsIDIzOCwgOSwgMTQsIDIzOCwgMjM3LCA5LCAxNCwgMjM4LCAKKyAgICAyMzYsIDksIDE0LCAyMzgsIDIzNSwgOSwgMTQsIDIzOCwgMjM0LCA5LCAxNCwgMjM4LCAyMzMsIDksIDE0LCAyMzgsIDIzMiwgCisgICAgOSwgMTQsIDIzOCwgMjMxLCA5LCAxNCwgMjM4LCAyMzAsIDksIDE0LCAyMzgsIDIyOSwgOSwgMTQsIDIzOCwgMjI4LCA5LCAKKyAgICAxNCwgMjM4LCAyMjcsIDksIDE0LCAyMzgsIDIyNiwgOSwgMTQsIDIzOCwgMjI1LCA5LCAxNCwgMjM4LCAyMjQsIDksIDE0LCAKKyAgICAyMzgsIDIyMywgOSwgMTQsIDIzOCwgMjIyLCA5LCAxNCwgMjM4LCAyMjEsIDksIDE0LCAyMzgsIDIyMCwgOSwgMTQsIDIzOCwgCisgICAgMjE5LCA5LCAxNCwgMjM4LCAyMTgsIDksIDE0LCAyMzgsIDIxNywgOSwgMTQsIDIzOCwgMjE2LCA5LCAxNCwgMjM4LCAyMTUsIAorICAgIDksIDE0LCAyMzgsIDIxNCwgOSwgMTQsIDIzOCwgMjEzLCA5LCAxNCwgMjM4LCAyMTIsIDksIDE0LCAyMzgsIDIxMSwgOSwgCisgICAgMTQsIDIzOCwgMjEwLCA5LCAxNCwgMjM4LCAyMDksIDksIDE0LCAyMzgsIDIwOCwgOSwgMTQsIDIzOCwgMjA3LCA5LCAxNCwgCisgICAgMjM4LCAyMDYsIDksIDE0LCAyMzgsIDIwNSwgOSwgMTQsIDIzOCwgMjA0LCA5LCAxNCwgMjM4LCAyMDMsIDksIDE0LCAyMzgsIAorICAgIDIwMiwgOSwgMTQsIDIzOCwgMjAxLCA5LCAxNCwgMjM4LCAyMDAsIDksIDE0LCAyMzgsIDE5OSwgOSwgMTQsIDIzOCwgMTk4LCAKKyAgICA5LCAxNCwgMjM4LCAxOTcsIDksIDE0LCAyMzgsIDE5NiwgOSwgMTQsIDIzOCwgMTk1LCA5LCAxNCwgMjM4LCAxOTQsIDksIAorICAgIDE0LCAyMzgsIDE5MywgOSwgMTQsIDIzOCwgMTkyLCA5LCAxNCwgMjM4LCAxOTEsIDksIDE0LCAyMzgsIDE5MCwgOSwgMTQsIAorICAgIDIzOCwgMTg5LCA5LCAxNCwgMjM4LCAxODgsIDksIDE0LCAyMzgsIDE4NywgOSwgMTQsIDIzOCwgMTg2LCA5LCAxNCwgMjM4LCAKKyAgICAxODUsIDksIDE0LCAyMzgsIDE4NCwgOSwgMTQsIDIzOCwgMTgzLCA5LCAxNCwgMjM4LCAxODIsIDksIDE0LCAyMzgsIDE4MSwgCisgICAgOSwgMTQsIDIzOCwgMTgwLCA5LCAxNCwgMjM4LCAxNzksIDksIDE0LCAyMzgsIDE3OCwgOSwgMTQsIDIzOCwgMTc3LCA5LCAKKyAgICAxNCwgMjM4LCAxNzYsIDksIDE0LCAyMzgsIDE3NSwgOSwgMTQsIDIzOCwgMTc0LCA5LCAxNCwgMjM4LCAxNzMsIDksIDE0LCAKKyAgICAyMzgsIDE3MiwgOSwgMTQsIDIzOCwgMTcxLCA5LCAxNCwgMjM4LCAxNzAsIDksIDE0LCAyMzgsIDE2OSwgOSwgMTQsIDIzOCwgCisgICAgMTY4LCA5LCAxNCwgMjM4LCAxNjcsIDksIDE0LCAyMzgsIDE2NiwgOSwgMTQsIDIzOCwgMTY1LCA5LCAxNCwgMjM4LCAxNjQsIAorICAgIDksIDE0LCAyMzgsIDE2MywgOSwgMTQsIDIzOCwgMTYyLCA5LCAxNCwgMjM4LCAxNjEsIDksIDE0LCAyMzgsIDE2MCwgOSwgCisgICAgMTQsIDIzOCwgMTU5LCA5LCAxNCwgMjM4LCAxNTgsIDksIDE0LCAyMzgsIDE1NywgOSwgMTQsIDIzOCwgMTU2LCA5LCAxNCwgCisgICAgMjM4LCAxNTUsIDksIDE0LCAyMzgsIDE1NCwgOSwgMTQsIDIzOCwgMTUzLCA5LCAxNCwgMjM4LCAxNTIsIDksIDE0LCAyMzgsIAorICAgIDE1MSwgOSwgMTQsIDIzOCwgMTUwLCA5LCAxNCwgMjM4LCAxNDksIDksIDE0LCAyMzgsIDE0OCwgOSwgMTQsIDIzOCwgMTQ3LCAKKyAgICA5LCAxNCwgMjM4LCAxNDYsIDksIDE0LCAyMzgsIDE0NSwgOSwgMTQsIDIzOCwgMTQ0LCA5LCAxNCwgMjM4LCAxNDMsIDksIAorICAgIDE0LCAyMzgsIDE0MiwgOSwgMTQsIDIzOCwgMTQxLCA5LCAxNCwgMjM4LCAxNDAsIDksIDE0LCAyMzgsIDEzOSwgOSwgMTQsIAorICAgIDIzOCwgMTM4LCA5LCAxNCwgMjM4LCAxMzcsIDksIDE0LCAyMzgsIDEzNiwgOSwgMTQsIDIzOCwgMTM1LCA5LCAxNCwgMjM4LCAKKyAgICAxMzQsIDksIDE0LCAyMzgsIDEzMywgOSwgMTQsIDIzOCwgMTMyLCA5LCAxNCwgMjM4LCAxMzEsIDksIDE0LCAyMzgsIDEzMCwgCisgICAgOSwgMTQsIDIzOCwgMTI5LCA5LCAxNCwgMjM4LCAxMjgsIDksIDE0LCAyMzgsIDEyNywgOSwgMTQsIDIzOCwgMTI2LCA5LCAKKyAgICAxNCwgMjM4LCAxMjUsIDksIDE0LCAyMzgsIDEyNCwgOSwgMTQsIDIzOCwgMTIzLCA5LCAxNCwgMjM4LCAxMjIsIDksIDE0LCAKKyAgICAyMzgsIDEyMSwgOSwgMTQsIDIzOCwgMTIwLCA5LCAxNCwgMjM4LCAxMTksIDksIDE0LCAyMzgsIDExOCwgOSwgMTQsIDIzOCwgCisgICAgMTE3LCA5LCAxNCwgMjM4LCAxMTYsIDksIDE0LCAyMzgsIDExNSwgOSwgMTQsIDIzOCwgMTE0LCA5LCAxNCwgMjM4LCAxMTMsIAorICAgIDksIDE0LCAyMzgsIDExMiwgOSwgMTQsIDIzOCwgMTExLCA5LCAxNCwgMjM4LCAxMTAsIDksIDE0LCAyMzgsIDEwOSwgOSwgCisgICAgMTQsIDIzOCwgMTA4LCA5LCAxNCwgMjM4LCAxMDcsIDksIDE0LCAyMzgsIDEwNiwgOSwgMTQsIDIzOCwgMTA1LCA5LCAxNCwgCisgICAgMjM4LCAxMDQsIDksIDE0LCAyMzgsIDEwMywgOSwgMTQsIDIzOCwgMTAyLCA5LCAxNCwgMjM4LCAxMDEsIDksIDE0LCAyMzgsIAorICAgIDEwMCwgOSwgMTQsIDIzOCwgOTksIDksIDE0LCAyMzgsIDk4LCA5LCAxNCwgMjM4LCA5NywgOSwgMTQsIDIzOCwgOTYsIDksIAorICAgIDE0LCAyMzgsIDk1LCA5LCAxNCwgMjM4LCA5NCwgOSwgMTQsIDIzOCwgOTMsIDksIDE0LCAyMzgsIDkyLCA5LCAxNCwgMjM4LCAKKyAgICA5MSwgOSwgMTQsIDIzOCwgOTAsIDksIDE0LCAyMzgsIDg5LCA5LCAxNCwgMjM4LCA4OCwgOSwgMTQsIDIzOCwgODcsIDksIAorICAgIDE0LCAyMzgsIDg2LCA5LCAxNCwgMjM4LCA4NSwgOSwgMTQsIDIzOCwgODQsIDksIDE0LCAyMzgsIDgzLCA5LCAxNCwgMjM4LCAKKyAgICA4MiwgOSwgMTQsIDIzOCwgODEsIDksIDE0LCAyMzgsIDgwLCA5LCAxNCwgMjM4LCA3OSwgOSwgMTQsIDIzOCwgNzgsIDksIAorICAgIDE0LCAyMzgsIDc3LCA5LCAxNCwgMjM4LCA3NiwgOSwgMTQsIDIzOCwgNzUsIDksIDE0LCAyMzgsIDc0LCA5LCAxNCwgMjM4LCAKKyAgICA3MywgMjMzLCA5MCwgMjE3LCA4NCwgMTI5LCAyMTksIDE4LCAxMjksIDI0NSwgMzEsIDc4LCAxMjksIDIyMywgMjU0LCA3OCwgCisgICAgMTI5LCA1NCwgNTAsIDEyOSwgMjQ3LCAxMzIsIDUwLCAxMjksIDIyNSwgMTgyLCA1MCwgMTI5LCAyNTQsIDEyNiwgMTI5LCAKKyAgICAyNTQsIDU3LCAxMjksIDQzLCAyMjYsIDMsIDEyOSwgNDQsIDIyNiwgMywgMTI5LCAyNTMsIDIxNiwgMTI5LCA5NiwgNTAsIAorICAgIDEyOSwgMjQ5LCAyMTksIDEyOSwgMjQwLCAxNjcsIDEyOSwgMjQzLCAyMjksIDIxOCwgMTI5LCAxMjksIDIxOSwgNDYsIDEyOSwgCisgICAgMjEsIDIxMCwgODYsIDEyOSwgMjEsIDExMCwgMTI5LCAyMSwgMTA1LCAxMjksIDIxLCAxNTgsIDEyOSwgMjEsIDE2MSwgMTI5LCAKKyAgICAyMSwgMTg5LCAxMjksIDIxLCAxOTQsIDEyOSwgMjEsIDE5OCwgMTI5LCAyMSwgMTk1LCAxMjksIDIxLCAyMDAsIDEyOSwgCisgICAgMjQ5LCAyMjYsIDEyOSwgMjIwLCAxNTAsIDEyOSwgMjMzLCAxNSwgNTAsIDEyOSwgMjQ1LCA5OCwgNTAsIDEyOSwgMjQyLCAKKyAgICAxMzAsIDUwLCAxMjksIDIyNCwgMTMsIDc4LCAxMjksIDI0OSwgMjE3LCAyNTMsIDIwNiwgMTI5LCA3LCA2LCAxLCA2MSwgCisgICAgMTI5LCA3LCA2LCAxLCAyNTMsIDE1OCwgMTI5LCA3LCA2LCAxLCAyNTEsIDY2LCAxMjksIDcsIDYsIDEsIDI0OSwgNjAsIAorICAgIDEyOSwgNywgNiwgMSwgNzUsIDEyOSwgNywgNiwgMSwgMjQ1LCA2LCAxMjksIDcsIDYsIDEsIDI0MywgMjAyLCAxMjksIDcsIAorICAgIDYsIDEsIDI0MiwgNjAsIDEyOSwgNywgNiwgMSwgNzMsIDEyOSwgNywgNiwgMSwgMjM1LCAxNDQsIDEyOSwgNywgNiwgMSwgCisgICAgMjM1LCAyMywgMTI5LCA3LCA2LCAxLCAxNTYsIDEyOSwgNywgNiwgMSwgMTkzLCAxMjksIDcsIDYsIDEsIDIzMCwgMjUsIAorICAgIDEyOSwgNywgNiwgMSwgNzYsIDEyOSwgNywgNiwgMSwgMjI2LCAxMDUsIDEyOSwgNywgNiwgMSwgMjI0LCA5NiwgMTI5LCA3LCAKKyAgICA2LCAxLCAxNTMsIDEyOSwgNywgNiwgMSwgMjIyLCA5MSwgMTI5LCA3LCA2LCAxLCAyMTcsIDE1MiwgMTI5LCA3LCA2LCAxLCAKKyAgICA3MCwgMTI5LCA3LCA2LCAxLCAyMTQsIDEwNSwgMTI5LCA3LCA2LCAxLCAyMTIsIDk4LCAxMjksIDcsIDYsIDEsIDIxMSwgCisgICAgMTc4LCAxMjksIDcsIDYsIDEsIDIxMSwgMTE3LCAxMjksIDcsIDYsIDEsIDIxMCwgMTU5LCAxMjksIDQzLCA0MiwgMTI3LCAKKyAgICAxMjksIDIyMywgNTAsIDIxOSwgNDYsIDEyOSwgNDQsIDQyLCAxMjcsIDEyOSwgMjUwLCAzMSwgMjU1LCAxNCwgMTI5LCAxMjEsIAorICAgIDIzMiwgMjEzLCAxMjksIDI0MiwgMTM3LCAyNTUsIDE0LCAxMjksIDcsIDQsIDEsIDYxLCAxMjksIDcsIDQsIDEsIDI1MywgCisgICAgMTU4LCAxMjksIDcsIDQsIDEsIDI1MSwgNjYsIDEyOSwgNywgNCwgMSwgMjQ5LCA2MCwgMTI5LCA3LCA0LCAxLCA3NSwgMTI5LCAKKyAgICA3LCA0LCAxLCAyNDUsIDYsIDEyOSwgNywgNCwgMSwgMjQzLCAyMDIsIDEyOSwgNywgNCwgMSwgMjQyLCA2MCwgMTI5LCA3LCAKKyAgICA0LCAxLCA3MywgMTI5LCA3LCA0LCAxLCAyMzUsIDE0NCwgMTI5LCA3LCA0LCAxLCAyMzUsIDIzLCAxMjksIDcsIDQsIDEsIAorICAgIDE1NiwgMTI5LCA3LCA0LCAxLCAxOTMsIDEyOSwgNywgNCwgMSwgMjMwLCAyNSwgMTI5LCA3LCA0LCAxLCA3NiwgMTI5LCA3LCAKKyAgICA0LCAxLCAyMjYsIDEwNSwgMTI5LCA3LCA0LCAxLCAyMjQsIDk2LCAxMjksIDcsIDQsIDEsIDE1MywgMTI5LCA3LCA0LCAxLCAKKyAgICAyMjIsIDkxLCAxMjksIDcsIDQsIDEsIDIxNywgMTUyLCAxMjksIDcsIDQsIDEsIDcwLCAxMjksIDcsIDQsIDEsIDIxNCwgCisgICAgMTA1LCAxMjksIDcsIDQsIDEsIDIxMiwgOTgsIDEyOSwgNywgNCwgMSwgMjExLCAxNzgsIDEyOSwgNywgNCwgMSwgMjExLCAKKyAgICAxMTcsIDEyOSwgNywgNCwgMSwgMjEwLCAxNTksIDEyOSwgNDMsIDI0OSwgOTksIDEyNywgMTI5LCA2NywgMjMyLCAyMTMsIAorICAgIDEyOSwgNDQsIDI0OSwgOTksIDEyNywgMTI5LCAxODIsIDI1MSwgNiwgMjE3LCA4NCwgNDUsIDIyMSwgNzgsIDQ1LCAyMjEsIAorICAgIDY3LCA0NSwgMjIxLCA1NiwgNDUsIDIyMSwgNDQsIDQ1LCAyMjEsIDMzLCA0NSwgMjIxLCAyMiwgNDUsIDIyMSwgMTEsIDQ1LCAKKyAgICAyMjEsIDAsIDQ1LCAyMjAsIDI0NSwgNDUsIDIyMCwgMjM3LCA0NSwgMjIwLCAyMzYsIDQ1LCAyMjAsIDIzNSwgNDUsIDIyMCwgCisgICAgMjM0LCA0NSwgMjIwLCAyMzIsIDQ1LCAyMjAsIDIzMSwgNDUsIDIyMCwgMjMwLCA0NSwgMjIwLCAyMjksIDQ1LCAyMjAsIAorICAgIDIyOCwgNDUsIDIyMCwgMjI3LCA0NSwgMjIwLCAyMjYsIDQ1LCAyMjAsIDIyNSwgNDUsIDIyMCwgMjI0LCA0NSwgMjIwLCAKKyAgICAyMjMsIDQ1LCAyMjAsIDIyMSwgNDUsIDIyMCwgMjIwLCA0NSwgMjIwLCAyMTksIDQ1LCAyMjAsIDIxOCwgNDUsIDIyMCwgCisgICAgMjE3LCA0NSwgMjIwLCAyMTYsIDQ1LCAyMjAsIDIxNSwgNDUsIDIyMCwgMjE0LCA0NSwgMjIwLCAyMTMsIDQ1LCAyMjAsIAorICAgIDIxMiwgNDUsIDIyMCwgMjEwLCA0NSwgMjIwLCAyMDksIDQ1LCAyMjAsIDIwOCwgNDUsIDIyMCwgMjA3LCA0NSwgMjIwLCAKKyAgICAyMDYsIDQ1LCAyMjAsIDIwNSwgNDUsIDIyMCwgMjA0LCA0NSwgMjIwLCAyMDMsIDQ1LCAyMjAsIDIwMiwgNDUsIDIyMCwgCisgICAgMjAxLCA0NSwgMjIwLCAxOTksIDQ1LCAyMjAsIDE5OCwgNDUsIDIyMCwgMTk3LCA0NSwgMjIwLCAxOTYsIDQ1LCAyMjAsIAorICAgIDE5NSwgNDUsIDIyMCwgMTk0LCA0NSwgMjIwLCAxOTMsIDQ1LCAyMjAsIDE5MiwgNDUsIDIyMCwgMTkxLCA0NSwgMjIwLCAKKyAgICAxOTAsIDQ1LCAyMjAsIDE4OCwgNDUsIDIyMCwgMTg3LCA0NSwgMjIwLCAxODYsIDQ1LCAyMjAsIDE4NSwgNDUsIDIyMCwgCisgICAgMTg0LCA0NSwgMjIwLCAxODMsIDQ1LCAyMjAsIDE4MiwgNDUsIDIyMCwgMTgxLCA0NSwgMjIwLCAxODAsIDQ1LCAyMjAsIAorICAgIDE3OSwgNDUsIDIyMCwgMTc3LCA0NSwgMjIwLCAxNzYsIDQ1LCAyMjAsIDE3NSwgNDUsIDIyMCwgMTc0LCA0NSwgMjIwLCAKKyAgICAxNzMsIDQ1LCAyMjAsIDE3MiwgNDUsIDIyMCwgMTcxLCA0NSwgMjIwLCAxNzAsIDQ1LCAyMjAsIDE2OSwgNDUsIDIyMCwgCisgICAgMTY4LCA0NSwgMjIwLCAxNjYsIDQ1LCAyMjAsIDE2NSwgNDUsIDIyMCwgMTY0LCA0NSwgMjIwLCAxNjMsIDQ1LCAyMjAsIAorICAgIDE2MiwgNDUsIDIyMCwgMTYxLCA0NSwgMjIwLCAxNjAsIDQ1LCAyMjAsIDE1OSwgNDUsIDIyMCwgMTU4LCA0NSwgMjIwLCAKKyAgICAxNTcsIDQ1LCAyMjEsIDE1NCwgNDUsIDIyMSwgMTUzLCA0NSwgMjIxLCAxNTIsIDQ1LCAyMjEsIDE1MSwgNDUsIDIyMSwgCisgICAgMTUwLCA0NSwgMjIxLCAxNDksIDQ1LCAyMjEsIDE0OCwgNDUsIDIyMSwgMTQ3LCA0NSwgMjIxLCAxNDYsIDQ1LCAyMjEsIAorICAgIDE0NSwgNDUsIDIyMSwgMTQzLCA0NSwgMjIxLCAxNDIsIDQ1LCAyMjEsIDE0MSwgNDUsIDIyMSwgMTQwLCA0NSwgMjIxLCAKKyAgICAxMzksIDQ1LCAyMjEsIDEzOCwgNDUsIDIyMSwgMTM3LCA0NSwgMjIxLCAxMzYsIDQ1LCAyMjEsIDEzNSwgNDUsIDIyMSwgCisgICAgMTM0LCA0NSwgMjIxLCAxMzIsIDQ1LCAyMjEsIDEzMSwgNDUsIDIyMSwgMTMwLCA0NSwgMjIxLCAxMjksIDQ1LCAyMjEsIAorICAgIDEyOCwgNDUsIDIyMSwgMTI3LCA0NSwgMjIxLCAxMjYsIDQ1LCAyMjEsIDEyNSwgNDUsIDIyMSwgMTI0LCA0NSwgMjIxLCAKKyAgICAxMjMsIDQ1LCAyMjEsIDEyMSwgNDUsIDIyMSwgMTIwLCA0NSwgMjIxLCAxMTksIDQ1LCAyMjEsIDExOCwgNDUsIDIyMSwgCisgICAgMTE3LCA0NSwgMjIxLCAxMTYsIDQ1LCAyMjEsIDExNSwgNDUsIDIyMSwgMTE0LCA0NSwgMjIxLCAxMTMsIDQ1LCAyMjEsIAorICAgIDExMiwgNDUsIDIyMSwgMTEwLCA0NSwgMjIxLCAxMDksIDQ1LCAyMjEsIDEwOCwgNDUsIDIyMSwgMTA3LCA0NSwgMjIxLCAKKyAgICAxMDYsIDQ1LCAyMjEsIDEwNSwgNDUsIDIyMSwgMTA0LCA0NSwgMjIxLCAxMDMsIDQ1LCAyMjEsIDEwMiwgNDUsIDIyMSwgCisgICAgMTAxLCA0NSwgMjIxLCA5OSwgNDUsIDIyMSwgOTgsIDQ1LCAyMjEsIDk3LCA0NSwgMjIxLCA5NiwgNDUsIDIyMSwgOTUsIDQ1LCAKKyAgICAyMjEsIDk0LCA0NSwgMjIxLCA5MywgNDUsIDIyMSwgOTIsIDQ1LCAyMjEsIDkxLCA0NSwgMjIxLCA5MCwgNDUsIDIyMSwgODgsIAorICAgIDQ1LCAyMjEsIDg3LCA0NSwgMjIxLCA4NiwgNDUsIDIyMSwgODUsIDQ1LCAyMjEsIDg0LCA0NSwgMjIxLCA4MywgNDUsIDIyMSwgCisgICAgODIsIDQ1LCAyMjEsIDgxLCA0NSwgMjIxLCA4MCwgNDUsIDIyMSwgNzksIDQ1LCAyMjEsIDc3LCA0NSwgMjIxLCA3NiwgNDUsIAorICAgIDIyMSwgNzUsIDQ1LCAyMjEsIDc0LCA0NSwgMjIxLCA3MywgNDUsIDIyMSwgNzIsIDQ1LCAyMjEsIDcxLCA0NSwgMjIxLCA3MCwgCisgICAgNDUsIDIyMSwgNjksIDQ1LCAyMjEsIDY4LCA0NSwgMjIxLCA2NiwgNDUsIDIyMSwgNjUsIDQ1LCAyMjEsIDY0LCA0NSwgMjIxLCAKKyAgICA2MywgNDUsIDIyMSwgNjIsIDQ1LCAyMjEsIDYxLCA0NSwgMjIxLCA2MCwgNDUsIDIyMSwgNTksIDQ1LCAyMjEsIDU4LCA0NSwgCisgICAgMjIxLCA1NywgNDUsIDIyMSwgNTUsIDQ1LCAyMjEsIDU0LCA0NSwgMjIxLCA1MywgNDUsIDIyMSwgNTIsIDQ1LCAyMjEsIDUxLCAKKyAgICA0NSwgMjIxLCA1MCwgNDUsIDIyMSwgNDksIDQ1LCAyMjEsIDQ4LCA0NSwgMjIxLCA0NywgNDUsIDIyMSwgNDYsIDQ1LCAyMjEsIAorICAgIDQzLCA0NSwgMjIxLCA0MiwgNDUsIDIyMSwgNDEsIDQ1LCAyMjEsIDQwLCA0NSwgMjIxLCAzOSwgNDUsIDIyMSwgMzgsIDQ1LCAKKyAgICAyMjEsIDM3LCA0NSwgMjIxLCAzNiwgNDUsIDIyMSwgMzUsIDQ1LCAyMjEsIDM0LCA0NSwgMjIxLCAzMiwgNDUsIDIyMSwgMzEsIAorICAgIDQ1LCAyMjEsIDMwLCA0NSwgMjIxLCAyOSwgNDUsIDIyMSwgMjgsIDQ1LCAyMjEsIDI3LCA0NSwgMjIxLCAyNiwgNDUsIDIyMSwgCisgICAgMjUsIDQ1LCAyMjEsIDI0LCA0NSwgMjIxLCAyMywgNDUsIDIyMSwgMjEsIDQ1LCAyMjEsIDIwLCA0NSwgMjIxLCAxOSwgNDUsIAorICAgIDIyMSwgMTgsIDQ1LCAyMjEsIDE3LCA0NSwgMjIxLCAxNiwgNDUsIDIyMSwgMTUsIDQ1LCAyMjEsIDE0LCA0NSwgMjIxLCAxMywgCisgICAgNDUsIDIyMSwgMTIsIDQ1LCAyMjEsIDEwLCA0NSwgMjIxLCA5LCA0NSwgMjIxLCA4LCA0NSwgMjIxLCA3LCA0NSwgMjIxLCA2LCAKKyAgICA0NSwgMjIxLCA1LCA0NSwgMjIxLCA0LCA0NSwgMjIxLCAzLCA0NSwgMjIxLCAyLCA0NSwgMjIxLCAxLCA0NSwgMjIwLCAyNTUsIAorICAgIDQ1LCAyMjAsIDI1NCwgNDUsIDIyMCwgMjUzLCA0NSwgMjIwLCAyNTIsIDQ1LCAyMjAsIDI1MSwgNDUsIDIyMCwgMjUwLCA0NSwgCisgICAgMjIwLCAyNDksIDQ1LCAyMjAsIDI0OCwgNDUsIDIyMCwgMjQ3LCA0NSwgMjIwLCAyNDYsIDQ1LCAyMjAsIDI0NCwgNDUsIAorICAgIDIyMCwgMjQzLCA0NSwgMjIwLCAyNDIsIDQ1LCAyMjAsIDI0MSwgNDUsIDIyMCwgMjQwLCA0NSwgMjIwLCAyMzksIDQ1LCAKKyAgICAyMjAsIDIzOCwgMjI3LCAyMDIsIDIyNywgMjA0LCAyMTgsIDE1MiwgNjQsIDI0MSwgMjMzLCAyMTksIDQ4LCAyMTgsIDE1MiwgCisgICAgNjQsIDIxNiwgMjEyLCAyMTgsIDg1LCAyNDUsIDE0MywgNjQsIDIxNiwgMjEyLCAyNDUsIDU2LCAyNDUsIDE0MywgNjQsIAorICAgIDIxNSwgMjQzLCAyNDUsIDEwOSwgMjQ1LCAxMzIsIDI0NSwgMTMzLCAyNTUsIDcsIDI1NSwgOCwgMjU0LCAxNjcsIDI1MiwgCisgICAgNDcsIDI1MiwgMTc5LCAyNTEsIDEzMSwgMTM1LCAyMTcsIDg5LCAyMDMsIDIxNywgODksIDI0MCwgMjI3LCAyMTcsIDkzLCAKKyAgICAyMzIsIDIxNCwgMjQ0LCAxNDUsIDE2NiwgMjMyLCAyMTMsIDI0NSwgMTQzLCA2NCwgMjMyLCAyMTMsIDIzMywgMCwgMjI4LCAKKyAgICAxMzUsIDI0NSwgMTEyLCAyMzIsIDIxNCwgMjE3LCA4OSwgNjcsIDIxNywgODksIDIxMiwgMTE4LCAyNDQsIDIwLCAyNDQsIAorICAgIDE0NSwgMjQ0LCAxMjUsIDI1MCwgMjMwLCAyMjMsIDUzLCAyNDksIDE0MywgMjIwLCAyOCwgMjI2LCAxMzAsIDIzMiwgMTUwLCAKKyAgICAxMTAsIDIxOSwgNTgsIDIyMCwgMjgsIDIzNSwgMjU1LCAyMzIsIDE1MCwgMjEwLCA4NiwgMjE5LCAxOTEsIDI0OCwgMTUxLCAKKyAgICAyMzIsIDIwNCwgMjQ1LCA3NywgMjQ3LCAxNTUsIDI0OCwgMzEsIDI0OSwgMTc4LCAxMTAsIDI0OCwgMTQxLCAyNDgsIDMxLCAKKyAgICAyNDksIDE3OCwgMTA1LCAyNDgsIDE0MCwgMjQ4LCAzMSwgMjQ5LCAxNzgsIDE1OCwgMjQ4LCAxMzksIDI0OCwgMzEsIDI0OSwgCisgICAgMTc4LCAxNjEsIDI0OCwgMTM4LCAxNTIsIDI1NSwgNywgMjI5LCAyMDksIDIxNywgMTc3LCAyMzYsIDYyLCAyMTcsIDE4MCwgCisgICAgMjQ1LCAxNDMsIDY0LCAyMTUsIDI0NCwgMjUxLCAyMTMsIDI0NSwgNjIsIDI1MSwgNSwgMjUxLCA3LCAyNDUsIDE0MywgNjQsIAorICAgIDIzMSwgODEsIDI0NSwgMTEwLCAyMTgsIDYxLCAyMTgsIDc4LCAyNDUsIDc3LCAyNDUsIDc4LCAyMzUsIDIzMiwgMjIwLCAKKyAgICAxMzgsIDE2MSwgMjQ0LCAxMDcsIDIyMCwgMTM3LCAyNDMsIDIzNywgMjM1LCAyMzIsIDIyMCwgMTM4LCAxNTgsIDI0MiwgCisgICAgMTIxLCAyMjAsIDEzNywgMjQyLCAxMTgsIDIzNSwgMjMyLCAyMjAsIDEzOCwgMTA1LCAyMjMsIDEyMSwgMjIwLCAxMzcsIAorICAgIDIyMiwgMTQ1LCAyMzUsIDIzMiwgMjIwLCAxMzgsIDExMCwgMjE0LCAxNzQsIDIyMCwgMTM3LCAyMTQsIDEzMywgMjE5LCAyMSwgCisgICAgMjQ4LCA2MywgMjQ4LCA2NSwgMjI2LCA3OCwgMjUwLCAxNDIsIDIyNiwgODAsIDEyNSwgMjI2LCAyNDAsIDIyNCwgMTkzLCAKKyAgICAyNDEsIDQ3LCAyNTEsIDE1MCwgMjI1LCAxNzMsIDI0MSwgMjAzLCAyNTEsIDE2MSwgMjI4LCA3NSwgMjUxLCAxNTAsIDI0MSwgCisgICAgMjAzLCAyMjksIDE3NSwgMjM1LCAyNDIsIDIzNSwgMjQ0LCAyMjksIDgyLCAyMzIsIDIxMywgMjI5LCA5OSwgMjE4LCAxNTIsIAorICAgIDY0LCAyMjEsIDE1OCwgMjU0LCAxOCwgMjE4LCAyMjMsIDI0NSwgMTQzLCA2NCwgMjIxLCAxNTgsIDI1NCwgMTgsIDI0NSwgCisgICAgODAsIDEzNSwgMjE3LCA5MCwgMjIwLCAxMjcsIDIwMywgMjE3LCA5MCwgMjIwLCAxMjcsIDI0MCwgMjI0LCAxMzUsIDIxNywgCisgICAgOTAsIDIsIDIzNSwgMzUsIDIwMywgMjE3LCA5MCwgMiwgMjM1LCAzNSwgMjQwLCAyMjUsIDIzMiwgMjE0LCAyMTcsIDkwLCAKKyAgICAyMjAsIDEyNywgNjcsIDIxNywgOTAsIDIyMCwgMTI3LCAyMTIsIDExNywgMjI1LCAyNTMsIDIzMiwgMjE0LCAyNDQsIDE0LCAKKyAgICAyMjUsIDI1MywgMjMyLCAyMTQsIDI0NiwgMTA2LCAyMjUsIDMyLCAyMjUsIDI1MywgMjMyLCAyMTQsIDI1MiwgMTc4LCAyMjUsIAorICAgIDI1MywgMjMyLCAyMTQsIDIxNCwgMTYzLCAyMjUsIDI4LCAyMjMsIDUwLCAyMzIsIDIxNCwgMjQ0LCAxNDUsIDIyMywgNTAsIAorICAgIDIzNSwgMjQyLCAyMjMsIDM1LCAyMTksIDE1NSwgMjIwLCAyOCwgMTA1LCAyMTksIDE1MiwgMjE4LCAyMjUsIDIxOSwgMTU1LCAKKyAgICAyMjAsIDI4LCAxNTgsIDIxOSwgMTUxLCAyMTgsIDIyNCwgMjQ4LCAzMSwgMjQ5LCAxNzgsIDIxOCwgMTA1LCAyNDgsIDEzNywgCisgICAgMjI0LCAxODMsIDIxNCwgMTMyLCAxMTAsIDIyNCwgMTgzLCAyMTQsIDEzMCwgMjI0LCAxNDksIDIyNCwgMTgzLCAyMTQsIAorICAgIDEzMiwgMTA1LCAyMjQsIDE4MywgMjE0LCAxMjksIDIyNCwgMTQ4LCAyMjAsIDEyOCwgMjE1LCAyNDIsIDIxOCwgMTUxLCAKKyAgICAyMTgsIDg5LCAyNTEsIDYsIDI1MCwgMTQyLCAyNTAsIDIwOSwgMjMxLCA0MywgMjEyLCA1OSwgMjMwLCA0MywgMjE4LCAxNTIsIAorICAgIDY0LCAyNDIsIDEwNywgMjU0LCAxOCwgMjE4LCAxNTIsIDY0LCAyMjQsIDE2NiwgMjU0LCAxOCwgMjE5LCAyMCwgMjQ1LCAKKyAgICAxNDMsIDY0LCAyNDIsIDEwNywgMjU0LCAxOCwgMjQ1LCAxNDMsIDY0LCAyMjQsIDE2NiwgMjU0LCAxOCwgMjQ1LCAxMDcsIAorICAgIDIxOCwgMTUyLCA2NCwgMjE4LCAxMDUsIDIxOSwgMzUsIDIxOSwgMTU1LCAyNDIsIDE0MSwgMTM1LCAyMzUsIDE5NSwgMjIwLCAKKyAgICAxMDcsIDIxOSwgMTU1LCAxMzUsIDIzNSwgMTk1LCAyMjEsIDE5NCwgMjQ5LCAxNzgsIDIyMCwgMTM1LCAyMzUsIDE5NSwgCisgICAgMjQ5LCAxMTMsIDIxOCwgMTA2LCAyMTYsIDIzNiwgMjE4LCAxNjgsIDIyNiwgMTY5LCAyMTcsIDE2NywgMjQ5LCAyMTgsIAorICAgIDIyNiwgMTQyLCAyMjQsIDE4NCwgMjMxLCA0MiwgMjI1LCAxOSwgMjU0LCA1MywgMjI0LCAxNzgsIDI0OSwgMjE4LCAyNTQsIAorICAgIDY5LCAyMjksIDE2MywgMjE5LCAyMDAsIDcsIDYsIDEsIDI0MiwgMjQ5LCA3LCA0LCAxLCAyNDIsIDI0OSwgMjUwLCAxNTksIAorICAgIDE2NSwgMSwgMjMyLCAxNzUsIDIwOSwgMjA5LCAxLCAyNDQsIDQ0LCAyNDQsIDM2LCAyMDksIDIwOSwgMSwgMjQ0LCA0NCwgCisgICAgMjQ0LCAxNTcsIDIwOSwgMjA5LCAxLCAyMjIsIDIxMSwgMjA5LCAyMDksIDEsIDIzMiwgMTU2LCA2MywgMTY0LCAyNTEsIAorICAgIDIyMywgMjIwLCAzLCAyNDIsIDIxNSwgMjMwLCAyNDgsIDIyMywgNDEsIDI0MywgMjE2LCAyNDMsIDIxNSwgMjQzLCAyMTQsIAorICAgIDIzMCwgNDUsIDIwOSwgMjUxLCAyMDksIDI1MiwgMjA5LCAyNTQsIDIzMiwgMTAyLCAyMjIsIDIxOSwgMjMyLCAxMDMsIDIyMiwgCisgICAgMjIwLCAyMjUsIDIyMywgMjMyLCAxMDEsIDIyMiwgMjE4LCAyMjgsIDEwNiwgMjMwLCAxNjUsIDIxMSwgMjI5LCAyMTIsIDE1LCAKKyAgICAyNDUsIDE2MiwgMjQzLCAyMjYsIDIzMCwgMjI5LCAyMjYsIDE5NywgMjE0LCAxMzQsIDg3LCAyMzAsIDIyOSwgMjQ4LCAxNTcsIAorICAgIDg3LCA4LCAzLCAyMzUsIDE1OCwgNzgsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA3MSwgMjMzLCAyMCwgMTI3LCAKKyAgICAyMTMsIDExOCwgMjEzLCA3LCAyMTIsIDE5NSwgMjEyLCAxODQsIDIxMiwgMTczLCAyMTIsIDE2MiwgMjEyLCAxNTEsIDIxMiwgCisgICAgMTQwLCAyMTIsIDEyOSwgMjEzLCAxMTcsIDIxMywgMTA2LCAyMTMsIDk1LCAyMTMsIDg0LCAyMTMsIDczLCAyMTMsIDYyLCAKKyAgICAyMTMsIDUxLCAyNTEsIDcxLCAyMjYsIDE1NSwgNzgsIDI1MSwgMTk2LCAyMDksIDI1MywgNDksIDI4LCAxNiwgMjQzLCAyMzYsIAorICAgIDIxOSwgMTAyLCAyNTAsIDczLCAyMTQsIDksIDIxMywgNDAsIDIxMywgMjksIDIxMywgMTgsIDIxMywgNiwgMjEyLCAyNTEsIAorICAgIDIxMiwgMjQwLCAyMTIsIDIyOSwgMjEyLCAyMTgsIDIxMiwgMjA3LCAyMTIsIDE5OSwgMjEyLCAxOTgsIDIxMiwgMTk3LCAKKyAgICAyMTIsIDE5NiwgMjEyLCAxOTQsIDIxMiwgMTkzLCAyMTIsIDE5MiwgMjEyLCAxOTEsIDIxMiwgMTkwLCAyMTIsIDE4OSwgCisgICAgMjEyLCAxODgsIDIxMiwgMTg3LCAyMTIsIDE4NiwgMjEyLCAxODUsIDIxMiwgMTgzLCAyMTIsIDE4MiwgMjEyLCAxODEsIAorICAgIDIxMiwgMTgwLCAyMTIsIDE3OSwgMjEyLCAxNzgsIDIxMiwgMTc3LCAyMTIsIDE3NiwgMjEyLCAxNzUsIDIxMiwgMTc0LCAKKyAgICAyMTIsIDE3MiwgMjEyLCAxNzEsIDIxMiwgMTcwLCAyMTIsIDE2OSwgMjEyLCAxNjgsIDIxMiwgMTY3LCAyMTIsIDE2NiwgCisgICAgMjEyLCAxNjUsIDIxMiwgMTY0LCAyMTIsIDE2MywgMjEyLCAxNjEsIDIxMiwgMTYwLCAyMTIsIDE1OSwgMjEyLCAxNTgsIAorICAgIDIxMiwgMTU3LCAyMTIsIDE1NiwgMjEyLCAxNTUsIDIxMiwgMTU0LCAyMTIsIDE1MywgMjEyLCAxNTIsIDIxMiwgMTUwLCAKKyAgICAyMTIsIDE0OSwgMjEyLCAxNDgsIDIxMiwgMTQ3LCAyMTIsIDE0NiwgMjEyLCAxNDUsIDIxMiwgMTQ0LCAyMTIsIDE0MywgCisgICAgMjEyLCAxNDIsIDIxMiwgMTQxLCAyMTIsIDEzOSwgMjEyLCAxMzgsIDIxMiwgMTM3LCAyMTIsIDEzNiwgMjEyLCAxMzUsIAorICAgIDIxMiwgMTM0LCAyMTIsIDEzMywgMjEyLCAxMzIsIDIxMiwgMTMxLCAyMTIsIDEzMCwgMjEyLCAxMjgsIDIxMiwgMTI3LCAKKyAgICAyMTIsIDEyNiwgMjEyLCAxMjUsIDIxMiwgMTI0LCAyMTIsIDEyMywgMjEyLCAxMjIsIDIxMiwgMTIxLCAyMTIsIDEyMCwgCisgICAgMjEyLCAxMTksIDIxMywgMTE2LCAyMTMsIDExNSwgMjEzLCAxMTQsIDIxMywgMTEzLCAyMTMsIDExMiwgMjEzLCAxMTEsIAorICAgIDIxMywgMTEwLCAyMTMsIDEwOSwgMjEzLCAxMDgsIDIxMywgMTA3LCAyMTMsIDEwNSwgMjEzLCAxMDQsIDIxMywgMTAzLCAKKyAgICAyMTMsIDEwMiwgMjEzLCAxMDEsIDIxMywgMTAwLCAyMTMsIDk5LCAyMTMsIDk4LCAyMTMsIDk3LCAyMTMsIDk2LCAyMTMsIAorICAgIDk0LCAyMTMsIDkzLCAyMTMsIDkyLCAyMTMsIDkxLCAyMTMsIDkwLCAyMTMsIDg5LCAyMTMsIDg4LCAyMTMsIDg3LCAyMTMsIAorICAgIDg2LCAyMTMsIDg1LCAyMTMsIDgzLCAyMTMsIDgyLCAyMTMsIDgxLCAyMTMsIDgwLCAyMTMsIDc5LCAyMTMsIDc4LCAyMTMsIAorICAgIDc3LCAyMTMsIDc2LCAyMTMsIDc1LCAyMTMsIDc0LCAyMTMsIDcyLCAyMTMsIDcxLCAyMTMsIDcwLCAyMTMsIDY5LCAyMTMsIAorICAgIDY4LCAyMTMsIDY3LCAyMTMsIDY2LCAyMTMsIDY1LCAyMTMsIDY0LCAyMTMsIDYzLCAyMTMsIDYxLCAyMTMsIDYwLCAyMTMsIAorICAgIDU5LCAyMTMsIDU4LCAyMTMsIDU3LCAyMTMsIDU2LCAyMTMsIDU1LCAyMTMsIDU0LCAyMTMsIDUzLCAyMTMsIDUyLCAyMTMsIAorICAgIDUwLCAyMTMsIDQ5LCAyMTMsIDQ4LCAyMTMsIDQ3LCAyMTMsIDQ2LCAyMTMsIDQ1LCAyMTMsIDQ0LCAyMTMsIDQzLCAyMTMsIAorICAgIDQyLCAyMTMsIDQxLCAyMTMsIDM5LCAyMTMsIDM4LCAyMTMsIDM3LCAyMTMsIDM2LCAyMTMsIDM1LCAyMTMsIDM0LCAyMTMsIAorICAgIDMzLCAyMTMsIDMyLCAyMTMsIDMxLCAyMTMsIDMwLCAyMTMsIDI4LCAyMTMsIDI3LCAyMTMsIDI2LCAyMTMsIDI1LCAyMTMsIAorICAgIDI0LCAyMTMsIDIzLCAyMTMsIDIyLCAyMTMsIDIxLCAyMTMsIDIwLCAyMTMsIDE5LCAyMTMsIDE3LCAyMTMsIDE2LCAyMTMsIAorICAgIDE1LCAyMTMsIDE0LCAyMTMsIDEzLCAyMTMsIDEyLCAyMTMsIDExLCAyMTMsIDEwLCAyMTMsIDksIDIxMywgOCwgMjEzLCA1LCAKKyAgICAyMTMsIDQsIDIxMywgMywgMjEzLCAyLCAyMTMsIDEsIDIxMywgMCwgMjEyLCAyNTUsIDIxMiwgMjU0LCAyMTIsIDI1MywgCisgICAgMjEyLCAyNTIsIDIxMiwgMjUwLCAyMTIsIDI0OSwgMjEyLCAyNDgsIDIxMiwgMjQ3LCAyMTIsIDI0NiwgMjEyLCAyNDUsIAorICAgIDIxMiwgMjQ0LCAyMTIsIDI0MywgMjEyLCAyNDIsIDIxMiwgMjQxLCAyMTIsIDIzOSwgMjEyLCAyMzgsIDIxMiwgMjM3LCAKKyAgICAyMTIsIDIzNiwgMjEyLCAyMzUsIDIxMiwgMjM0LCAyMTIsIDIzMywgMjEyLCAyMzIsIDIxMiwgMjMxLCAyMTIsIDIzMCwgCisgICAgMjEyLCAyMjgsIDIxMiwgMjI3LCAyMTIsIDIyNiwgMjEyLCAyMjUsIDIxMiwgMjI0LCAyMTIsIDIyMywgMjEyLCAyMjIsIAorICAgIDIxMiwgMjIxLCAyMTIsIDIyMCwgMjEyLCAyMTksIDIxMiwgMjE3LCAyMTIsIDIxNiwgMjEyLCAyMTUsIDIxMiwgMjE0LCAKKyAgICAyMTIsIDIxMywgMjEyLCAyMTIsIDIxMiwgMjExLCAyMTIsIDIxMCwgMjEyLCAyMDksIDIxMiwgMjA4LCAyMTIsIDIwNiwgCisgICAgMjEyLCAyMDUsIDIxMiwgMjA0LCAyMTIsIDIwMywgMjEyLCAyMDIsIDIxMiwgMjAxLCAyMTIsIDIwMCwgNywgNiwgMSwgMTE1LCAKKyAgICAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMTUsIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIAorICAgIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMTYwLCAyLCA2NywgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAKKyAgICAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIAorICAgIDIxNCwgMjUyLCA0MywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIAorICAgIDE0MiwgNywgNCwgMSwgMTYwLCAyLCA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgCisgICAgMjUwLCAzMSwgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyMzEsIDIzMiwgNywgNiwgMSwgCisgICAgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDI1MCwgMjM0LCA3LCAKKyAgICA2LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDIzMSwgCisgICAgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCA1OSwgNzcsIDIyLCAxNDIsIDcsIDQsIDEsIDIyOSwgCisgICAgODAsIDIsIDIxNiwgODksIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgCisgICAgNjcsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIDIyLCAyNDIsIDEzNiwgCisgICAgNywgNCwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAKKyAgICAyMiwgMTQyLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCA2NywgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCA2NywgCisgICAgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDEwNCwgMiwgCisgICAgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTE1LCAyLCAyMjYsIDIyNSwgMjIsIDE0MiwgNywgNCwgMSwgMTE1LCAKKyAgICAyLCAyMjYsIDIyNSwgMjIsIDE0MiwgNywgNiwgMSwgMTE1LCAyLCAyMjYsIDIyNSwgMjIsIDE4MiwgNywgNCwgMSwgMTE1LCAKKyAgICAyLCAyMjYsIDIyNSwgMjIsIDE4MiwgNywgNiwgMSwgMTYwLCAyLCAyMjYsIDIyNSwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAKKyAgICAyLCAyMjYsIDIyNSwgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyMjYsIDIyNSwgMjIsIDE4MiwgNywgNCwgMSwgMTYwLCAKKyAgICAyLCAyMjYsIDIyNSwgMjIsIDE4MiwgNywgNiwgMSwgMTYwLCAyLCA1OSwgNzcsIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgCisgICAgNTksIDc3LCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA3NywgMjIsIDE4MiwgNywgNCwgMSwgMTYwLCAyLCA1OSwgCisgICAgNzcsIDIyLCAxODIsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCA1OSwgNzcsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQwLCAKKyAgICAxNTQsIDIsIDU5LCA3NywgMjIsIDE4MiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAKKyAgICAxLCAyNDAsIDE1NCwgMiwgMjI2LCAyMjUsIDIyLCA1OSwgNzcsIDIyLCAxNDIsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyMjYsIAorICAgIDIyNSwgMjIsIDE4MiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDIyNiwgMjI1LCAyMiwgNTksIDc3LCAyMiwgMTgyLCA3LCA2LCAKKyAgICAxLCAyMzUsIDE0NSwgMiwgMTgyLCA3LCA0LCAxLCAyMzUsIDE0NSwgMiwgNTksIDc3LCAyMiwgMTgyLCA3LCA2LCAxLCAyMzMsIAorICAgIDE0OSwgMiwgMTgyLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMTgyLCA3LCA2LCAxLCAyMzIsIDUwLCAyLCAxODIsIDcsIDQsIAorICAgIDEsIDIzMiwgNTAsIDIsIDE4MiwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDE4MiwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDE4MiwgCisgICAgNywgNiwgMSwgMTA0LCAyLCAyMjYsIDIyNSwgMjIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAyMjYsIDIyNSwgMjIsIDE0MiwgCisgICAgNywgNiwgMSwgMTA0LCAyLCAyMjYsIDIyNSwgMjIsIDE4MiwgNywgNCwgMSwgMTA0LCAyLCAyMjYsIDIyNSwgMjIsIDE4MiwgCisgICAgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIDE0MiwgCisgICAgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIDE4MiwgNywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIDE4MiwgCisgICAgNywgNCwgMSwgMjU0LCAyNDQsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMDQsIDE0NCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIAorICAgIDIwNCwgMTQ0LCAyLCAxNDIsIDcsIDQsIDEsIDIxNSwgOTQsIDIxNCwgMTA2LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjE1LCAKKyAgICA5NCwgMjE0LCAxMDYsIDIsIDE0MiwgNywgNCwgMSwgMjIxLCAxOTYsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMjEsIDE5NiwgCisgICAgMiwgMTQyLCA3LCA0LCAxLCAyNDEsIDUxLCAyMjEsIDE5NiwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDI0MSwgNTEsIDIyMSwgCisgICAgMTk2LCAyLCAxNDIsIDE0NiwgMSwgMjM0LCAxMDksIDM2LCAxMTYsIDIzNSwgMjMsIDM2LCAxMTYsIDIyOSwgNzksIDM2LCAKKyAgICAxMTYsIDI1MSwgNjYsIDM2LCAxMTYsIDIyNywgMTY3LCAzNiwgMTE2LCAyMTUsIDE1OSwgMzYsIDExNiwgMjI4LCAxMTEsIAorICAgIDM2LCAxMTYsIDIxNywgMTUyLCAzNiwgMTE2LCAyMzAsIDI1LCAzNiwgMTE2LCAyMjYsIDEwNSwgMzYsIDExNiwgMTkzLCAzNiwgCisgICAgMTE2LCAyMTEsIDExNywgMzYsIDExNiwgMTUzLCAzNiwgMTE2LCAxNTYsIDM2LCAxMTYsIDIxNCwgMTA1LCAzNiwgMTE2LCAKKyAgICAyMzIsIDE3NiwgMzYsIDExNiwgMjMyLCAxODUsIDM2LCAxMTYsIDIyMiwgMTgwLCAzNiwgMTE2LCAyMjgsIDkzLCAzNiwgCisgICAgMTE2LCAyMzUsIDE0NCwgMzYsIDExNiwgMjIwLCAxMDQsIDM2LCAxMTYsIDIxOCwgMjI2LCAzNiwgMTE2LCAyMjIsIDkxLCAKKyAgICAzNiwgMTE2LCAyNDIsIDYwLCAzNiwgMTE2LCAyMzMsIDIzMiwgMzYsIDMsIDIzNSwgMTAsIDM2LCAzLCAyMzQsIDkyLCAzNiwgCisgICAgMywgMjM0LCA4MywgMzYsIDMsIDIzMywgMjE3LCAzNiwgMywgMjMzLCAxODgsIDM2LCAzLCAyMzQsIDE4MiwgMzYsIDMsIAorICAgIDIzNCwgMTgxLCAzNiwgMywgMjM0LCAyNDYsIDM2LCAzLCAyMzQsIDI4LCAzNiwgMywgMjM0LCAxMCwgMzYsIDMsIDIzNCwgCisgICAgMTk1LCAzNiwgMywgMjI5LCA3NiwgMzYsIDMsIDIyOSwgMjcsIDM2LCAzLCAyMjksIDIzLCAzNiwgMywgMjI4LCAyNDgsIDM2LCAKKyAgICAzLCAyMjgsIDI0MSwgMzYsIDMsIDIyOSwgNjQsIDM2LCAzLCAyMjksIDYyLCAzNiwgMywgMjI5LCA3MywgMzYsIDMsIDIyOSwgCisgICAgNCwgMzYsIDMsIDIyOCwgMjU1LCAzNiwgMywgMjI5LCA2NiwgMzYsIDMsIDI1MSwgMzIsIDM2LCAzLCAyNTAsIDUxLCAzNiwgCisgICAgMywgMjUwLCA0MSwgMzYsIDMsIDI0OSwgMTEyLCAzNiwgMywgMjQ5LCA4MywgMzYsIDMsIDI1MCwgMTkwLCAzNiwgMywgMjUwLCAKKyAgICAxODIsIDM2LCAzLCAyNTEsIDIyLCAzNiwgMywgMjQ5LCAyMzgsIDM2LCAzLCAyNDksIDE3NCwgMzYsIDMsIDI1MCwgMjIyLCAKKyAgICAzNiwgMywgMjI3LCAxNjQsIDM2LCAzLCAyMjcsIDE0OCwgMzYsIDMsIDIyNywgMTQzLCAzNiwgMywgMjI3LCAxMjgsIDM2LCAKKyAgICAzLCAyMjcsIDEyMSwgMzYsIDMsIDIyNywgMTU2LCAzNiwgMywgMjI3LCAxNTUsIDM2LCAzLCAyMjcsIDE2MSwgMzYsIDMsIAorICAgIDIyNywgMTM0LCAzNiwgMywgMjI3LCAxMzIsIDM2LCAzLCAyMjcsIDE1OSwgMzYsIDMsIDIxNSwgMTU1LCAzNiwgMywgMjE1LCAKKyAgICAxMzUsIDM2LCAzLCAyMTUsIDEzNCwgMzYsIDMsIDIxNSwgMTIzLCAzNiwgMywgMjE1LCAxMjAsIDM2LCAzLCAyMTUsIDE1MSwgCisgICAgMzYsIDMsIDIxNSwgMTUwLCAzNiwgMywgMjE1LCAxNTQsIDM2LCAzLCAyMTUsIDEzMywgMzYsIDMsIDIxNSwgMTMyLCAzNiwgCisgICAgMywgMjE1LCAxNTMsIDM2LCAzLCAyMjgsIDEwOSwgMzYsIDMsIDIyOCwgOTUsIDM2LCAzLCAyMjgsIDk0LCAzNiwgMywgMjI4LCAKKyAgICA3OCwgMzYsIDMsIDIyOCwgNzcsIDM2LCAzLCAyMjgsIDEwNSwgMzYsIDMsIDIyOCwgMTA0LCAzNiwgMywgMjI4LCAxMDgsIAorICAgIDM2LCAzLCAyMjgsIDgwLCAzNiwgMywgMjI4LCA3OSwgMzYsIDMsIDIyOCwgMTA3LCAzNiwgMywgMjE3LCAxMDEsIDM2LCAzLCAKKyAgICAyMTYsIDExNywgMzYsIDMsIDIxNiwgMTAzLCAzNiwgMywgMjE1LCAxMTgsIDM2LCAzLCAyMTUsIDg1LCAzNiwgMywgMjE3LCAKKyAgICAyMiwgMzYsIDMsIDIxNywgMTEsIDM2LCAzLCAyMTcsIDc5LCAzNiwgMywgMTExLCAzNiwgMywgMjE2LCAxNywgMzYsIDMsIAorICAgIDIxNywgNDEsIDM2LCAzLCAyMjksIDIyNSwgMzYsIDMsIDIyOCwgMjMzLCAzNiwgMywgMjI4LCAyMDgsIDM2LCAzLCAyMjcsIAorICAgIDIzNywgMzYsIDMsIDIyNywgMTc5LCAzNiwgMywgMjI5LCAxMDcsIDM2LCAzLCAyMjksIDEwMywgMzYsIDMsIDIyOSwgMjEyLCAKKyAgICAzNiwgMywgMjI4LCA3NCwgMzYsIDMsIDIyOCwgNjQsIDM2LCAzLCAyMjksIDE4NywgMzYsIDMsIDIyNiwgODksIDM2LCAzLCAKKyAgICAyMjUsIDEwOCwgMzYsIDMsIDIyNSwgNzEsIDM2LCAzLCAyMjQsIDE1MCwgMzYsIDMsIDIyNCwgMTE5LCAzNiwgMywgMjI1LCAKKyAgICAyMjEsIDM2LCAzLCAyMjUsIDIxMSwgMzYsIDMsIDIyNiwgNzEsIDM2LCAzLCAyMjUsIDE2LCAzNiwgMywgMjI0LCAyNDksIAorICAgIDM2LCAzLCAyMjUsIDIzNCwgMzYsIDMsIDIzMSwgMjM3LCAzNiwgMywgMjMwLCAyMzAsIDM2LCAzLCAyMzAsIDIwMSwgMzYsIAorICAgIDMsIDIzMCwgMTAyLCAzNiwgMywgMjMwLCA1NCwgMzYsIDMsIDIzMSwgOTEsIDM2LCAzLCAyMzEsIDgwLCAzNiwgMywgMjMxLCAKKyAgICAyMDMsIDM2LCAzLCAyMzAsIDE2MSwgMzYsIDMsIDIzMCwgMTMyLCAzNiwgMywgMjMxLCAxMzUsIDM2LCAzLCAyMTEsIDEwMywgCisgICAgMzYsIDMsIDIxMSwgOCwgMzYsIDMsIDIxMCwgMjU1LCAzNiwgMywgMjEwLCAyMTIsIDM2LCAzLCAyMTAsIDE4MSwgMzYsIDMsIAorICAgIDIxMSwgNDcsIDM2LCAzLCAyMTEsIDQ0LCAzNiwgMywgMjExLCA4MiwgMzYsIDMsIDIxMCwgMjQ0LCAzNiwgMywgMjEwLCAKKyAgICAyMjksIDM2LCAzLCAyMTEsIDU1LCAzNiwgMywgMjIzLCAxODQsIDM2LCAzLCAyMjMsIDM1LCAzNiwgMywgMjIyLCAyMzksIAorICAgIDM2LCAzLCAyMjIsIDE0MCwgMzYsIDMsIDIyMiwgMTEyLCAzNiwgMywgMjIzLCAxMjgsIDM2LCAzLCAyMjMsIDEwOCwgMzYsIAorICAgIDMsIDIyMywgMTY2LCAzNiwgMywgMjIyLCAyMTEsIDM2LCAzLCAyMjIsIDE5NywgMzYsIDMsIDIyMywgMTM2LCAzNiwgMywgCisgICAgMjMzLCAxMzQsIDM2LCAzLCAyMzIsIDI0MSwgMzYsIDMsIDIzMiwgMjI3LCAzNiwgMywgMjMyLCA5OCwgMzYsIDMsIDIzMiwgCisgICAgNzMsIDM2LCAzLCAyMzMsIDU4LCAzNiwgMywgMjMzLCA1MCwgMzYsIDMsIDIzMywgMTA5LCAzNiwgMywgMjMyLCAxNTYsIDM2LCAKKyAgICAzLCAyMzIsIDEyNywgMzYsIDMsIDIzMywgNzQsIDM2LCAzLCAyMTQsIDI2LCAzNiwgMywgMjEzLCAxNzYsIDM2LCAzLCAyMTMsIAorICAgIDE2MiwgMzYsIDMsIDIxMiwgMTE2LCAzNiwgMywgMjEyLCAxMDksIDM2LCAzLCAyMTMsIDI1NSwgMzYsIDMsIDIxMywgMjUwLCAKKyAgICAzNiwgMywgMjE0LCAyMywgMzYsIDMsIDIxMywgMTM4LCAzNiwgMywgMjEzLCAxMjcsIDM2LCAzLCAyMTQsIDUsIDM2LCAzLCAKKyAgICAyMzIsIDE3NCwgMzYsIDMsIDIzMiwgMTY5LCAzNiwgMywgMjMyLCAxNjgsIDM2LCAzLCAyMzIsIDE2NSwgMzYsIDMsIDIzMiwgCisgICAgMTY0LCAzNiwgMywgMjMyLCAxNzEsIDM2LCAzLCAyMzIsIDE3MCwgMzYsIDMsIDIzMiwgMTczLCAzNiwgMywgMjMyLCAxNjcsIAorICAgIDM2LCAzLCAyMzIsIDE2NiwgMzYsIDMsIDIzMiwgMTcyLCAzNiwgMywgMjMyLCAxODMsIDM2LCAzLCAyMzIsIDE3OCwgMzYsIAorICAgIDMsIDIzMiwgMTc3LCAzNiwgMywgMjMyLCAxNjEsIDM2LCAzLCAyMzIsIDE2MCwgMzYsIDMsIDIzMiwgMTgwLCAzNiwgMywgCisgICAgMjMyLCAxNzksIDM2LCAzLCAyMzIsIDE4MiwgMzYsIDMsIDIzMiwgMTYzLCAzNiwgMywgMjMyLCAxNjIsIDM2LCAzLCAyMzIsIAorICAgIDE4MSwgMzYsIDMsIDIyMiwgMTc4LCAzNiwgMywgMjIyLCAxNjcsIDM2LCAzLCAyMjIsIDE2NiwgMzYsIDMsIDIyMiwgMTYwLCAKKyAgICAzNiwgMywgMjIyLCAxNTMsIDM2LCAzLCAyMjIsIDE3NCwgMzYsIDMsIDIyMiwgMTczLCAzNiwgMywgMjIyLCAxNzcsIDM2LCAKKyAgICAzLCAyMjIsIDE2NSwgMzYsIDMsIDIyMiwgMTY0LCAzNiwgMywgMjIyLCAxNzYsIDM2LCAzLCAyMjgsIDkxLCAzNiwgMywgCisgICAgMjI4LCA4NiwgMzYsIDMsIDIyOCwgODUsIDM2LCAzLCAyMjgsIDgyLCAzNiwgMywgMjI4LCA4MSwgMzYsIDMsIDIyOCwgODgsIAorICAgIDM2LCAzLCAyMjgsIDg3LCAzNiwgMywgMjI4LCA5MCwgMzYsIDMsIDIyOCwgODQsIDM2LCAzLCAyMjgsIDgzLCAzNiwgMywgCisgICAgMjI4LCA4OSwgMzYsIDMsIDIzNSwgMTQwLCAzNiwgMywgMjM1LCAxMDgsIDM2LCAzLCAyMzUsIDEwMSwgMzYsIDMsIDIzNSwgCisgICAgNTEsIDM2LCAzLCAyMzUsIDMzLCAzNiwgMywgMjM1LCAxMjYsIDM2LCAzLCAyMzUsIDEyNCwgMzYsIDMsIDIzNSwgMTM1LCAKKyAgICAzNiwgMywgMjM1LCA2OCwgMzYsIDMsIDIzNSwgNTksIDM2LCAzLCAyMzUsIDEyOSwgMzYsIDMsIDIyMCwgOTgsIDM2LCAzLCAKKyAgICAyMjAsIDMyLCAzNiwgMywgMjIwLCAyNywgMzYsIDMsIDIxOSwgMjI1LCAzNiwgMywgMjE5LCAyMTAsIDM2LCAzLCAyMjAsIAorICAgIDYzLCAzNiwgMywgMjIwLCA2MSwgMzYsIDMsIDIyMCwgOTAsIDM2LCAzLCAyMjAsIDcsIDM2LCAzLCAyMjAsIDEsIDM2LCAzLCAKKyAgICAyMjAsIDcxLCAzNiwgMywgMjE4LCAyMjIsIDM2LCAzLCAyMTgsIDE5MiwgMzYsIDMsIDIxOCwgMTg4LCAzNiwgMywgMjE4LCAKKyAgICAxNzksIDM2LCAzLCAyMTgsIDE3NiwgMzYsIDMsIDIxOCwgMTk3LCAzNiwgMywgMjE4LCAxOTYsIDM2LCAzLCAyMTgsIDIyMSwgCisgICAgMzYsIDMsIDIxOCwgMTg0LCAzNiwgMywgMjE4LCAxODMsIDM2LCAzLCAyMTgsIDE5OSwgMzYsIDMsIDIyMiwgMzEsIDM2LCAzLCAKKyAgICAyMTksIDE5MSwgMzYsIDMsIDIxOSwgMTc1LCAzNiwgMywgMjE4LCA4MywgMzYsIDMsIDIxOCwgNCwgMzYsIDMsIDIyMSwgCisgICAgMTgxLCAzNiwgMywgMjIxLCAxNzAsIDM2LCAzLCAyMjIsIDE3LCAzNiwgMywgMjE5LCA1OCwgMzYsIDMsIDIxOSwgNDAsIDM2LCAKKyAgICAzLCAyMjEsIDIxOSwgMzYsIDMsIDI0MiwgNDYsIDM2LCAzLCAyNDEsIDE4MCwgMzYsIDMsIDI0MSwgMTYxLCAzNiwgMywgCisgICAgMjQwLCAyMjIsIDM2LCAzLCAyNDAsIDIwMiwgMzYsIDMsIDI0MSwgMjM4LCAzNiwgMywgMjQxLCAyMjAsIDM2LCAzLCAyNDIsIAorICAgIDM2LCAzNiwgMywgMjQxLCA2OCwgMzYsIDMsIDI0MSwgNTMsIDM2LCAzLCAyNDEsIDI0NiwgMzYsIDMsIDIzMywgMjMxLCAzNiwgCisgICAgMywgMjMzLCAyMzAsIDM2LCAzLCAyMzMsIDIyNSwgMzYsIDMsIDIzMywgMjI0LCAzNiwgMywgMjMzLCAyMjEsIDM2LCAzLCAKKyAgICAyMzMsIDIyMCwgMzYsIDMsIDIzMywgMjI3LCAzNiwgMywgMjMzLCAyMjYsIDM2LCAzLCAyMzMsIDIyOSwgMzYsIDMsIDIzMywgCisgICAgMjIzLCAzNiwgMywgMjMzLCAyMjIsIDM2LCAzLCAyMzMsIDIyOCwgMzYsIDMsIDIxOSwgMjMxLCAxNzUsIDExNiwgNSwgMjExLCAKKyAgICA2OCwgMTc1LCAxMTYsIDUsIDIyMywgMTU1LCAxNzUsIDExNiwgNSwgMjIzLCA3OCwgOTgsIDEsIDIxNSwgMjgsIDY5LCAxMTYsIAorICAgIDUsIDI0OSwgMjMzLCAxNzYsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMzQsIDEzMiwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIAorICAgIDIzNCwgMjgsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMzQsIDEwNSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyOSwgNCwgCisgICAgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI1MSwgMzMsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNTAsIDE1NywgNjksIDExNiwgCisgICAgNSwgMjQ5LCAyMzMsIDI0OSwgMjM4LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjUwLCA4NiwgNjksIDExNiwgNSwgMjQ5LCAKKyAgICAyMzMsIDIyNywgMTM0LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjQ4LCAyMjEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTUsIAorICAgIDE0NCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI0NywgMTQ1LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjE1LCAxMzksIDY5LCAKKyAgICAxMTYsIDUsIDI0OSwgMjMzLCAxOTcsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTcsIDEwNSwgNjksIDExNiwgNSwgMjQ5LCAKKyAgICAyMzMsIDIxNiwgMjA4LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMTExLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjE2LCAxNTYsIAorICAgIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMjgsIDc0LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjUyLCAxOTEsIDY5LCAxMTYsIAorICAgIDUsIDI0OSwgMjMzLCAyMjUsIDE0NywgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyNSwgMTYsIDY5LCAxMTYsIDUsIDI0OSwgCisgICAgMjMzLCAyMjUsIDEyMSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzMCwgMTYxLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjEwLCAKKyAgICAyNDQsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMjIsIDIxMSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzMiwgMTU2LCA2OSwgCisgICAgMTE2LCA1LCAyNDksIDIzMywgMjEzLCAxMzgsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMjAsIDEwMiwgNjksIDExNiwgNSwgCisgICAgMjQ5LCAyMzMsIDIxOCwgMjIzLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjA2LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMTYyLCAKKyAgICA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjMzLCAxMzUsIDY5LCAyNSwgNSwgMjQ5LCAyMzMsIDIyNCwgODgsIDY5LCAyMzUsIAorICAgIDI0MywgMjUsIDUsIDI0OSwgMjMzLCAyMjQsIDMwLCA2OSwgMjM1LCAyNDMsIDI1LCA1LCAyNDksIDIzMywgMjIyLCAxMDAsIAorICAgIDY5LCAyMzUsIDI0MywgMjUsIDUsIDI0OSwgMjMzLCAyMjIsIDkzLCA2OSwgMjM1LCAyNDMsIDI1LCA1LCAyNDksIDIzMywgCisgICAgMjI0LCA2OSwgNjksIDI1LCA1LCAyMjYsIDIwNCwgNjksIDI1LCA1LCAyNTUsIDM0LCAxNDEsIDEsIDI1MSwgMjU1LCAyMjksIAorICAgIDc3LCAxNDEsIDEsIDI1MSwgMjU1LCAyMjksIDI3LCAxNDEsIDEsIDI1MSwgMjU1LCAyMjgsIDI0OCwgMTQxLCAxLCAyNTEsIAorICAgIDI1NSwgMjI5LCA2NCwgMTQxLCAxLCAyNTEsIDI1NSwgMjI5LCA0LCA1NiwgMSwgMjUxLCAyNTUsIDIyOSwgNzcsIDU2LCAxLCAKKyAgICAyNTEsIDI1NSwgMjI5LCAyNywgNTYsIDEsIDI1MSwgMjU1LCAyMjgsIDI0OCwgNTYsIDEsIDI1MSwgMjU1LCAyMjksIDY0LCAKKyAgICA1NiwgMSwgMjUxLCAyNTUsIDIyOSwgNCwgNTYsIDEsIDI1NCwgMTk0LCAyNTAsIDE5MCwgNTYsIDEsIDI1NCwgMTk0LCAyMTUsIAorICAgIDExOCwgNTYsIDEsIDI1NCwgMTk0LCAxMTEsIDU2LCAxLCAyNTQsIDE5NCwgMjI2LCAxMDUsIDU4LCAxLCAyNDUsIDIwLCAKKyAgICAyNDUsIDE5LCAyNDksIDE4MiwgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIDE5LCAyNDUsIDIwLCAyNDksIDE4MiwgMTM4LCAxMzAsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va19vZmZzZXQxW10gPSB7CkBAIC0xMzEyNyw0ODcgKzEzODI0LDQ4OCBAQAogICAgIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIAogICAgIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIAogICAgIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIAotICAgIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDE3LCA4NywgODgsIDg5LCA5MCwgOTEsIAotICAgIDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTAzLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAKLSAgICAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsIDEyMiwgCi0gICAgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDEyOCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTI5LCAxMzAsIAotICAgIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAKLSAgICAxNDUsIDE0NiwgMTcsIDE0NywgMTQ4LCAxNDksIDE1MCwgMTUxLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNTIsIDE3LCAKLSAgICAxNTMsIDE3LCAxNTQsIDE3LCAxNTUsIDE3LCAxNTYsIDE3LCAxNywgMTcsIDE1NywgMTcsIDE3LCAxNywgMTU4LCAxNTksIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE2MCwgMTYxLCAxNjIsIDE2MywgMTY0LCAKLSAgICAxNjUsIDE2NiwgMTcsIDE2NywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAKLSAgICAxNzQsIDE3NSwgMTc2LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTc3LCAKLSAgICAxNzgsIDE3OSwgMTgwLCAxODEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxODIsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxNywgMTg4LCAKLSAgICAxNywgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAxNywgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIAotICAgIDIwNywgMjA4LCAyMDksIDIxMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMjExLCAyMTIsIDIxMywgCi0gICAgMjE0LCAyMTUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDIxNiwgMTcsIDIxNywgMjE4LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIAorICAgIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDEwNCwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSwgCisgICAgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgMTIyLCAxMjMsIAorICAgIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCAxMjksIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDEzMCwgMTMxLCAKKyAgICAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwgCisgICAgMTQ2LCAxNDcsIDg3LCAxNDgsIDE0OSwgMTUwLCAxNTEsIDE1MiwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTUzLCA4NywgCisgICAgMTU0LCAxNTUsIDE1NiwgODcsIDE1NywgODcsIDE1OCwgODcsIDg3LCA4NywgMTU5LCA4NywgODcsIDg3LCAxNjAsIDE2MSwgCisgICAgMTYyLCAxNjMsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE2NCwgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTY1LCAxNjYsIDE2NywgMTY4LCAKKyAgICAxNjksIDE3MCwgMTcxLCA4NywgMTcyLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIAorICAgIDE3OSwgMTgwLCAxODEsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxODIsIAorICAgIDE4MywgMTg0LCAxODUsIDE4NiwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTg3LCAxODgsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgMTg5LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgODcsIDE5NSwgCisgICAgODcsIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDIwNCwgMjA1LCA4NywgODcsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMjEwLCA4NywgMjExLCAyMTIsIDIxMywgMjE0LCAKKyAgICAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMjIwLCAyMjEsIAorICAgIDIyMiwgMjIzLCAyMjQsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDIyNSwgODcsIDIyNiwgMjI3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgMjI4LCAyMjksIDIzMCwgMjMxLCAyMzIsIDIzMywgMjM0LCAyMzUsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IHBocmFzZWJvb2tfb2Zmc2V0MltdID0gewpAQCAtMTM2MTUsMjgwMyArMTQzMTMsMzAxNSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDMsIDYsIDksIDExLCAxNCwgMTcsIDE5LCAyMSwgMjQsIDI3LCAyOSwgMzEsIAogICAgIDMzLCAzNSwgMzksIDQxLCA0NCwgNDYsIDQ4LCA1MCwgNTIsIDU0LCA1NiwgNTgsIDYwLCA2MiwgNjQsIDY2LCA2OSwgNzIsIAogICAgIDc1LCA3OCwgODIsIDg2LCA5MSwgOTYsIDEwMSwgMTA1LCAxMTAsIDExNSwgMTIwLCAxMjQsIDEyOSwgMTM0LCAxMzgsIDE0MiwgCi0gICAgMTQ2LCAxNTAsIDE1NSwgMTYwLCAxNjQsIDE2OCwgMTczLCAxNzcsIDE4MiwgMTg3LCAxOTIsIDE5NywgMjAyLCAyMDUsIAotICAgIDIwOSwgMjEyLCAyMTYsIDIxOSwgMjIzLCAyMjcsIDIzMiwgMjM3LCAyNDIsIDI0NiwgMjUxLCAyNTYsIDI2MSwgMjY1LCAKLSAgICAyNzAsIDI3NSwgMjc5LCAyODMsIDI4NywgMjkxLCAyOTYsIDMwMSwgMzA1LCAzMDksIDMxNCwgMzE4LCAzMjMsIDMyOCwgCi0gICAgMzMzLCAzMzgsIDM0MywgMzQ3LCAzNTAsIDM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU2LCAzNjAsIDM2NSwgCi0gICAgMzY4LCAzNzEsIDM3NCwgMzc3LCAzODAsIDM4MywgMzg1LCAzODgsIDM5NCwgNDAyLCA0MDUsIDQwOSwgNDEyLCA0MTQsIAotICAgIDQxNywgNDIwLCA0MjMsIDQyNiwgNDMwLCA0MzMsIDQzNiwgNDQwLCA0NDIsIDQ0NSwgNDUxLCA0NTksIDQ2NiwgNDczLCAKLSAgICA0ODAsIDQ4NSwgNDkyLCA0OTgsIDUwNSwgNTEyLCA1MTksIDUyNywgNTMyLCA1NDAsIDU0NywgNTUzLCA1NjAsIDU2NywgCi0gICAgNTc1LCA1ODIsIDU5MCwgNTk4LCA2MDMsIDYxMSwgNjE4LCA2MjQsIDYzMSwgNjM4LCA2NDUsIDY0OCwgNjU0LCA2NjEsIAotICAgIDY2NywgNjc0LCA2ODEsIDY4OCwgNjkzLCA2OTksIDcwNiwgNzEyLCA3MTksIDcyNiwgNzMzLCA3NDEsIDc0NiwgNzU0LCAKLSAgICA3NjEsIDc2NywgNzc0LCA3ODEsIDc4OSwgNzk2LCA4MDQsIDgxMiwgODE3LCA4MjUsIDgzMiwgODM4LCA4NDUsIDg1MiwgCi0gICAgODU5LCA4NjIsIDg2OCwgODc1LCA4ODEsIDg4OCwgODk1LCA5MDIsIDkwNywgOTE1LCA5MjIsIDkyOSwgOTM2LCA5NDMsIAotICAgIDk1MCwgOTU3LCA5NjQsIDk3MSwgOTc5LCA5ODcsIDk5NSwgMTAwMywgMTAxMSwgMTAxOSwgMTAyNywgMTAzNSwgMTA0MiwgCi0gICAgMTA0OSwgMTA1NiwgMTA2MywgMTA3MCwgMTA3NywgMTA4NCwgMTA5MSwgMTA5OCwgMTEwNSwgMTExMiwgMTExOSwgMTEyNywgCi0gICAgMTEzNSwgMTE0MywgMTE1MSwgMTE1OSwgMTE2NywgMTE3NSwgMTE4MywgMTE5MSwgMTE5OSwgMTIwNiwgMTIxMywgMTIyMSwgCi0gICAgMTIyOSwgMTIzNywgMTI0NSwgMTI1MywgMTI2MSwgMTI2OSwgMTI3NywgMTI4NSwgMTI5MSwgMTI5NiwgMTMwMSwgMTMwOSwgCi0gICAgMTMxNywgMTMyNSwgMTMzMywgMTMzOCwgMTM0NSwgMTM1MiwgMTM2MCwgMTM2OCwgMTM3NiwgMTM4NCwgMTM5NCwgMTQwNCwgCi0gICAgMTQxMSwgMTQxOCwgMTQyNSwgMTQzMiwgMTQ0MCwgMTQ0OCwgMTQ1NiwgMTQ2NCwgMTQ3NSwgMTQ4MCwgMTQ4NSwgMTQ5MiwgCi0gICAgMTQ5OSwgMTUwNiwgMTUxMywgMTUyMCwgMTUyNywgMTUzMiwgMTUzNywgMTU0NCwgMTU1MSwgMTU1OSwgMTU2NywgMTU3NSwgCi0gICAgMTU4MywgMTU5MCwgMTU5NywgMTYwNSwgMTYxMywgMTYyMSwgMTYyOSwgMTYzNywgMTY0NSwgMTY1MywgMTY2MSwgMTY2OSwgCi0gICAgMTY3NywgMTY4NCwgMTY5MSwgMTY5OCwgMTcwNSwgMTcxMiwgMTcxOSwgMTcyNiwgMTczMywgMTc0MSwgMTc0OSwgMTc1NiwgCi0gICAgMTc2MywgMTc3MCwgMTc3NywgMTc4NSwgMTc5MywgMTgwMSwgMTgwOSwgMTgxNywgMTgyNCwgMTgzMSwgMTgzOSwgMTg0NywgCi0gICAgMTg1NSwgMTg2MywgMTg2OCwgMTg3NCwgMTg4MCwgMTg4NywgMTg5NCwgMTg5OSwgMTkwNCwgMTkxMCwgMTkxNywgMTkyNCwgCi0gICAgMTkzMSwgMTkzOCwgMTk0NiwgMTk1NCwgMTk2MSwgMTk2NywgMTk3MiwgMTk3OCwgMTk4NSwgMTk5MiwgMTk5OSwgMjAwNCwgCi0gICAgMjAwOSwgMjAxNCwgMjAyMSwgMjAyOCwgMjAzNSwgMjA0MiwgMjA0OSwgMjA1NSwgMjA2MywgMjA3MywgMjA4MiwgMjA4OSwgCi0gICAgMjA5NiwgMjEwMSwgMjEwNiwgMjExMywgMjEyMCwgMjEyNCwgMjEyOSwgMjEzNCwgMjEzOSwgMjE0NywgMjE1NiwgMjE2MywgCi0gICAgMjE3MCwgMjE3OSwgMjE4NiwgMjE5MywgMjE5OCwgMjIwNSwgMjIxMiwgMjIxOSwgMjIyNiwgMjIzMywgMjIzOCwgMjI0NSwgCi0gICAgMjI1MiwgMjI2MCwgMjI2NSwgMjI3MCwgMjI3NSwgMjI4NSwgMjI4OSwgMjI5NSwgMjMwMSwgMjMwNywgMjMxMywgMjMyMSwgCi0gICAgMjMzNCwgMjM0MiwgMjM0NywgMjM1NywgMjM2MiwgMjM2NywgMjM3NywgMjM4MiwgMjM4OSwgMjM5NiwgMjQwNCwgMjQxMiwgCi0gICAgMjQxOSwgMjQyNiwgMjQzMywgMjQ0MCwgMjQ1MCwgMjQ2MCwgMjQ2OSwgMjQ3OCwgMjQ4OCwgMjQ5OCwgMjUwOCwgMjUxOCwgCi0gICAgMjUyNCwgMjUzNCwgMjU0NCwgMjU1NCwgMjU2NCwgMjU3MiwgMjU4MCwgMjU4NywgMjU5NCwgMjYwMiwgMjYxMCwgMjYxOCwgCi0gICAgMjYyNiwgMjYzMywgMjY0MCwgMjY1MCwgMjY2MCwgMjY2OCwgMjY3NiwgMjY4NCwgMjY4OSwgMjY5OSwgMjcwNCwgMjcxMSwgCi0gICAgMjcxOCwgMjcyMywgMjcyOCwgMjczNiwgMjc0NCwgMjc1NCwgMjc2NCwgMjc3MSwgMjc3OCwgMjc4NywgMjc5NiwgMjgwNCwgCi0gICAgMjgxMiwgMjgyMSwgMjgzMCwgMjgzOCwgMjg0NiwgMjg1NSwgMjg2NCwgMjg3MywgMjg4MiwgMjg5MiwgMjkwMiwgMjkxMCwgCi0gICAgMjkxOCwgMjkyNywgMjkzNiwgMjk0NSwgMjk1NCwgMjk2NCwgMjk3NCwgMjk4MiwgMjk5MCwgMjk5OSwgMzAwOCwgMzAxNywgCi0gICAgMzAyNiwgMzAzNSwgMzA0NCwgMzA0OSwgMzA1NCwgMzA2MiwgMzA3MCwgMzA4MCwgMzA4OCwgMzA5MywgMzA5OCwgMzEwNSwgCi0gICAgMzExMiwgMzExOSwgMzEyNiwgMzEzMywgMzE0MCwgMzE1MCwgMzE2MCwgMzE3MCwgMzE4MCwgMzE4NywgMzE5NCwgMzIwNCwgCi0gICAgMzIxNCwgMzIyMiwgMzIzMCwgMzIzOCwgMzI0NiwgMzI1NCwgMzI2MSwgMzI2OCwgMzI3NSwgMzI4MSwgMzI4OCwgMzI5NSwgCi0gICAgMzMwMiwgMzMxMSwgMzMyMSwgMzMzMSwgMzMzOCwgMzM0NSwgMzM1MSwgMzM1NiwgMzM2MywgMzM2OSwgMzM3NSwgMzM4MiwgCi0gICAgMzM4OSwgMzQwMCwgMzQxMCwgMzQxNywgMzQyNCwgMzQzMSwgMzQzOCwgMzQ0NCwgMzQ0OSwgMzQ1NiwgMzQ2MiwgMzQ2OCwgCi0gICAgMzQ3NiwgMzQ4NCwgMzQ5MSwgMzQ5NywgMzUwMiwgMzUwOSwgMzUxNSwgMzUyMywgMzUzMywgMzU0MywgMzU1MiwgMzU1OSwgCi0gICAgMzU2NSwgMzU3MSwgMzU3NiwgMzU4MywgMzU5MCwgMzU5NywgMzYwNCwgMzYxMSwgMzYxNiwgMzYyMSwgMzYzMSwgMzYzOSwgCi0gICAgMzY0OCwgMzY1MywgMzY1OSwgMzY3MCwgMzY3NywgMzY4NSwgMzY5NCwgMzY5OSwgMzcwNSwgMzcxMSwgMzcxOCwgMzcyMywgCi0gICAgMzcyOSwgMzc0MCwgMzc0OSwgMzc1OCwgMzc2NiwgMzc3NCwgMzc4NCwgMzc4OSwgMzc5NiwgMzgwMywgMzgwOCwgMzgyMCwgCi0gICAgMzgyOSwgMzgzNywgMzg0NCwgMzg1MywgMzg1OCwgMzg2MywgMzg3MCwgMzg3NywgMzg4NCwgMzg5MSwgMzg5NywgMzkwNiwgCi0gICAgMzkxNCwgMzkxOSwgMzkyNywgMzkzMywgMzk0MSwgMzk0OSwgMzk1NSwgMzk2MSwgMzk2NywgMzk3NSwgMzk4MywgMzk4OSwgCi0gICAgMzk5NywgNDAwNCwgNDAwOSwgNDAxNiwgNDAyNCwgNDAzNCwgNDA0MSwgNDA0OCwgNDA1OCwgNDA2NSwgNDA3MiwgNDA4MiwgCi0gICAgNDA4OSwgNDA5NiwgNDEwMywgNDEwOSwgNDExNSwgNDEyNSwgNDEzOCwgNDE0MywgNDE1MCwgNDE1NSwgNDE1OSwgNDE2NSwgCi0gICAgNDE3NCwgNDE4MSwgNDE4NiwgNDE5MSwgNDE5NSwgNDIwMCwgNDIwNiwgNDIxMCwgNDIxNiwgNDIyMiwgNDIyOCwgNDIzNCwgCi0gICAgNDI0MiwgNDI0NywgNDI1MiwgNDI1NywgNDI2MiwgNDI2OCwgNDI3MCwgNDI3NSwgNDI3OSwgNDI4NSwgNDI5MSwgNDI5NywgCi0gICAgNDMwMiwgNDMwOSwgNDMxNiwgNDMyMiwgNDMyOSwgNDMzNywgNDM0NSwgNDM1MCwgNDM1NSwgNDM1OSwgNDM2NCwgNDM2NiwgCi0gICAgNDM2OCwgNDM3MSwgNDM3MywgNDM3NiwgNDM4MSwgNDM4NiwgNDM5MiwgNDM5NywgNDQwMSwgNDQwNSwgNDQxMCwgNDQxOSwgCi0gICAgNDQyNSwgNDQzMCwgNDQzNiwgNDQ0MSwgNDQ0NywgNDQ1NSwgNDQ2MywgNDQ2NywgNDQ3MSwgNDQ3NiwgNDQ4MiwgNDQ4OCwgCi0gICAgNDQ5NCwgNDUwMCwgNDUwNSwgNDUxMywgNDUyMiwgNDUzMSwgNDUzNiwgNDU0MiwgNDU0OSwgNDU1NiwgNDU2MywgNDU3MCwgCi0gICAgNDU3NCwgNDU4MCwgNDU4NSwgNDU5MCwgNDU5NSwgNDYwMCwgNDYwMywgNDYwNiwgNDYwOSwgNDYxMiwgNDYxNSwgNDYxOCwgCi0gICAgNDYyMiwgNDYyNiwgNDYzMiwgNDYzNSwgNDY0MCwgNDY0NiwgNDY1MiwgNDY1NSwgNDY2MCwgNDY2NiwgNDY3MCwgNDY3NiwgCi0gICAgNDY4MiwgNDY4OCwgNDY5NCwgNDY5OSwgNDcwNCwgNDcwOSwgNDcxMiwgNDcxOCwgNDcyMywgNDcyOCwgNDczMiwgNDczNywgCi0gICAgNDc0MywgNDc0OSwgNDc1MiwgNDc1NiwgNDc2MCwgNDc2NCwgNDc2NywgNDc3MCwgNDc3NSwgNDc3OSwgNDc4NiwgNDc5MCwgCi0gICAgNDc5NiwgNDgwMCwgNDgwNiwgNDgxMCwgNDgxNCwgNDgxOCwgNDgyMywgNDgyOCwgNDgzNSwgNDg0MSwgNDg0OCwgNDg1NCwgCi0gICAgNDg2MCwgNDg2NiwgNDg2OSwgNDg3MywgNDg3NywgNDg4MSwgNDg4NSwgNDg5MCwgNDg5NSwgNDg5OSwgNDkwMywgNDkwOSwgCi0gICAgNDkxMywgNDkxNywgNDkyMiwgNDkyOCwgNDkzMywgNDkzOSwgNDk0MywgNDk1MCwgNDk1NSwgNDk2MCwgNDk2NSwgNDk3MCwgCi0gICAgNDk3NiwgNDk3OSwgNDk4MywgNDk4OCwgNDk5MywgNTAwMiwgNTAwOCwgNTAxMywgNTAxNywgNTAyMiwgNTAyNiwgNTAzMSwgCi0gICAgNTAzNSwgNTAzOSwgNTA0NCwgNTA0OCwgNTA1NCwgNTA1OSwgNTA2NCwgNTA2OSwgNTA3NCwgNTA3OSwgNTA4NCwgNTA5MCwgCi0gICAgNTA5NiwgNTEwMiwgNTEwNywgNTExMiwgNTExOCwgNTEyNCwgNTEzMCwgNTEzNSwgNTE0MCwgNTE0NywgNTE1NCwgNTE1OCwgCi0gICAgNTE2NCwgNTE3MSwgMCwgMCwgNTE3OCwgNTE4MSwgNTE5MCwgNTE5OSwgNTIxMCwgMCwgMCwgMCwgMCwgMCwgNTIxNCwgCi0gICAgNTIxNywgNTIyMiwgNTIzMCwgNTIzNSwgNTI0MywgNTI1MSwgMCwgNTI1OSwgMCwgNTI2NywgNTI3NSwgNTI4MywgNTI5NCwgCi0gICAgNTI5OSwgNTMwNCwgNTMwOSwgNTMxNCwgNTMxOSwgNTMyNCwgNTMyOSwgNTMzNCwgNTMzOSwgNTM0NCwgNTM0OSwgNTM1NCwgCi0gICAgNTM1OSwgNTM2NCwgNTM2OSwgNTM3NCwgMCwgNTM3OSwgNTM4NCwgNTM4OSwgNTM5NCwgNTM5OSwgNTQwNCwgNTQwOSwgCi0gICAgNTQxNCwgNTQyMiwgNTQzMCwgNTQzOCwgNTQ0NiwgNTQ1NCwgNTQ2MiwgNTQ3MywgNTQ3OCwgNTQ4MywgNTQ4OCwgNTQ5MywgCi0gICAgNTQ5OCwgNTUwMywgNTUwOCwgNTUxMywgNTUxOCwgNTUyMywgNTUyOCwgNTUzMywgNTUzOCwgNTU0MywgNTU0OCwgNTU1MywgCi0gICAgNTU1OCwgNTU2NCwgNTU2OSwgNTU3NCwgNTU3OSwgNTU4NCwgNTU4OSwgNTU5NCwgNTU5OSwgNTYwNywgNTYxNSwgNTYyMywgCi0gICAgNTYzMSwgNTYzOSwgNTY0NCwgNTY0OCwgNTY1MiwgNTY1OSwgNTY2OSwgNTY3OSwgNTY4MywgNTY4NywgNTY5MSwgNTY5NywgCi0gICAgNTcwNCwgNTcwOCwgNTcxMywgNTcxNywgNTcyMiwgNTcyNiwgNTczMSwgNTczNSwgNTc0MCwgNTc0NSwgNTc1MCwgNTc1NSwgCi0gICAgNTc2MCwgNTc2NSwgNTc3MCwgNTc3NSwgNTc4MCwgNTc4NSwgNTc5MCwgNTc5NSwgNTgwMCwgNTgwNSwgNTgxMCwgNTgxNCwgCi0gICAgNTgxOCwgNTgyNCwgNTgyOCwgNTgzMywgNTgzOSwgNTg0NywgNTg1MiwgNTg1NywgNTg2NCwgNTg2OSwgNTg3NCwgNTg4MSwgCi0gICAgNTg5MCwgNTg5OSwgNTkxMCwgNTkxOCwgNTkyMywgNTkyOCwgNTkzMywgNTk0MCwgNTk0NSwgNTk1MSwgNTk1NiwgNTk2MSwgCi0gICAgNTk2NiwgNTk3MSwgNTk3NiwgNTk4MSwgNTk4OSwgNTk5NSwgNjAwMCwgNjAwNCwgNjAwOSwgNjAxNCwgNjAxOSwgNjAyNCwgCi0gICAgNjAyOSwgNjAzNCwgNjAzOSwgNjA0MywgNjA0OSwgNjA1MywgNjA1OCwgNjA2MywgNjA2OCwgNjA3MiwgNjA3NywgNjA4MiwgCi0gICAgNjA4NywgNjA5MiwgNjA5NiwgNjEwMSwgNjEwNSwgNjExMCwgNjExNSwgNjEyMCwgNjEyNSwgNjEzMSwgNjEzNiwgNjE0MiwgCi0gICAgNjE0NiwgNjE1MSwgNjE1NSwgNjE1OSwgNjE2NCwgNjE2OSwgNjE3NCwgNjE3OSwgNjE4NCwgNjE4OSwgNjE5NCwgNjE5OCwgCi0gICAgNjIwNCwgNjIwOCwgNjIxMywgNjIxOCwgNjIyMywgNjIyNywgNjIzMiwgNjIzNywgNjI0MiwgNjI0NywgNjI1MSwgNjI1NiwgCi0gICAgNjI2MCwgNjI2NSwgNjI3MCwgNjI3NSwgNjI4MCwgNjI4NiwgNjI5MSwgNjI5NywgNjMwMSwgNjMwNiwgNjMxMCwgNjMxOCwgCi0gICAgNjMyMywgNjMyOCwgNjMzMywgNjM0MCwgNjM0NSwgNjM1MSwgNjM1NiwgNjM2MSwgNjM2NiwgNjM3MSwgNjM3NiwgNjM4MSwgCi0gICAgNjM4OSwgNjM5NSwgNjQwMCwgNjQwNSwgNjQxMCwgNjQxNSwgNjQyMCwgNjQyNiwgNjQzMiwgNjQzOSwgNjQ0NiwgNjQ1NSwgCi0gICAgNjQ2NCwgNjQ3MSwgNjQ3OCwgNjQ4NywgNjQ5NiwgNjUwMSwgNjUwNiwgNjUxMSwgNjUxNiwgNjUyMSwgNjUyNiwgNjUzMSwgCi0gICAgNjUzNiwgNjU0NywgNjU1OCwgNjU2MywgNjU2OCwgNjU3NSwgNjU4MiwgNjU5MCwgNjU5OCwgNjYwMywgNjYwOCwgNjYxMywgCi0gICAgNjYxOCwgNjYyMiwgNjYyNiwgNjYzMCwgNjYzNSwgNjY0MSwgNjY0NSwgNjY1MiwgNjY1NywgNjY2NywgNjY3NywgNjY4MywgCi0gICAgNjY4OSwgNjY5NywgNjcwNSwgNjcxMywgNjcyMSwgNjcyOCwgNjczNSwgNjc0NCwgNjc1MywgNjc2MSwgNjc2OSwgNjc3NywgCi0gICAgNjc4NSwgNjc5MywgNjgwMSwgNjgwOSwgNjgxNywgNjgyNCwgNjgzMSwgNjgzNywgNjg0MywgNjg1MSwgNjg1OSwgNjg2NiwgCi0gICAgNjg3MywgNjg4MiwgNjg5MSwgNjg5NywgNjkwMywgNjkxMSwgNjkxOSwgNjkyNywgNjkzNSwgNjk0MSwgNjk0NywgNjk1NSwgCi0gICAgNjk2MywgNjk3MSwgNjk3OSwgNjk4NiwgNjk5MywgNzAwMSwgNzAwOSwgNzAxNywgNzAyNSwgNzAzMCwgNzAzNSwgNzA0MiwgCi0gICAgNzA0OSwgNzA1OSwgNzA2OSwgNzA3MywgNzA4MSwgNzA4OSwgNzA5NiwgNzEwMywgNzExMSwgNzExOSwgNzEyNiwgNzEzMywgCi0gICAgNzE0MSwgNzE0OSwgNzE1NiwgNzE2MywgNzE3MSwgNzE3OSwgNzE4NCwgNzE5MSwgNzE5OCwgNzIwNSwgNzIxMiwgNzIxOCwgCi0gICAgNzIyNCwgNzIzMiwgNzI0MCwgNzI0NSwgNzI1MCwgNzI1OCwgNzI2NiwgNzI3NCwgNzI4MiwgNzI5MCwgNzI5OCwgNzMwNSwgCi0gICAgNzMxMiwgNzMyMCwgNzMyOCwgNzMzNiwgNzM0NCwgNzM1MSwgNzM1OCwgNzM2NCwgNzM3MCwgNzM3OSwgNzM4OCwgNzM5NSwgCi0gICAgNzQwMiwgNzQwOSwgNzQxNiwgNzQyMywgNzQzMCwgNzQzNywgNzQ0NCwgNzQ1MiwgNzQ2MCwgNzQ2OCwgNzQ3NiwgNzQ4NCwgCi0gICAgNzQ5MiwgNzUwMiwgNzUxMiwgNzUxOSwgNzUyNiwgNzUzMywgNzU0MCwgNzU0NywgNzU1NCwgNzU2MSwgNzU2OCwgNzU3NSwgCi0gICAgNzU4MiwgNzU4OSwgNzU5NiwgNzYwMywgNzYxMCwgNzYxNywgNzYyNCwgNzYzMSwgNzYzOCwgNzY0NSwgNzY1MiwgNzY1OSwgCi0gICAgNzY2NiwgNzY3MywgNzY4MCwgNzY4NSwgNzY5MCwgNzY5NSwgNzcwMCwgNzcwNSwgNzcxMCwgNzcxNSwgNzcyMCwgNzcyNSwgCi0gICAgNzczMCwgNzczNiwgNzc0MiwgNzc1MSwgNzc2MCwgNzc2OSwgNzc3OCwgNzc4NiwgNzc5NCwgNzgwMiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzgxMCwgNzgxNSwgNzgyMCwgNzgyNSwgNzgzMCwgNzgzNSwgNzg0MCwgNzg0NSwgNzg1MCwgCi0gICAgNzg1NCwgNzg1OSwgNzg2NCwgNzg2OSwgNzg3NCwgNzg3OSwgNzg4NCwgNzg4OSwgNzg5NCwgNzg5OSwgNzkwNCwgNzkwOSwgCi0gICAgNzkxNCwgNzkxOSwgNzkyNCwgNzkyOSwgNzkzNCwgNzkzOSwgNzk0NCwgNzk0OCwgNzk1MywgNzk1OCwgNzk2MywgNzk2OCwgCi0gICAgNzk3MywgNzk3OCwgNzk4MywgNzk4OCwgNzk5MywgMCwgMCwgNzk5OCwgODAwNSwgODAwOCwgODAxMiwgODAxNiwgODAxOSwgCi0gICAgODAyMywgMCwgODAyNywgODAzMiwgODAzNywgODA0MiwgODA0NywgODA1MiwgODA1NywgODA2MiwgODA2NywgODA3MSwgCi0gICAgODA3NiwgODA4MSwgODA4NiwgODA5MSwgODA5NiwgODEwMSwgODEwNiwgODExMSwgODExNiwgODEyMSwgODEyNiwgODEzMSwgCi0gICAgODEzNiwgODE0MSwgODE0NiwgODE1MSwgODE1NiwgODE2MSwgODE2NSwgODE3MCwgODE3NSwgODE4MCwgODE4NSwgODE5MCwgCi0gICAgODE5NSwgODIwMCwgODIwNSwgODIxMCwgODIxNSwgMCwgODIyMiwgODIyNywgMCwgMCwgMCwgMCwgMCwgMCwgODIzMCwgCi0gICAgODIzNSwgODI0MCwgODI0NSwgODI1MiwgODI1OSwgODI2NCwgODI2OSwgODI3NCwgODI3OSwgODI4NCwgODI4OSwgODI5NCwgCi0gICAgODMwMSwgODMwNiwgODMxMywgODMyMCwgODMyNSwgODMzMiwgODMzNywgODM0MiwgODM0NywgODM1NCwgODM1OSwgODM2NCwgCi0gICAgODM3MSwgODM4MCwgODM4NSwgODM5MCwgODM5NSwgODQwMCwgODQwNiwgODQxMSwgODQxOCwgODQyNSwgODQzMiwgODQzNywgCi0gICAgODQ0MiwgODQ0NywgODQ1MiwgODQ1NywgODQ2MiwgODQ3MiwgODQ3NywgODQ4NSwgODQ5MCwgODQ5NSwgODUwMCwgODUwNSwgCi0gICAgODUxMiwgODUxOSwgODUyNiwgODUzMiwgODUzOCwgODU0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODU1MiwgODU1NiwgCi0gICAgODU2MCwgODU2NCwgODU2OCwgODU3MiwgODU3NiwgODU4MCwgODU4NCwgODU4OCwgODU5MiwgODU5NywgODYwMSwgODYwNSwgCi0gICAgODYxMCwgODYxNCwgODYxOSwgODYyMywgODYyNywgODYzMSwgODYzNiwgODY0MCwgODY0NSwgODY0OSwgODY1MywgODY1NywgCi0gICAgODY2MSwgMCwgMCwgMCwgMCwgMCwgODY2NSwgODY3MiwgODY4MCwgODY4NywgODY5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODY5NywgODcwMCwgODcwNCwgODcwOSwgMCwgMCwgODcxMywgODcxOSwgODcyNSwgODcyOCwgODczNSwgCi0gICAgODc0NCwgODc0NywgODc1MCwgODc1NSwgODc2MSwgODc2NSwgODc3MywgODc3OSwgODc4NSwgODc5MywgODc5NywgODgwMiwgCi0gICAgODgxMywgODgxOCwgODgyMiwgODgyNiwgODgzMCwgMCwgMCwgODgzMywgODg0MCwgODg0NCwgODg1MCwgODg1NCwgODg2MSwgCi0gICAgODg2NywgODg3NCwgODg4MCwgODg4NiwgODg5MCwgODg5NCwgODkwMCwgODkwNCwgODkwOCwgODkxMiwgODkxNiwgODkyMCwgCi0gICAgODkyNCwgODkyOCwgODkzMiwgODkzNiwgODk0MCwgODk0NCwgODk0OCwgODk1MiwgODk1NiwgODk2MCwgODk2NCwgODk2OCwgCi0gICAgODk3NiwgODk4NCwgODk5NCwgOTAwMywgOTAxMiwgOTAxNSwgOTAxOSwgOTAyMywgOTAyNywgOTAzMSwgOTAzNSwgOTAzOSwgCi0gICAgOTA0MywgOTA0NywgOTA1MiwgOTA1NiwgOTA1OSwgOTA2MiwgOTA2NSwgOTA2OCwgOTA3MSwgOTA3NCwgOTA3NywgOTA4MCwgCi0gICAgOTA4NCwgOTA4NywgOTA5MCwgOTA5NSwgOTEwMCwgOTEwNiwgOTEwOSwgOTExNiwgOTEyNSwgOTEzMCwgOTEzNSwgOTE0MiwgCi0gICAgOTE0NywgOTE1MiwgOTE1NiwgOTE2MCwgOTE2NCwgOTE2OCwgOTE3MiwgOTE3NiwgOTE4MCwgOTE4NCwgOTE4OCwgOTE5MiwgCi0gICAgOTE5NywgOTIwMiwgOTIwOSwgOTIxNSwgOTIyMSwgOTIyNywgOTIzMiwgOTI0MCwgOTI0OCwgOTI1MywgOTI1OSwgOTI2NSwgCi0gICAgOTI3MSwgOTI3NywgOTI4MSwgOTI4NSwgOTI4OSwgOTI5NiwgOTMwNiwgOTMxMCwgOTMxNCwgOTMxOCwgOTMyNCwgOTMzMiwgCi0gICAgOTMzNiwgOTM0MCwgOTM0NywgOTM1MSwgOTM1NSwgOTM1OSwgOTM2NiwgOTM3MywgOTM4NSwgOTM4OSwgOTM5MywgOTM5NywgCi0gICAgOTQwNywgOTQxNiwgOTQyMCwgOTQyOCwgOTQzNSwgOTQ0MiwgOTQ1MSwgOTQ2MiwgOTQ3MCwgOTQ3NCwgOTQ4MywgOTQ5NCwgCi0gICAgOTUwMiwgOTUxNSwgOTUyMywgOTUzMSwgOTUzOSwgOTU0NywgOTU1MywgOTU2MiwgOTU2OSwgOTU3MywgOTU4MSwgOTU4NSwgCi0gICAgOTU5MiwgOTYwMCwgOTYwNCwgOTYxMCwgOTYxNywgOTYyNCwgOTYyOCwgOTYzNiwgOTY0MCwgOTY0NywgOTY1MSwgOTY1OSwgCi0gICAgOTY2MywgOTY3MSwgOTY3OSwgOTY4NiwgOTY5NCwgOTcwMiwgOTcwOSwgOTcxNSwgOTcxOSwgOTcyNiwgOTczNCwgOTc0MCwgCi0gICAgOTc0NywgOTc1NCwgOTc2MCwgOTc2OSwgOTc3NywgOTc4NCwgOTc5MCwgOTc5NCwgOTc5NywgOTgwMSwgOTgwNywgOTgxNSwgCi0gICAgOTgxOSwgOTgyNSwgOTgzMSwgOTgzOCwgOTg0NSwgOTg0OCwgOTg1NSwgOTg2MCwgOTg2OCwgOTg3MywgOTg3NywgOTg5MCwgCi0gICAgOTkwMywgOTkwOSwgOTkxNiwgOTkyMSwgOTkyNywgOTkzMiwgOTkzOCwgOTk0OCwgOTk1NSwgOTk2NCwgOTk3NCwgOTk4MCwgCi0gICAgOTk4NSwgOTk5MCwgOTk5NCwgOTk5OCwgMTAwMDMsIDEwMDA4LCAxMDAxNCwgMTAwMjIsIDEwMDMwLCAxMDA0MSwgMTAwNDYsIAotICAgIDEwMDU1LCAxMDA2NCwgMTAwNzEsIDEwMDc3LCAxMDA4MywgMTAwODksIDEwMDk1LCAxMDEwMSwgMTAxMDcsIDEwMTEzLCAKLSAgICAxMDExOSwgMTAxMjUsIDEwMTMyLCAxMDEzOSwgMTAxNDYsIDEwMTUyLCAxMDE2MCwgMTAxNjksIDEwMTc1LCAxMDE4MiwgCi0gICAgMTAxODksIDEwMTk0LCAxMDE5OSwgMTAyMDMsIDEwMjEwLCAxMDIxNywgMTAyMjYsIDEwMjM1LCAxMDIzOCwgMTAyNDMsIAotICAgIDEwMjQ4LCAwLCAxMDI1MywgMTAyNTcsIDEwMjYxLCAxMDI2NywgMTAyNzEsIDEwMjc1LCAxMDI4MSwgMTAyODUsIDEwMjkzLCAKLSAgICAxMDI5NywgMTAzMDEsIDEwMzA1LCAxMDMwOSwgMTAzMTMsIDEwMzE5LCAxMDMyMywgMTAzMjksIDEwMzMzLCAxMDMzNywgCi0gICAgMTAzNDEsIDEwMzQ1LCAxMDM0OSwgMTAzNTQsIDEwMzU3LCAxMDM2MSwgMTAzNjcsIDEwMzcxLCAxMDM3NSwgMTAzNzksIAotICAgIDEwMzgzLCAxMDM4NywgMTAzOTMsIDEwMzk5LCAxMDQwNSwgMTA0MDksIDEwNDEzLCAxMDQxOCwgMTA0MjIsIDEwNDI2LCAKLSAgICAxMDQzMSwgMTA0MzUsIDEwNDM5LCAxMDQ0NiwgMTA0NTMsIDEwNDU3LCAxMDQ2MSwgMTA0NjYsIDEwNDcwLCAxMDQ3NCwgCi0gICAgMTA0NzcsIDEwNDgyLCAxMDQ4NSwgMTA0ODgsIDEwNDkzLCAxMDQ5OCwgMTA1MDIsIDEwNTA2LCAxMDUxMiwgMTA1MTgsIAotICAgIDEwNTIxLCAwLCAwLCAxMDUyNCwgMTA1MzAsIDEwNTM2LCAxMDU0MiwgMTA1NTIsIDEwNTY0LCAxMDU3NiwgMTA1OTMsIAotICAgIDEwNjA1LCAxMDYxNiwgMTA2MjQsIDEwNjMxLCAxMDY0MiwgMTA2NTcsIDEwNjY4LCAxMDY3NCwgMTA2ODMsIDEwNjkxLCAKLSAgICAxMDcwMywgMTA3MTMsIDEwNzIxLCAxMDczMywgMTA3NDAsIDEwNzQ4LCAxMDc2MCwgMTA3NjYsIDEwNzcyLCAxMDc4MCwgCi0gICAgMTA3ODgsIDEwNzk2LCAxMDgwMiwgMTA4MTIsIDEwODE5LCAxMDgyOSwgMTA4MzksIDEwODUyLCAxMDg2NiwgMTA4ODAsIAotICAgIDEwODkwLCAxMDkwMSwgMTA5MTIsIDEwOTI1LCAxMDkzOCwgMTA5NTIsIDEwOTY0LCAxMDk3NiwgMTA5ODksIDExMDAyLCAKLSAgICAxMTAxNCwgMTEwMjcsIDExMDM2LCAxMTA0NCwgMTEwNDksIDExMDU0LCAxMTA1OSwgMTEwNjQsIDExMDY5LCAxMTA3NCwgCi0gICAgMTEwNzksIDExMDg0LCAxMTA4OSwgMTEwOTQsIDExMDk5LCAxMTEwNCwgMTExMDksIDExMTE0LCAxMTExOSwgMTExMjQsIAotICAgIDExMTI5LCAxMTEzNCwgMTExMzksIDExMTQ0LCAxMTE0OSwgMTExNTQsIDExMTU5LCAxMTE2NCwgMTExNjksIDExMTc0LCAKLSAgICAxMTE3OSwgMTExODQsIDExMTg5LCAxMTE5NCwgMTExOTksIDExMjA0LCAxMTIwOCwgMTEyMTMsIDExMjE4LCAxMTIyMywgCi0gICAgMTEyMjgsIDExMjMzLCAxMTIzNywgMTEyNDEsIDExMjQ1LCAxMTI0OSwgMTEyNTMsIDExMjU3LCAxMTI2MSwgMTEyNjUsIAotICAgIDExMjY5LCAxMTI3MywgMTEyNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMjgyLCAKLSAgICAxMTI4NywgMTEyOTEsIDExMjk1LCAxMTI5OSwgMTEzMDMsIDExMzA3LCAxMTMxMSwgMTEzMTUsIDExMzE5LCAxMTMyMywgCi0gICAgMTEzMjcsIDExMzMyLCAxMTMzNiwgMTEzNDAsIDExMzQ0LCAxMTM0OSwgMTEzNTMsIDExMzU4LCAxMTM2MiwgMTEzNjcsIAotICAgIDExMzcxLCAxMTM3NiwgMTEzODEsIDExMzg2LCAxMTM5MSwgMTEzOTUsIDExNDAwLCAxMTQwNSwgMTE0MTAsIDExNDE1LCAKLSAgICAxMTQxOSwgMTE0MjQsIDExNDMxLCAxMTQzNSwgMTE0NDAsIDExNDQ0LCAxMTQ0OCwgMTE0NTMsIDExNDU3LCAxMTQ2NCwgCi0gICAgMTE0NzEsIDExNDc4LCAxMTQ4NCwgMTE0OTIsIDExNTAwLCAxMTUwOSwgMTE1MTcsIDExNTI0LCAxMTUzMSwgMTE1MzksIAotICAgIDExNTQ1LCAxMTU1MSwgMTE1NTcsIDExNTYzLCAxMTU3MCwgMTE1NzUsIDExNTc5LCAxMTU4NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTE1ODgsIDExNTkzLCAxMTU5OCwgMTE2MDMsIDExNjA4LCAxMTYxMywgMTE2MTgsIDExNjIzLCAxMTYyOCwgMTE2MzMsIAotICAgIDExNjM4LCAxMTY0MywgMTE2NDgsIDExNjUzLCAxMTY1OCwgMTE2NjMsIDExNjY4LCAxMTY3MywgMTE2NzgsIDExNjgzLCAKLSAgICAxMTY4OCwgMTE2OTMsIDExNjk4LCAxMTcwMywgMTE3MDgsIDExNzEzLCAxMTcxOCwgMTE3MjYsIDExNzMzLCAxMTczOSwgCi0gICAgMTE3NDQsIDExNzUyLCAxMTc1OSwgMTE3NjUsIDExNzcyLCAxMTc3OCwgMTE3ODMsIDExNzkwLCAxMTc5NywgMTE4MDMsIAotICAgIDExODA4LCAxMTgxMywgMTE4MTksIDExODI0LCAxMTgyOSwgMTE4MzUsIDAsIDAsIDExODQwLCAxMTg0NiwgMTE4NTIsIAotICAgIDExODU4LCAxMTg2NCwgMTE4NzAsIDExODc2LCAxMTg4MSwgMTE4ODksIDExODk1LCAxMTkwMSwgMTE5MDcsIDExOTEzLCAKLSAgICAxMTkxOSwgMTE5MjcsIDAsIDExOTMzLCAxMTkzOCwgMTE5NDMsIDExOTQ4LCAxMTk1MywgMTE5NTgsIDExOTYzLCAxMTk2OCwgCi0gICAgMTE5NzMsIDExOTc4LCAxMTk4MywgMTE5ODgsIDExOTkzLCAxMTk5OCwgMTIwMDMsIDEyMDA4LCAxMjAxMywgMTIwMTgsIAotICAgIDEyMDIzLCAxMjAyOCwgMTIwMzMsIDEyMDM4LCAxMjA0MywgMTIwNDgsIDEyMDUzLCAxMjA1OCwgMTIwNjMsIDEyMDY4LCAwLCAKLSAgICAwLCAxMjA3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwNzcsIDEyMDgzLCAKLSAgICAxMjA4NywgMTIwOTEsIDEyMDk1LCAxMjEwMCwgMTIxMDMsIDEyMTA3LCAxMjExMCwgMTIxMTQsIDEyMTE3LCAxMjEyMSwgCi0gICAgMTIxMjUsIDEyMTI5LCAxMjEzNCwgMTIxMzksIDEyMTQyLCAxMjE0NiwgMTIxNTEsIDEyMTU2LCAxMjE1OSwgMTIxNjMsIAotICAgIDEyMTY2LCAxMjE3MCwgMTIxNzQsIDEyMTc4LCAxMjE4MiwgMTIxODYsIDEyMTkwLCAxMjE5NCwgMTIxOTgsIDEyMjAyLCAKLSAgICAxMjIwNiwgMTIyMTAsIDEyMjE0LCAxMjIxOCwgMTIyMjIsIDEyMjI2LCAxMjIzMCwgMTIyMzQsIDEyMjM4LCAxMjI0MSwgCi0gICAgMTIyNDUsIDEyMjQ4LCAxMjI1MiwgMTIyNTYsIDEyMjYwLCAxMjI2MywgMTIyNjYsIDEyMjY5LCAxMjI3MywgMTIyNzcsIAotICAgIDEyMjgxLCAxMjI4NSwgMTIyODksIDEyMjkzLCAxMjI5NywgMTIzMDEsIDEyMzA0LCAxMjMwOSwgMTIzMTQsIDEyMzE4LCAKLSAgICAxMjMyMiwgMTIzMjcsIDEyMzMxLCAxMjMzNiwgMTIzNDAsIDEyMzQ1LCAxMjM1MCwgMTIzNTYsIDEyMzYyLCAxMjM2OCwgCi0gICAgMTIzNzIsIDEyMzc3LCAxMjM4MywgMTIzODksIDEyMzkzLCAxMjM5OCwgMTI0MDIsIDEyNDA4LCAxMjQxMywgMTI0MTYsIAotICAgIDEyNDIyLCAxMjQyOCwgMTI0MzMsIDEyNDM4LCAxMjQ0NSwgMTI0NTAsIDEyNDU1LCAxMjQ1OSwgMTI0NjMsIDEyNDY3LCAKLSAgICAxMjQ3MSwgMTI0NzUsIDEyNDc5LCAxMjQ4MywgMTI0ODcsIDEyNDkyLCAxMjQ5NywgMTI1MDIsIDEyNTA4LCAxMjUxMSwgCi0gICAgMTI1MTUsIDEyNTE5LCAxMjUyMiwgMTI1MjUsIDEyNTI4LCAxMjUzMSwgMTI1MzQsIDEyNTM3LCAxMjU0MCwgMTI1NDMsIAotICAgIDEyNTQ2LCAxMjU1MCwgMTI1NTcsIDEyNTYyLCAxMjU2NiwgMTI1NzAsIDEyNTc0LCAxMjU3OCwgMCwgMTI1ODIsIDEyNTg2LCAKLSAgICAxMjU5MCwgMTI1OTQsIDEyNTk4LCAxMjYwNCwgMTI2MDgsIDAsIDEyNjEyLCAxMjYxNiwgMTI2MjAsIDAsIDEyNjI0LCAKLSAgICAxMjYyNywgMTI2MzEsIDEyNjM0LCAxMjYzOCwgMTI2NDEsIDEyNjQ1LCAxMjY0OSwgMCwgMCwgMTI2NTMsIDEyNjU2LCAwLCAKLSAgICAwLCAxMjY2MCwgMTI2NjMsIDEyNjY3LCAxMjY3MCwgMTI2NzQsIDEyNjc4LCAxMjY4MiwgMTI2ODYsIDEyNjkwLCAxMjY5NCwgCi0gICAgMTI2OTgsIDEyNzAyLCAxMjcwNiwgMTI3MTAsIDEyNzE0LCAxMjcxOCwgMTI3MjIsIDEyNzI2LCAxMjczMCwgMTI3MzQsIAotICAgIDEyNzM4LCAxMjc0MiwgMCwgMTI3NDUsIDEyNzQ4LCAxMjc1MiwgMTI3NTYsIDEyNzYwLCAxMjc2MywgMTI3NjYsIDAsIAotICAgIDEyNzY5LCAwLCAwLCAwLCAxMjc3MywgMTI3NzcsIDEyNzgxLCAxMjc4NSwgMCwgMCwgMTI3ODgsIDEyNzkyLCAxMjc5NiwgCi0gICAgMTI4MDEsIDEyODA1LCAxMjgxMCwgMTI4MTQsIDEyODE5LCAxMjgyNCwgMCwgMCwgMTI4MzAsIDEyODM0LCAwLCAwLCAKLSAgICAxMjgzOSwgMTI4NDMsIDEyODQ4LCAxMjg1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4NTgsIDAsIDAsIDAsIDAsIAotICAgIDEyODY0LCAxMjg2OCwgMCwgMTI4NzIsIDEyODc2LCAxMjg4MSwgMTI4ODYsIDEyODkxLCAwLCAwLCAxMjg5NywgMTI5MDEsIAotICAgIDEyOTA0LCAxMjkwNywgMTI5MTAsIDEyOTEzLCAxMjkxNiwgMTI5MTksIDEyOTIyLCAxMjkyNSwgMTI5MjgsIDEyOTM3LCAKLSAgICAxMjk0NiwgMTI5NTAsIDEyOTU0LCAxMjk2MCwgMTI5NjYsIDEyOTcyLCAxMjk3OCwgMTI5OTIsIDEyOTk5LCAxMzAwMiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTMwMDYsIDEzMDEyLCAxMzAxNiwgMCwgMTMwMjAsIDEzMDIzLCAxMzAyNywgMTMwMzAsIDEzMDM0LCAKLSAgICAxMzAzNywgMCwgMCwgMCwgMCwgMTMwNDEsIDEzMDQ1LCAwLCAwLCAxMzA0OSwgMTMwNTMsIDEzMDU3LCAxMzA2MCwgMTMwNjQsIAotICAgIDEzMDY4LCAxMzA3MiwgMTMwNzYsIDEzMDgwLCAxMzA4NCwgMTMwODgsIDEzMDkyLCAxMzA5NiwgMTMxMDAsIDEzMTA0LCAKLSAgICAxMzEwOCwgMTMxMTIsIDEzMTE2LCAxMzEyMCwgMTMxMjQsIDEzMTI4LCAxMzEzMiwgMCwgMTMxMzUsIDEzMTM4LCAxMzE0MiwgCi0gICAgMTMxNDYsIDEzMTUwLCAxMzE1MywgMTMxNTYsIDAsIDEzMTU5LCAxMzE2MywgMCwgMTMxNjcsIDEzMTcxLCAwLCAxMzE3NSwgCi0gICAgMTMxNzksIDAsIDAsIDEzMTgyLCAwLCAxMzE4NiwgMTMxOTEsIDEzMTk1LCAxMzIwMCwgMTMyMDQsIDAsIDAsIDAsIDAsIAotICAgIDEzMjA5LCAxMzIxNCwgMCwgMCwgMTMyMTksIDEzMjI0LCAxMzIyOSwgMCwgMCwgMCwgMTMyMzMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEzMjM3LCAxMzI0MSwgMTMyNDUsIDEzMjQ5LCAwLCAxMzI1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyNTcsIAotICAgIDEzMjYxLCAxMzI2NCwgMTMyNjcsIDEzMjcwLCAxMzI3MywgMTMyNzYsIDEzMjc5LCAxMzI4MiwgMTMyODUsIDEzMjg4LCAKLSAgICAxMzI5MSwgMTMyOTQsIDEzMjk3LCAxMzMwMCwgMTMzMDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzMzA5LCAxMzMxMywgMTMzMTcsIDAsIDEzMzIxLCAxMzMyNCwgMTMzMjgsIDEzMzMxLCAxMzMzNSwgMTMzMzgsIDEzMzQyLCAKLSAgICAxMzM0NiwgMTMzNTAsIDAsIDEzMzU1LCAxMzM1OCwgMTMzNjIsIDAsIDEzMzY3LCAxMzM3MCwgMTMzNzQsIDEzMzc3LCAKLSAgICAxMzM4MSwgMTMzODUsIDEzMzg5LCAxMzM5MywgMTMzOTcsIDEzNDAxLCAxMzQwNSwgMTM0MDksIDEzNDEzLCAxMzQxNywgCi0gICAgMTM0MjEsIDEzNDI1LCAxMzQyOSwgMTM0MzMsIDEzNDM3LCAxMzQ0MSwgMTM0NDUsIDEzNDQ5LCAwLCAxMzQ1MiwgMTM0NTUsIAotICAgIDEzNDU5LCAxMzQ2MywgMTM0NjcsIDEzNDcwLCAxMzQ3MywgMCwgMTM0NzYsIDEzNDgwLCAwLCAxMzQ4NCwgMTM0ODgsIAotICAgIDEzNDkyLCAxMzQ5NiwgMTM1MDAsIDAsIDAsIDEzNTAzLCAxMzUwNywgMTM1MTEsIDEzNTE2LCAxMzUyMCwgMTM1MjUsIAotICAgIDEzNTI5LCAxMzUzNCwgMTM1MzksIDEzNTQ1LCAwLCAxMzU1MSwgMTM1NTUsIDEzNTYwLCAwLCAxMzU2NiwgMTM1NzAsIAotICAgIDEzNTc1LCAwLCAwLCAxMzU3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1ODIsIAotICAgIDEzNTg3LCAxMzU5MiwgMTM1OTcsIDAsIDAsIDEzNjAzLCAxMzYwNywgMTM2MTAsIDEzNjEzLCAxMzYxNiwgMTM2MTksIAotICAgIDEzNjIyLCAxMzYyNSwgMTM2MjgsIDEzNjMxLCAwLCAxMzYzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTM2MzgsIDEzNjQyLCAxMzY0NiwgMCwgMTM2NTAsIDEzNjUzLCAxMzY1NywgMTM2NjAsIDEzNjY0LCAKLSAgICAxMzY2NywgMTM2NzEsIDEzNjc1LCAwLCAwLCAxMzY3OSwgMTM2ODIsIDAsIDAsIDEzNjg2LCAxMzY4OSwgMTM2OTMsIAotICAgIDEzNjk2LCAxMzcwMCwgMTM3MDQsIDEzNzA4LCAxMzcxMiwgMTM3MTYsIDEzNzIwLCAxMzcyNCwgMTM3MjgsIDEzNzMyLCAKLSAgICAxMzczNiwgMTM3NDAsIDEzNzQ0LCAxMzc0OCwgMTM3NTIsIDEzNzU2LCAxMzc2MCwgMTM3NjQsIDEzNzY4LCAwLCAxMzc3MSwgCi0gICAgMTM3NzQsIDEzNzc4LCAxMzc4MiwgMTM3ODYsIDEzNzg5LCAxMzc5MiwgMCwgMTM3OTUsIDEzNzk5LCAwLCAxMzgwMywgCi0gICAgMTM4MDcsIDEzODExLCAxMzgxNSwgMTM4MTksIDAsIDAsIDEzODIyLCAxMzgyNiwgMTM4MzAsIDEzODM1LCAxMzgzOSwgCi0gICAgMTM4NDQsIDEzODQ4LCAxMzg1MywgMTM4NTgsIDAsIDAsIDEzODY0LCAxMzg2OCwgMCwgMCwgMTM4NzMsIDEzODc3LCAKLSAgICAxMzg4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4ODYsIDEzODkyLCAwLCAwLCAwLCAwLCAxMzg5OCwgMTM5MDIsIDAsIAotICAgIDEzOTA2LCAxMzkxMCwgMTM5MTUsIDEzOTIwLCAxMzkyNSwgMCwgMCwgMTM5MzEsIDEzOTM1LCAxMzkzOCwgMTM5NDEsIAotICAgIDEzOTQ0LCAxMzk0NywgMTM5NTAsIDEzOTUzLCAxMzk1NiwgMTM5NTksIDEzOTYyLCAxMzk2NSwgMTM5NjksIDEzOTc1LCAKLSAgICAxMzk4MSwgMTM5ODcsIDEzOTkzLCAxMzk5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQwMDUsIDE0MDA5LCAKLSAgICAwLCAxNDAxMywgMTQwMTYsIDE0MDIwLCAxNDAyMywgMTQwMjcsIDE0MDMwLCAwLCAwLCAwLCAxNDAzNCwgMTQwMzcsIAotICAgIDE0MDQxLCAwLCAxNDA0NSwgMTQwNDgsIDE0MDUyLCAxNDA1NiwgMCwgMCwgMCwgMTQwNTksIDE0MDYzLCAwLCAxNDA2NywgMCwgCi0gICAgMTQwNzEsIDE0MDc1LCAwLCAwLCAwLCAxNDA3OSwgMTQwODMsIDAsIDAsIDAsIDE0MDg3LCAxNDA5MCwgMTQwOTQsIDAsIDAsIAotICAgIDAsIDE0MDk3LCAxNDEwMCwgMTQxMDMsIDE0MTA2LCAxNDExMCwgMTQxMTQsIDE0MTE4LCAxNDEyMiwgMTQxMjYsIDE0MTMwLCAKLSAgICAxNDEzNCwgMTQxMzgsIDAsIDAsIDAsIDAsIDE0MTQxLCAxNDE0NiwgMTQxNTAsIDE0MTU1LCAxNDE1OSwgMCwgMCwgMCwgCi0gICAgMTQxNjQsIDE0MTY4LCAxNDE3MywgMCwgMTQxNzgsIDE0MTgyLCAxNDE4NywgMTQxOTIsIDAsIDAsIDE0MTk2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNDE5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyMDUsIDE0MjA5LCAKLSAgICAxNDIxMiwgMTQyMTUsIDE0MjE4LCAxNDIyMSwgMTQyMjQsIDE0MjI3LCAxNDIzMCwgMTQyMzMsIDE0MjM2LCAxNDI0MCwgCi0gICAgMTQyNDUsIDE0MjUwLCAxNDI1NCwgMTQyNTgsIDE0MjYyLCAxNDI2NiwgMTQyNzAsIDE0Mjc1LCAxNDI3OSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTQyODIsIDE0Mjg2LCAxNDI5MCwgMCwgMTQyOTQsIDE0Mjk3LCAxNDMwMSwgMTQzMDQsIDE0MzA4LCAKLSAgICAxNDMxMSwgMTQzMTUsIDE0MzE5LCAwLCAxNDMyMywgMTQzMjYsIDE0MzMwLCAwLCAxNDMzNCwgMTQzMzcsIDE0MzQxLCAKLSAgICAxNDM0NSwgMTQzNDgsIDE0MzUyLCAxNDM1NiwgMTQzNjAsIDE0MzY0LCAxNDM2OCwgMTQzNzIsIDE0Mzc2LCAxNDM4MCwgCi0gICAgMTQzODQsIDE0Mzg4LCAxNDM5MiwgMTQzOTYsIDE0NDAwLCAxNDQwNCwgMTQ0MDgsIDE0NDEyLCAxNDQxNiwgMTQ0MjAsIDAsIAotICAgIDE0NDIzLCAxNDQyNiwgMTQ0MzAsIDE0NDM0LCAxNDQzOCwgMTQ0NDEsIDE0NDQ0LCAxNDQ0NywgMTQ0NTEsIDE0NDU1LCAwLCAKLSAgICAxNDQ1OSwgMTQ0NjMsIDE0NDY3LCAxNDQ3MSwgMTQ0NzUsIDAsIDAsIDAsIDE0NDc4LCAxNDQ4MiwgMTQ0ODcsIDE0NDkxLCAKLSAgICAxNDQ5NiwgMTQ1MDAsIDE0NTA1LCAxNDUxMCwgMCwgMTQ1MTYsIDE0NTIwLCAxNDUyNSwgMCwgMTQ1MzAsIDE0NTM0LCAKLSAgICAxNDUzOSwgMTQ1NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NTQ4LCAxNDU1MiwgMCwgMTQ1NTgsIDE0NTYyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNDU2NiwgMTQ1NzEsIDE0NTc2LCAxNDU4MSwgMCwgMCwgMTQ1ODcsIDE0NTkxLCAxNDU5NCwgMTQ1OTcsIAotICAgIDE0NjAwLCAxNDYwMywgMTQ2MDYsIDE0NjA5LCAxNDYxMiwgMTQ2MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NjE4LCAKLSAgICAxNDYzMSwgMTQ2NDMsIDE0NjU1LCAxNDY2NywgMTQ2NzksIDE0NjkxLCAxNDcwMywgMCwgMCwgMTQ3MDcsIDE0NzExLCAwLCAKLSAgICAxNDcxNSwgMTQ3MTgsIDE0NzIyLCAxNDcyNSwgMTQ3MjksIDE0NzMyLCAxNDczNiwgMTQ3NDAsIDAsIDE0NzQ0LCAxNDc0NywgCi0gICAgMTQ3NTEsIDAsIDE0NzU1LCAxNDc1OCwgMTQ3NjIsIDE0NzY2LCAxNDc2OSwgMTQ3NzMsIDE0Nzc3LCAxNDc4MSwgMTQ3ODUsIAotICAgIDE0Nzg5LCAxNDc5MywgMTQ3OTcsIDE0ODAxLCAxNDgwNSwgMTQ4MDksIDE0ODEzLCAxNDgxNywgMTQ4MjEsIDE0ODI1LCAKLSAgICAxNDgyOSwgMTQ4MzMsIDE0ODM3LCAxNDg0MSwgMCwgMTQ4NDQsIDE0ODQ3LCAxNDg1MSwgMTQ4NTUsIDE0ODU5LCAxNDg2MiwgCi0gICAgMTQ4NjUsIDE0ODY4LCAxNDg3MiwgMTQ4NzYsIDAsIDE0ODgwLCAxNDg4NCwgMTQ4ODgsIDE0ODkyLCAxNDg5NiwgMCwgMCwgCi0gICAgMTQ4OTksIDE0OTAzLCAxNDkwNywgMTQ5MTIsIDE0OTE2LCAxNDkyMSwgMTQ5MjUsIDE0OTMwLCAxNDkzNSwgMCwgMTQ5NDEsIAotICAgIDE0OTQ1LCAxNDk1MCwgMCwgMTQ5NTUsIDE0OTU5LCAxNDk2NCwgMTQ5NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OTczLCAKLSAgICAxNDk3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5ODMsIDAsIDE0OTg3LCAxNDk5MiwgMTQ5OTcsIDE1MDAyLCAwLCAwLCAKLSAgICAxNTAwOCwgMTUwMTIsIDE1MDE1LCAxNTAxOCwgMTUwMjEsIDE1MDI0LCAxNTAyNywgMTUwMzAsIDE1MDMzLCAxNTAzNiwgMCwgCi0gICAgMTUwMzksIDE1MDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA0NywgMTUwNTEsIAotICAgIDAsIDE1MDU1LCAxNTA1OCwgMTUwNjIsIDE1MDY1LCAxNTA2OSwgMTUwNzIsIDE1MDc2LCAxNTA4MCwgMCwgMTUwODQsIAotICAgIDE1MDg3LCAxNTA5MSwgMCwgMTUwOTUsIDE1MDk4LCAxNTEwMiwgMTUxMDYsIDE1MTA5LCAxNTExMywgMTUxMTcsIDE1MTIxLCAKLSAgICAxNTEyNSwgMTUxMjksIDE1MTMzLCAxNTEzNywgMTUxNDEsIDE1MTQ1LCAxNTE0OSwgMTUxNTMsIDE1MTU3LCAxNTE2MSwgCi0gICAgMTUxNjUsIDE1MTY5LCAxNTE3MywgMTUxNzcsIDE1MTgxLCAxNTE4NCwgMTUxODgsIDE1MTkxLCAxNTE5NSwgMTUxOTksIAotICAgIDE1MjAzLCAxNTIwNiwgMTUyMDksIDE1MjEyLCAxNTIxNiwgMTUyMjAsIDE1MjI0LCAxNTIyOCwgMTUyMzIsIDE1MjM2LCAKLSAgICAxNTI0MCwgMTUyNDQsIDE1MjQ3LCAwLCAwLCAxNTI1MSwgMTUyNTUsIDE1MjYwLCAxNTI2NCwgMTUyNjksIDE1MjczLCAKLSAgICAxNTI3OCwgMTUyODMsIDAsIDE1Mjg5LCAxNTI5MywgMTUyOTgsIDAsIDE1MzAzLCAxNTMwNywgMTUzMTIsIDE1MzE3LCAKLSAgICAxNTMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzMyLCAKLSAgICAxNTMzNywgMTUzNDIsIDE1MzQ3LCAwLCAwLCAxNTM1MywgMTUzNTcsIDE1MzYwLCAxNTM2MywgMTUzNjYsIDE1MzY5LCAKLSAgICAxNTM3MiwgMTUzNzUsIDE1Mzc4LCAxNTM4MSwgMTUzODQsIDE1Mzg4LCAxNTM5MywgMTUzOTgsIDE1NDA0LCAxNTQxMCwgMCwgCi0gICAgMCwgMCwgMTU0MTYsIDE1NDIwLCAxNTQyNiwgMTU0MzEsIDE1NDM3LCAxNTQ0MiwgMTU0NDgsIDAsIDAsIDE1NDU0LCAKLSAgICAxNTQ1OCwgMCwgMTU0NjIsIDE1NDY2LCAxNTQ3MCwgMTU0NzQsIDE1NDc4LCAxNTQ4MiwgMTU0ODYsIDE1NDkwLCAxNTQ5NCwgCi0gICAgMTU0OTgsIDE1NTAyLCAxNTUwNiwgMTU1MTAsIDE1NTE0LCAxNTUxOCwgMTU1MjIsIDE1NTI2LCAxNTUzMCwgMCwgMCwgMCwgCi0gICAgMTU1MzQsIDE1NTQwLCAxNTU0NiwgMTU1NTIsIDE1NTU4LCAxNTU2NCwgMTU1NzAsIDE1NTc2LCAxNTU4MiwgMTU1ODgsIAotICAgIDE1NTk0LCAxNTYwMCwgMTU2MDgsIDE1NjE0LCAxNTYyMCwgMTU2MjYsIDE1NjMyLCAxNTYzOCwgMTU2NDQsIDE1NjUwLCAKLSAgICAxNTY1NiwgMTU2NjIsIDE1NjY4LCAxNTY3NCwgMCwgMTU2ODAsIDE1Njg2LCAxNTY5MiwgMTU2OTgsIDE1NzA0LCAxNTcxMCwgCi0gICAgMTU3MTQsIDE1NzIwLCAxNTcyNCwgMCwgMTU3MjgsIDAsIDAsIDE1NzM0LCAxNTczOCwgMTU3NDQsIDE1NzUwLCAxNTc1NiwgCi0gICAgMTU3NjAsIDE1NzY2LCAwLCAwLCAwLCAxNTc3MCwgMCwgMCwgMCwgMCwgMTU3NzQsIDE1Nzc5LCAxNTc4NiwgMTU3OTMsIAotICAgIDE1ODAwLCAxNTgwNywgMCwgMTU4MTQsIDAsIDE1ODIxLCAxNTgyNiwgMTU4MzEsIDE1ODM4LCAxNTg0NSwgMTU4NTQsIAotICAgIDE1ODY1LCAxNTg3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTU4NzksIDE1ODg2LCAxNTg5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU4OTgsIDE1OTA0LCAKLSAgICAxNTkxMCwgMTU5MTYsIDE1OTIyLCAxNTkyOCwgMTU5MzQsIDE1OTQwLCAxNTk0NiwgMTU5NTIsIDE1OTU4LCAxNTk2NCwgCi0gICAgMTU5NzAsIDE1OTc2LCAxNTk4MiwgMTU5ODgsIDE1OTk0LCAxNjAwMCwgMTYwMDYsIDE2MDEyLCAxNjAxOCwgMTYwMjQsIAotICAgIDE2MDMwLCAxNjAzNiwgMTYwNDIsIDE2MDQ4LCAxNjA1NCwgMTYwNjAsIDE2MDY2LCAxNjA3MiwgMTYwNzgsIDE2MDg0LCAKLSAgICAxNjA5MCwgMTYwOTUsIDE2MTAxLCAxNjEwNywgMTYxMTEsIDE2MTE3LCAxNjEyMSwgMTYxMjcsIDE2MTMzLCAxNjEzOSwgCi0gICAgMTYxNDUsIDE2MTUxLCAxNjE1NywgMTYxNjIsIDE2MTY4LCAxNjE3MiwgMTYxNzcsIDE2MTgzLCAxNjE4OSwgMTYxOTUsIAotICAgIDE2MjAwLCAxNjIwNiwgMTYyMTIsIDE2MjE4LCAxNjIyMywgMTYyMjksIDAsIDAsIDAsIDAsIDE2MjMzLCAxNjIzOSwgCi0gICAgMTYyNDQsIDE2MjUwLCAxNjI1NSwgMTYyNjMsIDE2MjcxLCAxNjI3NSwgMTYyNzksIDE2MjgzLCAxNjI4OSwgMTYyOTUsIAotICAgIDE2MzAxLCAxNjMwNywgMTYzMTEsIDE2MzE1LCAxNjMxOSwgMTYzMjMsIDE2MzI3LCAxNjMzMCwgMTYzMzMsIDE2MzM2LCAKLSAgICAxNjMzOSwgMTYzNDIsIDE2MzQ1LCAxNjM0OCwgMTYzNTEsIDE2MzU0LCAxNjM1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTYzNjIsIDE2MzY3LCAwLCAxNjM3NCwgMCwgMCwgMTYzODEsIDE2Mzg2LCAwLCAxNjM5MSwgMCwgCi0gICAgMCwgMTYzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NDAzLCAxNjQwOCwgMTY0MTIsIDE2NDE5LCAwLCAxNjQyNiwgMTY0MzEsIAotICAgIDE2NDM2LCAxNjQ0MSwgMTY0NDgsIDE2NDU1LCAxNjQ2MiwgMCwgMTY0NjksIDE2NDc0LCAxNjQ3OSwgMCwgMTY0ODYsIDAsIAotICAgIDE2NDkzLCAwLCAwLCAxNjQ5OCwgMTY1MDUsIDAsIDE2NTEyLCAxNjUxNiwgMTY1MjMsIDE2NTI3LCAxNjUzMiwgMTY1NDAsIAotICAgIDE2NTQ2LCAxNjU1MiwgMTY1NTcsIDE2NTYzLCAxNjU2OSwgMTY1NzUsIDE2NTgwLCAwLCAxNjU4NiwgMTY1OTQsIDE2NjAxLCAKLSAgICAwLCAwLCAxNjYwOCwgMTY2MTMsIDE2NjE5LCAxNjYyNCwgMTY2MzAsIDAsIDE2NjM2LCAwLCAxNjY0MiwgMTY2NDksIAotICAgIDE2NjU2LCAxNjY2MywgMTY2NzAsIDE2Njc1LCAwLCAwLCAxNjY3OSwgMTY2ODQsIDE2Njg4LCAxNjY5MiwgMTY2OTYsIAotICAgIDE2NzAwLCAxNjcwNCwgMTY3MDgsIDE2NzEyLCAxNjcxNiwgMCwgMCwgMTY3MjAsIDE2NzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNjczMiwgMTY3MzYsIDE2NzQ3LCAxNjc2MiwgMTY3NzcsIDE2Nzg3LCAxNjc5OCwgMTY4MTEsIAotICAgIDE2ODIyLCAxNjgyOCwgMTY4MzYsIDE2ODQ2LCAxNjg1MiwgMTY4NjAsIDE2ODY0LCAxNjg3MCwgMTY4NzYsIDE2ODg0LCAKLSAgICAxNjg5NCwgMTY5MDIsIDE2OTE1LCAxNjkyMSwgMTY5MjksIDE2OTM3LCAxNjk0OSwgMTY5NTYsIDE2OTY0LCAxNjk3MiwgCi0gICAgMTY5ODAsIDE2OTg4LCAxNjk5NiwgMTcwMDQsIDE3MDE0LCAxNzAxOCwgMTcwMjEsIDE3MDI0LCAxNzAyNywgMTcwMzAsIAotICAgIDE3MDMzLCAxNzAzNiwgMTcwMzksIDE3MDQyLCAxNzA0NSwgMTcwNDksIDE3MDUzLCAxNzA1NywgMTcwNjEsIDE3MDY1LCAKLSAgICAxNzA2OSwgMTcwNzMsIDE3MDc3LCAxNzA4MSwgMTcwODYsIDE3MDkyLCAxNzEwMiwgMTcxMTYsIDE3MTI2LCAxNzEzMiwgCi0gICAgMTcxMzgsIDE3MTQ2LCAxNzE1NCwgMTcxNjIsIDE3MTcwLCAxNzE3NiwgMTcxODIsIDE3MTg1LCAxNzE4OSwgMTcxOTMsIAotICAgIDE3MTk3LCAxNzIwMSwgMTcyMDUsIDE3MjA5LCAwLCAxNzIxMywgMTcyMTcsIDE3MjIxLCAxNzIyNSwgMTcyMjksIDE3MjMzLCAKLSAgICAxNzIzNywgMTcyNDEsIDE3MjQ1LCAxNzI0OSwgMTcyNTMsIDE3MjU2LCAxNzI1OSwgMTcyNjMsIDE3MjY3LCAxNzI3MSwgCi0gICAgMTcyNzQsIDE3Mjc4LCAxNzI4MiwgMTcyODYsIDE3MjkwLCAxNzI5NCwgMTcyOTgsIDE3MzAyLCAxNzMwNiwgMTczMDksIAotICAgIDE3MzEyLCAxNzMxNiwgMTczMjAsIDE3MzI0LCAxNzMyOCwgMTczMzEsIDE3MzM0LCAxNzMzOCwgMTczNDMsIDE3MzQ3LCAwLCAKLSAgICAwLCAwLCAwLCAxNzM1MSwgMTczNTYsIDE3MzYwLCAxNzM2NSwgMTczNjksIDE3Mzc0LCAxNzM3OSwgMTczODUsIDE3MzkwLCAKLSAgICAxNzM5NiwgMTc0MDAsIDE3NDA1LCAxNzQwOSwgMTc0MTQsIDE3NDI0LCAxNzQzMCwgMTc0MzYsIDE3NDQzLCAxNzQ1MywgCi0gICAgMTc0NTksIDE3NDYzLCAxNzQ2NywgMTc0NzMsIDE3NDc5LCAxNzQ4NywgMTc0OTMsIDE3NTAxLCAxNzUwOSwgMTc1MTcsIAotICAgIDE3NTI3LCAxNzUzNSwgMTc1NDUsIDE3NTUwLCAxNzU1NiwgMTc1NjIsIDE3NTY4LCAxNzU3NCwgMTc1ODAsIDE3NTg2LCAwLCAKLSAgICAxNzU5MiwgMTc1OTgsIDE3NjA0LCAxNzYxMCwgMTc2MTYsIDE3NjIyLCAxNzYyOCwgMTc2MzQsIDE3NjQwLCAxNzY0NiwgCi0gICAgMTc2NTIsIDE3NjU3LCAxNzY2MiwgMTc2NjgsIDE3Njc0LCAxNzY4MCwgMTc2ODUsIDE3NjkxLCAxNzY5NywgMTc3MDMsIAotICAgIDE3NzA5LCAxNzcxNSwgMTc3MjEsIDE3NzI3LCAxNzczMywgMTc3MzgsIDE3NzQzLCAxNzc0OSwgMTc3NTUsIDE3NzYxLCAKLSAgICAxNzc2NywgMTc3NzIsIDE3Nzc3LCAxNzc4MywgMTc3OTEsIDE3Nzk4LCAwLCAxNzgwNSwgMTc4MTIsIDE3ODI1LCAxNzgzMiwgCi0gICAgMTc4MzksIDE3ODQ3LCAxNzg1NSwgMTc4NjEsIDE3ODY3LCAxNzg3MywgMTc4ODMsIDE3ODg4LCAxNzg5NCwgMTc5MDQsIAotICAgIDE3OTE0LCAwLCAxNzkyNCwgMTc5MzQsIDE3OTQyLCAxNzk1NCwgMTc5NjYsIDE3OTcyLCAxNzk4NiwgMTgwMDEsIDE4MDA2LCAKLSAgICAxODAxMSwgMTgwMTksIDE4MDI3LCAxODAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgwNDMsIAotICAgIDE4MDQ2LCAxODA1MCwgMTgwNTQsIDE4MDU4LCAxODA2MiwgMTgwNjYsIDE4MDcwLCAxODA3NCwgMTgwNzgsIDE4MDgyLCAKLSAgICAxODA4NiwgMTgwOTAsIDE4MDk0LCAxODA5OCwgMTgxMDIsIDE4MTA2LCAxODExMCwgMTgxMTQsIDE4MTE4LCAxODEyMiwgCi0gICAgMTgxMjUsIDE4MTI4LCAxODEzMiwgMTgxMzYsIDE4MTQwLCAxODE0MywgMTgxNDYsIDE4MTQ5LCAxODE1MywgMTgxNTcsIAotICAgIDE4MTYxLCAxODE2NCwgMTgxNjgsIDE4MTcxLCAxODE3NiwgMTgxNzksIDE4MTgzLCAxODE4NiwgMTgxOTAsIDE4MTkzLCAKLSAgICAxODE5OCwgMTgyMDEsIDE4MjA1LCAxODIxMiwgMTgyMTcsIDE4MjIxLCAxODIyNiwgMTgyMzAsIDE4MjM1LCAxODIzOSwgCi0gICAgMTgyNDQsIDE4MjUxLCAxODI1NywgMTgyNjIsIDE4MjY2LCAxODI3MCwgMTgyNzQsIDE4Mjc4LCAxODI4MiwgMTgyODgsIAotICAgIDE4Mjk0LCAxODMwMSwgMTgzMDcsIDE4MzEzLCAxODMxNywgMTgzMjAsIDE4MzIzLCAxODMyNiwgMTgzMjksIDE4MzMyLCAKLSAgICAxODMzNSwgMTgzMzgsIDE4MzQxLCAxODM0NCwgMTgzNTAsIDE4MzU0LCAxODM1OCwgMTgzNjIsIDE4MzY2LCAxODM3MCwgCi0gICAgMTgzNzQsIDE4Mzc4LCAxODM4MiwgMTgzODcsIDE4MzkxLCAxODM5NiwgMTg0MDEsIDE4NDA3LCAxODQxMiwgMTg0MTgsIAotICAgIDE4NDI0LCAxODQzMCwgMTg0MzYsIDE4NDQyLCAxODQ1MCwgMTg0NTgsIDE4NDY3LCAxODQ3NSwgMTg0ODQsIDE4NDkzLCAKLSAgICAxODUwNCwgMTg1MTQsIDE4NTI0LCAxODUzNSwgMTg1NDYsIDE4NTU2LCAxODU2NiwgMTg1NzYsIDE4NTg2LCAxODU5NiwgCi0gICAgMTg2MDYsIDE4NjE2LCAxODYyNiwgMTg2MzQsIDE4NjQxLCAxODY0NywgMTg2NTQsIDE4NjU5LCAxODY2NSwgMTg2NzEsIAotICAgIDE4Njc3LCAxODY4MywgMTg2ODksIDE4Njk1LCAxODcwMCwgMTg3MDYsIDE4NzEyLCAxODcxOCwgMTg3MjQsIDE4NzI5LCAKLSAgICAxODczOCwgMTg3NDUsIDE4NzUxLCAxODc1OCwgMTg3NjYsIDE4NzcyLCAxODc3OCwgMTg3ODQsIDE4NzkwLCAxODc5OCwgCi0gICAgMTg4MDYsIDE4ODE2LCAxODgyNCwgMTg4MzIsIDE4ODM4LCAxODg0MywgMTg4NDgsIDE4ODUzLCAxODg1OCwgMTg4NjMsIAotICAgIDE4ODY4LCAxODg3MywgMTg4NzgsIDE4ODgzLCAxODg4OSwgMTg4OTUsIDE4OTAxLCAxODkwOCwgMTg5MTMsIDE4OTE5LCAKLSAgICAxODkyNCwgMTg5MjksIDE4OTM0LCAxODkzOSwgMTg5NDQsIDE4OTQ5LCAxODk1NCwgMTg5NTksIDE4OTY0LCAxODk2OSwgCi0gICAgMTg5NzQsIDE4OTc5LCAxODk4NCwgMTg5ODksIDE4OTk0LCAxODk5OSwgMTkwMDQsIDE5MDA5LCAxOTAxNCwgMTkwMTksIAotICAgIDE5MDI0LCAxOTAyOSwgMTkwMzQsIDE5MDM5LCAxOTA0NCwgMTkwNDksIDE5MDU0LCAxOTA1OSwgMTkwNjQsIDE5MDY5LCAKLSAgICAxOTA3NCwgMTkwNzksIDE5MDg0LCAxOTA4OSwgMTkwOTQsIDE5MDk5LCAxOTEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTkxMDksIDE5MTEzLCAxOTExNywgMTkxMjEsIDE5MTI1LCAxOTEyOSwgMTkxMzMsIDE5MTM3LCAxOTE0MSwgCi0gICAgMTkxNDUsIDE5MTQ5LCAxOTE1MywgMTkxNTcsIDE5MTYxLCAxOTE2NSwgMTkxNjksIDE5MTczLCAxOTE3NywgMTkxODEsIAotICAgIDE5MTg1LCAxOTE4OSwgMTkxOTMsIDE5MTk3LCAxOTIwMSwgMTkyMDUsIDE5MjA5LCAxOTIxMywgMTkyMTcsIDE5MjIxLCAKLSAgICAxOTIyNSwgMTkyMjksIDE5MjMzLCAxOTIzNywgMTkyNDEsIDE5MjQ1LCAxOTI0OSwgMTkyNTMsIDE5MjU3LCAxOTI2MSwgCi0gICAgMTkyNjUsIDE5MjY5LCAxOTI3MywgMTkyNzksIDE5MjgzLCAxOTI4OCwgMCwgMCwgMCwgMTkyOTMsIDE5Mjk3LCAxOTMwMSwgCi0gICAgMTkzMDUsIDE5MzA5LCAxOTMxMywgMTkzMTcsIDE5MzIxLCAxOTMyNSwgMTkzMjksIDE5MzMzLCAxOTMzNywgMTkzNDEsIAotICAgIDE5MzQ1LCAxOTM0OSwgMTkzNTMsIDE5MzU3LCAxOTM2MSwgMTkzNjUsIDE5MzY5LCAxOTM3MywgMTkzNzcsIDE5MzgxLCAKLSAgICAxOTM4NSwgMTkzODksIDE5MzkzLCAxOTM5NywgMTk0MDEsIDE5NDA1LCAxOTQwOSwgMTk0MTMsIDE5NDE3LCAxOTQyMSwgCi0gICAgMTk0MjUsIDE5NDI5LCAxOTQzMywgMTk0MzcsIDE5NDQxLCAxOTQ0NSwgMTk0NDksIDE5NDUzLCAxOTQ1NywgMTk0NjEsIAotICAgIDE5NDY1LCAxOTQ2OSwgMTk0NzMsIDE5NDc3LCAxOTQ4MSwgMTk0ODUsIDE5NDg5LCAxOTQ5MywgMTk0OTcsIDE5NTAxLCAKLSAgICAxOTUwNSwgMTk1MDksIDE5NTEzLCAxOTUxNywgMTk1MjEsIDE5NTI1LCAxOTUyOSwgMTk1MzMsIDE5NTM3LCAxOTU0MSwgCi0gICAgMTk1NDUsIDE5NTQ5LCAxOTU1MywgMTk1NTcsIDE5NTYxLCAxOTU2NSwgMTk1NjksIDE5NTczLCAxOTU3NywgMTk1ODEsIAotICAgIDE5NTg1LCAxOTU4OSwgMTk1OTMsIDE5NTk3LCAxOTYwMSwgMTk2MDUsIDE5NjA5LCAxOTYxMywgMTk2MTcsIDE5NjIxLCAKLSAgICAxOTYyNSwgMTk2MjksIDE5NjMzLCAxOTYzNywgMTk2NDEsIDE5NjQ1LCAxOTY0OSwgMTk2NTMsIDE5NjU3LCAxOTY2MSwgCi0gICAgMTk2NjUsIDE5NjY5LCAxOTY3MywgMTk2NzcsIDE5NjgxLCAxOTY4NCwgMTk2ODgsIDE5NjkxLCAxOTY5NSwgMTk2OTksIAotICAgIDE5NzAyLCAxOTcwNiwgMTk3MTAsIDE5NzEzLCAxOTcxNywgMTk3MjEsIDE5NzI1LCAxOTcyOSwgMTk3MzIsIDE5NzM2LCAKLSAgICAxOTc0MCwgMTk3NDQsIDE5NzQ4LCAxOTc1MiwgMTk3NTYsIDE5NzU5LCAxOTc2MywgMTk3NjcsIDE5NzcxLCAxOTc3NSwgCi0gICAgMTk3NzksIDE5NzgzLCAxOTc4NywgMTk3OTEsIDE5Nzk1LCAxOTc5OSwgMTk4MDMsIDE5ODA3LCAxOTgxMSwgMTk4MTUsIAotICAgIDE5ODE5LCAxOTgyMywgMTk4MjcsIDE5ODMxLCAxOTgzNSwgMTk4MzksIDE5ODQzLCAxOTg0NywgMTk4NTEsIDE5ODU1LCAKLSAgICAxOTg1OSwgMTk4NjMsIDE5ODY3LCAxOTg3MSwgMTk4NzUsIDE5ODc5LCAxOTg4MywgMTk4ODcsIDE5ODkxLCAxOTg5NSwgCi0gICAgMTk4OTksIDE5OTAzLCAxOTkwNywgMTk5MTEsIDE5OTE1LCAxOTkxOSwgMTk5MjMsIDE5OTI3LCAxOTkzMSwgMTk5MzUsIAotICAgIDE5OTM5LCAxOTk0MywgMTk5NDcsIDE5OTUxLCAxOTk1NSwgMTk5NTksIDE5OTYzLCAxOTk2NywgMTk5NzEsIDE5OTc1LCAKLSAgICAxOTk3OSwgMTk5ODMsIDE5OTg3LCAxOTk5MSwgMTk5OTUsIDE5OTk5LCAyMDAwMywgMjAwMDcsIDIwMDExLCAyMDAxNSwgCi0gICAgMjAwMTksIDIwMDIzLCAyMDAyNywgMjAwMzEsIDIwMDM1LCAyMDAzOSwgMjAwNDMsIDIwMDQ3LCAyMDA1MSwgMjAwNTUsIAotICAgIDIwMDU5LCAyMDA2MywgMjAwNjcsIDIwMDcxLCAyMDA3NSwgMjAwNzksIDIwMDgzLCAyMDA4NywgMjAwOTEsIDIwMDk1LCAKLSAgICAyMDA5OSwgMjAxMDMsIDIwMTA3LCAyMDExMSwgMjAxMTUsIDIwMTE5LCAyMDEyMywgMjAxMjcsIDIwMTMxLCAyMDEzNSwgCi0gICAgMjAxMzksIDIwMTQzLCAyMDE0NywgMjAxNTEsIDIwMTU1LCAyMDE1OSwgMjAxNjMsIDIwMTY3LCAyMDE3MSwgMjAxNzUsIAotICAgIDIwMTc5LCAyMDE4MywgMjAxODcsIDIwMTkxLCAyMDE5NSwgMjAxOTksIDIwMjAzLCAyMDIwNywgMjAyMTEsIDIwMjE1LCAKLSAgICAyMDIxOSwgMjAyMjMsIDIwMjI3LCAyMDIzMSwgMjAyMzUsIDIwMjM5LCAyMDI0MywgMjAyNDcsIDIwMjUxLCAyMDI1NSwgCi0gICAgMjAyNTksIDIwMjYzLCAyMDI2NywgMjAyNzEsIDIwMjc1LCAyMDI3OSwgMjAyODMsIDIwMjg3LCAyMDI5MSwgMjAyOTUsIAotICAgIDIwMjk5LCAyMDMwMywgMjAzMDcsIDIwMzExLCAyMDMxNCwgMjAzMTgsIDIwMzIyLCAyMDMyNiwgMjAzMzAsIDIwMzM0LCAKLSAgICAyMDMzOCwgMjAzNDIsIDIwMzQ2LCAyMDM1MCwgMjAzNTQsIDIwMzU4LCAyMDM2MiwgMjAzNjYsIDIwMzcwLCAyMDM3NCwgCi0gICAgMjAzNzgsIDIwMzgyLCAyMDM4NiwgMjAzOTAsIDIwMzk0LCAyMDM5OCwgMjA0MDIsIDIwNDA2LCAyMDQwOSwgMjA0MTMsIAotICAgIDIwNDE3LCAyMDQyMSwgMjA0MjUsIDIwNDI5LCAyMDQzMywgMjA0MzcsIDIwNDQxLCAyMDQ0NSwgMjA0NDksIDIwNDUzLCAKLSAgICAyMDQ1NywgMjA0NjEsIDIwNDY1LCAyMDQ2OSwgMjA0NzIsIDIwNDc2LCAyMDQ4MCwgMjA0ODQsIDIwNDg4LCAyMDQ5MiwgCi0gICAgMjA0OTYsIDIwNTAwLCAyMDUwNCwgMjA1MDgsIDIwNTEyLCAyMDUxNiwgMjA1MjAsIDIwNTI0LCAyMDUyOCwgMjA1MzIsIAotICAgIDIwNTM2LCAyMDU0MCwgMjA1NDQsIDIwNTQ4LCAyMDU1MiwgMjA1NTYsIDIwNTYwLCAyMDU2NCwgMjA1NjgsIDIwNTcyLCAKLSAgICAyMDU3NiwgMjA1ODAsIDIwNTg0LCAyMDU4OCwgMjA1OTIsIDIwNTk2LCAwLCAyMDYwMCwgMjA2MDQsIDIwNjA4LCAyMDYxMiwgCi0gICAgMCwgMCwgMjA2MTYsIDIwNjIwLCAyMDYyNCwgMjA2MjgsIDIwNjMyLCAyMDYzNiwgMjA2NDAsIDAsIDIwNjQ0LCAwLCAKLSAgICAyMDY0OCwgMjA2NTIsIDIwNjU2LCAyMDY2MCwgMCwgMCwgMjA2NjQsIDIwNjY4LCAyMDY3MiwgMjA2NzYsIDIwNjgwLCAKLSAgICAyMDY4NCwgMjA2ODgsIDIwNjkyLCAyMDY5NiwgMjA3MDAsIDIwNzA0LCAyMDcwOCwgMjA3MTIsIDIwNzE2LCAyMDcyMCwgCi0gICAgMjA3MjQsIDIwNzI4LCAyMDczMiwgMjA3MzYsIDIwNzQwLCAyMDc0NCwgMjA3NDgsIDIwNzUyLCAyMDc1NSwgMjA3NTksIAotICAgIDIwNzYzLCAyMDc2NywgMjA3NzEsIDIwNzc1LCAyMDc3OSwgMjA3ODMsIDIwNzg3LCAyMDc5MSwgMjA3OTUsIDIwNzk5LCAKLSAgICAyMDgwMywgMjA4MDcsIDIwODExLCAyMDgxNSwgMjA4MTksIDIwODIzLCAwLCAyMDgyNywgMjA4MzEsIDIwODM1LCAyMDgzOSwgCi0gICAgMCwgMCwgMjA4NDMsIDIwODQ2LCAyMDg1MCwgMjA4NTQsIDIwODU4LCAyMDg2MiwgMjA4NjYsIDIwODcwLCAyMDg3NCwgCi0gICAgMjA4NzgsIDIwODgyLCAyMDg4NiwgMjA4OTAsIDIwODk0LCAyMDg5OCwgMjA5MDIsIDIwOTA2LCAyMDkxMSwgMjA5MTYsIAotICAgIDIwOTIxLCAyMDkyNywgMjA5MzMsIDIwOTM4LCAyMDk0MywgMjA5NDksIDIwOTUyLCAyMDk1NiwgMjA5NjAsIDIwOTY0LCAKLSAgICAyMDk2OCwgMjA5NzIsIDIwOTc2LCAyMDk4MCwgMCwgMjA5ODQsIDIwOTg4LCAyMDk5MiwgMjA5OTYsIDAsIDAsIDIxMDAwLCAKLSAgICAyMTAwNCwgMjEwMDgsIDIxMDEyLCAyMTAxNiwgMjEwMjAsIDIxMDI0LCAwLCAyMTAyOCwgMCwgMjEwMzIsIDIxMDM2LCAKLSAgICAyMTA0MCwgMjEwNDQsIDAsIDAsIDIxMDQ4LCAyMTA1MiwgMjEwNTYsIDIxMDYwLCAyMTA2NCwgMjEwNjgsIDIxMDcyLCAKLSAgICAyMTA3NiwgMjEwODAsIDIxMDg1LCAyMTA5MCwgMjEwOTUsIDIxMTAxLCAyMTEwNywgMjExMTIsIDAsIDIxMTE3LCAyMTEyMSwgCi0gICAgMjExMjUsIDIxMTI5LCAyMTEzMywgMjExMzcsIDIxMTQxLCAyMTE0NSwgMjExNDksIDIxMTUzLCAyMTE1NywgMjExNjEsIAotICAgIDIxMTY1LCAyMTE2OSwgMjExNzMsIDIxMTc3LCAyMTE4MSwgMjExODQsIDIxMTg4LCAyMTE5MiwgMjExOTYsIDIxMjAwLCAKLSAgICAyMTIwNCwgMjEyMDgsIDIxMjEyLCAyMTIxNiwgMjEyMjAsIDIxMjI0LCAyMTIyOCwgMjEyMzIsIDIxMjM2LCAyMTI0MCwgCi0gICAgMjEyNDQsIDIxMjQ4LCAyMTI1MiwgMjEyNTYsIDIxMjYwLCAyMTI2NCwgMjEyNjgsIDIxMjcyLCAyMTI3NiwgMjEyODAsIAotICAgIDIxMjg0LCAyMTI4OCwgMjEyOTIsIDIxMjk2LCAyMTMwMCwgMjEzMDQsIDIxMzA4LCAyMTMxMiwgMjEzMTYsIDIxMzIwLCAKLSAgICAyMTMyNCwgMjEzMjgsIDIxMzMyLCAyMTMzNiwgMjEzNDAsIDAsIDIxMzQ0LCAyMTM0OCwgMjEzNTIsIDIxMzU2LCAwLCAwLCAKLSAgICAyMTM2MCwgMjEzNjQsIDIxMzY4LCAyMTM3MiwgMjEzNzYsIDIxMzgwLCAyMTM4NCwgMjEzODgsIDIxMzkyLCAyMTM5NiwgCi0gICAgMjE0MDAsIDIxNDA0LCAyMTQwOCwgMjE0MTIsIDIxNDE2LCAyMTQyMCwgMjE0MjQsIDIxNDI4LCAyMTQzMiwgMjE0MzYsIAotICAgIDIxNDQwLCAyMTQ0NCwgMjE0NDgsIDIxNDUyLCAyMTQ1NiwgMjE0NjAsIDIxNDY0LCAyMTQ2OCwgMjE0NzIsIDIxNDc2LCAKLSAgICAyMTQ4MCwgMjE0ODQsIDIxNDg4LCAyMTQ5MiwgMjE0OTYsIDIxNTAwLCAyMTUwNCwgMjE1MDgsIDIxNTEyLCAyMTUxNiwgCi0gICAgMjE1MjAsIDIxNTI0LCAyMTUyOCwgMjE1MzIsIDIxNTM2LCAyMTU0MCwgMjE1NDQsIDIxNTQ4LCAyMTU1MiwgMjE1NTYsIAotICAgIDIxNTYwLCAyMTU2NCwgMjE1NjgsIDIxNTcyLCAyMTU3NiwgMjE1ODAsIDIxNTg0LCAyMTU4NywgMjE1OTEsIDIxNTk1LCAKLSAgICAyMTU5OSwgMjE2MDMsIDIxNjA3LCAyMTYxMSwgMjE2MTUsIDIxNjE5LCAyMTYyMywgMCwgMCwgMjE2MjcsIDIxNjM2LCAKLSAgICAyMTY0MiwgMjE2NDcsIDIxNjUxLCAyMTY1NCwgMjE2NTksIDIxNjYyLCAyMTY2NSwgMjE2NjgsIDIxNjczLCAyMTY3NywgCi0gICAgMjE2ODIsIDIxNjg1LCAyMTY4OCwgMjE2OTEsIDIxNjk0LCAyMTY5NywgMjE3MDAsIDIxNzAzLCAyMTcwNiwgMjE3MDksIAotICAgIDIxNzEzLCAyMTcxNywgMjE3MjEsIDIxNzI1LCAyMTcyOSwgMjE3MzMsIDIxNzM3LCAyMTc0MSwgMjE3NDUsIDIxNzQ5LCAwLCAKLSAgICAwLCAwLCAyMTc1NSwgMjE3NjEsIDIxNzY1LCAyMTc2OSwgMjE3NzMsIDIxNzc5LCAyMTc4MywgMjE3ODcsIDIxNzkxLCAKLSAgICAyMTc5NywgMjE4MDEsIDIxODA1LCAyMTgwOSwgMjE4MTUsIDIxODE5LCAyMTgyMywgMjE4MjcsIDIxODMzLCAyMTgzOSwgCi0gICAgMjE4NDUsIDIxODUzLCAyMTg1OSwgMjE4NjUsIDIxODcxLCAyMTg3NywgMjE4ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDIxODg5LCAKLSAgICAyMTg5MiwgMjE4OTUsIDIxODk4LCAyMTkwMSwgMjE5MDQsIDIxOTA4LCAyMTkxMiwgMjE5MTUsIDIxOTE5LCAyMTkyMywgCi0gICAgMjE5MjcsIDIxOTMxLCAyMTkzNSwgMjE5MzgsIDIxOTQyLCAyMTk0NiwgMjE5NTAsIDIxOTU0LCAyMTk1OCwgMjE5NjIsIAotICAgIDIxOTY2LCAyMTk3MCwgMjE5NzQsIDIxOTc4LCAyMTk4MiwgMjE5ODUsIDIxOTg5LCAyMTk5MywgMjE5OTcsIDIyMDAxLCAKLSAgICAyMjAwNCwgMjIwMDgsIDIyMDEyLCAyMjAxNiwgMjIwMjAsIDIyMDI0LCAyMjAyOCwgMjIwMzIsIDIyMDM2LCAyMjA0MCwgCi0gICAgMjIwNDQsIDIyMDQ4LCAyMjA1MiwgMjIwNTYsIDIyMDYwLCAyMjA2MywgMjIwNjcsIDIyMDcxLCAyMjA3NSwgMjIwNzksIAotICAgIDIyMDgzLCAyMjA4NywgMjIwOTEsIDIyMDk1LCAyMjA5OSwgMjIxMDMsIDIyMTA3LCAyMjExMSwgMjIxMTUsIDIyMTE5LCAKLSAgICAyMjEyMywgMjIxMjcsIDIyMTMxLCAyMjEzNSwgMjIxMzksIDIyMTQzLCAyMjE0NywgMjIxNTEsIDIyMTU1LCAyMjE1OSwgCi0gICAgMjIxNjMsIDIyMTY3LCAyMjE3MSwgMjIxNzUsIDIyMTc5LCAyMjE4MywgMjIxODcsIDIyMTkxLCAyMjE5NSwgMjIxOTgsIAotICAgIDIyMjAyLCAyMjIwNiwgMjIyMTAsIDIyMjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjIxOCwgCi0gICAgMjIyMjIsIDIyMjI1LCAyMjIyOSwgMjIyMzIsIDIyMjM2LCAyMjIzOSwgMjIyNDMsIDIyMjQ5LCAyMjI1NCwgMjIyNTgsIAotICAgIDIyMjYxLCAyMjI2NSwgMjIyNjksIDIyMjc0LCAyMjI3OCwgMjIyODMsIDIyMjg3LCAyMjI5MiwgMjIyOTYsIDIyMzAxLCAKLSAgICAyMjMwNSwgMjIzMTAsIDIyMzE2LCAyMjMyMCwgMjIzMjUsIDIyMzI5LCAyMjMzNCwgMjIzNDAsIDIyMzQ0LCAyMjM1MCwgCi0gICAgMjIzNTYsIDIyMzYwLCAyMjM2NSwgMjIzNzMsIDIyMzgxLCAyMjM4OCwgMjIzOTMsIDIyMzk4LCAyMjQwNywgMjI0MTQsIAotICAgIDIyNDIxLCAyMjQyNiwgMjI0MzIsIDIyNDM2LCAyMjQ0MCwgMjI0NDQsIDIyNDQ4LCAyMjQ1MiwgMjI0NTYsIDIyNDYwLCAKLSAgICAyMjQ2NCwgMjI0NjgsIDIyNDcyLCAyMjQ3OCwgMjI0ODMsIDIyNDg4LCAyMjQ5MSwgMjI0OTUsIDIyNDk5LCAyMjUwNCwgCi0gICAgMjI1MDgsIDIyNTEzLCAyMjUxNywgMjI1MjIsIDIyNTI2LCAyMjUzMSwgMjI1MzUsIDIyNTQwLCAyMjU0NCwgMjI1NDksIAotICAgIDIyNTUzLCAyMjU1OCwgMjI1NjQsIDIyNTY4LCAyMjU3MywgMjI1NzgsIDIyNTgyLCAyMjU4NiwgMjI1OTAsIDIyNTk0LCAKLSAgICAyMjU5NywgMjI2MDEsIDIyNjA3LCAyMjYxMiwgMjI2MTcsIDIyNjIxLCAyMjYyNSwgMjI2MjksIDIyNjM0LCAyMjYzOCwgCi0gICAgMjI2NDMsIDIyNjQ3LCAyMjY1MiwgMjI2NTUsIDIyNjU5LCAyMjY2MywgMjI2NjgsIDIyNjcyLCAyMjY3NywgMjI2ODEsIAotICAgIDIyNjg2LCAyMjY5MiwgMjI2OTYsIDIyNzAwLCAyMjcwNCwgMjI3MDgsIDIyNzEyLCAyMjcxNiwgMjI3MjAsIDIyNzI0LCAKLSAgICAyMjcyOCwgMjI3MzIsIDIyNzM2LCAyMjc0MiwgMjI3NDUsIDIyNzQ5LCAyMjc1MywgMjI3NTgsIDIyNzYyLCAyMjc2NywgCi0gICAgMjI3NzEsIDIyNzc2LCAyMjc4MCwgMjI3ODUsIDIyNzg5LCAyMjc5NCwgMjI3OTgsIDIyODAzLCAyMjgwNywgMjI4MTIsIAotICAgIDIyODE4LCAyMjgyMiwgMjI4MjYsIDIyODMyLCAyMjgzOCwgMjI4NDQsIDIyODUwLCAyMjg1NCwgMjI4NTgsIDIyODYyLCAKLSAgICAyMjg2NiwgMjI4NzAsIDIyODc0LCAyMjg4MCwgMjI4ODQsIDIyODg4LCAyMjg5MiwgMjI4OTcsIDIyOTAxLCAyMjkwNiwgCi0gICAgMjI5MTAsIDIyOTE1LCAyMjkxOSwgMjI5MjQsIDIyOTI4LCAyMjkzMywgMjI5MzcsIDIyOTQyLCAyMjk0NiwgMjI5NTEsIAotICAgIDIyOTU3LCAyMjk2MSwgMjI5NjcsIDIyOTcxLCAyMjk3NSwgMjI5NzksIDIyOTgzLCAyMjk4NywgMjI5OTEsIDIyOTk3LCAKLSAgICAyMzAwMCwgMjMwMDQsIDIzMDA4LCAyMzAxMywgMjMwMTcsIDIzMDIyLCAyMzAyNiwgMjMwMzEsIDIzMDM1LCAyMzA0MCwgCi0gICAgMjMwNDQsIDIzMDQ5LCAyMzA1MywgMjMwNTgsIDIzMDYyLCAyMzA2NywgMjMwNzMsIDIzMDc2LCAyMzA4MCwgMjMwODQsIAotICAgIDIzMDg5LCAyMzA5NCwgMjMwOTgsIDIzMTAyLCAyMzEwNiwgMjMxMTAsIDIzMTE0LCAyMzExOCwgMjMxMjQsIDIzMTI3LCAKLSAgICAyMzEzMSwgMjMxMzUsIDIzMTQwLCAyMzE0NCwgMjMxNDksIDIzMTUzLCAyMzE1OCwgMjMxNjQsIDIzMTY3LCAyMzE3MiwgCi0gICAgMjMxNzYsIDIzMTgwLCAyMzE4NCwgMjMxODgsIDIzMTkyLCAyMzE5NiwgMjMyMDAsIDIzMjA2LCAyMzIxMCwgMjMyMTQsIAotICAgIDIzMjE4LCAyMzIyMywgMjMyMjcsIDIzMjMyLCAyMzIzNiwgMjMyNDEsIDIzMjQ1LCAyMzI1MCwgMjMyNTQsIDIzMjU5LCAKLSAgICAyMzI2MywgMjMyNjgsIDIzMjcyLCAyMzI3NywgMjMyODAsIDIzMjg0LCAyMzI4OCwgMjMyOTIsIDIzMjk2LCAyMzMwMCwgCi0gICAgMjMzMDQsIDIzMzA4LCAyMzMxMiwgMjMzMTgsIDIzMzIyLCAyMzMyNiwgMjMzMzAsIDIzMzM1LCAyMzMzOSwgMjMzNDQsIAotICAgIDIzMzQ4LCAyMzM1MywgMjMzNTcsIDIzMzYyLCAyMzM2NiwgMjMzNzEsIDIzMzc1LCAyMzM4MCwgMjMzODQsIDIzMzg5LCAKLSAgICAyMzM5NSwgMjMzOTgsIDIzNDAzLCAyMzQwNywgMjM0MTIsIDIzNDE4LCAyMzQyNCwgMjM0MzAsIDIzNDM2LCAyMzQ0MiwgCi0gICAgMjM0NDgsIDIzNDU0LCAyMzQ1OCwgMjM0NjIsIDIzNDY2LCAyMzQ3MCwgMjM0NzQsIDIzNDc4LCAyMzQ4MiwgMjM0ODYsIAotICAgIDIzNDkxLCAyMzQ5NSwgMjM1MDAsIDIzNTA0LCAyMzUwOSwgMjM1MTMsIDIzNTE4LCAyMzUyMiwgMjM1MjcsIDIzNTMxLCAKLSAgICAyMzUzNiwgMjM1NDAsIDIzNTQ1LCAyMzU0OSwgMjM1NTMsIDIzNTU3LCAyMzU2MSwgMjM1NjUsIDIzNTY5LCAyMzU3MywgCi0gICAgMjM1NzksIDIzNTgyLCAyMzU4NiwgMjM1OTAsIDIzNTk1LCAyMzU5OSwgMjM2MDQsIDIzNjA4LCAyMzYxMywgMjM2MTcsIAotICAgIDIzNjIyLCAyMzYyNiwgMjM2MzEsIDIzNjM1LCAyMzY0MCwgMjM2NDQsIDIzNjQ5LCAyMzY1NSwgMjM2NTksIDIzNjY1LCAKLSAgICAyMzY3MCwgMjM2NzYsIDIzNjgwLCAyMzY4NiwgMjM2OTEsIDIzNjk1LCAyMzY5OSwgMjM3MDMsIDIzNzA3LCAyMzcxMSwgCi0gICAgMjM3MTYsIDIzNzE5LCAyMzcyMywgMjM3MjgsIDIzNzMyLCAyMzczNywgMjM3NDAsIDIzNzQ0LCAyMzc0OCwgMjM3NTIsIAotICAgIDIzNzU2LCAyMzc2MCwgMjM3NjQsIDIzNzY4LCAyMzc3MiwgMjM3NzYsIDIzNzgwLCAyMzc4NCwgMjM3ODksIDIzNzkzLCAKLSAgICAyMzc5NywgMjM4MDMsIDIzODA3LCAyMzgxMywgMjM4MTcsIDIzODIzLCAyMzgyNywgMjM4MzEsIDIzODM1LCAyMzgzOSwgCi0gICAgMjM4NDMsIDIzODQ4LCAyMzg1MiwgMjM4NTYsIDIzODYwLCAyMzg2NCwgMjM4NjgsIDIzODcyLCAyMzg3NiwgMjM4ODAsIAotICAgIDIzODg0LCAyMzg4OCwgMjM4OTQsIDIzOTAwLCAyMzkwNiwgMjM5MTIsIDIzOTE4LCAyMzkyMywgMjM5MjksIDIzOTM1LCAKLSAgICAyMzk0MSwgMjM5NDUsIDIzOTQ5LCAyMzk1MywgMjM5NTcsIDIzOTYxLCAyMzk2NSwgMjM5NjksIDIzOTczLCAyMzk3NywgCi0gICAgMjM5ODEsIDIzOTg1LCAyMzk4OSwgMjM5OTMsIDIzOTk4LCAyNDAwMywgMjQwMDgsIDI0MDEyLCAyNDAxNiwgMjQwMjAsIAotICAgIDI0MDI0LCAyNDAyOCwgMjQwMzIsIDI0MDM2LCAyNDA0MCwgMjQwNDQsIDI0MDQ4LCAyNDA1NCwgMjQwNjAsIDI0MDY2LCAKLSAgICAyNDA3MiwgMjQwNzgsIDI0MDg0LCAyNDA5MCwgMjQwOTYsIDI0MTAyLCAyNDEwNiwgMjQxMTAsIDI0MTE0LCAyNDExOCwgCi0gICAgMjQxMjIsIDI0MTI2LCAyNDEzMCwgMjQxMzYsIDI0MTQyLCAyNDE0OCwgMjQxNTQsIDI0MTYwLCAyNDE2NiwgMjQxNzIsIAotICAgIDI0MTc4LCAyNDE4NCwgMjQxODksIDI0MTk0LCAyNDE5OSwgMjQyMDQsIDI0MjEwLCAyNDIxNiwgMjQyMjIsIDI0MjI4LCAKLSAgICAyNDIzNCwgMjQyNDAsIDI0MjQ2LCAyNDI1MSwgMjQyNTcsIDI0MjYzLCAyNDI2OSwgMjQyNzQsIDI0MjgwLCAyNDI4NiwgCi0gICAgMjQyOTIsIDI0Mjk3LCAyNDMwMiwgMjQzMDcsIDI0MzEyLCAyNDMxNywgMjQzMjIsIDI0MzI3LCAyNDMzMiwgMjQzMzcsIAotICAgIDI0MzQyLCAyNDM0NywgMjQzNTIsIDI0MzU2LCAyNDM2MSwgMjQzNjYsIDI0MzcxLCAyNDM3NiwgMjQzODEsIDI0Mzg2LCAKLSAgICAyNDM5MSwgMjQzOTYsIDI0NDAxLCAyNDQwNiwgMjQ0MTEsIDI0NDE2LCAyNDQyMSwgMjQ0MjYsIDI0NDMxLCAyNDQzNiwgCi0gICAgMjQ0NDEsIDI0NDQ2LCAyNDQ1MSwgMjQ0NTYsIDI0NDYxLCAyNDQ2NiwgMjQ0NzEsIDI0NDc2LCAyNDQ4MSwgMjQ0ODYsIAotICAgIDI0NDkxLCAyNDQ5NiwgMjQ1MDEsIDI0NTA1LCAyNDUxMCwgMjQ1MTUsIDI0NTIwLCAyNDUyNSwgMjQ1MzAsIDI0NTM1LCAKLSAgICAyNDU0MCwgMjQ1NDUsIDI0NTUwLCAyNDU1NSwgMjQ1NjAsIDI0NTY1LCAyNDU3MCwgMjQ1NzUsIDI0NTgwLCAyNDU4NSwgCi0gICAgMjQ1OTAsIDI0NTk1LCAyNDYwMCwgMjQ2MDUsIDI0NjEwLCAyNDYxNSwgMjQ2MjAsIDI0NjI1LCAyNDYzMCwgMjQ2MzQsIAotICAgIDI0NjM5LCAyNDY0NCwgMjQ2NDksIDI0NjU0LCAyNDY1OSwgMjQ2NjMsIDI0NjY4LCAyNDY3MywgMjQ2NzgsIDI0NjgzLCAKLSAgICAyNDY4OCwgMjQ2OTIsIDI0Njk3LCAyNDcwMywgMjQ3MDgsIDI0NzEzLCAyNDcxOCwgMjQ3MjMsIDI0NzI5LCAyNDczNCwgCi0gICAgMjQ3MzksIDI0NzQ0LCAyNDc0OSwgMjQ3NTQsIDI0NzU5LCAyNDc2NCwgMjQ3NjksIDI0Nzc0LCAyNDc3OSwgMjQ3ODQsIAotICAgIDI0Nzg5LCAyNDc5NCwgMjQ3OTksIDI0ODA0LCAyNDgwOSwgMjQ4MTQsIDI0ODE5LCAyNDgyNCwgMjQ4MjksIDI0ODM0LCAKLSAgICAyNDgzOSwgMjQ4NDQsIDI0ODQ5LCAyNDg1NCwgMjQ4NTksIDI0ODY0LCAyNDg2OSwgMjQ4NzQsIDI0ODc5LCAyNDg4NCwgCi0gICAgMjQ4ODksIDI0ODk0LCAyNDg5OSwgMjQ5MDQsIDI0OTA5LCAyNDkxNCwgMjQ5MTksIDI0OTI0LCAyNDkyOSwgMjQ5MzQsIAotICAgIDI0OTM5LCAyNDk0NCwgMjQ5NDksIDI0OTU1LCAyNDk2MCwgMjQ5NjUsIDI0OTcwLCAyNDk3NSwgMjQ5ODAsIDI0OTg1LCAKLSAgICAyNDk5MCwgMjQ5OTUsIDI1MDAwLCAyNTAwNSwgMjUwMTAsIDI1MDE1LCAyNTAyMCwgMjUwMjUsIDI1MDMwLCAyNTAzNSwgCi0gICAgMjUwNDAsIDI1MDQ1LCAyNTA1MCwgMjUwNTUsIDI1MDYwLCAyNTA2NSwgMjUwNzAsIDI1MDc1LCAyNTA4MCwgMjUwODUsIAotICAgIDI1MDkwLCAyNTA5NSwgMjUxMDAsIDI1MTA1LCAyNTExMCwgMjUxMTUsIDI1MTIwLCAyNTEyNSwgMjUxMzAsIDI1MTM1LCAKLSAgICAyNTE0MCwgMjUxNDUsIDI1MTUxLCAyNTE1NSwgMjUxNTksIDI1MTYzLCAyNTE2NywgMjUxNzEsIDI1MTc1LCAyNTE3OSwgCi0gICAgMjUxODMsIDI1MTg5LCAyNTE5NSwgMjUyMDEsIDI1MjA3LCAyNTIxMywgMjUyMTksIDI1MjI1LCAyNTIzMiwgMjUyMzgsIAotICAgIDI1MjQzLCAyNTI0OCwgMjUyNTMsIDI1MjU4LCAyNTI2MywgMjUyNjgsIDI1MjczLCAyNTI3OCwgMjUyODMsIDI1Mjg4LCAKLSAgICAyNTI5MywgMjUyOTgsIDI1MzAzLCAyNTMwOCwgMjUzMTMsIDI1MzE4LCAyNTMyMywgMjUzMjgsIDI1MzMzLCAyNTMzOCwgCi0gICAgMjUzNDMsIDI1MzQ4LCAyNTM1MywgMjUzNTgsIDI1MzYzLCAyNTM2OCwgMjUzNzMsIDI1Mzc4LCAwLCAwLCAwLCAyNTM4NSwgCi0gICAgMjUzOTUsIDI1Mzk5LCAyNTQwNiwgMjU0MTAsIDI1NDE0LCAyNTQxOCwgMjU0MjYsIDI1NDMwLCAyNTQzNSwgMjU0NDAsIAotICAgIDI1NDQ1LCAyNTQ0OSwgMjU0NTQsIDI1NDU5LCAyNTQ2MiwgMjU0NjYsIDI1NDcwLCAyNTQ3OSwgMjU0ODMsIDI1NDg3LCAKLSAgICAyNTQ5MywgMjU0OTcsIDI1NTAxLCAyNTUwOSwgMjU1MTMsIDI1NTIxLCAyNTUyNywgMjU1MzMsIDI1NTM5LCAyNTU0NSwgCi0gICAgMjU1NTQsIDI1NTU5LCAyNTU2MywgMjU1NzIsIDI1NTc1LCAyNTU4MSwgMjU1ODUsIDI1NTkxLCAyNTU5NiwgMjU2MDIsIAotICAgIDI1NjEwLCAyNTYxNiwgMjU2MjEsIDI1NjI4LCAyNTYzMywgMjU2MzcsIDI1NjQxLCAyNTY1MSwgMjU2NTcsIDI1NjYxLCAKLSAgICAyNTY3MSwgMjU2NzcsIDI1NjgxLCAyNTY4NSwgMjU2OTIsIDI1Njk5LCAyNTcwNCwgMjU3MDksIDI1NzE4LCAyNTcyMiwgCi0gICAgMjU3MjYsIDI1NzMwLCAyNTczOCwgMjU3NDUsIDI1NzQ5LCAyNTc1MywgMjU3NTcsIDI1NzYxLCAyNTc2NSwgMjU3NjksIAotICAgIDI1NzczLCAyNTc3NywgMjU3ODEsIDI1Nzg1LCAyNTc4OSwgMjU3OTQsIDI1Nzk5LCAyNTgwNCwgMjU4MDgsIDI1ODEyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTgxNiwgMjU4MjAsIDI1ODI0LCAyNTgyOCwgCi0gICAgMjU4MzIsIDI1ODM3LCAyNTg0MiwgMjU4NDcsIDI1ODUyLCAyNTg1NiwgMjU4NjAsIDI1ODY1LCAyNTg2OSwgMCwgMjU4NzMsIAotICAgIDI1ODc4LCAyNTg4MywgMjU4ODgsIDI1ODkyLCAyNTg5NywgMjU5MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI1OTA3LCAyNTkxMSwgMjU5MTUsIDI1OTE5LCAyNTkyMywgMjU5MjgsIDI1OTMzLCAyNTkzOCwgMjU5NDMsIDI1OTQ3LCAKLSAgICAyNTk1MSwgMjU5NTYsIDI1OTYwLCAyNTk2NCwgMjU5NjgsIDI1OTczLCAyNTk3OCwgMjU5ODMsIDI1OTg3LCAyNTk5MiwgCi0gICAgMjU5OTcsIDI2MDAyLCAyNjAwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYwMTMsIDI2MDE3LCAyNjAyMSwgCi0gICAgMjYwMjUsIDI2MDI5LCAyNjAzNCwgMjYwMzksIDI2MDQ0LCAyNjA0OSwgMjYwNTMsIDI2MDU3LCAyNjA2MiwgMjYwNjYsIAotICAgIDI2MDcwLCAyNjA3NCwgMjYwNzksIDI2MDg0LCAyNjA4OSwgMjYwOTMsIDI2MDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNjEwMywgMjYxMDcsIDI2MTExLCAyNjExNSwgMjYxMTksIDI2MTI0LCAyNjEyOSwgMjYxMzQsIAotICAgIDI2MTM5LCAyNjE0MywgMjYxNDcsIDI2MTUyLCAyNjE1NiwgMCwgMjYxNjAsIDI2MTY1LCAyNjE3MCwgMCwgMjYxNzUsIAotICAgIDI2MTgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjE4NSwgMjYxODgsIDI2MTkyLCAyNjE5NiwgCi0gICAgMjYyMDAsIDI2MjA0LCAyNjIwOCwgMjYyMTIsIDI2MjE2LCAyNjIyMCwgMjYyMjQsIDI2MjI4LCAyNjIzMiwgMjYyMzYsIAotICAgIDI2MjQwLCAyNjI0NCwgMjYyNDgsIDI2MjUyLCAyNjI1NSwgMjYyNTksIDI2MjYzLCAyNjI2NywgMjYyNzEsIDI2Mjc1LCAKLSAgICAyNjI3OSwgMjYyODMsIDI2Mjg3LCAyNjI5MSwgMjYyOTUsIDI2Mjk5LCAyNjMwMywgMjYzMDcsIDI2MzExLCAyNjMxNCwgCi0gICAgMjYzMTgsIDI2MzIyLCAyNjMyOCwgMjYzMzQsIDI2MzQwLCAyNjM0NiwgMjYzNTIsIDI2MzU4LCAyNjM2NCwgMjYzNzAsIAotICAgIDI2Mzc2LCAyNjM4MiwgMjYzODgsIDI2Mzk0LCAyNjQwMCwgMjY0MDYsIDI2NDE1LCAyNjQyNCwgMjY0MzAsIDI2NDM2LCAKLSAgICAyNjQ0MiwgMjY0NDcsIDI2NDUxLCAyNjQ1NiwgMjY0NjEsIDI2NDY2LCAyNjQ3MCwgMjY0NzUsIDI2NDgwLCAyNjQ4NSwgCi0gICAgMjY0ODksIDI2NDk0LCAyNjQ5OCwgMjY1MDMsIDI2NTA4LCAyNjUxMywgMjY1MTgsIDI2NTIyLCAyNjUyNiwgMjY1MzAsIAotICAgIDI2NTM0LCAyNjUzOCwgMjY1NDIsIDI2NTQ2LCAyNjU1MCwgMjY1NTQsIDI2NTU4LCAyNjU2NCwgMjY1NjgsIDI2NTcyLCAKLSAgICAyNjU3NiwgMjY1ODAsIDI2NTg0LCAyNjU5MiwgMjY1OTgsIDI2NjAyLCAyNjYwOCwgMjY2MTIsIDI2NjE4LCAyNjYyMiwgMCwgCi0gICAgMCwgMjY2MjYsIDI2NjMwLCAyNjYzMywgMjY2MzYsIDI2NjM5LCAyNjY0MiwgMjY2NDUsIDI2NjQ4LCAyNjY1MSwgMjY2NTQsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2NjU3LCAyNjY2NSwgMjY2NzMsIDI2NjgxLCAyNjY4OSwgMjY2OTcsIDI2NzA1LCAyNjcxMywgCi0gICAgMjY3MjEsIDI2NzI5LCAwLCAwLCAwLCAwLCAwLCAwLCAyNjczNywgMjY3NDAsIDI2NzQzLCAyNjc0NiwgMjY3NTEsIDI2NzU0LCAKLSAgICAyNjc1OSwgMjY3NjYsIDI2Nzc0LCAyNjc3OSwgMjY3ODYsIDI2Nzg5LCAyNjc5NiwgMjY4MDMsIDI2ODEwLCAwLCAyNjgxNCwgCi0gICAgMjY4MTgsIDI2ODIxLCAyNjgyNCwgMjY4MjcsIDI2ODMwLCAyNjgzMywgMjY4MzYsIDI2ODM5LCAyNjg0MiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjY4NDUsIDI2ODQ4LCAyNjg1MSwgMjY4NTQsIDI2ODU3LCAyNjg2MCwgMjY4NjQsIDI2ODY4LCAyNjg3MiwgCi0gICAgMjY4NzUsIDI2ODc5LCAyNjg4MywgMjY4ODYsIDI2ODkwLCAyNjg5NCwgMjY4OTcsIDI2OTAxLCAyNjkwNSwgMjY5MDksIAotICAgIDI2OTEzLCAyNjkxNywgMjY5MjEsIDI2OTI1LCAyNjkyOCwgMjY5MzEsIDI2OTM1LCAyNjkzOSwgMjY5NDIsIDI2OTQ2LCAKLSAgICAyNjk1MCwgMjY5NTQsIDI2OTU4LCAyNjk2MiwgMjY5NjYsIDI2OTcwLCAyNjk3NCwgMjY5ODEsIDI2OTg2LCAyNjk5MSwgCi0gICAgMjY5OTYsIDI3MDAxLCAyNzAwNywgMjcwMTMsIDI3MDE5LCAyNzAyNSwgMjcwMzAsIDI3MDM2LCAyNzA0MiwgMjcwNDcsIAotICAgIDI3MDUzLCAyNzA1OSwgMjcwNjUsIDI3MDcxLCAyNzA3NywgMjcwODIsIDI3MDg4LCAyNzA5MywgMjcwOTksIDI3MTA1LCAKLSAgICAyNzExMSwgMjcxMTcsIDI3MTIzLCAyNzEyOCwgMjcxMzMsIDI3MTM5LCAyNzE0NSwgMjcxNTAsIDI3MTU2LCAyNzE2MSwgCi0gICAgMjcxNjcsIDI3MTcyLCAyNzE3NywgMjcxODMsIDI3MTg5LCAyNzE5NSwgMjcyMDEsIDI3MjA3LCAyNzIxMywgMjcyMTksIAotICAgIDI3MjI1LCAyNzIzMSwgMjcyMzcsIDI3MjQzLCAyNzI0OSwgMjcyNTQsIDI3MjU5LCAyNzI2NCwgMjcyNzAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI3Mjc2LCAyNzI4NSwgMjcyOTQsIDI3MzAyLCAyNzMxMCwgMjczMjAsIDI3MzI4LCAyNzMzNywgCi0gICAgMjczNDQsIDI3MzUxLCAyNzM1OCwgMjczNjYsIDI3Mzc0LCAyNzM4MiwgMjczOTAsIDI3Mzk4LCAyNzQwNiwgMjc0MTQsIAotICAgIDI3NDIyLCAyNzQyOSwgMjc0MzcsIDI3NDQ1LCAyNzQ1MywgMjc0NjEsIDI3NDY5LCAyNzQ3OSwgMjc0ODksIDI3NDk5LCAKLSAgICAyNzUwOSwgMjc1MTksIDI3NTI5LCAyNzUzOSwgMjc1NDksIDI3NTU5LCAyNzU2OSwgMjc1NzksIDI3NTg5LCAyNzU5OSwgCi0gICAgMjc2MDksIDI3NjE3LCAyNzYyNSwgMjc2MzUsIDI3NjQzLCAwLCAwLCAwLCAwLCAwLCAyNzY1MywgMjc2NTcsIDI3NjYxLCAKLSAgICAyNzY2NSwgMjc2NjksIDI3NjczLCAyNzY3NywgMjc2ODEsIDI3Njg1LCAyNzY4OSwgMjc2OTMsIDI3Njk3LCAyNzcwMSwgCi0gICAgMjc3MDUsIDI3NzA5LCAyNzcxMywgMjc3MTcsIDI3NzIxLCAyNzcyNSwgMjc3MjksIDI3NzMzLCAyNzczNywgMjc3NDEsIAotICAgIDI3NzQ1LCAyNzc1MSwgMjc3NTUsIDI3NzYxLCAyNzc2NSwgMjc3NzEsIDI3Nzc1LCAyNzc4MSwgMjc3ODUsIDI3Nzg5LCAKLSAgICAyNzc5MywgMjc3OTcsIDI3ODAxLCAyNzgwNSwgMjc4MTEsIDI3ODE3LCAyNzgyMywgMjc4MjksIDI3ODM0LCAyNzgzOSwgCi0gICAgMjc4NDQsIDI3ODUwLCAyNzg1NiwgMjc4NjIsIDI3ODY4LCAyNzg3NSwgMjc4ODEsIDI3ODg2LCAyNzg5MSwgMjc4OTUsIAotICAgIDI3ODk5LCAyNzkwMywgMjc5MDcsIDI3OTExLCAyNzkxNSwgMjc5MTksIDI3OTI1LCAyNzkzMSwgMjc5MzcsIDI3OTQyLCAKLSAgICAyNzk0OSwgMjc5NTQsIDI3OTU5LCAyNzk2NSwgMjc5NzAsIDI3OTc3LCAyNzk4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjc5OTAsIDI3OTk1LCAyNzk5OCwgMjgwMDIsIDI4MDA2LCAyODAxMCwgMjgwMTQsIDI4MDE4LCAyODAyMiwgCi0gICAgMjgwMjYsIDI4MDMwLCAyODAzNCwgMjgwMzgsIDI4MDQyLCAyODA0NiwgMjgwNTAsIDI4MDUzLCAyODA1NiwgMjgwNjAsIAotICAgIDI4MDY0LCAyODA2OCwgMjgwNzEsIDI4MDc0LCAyODA3NywgMjgwODEsIDI4MDg1LCAyODA4OSwgMjgwOTMsIDI4MDk3LCAwLCAKLSAgICAwLCAwLCAyODEwMCwgMjgxMDQsIDI4MTA4LCAyODExMiwgMjgxMTcsIDI4MTIyLCAyODEyNywgMjgxMzIsIDI4MTM2LCAKLSAgICAyODE0MCwgMjgxNDUsIDI4MTUwLCAwLCAwLCAwLCAwLCAyODE1NiwgMjgxNjAsIDI4MTY1LCAyODE3MCwgMjgxNzUsIAotICAgIDI4MTc5LCAyODE4MywgMjgxODcsIDI4MTkxLCAyODE5NiwgMjgyMDAsIDI4MjA0LCAwLCAwLCAwLCAwLCAyODIwOCwgMCwgMCwgCi0gICAgMCwgMjgyMTIsIDI4MjE2LCAyODIyMCwgMjgyMjQsIDI4MjI3LCAyODIzMCwgMjgyMzMsIDI4MjM2LCAyODIzOSwgMjgyNDIsIAotICAgIDI4MjQ1LCAyODI0OCwgMjgyNTEsIDI4MjU2LCAyODI2MiwgMjgyNjgsIDI4Mjc0LCAyODI4MCwgMjgyODUsIDI4MjkxLCAKLSAgICAyODI5NywgMjgzMDMsIDI4MzA4LCAyODMxNCwgMjgzMTksIDI4MzI1LCAyODMzMSwgMjgzMzYsIDI4MzQyLCAyODM0OCwgCi0gICAgMjgzNTQsIDI4MzU5LCAyODM2NCwgMjgzNjksIDI4Mzc1LCAyODM4MSwgMjgzODYsIDI4MzkyLCAyODM5NywgMjg0MDMsIAotICAgIDI4NDA4LCAyODQxNCwgMCwgMCwgMjg0MjAsIDI4NDI2LCAyODQzMiwgMjg0MzgsIDI4NDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyODQ1MCwgMjg0NTcsIDI4NDY0LCAyODQ3MCwgMjg0NzcsIDI4NDg0LCAyODQ5MCwgMjg0OTcsIAotICAgIDI4NTA0LCAyODUxMSwgMjg1MTgsIDI4NTI0LCAyODUzMSwgMjg1MzgsIDI4NTQ0LCAyODU1MSwgMjg1NTgsIDI4NTY0LCAKLSAgICAyODU3MSwgMjg1NzgsIDI4NTg0LCAyODU5MCwgMjg1OTcsIDI4NjAzLCAyODYwOSwgMjg2MTYsIDI4NjIyLCAyODYyOSwgCi0gICAgMjg2MzYsIDI4NjQzLCAyODY1MCwgMjg2NTcsIDI4NjY0LCAyODY3MCwgMjg2NzcsIDI4Njg0LCAyODY5MCwgMjg2OTcsIAotICAgIDI4NzA0LCAyODcxMSwgMjg3MTgsIDI4NzI1LCAyODczMiwgMjg3MzksIDAsIDAsIDAsIDAsIDI4NzQ2LCAyODc1NCwgCi0gICAgMjg3NjEsIDI4NzY4LCAyODc3NCwgMjg3ODEsIDI4Nzg3LCAyODc5NCwgMjg4MDAsIDI4ODA3LCAyODgxNCwgMjg4MjEsIAotICAgIDI4ODI4LCAyODgzNSwgMjg4NDIsIDI4ODQ5LCAyODg1NiwgMjg4NjMsIDI4ODcwLCAyODg3NywgMjg4ODMsIDI4ODg5LCAKLSAgICAyODg5NiwgMjg5MDMsIDI4OTEwLCAyODkxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjg5MjIsIDI4OTI4LCAyODkzMywgMjg5MzgsIAotICAgIDI4OTQzLCAyODk0OCwgMjg5NTMsIDI4OTU4LCAyODk2MywgMjg5NjgsIDI4OTczLCAwLCAwLCAwLCAyODk3OSwgMjg5ODUsIAotICAgIDI4OTkxLCAyODk5NSwgMjkwMDEsIDI5MDA3LCAyOTAxMywgMjkwMTksIDI5MDI1LCAyOTAzMSwgMjkwMzcsIDI5MDQzLCAKLSAgICAyOTA0OSwgMjkwNTUsIDI5MDYxLCAyOTA2NywgMjkwNzMsIDI5MDc5LCAyOTA4NSwgMjkwODksIDI5MDk1LCAyOTEwMSwgCi0gICAgMjkxMDcsIDI5MTEzLCAyOTExOSwgMjkxMjUsIDI5MTMxLCAyOTEzNywgMjkxNDMsIDI5MTQ5LCAyOTE1NSwgMjkxNjEsIAotICAgIDI5MTY3LCAyOTE3MywgMjkxNzksIDI5MTgzLCAyOTE4OCwgMjkxOTMsIDI5MTk4LCAyOTIwMiwgMjkyMDcsIDI5MjExLCAKLSAgICAyOTIxNiwgMjkyMjEsIDI5MjI2LCAyOTIzMCwgMjkyMzUsIDI5MjQwLCAyOTI0NSwgMjkyNTAsIDI5MjU1LCAyOTI1OSwgCi0gICAgMjkyNjMsIDI5MjY4LCAyOTI3MywgMjkyNzgsIDI5MjgyLCAyOTI4NiwgMjkyOTEsIDI5Mjk2LCAyOTMwMSwgMjkzMDYsIDAsIAotICAgIDAsIDI5MzEyLCAyOTMxNiwgMjkzMjMsIDI5MzI4LCAyOTMzNCwgMjkzNDAsIDI5MzQ1LCAyOTM1MSwgMjkzNTcsIDI5MzYyLCAKLSAgICAyOTM2OCwgMjkzNzQsIDI5MzgwLCAyOTM4NiwgMjkzOTIsIDI5Mzk3LCAyOTQwMiwgMjk0MDgsIDI5NDEzLCAyOTQxOSwgCi0gICAgMjk0MjQsIDI5NDMwLCAyOTQzNiwgMjk0NDIsIDI5NDQ4LCAyOTQ1MiwgMjk0NTcsIDI5NDYyLCAyOTQ2OCwgMjk0NzQsIAotICAgIDI5NDc5LCAyOTQ4NSwgMjk0OTEsIDI5NDk1LCAyOTUwMCwgMjk1MDUsIDI5NTA5LCAyOTUxNCwgMjk1MTksIDI5NTI0LCAKLSAgICAyOTUyOSwgMjk1MzUsIDI5NTQxLCAyOTU0NywgMjk1NTIsIDI5NTU3LCAyOTU2MSwgMjk1NjYsIDI5NTcwLCAyOTU3NSwgCi0gICAgMjk1NzksIDI5NTg0LCAyOTU4OSwgMjk1OTQsIDI5NTk5LCAyOTYwNiwgMjk2MTMsIDI5NjIxLCAyOTYzMiwgMjk2NDEsIAotICAgIDI5NjQ5LCAyOTY1NiwgMjk2NjcsIDI5NjczLCAyOTY4MCwgMCwgMjk2ODcsIDI5NjkyLCAyOTY5NywgMjk3MDUsIDI5NzExLCAKLSAgICAyOTcxOSwgMjk3MjQsIDI5NzMwLCAyOTczNiwgMjk3NDIsIDI5NzQ3LCAyOTc1MywgMjk3NTgsIDI5NzY1LCAyOTc3MSwgCi0gICAgMjk3NzYsIDI5NzgyLCAyOTc4OCwgMjk3OTQsIDI5ODAxLCAyOTgwOCwgMjk4MTUsIDI5ODIwLCAyOTgyNSwgMjk4MzIsIAotICAgIDI5ODM5LCAyOTg0NiwgMjk4NTMsIDI5ODYwLCAwLCAwLCAyOTg2NywgMjk4NzQsIDI5ODgxLCAyOTg4NywgMjk4OTMsIAotICAgIDI5ODk5LCAyOTkwNSwgMjk5MTEsIDI5OTE3LCAyOTkyMywgMjk5MjksIDAsIDAsIDAsIDAsIDAsIDAsIDI5OTM1LCAyOTk0MSwgCi0gICAgMjk5NDYsIDI5OTUxLCAyOTk1NiwgMjk5NjEsIDI5OTY2LCAyOTk3MSwgMjk5NzYsIDI5OTgxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyOTk4NiwgMjk5OTEsIDI5OTk2LCAzMDAwMSwgMzAwMDYsIDMwMDExLCAzMDAxNiwgMzAwMjUsIDMwMDMyLCAzMDAzNywgCi0gICAgMzAwNDIsIDMwMDQ3LCAzMDA1MiwgMzAwNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMDYyLCAzMDA2OCwgCi0gICAgMzAwNzQsIDMwMDc4LCAzMDA4MiwgMzAwODYsIDMwMDkwLCAzMDA5NiwgMzAxMDAsIDMwMTA2LCAzMDExMCwgMzAxMTYsIAotICAgIDMwMTIyLCAzMDEzMCwgMzAxMzYsIDMwMTQ0LCAzMDE0OCwgMzAxNTIsIDMwMTU2LCAzMDE2MiwgMzAxNjUsIDMwMTcxLCAKLSAgICAzMDE3NSwgMzAxODEsIDMwMTg1LCAzMDE4OSwgMzAxOTUsIDMwMTk5LCAzMDIwNSwgMzAyMDksIDMwMjE1LCAzMDIyMywgCi0gICAgMzAyMzEsIDMwMjM5LCAzMDI0NSwgMzAyNDksIDMwMjU1LCAzMDI1OSwgMzAyNjUsIDMwMjY4LCAzMDI3MSwgMzAyNzcsIAotICAgIDMwMjgxLCAzMDI4NywgMzAyOTAsIDMwMjkzLCAzMDI5NiwgMzAzMDAsIDMwMzA0LCAzMDMxMCwgMzAzMTYsIDMwMzIwLCAKLSAgICAzMDMyMywgMzAzMjcsIDMwMzMyLCAzMDMzNywgMzAzNDQsIDMwMzQ5LCAzMDM1NiwgMzAzNjMsIDMwMzcyLCAzMDM3OSwgCi0gICAgMzAzODgsIDMwMzkzLCAzMDQwMCwgMzA0MDcsIDMwNDE2LCAzMDQyMSwgMzA0MjgsIDMwNDMzLCAzMDQzOSwgMzA0NDUsIAotICAgIDMwNDUxLCAzMDQ1NywgMzA0NjMsIDMwNDY5LCAwLCAwLCAwLCAwLCAzMDQ3NSwgMzA0NzksIDMwNDgyLCAzMDQ4NSwgCi0gICAgMzA0ODgsIDMwNDkxLCAzMDQ5NCwgMzA0OTcsIDMwNTAwLCAzMDUwMywgMzA1MDYsIDMwNTA5LCAzMDUxMiwgMzA1MTUsIAotICAgIDMwNTIwLCAzMDUyNSwgMzA1MzAsIDMwNTMzLCAzMDUzOCwgMzA1NDMsIDMwNTQ4LCAzMDU1MywgMzA1NjAsIDMwNTY1LCAKLSAgICAzMDU3MCwgMzA1NzUsIDMwNTgwLCAzMDU4NywgMzA1OTMsIDMwNTk5LCAzMDYwNSwgMzA2MTEsIDMwNjE3LCAzMDYyNiwgCi0gICAgMzA2MzUsIDMwNjQxLCAzMDY0NywgMzA2NTYsIDMwNjY1LCAzMDY3NCwgMzA2ODMsIDMwNjkyLCAzMDcwMSwgMzA3MTAsIAotICAgIDMwNzE5LCAwLCAwLCAwLCAzMDcyOCwgMzA3MzMsIDMwNzM4LCAzMDc0MywgMzA3NDcsIDMwNzUxLCAzMDc1NSwgMzA3NjAsIAotICAgIDMwNzY0LCAzMDc2OCwgMzA3NzMsIDMwNzc3LCAzMDc4MiwgMzA3ODcsIDMwNzkyLCAzMDc5NywgMzA4MDIsIDMwODA3LCAKLSAgICAzMDgxMiwgMzA4MTcsIDMwODIyLCAzMDgyNiwgMzA4MzAsIDMwODM1LCAzMDg0MCwgMzA4NDUsIDMwODQ5LCAzMDg1MywgCi0gICAgMzA4NTcsIDMwODYyLCAzMDg2NywgMzA4NzIsIDMwODc3LCAzMDg4MSwgMzA4ODgsIDMwODk1LCAzMDkwMiwgMzA5MDgsIAotICAgIDMwOTE0LCAzMDkyMCwgMzA5MjYsIDMwOTMyLCAzMDkzOCwgMCwgMCwgMCwgMzA5NDMsIDMwOTQ4LCAzMDk1MywgMzA5NTgsIAotICAgIDMwOTYyLCAzMDk2NiwgMzA5NzAsIDMwOTc0LCAzMDk3OCwgMzA5ODIsIDMwOTg2LCAzMDk5MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzA5OTQsIDMwOTk4LCAzMTAwNCwgMzEwMDgsIDMxMDE0LCAzMTAyMCwgMzEwMjUsIDMxMDMyLCAzMTAzNiwgMzEwNDIsIAotICAgIDMxMDQ2LCAzMTA1MiwgMzEwNTcsIDMxMDY0LCAzMTA3MSwgMzEwNzYsIDMxMDgzLCAzMTA4OCwgMzEwOTMsIDMxMDk3LCAKLSAgICAzMTEwMywgMzExMDcsIDMxMTEzLCAzMTEyMCwgMzExMjcsIDMxMTMyLCAzMTEzOSwgMzExNDYsIDMxMTUwLCAzMTE1NiwgCi0gICAgMzExNjEsIDMxMTY2LCAzMTE3MywgMzExNzgsIDMxMTgzLCAzMTE4OCwgMzExOTMsIDMxMTk3LCAzMTIwMSwgMzEyMDYsIAotICAgIDMxMjExLCAzMTIxOCwgMzEyMjQsIDMxMjI5LCAzMTIzNiwgMzEyNDEsIDMxMjQ4LCAzMTI1MywgMzEyNjMsIDMxMjcwLCAKLSAgICAzMTI3NywgMzEyODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjg1LCAzMTI5NCwgMzEzMDEsIDMxMzA4LCAzMTMxNSwgCi0gICAgMzEzMTgsIDMxMzIyLCAzMTMyNiwgMzEzMzAsIDMxMzM0LCAzMTMzOCwgMzEzNDIsIDMxMzQ2LCAzMTM1MCwgMzEzNTQsIAotICAgIDMxMzU4LCAzMTM2MiwgMzEzNjYsIDMxMzY5LCAzMTM3MiwgMzEzNzYsIDMxMzgwLCAzMTM4NCwgMzEzODgsIDMxMzkyLCAKLSAgICAzMTM5NiwgMzEzOTksIDMxNDAzLCAzMTQwNywgMzE0MTEsIDMxNDE1LCAzMTQxOCwgMzE0MjEsIDMxNDI1LCAzMTQyOCwgCi0gICAgMzE0MzIsIDMxNDM2LCAzMTQ0MCwgMzE0NDQsIDMxNDQ4LCAzMTQ1MSwgMzE0NTYsIDMxNDYxLCAzMTQ2NiwgMzE0NzAsIAotICAgIDMxNDc0LCAzMTQ3OSwgMzE0ODMsIDMxNDg4LCAzMTQ5MiwgMzE0OTgsIDMxNTAzLCAzMTUwOCwgMzE1MTMsIDMxNTE5LCAKLSAgICAzMTUyNCwgMzE1MzAsIDMxNTM2LCAzMTU0MiwgMzE1NDYsIDAsIDAsIDAsIDMxNTUwLCAzMTU1NSwgMzE1NjQsIDMxNTY5LCAKLSAgICAzMTU3NiwgMzE1ODEsIDMxNTg1LCAzMTU4OCwgMzE1OTEsIDMxNTk0LCAzMTU5NywgMzE2MDAsIDMxNjAzLCAzMTYwNiwgCi0gICAgMzE2MDksIDAsIDAsIDAsIDMxNjEyLCAzMTYxNiwgMzE2MjAsIDMxNjI0LCAzMTYzMSwgMzE2MzcsIDMxNjQzLCAzMTY0OSwgCi0gICAgMzE2NTUsIDMxNjYxLCAzMTY2NywgMzE2NzMsIDMxNjc5LCAzMTY4NSwgMzE2OTIsIDMxNjk5LCAzMTcwNiwgMzE3MTMsIAotICAgIDMxNzIwLCAzMTcyNywgMzE3MzQsIDMxNzQxLCAzMTc0OCwgMzE3NTUsIDMxNzYyLCAzMTc2OSwgMzE3NzYsIDMxNzgzLCAKLSAgICAzMTc5MCwgMzE3OTcsIDMxODA0LCAzMTgxMSwgMzE4MTgsIDMxODI1LCAzMTgzMiwgMzE4MzksIDMxODQ2LCAzMTg1MywgCi0gICAgMzE4NjAsIDMxODY3LCAzMTg3NCwgMzE4ODEsIDMxODg4LCAzMTg5NSwgMzE5MDMsIDMxOTExLCAzMTkxOSwgMzE5MjUsIAotICAgIDMxOTMxLCAzMTkzNywgMzE5NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOTU0LCAzMTk1OSwgMzE5NjQsIDMxOTY5LCAKLSAgICAzMTk3NCwgMzE5ODMsIDMxOTk0LCAzMjAwMywgMzIwMTQsIDMyMDIwLCAzMjAzMywgMzIwMzksIDMyMDQ2LCAzMjA1MywgCi0gICAgMzIwNTgsIDMyMDY0LCAzMjA3MCwgMzIwODEsIDMyMDkwLCAzMjA5NywgMzIxMDQsIDMyMTEzLCAzMjEyMCwgMzIxMjksIAotICAgIDMyMTM5LCAzMjE0OSwgMzIxNTYsIDMyMTYzLCAzMjE3MCwgMzIxODAsIDMyMTg1LCAzMjE5MywgMzIxOTksIDMyMjA3LCAKLSAgICAzMjIxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyMjEsIDMyMjI2LCAzMjIzMiwgMzIyMzksIAotICAgIDMyMjQ3LCAzMjI1MywgMzIyNTksIDMyMjY1LCAzMjI3MCwgMzIyNzgsIDMyMjg0LCAzMjI5MCwgMzIyOTYsIDMyMzA0LCAKLSAgICAzMjMwOSwgMzIzMTYsIDMyMzIxLCAzMjMyOCwgMzIzMzQsIDMyMzQyLCAzMjM1MCwgMzIzNTcsIDMyMzYzLCAzMjM3MCwgCi0gICAgMzIzNzcsIDMyMzgzLCAzMjM5MCwgMzIzOTcsIDMyNDAzLCAzMjQwOCwgMzI0MTQsIDMyNDIyLCAzMjQzMCwgMzI0MzYsIAotICAgIDMyNDQyLCAzMjQ0OCwgMzI0NTQsIDMyNDYyLCAzMjQ2NiwgMzI0NzIsIDMyNDc4LCAzMjQ4NCwgMzI0OTAsIDMyNDk2LCAKLSAgICAzMjUwMiwgMzI1MDYsIDMyNTExLCAzMjUxNiwgMzI1MjMsIDMyNTI4LCAzMjUzMiwgMzI1MzgsIDMyNTQzLCAzMjU0OCwgCi0gICAgMzI1NTIsIDMyNTU3LCAzMjU2MiwgMzI1NjYsIDMyNTcwLCAzMjU3NCwgMzI1ODAsIDMyNTg0LCAzMjU4OSwgMzI1OTQsIAotICAgIDMyNTk4LCAzMjYwMywgMzI2MDcsIDMyNjEyLCAzMjYxNiwgMzI2MjIsIDMyNjI3LCAzMjYzNCwgMzI2MzksIDMyNjQ0LCAKLSAgICAzMjY0OCwgMzI2NTMsIDMyNjU5LCAzMjY2NywgMzI2NzIsIDMyNjc4LCAzMjY4MywgMzI2ODcsIDMyNjkyLCAzMjY5NiwgCi0gICAgMzI3MDIsIDMyNzA5LCAzMjcxNiwgMzI3MjEsIDMyNzI2LCAzMjczMCwgMzI3MzYsIDMyNzQyLCAzMjc0NywgMzI3NTIsIAotICAgIDMyNzU3LCAzMjc2MywgMzI3NjgsIDMyNzc0LCAzMjc3OSwgMzI3ODUsIDMyNzkxLCAzMjc5NywgMzI4MDQsIDMyODExLCAKLSAgICAzMjgxOCwgMzI4MjUsIDMyODMyLCAzMjgzOSwgMzI4NDQsIDMyODUzLCAzMjg2MywgMzI4NzMsIDMyODgzLCAzMjg5MywgCi0gICAgMzI5MDMsIDMyOTEzLCAzMjkyNiwgMzI5MzYsIDMyOTQ2LCAzMjk1NiwgMzI5NjMsIDMyOTY4LCAzMjk3NSwgMzI5ODMsIAotICAgIDMyOTkxLCAzMjk5OCwgMzMwMDUsIDMzMDEyLCAzMzAxOSwgMzMwMjcsIDMzMDM2LCAzMzA0NSwgMzMwNTQsIDMzMDYzLCAKLSAgICAzMzA3MiwgMzMwODEsIDMzMDkwLCAzMzA5OSwgMzMxMDgsIDMzMTE3LCAzMzEyNiwgMzMxMzUsIDMzMTQ0LCAzMzE1MywgCi0gICAgMzMxNjEsIDMzMTcwLCAzMzE4MSwgMzMxODksIDMzMTk5LCAzMzIxMSwgMzMyMjAsIDMzMjI5LCAzMzIzOSwgMzMyNDgsIAotICAgIDMzMjU2LCAzMzI2NSwgMzMyNzIsIDMzMjc3LCAzMzI4NSwgMzMyOTAsIDMzMjk4LCAzMzMwMywgMzMzMTIsIDMzMzE4LCAKLSAgICAzMzMyNSwgMzMzMzIsIDMzMzM3LCAzMzM0MiwgMzMzNTAsIDMzMzU4LCAzMzM2NywgMzMzNzYsIDMzMzgxLCAzMzM4OCwgCi0gICAgMzMzOTksIDMzNDA3LCAzMzQxNiwgMzM0MjEsIDMzNDI3LCAzMzQzMiwgMzM0MzksIDMzNDQ0LCAzMzQ1MywgMzM0NTgsIAotICAgIDMzNDYzLCAzMzQ2OCwgMzM0NzUsIDMzNDgyLCAzMzQ4NywgMzM0OTYsIDMzNTA0LCAzMzUwOSwgMzM1MTQsIDMzNTIxLCAKLSAgICAzMzUyOCwgMzM1MzIsIDMzNTM2LCAzMzUzOSwgMzM1NDIsIDMzNTQ1LCAzMzU0OCwgMzM1NTEsIDMzNTU0LCAzMzU2MSwgCi0gICAgMzM1NjQsIDMzNTY3LCAzMzU3MiwgMzM1NzYsIDMzNTgwLCAzMzU4NCwgMzM1ODgsIDMzNTkyLCAzMzYwMiwgMzM2MDgsIAotICAgIDMzNjE0LCAzMzYyMCwgMzM2MjgsIDMzNjM2LCAzMzY0MiwgMzM2NDgsIDMzNjU1LCAzMzY2MSwgMzM2NjYsIDMzNjcyLCAKLSAgICAzMzY3OCwgMzM2ODMsIDMzNjg5LCAzMzY5NSwgMzM3MDMsIDMzNzA4LCAzMzcxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzM3MjAsIDMzNzI3LCAzMzczNCwgMzM3MzksIDMzNzQ4LCAKLSAgICAzMzc1NiwgMzM3NjQsIDMzNzcxLCAzMzc3OCwgMzM3ODUsIDMzNzkyLCAzMzgwMCwgMzM4MDgsIDMzODE4LCAzMzgyOCwgCi0gICAgMzM4MzYsIDMzODQ0LCAzMzg1MiwgMzM4NjAsIDMzODY5LCAzMzg3OCwgMzM4ODYsIDMzODk0LCAzMzkwMywgMzM5MTIsIAotICAgIDMzOTIyLCAzMzkzMiwgMzM5NDEsIDMzOTUwLCAzMzk1OCwgMzM5NjYsIDMzOTc0LCAzMzk4MiwgMzM5OTIsIDM0MDAyLCAKLSAgICAzNDAxMCwgMzQwMTgsIDM0MDI2LCAzNDAzNCwgMzQwNDIsIDM0MDUwLCAzNDA1OCwgMzQwNjYsIDM0MDc0LCAzNDA4MiwgCi0gICAgMzQwOTAsIDM0MDk4LCAzNDEwNywgMzQxMTYsIDM0MTI1LCAzNDEzNCwgMzQxNDQsIDM0MTU0LCAzNDE2MSwgMzQxNjgsIAotICAgIDM0MTc2LCAzNDE4NCwgMzQxOTMsIDM0MjAyLCAzNDIxMCwgMzQyMTgsIDM0MjMwLCAzNDI0MiwgMzQyNTEsIDM0MjYwLCAKLSAgICAzNDI2OSwgMzQyNzgsIDM0Mjg1LCAzNDI5MiwgMzQzMDAsIDM0MzA4LCAzNDMxNiwgMzQzMjQsIDM0MzMyLCAzNDM0MCwgCi0gICAgMzQzNDgsIDM0MzU2LCAzNDM2NSwgMzQzNzQsIDM0MzgzLCAzNDM5MiwgMzQ0MDEsIDM0NDEwLCAzNDQyMCwgMzQ0MzAsIAotICAgIDM0NDQwLCAzNDQ1MCwgMzQ0NTksIDM0NDY4LCAzNDQ3NSwgMzQ0ODIsIDM0NDkwLCAzNDQ5OCwgMzQ1MDYsIDM0NTE0LCAKLSAgICAzNDUyMiwgMzQ1MzAsIDM0NTQyLCAzNDU1NCwgMzQ1NjMsIDM0NTcyLCAzNDU4MCwgMzQ1ODgsIDM0NTk2LCAzNDYwNCwgCi0gICAgMzQ2MTUsIDM0NjI2LCAzNDYzNywgMzQ2NDgsIDM0NjYwLCAzNDY3MiwgMzQ2ODAsIDM0Njg4LCAzNDY5NiwgMzQ3MDQsIAotICAgIDM0NzEzLCAzNDcyMiwgMzQ3MzEsIDM0NzQwLCAzNDc0OCwgMzQ3NTYsIDM0NzY0LCAzNDc3MiwgMzQ3ODAsIDM0Nzg4LCAKLSAgICAzNDc5NywgMzQ4MDYsIDM0ODE2LCAzNDgyNiwgMzQ4MzQsIDM0ODQyLCAzNDg1MCwgMzQ4NTgsIDM0ODY2LCAzNDg3NCwgCi0gICAgMzQ4ODEsIDM0ODg4LCAzNDg5NiwgMzQ5MDQsIDM0OTEyLCAzNDkyMCwgMzQ5MjgsIDM0OTM2LCAzNDk0NCwgMzQ5NTIsIAotICAgIDM0OTYwLCAzNDk2OCwgMzQ5NzYsIDM0OTg0LCAzNDk5MiwgMzUwMDAsIDM1MDA4LCAzNTAxNiwgMzUwMjUsIDM1MDM0LCAKLSAgICAzNTA0MywgMzUwNTEsIDM1MDYwLCAzNTA2OSwgMzUwNzgsIDM1MDg3LCAzNTA5NywgMzUxMDYsIDM1MTEyLCAzNTExNywgCi0gICAgMzUxMjQsIDM1MTMxLCAzNTEzOSwgMzUxNDcsIDM1MTU2LCAzNTE2NSwgMzUxNzUsIDM1MTg1LCAzNTE5NiwgMzUyMDcsIAotICAgIDM1MjE3LCAzNTIyNywgMzUyMzcsIDM1MjQ3LCAzNTI1NiwgMzUyNjUsIDM1Mjc1LCAzNTI4NSwgMzUyOTYsIDM1MzA3LCAKLSAgICAzNTMxNywgMzUzMjcsIDM1MzM3LCAzNTM0NywgMzUzNTQsIDM1MzYxLCAzNTM2OSwgMzUzNzcsIDM1Mzg0LCAzNTM5MSwgCi0gICAgMzU0MDAsIDM1NDA5LCAzNTQxOSwgMzU0MjksIDM1NDQwLCAzNTQ1MSwgMzU0NjEsIDM1NDcxLCAzNTQ4MSwgMzU0OTEsIAotICAgIDM1NTAwLCAzNTUwOSwgMzU1MTcsIDM1NTI1LCAzNTUzMiwgMzU1MzksIDM1NTQ3LCAzNTU1NSwgMzU1NjQsIDM1NTczLCAKLSAgICAzNTU4MywgMzU1OTMsIDM1NjA0LCAzNTYxNSwgMzU2MjUsIDM1NjM1LCAzNTY0NSwgMzU2NTUsIDM1NjY0LCAzNTY3MywgCi0gICAgMzU2ODMsIDM1NjkzLCAzNTcwNCwgMzU3MTUsIDM1NzI1LCAzNTczNSwgMzU3NDUsIDM1NzU1LCAzNTc2MiwgMzU3NjksIAotICAgIDM1Nzc3LCAzNTc4NSwgMzU3OTQsIDM1ODAzLCAzNTgxMywgMzU4MjMsIDM1ODM0LCAzNTg0NSwgMzU4NTUsIDM1ODY1LCAKLSAgICAzNTg3NSwgMzU4ODUsIDM1ODkzLCAzNTkwMSwgMzU5MDksIDM1OTE3LCAzNTkyNiwgMzU5MzUsIDM1OTQzLCAzNTk1MSwgCi0gICAgMzU5NTgsIDM1OTY1LCAzNTk3MiwgMzU5NzksIDM1OTg3LCAzNTk5NSwgMzYwMDMsIDM2MDExLCAzNjAyMiwgMzYwMzIsIAotICAgIDM2MDQzLCAzNjA1MywgMzYwNjQsIDM2MDc0LCAzNjA4MiwgMzYwOTAsIDM2MTAxLCAzNjExMSwgMzYxMjIsIDM2MTMyLCAKLSAgICAzNjE0MywgMzYxNTMsIDM2MTYxLCAzNjE2OSwgMzYxODAsIDM2MTkwLCAzNjIwMSwgMCwgMCwgMzYyMTEsIDM2MjE5LCAKLSAgICAzNjIyNywgMzYyMzgsIDM2MjQ4LCAzNjI1OSwgMCwgMCwgMzYyNjksIDM2Mjc3LCAzNjI4NSwgMzYyOTYsIDM2MzA2LCAKLSAgICAzNjMxNywgMzYzMjcsIDM2MzM4LCAzNjM0OCwgMzYzNTYsIDM2MzY0LCAzNjM3NSwgMzYzODUsIDM2Mzk2LCAzNjQwNiwgCi0gICAgMzY0MTcsIDM2NDI3LCAzNjQzNSwgMzY0NDMsIDM2NDU0LCAzNjQ2NCwgMzY0NzUsIDM2NDg1LCAzNjQ5NiwgMzY1MDYsIAotICAgIDM2NTE0LCAzNjUyMiwgMzY1MzMsIDM2NTQzLCAzNjU1NCwgMzY1NjQsIDM2NTc1LCAzNjU4NSwgMzY1OTMsIDM2NjAxLCAKLSAgICAzNjYxMiwgMzY2MjIsIDM2NjMzLCAwLCAwLCAzNjY0MywgMzY2NTEsIDM2NjU5LCAzNjY3MCwgMzY2ODAsIDM2NjkxLCAwLCAKLSAgICAwLCAzNjcwMSwgMzY3MDksIDM2NzE3LCAzNjcyOCwgMzY3MzgsIDM2NzQ5LCAzNjc1OSwgMzY3NzAsIDAsIDM2NzgwLCAwLCAKLSAgICAzNjc4OCwgMCwgMzY3OTgsIDAsIDM2ODA4LCAzNjgxOCwgMzY4MjYsIDM2ODM0LCAzNjg0NSwgMzY4NTUsIDM2ODY2LCAKLSAgICAzNjg3NiwgMzY4ODcsIDM2ODk3LCAzNjkwNSwgMzY5MTMsIDM2OTI0LCAzNjkzNCwgMzY5NDUsIDM2OTU1LCAzNjk2NiwgCi0gICAgMzY5NzYsIDM2OTg0LCAzNjk5MiwgMzcwMDAsIDM3MDA4LCAzNzAxNiwgMzcwMjQsIDM3MDMyLCAzNzA0MCwgMzcwNDgsIAotICAgIDM3MDU2LCAzNzA2NCwgMzcwNzIsIDM3MDgwLCAwLCAwLCAzNzA4OCwgMzcwOTksIDM3MTA5LCAzNzEyMywgMzcxMzYsIAotICAgIDM3MTUwLCAzNzE2MywgMzcxNzcsIDM3MTkwLCAzNzIwMSwgMzcyMTEsIDM3MjI1LCAzNzIzOCwgMzcyNTIsIDM3MjY1LCAKLSAgICAzNzI3OSwgMzcyOTIsIDM3MzAzLCAzNzMxMywgMzczMjcsIDM3MzQwLCAzNzM1NCwgMzczNjcsIDM3MzgxLCAzNzM5NCwgCi0gICAgMzc0MDUsIDM3NDE1LCAzNzQyOSwgMzc0NDIsIDM3NDU2LCAzNzQ2OSwgMzc0ODMsIDM3NDk2LCAzNzUwNywgMzc1MTcsIAotICAgIDM3NTMxLCAzNzU0NCwgMzc1NTgsIDM3NTcxLCAzNzU4NSwgMzc1OTgsIDM3NjA5LCAzNzYxOSwgMzc2MzMsIDM3NjQ2LCAKLSAgICAzNzY2MCwgMzc2NzMsIDM3Njg3LCAzNzcwMCwgMzc3MDgsIDM3NzE2LCAzNzcyNywgMzc3MzUsIDAsIDM3NzQ2LCAzNzc1NCwgCi0gICAgMzc3NjUsIDM3NzczLCAzNzc4MSwgMzc3ODksIDM3Nzk3LCAzNzgwNSwgMzc4MDgsIDM3ODExLCAzNzgxNCwgMzc4MTcsIAotICAgIDM3ODIzLCAzNzgzNCwgMzc4NDIsIDAsIDM3ODUzLCAzNzg2MSwgMzc4NzIsIDM3ODgwLCAzNzg4OCwgMzc4OTYsIDM3OTA0LCAKLSAgICAzNzkxMiwgMzc5MTgsIDM3OTI0LCAzNzkzMCwgMzc5MzgsIDM3OTQ2LCAzNzk1NywgMCwgMCwgMzc5NjgsIDM3OTc2LCAKLSAgICAzNzk4NywgMzc5OTUsIDM4MDAzLCAzODAxMSwgMCwgMzgwMTksIDM4MDI0LCAzODAyOSwgMzgwMzQsIDM4MDQyLCAzODA1MCwgCi0gICAgMzgwNjEsIDM4MDcyLCAzODA4MCwgMzgwODgsIDM4MDk2LCAzODEwNywgMzgxMTUsIDM4MTIzLCAzODEzMSwgMzgxMzksIAotICAgIDM4MTQ3LCAzODE1MywgMzgxNTksIDAsIDAsIDM4MTYyLCAzODE3MywgMzgxODEsIDAsIDM4MTkyLCAzODIwMCwgMzgyMTEsIAotICAgIDM4MjE5LCAzODIyNywgMzgyMzUsIDM4MjQzLCAzODI1MSwgMzgyNTQsIDAsIDM4MjU3LCAzODI2MSwgMzgyNjUsIDM4MjY5LCAKLSAgICAzODI3MywgMzgyNzcsIDM4MjgxLCAzODI4NSwgMzgyODksIDM4MjkzLCAzODI5NywgMzgzMDEsIDM4MzA3LCAzODMxMywgCi0gICAgMzgzMTksIDM4MzIyLCAzODMyNSwgMzgzMjcsIDM4MzMxLCAzODMzNSwgMzgzMzksIDM4MzQzLCAzODM0NSwgMzgzNDksIAotICAgIDM4MzUzLCAzODM1OSwgMzgzNjUsIDM4MzcyLCAzODM3OSwgMzgzODQsIDM4Mzg5LCAzODM5NSwgMzg0MDEsIDM4NDAzLCAKLSAgICAzODQwNiwgMzg0MDgsIDM4NDEyLCAzODQxNiwgMzg0MjAsIDM4NDIzLCAzODQyNywgMzg0MzEsIDM4NDM1LCAzODQzOSwgCi0gICAgMzg0NDMsIDM4NDQ5LCAzODQ1MywgMzg0NTcsIDM4NDYzLCAzODQ2OCwgMzg0NzUsIDM4NDc3LCAzODQ4MCwgMzg0ODQsIAotICAgIDM4NDg4LCAzODQ5MywgMzg0OTksIDM4NTAxLCAzODUxMCwgMzg1MTksIDM4NTIyLCAzODUyNiwgMzg1MjgsIDM4NTMwLCAKLSAgICAzODUzMiwgMzg1MzUsIDM4NTQxLCAzODU0MywgMzg1NDcsIDM4NTUxLCAzODU1OCwgMzg1NjUsIDM4NTY5LCAzODU3NCwgCi0gICAgMzg1NzksIDM4NTg0LCAzODU4OSwgMzg1OTMsIDM4NTk3LCAzODYwMCwgMzg2MDQsIDM4NjA4LCAzODYxNSwgMzg2MjAsIAotICAgIDM4NjI0LCAzODYyOCwgMzg2MzMsIDM4NjM3LCAzODY0MSwgMzg2NDYsIDM4NjUxLCAzODY1NSwgMzg2NTksIDM4NjYzLCAKLSAgICAzODY2NSwgMzg2NzAsIDM4Njc1LCAzODY3OSwgMzg2ODMsIDM4Njg3LCAzODY5MSwgMCwgMCwgMCwgMCwgMCwgMzg2OTUsIAotICAgIDM4NzAxLCAzODcwNywgMzg3MTQsIDM4NzIxLCAzODcyNiwgMzg3MzEsIDM4NzM1LCAwLCAwLCAzODc0MSwgMzg3NDQsIAotICAgIDM4NzQ3LCAzODc1MCwgMzg3NTMsIDM4NzU2LCAzODc1OSwgMzg3NjMsIDM4NzY3LCAzODc3MiwgMzg3NzcsIDM4NzgyLCAKLSAgICAzODc4OCwgMzg3OTIsIDM4Nzk1LCAzODc5OCwgMzg4MDEsIDM4ODA0LCAzODgwNywgMzg4MTAsIDM4ODEzLCAzODgxNiwgCi0gICAgMzg4MTksIDM4ODIzLCAzODgyNywgMzg4MzIsIDM4ODM3LCAwLCAzODg0MiwgMzg4NDgsIDM4ODU0LCAzODg2MCwgMzg4NjcsIAotICAgIDM4ODc0LCAzODg4MSwgMzg4ODgsIDM4ODk0LCAzODkwMCwgMzg5MDYsIDM4OTEzLCAzODkxOSwgMCwgMCwgMCwgMzg5MjYsIAotICAgIDM4OTI5LCAzODkzMiwgMzg5MzUsIDM4OTQwLCAzODk0MywgMzg5NDYsIDM4OTQ5LCAzODk1MiwgMzg5NTUsIDM4OTU4LCAKLSAgICAzODk2MiwgMzg5NjUsIDM4OTY4LCAzODk3MSwgMzg5NzQsIDM4OTc3LCAzODk4MiwgMzg5ODUsIDM4OTg4LCAzODk5MSwgCi0gICAgMzg5OTQsIDM4OTk3LCAzOTAwMiwgMzkwMDUsIDM5MDA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTAxMywgMzkwMTgsIDM5MDIzLCAzOTAzMCwgMzkwMzgsIDM5MDQzLCAKLSAgICAzOTA0OCwgMzkwNTIsIDM5MDU2LCAzOTA2MSwgMzkwNjgsIDM5MDc1LCAzOTA3OSwgMzkwODQsIDM5MDg5LCAzOTA5NCwgCi0gICAgMzkwOTksIDM5MTA2LCAzOTExMSwgMzkxMTYsIDM5MTIxLCAzOTEzMCwgMzkxMzcsIDM5MTQ0LCAzOTE0OCwgMzkxNTMsIAotICAgIDM5MTU5LCAzOTE2NCwgMzkxNzEsIDM5MTc5LCAzOTE4NywgMzkxOTEsIDM5MTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTE5OSwgMzkyMDMsIDM5MjExLCAzOTIxNSwgMzkyMTksIDM5MjI0LCAzOTIyOCwgCi0gICAgMzkyMzIsIDM5MjM2LCAzOTIzOCwgMzkyNDIsIDM5MjQ2LCAzOTI1MCwgMzkyNTUsIDM5MjU5LCAzOTI2MywgMzkyNzEsIAotICAgIDM5Mjc0LCAzOTI3OCwgMzkyODEsIDM5Mjg0LCAzOTI5MCwgMzkyOTMsIDM5Mjk2LCAzOTMwMiwgMzkzMDYsIDM5MzEwLCAKLSAgICAzOTMxNCwgMzkzMTcsIDM5MzIxLCAzOTMyNCwgMzkzMjgsIDM5MzMwLCAzOTMzMywgMzkzMzYsIDM5MzQwLCAzOTM0MiwgCi0gICAgMzkzNDYsIDM5MzQ5LCAzOTM1MiwgMzkzNTcsIDM5MzYyLCAzOTM2OSwgMzkzNzIsIDM5Mzc1LCAzOTM3OSwgMzkzODQsIAotICAgIDM5Mzg3LCAzOTM5MCwgMzkzOTMsIDM5Mzk3LCAzOTQwMiwgMzk0MDUsIDM5NDA4LCAzOTQxMCwgMzk0MTMsIDM5NDE2LCAKLSAgICAzOTQxOSwgMzk0MjMsIDM5NDI4LCAzOTQzMSwgMzk0MzUsIDM5NDM5LCAzOTQ0MywgMzk0NDcsIDM5NDUyLCAzOTQ1OCwgCi0gICAgMzk0NjMsIDM5NDY4LCAzOTQ3NCwgMzk0NzksIDM5NDg0LCAzOTQ4OCwgMzk0OTIsIDM5NDk3LCAzOTUwMSwgMzk1MDUsIAotICAgIDM5NTA4LCAzOTUxMCwgMzk1MTUsIDM5NTIxLCAzOTUyOCwgMzk1MzUsIDM5NTQyLCAzOTU0OSwgMzk1NTYsIDM5NTYzLCAKLSAgICAzOTU3MCwgMzk1NzcsIDM5NTg1LCAzOTU5MiwgMzk2MDAsIDM5NjA3LCAzOTYxNCwgMzk2MjIsIDM5NjMwLCAzOTYzNSwgCi0gICAgMzk2NDAsIDM5NjQ1LCAzOTY1MCwgMzk2NTUsIDM5NjYwLCAzOTY2NSwgMzk2NzAsIDM5Njc1LCAzOTY4MCwgMzk2ODYsIAotICAgIDM5NjkyLCAzOTY5OCwgMzk3MDQsIDM5NzExLCAzOTcxOSwgMzk3MjYsIDM5NzMyLCAzOTczOCwgMzk3NDQsIDM5NzUwLCAKLSAgICAzOTc1NiwgMzk3NjIsIDM5NzY4LCAzOTc3NCwgMzk3ODAsIDM5Nzg3LCAzOTc5NCwgMzk4MDEsIDM5ODA4LCAzOTgxNiwgCi0gICAgMzk4MjUsIDM5ODMzLCAzOTg0NCwgMzk4NTIsIDM5ODYwLCAzOTg2OSwgMzk4NzYsIDM5ODg1LCAzOTg5NCwgMzk5MDIsIAotICAgIDM5OTExLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTkxOSwgMzk5MjEsIDM5OTI0LCAzOTkyNiwgMzk5MjksIDM5OTMyLCAzOTkzNSwgCi0gICAgMzk5NDAsIDM5OTQ1LCAzOTk1MCwgMzk5NTUsIDM5OTU5LCAzOTk2MywgMzk5NjcsIDM5OTcxLCAzOTk3NiwgMzk5ODIsIAotICAgIDM5OTg3LCAzOTk5MywgMzk5OTgsIDQwMDAzLCA0MDAwOCwgNDAwMTQsIDQwMDE5LCA0MDAyNSwgNDAwMzEsIDQwMDM1LCAKLSAgICA0MDAzOSwgNDAwNDQsIDQwMDQ5LCA0MDA1NCwgNDAwNTksIDQwMDY0LCA0MDA3MiwgNDAwODAsIDQwMDg4LCA0MDA5NiwgCi0gICAgNDAxMDMsIDQwMTExLCA0MDExOCwgNDAxMjUsIDQwMTM0LCA0MDE0NiwgNDAxNTMsIDQwMTYwLCA0MDE2NywgNDAxNzQsIAotICAgIDQwMTgyLCA0MDE5MCwgNDAxOTcsIDQwMjA0LCA0MDIxMiwgNDAyMjAsIDQwMjI1LCA0MDIzMywgNDAyMzgsIDQwMjQzLCAKLSAgICA0MDI0OSwgNDAyNTQsIDQwMjYwLCA0MDI2NywgNDAyNzQsIDQwMjc5LCA0MDI4NSwgNDAyOTAsIDQwMjkzLCA0MDI5NywgCi0gICAgNDAzMDAsIDQwMzA0LCA0MDMwOCwgNDAzMTIsIDQwMzE4LCA0MDMyNCwgNDAzMzAsIDQwMzM2LCA0MDM0MCwgNDAzNDQsIAotICAgIDQwMzQ4LCA0MDM1MiwgNDAzNTgsIDQwMzY0LCA0MDM2OCwgNDAzNzMsIDQwMzc3LCA0MDM4MiwgNDAzODcsIDQwMzkyLCAKLSAgICA0MDM5NSwgNDAzOTksIDQwNDAyLCA0MDQwNiwgNDA0MTMsIDQwNDIxLCA0MDQzMiwgNDA0NDMsIDQwNDQ4LCA0MDQ1NywgCi0gICAgNDA0NjQsIDQwNDczLCA0MDQ4MiwgNDA0ODYsIDQwNDkyLCA0MDUwMCwgNDA1MDQsIDQwNTA5LCA0MDUxNCwgNDA1MjAsIAotICAgIDQwNTI2LCA0MDUzMiwgNDA1MzksIDQwNTQzLCA0MDU0NywgNDA1NTIsIDQwNTU1LCA0MDU1NywgNDA1NjEsIDQwNTY1LCAKLSAgICA0MDU3MywgNDA1NzcsIDQwNTc5LCA0MDU4MSwgNDA1ODUsIDQwNTkzLCA0MDU5OCwgNDA2MDQsIDQwNjE0LCA0MDYyMSwgCi0gICAgNDA2MjYsIDQwNjMwLCA0MDYzNCwgNDA2MzgsIDQwNjQxLCA0MDY0NCwgNDA2NDcsIDQwNjUxLCA0MDY1NSwgNDA2NTksIAotICAgIDQwNjYzLCA0MDY2NywgNDA2NzAsIDQwNjc0LCA0MDY3OCwgNDA2ODEsIDQwNjgzLCA0MDY4NiwgNDA2ODgsIDQwNjkyLCAKLSAgICA0MDY5NiwgNDA2OTgsIDQwNzA0LCA0MDcwNywgNDA3MTIsIDQwNzE2LCA0MDcyMCwgNDA3MjIsIDQwNzI0LCA0MDcyNiwgCi0gICAgNDA3MjksIDQwNzMzLCA0MDczNywgNDA3NDEsIDQwNzQ1LCA0MDc0OSwgNDA3NTUsIDQwNzYxLCA0MDc2MywgNDA3NjUsIAotICAgIDQwNzY3LCA0MDc2OSwgNDA3NzIsIDQwNzc0LCA0MDc3OCwgNDA3ODAsIDQwNzg0LCA0MDc4OCwgNDA3OTMsIDQwNzk3LCAKLSAgICA0MDgwMSwgNDA4MDUsIDQwODA5LCA0MDgxMywgNDA4MTksIDQwODIzLCA0MDgzMywgNDA4NDMsIDQwODQ3LCA0MDg1MywgCi0gICAgNDA4NTksIDQwODYzLCA0MDg2NywgNDA4NzAsIDQwODc1LCA0MDg3OSwgNDA4ODUsIDQwODg5LCA0MDkwMSwgNDA5MDksIAotICAgIDQwOTEzLCA0MDkxNywgNDA5MjMsIDQwOTI3LCA0MDkzMCwgNDA5MzIsIDQwOTM1LCA0MDkzOSwgNDA5NDMsIDQwOTUwLCAKLSAgICA0MDk1NCwgNDA5NTgsIDQwOTYyLCA0MDk2NSwgNDA5NzAsIDQwOTc1LCA0MDk4MCwgNDA5ODUsIDQwOTkwLCA0MDk5NSwgCi0gICAgNDEwMDMsIDQxMDExLCA0MTAxNSwgNDEwMTksIDQxMDIxLCA0MTAyNiwgNDEwMzAsIDQxMDM0LCA0MTA0MiwgNDEwNTAsIAotICAgIDQxMDU2LCA0MTA2MiwgNDEwNzEsIDQxMDgwLCA0MTA4NSwgNDEwOTAsIDQxMDk4LCA0MTEwNiwgNDExMDgsIDQxMTEwLCAKLSAgICA0MTExNSwgNDExMjAsIDQxMTI2LCA0MTEzMiwgNDExMzgsIDQxMTQ0LCA0MTE0OCwgNDExNTIsIDQxMTU5LCA0MTE2NiwgCi0gICAgNDExNzIsIDQxMTc4LCA0MTE4OCwgNDExOTgsIDQxMjA2LCA0MTIxNCwgNDEyMTYsIDQxMjIwLCA0MTIyNCwgNDEyMjksIAotICAgIDQxMjM0LCA0MTI0MSwgNDEyNDgsIDQxMjUxLCA0MTI1NCwgNDEyNTcsIDQxMjYwLCA0MTI2MywgNDEyNjgsIDQxMjcyLCAKLSAgICA0MTI3NywgNDEyODIsIDQxMjg1LCA0MTI4OCwgNDEyOTEsIDQxMjk0LCA0MTI5NywgNDEzMDEsIDQxMzA0LCA0MTMwNywgCi0gICAgNDEzMTAsIDQxMzEzLCA0MTMxNSwgNDEzMTcsIDQxMzE5LCA0MTMyMSwgNDEzMjksIDQxMzM3LCA0MTM0MywgNDEzNDcsIAotICAgIDQxMzUzLCA0MTM2MywgNDEzNjksIDQxMzc1LCA0MTM4MSwgNDEzODksIDQxMzk3LCA0MTQwOCwgNDE0MTIsIDQxNDE2LCAKLSAgICA0MTQxOCwgNDE0MjQsIDQxNDI2LCA0MTQyOCwgNDE0MzAsIDQxNDMyLCA0MTQzOCwgNDE0NDEsIDQxNDQ3LCA0MTQ1MywgCi0gICAgNDE0NTcsIDQxNDYxLCA0MTQ2NSwgNDE0NjgsIDQxNDcyLCA0MTQ3NiwgNDE0NzgsIDQxNDg3LCA0MTQ5NiwgNDE1MDEsIAotICAgIDQxNTA2LCA0MTUxMiwgNDE1MTgsIDQxNTI0LCA0MTUyNywgNDE1MzAsIDQxNTMzLCA0MTUzNiwgNDE1MzgsIDQxNTQzLCAKLSAgICA0MTU0OCwgNDE1NTMsIDQxNTU5LCA0MTU2NSwgNDE1NzMsIDQxNTgxLCA0MTU4NywgNDE1OTMsIDQxNTk5LCA0MTYwNSwgCi0gICAgNDE2MTQsIDQxNjIzLCA0MTYzMiwgNDE2NDEsIDQxNjUwLCA0MTY1OSwgNDE2NjgsIDQxNjc3LCA0MTY4NiwgNDE2OTUsIAotICAgIDQxNzAzLCA0MTcxNSwgNDE3MjUsIDQxNzQwLCA0MTc0MywgNDE3NDgsIDQxNzU0LCA0MTc2MCwgNDE3NjcsIDQxNzgxLCAKLSAgICA0MTc5NiwgNDE4MDIsIDQxODA4LCA0MTgxNSwgNDE4MjEsIDQxODI5LCA0MTgzNSwgNDE4NDgsIDQxODYyLCA0MTg2NywgCi0gICAgNDE4NzMsIDQxODgwLCA0MTg4MywgNDE4ODYsIDQxODg4LCA0MTg5MSwgNDE4OTQsIDQxODk2LCA0MTg5OCwgNDE5MDIsIAotICAgIDQxOTA1LCA0MTkwOCwgNDE5MTEsIDQxOTE0LCA0MTkxOSwgNDE5MjQsIDQxOTI5LCA0MTkzNCwgNDE5MzksIDQxOTQyLCAKLSAgICA0MTk0NCwgNDE5NDYsIDQxOTQ4LCA0MTk1MiwgNDE5NTYsIDQxOTYwLCA0MTk2NiwgNDE5NzEsIDQxOTczLCA0MTk3NSwgCi0gICAgNDE5ODAsIDQxOTg1LCA0MTk5MCwgNDE5OTUsIDQyMDAwLCA0MjAwNSwgNDIwMDcsIDQyMDA5LCA0MjAxOCwgNDIwMjIsIAotICAgIDQyMDMwLCA0MjAzOSwgNDIwNDEsIDQyMDQ2LCA0MjA1MSwgNDIwNTksIDQyMDYzLCA0MjA2NSwgNDIwNjksIDQyMDcxLCAKLSAgICA0MjA3NSwgNDIwNzksIDQyMDgzLCA0MjA4NSwgNDIwODcsIDQyMDg5LCA0MjA5NCwgNDIxMDEsIDQyMTA4LCA0MjExNSwgCi0gICAgNDIxMjIsIDQyMTI5LCA0MjEzNiwgNDIxNDMsIDQyMTUwLCA0MjE1NiwgNDIxNjIsIDQyMTY5LCA0MjE3NiwgNDIxODMsIAotICAgIDQyMTkwLCA0MjE5NiwgNDIyMDIsIDQyMjA5LCA0MjIxNiwgNDIyMjMsIDQyMjMxLCA0MjIzOCwgNDIyNDYsIDQyMjUzLCAKLSAgICA0MjI2MSwgNDIyNjgsIDQyMjc2LCA0MjI4NCwgNDIyOTEsIDQyMjk5LCA0MjMwNiwgNDIzMTQsIDQyMzIxLCA0MjMyOSwgCi0gICAgNDIzMzYsIDQyMzQzLCA0MjM1MCwgNDIzNTcsIDQyMzY0LCA0MjM3MiwgNDIzNzksIDQyMzg2LCA0MjM5MywgNDI0MDEsIAotICAgIDQyNDA4LCA0MjQxNSwgNDI0MjIsIDQyNDI5LCA0MjQzNywgNDI0NDUsIDQyNDUyLCA0MjQ1OSwgNDI0NjUsIDQyNDcyLCAKLSAgICA0MjQ3NywgNDI0ODQsIDQyNDkxLCA0MjUwMCwgNDI1MDcsIDQyNTE1LCA0MjUyMywgNDI1MjgsIDQyNTMzLCA0MjUzOCwgCi0gICAgNDI1NDUsIDQyNTUyLCA0MjU1OSwgNDI1NjYsIDQyNTcxLCA0MjU3NiwgNDI1ODUsIDQyNTkxLCA0MjU5NCwgNDI2MDIsIAotICAgIDQyNjA1LCA0MjYxMCwgNDI2MTUsIDQyNjE4LCA0MjYyMSwgNDI2MjksIDQyNjMyLCA0MjYzNywgNDI2NDAsIDQyNjQ3LCAKLSAgICA0MjY1MiwgNDI2NjAsIDQyNjYzLCA0MjY2NiwgNDI2NjksIDQyNjc0LCA0MjY3OSwgNDI2ODIsIDQyNjg1LCA0MjY5MywgCi0gICAgNDI2OTYsIDQyNzAxLCA0MjcwOCwgNDI3MTIsIDQyNzE2LCA0MjcyMSwgNDI3MjYsIDQyNzMyLCA0MjczNywgNDI3NDMsIAotICAgIDQyNzQ5LCA0Mjc1NCwgNDI3NjAsIDQyNzY4LCA0Mjc3NCwgNDI3ODIsIDQyNzkwLCA0Mjc5NiwgNDI4MDQsIDQyODEyLCAKLSAgICA0MjgyMSwgNDI4MjksIDQyODM1LCA0Mjg0MywgNDI4NTIsIDQyODYwLCA0Mjg2NCwgNDI4NjksIDQyODgyLCA0Mjg5NSwgCi0gICAgNDI4OTksIDQyOTAzLCA0MjkwNywgNDI5MTEsIDQyOTIxLCA0MjkyNSwgNDI5MzAsIDQyOTM1LCA0Mjk0MCwgNDI5NDUsIAotICAgIDQyOTUwLCA0Mjk1NSwgNDI5NjUsIDQyOTc1LCA0Mjk4MywgNDI5OTMsIDQzMDAzLCA0MzAxMSwgNDMwMjEsIDQzMDMxLCAKLSAgICA0MzAzOSwgNDMwNDksIDQzMDU5LCA0MzA2NywgNDMwNzUsIDQzMDg1LCA0MzA5NSwgNDMwOTgsIDQzMTAxLCA0MzEwNCwgCi0gICAgNDMxMDksIDQzMTEzLCA0MzExOSwgNDMxMjYsIDQzMTMzLCA0MzE0MSwgNDMxNDgsIDQzMTUyLCA0MzE1NiwgNDMxNjAsIAotICAgIDQzMTY0LCA0MzE2NiwgNDMxNzAsIDQzMTc0LCA0MzE3OSwgNDMxODQsIDQzMTkxLCA0MzE5OCwgNDMyMDEsIDQzMjA4LCAKLSAgICA0MzIxMCwgNDMyMTIsIDQzMjE2LCA0MzIyMCwgNDMyMjUsIDQzMjMxLCA0MzIzNywgNDMyNDMsIDQzMjQ5LCA0MzI1OCwgCi0gICAgNDMyNjcsIDQzMjc2LCA0MzI4MCwgNDMyODIsIDQzMjg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MzI5MywgNDMyOTcsIDQzMzA0LCA0MzMxMSwgNDMzMTgsIDQzMzI1LCA0MzMyOSwgNDMzMzMsIDQzMzM3LCA0MzM0MSwgCi0gICAgNDMzNDYsIDQzMzUyLCA0MzM1NywgNDMzNjMsIDQzMzY5LCA0MzM3NSwgNDMzODEsIDQzMzg5LCA0MzM5NiwgNDM0MDMsIAotICAgIDQzNDEwLCA0MzQxNywgNDM0MjIsIDQzNDI4LCA0MzQzNywgNDM0NDEsIDQzNDQ4LCA0MzQ1MiwgNDM0NTYsIDQzNDYyLCAKLSAgICA0MzQ2OCwgNDM0NzQsIDQzNDgwLCA0MzQ4NCwgNDM0ODgsIDQzNDkxLCA0MzQ5NSwgNDM0OTksIDQzNTA2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzUxMywgCi0gICAgNDM1MTYsIDQzNTIwLCA0MzUyNCwgNDM1MzAsIDQzNTM2LCA0MzU0MiwgNDM1NTAsIDQzNTU3LCA0MzU2MSwgNDM1NjksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNTc0LCA0MzU3NywgCi0gICAgNDM1ODAsIDQzNTgzLCA0MzU4NiwgNDM1ODksIDQzNTkyLCA0MzU5NSwgNDM1OTgsIDQzNjAxLCA0MzYwNSwgNDM2MDksIAotICAgIDQzNjEzLCA0MzYxNywgNDM2MjEsIDQzNjI1LCA0MzYyOSwgNDM2MzMsIDQzNjM3LCA0MzY0MSwgNDM2NDUsIDQzNjQ4LCAKLSAgICA0MzY1MSwgNDM2NTQsIDQzNjU3LCA0MzY2MCwgNDM2NjMsIDQzNjY2LCA0MzY2OSwgNDM2NzIsIDQzNjc2LCA0MzY4MCwgCi0gICAgNDM2ODQsIDQzNjg4LCA0MzY5MiwgNDM2OTYsIDQzNzAwLCA0MzcwNCwgNDM3MDgsIDQzNzEyLCA0MzcxNiwgNDM3MjIsIAotICAgIDQzNzI4LCA0MzczNCwgNDM3NDEsIDQzNzQ4LCA0Mzc1NSwgNDM3NjIsIDQzNzY5LCA0Mzc3NiwgNDM3ODMsIDQzNzkwLCAKLSAgICA0Mzc5NywgNDM4MDQsIDQzODExLCA0MzgxOCwgNDM4MjUsIDQzODMyLCA0MzgzOSwgNDM4NDYsIDQzODUzLCA0Mzg1OCwgCi0gICAgNDM4NjQsIDQzODcwLCA0Mzg3NiwgNDM4ODEsIDQzODg3LCA0Mzg5MywgNDM4OTksIDQzOTA0LCA0MzkxMCwgNDM5MTYsIAotICAgIDQzOTIxLCA0MzkyNiwgNDM5MzEsIDQzOTM2LCA0Mzk0MiwgNDM5NDgsIDQzOTUzLCA0Mzk1OCwgNDM5NjQsIDQzOTY5LCAKLSAgICA0Mzk3NSwgNDM5ODEsIDQzOTg3LCA0Mzk5MywgNDM5OTksIDQ0MDA0LCA0NDAxMCwgNDQwMTYsIDQ0MDIyLCA0NDAyNywgCi0gICAgNDQwMzMsIDQ0MDM5LCA0NDA0NSwgNDQwNTAsIDQ0MDU2LCA0NDA2MiwgNDQwNjcsIDQ0MDcyLCA0NDA3NywgNDQwODIsIAotICAgIDQ0MDg4LCA0NDA5NCwgNDQwOTksIDQ0MTA0LCA0NDExMCwgNDQxMTUsIDQ0MTIxLCA0NDEyNywgNDQxMzMsIDQ0MTM5LCAKLSAgICA0NDE0NSwgNDQxNTAsIDQ0MTU2LCA0NDE2MiwgNDQxNjgsIDQ0MTczLCA0NDE3OSwgNDQxODUsIDQ0MTkxLCA0NDE5NiwgCi0gICAgNDQyMDIsIDQ0MjA4LCA0NDIxMywgNDQyMTgsIDQ0MjIzLCA0NDIyOCwgNDQyMzQsIDQ0MjQwLCA0NDI0NSwgNDQyNTAsIAotICAgIDQ0MjU2LCA0NDI2MSwgNDQyNjcsIDQ0MjczLCA0NDI3OSwgNDQyODUsIDQ0MjkxLCA0NDI5NSwgNDQzMDAsIDQ0MzA1LCAKLSAgICA0NDMxMCwgNDQzMTUsIDQ0MzIwLCA0NDMyNSwgNDQzMzAsIDQ0MzM1LCA0NDM0MCwgNDQzNDUsIDQ0MzQ5LCA0NDM1MywgCi0gICAgNDQzNTcsIDQ0MzYxLCA0NDM2NSwgNDQzNjksIDQ0MzczLCA0NDM3NywgNDQzODEsIDQ0Mzg2LCA0NDM5MSwgNDQzOTYsIAotICAgIDQ0NDAxLCA0NDQwNiwgNDQ0MTEsIDQ0NDIwLCA0NDQyOSwgNDQ0MzgsIDQ0NDQ3LCA0NDQ1NiwgNDQ0NjUsIDQ0NDc0LCAKLSAgICA0NDQ4MywgNDQ0OTAsIDQ0NDk4LCA0NDUwNiwgNDQ1MTMsIDQ0NTIwLCA0NDUyOCwgNDQ1MzYsIDQ0NTQzLCA0NDU1MCwgCi0gICAgNDQ1NTgsIDQ0NTY2LCA0NDU3MywgNDQ1ODAsIDQ0NTg4LCA0NDU5NiwgNDQ2MDMsIDQ0NjEwLCA0NDYxOCwgNDQ2MjcsIAotICAgIDQ0NjM2LCA0NDY0NCwgNDQ2NTMsIDQ0NjYyLCA0NDY2OSwgNDQ2NzYsIDQ0Njg0LCA0NDY5MywgNDQ3MDIsIDQ0NzEwLCAKLSAgICA0NDcxOSwgNDQ3MjgsIDQ0NzM1LCA0NDc0MiwgNDQ3NTEsIDQ0NzYwLCA0NDc2OCwgNDQ3NzYsIDQ0Nzg1LCA0NDc5NCwgCi0gICAgNDQ4MDEsIDQ0ODA4LCA0NDgxNywgNDQ4MjYsIDQ0ODM0LCA0NDg0MiwgNDQ4NTEsIDQ0ODYwLCA0NDg2NywgNDQ4NzQsIAotICAgIDQ0ODgzLCA0NDg5MiwgNDQ5MDAsIDQ0OTA5LCA0NDkxOCwgNDQ5MjYsIDQ0OTM2LCA0NDk0NiwgNDQ5NTYsIDQ0OTY2LCAKLSAgICA0NDk3NSwgNDQ5ODQsIDQ0OTkzLCA0NTAwMiwgNDUwMDksIDQ1MDE3LCA0NTAyNSwgNDUwMzMsIDQ1MDQxLCA0NTA0NiwgCi0gICAgNDUwNTEsIDQ1MDYwLCA0NTA2OCwgNDUwNzUsIDQ1MDg0LCA0NTA5MiwgNDUwOTksIDQ1MTA4LCA0NTExNiwgNDUxMjMsIAotICAgIDQ1MTMyLCA0NTE0MCwgNDUxNDcsIDQ1MTU2LCA0NTE2NCwgNDUxNzEsIDQ1MTgwLCA0NTE4OCwgNDUxOTUsIDQ1MjA0LCAKLSAgICA0NTIxMiwgNDUyMTksIDQ1MjI4LCA0NTIzNiwgNDUyNDMsIDQ1MjUyLCA0NTI2MCwgNDUyNjcsIDQ1Mjc2LCA0NTI4NSwgCi0gICAgNDUyOTQsIDQ1MzAzLCA0NTMxNywgNDUzMzEsIDQ1MzM4LCA0NTM0MywgNDUzNDgsIDQ1MzUzLCA0NTM1OCwgNDUzNjMsIAotICAgIDQ1MzY4LCA0NTM3MywgNDUzNzgsIDQ1Mzg2LCA0NTM5NCwgNDU0MDIsIDQ1NDEwLCA0NTQxNSwgNDU0MjIsIDQ1NDI5LCAKLSAgICA0NTQzNiwgNDU0NDEsIDQ1NDQ5LCA0NTQ1NiwgNDU0NjQsIDQ1NDY4LCA0NTQ3NSwgNDU0ODEsIDQ1NDg4LCA0NTQ5MiwgCi0gICAgNDU0OTgsIDQ1NTA0LCA0NTUxMCwgNDU1MTQsIDQ1NTE3LCA0NTUyMSwgNDU1MjUsIDQ1NTMyLCA0NTUzOCwgNDU1NDQsIAotICAgIDQ1NTUwLCA0NTU1NiwgNDU1NzAsIDQ1NTgwLCA0NTU5NCwgNDU2MDgsIDQ1NjE0LCA0NTYyNCwgNDU2MzgsIDQ1NjQxLCAKLSAgICA0NTY0NCwgNDU2NTEsIDQ1NjU5LCA0NTY2NCwgNDU2NjksIDQ1Njc3LCA0NTY4OSwgNDU3MDEsIDQ1NzA5LCA0NTcxMywgCi0gICAgNDU3MTcsIDQ1NzIwLCA0NTcyMywgNDU3MjcsIDQ1NzMxLCA0NTczNCwgNDU3MzcsIDQ1NzQyLCA0NTc0NywgNDU3NTMsIAotICAgIDQ1NzU5LCA0NTc2NCwgNDU3NjksIDQ1Nzc1LCA0NTc4MSwgNDU3ODYsIDQ1NzkxLCA0NTc5NiwgNDU4MDEsIDQ1ODA3LCAKLSAgICA0NTgxMywgNDU4MTgsIDQ1ODIzLCA0NTgyOSwgNDU4MzUsIDQ1ODQwLCA0NTg0NSwgNDU4NDgsIDQ1ODUxLCA0NTg2MCwgCi0gICAgNDU4NjIsIDQ1ODY0LCA0NTg2NywgNDU4NzEsIDQ1ODc3LCA0NTg3OSwgNDU4ODIsIDQ1ODg5LCA0NTg5NiwgNDU5MDQsIAotICAgIDQ1OTEyLCA0NTkyMiwgNDU5MzYsIDQ1OTQxLCA0NTk0NiwgNDU5NTAsIDQ1OTU1LCA0NTk2MywgNDU5NzEsIDQ1OTgwLCAKLSAgICA0NTk4OSwgNDU5OTgsIDQ2MDA3LCA0NjAxMiwgNDYwMTcsIDQ2MDIzLCA0NjAyOSwgNDYwMzUsIDQ2MDQxLCA0NjA0NCwgCi0gICAgNDYwNTAsIDQ2MDU2LCA0NjA2NiwgNDYwNzYsIDQ2MDg0LCA0NjA5MiwgNDYxMDEsIDQ2MTEwLCA0NjExNCwgNDYxMjIsIAotICAgIDQ2MTMwLCA0NjEzOCwgNDYxNDYsIDQ2MTU1LCA0NjE2NCwgNDYxNzMsIDQ2MTgyLCA0NjE4NywgNDYxOTIsIDQ2MTk3LCAKLSAgICA0NjIwMiwgNDYyMDcsIDQ2MjEzLCA0NjIxOSwgNDYyMjQsIDQ2MjMwLCA0NjIzMiwgNDYyMzQsIDQ2MjM2LCA0NjIzOCwgCi0gICAgNDYyNDEsIDQ2MjQ0LCA0NjI0NiwgNDYyNDgsIDQ2MjUwLCA0NjI1NCwgNDYyNTgsIDQ2MjYwLCA0NjI2MiwgNDYyNjUsIAotICAgIDQ2MjY4LCA0NjI3MiwgNDYyNzgsIDQ2Mjg0LCA0NjI4NiwgNDYyOTMsIDQ2Mjk3LCA0NjMwMiwgNDYzMDcsIDQ2MzA5LCAKLSAgICA0NjMxOSwgNDYzMjUsIDQ2MzMxLCA0NjMzNywgNDYzNDMsIDQ2MzQ5LCA0NjM1NSwgNDYzNjAsIDQ2MzYzLCA0NjM2NiwgCi0gICAgNDYzNjksIDQ2MzcxLCA0NjM3MywgNDYzNzcsIDQ2MzgxLCA0NjM4NiwgNDYzOTEsIDQ2Mzk2LCA0NjM5OSwgNDY0MDMsIAotICAgIDQ2NDA4LCA0NjQxMSwgNDY0MTUsIDQ2NDIwLCA0NjQyNSwgNDY0MzAsIDQ2NDM1LCA0NjQ0MCwgNDY0NDUsIDQ2NDUwLCAKLSAgICA0NjQ1NSwgNDY0NjAsIDQ2NDY1LCA0NjQ3MCwgNDY0NzUsIDQ2NDgxLCA0NjQ4NywgNDY0OTMsIDQ2NDk1LCA0NjQ5OCwgCi0gICAgNDY1MDAsIDQ2NTAzLCA0NjUwNSwgNDY1MDcsIDQ2NTA5LCA0NjUxMSwgNDY1MTMsIDQ2NTE1LCA0NjUxNywgNDY1MTksIAotICAgIDQ2NTIxLCA0NjUyMywgNDY1MjUsIDQ2NTI3LCA0NjUyOSwgNDY1MzEsIDQ2NTMzLCA0NjUzNSwgNDY1MzcsIDQ2NTQyLCAKLSAgICA0NjU0NywgNDY1NTIsIDQ2NTU3LCA0NjU2MiwgNDY1NjcsIDQ2NTcyLCA0NjU3NywgNDY1ODIsIDQ2NTg3LCA0NjU5MiwgCi0gICAgNDY1OTcsIDQ2NjAyLCA0NjYwNywgNDY2MTIsIDQ2NjE3LCA0NjYyMiwgNDY2MjcsIDQ2NjMyLCA0NjYzNywgNDY2NDEsIAotICAgIDQ2NjQ1LCA0NjY0OSwgNDY2NTUsIDQ2NjYxLCA0NjY2NiwgNDY2NzEsIDQ2Njc2LCA0NjY4MSwgNDY2ODYsIDQ2NjkxLCAKLSAgICA0NjY5OSwgNDY3MDcsIDQ2NzE1LCA0NjcyMywgNDY3MzEsIDQ2NzM5LCA0Njc0NywgNDY3NTUsIDQ2NzYxLCA0Njc2NiwgCi0gICAgNDY3NzEsIDQ2Nzc2LCA0Njc3OSwgNDY3ODMsIDQ2Nzg3LCA0Njc5MSwgNDY3OTUsIDQ2Nzk5LCA0NjgwMywgNDY4MTAsIAotICAgIDQ2ODE3LCA0NjgyNSwgNDY4MzMsIDQ2ODM4LCA0Njg0MywgNDY4NTAsIDQ2ODU3LCA0Njg2NCwgNDY4NzEsIDQ2ODc0LCAKLSAgICA0Njg3NywgNDY4ODIsIDQ2ODg0LCA0Njg4OCwgNDY4OTMsIDQ2ODk1LCA0Njg5NywgNDY4OTksIDQ2OTAxLCA0NjkwNiwgCi0gICAgNDY5MDksIDQ2OTExLCA0NjkxNiwgNDY5MjMsIDQ2OTMwLCA0NjkzMywgNDY5MzcsIDQ2OTQyLCA0Njk0NywgNDY5NTUsIAotICAgIDQ2OTYxLCA0Njk2NywgNDY5NzksIDQ2OTg2LCA0Njk5MywgNDY5OTgsIDQ3MDAzLCA0NzAwOSwgNDcwMTIsIDQ3MDE1LCAKLSAgICA0NzAyMCwgNDcwMjIsIDQ3MDI2LCA0NzAyOCwgNDcwMzAsIDQ3MDMyLCA0NzAzNCwgNDcwMzYsIDQ3MDM4LCA0NzA0MywgCi0gICAgNDcwNDUsIDQ3MDQ3LCA0NzA0OSwgNDcwNTEsIDQ3MDU1LCA0NzA1NywgNDcwNjAsIDQ3MDY1LCA0NzA3MCwgNDcwNzUsIAotICAgIDQ3MDgwLCA0NzA4NiwgNDcwOTIsIDQ3MDk0LCA0NzA5NywgNDcxMDQsIDQ3MTExLCA0NzExOCwgNDcxMjUsIDQ3MTI5LCAKLSAgICA0NzEzMywgNDcxMzUsIDQ3MTM3LCA0NzE0MSwgNDcxNDcsIDQ3MTUyLCA0NzE1NCwgNDcxNTgsIDQ3MTY3LCA0NzE3NSwgCi0gICAgNDcxODMsIDQ3MTg5LCA0NzE5NSwgNDcyMDAsIDQ3MjA2LCA0NzIxMSwgNDcyMTQsIDQ3MjI4LCA0NzIzMSwgNDcyMzYsIAotICAgIDQ3MjQxLCA0NzI0NywgNDcyNTcsIDQ3MjU5LCA0NzI2NSwgNDcyNzEsIDQ3Mjc1LCA0NzI4MiwgNDcyODYsIDQ3Mjg4LCAKLSAgICA0NzI5MCwgNDcyOTQsIDQ3MzAwLCA0NzMwNSwgNDczMTEsIDQ3MzEzLCA0NzMxOSwgNDczMjEsIDQ3MzI3LCA0NzMyOSwgCi0gICAgNDczMzEsIDQ3MzM2LCA0NzMzOCwgNDczNDIsIDQ3MzQ3LCA0NzM0OSwgNDczNTQsIDQ3MzU5LCA0NzM2MywgNDczNzAsIDAsIAotICAgIDQ3MzgwLCA0NzM4NiwgNDczODksIDQ3Mzk1LCA0NzM5OCwgNDc0MDMsIDQ3NDA4LCA0NzQxMiwgNDc0MTQsIDQ3NDE2LCAKLSAgICA0NzQyMCwgNDc0MjQsIDQ3NDI4LCA0NzQzMiwgNDc0MzcsIDQ3NDM5LCA0NzQ0NCwgNDc0NDcsIDQ3NDUwLCA0NzQ1MywgCi0gICAgNDc0NTcsIDQ3NDYxLCA0NzQ2NiwgNDc0NzAsIDQ3NDc1LCA0NzQ4MCwgNDc0ODQsIDQ3NDkwLCA0NzQ5NywgNDc1MDAsIAotICAgIDQ3NTA2LCA0NzUxMSwgNDc1MTUsIDQ3NTIwLCA0NzUyNiwgNDc1MzIsIDQ3NTM5LCA0NzU0NSwgNDc1NTIsIDQ3NTU5LCAKLSAgICA0NzU2MSwgNDc1NjgsIDQ3NTcyLCA0NzU3OSwgNDc1ODUsIDQ3NTkwLCA0NzU5NiwgNDc2MDAsIDQ3NjA1LCA0NzYwOCwgCi0gICAgNDc2MTQsIDQ3NjIwLCA0NzYyNywgNDc2MzUsIDQ3NjQyLCA0NzY1MSwgNDc2NjEsIDQ3NjY4LCA0NzY3NCwgNDc2NzgsIAotICAgIDQ3Njg2LCA0NzY5MSwgNDc3MDAsIDQ3NzAzLCA0NzcwNiwgNDc3MTUsIDQ3NzI2LCA0NzczMywgNDc3MzUsIDQ3NzQxLCAKLSAgICA0Nzc0NiwgNDc3NDgsIDQ3NzUxLCA0Nzc1NSwgNDc3NjMsIDQ3NzcyLCA0Nzc3NSwgNDc3ODAsIDQ3Nzg1LCA0Nzc5MywgCi0gICAgNDc4MDEsIDQ3ODA5LCA0NzgxNywgNDc4MjMsIDQ3ODI5LCA0NzgzNSwgNDc4NDMsIDQ3ODQ4LCA0Nzg1MSwgNDc4NTUsIAotICAgIDQ3ODU4LCA0Nzg3MCwgNDc4ODAsIDQ3ODkxLCA0NzkwMCwgNDc5MTEsIDQ3OTIxLCA0NzkzMCwgNDc5MzYsIDQ3OTQ0LCAKLSAgICA0Nzk0OCwgNDc5NTYsIDQ3OTYwLCA0Nzk2OCwgNDc5NzUsIDQ3OTgyLCA0Nzk5MSwgNDgwMDAsIDQ4MDEwLCA0ODAyMCwgCi0gICAgNDgwMzAsIDQ4MDQwLCA0ODA0OSwgNDgwNTgsIDQ4MDY4LCA0ODA3OCwgNDgwODcsIDQ4MDk2LCA0ODEwMiwgNDgxMDgsIAotICAgIDQ4MTE0LCA0ODEyMCwgNDgxMjYsIDQ4MTMyLCA0ODEzOCwgNDgxNDQsIDQ4MTUwLCA0ODE1NywgNDgxNjMsIDQ4MTY5LCAKLSAgICA0ODE3NSwgNDgxODEsIDQ4MTg3LCA0ODE5MywgNDgxOTksIDQ4MjA1LCA0ODIxMSwgNDgyMTgsIDQ4MjI1LCA0ODIzMiwgCi0gICAgNDgyMzksIDQ4MjQ2LCA0ODI1MywgNDgyNjAsIDQ4MjY3LCA0ODI3NCwgNDgyODEsIDQ4Mjg5LCA0ODI5NCwgNDgyOTcsIAotICAgIDQ4MzAxLCA0ODMwNSwgNDgzMTEsIDQ4MzE0LCA0ODMyMCwgNDgzMjYsIDQ4MzMxLCA0ODMzNSwgNDgzNDAsIDQ4MzQ2LCAKLSAgICA0ODM1MywgNDgzNTYsIDQ4MzYzLCA0ODM3MCwgNDgzNzQsIDQ4MzgzLCA0ODM5MiwgNDgzOTcsIDQ4NDAzLCA0ODQwOCwgCi0gICAgNDg0MTMsIDQ4NDIwLCA0ODQyNywgNDg0MzUsIDQ4NDQzLCA0ODQ1MiwgNDg0NTYsIDQ4NDY1LCA0ODQ3MCwgNDg0NzQsIAotICAgIDQ4NDgxLCA0ODQ4NSwgNDg0OTIsIDQ4NTAwLCA0ODUwNSwgNDg1MTMsIDQ4NTE3LCA0ODUyMiwgNDg1MjYsIDQ4NTMxLCAKLSAgICA0ODUzNSwgNDg1NDAsIDQ4NTQ1LCA0ODU1NCwgNDg1NTYsIDQ4NTYwLCA0ODU2NCwgNDg1NzEsIDQ4NTc4LCA0ODU4MywgCi0gICAgNDg1OTEsIDQ4NTk3LCAwLCA0ODYwMywgMCwgNDg2MDYsIDQ4NjExLCA0ODYxNiwgNDg2MjQsIDQ4NjI4LCA0ODYzNSwgCi0gICAgNDg2NDMsIDQ4NjUxLCA0ODY1NiwgNDg2NjEsIDQ4NjY3LCA0ODY3MiwgNDg2NzcsIDQ4NjgzLCA0ODY4OCwgNDg2OTEsIAotICAgIDQ4Njk1LCA0ODY5OSwgNDg3MDYsIDQ4NzE1LCA0ODcyMCwgNDg3MjksIDQ4NzM4LCA0ODc0NCwgNDg3NTAsIDQ4NzU1LCAKLSAgICA0ODc2MCwgNDg3NjUsIDQ4NzcwLCA0ODc3NiwgNDg3ODIsIDQ4NzkwLCA0ODc5OCwgNDg4MDQsIDQ4ODEwLCA0ODgxNSwgCi0gICAgNDg4MjAsIDQ4ODI3LCA0ODgzNCwgNDg4NDAsIDQ4ODQzLCA0ODg0NiwgNDg4NTAsIDQ4ODU0LCA0ODg1OCwgNDg4NjMsIAotICAgIDQ4ODY5LCA0ODg3NSwgNDg4ODIsIDQ4ODg5LCA0ODg5NCwgNDg4OTgsIDQ4OTAyLCA0ODkwNiwgNDg5MTAsIDQ4OTE0LCAKLSAgICA0ODkxOCwgNDg5MjIsIDQ4OTI2LCA0ODkzMCwgNDg5MzQsIDQ4OTM4LCA0ODk0MiwgNDg5NDYsIDQ4OTUwLCA0ODk1NCwgCi0gICAgNDg5NTgsIDQ4OTYyLCA0ODk2NiwgNDg5NzAsIDQ4OTc0LCA0ODk3OCwgNDg5ODIsIDQ4OTg2LCA0ODk5MCwgNDg5OTQsIAotICAgIDQ4OTk4LCA0OTAwMiwgNDkwMDYsIDQ5MDEwLCA0OTAxNCwgNDkwMTgsIDQ5MDIyLCA0OTAyNiwgNDkwMzAsIDQ5MDM0LCAKLSAgICA0OTAzOCwgNDkwNDIsIDQ5MDQ2LCA0OTA1MCwgNDkwNTQsIDQ5MDU4LCA0OTA2MiwgNDkwNjYsIDQ5MDcwLCA0OTA3NCwgCi0gICAgNDkwNzgsIDQ5MDgyLCA0OTA4NiwgNDkwOTAsIDQ5MDk0LCA0OTA5OCwgNDkxMDIsIDQ5MTA2LCA0OTExMCwgNDkxMTQsIAotICAgIDQ5MTE4LCA0OTEyMiwgNDkxMjYsIDQ5MTMwLCA0OTEzNCwgNDkxMzgsIDQ5MTQyLCA0OTE0NiwgNDkxNTAsIDQ5MTU0LCAKLSAgICA0OTE1OCwgNDkxNjIsIDQ5MTY2LCA0OTE3MCwgNDkxNzQsIDQ5MTc4LCA0OTE4MiwgNDkxODYsIDQ5MTkwLCA0OTE5NCwgCi0gICAgNDkxOTgsIDQ5MjAyLCA0OTIwNiwgNDkyMTAsIDQ5MjE0LCA0OTIxOCwgNDkyMjIsIDQ5MjI2LCA0OTIzMCwgNDkyMzQsIAotICAgIDQ5MjM4LCA0OTI0MiwgNDkyNDYsIDQ5MjUwLCA0OTI1NCwgNDkyNTgsIDQ5MjYyLCA0OTI2NiwgNDkyNzAsIDQ5Mjc0LCAKLSAgICA0OTI3OCwgNDkyODIsIDQ5Mjg2LCA0OTI5MCwgNDkyOTQsIDQ5Mjk4LCA0OTMwMiwgNDkzMDYsIDQ5MzEwLCA0OTMxNCwgCi0gICAgNDkzMTgsIDQ5MzIyLCA0OTMyNiwgNDkzMzAsIDQ5MzM0LCA0OTMzOCwgNDkzNDIsIDQ5MzQ2LCA0OTM1MCwgNDkzNTQsIAotICAgIDQ5MzU4LCA0OTM2MiwgNDkzNjYsIDQ5MzcwLCA0OTM3NCwgNDkzNzgsIDQ5MzgyLCA0OTM4NiwgNDkzOTAsIDQ5Mzk0LCAKLSAgICA0OTM5OCwgNDk0MDIsIDQ5NDA2LCA0OTQxMCwgNDk0MTQsIDQ5NDE4LCA0OTQyMiwgNDk0MjYsIDQ5NDMwLCA0OTQzNCwgCi0gICAgNDk0MzgsIDQ5NDQyLCA0OTQ0NiwgNDk0NTAsIDQ5NDU0LCA0OTQ1OCwgNDk0NjIsIDQ5NDY2LCA0OTQ3MCwgNDk0NzQsIAotICAgIDQ5NDc4LCA0OTQ4MiwgNDk0ODYsIDQ5NDkwLCA0OTQ5NCwgNDk0OTgsIDQ5NTAyLCA0OTUwNiwgNDk1MTAsIDQ5NTE0LCAKLSAgICA0OTUxOCwgNDk1MjIsIDQ5NTI2LCA0OTUzMCwgNDk1MzQsIDQ5NTM4LCA0OTU0MiwgNDk1NDYsIDQ5NTUwLCA0OTU1NCwgCi0gICAgNDk1NTgsIDQ5NTYyLCA0OTU2NiwgNDk1NzAsIDQ5NTc0LCA0OTU3OCwgNDk1ODIsIDQ5NTg2LCA0OTU5MCwgNDk1OTQsIAotICAgIDQ5NTk4LCA0OTYwMiwgNDk2MDYsIDQ5NjEwLCA0OTYxNCwgNDk2MTgsIDQ5NjIyLCA0OTYyNiwgNDk2MzAsIDQ5NjM0LCAKLSAgICA0OTYzOCwgNDk2NDIsIDQ5NjQ2LCA0OTY1MCwgNDk2NTQsIDQ5NjU4LCA0OTY2MiwgNDk2NjYsIDQ5NjcwLCA0OTY3NCwgCi0gICAgNDk2NzgsIDQ5NjgyLCA0OTY4NiwgNDk2OTAsIDQ5Njk0LCA0OTY5OCwgNDk3MDIsIDQ5NzA2LCA0OTcxMCwgNDk3MTQsIAotICAgIDQ5NzE4LCA0OTcyMiwgNDk3MjYsIDQ5NzMwLCA0OTczNCwgNDk3MzgsIDQ5NzQyLCA0OTc0NiwgNDk3NTAsIDQ5NzU0LCAKLSAgICA0OTc1OCwgNDk3NjIsIDQ5NzY2LCA0OTc3MCwgNDk3NzQsIDQ5Nzc4LCA0OTc4MiwgNDk3ODYsIDQ5NzkwLCA0OTc5NCwgCi0gICAgNDk3OTgsIDQ5ODAyLCA0OTgwNiwgNDk4MTAsIDQ5ODE0LCA0OTgxOCwgNDk4MjIsIDQ5ODI2LCA0OTgzMCwgNDk4MzQsIAotICAgIDQ5ODM4LCA0OTg0MiwgNDk4NDYsIDQ5ODUwLCA0OTg1NCwgNDk4NTgsIDQ5ODYyLCA0OTg2NiwgNDk4NzAsIDQ5ODc0LCAKLSAgICA0OTg3OCwgNDk4ODIsIDQ5ODg2LCA0OTg5MCwgNDk4OTQsIDQ5ODk4LCA0OTkwMiwgNDk5MDYsIDQ5OTEwLCA0OTkxNCwgCi0gICAgNDk5MTgsIDQ5OTI1LCA0OTkzMywgNDk5MzksIDQ5OTQ1LCA0OTk1MiwgNDk5NTksIDQ5OTY1LCA0OTk3MSwgNDk5NzcsIAotICAgIDQ5OTgzLCA0OTk4OCwgNDk5OTMsIDQ5OTk4LCA1MDAwMywgNTAwMDksIDUwMDE1LCA1MDAyMywgNTAwMzAsIDUwMDM2LCAKLSAgICA1MDA0MiwgNTAwNTAsIDUwMDU5LCA1MDA2NiwgNTAwNzYsIDUwMDg3LCA1MDA5MCwgNTAwOTMsIDUwMDk3LCA1MDEwMSwgCi0gICAgNTAxMDgsIDUwMTE1LCA1MDEyNiwgNTAxMzcsIDUwMTQ3LCA1MDE1NywgNTAxNjQsIDUwMTcxLCA1MDE3OCwgNTAxODUsIAotICAgIDUwMTk2LCA1MDIwNywgNTAyMTgsIDUwMjI5LCA1MDIzOSwgNTAyNDksIDUwMjYxLCA1MDI3MywgNTAyODQsIDUwMjk1LCAKLSAgICA1MDMwNywgNTAzMTksIDUwMzI4LCA1MDMzOCwgNTAzNDgsIDUwMzU5LCA1MDM3MCwgNTAzNzcsIDUwMzg0LCA1MDM5MSwgCi0gICAgNTAzOTgsIDUwNDA4LCA1MDQxOCwgNTA0MjYsIDUwNDM0LCA1MDQ0MSwgNTA0NDgsIDUwNDU1LCA1MDQ2MiwgNTA0NjksIAotICAgIDUwNDc0LCA1MDQ3OSwgNTA0ODUsIDUwNDkzLCA1MDUwMywgNTA1MTEsIDUwNTE5LCA1MDUyNywgNTA1MzUsIDUwNTQzLCAKLSAgICA1MDU1MSwgNTA1NTksIDUwNTY3LCA1MDU3NiwgNTA1ODUsIDUwNTk1LCA1MDYwNSwgNTA2MTQsIDUwNjIzLCA1MDYzMywgCi0gICAgNTA2NDMsIDUwNjUyLCA1MDY2MSwgNTA2NzEsIDUwNjgxLCA1MDY5MCwgNTA2OTksIDUwNzA5LCA1MDcxOSwgNTA3MzMsIAotICAgIDUwNzUwLCA1MDc2NCwgNTA3ODEsIDUwNzk1LCA1MDgwOSwgNTA4MjMsIDUwODM3LCA1MDg0NywgNTA4NTgsIDUwODY4LCAKLSAgICA1MDg3OSwgNTA4OTYsIDUwOTEzLCA1MDkyMSwgNTA5MjcsIDUwOTM0LCA1MDk0MSwgNTA5NDgsIDUwOTU1LCA1MDk2MCwgCi0gICAgNTA5NjYsIDUwOTcxLCA1MDk3NiwgNTA5ODIsIDUwOTg3LCA1MDk5MiwgNTA5OTcsIDUxMDAyLCA1MTAwNywgNTEwMTQsIAotICAgIDUxMDE5LCA1MTAyNiwgNTEwMzEsIDUxMDM2LCA1MTA0MCwgNTEwNDQsIDUxMDUxLCA1MTA1OCwgNTEwNjUsIDUxMDcyLCAKLSAgICA1MTA3OSwgNTEwODYsIDUxMDk5LCA1MTExMiwgNTExMjUsIDUxMTM4LCA1MTE0NiwgNTExNTQsIDUxMTYwLCA1MTE2NiwgCi0gICAgNTExNzMsIDUxMTgwLCA1MTE4NywgNTExOTQsIDUxMTk4LCA1MTIwMywgNTEyMTEsIDUxMjE5LCA1MTIyNywgNTEyMzQsIAotICAgIDUxMjM4LCA1MTI0NiwgNTEyNTQsIDUxMjU4LCA1MTI2MiwgNTEyNjcsIDUxMjc0LCA1MTI4MiwgNTEyOTAsIDUxMzEwLCAKLSAgICA1MTMzMCwgNTEzNTAsIDUxMzcwLCA1MTM5MCwgNTE0MTAsIDUxNDMwLCA1MTQ1MCwgNTE0NTYsIDUxNDYzLCA1MTQ3MiwgCi0gICAgNTE0ODAsIDUxNDg4LCA1MTQ5MywgNTE0OTYsIDUxNDk5LCA1MTUwNCwgNTE1MDcsIDUxNTI2LCA1MTUzMywgNTE1MzksIAotICAgIDUxNTQ1LCA1MTU0OSwgNTE1NTIsIDUxNTU1LCA1MTU1OCwgNTE1NzAsIDUxNTgzLCA1MTU5MCwgNTE1OTcsIDUxNjAwLCAKLSAgICA1MTYwNCwgNTE2MDcsIDUxNjEyLCA1MTYxNywgNTE2MjIsIDUxNjI4LCA1MTYzNywgNTE2NDQsIDUxNjUxLCA1MTY1OSwgCi0gICAgNTE2NjYsIDUxNjczLCA1MTY3NiwgNTE2ODIsIDUxNjg4LCA1MTY5MSwgNTE2OTQsIDUxNjk5LCA1MTcwNCwgNTE3MTAsIAotICAgIDUxNzE2LCA1MTcyMCwgNTE3MjUsIDUxNzMyLCA1MTczNiwgNTE3NDIsIDUxNzQ2LCA1MTc1MCwgNTE3NTgsIDUxNzcwLCAKLSAgICA1MTc3OSwgNTE3ODMsIDUxNzg1LCA1MTc5NCwgNTE4MDMsIDUxODA5LCA1MTgxMiwgNTE4MTgsIDUxODI0LCA1MTgyOSwgCi0gICAgNTE4MzQsIDUxODM5LCA1MTg0NCwgNTE4NDksIDUxODU0LCA1MTg1NiwgNTE4NjIsIDUxODY3LCA1MTg3NCwgNTE4NzgsIAotICAgIDUxODg0LCA1MTg4NywgNTE4OTEsIDUxODk4LCA1MTkwNSwgNTE5MDcsIDUxOTA5LCA1MTkxNSwgNTE5MjEsIDUxOTI3LCAKLSAgICA1MTkzNiwgNTE5NDUsIDUxOTUyLCA1MTk1OSwgNTE5NjUsIDUxOTcxLCA1MTk3NiwgNTE5ODEsIDUxOTg2LCA1MTk5MiwgCi0gICAgNTE5OTgsIDUyMDAzLCA1MjAxMCwgNTIwMTQsIDUyMDE4LCA1MjAzMSwgNTIwNDQsIDUyMDU2LCA1MjA2NSwgNTIwNzEsIAotICAgIDUyMDc4LCA1MjA4MywgNTIwODgsIDUyMDkzLCA1MjA5OCwgNTIxMDMsIDUyMTA1LCA1MjExMiwgNTIxMTksIDUyMTI2LCAKLSAgICA1MjEzMywgNTIxNDAsIDUyMTQ4LCA1MjE1NCwgNTIxNTksIDUyMTY1LCA1MjE3MSwgNTIxNzcsIDUyMTg0LCA1MjE5MCwgCi0gICAgNTIxOTgsIDUyMjA2LCA1MjIxNCwgNTIyMjIsIDUyMjI5LCA1MjIzNSwgNTIyNDEsIDUyMjUwLCA1MjI1NCwgNTIyNjMsIAotICAgIDUyMjcyLCA1MjI4MSwgNTIyODksIDUyMjkzLCA1MjI5OSwgNTIzMDYsIDUyMzEzLCA1MjMxNywgNTIzMjMsIDUyMzMwLCAKLSAgICA1MjMzNSwgNTIzNDAsIDUyMzQ2LCA1MjM1MSwgNTIzNTYsIDUyMzYzLCA1MjM3MCwgNTIzNzUsIDUyMzgwLCA1MjM4OCwgCi0gICAgNTIzOTYsIDUyNDA2LCA1MjQxNiwgNTI0MjMsIDUyNDMwLCA1MjQzNCwgNTI0MzgsIDUyNDUwLCA1MjQ1NiwgNTI0NjIsIAotICAgIDUyNDY3LCA1MjQ3MiwgNTI0NzksIDUyNDg2LCA1MjQ5MiwgNTI0OTgsIDUyNTA3LCA1MjUxNSwgNTI1MjMsIDUyNTMwLCAKLSAgICA1MjUzNywgNTI1NDQsIDUyNTUwLCA1MjU1NywgNTI1NjMsIDUyNTcwLCA1MjU3NywgNTI1ODQsIDUyNTkxLCA1MjU5NywgCi0gICAgNTI2MDIsIDUyNjExLCA1MjYyMSwgNTI2MjgsIDUyNjM3LCA1MjY0MywgNTI2NDgsIDUyNjUzLCA1MjY2MywgNTI2NjksIAotICAgIDUyNjc1LCA1MjY4MSwgNTI2ODksIDUyNjk0LCA1MjcwMSwgNTI3MDgsIDUyNzE5LCA1MjcyNiwgNTI3MzMsIDUyNzQwLCAKLSAgICA1Mjc0NywgNTI3NTQsIDUyNzYxLCA1Mjc2OCwgNTI3ODAsIDUyNzkyLCA1MjgwMywgNTI4MTQsIDUyODI3LCA1Mjg0MCwgCi0gICAgNTI4NDUsIDUyODUwLCA1Mjg1OSwgNTI4NjgsIDUyODc1LCA1Mjg4MiwgNTI4OTEsIDUyOTAwLCA1MjkwOCwgNTI5MTYsIAotICAgIDUyOTI0LCA1MjkzMiwgNTI5NDIsIDUyOTUyLCA1Mjk2NiwgNTI5ODAsIDUyOTg4LCA1Mjk5NiwgNTMwMDgsIDUzMDIwLCAKLSAgICA1MzAyOCwgNTMwMzYsIDUzMDQ2LCA1MzA1NiwgNTMwNjEsIDUzMDY2LCA1MzA3NSwgNTMwODQsIDUzMDg5LCA1MzA5NCwgCi0gICAgNTMxMDIsIDUzMTA4LCA1MzExNCwgNTMxMjIsIDUzMTMwLCA1MzE0MywgNTMxNTYsIDUzMTYwLCA1MzE2NCwgNTMxNzEsIAotICAgIDUzMTc4LCA1MzE4NSwgNTMxOTMsIDUzMjAxLCA1MzIxMCwgNTMyMTksIDUzMjI1LCA1MzIzMSwgNTMyMzgsIDUzMjQ1LCAKLSAgICA1MzI1MiwgNTMyNTksIDUzMjY4LCA1MzI3NywgNTMyODAsIDUzMjgzLCA1MzI4OCwgNTMyOTMsIDUzMjk5LCA1MzMwNSwgCi0gICAgNTMzMTIsIDUzMzE5LCA1MzMyOSwgNTMzMzksIDUzMzQ2LCA1MzM1MywgNTMzNjEsIDUzMzY5LCA1MzM3NywgNTMzODUsIAotICAgIDUzMzkzLCA1MzQwMSwgNTM0MDgsIDUzNDE1LCA1MzQxOSwgNTM0MjMsIDUzNDMwLCA1MzQzNywgNTM0NDIsIDUzNDQ3LCAKLSAgICA1MzQ1MiwgNTM0NTcsIDUzNDYzLCA1MzQ3NywgNTM0ODQsIDUzNDkxLCA1MzQ5NSwgNTM0OTcsIDUzNDk5LCA1MzUwNCwgCi0gICAgNTM1MDksIDUzNTE0LCA1MzUxOCwgNTM1MjYsIDUzNTMzLCA1MzU0MCwgNTM1NDgsIDUzNTYwLCA1MzU2OCwgNTM1NzYsIAotICAgIDUzNTg3LCA1MzU5MSwgNTM1OTUsIDUzNjAxLCA1MzYwOSwgNTM2MjIsIDUzNjI5LCA1MzYzNiwgNTM2NDMsIDUzNjQ4LCAKLSAgICA1MzY1NSwgNTM2NjQsIDUzNjcyLCA1MzY3OCwgNTM2ODQsIDUzNjkwLCA1MzY5OSwgNTM3MDgsIDUzNzE2LCA1MzcyNSwgCi0gICAgNTM3MzAsIDUzNzMzLCA1MzczOCwgNTM3NDQsIDUzNzUwLCA1Mzc1NiwgNTM3NjIsIDUzNzY2LCA1Mzc2OSwgNTM3NzMsIAotICAgIDUzNzc3LCA1Mzc4MywgNTM3ODksIDUzNzk1LCA1MzgwMSwgNTM4MDUsIDUzODA5LCA1MzgxNiwgNTM4MjMsIDUzODMwLCAKLSAgICA1MzgzNywgNTM4NDQsIDUzODUxLCA1Mzg2MSwgNTM4NzEsIDUzODc4LCA1Mzg4NSwgNTM4OTMsIDUzOTAxLCA1MzkwNSwgCi0gICAgNTM5MTAsIDUzOTE1LCA1MzkyMSwgNTM5MjcsIDUzOTMwLCA1MzkzMywgNTM5MzYsIDUzOTM5LCA1Mzk0MywgNTM5NDgsIAotICAgIDUzOTUzLCA1Mzk1OCwgNTM5NjMsIDUzOTY4LCA1Mzk3MiwgNTM5NzYsIDUzOTgwLCA1Mzk4NCwgNTM5ODgsIDUzOTkyLCAKLSAgICA1Mzk5NiwgNTQwMDIsIDU0MDA2LCA1NDAxMiwgNTQwMTcsIDU0MDI0LCA1NDAzMiwgNTQwMzksIDU0MDQ3LCA1NDA1NCwgCi0gICAgNTQwNjIsIDU0MDcxLCA1NDA3OCwgNTQwODgsIDU0MDk5LCA1NDEwNSwgNTQxMTQsIDU0MTIwLCA1NDEyOSwgNTQxMzgsIAotICAgIDU0MTQ0LCA1NDE1MCwgNTQxNTQsIDU0MTU4LCA1NDE2NywgNTQxNzYsIDU0MTgzLCA1NDE5MCwgNTQxOTksIDAsIDAsIDAsIAotICAgIDU0MjA4LCA1NDIxMywgNTQyMTcsIDU0MjIxLCA1NDIyNiwgNTQyMzEsIDU0MjM2LCA1NDI0NCwgNTQyNTIsIDU0MjU1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDI1OSwgNTQyNjQsIDU0MjY5LCA1NDI3NCwgNTQyNzksIAotICAgIDU0Mjg0LCA1NDI4OSwgNTQyOTQsIDU0Mjk5LCA1NDMwNCwgNTQzMDksIDU0MzE1LCA1NDMxOSwgNTQzMjQsIDU0MzI5LCAKLSAgICA1NDMzNCwgNTQzMzksIDU0MzQ0LCA1NDM0OSwgNTQzNTQsIDU0MzU5LCA1NDM2NCwgNTQzNjksIDU0Mzc0LCA1NDM3OSwgCi0gICAgNTQzODQsIDU0Mzg5LCA1NDM5NCwgNTQzOTksIDU0NDA0LCA1NDQwOSwgNTQ0MTQsIDU0NDE5LCA1NDQyNCwgNTQ0MjksIAotICAgIDU0NDM1LCA1NDQ0MCwgNTQ0NDYsIDU0NDU1LCA1NDQ2MCwgNTQ0NjgsIDU0NDc1LCA1NDQ4NCwgNTQ0ODksIDU0NDk0LCAKLSAgICA1NDQ5OSwgNTQ1MDUsIDAsIDU0NTEyLCA1NDUxNywgNTQ1MjIsIDU0NTI3LCA1NDUzMiwgNTQ1MzcsIDU0NTQyLCA1NDU0NywgCi0gICAgNTQ1NTIsIDU0NTU3LCA1NDU2MiwgNTQ1NjgsIDU0NTcyLCA1NDU3NywgNTQ1ODIsIDU0NTg3LCA1NDU5MiwgNTQ1OTcsIAotICAgIDU0NjAyLCA1NDYwNywgNTQ2MTIsIDU0NjE3LCA1NDYyMiwgNTQ2MjcsIDU0NjMyLCA1NDYzNywgNTQ2NDIsIDU0NjQ3LCAKLSAgICA1NDY1MiwgNTQ2NTcsIDU0NjYyLCA1NDY2NywgNTQ2NzIsIDU0Njc3LCA1NDY4MiwgNTQ2ODgsIDU0NjkzLCA1NDY5OSwgCi0gICAgNTQ3MDgsIDU0NzEzLCA1NDcyMSwgNTQ3MjgsIDU0NzM3LCA1NDc0MiwgNTQ3NDcsIDU0NzUyLCA1NDc1OCwgMCwgNTQ3NjUsIAotICAgIDU0NzczLCA1NDc4MSwgNTQ3OTEsIDU0Nzk4LCA1NDgwNiwgNTQ4MTIsIDU0ODIxLCA1NDgyOSwgNTQ4MzcsIDU0ODQ1LCAKLSAgICA1NDg1MywgNTQ4NjEsIDU0ODY5LCA1NDg3NCwgNTQ4ODEsIDU0ODg3LCA1NDg5NCwgNTQ5MDIsIDU0OTA5LCA1NDkxNiwgCi0gICAgNTQ5MjQsIDU0OTMwLCA1NDkzNiwgNTQ5NDMsIDU0OTUwLCA1NDk2MCwgNTQ5NzAsIDU0OTc3LCA1NDk4NCwgNTQ5ODksIAotICAgIDU0OTk5LCA1NTAwOSwgNTUwMTQsIDU1MDE5LCA1NTAyNCwgNTUwMjksIDU1MDM0LCA1NTAzOSwgNTUwNDQsIDU1MDQ5LCAKLSAgICA1NTA1NCwgNTUwNTksIDU1MDY0LCA1NTA2OSwgNTUwNzQsIDU1MDc5LCA1NTA4NCwgNTUwODksIDU1MDk0LCA1NTA5OSwgCi0gICAgNTUxMDQsIDU1MTA5LCA1NTExNCwgNTUxMTksIDU1MTI0LCA1NTEyOSwgNTUxMzQsIDU1MTM5LCA1NTE0NCwgNTUxNDksIAotICAgIDU1MTU0LCA1NTE1OSwgNTUxNjMsIDU1MTY3LCA1NTE3MiwgNTUxNzcsIDU1MTgyLCA1NTE4NywgNTUxOTIsIDU1MTk3LCAKLSAgICA1NTIwMiwgNTUyMDcsIDU1MjEyLCA1NTIxNywgNTUyMjIsIDU1MjI3LCA1NTIzMiwgNTUyMzcsIDU1MjQyLCA1NTI0NywgCi0gICAgNTUyNTIsIDU1MjU3LCA1NTI2NCwgNTUyNzEsIDU1Mjc4LCA1NTI4NSwgNTUyOTIsIDU1Mjk5LCA1NTMwNiwgNTUzMTMsIAotICAgIDU1MzIwLCA1NTMyNywgNTUzMzQsIDU1MzQxLCA1NTM0OCwgNTUzNTUsIDU1MzYwLCA1NTM2NSwgNTUzNzIsIDU1Mzc5LCAKLSAgICA1NTM4NiwgNTUzOTMsIDU1NDAwLCA1NTQwNywgNTU0MTQsIDU1NDIxLCA1NTQyOCwgNTU0MzUsIDU1NDQyLCA1NTQ0OSwgCi0gICAgNTU0NTUsIDU1NDYxLCA1NTQ2NywgNTU0NzMsIDU1NDgwLCA1NTQ4NywgNTU0OTQsIDU1NTAxLCA1NTUwOCwgNTU1MTUsIAotICAgIDU1NTIyLCA1NTUyOSwgNTU1MzYsIDU1NTQzLCA1NTU1MSwgNTU1NTksIDU1NTY3LCA1NTU3NSwgNTU1ODMsIDU1NTkxLCAKLSAgICA1NTU5OSwgNTU2MDcsIDU1NjExLCA1NTYxNywgNTU2MjMsIDU1NjI3LCA1NTYzMywgNTU2MzksIDU1NjQ1LCA1NTY1MiwgCi0gICAgNTU2NTksIDU1NjY2LCA1NTY3MywgNTU2NzgsIDU1Njg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTY5MCwgNTU2OTgsIAotICAgIDU1NzA3LCA1NTcxNiwgNTU3MjQsIDU1NzMwLCA1NTczNSwgNTU3NDAsIDU1NzQ1LCA1NTc1MCwgNTU3NTUsIDU1NzYwLCAKLSAgICA1NTc2NSwgNTU3NzAsIDU1Nzc1LCA1NTc4MCwgNTU3ODUsIDU1NzkwLCA1NTc5NSwgNTU4MDAsIDU1ODA1LCA1NTgxMCwgCi0gICAgNTU4MTUsIDU1ODIwLCA1NTgyNSwgNTU4MzAsIDU1ODM1LCA1NTg0MCwgNTU4NDUsIDU1ODUwLCA1NTg1NSwgNTU4NjAsIAotICAgIDU1ODY1LCA1NTg3MCwgNTU4NzUsIDU1ODgwLCA1NTg4NSwgNTU4OTAsIDU1ODk1LCA1NTkwMCwgNTU5MDUsIDU1OTEwLCAKLSAgICA1NTkxNSwgNTU5MjAsIDU1OTI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTkzMCwgNTU5MzQsIDU1OTM5LCAKLSAgICA1NTk0NCwgNTU5NDksIDU1OTU0LCA1NTk2MywgNTU5NjgsIDU1OTczLCA1NTk3OCwgNTU5ODMsIDU1OTg4LCA1NTk5MywgCi0gICAgNTU5OTgsIDU2MDAzLCA1NjAxMCwgNTYwMTUsIDU2MDIwLCA1NjAyOSwgNTYwMzYsIDU2MDQxLCA1NjA0NiwgNTYwNTEsIAotICAgIDU2MDU4LCA1NjA2MywgNTYwNzAsIDU2MDc1LCA1NjA4MCwgNTYwODcsIDU2MDk0LCA1NjA5OSwgNTYxMDQsIDU2MTA5LCAKLSAgICA1NjExNiwgNTYxMjMsIDU2MTI4LCA1NjEzMywgNTYxMzgsIDU2MTQzLCA1NjE0OCwgNTYxNTUsIDU2MTYyLCA1NjE2NywgCi0gICAgNTYxNzIsIDU2MTc3LCA1NjE4MiwgNTYxODcsIDU2MTkyLCA1NjE5NywgNTYyMDIsIDU2MjA3LCA1NjIxMiwgNTYyMTcsIAotICAgIDU2MjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjIyOSwgNTYyMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU2MjQxLCA1NjI0NywgNTYyNTEsIDU2MjU1LCA1NjI1OSwgNTYyNjMsIDU2MjY3LCA1NjI3MSwgCi0gICAgNTYyNzUsIDU2Mjc5LCA1NjI4MywgNTYyODcsIDU2MjkzLCA1NjI5NywgNTYzMDEsIDU2MzA1LCA1NjMwOSwgNTYzMTMsIAotICAgIDU2MzE3LCA1NjMyMSwgNTYzMjUsIDU2MzI5LCA1NjMzMywgNTYzMzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU2MzQxLCA1NjM0NSwgNTYzNDksIDU2MzUzLCA1NjM1NywgNTYzNjEsIDU2MzY1LCAwLCA1NjM2OSwgNTYzNzMsIDU2Mzc3LCAKLSAgICA1NjM4MSwgNTYzODUsIDU2Mzg5LCA1NjM5MywgMCwgNTYzOTcsIDU2NDAxLCA1NjQwNSwgNTY0MDksIDU2NDEzLCA1NjQxNywgCi0gICAgNTY0MjEsIDAsIDU2NDI1LCA1NjQyOSwgNTY0MzMsIDU2NDM3LCA1NjQ0MSwgNTY0NDUsIDU2NDQ5LCAwLCA1NjQ1MywgCi0gICAgNTY0NTcsIDU2NDYxLCA1NjQ2NSwgNTY0NjksIDU2NDczLCA1NjQ3NywgMCwgNTY0ODEsIDU2NDg1LCA1NjQ4OSwgNTY0OTMsIAotICAgIDU2NDk3LCA1NjUwMSwgNTY1MDUsIDAsIDU2NTA5LCA1NjUxMywgNTY1MTcsIDU2NTIxLCA1NjUyNSwgNTY1MjksIDU2NTMzLCAKLSAgICAwLCA1NjUzNywgNTY1NDEsIDU2NTQ1LCA1NjU0OSwgNTY1NTMsIDU2NTU3LCA1NjU2MSwgMCwgNTY1NjUsIDU2NTcwLCAKLSAgICA1NjU3NSwgNTY1ODAsIDU2NTg1LCA1NjU5MCwgNTY1OTUsIDU2NTk5LCA1NjYwNCwgNTY2MDksIDU2NjE0LCA1NjYxOCwgCi0gICAgNTY2MjMsIDU2NjI4LCA1NjYzMywgNTY2MzgsIDU2NjQyLCA1NjY0NywgNTY2NTIsIDU2NjU3LCA1NjY2MiwgNTY2NjcsIAotICAgIDU2NjcyLCA1NjY3NiwgNTY2ODEsIDU2Njg2LCA1NjY5MywgNTY2OTgsIDU2NzAzLCA1NjcwOSwgNTY3MTYsIDU2NzIzLCAKLSAgICA1NjczMiwgNTY3MzksIDU2NzQ4LCA1Njc1MiwgNTY3NTYsIDU2NzYyLCA1Njc2OCwgNTY3NzQsIDU2NzgyLCA1Njc4OCwgCi0gICAgNTY3OTIsIDU2Nzk2LCA1NjgwMCwgNTY4MDYsIDU2ODEyLCA1NjgxNiwgNTY4MTgsIDU2ODIyLCA1NjgyOCwgNTY4MzAsIAotICAgIDU2ODM0LCA1NjgzOCwgNTY4NDIsIDU2ODQ4LCA1Njg1MywgNTY4NTcsIDU2ODYxLCA1Njg2NiwgNTY4NzIsIDU2ODc3LCAKLSAgICA1Njg4MiwgNTY4ODcsIDU2ODkyLCA1Njg5OSwgNTY5MDYsIDU2OTExLCA1NjkxNiwgNTY5MjEsIDU2OTI2LCA1NjkzMSwgCi0gICAgNTY5MzYsIDU2OTQwLCA1Njk0NCwgNTY5NTEsIDU2OTU4LCA1Njk2NCwgNTY5NjgsIDU2OTczLCA1Njk3NiwgNTY5ODAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU2OTg4LCA1Njk5MiwgNTY5OTYsIDU3MDAxLCA1NzAwNiwgNTcwMTEsIDU3MDE1LCA1NzAxOSwgCi0gICAgNTcwMjMsIDU3MDI4LCA1NzAzMywgNTcwMzcsIDU3MDQxLCA1NzA0NSwgNTcwNDksIDU3MDU0LCA1NzA1OSwgNTcwNjQsIAotICAgIDU3MDY5LCA1NzA3MywgNTcwNzcsIDU3MDgyLCA1NzA4NywgNTcwOTIsIDU3MDk3LCA1NzEwMSwgMCwgNTcxMDUsIDU3MTA5LCAKLSAgICA1NzExMywgNTcxMTcsIDU3MTIxLCA1NzEyNSwgNTcxMjksIDU3MTM0LCA1NzEzOSwgNTcxNDMsIDU3MTQ4LCA1NzE1MywgCi0gICAgNTcxNjIsIDU3MTY2LCA1NzE3MCwgNTcxNzQsIDU3MTgxLCA1NzE4NSwgNTcxOTAsIDU3MTk1LCA1NzE5OSwgNTcyMDMsIAotICAgIDU3MjA5LCA1NzIxNCwgNTcyMTksIDU3MjI0LCA1NzIyOSwgNTcyMzMsIDU3MjM3LCA1NzI0MSwgNTcyNDUsIDU3MjQ5LCAKLSAgICA1NzI1NCwgNTcyNTksIDU3MjYzLCA1NzI2NywgNTcyNzIsIDU3Mjc3LCA1NzI4MiwgNTcyODYsIDU3MjkwLCA1NzI5NSwgCi0gICAgNTczMDAsIDU3MzA2LCA1NzMxMiwgNTczMTYsIDU3MzIyLCA1NzMyOCwgNTczMzIsIDU3MzM4LCA1NzM0NCwgNTczNDksIAotICAgIDU3MzU0LCA1NzM1OCwgNTczNjQsIDU3MzY4LCA1NzM3MiwgNTczNzgsIDU3Mzg0LCA1NzM4OSwgNTczOTQsIDU3Mzk4LCAKLSAgICA1NzQwMiwgNTc0MTAsIDU3NDE2LCA1NzQyMiwgNTc0MjgsIDU3NDMzLCA1NzQzOCwgNTc0NDMsIDU3NDQ5LCA1NzQ1MywgCi0gICAgNTc0NTksIDU3NDYzLCA1NzQ2NywgNTc0NzMsIDU3NDc5LCA1NzQ4NSwgNTc0OTEsIDU3NDk3LCA1NzUwMywgNTc1MDksIAotICAgIDU3NTE1LCA1NzUyMSwgNTc1MjcsIDU3NTMzLCA1NzUzOSwgNTc1NDMsIDU3NTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1NzU1NSwgNTc1NTgsIDU3NTYyLCA1NzU2NiwgNTc1NzAsIDU3NTc0LCA1NzU3NywgNTc1ODAsIAotICAgIDU3NTg0LCA1NzU4OCwgNTc1OTIsIDU3NTk2LCA1NzU5OSwgNTc2MDQsIDU3NjA4LCA1NzYxMiwgNTc2MTYsIDU3NjIyLCAKLSAgICA1NzYyNiwgNTc2MzAsIDU3NjM0LCA1NzYzOCwgNTc2NDUsIDU3NjUxLCA1NzY1NSwgNTc2NTksIDU3NjYzLCA1NzY2NywgCi0gICAgNTc2NzEsIDU3Njc1LCA1NzY3OSwgNTc2ODMsIDU3Njg3LCA1NzY5MSwgNTc2OTUsIDU3NzAxLCA1NzcwNSwgNTc3MDksIAotICAgIDU3NzEzLCA1NzcxNywgNTc3MjEsIDU3NzI1LCA1NzcyOSwgNTc3MzMsIDU3NzM3LCA1Nzc0MSwgNTc3NDUsIDU3NzQ5LCAKLSAgICA1Nzc1MywgNTc3NTcsIDU3NzYxLCA1Nzc2NSwgNTc3NzEsIDU3Nzc3LCA1Nzc4MiwgNTc3ODcsIDU3NzkxLCA1Nzc5NSwgCi0gICAgNTc3OTksIDU3ODAzLCA1NzgwNywgNTc4MTEsIDU3ODE1LCA1NzgxOSwgNTc4MjMsIDU3ODI3LCA1NzgzMSwgNTc4MzUsIAotICAgIDU3ODM5LCA1Nzg0MywgNTc4NDcsIDU3ODUxLCA1Nzg1NSwgNTc4NTksIDU3ODYzLCA1Nzg2NywgNTc4NzEsIDU3ODc1LCAKLSAgICA1Nzg3OSwgNTc4ODMsIDU3ODg5LCA1Nzg5MywgNTc4OTcsIDU3OTAxLCA1NzkwNSwgNTc5MDksIDU3OTEzLCA1NzkxNywgCi0gICAgNTc5MjEsIDU3OTI2LCA1NzkzMywgNTc5MzcsIDU3OTQxLCA1Nzk0NSwgNTc5NDksIDU3OTUzLCA1Nzk1NywgNTc5NjEsIAotICAgIDU3OTY1LCA1Nzk2OSwgNTc5NzMsIDU3OTc3LCA1Nzk4MSwgNTc5ODgsIDU3OTkyLCA1Nzk5OCwgNTgwMDIsIDU4MDA2LCAKLSAgICA1ODAxMCwgNTgwMTQsIDU4MDE4LCA1ODAyMSwgNTgwMjUsIDU4MDI5LCA1ODAzMywgNTgwMzcsIDU4MDQxLCA1ODA0NSwgCi0gICAgNTgwNDksIDU4MDUzLCA1ODA1NywgNTgwNjEsIDU4MDY1LCA1ODA2OSwgNTgwNzMsIDU4MDc3LCA1ODA4MSwgNTgwODUsIAotICAgIDU4MDg5LCA1ODA5MywgNTgwOTcsIDU4MTAxLCA1ODEwNSwgNTgxMDksIDU4MTEzLCA1ODExNywgNTgxMjEsIDU4MTI1LCAKLSAgICA1ODEyOSwgNTgxMzMsIDU4MTM3LCA1ODE0MSwgNTgxNDUsIDU4MTQ5LCA1ODE1NSwgNTgxNTksIDU4MTYzLCA1ODE2NywgCi0gICAgNTgxNzEsIDU4MTc1LCA1ODE3OSwgNTgxODMsIDU4MTg3LCA1ODE5MSwgNTgxOTUsIDU4MTk5LCA1ODIwMywgNTgyMDcsIAotICAgIDU4MjExLCA1ODIxNSwgNTgyMTksIDU4MjIzLCA1ODIyNywgNTgyMzEsIDU4MjM1LCA1ODIzOSwgNTgyNDMsIDU4MjQ3LCAKLSAgICA1ODI1MSwgNTgyNTUsIDU4MjU5LCA1ODI2MywgNTgyNzEsIDU4Mjc1LCA1ODI3OSwgNTgyODMsIDU4Mjg3LCA1ODI5MSwgCi0gICAgNTgyOTcsIDU4MzAxLCA1ODMwNSwgNTgzMDksIDU4MzEzLCA1ODMxNywgNTgzMjEsIDU4MzI1LCA1ODMyOSwgNTgzMzMsIAotICAgIDU4MzM3LCA1ODM0MSwgNTgzNDUsIDU4MzQ5LCA1ODM1NSwgNTgzNTksIDU4MzYzLCA1ODM2NywgNTgzNzEsIDU4Mzc1LCAKLSAgICA1ODM3OSwgNTgzODMsIDU4Mzg3LCA1ODM5MSwgNTgzOTUsIDU4Mzk5LCA1ODQwMywgNTg0MDcsIDU4NDExLCA1ODQxNSwgCi0gICAgNTg0MTksIDU4NDIzLCA1ODQyNywgNTg0MzEsIDU4NDM1LCA1ODQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg0NDMsIDU4NDUyLCA1ODQ2MCwgCi0gICAgNTg0NzIsIDU4NDgzLCA1ODQ5MSwgNTg1MDAsIDU4NTA5LCA1ODUxOSwgNTg1MzEsIDU4NTQzLCA1ODU1NSwgMCwgMCwgMCwgCi0gICAgMCwgNTg1NjEsIDU4NTY0LCA1ODU2NywgNTg1NzIsIDU4NTc1LCA1ODU4MiwgNTg1ODYsIDU4NTkwLCA1ODU5NCwgNTg1OTgsIAotICAgIDU4NjAyLCA1ODYwNywgNTg2MTIsIDU4NjE2LCA1ODYyMCwgNTg2MjUsIDU4NjMwLCA1ODYzNSwgNTg2NDAsIDU4NjQzLCAKLSAgICA1ODY0NiwgNTg2NTIsIDU4NjU4LCA1ODY2MywgNTg2NjgsIDU4Njc1LCA1ODY4MiwgNTg2ODYsIDU4NjkwLCA1ODY5NCwgCi0gICAgNTg3MDIsIDU4NzA4LCA1ODcxNSwgNTg3MjAsIDU4NzI1LCA1ODczMCwgNTg3MzUsIDU4NzQwLCA1ODc0NSwgNTg3NTAsIAotICAgIDU4NzU1LCA1ODc2MCwgNTg3NjUsIDU4NzcwLCA1ODc3NSwgNTg3ODAsIDU4Nzg1LCA1ODc5MSwgNTg3OTYsIDU4ODAwLCAKLSAgICA1ODgwNiwgNTg4MTcsIDU4ODI3LCA1ODg0MiwgNTg4NTIsIDU4ODU2LCA1ODg2NSwgNTg4NzEsIDU4ODc3LCA1ODg4MywgCi0gICAgNTg4ODgsIDU4ODkxLCA1ODg5NiwgNTg5MDAsIDAsIDU4OTA2LCA1ODkxMCwgNTg5MTMsIDU4OTE3LCA1ODkyMCwgNTg5MjQsIAotICAgIDU4OTI3LCA1ODkzMSwgNTg5MzQsIDU4OTM4LCA1ODk0MSwgNTg5NDQsIDU4OTQ4LCA1ODk1MiwgNTg5NTYsIDU4OTYwLCAKLSAgICA1ODk2NCwgNTg5NjgsIDU4OTcyLCA1ODk3NiwgNTg5ODAsIDU4OTg0LCA1ODk4OCwgNTg5OTIsIDU4OTk2LCA1OTAwMCwgCi0gICAgNTkwMDQsIDU5MDA4LCA1OTAxMiwgNTkwMTYsIDU5MDIwLCA1OTAyNCwgNTkwMjgsIDU5MDMyLCA1OTAzNiwgNTkwNDEsIAotICAgIDU5MDQ1LCA1OTA0OSwgNTkwNTMsIDU5MDU3LCA1OTA2MCwgNTkwNjQsIDU5MDY3LCA1OTA3MSwgNTkwNzUsIDU5MDc5LCAKLSAgICA1OTA4MywgNTkwODYsIDU5MDkwLCA1OTA5MywgNTkwOTcsIDU5MTAxLCA1OTEwNSwgNTkxMDksIDU5MTEzLCA1OTExNywgCi0gICAgNTkxMjEsIDU5MTI1LCA1OTEyOSwgNTkxMzMsIDU5MTM3LCA1OTE0MSwgNTkxNDQsIDU5MTQ4LCA1OTE1MiwgNTkxNTYsIAotICAgIDU5MTYwLCA1OTE2NCwgNTkxNjcsIDU5MTcyLCA1OTE3NiwgNTkxODEsIDU5MTg1LCA1OTE4OCwgNTkxOTIsIDU5MTk2LCAKLSAgICA1OTIwMCwgNTkyMDQsIDU5MjA5LCA1OTIxMywgNTkyMTcsIDU5MjIxLCA1OTIyNSwgNTkyMjgsIDU5MjMyLCA1OTIzNiwgMCwgCi0gICAgMCwgNTkyNDEsIDU5MjQ5LCA1OTI1NywgNTkyNjQsIDU5MjcxLCA1OTI3NSwgNTkyODEsIDU5Mjg2LCA1OTI5MSwgNTkyOTUsIAotICAgIDU5Mjk4LCA1OTMwMiwgNTkzMDUsIDU5MzA5LCA1OTMxMiwgNTkzMTYsIDU5MzE5LCA1OTMyMywgNTkzMjYsIDU5MzI5LCAKLSAgICA1OTMzMywgNTkzMzcsIDU5MzQxLCA1OTM0NSwgNTkzNDksIDU5MzUzLCA1OTM1NywgNTkzNjEsIDU5MzY1LCA1OTM2OSwgCi0gICAgNTkzNzMsIDU5Mzc3LCA1OTM4MSwgNTkzODUsIDU5Mzg5LCA1OTM5MywgNTkzOTcsIDU5NDAxLCA1OTQwNSwgNTk0MDksIAotICAgIDU5NDEzLCA1OTQxNywgNTk0MjEsIDU5NDI2LCA1OTQzMCwgNTk0MzQsIDU5NDM4LCA1OTQ0MiwgNTk0NDUsIDU5NDQ5LCAKLSAgICA1OTQ1MiwgNTk0NTYsIDU5NDYwLCA1OTQ2NCwgNTk0NjgsIDU5NDcxLCA1OTQ3NSwgNTk0NzgsIDU5NDgyLCA1OTQ4NiwgCi0gICAgNTk0OTAsIDU5NDk0LCA1OTQ5OCwgNTk1MDIsIDU5NTA2LCA1OTUxMCwgNTk1MTQsIDU5NTE4LCA1OTUyMiwgNTk1MjYsIAotICAgIDU5NTI5LCA1OTUzMywgNTk1MzcsIDU5NTQxLCA1OTU0NSwgNTk1NDksIDU5NTUyLCA1OTU1NywgNTk1NjEsIDU5NTY2LCAKLSAgICA1OTU3MCwgNTk1NzMsIDU5NTc3LCA1OTU4MSwgNTk1ODUsIDU5NTg5LCA1OTU5NCwgNTk1OTgsIDU5NjAyLCA1OTYwNiwgCi0gICAgNTk2MTAsIDU5NjEzLCA1OTYxNywgNTk2MjEsIDU5NjI2LCA1OTYzMCwgNTk2MzQsIDU5NjM4LCA1OTY0MiwgNTk2NDcsIAotICAgIDU5NjU0LCA1OTY1OCwgNTk2NjQsIDAsIDAsIDAsIDAsIDAsIDU5NjY5LCA1OTY3MywgNTk2NzcsIDU5NjgwLCA1OTY4NCwgCi0gICAgNTk2ODgsIDU5NjkyLCA1OTY5NSwgNTk2OTgsIDU5NzAyLCA1OTcwNiwgNTk3MTAsIDU5NzE0LCA1OTcxOCwgNTk3MjIsIAotICAgIDU5NzI2LCA1OTczMCwgNTk3MzQsIDU5NzM3LCA1OTc0MSwgNTk3NDUsIDU5NzQ4LCA1OTc1MSwgNTk3NTQsIDU5NzU3LCAKLSAgICA1OTc2MSwgNTk3NjUsIDU5NzY5LCA1OTc3MywgNTk3NzcsIDU5NzgxLCA1OTc4NSwgNTk3ODksIDU5NzkzLCA1OTc5NywgCi0gICAgNTk4MDAsIDU5ODAzLCA1OTgwNywgNTk4MTEsIDU5ODE1LCA1OTgxOSwgMCwgMCwgMCwgNTk4MjMsIDU5ODI3LCA1OTgzMSwgCi0gICAgNTk4MzUsIDU5ODM5LCA1OTg0MywgNTk4NDcsIDU5ODUxLCA1OTg1NSwgNTk4NTksIDU5ODYzLCA1OTg2NywgNTk4NzEsIAotICAgIDU5ODc1LCA1OTg3OSwgNTk4ODMsIDU5ODg3LCA1OTg5MSwgNTk4OTUsIDU5ODk5LCA1OTkwMywgNTk5MDcsIDU5OTExLCAKLSAgICA1OTkxNSwgNTk5MTksIDU5OTIzLCA1OTkyNywgNTk5MzEsIDU5OTM1LCA1OTkzOSwgNTk5NDMsIDU5OTQ2LCA1OTk1MCwgCi0gICAgNTk5NTMsIDU5OTU3LCA1OTk2MSwgNTk5NjQsIDU5OTY4LCA1OTk3MiwgNTk5NzUsIDU5OTc5LCA1OTk4MywgNTk5ODcsIAotICAgIDU5OTkxLCA1OTk5NCwgNTk5OTgsIDYwMDAyLCA2MDAwNiwgNjAwMTAsIDYwMDE0LCA2MDAxOCwgNjAwMjEsIDYwMDI0LCAKLSAgICA2MDAyOCwgNjAwMzIsIDYwMDM2LCA2MDA0MCwgNjAwNDQsIDYwMDQ4LCA2MDA1MiwgNjAwNTYsIDYwMDYwLCA2MDA2NCwgCi0gICAgNjAwNjgsIDYwMDcyLCA2MDA3NiwgNjAwODAsIDYwMDg0LCA2MDA4OCwgNjAwOTIsIDYwMDk2LCA2MDEwMCwgNjAxMDQsIAotICAgIDYwMTA4LCA2MDExMiwgNjAxMTYsIDYwMTIwLCA2MDEyNCwgNjAxMjgsIDYwMTMyLCA2MDEzNiwgNjAxNDAsIDYwMTQ0LCAKLSAgICA2MDE0OCwgNjAxNTIsIDYwMTU2LCA2MDE2MCwgNjAxNjQsIDYwMTY4LCA2MDE3MiwgNjAxNzYsIDYwMTgwLCA2MDE4NCwgCi0gICAgNjAxODgsIDAsIDYwMTkyLCA2MDE5OCwgNjAyMDQsIDYwMjA5LCA2MDIxNCwgNjAyMTksIDYwMjI1LCA2MDIzMSwgNjAyMzcsIAotICAgIDYwMjQzLCA2MDI0OSwgNjAyNTUsIDYwMjYxLCA2MDI2NywgNjAyNzMsIDYwMjc5LCA2MDI4NSwgNjAyODksIDYwMjkzLCAKLSAgICA2MDI5NywgNjAzMDEsIDYwMzA1LCA2MDMwOSwgNjAzMTMsIDYwMzE3LCA2MDMyMSwgNjAzMjUsIDYwMzI5LCA2MDMzMywgCi0gICAgNjAzMzcsIDYwMzQxLCA2MDM0NSwgNjAzNDksIDYwMzUzLCA2MDM1NywgNjAzNjEsIDYwMzY1LCA2MDM3MCwgNjAzNzUsIAotICAgIDYwMzgwLCA2MDM4NSwgNjAzODksIDYwMzkzLCAwLCAwLCAwLCAwLCAwLCA2MDM5NywgNjA0MDIsIDYwNDA3LCA2MDQxMiwgCi0gICAgNjA0MTcsIDYwNDIyLCA2MDQyNywgNjA0MzIsIDYwNDM3LCA2MDQ0MiwgNjA0NDcsIDYwNDUyLCA2MDQ1NywgNjA0NjIsIAotICAgIDYwNDY3LCA2MDQ3MiwgNjA0NzYsIDYwNDgxLCA2MDQ4NSwgNjA0OTAsIDYwNDk1LCA2MDUwMCwgNjA1MDUsIDYwNTEwLCAKLSAgICA2MDUxNSwgNjA1MjAsIDYwNTI1LCA2MDUzMCwgNjA1MzUsIDYwNTQwLCA2MDU0NSwgNjA1NTAsIDYwNTU1LCA2MDU2MCwgCi0gICAgNjA1NjUsIDYwNTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDU3NSwgNjA1ODAsIDYwNTg1LCAKLSAgICA2MDU5MCwgNjA1OTQsIDYwNTk5LCA2MDYwMywgNjA2MDgsIDYwNjEzLCA2MDYxOCwgNjA2MjMsIDYwNjI4LCA2MDYzMiwgCi0gICAgNjA2MzcsIDYwNjQyLCA2MDY0NywgNjA2NTIsIDYwNjU2LCA2MDY2MCwgNjA2NjQsIDYwNjY4LCA2MDY3MiwgNjA2NzYsIAotICAgIDYwNjgwLCA2MDY4NCwgNjA2ODgsIDYwNjkyLCA2MDY5NiwgNjA3MDAsIDYwNzA0LCA2MDcwOCwgNjA3MTMsIDYwNzE4LCAKLSAgICA2MDcyMywgNjA3MjgsIDYwNzMzLCA2MDczOCwgNjA3NDMsIDYwNzQ4LCA2MDc1MywgNjA3NTgsIDYwNzYzLCA2MDc2OCwgCi0gICAgNjA3NzMsIDYwNzc4LCA2MDc4MywgNjA3ODksIDAsIDYwNzk2LCA2MDc5OSwgNjA4MDIsIDYwODA1LCA2MDgwOCwgNjA4MTEsIAotICAgIDYwODE0LCA2MDgxNywgNjA4MjAsIDYwODIzLCA2MDgyNywgNjA4MzEsIDYwODM1LCA2MDgzOSwgNjA4NDMsIDYwODQ3LCAKLSAgICA2MDg1MSwgNjA4NTUsIDYwODU5LCA2MDg2MywgNjA4NjcsIDYwODcxLCA2MDg3NSwgNjA4NzksIDYwODgzLCA2MDg4NywgCi0gICAgNjA4OTEsIDYwODk1LCA2MDg5OSwgNjA5MDMsIDYwOTA3LCA2MDkxMSwgNjA5MTUsIDYwOTE5LCA2MDkyMywgNjA5MjcsIAotICAgIDYwOTMxLCA2MDkzNSwgNjA5MzksIDYwOTQzLCA2MDk0NywgNjA5NTYsIDYwOTY1LCA2MDk3NCwgNjA5ODMsIDYwOTkyLCAKLSAgICA2MTAwMSwgNjEwMTAsIDYxMDE5LCA2MTAyMiwgNjEwMjcsIDYxMDMyLCA2MTAzNywgNjEwNDIsIDYxMDQ3LCA2MTA1MiwgCi0gICAgNjEwNTcsIDYxMDYyLCA2MTA2NywgNjEwNzEsIDYxMDc2LCA2MTA4MSwgNjEwODYsIDYxMDkxLCA2MTA5NiwgNjExMDAsIAotICAgIDYxMTA0LCA2MTEwOCwgNjExMTIsIDYxMTE2LCA2MTEyMCwgNjExMjQsIDYxMTI4LCA2MTEzMiwgNjExMzYsIDYxMTQwLCAKLSAgICA2MTE0NCwgNjExNDgsIDYxMTUyLCA2MTE1NywgNjExNjIsIDYxMTY3LCA2MTE3MiwgNjExNzcsIDYxMTgyLCA2MTE4NywgCi0gICAgNjExOTIsIDYxMTk3LCA2MTIwMiwgNjEyMDcsIDYxMjEyLCA2MTIxNywgNjEyMjIsIDYxMjI4LCA2MTIzNCwgNjEyMzksIAotICAgIDYxMjQ0LCA2MTI0NywgNjEyNTAsIDYxMjUzLCA2MTI1NiwgNjEyNTksIDYxMjYyLCA2MTI2NSwgNjEyNjgsIDYxMjcxLCAKLSAgICA2MTI3NSwgNjEyNzksIDYxMjgzLCA2MTI4NywgNjEyOTEsIDYxMjk1LCA2MTI5OSwgNjEzMDMsIDYxMzA3LCA2MTMxMSwgCi0gICAgNjEzMTUsIDYxMzE5LCA2MTMyMywgNjEzMjcsIDYxMzMxLCA2MTMzNSwgNjEzMzksIDYxMzQzLCA2MTM0NywgNjEzNTEsIAotICAgIDYxMzU1LCA2MTM1OSwgNjEzNjMsIDYxMzY3LCA2MTM3MSwgNjEzNzUsIDYxMzc5LCA2MTM4MywgNjEzODcsIDYxMzkxLCAKLSAgICA2MTM5NSwgNjEzOTksIDYxNDAzLCA2MTQwNywgNjE0MTEsIDYxNDE1LCA2MTQxOSwgNjE0MjMsIDYxNDI3LCA2MTQzMSwgCi0gICAgNjE0MzYsIDYxNDQxLCA2MTQ0NiwgNjE0NTEsIDYxNDU1LCA2MTQ2MCwgNjE0NjUsIDYxNDcwLCA2MTQ3NSwgNjE0ODAsIAotICAgIDYxNDg1LCA2MTQ5MCwgNjE0OTUsIDYxNTAwLCA2MTUwNCwgNjE1MTAsIDYxNTE2LCA2MTUyMiwgNjE1MjgsIDYxNTM0LCAKLSAgICA2MTU0MCwgNjE1NDYsIDYxNTUyLCA2MTU1OCwgNjE1NjQsIDYxNTcwLCA2MTU3NiwgNjE1NzksIDYxNTgyLCA2MTU4NSwgCi0gICAgNjE1OTAsIDYxNTkzLCA2MTU5NiwgNjE1OTksIDYxNjAyLCA2MTYwNSwgNjE2MDgsIDYxNjEyLCA2MTYxNiwgNjE2MjAsIAotICAgIDYxNjI0LCA2MTYyOCwgNjE2MzIsIDYxNjM2LCA2MTY0MCwgNjE2NDQsIDYxNjQ4LCA2MTY1MiwgNjE2NTYsIDYxNjYwLCAKLSAgICA2MTY2MywgNjE2NjYsIDYxNjcwLCA2MTY3NCwgNjE2NzgsIDYxNjgyLCA2MTY4NSwgNjE2ODksIDYxNjkzLCA2MTY5NywgCi0gICAgNjE3MDEsIDYxNzA0LCA2MTcwOCwgNjE3MTIsIDYxNzE2LCA2MTcyMCwgNjE3MjMsIDYxNzI3LCA2MTczMSwgNjE3MzQsIAotICAgIDYxNzM4LCA2MTc0MiwgNjE3NDYsIDYxNzUwLCA2MTc1NCwgNjE3NTgsIDYxNzYyLCAwLCA2MTc2NiwgNjE3NjksIDYxNzcyLCAKLSAgICA2MTc3NSwgNjE3NzgsIDYxNzgxLCA2MTc4NCwgNjE3ODcsIDYxNzkwLCA2MTc5MywgNjE3OTYsIDYxNzk5LCA2MTgwMiwgCi0gICAgNjE4MDUsIDYxODA4LCA2MTgxMSwgNjE4MTQsIDYxODE3LCA2MTgyMCwgNjE4MjMsIDYxODI2LCA2MTgyOSwgNjE4MzIsIAotICAgIDYxODM1LCA2MTgzOCwgNjE4NDEsIDYxODQ0LCA2MTg0NywgNjE4NTAsIDYxODUzLCA2MTg1NiwgNjE4NTksIDYxODYyLCAKLSAgICA2MTg2NSwgNjE4NjgsIDYxODcxLCA2MTg3NCwgNjE4NzcsIDYxODgwLCA2MTg4MywgNjE4ODYsIDYxODg5LCA2MTg5MiwgCi0gICAgNjE4OTUsIDYxODk4LCA2MTkwMSwgNjE5MDQsIDYxOTA3LCA2MTkxMCwgNjE5MTMsIDYxOTE2LCA2MTkxOSwgNjE5MjIsIAotICAgIDYxOTI1LCA2MTkyOCwgNjE5MzEsIDYxOTM0LCA2MTkzNywgNjE5NDAsIDYxOTQzLCA2MTk0NiwgNjE5NDksIDYxOTUyLCAKLSAgICA2MTk1NSwgNjE5NTgsIDYxOTYxLCA2MTk2NCwgNjE5NjcsIDYxOTcwLCA2MTk3MywgNjE5NzYsIDYxOTc5LCA2MTk4MiwgCi0gICAgNjE5ODUsIDYxOTg4LCA2MTk5MSwgNjE5OTQsIDYxOTk3LCA2MjAwMCwgNjIwMDMsIDYyMDA2LCA2MjAwOSwgNjIwMTIsIAotICAgIDYyMDE1LCA2MjAxOCwgNjIwMjEsIDYyMDI0LCA2MjAyNywgNjIwMzAsIDYyMDM4LCA2MjA0NSwgNjIwNTIsIDYyMDU5LCAKLSAgICA2MjA2NiwgNjIwNzMsIDYyMDgwLCA2MjA4NywgNjIwOTQsIDYyMTAxLCA2MjEwOSwgNjIxMTcsIDYyMTI1LCA2MjEzMywgCi0gICAgNjIxNDEsIDYyMTQ5LCA2MjE1NywgNjIxNjUsIDYyMTczLCA2MjE4MSwgNjIxODksIDYyMTk3LCA2MjIwNSwgNjIyMTMsIAotICAgIDYyMjIxLCA2MjIyNCwgNjIyMjcsIDYyMjMwLCA2MjIzMiwgNjIyMzUsIDYyMjM4LCA2MjI0MSwgNjIyNDYsIDYyMjUxLCAKLSAgICA2MjI1NCwgNjIyNjEsIDYyMjY4LCA2MjI3NSwgNjIyODIsIDYyMjg1LCA2MjI5MCwgNjIyOTIsIDYyMjk2LCA2MjI5OCwgCi0gICAgNjIzMDAsIDYyMzAzLCA2MjMwNiwgNjIzMDksIDYyMzEyLCA2MjMxNSwgNjIzMTgsIDYyMzIxLCA2MjMyNiwgNjIzMzEsIAotICAgIDYyMzM0LCA2MjMzNywgNjIzNDAsIDYyMzQzLCA2MjM0NiwgNjIzNDksIDYyMzUyLCA2MjM1NiwgNjIzNTksIDYyMzYyLCAKLSAgICA2MjM2NSwgNjIzNjgsIDYyMzcxLCA2MjM3NSwgNjIzNzgsIDYyMzgxLCA2MjM4NCwgNjIzODksIDYyMzk0LCA2MjM5OSwgCi0gICAgNjI0MDQsIDYyNDA5LCA2MjQxNCwgNjI0MTksIDYyNDI0LCA2MjQyOSwgNjI0MzcsIDYyNDM5LCA2MjQ0MiwgNjI0NDUsIAotICAgIDYyNDQ4LCA2MjQ1MSwgNjI0NTYsIDYyNDY0LCA2MjQ2NywgNjI0NzAsIDYyNDc0LCA2MjQ3NywgNjI0ODAsIDYyNDgzLCAKLSAgICA2MjQ4OCwgNjI0OTEsIDYyNDk0LCA2MjQ5OSwgNjI1MDIsIDYyNTA1LCA2MjUxMCwgNjI1MTMsIDYyNTE2LCA2MjUyMSwgCi0gICAgNjI1MjYsIDYyNTMxLCA2MjUzNCwgNjI1MzcsIDYyNTQwLCA2MjU0MywgNjI1NDksIDYyNTUyLCA2MjU1NSwgNjI1NTgsIAotICAgIDYyNTYwLCA2MjU2MywgNjI1NjYsIDYyNTY5LCA2MjU3NCwgNjI1NzcsIDYyNTgwLCA2MjU4MywgNjI1ODYsIDYyNTg5LCAKLSAgICA2MjU5NCwgNjI1OTcsIDYyNjAwLCA2MjYwMywgNjI2MDYsIDYyNjA5LCA2MjYxMiwgNjI2MTUsIDYyNjE4LCA2MjYyMSwgCi0gICAgNjI2MjYsIDYyNjMwLCA2MjYzNywgNjI2NDQsIDYyNjUxLCA2MjY1OCwgNjI2NjUsIDYyNjcyLCA2MjY3OSwgNjI2ODYsIAotICAgIDYyNjkzLCA2MjcwMSwgNjI3MDksIDYyNzE3LCA2MjcyNSwgNjI3MzMsIDYyNzQxLCA2Mjc0OSwgNjI3NTcsIDYyNzY1LCAKLSAgICA2Mjc3MywgNjI3ODEsIDYyNzg5LCA2Mjc5NywgNjI4MDUsIDYyODEzLCA2MjgyMSwgNjI4MjksIDYyODM3LCA2Mjg0NSwgCi0gICAgNjI4NTMsIDYyODYxLCA2Mjg2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ3LCAxNTEsIDE1NiwgMTYxLCAxNjUsIDE3MCwgMTc1LCAxNzksIDE4NCwgMTg5LCAxOTQsIDE5OSwgMjA0LCAyMDcsIAorICAgIDIxMSwgMjE0LCAyMTgsIDIyMSwgMjI1LCAyMjksIDIzNCwgMjM5LCAyNDQsIDI0OCwgMjUzLCAyNTgsIDI2MywgMjY3LCAKKyAgICAyNzIsIDI3NywgMjgxLCAyODUsIDI5MCwgMjk0LCAyOTksIDMwNCwgMzA4LCAzMTMsIDMxOCwgMzIyLCAzMjcsIDMzMiwgCisgICAgMzM3LCAzNDIsIDM0NywgMzUxLCAzNTQsIDM1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU5LCAzNjMsIDM2OCwgCisgICAgMzcxLCAzNzQsIDM3NywgMzgwLCAzODMsIDM4NiwgMzg4LCAzOTEsIDM5NywgNDA1LCA0MDgsIDQxMiwgNDE1LCA0MTcsIAorICAgIDQyMCwgNDIzLCA0MjYsIDQyOSwgNDMzLCA0MzYsIDQzOSwgNDQzLCA0NDUsIDQ0OCwgNDU0LCA0NjIsIDQ2OSwgNDc2LCAKKyAgICA0ODMsIDQ4OCwgNDk1LCA1MDEsIDUwOCwgNTE0LCA1MjEsIDUyOSwgNTM0LCA1NDIsIDU0OSwgNTU1LCA1NjIsIDU2OSwgCisgICAgNTc3LCA1ODQsIDU5MiwgNjAwLCA2MDUsIDYxMiwgNjE5LCA2MjUsIDYzMiwgNjM4LCA2NDUsIDY0OCwgNjU0LCA2NjEsIAorICAgIDY2NywgNjc0LCA2ODEsIDY4OCwgNjkzLCA3MDAsIDcwNywgNzEzLCA3MjAsIDcyNiwgNzMzLCA3NDEsIDc0NiwgNzU0LCAKKyAgICA3NjEsIDc2NywgNzc0LCA3ODEsIDc4OSwgNzk2LCA4MDQsIDgxMiwgODE3LCA4MjQsIDgzMSwgODM3LCA4NDQsIDg1MCwgCisgICAgODU3LCA4NjAsIDg2NiwgODczLCA4NzksIDg4NiwgODkzLCA5MDAsIDkwNSwgOTEzLCA5MjAsIDkyNywgOTM0LCA5NDEsIAorICAgIDk0OCwgOTU1LCA5NjIsIDk2OSwgOTc3LCA5ODUsIDk5MywgMTAwMSwgMTAwOSwgMTAxNywgMTAyNSwgMTAzMywgMTA0MCwgCisgICAgMTA0NywgMTA1NCwgMTA2MSwgMTA2OCwgMTA3NSwgMTA4MiwgMTA4OSwgMTA5NiwgMTEwMywgMTExMCwgMTExNywgMTEyNSwgCisgICAgMTEzMywgMTE0MSwgMTE0OSwgMTE1NywgMTE2NSwgMTE3MywgMTE4MSwgMTE4OSwgMTE5NywgMTIwNCwgMTIxMSwgMTIxOCwgCisgICAgMTIyNSwgMTIzMywgMTI0MSwgMTI0OSwgMTI1NywgMTI2NSwgMTI3MywgMTI4MSwgMTI4NywgMTI5MiwgMTI5NywgMTMwNSwgCisgICAgMTMxMywgMTMyMSwgMTMyOSwgMTMzNCwgMTM0MSwgMTM0OCwgMTM1NiwgMTM2NCwgMTM3MiwgMTM4MCwgMTM5MCwgMTQwMCwgCisgICAgMTQwNywgMTQxNCwgMTQyMSwgMTQyOCwgMTQzNiwgMTQ0NCwgMTQ1MiwgMTQ2MCwgMTQ3MSwgMTQ3NiwgMTQ4MSwgMTQ4OCwgCisgICAgMTQ5NSwgMTUwMiwgMTUwOSwgMTUxNiwgMTUyMywgMTUyOCwgMTUzMywgMTU0MCwgMTU0NywgMTU1NSwgMTU2MywgMTU3MSwgCisgICAgMTU3OSwgMTU4NiwgMTU5MywgMTYwMSwgMTYwOSwgMTYxNywgMTYyNSwgMTYzMywgMTY0MSwgMTY0OSwgMTY1NywgMTY2NSwgCisgICAgMTY3MywgMTY4MCwgMTY4NywgMTY5MywgMTY5OSwgMTcwNiwgMTcxMywgMTcyMCwgMTcyNywgMTczNSwgMTc0MywgMTc1MCwgCisgICAgMTc1NywgMTc2NCwgMTc3MSwgMTc3OSwgMTc4NywgMTc5NSwgMTgwMywgMTgxMSwgMTgxOCwgMTgyNSwgMTgzMywgMTg0MSwgCisgICAgMTg0OSwgMTg1NywgMTg2MywgMTg2OSwgMTg3NSwgMTg4MiwgMTg4OSwgMTg5NCwgMTg5OSwgMTkwNCwgMTkxMSwgMTkxOCwgCisgICAgMTkyNSwgMTkzMiwgMTk0MCwgMTk0OCwgMTk1NSwgMTk2MSwgMTk2NiwgMTk3MSwgMTk3OCwgMTk4NSwgMTk5MiwgMTk5NywgCisgICAgMjAwMiwgMjAwNywgMjAxNCwgMjAyMSwgMjAyOCwgMjAzNSwgMjA0MiwgMjA0OCwgMjA1NiwgMjA2NiwgMjA3NCwgMjA4MSwgCisgICAgMjA4OCwgMjA5MywgMjA5OCwgMjEwNSwgMjExMiwgMjExNiwgMjEyMSwgMjEyNiwgMjEzMSwgMjEzOSwgMjE0OCwgMjE1NSwgCisgICAgMjE2MiwgMjE3MSwgMjE3OCwgMjE4NSwgMjE5MCwgMjE5NywgMjIwNCwgMjIxMSwgMjIxOCwgMjIyNSwgMjIzMCwgMjIzNywgCisgICAgMjI0NCwgMjI1MiwgMjI1NywgMjI2MiwgMjI2NywgMjI3NywgMjI4MSwgMjI4NywgMjI5MywgMjI5OSwgMjMwNSwgMjMxMywgCisgICAgMjMyNiwgMjMzNCwgMjMzOSwgMjM0OSwgMjM1NCwgMjM1OSwgMjM2OSwgMjM3NCwgMjM4MSwgMjM4OCwgMjM5NiwgMjQwNCwgCisgICAgMjQxMSwgMjQxOCwgMjQyNSwgMjQzMiwgMjQ0MiwgMjQ1MiwgMjQ2MSwgMjQ3MCwgMjQ4MCwgMjQ5MCwgMjUwMCwgMjUxMCwgCisgICAgMjUxNiwgMjUyNiwgMjUzNiwgMjU0NiwgMjU1NiwgMjU2NCwgMjU3MiwgMjU3OSwgMjU4NiwgMjU5NCwgMjYwMiwgMjYxMCwgCisgICAgMjYxOCwgMjYyNSwgMjYzMiwgMjY0MiwgMjY1MiwgMjY2MCwgMjY2OCwgMjY3NiwgMjY4MSwgMjY5MSwgMjY5NiwgMjcwMywgCisgICAgMjcxMCwgMjcxNSwgMjcyMCwgMjcyOCwgMjczNiwgMjc0NiwgMjc1NiwgMjc2MywgMjc3MCwgMjc3OSwgMjc4OCwgMjc5NiwgCisgICAgMjgwNCwgMjgxMywgMjgyMiwgMjgzMCwgMjgzOCwgMjg0NywgMjg1NiwgMjg2NSwgMjg3NCwgMjg4NCwgMjg5NCwgMjkwMiwgCisgICAgMjkxMCwgMjkxOSwgMjkyOCwgMjkzNywgMjk0NiwgMjk1NiwgMjk2NiwgMjk3NCwgMjk4MiwgMjk5MSwgMzAwMCwgMzAwOSwgCisgICAgMzAxOCwgMzAyNywgMzAzNiwgMzA0MSwgMzA0NiwgMzA1NCwgMzA2MiwgMzA3MiwgMzA4MCwgMzA4NSwgMzA5MCwgMzA5NywgCisgICAgMzEwNCwgMzExMSwgMzExOCwgMzEyNSwgMzEzMiwgMzE0MiwgMzE1MiwgMzE2MiwgMzE3MiwgMzE3OSwgMzE4NiwgMzE5NiwgCisgICAgMzIwNiwgMzIxNCwgMzIyMiwgMzIzMCwgMzIzOCwgMzI0NiwgMzI1MywgMzI2MCwgMzI2NywgMzI3MywgMzI4MCwgMzI4NywgCisgICAgMzI5NCwgMzMwMywgMzMxMywgMzMyMywgMzMzMCwgMzMzNywgMzM0MywgMzM0OCwgMzM1NSwgMzM2MSwgMzM2NywgMzM3NCwgCisgICAgMzM4MSwgMzM5MiwgMzQwMiwgMzQwOSwgMzQxNiwgMzQyMywgMzQzMCwgMzQzNiwgMzQ0MSwgMzQ0OCwgMzQ1NCwgMzQ1OSwgCisgICAgMzQ2NywgMzQ3NSwgMzQ4MiwgMzQ4OCwgMzQ5MywgMzUwMCwgMzUwNSwgMzUxMiwgMzUyMSwgMzUzMCwgMzUzOSwgMzU0NiwgCisgICAgMzU1MiwgMzU1OCwgMzU2MywgMzU3MCwgMzU3NywgMzU4NCwgMzU5MSwgMzU5OCwgMzYwMywgMzYwOCwgMzYxNywgMzYyNSwgCisgICAgMzYzNCwgMzYzOSwgMzY0NSwgMzY1NiwgMzY2MywgMzY3MSwgMzY4MCwgMzY4NiwgMzY5MiwgMzY5OCwgMzcwNSwgMzcxMCwgCisgICAgMzcxNiwgMzcyNywgMzczNiwgMzc0NSwgMzc1MywgMzc2MSwgMzc3MSwgMzc3NiwgMzc4MywgMzc5MCwgMzc5NSwgMzgwNywgCisgICAgMzgxNiwgMzgyNCwgMzgzMSwgMzg0MCwgMzg0NSwgMzg1MCwgMzg1NywgMzg2NCwgMzg3MSwgMzg3OCwgMzg4NCwgMzg5MywgCisgICAgMzkwMSwgMzkwNiwgMzkxNCwgMzkyMCwgMzkyOCwgMzkzNiwgMzk0MiwgMzk0OCwgMzk1NCwgMzk2MSwgMzk2OSwgMzk3NSwgCisgICAgMzk4MywgMzk5MCwgMzk5NSwgNDAwMiwgNDAxMCwgNDAyMCwgNDAyNywgNDAzNCwgNDA0NCwgNDA1MSwgNDA1OCwgNDA2OCwgCisgICAgNDA3NSwgNDA4MiwgNDA4OSwgNDA5NSwgNDEwMSwgNDExMSwgNDEyNCwgNDEyOSwgNDEzNiwgNDE0MSwgNDE0NSwgNDE1MSwgCisgICAgNDE2MCwgNDE2NywgNDE3MiwgNDE3NywgNDE4MSwgNDE4NiwgNDE5MiwgNDE5NiwgNDIwMiwgNDIwOCwgNDIxNCwgNDIyMCwgCisgICAgNDIyOCwgNDIzMywgNDIzOCwgNDI0MywgNDI0OCwgNDI1NCwgNDI1NiwgNDI2MSwgNDI2NSwgNDI3MSwgNDI3NywgNDI4MywgCisgICAgNDI4OCwgNDI5NSwgNDMwMiwgNDMwOCwgNDMxNSwgNDMyMywgNDMzMSwgNDMzNiwgNDM0MSwgNDM0NSwgNDM1MCwgNDM1MiwgCisgICAgNDM1NCwgNDM1NywgNDM1OSwgNDM2MSwgNDM2NiwgNDM3MSwgNDM3NywgNDM4MiwgNDM4NiwgNDM5MSwgNDM5NiwgNDQwNSwgCisgICAgNDQxMSwgNDQxNiwgNDQyMiwgNDQyNywgNDQzMywgNDQ0MSwgNDQ0OSwgNDQ1MywgNDQ1NywgNDQ2MiwgNDQ2OCwgNDQ3NCwgCisgICAgNDQ4MCwgNDQ4NiwgNDQ5MSwgNDQ5OSwgNDUwOCwgNDUxNywgNDUyMSwgNDUyNywgNDUzNCwgNDU0MSwgNDU0OCwgNDU1NSwgCisgICAgNDU1OSwgNDU2NCwgNDU2OSwgNDU3NCwgNDU3OSwgNDU4NCwgNDU4NiwgNDU4OSwgNDU5MiwgNDU5NSwgNDU5OCwgNDYwMSwgCisgICAgNDYwNSwgNDYwOSwgNDYxNSwgNDYxOCwgNDYyMywgNDYyOSwgNDYzNSwgNDYzOCwgNDY0MywgNDY0OSwgNDY1MywgNDY1OSwgCisgICAgNDY2NSwgNDY3MSwgNDY3NywgNDY4MiwgNDY4NywgNDY5MiwgNDY5NSwgNDcwMSwgNDcwNiwgNDcxMSwgNDcxNSwgNDcyMCwgCisgICAgNDcyNiwgNDczMiwgNDczNSwgNDczOSwgNDc0MywgNDc0NywgNDc1MCwgNDc1MywgNDc1OCwgNDc2MiwgNDc2OSwgNDc3MywgCisgICAgNDc3OSwgNDc4MywgNDc4OSwgNDc5MywgNDc5NywgNDgwMSwgNDgwNiwgNDgxMSwgNDgxOCwgNDgyNCwgNDgzMSwgNDgzNywgCisgICAgNDg0MywgNDg0OSwgNDg1MiwgNDg1NiwgNDg2MCwgNDg2MywgNDg2NywgNDg3MiwgNDg3NywgNDg4MSwgNDg4NSwgNDg5MSwgCisgICAgNDg5NSwgNDg5OSwgNDkwNCwgNDkxMCwgNDkxNSwgNDkyMSwgNDkyNSwgNDkzMiwgNDkzNywgNDk0MiwgNDk0NywgNDk1MiwgCisgICAgNDk1OCwgNDk2MSwgNDk2NSwgNDk3MCwgNDk3NSwgNDk4NCwgNDk5MCwgNDk5NSwgNDk5OSwgNTAwNCwgNTAwOCwgNTAxMywgCisgICAgNTAxNywgNTAyMSwgNTAyNiwgNTAyOSwgNTAzNSwgNTA0MCwgNTA0NSwgNTA1MCwgNTA1NSwgNTA2MCwgNTA2NSwgNTA3MSwgCisgICAgNTA3NywgNTA4MywgNTA4OCwgNTA5MywgNTA5OSwgNTEwNSwgNTExMSwgNTExNiwgNTEyMSwgNTEyOCwgNTEzNSwgNTEzOSwgCisgICAgNTE0NSwgNTE1MiwgMCwgMCwgNTE1OSwgNTE2MiwgNTE3MSwgNTE4MCwgNTE5MSwgMCwgMCwgMCwgMCwgMCwgNTE5NSwgCisgICAgNTE5OCwgNTIwMywgNTIxMSwgNTIxNiwgNTIyNCwgNTIzMiwgMCwgNTI0MCwgMCwgNTI0OCwgNTI1NiwgNTI2NCwgNTI3NSwgCisgICAgNTI4MCwgNTI4NSwgNTI5MCwgNTI5NSwgNTMwMCwgNTMwNSwgNTMxMCwgNTMxNSwgNTMyMCwgNTMyNSwgNTMzMCwgNTMzNSwgCisgICAgNTM0MCwgNTM0NSwgNTM1MCwgNTM1NSwgMCwgNTM2MCwgNTM2NSwgNTM3MCwgNTM3NSwgNTM4MCwgNTM4NSwgNTM5MCwgCisgICAgNTM5NSwgNTQwMywgNTQxMSwgNTQxOSwgNTQyNywgNTQzNSwgNTQ0MywgNTQ1NCwgNTQ1OSwgNTQ2NCwgNTQ2OSwgNTQ3NCwgCisgICAgNTQ3OSwgNTQ4NCwgNTQ4OSwgNTQ5NCwgNTQ5OSwgNTUwNCwgNTUwOSwgNTUxNCwgNTUxOSwgNTUyNCwgNTUyOSwgNTUzNCwgCisgICAgNTUzOSwgNTU0NSwgNTU1MCwgNTU1NSwgNTU2MCwgNTU2NSwgNTU3MCwgNTU3NSwgNTU4MCwgNTU4OCwgNTU5NiwgNTYwNCwgCisgICAgNTYxMiwgNTYyMCwgNTYyNSwgNTYyOSwgNTYzMywgNTY0MCwgNTY1MCwgNTY2MCwgNTY2NCwgNTY2OCwgNTY3MiwgNTY3OCwgCisgICAgNTY4NSwgNTY4OSwgNTY5NCwgNTY5OCwgNTcwMywgNTcwNywgNTcxMiwgNTcxNiwgNTcyMSwgNTcyNiwgNTczMSwgNTczNiwgCisgICAgNTc0MSwgNTc0NiwgNTc1MSwgNTc1NiwgNTc2MSwgNTc2NiwgNTc3MSwgNTc3NiwgNTc4MSwgNTc4NiwgNTc5MSwgNTc5NSwgCisgICAgNTc5OSwgNTgwNSwgNTgwOSwgNTgxNCwgNTgyMCwgNTgyOCwgNTgzMywgNTgzOCwgNTg0NSwgNTg1MCwgNTg1NSwgNTg2MiwgCisgICAgNTg3MSwgNTg4MCwgNTg5MSwgNTg5OSwgNTkwNCwgNTkwOSwgNTkxNCwgNTkyMSwgNTkyNiwgNTkzMiwgNTkzNywgNTk0MiwgCisgICAgNTk0NywgNTk1MiwgNTk1NywgNTk2MiwgNTk3MCwgNTk3NiwgNTk4MSwgNTk4NSwgNTk5MCwgNTk5NSwgNjAwMCwgNjAwNSwgCisgICAgNjAxMCwgNjAxNSwgNjAyMCwgNjAyNCwgNjAzMCwgNjAzNCwgNjAzOSwgNjA0NCwgNjA0OSwgNjA1MywgNjA1OCwgNjA2MywgCisgICAgNjA2OCwgNjA3MywgNjA3NywgNjA4MiwgNjA4NiwgNjA5MSwgNjA5NiwgNjEwMSwgNjEwNiwgNjExMiwgNjExNywgNjEyMywgCisgICAgNjEyNywgNjEzMiwgNjEzNiwgNjE0MCwgNjE0NSwgNjE1MCwgNjE1NSwgNjE2MCwgNjE2NSwgNjE3MCwgNjE3NSwgNjE3OSwgCisgICAgNjE4NSwgNjE4OSwgNjE5NCwgNjE5OSwgNjIwNCwgNjIwOCwgNjIxMywgNjIxOCwgNjIyMywgNjIyOCwgNjIzMiwgNjIzNywgCisgICAgNjI0MSwgNjI0NiwgNjI1MSwgNjI1NiwgNjI2MSwgNjI2NywgNjI3MiwgNjI3OCwgNjI4MiwgNjI4NywgNjI5MSwgNjI5OSwgCisgICAgNjMwNCwgNjMwOSwgNjMxNCwgNjMyMSwgNjMyNiwgNjMzMiwgNjMzNywgNjM0MiwgNjM0NywgNjM1MiwgNjM1NywgNjM2MiwgCisgICAgNjM3MCwgNjM3NiwgNjM4MSwgNjM4NiwgNjM5MSwgNjM5NiwgNjQwMSwgNjQwNywgNjQxMywgNjQyMCwgNjQyNywgNjQzNiwgCisgICAgNjQ0NSwgNjQ1MiwgNjQ1OSwgNjQ2OCwgNjQ3NywgNjQ4MiwgNjQ4NywgNjQ5MiwgNjQ5NywgNjUwMiwgNjUwNywgNjUxMiwgCisgICAgNjUxNywgNjUyOCwgNjUzOSwgNjU0NCwgNjU0OSwgNjU1NiwgNjU2MywgNjU3MSwgNjU3OSwgNjU4NCwgNjU4OSwgNjU5NCwgCisgICAgNjU5OSwgNjYwMywgNjYwNywgNjYxMSwgNjYxNywgNjYyMywgNjYyNywgNjYzNCwgNjYzOSwgNjY0OSwgNjY1OSwgNjY2NSwgCisgICAgNjY3MSwgNjY3OSwgNjY4NywgNjY5NSwgNjcwMywgNjcxMCwgNjcxNywgNjcyNiwgNjczNSwgNjc0MywgNjc1MSwgNjc1OSwgCisgICAgNjc2NywgNjc3NSwgNjc4MywgNjc5MSwgNjc5OSwgNjgwNiwgNjgxMywgNjgxOSwgNjgyNSwgNjgzMywgNjg0MSwgNjg0OCwgCisgICAgNjg1NSwgNjg2NCwgNjg3MywgNjg3OSwgNjg4NSwgNjg5MywgNjkwMSwgNjkwOSwgNjkxNywgNjkyMywgNjkyOSwgNjkzNywgCisgICAgNjk0NSwgNjk1MywgNjk2MSwgNjk2OCwgNjk3NSwgNjk4MywgNjk5MSwgNjk5OSwgNzAwNywgNzAxMiwgNzAxNywgNzAyNCwgCisgICAgNzAzMSwgNzA0MSwgNzA1MSwgNzA1NSwgNzA2MywgNzA3MSwgNzA3OCwgNzA4NSwgNzA5MywgNzEwMSwgNzEwOCwgNzExNSwgCisgICAgNzEyMywgNzEzMSwgNzEzOCwgNzE0NSwgNzE1MywgNzE2MSwgNzE2NiwgNzE3MywgNzE4MCwgNzE4NywgNzE5NCwgNzIwMCwgCisgICAgNzIwNiwgNzIxNCwgNzIyMiwgNzIyNywgNzIzMiwgNzI0MCwgNzI0OCwgNzI1NiwgNzI2NCwgNzI3MiwgNzI4MCwgNzI4NywgCisgICAgNzI5NCwgNzMwMiwgNzMxMCwgNzMxOCwgNzMyNiwgNzMzMywgNzM0MCwgNzM0NiwgNzM1MiwgNzM2MSwgNzM3MCwgNzM3NywgCisgICAgNzM4NCwgNzM5MSwgNzM5OCwgNzQwNSwgNzQxMiwgNzQxOSwgNzQyNiwgNzQzNCwgNzQ0MiwgNzQ1MCwgNzQ1OCwgNzQ2NiwgCisgICAgNzQ3NCwgNzQ4NCwgNzQ5NCwgNzUwMSwgNzUwOCwgNzUxNSwgNzUyMiwgNzUyOSwgNzUzNiwgNzU0MywgNzU1MCwgNzU1NywgCisgICAgNzU2NCwgNzU3MSwgNzU3OCwgNzU4NSwgNzU5MiwgNzU5OSwgNzYwNiwgNzYxMywgNzYyMCwgNzYyNywgNzYzNCwgNzY0MSwgCisgICAgNzY0OCwgNzY1NSwgNzY2MiwgNzY2NywgNzY3MiwgNzY3NywgNzY4MiwgNzY4NywgNzY5MiwgNzY5NywgNzcwMiwgNzcwNywgCisgICAgNzcxMiwgNzcxOCwgNzcyNCwgNzczMywgNzc0MiwgNzc1MSwgNzc2MCwgNzc2OCwgNzc3NiwgNzc4NCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzc5MiwgNzc5NywgNzgwMiwgNzgwNywgNzgxMiwgNzgxNywgNzgyMiwgNzgyNywgNzgzMiwgCisgICAgNzgzNiwgNzg0MSwgNzg0NiwgNzg1MSwgNzg1NiwgNzg2MSwgNzg2NiwgNzg3MSwgNzg3NiwgNzg4MSwgNzg4NiwgNzg5MSwgCisgICAgNzg5NiwgNzkwMSwgNzkwNiwgNzkxMSwgNzkxNiwgNzkyMSwgNzkyNiwgNzkzMCwgNzkzNSwgNzk0MCwgNzk0NSwgNzk1MCwgCisgICAgNzk1NSwgNzk2MCwgNzk2NSwgNzk3MCwgNzk3NSwgMCwgMCwgNzk4MCwgNzk4NywgNzk5MCwgNzk5NCwgNzk5OCwgODAwMSwgCisgICAgODAwNSwgMCwgODAwOSwgODAxNCwgODAxOSwgODAyNCwgODAyOSwgODAzNCwgODAzOSwgODA0NCwgODA0OSwgODA1MywgCisgICAgODA1OCwgODA2MywgODA2OCwgODA3MywgODA3OCwgODA4MywgODA4OCwgODA5MywgODA5OCwgODEwMywgODEwOCwgODExMywgCisgICAgODExOCwgODEyMywgODEyOCwgODEzMywgODEzOCwgODE0MywgODE0NywgODE1MiwgODE1NywgODE2MiwgODE2NywgODE3MiwgCisgICAgODE3NywgODE4MiwgODE4NywgODE5MiwgODE5NywgMCwgODIwNCwgODIwOSwgMCwgMCwgMCwgMCwgODIxMiwgMCwgODIxNiwgCisgICAgODIyMSwgODIyNiwgODIzMSwgODIzOCwgODI0NSwgODI1MCwgODI1NSwgODI2MCwgODI2NSwgODI3MCwgODI3NSwgODI4MCwgCisgICAgODI4NywgODI5MiwgODI5OSwgODMwNiwgODMxMSwgODMxOCwgODMyMywgODMyOCwgODMzMywgODM0MCwgODM0NSwgODM1MCwgCisgICAgODM1NywgODM2NiwgODM3MSwgODM3NiwgODM4MSwgODM4NiwgODM5MiwgODM5NywgODQwNCwgODQxMSwgODQxOCwgODQyMywgCisgICAgODQyOCwgODQzMywgODQzOCwgODQ0MywgODQ0OCwgODQ1OCwgODQ2MywgODQ3MSwgODQ3NiwgODQ4MSwgODQ4NiwgODQ5MSwgCisgICAgODQ5OCwgODUwNSwgODUxMiwgODUxOCwgODUyNCwgODUzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODUzOCwgODU0MiwgCisgICAgODU0NiwgODU1MCwgODU1NCwgODU1OCwgODU2MiwgODU2NiwgODU3MCwgODU3NCwgODU3OCwgODU4MywgODU4NywgODU5MSwgCisgICAgODU5NiwgODYwMCwgODYwNSwgODYwOSwgODYxMywgODYxNywgODYyMiwgODYyNiwgODYzMSwgODYzNSwgODYzOSwgODY0MywgCisgICAgODY0NywgMCwgMCwgMCwgMCwgMCwgODY1MSwgODY1OCwgODY2NiwgODY3MywgODY3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgODY4MywgODY4NiwgODY5MCwgODY5NSwgODY5OSwgMCwgODcwMywgODcwOSwgODcxNSwgODcxOCwgCisgICAgODcyNSwgODczNCwgODczNywgODc0MCwgODc0NSwgODc1MSwgODc1NSwgODc2MywgODc2OSwgODc3NSwgODc4MywgODc4NywgCisgICAgODc5MiwgODgwMywgODgwOCwgODgxMiwgODgxNiwgODgyMCwgMCwgMCwgODgyMywgODgzMCwgODgzNCwgODg0MCwgODg0NCwgCisgICAgODg1MSwgODg1NywgODg2NCwgODg3MCwgODg3NiwgODg4MCwgODg4NCwgODg5MCwgODg5NCwgODg5OCwgODkwMiwgODkwNiwgCisgICAgODkxMCwgODkxNCwgODkxOCwgODkyMiwgODkyNiwgODkzMCwgODkzNCwgODkzOCwgODk0MiwgODk0NiwgODk1MCwgODk1NCwgCisgICAgODk1OCwgODk2NiwgODk3NCwgODk4NCwgODk5MywgOTAwMiwgOTAwNSwgOTAwOSwgOTAxMywgOTAxNywgOTAyMSwgOTAyNSwgCisgICAgOTAyOSwgOTAzMywgOTAzNywgOTA0MiwgOTA0NiwgOTA0OSwgOTA1MiwgOTA1NSwgOTA1OCwgOTA2MSwgOTA2NCwgOTA2NywgCisgICAgOTA3MCwgOTA3NCwgOTA3NywgOTA4MCwgOTA4NSwgOTA5MCwgOTA5NiwgOTA5OSwgOTEwNiwgOTExNSwgOTEyMCwgOTEyNSwgCisgICAgOTEzMiwgOTEzNywgOTE0MiwgOTE0NiwgOTE1MCwgOTE1NCwgOTE1OCwgOTE2MiwgOTE2NiwgOTE3MCwgOTE3NCwgOTE3OCwgCisgICAgOTE4MiwgOTE4NywgOTE5MiwgOTE5OSwgOTIwNSwgOTIxMSwgOTIxNywgOTIyMiwgOTIzMCwgOTIzOCwgOTI0MywgOTI0OSwgCisgICAgOTI1NSwgOTI2MSwgOTI2NywgOTI3MSwgOTI3NSwgOTI3OSwgOTI4NiwgOTI5NiwgOTMwMCwgOTMwNCwgOTMwOCwgOTMxNCwgCisgICAgOTMyMiwgOTMyNiwgOTMzMCwgOTMzNywgOTM0MSwgOTM0NSwgOTM0OSwgOTM1NiwgOTM2MywgOTM3NSwgOTM3OSwgOTM4MywgCisgICAgOTM4NywgOTM5NywgOTQwNiwgOTQxMCwgOTQxOCwgOTQyNSwgOTQzMiwgOTQ0MSwgOTQ1MiwgOTQ2MCwgOTQ2NCwgOTQ3MywgCisgICAgOTQ4NCwgOTQ5MiwgOTUwNSwgOTUxMywgOTUyMSwgOTUyOSwgOTUzNywgOTU0MywgOTU1MiwgOTU1OSwgOTU2MywgOTU3MSwgCisgICAgOTU3NSwgOTU4MiwgOTU5MCwgOTU5NCwgOTYwMCwgOTYwNywgOTYxNCwgOTYxOCwgOTYyNiwgOTYzMCwgOTYzNywgOTY0MSwgCisgICAgOTY0OSwgOTY1MywgOTY2MSwgOTY2OSwgOTY3NiwgOTY4NCwgOTY5MiwgOTY5OSwgOTcwNSwgOTcwOSwgOTcxNiwgOTcyNCwgCisgICAgOTczMCwgOTczNywgOTc0NCwgOTc1MCwgOTc1OSwgOTc2NywgOTc3NCwgOTc4MCwgOTc4NCwgOTc4NywgOTc5MSwgOTc5NywgCisgICAgOTgwNSwgOTgwOSwgOTgxNSwgOTgyMSwgOTgyOCwgOTgzNSwgOTgzOCwgOTg0NSwgOTg1MCwgOTg1OCwgOTg2MywgOTg2NywgCisgICAgOTg4MCwgOTg5MywgOTg5OSwgOTkwNiwgOTkxMSwgOTkxNywgOTkyMiwgOTkyOCwgOTkzOCwgOTk0NSwgOTk1NCwgOTk2NCwgCisgICAgOTk3MCwgOTk3NSwgOTk4MCwgOTk4NCwgOTk4OCwgOTk5MywgOTk5OCwgMTAwMDQsIDEwMDEyLCAxMDAyMCwgMTAwMzEsIAorICAgIDEwMDM2LCAxMDA0NSwgMTAwNTQsIDEwMDYxLCAxMDA2NywgMTAwNzMsIDEwMDc5LCAxMDA4NSwgMTAwOTEsIDEwMDk3LCAKKyAgICAxMDEwMywgMTAxMDksIDEwMTE1LCAxMDEyMiwgMTAxMjksIDEwMTM2LCAxMDE0MiwgMTAxNTAsIDEwMTU5LCAxMDE2NSwgCisgICAgMTAxNzIsIDEwMTc5LCAxMDE4NCwgMTAxODksIDEwMTkzLCAxMDIwMCwgMTAyMDcsIDEwMjE2LCAxMDIyNSwgMTAyMjgsIAorICAgIDEwMjMzLCAxMDIzOCwgMCwgMTAyNDMsIDEwMjQ3LCAxMDI1MSwgMTAyNTcsIDEwMjYxLCAxMDI2NSwgMTAyNzEsIDEwMjc1LCAKKyAgICAxMDI4MywgMTAyODcsIDEwMjkxLCAxMDI5NSwgMTAyOTksIDEwMzAzLCAxMDMwOSwgMTAzMTMsIDEwMzE5LCAxMDMyMywgCisgICAgMTAzMjcsIDEwMzMxLCAxMDMzNSwgMTAzMzksIDEwMzQ0LCAxMDM0NywgMTAzNTEsIDEwMzU3LCAxMDM2MSwgMTAzNjUsIAorICAgIDEwMzY5LCAxMDM3MywgMTAzNzcsIDEwMzgzLCAxMDM4OSwgMTAzOTUsIDEwMzk5LCAxMDQwMywgMTA0MDgsIDEwNDEyLCAKKyAgICAxMDQxNiwgMTA0MjEsIDEwNDI1LCAxMDQyOSwgMTA0MzYsIDEwNDQzLCAxMDQ0NywgMTA0NTEsIDEwNDU2LCAxMDQ2MCwgCisgICAgMTA0NjQsIDEwNDY3LCAxMDQ3MiwgMTA0NzUsIDEwNDc4LCAxMDQ4MywgMTA0ODgsIDEwNDkyLCAxMDQ5NiwgMTA1MDIsIAorICAgIDEwNTA4LCAxMDUxMSwgMCwgMCwgMTA1MTQsIDEwNTIwLCAxMDUyNiwgMTA1MzIsIDEwNTQyLCAxMDU1NCwgMTA1NjYsIAorICAgIDEwNTgzLCAxMDU5NSwgMTA2MDYsIDEwNjE0LCAxMDYyMSwgMTA2MzIsIDEwNjQ3LCAxMDY1OCwgMTA2NjQsIDEwNjczLCAKKyAgICAxMDY4MSwgMTA2OTMsIDEwNzAzLCAxMDcxMSwgMTA3MjMsIDEwNzMwLCAxMDczOCwgMTA3NTAsIDEwNzU2LCAxMDc2MiwgCisgICAgMTA3NzAsIDEwNzc4LCAxMDc4NiwgMTA3OTIsIDEwODAyLCAxMDgwOSwgMTA4MTksIDEwODI5LCAxMDg0MiwgMTA4NTYsIAorICAgIDEwODcwLCAxMDg4MCwgMTA4OTEsIDEwOTAyLCAxMDkxNSwgMTA5MjgsIDEwOTQyLCAxMDk1NCwgMTA5NjYsIDEwOTc5LCAKKyAgICAxMDk5MiwgMTEwMDQsIDExMDE3LCAxMTAyNiwgMTEwMzQsIDExMDM5LCAxMTA0NCwgMTEwNDksIDExMDU0LCAxMTA1OSwgCisgICAgMTEwNjQsIDExMDY5LCAxMTA3NCwgMTEwNzksIDExMDg0LCAxMTA4OSwgMTEwOTQsIDExMDk5LCAxMTEwNCwgMTExMDksIAorICAgIDExMTE0LCAxMTExOSwgMTExMjQsIDExMTI5LCAxMTEzNCwgMTExMzksIDExMTQ0LCAxMTE0OSwgMTExNTQsIDExMTU5LCAKKyAgICAxMTE2NCwgMTExNjksIDExMTc0LCAxMTE3OSwgMTExODQsIDExMTg5LCAxMTE5NCwgMTExOTgsIDExMjAzLCAxMTIwOCwgCisgICAgMTEyMTMsIDExMjE4LCAxMTIyMywgMTEyMjcsIDExMjMxLCAxMTIzNSwgMTEyMzksIDExMjQzLCAxMTI0NywgMTEyNTEsIAorICAgIDExMjU1LCAxMTI1OSwgMTEyNjMsIDExMjY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTI3MiwgMTEyNzcsIDExMjgxLCAxMTI4NSwgMTEyODksIDExMjkzLCAxMTI5NywgMTEzMDEsIDExMzA1LCAxMTMwOSwgCisgICAgMTEzMTMsIDExMzE3LCAxMTMyMiwgMTEzMjYsIDExMzMwLCAxMTMzNCwgMTEzMzksIDExMzQzLCAxMTM0OCwgMTEzNTMsIAorICAgIDExMzU4LCAxMTM2MiwgMTEzNjcsIDExMzcyLCAxMTM3NywgMTEzODIsIDExMzg2LCAxMTM5MSwgMTEzOTUsIDExNDAwLCAKKyAgICAxMTQwNSwgMTE0MDksIDExNDE0LCAxMTQyMSwgMTE0MjUsIDExNDMwLCAxMTQzNCwgMTE0MzgsIDExNDQzLCAxMTQ0NywgCisgICAgMTE0NTQsIDExNDYxLCAxMTQ2OCwgMTE0NzQsIDExNDgyLCAxMTQ5MCwgMTE0OTksIDExNTA3LCAxMTUxNCwgMTE1MjEsIAorICAgIDExNTI5LCAxMTUzNSwgMTE1NDEsIDExNTQ3LCAxMTU1MywgMTE1NjAsIDExNTY1LCAxMTU2OSwgMTE1NzQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDExNTc4LCAxMTU4MywgMTE1ODgsIDExNTkzLCAxMTU5OCwgMTE2MDMsIDExNjA4LCAxMTYxMywgMTE2MTgsIAorICAgIDExNjIzLCAxMTYyOCwgMTE2MzMsIDExNjM4LCAxMTY0MywgMTE2NDgsIDExNjUzLCAxMTY1OCwgMTE2NjMsIDExNjY4LCAKKyAgICAxMTY3MywgMTE2NzgsIDExNjgzLCAxMTY4OCwgMTE2OTMsIDExNjk4LCAxMTcwMywgMTE3MDgsIDExNzE2LCAxMTcyMywgCisgICAgMTE3MjksIDExNzM0LCAxMTc0MiwgMTE3NDksIDExNzU1LCAxMTc2MiwgMTE3NjgsIDExNzczLCAxMTc4MCwgMTE3ODcsIAorICAgIDExNzkzLCAxMTc5OCwgMTE4MDMsIDExODA5LCAxMTgxNCwgMTE4MTksIDExODI1LCAwLCAwLCAxMTgzMCwgMTE4MzYsIAorICAgIDExODQyLCAxMTg0OCwgMTE4NTQsIDExODYwLCAxMTg2NiwgMTE4NzEsIDExODc5LCAxMTg4NSwgMTE4OTEsIDExODk3LCAKKyAgICAxMTkwMywgMTE5MDksIDExOTE3LCAwLCAxMTkyMywgMTE5MjgsIDExOTMzLCAxMTkzOCwgMTE5NDMsIDExOTQ4LCAxMTk1MywgCisgICAgMTE5NTgsIDExOTYzLCAxMTk2OCwgMTE5NzMsIDExOTc4LCAxMTk4MywgMTE5ODgsIDExOTkzLCAxMTk5OCwgMTIwMDMsIAorICAgIDEyMDA4LCAxMjAxMywgMTIwMTgsIDEyMDIzLCAxMjAyOCwgMTIwMzMsIDEyMDM4LCAxMjA0MywgMTIwNDgsIDEyMDUzLCAKKyAgICAxMjA1OCwgMCwgMCwgMTIwNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYyODcyLCA2Mjg4MSwgNjI4OTAsIDYyOTAxLCA2MjkwOCwgNjI5MTMsIDYyOTE4LCA2MjkyNSwgNjI5MzIsIDYyOTM4LCAKLSAgICA2Mjk0MywgNjI5NDgsIDYyOTUzLCA2Mjk1OCwgNjI5NjUsIDYyOTcwLCA2Mjk3NSwgNjI5ODAsIDYyOTkxLCA2Mjk5NiwgCi0gICAgNjMwMDEsIDYzMDA4LCA2MzAxMywgNjMwMjAsIDYzMDI1LCA2MzAzMCwgNjMwMzcsIDYzMDQ0LCA2MzA1MSwgNjMwNjAsIAotICAgIDYzMDY5LCA2MzA3NCwgNjMwNzksIDYzMDg0LCA2MzA5MSwgNjMwOTYsIDYzMTA2LCA2MzExMywgNjMxMTgsIDYzMTIzLCAKLSAgICA2MzEyOCwgNjMxMzMsIDYzMTM4LCA2MzE0MywgNjMxNTIsIDYzMTU5LCA2MzE2NiwgNjMxNzEsIDYzMTc4LCA2MzE4MywgCi0gICAgNjMxOTAsIDYzMTk5LCA2MzIxMCwgNjMyMTUsIDYzMjI0LCA2MzIyOSwgNjMyMzYsIDYzMjQ1LCA2MzI1NCwgNjMyNTksIAotICAgIDYzMjY0LCA2MzI3MSwgNjMyNzcsIDYzMjg0LCA2MzI5MSwgNjMyOTUsIDYzMjk5LCA2MzMwMiwgNjMzMDYsIDYzMzEwLCAKLSAgICA2MzMxNCwgNjMzMTgsIDYzMzIyLCA2MzMyNiwgNjMzMzAsIDYzMzMzLCA2MzMzNywgNjMzNDEsIDYzMzQ1LCA2MzM0OSwgCi0gICAgNjMzNTMsIDYzMzU3LCA2MzM2MCwgNjMzNjQsIDYzMzY4LCA2MzM3MSwgNjMzNzUsIDYzMzc5LCA2MzM4MywgNjMzODcsIAotICAgIDYzMzkxLCA2MzM5NSwgNjMzOTksIDYzNDAzLCA2MzQwNywgNjM0MTEsIDYzNDE1LCA2MzQxOSwgNjM0MjMsIDYzNDI3LCAKLSAgICA2MzQzMSwgNjM0MzUsIDYzNDM5LCA2MzQ0MywgNjM0NDcsIDYzNDUxLCA2MzQ1NSwgNjM0NTksIDYzNDYzLCA2MzQ2NywgCi0gICAgNjM0NzEsIDYzNDc1LCA2MzQ3OSwgNjM0ODMsIDYzNDg3LCA2MzQ5MSwgNjM0OTUsIDYzNDk5LCA2MzUwMywgNjM1MDcsIAotICAgIDYzNTExLCA2MzUxNSwgNjM1MTksIDYzNTIzLCA2MzUyNywgNjM1MzEsIDYzNTM1LCA2MzUzOSwgNjM1NDMsIDYzNTQ3LCAKLSAgICA2MzU1MCwgNjM1NTQsIDYzNTU4LCA2MzU2MiwgNjM1NjYsIDYzNTcwLCA2MzU3NCwgNjM1NzgsIDYzNTgyLCA2MzU4NiwgCi0gICAgNjM1OTAsIDYzNTk0LCA2MzU5OCwgNjM2MDIsIDYzNjA2LCA2MzYxMCwgNjM2MTQsIDYzNjE4LCA2MzYyMiwgNjM2MjYsIAotICAgIDYzNjMwLCA2MzYzNCwgNjM2MzgsIDYzNjQyLCA2MzY0NiwgNjM2NTAsIDYzNjU0LCA2MzY1OCwgNjM2NjIsIDYzNjY2LCAKLSAgICA2MzY3MCwgNjM2NzQsIDYzNjc4LCA2MzY4MiwgNjM2ODYsIDYzNjkwLCA2MzY5NCwgNjM2OTgsIDYzNzAyLCA2MzcwNiwgCi0gICAgNjM3MTAsIDYzNzE0LCA2MzcxOCwgNjM3MjIsIDYzNzI2LCA2MzczMCwgNjM3MzQsIDYzNzM4LCA2Mzc0MiwgNjM3NDYsIAotICAgIDYzNzUwLCA2Mzc1NCwgNjM3NTgsIDYzNzYyLCA2Mzc2NiwgNjM3NzAsIDYzNzc0LCA2Mzc3OCwgNjM3ODIsIDYzNzg2LCAKLSAgICA2Mzc5MCwgNjM3OTQsIDYzNzk4LCA2MzgwMiwgNjM4MDYsIDYzODEwLCA2MzgxNCwgNjM4MTgsIDYzODIyLCA2MzgyNiwgCi0gICAgNjM4MzAsIDYzODM0LCA2MzgzOCwgNjM4NDIsIDYzODQ2LCA2Mzg1MCwgNjM4NTQsIDYzODU4LCA2Mzg2MiwgNjM4NjYsIAotICAgIDYzODcwLCA2Mzg3NCwgNjM4NzgsIDYzODgyLCA2Mzg4NiwgNjM4OTAsIDYzODk0LCA2Mzg5OCwgNjM5MDIsIDYzOTA2LCAKLSAgICA2MzkxMCwgNjM5MTQsIDYzOTE4LCA2MzkyMiwgNjM5MjYsIDYzOTMwLCA2MzkzNCwgNjM5MzgsIDYzOTQyLCA2Mzk0NiwgCi0gICAgNjM5NTAsIDYzOTU0LCA2Mzk1OCwgNjM5NjIsIDYzOTY2LCA2Mzk3MCwgNjM5NzQsIDYzOTc4LCA2Mzk4MiwgNjM5ODYsIAotICAgIDYzOTkwLCA2Mzk5NCwgNjM5OTgsIDY0MDAyLCA2NDAwNiwgNjQwMTAsIDY0MDE0LCA2NDAxOCwgNjQwMjEsIDY0MDI1LCAKLSAgICA2NDAyOSwgNjQwMzMsIDY0MDM3LCA2NDA0MSwgNjQwNDUsIDY0MDQ5LCA2NDA1MywgNjQwNTcsIDY0MDYxLCA2NDA2NSwgCi0gICAgNjQwNjksIDY0MDczLCA2NDA3NywgNjQwODEsIDY0MDg1LCA2NDA4OSwgNjQwOTMsIDY0MDk3LCA2NDEwMSwgNjQxMDUsIAotICAgIDY0MTA5LCA2NDExMywgNjQxMTcsIDY0MTIxLCA2NDEyNSwgNjQxMjksIDY0MTMzLCA2NDEzNywgNjQxNDEsIDY0MTQ1LCAKLSAgICA2NDE0OSwgNjQxNTMsIDY0MTU3LCA2NDE2MSwgNjQxNjUsIDY0MTY5LCA2NDE3MywgNjQxNzcsIDY0MTgxLCA2NDE4NSwgCi0gICAgNjQxODksIDY0MTkzLCA2NDE5NywgNjQyMDEsIDY0MjA1LCA2NDIwOSwgNjQyMTMsIDY0MjE3LCA2NDIyMSwgNjQyMjUsIAotICAgIDY0MjI5LCA2NDIzMywgNjQyMzcsIDY0MjQxLCA2NDI0NSwgNjQyNDksIDY0MjUzLCA2NDI1NywgNjQyNjEsIDY0MjY1LCAKLSAgICA2NDI2OSwgNjQyNzMsIDY0Mjc3LCA2NDI4MSwgNjQyODUsIDY0Mjg5LCA2NDI5MywgNjQyOTcsIDY0MzAxLCA2NDMwNSwgCi0gICAgNjQzMDksIDY0MzEzLCA2NDMxNywgNjQzMjEsIDY0MzI1LCA2NDMyOSwgNjQzMzMsIDY0MzM3LCA2NDM0MSwgNjQzNDUsIAotICAgIDY0MzQ5LCA2NDM1MywgNjQzNTcsIDY0MzYxLCA2NDM2NSwgNjQzNjksIDY0MzczLCA2NDM3NywgNjQzODEsIDY0Mzg1LCAKLSAgICA2NDM4OSwgNjQzOTMsIDY0Mzk3LCA2NDQwMSwgNjQ0MDUsIDY0NDA5LCA2NDQxMywgNjQ0MTcsIDY0NDIxLCA2NDQyNSwgCi0gICAgNjQ0MjksIDY0NDMzLCA2NDQzNywgNjQ0NDEsIDY0NDQ1LCA2NDQ0OSwgNjQ0NTMsIDY0NDU3LCA2NDQ2MSwgNjQ0NjUsIAotICAgIDY0NDY5LCA2NDQ3MywgNjQ0NzcsIDY0NDgxLCA2NDQ4NCwgNjQ0ODgsIDY0NDkyLCA2NDQ5NiwgNjQ1MDAsIDY0NTA0LCAKLSAgICA2NDUwOCwgNjQ1MTIsIDY0NTE2LCA2NDUyMCwgNjQ1MjQsIDY0NTI4LCA2NDUzMiwgNjQ1MzYsIDY0NTQwLCA2NDU0NCwgCi0gICAgNjQ1NDgsIDY0NTUyLCA2NDU1NiwgNjQ1NjAsIDY0NTY0LCA2NDU2OCwgNjQ1NzIsIDY0NTc2LCA2NDU4MCwgNjQ1ODQsIAotICAgIDY0NTg4LCA2NDU5MiwgNjQ1OTYsIDY0NjAwLCA2NDYwNCwgNjQ2MDgsIDY0NjEyLCA2NDYxNiwgNjQ2MjAsIDY0NjI0LCAKLSAgICA2NDYyOCwgNjQ2MzIsIDY0NjM2LCA2NDY0MCwgNjQ2NDQsIDY0NjQ4LCA2NDY1MiwgNjQ2NTYsIDY0NjYwLCA2NDY2NCwgCi0gICAgNjQ2NjgsIDY0NjcyLCA2NDY3NiwgNjQ2ODAsIDY0Njg0LCA2NDY4OCwgNjQ2OTIsIDY0Njk2LCA2NDcwMCwgNjQ3MDQsIAotICAgIDY0NzA4LCA2NDcxMiwgNjQ3MTYsIDY0NzIwLCA2NDcyNCwgNjQ3MjgsIDY0NzMyLCA2NDczNiwgNjQ3NDAsIDY0NzQ0LCAKLSAgICA2NDc0OCwgNjQ3NTIsIDY0NzU2LCA2NDc2MCwgNjQ3NjQsIDY0NzY4LCA2NDc3MiwgNjQ3NzYsIDY0NzgwLCA2NDc4NCwgCi0gICAgNjQ3ODgsIDY0NzkyLCA2NDc5NiwgNjQ4MDAsIDY0ODA0LCA2NDgwOCwgNjQ4MTIsIDY0ODE2LCA2NDgyMCwgNjQ4MjQsIAotICAgIDY0ODI4LCA2NDgzMiwgNjQ4MzYsIDY0ODQwLCA2NDg0MywgNjQ4NDcsIDY0ODUxLCA2NDg1NSwgNjQ4NTksIDY0ODYzLCAKLSAgICA2NDg2NywgNjQ4NzEsIDY0ODc1LCA2NDg3OSwgNjQ4ODMsIDY0ODg3LCA2NDg5MSwgNjQ4OTUsIDY0ODk5LCA2NDkwMywgCi0gICAgNjQ5MDcsIDY0OTExLCA2NDkxNSwgNjQ5MTksIDY0OTIzLCA2NDkyNywgNjQ5MzEsIDY0OTM1LCA2NDkzOSwgNjQ5NDMsIAotICAgIDY0OTQ3LCA2NDk1MSwgNjQ5NTUsIDY0OTU5LCA2NDk2MywgNjQ5NjcsIDY0OTcxLCA2NDk3NSwgNjQ5NzksIDY0OTgzLCAKLSAgICA2NDk4NywgNjQ5OTEsIDY0OTk1LCA2NDk5OSwgNjUwMDMsIDY1MDA3LCA2NTAxMSwgNjUwMTUsIDY1MDE5LCA2NTAyMywgCi0gICAgNjUwMjcsIDY1MDMxLCA2NTAzNSwgNjUwMzksIDY1MDQzLCA2NTA0NywgNjUwNTEsIDY1MDU1LCA2NTA1OSwgNjUwNjMsIAotICAgIDY1MDY3LCA2NTA3MSwgNjUwNzUsIDY1MDc5LCA2NTA4MywgNjUwODcsIDY1MDkxLCA2NTA5NSwgNjUwOTksIDY1MTAzLCAKLSAgICA2NTEwNywgNjUxMTEsIDY1MTE1LCA2NTExOSwgNjUxMjMsIDY1MTI3LCA2NTEzMSwgNjUxMzUsIDY1MTM5LCA2NTE0MywgCi0gICAgNjUxNDcsIDY1MTUxLCA2NTE1NSwgNjUxNTksIDY1MTYzLCA2NTE2NywgNjUxNzEsIDY1MTc1LCA2NTE3OSwgNjUxODMsIAotICAgIDY1MTg3LCA2NTE5MSwgNjUxOTUsIDY1MTk5LCA2NTIwMywgNjUyMDcsIDY1MjExLCA2NTIxNSwgNjUyMTksIDY1MjIzLCAKLSAgICA2NTIyNywgNjUyMzEsIDY1MjM1LCA2NTIzOSwgNjUyNDMsIDY1MjQ3LCA2NTI1MSwgNjUyNTUsIDY1MjU5LCA2NTI2MywgCi0gICAgNjUyNjcsIDY1MjcxLCA2NTI3NSwgNjUyNzksIDY1MjgzLCA2NTI4NywgNjUyOTEsIDY1Mjk1LCA2NTI5OSwgNjUzMDMsIAotICAgIDY1MzA3LCA2NTMxMSwgNjUzMTUsIDY1MzE5LCA2NTMyMywgNjUzMjcsIDY1MzMxLCA2NTMzNSwgNjUzMzgsIDY1MzQyLCAKLSAgICA2NTM0NiwgNjUzNTAsIDY1MzU0LCA2NTM1OCwgNjUzNjIsIDY1MzY2LCA2NTM3MCwgNjUzNzQsIDY1Mzc4LCA2NTM4MiwgCi0gICAgNjUzODYsIDY1MzkwLCA2NTM5NCwgNjUzOTgsIDY1NDAyLCA2NTQwNiwgNjU0MTAsIDY1NDE0LCA2NTQxOCwgNjU0MjIsIAotICAgIDY1NDI2LCA2NTQzMCwgNjU0MzQsIDY1NDM4LCA2NTQ0MiwgNjU0NDYsIDY1NDUwLCA2NTQ1NCwgNjU0NTgsIDY1NDYyLCAKLSAgICA2NTQ2NiwgNjU0NzAsIDY1NDc0LCA2NTQ3OCwgNjU0ODIsIDY1NDg2LCA2NTQ5MCwgNjU0OTQsIDY1NDk4LCA2NTUwMiwgCi0gICAgNjU1MDYsIDY1NTEwLCA2NTUxNCwgNjU1MTgsIDY1NTIyLCA2NTUyNiwgNjU1MzAsIDY1NTM0LCA2NTUzOCwgNjU1NDIsIAotICAgIDY1NTQ2LCA2NTU1MCwgNjU1NTQsIDY1NTU4LCA2NTU2MiwgNjU1NjYsIDY1NTcwLCA2NTU3NCwgNjU1NzgsIDY1NTgyLCAKLSAgICA2NTU4NiwgNjU1OTAsIDY1NTk0LCA2NTU5OCwgNjU2MDIsIDY1NjA2LCA2NTYxMCwgNjU2MTQsIDY1NjE4LCA2NTYyMiwgCi0gICAgNjU2MjYsIDY1NjMwLCA2NTYzNCwgNjU2MzgsIDY1NjQyLCA2NTY0NiwgNjU2NTAsIDY1NjU0LCA2NTY1OCwgNjU2NjIsIAotICAgIDY1NjY2LCA2NTY3MCwgNjU2NzQsIDY1Njc4LCA2NTY4MiwgNjU2ODYsIDY1NjkwLCA2NTY5NCwgNjU2OTgsIDY1NzAyLCAKLSAgICA2NTcwNiwgNjU3MTAsIDY1NzE0LCA2NTcxOCwgNjU3MjIsIDY1NzI2LCA2NTczMCwgNjU3MzQsIDY1NzM4LCA2NTc0MiwgCi0gICAgNjU3NDYsIDY1NzUwLCA2NTc1NCwgNjU3NTgsIDY1NzYyLCA2NTc2NiwgNjU3NzAsIDY1Nzc0LCA2NTc3OCwgNjU3ODIsIAotICAgIDY1Nzg2LCA2NTc5MCwgNjU3OTMsIDY1Nzk3LCA2NTgwMSwgNjU4MDUsIDY1ODA5LCA2NTgxMywgNjU4MTcsIDY1ODIxLCAKLSAgICA2NTgyNSwgNjU4MjksIDY1ODMzLCA2NTgzNywgNjU4NDEsIDY1ODQ1LCA2NTg0OSwgNjU4NTMsIDY1ODU3LCA2NTg2MSwgCi0gICAgNjU4NjUsIDY1ODY5LCA2NTg3MywgNjU4NzcsIDY1ODgxLCA2NTg4NSwgNjU4ODksIDY1ODkzLCA2NTg5NywgNjU5MDEsIAotICAgIDY1OTA1LCA2NTkwOSwgNjU5MTMsIDY1OTE3LCA2NTkyMSwgNjU5MjUsIDY1OTI5LCA2NTkzMywgNjU5MzcsIDY1OTQxLCAKLSAgICA2NTk0NSwgNjU5NDksIDY1OTUzLCA2NTk1NywgNjU5NjEsIDY1OTY1LCA2NTk2OSwgNjU5NzMsIDY1OTc3LCA2NTk4MSwgCi0gICAgNjU5ODUsIDY1OTg5LCA2NTk5MywgNjU5OTcsIDY2MDAxLCA2NjAwNSwgNjYwMDksIDY2MDEzLCA2NjAxNywgNjYwMjEsIAotICAgIDY2MDI1LCA2NjAyOSwgNjYwMzMsIDY2MDM3LCA2NjA0MSwgNjYwNDUsIDY2MDQ5LCA2NjA1MywgNjYwNTcsIDY2MDYxLCAKLSAgICA2NjA2NSwgNjYwNjksIDY2MDczLCA2NjA3NywgNjYwODEsIDY2MDg1LCA2NjA4OSwgNjYwOTMsIDY2MDk3LCA2NjEwMSwgCi0gICAgNjYxMDUsIDY2MTA5LCA2NjExMywgNjYxMTcsIDY2MTIxLCA2NjEyNSwgNjYxMjksIDY2MTMzLCA2NjEzNywgNjYxNDEsIAotICAgIDY2MTQ1LCA2NjE0OSwgNjYxNTMsIDY2MTU3LCA2NjE2MSwgNjYxNjUsIDY2MTY5LCA2NjE3MywgNjYxNzcsIDY2MTgxLCAKLSAgICA2NjE4NSwgNjYxODksIDY2MTkzLCA2NjE5NywgNjYyMDEsIDY2MjA1LCA2NjIwOSwgNjYyMTMsIDY2MjE3LCA2NjIyMSwgCi0gICAgNjYyMjUsIDY2MjI5LCA2NjIzMywgNjYyMzcsIDY2MjQxLCA2NjI0NSwgNjYyNDksIDY2MjUzLCA2NjI1NywgNjYyNjEsIAotICAgIDY2MjY1LCA2NjI2OSwgNjYyNzMsIDY2Mjc3LCA2NjI4MSwgNjYyODUsIDY2Mjg5LCA2NjI5MywgNjYyOTcsIDY2MzAxLCAKLSAgICA2NjMwNSwgNjYzMDksIDY2MzEzLCA2NjMxNywgNjYzMjEsIDY2MzI1LCA2NjMyOSwgNjYzMzMsIDY2MzM3LCA2NjM0MSwgCi0gICAgNjYzNDUsIDY2MzQ5LCA2NjM1MywgNjYzNTcsIDY2MzYxLCA2NjM2NSwgNjYzNjksIDY2MzczLCA2NjM3NywgNjYzODEsIAotICAgIDY2Mzg1LCA2NjM4OSwgNjYzOTMsIDY2Mzk2LCA2NjQwMCwgNjY0MDQsIDY2NDA4LCA2NjQxMiwgNjY0MTYsIDY2NDIwLCAKLSAgICA2NjQyNCwgNjY0MjgsIDY2NDMyLCA2NjQzNiwgNjY0NDAsIDY2NDQ0LCA2NjQ0OCwgNjY0NTIsIDY2NDU2LCA2NjQ2MCwgCi0gICAgNjY0NjQsIDY2NDY4LCA2NjQ3MiwgNjY0NzYsIDY2NDgwLCA2NjQ4NCwgNjY0ODgsIDY2NDkyLCA2NjQ5NiwgNjY1MDAsIAotICAgIDY2NTA0LCA2NjUwOCwgNjY1MTIsIDY2NTE2LCA2NjUyMCwgNjY1MjQsIDY2NTI4LCA2NjUzMiwgNjY1MzYsIDY2NTQwLCAKLSAgICA2NjU0NCwgNjY1NDgsIDY2NTUyLCA2NjU1NiwgNjY1NjAsIDY2NTY0LCA2NjU2OCwgNjY1NzIsIDY2NTc2LCA2NjU4MCwgCi0gICAgNjY1ODQsIDY2NTg4LCA2NjU5MiwgNjY1OTYsIDY2NjAwLCA2NjYwNCwgNjY2MDgsIDY2NjEyLCA2NjYxNiwgNjY2MjAsIAotICAgIDY2NjI0LCA2NjYyOCwgNjY2MzIsIDY2NjM2LCA2NjY0MCwgNjY2NDQsIDY2NjQ4LCA2NjY1MiwgNjY2NTYsIDY2NjYwLCAKLSAgICA2NjY2NCwgNjY2NjgsIDY2NjcyLCA2NjY3NiwgNjY2ODAsIDY2Njg0LCA2NjY4OCwgNjY2OTIsIDY2Njk2LCA2NjcwMCwgCi0gICAgNjY3MDQsIDY2NzA4LCA2NjcxMiwgNjY3MTYsIDY2NzIwLCA2NjcyNCwgNjY3MjgsIDY2NzMyLCA2NjczNiwgNjY3NDAsIAotICAgIDY2NzQ0LCA2Njc0OCwgNjY3NTIsIDY2NzU2LCA2Njc2MCwgNjY3NjQsIDY2NzY4LCA2Njc3MiwgNjY3NzYsIDY2NzgwLCAKLSAgICA2Njc4NCwgNjY3ODgsIDY2NzkyLCA2Njc5NiwgNjY4MDAsIDY2ODA0LCA2NjgwOCwgNjY4MTIsIDY2ODE2LCA2NjgyMCwgCi0gICAgNjY4MjQsIDY2ODI4LCA2NjgzMiwgNjY4MzYsIDY2ODQwLCA2Njg0NCwgNjY4NDgsIDY2ODUyLCA2Njg1NiwgNjY4NjAsIAotICAgIDY2ODY0LCA2Njg2OCwgNjY4NzIsIDY2ODc2LCA2Njg4MCwgNjY4ODQsIDY2ODg4LCA2Njg5MiwgNjY4OTYsIDY2OTAwLCAKLSAgICA2NjkwNCwgNjY5MDgsIDY2OTEyLCA2NjkxNiwgNjY5MjAsIDY2OTI0LCA2NjkyOCwgNjY5MzIsIDY2OTM2LCA2Njk0MCwgCi0gICAgNjY5NDQsIDY2OTQ4LCA2Njk1MiwgNjY5NTYsIDY2OTYwLCA2Njk2NCwgNjY5NjgsIDY2OTcyLCA2Njk3NiwgNjY5ODAsIAotICAgIDY2OTg0LCA2Njk4OCwgNjY5OTIsIDY2OTk2LCA2NzAwMCwgNjcwMDQsIDY3MDA4LCA2NzAxMiwgNjcwMTYsIDY3MDIwLCAKLSAgICA2NzAyNCwgNjcwMjgsIDY3MDMyLCA2NzAzNiwgNjcwNDAsIDY3MDQ0LCA2NzA0OCwgNjcwNTIsIDY3MDU2LCA2NzA2MCwgCi0gICAgNjcwNjQsIDY3MDY4LCA2NzA3MiwgNjcwNzYsIDY3MDgwLCA2NzA4NCwgNjcwODgsIDY3MDkyLCA2NzA5NiwgNjcxMDAsIAotICAgIDY3MTA0LCA2NzEwOCwgNjcxMTIsIDY3MTE2LCA2NzEyMCwgNjcxMjQsIDY3MTI4LCA2NzEzMiwgNjcxMzYsIDY3MTQwLCAKLSAgICA2NzE0NCwgNjcxNDgsIDY3MTUyLCA2NzE1NSwgNjcxNTksIDY3MTYzLCA2NzE2NywgNjcxNzEsIDY3MTc1LCA2NzE3OSwgCi0gICAgNjcxODMsIDY3MTg3LCA2NzE5MSwgNjcxOTUsIDY3MTk5LCA2NzIwMywgNjcyMDcsIDY3MjExLCA2NzIxNSwgNjcyMTksIAotICAgIDY3MjIzLCA2NzIyNywgNjcyMzEsIDY3MjM1LCA2NzIzOSwgNjcyNDMsIDY3MjQ3LCA2NzI1MSwgNjcyNTUsIDY3MjU5LCAKLSAgICA2NzI2MywgNjcyNjcsIDY3MjcxLCA2NzI3NSwgNjcyNzksIDY3MjgzLCA2NzI4NywgNjcyOTEsIDY3Mjk1LCA2NzI5OSwgCi0gICAgNjczMDMsIDY3MzA3LCA2NzMxMSwgNjczMTUsIDY3MzE5LCA2NzMyMywgNjczMjcsIDY3MzMxLCA2NzMzNSwgNjczMzksIAotICAgIDY3MzQzLCA2NzM0NywgNjczNTEsIDY3MzU1LCA2NzM1OSwgNjczNjMsIDY3MzY3LCA2NzM3MSwgNjczNzUsIDY3Mzc5LCAKLSAgICA2NzM4MywgNjczODcsIDY3MzkxLCA2NzM5NSwgNjczOTksIDY3NDAzLCA2NzQwNywgNjc0MTEsIDY3NDE1LCA2NzQxOSwgCi0gICAgNjc0MjMsIDY3NDI3LCA2NzQzMSwgNjc0MzUsIDY3NDM5LCA2NzQ0MywgNjc0NDcsIDY3NDUxLCA2NzQ1NSwgNjc0NTksIAotICAgIDY3NDYzLCA2NzQ2NywgNjc0NzEsIDY3NDc1LCA2NzQ3OSwgNjc0ODMsIDY3NDg3LCA2NzQ5MSwgNjc0OTUsIDY3NDk5LCAKLSAgICA2NzUwMywgNjc1MDcsIDY3NTExLCA2NzUxNSwgNjc1MTksIDY3NTIzLCA2NzUyNywgNjc1MzEsIDY3NTM1LCA2NzUzOSwgCi0gICAgNjc1NDMsIDY3NTQ3LCA2NzU1MSwgNjc1NTUsIDY3NTU5LCA2NzU2MywgNjc1NjcsIDY3NTcxLCA2NzU3NSwgNjc1NzksIAotICAgIDY3NTgzLCA2NzU4NywgNjc1OTEsIDY3NTk1LCA2NzU5OSwgNjc2MDMsIDY3NjA3LCA2NzYxMSwgNjc2MTUsIDY3NjE5LCAKLSAgICA2NzYyMywgNjc2MjcsIDY3NjMxLCA2NzYzNSwgNjc2MzksIDY3NjQzLCA2NzY0NywgNjc2NTEsIDY3NjU1LCA2NzY1OSwgCi0gICAgNjc2NjMsIDY3NjY3LCA2NzY3MSwgNjc2NzUsIDY3Njc5LCA2NzY4MywgNjc2ODcsIDY3NjkxLCA2NzY5NSwgNjc2OTksIAotICAgIDY3NzAzLCA2NzcwNywgNjc3MTEsIDY3NzE1LCA2NzcxOSwgNjc3MjMsIDY3NzI3LCA2NzczMSwgNjc3MzUsIDY3NzM5LCAKLSAgICA2Nzc0MywgNjc3NDcsIDY3NzUxLCA2Nzc1NSwgNjc3NTksIDY3NzYzLCA2Nzc2NywgNjc3NzEsIDY3Nzc1LCA2Nzc3OSwgCi0gICAgNjc3ODMsIDY3Nzg3LCA2Nzc5MSwgNjc3OTUsIDY3Nzk5LCA2NzgwMywgNjc4MDcsIDY3ODExLCA2NzgxNSwgNjc4MTksIAotICAgIDY3ODIzLCA2NzgyNywgNjc4MzEsIDY3ODM1LCA2NzgzOSwgNjc4NDMsIDY3ODQ3LCA2Nzg1MSwgNjc4NTUsIDY3ODU5LCAKLSAgICA2Nzg2MywgNjc4NjcsIDY3ODcxLCA2Nzg3NSwgNjc4NzksIDY3ODgzLCA2Nzg4NywgNjc4OTEsIDY3ODk1LCA2Nzg5OSwgCi0gICAgNjc5MDMsIDY3OTA3LCA2NzkxMSwgNjc5MTUsIDY3OTE5LCA2NzkyMywgNjc5MjcsIDY3OTMxLCA2NzkzNSwgMCwgMCwgMCwgCi0gICAgNjc5MzksIDY3OTQzLCA2Nzk0NywgNjc5NTEsIDY3OTU1LCA2Nzk1OSwgNjc5NjMsIDY3OTY3LCA2Nzk3MSwgNjc5NzUsIAotICAgIDY3OTc5LCA2Nzk4MywgNjc5ODcsIDY3OTkxLCA2Nzk5NSwgNjc5OTksIDY4MDAzLCA2ODAwNywgNjgwMTEsIDY4MDE1LCAKLSAgICA2ODAxOSwgNjgwMjMsIDY4MDI3LCA2ODAzMSwgNjgwMzUsIDY4MDM5LCA2ODA0MywgNjgwNDcsIDY4MDUxLCA2ODA1NSwgCi0gICAgNjgwNTksIDY4MDYzLCA2ODA2NywgNjgwNzEsIDY4MDc1LCA2ODA3OSwgNjgwODMsIDY4MDg3LCA2ODA5MSwgNjgwOTUsIAotICAgIDY4MDk5LCA2ODEwMywgNjgxMDcsIDY4MTExLCA2ODExNSwgNjgxMTksIDY4MTIzLCA2ODEyNywgNjgxMzEsIDY4MTM1LCAKLSAgICA2ODEzOSwgNjgxNDMsIDY4MTQ3LCA2ODE1MSwgNjgxNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY4MTU5LCAKLSAgICA2ODE2NCwgNjgxNjgsIDY4MTczLCA2ODE3OCwgNjgxODMsIDY4MTg4LCA2ODE5MywgNjgxOTcsIDY4MjAyLCA2ODIwNywgCi0gICAgNjgyMTIsIDY4MjE3LCA2ODIyMiwgNjgyMjcsIDY4MjMyLCA2ODIzNiwgNjgyNDAsIDY4MjQ1LCA2ODI1MCwgNjgyNTUsIAotICAgIDY4MjYwLCA2ODI2NSwgNjgyNjksIDY4Mjc0LCA2ODI3OSwgNjgyODQsIDY4Mjg5LCA2ODI5NCwgNjgyOTgsIDY4MzAzLCAKLSAgICA2ODMwNywgNjgzMTIsIDY4MzE2LCA2ODMyMSwgNjgzMjUsIDY4MzI5LCA2ODMzMywgNjgzMzgsIDY4MzQzLCA2ODM0OCwgCi0gICAgNjgzNTYsIDY4MzY0LCA2ODM3MiwgNjgzODAsIDY4Mzg3LCA2ODM5NSwgNjg0MDEsIDY4NDA5LCA2ODQxMywgNjg0MTcsIAotICAgIDY4NDIxLCA2ODQyNSwgNjg0MjksIDY4NDMzLCA2ODQzNywgNjg0NDEsIDY4NDQ1LCA2ODQ0OSwgNjg0NTMsIDY4NDU3LCAKLSAgICA2ODQ2MSwgNjg0NjUsIDY4NDY5LCA2ODQ3MywgNjg0NzcsIDY4NDgxLCA2ODQ4NSwgNjg0ODksIDY4NDkzLCA2ODQ5NywgCi0gICAgNjg1MDEsIDY4NTA1LCA2ODUwOSwgNjg1MTMsIDY4NTE3LCA2ODUyMSwgNjg1MjUsIDY4NTI5LCA2ODUzMywgNjg1MzcsIAotICAgIDY4NTQxLCA2ODU0NSwgNjg1NDksIDY4NTUzLCA2ODU1NiwgNjg1NjAsIDY4NTY0LCA2ODU2OCwgNjg1NzIsIDY4NTc2LCAKLSAgICA2ODU4MCwgNjg1ODQsIDY4NTg4LCA2ODU5MiwgNjg1OTYsIDY4NjAwLCA2ODYwNCwgNjg2MDgsIDY4NjEyLCA2ODYxNiwgCi0gICAgNjg2MjAsIDY4NjI0LCA2ODYyOCwgNjg2MzIsIDY4NjM2LCA2ODY0MCwgNjg2NDQsIDY4NjQ4LCA2ODY1MiwgNjg2NTYsIAotICAgIDY4NjYwLCA2ODY2NCwgNjg2NjgsIDY4NjcyLCA2ODY3NiwgNjg2ODAsIDY4Njg0LCA2ODY4OCwgNjg2OTIsIDY4Njk2LCAKLSAgICA2ODcwMCwgNjg3MDMsIDY4NzA3LCA2ODcxMSwgNjg3MTQsIDY4NzE4LCA2ODcyMiwgNjg3MjYsIDY4NzI5LCA2ODczMywgCi0gICAgNjg3MzcsIDY4NzQxLCA2ODc0NSwgNjg3NDksIDY4NzUzLCA2ODc1NywgNjg3NjEsIDY4NzY1LCA2ODc2OSwgNjg3NzMsIAotICAgIDY4Nzc3LCA2ODc4MSwgNjg3ODUsIDY4Nzg4LCA2ODc5MiwgNjg3OTYsIDY4ODAwLCA2ODgwNCwgNjg4MDgsIDY4ODEyLCAKLSAgICA2ODgxNiwgNjg4MjAsIDY4ODI0LCA2ODgyNywgNjg4MzAsIDY4ODM0LCA2ODgzOCwgNjg4NDIsIDY4ODQ1LCA2ODg0OCwgCi0gICAgNjg4NTIsIDY4ODU2LCA2ODg2MCwgNjg4NjQsIDY4ODY4LCA2ODg3MiwgNjg4NzYsIDY4ODgwLCA2ODg4NCwgNjg4ODgsIAotICAgIDY4ODkyLCA2ODg5NiwgNjg5MDAsIDY4OTA0LCA2ODkwOCwgNjg5MTIsIDY4OTE2LCA2ODkyMCwgNjg5MjQsIDY4OTI4LCAKLSAgICA2ODkzMiwgNjg5MzYsIDY4OTQwLCA2ODk0NCwgNjg5NDgsIDY4OTUyLCA2ODk1NiwgNjg5NjAsIDY4OTY0LCA2ODk2OCwgCi0gICAgNjg5NzIsIDY4OTc2LCA2ODk4MCwgNjg5ODQsIDY4OTg4LCA2ODk5MiwgNjg5OTYsIDY4OTk5LCA2OTAwMywgNjkwMDcsIAotICAgIDY5MDExLCA2OTAxNSwgNjkwMTksIDY5MDIzLCA2OTAyNywgNjkwMzEsIDY5MDM1LCA2OTAzOSwgNjkwNDMsIDY5MDQ3LCAKLSAgICA2OTA1MSwgNjkwNTUsIDY5MDU5LCA2OTA2MywgNjkwNjcsIDY5MDcxLCA2OTA3NSwgNjkwNzksIDY5MDgzLCA2OTA4NywgCi0gICAgNjkwOTEsIDY5MDk1LCA2OTA5OSwgNjkxMDMsIDY5MTA3LCA2OTExMSwgNjkxMTUsIDY5MTE5LCA2OTEyMywgNjkxMjcsIAotICAgIDY5MTMxLCA2OTEzNSwgNjkxMzksIDY5MTQzLCA2OTE0NiwgNjkxNTAsIDY5MTU0LCA2OTE1OCwgNjkxNjIsIDY5MTY2LCAKLSAgICA2OTE3MCwgNjkxNzQsIDY5MTc4LCA2OTE4MiwgNjkxODYsIDY5MTkwLCA2OTE5NCwgNjkxOTgsIDY5MjAyLCA2OTIwNiwgCi0gICAgNjkyMTAsIDY5MjEzLCA2OTIxNywgNjkyMjEsIDY5MjI1LCA2OTIyOSwgNjkyMzMsIDY5MjM3LCA2OTI0MSwgNjkyNDUsIAotICAgIDY5MjQ5LCA2OTI1MywgNjkyNTcsIDY5MjYxLCA2OTI2NSwgNjkyNjksIDY5MjczLCA2OTI3NywgNjkyODEsIDY5Mjg1LCAKLSAgICA2OTI4OSwgNjkyOTMsIDY5Mjk3LCA2OTMwMCwgNjkzMDQsIDY5MzA4LCA2OTMxMiwgNjkzMTYsIDY5MzIwLCA2OTMyNCwgCi0gICAgNjkzMjgsIDY5MzMyLCA2OTMzNiwgNjkzNDAsIDY5MzQ0LCA2OTM0OCwgNjkzNTIsIDY5MzU2LCA2OTM2MCwgNjkzNjQsIAotICAgIDY5MzY4LCA2OTM3MiwgNjkzNzYsIDY5MzgwLCA2OTM4NCwgNjkzODgsIDY5MzkyLCA2OTM5NiwgNjk0MDAsIDY5NDA0LCAKLSAgICA2OTQwOCwgNjk0MTIsIDY5NDE2LCA2OTQyMCwgNjk0MjQsIDY5NDI4LCA2OTQzMiwgNjk0MzYsIDY5NDQwLCA2OTQ0NCwgCi0gICAgNjk0NDgsIDY5NDUyLCA2OTQ1NiwgNjk0NjAsIDY5NDY0LCA2OTQ2OCwgNjk0NzIsIDY5NDc1LCA2OTQ4MCwgNjk0ODQsIAotICAgIDY5NDkwLCA2OTQ5NSwgNjk1MDEsIDY5NTA1LCA2OTUwOSwgNjk1MTMsIDY5NTE3LCA2OTUyMSwgNjk1MjUsIDY5NTI5LCAKLSAgICA2OTUzMywgNjk1MzcsIDY5NTQxLCA2OTU0NSwgNjk1NDksIDY5NTUzLCA2OTU1NywgNjk1NjAsIDY5NTYzLCA2OTU2NiwgCi0gICAgNjk1NjksIDY5NTcyLCA2OTU3NSwgNjk1NzgsIDY5NTgxLCA2OTU4NCwgNjk1ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY5NTk1LCA2OTYwMCwgNjk2MDUsIDY5NjEwLCA2OTYxNSwgCi0gICAgNjk2MjIsIDY5NjI5LCA2OTYzNCwgNjk2MzksIDY5NjQ0LCA2OTY0OSwgNjk2NTYsIDY5NjYzLCA2OTY3MCwgNjk2NzcsIAotICAgIDY5Njg0LCA2OTY5MSwgNjk3MDEsIDY5NzExLCA2OTcxOCwgNjk3MjUsIDY5NzMyLCA2OTczOSwgNjk3NDUsIDY5NzUxLCAKLSAgICA2OTc2MCwgNjk3NjksIDY5Nzc2LCA2OTc4MywgNjk3OTQsIDY5ODA1LCA2OTgxMCwgNjk4MTUsIDY5ODIyLCA2OTgyOSwgCi0gICAgNjk4MzYsIDY5ODQzLCA2OTg1MCwgNjk4NTcsIDY5ODY0LCA2OTg3MSwgNjk4NzcsIDY5ODgzLCA2OTg4OSwgNjk4OTUsIAotICAgIDY5OTAyLCA2OTkwOSwgNjk5MTQsIDY5OTE4LCA2OTkyNSwgNjk5MzIsIDY5OTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2OTk0MywgNjk5NDcsIDY5OTUxLCA2OTk1NCwgNjk5NTcsIDY5OTYyLCA2OTk2NywgNjk5NzIsIDY5OTc3LCA2OTk4MiwgCi0gICAgNjk5ODcsIDY5OTkyLCA2OTk5NywgNzAwMDIsIDcwMDA3LCA3MDAxNiwgNzAwMjUsIDcwMDMwLCA3MDAzNSwgNzAwNDAsIAotICAgIDcwMDQ1LCA3MDA1MCwgNzAwNTUsIDcwMDYwLCA3MDA2NSwgNzAwNzAsIDcwMDc1LCA3MDA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNzAwODUsIDcwMDg4LCA3MDA5MSwgNzAwOTQsIDcwMDk4LCA3MDEwMiwgNzAxMDYsIDcwMTEwLCA3MDExMywgCi0gICAgNzAxMTcsIDcwMTIwLCA3MDEyNCwgNzAxMjcsIDcwMTMxLCA3MDEzNSwgNzAxMzksIDcwMTQzLCA3MDE0NywgNzAxNTEsIAotICAgIDcwMTU1LCA3MDE1OCwgNzAxNjIsIDcwMTY2LCA3MDE3MCwgNzAxNzQsIDcwMTc4LCA3MDE4MiwgNzAxODYsIDcwMTkwLCAKLSAgICA3MDE5NCwgNzAxOTgsIDcwMjAyLCA3MDIwNiwgNzAyMTAsIDcwMjE0LCA3MDIxNywgNzAyMjEsIDcwMjI1LCA3MDIyOSwgCi0gICAgNzAyMzMsIDcwMjM3LCA3MDI0MSwgNzAyNDUsIDcwMjQ5LCA3MDI1MywgNzAyNTcsIDcwMjYxLCA3MDI2NSwgNzAyNjksIAotICAgIDcwMjczLCA3MDI3NywgNzAyODEsIDcwMjg1LCA3MDI4OSwgNzAyOTMsIDcwMjk3LCA3MDMwMSwgNzAzMDUsIDcwMzA5LCAKLSAgICA3MDMxMywgNzAzMTYsIDcwMzIwLCA3MDMyNCwgNzAzMjgsIDcwMzMyLCA3MDMzNiwgNzAzNDAsIDcwMzQ0LCA3MDM0NywgCi0gICAgNzAzNTEsIDcwMzU1LCA3MDM1OSwgNzAzNjMsIDcwMzY3LCA3MDM3MSwgNzAzNzUsIDcwMzc5LCA3MDM4MywgNzAzODcsIAotICAgIDcwMzkxLCA3MDM5NSwgNzA0MDAsIDcwNDA1LCA3MDQwOCwgNzA0MTMsIDcwNDE2LCA3MDQxOSwgNzA0MjIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcwNDI2LCA3MDQzNSwgNzA0NDQsIDcwNDUzLCA3MDQ2MiwgNzA0NzEsIDcwNDgwLCA3MDQ4OSwgCi0gICAgNzA0OTgsIDcwNTA2LCA3MDUxMywgNzA1MjEsIDcwNTI4LCA3MDUzNiwgNzA1NDYsIDcwNTU1LCA3MDU2NSwgNzA1NzQsIAotICAgIDcwNTg0LCA3MDU5MiwgNzA1OTksIDcwNjA3LCA3MDYxNCwgNzA2MjIsIDcwNjI3LCA3MDYzMiwgNzA2MzcsIDcwNjQ2LCAKLSAgICA3MDY1MiwgNzA2NTgsIDcwNjY1LCA3MDY3NCwgNzA2ODIsIDcwNjkwLCA3MDY5OCwgNzA3MDUsIDcwNzEyLCA3MDcxOSwgCi0gICAgNzA3MjYsIDcwNzMxLCA3MDczNiwgNzA3NDEsIDcwNzQ2LCA3MDc1MSwgNzA3NTYsIDcwNzYxLCA3MDc2NiwgNzA3NzQsIAotICAgIDcwNzgyLCA3MDc4OCwgNzA3OTMsIDcwNzk4LCA3MDgwMywgNzA4MDgsIDcwODEzLCA3MDgxOCwgNzA4MjMsIDcwODI4LCAKLSAgICA3MDgzMywgNzA4NDEsIDcwODQ5LCA3MDg1NCwgNzA4NTksIDcwODY5LCA3MDg3OSwgNzA4ODYsIDcwODkzLCA3MDkwMiwgCi0gICAgNzA5MTEsIDcwOTIzLCA3MDkzNSwgNzA5NDEsIDcwOTQ3LCA3MDk1NSwgNzA5NjMsIDcwOTczLCA3MDk4MywgNzA5OTAsIAotICAgIDcwOTk3LCA3MTAwMiwgNzEwMDcsIDcxMDE5LCA3MTAzMSwgNzEwMzksIDcxMDQ3LCA3MTA1NywgNzEwNjcsIDcxMDc5LCAKLSAgICA3MTA5MSwgNzExMDAsIDcxMTA5LCA3MTExNiwgNzExMjMsIDcxMTMwLCA3MTEzNywgNzExNDYsIDcxMTU1LCA3MTE2MCwgCi0gICAgNzExNjUsIDcxMTcyLCA3MTE3OSwgNzExODYsIDcxMTkzLCA3MTIwNSwgNzEyMTcsIDcxMjIyLCA3MTIyNywgNzEyMzIsIAotICAgIDcxMjM3LCA3MTI0MiwgNzEyNDcsIDcxMjUyLCA3MTI1NywgNzEyNjEsIDcxMjY2LCA3MTI3MSwgNzEyNzYsIDcxMjgxLCAKLSAgICA3MTI4NiwgNzEyOTIsIDcxMjk3LCA3MTMwMiwgNzEzMDksIDcxMzE2LCA3MTMyMywgNzEzMzAsIDcxMzM3LCA3MTM0NiwgCi0gICAgNzEzNTUsIDcxMzYxLCA3MTM2NywgNzEzNzMsIDcxMzc5LCA3MTM4NSwgNzEzOTEsIDcxMzk4LCA3MTQwNSwgNzE0MTIsIAotICAgIDcxNDE2LCA3MTQyMywgNzE0MjgsIDcxNDMzLCA3MTQ0MCwgMCwgNzE0NTMsIDcxNDYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTQ2OSwgNzE0NzgsIDcxNDg3LCA3MTQ5NiwgNzE1MDUsIDcxNTE0LCA3MTUyMywgCi0gICAgNzE1MzIsIDcxNTQxLCA3MTU1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTIwNjcsIDAsIDEyMDc2LCAxMjA4MywgMTIwOTEsIDEyMTAzLCAxMjExMCwgMTIxMTcsIDEyMTI0LCAxMjEzNSwgMTIxNDYsIAorICAgIDEyMTUzLCAxMjE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIxNjcsIDEyMTcyLCAxMjE3NywgMTIxODIsIDEyMTg3LCAKKyAgICAxMjE5MiwgMTIxOTcsIDEyMjAyLCAxMjIwNywgMTIyMTIsIDEyMjE3LCAxMjIyMiwgMTIyMjcsIDEyMjMxLCAxMjIzNSwgCisgICAgMTIyMzksIDEyMjQ0LCAxMjI1MCwgMTIyNTYsIDEyMjYyLCAxMjI2NywgMTIyNzIsIDEyMjc3LCAxMjI4MiwgMTIyODgsIAorICAgIDEyMjk3LCAxMjMwNSwgMCwgMTIzMTEsIDEyMzE3LCAxMjMyMSwgMTIzMjUsIDEyMzI5LCAxMjMzNCwgMTIzMzcsIDEyMzQxLCAKKyAgICAxMjM0NCwgMTIzNDgsIDEyMzUxLCAxMjM1NSwgMTIzNTksIDEyMzYzLCAxMjM2OCwgMTIzNzMsIDEyMzc2LCAxMjM4MCwgCisgICAgMTIzODUsIDEyMzkwLCAxMjM5MywgMTIzOTcsIDEyNDAwLCAxMjQwNCwgMTI0MDgsIDEyNDEyLCAxMjQxNiwgMTI0MjAsIAorICAgIDEyNDI0LCAxMjQyOCwgMTI0MzIsIDEyNDM2LCAxMjQ0MCwgMTI0NDQsIDEyNDQ4LCAxMjQ1MiwgMTI0NTYsIDEyNDYwLCAKKyAgICAxMjQ2NCwgMTI0NjgsIDEyNDcyLCAxMjQ3NSwgMTI0NzksIDEyNDgyLCAxMjQ4NiwgMTI0OTAsIDEyNDk0LCAxMjQ5NywgCisgICAgMTI1MDAsIDEyNTAzLCAxMjUwNywgMTI1MTEsIDEyNTE1LCAxMjUxOSwgMTI1MjMsIDEyNTI3LCAxMjUzMSwgMTI1MzQsIAorICAgIDEyNTM3LCAxMjU0MiwgMTI1NDcsIDEyNTUxLCAxMjU1NSwgMTI1NjAsIDEyNTY0LCAxMjU2OSwgMTI1NzMsIDEyNTc4LCAKKyAgICAxMjU4MywgMTI1ODksIDEyNTk1LCAxMjYwMSwgMTI2MDUsIDEyNjEwLCAxMjYxNiwgMTI2MjIsIDEyNjI2LCAxMjYzMSwgCisgICAgMTI2MzUsIDEyNjQxLCAxMjY0NiwgMTI2NDksIDEyNjU1LCAxMjY2MSwgMTI2NjYsIDEyNjcxLCAxMjY3OCwgMTI2ODMsIAorICAgIDEyNjg4LCAxMjY5MiwgMTI2OTYsIDEyNzAwLCAxMjcwNCwgMTI3MDgsIDEyNzEyLCAxMjcxNiwgMTI3MjAsIDEyNzI1LCAKKyAgICAxMjczMCwgMTI3MzUsIDEyNzQxLCAxMjc0NCwgMTI3NDgsIDEyNzUyLCAxMjc1NSwgMTI3NTgsIDEyNzYxLCAxMjc2NCwgCisgICAgMTI3NjcsIDEyNzcwLCAxMjc3MywgMTI3NzYsIDEyNzc5LCAxMjc4MywgMTI3OTAsIDEyNzk1LCAxMjc5OSwgMTI4MDMsIAorICAgIDEyODA3LCAxMjgxMSwgMCwgMTI4MTUsIDEyODE5LCAxMjgyMywgMTI4MjcsIDEyODMxLCAxMjgzNywgMTI4NDEsIDAsIAorICAgIDEyODQ1LCAxMjg0OSwgMTI4NTMsIDAsIDEyODU3LCAxMjg2MCwgMTI4NjQsIDEyODY3LCAxMjg3MSwgMTI4NzQsIDEyODc4LCAKKyAgICAxMjg4MiwgMCwgMCwgMTI4ODYsIDEyODg5LCAwLCAwLCAxMjg5MywgMTI4OTYsIDEyOTAwLCAxMjkwMywgMTI5MDcsIAorICAgIDEyOTExLCAxMjkxNSwgMTI5MTksIDEyOTIzLCAxMjkyNywgMTI5MzEsIDEyOTM1LCAxMjkzOSwgMTI5NDMsIDEyOTQ3LCAKKyAgICAxMjk1MSwgMTI5NTUsIDEyOTU5LCAxMjk2MywgMTI5NjcsIDEyOTcxLCAxMjk3NSwgMCwgMTI5NzgsIDEyOTgxLCAxMjk4NSwgCisgICAgMTI5ODksIDEyOTkzLCAxMjk5NiwgMTI5OTksIDAsIDEzMDAyLCAwLCAwLCAwLCAxMzAwNiwgMTMwMTAsIDEzMDE0LCAKKyAgICAxMzAxNywgMCwgMCwgMTMwMjAsIDEzMDI0LCAxMzAyOCwgMTMwMzMsIDEzMDM3LCAxMzA0MiwgMTMwNDYsIDEzMDUxLCAKKyAgICAxMzA1NiwgMCwgMCwgMTMwNjIsIDEzMDY2LCAwLCAwLCAxMzA3MSwgMTMwNzUsIDEzMDgwLCAxMzA4NCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTMwOTAsIDAsIDAsIDAsIDAsIDEzMDk2LCAxMzEwMCwgMCwgMTMxMDQsIDEzMTA4LCAxMzExMywgCisgICAgMTMxMTgsIDEzMTIzLCAwLCAwLCAxMzEyOSwgMTMxMzMsIDEzMTM2LCAxMzEzOSwgMTMxNDIsIDEzMTQ1LCAxMzE0OCwgCisgICAgMTMxNTEsIDEzMTU0LCAxMzE1NywgMTMxNjAsIDEzMTY5LCAxMzE3OCwgMTMxODIsIDEzMTg2LCAxMzE5MiwgMTMxOTgsIAorICAgIDEzMjA0LCAxMzIxMCwgMTMyMjQsIDEzMjMxLCAxMzIzNCwgMCwgMCwgMCwgMCwgMCwgMTMyMzgsIDEzMjQ0LCAxMzI0OCwgMCwgCisgICAgMTMyNTIsIDEzMjU1LCAxMzI1OSwgMTMyNjIsIDEzMjY2LCAxMzI2OSwgMCwgMCwgMCwgMCwgMTMyNzMsIDEzMjc3LCAwLCAwLCAKKyAgICAxMzI4MSwgMTMyODUsIDEzMjg5LCAxMzI5MiwgMTMyOTYsIDEzMzAwLCAxMzMwNCwgMTMzMDgsIDEzMzEyLCAxMzMxNiwgCisgICAgMTMzMjAsIDEzMzI0LCAxMzMyOCwgMTMzMzIsIDEzMzM2LCAxMzM0MCwgMTMzNDQsIDEzMzQ4LCAxMzM1MiwgMTMzNTYsIAorICAgIDEzMzYwLCAxMzM2NCwgMCwgMTMzNjcsIDEzMzcwLCAxMzM3NCwgMTMzNzgsIDEzMzgyLCAxMzM4NSwgMTMzODgsIDAsIAorICAgIDEzMzkxLCAxMzM5NSwgMCwgMTMzOTksIDEzNDAzLCAwLCAxMzQwNywgMTM0MTAsIDAsIDAsIDEzNDEzLCAwLCAxMzQxNywgCisgICAgMTM0MjIsIDEzNDI2LCAxMzQzMSwgMTM0MzUsIDAsIDAsIDAsIDAsIDEzNDQwLCAxMzQ0NSwgMCwgMCwgMTM0NTAsIDEzNDU1LCAKKyAgICAxMzQ2MCwgMCwgMCwgMCwgMTM0NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDY4LCAxMzQ3MiwgMTM0NzYsIDEzNDgwLCAKKyAgICAwLCAxMzQ4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0ODgsIDEzNDkyLCAxMzQ5NSwgMTM0OTgsIDEzNTAxLCAxMzUwNCwgCisgICAgMTM1MDcsIDEzNTEwLCAxMzUxMywgMTM1MTYsIDEzNTE5LCAxMzUyMiwgMTM1MjUsIDEzNTI4LCAxMzUzMSwgMTM1MzYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTQwLCAxMzU0NCwgMTM1NDgsIDAsIDEzNTUyLCAxMzU1NSwgCisgICAgMTM1NTksIDEzNTYyLCAxMzU2NiwgMTM1NjksIDEzNTczLCAxMzU3NywgMTM1ODEsIDAsIDEzNTg2LCAxMzU4OSwgMTM1OTMsIAorICAgIDAsIDEzNTk4LCAxMzYwMSwgMTM2MDUsIDEzNjA4LCAxMzYxMiwgMTM2MTYsIDEzNjIwLCAxMzYyNCwgMTM2MjgsIDEzNjMyLCAKKyAgICAxMzYzNiwgMTM2NDAsIDEzNjQ0LCAxMzY0OCwgMTM2NTIsIDEzNjU2LCAxMzY2MCwgMTM2NjQsIDEzNjY4LCAxMzY3MiwgCisgICAgMTM2NzYsIDEzNjgwLCAwLCAxMzY4MywgMTM2ODYsIDEzNjkwLCAxMzY5NCwgMTM2OTgsIDEzNzAxLCAxMzcwNCwgMCwgCisgICAgMTM3MDcsIDEzNzExLCAwLCAxMzcxNSwgMTM3MTksIDEzNzIzLCAxMzcyNywgMTM3MzAsIDAsIDAsIDEzNzMzLCAxMzczNywgCisgICAgMTM3NDEsIDEzNzQ2LCAxMzc1MCwgMTM3NTUsIDEzNzU5LCAxMzc2NCwgMTM3NjksIDEzNzc1LCAwLCAxMzc4MSwgMTM3ODUsIAorICAgIDEzNzkwLCAwLCAxMzc5NiwgMTM4MDAsIDEzODA1LCAwLCAwLCAxMzgwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM4MTIsIDEzODE3LCAxMzgyMiwgMTM4MjcsIDAsIDAsIDEzODMzLCAxMzgzNywgMTM4NDAsIAorICAgIDEzODQzLCAxMzg0NiwgMTM4NDksIDEzODUyLCAxMzg1NSwgMTM4NTgsIDEzODYxLCAxMzg2NCwgMTM4NjgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODcyLCAxMzg3NiwgMTM4ODAsIDAsIDEzODg0LCAxMzg4NywgCisgICAgMTM4OTEsIDEzODk0LCAxMzg5OCwgMTM5MDEsIDEzOTA1LCAxMzkwOSwgMCwgMCwgMTM5MTMsIDEzOTE2LCAwLCAwLCAKKyAgICAxMzkyMCwgMTM5MjMsIDEzOTI3LCAxMzkzMCwgMTM5MzQsIDEzOTM4LCAxMzk0MiwgMTM5NDYsIDEzOTUwLCAxMzk1NCwgCisgICAgMTM5NTgsIDEzOTYyLCAxMzk2NiwgMTM5NzAsIDEzOTc0LCAxMzk3OCwgMTM5ODIsIDEzOTg2LCAxMzk5MCwgMTM5OTQsIAorICAgIDEzOTk4LCAxNDAwMiwgMCwgMTQwMDUsIDE0MDA4LCAxNDAxMiwgMTQwMTYsIDE0MDIwLCAxNDAyMywgMTQwMjYsIDAsIAorICAgIDE0MDI5LCAxNDAzMywgMCwgMTQwMzcsIDE0MDQxLCAxNDA0NSwgMTQwNDksIDE0MDUyLCAwLCAwLCAxNDA1NSwgMTQwNTksIAorICAgIDE0MDYzLCAxNDA2OCwgMTQwNzIsIDE0MDc3LCAxNDA4MSwgMTQwODYsIDE0MDkxLCAwLCAwLCAxNDA5NywgMTQxMDEsIDAsIAorICAgIDAsIDE0MTA2LCAxNDExMCwgMTQxMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MTE5LCAxNDEyNSwgMCwgMCwgMCwgMCwgCisgICAgMTQxMzEsIDE0MTM1LCAwLCAxNDEzOSwgMTQxNDMsIDE0MTQ4LCAxNDE1MywgMTQxNTgsIDAsIDAsIDE0MTY0LCAxNDE2OCwgCisgICAgMTQxNzEsIDE0MTc0LCAxNDE3NywgMTQxODAsIDE0MTgzLCAxNDE4NiwgMTQxODksIDE0MTkyLCAxNDE5NSwgMTQxOTgsIAorICAgIDE0MjAyLCAxNDIwOCwgMTQyMTQsIDE0MjIwLCAxNDIyNiwgMTQyMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0MjM4LCAxNDI0MiwgMCwgMTQyNDYsIDE0MjQ5LCAxNDI1MywgMTQyNTYsIDE0MjYwLCAxNDI2MywgMCwgMCwgMCwgCisgICAgMTQyNjcsIDE0MjcwLCAxNDI3NCwgMCwgMTQyNzgsIDE0MjgxLCAxNDI4NSwgMTQyODksIDAsIDAsIDAsIDE0MjkyLCAKKyAgICAxNDI5NiwgMCwgMTQzMDAsIDAsIDE0MzA0LCAxNDMwOCwgMCwgMCwgMCwgMTQzMTIsIDE0MzE2LCAwLCAwLCAwLCAxNDMyMCwgCisgICAgMTQzMjMsIDE0MzI3LCAwLCAwLCAwLCAxNDMzMCwgMTQzMzMsIDE0MzM2LCAxNDMzOSwgMTQzNDMsIDE0MzQ3LCAxNDM1MSwgCisgICAgMTQzNTUsIDE0MzU5LCAxNDM2MywgMTQzNjcsIDE0MzcwLCAwLCAwLCAwLCAwLCAxNDM3MywgMTQzNzgsIDE0MzgyLCAKKyAgICAxNDM4NywgMTQzOTEsIDAsIDAsIDAsIDE0Mzk2LCAxNDQwMCwgMTQ0MDUsIDAsIDE0NDEwLCAxNDQxNCwgMTQ0MTksIAorICAgIDE0NDI0LCAwLCAwLCAxNDQyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE0NDM3LCAxNDQ0MSwgMTQ0NDQsIDE0NDQ3LCAxNDQ1MCwgMTQ0NTMsIDE0NDU2LCAxNDQ1OSwgCisgICAgMTQ0NjIsIDE0NDY1LCAxNDQ2OCwgMTQ0NzIsIDE0NDc3LCAxNDQ4MiwgMTQ0ODYsIDE0NDkwLCAxNDQ5NCwgMTQ0OTgsIAorICAgIDE0NTAyLCAxNDUwNywgMTQ1MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NTE0LCAxNDUxOCwgMTQ1MjIsIDAsIDE0NTI2LCAKKyAgICAxNDUyOSwgMTQ1MzMsIDE0NTM2LCAxNDU0MCwgMTQ1NDMsIDE0NTQ3LCAxNDU1MSwgMCwgMTQ1NTUsIDE0NTU4LCAxNDU2MiwgCisgICAgMCwgMTQ1NjYsIDE0NTY5LCAxNDU3MywgMTQ1NzcsIDE0NTgwLCAxNDU4NCwgMTQ1ODgsIDE0NTkyLCAxNDU5NiwgMTQ2MDAsIAorICAgIDE0NjA0LCAxNDYwOCwgMTQ2MTIsIDE0NjE2LCAxNDYyMCwgMTQ2MjQsIDE0NjI4LCAxNDYzMiwgMTQ2MzYsIDE0NjQwLCAKKyAgICAxNDY0NCwgMTQ2NDgsIDE0NjUyLCAwLCAxNDY1NSwgMTQ2NTgsIDE0NjYyLCAxNDY2NiwgMTQ2NzAsIDE0NjczLCAxNDY3NiwgCisgICAgMTQ2NzksIDE0NjgzLCAxNDY4NywgMCwgMTQ2OTEsIDE0Njk1LCAxNDY5OSwgMTQ3MDMsIDE0NzA2LCAwLCAwLCAwLCAKKyAgICAxNDcwOSwgMTQ3MTMsIDE0NzE4LCAxNDcyMiwgMTQ3MjcsIDE0NzMxLCAxNDczNiwgMTQ3NDEsIDAsIDE0NzQ3LCAxNDc1MSwgCisgICAgMTQ3NTYsIDAsIDE0NzYxLCAxNDc2NSwgMTQ3NzAsIDE0Nzc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDc3OSwgMTQ3ODMsIAorICAgIDAsIDE0Nzg5LCAxNDc5MywgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3OTcsIDE0ODAyLCAxNDgwNywgMTQ4MTIsIDAsIDAsIAorICAgIDE0ODE4LCAxNDgyMiwgMTQ4MjUsIDE0ODI4LCAxNDgzMSwgMTQ4MzQsIDE0ODM3LCAxNDg0MCwgMTQ4NDMsIDE0ODQ2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDg0OSwgMTQ4NjIsIDE0ODc0LCAxNDg4NiwgMTQ4OTgsIDE0OTEwLCAxNDkyMiwgCisgICAgMTQ5MzQsIDAsIDAsIDE0OTM4LCAxNDk0MiwgMCwgMTQ5NDYsIDE0OTQ5LCAxNDk1MywgMTQ5NTYsIDE0OTYwLCAxNDk2MywgCisgICAgMTQ5NjcsIDE0OTcxLCAwLCAxNDk3NSwgMTQ5NzgsIDE0OTgyLCAwLCAxNDk4NiwgMTQ5ODksIDE0OTkzLCAxNDk5NywgCisgICAgMTUwMDAsIDE1MDA0LCAxNTAwOCwgMTUwMTIsIDE1MDE2LCAxNTAyMCwgMTUwMjQsIDE1MDI4LCAxNTAzMiwgMTUwMzYsIAorICAgIDE1MDQwLCAxNTA0NCwgMTUwNDgsIDE1MDUyLCAxNTA1NiwgMTUwNjAsIDE1MDY0LCAxNTA2OCwgMTUwNzIsIDAsIDE1MDc1LCAKKyAgICAxNTA3OCwgMTUwODIsIDE1MDg2LCAxNTA5MCwgMTUwOTMsIDE1MDk2LCAxNTA5OSwgMTUxMDMsIDE1MTA3LCAwLCAxNTExMSwgCisgICAgMTUxMTUsIDE1MTE5LCAxNTEyMywgMTUxMjYsIDAsIDAsIDE1MTI5LCAxNTEzMywgMTUxMzcsIDE1MTQyLCAxNTE0NiwgCisgICAgMTUxNTEsIDE1MTU1LCAxNTE2MCwgMTUxNjUsIDAsIDE1MTcxLCAxNTE3NSwgMTUxODAsIDAsIDE1MTg1LCAxNTE4OSwgCisgICAgMTUxOTQsIDE1MTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTIwMywgMTUyMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1MjEzLCAwLCAxNTIxNywgMTUyMjIsIDE1MjI3LCAxNTIzMiwgMCwgMCwgMTUyMzgsIDE1MjQyLCAxNTI0NSwgMTUyNDgsIAorICAgIDE1MjUxLCAxNTI1NCwgMTUyNTcsIDE1MjYwLCAxNTI2MywgMTUyNjYsIDAsIDE1MjY5LCAxNTI3MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyNzcsIDE1MjgxLCAwLCAxNTI4NSwgMTUyODgsIDE1MjkyLCAKKyAgICAxNTI5NSwgMTUyOTksIDE1MzAyLCAxNTMwNiwgMTUzMTAsIDAsIDE1MzE0LCAxNTMxNywgMTUzMjEsIDAsIDE1MzI1LCAKKyAgICAxNTMyOCwgMTUzMzIsIDE1MzM2LCAxNTMzOSwgMTUzNDMsIDE1MzQ3LCAxNTM1MSwgMTUzNTUsIDE1MzU5LCAxNTM2MywgCisgICAgMTUzNjcsIDE1MzcxLCAxNTM3NSwgMTUzNzksIDE1MzgzLCAxNTM4NywgMTUzOTEsIDE1Mzk1LCAxNTM5OSwgMTU0MDMsIAorICAgIDE1NDA3LCAxNTQxMSwgMTU0MTQsIDE1NDE4LCAxNTQyMSwgMTU0MjUsIDE1NDI5LCAxNTQzMywgMTU0MzYsIDE1NDM5LCAKKyAgICAxNTQ0MiwgMTU0NDYsIDE1NDUwLCAxNTQ1NCwgMTU0NTgsIDE1NDYyLCAxNTQ2NiwgMTU0NzAsIDE1NDczLCAxNTQ3NiwgMCwgCisgICAgMCwgMTU0ODAsIDE1NDg0LCAxNTQ4OSwgMTU0OTMsIDE1NDk4LCAxNTUwMiwgMTU1MDcsIDE1NTEyLCAwLCAxNTUxOCwgCisgICAgMTU1MjIsIDE1NTI3LCAwLCAxNTUzMiwgMTU1MzYsIDE1NTQxLCAxNTU0NiwgMTU1NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE1NTU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTU2MSwgMTU1NjYsIDE1NTcxLCAxNTU3NiwgMCwgMCwgCisgICAgMTU1ODIsIDE1NTg2LCAxNTU4OSwgMTU1OTIsIDE1NTk1LCAxNTU5OCwgMTU2MDEsIDE1NjA0LCAxNTYwNywgMTU2MTAsIAorICAgIDE1NjEzLCAxNTYxNywgMTU2MjIsIDE1NjI3LCAxNTYzMywgMTU2MzksIDAsIDAsIDAsIDE1NjQ1LCAxNTY0OSwgMTU2NTUsIAorICAgIDE1NjYxLCAxNTY2NywgMTU2NzIsIDE1Njc4LCAwLCAwLCAxNTY4NCwgMTU2ODgsIDAsIDE1NjkyLCAxNTY5NiwgMTU3MDAsIAorICAgIDE1NzA0LCAxNTcwOCwgMTU3MTIsIDE1NzE2LCAxNTcyMCwgMTU3MjQsIDE1NzI4LCAxNTczMiwgMTU3MzYsIDE1NzQwLCAKKyAgICAxNTc0NCwgMTU3NDgsIDE1NzUyLCAxNTc1NiwgMTU3NjAsIDAsIDAsIDAsIDE1NzY0LCAxNTc3MCwgMTU3NzYsIDE1NzgyLCAKKyAgICAxNTc4OCwgMTU3OTQsIDE1ODAwLCAxNTgwNiwgMTU4MTIsIDE1ODE4LCAxNTgyNCwgMTU4MzAsIDE1ODM4LCAxNTg0NCwgCisgICAgMTU4NTAsIDE1ODU2LCAxNTg2MiwgMTU4NjgsIDE1ODc0LCAxNTg4MCwgMTU4ODYsIDE1ODkyLCAxNTg5OCwgMTU5MDQsIDAsIAorICAgIDE1OTEwLCAxNTkxNiwgMTU5MjIsIDE1OTI4LCAxNTkzNCwgMTU5NDAsIDE1OTQ0LCAxNTk1MCwgMTU5NTQsIDAsIDE1OTU4LCAKKyAgICAwLCAwLCAxNTk2NCwgMTU5NjgsIDE1OTc0LCAxNTk4MCwgMTU5ODYsIDE1OTkwLCAxNTk5NiwgMCwgMCwgMCwgMTYwMDAsIDAsIAorICAgIDAsIDAsIDAsIDE2MDA0LCAxNjAwOSwgMTYwMTYsIDE2MDIzLCAxNjAzMCwgMTYwMzcsIDAsIDE2MDQ0LCAwLCAxNjA1MSwgCisgICAgMTYwNTYsIDE2MDYxLCAxNjA2OCwgMTYwNzUsIDE2MDg0LCAxNjA5NSwgMTYxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MTA5LCAxNjExNiwgMTYxMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE2MTI4LCAxNjEzNCwgMTYxNDAsIDE2MTQ2LCAxNjE1MiwgMTYxNTgsIDE2MTY0LCAxNjE3MCwgCisgICAgMTYxNzYsIDE2MTgyLCAxNjE4OCwgMTYxOTQsIDE2MjAwLCAxNjIwNiwgMTYyMTIsIDE2MjE4LCAxNjIyNCwgMTYyMzAsIAorICAgIDE2MjM2LCAxNjI0MiwgMTYyNDgsIDE2MjU0LCAxNjI2MCwgMTYyNjYsIDE2MjcyLCAxNjI3OCwgMTYyODQsIDE2MjkwLCAKKyAgICAxNjI5NiwgMTYzMDIsIDE2MzA4LCAxNjMxNCwgMTYzMjAsIDE2MzI1LCAxNjMzMSwgMTYzMzcsIDE2MzQxLCAxNjM0NywgCisgICAgMTYzNTEsIDE2MzU3LCAxNjM2MywgMTYzNjksIDE2Mzc1LCAxNjM4MSwgMTYzODcsIDE2MzkyLCAxNjM5OCwgMTY0MDIsIAorICAgIDE2NDA3LCAxNjQxMywgMTY0MTksIDE2NDI1LCAxNjQzMCwgMTY0MzYsIDE2NDQyLCAxNjQ0OCwgMTY0NTMsIDE2NDU5LCAwLCAKKyAgICAwLCAwLCAwLCAxNjQ2MywgMTY0NjksIDE2NDc0LCAxNjQ4MCwgMTY0ODUsIDE2NDkzLCAxNjUwMSwgMTY1MDUsIDE2NTA5LCAKKyAgICAxNjUxMywgMTY1MTksIDE2NTI1LCAxNjUzMSwgMTY1MzcsIDE2NTQxLCAxNjU0NSwgMTY1NDksIDE2NTUzLCAxNjU1NywgCisgICAgMTY1NjAsIDE2NTYzLCAxNjU2NiwgMTY1NjksIDE2NTcyLCAxNjU3NSwgMTY1NzgsIDE2NTgxLCAxNjU4NCwgMTY1ODgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NTkyLCAxNjU5NywgMCwgMTY2MDQsIDAsIDAsIDE2NjExLCAKKyAgICAxNjYxNiwgMCwgMTY2MjEsIDAsIDAsIDE2NjI4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNjYzMywgMTY2MzgsIDE2NjQyLCAKKyAgICAxNjY0OSwgMCwgMTY2NTYsIDE2NjYxLCAxNjY2NiwgMTY2NzEsIDE2Njc4LCAxNjY4NSwgMTY2OTIsIDAsIDE2Njk5LCAKKyAgICAxNjcwNCwgMTY3MDksIDAsIDE2NzE2LCAwLCAxNjcyMywgMCwgMCwgMTY3MjgsIDE2NzM1LCAwLCAxNjc0MiwgMTY3NDYsIAorICAgIDE2NzUzLCAxNjc1NywgMTY3NjIsIDE2NzcwLCAxNjc3NiwgMTY3ODIsIDE2Nzg3LCAxNjc5MywgMTY3OTksIDE2ODA1LCAKKyAgICAxNjgxMCwgMCwgMTY4MTYsIDE2ODI0LCAxNjgzMSwgMCwgMCwgMTY4MzgsIDE2ODQzLCAxNjg0OSwgMTY4NTQsIDE2ODYwLCAKKyAgICAwLCAxNjg2NiwgMCwgMTY4NzIsIDE2ODc5LCAxNjg4NiwgMTY4OTMsIDE2OTAwLCAxNjkwNSwgMCwgMCwgMTY5MDksIAorICAgIDE2OTE0LCAxNjkxOCwgMTY5MjIsIDE2OTI2LCAxNjkzMCwgMTY5MzQsIDE2OTM4LCAxNjk0MiwgMTY5NDYsIDAsIDAsIAorICAgIDE2OTUwLCAxNjk1NiwgMTY5NjIsIDE2OTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjk3NiwgMTY5ODAsIDE2OTkxLCAKKyAgICAxNzAwNiwgMTcwMjEsIDE3MDMxLCAxNzA0MiwgMTcwNTUsIDE3MDY2LCAxNzA3MiwgMTcwODAsIDE3MDkwLCAxNzA5NiwgCisgICAgMTcxMDQsIDE3MTA4LCAxNzExNCwgMTcxMjAsIDE3MTI4LCAxNzEzOCwgMTcxNDYsIDE3MTU5LCAxNzE2NSwgMTcxNzMsIAorICAgIDE3MTgxLCAxNzE5MywgMTcyMDAsIDE3MjA4LCAxNzIxNiwgMTcyMjQsIDE3MjMyLCAxNzI0MCwgMTcyNDgsIDE3MjU4LCAKKyAgICAxNzI2MiwgMTcyNjUsIDE3MjY4LCAxNzI3MSwgMTcyNzQsIDE3Mjc3LCAxNzI4MCwgMTcyODMsIDE3Mjg2LCAxNzI4OSwgCisgICAgMTcyOTMsIDE3Mjk3LCAxNzMwMSwgMTczMDUsIDE3MzA5LCAxNzMxMywgMTczMTcsIDE3MzIxLCAxNzMyNSwgMTczMzAsIAorICAgIDE3MzM2LCAxNzM0NiwgMTczNjAsIDE3MzcwLCAxNzM3NiwgMTczODIsIDE3MzkwLCAxNzM5OCwgMTc0MDYsIDE3NDE0LCAKKyAgICAxNzQyMCwgMTc0MjYsIDE3NDI5LCAxNzQzMywgMTc0MzcsIDE3NDQxLCAxNzQ0NSwgMTc0NDksIDE3NDUzLCAwLCAxNzQ1NywgCisgICAgMTc0NjEsIDE3NDY1LCAxNzQ2OSwgMTc0NzMsIDE3NDc3LCAxNzQ4MSwgMTc0ODUsIDE3NDg5LCAxNzQ5MywgMTc0OTcsIAorICAgIDE3NTAwLCAxNzUwMywgMTc1MDcsIDE3NTExLCAxNzUxNSwgMTc1MTgsIDE3NTIyLCAxNzUyNiwgMTc1MzAsIDE3NTM0LCAKKyAgICAxNzUzOCwgMTc1NDIsIDE3NTQ2LCAxNzU1MCwgMTc1NTMsIDE3NTU2LCAxNzU2MCwgMTc1NjQsIDE3NTY4LCAxNzU3MSwgCisgICAgMTc1NzQsIDE3NTc3LCAxNzU4MSwgMTc1ODYsIDE3NTkwLCAwLCAwLCAwLCAwLCAxNzU5NCwgMTc1OTksIDE3NjAzLCAKKyAgICAxNzYwOCwgMTc2MTIsIDE3NjE3LCAxNzYyMiwgMTc2MjgsIDE3NjMzLCAxNzYzOSwgMTc2NDMsIDE3NjQ4LCAxNzY1MiwgCisgICAgMTc2NTcsIDE3NjY3LCAxNzY3MywgMTc2NzksIDE3Njg2LCAxNzY5NiwgMTc3MDIsIDE3NzA2LCAxNzcxMCwgMTc3MTYsIAorICAgIDE3NzIyLCAxNzczMCwgMTc3MzYsIDE3NzQ0LCAxNzc1MiwgMTc3NjAsIDE3NzcwLCAxNzc3OCwgMTc3ODgsIDE3NzkzLCAKKyAgICAxNzc5OSwgMTc4MDUsIDE3ODExLCAxNzgxNywgMTc4MjMsIDE3ODI5LCAwLCAxNzgzNSwgMTc4NDEsIDE3ODQ3LCAxNzg1MywgCisgICAgMTc4NTksIDE3ODY1LCAxNzg3MSwgMTc4NzcsIDE3ODgzLCAxNzg4OSwgMTc4OTUsIDE3OTAwLCAxNzkwNSwgMTc5MTEsIAorICAgIDE3OTE3LCAxNzkyMywgMTc5MjgsIDE3OTM0LCAxNzk0MCwgMTc5NDYsIDE3OTUyLCAxNzk1OCwgMTc5NjQsIDE3OTcwLCAKKyAgICAxNzk3NiwgMTc5ODEsIDE3OTg2LCAxNzk5MiwgMTc5OTgsIDE4MDA0LCAxODAwOSwgMTgwMTQsIDE4MDE5LCAxODAyNSwgCisgICAgMTgwMzMsIDE4MDQwLCAwLCAxODA0NywgMTgwNTQsIDE4MDY3LCAxODA3NCwgMTgwODEsIDE4MDg5LCAxODA5NywgMTgxMDMsIAorICAgIDE4MTA5LCAxODExNSwgMTgxMjUsIDE4MTMwLCAxODEzNiwgMTgxNDYsIDE4MTU2LCAwLCAxODE2NiwgMTgxNzYsIDE4MTg0LCAKKyAgICAxODE5NiwgMTgyMDgsIDE4MjE0LCAxODIyOCwgMTgyNDMsIDE4MjQ4LCAxODI1MywgMTgyNjEsIDE4MjY5LCAxODI3NywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgyODUsIDE4Mjg4LCAxODI5MiwgMTgyOTYsIDE4MzAwLCAKKyAgICAxODMwNCwgMTgzMDgsIDE4MzEyLCAxODMxNiwgMTgzMjAsIDE4MzI0LCAxODMyOCwgMTgzMzIsIDE4MzM2LCAxODM0MCwgCisgICAgMTgzNDQsIDE4MzQ4LCAxODM1MiwgMTgzNTYsIDE4MzYwLCAxODM2NCwgMTgzNjcsIDE4MzcwLCAxODM3NCwgMTgzNzgsIAorICAgIDE4MzgyLCAxODM4NSwgMTgzODgsIDE4MzkxLCAxODM5NSwgMTgzOTksIDE4NDAyLCAxODQwNSwgMTg0MDksIDE4NDEyLCAKKyAgICAxODQxNywgMTg0MjAsIDE4NDI0LCAxODQyNywgMTg0MzEsIDE4NDM0LCAxODQzOSwgMTg0NDIsIDE4NDQ2LCAxODQ1MywgCisgICAgMTg0NTgsIDE4NDYyLCAxODQ2NywgMTg0NzEsIDE4NDc2LCAxODQ4MCwgMTg0ODUsIDE4NDkyLCAxODQ5OCwgMTg1MDMsIAorICAgIDE4NTA3LCAxODUxMSwgMTg1MTUsIDE4NTE5LCAxODUyMywgMTg1MjgsIDE4NTMzLCAxODUzOSwgMTg1NDQsIDE4NTQ5LCAKKyAgICAxODU1MywgMTg1NTYsIDE4NTU5LCAxODU2MiwgMTg1NjUsIDE4NTY4LCAxODU3MSwgMTg1NzQsIDE4NTc3LCAxODU4MCwgCisgICAgMTg1ODYsIDE4NTkwLCAxODU5NCwgMTg1OTgsIDE4NjAyLCAxODYwNiwgMTg2MTAsIDE4NjE0LCAxODYxOCwgMTg2MjMsIAorICAgIDE4NjI3LCAxODYzMiwgMTg2MzcsIDE4NjQzLCAxODY0OCwgMTg2NTQsIDE4NjYwLCAxODY2NiwgMTg2NzIsIDE4Njc4LCAKKyAgICAxODY4NSwgMTg2OTIsIDE4NzAwLCAxODcwOCwgMTg3MTcsIDE4NzI2LCAxODczNywgMTg3NDcsIDE4NzU3LCAxODc2OCwgCisgICAgMTg3NzksIDE4Nzg5LCAxODc5OSwgMTg4MDksIDE4ODE5LCAxODgyOSwgMTg4MzksIDE4ODQ5LCAxODg1OSwgMTg4NjcsIAorICAgIDE4ODc0LCAxODg4MCwgMTg4ODcsIDE4ODkyLCAxODg5OCwgMTg5MDQsIDE4OTEwLCAxODkxNiwgMTg5MjIsIDE4OTI4LCAKKyAgICAxODkzMywgMTg5MzksIDE4OTQ1LCAxODk1MSwgMTg5NTcsIDE4OTYyLCAxODk3MCwgMTg5NzcsIDE4OTgzLCAxODk5MCwgCisgICAgMTg5OTgsIDE5MDA0LCAxOTAxMCwgMTkwMTYsIDE5MDIyLCAxOTAzMCwgMTkwMzgsIDE5MDQ4LCAxOTA1NiwgMTkwNjQsIAorICAgIDE5MDcwLCAxOTA3NSwgMTkwODAsIDE5MDg1LCAxOTA5MCwgMTkwOTUsIDE5MTAwLCAxOTEwNSwgMTkxMTAsIDE5MTE1LCAKKyAgICAxOTEyMSwgMTkxMjcsIDE5MTMzLCAxOTE0MCwgMTkxNDUsIDE5MTUxLCAxOTE1NiwgMTkxNjEsIDE5MTY2LCAxOTE3MSwgCisgICAgMTkxNzYsIDE5MTgxLCAxOTE4NiwgMTkxOTEsIDE5MTk2LCAxOTIwMSwgMTkyMDYsIDE5MjExLCAxOTIxNiwgMTkyMjEsIAorICAgIDE5MjI2LCAxOTIzMSwgMTkyMzYsIDE5MjQxLCAxOTI0NiwgMTkyNTEsIDE5MjU2LCAxOTI2MSwgMTkyNjYsIDE5MjcxLCAKKyAgICAxOTI3NiwgMTkyODEsIDE5Mjg2LCAxOTI5MSwgMTkyOTYsIDE5MzAxLCAxOTMwNiwgMTkzMTEsIDE5MzE2LCAxOTMyMSwgCisgICAgMTkzMjYsIDE5MzMxLCAxOTMzNiwgMCwgMTkzNDEsIDAsIDAsIDAsIDAsIDAsIDE5MzQ2LCAwLCAwLCAxOTM1MSwgMTkzNTUsIAorICAgIDE5MzU5LCAxOTM2MywgMTkzNjcsIDE5MzcxLCAxOTM3NSwgMTkzNzksIDE5MzgzLCAxOTM4NywgMTkzOTEsIDE5Mzk1LCAKKyAgICAxOTM5OSwgMTk0MDMsIDE5NDA3LCAxOTQxMSwgMTk0MTUsIDE5NDE5LCAxOTQyMywgMTk0MjcsIDE5NDMxLCAxOTQzNSwgCisgICAgMTk0MzksIDE5NDQzLCAxOTQ0NywgMTk0NTEsIDE5NDU1LCAxOTQ1OSwgMTk0NjMsIDE5NDY3LCAxOTQ3MSwgMTk0NzUsIAorICAgIDE5NDc5LCAxOTQ4MywgMTk0ODcsIDE5NDkxLCAxOTQ5NSwgMTk0OTksIDE5NTAzLCAxOTUwNywgMTk1MTEsIDE5NTE1LCAKKyAgICAxOTUyMSwgMTk1MjUsIDE5NTMwLCAxOTUzNSwgMTk1MzksIDE5NTQ0LCAxOTU0OSwgMTk1NTMsIDE5NTU3LCAxOTU2MSwgCisgICAgMTk1NjUsIDE5NTY5LCAxOTU3MywgMTk1NzcsIDE5NTgxLCAxOTU4NSwgMTk1ODksIDE5NTkzLCAxOTU5NywgMTk2MDEsIAorICAgIDE5NjA1LCAxOTYwOSwgMTk2MTMsIDE5NjE3LCAxOTYyMSwgMTk2MjUsIDE5NjI5LCAxOTYzMywgMTk2MzcsIDE5NjQxLCAKKyAgICAxOTY0NSwgMTk2NDksIDE5NjUzLCAxOTY1NywgMTk2NjEsIDE5NjY1LCAxOTY2OSwgMTk2NzMsIDE5Njc3LCAxOTY4MSwgCisgICAgMTk2ODUsIDE5Njg5LCAxOTY5MywgMTk2OTcsIDE5NzAxLCAxOTcwNSwgMTk3MDksIDE5NzEzLCAxOTcxNywgMTk3MjEsIAorICAgIDE5NzI1LCAxOTcyOSwgMTk3MzMsIDE5NzM3LCAxOTc0MSwgMTk3NDUsIDE5NzQ5LCAxOTc1MywgMTk3NTcsIDE5NzYxLCAKKyAgICAxOTc2NSwgMTk3NjksIDE5NzczLCAxOTc3NywgMTk3ODEsIDE5Nzg1LCAxOTc4OSwgMTk3OTMsIDE5Nzk3LCAxOTgwMSwgCisgICAgMTk4MDUsIDE5ODA5LCAxOTgxMywgMTk4MTcsIDE5ODIxLCAxOTgyNSwgMTk4MjksIDE5ODMzLCAxOTgzNywgMTk4NDEsIAorICAgIDE5ODQ1LCAxOTg0OSwgMTk4NTMsIDE5ODU3LCAxOTg2MSwgMTk4NjUsIDE5ODY5LCAxOTg3MywgMTk4NzcsIDE5ODgxLCAKKyAgICAxOTg4NSwgMTk4ODksIDE5ODkzLCAxOTg5NywgMTk5MDEsIDE5OTA1LCAxOTkwOSwgMTk5MTMsIDE5OTE3LCAxOTkyMSwgCisgICAgMTk5MjUsIDE5OTI5LCAxOTkzMywgMTk5MzcsIDE5OTQwLCAxOTk0NCwgMTk5NDcsIDE5OTUxLCAxOTk1NSwgMTk5NTgsIAorICAgIDE5OTYyLCAxOTk2NiwgMTk5NjksIDE5OTczLCAxOTk3NywgMTk5ODEsIDE5OTg1LCAxOTk4OCwgMTk5OTIsIDE5OTk2LCAKKyAgICAyMDAwMCwgMjAwMDQsIDIwMDA4LCAyMDAxMiwgMjAwMTUsIDIwMDE5LCAyMDAyMywgMjAwMjcsIDIwMDMxLCAyMDAzNSwgCisgICAgMjAwMzksIDIwMDQzLCAyMDA0NywgMjAwNTEsIDIwMDU1LCAyMDA1OSwgMjAwNjMsIDIwMDY3LCAyMDA3MSwgMjAwNzUsIAorICAgIDIwMDc5LCAyMDA4MywgMjAwODcsIDIwMDkxLCAyMDA5NSwgMjAwOTksIDIwMTAzLCAyMDEwNywgMjAxMTEsIDIwMTE1LCAKKyAgICAyMDExOSwgMjAxMjMsIDIwMTI3LCAyMDEzMSwgMjAxMzUsIDIwMTM5LCAyMDE0MywgMjAxNDcsIDIwMTUxLCAyMDE1NSwgCisgICAgMjAxNTksIDIwMTYzLCAyMDE2NywgMjAxNzEsIDIwMTc1LCAyMDE3OSwgMjAxODMsIDIwMTg3LCAyMDE5MSwgMjAxOTUsIAorICAgIDIwMTk5LCAyMDIwMywgMjAyMDcsIDIwMjExLCAyMDIxNSwgMjAyMTksIDIwMjIzLCAyMDIyNywgMjAyMzEsIDIwMjM1LCAKKyAgICAyMDIzOSwgMjAyNDMsIDIwMjQ3LCAyMDI1MSwgMjAyNTUsIDIwMjU5LCAyMDI2MywgMjAyNjcsIDIwMjcxLCAyMDI3NSwgCisgICAgMjAyNzksIDIwMjgzLCAyMDI4NywgMjAyOTEsIDIwMjk1LCAyMDI5OSwgMjAzMDMsIDIwMzA3LCAyMDMxMSwgMjAzMTUsIAorICAgIDIwMzE5LCAyMDMyMywgMjAzMjcsIDIwMzMxLCAyMDMzNSwgMjAzMzksIDIwMzQzLCAyMDM0NywgMjAzNTEsIDIwMzU1LCAKKyAgICAyMDM1OSwgMjAzNjMsIDIwMzY3LCAyMDM3MSwgMjAzNzUsIDIwMzc5LCAyMDM4MywgMjAzODcsIDIwMzkxLCAyMDM5NSwgCisgICAgMjAzOTksIDIwNDAzLCAyMDQwNywgMjA0MTEsIDIwNDE1LCAyMDQxOSwgMjA0MjMsIDIwNDI3LCAyMDQzMSwgMjA0MzUsIAorICAgIDIwNDM5LCAyMDQ0MywgMjA0NDcsIDIwNDUxLCAyMDQ1NSwgMjA0NTksIDIwNDYzLCAyMDQ2NywgMjA0NzEsIDIwNDc1LCAKKyAgICAyMDQ3OSwgMjA0ODMsIDIwNDg3LCAyMDQ5MSwgMjA0OTUsIDIwNDk5LCAyMDUwMywgMjA1MDcsIDIwNTExLCAyMDUxNSwgCisgICAgMjA1MTksIDIwNTIzLCAyMDUyNywgMjA1MzEsIDIwNTM1LCAyMDUzOSwgMjA1NDMsIDIwNTQ3LCAyMDU1MSwgMjA1NTUsIAorICAgIDIwNTU5LCAyMDU2MywgMjA1NjcsIDIwNTcwLCAyMDU3NCwgMjA1NzgsIDIwNTgyLCAyMDU4NiwgMjA1OTAsIDIwNTk0LCAKKyAgICAyMDU5OCwgMjA2MDIsIDIwNjA2LCAyMDYxMCwgMjA2MTQsIDIwNjE4LCAyMDYyMiwgMjA2MjYsIDIwNjMwLCAyMDYzNCwgCisgICAgMjA2MzgsIDIwNjQyLCAyMDY0NiwgMjA2NTAsIDIwNjU0LCAyMDY1OCwgMjA2NjIsIDIwNjY1LCAyMDY2OSwgMjA2NzMsIAorICAgIDIwNjc3LCAyMDY4MSwgMjA2ODUsIDIwNjg5LCAyMDY5MywgMjA2OTcsIDIwNzAxLCAyMDcwNSwgMjA3MDksIDIwNzEzLCAKKyAgICAyMDcxNywgMjA3MjEsIDIwNzI1LCAyMDcyOCwgMjA3MzIsIDIwNzM2LCAyMDc0MCwgMjA3NDQsIDIwNzQ4LCAyMDc1MiwgCisgICAgMjA3NTYsIDIwNzU5LCAyMDc2MywgMjA3NjcsIDIwNzcxLCAyMDc3NSwgMjA3NzksIDIwNzgzLCAyMDc4NywgMjA3OTEsIAorICAgIDIwNzk1LCAyMDc5OSwgMjA4MDMsIDIwODA3LCAyMDgxMSwgMjA4MTUsIDIwODE5LCAyMDgyMywgMjA4MjcsIDIwODMxLCAKKyAgICAyMDgzNSwgMjA4MzksIDIwODQzLCAyMDg0NywgMjA4NTEsIDAsIDIwODU1LCAyMDg1OSwgMjA4NjMsIDIwODY3LCAwLCAwLCAKKyAgICAyMDg3MSwgMjA4NzUsIDIwODc5LCAyMDg4MywgMjA4ODcsIDIwODkxLCAyMDg5NSwgMCwgMjA4OTksIDAsIDIwOTAzLCAKKyAgICAyMDkwNywgMjA5MTEsIDIwOTE1LCAwLCAwLCAyMDkxOSwgMjA5MjMsIDIwOTI3LCAyMDkzMSwgMjA5MzUsIDIwOTM5LCAKKyAgICAyMDk0MywgMjA5NDcsIDIwOTUxLCAyMDk1NSwgMjA5NTksIDIwOTYzLCAyMDk2NywgMjA5NzEsIDIwOTc1LCAyMDk3OSwgCisgICAgMjA5ODMsIDIwOTg3LCAyMDk5MSwgMjA5OTUsIDIwOTk5LCAyMTAwMywgMjEwMDcsIDIxMDEwLCAyMTAxNCwgMjEwMTgsIAorICAgIDIxMDIyLCAyMTAyNiwgMjEwMzAsIDIxMDM0LCAyMTAzOCwgMjEwNDIsIDIxMDQ2LCAyMTA1MCwgMjEwNTQsIDIxMDU4LCAKKyAgICAyMTA2MiwgMjEwNjYsIDIxMDcwLCAyMTA3NCwgMjEwNzgsIDAsIDIxMDgyLCAyMTA4NiwgMjEwOTAsIDIxMDk0LCAwLCAwLCAKKyAgICAyMTA5OCwgMjExMDEsIDIxMTA1LCAyMTEwOSwgMjExMTMsIDIxMTE3LCAyMTEyMSwgMjExMjUsIDIxMTI5LCAyMTEzMywgCisgICAgMjExMzcsIDIxMTQxLCAyMTE0NSwgMjExNDksIDIxMTUzLCAyMTE1NywgMjExNjEsIDIxMTY2LCAyMTE3MSwgMjExNzYsIAorICAgIDIxMTgyLCAyMTE4OCwgMjExOTMsIDIxMTk4LCAyMTIwNCwgMjEyMDcsIDIxMjExLCAyMTIxNSwgMjEyMTksIDIxMjIzLCAKKyAgICAyMTIyNywgMjEyMzEsIDIxMjM1LCAwLCAyMTIzOSwgMjEyNDMsIDIxMjQ3LCAyMTI1MSwgMCwgMCwgMjEyNTUsIDIxMjU5LCAKKyAgICAyMTI2MywgMjEyNjcsIDIxMjcxLCAyMTI3NSwgMjEyNzksIDAsIDIxMjgzLCAwLCAyMTI4NywgMjEyOTEsIDIxMjk1LCAKKyAgICAyMTI5OSwgMCwgMCwgMjEzMDMsIDIxMzA3LCAyMTMxMSwgMjEzMTUsIDIxMzE5LCAyMTMyMywgMjEzMjcsIDIxMzMxLCAKKyAgICAyMTMzNSwgMjEzNDAsIDIxMzQ1LCAyMTM1MCwgMjEzNTYsIDIxMzYyLCAyMTM2NywgMCwgMjEzNzIsIDIxMzc2LCAyMTM4MCwgCisgICAgMjEzODQsIDIxMzg4LCAyMTM5MiwgMjEzOTYsIDIxNDAwLCAyMTQwNCwgMjE0MDgsIDIxNDEyLCAyMTQxNiwgMjE0MjAsIAorICAgIDIxNDI0LCAyMTQyOCwgMjE0MzIsIDIxNDM2LCAyMTQzOSwgMjE0NDMsIDIxNDQ3LCAyMTQ1MSwgMjE0NTUsIDIxNDU5LCAKKyAgICAyMTQ2MywgMjE0NjcsIDIxNDcxLCAyMTQ3NSwgMjE0NzksIDIxNDgzLCAyMTQ4NywgMjE0OTEsIDIxNDk1LCAyMTQ5OSwgCisgICAgMjE1MDMsIDIxNTA3LCAyMTUxMSwgMjE1MTUsIDIxNTE5LCAyMTUyMywgMjE1MjcsIDIxNTMxLCAyMTUzNSwgMjE1MzksIAorICAgIDIxNTQzLCAyMTU0NywgMjE1NTEsIDIxNTU1LCAyMTU1OSwgMjE1NjMsIDIxNTY3LCAyMTU3MSwgMjE1NzUsIDIxNTc5LCAKKyAgICAyMTU4MywgMjE1ODcsIDIxNTkxLCAyMTU5NSwgMCwgMjE1OTksIDIxNjAzLCAyMTYwNywgMjE2MTEsIDAsIDAsIDIxNjE1LCAKKyAgICAyMTYxOSwgMjE2MjMsIDIxNjI3LCAyMTYzMSwgMjE2MzUsIDIxNjM5LCAyMTY0MywgMjE2NDcsIDIxNjUxLCAyMTY1NSwgCisgICAgMjE2NTksIDIxNjYzLCAyMTY2NywgMjE2NzEsIDIxNjc1LCAyMTY3OSwgMjE2ODMsIDIxNjg3LCAyMTY5MSwgMjE2OTUsIAorICAgIDIxNjk5LCAyMTcwMywgMjE3MDcsIDIxNzExLCAyMTcxNSwgMjE3MTksIDIxNzIzLCAyMTcyNywgMjE3MzEsIDIxNzM1LCAKKyAgICAyMTczOSwgMjE3NDMsIDIxNzQ3LCAyMTc1MSwgMjE3NTUsIDIxNzU5LCAyMTc2MywgMjE3NjcsIDIxNzcxLCAyMTc3NSwgCisgICAgMjE3NzksIDIxNzgzLCAyMTc4NywgMjE3OTEsIDIxNzk1LCAyMTc5OSwgMjE4MDMsIDIxODA3LCAyMTgxMSwgMjE4MTUsIAorICAgIDIxODE5LCAyMTgyMywgMjE4MjcsIDIxODMxLCAyMTgzNSwgMjE4MzksIDIxODQyLCAyMTg0NiwgMjE4NTAsIDIxODU0LCAKKyAgICAyMTg1OCwgMjE4NjIsIDIxODY2LCAyMTg3MCwgMjE4NzQsIDIxODc4LCAwLCAwLCAyMTg4MiwgMjE4OTEsIDIxODk3LCAKKyAgICAyMTkwMiwgMjE5MDYsIDIxOTA5LCAyMTkxNCwgMjE5MTcsIDIxOTIwLCAyMTkyMywgMjE5MjgsIDIxOTMyLCAyMTkzNywgCisgICAgMjE5NDAsIDIxOTQzLCAyMTk0NiwgMjE5NDksIDIxOTUyLCAyMTk1NSwgMjE5NTgsIDIxOTYxLCAyMTk2NCwgMjE5NjgsIAorICAgIDIxOTcyLCAyMTk3NiwgMjE5ODAsIDIxOTg0LCAyMTk4OCwgMjE5OTIsIDIxOTk2LCAyMjAwMCwgMjIwMDQsIDAsIDAsIDAsIAorICAgIDIyMDEwLCAyMjAxNiwgMjIwMjAsIDIyMDI0LCAyMjAyOCwgMjIwMzQsIDIyMDM4LCAyMjA0MiwgMjIwNDYsIDIyMDUyLCAKKyAgICAyMjA1NiwgMjIwNjAsIDIyMDY0LCAyMjA3MCwgMjIwNzQsIDIyMDc4LCAyMjA4MiwgMjIwODgsIDIyMDk0LCAyMjEwMCwgCisgICAgMjIxMDgsIDIyMTE0LCAyMjEyMCwgMjIxMjYsIDIyMTMyLCAyMjEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIxNDQsIDIyMTQ3LCAKKyAgICAyMjE1MCwgMjIxNTMsIDIyMTU2LCAyMjE1OSwgMjIxNjMsIDIyMTY3LCAyMjE3MCwgMjIxNzQsIDIyMTc4LCAyMjE4MiwgCisgICAgMjIxODYsIDIyMTkwLCAyMjE5MywgMjIxOTcsIDIyMjAxLCAyMjIwNSwgMjIyMDksIDIyMjEzLCAyMjIxNywgMjIyMjEsIAorICAgIDIyMjI1LCAyMjIyOSwgMjIyMzMsIDIyMjM3LCAyMjI0MCwgMjIyNDQsIDIyMjQ4LCAyMjI1MiwgMjIyNTYsIDIyMjU5LCAKKyAgICAyMjI2MywgMjIyNjcsIDIyMjcxLCAyMjI3NSwgMjIyNzksIDIyMjgzLCAyMjI4NywgMjIyOTEsIDIyMjk1LCAyMjI5OSwgCisgICAgMjIzMDMsIDIyMzA3LCAyMjMxMSwgMjIzMTQsIDIyMzE4LCAyMjMyMiwgMjIzMjYsIDIyMzMwLCAyMjMzNCwgMjIzMzgsIAorICAgIDIyMzQyLCAyMjM0NiwgMjIzNTAsIDIyMzU0LCAyMjM1OCwgMjIzNjIsIDIyMzY2LCAyMjM3MCwgMjIzNzQsIDIyMzc4LCAKKyAgICAyMjM4MiwgMjIzODYsIDIyMzkwLCAyMjM5NCwgMjIzOTgsIDIyNDAyLCAyMjQwNiwgMjI0MTAsIDIyNDE0LCAyMjQxOCwgCisgICAgMjI0MjIsIDIyNDI2LCAyMjQzMCwgMjI0MzQsIDIyNDM4LCAyMjQ0MiwgMjI0NDYsIDIyNDUwLCAyMjQ1MywgMjI0NTcsIAorICAgIDIyNDYxLCAyMjQ2NSwgMjI0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNDczLCAyMjQ3NywgCisgICAgMjI0ODAsIDIyNDg0LCAyMjQ4NywgMjI0OTEsIDIyNDk0LCAyMjQ5OCwgMjI1MDQsIDIyNTA5LCAyMjUxMywgMjI1MTYsIAorICAgIDIyNTIwLCAyMjUyNCwgMjI1MjksIDIyNTMzLCAyMjUzOCwgMjI1NDIsIDIyNTQ3LCAyMjU1MSwgMjI1NTYsIDIyNTYwLCAKKyAgICAyMjU2NSwgMjI1NzEsIDIyNTc1LCAyMjU4MCwgMjI1ODQsIDIyNTg5LCAyMjU5NSwgMjI1OTksIDIyNjA1LCAyMjYxMSwgCisgICAgMjI2MTUsIDIyNjIwLCAyMjYyOCwgMjI2MzYsIDIyNjQzLCAyMjY0OCwgMjI2NTMsIDIyNjYyLCAyMjY2OSwgMjI2NzYsIAorICAgIDIyNjgxLCAyMjY4NywgMjI2OTEsIDIyNjk1LCAyMjY5OSwgMjI3MDMsIDIyNzA3LCAyMjcxMSwgMjI3MTUsIDIyNzE5LCAKKyAgICAyMjcyMywgMjI3MjcsIDIyNzMzLCAyMjczOCwgMjI3NDMsIDIyNzQ2LCAyMjc1MCwgMjI3NTQsIDIyNzU5LCAyMjc2MywgCisgICAgMjI3NjgsIDIyNzcyLCAyMjc3NywgMjI3ODEsIDIyNzg2LCAyMjc5MCwgMjI3OTUsIDIyNzk5LCAyMjgwNCwgMjI4MDgsIAorICAgIDIyODEzLCAyMjgxOSwgMjI4MjMsIDIyODI4LCAyMjgzMywgMjI4MzcsIDIyODQxLCAyMjg0NSwgMjI4NDksIDIyODUyLCAKKyAgICAyMjg1NiwgMjI4NjIsIDIyODY3LCAyMjg3MiwgMjI4NzYsIDIyODgwLCAyMjg4NCwgMjI4ODksIDIyODkzLCAyMjg5OCwgCisgICAgMjI5MDIsIDIyOTA3LCAyMjkxMCwgMjI5MTQsIDIyOTE4LCAyMjkyMywgMjI5MjcsIDIyOTMyLCAyMjkzNiwgMjI5NDEsIAorICAgIDIyOTQ3LCAyMjk1MSwgMjI5NTUsIDIyOTU5LCAyMjk2MywgMjI5NjcsIDIyOTcxLCAyMjk3NSwgMjI5NzksIDIyOTgzLCAKKyAgICAyMjk4NywgMjI5OTEsIDIyOTk3LCAyMzAwMCwgMjMwMDQsIDIzMDA4LCAyMzAxMywgMjMwMTcsIDIzMDIyLCAyMzAyNiwgCisgICAgMjMwMzEsIDIzMDM1LCAyMzA0MCwgMjMwNDQsIDIzMDQ5LCAyMzA1MywgMjMwNTgsIDIzMDYyLCAyMzA2NywgMjMwNzMsIAorICAgIDIzMDc3LCAyMzA4MSwgMjMwODcsIDIzMDkzLCAyMzA5OSwgMjMxMDUsIDIzMTA5LCAyMzExMywgMjMxMTcsIDIzMTIxLCAKKyAgICAyMzEyNSwgMjMxMjksIDIzMTM1LCAyMzEzOSwgMjMxNDMsIDIzMTQ3LCAyMzE1MiwgMjMxNTYsIDIzMTYxLCAyMzE2NSwgCisgICAgMjMxNzAsIDIzMTc0LCAyMzE3OSwgMjMxODMsIDIzMTg4LCAyMzE5MiwgMjMxOTcsIDIzMjAxLCAyMzIwNiwgMjMyMTIsIAorICAgIDIzMjE2LCAyMzIyMiwgMjMyMjYsIDIzMjMwLCAyMzIzNCwgMjMyMzgsIDIzMjQyLCAyMzI0NiwgMjMyNTIsIDIzMjU1LCAKKyAgICAyMzI1OSwgMjMyNjMsIDIzMjY4LCAyMzI3MiwgMjMyNzcsIDIzMjgxLCAyMzI4NiwgMjMyOTAsIDIzMjk1LCAyMzI5OSwgCisgICAgMjMzMDQsIDIzMzA4LCAyMzMxMywgMjMzMTcsIDIzMzIyLCAyMzMyOCwgMjMzMzEsIDIzMzM1LCAyMzMzOSwgMjMzNDQsIAorICAgIDIzMzQ5LCAyMzM1MywgMjMzNTcsIDIzMzYxLCAyMzM2NSwgMjMzNjksIDIzMzczLCAyMzM3OSwgMjMzODIsIDIzMzg2LCAKKyAgICAyMzM5MCwgMjMzOTUsIDIzMzk5LCAyMzQwNCwgMjM0MDgsIDIzNDEzLCAyMzQxOSwgMjM0MjMsIDIzNDI4LCAyMzQzMiwgCisgICAgMjM0MzYsIDIzNDQwLCAyMzQ0NCwgMjM0NDgsIDIzNDUyLCAyMzQ1NiwgMjM0NjIsIDIzNDY2LCAyMzQ3MCwgMjM0NzQsIAorICAgIDIzNDc5LCAyMzQ4MywgMjM0ODgsIDIzNDkyLCAyMzQ5NywgMjM1MDEsIDIzNTA2LCAyMzUxMCwgMjM1MTUsIDIzNTE5LCAKKyAgICAyMzUyNCwgMjM1MjgsIDIzNTMzLCAyMzUzNiwgMjM1NDAsIDIzNTQ0LCAyMzU0OCwgMjM1NTIsIDIzNTU2LCAyMzU2MCwgCisgICAgMjM1NjQsIDIzNTY4LCAyMzU3NCwgMjM1NzcsIDIzNTgxLCAyMzU4NSwgMjM1OTAsIDIzNTk0LCAyMzU5OSwgMjM2MDMsIAorICAgIDIzNjA4LCAyMzYxMiwgMjM2MTcsIDIzNjIxLCAyMzYyNiwgMjM2MzAsIDIzNjM1LCAyMzYzOSwgMjM2NDQsIDIzNjUwLCAKKyAgICAyMzY1NCwgMjM2NjAsIDIzNjY0LCAyMzY3MCwgMjM2NzYsIDIzNjgyLCAyMzY4OCwgMjM2OTQsIDIzNzAwLCAyMzcwNiwgCisgICAgMjM3MTIsIDIzNzE2LCAyMzcyMCwgMjM3MjQsIDIzNzI4LCAyMzczMiwgMjM3MzYsIDIzNzQwLCAyMzc0NCwgMjM3NDksIAorICAgIDIzNzUzLCAyMzc1OCwgMjM3NjIsIDIzNzY3LCAyMzc3MSwgMjM3NzYsIDIzNzgwLCAyMzc4NSwgMjM3ODksIDIzNzk0LCAKKyAgICAyMzc5OCwgMjM4MDMsIDIzODA3LCAyMzgxMSwgMjM4MTUsIDIzODE5LCAyMzgyMywgMjM4MjcsIDIzODMxLCAyMzgzNywgCisgICAgMjM4NDAsIDIzODQ0LCAyMzg0OCwgMjM4NTMsIDIzODU3LCAyMzg2MiwgMjM4NjYsIDIzODcxLCAyMzg3NSwgMjM4ODAsIAorICAgIDIzODg0LCAyMzg4OSwgMjM4OTMsIDIzODk4LCAyMzkwMiwgMjM5MDcsIDIzOTEzLCAyMzkxNywgMjM5MjMsIDIzOTI4LCAKKyAgICAyMzkzNCwgMjM5MzgsIDIzOTQ0LCAyMzk0OSwgMjM5NTMsIDIzOTU3LCAyMzk2MSwgMjM5NjUsIDIzOTY5LCAyMzk3NCwgCisgICAgMjM5NzcsIDIzOTgxLCAyMzk4NiwgMjM5OTAsIDIzOTk1LCAyMzk5OCwgMjQwMDIsIDI0MDA2LCAyNDAxMCwgMjQwMTQsIAorICAgIDI0MDE4LCAyNDAyMiwgMjQwMjYsIDI0MDMwLCAyNDAzNCwgMjQwMzgsIDI0MDQyLCAyNDA0NywgMjQwNTEsIDI0MDU1LCAKKyAgICAyNDA2MSwgMjQwNjUsIDI0MDcxLCAyNDA3NSwgMjQwODEsIDI0MDg1LCAyNDA4OSwgMjQwOTMsIDI0MDk3LCAyNDEwMSwgCisgICAgMjQxMDYsIDI0MTEwLCAyNDExNCwgMjQxMTgsIDI0MTIyLCAyNDEyNiwgMjQxMzAsIDI0MTM0LCAyNDEzOCwgMjQxNDIsIAorICAgIDI0MTQ2LCAyNDE1MiwgMjQxNTgsIDI0MTY0LCAyNDE3MCwgMjQxNzYsIDI0MTgxLCAyNDE4NywgMjQxOTMsIDI0MTk5LCAKKyAgICAyNDIwMywgMjQyMDcsIDI0MjExLCAyNDIxNSwgMjQyMTksIDI0MjIzLCAyNDIyNywgMjQyMzEsIDI0MjM1LCAyNDIzOSwgCisgICAgMjQyNDMsIDI0MjQ3LCAyNDI1MSwgMjQyNTYsIDI0MjYxLCAyNDI2NiwgMjQyNzAsIDI0Mjc0LCAyNDI3OCwgMjQyODIsIAorICAgIDI0Mjg2LCAyNDI5MCwgMjQyOTQsIDI0Mjk4LCAyNDMwMiwgMjQzMDYsIDI0MzEyLCAyNDMxOCwgMjQzMjQsIDI0MzMwLCAKKyAgICAyNDMzNiwgMjQzNDIsIDI0MzQ4LCAyNDM1NCwgMjQzNjAsIDI0MzY0LCAyNDM2OCwgMjQzNzIsIDI0Mzc2LCAyNDM4MCwgCisgICAgMjQzODQsIDI0Mzg4LCAyNDM5NCwgMjQ0MDAsIDI0NDA2LCAyNDQxMiwgMjQ0MTgsIDI0NDI0LCAyNDQzMCwgMjQ0MzYsIAorICAgIDI0NDQyLCAyNDQ0NywgMjQ0NTIsIDI0NDU3LCAyNDQ2MiwgMjQ0NjgsIDI0NDc0LCAyNDQ4MCwgMjQ0ODYsIDI0NDkyLCAKKyAgICAyNDQ5OCwgMjQ1MDQsIDI0NTA5LCAyNDUxNSwgMjQ1MjEsIDI0NTI3LCAyNDUzMiwgMjQ1MzgsIDI0NTQ0LCAyNDU1MCwgCisgICAgMjQ1NTUsIDI0NTYwLCAyNDU2NSwgMjQ1NzAsIDI0NTc1LCAyNDU4MCwgMjQ1ODUsIDI0NTkwLCAyNDU5NSwgMjQ2MDAsIAorICAgIDI0NjA1LCAyNDYxMCwgMjQ2MTQsIDI0NjE5LCAyNDYyNCwgMjQ2MjksIDI0NjM0LCAyNDYzOSwgMjQ2NDQsIDI0NjQ5LCAKKyAgICAyNDY1NCwgMjQ2NTksIDI0NjY0LCAyNDY2OSwgMjQ2NzQsIDI0Njc5LCAyNDY4NCwgMjQ2ODksIDI0Njk0LCAyNDY5OSwgCisgICAgMjQ3MDQsIDI0NzA5LCAyNDcxNCwgMjQ3MTksIDI0NzI0LCAyNDcyOSwgMjQ3MzQsIDI0NzM5LCAyNDc0NCwgMjQ3NDksIAorICAgIDI0NzU0LCAyNDc1OSwgMjQ3NjMsIDI0NzY4LCAyNDc3MywgMjQ3NzgsIDI0NzgzLCAyNDc4OCwgMjQ3OTMsIDI0Nzk4LCAKKyAgICAyNDgwMywgMjQ4MDgsIDI0ODEzLCAyNDgxOCwgMjQ4MjMsIDI0ODI4LCAyNDgzMywgMjQ4MzgsIDI0ODQzLCAyNDg0OCwgCisgICAgMjQ4NTMsIDI0ODU4LCAyNDg2MywgMjQ4NjgsIDI0ODczLCAyNDg3OCwgMjQ4ODMsIDI0ODg4LCAyNDg5MiwgMjQ4OTcsIAorICAgIDI0OTAyLCAyNDkwNywgMjQ5MTIsIDI0OTE3LCAyNDkyMSwgMjQ5MjYsIDI0OTMxLCAyNDkzNiwgMjQ5NDEsIDI0OTQ2LCAKKyAgICAyNDk1MCwgMjQ5NTUsIDI0OTYxLCAyNDk2NiwgMjQ5NzEsIDI0OTc2LCAyNDk4MSwgMjQ5ODcsIDI0OTkyLCAyNDk5NywgCisgICAgMjUwMDIsIDI1MDA3LCAyNTAxMiwgMjUwMTcsIDI1MDIyLCAyNTAyNywgMjUwMzIsIDI1MDM3LCAyNTA0MiwgMjUwNDcsIAorICAgIDI1MDUyLCAyNTA1NywgMjUwNjIsIDI1MDY3LCAyNTA3MiwgMjUwNzcsIDI1MDgyLCAyNTA4NywgMjUwOTIsIDI1MDk3LCAKKyAgICAyNTEwMiwgMjUxMDcsIDI1MTEyLCAyNTExNywgMjUxMjIsIDI1MTI3LCAyNTEzMiwgMjUxMzcsIDI1MTQyLCAyNTE0NywgCisgICAgMjUxNTIsIDI1MTU3LCAyNTE2MiwgMjUxNjcsIDI1MTcyLCAyNTE3NywgMjUxODIsIDI1MTg3LCAyNTE5MiwgMjUxOTcsIAorICAgIDI1MjAyLCAyNTIwNywgMjUyMTMsIDI1MjE4LCAyNTIyMywgMjUyMjgsIDI1MjMzLCAyNTIzOCwgMjUyNDMsIDI1MjQ4LCAKKyAgICAyNTI1MywgMjUyNTgsIDI1MjYzLCAyNTI2OCwgMjUyNzIsIDI1Mjc3LCAyNTI4MiwgMjUyODcsIDI1MjkyLCAyNTI5NywgCisgICAgMjUzMDIsIDI1MzA3LCAyNTMxMiwgMjUzMTcsIDI1MzIyLCAyNTMyNywgMjUzMzIsIDI1MzM3LCAyNTM0MiwgMjUzNDcsIAorICAgIDI1MzUyLCAyNTM1NywgMjUzNjIsIDI1MzY3LCAyNTM3MiwgMjUzNzcsIDI1MzgyLCAyNTM4NywgMjUzOTIsIDI1Mzk3LCAKKyAgICAyNTQwMiwgMjU0MDgsIDI1NDEyLCAyNTQxNiwgMjU0MjAsIDI1NDI0LCAyNTQyOCwgMjU0MzIsIDI1NDM2LCAyNTQ0MCwgCisgICAgMjU0NDYsIDI1NDUyLCAyNTQ1OCwgMjU0NjQsIDI1NDcwLCAyNTQ3NiwgMjU0ODIsIDI1NDg5LCAyNTQ5NSwgMjU1MDAsIAorICAgIDI1NTA1LCAyNTUxMCwgMjU1MTUsIDI1NTIwLCAyNTUyNSwgMjU1MzAsIDI1NTM1LCAyNTU0MCwgMjU1NDUsIDI1NTUwLCAKKyAgICAyNTU1NSwgMjU1NjAsIDI1NTY1LCAyNTU3MCwgMjU1NzUsIDI1NTgwLCAyNTU4NSwgMjU1OTAsIDI1NTk1LCAyNTYwMCwgCisgICAgMjU2MDUsIDI1NjEwLCAyNTYxNSwgMjU2MjAsIDI1NjI1LCAyNTYzMCwgMjU2MzUsIDAsIDAsIDAsIDI1NjQyLCAyNTY1MiwgCisgICAgMjU2NTYsIDI1NjYzLCAyNTY2NywgMjU2NzEsIDI1Njc1LCAyNTY4MywgMjU2ODcsIDI1NjkyLCAyNTY5NywgMjU3MDIsIAorICAgIDI1NzA2LCAyNTcxMSwgMjU3MTYsIDI1NzE5LCAyNTcyMywgMjU3MjcsIDI1NzM2LCAyNTc0MCwgMjU3NDQsIDI1NzUwLCAKKyAgICAyNTc1NCwgMjU3NTgsIDI1NzY2LCAyNTc3MCwgMjU3NzgsIDI1Nzg0LCAyNTc5MCwgMjU3OTYsIDI1ODAyLCAyNTgxMiwgCisgICAgMjU4MTgsIDI1ODIyLCAyNTgzMSwgMjU4MzQsIDI1ODQwLCAyNTg0NCwgMjU4NTAsIDI1ODU1LCAyNTg2MSwgMjU4NjksIAorICAgIDI1ODc1LCAyNTg4MSwgMjU4ODksIDI1ODk1LCAyNTg5OSwgMjU5MDMsIDI1OTEzLCAyNTkxOSwgMjU5MjMsIDI1OTMzLCAKKyAgICAyNTkzOSwgMjU5NDMsIDI1OTQ3LCAyNTk1NCwgMjU5NjEsIDI1OTY2LCAyNTk3MSwgMjU5ODAsIDI1OTg0LCAyNTk4OCwgCisgICAgMjU5OTIsIDI2MDAwLCAyNjAwNywgMjYwMTEsIDI2MDE1LCAyNjAxOSwgMjYwMjMsIDI2MDI3LCAyNjAzMSwgMjYwMzUsIAorICAgIDI2MDM5LCAyNjA0MywgMjYwNDcsIDI2MDUxLCAyNjA1NiwgMjYwNjEsIDI2MDY2LCAyNjA3MCwgMjYwNzQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MDc4LCAyNjA4MiwgMjYwODYsIDI2MDkwLCAyNjA5NCwgCisgICAgMjYwOTksIDI2MTA0LCAyNjEwOSwgMjYxMTQsIDI2MTE4LCAyNjEyMiwgMjYxMjcsIDI2MTMxLCAwLCAyNjEzNSwgMjYxNDAsIAorICAgIDI2MTQ1LCAyNjE0OSwgMjYxNTMsIDI2MTU4LCAyNjE2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjYxNjgsIDI2MTcyLCAyNjE3NiwgMjYxODAsIDI2MTg0LCAyNjE4OSwgMjYxOTQsIDI2MTk5LCAyNjIwNCwgMjYyMDgsIAorICAgIDI2MjEyLCAyNjIxNywgMjYyMjEsIDI2MjI1LCAyNjIyOSwgMjYyMzQsIDI2MjM5LCAyNjI0MywgMjYyNDcsIDI2MjUyLCAKKyAgICAyNjI1NywgMjYyNjIsIDI2MjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjI3MywgMjYyNzcsIDI2MjgxLCAKKyAgICAyNjI4NSwgMjYyODksIDI2Mjk0LCAyNjI5OSwgMjYzMDQsIDI2MzA5LCAyNjMxMywgMjYzMTcsIDI2MzIyLCAyNjMyNiwgCisgICAgMjYzMzAsIDI2MzM0LCAyNjMzOSwgMjYzNDQsIDI2MzQ4LCAyNjM1MiwgMjYzNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI2MzYyLCAyNjM2NiwgMjYzNzAsIDI2Mzc0LCAyNjM3OCwgMjYzODMsIDI2Mzg4LCAyNjM5MywgCisgICAgMjYzOTgsIDI2NDAyLCAyNjQwNiwgMjY0MTEsIDI2NDE1LCAwLCAyNjQxOSwgMjY0MjQsIDI2NDI5LCAwLCAyNjQzMywgCisgICAgMjY0MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NDQzLCAyNjQ0NiwgMjY0NTAsIDI2NDU0LCAKKyAgICAyNjQ1OCwgMjY0NjIsIDI2NDY2LCAyNjQ3MCwgMjY0NzQsIDI2NDc4LCAyNjQ4MiwgMjY0ODYsIDI2NDkwLCAyNjQ5NCwgCisgICAgMjY0OTgsIDI2NTAyLCAyNjUwNiwgMjY1MTAsIDI2NTEzLCAyNjUxNywgMjY1MjEsIDI2NTI1LCAyNjUyOSwgMjY1MzMsIAorICAgIDI2NTM3LCAyNjU0MSwgMjY1NDUsIDI2NTQ5LCAyNjU1MywgMjY1NTcsIDI2NTYxLCAyNjU2NSwgMjY1NjgsIDI2NTcxLCAKKyAgICAyNjU3NSwgMjY1NzksIDI2NTg1LCAyNjU5MSwgMjY1OTcsIDI2NjAzLCAyNjYwOSwgMjY2MTUsIDI2NjIxLCAyNjYyNywgCisgICAgMjY2MzMsIDI2NjM5LCAyNjY0NSwgMjY2NTEsIDI2NjU3LCAyNjY2MywgMjY2NzIsIDI2NjgxLCAyNjY4NywgMjY2OTMsIAorICAgIDI2Njk5LCAyNjcwNCwgMjY3MDgsIDI2NzEzLCAyNjcxOCwgMjY3MjMsIDI2NzI3LCAyNjczMiwgMjY3MzcsIDI2NzQyLCAKKyAgICAyNjc0NiwgMjY3NTEsIDI2NzU1LCAyNjc2MCwgMjY3NjUsIDI2NzcwLCAyNjc3NSwgMjY3NzksIDI2NzgzLCAyNjc4NywgCisgICAgMjY3OTEsIDI2Nzk1LCAyNjc5OSwgMjY4MDMsIDI2ODA3LCAyNjgxMSwgMjY4MTUsIDI2ODIxLCAyNjgyNSwgMjY4MjksIAorICAgIDI2ODMzLCAyNjgzNywgMjY4NDEsIDI2ODQ5LCAyNjg1NSwgMjY4NTksIDI2ODY1LCAyNjg2OSwgMjY4NzUsIDI2ODc5LCAwLCAKKyAgICAwLCAyNjg4MywgMjY4ODcsIDI2ODkwLCAyNjg5MywgMjY4OTYsIDI2ODk5LCAyNjkwMiwgMjY5MDUsIDI2OTA4LCAyNjkxMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjY5MTQsIDI2OTIyLCAyNjkzMCwgMjY5MzgsIDI2OTQ2LCAyNjk1NCwgMjY5NjIsIDI2OTcwLCAKKyAgICAyNjk3OCwgMjY5ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OTk0LCAyNjk5NywgMjcwMDAsIDI3MDAzLCAyNzAwOCwgMjcwMTEsIAorICAgIDI3MDE2LCAyNzAyMywgMjcwMzEsIDI3MDM2LCAyNzA0MywgMjcwNDYsIDI3MDUzLCAyNzA2MCwgMjcwNjcsIDAsIDI3MDcxLCAKKyAgICAyNzA3NSwgMjcwNzgsIDI3MDgxLCAyNzA4NCwgMjcwODcsIDI3MDkwLCAyNzA5MywgMjcwOTYsIDI3MDk5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyNzEwMiwgMjcxMDUsIDI3MTA4LCAyNzExMSwgMjcxMTQsIDI3MTE3LCAyNzEyMSwgMjcxMjUsIDI3MTI5LCAKKyAgICAyNzEzMiwgMjcxMzYsIDI3MTQwLCAyNzE0MywgMjcxNDcsIDI3MTUxLCAyNzE1NCwgMjcxNTgsIDI3MTYxLCAyNzE2NSwgCisgICAgMjcxNjksIDI3MTczLCAyNzE3NywgMjcxODEsIDI3MTg0LCAyNzE4NywgMjcxOTEsIDI3MTk1LCAyNzE5OCwgMjcyMDIsIAorICAgIDI3MjA2LCAyNzIxMCwgMjcyMTQsIDI3MjE4LCAyNzIyMiwgMjcyMjYsIDI3MjMwLCAyNzIzNywgMjcyNDIsIDI3MjQ3LCAKKyAgICAyNzI1MiwgMjcyNTcsIDI3MjYzLCAyNzI2OSwgMjcyNzUsIDI3MjgxLCAyNzI4NiwgMjcyOTIsIDI3Mjk4LCAyNzMwMywgCisgICAgMjczMDksIDI3MzE1LCAyNzMyMSwgMjczMjcsIDI3MzMzLCAyNzMzOCwgMjczNDQsIDI3MzQ5LCAyNzM1NSwgMjczNjEsIAorICAgIDI3MzY3LCAyNzM3MywgMjczNzksIDI3Mzg0LCAyNzM4OSwgMjczOTUsIDI3NDAxLCAyNzQwNiwgMjc0MTIsIDI3NDE3LCAKKyAgICAyNzQyMywgMjc0MjgsIDI3NDMzLCAyNzQzOSwgMjc0NDUsIDI3NDUxLCAyNzQ1NywgMjc0NjMsIDI3NDY5LCAyNzQ3NSwgCisgICAgMjc0ODEsIDI3NDg3LCAyNzQ5MywgMjc0OTksIDI3NTA1LCAyNzUxMCwgMjc1MTUsIDI3NTIwLCAyNzUyNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjc1MzIsIDI3NTQxLCAyNzU1MCwgMjc1NTgsIDI3NTY2LCAyNzU3NiwgMjc1ODQsIDI3NTkzLCAKKyAgICAyNzYwMCwgMjc2MDcsIDI3NjE0LCAyNzYyMiwgMjc2MzAsIDI3NjM4LCAyNzY0NiwgMjc2NTQsIDI3NjYyLCAyNzY3MCwgCisgICAgMjc2NzgsIDI3Njg1LCAyNzY5MywgMjc3MDEsIDI3NzA5LCAyNzcxNywgMjc3MjUsIDI3NzM1LCAyNzc0NSwgMjc3NTUsIAorICAgIDI3NzY1LCAyNzc3NSwgMjc3ODUsIDI3Nzk1LCAyNzgwNSwgMjc4MTUsIDI3ODI1LCAyNzgzNSwgMjc4NDUsIDI3ODU1LCAKKyAgICAyNzg2NSwgMjc4NzMsIDI3ODgxLCAyNzg5MSwgMjc4OTksIDAsIDAsIDAsIDAsIDAsIDI3OTA5LCAyNzkxMywgMjc5MTcsIAorICAgIDI3OTIxLCAyNzkyNSwgMjc5MjksIDI3OTMzLCAyNzkzNywgMjc5NDEsIDI3OTQ1LCAyNzk0OSwgMjc5NTMsIDI3OTU3LCAKKyAgICAyNzk2MSwgMjc5NjUsIDI3OTY5LCAyNzk3MywgMjc5NzcsIDI3OTgxLCAyNzk4NSwgMjc5ODksIDI3OTkzLCAyNzk5NywgCisgICAgMjgwMDEsIDI4MDA3LCAyODAxMSwgMjgwMTcsIDI4MDIxLCAyODAyNywgMjgwMzEsIDI4MDM3LCAyODA0MSwgMjgwNDUsIAorICAgIDI4MDQ5LCAyODA1MywgMjgwNTcsIDI4MDYxLCAyODA2NywgMjgwNzMsIDI4MDc5LCAyODA4NSwgMjgwOTAsIDI4MDk2LCAKKyAgICAyODEwMiwgMjgxMDgsIDI4MTE0LCAyODEyMCwgMjgxMjYsIDI4MTMzLCAyODEzOSwgMjgxNDQsIDI4MTQ5LCAyODE1MywgCisgICAgMjgxNTcsIDI4MTYxLCAyODE2NSwgMjgxNjksIDI4MTczLCAyODE3NywgMjgxODMsIDI4MTg5LCAyODE5NSwgMjgyMDAsIAorICAgIDI4MjA3LCAyODIxMiwgMjgyMTcsIDI4MjIzLCAyODIyOCwgMjgyMzUsIDI4MjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyODI0OSwgMjgyNTUsIDI4MjU5LCAyODI2NCwgMjgyNjksIDI4Mjc0LCAyODI3OSwgMjgyODQsIDI4Mjg5LCAKKyAgICAyODI5NCwgMjgyOTksIDI4MzA0LCAyODMwOSwgMjgzMTQsIDI4MzE5LCAyODMyNCwgMjgzMjgsIDI4MzMyLCAyODMzNywgCisgICAgMjgzNDIsIDI4MzQ3LCAyODM1MSwgMjgzNTUsIDI4MzU5LCAyODM2NCwgMjgzNjksIDI4Mzc0LCAyODM3OSwgMjgzODMsIDAsIAorICAgIDAsIDAsIDI4Mzg3LCAyODM5MiwgMjgzOTcsIDI4NDAyLCAyODQwOCwgMjg0MTQsIDI4NDIwLCAyODQyNiwgMjg0MzEsIAorICAgIDI4NDM2LCAyODQ0MiwgMjg0NDgsIDAsIDAsIDAsIDAsIDI4NDU1LCAyODQ2MCwgMjg0NjYsIDI4NDcyLCAyODQ3OCwgCisgICAgMjg0ODMsIDI4NDg4LCAyODQ5MywgMjg0OTgsIDI4NTA0LCAyODUwOSwgMjg1MTQsIDAsIDAsIDAsIDAsIDI4NTE5LCAwLCAwLCAKKyAgICAwLCAyODUyNCwgMjg1MjksIDI4NTM0LCAyODUzOSwgMjg1NDMsIDI4NTQ3LCAyODU1MSwgMjg1NTUsIDI4NTU5LCAyODU2MywgCisgICAgMjg1NjcsIDI4NTcxLCAyODU3NSwgMjg1ODAsIDI4NTg2LCAyODU5MiwgMjg1OTgsIDI4NjAzLCAyODYwOCwgMjg2MTQsIAorICAgIDI4NjIwLCAyODYyNiwgMjg2MzEsIDI4NjM3LCAyODY0MiwgMjg2NDgsIDI4NjU0LCAyODY1OSwgMjg2NjUsIDI4NjcxLCAKKyAgICAyODY3NywgMjg2ODIsIDI4Njg3LCAyODY5MiwgMjg2OTgsIDI4NzA0LCAyODcwOSwgMjg3MTUsIDI4NzIwLCAyODcyNiwgCisgICAgMjg3MzEsIDI4NzM3LCAwLCAwLCAyODc0MywgMjg3NDksIDI4NzU1LCAyODc2MSwgMjg3NjcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI4NzczLCAyODc4MCwgMjg3ODcsIDI4NzkzLCAyODgwMCwgMjg4MDcsIDI4ODEzLCAyODgyMCwgCisgICAgMjg4MjcsIDI4ODM0LCAyODg0MCwgMjg4NDYsIDI4ODUzLCAyODg1OSwgMjg4NjUsIDI4ODcyLCAyODg3OSwgMjg4ODUsIAorICAgIDI4ODkyLCAyODg5OSwgMjg5MDUsIDI4OTExLCAyODkxOCwgMjg5MjQsIDI4OTMwLCAyODkzNywgMjg5NDMsIDI4OTUwLCAKKyAgICAyODk1NywgMjg5NjQsIDI4OTcxLCAyODk3OCwgMjg5ODUsIDI4OTkxLCAyODk5OCwgMjkwMDUsIDI5MDExLCAyOTAxOCwgCisgICAgMjkwMjUsIDI5MDMyLCAyOTAzOSwgMjkwNDYsIDI5MDUzLCAyOTA2MCwgMCwgMCwgMCwgMCwgMjkwNjcsIDI5MDc1LCAKKyAgICAyOTA4MiwgMjkwODksIDI5MDk1LCAyOTEwMiwgMjkxMDgsIDI5MTE1LCAyOTEyMSwgMjkxMjgsIDI5MTM1LCAyOTE0MiwgCisgICAgMjkxNDksIDI5MTU2LCAyOTE2MywgMjkxNzAsIDI5MTc3LCAyOTE4NCwgMjkxOTEsIDI5MTk4LCAyOTIwNSwgMjkyMTEsIAorICAgIDI5MjE4LCAyOTIyNSwgMjkyMzIsIDI5MjM4LCAwLCAwLCAwLCAwLCAwLCAwLCAyOTI0NCwgMjkyNTAsIDI5MjU1LCAyOTI2MCwgCisgICAgMjkyNjUsIDI5MjcwLCAyOTI3NSwgMjkyODAsIDI5Mjg1LCAyOTI5MCwgMjkyOTUsIDAsIDAsIDAsIDI5MzAxLCAyOTMwNywgCisgICAgMjkzMTMsIDI5MzE3LCAyOTMyMywgMjkzMjksIDI5MzM1LCAyOTM0MSwgMjkzNDcsIDI5MzUzLCAyOTM1OSwgMjkzNjUsIAorICAgIDI5MzcxLCAyOTM3NywgMjkzODMsIDI5Mzg5LCAyOTM5NSwgMjk0MDEsIDI5NDA3LCAyOTQxMSwgMjk0MTcsIDI5NDIzLCAKKyAgICAyOTQyOSwgMjk0MzUsIDI5NDQxLCAyOTQ0NywgMjk0NTMsIDI5NDU5LCAyOTQ2NSwgMjk0NzEsIDI5NDc3LCAyOTQ4MywgCisgICAgMjk0ODksIDI5NDk1LCAyOTUwMSwgMjk1MDUsIDI5NTEwLCAyOTUxNSwgMjk1MjAsIDI5NTI0LCAyOTUyOSwgMjk1MzMsIAorICAgIDI5NTM4LCAyOTU0MywgMjk1NDgsIDI5NTUyLCAyOTU1NywgMjk1NjIsIDI5NTY3LCAyOTU3MiwgMjk1NzcsIDI5NTgxLCAKKyAgICAyOTU4NSwgMjk1OTAsIDI5NTk1LCAyOTU5OSwgMjk2MDMsIDI5NjA3LCAyOTYxMiwgMjk2MTcsIDI5NjIyLCAyOTYyNywgMCwgCisgICAgMCwgMjk2MzMsIDI5NjM3LCAyOTY0NCwgMjk2NDksIDI5NjU1LCAyOTY2MSwgMjk2NjYsIDI5NjcyLCAyOTY3OCwgMjk2ODMsIAorICAgIDI5Njg5LCAyOTY5NSwgMjk3MDEsIDI5NzA2LCAyOTcxMiwgMjk3MTcsIDI5NzIyLCAyOTcyOCwgMjk3MzMsIDI5NzM5LCAKKyAgICAyOTc0NCwgMjk3NTAsIDI5NzU2LCAyOTc2MiwgMjk3NjgsIDI5NzcyLCAyOTc3NywgMjk3ODIsIDI5Nzg4LCAyOTc5NCwgCisgICAgMjk3OTksIDI5ODA1LCAyOTgxMSwgMjk4MTUsIDI5ODIwLCAyOTgyNSwgMjk4MjksIDI5ODM0LCAyOTgzOSwgMjk4NDQsIAorICAgIDI5ODQ5LCAyOTg1NSwgMjk4NjEsIDI5ODY2LCAyOTg3MSwgMjk4NzYsIDI5ODgwLCAyOTg4NSwgMjk4ODksIDI5ODk0LCAKKyAgICAyOTg5OCwgMjk5MDMsIDI5OTA4LCAyOTkxMywgMjk5MTgsIDI5OTI0LCAyOTkzMCwgMjk5MzcsIDI5OTQ3LCAyOTk1NiwgCisgICAgMjk5NjMsIDI5OTY5LCAyOTk3OSwgMjk5ODQsIDI5OTkwLCAwLCAyOTk5NSwgMzAwMDAsIDMwMDA1LCAzMDAxMywgMzAwMTksIAorICAgIDMwMDI3LCAzMDAzMiwgMzAwMzgsIDMwMDQ0LCAzMDA1MCwgMzAwNTUsIDMwMDYxLCAzMDA2NiwgMzAwNzMsIDMwMDc5LCAKKyAgICAzMDA4NCwgMzAwOTAsIDMwMDk2LCAzMDEwMiwgMzAxMDksIDMwMTE2LCAzMDEyMywgMzAxMjgsIDMwMTMzLCAzMDE0MCwgCisgICAgMzAxNDcsIDMwMTU0LCAzMDE2MSwgMzAxNjgsIDAsIDAsIDMwMTc1LCAzMDE4MiwgMzAxODksIDMwMTk1LCAzMDIwMSwgCisgICAgMzAyMDcsIDMwMjEzLCAzMDIxOSwgMzAyMjUsIDMwMjMxLCAzMDIzNywgMCwgMCwgMCwgMCwgMCwgMCwgMzAyNDMsIDMwMjQ5LCAKKyAgICAzMDI1NCwgMzAyNTksIDMwMjY0LCAzMDI2OSwgMzAyNzQsIDMwMjc5LCAzMDI4NCwgMzAyODksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMwMjk0LCAzMDI5OSwgMzAzMDQsIDMwMzA5LCAzMDMxNCwgMzAzMTksIDMwMzI0LCAzMDMzMywgMzAzNDAsIDMwMzQ1LCAKKyAgICAzMDM1MCwgMzAzNTUsIDMwMzYwLCAzMDM2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzE1NTksIDcxNTY2LCA3MTU3NCwgNzE1ODIsIAotICAgIDcxNTg5LCA3MTU5NywgNzE2MDQsIDcxNjEwLCA3MTYxNiwgNzE2MjMsIDcxNjI5LCA3MTYzNSwgNzE2NDEsIDcxNjQ4LCAKLSAgICA3MTY1NSwgNzE2NjIsIDcxNjY5LCA3MTY3NiwgNzE2ODMsIDcxNjkwLCA3MTY5NywgNzE3MDQsIDcxNzExLCA3MTcxOCwgCi0gICAgNzE3MjUsIDcxNzMyLCA3MTczOSwgNzE3NDUsIDcxNzUyLCA3MTc1OSwgNzE3NjYsIDcxNzczLCA3MTc4MCwgNzE3ODcsIAotICAgIDcxNzk0LCA3MTgwMSwgNzE4MDgsIDcxODE1LCA3MTgyMiwgNzE4MjksIDcxODM2LCA3MTg0MywgNzE4NTAsIDcxODU3LCAKLSAgICA3MTg2NCwgNzE4NzEsIDcxODc5LCA3MTg4NywgNzE4OTUsIDcxOTAzLCAwLCAwLCAwLCAwLCA3MTkxMSwgNzE5MjAsIAotICAgIDcxOTI5LCA3MTkzOCwgNzE5NDcsIDcxOTU2LCA3MTk2NSwgNzE5NzIsIDcxOTc5LCA3MTk4NiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzE5OTMsIDcxOTk3LCA3MjAwMiwgNzIwMDcsIDcyMDEyLCA3MjAxNywgNzIwMjIsIDcyMDI3LCA3MjAzMiwgNzIwMzcsIAotICAgIDcyMDQyLCA3MjA0NywgNzIwNTEsIDcyMDU1LCA3MjA2MCwgNzIwNjUsIDcyMDY5LCA3MjA3NCwgNzIwNzksIDcyMDg0LCAKLSAgICA3MjA4OSwgNzIwOTQsIDcyMDk5LCA3MjEwNCwgNzIxMDgsIDcyMTEyLCA3MjExNywgNzIxMjIsIDcyMTI3LCA3MjEzMSwgCi0gICAgNzIxMzUsIDcyMTM5LCA3MjE0MywgNzIxNDcsIDcyMTUxLCA3MjE1NiwgNzIxNjEsIDcyMTY2LCA3MjE3MSwgNzIxNzYsIAotICAgIDcyMTgzLCA3MjE4OSwgNzIxOTQsIDcyMTk5LCA3MjIwNCwgNzIyMDksIDcyMjE1LCA3MjIyMiwgNzIyMjgsIDcyMjM1LCAKLSAgICA3MjI0MSwgNzIyNDcsIDcyMjUyLCA3MjI1OSwgNzIyNjUsIDcyMjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjI3NiwgCi0gICAgNzIyODAsIDcyMjg0LCA3MjI4NywgNzIyOTEsIDcyMjk0LCA3MjI5OCwgNzIzMDEsIDcyMzA1LCA3MjMwOSwgNzIzMTQsIAotICAgIDcyMzE4LCA3MjMyMywgNzIzMjYsIDcyMzMwLCA3MjMzNCwgNzIzMzcsIDcyMzQxLCA3MjM0NSwgNzIzNDgsIDcyMzUyLCAKLSAgICA3MjM1NiwgNzIzNjAsIDcyMzY0LCA3MjM2OCwgNzIzNzIsIDcyMzc2LCA3MjM4MCwgNzIzODQsIDcyMzg4LCA3MjM5MiwgCi0gICAgNzIzOTYsIDcyNDAwLCA3MjQwNCwgNzI0MDgsIDcyNDEyLCA3MjQxNiwgNzI0MjAsIDcyNDIzLCA3MjQyNiwgNzI0MzAsIAotICAgIDcyNDM0LCA3MjQzOCwgNzI0NDEsIDcyNDQ0LCA3MjQ0NywgNzI0NTEsIDcyNDU1LCA3MjQ1OSwgNzI0NjMsIDcyNDY3LCAKLSAgICA3MjQ3MCwgNzI0NzQsIDcyNDgwLCA3MjQ4NSwgNzI0ODksIDcyNDk0LCA3MjQ5OCwgNzI1MDMsIDcyNTA4LCA3MjUxNCwgCi0gICAgNzI1MTksIDcyNTI1LCA3MjUyOSwgNzI1MzQsIDcyNTM5LCA3MjU0MywgNzI1NDgsIDcyNTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3MjU1NywgNzI1NjAsIDcyNTY0LCA3MjU2OCwgNzI1NzEsIDcyNTc0LCA3MjU3NywgNzI1ODAsIDcyNTgzLCAKLSAgICA3MjU4NiwgNzI1ODksIDcyNTkyLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjU5NSwgNzI2MDAsIDcyNjA0LCA3MjYwOCwgNzI2MTIsIAotICAgIDcyNjE2LCA3MjYyMCwgNzI2MjQsIDcyNjI4LCA3MjYzMiwgNzI2MzYsIDcyNjQwLCA3MjY0NCwgNzI2NDgsIDcyNjUyLCAKLSAgICA3MjY1NiwgNzI2NjAsIDcyNjY1LCA3MjY3MCwgNzI2NzYsIDcyNjgyLCA3MjY4OSwgNzI2OTQsIDcyNjk5LCA3MjcwNSwgCi0gICAgNzI3MDksIDcyNzE0LCA3MjcxNywgMCwgMCwgMCwgMCwgNzI3MjAsIDcyNzI3LCA3MjczMywgNzI3MzksIDcyNzQ1LCAKLSAgICA3Mjc1MSwgNzI3NTcsIDcyNzYzLCA3Mjc2OSwgNzI3NzUsIDcyNzgxLCA3Mjc4NywgNzI3OTQsIDcyODAxLCA3MjgwOCwgCi0gICAgNzI4MTUsIDcyODIyLCA3MjgyOSwgNzI4MzYsIDcyODQzLCA3Mjg1MCwgNzI4NTYsIDcyODYyLCA3Mjg2OSwgNzI4NzUsIAotICAgIDcyODgyLCA3Mjg4OSwgNzI4OTUsIDcyOTAxLCA3MjkwOCwgNzI5MTUsIDcyOTIyLCA3MjkyOCwgNzI5MzUsIDcyOTQyLCAKLSAgICA3Mjk0OCwgNzI5NTUsIDcyOTYxLCA3Mjk2OCwgNzI5NzUsIDcyOTgxLCA3Mjk4NywgNzI5OTQsIDczMDAwLCA3MzAwNywgCi0gICAgNzMwMTQsIDczMDIzLCA3MzAzMCwgNzMwMzcsIDczMDQxLCA3MzA0NiwgNzMwNTEsIDczMDU2LCA3MzA2MSwgNzMwNjUsIAotICAgIDczMDY5LCA3MzA3NCwgNzMwNzgsIDczMDgzLCA3MzA4OCwgNzMwOTMsIDczMDk4LCA3MzEwMiwgNzMxMDcsIDczMTExLCAKLSAgICA3MzExNiwgNzMxMjAsIDczMTI1LCA3MzEzMCwgNzMxMzUsIDczMTQwLCA3MzE0NCwgNzMxNDksIDczMTU0LCA3MzE1OSwgCi0gICAgNzMxNjUsIDczMTcwLCA3MzE3NiwgNzMxODIsIDczMTg4LCA3MzE5NSwgNzMyMDEsIDczMjA3LCA3MzIxNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzMyMTgsIDczMjIzLCA3MzIyNywgNzMyMzEsIDczMjM1LCA3MzIzOSwgNzMyNDMsIAotICAgIDczMjQ3LCA3MzI1MSwgNzMyNTUsIDczMjU5LCA3MzI2MywgNzMyNjcsIDczMjcxLCA3MzI3NSwgNzMyNzksIDczMjgzLCAKLSAgICA3MzI4NywgNzMyOTEsIDczMjk1LCA3MzI5OSwgNzMzMDMsIDczMzA3LCA3MzMxMSwgNzMzMTUsIDczMzE5LCA3MzMyMywgCi0gICAgNzMzMjcsIDczMzMxLCA3MzMzNSwgMCwgMCwgMCwgNzMzMzksIDczMzQzLCA3MzM0NywgNzMzNTEsIDczMzU1LCA3MzM1OCwgCi0gICAgNzMzNjQsIDczMzY3LCA3MzM3MSwgNzMzNzQsIDczMzgwLCA3MzM4NiwgNzMzOTQsIDczMzk3LCA3MzQwMSwgNzM0MDQsIAotICAgIDczNDA3LCA3MzQxMywgNzM0MTksIDczNDIzLCA3MzQyOSwgNzM0MzMsIDczNDM3LCA3MzQ0MywgNzM0NDcsIDczNDUzLCAKLSAgICA3MzQ1OSwgNzM0NjMsIDczNDY3LCA3MzQ3MywgNzM0NzcsIDczNDgzLCA3MzQ4OSwgNzM0OTMsIDczNDk5LCA3MzUwMywgCi0gICAgNzM1MDksIDczNTEyLCA3MzUxNSwgNzM1MjEsIDczNTI1LCA3MzUzMSwgNzM1MzQsIDczNTM3LCA3MzU0MCwgNzM1NDYsIAotICAgIDczNTUwLCA3MzU1NCwgNzM1NjAsIDczNTY2LCA3MzU3MCwgNzM1NzMsIDczNTc5LCA3MzU4NCwgNzM1ODksIDczNTk0LCAKLSAgICA3MzYwMSwgNzM2MDYsIDczNjEzLCA3MzYxOCwgNzM2MjUsIDczNjMwLCA3MzYzNiwgNzM2NDIsIDczNjQ4LCA3MzY1MSwgCi0gICAgNzM2NTUsIDczNjU5LCA3MzY2NCwgNzM2NjksIDczNjc0LCA3MzY3OSwgNzM2ODQsIDczNjg5LCA3MzY5NCwgNzM2OTksIAotICAgIDczNzA2LCA3MzcxMSwgMCwgNzM3MTgsIDczNzIxLCA3MzcyNSwgNzM3MjgsIDczNzMxLCA3MzczNCwgNzM3MzcsIDczNzQwLCAKLSAgICA3Mzc0MywgNzM3NDYsIDczNzQ5LCAwLCAwLCAwLCAwLCA3Mzc1MiwgNzM3NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMzcwLCAzMDM3NiwgCisgICAgMzAzODIsIDMwMzg2LCAzMDM5MCwgMzAzOTQsIDMwMzk4LCAzMDQwNCwgMzA0MDgsIDMwNDE0LCAzMDQxOCwgMzA0MjQsIAorICAgIDMwNDMwLCAzMDQzOCwgMzA0NDQsIDMwNDUyLCAzMDQ1NiwgMzA0NjAsIDMwNDY0LCAzMDQ3MCwgMzA0NzMsIDMwNDc5LCAKKyAgICAzMDQ4MywgMzA0ODksIDMwNDkzLCAzMDQ5NywgMzA1MDMsIDMwNTA3LCAzMDUxMywgMzA1MTcsIDMwNTIzLCAzMDUzMSwgCisgICAgMzA1MzksIDMwNTQ3LCAzMDU1MywgMzA1NTcsIDMwNTYzLCAzMDU2NywgMzA1NzMsIDMwNTc2LCAzMDU3OSwgMzA1ODUsIAorICAgIDMwNTg5LCAzMDU5NSwgMzA1OTgsIDMwNjAxLCAzMDYwNCwgMzA2MDgsIDMwNjEyLCAzMDYxOCwgMzA2MjQsIDMwNjI3LCAKKyAgICAzMDYzMCwgMzA2MzQsIDMwNjM5LCAzMDY0NCwgMzA2NTEsIDMwNjU2LCAzMDY2MywgMzA2NzAsIDMwNjc5LCAzMDY4NiwgCisgICAgMzA2OTUsIDMwNzAwLCAzMDcwNywgMzA3MTQsIDMwNzIzLCAzMDcyOCwgMzA3MzUsIDMwNzQwLCAzMDc0NiwgMzA3NTIsIAorICAgIDMwNzU4LCAzMDc2NCwgMzA3NzAsIDMwNzc2LCAwLCAwLCAwLCAwLCAzMDc4MiwgMzA3ODYsIDMwNzg5LCAzMDc5MiwgCisgICAgMzA3OTUsIDMwNzk4LCAzMDgwMSwgMzA4MDQsIDMwODA3LCAzMDgxMCwgMzA4MTMsIDMwODE2LCAzMDgxOSwgMzA4MjIsIAorICAgIDMwODI3LCAzMDgzMiwgMzA4MzcsIDMwODQwLCAzMDg0NSwgMzA4NTAsIDMwODU1LCAzMDg2MCwgMzA4NjcsIDMwODcyLCAKKyAgICAzMDg3NywgMzA4ODIsIDMwODg3LCAzMDg5NCwgMzA5MDAsIDMwOTA2LCAzMDkxMiwgMzA5MTgsIDMwOTI0LCAzMDkzMywgCisgICAgMzA5NDIsIDMwOTQ4LCAzMDk1NCwgMzA5NjIsIDMwOTcwLCAzMDk3OSwgMzA5ODgsIDMwOTk2LCAzMTAwNCwgMzEwMTMsIAorICAgIDMxMDIyLCAwLCAwLCAwLCAzMTAzMCwgMzEwMzQsIDMxMDM4LCAzMTA0MiwgMzEwNDUsIDMxMDQ4LCAzMTA1MSwgMzEwNTUsIAorICAgIDMxMDU4LCAzMTA2MSwgMzEwNjUsIDMxMDY4LCAzMTA3MiwgMzEwNzYsIDMxMDgwLCAzMTA4NCwgMzEwODgsIDMxMDkyLCAKKyAgICAzMTA5NiwgMzExMDAsIDMxMTA0LCAzMTEwNywgMzExMTAsIDMxMTE0LCAzMTExOCwgMzExMjIsIDMxMTI1LCAzMTEyOCwgCisgICAgMzExMzEsIDMxMTM1LCAzMTEzOSwgMzExNDIsIDMxMTQ2LCAzMTE0OSwgMzExNTQsIDMxMTU5LCAzMTE2NCwgMzExNjksIAorICAgIDMxMTc0LCAzMTE3OSwgMzExODQsIDMxMTg5LCAzMTE5NCwgMzExOTgsIDMxMjAyLCAzMTIwOCwgMzEyMTUsIDMxMjE5LCAKKyAgICAzMTIyMywgMzEyMjcsIDMxMjMwLCAzMTIzMywgMzEyMzYsIDMxMjM5LCAzMTI0MiwgMzEyNDUsIDMxMjQ4LCAzMTI1MSwgCisgICAgMzEyNTQsIDMxMjU3LCAzMTI2MSwgMzEyNjUsIDMxMjY5LCAzMTI3NCwgMzEyNzgsIDMxMjgyLCAzMTI4OCwgMzEyOTIsIAorICAgIDMxMjk4LCAzMTMwNCwgMzEzMDksIDMxMzE2LCAzMTMyMCwgMzEzMjYsIDMxMzMwLCAzMTMzNiwgMzEzNDEsIDMxMzQ4LCAKKyAgICAzMTM1NSwgMzEzNjAsIDMxMzY3LCAzMTM3MiwgMzEzNzcsIDMxMzgxLCAzMTM4NywgMzEzOTEsIDMxMzk3LCAzMTQwNCwgCisgICAgMzE0MTEsIDMxNDE1LCAzMTQyMSwgMzE0MjcsIDMxNDMxLCAzMTQzNywgMzE0NDIsIDMxNDQ3LCAzMTQ1NCwgMzE0NTksIAorICAgIDMxNDY0LCAzMTQ2OSwgMzE0NzQsIDMxNDc4LCAzMTQ4MiwgMzE0ODcsIDMxNDkyLCAzMTQ5OSwgMzE1MDUsIDMxNTEwLCAKKyAgICAzMTUxNywgMzE1MjIsIDMxNTI5LCAzMTUzNCwgMzE1NDMsIDMxNTQ5LCAzMTU1NSwgMzE1NTksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDMxNTYzLCAzMTU3MiwgMzE1NzksIDMxNTg2LCAzMTU5MywgMzE1OTYsIDMxNjAwLCAzMTYwNCwgMzE2MDgsIAorICAgIDMxNjEyLCAzMTYxNiwgMzE2MjAsIDMxNjI0LCAzMTYyOCwgMzE2MzIsIDMxNjM2LCAzMTY0MCwgMzE2NDQsIDMxNjQ3LCAKKyAgICAzMTY1MCwgMzE2NTQsIDMxNjU4LCAzMTY2MiwgMzE2NjYsIDMxNjcwLCAzMTY3NCwgMzE2NzcsIDMxNjgxLCAzMTY4NSwgCisgICAgMzE2ODksIDMxNjkzLCAzMTY5NiwgMzE2OTksIDMxNzAzLCAzMTcwNiwgMzE3MTAsIDMxNzE0LCAzMTcxNywgMzE3MjEsIAorICAgIDMxNzI1LCAzMTcyOCwgMzE3MzMsIDMxNzM4LCAzMTc0MywgMzE3NDcsIDMxNzUxLCAzMTc1NiwgMzE3NjAsIDMxNzY1LCAKKyAgICAzMTc2OSwgMzE3NzQsIDMxNzc4LCAzMTc4MiwgMzE3ODcsIDMxNzkyLCAzMTc5NiwgMzE4MDEsIDMxODA2LCAzMTgxMSwgCisgICAgMzE4MTUsIDAsIDAsIDAsIDMxODE5LCAzMTgyNCwgMzE4MzMsIDMxODM4LCAzMTg0NSwgMzE4NTAsIDMxODU0LCAzMTg1NywgCisgICAgMzE4NjAsIDMxODYzLCAzMTg2NiwgMzE4NjksIDMxODcyLCAzMTg3NSwgMzE4NzgsIDAsIDAsIDAsIDMxODgxLCAzMTg4NSwgCisgICAgMzE4ODksIDMxODkzLCAzMTkwMCwgMzE5MDYsIDMxOTEyLCAzMTkxOCwgMzE5MjQsIDMxOTMwLCAzMTkzNiwgMzE5NDIsIAorICAgIDMxOTQ4LCAzMTk1NCwgMzE5NjEsIDMxOTY4LCAzMTk3NSwgMzE5ODIsIDMxOTg5LCAzMTk5NiwgMzIwMDMsIDMyMDEwLCAKKyAgICAzMjAxNywgMzIwMjQsIDMyMDMxLCAzMjAzOCwgMzIwNDUsIDMyMDUyLCAzMjA1OSwgMzIwNjYsIDMyMDczLCAzMjA4MCwgCisgICAgMzIwODcsIDMyMDk0LCAzMjEwMSwgMzIxMDgsIDMyMTE1LCAzMjEyMiwgMzIxMjksIDMyMTM2LCAzMjE0MywgMzIxNTAsIAorICAgIDMyMTU3LCAzMjE2NCwgMzIxNzIsIDMyMTgwLCAzMjE4OCwgMzIxOTQsIDMyMjAwLCAzMjIwNiwgMzIyMTQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMjIzLCAzMjIzMCwgMzIyMzcsIDMyMjQ0LCAzMjI1MSwgCisgICAgMzIyNjAsIDMyMjY5LCAzMjI3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyODcsIDMyMjkyLCAzMjI5NywgMzIzMDIsIAorICAgIDMyMzA3LCAzMjMxNiwgMzIzMjcsIDMyMzM2LCAzMjM0NywgMzIzNTMsIDMyMzY2LCAzMjM3MiwgMzIzNzksIDMyMzg2LCAKKyAgICAzMjM5MSwgMzIzOTcsIDMyNDAzLCAzMjQxNCwgMzI0MjMsIDMyNDMwLCAzMjQzNywgMzI0NDYsIDMyNDUzLCAzMjQ2MiwgCisgICAgMzI0NzIsIDMyNDgyLCAzMjQ4OSwgMzI0OTYsIDMyNTAzLCAzMjUxMywgMzI1MTgsIDMyNTI2LCAzMjUzMiwgMzI1NDAsIAorICAgIDMyNTQ5LCAzMjU1NCwgMzI1NjEsIDMyNTY3LCAzMjU3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI1NzcsIAorICAgIDMyNTgyLCAzMjU4OCwgMzI1OTUsIDMyNjAzLCAzMjYwOSwgMzI2MTUsIDMyNjIxLCAzMjYyNiwgMzI2MzMsIDMyNjM5LCAKKyAgICAzMjY0NSwgMzI2NTEsIDMyNjU5LCAzMjY2NCwgMzI2NzIsIDMyNjc3LCAzMjY4MywgMzI2ODksIDMyNjk2LCAzMjcwNCwgCisgICAgMzI3MTEsIDMyNzE3LCAzMjcyNCwgMzI3MzEsIDMyNzM3LCAzMjc0NCwgMzI3NTEsIDMyNzU3LCAzMjc2MiwgMzI3NjgsIAorICAgIDMyNzc2LCAzMjc4NCwgMzI3OTAsIDMyNzk2LCAzMjgwMiwgMzI4MDgsIDMyODE2LCAzMjgyMCwgMzI4MjYsIDMyODMyLCAKKyAgICAzMjgzOCwgMzI4NDQsIDMyODUwLCAzMjg1NiwgMzI4NjAsIDMyODY1LCAzMjg3MCwgMzI4NzcsIDMyODgyLCAzMjg4NiwgCisgICAgMzI4OTIsIDMyODk3LCAzMjkwMiwgMzI5MDYsIDMyOTExLCAzMjkxNiwgMzI5MjAsIDMyOTI0LCAzMjkyOSwgMzI5MzYsIAorICAgIDMyOTQwLCAzMjk0NSwgMzI5NTAsIDMyOTU0LCAzMjk1OSwgMzI5NjMsIDMyOTY4LCAzMjk3MiwgMzI5NzgsIDMyOTgzLCAKKyAgICAzMjk5MCwgMzI5OTUsIDMzMDAwLCAzMzAwNCwgMzMwMDksIDMzMDE0LCAzMzAyMSwgMzMwMjYsIDMzMDMyLCAzMzAzNywgCisgICAgMzMwNDEsIDMzMDQ2LCAzMzA1MCwgMzMwNTUsIDMzMDYyLCAzMzA2OSwgMzMwNzQsIDMzMDc5LCAzMzA4MywgMzMwODksIAorICAgIDMzMDk1LCAzMzEwMCwgMzMxMDUsIDMzMTEwLCAzMzExNiwgMzMxMjEsIDMzMTI3LCAzMzEzMiwgMzMxMzgsIDMzMTQ0LCAKKyAgICAzMzE1MCwgMzMxNTcsIDMzMTY0LCAzMzE3MSwgMzMxNzgsIDMzMTg1LCAzMzE5MiwgMzMxOTcsIDMzMjA1LCAzMzIxNCwgCisgICAgMzMyMjMsIDMzMjMyLCAzMzI0MSwgMzMyNTAsIDMzMjU5LCAzMzI3MSwgMzMyODAsIDMzMjg5LCAzMzI5OCwgMzMzMDUsIAorICAgIDMzMzEwLCAzMzMxNywgMzMzMjUsIDMzMzMzLCAzMzM0MCwgMzMzNDcsIDMzMzU0LCAzMzM2MSwgMzMzNjksIDMzMzc4LCAKKyAgICAzMzM4NywgMzMzOTYsIDMzNDA1LCAzMzQxNCwgMzM0MjMsIDMzNDMyLCAzMzQ0MSwgMzM0NTAsIDMzNDU5LCAzMzQ2OCwgCisgICAgMzM0NzcsIDMzNDg2LCAzMzQ5NSwgMzM1MDMsIDMzNTEyLCAzMzUyMywgMzM1MzEsIDMzNTQwLCAzMzU1MSwgMzM1NjAsIAorICAgIDMzNTY5LCAzMzU3OCwgMzM1ODcsIDMzNTk1LCAzMzYwNCwgMzM2MTEsIDMzNjE2LCAzMzYyNCwgMzM2MjksIDMzNjM2LCAKKyAgICAzMzY0MSwgMzM2NTAsIDMzNjU2LCAzMzY2MywgMzM2NzAsIDMzNjc1LCAzMzY4MCwgMzM2ODgsIDMzNjk2LCAzMzcwNSwgCisgICAgMzM3MTQsIDMzNzE5LCAzMzcyNiwgMzM3MzcsIDMzNzQ1LCAzMzc1NCwgMzM3NjAsIDMzNzY2LCAzMzc3MSwgMzM3NzgsIAorICAgIDMzNzgzLCAzMzc5MiwgMzM3OTcsIDMzODAyLCAzMzgwNywgMzM4MTQsIDMzODIxLCAzMzgyNiwgMzM4MzUsIDMzODQzLCAKKyAgICAzMzg0OCwgMzM4NTMsIDMzODYwLCAzMzg2NywgMzM4NzEsIDMzODc1LCAzMzg3OCwgMzM4ODEsIDMzODg0LCAzMzg4NywgCisgICAgMzM4OTAsIDMzODkzLCAzMzkwMCwgMzM5MDMsIDMzOTA2LCAzMzkxMSwgMzM5MTUsIDMzOTE5LCAzMzkyMywgMzM5MjcsIAorICAgIDMzOTMxLCAzMzk0MCwgMzM5NDYsIDMzOTUyLCAzMzk1OCwgMzM5NjYsIDMzOTc0LCAzMzk4MCwgMzM5ODYsIDMzOTkzLCAKKyAgICAzMzk5OSwgMzQwMDQsIDM0MDEwLCAzNDAxNiwgMzQwMjIsIDM0MDI5LCAzNDAzNSwgMzQwNDMsIDM0MDQ5LCAzNDA1NiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQwNjIsIDM0MDY5LCAKKyAgICAzNDA3NiwgMzQwODEsIDM0MDkwLCAzNDA5OCwgMzQxMDYsIDM0MTEzLCAzNDEyMCwgMzQxMjcsIDM0MTM0LCAzNDE0MiwgCisgICAgMzQxNTAsIDM0MTYwLCAzNDE3MCwgMzQxNzgsIDM0MTg2LCAzNDE5NCwgMzQyMDIsIDM0MjExLCAzNDIyMCwgMzQyMjgsIAorICAgIDM0MjM2LCAzNDI0NSwgMzQyNTQsIDM0MjY0LCAzNDI3NCwgMzQyODMsIDM0MjkyLCAzNDMwMCwgMzQzMDgsIDM0MzE2LCAKKyAgICAzNDMyNCwgMzQzMzQsIDM0MzQ0LCAzNDM1MiwgMzQzNjAsIDM0MzY4LCAzNDM3NiwgMzQzODQsIDM0MzkyLCAzNDQwMCwgCisgICAgMzQ0MDgsIDM0NDE2LCAzNDQyNCwgMzQ0MzIsIDM0NDQwLCAzNDQ0OSwgMzQ0NTgsIDM0NDY3LCAzNDQ3NiwgMzQ0ODYsIAorICAgIDM0NDk2LCAzNDUwMywgMzQ1MTAsIDM0NTE4LCAzNDUyNiwgMzQ1MzUsIDM0NTQ0LCAzNDU1MiwgMzQ1NjAsIDM0NTcyLCAKKyAgICAzNDU4NCwgMzQ1OTMsIDM0NjAyLCAzNDYxMSwgMzQ2MjAsIDM0NjI3LCAzNDYzNCwgMzQ2NDIsIDM0NjUwLCAzNDY1OCwgCisgICAgMzQ2NjYsIDM0Njc0LCAzNDY4MiwgMzQ2OTAsIDM0Njk4LCAzNDcwNywgMzQ3MTYsIDM0NzI1LCAzNDczNCwgMzQ3NDMsIAorICAgIDM0NzUyLCAzNDc2MiwgMzQ3NzIsIDM0NzgyLCAzNDc5MiwgMzQ4MDEsIDM0ODEwLCAzNDgxNywgMzQ4MjQsIDM0ODMyLCAKKyAgICAzNDg0MCwgMzQ4NDgsIDM0ODU2LCAzNDg2NCwgMzQ4NzIsIDM0ODg0LCAzNDg5NiwgMzQ5MDUsIDM0OTE0LCAzNDkyMiwgCisgICAgMzQ5MzAsIDM0OTM4LCAzNDk0NiwgMzQ5NTcsIDM0OTY4LCAzNDk3OSwgMzQ5OTAsIDM1MDAyLCAzNTAxNCwgMzUwMjIsIAorICAgIDM1MDMwLCAzNTAzOCwgMzUwNDYsIDM1MDU1LCAzNTA2NCwgMzUwNzMsIDM1MDgyLCAzNTA5MCwgMzUwOTgsIDM1MTA2LCAKKyAgICAzNTExNCwgMzUxMjIsIDM1MTMwLCAzNTEzOSwgMzUxNDgsIDM1MTU4LCAzNTE2OCwgMzUxNzUsIDM1MTgyLCAzNTE5MCwgCisgICAgMzUxOTgsIDM1MjA2LCAzNTIxNCwgMzUyMjEsIDM1MjI4LCAzNTIzNiwgMzUyNDQsIDM1MjUyLCAzNTI2MCwgMzUyNjgsIAorICAgIDM1Mjc2LCAzNTI4NCwgMzUyOTIsIDM1MzAwLCAzNTMwOCwgMzUzMTYsIDM1MzI0LCAzNTMzMiwgMzUzNDAsIDM1MzQ4LCAKKyAgICAzNTM1NiwgMzUzNjUsIDM1Mzc0LCAzNTM4MywgMzUzOTEsIDM1NDAwLCAzNTQwOSwgMzU0MTgsIDM1NDI3LCAzNTQzNywgCisgICAgMzU0NDYsIDM1NDUzLCAzNTQ1OCwgMzU0NjUsIDM1NDcyLCAzNTQ4MCwgMzU0ODgsIDM1NDk3LCAzNTUwNiwgMzU1MTYsIAorICAgIDM1NTI2LCAzNTUzNywgMzU1NDgsIDM1NTU3LCAzNTU2NiwgMzU1NzYsIDM1NTg2LCAzNTU5NSwgMzU2MDQsIDM1NjE0LCAKKyAgICAzNTYyNCwgMzU2MzUsIDM1NjQ2LCAzNTY1NSwgMzU2NjQsIDM1Njc0LCAzNTY4NCwgMzU2OTEsIDM1Njk4LCAzNTcwNiwgCisgICAgMzU3MTQsIDM1NzIwLCAzNTcyNiwgMzU3MzUsIDM1NzQ0LCAzNTc1NCwgMzU3NjQsIDM1Nzc1LCAzNTc4NiwgMzU3OTUsIAorICAgIDM1ODA0LCAzNTgxNCwgMzU4MjQsIDM1ODMzLCAzNTg0MiwgMzU4NTAsIDM1ODU4LCAzNTg2NSwgMzU4NzIsIDM1ODgwLCAKKyAgICAzNTg4OCwgMzU4OTcsIDM1OTA2LCAzNTkxNiwgMzU5MjYsIDM1OTM3LCAzNTk0OCwgMzU5NTcsIDM1OTY2LCAzNTk3NiwgCisgICAgMzU5ODYsIDM1OTk1LCAzNjAwNCwgMzYwMTQsIDM2MDI0LCAzNjAzNSwgMzYwNDYsIDM2MDU1LCAzNjA2NCwgMzYwNzQsIAorICAgIDM2MDg0LCAzNjA5MSwgMzYwOTgsIDM2MTA2LCAzNjExNCwgMzYxMjMsIDM2MTMyLCAzNjE0MiwgMzYxNTIsIDM2MTYzLCAKKyAgICAzNjE3NCwgMzYxODMsIDM2MTkyLCAzNjIwMiwgMzYyMTIsIDM2MjIwLCAzNjIyOCwgMzYyMzYsIDM2MjQ0LCAzNjI1MywgCisgICAgMzYyNjIsIDM2MjY5LCAzNjI3NiwgMzYyODMsIDM2MjkwLCAzNjI5NywgMzYzMDQsIDM2MzEyLCAzNjMyMCwgMzYzMjgsIAorICAgIDM2MzM2LCAzNjM0NywgMzYzNTgsIDM2MzY5LCAzNjM4MCwgMzYzOTEsIDM2NDAyLCAzNjQxMCwgMzY0MTgsIDM2NDI5LCAKKyAgICAzNjQ0MCwgMzY0NTEsIDM2NDYyLCAzNjQ3MywgMzY0ODQsIDM2NDkyLCAzNjUwMCwgMzY1MTEsIDM2NTIyLCAzNjUzMywgMCwgCisgICAgMCwgMzY1NDQsIDM2NTUyLCAzNjU2MCwgMzY1NzEsIDM2NTgyLCAzNjU5MywgMCwgMCwgMzY2MDQsIDM2NjEyLCAzNjYyMCwgCisgICAgMzY2MzEsIDM2NjQyLCAzNjY1MywgMzY2NjQsIDM2Njc1LCAzNjY4NiwgMzY2OTQsIDM2NzAyLCAzNjcxMywgMzY3MjQsIAorICAgIDM2NzM1LCAzNjc0NiwgMzY3NTcsIDM2NzY4LCAzNjc3NiwgMzY3ODQsIDM2Nzk1LCAzNjgwNiwgMzY4MTcsIDM2ODI4LCAKKyAgICAzNjgzOSwgMzY4NTAsIDM2ODU4LCAzNjg2NiwgMzY4NzcsIDM2ODg4LCAzNjg5OSwgMzY5MTAsIDM2OTIxLCAzNjkzMiwgCisgICAgMzY5NDAsIDM2OTQ4LCAzNjk1OSwgMzY5NzAsIDM2OTgxLCAwLCAwLCAzNjk5MiwgMzcwMDAsIDM3MDA4LCAzNzAxOSwgCisgICAgMzcwMzAsIDM3MDQxLCAwLCAwLCAzNzA1MiwgMzcwNjAsIDM3MDY4LCAzNzA3OSwgMzcwOTAsIDM3MTAxLCAzNzExMiwgCisgICAgMzcxMjMsIDAsIDM3MTM0LCAwLCAzNzE0MiwgMCwgMzcxNTMsIDAsIDM3MTY0LCAzNzE3NSwgMzcxODMsIDM3MTkxLCAKKyAgICAzNzIwMiwgMzcyMTMsIDM3MjI0LCAzNzIzNSwgMzcyNDYsIDM3MjU3LCAzNzI2NSwgMzcyNzMsIDM3Mjg0LCAzNzI5NSwgCisgICAgMzczMDYsIDM3MzE3LCAzNzMyOCwgMzczMzksIDM3MzQ3LCAzNzM1NSwgMzczNjMsIDM3MzcxLCAzNzM3OSwgMzczODcsIAorICAgIDM3Mzk1LCAzNzQwMywgMzc0MTEsIDM3NDE5LCAzNzQyNywgMzc0MzUsIDM3NDQzLCAwLCAwLCAzNzQ1MSwgMzc0NjIsIAorICAgIDM3NDczLCAzNzQ4NywgMzc1MDEsIDM3NTE1LCAzNzUyOSwgMzc1NDMsIDM3NTU3LCAzNzU2OCwgMzc1NzksIDM3NTkzLCAKKyAgICAzNzYwNywgMzc2MjEsIDM3NjM1LCAzNzY0OSwgMzc2NjMsIDM3Njc0LCAzNzY4NSwgMzc2OTksIDM3NzEzLCAzNzcyNywgCisgICAgMzc3NDEsIDM3NzU1LCAzNzc2OSwgMzc3ODAsIDM3NzkxLCAzNzgwNSwgMzc4MTksIDM3ODMzLCAzNzg0NywgMzc4NjEsIAorICAgIDM3ODc1LCAzNzg4NiwgMzc4OTcsIDM3OTExLCAzNzkyNSwgMzc5MzksIDM3OTUzLCAzNzk2NywgMzc5ODEsIDM3OTkyLCAKKyAgICAzODAwMywgMzgwMTcsIDM4MDMxLCAzODA0NSwgMzgwNTksIDM4MDczLCAzODA4NywgMzgwOTUsIDM4MTAzLCAzODExNCwgCisgICAgMzgxMjIsIDAsIDM4MTMzLCAzODE0MSwgMzgxNTIsIDM4MTYwLCAzODE2OCwgMzgxNzYsIDM4MTg0LCAzODE5MiwgMzgxOTUsIAorICAgIDM4MTk4LCAzODIwMSwgMzgyMDQsIDM4MjEwLCAzODIyMSwgMzgyMjksIDAsIDM4MjQwLCAzODI0OCwgMzgyNTksIDM4MjY3LCAKKyAgICAzODI3NSwgMzgyODMsIDM4MjkxLCAzODI5OSwgMzgzMDUsIDM4MzExLCAzODMxNywgMzgzMjUsIDM4MzMzLCAzODM0NCwgMCwgCisgICAgMCwgMzgzNTUsIDM4MzYzLCAzODM3NCwgMzgzODIsIDM4MzkwLCAzODM5OCwgMCwgMzg0MDYsIDM4NDEyLCAzODQxOCwgCisgICAgMzg0MjQsIDM4NDMyLCAzODQ0MCwgMzg0NTEsIDM4NDYyLCAzODQ3MCwgMzg0NzgsIDM4NDg2LCAzODQ5NywgMzg1MDUsIAorICAgIDM4NTEzLCAzODUyMSwgMzg1MjksIDM4NTM3LCAzODU0MywgMzg1NDksIDAsIDAsIDM4NTUyLCAzODU2MywgMzg1NzEsIDAsIAorICAgIDM4NTgyLCAzODU5MCwgMzg2MDEsIDM4NjA5LCAzODYxNywgMzg2MjUsIDM4NjMzLCAzODY0MSwgMzg2NDQsIDAsIDM4NjQ3LCAKKyAgICAzODY1MSwgMzg2NTUsIDM4NjU5LCAzODY2MywgMzg2NjcsIDM4NjcxLCAzODY3NSwgMzg2NzksIDM4NjgzLCAzODY4NywgCisgICAgMzg2OTEsIDM4Njk3LCAzODcwMywgMzg3MDksIDM4NzEyLCAzODcxNSwgMzg3MTcsIDM4NzIxLCAzODcyNSwgMzg3MjksIAorICAgIDM4NzMzLCAzODczNSwgMzg3MzksIDM4NzQzLCAzODc0OSwgMzg3NTUsIDM4NzYyLCAzODc2OSwgMzg3NzQsIDM4Nzc5LCAKKyAgICAzODc4NSwgMzg3OTEsIDM4NzkzLCAzODc5NiwgMzg3OTgsIDM4ODAyLCAzODgwNiwgMzg4MTAsIDM4ODEzLCAzODgxNywgCisgICAgMzg4MjEsIDM4ODI1LCAzODgyOSwgMzg4MzMsIDM4ODM5LCAzODg0MywgMzg4NDcsIDM4ODUzLCAzODg1OCwgMzg4NjUsIAorICAgIDM4ODY3LCAzODg3MCwgMzg4NzQsIDM4ODc4LCAzODg4MywgMzg4ODksIDM4ODkxLCAzODkwMCwgMzg5MDksIDM4OTEyLCAKKyAgICAzODkxNiwgMzg5MTgsIDM4OTIwLCAzODkyMiwgMzg5MjUsIDM4OTMxLCAzODkzMywgMzg5MzcsIDM4OTQxLCAzODk0OCwgCisgICAgMzg5NTUsIDM4OTU5LCAzODk2NCwgMzg5NjksIDM4OTc0LCAzODk3OSwgMzg5ODMsIDM4OTg3LCAzODk5MCwgMzg5OTQsIAorICAgIDM4OTk4LCAzOTAwNSwgMzkwMTAsIDM5MDE0LCAzOTAxOCwgMzkwMjMsIDM5MDI3LCAzOTAzMSwgMzkwMzYsIDM5MDQxLCAKKyAgICAzOTA0NSwgMzkwNDksIDM5MDUzLCAzOTA1NSwgMzkwNjAsIDM5MDY1LCAzOTA2OSwgMzkwNzMsIDM5MDc3LCAzOTA4MSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzkwODUsIDM5MDkxLCAzOTA5NywgMzkxMDQsIDM5MTExLCAzOTExNiwgMzkxMjEsIDM5MTI1LCAwLCAwLCAKKyAgICAzOTEzMSwgMzkxMzQsIDM5MTM3LCAzOTE0MCwgMzkxNDMsIDM5MTQ2LCAzOTE0OSwgMzkxNTMsIDM5MTU3LCAzOTE2MiwgCisgICAgMzkxNjcsIDM5MTcyLCAzOTE3OSwgMzkxODMsIDM5MTg2LCAzOTE4OSwgMzkxOTIsIDM5MTk1LCAzOTE5OCwgMzkyMDEsIAorICAgIDM5MjA0LCAzOTIwNywgMzkyMTAsIDM5MjE0LCAzOTIxOCwgMzkyMjMsIDM5MjI4LCAwLCAzOTIzMywgMzkyMzksIDM5MjQ1LCAKKyAgICAzOTI1MSwgMzkyNTgsIDM5MjY1LCAzOTI3MiwgMzkyNzksIDM5Mjg1LCAzOTI5MSwgMzkyOTgsIDM5MzA1LCAzOTMxMiwgMCwgCisgICAgMCwgMCwgMzkzMTksIDM5MzIyLCAzOTMyNSwgMzkzMjgsIDM5MzMzLCAzOTMzNiwgMzkzMzksIDM5MzQyLCAzOTM0NSwgCisgICAgMzkzNDgsIDM5MzUxLCAzOTM1NSwgMzkzNTgsIDM5MzYxLCAzOTM2NCwgMzkzNjcsIDM5MzcwLCAzOTM3NSwgMzkzNzgsIAorICAgIDM5MzgxLCAzOTM4NCwgMzkzODcsIDM5MzkwLCAzOTM5NSwgMzkzOTgsIDM5NDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTQwNiwgMzk0MTEsIDM5NDE2LCAzOTQyMywgCisgICAgMzk0MzEsIDM5NDM2LCAzOTQ0MSwgMzk0NDUsIDM5NDQ5LCAzOTQ1NCwgMzk0NjEsIDM5NDY4LCAzOTQ3MiwgMzk0NzcsIAorICAgIDM5NDgyLCAzOTQ4NywgMzk0OTIsIDM5NDk5LCAzOTUwNCwgMzk1MDksIDM5NTE0LCAzOTUyMywgMzk1MzAsIDM5NTM3LCAKKyAgICAzOTU0MSwgMzk1NDYsIDM5NTUyLCAzOTU1NywgMzk1NjQsIDM5NTczLCAzOTU4MiwgMzk1ODYsIDM5NTkwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTU5NCwgMzk1OTgsIDM5NjA2LCAzOTYxMCwgMzk2MTQsIAorICAgIDM5NjE5LCAzOTYyMywgMzk2MjcsIDM5NjMxLCAzOTYzMywgMzk2MzcsIDM5NjQxLCAzOTY0NSwgMzk2NTAsIDM5NjU0LCAKKyAgICAzOTY1OCwgMzk2NjYsIDM5NjY5LCAzOTY3MywgMzk2NzYsIDM5Njc5LCAzOTY4NSwgMzk2ODksIDM5NjkyLCAzOTY5OCwgCisgICAgMzk3MDIsIDM5NzA2LCAzOTcxMCwgMzk3MTMsIDM5NzE3LCAzOTcyMCwgMzk3MjQsIDM5NzI2LCAzOTcyOSwgMzk3MzIsIAorICAgIDM5NzM2LCAzOTczOCwgMzk3NDIsIDM5NzQ1LCAzOTc0OCwgMzk3NTMsIDM5NzU4LCAzOTc2NSwgMzk3NjgsIDM5NzcxLCAKKyAgICAzOTc3NSwgMzk3ODAsIDM5NzgzLCAzOTc4NiwgMzk3ODksIDM5NzkzLCAzOTc5OCwgMzk4MDEsIDM5ODA0LCAzOTgwNiwgCisgICAgMzk4MDksIDM5ODEyLCAzOTgxNSwgMzk4MTksIDM5ODI0LCAzOTgyNywgMzk4MzEsIDM5ODM1LCAzOTgzOSwgMzk4NDMsIAorICAgIDM5ODQ4LCAzOTg1NCwgMzk4NTksIDM5ODY0LCAzOTg3MCwgMzk4NzUsIDM5ODgwLCAzOTg4NCwgMzk4ODgsIDM5ODkzLCAKKyAgICAzOTg5NywgMzk5MDEsIDM5OTA0LCAzOTkwNiwgMzk5MTEsIDM5OTE3LCAzOTkyNCwgMzk5MzEsIDM5OTM4LCAzOTk0NSwgCisgICAgMzk5NTIsIDM5OTU5LCAzOTk2NiwgMzk5NzMsIDM5OTgxLCAzOTk4OCwgMzk5OTYsIDQwMDAzLCA0MDAxMCwgNDAwMTgsIAorICAgIDQwMDI2LCA0MDAzMSwgNDAwMzYsIDQwMDQxLCA0MDA0NiwgNDAwNTEsIDQwMDU2LCA0MDA2MSwgNDAwNjYsIDQwMDcxLCAKKyAgICA0MDA3NiwgNDAwODIsIDQwMDg4LCA0MDA5NCwgNDAxMDAsIDQwMTA3LCA0MDExNSwgNDAxMjIsIDQwMTI4LCA0MDEzNCwgCisgICAgNDAxNDAsIDQwMTQ2LCA0MDE1MiwgNDAxNTgsIDQwMTY0LCA0MDE3MCwgNDAxNzYsIDQwMTgzLCA0MDE5MCwgNDAxOTcsIAorICAgIDQwMjA0LCA0MDIxMiwgNDAyMjEsIDQwMjI5LCA0MDI0MCwgNDAyNDgsIDQwMjU2LCA0MDI2NSwgNDAyNzIsIDQwMjgxLCAKKyAgICA0MDI5MCwgNDAyOTgsIDQwMzA3LCAwLCAwLCAwLCAwLCAwLCAwLCA0MDMxNSwgNDAzMTcsIDQwMzIwLCA0MDMyMiwgNDAzMjUsIAorICAgIDQwMzI4LCA0MDMzMSwgNDAzMzYsIDQwMzQxLCA0MDM0NiwgNDAzNTEsIDQwMzU1LCA0MDM1OSwgNDAzNjMsIDQwMzY3LCAKKyAgICA0MDM3MiwgNDAzNzgsIDQwMzgzLCA0MDM4OSwgNDAzOTQsIDQwMzk5LCA0MDQwNCwgNDA0MTAsIDQwNDE1LCA0MDQyMSwgCisgICAgNDA0MjcsIDQwNDMxLCA0MDQzNSwgNDA0NDAsIDQwNDQ1LCA0MDQ1MCwgNDA0NTUsIDQwNDYwLCA0MDQ2OCwgNDA0NzYsIAorICAgIDQwNDg0LCA0MDQ5MiwgNDA0OTksIDQwNTA3LCA0MDUxNCwgNDA1MjEsIDQwNTMwLCA0MDU0MiwgNDA1NDgsIDQwNTU0LCAKKyAgICA0MDU2MiwgNDA1NzAsIDQwNTc5LCA0MDU4OCwgNDA1OTYsIDQwNjA0LCA0MDYxMywgNDA2MjIsIDQwNjI3LCA0MDYzNSwgCisgICAgNDA2NDAsIDQwNjQ1LCA0MDY1MSwgNDA2NTYsIDQwNjYyLCA0MDY2OSwgNDA2NzYsIDQwNjgxLCA0MDY4NywgNDA2OTIsIAorICAgIDQwNjk1LCA0MDY5OSwgNDA3MDIsIDQwNzA2LCA0MDcxMCwgNDA3MTQsIDQwNzIwLCA0MDcyNiwgNDA3MzIsIDQwNzM4LCAKKyAgICA0MDc0MiwgNDA3NDYsIDQwNzUwLCA0MDc1NCwgNDA3NjAsIDQwNzY2LCA0MDc3MCwgNDA3NzUsIDQwNzc5LCA0MDc4NCwgCisgICAgNDA3ODksIDQwNzk0LCA0MDc5NywgNDA4MDEsIDQwODA0LCA0MDgwOCwgNDA4MTUsIDQwODIzLCA0MDgzNCwgNDA4NDUsIAorICAgIDQwODUwLCA0MDg1OSwgNDA4NjYsIDQwODc1LCA0MDg4NCwgNDA4ODgsIDQwODk0LCA0MDkwMiwgNDA5MDYsIDQwOTExLCAKKyAgICA0MDkxNiwgNDA5MjIsIDQwOTI4LCA0MDkzNCwgNDA5NDEsIDQwOTQ1LCA0MDk0OSwgNDA5NTQsIDQwOTU3LCA0MDk1OSwgCisgICAgNDA5NjMsIDQwOTY3LCA0MDk3NSwgNDA5NzksIDQwOTgxLCA0MDk4MywgNDA5ODcsIDQwOTk1LCA0MTAwMCwgNDEwMDYsIAorICAgIDQxMDE2LCA0MTAyMywgNDEwMjgsIDQxMDMyLCA0MTAzNiwgNDEwNDAsIDQxMDQzLCA0MTA0NiwgNDEwNDksIDQxMDUzLCAKKyAgICA0MTA1NywgNDEwNjEsIDQxMDY1LCA0MTA2OSwgNDEwNzIsIDQxMDc2LCA0MTA4MCwgNDEwODMsIDQxMDg1LCA0MTA4OCwgCisgICAgNDEwOTAsIDQxMDk0LCA0MTA5OCwgNDExMDAsIDQxMTA2LCA0MTEwOSwgNDExMTQsIDQxMTE4LCA0MTEyMiwgNDExMjQsIAorICAgIDQxMTI2LCA0MTEyOCwgNDExMzEsIDQxMTM1LCA0MTEzOSwgNDExNDMsIDQxMTQ3LCA0MTE1MSwgNDExNTcsIDQxMTYzLCAKKyAgICA0MTE2NSwgNDExNjcsIDQxMTY5LCA0MTE3MSwgNDExNzQsIDQxMTc2LCA0MTE4MCwgNDExODIsIDQxMTg2LCA0MTE4OSwgCisgICAgNDExOTUsIDQxMTk5LCA0MTIwMywgNDEyMDYsIDQxMjA5LCA0MTIxMywgNDEyMTksIDQxMjIzLCA0MTIzMywgNDEyNDMsIAorICAgIDQxMjQ3LCA0MTI1MywgNDEyNTksIDQxMjYyLCA0MTI2NiwgNDEyNjksIDQxMjc0LCA0MTI3OCwgNDEyODQsIDQxMjg4LCAKKyAgICA0MTMwMCwgNDEzMDgsIDQxMzEyLCA0MTMxNiwgNDEzMjIsIDQxMzI2LCA0MTMyOSwgNDEzMzEsIDQxMzM0LCA0MTMzOCwgCisgICAgNDEzNDIsIDQxMzQ5LCA0MTM1MywgNDEzNTcsIDQxMzYxLCA0MTM2NCwgNDEzNjksIDQxMzc0LCA0MTM3OSwgNDEzODQsIAorICAgIDQxMzg5LCA0MTM5NCwgNDE0MDIsIDQxNDEwLCA0MTQxNCwgNDE0MTgsIDQxNDIwLCA0MTQyNSwgNDE0MjksIDQxNDMzLCAKKyAgICA0MTQ0MSwgNDE0NDksIDQxNDU1LCA0MTQ2MSwgNDE0NzAsIDQxNDc5LCA0MTQ4NCwgNDE0ODksIDQxNDk3LCA0MTUwNSwgCisgICAgNDE1MDcsIDQxNTA5LCA0MTUxNCwgNDE1MTksIDQxNTI1LCA0MTUzMSwgNDE1MzcsIDQxNTQzLCA0MTU0NywgNDE1NTEsIAorICAgIDQxNTU4LCA0MTU2NSwgNDE1NzEsIDQxNTc3LCA0MTU4NywgNDE1OTcsIDQxNjA1LCA0MTYxMywgNDE2MTUsIDQxNjE5LCAKKyAgICA0MTYyMywgNDE2MjgsIDQxNjMzLCA0MTY0MCwgNDE2NDcsIDQxNjUwLCA0MTY1MywgNDE2NTYsIDQxNjU5LCA0MTY2MiwgCisgICAgNDE2NjcsIDQxNjcxLCA0MTY3NiwgNDE2ODEsIDQxNjg0LCA0MTY4NywgNDE2OTAsIDQxNjkzLCA0MTY5NiwgNDE3MDAsIAorICAgIDQxNzAzLCA0MTcwNiwgNDE3MDksIDQxNzEyLCA0MTcxNCwgNDE3MTYsIDQxNzE4LCA0MTcyMCwgNDE3MjgsIDQxNzM2LCAKKyAgICA0MTc0MiwgNDE3NDYsIDQxNzUyLCA0MTc2MiwgNDE3NjgsIDQxNzc0LCA0MTc4MCwgNDE3ODgsIDQxNzk2LCA0MTgwNywgCisgICAgNDE4MTEsIDQxODE1LCA0MTgxNywgNDE4MjMsIDQxODI1LCA0MTgyNywgNDE4MjksIDQxODMxLCA0MTgzNywgNDE4NDAsIAorICAgIDQxODQ2LCA0MTg1MiwgNDE4NTYsIDQxODYwLCA0MTg2NCwgNDE4NjcsIDQxODcxLCA0MTg3NSwgNDE4NzcsIDQxODg2LCAKKyAgICA0MTg5NSwgNDE5MDAsIDQxOTA1LCA0MTkxMSwgNDE5MTcsIDQxOTIzLCA0MTkyNiwgNDE5MjksIDQxOTMyLCA0MTkzNSwgCisgICAgNDE5MzcsIDQxOTQyLCA0MTk0NywgNDE5NTIsIDQxOTU4LCA0MTk2NCwgNDE5NzIsIDQxOTgwLCA0MTk4NiwgNDE5OTIsIAorICAgIDQxOTk4LCA0MjAwNCwgNDIwMTMsIDQyMDIyLCA0MjAzMSwgNDIwNDAsIDQyMDQ5LCA0MjA1OCwgNDIwNjcsIDQyMDc2LCAKKyAgICA0MjA4NSwgNDIwOTQsIDQyMTAyLCA0MjExNCwgNDIxMjQsIDQyMTM5LCA0MjE0MiwgNDIxNDcsIDQyMTUzLCA0MjE1OSwgCisgICAgNDIxNjYsIDQyMTgwLCA0MjE5NSwgNDIyMDEsIDQyMjA3LCA0MjIxNCwgNDIyMjAsIDQyMjI4LCA0MjIzNCwgNDIyNDcsIAorICAgIDQyMjYxLCA0MjI2NiwgNDIyNzIsIDQyMjc5LCA0MjI4MiwgNDIyODUsIDQyMjg3LCA0MjI5MCwgNDIyOTMsIDQyMjk1LCAKKyAgICA0MjI5NywgNDIzMDEsIDQyMzA0LCA0MjMwNywgNDIzMTAsIDQyMzEzLCA0MjMxOCwgNDIzMjMsIDQyMzI4LCA0MjMzMywgCisgICAgNDIzMzgsIDQyMzQxLCA0MjM0MywgNDIzNDUsIDQyMzQ3LCA0MjM1MSwgNDIzNTUsIDQyMzU5LCA0MjM2NSwgNDIzNzAsIAorICAgIDQyMzcyLCA0MjM3NCwgNDIzNzksIDQyMzg0LCA0MjM4OSwgNDIzOTQsIDQyMzk5LCA0MjQwNCwgNDI0MDYsIDQyNDA4LCAKKyAgICA0MjQxNywgNDI0MjEsIDQyNDI5LCA0MjQzOCwgNDI0NDAsIDQyNDQ1LCA0MjQ1MCwgNDI0NTgsIDQyNDYyLCA0MjQ2NCwgCisgICAgNDI0NjgsIDQyNDcwLCA0MjQ3NCwgNDI0NzgsIDQyNDgyLCA0MjQ4NCwgNDI0ODYsIDQyNDg4LCA0MjQ5NSwgNDI1MDQsIAorICAgIDQyNTEzLCA0MjUyMiwgNDI1MzEsIDQyNTQwLCA0MjU0OSwgNDI1NTgsIDQyNTY3LCA0MjU3NSwgNDI1ODMsIDQyNTkyLCAKKyAgICA0MjYwMSwgNDI2MTAsIDQyNjE5LCA0MjYyNywgNDI2MzUsIDQyNjQ0LCA0MjY1MywgNDI2NjIsIDQyNjcyLCA0MjY4MSwgCisgICAgNDI2OTEsIDQyNzAwLCA0MjcxMCwgNDI3MTksIDQyNzI5LCA0MjczOSwgNDI3NDgsIDQyNzU4LCA0Mjc2NywgNDI3NzcsIAorICAgIDQyNzg2LCA0Mjc5NiwgNDI4MDUsIDQyODE0LCA0MjgyMywgNDI4MzIsIDQyODQxLCA0Mjg1MSwgNDI4NjAsIDQyODY5LCAKKyAgICA0Mjg3OCwgNDI4ODgsIDQyODk3LCA0MjkwNiwgNDI5MTUsIDQyOTI0LCA0MjkzNCwgNDI5NDQsIDQyOTUzLCA0Mjk2MiwgCisgICAgNDI5NzAsIDQyOTc4LCA0Mjk4NSwgNDI5OTMsIDQzMDAyLCA0MzAxMywgNDMwMjIsIDQzMDMxLCA0MzA0MCwgNDMwNDcsIAorICAgIDQzMDU0LCA0MzA2MSwgNDMwNzAsIDQzMDc5LCA0MzA4OCwgNDMwOTcsIDQzMTA0LCA0MzEwOSwgNDMxMTgsIDQzMTIzLCAKKyAgICA0MzEyNiwgNDMxMzQsIDQzMTM3LCA0MzE0MiwgNDMxNDcsIDQzMTUwLCA0MzE1MywgNDMxNjEsIDQzMTY0LCA0MzE2OSwgCisgICAgNDMxNzIsIDQzMTc5LCA0MzE4NCwgNDMxOTIsIDQzMTk1LCA0MzE5OCwgNDMyMDEsIDQzMjA2LCA0MzIxMSwgNDMyMTQsIAorICAgIDQzMjE3LCA0MzIyNSwgNDMyMjgsIDQzMjM1LCA0MzI0MiwgNDMyNDYsIDQzMjUwLCA0MzI1NSwgNDMyNjAsIDQzMjY2LCAKKyAgICA0MzI3MSwgNDMyNzcsIDQzMjgzLCA0MzI4OCwgNDMyOTQsIDQzMzAyLCA0MzMwOCwgNDMzMTYsIDQzMzI0LCA0MzMzMCwgCisgICAgNDMzMzgsIDQzMzQ2LCA0MzM1NSwgNDMzNjMsIDQzMzY5LCA0MzM3NywgNDMzODYsIDQzMzk0LCA0MzM5OCwgNDM0MDMsIAorICAgIDQzNDE2LCA0MzQyOSwgNDM0MzMsIDQzNDM3LCA0MzQ0MSwgNDM0NDUsIDQzNDU1LCA0MzQ1OSwgNDM0NjQsIDQzNDY5LCAKKyAgICA0MzQ3NCwgNDM0NzksIDQzNDg0LCA0MzQ4OSwgNDM0OTksIDQzNTA5LCA0MzUxNywgNDM1MjcsIDQzNTM3LCA0MzU0NSwgCisgICAgNDM1NTUsIDQzNTY1LCA0MzU3MywgNDM1ODMsIDQzNTkzLCA0MzYwMSwgNDM2MDksIDQzNjE5LCA0MzYyOSwgNDM2MzIsIAorICAgIDQzNjM1LCA0MzYzOCwgNDM2NDMsIDQzNjQ3LCA0MzY1MywgNDM2NjAsIDQzNjY3LCA0MzY3NSwgNDM2ODIsIDQzNjg2LCAKKyAgICA0MzY5MCwgNDM2OTQsIDQzNjk4LCA0MzcwMCwgNDM3MDQsIDQzNzA4LCA0MzcxMywgNDM3MTgsIDQzNzI1LCA0MzczMiwgCisgICAgNDM3MzUsIDQzNzQyLCA0Mzc0NCwgNDM3NDYsIDQzNzUwLCA0Mzc1NCwgNDM3NTksIDQzNzY1LCA0Mzc3MSwgNDM3NzcsIAorICAgIDQzNzgzLCA0Mzc5MiwgNDM4MDEsIDQzODEwLCA0MzgxNCwgNDM4MTYsIDQzODIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0MzgyNywgNDM4MzEsIDQzODM4LCA0Mzg0NSwgNDM4NTIsIDQzODU5LCA0Mzg2MywgNDM4NjcsIAorICAgIDQzODcxLCA0Mzg3NSwgNDM4ODAsIDQzODg2LCA0Mzg5MSwgNDM4OTcsIDQzOTAzLCA0MzkwOSwgNDM5MTUsIDQzOTIzLCAKKyAgICA0MzkzMCwgNDM5MzcsIDQzOTQ0LCA0Mzk1MSwgNDM5NTYsIDQzOTYyLCA0Mzk3MSwgNDM5NzUsIDQzOTgyLCA0Mzk4NiwgCisgICAgNDM5OTAsIDQzOTk2LCA0NDAwMiwgNDQwMDgsIDQ0MDE0LCA0NDAxOCwgNDQwMjIsIDQ0MDI1LCA0NDAyOCwgNDQwMzIsIAorICAgIDQ0MDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0NDA0NiwgNDQwNDksIDQ0MDUzLCA0NDA1NywgNDQwNjMsIDQ0MDY5LCA0NDA3NSwgNDQwODMsIDQ0MDkwLCAKKyAgICA0NDA5NCwgNDQxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ0MTA3LCA0NDExMCwgNDQxMTMsIDQ0MTE2LCA0NDExOSwgNDQxMjIsIDQ0MTI1LCA0NDEyOCwgNDQxMzEsIDQ0MTM0LCAKKyAgICA0NDEzOCwgNDQxNDIsIDQ0MTQ2LCA0NDE1MCwgNDQxNTQsIDQ0MTU4LCA0NDE2MiwgNDQxNjYsIDQ0MTcwLCA0NDE3NCwgCisgICAgNDQxNzgsIDQ0MTgxLCA0NDE4NCwgNDQxODcsIDQ0MTkwLCA0NDE5MywgNDQxOTYsIDQ0MTk5LCA0NDIwMiwgNDQyMDUsIAorICAgIDQ0MjA5LCA0NDIxMywgNDQyMTcsIDQ0MjIxLCA0NDIyNSwgNDQyMjksIDQ0MjMzLCA0NDIzNywgNDQyNDEsIDQ0MjQ1LCAKKyAgICA0NDI0OSwgNDQyNTUsIDQ0MjYxLCA0NDI2NywgNDQyNzQsIDQ0MjgxLCA0NDI4OCwgNDQyOTUsIDQ0MzAyLCA0NDMwOSwgCisgICAgNDQzMTYsIDQ0MzIzLCA0NDMzMCwgNDQzMzcsIDQ0MzQ0LCA0NDM1MSwgNDQzNTgsIDQ0MzY1LCA0NDM3MiwgNDQzNzksIAorICAgIDQ0Mzg2LCA0NDM5MSwgNDQzOTcsIDQ0NDAzLCA0NDQwOSwgNDQ0MTQsIDQ0NDIwLCA0NDQyNiwgNDQ0MzIsIDQ0NDM3LCAKKyAgICA0NDQ0MywgNDQ0NDksIDQ0NDU0LCA0NDQ1OSwgNDQ0NjUsIDQ0NDcwLCA0NDQ3NiwgNDQ0ODIsIDQ0NDg3LCA0NDQ5MywgCisgICAgNDQ0OTksIDQ0NTA0LCA0NDUxMCwgNDQ1MTYsIDQ0NTIyLCA0NDUyOCwgNDQ1MzQsIDQ0NTM5LCA0NDU0NSwgNDQ1NTEsIAorICAgIDQ0NTU3LCA0NDU2MiwgNDQ1NjgsIDQ0NTc0LCA0NDU4MCwgNDQ1ODUsIDQ0NTkxLCA0NDU5NywgNDQ2MDIsIDQ0NjA3LCAKKyAgICA0NDYxMywgNDQ2MTgsIDQ0NjI0LCA0NDYzMCwgNDQ2MzUsIDQ0NjQxLCA0NDY0NywgNDQ2NTIsIDQ0NjU4LCA0NDY2NCwgCisgICAgNDQ2NzAsIDQ0Njc2LCA0NDY4MiwgNDQ2ODcsIDQ0NjkzLCA0NDY5OSwgNDQ3MDUsIDQ0NzEwLCA0NDcxNiwgNDQ3MjIsIAorICAgIDQ0NzI4LCA0NDczMywgNDQ3MzksIDQ0NzQ1LCA0NDc1MCwgNDQ3NTUsIDQ0NzYxLCA0NDc2NiwgNDQ3NzIsIDQ0Nzc4LCAKKyAgICA0NDc4MywgNDQ3ODksIDQ0Nzk1LCA0NDgwMCwgNDQ4MDYsIDQ0ODEyLCA0NDgxOCwgNDQ4MjQsIDQ0ODMwLCA0NDgzNCwgCisgICAgNDQ4MzksIDQ0ODQ0LCA0NDg0OSwgNDQ4NTQsIDQ0ODU5LCA0NDg2NCwgNDQ4NjksIDQ0ODc0LCA0NDg3OSwgNDQ4ODQsIAorICAgIDQ0ODg4LCA0NDg5MiwgNDQ4OTYsIDQ0OTAwLCA0NDkwNCwgNDQ5MDgsIDQ0OTEyLCA0NDkxNiwgNDQ5MjAsIDQ0OTI1LCAKKyAgICA0NDkzMCwgNDQ5MzUsIDQ0OTQwLCA0NDk0NSwgNDQ5NTAsIDQ0OTU5LCA0NDk2OCwgNDQ5NzcsIDQ0OTg2LCA0NDk5NSwgCisgICAgNDUwMDQsIDQ1MDEzLCA0NTAyMiwgNDUwMjksIDQ1MDM3LCA0NTA0NSwgNDUwNTIsIDQ1MDU5LCA0NTA2NywgNDUwNzUsIAorICAgIDQ1MDgyLCA0NTA4OSwgNDUwOTcsIDQ1MTA1LCA0NTExMiwgNDUxMTksIDQ1MTI3LCA0NTEzNSwgNDUxNDIsIDQ1MTQ5LCAKKyAgICA0NTE1NywgNDUxNjYsIDQ1MTc1LCA0NTE4MywgNDUxOTIsIDQ1MjAxLCA0NTIwOCwgNDUyMTUsIDQ1MjIzLCA0NTIzMiwgCisgICAgNDUyNDEsIDQ1MjQ5LCA0NTI1OCwgNDUyNjcsIDQ1Mjc0LCA0NTI4MSwgNDUyOTAsIDQ1Mjk5LCA0NTMwNywgNDUzMTUsIAorICAgIDQ1MzI0LCA0NTMzMywgNDUzNDAsIDQ1MzQ3LCA0NTM1NiwgNDUzNjUsIDQ1MzczLCA0NTM4MSwgNDUzOTAsIDQ1Mzk5LCAKKyAgICA0NTQwNiwgNDU0MTMsIDQ1NDIyLCA0NTQzMSwgNDU0MzksIDQ1NDQ4LCA0NTQ1NywgNDU0NjUsIDQ1NDc1LCA0NTQ4NSwgCisgICAgNDU0OTUsIDQ1NTA1LCA0NTUxNCwgNDU1MjMsIDQ1NTMyLCA0NTU0MSwgNDU1NDgsIDQ1NTU2LCA0NTU2NCwgNDU1NzIsIAorICAgIDQ1NTgwLCA0NTU4NSwgNDU1OTAsIDQ1NTk5LCA0NTYwNywgNDU2MTQsIDQ1NjIzLCA0NTYzMSwgNDU2MzgsIDQ1NjQ3LCAKKyAgICA0NTY1NSwgNDU2NjIsIDQ1NjcxLCA0NTY3OSwgNDU2ODYsIDQ1Njk1LCA0NTcwMywgNDU3MTAsIDQ1NzE5LCA0NTcyNywgCisgICAgNDU3MzQsIDQ1NzQzLCA0NTc1MSwgNDU3NTgsIDQ1NzY3LCA0NTc3NSwgNDU3ODIsIDQ1NzkxLCA0NTc5OSwgNDU4MDYsIAorICAgIDQ1ODE1LCA0NTgyNCwgNDU4MzMsIDQ1ODQyLCA0NTg1NiwgNDU4NzAsIDQ1ODc3LCA0NTg4MiwgNDU4ODcsIDQ1ODkyLCAKKyAgICA0NTg5NywgNDU5MDIsIDQ1OTA3LCA0NTkxMiwgNDU5MTcsIDQ1OTI1LCA0NTkzMywgNDU5NDEsIDQ1OTQ5LCA0NTk1NCwgCisgICAgNDU5NjEsIDQ1OTY4LCA0NTk3NSwgNDU5ODAsIDQ1OTg4LCA0NTk5NSwgNDYwMDMsIDQ2MDA3LCA0NjAxNCwgNDYwMjAsIAorICAgIDQ2MDI3LCA0NjAzMSwgNDYwMzcsIDQ2MDQzLCA0NjA0OSwgNDYwNTMsIDQ2MDU2LCA0NjA2MCwgNDYwNjQsIDQ2MDcxLCAKKyAgICA0NjA3NywgNDYwODMsIDQ2MDg5LCA0NjA5NSwgNDYxMDksIDQ2MTE5LCA0NjEzMywgNDYxNDcsIDQ2MTUzLCA0NjE2MywgCisgICAgNDYxNzcsIDQ2MTgwLCA0NjE4MywgNDYxOTAsIDQ2MTk4LCA0NjIwMywgNDYyMDgsIDQ2MjE2LCA0NjIyOCwgNDYyNDAsIAorICAgIDQ2MjQ4LCA0NjI1MiwgNDYyNTYsIDQ2MjU5LCA0NjI2MiwgNDYyNjYsIDQ2MjcwLCA0NjI3MywgNDYyNzYsIDQ2MjgxLCAKKyAgICA0NjI4NiwgNDYyOTIsIDQ2Mjk4LCA0NjMwMywgNDYzMDgsIDQ2MzE0LCA0NjMyMCwgNDYzMjUsIDQ2MzMwLCA0NjMzNSwgCisgICAgNDYzNDAsIDQ2MzQ2LCA0NjM1MiwgNDYzNTcsIDQ2MzYyLCA0NjM2OCwgNDYzNzQsIDQ2Mzc5LCA0NjM4NCwgNDYzODcsIAorICAgIDQ2MzkwLCA0NjM5OSwgNDY0MDEsIDQ2NDAzLCA0NjQwNiwgNDY0MTAsIDQ2NDE2LCA0NjQxOCwgNDY0MjEsIDQ2NDI4LCAKKyAgICA0NjQzNSwgNDY0NDMsIDQ2NDUxLCA0NjQ2MSwgNDY0NzUsIDQ2NDgwLCA0NjQ4NSwgNDY0ODksIDQ2NDk0LCA0NjUwMiwgCisgICAgNDY1MTAsIDQ2NTE5LCA0NjUyOCwgNDY1MzcsIDQ2NTQ2LCA0NjU1MSwgNDY1NTYsIDQ2NTYyLCA0NjU2OCwgNDY1NzQsIAorICAgIDQ2NTgwLCA0NjU4MywgNDY1ODksIDQ2NTk1LCA0NjYwNSwgNDY2MTUsIDQ2NjIzLCA0NjYzMSwgNDY2NDAsIDQ2NjQ5LCAKKyAgICA0NjY1MywgNDY2NjEsIDQ2NjY5LCA0NjY3NywgNDY2ODUsIDQ2Njk0LCA0NjcwMywgNDY3MTIsIDQ2NzIxLCA0NjcyNiwgCisgICAgNDY3MzEsIDQ2NzM2LCA0Njc0MSwgNDY3NDYsIDQ2NzUyLCA0Njc1OCwgNDY3NjMsIDQ2NzY5LCA0Njc3MSwgNDY3NzMsIAorICAgIDQ2Nzc1LCA0Njc3NywgNDY3ODAsIDQ2NzgzLCA0Njc4NSwgNDY3ODcsIDQ2Nzg5LCA0Njc5MywgNDY3OTcsIDQ2Nzk5LCAKKyAgICA0NjgwMSwgNDY4MDQsIDQ2ODA3LCA0NjgxMSwgNDY4MTcsIDQ2ODIzLCA0NjgyNSwgNDY4MzIsIDQ2ODM2LCA0Njg0MSwgCisgICAgNDY4NDYsIDQ2ODQ4LCA0Njg1OCwgNDY4NjQsIDQ2ODcwLCA0Njg3NiwgNDY4ODIsIDQ2ODg4LCA0Njg5NCwgNDY4OTksIAorICAgIDQ2OTAyLCA0NjkwNSwgNDY5MDgsIDQ2OTEwLCA0NjkxMiwgNDY5MTYsIDQ2OTIwLCA0NjkyNSwgNDY5MzAsIDQ2OTM1LCAKKyAgICA0NjkzOCwgNDY5NDIsIDQ2OTQ3LCA0Njk1MCwgNDY5NTQsIDQ2OTU5LCA0Njk2NCwgNDY5NjksIDQ2OTc0LCA0Njk3OSwgCisgICAgNDY5ODQsIDQ2OTg5LCA0Njk5NCwgNDY5OTksIDQ3MDA0LCA0NzAwOSwgNDcwMTQsIDQ3MDIwLCA0NzAyNiwgNDcwMzIsIAorICAgIDQ3MDM0LCA0NzAzNywgNDcwMzksIDQ3MDQyLCA0NzA0NCwgNDcwNDYsIDQ3MDQ4LCA0NzA1MCwgNDcwNTIsIDQ3MDU0LCAKKyAgICA0NzA1NiwgNDcwNTgsIDQ3MDYwLCA0NzA2MiwgNDcwNjQsIDQ3MDY2LCA0NzA2OCwgNDcwNzAsIDQ3MDcyLCA0NzA3NCwgCisgICAgNDcwNzYsIDQ3MDgxLCA0NzA4NiwgNDcwOTEsIDQ3MDk2LCA0NzEwMSwgNDcxMDYsIDQ3MTExLCA0NzExNiwgNDcxMjEsIAorICAgIDQ3MTI2LCA0NzEzMSwgNDcxMzYsIDQ3MTQxLCA0NzE0NiwgNDcxNTEsIDQ3MTU2LCA0NzE2MSwgNDcxNjYsIDQ3MTcxLCAKKyAgICA0NzE3NiwgNDcxODAsIDQ3MTg0LCA0NzE4OCwgNDcxOTQsIDQ3MjAwLCA0NzIwNSwgNDcyMTAsIDQ3MjE1LCA0NzIyMCwgCisgICAgNDcyMjUsIDQ3MjMwLCA0NzIzOCwgNDcyNDYsIDQ3MjU0LCA0NzI2MiwgNDcyNzAsIDQ3Mjc4LCA0NzI4NiwgNDcyOTQsIAorICAgIDQ3MzAwLCA0NzMwNSwgNDczMTAsIDQ3MzE1LCA0NzMxOCwgNDczMjIsIDQ3MzI2LCA0NzMzMCwgNDczMzQsIDQ3MzM4LCAKKyAgICA0NzM0MiwgNDczNDksIDQ3MzU2LCA0NzM2NCwgNDczNzIsIDQ3Mzc3LCA0NzM4MiwgNDczODksIDQ3Mzk2LCA0NzQwMywgCisgICAgNDc0MTAsIDQ3NDEzLCA0NzQxNiwgNDc0MjEsIDQ3NDIzLCA0NzQyNywgNDc0MzIsIDQ3NDM0LCA0NzQzNiwgNDc0MzgsIAorICAgIDQ3NDQwLCA0NzQ0NSwgNDc0NDgsIDQ3NDUwLCA0NzQ1NSwgNDc0NjIsIDQ3NDY5LCA0NzQ3MiwgNDc0NzYsIDQ3NDgxLCAKKyAgICA0NzQ4NiwgNDc0OTQsIDQ3NTAwLCA0NzUwNiwgNDc1MTgsIDQ3NTI1LCA0NzUzMiwgNDc1MzcsIDQ3NTQyLCA0NzU0OCwgCisgICAgNDc1NTEsIDQ3NTU0LCA0NzU1OSwgNDc1NjEsIDQ3NTY1LCA0NzU2NywgNDc1NjksIDQ3NTcxLCA0NzU3MywgNDc1NzUsIAorICAgIDQ3NTc3LCA0NzU4MiwgNDc1ODQsIDQ3NTg2LCA0NzU4OCwgNDc1OTAsIDQ3NTk0LCA0NzU5NiwgNDc1OTksIDQ3NjA0LCAKKyAgICA0NzYwOSwgNDc2MTQsIDQ3NjE5LCA0NzYyNSwgNDc2MzEsIDQ3NjMzLCA0NzYzNiwgNDc2NDMsIDQ3NjUwLCA0NzY1NywgCisgICAgNDc2NjQsIDQ3NjY4LCA0NzY3MiwgNDc2NzQsIDQ3Njc2LCA0NzY4MCwgNDc2ODYsIDQ3NjkxLCA0NzY5MywgNDc2OTcsIAorICAgIDQ3NzA2LCA0NzcxNCwgNDc3MjIsIDQ3NzI4LCA0NzczNCwgNDc3MzksIDQ3NzQ1LCA0Nzc1MCwgNDc3NTMsIDQ3NzY3LCAKKyAgICA0Nzc3MCwgNDc3NzUsIDQ3NzgwLCA0Nzc4NiwgNDc3OTYsIDQ3Nzk4LCA0NzgwNCwgNDc4MTAsIDQ3ODE0LCA0NzgyMSwgCisgICAgNDc4MjUsIDQ3ODI3LCA0NzgyOSwgNDc4MzMsIDQ3ODM5LCA0Nzg0NCwgNDc4NTAsIDQ3ODUyLCA0Nzg1OCwgNDc4NjAsIAorICAgIDQ3ODY2LCA0Nzg2OCwgNDc4NzAsIDQ3ODc1LCA0Nzg3NywgNDc4ODEsIDQ3ODg2LCA0Nzg4OCwgNDc4OTMsIDQ3ODk4LCAKKyAgICA0NzkwMiwgNDc5MDksIDAsIDQ3OTE5LCA0NzkyNSwgNDc5MjgsIDQ3OTM0LCA0NzkzNywgNDc5NDIsIDQ3OTQ3LCA0Nzk1MSwgCisgICAgNDc5NTMsIDQ3OTU1LCA0Nzk1OSwgNDc5NjMsIDQ3OTY3LCA0Nzk3MSwgNDc5NzYsIDQ3OTc4LCA0Nzk4MywgNDc5ODYsIAorICAgIDQ3OTg5LCA0Nzk5MiwgNDc5OTYsIDQ4MDAwLCA0ODAwNSwgNDgwMDksIDQ4MDE0LCA0ODAxOSwgNDgwMjMsIDQ4MDI4LCAKKyAgICA0ODAzNCwgNDgwMzcsIDQ4MDQzLCA0ODA0OCwgNDgwNTIsIDQ4MDU3LCA0ODA2MywgNDgwNjksIDQ4MDc2LCA0ODA4MiwgCisgICAgNDgwODksIDQ4MDk2LCA0ODA5OCwgNDgxMDUsIDQ4MTA5LCA0ODExNSwgNDgxMjEsIDQ4MTI2LCA0ODEzMiwgNDgxMzYsIAorICAgIDQ4MTQxLCA0ODE0NCwgNDgxNDksIDQ4MTU1LCA0ODE2MiwgNDgxNzAsIDQ4MTc3LCA0ODE4NiwgNDgxOTYsIDQ4MjAzLCAKKyAgICA0ODIwOSwgNDgyMTMsIDQ4MjIwLCA0ODIyNSwgNDgyMzQsIDQ4MjM3LCA0ODI0MCwgNDgyNDksIDQ4MjU5LCA0ODI2NiwgCisgICAgNDgyNjgsIDQ4Mjc0LCA0ODI3OSwgNDgyODEsIDQ4Mjg0LCA0ODI4OCwgNDgyOTYsIDQ4MzA1LCA0ODMwOCwgNDgzMTMsIAorICAgIDQ4MzE4LCA0ODMyNiwgNDgzMzQsIDQ4MzQyLCA0ODM1MCwgNDgzNTYsIDQ4MzYyLCA0ODM2OCwgNDgzNzYsIDQ4MzgxLCAKKyAgICA0ODM4NCwgNDgzODgsIDQ4MzkxLCA0ODQwMywgNDg0MTMsIDQ4NDI0LCA0ODQzMywgNDg0NDQsIDQ4NDU0LCA0ODQ2MywgCisgICAgNDg0NjksIDQ4NDc3LCA0ODQ4MSwgNDg0ODksIDQ4NDkzLCA0ODUwMSwgNDg1MDgsIDQ4NTE1LCA0ODUyNCwgNDg1MzMsIAorICAgIDQ4NTQzLCA0ODU1MywgNDg1NjMsIDQ4NTczLCA0ODU4MiwgNDg1OTEsIDQ4NjAxLCA0ODYxMSwgNDg2MjAsIDQ4NjI5LCAKKyAgICA0ODYzNSwgNDg2NDEsIDQ4NjQ3LCA0ODY1MywgNDg2NTksIDQ4NjY1LCA0ODY3MSwgNDg2NzcsIDQ4NjgzLCA0ODY5MCwgCisgICAgNDg2OTYsIDQ4NzAyLCA0ODcwOCwgNDg3MTQsIDQ4NzIwLCA0ODcyNiwgNDg3MzIsIDQ4NzM4LCA0ODc0NCwgNDg3NTEsIAorICAgIDQ4NzU4LCA0ODc2NSwgNDg3NzIsIDQ4Nzc5LCA0ODc4NiwgNDg3OTMsIDQ4ODAwLCA0ODgwNywgNDg4MTQsIDQ4ODIyLCAKKyAgICA0ODgyNywgNDg4MzAsIDQ4ODM0LCA0ODgzOCwgNDg4NDQsIDQ4ODQ3LCA0ODg1MywgNDg4NTksIDQ4ODY0LCA0ODg2OCwgCisgICAgNDg4NzMsIDQ4ODc5LCA0ODg4NiwgNDg4ODksIDQ4ODk2LCA0ODkwMywgNDg5MDcsIDQ4OTE2LCA0ODkyNSwgNDg5MzAsIAorICAgIDQ4OTM2LCA0ODk0MSwgNDg5NDYsIDQ4OTUzLCA0ODk2MCwgNDg5NjgsIDQ4OTc2LCA0ODk4NSwgNDg5ODksIDQ4OTk4LCAKKyAgICA0OTAwMywgNDkwMDcsIDQ5MDE0LCA0OTAxOCwgNDkwMjUsIDQ5MDMzLCA0OTAzOCwgNDkwNDYsIDQ5MDUwLCA0OTA1NSwgCisgICAgNDkwNTksIDQ5MDY0LCA0OTA2OCwgNDkwNzMsIDQ5MDc4LCA0OTA4NywgNDkwODksIDQ5MDkyLCA0OTA5NSwgNDkxMDIsIAorICAgIDQ5MTA5LCA0OTExNCwgNDkxMjIsIDQ5MTI4LCA0OTEzNCwgNDkxMzksIDQ5MTQyLCA0OTE0NywgNDkxNTIsIDQ5MTU3LCAKKyAgICA0OTE2NSwgNDkxNjksIDQ5MTc2LCA0OTE4NCwgNDkxOTIsIDQ5MTk3LCA0OTIwMiwgNDkyMDgsIDQ5MjEzLCA0OTIxOCwgCisgICAgNDkyMjQsIDQ5MjI5LCA0OTIzMiwgNDkyMzYsIDQ5MjQwLCA0OTI0NywgNDkyNTYsIDQ5MjYxLCA0OTI3MCwgNDkyNzksIAorICAgIDQ5Mjg1LCA0OTI5MSwgNDkyOTYsIDQ5MzAxLCA0OTMwNiwgNDkzMTEsIDQ5MzE3LCA0OTMyMywgNDkzMzEsIDQ5MzM5LCAKKyAgICA0OTM0NSwgNDkzNTEsIDQ5MzU2LCA0OTM2MSwgNDkzNjgsIDQ5Mzc1LCA0OTM4MSwgNDkzODQsIDQ5Mzg3LCA0OTM5MSwgCisgICAgNDkzOTUsIDQ5Mzk5LCA0OTQwNCwgNDk0MTAsIDQ5NDE2LCA0OTQyMywgNDk0MzAsIDQ5NDM1LCA0OTQzOSwgNDk0NDMsIAorICAgIDQ5NDQ3LCA0OTQ1MSwgNDk0NTUsIDQ5NDU5LCA0OTQ2MywgNDk0NjcsIDQ5NDcxLCA0OTQ3NSwgNDk0NzksIDQ5NDgzLCAKKyAgICA0OTQ4NywgNDk0OTEsIDQ5NDk1LCA0OTQ5OSwgNDk1MDMsIDQ5NTA3LCA0OTUxMSwgNDk1MTUsIDQ5NTE5LCA0OTUyMywgCisgICAgNDk1MjcsIDQ5NTMxLCA0OTUzNSwgNDk1MzksIDQ5NTQzLCA0OTU0NywgNDk1NTEsIDQ5NTU1LCA0OTU1OSwgNDk1NjMsIAorICAgIDQ5NTY3LCA0OTU3MSwgNDk1NzUsIDQ5NTc5LCA0OTU4MywgNDk1ODcsIDQ5NTkxLCA0OTU5NSwgNDk1OTksIDQ5NjAzLCAKKyAgICA0OTYwNywgNDk2MTEsIDQ5NjE1LCA0OTYxOSwgNDk2MjMsIDQ5NjI3LCA0OTYzMSwgNDk2MzUsIDQ5NjM5LCA0OTY0MywgCisgICAgNDk2NDcsIDQ5NjUxLCA0OTY1NSwgNDk2NTksIDQ5NjYzLCA0OTY2NywgNDk2NzEsIDQ5Njc1LCA0OTY3OSwgNDk2ODMsIAorICAgIDQ5Njg3LCA0OTY5MSwgNDk2OTUsIDQ5Njk5LCA0OTcwMywgNDk3MDcsIDQ5NzExLCA0OTcxNSwgNDk3MTksIDQ5NzIzLCAKKyAgICA0OTcyNywgNDk3MzEsIDQ5NzM1LCA0OTczOSwgNDk3NDMsIDQ5NzQ3LCA0OTc1MSwgNDk3NTUsIDQ5NzU5LCA0OTc2MywgCisgICAgNDk3NjcsIDQ5NzcxLCA0OTc3NSwgNDk3NzksIDQ5NzgzLCA0OTc4NywgNDk3OTEsIDQ5Nzk1LCA0OTc5OSwgNDk4MDMsIAorICAgIDQ5ODA3LCA0OTgxMSwgNDk4MTUsIDQ5ODE5LCA0OTgyMywgNDk4MjcsIDQ5ODMxLCA0OTgzNSwgNDk4MzksIDQ5ODQzLCAKKyAgICA0OTg0NywgNDk4NTEsIDQ5ODU1LCA0OTg1OSwgNDk4NjMsIDQ5ODY3LCA0OTg3MSwgNDk4NzUsIDQ5ODc5LCA0OTg4MywgCisgICAgNDk4ODcsIDQ5ODkxLCA0OTg5NSwgNDk4OTksIDQ5OTAzLCA0OTkwNywgNDk5MTEsIDQ5OTE1LCA0OTkxOSwgNDk5MjMsIAorICAgIDQ5OTI3LCA0OTkzMSwgNDk5MzUsIDQ5OTM5LCA0OTk0MywgNDk5NDcsIDQ5OTUxLCA0OTk1NSwgNDk5NTksIDQ5OTYzLCAKKyAgICA0OTk2NywgNDk5NzEsIDQ5OTc1LCA0OTk3OSwgNDk5ODMsIDQ5OTg3LCA0OTk5MSwgNDk5OTUsIDQ5OTk5LCA1MDAwMywgCisgICAgNTAwMDcsIDUwMDExLCA1MDAxNSwgNTAwMTksIDUwMDIzLCA1MDAyNywgNTAwMzEsIDUwMDM1LCA1MDAzOSwgNTAwNDMsIAorICAgIDUwMDQ3LCA1MDA1MSwgNTAwNTUsIDUwMDU5LCA1MDA2MywgNTAwNjcsIDUwMDcxLCA1MDA3NSwgNTAwNzksIDUwMDgzLCAKKyAgICA1MDA4NywgNTAwOTEsIDUwMDk1LCA1MDA5OSwgNTAxMDMsIDUwMTA3LCA1MDExMSwgNTAxMTUsIDUwMTE5LCA1MDEyMywgCisgICAgNTAxMjcsIDUwMTMxLCA1MDEzNSwgNTAxMzksIDUwMTQzLCA1MDE0NywgNTAxNTEsIDUwMTU1LCA1MDE1OSwgNTAxNjMsIAorICAgIDUwMTY3LCA1MDE3MSwgNTAxNzUsIDUwMTc5LCA1MDE4MywgNTAxODcsIDUwMTkxLCA1MDE5NSwgNTAxOTksIDUwMjAzLCAKKyAgICA1MDIwNywgNTAyMTEsIDUwMjE1LCA1MDIxOSwgNTAyMjMsIDUwMjI3LCA1MDIzMSwgNTAyMzUsIDUwMjM5LCA1MDI0MywgCisgICAgNTAyNDcsIDUwMjUxLCA1MDI1NSwgNTAyNTksIDUwMjYzLCA1MDI2NywgNTAyNzEsIDUwMjc1LCA1MDI3OSwgNTAyODMsIAorICAgIDUwMjg3LCA1MDI5MSwgNTAyOTUsIDUwMjk5LCA1MDMwMywgNTAzMDcsIDUwMzExLCA1MDMxNSwgNTAzMTksIDUwMzIzLCAKKyAgICA1MDMyNywgNTAzMzEsIDUwMzM1LCA1MDMzOSwgNTAzNDMsIDUwMzQ3LCA1MDM1MSwgNTAzNTUsIDUwMzU5LCA1MDM2MywgCisgICAgNTAzNjcsIDUwMzcxLCA1MDM3NSwgNTAzNzksIDUwMzgzLCA1MDM4NywgNTAzOTEsIDUwMzk1LCA1MDM5OSwgNTA0MDMsIAorICAgIDUwNDA3LCA1MDQxMSwgNTA0MTUsIDUwNDE5LCA1MDQyMywgNTA0MjcsIDUwNDMxLCA1MDQzNSwgNTA0MzksIDUwNDQzLCAKKyAgICA1MDQ0NywgNTA0NTEsIDUwNDU1LCA1MDQ1OSwgNTA0NjYsIDUwNDc0LCA1MDQ4MCwgNTA0ODYsIDUwNDkzLCA1MDUwMCwgCisgICAgNTA1MDYsIDUwNTEyLCA1MDUxOCwgNTA1MjQsIDUwNTI5LCA1MDUzNCwgNTA1MzksIDUwNTQ0LCA1MDU1MCwgNTA1NTYsIAorICAgIDUwNTY0LCA1MDU3MSwgNTA1NzcsIDUwNTgzLCA1MDU5MSwgNTA2MDAsIDUwNjA3LCA1MDYxNywgNTA2MjgsIDUwNjMxLCAKKyAgICA1MDYzNCwgNTA2MzgsIDUwNjQyLCA1MDY0OSwgNTA2NTYsIDUwNjY3LCA1MDY3OCwgNTA2ODgsIDUwNjk4LCA1MDcwNSwgCisgICAgNTA3MTIsIDUwNzE5LCA1MDcyNiwgNTA3MzcsIDUwNzQ4LCA1MDc1OSwgNTA3NzAsIDUwNzgwLCA1MDc5MCwgNTA4MDIsIAorICAgIDUwODE0LCA1MDgyNSwgNTA4MzYsIDUwODQ4LCA1MDg2MCwgNTA4NjksIDUwODc5LCA1MDg4OSwgNTA5MDAsIDUwOTExLCAKKyAgICA1MDkxOCwgNTA5MjUsIDUwOTMyLCA1MDkzOSwgNTA5NDksIDUwOTU5LCA1MDk2NywgNTA5NzUsIDUwOTgyLCA1MDk4OSwgCisgICAgNTA5OTYsIDUxMDAzLCA1MTAxMCwgNTEwMTUsIDUxMDIwLCA1MTAyNiwgNTEwMzQsIDUxMDQ0LCA1MTA1NCwgNTEwNjQsIAorICAgIDUxMDc0LCA1MTA4NCwgNTEwOTQsIDUxMTA0LCA1MTExNCwgNTExMjQsIDUxMTM0LCA1MTE0NCwgNTExNTUsIDUxMTY2LCAKKyAgICA1MTE3NiwgNTExODYsIDUxMTk3LCA1MTIwOCwgNTEyMTgsIDUxMjI4LCA1MTIzOSwgNTEyNTAsIDUxMjYwLCA1MTI3MCwgCisgICAgNTEyODEsIDUxMjkyLCA1MTMwOCwgNTEzMjcsIDUxMzQzLCA1MTM2MiwgNTEzNzgsIDUxMzk0LCA1MTQxMCwgNTE0MjYsIAorICAgIDUxNDM3LCA1MTQ0OSwgNTE0NjAsIDUxNDcyLCA1MTQ5MSwgNTE1MTAsIDUxNTE4LCA1MTUyNCwgNTE1MzEsIDUxNTM4LCAKKyAgICA1MTU0NSwgNTE1NTIsIDUxNTU3LCA1MTU2MywgNTE1NjgsIDUxNTczLCA1MTU3OSwgNTE1ODQsIDUxNTg5LCA1MTU5NCwgCisgICAgNTE1OTksIDUxNjA0LCA1MTYxMSwgNTE2MTYsIDUxNjIzLCA1MTYyOCwgNTE2MzMsIDUxNjM3LCA1MTY0MSwgNTE2NDgsIAorICAgIDUxNjU1LCA1MTY2MiwgNTE2NjksIDUxNjc2LCA1MTY4MywgNTE2OTYsIDUxNzA5LCA1MTcyMiwgNTE3MzUsIDUxNzQzLCAKKyAgICA1MTc1MSwgNTE3NTcsIDUxNzYzLCA1MTc3MCwgNTE3NzcsIDUxNzg0LCA1MTc5MSwgNTE3OTUsIDUxODAwLCA1MTgwOCwgCisgICAgNTE4MTYsIDUxODI0LCA1MTgzMSwgNTE4MzUsIDUxODQzLCA1MTg1MSwgNTE4NTUsIDUxODU5LCA1MTg2NCwgNTE4NzEsIAorICAgIDUxODc5LCA1MTg4NywgNTE5MDYsIDUxOTI1LCA1MTk0NCwgNTE5NjMsIDUxOTgyLCA1MjAwMSwgNTIwMjAsIDUyMDM5LCAKKyAgICA1MjA0NSwgNTIwNTIsIDUyMDYxLCA1MjA2OSwgNTIwNzcsIDUyMDgyLCA1MjA4NSwgNTIwODgsIDUyMDkzLCA1MjA5NiwgCisgICAgNTIxMTUsIDUyMTIyLCA1MjEyOCwgNTIxMzQsIDUyMTM4LCA1MjE0MSwgNTIxNDQsIDUyMTQ3LCA1MjE1OSwgNTIxNzIsIAorICAgIDUyMTc5LCA1MjE4NiwgNTIxODksIDUyMTkzLCA1MjE5NiwgNTIyMDEsIDUyMjA2LCA1MjIxMSwgNTIyMTcsIDUyMjI2LCAKKyAgICA1MjIzMywgNTIyNDAsIDUyMjQ4LCA1MjI1NSwgNTIyNjIsIDUyMjY1LCA1MjI3MSwgNTIyNzcsIDUyMjgwLCA1MjI4MywgCisgICAgNTIyODgsIDUyMjkzLCA1MjI5OSwgNTIzMDUsIDUyMzA5LCA1MjMxNCwgNTIzMjEsIDUyMzI1LCA1MjMzMSwgNTIzMzUsIAorICAgIDUyMzM5LCA1MjM0NywgNTIzNTksIDUyMzY4LCA1MjM3MiwgNTIzNzQsIDUyMzgzLCA1MjM5MiwgNTIzOTgsIDUyNDAxLCAKKyAgICA1MjQwNywgNTI0MTMsIDUyNDE4LCA1MjQyMywgNTI0MjgsIDUyNDMzLCA1MjQzOCwgNTI0NDMsIDUyNDQ1LCA1MjQ1MSwgCisgICAgNTI0NTYsIDUyNDYzLCA1MjQ2NywgNTI0NzMsIDUyNDc2LCA1MjQ4MCwgNTI0ODcsIDUyNDk0LCA1MjQ5NiwgNTI0OTgsIAorICAgIDUyNTA0LCA1MjUxMCwgNTI1MTYsIDUyNTI1LCA1MjUzNCwgNTI1NDEsIDUyNTQ4LCA1MjU1NCwgNTI1NjAsIDUyNTY1LCAKKyAgICA1MjU3MCwgNTI1NzUsIDUyNTgxLCA1MjU4NywgNTI1OTIsIDUyNTk5LCA1MjYwMywgNTI2MDcsIDUyNjIwLCA1MjYzMywgCisgICAgNTI2NDUsIDUyNjU0LCA1MjY2MCwgNTI2NjcsIDUyNjcyLCA1MjY3NywgNTI2ODIsIDUyNjg3LCA1MjY5MiwgNTI2OTQsIAorICAgIDUyNzAxLCA1MjcwOCwgNTI3MTUsIDUyNzIyLCA1MjcyOSwgNTI3MzcsIDUyNzQzLCA1Mjc0OCwgNTI3NTQsIDUyNzYwLCAKKyAgICA1Mjc2NiwgNTI3NzMsIDUyNzc5LCA1Mjc4NywgNTI3OTUsIDUyODAzLCA1MjgxMSwgNTI4MTgsIDUyODI0LCA1MjgzMCwgCisgICAgNTI4MzksIDUyODQzLCA1Mjg1MiwgNTI4NjEsIDUyODcwLCA1Mjg3OCwgNTI4ODIsIDUyODg4LCA1Mjg5NSwgNTI5MDIsIAorICAgIDUyOTA2LCA1MjkxMiwgNTI5MTksIDUyOTI0LCA1MjkyOSwgNTI5MzUsIDUyOTQwLCA1Mjk0NSwgNTI5NTIsIDUyOTU5LCAKKyAgICA1Mjk2NCwgNTI5NjksIDUyOTc3LCA1Mjk4NSwgNTI5OTUsIDUzMDA1LCA1MzAxMiwgNTMwMTksIDUzMDIzLCA1MzAyNywgCisgICAgNTMwMzksIDUzMDQ1LCA1MzA1MSwgNTMwNTYsIDUzMDYxLCA1MzA2OCwgNTMwNzUsIDUzMDgxLCA1MzA4NywgNTMwOTYsIAorICAgIDUzMTA0LCA1MzExMiwgNTMxMTksIDUzMTI2LCA1MzEzMywgNTMxMzksIDUzMTQ2LCA1MzE1MiwgNTMxNTksIDUzMTY2LCAKKyAgICA1MzE3MywgNTMxODAsIDUzMTg2LCA1MzE5MSwgNTMyMDAsIDUzMjEwLCA1MzIxNywgNTMyMjYsIDUzMjMyLCA1MzIzNywgCisgICAgNTMyNDIsIDUzMjUyLCA1MzI1OCwgNTMyNjQsIDUzMjcwLCA1MzI3OCwgNTMyODMsIDUzMjkwLCA1MzI5NywgNTMzMDgsIAorICAgIDUzMzE1LCA1MzMyMiwgNTMzMjksIDUzMzM2LCA1MzM0MywgNTMzNTAsIDUzMzU3LCA1MzM2OSwgNTMzODEsIDUzMzkyLCAKKyAgICA1MzQwMywgNTM0MTYsIDUzNDI5LCA1MzQzNCwgNTM0MzksIDUzNDQ4LCA1MzQ1NywgNTM0NjQsIDUzNDcxLCA1MzQ4MCwgCisgICAgNTM0ODksIDUzNDk3LCA1MzUwNSwgNTM1MTMsIDUzNTIxLCA1MzUzMSwgNTM1NDEsIDUzNTU1LCA1MzU2OSwgNTM1NzcsIAorICAgIDUzNTg1LCA1MzU5NywgNTM2MDksIDUzNjE3LCA1MzYyNSwgNTM2MzUsIDUzNjQ1LCA1MzY1MCwgNTM2NTUsIDUzNjY0LCAKKyAgICA1MzY3MywgNTM2NzgsIDUzNjgzLCA1MzY5MSwgNTM2OTcsIDUzNzAzLCA1MzcxMSwgNTM3MTksIDUzNzMyLCA1Mzc0NSwgCisgICAgNTM3NDksIDUzNzUzLCA1Mzc2MCwgNTM3NjcsIDUzNzc0LCA1Mzc4MiwgNTM3OTAsIDUzNzk5LCA1MzgwOCwgNTM4MTQsIAorICAgIDUzODIwLCA1MzgyNywgNTM4MzQsIDUzODQxLCA1Mzg0OCwgNTM4NTcsIDUzODY2LCA1Mzg2OSwgNTM4NzIsIDUzODc3LCAKKyAgICA1Mzg4MiwgNTM4ODgsIDUzODk0LCA1MzkwMSwgNTM5MDgsIDUzOTE4LCA1MzkyOCwgNTM5MzUsIDUzOTQyLCA1Mzk1MCwgCisgICAgNTM5NTgsIDUzOTY2LCA1Mzk3NCwgNTM5ODIsIDUzOTkwLCA1Mzk5NiwgNTQwMDIsIDU0MDA2LCA1NDAxMCwgNTQwMTcsIAorICAgIDU0MDI0LCA1NDAyOSwgNTQwMzQsIDU0MDM5LCA1NDA0NCwgNTQwNTAsIDU0MDY0LCA1NDA3MSwgNTQwNzgsIDU0MDgyLCAKKyAgICA1NDA4NCwgNTQwODYsIDU0MDkxLCA1NDA5NiwgNTQxMDEsIDU0MTA2LCA1NDExNCwgNTQxMjEsIDU0MTI4LCA1NDEzNiwgCisgICAgNTQxNDgsIDU0MTU2LCA1NDE2NCwgNTQxNzUsIDU0MTc5LCA1NDE4MywgNTQxODksIDU0MTk3LCA1NDIxMCwgNTQyMTcsIAorICAgIDU0MjI0LCA1NDIzMSwgNTQyMzYsIDU0MjQzLCA1NDI1MiwgNTQyNjAsIDU0MjY2LCA1NDI3MiwgNTQyNzgsIDU0Mjg3LCAKKyAgICA1NDI5NiwgNTQzMDQsIDU0MzEzLCA1NDMxOCwgNTQzMjEsIDU0MzI2LCA1NDMzMiwgNTQzMzgsIDU0MzQ0LCA1NDM1MCwgCisgICAgNTQzNTQsIDU0MzU3LCA1NDM2MSwgNTQzNjUsIDU0MzcxLCA1NDM3NywgNTQzODMsIDU0Mzg5LCA1NDM5MywgNTQzOTcsIAorICAgIDU0NDA0LCA1NDQxMSwgNTQ0MTgsIDU0NDI1LCA1NDQzMiwgNTQ0MzksIDU0NDQ5LCA1NDQ1OSwgNTQ0NjYsIDU0NDczLCAKKyAgICA1NDQ4MSwgNTQ0ODksIDU0NDkzLCA1NDQ5OCwgNTQ1MDMsIDU0NTA5LCA1NDUxNSwgNTQ1MTgsIDU0NTIxLCA1NDUyNCwgCisgICAgNTQ1MjcsIDU0NTMxLCA1NDUzNiwgNTQ1NDEsIDU0NTQ2LCA1NDU1MSwgNTQ1NTYsIDU0NTYwLCA1NDU2NCwgNTQ1NjgsIAorICAgIDU0NTcyLCA1NDU3NiwgNTQ1ODAsIDU0NTg0LCA1NDU5MCwgNTQ1OTQsIDU0NjAwLCA1NDYwNSwgNTQ2MTIsIDU0NjIwLCAKKyAgICA1NDYyNywgNTQ2MzUsIDU0NjQyLCA1NDY1MCwgNTQ2NTksIDU0NjY2LCA1NDY3NiwgNTQ2ODcsIDU0NjkzLCA1NDcwMiwgCisgICAgNTQ3MDgsIDU0NzE3LCA1NDcyNiwgNTQ3MzIsIDU0NzM4LCA1NDc0MiwgNTQ3NDYsIDU0NzU1LCA1NDc2NCwgNTQ3NzEsIAorICAgIDU0Nzc4LCA1NDc4NywgMCwgMCwgMCwgNTQ3OTYsIDU0ODAxLCA1NDgwNSwgNTQ4MDksIDU0ODE0LCA1NDgxOSwgNTQ4MjQsIAorICAgIDU0ODMyLCA1NDg0MCwgNTQ4NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU0ODQ3LCA1NDg1MiwgNTQ4NTcsIDU0ODYyLCA1NDg2NywgNTQ4NzIsIDU0ODc3LCA1NDg4MiwgCisgICAgNTQ4ODcsIDU0ODkyLCA1NDg5NywgNTQ5MDMsIDU0OTA3LCA1NDkxMiwgNTQ5MTcsIDU0OTIyLCA1NDkyNywgNTQ5MzIsIAorICAgIDU0OTM3LCA1NDk0MiwgNTQ5NDcsIDU0OTUyLCA1NDk1NywgNTQ5NjIsIDU0OTY3LCA1NDk3MiwgNTQ5NzcsIDU0OTgyLCAKKyAgICA1NDk4NywgNTQ5OTIsIDU0OTk3LCA1NTAwMiwgNTUwMDcsIDU1MDEyLCA1NTAxNywgNTUwMjMsIDU1MDI4LCA1NTAzNCwgCisgICAgNTUwNDMsIDU1MDQ4LCA1NTA1NiwgNTUwNjMsIDU1MDcyLCA1NTA3NywgNTUwODIsIDU1MDg3LCA1NTA5MywgMCwgNTUxMDAsIAorICAgIDU1MTA1LCA1NTExMCwgNTUxMTUsIDU1MTIwLCA1NTEyNSwgNTUxMzAsIDU1MTM1LCA1NTE0MCwgNTUxNDUsIDU1MTUwLCAKKyAgICA1NTE1NiwgNTUxNjAsIDU1MTY1LCA1NTE3MCwgNTUxNzUsIDU1MTgwLCA1NTE4NSwgNTUxOTAsIDU1MTk1LCA1NTIwMCwgCisgICAgNTUyMDUsIDU1MjEwLCA1NTIxNSwgNTUyMjAsIDU1MjI1LCA1NTIzMCwgNTUyMzUsIDU1MjQwLCA1NTI0NSwgNTUyNTAsIAorICAgIDU1MjU1LCA1NTI2MCwgNTUyNjUsIDU1MjcwLCA1NTI3NiwgNTUyODEsIDU1Mjg3LCA1NTI5NiwgNTUzMDEsIDU1MzA5LCAKKyAgICA1NTMxNiwgNTUzMjUsIDU1MzMwLCA1NTMzNSwgNTUzNDAsIDU1MzQ2LCAwLCA1NTM1MywgNTUzNjEsIDU1MzY5LCA1NTM3OCwgCisgICAgNTUzODUsIDU1MzkzLCA1NTM5OSwgNTU0MDgsIDU1NDE2LCA1NTQyNCwgNTU0MzIsIDU1NDQwLCA1NTQ0OCwgNTU0NTYsIAorICAgIDU1NDYxLCA1NTQ2OCwgNTU0NzQsIDU1NDgxLCA1NTQ4OSwgNTU0OTYsIDU1NTAzLCA1NTUxMSwgNTU1MTcsIDU1NTIzLCAKKyAgICA1NTUzMCwgNTU1MzcsIDU1NTQ3LCA1NTU1NywgNTU1NjQsIDU1NTcxLCA1NTU3NiwgNTU1ODYsIDU1NTk2LCA1NTYwMSwgCisgICAgNTU2MDYsIDU1NjExLCA1NTYxNiwgNTU2MjEsIDU1NjI2LCA1NTYzMSwgNTU2MzYsIDU1NjQxLCA1NTY0NiwgNTU2NTEsIAorICAgIDU1NjU2LCA1NTY2MSwgNTU2NjYsIDU1NjcxLCA1NTY3NiwgNTU2ODEsIDU1Njg2LCA1NTY5MSwgNTU2OTYsIDU1NzAxLCAKKyAgICA1NTcwNiwgNTU3MTEsIDU1NzE2LCA1NTcyMSwgNTU3MjYsIDU1NzMxLCA1NTczNiwgNTU3NDEsIDU1NzQ2LCA1NTc1MCwgCisgICAgNTU3NTQsIDU1NzU5LCA1NTc2NCwgNTU3NjksIDU1Nzc0LCA1NTc3OSwgNTU3ODQsIDU1Nzg5LCA1NTc5NCwgNTU3OTksIAorICAgIDU1ODA0LCA1NTgwOSwgNTU4MTQsIDU1ODE5LCA1NTgyNCwgNTU4MjksIDU1ODM0LCA1NTgzOSwgNTU4NDQsIDU1ODUxLCAKKyAgICA1NTg1OCwgNTU4NjUsIDU1ODcyLCA1NTg3OSwgNTU4ODYsIDU1ODkzLCA1NTkwMCwgNTU5MDcsIDU1OTE0LCA1NTkyMSwgCisgICAgNTU5MjgsIDU1OTM1LCA1NTk0MiwgNTU5NDcsIDU1OTUyLCA1NTk1OSwgNTU5NjYsIDU1OTczLCA1NTk4MCwgNTU5ODcsIAorICAgIDU1OTk0LCA1NjAwMSwgNTYwMDgsIDU2MDE1LCA1NjAyMiwgNTYwMjksIDU2MDM2LCA1NjA0MiwgNTYwNDgsIDU2MDU0LCAKKyAgICA1NjA2MCwgNTYwNjcsIDU2MDc0LCA1NjA4MSwgNTYwODgsIDU2MDk1LCA1NjEwMiwgNTYxMDksIDU2MTE2LCA1NjEyMywgCisgICAgNTYxMzAsIDU2MTM4LCA1NjE0NiwgNTYxNTQsIDU2MTYyLCA1NjE3MCwgNTYxNzgsIDU2MTg2LCA1NjE5NCwgNTYxOTgsIAorICAgIDU2MjA0LCA1NjIxMCwgNTYyMTQsIDU2MjIwLCA1NjIyNiwgNTYyMzIsIDU2MjM5LCA1NjI0NiwgNTYyNTMsIDU2MjYwLCAKKyAgICA1NjI2NSwgNTYyNzEsIDU2Mjc3LCA1NjI4NCwgMCwgMCwgMCwgMCwgMCwgNTYyOTEsIDU2Mjk5LCA1NjMwOCwgNTYzMTcsIAorICAgIDU2MzI1LCA1NjMzMSwgNTYzMzYsIDU2MzQxLCA1NjM0NiwgNTYzNTEsIDU2MzU2LCA1NjM2MSwgNTYzNjYsIDU2MzcxLCAKKyAgICA1NjM3NiwgNTYzODEsIDU2Mzg2LCA1NjM5MSwgNTYzOTYsIDU2NDAxLCA1NjQwNiwgNTY0MTEsIDU2NDE2LCA1NjQyMSwgCisgICAgNTY0MjYsIDU2NDMxLCA1NjQzNiwgNTY0NDEsIDU2NDQ2LCA1NjQ1MSwgNTY0NTYsIDU2NDYxLCA1NjQ2NiwgNTY0NzEsIAorICAgIDU2NDc2LCA1NjQ4MSwgNTY0ODYsIDU2NDkxLCA1NjQ5NiwgNTY1MDEsIDU2NTA2LCA1NjUxMSwgNTY1MTYsIDU2NTIxLCAKKyAgICA1NjUyNiwgMCwgNTY1MzEsIDAsIDAsIDAsIDAsIDAsIDU2NTM2LCAwLCAwLCA1NjU0MSwgNTY1NDUsIDU2NTUwLCA1NjU1NSwgCisgICAgNTY1NjAsIDU2NTY1LCA1NjU3NCwgNTY1NzksIDU2NTg0LCA1NjU4OSwgNTY1OTQsIDU2NTk5LCA1NjYwNCwgNTY2MDksIAorICAgIDU2NjE0LCA1NjYyMSwgNTY2MjYsIDU2NjMxLCA1NjY0MCwgNTY2NDcsIDU2NjUyLCA1NjY1NywgNTY2NjIsIDU2NjY5LCAKKyAgICA1NjY3NCwgNTY2ODEsIDU2Njg2LCA1NjY5MSwgNTY2OTgsIDU2NzA1LCA1NjcxMCwgNTY3MTUsIDU2NzIwLCA1NjcyNywgCisgICAgNTY3MzQsIDU2NzM5LCA1Njc0NCwgNTY3NDksIDU2NzU0LCA1Njc1OSwgNTY3NjYsIDU2NzczLCA1Njc3OCwgNTY3ODMsIAorICAgIDU2Nzg4LCA1Njc5MywgNTY3OTgsIDU2ODAzLCA1NjgwOCwgNTY4MTMsIDU2ODE4LCA1NjgyMywgNTY4MjgsIDU2ODM1LCAKKyAgICA1Njg0MCwgNTY4NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2ODUwLCA1Njg1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTY4NjIsIDU2ODY3LCA1Njg3MSwgNTY4NzUsIDU2ODc5LCA1Njg4MywgNTY4ODcsIDU2ODkxLCAKKyAgICA1Njg5NSwgNTY4OTksIDU2OTAzLCA1NjkwNywgNTY5MTMsIDU2OTE3LCA1NjkyMSwgNTY5MjUsIDU2OTI5LCA1NjkzMywgCisgICAgNTY5MzcsIDU2OTQxLCA1Njk0NSwgNTY5NDksIDU2OTUzLCA1Njk1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTY5NjEsIDU2OTY1LCA1Njk2OSwgNTY5NzMsIDU2OTc3LCA1Njk4MSwgNTY5ODUsIDAsIDU2OTg5LCA1Njk5MywgNTY5OTcsIAorICAgIDU3MDAxLCA1NzAwNSwgNTcwMDksIDU3MDEzLCAwLCA1NzAxNywgNTcwMjEsIDU3MDI1LCA1NzAyOSwgNTcwMzMsIDU3MDM3LCAKKyAgICA1NzA0MSwgMCwgNTcwNDUsIDU3MDQ5LCA1NzA1MywgNTcwNTcsIDU3MDYxLCA1NzA2NSwgNTcwNjksIDAsIDU3MDczLCAKKyAgICA1NzA3NywgNTcwODEsIDU3MDg1LCA1NzA4OSwgNTcwOTMsIDU3MDk3LCAwLCA1NzEwMSwgNTcxMDUsIDU3MTA5LCA1NzExMywgCisgICAgNTcxMTcsIDU3MTIxLCA1NzEyNSwgMCwgNTcxMjksIDU3MTMzLCA1NzEzNywgNTcxNDEsIDU3MTQ1LCA1NzE0OSwgNTcxNTMsIAorICAgIDAsIDU3MTU3LCA1NzE2MSwgNTcxNjUsIDU3MTY5LCA1NzE3MywgNTcxNzcsIDU3MTgxLCAwLCA1NzE4NSwgNTcxOTAsIAorICAgIDU3MTk1LCA1NzIwMCwgNTcyMDUsIDU3MjEwLCA1NzIxNSwgNTcyMTksIDU3MjI0LCA1NzIyOSwgNTcyMzQsIDU3MjM4LCAKKyAgICA1NzI0MywgNTcyNDgsIDU3MjUzLCA1NzI1OCwgNTcyNjIsIDU3MjY3LCA1NzI3MiwgNTcyNzcsIDU3MjgyLCA1NzI4NywgCisgICAgNTcyOTIsIDU3Mjk2LCA1NzMwMSwgNTczMDYsIDU3MzEzLCA1NzMxOCwgNTczMjMsIDU3MzI5LCA1NzMzNiwgNTczNDMsIAorICAgIDU3MzUyLCA1NzM1OSwgNTczNjgsIDU3MzcyLCA1NzM3NiwgNTczODIsIDU3Mzg4LCA1NzM5NCwgNTc0MDIsIDU3NDA4LCAKKyAgICA1NzQxMiwgNTc0MTYsIDU3NDIwLCA1NzQyNiwgNTc0MzIsIDU3NDM2LCA1NzQzOCwgNTc0NDIsIDU3NDQ4LCA1NzQ1MCwgCisgICAgNTc0NTQsIDU3NDU4LCA1NzQ2MiwgNTc0NjgsIDU3NDczLCA1NzQ3NywgNTc0ODEsIDU3NDg2LCA1NzQ5MiwgNTc0OTcsIAorICAgIDU3NTAyLCA1NzUwNywgNTc1MTIsIDU3NTE5LCA1NzUyNiwgNTc1MzEsIDU3NTM2LCA1NzU0MSwgNTc1NDYsIDU3NTUxLCAKKyAgICA1NzU1NiwgNTc1NjAsIDU3NTY0LCA1NzU3MSwgNTc1NzgsIDU3NTg0LCA1NzU4OCwgNTc1OTMsIDU3NTk1LCA1NzU5OSwgCisgICAgNTc2MDcsIDU3NjExLCA1NzYxNSwgNTc2MTksIDU3NjIzLCA1NzYyOSwgNTc2MzUsIDU3NjM5LCA1NzY0NSwgNTc2NDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NjUzLCA1NzY1NywgCisgICAgNTc2NjEsIDU3NjY2LCA1NzY3MSwgNTc2NzYsIDU3NjgwLCA1NzY4NCwgNTc2ODgsIDU3NjkzLCA1NzY5OCwgNTc3MDIsIAorICAgIDU3NzA2LCA1NzcxMCwgNTc3MTQsIDU3NzE5LCA1NzcyNCwgNTc3MjksIDU3NzM0LCA1NzczOCwgNTc3NDIsIDU3NzQ3LCAKKyAgICA1Nzc1MiwgNTc3NTcsIDU3NzYyLCA1Nzc2NiwgMCwgNTc3NzAsIDU3Nzc0LCA1Nzc3OCwgNTc3ODIsIDU3Nzg2LCA1Nzc5MCwgCisgICAgNTc3OTQsIDU3Nzk5LCA1NzgwNCwgNTc4MDgsIDU3ODEzLCA1NzgxOCwgNTc4MjcsIDU3ODMxLCA1NzgzNSwgNTc4MzksIAorICAgIDU3ODQ2LCA1Nzg1MCwgNTc4NTUsIDU3ODYwLCA1Nzg2NCwgNTc4NjgsIDU3ODc0LCA1Nzg3OSwgNTc4ODQsIDU3ODg5LCAKKyAgICA1Nzg5NCwgNTc4OTgsIDU3OTAyLCA1NzkwNiwgNTc5MTAsIDU3OTE0LCA1NzkxOSwgNTc5MjQsIDU3OTI4LCA1NzkzMiwgCisgICAgNTc5MzcsIDU3OTQyLCA1Nzk0NywgNTc5NTEsIDU3OTU1LCA1Nzk2MCwgNTc5NjUsIDU3OTcxLCA1Nzk3NywgNTc5ODEsIAorICAgIDU3OTg3LCA1Nzk5MywgNTc5OTcsIDU4MDAzLCA1ODAwOSwgNTgwMTQsIDU4MDE5LCA1ODAyMywgNTgwMjksIDU4MDMzLCAKKyAgICA1ODAzNywgNTgwNDMsIDU4MDQ5LCA1ODA1NCwgNTgwNTksIDU4MDYzLCA1ODA2NywgNTgwNzUsIDU4MDgxLCA1ODA4NywgCisgICAgNTgwOTMsIDU4MDk4LCA1ODEwMywgNTgxMDgsIDU4MTE0LCA1ODExOCwgNTgxMjQsIDU4MTI4LCA1ODEzMiwgNTgxMzgsIAorICAgIDU4MTQ0LCA1ODE1MCwgNTgxNTYsIDU4MTYyLCA1ODE2OCwgNTgxNzQsIDU4MTgwLCA1ODE4NiwgNTgxOTIsIDU4MTk4LCAKKyAgICA1ODIwNCwgNTgyMDgsIDU4MjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODIyMCwgNTgyMjMsIAorICAgIDU4MjI3LCA1ODIzMSwgNTgyMzUsIDU4MjM5LCA1ODI0MiwgNTgyNDUsIDU4MjQ5LCA1ODI1MywgNTgyNTcsIDU4MjYxLCAKKyAgICA1ODI2NCwgNTgyNjksIDU4MjczLCA1ODI3NywgNTgyODEsIDU4Mjg2LCA1ODI5MCwgNTgyOTQsIDU4Mjk4LCA1ODMwMiwgCisgICAgNTgzMDgsIDU4MzE0LCA1ODMxOCwgNTgzMjIsIDU4MzI2LCA1ODMzMCwgNTgzMzQsIDU4MzM4LCA1ODM0MiwgNTgzNDYsIAorICAgIDU4MzUwLCA1ODM1NCwgNTgzNTgsIDU4MzY0LCA1ODM2OCwgNTgzNzIsIDU4Mzc2LCA1ODM4MCwgNTgzODQsIDU4Mzg4LCAKKyAgICA1ODM5MiwgNTgzOTYsIDU4NDAwLCA1ODQwNCwgNTg0MDgsIDU4NDEyLCA1ODQxNiwgNTg0MjAsIDU4NDI0LCA1ODQyOCwgCisgICAgNTg0MzQsIDU4NDQwLCA1ODQ0NSwgNTg0NTAsIDU4NDU0LCA1ODQ1OCwgNTg0NjIsIDU4NDY2LCA1ODQ3MCwgNTg0NzQsIAorICAgIDU4NDc4LCA1ODQ4MiwgNTg0ODYsIDU4NDkwLCA1ODQ5NCwgNTg0OTgsIDU4NTAyLCA1ODUwNiwgNTg1MTAsIDU4NTE0LCAKKyAgICA1ODUxOCwgNTg1MjIsIDU4NTI2LCA1ODUzMCwgNTg1MzQsIDU4NTM4LCA1ODU0MiwgNTg1NDYsIDU4NTUyLCA1ODU1NiwgCisgICAgNTg1NjAsIDU4NTY0LCA1ODU2OCwgNTg1NzIsIDU4NTc2LCA1ODU4MCwgNTg1ODQsIDU4NTg5LCA1ODU5NiwgNTg2MDAsIAorICAgIDU4NjA0LCA1ODYwOCwgNTg2MTIsIDU4NjE2LCA1ODYyMCwgNTg2MjQsIDU4NjI4LCA1ODYzMiwgNTg2MzYsIDU4NjQwLCAKKyAgICA1ODY0NCwgNTg2NTEsIDU4NjU1LCA1ODY2MSwgNTg2NjUsIDU4NjY5LCA1ODY3MywgNTg2NzcsIDU4NjgxLCA1ODY4NCwgCisgICAgNTg2ODgsIDU4NjkyLCA1ODY5NiwgNTg3MDAsIDU4NzA0LCA1ODcwOCwgNTg3MTIsIDU4NzE2LCA1ODcyMCwgNTg3MjQsIAorICAgIDU4NzI4LCA1ODczMiwgNTg3MzYsIDU4NzQwLCA1ODc0NCwgNTg3NDgsIDU4NzUyLCA1ODc1NiwgNTg3NjAsIDU4NzY0LCAKKyAgICA1ODc2OCwgNTg3NzIsIDU4Nzc2LCA1ODc4MCwgNTg3ODQsIDU4Nzg4LCA1ODc5MiwgNTg3OTYsIDU4ODAwLCA1ODgwNCwgCisgICAgNTg4MDgsIDU4ODEyLCA1ODgxOCwgNTg4MjIsIDU4ODI2LCA1ODgzMCwgNTg4MzQsIDU4ODM4LCA1ODg0MiwgNTg4NDYsIAorICAgIDU4ODUwLCA1ODg1NCwgNTg4NTgsIDU4ODYyLCA1ODg2NiwgNTg4NzAsIDU4ODc0LCA1ODg3OCwgNTg4ODIsIDU4ODg2LCAKKyAgICA1ODg5MCwgNTg4OTQsIDU4ODk4LCA1ODkwMiwgNTg5MDYsIDU4OTEwLCA1ODkxNCwgNTg5MTgsIDU4OTIyLCA1ODkyNiwgCisgICAgNTg5MzQsIDU4OTM4LCA1ODk0MiwgNTg5NDYsIDU4OTUwLCA1ODk1NCwgNTg5NjAsIDU4OTY0LCA1ODk2OCwgNTg5NzIsIAorICAgIDU4OTc2LCA1ODk4MCwgNTg5ODQsIDU4OTg4LCA1ODk5MiwgNTg5OTYsIDU5MDAwLCA1OTAwNCwgNTkwMDgsIDU5MDEyLCAKKyAgICA1OTAxOCwgNTkwMjIsIDU5MDI2LCA1OTAzMCwgNTkwMzQsIDU5MDM4LCA1OTA0MiwgNTkwNDYsIDU5MDUwLCA1OTA1NCwgCisgICAgNTkwNTgsIDU5MDYyLCA1OTA2NiwgNTkwNzAsIDU5MDc0LCA1OTA3OCwgNTkwODIsIDU5MDg2LCA1OTA5MCwgNTkwOTQsIAorICAgIDU5MDk4LCA1OTEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTkxMDYsIDU5MTE1LCA1OTEyMywgNTkxMzUsIDU5MTQ2LCA1OTE1NCwgNTkxNjMsIDU5MTcyLCAKKyAgICA1OTE4MiwgNTkxOTQsIDU5MjA2LCA1OTIxOCwgMCwgMCwgMCwgMCwgNTkyMjQsIDU5MjI3LCA1OTIzMCwgNTkyMzUsIAorICAgIDU5MjM4LCA1OTI0NSwgNTkyNDksIDU5MjUzLCA1OTI1NywgNTkyNjEsIDU5MjY1LCA1OTI3MCwgNTkyNzUsIDU5Mjc5LCAKKyAgICA1OTI4MywgNTkyODgsIDU5MjkzLCA1OTI5OCwgNTkzMDMsIDU5MzA2LCA1OTMwOSwgNTkzMTUsIDU5MzIxLCA1OTMyNiwgCisgICAgNTkzMzEsIDU5MzM4LCA1OTM0NSwgNTkzNDksIDU5MzUzLCA1OTM1NywgNTkzNjUsIDU5MzcxLCA1OTM3OCwgNTkzODMsIAorICAgIDU5Mzg4LCA1OTM5MywgNTkzOTgsIDU5NDAzLCA1OTQwOCwgNTk0MTMsIDU5NDE4LCA1OTQyMywgNTk0MjgsIDU5NDMzLCAKKyAgICA1OTQzOCwgNTk0NDMsIDU5NDQ4LCA1OTQ1NCwgNTk0NTksIDU5NDYzLCA1OTQ2OSwgNTk0ODAsIDU5NDkwLCA1OTUwNSwgCisgICAgNTk1MTUsIDU5NTE5LCA1OTUyOSwgNTk1MzUsIDU5NTQxLCA1OTU0NywgNTk1NTIsIDU5NTU1LCA1OTU2MCwgNTk1NjQsIDAsIAorICAgIDU5NTcwLCA1OTU3NCwgNTk1NzcsIDU5NTgxLCA1OTU4NCwgNTk1ODgsIDU5NTkxLCA1OTU5NSwgNTk1OTgsIDU5NjAyLCAKKyAgICA1OTYwNSwgNTk2MDgsIDU5NjEyLCA1OTYxNiwgNTk2MjAsIDU5NjI0LCA1OTYyOCwgNTk2MzIsIDU5NjM2LCA1OTY0MCwgCisgICAgNTk2NDQsIDU5NjQ3LCA1OTY1MSwgNTk2NTUsIDU5NjU5LCA1OTY2MywgNTk2NjcsIDU5NjcxLCA1OTY3NSwgNTk2NzksIAorICAgIDU5NjgzLCA1OTY4NywgNTk2OTEsIDU5Njk1LCA1OTY5OSwgNTk3MDQsIDU5NzA4LCA1OTcxMiwgNTk3MTYsIDU5NzIwLCAKKyAgICA1OTcyMywgNTk3MjcsIDU5NzMwLCA1OTczNCwgNTk3MzgsIDU5NzQyLCA1OTc0NiwgNTk3NDksIDU5NzUzLCA1OTc1NiwgCisgICAgNTk3NjAsIDU5NzY0LCA1OTc2OCwgNTk3NzIsIDU5Nzc2LCA1OTc4MCwgNTk3ODQsIDU5Nzg4LCA1OTc5MiwgNTk3OTYsIAorICAgIDU5ODAwLCA1OTgwNCwgNTk4MDcsIDU5ODExLCA1OTgxNSwgNTk4MTksIDU5ODIzLCA1OTgyNywgNTk4MzAsIDU5ODM1LCAKKyAgICA1OTgzOSwgNTk4NDQsIDU5ODQ4LCA1OTg1MSwgNTk4NTUsIDU5ODU5LCA1OTg2MywgNTk4NjcsIDU5ODcyLCA1OTg3NiwgCisgICAgNTk4ODAsIDU5ODg0LCA1OTg4OCwgNTk4OTIsIDU5ODk2LCA1OTkwMCwgMCwgMCwgNTk5MDUsIDU5OTEzLCA1OTkyMSwgCisgICAgNTk5MjgsIDU5OTM1LCA1OTkzOSwgNTk5NDUsIDU5OTUwLCA1OTk1NSwgNTk5NTksIDU5OTYyLCA1OTk2NiwgNTk5NjksIAorICAgIDU5OTczLCA1OTk3NiwgNTk5ODAsIDU5OTgzLCA1OTk4NywgNTk5OTAsIDU5OTkzLCA1OTk5NywgNjAwMDEsIDYwMDA1LCAKKyAgICA2MDAwOSwgNjAwMTMsIDYwMDE3LCA2MDAyMSwgNjAwMjUsIDYwMDI5LCA2MDAzMiwgNjAwMzYsIDYwMDQwLCA2MDA0NCwgCisgICAgNjAwNDgsIDYwMDUyLCA2MDA1NiwgNjAwNjAsIDYwMDY0LCA2MDA2OCwgNjAwNzIsIDYwMDc2LCA2MDA4MCwgNjAwODQsIAorICAgIDYwMDg5LCA2MDA5MywgNjAwOTcsIDYwMTAxLCA2MDEwNSwgNjAxMDgsIDYwMTEyLCA2MDExNSwgNjAxMTksIDYwMTIzLCAKKyAgICA2MDEyNywgNjAxMzEsIDYwMTM0LCA2MDEzOCwgNjAxNDEsIDYwMTQ1LCA2MDE0OSwgNjAxNTMsIDYwMTU3LCA2MDE2MSwgCisgICAgNjAxNjUsIDYwMTY5LCA2MDE3MywgNjAxNzcsIDYwMTgxLCA2MDE4NSwgNjAxODksIDYwMTkyLCA2MDE5NiwgNjAyMDAsIAorICAgIDYwMjA0LCA2MDIwOCwgNjAyMTIsIDYwMjE1LCA2MDIyMCwgNjAyMjQsIDYwMjI5LCA2MDIzMywgNjAyMzYsIDYwMjQwLCAKKyAgICA2MDI0NCwgNjAyNDgsIDYwMjUyLCA2MDI1NywgNjAyNjEsIDYwMjY1LCA2MDI2OSwgNjAyNzMsIDYwMjc3LCA2MDI4MSwgCisgICAgNjAyODUsIDYwMjkwLCA2MDI5NCwgNjAyOTgsIDYwMzAyLCA2MDMwNiwgNjAzMTEsIDYwMzE4LCA2MDMyMiwgNjAzMjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDYwMzMzLCA2MDMzOCwgNjAzNDMsIDYwMzQ3LCA2MDM1MiwgNjAzNTcsIDYwMzYyLCA2MDM2NywgCisgICAgNjAzNzEsIDYwMzc2LCA2MDM4MSwgNjAzODYsIDYwMzkxLCA2MDM5NiwgNjA0MDEsIDYwNDA2LCA2MDQxMSwgNjA0MTYsIAorICAgIDYwNDIwLCA2MDQyNSwgNjA0MzAsIDYwNDM1LCA2MDQzOSwgNjA0NDMsIDYwNDQ3LCA2MDQ1MiwgNjA0NTcsIDYwNDYyLCAKKyAgICA2MDQ2NywgNjA0NzIsIDYwNDc3LCA2MDQ4MiwgNjA0ODcsIDYwNDkyLCA2MDQ5NywgNjA1MDEsIDYwNTA1LCA2MDUxMCwgCisgICAgNjA1MTUsIDYwNTIwLCA2MDUyNSwgMCwgMCwgMCwgNjA1MzAsIDYwNTM0LCA2MDUzOCwgNjA1NDIsIDYwNTQ2LCA2MDU1MCwgCisgICAgNjA1NTQsIDYwNTU4LCA2MDU2MiwgNjA1NjYsIDYwNTcwLCA2MDU3NCwgNjA1NzgsIDYwNTgyLCA2MDU4NiwgNjA1OTAsIAorICAgIDYwNTk0LCA2MDU5OCwgNjA2MDIsIDYwNjA2LCA2MDYxMCwgNjA2MTQsIDYwNjE4LCA2MDYyMiwgNjA2MjYsIDYwNjMwLCAKKyAgICA2MDYzNCwgNjA2MzgsIDYwNjQyLCA2MDY0NiwgNjA2NTAsIDYwNjUzLCA2MDY1NywgNjA2NjAsIDYwNjY0LCA2MDY2OCwgCisgICAgNjA2NzEsIDYwNjc1LCA2MDY3OSwgNjA2ODIsIDYwNjg2LCA2MDY5MCwgNjA2OTQsIDYwNjk4LCA2MDcwMSwgNjA3MDUsIAorICAgIDYwNzA5LCA2MDcxMywgNjA3MTcsIDYwNzIxLCA2MDcyNSwgNjA3MjgsIDYwNzMxLCA2MDczNSwgNjA3MzksIDYwNzQzLCAKKyAgICA2MDc0NywgNjA3NTEsIDYwNzU1LCA2MDc1OSwgNjA3NjMsIDYwNzY3LCA2MDc3MSwgNjA3NzUsIDYwNzc5LCA2MDc4MywgCisgICAgNjA3ODcsIDYwNzkxLCA2MDc5NSwgNjA3OTksIDYwODAzLCA2MDgwNywgNjA4MTEsIDYwODE1LCA2MDgxOSwgNjA4MjMsIAorICAgIDYwODI3LCA2MDgzMSwgNjA4MzUsIDYwODM5LCA2MDg0MywgNjA4NDcsIDYwODUxLCA2MDg1NSwgNjA4NTksIDYwODYzLCAKKyAgICA2MDg2NywgNjA4NzEsIDYwODc1LCA2MDg3OSwgNjA4ODMsIDYwODg3LCA2MDg5MSwgNjA4OTUsIDAsIDYwODk5LCA2MDkwNSwgCisgICAgNjA5MTEsIDYwOTE2LCA2MDkyMSwgNjA5MjYsIDYwOTMyLCA2MDkzOCwgNjA5NDQsIDYwOTUwLCA2MDk1NiwgNjA5NjIsIAorICAgIDYwOTY4LCA2MDk3NCwgNjA5ODAsIDYwOTg2LCA2MDk5MiwgNjA5OTcsIDYxMDAyLCA2MTAwNywgNjEwMTIsIDYxMDE3LCAKKyAgICA2MTAyMiwgNjEwMjcsIDYxMDMyLCA2MTAzNywgNjEwNDIsIDYxMDQ3LCA2MTA1MiwgNjEwNTcsIDYxMDYyLCA2MTA2NywgCisgICAgNjEwNzIsIDYxMDc3LCA2MTA4MiwgNjEwODcsIDYxMDkyLCA2MTA5OCwgNjExMDQsIDYxMTEwLCA2MTExNiwgNjExMjEsIAorICAgIDYxMTI2LCAwLCAwLCAwLCAwLCAwLCA2MTEzMSwgNjExMzYsIDYxMTQxLCA2MTE0NiwgNjExNTEsIDYxMTU2LCA2MTE2MSwgCisgICAgNjExNjYsIDYxMTcxLCA2MTE3NiwgNjExODEsIDYxMTg2LCA2MTE5MSwgNjExOTYsIDYxMjAxLCA2MTIwNiwgNjEyMTEsIAorICAgIDYxMjE2LCA2MTIyMSwgNjEyMjYsIDYxMjMxLCA2MTIzNiwgNjEyNDEsIDYxMjQ2LCA2MTI1MSwgNjEyNTYsIDYxMjYxLCAKKyAgICA2MTI2NiwgNjEyNzEsIDYxMjc2LCA2MTI4MSwgNjEyODYsIDYxMjkxLCA2MTI5NiwgNjEzMDEsIDYxMzA2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTMxMSwgNjEzMTYsIDYxMzIxLCA2MTMyNiwgNjEzMzAsIDYxMzM1LCAKKyAgICA2MTMzOSwgNjEzNDQsIDYxMzQ5LCA2MTM1NCwgNjEzNTksIDYxMzY0LCA2MTM2OCwgNjEzNzMsIDYxMzc4LCA2MTM4MywgCisgICAgNjEzODgsIDYxMzkyLCA2MTM5NiwgNjE0MDAsIDYxNDA0LCA2MTQwOCwgNjE0MTIsIDYxNDE2LCA2MTQyMCwgNjE0MjQsIAorICAgIDYxNDI4LCA2MTQzMiwgNjE0MzYsIDYxNDQwLCA2MTQ0NCwgNjE0NDksIDYxNDU0LCA2MTQ1OSwgNjE0NjQsIDYxNDY5LCAKKyAgICA2MTQ3NCwgNjE0NzksIDYxNDg0LCA2MTQ4OSwgNjE0OTQsIDYxNDk5LCA2MTUwNCwgNjE1MDksIDYxNTE0LCA2MTUxOSwgCisgICAgNjE1MjUsIDAsIDYxNTMyLCA2MTUzNSwgNjE1MzgsIDYxNTQxLCA2MTU0NCwgNjE1NDcsIDYxNTUwLCA2MTU1MywgNjE1NTYsIAorICAgIDYxNTU5LCA2MTU2MywgNjE1NjcsIDYxNTcxLCA2MTU3NSwgNjE1NzksIDYxNTgzLCA2MTU4NywgNjE1OTEsIDYxNTk1LCAKKyAgICA2MTU5OSwgNjE2MDMsIDYxNjA3LCA2MTYxMSwgNjE2MTUsIDYxNjE5LCA2MTYyMywgNjE2MjcsIDYxNjMxLCA2MTYzNSwgCisgICAgNjE2MzksIDYxNjQzLCA2MTY0NywgNjE2NTEsIDYxNjU1LCA2MTY1OSwgNjE2NjMsIDYxNjY3LCA2MTY3MSwgNjE2NzUsIAorICAgIDYxNjc5LCA2MTY4MywgNjE2OTIsIDYxNzAxLCA2MTcxMCwgNjE3MTksIDYxNzI4LCA2MTczNywgNjE3NDYsIDYxNzU1LCAKKyAgICA2MTc1OCwgNjE3NjMsIDYxNzY4LCA2MTc3MywgNjE3NzgsIDYxNzgzLCA2MTc4OCwgNjE3OTMsIDYxNzk4LCA2MTgwMywgCisgICAgNjE4MDcsIDYxODEyLCA2MTgxNywgNjE4MjIsIDYxODI3LCA2MTgzMiwgNjE4MzYsIDYxODQwLCA2MTg0NCwgNjE4NDgsIAorICAgIDYxODUyLCA2MTg1NiwgNjE4NjAsIDYxODY0LCA2MTg2OCwgNjE4NzIsIDYxODc2LCA2MTg4MCwgNjE4ODQsIDYxODg4LCAKKyAgICA2MTg5MywgNjE4OTgsIDYxOTAzLCA2MTkwOCwgNjE5MTMsIDYxOTE4LCA2MTkyMywgNjE5MjgsIDYxOTMzLCA2MTkzOCwgCisgICAgNjE5NDMsIDYxOTQ4LCA2MTk1MywgNjE5NTgsIDYxOTY0LCA2MTk3MCwgNjE5NzUsIDYxOTgwLCA2MTk4MywgNjE5ODYsIAorICAgIDYxOTg5LCA2MTk5MiwgNjE5OTUsIDYxOTk4LCA2MjAwMSwgNjIwMDQsIDYyMDA3LCA2MjAxMSwgNjIwMTUsIDYyMDE5LCAKKyAgICA2MjAyMywgNjIwMjcsIDYyMDMxLCA2MjAzNSwgNjIwMzksIDYyMDQzLCA2MjA0NywgNjIwNTEsIDYyMDU1LCA2MjA1OSwgCisgICAgNjIwNjMsIDYyMDY3LCA2MjA3MSwgNjIwNzUsIDYyMDc5LCA2MjA4MywgNjIwODcsIDYyMDkxLCA2MjA5NSwgNjIwOTksIAorICAgIDYyMTAzLCA2MjEwNywgNjIxMTEsIDYyMTE1LCA2MjExOSwgNjIxMjMsIDYyMTI3LCA2MjEzMSwgNjIxMzUsIDYyMTM5LCAKKyAgICA2MjE0MywgNjIxNDcsIDYyMTUxLCA2MjE1NSwgNjIxNTksIDYyMTYzLCA2MjE2NywgNjIxNzIsIDYyMTc3LCA2MjE4MiwgCisgICAgNjIxODcsIDYyMTkxLCA2MjE5NiwgNjIyMDEsIDYyMjA2LCA2MjIxMSwgNjIyMTYsIDYyMjIxLCA2MjIyNiwgNjIyMzEsIAorICAgIDYyMjM2LCA2MjI0MCwgNjIyNDcsIDYyMjU0LCA2MjI2MSwgNjIyNjgsIDYyMjc1LCA2MjI4MiwgNjIyODksIDYyMjk2LCAKKyAgICA2MjMwMywgNjIzMTAsIDYyMzE3LCA2MjMyNCwgNjIzMjcsIDYyMzMwLCA2MjMzMywgNjIzMzgsIDYyMzQxLCA2MjM0NCwgCisgICAgNjIzNDcsIDYyMzUwLCA2MjM1MywgNjIzNTYsIDYyMzYwLCA2MjM2NCwgNjIzNjgsIDYyMzcyLCA2MjM3NSwgNjIzNzksIAorICAgIDYyMzgzLCA2MjM4NywgNjIzOTEsIDYyMzk1LCA2MjM5OSwgNjI0MDMsIDYyNDA3LCA2MjQxMCwgNjI0MTMsIDYyNDE3LCAKKyAgICA2MjQyMSwgNjI0MjUsIDYyNDI5LCA2MjQzMiwgNjI0MzYsIDYyNDQwLCA2MjQ0NCwgNjI0NDgsIDYyNDUxLCA2MjQ1NSwgCisgICAgNjI0NTksIDYyNDYzLCA2MjQ2NywgNjI0NzAsIDYyNDc0LCA2MjQ3OCwgNjI0ODEsIDYyNDg1LCA2MjQ4OSwgNjI0OTMsIAorICAgIDYyNDk3LCA2MjUwMSwgNjI1MDUsIDYyNTA5LCAwLCA2MjUxMywgNjI1MTYsIDYyNTE5LCA2MjUyMiwgNjI1MjUsIDYyNTI4LCAKKyAgICA2MjUzMSwgNjI1MzQsIDYyNTM3LCA2MjU0MCwgNjI1NDMsIDYyNTQ2LCA2MjU0OSwgNjI1NTIsIDYyNTU1LCA2MjU1OCwgCisgICAgNjI1NjEsIDYyNTY0LCA2MjU2NywgNjI1NzAsIDYyNTczLCA2MjU3NiwgNjI1NzksIDYyNTgyLCA2MjU4NSwgNjI1ODgsIAorICAgIDYyNTkxLCA2MjU5NCwgNjI1OTcsIDYyNjAwLCA2MjYwMywgNjI2MDYsIDYyNjA5LCA2MjYxMiwgNjI2MTUsIDYyNjE4LCAKKyAgICA2MjYyMSwgNjI2MjQsIDYyNjI3LCA2MjYzMCwgNjI2MzMsIDYyNjM2LCA2MjYzOSwgNjI2NDIsIDYyNjQ1LCA2MjY0OCwgCisgICAgNjI2NTEsIDYyNjU0LCA2MjY1NywgNjI2NjAsIDYyNjYzLCA2MjY2NiwgNjI2NjksIDYyNjcyLCA2MjY3NSwgNjI2NzgsIAorICAgIDYyNjgxLCA2MjY4NCwgNjI2ODcsIDYyNjkwLCA2MjY5MywgNjI2OTYsIDYyNjk5LCA2MjcwMiwgNjI3MDUsIDYyNzA4LCAKKyAgICA2MjcxMSwgNjI3MTQsIDYyNzE3LCA2MjcyMCwgNjI3MjMsIDYyNzI2LCA2MjcyOSwgNjI3MzIsIDYyNzM1LCA2MjczOCwgCisgICAgNjI3NDEsIDYyNzQ0LCA2Mjc0NywgNjI3NTAsIDYyNzUzLCA2Mjc1NiwgNjI3NTksIDYyNzYyLCA2Mjc2NSwgNjI3NjgsIAorICAgIDYyNzcxLCA2Mjc3NCwgNjI3NzcsIDYyNzg2LCA2Mjc5NCwgNjI4MDIsIDYyODEwLCA2MjgxOCwgNjI4MjYsIDYyODM0LCAKKyAgICA2Mjg0MiwgNjI4NTAsIDYyODU4LCA2Mjg2NywgNjI4NzYsIDYyODg1LCA2Mjg5NCwgNjI5MDMsIDYyOTEyLCA2MjkyMSwgCisgICAgNjI5MzAsIDYyOTM5LCA2Mjk0OCwgNjI5NTcsIDYyOTY2LCA2Mjk3NSwgNjI5ODQsIDYyOTkzLCA2Mjk5NiwgNjI5OTksIAorICAgIDYzMDAyLCA2MzAwNCwgNjMwMDcsIDYzMDEwLCA2MzAxMywgNjMwMTgsIDYzMDIzLCA2MzAyNiwgNjMwMzMsIDYzMDQwLCAKKyAgICA2MzA0NywgNjMwNTQsIDYzMDU3LCA2MzA2MiwgNjMwNjQsIDYzMDY4LCA2MzA3MCwgNjMwNzIsIDYzMDc1LCA2MzA3OCwgCisgICAgNjMwODEsIDYzMDg0LCA2MzA4NywgNjMwOTAsIDYzMDkzLCA2MzA5OCwgNjMxMDMsIDYzMTA2LCA2MzEwOSwgNjMxMTIsIAorICAgIDYzMTE1LCA2MzExOCwgNjMxMjEsIDYzMTI0LCA2MzEyOCwgNjMxMzEsIDYzMTM0LCA2MzEzNywgNjMxNDAsIDYzMTQzLCAKKyAgICA2MzE0NywgNjMxNTAsIDYzMTUzLCA2MzE1NiwgNjMxNjEsIDYzMTY2LCA2MzE3MSwgNjMxNzYsIDYzMTgxLCA2MzE4NiwgCisgICAgNjMxOTEsIDYzMTk2LCA2MzIwMiwgNjMyMTAsIDYzMjEyLCA2MzIxNSwgNjMyMTgsIDYzMjIxLCA2MzIyNCwgNjMyMzAsIAorICAgIDYzMjM4LCA2MzI0MSwgNjMyNDQsIDYzMjQ5LCA2MzI1MiwgNjMyNTUsIDYzMjU4LCA2MzI2MywgNjMyNjYsIDYzMjY5LCAKKyAgICA2MzI3NCwgNjMyNzcsIDYzMjgwLCA2MzI4NSwgNjMyODgsIDYzMjkxLCA2MzI5NiwgNjMzMDEsIDYzMzA2LCA2MzMwOSwgCisgICAgNjMzMTIsIDYzMzE1LCA2MzMxOCwgNjMzMjQsIDYzMzI3LCA2MzMzMCwgNjMzMzMsIDYzMzM1LCA2MzMzOCwgNjMzNDEsIAorICAgIDYzMzQ0LCA2MzM0OSwgNjMzNTIsIDYzMzU1LCA2MzM1OCwgNjMzNjEsIDYzMzY0LCA2MzM2OSwgNjMzNzIsIDYzMzc1LCAKKyAgICA2MzM3OCwgNjMzODEsIDYzMzg0LCA2MzM4NywgNjMzOTAsIDYzMzkzLCA2MzM5NiwgNjM0MDEsIDYzNDA1LCA2MzQxMywgCisgICAgNjM0MjEsIDYzNDI5LCA2MzQzNywgNjM0NDUsIDYzNDUzLCA2MzQ2MSwgNjM0NjksIDYzNDc3LCA2MzQ4NiwgNjM0OTUsIAorICAgIDYzNTA0LCA2MzUxMywgNjM1MjIsIDYzNTMxLCA2MzU0MCwgNjM1NDksIDYzNTU4LCA2MzU2NywgNjM1NzYsIDYzNTg1LCAKKyAgICA2MzU5NCwgNjM2MDMsIDYzNjEyLCA2MzYyMSwgNjM2MzAsIDYzNjM5LCA2MzY0OCwgNjM2NTcsIDYzNjY2LCA2MzY3NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM2NzgsIDYzNjg3LCA2MzY5NiwgNjM3MDcsIAorICAgIDYzNzE0LCA2MzcxOSwgNjM3MjQsIDYzNzMxLCA2MzczOCwgNjM3NDQsIDYzNzQ5LCA2Mzc1NCwgNjM3NTksIDYzNzY0LCAKKyAgICA2Mzc3MSwgNjM3NzYsIDYzNzgxLCA2Mzc4NiwgNjM3OTcsIDYzODAyLCA2MzgwNywgNjM4MTQsIDYzODE5LCA2MzgyNiwgCisgICAgNjM4MzEsIDYzODM2LCA2Mzg0MywgNjM4NTAsIDYzODU3LCA2Mzg2NiwgNjM4NzUsIDYzODgwLCA2Mzg4NSwgNjM4OTAsIAorICAgIDYzODk3LCA2MzkwMiwgNjM5MTIsIDYzOTE5LCA2MzkyNCwgNjM5MjksIDYzOTM0LCA2MzkzOSwgNjM5NDQsIDYzOTQ5LCAKKyAgICA2Mzk1OCwgNjM5NjUsIDYzOTcyLCA2Mzk3NywgNjM5ODQsIDYzOTg5LCA2Mzk5NiwgNjQwMDUsIDY0MDE2LCA2NDAyMSwgCisgICAgNjQwMzAsIDY0MDM1LCA2NDA0MiwgNjQwNTEsIDY0MDYwLCA2NDA2NSwgNjQwNzAsIDY0MDc3LCA2NDA4MywgNjQwOTAsIAorICAgIDY0MDk3LCA2NDEwMSwgNjQxMDUsIDY0MTA4LCA2NDExMiwgNjQxMTYsIDY0MTIwLCA2NDEyNCwgNjQxMjgsIDY0MTMyLCAKKyAgICA2NDEzNiwgNjQxMzksIDY0MTQzLCA2NDE0NywgNjQxNTEsIDY0MTU1LCA2NDE1OSwgNjQxNjMsIDY0MTY2LCA2NDE3MCwgCisgICAgNjQxNzQsIDY0MTc3LCA2NDE4MSwgNjQxODUsIDY0MTg5LCA2NDE5MywgNjQxOTcsIDY0MjAxLCA2NDIwNSwgNjQyMDksIAorICAgIDY0MjEzLCA2NDIxNywgNjQyMjEsIDY0MjI1LCA2NDIyOSwgNjQyMzMsIDY0MjM3LCA2NDI0MSwgNjQyNDUsIDY0MjQ5LCAKKyAgICA2NDI1MywgNjQyNTcsIDY0MjYxLCA2NDI2NSwgNjQyNjksIDY0MjczLCA2NDI3NywgNjQyODEsIDY0Mjg1LCA2NDI4OSwgCisgICAgNjQyOTMsIDY0Mjk3LCA2NDMwMSwgNjQzMDUsIDY0MzA5LCA2NDMxMywgNjQzMTcsIDY0MzIxLCA2NDMyNSwgNjQzMjksIAorICAgIDY0MzMzLCA2NDMzNywgNjQzNDEsIDY0MzQ1LCA2NDM0OSwgNjQzNTMsIDY0MzU2LCA2NDM2MCwgNjQzNjQsIDY0MzY4LCAKKyAgICA2NDM3MiwgNjQzNzYsIDY0MzgwLCA2NDM4NCwgNjQzODgsIDY0MzkyLCA2NDM5NiwgNjQ0MDAsIDY0NDA0LCA2NDQwOCwgCisgICAgNjQ0MTIsIDY0NDE2LCA2NDQyMCwgNjQ0MjQsIDY0NDI4LCA2NDQzMiwgNjQ0MzYsIDY0NDQwLCA2NDQ0NCwgNjQ0NDgsIAorICAgIDY0NDUyLCA2NDQ1NiwgNjQ0NjAsIDY0NDY0LCA2NDQ2OCwgNjQ0NzIsIDY0NDc2LCA2NDQ4MCwgNjQ0ODQsIDY0NDg4LCAKKyAgICA2NDQ5MiwgNjQ0OTYsIDY0NTAwLCA2NDUwNCwgNjQ1MDgsIDY0NTEyLCA2NDUxNiwgNjQ1MjAsIDY0NTI0LCA2NDUyOCwgCisgICAgNjQ1MzIsIDY0NTM2LCA2NDU0MCwgNjQ1NDQsIDY0NTQ4LCA2NDU1MiwgNjQ1NTYsIDY0NTYwLCA2NDU2NCwgNjQ1NjgsIAorICAgIDY0NTcyLCA2NDU3NiwgNjQ1ODAsIDY0NTg0LCA2NDU4OCwgNjQ1OTIsIDY0NTk2LCA2NDYwMCwgNjQ2MDQsIDY0NjA4LCAKKyAgICA2NDYxMiwgNjQ2MTYsIDY0NjIwLCA2NDYyNCwgNjQ2MjgsIDY0NjMyLCA2NDYzNiwgNjQ2NDAsIDY0NjQ0LCA2NDY0OCwgCisgICAgNjQ2NTIsIDY0NjU2LCA2NDY2MCwgNjQ2NjQsIDY0NjY4LCA2NDY3MiwgNjQ2NzYsIDY0NjgwLCA2NDY4NCwgNjQ2ODgsIAorICAgIDY0NjkyLCA2NDY5NiwgNjQ3MDAsIDY0NzA0LCA2NDcwOCwgNjQ3MTIsIDY0NzE2LCA2NDcyMCwgNjQ3MjQsIDY0NzI4LCAKKyAgICA2NDczMiwgNjQ3MzYsIDY0NzQwLCA2NDc0NCwgNjQ3NDgsIDY0NzUyLCA2NDc1NiwgNjQ3NjAsIDY0NzY0LCA2NDc2OCwgCisgICAgNjQ3NzIsIDY0Nzc2LCA2NDc4MCwgNjQ3ODQsIDY0Nzg4LCA2NDc5MiwgNjQ3OTYsIDY0ODAwLCA2NDgwNCwgNjQ4MDgsIAorICAgIDY0ODEyLCA2NDgxNiwgNjQ4MjAsIDY0ODI0LCA2NDgyNywgNjQ4MzEsIDY0ODM1LCA2NDgzOSwgNjQ4NDMsIDY0ODQ3LCAKKyAgICA2NDg1MSwgNjQ4NTUsIDY0ODU5LCA2NDg2MywgNjQ4NjcsIDY0ODcxLCA2NDg3NSwgNjQ4NzksIDY0ODgzLCA2NDg4NywgCisgICAgNjQ4OTEsIDY0ODk1LCA2NDg5OSwgNjQ5MDMsIDY0OTA3LCA2NDkxMSwgNjQ5MTUsIDY0OTE5LCA2NDkyMywgNjQ5MjcsIAorICAgIDY0OTMxLCA2NDkzNSwgNjQ5MzksIDY0OTQzLCA2NDk0NywgNjQ5NTEsIDY0OTU1LCA2NDk1OSwgNjQ5NjMsIDY0OTY3LCAKKyAgICA2NDk3MSwgNjQ5NzUsIDY0OTc5LCA2NDk4MywgNjQ5ODcsIDY0OTkxLCA2NDk5NSwgNjQ5OTksIDY1MDAzLCA2NTAwNywgCisgICAgNjUwMTEsIDY1MDE1LCA2NTAxOSwgNjUwMjMsIDY1MDI3LCA2NTAzMSwgNjUwMzUsIDY1MDM5LCA2NTA0MywgNjUwNDcsIAorICAgIDY1MDUxLCA2NTA1NSwgNjUwNTksIDY1MDYzLCA2NTA2NywgNjUwNzEsIDY1MDc1LCA2NTA3OSwgNjUwODMsIDY1MDg3LCAKKyAgICA2NTA5MSwgNjUwOTUsIDY1MDk5LCA2NTEwMywgNjUxMDcsIDY1MTExLCA2NTExNSwgNjUxMTksIDY1MTIzLCA2NTEyNywgCisgICAgNjUxMzEsIDY1MTM1LCA2NTEzOSwgNjUxNDMsIDY1MTQ3LCA2NTE1MSwgNjUxNTUsIDY1MTU5LCA2NTE2MywgNjUxNjcsIAorICAgIDY1MTcxLCA2NTE3NSwgNjUxNzksIDY1MTgzLCA2NTE4NywgNjUxOTEsIDY1MTk1LCA2NTE5OSwgNjUyMDMsIDY1MjA3LCAKKyAgICA2NTIxMSwgNjUyMTUsIDY1MjE5LCA2NTIyMywgNjUyMjcsIDY1MjMxLCA2NTIzNSwgNjUyMzksIDY1MjQzLCA2NTI0NywgCisgICAgNjUyNTEsIDY1MjU1LCA2NTI1OSwgNjUyNjMsIDY1MjY3LCA2NTI3MSwgNjUyNzUsIDY1Mjc5LCA2NTI4MywgNjUyODcsIAorICAgIDY1MjkwLCA2NTI5NCwgNjUyOTgsIDY1MzAyLCA2NTMwNiwgNjUzMTAsIDY1MzE0LCA2NTMxOCwgNjUzMjIsIDY1MzI2LCAKKyAgICA2NTMzMCwgNjUzMzQsIDY1MzM4LCA2NTM0MiwgNjUzNDYsIDY1MzUwLCA2NTM1NCwgNjUzNTgsIDY1MzYyLCA2NTM2NiwgCisgICAgNjUzNzAsIDY1Mzc0LCA2NTM3OCwgNjUzODIsIDY1Mzg2LCA2NTM5MCwgNjUzOTQsIDY1Mzk4LCA2NTQwMiwgNjU0MDYsIAorICAgIDY1NDEwLCA2NTQxNCwgNjU0MTgsIDY1NDIyLCA2NTQyNiwgNjU0MzAsIDY1NDM0LCA2NTQzOCwgNjU0NDIsIDY1NDQ2LCAKKyAgICA2NTQ1MCwgNjU0NTQsIDY1NDU4LCA2NTQ2MiwgNjU0NjYsIDY1NDcwLCA2NTQ3NCwgNjU0NzgsIDY1NDgyLCA2NTQ4NiwgCisgICAgNjU0OTAsIDY1NDk0LCA2NTQ5OCwgNjU1MDIsIDY1NTA2LCA2NTUxMCwgNjU1MTQsIDY1NTE4LCA2NTUyMiwgNjU1MjYsIAorICAgIDY1NTMwLCA2NTUzNCwgNjU1MzgsIDY1NTQyLCA2NTU0NiwgNjU1NTAsIDY1NTU0LCA2NTU1OCwgNjU1NjIsIDY1NTY2LCAKKyAgICA2NTU3MCwgNjU1NzQsIDY1NTc4LCA2NTU4MiwgNjU1ODYsIDY1NTkwLCA2NTU5NCwgNjU1OTgsIDY1NjAyLCA2NTYwNiwgCisgICAgNjU2MTAsIDY1NjE0LCA2NTYxOCwgNjU2MjIsIDY1NjI2LCA2NTYzMCwgNjU2MzQsIDY1NjM4LCA2NTY0MiwgNjU2NDYsIAorICAgIDY1NjQ5LCA2NTY1MywgNjU2NTcsIDY1NjYxLCA2NTY2NSwgNjU2NjksIDY1NjczLCA2NTY3NywgNjU2ODEsIDY1Njg1LCAKKyAgICA2NTY4OSwgNjU2OTMsIDY1Njk3LCA2NTcwMSwgNjU3MDUsIDY1NzA5LCA2NTcxMywgNjU3MTcsIDY1NzIxLCA2NTcyNSwgCisgICAgNjU3MjksIDY1NzMzLCA2NTczNywgNjU3NDEsIDY1NzQ1LCA2NTc0OSwgNjU3NTMsIDY1NzU3LCA2NTc2MSwgNjU3NjUsIAorICAgIDY1NzY5LCA2NTc3MywgNjU3NzcsIDY1NzgxLCA2NTc4NSwgNjU3ODksIDY1NzkzLCA2NTc5NywgNjU4MDEsIDY1ODA1LCAKKyAgICA2NTgwOSwgNjU4MTMsIDY1ODE3LCA2NTgyMSwgNjU4MjUsIDY1ODI5LCA2NTgzMywgNjU4MzcsIDY1ODQxLCA2NTg0NSwgCisgICAgNjU4NDksIDY1ODUzLCA2NTg1NywgNjU4NjEsIDY1ODY1LCA2NTg2OSwgNjU4NzMsIDY1ODc3LCA2NTg4MSwgNjU4ODUsIAorICAgIDY1ODg5LCA2NTg5MywgNjU4OTcsIDY1OTAxLCA2NTkwNSwgNjU5MDksIDY1OTEzLCA2NTkxNywgNjU5MjEsIDY1OTI1LCAKKyAgICA2NTkyOSwgNjU5MzMsIDY1OTM3LCA2NTk0MSwgNjU5NDUsIDY1OTQ5LCA2NTk1MywgNjU5NTcsIDY1OTYxLCA2NTk2NSwgCisgICAgNjU5NjksIDY1OTczLCA2NTk3NywgNjU5ODEsIDY1OTg1LCA2NTk4OSwgNjU5OTMsIDY1OTk3LCA2NjAwMSwgNjYwMDUsIAorICAgIDY2MDA5LCA2NjAxMywgNjYwMTcsIDY2MDIxLCA2NjAyNSwgNjYwMjksIDY2MDMzLCA2NjAzNywgNjYwNDEsIDY2MDQ1LCAKKyAgICA2NjA0OSwgNjYwNTMsIDY2MDU3LCA2NjA2MSwgNjYwNjUsIDY2MDY5LCA2NjA3MywgNjYwNzcsIDY2MDgxLCA2NjA4NSwgCisgICAgNjYwODksIDY2MDkzLCA2NjA5NywgNjYxMDEsIDY2MTA1LCA2NjEwOSwgNjYxMTMsIDY2MTE3LCA2NjEyMSwgNjYxMjUsIAorICAgIDY2MTI5LCA2NjEzMywgNjYxMzcsIDY2MTQxLCA2NjE0NCwgNjYxNDgsIDY2MTUyLCA2NjE1NiwgNjYxNjAsIDY2MTY0LCAKKyAgICA2NjE2OCwgNjYxNzIsIDY2MTc2LCA2NjE4MCwgNjYxODQsIDY2MTg4LCA2NjE5MiwgNjYxOTYsIDY2MjAwLCA2NjIwNCwgCisgICAgNjYyMDgsIDY2MjEyLCA2NjIxNiwgNjYyMjAsIDY2MjI0LCA2NjIyOCwgNjYyMzIsIDY2MjM2LCA2NjI0MCwgNjYyNDQsIAorICAgIDY2MjQ4LCA2NjI1MiwgNjYyNTYsIDY2MjYwLCA2NjI2NCwgNjYyNjgsIDY2MjcyLCA2NjI3NiwgNjYyODAsIDY2Mjg0LCAKKyAgICA2NjI4OCwgNjYyOTIsIDY2Mjk2LCA2NjMwMCwgNjYzMDQsIDY2MzA4LCA2NjMxMiwgNjYzMTYsIDY2MzIwLCA2NjMyNCwgCisgICAgNjYzMjgsIDY2MzMyLCA2NjMzNiwgNjYzNDAsIDY2MzQ0LCA2NjM0OCwgNjYzNTIsIDY2MzU2LCA2NjM2MCwgNjYzNjQsIAorICAgIDY2MzY4LCA2NjM3MiwgNjYzNzYsIDY2MzgwLCA2NjM4NCwgNjYzODgsIDY2MzkyLCA2NjM5NiwgNjY0MDAsIDY2NDA0LCAKKyAgICA2NjQwOCwgNjY0MTIsIDY2NDE2LCA2NjQyMCwgNjY0MjQsIDY2NDI4LCA2NjQzMiwgNjY0MzYsIDY2NDQwLCA2NjQ0NCwgCisgICAgNjY0NDgsIDY2NDUyLCA2NjQ1NiwgNjY0NjAsIDY2NDY0LCA2NjQ2OCwgNjY0NzIsIDY2NDc2LCA2NjQ4MCwgNjY0ODQsIAorICAgIDY2NDg4LCA2NjQ5MiwgNjY0OTYsIDY2NTAwLCA2NjUwNCwgNjY1MDgsIDY2NTEyLCA2NjUxNiwgNjY1MjAsIDY2NTI0LCAKKyAgICA2NjUyOCwgNjY1MzIsIDY2NTM2LCA2NjU0MCwgNjY1NDQsIDY2NTQ4LCA2NjU1MiwgNjY1NTYsIDY2NTYwLCA2NjU2NCwgCisgICAgNjY1NjgsIDY2NTcyLCA2NjU3NiwgNjY1ODAsIDY2NTg0LCA2NjU4OCwgNjY1OTIsIDY2NTk2LCA2NjU5OSwgNjY2MDMsIAorICAgIDY2NjA3LCA2NjYxMSwgNjY2MTUsIDY2NjE5LCA2NjYyMywgNjY2MjcsIDY2NjMxLCA2NjYzNSwgNjY2MzksIDY2NjQzLCAKKyAgICA2NjY0NywgNjY2NTEsIDY2NjU1LCA2NjY1OSwgNjY2NjMsIDY2NjY3LCA2NjY3MSwgNjY2NzUsIDY2Njc5LCA2NjY4MywgCisgICAgNjY2ODcsIDY2NjkxLCA2NjY5NSwgNjY2OTksIDY2NzAzLCA2NjcwNywgNjY3MTEsIDY2NzE1LCA2NjcxOSwgNjY3MjMsIAorICAgIDY2NzI3LCA2NjczMSwgNjY3MzUsIDY2NzM5LCA2Njc0MywgNjY3NDcsIDY2NzUxLCA2Njc1NSwgNjY3NTksIDY2NzYzLCAKKyAgICA2Njc2NywgNjY3NzEsIDY2Nzc1LCA2Njc3OSwgNjY3ODMsIDY2Nzg3LCA2Njc5MSwgNjY3OTUsIDY2Nzk5LCA2NjgwMywgCisgICAgNjY4MDcsIDY2ODExLCA2NjgxNSwgNjY4MTksIDY2ODIzLCA2NjgyNywgNjY4MzEsIDY2ODM1LCA2NjgzOSwgNjY4NDMsIAorICAgIDY2ODQ3LCA2Njg1MSwgNjY4NTUsIDY2ODU5LCA2Njg2MywgNjY4NjcsIDY2ODcxLCA2Njg3NSwgNjY4NzksIDY2ODgzLCAKKyAgICA2Njg4NywgNjY4OTEsIDY2ODk1LCA2Njg5OSwgNjY5MDMsIDY2OTA3LCA2NjkxMSwgNjY5MTUsIDY2OTE5LCA2NjkyMywgCisgICAgNjY5MjcsIDY2OTMxLCA2NjkzNSwgNjY5MzksIDY2OTQzLCA2Njk0NywgNjY5NTEsIDY2OTU1LCA2Njk1OSwgNjY5NjMsIAorICAgIDY2OTY3LCA2Njk3MSwgNjY5NzUsIDY2OTc5LCA2Njk4MywgNjY5ODcsIDY2OTkxLCA2Njk5NSwgNjY5OTksIDY3MDAzLCAKKyAgICA2NzAwNywgNjcwMTEsIDY3MDE1LCA2NzAxOSwgNjcwMjMsIDY3MDI3LCA2NzAzMSwgNjcwMzUsIDY3MDM5LCA2NzA0MywgCisgICAgNjcwNDcsIDY3MDUxLCA2NzA1NSwgNjcwNTksIDY3MDYzLCA2NzA2NywgNjcwNzEsIDY3MDc1LCA2NzA3OSwgNjcwODMsIAorICAgIDY3MDg3LCA2NzA5MSwgNjcwOTUsIDY3MDk5LCA2NzEwMywgNjcxMDcsIDY3MTExLCA2NzExNSwgNjcxMTksIDY3MTIzLCAKKyAgICA2NzEyNywgNjcxMzEsIDY3MTM1LCA2NzEzOSwgNjcxNDMsIDY3MTQ3LCA2NzE1MSwgNjcxNTUsIDY3MTU5LCA2NzE2MywgCisgICAgNjcxNjcsIDY3MTcxLCA2NzE3NSwgNjcxNzksIDY3MTgzLCA2NzE4NywgNjcxOTEsIDY3MTk1LCA2NzE5OSwgNjcyMDIsIAorICAgIDY3MjA2LCA2NzIxMCwgNjcyMTQsIDY3MjE4LCA2NzIyMiwgNjcyMjYsIDY3MjMwLCA2NzIzMywgNjcyMzcsIDY3MjQxLCAKKyAgICA2NzI0NSwgNjcyNDksIDY3MjUzLCA2NzI1NywgNjcyNjEsIDY3MjY1LCA2NzI2OSwgNjcyNzMsIDY3Mjc3LCA2NzI4MSwgCisgICAgNjcyODUsIDY3Mjg5LCA2NzI5MywgNjcyOTcsIDY3MzAxLCA2NzMwNSwgNjczMDksIDY3MzEzLCA2NzMxNywgNjczMjEsIAorICAgIDY3MzI1LCA2NzMyOSwgNjczMzMsIDY3MzM3LCA2NzM0MSwgNjczNDUsIDY3MzQ5LCA2NzM1MywgNjczNTcsIDY3MzYxLCAKKyAgICA2NzM2NSwgNjczNjksIDY3MzczLCA2NzM3NywgNjczODEsIDY3Mzg1LCA2NzM4OSwgNjczOTMsIDY3Mzk3LCA2NzQwMSwgCisgICAgNjc0MDUsIDY3NDA5LCA2NzQxMywgNjc0MTcsIDY3NDIxLCA2NzQyNSwgNjc0MjksIDY3NDMzLCA2NzQzNywgNjc0NDEsIAorICAgIDY3NDQ1LCA2NzQ0OSwgNjc0NTMsIDY3NDU3LCA2NzQ2MSwgNjc0NjUsIDY3NDY5LCA2NzQ3MywgNjc0NzcsIDY3NDgxLCAKKyAgICA2NzQ4NSwgNjc0ODksIDY3NDkzLCA2NzQ5NywgNjc1MDEsIDY3NTA1LCA2NzUwOSwgNjc1MTMsIDY3NTE3LCA2NzUyMSwgCisgICAgNjc1MjUsIDY3NTI5LCA2NzUzMywgNjc1MzcsIDY3NTQxLCA2NzU0NSwgNjc1NDksIDY3NTUzLCA2NzU1NywgNjc1NjEsIAorICAgIDY3NTY1LCA2NzU2OSwgNjc1NzMsIDY3NTc3LCA2NzU4MSwgNjc1ODUsIDY3NTg5LCA2NzU5MywgNjc1OTcsIDY3NjAxLCAKKyAgICA2NzYwNSwgNjc2MDksIDY3NjEzLCA2NzYxNywgNjc2MjEsIDY3NjI1LCA2NzYyOSwgNjc2MzMsIDY3NjM3LCA2NzY0MSwgCisgICAgNjc2NDUsIDY3NjQ5LCA2NzY1MywgNjc2NTcsIDY3NjYxLCA2NzY2NSwgNjc2NjksIDY3NjczLCA2NzY3NywgNjc2ODEsIAorICAgIDY3Njg1LCA2NzY4OSwgNjc2OTMsIDY3Njk3LCA2NzcwMSwgNjc3MDUsIDY3NzA5LCA2NzcxMywgNjc3MTcsIDY3NzIxLCAKKyAgICA2NzcyNSwgNjc3MjksIDY3NzMzLCA2NzczNywgNjc3NDEsIDY3NzQ1LCA2Nzc0OSwgNjc3NTMsIDY3NzU3LCA2Nzc2MSwgCisgICAgNjc3NjUsIDY3NzY5LCA2Nzc3MywgNjc3NzcsIDY3NzgxLCA2Nzc4NSwgNjc3ODksIDY3NzkzLCA2Nzc5NywgNjc4MDEsIAorICAgIDY3ODA1LCA2NzgwOSwgNjc4MTMsIDY3ODE3LCA2NzgyMSwgNjc4MjUsIDY3ODI5LCA2NzgzMywgNjc4MzcsIDY3ODQxLCAKKyAgICA2Nzg0NSwgNjc4NDksIDY3ODUzLCA2Nzg1NywgNjc4NjEsIDY3ODY1LCA2Nzg2OSwgNjc4NzMsIDY3ODc3LCA2Nzg4MSwgCisgICAgNjc4ODUsIDY3ODg5LCA2Nzg5MywgNjc4OTcsIDY3OTAxLCA2NzkwNSwgNjc5MDksIDY3OTEzLCA2NzkxNywgNjc5MjEsIAorICAgIDY3OTI1LCA2NzkyOSwgNjc5MzMsIDY3OTM3LCA2Nzk0MSwgNjc5NDUsIDY3OTQ5LCA2Nzk1MywgNjc5NTcsIDY3OTYwLCAKKyAgICA2Nzk2NCwgNjc5NjgsIDY3OTcyLCA2Nzk3NiwgNjc5ODAsIDY3OTg0LCA2Nzk4OCwgNjc5OTIsIDY3OTk2LCA2ODAwMCwgCisgICAgNjgwMDQsIDY4MDA4LCA2ODAxMiwgNjgwMTYsIDY4MDIwLCA2ODAyNCwgNjgwMjgsIDY4MDMyLCA2ODAzNiwgNjgwNDAsIAorICAgIDY4MDQ0LCA2ODA0OCwgNjgwNTIsIDY4MDU2LCA2ODA2MCwgNjgwNjQsIDY4MDY4LCA2ODA3MiwgNjgwNzYsIDY4MDgwLCAKKyAgICA2ODA4NCwgNjgwODgsIDY4MDkyLCA2ODA5NiwgNjgxMDAsIDY4MTA0LCA2ODEwOCwgNjgxMTIsIDY4MTE2LCA2ODEyMCwgCisgICAgNjgxMjQsIDY4MTI4LCA2ODEzMiwgNjgxMzYsIDY4MTQwLCA2ODE0NCwgNjgxNDgsIDY4MTUyLCA2ODE1NiwgNjgxNjAsIAorICAgIDY4MTY0LCA2ODE2OCwgNjgxNzIsIDY4MTc2LCA2ODE4MCwgNjgxODQsIDY4MTg4LCA2ODE5MiwgNjgxOTYsIDY4MjAwLCAKKyAgICA2ODIwNCwgNjgyMDgsIDY4MjEyLCA2ODIxNiwgNjgyMjAsIDY4MjI0LCA2ODIyOCwgNjgyMzIsIDY4MjM2LCA2ODI0MCwgCisgICAgNjgyNDQsIDY4MjQ4LCA2ODI1MiwgNjgyNTYsIDY4MjYwLCA2ODI2NCwgNjgyNjgsIDY4MjcyLCA2ODI3NiwgNjgyODAsIAorICAgIDY4Mjg0LCA2ODI4OCwgNjgyOTIsIDY4Mjk2LCA2ODMwMCwgNjgzMDQsIDY4MzA4LCA2ODMxMiwgNjgzMTYsIDY4MzIwLCAKKyAgICA2ODMyNCwgNjgzMjgsIDY4MzMyLCA2ODMzNiwgNjgzNDAsIDY4MzQ0LCA2ODM0OCwgNjgzNTIsIDY4MzU2LCA2ODM2MCwgCisgICAgNjgzNjQsIDY4MzY4LCA2ODM3MiwgNjgzNzYsIDY4MzgwLCA2ODM4NCwgNjgzODgsIDY4MzkyLCA2ODM5NiwgNjg0MDAsIAorICAgIDY4NDA0LCA2ODQwOCwgNjg0MTIsIDY4NDE2LCA2ODQyMCwgNjg0MjQsIDY4NDI4LCA2ODQzMiwgNjg0MzYsIDY4NDQwLCAKKyAgICA2ODQ0NCwgNjg0NDgsIDY4NDUyLCA2ODQ1NiwgNjg0NjAsIDY4NDY0LCA2ODQ2OCwgNjg0NzIsIDY4NDc2LCA2ODQ4MCwgCisgICAgNjg0ODQsIDY4NDg4LCA2ODQ5MiwgNjg0OTYsIDY4NTAwLCA2ODUwNCwgNjg1MDgsIDY4NTEyLCA2ODUxNiwgNjg1MjAsIAorICAgIDY4NTI0LCA2ODUyOCwgNjg1MzIsIDY4NTM2LCA2ODU0MCwgNjg1NDQsIDY4NTQ4LCA2ODU1MiwgNjg1NTYsIDY4NTYwLCAKKyAgICA2ODU2NCwgNjg1NjgsIDY4NTcyLCA2ODU3NiwgNjg1ODAsIDY4NTg0LCA2ODU4OCwgNjg1OTIsIDY4NTk2LCA2ODYwMCwgCisgICAgNjg2MDQsIDY4NjA4LCA2ODYxMiwgNjg2MTYsIDY4NjIwLCA2ODYyNCwgNjg2MjgsIDY4NjMyLCA2ODYzNiwgNjg2NDAsIAorICAgIDY4NjQ0LCA2ODY0OCwgNjg2NTIsIDY4NjU2LCA2ODY2MCwgNjg2NjQsIDY4NjY4LCA2ODY3MiwgNjg2NzYsIDY4NjgwLCAKKyAgICA2ODY4NCwgNjg2ODgsIDY4NjkyLCA2ODY5NiwgNjg3MDAsIDY4NzA0LCA2ODcwOCwgNjg3MTIsIDY4NzE2LCA2ODcyMCwgCisgICAgNjg3MjQsIDY4NzI4LCA2ODczMiwgNjg3MzYsIDY4NzQwLCAwLCAwLCAwLCA2ODc0NCwgNjg3NDgsIDY4NzUyLCA2ODc1NiwgCisgICAgNjg3NjAsIDY4NzY0LCA2ODc2OCwgNjg3NzIsIDY4Nzc2LCA2ODc4MCwgNjg3ODQsIDY4Nzg4LCA2ODc5MiwgNjg3OTYsIAorICAgIDY4ODAwLCA2ODgwNCwgNjg4MDgsIDY4ODEyLCA2ODgxNiwgNjg4MjAsIDY4ODI0LCA2ODgyOCwgNjg4MzIsIDY4ODM2LCAKKyAgICA2ODg0MCwgNjg4NDQsIDY4ODQ4LCA2ODg1MiwgNjg4NTYsIDY4ODYwLCA2ODg2NCwgNjg4NjgsIDY4ODcyLCA2ODg3NiwgCisgICAgNjg4ODAsIDY4ODg0LCA2ODg4OCwgNjg4OTIsIDY4ODk2LCA2ODkwMCwgNjg5MDQsIDY4OTA4LCA2ODkxMiwgNjg5MTYsIAorICAgIDY4OTIwLCA2ODkyNCwgNjg5MjgsIDY4OTMyLCA2ODkzNiwgNjg5NDAsIDY4OTQ0LCA2ODk0OCwgNjg5NTIsIDY4OTU2LCAKKyAgICA2ODk2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjg5NjQsIDY4OTY5LCA2ODk3MywgNjg5NzgsIDY4OTgzLCAKKyAgICA2ODk4OCwgNjg5OTMsIDY4OTk4LCA2OTAwMiwgNjkwMDcsIDY5MDEyLCA2OTAxNywgNjkwMjIsIDY5MDI3LCA2OTAzMiwgCisgICAgNjkwMzcsIDY5MDQxLCA2OTA0NSwgNjkwNTAsIDY5MDU0LCA2OTA1OSwgNjkwNjQsIDY5MDY5LCA2OTA3MywgNjkwNzgsIAorICAgIDY5MDgzLCA2OTA4OCwgNjkwOTMsIDY5MDk4LCA2OTEwMiwgNjkxMDcsIDY5MTExLCA2OTExNiwgNjkxMjAsIDY5MTI1LCAKKyAgICA2OTEyOSwgNjkxMzMsIDY5MTM3LCA2OTE0MiwgNjkxNDcsIDY5MTUyLCA2OTE2MCwgNjkxNjgsIDY5MTc2LCA2OTE4NCwgCisgICAgNjkxOTEsIDY5MTk5LCA2OTIwNSwgNjkyMTMsIDY5MjE3LCA2OTIyMSwgNjkyMjUsIDY5MjI5LCA2OTIzMywgNjkyMzcsIAorICAgIDY5MjQxLCA2OTI0NSwgNjkyNDksIDY5MjUzLCA2OTI1NywgNjkyNjEsIDY5MjY1LCA2OTI2OSwgNjkyNzMsIDY5Mjc3LCAKKyAgICA2OTI4MSwgNjkyODUsIDY5Mjg5LCA2OTI5MywgNjkyOTcsIDY5MzAxLCA2OTMwNSwgNjkzMDksIDY5MzEzLCA2OTMxNywgCisgICAgNjkzMjEsIDY5MzI1LCA2OTMyOSwgNjkzMzMsIDY5MzM3LCA2OTM0MSwgNjkzNDUsIDY5MzQ5LCA2OTM1MywgNjkzNTcsIAorICAgIDY5MzYwLCA2OTM2NCwgNjkzNjgsIDY5MzcyLCA2OTM3NiwgNjkzODAsIDY5Mzg0LCA2OTM4OCwgNjkzOTIsIDY5Mzk2LCAKKyAgICA2OTQwMCwgNjk0MDQsIDY5NDA4LCA2OTQxMiwgNjk0MTYsIDY5NDIwLCA2OTQyNCwgNjk0MjgsIDY5NDMyLCA2OTQzNiwgCisgICAgNjk0NDAsIDY5NDQ0LCA2OTQ0OCwgNjk0NTIsIDY5NDU2LCA2OTQ2MCwgNjk0NjQsIDY5NDY4LCA2OTQ3MiwgNjk0NzYsIAorICAgIDY5NDgwLCA2OTQ4NCwgNjk0ODgsIDY5NDkyLCA2OTQ5NiwgNjk1MDAsIDY5NTA0LCA2OTUwNywgNjk1MTEsIDY5NTE1LCAKKyAgICA2OTUxOCwgNjk1MjIsIDY5NTI2LCA2OTUzMCwgNjk1MzMsIDY5NTM3LCA2OTU0MSwgNjk1NDUsIDY5NTQ5LCA2OTU1MywgCisgICAgNjk1NTcsIDY5NTYxLCA2OTU2NSwgNjk1NjksIDY5NTczLCA2OTU3NywgNjk1ODEsIDY5NTg1LCA2OTU4OSwgNjk1OTIsIAorICAgIDY5NTk2LCA2OTYwMCwgNjk2MDMsIDY5NjA3LCA2OTYxMSwgNjk2MTUsIDY5NjE5LCA2OTYyMywgNjk2MjcsIDY5NjMwLCAKKyAgICA2OTYzMywgNjk2MzcsIDY5NjQxLCA2OTY0NSwgNjk2NDgsIDY5NjUxLCA2OTY1NSwgNjk2NTksIDY5NjYzLCA2OTY2NywgCisgICAgNjk2NzEsIDY5Njc1LCA2OTY3OSwgNjk2ODMsIDY5Njg3LCA2OTY5MSwgNjk2OTUsIDY5Njk5LCA2OTcwMywgNjk3MDcsIAorICAgIDY5NzExLCA2OTcxNSwgNjk3MTksIDY5NzIzLCA2OTcyNywgNjk3MzEsIDY5NzM1LCA2OTczOSwgNjk3NDMsIDY5NzQ3LCAKKyAgICA2OTc1MSwgNjk3NTUsIDY5NzU5LCA2OTc2MywgNjk3NjcsIDY5NzcxLCA2OTc3NSwgNjk3NzksIDY5NzgzLCA2OTc4NywgCisgICAgNjk3OTEsIDY5Nzk1LCA2OTc5OSwgNjk4MDIsIDY5ODA2LCA2OTgxMCwgNjk4MTQsIDY5ODE4LCA2OTgyMiwgNjk4MjYsIAorICAgIDY5ODMwLCA2OTgzNCwgNjk4MzgsIDY5ODQyLCA2OTg0NiwgNjk4NTAsIDY5ODU0LCA2OTg1OCwgNjk4NjIsIDY5ODY2LCAKKyAgICA2OTg3MCwgNjk4NzQsIDY5ODc4LCA2OTg4MiwgNjk4ODYsIDY5ODkwLCA2OTg5NCwgNjk4OTgsIDY5OTAyLCA2OTkwNiwgCisgICAgNjk5MTAsIDY5OTE0LCA2OTkxOCwgNjk5MjIsIDY5OTI2LCA2OTkzMCwgNjk5MzQsIDY5OTM4LCA2OTk0MiwgNjk5NDYsIAorICAgIDY5OTQ5LCA2OTk1MywgNjk5NTcsIDY5OTYxLCA2OTk2NSwgNjk5NjksIDY5OTczLCA2OTk3NywgNjk5ODEsIDY5OTg1LCAKKyAgICA2OTk4OSwgNjk5OTMsIDY5OTk3LCA3MDAwMSwgNzAwMDUsIDcwMDA5LCA3MDAxMywgNzAwMTYsIDcwMDIwLCA3MDAyNCwgCisgICAgNzAwMjgsIDcwMDMyLCA3MDAzNiwgNzAwNDAsIDcwMDQ0LCA3MDA0OCwgNzAwNTIsIDcwMDU2LCA3MDA2MCwgNzAwNjQsIAorICAgIDcwMDY4LCA3MDA3MiwgNzAwNzYsIDcwMDgwLCA3MDA4NCwgNzAwODgsIDcwMDkyLCA3MDA5NiwgNzAxMDAsIDcwMTAzLCAKKyAgICA3MDEwNywgNzAxMTEsIDcwMTE1LCA3MDExOSwgNzAxMjMsIDcwMTI3LCA3MDEzMSwgNzAxMzUsIDcwMTM5LCA3MDE0MywgCisgICAgNzAxNDcsIDcwMTUxLCA3MDE1NSwgNzAxNTksIDcwMTYzLCA3MDE2NywgNzAxNzEsIDcwMTc1LCA3MDE3OSwgNzAxODMsIAorICAgIDcwMTg3LCA3MDE5MSwgNzAxOTUsIDcwMTk5LCA3MDIwMywgNzAyMDcsIDcwMjExLCA3MDIxNSwgNzAyMTksIDcwMjIzLCAKKyAgICA3MDIyNywgNzAyMzEsIDcwMjM1LCA3MDIzOSwgNzAyNDMsIDcwMjQ3LCA3MDI1MSwgNzAyNTUsIDcwMjU5LCA3MDI2MywgCisgICAgNzAyNjcsIDcwMjcxLCA3MDI3NSwgNzAyNzgsIDcwMjgzLCA3MDI4NywgNzAyOTMsIDcwMjk4LCA3MDMwNCwgNzAzMDgsIAorICAgIDcwMzEyLCA3MDMxNiwgNzAzMjAsIDcwMzI0LCA3MDMyOCwgNzAzMzIsIDcwMzM2LCA3MDM0MCwgNzAzNDQsIDcwMzQ4LCAKKyAgICA3MDM1MiwgNzAzNTYsIDcwMzYwLCA3MDM2MywgNzAzNjYsIDcwMzY5LCA3MDM3MiwgNzAzNzUsIDcwMzc4LCA3MDM4MSwgCisgICAgNzAzODQsIDcwMzg3LCA3MDM5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNzAzOTgsIDcwNDAzLCA3MDQwOCwgNzA0MTMsIDcwNDE4LCA3MDQyNSwgNzA0MzIsIDcwNDM3LCA3MDQ0MiwgCisgICAgNzA0NDcsIDcwNDUyLCA3MDQ1OSwgNzA0NjYsIDcwNDczLCA3MDQ4MCwgNzA0ODcsIDcwNDk0LCA3MDUwNCwgNzA1MTQsIAorICAgIDcwNTIxLCA3MDUyOCwgNzA1MzUsIDcwNTQyLCA3MDU0OCwgNzA1NTQsIDcwNTYzLCA3MDU3MiwgNzA1NzksIDcwNTg2LCAKKyAgICA3MDU5NywgNzA2MDgsIDcwNjEzLCA3MDYxOCwgNzA2MjUsIDcwNjMyLCA3MDYzOSwgNzA2NDYsIDcwNjUzLCA3MDY2MCwgCisgICAgNzA2NjcsIDcwNjc0LCA3MDY4MCwgNzA2ODYsIDcwNjkyLCA3MDY5OCwgNzA3MDUsIDcwNzEyLCA3MDcxNywgNzA3MjEsIAorICAgIDcwNzI4LCA3MDczNSwgNzA3NDIsIDcwNzQ2LCA3MDc1MywgNzA3NTcsIDcwNzYyLCA3MDc2NiwgNzA3NzIsIDcwNzc3LCAKKyAgICA3MDc4MywgNzA3ODgsIDcwNzkyLCA3MDc5NiwgNzA3OTksIDcwODAyLCA3MDgwNywgNzA4MTIsIDcwODE3LCA3MDgyMiwgCisgICAgNzA4MjcsIDcwODMyLCA3MDgzNywgNzA4NDIsIDcwODQ3LCA3MDg1MiwgNzA4NjEsIDcwODcwLCA3MDg3NSwgNzA4ODAsIAorICAgIDcwODg1LCA3MDg5MCwgNzA4OTUsIDcwOTAwLCA3MDkwNSwgNzA5MTAsIDcwOTE1LCA3MDkyMCwgNzA5MjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDcwOTMwLCA3MDkzNiwgNzA5MzksIDcwOTQyLCA3MDk0NSwgNzA5NDksIDcwOTUzLCA3MDk1NywgCisgICAgNzA5NjEsIDcwOTY0LCA3MDk2OCwgNzA5NzEsIDcwOTc1LCA3MDk3OCwgNzA5ODIsIDcwOTg2LCA3MDk5MCwgNzA5OTQsIAorICAgIDcwOTk4LCA3MTAwMiwgNzEwMDYsIDcxMDA5LCA3MTAxMywgNzEwMTcsIDcxMDIxLCA3MTAyNSwgNzEwMjksIDcxMDMzLCAKKyAgICA3MTAzNywgNzEwNDEsIDcxMDQ1LCA3MTA0OSwgNzEwNTMsIDcxMDU3LCA3MTA2MSwgNzEwNjUsIDcxMDY4LCA3MTA3MiwgCisgICAgNzEwNzYsIDcxMDgwLCA3MTA4NCwgNzEwODgsIDcxMDkyLCA3MTA5NiwgNzExMDAsIDcxMTA0LCA3MTEwOCwgNzExMTIsIAorICAgIDcxMTE2LCA3MTEyMCwgNzExMjQsIDcxMTI4LCA3MTEzMiwgNzExMzYsIDcxMTQwLCA3MTE0NCwgNzExNDgsIDcxMTUyLCAKKyAgICA3MTE1NiwgNzExNjAsIDcxMTY0LCA3MTE2NywgNzExNzEsIDcxMTc1LCA3MTE3OSwgNzExODMsIDcxMTg3LCA3MTE5MSwgCisgICAgNzExOTUsIDcxMTk4LCA3MTIwMiwgNzEyMDYsIDcxMjEwLCA3MTIxNCwgNzEyMTgsIDcxMjIyLCA3MTIyNiwgNzEyMzAsIAorICAgIDcxMjM0LCA3MTIzOCwgNzEyNDIsIDcxMjQ2LCA3MTI1MSwgNzEyNTYsIDcxMjU5LCA3MTI2NCwgNzEyNjcsIDcxMjcwLCAKKyAgICA3MTI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzEyNzcsIDcxMjg2LCA3MTI5NSwgNzEzMDQsIDcxMzEzLCA3MTMyMiwgCisgICAgNzEzMzEsIDcxMzQwLCA3MTM0OSwgNzEzNTcsIDcxMzY0LCA3MTM3MiwgNzEzNzksIDcxMzg3LCA3MTM5NywgNzE0MDYsIAorICAgIDcxNDE2LCA3MTQyNSwgNzE0MzUsIDcxNDQzLCA3MTQ1MCwgNzE0NTgsIDcxNDY1LCA3MTQ3MywgNzE0NzgsIDcxNDgzLCAKKyAgICA3MTQ4OCwgNzE0OTcsIDcxNTAzLCA3MTUwOSwgNzE1MTYsIDcxNTI1LCA3MTUzMywgNzE1NDEsIDcxNTQ5LCA3MTU1NiwgCisgICAgNzE1NjMsIDcxNTcwLCA3MTU3NywgNzE1ODIsIDcxNTg3LCA3MTU5MiwgNzE1OTcsIDcxNjAyLCA3MTYwNywgNzE2MTIsIAorICAgIDcxNjE3LCA3MTYyNSwgNzE2MzMsIDcxNjM5LCA3MTY0NSwgNzE2NTAsIDcxNjU1LCA3MTY2MCwgNzE2NjUsIDcxNjcwLCAKKyAgICA3MTY3NSwgNzE2ODAsIDcxNjg1LCA3MTY5MywgNzE3MDEsIDcxNzA2LCA3MTcxMSwgNzE3MjEsIDcxNzMxLCA3MTczOCwgCisgICAgNzE3NDUsIDcxNzU0LCA3MTc2MywgNzE3NzUsIDcxNzg3LCA3MTc5MywgNzE3OTksIDcxODA3LCA3MTgxNSwgNzE4MjUsIAorICAgIDcxODM1LCA3MTg0MiwgNzE4NDksIDcxODU0LCA3MTg1OSwgNzE4NzEsIDcxODgzLCA3MTg5MSwgNzE4OTksIDcxOTA5LCAKKyAgICA3MTkxOSwgNzE5MzEsIDcxOTQzLCA3MTk1MiwgNzE5NjEsIDcxOTY4LCA3MTk3NSwgNzE5ODIsIDcxOTg5LCA3MTk5OCwgCisgICAgNzIwMDcsIDcyMDEyLCA3MjAxNywgNzIwMjQsIDcyMDMxLCA3MjAzOCwgNzIwNDUsIDcyMDU3LCA3MjA2OSwgNzIwNzQsIAorICAgIDcyMDc5LCA3MjA4NCwgNzIwODksIDcyMDk0LCA3MjA5OSwgNzIxMDQsIDcyMTA5LCA3MjExMywgNzIxMTgsIDcyMTIzLCAKKyAgICA3MjEyOCwgNzIxMzMsIDcyMTM4LCA3MjE0NCwgNzIxNDksIDcyMTU0LCA3MjE2MSwgNzIxNjgsIDcyMTc1LCA3MjE4MiwgCisgICAgNzIxODksIDcyMTk4LCA3MjIwNywgNzIyMTMsIDcyMjE5LCA3MjIyNSwgNzIyMzEsIDcyMjM4LCA3MjI0NSwgNzIyNTIsIAorICAgIDcyMjU5LCA3MjI2NiwgNzIyNzAsIDcyMjc3LCA3MjI4MiwgNzIyODcsIDcyMjk0LCAwLCA3MjMwNywgNzIzMTUsIDcyMzIzLCAKKyAgICA3MjMzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzIzMzcsIDcyMzQ2LCA3MjM1NSwgNzIzNjQsIAorICAgIDcyMzczLCA3MjM4MiwgNzIzOTEsIDcyNDAwLCA3MjQwOSwgNzI0MTgsIDcyNDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjQzNCwgCisgICAgNzI0NDEsIDcyNDQ3LCA3MjQ1NCwgNzI0NjIsIDcyNDcwLCA3MjQ3NywgNzI0ODUsIDcyNDkyLCA3MjQ5OCwgNzI1MDQsIAorICAgIDcyNTExLCA3MjUxNywgNzI1MjMsIDcyNTI5LCA3MjUzNiwgNzI1NDMsIDcyNTUwLCA3MjU1NywgNzI1NjQsIDcyNTcxLCAKKyAgICA3MjU3OCwgNzI1ODUsIDcyNTkyLCA3MjU5OSwgNzI2MDYsIDcyNjEzLCA3MjYyMCwgNzI2MjcsIDcyNjMzLCA3MjY0MCwgCisgICAgNzI2NDcsIDcyNjU0LCA3MjY2MSwgNzI2NjgsIDcyNjc1LCA3MjY4MiwgNzI2ODksIDcyNjk2LCA3MjcwMywgNzI3MTAsIAorICAgIDcyNzE3LCA3MjcyNCwgNzI3MzEsIDcyNzM4LCA3Mjc0NSwgNzI3NTIsIDcyNzU5LCA3Mjc2NywgNzI3NzUsIDcyNzgzLCAKKyAgICA3Mjc5MSwgMCwgMCwgMCwgMCwgNzI3OTksIDcyODA4LCA3MjgxNywgNzI4MjYsIDcyODM1LCA3Mjg0NCwgNzI4NTMsIAorICAgIDcyODYwLCA3Mjg2NywgNzI4NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDcyODgxLCA3Mjg4NSwgNzI4OTAsIDcyODk1LCA3MjkwMCwgCisgICAgNzI5MDUsIDcyOTEwLCA3MjkxNSwgNzI5MjAsIDcyOTI1LCA3MjkzMCwgNzI5MzUsIDcyOTM5LCA3Mjk0MywgNzI5NDgsIAorICAgIDcyOTUzLCA3Mjk1NywgNzI5NjIsIDcyOTY3LCA3Mjk3MiwgNzI5NzcsIDcyOTgyLCA3Mjk4NywgNzI5OTIsIDcyOTk2LCAKKyAgICA3MzAwMCwgNzMwMDUsIDczMDEwLCA3MzAxNCwgNzMwMTgsIDczMDIyLCA3MzAyNiwgNzMwMzAsIDczMDM0LCA3MzAzOCwgCisgICAgNzMwNDMsIDczMDQ4LCA3MzA1MywgNzMwNTgsIDczMDYzLCA3MzA3MCwgNzMwNzYsIDczMDgxLCA3MzA4NiwgNzMwOTEsIAorICAgIDczMDk2LCA3MzEwMiwgNzMxMDksIDczMTE1LCA3MzEyMiwgNzMxMjgsIDczMTM0LCA3MzEzOSwgNzMxNDYsIDczMTUyLCAKKyAgICA3MzE1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzMxNjMsIDczMTY3LCA3MzE3MSwgNzMxNzQsIDczMTc4LCA3MzE4MSwgCisgICAgNzMxODUsIDczMTg4LCA3MzE5MiwgNzMxOTYsIDczMjAxLCA3MzIwNSwgNzMyMTAsIDczMjEzLCA3MzIxNywgNzMyMjEsIAorICAgIDczMjI0LCA3MzIyOCwgNzMyMzIsIDczMjM1LCA3MzIzOSwgNzMyNDMsIDczMjQ3LCA3MzI1MSwgNzMyNTUsIDczMjU5LCAKKyAgICA3MzI2MywgNzMyNjcsIDczMjcxLCA3MzI3NSwgNzMyNzksIDczMjgzLCA3MzI4NywgNzMyOTEsIDczMjk1LCA3MzI5OSwgCisgICAgNzMzMDMsIDczMzA3LCA3MzMxMCwgNzMzMTMsIDczMzE3LCA3MzMyMSwgNzMzMjUsIDczMzI4LCA3MzMzMSwgNzMzMzQsIAorICAgIDczMzM4LCA3MzM0MiwgNzMzNDYsIDczMzUwLCA3MzM1MywgNzMzNTYsIDczMzYwLCA3MzM2NSwgNzMzNzAsIDczMzc0LCAKKyAgICA3MzM3OSwgNzMzODMsIDczMzg4LCA3MzM5MywgNzMzOTksIDczNDA0LCA3MzQxMCwgNzM0MTQsIDczNDE5LCA3MzQyNCwgCisgICAgNzM0MjgsIDczNDMzLCA3MzQzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzM0NDIsIDczNDQ1LCA3MzQ0OSwgCisgICAgNzM0NTMsIDczNDU2LCA3MzQ1OSwgNzM0NjIsIDczNDY1LCA3MzQ2OCwgNzM0NzEsIDczNDc0LCA3MzQ3NywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNzM0ODAsIDczNDg1LCA3MzQ4OSwgNzM0OTMsIDczNDk3LCA3MzUwMSwgNzM1MDUsIDczNTA5LCA3MzUxMywgCisgICAgNzM1MTcsIDczNTIxLCA3MzUyNSwgNzM1MjksIDczNTMzLCA3MzUzNywgNzM1NDEsIDczNTQ1LCA3MzU1MCwgNzM1NTUsIAorICAgIDczNTYxLCA3MzU2NywgNzM1NzQsIDczNTc5LCA3MzU4NCwgNzM1OTAsIDczNTk0LCA3MzU5OSwgNzM2MDIsIDAsIDAsIDAsIAorICAgIDAsIDczNjA1LCA3MzYxMiwgNzM2MTgsIDczNjI0LCA3MzYzMCwgNzM2MzYsIDczNjQyLCA3MzY0OCwgNzM2NTQsIDczNjYwLCAKKyAgICA3MzY2NiwgNzM2NzIsIDczNjc5LCA3MzY4NiwgNzM2OTMsIDczNjk5LCA3MzcwNiwgNzM3MTMsIDczNzIwLCA3MzcyNywgCisgICAgNzM3MzQsIDczNzQwLCA3Mzc0NiwgNzM3NTMsIDczNzU5LCA3Mzc2NiwgNzM3NzMsIDczNzc5LCA3Mzc4NSwgNzM3OTIsIAorICAgIDczNzk5LCA3MzgwNiwgNzM4MTIsIDczODE5LCA3MzgyNiwgNzM4MzIsIDczODM5LCA3Mzg0NSwgNzM4NTIsIDczODU5LCAKKyAgICA3Mzg2NSwgNzM4NzEsIDczODc4LCA3Mzg4NCwgNzM4OTEsIDczODk4LCA3MzkwNywgNzM5MTQsIDczOTIxLCA3MzkyNSwgCisgICAgNzM5MzAsIDczOTM1LCA3Mzk0MCwgNzM5NDUsIDczOTQ5LCA3Mzk1MywgNzM5NTgsIDczOTYyLCA3Mzk2NywgNzM5NzIsIAorICAgIDczOTc3LCA3Mzk4MSwgNzM5ODUsIDczOTkwLCA3Mzk5NCwgNzM5OTksIDc0MDAzLCA3NDAwOCwgNzQwMTMsIDc0MDE4LCAKKyAgICA3NDAyMywgNzQwMjcsIDc0MDMyLCA3NDAzNywgNzQwNDIsIDc0MDQ4LCA3NDA1MywgNzQwNTksIDc0MDY1LCA3NDA3MSwgCisgICAgNzQwNzcsIDc0MDgzLCA3NDA4OCwgNzQwOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0MDk4LCAKKyAgICA3NDEwMywgNzQxMDcsIDc0MTExLCA3NDExNSwgNzQxMTksIDc0MTIzLCA3NDEyNywgNzQxMzEsIDc0MTM1LCA3NDEzOSwgCisgICAgNzQxNDMsIDc0MTQ3LCA3NDE1MSwgNzQxNTUsIDc0MTU5LCA3NDE2MywgNzQxNjcsIDc0MTcxLCA3NDE3NSwgNzQxNzksIAorICAgIDc0MTgzLCA3NDE4NywgNzQxOTEsIDc0MTk1LCA3NDE5OSwgNzQyMDMsIDc0MjA3LCA3NDIxMSwgNzQyMTUsIDAsIDAsIDAsIAorICAgIDc0MjE5LCA3NDIyMywgNzQyMjcsIDc0MjMxLCA3NDIzNSwgNzQyMzgsIDc0MjQ0LCA3NDI0NywgNzQyNTEsIDc0MjU0LCAKKyAgICA3NDI2MCwgNzQyNjYsIDc0Mjc0LCA3NDI3NywgNzQyODEsIDc0Mjg0LCA3NDI4NywgNzQyOTMsIDc0Mjk5LCA3NDMwMywgCisgICAgNzQzMDksIDc0MzEzLCA3NDMxNywgNzQzMjMsIDc0MzI3LCA3NDMzMywgNzQzMzksIDc0MzQzLCA3NDM0NywgNzQzNTMsIAorICAgIDc0MzU3LCA3NDM2MywgNzQzNjksIDc0MzczLCA3NDM3OSwgNzQzODMsIDc0Mzg5LCA3NDM5MiwgNzQzOTUsIDc0NDAxLCAKKyAgICA3NDQwNSwgNzQ0MTEsIDc0NDE0LCA3NDQxNywgNzQ0MjAsIDc0NDI2LCA3NDQzMCwgNzQ0MzQsIDc0NDQwLCA3NDQ0NiwgCisgICAgNzQ0NDksIDc0NDUyLCA3NDQ1OCwgNzQ0NjMsIDc0NDY4LCA3NDQ3MywgNzQ0ODAsIDc0NDg1LCA3NDQ5MiwgNzQ0OTcsIAorICAgIDc0NTA0LCA3NDUwOSwgNzQ1MTQsIDc0NTE5LCA3NDUyNCwgNzQ1MjcsIDc0NTMxLCA3NDUzNSwgNzQ1NDAsIDc0NTQ1LCAKKyAgICA3NDU1MCwgNzQ1NTUsIDc0NTYwLCA3NDU2NSwgNzQ1NzAsIDc0NTc1LCA3NDU4MiwgNzQ1ODcsIDAsIDc0NTk0LCA3NDU5NywgCisgICAgNzQ2MDEsIDc0NjA0LCA3NDYwNywgNzQ2MTAsIDc0NjEzLCA3NDYxNiwgNzQ2MTksIDc0NjIyLCA3NDYyNSwgMCwgMCwgMCwgCisgICAgMCwgNzQ2MjgsIDc0NjM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDY0MCwgNzQ2NDMsIDc0NjQ2LCA3NDY0OSwgNzQ2NTIsIAorICAgIDc0NjU2LCA3NDY1OSwgNzQ2NjIsIDc0NjY2LCA3NDY3MCwgNzQ2NzQsIDc0Njc4LCA3NDY4MiwgNzQ2ODYsIDc0NjkwLCAKKyAgICA3NDY5NCwgNzQ2OTgsIDc0NzAyLCA3NDcwNiwgNzQ3MTAsIDc0NzE0LCA3NDcxOCwgNzQ3MjIsIDc0NzI2LCA3NDczMCwgCisgICAgNzQ3MzMsIDc0NzM3LCA3NDc0MCwgNzQ3NDQsIDc0NzQ4LCA3NDc1MiwgNzQ3NTYsIDc0NzYwLCA3NDc2MywgNzQ3NjcsIAorICAgIDc0NzcwLCA3NDc3MywgNzQ3NzcsIDc0NzgxLCA3NDc4NSwgNzQ3ODgsIDc0NzkxLCA3NDc5NiwgNzQ4MDAsIDc0ODA1LCAKKyAgICA3NDgxMCwgNzQ4MTQsIDc0ODE5LCA3NDgyMywgNzQ4MjgsIDc0ODMzLCA3NDgzOCwgNzQ4NDIsIDc0ODQ2LCA3NDg1MSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ4NTYsIDc0ODYxLCA3NDg2NiwgNzQ4NzEsIDc0ODc3LCA3NDg4MiwgNzQ4ODcsIAorICAgIDc0ODkyLCA3NDg5NywgNzQ5MDIsIDc0OTA2LCA3NDkxMCwgNzQ5MTUsIDc0OTIwLCAwLCAwLCA3NDkyNiwgNzQ5MzAsIAorICAgIDc0OTMzLCA3NDkzNiwgNzQ5MzksIDc0OTQyLCA3NDk0NSwgNzQ5NDgsIDc0OTUxLCA3NDk1NCwgMCwgMCwgNzQ5NTcsIAorICAgIDc0OTYyLCA3NDk2NywgNzQ5NzMsIDc0OTgwLCA3NDk4NiwgNzQ5OTIsIDc0OTk4LCA3NTAwNCwgNzUwMTAsIDc1MDE2LCAKKyAgICA3NTAyMiwgNzUwMjgsIDc1MDM0LCA3NTA0MCwgNzUwNDYsIDc1MDUxLCA3NTA1NiwgNzUwNjEsIDc1MDY3LCA3NTA3MywgCisgICAgNzUwODAsIDc1MDg2LCA3NTA5MiwgNzUwOTcsIDc1MTA0LCA3NTExMSwgNzUxMTgsIDc1MTI0LCA3NTEyOSwgNzUxMzQsIAorICAgIDc1MTM5LCAwLCAwLCAwLCAwLCA3NTE0NywgNzUxNTMsIDc1MTU5LCA3NTE2NSwgNzUxNzEsIDc1MTc3LCA3NTE4MywgCisgICAgNzUxODksIDc1MTk1LCA3NTIwMSwgNzUyMDcsIDc1MjEzLCA3NTIxOSwgNzUyMjUsIDc1MjMxLCA3NTIzNywgNzUyNDMsIAorICAgIDc1MjQ5LCA3NTI1NSwgNzUyNjEsIDc1MjY3LCA3NTI3MiwgNzUyNzcsIDc1MjgzLCA3NTI4OSwgNzUyOTUsIDc1MzAxLCAKKyAgICA3NTMwNywgNzUzMTMsIDc1MzE5LCA3NTMyNSwgNzUzMzEsIDc1MzM3LCA3NTM0MywgNzUzNDksIDc1MzU1LCA3NTM2MSwgCisgICAgNzUzNjcsIDc1MzczLCA3NTM3OSwgNzUzODUsIDc1MzkxLCA3NTM5NywgNzU0MDMsIDc1NDA5LCA3NTQxNSwgNzU0MjEsIAorICAgIDc1NDI2LCA3NTQzMSwgNzU0MzcsIDc1NDQyLCA3NTQ0NiwgNzU0NTEsIDc1NDU1LCA3NTQ1OSwgNzU0NjMsIDc1NDY5LCAKKyAgICA3NTQ3NCwgNzU0NzksIDc1NDg0LCA3NTQ4OSwgNzU0OTQsIDc1NDk5LCA3NTUwNCwgNzU1MTEsIDc1NTE4LCA3NTUyNSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzM3NjQsIDczNzY3LCA3Mzc3MCwgNzM3NzMsIDczNzc2LCA3Mzc4MCwgNzM3ODMsIDczNzg2LCA3Mzc5MCwgNzM3OTQsIAotICAgIDczNzk4LCA3MzgwMiwgNzM4MDYsIDczODEwLCA3MzgxNCwgNzM4MTgsIDczODIyLCA3MzgyNiwgNzM4MzAsIDczODM0LCAKLSAgICA3MzgzOCwgNzM4NDIsIDczODQ2LCA3Mzg1MCwgNzM4NTQsIDczODU3LCA3Mzg2MSwgNzM4NjQsIDczODY4LCA3Mzg3MiwgCi0gICAgNzM4NzYsIDczODgwLCA3Mzg4NCwgNzM4ODcsIDczODkxLCA3Mzg5NCwgNzM4OTcsIDczOTAxLCA3MzkwNSwgNzM5MDksIAotICAgIDczOTEzLCA3MzkxNiwgNzM5MjEsIDczOTI1LCA3MzkzMCwgNzM5MzUsIDczOTM5LCA3Mzk0NCwgNzM5NDgsIDczOTUzLCAKLSAgICA3Mzk1OCwgNzM5NjMsIDczOTY4LCA3Mzk3MywgNzM5NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczOTg1LCAKLSAgICA3Mzk5MCwgNzM5OTUsIDc0MDAwLCA3NDAwNywgNzQwMTIsIDc0MDE3LCA3NDAyMSwgNzQwMjYsIDc0MDMxLCA3NDAzNSwgCi0gICAgNzQwMzksIDc0MDQ0LCA3NDA1MCwgMCwgMCwgNzQwNTcsIDc0MDYxLCA3NDA2NCwgNzQwNjcsIDc0MDcwLCA3NDA3MywgCi0gICAgNzQwNzYsIDc0MDc5LCA3NDA4MiwgNzQwODUsIDAsIDAsIDc0MDg4LCA3NDA5MywgNzQwOTgsIDc0MTA0LCA3NDExMSwgCi0gICAgNzQxMTcsIDc0MTIzLCA3NDEyOSwgNzQxMzUsIDc0MTQxLCA3NDE0NywgNzQxNTMsIDc0MTU5LCA3NDE2NSwgNzQxNzEsIAotICAgIDc0MTc3LCA3NDE4MiwgNzQxODgsIDc0MTkzLCA3NDE5OSwgNzQyMDUsIDc0MjEyLCA3NDIxOCwgNzQyMjQsIDc0MjI5LCAKLSAgICA3NDIzNiwgNzQyNDMsIDc0MjUwLCA3NDI1NiwgNzQyNjEsIDc0MjY2LCA3NDI3MSwgMCwgMCwgMCwgMCwgNzQyNzksIAotICAgIDc0Mjg1LCA3NDI5MSwgNzQyOTcsIDc0MzAzLCA3NDMwOSwgNzQzMTUsIDc0MzIxLCA3NDMyNywgNzQzMzMsIDc0MzM5LCAKLSAgICA3NDM0NSwgNzQzNTEsIDc0MzU3LCA3NDM2MywgNzQzNjksIDc0Mzc1LCA3NDM4MSwgNzQzODcsIDc0MzkzLCA3NDM5OSwgCi0gICAgNzQ0MDQsIDc0NDA5LCA3NDQxNSwgNzQ0MjEsIDc0NDI3LCA3NDQzMywgNzQ0MzksIDc0NDQ1LCA3NDQ1MSwgNzQ0NTcsIAotICAgIDc0NDYzLCA3NDQ2OSwgNzQ0NzUsIDc0NDgxLCA3NDQ4NywgNzQ0OTMsIDc0NDk5LCA3NDUwNSwgNzQ1MTEsIDc0NTE3LCAKLSAgICA3NDUyMywgNzQ1MjksIDc0NTM1LCA3NDU0MSwgNzQ1NDcsIDc0NTUzLCA3NDU1OCwgNzQ1NjMsIDc0NTY5LCA3NDU3NCwgCi0gICAgNzQ1NzgsIDc0NTgzLCA3NDU4NywgNzQ1OTEsIDc0NTk1LCA3NDYwMSwgNzQ2MDYsIDc0NjExLCA3NDYxNiwgNzQ2MjEsIAotICAgIDc0NjI2LCA3NDYzMSwgNzQ2MzYsIDc0NjQzLCA3NDY1MCwgNzQ2NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0NjY0LCA3NDY2OSwgNzQ2NzQsIDc0Njc5LCAKLSAgICA3NDY4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ2OTMsIDc0Njk3LCA3NDcwMSwgNzQ3MDUsIDc0NzA5LCAKLSAgICA3NDcxMywgMCwgMCwgNzQ3MTcsIDc0NzIxLCA3NDcyNSwgNzQ3MjksIDc0NzMzLCA3NDczNywgMCwgMCwgNzQ3NDEsIAotICAgIDc0NzQ1LCA3NDc0OSwgNzQ3NTMsIDc0NzU3LCA3NDc2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ3NjUsIAotICAgIDc0NzY5LCA3NDc3MywgNzQ3NzcsIDc0NzgxLCA3NDc4NSwgNzQ3ODksIDAsIDc0NzkzLCA3NDc5NywgNzQ4MDEsIDc0ODA1LCAKLSAgICA3NDgwOSwgNzQ4MTMsIDc0ODE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3NTUzMiwgNzU1MzcsIDc1NTQyLCA3NTU0NywgNzU1NTQsIDc1NTYxLCA3NTU2NSwgNzU1NjksIDc1NTc0LCA3NTU3OSwgCisgICAgNzU1ODQsIDc1NTg5LCA3NTU5NCwgNzU1OTksIDc1NjA0LCA3NTYwOSwgNzU2MTQsIDc1NjIwLCA3NTYyNiwgNzU2MzIsIAorICAgIDc1NjM4LCA3NTY0NCwgNzU2NDgsIDc1NjU0LCA3NTY1OCwgNzU2NjQsIDc1NjcxLCA3NTY3NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNzU2ODEsIDc1Njg1LCA3NTY4OSwgNzU2OTMsIDc1Njk3LCA3NTcwMSwgMCwgMCwgNzU3MDUsIDc1NzA5LCAKKyAgICA3NTcxMywgNzU3MTcsIDc1NzIxLCA3NTcyNSwgMCwgMCwgNzU3MjksIDc1NzMzLCA3NTczNywgNzU3NDEsIDc1NzQ1LCAKKyAgICA3NTc0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU3NTMsIDc1NzU3LCA3NTc2MSwgNzU3NjUsIDc1NzY5LCAKKyAgICA3NTc3MywgNzU3NzcsIDAsIDc1NzgxLCA3NTc4NSwgNzU3ODksIDc1NzkzLCA3NTc5NywgNzU4MDEsIDc1ODA1LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDgyMSwgNzQ4MjgsIDc0ODM1LCA3NDg0MiwgNzQ4NDksIDc0ODU1LCA3NDg2MSwgCi0gICAgNzQ4NjgsIDc0ODc1LCA3NDg4MiwgNzQ4ODksIDc0ODk2LCA3NDkwMywgNzQ5MTAsIDc0OTE3LCA3NDkyNCwgNzQ5MzAsIAotICAgIDc0OTM3LCA3NDk0NCwgNzQ5NTEsIDc0OTU4LCA3NDk2NSwgNzQ5NzIsIDc0OTc5LCA3NDk4NiwgNzQ5OTMsIDc1MDAwLCAKLSAgICA3NTAwNywgNzUwMTYsIDc1MDI1LCA3NTAzNCwgNzUwNDMsIDc1MDUyLCA3NTA2MSwgNzUwNzAsIDc1MDc5LCA3NTA4NywgCi0gICAgNzUwOTUsIDc1MTAzLCA3NTExMSwgNzUxMTksIDc1MTI3LCA3NTEzNSwgNzUxNDMsIDc1MTQ5LCA3NTE1NywgMCwgMCwgCi0gICAgNzUxNjUsIDc1MTcyLCA3NTE3OCwgNzUxODQsIDc1MTkwLCA3NTE5NiwgNzUyMDIsIDc1MjA4LCA3NTIxNCwgNzUyMjAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc1ODA5LCA3NTgxNCwgNzU4MTksIDc1ODI0LCA3NTgyOSwgNzU4MzMsIDc1ODM3LCA3NTg0MiwgNzU4NDcsIDc1ODUyLCAKKyAgICA3NTg1NywgNzU4NjIsIDc1ODY3LCA3NTg3MiwgNzU4NzcsIDc1ODgyLCA3NTg4NiwgNzU4OTEsIDc1ODk2LCA3NTkwMSwgCisgICAgNzU5MDYsIDc1OTExLCA3NTkxNiwgNzU5MjEsIDc1OTI2LCA3NTkzMSwgNzU5MzYsIDc1OTQxLCA3NTk0OCwgNzU5NTUsIAorICAgIDc1OTYyLCA3NTk2OSwgNzU5NzYsIDc1OTgzLCA3NTk5MCwgNzU5OTcsIDc2MDAzLCA3NjAwOSwgNzYwMTUsIDc2MDIxLCAKKyAgICA3NjAyNywgNzYwMzMsIDc2MDM5LCA3NjA0NSwgNzYwNDksIDc2MDU1LCAwLCAwLCA3NjA2MSwgNzYwNjYsIDc2MDcwLCAKKyAgICA3NjA3NCwgNzYwNzgsIDc2MDgyLCA3NjA4NiwgNzYwOTAsIDc2MDk0LCA3NjA5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzYxMDIsIAorICAgIDc2MTA2LCA3NjExMCwgNzYxMTQsIDc2MTE4LCA3NjEyMiwgNzYxMjYsIDc2MTMwLCA3NjEzNCwgNzYxMzgsIDc2MTQyLCAKKyAgICA3NjE0NiwgNzYxNTAsIDc2MTU0LCA3NjE1OCwgNzYxNjIsIDc2MTY2LCA3NjE3MCwgNzYxNzQsIDc2MTc4LCA3NjE4MiwgCisgICAgNzYxODYsIDc2MTkwLCAwLCAwLCAwLCAwLCA3NjE5NCwgNzYxOTgsIDc2MjAyLCA3NjIwNiwgNzYyMTAsIDc2MjE0LCAKKyAgICA3NjIxOCwgNzYyMjIsIDc2MjI2LCA3NjIzMCwgNzYyMzQsIDc2MjM4LCA3NjI0MiwgNzYyNDYsIDc2MjUwLCA3NjI1NCwgCisgICAgNzYyNTgsIDc2MjYyLCA3NjI2NiwgNzYyNzAsIDc2Mjc0LCA3NjI3OCwgNzYyODIsIDc2Mjg2LCA3NjI5MCwgNzYyOTQsIAorICAgIDc2Mjk4LCA3NjMwMiwgNzYzMDYsIDc2MzEwLCA3NjMxNCwgNzYzMTgsIDc2MzIyLCA3NjMyNiwgNzYzMzAsIDc2MzM0LCAKKyAgICA3NjMzOCwgNzYzNDIsIDc2MzQ2LCA3NjM1MCwgNzYzNTQsIDc2MzU4LCA3NjM2MiwgNzYzNjYsIDc2MzcwLCA3NjM3NCwgCisgICAgNzYzNzgsIDc2MzgyLCA3NjM4NiwgMCwgMCwgMCwgMCwgNzYzOTAsIDc2Mzk0LCA3NjM5OCwgNzY0MDIsIDc2NDA2LCAKKyAgICA3NjQxMCwgNzY0MTQsIDc2NDE4LCA3NjQyMiwgNzY0MjYsIDc2NDMwLCA3NjQzNCwgNzY0MzgsIDc2NDQyLCA3NjQ0NiwgCisgICAgNzY0NTAsIDc2NDU0LCA3NjQ1OCwgNzY0NjIsIDc2NDY2LCA3NjQ3MCwgNzY0NzQsIDc2NDc4LCA3NjQ4MiwgNzY0ODYsIAorICAgIDc2NDkwLCA3NjQ5NCwgNzY0OTgsIDc2NTAyLCA3NjUwNiwgNzY1MTAsIDc2NTE0LCA3NjUxOCwgNzY1MjIsIDc2NTI2LCAKKyAgICA3NjUzMCwgNzY1MzQsIDc2NTM4LCA3NjU0MiwgNzY1NDYsIDc2NTUwLCA3NjU1NCwgNzY1NTgsIDc2NTYyLCA3NjU2NiwgCisgICAgNzY1NzAsIDc2NTc0LCA3NjU3OCwgNzY1ODIsIDc2NTg2LCA3NjU5MCwgNzY1OTQsIDc2NTk4LCA3NjYwMiwgNzY2MDYsIAorICAgIDc2NjEwLCA3NjYxNCwgNzY2MTgsIDc2NjIyLCA3NjYyNiwgNzY2MzAsIDc2NjM0LCA3NjYzOCwgNzY2NDIsIDc2NjQ2LCAKKyAgICA3NjY1MCwgNzY2NTQsIDc2NjU4LCA3NjY2MiwgNzY2NjYsIDc2NjcwLCA3NjY3NCwgNzY2NzgsIDc2NjgyLCA3NjY4NiwgCisgICAgNzY2OTAsIDc2Njk0LCA3NjY5OCwgNzY3MDIsIDc2NzA2LCA3NjcxMCwgNzY3MTQsIDc2NzE4LCA3NjcyMiwgNzY3MjYsIAorICAgIDc2NzMwLCA3NjczNCwgNzY3MzgsIDc2NzQyLCA3Njc0NiwgNzY3NTAsIDc2NzU0LCA3Njc1OCwgNzY3NjIsIDc2NzY2LCAKKyAgICA3Njc3MCwgNzY3NzQsIDc2Nzc4LCA3Njc4MiwgNzY3ODYsIDc2NzkwLCA3Njc5NCwgNzY3OTgsIDc2ODAyLCA3NjgwNiwgCisgICAgNzY4MTAsIDc2ODE0LCA3NjgxOCwgNzY4MjIsIDc2ODI2LCA3NjgzMCwgNzY4MzQsIDc2ODM4LCA3Njg0MiwgNzY4NDYsIAorICAgIDc2ODUwLCA3Njg1NCwgNzY4NTgsIDc2ODYyLCA3Njg2NiwgNzY4NzAsIDc2ODc0LCA3Njg3OCwgNzY4ODIsIDc2ODg2LCAKKyAgICA3Njg5MCwgNzY4OTQsIDc2ODk4LCA3NjkwMiwgNzY5MDYsIDc2OTEwLCA3NjkxNCwgNzY5MTgsIDc2OTIyLCA3NjkyNiwgCisgICAgNzY5MzAsIDc2OTM0LCA3NjkzOCwgNzY5NDIsIDc2OTQ2LCA3Njk1MCwgNzY5NTQsIDc2OTU4LCA3Njk2MiwgNzY5NjYsIAorICAgIDc2OTcwLCA3Njk3NCwgNzY5NzgsIDc2OTgyLCA3Njk4NiwgNzY5OTAsIDc2OTk0LCA3Njk5OCwgNzcwMDIsIDc3MDA2LCAKKyAgICA3NzAxMCwgNzcwMTQsIDc3MDE4LCA3NzAyMiwgNzcwMjYsIDc3MDMwLCA3NzAzNCwgNzcwMzgsIDc3MDQyLCA3NzA0NiwgCisgICAgNzcwNTAsIDc3MDU0LCA3NzA1OCwgNzcwNjIsIDc3MDY2LCA3NzA3MCwgNzcwNzQsIDc3MDc4LCA3NzA4MiwgNzcwODYsIAorICAgIDc3MDkwLCA3NzA5NCwgNzcwOTgsIDc3MTAyLCA3NzEwNiwgNzcxMTAsIDc3MTE0LCA3NzExOCwgNzcxMjIsIDc3MTI2LCAKKyAgICA3NzEzMCwgNzcxMzQsIDc3MTM4LCA3NzE0MiwgNzcxNDYsIDc3MTUwLCA3NzE1NCwgNzcxNTgsIDc3MTYyLCA3NzE2NiwgCisgICAgNzcxNzAsIDc3MTc0LCA3NzE3OCwgNzcxODIsIDc3MTg2LCA3NzE5MCwgNzcxOTQsIDc3MTk4LCA3NzIwMiwgNzcyMDYsIAorICAgIDc3MjEwLCA3NzIxNCwgNzcyMTgsIDc3MjIyLCA3NzIyNiwgNzcyMzAsIDc3MjM0LCA3NzIzOCwgNzcyNDIsIDc3MjQ2LCAKKyAgICA3NzI1MCwgNzcyNTQsIDc3MjU4LCA3NzI2MiwgNzcyNjYsIDc3MjcwLCA3NzI3NCwgNzcyNzgsIDc3MjgyLCA3NzI4NiwgCisgICAgNzcyOTAsIDc3Mjk0LCA3NzI5OCwgNzczMDIsIDc3MzA2LCA3NzMxMCwgNzczMTQsIDc3MzE4LCA3NzMyMiwgNzczMjYsIAorICAgIDc3MzMwLCA3NzMzNCwgNzczMzgsIDc3MzQyLCA3NzM0NiwgNzczNTAsIDc3MzU0LCA3NzM1OCwgNzczNjIsIDc3MzY2LCAKKyAgICA3NzM3MCwgNzczNzQsIDc3Mzc4LCA3NzM4MiwgNzczODYsIDc3MzkwLCA3NzM5NCwgNzczOTgsIDc3NDAyLCA3NzQwNiwgCisgICAgNzc0MTAsIDc3NDE0LCA3NzQxOCwgNzc0MjIsIDc3NDI2LCA3NzQzMCwgNzc0MzQsIDc3NDM4LCA3NzQ0MiwgNzc0NDYsIAorICAgIDc3NDUwLCA3NzQ1NCwgNzc0NTgsIDc3NDYyLCA3NzQ2NiwgNzc0NzAsIDc3NDc0LCA3NzQ3OCwgNzc0ODIsIDc3NDg2LCAKKyAgICA3NzQ5MCwgNzc0OTQsIDc3NDk4LCA3NzUwMiwgNzc1MDYsIDc3NTEwLCA3NzUxNCwgNzc1MTgsIDc3NTIyLCA3NzUyNiwgCisgICAgNzc1MzAsIDc3NTM0LCA3NzUzOCwgNzc1NDIsIDc3NTQ2LCA3NzU1MCwgNzc1NTQsIDc3NTU4LCA3NzU2MiwgNzc1NjYsIAorICAgIDc3NTcwLCA3NzU3NCwgNzc1NzgsIDc3NTgyLCA3NzU4NiwgNzc1OTAsIDc3NTk0LCA3NzU5OCwgNzc2MDIsIDc3NjA2LCAKKyAgICA3NzYxMCwgNzc2MTQsIDc3NjE4LCA3NzYyMiwgNzc2MjYsIDc3NjMwLCA3NzYzNCwgNzc2MzgsIDc3NjQyLCA3NzY0NiwgCisgICAgNzc2NTAsIDc3NjU0LCA3NzY1OCwgNzc2NjIsIDc3NjY2LCA3NzY3MCwgNzc2NzQsIDc3Njc4LCA3NzY4MiwgNzc2ODYsIAorICAgIDc3NjkwLCA3NzY5NCwgNzc2OTgsIDc3NzAyLCA3NzcwNiwgNzc3MTAsIDc3NzE0LCA3NzcxOCwgNzc3MjIsIDc3NzI2LCAKKyAgICA3NzczMCwgNzc3MzQsIDc3NzM4LCA3Nzc0MiwgNzc3NDYsIDc3NzUwLCA3Nzc1NCwgNzc3NTgsIDc3NzYyLCA3Nzc2NiwgCisgICAgNzc3NzAsIDc3Nzc0LCA3Nzc3OCwgNzc3ODIsIDc3Nzg2LCA3Nzc5MCwgNzc3OTQsIDc3Nzk4LCA3NzgwMiwgNzc4MDYsIAorICAgIDc3ODEwLCA3NzgxNCwgNzc4MTgsIDc3ODIyLCA3NzgyNiwgNzc4MzAsIDc3ODM0LCA3NzgzOCwgNzc4NDIsIDc3ODQ2LCAKKyAgICA3Nzg1MCwgMCwgMCwgNzc4NTQsIDc3ODU4LCA3Nzg2MiwgNzc4NjYsIDc3ODcwLCA3Nzg3NCwgNzc4NzgsIDc3ODgyLCAKKyAgICA3Nzg4NiwgNzc4OTAsIDc3ODk0LCA3Nzg5OCwgNzc5MDIsIDc3OTA2LCA3NzkxMCwgNzc5MTQsIDc3OTE4LCA3NzkyMiwgCisgICAgNzc5MjYsIDc3OTMwLCA3NzkzNCwgNzc5MzgsIDc3OTQyLCA3Nzk0NiwgNzc5NTAsIDc3OTU0LCA3Nzk1OCwgNzc5NjIsIAorICAgIDc3OTY2LCA3Nzk3MCwgNzc5NzQsIDc3OTc4LCA3Nzk4MiwgNzc5ODYsIDc3OTkwLCA3Nzk5NCwgNzc5OTgsIDc4MDAyLCAKKyAgICA3ODAwNiwgNzgwMTAsIDc4MDE0LCA3ODAxOCwgNzgwMjIsIDc4MDI2LCA3ODAzMCwgNzgwMzQsIDc4MDM4LCA3ODA0MiwgCisgICAgNzgwNDYsIDc4MDUwLCA3ODA1NCwgNzgwNTgsIDc4MDYyLCA3ODA2NiwgNzgwNzAsIDc4MDc0LCA3ODA3OCwgNzgwODIsIAorICAgIDc4MDg2LCA3ODA5MCwgNzgwOTQsIDc4MDk4LCA3ODEwMiwgNzgxMDYsIDc4MTEwLCA3ODExNCwgNzgxMTgsIDc4MTIyLCAKKyAgICA3ODEyNiwgNzgxMzAsIDc4MTM0LCA3ODEzOCwgNzgxNDIsIDc4MTQ2LCA3ODE1MCwgNzgxNTQsIDc4MTU4LCA3ODE2MiwgCisgICAgNzgxNjYsIDc4MTcwLCA3ODE3NCwgNzgxNzgsIDc4MTgyLCA3ODE4NiwgNzgxOTAsIDc4MTk0LCA3ODE5OCwgNzgyMDIsIAorICAgIDc4MjA2LCA3ODIxMCwgNzgyMTQsIDc4MjE4LCA3ODIyMiwgNzgyMjYsIDc4MjMwLCA3ODIzNCwgNzgyMzgsIDc4MjQyLCAKKyAgICA3ODI0NiwgNzgyNTAsIDc4MjU0LCA3ODI1OCwgNzgyNjIsIDc4MjY2LCA3ODI3MCwgNzgyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDc1MjI2LCA3NTIzMCwgNzUyMzQsIDc1MjM4LCA3NTI0MiwgNzUyNDYsIDc1MjUwLCA3NTI1NCwgCi0gICAgNzUyNTgsIDc1MjYyLCA3NTI2NiwgNzUyNzAsIDc1Mjc0LCA3NTI3OCwgNzUyODIsIDc1Mjg2LCA3NTI5MCwgNzUyOTQsIAotICAgIDc1Mjk4LCA3NTMwMiwgNzUzMDYsIDc1MzEwLCA3NTMxNCwgMCwgMCwgMCwgMCwgNzUzMTgsIDc1MzIyLCA3NTMyNiwgCi0gICAgNzUzMzAsIDc1MzM0LCA3NTMzOCwgNzUzNDIsIDc1MzQ2LCA3NTM1MCwgNzUzNTQsIDc1MzU4LCA3NTM2MiwgNzUzNjYsIAotICAgIDc1MzcwLCA3NTM3NCwgNzUzNzgsIDc1MzgyLCA3NTM4NiwgNzUzOTAsIDc1Mzk0LCA3NTM5OCwgNzU0MDIsIDc1NDA2LCAKLSAgICA3NTQxMCwgNzU0MTQsIDc1NDE4LCA3NTQyMiwgNzU0MjYsIDc1NDMwLCA3NTQzNCwgNzU0MzgsIDc1NDQyLCA3NTQ0NiwgCi0gICAgNzU0NTAsIDc1NDU0LCA3NTQ1OCwgNzU0NjIsIDc1NDY2LCA3NTQ3MCwgNzU0NzQsIDc1NDc4LCA3NTQ4MiwgNzU0ODYsIAotICAgIDc1NDkwLCA3NTQ5NCwgNzU0OTgsIDc1NTAyLCA3NTUwNiwgNzU1MTAsIDAsIDAsIDAsIDAsIDc1NTE0LCA3NTUxOCwgCi0gICAgNzU1MjIsIDc1NTI2LCA3NTUzMCwgNzU1MzQsIDc1NTM4LCA3NTU0MiwgNzU1NDYsIDc1NTUwLCA3NTU1NCwgNzU1NTgsIAotICAgIDc1NTYyLCA3NTU2NiwgNzU1NzAsIDc1NTc0LCA3NTU3OCwgNzU1ODIsIDc1NTg2LCA3NTU5MCwgNzU1OTQsIDc1NTk4LCAKLSAgICA3NTYwMiwgNzU2MDYsIDc1NjEwLCA3NTYxNCwgNzU2MTgsIDc1NjIyLCA3NTYyNiwgNzU2MzAsIDc1NjM0LCA3NTYzOCwgCi0gICAgNzU2NDIsIDc1NjQ2LCA3NTY1MCwgNzU2NTQsIDc1NjU4LCA3NTY2MiwgNzU2NjYsIDc1NjcwLCA3NTY3NCwgNzU2NzgsIAotICAgIDc1NjgyLCA3NTY4NiwgNzU2OTAsIDc1Njk0LCA3NTY5OCwgNzU3MDIsIDc1NzA2LCA3NTcxMCwgNzU3MTQsIDc1NzE4LCAKLSAgICA3NTcyMiwgNzU3MjYsIDc1NzMwLCA3NTczNCwgNzU3MzgsIDc1NzQyLCA3NTc0NiwgNzU3NTAsIDc1NzU0LCA3NTc1OCwgCi0gICAgNzU3NjIsIDc1NzY2LCA3NTc3MCwgNzU3NzQsIDc1Nzc4LCA3NTc4MiwgNzU3ODYsIDc1NzkwLCA3NTc5NCwgNzU3OTgsIAotICAgIDc1ODAyLCA3NTgwNiwgNzU4MTAsIDc1ODE0LCA3NTgxOCwgNzU4MjIsIDc1ODI2LCA3NTgzMCwgNzU4MzQsIDc1ODM4LCAKLSAgICA3NTg0MiwgNzU4NDYsIDc1ODUwLCA3NTg1NCwgNzU4NTgsIDc1ODYyLCA3NTg2NiwgNzU4NzAsIDc1ODc0LCA3NTg3OCwgCi0gICAgNzU4ODIsIDc1ODg2LCA3NTg5MCwgNzU4OTQsIDc1ODk4LCA3NTkwMiwgNzU5MDYsIDc1OTEwLCA3NTkxNCwgNzU5MTgsIAotICAgIDc1OTIyLCA3NTkyNiwgNzU5MzAsIDc1OTM0LCA3NTkzOCwgNzU5NDIsIDc1OTQ2LCA3NTk1MCwgNzU5NTQsIDc1OTU4LCAKLSAgICA3NTk2MiwgNzU5NjYsIDc1OTcwLCA3NTk3NCwgNzU5NzgsIDc1OTgyLCA3NTk4NiwgNzU5OTAsIDc1OTk0LCA3NTk5OCwgCi0gICAgNzYwMDIsIDc2MDA2LCA3NjAxMCwgNzYwMTQsIDc2MDE4LCA3NjAyMiwgNzYwMjYsIDc2MDMwLCA3NjAzNCwgNzYwMzgsIAotICAgIDc2MDQyLCA3NjA0NiwgNzYwNTAsIDc2MDU0LCA3NjA1OCwgNzYwNjIsIDc2MDY2LCA3NjA3MCwgNzYwNzQsIDc2MDc4LCAKLSAgICA3NjA4MiwgNzYwODYsIDc2MDkwLCA3NjA5NCwgNzYwOTgsIDc2MTAyLCA3NjEwNiwgNzYxMTAsIDc2MTE0LCA3NjExOCwgCi0gICAgNzYxMjIsIDc2MTI2LCA3NjEzMCwgNzYxMzQsIDc2MTM4LCA3NjE0MiwgNzYxNDYsIDc2MTUwLCA3NjE1NCwgNzYxNTgsIAotICAgIDc2MTYyLCA3NjE2NiwgNzYxNzAsIDc2MTc0LCA3NjE3OCwgNzYxODIsIDc2MTg2LCA3NjE5MCwgNzYxOTQsIDc2MTk4LCAKLSAgICA3NjIwMiwgNzYyMDYsIDc2MjEwLCA3NjIxNCwgNzYyMTgsIDc2MjIyLCA3NjIyNiwgNzYyMzAsIDc2MjM0LCA3NjIzOCwgCi0gICAgNzYyNDIsIDc2MjQ2LCA3NjI1MCwgNzYyNTQsIDc2MjU4LCA3NjI2MiwgNzYyNjYsIDc2MjcwLCA3NjI3NCwgNzYyNzgsIAotICAgIDc2MjgyLCA3NjI4NiwgNzYyOTAsIDc2Mjk0LCA3NjI5OCwgNzYzMDIsIDc2MzA2LCA3NjMxMCwgNzYzMTQsIDc2MzE4LCAKLSAgICA3NjMyMiwgNzYzMjYsIDc2MzMwLCA3NjMzNCwgNzYzMzgsIDc2MzQyLCA3NjM0NiwgNzYzNTAsIDc2MzU0LCA3NjM1OCwgCi0gICAgNzYzNjIsIDc2MzY2LCA3NjM3MCwgNzYzNzQsIDc2Mzc4LCA3NjM4MiwgNzYzODYsIDc2MzkwLCA3NjM5NCwgNzYzOTgsIAotICAgIDc2NDAyLCA3NjQwNiwgNzY0MTAsIDc2NDE0LCA3NjQxOCwgNzY0MjIsIDc2NDI2LCA3NjQzMCwgNzY0MzQsIDc2NDM4LCAKLSAgICA3NjQ0MiwgNzY0NDYsIDc2NDUwLCA3NjQ1NCwgNzY0NTgsIDc2NDYyLCA3NjQ2NiwgNzY0NzAsIDc2NDc0LCA3NjQ3OCwgCi0gICAgNzY0ODIsIDc2NDg2LCA3NjQ5MCwgNzY0OTQsIDc2NDk4LCA3NjUwMiwgNzY1MDYsIDc2NTEwLCA3NjUxNCwgNzY1MTgsIAotICAgIDc2NTIyLCA3NjUyNiwgNzY1MzAsIDc2NTM0LCA3NjUzOCwgNzY1NDIsIDc2NTQ2LCA3NjU1MCwgNzY1NTQsIDc2NTU4LCAKLSAgICA3NjU2MiwgNzY1NjYsIDc2NTcwLCA3NjU3NCwgNzY1NzgsIDc2NTgyLCA3NjU4NiwgNzY1OTAsIDc2NTk0LCA3NjU5OCwgCi0gICAgNzY2MDIsIDc2NjA2LCA3NjYxMCwgNzY2MTQsIDc2NjE4LCA3NjYyMiwgNzY2MjYsIDc2NjMwLCA3NjYzNCwgNzY2MzgsIAotICAgIDc2NjQyLCA3NjY0NiwgNzY2NTAsIDc2NjU0LCA3NjY1OCwgNzY2NjIsIDc2NjY2LCA3NjY3MCwgNzY2NzQsIDc2Njc4LCAKLSAgICA3NjY4MiwgNzY2ODYsIDc2NjkwLCA3NjY5NCwgNzY2OTgsIDc2NzAyLCA3NjcwNiwgNzY3MTAsIDc2NzE0LCA3NjcxOCwgMCwgCi0gICAgMCwgNzY3MjIsIDc2NzI2LCA3NjczMCwgNzY3MzQsIDc2NzM4LCA3Njc0MiwgNzY3NDYsIDc2NzUwLCA3Njc1NCwgNzY3NTgsIAotICAgIDc2NzYyLCA3Njc2NiwgNzY3NzAsIDc2Nzc0LCA3Njc3OCwgNzY3ODIsIDc2Nzg2LCA3Njc5MCwgNzY3OTQsIDc2Nzk4LCAKLSAgICA3NjgwMiwgNzY4MDYsIDc2ODEwLCA3NjgxNCwgNzY4MTgsIDc2ODIyLCA3NjgyNiwgNzY4MzAsIDc2ODM0LCA3NjgzOCwgCi0gICAgNzY4NDIsIDc2ODQ2LCA3Njg1MCwgNzY4NTQsIDc2ODU4LCA3Njg2MiwgNzY4NjYsIDc2ODcwLCA3Njg3NCwgNzY4NzgsIAotICAgIDc2ODgyLCA3Njg4NiwgNzY4OTAsIDc2ODk0LCA3Njg5OCwgNzY5MDIsIDc2OTA2LCA3NjkxMCwgNzY5MTQsIDc2OTE4LCAKLSAgICA3NjkyMiwgNzY5MjYsIDc2OTMwLCA3NjkzNCwgNzY5MzgsIDc2OTQyLCA3Njk0NiwgNzY5NTAsIDc2OTU0LCA3Njk1OCwgCi0gICAgNzY5NjIsIDc2OTY2LCAwLCAwLCA3Njk3MCwgNzY5NzQsIDc2OTc4LCA3Njk4MiwgNzY5ODYsIDc2OTkwLCA3Njk5NCwgCi0gICAgNzY5OTgsIDc3MDAyLCA3NzAwNiwgNzcwMTAsIDc3MDE0LCA3NzAxOCwgNzcwMjIsIDc3MDI2LCA3NzAzMCwgNzcwMzQsIAotICAgIDc3MDM4LCA3NzA0MiwgNzcwNDYsIDc3MDUwLCA3NzA1NCwgNzcwNTgsIDc3MDYyLCA3NzA2NiwgNzcwNzAsIDc3MDc0LCAKLSAgICA3NzA3OCwgNzcwODIsIDc3MDg2LCA3NzA5MCwgNzcwOTQsIDc3MDk4LCA3NzEwMiwgNzcxMDYsIDc3MTEwLCA3NzExNCwgCi0gICAgNzcxMTgsIDc3MTIyLCA3NzEyNiwgNzcxMzAsIDc3MTM0LCA3NzEzOCwgNzcxNDIsIDc3MTQ2LCA3NzE1MCwgNzcxNTQsIAotICAgIDc3MTU4LCA3NzE2MiwgNzcxNjYsIDc3MTcwLCA3NzE3NCwgNzcxNzgsIDc3MTgyLCA3NzE4NiwgNzcxOTAsIDc3MTk0LCAKLSAgICA3NzE5OCwgNzcyMDIsIDc3MjA2LCA3NzIxMCwgNzcyMTQsIDc3MjE4LCA3NzIyMiwgNzcyMjYsIDc3MjMwLCA3NzIzNCwgCi0gICAgNzcyMzgsIDc3MjQyLCA3NzI0NiwgNzcyNTAsIDc3MjU0LCA3NzI1OCwgNzcyNjIsIDc3MjY2LCA3NzI3MCwgNzcyNzQsIAotICAgIDc3Mjc4LCA3NzI4MiwgNzcyODYsIDc3MjkwLCA3NzI5NCwgNzcyOTgsIDc3MzAyLCA3NzMwNiwgNzczMTAsIDc3MzE0LCAKLSAgICA3NzMxOCwgNzczMjIsIDc3MzI2LCA3NzMzMCwgNzczMzQsIDc3MzM4LCA3NzM0MiwgNzczNDYsIDc3MzUwLCA3NzM1NCwgCi0gICAgNzczNTgsIDc3MzYyLCA3NzM2NiwgNzczNzAsIDc3Mzc0LCA3NzM3OCwgNzczODIsIDc3Mzg2LCA3NzM5MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgyNzgsIDc4MjgzLCA3ODI4OCwgNzgyOTMsIDc4Mjk4LCA3ODMwMywgNzgzMTEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4MzE2LCA3ODMyMywgNzgzMzAsIDc4MzM3LCA3ODM0NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNzgzNTEsIDc4MzU4LCA3ODM2NSwgNzgzNzUsIDc4MzgxLCA3ODM4NywgNzgzOTMsIDc4Mzk5LCAKKyAgICA3ODQwNSwgNzg0MTEsIDc4NDE4LCA3ODQyNCwgNzg0MzAsIDc4NDM2LCA3ODQ0NSwgNzg0NTQsIDc4NDY2LCA3ODQ3OCwgCisgICAgNzg0ODQsIDc4NDkwLCA3ODQ5NiwgNzg1MDMsIDc4NTEwLCA3ODUxNywgNzg1MjQsIDc4NTMxLCAwLCA3ODUzOCwgNzg1NDUsIAorICAgIDc4NTUyLCA3ODU2MCwgNzg1NjcsIDAsIDc4NTc0LCAwLCA3ODU4MSwgNzg1ODgsIDAsIDc4NTk1LCA3ODYwMywgMCwgCisgICAgNzg2MTAsIDc4NjE3LCA3ODYyNCwgNzg2MzEsIDc4NjM4LCA3ODY0NSwgNzg2NTIsIDc4NjU5LCA3ODY2NiwgNzg2NzMsIAorICAgIDc4Njc4LCA3ODY4NSwgNzg2OTIsIDc4Njk4LCA3ODcwNCwgNzg3MTAsIDc4NzE2LCA3ODcyMiwgNzg3MjgsIDc4NzM0LCAKKyAgICA3ODc0MCwgNzg3NDYsIDc4NzUyLCA3ODc1OCwgNzg3NjQsIDc4NzcwLCA3ODc3NiwgNzg3ODIsIDc4Nzg4LCA3ODc5NCwgCisgICAgNzg4MDAsIDc4ODA2LCA3ODgxMiwgNzg4MTgsIDc4ODI0LCA3ODgzMCwgNzg4MzYsIDc4ODQyLCA3ODg0OCwgNzg4NTQsIAorICAgIDc4ODYwLCA3ODg2NiwgNzg4NzIsIDc4ODc4LCA3ODg4NCwgNzg4OTAsIDc4ODk2LCA3ODkwMiwgNzg5MDgsIDc4OTE0LCAKKyAgICA3ODkyMCwgNzg5MjYsIDc4OTMyLCA3ODkzOCwgNzg5NDQsIDc4OTUwLCA3ODk1NiwgNzg5NjIsIDc4OTY4LCA3ODk3NCwgCisgICAgNzg5ODAsIDc4OTg2LCA3ODk5MiwgNzg5OTgsIDc5MDA0LCA3OTAxMCwgNzkwMTYsIDc5MDIyLCA3OTAyOCwgNzkwMzQsIAorICAgIDc5MDQwLCA3OTA0NiwgNzkwNTIsIDc5MDU4LCA3OTA2NCwgNzkwNzAsIDc5MDc2LCA3OTA4MiwgNzkwODgsIDc5MDk0LCAKKyAgICA3OTEwMCwgNzkxMDYsIDc5MTEyLCA3OTExOCwgNzkxMjQsIDc5MTMwLCA3OTEzNiwgNzkxNDIsIDc5MTQ4LCA3OTE1NiwgCisgICAgNzkxNjQsIDc5MTcwLCA3OTE3NiwgNzkxODIsIDc5MTg4LCA3OTE5NywgNzkyMDYsIDc5MjE0LCA3OTIyMiwgNzkyMzAsIAorICAgIDc5MjM4LCA3OTI0NiwgNzkyNTQsIDc5MjYyLCA3OTI3MCwgNzkyNzcsIDc5Mjg0LCA3OTI5NCwgNzkzMDQsIDc5MzA4LCAKKyAgICA3OTMxMiwgNzkzMTcsIDc5MzIyLCA3OTMyNywgNzkzMzIsIDc5MzQxLCA3OTM1MCwgNzkzNTYsIDc5MzYyLCA3OTM2OSwgCisgICAgNzkzNzYsIDc5MzgzLCA3OTM4NywgNzkzOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDc5Mzk5LCA3OTQwNSwgNzk0MTEsIDc5NDE3LCA3OTQyMywgNzk0MjgsIDc5NDMzLCA3OTQzOSwgNzk0NDUsIAorICAgIDc5NDUxLCA3OTQ1NywgNzk0NjUsIDc5NDcxLCA3OTQ3NywgNzk0ODUsIDc5NDkzLCA3OTUwMSwgNzk1MDksIDc5NTE0LCAKKyAgICA3OTUxOSwgNzk1MjQsIDc5NTI5LCA3OTU0MiwgNzk1NTUsIDc5NTY1LCA3OTU3NSwgNzk1ODYsIDc5NTk3LCA3OTYwOCwgCisgICAgNzk2MTksIDc5NjI5LCA3OTYzOSwgNzk2NTAsIDc5NjYxLCA3OTY3MiwgNzk2ODMsIDc5NjkzLCA3OTcwMywgNzk3MTMsIAorICAgIDc5NzI5LCA3OTc0NSwgNzk3NjEsIDc5NzY4LCA3OTc3NSwgNzk3ODIsIDc5Nzg5LCA3OTc5OSwgNzk4MDksIDc5ODE5LCAKKyAgICA3OTgzMSwgNzk4NDEsIDc5ODQ5LCA3OTg1NywgNzk4NjYsIDc5ODc0LCA3OTg4NCwgNzk4OTIsIDc5OTAwLCA3OTkwOCwgCisgICAgNzk5MTcsIDc5OTI1LCA3OTkzNSwgNzk5NDMsIDc5OTUxLCA3OTk1OSwgNzk5NjksIDc5OTc3LCA3OTk4NCwgNzk5OTEsIAorICAgIDc5OTk4LCA4MDAwNSwgODAwMTMsIDgwMDIxLCA4MDAyOSwgODAwMzcsIDgwMDQ1LCA4MDA1NCwgODAwNjIsIDgwMDcwLCAKKyAgICA4MDA3OCwgODAwODYsIDgwMDk0LCA4MDEwMywgODAxMTEsIDgwMTE5LCA4MDEyNywgODAxMzUsIDgwMTQzLCA4MDE1MSwgCisgICAgODAxNTksIDgwMTY3LCA4MDE3NSwgODAxODMsIDgwMTkyLCA4MDIwMCwgODAyMTAsIDgwMjE4LCA4MDIyNiwgODAyMzQsIAorICAgIDgwMjQ0LCA4MDI1MiwgODAyNjAsIDgwMjY4LCA4MDI3NiwgODAyODUsIDgwMjk0LCA4MDMwMiwgODAzMTIsIDgwMzIwLCAKKyAgICA4MDMyOCwgODAzMzYsIDgwMzQ1LCA4MDM1MywgODAzNjMsIDgwMzcxLCA4MDM3OCwgODAzODUsIDgwMzkzLCA4MDQwMCwgCisgICAgODA0MDksIDgwNDE2LCA4MDQyNCwgODA0MzIsIDgwNDQxLCA4MDQ0OSwgODA0NTksIDgwNDY3LCA4MDQ3NSwgODA0ODMsIAorICAgIDgwNDkzLCA4MDUwMSwgODA1MDgsIDgwNTE1LCA4MDUyMywgODA1MzAsIDgwNTM5LCA4MDU0NiwgODA1NTYsIDgwNTY2LCAKKyAgICA4MDU3NywgODA1ODYsIDgwNTk1LCA4MDYwNCwgODA2MTMsIDgwNjIyLCA4MDYzMiwgODA2NDMsIDgwNjU0LCA4MDY2NCwgCisgICAgODA2NzUsIDgwNjg3LCA4MDY5NywgODA3MDYsIDgwNzE1LCA4MDcyMywgODA3MzIsIDgwNzQyLCA4MDc1MCwgODA3NTksIAorICAgIDgwNzY4LCA4MDc3NiwgODA3ODUsIDgwNzk1LCA4MDgwMywgODA4MTIsIDgwODIxLCA4MDgyOSwgODA4MzgsIDgwODQ4LCAKKyAgICA4MDg1NiwgODA4NjYsIDgwODc0LCA4MDg4NCwgODA4OTIsIDgwOTAwLCA4MDkwOSwgODA5MTcsIDgwOTI3LCA4MDkzNSwgCisgICAgODA5NDMsIDgwOTUzLCA4MDk2MSwgODA5NjgsIDgwOTc1LCA4MDk4NCwgODA5OTMsIDgxMDAxLCA4MTAxMCwgODEwMjAsIAorICAgIDgxMDI4LCA4MTAzOSwgODEwNDcsIDgxMDU1LCA4MTA2MiwgODEwNzAsIDgxMDc5LCA4MTA4NiwgODEwOTYsIDgxMTA2LCAKKyAgICA4MTExNywgODExMjcsIDgxMTM4LCA4MTE0NiwgODExNTQsIDgxMTYzLCA4MTE3MSwgODExODAsIDgxMTg4LCA4MTE5NiwgCisgICAgODEyMDUsIDgxMjEzLCA4MTIyMiwgODEyMzAsIDgxMjM3LCA4MTI0NCwgODEyNTEsIDgxMjU4LCA4MTI2NiwgODEyNzQsIAorICAgIDgxMjgyLCA4MTI5MCwgODEyOTksIDgxMzA3LCA4MTMxNSwgODEzMjQsIDgxMzMyLCA4MTM0MCwgODEzNDgsIDgxMzU3LCAKKyAgICA4MTM2NSwgODEzNzMsIDgxMzgxLCA4MTM4OSwgODEzOTcsIDgxNDA1LCA4MTQxMywgODE0MjEsIDgxNDI5LCA4MTQzOCwgCisgICAgODE0NDYsIDgxNDU0LCA4MTQ2MiwgODE0NzAsIDgxNDc4LCA4MTQ4NywgODE0OTYsIDgxNTA0LCA4MTUxMiwgODE1MjAsIAorICAgIDgxNTI5LCA4MTUzNywgODE1NDYsIDgxNTUzLCA4MTU2MCwgODE1NjgsIDgxNTc1LCA4MTU4MywgODE1OTEsIDgxNjAwLCAKKyAgICA4MTYwOCwgODE2MTcsIDgxNjI1LCA4MTYzMywgODE2NDMsIDgxNjUwLCA4MTY1NywgODE2NjUsIDgxNjcyLCA4MTY4MCwgCisgICAgODE2OTAsIDgxNzAxLCA4MTcwOSwgODE3MTgsIDgxNzI2LCA4MTczNSwgODE3NDMsIDgxNzUyLCA4MTc2MCwgODE3NjksIAorICAgIDgxNzc3LCA4MTc4NiwgODE3OTUsIDgxODAzLCA4MTgxMSwgODE4MTksIDgxODI4LCA4MTgzNSwgODE4NDMsIDgxODUyLCAKKyAgICA4MTg2MSwgODE4NzAsIDgxODgwLCA4MTg4OCwgODE4OTgsIDgxOTA2LCA4MTkxNiwgODE5MjQsIDgxOTM0LCA4MTk0MiwgCisgICAgODE5NTIsIDgxOTYwLCA4MTk2OSwgODE5NzYsIDgxOTg1LCA4MTk5MiwgODIwMDIsIDgyMDEwLCA4MjAyMCwgODIwMjgsIAorICAgIDgyMDM4LCA4MjA0NiwgODIwNTQsIDgyMDYyLCA4MjA3MSwgODIwNzksIDgyMDg4LCA4MjA5NywgODIxMDYsIDgyMTE1LCAKKyAgICA4MjEyNSwgODIxMzMsIDgyMTQzLCA4MjE1MSwgODIxNjEsIDgyMTY5LCA4MjE3OSwgODIxODcsIDgyMTk3LCA4MjIwNSwgCisgICAgODIyMTQsIDgyMjIxLCA4MjIzMCwgODIyMzcsIDgyMjQ3LCA4MjI1NSwgODIyNjUsIDgyMjczLCA4MjI4MywgODIyOTEsIAorICAgIDgyMjk5LCA4MjMwNywgODIzMTYsIDgyMzI0LCA4MjMzMywgODIzNDIsIDgyMzUxLCA4MjM2MCwgODIzNjgsIDgyMzc2LCAKKyAgICA4MjM4NSwgODIzOTMsIDgyNDAyLCA4MjQxMSwgODI0MTksIDgyNDI3LCA4MjQzNSwgODI0NDQsIDgyNDUyLCA4MjQ2MCwgCisgICAgODI0NjksIDgyNDc3LCA4MjQ4NSwgODI0OTMsIDgyNTAxLCA4MjUwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgODI1MTEsIDgyNTIxLCA4MjUzMSwgODI1NDEsIDgyNTUxLCA4MjU2MiwgODI1NzIsIDgyNTgyLCAKKyAgICA4MjU5MywgODI2MDIsIDgyNjExLCA4MjYyMCwgODI2MzEsIDgyNjQxLCA4MjY1MSwgODI2NjMsIDgyNjczLCA4MjY4MywgCisgICAgODI2OTMsIDgyNzAzLCA4MjcxMywgODI3MjMsIDgyNzMzLCA4Mjc0MywgODI3NTMsIDgyNzYzLCA4Mjc3MywgODI3ODQsIAorICAgIDgyNzk1LCA4MjgwNSwgODI4MTUsIDgyODI3LCA4MjgzOCwgODI4NDksIDgyODU5LCA4Mjg2OSwgODI4NzksIDgyODg5LCAKKyAgICA4Mjg5OSwgODI5MDksIDgyOTE5LCA4MjkzMSwgODI5NDEsIDgyOTUxLCA4Mjk2MywgODI5NzQsIDgyOTg1LCA4Mjk5NSwgCisgICAgODMwMDUsIDgzMDE1LCA4MzAyNSwgODMwMzcsIDgzMDQ3LCA4MzA1NywgODMwNjgsIDgzMDc5LCA4MzA4OSwgODMwOTksIAorICAgIDgzMTA4LCA4MzExNywgODMxMjYsIDgzMTM1LCA4MzE0NCwgODMxNTQsIDAsIDAsIDgzMTY0LCA4MzE3NCwgODMxODQsIAorICAgIDgzMTk0LCA4MzIwNCwgODMyMTYsIDgzMjI2LCA4MzIzNiwgODMyNDgsIDgzMjU4LCA4MzI3MCwgODMyNzksIDgzMjg4LCAKKyAgICA4MzI5OSwgODMzMDksIDgzMzIxLCA4MzMzMiwgODMzNDUsIDgzMzU1LCA4MzM2NywgODMzNzYsIDgzMzg3LCA4MzM5OCwgCisgICAgODM0MTEsIDgzNDIxLCA4MzQzMSwgODM0NDEsIDgzNDUxLCA4MzQ2MSwgODM0NzAsIDgzNDc5LCA4MzQ4OCwgODM0OTcsIAorICAgIDgzNTA3LCA4MzUxNywgODM1MjcsIDgzNTM3LCA4MzU0NywgODM1NTcsIDgzNTY3LCA4MzU3NywgODM1ODcsIDgzNTk3LCAKKyAgICA4MzYwNywgODM2MTcsIDgzNjI2LCA4MzYzNSwgODM2NDQsIDgzNjU0LCA4MzY2NCwgODM2NzQsIDgzNjg0LCA4MzY5NCwgCisgICAgODM3MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzNzE1LCA4MzczMCwgCisgICAgODM3NDUsIDgzNzUxLCA4Mzc1NywgODM3NjMsIDgzNzY5LCA4Mzc3NSwgODM3ODEsIDgzNzg3LCA4Mzc5MywgODM4MDEsIAorICAgIDgzODA1LCA4MzgwOCwgMCwgMCwgODM4MTYsIDgzODE5LCA4MzgyMiwgODM4MjUsIDgzODI4LCA4MzgzMSwgODM4MzQsIAorICAgIDgzODM3LCA4Mzg0MCwgODM4NDMsIDgzODQ2LCA4Mzg0OSwgODM4NTIsIDgzODU1LCA4Mzg1OCwgODM4NjEsIDgzODY0LCAKKyAgICA4Mzg3MiwgODM4ODEsIDgzODkyLCA4MzkwMCwgODM5MDgsIDgzOTE3LCA4MzkyNiwgODM5MzcsIDgzOTQ5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4Mzk1OCwgODM5NjMsIDgzOTY4LCA4Mzk3NSwgODM5ODIsIDgzOTg4LCA4Mzk5NCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgODM5OTksIDg0MDA5LCA4NDAxOSwgODQwMjksIDg0MDM4LCA4NDA0OSwgODQwNTgsIDg0MDY3LCAKKyAgICA4NDA3NywgODQwODcsIDg0MDk5LCA4NDExMSwgODQxMjIsIDg0MTMzLCA4NDE0NCwgODQxNTUsIDg0MTY1LCA4NDE3NSwgCisgICAgODQxODUsIDg0MTk1LCA4NDIwNiwgODQyMTcsIDg0MjIxLCA4NDIyNiwgODQyMzUsIDg0MjQ0LCA4NDI0OCwgODQyNTIsIAorICAgIDg0MjU2LCA4NDI2MSwgODQyNjYsIDg0MjcxLCA4NDI3NiwgODQyNzksIDg0MjgzLCAwLCA4NDI4OCwgODQyOTEsIDg0Mjk0LCAKKyAgICA4NDI5OCwgODQzMDIsIDg0MzA3LCA4NDMxMSwgODQzMTUsIDg0MzIwLCA4NDMyNSwgODQzMzIsIDg0MzM5LCA4NDM0MiwgCisgICAgODQzNDUsIDg0MzQ4LCA4NDM1MSwgODQzNTQsIDg0MzU4LCA4NDM2MiwgMCwgODQzNjYsIDg0MzcxLCA4NDM3NSwgODQzNzksIAorICAgIDAsIDAsIDAsIDAsIDg0Mzg0LCA4NDM4OSwgODQzOTYsIDg0NDAxLCA4NDQwNiwgMCwgODQ0MTEsIDg0NDE2LCA4NDQyMSwgCisgICAgODQ0MjYsIDg0NDMxLCA4NDQzNiwgODQ0NDEsIDg0NDQ2LCA4NDQ1MSwgODQ0NTYsIDg0NDYxLCA4NDQ2NiwgODQ0NzUsIAorICAgIDg0NDg0LCA4NDQ5MiwgODQ1MDAsIDg0NTA5LCA4NDUxOCwgODQ1MjcsIDg0NTM2LCA4NDU0NCwgODQ1NTIsIDg0NTYwLCAKKyAgICA4NDU2OCwgODQ1NzMsIDg0NTc4LCA4NDU4NCwgODQ1OTAsIDg0NTk2LCA4NDYwMiwgODQ2MTAsIDg0NjE4LCA4NDYyNCwgCisgICAgODQ2MzAsIDg0NjM2LCA4NDY0MiwgODQ2NDgsIDg0NjU0LCA4NDY2MCwgODQ2NjYsIDg0NjcxLCA4NDY3NiwgODQ2ODEsIAorICAgIDg0Njg2LCA4NDY5MSwgODQ2OTYsIDg0NzAxLCA4NDcwNiwgODQ3MTIsIDg0NzE4LCA4NDcyNCwgODQ3MzAsIDg0NzM2LCAKKyAgICA4NDc0MiwgODQ3NDgsIDg0NzU0LCA4NDc2MCwgODQ3NjYsIDg0NzcyLCA4NDc3OCwgODQ3ODQsIDg0NzkwLCA4NDc5NiwgCisgICAgODQ4MDIsIDg0ODA4LCA4NDgxNCwgODQ4MjAsIDg0ODI2LCA4NDgzMiwgODQ4MzgsIDg0ODQ0LCA4NDg1MCwgODQ4NTYsIAorICAgIDg0ODYyLCA4NDg2OCwgODQ4NzQsIDg0ODgwLCA4NDg4NiwgODQ4OTIsIDg0ODk4LCA4NDkwNCwgODQ5MTAsIDg0OTE2LCAKKyAgICA4NDkyMiwgODQ5MjgsIDg0OTM0LCA4NDk0MCwgODQ5NDYsIDg0OTUyLCA4NDk1OCwgODQ5NjQsIDg0OTcwLCA4NDk3NiwgCisgICAgODQ5ODIsIDg0OTg4LCA4NDk5NCwgODUwMDAsIDg1MDA2LCA4NTAxMiwgODUwMTgsIDg1MDI0LCA4NTAzMCwgODUwMzYsIAorICAgIDg1MDQyLCA4NTA0OCwgODUwNTQsIDg1MDYwLCA4NTA2NiwgODUwNzEsIDg1MDc2LCA4NTA4MSwgODUwODYsIDg1MDkyLCAKKyAgICA4NTA5OCwgODUxMDQsIDg1MTEwLCA4NTExNiwgODUxMjIsIDg1MTI4LCA4NTEzNCwgODUxNDAsIDg1MTQ2LCA4NTE1MywgCisgICAgODUxNjAsIDg1MTY1LCA4NTE3MCwgODUxNzUsIDg1MTgwLCA4NTE5MiwgODUyMDQsIDg1MjE1LCA4NTIyNiwgODUyMzgsIAorICAgIDg1MjUwLCA4NTI1OCwgMCwgMCwgODUyNjYsIDAsIDg1Mjc0LCA4NTI3OCwgODUyODIsIDg1Mjg1LCA4NTI4OSwgODUyOTMsIAorICAgIDg1Mjk2LCA4NTI5OSwgODUzMDMsIDg1MzA3LCA4NTMxMCwgODUzMTMsIDg1MzE2LCA4NTMxOSwgODUzMjQsIDg1MzI3LCAKKyAgICA4NTMzMSwgODUzMzQsIDg1MzM3LCA4NTM0MCwgODUzNDMsIDg1MzQ2LCA4NTM0OSwgODUzNTIsIDg1MzU1LCA4NTM1OCwgCisgICAgODUzNjEsIDg1MzY0LCA4NTM2OCwgODUzNzIsIDg1Mzc2LCA4NTM4MCwgODUzODUsIDg1MzkwLCA4NTM5NiwgODU0MDIsIAorICAgIDg1NDA4LCA4NTQxMywgODU0MTksIDg1NDI1LCA4NTQzMSwgODU0MzYsIDg1NDQyLCA4NTQ0OCwgODU0NTMsIDg1NDU4LCAKKyAgICA4NTQ2NCwgODU0NjksIDg1NDc1LCA4NTQ4MSwgODU0ODYsIDg1NDkyLCA4NTQ5OCwgODU1MDMsIDg1NTA5LCA4NTUxNSwgCisgICAgODU1MjEsIDg1NTI3LCA4NTUzMywgODU1MzcsIDg1NTQyLCA4NTU0NiwgODU1NTEsIDg1NTU1LCA4NTU2MCwgODU1NjUsIAorICAgIDg1NTcxLCA4NTU3NywgODU1ODMsIDg1NTg4LCA4NTU5NCwgODU2MDAsIDg1NjA2LCA4NTYxMSwgODU2MTcsIDg1NjIzLCAKKyAgICA4NTYyOCwgODU2MzMsIDg1NjM5LCA4NTY0NCwgODU2NTAsIDg1NjU2LCA4NTY2MSwgODU2NjcsIDg1NjczLCA4NTY3OCwgCisgICAgODU2ODQsIDg1NjkwLCA4NTY5NiwgODU3MDIsIDg1NzA4LCA4NTcxMywgODU3MTcsIDg1NzIyLCA4NTcyNCwgODU3MjksIAorICAgIDg1NzM0LCA4NTc0MCwgODU3NDUsIDg1NzUwLCA4NTc1NCwgODU3NjAsIDg1NzY1LCA4NTc3MCwgODU3NzUsIDg1NzgwLCAKKyAgICA4NTc4NSwgODU3OTAsIDg1Nzk1LCA4NTgwMSwgODU4MDcsIDg1ODEzLCA4NTgyMSwgODU4MjUsIDg1ODI5LCA4NTgzMywgCisgICAgODU4MzcsIDg1ODQxLCA4NTg0NSwgODU4NTAsIDg1ODU1LCA4NTg2MCwgODU4NjUsIDg1ODY5LCA4NTg3NCwgODU4NzksIAorICAgIDg1ODg0LCA4NTg4OSwgODU4OTQsIDg1ODk5LCA4NTkwNCwgODU5MDksIDg1OTEzLCA4NTkxNywgODU5MjIsIDg1OTI3LCAKKyAgICA4NTkzMiwgODU5MzcsIDg1OTQxLCA4NTk0NiwgODU5NTEsIDg1OTU2LCA4NTk2MSwgODU5NjUsIDg1OTcwLCA4NTk3NSwgCisgICAgODU5ODAsIDg1OTg1LCA4NTk4OSwgODU5OTQsIDg1OTk5LCA4NjAwMywgODYwMDgsIDg2MDEzLCA4NjAxOCwgODYwMjMsIAorICAgIDg2MDI4LCA4NjAzMywgODYwNDAsIDg2MDQ3LCA4NjA1MSwgODYwNTYsIDg2MDYxLCA4NjA2NiwgODYwNzEsIDg2MDc2LCAKKyAgICA4NjA4MSwgODYwODYsIDg2MDkxLCA4NjA5NiwgODYxMDEsIDg2MTA2LCA4NjExMSwgODYxMTYsIDg2MTIxLCA4NjEyNiwgCisgICAgODYxMzEsIDg2MTM2LCA4NjE0MSwgODYxNDYsIDg2MTUxLCA4NjE1NiwgODYxNjEsIDg2MTY2LCA4NjE3MSwgODYxNzYsIAorICAgIDg2MTgxLCA4NjE4NiwgODYxOTEsIDg2MTk2LCAwLCAwLCAwLCA4NjIwMSwgODYyMDUsIDg2MjEwLCA4NjIxNCwgODYyMTksIAorICAgIDg2MjI0LCAwLCAwLCA4NjIyOCwgODYyMzMsIDg2MjM4LCA4NjI0MiwgODYyNDcsIDg2MjUyLCAwLCAwLCA4NjI1NywgCisgICAgODYyNjIsIDg2MjY2LCA4NjI3MSwgODYyNzYsIDg2MjgxLCAwLCAwLCA4NjI4NiwgODYyOTEsIDg2Mjk2LCAwLCAwLCAwLCAKKyAgICA4NjMwMCwgODYzMDQsIDg2MzA4LCA4NjMxMiwgODYzMTUsIDg2MzE5LCA4NjMyMywgMCwgODYzMjcsIDg2MzMzLCA4NjMzNiwgCisgICAgODYzNDAsIDg2MzQzLCA4NjM0NywgODYzNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2MzU1LCA4NjM2MSwgCisgICAgODYzNjcsIDg2MzczLCA4NjM3OSwgMCwgMCwgODYzODMsIDg2Mzg5LCA4NjM5NSwgODY0MDEsIDg2NDA3LCA4NjQxMywgCisgICAgODY0MjAsIDg2NDI3LCA4NjQzNCwgODY0NDEsIDg2NDQ4LCA4NjQ1NSwgMCwgODY0NjIsIDg2NDY5LCA4NjQ3NiwgODY0ODIsIAorICAgIDg2NDg5LCA4NjQ5NiwgODY1MDMsIDg2NTEwLCA4NjUxNiwgODY1MjMsIDg2NTMwLCA4NjUzNywgODY1NDQsIDg2NTUwLCAKKyAgICA4NjU1NywgODY1NjQsIDg2NTcxLCA4NjU3OCwgODY1ODQsIDg2NTkxLCA4NjU5OCwgODY2MDUsIDg2NjEyLCA4NjYxOSwgCisgICAgODY2MjYsIDg2NjMzLCAwLCA4NjY0MCwgODY2NDYsIDg2NjUzLCA4NjY2MCwgODY2NjcsIDg2Njc0LCA4NjY4MCwgODY2ODcsIAorICAgIDg2Njk0LCA4NjcwMSwgODY3MDgsIDg2NzE1LCA4NjcyMiwgODY3MjksIDg2NzM1LCA4Njc0MiwgODY3NDksIDg2NzU2LCAKKyAgICA4Njc2MywgMCwgODY3NzAsIDg2Nzc3LCAwLCA4Njc4NCwgODY3OTEsIDg2Nzk4LCA4NjgwNSwgODY4MTIsIDg2ODE5LCAKKyAgICA4NjgyNiwgODY4MzMsIDg2ODQwLCA4Njg0NywgODY4NTQsIDg2ODYxLCA4Njg2OCwgODY4NzUsIDg2ODgyLCAwLCAwLCAKKyAgICA4Njg4OCwgODY4OTMsIDg2ODk4LCA4NjkwMywgODY5MDgsIDg2OTEzLCA4NjkxOCwgODY5MjMsIDg2OTI4LCA4NjkzMywgCisgICAgODY5MzgsIDg2OTQzLCA4Njk0OCwgODY5NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2OTU4LCA4Njk2NSwgCisgICAgODY5NzIsIDg2OTc5LCA4Njk4NiwgODY5OTMsIDg3MDAwLCA4NzAwNywgODcwMTQsIDg3MDIxLCA4NzAyOCwgODcwMzUsIAorICAgIDg3MDQyLCA4NzA0OSwgODcwNTYsIDg3MDYzLCA4NzA3MCwgODcwNzcsIDg3MDg0LCA4NzA5MSwgODcwOTksIDg3MTA3LCAKKyAgICA4NzExNCwgODcxMjEsIDg3MTI2LCA4NzEzNCwgODcxNDIsIDg3MTQ5LCA4NzE1NiwgODcxNjEsIDg3MTY4LCA4NzE3MywgCisgICAgODcxNzgsIDg3MTg1LCA4NzE5MCwgODcxOTUsIDg3MjAwLCA4NzIwOCwgODcyMTMsIDg3MjE4LCA4NzIyNSwgODcyMzAsIAorICAgIDg3MjM1LCA4NzI0MiwgODcyNDksIDg3MjU0LCA4NzI1OSwgODcyNjQsIDg3MjY5LCA4NzI3NCwgODcyNzksIDg3Mjg0LCAKKyAgICA4NzI4OSwgODcyOTQsIDg3MzAxLCA4NzMwNiwgODczMTMsIDg3MzE4LCA4NzMyMywgODczMjgsIDg3MzMzLCA4NzMzOCwgCisgICAgODczNDMsIDg3MzQ4LCA4NzM1MywgODczNTgsIDg3MzYzLCA4NzM2OCwgODczNzUsIDg3MzgyLCA4NzM4OSwgODczOTYsIAorICAgIDg3NDAyLCA4NzQwNywgODc0MTQsIDg3NDE5LCA4NzQyNCwgODc0MzMsIDg3NDQwLCA4NzQ0OSwgODc0NTYsIDg3NDYxLCAKKyAgICA4NzQ2NiwgODc0NzQsIDg3NDc5LCA4NzQ4NCwgODc0ODksIDg3NDk0LCA4NzQ5OSwgODc1MDYsIDg3NTExLCA4NzUxNiwgCisgICAgODc1MjEsIDg3NTI2LCA4NzUzMSwgODc1MzgsIDg3NTQ1LCA4NzU1MiwgODc1NTksIDg3NTY2LCA4NzU3MywgODc1ODAsIAorICAgIDg3NTg3LCA4NzU5NCwgODc2MDEsIDg3NjA4LCA4NzYxNSwgODc2MjIsIDg3NjI5LCA4NzYzNiwgODc2NDMsIDg3NjUwLCAKKyAgICA4NzY1NywgODc2NjQsIDg3NjcxLCA4NzY3OCwgODc2ODUsIDg3NjkyLCA4NzY5OSwgODc3MDYsIDg3NzEzLCA4NzcyMCwgCisgICAgODc3MjcsIDAsIDAsIDAsIDAsIDAsIDg3NzM0LCA4Nzc0MiwgODc3NTAsIDAsIDAsIDAsIDAsIDg3NzU1LCA4Nzc1OSwgCisgICAgODc3NjMsIDg3NzY3LCA4Nzc3MSwgODc3NzUsIDg3Nzc5LCA4Nzc4MywgODc3ODcsIDg3NzkxLCA4Nzc5NiwgODc4MDEsIAorICAgIDg3ODA2LCA4NzgxMSwgODc4MTYsIDg3ODIxLCA4NzgyNiwgODc4MzEsIDg3ODM2LCA4Nzg0MiwgODc4NDgsIDg3ODU0LCAKKyAgICA4Nzg2MSwgODc4NjgsIDg3ODc1LCA4Nzg4MiwgODc4ODksIDg3ODk2LCA4NzkwMiwgODc5MDgsIDg3OTE0LCA4NzkyMSwgCisgICAgODc5MjgsIDg3OTM1LCA4Nzk0MiwgODc5NDksIDg3OTU2LCA4Nzk2MywgODc5NzAsIDg3OTc3LCA4Nzk4NCwgODc5OTEsIAorICAgIDg3OTk4LCA4ODAwNSwgODgwMTIsIDAsIDAsIDAsIDg4MDE5LCA4ODAyNywgODgwMzUsIDg4MDQzLCA4ODA1MSwgODgwNTksIAorICAgIDg4MDY5LCA4ODA3OSwgODgwODcsIDg4MDk1LCA4ODEwMywgODgxMTEsIDg4MTE5LCA4ODEyNSwgODgxMzIsIDg4MTQxLCAKKyAgICA4ODE1MCwgODgxNTksIDg4MTY4LCA4ODE3NywgODgxODYsIDg4MTk2LCA4ODIwNywgODgyMTcsIDg4MjI4LCA4ODIzNywgCisgICAgODgyNDYsIDg4MjU1LCA4ODI2NSwgODgyNzYsIDg4Mjg2LCA4ODI5NywgODgzMDgsIDg4MzE3LCA4ODMyNSwgODgzMzEsIAorICAgIDg4MzM3LCA4ODM0MywgODgzNDksIDg4MzU3LCA4ODM2NSwgODgzNzEsIDg4Mzc4LCA4ODM4OCwgODgzOTUsIDg4NDAyLCAKKyAgICA4ODQwOSwgODg0MTYsIDg4NDIzLCA4ODQzMywgODg0NDAsIDg4NDQ3LCA4ODQ1NSwgODg0NjMsIDg4NDcyLCA4ODQ4MSwgCisgICAgODg0OTAsIDg4NDk5LCA4ODUwOCwgODg1MTYsIDg4NTI1LCA4ODUzNCwgODg1NDMsIDg4NTQ3LCA4ODU1NCwgODg1NTksIAorICAgIDg4NTY0LCA4ODU2OCwgODg1NzIsIDg4NTc2LCA4ODU4MCwgODg1ODUsIDg4NTkwLCA4ODU5NiwgODg2MDIsIDg4NjA2LCAKKyAgICA4ODYxMiwgODg2MTYsIDg4NjIwLCA4ODYyNCwgODg2MjgsIDg4NjMyLCA4ODYzNiwgODg2NDIsIDAsIDAsIDAsIDAsIDAsIAorICAgIDg4NjQ2LCA4ODY1MSwgODg2NTYsIDg4NjYxLCA4ODY2NiwgODg2NzMsIDg4Njc4LCA4ODY4MywgODg2ODgsIDg4NjkzLCAKKyAgICA4ODY5OCwgODg3MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3Mzk0LCA3NzM5OSwgNzc0MDQsIDc3NDA5LCA3NzQxNCwgCi0gICAgNzc0MTksIDc3NDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NzQzMiwgNzc0MzksIDc3NDQ2LCAKLSAgICA3NzQ1MywgNzc0NjAsIDAsIDAsIDAsIDAsIDAsIDc3NDY3LCA3NzQ3NCwgNzc0ODEsIDc3NDkxLCA3NzQ5NywgNzc1MDMsIAotICAgIDc3NTA5LCA3NzUxNSwgNzc1MjEsIDc3NTI3LCA3NzUzNCwgNzc1NDAsIDc3NTQ2LCA3NzU1MiwgNzc1NjEsIDc3NTcwLCAKLSAgICA3NzU4MiwgNzc1OTQsIDc3NjAwLCA3NzYwNiwgNzc2MTIsIDc3NjE5LCA3NzYyNiwgNzc2MzMsIDc3NjQwLCA3NzY0NywgMCwgCi0gICAgNzc2NTQsIDc3NjYxLCA3NzY2OCwgNzc2NzYsIDc3NjgzLCAwLCA3NzY5MCwgMCwgNzc2OTcsIDc3NzA0LCAwLCA3NzcxMSwgCi0gICAgNzc3MTksIDAsIDc3NzI2LCA3NzczMywgNzc3NDAsIDc3NzQ3LCA3Nzc1NCwgNzc3NjEsIDc3NzY4LCA3Nzc3NSwgNzc3ODIsIAotICAgIDc3Nzg5LCA3Nzc5NCwgNzc4MDEsIDc3ODA4LCA3NzgxNCwgNzc4MjAsIDc3ODI2LCA3NzgzMiwgNzc4MzgsIDc3ODQ0LCAKLSAgICA3Nzg1MCwgNzc4NTYsIDc3ODYyLCA3Nzg2OCwgNzc4NzQsIDc3ODgwLCA3Nzg4NiwgNzc4OTIsIDc3ODk4LCA3NzkwNCwgCi0gICAgNzc5MTAsIDc3OTE2LCA3NzkyMiwgNzc5MjgsIDc3OTM0LCA3Nzk0MCwgNzc5NDYsIDc3OTUyLCA3Nzk1OCwgNzc5NjQsIAotICAgIDc3OTcwLCA3Nzk3NiwgNzc5ODIsIDc3OTg4LCA3Nzk5NCwgNzgwMDAsIDc4MDA2LCA3ODAxMiwgNzgwMTgsIDc4MDI0LCAKLSAgICA3ODAzMCwgNzgwMzYsIDc4MDQyLCA3ODA0OCwgNzgwNTQsIDc4MDYwLCA3ODA2NiwgNzgwNzIsIDc4MDc4LCA3ODA4NCwgCi0gICAgNzgwOTAsIDc4MDk2LCA3ODEwMiwgNzgxMDgsIDc4MTE0LCA3ODEyMCwgNzgxMjYsIDc4MTMyLCA3ODEzOCwgNzgxNDQsIAotICAgIDc4MTUwLCA3ODE1NiwgNzgxNjIsIDc4MTY4LCA3ODE3NCwgNzgxODAsIDc4MTg2LCA3ODE5MiwgNzgxOTgsIDc4MjA0LCAKLSAgICA3ODIxMCwgNzgyMTYsIDc4MjIyLCA3ODIyOCwgNzgyMzQsIDc4MjQwLCA3ODI0NiwgNzgyNTIsIDc4MjU4LCA3ODI2NCwgCi0gICAgNzgyNzIsIDc4MjgwLCA3ODI4NiwgNzgyOTIsIDc4Mjk4LCA3ODMwNCwgNzgzMTMsIDc4MzIyLCA3ODMzMCwgNzgzMzgsIAotICAgIDc4MzQ2LCA3ODM1NCwgNzgzNjIsIDc4MzcwLCA3ODM3OCwgNzgzODYsIDc4MzkzLCA3ODQwMCwgNzg0MTAsIDc4NDIwLCAKLSAgICA3ODQyNCwgNzg0MjgsIDc4NDMzLCA3ODQzOCwgNzg0NDMsIDc4NDQ4LCA3ODQ1NywgNzg0NjYsIDc4NDcyLCA3ODQ3OCwgCi0gICAgNzg0ODUsIDc4NDkyLCA3ODQ5OSwgNzg1MDMsIDc4NTA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3ODUxNSwgNzg1MjEsIDc4NTI3LCA3ODUzMywgNzg1MzksIDc4NTQ0LCA3ODU0OSwgNzg1NTUsIAotICAgIDc4NTYxLCA3ODU2NywgNzg1NzMsIDc4NTgxLCA3ODU4NywgNzg1OTMsIDc4NjAxLCA3ODYwOSwgNzg2MTcsIDc4NjI1LCAKLSAgICA3ODYzMCwgNzg2MzUsIDc4NjQwLCA3ODY0NSwgNzg2NTcsIDc4NjY5LCA3ODY3OSwgNzg2ODksIDc4NzAwLCA3ODcxMSwgCi0gICAgNzg3MjIsIDc4NzMzLCA3ODc0MywgNzg3NTMsIDc4NzY0LCA3ODc3NSwgNzg3ODYsIDc4Nzk3LCA3ODgwNywgNzg4MTcsIAotICAgIDc4ODI3LCA3ODg0MiwgNzg4NTcsIDc4ODcyLCA3ODg3OSwgNzg4ODYsIDc4ODkzLCA3ODkwMCwgNzg5MTAsIDc4OTIwLCAKLSAgICA3ODkzMCwgNzg5NDEsIDc4OTUxLCA3ODk1OSwgNzg5NjcsIDc4OTc2LCA3ODk4NCwgNzg5OTMsIDc5MDAxLCA3OTAwOSwgCi0gICAgNzkwMTcsIDc5MDI2LCA3OTAzNCwgNzkwNDMsIDc5MDUxLCA3OTA1OSwgNzkwNjcsIDc5MDc2LCA3OTA4NCwgNzkwOTEsIAotICAgIDc5MDk4LCA3OTEwNSwgNzkxMTIsIDc5MTIwLCA3OTEyOCwgNzkxMzYsIDc5MTQ0LCA3OTE1MiwgNzkxNjEsIDc5MTY5LCAKLSAgICA3OTE3NywgNzkxODUsIDc5MTkzLCA3OTIwMSwgNzkyMTAsIDc5MjE4LCA3OTIyNiwgNzkyMzQsIDc5MjQyLCA3OTI1MCwgCi0gICAgNzkyNTgsIDc5MjY2LCA3OTI3NCwgNzkyODIsIDc5MjkwLCA3OTI5OSwgNzkzMDcsIDc5MzE2LCA3OTMyNCwgNzkzMzIsIAotICAgIDc5MzQwLCA3OTM0OSwgNzkzNTcsIDc5MzY1LCA3OTM3MywgNzkzODEsIDc5MzkwLCA3OTM5OSwgNzk0MDcsIDc5NDE2LCAKLSAgICA3OTQyNCwgNzk0MzIsIDc5NDQwLCA3OTQ0OSwgNzk0NTcsIDc5NDY2LCA3OTQ3NCwgNzk0ODEsIDc5NDg4LCA3OTQ5NiwgCi0gICAgNzk1MDMsIDc5NTExLCA3OTUxOCwgNzk1MjYsIDc5NTM0LCA3OTU0MywgNzk1NTEsIDc5NTYwLCA3OTU2OCwgNzk1NzYsIAotICAgIDc5NTg0LCA3OTU5MywgNzk2MDEsIDc5NjA4LCA3OTYxNSwgNzk2MjMsIDc5NjMwLCA3OTYzOCwgNzk2NDUsIDc5NjU1LCAKLSAgICA3OTY2NSwgNzk2NzUsIDc5Njg0LCA3OTY5MywgNzk3MDIsIDc5NzExLCA3OTcyMCwgNzk3MzAsIDc5NzQxLCA3OTc1MiwgCi0gICAgNzk3NjIsIDc5NzczLCA3OTc4NCwgNzk3OTQsIDc5ODAzLCA3OTgxMiwgNzk4MjAsIDc5ODI5LCA3OTgzOCwgNzk4NDYsIAotICAgIDc5ODU1LCA3OTg2NCwgNzk4NzIsIDc5ODgxLCA3OTg5MCwgNzk4OTgsIDc5OTA3LCA3OTkxNiwgNzk5MjQsIDc5OTMzLCAKLSAgICA3OTk0MiwgNzk5NTAsIDc5OTU5LCA3OTk2NywgNzk5NzYsIDc5OTg0LCA3OTk5MiwgODAwMDEsIDgwMDA5LCA4MDAxOCwgCi0gICAgODAwMjYsIDgwMDM0LCA4MDA0MywgODAwNTEsIDgwMDU4LCA4MDA2NSwgODAwNzQsIDgwMDgzLCA4MDA5MSwgODAxMDAsIAotICAgIDgwMTA5LCA4MDExNywgODAxMjcsIDgwMTM1LCA4MDE0MywgODAxNTAsIDgwMTU4LCA4MDE2NiwgODAxNzMsIDgwMTgzLCAKLSAgICA4MDE5MywgODAyMDQsIDgwMjE0LCA4MDIyNSwgODAyMzMsIDgwMjQxLCA4MDI1MCwgODAyNTgsIDgwMjY3LCA4MDI3NSwgCi0gICAgODAyODMsIDgwMjkyLCA4MDMwMCwgODAzMDksIDgwMzE3LCA4MDMyNCwgODAzMzEsIDgwMzM4LCA4MDM0NSwgODAzNTMsIAotICAgIDgwMzYxLCA4MDM2OSwgODAzNzcsIDgwMzg2LCA4MDM5NCwgODA0MDIsIDgwNDExLCA4MDQxOSwgODA0MjcsIDgwNDM1LCAKLSAgICA4MDQ0NCwgODA0NTIsIDgwNDYwLCA4MDQ2OCwgODA0NzYsIDgwNDg0LCA4MDQ5MiwgODA1MDAsIDgwNTA4LCA4MDUxNiwgCi0gICAgODA1MjUsIDgwNTMzLCA4MDU0MSwgODA1NDksIDgwNTU3LCA4MDU2NSwgODA1NzQsIDgwNTgzLCA4MDU5MSwgODA1OTksIAotICAgIDgwNjA3LCA4MDYxNiwgODA2MjQsIDgwNjMzLCA4MDY0MCwgODA2NDcsIDgwNjU1LCA4MDY2MiwgODA2NzAsIDgwNjc4LCAKLSAgICA4MDY4NywgODA2OTUsIDgwNzA0LCA4MDcxMiwgODA3MjAsIDgwNzMwLCA4MDczNywgODA3NDQsIDgwNzUyLCA4MDc1OSwgCi0gICAgODA3NjcsIDgwNzc3LCA4MDc4OCwgODA3OTYsIDgwODA1LCA4MDgxMywgODA4MjIsIDgwODMwLCA4MDgzOSwgODA4NDcsIAotICAgIDgwODU2LCA4MDg2NCwgODA4NzMsIDgwODgyLCA4MDg5MCwgODA4OTgsIDgwOTA2LCA4MDkxNSwgODA5MjIsIDgwOTMwLCAKLSAgICA4MDkzOSwgODA5NDgsIDgwOTU3LCA4MDk2NiwgODA5NzQsIDgwOTgzLCA4MDk5MSwgODEwMDAsIDgxMDA4LCA4MTAxNywgCi0gICAgODEwMjUsIDgxMDM0LCA4MTA0MiwgODEwNTAsIDgxMDU3LCA4MTA2NSwgODEwNzIsIDgxMDgxLCA4MTA4OSwgODEwOTgsIAotICAgIDgxMTA2LCA4MTExNSwgODExMjMsIDgxMTMxLCA4MTEzOSwgODExNDgsIDgxMTU2LCA4MTE2NSwgODExNzQsIDgxMTgzLCAKLSAgICA4MTE5MiwgODEyMDEsIDgxMjA5LCA4MTIxOCwgODEyMjYsIDgxMjM1LCA4MTI0MywgODEyNTIsIDgxMjYwLCA4MTI2OSwgCi0gICAgODEyNzcsIDgxMjg1LCA4MTI5MiwgODEzMDAsIDgxMzA3LCA4MTMxNiwgODEzMjQsIDgxMzMzLCA4MTM0MSwgODEzNTAsIAotICAgIDgxMzU4LCA4MTM2NiwgODEzNzQsIDgxMzgzLCA4MTM5MSwgODE0MDAsIDgxNDA5LCA4MTQxOCwgODE0MjcsIDgxNDM1LCAKLSAgICA4MTQ0MywgODE0NTIsIDgxNDYwLCA4MTQ2OSwgODE0NzgsIDgxNDg2LCA4MTQ5NCwgODE1MDIsIDgxNTExLCA4MTUxOSwgCi0gICAgODE1MjcsIDgxNTM2LCA4MTU0NCwgODE1NTIsIDgxNTYwLCA4MTU2OCwgODE1NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxNTc4LCA4MTU4OCwgODE1OTgsIDgxNjA4LCA4MTYxOCwgODE2MjksIDgxNjM5LCAKLSAgICA4MTY0OSwgODE2NjAsIDgxNjY5LCA4MTY3OCwgODE2ODcsIDgxNjk3LCA4MTcwNywgODE3MTcsIDgxNzI4LCA4MTczOCwgCi0gICAgODE3NDgsIDgxNzU4LCA4MTc2OCwgODE3NzgsIDgxNzg4LCA4MTc5OCwgODE4MDgsIDgxODE4LCA4MTgyOCwgODE4MzgsIAotICAgIDgxODQ5LCA4MTg2MCwgODE4NzAsIDgxODgwLCA4MTg5MSwgODE5MDIsIDgxOTEzLCA4MTkyMywgODE5MzMsIDgxOTQzLCAKLSAgICA4MTk1MywgODE5NjMsIDgxOTczLCA4MTk4MywgODE5OTQsIDgyMDA0LCA4MjAxNCwgODIwMjUsIDgyMDM2LCA4MjA0NywgCi0gICAgODIwNTcsIDgyMDY3LCA4MjA3NywgODIwODcsIDgyMDk4LCA4MjEwOCwgODIxMTgsIDgyMTI5LCA4MjE0MCwgODIxNTAsIAotICAgIDgyMTYwLCA4MjE2OSwgODIxNzgsIDgyMTg3LCA4MjE5NiwgODIyMDUsIDgyMjE1LCAwLCAwLCA4MjIyNSwgODIyMzUsIAotICAgIDgyMjQ1LCA4MjI1NSwgODIyNjUsIDgyMjc2LCA4MjI4NiwgODIyOTYsIDgyMzA3LCA4MjMxNywgODIzMjgsIDgyMzM3LCAKLSAgICA4MjM0NiwgODIzNTcsIDgyMzY3LCA4MjM3OCwgODIzODksIDgyNDAxLCA4MjQxMSwgODI0MjIsIDgyNDMxLCA4MjQ0MSwgCi0gICAgODI0NTEsIDgyNDYzLCA4MjQ3MywgODI0ODMsIDgyNDkzLCA4MjUwMywgODI1MTMsIDgyNTIyLCA4MjUzMSwgODI1NDAsIAotICAgIDgyNTQ5LCA4MjU1OSwgODI1NjksIDgyNTc5LCA4MjU4OSwgODI1OTksIDgyNjA5LCA4MjYxOSwgODI2MjksIDgyNjM5LCAKLSAgICA4MjY0OSwgODI2NTksIDgyNjY5LCA4MjY3OCwgODI2ODcsIDgyNjk2LCA4MjcwNiwgODI3MTYsIDgyNzI2LCA4MjczNiwgCi0gICAgODI3NDYsIDgyNzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Mjc2NywgODI3ODIsIAotICAgIDgyNzk3LCA4MjgwMywgODI4MDksIDgyODE1LCA4MjgyMSwgODI4MjcsIDgyODMzLCA4MjgzOSwgODI4NDUsIDgyODUzLCAKLSAgICA4Mjg1NywgODI4NjAsIDAsIDAsIDgyODY4LCA4Mjg3MSwgODI4NzQsIDgyODc3LCA4Mjg4MCwgODI4ODMsIDgyODg2LCAKLSAgICA4Mjg4OSwgODI4OTIsIDgyODk1LCA4Mjg5OCwgODI5MDEsIDgyOTA0LCA4MjkwNywgODI5MTAsIDgyOTEzLCA4MjkxNiwgCi0gICAgODI5MjQsIDgyOTMzLCA4Mjk0NCwgODI5NTIsIDgyOTYwLCA4Mjk2OSwgODI5NzgsIDgyOTg5LCA4MzAwMSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgODMwMTAsIDgzMDE1LCA4MzAyMCwgODMwMjcsIDgzMDM0LCA4MzA0MCwgODMwNDYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDgzMDUxLCA4MzA2MSwgODMwNzEsIDgzMDgxLCA4MzA5MCwgODMxMDEsIDgzMTEwLCA4MzExOSwgCi0gICAgODMxMjksIDgzMTM5LCA4MzE1MSwgODMxNjMsIDgzMTc0LCA4MzE4NSwgODMxOTYsIDgzMjA3LCA4MzIxNywgODMyMjcsIAotICAgIDgzMjM3LCA4MzI0NywgODMyNTgsIDgzMjY5LCA4MzI3MywgODMyNzgsIDgzMjg3LCA4MzI5NiwgODMzMDAsIDgzMzA0LCAKLSAgICA4MzMwOCwgODMzMTMsIDgzMzE4LCA4MzMyMywgODMzMjgsIDgzMzMxLCA4MzMzNSwgMCwgODMzNDAsIDgzMzQzLCA4MzM0NiwgCi0gICAgODMzNTAsIDgzMzU0LCA4MzM1OSwgODMzNjMsIDgzMzY3LCA4MzM3MiwgODMzNzcsIDgzMzg0LCA4MzM5MSwgODMzOTQsIAotICAgIDgzMzk3LCA4MzQwMCwgODM0MDMsIDgzNDA2LCA4MzQxMCwgODM0MTQsIDAsIDgzNDE4LCA4MzQyMywgODM0MjcsIDgzNDMxLCAKLSAgICAwLCAwLCAwLCAwLCA4MzQzNiwgODM0NDEsIDgzNDQ4LCA4MzQ1MywgODM0NTgsIDAsIDgzNDYzLCA4MzQ2OCwgODM0NzMsIAotICAgIDgzNDc4LCA4MzQ4MywgODM0ODgsIDgzNDkzLCA4MzQ5OCwgODM1MDMsIDgzNTA4LCA4MzUxMywgODM1MTgsIDgzNTI3LCAKLSAgICA4MzUzNiwgODM1NDQsIDgzNTUyLCA4MzU2MSwgODM1NzAsIDgzNTc5LCA4MzU4OCwgODM1OTYsIDgzNjA0LCA4MzYxMiwgCi0gICAgODM2MjAsIDgzNjI1LCA4MzYzMCwgODM2MzYsIDgzNjQyLCA4MzY0OCwgODM2NTQsIDgzNjYyLCA4MzY3MCwgODM2NzYsIAotICAgIDgzNjgyLCA4MzY4OCwgODM2OTQsIDgzNzAwLCA4MzcwNiwgODM3MTIsIDgzNzE4LCA4MzcyMywgODM3MjgsIDgzNzMzLCAKLSAgICA4MzczOCwgODM3NDMsIDgzNzQ4LCA4Mzc1MywgODM3NTgsIDgzNzY0LCA4Mzc3MCwgODM3NzYsIDgzNzgyLCA4Mzc4OCwgCi0gICAgODM3OTQsIDgzODAwLCA4MzgwNiwgODM4MTIsIDgzODE4LCA4MzgyNCwgODM4MzAsIDgzODM2LCA4Mzg0MiwgODM4NDgsIAotICAgIDgzODU0LCA4Mzg2MCwgODM4NjYsIDgzODcyLCA4Mzg3OCwgODM4ODQsIDgzODkwLCA4Mzg5NiwgODM5MDIsIDgzOTA4LCAKLSAgICA4MzkxNCwgODM5MjAsIDgzOTI2LCA4MzkzMiwgODM5MzgsIDgzOTQ0LCA4Mzk1MCwgODM5NTYsIDgzOTYyLCA4Mzk2OCwgCi0gICAgODM5NzQsIDgzOTgwLCA4Mzk4NiwgODM5OTIsIDgzOTk4LCA4NDAwNCwgODQwMTAsIDg0MDE2LCA4NDAyMiwgODQwMjgsIAotICAgIDg0MDM0LCA4NDA0MCwgODQwNDYsIDg0MDUyLCA4NDA1OCwgODQwNjQsIDg0MDcwLCA4NDA3NiwgODQwODIsIDg0MDg4LCAKLSAgICA4NDA5NCwgODQxMDAsIDg0MTA2LCA4NDExMiwgODQxMTgsIDg0MTIzLCA4NDEyOCwgODQxMzMsIDg0MTM4LCA4NDE0NCwgCi0gICAgODQxNTAsIDg0MTU2LCA4NDE2MiwgODQxNjgsIDg0MTc0LCA4NDE4MCwgODQxODYsIDg0MTkyLCA4NDE5OCwgODQyMDQsIAotICAgIDg0MjEwLCA4NDIxNSwgODQyMjAsIDg0MjI1LCA4NDIzMCwgODQyNDIsIDg0MjU0LCA4NDI2NSwgODQyNzYsIDg0Mjg4LCAKLSAgICA4NDMwMCwgODQzMDgsIDAsIDAsIDg0MzE2LCAwLCA4NDMyNCwgODQzMjgsIDg0MzMyLCA4NDMzNSwgODQzMzksIDg0MzQzLCAKLSAgICA4NDM0NiwgODQzNDksIDg0MzUzLCA4NDM1NywgODQzNjAsIDg0MzYzLCA4NDM2NiwgODQzNjksIDg0Mzc0LCA4NDM3NywgCi0gICAgODQzODEsIDg0Mzg0LCA4NDM4NywgODQzOTAsIDg0MzkzLCA4NDM5NiwgODQzOTksIDg0NDAyLCA4NDQwNSwgODQ0MDgsIAotICAgIDg0NDExLCA4NDQxNCwgODQ0MTgsIDg0NDIyLCA4NDQyNiwgODQ0MzAsIDg0NDM1LCA4NDQ0MCwgODQ0NDYsIDg0NDUyLCAKLSAgICA4NDQ1OCwgODQ0NjMsIDg0NDY5LCA4NDQ3NSwgODQ0ODEsIDg0NDg2LCA4NDQ5MiwgODQ0OTgsIDg0NTAzLCA4NDUwOCwgCi0gICAgODQ1MTMsIDg0NTE4LCA4NDUyNCwgODQ1MzAsIDg0NTM1LCA4NDU0MCwgODQ1NDYsIDg0NTUxLCA4NDU1NywgODQ1NjMsIAotICAgIDg0NTY5LCA4NDU3NSwgODQ1ODEsIDg0NTg1LCA4NDU5MCwgODQ1OTQsIDg0NTk5LCA4NDYwMywgODQ2MDgsIDg0NjEzLCAKLSAgICA4NDYxOSwgODQ2MjUsIDg0NjMxLCA4NDYzNiwgODQ2NDIsIDg0NjQ4LCA4NDY1NCwgODQ2NTksIDg0NjY1LCA4NDY3MSwgCi0gICAgODQ2NzYsIDg0NjgxLCA4NDY4NiwgODQ2OTEsIDg0Njk3LCA4NDcwMywgODQ3MDgsIDg0NzEzLCA4NDcxOSwgODQ3MjQsIAotICAgIDg0NzMwLCA4NDczNiwgODQ3NDIsIDg0NzQ4LCA4NDc1NCwgODQ3NTksIDg0NzYzLCA4NDc2OCwgODQ3NzEsIDg0Nzc2LCAKLSAgICA4NDc4MSwgODQ3ODcsIDg0NzkyLCA4NDc5NywgODQ4MDEsIDg0ODA3LCA4NDgxMiwgODQ4MTcsIDg0ODIyLCA4NDgyNywgCi0gICAgODQ4MzIsIDg0ODM3LCA4NDg0MiwgODQ4NDgsIDg0ODU0LCA4NDg2MCwgODQ4NjgsIDg0ODcyLCA4NDg3NiwgODQ4ODAsIAotICAgIDg0ODg0LCA4NDg4OCwgODQ4OTIsIDg0ODk3LCA4NDkwMiwgODQ5MDcsIDg0OTEyLCA4NDkxNywgODQ5MjIsIDg0OTI3LCAKLSAgICA4NDkzMiwgODQ5MzcsIDg0OTQyLCA4NDk0NywgODQ5NTIsIDg0OTU3LCA4NDk2MSwgODQ5NjUsIDg0OTcwLCA4NDk3NSwgCi0gICAgODQ5ODAsIDg0OTg1LCA4NDk4OSwgODQ5OTQsIDg0OTk5LCA4NTAwNCwgODUwMDksIDg1MDEzLCA4NTAxOCwgODUwMjMsIAotICAgIDg1MDI4LCA4NTAzMywgODUwMzcsIDg1MDQyLCA4NTA0NywgODUwNTEsIDg1MDU2LCA4NTA2MSwgODUwNjYsIDg1MDcxLCAKLSAgICA4NTA3NiwgODUwODAsIDg1MDg3LCA4NTA5NCwgODUwOTgsIDg1MTAzLCA4NTEwOCwgODUxMTMsIDg1MTE4LCA4NTEyMywgCi0gICAgODUxMjgsIDg1MTMzLCA4NTEzOCwgODUxNDMsIDg1MTQ4LCA4NTE1MywgODUxNTgsIDg1MTYzLCA4NTE2OCwgODUxNzMsIAotICAgIDg1MTc4LCA4NTE4MywgODUxODgsIDg1MTkzLCA4NTE5OCwgODUyMDMsIDg1MjA4LCA4NTIxMywgODUyMTgsIDg1MjIzLCAKLSAgICA4NTIyOCwgODUyMzMsIDg1MjM4LCA4NTI0MywgMCwgMCwgMCwgODUyNDgsIDg1MjUyLCA4NTI1NywgODUyNjEsIDg1MjY2LCAKLSAgICA4NTI3MSwgMCwgMCwgODUyNzUsIDg1MjgwLCA4NTI4NSwgODUyODksIDg1Mjk0LCA4NTI5OSwgMCwgMCwgODUzMDQsIAotICAgIDg1MzA5LCA4NTMxMywgODUzMTgsIDg1MzIzLCA4NTMyOCwgMCwgMCwgODUzMzMsIDg1MzM4LCA4NTM0MywgMCwgMCwgMCwgCi0gICAgODUzNDcsIDg1MzUxLCA4NTM1NSwgODUzNTksIDg1MzYyLCA4NTM2NiwgODUzNzAsIDAsIDg1Mzc0LCA4NTM4MCwgODUzODMsIAotICAgIDg1Mzg3LCA4NTM5MCwgODUzOTQsIDg1Mzk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NTQwMiwgODU0MDgsIAotICAgIDg1NDE0LCA4NTQyMCwgODU0MjYsIDAsIDAsIDg1NDMwLCA4NTQzNiwgODU0NDIsIDg1NDQ4LCA4NTQ1NCwgODU0NjAsIAotICAgIDg1NDY3LCA4NTQ3NCwgODU0ODEsIDg1NDg4LCA4NTQ5NSwgODU1MDIsIDAsIDg1NTA5LCA4NTUxNiwgODU1MjMsIDg1NTI5LCAKLSAgICA4NTUzNiwgODU1NDMsIDg1NTUwLCA4NTU1NywgODU1NjMsIDg1NTcwLCA4NTU3NywgODU1ODQsIDg1NTkxLCA4NTU5NywgCi0gICAgODU2MDQsIDg1NjExLCA4NTYxOCwgODU2MjUsIDg1NjMxLCA4NTYzOCwgODU2NDUsIDg1NjUyLCA4NTY1OSwgODU2NjYsIAotICAgIDg1NjczLCA4NTY4MCwgMCwgODU2ODcsIDg1NjkzLCA4NTcwMCwgODU3MDcsIDg1NzE0LCA4NTcyMSwgODU3MjgsIDg1NzM1LCAKLSAgICA4NTc0MiwgODU3NDksIDg1NzU2LCA4NTc2MywgODU3NzAsIDg1Nzc3LCA4NTc4MywgODU3OTAsIDg1Nzk3LCA4NTgwNCwgCi0gICAgODU4MTEsIDAsIDg1ODE4LCA4NTgyNSwgMCwgODU4MzIsIDg1ODM5LCA4NTg0NiwgODU4NTMsIDg1ODYwLCA4NTg2NywgCi0gICAgODU4NzQsIDg1ODgxLCA4NTg4OCwgODU4OTUsIDg1OTAyLCA4NTkwOSwgODU5MTYsIDg1OTIzLCA4NTkzMCwgMCwgMCwgCi0gICAgODU5MzYsIDg1OTQxLCA4NTk0NiwgODU5NTEsIDg1OTU2LCA4NTk2MSwgODU5NjYsIDg1OTcxLCA4NTk3NiwgODU5ODEsIAotICAgIDg1OTg2LCA4NTk5MSwgODU5OTYsIDg2MDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjAwNiwgODYwMTMsIAotICAgIDg2MDIwLCA4NjAyNywgODYwMzQsIDg2MDQxLCA4NjA0OCwgODYwNTUsIDg2MDYyLCA4NjA2OSwgODYwNzYsIDg2MDgzLCAKLSAgICA4NjA5MCwgODYwOTcsIDg2MTA0LCA4NjExMSwgODYxMTgsIDg2MTI1LCA4NjEzMiwgODYxMzksIDg2MTQ3LCA4NjE1NSwgCi0gICAgODYxNjIsIDg2MTY5LCA4NjE3NCwgODYxODIsIDg2MTkwLCA4NjE5NywgODYyMDQsIDg2MjA5LCA4NjIxNiwgODYyMjEsIAotICAgIDg2MjI2LCA4NjIzMywgODYyMzgsIDg2MjQzLCA4NjI0OCwgODYyNTYsIDg2MjYxLCA4NjI2NiwgODYyNzMsIDg2Mjc4LCAKLSAgICA4NjI4MywgODYyOTAsIDg2Mjk3LCA4NjMwMiwgODYzMDcsIDg2MzEyLCA4NjMxNywgODYzMjIsIDg2MzI3LCA4NjMzMiwgCi0gICAgODYzMzcsIDg2MzQyLCA4NjM0OSwgODYzNTQsIDg2MzYxLCA4NjM2NiwgODYzNzEsIDg2Mzc2LCA4NjM4MSwgODYzODYsIAotICAgIDg2MzkxLCA4NjM5NiwgODY0MDEsIDg2NDA2LCA4NjQxMSwgODY0MTYsIDg2NDIzLCA4NjQzMCwgODY0MzcsIDg2NDQ0LCAKLSAgICA4NjQ1MCwgODY0NTUsIDg2NDYyLCA4NjQ2NywgODY0NzIsIDg2NDgxLCA4NjQ4OCwgODY0OTcsIDg2NTA0LCA4NjUwOSwgCi0gICAgODY1MTQsIDg2NTIyLCA4NjUyNywgODY1MzIsIDg2NTM3LCA4NjU0MiwgODY1NDcsIDg2NTU0LCA4NjU1OSwgODY1NjQsIAotICAgIDg2NTY5LCA4NjU3NCwgODY1NzksIDg2NTg2LCA4NjU5MywgODY2MDAsIDg2NjA3LCA4NjYxNCwgODY2MjEsIDg2NjI4LCAKLSAgICA4NjYzNSwgODY2NDIsIDg2NjQ5LCA4NjY1NiwgODY2NjMsIDg2NjcwLCA4NjY3NywgODY2ODQsIDg2NjkxLCA4NjY5OCwgCi0gICAgODY3MDUsIDg2NzEyLCA4NjcxOSwgODY3MjYsIDg2NzMzLCA4Njc0MCwgODY3NDcsIDg2NzU0LCA4Njc2MSwgODY3NjgsIAotICAgIDg2Nzc1LCAwLCAwLCAwLCAwLCAwLCA4Njc4MiwgODY3OTAsIDg2Nzk4LCAwLCAwLCAwLCAwLCA4NjgwMywgODY4MDcsIAotICAgIDg2ODExLCA4NjgxNSwgODY4MTksIDg2ODIzLCA4NjgyNywgODY4MzEsIDg2ODM1LCA4NjgzOSwgODY4NDQsIDg2ODQ5LCAKLSAgICA4Njg1NCwgODY4NTksIDg2ODY0LCA4Njg2OSwgODY4NzQsIDg2ODc5LCA4Njg4NCwgODY4OTAsIDg2ODk2LCA4NjkwMiwgCi0gICAgODY5MDksIDg2OTE2LCA4NjkyMywgODY5MzAsIDg2OTM3LCA4Njk0NCwgODY5NTAsIDg2OTU2LCA4Njk2MiwgODY5NjksIAotICAgIDg2OTc2LCA4Njk4MywgODY5OTAsIDg2OTk3LCA4NzAwNCwgODcwMTEsIDg3MDE4LCA4NzAyNSwgODcwMzIsIDg3MDM5LCAKLSAgICA4NzA0NiwgODcwNTMsIDg3MDYwLCAwLCAwLCAwLCA4NzA2NywgODcwNzUsIDg3MDgzLCA4NzA5MSwgODcwOTksIDg3MTA3LCAKLSAgICA4NzExNywgODcxMjcsIDg3MTM1LCA4NzE0MywgODcxNTEsIDg3MTU5LCA4NzE2NywgODcxNzMsIDg3MTgwLCA4NzE4OSwgCi0gICAgODcxOTgsIDg3MjA3LCA4NzIxNiwgODcyMjUsIDg3MjM0LCA4NzI0NCwgODcyNTUsIDg3MjY1LCA4NzI3NiwgODcyODUsIAotICAgIDg3Mjk0LCA4NzMwMywgODczMTMsIDg3MzI0LCA4NzMzNCwgODczNDUsIDg3MzU2LCA4NzM2NSwgODczNzMsIDg3Mzc5LCAKLSAgICA4NzM4NSwgODczOTEsIDg3Mzk3LCA4NzQwNSwgODc0MTMsIDg3NDE5LCA4NzQyNiwgODc0MzYsIDg3NDQzLCA4NzQ1MCwgCi0gICAgODc0NTcsIDg3NDY0LCA4NzQ3MSwgODc0ODEsIDg3NDg4LCA4NzQ5NSwgODc1MDMsIDg3NTExLCA4NzUyMCwgODc1MjksIAotICAgIDg3NTM4LCA4NzU0NywgODc1NTYsIDg3NTY0LCA4NzU3MywgODc1ODIsIDg3NTkxLCA4NzU5NSwgODc2MDIsIDg3NjA3LCAKLSAgICA4NzYxMiwgODc2MTYsIDg3NjIwLCA4NzYyNCwgODc2MjgsIDg3NjMzLCA4NzYzOCwgODc2NDQsIDg3NjUwLCA4NzY1NCwgCi0gICAgODc2NjAsIDg3NjY0LCA4NzY2OCwgODc2NzIsIDg3Njc2LCA4NzY4MCwgODc2ODQsIDg3NjkwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4NzY5NCwgODc2OTksIDg3NzA0LCA4NzcwOSwgODc3MTQsIDg3NzIxLCA4NzcyNiwgODc3MzEsIDg3NzM2LCA4Nzc0MSwgCi0gICAgODc3NDYsIDg3NzUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODcwOCwgODg3MTUsIDg4NzI0LCA4ODczMywgODg3NDAsIDg4NzQ3LCA4ODc1NCwgCisgICAgODg3NjEsIDg4NzY4LCA4ODc3NSwgODg3ODEsIDg4Nzg4LCA4ODc5NSwgODg4MDIsIDg4ODA5LCA4ODgxNiwgODg4MjMsIAorICAgIDg4ODMwLCA4ODgzNywgODg4NDYsIDg4ODUzLCA4ODg2MCwgODg4NjcsIDg4ODc0LCA4ODg4MSwgODg4ODgsIDg4ODk1LCAKKyAgICA4ODkwMiwgODg5MTEsIDg4OTE4LCA4ODkyNSwgODg5MzIsIDg4OTM5LCA4ODk0NiwgODg5NTMsIDg4OTYyLCA4ODk2OSwgCisgICAgODg5NzYsIDg4OTgzLCA4ODk5MCwgODg5OTksIDg5MDA2LCA4OTAxMywgODkwMjAsIDg5MDI4LCA4OTAzNywgMCwgMCwgCisgICAgODkwNDYsIDg5MDUwLCA4OTA1NCwgODkwNTksIDg5MDY0LCA4OTA2OSwgODkwNzQsIDg5MDc4LCA4OTA4MywgODkwODgsIAorICAgIDg5MDkzLCA4OTA5OCwgODkxMDMsIDg5MTA4LCA4OTExMiwgODkxMTYsIDg5MTIxLCA4OTEyNiwgODkxMzEsIDg5MTM1LCAKKyAgICA4OTE0MCwgODkxNDUsIDg5MTQ5LCA4OTE1NCwgODkxNTksIDg5MTY0LCA4OTE2OSwgODkxNzQsIDg5MTc5LCAwLCAwLCAwLCAKKyAgICA4OTE4NCwgODkxODgsIDg5MTkzLCA4OTE5OCwgODkyMDIsIDg5MjA3LCA4OTIxMSwgODkyMTYsIDg5MjIxLCA4OTIyNiwgCisgICAgODkyMzEsIDg5MjM1LCA4OTIzOSwgODkyNDQsIDg5MjQ5LCA4OTI1NCwgODkyNTksIDg5MjY0LCA4OTI2OSwgODkyNzMsIAorICAgIDg5Mjc4LCA4OTI4MywgODkyODgsIDg5MjkzLCA4OTI5OCwgODkzMDMsIDg5MzA3LCA4OTMxMSwgODkzMTYsIDg5MzIxLCAKKyAgICA4OTMyNiwgODkzMzEsIDg5MzM2LCA4OTM0MSwgODkzNDYsIDg5MzUxLCA4OTM1NiwgODkzNjEsIDg5MzY2LCA4OTM3MSwgCisgICAgODkzNzYsIDg5MzgxLCA4OTM4NiwgODkzOTEsIDg5Mzk2LCA4OTQwMSwgODk0MDYsIDg5NDExLCA4OTQxNiwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc3NTYsIDg3NzYzLCA4Nzc3MiwgODc3ODEsIDg3Nzg4LCA4Nzc5NSwgODc4MDIsIAotICAgIDg3ODA5LCA4NzgxNiwgODc4MjMsIDg3ODI5LCA4NzgzNiwgODc4NDMsIDg3ODUwLCA4Nzg1NywgODc4NjQsIDg3ODcxLCAKLSAgICA4Nzg3OCwgODc4ODUsIDg3ODk0LCA4NzkwMSwgODc5MDgsIDg3OTE1LCA4NzkyMiwgODc5MjksIDg3OTM2LCA4Nzk0MywgCi0gICAgODc5NTAsIDg3OTU5LCA4Nzk2NiwgODc5NzMsIDg3OTgwLCA4Nzk4NywgODc5OTQsIDg4MDAxLCA4ODAxMCwgODgwMTcsIAotICAgIDg4MDI0LCA4ODAzMSwgODgwMzgsIDg4MDQ3LCA4ODA1NCwgODgwNjEsIDg4MDY4LCA4ODA3NiwgODgwODUsIDAsIDAsIAotICAgIDg4MDk0LCA4ODA5OCwgODgxMDIsIDg4MTA3LCA4ODExMiwgODgxMTcsIDg4MTIyLCA4ODEyNiwgODgxMzEsIDg4MTM2LCAKLSAgICA4ODE0MSwgODgxNDYsIDg4MTUxLCA4ODE1NiwgODgxNjAsIDg4MTY0LCA4ODE2OCwgODgxNzMsIDg4MTc4LCA4ODE4MiwgCi0gICAgODgxODcsIDg4MTkyLCA4ODE5NiwgODgyMDAsIDg4MjA1LCA4ODIxMCwgODgyMTUsIDg4MjIwLCA4ODIyNSwgMCwgMCwgMCwgCi0gICAgODgyMzAsIDg4MjM0LCA4ODIzOSwgODgyNDQsIDg4MjQ4LCA4ODI1MywgODgyNTcsIDg4MjYyLCA4ODI2NywgODgyNzIsIAotICAgIDg4Mjc3LCA4ODI4MSwgODgyODUsIDg4MjkwLCA4ODI5NSwgODgzMDAsIDg4MzA1LCA4ODMwOSwgODgzMTQsIDg4MzE4LCAKLSAgICA4ODMyMywgODgzMjgsIDg4MzMyLCA4ODMzNywgODgzNDIsIDg4MzQ3LCA4ODM1MSwgODgzNTUsIDg4MzYwLCA4ODM2NSwgCi0gICAgODgzNzAsIDg4Mzc1LCA4ODM4MCwgODgzODUsIDg4MzkwLCA4ODM5NSwgODg0MDAsIDg4NDA1LCA4ODQxMCwgODg0MTUsIAotICAgIDg4NDIwLCA4ODQyNSwgODg0MzAsIDg4NDM1LCA4ODQ0MCwgODg0NDUsIDg4NDUwLCA4ODQ1NSwgODg0NjAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5NDIxLCA4OTQyNSwgCisgICAgODk0MzAsIDg5NDM1LCA4OTQ0MCwgODk0NDQsIDg5NDQ5LCA4OTQ1NCwgODk0NTksIDg5NDY0LCA4OTQ2OCwgODk0NzIsIAorICAgIDg5NDc3LCA4OTQ4MiwgODk0ODcsIDg5NDkyLCA4OTQ5NiwgODk1MDEsIDg5NTA2LCA4OTUxMSwgODk1MTYsIDg5NTIxLCAKKyAgICA4OTUyNiwgODk1MzAsIDg5NTM1LCA4OTU0MCwgODk1NDUsIDg5NTUwLCA4OTU1NSwgODk1NjAsIDg5NTY1LCAwLCA4OTU3MCwgCisgICAgODk1NzUsIDg5NTgwLCA4OTU4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODk1OTIsIDg5NTk3LCAKKyAgICA4OTYwMiwgODk2MDcsIDg5NjEyLCA4OTYxNywgODk2MjIsIDg5NjI3LCA4OTYzMiwgODk2MzcsIDg5NjQyLCA4OTY0NywgCisgICAgODk2NTIsIDg5NjU3LCA4OTY2MiwgODk2NjcsIDg5NjcyLCA4OTY3NywgODk2ODIsIDg5Njg3LCA4OTY5MiwgODk2OTcsIAorICAgIDg5NzAyLCA4OTcwNywgODk3MTIsIDg5NzE3LCA4OTcyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODg0NjUsIDg4NDY5LCAKLSAgICA4ODQ3NCwgODg0NzksIDg4NDg0LCA4ODQ4OCwgODg0OTMsIDg4NDk4LCA4ODUwMywgODg1MDgsIDg4NTEyLCA4ODUxNiwgCi0gICAgODg1MjEsIDg4NTI2LCA4ODUzMSwgODg1MzYsIDg4NTQwLCA4ODU0NSwgODg1NTAsIDg4NTU1LCA4ODU2MCwgODg1NjUsIAotICAgIDg4NTcwLCA4ODU3NCwgODg1NzksIDg4NTg0LCA4ODU4OSwgODg1OTQsIDg4NTk5LCA4ODYwNCwgODg2MDksIDAsIDg4NjE0LCAKLSAgICA4ODYxOSwgODg2MjQsIDg4NjMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODYzNiwgODg2NDEsIAotICAgIDg4NjQ2LCA4ODY1MSwgODg2NTYsIDg4NjYxLCA4ODY2NiwgODg2NzEsIDg4Njc2LCA4ODY4MSwgODg2ODYsIDg4NjkxLCAKLSAgICA4ODY5NiwgODg3MDEsIDg4NzA2LCA4ODcxMSwgODg3MTYsIDg4NzIxLCA4ODcyNiwgODg3MzEsIDg4NzM2LCA4ODc0MSwgCi0gICAgODg3NDYsIDg4NzUxLCA4ODc1NiwgODg3NjEsIDg4NzY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTcyOSwgODk3MzQsIDg5NzM5LCAKKyAgICA4OTc0NCwgODk3NDksIDg5NzU0LCA4OTc1OSwgODk3NjQsIDg5NzY5LCA4OTc3NCwgODk3NzksIDg5Nzg0LCA4OTc4OSwgCisgICAgODk3OTQsIDg5Nzk5LCA4OTgwNCwgODk4MDksIDg5ODE0LCA4OTgxOSwgODk4MjQsIDg5ODI5LCA4OTgzNCwgODk4MzksIAorICAgIDg5ODQ0LCA4OTg0OSwgODk4NTQsIDg5ODU5LCA4OTg2MywgODk4NjcsIDg5ODcxLCAwLCA4OTg3NiwgODk4ODIsIDg5ODg3LCAKKyAgICA4OTg5MiwgODk4OTcsIDg5OTAyLCA4OTkwOCwgODk5MTQsIDg5OTIwLCA4OTkyNiwgODk5MzIsIDg5OTM4LCA4OTk0NCwgCisgICAgODk5NTAsIDg5OTU2LCA4OTk2MiwgODk5NjgsIDg5OTc0LCA4OTk4MCwgODk5ODUsIDg5OTkxLCA4OTk5NywgOTAwMDIsIAorICAgIDkwMDA4LCA5MDAxMywgOTAwMTksIDkwMDI1LCA5MDAzMCwgOTAwMzYsIDkwMDQyLCA5MDA0NywgOTAwNTMsIDkwMDU5LCAKKyAgICA5MDA2NCwgOTAwNzAsIDkwMDc2LCA5MDA4MiwgMCwgMCwgMCwgMCwgOTAwODcsIDkwMDkzLCA5MDA5OSwgOTAxMDUsIAorICAgIDkwMTExLCA5MDExNywgOTAxMjMsIDkwMTI5LCA5MDEzNSwgOTAxNDIsIDkwMTQ3LCA5MDE1MiwgOTAxNTgsIDkwMTY0LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODc3MywgODg3NzgsIDg4NzgzLCAKLSAgICA4ODc4OCwgODg3OTMsIDg4Nzk4LCA4ODgwMywgODg4MDgsIDg4ODEzLCA4ODgxOCwgODg4MjMsIDg4ODI4LCA4ODgzMywgCi0gICAgODg4MzgsIDg4ODQzLCA4ODg0OCwgODg4NTMsIDg4ODU4LCA4ODg2MywgODg4NjgsIDg4ODczLCA4ODg3OCwgODg4ODMsIAotICAgIDg4ODg4LCA4ODg5MywgODg4OTgsIDg4OTAzLCA4ODkwNywgODg5MTEsIDg4OTE1LCAwLCA4ODkyMCwgODg5MjYsIDg4OTMxLCAKLSAgICA4ODkzNiwgODg5NDEsIDg4OTQ2LCA4ODk1MiwgODg5NTgsIDg4OTY0LCA4ODk3MCwgODg5NzYsIDg4OTgyLCA4ODk4OCwgCi0gICAgODg5OTQsIDg5MDAwLCA4OTAwNiwgODkwMTIsIDg5MDE4LCA4OTAyNCwgODkwMjksIDg5MDM1LCA4OTA0MSwgODkwNDYsIAotICAgIDg5MDUyLCA4OTA1NywgODkwNjMsIDg5MDY5LCA4OTA3NCwgODkwODAsIDg5MDg2LCA4OTA5MSwgODkwOTcsIDg5MTAzLCAKLSAgICA4OTEwOSwgODkxMTUsIDg5MTIxLCA4OTEyNywgMCwgMCwgMCwgMCwgODkxMzIsIDg5MTM4LCA4OTE0NCwgODkxNTAsIAotICAgIDg5MTU2LCA4OTE2MiwgODkxNjgsIDg5MTc0LCA4OTE4MCwgODkxODcsIDg5MTkyLCA4OTE5NywgODkyMDMsIDg5MjA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTIxNSwgODkyMjAsIDg5MjI1LCAKLSAgICA4OTIzMCwgODkyMzYsIDg5MjQxLCA4OTI0NywgODkyNTMsIDg5MjU5LCA4OTI2NSwgODkyNzIsIDg5Mjc4LCA4OTI4NSwgCi0gICAgODkyOTAsIDg5Mjk1LCA4OTMwMCwgODkzMDUsIDg5MzEwLCA4OTMxNSwgODkzMjAsIDg5MzI1LCA4OTMzMCwgODkzMzUsIAotICAgIDg5MzQwLCA4OTM0NSwgODkzNTAsIDg5MzU1LCA4OTM2MCwgODkzNjUsIDg5MzcwLCA4OTM3NSwgODkzODAsIDg5Mzg1LCAKLSAgICA4OTM5MCwgODkzOTUsIDg5NDAwLCA4OTQwNSwgODk0MTAsIDg5NDE1LCA4OTQyMCwgODk0MjUsIDg5NDMwLCA4OTQzNSwgCi0gICAgODk0NDAsIDg5NDQ2LCA4OTQ1MSwgODk0NTcsIDg5NDYzLCA4OTQ2OSwgODk0NzUsIDg5NDgyLCA4OTQ4OCwgODk0OTUsIAotICAgIDg5NTAwLCA4OTUwNSwgODk1MTAsIDg5NTE1LCA4OTUyMCwgODk1MjUsIDg5NTMwLCA4OTUzNSwgODk1NDAsIDg5NTQ1LCAKLSAgICA4OTU1MCwgODk1NTUsIDg5NTYwLCA4OTU2NSwgODk1NzAsIDg5NTc1LCA4OTU4MCwgODk1ODUsIDg5NTkwLCA4OTU5NSwgCi0gICAgODk2MDAsIDg5NjA1LCA4OTYxMCwgODk2MTUsIDg5NjIwLCA4OTYyNSwgODk2MzAsIDg5NjM1LCA4OTY0MCwgODk2NDUsIAotICAgIDg5NjUwLCA4OTY1NSwgODk2NjAsIDg5NjY1LCA4OTY3MCwgODk2NzUsIDg5NjgwLCA4OTY4NSwgODk2OTAsIDg5Njk1LCAKLSAgICA4OTcwMCwgODk3MDUsIDg5NzEwLCA4OTcxNSwgODk3MjAsIDg5NzI1LCA4OTczMCwgODk3MzUsIDg5NzQwLCA4OTc0NSwgCi0gICAgODk3NTAsIDg5NzU1LCA4OTc2MCwgODk3NjUsIDg5NzcwLCA4OTc3NSwgODk3ODAsIDg5Nzg1LCA4OTc5MCwgODk3OTUsIAotICAgIDg5ODAwLCA4OTgwNSwgODk4MTAsIDg5ODE1LCA4OTgyMCwgODk4MjUsIDg5ODMwLCA4OTgzNSwgODk4NDAsIDg5ODQ1LCAKLSAgICA4OTg1MCwgODk4NTUsIDg5ODYwLCA4OTg2NSwgODk4NzAsIDg5ODc1LCA4OTg4MCwgODk4ODUsIDg5ODkwLCA4OTg5NSwgCi0gICAgODk5MDAsIDg5OTA1LCA4OTkxMCwgODk5MTQsIDg5OTE5LCA4OTkyNCwgODk5MjksIDg5OTM0LCA4OTkzOSwgODk5NDQsIAotICAgIDg5OTQ5LCA4OTk1NCwgODk5NTksIDg5OTY0LCA4OTk2OSwgODk5NzQsIDg5OTc4LCA4OTk4MiwgODk5ODYsIDg5OTkwLCAKLSAgICA4OTk5NCwgODk5OTgsIDkwMDAyLCA5MDAwNywgOTAwMTIsIDAsIDAsIDkwMDE3LCA5MDAyMiwgOTAwMjYsIDkwMDMwLCAKLSAgICA5MDAzNCwgOTAwMzgsIDkwMDQyLCA5MDA0NiwgOTAwNTAsIDkwMDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDE3MCwgOTAxNzUsIDkwMTgwLCAKKyAgICA5MDE4NSwgOTAxOTEsIDkwMTk2LCA5MDIwMiwgOTAyMDgsIDkwMjE0LCA5MDIyMCwgOTAyMjcsIDkwMjMzLCA5MDI0MCwgCisgICAgOTAyNDUsIDkwMjUwLCA5MDI1NSwgOTAyNjAsIDkwMjY1LCA5MDI3MCwgOTAyNzUsIDkwMjgwLCA5MDI4NSwgOTAyOTAsIAorICAgIDkwMjk1LCA5MDMwMCwgOTAzMDUsIDkwMzEwLCA5MDMxNSwgOTAzMjAsIDkwMzI1LCA5MDMzMCwgOTAzMzUsIDkwMzQwLCAKKyAgICA5MDM0NSwgOTAzNTAsIDkwMzU1LCA5MDM2MCwgOTAzNjUsIDkwMzcwLCA5MDM3NSwgOTAzODAsIDkwMzg1LCA5MDM5MCwgCisgICAgOTAzOTUsIDkwNDAxLCA5MDQwNiwgOTA0MTIsIDkwNDE4LCA5MDQyNCwgOTA0MzAsIDkwNDM3LCA5MDQ0MywgOTA0NTAsIAorICAgIDkwNDU1LCA5MDQ2MCwgOTA0NjUsIDkwNDcwLCA5MDQ3NSwgOTA0ODAsIDkwNDg1LCA5MDQ5MCwgOTA0OTUsIDkwNTAwLCAKKyAgICA5MDUwNSwgOTA1MTAsIDkwNTE1LCA5MDUyMCwgOTA1MjUsIDkwNTMwLCA5MDUzNSwgOTA1NDAsIDkwNTQ1LCA5MDU1MCwgCisgICAgOTA1NTUsIDkwNTYwLCA5MDU2NSwgOTA1NzAsIDkwNTc1LCA5MDU4MCwgOTA1ODUsIDkwNTkwLCA5MDU5NSwgOTA2MDAsIAorICAgIDkwNjA1LCA5MDYxMCwgOTA2MTUsIDkwNjIwLCA5MDYyNSwgOTA2MzAsIDkwNjM1LCA5MDY0MCwgOTA2NDUsIDkwNjUwLCAKKyAgICA5MDY1NSwgOTA2NjAsIDkwNjY1LCA5MDY3MCwgOTA2NzUsIDkwNjgwLCA5MDY4NSwgOTA2OTAsIDkwNjk1LCA5MDcwMCwgCisgICAgOTA3MDUsIDkwNzEwLCA5MDcxNSwgOTA3MjAsIDkwNzI1LCA5MDczMCwgOTA3MzUsIDkwNzQwLCA5MDc0NSwgOTA3NTAsIAorICAgIDkwNzU1LCA5MDc2MCwgOTA3NjUsIDkwNzcwLCA5MDc3NSwgOTA3ODAsIDkwNzg1LCA5MDc5MCwgOTA3OTUsIDkwODAwLCAKKyAgICA5MDgwNSwgOTA4MTAsIDkwODE1LCA5MDgyMCwgOTA4MjUsIDkwODMwLCA5MDgzNSwgOTA4NDAsIDkwODQ1LCA5MDg1MCwgCisgICAgOTA4NTUsIDkwODYwLCA5MDg2NSwgOTA4NjksIDkwODczLCA5MDg3OCwgOTA4ODMsIDkwODg4LCA5MDg5MywgOTA4OTgsIAorICAgIDkwOTAzLCA5MDkwOCwgOTA5MTMsIDkwOTE4LCA5MDkyMywgOTA5MjgsIDkwOTMyLCA5MDkzNiwgOTA5NDAsIDkwOTQ0LCAKKyAgICA5MDk0OCwgOTA5NTIsIDkwOTU2LCA5MDk2MSwgOTA5NjYsIDAsIDAsIDkwOTcxLCA5MDk3NiwgOTA5ODAsIDkwOTg0LCAKKyAgICA5MDk4OCwgOTA5OTIsIDkwOTk2LCA5MTAwMCwgOTEwMDQsIDkxMDA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5MDA1OCwgOTAwNjIsIDkwMDY2LCA5MDA3MCwgOTAwNzQsIDkwMDc4LCAwLCAwLCA5MDA4MywgMCwgCi0gICAgOTAwODgsIDkwMDkyLCA5MDA5NywgOTAxMDIsIDkwMTA3LCA5MDExMiwgOTAxMTcsIDkwMTIyLCA5MDEyNywgOTAxMzIsIAotICAgIDkwMTM3LCA5MDE0MSwgOTAxNDYsIDkwMTUxLCA5MDE1NiwgOTAxNjEsIDkwMTY1LCA5MDE3MCwgOTAxNzUsIDkwMTgwLCAKLSAgICA5MDE4NSwgOTAxODksIDkwMTk0LCA5MDE5OSwgOTAyMDQsIDkwMjA5LCA5MDIxMywgOTAyMTgsIDkwMjIzLCA5MDIyOCwgCi0gICAgOTAyMzMsIDkwMjM4LCA5MDI0MywgOTAyNDgsIDkwMjUzLCA5MDI1OCwgOTAyNjMsIDkwMjY4LCA5MDI3MywgOTAyNzcsIAotICAgIDkwMjgyLCA5MDI4NywgOTAyOTIsIDkwMjk3LCAwLCA5MDMwMiwgOTAzMDcsIDAsIDAsIDAsIDkwMzEyLCAwLCAwLCA5MDMxNywgCi0gICAgOTAzMjIsIDkwMzI5LCA5MDMzNiwgOTAzNDMsIDkwMzUwLCA5MDM1NywgOTAzNjQsIDkwMzcxLCA5MDM3OCwgOTAzODUsIAotICAgIDkwMzkyLCA5MDM5OSwgOTA0MDYsIDkwNDEzLCA5MDQyMCwgOTA0MjcsIDkwNDM0LCA5MDQ0MSwgOTA0NDgsIDkwNDU1LCAKLSAgICA5MDQ2MiwgOTA0NjksIDAsIDkwNDc2LCA5MDQ4MywgOTA0ODksIDkwNDk1LCA5MDUwMSwgOTA1MDgsIDkwNTE1LCA5MDUyMywgCi0gICAgOTA1MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwNTQwLCA5MDU0NSwgOTA1NTAsIDkwNTU1LCA5MDU2MCwgOTA1NjUsIAotICAgIDkwNTcwLCA5MDU3NSwgOTA1ODAsIDkwNTg1LCA5MDU5MCwgOTA1OTUsIDkwNjAwLCA5MDYwNSwgOTA2MTAsIDkwNjE1LCAKLSAgICA5MDYyMCwgOTA2MjUsIDkwNjMwLCA5MDYzNSwgOTA2NDAsIDkwNjQ1LCA5MDY1MCwgOTA2NTQsIDkwNjU5LCA5MDY2NCwgCi0gICAgOTA2NzAsIDkwNjc0LCAwLCAwLCAwLCA5MDY3OCwgOTA2ODQsIDkwNjg4LCA5MDY5MywgOTA2OTgsIDkwNzAzLCA5MDcwNywgCi0gICAgOTA3MTIsIDkwNzE2LCA5MDcyMSwgOTA3MjYsIDkwNzMwLCA5MDczNCwgOTA3MzgsIDkwNzQyLCA5MDc0NiwgOTA3NTEsIAotICAgIDkwNzU2LCA5MDc2MCwgOTA3NjUsIDkwNzcwLCA5MDc3NCwgOTA3NzksIDkwNzg0LCA5MDc4OSwgOTA3OTQsIDkwNzk5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5MDgwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTEwMTIsIDkxMDE2LCA5MTAyMCwgOTEwMjQsIDkxMDI4LCA5MTAzMiwgMCwgMCwgOTEwMzcsIDAsIAorICAgIDkxMDQyLCA5MTA0NiwgOTEwNTEsIDkxMDU2LCA5MTA2MSwgOTEwNjYsIDkxMDcxLCA5MTA3NiwgOTEwODEsIDkxMDg2LCAKKyAgICA5MTA5MSwgOTEwOTUsIDkxMTAwLCA5MTEwNSwgOTExMTAsIDkxMTE1LCA5MTExOSwgOTExMjQsIDkxMTI5LCA5MTEzNCwgCisgICAgOTExMzksIDkxMTQzLCA5MTE0OCwgOTExNTMsIDkxMTU4LCA5MTE2MywgOTExNjcsIDkxMTcyLCA5MTE3NywgOTExODIsIAorICAgIDkxMTg3LCA5MTE5MSwgOTExOTYsIDkxMjAxLCA5MTIwNiwgOTEyMTEsIDkxMjE2LCA5MTIyMSwgOTEyMjYsIDkxMjMwLCAKKyAgICA5MTIzNSwgOTEyNDAsIDkxMjQ1LCA5MTI1MCwgMCwgOTEyNTUsIDkxMjYwLCAwLCAwLCAwLCA5MTI2NSwgMCwgMCwgOTEyNzAsIAorICAgIDkxMjc1LCA5MTI4MiwgOTEyODksIDkxMjk2LCA5MTMwMywgOTEzMTAsIDkxMzE3LCA5MTMyNCwgOTEzMzEsIDkxMzM4LCAKKyAgICA5MTM0NSwgOTEzNTIsIDkxMzU5LCA5MTM2NiwgOTEzNzMsIDkxMzgwLCA5MTM4NywgOTEzOTQsIDkxNDAxLCA5MTQwOCwgCisgICAgOTE0MTUsIDkxNDIyLCAwLCA5MTQyOSwgOTE0MzYsIDkxNDQyLCA5MTQ0OCwgOTE0NTQsIDkxNDYxLCA5MTQ2OCwgOTE0NzYsIAorICAgIDkxNDg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTQ5MywgOTE0OTgsIDkxNTAzLCA5MTUwOCwgOTE1MTMsIDkxNTE4LCAKKyAgICA5MTUyMywgOTE1MjgsIDkxNTMzLCA5MTUzOCwgOTE1NDMsIDkxNTQ4LCA5MTU1MywgOTE1NTgsIDkxNTYzLCA5MTU2OCwgCisgICAgOTE1NzMsIDkxNTc4LCA5MTU4MywgOTE1ODgsIDkxNTkzLCA5MTU5OCwgOTE2MDMsIDkxNjA3LCA5MTYxMiwgOTE2MTcsIAorICAgIDkxNjIzLCA5MTYyNywgMCwgMCwgMCwgOTE2MzEsIDkxNjM3LCA5MTY0MSwgOTE2NDYsIDkxNjUxLCA5MTY1NiwgOTE2NjAsIAorICAgIDkxNjY1LCA5MTY2OSwgOTE2NzQsIDkxNjc5LCA5MTY4MywgOTE2ODcsIDkxNjkyLCA5MTY5NiwgOTE3MDAsIDkxNzA1LCAKKyAgICA5MTcxMCwgOTE3MTQsIDkxNzE5LCA5MTcyNCwgOTE3MjksIDkxNzM0LCA5MTczOSwgOTE3NDQsIDkxNzQ5LCA5MTc1NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTE3NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwODA5LCAKLSAgICA5MDgxMywgOTA4MTgsIDkwODIzLCAwLCA5MDgyOSwgOTA4MzQsIDAsIDAsIDAsIDAsIDAsIDkwODM5LCA5MDg0NSwgOTA4NTIsIAotICAgIDkwODU3LCA5MDg2MiwgOTA4NjYsIDkwODcxLCA5MDg3NiwgMCwgOTA4ODEsIDkwODg2LCA5MDg5MSwgMCwgOTA4OTYsIAotICAgIDkwOTAxLCA5MDkwNiwgOTA5MTEsIDkwOTE2LCA5MDkyMSwgOTA5MjYsIDkwOTMxLCA5MDkzNiwgOTA5NDEsIDkwOTQ2LCAKLSAgICA5MDk1MCwgOTA5NTQsIDkwOTU5LCA5MDk2NCwgOTA5NjksIDkwOTczLCA5MDk3NywgOTA5ODEsIDkwOTg2LCA5MDk5MSwgCi0gICAgOTA5OTYsIDkxMDAxLCA5MTAwNiwgOTEwMTEsIDkxMDE1LCA5MTAyMCwgMCwgMCwgMCwgMCwgOTEwMjUsIDkxMDMxLCAKLSAgICA5MTAzNiwgMCwgMCwgMCwgMCwgOTEwNDEsIDkxMDQ1LCA5MTA0OSwgOTEwNTMsIDkxMDU3LCA5MTA2MSwgOTEwNjYsIAotICAgIDkxMDcxLCA5MTA3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTEwODMsIDkxMDg5LCA5MTA5NiwgOTExMDIsIDkxMTA5LCAKLSAgICA5MTExNSwgOTExMjEsIDkxMTI3LCA5MTEzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTExNDAsIDkxMTQ4LCA5MTE1NiwgCi0gICAgOTExNjQsIDkxMTcyLCA5MTE4MCwgOTExODgsIDkxMTk2LCA5MTIwNCwgOTEyMTIsIDkxMjIwLCA5MTIyOCwgOTEyMzYsIAotICAgIDkxMjQ0LCA5MTI1MiwgOTEyNjAsIDkxMjY4LCA5MTI3NiwgOTEyODQsIDkxMjkyLCA5MTMwMCwgOTEzMDgsIDkxMzE2LCAKLSAgICA5MTMyNCwgOTEzMzIsIDkxMzQwLCA5MTM0OCwgOTEzNTYsIDkxMzY0LCA5MTM3MiwgOTEzNzksIDkxMzg3LCA5MTM5NSwgCi0gICAgOTEzOTksIDkxNDA0LCA5MTQwOSwgOTE0MTQsIDkxNDE5LCA5MTQyNCwgOTE0MjksIDkxNDM0LCA5MTQzOCwgOTE0NDMsIAotICAgIDkxNDQ3LCA5MTQ1MiwgOTE0NTYsIDkxNDYxLCA5MTQ2NSwgOTE0NzAsIDkxNDc1LCA5MTQ4MCwgOTE0ODUsIDkxNDkwLCAKLSAgICA5MTQ5NSwgOTE1MDAsIDkxNTA1LCA5MTUxMCwgOTE1MTUsIDkxNTIwLCA5MTUyNSwgOTE1MzAsIDkxNTM1LCA5MTU0MCwgCi0gICAgOTE1NDUsIDkxNTUwLCA5MTU1NSwgOTE1NjAsIDkxNTY1LCA5MTU3MCwgOTE1NzUsIDkxNTgwLCA5MTU4NSwgOTE1OTAsIAotICAgIDkxNTk1LCA5MTYwMCwgOTE2MDUsIDkxNjEwLCA5MTYxNSwgOTE2MjAsIDkxNjI1LCA5MTYzMCwgOTE2MzUsIDkxNjQwLCAKLSAgICA5MTY0NSwgOTE2NTAsIDkxNjU1LCAwLCAwLCAwLCA5MTY2MCwgOTE2NjUsIDkxNjc0LCA5MTY4MiwgOTE2OTEsIDkxNzAwLCAKLSAgICA5MTcxMSwgOTE3MjIsIDkxNzI5LCA5MTczNiwgOTE3NDMsIDkxNzUwLCA5MTc1NywgOTE3NjQsIDkxNzcxLCA5MTc3OCwgCi0gICAgOTE3ODUsIDkxNzkyLCA5MTc5OSwgOTE4MDYsIDkxODEzLCA5MTgyMCwgOTE4MjcsIDkxODM0LCA5MTg0MSwgOTE4NDgsIAotICAgIDkxODU1LCA5MTg2MiwgOTE4NjksIDAsIDAsIDkxODc2LCA5MTg4MiwgOTE4ODgsIDkxODk0LCA5MTkwMCwgOTE5MDcsIAotICAgIDkxOTE0LCA5MTkyMiwgOTE5MzAsIDkxOTM3LCA5MTk0NCwgOTE5NTEsIDkxOTU4LCA5MTk2NSwgOTE5NzIsIDkxOTc5LCAKLSAgICA5MTk4NiwgOTE5OTMsIDkyMDAwLCA5MjAwNywgOTIwMTQsIDkyMDIxLCA5MjAyOCwgOTIwMzUsIDkyMDQyLCA5MjA0OSwgCi0gICAgOTIwNTYsIDAsIDAsIDAsIDAsIDAsIDkyMDYzLCA5MjA2OSwgOTIwNzUsIDkyMDgxLCA5MjA4NywgOTIwOTQsIDkyMTAxLCAKLSAgICA5MjEwOSwgOTIxMTcsIDkyMTIzLCA5MjEyOSwgOTIxMzYsIDkyMTQyLCA5MjE0OCwgOTIxNTQsIDkyMTYwLCA5MjE2NywgCi0gICAgOTIxNzQsIDkyMTgxLCA5MjE4OCwgOTIxOTUsIDkyMjAyLCA5MjIwOSwgOTIyMTYsIDkyMjIzLCA5MjIzMCwgOTIyMzcsIAotICAgIDkyMjQ0LCA5MjI1MSwgOTIyNTgsIDkyMjY1LCA5MjI3MiwgOTIyNzksIDkyMjg2LCA5MjI5MywgOTIzMDAsIDkyMzA3LCAKLSAgICA5MjMxNCwgOTIzMjEsIDkyMzI4LCA5MjMzNSwgOTIzNDIsIDkyMzQ5LCA5MjM1NiwgOTIzNjMsIDkyMzcwLCA5MjM3NywgCi0gICAgOTIzODQsIDkyMzkxLCA5MjM5OCwgOTI0MDUsIDkyNDEyLCA5MjQxOSwgOTI0MjYsIDkyNDMzLCA5MjQ0MCwgOTI0NDcsIAotICAgIDkyNDU0LCA5MjQ2MSwgOTI0NjgsIDkyNDc1LCA5MjQ4MiwgOTI0ODksIDkyNDk2LCA5MjUwMywgOTI1MTAsIDkyNTE3LCAKLSAgICA5MjUyNCwgOTI1MzEsIDkyNTM4LCA5MjU0NSwgOTI1NTIsIDkyNTU5LCA5MjU2NiwgOTI1NzMsIDkyNTgwLCA5MjU4NywgCi0gICAgOTI1OTQsIDkyNjAxLCA5MjYwOCwgOTI2MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNzY0LCAKKyAgICA5MTc3MCwgOTE3NzYsIDkxNzgyLCA5MTc4OCwgOTE3OTQsIDkxODAxLCA5MTgwOCwgOTE4MTUsIDkxODIxLCA5MTgyNywgCisgICAgOTE4MzMsIDkxODQwLCA5MTg0NywgOTE4NTQsIDkxODYwLCA5MTg2NywgOTE4NzQsIDkxODgxLCA5MTg4OCwgOTE4OTQsIAorICAgIDkxOTAxLCA5MTkwOCwgOTE5MTQsIDkxOTIxLCA5MTkyOCwgOTE5MzUsIDkxOTQyLCA5MTk0OSwgOTE5NTUsIDkxOTYyLCAKKyAgICA5MTk2OSwgOTE5NzYsIDkxOTgyLCA5MTk4OCwgOTE5OTQsIDkyMDAwLCA5MjAwNiwgOTIwMTMsIDkyMDIwLCA5MjAyNiwgCisgICAgOTIwMzIsIDkyMDM4LCA5MjA0NSwgOTIwNTEsIDkyMDU4LCA5MjA2NSwgOTIwNzIsIDkyMDc4LCA5MjA4NiwgOTIwOTMsIAorICAgIDkyMDk5LCA5MjEwNiwgOTIxMTMsIDkyMTIwLCA5MjEyNiwgMCwgMCwgMCwgMCwgMCwgMCwgOTIxMzMsIDkyMTQxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MjE0OSwgOTIxNTMsIDkyMTU4LCA5MjE2MywgMCwgCisgICAgOTIxNjksIDkyMTc0LCAwLCAwLCAwLCAwLCAwLCA5MjE3OSwgOTIxODUsIDkyMTkyLCA5MjE5NywgOTIyMDIsIDkyMjA2LCAKKyAgICA5MjIxMSwgOTIyMTYsIDAsIDkyMjIxLCA5MjIyNiwgOTIyMzEsIDAsIDkyMjM2LCA5MjI0MSwgOTIyNDYsIDkyMjUxLCAKKyAgICA5MjI1NiwgOTIyNjEsIDkyMjY2LCA5MjI3MSwgOTIyNzYsIDkyMjgxLCA5MjI4NiwgOTIyOTAsIDkyMjk0LCA5MjI5OSwgCisgICAgOTIzMDQsIDkyMzA5LCA5MjMxMywgOTIzMTcsIDkyMzIxLCA5MjMyNiwgOTIzMzEsIDkyMzM2LCA5MjM0MSwgOTIzNDUsIAorICAgIDkyMzUwLCA5MjM1NCwgOTIzNTksIDAsIDAsIDAsIDAsIDkyMzY0LCA5MjM3MCwgOTIzNzUsIDAsIDAsIDAsIDAsIDkyMzgwLCAKKyAgICA5MjM4NCwgOTIzODgsIDkyMzkyLCA5MjM5NiwgOTI0MDAsIDkyNDA1LCA5MjQxMCwgOTI0MTYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDkyNDIyLCA5MjQyOCwgOTI0MzUsIDkyNDQxLCA5MjQ0OCwgOTI0NTQsIDkyNDYwLCA5MjQ2NiwgOTI0NzMsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDkyNDc5LCA5MjQ4NywgOTI0OTUsIDkyNTAzLCA5MjUxMSwgOTI1MTksIDkyNTI3LCA5MjUzNSwgCisgICAgOTI1NDMsIDkyNTUxLCA5MjU1OSwgOTI1NjcsIDkyNTc1LCA5MjU4MywgOTI1OTEsIDkyNTk5LCA5MjYwNywgOTI2MTUsIAorICAgIDkyNjIzLCA5MjYzMSwgOTI2MzksIDkyNjQ3LCA5MjY1NSwgOTI2NjMsIDkyNjcxLCA5MjY3OSwgOTI2ODcsIDkyNjk1LCAKKyAgICA5MjcwMywgOTI3MTEsIDkyNzE4LCA5MjcyNiwgOTI3MzQsIDkyNzM4LCA5Mjc0MywgOTI3NDgsIDkyNzUzLCA5Mjc1OCwgCisgICAgOTI3NjMsIDkyNzY4LCA5Mjc3MywgOTI3NzcsIDkyNzgyLCA5Mjc4NiwgOTI3OTEsIDkyNzk1LCA5MjgwMCwgOTI4MDQsIAorICAgIDkyODA5LCA5MjgxNCwgOTI4MTksIDkyODI0LCA5MjgyOSwgOTI4MzQsIDkyODM5LCA5Mjg0NCwgOTI4NDksIDkyODU0LCAKKyAgICA5Mjg1OSwgOTI4NjQsIDkyODY5LCA5Mjg3NCwgOTI4NzksIDkyODg0LCA5Mjg4OSwgOTI4OTQsIDkyODk5LCA5MjkwNCwgCisgICAgOTI5MDksIDkyOTE0LCA5MjkxOSwgOTI5MjQsIDkyOTI5LCA5MjkzNCwgOTI5MzksIDkyOTQ0LCA5Mjk0OSwgOTI5NTQsIAorICAgIDkyOTU5LCA5Mjk2NCwgOTI5NjksIDkyOTc0LCA5Mjk3OSwgOTI5ODQsIDkyOTg5LCA5Mjk5NCwgMCwgMCwgMCwgOTI5OTksIAorICAgIDkzMDA0LCA5MzAxMywgOTMwMjEsIDkzMDMwLCA5MzAzOSwgOTMwNTAsIDkzMDYxLCA5MzA2OCwgOTMwNzUsIDkzMDgyLCAKKyAgICA5MzA4OSwgOTMwOTYsIDkzMTAzLCA5MzExMCwgOTMxMTcsIDkzMTI0LCA5MzEzMSwgOTMxMzgsIDkzMTQ1LCA5MzE1MiwgCisgICAgOTMxNTksIDkzMTY2LCA5MzE3MywgOTMxODAsIDkzMTg3LCA5MzE5NCwgOTMyMDEsIDkzMjA4LCAwLCAwLCA5MzIxNSwgCisgICAgOTMyMjEsIDkzMjI3LCA5MzIzMywgOTMyMzksIDkzMjQ2LCA5MzI1MywgOTMyNjEsIDkzMjY5LCA5MzI3NiwgOTMyODMsIAorICAgIDkzMjkwLCA5MzI5NywgOTMzMDQsIDkzMzExLCA5MzMxOCwgOTMzMjUsIDkzMzMyLCA5MzMzOSwgOTMzNDYsIDkzMzUzLCAKKyAgICA5MzM2MCwgOTMzNjcsIDkzMzc0LCA5MzM4MSwgOTMzODgsIDkzMzk1LCAwLCAwLCAwLCAwLCAwLCA5MzQwMiwgOTM0MDgsIAorICAgIDkzNDE0LCA5MzQyMCwgOTM0MjYsIDkzNDMzLCA5MzQ0MCwgOTM0NDgsIDkzNDU2LCA5MzQ2MiwgOTM0NjgsIDkzNDc1LCAKKyAgICA5MzQ4MSwgOTM0ODcsIDkzNDkzLCA5MzQ5OSwgOTM1MDYsIDkzNTEzLCA5MzUyMCwgOTM1MjcsIDkzNTM0LCA5MzU0MSwgCisgICAgOTM1NDgsIDkzNTU1LCA5MzU2MiwgOTM1NjksIDkzNTc2LCA5MzU4MywgOTM1OTAsIDkzNTk3LCA5MzYwNCwgOTM2MTEsIAorICAgIDkzNjE4LCA5MzYyNSwgOTM2MzIsIDkzNjM5LCA5MzY0NiwgOTM2NTMsIDkzNjYwLCA5MzY2NywgOTM2NzQsIDkzNjgxLCAKKyAgICA5MzY4OCwgOTM2OTUsIDkzNzAyLCA5MzcwOSwgOTM3MTYsIDkzNzIzLCA5MzczMCwgOTM3MzcsIDkzNzQ0LCA5Mzc1MSwgCisgICAgOTM3NTgsIDkzNzY1LCA5Mzc3MiwgOTM3NzksIDkzNzg2LCA5Mzc5MywgOTM4MDAsIDkzODA3LCA5MzgxNCwgOTM4MjEsIAorICAgIDkzODI4LCA5MzgzNSwgOTM4NDIsIDkzODQ5LCA5Mzg1NiwgOTM4NjMsIDkzODcwLCA5Mzg3NywgOTM4ODQsIDkzODkxLCAKKyAgICA5Mzg5OCwgOTM5MDUsIDkzOTEyLCA5MzkxOSwgOTM5MjYsIDkzOTMzLCA5Mzk0MCwgOTM5NDcsIDkzOTU0LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MjYyMiwgOTI2MjYsIDkyNjMwLCAKLSAgICA5MjYzNCwgOTI2MzgsIDkyNjQyLCA5MjY0NiwgOTI2NTAsIDkyNjU0LCA5MjY1OCwgOTI2NjMsIDkyNjY4LCA5MjY3MywgCi0gICAgOTI2NzgsIDkyNjgzLCA5MjY4OCwgOTI2OTMsIDkyNjk4LCA5MjcwMywgOTI3MDksIDkyNzE1LCA5MjcyMSwgOTI3MjgsIAotICAgIDkyNzM1LCA5Mjc0MiwgOTI3NDksIDkyNzU2LCA5Mjc2MywgOTI3NzAsIDkyNzc3LCA5Mjc4NCwgMCwgOTI3OTEsIDkyNzk1LCAKLSAgICA5Mjc5OSwgOTI4MDMsIDkyODA3LCA5MjgxMSwgOTI4MTQsIDkyODE4LCA5MjgyMSwgOTI4MjUsIDkyODI4LCA5MjgzMiwgCi0gICAgOTI4MzYsIDkyODQxLCA5Mjg0NSwgOTI4NTAsIDkyODUzLCA5Mjg1NywgOTI4NjAsIDkyODY0LCA5Mjg2NywgOTI4NzEsIAotICAgIDkyODc1LCA5Mjg3OSwgOTI4ODMsIDkyODg3LCA5Mjg5MSwgOTI4OTUsIDkyODk5LCA5MjkwMywgOTI5MDcsIDkyOTExLCAKLSAgICA5MjkxNSwgOTI5MTksIDkyOTIzLCA5MjkyNywgOTI5MzEsIDkyOTM1LCA5MjkzOSwgOTI5NDIsIDkyOTQ1LCA5Mjk0OSwgCi0gICAgOTI5NTMsIDkyOTU3LCA5Mjk2MCwgOTI5NjMsIDkyOTY2LCA5Mjk3MCwgOTI5NzQsIDkyOTc4LCA5Mjk4MiwgOTI5ODYsIAotICAgIDkyOTg5LCA5Mjk5MywgOTI5OTksIDkzMDA1LCA5MzAxMSwgOTMwMTYsIDkzMDIzLCA5MzAyNywgOTMwMzIsIDkzMDM2LCAKLSAgICA5MzA0MSwgOTMwNDYsIDkzMDUyLCA5MzA1NywgOTMwNjMsIDkzMDY3LCA5MzA3MiwgOTMwNzYsIDkzMDgxLCA5MzA4NCwgCi0gICAgOTMwODcsIDkzMDkxLCA5MzA5NiwgOTMxMDIsIDkzMTA3LCA5MzExMywgMCwgMCwgMCwgMCwgOTMxMTgsIDkzMTIxLCAKLSAgICA5MzEyNCwgOTMxMjcsIDkzMTMwLCA5MzEzMywgOTMxMzYsIDkzMTM5LCA5MzE0MiwgOTMxNDUsIDkzMTQ5LCA5MzE1MywgCi0gICAgOTMxNTcsIDkzMTYxLCA5MzE2NSwgOTMxNjksIDkzMTczLCA5MzE3NywgOTMxODEsIDkzMTg2LCA5MzE5MSwgOTMxOTUsIAotICAgIDkzMTk4LCA5MzIwMSwgOTMyMDQsIDkzMjA3LCA5MzIxMCwgOTMyMTMsIDkzMjE2LCA5MzIxOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTMyMjIsIDkzMjI2LCA5MzIzMCwgOTMyMzQsIDkzMjM3LCA5MzI0MSwgCi0gICAgOTMyNDQsIDkzMjQ4LCA5MzI1MSwgOTMyNTUsIDkzMjU4LCA5MzI2MiwgOTMyNjUsIDkzMjY5LCA5MzI3MiwgOTMyNzYsIAotICAgIDkzMjgwLCA5MzI4NCwgOTMyODgsIDkzMjkyLCA5MzI5NiwgOTMzMDAsIDkzMzA0LCA5MzMwOCwgOTMzMTIsIDkzMzE2LCAKLSAgICA5MzMyMCwgOTMzMjQsIDkzMzI4LCA5MzMzMiwgOTMzMzYsIDkzMzQwLCA5MzM0NCwgOTMzNDgsIDkzMzUyLCA5MzM1NSwgCi0gICAgOTMzNTgsIDkzMzYyLCA5MzM2NiwgOTMzNzAsIDkzMzczLCA5MzM3NiwgOTMzNzksIDkzMzgzLCA5MzM4NywgOTMzOTEsIAotICAgIDkzMzk1LCA5MzM5OSwgOTM0MDIsIDkzNDA3LCA5MzQxMSwgOTM0MTYsIDkzNDIwLCA5MzQyNSwgOTM0MjksIDkzNDM0LCAKLSAgICA5MzQzOCwgOTM0NDMsIDkzNDQ3LCA5MzQ1MSwgOTM0NTUsIDkzNDU5LCA5MzQ2MiwgOTM0NjYsIDkzNDcxLCA5MzQ3NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTM5NjEsIDkzOTY1LCA5Mzk2OSwgOTM5NzMsIDkzOTc3LCA5Mzk4MSwgOTM5ODUsIDkzOTg5LCAKKyAgICA5Mzk5MywgOTM5OTcsIDk0MDAyLCA5NDAwNywgOTQwMTIsIDk0MDE3LCA5NDAyMiwgOTQwMjcsIDk0MDMyLCA5NDAzNywgCisgICAgOTQwNDIsIDk0MDQ4LCA5NDA1NCwgOTQwNjAsIDk0MDY3LCA5NDA3NCwgOTQwODEsIDk0MDg4LCA5NDA5NSwgOTQxMDIsIAorICAgIDk0MTA5LCA5NDExNiwgOTQxMjMsIDAsIDk0MTMwLCA5NDEzNCwgOTQxMzgsIDk0MTQyLCA5NDE0NiwgOTQxNTAsIDk0MTUzLCAKKyAgICA5NDE1NywgOTQxNjAsIDk0MTY0LCA5NDE2NywgOTQxNzEsIDk0MTc1LCA5NDE4MCwgOTQxODQsIDk0MTg5LCA5NDE5MiwgCisgICAgOTQxOTYsIDk0MTk5LCA5NDIwMywgOTQyMDYsIDk0MjEwLCA5NDIxNCwgOTQyMTgsIDk0MjIyLCA5NDIyNiwgOTQyMzAsIAorICAgIDk0MjM0LCA5NDIzOCwgOTQyNDIsIDk0MjQ2LCA5NDI1MCwgOTQyNTQsIDk0MjU4LCA5NDI2MiwgOTQyNjYsIDk0MjcwLCAKKyAgICA5NDI3NCwgOTQyNzgsIDk0MjgxLCA5NDI4NCwgOTQyODgsIDk0MjkyLCA5NDI5NiwgOTQyOTksIDk0MzAyLCA5NDMwNSwgCisgICAgOTQzMDksIDk0MzEzLCA5NDMxNywgOTQzMjEsIDk0MzI0LCA5NDMyNywgOTQzMzEsIDk0MzM3LCA5NDM0MywgOTQzNDksIAorICAgIDk0MzU0LCA5NDM2MSwgOTQzNjUsIDk0MzcwLCA5NDM3NCwgOTQzNzksIDk0Mzg0LCA5NDM5MCwgOTQzOTUsIDk0NDAxLCAKKyAgICA5NDQwNSwgOTQ0MTAsIDk0NDE0LCA5NDQxOSwgOTQ0MjIsIDk0NDI1LCA5NDQyOSwgOTQ0MzQsIDk0NDQwLCA5NDQ0NSwgCisgICAgOTQ0NTEsIDAsIDAsIDAsIDAsIDk0NDU2LCA5NDQ1OSwgOTQ0NjIsIDk0NDY1LCA5NDQ2OCwgOTQ0NzEsIDk0NDc0LCAKKyAgICA5NDQ3NywgOTQ0ODAsIDk0NDgzLCA5NDQ4NywgOTQ0OTEsIDk0NDk1LCA5NDQ5OSwgOTQ1MDMsIDk0NTA3LCA5NDUxMSwgCisgICAgOTQ1MTUsIDk0NTE5LCA5NDUyNCwgOTQ1MjksIDk0NTMzLCA5NDUzNiwgOTQ1MzksIDk0NTQyLCA5NDU0NSwgOTQ1NDgsIAorICAgIDk0NTUxLCA5NDU1NCwgOTQ1NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk0NTYwLCA5NDU2NSwgOTQ1NzAsIDk0NTc1LCA5NDU3OSwgOTQ1ODQsIDk0NTg4LCA5NDU5MywgOTQ1OTcsIDk0NjAyLCAKKyAgICA5NDYwNiwgOTQ2MTEsIDk0NjE1LCA5NDYyMCwgOTQ2MjQsIDk0NjI5LCA5NDYzNCwgOTQ2MzksIDk0NjQ0LCA5NDY0OSwgCisgICAgOTQ2NTQsIDk0NjU5LCA5NDY2NCwgOTQ2NjksIDk0Njc0LCA5NDY3OSwgOTQ2ODQsIDk0Njg5LCA5NDY5NCwgOTQ2OTksIAorICAgIDk0NzA0LCA5NDcwOSwgOTQ3MTQsIDk0NzE5LCA5NDcyNCwgOTQ3MjgsIDk0NzMyLCA5NDczNywgOTQ3NDIsIDk0NzQ3LCAKKyAgICA5NDc1MSwgOTQ3NTUsIDk0NzU5LCA5NDc2NCwgOTQ3NjksIDk0Nzc0LCA5NDc3OSwgOTQ3ODMsIDk0Nzg3LCA5NDc5MywgCisgICAgOTQ3OTgsIDk0ODA0LCA5NDgwOSwgOTQ4MTUsIDk0ODIwLCA5NDgyNiwgOTQ4MzEsIDk0ODM3LCA5NDg0MiwgOTQ4NDcsIAorICAgIDk0ODUyLCA5NDg1NywgOTQ4NjEsIDk0ODY2LCA5NDg3MiwgOTQ4NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDk0ODgxLCA5NDg4OCwgOTQ4OTUsIDk0OTAyLCA5NDkwOSwgOTQ5MTYsIDk0OTIzLCA5NDkzMCwgCisgICAgOTQ5MzcsIDk0OTQ0LCA5NDk1MSwgOTQ5NTgsIDk0OTY1LCA5NDk3MiwgOTQ5NzksIDk0OTg2LCA5NDk5MywgOTUwMDAsIAorICAgIDk1MDA3LCA5NTAxNCwgOTUwMjEsIDk1MDI4LCA5NTAzNSwgOTUwNDIsIDk1MDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NTA1NiwgOTUwNjMsIDk1MDY5LCA5NTA3NSwgOTUwODEsIDk1MDg3LCA5NTA5MywgOTUwOTksIDk1MTA1LCA5NTExMSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOTUxMTcsIDk1MTIyLCA5NTEyNywgOTUxMzIsIDk1MTM3LCA5NTE0MSwgOTUxNDUsIDk1MTQ5LCAKKyAgICA5NTE1NCwgOTUxNTksIDk1MTY0LCA5NTE2OSwgOTUxNzQsIDk1MTc5LCA5NTE4NCwgOTUxODksIDk1MTk0LCA5NTE5OSwgCisgICAgOTUyMDQsIDk1MjA5LCA5NTIxNCwgOTUyMTksIDk1MjI0LCA5NTIyOSwgOTUyMzQsIDk1MjM5LCA5NTI0NCwgOTUyNDksIAorICAgIDk1MjU0LCA5NTI1OSwgOTUyNjQsIDk1MjY5LCA5NTI3NCwgOTUyNzksIDk1Mjg0LCA5NTI4OSwgOTUyOTQsIDk1Mjk5LCAKKyAgICA5NTMwNCwgOTUzMDksIDk1MzE0LCA5NTMxOSwgOTUzMjUsIDk1MzMwLCA5NTMzNiwgOTUzNDEsIDk1MzQ3LCA5NTM1MiwgCisgICAgOTUzNTgsIDk1MzY0LCA5NTM2OCwgOTUzNzMsIDk1Mzc3LCAwLCA5NTM4MSwgOTUzODYsIDk1MzkwLCA5NTM5NCwgOTUzOTgsIAorICAgIDk1NDAyLCA5NTQwNiwgOTU0MTAsIDk1NDE0LCA5NTQxOCwgOTU0MjIsIDk1NDI3LCA5NTQzMSwgOTU0MzYsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzNDc4LCA5MzQ4MSwgOTM0ODYsIDkzNDkyLCA5MzUwMCwgCi0gICAgOTM1MDUsIDkzNTExLCA5MzUxOSwgOTM1MjUsIDkzNTMxLCA5MzUzNSwgOTM1MzksIDkzNTQ2LCA5MzU1NSwgOTM1NjIsIAotICAgIDkzNTcxLCA5MzU3NywgOTM1ODYsIDkzNTkzLCA5MzYwMCwgOTM2MDcsIDkzNjE3LCA5MzYyMywgOTM2MjcsIDkzNjM0LCAKLSAgICA5MzY0MywgOTM2NTMsIDkzNjYwLCA5MzY2NywgOTM2NzEsIDkzNjc1LCA5MzY4MiwgOTM2OTIsIDkzNjk2LCA5MzcwMywgCi0gICAgOTM3MTAsIDkzNzE3LCA5MzcyMywgOTM3MzAsIDkzNzM3LCA5Mzc0NCwgOTM3NTEsIDkzNzU1LCA5Mzc1OSwgOTM3NjMsIAotICAgIDkzNzcwLCA5Mzc3NCwgOTM3ODEsIDkzNzg4LCA5MzgwMiwgOTM4MTEsIDkzODE1LCA5MzgxOSwgOTM4MjMsIDkzODMwLCAKLSAgICA5MzgzNCwgOTM4MzgsIDkzODQyLCA5Mzg1MCwgOTM4NTgsIDkzODc3LCA5Mzg4NywgOTM5MDcsIDkzOTExLCA5MzkxNSwgCi0gICAgOTM5MTksIDkzOTIzLCA5MzkyNywgOTM5MzEsIDkzOTM1LCA5Mzk0MiwgOTM5NDYsIDkzOTQ5LCA5Mzk1MywgOTM5NTcsIAotICAgIDkzOTYzLCA5Mzk3MCwgOTM5NzksIDkzOTgzLCA5Mzk5MiwgOTQwMDEsIDk0MDA5LCA5NDAxMywgOTQwMjAsIDk0MDI0LCAKLSAgICA5NDAyOCwgOTQwMzIsIDk0MDM2LCA5NDA0NywgOTQwNTYsIDk0MDY1LCA5NDA3NCwgOTQwODMsIDk0MDk1LCA5NDEwNCwgCi0gICAgOTQxMTMsIDk0MTIyLCA5NDEzMCwgOTQxMzksIDk0MTUxLCA5NDE2MCwgOTQxNjksIDk0MTc4LCA5NDE5MCwgOTQxOTksIAotICAgIDk0MjA4LCA5NDIyMCwgOTQyMjksIDk0MjM4LCA5NDI1MCwgOTQyNTksIDk0MjYzLCA5NDI2NywgOTQyNzEsIDk0Mjc1LCAKLSAgICA5NDI3OSwgOTQyODMsIDk0Mjg3LCA5NDI5NCwgOTQyOTgsIDk0MzAyLCA5NDMxMywgOTQzMTcsIDk0MzIxLCA5NDMyOCwgCi0gICAgOTQzMzQsIDk0MzQwLCA5NDM0NCwgOTQzNTEsIDk0MzU1LCA5NDM1OSwgOTQzNjMsIDk0MzY3LCA5NDM3MSwgOTQzNzUsIAotICAgIDk0MzgxLCA5NDM4OSwgOTQzOTMsIDk0Mzk3LCA5NDQwMCwgOTQ0MDYsIDk0NDE2LCA5NDQyMCwgOTQ0MzIsIDk0NDM5LCAKLSAgICA5NDQ0NiwgOTQ0NTMsIDk0NDYwLCA5NDQ2NiwgOTQ0NzAsIDk0NDc0LCA5NDQ3OCwgOTQ0ODIsIDk0NDg5LCA5NDQ5OCwgCi0gICAgOTQ1MDUsIDk0NTEzLCA5NDUyMSwgOTQ1MjcsIDk0NTMxLCA5NDUzNSwgOTQ1MzksIDk0NTQzLCA5NDU0OSwgOTQ1NTgsIAotICAgIDk0NTcwLCA5NDU3NywgOTQ1ODQsIDk0NTkzLCA5NDYwNCwgOTQ2MTAsIDk0NjE5LCA5NDYyOCwgOTQ2MzUsIDk0NjQ0LCAKLSAgICA5NDY1MSwgOTQ2NTgsIDk0NjY4LCA5NDY3NSwgOTQ2ODIsIDk0Njg5LCA5NDY5NiwgOTQ3MDAsIDk0NzA2LCA5NDcxMCwgCi0gICAgOTQ3MjEsIDk0NzI5LCA5NDczOCwgOTQ3NTAsIDk0NzU3LCA5NDc2NCwgOTQ3NzQsIDk0NzgxLCA5NDc5MCwgOTQ3OTcsIAotICAgIDk0ODA2LCA5NDgxMywgOTQ4MjAsIDk0ODMwLCA5NDgzNywgOTQ4NDQsIDk0ODU0LCA5NDg2MSwgOTQ4NzMsIDk0ODgyLCAKLSAgICA5NDg4OSwgOTQ4OTYsIDk0OTAzLCA5NDkxMiwgOTQ5MjIsIDk0OTM1LCA5NDk0MiwgOTQ5NTIsIDk0OTYyLCA5NDk2OSwgCi0gICAgOTQ5NzgsIDk0OTkxLCA5NDk5OCwgOTUwMDUsIDk1MDEyLCA5NTAyMiwgOTUwMzIsIDk1MDM5LCA5NTA0OSwgOTUwNTYsIAotICAgIDk1MDYzLCA5NTA3MywgOTUwNzksIDk1MDg2LCA5NTA5MywgOTUxMDAsIDk1MTEwLCA5NTExNywgOTUxMjQsIDk1MTMxLCAKLSAgICA5NTEzNywgOTUxNDQsIDk1MTU0LCA5NTE2MSwgOTUxNjUsIDk1MTczLCA5NTE3NywgOTUxODksIDk1MTkzLCA5NTIwNywgCi0gICAgOTUyMTEsIDk1MjE1LCA5NTIxOSwgOTUyMjMsIDk1MjI5LCA5NTIzNiwgOTUyNDQsIDk1MjQ4LCA5NTI1MiwgOTUyNTYsIAotICAgIDk1MjYwLCA5NTI2NywgOTUyNzEsIDk1Mjc3LCA5NTI4MywgOTUyOTEsIDk1Mjk1LCA5NTMwMiwgOTUzMTAsIDk1MzE0LCAKLSAgICA5NTMxOCwgOTUzMjQsIDk1MzI4LCA5NTMzNywgOTUzNDYsIDk1MzUzLCA5NTM2MywgOTUzNjksIDk1MzczLCA5NTM3NywgCi0gICAgOTUzODUsIDk1MzkyLCA5NTM5OSwgOTU0MDUsIDk1NDA5LCA5NTQxNywgOTU0MjEsIDk1NDI4LCA5NTQ0MCwgOTU0NDcsIAotICAgIDk1NDU3LCA5NTQ2MywgOTU0NjcsIDk1NDc2LCA5NTQ4MywgOTU0OTIsIDk1NDk2LCA5NTUwMCwgOTU1MDcsIDk1NTExLCAKLSAgICA5NTUxNSwgOTU1MTksIDk1NTIzLCA5NTUyNiwgOTU1MzIsIDk1NTM4LCA5NTU0MiwgOTU1NDYsIDk1NTUzLCA5NTU2MCwgCi0gICAgOTU1NjcsIDk1NTc0LCA5NTU4MSwgOTU1ODgsIDk1NTk1LCA5NTYwMiwgOTU2MDgsIDk1NjEyLCA5NTYxNiwgOTU2MjMsIAotICAgIDk1NjMwLCA5NTYzNywgOTU2NDQsIDk1NjUxLCA5NTY1NSwgOTU2NTgsIDk1NjYzLCA5NTY2NywgOTU2NzEsIDk1NjgwLCAKLSAgICA5NTY4OSwgOTU2OTMsIDk1Njk3LCA5NTcwMywgOTU3MDksIDk1NzI2LCA5NTczMiwgOTU3MzYsIDk1NzQ1LCA5NTc0OSwgCi0gICAgOTU3NTMsIDk1NzYwLCA5NTc2OCwgOTU3NzYsIDk1NzgyLCA5NTc4NiwgOTU3OTAsIDk1Nzk0LCA5NTc5OCwgOTU4MDEsIAotICAgIDk1ODA3LCA5NTgxNCwgOTU4MjQsIDk1ODMxLCA5NTgzOCwgOTU4NDUsIDk1ODUxLCA5NTg1OCwgOTU4NjUsIDk1ODcyLCAKLSAgICA5NTg3OSwgOTU4ODYsIDk1ODk1LCA5NTkwMiwgOTU5MTQsIDk1OTIxLCA5NTkyOCwgOTU5MzgsIDk1OTQ5LCA5NTk1NiwgCi0gICAgOTU5NjMsIDk1OTcwLCA5NTk3NywgOTU5ODQsIDk1OTkxLCA5NTk5OCwgOTYwMDUsIDk2MDEyLCA5NjAxOSwgOTYwMjksIAotICAgIDk2MDM5LCA5NjA0OSwgOTYwNTYsIDk2MDY2LCA5NjA3MywgOTYwODAsIDk2MDg3LCA5NjA5NCwgOTYxMDEsIDk2MTA4LCAKLSAgICA5NjExNSwgOTYxMjIsIDk2MTI5LCA5NjEzNiwgOTYxNDMsIDk2MTUwLCA5NjE1NywgOTYxNjMsIDk2MTcwLCA5NjE3NywgCi0gICAgOTYxODYsIDk2MTkzLCA5NjIwMCwgOTYyMDQsIDk2MjEyLCA5NjIxNiwgOTYyMjAsIDk2MjI0LCA5NjIyOCwgOTYyMzIsIAotICAgIDk2MjM5LCA5NjI0MywgOTYyNTIsIDk2MjU2LCA5NjI2MywgOTYyNzEsIDk2Mjc1LCA5NjI3OSwgOTYyODMsIDk2Mjk2LCAKLSAgICA5NjMxMiwgOTYzMTYsIDk2MzIwLCA5NjMyNywgOTYzMzMsIDk2MzQwLCA5NjM0NCwgOTYzNDgsIDk2MzUyLCA5NjM1NiwgCi0gICAgOTYzNjAsIDk2MzY3LCA5NjM3MSwgOTYzODksIDk2MzkzLCA5NjM5NywgOTY0MDQsIDk2NDA4LCA5NjQxMiwgOTY0MTgsIAotICAgIDk2NDIyLCA5NjQyNiwgOTY0MzQsIDk2NDM4LCA5NjQ0MiwgOTY0NDYsIDk2NDUwLCA5NjQ1NiwgOTY0NjcsIDk2NDc2LCAKLSAgICA5NjQ4NSwgOTY0OTIsIDk2NDk5LCA5NjUxMCwgOTY1MTcsIDk2NTI0LCA5NjUzMSwgOTY1MzgsIDk2NTQ1LCA5NjU1MiwgCi0gICAgOTY1NTksIDk2NTY5LCA5NjU3NSwgOTY1ODIsIDk2NTkyLCA5NjYwMSwgOTY2MDgsIDk2NjE3LCA5NjYyNywgOTY2MzQsIAotICAgIDk2NjQxLCA5NjY0OCwgOTY2NTUsIDk2NjY3LCA5NjY3NCwgOTY2ODEsIDk2Njg4LCA5NjY5NSwgOTY3MDIsIDk2NzEyLCAKLSAgICA5NjcxOSwgOTY3MjYsIDk2NzM2LCA5Njc0OSwgOTY3NjEsIDk2NzY4LCA5Njc3OCwgOTY3ODUsIDk2NzkyLCA5Njc5OSwgCi0gICAgOTY4MTMsIDk2ODE5LCA5NjgyNywgOTY4MzcsIDk2ODQ3LCA5Njg1NCwgOTY4NjEsIDk2ODY3LCA5Njg3MSwgOTY4NzgsIAotICAgIDk2ODg4LCA5Njg5NCwgOTY5MDcsIDk2OTExLCA5NjkxNSwgOTY5MjIsIDk2OTI2LCA5NjkzMywgOTY5NDMsIDk2OTQ3LCAKLSAgICA5Njk1MSwgOTY5NTUsIDk2OTU5LCA5Njk2MywgOTY5NzAsIDk2OTc0LCA5Njk4MSwgOTY5ODgsIDk2OTk1LCA5NzAwNCwgCi0gICAgOTcwMTMsIDk3MDIzLCA5NzAzMCwgOTcwMzcsIDk3MDQ0LCA5NzA1NCwgOTcwNjEsIDk3MDcxLCA5NzA3OCwgOTcwODgsIAotICAgIDk3MDk1LCA5NzEwMiwgOTcxMTIsIDk3MTIyLCA5NzEyOSwgOTcxMzUsIDk3MTQzLCA5NzE1MSwgOTcxNTcsIDk3MTYzLCAKLSAgICA5NzE2NywgOTcxNzEsIDk3MTc4LCA5NzE4NiwgOTcxOTIsIDk3MTk2LCA5NzIwMCwgOTcyMDQsIDk3MjExLCA5NzIyMywgCi0gICAgOTcyMjYsIDk3MjMzLCA5NzIzOSwgOTcyNDMsIDk3MjQ3LCA5NzI1MSwgOTcyNTUsIDk3MjU5LCA5NzI2MywgOTcyNjcsIAotICAgIDk3MjcxLCA5NzI3NSwgOTcyNzksIDk3Mjg2LCA5NzI5MCwgOTcyOTYsIDk3MzAwLCA5NzMwNCwgOTczMDgsIDk3MzE0LCAKLSAgICA5NzMyMSwgOTczMjgsIDk3MzM1LCA5NzM0NiwgOTczNTQsIDk3MzU4LCA5NzM2NCwgOTczNzMsIDk3MzgwLCA5NzM4NiwgCi0gICAgOTczODksIDk3MzkzLCA5NzM5NywgOTc0MDMsIDk3NDEyLCA5NzQyMCwgOTc0MjQsIDk3NDMwLCA5NzQzNCwgOTc0MzgsIAotICAgIDk3NDQyLCA5NzQ0OCwgOTc0NTUsIDk3NDYxLCA5NzQ2NSwgOTc0NzEsIDk3NDc1LCA5NzQ3OSwgOTc0ODgsIDk3NTAwLCAKLSAgICA5NzUwNCwgOTc1MTEsIDk3NTE4LCA5NzUyOCwgOTc1MzUsIDk3NTQ3LCA5NzU1NCwgOTc1NjEsIDk3NTY4LCA5NzU3OSwgCi0gICAgOTc1ODksIDk3NjAyLCA5NzYxMiwgOTc2MTksIDk3NjIzLCA5NzYyNywgOTc2MzEsIDk3NjM1LCA5NzY0NCwgOTc2NTMsIAotICAgIDk3NjYyLCA5NzY3OSwgOTc2ODgsIDk3Njk0LCA5NzcwMSwgOTc3MDksIDk3NzIyLCA5NzcyNiwgOTc3MzUsIDk3NzQ0LCAKLSAgICA5Nzc1MywgOTc3NjIsIDk3NzczLCA5Nzc4MiwgOTc3OTEsIDk3ODAwLCA5NzgwOSwgOTc4MTgsIDk3ODI3LCA5NzgzNywgCi0gICAgOTc4NDAsIDk3ODQ0LCA5Nzg0OCwgOTc4NTIsIDk3ODU2LCA5Nzg2MCwgOTc4NjYsIDk3ODczLCA5Nzg4MCwgOTc4ODcsIAotICAgIDk3ODkzLCA5Nzg5OSwgOTc5MDYsIDk3OTEyLCA5NzkxOSwgOTc5MjcsIDk3OTMxLCA5NzkzOCwgOTc5NDUsIDk3OTUyLCAKLSAgICA5Nzk2MCwgOTc5NjMsIDk3OTY3LCA5Nzk3MSwgOTc5NzUsIDk3OTc5LCA5Nzk4NSwgOTc5ODksIDk3OTk1LCA5ODAwMiwgCi0gICAgOTgwMDksIDk4MDE1LCA5ODAyMiwgOTgwMjksIDk4MDM2LCA5ODA0MywgOTgwNTAsIDk4MDU3LCA5ODA2NCwgOTgwNzEsIAotICAgIDk4MDc4LCA5ODA4NSwgOTgwOTIsIDk4MDk5LCA5ODEwNiwgOTgxMTMsIDk4MTE5LCA5ODEyMywgOTgxMzIsIDk4MTM2LCAKLSAgICA5ODE0MCwgOTgxNDQsIDk4MTQ4LCA5ODE1NCwgOTgxNjEsIDk4MTY4LCA5ODE3NSwgOTgxODIsIDk4MTg5LCA5ODE5NSwgCi0gICAgOTgyMDMsIDk4MjA3LCA5ODIxMSwgOTgyMTUsIDk4MjE5LCA5ODIyNSwgOTgyNDIsIDk4MjU5LCA5ODI2MywgOTgyNjcsIAotICAgIDk4MjcxLCA5ODI3NSwgOTgyNzksIDk4MjgzLCA5ODI4OSwgOTgyOTYsIDk4MzAwLCA5ODMwNiwgOTgzMTMsIDk4MzIwLCAKLSAgICA5ODMyNywgOTgzMzQsIDk4MzQxLCA5ODM1MCwgOTgzNTcsIDk4MzY0LCA5ODM3MSwgOTgzNzgsIDk4MzgyLCA5ODM4NiwgCi0gICAgOTgzOTIsIDk4NDA0LCA5ODQwOCwgOTg0MTIsIDk4NDIxLCA5ODQyNSwgOTg0MjksIDk4NDMzLCA5ODQzOSwgOTg0NDMsIAotICAgIDk4NDQ3LCA5ODQ1NiwgOTg0NjAsIDk4NDY0LCA5ODQ2OCwgOTg0NzUsIDk4NDc5LCA5ODQ4MywgOTg0ODcsIDk4NDkxLCAKLSAgICA5ODQ5NSwgOTg0OTksIDk4NTAzLCA5ODUwNywgOTg1MTMsIDk4NTIwLCA5ODUyNywgOTg1MzMsIDk4NTM3LCA5ODU1NCwgCi0gICAgOTg1NjAsIDk4NTY0LCA5ODU3MCwgOTg1NzYsIDk4NTgyLCA5ODU4OCwgOTg1OTQsIDk4NjAwLCA5ODYwNCwgOTg2MDgsIAotICAgIDk4NjEyLCA5ODYxOCwgOTg2MjIsIDk4NjI4LCA5ODYzMiwgOTg2MzYsIDk4NjQzLCA5ODY1MCwgOTg2NjcsIDk4NjcxLCAKLSAgICA5ODY3NSwgOTg2NzksIDk4NjgzLCA5ODY4NywgOTg2OTksIDk4NzAyLCA5ODcwNywgOTg3MTIsIDk4NzI3LCA5ODczNywgCi0gICAgOTg3NDksIDk4NzUzLCA5ODc1NywgOTg3NjEsIDk4NzY3LCA5ODc3NCwgOTg3ODEsIDk4NzkxLCA5ODgwMywgOTg4MDksIAotICAgIDk4ODE1LCA5ODgyNCwgOTg4MjgsIDk4ODMyLCA5ODgzOSwgOTg4NDksIDk4ODU2LCA5ODg2MiwgOTg4NjYsIDk4ODcwLCAKLSAgICA5ODg3NywgOTg4ODMsIDk4ODg3LCA5ODg5MywgOTg4OTcsIDk4OTA1LCA5ODkxMSwgOTg5MTUsIDk4OTIzLCA5ODkzMSwgCi0gICAgOTg5MzgsIDk4OTQ0LCA5ODk1MSwgOTg5NTgsIDk4OTY4LCA5ODk3OCwgOTg5ODIsIDk4OTg2LCA5ODk5MCwgOTg5OTQsIAotICAgIDk5MDAwLCA5OTAwNywgOTkwMTMsIDk5MDIwLCA5OTAyNywgOTkwMzQsIDk5MDQzLCA5OTA1MCwgOTkwNTcsIDk5MDYzLCAKLSAgICA5OTA3MCwgOTkwNzcsIDk5MDg0LCA5OTA5MSwgOTkwOTgsIDk5MTA1LCA5OTExMSwgOTkxMTgsIDk5MTI1LCA5OTEzMiwgCi0gICAgOTkxNDEsIDk5MTQ4LCA5OTE1NSwgOTkxNTksIDk5MTY1LCA5OTE2OSwgOTkxNzUsIDk5MTgyLCA5OTE4OSwgOTkxOTYsIAotICAgIDk5MjAwLCA5OTIwNCwgOTkyMDgsIDk5MjEyLCA5OTIxNiwgOTkyMjMsIDk5MjI3LCA5OTIzMSwgOTkyMzcsIDk5MjQ1LCAKLSAgICA5OTI0OSwgOTkyNTMsIDk5MjU3LCA5OTI2MSwgOTkyNjgsIDk5MjcyLCA5OTI3NiwgOTkyODQsIDk5Mjg4LCA5OTI5MiwgCi0gICAgOTkyOTYsIDk5MzAwLCA5OTMwNiwgOTkzMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDk5MzE0LCA5OTMyMCwgOTkzMjYsIDk5MzMzLCA5OTM0MCwgOTkzNDcsIDk5MzU0LCA5OTM2MSwgOTkzNjgsIAotICAgIDk5Mzc0LCA5OTM4MSwgOTkzODgsIDk5Mzk1LCA5OTQwMiwgOTk0MDksIDk5NDE2LCA5OTQyMiwgOTk0MjgsIDk5NDM0LCAKLSAgICA5OTQ0MCwgOTk0NDYsIDk5NDUyLCA5OTQ1OCwgOTk0NjQsIDk5NDcwLCA5OTQ3NywgOTk0ODQsIDk5NDkxLCA5OTQ5OCwgCi0gICAgOTk1MDUsIDk5NTEyLCA5OTUxOCwgOTk1MjQsIDk5NTMwLCA5OTUzNywgOTk1NDQsIDk5NTUwLCA5OTU1NiwgOTk1NjUsIAotICAgIDk5NTcyLCA5OTU3OSwgOTk1ODYsIDk5NTkzLCA5OTYwMCwgOTk2MDcsIDk5NjEzLCA5OTYxOSwgOTk2MjUsIDk5NjM0LCAKLSAgICA5OTY0MSwgOTk2NDgsIDk5NjU5LCA5OTY3MCwgOTk2NzYsIDk5NjgyLCA5OTY4OCwgOTk2OTcsIDk5NzA0LCA5OTcxMSwgCi0gICAgOTk3MjEsIDk5NzMxLCA5OTc0MiwgOTk3NTMsIDk5NzY1LCA5OTc3OCwgOTk3ODksIDk5ODAwLCA5OTgxMiwgOTk4MjUsIAotICAgIDk5ODM2LCA5OTg0NywgOTk4NTgsIDk5ODY5LCA5OTg4MCwgOTk4OTIsIDk5OTAwLCA5OTkwOCwgOTk5MTcsIDk5OTI2LCAKLSAgICA5OTkzNSwgOTk5NDEsIDk5OTQ3LCA5OTk1MywgOTk5NjAsIDk5OTcwLCA5OTk3NywgOTk5ODcsIDk5OTkyLCA5OTk5NywgCi0gICAgMTAwMDAzLCAxMDAwMDksIDEwMDAxNywgMTAwMDI1LCAxMDAwMzQsIDEwMDA0NSwgMTAwMDU2LCAxMDAwNjQsIDEwMDA3MiwgCi0gICAgMTAwMDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDAwOTAsIDEwMDEwMSwgMTAwMTA4LCAKLSAgICAxMDAxMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDEyNCwgMTAwMTI4LCAxMDAxMzIsIAotICAgIDEwMDEzNiwgMTAwMTQwLCAxMDAxNDQsIDEwMDE0OCwgMTAwMTUyLCAxMDAxNTYsIDEwMDE2MCwgMTAwMTY0LCAxMDAxNjgsIAotICAgIDEwMDE3MiwgMTAwMTc2LCAxMDAxODAsIDEwMDE4NCwgMTAwMTg4LCAxMDAxOTIsIDEwMDE5NiwgMTAwMjAwLCAxMDAyMDQsIAotICAgIDEwMDIwOCwgMTAwMjEyLCAxMDAyMTYsIDEwMDIyMCwgMTAwMjI0LCAxMDAyMjgsIDEwMDIzMiwgMTAwMjM2LCAxMDAyNDAsIAotICAgIDEwMDI0NCwgMTAwMjQ4LCAxMDAyNTIsIDEwMDI1NiwgMTAwMjYwLCAxMDAyNjQsIDEwMDI2OCwgMTAwMjcyLCAxMDAyNzYsIAotICAgIDEwMDI4MCwgMTAwMjg0LCAxMDAyODgsIDEwMDI5MiwgMTAwMjk2LCAxMDAzMDAsIDEwMDMwNCwgMTAwMzA4LCAxMDAzMTIsIAotICAgIDEwMDMxNiwgMTAwMzIwLCAxMDAzMjQsIDEwMDMyOCwgMTAwMzMyLCAxMDAzMzYsIDEwMDM0MCwgMTAwMzQ0LCAxMDAzNDgsIAotICAgIDEwMDM1MiwgMTAwMzU2LCAxMDAzNjAsIDEwMDM2NCwgMTAwMzY4LCAxMDAzNzIsIDEwMDM3NiwgMTAwMzgwLCAxMDAzODQsIAotICAgIDEwMDM4OCwgMTAwMzkyLCAxMDAzOTYsIDEwMDQwMCwgMTAwNDA0LCAxMDA0MDgsIDEwMDQxMiwgMTAwNDE2LCAxMDA0MjAsIAotICAgIDEwMDQyNCwgMTAwNDI4LCAxMDA0MzIsIDEwMDQzNiwgMTAwNDQwLCAxMDA0NDQsIDEwMDQ0OCwgMTAwNDUyLCAxMDA0NTYsIAotICAgIDEwMDQ2MCwgMTAwNDY0LCAxMDA0NjgsIDEwMDQ3MiwgMTAwNDc2LCAxMDA0ODAsIDEwMDQ4NCwgMTAwNDg4LCAxMDA0OTIsIAotICAgIDEwMDQ5NiwgMTAwNTAwLCAxMDA1MDQsIDEwMDUwOCwgMTAwNTEyLCAxMDA1MTYsIDEwMDUyMCwgMTAwNTI0LCAxMDA1MjgsIAotICAgIDEwMDUzMiwgMTAwNTM2LCAxMDA1NDAsIDEwMDU0NCwgMTAwNTQ4LCAxMDA1NTIsIDEwMDU1NiwgMTAwNTYwLCAxMDA1NjQsIAotICAgIDEwMDU2OCwgMTAwNTcyLCAxMDA1NzYsIDEwMDU4MCwgMTAwNTg0LCAxMDA1ODgsIDEwMDU5MiwgMTAwNTk2LCAxMDA2MDAsIAotICAgIDEwMDYwNCwgMTAwNjA4LCAxMDA2MTIsIDEwMDYxNiwgMTAwNjIwLCAxMDA2MjQsIDEwMDYyOCwgMTAwNjMyLCAxMDA2MzYsIAotICAgIDEwMDY0MCwgMTAwNjQ0LCAxMDA2NDgsIDEwMDY1MiwgMTAwNjU2LCAxMDA2NjAsIDEwMDY2NCwgMTAwNjY4LCAxMDA2NzIsIAotICAgIDEwMDY3NiwgMTAwNjgwLCAxMDA2ODQsIDEwMDY4OCwgMTAwNjkyLCAxMDA2OTYsIDEwMDcwMCwgMTAwNzA0LCAxMDA3MDgsIAotICAgIDEwMDcxMiwgMTAwNzE2LCAxMDA3MjAsIDEwMDcyNCwgMTAwNzI4LCAxMDA3MzIsIDEwMDczNiwgMTAwNzQwLCAxMDA3NDQsIAotICAgIDEwMDc0OCwgMTAwNzUyLCAxMDA3NTYsIDEwMDc2MCwgMTAwNzY0LCAxMDA3NjgsIDEwMDc3MiwgMTAwNzc2LCAxMDA3ODAsIAotICAgIDEwMDc4NCwgMTAwNzg4LCAxMDA3OTIsIDEwMDc5NiwgMTAwODAwLCAxMDA4MDQsIDEwMDgwOCwgMTAwODEyLCAxMDA4MTYsIAotICAgIDEwMDgyMCwgMTAwODI0LCAxMDA4MjgsIDEwMDgzMiwgMTAwODM2LCAxMDA4NDAsIDEwMDg0NCwgMTAwODQ4LCAxMDA4NTIsIAotICAgIDEwMDg1NiwgMTAwODYwLCAxMDA4NjQsIDEwMDg2OCwgMTAwODcyLCAxMDA4NzYsIDEwMDg4MCwgMTAwODg0LCAxMDA4ODgsIAotICAgIDEwMDg5MiwgMTAwODk2LCAxMDA5MDAsIDEwMDkwNCwgMTAwOTA4LCAxMDA5MTIsIDEwMDkxNiwgMTAwOTIwLCAxMDA5MjQsIAotICAgIDEwMDkyOCwgMTAwOTMyLCAxMDA5MzYsIDEwMDk0MCwgMTAwOTQ0LCAxMDA5NDgsIDEwMDk1MiwgMTAwOTU2LCAxMDA5NjAsIAotICAgIDEwMDk2NCwgMTAwOTY4LCAxMDA5NzIsIDEwMDk3NiwgMTAwOTgwLCAxMDA5ODQsIDEwMDk4OCwgMTAwOTkyLCAxMDA5OTYsIAotICAgIDEwMTAwMCwgMTAxMDA0LCAxMDEwMDgsIDEwMTAxMiwgMTAxMDE2LCAxMDEwMjAsIDEwMTAyNCwgMTAxMDI4LCAxMDEwMzIsIAotICAgIDEwMTAzNiwgMTAxMDQwLCAxMDEwNDQsIDEwMTA0OCwgMTAxMDUyLCAxMDEwNTYsIDEwMTA2MCwgMTAxMDY0LCAxMDEwNjgsIAotICAgIDEwMTA3MiwgMTAxMDc2LCAxMDEwODAsIDEwMTA4NCwgMTAxMDg4LCAxMDEwOTIsIDEwMTA5NiwgMTAxMTAwLCAxMDExMDQsIAotICAgIDEwMTEwOCwgMTAxMTEyLCAxMDExMTYsIDEwMTEyMCwgMTAxMTI0LCAxMDExMjgsIDEwMTEzMiwgMTAxMTM2LCAxMDExNDAsIAotICAgIDEwMTE0NCwgMTAxMTQ4LCAxMDExNTIsIDEwMTE1NiwgMTAxMTYwLCAxMDExNjQsIDEwMTE2OCwgMTAxMTcyLCAxMDExNzYsIAotICAgIDEwMTE4MCwgMTAxMTg0LCAxMDExODgsIDEwMTE5MiwgMTAxMTk2LCAxMDEyMDAsIDEwMTIwNCwgMTAxMjA4LCAxMDEyMTIsIAotICAgIDEwMTIxNiwgMTAxMjIwLCAxMDEyMjQsIDEwMTIyOCwgMTAxMjMyLCAxMDEyMzYsIDEwMTI0MCwgMTAxMjQ0LCAxMDEyNDgsIAotICAgIDEwMTI1MiwgMTAxMjU2LCAxMDEyNjAsIDEwMTI2NCwgMTAxMjY4LCAxMDEyNzIsIDEwMTI3NiwgMTAxMjgwLCAxMDEyODQsIAotICAgIDEwMTI4OCwgMTAxMjkyLCAxMDEyOTYsIDEwMTMwMCwgMTAxMzA0LCAxMDEzMDgsIDEwMTMxMiwgMTAxMzE2LCAxMDEzMjAsIAotICAgIDEwMTMyNCwgMTAxMzI4LCAxMDEzMzIsIDEwMTMzNiwgMTAxMzQwLCAxMDEzNDQsIDEwMTM0OCwgMTAxMzUyLCAxMDEzNTYsIAotICAgIDEwMTM2MCwgMTAxMzY0LCAxMDEzNjgsIDEwMTM3MiwgMTAxMzc2LCAxMDEzODAsIDEwMTM4NCwgMTAxMzg4LCAxMDEzOTIsIAotICAgIDEwMTM5NiwgMTAxNDAwLCAxMDE0MDQsIDEwMTQwOCwgMTAxNDEyLCAxMDE0MTYsIDEwMTQyMCwgMTAxNDI0LCAxMDE0MjgsIAotICAgIDEwMTQzMiwgMTAxNDM2LCAxMDE0NDAsIDEwMTQ0NCwgMTAxNDQ4LCAxMDE0NTIsIDEwMTQ1NiwgMTAxNDYwLCAxMDE0NjQsIAotICAgIDEwMTQ2OCwgMTAxNDcyLCAxMDE0NzYsIDEwMTQ4MCwgMTAxNDg0LCAxMDE0ODgsIDEwMTQ5MiwgMTAxNDk2LCAxMDE1MDAsIAotICAgIDEwMTUwNCwgMTAxNTA4LCAxMDE1MTIsIDEwMTUxNiwgMTAxNTIwLCAxMDE1MjQsIDEwMTUyOCwgMTAxNTMyLCAxMDE1MzYsIAotICAgIDEwMTU0MCwgMTAxNTQ0LCAxMDE1NDgsIDEwMTU1MiwgMTAxNTU2LCAxMDE1NjAsIDEwMTU2NCwgMTAxNTY4LCAxMDE1NzIsIAotICAgIDEwMTU3NiwgMTAxNTgwLCAxMDE1ODQsIDEwMTU4OCwgMTAxNTkyLCAxMDE1OTYsIDEwMTYwMCwgMTAxNjA0LCAxMDE2MDgsIAotICAgIDEwMTYxMiwgMTAxNjE2LCAxMDE2MjAsIDEwMTYyNCwgMTAxNjI4LCAxMDE2MzIsIDEwMTYzNiwgMTAxNjQwLCAxMDE2NDQsIAotICAgIDEwMTY0OCwgMTAxNjUyLCAxMDE2NTYsIDEwMTY2MCwgMTAxNjY0LCAxMDE2NjgsIDEwMTY3MiwgMTAxNjc2LCAxMDE2ODAsIAotICAgIDEwMTY4NCwgMTAxNjg4LCAxMDE2OTIsIDEwMTY5NiwgMTAxNzAwLCAxMDE3MDQsIDEwMTcwOCwgMTAxNzEyLCAxMDE3MTYsIAotICAgIDEwMTcyMCwgMTAxNzI0LCAxMDE3MjgsIDEwMTczMiwgMTAxNzM2LCAxMDE3NDAsIDEwMTc0NCwgMTAxNzQ4LCAxMDE3NTIsIAotICAgIDEwMTc1NiwgMTAxNzYwLCAxMDE3NjQsIDEwMTc2OCwgMTAxNzcyLCAxMDE3NzYsIDEwMTc4MCwgMTAxNzg0LCAxMDE3ODgsIAotICAgIDEwMTc5MiwgMTAxNzk2LCAxMDE4MDAsIDEwMTgwNCwgMTAxODA4LCAxMDE4MTIsIDEwMTgxNiwgMTAxODIwLCAxMDE4MjQsIAotICAgIDEwMTgyOCwgMTAxODMyLCAxMDE4MzYsIDEwMTg0MCwgMTAxODQ0LCAxMDE4NDgsIDEwMTg1MiwgMTAxODU2LCAxMDE4NjAsIAotICAgIDEwMTg2NCwgMTAxODY4LCAxMDE4NzIsIDEwMTg3NiwgMTAxODgwLCAxMDE4ODQsIDEwMTg4OCwgMTAxODkyLCAxMDE4OTYsIAotICAgIDEwMTkwMCwgMTAxOTA0LCAxMDE5MDgsIDEwMTkxMiwgMTAxOTE2LCAxMDE5MjAsIDEwMTkyNCwgMTAxOTI4LCAxMDE5MzIsIAotICAgIDEwMTkzNiwgMTAxOTQwLCAxMDE5NDQsIDEwMTk0OCwgMTAxOTUyLCAxMDE5NTYsIDEwMTk2MCwgMTAxOTY0LCAxMDE5NjgsIAotICAgIDEwMTk3MiwgMTAxOTc2LCAxMDE5ODAsIDEwMTk4NCwgMTAxOTg4LCAxMDE5OTIsIDEwMTk5NiwgMTAyMDAwLCAxMDIwMDQsIAotICAgIDEwMjAwOCwgMTAyMDEyLCAxMDIwMTYsIDEwMjAyMCwgMTAyMDI0LCAxMDIwMjgsIDEwMjAzMiwgMTAyMDM2LCAxMDIwNDAsIAotICAgIDEwMjA0NCwgMTAyMDQ4LCAxMDIwNTIsIDEwMjA1NiwgMTAyMDYwLCAxMDIwNjQsIDEwMjA2OCwgMTAyMDcyLCAxMDIwNzYsIAotICAgIDEwMjA4MCwgMTAyMDg0LCAxMDIwODgsIDEwMjA5MiwgMTAyMDk2LCAxMDIxMDAsIDEwMjEwNCwgMTAyMTA4LCAxMDIxMTIsIAotICAgIDEwMjExNiwgMTAyMTIwLCAxMDIxMjQsIDEwMjEyOCwgMTAyMTMyLCAxMDIxMzYsIDEwMjE0MCwgMTAyMTQ0LCAxMDIxNDgsIAotICAgIDEwMjE1MiwgMTAyMTU2LCAxMDIxNjAsIDEwMjE2NCwgMTAyMTY4LCAxMDIxNzIsIDEwMjE3NiwgMTAyMTgwLCAxMDIxODQsIAotICAgIDEwMjE4OCwgMTAyMTkyLCAxMDIxOTYsIDEwMjIwMCwgMTAyMjA0LCAxMDIyMDgsIDEwMjIxMiwgMTAyMjE2LCAxMDIyMjAsIAotICAgIDEwMjIyNCwgMTAyMjI4LCAxMDIyMzIsIDEwMjIzNiwgMTAyMjQwLCAxMDIyNDQsIDEwMjI0OCwgMTAyMjUyLCAxMDIyNTYsIAotICAgIDEwMjI2MCwgMTAyMjY0LCAxMDIyNjgsIDEwMjI3MiwgMTAyMjc2LCAxMDIyODAsIDEwMjI4NCwgMTAyMjg4LCAxMDIyOTIsIAotICAgIDEwMjI5NiwgMTAyMzAwLCAxMDIzMDQsIDEwMjMwOCwgMTAyMzEyLCAxMDIzMTYsIDEwMjMyMCwgMTAyMzI0LCAxMDIzMjgsIAotICAgIDEwMjMzMiwgMTAyMzM2LCAxMDIzNDAsIDEwMjM0NCwgMTAyMzQ4LCAxMDIzNTIsIDEwMjM1NiwgMTAyMzYwLCAxMDIzNjQsIAotICAgIDEwMjM2OCwgMTAyMzcyLCAxMDIzNzYsIDEwMjM4MCwgMTAyMzg0LCAxMDIzODgsIDEwMjM5MiwgMTAyMzk2LCAxMDI0MDAsIAotICAgIDEwMjQwNCwgMTAyNDA4LCAxMDI0MTIsIDEwMjQxNiwgMTAyNDIwLCAxMDI0MjQsIDEwMjQyOCwgMTAyNDMyLCAxMDI0MzYsIAotICAgIDEwMjQ0MCwgMTAyNDQ0LCAxMDI0NDgsIDEwMjQ1MiwgMTAyNDU2LCAxMDI0NjAsIDEwMjQ2NCwgMTAyNDY4LCAxMDI0NzIsIAotICAgIDEwMjQ3NiwgMTAyNDgwLCAxMDI0ODQsIDEwMjQ4OCwgMTAyNDkyLCAxMDI0OTYsIDEwMjUwMCwgMTAyNTA0LCAxMDI1MDgsIAotICAgIDEwMjUxMiwgMTAyNTE2LCAxMDI1MjAsIDEwMjUyNCwgMTAyNTI4LCAxMDI1MzIsIDEwMjUzNiwgMTAyNTQwLCAxMDI1NDQsIAotICAgIDEwMjU0OCwgMTAyNTUyLCAxMDI1NTYsIDEwMjU2MCwgMTAyNTY0LCAxMDI1NjgsIDEwMjU3MiwgMTAyNTc2LCAxMDI1ODAsIAotICAgIDEwMjU4NCwgMTAyNTg4LCAxMDI1OTIsIDEwMjU5NiwgMTAyNjAwLCAxMDI2MDQsIDEwMjYwOCwgMTAyNjEyLCAxMDI2MTYsIAotICAgIDEwMjYyMCwgMTAyNjI0LCAxMDI2MjgsIDEwMjYzMiwgMTAyNjM2LCAxMDI2NDAsIDEwMjY0NCwgMTAyNjQ4LCAxMDI2NTIsIAotICAgIDEwMjY1NiwgMTAyNjYwLCAxMDI2NjQsIDEwMjY2OCwgMTAyNjcyLCAxMDI2NzYsIDEwMjY4MCwgMTAyNjg0LCAxMDI2ODgsIAotICAgIDEwMjY5MiwgMTAyNjk2LCAxMDI3MDAsIDEwMjcwNCwgMTAyNzA4LCAxMDI3MTIsIDEwMjcxNiwgMTAyNzIwLCAxMDI3MjQsIAotICAgIDEwMjcyOCwgMTAyNzMyLCAxMDI3MzYsIDEwMjc0MCwgMTAyNzQ0LCAxMDI3NDgsIDEwMjc1MiwgMTAyNzU2LCAxMDI3NjAsIAotICAgIDEwMjc2NCwgMTAyNzY4LCAxMDI3NzIsIDEwMjc3NiwgMTAyNzgwLCAxMDI3ODQsIDEwMjc4OCwgMTAyNzkyLCAxMDI3OTYsIAotICAgIDEwMjgwMCwgMTAyODA0LCAxMDI4MDgsIDEwMjgxMiwgMTAyODE2LCAxMDI4MjAsIDEwMjgyNCwgMTAyODI4LCAxMDI4MzIsIAotICAgIDEwMjgzNiwgMTAyODQwLCAxMDI4NDQsIDEwMjg0OCwgMTAyODUyLCAxMDI4NTYsIDEwMjg2MCwgMTAyODY0LCAxMDI4NjgsIAotICAgIDEwMjg3MiwgMTAyODc2LCAxMDI4ODAsIDEwMjg4NCwgMTAyODg4LCAxMDI4OTIsIDEwMjg5NiwgMTAyOTAwLCAxMDI5MDQsIAotICAgIDEwMjkwOCwgMTAyOTEyLCAxMDI5MTYsIDEwMjkyMCwgMTAyOTI0LCAxMDI5MjgsIDEwMjkzMiwgMTAyOTM2LCAxMDI5NDAsIAotICAgIDEwMjk0NCwgMTAyOTQ4LCAxMDI5NTIsIDEwMjk1NiwgMTAyOTYwLCAxMDI5NjQsIDEwMjk2OCwgMTAyOTcyLCAxMDI5NzYsIAotICAgIDEwMjk4MCwgMTAyOTg0LCAxMDI5ODgsIDEwMjk5MiwgMTAyOTk2LCAxMDMwMDAsIDEwMzAwNCwgMTAzMDA4LCAxMDMwMTIsIAotICAgIDEwMzAxNiwgMTAzMDIwLCAxMDMwMjQsIDEwMzAyOCwgMTAzMDMyLCAxMDMwMzYsIDEwMzA0MCwgMTAzMDQ0LCAxMDMwNDgsIAotICAgIDEwMzA1MiwgMTAzMDU2LCAxMDMwNjAsIDEwMzA2NCwgMTAzMDY4LCAxMDMwNzIsIDEwMzA3NiwgMTAzMDgwLCAxMDMwODQsIAotICAgIDEwMzA4OCwgMTAzMDkyLCAxMDMwOTYsIDEwMzEwMCwgMTAzMTA0LCAxMDMxMDgsIDEwMzExMiwgMTAzMTE2LCAxMDMxMjAsIAotICAgIDEwMzEyNCwgMTAzMTI4LCAxMDMxMzIsIDEwMzEzNiwgMTAzMTQwLCAxMDMxNDQsIDEwMzE0OCwgMTAzMTUyLCAxMDMxNTYsIAotICAgIDEwMzE2MCwgMTAzMTY0LCAxMDMxNjgsIDEwMzE3MiwgMTAzMTc2LCAxMDMxODAsIDEwMzE4NCwgMTAzMTg4LCAxMDMxOTIsIAotICAgIDEwMzE5NiwgMTAzMjAwLCAxMDMyMDQsIDEwMzIwOCwgMTAzMjEyLCAxMDMyMTYsIDEwMzIyMCwgMTAzMjI0LCAxMDMyMjgsIAotICAgIDEwMzIzMiwgMTAzMjM2LCAxMDMyNDAsIDEwMzI0NCwgMTAzMjQ4LCAxMDMyNTIsIDEwMzI1NiwgMTAzMjYwLCAxMDMyNjQsIAotICAgIDEwMzI2OCwgMTAzMjcyLCAxMDMyNzYsIDEwMzI4MCwgMTAzMjg0LCAxMDMyODgsIDEwMzI5MiwgMTAzMjk2LCAxMDMzMDAsIAotICAgIDEwMzMwNCwgMTAzMzA4LCAxMDMzMTIsIDEwMzMxNiwgMTAzMzIwLCAxMDMzMjQsIDEwMzMyOCwgMTAzMzMyLCAxMDMzMzYsIAotICAgIDEwMzM0MCwgMTAzMzQ0LCAxMDMzNDgsIDEwMzM1MiwgMTAzMzU2LCAxMDMzNjAsIDEwMzM2NCwgMTAzMzY4LCAxMDMzNzIsIAotICAgIDEwMzM3NiwgMTAzMzgwLCAxMDMzODQsIDEwMzM4OCwgMTAzMzkyLCAxMDMzOTYsIDEwMzQwMCwgMTAzNDA0LCAxMDM0MDgsIAotICAgIDEwMzQxMiwgMTAzNDE2LCAxMDM0MjAsIDEwMzQyNCwgMTAzNDI4LCAxMDM0MzIsIDEwMzQzNiwgMTAzNDQwLCAxMDM0NDQsIAotICAgIDEwMzQ0OCwgMTAzNDUyLCAxMDM0NTYsIDEwMzQ2MCwgMTAzNDY0LCAxMDM0NjgsIDEwMzQ3MiwgMTAzNDc2LCAxMDM0ODAsIAotICAgIDEwMzQ4NCwgMTAzNDg4LCAxMDM0OTIsIDEwMzQ5NiwgMTAzNTAwLCAxMDM1MDQsIDEwMzUwOCwgMTAzNTEyLCAxMDM1MTYsIAotICAgIDEwMzUyMCwgMTAzNTI0LCAxMDM1MjgsIDEwMzUzMiwgMTAzNTM2LCAxMDM1NDAsIDEwMzU0NCwgMTAzNTQ4LCAxMDM1NTIsIAotICAgIDEwMzU1NiwgMTAzNTYwLCAxMDM1NjQsIDEwMzU2OCwgMTAzNTcyLCAxMDM1NzYsIDEwMzU4MCwgMTAzNTg0LCAxMDM1ODgsIAotICAgIDEwMzU5MiwgMTAzNTk2LCAxMDM2MDAsIDEwMzYwNCwgMTAzNjA4LCAxMDM2MTIsIDEwMzYxNiwgMTAzNjIwLCAxMDM2MjQsIAotICAgIDEwMzYyOCwgMTAzNjMyLCAxMDM2MzYsIDEwMzY0MCwgMTAzNjQ0LCAxMDM2NDgsIDEwMzY1MiwgMTAzNjU2LCAxMDM2NjAsIAotICAgIDEwMzY2NCwgMTAzNjY4LCAxMDM2NzIsIDEwMzY3NiwgMTAzNjgwLCAxMDM2ODQsIDEwMzY4OCwgMTAzNjkyLCAxMDM2OTYsIAotICAgIDEwMzcwMCwgMTAzNzA0LCAxMDM3MDgsIDEwMzcxMiwgMTAzNzE2LCAxMDM3MjAsIDEwMzcyNCwgMTAzNzI4LCAxMDM3MzIsIAotICAgIDEwMzczNiwgMTAzNzQwLCAxMDM3NDQsIDEwMzc0OCwgMTAzNzUyLCAxMDM3NTYsIDEwMzc2MCwgMTAzNzY0LCAxMDM3NjgsIAotICAgIDEwMzc3MiwgMTAzNzc2LCAxMDM3ODAsIDEwMzc4NCwgMTAzNzg4LCAxMDM3OTIsIDEwMzc5NiwgMTAzODAwLCAxMDM4MDQsIAotICAgIDEwMzgwOCwgMTAzODEyLCAxMDM4MTYsIDEwMzgyMCwgMTAzODI0LCAxMDM4MjgsIDEwMzgzMiwgMTAzODM2LCAxMDM4NDAsIAotICAgIDEwMzg0NCwgMTAzODQ4LCAxMDM4NTIsIDEwMzg1NiwgMTAzODYwLCAxMDM4NjQsIDEwMzg2OCwgMTAzODcyLCAxMDM4NzYsIAotICAgIDEwMzg4MCwgMTAzODg0LCAxMDM4ODgsIDEwMzg5MiwgMTAzODk2LCAxMDM5MDAsIDEwMzkwNCwgMTAzOTA4LCAxMDM5MTIsIAotICAgIDEwMzkxNiwgMTAzOTIwLCAxMDM5MjQsIDEwMzkyOCwgMTAzOTMyLCAxMDM5MzYsIDEwMzk0MCwgMTAzOTQ0LCAxMDM5NDgsIAotICAgIDEwMzk1MiwgMTAzOTU2LCAxMDM5NjAsIDEwMzk2NCwgMTAzOTY4LCAxMDM5NzIsIDEwMzk3NiwgMTAzOTgwLCAxMDM5ODQsIAotICAgIDEwMzk4OCwgMTAzOTkyLCAxMDM5OTYsIDEwNDAwMCwgMTA0MDA0LCAxMDQwMDgsIDEwNDAxMiwgMTA0MDE2LCAxMDQwMjAsIAotICAgIDEwNDAyNCwgMTA0MDI4LCAxMDQwMzIsIDEwNDAzNiwgMTA0MDQwLCAxMDQwNDQsIDEwNDA0OCwgMTA0MDUyLCAxMDQwNTYsIAotICAgIDEwNDA2MCwgMTA0MDY0LCAxMDQwNjgsIDEwNDA3MiwgMTA0MDc2LCAxMDQwODAsIDEwNDA4NCwgMTA0MDg4LCAxMDQwOTIsIAotICAgIDEwNDA5NiwgMTA0MTAwLCAxMDQxMDQsIDEwNDEwOCwgMTA0MTEyLCAxMDQxMTYsIDEwNDEyMCwgMTA0MTI0LCAxMDQxMjgsIAotICAgIDEwNDEzMiwgMTA0MTM2LCAxMDQxNDAsIDEwNDE0NCwgMTA0MTQ4LCAxMDQxNTIsIDEwNDE1NiwgMTA0MTYwLCAxMDQxNjQsIAotICAgIDEwNDE2OCwgMTA0MTcyLCAxMDQxNzYsIDEwNDE4MCwgMTA0MTg0LCAxMDQxODgsIDEwNDE5MiwgMTA0MTk2LCAxMDQyMDAsIAotICAgIDEwNDIwNCwgMTA0MjA4LCAxMDQyMTIsIDEwNDIxNiwgMTA0MjIwLCAxMDQyMjQsIDEwNDIyOCwgMTA0MjMyLCAxMDQyMzYsIAotICAgIDEwNDI0MCwgMTA0MjQ0LCAxMDQyNDgsIDEwNDI1MiwgMTA0MjU2LCAxMDQyNjAsIDEwNDI2NCwgMTA0MjY4LCAxMDQyNzIsIAotICAgIDEwNDI3NiwgMTA0MjgwLCAxMDQyODQsIDEwNDI4OCwgMTA0MjkyLCAxMDQyOTYsIDEwNDMwMCwgMTA0MzA0LCAxMDQzMDgsIAotICAgIDEwNDMxMiwgMTA0MzE2LCAxMDQzMjAsIDEwNDMyNCwgMTA0MzI4LCAxMDQzMzIsIDEwNDMzNiwgMTA0MzQwLCAxMDQzNDQsIAotICAgIDEwNDM0OCwgMTA0MzUyLCAxMDQzNTYsIDEwNDM2MCwgMTA0MzY0LCAxMDQzNjgsIDEwNDM3MiwgMTA0Mzc2LCAxMDQzODAsIAotICAgIDEwNDM4NCwgMTA0Mzg4LCAxMDQzOTIsIDEwNDM5NiwgMTA0NDAwLCAxMDQ0MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NDQxLCA5NTQ0NSwgOTU0NDksIDk1NDUzLCA5NTQ1NiwgOTU0NjAsIAorICAgIDk1NDYzLCA5NTQ2NywgOTU0NzAsIDk1NDc0LCA5NTQ3OCwgOTU0ODMsIDk1NDg3LCA5NTQ5MiwgOTU0OTUsIDk1NDk5LCAKKyAgICA5NTUwMiwgOTU1MDYsIDk1NTA5LCA5NTUxMywgOTU1MTcsIDk1NTIxLCA5NTUyNSwgOTU1MjksIDk1NTMzLCA5NTUzNywgCisgICAgOTU1NDEsIDk1NTQ1LCA5NTU0OSwgOTU1NTMsIDk1NTU3LCA5NTU2MSwgOTU1NjUsIDk1NTY5LCA5NTU3MywgOTU1NzcsIAorICAgIDk1NTgxLCA5NTU4NCwgOTU1ODcsIDk1NTkxLCA5NTU5NSwgOTU1OTksIDk1NjAyLCA5NTYwNSwgOTU2MDgsIDk1NjEyLCAKKyAgICA5NTYxNiwgOTU2MjAsIDk1NjI0LCA5NTYyOCwgOTU2MzEsIDk1NjM0LCA5NTYzOSwgOTU2NDMsIDk1NjQ4LCA5NTY1MiwgCisgICAgOTU2NTcsIDk1NjYyLCA5NTY2OCwgOTU2NzMsIDk1Njc5LCA5NTY4MywgOTU2ODgsIDk1NjkyLCA5NTY5NywgOTU3MDEsIAorICAgIDk1NzA1LCA5NTcwOSwgOTU3MTMsIDk1NzE2LCA5NTcxOSwgOTU3MjMsIDk1NzI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NTczMCwgOTU3MzQsIDk1NzM3LCA5NTc0MCwgOTU3NDMsIDk1NzQ2LCA5NTc0OSwgOTU3NTIsIDk1NzU1LCA5NTc1OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU3NjEsIDk1NzY1LCA5NTc3MCwgOTU3NzQsIDk1Nzc5LCAKKyAgICA5NTc4MywgOTU3ODgsIDk1NzkyLCA5NTc5NywgOTU4MDEsIDk1ODA2LCA5NTgxMCwgOTU4MTUsIDk1ODIwLCA5NTgyNSwgCisgICAgOTU4MzAsIDk1ODM1LCA5NTg0MCwgOTU4NDUsIDk1ODUwLCA5NTg1NSwgOTU4NjAsIDk1ODY1LCA5NTg3MCwgOTU4NzUsIAorICAgIDk1ODgwLCA5NTg4NSwgOTU4OTAsIDk1ODk1LCA5NTkwMCwgOTU5MDQsIDk1OTA4LCA5NTkxMywgOTU5MTgsIDk1OTIzLCAKKyAgICA5NTkyNywgOTU5MzEsIDk1OTM1LCA5NTk0MCwgOTU5NDUsIDk1OTUwLCA5NTk1NCwgOTU5NTgsIDk1OTYzLCA5NTk2OCwgCisgICAgOTU5NzMsIDk1OTc5LCA5NTk4NCwgOTU5OTAsIDk1OTk1LCA5NjAwMSwgOTYwMDYsIDk2MDEyLCA5NjAxNywgOTYwMjMsIAorICAgIDk2MDI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NjAzMywgOTYwMzgsIDk2MDQyLCA5NjA0NiwgOTYwNTAsIDk2MDU0LCAKKyAgICA5NjA1OCwgOTYwNjIsIDk2MDY2LCA5NjA3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTYwNzQsIDk2MDc3LCA5NjA4MiwgOTYwODgsIAorICAgIDk2MDk2LCA5NjEwMSwgOTYxMDcsIDk2MTE1LCA5NjEyMSwgOTYxMjcsIDk2MTMxLCA5NjEzNSwgOTYxNDIsIDk2MTUxLCAKKyAgICA5NjE1OCwgOTYxNjcsIDk2MTczLCA5NjE4MiwgOTYxODksIDk2MTk2LCA5NjIwMywgOTYyMTMsIDk2MjE5LCA5NjIyMywgCisgICAgOTYyMzAsIDk2MjM5LCA5NjI0OSwgOTYyNTYsIDk2MjYzLCA5NjI2NywgOTYyNzEsIDk2Mjc4LCA5NjI4OCwgOTYyOTIsIAorICAgIDk2Mjk5LCA5NjMwNiwgOTYzMTMsIDk2MzE5LCA5NjMyNiwgOTYzMzMsIDk2MzQwLCA5NjM0NywgOTYzNTEsIDk2MzU1LCAKKyAgICA5NjM1OSwgOTYzNjYsIDk2MzcwLCA5NjM3NywgOTYzODQsIDk2Mzk4LCA5NjQwNywgOTY0MTEsIDk2NDE1LCA5NjQxOSwgCisgICAgOTY0MjYsIDk2NDMwLCA5NjQzNCwgOTY0MzgsIDk2NDQ2LCA5NjQ1NCwgOTY0NzMsIDk2NDgzLCA5NjUwMywgOTY1MDcsIAorICAgIDk2NTExLCA5NjUxNSwgOTY1MTksIDk2NTIzLCA5NjUyNywgOTY1MzEsIDk2NTM4LCA5NjU0MiwgOTY1NDUsIDk2NTQ5LCAKKyAgICA5NjU1MywgOTY1NTksIDk2NTY2LCA5NjU3NSwgOTY1NzksIDk2NTg4LCA5NjU5NywgOTY2MDUsIDk2NjA5LCA5NjYxNiwgCisgICAgOTY2MjAsIDk2NjI0LCA5NjYyOCwgOTY2MzIsIDk2NjQzLCA5NjY1MiwgOTY2NjEsIDk2NjcwLCA5NjY3OSwgOTY2OTEsIAorICAgIDk2NzAwLCA5NjcwOSwgOTY3MTgsIDk2NzI2LCA5NjczNSwgOTY3NDcsIDk2NzU2LCA5Njc2NSwgOTY3NzQsIDk2Nzg2LCAKKyAgICA5Njc5NSwgOTY4MDQsIDk2ODE2LCA5NjgyNSwgOTY4MzQsIDk2ODQ2LCA5Njg1NSwgOTY4NTksIDk2ODYzLCA5Njg2NywgCisgICAgOTY4NzEsIDk2ODc1LCA5Njg3OSwgOTY4ODMsIDk2ODkwLCA5Njg5NCwgOTY4OTgsIDk2OTA5LCA5NjkxMywgOTY5MTcsIAorICAgIDk2OTI0LCA5NjkzMCwgOTY5MzYsIDk2OTQwLCA5Njk0NywgOTY5NTEsIDk2OTU1LCA5Njk1OSwgOTY5NjMsIDk2OTY3LCAKKyAgICA5Njk3MSwgOTY5NzcsIDk2OTg1LCA5Njk4OSwgOTY5OTMsIDk2OTk2LCA5NzAwMiwgOTcwMTIsIDk3MDE2LCA5NzAyOCwgCisgICAgOTcwMzUsIDk3MDQyLCA5NzA0OSwgOTcwNTYsIDk3MDYyLCA5NzA2NiwgOTcwNzAsIDk3MDc0LCA5NzA3OCwgOTcwODUsIAorICAgIDk3MDk0LCA5NzEwMSwgOTcxMDksIDk3MTE3LCA5NzEyMywgOTcxMjcsIDk3MTMxLCA5NzEzNSwgOTcxMzksIDk3MTQ1LCAKKyAgICA5NzE1NCwgOTcxNjYsIDk3MTczLCA5NzE4MCwgOTcxODksIDk3MjAwLCA5NzIwNiwgOTcyMTUsIDk3MjI0LCA5NzIzMSwgCisgICAgOTcyNDAsIDk3MjQ3LCA5NzI1NCwgOTcyNjQsIDk3MjcxLCA5NzI3OCwgOTcyODUsIDk3MjkyLCA5NzI5NiwgOTczMDIsIAorICAgIDk3MzA2LCA5NzMxNywgOTczMjUsIDk3MzM0LCA5NzM0NiwgOTczNTMsIDk3MzYwLCA5NzM3MCwgOTczNzcsIDk3Mzg2LCAKKyAgICA5NzM5MywgOTc0MDIsIDk3NDA5LCA5NzQxNiwgOTc0MjYsIDk3NDMzLCA5NzQ0MCwgOTc0NTAsIDk3NDU3LCA5NzQ2OSwgCisgICAgOTc0NzgsIDk3NDg1LCA5NzQ5MiwgOTc0OTksIDk3NTA4LCA5NzUxOCwgOTc1MzEsIDk3NTM4LCA5NzU0OCwgOTc1NTgsIAorICAgIDk3NTY1LCA5NzU3NCwgOTc1ODcsIDk3NTk0LCA5NzYwMSwgOTc2MDgsIDk3NjE4LCA5NzYyOCwgOTc2MzUsIDk3NjQ1LCAKKyAgICA5NzY1MiwgOTc2NTksIDk3NjY5LCA5NzY3NSwgOTc2ODIsIDk3Njg5LCA5NzY5NiwgOTc3MDYsIDk3NzEzLCA5NzcyMCwgCisgICAgOTc3MjcsIDk3NzMzLCA5Nzc0MCwgOTc3NTAsIDk3NzU3LCA5Nzc2MSwgOTc3NjksIDk3NzczLCA5Nzc4NSwgOTc3ODksIAorICAgIDk3ODAzLCA5NzgwNywgOTc4MTEsIDk3ODE1LCA5NzgxOSwgOTc4MjUsIDk3ODMyLCA5Nzg0MCwgOTc4NDQsIDk3ODQ4LCAKKyAgICA5Nzg1MiwgOTc4NTYsIDk3ODYzLCA5Nzg2NywgOTc4NzMsIDk3ODc5LCA5Nzg4NywgOTc4OTEsIDk3ODk4LCA5NzkwNiwgCisgICAgOTc5MTAsIDk3OTE0LCA5NzkyMCwgOTc5MjQsIDk3OTMzLCA5Nzk0MiwgOTc5NDksIDk3OTU5LCA5Nzk2NSwgOTc5NjksIAorICAgIDk3OTczLCA5Nzk4MSwgOTc5ODgsIDk3OTk1LCA5ODAwMSwgOTgwMDUsIDk4MDEzLCA5ODAxNywgOTgwMjQsIDk4MDM2LCAKKyAgICA5ODA0MywgOTgwNTMsIDk4MDU5LCA5ODA2MywgOTgwNzIsIDk4MDc5LCA5ODA4OCwgOTgwOTIsIDk4MDk2LCA5ODEwMywgCisgICAgOTgxMDcsIDk4MTExLCA5ODExNSwgOTgxMTksIDk4MTIyLCA5ODEyOCwgOTgxMzQsIDk4MTM4LCA5ODE0MiwgOTgxNDksIAorICAgIDk4MTU2LCA5ODE2MywgOTgxNzAsIDk4MTc3LCA5ODE4NCwgOTgxOTEsIDk4MTk4LCA5ODIwNCwgOTgyMDgsIDk4MjEyLCAKKyAgICA5ODIxOSwgOTgyMjYsIDk4MjMzLCA5ODI0MCwgOTgyNDcsIDk4MjUxLCA5ODI1NCwgOTgyNTksIDk4MjYzLCA5ODI2NywgCisgICAgOTgyNzYsIDk4Mjg1LCA5ODI4OSwgOTgyOTMsIDk4Mjk5LCA5ODMwNSwgOTgzMjIsIDk4MzI4LCA5ODMzMiwgOTgzNDEsIAorICAgIDk4MzQ1LCA5ODM0OSwgOTgzNTYsIDk4MzY0LCA5ODM3MiwgOTgzNzgsIDk4MzgyLCA5ODM4NiwgOTgzOTAsIDk4Mzk0LCAKKyAgICA5ODM5NywgOTg0MDMsIDk4NDEwLCA5ODQyMCwgOTg0MjcsIDk4NDM0LCA5ODQ0MSwgOTg0NDcsIDk4NDU0LCA5ODQ2MSwgCisgICAgOTg0NjgsIDk4NDc1LCA5ODQ4MiwgOTg0OTEsIDk4NDk4LCA5ODUxMCwgOTg1MTcsIDk4NTI0LCA5ODUzNCwgOTg1NDUsIAorICAgIDk4NTUyLCA5ODU1OSwgOTg1NjYsIDk4NTczLCA5ODU4MCwgOTg1ODcsIDk4NTk0LCA5ODYwMSwgOTg2MDgsIDk4NjE1LCAKKyAgICA5ODYyNSwgOTg2MzUsIDk4NjQ1LCA5ODY1MiwgOTg2NjIsIDk4NjY5LCA5ODY3NiwgOTg2ODMsIDk4NjkwLCA5ODY5NiwgCisgICAgOTg3MDMsIDk4NzEwLCA5ODcxNywgOTg3MjQsIDk4NzMxLCA5ODczOCwgOTg3NDUsIDk4NzUyLCA5ODc1OCwgOTg3NjUsIAorICAgIDk4NzcyLCA5ODc4MSwgOTg3ODgsIDk4Nzk1LCA5ODc5OSwgOTg4MDcsIDk4ODExLCA5ODgxNSwgOTg4MTksIDk4ODIzLCAKKyAgICA5ODgyNywgOTg4MzQsIDk4ODM4LCA5ODg0NywgOTg4NTEsIDk4ODU4LCA5ODg2NiwgOTg4NzAsIDk4ODc0LCA5ODg3OCwgCisgICAgOTg4OTEsIDk4OTA3LCA5ODkxMSwgOTg5MTUsIDk4OTIyLCA5ODkyOCwgOTg5MzUsIDk4OTM5LCA5ODk0MywgOTg5NDcsIAorICAgIDk4OTUxLCA5ODk1NSwgOTg5NjIsIDk4OTY2LCA5ODk4NCwgOTg5ODgsIDk4OTkyLCA5ODk5OSwgOTkwMDMsIDk5MDA3LCAKKyAgICA5OTAxMywgOTkwMTcsIDk5MDIxLCA5OTAyOSwgOTkwMzMsIDk5MDM3LCA5OTA0MSwgOTkwNDUsIDk5MDUxLCA5OTA2MiwgCisgICAgOTkwNzEsIDk5MDgwLCA5OTA4NywgOTkwOTQsIDk5MTA1LCA5OTExMiwgOTkxMTksIDk5MTI2LCA5OTEzMywgOTkxNDAsIAorICAgIDk5MTQ3LCA5OTE1NCwgOTkxNjQsIDk5MTcwLCA5OTE3NywgOTkxODcsIDk5MTk2LCA5OTIwMywgOTkyMTIsIDk5MjIyLCAKKyAgICA5OTIyOSwgOTkyMzYsIDk5MjQzLCA5OTI1MCwgOTkyNjIsIDk5MjY5LCA5OTI3NiwgOTkyODMsIDk5MjkwLCA5OTI5NywgCisgICAgOTkzMDcsIDk5MzE0LCA5OTMyMSwgOTkzMzEsIDk5MzQ0LCA5OTM1NiwgOTkzNjMsIDk5MzczLCA5OTM4MCwgOTkzODcsIAorICAgIDk5Mzk0LCA5OTQwOCwgOTk0MTQsIDk5NDIyLCA5OTQzMiwgOTk0NDIsIDk5NDQ5LCA5OTQ1NiwgOTk0NjIsIDk5NDY2LCAKKyAgICA5OTQ3MywgOTk0ODMsIDk5NDg5LCA5OTUwMiwgOTk1MDYsIDk5NTEwLCA5OTUxNywgOTk1MjEsIDk5NTI4LCA5OTUzOCwgCisgICAgOTk1NDIsIDk5NTQ2LCA5OTU1MCwgOTk1NTQsIDk5NTU4LCA5OTU2NSwgOTk1NjksIDk5NTc2LCA5OTU4MywgOTk1OTAsIAorICAgIDk5NTk5LCA5OTYwOCwgOTk2MTgsIDk5NjI1LCA5OTYzMiwgOTk2MzksIDk5NjQ5LCA5OTY1NiwgOTk2NjYsIDk5NjczLCAKKyAgICA5OTY4MywgOTk2OTAsIDk5Njk3LCA5OTcwNywgOTk3MTcsIDk5NzI0LCA5OTczMCwgOTk3MzgsIDk5NzQ2LCA5OTc1MiwgCisgICAgOTk3NTgsIDk5NzYyLCA5OTc2NiwgOTk3NzMsIDk5NzgxLCA5OTc4NywgOTk3OTEsIDk5Nzk1LCA5OTc5OSwgOTk4MDYsIAorICAgIDk5ODE4LCA5OTgyMSwgOTk4MjgsIDk5ODM0LCA5OTgzOCwgOTk4NDIsIDk5ODQ2LCA5OTg1MCwgOTk4NTQsIDk5ODU4LCAKKyAgICA5OTg2MiwgOTk4NjYsIDk5ODcwLCA5OTg3NCwgOTk4ODEsIDk5ODg1LCA5OTg5MSwgOTk4OTUsIDk5ODk5LCA5OTkwMywgCisgICAgOTk5MDksIDk5OTE2LCA5OTkyMywgOTk5MzAsIDk5OTQxLCA5OTk0OSwgOTk5NTMsIDk5OTU5LCA5OTk2OCwgOTk5NzUsIAorICAgIDk5OTgxLCA5OTk4NCwgOTk5ODgsIDk5OTkyLCA5OTk5OCwgMTAwMDA3LCAxMDAwMTUsIDEwMDAxOSwgMTAwMDI1LCAKKyAgICAxMDAwMjksIDEwMDAzMywgMTAwMDM3LCAxMDAwNDMsIDEwMDA1MCwgMTAwMDU2LCAxMDAwNjAsIDEwMDA2NiwgMTAwMDcwLCAKKyAgICAxMDAwNzQsIDEwMDA4MywgMTAwMDk1LCAxMDAwOTksIDEwMDEwNiwgMTAwMTEzLCAxMDAxMjMsIDEwMDEzMCwgMTAwMTQyLCAKKyAgICAxMDAxNDksIDEwMDE1NiwgMTAwMTYzLCAxMDAxNzQsIDEwMDE4NCwgMTAwMTk3LCAxMDAyMDcsIDEwMDIxNCwgMTAwMjE4LCAKKyAgICAxMDAyMjIsIDEwMDIyNiwgMTAwMjMwLCAxMDAyMzksIDEwMDI0OCwgMTAwMjU3LCAxMDAyNzQsIDEwMDI4MywgMTAwMjg5LCAKKyAgICAxMDAyOTYsIDEwMDMwNCwgMTAwMzE3LCAxMDAzMjEsIDEwMDMzMCwgMTAwMzM5LCAxMDAzNDgsIDEwMDM1NywgMTAwMzY4LCAKKyAgICAxMDAzNzcsIDEwMDM4NiwgMTAwMzk1LCAxMDA0MDQsIDEwMDQxMywgMTAwNDIyLCAxMDA0MzIsIDEwMDQzNSwgMTAwNDM5LCAKKyAgICAxMDA0NDMsIDEwMDQ0NywgMTAwNDUxLCAxMDA0NTUsIDEwMDQ2MSwgMTAwNDY4LCAxMDA0NzUsIDEwMDQ4MiwgMTAwNDg4LCAKKyAgICAxMDA0OTQsIDEwMDUwMSwgMTAwNTA3LCAxMDA1MTQsIDEwMDUyMiwgMTAwNTI2LCAxMDA1MzMsIDEwMDU0MCwgMTAwNTQ3LCAKKyAgICAxMDA1NTUsIDEwMDU1OCwgMTAwNTYyLCAxMDA1NjYsIDEwMDU3MCwgMTAwNTczLCAxMDA1NzksIDEwMDU4MywgMTAwNTg5LCAKKyAgICAxMDA1OTYsIDEwMDYwMywgMTAwNjA5LCAxMDA2MTYsIDEwMDYyMywgMTAwNjMwLCAxMDA2MzcsIDEwMDY0NCwgMTAwNjUxLCAKKyAgICAxMDA2NTgsIDEwMDY2NSwgMTAwNjcyLCAxMDA2NzksIDEwMDY4NiwgMTAwNjkzLCAxMDA3MDAsIDEwMDcwNywgMTAwNzEzLCAKKyAgICAxMDA3MTcsIDEwMDcyNiwgMTAwNzMwLCAxMDA3MzQsIDEwMDczOCwgMTAwNzQyLCAxMDA3NDgsIDEwMDc1NSwgMTAwNzYyLCAKKyAgICAxMDA3NjksIDEwMDc3NiwgMTAwNzgzLCAxMDA3ODksIDEwMDc5NywgMTAwODAxLCAxMDA4MDUsIDEwMDgwOSwgMTAwODEzLCAKKyAgICAxMDA4MTksIDEwMDgzNiwgMTAwODUzLCAxMDA4NTcsIDEwMDg2MSwgMTAwODY1LCAxMDA4NjksIDEwMDg3MywgMTAwODc3LCAKKyAgICAxMDA4ODMsIDEwMDg5MCwgMTAwODk0LCAxMDA5MDAsIDEwMDkwNywgMTAwOTE0LCAxMDA5MjEsIDEwMDkyOCwgMTAwOTM1LCAKKyAgICAxMDA5NDQsIDEwMDk1MSwgMTAwOTU4LCAxMDA5NjUsIDEwMDk3MiwgMTAwOTc2LCAxMDA5ODAsIDEwMDk4NiwgMTAwOTk4LCAKKyAgICAxMDEwMDIsIDEwMTAwNiwgMTAxMDE1LCAxMDEwMTksIDEwMTAyMywgMTAxMDI3LCAxMDEwMzMsIDEwMTAzNywgMTAxMDQxLCAKKyAgICAxMDEwNTAsIDEwMTA1NCwgMTAxMDU4LCAxMDEwNjIsIDEwMTA2OSwgMTAxMDczLCAxMDEwNzcsIDEwMTA4MSwgMTAxMDg1LCAKKyAgICAxMDEwODksIDEwMTA5MywgMTAxMDk3LCAxMDExMDEsIDEwMTEwNywgMTAxMTE0LCAxMDExMjEsIDEwMTEyNywgMTAxMTMxLCAKKyAgICAxMDExNDgsIDEwMTE1NCwgMTAxMTU4LCAxMDExNjQsIDEwMTE3MCwgMTAxMTc2LCAxMDExODIsIDEwMTE4OCwgMTAxMTk0LCAKKyAgICAxMDExOTgsIDEwMTIwMiwgMTAxMjA2LCAxMDEyMTIsIDEwMTIxNiwgMTAxMjIyLCAxMDEyMjYsIDEwMTIzMCwgMTAxMjM3LCAKKyAgICAxMDEyNDQsIDEwMTI2MSwgMTAxMjY1LCAxMDEyNjksIDEwMTI3MywgMTAxMjc3LCAxMDEyODEsIDEwMTI5MywgMTAxMjk2LCAKKyAgICAxMDEzMDEsIDEwMTMwNiwgMTAxMzIxLCAxMDEzMzEsIDEwMTM0MywgMTAxMzQ3LCAxMDEzNTEsIDEwMTM1NSwgMTAxMzYxLCAKKyAgICAxMDEzNjgsIDEwMTM3NSwgMTAxMzg1LCAxMDEzOTcsIDEwMTQwMywgMTAxNDA5LCAxMDE0MTgsIDEwMTQyMiwgMTAxNDI2LCAKKyAgICAxMDE0MzMsIDEwMTQ0MywgMTAxNDUwLCAxMDE0NTYsIDEwMTQ2MCwgMTAxNDY0LCAxMDE0NzEsIDEwMTQ3NywgMTAxNDgxLCAKKyAgICAxMDE0ODcsIDEwMTQ5MSwgMTAxNDk5LCAxMDE1MDUsIDEwMTUwOSwgMTAxNTE3LCAxMDE1MjUsIDEwMTUzMiwgMTAxNTM4LCAKKyAgICAxMDE1NDUsIDEwMTU1MiwgMTAxNTYyLCAxMDE1NzIsIDEwMTU3NiwgMTAxNTgwLCAxMDE1ODQsIDEwMTU4OCwgMTAxNTk0LCAKKyAgICAxMDE2MDEsIDEwMTYwNywgMTAxNjE0LCAxMDE2MjEsIDEwMTYyOCwgMTAxNjM3LCAxMDE2NDQsIDEwMTY1MSwgMTAxNjU3LCAKKyAgICAxMDE2NjQsIDEwMTY3MSwgMTAxNjc4LCAxMDE2ODUsIDEwMTY5MiwgMTAxNjk5LCAxMDE3MDUsIDEwMTcxMiwgMTAxNzE5LCAKKyAgICAxMDE3MjYsIDEwMTczNSwgMTAxNzQyLCAxMDE3NDksIDEwMTc1MywgMTAxNzU5LCAxMDE3NjMsIDEwMTc2OSwgMTAxNzc2LCAKKyAgICAxMDE3ODMsIDEwMTc5MCwgMTAxNzk0LCAxMDE3OTgsIDEwMTgwMiwgMTAxODA2LCAxMDE4MTAsIDEwMTgxNywgMTAxODIxLCAKKyAgICAxMDE4MjUsIDEwMTgzMSwgMTAxODM5LCAxMDE4NDMsIDEwMTg0NywgMTAxODUxLCAxMDE4NTUsIDEwMTg2MiwgMTAxODY2LCAKKyAgICAxMDE4NzAsIDEwMTg3OCwgMTAxODgyLCAxMDE4ODYsIDEwMTg5MCwgMTAxODk0LCAxMDE5MDAsIDEwMTkwNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxOTA4LCAxMDE5MTQsIDEwMTkyMCwgMTAxOTI3LCAKKyAgICAxMDE5MzQsIDEwMTk0MSwgMTAxOTQ4LCAxMDE5NTUsIDEwMTk2MiwgMTAxOTY4LCAxMDE5NzUsIDEwMTk4MiwgMTAxOTg5LCAKKyAgICAxMDE5OTYsIDEwMjAwMywgMTAyMDEwLCAxMDIwMTYsIDEwMjAyMiwgMTAyMDI4LCAxMDIwMzQsIDEwMjA0MCwgMTAyMDQ2LCAKKyAgICAxMDIwNTIsIDEwMjA1OCwgMTAyMDY0LCAxMDIwNzEsIDEwMjA3OCwgMTAyMDg1LCAxMDIwOTIsIDEwMjA5OSwgMTAyMTA2LCAKKyAgICAxMDIxMTIsIDEwMjExOCwgMTAyMTI0LCAxMDIxMzEsIDEwMjEzOCwgMTAyMTQ0LCAxMDIxNTAsIDEwMjE1OSwgMTAyMTY2LCAKKyAgICAxMDIxNzMsIDEwMjE4MCwgMTAyMTg3LCAxMDIxOTQsIDEwMjIwMSwgMTAyMjA3LCAxMDIyMTMsIDEwMjIxOSwgMTAyMjI4LCAKKyAgICAxMDIyMzUsIDEwMjI0MiwgMTAyMjUzLCAxMDIyNjQsIDEwMjI3MCwgMTAyMjc2LCAxMDIyODIsIDEwMjI5MSwgMTAyMjk4LCAKKyAgICAxMDIzMDUsIDEwMjMxNSwgMTAyMzI1LCAxMDIzMzYsIDEwMjM0NywgMTAyMzU5LCAxMDIzNzIsIDEwMjM4MywgMTAyMzk0LCAKKyAgICAxMDI0MDYsIDEwMjQxOSwgMTAyNDMwLCAxMDI0NDEsIDEwMjQ1MiwgMTAyNDYzLCAxMDI0NzQsIDEwMjQ4NiwgMTAyNDk0LCAKKyAgICAxMDI1MDIsIDEwMjUxMSwgMTAyNTIwLCAxMDI1MjksIDEwMjUzNSwgMTAyNTQxLCAxMDI1NDcsIDEwMjU1NCwgMTAyNTY0LCAKKyAgICAxMDI1NzEsIDEwMjU4MSwgMTAyNTg2LCAxMDI1OTEsIDEwMjU5NywgMTAyNjAzLCAxMDI2MTEsIDEwMjYxOSwgMTAyNjI4LCAKKyAgICAxMDI2MzksIDEwMjY1MCwgMTAyNjU4LCAxMDI2NjYsIDEwMjY3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTAyNjg0LCAxMDI2OTUsIDEwMjcwMiwgMTAyNzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDI3MTgsIDEwMjcyMiwgMTAyNzI2LCAxMDI3MzAsIDEwMjczNCwgMTAyNzM4LCAxMDI3NDIsIDEwMjc0NiwgMTAyNzUwLCAKKyAgICAxMDI3NTQsIDEwMjc1OCwgMTAyNzYyLCAxMDI3NjYsIDEwMjc3MCwgMTAyNzc0LCAxMDI3NzgsIDEwMjc4MiwgMTAyNzg2LCAKKyAgICAxMDI3OTAsIDEwMjc5NCwgMTAyNzk4LCAxMDI4MDIsIDEwMjgwNiwgMTAyODEwLCAxMDI4MTQsIDEwMjgxOCwgMTAyODIyLCAKKyAgICAxMDI4MjYsIDEwMjgzMCwgMTAyODM0LCAxMDI4MzgsIDEwMjg0MiwgMTAyODQ2LCAxMDI4NTAsIDEwMjg1NCwgMTAyODU4LCAKKyAgICAxMDI4NjIsIDEwMjg2NiwgMTAyODcwLCAxMDI4NzQsIDEwMjg3OCwgMTAyODgyLCAxMDI4ODYsIDEwMjg5MCwgMTAyODk0LCAKKyAgICAxMDI4OTgsIDEwMjkwMiwgMTAyOTA2LCAxMDI5MTAsIDEwMjkxNCwgMTAyOTE4LCAxMDI5MjIsIDEwMjkyNiwgMTAyOTMwLCAKKyAgICAxMDI5MzQsIDEwMjkzOCwgMTAyOTQyLCAxMDI5NDYsIDEwMjk1MCwgMTAyOTU0LCAxMDI5NTgsIDEwMjk2MiwgMTAyOTY2LCAKKyAgICAxMDI5NzAsIDEwMjk3NCwgMTAyOTc4LCAxMDI5ODIsIDEwMjk4NiwgMTAyOTkwLCAxMDI5OTQsIDEwMjk5OCwgMTAzMDAyLCAKKyAgICAxMDMwMDYsIDEwMzAxMCwgMTAzMDE0LCAxMDMwMTgsIDEwMzAyMiwgMTAzMDI2LCAxMDMwMzAsIDEwMzAzNCwgMTAzMDM4LCAKKyAgICAxMDMwNDIsIDEwMzA0NiwgMTAzMDUwLCAxMDMwNTQsIDEwMzA1OCwgMTAzMDYyLCAxMDMwNjYsIDEwMzA3MCwgMTAzMDc0LCAKKyAgICAxMDMwNzgsIDEwMzA4MiwgMTAzMDg2LCAxMDMwOTAsIDEwMzA5NCwgMTAzMDk4LCAxMDMxMDIsIDEwMzEwNiwgMTAzMTEwLCAKKyAgICAxMDMxMTQsIDEwMzExOCwgMTAzMTIyLCAxMDMxMjYsIDEwMzEzMCwgMTAzMTM0LCAxMDMxMzgsIDEwMzE0MiwgMTAzMTQ2LCAKKyAgICAxMDMxNTAsIDEwMzE1NCwgMTAzMTU4LCAxMDMxNjIsIDEwMzE2NiwgMTAzMTcwLCAxMDMxNzQsIDEwMzE3OCwgMTAzMTgyLCAKKyAgICAxMDMxODYsIDEwMzE5MCwgMTAzMTk0LCAxMDMxOTgsIDEwMzIwMiwgMTAzMjA2LCAxMDMyMTAsIDEwMzIxNCwgMTAzMjE4LCAKKyAgICAxMDMyMjIsIDEwMzIyNiwgMTAzMjMwLCAxMDMyMzQsIDEwMzIzOCwgMTAzMjQyLCAxMDMyNDYsIDEwMzI1MCwgMTAzMjU0LCAKKyAgICAxMDMyNTgsIDEwMzI2MiwgMTAzMjY2LCAxMDMyNzAsIDEwMzI3NCwgMTAzMjc4LCAxMDMyODIsIDEwMzI4NiwgMTAzMjkwLCAKKyAgICAxMDMyOTQsIDEwMzI5OCwgMTAzMzAyLCAxMDMzMDYsIDEwMzMxMCwgMTAzMzE0LCAxMDMzMTgsIDEwMzMyMiwgMTAzMzI2LCAKKyAgICAxMDMzMzAsIDEwMzMzNCwgMTAzMzM4LCAxMDMzNDIsIDEwMzM0NiwgMTAzMzUwLCAxMDMzNTQsIDEwMzM1OCwgMTAzMzYyLCAKKyAgICAxMDMzNjYsIDEwMzM3MCwgMTAzMzc0LCAxMDMzNzgsIDEwMzM4MiwgMTAzMzg2LCAxMDMzOTAsIDEwMzM5NCwgMTAzMzk4LCAKKyAgICAxMDM0MDIsIDEwMzQwNiwgMTAzNDEwLCAxMDM0MTQsIDEwMzQxOCwgMTAzNDIyLCAxMDM0MjYsIDEwMzQzMCwgMTAzNDM0LCAKKyAgICAxMDM0MzgsIDEwMzQ0MiwgMTAzNDQ2LCAxMDM0NTAsIDEwMzQ1NCwgMTAzNDU4LCAxMDM0NjIsIDEwMzQ2NiwgMTAzNDcwLCAKKyAgICAxMDM0NzQsIDEwMzQ3OCwgMTAzNDgyLCAxMDM0ODYsIDEwMzQ5MCwgMTAzNDk0LCAxMDM0OTgsIDEwMzUwMiwgMTAzNTA2LCAKKyAgICAxMDM1MTAsIDEwMzUxNCwgMTAzNTE4LCAxMDM1MjIsIDEwMzUyNiwgMTAzNTMwLCAxMDM1MzQsIDEwMzUzOCwgMTAzNTQyLCAKKyAgICAxMDM1NDYsIDEwMzU1MCwgMTAzNTU0LCAxMDM1NTgsIDEwMzU2MiwgMTAzNTY2LCAxMDM1NzAsIDEwMzU3NCwgMTAzNTc4LCAKKyAgICAxMDM1ODIsIDEwMzU4NiwgMTAzNTkwLCAxMDM1OTQsIDEwMzU5OCwgMTAzNjAyLCAxMDM2MDYsIDEwMzYxMCwgMTAzNjE0LCAKKyAgICAxMDM2MTgsIDEwMzYyMiwgMTAzNjI2LCAxMDM2MzAsIDEwMzYzNCwgMTAzNjM4LCAxMDM2NDIsIDEwMzY0NiwgMTAzNjUwLCAKKyAgICAxMDM2NTQsIDEwMzY1OCwgMTAzNjYyLCAxMDM2NjYsIDEwMzY3MCwgMTAzNjc0LCAxMDM2NzgsIDEwMzY4MiwgMTAzNjg2LCAKKyAgICAxMDM2OTAsIDEwMzY5NCwgMTAzNjk4LCAxMDM3MDIsIDEwMzcwNiwgMTAzNzEwLCAxMDM3MTQsIDEwMzcxOCwgMTAzNzIyLCAKKyAgICAxMDM3MjYsIDEwMzczMCwgMTAzNzM0LCAxMDM3MzgsIDEwMzc0MiwgMTAzNzQ2LCAxMDM3NTAsIDEwMzc1NCwgMTAzNzU4LCAKKyAgICAxMDM3NjIsIDEwMzc2NiwgMTAzNzcwLCAxMDM3NzQsIDEwMzc3OCwgMTAzNzgyLCAxMDM3ODYsIDEwMzc5MCwgMTAzNzk0LCAKKyAgICAxMDM3OTgsIDEwMzgwMiwgMTAzODA2LCAxMDM4MTAsIDEwMzgxNCwgMTAzODE4LCAxMDM4MjIsIDEwMzgyNiwgMTAzODMwLCAKKyAgICAxMDM4MzQsIDEwMzgzOCwgMTAzODQyLCAxMDM4NDYsIDEwMzg1MCwgMTAzODU0LCAxMDM4NTgsIDEwMzg2MiwgMTAzODY2LCAKKyAgICAxMDM4NzAsIDEwMzg3NCwgMTAzODc4LCAxMDM4ODIsIDEwMzg4NiwgMTAzODkwLCAxMDM4OTQsIDEwMzg5OCwgMTAzOTAyLCAKKyAgICAxMDM5MDYsIDEwMzkxMCwgMTAzOTE0LCAxMDM5MTgsIDEwMzkyMiwgMTAzOTI2LCAxMDM5MzAsIDEwMzkzNCwgMTAzOTM4LCAKKyAgICAxMDM5NDIsIDEwMzk0NiwgMTAzOTUwLCAxMDM5NTQsIDEwMzk1OCwgMTAzOTYyLCAxMDM5NjYsIDEwMzk3MCwgMTAzOTc0LCAKKyAgICAxMDM5NzgsIDEwMzk4MiwgMTAzOTg2LCAxMDM5OTAsIDEwMzk5NCwgMTAzOTk4LCAxMDQwMDIsIDEwNDAwNiwgMTA0MDEwLCAKKyAgICAxMDQwMTQsIDEwNDAxOCwgMTA0MDIyLCAxMDQwMjYsIDEwNDAzMCwgMTA0MDM0LCAxMDQwMzgsIDEwNDA0MiwgMTA0MDQ2LCAKKyAgICAxMDQwNTAsIDEwNDA1NCwgMTA0MDU4LCAxMDQwNjIsIDEwNDA2NiwgMTA0MDcwLCAxMDQwNzQsIDEwNDA3OCwgMTA0MDgyLCAKKyAgICAxMDQwODYsIDEwNDA5MCwgMTA0MDk0LCAxMDQwOTgsIDEwNDEwMiwgMTA0MTA2LCAxMDQxMTAsIDEwNDExNCwgMTA0MTE4LCAKKyAgICAxMDQxMjIsIDEwNDEyNiwgMTA0MTMwLCAxMDQxMzQsIDEwNDEzOCwgMTA0MTQyLCAxMDQxNDYsIDEwNDE1MCwgMTA0MTU0LCAKKyAgICAxMDQxNTgsIDEwNDE2MiwgMTA0MTY2LCAxMDQxNzAsIDEwNDE3NCwgMTA0MTc4LCAxMDQxODIsIDEwNDE4NiwgMTA0MTkwLCAKKyAgICAxMDQxOTQsIDEwNDE5OCwgMTA0MjAyLCAxMDQyMDYsIDEwNDIxMCwgMTA0MjE0LCAxMDQyMTgsIDEwNDIyMiwgMTA0MjI2LCAKKyAgICAxMDQyMzAsIDEwNDIzNCwgMTA0MjM4LCAxMDQyNDIsIDEwNDI0NiwgMTA0MjUwLCAxMDQyNTQsIDEwNDI1OCwgMTA0MjYyLCAKKyAgICAxMDQyNjYsIDEwNDI3MCwgMTA0Mjc0LCAxMDQyNzgsIDEwNDI4MiwgMTA0Mjg2LCAxMDQyOTAsIDEwNDI5NCwgMTA0Mjk4LCAKKyAgICAxMDQzMDIsIDEwNDMwNiwgMTA0MzEwLCAxMDQzMTQsIDEwNDMxOCwgMTA0MzIyLCAxMDQzMjYsIDEwNDMzMCwgMTA0MzM0LCAKKyAgICAxMDQzMzgsIDEwNDM0MiwgMTA0MzQ2LCAxMDQzNTAsIDEwNDM1NCwgMTA0MzU4LCAxMDQzNjIsIDEwNDM2NiwgMTA0MzcwLCAKKyAgICAxMDQzNzQsIDEwNDM3OCwgMTA0MzgyLCAxMDQzODYsIDEwNDM5MCwgMTA0Mzk0LCAxMDQzOTgsIDEwNDQwMiwgMTA0NDA2LCAKKyAgICAxMDQ0MTAsIDEwNDQxNCwgMTA0NDE4LCAxMDQ0MjIsIDEwNDQyNiwgMTA0NDMwLCAxMDQ0MzQsIDEwNDQzOCwgMTA0NDQyLCAKKyAgICAxMDQ0NDYsIDEwNDQ1MCwgMTA0NDU0LCAxMDQ0NTgsIDEwNDQ2MiwgMTA0NDY2LCAxMDQ0NzAsIDEwNDQ3NCwgMTA0NDc4LCAKKyAgICAxMDQ0ODIsIDEwNDQ4NiwgMTA0NDkwLCAxMDQ0OTQsIDEwNDQ5OCwgMTA0NTAyLCAxMDQ1MDYsIDEwNDUxMCwgMTA0NTE0LCAKKyAgICAxMDQ1MTgsIDEwNDUyMiwgMTA0NTI2LCAxMDQ1MzAsIDEwNDUzNCwgMTA0NTM4LCAxMDQ1NDIsIDEwNDU0NiwgMTA0NTUwLCAKKyAgICAxMDQ1NTQsIDEwNDU1OCwgMTA0NTYyLCAxMDQ1NjYsIDEwNDU3MCwgMTA0NTc0LCAxMDQ1NzgsIDEwNDU4MiwgMTA0NTg2LCAKKyAgICAxMDQ1OTAsIDEwNDU5NCwgMTA0NTk4LCAxMDQ2MDIsIDEwNDYwNiwgMTA0NjEwLCAxMDQ2MTQsIDEwNDYxOCwgMTA0NjIyLCAKKyAgICAxMDQ2MjYsIDEwNDYzMCwgMTA0NjM0LCAxMDQ2MzgsIDEwNDY0MiwgMTA0NjQ2LCAxMDQ2NTAsIDEwNDY1NCwgMTA0NjU4LCAKKyAgICAxMDQ2NjIsIDEwNDY2NiwgMTA0NjcwLCAxMDQ2NzQsIDEwNDY3OCwgMTA0NjgyLCAxMDQ2ODYsIDEwNDY5MCwgMTA0Njk0LCAKKyAgICAxMDQ2OTgsIDEwNDcwMiwgMTA0NzA2LCAxMDQ3MTAsIDEwNDcxNCwgMTA0NzE4LCAxMDQ3MjIsIDEwNDcyNiwgMTA0NzMwLCAKKyAgICAxMDQ3MzQsIDEwNDczOCwgMTA0NzQyLCAxMDQ3NDYsIDEwNDc1MCwgMTA0NzU0LCAxMDQ3NTgsIDEwNDc2MiwgMTA0NzY2LCAKKyAgICAxMDQ3NzAsIDEwNDc3NCwgMTA0Nzc4LCAxMDQ3ODIsIDEwNDc4NiwgMTA0NzkwLCAxMDQ3OTQsIDEwNDc5OCwgMTA0ODAyLCAKKyAgICAxMDQ4MDYsIDEwNDgxMCwgMTA0ODE0LCAxMDQ4MTgsIDEwNDgyMiwgMTA0ODI2LCAxMDQ4MzAsIDEwNDgzNCwgMTA0ODM4LCAKKyAgICAxMDQ4NDIsIDEwNDg0NiwgMTA0ODUwLCAxMDQ4NTQsIDEwNDg1OCwgMTA0ODYyLCAxMDQ4NjYsIDEwNDg3MCwgMTA0ODc0LCAKKyAgICAxMDQ4NzgsIDEwNDg4MiwgMTA0ODg2LCAxMDQ4OTAsIDEwNDg5NCwgMTA0ODk4LCAxMDQ5MDIsIDEwNDkwNiwgMTA0OTEwLCAKKyAgICAxMDQ5MTQsIDEwNDkxOCwgMTA0OTIyLCAxMDQ5MjYsIDEwNDkzMCwgMTA0OTM0LCAxMDQ5MzgsIDEwNDk0MiwgMTA0OTQ2LCAKKyAgICAxMDQ5NTAsIDEwNDk1NCwgMTA0OTU4LCAxMDQ5NjIsIDEwNDk2NiwgMTA0OTcwLCAxMDQ5NzQsIDEwNDk3OCwgMTA0OTgyLCAKKyAgICAxMDQ5ODYsIDEwNDk5MCwgMTA0OTk0LCAxMDQ5OTgsIDEwNTAwMiwgMTA1MDA2LCAxMDUwMTAsIDEwNTAxNCwgMTA1MDE4LCAKKyAgICAxMDUwMjIsIDEwNTAyNiwgMTA1MDMwLCAxMDUwMzQsIDEwNTAzOCwgMTA1MDQyLCAxMDUwNDYsIDEwNTA1MCwgMTA1MDU0LCAKKyAgICAxMDUwNTgsIDEwNTA2MiwgMTA1MDY2LCAxMDUwNzAsIDEwNTA3NCwgMTA1MDc4LCAxMDUwODIsIDEwNTA4NiwgMTA1MDkwLCAKKyAgICAxMDUwOTQsIDEwNTA5OCwgMTA1MTAyLCAxMDUxMDYsIDEwNTExMCwgMTA1MTE0LCAxMDUxMTgsIDEwNTEyMiwgMTA1MTI2LCAKKyAgICAxMDUxMzAsIDEwNTEzNCwgMTA1MTM4LCAxMDUxNDIsIDEwNTE0NiwgMTA1MTUwLCAxMDUxNTQsIDEwNTE1OCwgMTA1MTYyLCAKKyAgICAxMDUxNjYsIDEwNTE3MCwgMTA1MTc0LCAxMDUxNzgsIDEwNTE4MiwgMTA1MTg2LCAxMDUxOTAsIDEwNTE5NCwgMTA1MTk4LCAKKyAgICAxMDUyMDIsIDEwNTIwNiwgMTA1MjEwLCAxMDUyMTQsIDEwNTIxOCwgMTA1MjIyLCAxMDUyMjYsIDEwNTIzMCwgMTA1MjM0LCAKKyAgICAxMDUyMzgsIDEwNTI0MiwgMTA1MjQ2LCAxMDUyNTAsIDEwNTI1NCwgMTA1MjU4LCAxMDUyNjIsIDEwNTI2NiwgMTA1MjcwLCAKKyAgICAxMDUyNzQsIDEwNTI3OCwgMTA1MjgyLCAxMDUyODYsIDEwNTI5MCwgMTA1Mjk0LCAxMDUyOTgsIDEwNTMwMiwgMTA1MzA2LCAKKyAgICAxMDUzMTAsIDEwNTMxNCwgMTA1MzE4LCAxMDUzMjIsIDEwNTMyNiwgMTA1MzMwLCAxMDUzMzQsIDEwNTMzOCwgMTA1MzQyLCAKKyAgICAxMDUzNDYsIDEwNTM1MCwgMTA1MzU0LCAxMDUzNTgsIDEwNTM2MiwgMTA1MzY2LCAxMDUzNzAsIDEwNTM3NCwgMTA1Mzc4LCAKKyAgICAxMDUzODIsIDEwNTM4NiwgMTA1MzkwLCAxMDUzOTQsIDEwNTM5OCwgMTA1NDAyLCAxMDU0MDYsIDEwNTQxMCwgMTA1NDE0LCAKKyAgICAxMDU0MTgsIDEwNTQyMiwgMTA1NDI2LCAxMDU0MzAsIDEwNTQzNCwgMTA1NDM4LCAxMDU0NDIsIDEwNTQ0NiwgMTA1NDUwLCAKKyAgICAxMDU0NTQsIDEwNTQ1OCwgMTA1NDYyLCAxMDU0NjYsIDEwNTQ3MCwgMTA1NDc0LCAxMDU0NzgsIDEwNTQ4MiwgMTA1NDg2LCAKKyAgICAxMDU0OTAsIDEwNTQ5NCwgMTA1NDk4LCAxMDU1MDIsIDEwNTUwNiwgMTA1NTEwLCAxMDU1MTQsIDEwNTUxOCwgMTA1NTIyLCAKKyAgICAxMDU1MjYsIDEwNTUzMCwgMTA1NTM0LCAxMDU1MzgsIDEwNTU0MiwgMTA1NTQ2LCAxMDU1NTAsIDEwNTU1NCwgMTA1NTU4LCAKKyAgICAxMDU1NjIsIDEwNTU2NiwgMTA1NTcwLCAxMDU1NzQsIDEwNTU3OCwgMTA1NTgyLCAxMDU1ODYsIDEwNTU5MCwgMTA1NTk0LCAKKyAgICAxMDU1OTgsIDEwNTYwMiwgMTA1NjA2LCAxMDU2MTAsIDEwNTYxNCwgMTA1NjE4LCAxMDU2MjIsIDEwNTYyNiwgMTA1NjMwLCAKKyAgICAxMDU2MzQsIDEwNTYzOCwgMTA1NjQyLCAxMDU2NDYsIDEwNTY1MCwgMTA1NjU0LCAxMDU2NTgsIDEwNTY2MiwgMTA1NjY2LCAKKyAgICAxMDU2NzAsIDEwNTY3NCwgMTA1Njc4LCAxMDU2ODIsIDEwNTY4NiwgMTA1NjkwLCAxMDU2OTQsIDEwNTY5OCwgMTA1NzAyLCAKKyAgICAxMDU3MDYsIDEwNTcxMCwgMTA1NzE0LCAxMDU3MTgsIDEwNTcyMiwgMTA1NzI2LCAxMDU3MzAsIDEwNTczNCwgMTA1NzM4LCAKKyAgICAxMDU3NDIsIDEwNTc0NiwgMTA1NzUwLCAxMDU3NTQsIDEwNTc1OCwgMTA1NzYyLCAxMDU3NjYsIDEwNTc3MCwgMTA1Nzc0LCAKKyAgICAxMDU3NzgsIDEwNTc4MiwgMTA1Nzg2LCAxMDU3OTAsIDEwNTc5NCwgMTA1Nzk4LCAxMDU4MDIsIDEwNTgwNiwgMTA1ODEwLCAKKyAgICAxMDU4MTQsIDEwNTgxOCwgMTA1ODIyLCAxMDU4MjYsIDEwNTgzMCwgMTA1ODM0LCAxMDU4MzgsIDEwNTg0MiwgMTA1ODQ2LCAKKyAgICAxMDU4NTAsIDEwNTg1NCwgMTA1ODU4LCAxMDU4NjIsIDEwNTg2NiwgMTA1ODcwLCAxMDU4NzQsIDEwNTg3OCwgMTA1ODgyLCAKKyAgICAxMDU4ODYsIDEwNTg5MCwgMTA1ODk0LCAxMDU4OTgsIDEwNTkwMiwgMTA1OTA2LCAxMDU5MTAsIDEwNTkxNCwgMTA1OTE4LCAKKyAgICAxMDU5MjIsIDEwNTkyNiwgMTA1OTMwLCAxMDU5MzQsIDEwNTkzOCwgMTA1OTQyLCAxMDU5NDYsIDEwNTk1MCwgMTA1OTU0LCAKKyAgICAxMDU5NTgsIDEwNTk2MiwgMTA1OTY2LCAxMDU5NzAsIDEwNTk3NCwgMTA1OTc4LCAxMDU5ODIsIDEwNTk4NiwgMTA1OTkwLCAKKyAgICAxMDU5OTQsIDEwNTk5OCwgMTA2MDAyLCAxMDYwMDYsIDEwNjAxMCwgMTA2MDE0LCAxMDYwMTgsIDEwNjAyMiwgMTA2MDI2LCAKKyAgICAxMDYwMzAsIDEwNjAzNCwgMTA2MDM4LCAxMDYwNDIsIDEwNjA0NiwgMTA2MDUwLCAxMDYwNTQsIDEwNjA1OCwgMTA2MDYyLCAKKyAgICAxMDYwNjYsIDEwNjA3MCwgMTA2MDc0LCAxMDYwNzgsIDEwNjA4MiwgMTA2MDg2LCAxMDYwOTAsIDEwNjA5NCwgMTA2MDk4LCAKKyAgICAxMDYxMDIsIDEwNjEwNiwgMTA2MTEwLCAxMDYxMTQsIDEwNjExOCwgMTA2MTIyLCAxMDYxMjYsIDEwNjEzMCwgMTA2MTM0LCAKKyAgICAxMDYxMzgsIDEwNjE0MiwgMTA2MTQ2LCAxMDYxNTAsIDEwNjE1NCwgMTA2MTU4LCAxMDYxNjIsIDEwNjE2NiwgMTA2MTcwLCAKKyAgICAxMDYxNzQsIDEwNjE3OCwgMTA2MTgyLCAxMDYxODYsIDEwNjE5MCwgMTA2MTk0LCAxMDYxOTgsIDEwNjIwMiwgMTA2MjA2LCAKKyAgICAxMDYyMTAsIDEwNjIxNCwgMTA2MjE4LCAxMDYyMjIsIDEwNjIyNiwgMTA2MjMwLCAxMDYyMzQsIDEwNjIzOCwgMTA2MjQyLCAKKyAgICAxMDYyNDYsIDEwNjI1MCwgMTA2MjU0LCAxMDYyNTgsIDEwNjI2MiwgMTA2MjY2LCAxMDYyNzAsIDEwNjI3NCwgMTA2Mjc4LCAKKyAgICAxMDYyODIsIDEwNjI4NiwgMTA2MjkwLCAxMDYyOTQsIDEwNjI5OCwgMTA2MzAyLCAxMDYzMDYsIDEwNjMxMCwgMTA2MzE0LCAKKyAgICAxMDYzMTgsIDEwNjMyMiwgMTA2MzI2LCAxMDYzMzAsIDEwNjMzNCwgMTA2MzM4LCAxMDYzNDIsIDEwNjM0NiwgMTA2MzUwLCAKKyAgICAxMDYzNTQsIDEwNjM1OCwgMTA2MzYyLCAxMDYzNjYsIDEwNjM3MCwgMTA2Mzc0LCAxMDYzNzgsIDEwNjM4MiwgMTA2Mzg2LCAKKyAgICAxMDYzOTAsIDEwNjM5NCwgMTA2Mzk4LCAxMDY0MDIsIDEwNjQwNiwgMTA2NDEwLCAxMDY0MTQsIDEwNjQxOCwgMTA2NDIyLCAKKyAgICAxMDY0MjYsIDEwNjQzMCwgMTA2NDM0LCAxMDY0MzgsIDEwNjQ0MiwgMTA2NDQ2LCAxMDY0NTAsIDEwNjQ1NCwgMTA2NDU4LCAKKyAgICAxMDY0NjIsIDEwNjQ2NiwgMTA2NDcwLCAxMDY0NzQsIDEwNjQ3OCwgMTA2NDgyLCAxMDY0ODYsIDEwNjQ5MCwgMTA2NDk0LCAKKyAgICAxMDY0OTgsIDEwNjUwMiwgMTA2NTA2LCAxMDY1MTAsIDEwNjUxNCwgMTA2NTE4LCAxMDY1MjIsIDEwNjUyNiwgMTA2NTMwLCAKKyAgICAxMDY1MzQsIDEwNjUzOCwgMTA2NTQyLCAxMDY1NDYsIDEwNjU1MCwgMTA2NTU0LCAxMDY1NTgsIDEwNjU2MiwgMTA2NTY2LCAKKyAgICAxMDY1NzAsIDEwNjU3NCwgMTA2NTc4LCAxMDY1ODIsIDEwNjU4NiwgMTA2NTkwLCAxMDY1OTQsIDEwNjU5OCwgMTA2NjAyLCAKKyAgICAxMDY2MDYsIDEwNjYxMCwgMTA2NjE0LCAxMDY2MTgsIDEwNjYyMiwgMTA2NjI2LCAxMDY2MzAsIDEwNjYzNCwgMTA2NjM4LCAKKyAgICAxMDY2NDIsIDEwNjY0NiwgMTA2NjUwLCAxMDY2NTQsIDEwNjY1OCwgMTA2NjYyLCAxMDY2NjYsIDEwNjY3MCwgMTA2Njc0LCAKKyAgICAxMDY2NzgsIDEwNjY4MiwgMTA2Njg2LCAxMDY2OTAsIDEwNjY5NCwgMTA2Njk4LCAxMDY3MDIsIDEwNjcwNiwgMTA2NzEwLCAKKyAgICAxMDY3MTQsIDEwNjcxOCwgMTA2NzIyLCAxMDY3MjYsIDEwNjczMCwgMTA2NzM0LCAxMDY3MzgsIDEwNjc0MiwgMTA2NzQ2LCAKKyAgICAxMDY3NTAsIDEwNjc1NCwgMTA2NzU4LCAxMDY3NjIsIDEwNjc2NiwgMTA2NzcwLCAxMDY3NzQsIDEwNjc3OCwgMTA2NzgyLCAKKyAgICAxMDY3ODYsIDEwNjc5MCwgMTA2Nzk0LCAxMDY3OTgsIDEwNjgwMiwgMTA2ODA2LCAxMDY4MTAsIDEwNjgxNCwgMTA2ODE4LCAKKyAgICAxMDY4MjIsIDEwNjgyNiwgMTA2ODMwLCAxMDY4MzQsIDEwNjgzOCwgMTA2ODQyLCAxMDY4NDYsIDEwNjg1MCwgMTA2ODU0LCAKKyAgICAxMDY4NTgsIDEwNjg2MiwgMTA2ODY2LCAxMDY4NzAsIDEwNjg3NCwgMTA2ODc4LCAxMDY4ODIsIDEwNjg4NiwgMTA2ODkwLCAKKyAgICAxMDY4OTQsIDEwNjg5OCwgMTA2OTAyLCAxMDY5MDYsIDEwNjkxMCwgMTA2OTE0LCAxMDY5MTgsIDEwNjkyMiwgMTA2OTI2LCAKKyAgICAxMDY5MzAsIDEwNjkzNCwgMTA2OTM4LCAxMDY5NDIsIDEwNjk0NiwgMTA2OTUwLCAxMDY5NTQsIDEwNjk1OCwgMTA2OTYyLCAKKyAgICAxMDY5NjYsIDEwNjk3MCwgMTA2OTc0LCAxMDY5NzgsIDEwNjk4MiwgMTA2OTg2LCAxMDY5OTAsIDEwNjk5NCwgMTA2OTk4LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMDQ0MDgsIDEwNDQxNSwgMTA0NDIyLCAxMDQ0MzEsIDEwNDQ0MCwgMTA0NDQ3LCAxMDQ0NTIsIDEwNDQ1OSwgCi0gICAgMTA0NDY2LCAxMDQ0NzUsIDEwNDQ4NiwgMTA0NDk3LCAxMDQ1MDIsIDEwNDUwOSwgMTA0NTE0LCAxMDQ1MTksIDEwNDUyNCwgCi0gICAgMTA0NTI5LCAxMDQ1MzQsIDEwNDUzOSwgMTA0NTQ0LCAxMDQ1NDksIDEwNDU1NCwgMTA0NTU5LCAxMDQ1NjQsIDEwNDU3MSwgCi0gICAgMTA0NTc4LCAxMDQ1ODMsIDEwNDU4OCwgMTA0NTkzLCAxMDQ1OTgsIDEwNDYwNSwgMTA0NjEyLCAxMDQ2MjAsIDEwNDYyNSwgCi0gICAgMTA0NjMyLCAxMDQ2MzcsIDEwNDY0MiwgMTA0NjQ3LCAxMDQ2NTIsIDEwNDY1NywgMTA0NjY0LCAxMDQ2NzEsIDEwNDY3NiwgCi0gICAgMTA0NjgxLCAxMDQ2ODYsIDEwNDY5MSwgMTA0Njk2LCAxMDQ3MDEsIDEwNDcwNiwgMTA0NzExLCAxMDQ3MTYsIDEwNDcyMSwgCi0gICAgMTA0NzI2LCAxMDQ3MzEsIDEwNDczNiwgMTA0NzQxLCAxMDQ3NDYsIDEwNDc1MSwgMTA0NzU2LCAxMDQ3NjEsIDEwNDc2NiwgCi0gICAgMTA0NzczLCAxMDQ3NzgsIDEwNDc4MywgMTA0NzkyLCAxMDQ3OTksIDEwNDgwNCwgMTA0ODA5LCAxMDQ4MTQsIDEwNDgxOSwgCi0gICAgMTA0ODI0LCAxMDQ4MjksIDEwNDgzNCwgMTA0ODM5LCAxMDQ4NDQsIDEwNDg0OSwgMTA0ODU0LCAxMDQ4NTksIDEwNDg2NCwgCi0gICAgMTA0ODY5LCAxMDQ4NzQsIDEwNDg3OSwgMTA0ODg0LCAxMDQ4ODksIDEwNDg5NCwgMTA0ODk5LCAxMDQ5MDQsIDEwNDkxMCwgCi0gICAgMTA0OTE4LCAxMDQ5MjQsIDEwNDkzMiwgMTA0OTQwLCAxMDQ5NDgsIDEwNDk1NCwgMTA0OTYwLCAxMDQ5NjYsIDEwNDk3MiwgCi0gICAgMTA0OTc4LCAxMDQ5ODYsIDEwNDk5NiwgMTA1MDA0LCAxMDUwMTIsIDEwNTAxOCwgMTA1MDI0LCAxMDUwMzIsIDEwNTA0MCwgCi0gICAgMTA1MDQ2LCAxMDUwNTQsIDEwNTA2MiwgMTA1MDcwLCAxMDUwNzYsIDEwNTA4MiwgMTA1MDg4LCAxMDUwOTQsIDEwNTEwMCwgCi0gICAgMTA1MTA2LCAxMDUxMTQsIDEwNTEyMiwgMTA1MTI4LCAxMDUxMzQsIDEwNTE0MCwgMTA1MTQ2LCAxMDUxNTIsIDEwNTE2MCwgCi0gICAgMTA1MTY2LCAxMDUxNzIsIDEwNTE3OCwgMTA1MTg0LCAxMDUxOTAsIDEwNTE5NiwgMTA1MjA0LCAxMDUyMTAsIDEwNTIxNiwgCi0gICAgMTA1MjIyLCAxMDUyMjgsIDEwNTIzNiwgMTA1MjQ0LCAxMDUyNTAsIDEwNTI1NiwgMTA1MjYyLCAxMDUyNjcsIDEwNTI3MywgCi0gICAgMTA1Mjc5LCAxMDUyODYsIDEwNTI5MSwgMTA1Mjk2LCAxMDUzMDEsIDEwNTMwNiwgMTA1MzExLCAxMDUzMTYsIDEwNTMyMSwgCi0gICAgMTA1MzI2LCAxMDUzMzEsIDEwNTM0MCwgMTA1MzQ3LCAxMDUzNTIsIDEwNTM1NywgMTA1MzYyLCAxMDUzNjksIDEwNTM3NCwgCi0gICAgMTA1Mzc5LCAxMDUzODQsIDEwNTM5MSwgMTA1Mzk2LCAxMDU0MDEsIDEwNTQwNiwgMTA1NDExLCAxMDU0MTYsIDEwNTQyMSwgCi0gICAgMTA1NDI2LCAxMDU0MzEsIDEwNTQzNiwgMTA1NDQxLCAxMDU0NDYsIDEwNTQ1MywgMTA1NDU4LCAxMDU0NjUsIDEwNTQ3MCwgCi0gICAgMTA1NDc1LCAxMDU0ODIsIDEwNTQ4NywgMTA1NDkyLCAxMDU0OTcsIDEwNTUwMiwgMTA1NTA3LCAxMDU1MTIsIDEwNTUxNywgCi0gICAgMTA1NTIyLCAxMDU1MjcsIDEwNTUzMiwgMTA1NTM3LCAxMDU1NDIsIDEwNTU0NywgMTA1NTUyLCAxMDU1NTcsIDEwNTU2MiwgCi0gICAgMTA1NTY3LCAxMDU1NzIsIDEwNTU3NywgMTA1NTg0LCAxMDU1ODksIDEwNTU5NCwgMTA1NTk5LCAxMDU2MDQsIDEwNTYwOSwgCi0gICAgMTA1NjE0LCAxMDU2MTksIDEwNTYyNCwgMTA1NjI5LCAxMDU2MzQsIDEwNTYzOSwgMTA1NjQ0LCAxMDU2NDksIDEwNTY1NiwgCi0gICAgMTA1NjYxLCAxMDU2NjYsIDEwNTY3MywgMTA1Njc4LCAxMDU2ODMsIDEwNTY4OCwgMTA1NjkzLCAxMDU2OTgsIDEwNTcwMywgCi0gICAgMTA1NzA4LCAxMDU3MTMsIDEwNTcxOCwgMTA1NzIzLCAxMDU3MzAsIDEwNTczNSwgMTA1NzQwLCAxMDU3NDUsIDEwNTc1MCwgCi0gICAgMTA1NzU1LCAxMDU3NjIsIDEwNTc2OSwgMTA1Nzc0LCAxMDU3NzksIDEwNTc4NCwgMTA1Nzg5LCAxMDU3OTQsIDEwNTc5OSwgCi0gICAgMTA1ODA0LCAxMDU4MDksIDEwNTgxNCwgMTA1ODE5LCAxMDU4MjQsIDEwNTgyOSwgMTA1ODM0LCAxMDU4MzksIDEwNTg0NCwgCi0gICAgMTA1ODQ5LCAxMDU4NTQsIDEwNTg1OSwgMTA1ODY0LCAxMDU4NjksIDEwNTg3NCwgMTA1ODc5LCAxMDU4ODQsIDEwNTg4OSwgCi0gICAgMTA1ODk0LCAxMDU4OTksIDEwNTkwNCwgMTA1OTA5LCAxMDU5MTQsIDEwNTkxOSwgMTA1OTI0LCAxMDU5MjksIDEwNTkzNCwgCi0gICAgMTA1OTM5LCAxMDU5NDQsIDEwNTk0OSwgMTA1OTU2LCAxMDU5NjEsIDEwNTk2NiwgMTA1OTcxLCAxMDU5NzYsIDEwNTk4MSwgCi0gICAgMTA1OTg2LCAxMDU5OTEsIDEwNTk5NiwgMTA2MDAxLCAxMDYwMDYsIDEwNjAxMSwgMTA2MDE2LCAxMDYwMjEsIDEwNjAyNiwgCi0gICAgMTA2MDMxLCAxMDYwMzYsIDEwNjA0MSwgMTA2MDQ2LCAxMDYwNTEsIDEwNjA1NiwgMTA2MDYxLCAxMDYwNjYsIDEwNjA3MSwgCi0gICAgMTA2MDc2LCAxMDYwODEsIDEwNjA4NiwgMTA2MDkxLCAxMDYwOTYsIDEwNjEwMSwgMTA2MTA2LCAxMDYxMTEsIDEwNjExNiwgCi0gICAgMTA2MTIxLCAxMDYxMjYsIDEwNjEzMSwgMTA2MTM2LCAxMDYxNDEsIDEwNjE0NiwgMTA2MTUxLCAxMDYxNTYsIDEwNjE2MSwgCi0gICAgMTA2MTY2LCAxMDYxNzEsIDEwNjE3NiwgMTA2MTgxLCAxMDYxODYsIDEwNjE5MSwgMTA2MTk2LCAxMDYyMDEsIDEwNjIwNiwgCi0gICAgMTA2MjExLCAxMDYyMTYsIDEwNjIyMSwgMTA2MjI2LCAxMDYyMzEsIDEwNjIzNiwgMTA2MjQxLCAxMDYyNDYsIDEwNjI1MywgCi0gICAgMTA2MjU4LCAxMDYyNjMsIDEwNjI2OCwgMTA2MjczLCAxMDYyNzgsIDEwNjI4MywgMTA2Mjg3LCAxMDYyOTIsIDEwNjI5NywgCi0gICAgMTA2MzAyLCAxMDYzMDcsIDEwNjMxMiwgMTA2MzE3LCAxMDYzMjIsIDEwNjMyNywgMTA2MzMyLCAxMDYzMzcsIDEwNjM0MiwgCi0gICAgMTA2MzQ3LCAxMDYzNTIsIDEwNjM1NywgMTA2MzY0LCAxMDYzNjksIDEwNjM3NCwgMTA2MzgwLCAxMDYzODUsIDEwNjM5MCwgCi0gICAgMTA2Mzk1LCAxMDY0MDAsIDEwNjQwNSwgMTA2NDEwLCAxMDY0MTUsIDEwNjQyMCwgMTA2NDI1LCAxMDY0MzAsIDEwNjQzNSwgCi0gICAgMTA2NDQwLCAxMDY0NDUsIDEwNjQ1MCwgMTA2NDU1LCAxMDY0NjAsIDEwNjQ2NSwgMTA2NDcwLCAxMDY0NzUsIDEwNjQ4MCwgCi0gICAgMTA2NDg1LCAxMDY0OTAsIDEwNjQ5NSwgMTA2NTAwLCAxMDY1MDUsIDEwNjUxMCwgMTA2NTE1LCAxMDY1MjAsIDEwNjUyNSwgCi0gICAgMTA2NTMwLCAxMDY1MzUsIDEwNjU0MCwgMTA2NTQ1LCAxMDY1NTAsIDEwNjU1NSwgMTA2NTYwLCAxMDY1NjUsIDEwNjU3MCwgCi0gICAgMTA2NTc1LCAxMDY1ODAsIDEwNjU4NSwgMTA2NTkwLCAxMDY1OTUsIDEwNjYwMiwgMTA2NjA3LCAxMDY2MTIsIDEwNjYxOSwgCi0gICAgMTA2NjI2LCAxMDY2MzEsIDEwNjYzNiwgMTA2NjQxLCAxMDY2NDYsIDEwNjY1MSwgMTA2NjU2LCAxMDY2NjEsIDEwNjY2NiwgCi0gICAgMTA2NjcxLCAxMDY2NzYsIDEwNjY4MSwgMTA2Njg2LCAxMDY2OTEsIDEwNjY5NiwgMTA2NzAxLCAxMDY3MDYsIDEwNjcxMSwgCi0gICAgMTA2NzE2LCAxMDY3MjEsIDEwNjcyNiwgMTA2NzMxLCAxMDY3MzYsIDEwNjc0MSwgMTA2NzQ2LCAxMDY3NTEsIDEwNjc1OCwgCi0gICAgMTA2NzYzLCAxMDY3NjgsIDEwNjc3MywgMTA2Nzc4LCAxMDY3ODMsIDEwNjc4OCwgMTA2NzkzLCAxMDY3OTgsIDEwNjgwMywgCi0gICAgMTA2ODA4LCAxMDY4MTMsIDEwNjgxOCwgMTA2ODIzLCAxMDY4MjgsIDEwNjgzMywgMTA2ODM4LCAxMDY4NDMsIDEwNjg0OCwgCi0gICAgMTA2ODU1LCAxMDY4NjAsIDEwNjg2NSwgMTA2ODcwLCAxMDY4NzUsIDEwNjg4MCwgMTA2ODg1LCAxMDY4OTAsIDEwNjg5NiwgCi0gICAgMTA2OTAxLCAxMDY5MDYsIDEwNjkxMSwgMTA2OTE2LCAxMDY5MjEsIDEwNjkyNiwgMTA2OTMxLCAxMDY5MzYsIDEwNjk0MywgCi0gICAgMTA2OTUwLCAxMDY5NTUsIDEwNjk2MCwgMTA2OTY0LCAxMDY5NjksIDEwNjk3MywgMTA2OTc3LCAxMDY5ODIsIDEwNjk4OSwgCi0gICAgMTA2OTk0LCAxMDY5OTksIDEwNzAwOCwgMTA3MDEzLCAxMDcwMTgsIDEwNzAyMywgMTA3MDI4LCAxMDcwMzUsIDEwNzA0MiwgCi0gICAgMTA3MDQ3LCAxMDcwNTIsIDEwNzA1NywgMTA3MDYyLCAxMDcwNjksIDEwNzA3NCwgMTA3MDc5LCAxMDcwODQsIDEwNzA4OSwgCi0gICAgMTA3MDk0LCAxMDcwOTksIDEwNzEwNCwgMTA3MTA5LCAxMDcxMTQsIDEwNzExOSwgMTA3MTI0LCAxMDcxMjksIDEwNzEzNiwgCi0gICAgMTA3MTQwLCAxMDcxNDUsIDEwNzE1MCwgMTA3MTU1LCAxMDcxNjAsIDEwNzE2NCwgMTA3MTY5LCAxMDcxNzQsIDEwNzE3OSwgCi0gICAgMTA3MTg0LCAxMDcxODksIDEwNzE5NCwgMTA3MTk5LCAxMDcyMDQsIDEwNzIwOSwgMTA3MjE1LCAxMDcyMjEsIDEwNzIyNywgCi0gICAgMTA3MjMzLCAxMDcyMzksIDEwNzI0NSwgMTA3MjUxLCAxMDcyNTcsIDEwNzI2MywgMTA3MjY5LCAxMDcyNzUsIDEwNzI4MSwgCi0gICAgMTA3Mjg2LCAxMDcyOTIsIDEwNzI5OCwgMTA3MzA0LCAxMDczMTAsIDEwNzMxNiwgMTA3MzIyLCAxMDczMjgsIDEwNzMzNCwgCi0gICAgMTA3MzQwLCAxMDczNDYsIDEwNzM1MiwgMTA3MzU3LCAxMDczNjMsIDEwNzM2OSwgMTA3Mzc1LCAxMDczODEsIDEwNzM4NywgCi0gICAgMTA3MzkzLCAxMDczOTksIDEwNzQwNSwgMTA3NDExLCAxMDc0MTcsIDEwNzQyMywgMTA3NDI5LCAxMDc0MzUsIDEwNzQ0MSwgCi0gICAgMTA3NDQ3LCAxMDc0NTMsIDEwNzQ1OSwgMTA3NDY1LCAxMDc0NzEsIDEwNzQ3NywgMTA3NDgyLCAxMDc0ODgsIDEwNzQ5NCwgCi0gICAgMTA3NTAwLCAxMDc1MDYsIDEwNzUxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MDAyLCAxMDcwMDksIDEwNzAxNiwgMTA3MDI1LCAxMDcwMzQsIAorICAgIDEwNzA0MSwgMTA3MDQ2LCAxMDcwNTMsIDEwNzA2MCwgMTA3MDY5LCAxMDcwODAsIDEwNzA5MSwgMTA3MDk2LCAxMDcxMDMsIAorICAgIDEwNzEwOCwgMTA3MTEzLCAxMDcxMTgsIDEwNzEyMywgMTA3MTI4LCAxMDcxMzMsIDEwNzEzOCwgMTA3MTQzLCAxMDcxNDgsIAorICAgIDEwNzE1MywgMTA3MTU4LCAxMDcxNjUsIDEwNzE3MiwgMTA3MTc3LCAxMDcxODIsIDEwNzE4NywgMTA3MTkyLCAxMDcxOTksIAorICAgIDEwNzIwNiwgMTA3MjE0LCAxMDcyMTksIDEwNzIyNiwgMTA3MjMxLCAxMDcyMzYsIDEwNzI0MSwgMTA3MjQ2LCAxMDcyNTEsIAorICAgIDEwNzI1OCwgMTA3MjY1LCAxMDcyNzAsIDEwNzI3NSwgMTA3MjgwLCAxMDcyODUsIDEwNzI5MCwgMTA3Mjk1LCAxMDczMDAsIAorICAgIDEwNzMwNSwgMTA3MzEwLCAxMDczMTUsIDEwNzMyMCwgMTA3MzI1LCAxMDczMzAsIDEwNzMzNSwgMTA3MzQwLCAxMDczNDUsIAorICAgIDEwNzM1MCwgMTA3MzU1LCAxMDczNjAsIDEwNzM2NywgMTA3MzcyLCAxMDczNzcsIDEwNzM4NiwgMTA3MzkzLCAxMDczOTgsIAorICAgIDEwNzQwMywgMTA3NDA4LCAxMDc0MTMsIDEwNzQxOCwgMTA3NDIzLCAxMDc0MjgsIDEwNzQzMywgMTA3NDM4LCAxMDc0NDMsIAorICAgIDEwNzQ0OCwgMTA3NDUzLCAxMDc0NTgsIDEwNzQ2MywgMTA3NDY4LCAxMDc0NzMsIDEwNzQ3OCwgMTA3NDgzLCAxMDc0ODgsIAorICAgIDEwNzQ5MywgMTA3NDk4LCAxMDc1MDQsIDEwNzUxMiwgMTA3NTE4LCAxMDc1MjYsIDEwNzUzNCwgMTA3NTQyLCAxMDc1NDgsIAorICAgIDEwNzU1NCwgMTA3NTYwLCAxMDc1NjYsIDEwNzU3MiwgMTA3NTgwLCAxMDc1OTAsIDEwNzU5OCwgMTA3NjA2LCAxMDc2MTIsIAorICAgIDEwNzYxOCwgMTA3NjI2LCAxMDc2MzQsIDEwNzY0MCwgMTA3NjQ4LCAxMDc2NTYsIDEwNzY2NCwgMTA3NjcwLCAxMDc2NzYsIAorICAgIDEwNzY4MiwgMTA3Njg4LCAxMDc2OTQsIDEwNzcwMCwgMTA3NzA4LCAxMDc3MTYsIDEwNzcyMiwgMTA3NzI4LCAxMDc3MzQsIAorICAgIDEwNzc0MCwgMTA3NzQ2LCAxMDc3NTQsIDEwNzc2MCwgMTA3NzY2LCAxMDc3NzIsIDEwNzc3OCwgMTA3Nzg0LCAxMDc3OTAsIAorICAgIDEwNzc5OCwgMTA3ODA0LCAxMDc4MTAsIDEwNzgxNiwgMTA3ODIyLCAxMDc4MzAsIDEwNzgzOCwgMTA3ODQ0LCAxMDc4NTAsIAorICAgIDEwNzg1NiwgMTA3ODYxLCAxMDc4NjcsIDEwNzg3MywgMTA3ODgwLCAxMDc4ODUsIDEwNzg5MCwgMTA3ODk1LCAxMDc5MDAsIAorICAgIDEwNzkwNSwgMTA3OTEwLCAxMDc5MTUsIDEwNzkyMCwgMTA3OTI1LCAxMDc5MzQsIDEwNzk0MSwgMTA3OTQ2LCAxMDc5NTEsIAorICAgIDEwNzk1NiwgMTA3OTYzLCAxMDc5NjgsIDEwNzk3MywgMTA3OTc4LCAxMDc5ODUsIDEwNzk5MCwgMTA3OTk1LCAxMDgwMDAsIAorICAgIDEwODAwNSwgMTA4MDEwLCAxMDgwMTUsIDEwODAyMCwgMTA4MDI1LCAxMDgwMzAsIDEwODAzNSwgMTA4MDQwLCAxMDgwNDcsIAorICAgIDEwODA1MiwgMTA4MDU5LCAxMDgwNjQsIDEwODA2OSwgMTA4MDc2LCAxMDgwODEsIDEwODA4NiwgMTA4MDkxLCAxMDgwOTYsIAorICAgIDEwODEwMSwgMTA4MTA2LCAxMDgxMTEsIDEwODExNiwgMTA4MTIxLCAxMDgxMjYsIDEwODEzMSwgMTA4MTM2LCAxMDgxNDEsIAorICAgIDEwODE0NiwgMTA4MTUxLCAxMDgxNTYsIDEwODE2MSwgMTA4MTY2LCAxMDgxNzEsIDEwODE3OCwgMTA4MTgzLCAxMDgxODgsIAorICAgIDEwODE5MywgMTA4MTk4LCAxMDgyMDMsIDEwODIwOCwgMTA4MjEzLCAxMDgyMTgsIDEwODIyMywgMTA4MjI4LCAxMDgyMzMsIAorICAgIDEwODIzOCwgMTA4MjQzLCAxMDgyNTAsIDEwODI1NSwgMTA4MjYwLCAxMDgyNjcsIDEwODI3MiwgMTA4Mjc3LCAxMDgyODIsIAorICAgIDEwODI4NywgMTA4MjkyLCAxMDgyOTcsIDEwODMwMiwgMTA4MzA3LCAxMDgzMTIsIDEwODMxNywgMTA4MzI0LCAxMDgzMjksIAorICAgIDEwODMzNCwgMTA4MzM5LCAxMDgzNDQsIDEwODM0OSwgMTA4MzU2LCAxMDgzNjMsIDEwODM2OCwgMTA4MzczLCAxMDgzNzgsIAorICAgIDEwODM4MywgMTA4Mzg4LCAxMDgzOTMsIDEwODM5OCwgMTA4NDAzLCAxMDg0MDgsIDEwODQxMywgMTA4NDE4LCAxMDg0MjMsIAorICAgIDEwODQyOCwgMTA4NDMzLCAxMDg0MzgsIDEwODQ0MywgMTA4NDQ4LCAxMDg0NTMsIDEwODQ1OCwgMTA4NDYzLCAxMDg0NjgsIAorICAgIDEwODQ3MywgMTA4NDc4LCAxMDg0ODMsIDEwODQ4OCwgMTA4NDkzLCAxMDg0OTgsIDEwODUwMywgMTA4NTA4LCAxMDg1MTMsIAorICAgIDEwODUxOCwgMTA4NTIzLCAxMDg1MjgsIDEwODUzMywgMTA4NTM4LCAxMDg1NDMsIDEwODU1MCwgMTA4NTU1LCAxMDg1NjAsIAorICAgIDEwODU2NSwgMTA4NTcwLCAxMDg1NzUsIDEwODU4MCwgMTA4NTg1LCAxMDg1OTAsIDEwODU5NSwgMTA4NjAwLCAxMDg2MDUsIAorICAgIDEwODYxMCwgMTA4NjE1LCAxMDg2MjAsIDEwODYyNSwgMTA4NjMwLCAxMDg2MzUsIDEwODY0MCwgMTA4NjQ1LCAxMDg2NTAsIAorICAgIDEwODY1NSwgMTA4NjYwLCAxMDg2NjUsIDEwODY3MCwgMTA4Njc1LCAxMDg2ODAsIDEwODY4NSwgMTA4NjkwLCAxMDg2OTUsIAorICAgIDEwODcwMCwgMTA4NzA1LCAxMDg3MTAsIDEwODcxNSwgMTA4NzIwLCAxMDg3MjUsIDEwODczMCwgMTA4NzM1LCAxMDg3NDAsIAorICAgIDEwODc0NSwgMTA4NzUwLCAxMDg3NTUsIDEwODc2MCwgMTA4NzY1LCAxMDg3NzAsIDEwODc3NSwgMTA4NzgwLCAxMDg3ODUsIAorICAgIDEwODc5MCwgMTA4Nzk1LCAxMDg4MDAsIDEwODgwNSwgMTA4ODEwLCAxMDg4MTUsIDEwODgyMCwgMTA4ODI1LCAxMDg4MzAsIAorICAgIDEwODgzNSwgMTA4ODQwLCAxMDg4NDcsIDEwODg1MiwgMTA4ODU3LCAxMDg4NjIsIDEwODg2NywgMTA4ODcyLCAxMDg4NzcsIAorICAgIDEwODg4MSwgMTA4ODg2LCAxMDg4OTEsIDEwODg5NiwgMTA4OTAxLCAxMDg5MDYsIDEwODkxMSwgMTA4OTE2LCAxMDg5MjEsIAorICAgIDEwODkyNiwgMTA4OTMxLCAxMDg5MzYsIDEwODk0MSwgMTA4OTQ2LCAxMDg5NTEsIDEwODk1OCwgMTA4OTYzLCAxMDg5NjgsIAorICAgIDEwODk3NCwgMTA4OTc5LCAxMDg5ODQsIDEwODk4OSwgMTA4OTk0LCAxMDg5OTksIDEwOTAwNCwgMTA5MDA5LCAxMDkwMTQsIAorICAgIDEwOTAxOSwgMTA5MDI0LCAxMDkwMjksIDEwOTAzNCwgMTA5MDM5LCAxMDkwNDQsIDEwOTA0OSwgMTA5MDU0LCAxMDkwNTksIAorICAgIDEwOTA2NCwgMTA5MDY5LCAxMDkwNzQsIDEwOTA3OSwgMTA5MDg0LCAxMDkwODksIDEwOTA5NCwgMTA5MDk5LCAxMDkxMDQsIAorICAgIDEwOTEwOSwgMTA5MTE0LCAxMDkxMTksIDEwOTEyNCwgMTA5MTI5LCAxMDkxMzQsIDEwOTEzOSwgMTA5MTQ0LCAxMDkxNDksIAorICAgIDEwOTE1NCwgMTA5MTU5LCAxMDkxNjQsIDEwOTE2OSwgMTA5MTc0LCAxMDkxNzksIDEwOTE4NCwgMTA5MTg5LCAxMDkxOTYsIAorICAgIDEwOTIwMSwgMTA5MjA2LCAxMDkyMTMsIDEwOTIyMCwgMTA5MjI1LCAxMDkyMzAsIDEwOTIzNSwgMTA5MjQwLCAxMDkyNDUsIAorICAgIDEwOTI1MCwgMTA5MjU1LCAxMDkyNjAsIDEwOTI2NSwgMTA5MjcwLCAxMDkyNzUsIDEwOTI4MCwgMTA5Mjg1LCAxMDkyOTAsIAorICAgIDEwOTI5NSwgMTA5MzAwLCAxMDkzMDUsIDEwOTMxMCwgMTA5MzE1LCAxMDkzMjAsIDEwOTMyNSwgMTA5MzMwLCAxMDkzMzUsIAorICAgIDEwOTM0MCwgMTA5MzQ1LCAxMDkzNTIsIDEwOTM1NywgMTA5MzYyLCAxMDkzNjcsIDEwOTM3MiwgMTA5Mzc3LCAxMDkzODIsIAorICAgIDEwOTM4NywgMTA5MzkyLCAxMDkzOTcsIDEwOTQwMiwgMTA5NDA3LCAxMDk0MTIsIDEwOTQxNywgMTA5NDIyLCAxMDk0MjcsIAorICAgIDEwOTQzMiwgMTA5NDM3LCAxMDk0NDIsIDEwOTQ0OSwgMTA5NDU0LCAxMDk0NTksIDEwOTQ2NCwgMTA5NDY5LCAxMDk0NzQsIAorICAgIDEwOTQ3OSwgMTA5NDg0LCAxMDk0OTAsIDEwOTQ5NSwgMTA5NTAwLCAxMDk1MDUsIDEwOTUxMCwgMTA5NTE1LCAxMDk1MjAsIAorICAgIDEwOTUyNSwgMTA5NTMwLCAxMDk1MzcsIDEwOTU0NCwgMTA5NTQ5LCAxMDk1NTQsIDEwOTU1OCwgMTA5NTYzLCAxMDk1NjcsIAorICAgIDEwOTU3MSwgMTA5NTc2LCAxMDk1ODMsIDEwOTU4OCwgMTA5NTkzLCAxMDk2MDIsIDEwOTYwNywgMTA5NjEyLCAxMDk2MTcsIAorICAgIDEwOTYyMiwgMTA5NjI5LCAxMDk2MzYsIDEwOTY0MSwgMTA5NjQ2LCAxMDk2NTEsIDEwOTY1NiwgMTA5NjYzLCAxMDk2NjgsIAorICAgIDEwOTY3MywgMTA5Njc4LCAxMDk2ODMsIDEwOTY4OCwgMTA5NjkzLCAxMDk2OTgsIDEwOTcwMywgMTA5NzA4LCAxMDk3MTMsIAorICAgIDEwOTcxOCwgMTA5NzIzLCAxMDk3MzAsIDEwOTczNCwgMTA5NzM5LCAxMDk3NDQsIDEwOTc0OSwgMTA5NzU0LCAxMDk3NTgsIAorICAgIDEwOTc2MywgMTA5NzY4LCAxMDk3NzMsIDEwOTc3OCwgMTA5NzgzLCAxMDk3ODgsIDEwOTc5MywgMTA5Nzk4LCAxMDk4MDMsIAorICAgIDEwOTgwOSwgMTA5ODE1LCAxMDk4MjEsIDEwOTgyNywgMTA5ODMzLCAxMDk4MzksIDEwOTg0NSwgMTA5ODUxLCAxMDk4NTcsIAorICAgIDEwOTg2MywgMTA5ODY5LCAxMDk4NzUsIDEwOTg4MCwgMTA5ODg2LCAxMDk4OTIsIDEwOTg5OCwgMTA5OTA0LCAxMDk5MTAsIAorICAgIDEwOTkxNiwgMTA5OTIyLCAxMDk5MjgsIDEwOTkzNCwgMTA5OTQwLCAxMDk5NDYsIDEwOTk1MSwgMTA5OTU3LCAxMDk5NjMsIAorICAgIDEwOTk2OSwgMTA5OTc1LCAxMDk5ODEsIDEwOTk4NywgMTA5OTkzLCAxMDk5OTksIDExMDAwNSwgMTEwMDExLCAxMTAwMTcsIAorICAgIDExMDAyMywgMTEwMDI5LCAxMTAwMzUsIDExMDA0MSwgMTEwMDQ3LCAxMTAwNTMsIDExMDA1OSwgMTEwMDY1LCAxMTAwNzEsIAorICAgIDExMDA3NiwgMTEwMDgyLCAxMTAwODgsIDExMDA5NCwgMTEwMTAwLCAxMTAxMDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzUxOCwgMTA3NTIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTAxMTIsIDExMDExNSwgMTEwMTE5LCAKKyAgICAxMTAxMjMsIDExMDEyNywgMTEwMTMwLCAxMTAxMzQsIDExMDEzOSwgMTEwMTQzLCAxMTAxNDcsIDExMDE1MSwgMTEwMTU1LCAKKyAgICAxMTAxNTksIDExMDE2NCwgMTEwMTY5LCAxMTAxNzMsIDExMDE3NywgMTEwMTgwLCAxMTAxODQsIDExMDE4OSwgMTEwMTk0LCAKKyAgICAxMTAxOTgsIDExMDIwMiwgMTEwMjA2LCAxMTAyMTAsIDExMDIxNCwgMTEwMjE4LCAxMTAyMjIsIDExMDIyNiwgMTEwMjMwLCAKKyAgICAxMTAyMzQsIDExMDIzNywgMTEwMjQxLCAxMTAyNDUsIDExMDI0OSwgMTEwMjUzLCAxMTAyNTcsIDExMDI2MSwgMTEwMjY3LCAKKyAgICAxMTAyNzAsIDExMDI3NCwgMTEwMjc4LCAxMTAyODIsIDExMDI4NiwgMTEwMjkwLCAxMTAyOTQsIDExMDI5OCwgMTEwMzAyLCAKKyAgICAxMTAzMDYsIDExMDMxMSwgMTEwMzE2LCAxMTAzMjIsIDExMDMyNiwgMTEwMzMwLCAxMTAzMzQsIDExMDMzOCwgMTEwMzQyLCAKKyAgICAxMTAzNDYsIDExMDM1MSwgMTEwMzU0LCAxMTAzNTgsIDExMDM2MiwgMTEwMzY2LCAxMTAzNzAsIDExMDM3NiwgMTEwMzgwLCAKKyAgICAxMTAzODQsIDExMDM4OCwgMTEwMzkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTAzOTYsIDExMDQwMCwgCisgICAgMTEwNDA0LCAxMTA0MTAsIDExMDQxNiwgMTEwNDIwLCAxMTA0MjUsIDExMDQzMCwgMTEwNDM1LCAxMTA0NDAsIDExMDQ0NCwgCisgICAgMTEwNDQ5LCAxMTA0NTQsIDExMDQ1OSwgMTEwNDYzLCAxMTA0NjgsIDExMDQ3MywgMTEwNDc4LCAxMTA0ODIsIDExMDQ4NywgCisgICAgMTEwNDkyLCAxMTA0OTcsIDExMDUwMiwgMTEwNTA3LCAxMTA1MTIsIDExMDUxNywgMTEwNTIyLCAxMTA1MjYsIDExMDUzMSwgCisgICAgMTEwNTM2LCAxMTA1NDEsIDExMDU0NiwgMTEwNTUxLCAxMTA1NTYsIDExMDU2MSwgMTEwNTY2LCAxMTA1NzEsIDExMDU3NiwgCisgICAgMTEwNTgxLCAxMTA1ODgsIDExMDU5MywgMTEwNjAwLCAxMTA2MDUsIDExMDYxMCwgMTEwNjE1LCAxMTA2MjAsIDExMDYyNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwNjMwLCAxMTA2MzQsIDExMDY0MCwgCisgICAgMTEwNjQzLCAxMTA2NDYsIDExMDY1MCwgMTEwNjU0LCAxMTA2NTgsIDExMDY2MiwgMTEwNjY2LCAxMTA2NzAsIDExMDY3NCwgCisgICAgMTEwNjgwLCAxMTA2ODYsIDExMDY5MiwgMTEwNjk4LCAxMTA3MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzUyOSwgMTA3NTM0LCAKLSAgICAxMDc1MzksIDEwNzU0NCwgMTA3NTUxLCAxMDc1NTgsIDEwNzU2NSwgMTA3NTcyLCAxMDc1NzcsIDEwNzU4MiwgMTA3NTg3LCAKLSAgICAxMDc1OTIsIDEwNzU5OSwgMTA3NjA0LCAxMDc2MTEsIDEwNzYxOCwgMTA3NjIzLCAxMDc2MjgsIDEwNzYzMywgMTA3NjQwLCAKLSAgICAxMDc2NDUsIDEwNzY1MCwgMTA3NjU3LCAxMDc2NjQsIDEwNzY2OSwgMTA3Njc0LCAxMDc2NzksIDEwNzY4NiwgMTA3NjkzLCAKLSAgICAxMDc3MDAsIDEwNzcwNSwgMTA3NzEwLCAxMDc3MTcsIDEwNzcyNCwgMTA3NzMxLCAxMDc3MzgsIDEwNzc0MywgMTA3NzQ4LCAKLSAgICAxMDc3NTMsIDEwNzc2MCwgMTA3NzY1LCAxMDc3NzAsIDEwNzc3NSwgMTA3NzgyLCAxMDc3OTEsIDEwNzc5OCwgMTA3ODAzLCAKLSAgICAxMDc4MDgsIDEwNzgxMywgMTA3ODE4LCAxMDc4MjMsIDEwNzgyOCwgMTA3ODM3LCAxMDc4NDQsIDEwNzg0OSwgMTA3ODU2LCAKLSAgICAxMDc4NjMsIDEwNzg2OCwgMTA3ODczLCAxMDc4NzgsIDEwNzg4NSwgMTA3ODkwLCAxMDc4OTcsIDEwNzkwNCwgMTA3OTA5LCAKLSAgICAxMDc5MTQsIDEwNzkxOSwgMTA3OTI2LCAxMDc5MzMsIDEwNzkzOCwgMTA3OTQzLCAxMDc5NTAsIDEwNzk1NywgMTA3OTY0LCAKLSAgICAxMDc5NjksIDEwNzk3NCwgMTA3OTc5LCAxMDc5ODQsIDEwNzk5MSwgMTA4MDAwLCAxMDgwMDksIDEwODAxNCwgMTA4MDIxLCAKLSAgICAxMDgwMzAsIDEwODAzNSwgMTA4MDQwLCAxMDgwNDUsIDEwODA1MCwgMTA4MDU3LCAxMDgwNjQsIDEwODA3MSwgMTA4MDc4LCAKLSAgICAxMDgwODMsIDEwODA4OCwgMTA4MDkzLCAxMDgxMDAsIDEwODEwNywgMTA4MTE0LCAxMDgxMTksIDEwODEyNCwgMTA4MTMxLCAKLSAgICAxMDgxMzYsIDEwODE0MywgMTA4MTQ4LCAxMDgxNTUsIDEwODE2MCwgMTA4MTY3LCAxMDgxNzQsIDEwODE3OSwgMTA4MTg0LCAKLSAgICAxMDgxODksIDEwODE5NCwgMTA4MTk5LCAxMDgyMDQsIDEwODIwOSwgMTA4MjE0LCAxMDgyMTksIDEwODIyNiwgMTA4MjMzLCAKLSAgICAxMDgyNDAsIDEwODI0NywgMTA4MjU0LCAxMDgyNjMsIDEwODI2OCwgMTA4MjczLCAxMDgyODAsIDEwODI4NywgMTA4MjkyLCAKLSAgICAxMDgyOTksIDEwODMwNiwgMTA4MzEzLCAxMDgzMjAsIDEwODMyNywgMTA4MzM0LCAxMDgzMzksIDEwODM0NCwgMTA4MzQ5LCAKLSAgICAxMDgzNTQsIDEwODM1OSwgMTA4MzY4LCAxMDgzNzcsIDEwODM4NiwgMTA4Mzk1LCAxMDg0MDQsIDEwODQxMywgMTA4NDIyLCAKLSAgICAxMDg0MzEsIDEwODQzNiwgMTA4NDQ3LCAxMDg0NTgsIDEwODQ2NywgMTA4NDcyLCAxMDg0NzcsIDEwODQ4MiwgMTA4NDg3LCAKLSAgICAxMDg0OTYsIDEwODUwMywgMTA4NTEwLCAxMDg1MTcsIDEwODUyNCwgMTA4NTMxLCAxMDg1MzgsIDEwODU0NywgMTA4NTU2LCAKLSAgICAxMDg1NjcsIDEwODU3NiwgMTA4NTg3LCAxMDg1OTYsIDEwODYwMywgMTA4NjEyLCAxMDg2MjMsIDEwODYzMiwgMTA4NjQxLCAKLSAgICAxMDg2NTAsIDEwODY1OSwgMTA4NjY2LCAxMDg2NzMsIDEwODY4MCwgMTA4Njg5LCAxMDg2OTgsIDEwODcwOSwgMTA4NzE4LCAKLSAgICAxMDg3MjcsIDEwODczOCwgMTA4NzQzLCAxMDg3NDgsIDEwODc1OSwgMTA4NzY3LCAxMDg3NzYsIDEwODc4NSwgMTA4Nzk0LCAKLSAgICAxMDg4MDUsIDEwODgxNCwgMTA4ODIzLCAxMDg4MzQsIDEwODg0NSwgMTA4ODU2LCAxMDg4NjcsIDEwODg3OCwgMTA4ODg5LCAKLSAgICAxMDg4OTYsIDEwODkwMywgMTA4OTEwLCAxMDg5MTcsIDEwODkyOCwgMTA4OTM3LCAxMDg5NDQsIDEwODk1MSwgMTA4OTU4LCAKLSAgICAxMDg5NjksIDEwODk4MCwgMTA4OTkxLCAxMDkwMDIsIDEwOTAxMywgMTA5MDI0LCAxMDkwMzUsIDEwOTA0NiwgMTA5MDUzLCAKLSAgICAxMDkwNjAsIDEwOTA2OSwgMTA5MDc4LCAxMDkwODUsIDEwOTA5MiwgMTA5MDk5LCAxMDkxMDgsIDEwOTExNywgMTA5MTI2LCAKLSAgICAxMDkxMzMsIDEwOTE0MiwgMTA5MTUxLCAxMDkxNjAsIDEwOTE2NywgMTA5MTc0LCAxMDkxNzksIDEwOTE4NSwgMTA5MTkyLCAKLSAgICAxMDkxOTksIDEwOTIwNiwgMTA5MjEzLCAxMDkyMjAsIDEwOTIyNywgMTA5MjM2LCAxMDkyNDUsIDEwOTI1NCwgMTA5MjYzLCAKLSAgICAxMDkyNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTI3OSwgMTA5Mjg1LCAxMDkyOTAsIDEwOTI5NSwgCi0gICAgMTA5MzAyLCAxMDkzMDgsIDEwOTMxNCwgMTA5MzIwLCAxMDkzMjYsIDEwOTMzMiwgMTA5MzM4LCAxMDkzNDQsIDEwOTM0OCwgCi0gICAgMTA5MzUyLCAxMDkzNTgsIDEwOTM2NCwgMTA5MzcwLCAxMDkzNzQsIDEwOTM3OSwgMTA5Mzg0LCAxMDkzODgsIDEwOTM5MiwgCi0gICAgMTA5Mzk1LCAxMDk0MDEsIDEwOTQwNywgMTA5NDEzLCAxMDk0MTksIDEwOTQyNSwgMTA5NDMxLCAxMDk0MzcsIDEwOTQ0MywgCi0gICAgMTA5NDQ5LCAxMDk0NTksIDEwOTQ2OSwgMTA5NDc1LCAxMDk0ODEsIDEwOTQ5MSwgMTA5NTAxLCAxMDk1MDcsIDAsIDAsIAotICAgIDEwOTUxMywgMTA5NTIxLCAxMDk1MjYsIDEwOTUzMSwgMTA5NTM3LCAxMDk1NDMsIDEwOTU0OSwgMTA5NTU1LCAxMDk1NjEsIAotICAgIDEwOTU2NywgMTA5NTc0LCAxMDk1ODEsIDEwOTU4NywgMTA5NTkzLCAxMDk1OTksIDEwOTYwNSwgMTA5NjExLCAxMDk2MTcsIAotICAgIDEwOTYyMywgMTA5NjI5LCAxMDk2MzQsIDEwOTY0MCwgMTA5NjQ2LCAxMDk2NTIsIDEwOTY1OCwgMTA5NjY0LCAxMDk2NzMsIAotICAgIDEwOTY3OSwgMTA5Njg0LCAxMDk2OTIsIDEwOTY5OSwgMTA5NzA2LCAxMDk3MTUsIDEwOTcyNCwgMTA5NzMzLCAxMDk3NDIsIAotICAgIDEwOTc1MSwgMTA5NzYwLCAxMDk3NjksIDEwOTc3OCwgMTA5Nzg4LCAxMDk3OTgsIDEwOTgwNiwgMTA5ODE0LCAxMDk4MjMsIAotICAgIDEwOTgzMiwgMTA5ODM4LCAxMDk4NDQsIDEwOTg1MCwgMTA5ODU2LCAxMDk4NjQsIDEwOTg3MiwgMTA5ODc2LCAxMDk4ODIsIAotICAgIDEwOTg4NywgMTA5ODkzLCAxMDk4OTksIDEwOTkwNSwgMTA5OTExLCAxMDk5MTcsIDEwOTkyNiwgMTA5OTMxLCAxMDk5MzgsIAotICAgIDEwOTk0MywgMTA5OTQ4LCAxMDk5NTMsIDEwOTk1OSwgMTA5OTY1LCAxMDk5NzEsIDEwOTk3OCwgMTA5OTgzLCAxMDk5ODgsIAotICAgIDEwOTk5MywgMTA5OTk4LCAxMTAwMDMsIDExMDAwOSwgMTEwMDE1LCAxMTAwMjEsIDExMDAyNywgMTEwMDMzLCAxMTAwMzksIAotICAgIDExMDA0NSwgMTEwMDUxLCAxMTAwNTYsIDExMDA2MSwgMTEwMDY2LCAxMTAwNzEsIDExMDA3NiwgMTEwMDgxLCAxMTAwODYsIAotICAgIDExMDA5MSwgMTEwMDk3LCAxMTAxMDMsIDExMDEwOCwgMTEwMTEzLCAxMTAxMTgsIDExMDEyMywgMTEwMTI4LCAxMTAxMzQsIAotICAgIDExMDE0MSwgMTEwMTQ1LCAxMTAxNDksIDExMDE1MywgMTEwMTU3LCAxMTAxNjEsIDExMDE2NSwgMTEwMTY5LCAxMTAxNzMsIAotICAgIDExMDE4MSwgMTEwMTkxLCAxMTAxOTUsIDExMDE5OSwgMTEwMjA1LCAxMTAyMTEsIDExMDIxNywgMTEwMjIzLCAxMTAyMjksIAotICAgIDExMDIzNSwgMTEwMjQxLCAxMTAyNDcsIDExMDI1MywgMTEwMjU5LCAxMTAyNjUsIDExMDI3MSwgMTEwMjc3LCAxMTAyODMsIAotICAgIDExMDI4NywgMTEwMjkxLCAxMTAyOTgsIDExMDMwNCwgMTEwMzEwLCAxMTAzMTYsIDExMDMyMSwgMTEwMzI4LCAxMTAzMzMsIAotICAgIDExMDMzOSwgMTEwMzQ1LCAxMTAzNTEsIDExMDM1NywgMTEwMzYyLCAxMTAzNjYsIDExMDM3MiwgMTEwMzc2LCAxMTAzODAsIAotICAgIDExMDM4NCwgMTEwMzkwLCAxMTAzOTYsIDExMDQwMCwgMTEwNDA2LCAxMTA0MTIsIDExMDQxOCwgMTEwNDI0LCAxMTA0MzAsIAotICAgIDExMDQzOCwgMTEwNDQ2LCAxMTA0NTIsIDExMDQ1OCwgMTEwNDY0LCAxMTA0NzAsIDExMDQ4MiwgMTEwNDk0LCAxMTA1MDgsIAotICAgIDExMDUyMCwgMTEwNTMyLCAxMTA1NDYsIDExMDU2MCwgMTEwNTc0LCAxMTA1NzgsIDExMDU4NiwgMTEwNTk0LCAxMTA1OTksIAotICAgIDExMDYwMywgMTEwNjA3LCAxMTA2MTEsIDExMDYxNSwgMTEwNjE5LCAxMTA2MjMsIDExMDYyNywgMTEwNjMzLCAxMTA2MzksIAotICAgIDExMDY0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwNjUxLCAxMTA2NTcsIDExMDY2MywgMTEwNjY5LCAKLSAgICAxMTA2NzUsIDExMDY4MSwgMTEwNjg3LCAxMTA2OTMsIDExMDY5OSwgMTEwNzA1LCAxMTA3MTEsIDExMDcxNywgMTEwNzIzLCAKLSAgICAxMTA3MjksIDExMDczNSwgMTEwNzQxLCAxMTA3NDcsIDExMDc1MywgMTEwNzU5LCAxMTA3NjUsIDExMDc3MSwgMTEwNzc3LCAKLSAgICAxMTA3ODMsIDExMDc4OSwgMTEwNzk1LCAxMTA4MDEsIDExMDgwNywgMTEwODEzLCAxMTA4MTksIDExMDgyNSwgMTEwODMxLCAKLSAgICAxMTA4MzcsIDExMDg0MywgMTEwODQ5LCAxMTA4NTUsIDExMDg2MSwgMTEwODY3LCAxMTA4NzMsIDExMDg3OSwgMTEwODg1LCAKLSAgICAxMTA4OTEsIDExMDg5NywgMTEwOTAzLCAxMTA5MDksIDExMDkxNSwgMTEwOTIxLCAxMTA5MjcsIDExMDkzMywgMTEwOTM5LCAKLSAgICAxMTA5NDUsIDExMDk1MSwgMTEwOTU3LCAxMTA5NjMsIDExMDk2OSwgMTEwOTc1LCAxMTA5ODEsIDExMDk4NywgMTEwOTkzLCAKLSAgICAxMTA5OTksIDExMTAwNSwgMTExMDExLCAxMTEwMTcsIDExMTAyMywgMTExMDI5LCAxMTEwMzUsIDExMTA0MSwgMTExMDQ3LCAKLSAgICAxMTEwNTIsIDExMTA1NywgMTExMDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTEwNjYsIDExMTA3MSwgCi0gICAgMTExMDc4LCAxMTEwODUsIDExMTA5MiwgMTExMDk5LCAxMTExMDQsIDExMTEwOCwgMTExMTE0LCAxMTExMTgsIDExMTEyMiwgCi0gICAgMTExMTI4LCAxMTExMzIsIDExMTEzNiwgMTExMTQwLCAxMTExNDYsIDExMTE1MywgMTExMTU3LCAxMTExNjEsIDExMTE2NSwgCi0gICAgMTExMTY5LCAxMTExNzMsIDExMTE3NywgMTExMTgzLCAxMTExODcsIDExMTE5MSwgMTExMTk1LCAxMTExOTksIDExMTIwMywgCi0gICAgMTExMjA3LCAxMTEyMTEsIDExMTIxNSwgMTExMjE5LCAxMTEyMjMsIDExMTIyNywgMTExMjMxLCAxMTEyMzYsIDExMTI0MCwgCi0gICAgMTExMjQ0LCAxMTEyNDgsIDExMTI1MiwgMTExMjU2LCAxMTEyNjAsIDExMTI2NCwgMTExMjY4LCAxMTEyNzIsIDExMTI3OSwgCi0gICAgMTExMjgzLCAxMTEyOTEsIDExMTI5NSwgMTExMjk5LCAxMTEzMDMsIDExMTMwNywgMTExMzExLCAxMTEzMTUsIDExMTMxOSwgCi0gICAgMTExMzI2LCAxMTEzMzAsIDExMTMzNCwgMTExMzM4LCAxMTEzNDIsIDExMTM0NiwgMTExMzUyLCAxMTEzNTYsIDExMTM2MiwgCi0gICAgMTExMzY2LCAxMTEzNzAsIDExMTM3NCwgMTExMzc4LCAxMTEzODIsIDExMTM4NiwgMTExMzkwLCAxMTEzOTQsIDExMTM5OCwgCi0gICAgMTExNDAyLCAxMTE0MDYsIDExMTQxMCwgMTExNDE0LCAxMTE0MTgsIDExMTQyMiwgMTExNDI2LCAxMTE0MzAsIDExMTQzNCwgCi0gICAgMTExNDM4LCAxMTE0NDYsIDExMTQ1MCwgMTExNDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTE0NTgsIAotICAgIDExMTQ2NiwgMTExNDc0LCAxMTE0ODIsIDExMTQ5MCwgMTExNDk4LCAxMTE1MDYsIDExMTUxNCwgMTExNTIyLCAxMTE1MzAsIAotICAgIDExMTUzOCwgMTExNTQ2LCAxMTE1NTQsIDExMTU2MiwgMTExNTcwLCAxMTE1NzgsIDExMTU4NiwgMTExNTk0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTE2MDIsIDExMTYwNiwgMTExNjExLCAxMTE2MTYsIDExMTYyMSwgCi0gICAgMTExNjI1LCAxMTE2MzAsIDExMTYzNSwgMTExNjQwLCAxMTE2NDQsIDExMTY0OSwgMTExNjU0LCAxMTE2NTgsIDExMTY2MiwgCi0gICAgMTExNjY2LCAxMTE2NzAsIDExMTY3NSwgMTExNjgwLCAxMTE2ODQsIDExMTY4OCwgMTExNjkzLCAxMTE2OTcsIDExMTcwMiwgCi0gICAgMTExNzA3LCAxMTE3MTIsIDExMTcxNywgMTExNzIyLCAxMTE3MjYsIDExMTczMSwgMTExNzM2LCAxMTE3NDEsIDExMTc0NSwgCi0gICAgMTExNzUwLCAxMTE3NTUsIDExMTc2MCwgMTExNzY0LCAxMTE3NjksIDExMTc3NCwgMTExNzc4LCAxMTE3ODIsIDExMTc4NiwgCi0gICAgMTExNzkwLCAxMTE3OTUsIDExMTgwMCwgMTExODA0LCAxMTE4MDgsIDExMTgxMywgMTExODE3LCAxMTE4MjIsIDExMTgyNywgCi0gICAgMTExODMyLCAxMTE4MzcsIDExMTg0MiwgMTExODQ2LCAxMTE4NTEsIDExMTg1NiwgMTExODYxLCAxMTE4NjUsIDExMTg3MCwgCi0gICAgMTExODc1LCAxMTE4ODAsIDExMTg4NCwgMTExODg5LCAxMTE4OTQsIDExMTg5OCwgMTExOTAyLCAxMTE5MDYsIDExMTkxMCwgCi0gICAgMTExOTE1LCAxMTE5MjAsIDExMTkyNCwgMTExOTI4LCAxMTE5MzMsIDExMTkzNywgMTExOTQyLCAxMTE5NDcsIDExMTk1MiwgCi0gICAgMTExOTU3LCAxMTE5NjIsIDExMTk2NiwgMTExOTcxLCAxMTE5NzYsIDExMTk4MSwgMTExOTg1LCAxMTE5OTAsIDAsIAotICAgIDExMTk5NSwgMTExOTk5LCAxMTIwMDQsIDExMjAwOSwgMTEyMDEzLCAxMTIwMTcsIDExMjAyMSwgMTEyMDI1LCAxMTIwMzAsIAotICAgIDExMjAzNSwgMTEyMDM5LCAxMTIwNDMsIDExMjA0OCwgMTEyMDUyLCAxMTIwNTcsIDExMjA2MiwgMTEyMDY3LCAxMTIwNzIsIAotICAgIDExMjA3NywgMTEyMDgyLCAxMTIwODgsIDExMjA5NCwgMTEyMTAwLCAxMTIxMDUsIDExMjExMSwgMTEyMTE3LCAxMTIxMjMsIAotICAgIDExMjEyOCwgMTEyMTM0LCAxMTIxNDAsIDExMjE0NSwgMTEyMTUwLCAxMTIxNTUsIDExMjE2MCwgMTEyMTY2LCAxMTIxNzIsIAotICAgIDExMjE3NywgMTEyMTgyLCAxMTIxODgsIDExMjE5MywgMTEyMTk5LCAxMTIyMDUsIDExMjIxMSwgMTEyMjE3LCAxMTIyMjMsIAotICAgIDExMjIyOCwgMTEyMjM0LCAxMTIyNDAsIDExMjI0NiwgMTEyMjUxLCAxMTIyNTcsIDExMjI2MywgMTEyMjY5LCAxMTIyNzQsIAotICAgIDExMjI4MCwgMTEyMjg2LCAxMTIyOTEsIDExMjI5NiwgMTEyMzAxLCAxMTIzMDYsIDExMjMxMiwgMTEyMzE4LCAxMTIzMjMsIAotICAgIDExMjMyOCwgMTEyMzM0LCAxMTIzMzksIDExMjM0NSwgMTEyMzUxLCAxMTIzNTcsIDExMjM2MywgMTEyMzY5LCAwLCAKLSAgICAxMTIzNzMsIDExMjM3OCwgMCwgMCwgMTEyMzgzLCAwLCAwLCAxMTIzODgsIDExMjM5MywgMCwgMCwgMTEyMzk4LCAxMTI0MDIsIAotICAgIDExMjQwNiwgMTEyNDExLCAwLCAxMTI0MTYsIDExMjQyMCwgMTEyNDI1LCAxMTI0MjksIDExMjQzNCwgMTEyNDM5LCAKLSAgICAxMTI0NDQsIDExMjQ0OSwgMTEyNDU0LCAxMTI0NTgsIDExMjQ2MywgMTEyNDY4LCAwLCAxMTI0NzMsIDAsIDExMjQ3OCwgCi0gICAgMTEyNDgzLCAxMTI0ODcsIDExMjQ5MiwgMTEyNDk3LCAxMTI1MDEsIDExMjUwNSwgMCwgMTEyNTA5LCAxMTI1MTQsIAotICAgIDExMjUxOSwgMTEyNTIzLCAxMTI1MjcsIDExMjUzMiwgMTEyNTM2LCAxMTI1NDEsIDExMjU0NiwgMTEyNTUxLCAxMTI1NTYsIAotICAgIDExMjU2MSwgMTEyNTY2LCAxMTI1NzIsIDExMjU3OCwgMTEyNTg0LCAxMTI1ODksIDExMjU5NSwgMTEyNjAxLCAxMTI2MDcsIAotICAgIDExMjYxMiwgMTEyNjE4LCAxMTI2MjQsIDExMjYyOSwgMTEyNjM0LCAxMTI2MzksIDExMjY0NCwgMTEyNjUwLCAxMTI2NTYsIAotICAgIDExMjY2MSwgMTEyNjY2LCAxMTI2NzIsIDExMjY3NywgMTEyNjgzLCAxMTI2ODksIDExMjY5NSwgMTEyNzAxLCAxMTI3MDcsIAotICAgIDExMjcxMiwgMTEyNzE4LCAxMTI3MjQsIDExMjczMCwgMTEyNzM1LCAxMTI3NDEsIDExMjc0NywgMTEyNzUzLCAxMTI3NTgsIAotICAgIDExMjc2NCwgMTEyNzcwLCAxMTI3NzUsIDExMjc4MCwgMTEyNzg1LCAxMTI3OTAsIDExMjc5NiwgMTEyODAyLCAxMTI4MDcsIAotICAgIDExMjgxMiwgMTEyODE4LCAxMTI4MjMsIDExMjgyOSwgMTEyODM1LCAxMTI4NDEsIDExMjg0NywgMTEyODUzLCAxMTI4NTcsIAotICAgIDAsIDExMjg2MiwgMTEyODY3LCAxMTI4NzEsIDExMjg3NiwgMCwgMCwgMTEyODgxLCAxMTI4ODYsIDExMjg5MSwgMTEyODk1LCAKLSAgICAxMTI4OTksIDExMjkwMywgMTEyOTA3LCAxMTI5MTIsIDAsIDExMjkxNywgMTEyOTIxLCAxMTI5MjYsIDExMjkzMCwgCi0gICAgMTEyOTM1LCAxMTI5NDAsIDExMjk0NSwgMCwgMTEyOTUwLCAxMTI5NTQsIDExMjk1OSwgMTEyOTY0LCAxMTI5NjksIAotICAgIDExMjk3MywgMTEyOTc4LCAxMTI5ODMsIDExMjk4OCwgMTEyOTkyLCAxMTI5OTcsIDExMzAwMiwgMTEzMDA2LCAxMTMwMTAsIAotICAgIDExMzAxNCwgMTEzMDE4LCAxMTMwMjMsIDExMzAyOCwgMTEzMDMyLCAxMTMwMzYsIDExMzA0MSwgMTEzMDQ1LCAxMTMwNTAsIAotICAgIDExMzA1NSwgMTEzMDYwLCAxMTMwNjUsIDExMzA3MCwgMTEzMDc0LCAwLCAxMTMwNzksIDExMzA4NCwgMTEzMDg4LCAKLSAgICAxMTMwOTMsIDAsIDExMzA5OCwgMTEzMTAyLCAxMTMxMDcsIDExMzExMiwgMTEzMTE2LCAwLCAxMTMxMjAsIDAsIDAsIDAsIAotICAgIDExMzEyNCwgMTEzMTI4LCAxMTMxMzMsIDExMzEzNywgMTEzMTQyLCAxMTMxNDcsIDExMzE1MiwgMCwgMTEzMTU3LCAKLSAgICAxMTMxNjEsIDExMzE2NiwgMTEzMTcxLCAxMTMxNzYsIDExMzE4MCwgMTEzMTg1LCAxMTMxOTAsIDExMzE5NSwgMTEzMTk5LCAKLSAgICAxMTMyMDQsIDExMzIwOSwgMTEzMjEzLCAxMTMyMTcsIDExMzIyMSwgMTEzMjI1LCAxMTMyMzAsIDExMzIzNSwgMTEzMjM5LCAKLSAgICAxMTMyNDMsIDExMzI0OCwgMTEzMjUyLCAxMTMyNTcsIDExMzI2MiwgMTEzMjY3LCAxMTMyNzIsIDExMzI3NywgMTEzMjgyLCAKLSAgICAxMTMyODgsIDExMzI5NCwgMTEzMzAwLCAxMTMzMDUsIDExMzMxMSwgMTEzMzE3LCAxMTMzMjMsIDExMzMyOCwgMTEzMzM0LCAKLSAgICAxMTMzNDAsIDExMzM0NSwgMTEzMzUwLCAxMTMzNTUsIDExMzM2MCwgMTEzMzY2LCAxMTMzNzIsIDExMzM3NywgMTEzMzgyLCAKLSAgICAxMTMzODgsIDExMzM5MywgMTEzMzk5LCAxMTM0MDUsIDExMzQxMSwgMTEzNDE3LCAxMTM0MjMsIDExMzQyOCwgMTEzNDM0LCAKLSAgICAxMTM0NDAsIDExMzQ0NiwgMTEzNDUxLCAxMTM0NTcsIDExMzQ2MywgMTEzNDY5LCAxMTM0NzQsIDExMzQ4MCwgMTEzNDg2LCAKLSAgICAxMTM0OTEsIDExMzQ5NiwgMTEzNTAxLCAxMTM1MDYsIDExMzUxMiwgMTEzNTE4LCAxMTM1MjMsIDExMzUyOCwgMTEzNTM0LCAKLSAgICAxMTM1MzksIDExMzU0NSwgMTEzNTUxLCAxMTM1NTcsIDExMzU2MywgMTEzNTY5LCAxMTM1NzMsIDExMzU3OCwgMTEzNTgzLCAKLSAgICAxMTM1ODgsIDExMzU5MiwgMTEzNTk3LCAxMTM2MDIsIDExMzYwNywgMTEzNjExLCAxMTM2MTYsIDExMzYyMSwgMTEzNjI1LCAKLSAgICAxMTM2MjksIDExMzYzMywgMTEzNjM3LCAxMTM2NDIsIDExMzY0NywgMTEzNjUxLCAxMTM2NTUsIDExMzY2MCwgMTEzNjY0LCAKLSAgICAxMTM2NjksIDExMzY3NCwgMTEzNjc5LCAxMTM2ODQsIDExMzY4OSwgMTEzNjkzLCAxMTM2OTgsIDExMzcwMywgMTEzNzA4LCAKLSAgICAxMTM3MTIsIDExMzcxNywgMTEzNzIyLCAxMTM3MjcsIDExMzczMSwgMTEzNzM2LCAxMTM3NDEsIDExMzc0NSwgMTEzNzQ5LCAKLSAgICAxMTM3NTMsIDExMzc1NywgMTEzNzYyLCAxMTM3NjcsIDExMzc3MSwgMTEzNzc1LCAxMTM3ODAsIDExMzc4NCwgMTEzNzg5LCAKLSAgICAxMTM3OTQsIDExMzc5OSwgMTEzODA0LCAxMTM4MDksIDExMzgxNCwgMTEzODIwLCAxMTM4MjYsIDExMzgzMiwgMTEzODM3LCAKLSAgICAxMTM4NDMsIDExMzg0OSwgMTEzODU1LCAxMTM4NjAsIDExMzg2NiwgMTEzODcyLCAxMTM4NzcsIDExMzg4MiwgMTEzODg3LCAKLSAgICAxMTM4OTIsIDExMzg5OCwgMTEzOTA0LCAxMTM5MDksIDExMzkxNCwgMTEzOTIwLCAxMTM5MjUsIDExMzkzMSwgMTEzOTM3LCAKLSAgICAxMTM5NDMsIDExMzk0OSwgMTEzOTU1LCAxMTM5NjAsIDExMzk2NiwgMTEzOTcyLCAxMTM5NzgsIDExMzk4MywgMTEzOTg5LCAKLSAgICAxMTM5OTUsIDExNDAwMSwgMTE0MDA2LCAxMTQwMTIsIDExNDAxOCwgMTE0MDIzLCAxMTQwMjgsIDExNDAzMywgMTE0MDM4LCAKLSAgICAxMTQwNDQsIDExNDA1MCwgMTE0MDU1LCAxMTQwNjAsIDExNDA2NiwgMTE0MDcxLCAxMTQwNzcsIDExNDA4MywgMTE0MDg5LCAKLSAgICAxMTQwOTUsIDExNDEwMSwgMTE0MTA2LCAxMTQxMTIsIDExNDExOCwgMTE0MTI0LCAxMTQxMjksIDExNDEzNSwgMTE0MTQxLCAKLSAgICAxMTQxNDcsIDExNDE1MiwgMTE0MTU4LCAxMTQxNjQsIDExNDE2OSwgMTE0MTc0LCAxMTQxNzksIDExNDE4NCwgMTE0MTkwLCAKLSAgICAxMTQxOTYsIDExNDIwMSwgMTE0MjA2LCAxMTQyMTIsIDExNDIxNywgMTE0MjIzLCAxMTQyMjksIDExNDIzNSwgMTE0MjQxLCAKLSAgICAxMTQyNDcsIDExNDI1MiwgMTE0MjU4LCAxMTQyNjQsIDExNDI3MCwgMTE0Mjc1LCAxMTQyODEsIDExNDI4NywgMTE0MjkzLCAKLSAgICAxMTQyOTgsIDExNDMwNCwgMTE0MzEwLCAxMTQzMTUsIDExNDMyMCwgMTE0MzI1LCAxMTQzMzAsIDExNDMzNiwgMTE0MzQyLCAKLSAgICAxMTQzNDcsIDExNDM1MiwgMTE0MzU4LCAxMTQzNjMsIDExNDM2OSwgMTE0Mzc1LCAxMTQzODEsIDExNDM4NywgMTE0MzkzLCAKLSAgICAxMTQzOTksIDExNDQwNiwgMTE0NDEzLCAxMTQ0MjAsIDExNDQyNiwgMTE0NDMzLCAxMTQ0NDAsIDExNDQ0NywgMTE0NDUzLCAKLSAgICAxMTQ0NjAsIDExNDQ2NywgMTE0NDczLCAxMTQ0NzksIDExNDQ4NSwgMTE0NDkxLCAxMTQ0OTgsIDExNDUwNSwgMTE0NTExLCAKLSAgICAxMTQ1MTcsIDExNDUyNCwgMTE0NTMwLCAxMTQ1MzcsIDExNDU0NCwgMTE0NTUxLCAxMTQ1NTgsIDExNDU2NSwgMTE0NTcxLCAKLSAgICAxMTQ1NzgsIDExNDU4NSwgMTE0NTkyLCAxMTQ1OTgsIDExNDYwNSwgMTE0NjEyLCAxMTQ2MTksIDExNDYyNSwgMTE0NjMyLCAKLSAgICAxMTQ2MzksIDExNDY0NSwgMTE0NjUxLCAxMTQ2NTcsIDExNDY2MywgMTE0NjcwLCAxMTQ2NzcsIDExNDY4MywgMTE0Njg5LCAKLSAgICAxMTQ2OTYsIDExNDcwMiwgMTE0NzA5LCAxMTQ3MTYsIDExNDcyMywgMTE0NzMwLCAxMTQ3MzcsIDExNDc0MiwgMTE0NzQ4LCAKLSAgICAxMTQ3NTQsIDExNDc2MCwgMTE0NzY1LCAxMTQ3NzEsIDExNDc3NywgMTE0NzgzLCAxMTQ3ODgsIDExNDc5NCwgMTE0ODAwLCAKLSAgICAxMTQ4MDUsIDExNDgxMCwgMTE0ODE1LCAxMTQ4MjAsIDExNDgyNiwgMTE0ODMyLCAxMTQ4MzcsIDExNDg0MiwgMTE0ODQ4LCAKLSAgICAxMTQ4NTMsIDExNDg1OSwgMTE0ODY1LCAxMTQ4NzEsIDExNDg3NywgMTE0ODgzLCAxMTQ4ODgsIDExNDg5NCwgMTE0OTAwLCAKLSAgICAxMTQ5MDYsIDExNDkxMSwgMTE0OTE3LCAxMTQ5MjMsIDExNDkyOSwgMTE0OTM0LCAxMTQ5NDAsIDExNDk0NiwgMTE0OTUxLCAKLSAgICAxMTQ5NTYsIDExNDk2MSwgMTE0OTY2LCAxMTQ5NzIsIDExNDk3OCwgMTE0OTgzLCAxMTQ5ODgsIDExNDk5NCwgMTE0OTk5LCAKLSAgICAxMTUwMDUsIDExNTAxMSwgMTE1MDE3LCAxMTUwMjMsIDExNTAyOSwgMTE1MDM1LCAwLCAwLCAxMTUwNDIsIDExNTA0NywgCi0gICAgMTE1MDUyLCAxMTUwNTcsIDExNTA2MiwgMTE1MDY3LCAxMTUwNzIsIDExNTA3NywgMTE1MDgyLCAxMTUwODcsIDExNTA5MiwgCi0gICAgMTE1MDk3LCAxMTUxMDIsIDExNTEwNywgMTE1MTEyLCAxMTUxMTcsIDExNTEyMiwgMTE1MTI3LCAxMTUxMzMsIDExNTEzOCwgCi0gICAgMTE1MTQzLCAxMTUxNDgsIDExNTE1MywgMTE1MTU4LCAxMTUxNjMsIDExNTE2OCwgMTE1MTcyLCAxMTUxNzcsIDExNTE4MiwgCi0gICAgMTE1MTg3LCAxMTUxOTIsIDExNTE5NywgMTE1MjAyLCAxMTUyMDcsIDExNTIxMiwgMTE1MjE3LCAxMTUyMjIsIDExNTIyNywgCi0gICAgMTE1MjMyLCAxMTUyMzcsIDExNTI0MiwgMTE1MjQ3LCAxMTUyNTIsIDExNTI1NywgMTE1MjYzLCAxMTUyNjgsIDExNTI3MywgCi0gICAgMTE1Mjc4LCAxMTUyODMsIDExNTI4OCwgMTE1MjkzLCAxMTUyOTgsIDExNTMwNCwgMTE1MzA5LCAxMTUzMTQsIDExNTMxOSwgCi0gICAgMTE1MzI0LCAxMTUzMjksIDExNTMzNCwgMTE1MzM5LCAxMTUzNDQsIDExNTM0OSwgMTE1MzU0LCAxMTUzNTksIDExNTM2NCwgCi0gICAgMTE1MzY5LCAxMTUzNzQsIDExNTM3OSwgMTE1Mzg0LCAxMTUzODksIDExNTM5NCwgMTE1Mzk5LCAxMTU0MDQsIDExNTQwOSwgCi0gICAgMTE1NDE0LCAxMTU0MTksIDExNTQyNSwgMTE1NDMwLCAxMTU0MzUsIDExNTQ0MCwgMTE1NDQ1LCAxMTU0NTAsIDExNTQ1NSwgCi0gICAgMTE1NDYwLCAxMTU0NjQsIDExNTQ2OSwgMTE1NDc0LCAxMTU0NzksIDExNTQ4NCwgMTE1NDg5LCAxMTU0OTQsIDExNTQ5OSwgCi0gICAgMTE1NTA0LCAxMTU1MDksIDExNTUxNCwgMTE1NTE5LCAxMTU1MjQsIDExNTUyOSwgMTE1NTM0LCAxMTU1MzksIDExNTU0NCwgCi0gICAgMTE1NTQ5LCAxMTU1NTUsIDExNTU2MCwgMTE1NTY1LCAxMTU1NzAsIDExNTU3NSwgMTE1NTgwLCAxMTU1ODUsIDExNTU5MCwgCi0gICAgMTE1NTk2LCAxMTU2MDEsIDExNTYwNiwgMTE1NjExLCAxMTU2MTYsIDExNTYyMSwgMTE1NjI2LCAxMTU2MzIsIDExNTYzOCwgCi0gICAgMTE1NjQ0LCAxMTU2NTAsIDExNTY1NiwgMTE1NjYyLCAxMTU2NjgsIDExNTY3NCwgMTE1NjgwLCAxMTU2ODYsIDExNTY5MiwgCi0gICAgMTE1Njk4LCAxMTU3MDQsIDExNTcxMCwgMTE1NzE2LCAxMTU3MjIsIDExNTcyOCwgMTE1NzM1LCAxMTU3NDEsIDExNTc0NywgCi0gICAgMTE1NzUzLCAxMTU3NTksIDExNTc2NSwgMTE1NzcxLCAxMTU3NzcsIDExNTc4MiwgMTE1Nzg4LCAxMTU3OTQsIDExNTgwMCwgCi0gICAgMTE1ODA2LCAxMTU4MTIsIDExNTgxOCwgMTE1ODI0LCAxMTU4MzAsIDExNTgzNiwgMTE1ODQyLCAxMTU4NDgsIDExNTg1NCwgCi0gICAgMTE1ODYwLCAxMTU4NjYsIDExNTg3MiwgMTE1ODc4LCAxMTU4ODQsIDExNTg5MSwgMTE1ODk3LCAxMTU5MDMsIDExNTkwOSwgCi0gICAgMTE1OTE1LCAxMTU5MjEsIDExNTkyNywgMTE1OTMzLCAxMTU5NDAsIDExNTk0NiwgMTE1OTUyLCAxMTU5NTgsIDExNTk2NCwgCi0gICAgMTE1OTcwLCAxMTU5NzYsIDExNTk4MiwgMTE1OTg4LCAxMTU5OTQsIDExNjAwMCwgMTE2MDA2LCAxMTYwMTIsIDExNjAxOCwgCi0gICAgMTE2MDI0LCAxMTYwMzAsIDExNjAzNiwgMTE2MDQyLCAxMTYwNDgsIDExNjA1NCwgMTE2MDYwLCAxMTYwNjYsIDExNjA3MiwgCi0gICAgMTE2MDc4LCAxMTYwODUsIDExNjA5MSwgMTE2MDk3LCAxMTYxMDMsIDExNjEwOSwgMTE2MTE1LCAxMTYxMjEsIDExNjEyNywgCi0gICAgMTE2MTMyLCAxMTYxMzgsIDExNjE0NCwgMTE2MTUwLCAxMTYxNTYsIDExNjE2MiwgMTE2MTY4LCAxMTYxNzQsIDExNjE4MCwgCi0gICAgMTE2MTg2LCAxMTYxOTIsIDExNjE5OCwgMTE2MjA0LCAxMTYyMTAsIDExNjIxNiwgMTE2MjIyLCAxMTYyMjgsIDExNjIzNCwgCi0gICAgMTE2MjQxLCAxMTYyNDcsIDExNjI1MywgMTE2MjU5LCAxMTYyNjUsIDExNjI3MSwgMTE2Mjc3LCAxMTYyODMsIDExNjI5MCwgCi0gICAgMTE2Mjk2LCAxMTYzMDIsIDExNjMwOCwgMTE2MzE0LCAxMTYzMjAsIDExNjMyNiwgMTE2MzMzLCAxMTYzNDAsIDExNjM0NywgCi0gICAgMTE2MzU0LCAxMTYzNjEsIDExNjM2OCwgMTE2Mzc1LCAxMTYzODIsIDExNjM4OSwgMTE2Mzk2LCAxMTY0MDMsIDExNjQxMCwgCi0gICAgMTE2NDE3LCAxMTY0MjQsIDExNjQzMSwgMTE2NDM4LCAxMTY0NDUsIDExNjQ1MywgMTE2NDYwLCAxMTY0NjcsIDExNjQ3NCwgCi0gICAgMTE2NDgxLCAxMTY0ODgsIDExNjQ5NSwgMTE2NTAyLCAxMTY1MDgsIDExNjUxNSwgMTE2NTIyLCAxMTY1MjksIDExNjUzNiwgCi0gICAgMTE2NTQzLCAxMTY1NTAsIDExNjU1NywgMTE2NTY0LCAxMTY1NzEsIDExNjU3OCwgMTE2NTg1LCAxMTY1OTIsIDExNjU5OSwgCi0gICAgMTE2NjA2LCAxMTY2MTMsIDExNjYyMCwgMTE2NjI3LCAxMTY2MzUsIDExNjY0MiwgMTE2NjQ5LCAxMTY2NTYsIDExNjY2MywgCi0gICAgMTE2NjcwLCAxMTY2NzcsIDExNjY4NCwgMTE2NjkyLCAxMTY2OTksIDExNjcwNiwgMTE2NzEzLCAxMTY3MjAsIDExNjcyNywgCi0gICAgMTE2NzM0LCAxMTY3MzksIDAsIDAsIDExNjc0NCwgMTE2NzQ5LCAxMTY3NTMsIDExNjc1NywgMTE2NzYxLCAxMTY3NjUsIAotICAgIDExNjc2OSwgMTE2NzczLCAxMTY3NzcsIDExNjc4MSwgMTE2Nzg1LCAxMTY3OTAsIDExNjc5NCwgMTE2Nzk4LCAxMTY4MDIsIAotICAgIDExNjgwNiwgMTE2ODEwLCAxMTY4MTQsIDExNjgxOCwgMTE2ODIyLCAxMTY4MjYsIDExNjgzMSwgMTE2ODM1LCAxMTY4MzksIAotICAgIDExNjg0MywgMTE2ODQ3LCAxMTY4NTEsIDExNjg1NSwgMTE2ODU5LCAxMTY4NjMsIDExNjg2NywgMTE2ODczLCAxMTY4NzgsIAotICAgIDExNjg4MywgMTE2ODg4LCAxMTY4OTMsIDExNjg5OCwgMTE2OTAzLCAxMTY5MDgsIDExNjkxMywgMTE2OTE4LCAxMTY5MjQsIAotICAgIDExNjkyOSwgMTE2OTM0LCAxMTY5MzksIDExNjk0NCwgMTE2OTQ5LCAxMTY5NTQsIDExNjk1OSwgMTE2OTY0LCAxMTY5NjksIAotICAgIDExNjk3NiwgMTE2OTgzLCAxMTY5OTAsIDExNjk5NywgMTE3MDA0LCAxMTcwMTEsIDExNzAxNywgMTE3MDI0LCAxMTcwMzEsIAotICAgIDExNzAzOCwgMTE3MDQ2LCAxMTcwNTQsIDExNzA2MiwgMTE3MDcwLCAxMTcwNzgsIDExNzA4NiwgMTE3MDkzLCAxMTcxMDAsIAotICAgIDExNzEwNywgMTE3MTE1LCAxMTcxMjMsIDExNzEzMSwgMTE3MTM5LCAxMTcxNDcsIDExNzE1NSwgMTE3MTYyLCAxMTcxNjksIAotICAgIDExNzE3NiwgMTE3MTg0LCAxMTcxOTIsIDExNzIwMCwgMTE3MjA4LCAxMTcyMTYsIDExNzIyNCwgMTE3MjI5LCAxMTcyMzQsIAotICAgIDExNzIzOSwgMTE3MjQ0LCAxMTcyNDksIDExNzI1NCwgMTE3MjU5LCAxMTcyNjQsIDExNzI2OSwgMCwgMCwgMCwgMCwgCi0gICAgMTE3Mjc0LCAxMTcyNzksIDExNzI4MywgMTE3Mjg3LCAxMTcyOTEsIDExNzI5NSwgMTE3Mjk5LCAxMTczMDMsIDExNzMwNywgCi0gICAgMTE3MzExLCAxMTczMTUsIDExNzMxOSwgMTE3MzIzLCAxMTczMjcsIDExNzMzMSwgMTE3MzM1LCAxMTczMzksIDExNzM0MywgCi0gICAgMTE3MzQ3LCAxMTczNTEsIDExNzM1NSwgMTE3MzU5LCAxMTczNjMsIDExNzM2NywgMTE3MzcxLCAxMTczNzUsIDExNzM3OSwgCi0gICAgMTE3MzgzLCAxMTczODcsIDExNzM5MSwgMTE3Mzk1LCAxMTczOTksIDExNzQwMywgMTE3NDA3LCAxMTc0MTEsIDExNzQxNSwgCi0gICAgMTE3NDE5LCAxMTc0MjMsIDExNzQyNywgMTE3NDMxLCAxMTc0MzUsIDExNzQzOSwgMTE3NDQzLCAxMTc0NDcsIDExNzQ1MSwgCi0gICAgMTE3NDU1LCAxMTc0NTksIDExNzQ2MywgMTE3NDY3LCAxMTc0NzEsIDExNzQ3NSwgMTE3NDgwLCAxMTc0ODQsIDExNzQ4OCwgCi0gICAgMTE3NDkyLCAxMTc0OTYsIDExNzUwMCwgMTE3NTA0LCAxMTc1MDgsIDExNzUxMiwgMTE3NTE2LCAxMTc1MjAsIDExNzUyNCwgCi0gICAgMTE3NTI4LCAxMTc1MzIsIDExNzUzNiwgMTE3NTQwLCAxMTc1NDQsIDExNzU0OCwgMTE3NTUyLCAxMTc1NTYsIDExNzU2MCwgCi0gICAgMTE3NTY0LCAxMTc1NjgsIDExNzU3MiwgMTE3NTc2LCAxMTc1ODAsIDExNzU4NCwgMTE3NTg4LCAxMTc1OTIsIDExNzU5NiwgCi0gICAgMTE3NjAwLCAxMTc2MDQsIDExNzYwOCwgMTE3NjEyLCAxMTc2MTYsIDExNzYyMCwgMTE3NjI0LCAxMTc2MjgsIDExNzYzMiwgCi0gICAgMTE3NjM2LCAxMTc2NDAsIDExNzY0NCwgMTE3NjQ4LCAxMTc2NTIsIDExNzY1NiwgMTE3NjYwLCAxMTc2NjQsIDExNzY2OCwgCi0gICAgMTE3NjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTc2NzYsIDExNzY4MiwgMTE3NjkxLCAKLSAgICAxMTc2OTksIDExNzcwNywgMTE3NzE2LCAxMTc3MjUsIDExNzczNCwgMTE3NzQzLCAxMTc3NTIsIDExNzc2MSwgMTE3NzcwLCAKLSAgICAxMTc3NzksIDExNzc4OCwgMTE3Nzk3LCAwLCAwLCAxMTc4MDYsIDExNzgxNSwgMTE3ODIzLCAxMTc4MzEsIDExNzg0MCwgCi0gICAgMTE3ODQ5LCAxMTc4NTgsIDExNzg2NywgMTE3ODc2LCAxMTc4ODUsIDExNzg5NCwgMTE3OTAzLCAxMTc5MTIsIDExNzkyMSwgCi0gICAgMCwgMCwgMTE3OTMwLCAxMTc5MzksIDExNzk0NywgMTE3OTU1LCAxMTc5NjQsIDExNzk3MywgMTE3OTgyLCAxMTc5OTEsIAotICAgIDExODAwMCwgMTE4MDA5LCAxMTgwMTgsIDExODAyNywgMTE4MDM2LCAxMTgwNDUsIDExODA1NCwgMCwgMTE4MDYxLCAKLSAgICAxMTgwNzAsIDExODA3OCwgMTE4MDg2LCAxMTgwOTUsIDExODEwNCwgMTE4MTEzLCAxMTgxMjIsIDExODEzMSwgMTE4MTQwLCAKLSAgICAxMTgxNDksIDExODE1OCwgMTE4MTY3LCAxMTgxNzYsIDExODE4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4MTkyLCAKLSAgICAxMTgxOTksIDExODIwNCwgMTE4MjA4LCAxMTgyMTIsIDExODIxNiwgMTE4MjIxLCAxMTgyMjYsIDExODIzMSwgMTE4MjM2LCAKLSAgICAxMTgyNDEsIDAsIDAsIDAsIDAsIDAsIDExODI0NiwgMTE4MjUxLCAxMTgyNTcsIDExODI2MywgMTE4MjY5LCAxMTgyNzQsIAotICAgIDExODI4MCwgMTE4Mjg2LCAxMTgyOTIsIDExODI5NywgMTE4MzAzLCAxMTgzMDksIDExODMxNCwgMTE4MzE5LCAxMTgzMjQsIAotICAgIDExODMyOSwgMTE4MzM1LCAxMTgzNDEsIDExODM0NiwgMTE4MzUxLCAxMTgzNTcsIDExODM2MiwgMTE4MzY4LCAxMTgzNzQsIAotICAgIDExODM4MCwgMTE4Mzg2LCAxMTgzOTIsIDExODQwMiwgMTE4NDA5LCAxMTg0MTUsIDExODQxOCwgMCwgMTE4NDIxLCAKLSAgICAxMTg0MjYsIDExODQzMiwgMTE4NDM4LCAxMTg0NDQsIDExODQ0OSwgMTE4NDU1LCAxMTg0NjEsIDExODQ2NywgMTE4NDcyLCAKLSAgICAxMTg0NzgsIDExODQ4NCwgMTE4NDg5LCAxMTg0OTQsIDExODQ5OSwgMTE4NTA0LCAxMTg1MTAsIDExODUxNiwgMTE4NTIxLCAKLSAgICAxMTg1MjYsIDExODUzMiwgMTE4NTM3LCAxMTg1NDMsIDExODU0OSwgMTE4NTU1LCAxMTg1NjEsIDExODU2NywgMTE4NTcwLCAKLSAgICAxMTg1NzMsIDExODU3NiwgMTE4NTc5LCAxMTg1ODIsIDExODU4NSwgMTE4NTkxLCAxMTg1OTgsIDExODYwNSwgMTE4NjEyLCAKLSAgICAxMTg2MTgsIDExODYyNSwgMTE4NjMyLCAxMTg2MzksIDExODY0NSwgMTE4NjUyLCAxMTg2NTksIDExODY2NSwgMTE4NjcxLCAKLSAgICAxMTg2NzcsIDExODY4MywgMTE4NjkwLCAxMTg2OTcsIDExODcwMywgMTE4NzA5LCAxMTg3MTYsIDExODcyMiwgMTE4NzI5LCAKLSAgICAxMTg3MzYsIDExODc0MywgMTE4NzUwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTg3NTcsIDExODc2MywgMTE4NzcwLCAxMTg3NzcsIAotICAgIDExODc4NCwgMTE4NzkwLCAxMTg3OTcsIDExODgwNCwgMTE4ODExLCAxMTg4MTcsIDExODgyNCwgMTE4ODMxLCAxMTg4MzcsIAotICAgIDExODg0MywgMTE4ODQ5LCAxMTg4NTUsIDExODg2MiwgMTE4ODY5LCAxMTg4NzUsIDExODg4MSwgMTE4ODg4LCAxMTg4OTQsIAotICAgIDExODkwMSwgMTE4OTA4LCAxMTg5MTUsIDExODkyMiwgMTE4OTI5LCAxMTg5MzgsIDExODk0MiwgMTE4OTQ1LCAxMTg5NDksIAotICAgIDExODk1MywgMTE4OTU3LCAxMTg5NjAsIDExODk2MywgMTE4OTY2LCAxMTg5NjksIDExODk3MiwgMTE4OTc1LCAxMTg5NzgsIAotICAgIDExODk4MSwgMTE4OTg0LCAxMTg5OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODk5MywgMTE5MDAwLCAxMTkwMDgsIDExOTAxNiwgMTE5MDI0LCAKLSAgICAxMTkwMzEsIDExOTAzOSwgMTE5MDQ3LCAxMTkwNTUsIDExOTA2MiwgMTE5MDcwLCAxMTkwNzgsIDExOTA4NSwgMTE5MDkyLCAKLSAgICAxMTkwOTksIDExOTEwNiwgMTE5MTE0LCAxMTkxMjIsIDExOTEyOSwgMTE5MTM2LCAxMTkxNDQsIDExOTE1MSwgMTE5MTU5LCAKLSAgICAxMTkxNjcsIDExOTE3NSwgMTE5MTgzLCAxMTkxOTEsIDExOTE5NSwgMTE5MTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMTkyMDMsIDExOTIwOSwgMTE5MjE1LCAxMTkyMjEsIDExOTIyNSwgMTE5MjMxLCAxMTkyMzcsIAotICAgIDExOTI0MywgMTE5MjQ5LCAxMTkyNTUsIDExOTI2MSwgMTE5MjY3LCAxMTkyNzMsIDExOTI3OSwgMTE5Mjg1LCAxMTkyOTEsIAotICAgIDExOTI5NywgMTE5MzAzLCAxMTkzMDksIDExOTMxNSwgMTE5MzIxLCAxMTkzMjcsIDExOTMzMywgMTE5MzM5LCAxMTkzNDUsIAotICAgIDExOTM1MSwgMTE5MzU3LCAxMTkzNjMsIDExOTM2OSwgMTE5Mzc1LCAxMTkzODEsIDExOTM4NywgMTE5MzkzLCAxMTkzOTksIAotICAgIDExOTQwNSwgMTE5NDExLCAxMTk0MTcsIDExOTQyMywgMTE5NDI5LCAxMTk0MzUsIDExOTQ0MSwgMTE5NDQ3LCAxMTk0NTMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDExOTQ1OSwgMTE5NDcwLCAxMTk0ODEsIDExOTQ5MiwgMTE5NTAzLCAxMTk1MTQsIDExOTUyNSwgCi0gICAgMTE5NTM2LCAxMTk1NDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExOTU1OCwgMTE5NTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTk1NjYsIDExOTU2OCwgMTE5NTcwLCAKLSAgICAxMTk1NzQsIDExOTU3OSwgMTE5NTg0LCAxMTk1ODYsIDExOTU5MiwgMTE5NTk3LCAxMTk1OTksIDExOTYwNSwgMTE5NjA5LCAKLSAgICAxMTk2MTEsIDExOTYxNSwgMTE5NjIxLCAxMTk2MjcsIDExOTYzMywgMTE5NjM4LCAxMTk2NDIsIDExOTY0OSwgMTE5NjU2LCAKLSAgICAxMTk2NjMsIDExOTY2OCwgMTE5Njc1LCAxMTk2ODIsIDExOTY4OSwgMTE5NjkzLCAxMTk2OTksIDExOTcwOCwgMTE5NzE3LCAKLSAgICAxMTk3MjQsIDExOTcyOSwgMTE5NzMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMTk3MzcsIDExOTczOSwgMTE5NzQxLCAxMTk3NDUsIDExOTc0OSwgMTE5NzUzLCAwLCAxMTk3NTUsIDExOTc1NywgCi0gICAgMTE5NzYxLCAxMTk3NjMsIDExOTc2NSwgMTE5NzY3LCAxMTk3NjksIDExOTc3NCwgMTE5Nzc5LCAxMTk3ODEsIDExOTc4NywgCi0gICAgMTE5NzkxLCAxMTk3OTUsIDExOTgwMywgMTE5ODA1LCAxMTk4MDcsIDExOTgwOSwgMTE5ODExLCAxMTk4MTMsIDExOTgxNSwgCi0gICAgMTE5ODE3LCAxMTk4MTksIDExOTgyMSwgMTE5ODIzLCAxMTk4MjcsIDExOTgzMSwgMTE5ODMzLCAxMTk4MzUsIDExOTgzNywgCi0gICAgMTE5ODM5LCAxMTk4NDEsIDExOTg0NiwgMTE5ODUyLCAxMTk4NTYsIDExOTg2MCwgMTE5ODY0LCAxMTk4NjgsIDExOTg3MywgCi0gICAgMTE5ODc3LCAxMTk4NzksIDExOTg4MSwgMTE5ODg1LCAxMTk4OTEsIDExOTg5MywgMTE5ODk1LCAxMTk4OTcsIDExOTkwMSwgCi0gICAgMTE5OTEwLCAxMTk5MTYsIDExOTkyMCwgMTE5OTI0LCAxMTk5MjYsIDExOTkyOCwgMTE5OTMxLCAxMTk5MzMsIDExOTkzNSwgCi0gICAgMTE5OTM3LCAxMTk5NDEsIDExOTk0MywgMTE5OTQ3LCAxMTk5NTIsIDExOTk1NCwgMTE5OTU5LCAxMTk5NjUsIDExOTk3MiwgCi0gICAgMTE5OTc2LCAxMTk5ODAsIDExOTk4NCwgMTE5OTg4LCAxMTk5OTQsIDAsIDAsIDAsIDExOTk5OCwgMTIwMDAwLCAxMjAwMDQsIAotICAgIDEyMDAwOCwgMTIwMDEwLCAxMjAwMTQsIDEyMDAxOCwgMTIwMDIwLCAxMjAwMjQsIDEyMDAyNiwgMTIwMDMwLCAxMjAwMzQsIAotICAgIDEyMDAzOCwgMTIwMDQyLCAxMjAwNDYsIDEyMDA1MCwgMTIwMDU0LCAxMjAwNTgsIDEyMDA2NCwgMTIwMDY4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjAwNzIsIDEyMDA3NiwgMTIwMDgwLCAxMjAwODQsIDEyMDA5MSwgCi0gICAgMTIwMDkzLCAxMjAwOTcsIDEyMDA5OSwgMTIwMTAxLCAxMjAxMDUsIDEyMDEwOSwgMTIwMTEzLCAxMjAxMTUsIDEyMDExOSwgCi0gICAgMTIwMTIzLCAxMjAxMjcsIDEyMDEzMSwgMTIwMTM1LCAxMjAxMzcsIDEyMDE0MSwgMTIwMTQzLCAxMjAxNDksIDEyMDE1MiwgCi0gICAgMTIwMTU3LCAxMjAxNTksIDEyMDE2MSwgMTIwMTY0LCAxMjAxNjYsIDEyMDE2OCwgMTIwMTcxLCAxMjAxNzgsIDEyMDE4NSwgCi0gICAgMTIwMTkyLCAxMjAxOTcsIDEyMDIwMSwgMTIwMjAzLCAxMjAyMDUsIDAsIDEyMDIwNywgMTIwMjA5LCAxMjAyMTMsIAotICAgIDEyMDIxNywgMTIwMjIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMjAyMjMsIDEyMDIyNywgMTIwMjMyLCAxMjAyMzYsIDEyMDI0MiwgMTIwMjQ4LCAxMjAyNTAsIDEyMDI1MiwgCi0gICAgMTIwMjU4LCAxMjAyNjAsIDEyMDI2NCwgMTIwMjY4LCAxMjAyNzAsIDEyMDI3NCwgMTIwMjc2LCAxMjAyODAsIDEyMDI4NCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwMjg4LCAxMjAyOTAsIDEyMDI5MiwgCi0gICAgMTIwMjk0LCAxMjAyOTgsIDEyMDMwMCwgMTIwMzAyLCAxMjAzMDQsIDEyMDMwNiwgMTIwMzA4LCAxMjAzMTAsIDEyMDMxMiwgCi0gICAgMTIwMzE0LCAxMjAzMTYsIDEyMDMxOCwgMTIwMzIwLCAxMjAzMjIsIDEyMDMyNCwgMTIwMzI2LCAxMjAzMjgsIDEyMDMzMCwgCi0gICAgMTIwMzMyLCAxMjAzMzQsIDEyMDMzNiwgMTIwMzM4LCAxMjAzNDAsIDEyMDM0MiwgMTIwMzQ2LCAxMjAzNDgsIDEyMDM1MCwgCi0gICAgMTIwMzUyLCAxMjAzNTYsIDEyMDM1OCwgMTIwMzYyLCAxMjAzNjQsIDEyMDM2NiwgMTIwMzcwLCAxMjAzNzQsIDEyMDM4MCwgCi0gICAgMTIwMzgyLCAxMjAzODQsIDEyMDM4NiwgMTIwMzg4LCAxMjAzOTIsIDEyMDM5NiwgMTIwMzk4LCAxMjA0MDIsIDEyMDQwNiwgCi0gICAgMTIwNDEwLCAxMjA0MTQsIDEyMDQxOCwgMTIwNDIyLCAxMjA0MjYsIDEyMDQzMCwgMTIwNDM0LCAxMjA0MzgsIDEyMDQ0MiwgCi0gICAgMTIwNDQ2LCAxMjA0NTAsIDEyMDQ1NCwgMTIwNDU4LCAxMjA0NjIsIDEyMDQ2NiwgMCwgMTIwNDcwLCAwLCAxMjA0NzIsIAotICAgIDEyMDQ3NCwgMTIwNDc2LCAxMjA0NzgsIDEyMDQ4MCwgMTIwNDg4LCAxMjA0OTYsIDEyMDUwNCwgMTIwNTEyLCAxMjA1MTcsIAotICAgIDEyMDUyMiwgMTIwNTI3LCAxMjA1MzEsIDEyMDUzNSwgMTIwNTQwLCAxMjA1NDUsIDEyMDU0NywgMTIwNTUxLCAxMjA1NTMsIAotICAgIDEyMDU1NSwgMTIwNTU3LCAxMjA1NTksIDEyMDU2MSwgMTIwNTYzLCAxMjA1NjUsIDEyMDU2OSwgMTIwNTcxLCAxMjA1NzMsIAotICAgIDEyMDU3NSwgMTIwNTc5LCAxMjA1ODMsIDEyMDU4NywgMTIwNTkxLCAxMjA1OTUsIDEyMDU5NywgMTIwNjAzLCAxMjA2MDksIAotICAgIDEyMDYxMSwgMTIwNjEzLCAxMjA2MTUsIDEyMDYxNywgMTIwNjE5LCAxMjA2MjgsIDEyMDYzNSwgMTIwNjQyLCAxMjA2NDYsIAotICAgIDEyMDY1MywgMTIwNjU4LCAxMjA2NjUsIDEyMDY3NCwgMTIwNjc5LCAxMjA2ODMsIDEyMDY4NywgMTIwNjg5LCAxMjA2OTMsIAotICAgIDEyMDY5NSwgMTIwNjk5LCAxMjA3MDMsIDEyMDcwNSwgMTIwNzA5LCAxMjA3MTMsIDEyMDcxNywgMTIwNzE5LCAxMjA3MjEsIAotICAgIDEyMDcyNywgMTIwNzI5LCAxMjA3MzEsIDEyMDczMywgMTIwNzM3LCAxMjA3NDEsIDEyMDc0MywgMTIwNzQ3LCAxMjA3NDksIAotICAgIDEyMDc1MSwgMTIwNzU0LCAxMjA3NTgsIDEyMDc2MCwgMTIwNzY0LCAxMjA3NjYsIDEyMDc2OCwgMTIwNzczLCAxMjA3NzUsIAotICAgIDEyMDc3OSwgMTIwNzgzLCAxMjA3ODYsIDEyMDc5MCwgMTIwNzk0LCAxMjA3OTgsIDEyMDgwMiwgMTIwODA2LCAxMjA4MTAsIAotICAgIDEyMDgxNCwgMTIwODE5LCAxMjA4MjMsIDEyMDgyNywgMTIwODM2LCAxMjA4NDEsIDEyMDg0NCwgMTIwODQ2LCAxMjA4NDksIAotICAgIDEyMDg1MiwgMTIwODU3LCAxMjA4NTksIDEyMDg2MiwgMTIwODY3LCAxMjA4NzEsIDEyMDg3NCwgMTIwODc4LCAxMjA4ODIsIAotICAgIDEyMDg4NSwgMTIwODkwLCAxMjA4OTQsIDEyMDg5OCwgMTIwOTAyLCAxMjA5MDYsIDEyMDkxMiwgMTIwOTE4LCAxMjA5MjQsIAotICAgIDEyMDkzMCwgMTIwOTM1LCAxMjA5NDYsIDEyMDk0OCwgMTIwOTUyLCAxMjA5NTQsIDEyMDk1NiwgMTIwOTYwLCAxMjA5NjQsIAotICAgIDEyMDk2NiwgMTIwOTcwLCAxMjA5NzYsIDEyMDk4MSwgMTIwOTg3LCAxMjA5ODksIDEyMDk5MywgMTIwOTk3LCAxMjEwMDQsIAotICAgIDEyMTAxMSwgMTIxMDE1LCAxMjEwMTcsIDEyMTAxOSwgMTIxMDIzLCAxMjEwMjUsIDEyMTAyOSwgMTIxMDMzLCAxMjEwMzcsIAotICAgIDEyMTAzOSwgMTIxMDQxLCAxMjEwNDgsIDEyMTA1MiwgMTIxMDU2LCAxMjEwNjAsIDEyMTA2NCwgMTIxMDY4LCAxMjEwNzAsIAotICAgIDEyMTA3NCwgMTIxMDc2LCAxMjEwNzgsIDEyMTA4MiwgMTIxMDg0LCAxMjEwODgsIDEyMTA5MiwgMTIxMDk4LCAxMjExMDIsIAotICAgIDEyMTEwNiwgMTIxMTEwLCAxMjExMTIsIDEyMTExNSwgMTIxMTE5LCAxMjExMjYsIDEyMTEzNSwgMTIxMTQ0LCAxMjExNTMsIAotICAgIDEyMTE2MiwgMTIxMTY0LCAxMjExNjgsIDEyMTE3MCwgMTIxMTc0LCAxMjExODUsIDEyMTE4OSwgMTIxMTk1LCAxMjEyMDEsIAotICAgIDEyMTIwNiwgMCwgMTIxMjA4LCAxMjEyMTIsIDEyMTIxNCwgMTIxMjE2LCAwLCAwLCAwLCAxMjEyMTgsIDEyMTIyMywgCi0gICAgMTIxMjM0LCAxMjEyNTAsIDEyMTI2MywgMTIxMjc2LCAxMjEyODAsIDEyMTI4NCwgMTIxMjkwLCAxMjEyOTIsIDEyMTMwMCwgCi0gICAgMTIxMzA4LCAxMjEzMTAsIDEyMTMxNCwgMTIxMzIwLCAxMjEzMjYsIDEyMTMzMywgMTIxMzQwLCAxMjEzNDIsIDEyMTM0NCwgCi0gICAgMTIxMzQ4LCAxMjEzNTAsIDEyMTM1NiwgMTIxMzU4LCAxMjEzNjEsIDEyMTM2NSwgMTIxMzcxLCAxMjEzNzcsIDEyMTM4OCwgCi0gICAgMTIxMzk0LCAxMjE0MDEsIDEyMTQwOSwgMTIxNDEzLCAxMjE0MjEsIDEyMTQyOSwgMTIxNDM1LCAxMjE0NDEsIDEyMTQ0OCwgCi0gICAgMTIxNDUwLCAxMjE0NTQsIDEyMTQ1NiwgMTIxNDU4LCAxMjE0NjMsIDEyMTQ2NSwgMTIxNDY3LCAxMjE0NjksIDEyMTQ3MSwgCi0gICAgMTIxNDc1LCAxMjE0ODYsIDEyMTQ5MiwgMTIxNDk2LCAxMjE1MDAsIDEyMTUwNCwgMTIxNTEwLCAxMjE1MTYsIDEyMTUyMiwgCi0gICAgMTIxNTI4LCAxMjE1MzMsIDEyMTUzOCwgMTIxNTQ0LCAxMjE1NTAsIDEyMTU1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIxNTY0LCAxMjE1NzEsIDEyMTU3OCwgMTIxNTg1LCAxMjE1OTMsIAotICAgIDEyMTYwMSwgMTIxNjA5LCAxMjE2MTcsIDEyMTYyNSwgMTIxNjMzLCAxMjE2NDEsIDEyMTY0OSwgMTIxNjU3LCAxMjE2NjMsIAotICAgIDEyMTY2OSwgMTIxNjc1LCAxMjE2ODEsIDEyMTY4NywgMTIxNjkzLCAxMjE2OTksIDEyMTcwNSwgMTIxNzExLCAxMjE3MTcsIAotICAgIDEyMTcyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwNzEwLCAxMTA3MTUsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEyMTcyOSwgMTIxNzMzLCAxMjE3MzcsIDEyMTc0MiwgMTIxNzQ3LCAwLCAxMjE3NDksIDEyMTc1OCwgCi0gICAgMTIxNzY2LCAxMjE3NzUsIDEyMTc4OSwgMTIxODAzLCAxMjE4MTcsIDEyMTgyNCwgMTIxODMxLCAxMjE4MzUsIDEyMTg0NCwgCi0gICAgMTIxODUyLCAxMjE4NTYsIDEyMTg2NSwgMTIxODcyLCAxMjE4NzYsIDAsIDEyMTg4MCwgMTIxODg0LCAxMjE4OTEsIDAsIAotICAgIDEyMTg5NSwgMCwgMTIxODk5LCAwLCAxMjE5MDYsIDAsIDEyMTkxNSwgMTIxOTI3LCAxMjE5MzksIDAsIDEyMTk0MywgCi0gICAgMTIxOTQ3LCAxMjE5NTEsIDEyMTk1NSwgMTIxOTU5LCAxMjE5NjcsIDAsIDAsIDEyMTk3NSwgMTIxOTc5LCAxMjE5ODMsIAotICAgIDEyMTk4NywgMCwgMTIxOTkxLCAwLCAwLCAxMjE5OTcsIDEyMjAwOSwgMTIyMDE3LCAxMjIwMjEsIDAsIDEyMjAyNSwgCi0gICAgMTIyMDI5LCAxMjIwMzUsIDEyMjA0MiwgMTIyMDUzLCAxMjIwNjMsIDEyMjA3NCwgMTIyMDg1LCAxMjIwOTQsIDEyMjEwNSwgCi0gICAgMTIyMTExLCAxMjIxMTcsIDAsIDAsIDAsIDAsIDEyMjEyMywgMTIyMTMyLCAxMjIxMzksIDEyMjE0NSwgMTIyMTQ5LCAKLSAgICAxMjIxNTMsIDEyMjE1NywgMTIyMTY2LCAxMjIxNzgsIDEyMjE4MiwgMTIyMTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTA3MjEsIDExMDcyNiwgMTEwNzMxLCAxMTA3MzYsIDExMDc0MywgMTEwNzUwLCAxMTA3NTcsIDExMDc2NCwgMTEwNzY5LCAKKyAgICAxMTA3NzQsIDExMDc3OSwgMTEwNzg0LCAxMTA3OTEsIDExMDc5NiwgMTEwODAzLCAxMTA4MTAsIDExMDgxNSwgMTEwODIwLCAKKyAgICAxMTA4MjUsIDExMDgzMiwgMTEwODM3LCAxMTA4NDIsIDExMDg0OSwgMTEwODU2LCAxMTA4NjEsIDExMDg2NiwgMTEwODcxLCAKKyAgICAxMTA4NzgsIDExMDg4NSwgMTEwODkyLCAxMTA4OTcsIDExMDkwMiwgMTEwOTA5LCAxMTA5MTYsIDExMDkyMywgMTEwOTMwLCAKKyAgICAxMTA5MzUsIDExMDk0MCwgMTEwOTQ1LCAxMTA5NTIsIDExMDk1NywgMTEwOTYyLCAxMTA5NjcsIDExMDk3NCwgMTEwOTgzLCAKKyAgICAxMTA5OTAsIDExMDk5NSwgMTExMDAwLCAxMTEwMDUsIDExMTAxMCwgMTExMDE1LCAxMTEwMjAsIDExMTAyOSwgMTExMDM2LCAKKyAgICAxMTEwNDEsIDExMTA0OCwgMTExMDU1LCAxMTEwNjAsIDExMTA2NSwgMTExMDcwLCAxMTEwNzcsIDExMTA4MiwgMTExMDg5LCAKKyAgICAxMTEwOTYsIDExMTEwMSwgMTExMTA2LCAxMTExMTEsIDExMTExOCwgMTExMTI1LCAxMTExMzAsIDExMTEzNSwgMTExMTQyLCAKKyAgICAxMTExNDksIDExMTE1NiwgMTExMTYxLCAxMTExNjYsIDExMTE3MSwgMTExMTc2LCAxMTExODMsIDExMTE5MiwgMTExMjAxLCAKKyAgICAxMTEyMDYsIDExMTIxMywgMTExMjIyLCAxMTEyMjcsIDExMTIzMiwgMTExMjM3LCAxMTEyNDIsIDExMTI0OSwgMTExMjU2LCAKKyAgICAxMTEyNjMsIDExMTI3MCwgMTExMjc1LCAxMTEyODAsIDExMTI4NSwgMTExMjkyLCAxMTEyOTksIDExMTMwNiwgMTExMzExLCAKKyAgICAxMTEzMTYsIDExMTMyMywgMTExMzI4LCAxMTEzMzUsIDExMTM0MCwgMTExMzQ3LCAxMTEzNTIsIDExMTM1OSwgMTExMzY2LCAKKyAgICAxMTEzNzEsIDExMTM3NiwgMTExMzgxLCAxMTEzODYsIDExMTM5MSwgMTExMzk2LCAxMTE0MDEsIDExMTQwNiwgMTExNDExLCAKKyAgICAxMTE0MTgsIDExMTQyNSwgMTExNDMyLCAxMTE0MzksIDExMTQ0NiwgMTExNDU1LCAxMTE0NjAsIDExMTQ2NSwgMTExNDcyLCAKKyAgICAxMTE0NzksIDExMTQ4NCwgMTExNDkxLCAxMTE0OTgsIDExMTUwNSwgMTExNTEyLCAxMTE1MTksIDExMTUyNiwgMTExNTMxLCAKKyAgICAxMTE1MzYsIDExMTU0MSwgMTExNTQ2LCAxMTE1NTEsIDExMTU2MCwgMTExNTY5LCAxMTE1NzgsIDExMTU4NywgMTExNTk2LCAKKyAgICAxMTE2MDUsIDExMTYxNCwgMTExNjIzLCAxMTE2MjgsIDExMTYzOSwgMTExNjUwLCAxMTE2NTksIDExMTY2NCwgMTExNjY5LCAKKyAgICAxMTE2NzQsIDExMTY3OSwgMTExNjg4LCAxMTE2OTUsIDExMTcwMiwgMTExNzA5LCAxMTE3MTYsIDExMTcyMywgMTExNzMwLCAKKyAgICAxMTE3MzksIDExMTc0OCwgMTExNzU5LCAxMTE3NjgsIDExMTc3OSwgMTExNzg4LCAxMTE3OTUsIDExMTgwNCwgMTExODE1LCAKKyAgICAxMTE4MjQsIDExMTgzMywgMTExODQyLCAxMTE4NTEsIDExMTg1OCwgMTExODY1LCAxMTE4NzIsIDExMTg4MSwgMTExODkwLCAKKyAgICAxMTE5MDEsIDExMTkxMCwgMTExOTE5LCAxMTE5MzAsIDExMTkzNSwgMTExOTQwLCAxMTE5NTEsIDExMTk1OSwgMTExOTY4LCAKKyAgICAxMTE5NzcsIDExMTk4NiwgMTExOTk3LCAxMTIwMDYsIDExMjAxNSwgMTEyMDI2LCAxMTIwMzcsIDExMjA0OCwgMTEyMDU5LCAKKyAgICAxMTIwNzAsIDExMjA4MSwgMTEyMDg4LCAxMTIwOTUsIDExMjEwMiwgMTEyMTA5LCAxMTIxMjAsIDExMjEyOSwgMTEyMTM2LCAKKyAgICAxMTIxNDMsIDExMjE1MCwgMTEyMTYxLCAxMTIxNzIsIDExMjE4MywgMTEyMTk0LCAxMTIyMDUsIDExMjIxNiwgMTEyMjI3LCAKKyAgICAxMTIyMzgsIDExMjI0NSwgMTEyMjUyLCAxMTIyNjEsIDExMjI3MCwgMTEyMjc3LCAxMTIyODQsIDExMjI5MSwgMTEyMzAwLCAKKyAgICAxMTIzMDksIDExMjMxOCwgMTEyMzI1LCAxMTIzMzQsIDExMjM0MywgMTEyMzUyLCAxMTIzNTksIDExMjM2NiwgMTEyMzcxLCAKKyAgICAxMTIzNzcsIDExMjM4NCwgMTEyMzkxLCAxMTIzOTgsIDExMjQwNSwgMTEyNDEyLCAxMTI0MTksIDExMjQyOCwgMTEyNDM3LCAKKyAgICAxMTI0NDYsIDExMjQ1NSwgMTEyNDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTI0NzEsIDExMjQ3NywgCisgICAgMTEyNDgyLCAxMTI0ODcsIDExMjQ5NCwgMTEyNTAwLCAxMTI1MDYsIDExMjUxMiwgMTEyNTE4LCAxMTI1MjQsIDExMjUzMCwgCisgICAgMTEyNTM2LCAxMTI1NDAsIDExMjU0NCwgMTEyNTUwLCAxMTI1NTYsIDExMjU2MiwgMTEyNTY2LCAxMTI1NzEsIDExMjU3NiwgCisgICAgMTEyNTgwLCAxMTI1ODQsIDExMjU4NywgMTEyNTkzLCAxMTI1OTksIDExMjYwNSwgMTEyNjExLCAxMTI2MTcsIDExMjYyMywgCisgICAgMTEyNjI5LCAxMTI2MzUsIDExMjY0MSwgMTEyNjUxLCAxMTI2NjEsIDExMjY2NywgMTEyNjczLCAxMTI2ODMsIDExMjY5MywgCisgICAgMTEyNjk5LCAwLCAwLCAxMTI3MDUsIDExMjcxMywgMTEyNzE4LCAxMTI3MjMsIDExMjcyOSwgMTEyNzM1LCAxMTI3NDEsIAorICAgIDExMjc0NywgMTEyNzUzLCAxMTI3NTksIDExMjc2NiwgMTEyNzczLCAxMTI3NzksIDExMjc4NSwgMTEyNzkxLCAxMTI3OTcsIAorICAgIDExMjgwMywgMTEyODA5LCAxMTI4MTUsIDExMjgyMSwgMTEyODI2LCAxMTI4MzIsIDExMjgzOCwgMTEyODQ0LCAxMTI4NTAsIAorICAgIDExMjg1NiwgMTEyODY1LCAxMTI4NzEsIDExMjg3NiwgMTEyODg0LCAxMTI4OTEsIDExMjg5OCwgMTEyOTA3LCAxMTI5MTYsIAorICAgIDExMjkyNSwgMTEyOTM0LCAxMTI5NDMsIDExMjk1MiwgMTEyOTYxLCAxMTI5NzAsIDExMjk4MCwgMTEyOTkwLCAxMTI5OTgsIAorICAgIDExMzAwNiwgMTEzMDE1LCAxMTMwMjQsIDExMzAzMCwgMTEzMDM2LCAxMTMwNDIsIDExMzA0OCwgMTEzMDU2LCAxMTMwNjQsIAorICAgIDExMzA2OCwgMTEzMDc0LCAxMTMwNzksIDExMzA4NSwgMTEzMDkxLCAxMTMwOTcsIDExMzEwMywgMTEzMTA5LCAxMTMxMTgsIAorICAgIDExMzEyMywgMTEzMTMwLCAxMTMxMzUsIDExMzE0MCwgMTEzMTQ1LCAxMTMxNTEsIDExMzE1NywgMTEzMTYzLCAxMTMxNzAsIAorICAgIDExMzE3NSwgMTEzMTgwLCAxMTMxODUsIDExMzE5MCwgMTEzMTk1LCAxMTMyMDEsIDExMzIwNywgMTEzMjEzLCAxMTMyMTksIAorICAgIDExMzIyNSwgMTEzMjMxLCAxMTMyMzcsIDExMzI0MywgMTEzMjQ4LCAxMTMyNTMsIDExMzI1OCwgMTEzMjYzLCAxMTMyNjgsIAorICAgIDExMzI3MywgMTEzMjc4LCAxMTMyODMsIDExMzI4OSwgMTEzMjk1LCAxMTMzMDAsIDExMzMwNSwgMTEzMzEwLCAxMTMzMTUsIAorICAgIDExMzMyMCwgMTEzMzI2LCAxMTMzMzMsIDExMzMzNywgMTEzMzQxLCAxMTMzNDUsIDExMzM0OSwgMTEzMzUzLCAxMTMzNTcsIAorICAgIDExMzM2MSwgMTEzMzY1LCAxMTMzNzMsIDExMzM4MywgMTEzMzg3LCAxMTMzOTEsIDExMzM5NywgMTEzNDAzLCAxMTM0MDksIAorICAgIDExMzQxNSwgMTEzNDIxLCAxMTM0MjcsIDExMzQzMywgMTEzNDM5LCAxMTM0NDUsIDExMzQ1MSwgMTEzNDU3LCAxMTM0NjMsIAorICAgIDExMzQ2OSwgMTEzNDc1LCAxMTM0NzksIDExMzQ4MywgMTEzNDkwLCAxMTM0OTYsIDExMzUwMiwgMTEzNTA4LCAxMTM1MTMsIAorICAgIDExMzUyMCwgMTEzNTI1LCAxMTM1MzEsIDExMzUzNywgMTEzNTQzLCAxMTM1NDksIDExMzU1NCwgMTEzNTU4LCAxMTM1NjQsIAorICAgIDExMzU2OCwgMTEzNTcyLCAxMTM1NzYsIDExMzU4MiwgMTEzNTg4LCAxMTM1OTIsIDExMzU5OCwgMTEzNjA0LCAxMTM2MTAsIAorICAgIDExMzYxNiwgMTEzNjIyLCAxMTM2MzAsIDExMzYzOCwgMTEzNjQ0LCAxMTM2NTAsIDExMzY1NiwgMTEzNjYyLCAxMTM2NzQsIAorICAgIDExMzY4NiwgMTEzNzAwLCAxMTM3MTIsIDExMzcyNCwgMTEzNzM4LCAxMTM3NTIsIDExMzc2NiwgMTEzNzcwLCAxMTM3NzgsIAorICAgIDExMzc4NiwgMTEzNzkxLCAxMTM3OTUsIDExMzc5OSwgMTEzODAzLCAxMTM4MDcsIDExMzgxMSwgMTEzODE1LCAxMTM4MTksIAorICAgIDExMzgyNSwgMTEzODMxLCAxMTM4MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMzg0MywgMTEzODQ5LCAKKyAgICAxMTM4NTUsIDExMzg2MSwgMTEzODY3LCAxMTM4NzMsIDExMzg3OSwgMTEzODg1LCAxMTM4OTEsIDExMzg5NywgMTEzOTAzLCAKKyAgICAxMTM5MDksIDExMzkxNSwgMTEzOTIxLCAxMTM5MjcsIDExMzkzMywgMTEzOTM5LCAxMTM5NDUsIDExMzk1MSwgMTEzOTU3LCAKKyAgICAxMTM5NjMsIDExMzk2OSwgMTEzOTc1LCAxMTM5ODEsIDExMzk4NywgMTEzOTkzLCAxMTM5OTksIDExNDAwNSwgMTE0MDExLCAKKyAgICAxMTQwMTcsIDExNDAyMywgMTE0MDI5LCAxMTQwMzUsIDExNDA0MSwgMTE0MDQ3LCAxMTQwNTMsIDExNDA1OSwgMTE0MDY1LCAKKyAgICAxMTQwNzEsIDExNDA3NywgMTE0MDgzLCAxMTQwODksIDExNDA5NSwgMTE0MTAxLCAxMTQxMDcsIDExNDExMywgMTE0MTE5LCAKKyAgICAxMTQxMjUsIDExNDEzMSwgMTE0MTM3LCAxMTQxNDMsIDExNDE0OSwgMTE0MTU1LCAxMTQxNjEsIDExNDE2NywgMTE0MTczLCAKKyAgICAxMTQxNzksIDExNDE4NSwgMTE0MTkxLCAxMTQxOTcsIDExNDIwMywgMTE0MjA5LCAxMTQyMTUsIDExNDIyMSwgMTE0MjI3LCAKKyAgICAxMTQyMzMsIDExNDIzOSwgMTE0MjQ0LCAxMTQyNDksIDExNDI1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyMTk2LCAxMjIxOTgsIDEyMjIwMCwgCi0gICAgMTIyMjA0LCAxMjIyMDgsIDEyMjIxMiwgMTIyMjIxLCAxMjIyMjMsIDEyMjIyNSwgMTIyMjI4LCAxMjIyMzAsIDEyMjIzMiwgCi0gICAgMTIyMjM2LCAxMjIyMzgsIDEyMjI0MiwgMTIyMjQ0LCAxMjIyNDgsIDEyMjI1MCwgMTIyMjUyLCAxMjIyNTYsIDEyMjI2MCwgCi0gICAgMTIyMjY2LCAxMjIyNjgsIDEyMjI3MiwgMTIyMjc0LCAxMjIyNzgsIDEyMjI4MiwgMTIyMjg2LCAxMjIyOTAsIDEyMjI5MiwgCi0gICAgMTIyMjk0LCAxMjIyOTgsIDEyMjMwMiwgMTIyMzA2LCAxMjIzMTAsIDEyMjMxMiwgMTIyMzE0LCAxMjIzMTYsIDEyMjMyMSwgCi0gICAgMTIyMzI2LCAxMjIzMjksIDEyMjMzNywgMTIyMzQ1LCAxMjIzNDcsIDEyMjM1MiwgMTIyMzU1LCAxMjIzNjAsIDEyMjM3MSwgCi0gICAgMTIyMzc4LCAxMjIzODMsIDEyMjM4OCwgMTIyMzkwLCAxMjIzOTQsIDEyMjM5NiwgMTIyNDAwLCAxMjI0MDIsIDEyMjQwNiwgCi0gICAgMTIyNDEwLCAxMjI0MTMsIDEyMjQxNiwgMTIyNDE4LCAxMjI0MjEsIDEyMjQyMywgMTIyNDI3LCAxMjI0MjksIDEyMjQzMSwgCi0gICAgMTIyNDMzLCAxMjI0MzcsIDEyMjQzOSwgMTIyNDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTQyNTgsIDExNDI2MywgMTE0MjcwLCAxMTQyNzcsIDExNDI4NCwgMTE0MjkxLCAxMTQyOTYsIDExNDMwMCwgMTE0MzA2LCAKKyAgICAxMTQzMTAsIDExNDMxNCwgMTE0MzIwLCAxMTQzMjQsIDExNDMyOCwgMTE0MzMyLCAxMTQzMzgsIDExNDM0NSwgMTE0MzQ5LCAKKyAgICAxMTQzNTMsIDExNDM1NywgMTE0MzYxLCAxMTQzNjUsIDExNDM2OSwgMTE0Mzc1LCAxMTQzNzksIDExNDM4MywgMTE0Mzg3LCAKKyAgICAxMTQzOTEsIDExNDM5NSwgMTE0Mzk5LCAxMTQ0MDMsIDExNDQwNywgMTE0NDExLCAxMTQ0MTUsIDExNDQxOSwgMTE0NDIzLCAKKyAgICAxMTQ0MjgsIDExNDQzMiwgMTE0NDM2LCAxMTQ0NDAsIDExNDQ0NCwgMTE0NDQ4LCAxMTQ0NTIsIDExNDQ1NiwgMTE0NDYwLCAKKyAgICAxMTQ0NjQsIDExNDQ3MSwgMTE0NDc1LCAxMTQ0ODMsIDExNDQ4NywgMTE0NDkxLCAxMTQ0OTUsIDExNDQ5OSwgMTE0NTAzLCAKKyAgICAxMTQ1MDcsIDExNDUxMSwgMTE0NTE4LCAxMTQ1MjIsIDExNDUyNiwgMTE0NTMwLCAxMTQ1MzQsIDExNDUzOCwgMTE0NTQ0LCAKKyAgICAxMTQ1NDgsIDExNDU1NCwgMTE0NTU4LCAxMTQ1NjIsIDExNDU2NiwgMTE0NTcwLCAxMTQ1NzQsIDExNDU3OCwgMTE0NTgyLCAKKyAgICAxMTQ1ODYsIDExNDU5MCwgMTE0NTk0LCAxMTQ1OTgsIDExNDYwMiwgMTE0NjA2LCAxMTQ2MTAsIDExNDYxNCwgMTE0NjE4LCAKKyAgICAxMTQ2MjIsIDExNDYyNiwgMTE0NjMwLCAxMTQ2MzgsIDExNDY0MiwgMTE0NjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMTQ2NTAsIDExNDY1OCwgMTE0NjY2LCAxMTQ2NzQsIDExNDY4MiwgMTE0NjkwLCAxMTQ2OTgsIDExNDcwNiwgCisgICAgMTE0NzE0LCAxMTQ3MjIsIDExNDczMCwgMTE0NzM4LCAxMTQ3NDYsIDExNDc1NCwgMTE0NzYyLCAxMTQ3NzAsIDExNDc3OCwgCisgICAgMTE0Nzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ3OTQsIDExNDc5OCwgMTE0ODAzLCAKKyAgICAxMTQ4MDgsIDExNDgxMywgMTE0ODE3LCAxMTQ4MjIsIDExNDgyNywgMTE0ODMyLCAxMTQ4MzYsIDExNDg0MSwgMTE0ODQ2LCAKKyAgICAxMTQ4NTAsIDExNDg1NCwgMTE0ODU5LCAxMTQ4NjMsIDExNDg2OCwgMTE0ODczLCAxMTQ4NzcsIDExNDg4MiwgMTE0ODg3LCAKKyAgICAxMTQ4OTEsIDExNDg5NiwgMTE0OTAxLCAxMTQ5MDYsIDExNDkxMSwgMTE0OTE2LCAxMTQ5MjAsIDExNDkyNSwgMTE0OTMwLCAKKyAgICAxMTQ5MzUsIDExNDkzOSwgMTE0OTQ0LCAxMTQ5NDksIDExNDk1NCwgMTE0OTU4LCAxMTQ5NjMsIDExNDk2OCwgMTE0OTcyLCAKKyAgICAxMTQ5NzYsIDExNDk4MSwgMTE0OTg1LCAxMTQ5OTAsIDExNDk5NSwgMTE0OTk5LCAxMTUwMDQsIDExNTAwOSwgMTE1MDEzLCAKKyAgICAxMTUwMTgsIDExNTAyMywgMTE1MDI4LCAxMTUwMzMsIDExNTAzOCwgMTE1MDQyLCAxMTUwNDcsIDExNTA1MiwgMTE1MDU3LCAKKyAgICAxMTUwNjEsIDExNTA2NiwgMTE1MDcxLCAxMTUwNzYsIDExNTA4MCwgMTE1MDg1LCAxMTUwOTAsIDExNTA5NCwgMTE1MDk4LCAKKyAgICAxMTUxMDMsIDExNTEwNywgMTE1MTEyLCAxMTUxMTcsIDExNTEyMSwgMTE1MTI2LCAxMTUxMzEsIDExNTEzNSwgMTE1MTQwLCAKKyAgICAxMTUxNDUsIDExNTE1MCwgMTE1MTU1LCAxMTUxNjAsIDExNTE2NCwgMTE1MTY5LCAxMTUxNzQsIDExNTE3OSwgMTE1MTgzLCAKKyAgICAxMTUxODgsIDAsIDExNTE5MywgMTE1MTk3LCAxMTUyMDIsIDExNTIwNywgMTE1MjExLCAxMTUyMTUsIDExNTIyMCwgCisgICAgMTE1MjI0LCAxMTUyMjksIDExNTIzNCwgMTE1MjM4LCAxMTUyNDMsIDExNTI0OCwgMTE1MjUyLCAxMTUyNTcsIDExNTI2MiwgCisgICAgMTE1MjY3LCAxMTUyNzIsIDExNTI3NywgMTE1MjgyLCAxMTUyODgsIDExNTI5NCwgMTE1MzAwLCAxMTUzMDUsIDExNTMxMSwgCisgICAgMTE1MzE3LCAxMTUzMjMsIDExNTMyOCwgMTE1MzM0LCAxMTUzNDAsIDExNTM0NSwgMTE1MzUwLCAxMTUzNTYsIDExNTM2MSwgCisgICAgMTE1MzY3LCAxMTUzNzMsIDExNTM3OCwgMTE1Mzg0LCAxMTUzOTAsIDExNTM5NSwgMTE1NDAxLCAxMTU0MDcsIDExNTQxMywgCisgICAgMTE1NDE5LCAxMTU0MjUsIDExNTQzMCwgMTE1NDM2LCAxMTU0NDIsIDExNTQ0OCwgMTE1NDUzLCAxMTU0NTksIDExNTQ2NSwgCisgICAgMTE1NDcxLCAxMTU0NzYsIDExNTQ4MiwgMTE1NDg4LCAxMTU0OTMsIDExNTQ5OCwgMTE1NTA0LCAxMTU1MDksIDExNTUxNSwgCisgICAgMTE1NTIxLCAxMTU1MjYsIDExNTUzMiwgMTE1NTM4LCAxMTU1NDMsIDExNTU0OSwgMTE1NTU1LCAxMTU1NjEsIDExNTU2NywgCisgICAgMTE1NTczLCAwLCAxMTU1NzcsIDExNTU4MiwgMCwgMCwgMTE1NTg3LCAwLCAwLCAxMTU1OTIsIDExNTU5NywgMCwgMCwgCisgICAgMTE1NjAyLCAxMTU2MDcsIDExNTYxMSwgMTE1NjE2LCAwLCAxMTU2MjEsIDExNTYyNiwgMTE1NjMxLCAxMTU2MzUsIAorICAgIDExNTY0MCwgMTE1NjQ1LCAxMTU2NTAsIDExNTY1NSwgMTE1NjYwLCAxMTU2NjQsIDExNTY2OSwgMTE1Njc0LCAwLCAKKyAgICAxMTU2NzksIDAsIDExNTY4NCwgMTE1Njg5LCAxMTU2OTMsIDExNTY5OCwgMTE1NzAzLCAxMTU3MDcsIDExNTcxMSwgMCwgCisgICAgMTE1NzE2LCAxMTU3MjEsIDExNTcyNiwgMTE1NzMwLCAxMTU3MzUsIDExNTc0MCwgMTE1NzQ0LCAxMTU3NDksIDExNTc1NCwgCisgICAgMTE1NzU5LCAxMTU3NjQsIDExNTc2OSwgMTE1Nzc0LCAxMTU3ODAsIDExNTc4NiwgMTE1NzkyLCAxMTU3OTcsIDExNTgwMywgCisgICAgMTE1ODA5LCAxMTU4MTUsIDExNTgyMCwgMTE1ODI2LCAxMTU4MzIsIDExNTgzNywgMTE1ODQyLCAxMTU4NDgsIDExNTg1MywgCisgICAgMTE1ODU5LCAxMTU4NjUsIDExNTg3MCwgMTE1ODc2LCAxMTU4ODIsIDExNTg4NywgMTE1ODkzLCAxMTU4OTksIDExNTkwNSwgCisgICAgMTE1OTExLCAxMTU5MTcsIDExNTkyMiwgMTE1OTI4LCAxMTU5MzQsIDExNTk0MCwgMTE1OTQ1LCAxMTU5NTEsIDExNTk1NywgCisgICAgMTE1OTYzLCAxMTU5NjgsIDExNTk3NCwgMTE1OTgwLCAxMTU5ODUsIDExNTk5MCwgMTE1OTk2LCAxMTYwMDEsIDExNjAwNywgCisgICAgMTE2MDEzLCAxMTYwMTgsIDExNjAyNCwgMTE2MDMwLCAxMTYwMzUsIDExNjA0MSwgMTE2MDQ3LCAxMTYwNTMsIDExNjA1OSwgCisgICAgMTE2MDY1LCAxMTYwNjksIDAsIDExNjA3NCwgMTE2MDc5LCAxMTYwODMsIDExNjA4OCwgMCwgMCwgMTE2MDkzLCAxMTYwOTgsIAorICAgIDExNjEwMywgMTE2MTA3LCAxMTYxMTEsIDExNjExNiwgMTE2MTIwLCAxMTYxMjUsIDAsIDExNjEzMCwgMTE2MTM1LCAKKyAgICAxMTYxNDAsIDExNjE0NCwgMTE2MTQ5LCAxMTYxNTQsIDExNjE1OSwgMCwgMTE2MTY0LCAxMTYxNjgsIDExNjE3MywgCisgICAgMTE2MTc4LCAxMTYxODMsIDExNjE4NywgMTE2MTkyLCAxMTYxOTcsIDExNjIwMiwgMTE2MjA2LCAxMTYyMTEsIDExNjIxNiwgCisgICAgMTE2MjIwLCAxMTYyMjQsIDExNjIyOSwgMTE2MjMzLCAxMTYyMzgsIDExNjI0MywgMTE2MjQ3LCAxMTYyNTIsIDExNjI1NywgCisgICAgMTE2MjYxLCAxMTYyNjYsIDExNjI3MSwgMTE2Mjc2LCAxMTYyODEsIDExNjI4NiwgMTE2MjkwLCAwLCAxMTYyOTUsIAorICAgIDExNjMwMCwgMTE2MzA0LCAxMTYzMDksIDAsIDExNjMxNCwgMTE2MzE4LCAxMTYzMjMsIDExNjMyOCwgMTE2MzMyLCAwLCAKKyAgICAxMTYzMzYsIDAsIDAsIDAsIDExNjM0MCwgMTE2MzQ1LCAxMTYzNTAsIDExNjM1NCwgMTE2MzU5LCAxMTYzNjQsIDExNjM2OSwgCisgICAgMCwgMTE2Mzc0LCAxMTYzNzgsIDExNjM4MywgMTE2Mzg4LCAxMTYzOTMsIDExNjM5NywgMTE2NDAyLCAxMTY0MDcsIAorICAgIDExNjQxMiwgMTE2NDE2LCAxMTY0MjEsIDExNjQyNiwgMTE2NDMwLCAxMTY0MzQsIDExNjQzOSwgMTE2NDQzLCAxMTY0NDgsIAorICAgIDExNjQ1MywgMTE2NDU3LCAxMTY0NjIsIDExNjQ2NywgMTE2NDcxLCAxMTY0NzYsIDExNjQ4MSwgMTE2NDg2LCAxMTY0OTEsIAorICAgIDExNjQ5NiwgMTE2NTAxLCAxMTY1MDcsIDExNjUxMywgMTE2NTE5LCAxMTY1MjQsIDExNjUzMCwgMTE2NTM2LCAxMTY1NDIsIAorICAgIDExNjU0NywgMTE2NTUzLCAxMTY1NTksIDExNjU2NCwgMTE2NTY5LCAxMTY1NzUsIDExNjU4MCwgMTE2NTg2LCAxMTY1OTIsIAorICAgIDExNjU5NywgMTE2NjAzLCAxMTY2MDksIDExNjYxNCwgMTE2NjIwLCAxMTY2MjYsIDExNjYzMiwgMTE2NjM4LCAxMTY2NDQsIAorICAgIDExNjY0OSwgMTE2NjU1LCAxMTY2NjEsIDExNjY2NywgMTE2NjcyLCAxMTY2NzgsIDExNjY4NCwgMTE2NjkwLCAxMTY2OTUsIAorICAgIDExNjcwMSwgMTE2NzA3LCAxMTY3MTIsIDExNjcxNywgMTE2NzIzLCAxMTY3MjgsIDExNjczNCwgMTE2NzQwLCAxMTY3NDUsIAorICAgIDExNjc1MSwgMTE2NzU3LCAxMTY3NjIsIDExNjc2OCwgMTE2Nzc0LCAxMTY3ODAsIDExNjc4NiwgMTE2NzkyLCAxMTY3OTYsIAorICAgIDExNjgwMSwgMTE2ODA2LCAxMTY4MTEsIDExNjgxNSwgMTE2ODIwLCAxMTY4MjUsIDExNjgzMCwgMTE2ODM0LCAxMTY4MzksIAorICAgIDExNjg0NCwgMTE2ODQ4LCAxMTY4NTIsIDExNjg1NywgMTE2ODYxLCAxMTY4NjYsIDExNjg3MSwgMTE2ODc1LCAxMTY4ODAsIAorICAgIDExNjg4NSwgMTE2ODg5LCAxMTY4OTQsIDExNjg5OSwgMTE2OTA0LCAxMTY5MDksIDExNjkxNCwgMTE2OTE4LCAxMTY5MjMsIAorICAgIDExNjkyOCwgMTE2OTMzLCAxMTY5MzcsIDExNjk0MiwgMTE2OTQ3LCAxMTY5NTIsIDExNjk1NiwgMTE2OTYxLCAxMTY5NjYsIAorICAgIDExNjk3MCwgMTE2OTc0LCAxMTY5NzksIDExNjk4MywgMTE2OTg4LCAxMTY5OTMsIDExNjk5NywgMTE3MDAyLCAxMTcwMDcsIAorICAgIDExNzAxMSwgMTE3MDE2LCAxMTcwMjEsIDExNzAyNiwgMTE3MDMxLCAxMTcwMzYsIDExNzA0MSwgMTE3MDQ3LCAxMTcwNTMsIAorICAgIDExNzA1OSwgMTE3MDY0LCAxMTcwNzAsIDExNzA3NiwgMTE3MDgyLCAxMTcwODcsIDExNzA5MywgMTE3MDk5LCAxMTcxMDQsIAorICAgIDExNzEwOSwgMTE3MTE1LCAxMTcxMjAsIDExNzEyNiwgMTE3MTMyLCAxMTcxMzcsIDExNzE0MywgMTE3MTQ5LCAxMTcxNTQsIAorICAgIDExNzE2MCwgMTE3MTY2LCAxMTcxNzIsIDExNzE3OCwgMTE3MTg0LCAxMTcxODksIDExNzE5NSwgMTE3MjAxLCAxMTcyMDcsIAorICAgIDExNzIxMiwgMTE3MjE4LCAxMTcyMjQsIDExNzIzMCwgMTE3MjM1LCAxMTcyNDEsIDExNzI0NywgMTE3MjUyLCAxMTcyNTcsIAorICAgIDExNzI2MywgMTE3MjY4LCAxMTcyNzQsIDExNzI4MCwgMTE3Mjg1LCAxMTcyOTEsIDExNzI5NywgMTE3MzAyLCAxMTczMDgsIAorICAgIDExNzMxNCwgMTE3MzIwLCAxMTczMjYsIDExNzMzMiwgMTE3MzM3LCAxMTczNDMsIDExNzM0OSwgMTE3MzU1LCAxMTczNjAsIAorICAgIDExNzM2NiwgMTE3MzcyLCAxMTczNzgsIDExNzM4MywgMTE3Mzg5LCAxMTczOTUsIDExNzQwMCwgMTE3NDA1LCAxMTc0MTEsIAorICAgIDExNzQxNiwgMTE3NDIyLCAxMTc0MjgsIDExNzQzMywgMTE3NDM5LCAxMTc0NDUsIDExNzQ1MCwgMTE3NDU2LCAxMTc0NjIsIAorICAgIDExNzQ2OCwgMTE3NDc0LCAxMTc0ODAsIDExNzQ4NSwgMTE3NDkxLCAxMTc0OTcsIDExNzUwMywgMTE3NTA4LCAxMTc1MTQsIAorICAgIDExNzUyMCwgMTE3NTI2LCAxMTc1MzEsIDExNzUzNywgMTE3NTQzLCAxMTc1NDgsIDExNzU1MywgMTE3NTU5LCAxMTc1NjQsIAorICAgIDExNzU3MCwgMTE3NTc2LCAxMTc1ODEsIDExNzU4NywgMTE3NTkzLCAxMTc1OTgsIDExNzYwNCwgMTE3NjEwLCAxMTc2MTYsIAorICAgIDExNzYyMiwgMTE3NjI4LCAxMTc2MzQsIDExNzY0MSwgMTE3NjQ4LCAxMTc2NTUsIDExNzY2MSwgMTE3NjY4LCAxMTc2NzUsIAorICAgIDExNzY4MiwgMTE3Njg4LCAxMTc2OTUsIDExNzcwMiwgMTE3NzA4LCAxMTc3MTQsIDExNzcyMSwgMTE3NzI3LCAxMTc3MzQsIAorICAgIDExNzc0MSwgMTE3NzQ3LCAxMTc3NTQsIDExNzc2MSwgMTE3NzY3LCAxMTc3NzQsIDExNzc4MSwgMTE3Nzg4LCAxMTc3OTUsIAorICAgIDExNzgwMiwgMTE3ODA4LCAxMTc4MTUsIDExNzgyMiwgMTE3ODI5LCAxMTc4MzUsIDExNzg0MiwgMTE3ODQ5LCAxMTc4NTYsIAorICAgIDExNzg2MiwgMTE3ODY5LCAxMTc4NzYsIDExNzg4MiwgMTE3ODg4LCAxMTc4OTUsIDExNzkwMSwgMTE3OTA4LCAxMTc5MTUsIAorICAgIDExNzkyMSwgMTE3OTI4LCAxMTc5MzUsIDExNzk0MSwgMTE3OTQ4LCAxMTc5NTUsIDExNzk2MiwgMTE3OTY5LCAxMTc5NzYsIAorICAgIDExNzk4MSwgMTE3OTg3LCAxMTc5OTMsIDExNzk5OSwgMTE4MDA0LCAxMTgwMTAsIDExODAxNiwgMTE4MDIyLCAxMTgwMjcsIAorICAgIDExODAzMywgMTE4MDM5LCAxMTgwNDQsIDExODA0OSwgMTE4MDU1LCAxMTgwNjAsIDExODA2NiwgMTE4MDcyLCAxMTgwNzcsIAorICAgIDExODA4MywgMTE4MDg5LCAxMTgwOTQsIDExODEwMCwgMTE4MTA2LCAxMTgxMTIsIDExODExOCwgMTE4MTI0LCAxMTgxMjksIAorICAgIDExODEzNSwgMTE4MTQxLCAxMTgxNDcsIDExODE1MiwgMTE4MTU4LCAxMTgxNjQsIDExODE3MCwgMTE4MTc1LCAxMTgxODEsIAorICAgIDExODE4NywgMTE4MTkyLCAxMTgxOTcsIDExODIwMywgMTE4MjA4LCAxMTgyMTQsIDExODIyMCwgMTE4MjI1LCAxMTgyMzEsIAorICAgIDExODIzNywgMTE4MjQyLCAxMTgyNDgsIDExODI1NCwgMTE4MjYwLCAxMTgyNjYsIDExODI3MiwgMTE4Mjc4LCAwLCAwLCAKKyAgICAxMTgyODUsIDExODI5MCwgMTE4Mjk1LCAxMTgzMDAsIDExODMwNSwgMTE4MzEwLCAxMTgzMTUsIDExODMyMCwgMTE4MzI1LCAKKyAgICAxMTgzMzAsIDExODMzNSwgMTE4MzQwLCAxMTgzNDUsIDExODM1MCwgMTE4MzU1LCAxMTgzNjAsIDExODM2NSwgMTE4MzcwLCAKKyAgICAxMTgzNzYsIDExODM4MSwgMTE4Mzg2LCAxMTgzOTEsIDExODM5NiwgMTE4NDAxLCAxMTg0MDYsIDExODQxMSwgMTE4NDE1LCAKKyAgICAxMTg0MjAsIDExODQyNSwgMTE4NDMwLCAxMTg0MzUsIDExODQ0MCwgMTE4NDQ1LCAxMTg0NTAsIDExODQ1NSwgMTE4NDYwLCAKKyAgICAxMTg0NjUsIDExODQ3MCwgMTE4NDc1LCAxMTg0ODAsIDExODQ4NSwgMTE4NDkwLCAxMTg0OTUsIDExODUwMCwgMTE4NTA2LCAKKyAgICAxMTg1MTEsIDExODUxNiwgMTE4NTIxLCAxMTg1MjYsIDExODUzMSwgMTE4NTM2LCAxMTg1NDEsIDExODU0NywgMTE4NTUyLCAKKyAgICAxMTg1NTcsIDExODU2MiwgMTE4NTY3LCAxMTg1NzIsIDExODU3NywgMTE4NTgyLCAxMTg1ODcsIDExODU5MiwgMTE4NTk3LCAKKyAgICAxMTg2MDIsIDExODYwNywgMTE4NjEyLCAxMTg2MTcsIDExODYyMiwgMTE4NjI3LCAxMTg2MzIsIDExODYzNywgMTE4NjQyLCAKKyAgICAxMTg2NDcsIDExODY1MiwgMTE4NjU3LCAxMTg2NjIsIDExODY2OCwgMTE4NjczLCAxMTg2NzgsIDExODY4MywgMTE4Njg4LCAKKyAgICAxMTg2OTMsIDExODY5OCwgMTE4NzAzLCAxMTg3MDcsIDExODcxMiwgMTE4NzE3LCAxMTg3MjIsIDExODcyNywgMTE4NzMyLCAKKyAgICAxMTg3MzcsIDExODc0MiwgMTE4NzQ3LCAxMTg3NTIsIDExODc1NywgMTE4NzYyLCAxMTg3NjcsIDExODc3MiwgMTE4Nzc3LCAKKyAgICAxMTg3ODIsIDExODc4NywgMTE4NzkyLCAxMTg3OTgsIDExODgwMywgMTE4ODA4LCAxMTg4MTMsIDExODgxOCwgMTE4ODIzLCAKKyAgICAxMTg4MjgsIDExODgzMywgMTE4ODM5LCAxMTg4NDQsIDExODg0OSwgMTE4ODU0LCAxMTg4NTksIDExODg2NCwgMTE4ODY5LCAKKyAgICAxMTg4NzUsIDExODg4MSwgMTE4ODg3LCAxMTg4OTMsIDExODg5OSwgMTE4OTA1LCAxMTg5MTEsIDExODkxNywgMTE4OTIzLCAKKyAgICAxMTg5MjksIDExODkzNSwgMTE4OTQxLCAxMTg5NDcsIDExODk1MywgMTE4OTU5LCAxMTg5NjUsIDExODk3MSwgMTE4OTc4LCAKKyAgICAxMTg5ODQsIDExODk5MCwgMTE4OTk2LCAxMTkwMDIsIDExOTAwOCwgMTE5MDE0LCAxMTkwMjAsIDExOTAyNSwgMTE5MDMxLCAKKyAgICAxMTkwMzcsIDExOTA0MywgMTE5MDQ5LCAxMTkwNTUsIDExOTA2MSwgMTE5MDY3LCAxMTkwNzMsIDExOTA3OSwgMTE5MDg1LCAKKyAgICAxMTkwOTEsIDExOTA5NywgMTE5MTAzLCAxMTkxMDksIDExOTExNSwgMTE5MTIxLCAxMTkxMjcsIDExOTEzNCwgMTE5MTQwLCAKKyAgICAxMTkxNDYsIDExOTE1MiwgMTE5MTU4LCAxMTkxNjQsIDExOTE3MCwgMTE5MTc2LCAxMTkxODMsIDExOTE4OSwgMTE5MTk1LCAKKyAgICAxMTkyMDEsIDExOTIwNywgMTE5MjEzLCAxMTkyMTksIDExOTIyNSwgMTE5MjMxLCAxMTkyMzcsIDExOTI0MywgMTE5MjQ5LCAKKyAgICAxMTkyNTUsIDExOTI2MSwgMTE5MjY3LCAxMTkyNzMsIDExOTI3OSwgMTE5Mjg1LCAxMTkyOTEsIDExOTI5NywgMTE5MzAzLCAKKyAgICAxMTkzMDksIDExOTMxNSwgMTE5MzIxLCAxMTkzMjgsIDExOTMzNCwgMTE5MzQwLCAxMTkzNDYsIDExOTM1MiwgMTE5MzU4LCAKKyAgICAxMTkzNjQsIDExOTM3MCwgMTE5Mzc1LCAxMTkzODEsIDExOTM4NywgMTE5MzkzLCAxMTkzOTksIDExOTQwNSwgMTE5NDExLCAKKyAgICAxMTk0MTcsIDExOTQyMywgMTE5NDI5LCAxMTk0MzUsIDExOTQ0MSwgMTE5NDQ3LCAxMTk0NTMsIDExOTQ1OSwgMTE5NDY1LCAKKyAgICAxMTk0NzEsIDExOTQ3NywgMTE5NDg0LCAxMTk0OTAsIDExOTQ5NiwgMTE5NTAyLCAxMTk1MDgsIDExOTUxNCwgMTE5NTIwLCAKKyAgICAxMTk1MjYsIDExOTUzMywgMTE5NTM5LCAxMTk1NDUsIDExOTU1MSwgMTE5NTU3LCAxMTk1NjMsIDExOTU2OSwgMTE5NTc2LCAKKyAgICAxMTk1ODMsIDExOTU5MCwgMTE5NTk3LCAxMTk2MDQsIDExOTYxMSwgMTE5NjE4LCAxMTk2MjUsIDExOTYzMiwgMTE5NjM5LCAKKyAgICAxMTk2NDYsIDExOTY1MywgMTE5NjYwLCAxMTk2NjcsIDExOTY3NCwgMTE5NjgxLCAxMTk2ODgsIDExOTY5NiwgMTE5NzAzLCAKKyAgICAxMTk3MTAsIDExOTcxNywgMTE5NzI0LCAxMTk3MzEsIDExOTczOCwgMTE5NzQ1LCAxMTk3NTEsIDExOTc1OCwgMTE5NzY1LCAKKyAgICAxMTk3NzIsIDExOTc3OSwgMTE5Nzg2LCAxMTk3OTMsIDExOTgwMCwgMTE5ODA3LCAxMTk4MTQsIDExOTgyMSwgMTE5ODI4LCAKKyAgICAxMTk4MzUsIDExOTg0MiwgMTE5ODQ5LCAxMTk4NTYsIDExOTg2MywgMTE5ODcwLCAxMTk4NzgsIDExOTg4NSwgMTE5ODkyLCAKKyAgICAxMTk4OTksIDExOTkwNiwgMTE5OTEzLCAxMTk5MjAsIDExOTkyNywgMTE5OTM1LCAxMTk5NDIsIDExOTk0OSwgMTE5OTU2LCAKKyAgICAxMTk5NjMsIDExOTk3MCwgMTE5OTc3LCAxMTk5ODIsIDAsIDAsIDExOTk4NywgMTE5OTkyLCAxMTk5OTYsIDEyMDAwMCwgCisgICAgMTIwMDA0LCAxMjAwMDgsIDEyMDAxMiwgMTIwMDE2LCAxMjAwMjAsIDEyMDAyNCwgMTIwMDI4LCAxMjAwMzMsIDEyMDAzNywgCisgICAgMTIwMDQxLCAxMjAwNDUsIDEyMDA0OSwgMTIwMDUzLCAxMjAwNTcsIDEyMDA2MSwgMTIwMDY1LCAxMjAwNjksIDEyMDA3NCwgCisgICAgMTIwMDc4LCAxMjAwODIsIDEyMDA4NiwgMTIwMDkwLCAxMjAwOTQsIDEyMDA5OCwgMTIwMTAyLCAxMjAxMDYsIDEyMDExMCwgCisgICAgMTIwMTE2LCAxMjAxMjEsIDEyMDEyNiwgMTIwMTMxLCAxMjAxMzYsIDEyMDE0MSwgMTIwMTQ2LCAxMjAxNTEsIDEyMDE1NiwgCisgICAgMTIwMTYxLCAxMjAxNjcsIDEyMDE3MiwgMTIwMTc3LCAxMjAxODIsIDEyMDE4NywgMTIwMTkyLCAxMjAxOTcsIDEyMDIwMiwgCisgICAgMTIwMjA3LCAxMjAyMTIsIDEyMDIxNiwgMTIwMjIwLCAxMjAyMjQsIDAsIDEyMDIyOCwgMTIwMjMyLCAxMjAyMzYsIAorICAgIDEyMDI0MCwgMTIwMjQ0LCAxMjAyNDgsIDEyMDI1MiwgMTIwMjU2LCAxMjAyNjAsIDEyMDI2NCwgMTIwMjY4LCAxMjAyNzIsIAorICAgIDEyMDI3NiwgMTIwMjgwLCAxMjAyODQsIDEyMDI4OCwgMTIwMjkyLCAxMjAyOTYsIDEyMDMwMCwgMTIwMzA0LCAxMjAzMDgsIAorICAgIDEyMDMxMiwgMTIwMzE2LCAxMjAzMjAsIDEyMDMyNiwgMTIwMzMyLCAxMjAzMzgsIDAsIDEyMDM0NCwgMTIwMzQ5LCAwLCAKKyAgICAxMjAzNTQsIDAsIDAsIDEyMDM1OSwgMCwgMTIwMzY0LCAxMjAzNjksIDEyMDM3NCwgMTIwMzc5LCAxMjAzODQsIDEyMDM4OSwgCisgICAgMTIwMzk0LCAxMjAzOTksIDEyMDQwNCwgMTIwNDA5LCAwLCAxMjA0MTQsIDEyMDQxOSwgMTIwNDI0LCAxMjA0MjksIDAsIAorICAgIDEyMDQzNCwgMCwgMTIwNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjA0NDQsIDAsIDAsIDAsIDAsIDEyMDQ1MCwgMCwgCisgICAgMTIwNDU2LCAwLCAxMjA0NjIsIDAsIDEyMDQ2OCwgMTIwNDc0LCAxMjA0ODAsIDAsIDEyMDQ4NiwgMTIwNDkyLCAwLCAKKyAgICAxMjA0OTgsIDAsIDAsIDEyMDUwNCwgMCwgMTIwNTEwLCAwLCAxMjA1MTYsIDAsIDEyMDUyMiwgMCwgMTIwNTMwLCAwLCAKKyAgICAxMjA1MzgsIDEyMDU0NCwgMCwgMTIwNTUwLCAwLCAwLCAxMjA1NTYsIDEyMDU2MiwgMTIwNTY4LCAxMjA1NzQsIDAsIAorICAgIDEyMDU4MCwgMTIwNTg2LCAxMjA1OTIsIDEyMDU5OCwgMTIwNjA0LCAxMjA2MTAsIDEyMDYxNiwgMCwgMTIwNjIyLCAKKyAgICAxMjA2MjgsIDEyMDYzNCwgMTIwNjQwLCAwLCAxMjA2NDYsIDEyMDY1MiwgMTIwNjU4LCAxMjA2NjQsIDAsIDEyMDY3MiwgMCwgCisgICAgMTIwNjgwLCAxMjA2ODYsIDEyMDY5MiwgMTIwNjk4LCAxMjA3MDQsIDEyMDcxMCwgMTIwNzE2LCAxMjA3MjIsIDEyMDcyOCwgCisgICAgMTIwNzM0LCAwLCAxMjA3NDAsIDEyMDc0NiwgMTIwNzUyLCAxMjA3NTgsIDEyMDc2NCwgMTIwNzcwLCAxMjA3NzYsIAorICAgIDEyMDc4MiwgMTIwNzg4LCAxMjA3OTQsIDEyMDgwMCwgMTIwODA2LCAxMjA4MTIsIDEyMDgxOCwgMTIwODI0LCAxMjA4MzAsIAorICAgIDEyMDgzNiwgMCwgMCwgMCwgMCwgMCwgMTIwODQyLCAxMjA4NDcsIDEyMDg1MiwgMCwgMTIwODU3LCAxMjA4NjIsIDEyMDg2NywgCisgICAgMTIwODcyLCAxMjA4NzcsIDAsIDEyMDg4MiwgMTIwODg3LCAxMjA4OTIsIDEyMDg5NywgMTIwOTAyLCAxMjA5MDcsIAorICAgIDEyMDkxMiwgMTIwOTE3LCAxMjA5MjIsIDEyMDkyNywgMTIwOTMyLCAxMjA5MzcsIDEyMDk0MiwgMTIwOTQ3LCAxMjA5NTIsIAorICAgIDEyMDk1NywgMTIwOTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjI0NDYsIAotICAgIDEyMjQ1MSwgMTIyNDU2LCAxMjI0NjEsIDEyMjQ2NiwgMTIyNDcxLCAxMjI0NzYsIDEyMjQ4MywgMTIyNDkwLCAxMjI0OTcsIAotICAgIDEyMjUwNCwgMTIyNTA5LCAxMjI1MTQsIDEyMjUxOSwgMTIyNTI0LCAxMjI1MzEsIDEyMjUzNywgMTIyNTQ0LCAxMjI1NTEsIAotICAgIDEyMjU1OCwgMTIyNTYzLCAxMjI1NjgsIDEyMjU3MywgMTIyNTc4LCAxMjI1ODMsIDEyMjU5MCwgMTIyNTk3LCAxMjI2MDIsIAotICAgIDEyMjYwNywgMTIyNjE0LCAxMjI2MjEsIDEyMjYyOSwgMTIyNjM3LCAxMjI2NDQsIDEyMjY1MSwgMTIyNjU5LCAxMjI2NjcsIAotICAgIDEyMjY3NSwgMTIyNjgyLCAxMjI2OTIsIDEyMjcwMywgMTIyNzA4LCAxMjI3MTUsIDEyMjcyMiwgMTIyNzI5LCAxMjI3MzcsIAotICAgIDEyMjc0NSwgMTIyNzU2LCAxMjI3NjQsIDEyMjc3MiwgMTIyNzgwLCAxMjI3ODUsIDEyMjc5MCwgMTIyNzk1LCAxMjI4MDAsIAotICAgIDEyMjgwNSwgMTIyODEwLCAxMjI4MTUsIDEyMjgyMCwgMTIyODI1LCAxMjI4MzAsIDEyMjgzNSwgMTIyODQwLCAxMjI4NDcsIAotICAgIDEyMjg1MiwgMTIyODU3LCAxMjI4NjQsIDEyMjg2OSwgMTIyODc0LCAxMjI4NzksIDEyMjg4NCwgMTIyODg5LCAxMjI4OTQsIAotICAgIDEyMjg5OSwgMTIyOTA0LCAxMjI5MDksIDEyMjkxNCwgMTIyOTE5LCAxMjI5MjQsIDEyMjkzMSwgMTIyOTM5LCAxMjI5NDQsIAotICAgIDEyMjk0OSwgMTIyOTU2LCAxMjI5NjEsIDEyMjk2NiwgMTIyOTcxLCAxMjI5NzgsIDEyMjk4MywgMTIyOTkwLCAxMjI5OTUsIAotICAgIDEyMzAwMiwgMTIzMDA3LCAxMjMwMTYsIDEyMzAyNSwgMTIzMDMwLCAxMjMwMzUsIDEyMzA0MCwgMTIzMDQ1LCAxMjMwNTAsIAotICAgIDEyMzA1NSwgMTIzMDYwLCAxMjMwNjUsIDEyMzA3MCwgMTIzMDc1LCAxMjMwODAsIDEyMzA4NSwgMTIzMDkwLCAxMjMwOTgsIAotICAgIDEyMzEwNiwgMTIzMTExLCAxMjMxMTYsIDEyMzEyMSwgMTIzMTI2LCAxMjMxMzEsIDEyMzEzNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTIzMTQzLCAxMjMxNDcsIDEyMzE1MSwgMTIzMTU1LCAxMjMxNTksIDEyMzE2MywgMTIzMTY3LCAKLSAgICAxMjMxNzEsIDEyMzE3NSwgMTIzMTc5LCAxMjMxODMsIDEyMzE4NywgMTIzMTkxLCAxMjMxOTUsIDEyMzE5OSwgMTIzMjAzLCAKLSAgICAxMjMyMDcsIDEyMzIxMSwgMTIzMjE1LCAxMjMyMTksIDEyMzIyMywgMTIzMjI3LCAxMjMyMzEsIDEyMzIzNSwgMTIzMjM5LCAKLSAgICAxMjMyNDMsIDEyMzI0NywgMTIzMjUxLCAxMjMyNTUsIDEyMzI1OSwgMTIzMjYzLCAxMjMyNjcsIDEyMzI3MSwgMTIzMjc1LCAKLSAgICAxMjMyNzksIDEyMzI4MywgMTIzMjg3LCAxMjMyOTEsIDEyMzI5NSwgMTIzMjk5LCAxMjMzMDMsIDEyMzMwNywgMTIzMzExLCAKLSAgICAxMjMzMTUsIDEyMzMxOSwgMTIzMzIzLCAxMjMzMjcsIDEyMzMzMSwgMTIzMzM1LCAxMjMzMzksIDEyMzM0MywgMTIzMzQ3LCAKLSAgICAxMjMzNTEsIDEyMzM1NSwgMTIzMzU5LCAxMjMzNjMsIDEyMzM2NywgMTIzMzcxLCAxMjMzNzUsIDEyMzM3OSwgMTIzMzgzLCAKLSAgICAxMjMzODcsIDEyMzM5MSwgMTIzMzk1LCAxMjMzOTksIDEyMzQwMywgMTIzNDA3LCAxMjM0MTEsIDEyMzQxNSwgMTIzNDE5LCAKLSAgICAxMjM0MjMsIDEyMzQyNywgMTIzNDMxLCAxMjM0MzUsIDEyMzQzOSwgMTIzNDQzLCAxMjM0NDcsIDEyMzQ1MSwgMTIzNDU1LCAKLSAgICAxMjM0NTksIDEyMzQ2MywgMTIzNDY3LCAxMjM0NzEsIDEyMzQ3NSwgMTIzNDc5LCAxMjM0ODMsIDEyMzQ4NywgMTIzNDkxLCAKLSAgICAxMjM0OTUsIDEyMzQ5OSwgMTIzNTAzLCAxMjM1MDcsIDEyMzUxMSwgMTIzNTE1LCAxMjM1MTksIDEyMzUyMywgMTIzNTI3LCAKLSAgICAxMjM1MzEsIDEyMzUzNSwgMTIzNTM5LCAxMjM1NDMsIDEyMzU0NywgMTIzNTUxLCAxMjM1NTUsIDEyMzU1OSwgMTIzNTYzLCAKLSAgICAxMjM1NjcsIDEyMzU3MSwgMTIzNTc1LCAxMjM1NzksIDEyMzU4MywgMTIzNTg3LCAxMjM1OTEsIDEyMzU5NSwgMTIzNTk5LCAKLSAgICAxMjM2MDMsIDEyMzYwNywgMTIzNjExLCAxMjM2MTUsIDEyMzYxOSwgMTIzNjIzLCAxMjM2MjcsIDEyMzYzMSwgMTIzNjM1LCAKLSAgICAxMjM2MzksIDEyMzY0MywgMTIzNjQ3LCAxMjM2NTEsIDEyMzY1NSwgMTIzNjU5LCAxMjM2NjMsIDEyMzY2NywgMTIzNjcxLCAKLSAgICAxMjM2NzUsIDEyMzY3OSwgMTIzNjgzLCAxMjM2ODcsIDEyMzY5MSwgMTIzNjk1LCAxMjM2OTksIDEyMzcwMywgMTIzNzA3LCAKLSAgICAxMjM3MTEsIDEyMzcxNSwgMTIzNzE5LCAxMjM3MjMsIDEyMzcyNywgMTIzNzMxLCAxMjM3MzUsIDEyMzczOSwgMTIzNzQzLCAKLSAgICAxMjM3NDcsIDEyMzc1MSwgMTIzNzU1LCAxMjM3NTksIDEyMzc2MywgMTIzNzY3LCAxMjM3NzEsIDEyMzc3NSwgMTIzNzc5LCAKLSAgICAxMjM3ODMsIDEyMzc4NywgMTIzNzkxLCAxMjM3OTUsIDEyMzc5OSwgMTIzODAzLCAxMjM4MDcsIDEyMzgxMSwgMTIzODE1LCAKLSAgICAxMjM4MTksIDEyMzgyMywgMTIzODI3LCAxMjM4MzEsIDEyMzgzNSwgMTIzODM5LCAxMjM4NDMsIDEyMzg0NywgMTIzODUxLCAKLSAgICAxMjM4NTUsIDEyMzg1OSwgMTIzODYzLCAxMjM4NjcsIDEyMzg3MSwgMTIzODc1LCAxMjM4NzksIDEyMzg4MywgMTIzODg3LCAKLSAgICAxMjM4OTEsIDEyMzg5NSwgMTIzODk5LCAxMjM5MDMsIDEyMzkwNywgMTIzOTExLCAxMjM5MTUsIDEyMzkxOSwgMTIzOTIzLCAKLSAgICAxMjM5MjcsIDEyMzkzMSwgMTIzOTM1LCAxMjM5MzksIDEyMzk0MywgMTIzOTQ3LCAxMjM5NTEsIDEyMzk1NSwgMTIzOTU5LCAKLSAgICAxMjM5NjMsIDEyMzk2NywgMTIzOTcxLCAxMjM5NzUsIDEyMzk3OSwgMTIzOTgzLCAxMjM5ODcsIDEyMzk5MSwgMTIzOTk1LCAKLSAgICAxMjM5OTksIDEyNDAwMywgMTI0MDA3LCAxMjQwMTEsIDEyNDAxNSwgMTI0MDE5LCAxMjQwMjMsIDEyNDAyNywgMTI0MDMxLCAKLSAgICAxMjQwMzUsIDEyNDAzOSwgMTI0MDQzLCAxMjQwNDcsIDEyNDA1MSwgMTI0MDU1LCAxMjQwNTksIDEyNDA2MywgMTI0MDY3LCAKLSAgICAxMjQwNzEsIDEyNDA3NSwgMTI0MDc5LCAxMjQwODMsIDEyNDA4NywgMTI0MDkxLCAxMjQwOTUsIDEyNDA5OSwgMTI0MTAzLCAKLSAgICAxMjQxMDcsIDEyNDExMSwgMTI0MTE1LCAxMjQxMTksIDEyNDEyMywgMTI0MTI3LCAxMjQxMzEsIDEyNDEzNSwgMTI0MTM5LCAKLSAgICAxMjQxNDMsIDEyNDE0NywgMTI0MTUxLCAxMjQxNTUsIDEyNDE1OSwgMTI0MTYzLCAxMjQxNjcsIDEyNDE3MSwgMTI0MTc1LCAKLSAgICAxMjQxNzksIDEyNDE4MywgMTI0MTg3LCAxMjQxOTEsIDEyNDE5NSwgMTI0MTk5LCAxMjQyMDMsIDEyNDIwNywgMTI0MjExLCAKLSAgICAxMjQyMTUsIDEyNDIxOSwgMTI0MjIzLCAxMjQyMjcsIDEyNDIzMSwgMTI0MjM1LCAxMjQyMzksIDEyNDI0MywgMTI0MjQ3LCAKLSAgICAxMjQyNTEsIDEyNDI1NSwgMTI0MjU5LCAxMjQyNjMsIDEyNDI2NywgMTI0MjcxLCAxMjQyNzUsIDEyNDI3OSwgMTI0MjgzLCAKLSAgICAxMjQyODcsIDEyNDI5MSwgMTI0Mjk1LCAxMjQyOTksIDEyNDMwMywgMTI0MzA3LCAxMjQzMTEsIDEyNDMxNSwgMTI0MzE5LCAKLSAgICAxMjQzMjMsIDEyNDMyNywgMTI0MzMxLCAxMjQzMzUsIDEyNDMzOSwgMTI0MzQzLCAxMjQzNDcsIDEyNDM1MSwgMTI0MzU1LCAKLSAgICAxMjQzNTksIDEyNDM2MywgMTI0MzY3LCAxMjQzNzEsIDEyNDM3NSwgMTI0Mzc5LCAxMjQzODMsIDEyNDM4NywgMTI0MzkxLCAKLSAgICAxMjQzOTUsIDEyNDM5OSwgMTI0NDAzLCAxMjQ0MDcsIDEyNDQxMSwgMTI0NDE1LCAxMjQ0MTksIDEyNDQyMywgMTI0NDI3LCAKLSAgICAxMjQ0MzEsIDEyNDQzNSwgMTI0NDM5LCAxMjQ0NDMsIDEyNDQ0NywgMTI0NDUxLCAxMjQ0NTUsIDEyNDQ1OSwgMTI0NDYzLCAKLSAgICAxMjQ0NjcsIDEyNDQ3MSwgMTI0NDc1LCAxMjQ0NzksIDEyNDQ4MywgMTI0NDg3LCAxMjQ0OTEsIDEyNDQ5NSwgMTI0NDk5LCAKLSAgICAxMjQ1MDMsIDEyNDUwNywgMTI0NTExLCAxMjQ1MTUsIDEyNDUxOSwgMTI0NTIzLCAxMjQ1MjcsIDEyNDUzMSwgMTI0NTM1LCAKLSAgICAxMjQ1MzksIDEyNDU0MywgMTI0NTQ3LCAxMjQ1NTEsIDEyNDU1NSwgMTI0NTU5LCAxMjQ1NjMsIDEyNDU2NywgMTI0NTcxLCAKLSAgICAxMjQ1NzUsIDEyNDU3OSwgMTI0NTgzLCAxMjQ1ODcsIDEyNDU5MSwgMTI0NTk1LCAxMjQ1OTksIDEyNDYwMywgMTI0NjA3LCAKLSAgICAxMjQ2MTEsIDEyNDYxNSwgMTI0NjE5LCAxMjQ2MjMsIDEyNDYyNywgMTI0NjMxLCAxMjQ2MzUsIDEyNDYzOSwgMTI0NjQzLCAKLSAgICAxMjQ2NDcsIDEyNDY1MSwgMTI0NjU1LCAxMjQ2NTksIDEyNDY2MywgMTI0NjY3LCAxMjQ2NzEsIDEyNDY3NSwgMTI0Njc5LCAKLSAgICAxMjQ2ODMsIDEyNDY4NywgMTI0NjkxLCAxMjQ2OTUsIDEyNDY5OSwgMTI0NzAzLCAxMjQ3MDcsIDEyNDcxMSwgMTI0NzE1LCAKLSAgICAxMjQ3MTksIDEyNDcyMywgMTI0NzI3LCAxMjQ3MzEsIDEyNDczNSwgMTI0NzM5LCAxMjQ3NDMsIDEyNDc0NywgMTI0NzUxLCAKLSAgICAxMjQ3NTUsIDEyNDc1OSwgMTI0NzYzLCAxMjQ3NjcsIDEyNDc3MSwgMTI0Nzc1LCAxMjQ3NzksIDEyNDc4MywgMTI0Nzg3LCAKLSAgICAxMjQ3OTEsIDEyNDc5NSwgMTI0Nzk5LCAxMjQ4MDMsIDEyNDgwNywgMTI0ODExLCAxMjQ4MTUsIDEyNDgxOSwgMTI0ODIzLCAKLSAgICAxMjQ4MjcsIDEyNDgzMSwgMTI0ODM1LCAxMjQ4MzksIDEyNDg0MywgMTI0ODQ3LCAxMjQ4NTEsIDEyNDg1NSwgMTI0ODU5LCAKLSAgICAxMjQ4NjMsIDEyNDg2NywgMTI0ODcxLCAxMjQ4NzUsIDEyNDg3OSwgMTI0ODgzLCAxMjQ4ODcsIDEyNDg5MSwgMTI0ODk1LCAKLSAgICAxMjQ4OTksIDEyNDkwMywgMTI0OTA3LCAxMjQ5MTEsIDEyNDkxNSwgMTI0OTE5LCAxMjQ5MjMsIDEyNDkyNywgMTI0OTMxLCAKLSAgICAxMjQ5MzUsIDEyNDkzOSwgMTI0OTQzLCAxMjQ5NDcsIDEyNDk1MSwgMTI0OTU1LCAxMjQ5NTksIDEyNDk2MywgMTI0OTY3LCAKLSAgICAxMjQ5NzEsIDEyNDk3NSwgMTI0OTc5LCAxMjQ5ODMsIDEyNDk4NywgMTI0OTkxLCAxMjQ5OTUsIDEyNDk5OSwgMTI1MDAzLCAKLSAgICAxMjUwMDcsIDEyNTAxMSwgMTI1MDE1LCAxMjUwMTksIDEyNTAyMywgMTI1MDI3LCAxMjUwMzEsIDEyNTAzNSwgMTI1MDM5LCAKLSAgICAxMjUwNDMsIDEyNTA0NywgMTI1MDUxLCAxMjUwNTUsIDEyNTA1OSwgMTI1MDYzLCAxMjUwNjcsIDEyNTA3MSwgMTI1MDc1LCAKLSAgICAxMjUwNzksIDEyNTA4MywgMTI1MDg3LCAxMjUwOTEsIDEyNTA5NSwgMTI1MDk5LCAxMjUxMDMsIDEyNTEwNywgMTI1MTExLCAKLSAgICAxMjUxMTUsIDEyNTExOSwgMTI1MTIzLCAxMjUxMjcsIDEyNTEzMSwgMTI1MTM1LCAxMjUxMzksIDEyNTE0MywgMTI1MTQ3LCAKLSAgICAxMjUxNTEsIDEyNTE1NSwgMTI1MTU5LCAxMjUxNjMsIDEyNTE2NywgMTI1MTcxLCAxMjUxNzUsIDEyNTE3OSwgMTI1MTgzLCAKLSAgICAxMjUxODcsIDEyNTE5MSwgMTI1MTk1LCAxMjUxOTksIDEyNTIwMywgMTI1MjA3LCAxMjUyMTEsIDEyNTIxNSwgMTI1MjE5LCAKLSAgICAxMjUyMjMsIDEyNTIyNywgMTI1MjMxLCAxMjUyMzUsIDEyNTIzOSwgMTI1MjQzLCAxMjUyNDcsIDEyNTI1MSwgMTI1MjU1LCAKLSAgICAxMjUyNTksIDEyNTI2MywgMTI1MjY3LCAxMjUyNzEsIDEyNTI3NSwgMTI1Mjc5LCAxMjUyODMsIDEyNTI4NywgMTI1MjkxLCAKLSAgICAxMjUyOTUsIDEyNTI5OSwgMTI1MzAzLCAxMjUzMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDk2NywgMTIwOTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMjA5ODUsIDEyMDk5MiwgMTIwOTk5LCAxMjEwMDYsIDEyMTAxMywgMTIxMDIwLCAxMjEwMjcsIAorICAgIDEyMTAzMywgMTIxMDQwLCAxMjEwNDcsIDEyMTA1NCwgMTIxMDYyLCAxMjEwNzAsIDEyMTA3OCwgMTIxMDg2LCAxMjEwOTQsIAorICAgIDEyMTEwMiwgMTIxMTA5LCAxMjExMTYsIDEyMTEyMywgMTIxMTMxLCAxMjExMzksIDEyMTE0NywgMTIxMTU1LCAxMjExNjMsIAorICAgIDEyMTE3MSwgMTIxMTc4LCAxMjExODUsIDEyMTE5MiwgMTIxMjAwLCAxMjEyMDgsIDEyMTIxNiwgMTIxMjI0LCAxMjEyMzIsIAorICAgIDEyMTI0MCwgMTIxMjQ1LCAxMjEyNTAsIDEyMTI1NSwgMTIxMjYwLCAxMjEyNjUsIDEyMTI3MCwgMTIxMjc1LCAxMjEyODAsIAorICAgIDEyMTI4NSwgMCwgMCwgMCwgMCwgMTIxMjkwLCAxMjEyOTUsIDEyMTI5OSwgMTIxMzAzLCAxMjEzMDcsIDEyMTMxMSwgCisgICAgMTIxMzE1LCAxMjEzMTksIDEyMTMyMywgMTIxMzI3LCAxMjEzMzEsIDEyMTMzNSwgMTIxMzM5LCAxMjEzNDMsIDEyMTM0NywgCisgICAgMTIxMzUxLCAxMjEzNTUsIDEyMTM1OSwgMTIxMzYzLCAxMjEzNjcsIDEyMTM3MSwgMTIxMzc1LCAxMjEzNzksIDEyMTM4MywgCisgICAgMTIxMzg3LCAxMjEzOTEsIDEyMTM5NSwgMTIxMzk5LCAxMjE0MDMsIDEyMTQwNywgMTIxNDExLCAxMjE0MTUsIDEyMTQxOSwgCisgICAgMTIxNDIzLCAxMjE0MjcsIDEyMTQzMSwgMTIxNDM1LCAxMjE0MzksIDEyMTQ0MywgMTIxNDQ3LCAxMjE0NTEsIDEyMTQ1NSwgCisgICAgMTIxNDU5LCAxMjE0NjMsIDEyMTQ2NywgMTIxNDcxLCAxMjE0NzUsIDEyMTQ3OSwgMTIxNDgzLCAxMjE0ODcsIDEyMTQ5MSwgCisgICAgMTIxNDk2LCAxMjE1MDAsIDEyMTUwNCwgMTIxNTA4LCAxMjE1MTIsIDEyMTUxNiwgMTIxNTIwLCAxMjE1MjQsIDEyMTUyOCwgCisgICAgMTIxNTMyLCAxMjE1MzYsIDEyMTU0MCwgMTIxNTQ0LCAxMjE1NDgsIDEyMTU1MiwgMTIxNTU2LCAxMjE1NjAsIDEyMTU2NCwgCisgICAgMTIxNTY4LCAxMjE1NzIsIDEyMTU3NiwgMTIxNTgwLCAxMjE1ODQsIDEyMTU4OCwgMTIxNTkyLCAxMjE1OTYsIDEyMTYwMCwgCisgICAgMTIxNjA0LCAxMjE2MDgsIDEyMTYxMiwgMTIxNjE2LCAxMjE2MjAsIDEyMTYyNCwgMTIxNjI4LCAxMjE2MzIsIDEyMTYzNiwgCisgICAgMTIxNjQwLCAxMjE2NDQsIDEyMTY0OCwgMTIxNjUyLCAxMjE2NTYsIDEyMTY2MCwgMTIxNjY0LCAxMjE2NjgsIDEyMTY3MiwgCisgICAgMTIxNjc2LCAxMjE2ODAsIDEyMTY4NCwgMTIxNjg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjE2OTIsIDEyMTY5OCwgMTIxNzA3LCAxMjE3MTUsIDEyMTcyMywgMTIxNzMyLCAxMjE3NDEsIDEyMTc1MCwgMTIxNzU5LCAKKyAgICAxMjE3NjgsIDEyMTc3NywgMTIxNzg2LCAxMjE3OTUsIDEyMTgwNCwgMTIxODEzLCAwLCAwLCAxMjE4MjIsIDEyMTgzMSwgCisgICAgMTIxODM5LCAxMjE4NDcsIDEyMTg1NiwgMTIxODY1LCAxMjE4NzQsIDEyMTg4MywgMTIxODkyLCAxMjE5MDEsIDEyMTkxMCwgCisgICAgMTIxOTE5LCAxMjE5MjgsIDEyMTkzNywgMCwgMCwgMTIxOTQ2LCAxMjE5NTUsIDEyMTk2MywgMTIxOTcxLCAxMjE5ODAsIAorICAgIDEyMTk4OSwgMTIxOTk4LCAxMjIwMDcsIDEyMjAxNiwgMTIyMDI1LCAxMjIwMzQsIDEyMjA0MywgMTIyMDUyLCAxMjIwNjEsIAorICAgIDEyMjA3MCwgMCwgMTIyMDc3LCAxMjIwODYsIDEyMjA5NCwgMTIyMTAyLCAxMjIxMTEsIDEyMjEyMCwgMTIyMTI5LCAKKyAgICAxMjIxMzgsIDEyMjE0NywgMTIyMTU2LCAxMjIxNjUsIDEyMjE3NCwgMTIyMTgzLCAxMjIxOTIsIDEyMjIwMSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTIyMjA4LCAxMjIyMTUsIDEyMjIyMCwgMTIyMjI0LCAxMjIyMjgsIDEyMjIzMiwgMTIyMjM3LCAKKyAgICAxMjIyNDIsIDEyMjI0NywgMTIyMjUyLCAxMjIyNTcsIDAsIDAsIDAsIDAsIDAsIDEyMjI2MiwgMTIyMjY3LCAxMjIyNzMsIAorICAgIDEyMjI3OSwgMTIyMjg1LCAxMjIyOTAsIDEyMjI5NiwgMTIyMzAyLCAxMjIzMDgsIDEyMjMxMywgMTIyMzE5LCAxMjIzMjUsIAorICAgIDEyMjMzMCwgMTIyMzM1LCAxMjIzNDEsIDEyMjM0NiwgMTIyMzUyLCAxMjIzNTgsIDEyMjM2MywgMTIyMzY5LCAxMjIzNzUsIAorICAgIDEyMjM4MCwgMTIyMzg2LCAxMjIzOTIsIDEyMjM5OCwgMTIyNDA0LCAxMjI0MTAsIDEyMjQyMSwgMTIyNDI4LCAxMjI0MzQsIAorICAgIDEyMjQzNywgMCwgMTIyNDQwLCAxMjI0NDUsIDEyMjQ1MSwgMTIyNDU3LCAxMjI0NjMsIDEyMjQ2OCwgMTIyNDc0LCAKKyAgICAxMjI0ODAsIDEyMjQ4NiwgMTIyNDkxLCAxMjI0OTcsIDEyMjUwMywgMTIyNTA4LCAxMjI1MTMsIDEyMjUxOSwgMTIyNTI0LCAKKyAgICAxMjI1MzAsIDEyMjUzNiwgMTIyNTQxLCAxMjI1NDcsIDEyMjU1MywgMTIyNTU4LCAxMjI1NjQsIDEyMjU3MCwgMTIyNTc2LCAKKyAgICAxMjI1ODIsIDEyMjU4OCwgMTIyNTkxLCAxMjI1OTQsIDEyMjU5NywgMTIyNjAwLCAxMjI2MDMsIDEyMjYwNiwgMTIyNjEyLCAKKyAgICAxMjI2MTksIDEyMjYyNiwgMTIyNjMzLCAxMjI2MzksIDEyMjY0NiwgMTIyNjUzLCAxMjI2NjAsIDEyMjY2NiwgMTIyNjczLCAKKyAgICAxMjI2ODAsIDEyMjY4NiwgMTIyNjkyLCAxMjI2OTksIDEyMjcwNSwgMTIyNzEyLCAxMjI3MTksIDEyMjcyNSwgMTIyNzMyLCAKKyAgICAxMjI3MzksIDEyMjc0NSwgMTIyNzUyLCAxMjI3NTksIDEyMjc2NiwgMTIyNzczLCAxMjI3ODAsIDEyMjc4NSwgMCwgMCwgMCwgCisgICAgMCwgMTIyNzkwLCAxMjI3OTYsIDEyMjgwMywgMTIyODEwLCAxMjI4MTcsIDEyMjgyMywgMTIyODMwLCAxMjI4MzcsIAorICAgIDEyMjg0NCwgMTIyODUwLCAxMjI4NTcsIDEyMjg2NCwgMTIyODcwLCAxMjI4NzYsIDEyMjg4MywgMTIyODg5LCAxMjI4OTYsIAorICAgIDEyMjkwMywgMTIyOTA5LCAxMjI5MTYsIDEyMjkyMywgMTIyOTI5LCAxMjI5MzYsIDEyMjk0MywgMTIyOTUwLCAxMjI5NTcsIAorICAgIDEyMjk2NCwgMTIyOTczLCAxMjI5NzcsIDEyMjk4MCwgMTIyOTgzLCAxMjI5ODcsIDEyMjk5MSwgMTIyOTk0LCAxMjI5OTcsIAorICAgIDEyMzAwMCwgMTIzMDAzLCAxMjMwMDYsIDEyMzAwOSwgMTIzMDEyLCAxMjMwMTUsIDEyMzAxOCwgMTIzMDI0LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjUzMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTMxNSwgCi0gICAgMTI1MzE4LCAxMjUzMjIsIDEyNTMyNiwgMTI1MzI5LCAxMjUzMzMsIDEyNTMzNywgMTI1MzQwLCAxMjUzNDMsIDEyNTM0NywgCi0gICAgMTI1MzUxLCAxMjUzNTQsIDEyNTM1NywgMTI1MzYwLCAxMjUzNjMsIDEyNTM2OCwgMTI1MzcxLCAxMjUzNzUsIDEyNTM3OCwgCi0gICAgMTI1MzgxLCAxMjUzODQsIDEyNTM4NywgMTI1MzkwLCAxMjUzOTMsIDEyNTM5NiwgMTI1Mzk5LCAxMjU0MDIsIDEyNTQwNSwgCi0gICAgMTI1NDA4LCAxMjU0MTIsIDEyNTQxNiwgMTI1NDIwLCAxMjU0MjQsIDEyNTQyOSwgMTI1NDM0LCAxMjU0NDAsIDEyNTQ0NiwgCi0gICAgMTI1NDUyLCAxMjU0NTcsIDEyNTQ2MywgMTI1NDY5LCAxMjU0NzUsIDEyNTQ4MCwgMTI1NDg2LCAxMjU0OTIsIDEyNTQ5NywgCi0gICAgMTI1NTAyLCAxMjU1MDcsIDEyNTUxMiwgMTI1NTE4LCAxMjU1MjQsIDEyNTUyOSwgMTI1NTM0LCAxMjU1NDAsIDEyNTU0NSwgCi0gICAgMTI1NTUxLCAxMjU1NTcsIDEyNTU2MywgMTI1NTY5LCAxMjU1NzUsIDEyNTU3OSwgMTI1NTg0LCAxMjU1ODgsIDEyNTU5MywgCi0gICAgMTI1NTk3LCAxMjU2MDIsIDEyNTYwNywgMTI1NjEzLCAxMjU2MTksIDEyNTYyNSwgMTI1NjMwLCAxMjU2MzYsIDEyNTY0MiwgCi0gICAgMTI1NjQ4LCAxMjU2NTMsIDEyNTY1OSwgMTI1NjY1LCAxMjU2NzAsIDEyNTY3NSwgMTI1NjgwLCAxMjU2ODUsIDEyNTY5MSwgCi0gICAgMTI1Njk3LCAxMjU3MDIsIDEyNTcwNywgMTI1NzEzLCAxMjU3MTgsIDEyNTcyNCwgMTI1NzMwLCAxMjU3MzYsIDEyNTc0MiwgCi0gICAgMTI1NzQ4LCAxMjU3NTMsIDEyNTc1NywgMTI1NzYyLCAxMjU3NjUsIDEyNTc2OSwgMTI1NzcyLCAxMjU3NzUsIDEyNTc3OCwgCi0gICAgMTI1NzgxLCAxMjU3ODQsIDEyNTc4NywgMTI1NzkwLCAxMjU3OTMsIDEyNTc5NiwgMTI1Nzk5LCAxMjU4MDIsIDEyNTgwNSwgCi0gICAgMTI1ODA4LCAxMjU4MTEsIDEyNTgxNCwgMTI1ODE3LCAxMjU4MjAsIDEyNTgyMywgMTI1ODI2LCAxMjU4MjksIDEyNTgzMiwgCi0gICAgMTI1ODM1LCAxMjU4MzgsIDEyNTg0MSwgMTI1ODQ0LCAxMjU4NDcsIDEyNTg1MCwgMTI1ODUzLCAxMjU4NTYsIDEyNTg1OSwgCi0gICAgMTI1ODYyLCAxMjU4NjUsIDEyNTg2OCwgMTI1ODcxLCAxMjU4NzQsIDEyNTg3NywgMTI1ODgwLCAxMjU4ODMsIDEyNTg4NiwgCi0gICAgMTI1ODg5LCAxMjU4OTIsIDEyNTg5NSwgMTI1ODk4LCAxMjU5MDEsIDEyNTkwNCwgMTI1OTA3LCAxMjU5MTAsIDEyNTkxMywgCi0gICAgMTI1OTE2LCAxMjU5MTksIDEyNTkyMiwgMTI1OTI1LCAxMjU5MjgsIDEyNTkzMSwgMTI1OTM0LCAxMjU5MzcsIDEyNTk0MCwgCi0gICAgMTI1OTQzLCAxMjU5NDYsIDEyNTk0OSwgMTI1OTUyLCAxMjU5NTUsIDEyNTk1OCwgMTI1OTYxLCAxMjU5NjQsIDEyNTk2NywgCi0gICAgMTI1OTcwLCAxMjU5NzMsIDEyNTk3NiwgMTI1OTc5LCAxMjU5ODIsIDEyNTk4NSwgMTI1OTg4LCAxMjU5OTEsIDEyNTk5NCwgCi0gICAgMTI1OTk3LCAxMjYwMDAsIDEyNjAwMywgMTI2MDA2LCAxMjYwMDksIDEyNjAxMiwgMTI2MDE1LCAxMjYwMTgsIDEyNjAyMSwgCi0gICAgMTI2MDI0LCAxMjYwMjcsIDEyNjAzMCwgMTI2MDMzLCAxMjYwMzYsIDEyNjAzOSwgMTI2MDQyLCAxMjYwNDUsIDEyNjA0OCwgCi0gICAgMTI2MDUxLCAxMjYwNTQsIDEyNjA1NywgMTI2MDYwLCAxMjYwNjMsIDEyNjA2NiwgMTI2MDY5LCAxMjYwNzIsIDEyNjA3NSwgCi0gICAgMTI2MDc4LCAxMjYwODEsIDEyNjA4NCwgMTI2MDg3LCAxMjYwOTAsIDEyNjA5MywgMTI2MDk2LCAxMjYwOTksIDEyNjEwMiwgCi0gICAgMTI2MTA1LCAxMjYxMDgsIDEyNjExMSwgMTI2MTE0LCAxMjYxMTcsIDEyNjEyMCwgMTI2MTIzLCAxMjYxMjYsIDEyNjEyOSwgCi0gICAgMTI2MTMyLCAxMjYxMzUsIDEyNjEzOCwgMTI2MTQxLCAxMjYxNDQsIDEyNjE0NywgMTI2MTUwLCAxMjYxNTMsIDEyNjE1NiwgCi0gICAgMTI2MTU5LCAxMjYxNjIsIDEyNjE2NSwgMTI2MTY4LCAxMjYxNzEsIDEyNjE3NCwgMTI2MTc3LCAxMjYxODAsIDEyNjE4MywgCi0gICAgMTI2MTg2LCAxMjYxODksIDEyNjE5MiwgMTI2MTk1LCAxMjYxOTgsIDEyNjIwMSwgMTI2MjA0LCAxMjYyMDcsIDEyNjIxMCwgCi0gICAgMTI2MjEzLCAxMjYyMTYsIDEyNjIxOSwgMTI2MjIyLCAxMjYyMjUsIDEyNjIyOCwgMTI2MjMxLCAxMjYyMzQsIDEyNjIzNywgCi0gICAgMTI2MjQwLCAxMjYyNDMsIDEyNjI0NiwgMTI2MjQ5LCAxMjYyNTIsIDEyNjI1NSwgMTI2MjU4LCAxMjYyNjEsIDEyNjI2NCwgCi0gICAgMTI2MjY3LCAxMjYyNzAsIDEyNjI3MywgMTI2Mjc2LCAxMjYyNzksIDEyNjI4MiwgMTI2Mjg1LCAxMjYyODgsIDEyNjI5MSwgCi0gICAgMTI2Mjk0LCAxMjYyOTcsIDEyNjMwMCwgMTI2MzAzLCAxMjYzMDYsIDEyNjMwOSwgMTI2MzEyLCAxMjYzMTUsIDEyNjMxOCwgCi0gICAgMTI2MzIxLCAxMjYzMjQsIDEyNjMyNywgMTI2MzMwLCAxMjYzMzMsIDEyNjMzNiwgMTI2MzM5LCAxMjYzNDIsIDEyNjM0NSwgCi0gICAgMTI2MzQ4LCAxMjYzNTEsIDEyNjM1NCwgMTI2MzU3LCAxMjYzNjAsIDEyNjM2MywgMTI2MzY2LCAxMjYzNjksIDEyNjM3MiwgCi0gICAgMTI2Mzc1LCAxMjYzNzgsIDEyNjM4MSwgMTI2Mzg0LCAxMjYzODcsIDEyNjM5MCwgMTI2MzkzLCAxMjYzOTYsIDEyNjM5OSwgCi0gICAgMTI2NDAyLCAxMjY0MDUsIDEyNjQwOCwgMTI2NDExLCAxMjY0MTQsIDEyNjQxNywgMTI2NDIwLCAxMjY0MjMsIDEyNjQyNiwgCi0gICAgMTI2NDI5LCAxMjY0MzIsIDEyNjQzNSwgMTI2NDM4LCAxMjY0NDEsIDEyNjQ0NCwgMTI2NDQ3LCAxMjY0NTAsIDEyNjQ1MywgCi0gICAgMTI2NDU2LCAxMjY0NTksIDEyNjQ2MiwgMTI2NDY1LCAxMjY0NjgsIDEyNjQ3MSwgMTI2NDc0LCAxMjY0NzcsIDEyNjQ4MCwgCi0gICAgMTI2NDgzLCAxMjY0ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyMzAyNywgMTIzMDM0LCAxMjMwNDIsIDEyMzA1MCwgMTIzMDU4LCAxMjMwNjUsIDEyMzA3MywgMTIzMDgxLCAxMjMwODksIAorICAgIDEyMzA5NiwgMTIzMTA0LCAxMjMxMTIsIDEyMzExOSwgMTIzMTI2LCAxMjMxMzQsIDEyMzE0MSwgMTIzMTQ5LCAxMjMxNTcsIAorICAgIDEyMzE2NCwgMTIzMTcyLCAxMjMxODAsIDEyMzE4NywgMTIzMTk1LCAxMjMyMDMsIDEyMzIxMSwgMTIzMjE5LCAxMjMyMjcsIAorICAgIDEyMzIzMSwgMTIzMjM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjMyMzgsIDEyMzI0NCwgCisgICAgMTIzMjUwLCAxMjMyNTYsIDEyMzI2MCwgMTIzMjY2LCAxMjMyNzIsIDEyMzI3OCwgMTIzMjg0LCAxMjMyOTAsIDEyMzI5NiwgCisgICAgMTIzMzAyLCAxMjMzMDgsIDEyMzMxNCwgMTIzMzIwLCAxMjMzMjYsIDEyMzMzMiwgMTIzMzM4LCAxMjMzNDQsIDEyMzM1MCwgCisgICAgMTIzMzU2LCAxMjMzNjIsIDEyMzM2OCwgMTIzMzc0LCAxMjMzODAsIDEyMzM4NiwgMTIzMzkyLCAxMjMzOTgsIDEyMzQwNCwgCisgICAgMTIzNDEwLCAxMjM0MTYsIDEyMzQyMiwgMTIzNDI4LCAxMjM0MzQsIDEyMzQ0MCwgMTIzNDQ2LCAxMjM0NTIsIDEyMzQ1OCwgCisgICAgMTIzNDY0LCAxMjM0NzAsIDEyMzQ3NiwgMTIzNDgyLCAxMjM0ODgsIDAsIDAsIDAsIDAsIDAsIDEyMzQ5NCwgMTIzNTA1LCAKKyAgICAxMjM1MTYsIDEyMzUyNywgMTIzNTM4LCAxMjM1NDksIDEyMzU2MCwgMTIzNTcxLCAxMjM1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyMzU5MywgMTIzNTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMjM2MDEsIDEyMzYwMywgMTIzNjA1LCAxMjM2MDksIDEyMzYxNCwgMTIzNjE5LCAxMjM2MjEsIAorICAgIDEyMzYyNywgMTIzNjMyLCAxMjM2MzQsIDEyMzY0MCwgMTIzNjQ0LCAxMjM2NDYsIDEyMzY1MCwgMTIzNjU2LCAxMjM2NjIsIAorICAgIDEyMzY2OCwgMTIzNjczLCAxMjM2NzcsIDEyMzY4NCwgMTIzNjkxLCAxMjM2OTgsIDEyMzcwMywgMTIzNzEwLCAxMjM3MTcsIAorICAgIDEyMzcyNCwgMTIzNzI4LCAxMjM3MzQsIDEyMzc0MywgMTIzNzUyLCAxMjM3NTksIDEyMzc2NCwgMTIzNzY4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjM3NzIsIDEyMzc3NCwgMTIzNzc2LCAxMjM3ODAsIAorICAgIDEyMzc4NCwgMTIzNzg4LCAwLCAxMjM3OTAsIDEyMzc5MiwgMTIzNzk2LCAxMjM3OTgsIDEyMzgwMCwgMTIzODAyLCAKKyAgICAxMjM4MDQsIDEyMzgwOSwgMTIzODE0LCAxMjM4MTYsIDEyMzgyMiwgMTIzODI2LCAxMjM4MzAsIDEyMzgzOCwgMTIzODQwLCAKKyAgICAxMjM4NDIsIDEyMzg0NCwgMTIzODQ2LCAxMjM4NDgsIDEyMzg1MCwgMTIzODUyLCAxMjM4NTQsIDEyMzg1NiwgMTIzODU4LCAKKyAgICAxMjM4NjIsIDEyMzg2NiwgMTIzODY4LCAxMjM4NzAsIDEyMzg3MiwgMTIzODc0LCAxMjM4NzYsIDEyMzg4MSwgMTIzODg3LCAKKyAgICAxMjM4OTEsIDEyMzg5NSwgMTIzODk5LCAxMjM5MDMsIDEyMzkwOCwgMTIzOTEyLCAxMjM5MTQsIDEyMzkxNiwgMTIzOTIwLCAKKyAgICAxMjM5MjYsIDEyMzkyOCwgMTIzOTMwLCAxMjM5MzIsIDEyMzkzNiwgMTIzOTQ1LCAxMjM5NTEsIDEyMzk1NSwgMTIzOTU5LCAKKyAgICAxMjM5NjEsIDEyMzk2MywgMTIzOTY2LCAxMjM5NjgsIDEyMzk3MCwgMTIzOTcyLCAxMjM5NzYsIDEyMzk3OCwgMTIzOTgyLCAKKyAgICAxMjM5ODcsIDEyMzk4OSwgMTIzOTk0LCAxMjQwMDAsIDEyNDAwNywgMTI0MDExLCAxMjQwMTUsIDEyNDAxOSwgMTI0MDIzLCAKKyAgICAxMjQwMjksIDAsIDAsIDAsIDEyNDAzMywgMTI0MDM1LCAxMjQwMzksIDEyNDA0MywgMTI0MDQ1LCAxMjQwNDksIDEyNDA1MywgCisgICAgMTI0MDU1LCAxMjQwNTksIDEyNDA2MSwgMTI0MDY1LCAxMjQwNjksIDEyNDA3MywgMTI0MDc3LCAxMjQwODEsIDEyNDA4NSwgCisgICAgMTI0MDg5LCAxMjQwOTMsIDEyNDA5OSwgMTI0MTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjQxMDcsIDEyNDExMSwgMTI0MTE1LCAxMjQxMTksIDEyNDEyNiwgMTI0MTI4LCAxMjQxMzIsIDEyNDEzNCwgMTI0MTM2LCAKKyAgICAxMjQxNDAsIDEyNDE0NCwgMTI0MTQ4LCAxMjQxNTAsIDEyNDE1NCwgMTI0MTU4LCAxMjQxNjIsIDEyNDE2NiwgMTI0MTcwLCAKKyAgICAxMjQxNzIsIDEyNDE3NiwgMTI0MTc4LCAxMjQxODQsIDEyNDE4NywgMTI0MTkyLCAxMjQxOTQsIDEyNDE5NiwgMTI0MTk5LCAKKyAgICAxMjQyMDEsIDEyNDIwMywgMTI0MjA2LCAxMjQyMTMsIDEyNDIyMCwgMTI0MjI3LCAxMjQyMzIsIDEyNDIzNiwgMTI0MjM4LCAKKyAgICAxMjQyNDAsIDAsIDEyNDI0MiwgMTI0MjQ0LCAxMjQyNDgsIDEyNDI1MiwgMTI0MjU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQyNTgsIDEyNDI2MiwgMTI0MjY3LCAxMjQyNzEsIAorICAgIDEyNDI3NywgMTI0MjgzLCAxMjQyODUsIDEyNDI4NywgMTI0MjkzLCAxMjQyOTUsIDEyNDI5OSwgMTI0MzAzLCAxMjQzMDUsIAorICAgIDEyNDMwOSwgMTI0MzExLCAxMjQzMTUsIDEyNDMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTI0MzIzLCAxMjQzMjUsIDEyNDMyNywgMTI0MzI5LCAxMjQzMzMsIDEyNDMzNSwgMTI0MzM3LCAxMjQzMzksIAorICAgIDEyNDM0MSwgMTI0MzQzLCAxMjQzNDUsIDEyNDM0NywgMTI0MzQ5LCAxMjQzNTEsIDEyNDM1MywgMTI0MzU1LCAxMjQzNTcsIAorICAgIDEyNDM1OSwgMTI0MzYxLCAxMjQzNjMsIDEyNDM2NSwgMTI0MzY3LCAxMjQzNjksIDEyNDM3MSwgMTI0MzczLCAxMjQzNzUsIAorICAgIDEyNDM3NywgMTI0MzgxLCAxMjQzODMsIDEyNDM4NSwgMTI0Mzg3LCAxMjQzOTEsIDEyNDM5MywgMTI0Mzk3LCAxMjQzOTksIAorICAgIDEyNDQwMSwgMTI0NDA1LCAxMjQ0MDksIDEyNDQxNSwgMTI0NDE3LCAxMjQ0MTksIDEyNDQyMSwgMTI0NDIzLCAxMjQ0MjcsIAorICAgIDEyNDQzMSwgMTI0NDMzLCAxMjQ0MzcsIDEyNDQ0MSwgMTI0NDQ1LCAxMjQ0NDksIDEyNDQ1MywgMTI0NDU3LCAxMjQ0NjEsIAorICAgIDEyNDQ2NSwgMTI0NDY5LCAxMjQ0NzMsIDEyNDQ3NywgMTI0NDgxLCAxMjQ0ODUsIDEyNDQ4OSwgMTI0NDkzLCAxMjQ0OTcsIAorICAgIDEyNDUwMSwgMCwgMTI0NTA1LCAwLCAxMjQ1MDcsIDEyNDUwOSwgMTI0NTExLCAxMjQ1MTMsIDEyNDUxNSwgMTI0NTIzLCAKKyAgICAxMjQ1MzEsIDEyNDUzOSwgMTI0NTQ3LCAxMjQ1NTIsIDEyNDU1NywgMTI0NTYyLCAxMjQ1NjYsIDEyNDU3MCwgMTI0NTc1LCAKKyAgICAxMjQ1NzksIDEyNDU4MSwgMTI0NTg1LCAxMjQ1ODcsIDEyNDU4OSwgMTI0NTkxLCAxMjQ1OTMsIDEyNDU5NSwgMTI0NTk3LCAKKyAgICAxMjQ1OTksIDEyNDYwMywgMTI0NjA1LCAxMjQ2MDcsIDEyNDYwOSwgMTI0NjEzLCAxMjQ2MTcsIDEyNDYyMSwgMTI0NjI1LCAKKyAgICAxMjQ2MjksIDEyNDYzMSwgMTI0NjM3LCAxMjQ2NDMsIDEyNDY0NSwgMTI0NjQ3LCAxMjQ2NDksIDEyNDY1MSwgMTI0NjUzLCAKKyAgICAxMjQ2NjIsIDEyNDY2OSwgMTI0Njc2LCAxMjQ2ODAsIDEyNDY4NywgMTI0NjkyLCAxMjQ2OTksIDEyNDcwOCwgMTI0NzEzLCAKKyAgICAxMjQ3MTcsIDEyNDcyMSwgMTI0NzIzLCAxMjQ3MjcsIDEyNDcyOSwgMTI0NzMzLCAxMjQ3MzcsIDEyNDczOSwgMTI0NzQzLCAKKyAgICAxMjQ3NDcsIDEyNDc1MSwgMTI0NzUzLCAxMjQ3NTUsIDEyNDc2MSwgMTI0NzYzLCAxMjQ3NjUsIDEyNDc2NywgMTI0NzcxLCAKKyAgICAxMjQ3NzUsIDEyNDc3NywgMTI0NzgxLCAxMjQ3ODMsIDEyNDc4NSwgMTI0Nzg4LCAxMjQ3OTIsIDEyNDc5NCwgMTI0Nzk4LCAKKyAgICAxMjQ4MDAsIDEyNDgwMiwgMTI0ODA3LCAxMjQ4MDksIDEyNDgxMywgMTI0ODE3LCAxMjQ4MjAsIDEyNDgyNCwgMTI0ODI4LCAKKyAgICAxMjQ4MzIsIDEyNDgzNiwgMTI0ODQwLCAxMjQ4NDQsIDEyNDg0OCwgMTI0ODUzLCAxMjQ4NTcsIDEyNDg2MSwgMTI0ODcwLCAKKyAgICAxMjQ4NzUsIDEyNDg3OCwgMTI0ODgwLCAxMjQ4ODMsIDEyNDg4NiwgMTI0ODkxLCAxMjQ4OTMsIDEyNDg5NiwgMTI0OTAxLCAKKyAgICAxMjQ5MDUsIDEyNDkwOCwgMTI0OTEyLCAxMjQ5MTYsIDEyNDkxOSwgMTI0OTI0LCAxMjQ5MjgsIDEyNDkzMiwgMTI0OTM2LCAKKyAgICAxMjQ5NDAsIDEyNDk0NiwgMTI0OTUyLCAxMjQ5NTgsIDEyNDk2NCwgMTI0OTY5LCAxMjQ5ODAsIDEyNDk4MiwgMTI0OTg2LCAKKyAgICAxMjQ5ODgsIDEyNDk5MCwgMTI0OTk0LCAxMjQ5OTgsIDEyNTAwMCwgMTI1MDA0LCAxMjUwMDksIDEyNTAxNCwgMTI1MDIwLCAKKyAgICAxMjUwMjIsIDEyNTAyNiwgMTI1MDMwLCAxMjUwMzcsIDEyNTA0NCwgMTI1MDQ4LCAxMjUwNTAsIDEyNTA1MiwgMTI1MDU2LCAKKyAgICAxMjUwNTgsIDEyNTA2MiwgMTI1MDY2LCAxMjUwNzAsIDEyNTA3MiwgMTI1MDc0LCAxMjUwODEsIDEyNTA4NSwgMTI1MDg4LCAKKyAgICAxMjUwOTIsIDEyNTA5NiwgMTI1MTAwLCAxMjUxMDIsIDEyNTEwNiwgMTI1MTA4LCAxMjUxMTAsIDEyNTExNCwgMTI1MTE2LCAKKyAgICAxMjUxMjAsIDEyNTEyNCwgMTI1MTMwLCAxMjUxMzQsIDEyNTEzOCwgMTI1MTQyLCAxMjUxNDQsIDEyNTE0NywgMTI1MTUxLCAKKyAgICAxMjUxNTgsIDEyNTE2NywgMTI1MTc2LCAxMjUxODQsIDEyNTE5MiwgMTI1MTk0LCAxMjUxOTgsIDEyNTIwMCwgMTI1MjA0LCAKKyAgICAxMjUyMTUsIDEyNTIxOSwgMTI1MjI1LCAxMjUyMzEsIDEyNTIzNiwgMCwgMTI1MjM4LCAxMjUyNDIsIDEyNTI0NCwgCisgICAgMTI1MjQ2LCAwLCAwLCAwLCAxMjUyNDgsIDEyNTI1MywgMTI1MjYzLCAxMjUyNzgsIDEyNTI5MCwgMTI1MzAyLCAxMjUzMDYsIAorICAgIDEyNTMxMCwgMTI1MzE2LCAxMjUzMTgsIDEyNTMyNiwgMTI1MzM0LCAxMjUzMzYsIDEyNTM0MCwgMTI1MzQ2LCAxMjUzNTIsIAorICAgIDEyNTM1OSwgMTI1MzY2LCAxMjUzNjgsIDEyNTM3MCwgMTI1MzczLCAxMjUzNzUsIDEyNTM4MSwgMTI1MzgzLCAxMjUzODYsIAorICAgIDEyNTM5MCwgMTI1Mzk2LCAxMjU0MDIsIDEyNTQxMywgMTI1NDE5LCAxMjU0MjYsIDEyNTQzNCwgMTI1NDM4LCAxMjU0NDYsIAorICAgIDEyNTQ1NCwgMTI1NDYwLCAxMjU0NjYsIDEyNTQ3MywgMTI1NDc1LCAxMjU0NzksIDEyNTQ4MSwgMTI1NDgzLCAxMjU0ODgsIAorICAgIDEyNTQ5MCwgMTI1NDkyLCAxMjU0OTQsIDEyNTQ5NiwgMTI1NTAwLCAxMjU1MTEsIDEyNTUxNywgMTI1NTIxLCAxMjU1MjUsIAorICAgIDEyNTUyOSwgMTI1NTM1LCAxMjU1NDEsIDEyNTU0NywgMTI1NTUzLCAxMjU1NTgsIDEyNTU2MywgMTI1NTY5LCAxMjU1NzUsIAorICAgIDEyNTU4MiwgMCwgMCwgMTI1NTg5LCAxMjU1OTQsIDEyNTYwMiwgMTI1NjA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMjU2MTUsIDEyNTYyMiwgMTI1NjI5LCAxMjU2MzYsIDEyNTY0NCwgMTI1NjUyLCAxMjU2NjAsIDEyNTY2OCwgCisgICAgMTI1Njc2LCAxMjU2ODQsIDEyNTY5MiwgMTI1NzAwLCAxMjU3MDgsIDEyNTcxNCwgMTI1NzIwLCAxMjU3MjYsIDEyNTczMiwgCisgICAgMTI1NzM4LCAxMjU3NDQsIDEyNTc1MCwgMTI1NzU2LCAxMjU3NjIsIDEyNTc2OCwgMTI1Nzc0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjU3ODAsIAorICAgIDEyNTc4NCwgMTI1Nzg4LCAxMjU3OTMsIDEyNTc5OCwgMTI1ODAwLCAxMjU4MDQsIDEyNTgxMywgMTI1ODIxLCAxMjU4MjksIAorICAgIDEyNTg0MiwgMTI1ODU1LCAxMjU4NjgsIDEyNTg3NSwgMTI1ODgyLCAxMjU4ODYsIDEyNTg5NSwgMTI1OTAzLCAxMjU5MDcsIAorICAgIDEyNTkxNiwgMTI1OTIzLCAxMjU5MjcsIDEyNTkzMSwgMTI1OTM1LCAxMjU5MzksIDEyNTk0NiwgMTI1OTUwLCAxMjU5NTQsIAorICAgIDEyNTk1OCwgMTI1OTYyLCAxMjU5NjksIDEyNTk3OCwgMTI1OTg3LCAxMjU5OTQsIDEyNjAwNiwgMTI2MDE4LCAxMjYwMjIsIAorICAgIDEyNjAyNiwgMTI2MDMwLCAxMjYwMzQsIDEyNjAzOCwgMTI2MDQyLCAxMjYwNTAsIDEyNjA1OCwgMTI2MDY2LCAxMjYwNzAsIAorICAgIDEyNjA3NCwgMTI2MDc4LCAxMjYwODIsIDEyNjA4NiwgMTI2MDkwLCAxMjYwOTYsIDEyNjEwMiwgMTI2MTA2LCAxMjYxMTcsIAorICAgIDEyNjEyNSwgMTI2MTI5LCAxMjYxMzMsIDEyNjEzNywgMTI2MTQxLCAxMjYxNDcsIDEyNjE1NCwgMTI2MTY1LCAxMjYxNzUsIAorICAgIDEyNjE4NSwgMTI2MTk2LCAxMjYyMDUsIDEyNjIxNiwgMTI2MjIyLCAxMjYyMjgsIDAsIDAsIDAsIDAsIDEyNjIzNCwgCisgICAgMTI2MjQzLCAxMjYyNTAsIDEyNjI1NiwgMTI2MjYwLCAxMjYyNjQsIDEyNjI2OCwgMTI2Mjc3LCAxMjYyODksIDEyNjI5MywgCisgICAgMTI2MzAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMjYzMDcsIDEyNjMwOSwgMTI2MzExLCAxMjYzMTUsIDEyNjMxOSwgMTI2MzIzLCAxMjYzMzIsIDEyNjMzNCwgCisgICAgMTI2MzM2LCAxMjYzMzksIDEyNjM0MSwgMTI2MzQzLCAxMjYzNDcsIDEyNjM0OSwgMTI2MzUzLCAxMjYzNTUsIDEyNjM1OSwgCisgICAgMTI2MzYxLCAxMjYzNjMsIDEyNjM2NywgMTI2MzcxLCAxMjYzNzcsIDEyNjM3OSwgMTI2MzgzLCAxMjYzODUsIDEyNjM4OSwgCisgICAgMTI2MzkzLCAxMjYzOTcsIDEyNjQwMSwgMTI2NDAzLCAxMjY0MDUsIDEyNjQwOSwgMTI2NDEzLCAxMjY0MTcsIDEyNjQyMSwgCisgICAgMTI2NDIzLCAxMjY0MjUsIDEyNjQyNywgMTI2NDMyLCAxMjY0MzcsIDEyNjQ0MCwgMTI2NDQ4LCAxMjY0NTYsIDEyNjQ1OCwgCisgICAgMTI2NDYzLCAxMjY0NjYsIDEyNjQ3MSwgMTI2NDgyLCAxMjY0ODksIDEyNjQ5NCwgMTI2NDk5LCAxMjY1MDEsIDEyNjUwNSwgCisgICAgMTI2NTA3LCAxMjY1MTEsIDEyNjUxMywgMTI2NTE3LCAxMjY1MjEsIDEyNjUyNCwgMTI2NTI3LCAxMjY1MjksIDEyNjUzMiwgCisgICAgMTI2NTM0LCAxMjY1MzgsIDEyNjU0MCwgMTI2NTQyLCAxMjY1NDQsIDEyNjU0OCwgMTI2NTUwLCAxMjY1NTQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNjU1NywgMTI2NTYyLCAxMjY1NjcsIDEyNjU3MiwgMTI2NTc3LCAxMjY1ODIsIAorICAgIDEyNjU4NywgMTI2NTk0LCAxMjY2MDEsIDEyNjYwOCwgMTI2NjE1LCAxMjY2MjAsIDEyNjYyNSwgMTI2NjMwLCAxMjY2MzUsIAorICAgIDEyNjY0MiwgMTI2NjQ4LCAxMjY2NTUsIDEyNjY2MiwgMTI2NjY5LCAxMjY2NzQsIDEyNjY3OSwgMTI2Njg0LCAxMjY2ODksIAorICAgIDEyNjY5NCwgMTI2NzAxLCAxMjY3MDgsIDEyNjcxMywgMTI2NzE4LCAxMjY3MjUsIDEyNjczMiwgMTI2NzQwLCAxMjY3NDgsIAorICAgIDEyNjc1NSwgMTI2NzYyLCAxMjY3NzAsIDEyNjc3OCwgMTI2Nzg2LCAxMjY3OTMsIDEyNjgwMywgMTI2ODE0LCAxMjY4MTksIAorICAgIDEyNjgyNiwgMTI2ODMzLCAxMjY4NDAsIDEyNjg0OCwgMTI2ODU2LCAxMjY4NjcsIDEyNjg3NSwgMTI2ODgzLCAxMjY4OTEsIAorICAgIDEyNjg5NiwgMTI2OTAxLCAxMjY5MDYsIDEyNjkxMSwgMTI2OTE2LCAxMjY5MjEsIDEyNjkyNiwgMTI2OTMxLCAxMjY5MzYsIAorICAgIDEyNjk0MSwgMTI2OTQ2LCAxMjY5NTEsIDEyNjk1OCwgMTI2OTYzLCAxMjY5NjgsIDEyNjk3NSwgMTI2OTgwLCAxMjY5ODUsIAorICAgIDEyNjk5MCwgMTI2OTk1LCAxMjcwMDAsIDEyNzAwNSwgMTI3MDEwLCAxMjcwMTUsIDEyNzAyMCwgMTI3MDI1LCAxMjcwMzAsIAorICAgIDEyNzAzNSwgMTI3MDQyLCAxMjcwNTAsIDEyNzA1NSwgMTI3MDYwLCAxMjcwNjcsIDEyNzA3MiwgMTI3MDc3LCAxMjcwODIsIAorICAgIDEyNzA4OSwgMTI3MDk0LCAxMjcxMDEsIDEyNzEwNiwgMTI3MTEzLCAxMjcxMTgsIDEyNzEyNywgMTI3MTM2LCAxMjcxNDEsIAorICAgIDEyNzE0NiwgMTI3MTUxLCAxMjcxNTYsIDEyNzE2MSwgMTI3MTY2LCAxMjcxNzEsIDEyNzE3NiwgMTI3MTgxLCAxMjcxODYsIAorICAgIDEyNzE5MSwgMTI3MTk2LCAxMjcyMDEsIDEyNzIwOSwgMTI3MjE3LCAxMjcyMjIsIDEyNzIyNywgMTI3MjMyLCAxMjcyMzcsIAorICAgIDEyNzI0MiwgMTI3MjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcyNTQsIDEyNzI1OCwgCisgICAgMTI3MjYyLCAxMjcyNjYsIDEyNzI3MCwgMTI3Mjc0LCAxMjcyNzgsIDEyNzI4MiwgMTI3Mjg2LCAxMjcyOTAsIDEyNzI5NCwgCisgICAgMTI3Mjk4LCAxMjczMDIsIDEyNzMwNiwgMTI3MzEwLCAxMjczMTQsIDEyNzMxOCwgMTI3MzIyLCAxMjczMjYsIDEyNzMzMCwgCisgICAgMTI3MzM0LCAxMjczMzgsIDEyNzM0MiwgMTI3MzQ2LCAxMjczNTAsIDEyNzM1NCwgMTI3MzU4LCAxMjczNjIsIDEyNzM2NiwgCisgICAgMTI3MzcwLCAxMjczNzQsIDEyNzM3OCwgMTI3MzgyLCAxMjczODYsIDEyNzM5MCwgMTI3Mzk0LCAxMjczOTgsIDEyNzQwMiwgCisgICAgMTI3NDA2LCAxMjc0MTAsIDEyNzQxNCwgMTI3NDE4LCAxMjc0MjIsIDEyNzQyNiwgMTI3NDMwLCAxMjc0MzQsIDEyNzQzOCwgCisgICAgMTI3NDQyLCAxMjc0NDYsIDEyNzQ1MCwgMTI3NDU0LCAxMjc0NTgsIDEyNzQ2MiwgMTI3NDY2LCAxMjc0NzAsIDEyNzQ3NCwgCisgICAgMTI3NDc4LCAxMjc0ODIsIDEyNzQ4NiwgMTI3NDkwLCAxMjc0OTQsIDEyNzQ5OCwgMTI3NTAyLCAxMjc1MDYsIDEyNzUxMCwgCisgICAgMTI3NTE0LCAxMjc1MTgsIDEyNzUyMiwgMTI3NTI2LCAxMjc1MzAsIDEyNzUzNCwgMTI3NTM4LCAxMjc1NDIsIDEyNzU0NiwgCisgICAgMTI3NTUwLCAxMjc1NTQsIDEyNzU1OCwgMTI3NTYyLCAxMjc1NjYsIDEyNzU3MCwgMTI3NTc0LCAxMjc1NzgsIDEyNzU4MiwgCisgICAgMTI3NTg2LCAxMjc1OTAsIDEyNzU5NCwgMTI3NTk4LCAxMjc2MDIsIDEyNzYwNiwgMTI3NjEwLCAxMjc2MTQsIDEyNzYxOCwgCisgICAgMTI3NjIyLCAxMjc2MjYsIDEyNzYzMCwgMTI3NjM0LCAxMjc2MzgsIDEyNzY0MiwgMTI3NjQ2LCAxMjc2NTAsIDEyNzY1NCwgCisgICAgMTI3NjU4LCAxMjc2NjIsIDEyNzY2NiwgMTI3NjcwLCAxMjc2NzQsIDEyNzY3OCwgMTI3NjgyLCAxMjc2ODYsIDEyNzY5MCwgCisgICAgMTI3Njk0LCAxMjc2OTgsIDEyNzcwMiwgMTI3NzA2LCAxMjc3MTAsIDEyNzcxNCwgMTI3NzE4LCAxMjc3MjIsIDEyNzcyNiwgCisgICAgMTI3NzMwLCAxMjc3MzQsIDEyNzczOCwgMTI3NzQyLCAxMjc3NDYsIDEyNzc1MCwgMTI3NzU0LCAxMjc3NTgsIDEyNzc2MiwgCisgICAgMTI3NzY2LCAxMjc3NzAsIDEyNzc3NCwgMTI3Nzc4LCAxMjc3ODIsIDEyNzc4NiwgMTI3NzkwLCAxMjc3OTQsIDEyNzc5OCwgCisgICAgMTI3ODAyLCAxMjc4MDYsIDEyNzgxMCwgMTI3ODE0LCAxMjc4MTgsIDEyNzgyMiwgMTI3ODI2LCAxMjc4MzAsIDEyNzgzNCwgCisgICAgMTI3ODM4LCAxMjc4NDIsIDEyNzg0NiwgMTI3ODUwLCAxMjc4NTQsIDEyNzg1OCwgMTI3ODYyLCAxMjc4NjYsIDEyNzg3MCwgCisgICAgMTI3ODc0LCAxMjc4NzgsIDEyNzg4MiwgMTI3ODg2LCAxMjc4OTAsIDEyNzg5NCwgMTI3ODk4LCAxMjc5MDIsIDEyNzkwNiwgCisgICAgMTI3OTEwLCAxMjc5MTQsIDEyNzkxOCwgMTI3OTIyLCAxMjc5MjYsIDEyNzkzMCwgMTI3OTM0LCAxMjc5MzgsIDEyNzk0MiwgCisgICAgMTI3OTQ2LCAxMjc5NTAsIDEyNzk1NCwgMTI3OTU4LCAxMjc5NjIsIDEyNzk2NiwgMTI3OTcwLCAxMjc5NzQsIDEyNzk3OCwgCisgICAgMTI3OTgyLCAxMjc5ODYsIDEyNzk5MCwgMTI3OTk0LCAxMjc5OTgsIDEyODAwMiwgMTI4MDA2LCAxMjgwMTAsIDEyODAxNCwgCisgICAgMTI4MDE4LCAxMjgwMjIsIDEyODAyNiwgMTI4MDMwLCAxMjgwMzQsIDEyODAzOCwgMTI4MDQyLCAxMjgwNDYsIDEyODA1MCwgCisgICAgMTI4MDU0LCAxMjgwNTgsIDEyODA2MiwgMTI4MDY2LCAxMjgwNzAsIDEyODA3NCwgMTI4MDc4LCAxMjgwODIsIDEyODA4NiwgCisgICAgMTI4MDkwLCAxMjgwOTQsIDEyODA5OCwgMTI4MTAyLCAxMjgxMDYsIDEyODExMCwgMTI4MTE0LCAxMjgxMTgsIDEyODEyMiwgCisgICAgMTI4MTI2LCAxMjgxMzAsIDEyODEzNCwgMTI4MTM4LCAxMjgxNDIsIDEyODE0NiwgMTI4MTUwLCAxMjgxNTQsIDEyODE1OCwgCisgICAgMTI4MTYyLCAxMjgxNjYsIDEyODE3MCwgMTI4MTc0LCAxMjgxNzgsIDEyODE4MiwgMTI4MTg2LCAxMjgxOTAsIDEyODE5NCwgCisgICAgMTI4MTk4LCAxMjgyMDIsIDEyODIwNiwgMTI4MjEwLCAxMjgyMTQsIDEyODIxOCwgMTI4MjIyLCAxMjgyMjYsIDEyODIzMCwgCisgICAgMTI4MjM0LCAxMjgyMzgsIDEyODI0MiwgMTI4MjQ2LCAxMjgyNTAsIDEyODI1NCwgMTI4MjU4LCAxMjgyNjIsIDEyODI2NiwgCisgICAgMTI4MjcwLCAxMjgyNzQsIDEyODI3OCwgMTI4MjgyLCAxMjgyODYsIDEyODI5MCwgMTI4Mjk0LCAxMjgyOTgsIDEyODMwMiwgCisgICAgMTI4MzA2LCAxMjgzMTAsIDEyODMxNCwgMTI4MzE4LCAxMjgzMjIsIDEyODMyNiwgMTI4MzMwLCAxMjgzMzQsIDEyODMzOCwgCisgICAgMTI4MzQyLCAxMjgzNDYsIDEyODM1MCwgMTI4MzU0LCAxMjgzNTgsIDEyODM2MiwgMTI4MzY2LCAxMjgzNzAsIDEyODM3NCwgCisgICAgMTI4Mzc4LCAxMjgzODIsIDEyODM4NiwgMTI4MzkwLCAxMjgzOTQsIDEyODM5OCwgMTI4NDAyLCAxMjg0MDYsIDEyODQxMCwgCisgICAgMTI4NDE0LCAxMjg0MTgsIDEyODQyMiwgMTI4NDI2LCAxMjg0MzAsIDEyODQzNCwgMTI4NDM4LCAxMjg0NDIsIDEyODQ0NiwgCisgICAgMTI4NDUwLCAxMjg0NTQsIDEyODQ1OCwgMTI4NDYyLCAxMjg0NjYsIDEyODQ3MCwgMTI4NDc0LCAxMjg0NzgsIDEyODQ4MiwgCisgICAgMTI4NDg2LCAxMjg0OTAsIDEyODQ5NCwgMTI4NDk4LCAxMjg1MDIsIDEyODUwNiwgMTI4NTEwLCAxMjg1MTQsIDEyODUxOCwgCisgICAgMTI4NTIyLCAxMjg1MjYsIDEyODUzMCwgMTI4NTM0LCAxMjg1MzgsIDEyODU0MiwgMTI4NTQ2LCAxMjg1NTAsIDEyODU1NCwgCisgICAgMTI4NTU4LCAxMjg1NjIsIDEyODU2NiwgMTI4NTcwLCAxMjg1NzQsIDEyODU3OCwgMTI4NTgyLCAxMjg1ODYsIDEyODU5MCwgCisgICAgMTI4NTk0LCAxMjg1OTgsIDEyODYwMiwgMTI4NjA2LCAxMjg2MTAsIDEyODYxNCwgMTI4NjE4LCAxMjg2MjIsIDEyODYyNiwgCisgICAgMTI4NjMwLCAxMjg2MzQsIDEyODYzOCwgMTI4NjQyLCAxMjg2NDYsIDEyODY1MCwgMTI4NjU0LCAxMjg2NTgsIDEyODY2MiwgCisgICAgMTI4NjY2LCAxMjg2NzAsIDEyODY3NCwgMTI4Njc4LCAxMjg2ODIsIDEyODY4NiwgMTI4NjkwLCAxMjg2OTQsIDEyODY5OCwgCisgICAgMTI4NzAyLCAxMjg3MDYsIDEyODcxMCwgMTI4NzE0LCAxMjg3MTgsIDEyODcyMiwgMTI4NzI2LCAxMjg3MzAsIDEyODczNCwgCisgICAgMTI4NzM4LCAxMjg3NDIsIDEyODc0NiwgMTI4NzUwLCAxMjg3NTQsIDEyODc1OCwgMTI4NzYyLCAxMjg3NjYsIDEyODc3MCwgCisgICAgMTI4Nzc0LCAxMjg3NzgsIDEyODc4MiwgMTI4Nzg2LCAxMjg3OTAsIDEyODc5NCwgMTI4Nzk4LCAxMjg4MDIsIDEyODgwNiwgCisgICAgMTI4ODEwLCAxMjg4MTQsIDEyODgxOCwgMTI4ODIyLCAxMjg4MjYsIDEyODgzMCwgMTI4ODM0LCAxMjg4MzgsIDEyODg0MiwgCisgICAgMTI4ODQ2LCAxMjg4NTAsIDEyODg1NCwgMTI4ODU4LCAxMjg4NjIsIDEyODg2NiwgMTI4ODcwLCAxMjg4NzQsIDEyODg3OCwgCisgICAgMTI4ODgyLCAxMjg4ODYsIDEyODg5MCwgMTI4ODk0LCAxMjg4OTgsIDEyODkwMiwgMTI4OTA2LCAxMjg5MTAsIDEyODkxNCwgCisgICAgMTI4OTE4LCAxMjg5MjIsIDEyODkyNiwgMTI4OTMwLCAxMjg5MzQsIDEyODkzOCwgMTI4OTQyLCAxMjg5NDYsIDEyODk1MCwgCisgICAgMTI4OTU0LCAxMjg5NTgsIDEyODk2MiwgMTI4OTY2LCAxMjg5NzAsIDEyODk3NCwgMTI4OTc4LCAxMjg5ODIsIDEyODk4NiwgCisgICAgMTI4OTkwLCAxMjg5OTQsIDEyODk5OCwgMTI5MDAyLCAxMjkwMDYsIDEyOTAxMCwgMTI5MDE0LCAxMjkwMTgsIDEyOTAyMiwgCisgICAgMTI5MDI2LCAxMjkwMzAsIDEyOTAzNCwgMTI5MDM4LCAxMjkwNDIsIDEyOTA0NiwgMTI5MDUwLCAxMjkwNTQsIDEyOTA1OCwgCisgICAgMTI5MDYyLCAxMjkwNjYsIDEyOTA3MCwgMTI5MDc0LCAxMjkwNzgsIDEyOTA4MiwgMTI5MDg2LCAxMjkwOTAsIDEyOTA5NCwgCisgICAgMTI5MDk4LCAxMjkxMDIsIDEyOTEwNiwgMTI5MTEwLCAxMjkxMTQsIDEyOTExOCwgMTI5MTIyLCAxMjkxMjYsIDEyOTEzMCwgCisgICAgMTI5MTM0LCAxMjkxMzgsIDEyOTE0MiwgMTI5MTQ2LCAxMjkxNTAsIDEyOTE1NCwgMTI5MTU4LCAxMjkxNjIsIDEyOTE2NiwgCisgICAgMTI5MTcwLCAxMjkxNzQsIDEyOTE3OCwgMTI5MTgyLCAxMjkxODYsIDEyOTE5MCwgMTI5MTk0LCAxMjkxOTgsIDEyOTIwMiwgCisgICAgMTI5MjA2LCAxMjkyMTAsIDEyOTIxNCwgMTI5MjE4LCAxMjkyMjIsIDEyOTIyNiwgMTI5MjMwLCAxMjkyMzQsIDEyOTIzOCwgCisgICAgMTI5MjQyLCAxMjkyNDYsIDEyOTI1MCwgMTI5MjU0LCAxMjkyNTgsIDEyOTI2MiwgMTI5MjY2LCAxMjkyNzAsIDEyOTI3NCwgCisgICAgMTI5Mjc4LCAxMjkyODIsIDEyOTI4NiwgMTI5MjkwLCAxMjkyOTQsIDEyOTI5OCwgMTI5MzAyLCAxMjkzMDYsIDEyOTMxMCwgCisgICAgMTI5MzE0LCAxMjkzMTgsIDEyOTMyMiwgMTI5MzI2LCAxMjkzMzAsIDEyOTMzNCwgMTI5MzM4LCAxMjkzNDIsIDEyOTM0NiwgCisgICAgMTI5MzUwLCAxMjkzNTQsIDEyOTM1OCwgMTI5MzYyLCAxMjkzNjYsIDEyOTM3MCwgMTI5Mzc0LCAxMjkzNzgsIDEyOTM4MiwgCisgICAgMTI5Mzg2LCAxMjkzOTAsIDEyOTM5NCwgMTI5Mzk4LCAxMjk0MDIsIDEyOTQwNiwgMTI5NDEwLCAxMjk0MTQsIDEyOTQxOCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTI5NDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk0MjYsIDEyOTQyOSwgMTI5NDMzLCAxMjk0MzcsIDEyOTQ0MCwgCisgICAgMTI5NDQ0LCAxMjk0NDgsIDEyOTQ1MSwgMTI5NDU0LCAxMjk0NTgsIDEyOTQ2MiwgMTI5NDY1LCAxMjk0NjgsIDEyOTQ3MSwgCisgICAgMTI5NDc0LCAxMjk0NzksIDEyOTQ4MiwgMTI5NDg2LCAxMjk0ODksIDEyOTQ5MiwgMTI5NDk1LCAxMjk0OTgsIDEyOTUwMSwgCisgICAgMTI5NTA0LCAxMjk1MDcsIDEyOTUxMCwgMTI5NTEzLCAxMjk1MTYsIDEyOTUxOSwgMTI5NTIzLCAxMjk1MjcsIDEyOTUzMSwgCisgICAgMTI5NTM1LCAxMjk1NDAsIDEyOTU0NSwgMTI5NTUxLCAxMjk1NTcsIDEyOTU2MywgMTI5NTY4LCAxMjk1NzQsIDEyOTU4MCwgCisgICAgMTI5NTg2LCAxMjk1OTEsIDEyOTU5NywgMTI5NjAzLCAxMjk2MDgsIDEyOTYxMywgMTI5NjE5LCAxMjk2MjQsIDEyOTYzMCwgCisgICAgMTI5NjM2LCAxMjk2NDEsIDEyOTY0NywgMTI5NjUzLCAxMjk2NTgsIDEyOTY2NCwgMTI5NjcwLCAxMjk2NzYsIDEyOTY4MiwgCisgICAgMTI5Njg4LCAxMjk2OTIsIDEyOTY5NywgMTI5NzAxLCAxMjk3MDYsIDEyOTcxMCwgMTI5NzE1LCAxMjk3MjAsIDEyOTcyNiwgCisgICAgMTI5NzMyLCAxMjk3MzgsIDEyOTc0MywgMTI5NzQ5LCAxMjk3NTUsIDEyOTc2MSwgMTI5NzY2LCAxMjk3NzIsIDEyOTc3OCwgCisgICAgMTI5NzgzLCAxMjk3ODgsIDEyOTc5NCwgMTI5Nzk5LCAxMjk4MDUsIDEyOTgxMSwgMTI5ODE2LCAxMjk4MjIsIDEyOTgyOCwgCisgICAgMTI5ODMzLCAxMjk4MzksIDEyOTg0NSwgMTI5ODUxLCAxMjk4NTcsIDEyOTg2MywgMTI5ODY4LCAxMjk4NzIsIDEyOTg3NywgCisgICAgMTI5ODc5LCAxMjk4ODMsIDEyOTg4NiwgMTI5ODg5LCAxMjk4OTIsIDEyOTg5NSwgMTI5ODk4LCAxMjk5MDEsIDEyOTkwNCwgCisgICAgMTI5OTA3LCAxMjk5MTAsIDEyOTkxMywgMTI5OTE2LCAxMjk5MTksIDEyOTkyMiwgMTI5OTI1LCAxMjk5MjgsIDEyOTkzMSwgCisgICAgMTI5OTM0LCAxMjk5MzcsIDEyOTk0MCwgMTI5OTQzLCAxMjk5NDYsIDEyOTk0OSwgMTI5OTUyLCAxMjk5NTUsIDEyOTk1OCwgCisgICAgMTI5OTYxLCAxMjk5NjQsIDEyOTk2NywgMTI5OTcwLCAxMjk5NzMsIDEyOTk3NiwgMTI5OTc5LCAxMjk5ODIsIDEyOTk4NSwgCisgICAgMTI5OTg4LCAxMjk5OTEsIDEyOTk5NCwgMTI5OTk3LCAxMzAwMDAsIDEzMDAwMywgMTMwMDA2LCAxMzAwMDksIDEzMDAxMiwgCisgICAgMTMwMDE1LCAxMzAwMTgsIDEzMDAyMSwgMTMwMDI0LCAxMzAwMjcsIDEzMDAzMCwgMTMwMDMzLCAxMzAwMzYsIDEzMDAzOSwgCisgICAgMTMwMDQyLCAxMzAwNDUsIDEzMDA0OCwgMTMwMDUxLCAxMzAwNTQsIDEzMDA1NywgMTMwMDYwLCAxMzAwNjMsIDEzMDA2NiwgCisgICAgMTMwMDY5LCAxMzAwNzIsIDEzMDA3NSwgMTMwMDc4LCAxMzAwODEsIDEzMDA4NCwgMTMwMDg3LCAxMzAwOTAsIDEzMDA5MywgCisgICAgMTMwMDk2LCAxMzAwOTksIDEzMDEwMiwgMTMwMTA1LCAxMzAxMDgsIDEzMDExMSwgMTMwMTE0LCAxMzAxMTcsIDEzMDEyMCwgCisgICAgMTMwMTIzLCAxMzAxMjYsIDEzMDEyOSwgMTMwMTMyLCAxMzAxMzUsIDEzMDEzOCwgMTMwMTQxLCAxMzAxNDQsIDEzMDE0NywgCisgICAgMTMwMTUwLCAxMzAxNTMsIDEzMDE1NiwgMTMwMTU5LCAxMzAxNjIsIDEzMDE2NSwgMTMwMTY4LCAxMzAxNzEsIDEzMDE3NCwgCisgICAgMTMwMTc3LCAxMzAxODAsIDEzMDE4MywgMTMwMTg2LCAxMzAxODksIDEzMDE5MiwgMTMwMTk1LCAxMzAxOTgsIDEzMDIwMSwgCisgICAgMTMwMjA0LCAxMzAyMDcsIDEzMDIxMCwgMTMwMjEzLCAxMzAyMTYsIDEzMDIxOSwgMTMwMjIyLCAxMzAyMjUsIDEzMDIyOCwgCisgICAgMTMwMjMxLCAxMzAyMzQsIDEzMDIzNywgMTMwMjQwLCAxMzAyNDMsIDEzMDI0NiwgMTMwMjQ5LCAxMzAyNTIsIDEzMDI1NSwgCisgICAgMTMwMjU4LCAxMzAyNjEsIDEzMDI2NCwgMTMwMjY3LCAxMzAyNzAsIDEzMDI3MywgMTMwMjc2LCAxMzAyNzksIDEzMDI4MiwgCisgICAgMTMwMjg1LCAxMzAyODgsIDEzMDI5MSwgMTMwMjk0LCAxMzAyOTcsIDEzMDMwMCwgMTMwMzAzLCAxMzAzMDYsIDEzMDMwOSwgCisgICAgMTMwMzEyLCAxMzAzMTUsIDEzMDMxOCwgMTMwMzIxLCAxMzAzMjQsIDEzMDMyNywgMTMwMzMwLCAxMzAzMzMsIDEzMDMzNiwgCisgICAgMTMwMzM5LCAxMzAzNDIsIDEzMDM0NSwgMTMwMzQ4LCAxMzAzNTEsIDEzMDM1NCwgMTMwMzU3LCAxMzAzNjAsIDEzMDM2MywgCisgICAgMTMwMzY2LCAxMzAzNjksIDEzMDM3MiwgMTMwMzc1LCAxMzAzNzgsIDEzMDM4MSwgMTMwMzg0LCAxMzAzODcsIDEzMDM5MCwgCisgICAgMTMwMzkzLCAxMzAzOTYsIDEzMDM5OSwgMTMwNDAyLCAxMzA0MDUsIDEzMDQwOCwgMTMwNDExLCAxMzA0MTQsIDEzMDQxNywgCisgICAgMTMwNDIwLCAxMzA0MjMsIDEzMDQyNiwgMTMwNDI5LCAxMzA0MzIsIDEzMDQzNSwgMTMwNDM4LCAxMzA0NDEsIDEzMDQ0NCwgCisgICAgMTMwNDQ3LCAxMzA0NTAsIDEzMDQ1MywgMTMwNDU2LCAxMzA0NTksIDEzMDQ2MiwgMTMwNDY1LCAxMzA0NjgsIDEzMDQ3MSwgCisgICAgMTMwNDc0LCAxMzA0NzcsIDEzMDQ4MCwgMTMwNDgzLCAxMzA0ODYsIDEzMDQ4OSwgMTMwNDkyLCAxMzA0OTUsIDEzMDQ5OCwgCisgICAgMTMwNTAxLCAxMzA1MDQsIDEzMDUwNywgMTMwNTEwLCAxMzA1MTMsIDEzMDUxNiwgMTMwNTE5LCAxMzA1MjIsIDEzMDUyNSwgCisgICAgMTMwNTI4LCAxMzA1MzEsIDEzMDUzNCwgMTMwNTM3LCAxMzA1NDAsIDEzMDU0MywgMTMwNTQ2LCAxMzA1NDksIDEzMDU1MiwgCisgICAgMTMwNTU1LCAxMzA1NTgsIDEzMDU2MSwgMTMwNTY0LCAxMzA1NjcsIDEzMDU3MCwgMTMwNTczLCAxMzA1NzYsIDEzMDU3OSwgCisgICAgMTMwNTgyLCAxMzA1ODUsIDEzMDU4OCwgMTMwNTkxLCAxMzA1OTQsIDEzMDU5NywgMTMwNjAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzA2MDMsIDEzMDYwNSwgMTMwNjA3LCAxMzA2MTIsIDEzMDYxNCwgCisgICAgMTMwNjE5LCAxMzA2MjEsIDEzMDYyNiwgMTMwNjI4LCAxMzA2MzMsIDEzMDYzNSwgMTMwNjM3LCAxMzA2MzksIDEzMDY0MSwgCisgICAgMTMwNjQzLCAxMzA2NDUsIDEzMDY0NywgMTMwNjQ5LCAxMzA2NTEsIDEzMDY1NCwgMTMwNjU3LCAxMzA2NTksIDEzMDY2MSwgCisgICAgMTMwNjY1LCAxMzA2NjgsIDEzMDY3MywgMTMwNjc1LCAxMzA2NzcsIDEzMDY3OSwgMTMwNjgzLCAxMzA2ODYsIDEzMDY4OCwgCisgICAgMTMwNjkyLCAxMzA2OTQsIDEzMDY5OCwgMTMwNzAwLCAxMzA3MDQsIDEzMDcwNywgMTMwNzA5LCAxMzA3MTMsIDEzMDcxNywgCisgICAgMTMwNzE5LCAxMzA3MjUsIDEzMDcyNywgMTMwNzMyLCAxMzA3MzQsIDEzMDczOSwgMTMwNzQxLCAxMzA3NDYsIDEzMDc0OCwgCisgICAgMTMwNzUzLCAxMzA3NTUsIDEzMDc1OCwgMTMwNzYwLCAxMzA3NjQsIDEzMDc2NiwgMTMwNzczLCAxMzA3NzUsIDEzMDc3NywgCisgICAgMTMwNzc5LCAxMzA3ODQsIDEzMDc4NiwgMTMwNzg4LCAxMzA3OTAsIDEzMDc5MiwgMTMwNzk0LCAxMzA3OTksIDEzMDgwMywgCisgICAgMTMwODA1LCAxMzA4MTAsIDEzMDgxNCwgMTMwODE2LCAxMzA4MjEsIDEzMDgyNSwgMTMwODI3LCAxMzA4MzIsIDEzMDgzNiwgCisgICAgMTMwODM4LCAxMzA4NDAsIDEzMDg0MiwgMTMwODQ0LCAxMzA4NDgsIDEzMDg1MCwgMTMwODU1LCAxMzA4NTcsIDEzMDg2MywgCisgICAgMTMwODY1LCAxMzA4NzEsIDEzMDg3MywgMTMwODc1LCAxMzA4NzcsIDEzMDg4MSwgMTMwODgzLCAxMzA4OTAsIDEzMDg5MiwgCisgICAgMTMwODk5LCAxMzA5MDEsIDEzMDkwNiwgMTMwOTExLCAxMzA5MTMsIDEzMDkxOSwgMTMwOTI1LCAxMzA5MjcsIDEzMDkzMywgCisgICAgMTMwOTM4LCAxMzA5NDAsIDEzMDk0NiwgMTMwOTUyLCAxMzA5NTQsIDEzMDk2MCwgMTMwOTY2LCAxMzA5NjgsIDEzMDk3NCwgCisgICAgMTMwOTc4LCAxMzA5ODAsIDEzMDk4NSwgMTMwOTg3LCAxMzA5ODksIDEzMDk5NCwgMTMwOTk2LCAxMzA5OTgsIDEzMTAwNCwgCisgICAgMTMxMDA2LCAxMzEwMTEsIDEzMTAxNSwgMTMxMDE3LCAxMzEwMjIsIDEzMTAyNiwgMTMxMDI4LCAxMzEwMzQsIDEzMTAzNiwgCisgICAgMTMxMDQwLCAxMzEwNDIsIDEzMTA0NiwgMTMxMDQ4LCAxMzEwNTUsIDEzMTA2MiwgMTMxMDY0LCAxMzEwNzEsIDEzMTA3OCwgCisgICAgMTMxMDgwLCAxMzEwODUsIDEzMTA4NywgMTMxMDk0LCAxMzEwOTYsIDEzMTEwMSwgMTMxMTAzLCAxMzExMDksIDEzMTExMSwgCisgICAgMTMxMTE1LCAxMzExMTcsIDEzMTEyMywgMTMxMTI1LCAxMzExMjksIDEzMTEzMSwgMTMxMTM3LCAxMzExMzksIDEzMTE0MSwgCisgICAgMTMxMTQzLCAxMzExNDgsIDEzMTE1MywgMTMxMTU1LCAxMzExNTksIDEzMTE2NiwgMTMxMTczLCAxMzExNzgsIDEzMTE4MywgCisgICAgMTMxMTk1LCAxMzExOTcsIDEzMTE5OSwgMTMxMjAxLCAxMzEyMDMsIDEzMTIwNSwgMTMxMjA3LCAxMzEyMDksIDEzMTIxMSwgCisgICAgMTMxMjEzLCAxMzEyMTUsIDEzMTIxNywgMTMxMjE5LCAxMzEyMjEsIDEzMTIyMywgMTMxMjI1LCAxMzEyMjcsIDEzMTIyOSwgCisgICAgMTMxMjM1LCAxMzEyNDIsIDEzMTI0NywgMTMxMjUyLCAxMzEyNjMsIDEzMTI2NSwgMTMxMjY3LCAxMzEyNjksIDEzMTI3MSwgCisgICAgMTMxMjczLCAxMzEyNzUsIDEzMTI3NywgMTMxMjc5LCAxMzEyODEsIDEzMTI4MywgMTMxMjg1LCAxMzEyODcsIDEzMTI4OSwgCisgICAgMTMxMjkxLCAxMzEyOTMsIDEzMTI5NSwgMTMxMzAwLCAxMzEzMDIsIDEzMTMwNCwgMTMxMzE1LCAxMzEzMTcsIDEzMTMxOSwgCisgICAgMTMxMzIxLCAxMzEzMjMsIDEzMTMyNSwgMTMxMzI3LCAxMzEzMjksIDEzMTMzMSwgMTMxMzMzLCAxMzEzMzUsIDEzMTMzNywgCisgICAgMTMxMzM5LCAxMzEzNDEsIDEzMTM0MywgMTMxMzQ1LCAxMzEzNDcsIDEzMTM0OSwgMTMxMzUxLCAxMzEzNTMsIDEzMTM1NSwgCisgICAgMTMxMzU3LCAxMzEzNTksIDEzMTM2MSwgMTMxMzYzLCAxMzEzNjUsIDEzMTM2NywgMTMxMzY5LCAxMzEzNzEsIDEzMTM3MywgCisgICAgMTMxMzc1LCAxMzEzNzcsIDEzMTM3OSwgMTMxMzgxLCAxMzEzODMsIDEzMTM4NSwgMTMxMzg3LCAxMzEzODksIDEzMTM5MSwgCisgICAgMTMxMzkzLCAxMzEzOTUsIDEzMTM5NywgMTMxMzk5LCAxMzE0MDEsIDEzMTQwMywgMTMxNDA1LCAxMzE0MDcsIDEzMTQwOSwgCisgICAgMTMxNDExLCAxMzE0MTMsIDEzMTQxNSwgMTMxNDE3LCAxMzE0MTksIDEzMTQyMSwgMTMxNDIzLCAxMzE0MjUsIDEzMTQyNywgCisgICAgMTMxNDI5LCAxMzE0MzEsIDEzMTQzMywgMTMxNDM1LCAxMzE0MzcsIDEzMTQzOSwgMTMxNDQxLCAxMzE0NDMsIDEzMTQ0NSwgCisgICAgMTMxNDQ3LCAxMzE0NDksIDEzMTQ1MSwgMTMxNDUzLCAxMzE0NTUsIDEzMTQ1NywgMTMxNDU5LCAxMzE0NjEsIDEzMTQ2MywgCisgICAgMTMxNDY1LCAxMzE0NjcsIDEzMTQ2OSwgMTMxNDcxLCAxMzE0NzMsIDEzMTQ3NSwgMTMxNDc3LCAxMzE0NzksIDEzMTQ4MSwgCisgICAgMTMxNDgzLCAxMzE0ODUsIDEzMTQ4NywgMTMxNDg5LCAxMzE0OTEsIDEzMTQ5MywgMTMxNDk1LCAxMzE0OTcsIDEzMTQ5OSwgCisgICAgMTMxNTAxLCAxMzE1MDMsIDEzMTUwNSwgMTMxNTA3LCAxMzE1MDksIDEzMTUxMSwgMTMxNTEzLCAxMzE1MTUsIDEzMTUxNywgCisgICAgMTMxNTE5LCAxMzE1MjEsIDEzMTUyMywgMTMxNTI1LCAxMzE1MjcsIDEzMTUyOSwgMTMxNTMxLCAxMzE1MzMsIDEzMTUzNSwgCisgICAgMTMxNTM3LCAxMzE1MzksIDEzMTU0MSwgMTMxNTQzLCAxMzE1NDUsIDEzMTU0NywgMTMxNTQ5LCAxMzE1NTEsIDEzMTU1MywgCisgICAgMTMxNTU1LCAxMzE1NTcsIDEzMTU1OSwgMTMxNTYxLCAxMzE1NjMsIDEzMTU2NSwgMTMxNTY3LCAxMzE1NjksIDEzMTU3MSwgCisgICAgMTMxNTczLCAxMzE1NzUsIDEzMTU3NywgMTMxNTc5LCAxMzE1ODEsIDEzMTU4MywgMTMxNTg1LCAxMzE1ODcsIDEzMTU4OSwgCisgICAgMTMxNTkxLCAxMzE1OTMsIDEzMTU5NSwgMTMxNTk3LCAxMzE1OTksIDEzMTYwMSwgMTMxNjAzLCAxMzE2MDUsIDEzMTYwNywgCisgICAgMTMxNjA5LCAxMzE2MTEsIDEzMTYxMywgMTMxNjE1LCAxMzE2MTcsIDEzMTYxOSwgMTMxNjIxLCAxMzE2MjMsIDEzMTYyNSwgCisgICAgMTMxNjI3LCAxMzE2MjksIDEzMTYzMSwgMTMxNjMzLCAxMzE2MzUsIDEzMTYzNywgMTMxNjM5LCAxMzE2NDEsIDEzMTY0MywgCisgICAgMTMxNjQ1LCAxMzE2NDcsIDEzMTY0OSwgMTMxNjUxLCAxMzE2NTMsIDEzMTY1NSwgMTMxNjU3LCAxMzE2NTksIDEzMTY2MSwgCisgICAgMTMxNjYzLCAxMzE2NjUsIDEzMTY2NywgMTMxNjY5LCAxMzE2NzEsIDEzMTY3MywgMTMxNjc1LCAxMzE2NzcsIDEzMTY3OSwgCisgICAgMTMxNjgxLCAxMzE2ODMsIDEzMTY4NSwgMTMxNjg3LCAxMzE2ODksIDEzMTY5MSwgMTMxNjkzLCAxMzE2OTUsIDEzMTY5NywgCisgICAgMTMxNjk5LCAxMzE3MDEsIDEzMTcwMywgMTMxNzA1LCAxMzE3MDcsIDEzMTcwOSwgMTMxNzExLCAxMzE3MTMsIDEzMTcxNSwgCisgICAgMTMxNzE3LCAxMzE3MTksIDEzMTcyMSwgMTMxNzIzLCAxMzE3MjUsIDEzMTcyNywgMTMxNzI5LCAxMzE3MzEsIDEzMTczMywgCisgICAgMTMxNzM1LCAxMzE3MzcsIDEzMTczOSwgMTMxNzQxLCAxMzE3NDMsIDEzMTc0NSwgMTMxNzQ3LCAxMzE3NDksIDEzMTc1MSwgCisgICAgMTMxNzUzLCAxMzE3NTUsIDEzMTc1NywgMTMxNzU5LCAxMzE3NjEsIDEzMTc2MywgMTMxNzY1LCAxMzE3NjcsIDEzMTc2OSwgCisgICAgMTMxNzcxLCAxMzE3NzMsIDEzMTc3NSwgMTMxNzc3LCAxMzE3NzksIDEzMTc4MSwgMTMxNzgzLCAxMzE3ODUsIDEzMTc4NywgCisgICAgMTMxNzg5LCAxMzE3OTEsIDEzMTc5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMxNzk1LCAxMzE4MDUsIDEzMTgxNSwgMTMxODI0LCAxMzE4MzMsIDEzMTg0NiwgMTMxODU5LCAxMzE4NzEsIDEzMTg4MywgCisgICAgMTMxODkzLCAxMzE5MDMsIDEzMTkxMywgMTMxOTIzLCAxMzE5MzQsIDEzMTk0NSwgMTMxOTU1LCAxMzE5NjQsIDEzMTk3MywgCisgICAgMTMxOTgyLCAxMzE5OTUsIDEzMjAwOCwgMTMyMDIwLCAxMzIwMzIsIDEzMjA0MiwgMTMyMDUyLCAxMzIwNjIsIDEzMjA3MiwgCisgICAgMTMyMDgxLCAxMzIwOTAsIDEzMjA5OSwgMTMyMTA4LCAxMzIxMTcsIDEzMjEyNiwgMTMyMTM1LCAxMzIxNDQsIDEzMjE1MywgCisgICAgMTMyMTYyLCAxMzIxNzEsIDEzMjE4MCwgMTMyMTkxLCAxMzIyMDEsIDEzMjIxMSwgMTMyMjI0LCAxMzIyMzQsIDEzMjI0NywgCisgICAgMTMyMjU0LCAxMzIyNjQsIDEzMjI3MSwgMTMyMjc4LCAxMzIyODUsIDEzMjI5MiwgMTMyMjk5LCAxMzIzMDYsIDEzMjMxNSwgCisgICAgMTMyMzI0LCAxMzIzMzMsIDEzMjM0MiwgMTMyMzUxLCAxMzIzNjAsIDEzMjM2OSwgMTMyMzc4LCAxMzIzODYsIDEzMjM5NCwgCisgICAgMTMyNDAxLCAxMzI0MTEsIDEzMjQyMCwgMTMyNDI4LCAxMzI0MzUsIDEzMjQ0NSwgMTMyNDU0LCAxMzI0NTgsIDEzMjQ2MiwgCisgICAgMTMyNDY2LCAxMzI0NzAsIDEzMjQ3NCwgMTMyNDc4LCAxMzI0ODIsIDEzMjQ4NiwgMTMyNDkwLCAxMzI0OTQsIDEzMjQ5NywgCisgICAgMTMyNTAxLCAxMzI1MDQsIDEzMjUwNywgMTMyNTExLCAxMzI1MTUsIDEzMjUxOSwgMTMyNTIzLCAxMzI1MjcsIDEzMjUzMSwgCisgICAgMTMyNTM1LCAxMzI1MzksIDEzMjU0MywgMTMyNTQ3LCAxMzI1NTEsIDEzMjU1NSwgMTMyNTU5LCAxMzI1NjMsIDEzMjU2NywgCisgICAgMTMyNTcxLCAxMzI1NzUsIDEzMjU3OSwgMTMyNTgzLCAxMzI1ODcsIDEzMjU5MSwgMTMyNTk1LCAxMzI1OTksIDEzMjYwMywgCisgICAgMTMyNjA3LCAxMzI2MTEsIDEzMjYxNSwgMTMyNjE5LCAxMzI2MjMsIDEzMjYyNywgMTMyNjMxLCAxMzI2MzUsIDEzMjYzOSwgCisgICAgMTMyNjQzLCAxMzI2NDcsIDEzMjY1MSwgMTMyNjU1LCAxMzI2NTksIDEzMjY2MywgMTMyNjY3LCAxMzI2NzEsIDEzMjY3NSwgCisgICAgMTMyNjc5LCAxMzI2ODMsIDEzMjY4NywgMTMyNjkxLCAxMzI2OTUsIDEzMjY5OSwgMTMyNzAzLCAxMzI3MDcsIDEzMjcxMSwgCisgICAgMTMyNzE1LCAxMzI3MTksIDEzMjcyMywgMTMyNzI3LCAxMzI3MzEsIDEzMjczNSwgMTMyNzM5LCAxMzI3NDMsIDEzMjc0NywgCisgICAgMTMyNzUxLCAxMzI3NTUsIDEzMjc1OSwgMTMyNzYzLCAxMzI3NjcsIDEzMjc3MSwgMTMyNzc1LCAxMzI3NzksIDEzMjc4MywgCisgICAgMTMyNzg3LCAxMzI3OTEsIDEzMjc5NSwgMTMyNzk5LCAxMzI4MDMsIDEzMjgwNywgMTMyODExLCAxMzI4MTUsIDEzMjgxOSwgCisgICAgMTMyODIzLCAxMzI4MjcsIDEzMjgzMSwgMTMyODM1LCAxMzI4MzksIDEzMjg0MywgMTMyODQ3LCAxMzI4NTAsIDEzMjg1NCwgCisgICAgMTMyODU4LCAxMzI4NjIsIDEzMjg2NiwgMTMyODcwLCAxMzI4NzQsIDEzMjg3OCwgMTMyODgyLCAxMzI4ODYsIDEzMjg5MCwgCisgICAgMTMyODk0LCAxMzI4OTgsIDEzMjkwMiwgMTMyOTA2LCAxMzI5MTAsIDEzMjkxNCwgMTMyOTE4LCAxMzI5MjIsIDEzMjkyNiwgCisgICAgMTMyOTMwLCAxMzI5MzQsIDEzMjkzOCwgMTMyOTQyLCAxMzI5NDYsIDEzMjk1MCwgMTMyOTU0LCAxMzI5NTgsIDEzMjk2MiwgCisgICAgMTMyOTY2LCAxMzI5NzAsIDEzMjk3NCwgMTMyOTc4LCAxMzI5ODIsIDEzMjk4NiwgMTMyOTkwLCAxMzI5OTQsIDEzMjk5OCwgCisgICAgMTMzMDAyLCAxMzMwMDYsIDEzMzAxMCwgMTMzMDE0LCAxMzMwMTgsIDEzMzAyMiwgMTMzMDI2LCAxMzMwMzAsIDEzMzAzNCwgCisgICAgMTMzMDM4LCAxMzMwNDIsIDEzMzA0NiwgMTMzMDUwLCAxMzMwNTQsIDEzMzA1OCwgMTMzMDYyLCAxMzMwNjYsIDEzMzA3MCwgCisgICAgMTMzMDc0LCAxMzMwNzgsIDEzMzA4MiwgMTMzMDg2LCAxMzMwOTAsIDEzMzA5NCwgMTMzMDk4LCAxMzMxMDIsIDEzMzEwNiwgCisgICAgMTMzMTEwLCAxMzMxMTQsIDEzMzExOCwgMTMzMTIyLCAxMzMxMjYsIDEzMzEzMCwgMTMzMTM0LCAxMzMxMzgsIDEzMzE0MiwgCisgICAgMTMzMTQ2LCAxMzMxNTAsIDEzMzE1NCwgMTMzMTU4LCAxMzMxNjIsIDEzMzE2NiwgMTMzMTcwLCAxMzMxNzQsIDEzMzE3OCwgCisgICAgMTMzMTgyLCAxMzMxODYsIDEzMzE5MCwgMTMzMTk0LCAxMzMxOTgsIDEzMzIwMiwgMTMzMjA2LCAxMzMyMTAsIDEzMzIxNCwgCisgICAgMTMzMjE4LCAxMzMyMjIsIDEzMzIyNiwgMTMzMjMwLCAxMzMyMzQsIDEzMzIzOCwgMTMzMjQyLCAxMzMyNDYsIDEzMzI1MCwgCisgICAgMTMzMjU0LCAxMzMyNTgsIDEzMzI2MiwgMTMzMjY2LCAxMzMyNzAsIDEzMzI3NCwgMTMzMjc4LCAxMzMyODIsIDEzMzI4NiwgCisgICAgMTMzMjkwLCAxMzMyOTQsIDEzMzI5OCwgMTMzMzAyLCAxMzMzMDYsIDEzMzMxMCwgMTMzMzE0LCAxMzMzMTgsIDEzMzMyMiwgCisgICAgMTMzMzI2LCAxMzMzMzAsIDEzMzMzNCwgMTMzMzM4LCAxMzMzNDIsIDEzMzM0NiwgMTMzMzUwLCAxMzMzNTQsIDEzMzM1OCwgCisgICAgMTMzMzYyLCAxMzMzNjYsIDEzMzM3MCwgMTMzMzc0LCAxMzMzNzgsIDEzMzM4MiwgMTMzMzg2LCAxMzMzOTAsIDEzMzM5NCwgCisgICAgMTMzMzk4LCAxMzM0MDIsIDEzMzQwNiwgMTMzNDEwLCAxMzM0MTQsIDEzMzQxOCwgMTMzNDIyLCAxMzM0MjYsIDEzMzQzMCwgCisgICAgMTMzNDM0LCAxMzM0MzgsIDEzMzQ0MiwgMTMzNDQ2LCAxMzM0NTAsIDEzMzQ1NCwgMTMzNDU4LCAxMzM0NjIsIDEzMzQ2NiwgCisgICAgMTMzNDcwLCAxMzM0NzQsIDEzMzQ3OCwgMTMzNDgyLCAxMzM0ODYsIDEzMzQ5MCwgMTMzNDk0LCAxMzM0OTgsIDEzMzUwMiwgCisgICAgMTMzNTA2LCAxMzM1MTAsIDEzMzUxNCwgMTMzNTE4LCAxMzM1MjIsIDEzMzUyNiwgMTMzNTMwLCAxMzM1MzQsIDEzMzUzOCwgCisgICAgMTMzNTQyLCAxMzM1NDYsIDEzMzU1MCwgMTMzNTU0LCAxMzM1NTgsIDEzMzU2MiwgMTMzNTY2LCAxMzM1NzAsIDEzMzU3NCwgCisgICAgMTMzNTc4LCAxMzM1ODIsIDEzMzU4NiwgMTMzNTkwLCAxMzM1OTQsIDEzMzU5OCwgMTMzNjAyLCAxMzM2MDYsIDEzMzYxMCwgCisgICAgMTMzNjE0LCAxMzM2MTksIDEzMzYyNCwgMTMzNjI5LCAxMzM2MzMsIDEzMzYzOSwgMTMzNjQ2LCAxMzM2NTMsIDEzMzY2MCwgCisgICAgMTMzNjY3LCAxMzM2NzQsIDEzMzY4MSwgMTMzNjg4LCAxMzM2OTUsIDEzMzcwMiwgMTMzNzA5LCAxMzM3MTYsIDEzMzcyMywgCisgICAgMTMzNzMwLCAxMzM3MzYsIDEzMzc0MywgMTMzNzUwLCAxMzM3NTYsIDEzMzc2MywgMTMzNzcwLCAxMzM3NzcsIDEzMzc4NCwgCisgICAgMTMzNzkxLCAxMzM3OTgsIDEzMzgwNSwgMTMzODEyLCAxMzM4MTksIDEzMzgyNiwgMTMzODMzLCAxMzM4NDAsIDEzMzg0NywgCisgICAgMTMzODUzLCAxMzM4NTksIDEzMzg2NiwgMTMzODczLCAxMzM4ODIsIDEzMzg5MSwgMTMzOTAwLCAxMzM5MDksIDEzMzkxNCwgCisgICAgMTMzOTE5LCAxMzM5MjUsIDEzMzkzMSwgMTMzOTM3LCAxMzM5NDMsIDEzMzk0OSwgMTMzOTU1LCAxMzM5NjEsIDEzMzk2NywgCisgICAgMTMzOTczLCAxMzM5NzksIDEzMzk4NSwgMTMzOTkxLCAxMzM5OTYsIDEzNDAwMiwgMTM0MDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIG5hbWUtPmNvZGUgZGljdGlvbmFyeSAqLwogc3RhdGljIHVuc2lnbmVkIGludCBjb2RlX2hhc2hbXSA9IHsKICAgICA3NDIyNCwgNDg1MSwgMCwgNzgxNTYsIDc4NDk5LCAxMjg2ODUsIDc5MjksIDAsIDE5NDY4MiwgMTI3NzY2LCA3ODUwMCwgCi0gICAgNjY0ODAsIDAsIDQyODMzLCA3NDUyOSwgMTIwNjQsIDAsIDU5NiwgMCwgMTI4MTAzLCAxMzE5MiwgODY1MSwgMCwgMCwgCisgICAgNjY0ODAsIDAsIDQyODMzLCA3NDUyOSwgMTIwNjQsIDAsIDU5NiwgOTgzODEyLCA2OTg1MCwgMTMxOTIsIDg2NTEsIDAsIDAsIAogICAgIDEyMDIxOCwgMTI5OTUsIDY0ODY1LCAxMzczLCAwLCAwLCA1ODE2LCAxMTkwNjcsIDY0ODEwLCA0MjMxLCA2ODI1LCA0Mjg5NywgCiAgICAgNDIzMywgNDIzNCwgNDIzMiwgOTE3ODM2LCA3NDQxNSwgMTIwMjEwLCA2Mzg0LCA5MTc4NDAsIDc4MTA4LCA4ODUxLCAwLCAKLSAgICAxMjg1NTMsIDAsIDQxNjAxLCA4ODc0LCAwLCA3NzQ4LCAwLCAwLCAwLCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCA5MTg4LCAKLSAgICA0MTYwMCwgMCwgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDAsIDAsIDAsIDAsIDY1MjQwLCAxMTk1MSwgMCwgMzQwNCwgCi0gICAgMCwgMCwgMCwgMTc1OSwgMCwgNDEwNzYsIDY4MzgzLCAxMjA1NzIsIDExOTIwNSwgNjY1NzcsIDAsIDEyNzc2NCwgNjU4NTksIAotICAgIDAsIDc0MDQsIDAsIDAsIDAsIDAsIDY1OTA4LCA5ODM0LCAzMDU1LCA5ODUyLCAwLCA2NTI4OCwgMCwgMTEzOTgsIDAsIAotICAgIDkyNDE3LCAxMTkyNTUsIDAsIDAsIDYwMywgNzQzOTgsIDQzNTQ4LCAwLCAwLCA5MTc4MjQsIDMzNTAsIDEyMDgxNywgCi0gICAgNjQzMTgsIDkxNzgyOCwgMTI3MDg5LCAzMzkwLCA3NDQ4MywgNDMyNjUsIDEyMDU5OSwgOTE3ODMwLCA3ODU3MywgMCwgCi0gICAgMTkxOSwgMzQwMCwgMTIwNjUxLCAxMjc5NDQsIDExNjQ3LCA5MTc1NDAsIDY2NDQ2LCA2NDE0MSwgODU2MiwgMjEyMSwgCi0gICAgNjQxMzgsIDQwNDMsIDg3MTIsIDY0MTM0LCA2NDEzMywgMTEyOTcsIDAsIDAsIDExOTY2LCA2NDEyOCwgMTI4NTg3LCAwLCAwLCAKLSAgICA2NDEzMiwgMTA4NjcsIDY0MTMwLCA2NDEyOSwgMCwgNDMzNzQsIDk3NzksIDI3NjQsIDY2MDAyLCAxMDE2NywgOTQ3MSwgMCwgCi0gICAgNjYwMjEsIDAsIDAsIDU0NTcsIDU0NDAsIDg4NTcsIDEyODc3MSwgNjUyODIsIDI4NDMsIDUzNTUsIDEyNzkyOCwgMCwgMCwgCi0gICAgNTE5NCwgMTE2NTcsIDQzOTg0LCAxMjgyOTIsIDAsIDAsIDAsIDAsIDEyNzAyNywgMTA3MTcsIDY0NTcwLCA1NjMwLCAKLSAgICA3NDM1MCwgNjQxNDMsIDEwNjgyLCAwLCAxMDYwMiwgODAwLCA0MjQ5OSwgNjYxODYsIDAsIDAsIDY0OTMwLCAxMTYzMSwgCi0gICAgNjQxNDYsIDY0MTQ1LCA2NDE0NCwgNzYyLCAxMzE3MiwgMTE4ODU5LCAxOTQ2NjEsIDY0NDY4LCAxMDkwNiwgMTM1MywgCi0gICAgNjk2MCwgMCwgMCwgNTgyOCwgODcyNCwgOTE3ODA2LCA4OTMzLCAxNjAxLCA0MjI0NCwgODU4LCA3MDgwLCA2NDEwOSwgCi0gICAgNjQxMDgsIDgwOTAsIDAsIDc0NDAxLCA5MTc4MTEsIDU4NywgMCwgMTI4MTMxLCAwLCAwLCAwLCA3ODIxNCwgMjc1MCwgCi0gICAgNzQyMTgsIDU1NiwgNjQxNTgsIDY0MTU3LCAwLCAxMjIxMywgMTk0Njc4LCAyNzYwLCAwLCAwLCAwLCAxOTQ3OTQsIDY0MTU2LCAKLSAgICA2NDE1NSwgNDI0OTYsIDAsIDY0MTUxLCA2NDE1MCwgMTI2NzksIDEwMDUzLCAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgCi0gICAgMCwgMCwgNDgzOSwgMCwgMCwgMTg3NCwgMTE5MDE2LCAwLCA2NTc3LCA2NDEyNSwgNjQxMjQsIDY0MTIzLCAwLCAxMjc1MzEsIAotICAgIDkyNTM0LCA3MDA3LCA3NTkwLCA2NTQ0MywgOTAzNiwgOTI1NTAsIDY0MTIyLCA3NDQyMiwgNjY2MDksIDAsIDY0MTE3LCAKLSAgICA2NDExNiwgNjI4NywgNjQxMTQsIDI3MjUsIDY0MTIwLCA2NDExOSwgNDM5ODEsIDQyMTI4LCAxMjc4NDIsIDExNzcsIAotICAgIDY1NjAxLCAxMjMyMiwgNjQxMDYsIDY5NjQwLCAxMjczMDYsIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgMCwgMTA0NTMsIAotICAgIDY0MTA0LCA3MTg4LCA3OTk3LCAwLCA3Mzg5LCAwLCA4NzA1LCA2NDA5NywgNjQwOTYsIDk1NzEsIDUyOCwgMTI4NjcxLCAKLSAgICA0NDAxNywgMTE0MjksIDAsIDAsIDAsIDkxNzk5MCwgNzM4NDEsIDAsIDAsIDkwNTYsIDY0MzEzLCA2MTg4LCAxMjAwMTksIAotICAgIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgNjQwNjUsIDY0MDcyLCA2NDA3MSwgNjMsIDcyMzMsIDkyMjEyLCAwLCA0MTkwNCwgCi0gICAgNjYzOSwgNjQwNjQsIDAsIDEyODM0NCwgMCwgMTE3NiwgMTE4OTU5LCAxMjc5MzAsIDgxNjIsIDEyODY2NywgMCwgMCwgCi0gICAgMTIwNTE5LCA2NjM3NiwgNjYyNDIsIDExNDE1LCA0MzMzLCA5ODU1LCA2NDExMiwgNjQ2NDIsIDAsIDUzODgsIDAsIDAsIDAsIAotICAgIDc3MTQsIDY2MjIyLCAwLCA3NzY4LCAwLCA0MTk5LCA2NDcwOCwgMCwgMCwgMCwgODcwOCwgOTU2MCwgNjQwNzcsIDY0MDc2LCAKLSAgICA4OTk2LCA0OTkyLCA0NDcxLCA0MjYyMiwgNjQwNzksIDY0MDc4LCA5MjE3OSwgMCwgMCwgMCwgNjQ2MTUsIDQxOTE1LCAwLCAKLSAgICAxMjA3NSwgOTIyMTEsIDAsIDUxNzQsIDAsIDAsIDEyNzU1NywgMzEyMywgMCwgMTI2ODUsIDEyNzkwNCwgODQwOCwgNjQ3MDQsIAotICAgIDAsIDAsIDkyMjMsIDAsIDQxNjE2LCAwLCA3Mzc5NywgMCwgMTExNiwgMTI4MjA0LCA0MzA0OSwgNzEzNiwgNDMwNTAsIAotICAgIDg1NDgsIDEyMDQ4NSwgMCwgMTE5MDYxLCA5MTc5OTksIDAsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIDkzMjIsIDAsIDEyMDU5NSwgCi0gICAgNjQwOTUsIDY0MDk0LCA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgMCwgMCwgMTE0MzQsIDY0MDgzLCAKLSAgICA2NDA4MiwgMTEzMjksIDc3MzcsIDY0MDg3LCA2NDA4NiwgNjQwODUsIDY0MDg0LCAxOTQ4MTcsIDk5MjcsIDQxMzM1LCAKLSAgICA0MTE4LCAxNzk3LCAwLCA0MTMzNCwgMCwgNDYsIDQzNDQ4LCAxMjc4ODEsIDI5OCwgMCwgMTI4MTE0LCAwLCA0MjYyNywgMCwgCi0gICAgMzIsIDYxODcsIDExOTA1MiwgMTE0OTUsIDExNDU5LCAzNjY1LCAwLCA0Mjg3MSwgMCwgMTk5MjMsIDc0MzM1LCAwLCAKLSAgICAxMjcxOTIsIDY2MjM5LCA0MjI2NCwgNjQ0MDMsIDQ0MTIsIDcyNDAsIDkyNDk1LCAwLCAwLCA2NTc1OCwgMTI3NTAsIDQxODEsIAotICAgIDg1NDQsIDAsIDEyMDE5OSwgOTE3ODk3LCAxMjAxOTgsIDY5ODA5LCA2MTgxLCA2NTAxNCwgMCwgMCwgMCwgMzYzOSwgCi0gICAgMTE5NTg4LCAwLCAwLCAxMTg5MDQsIDEwMDczLCAxMjAyMDYsIDEyODg2MiwgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIDc0OTgsIAotICAgIDEwOTgsIDkyNTY1LCAxMjAyMDUsIDAsIDAsIDEwMjA3LCA4Nzg5LCAwLCAwLCAwLCAwLCA5MjM0LCAwLCA2MTgyLCAwLCAKLSAgICA2NTA1OCwgMCwgMCwgMCwgMCwgNTQ3MSwgOTQ2MSwgNTU3MywgMTE4OTM2LCA1NDczLCA0NCwgMCwgNjYyNDQsIDExODkwNywgCi0gICAgMCwgNjYyMzgsIDEyODQ0LCAwLCAxNjIyLCA3NzY3LCAxOTAwLCA0MTMzOSwgMTE0NTgsIDAsIDAsIDY1ODEsIDU1NzYsIDAsIAotICAgIDY0NDA1LCA0MTMzNywgMCwgNDE2MzEsIDg5NDcsIDY4MzkwLCAxMjc4NDQsIDQxNjk0LCAwLCAwLCA3OTA4LCAwLCAxMDQwOCwgCi0gICAgNjU3OSwgMCwgNjQ2MTgsIDAsIDEyMDE0NywgMjEzOCwgNjU4MywgNzc2MSwgMTI3MDEwLCAxMjA1MDQsIDE5NDgyOCwgMCwgCi0gICAgNTA1OCwgNDEwMTAsIDk5OTIsIDEyODI5OSwgNTA1NywgMCwgMCwgNzQ1MzgsIDUwNTQsIDExODk1MSwgMTk0OTcxLCAKLSAgICA3ODYwNiwgMCwgMTQzNywgNDE2MTcsIDY1OCwgMzQ5NywgMTI4NTA5LCA3NDg2LCA1MDYxLCA1MDYwLCA0MjM1LCAwLCAwLCAKLSAgICAwLCAxMjExMywgNDIzNiwgNDcyNywgMCwgMCwgNzY5MywgMTA3NDksIDAsIDc0ODgsIDU3NzMsIDk3OCwgMTI4MTM0LCAwLCAKLSAgICA0MTYxOSwgMTAyMzksIDY4NjExLCAwLCA2NjIwOSwgMCwgMTI4NzAwLCA5NzQ4LCAwLCAxMjc1MjQsIDAsIDAsIDAsIDAsIAotICAgIDE5NTA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTM0MSwgMTE5NTk2LCAyMzc5LCAxMTMyNSwgMCwgNjQ2NjgsIDY3ODU0LCAKLSAgICA4MTI1LCAxMjA1NDUsIDY3NDMsIDExOTE3NSwgOTE3OTQwLCAyMzY5LCAwLCAwLCAwLCAxMTkyMzUsIDc0MDkyLCA3MzkzNiwgCi0gICAgNzAwOCwgNDM2NjAsIDAsIDAsIDAsIDIzNjcsIDEyNzgyNywgMCwgMjY0LCAyMzc1LCA4MDYwLCA2MTk0LCAxMTk4NTgsIAotICAgIDE4NDQsIDExOTA4NCwgMCwgNjAxOSwgMCwgMCwgNjk2MSwgMCwgMTE4ODM5LCAwLCA4ODAwLCAwLCA0Mjg2MiwgNDQ2MywgCi0gICAgNjU1ODEsIDYxOTIsIDE5NDY3NiwgNDI3NzEsIDAsIDkyMzMzLCA3MjUsIDY1MDQyLCAxMTg3OTcsIDEyMDgwMCwgMCwgCi0gICAgMTI4OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzI2MSwgMTIwNzA3LCAwLCAwLCA1MDc0LCA1MDczLCAxMjg3OTAsIDg5ODMsIAotICAgIDExODk4MSwgNzQ0OTMsIDAsIDUwNzIsIDEyODA3MSwgNjE5OCwgMTE2MTQsIDAsIDE5NiwgMCwgMCwgMCwgNDkyOSwgCi0gICAgMTIwMzQyLCAwLCAwLCAwLCAwLCA0Mjg0NywgMCwgMCwgMCwgNDkzNCwgMCwgNDEzMjMsIDk3NTgsIDAsIDkyMjg5LCAKLSAgICAxMjc5MTcsIDQyNTg0LCAwLCA0MzI5LCA0MTMyMSwgNDk3OSwgMzA0OCwgNzc1MiwgNDEzMjAsIDAsIDc0NDE4LCAxMjgxOSwgCi0gICAgMCwgNTA3MSwgMCwgMzY0MiwgMCwgNTA3MCwgMTAwNDIsIDExODgzNSwgMzk4NywgNTA2OCwgMCwgODkwOSwgNzg2NTAsIAotICAgIDc4NjQ5LCAwLCAxMDYzNiwgNzM5ODEsIDExODA2LCA0MzE2NywgNDUzMSwgMTI0NSwgOTEwNSwgNjY0NjMsIDQ5MjEsIAotICAgIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAxOTQ2MTksIDAsIDAsIDY0NzA5LCAwLCAxOTQ2MjAsIDc4ODgwLCA0OTIyLCAKLSAgICAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAwLCAwLCA5NTI2LCA0OTIwLCAwLCA5NDgsIDAsIDEyMDIwOCwgNDkzMCwgMCwgCi0gICAgOTIxNzUsIDEyMDI3NSwgNDkzMywgMCwgMCwgMTE4OTg1LCA0OTI4LCAwLCAwLCA3NDc3MCwgMTIwMTk0LCAwLCA3MjIsIAotICAgIDE5NDkzNCwgMTk5MDgsIDEyNjM3LCAxMjc0ODUsIDExOTg1NSwgODc1MywgMTUwOSwgMCwgNTQ2OCwgOTUxMSwgMTI3NDc0LCAKLSAgICAxMjc0NzcsIDE2NzIsIDYyMDUsIDEwODY0LCA3NDU4NiwgMTI3NDgwLCA5MjMxMCwgMTI3NDY2LCA3ODU1NSwgMTI3NDY4LCAKLSAgICA3Mzg2MywgMTI3NDcwLCAxMjc0NzMsIDQxNjA3LCAxMjAxMTUsIDE2NzksIDEyMDExNiwgMTIwMTgwLCAxMjAxMTMsIAotICAgIDEyNzQ2MiwgNzAwNSwgNDE2MDksIDk1ODAsIDAsIDQwMSwgMCwgNDM3NzksIDY5NjgsIDU3NjEsIDM0MiwgODU1MywgMCwgCi0gICAgODE0MywgMTI3MTE1LCAxMTk4MywgOTIyNDksIDYyNCwgNzQ1MDgsIDQwNTcsIDQzNzg4LCA1MDc4LCA3NDI1OCwgMTI0NzgsIAotICAgIDAsIDUwNzYsIDAsIDE5NDYwOSwgMCwgMTIwMDk3LCA2ODUsIDkwMjUsIDE1MjQsIDEyNjE4LCAwLCA1NTM5LCAwLCA5MjUyMywgCi0gICAgMTIwMTAyLCA3MTM4LCAxMjA1NTIsIDAsIDE5NDYxMSwgNzg3NTIsIDAsIDEyNTIwLCA4MDU4LCA5NzMyLCAwLCA1MDgwLCAKLSAgICA2NDc3NSwgNTAzNiwgNTAzNSwgMTIwNTkwLCA0MjYwNCwgMCwgMCwgODA3NCwgMjc1LCAxMzI5MSwgMTkwNywgNzg4MzgsIAorICAgIDEyODU1MywgMCwgNDE2MDEsIDg4NzQsIDk4Mzc3NCwgNzc0OCwgMCwgMCwgMCwgMTI3OTM5LCA0MTYwMywgOTc4NCwgMCwgCisgICAgOTE4OCwgNDE2MDAsIDAsIDEyMDYxOCwgMTI4MzQzLCAxNDU3LCAzNTM1LCAwLCAwLCAwLCAwLCA2NTI0MCwgMTE5NTEsIDAsIAorICAgIDM0MDQsIDAsIDAsIDAsIDE3NTksIDAsIDQxMDc2LCA2ODM4MywgMTIwNTcyLCAxMTkyMDUsIDY2NTc3LCA5NDAxNCwgCisgICAgMTI3NzY0LCA2NTg1OSwgMCwgNzQwNCwgMCwgMCwgMCwgMCwgNjU5MDgsIDk4MzQsIDMwNTUsIDk4NTIsIDk4Mzg1MSwgCisgICAgNjUyODgsIDAsIDExMzk4LCAwLCA5MjQxNywgMTE5MjU1LCAwLCAwLCA2MDMsIDc0Mzk4LCA0MzU0OCwgMCwgMCwgOTE3ODI0LCAKKyAgICAzMzUwLCAxMjA4MTcsIDY0MzE4LCA5MTc4MjgsIDEyNzA4OSwgMzM5MCwgNzQ0ODMsIDQzMjY1LCAxMjA1OTksIDkxNzgzMCwgCisgICAgNzg1NzMsIDAsIDE5MTksIDM0MDAsIDEyMDY1MSwgMTI3OTQ0LCAxMTY0NywgOTE3NTQwLCA2NjQ0NiwgNjQxNDEsIDg1NjIsIAorICAgIDIxMjEsIDY0MTM4LCA0MDQzLCA4NzEyLCA2NDEzNCwgNjQxMzMsIDExMjk3LCA5ODM2NzksIDk4MzE1MiwgMTE5NjYsIAorICAgIDY0MTI4LCAxMjg1ODcsIDAsIDAsIDY0MTMyLCAxMDg2NywgNjQxMzAsIDY0MTI5LCA5ODM4MzUsIDQzMzc0LCA5Nzc5LCAKKyAgICAyNzY0LCA2NjAwMiwgMTAxNjcsIDk0NzEsIDAsIDY2MDIxLCAwLCAwLCA1NDU3LCA1NDQwLCA4ODU3LCA5Mzk4MSwgNjUyODIsIAorICAgIDI4NDMsIDUzNTUsIDEyNzkyOCwgOTgzOTU2LCAwLCA1MTk0LCAxMTY1NywgNDM5ODQsIDEyODI5MiwgMCwgOTgzNjIwLCAwLCAKKyAgICAwLCAxMjcwMjcsIDEwNzE3LCA2NDU3MCwgNTYzMCwgNTM5NiwgNjQxNDMsIDEwNjgyLCAwLCAxMDYwMiwgODAwLCA0MjQ5OSwgCisgICAgNjYxODYsIDAsIDAsIDY0OTMwLCAxMTYzMSwgNjQxNDYsIDY0MTQ1LCA2NDE0NCwgNzYyLCAxMzE3MiwgMTE4ODU5LCAKKyAgICAxOTQ2NjEsIDY0NDY4LCAxMDkwNiwgMTM1MywgNjk2MCwgMCwgMCwgNTgyOCwgODcyNCwgOTE3ODA2LCA4OTMzLCAxNjAxLCAKKyAgICA0MjI0NCwgODU4LCA3MDgwLCA2NDEwOSwgNjQxMDgsIDgwOTAsIDAsIDc0NDAxLCA5MTc4MTEsIDU4NywgMCwgMTI4MTMxLCAKKyAgICAwLCAwLCAwLCA3ODIxNCwgMjc1MCwgNzQyMTgsIDU1NiwgNjQxNTgsIDY0MTU3LCA5ODM5NDAsIDEyMjEzLCAxOTQ2NzgsIAorICAgIDI3NjAsIDAsIDAsIDAsIDE5NDc5NCwgNjQxNTYsIDY0MTU1LCA0MjQ5NiwgMCwgNjQxNTEsIDY0MTUwLCAxMjY3OSwgCisgICAgMTAwNTMsIDEwNDIxLCAxMTA5MywgNjQxNTMsIDY0MTUyLCAwLCAwLCA0ODM5LCAwLCAwLCAxODc0LCAxMTkwMTYsIDAsIAorICAgIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDAsIDEyNzUzMSwgOTI1MzQsIDcwMDcsIDc1OTAsIDY1NDQzLCA5MDM2LCAKKyAgICA5MjU1MCwgNjQxMjIsIDc0NDIyLCA2NjYwOSwgMCwgNjQxMTcsIDY0MTE2LCA2Mjg3LCA2NDExNCwgMjcyNSwgNjQxMjAsIAorICAgIDY0MTE5LCA0Mzk4MSwgNDIxMjgsIDEyNzg0MiwgMTE3NywgNjU2MDEsIDEyMzIyLCA2NDEwNiwgNjk2NDAsIDEyNzMwNiwgCisgICAgNjQxMDIsIDc4NTksIDE5NDUsIDY0MDk5LCAwLCAxMDQ1MywgNjQxMDQsIDcxODgsIDc5OTcsIDAsIDczODksIDk4MzE2MSwgCisgICAgODcwNSwgNjQwOTcsIDY0MDk2LCA5NTcxLCA1MjgsIDEyODY3MSwgNDQwMTcsIDExNDI5LCA3MTM0NywgMCwgOTgzMDc3LCAKKyAgICA5MTc5OTAsIDczODQxLCAwLCAwLCA5MDU2LCA2NDMxMywgNjE4OCwgMTIwMDE5LCA2MTU1LCA2NDA2OCwgMTgyMywgNjQwNjYsIAorICAgIDY0MDY1LCA2NDA3MiwgNjQwNzEsIDYzLCA3MjMzLCA5MjIxMiwgMCwgNDE5MDQsIDY2MzksIDY0MDY0LCA5ODM3NjYsIAorICAgIDEyODM0NCwgMCwgMTE3NiwgMTE4OTU5LCAxMjc5MzAsIDgxNjIsIDEyODY2NywgOTgzODIyLCAwLCAxMjA1MTksIDY2Mzc2LCAKKyAgICA2NjI0MiwgMTE0MTUsIDQzMzMsIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgMCwgMCwgMCwgNzcxNCwgNjYyMjIsIAorICAgIDY5OTAyLCA3NzY4LCAwLCA0MTk5LCA2NDcwOCwgOTgzNDEzLCAwLCAwLCA4NzA4LCA5NTYwLCA2NDA3NywgNjQwNzYsIAorICAgIDg5OTYsIDQ5OTIsIDQ0NzEsIDQyNjIyLCA2NDA3OSwgNjQwNzgsIDkyMTc5LCAwLCAxMjY1NzAsIDAsIDY0NjE1LCA0MTkxNSwgCisgICAgMCwgMTIwNzUsIDcwMDYyLCAwLCA1MTc0LCA5ODMyMTUsIDAsIDEyNzU1NywgMzEyMywgMCwgMTI2ODUsIDEyNzkwNCwgCisgICAgODQwOCwgNjQ3MDQsIDAsIDAsIDkyMjMsIDAsIDQxNjE2LCA2Nzk5OSwgNzM3OTcsIDAsIDExMTYsIDEyODIwNCwgNDMwNDksIAorICAgIDcxMzYsIDQzMDUwLCA4NTQ4LCAxMjA0ODUsIDAsIDExOTA2MSwgOTE3OTk5LCAwLCAxMzExNSwgNDM2NzUsIDY0MDkxLCAKKyAgICA5MzIyLCAwLCAxMjA1OTUsIDY0MDk1LCA2NDA5NCwgODExMSwgNjYyNDcsIDQyMzMyLCA2NDA4OSwgNjQwODgsIDYxOTksIDAsIAorICAgIDAsIDExNDM0LCA2NDA4MywgNjQwODIsIDExMzI5LCA3NzM3LCA2NDA4NywgNjQwODYsIDY0MDg1LCA2NDA4NCwgMTk0ODE3LCAKKyAgICA5OTI3LCA0MTMzNSwgNDExOCwgMTc5NywgMCwgNDEzMzQsIDAsIDQ2LCA0MzQ0OCwgMTI3ODgxLCAyOTgsIDAsIDEyODExNCwgCisgICAgMCwgNDI2MjcsIDAsIDMyLCA2MTg3LCAxMTkwNTIsIDExNDk1LCAxMTQ1OSwgMzY2NSwgOTgzNjAwLCA0Mjg3MSwgMCwgCisgICAgMTk5MjMsIDc0MzM1LCAwLCAxMjcxOTIsIDY2MjM5LCA0MjI2NCwgNjQ0MDMsIDQ0MTIsIDcyNDAsIDkyNDk1LCAwLCAKKyAgICA5ODM0NTgsIDY1NzU4LCAxMjc1MCwgNDE4MSwgODU0NCwgMCwgMTIwMTk5LCA5MTc4OTcsIDEyMDE5OCwgNjk4MDksIDYxODEsIAorICAgIDY1MDE0LCAwLCAwLCA5ODMxOTYsIDM2MzksIDExOTU4OCwgMCwgMCwgMTE4OTA0LCAxMDA3MywgMTIwMjA2LCAxMjg4NjIsIAorICAgIDEyNzE4NiwgNjg0MDksIDQyODQ0LCA3NDk4LCAxMDk4LCA5MjU2NSwgMTIwMjA1LCAwLCA5ODMxMTgsIDEwMjA3LCA4Nzg5LCAKKyAgICA5ODMyMjMsIDAsIDAsIDk4MzQ2NCwgOTIzNCwgMCwgNjE4MiwgOTgzNDY2LCA2NTA1OCwgMCwgOTgzNDcwLCA5ODM0NjcsIDAsIAorICAgIDU0NzEsIDk0NjEsIDU1NzMsIDExODkzNiwgNTQ3MywgNDQsIDAsIDY2MjQ0LCA5NDA3MiwgMCwgNjYyMzgsIDEyODQ0LCAwLCAKKyAgICAxNjIyLCA3NzY3LCAxOTAwLCA0MTMzOSwgMTE0NTgsIDAsIDAsIDY1ODEsIDU1NzYsIDAsIDY0NDA1LCA0MTMzNywgMCwgCisgICAgNDE2MzEsIDg5NDcsIDY4MzkwLCAxMjc4NDQsIDQxNjk0LCAwLCAwLCA3OTA4LCAwLCAxMDQwOCwgNjU3OSwgMCwgNjQ2MTgsIAorICAgIDAsIDEyMDE0NywgMjEzOCwgNjU4MywgNzc2MSwgMTI3MDEwLCAxMjA1MDQsIDE5NDgyOCwgMCwgNTA1OCwgNDEwMTAsIAorICAgIDk5OTIsIDEyODI5OSwgNTA1NywgMCwgMCwgNzQ1MzgsIDUwNTQsIDExODk1MSwgMTk0OTcxLCA3ODYwNiwgMCwgMTQzNywgCisgICAgNDE2MTcsIDY1OCwgMzQ5NywgMTI4NTA5LCA3NDg2LCA1MDYxLCA1MDYwLCA0MjM1LCAxMjc4NzgsIDAsIDEyODUyOSwgCisgICAgMTIxMTMsIDQyMzYsIDQ3MjcsIDAsIDAsIDc2OTMsIDEwNzQ5LCAwLCA3NDg4LCA1NzczLCA5NzgsIDEyODEzNCwgMCwgCisgICAgNDE2MTksIDEwMjM5LCA2ODYxMSwgMCwgNjYyMDksIDAsIDEyODcwMCwgOTc0OCwgOTgzOTQ3LCAxMjc1MjQsIDAsIDAsIDAsIAorICAgIDAsIDE5NTA4MywgMCwgOTgzODM0LCAwLCAwLCAwLCAwLCAwLCA5MzQxLCAxMTk1OTYsIDIzNzksIDExMzI1LCAwLCA2NDY2OCwgCisgICAgNjc4NTQsIDgxMjUsIDEyMDU0NSwgNjc0MywgMTE5MTc1LCA5MTc5NDAsIDIzNjksIDAsIDk4Mzk2MywgOTgzOTY0LCAKKyAgICAxMTkyMzUsIDc0MDkyLCA3MzkzNiwgNzAwOCwgNDM2NjAsIDAsIDAsIDAsIDIzNjcsIDEyNzgyNywgOTgzODQ4LCAyNjQsIAorICAgIDIzNzUsIDgwNjAsIDYxOTQsIDExOTg1OCwgMTg0NCwgMTE5MDg0LCAwLCA2MDE5LCAwLCAwLCA2OTYxLCAwLCAxMTg4MzksIAorICAgIDAsIDg4MDAsIDAsIDQyODYyLCA0NDYzLCA2NTU4MSwgNjE5MiwgMTk0Njc2LCA0Mjc3MSwgMCwgOTIzMzMsIDcyNSwgCisgICAgNjUwNDIsIDExODc5NywgMTIwODAwLCA5ODMwNDAsIDEyODkyLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcyNjEsIDEyMDcwNywgCisgICAgOTgzMTI4LCAwLCA1MDc0LCA1MDczLCAxMjg3OTAsIDg5ODMsIDExODk4MSwgNzQ0OTMsIDk4MzU2MSwgNTA3MiwgOTM5NzcsIAorICAgIDYxOTgsIDExNjE0LCAwLCAxOTYsIDAsIDAsIDAsIDQ5MjksIDEyMDM0MiwgMCwgMCwgMCwgMCwgNDI4NDcsIDAsIDAsIDAsIAorICAgIDQ5MzQsIDAsIDQxMzIzLCA5NzU4LCAwLCA5MjI4OSwgMTI3OTE3LCA0MjU4NCwgMCwgNDMyOSwgNDEzMjEsIDQ5NzksIAorICAgIDMwNDgsIDc3NTIsIDQxMzIwLCA5ODMwNDIsIDc0NDE4LCAxMjgxOSwgMCwgNTA3MSwgMCwgMzY0MiwgMCwgNTA3MCwgCisgICAgMTAwNDIsIDExODgzNSwgMzk4NywgNTA2OCwgMCwgODkwOSwgNzg2NTAsIDc4NjQ5LCA2OTkxNywgMTA2MzYsIDczOTgxLCAKKyAgICAxMTgwNiwgNDMxNjcsIDQ1MzEsIDEyNDUsIDkxMDUsIDY2NDYzLCA0OTIxLCAxMjAyMTksIDQ5MjYsIDY1NTQ0LCA3Mzg4NCwgCisgICAgMTk0NjE5LCAwLCAwLCA2NDcwOSwgMCwgMTk0NjIwLCA3ODg4MCwgNDkyMiwgMzI1LCA5OTIsIDExOTU2OCwgNDkyNSwgMCwgCisgICAgMCwgOTUyNiwgNDkyMCwgMCwgOTQ4LCAwLCAxMjAyMDgsIDQ5MzAsIDAsIDkyMTc1LCAxMjAyNzUsIDQ5MzMsIDEyMDIxMSwgCisgICAgMCwgMTE4OTg1LCA0OTI4LCAwLCAwLCA3NDc3MCwgMTIwMTk0LCAxMjY1NDgsIDcyMiwgMTk0OTM0LCAxOTkwOCwgMTI2MzcsIAorICAgIDEyNzQ4NSwgMTE5ODU1LCA4NzUzLCAxNTA5LCAwLCA1NDY4LCA5NTExLCAxMjc0NzQsIDEyNzQ3NywgMTY3MiwgNjIwNSwgCisgICAgMTA4NjQsIDc0NTg2LCAxMjc0ODAsIDcwMTAzLCAxMjc0NjYsIDc4NTU1LCAxMjc0NjgsIDczODYzLCAxMjY1NzcsIAorICAgIDEyNjUwMywgNDE2MDcsIDEyMDExNSwgMTY3OSwgMTIwMTE2LCAxMjAxODAsIDEyMDExMywgMTI3NDYyLCA3MDA1LCA0MTYwOSwgCisgICAgOTU4MCwgMCwgNDAxLCA2OTk0OSwgNDM3NzksIDY5NjgsIDU3NjEsIDM0MiwgODU1MywgMCwgODE0MywgMTI3MTE1LCAKKyAgICAxMTk4MywgOTIyNDksIDYyNCwgNzQ1MDgsIDQwNTcsIDQzNzg4LCA1MDc4LCA3NDI1OCwgMTI0NzgsIDAsIDUwNzYsIDAsIAorICAgIDE5NDYwOSwgMCwgMTIwMDk3LCA2ODUsIDkwMjUsIDE1MjQsIDEyNjE4LCAwLCA1NTM5LCAwLCA5MjUyMywgMTIwMTAyLCAKKyAgICA3MTM4LCAxMjA1NTIsIDAsIDE5NDYxMSwgNzg3NTIsIDAsIDEyNTIwLCA4MDU4LCA5NzMyLCAwLCA1MDgwLCA2NDc3NSwgCisgICAgNTAzNiwgNTAzNSwgMTIwNTkwLCA0MjYwNCwgOTgzNjQ3LCAwLCA4MDc0LCAyNzUsIDEzMjkxLCAxOTA3LCA3ODgzOCwgCiAgICAgNDQzMiwgMTI3MjcxLCA1MDMzLCAxMjcyNzMsIDEyNzI3MiwgNDgzNiwgMzg4OCwgNzM3OTIsIDEwNzI5LCA2NDU0NiwgCiAgICAgMTI3MjYyLCA0MzcwNCwgMTI3MjY0LCAxMjcyNTEsIDY3NTg4LCAxMTkwMDAsIDEyNzI1MiwgMTI3MjU1LCA4ODU4LCA2NDA5LCAKICAgICAxMjcyNTYsIDEyMDI1MiwgMTI4MTAwLCAwLCAwLCA2NjMyMSwgMCwgMTI4MTQsIDEyNzI0OCwgMzQzMiwgMTAyMTgsIDAsIAotICAgIDYwOTQsIDc2NDEsIDQyNDQ1LCAwLCA5MjQ4NywgNDI0MDYsIDE2NzYsIDc0MzIwLCAxOTQ2MDcsIDAsIDUwMzAsIDAsIDAsIAotICAgIDAsIDczODY5LCA5NjIyLCAwLCAwLCA2Nzg3LCAwLCAwLCAwLCAwLCAxMDU0NCwgMTI5MTksIDAsIDkyMjE4LCAwLCAwLCAwLCAKLSAgICAxMjA3ODksIDAsIDk0NywgMTE5ODM1LCAxOTQ1ODYsIDE5NDU4NSwgMTA5NjksIDExOTkzNSwgNzYxMywgOTI1NjIsIAotICAgIDExOTkzNiwgNDc5NSwgMTE5OTMwLCA3MDE4LCA3Mzc2LCAxMjAxODEsIDEyMDE5MiwgMTIwMjY4LCAwLCA0MzU2NywgCi0gICAgNzQwNTYsIDkxNzkxMCwgMTE4OTYzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIDcyMTgsIDc4OTUsIDQzOTUsIAotICAgIDQzNTM4LCAxMTk5MjYsIDExOTkyOSwgMTE5OTI4LCA3MjEzLCAxMTk5MjIsIDcyMTQsIDcyMTUsIDAsIDc0MTQxLCA4ODgwLCAKLSAgICA3Njg1LCA2NjQ1OSwgMTIwMTczLCA2NTU0MCwgMTE5NjE4LCA2MjUsIDgxODcsIDQyODYxLCAxMTEzLCA3MjM2LCA3OTE1LCAKLSAgICAzNjMwLCAxMjAxNzYsIDgxNzksIDc0MjY0LCA2Nzg4NiwgOTMxNiwgMTA5ODAsIDI0ODksIDY1NjI0LCA4MTUwLCAxMzU5LCAKLSAgICA2NzY1MiwgMTI3MzI5LCAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgMTIwODQsIDEyNzMyNCwgMTI3MzIxLCAKLSAgICA5MjI3OSwgMTI3MzE5LCAxMjczMjAsIDEyNzMxNywgMTI3MzE4LCAxMjczMTUsIDEyMjgzLCAxNjE2LCAzNzk1LCAwLCAKLSAgICA4Nzk1LCA2NjI0NSwgMCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAwLCAwLCAzMjM5LCAxMjczMTEsIDAsIDAsIDg0MzEsIAotICAgIDAsIDQyMTY0LCAwLCAxMTc3OCwgMTI2MjAsIDY4MjYsIDczNzczLCAxMTkwNzMsIDUwNDAsIDAsIDAsIDAsIDc4NDIwLCAwLCAKLSAgICA1MDM5LCAwLCA3ODQxOCwgMCwgNTAzOCwgMCwgMCwgMTMxODQsIDc0MjkzLCAwLCA2NDY0OCwgMCwgOTM1OSwgNzg0MTYsIDAsIAotICAgIDEyODc3MCwgNjUxNTcsIDY2NjIsIDAsIDAsIDM4NjMsIDczOTA5LCA0ODM1LCA1NTI2NiwgNDM0MzIsIDEyNzgyMiwgNDMwOSwgCi0gICAgNzEyNywgMTk0NTY5LCAwLCAxOTQ1NjgsIDEzMDEsIDAsIDQyNTg5LCA1NjksIDAsIDczODEzLCA3MTEsIDQzODksIDcxMzMsIAotICAgIDAsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDE5NDU3MCwgNDEzMzEsIDEwMDYsIDc0MjQwLCAwLCAxNTUwLCA4MjAxLCAKLSAgICA3MzczNywgNzYyNywgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCA2NTc4NCwgNzc5MDcsIDY1MjY3LCAzNzU4LCAwLCAKLSAgICA2NTc4MSwgNjQ3MzQsIDAsIDI0NDAsIDY1NzgwLCA3NzkxMywgODQ0OSwgMCwgNTAwOCwgMCwgMjExOCwgMCwgMTIxMjEsIAotICAgIDgyNTUsIDU1MTIsIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAyMTMzLCAxMTE5LCAxMjcwNjgsIDIxMTQsIAotICAgIDIxMTYsIDI0NTUsIDAsIDIxMjIsIDIxMjMsIDIxMjQsIDIxMjUsIDAsIDg3MTQsIDAsIDIxMTMsIDAsIDIxMTUsIDEyODE3NywgCi0gICAgMTI3OTA3LCA0MzcxMywgNTA1MiwgNjYyMjAsIDU4MjEsIDYxODYsIDY1Nzc4LCA2NTc3NSwgNTA1MSwgNjU3NzMsIDE0MjksIAotICAgIDQyNjQ3LCA1MDUwLCAzMDIsIDM4OCwgNDExMTUsIDczNSwgNjYzNywgNTkwNywgNjUwODgsIDAsIDEyNzI2LCA3NDU5NCwgCi0gICAgOTExNywgMCwgMTIwMDMsIDU1MTMsIDY2NjYsIDUwNTMsIDc0MjMwLCA1NTEwLCA3ODQ1MSwgMCwgNzg0NDcsIDI0NzAsIAorICAgIDYwOTQsIDc2NDEsIDQyNDQ1LCAwLCA5MjQ4NywgNDI0MDYsIDE2NzYsIDc0MzIwLCAxOTQ2MDcsIDk4MzE3NywgNTAzMCwgMCwgCisgICAgMCwgMCwgNzM4NjksIDk2MjIsIDAsIDY5OTQ0LCA2Nzg3LCAwLCAwLCAwLCA5ODM1ODMsIDEwNTQ0LCAxMjkxOSwgMCwgCisgICAgOTIyMTgsIDAsIDAsIDY5OTA2LCAxMjA3ODksIDAsIDk0NywgMTE5ODM1LCAxOTQ1ODYsIDE5NDU4NSwgMTA5NjksIAorICAgIDExOTkzNSwgNzYxMywgOTI1NjIsIDExOTkzNiwgNDc5NSwgMTE5OTMwLCA3MDE4LCA3Mzc2LCAxMjAxODEsIDEyMDE5MiwgCisgICAgMTIwMjY4LCAwLCA0MzU2NywgNzQwNTYsIDkxNzkxMCwgMTE4MzMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgCisgICAgNzIxOCwgNzg5NSwgNDM5NSwgNDM1MzgsIDExOTkyNiwgMTE5OTI5LCAxMTk5MjgsIDcyMTMsIDExOTkyMiwgNzIxNCwgCisgICAgNzIxNSwgOTgzODI3LCA3NDE0MSwgODg4MCwgNzY4NSwgNjY0NTksIDEyMDE3MywgNjU1NDAsIDExOTYxOCwgNjI1LCA4MTg3LCAKKyAgICA0Mjg2MSwgMTExMywgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCA4MTc5LCA3NDI2NCwgNjc4ODYsIDkzMTYsIDEwOTgwLCAKKyAgICAyNDg5LCA2NTYyNCwgODE1MCwgMTM1OSwgNjc2NTIsIDEyNzMyOSwgMTI3MzMwLCA3Mzc1NiwgNTA0MiwgNTA0MSwgNDI3NjksIAorICAgIDEyMDg0LCAxMjczMjQsIDEyNzMyMSwgOTIyNzksIDEyNzMxOSwgMTI3MzIwLCAxMjczMTcsIDEyNzMxOCwgMTI3MzE1LCAKKyAgICAxMjI4MywgMTYxNiwgMzc5NSwgMCwgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMCwgMCwgCisgICAgMzIzOSwgMTI3MzExLCAwLCAwLCA4NDMxLCAwLCA0MjE2NCwgMCwgMTE3NzgsIDEyNjIwLCA2ODI2LCA3Mzc3MywgMTE5MDczLCAKKyAgICA1MDQwLCAwLCAwLCA5ODM0MzUsIDc4NDIwLCAwLCA1MDM5LCAwLCA3ODQxOCwgMCwgNTAzOCwgMCwgMCwgMTMxODQsIAorICAgIDc0MjkzLCAwLCA2NDY0OCwgMCwgOTM1OSwgNzg0MTYsIDAsIDEyODc3MCwgNjUxNTcsIDY2NjIsIDAsIDAsIDM4NjMsIAorICAgIDczOTA5LCA0ODM1LCA1NTI2NiwgNDM0MzIsIDEyNzgyMiwgNDMwOSwgNzEyNywgMTk0NTY5LCAwLCAxOTQ1NjgsIDEzMDEsIAorICAgIDAsIDQyNTg5LCA1NjksIDAsIDczODEzLCA3MTEsIDQzODksIDcxMzMsIDAsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIAorICAgIDE5NDU3MCwgNDEzMzEsIDEwMDYsIDc0MjQwLCAwLCAxNTUwLCA4MjAxLCA3MzczNywgNzYyNywgNTQ5OSwgNTAzMSwgCisgICAgNzc5MDgsIDQyNzM4LCA2NTc4NCwgNzc5MDcsIDY1MjY3LCAzNzU4LCAwLCA2NTc4MSwgNjQ3MzQsIDcwMDczLCAyNDQwLCAKKyAgICA2NTc4MCwgNzc5MTMsIDg0NDksIDAsIDUwMDgsIDk4MzU3MiwgMjExOCwgMCwgMTIxMjEsIDgyNTUsIDU1MTIsIDczODc1LCAKKyAgICAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAyMTMzLCAxMTE5LCAxMjcwNjgsIDIxMTQsIDIxMTYsIDI0NTUsIDAsIDIxMjIsIAorICAgIDIxMjMsIDIxMjQsIDIxMjUsIDEyNzQ4NiwgODcxNCwgOTgzODExLCAyMTEzLCAwLCAyMTE1LCAxMjgxNzcsIDEyNzkwNywgCisgICAgNDM3MTMsIDUwNTIsIDY2MjIwLCA1ODIxLCA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIDY1NzczLCAxNDI5LCA0MjY0NywgCisgICAgNTA1MCwgMzAyLCAzODgsIDQxMTE1LCA3MzUsIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAxMjcyNiwgNzQ1OTQsIDkxMTcsIAorICAgIDk4MzE4MSwgMTIwMDMsIDU1MTMsIDY2NjYsIDUwNTMsIDc0MjMwLCA1NTEwLCA3ODQ1MSwgMCwgNzg0NDcsIDI0NzAsIAogICAgIDc4NDM3LCAwLCAxOTI1LCAwLCA5MjIzNywgNzQ4MDcsIDAsIDUwNDgsIDUwNDcsIDAsIDAsIDAsIDkyMzEzLCAwLCA3NDQ5NywgCi0gICAgOTIzOTUsIDgwODksIDY5MjksIDYzOSwgMCwgNjgxNzksIDY0NDQyLCAwLCA5MjM0OCwgNDU5OSwgNDE0MDIsIDY2NzQsIAotICAgIDQzMzk3LCA0MzI5NCwgMTQ3NiwgNjQ4LCAwLCA2NTgxOSwgMzIzMywgMCwgNDE3ODIsIDY5NTEsIDAsIDAsIDM1MzAsIAotICAgIDk3NTAsIDEyODMxNywgMCwgNjY1NiwgOTIzNjcsIDAsIDUwNDYsIDg1MTIsIDY1ODU2LCA3NDI2MSwgODk2NywgMCwgNTA0NSwgCi0gICAgMCwgMTkxNiwgNzk4NiwgNTA0NCwgMTIwNTU2LCA5MDA2LCAxMzEyOCwgNTA0MywgMCwgNzg1MywgNzQwNjgsIDc0MDA0LCAKLSAgICA5NjY5LCAxMjM0MSwgMTI3MDMsIDg0MDIsIDAsIDExOTA3MCwgOTE3NjAwLCA0MTc1MCwgMzU4NiwgNjQ1MDgsIDQzMTQ4LCAKLSAgICAwLCAwLCAxMTk2MDYsIDAsIDEzMjk2LCA1MTcsIDAsIDEyODUzNCwgMTk0OTQ2LCA0MTUyOCwgMTIzLCA2NTQ1NCwgMCwgMCwgCi0gICAgNzQ0NzgsIDEwNTMxLCA3Nzg0LCA0MTUyNiwgMTA4MjksIDczOTkxLCA4MDU3LCAxMTI2LCA3Mzg5NSwgMCwgMTk0NTkxLCAwLCAKLSAgICAzOTI1LCA0MjUxLCA4MDY5LCAxMDUxNywgMTIwNDM5LCA0ODksIDAsIDQyNTAsIDEyMDQ0MSwgMTIwNDUyLCA0MzE1MSwgMCwgCi0gICAgMTk0ODUxLCA2NjIwMCwgMCwgMCwgMCwgNzg0MjMsIDAsIDAsIDg3MTEsIDYxODMsIDAsIDAsIDAsIDEyMDQ0OCwgNzYyMywgCi0gICAgMTE4OTI1LCAxOTQ4NTMsIDkyMzUsIDEyNzYwLCA3NDE3NiwgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIDM3NDMsIAotICAgIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIDAsIDAsIDEyMDQzNSwgMCwgNzcyNiwgMCwgMTk5MjIsIDI2NywgMzM5MywgCi0gICAgNDIxOTgsIDEzNzEsIDE5NDg0OSwgNjkyMzMsIDI0NTgsIDAsIDYyMDEsIDAsIDQxMDc0LCA0MjY2LCAxMDY1MiwgNDE2MTIsIAotICAgIDQxMDc3LCAzNDAyLCA5MDUwLCAzMzk4LCAwLCAwLCAwLCAzMzkxLCA0MTA3NSwgMjQ3NiwgMCwgMTI4MDE3LCAwLCAxMDYyNSwgCi0gICAgMCwgMTI3NjcsIDEzMDE3LCA3ODc0MywgNjQyNjEsIDY0OTM0LCAxMjc1MzcsIDEzMDE0LCAxMzAxMywgMCwgNjY3MywgMCwgCi0gICAgMCwgMCwgMTI0MzgsIDAsIDAsIDAsIDAsIDAsIDkwNTMsIDEzMDE1LCA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgMCwgCi0gICAgNjY2MCwgNzg3NTgsIDkxNzc2MCwgOTE3NzkzLCA0MjIxMiwgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDAsIAotICAgIDEyNzk0MCwgMCwgNzQ1NDcsIDAsIDY1NDQ4LCA3ODEwMCwgMTI5NDgsIDExOTAwMSwgMTk1MDAyLCAxMTkyMzgsIDE5NTAwNCwgCi0gICAgNzgwOTksIDEyNzA4NSwgMCwgMCwgNDI4NywgODI3NiwgNDkwMiwgMTEzMSwgMCwgNzg0NTgsIDY2NzI4LCAxODE2LCAwLCAKLSAgICA0MjUzMywgMTY4LCA0Mjg0NSwgNDg5OCwgNjQyOTgsIDAsIDAsIDQ5MDEsIDE4MjEsIDAsIDU3OCwgMzY1MywgMCwgNzkxLCAKLSAgICA5MTYyLCA2OTc3LCAwLCAxMTkyOTgsIDc0NTYxLCAwLCA3MzczMSwgODM1NCwgNDM1OTAsIDExOTMwMywgMCwgNzU1NywgCi0gICAgMTE5MzM5LCAxMTkzMDEsIDgyMzQsIDcyNDEsIDAsIDE5NDk5NCwgMTE5MTY3LCAxOTQ5OTYsIDEyODExLCA2NTkyNSwgCi0gICAgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgNjczLCAxOTQ4NjcsIDY0Mzk3LCAxMjgyNzYsIDc0NTk5LCA3ODQ0OSwgCi0gICAgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIDc4MDg1LCAxMDI2NywgODQyNCwgMjQ1MiwgNzgwODMsIDE5NDg2NCwgCi0gICAgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDkxNzkxNywgNzg2OTIsIDQ0MDgsIDQxMjIsIDY3NzIsIDExMDM5LCA4NzIzLCAKLSAgICAxOTQ5OTAsIDEyNzgzMywgMTE5MzAyLCA3MzEsIDExOTMwNCwgOTIyODYsIDI0MzgsIDY0ODU1LCAxMTkzMDAsIDExOTI5OSwgCi0gICAgMTE3NSwgMCwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAxMTQ1NywgMTE1MjEsIDc3MjMsIDAsIDAsIDAsIDQxOTUyLCAwLCAKLSAgICA1MjczLCAyMTI3LCA1MjY5LCA2MzM3LCA1MjAyLCAyNDA0LCA1MjY3LCA0MjgyMywgMTEyOTEsIDE5OTE1LCA1Mjc3LCAKLSAgICAxMjk2MywgMTI3ODY0LCA2MTg5LCA0MTI1LCAxMzE0LCAxMjEzMywgMCwgMTE4ODczLCAxMjcxLCAwLCAwLCA2NjAyNCwgCi0gICAgNDE0ODIsIDM4NjQsIDc0NTM5LCAwLCAzODc5LCAwLCAxMjk3OCwgNDE2NiwgNDU3NCwgMCwgNzU2NywgNzQ1OSwgMCwgCi0gICAgNDEzOTAsIDUzODQsIDQxODgyLCA2NzY0NywgOTI1NDgsIDU3NTksIDAsIDAsIDQxMzg4LCA5MjM2MiwgNDEzOTIsIDY0Mjg4LCAKLSAgICA0MTM4NywgMCwgODcwNiwgNTU1MiwgMCwgNzAwLCAwLCA1NTUzLCAwLCA3MDg4LCA1MzU2LCA3NDk5LCA3ODExMCwgNjY1OTYsIAotICAgIDAsIDAsIDEwMjYzLCA1NTU0LCAwLCAxMjM0NCwgMTAzMTEsIDc4MTEzLCA2NjY1LCAwLCAwLCA3NjE4LCA4NTE3LCAxMTQ1NSwgCi0gICAgNzg0NDAsIDY0NjMyLCA2NDQ0NywgNTU1NSwgNzgwODgsIDc4MDkzLCA3ODA5MSwgMCwgNDI4MDMsIDY1MDMzLCA5MTQzLCAKLSAgICA2NjY4LCAxOTUwNjcsIDE5NTA2NiwgMTk1MDY5LCA2NTYsIDE5NTA3MSwgNjUwMzcsIDQ1NzcsIDY0NjI0LCAwLCAwLCAwLCAKLSAgICAwLCA0MjY5LCA3Mzg4NSwgOTE3Nzc1LCA0Mjg0NiwgNjk2NDQsIDk1MCwgMCwgOTIyNzMsIDY2NTgwLCAxMTg4OTUsIAotICAgIDY2NjgzLCAxMDU1NCwgOTE3Nzc4LCAxMTkxMjEsIDAsIDUwOTgsIDkxNzc3MCwgMCwgMTE5MDk5LCA1MDk3LCA0OTM1LCAKLSAgICA5ODQ4LCAxMDM4MSwgMCwgMTI4ODcwLCAwLCAzNjUxLCAwLCAxOTQ2MTAsIDEyNzU1NiwgNTEwMiwgNTEwMSwgMTAyNjksIAotICAgIDEyOTgzLCA4MTM4LCA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgMTI0NywgMTAwMzQsIDE5NTA2NCwgNTA5OSwgCi0gICAgNzgzNzMsIDE0NDEsIDQyMDg3LCAzMDYzLCA2NTAsIDAsIDc4MzgsIDAsIDE5NTA0MSwgMTk1MDQwLCAxMTkxNDIsIDkwMzEsIAotICAgIDEyMDc5MCwgMTI4NTgyLCA5MDc4LCA4NTQ1LCA2NjM1NiwgMTI4Nzk5LCAwLCA5MTU0LCA5MTE4LCAwLCAwLCAyNjc2LCAKLSAgICA3NzUwLCAwLCA3MzgxMiwgNjE5MCwgODU5OSwgMTk1MDUzLCAwLCAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCAKKyAgICA5MjM5NSwgODA4OSwgNjkyOSwgNjM5LCA5ODM1NjMsIDY4MTc5LCA2NDQ0MiwgMCwgOTIzNDgsIDQ1OTksIDQxNDAyLCAKKyAgICA2Njc0LCA0MzM5NywgNDMyOTQsIDE0NzYsIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCA2OTUxLCA5NDAxNywgCisgICAgOTgzOTY3LCAzNTMwLCA5NzUwLCAxMjgzMTcsIDAsIDY2NTYsIDQyNjE4LCAwLCA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIAorICAgIDg5NjcsIDAsIDUwNDUsIDQyMDI2LCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIDkwMDYsIDEzMTI4LCA1MDQzLCAwLCAKKyAgICA3ODUzLCA3NDA2OCwgNzQwMDQsIDk2NjksIDEyMzQxLCAxMjcwMywgODQwMiwgMCwgMTE5MDcwLCA5MTc2MDAsIDQxNzUwLCAKKyAgICAzNTg2LCA2NDUwOCwgNDMxNDgsIDAsIDAsIDExOTYwNiwgNjc5ODMsIDEzMjk2LCA1MTcsIDAsIDEyODUzNCwgMTk0OTQ2LCAKKyAgICA0MTUyOCwgMTIzLCA2NTQ1NCwgMCwgMCwgNzQ0NzgsIDEwNTMxLCA3Nzg0LCA0MTUyNiwgMTA4MjksIDczOTkxLCA4MDU3LCAKKyAgICAxMTI2LCA3Mzg5NSwgMCwgMTk0NTkxLCAwLCAzOTI1LCA0MjUxLCA4MDY5LCAxMDUxNywgMTIwNDM5LCA0ODksIDAsIDQyNTAsIAorICAgIDEyMDQ0MSwgMTIwNDUyLCA0MzE1MSwgOTgzMTc4LCAxOTQ4NTEsIDY2MjAwLCAwLCAwLCAwLCA3ODQyMywgMCwgMCwgODcxMSwgCisgICAgNjE4MywgMCwgMCwgMCwgMTIwNDQ4LCA3NjIzLCAxMTg5MjUsIDExODg4OSwgOTIzNSwgMTI3NjAsIDc0MTc2LCA2OTY2MiwgCisgICAgNjY0NDUsIDQzNTQwLCAxMDA2MiwgMzc0MywgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgMCwgMTI2NTk3LCAxMjA0MzUsIDAsIAorICAgIDc3MjYsIDAsIDE5OTIyLCAyNjcsIDMzOTMsIDQyMTk4LCAxMzcxLCAxOTQ4NDksIDY5MjMzLCAyNDU4LCAwLCA2MjAxLCAwLCAKKyAgICA0MTA3NCwgNDI2NiwgMTA2NTIsIDQxNjEyLCA0MTA3NywgMzQwMiwgOTA1MCwgMzM5OCwgMCwgOTgzMzQwLCAwLCAzMzkxLCAKKyAgICA0MTA3NSwgMjQ3NiwgMCwgMTI4MDE3LCAwLCAxMDYyNSwgMCwgMTI3NjcsIDEzMDE3LCA3ODc0MywgNjQyNjEsIDY0OTM0LCAKKyAgICAxMjc1MzcsIDEzMDE0LCAxMzAxMywgMCwgNjY3MywgMCwgMCwgMCwgMTI0MzgsIDAsIDk4MzMzNCwgMCwgOTgzODcxLCAKKyAgICAxMjY2MzgsIDkwNTMsIDEzMDE1LCA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgOTgzODE5LCA2NjYwLCA3ODc1OCwgCisgICAgOTE3NzYwLCA5MTc3OTMsIDQyMjEyLCAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgMCwgMTI3OTQwLCA5ODMzMzMsIAorICAgIDc0NTQ3LCAxMjY1ODUsIDY1NDQ4LCA3ODEwMCwgMTI5NDgsIDExOTAwMSwgMTk1MDAyLCAxMTkyMzgsIDE5NTAwNCwgCisgICAgNzgwOTksIDEyNzA4NSwgMCwgMTI4MzIwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCAwLCA3ODQ1OCwgNjY3MjgsIDE4MTYsIAorICAgIDAsIDQyNTMzLCAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgOTgzMTQxLCAwLCA0OTAxLCAxODIxLCAwLCA1NzgsIDM2NTMsIAorICAgIDAsIDc5MSwgOTE2MiwgNjk3NywgMCwgNzg4ODksIDc0NTYxLCAwLCA3MzczMSwgODM1NCwgNDM1OTAsIDExOTMwMywgCisgICAgOTgzNDQxLCA3NTU3LCAxMTkzMzksIDExOTMwMSwgODIzNCwgNzI0MSwgMCwgMTIwNjcxLCAxMTkxNjcsIDE5NDk5NiwgCisgICAgMTI4MTEsIDY1OTI1LCAzOTQ2LCA3ODA3OCwgMTA5OTgsIDc4MDgwLCA2NzMsIDE5NDg2NywgNjQzOTcsIDEyODI3NiwgCisgICAgNzQ1OTksIDc4NDQ5LCA4ODkwLCAxOTQ5NzcsIDE5NDk3NiwgMjQ0OCwgNzgwODUsIDEwMjY3LCA4NDI0LCAyNDUyLCAKKyAgICA3ODA4MywgMTI4ODI0LCA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgOTE3OTE3LCA3MTMwMiwgNDQwOCwgNDEyMiwgNjc3MiwgCisgICAgMTEwMzksIDg3MjMsIDE5NDk5MCwgNzEzMTAsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDkyMjg2LCAyNDM4LCA2NDg1NSwgCisgICAgMTE5MzAwLCAxMTkyOTksIDExNzUsIDAsIDQyMTM1LCAzNzMsIDExOTE3MiwgMjExOSwgMTE0NTcsIDExNTIxLCA3NzIzLCAwLCAKKyAgICAwLCAwLCA0MTk1MiwgMCwgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgNTIwMiwgMjQwNCwgNTI2NywgNDI4MjMsIDExMjkxLCAKKyAgICAxOTkxNSwgNTI3NywgMTI5NjMsIDEyNzg2NCwgNjE4OSwgNDEyNSwgMTMxNCwgMTIxMzMsIDEyMDM0MCwgMTE4ODczLCAKKyAgICAxMjcxLCA5ODM2MzEsIDAsIDY2MDI0LCA0MTQ4MiwgMzg2NCwgNzQ1MzksIDAsIDM4NzksIDAsIDEyOTc4LCA0MTY2LCAKKyAgICA0NTc0LCAwLCA3NTY3LCA3NDU5LCA5ODMxNjAsIDQxMzkwLCA1Mzg0LCA0MTg4MiwgNjc2NDcsIDkyNTQ4LCA1NzU5LCAKKyAgICA5ODM5MDMsIDAsIDQxMzg4LCA2NDQ0NiwgNDEzOTIsIDY0Mjg4LCA0MTM4NywgMCwgODcwNiwgNTU1MiwgOTgzMTg3LCA3MDAsIAorICAgIDAsIDU1NTMsIDAsIDcwODgsIDUzNTYsIDc0OTksIDY4MDA3LCA2NjU5NiwgNzQwNjYsIDAsIDEwMjYzLCA1NTU0LCAwLCAKKyAgICAxMjM0NCwgMTAzMTEsIDc4MTEzLCA2NjY1LCA5MjYyNiwgMCwgNzYxOCwgODUxNywgMTE0NTUsIDc4NDQwLCA2NDYzMiwgCisgICAgNjQ0NDcsIDU1NTUsIDc4MDg4LCA3ODA5MywgNzgwOTEsIDAsIDQyODAzLCA2NTAzMywgOTE0MywgNjY2OCwgMTk1MDY3LCAKKyAgICA2Nzk5NSwgMTk1MDY5LCA2NTYsIDE5NTA3MSwgNjUwMzcsIDQ1NzcsIDY0NjI0LCAwLCAwLCAwLCA5ODM2NDAsIDQyNjksIAorICAgIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAwLCA5MjI3MywgNjY1ODAsIDExODg5NSwgNjY2ODMsIDEwNTU0LCAKKyAgICA5MTc3NzgsIDExOTEyMSwgMCwgNTA5OCwgOTE3NzcwLCAwLCAxMTkwOTksIDUwOTcsIDQ5MzUsIDk4NDgsIDEwMzgxLCAwLCAKKyAgICAxMjg4NzAsIDk4MzY5MiwgMzY1MSwgMCwgMTIwNzMwLCAxMjc1NTYsIDUxMDIsIDUxMDEsIDEwMjY5LCAxMjk4MywgODEzOCwgCisgICAgNDUxNywgMTkzMiwgNTEwMCwgMTQzOSwgMTIwOTMsIDEyNDcsIDEwMDM0LCAxOTUwNjQsIDUwOTksIDc4MzczLCAxNDQxLCAKKyAgICA0MjA4NywgMzA2MywgNjUwLCAwLCA3ODM4LCAwLCAxOTUwNDEsIDE5NTA0MCwgMTE5MTQyLCA5MDMxLCAxMjA3OTAsIAorICAgIDEyODU4MiwgOTA3OCwgODU0NSwgNjYzNTYsIDEyODc5OSwgMCwgOTE1NCwgOTExOCwgMTI2NTQzLCAwLCAyNjc2LCAyMjc3LCAKKyAgICAwLCA3MzgxMiwgNjE5MCwgODU5OSwgMTk1MDUzLCA2OTkxOCwgMTA3OTUsIDk4NTcsIDcwMTQsIDk4NTYsIDE5NTAzMywgCiAgICAgOTI2MjAsIDEyMTI5LCAwLCA4NDgxLCAwLCA2MjAyLCAxOTUwMzUsIDEwOTIwLCAxMjgyMzcsIDUyMDMsIDE5NTAzOSwgCiAgICAgMTk1MDM4LCA1MTA4LCA1MTA3LCA2NTgxOCwgNjYwMTksIDk3NjIsIDAsIDU1NDEsIDc0NzcyLCAwLCAxMjYxMywgNTI4NCwgCi0gICAgNjY1NywgMjA3LCAxMjg4MDYsIDQyNzUsIDc0ODE5LCA4NTQsIDY4MTQ3LCA3NDM4MSwgMCwgMCwgNTEwMywgMTI3ODYxLCAKLSAgICA2NDM0OCwgNDEzNjgsIDQzOTc0LCA0ODgsIDY5ODExLCAwLCAwLCAxMDE1NywgMCwgNDMwMzQsIDExNDM4LCAwLCAwLCAKLSAgICA5MjY5NCwgNjg0MzEsIDQxNzcxLCA1MTA2LCA2NjY5LCA4NTA0LCA2NTE1NCwgNjk4MTMsIDQxMzY3LCA1MTA1LCAxOTUwMzAsIAotICAgIDY5NzIwLCA2NDc2LCA1MTA0LCAwLCAzMDQsIDMxNzYsIDAsIDAsIDkzMiwgMTI4NjYzLCA2NTY3LCAyMzgsIDY5NjU2LCAKLSAgICAxOTUwMTEsIDE5NDU5NSwgMTk5MDUsIDEyMDU3NywgMTk1MDE1LCA3ODg3MCwgNDEwNDQsIDY3NjQwLCAxOTQ5MDIsIAotICAgIDQyMDU1LCA5OTEyLCA2NTkzOSwgMTA2NzAsIDc0MDkzLCAxMzI3MywgMCwgMTI1NTIsIDE5NTAxOSwgODgwMywgMzA5LCAKLSAgICA2NjIyLCA4MTUxLCAxMDg1OCwgMTk0NTk2LCA2NzYzNiwgMCwgMTI1NjgsIDAsIDEyNTUzLCAxMDgxNCwgNDMyNzUsIDY5NTAsIAotICAgIDk3MTIsIDY4NjgwLCA0Mzk3MCwgMCwgNjUxNjUsIDkyNzI1LCAwLCA2NjQ2NiwgMCwgMCwgMCwgNjY3MjUsIDYxOTEsIAotICAgIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCAwLCAwLCA0MTc1NCwgNjc2MzUsIDkzNzAsIDI3MjAsIDE5NDk3NSwgCi0gICAgNjg0NjIsIDgyMzIsIDExODgxNywgMCwgMzIyMiwgMCwgMCwgMCwgNjY2NjMsIDAsIDAsIDEwODM0LCAwLCAwLCA2NTczMiwgCi0gICAgMCwgOTE3NTQ3LCA5MjY4MiwgNjc2NzksIDE5NTAyMCwgMCwgNzc4MSwgNDEzODMsIDY0NTY4LCAwLCAxMjA3MzgsIDEyMDc3LCAKLSAgICAwLCA2NDU4NiwgOTE3NjIwLCA0MjM5NiwgNTUyNTUsIDM0NzUsIDEyODAzNSwgMjQ3OSwgMCwgMzYzMiwgMTIwNzI4LCAKLSAgICAxMDY5OCwgODM3NiwgMzY0OCwgMTk0OTYwLCA3NDg0NCwgNjc2MzksIDM2MzYsIDY3ODk0LCAzNjUwLCA4ODM3LCA2NTIyOSwgCi0gICAgMTg0MywgNDIyODMsIDQzMjUwLCA0MTU2MiwgOTEwMCwgNzQ1NDgsIDkxNzYzMCwgMzY0MCwgMTI3MTkwLCA0MjMyMSwgCi0gICAgNzI4NCwgMTk0OTc0LCAxOTQ5NzMsIDE5NDk1MCwgMTk0OTQ5LCAxOTQ5NTIsIDE5NDk1MSwgMCwgMTk0OTUzLCA0MjA4MCwgCi0gICAgMjUyOSwgMCwgMCwgMCwgNDIwODMsIDEyMDY3OCwgNjgzOTgsIDE5NDk1NywgNjc2MTksIDY2MzY3LCAxOTQ5NTgsIDk2MzQsIAotICAgIDkyMzgwLCA5OTg4LCAwLCA0MTA2OCwgMCwgMCwgNjUyNjQsIDAsIDAsIDkyNTQ1LCAwLCA3ODUsIDgyMzYsIDEyODY0NywgCi0gICAgOTAyNywgNjgxNjAsIDY3NjIzLCA2NDM4MywgMTI4ODIxLCA5MjUsIDEyNzE1NiwgMCwgNDE5ODUsIDQxMDcxLCA5NTg2LCAwLCAKLSAgICA0MTk4NCwgOTIxNywgMCwgMCwgMCwgOTE4NiwgMjA2NywgNDAxNiwgMCwgMCwgMzgxLCAwLCAwLCA0MjA3NywgMCwgCi0gICAgMTI3NDgzLCA1MTg0LCA0MjA3OCwgMTk0OTQ3LCAxMDgxMCwgMTI4NTMxLCA0NTg1LCAxOTk0MywgNTg2MCwgNjc2MzMsIDAsIAotICAgIDAsIDgxMiwgMzYxNSwgMCwgNTE3OCwgNDQwMDAsIDEyMDU0OCwgNzg4MDcsIDUxODgsIDc0Mjg3LCA2NzYyOSwgMzYwNSwgCi0gICAgMTA2OTIsIDExNjYsIDY0NDI5LCA0MjYzOSwgOTI0LCAwLCA2NzYzMSwgMCwgMTIwNjcwLCAyNDQyLCAxMDcwMywgNzg3ODksIAotICAgIDY3NjMyLCA5MTc5MjQsIDEyNzcxLCAxMjczNiwgMTI3NTMsIDAsIDczOTMzLCA2NzYyNiwgNDI0MDEsIDAsIDAsIDEyNzM3MywgCi0gICAgNDIyODgsIDEyNzUxLCAwLCA4NTQyLCAxMzE0NSwgMTk0OTYzLCAyNDY4LCA2NjcwNiwgNDEyOTQsIDM2MjYsIDM4ODMsIAotICAgIDY0Mzg4LCA0MjQ3OSwgMCwgNDExMTcsIDAsIDkyNTgwLCAwLCAwLCA2NzYyNCwgMCwgMTI5MCwgMCwgNjU1ODUsIDI3MTUsIAotICAgIDgwNiwgNjUyMDgsIDQxODg0LCA5MTc4ODMsIDEzMTgsIDY0NzMxLCAwLCAwLCAwLCA2NjMyNSwgMzQ2NSwgMjQwNSwgOTI0MCwgCi0gICAgMCwgMTI3NTYsIDY1MjU5LCAwLCAwLCAxMjc1MiwgNTgzMywgMTQzMiwgMCwgNDE4ODMsIDczOTEyLCA5Nzk5LCAwLCAKLSAgICA0MTg4NiwgMjQ4MCwgMCwgMjA2MiwgMTI3MjkzLCA2NDk0LCA1NTM3LCA3ODY1NiwgMCwgMTk0NTg3LCAwLCAxMjExLCAwLCAKLSAgICAwLCAwLCAxMTg4MzIsIDEyMzE4LCAwLCAwLCAwLCAxMDYyMiwgMCwgMCwgNzg2NTQsIDY1NjYsIDc4NjU5LCAwLCA3Mzc4MCwgCi0gICAgMCwgNjQ4NjQsIDAsIDc4NjYwLCAwLCA4Mjg0LCAxMzA4MSwgMCwgMzU4OSwgNDIwNTEsIDQwMzUsIDY0OTIsIDkyMjM2LCAKLSAgICA0MjY1LCA2NjQyLCAzOTc3LCA3NDE4NiwgNDE3NzgsIDgzNiwgMTE5MjE2LCAyNDg4LCAwLCA0NTgyLCAwLCAwLCA0MTc3NywgCi0gICAgMTI5MjYsIDAsIDc1MjgsIDEwNTUwLCAwLCA5MjcwNiwgMCwgMTE0MzksIDAsIDEzNzQsIDY0ODc4LCAxMTkwMTQsIDAsIAotICAgIDQyMzg5LCA0MTM3NCwgMCwgMCwgNzg0OTIsIDQxMzc3LCAxMjc5MDksIDAsIDQwMCwgMTI1OTcsIDEyMDU4NiwgMCwgMCwgCi0gICAgNjY2MSwgMCwgNjQ4MjcsIDAsIDczODE3LCAzOTAsIDAsIDc0NzU1LCAwLCAzNDczLCA3NzE4LCAwLCAwLCAwLCA1NTI4NSwgCi0gICAgMCwgMCwgMCwgMTE5NjksIDAsIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgMCwgODA4MCwgNzAwNiwgMCwgMCwgNjc1NywgCi0gICAgNjQzNTEsIDE1NDQsIDAsIDY3NjYsIDY0Njc3LCAxMjA3MTYsIDAsIDYxNDYsIDAsIDc3MSwgMCwgMCwgMTI4MTIsIDEzMTY4LCAKLSAgICA0MjI3MiwgMTIyMDAsIDkxNzkyNywgNzkwNCwgMCwgOTUzLCAxMjkxNywgMTE5NTYwLCAxMjMwMCwgMCwgMTE0OTEsIDk3MjQsIAotICAgIDEwMzQxLCAwLCA5NTI0LCA3NDkwLCAxMTM4OSwgNzQ4OSwgMzM3OSwgMCwgNzQ4NywgMCwgNDcxLCA3NDg0LCA3NDgyLCAKLSAgICA2NzUzLCA3NDgwLCA3NDc5LCA3NDc4LCA3NDc3LCA2NTAxLCA3NDc1LCA2OTE4LCA3NDczLCA3NDcyLCAyNDc0LCA3NDcwLCAKLSAgICA3NDY4LCAxMDIzMiwgMTA2MTUsIDEwMjEzLCAxMjcyODgsIDkyMzU3LCAxMDA0OSwgNzg4ODQsIDM1NDQsIDAsIDYwMTcsIAotICAgIDY1MzExLCAxMjc0ODEsIDEyMDIxNiwgMTMzMDYsIDEwNTMzLCA3ODcwLCA3Mzk0OSwgNzYyNSwgMCwgMTIwNTQ0LCAwLCAwLCAKLSAgICA5MjY2MCwgMCwgMCwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCA5MjM0MSwgMCwgMjEzOSwgNDI1NiwgMTIwNzc2LCA3NDM4MCwgCi0gICAgMCwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgMCwgMCwgNjUxMzgsIDExOTM1NSwgNjc4NjIsIDAsIDY1NjcxLCAxMjAwMDAsIAotICAgIDEyMDAwOCwgODA2NiwgNzY3OCwgNzQ4NjUsIDAsIDAsIDAsIDAsIDcxODYsIDAsIDEyMDU1NSwgMCwgNDQ1LCAxMjA1NjYsIAotICAgIDEyODMwOCwgMCwgMCwgODMzMCwgMCwgMCwgNDI3OTcsIDAsIDEyMDIxNSwgMCwgMzkwMiwgMCwgMTc3MCwgMCwgMTI4ODY2LCAKLSAgICAxNTYwLCAxMjAyMDksIDE5NDk3MiwgNDU4NCwgNzM4NDMsIDAsIDExNzEyLCAxMDg2NiwgMTE4OTI4LCAxMTE4LCA5MjIwOSwgCi0gICAgMCwgMCwgMTA4MSwgNzQzNiwgNjg0MjAsIDcyNTIsIDAsIDU5OTYsIDAsIDQ5MDMsIDAsIDQxMzg2LCA1MTYyLCAxMTkxODksIAotICAgIDEzMzAsIDAsIDcxMzksIDAsIDEyMDQ3LCA0MTM4NCwgMCwgMCwgMTg0OCwgNDMzNCwgNjMyNCwgNDE5NzUsIDY0Nzc3LCAKLSAgICAxMDY3NCwgMTIzMDgsIDEyMTg2LCAwLCAwLCAwLCAxMjcxNSwgMTI4MzQ5LCAwLCAwLCAyMDE4LCA2NjY3MiwgNDE5NzksIAotICAgIDY2Njg1LCAxMTkxNTcsIDAsIDkyNDY0LCAwLCAxMjY5ODQsIDAsIDkzMzQsIDkyNzA1LCA5MjMxNSwgMCwgNzk3NSwgMCwgCi0gICAgNzc5NTcsIDAsIDY2NjIxLCA0ODg0LCA2NjU5NywgNjk3MzIsIDAsIDAsIDYzMTMsIDY1NTEzLCAwLCAwLCAwLCAwLCAyMzQ1LCAKLSAgICA0MzY5NywgNDYzLCAwLCAwLCAxMTk2MDcsIDMxMTcsIDU0NjAsIDAsIDAsIDAsIDAsIDQyMjc5LCAxOTQ1NzcsIDAsIAotICAgIDc4NDE1LCAwLCAxOTUwMDgsIDAsIDEzMjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYzLCAwLCAwLCAwLCAwLCAyNDgyLCAKLSAgICAxNDcxLCAwLCAwLCA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgMCwgMTIzNzQsIDAsIDAsIDAsIDAsIDI0NjAsIDAsIAotICAgIDExOTQ0LCAxMjM3NiwgMTI3ODY4LCA2NDY3OSwgMCwgMTIzODAsIDEwNTU3LCA2NDQ3MywgNTg3MCwgMCwgMjAyNCwgCi0gICAgMTI3MTgwLCAwLCAwLCA1MzksIDAsIDEyNzc2NSwgMCwgMzg1MywgNjUxODAsIDEyNzkyMywgMTIwNzk2LCAxMjAyNDUsIAotICAgIDkyMzI0LCAwLCA4NjU5LCAwLCAxMjQ3NCwgOTI1NzksIDk1MDMsIDE5NDk2OSwgMjQ3OCwgMCwgNDE2MiwgMCwgNDI2MCwgCi0gICAgMTI5NTMsIDY5NjMzLCAxMjAwODksIDEyNDcwLCAwLCA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAxMDk0NiwgMTI3MzEwLCAKLSAgICA1MDAwLCAwLCAwLCAwLCA2OTY3MiwgODIxMywgNzQwMTcsIDc3NzEsIDYxNjEsIDAsIDY3MDksIDAsIDc4ODg1LCAwLCAKLSAgICAxMjc5NzEsIDEyMDU4MiwgNzg1NDcsIDAsIDEwMzAxLCAxMDMzMywgMTAzOTcsIDAsIDAsIDczNzkxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0MDE0LCAxMjg0MiwgNzM5NTIsIDEyMDE1LCAxMjcyOTAsIDgyNzUsIDM4OTMsIDAsIDAsIDEyMjEwLCA3MjIxLCAKLSAgICA0MjE0NywgMCwgNzQ1NTAsIDc0NDY1LCA2NDc0NywgMTE4ODQxLCAwLCAxMjUxNiwgNDQ0NCwgMCwgOTIyNzEsIDc0NTM3LCAKLSAgICAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCA0MTk3MywgMzU5MSwgNDE5NjksIDAsIDI0NTMsIDEyODU0OSwgCi0gICAgOTI2NjYsIDY0NzA1LCAwLCAwLCAxMDM0OSwgMTA0MTMsIDQzNTkxLCA0MTk2MiwgMzIwMiwgNzQzNTMsIDAsIDgzMTYsIDAsIAotICAgIDAsIDAsIDY4NywgMCwgMCwgMCwgMTg0MCwgMCwgNjg2NzEsIDExOTgwOSwgNDg4MywgMjg1LCA0NzIzLCA3NzkyNywgCi0gICAgOTI2OTIsIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCAwLCA0MjMyMywgMCwgOTc0MywgCi0gICAgMTIwMjMyLCAxMzEzNCwgMCwgMCwgMCwgMCwgMCwgNDI2MzQsIDAsIDQzNDM3LCAzMDgxLCAxMTQ2MywgMTIwMTU0LCAwLCAwLCAKLSAgICAxMDQ0NSwgMCwgMCwgNjY3MTcsIDI2MTQsIDkxMjUsIDExOTAyMywgMTcyOSwgMCwgMTIwMjM2LCA2NTIyMSwgNjM4ODMsIAotICAgIDQzMzM0LCA2NDg1MiwgMCwgMTIwMjM1LCA2NjIwMSwgMCwgNjY1NzgsIDUwMDEsIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgCi0gICAgODg0LCA2NjcwMCwgNjM4NzksIDQ5NDMsIDUxNTAsIDczODg5LCA3NDE4MiwgMTI3OTE1LCA2NDMsIDMwODYsIDAsIDQyNDQ4LCAKLSAgICA0MjI5OSwgNTgsIDAsIDkxNzk1MiwgMTIwMDgzLCA2Mzg3MywgODQ5MSwgMCwgMCwgMCwgNDUzMCwgNDI0MDksIDcxMjYsIAotICAgIDE5NDU3NSwgMjcyMSwgMTIwMDc0LCAxMTkwOTYsIDE5OTI5LCAwLCAxOTQ1NzQsIDAsIDQyNDIsIDQyNjQsIDEyMDA3NywgCi0gICAgMTI4MTMyLCA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCAwLCA5NzU0LCAxMTkxMDIsIAotICAgIDQ0MzcsIDczOTQ4LCAxMjg2OTIsIDAsIDU1MjgwLCA0MjE3NCwgMTk0OTI1LCA0MjQzMCwgMCwgMCwgNDIzNTUsIDY2MDI2LCAKLSAgICA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCAwLCA2NjY2NywgMTI3MzA5LCAwLCAwLCA0MjIwMCwgNDI1NjYsIDAsIDAsIAotICAgIDUwODgsIDY5NDgsIDAsIDg1MjQsIDAsIDAsIDEyMzg1LCAwLCAwLCA2OTY0NiwgMTM4NiwgNjQ1ODAsIDExNDgwLCA2MTE2LCAKLSAgICA2NTAzOSwgNjUwMzgsIDEyMzkyLCA2NTAzNiwgODA2NCwgMCwgMTIxMDEsIDU4MjIsIDExOTAwNCwgMjA4MCwgNzEwLCAKLSAgICA3Nzk5OSwgMTE2NjMsIDE2NjYsIDQyMDkxLCAxMTk2NTcsIDEyMzgzLCA0MzY3MSwgNDIwOTIsIDY4NDE4LCA0Mjg5LCAwLCAKLSAgICA2Mzg5NiwgMTIwNjEsIDQyMDk2LCA0MzYyMSwgMzM2MiwgMTIzNzcsIDAsIDAsIDY4NDQ5LCA3NDYxLCA3MzkwMSwgMTI0NCwgCi0gICAgMzMxLCA3Mzc4NiwgMTI2ODMsIDEwNjYyLCAwLCA4MTEyLCAwLCA2NTg1MiwgMCwgMTIzNzksIDE5NDg3NywgMTIwODE4LCAKLSAgICA0MTk2NCwgNDIyMDgsIDYzODQzLCAyMDg0LCA0MTk2NSwgMCwgNjU4NjYsIDQzMjcsIDAsIDYzODQwLCA3ODU0OSwgNDEyMjAsIAotICAgIDEzMDMyLCAwLCA1ODQsIDEyOTMzLCA0MzE3NywgMTIzNzMsIDAsIDEzMDAwLCAxMzUxLCAyOTM1LCA4Njk4LCAxMjY2NSwgMCwgCi0gICAgMTkzMCwgMCwgNzgyMjksIDEyNDI3LCA2NjUxNCwgMCwgMTMwMzEsIDAsIDYzOTAxLCAwLCAzNjU3LCAxMjg1NzIsIDY1MjAyLCAKKyAgICA2NjU3LCAyMDcsIDEyODgwNiwgNDI3NSwgNzQ4MTksIDg1NCwgNjgxNDcsIDc0MzgxLCAwLCA3ODc4NiwgNTEwMywgCisgICAgMTI3ODYxLCA2NDM0OCwgNDEzNjgsIDQzOTc0LCA0ODgsIDY5ODExLCAwLCA3MTMzOSwgMTAxNTcsIDAsIDQzMDM0LCAKKyAgICAxMTQzOCwgNjQ2NzQsIDAsIDkyNjk0LCA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgCisgICAgNDEzNjcsIDUxMDUsIDEyNzUwOSwgNjk3MjAsIDY0NzYsIDUxMDQsIDk4Mzc0MCwgMzA0LCAzMTc2LCAxMTkwMTAsIDAsIAorICAgIDkzMiwgMTIwNjMzLCA2NTY3LCAyMzgsIDY5NjU2LCAxOTUwMTEsIDE5NDU5NSwgMTk5MDUsIDEyMDU3NywgMTk1MDE1LCAKKyAgICA3ODg3MCwgNDEwNDQsIDY3NjQwLCAxOTQ5MDIsIDQyMDU1LCA5OTEyLCA2NTkzOSwgMTA2NzAsIDc0MDkzLCAxMzI3MywgMCwgCisgICAgMTI1NTIsIDE5NTAxOSwgODgwMywgMzA5LCA2NjIyLCA4MTUxLCAxMDg1OCwgNzg3MDYsIDY3NjM2LCAwLCAxMjU2OCwgMCwgCisgICAgMTI1NTMsIDEwODE0LCA0MzI3NSwgNjk1MCwgOTcxMiwgNjg2ODAsIDQzOTcwLCA5ODMxOTgsIDY1MTY1LCA5MjcyNSwgMCwgCisgICAgNjY0NjYsIDAsIDAsIDAsIDY2NzI1LCA2MTkxLCAxMTM1MSwgMTA0MzcsIDExMzE2LCA2NzYzNCwgNDM3NjMsIDAsIDQxNzU0LCAKKyAgICA2NzYzNSwgOTM3MCwgMjcyMCwgMTk0OTc1LCA2ODQ2MiwgODIzMiwgMTE4ODE3LCAwLCAzMjIyLCAwLCAwLCAwLCA2NjY2MywgCisgICAgMCwgMCwgMTA4MzQsIDAsIDAsIDY1NzMyLCA5NDA5NSwgOTE3NTQ3LCA5MjY4MiwgNjc2NzksIDE5NTAyMCwgMCwgNzc4MSwgCisgICAgNDEzODMsIDY0NTY4LCAwLCAxMjA3MzgsIDEyMDc3LCAwLCA2NDU4NiwgOTE3NjIwLCA0MjM5NiwgNTUyNTUsIDM0NzUsIAorICAgIDEyODAzNSwgMjQ3OSwgMCwgMzYzMiwgMTIwNzI4LCAxMDY5OCwgODM3NiwgMzY0OCwgMTk0OTYwLCA3NDg0NCwgNjc2MzksIAorICAgIDM2MzYsIDY3ODk0LCAzNjUwLCA4ODM3LCA2NTIyOSwgMTg0MywgNDIyODMsIDQzMjUwLCA0MTU2MiwgOTEwMCwgNzQ1NDgsIAorICAgIDkxNzYzMCwgMzY0MCwgMTI3MTkwLCA0MjMyMSwgNzI4NCwgMTk0OTc0LCAxOTQ5NzMsIDE5NDk1MCwgMTk0OTQ5LCAKKyAgICAxOTQ5NTIsIDE5NDk1MSwgMTI2NjQ5LCAxOTQ5NTMsIDQyMDgwLCAyNTI5LCAwLCAwLCAwLCA0MjA4MywgMTIwNjc4LCAKKyAgICA2ODM5OCwgMTk0OTU3LCA2NzYxOSwgNjYzNjcsIDE5NDk1OCwgOTYzNCwgOTIzODAsIDk5ODgsIDAsIDQxMDY4LCAwLCAKKyAgICA0Mjk1LCA2NTI2NCwgNjgwMDYsIDAsIDkyNTQ1LCAwLCA3ODUsIDgyMzYsIDEyODY0NywgOTAyNywgNjgxNjAsIDY3NjIzLCAKKyAgICA2NDM4MywgMTIwMjY1LCA5MjUsIDEyNzE1NiwgMCwgNDE5ODUsIDQxMDcxLCA5NTg2LCAwLCA0MTk4NCwgOTIxNywgMCwgMCwgCisgICAgMCwgOTE4NiwgMjA2NywgNDAxNiwgOTgzNzk0LCAwLCAzODEsIDEyOTM2LCAwLCA0MjA3NywgMCwgNjk4ODAsIDUxODQsIAorICAgIDQyMDc4LCAxOTQ5NDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCA2NzYzMywgMCwgMCwgODEyLCAzNjE1LCAKKyAgICAwLCA1MTc4LCA0NDAwMCwgMTIwNTQ4LCA3ODgwNywgNTE4OCwgNzQyODcsIDY3NjI5LCAzNjA1LCAxMDY5MiwgMTE2NiwgCisgICAgNjQ0MjksIDQyNjM5LCA5MjQsIDAsIDY3NjMxLCA0MjYxNiwgMTIwNjcwLCAyNDQyLCAxMDcwMywgNzg3ODksIDY3NjMyLCAKKyAgICA5MTc5MjQsIDEyNzcxLCAxMjczNiwgMTI3NTMsIDY2NzA4LCA3MzkzMywgNjc2MjYsIDQyNDAxLCAwLCA2OTg3MiwgCisgICAgMTI3MzczLCA0MjI4OCwgMTI3NTEsIDAsIDg1NDIsIDEzMTQ1LCAxOTQ5NjMsIDI0NjgsIDY2NzA2LCA0MTI5NCwgMzYyNiwgCisgICAgMzg4MywgNjQzODgsIDQyNDc5LCAwLCA0MTExNywgMCwgOTI1ODAsIDAsIDAsIDY3NjI0LCAwLCAxMjkwLCAwLCA2NTU4NSwgCisgICAgMjcxNSwgODA2LCA2NTIwOCwgNDE4ODQsIDkxNzg4MywgMTMxOCwgNjQ3MzEsIDEyNjU3OCwgMCwgMCwgNjYzMjUsIDM0NjUsIAorICAgIDI0MDUsIDkyNDAsIDAsIDEyNzU2LCA2NTI1OSwgMCwgOTgzNzcyLCAxMjc1MiwgNTgzMywgMTQzMiwgMCwgNDE4ODMsIAorICAgIDczOTEyLCA5Nzk5LCAwLCA0MTg4NiwgMjQ4MCwgMCwgMjA2MiwgMTI3MjkzLCA2NDk0LCA1NTM3LCA3ODY1NiwgMCwgCisgICAgMTk0NTg3LCAwLCAxMjExLCAwLCAwLCAwLCAxMTg4MzIsIDEyMzE4LCAwLCAwLCA2ODAwNSwgMTA2MjIsIDk4Mzc3MCwgMCwgCisgICAgNzg2NTQsIDY1NjYsIDc4NjU5LCAwLCA3Mzc4MCwgMTE5MTk2LCA2NDg2NCwgMCwgNzg2NjAsIDAsIDgyODQsIDEzMDgxLCAwLCAKKyAgICAzNTg5LCA0MjA1MSwgNDAzNSwgNjQ5MiwgOTIyMzYsIDQyNjUsIDY2NDIsIDM5NzcsIDc0MTg2LCA0MTc3OCwgODM2LCAKKyAgICAxMTkyMTYsIDI0ODgsIDAsIDQ1ODIsIDAsIDAsIDQxNzc3LCAxMjkyNiwgOTgzMzY5LCA3NTI4LCAxMDU1MCwgMCwgOTI3MDYsIAorICAgIDAsIDEwOTYxLCAwLCAxMzc0LCA2NDg3OCwgMTE5MDE0LCAwLCA0MjM4OSwgNDEzNzQsIDIyODYsIDAsIDc4NDkyLCA0MTM3NywgCisgICAgMTI3OTA5LCAwLCA0MDAsIDEyNTk3LCAxMjA1ODYsIDAsIDAsIDY2NjEsIDk4MzE0NSwgNjQ4MjcsIDAsIDczODE3LCAzOTAsIAorICAgIDAsIDcxMzAxLCA5ODM4NTMsIDM0NzMsIDc3MTgsIDAsIDAsIDAsIDU1Mjg1LCAwLCAwLCAwLCAxMTk2OSwgOTgzMzgyLCAKKyAgICAxMjc4NDEsIDYzNjUsIDE4ODcsIDY3NjMsIDk4MzM2MiwgODA4MCwgNzAwNiwgMCwgOTgzMzYzLCA2NzU3LCA2NDM1MSwgCisgICAgMTU0NCwgMCwgNjc2NiwgNjQ2NzcsIDEyMDcxNiwgOTgzMzY0LCA2MTQ2LCAwLCA3NzEsIDk4MzM2NSwgMCwgMTI4MTIsIAorICAgIDEzMTY4LCA0MjI3MiwgMTIyMDAsIDkxNzkyNywgNzkwNCwgMCwgOTUzLCAxMjkxNywgMTE5NTYwLCAxMjMwMCwgMCwgCisgICAgMTE0OTEsIDk3MjQsIDEwMzQxLCA5ODM3NjQsIDk1MjQsIDc0OTAsIDExMzg5LCA3NDg5LCAzMzc5LCAwLCA3NDg3LCAwLCAKKyAgICA0NzEsIDc0ODQsIDc0ODIsIDY3NTMsIDc0ODAsIDU3NjQsIDc0NzgsIDc0NzcsIDY1MDEsIDc0NzUsIDY5MTgsIDc0NzMsIAorICAgIDc0NzIsIDI0NzQsIDc0NzAsIDc0NjgsIDEwMjMyLCAxMDYxNSwgMTAyMTMsIDEyNzI4OCwgOTIzNTcsIDEwMDQ5LCAxMTgzNCwgCisgICAgMzU0NCwgMCwgNjAxNywgNjUzMTEsIDEyNzQ4MSwgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAwLCAKKyAgICAxMjA1NDQsIDAsIDAsIDkyNjYwLCAwLCAwLCAwLCAxOTk2MSwgMjQ3MiwgNDI2NjUsIDkyMzQxLCAwLCAyMTM5LCA0MjU2LCAKKyAgICAxMjA3NzYsIDc0MzgwLCAwLCA0MjY3NSwgNDI2NTgsIDEyODQ1LCAwLCAwLCA2NTEzOCwgMTE5MzU1LCA2Nzg2MiwgMCwgCisgICAgNjU2NzEsIDcwODMsIDEyMDAwOCwgODA2NiwgNzY3OCwgNzQ4NjUsIDAsIDAsIDAsIDAsIDcxODYsIDAsIDEyMDU1NSwgMCwgCisgICAgNDQ1LCAxMjA1NjYsIDEyODMwOCwgMCwgMCwgODMzMCwgMCwgMCwgNDI3OTcsIDk4MzE1MCwgMTIwMjE1LCAwLCAzOTAyLCAwLCAKKyAgICAxNzcwLCAwLCAxMjg4NjYsIDE1NjAsIDEyMDIwOSwgMTk0OTcyLCA0NTg0LCA3Mzg0MywgMCwgMTE3MTIsIDEwODY2LCAKKyAgICAxMTg5MjgsIDExMTgsIDcxMzM0LCAwLCAwLCAxMDgxLCA3NDM2LCA2ODQyMCwgNzI1MiwgMCwgNTk5NiwgNjk5MjEsIDQ5MDMsIAorICAgIDAsIDQxMzg2LCA1MTYyLCAxMTkxODksIDEzMzAsIDAsIDcxMzksIDAsIDEyMDQ3LCA0MTM4NCwgMCwgMCwgMTg0OCwgNDMzNCwgCisgICAgNjMyNCwgNDE5NzUsIDY0Nzc3LCAxMDY3NCwgMTIzMDgsIDEyMTg2LCAwLCAwLCA5ODM3MzIsIDEyNzE1LCA2ODAwMiwgCisgICAgOTgzNDcxLCAxMjY2MzAsIDIwMTgsIDY2NjcyLCA0MTk3OSwgNjY2ODUsIDExOTE1NywgNjgwMDAsIDkyNDY0LCAwLCAKKyAgICAxMjY5ODQsIDY4MDAxLCA5MzM0LCA5MjcwNSwgOTIzMTUsIDcwMTAxLCA3OTc1LCAwLCA3Nzk1NywgMCwgNjY2MjEsIDQ4ODQsIAorICAgIDY2NTk3LCA2OTczMiwgMCwgMCwgNjMxMywgNjU1MTMsIDY5ODU3LCAwLCAwLCAwLCAyMzQ1LCA0MzY5NywgNDYzLCAwLCAwLCAKKyAgICAxMTk2MDcsIDMxMTcsIDU0NjAsIDAsIDAsIDk4MzM3OSwgMCwgNDIyNzksIDE5NDU3NywgMCwgNzg0MTUsIDAsIDE5NTAwOCwgCisgICAgOTgzMzc2LCAxMzI0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY2MywgMCwgMCwgMCwgMCwgMjQ4MiwgMTQ3MSwgMCwgMCwgCisgICAgNDIyNDcsIDEyMzc4LCA3MzkyNSwgNjk2NjQsIDAsIDEyMzc0LCAwLCAwLCAwLCA5ODM2ODUsIDI0NjAsIDAsIDExOTQ0LCAKKyAgICAxMjM3NiwgMTI3ODY4LCA2NDY3OSwgMCwgMTIzODAsIDEwNTU3LCA2NDQ3MywgNTg3MCwgMCwgMjAyNCwgMTI3MTgwLCAwLCAKKyAgICAwLCA1MzksIDAsIDEyNzc2NSwgOTQwNTIsIDM4NTMsIDY1MTgwLCAxMjc5MjMsIDEyMDc5NiwgMTIwMjQ1LCA5MjMyNCwgMCwgCisgICAgODY1OSwgMCwgMTI0NzQsIDkyNTc5LCA5NTAzLCAxOTQ5NjksIDI0NzgsIDAsIDQxNjIsIDAsIDQyNjAsIDEyOTUzLCAKKyAgICA2OTYzMywgMTIwMDg5LCAxMjQ3MCwgMCwgNzQxODksIDI3NDIsIDEyNDc2LCAxMTc5OCwgMTA5NDYsIDEyNzMxMCwgNTAwMCwgCisgICAgMCwgOTgzNTc5LCAwLCA2OTY3MiwgODIxMywgNzQwMTcsIDc3NzEsIDYxNjEsIDY4MDE4LCA2NzA5LCAwLCA3ODg4NSwgCisgICAgOTgzNjk5LCAxMjc5NzEsIDEyMDU4MiwgNzg1NDcsIDAsIDEwMzAxLCAxMDMzMywgMTAzOTcsIDAsIDAsIDczNzkxLCAwLCAwLCAKKyAgICAwLCAwLCAxMTkxMjMsIDQwMTQsIDEyODQyLCA3Mzk1MiwgMTIwMTUsIDEyNzI5MCwgODI3NSwgMzg5MywgOTgzMjU2LCAwLCAKKyAgICAxMjIxMCwgNzIyMSwgNDIxNDcsIDAsIDc0NTUwLCA3NDQ2NSwgNjQ3NDcsIDExODg0MSwgMCwgMTI1MTYsIDQ0NDQsIDAsIAorICAgIDkyMjcxLCA3NDUzNywgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgNDE5NzMsIDM1OTEsIDQxOTY5LCAwLCAKKyAgICAyNDUzLCAxMjg1NDksIDkyNjY2LCA2NDcwNSwgMCwgMCwgMTAzNDksIDEwNDEzLCA0MzU5MSwgNDE5NjIsIDMyMDIsIAorICAgIDc0MzUzLCAwLCA4MzE2LCAwLCAwLCA5NDA2MCwgNjg3LCAwLCAwLCAwLCAxODQwLCAwLCA2ODY3MSwgMTE5ODA5LCA0ODgzLCAKKyAgICAyODUsIDQ3MjMsIDcwMDk5LCA5MjY5MiwgNDQ1OSwgNzQ1NzcsIDQyOTIxLCA0MTcyMCwgMTEwODksIDI0MCwgMTk5MDYsIDAsIAorICAgIDQyMzIzLCAwLCA5NzQzLCAxMjAyMzIsIDEzMTM0LCAxMjY1MzUsIDAsIDAsIDAsIDAsIDQyNjM0LCA5ODMzMzUsIDQzNDM3LCAKKyAgICAzMDgxLCAxMTQ2MywgMTIwMTU0LCAwLCAwLCAxMDQ0NSwgMCwgMCwgNjY3MTcsIDI2MTQsIDkxMjUsIDExOTAyMywgMTcyOSwgCisgICAgMCwgMTIwMjM2LCA2NTIyMSwgNjM4ODMsIDQzMzM0LCA2NDg1MiwgMCwgNjUxOTQsIDY2MjAxLCAwLCA2NjU3OCwgNTAwMSwgCisgICAgNDE4NzksIDc0NDI3LCA0MTIxLCA1MDAzLCA4ODQsIDY2NzAwLCA2Mzg3OSwgNDk0MywgNTE1MCwgNzM4ODksIDc0MTgyLCAKKyAgICAxMjc5MTUsIDY0MywgMzA4NiwgMCwgNDI0NDgsIDQyMjk5LCA1OCwgMCwgOTE3OTUyLCAxMjAwODMsIDYzODczLCA4NDkxLCAKKyAgICAwLCAwLCAwLCA0NTMwLCA0MjQwOSwgNzEyNiwgMTk0NTc1LCAyNzIxLCAxMjAwNzQsIDExOTA5NiwgMTk5MjksIDAsIAorICAgIDE5NDU3NCwgMCwgNDI0MiwgNDI2NCwgMTIwMDc3LCAxMjA1MzAsIDY2MTc5LCA0MjQxMiwgNjU5NDEsIDEzMTE0LCA2NDUyMiwgCisgICAgMTA3NDAsIDMwOTQsIDAsIDk3NTQsIDExOTEwMiwgNDQzNywgNzM5NDgsIDEyNzA3NCwgOTgzMjMyLCA1NTI4MCwgNDIxNzQsIAorICAgIDE5NDkyNSwgNDI0MzAsIDAsIDAsIDQyMzU1LCA2NjAyNiwgNDMwNiwgNDEzODAsIDY4NDMyLCA5MjU4NiwgMCwgNjY2NjcsIAorICAgIDEyNzMwOSwgMCwgMTI2NTIxLCA0MjIwMCwgNDI1NjYsIDAsIDAsIDUwODgsIDY5NDgsIDAsIDg1MjQsIDAsIDAsIDEyMzg1LCAKKyAgICAwLCAwLCA2OTY0NiwgMTM4NiwgNjQ1ODAsIDExNDgwLCA2MTE2LCA2NTAzOSwgNjUwMzgsIDEyMzkyLCA2NTAzNiwgODA2NCwgCisgICAgMCwgMTIxMDEsIDU4MjIsIDExOTAwNCwgMjA4MCwgNzEwLCA3Nzk5OSwgMTE2NjMsIDE2NjYsIDQyMDkxLCAxMTk2NTcsIAorICAgIDEyMzgzLCA0MzY3MSwgNDIwOTIsIDY4NDE4LCA0Mjg5LCAwLCA2Mzg5NiwgMTIwNjEsIDQyMDk2LCA0MzYyMSwgMzM2MiwgCisgICAgMTIzNzcsIDk4MzgyMywgOTgzODI1LCA2ODQ0OSwgNzQ2MSwgNzM5MDEsIDEyNDQsIDMzMSwgNzM3ODYsIDEyNjgzLCAKKyAgICAxMDY2MiwgMCwgODExMiwgMCwgNjU4NTIsIDAsIDEyMzc5LCAxOTQ4NzcsIDEyMDgxOCwgNDE5NjQsIDQyMjA4LCA2Mzg0MywgCisgICAgMjA4NCwgNDE5NjUsIDAsIDY1ODY2LCA0MzI3LCAwLCA2Mzg0MCwgNzg1NDksIDQxMjIwLCAxMzAzMiwgMCwgNTg0LCAKKyAgICAxMjkzMywgNDMxNzcsIDEyMzczLCA2OTg1NSwgMTMwMDAsIDEzNTEsIDI5MzUsIDg2OTgsIDEyNjY1LCAwLCAxOTMwLCAwLCAKKyAgICA3ODIyOSwgMTI0MjcsIDY2NTE0LCA2OTg1OSwgMTMwMzEsIDAsIDYzOTAxLCAwLCAzNjU3LCAxMjg1NzIsIDY1MjAyLCAKICAgICA2MDAwLCAxMTkyMDYsIDEyNDI2LCAxMjcxODEsIDAsIDQxNzQwLCAxMjQyOCwgNDEyODMsIDQxOTE2LCAxMTkyMTAsIDAsIDAsIAogICAgIDEyNDI5LCA2NzI3LCAwLCA3NTYyLCAwLCA1MTcwLCAwLCA0MTc1NSwgNjc2LCAwLCA2NjcwNCwgNjY2NjQsIDk5NzgsIAogICAgIDY2NDkxLCAzNTM2LCAwLCA5NzUyLCA5MjM5NywgNjE2MiwgMCwgNjkyMjgsIDEwMTEzLCA0MTgyOSwgNjU4ODYsIDUxNTksIApAQCAtMTY0MjEsNzA2ICsxNzMzMSw3MzEgQEAKICAgICAwLCA2Mzg2NywgNDEzMywgMTEzNzEsIDIxMCwgNDYwMCwgMCwgNzQ1NjAsIDQxMzcsIDgwODIsIDc4NTA2LCAxMTkwNjIsIAogICAgIDc4NTA0LCA2NzA0LCA0NTkxLCAxMjgwMjksIDAsIDAsIDk2ODAsIDAsIDEyMDYyMywgNTYxLCAxMjE1OSwgMTk1LCA3ODUwOCwgCiAgICAgNDE1MDEsIDAsIDQyMDMxLCA1NzE5LCA3MTcyLCA0MjY4NywgODM2OCwgMCwgNDE0OTksIDAsIDAsIDQyMjQyLCA0MTQ5OCwgCi0gICAgOTE3Nzk0LCA0MjAyNSwgNzg1NjcsIDY1ODA1LCA0MjQ2MywgMCwgMjkyNCwgMCwgMTIwNTEwLCAwLCAwLCAxMTkyMTMsIAorICAgIDkxNzc5NCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDAsIDI5MjQsIDAsIDEyMDUxMCwgMCwgMCwgMTE5MjEzLCAKICAgICA3Mzk0MSwgMCwgNDIzMzAsIDkxNzc4NCwgMzk2OSwgMCwgMCwgNzE2OSwgMTk5MiwgOTY1MiwgNzM5NzcsIDcyNDYsIAotICAgIDQyMDg2LCA5MTc3OTAsIDkxNzc4OSwgMCwgMCwgMTI4ODAxLCAwLCAwLCAzMjcsIDAsIDkwNDIsIDkxNzc3NywgOTE3Nzc2LCAKLSAgICA2NTE0OCwgMTI0MzMsIDkxNzc4MSwgMTI3Mjc2LCA5MTc3NzksIDEyNDMxLCA4NjY4LCAxMjQzNCwgMCwgOTE3NzgyLCAKLSAgICA1OTk5LCAwLCA3NzEyLCAxMjQzMiwgMTI4MjQzLCA0MzY1MywgMTcyNiwgMTAxNSwgMCwgODIxMiwgMCwgMTI4MDE0LCAKLSAgICA0MjQyMywgMTE5MDY2LCAwLCAxMjgxMDgsIDY2NzA5LCAwLCA4ODExLCA5MjcsIDAsIDAsIDEyNDM2LCAwLCA0MjAyMSwgMCwgCi0gICAgMCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgMCwgMTk1MDE2LCAwLCA3ODE5NywgMTEzNDgsIDAsIDc4MDM3LCA5MTk0LCAKLSAgICAwLCAwLCAxOTkxNCwgMTIxNzksIDAsIDk2NDgsIDE5NDkyMywgNjM4MzYsIDYzODMyLCA5MTc3NzMsIDEwOTY3LCA2MzgxNiwgCi0gICAgMjU5NCwgMzQ0NCwgNjM4MTcsIDY0NjUxLCAwLCA0MTUwMywgMTI3NDc4LCAxMTI2NSwgMCwgMTIwNzU2LCAxOTQ5MjIsIDAsIAotICAgIDU2NjQsIDM5NzIsIDAsIDAsIDAsIDEyODUwOCwgMTI0MTYsIDkxNzc2NCwgMTE5NjA4LCAxMDgxNiwgOTE3NzY5LCAKLSAgICA5MTc3NjgsIDEyNDE4LCA3NDExMSwgMzg4MiwgODUzMiwgOTE3NzcxLCAxNTczLCAxMjg2NDgsIDExOTg0NywgNDU5NiwgCi0gICAgNjYzMzksIDEyNDE3LCA2NjAwMSwgNjUzNDMsIDE5NDc4MiwgMTI0MTQsIDgyODcsIDY4MjE5LCAxOTUwMTcsIDY4MTA4LCAKLSAgICAxMTQzLCAxMTkxNjksIDExOTg0NiwgMTI0MTUsIDY2MjYsIDQyNzYzLCAwLCAxMTg4ODQsIDkwMjEsIDEyMDc4MywgMCwgCi0gICAgMTE3MjQsIDAsIDAsIDEyNzEwNCwgMTI4NTI2LCAwLCAwLCA4MDI3LCAxMDk5NywgOTE3MSwgMTI3NDEsIDExNDAwLCAKLSAgICA3NDE5NywgMTk0Nzk5LCAwLCAxMjgyMzksIDAsIDEyODg4MSwgMTE5NjA0LCAxMjc1MjMsIDEyMDE5MCwgMTk0NzczLCAKLSAgICA2NzYwOCwgMTI4MjE0LCA0MjM2OCwgMCwgNzcxNSwgMzg4MSwgNDE0ODcsIDEyMTE4LCA0MjUxNCwgNjg2NTEsIDAsIDAsIAotICAgIDMwMDksIDQxNDc2LCA0MTQ4OSwgNjk4MjUsIDMwMDcsIDE0NDgsIDMwMTgsIDE5NDgwOSwgMzg4OSwgODUyMSwgNTA4MywgCi0gICAgNTA4MiwgMTE5ODU5LCAxMjAxODQsIDg1MTksIDAsIDMwMTQsIDUwODEsIDY1ODUzLCAxMjA3MTUsIDAsIDEyMDE4MywgCi0gICAgNzgyMTksIDUwNzksIDY0ODAyLCA0MjIxMCwgNDU5NywgNjU1MzIsIDc4NDQ0LCAxMjAxODUsIDEyMzcxLCAwLCA4NDA3LCAwLCAKLSAgICAxMDgwNSwgODUxOCwgMTA3NzksIDEyMDE4OCwgMCwgMCwgMTIzNjcsIDQyMTcwLCAwLCA5MjU1NywgNjI5LCAxOTI0LCAwLCAKLSAgICAxMjAzNywgNzQzNjYsIDU5ODcsIDg0NjIsIDgwMDUsIDEyMzY1LCA2MzkzMywgNjk3MzUsIDEyMDgxNSwgMTIzNjksIAotICAgIDEwNjQ5LCAwLCA1MDc3LCAxMjcxMDgsIDEwODgwLCA2MzkyNywgNTA3NSwgOTE3ODgxLCAwLCA2NTA3NSwgMCwgMTEwMDcsIAotICAgIDAsIDY2NjU5LCA5MjYwNywgMCwgNjY2ODQsIDAsIDM0MzQsIDQ5NTQsIDE5MDQsIDAsIDUyNjYsIDEyNjk4MCwgNTI3MiwgCi0gICAgMTA0OTksIDQ1MDcsIDk1NzgsIDYzOTIzLCAxMjAxNzcsIDc5NzksIDAsIDk4MzEsIDAsIDE5NDkyNiwgNDYxLCA5ODAzLCAwLCAKLSAgICA0NTA0LCAxNTA1LCAwLCA2MzI1LCA1Mjc2LCA0MzAyMSwgMTIwNDg4LCAwLCA1NTIzNiwgMCwgNjY0NjEsIDUxNzcsIAotICAgIDQxMzI0LCAxMjA1NSwgODcyMiwgMCwgNDEzMjcsIDAsIDY2Njk1LCA0MTE0LCA0MDksIDQzODMsIDg5MDAsIDg5NDgsIAotICAgIDQxMzI1LCAwLCA3MjEsIDEwMTgyLCA5MTA4LCAwLCAwLCAxMTkxODUsIDQyMjI5LCAxOTQ5MTIsIDAsIDU5OTgsIDAsIAotICAgIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIDAsIDc4NTcxLCAwLCAwLCAxOTQ1NjIsIDQxNTc2LCA0MjIxNSwgNzg1NzAsIAotICAgIDExOTIwNywgMCwgODU3OCwgNTk5NSwgNzU3MywgNDE1NzUsIDc0Nzg5LCA3NDc1MiwgNjM5NDQsIDYzOTQ5LCA2NDc2NywgCi0gICAgMjY3MCwgNDE2NywgMCwgMTE3MjMsIDAsIDc0MTIwLCAwLCA2NTA3NiwgOTM4LCA0MzQxNCwgNzM4NTQsIDExNzM3LCA5NzIxLCAKLSAgICAwLCAwLCAwLCAxMTc0MiwgMjQxOSwgMCwgMTE0OTMsIDEyMzM0LCAxOTQ5MTMsIDQxNTMsIDEyMzAyLCAxMDc5MywgNTI1MCwgCi0gICAgMTI0MDcsIDExOTc4LCA0NDA0LCA5MTg5LCAxMjQwMSwgNDIwMDcsIDU3NzUsIDY3NTksIDY1ODA2LCA0Mzk5NywgMCwgCi0gICAgNDIwMDIsIDEyNDA0LCAwLCAwLCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIDQ5ODMsIDAsIDg2MSwgMCwgMCwgCi0gICAgMCwgMCwgNjU1NzcsIDQzMzcwLCAwLCAwLCAxMTk1NiwgMCwgMCwgMCwgOTYxNiwgNjYzMSwgMCwgMTI4MTYsIDc0NTgzLCAKKyAgICA0MjA4NiwgMTI2NjE1LCAyMjE5LCAwLCAwLCAxMjg4MDEsIDE5NDgzNywgMCwgMzI3LCAwLCA5MDQyLCA5MTc3NzcsIAorICAgIDkxNzc3NiwgNjUxNDgsIDEyNDMzLCA5MTc3ODEsIDEyNzI3NiwgOTE3Nzc5LCAxMjQzMSwgODY2OCwgMTI0MzQsIDk4MzgyNiwgCisgICAgOTE3NzgyLCA1OTk5LCAwLCA3NzEyLCAxMjQzMiwgMTI4MjQzLCA0MzY1MywgMTcyNiwgMTAxNSwgMCwgODIxMiwgMCwgCisgICAgMTI4MDE0LCA0MjQyMywgMTE5MDY2LCAwLCAxMjgxMDgsIDY2NzA5LCAwLCA4ODExLCA5MjcsIDAsIDAsIDEyNDM2LCAKKyAgICA5ODMyMzksIDQyMDIxLCAwLCAwLCAxMjk5LCAxMjI0MCwgNDIzNTAsIDY1MTQzLCAwLCAxOTUwMTYsIDAsIDc4MTk3LCAKKyAgICAxMTM0OCwgMCwgNzgwMzcsIDkxOTQsIDk4MzE4NCwgMCwgMTk5MTQsIDEyMTc5LCA5ODM4MDMsIDIyOTYsIDE5NDkyMywgCisgICAgNjM4MzYsIDYzODMyLCA5MTc3NzMsIDEwOTY3LCA2MzgxNiwgMjU5NCwgMzQ0NCwgNjM4MTcsIDY0NjUxLCAwLCA0MTUwMywgCisgICAgMTI3NDc4LCAxMTI2NSwgMCwgMTIwNzU2LCAxOTQ5MjIsIDAsIDU2NjQsIDM5NzIsIDAsIDAsIDAsIDEyODUwOCwgMTI0MTYsIAorICAgIDkxNzc2NCwgMTE5NjA4LCAxMDgxNiwgOTE3NzY5LCA5MTc3NjgsIDEyNDE4LCA3NDExMSwgMzg4MiwgODUzMiwgOTE3NzcxLCAKKyAgICAxNTczLCAxMjg2NDgsIDExOTg0NywgNDU5NiwgNjYzMzksIDEyNDE3LCA2NjAwMSwgNjUzNDMsIDEyNjQ5MSwgMTI0MTQsIAorICAgIDgyODcsIDY4MjE5LCAxOTUwMTcsIDY4MTA4LCAxMTQzLCAxMTkxNjksIDExOTg0NiwgMTI0MTUsIDY2MjYsIDQyNzYzLCAwLCAKKyAgICAxMTg4ODQsIDkwMjEsIDEyMDc4MywgMCwgMTE3MjQsIDAsIDAsIDEyNzEwNCwgMTI2NjE5LCAwLCAwLCA4MDI3LCAxMDk5NywgCisgICAgOTE3MSwgMTI3NDEsIDExNDAwLCA3MTMwNSwgMTk0Nzk5LCAwLCAxMjgyMzksIDAsIDEyODg4MSwgMTE5NjA0LCAxMjc1MjMsIAorICAgIDEyMDE5MCwgMTk0NzczLCA2NzYwOCwgMTI4MjE0LCA0MjM2OCwgMCwgNzcxNSwgMzg4MSwgNDE0ODcsIDEyMTE4LCA0MjUxNCwgCisgICAgNjg2NTEsIDAsIDk4Mzg4NiwgMzAwOSwgNDE0NzYsIDQxNDg5LCA2OTgyNSwgMzAwNywgMTQ0OCwgMzAxOCwgMTk0ODA5LCAKKyAgICAzODg5LCA4NTIxLCA1MDgzLCA1MDgyLCAxMTk4NTksIDEyMDE4NCwgODUxOSwgOTgzMjM1LCAzMDE0LCA1MDgxLCA2NTg1MywgCisgICAgMTIwNzE1LCAwLCA2ODAxNCwgNjk5NTEsIDUwNzksIDY0ODAyLCA0MjIxMCwgNDU5NywgNjU1MzIsIDExODI4LCAxMjAxODUsIAorICAgIDEyMzcxLCAwLCA4NDA3LCAwLCAxMDgwNSwgODUxOCwgMTA3NzksIDEyMDE4OCwgNzEzMDMsIDk4MzkyNCwgMTIzNjcsIAorICAgIDQyMTcwLCAwLCA5MjU1NywgNjI5LCAxOTI0LCAwLCAxMjAzNywgNzQzNjYsIDU5ODcsIDg0NjIsIDgwMDUsIDEyMzY1LCAKKyAgICA2MzkzMywgNjk3MzUsIDEyMDgxNSwgMTIzNjksIDEwNjQ5LCA2Nzk4MSwgNTA3NywgMTIwMTc0LCAxMDg4MCwgNjM5MjcsIAorICAgIDUwNzUsIDkxNzg4MSwgMCwgNjUwNzUsIDAsIDExMDA3LCA5ODM2OTYsIDY2NjU5LCA5MjYwNywgMCwgNjY2ODQsIDAsIAorICAgIDM0MzQsIDQ5NTQsIDE5MDQsIDAsIDUyNjYsIDEyNjk4MCwgNTI3MiwgMTA0OTksIDQ1MDcsIDk1NzgsIDYzOTIzLCAKKyAgICAxMjAxNzcsIDc5NzksIDAsIDk4MzEsIDAsIDE5NDkyNiwgNDYxLCA5ODAzLCAwLCA0NTA0LCAxNTA1LCAwLCA2MzI1LCAKKyAgICA1Mjc2LCA0MzAyMSwgMTIwNDg4LCAwLCA1NTIzNiwgMCwgNjY0NjEsIDUxNzcsIDQxMzI0LCAxMjA1NSwgODcyMiwgMCwgCisgICAgNDEzMjcsIDAsIDY2Njk1LCA0MTE0LCA0MDksIDQzODMsIDg5MDAsIDg5NDgsIDQxMzI1LCAwLCA3MjEsIDEwMTgyLCA5MTA4LCAKKyAgICA3MTMxMSwgMCwgMTE5MTg1LCA0MjIyOSwgMTk0OTEyLCAwLCA1OTk4LCAwLCA0MjM1MywgNzQ4MjUsIDAsIDEyNTg3LCAKKyAgICA5NDEwNCwgNzg1NzEsIDAsIDcxMzI4LCAxOTQ1NjIsIDQxNTc2LCA0MjIxNSwgNzg1NzAsIDExOTIwNywgMCwgODU3OCwgCisgICAgNTk5NSwgNzU3MywgNDE1NzUsIDc0Nzg5LCA3NDc1MiwgNjM5NDQsIDYzOTQ5LCA2NDc2NywgMjY3MCwgNDE2NywgMTk0Nzk2LCAKKyAgICAxMTcyMywgMCwgNzQxMjAsIDAsIDY1MDc2LCA5MzgsIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIDAsIDAsIDAsIAorICAgIDExNzQyLCAyNDE5LCAwLCAxMTQ5MywgMTIzMzQsIDE5NDkxMywgNDE1MywgMTIzMDIsIDEwNzkzLCA1MjUwLCAxMjQwNywgCisgICAgMTE5NzgsIDQ0MDQsIDkxODksIDEyNDAxLCA0MjAwNywgNTc3NSwgNjc1OSwgNjU4MDYsIDQzOTk3LCAwLCA0MjAwMiwgCisgICAgMTI0MDQsIDk4MzU1MywgMCwgNDk0MCwgMTI0MTAsIDc2ODMsIDExNjcsIDczNzI5LCA0OTgzLCAxMjA1MDcsIDg2MSwgMCwgCisgICAgMCwgMCwgMCwgNDM3NTcsIDQzMzcwLCAwLCAwLCAxMTk1NiwgMCwgMCwgMCwgOTYxNiwgNjYzMSwgMCwgMTI4MTYsIDQzNzU5LCAKICAgICA0MjIxOCwgMTI3MTAsIDY4Njc0LCAxMjcyMSwgNDEwMSwgNjYxODUsIDAsIDU5OTIsIDc2MTYsIDE5NTA0NCwgMCwgMTI1NzcsIAotICAgIDAsIDAsIDg1MywgNDI2OTMsIDE5NTAxNCwgMCwgMCwgNTAxNiwgNDM1MzUsIDYzODkzLCA0MjgzNSwgOTQ5MSwgOTE3OTEzLCAKLSAgICAwLCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIDY1MDYwLCAxMjA3OTcsIDk5MDAsIDAsIDAsIDE5NDkxOSwgMCwgCi0gICAgMTI3ODMwLCAwLCA2NDc3OCwgMTI1ODUsIDEwNTY1LCAxMjgxNTEsIDEyMTc3LCAwLCAwLCAwLCA3NzgyNCwgMCwgNDkwMCwgCi0gICAgMTI3ODc0LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIDc0NzY4LCA4OTcxLCA3ODU5MywgNDMxMTMsIDk3MDIsIDc4NTk0LCAKLSAgICAxMTAyNSwgOTI0NSwgMTMwNDgsIDQ5MjcsIDQxMzgsIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIDEyMzk3LCA3NzgyNywgMCwgCi0gICAgMTMwNTQsIDEyMzk0LCAwLCAwLCAwLCAxMzA1MywgMCwgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCAKLSAgICA3ODU5MCwgNzg1ODMsIDAsIDAsIDAsIDE5NDkxNSwgNzI2NywgMCwgNzQ4MzMsIDEyODE4MSwgNTk5MywgMjgxOSwgMCwgCi0gICAgMTI3MDYsIDc3ODQwLCAxODkzLCA3MjY2LCA2MzkxNSwgNzI2NCwgNzI2NSwgMCwgMTM2MywgMCwgNjM5OTcsIDYzOTEwLCAKLSAgICA2Mzk5NiwgMzA3NywgMCwgMCwgMTUxMiwgMCwgMTI1ODksIDQxNDc5LCAxMjgzMTMsIDAsIDQzMzM5LCAwLCA5ODM2LCAKLSAgICAxMjA3MjcsIDAsIDQxNDgxLCA0MzMzNSwgNzgzMiwgNDIzNDMsIDMwOTAsIDQzMzM3LCA4MTcsIDE2NjQsIDE4NTAsIAotICAgIDEyODg0MSwgMzA3OSwgMTEzNDAsIDQyNDA4LCA0MjQ0NywgMTI3MTQwLCAxMjAwMjAsIDQyMzA3LCAxMjM4NiwgNDIzMDQsIAotICAgIDkxNzU1NSwgMCwgMTIzODksIDAsIDkyMzY2LCA0MTk5NiwgMTE1MjYsIDYzOTg1LCA1ODY0LCAxMTQ3LCA2Mzk5MiwgCi0gICAgNDI4ODcsIDE5ODcsIDkyNzE4LCA1NDgwLCA3ODU4LCAxMTY1MywgNDExNiwgMTIzOTEsIDY2MTkzLCAwLCA0OTM5LCAKLSAgICAxMjM4NCwgMCwgMCwgNDE2ODYsIDYzOTA1LCAxMTk2MDEsIDE5NDY4OCwgMCwgMCwgMTI2NDksIDAsIDAsIDgyNDcsIDUwNywgCi0gICAgOTEsIDIwNDIsIDEyMDc3NSwgNDM2NDMsIDE5NDY4OSwgNjYwMjgsIDEwMDM2LCA0MTg0NCwgMTE5ODEzLCA3NzQsIAotICAgIDExOTgzMSwgMCwgMTE5ODE1LCA1OTk0LCAxMjUzOSwgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCAwLCAxMTk2MDAsIDAsIAotICAgIDAsIDc3MTksIDYwMjYsIDI0ODYsIDEyODMxMiwgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCA0MTA3MywgOTY4NywgNDE2ODEsIAotICAgIDYzMDQsIDExOTgxMiwgNjYxOTYsIDE5NDg4MSwgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCA0MjM3OSwgMCwgNzUzNCwgCi0gICAgMTIyMTksIDAsIDEyNzUyOCwgNDI4MTAsIDEwNDkyLCAwLCAwLCAwLCA0MzExOSwgMCwgMTIwNzUzLCAxMjQwMywgMjUwMCwgCi0gICAgMTk1MDEzLCAwLCA0ODk5LCAxMjcyOSwgMCwgMCwgNzQxMTMsIDIzNDMsIDQxMDMsIDE5OTQ2LCA3NDExMiwgNzc4NTEsIAotICAgIDEzMTEyLCAwLCAxOTUwMTIsIDEyODU5LCAwLCAxMjAxNDgsIDY2MzY5LCA1ODYxLCAxMjc3NTgsIDExOTk5LCAxMjQwMCwgMCwgCi0gICAgMCwgMTI2NDUsIDUxNDYsIDExMzIwLCA2ODQxMCwgNjc0OCwgNjUwNDAsIDAsIDY0MTg0LCAxMjk3NCwgNjQxODMsIDY3NjEzLCAKLSAgICAxMjA2NDUsIDUxNDcsIDAsIDAsIDc0NTI0LCAwLCAxOTI4LCAwLCA2NzY0OSwgNTk5MSwgMzQ0NSwgNjc2MDksIDQ5NzYsIAotICAgIDY0MTc2LCAwLCA2NzYxMCwgODI0MSwgMCwgNzc4NjgsIDQyMDYsIDAsIDAsIDAsIDEyODI5OCwgMCwgMTAxMzgsIDAsIDAsIAotICAgIDg4OTcsIDAsIDAsIDgzNTcsIDQxMjQsIDc3ODYyLCA2NTgzNiwgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAwLCAwLCAxMTIzLCAKLSAgICA5NjMsIDQxNTUzLCAxMDEyMCwgMTI0MDUsIDEyMDE1MCwgOTI2NjQsIDM5OCwgMTMyNzgsIDk3MjMsIDYzNjYsIDEyMDMxMSwgCi0gICAgNzk0NSwgMCwgNDQwMiwgOTk3MCwgMTI0MDIsIDAsIDQyMzkyLCAxMzA1LCAxMjQwOCwgMCwgNDQwMDcsIDAsIDAsIDQxNDY0LCAKLSAgICAxMjQxMSwgMTI5NjksIDEyMDgyNCwgNDE0NjUsIDAsIDg1MjgsIDE1NzUsIDAsIDYzOTU1LCAxNjUsIDMwMjQsIDQxNDY3LCAKLSAgICAxMTkxNjMsIDAsIDkwOTMsIDAsIDkxNDcsIDAsIDYzOTU4LCAwLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgNzM3NzYsIDY3NTAsIAotICAgIDE5NTAxOCwgMCwgOTU5NCwgMCwgMCwgNDM1MjcsIDAsIDcyNywgMTk0NzAzLCAwLCA1ODA1LCAwLCA2NzI2LCAwLCA0MjE3NiwgCi0gICAgMTIzNzAsIDExNjU1LCAxMTkwOTUsIDEwNTkxLCAxMjM2NCwgMCwgMTIzNzIsIDEyMDY0MiwgMTIwMzA3LCAwLCA5MjM0MywgCi0gICAgMCwgMTIzNjYsIDEwOTYzLCA2MDY2LCAxMzI5LCAwLCAzMDUyLCA5MjIwLCAwLCA2NDQ3OCwgMTk0NzAxLCAxMDgwMywgCi0gICAgNDEzMiwgMTIwMzA2LCA2ODQ3NCwgOTI0NzMsIDAsIDAsIDc0ODM3LCAxMjAxNTUsIDE0OTksIDAsIDgwNTUsIDQyNzQwLCAKKyAgICAwLCA5ODM4NzUsIDg1MywgNDI2OTMsIDE5NTAxNCwgMCwgOTgzNjM4LCA1MDE2LCA0MzUzNSwgNjM4OTMsIDQyODM1LCAKKyAgICA5NDkxLCA5MTc5MTMsIDAsIDkxNzkxNCwgMCwgMTI3MTIsIDcxMDUsIDEyNzgwNywgNjUwNjAsIDEyMDc5NywgOTkwMCwgCisgICAgNzc1MCwgMCwgMTk0OTE5LCAwLCAxMjc4MzAsIDAsIDY0Nzc4LCAxMjU4NSwgMTA1NjUsIDEyODE1MSwgMTIxNzcsIDAsIDAsIAorICAgIDAsIDc3ODI0LCAwLCA0OTAwLCAxMjc4NzQsIDEyODc4LCA5MjYzMCwgODk4NCwgNDExOSwgNzQ3NjgsIDg5NzEsIDc4NTkzLCAKKyAgICA0MzExMywgOTcwMiwgNzg1OTQsIDExMDI1LCA5MjQ1LCAxMzA0OCwgNDkyNywgNDEzOCwgNzQxODUsIDkyNDgxLCA5MjcxMCwgCisgICAgMTIzOTcsIDc3ODI3LCAwLCAxMzA1NCwgMTIzOTQsIDAsIDAsIDAsIDEzMDUzLCAwLCAzOTQ4LCAxMDc4MSwgMTU0NiwgMCwgCisgICAgNTAxMCwgMTY4MCwgMTA1MDcsIDc4NTkwLCA3ODU4MywgMCwgMCwgMCwgMTk0OTE1LCA3MjY3LCAwLCA3NDgzMywgMTI4MTgxLCAKKyAgICA1OTkzLCAyODE5LCAwLCAxMjcwNiwgNzc4NDAsIDE4OTMsIDcyNjYsIDYzOTE1LCA3MjY0LCA3MjY1LCAwLCAxMzYzLCAwLCAKKyAgICA2Mzk5NywgNjM5MTAsIDYzOTk2LCAzMDc3LCAwLCAwLCAxNTEyLCA2OTkyOSwgMTI1ODksIDQxNDc5LCAxMjgzMTMsIDAsIAorICAgIDQzMzM5LCAwLCA5ODM2LCAxMjA3MjcsIDAsIDQxNDgxLCA0MzMzNSwgNzgzMiwgNDIzNDMsIDMwOTAsIDQzMzM3LCA4MTcsIAorICAgIDE2NjQsIDE4NTAsIDEyODg0MSwgMzA3OSwgMTEzNDAsIDQyNDA4LCA0MjQ0NywgMTI3MTQwLCAxMjAwMjAsIDQyMzA3LCAKKyAgICAxMjM4NiwgNDIzMDQsIDkxNzU1NSwgMCwgMTIzODksIDAsIDkyMzY2LCA0MTk5NiwgMTE1MjYsIDYzOTg1LCA1ODY0LCAKKyAgICAxMTQ3LCA2Mzk5MiwgNDI4ODcsIDE5ODcsIDkyNzE4LCA1NDgwLCA3ODU4LCAxMTY1MywgNDExNiwgMTIzOTEsIDY2MTkzLCAKKyAgICAwLCA0OTM5LCAxMjM4NCwgMCwgMCwgNDE2ODYsIDYzOTA1LCAxMTk2MDEsIDE5NDY4OCwgOTgzMTkwLCAwLCAxMjY0OSwgMCwgCisgICAgMCwgODI0NywgNTA3LCA5MSwgMjA0MiwgMTIwNzc1LCA0MzY0MywgMTk0Njg5LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCAKKyAgICAxMTk4MTMsIDc3NCwgMTE5ODI5LCAwLCAxMTk4MTUsIDU5OTQsIDEyNTM5LCAwLCA3ODM3NSwgMTIwNTk3LCAxMTk4MzMsIAorICAgIDk4MzEwNSwgMTE5NjAwLCAwLCAwLCA3NzE5LCA2MDI2LCAyNDg2LCAxMjgzMTIsIDExOTgwOCwgMTYyLCAwLCA2NTIxOSwgCisgICAgNDEwNzMsIDk2ODcsIDQxNjgxLCA2MzA0LCAxMTk4MTIsIDY2MTk2LCAxOTQ4ODEsIDUyNjIsIDAsIDU1MjMzLCAxMjY4MSwgCisgICAgNDIzNzksIDAsIDc1MzQsIDEyMjE5LCAwLCAxMjc1MjgsIDQyODEwLCAxMDQ5MiwgMCwgOTgzNjUyLCAwLCA0MzExOSwgMCwgCisgICAgMTIwNzUzLCAxMjQwMywgMjUwMCwgMTk1MDEzLCAwLCA0ODk5LCAxMjcyOSwgMCwgMCwgNzQxMTMsIDIzNDMsIDQxMDMsIAorICAgIDE5OTQ2LCA3NDExMiwgNzc4NTEsIDEzMTEyLCAwLCAxOTUwMTIsIDEyODU5LCA3MDA4NywgMTIwMTQ4LCA2NjM2OSwgNTg2MSwgCisgICAgMTI3NzU4LCAxMTk5OSwgMTI0MDAsIDAsIDk4MzgzMCwgMTI2NDUsIDUxNDYsIDExMzIwLCA2ODQxMCwgNjc0OCwgNjUwNDAsIAorICAgIDAsIDY0MTg0LCAxMjk3NCwgNjQxODMsIDY3NjEzLCAxMjA2NDUsIDUxNDcsIDAsIDAsIDc0NTI0LCAwLCAxOTI4LCAwLCAKKyAgICA2NzY0OSwgNTk5MSwgMzQ0NSwgNjc2MDksIDQ5NzYsIDY0MTc2LCAwLCA2NzYxMCwgODI0MSwgMCwgNzc4NjgsIDQyMDYsIDAsIAorICAgIDAsIDAsIDEyODI5OCwgMCwgMTAxMzgsIDAsIDAsIDg4OTcsIDEyMDIzNCwgMCwgODM1NywgNDEyNCwgNzc4NjIsIDY1ODM2LCAKKyAgICAxMjA2NDEsIDEyNzkyNiwgNzc4NTksIDAsIDAsIDExMjMsIDk2MywgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCAKKyAgICA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCA3OTQ1LCAwLCA0NDAyLCA5OTcwLCAxMjQwMiwgCisgICAgOTgzMTM2LCA0MjM5MiwgMTMwNSwgMTI0MDgsIDAsIDQ0MDA3LCAwLCAwLCA0MTQ2NCwgMTI0MTEsIDEyOTY5LCAxMjA4MjQsIAorICAgIDQxNDY1LCA5ODM1NjUsIDg1MjgsIDE1NzUsIDAsIDYzOTU1LCAxNjUsIDMwMjQsIDQxNDY3LCAxMTkxNjMsIDAsIDkwOTMsIAorICAgIDAsIDkxNDcsIDEyODc4NywgNjM5NTgsIDAsIDkxNDgsIDk2OTIsIDQwOTYsIDUzLCA3Mzc3NiwgNjc1MCwgMTk1MDE4LCAwLCAKKyAgICA5NTk0LCAwLCAwLCA0MzUyNywgMCwgNzI3LCAxOTQ3MDMsIDE5NTAyMywgNTgwNSwgMCwgNjcyNiwgMCwgNDIxNzYsIAorICAgIDEyMzcwLCAxMTY1NSwgMTE5MDk1LCAxMDU5MSwgMjI4MCwgMCwgMTIzNzIsIDEyMDY0MiwgMTIwMzA3LCAwLCA5MjM0MywgMCwgCisgICAgMTIzNjYsIDEwOTYzLCA2MDY2LCAxMzI5LCAwLCAzMDUyLCA5MjIwLCAwLCA2NDQ3OCwgMTk0NzAxLCAxMDgwMywgNDEzMiwgCisgICAgMTIwMzA2LCA2ODQ3NCwgOTI0NzMsIDAsIDk4MzMwNSwgNzQ4MzcsIDEyMDE1NSwgMTQ5OSwgMCwgODA1NSwgNDI3NDAsIAogICAgIDYzOTY1LCAwLCA2Mzk2MiwgNzQwNDIsIDg5MjQsIDQzMTIzLCA1OTg4LCAzNjYwLCA2Mzk2OSwgMTE3ODEsIDQyNzE4LCAKICAgICA4Nzg4LCAxMzU3LCA2NDg1MSwgNjU3NDMsIDAsIDg3NzQsIDAsIDEyNzA4NiwgOTk0MSwgMTIwMTcyLCAwLCAxOTMzLCAKICAgICA2OTY1NSwgOTU2NCwgMCwgOTI0MzUsIDczODY2LCAwLCAwLCAyNDg3LCA2NzYxNCwgMzEyMSwgMTgwNCwgMzMxMSwgNjc2MTUsIAotICAgIDAsIDc4MzAyLCAxMjIyMCwgNjc2MTYsIDEyMDU5OCwgMTI3NDc1LCAwLCA2ODIwMCwgNjY3NSwgMTI4MTQ0LCAwLCA2NzU5MiwgCi0gICAgMTIwNjg1LCAwLCA2NDc3MSwgMTE5OCwgOTEzMiwgMCwgNjQ2MTksIDUxMCwgNjQ2NjMsIDAsIDAsIDQ1NjEsIDIxMDEsIAotICAgIDEzOTgsIDAsIDkyNTU0LCA3NDAzNCwgNDE1NjksIDkyNjg0LCAxMTQwNiwgODE2NywgMTIxMjcsIDAsIDg0MCwgMCwgMCwgMCwgCi0gICAgNjk2NywgMCwgMCwgOTc5NiwgMCwgMzMzLCAwLCAwLCA4MTQ0LCAyMTE3LCAwLCAwLCAxMjQwNiwgMCwgMTk5MzEsIAotICAgIDExOTA4OSwgNjY3OCwgNzc2OSwgMCwgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIDQ3NjQsIDQzMTAxLCA5OTgxLCAwLCAKLSAgICA0MDk4NiwgNDEyNywgNjY0ODcsIDAsIDQyMjAyLCAxMjc1NCwgMTk1MDIyLCAwLCAwLCAwLCA2NzU5NCwgMjA0OCwgMTI5NDQsIAotICAgIDQwNTAsIDY3NTk1LCA5MTc5NjcsIDQzMTAyLCAxMDU4MSwgMTI5ODUsIDQ1MzMsIDE5NTAyMSwgNzQwMDMsIDY0OTAsIDAsIAotICAgIDEyMDM4LCAwLCAwLCAxMjA3MDQsIDY1NDYxLCA5Nzk4LCA2OTcwNCwgMCwgMTk0OCwgMTE5MDA3LCAwLCA5NTIsIDEyODIzNSwgCi0gICAgMCwgMCwgMTIwODAyLCA2NDQ5LCA5NDk0LCAxMjAzMTMsIDAsIDQzMDk4LCA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgCi0gICAgNjQxNzAsIDAsIDAsIDM0MzYsIDExOTk3MywgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA2NjcwOCwgMCwgMCwgCi0gICAgNjc1OTgsIDAsIDAsIDAsIDY1NTkxLCA0MTU4MSwgNjU5MTYsIDE0NTMsIDAsIDAsIDAsIDg1MDAsIDQyMjIyLCAxMjAxNDIsIAotICAgIDczNzQzLCAxMjA0MDAsIDQzMTcsIDExNTQzLCA2NzY3NiwgNjQ2NzYsIDAsIDAsIDY3NjA2LCAxMTkwODMsIDAsIDQyMjE3LCAKLSAgICAxMzEwMiwgMCwgNjYwMDMsIDY2NzIsIDAsIDAsIDAsIDAsIDYzODQxLCA5NjEzLCA5MDAxLCA0NTI2LCAxMTI3NCwgNjc2MDEsIAotICAgIDY0NTIwLCA2NDIxMCwgNjY2NCwgNzg3MDQsIDQyMDU2LCAxMDIyOCwgNjQ5NTcsIDExMjgxLCAwLCA2NDIxMywgMTQ2OSwgCi0gICAgNjY2NDAsIDY1MzgxLCA0MjE5NywgNDk4OCwgNDIzNzIsIDAsIDk1OTgsIDkwNCwgMzUyLCA0MjIyNSwgMTQ1MSwgODA2MSwgCi0gICAgODQ1MywgNDEzNCwgMCwgNzQ4NDcsIDY2NTc2LCAxMjc5MTYsIDAsIDEwNTIwLCA4NTc1LCA5OTYwLCAxMjAxLCAxMjcyODksIAotICAgIDEyODQ2LCAxMjcyOTEsIDEyNzI5MiwgMTE5MTksIDY0OTYyLCAxMjcyODcsIDQzNzM5LCAxMjcyODEsIDg1MTEsIDk0NjAsIAotICAgIDgyMywgMTE1ODcsIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIAotICAgIDQyNzgzLCA2NTc2NSwgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIDExOTU4NSwgMTE2MDYsIDY0Nzg0LCAxMTcwMiwgCi0gICAgNjY0OTgsIDk4MjEsIDY0MzA0LCAwLCA1MTUyLCAxMTA0OCwgNzUzMywgNjgzNjYsIDY0NDEwLCA5MjMwNSwgMCwgNDMyMywgCi0gICAgMTIwMDYyLCA5MjY2OSwgMCwgMTI3MDUyLCA0MjU4NywgNDIyMTQsIDQxMzk0LCAwLCA0NzYzLCA0MTEyLCAxMTg5MzUsIDAsIAotICAgIDUyNjAsIDQzMTQzLCAwLCAzMjYsIDEyMDEzMSwgNjg0MjMsIDAsIDEwNzcxLCAyODc2LCA3NDA3NCwgOTI1MzAsIDE5NDkyNCwgCi0gICAgNDEzOTgsIDczODIsIDk4MDIsIDEyNzA3NywgMTI3MDc2LCA0NTMsIDQxMzk2LCAxMjA1MjQsIDQyNzIwLCAxMjE0MCwgCi0gICAgOTU3MiwgMCwgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgMCwgMTk0ODg1LCA0MzE0NCwgNDEyMywgODQ5NCwgNDMxNDYsIAotICAgIDk5NzcsIDAsIDAsIDY1NzU5LCAxMDc2NSwgNjQwNjEsIDQ0NjUsIDk4MDgsIDY0MDU2LCA2NTU4MiwgNDEyNiwgMCwgOTUyMSwgCi0gICAgOTU4OSwgNjQ3NTUsIDAsIDY0MDIwLCAwLCAxMDQ2NCwgMCwgMCwgMTk0ODY5LCA2NDUxNCwgMTE1MjgsIDY0MDI0LCAKLSAgICAxMjgwNzIsIDY3OSwgNjQwMTMsIDAsIDU4NTAsIDc1OCwgNzUzNiwgMCwgOTIyMzQsIDQxNDQxLCAxMDY5MywgNjQwMDYsIDAsIAotICAgIDY0MDA1LCA0MDU4LCAxMTkwMTksIDAsIDY0NjYwLCAwLCAxMTkwNTAsIDAsIDAsIDExMzksIDQzMjk4LCA2NDAyNywgCi0gICAgNjQwMjksIDg5NzAsIDAsIDk5MzQsIDAsIDEwNzc0LCAxMjgwMjAsIDQyMjAxLCAxMjQyMSwgMTI4MjE2LCAwLCAxODUyLCAKLSAgICAzMDU3LCAxMjgxMTMsIDczNzQ0LCA2NDAzNCwgNjQwMzksIDAsIDAsIDAsIDAsIDkyMzIyLCA3NjQ1LCAxMjg1NCwgNzQzMzgsIAotICAgIDM0OTYsIDAsIDAsIDAsIDkxMDIsIDYyNywgMTI3Nzk1LCA2MTU4LCA4MzI3LCA3NDU1MywgNjY2MzIsIDEyNDE5LCAxMzMwOSwgCi0gICAgMTE1NzAsIDEyNzgxMSwgMTk5NjAsIDExNjk2LCAwLCAxMDE4LCAxMTg5NzAsIDE5NDkwOSwgMTk0ODk3LCAxNjgyLCAKLSAgICAxOTQ4OTYsIDE5NDkxMSwgNDI3NTYsIDY3NjUsIDE5NDkwNiwgMCwgMCwgNzM4MTQsIDExNDEyLCA2NzY4LCAxMDcyOCwgCi0gICAgMTk0ODMwLCAxMTkwMTAsIDExODg2MywgNDMzMTEsIDY0OTY2LCAxMTU3NywgMCwgNDMwNDAsIDE4MzMsIDExNTc2LCAwLCAKLSAgICA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAxOTQ4NDgsIDc1MzUsIDgwODUsIDQyNTI1LCAxMjAzODcsIAorICAgIDcwMDgxLCA3ODMwMiwgMTIyMjAsIDY3NjE2LCAxMjA1OTgsIDEyNzQ3NSwgMCwgNjgyMDAsIDY2NzUsIDEyODE0NCwgMCwgCisgICAgNjc1OTIsIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDAsIDY0NjE5LCA1MTAsIDY0NjYzLCAwLCAwLCA0NTYxLCAKKyAgICAyMTAxLCAxMzk4LCAwLCA5MjU1NCwgNzQwMzQsIDQxNTY5LCA5MjY4NCwgMTE0MDYsIDgxNjcsIDEyMTI3LCAwLCA4NDAsIDAsIAorICAgIDEyNjUxOCwgNzEwMSwgNjk2NywgMCwgMTk0ODk4LCA5Nzk2LCAwLCAzMzMsIDY5ODkxLCAwLCA4MTQ0LCAyMTE3LCAwLCAKKyAgICA5ODM1OTUsIDEyNDA2LCAwLCAxOTkzMSwgMTE5MDg5LCA2Njc4LCA3NzY5LCAwLCAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgCisgICAgNDc2NCwgNDMxMDEsIDk5ODEsIDAsIDQwOTg2LCA0MTI3LCA2NjQ4NywgMCwgNDIyMDIsIDEyNzU0LCAxOTUwMjIsIDAsIDAsIAorICAgIDk0MDk3LCA2NzU5NCwgMjA0OCwgMTI5NDQsIDQwNTAsIDY3NTk1LCA5MTc5NjcsIDQzMTAyLCAxMDU4MSwgMTI5ODUsIAorICAgIDQ1MzMsIDE5NTAyMSwgNzQwMDMsIDY0OTAsIDAsIDEyMDM4LCAwLCAwLCAxMjA3MDQsIDY1NDYxLCA5Nzk4LCA2OTcwNCwgMCwgCisgICAgMTk0OCwgNjk4NDEsIDAsIDk1MiwgMTI4MjM1LCAwLCAwLCAxMjA4MDIsIDY0NDksIDk0OTQsIDEyMDMxMywgMCwgNDMwOTgsIAorICAgIDQ4NDMsIDgxNDIsIDY0MTYwLCA0MDk4LCA2NDE3MCwgMCwgMCwgMzQzNiwgMTE5OTczLCAwLCAxMjgxNywgNjc1OTcsIAorICAgIDY2NzYsIDM5MzAsIDQyNjE1LCAwLCAwLCA2NzU5OCwgMCwgMCwgMCwgNjU1OTEsIDQxNTgxLCA2NTkxNiwgMTQ1MywgMCwgMCwgCisgICAgMCwgODUwMCwgNDIyMjIsIDEyMDE0MiwgNzM3NDMsIDEyMDQwMCwgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMCwgMCwgCisgICAgNjc2MDYsIDExOTA4MywgMCwgNDIyMTcsIDEzMTAyLCAwLCA2NjAwMywgNjY3MiwgMCwgMCwgMCwgOTgzNzM4LCA2Mzg0MSwgCisgICAgOTYxMywgOTAwMSwgNDUyNiwgMTEyNzQsIDY3NjAxLCA2NDUyMCwgNjQyMTAsIDY2NjQsIDc4NzA0LCA0MjA1NiwgMTAyMjgsIAorICAgIDY0OTU3LCAxMTI4MSwgMCwgMzgwNywgMTQ2OSwgNjY2NDAsIDY1MzgxLCA0MjE5NywgNDk4OCwgNDIzNzIsIDAsIDk1OTgsIAorICAgIDkwNCwgMzUyLCA0MjIyNSwgMTQ1MSwgODA2MSwgODQ1MywgNDEzNCwgMCwgNzQ4NDcsIDY2NTc2LCAxMjc5MTYsIDAsIAorICAgIDEwNTIwLCA4NTc1LCA5OTYwLCAxMjAxLCAxMjcyODksIDEyODQ2LCAxMjcyOTEsIDEyNzI5MiwgMTE5MTksIDY0OTYyLCAKKyAgICAxMjcyODcsIDQzNzM5LCAxMjcyODEsIDg1MTEsIDk0NjAsIDgyMywgMTE1ODcsIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAKKyAgICAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIDQyNzgzLCA2NTc2NSwgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIAorICAgIDExOTU4NSwgMTE2MDYsIDY0Nzg0LCAxMTcwMiwgNjY0OTgsIDk4MjEsIDY0MzA0LCAwLCA1MTUyLCAxMTA0OCwgNzUzMywgCisgICAgNjgzNjYsIDY0NDEwLCA5MjMwNSwgMCwgNDMyMywgMTIwMDYyLCA5MjY2OSwgNzEzMzIsIDEyNzA1MiwgNDI1ODcsIDQyMjE0LCAKKyAgICA0MTM5NCwgMCwgNDc2MywgNDExMiwgMTE4OTM1LCAwLCA1MjYwLCA0MzE0MywgOTQwMzgsIDMyNiwgMTIwMTMxLCA2ODQyMywgCisgICAgMCwgMTA3NzEsIDI4NzYsIDc0MDc0LCA5MjUzMCwgMTk0OTI0LCA0MTM5OCwgNzM4MiwgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIAorICAgIDQ1MywgNDEzOTYsIDEyMDUyNCwgNDI3MjAsIDEyMTQwLCA5NTcyLCAwLCA3MDAzLCAxOTQ4ODMsIDQyMzM0LCA3NzA0LCAKKyAgICAxMjY0OTAsIDE5NDg4NSwgNDMxNDQsIDQxMjMsIDg0OTQsIDQzMTQ2LCA5OTc3LCAwLCAwLCA2NTc1OSwgMTA3NjUsIAorICAgIDY0MDYxLCA0NDY1LCA5ODA4LCA2NDA1NiwgNjU1ODIsIDQxMjYsIDAsIDk1MjEsIDk1ODksIDY0NzU1LCAwLCA2NDAyMCwgCisgICAgMTI2NjA0LCAxMDQ2NCwgMCwgMCwgMTk0ODY5LCA2NDUxNCwgMTE1MjgsIDY0MDI0LCAxMjgwNzIsIDY3OSwgNjQwMTMsIDAsIAorICAgIDU4NTAsIDc1OCwgNzUzNiwgMCwgOTIyMzQsIDQxNDQxLCAxMDY5MywgNjQwMDYsIDk4MzU2NywgNjQwMDUsIDQwNTgsIAorICAgIDExOTAxOSwgMTI2NDg3LCA2NDY2MCwgMCwgMTE5MDUwLCAwLCA5ODMwNjksIDExMzksIDQzMjk4LCA2NDAyNywgNjQwMjksIAorICAgIDg5NzAsIDAsIDk5MzQsIDk4MzA5NCwgMTA3NzQsIDEyODAyMCwgNDIyMDEsIDEyNDIxLCAxMjgyMTYsIDAsIDE4NTIsIAorICAgIDMwNTcsIDY0MDQ2LCA3Mzc0NCwgNjQwMzQsIDY0MDM5LCAwLCAwLCAwLCAxOTQ4OTksIDkyMzIyLCA3NjQ1LCAxMjg1NCwgCisgICAgNzQzMzgsIDM0OTYsIDAsIDAsIDAsIDkxMDIsIDYyNywgMTI3Nzk1LCA2MTU4LCA4MzI3LCA3NDU1MywgNjY2MzIsIDEyNDE5LCAKKyAgICAxMzMwOSwgMTE1NzAsIDEyNzgxMSwgMTk5NjAsIDExNjk2LCAwLCAxMDE4LCAxMTg5NzAsIDE5NDkwOSwgMTk0ODk3LCAKKyAgICAxNjgyLCAxOTQ4OTYsIDE5NDkxMSwgNDI3NTYsIDY3NjUsIDE5NDkwNiwgMCwgMCwgNzM4MTQsIDExNDEyLCA2NzY4LCAKKyAgICAxMDcyOCwgMTk0ODMwLCA3MTMxNiwgMTE4ODYzLCA0MzMxMSwgNjQ5NjYsIDExNTc3LCAwLCA0MzA0MCwgMTgzMywgMTE1NzYsIAorICAgIDAsIDc0Nzc5LCAwLCAxODUsIDY1MDg1LCA3NDUzMywgNjQ3NTQsIDE5NDg0OCwgNzUzNSwgODA4NSwgNDI1MjUsIDEyMDM4NywgCiAgICAgOTc0OSwgNDE3MDEsIDYxMzEsIDE5NDksIDQxMTcsIDc4NDcsIDEyMDQ4OSwgMTk0NzExLCA2NDQ4MywgNjU2OTMsIDAsIDAsIAotICAgIDAsIDY5Njk1LCA0MjI0MCwgMCwgMCwgNDI4NjQsIDAsIDY0NjY3LCA0MTg2OCwgMTE4NCwgMCwgODE1LCAxMTQ4NCwgCi0gICAgMTI3NTM1LCA2Nzg0MCwgMCwgMCwgMTI4NzkzLCAwLCAxMDk4NiwgNjQ2ODMsIDAsIDAsIDE5NDcwOSwgMCwgMCwgOTg3OSwgCi0gICAgMCwgMCwgNDE1OCwgMTI4MDUwLCA2ODE2NiwgMCwgMCwgMCwgMCwgNjk2NDUsIDMzMiwgMTE4ODA4LCAwLCA1MTQyLCAyNDA3LCAKLSAgICA2OTY0MywgNDIxOTksIDAsIDkyNDA0LCA3NDM3MywgMCwgNTUyMTcsIDAsIDYzODcwLCA0MzE2MywgMCwgMCwgOTIzOTAsIAotICAgIDQyODY3LCAxODM0LCAwLCA5MjQ2MSwgNjk4MTcsIDEwOTQwLCA2NTI0OSwgMTE5MDQwLCA4NjYyLCAwLCAwLCAyNjUyLCAKLSAgICAxMjA1MjcsIDcxNjQsIDEwNzg0LCAxOTUwOTMsIDY3Njc0LCAwLCA5MjIzMywgOTI0ODIsIDE5NDc0OSwgNzQ1NjIsIAorICAgIDAsIDY5Njk1LCA0MjI0MCwgMCwgMTI2NjUxLCA0Mjg2NCwgMTI2NDk4LCA2NDY2NywgNDE4NjgsIDExODQsIDAsIDgxNSwgCisgICAgMTE0ODQsIDEyNzUzNSwgNjc4NDAsIDk4MzY0MiwgMCwgNjYxOTcsIDAsIDEwOTg2LCA2NDY4MywgOTgzNzc2LCAwLCAzNDU1LCAKKyAgICAwLCAwLCA5ODc5LCAwLCAwLCA0MTU4LCAxMjgwNTAsIDY4MTY2LCAwLCAwLCAwLCAwLCA2OTY0NSwgMzMyLCAxMTg4MDgsIDAsIAorICAgIDUxNDIsIDI0MDcsIDY5NjQzLCA0MjE5OSwgMCwgOTI0MDQsIDc0MzczLCAwLCA1NTIxNywgMCwgNjM4NzAsIDQzMTYzLCAwLCAKKyAgICAwLCA5MjM5MCwgNDI4NjcsIDE4MzQsIDAsIDkyNDYxLCA2OTgxNywgMTA5NDAsIDY1MjQ5LCAxMTkwNDAsIDg2NjIsIDAsIDAsIAorICAgIDI2NTIsIDEyMDUyNywgNzE2NCwgMTA3ODQsIDE5NTA5MywgNjc2NzQsIDAsIDkyMjMzLCA5MjQ4MiwgMTk0NzQ5LCA3NDU2MiwgCiAgICAgOTE3NTA1LCAxODI4LCA3NDQ3NCwgMTIwMzI3LCA3ODYyMCwgODUzMSwgMTI0OTksIDYyODAsIDEyMzI0LCAxMTg4NTQsIAogICAgIDY1MjM4LCA2ODM3NCwgNDgzMiwgNjU1NzMsIDAsIDYyNzksIDEyNTA4LCAxMjkwNCwgMTI1MDIsIDkxNjEsIDAsIDE2MjAsIAotICAgIDY0NDM2LCAzNjAxLCAxOTUwOTQsIDEyODA3MywgMCwgNjA5LCAxMTU1NSwgMCwgMTI0OTYsIDEyNzgzOSwgNzQxODEsIAotICAgIDQzNDMsIDEyNTA1LCAwLCAxMjc4NjMsIDAsIDExMzc3LCAyMzksIDAsIDYzNywgMCwgMCwgNDI2NzEsIDAsIDAsIDAsIAotICAgIDQzNTY1LCAxMjcwODIsIDAsIDEyNjk2LCAxMjgyNTYsIDAsIDE5NDc5NiwgMTI5MjksIDAsIDcxMiwgMCwgNDE5NywgMCwgCi0gICAgNDI4MTgsIDEyODY4OCwgMCwgMTIwNDkwLCAwLCAxMTkxMzcsIDE1MDYsIDQzNTYyLCAwLCAwLCAwLCAxMjY1MSwgMCwgCi0gICAgNjQ2MjgsIDc0NTE3LCAxMjA1OCwgNzQwODQsIDkxNzgzOCwgNzQ5NCwgMCwgNDkyNCwgNjU1OTIsIDExODg0NCwgMCwgCi0gICAgMTI3MDg4LCAzNTUsIDk3MTksIDEyNzA4NywgMTMwNjYsIDY0Nzk2LCAwLCAwLCAxMjAzMywgNDIxNzgsIDAsIDY5NzYwLCAKLSAgICA0MjU3MSwgOTI2MzUsIDAsIDAsIDAsIDAsIDAsIDEyNzE3NiwgMzE3OCwgMCwgMCwgOTI3MDQsIDAsIDkwODAsIDEyNzAwMCwgCi0gICAgMTIwMzUyLCAwLCA2ODIwOSwgMCwgMTEwODIsIDAsIDU2OTksIDE5NTEwMCwgNjYwMDAsIDk0ODgsIDY1MTY2LCAxMTkxMTIsIAotICAgIDAsIDAsIDAsIDAsIDEyODIwOCwgMCwgNTI2NSwgNjkyMzUsIDAsIDExNDg3LCA2Nzg1OCwgMTI0NjQsIDAsIDQzMDQ1LCAwLCAKLSAgICAwLCA0MzM0NSwgMCwgMTA3NzAsIDExODk5NCwgNjgwNywgNDY1LCA5ODI5LCAwLCA3NDM0OCwgMCwgNDMzNDYsIDgxMTYsIAotICAgIDc5NSwgMCwgMCwgMTI0NjIsIDEwOTMwLCAxMDgzMSwgMCwgMTE4OTUyLCA2NDM2MiwgNzQzMzQsIDAsIDEyMDgxMSwgMCwgCi0gICAgMTI0NjgsIDg2MDcsIDEwMDgsIDAsIDEwMDkyLCAxOTUwNzgsIDkxNzg0MiwgNjc4NTUsIDU1MjU3LCA3Mzc3MSwgMTc2NiwgCi0gICAgMTEyODIsIDExOTk2LCAxODIwLCA0NTQ3LCAwLCAwLCAwLCAwLCAxMzIyMywgMTI4NjY1LCA2NDU5NSwgMTI3Mjk0LCAwLCAKLSAgICA5MjMxMSwgNDM0NSwgMTI2MTYsIDAsIDAsIDAsIDc0NDY3LCAwLCAwLCAwLCA1MzgyLCAwLCAwLCAwLCAxMTkwNjAsIAotICAgIDY0OTUzLCA1NDA2LCAxOTkyMCwgOTIyMTYsIDY2NTEwLCAzNTkwLCAwLCAxMTMwLCAwLCAwLCA0MjAxNiwgMTE4MjMsIAotICAgIDQzMDIzLCAwLCAxMTg4OTYsIDc3NDIsIDAsIDEzMjgwLCAwLCA5MzI2LCA3MzgyNiwgNTMxMCwgNzQ4MTIsIDc4NTg0LCAKLSAgICA5MjIyOSwgODk1OSwgNDM1ODksIDY3NDcsIDY2NzIzLCAwLCA4NTY4LCAwLCAxMjA0OTYsIDczODE2LCAxMjA4MDMsIDAsIAotICAgIDQyNjcwLCAwLCAxMTYyMSwgMTI0NjAsIDAsIDEyMDYzMSwgMCwgNDMwNjMsIDc0NTE5LCAxMjcxODIsIDAsIDAsIDAsIAotICAgIDY5NzgzLCAxMTY4OSwgNTQxMCwgNTc4MywgMTA0NjgsIDg0MDMsIDU0MDAsIDExNTk0LCAxMjgyNDcsIDAsIDExODk5MCwgCi0gICAgMTA0OTEsIDAsIDY0NDEyLCAwLCAwLCA1NTg3LCA0Mjg2NSwgNjQ0MDQsIDgyNjgsIDQ5MjMsIDY1MDg2LCA4OTgxLCAKLSAgICAxMjM4MiwgNDIxMzMsIDEyMDc1NSwgOTcwNiwgNjk3MzgsIDAsIDY2NjEwLCAxMDQ2MSwgMTIxMDMsIDAsIDg2NDIsIDAsIAotICAgIDQyNzY2LCAwLCA2NjU2NiwgOTk4MywgMCwgMTE5MTA1LCAwLCAwLCAwLCA3Mzk4LCA0MTUxNSwgMCwgMTE4MDIsIDgwNDEsIAotICAgIDE0NjEsIDkxMCwgMTE5MTMzLCAwLCA2NzQ5LCAzNjU4LCAwLCAxMjA1MjUsIDAsIDc2MTcsIDE5NDg0MSwgMTI4ODgsIDAsIAotICAgIDY3NjY4LCAxMzE0MywgMCwgOTE5MywgMTEwOTcsIDU3MDMsIDAsIDQxNTE3LCA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgCi0gICAgMCwgNjU4NjQsIDYyMywgNzgxLCA2NzAsIDEwNjYwLCA1NzY5LCA2MTMsIDc1NDMsIDEyMDI3OSwgNDc3LCA0MTA4MywgCi0gICAgOTI1MjEsIDAsIDU5MiwgMTU3OCwgMTI0NTksIDQzNDQ5LCAwLCAwLCA4MjI1LCAwLCA2NTQsIDExMzQ1LCA2NTMsIDY1MiwgCi0gICAgMCwgNjQ3LCAwLCA2MzMsIDEyMDc0NCwgMCwgMCwgMTI0ODAsIDQzMjQzLCAwLCAzOSwgMTI0ODcsIDAsIDEyMDUyOSwgCi0gICAgNzQxOTksIDEyNDgyLCAwLCAxMjQ4OSwgMCwgMzE5NSwgNTU1MCwgMCwgNzg5NywgMCwgMTIwMywgNzQzOTYsIDE4MTMsIAotICAgIDY0NTQ0LCA0MTMxMSwgMTIwOTAsIDAsIDI4NzcsIDAsIDAsIDE2NzUsIDAsIDAsIDAsIDAsIDEwMDcwLCAxMDU5NSwgMCwgCi0gICAgMTE5MDc3LCAwLCAwLCAwLCAwLCAwLCA0MzI0NCwgMCwgMCwgMCwgMTE5NTYxLCAwLCAwLCAxOTQ5MjEsIDEyODE2MCwgCi0gICAgOTkzOSwgMCwgMCwgNzc4NjAsIDAsIDAsIDI3MCwgMCwgMTA3MTQsIDAsIDAsIDAsIDAsIDAsIDY1MzcyLCAwLCA3NDAzOCwgCi0gICAgMTE5NTU4LCA2MjczLCA2NjY3OSwgMzY0LCA5NTk1LCAxOTQ5MDgsIDAsIDAsIDcwNywgMCwgMCwgOTI4MiwgNjY0ODksIAotICAgIDIyNCwgMCwgNjg2NzAsIDkzMzIsIDQ5NjYsIDY4Njc3LCAwLCA2ODY0NCwgMCwgMzg0MSwgNjg2MzQsIDAsIDEwNzMyLCAKLSAgICA2ODY0MCwgODUwLCA0OTcyLCAwLCA2NDY5OSwgMjkwOSwgNjg2MTksIDQ0MDA4LCA2ODYyNywgMCwgMTE1NDQsIDEwMjAzLCAKLSAgICA5NjA4LCAwLCAwLCAxMTk2MiwgMTk0Njk0LCAxMjUwNywgMTE5NiwgMTI4Njg3LCAxMjgzMTEsIDc3NywgMTIwMTg3LCAKLSAgICA0Mzc1LCA2NTI3MSwgNjc2NzgsIDAsIDEyMTk4LCAwLCA2NDgyNCwgMTE5MzQzLCAwLCA5NDU0LCA2Mzc3OCwgODY1OCwgCi0gICAgNDI1MjgsIDc4MDAwLCAyNzA1LCA5MTc5NzUsIDQxNTIwLCAwLCAwLCAxMTk4NiwgNzc2NSwgNDI1MDIsIDgyODAsIDAsIAotICAgIDI3MDEsIDAsIDAsIDU3NjcsIDAsIDAsIDk4MDksIDgzNTMsIDYzNzQ3LCA2NjcwMSwgNjM3NzIsIDAsIDYzNzQ1LCAxNzQ4LCAKLSAgICA2Mzc3MCwgMCwgMCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgMzA2MSwgMCwgNjM3NjQsIDYzNzg3LCA5MDY3LCA2MDk2LCAKLSAgICAwLCA3Njk0LCAwLCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIDAsIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgMTU5MSwgMCwgCi0gICAgNjM4NiwgNjM3ODMsIDAsIDAsIDEyNzE3MywgMCwgMCwgMCwgNzQ1NzUsIDAsIDY1NzE5LCAxMzA4MywgNjQ1NzQsIDY1MDEyLCAKLSAgICAwLCAxNjQwLCAxMjQ5NSwgNjY2OTEsIDc2MjQsIDMxMzgsIDEwOTk2LCA5MjI0NywgMTkyMiwgMCwgMTI0OTgsIDEwOTg3LCAKLSAgICAwLCAwLCAzODk0LCA2NTU0MywgMCwgMTk0ODQyLCAwLCA0OTMsIDAsIDQzMTk3LCAxNzE3LCA0MjI4LCA0NzksIDEwMzAzLCAKLSAgICA3NDAyMCwgMCwgOTE3OTM1LCAxMDMzNSwgMzUyMCwgOTE3OTMyLCAxMjQ5MCwgNjQzMTUsIDAsIDEyNzAzOSwgMTI0OTMsIAotICAgIDYyMzMsIDQyNjgxLCAxMDAyLCAxMjQ5MSwgMCwgNjQ5MTEsIDkyNjE1LCAyMDk2LCA2NTEyMCwgMCwgMCwgMCwgMTE2MTEsIAotICAgIDExNjMyLCAxMjcwNDEsIDY2MjEzLCA2Mzg2NCwgNjYyMjEsIDY2MjI2LCA2NjIyOSwgMTMyMTgsIDY2MjMxLCA2NjIxNiwgCi0gICAgODUwNywgNjYyMzYsIDY2MjExLCA2NjIxOCwgOTI2NzIsIDY2MjQwLCA3ODA0MSwgNjYyMzMsIDg5MjgsIDAsIDc5MDksIAotICAgIDY2MjM0LCAxMTYwNSwgNjM3NTksIDAsIDY2MjA4LCA3Mzk5OSwgNjM3OTksIDYzODAzLCAyNDQsIDExNTQyLCAxMjg5OCwgCi0gICAgMTI0OTQsIDczNzYxLCAxMjQ5MiwgMTI2NjksIDAsIDAsIDc0MTUzLCAwLCAxMjgyNzgsIDEyMDY4MCwgNDg4MiwgMTMwNDAsIAotICAgIDAsIDg2MTIsIDQ4ODUsIDc0MDUzLCAwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIDI0OCwgMCwgNjM3OTcsIAotICAgIDkyMzk0LCA0MjM1OCwgMCwgNzI5MiwgMCwgNjM3NTYsIDQyNzg2LCA2NjY5MywgMCwgMTg3MCwgNzgwNDAsIDQ3MCwgCi0gICAgNzgwMzgsIDc4MDM1LCA3ODAzNiwgMCwgNzgwMzQsIDQ1NzksIDEyODA5MCwgMCwgMTI1MTEsIDc0NDUzLCAxMjUxNCwgMCwgCi0gICAgNzQ1NzksIDcyMzksIDcwMDEsIDg2MjMsIDAsIDEyODA1MiwgMTI4MDQ4LCA3Mzc4LCAxMjUxMiwgMTE2MTUsIDYxMDQsIDAsIAotICAgIDAsIDY1OSwgNjA5OCwgMCwgMTIyMzQsIDEyNzMwNywgMTI3MDY3LCA4MzExLCAxMjUxMCwgNDE4MDMsIDEzMDM5LCAKLSAgICAxMjcwNzIsIDEyNTEzLCAxMDIwMiwgMTI0NzEsIDAsIDg3NDcsIDAsIDAsIDAsIDIzMjMsIDAsIDIzMTksIDc3OTE3LCAKLSAgICAxMjQ3NywgNzc5MTYsIDIzMTEsIDAsIDQ0MTUsIDIzNywgNjI4MSwgMTI3MjgwLCAwLCAwLCAyMzA5LCAxMzEyLCA4MTczLCAKLSAgICAxMjg4NzEsIDEyNDY5LCAwLCA3ODUwNSwgNjQzMzUsIDEwNjA5LCAwLCAxMjgxMTEsIDkzOTcsIDExNTI0LCA5Mzk1LCAKLSAgICA5Mzk2LCA5MzkzLCA5Mzk0LCA5MzkxLCA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCA5Mzg2LCA5MzgzLCAKLSAgICA5Mzg0LCA2NzQwLCAwLCA2NTQ1MSwgODE4NSwgMCwgOTE3ODMyLCA0MzAyNCwgNDMzMzYsIDY3NjU5LCAyMzEzLCAxMjgxNjcsIAotICAgIDc5NDgsIDkyMzYsIDAsIDAsIDAsIDEwNTcwLCA0MzQ3MywgNjI4OSwgMTA0ODQsIDAsIDAsIDExOTk4LCAxMjA4MiwgCi0gICAgMTA5MjQsIDMxNDcsIDAsIDEyMDY4NCwgMTI1MjQsIDExOTA4MSwgMjMxMCwgMTE4MTgsIDkzODEsIDkzODIsIDkzNzksIAotICAgIDkzODAsIDkzNzcsIDkzNzgsIDkzNzUsIDkzNzYsIDE2ODMsIDkzNzQsIDAsIDkzNzIsIDEyNDQ0LCAwLCAwLCAxMzAxNiwgCi0gICAgODIxMCwgMCwgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCA4NzQ0LCA3MjYsIDAsIDAsIDQxNTUsIDAsIDAsIAotICAgIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIDEyNzgwNSwgMTI3MjQwLCAwLCA5OTIyLCA0MzMwOSwgMCwgCi0gICAgMTI1MjUsIDAsIDEyMDE2LCA2NTc3MCwgOTU0OCwgNjc2NjUsIDQwMywgNzgyMzAsIDEyNTAzLCAwLCAwLCAxMTAzMCwgMCwgCi0gICAgOTI1NjcsIDY1NjkxLCA2Mzk5OCwgMTgxOSwgMTA0OTYsIDAsIDAsIDExOTkyMCwgMCwgMTk0NjY4LCAwLCAxMjUwNiwgMCwgCi0gICAgMTIyMzEsIDAsIDEyNTAwLCA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIDY2MDgsIDQxMDQ3LCAKLSAgICAxMjAzMjEsIDc4Mzk1LCA3ODM5NCwgNzQwNjksIDc3OTk1LCA3ODM5MSwgMzYwOCwgODI4MSwgMTIwMzIwLCAxMTA3LCAwLCAKLSAgICA5MDc2LCA4ODYyLCA2OTc0MywgNDEwNTIsIDEzMDg0LCA2NDc2NiwgNDMyMTcsIDc4MDMsIDEzMjIyLCA3NDE2NSwgNzQ3ODIsIAotICAgIDEyODgxNywgODU0NiwgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgMCwgNDk4LCA2NDQ3MSwgMTIwMzI0LCAKKyAgICA2NDQzNiwgMzYwMSwgMTk1MDk0LCAxMjgwNzMsIDk4MzU2MiwgNjA5LCAxMTU1NSwgOTgzMDk5LCAxMjQ5NiwgMTI3ODM5LCAKKyAgICA3NDE4MSwgNDM0MywgMTI1MDUsIDAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgMCwgNjM3LCAwLCAwLCA0MjY3MSwgMCwgMCwgCisgICAgMCwgNDM1NjUsIDcxMzA2LCAxMjY0OTMsIDEyNjk2LCAxMjgyNTYsIDAsIDk0MDYyLCAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCAKKyAgICA5ODMyMDQsIDQyODE4LCAxMjY2MzIsIDAsIDEyMDQ5MCwgMCwgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMCwgOTI0OTEsIDAsIAorICAgIDEyNjUxLCAwLCA2NDYyOCwgNzQ1MTcsIDEyMDU4LCA3NDA4NCwgOTE3ODM4LCA3NDk0LCAwLCA0OTI0LCA2NTU5MiwgCisgICAgMTE4ODQ0LCAwLCAxMjcwODgsIDM1NSwgOTcxOSwgMTI3MDg3LCAxMzA2NiwgNjQ3OTYsIDAsIDAsIDEyMDMzLCA0MjE3OCwgCisgICAgMCwgNjk3NjAsIDQyNTcxLCA5MjYzNSwgMCwgMCwgMCwgMCwgMCwgMTI3MTc2LCAzMTc4LCAwLCAwLCA5MjcwNCwgMCwgCisgICAgOTA4MCwgMTI3MDAwLCAxMjAzNTIsIDAsIDY4MjA5LCAwLCAxMTA4MiwgMCwgNTY5OSwgMTk1MTAwLCA2NjAwMCwgOTQ4OCwgCisgICAgNjUxNjYsIDExOTExMiwgMCwgMCwgMCwgMCwgNzEzMTMsIDAsIDUyNjUsIDY5MjM1LCAwLCAxMTQ4NywgNjc4NTgsIDEyNDY0LCAKKyAgICAwLCA0MzA0NSwgMCwgMCwgNDMzNDUsIDAsIDEwNzcwLCAxMTg5OTQsIDY4MDcsIDQ2NSwgOTgyOSwgMCwgNzQzNDgsIDAsIAorICAgIDQzMzQ2LCA4MTE2LCA3OTUsIDAsIDAsIDEyNDYyLCAxMDkzMCwgMTA4MzEsIDAsIDExODk1MiwgNjQzNjIsIDc0MzM0LCAKKyAgICA5ODM2MDIsIDEyMDgxMSwgMCwgMTI0NjgsIDg2MDcsIDEwMDgsIDAsIDEwMDkyLCAxOTUwNzgsIDkxNzg0MiwgNjc4NTUsIAorICAgIDU1MjU3LCA3Mzc3MSwgMTc2NiwgMTEyODIsIDExOTk2LCAxODIwLCA0NTQ3LCAwLCAwLCAwLCAwLCAxMzIyMywgMTI4NjY1LCAKKyAgICA2NDU5NSwgMTI3Mjk0LCAwLCA5MjMxMSwgNDM0NSwgMTI2MTYsIDAsIDAsIDAsIDc0NDY3LCAwLCAwLCAwLCA1MzgyLCAwLCAKKyAgICAwLCAwLCAxMTkwNjAsIDY0OTUzLCA1NDA2LCAxOTkyMCwgNjk4OTcsIDY2NTEwLCAzNTkwLCAxOTQ4NjQsIDExMzAsIDAsIDAsIAorICAgIDQyMDE2LCAxMTgyMywgNDMwMjMsIDAsIDExODg5NiwgNzc0MiwgMCwgMTMyODAsIDcxMzIzLCA5MzI2LCA3MzgyNiwgNTMxMCwgCisgICAgNzQ4MTIsIDc4NTg0LCA5MjIyOSwgODk1OSwgNDM1ODksIDY3NDcsIDY2NzIzLCAwLCA4NTY4LCAwLCAxMjA0OTYsIDczODE2LCAKKyAgICAxMjA4MDMsIDk4MzgzOSwgNDI2NzAsIDAsIDExNjIxLCAxMjQ2MCwgMCwgMTIwNjMxLCAwLCA0MzA2MywgNzQ1MTksIAorICAgIDEyNzE4MiwgMCwgNzM5MTcsIDc4NDMsIDY5NzgzLCAxMTY4OSwgNTQxMCwgNTc4MywgMTA0NjgsIDg0MDMsIDU0MDAsIAorICAgIDExNTk0LCAxMjgyNDcsIDAsIDExODk5MCwgMTA0OTEsIDY5ODQyLCA2NDQxMiwgMCwgMCwgNTU4NywgNDI4NjUsIDY0NDA0LCAKKyAgICA4MjY4LCA0OTIzLCA2NTA4NiwgODk4MSwgMTIzODIsIDQyMTMzLCAxMjA3NTUsIDk3MDYsIDY5NzM4LCAwLCA2NjYxMCwgCisgICAgMTA0NjEsIDEyMTAzLCAwLCA4NjQyLCAwLCA0Mjc2NiwgOTgzODU3LCAyMjEwLCA5OTgzLCAwLCA5NDAwOSwgMCwgMCwgMCwgCisgICAgNzM5OCwgNDE1MTUsIDAsIDExODAyLCA4MDQxLCAxNDYxLCA5MTAsIDExOTEzMywgMCwgNjc0OSwgMzY1OCwgOTM5NjQsIAorICAgIDEyMDUyNSwgMCwgNzYxNywgMTk0ODQxLCAxMjg4OCwgMTI3OTgzLCA2NzY2OCwgMTMxNDMsIDAsIDkxOTMsIDExMDk3LCAKKyAgICA1NzAzLCAwLCA0MTUxNywgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIDAsIDY1ODY0LCA2MjMsIDc4MSwgNjcwLCAKKyAgICAxMDY2MCwgNTc2OSwgNjEzLCA3NTQzLCAxMjAyNzksIDQ3NywgNDEwODMsIDkyNTIxLCAwLCA1OTIsIDE1NzgsIDEyNDU5LCAKKyAgICA0MzQ0OSwgMCwgMCwgODIyNSwgMCwgNjU0LCAxMTM0NSwgNjUzLCA2NTIsIDAsIDY0NywgMCwgNjMzLCAxMjA3NDQsIDAsIAorICAgIDEyNjQ3MiwgMTI0ODAsIDQzMjQzLCAwLCAzOSwgMTI0ODcsIDAsIDEyMDUyOSwgNzQxOTksIDEyNDgyLCAwLCAxMjQ4OSwgMCwgCisgICAgMzE5NSwgNTU1MCwgOTgzNTU0LCA3ODk3LCAwLCAxMjAzLCA3NDM5NiwgMTgxMywgNjQ1NDQsIDQxMzExLCAxMjA5MCwgMCwgCisgICAgMjg3NywgMCwgMCwgMTY3NSwgNjk4NDAsIDAsIDAsIDAsIDEwMDcwLCAxMDU5NSwgMCwgMTE5MDc3LCAxOTQ3NzcsIAorICAgIDk4MzYxMSwgMCwgMCwgMCwgNDMyNDQsIDAsIDAsIDk4MzkwNywgMTE5NTYxLCA5ODMwNzgsIDAsIDE5NDkyMSwgMTI4MTYwLCAKKyAgICA5OTM5LCAwLCA5ODMxNTEsIDc3ODYwLCAwLCAwLCAyNzAsIDAsIDEwNzE0LCAwLCAwLCAwLCAwLCAwLCA2NTM3MiwgMCwgCisgICAgNzQwMzgsIDExOTU1OCwgNjI3MywgNjY2NzksIDM2NCwgOTU5NSwgMTk0OTA4LCAwLCAwLCA3MDcsIDAsIDAsIDkyODIsIAorICAgIDY2NDg5LCAyMjQsIDAsIDY4NjcwLCA5MzMyLCA0OTY2LCA2ODY3NywgMCwgNjg2NDQsIDAsIDM4NDEsIDY4NjM0LCAwLCAKKyAgICAxMDczMiwgNjg2NDAsIDg1MCwgNDk3MiwgMCwgMTI4OTAsIDI5MDksIDY4NjE5LCA0NDAwOCwgNjg2MjcsIDk4MzcwOSwgCisgICAgMTE1NDQsIDEwMjAzLCA5NjA4LCAwLCAwLCAxMTk2MiwgMTk0Njk0LCAxMjUwNywgMTE5NiwgMTI4Njg3LCAxMjgzMTEsIAorICAgIDc3NywgMTIwMTg3LCA0Mzc1LCA2NTI3MSwgNjc2NzgsIDAsIDEyMTk4LCAwLCA2NDgyNCwgMTE5MzQzLCA5ODMyMzAsIAorICAgIDk0NTQsIDYzNzc4LCA4NjU4LCA0MjUyOCwgNzgwMDAsIDI3MDUsIDkxNzk3NSwgNDE1MjAsIDAsIDAsIDExOTg2LCA3NzY1LCAKKyAgICA0MjUwMiwgODI4MCwgNzQ1MjAsIDI3MDEsIDAsIDEyNzAwMiwgNTc2NywgMCwgMCwgOTgwOSwgODM1MywgNjM3NDcsIAorICAgIDY2NzAxLCA2Mzc3MiwgOTgzODA1LCA2Mzc0NSwgMTc0OCwgNjM3NzAsIDAsIDAsIDAsIDY1NTQyLCA2Mzc2NiwgNTUyNDQsIAorICAgIDMwNjEsIDAsIDYzNzY0LCA2Mzc4NywgOTA2NywgNjA5NiwgMCwgNzY5NCwgMCwgNzI1NywgNjM3NjgsIDM0ODUsIDEyOTg3LCAKKyAgICAwLCAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIDE1OTEsIDAsIDYzODYsIDYzNzgzLCAwLCAwLCA5MjUzNSwgMCwgMCwgMCwgCisgICAgNzQ1NzUsIDAsIDY1NzE5LCAxMzA4MywgNjQ1NzQsIDY1MDEyLCAwLCAxNjQwLCAxMjQ5NSwgNjY2OTEsIDc2MjQsIDMxMzgsIAorICAgIDEwOTk2LCA5MjI0NywgMTkyMiwgMCwgMTI0OTgsIDEwOTg3LCA2OTkzNiwgNjk5MzksIDM4OTQsIDY1NTQzLCAwLCAKKyAgICAxOTQ4NDIsIDk4MzU4OCwgNDkzLCAwLCA0MzE5NywgMTcxNywgNDIyOCwgNDc5LCAxMDMwMywgNzQwMjAsIDAsIDkxNzkzNSwgCisgICAgMTAzMzUsIDM1MjAsIDkxNzkzMiwgMTI0OTAsIDY0MzE1LCAwLCAxMjcwMzksIDEyNDkzLCA2MjMzLCA0MjY4MSwgMTAwMiwgCisgICAgMTI0OTEsIDAsIDY0OTExLCA5MjYxNSwgMjA5NiwgNjUxMjAsIDAsIDc4MjE5LCA5ODMwODEsIDExNjExLCAxMTYzMiwgCisgICAgMTI3MDQxLCA2NjIxMywgNjM4NjQsIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIDg1MDcsIAorICAgIDY2MjM2LCA2NjIxMSwgNjYyMTgsIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCA5ODM1NTIsIDc5MDksIAorICAgIDY2MjM0LCAxMTYwNSwgNjM3NTksIDk4MzY0NSwgNjYyMDgsIDczOTk5LCA2Mzc5OSwgNjM4MDMsIDI0NCwgMTE1NDIsIAorICAgIDEyODk4LCAxMjQ5NCwgNzM3NjEsIDEyNDkyLCAxMjY2OSwgMCwgMCwgNzQxNTMsIDAsIDEyODI3OCwgMTIwNjgwLCA0ODgyLCAKKyAgICAxMzA0MCwgMCwgODYxMiwgNDg4NSwgNzQwNTMsIDAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgMjQ4LCAwLCAKKyAgICA2Mzc5NywgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAwLCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAwLCAxODcwLCA3ODA0MCwgCisgICAgNDcwLCA3ODAzOCwgNzgwMzUsIDc4MDM2LCA3MDAyOCwgNzgwMzQsIDQ1NzksIDEyODA5MCwgMCwgMTI1MTEsIDc0NDUzLCAKKyAgICAxMjUxNCwgMCwgNzQ1NzksIDcyMzksIDcwMDEsIDg2MjMsIDk0MDExLCAxMjgwNTIsIDEyODA0OCwgNzM3OCwgMTI1MTIsIAorICAgIDExNjE1LCA2MTA0LCAwLCAwLCA2NTksIDYwOTgsIDAsIDEyMjM0LCAxMjczMDcsIDEyNzA2NywgODMxMSwgMTI1MTAsIAorICAgIDQxODAzLCAxMzAzOSwgMTI3MDcyLCAxMjUxMywgMTAyMDIsIDEyNDcxLCAwLCA4NzQ3LCA5ODM5MTEsIDAsIDAsIDIzMjMsIAorICAgIDAsIDIzMTksIDc3OTE3LCAxMjQ3NywgNzc5MTYsIDIzMTEsIDAsIDQ0MTUsIDIzNywgNjI4MSwgMTI3MjgwLCAwLCAwLCAKKyAgICAyMzA5LCAxMzEyLCA4MTczLCAxMjg4NzEsIDEyNDY5LCAwLCA3ODUwNSwgNjQzMzUsIDEwNjA5LCAwLCAxMjgxMTEsIDkzOTcsIAorICAgIDExNTI0LCA5Mzk1LCA5Mzk2LCA5MzkzLCA5Mzk0LCA5MzkxLCA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCAKKyAgICA5Mzg2LCA5MzgzLCA5Mzg0LCA2NzQwLCAwLCA2NTQ1MSwgODE4NSwgMCwgOTE3ODMyLCA0MzAyNCwgNDMzMzYsIDY3NjU5LCAKKyAgICAyMzEzLCAxMjgxNjcsIDc5NDgsIDkyMzYsIDkyNTcxLCAwLCAwLCAxMDU3MCwgNDM0NzMsIDYyODksIDEwNDg0LCAwLCAwLCAKKyAgICAxMTk5OCwgMTIwODIsIDEwOTI0LCAzMTQ3LCAwLCAxMjA2ODQsIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCAKKyAgICA5MzgyLCA5Mzc5LCA5MzgwLCA5Mzc3LCA5Mzc4LCA5Mzc1LCA5Mzc2LCAxNjgzLCA5Mzc0LCA5ODM3NjksIDkzNzIsIAorICAgIDEyNDQ0LCAwLCAwLCAxMzAxNiwgODIxMCwgOTgzOTQ5LCA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIAorICAgIDg3NDQsIDcyNiwgMCwgOTgzODI4LCA0MTU1LCAwLCAwLCA0MjAzMCwgNTAwNywgMTI1MjIsIDQzMDg4LCAwLCA0OTUxLCAKKyAgICAxMjc4MDUsIDEyNzI0MCwgMCwgOTkyMiwgNDMzMDksIDk4MzgzMiwgMTI1MjUsIDk4MzQ2MywgMTIwMTYsIDY1NzcwLCAKKyAgICA5NTQ4LCA2NzY2NSwgNDAzLCA3ODIzMCwgMTI1MDMsIDAsIDAsIDExMDMwLCAwLCA5MjU2NywgNjU2OTEsIDYzOTk4LCAKKyAgICAxODE5LCAxMDQ5NiwgMCwgMCwgMTE5OTIwLCAwLCAxOTQ2NjgsIDAsIDEyNTA2LCAwLCAxMjIzMSwgMCwgMTI1MDAsIAorICAgIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgNDEwNDcsIDEyMDMyMSwgNzgzOTUsIAorICAgIDc4Mzk0LCA3NDA2OSwgNzc5OTUsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMjAzMjAsIDExMDcsIDAsIDkwNzYsIDg4NjIsIAorICAgIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIDc0MTY1LCA3NDc4MiwgMTI2NTE0LCAKKyAgICA4NTQ2LCAxMTU1MywgNjM5OTUsIDEzMTc3LCA5MDQzLCA2MzAzLCA5ODM5MzgsIDQ5OCwgNjQ0NzEsIDEyMDMyNCwgCiAgICAgMTI4NTY3LCAxMjUyOSwgODA0MiwgMCwgMjM0NCwgMTI1MjgsIDgwMzEsIDI0MTQsIDAsIDY5NzE5LCAzMjMxLCAwLCA2NDIyLCAKICAgICA2NjUxMiwgNjk2NTMsIDEyNTMwLCAyNTM3LCA3ODQwNSwgNDE0MjksIDEyNjU4LCAxMzAzNiwgNjU3NzIsIDAsIDc4NzM4LCAKICAgICA0MTQzMywgNDcxOSwgNDY5LCAwLCA0MzYzLCAzMzEzLCA0MTQyOCwgNzg0MDcsIDIwMjMsIDE3NzIsIDc4MjI0LCA3ODIyNSwgCiAgICAgNjU3MDYsIDEwMDUxLCA2NDgxMiwgNzgyMjAsIDAsIDk5MjAsIDEyMjE1LCAwLCA0OTMxLCAxOTUxLCAxMjQ5NywgMTE5MzYzLCAKICAgICA5NjA3LCAwLCA5NjYzLCAwLCAxMTk2MzQsIDY1MDMsIDQxMTEwLCAwLCAxNDkxLCAwLCAwLCAxMjczMDQsIDQxMDYxLCAwLCAKLSAgICAwLCAxMjcxODcsIDY1MDI2LCA0MTk5MywgNDE1MDksIDExMDQ1LCA2NTAyOCwgNzg2MDIsIDY2NDc2LCA0MTEwOCwgOTczOCwgCi0gICAgNDE5OTUsIDEwNzUsIDE5NTgsIDEyNTM1LCA0MTk5MiwgNDE1MDYsIDAsIDQxNjg3LCAwLCAxMjA3MTcsIDEyNzc3NiwgCi0gICAgOTk0MCwgMTI3Mjk5LCA3NjkyLCAwLCA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCA2NTA4MywgNDExMzMsIDk4MTYsIAotICAgIDEyODA3NCwgMTI1MzIsIDc4NTUwLCA3ODU0NiwgMzUwOCwgMTI3MDU4LCA0MzIzNSwgMCwgMTI3Mjk4LCA2NDEzOSwgCisgICAgMTk0ODM4LCAxMjcxODcsIDY1MDI2LCA0MTk5MywgNDE1MDksIDExMDQ1LCA2NTAyOCwgNzg2MDIsIDY2NDc2LCA0MTEwOCwgCisgICAgOTczOCwgNDE5OTUsIDEwNzUsIDE5NTgsIDEyNTM1LCA0MTk5MiwgNDE1MDYsIDAsIDQxNjg3LCAwLCAxMjA3MTcsIAorICAgIDEyNzc3NiwgOTk0MCwgMTI3Mjk5LCA3NjkyLCA5ODM4MjQsIDgwMDgsIDQxMTMxLCAzMzAsIDg1NjYsIDY1MDgzLCA0MTEzMywgCisgICAgOTgxNiwgMTI2NTE3LCAxMjUzMiwgNzg1NTAsIDc4NTQ2LCAzNTA4LCAxMjcwNTgsIDQzMjM1LCAwLCAxMjcyOTgsIDY0MTM5LCAKICAgICA3ODIzMSwgNjQxMSwgMTI5MTAsIDc4NTU0LCA2NjY0NCwgMTMwMjgsIDY3MzcsIDEyNTM3LCAwLCAwLCA2NDEzNiwgMTI1MzYsIAotICAgIDIzNTAsIDEzMDI5LCA3ODIzMywgMCwgMCwgMTMwMzAsIDY3MDIsIDQ1MjcsIDAsIDEyNTM4LCAxMjg4MTAsIDAsIDY1NTk5LCAKLSAgICA2NTcxNywgOTk2NiwgMCwgNDk0OCwgMTI0ODQsIDQwMzIsIDEyODE0OSwgMTI2MjMsIDAsIDYyMDcsIDAsIDYxMTcsIAotICAgIDY1OTMwLCA4NDEyLCAwLCA3NDM4LCAxMjk2LCAyMzI1LCA0MTUxMSwgMCwgMTAxNDksIDc0MTE4LCAwLCAxMjcyODYsIAotICAgIDEyNDgxLCAwLCAxMjQ4OCwgMCwgMCwgNDE1NTYsIDY0NDE0LCAxMTg4MDIsIDIzNTQsIDEyODU3MSwgNzM3NjYsIDAsIAotICAgIDYyOTUsIDkwMSwgNDE1MTAsIDc5NTMsIDAsIDY1MDMyLCA0MTUxMywgMCwgMTE5MjcsIDY2NTg0LCA3ODU1OSwgNzg1NjAsIAotICAgIDc4NTU3LCA3ODU1OCwgMCwgNzg1NTYsIDg0OCwgOTg2OCwgMCwgNjQyNCwgNzg1NjgsIDExOTMzOCwgNzg1NjUsIDc0MDMxLCAKLSAgICA3ODU2MywgNzg1NjQsIDIzNTIsIDc4NTcyLCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgMCwgMCwgMTMwMjYsIDY3NjIsIAotICAgIDc4NTc5LCA3ODU4MCwgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCA4MDk5LCAwLCAwLCAxMzQzLCAwLCAwLCAKLSAgICA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMCwgMCwgMCwgMTE3NDEsIDAsIDAsIDkyMTYsIDgyNjMsIDExMjc5LCAxOTQ3NTIsIAotICAgIDAsIDE5NDc1NCwgMTMwMjEsIDY0NDk0LCAzMTM2LCAxOTQ3NTgsIDE5NDc1NywgMTk0NzYwLCAxMzAyMiwgNDI3MzcsIAotICAgIDk5NTYsIDAsIDAsIDc0NTUyLCAxMDAxNCwgMCwgNDEyNjAsIDExOTM0MCwgMTMwMjAsIDEwMDI0LCAxOTQ3NjQsIDE5NDc2NywgCi0gICAgNzQzNDAsIDY5NjgxLCAwLCA2NDk0NSwgODAyOSwgMCwgMCwgMCwgMzMzNSwgMCwgMCwgOTc3NiwgMTIwNTI2LCAxOTQ3NDgsIAotICAgIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIDc4NTgxLCAKLSAgICA0MTU2LCAwLCAwLCA2NDIxLCA3ODU5MSwgMTYxMSwgNzg1ODksIDEzMDE4LCA3NDI1NywgNzg1ODgsIDc0NTQyLCAzMzM3LCAKLSAgICA0NTM3LCA2Nzg5NSwgMTE3MzYsIDAsIDY4NjA4LCA2NDgyLCA0MjE0LCA3Mzc5MCwgMTE5NDUsIDAsIDEzMDQ2LCA4ODM4LCAKLSAgICA0MjUsIDQwMjUsIDEwNzA5LCA3ODU5NSwgMjEwOCwgMjM5MiwgMTMwNDcsIDAsIDAsIDY4MTksIDEzMDQ5LCA2NDk5LCAKLSAgICA5MjI0MywgMTI0MjQsIDY4NjE0LCA3Mzk0NCwgMTMwNTAsIDk5MjQsIDE5NDc0NSwgNjUwNywgMTI3OTE5LCAwLCAxMjgwNjksIAotICAgIDMyNzcsIDg5MjksIDQ5NDcsIDQxMDU1LCAwLCAxOTQ3MjIsIDE5NDcyMSwgMTk0NzI0LCAxMzA0NSwgNjQ2MjYsIDY2MDM0LCAKLSAgICA3NzUxLCAxOTQ3MjcsIDgzNzEsIDE5NDcyOSwgMzk5NywgMTI4MDYsIDg3NjgsIDEzMDQ0LCAwLCAxMjQyMCwgNDAyNCwgCi0gICAgMTk0NzMwLCA0MTA1NCwgMTA3OCwgOTc1NywgNjk3MzYsIDQxMDU3LCAwLCAwLCAwLCAwLCAwLCA5MjIxMCwgOTI0MTEsIDAsIAotICAgIDQxNDk2LCAwLCA5MTY1LCAxNTcyLCAxMTkxMSwgMCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgODk1OCwgMCwgOTY0NiwgMzc3MywgCi0gICAgNDMxODMsIDY0MDEsIDU4MzEsIDAsIDAsIDEzMDQzLCA4MDU2LCA5MjQ5NCwgNjU2ODEsIDIwOCwgMTI3MzgyLCA0MTUxNCwgCi0gICAgMCwgMCwgMCwgMTA2OTksIDY0MDgsIDkyMjI3LCA3ODI1LCA1NjYxLCAwLCAxMjA2MzAsIDM2MDMsIDQxMTA5LCAyMzk4LCAKLSAgICAzNTQ4LCAwLCAwLCAxMTk5MzMsIDAsIDMxMTUsIDk5MTgsIDAsIDExMzIxLCA0MjkxMiwgMCwgMCwgMTk0NzI2LCA0ODc2LCAKLSAgICA2NTgwNCwgMCwgMCwgNDM0NjgsIDAsIDQxNTU4LCA0MTQ3MSwgNzM5NTAsIDgxNTgsIDk5NDQsIDQxNDcyLCAxMjAyOTgsIAotICAgIDEzMDUxLCA3ODY4OSwgMzE0MywgMTk0Njc0LCA2NzAxLCA0MTU1OSwgMTg5NiwgNjYyNTYsIDEzMDUyLCAxOTQ2ODAsIAotICAgIDU2NjUsIDAsIDExOTA3MSwgNzAyNSwgNjM5NzQsIDAsIDc0MzUyLCA3NDE2MSwgNDE1NCwgOTg2MywgNDM1NTAsIDEyMzEwLCAKLSAgICA1NjYyLCA0MjM4MiwgMTk0Njg2LCA3MzkyNCwgMTEyMSwgMTk0NjY1LCA2Mzk1OSwgMCwgOTk0MiwgMTMyMzEsIDAsIAotICAgIDY0NzUyLCA0NzMyLCAxOTQ2NjYsIDExNTk2LCAxMTk5MzEsIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCAKLSAgICA0MjAyNCwgNjQyMCwgNDIwMjgsIDAsIDEwNTA5LCAyNzk1LCA0OTEwLCAxOTQ3MjgsIDY5MjMxLCA2NDc1MywgNjI3NSwgCi0gICAgOTE3ODA4LCAxMTg4MzAsIDYzOTc4LCAxMTA0NCwgMzIyOSwgNjQyMywgNDI3NzQsIDAsIDAsIDAsIDEyODIzLCAyMzMxLCAKLSAgICA5MTc4MTAsIDQyMDI2LCA2MTM3LCAwLCA3NTI0LCAwLCA5MTc4MDksIDgzNDYsIDAsIDgzMzgsIDEyODMxNSwgNjUwNDMsIDAsIAotICAgIDgyMiwgMTI3OTg0LCA5OTAzLCA2NDcyMSwgNDI3MjIsIDE5NDY1NiwgMTk0NjU5LCA3ODY1NSwgNzg2NjEsIDE5NDY2MCwgCi0gICAgNzg2NjIsIDQxMjY1LCA1MzExLCAxNzk1LCA5NjUsIDExODc5MSwgMTA1ODcsIDc4MDU1LCAxMTI3OCwgNzg2MzIsIAotICAgIDE5NDY0MCwgMCwgMTI5NDYsIDE5NDY0MSwgMTE5MzQxLCAxMjAzNDksIDYyOTQsIDMxNDQsIDE5NDY0OCwgMTk0NjQ3LCAKLSAgICA2NTAxOSwgMTk0NjQ5LCA3Mzk5MCwgMCwgMCwgNzQ4LCA0MTA2NywgMjMzMCwgNTM1LCAzMTQ4LCAxMjM3NSwgMTk0NjUyLCAKLSAgICAxOTQ2MjksIDEwNTU2LCAyNDc1LCAxMjM4OCwgNDg4OSwgODk2OCwgNjc4NjMsIDM1OTMsIDAsIDAsIDIzNDIsIDAsIAotICAgIDE5NDYzNCwgNjUyMDYsIDQ4OTQsIDE5NDYzNSwgNDg5MCwgMTk0NjM3LCA5MTc4MDQsIDU4MSwgNDg5MywgMCwgNjU3MSwgCi0gICAgNjU1NDUsIDQ4ODgsIDQxNTcsIDc4MDQ4LCA3ODA0OSwgNzgwNDYsIDc4MDQ3LCAwLCAxMDExOSwgNjQxNSwgNDI4OTMsIDAsIAotICAgIDY5NzAyLCAwLCAwLCAxMTM3NSwgNjQ3NDYsIDIzMzIsIDc4MDYzLCA0MTIsIDc4MDYxLCA2NDkzMiwgNDI4ODAsIDQzNTg3LCAKLSAgICAwLCAwLCAwLCAwLCA2NTE5NywgNzgwNjYsIDEyMjAzLCA3ODA2NCwgNzgwNjUsIDg5MTMsIDY1ODU0LCA0ODc1LCA2NTgxMSwgCi0gICAgMTIwMzgxLCAxMjAzODksIDExODg4OCwgOTM0NCwgODgyNiwgMTIwMzg2LCAxMjAzOTUsIDEzMTA0LCA3NDc4MSwgMTE5OTcsIAotICAgIDEyMDM5MywgNzgwNzUsIDAsIDMxMzQsIDAsIDY1Njk2LCA5MjMzMSwgMCwgNjYyMTcsIDAsIDgzMzQsIDExOTM0NCwgMCwgCi0gICAgMzQ0OSwgMCwgMCwgNzg0MTQsIDc4NDEzLCAxMTg5NTAsIDc0MDExLCAwLCAwLCAwLCAwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIAotICAgIDEwNzM0LCAxMjcwMTQsIDAsIDEyNzkxNCwgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIAotICAgIDAsIDc4MDU0LCA0OTE3LCA3NDUxNiwgNzQyMDgsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDExODg5MywgMjM2MSwgCi0gICAgNzk3MSwgNzgwNzIsIDc4MDczLCA1NTI0MywgNzgwNzEsIDAsIDgwODYsIDc0MzE3LCA2NzA3LCA4MzE5LCAyMzEyLCAKLSAgICA0MDk3NywgMTA5NjAsIDQwOTYyLCA4MzA1LCAxMjU3MywgMCwgNDA5ODAsIDAsIDEzMjAyLCAwLCAxMjU4MiwgNzgyODIsIDAsIAotICAgIDAsIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgNDI0MDAsIDEwODkxLCA3Njk4LCA1NjU4LCAKLSAgICA3NDA0NSwgMTIwMTY1LCAwLCAwLCA0OTEzLCAwLCAwLCAwLCA0MjMyNiwgMTI4MTk0LCAxMjcyOCwgOTI2ODUsIDQyNDc4LCAKLSAgICAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAwLCAwLCAxMjU4OCwgODgyMSwgNjE1MywgMjg2NywgMTk0NzA4LCAKLSAgICA2NjMxMiwgNjk4LCAxMjgwMDcsIDE5NDYwNiwgMTAzNTYsIDc0MDc1LCAxOTQ3MTMsIDY1MSwgMTI2NDEsIDAsIDAsIDAsIDAsIAotICAgIDQxNTUyLCA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzg0NjQsIDEyODg1MSwgNzg0NjEsIDE5NDY5NywgNzQzNTYsIAotICAgIDkyNjI2LCA0NzE2LCA0MzI3NywgMCwgNzg0NzQsIDEyMzQwLCAxMjA1NjgsIDAsIDE5NDcwMCwgNTUyNjQsIDQxMjExLCAKLSAgICAxMjA2NzYsIDg3MDMsIDU0NjIsIDkxNzYyOSwgMCwgMTAxMDEsIDAsIDAsIDg0NzksIDQxNTEsIDQxOTMzLCAwLCAwLCAKLSAgICA2NjI1NCwgMTIwODIxLCAwLCAwLCAxMjg2NTQsIDAsIDExOTE5NCwgNzQwNTAsIDkyNzAxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjI3OCwgMCwgMCwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIDEyODk5LCAwLCAwLCAyNjk5LCAwLCA3Mzg0NSwgMjk4NSwgCi0gICAgOTI1NjgsIDAsIDkxNzg0NSwgMTIxOTIsIDExOTMxNCwgMCwgMTE5MzEyLCA5ODI3LCAxMTkzMTAsIDExOTMxMSwgMTE5MzA4LCAKLSAgICAxMTkzMDksIDExOTMwNiwgMTE0ODEsIDQxMjEwLCAxMTkzMDUsIDAsIDM1LCA3ODQ4MSwgNzg0ODIsIDY2Njk0LCA2ODQ3OSwgCi0gICAgNzg0NzcsIDc4NDc4LCA0MzU5NiwgNjA5MCwgNjQyNTcsIDc4MTIsIDEwNTM0LCAwLCA3ODQ4NSwgNzM4NDgsIDc4NDgzLCAKLSAgICA0MjcyLCAwLCA0MDk2NywgNDA5NjQsIDkxNzgyNSwgMTI3MDQsIDc4NDg3LCA0MzMwNiwgMCwgNjQ0OTcsIDEyMTM4LCAKLSAgICA3OTMwLCAwLCA0MzMwMywgNjgyMTYsIDAsIDkxNzgyNiwgNTI0NCwgNDE4OSwgMTI3MDk4LCA2NzU5NiwgMTI3NTA0LCAKLSAgICA0MTg4LCAxODc5LCAwLCA5NjgsIDAsIDQzNzQzLCAwLCA4ODczLCAwLCAwLCA5MTc4MjcsIDY1NTU1LCAxMjU3NCwgMCwgMCwgCi0gICAgMCwgNzQ0OTAsIDEyNzA5OSwgNDM2NTcsIDAsIDAsIDAsIDQyNjgyLCAxMjU3OCwgMTI3MjAsIDAsIDQxMjI3LCAwLCAKLSAgICAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgMCwgMCwgNzI1MSwgMCwgMCwgMTE4ODUwLCAxMTkxNDEsIDEyODU0NiwgNjYwMTUsIDAsIAotICAgIDk1OSwgODg4NSwgMTI1NjQsIDY2NDU3LCA3ODgwOCwgOTQ2OSwgOTYzMiwgOTIzMjMsIDc0NzYxLCA2NDMyMywgMCwgMCwgMCwgCi0gICAgMCwgMzEwLCAwLCA0MTI4MSwgMTA5NzYsIDAsIDkyMTkwLCAwLCA3NDI2NiwgMTAwNTQsIDY0OTcsIDg1NzQsIDAsIDkwMTIsIAotICAgIDE5OTU4LCA3NDQyMCwgNjUwODksIDEzMjE1LCAxMjczMCwgNjUxNjMsIDc0MDQ0LCAzNzQsIDQzMTk1LCA4MTYsIDAsIDAsIAotICAgIDAsIDQxOTM0LCA3NDY1LCAwLCAxMjgxNjgsIDAsIDQ3MTUsIDYxMDEsIDAsIDQxOTM2LCAwLCA0ODc5LCAwLCA2NTQ0NiwgMCwgCi0gICAgMzA3LCAxMjcxNDcsIDk1ODUsIDUzNzQsIDAsIDEyODA1OSwgMCwgMCwgMCwgMCwgMCwgNjU1NjcsIDEyMDYxNCwgMTkyOSwgCi0gICAgMCwgMTIxNDIsIDAsIDEyMjM2LCA0MTQxOSwgMTk0NjE4LCAxMjA2MTAsIDEyOTgyLCAxOTQ2MjMsIDUzNzgsIDc4NzkxLCAKLSAgICAxMjg2NzksIDQxNDIxLCAwLCA0NDYyLCAwLCAwLCAxMjgwOTIsIDgyMSwgMCwgMjQ5OCwgNTgwMCwgMTIwMTU3LCAwLCAKLSAgICAxNzYwLCAyNDIxLCA0NDY5LCAyMzI0LCA4MjgsIDM2MTEsIDc4NDAwLCA3NTcsIDExODUsIDAsIDc4NzcwLCA0MzU5NywgCi0gICAgMTA2MjgsIDc0ODA4LCAxOTQ1NzIsIDc5OTksIDQzOTcxLCAwLCAwLCAxMDYzNCwgMTA5NDIsIDc3MTMsIDIzNDgsIDAsIAotICAgIDY0Mzc0LCA0MzgwLCAxOTQ2MDgsIDExOTA0NCwgOTk4MiwgNjQzMjQsIDQxMjQwLCA4NjIsIDY1NjI2LCA3ODQ2MiwgMTgxMCwgCi0gICAgMzY3MywgNTEzNywgMTk0NjE3LCAwLCA3Mjc3LCA2NTYyMiwgMCwgNzU2NiwgNjQ2ODgsIDE5NDU5MywgMTk0NTkyLCAKLSAgICA3ODA5MiwgNzQzNTcsIDE5NDU5NywgNDc0OCwgOTIyMjgsIDE5NDU5OCwgMTk0NjAxLCA0MjI2MCwgNTg3MSwgMTE5MDc1LCAKLSAgICAwLCA3NDU3NiwgNDQwMTksIDAsIDEyODE4OSwgMzk2NywgMTk0NjA0LCAxMzEzNywgODc3NSwgMTI3OTQ1LCAwLCAyOTYzLCAKLSAgICAwLCA4NDEwLCA0NDU0LCA3MjMsIDEyNzg4MiwgOTY2LCA0NDQ5LCA5MjMzMCwgOTIyMzgsIDAsIDc4MTksIDIzMjAsIAotICAgIDE5NDU4OSwgMzM5LCA0OTY4LCAxOTQ1OTAsIDEyMDM5OSwgODA3NSwgNTUyNzYsIDAsIDgwNDcsIDAsIDc4ODI3LCAxMjYzNCwgCi0gICAgNDE1NDIsIDc4NzgwLCA3NDY2LCA2NzA1LCAxMjE3NCwgNDI2MTAsIDAsIDc0NDUyLCAwLCAxNTg0LCA2NjY0NSwgNjA0NSwgCi0gICAgNjcyOSwgMTIwNjQwLCA2NTIxOCwgNzg3NzcsIDAsIDc4MDYyLCA3NTM3LCAwLCAxMTM3MCwgMCwgMTAzMzAsIDAsIDEwMzk0LCAKLSAgICAwLCA3NDE5NCwgMCwgMTI3OTI5LCA5NzgwLCAwLCAxMzA5MiwgMTk0NTc2LCAxMTk2MDUsIDE5NDU3OCwgNzA3NCwgOTI2NDgsIAotICAgIDE5NDU3OSwgMTk0NTgyLCAxMTQxNCwgMTI4ODY4LCAyNTMxLCAxMzAzNCwgMCwgMCwgNDIxMSwgMTI1OSwgNzUxNywgMCwgMCwgCi0gICAgMTk0NTYxLCA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgMTk0NTY3LCAxOTQ1NjYsIDExMDY0LCA0MTEyOSwgMCwgCi0gICAgNDI4NTAsIDEzMDM1LCA5MDc1LCA5MjM4NywgNTQ2NiwgMTI4MTUzLCAwLCA2NDA5OCwgNjU3OTMsIDQ1MzUsIDE5NDU3MywgCi0gICAgNDI3MSwgNzg0MTcsIDEyODM1NywgNjc2OSwgNDE0MTAsIDAsIDY0MjYyLCA2NzY3LCA0MTQwNywgMCwgMCwgNjc1NSwgCi0gICAgMTE4ODY0LCA5MDQ2LCAxMjc5MzQsIDAsIDAsIDAsIDAsIDAsIDY3Njc1LCAwLCAwLCAwLCA2NDMzOCwgMjU2MywgMTMwMzMsIAotICAgIDI0NywgMTE4OTE1LCAwLCAxMjMzOCwgNDY1MSwgMCwgMTEyNzAsIDAsIDAsIDExOTMzLCAwLCAwLCA0MTkwMywgNDM0NDcsIAotICAgIDExMDAxLCAwLCA0MjI1NSwgMCwgOTI2NjEsIDY5ODIxLCA0MTkwNSwgMCwgMCwgMTA3NzUsIDk3OTMsIDUwMDksIDAsIAotICAgIDQyMjY5LCA2NDU4NywgMCwgNDI1MzUsIDY5ODEyLCA2NDUyOSwgNDE0MDgsIDQyODUzLCAzODc3LCAxMjA3OTUsIDQyNjc0LCAKLSAgICA4MTQ3LCA0MzU2NiwgMTE5MDIxLCAwLCAxMDIzNiwgNjU5MTgsIDQzNzgyLCAwLCAwLCA2NDUwNiwgNjk2NTIsIDExODkyMSwgCi0gICAgNDc0NywgMTI4MDU4LCAwLCA0MzIwMCwgNTgzMiwgMCwgMCwgNTE0MSwgNDI2MDAsIDAsIDQzMjAzLCAwLCAwLCA0MzI4NiwgCi0gICAgMCwgMTI4MjExLCA0Mzc3OCwgMCwgNDEzMDUsIDc4Nzc2LCA0Mzc4MSwgMTEzMDMsIDY1NTQ3LCAwLCA3MDMxLCA4NTksIDAsIAotICAgIDAsIDAsIDYwNTksIDEyNjk4NSwgNTUyMzUsIDAsIDg1MzUsIDAsIDY1MTk2LCAxOTQ3ODcsIDY2MDMyLCAxMTQ4OCwgMCwgCi0gICAgMTIwNzg2LCA0MjIzMywgNjQxNDAsIDk5NDYsIDYzODg1LCAwLCAxMTgyMiwgMCwgNDMxODksIDAsIDAsIDE3ODgsIDE1NzksIAotICAgIDEyMDQ4MiwgOTE3ODE3LCAwLCAwLCAwLCA5MDI4LCAxMTk1NzEsIDY5MjM0LCAwLCAwLCAxMjg1LCA2NDg4MiwgNDEyNDIsIAotICAgIDAsIDAsIDEyNjQwLCAwLCA3NDAxLCAwLCAxMjYyNSwgNjgxOTgsIDAsIDkyMjU0LCAzOTQwLCA0MTU5NywgNTUyNjAsIAotICAgIDMzOTYsIDEyNjQyLCA4NjY1LCAwLCAwLCAxMjYzMCwgMTY1MywgOTE3ODE1LCAxMDE1MywgMCwgNjE2NiwgMTIwNTE2LCAKLSAgICAxMjA1MjMsIDAsIDg4MTUsIDY2NjczLCA2NTA0NiwgOTI4NSwgOTEzLCA0MjI1OSwgMTE5MzE3LCAxMTkzMTgsIDIxNDIsIAotICAgIDY4NDU0LCA0MjQ4NSwgMTE4ODM3LCA3ODc4LCA4MjExLCA0MjI5MywgNjQzNzcsIDAsIDkyNjQzLCAwLCAxOTQ2NzMsIAorICAgIDIzNTAsIDEzMDI5LCA3ODIzMywgMCwgOTgzMTAzLCAxMzAzMCwgNjcwMiwgNDUyNywgMCwgMTI1MzgsIDEyODgxMCwgCisgICAgOTgzNjM2LCA2NTU5OSwgNjU3MTcsIDk5NjYsIDAsIDQ5NDgsIDEyNDg0LCA0MDMyLCAxMjgxNDksIDEyNjIzLCAwLCA2MjA3LCAKKyAgICAwLCA2MTE3LCA2NTkzMCwgODQxMiwgMCwgNzQzOCwgMTI5NiwgMjMyNSwgNDE1MTEsIDEyNjYyNSwgMTAxNDksIDc0MTE4LCAKKyAgICAwLCAxMjcyODYsIDEyNDgxLCAwLCAxMjQ4OCwgNjY3MTMsIDAsIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCA0MjYxOSwgCisgICAgNzM3NjYsIDAsIDYyOTUsIDkwMSwgNDE1MTAsIDc5NTMsIDAsIDY1MDMyLCA0MTUxMywgOTgzMTY2LCAxMTkyNywgNjY1ODQsIAorICAgIDc4NTU5LCA3ODU2MCwgNzg1NTcsIDc4NTU4LCAwLCA3ODU1NiwgODQ4LCA5ODY4LCAwLCA2NDI0LCA3ODU2OCwgMTE5MzM4LCAKKyAgICA2OTkyMiwgNzQwMzEsIDc4NTYzLCA3ODU2NCwgMjM1MiwgNzg1NzIsIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCA2Nzk3MywgCisgICAgMCwgMTMwMjYsIDY3NjIsIDc4NTc5LCA3ODU4MCwgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCA4MDk5LCAwLCAwLCAKKyAgICAxMzQzLCA5ODM4MTQsIDAsIDkzMjUsIDY4MTgsIDYyODMsIDExNzM4LCAwLCA5ODM5MjUsIDAsIDExNzQxLCAwLCAwLCAKKyAgICA5MjE2LCA4MjYzLCAxMTI3OSwgMTk0NzUyLCA5ODM4MTYsIDE5NDc1NCwgMTMwMjEsIDY0NDk0LCAzMTM2LCAxOTQ3NTgsIAorICAgIDE5NDc1NywgMTk0NzYwLCAxMzAyMiwgNDI3MzcsIDk5NTYsIDAsIDAsIDc0NTUyLCAxMDAxNCwgMCwgNDEyNjAsIDExOTM0MCwgCisgICAgMTMwMjAsIDEwMDI0LCAxOTQ3NjQsIDc0NTgzLCA3NDM0MCwgNjk2ODEsIDAsIDQzMDAxLCA4MDI5LCAwLCAwLCA5ODM3NzEsIAorICAgIDMzMzUsIDAsIDAsIDk3NzYsIDEyMDUyNiwgMTk0NzQ4LCA1MjE1LCA0MjY0NCwgMzMzMywgMTYzMiwgMTk0NzUxLCA2NDg0OSwgCisgICAgMzM0MiwgNzg1ODIsIDUzNjMsIDEyOTU3LCA3ODU4MSwgNDE1NiwgMCwgMCwgNjQyMSwgNzg1OTEsIDE2MTEsIDc4NTg5LCAKKyAgICAxMzAxOCwgNzQyNTcsIDc4NTg4LCA3NDU0MiwgMzMzNywgNDUzNywgNjc4OTUsIDExNzM2LCAwLCA2ODYwOCwgNjQ4MiwgCisgICAgNDIxNCwgNzM3OTAsIDExOTQ1LCAwLCAxMzA0NiwgODgzOCwgNDI1LCA0MDI1LCAxMDcwOSwgNzg1OTUsIDIxMDgsIDIzOTIsIAorICAgIDEzMDQ3LCAwLCAwLCA2ODE5LCAxMzA0OSwgNjQ5OSwgOTIyNDMsIDEyNDI0LCA2ODYxNCwgNzM5NDQsIDEzMDUwLCA5OTI0LCAKKyAgICAxOTQ3NDUsIDY1MDcsIDEyNzkxOSwgOTQwNzMsIDEyODA2OSwgMzI3NywgODkyOSwgNDk0NywgNDEwNTUsIDAsIDE5NDcyMiwgCisgICAgMTk0NzIxLCAxOTQ3MjQsIDEzMDQ1LCA2NDYyNiwgNjYwMzQsIDc3NTEsIDE5NDcyNywgODM3MSwgMTk0NzI5LCAzOTk3LCAKKyAgICAxMjgwNiwgODc2OCwgMTMwNDQsIDAsIDEyNDIwLCA0MDI0LCAxOTQ3MzAsIDQxMDU0LCAxMDc4LCA5NzU3LCA2OTczNiwgCisgICAgNDEwNTcsIDAsIDAsIDAsIDAsIDk4Mzc4MiwgOTIyMTAsIDkyNDExLCAwLCA0MTQ5NiwgMCwgOTE2NSwgMTU3MiwgMTE5MTEsIAorICAgIDAsIDExODg0MiwgMjM0NiwgMTMyNzAsIDg5NTgsIDAsIDk2NDYsIDM3NzMsIDQzMTgzLCA2NDAxLCA1ODMxLCAwLCAwLCAKKyAgICAxMzA0MywgODA1NiwgOTI0OTQsIDY1NjgxLCAyMDgsIDEyNzM4MiwgNDE1MTQsIDAsIDAsIDAsIDEwNjk5LCA2NDA4LCAKKyAgICA5MjIyNywgNzgyNSwgNTY2MSwgMCwgMTIwNjMwLCAzNjAzLCA0MTEwOSwgMjM5OCwgMzU0OCwgMTI2NTk2LCAwLCAxMTk5MzMsIAorICAgIDAsIDMxMTUsIDk5MTgsIDAsIDExMzIxLCA0MjkxMiwgMCwgMCwgMTk0NzI2LCA0ODc2LCA2NTgwNCwgMCwgMCwgNDM0NjgsIAorICAgIDk4MzI2NiwgNDE1NTgsIDQxNDcxLCA3Mzk1MCwgODE1OCwgOTk0NCwgNDE0NzIsIDEyMDI5OCwgMTMwNTEsIDc4Njg5LCAKKyAgICAzMTQzLCAxOTQ2NzQsIDY3MDEsIDQxNTU5LCAxODk2LCA2NjI1NiwgMTMwNTIsIDE5NDY4MCwgNTY2NSwgMCwgMTE5MDcxLCAKKyAgICA3MDI1LCA2Mzk3NCwgMCwgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgMTIzMTAsIDU2NjIsIDQyMzgyLCAKKyAgICAxOTQ2ODYsIDczOTI0LCAxMTIxLCA3ODMxOSwgNjM5NTksIDAsIDk5NDIsIDEzMjMxLCAwLCA2NDc1MiwgNDczMiwgCisgICAgMTk0NjY2LCAxMTU5NiwgMTE5OTMxLCA2NTE4NywgMTYyNiwgNjM5ODMsIDEwMTEwLCA2NDc3MiwgNDIwMjQsIDY0MjAsIAorICAgIDQyMDI4LCAwLCAxMDUwOSwgMjc5NSwgNDkxMCwgMTk0NzI4LCA2OTIzMSwgNjQ3NTMsIDYyNzUsIDkzOTU3LCAxMTg4MzAsIAorICAgIDYzOTc4LCAxMTA0NCwgMzIyOSwgNjQyMywgNDI3NzQsIDAsIDAsIDAsIDEyODIzLCAyMzMxLCA5MTc4MTAsIDcwODUsIAorICAgIDYxMzcsIDAsIDc1MjQsIDAsIDkxNzgwOSwgODM0NiwgMCwgODMzOCwgMTI4MzE1LCA2NTA0MywgMCwgODIyLCAxMjc5ODQsIAorICAgIDk5MDMsIDY0NzIxLCA0MjcyMiwgNjk4NzcsIDE5NDY1OSwgNzg2NTUsIDc4NjYxLCAxOTQ2NjAsIDc4NjYyLCA0MTI2NSwgCisgICAgNTMxMSwgMTc5NSwgOTY1LCAxMTg3OTEsIDEwNTg3LCA3ODA1NSwgMTEyNzgsIDc4NjMyLCAxOTQ2NDAsIDAsIDEyOTQ2LCAKKyAgICAxOTQ2NDEsIDExOTM0MSwgMTIwMzQ5LCA2Mjk0LCAzMTQ0LCAxOTQ2NDgsIDE5NDY0NywgNjUwMTksIDE5NDY0OSwgNzM5OTAsIAorICAgIDAsIDk4Mzk1MSwgNzQ4LCA0MTA2NywgMjMzMCwgNTM1LCAzMTQ4LCAxMjM3NSwgNzg3OTksIDE5NDYyOSwgMTA1NTYsIAorICAgIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCA2Nzg2MywgMzU5MywgMCwgMCwgMjM0MiwgMCwgMTk0NjM0LCA2NTIwNiwgNDg5NCwgCisgICAgMTk0NjM1LCA0ODkwLCAxOTQ2MzcsIDkxNzgwNCwgNTgxLCA0ODkzLCA5ODM2MTYsIDY1NzEsIDY1NTQ1LCA0ODg4LCA0MTU3LCAKKyAgICA3ODA0OCwgNzgwNDksIDc4MDQ2LCA3ODA0NywgMCwgMTAxMTksIDY0MTUsIDQyODkzLCAwLCA2OTcwMiwgMCwgMCwgMTEzNzUsIAorICAgIDY0NzQ2LCAyMzMyLCA3ODA2MywgNDEyLCA3ODA2MSwgNjQ5MzIsIDQyODgwLCA0MzU4NywgMCwgMCwgMCwgMCwgNjUxOTcsIAorICAgIDc4MDY2LCAxMjIwMywgNzgwNjQsIDc4MDY1LCA4OTEzLCA2NTg1NCwgNDg3NSwgNjU4MTEsIDEyMDM4MSwgMTIwMzg5LCAKKyAgICAxMTg4ODgsIDkzNDQsIDg4MjYsIDEyMDM4NiwgMTIwMzk1LCAxMzEwNCwgNzQ3ODEsIDExOTk3LCAxMjAzOTMsIDc4MDc1LCAKKyAgICAwLCAzMTM0LCAwLCA2NTY5NiwgOTIzMzEsIDAsIDY2MjE3LCAwLCA4MzM0LCAxMTkzNDQsIDAsIDM0NDksIDAsIDAsIAorICAgIDc4NDE0LCA3ODQxMywgMTE4OTUwLCA3NDAxMSwgMCwgMCwgMCwgMCwgMTkwOCwgMTIwMTY3LCA0MzI4LCAxMDczNCwgCisgICAgMTI3MDE0LCAwLCAxMjc5MTQsIDc4MDQsIDc4MjcyLCAxMDgxMSwgNjI1MCwgMTEzMzksIDQ5MTQsIDExMzY3LCAwLCAKKyAgICA3ODA1NCwgNDkxNywgNzQ1MTYsIDc0MjA4LCA2NDI4NSwgNDkxMiwgNTQ2NCwgMTI3ODM2LCAxMTg4OTMsIDIzNjEsIDc5NzEsIAorICAgIDc4MDcyLCA3ODA3MywgNTUyNDMsIDc4MDcxLCAwLCA4MDg2LCA3NDMxNywgNjcwNywgODMxOSwgMjMxMiwgNDA5NzcsIAorICAgIDEwOTYwLCA0MDk2MiwgODMwNSwgMTI1NzMsIDk4MzYwOCwgNDA5ODAsIDk4Mzk1NSwgMTMyMDIsIDAsIDEyNTgyLCA3ODI4MiwgCisgICAgOTgzMDQ4LCA2OTg1NiwgNDI0MzgsIDU1MjIxLCA2Mjg4LCA3ODI4MCwgMTI3OTQ2LCA1NjUzLCA0MjQwMCwgMTA4OTEsIAorICAgIDc2OTgsIDU2NTgsIDc0MDQ1LCA3MDAzOSwgMCwgMCwgNDkxMywgMCwgOTgzOTUwLCA3MTMzMywgNDIzMjYsIDEyODE5NCwgCisgICAgMTI3MjgsIDkyNjg1LCA0MjQ3OCwgMjMyNywgMCwgMTI1NjMsIDQyMjg3LCAxMjcwNSwgMCwgMCwgMTI1ODgsIDg4MjEsIAorICAgIDYxNTMsIDI4NjcsIDE5NDcwOCwgNjYzMTIsIDY5OCwgMTI4MDA3LCAxOTQ2MDYsIDEwMzU2LCA3MDAxNywgMTk0NzEzLCAKKyAgICA2NTEsIDEyNjQxLCAwLCAwLCAwLCAwLCA0MTU1MiwgNjUxMTUsIDc4NDY1LCA3ODQ2NywgNzg0NjMsIDc4NDY0LCAxMjg4NTEsIAorICAgIDc4NDYxLCAxOTQ2OTcsIDc0MzU2LCA2NDk0NSwgNDcxNiwgNDMyNzcsIDAsIDc4NDc0LCAxMjM0MCwgMTIwNTY4LCAwLCAKKyAgICAxOTQ3MDAsIDU1MjY0LCA0MTIxMSwgMTIwNjc2LCA4NzAzLCA1NDYyLCA5MTc2MjksIDk4MzQ4NywgMTAxMDEsIDAsIAorICAgIDcwMDQ5LCA4NDc5LCA0MTUxLCA0MTkzMywgMCwgMCwgNjYyNTQsIDEyMDgyMSwgMCwgMCwgMTI4NjU0LCAwLCAxMTkxOTQsIAorICAgIDc0MDUwLCA5MjcwMSwgMCwgMCwgMCwgMCwgMCwgMTIyNzgsIDAsIDAsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAxMjg5OSwgMCwgCisgICAgMCwgMjY5OSwgMCwgNzM4NDUsIDI5ODUsIDkyNTY4LCAxMjY0NzUsIDkxNzg0NSwgMTIxOTIsIDExOTMxNCwgMCwgMTE5MzEyLCAKKyAgICA5ODI3LCAxMTkzMTAsIDExOTMxMSwgMTE5MzA4LCAxMTkzMDksIDExOTMwNiwgMTE0ODEsIDQxMjEwLCAxMTkzMDUsIDAsIAorICAgIDM1LCA3ODQ4MSwgNzg0ODIsIDY2Njk0LCA2ODQ3OSwgNzg0NzcsIDc4NDc4LCA0MzU5NiwgNjA5MCwgNjQyNTcsIDc4MTIsIAorICAgIDEwNTM0LCAwLCA3ODQ4NSwgNzM4NDgsIDY3OTc1LCA0MjcyLCAwLCA0MDk2NywgNDA5NjQsIDkxNzgyNSwgMTI3MDQsIAorICAgIDc4NDg3LCA0MzMwNiwgMCwgNjQ0OTcsIDEyMTM4LCA3OTMwLCAwLCAyMjkyLCA2ODIxNiwgMCwgOTE3ODI2LCA1MjQ0LCAKKyAgICA0MTg5LCA5NDEwOCwgNjc1OTYsIDEyNzUwNCwgNDE4OCwgMTg3OSwgMCwgOTY4LCAwLCA0Mzc0MywgMCwgODg3MywgMjI3OSwgCisgICAgMCwgOTE3ODI3LCA2NTU1NSwgMTI1NzQsIDAsIDAsIDAsIDc0NDkwLCAxMjcwOTksIDQzNjU3LCAwLCAwLCAwLCA0MjY4MiwgCisgICAgMTI1NzgsIDEyNzIwLCAwLCA0MTIyNywgMCwgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDAsIDAsIDcyNTEsIDAsIDAsIAorICAgIDExODg1MCwgMTE5MTQxLCAxMjg1NDYsIDY2MDE1LCAwLCA5NTksIDg4ODUsIDEyNTY0LCA2NjQ1NywgNzg4MDgsIDk0NjksIAorICAgIDk2MzIsIDkyMzIzLCA3NDc2MSwgNjQzMjMsIDEyNzMzNSwgMCwgMCwgMCwgMzEwLCAwLCA0MTI4MSwgMTA5NzYsIDAsIAorICAgIDcxMzI1LCAwLCA3NDI2NiwgMTAwNTQsIDY0OTcsIDg1NzQsIDAsIDkwMTIsIDE5OTU4LCA3NDQyMCwgNjUwODksIDEzMjE1LCAKKyAgICAxMjczMCwgNjUxNjMsIDc0MDQ0LCAzNzQsIDQzMTk1LCA4MTYsIDEyMDE2MSwgMCwgMCwgNDE5MzQsIDc0NjUsIDAsIAorICAgIDEyODE2OCwgOTgzMjYwLCA0NzE1LCA2MTAxLCA5NDEwNiwgNDE5MzYsIDAsIDQ4NzksIDAsIDY1NDQ2LCAwLCAzMDcsIAorICAgIDEyNzE0NywgOTU4NSwgNTM3NCwgOTgzMjU5LCAxMjgwNTksIDAsIDAsIDEyNjYxOCwgMTIwMzkwLCAwLCA2NTU2NywgCisgICAgMTIwNjE0LCAxOTI5LCAwLCAxMjE0MiwgMCwgMTIyMzYsIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDE5NDYyMywgCisgICAgNTM3OCwgNzg3OTEsIDEyODY3OSwgNDE0MjEsIDAsIDQ0NjIsIDAsIDEyNjU5OSwgMTI4MDkyLCA4MjEsIDAsIDI0OTgsIAorICAgIDU4MDAsIDEyMDE1NywgOTgzMTE1LCAxNzYwLCAyNDIxLCA0NDY5LCAyMzI0LCA4MjgsIDM2MTEsIDc4NDAwLCA3NTcsIAorICAgIDExODUsIDAsIDc4NzcwLCA0MzU5NywgMTA2MjgsIDc0ODA4LCAxOTQ1NzIsIDc5OTksIDQzOTcxLCAwLCAwLCAxMDYzNCwgCisgICAgMTA5NDIsIDc3MTMsIDIzNDgsIDAsIDY0Mzc0LCA0MzgwLCAxOTQ2MDgsIDExOTA0NCwgOTk4MiwgNjQzMjQsIDQxMjQwLCAKKyAgICA4NjIsIDY1NjI2LCA3ODQ2MiwgMTgxMCwgMzY3MywgNTEzNywgMTk0NjE3LCAwLCA3Mjc3LCA2NTYyMiwgMCwgNzU2NiwgCisgICAgNjQ2ODgsIDE5NDU5MywgMTk0NTkyLCA3ODA5MiwgNzQzNTcsIDE5NDU5NywgNDc0OCwgOTIyMjgsIDE5NDU5OCwgMTk0NjAxLCAKKyAgICA0MjI2MCwgNTg3MSwgMTE5MDc1LCAwLCA3NDU3NiwgNDQwMTksIDAsIDEyODE4OSwgMzk2NywgMTk0NjA0LCAxMzEzNywgCisgICAgODc3NSwgMTI3OTQ1LCAwLCAyOTYzLCAwLCA4NDEwLCA0NDU0LCA3MjMsIDEyNzg4MiwgOTY2LCA0NDQ5LCA5MjMzMCwgCisgICAgOTIyMzgsIDAsIDc4MTksIDIzMjAsIDE5NDU4OSwgMzM5LCA0OTY4LCAxOTQ1OTAsIDEyMDM5OSwgODA3NSwgNTUyNzYsIDAsIAorICAgIDgwNDcsIDAsIDc4ODI3LCAxMjYzNCwgNDE1NDIsIDc4NzgwLCA3NDY2LCA2NzA1LCAxMjE3NCwgNDI2MTAsIDAsIDc0NDUyLCAKKyAgICA5ODM3NTQsIDE1ODQsIDY2NjQ1LCA2MDQ1LCA2NzI5LCAxMjA2NDAsIDY1MjE4LCAxMTU1OSwgMCwgNzgwNjIsIDc1MzcsIDAsIAorICAgIDExMzcwLCAwLCAxMDMzMCwgMCwgMTAzOTQsIDAsIDc0MTk0LCAwLCAxMjc5MjksIDk3ODAsIDAsIDEzMDkyLCAxOTQ1NzYsIAorICAgIDc3OTUwLCAxOTQ1NzgsIDcwNzQsIDkyNjQ4LCAxOTQ1NzksIDE5NDU4MiwgMTE0MTQsIDEyODg2OCwgMjUzMSwgMTMwMzQsIAorICAgIDAsIDAsIDQyMTEsIDEyNTksIDc1MTcsIDAsIDAsIDE5NDU2MSwgNDA5OTYsIDEzMDM3LCA3MDkyLCA2NDEsIDUyMTksIAorICAgIDk0MDM0LCAxOTQ1NjYsIDExMDY0LCA0MTEyOSwgMCwgNDI4NTAsIDEzMDM1LCA5MDc1LCA5MjM4NywgNTQ2NiwgMTI4MTUzLCAKKyAgICAwLCA2NDA5OCwgNjU3OTMsIDQ1MzUsIDE5NDU3MywgNDI3MSwgNzg0MTcsIDEyODM1NywgNjc2OSwgNDE0MTAsIDk4MzQ0NCwgCisgICAgNjQyNjIsIDY3NjcsIDQxNDA3LCAwLCAwLCA2NzU1LCAxMTg4NjQsIDkwNDYsIDEyNzkzNCwgMTI2NjA4LCAwLCAwLCAwLCAwLCAKKyAgICA2NzY3NSwgMCwgMCwgMCwgNjQzMzgsIDI1NjMsIDEzMDMzLCAyNDcsIDExODkxNSwgMCwgMTIzMzgsIDQ2NTEsIDY5ODk1LCAKKyAgICAxMTI3MCwgMCwgMCwgMTE5MzMsIDAsIDAsIDQxOTAzLCA0MzQ0NywgMTEwMDEsIDAsIDQyMjU1LCAwLCA5MjY2MSwgNjk4MjEsIAorICAgIDQxOTA1LCAwLCAwLCAxMDc3NSwgOTc5MywgNTAwOSwgMCwgNDIyNjksIDY0NTg3LCA5ODMwNjMsIDQyNTM1LCA2OTgxMiwgCisgICAgNjQ1MjksIDQxNDA4LCA0Mjg1MywgMzg3NywgMTIwNzk1LCA0MjY3NCwgODE0NywgNDM1NjYsIDExOTAyMSwgOTgzNzY3LCAKKyAgICAxMDIzNiwgNjU5MTgsIDQzNzgyLCAwLCAwLCA2NDUwNiwgNjk2NTIsIDExODkyMSwgNDc0NywgMTI4MDU4LCA2OTg0NCwgCisgICAgNDMyMDAsIDU4MzIsIDAsIDAsIDUxNDEsIDQyNjAwLCAwLCA0MzIwMywgMCwgOTgzNzkwLCA0MzI4NiwgMCwgMTI4MjExLCAKKyAgICA0Mzc3OCwgMCwgNDEzMDUsIDc4Nzc2LCA0Mzc4MSwgMTEzMDMsIDY1NTQ3LCAwLCA3MDMxLCA4NTksIDAsIDAsIDAsIDYwNTksIAorICAgIDEyNjk4NSwgNTUyMzUsIDAsIDg1MzUsIDAsIDY1MTk2LCAxOTQ3ODcsIDY2MDMyLCAxMTQ4OCwgMTIwNDgxLCAxMjA3ODYsIAorICAgIDQyMjMzLCA2NDE0MCwgOTk0NiwgNjM4ODUsIDE5NDc5MiwgMTE4MjIsIDAsIDQzMTg5LCA5ODM4ODksIDAsIDE3ODgsIAorICAgIDE1NzksIDEyMDQ4MiwgNzEyOTgsIDAsIDAsIDAsIDkwMjgsIDExOTU3MSwgNjkyMzQsIDk0MDU1LCAwLCAxMjg1LCA2NDg4MiwgCisgICAgNDEyNDIsIDcwMDg2LCAwLCAxMjY0MCwgMCwgNzQwMSwgMCwgMTI2MjUsIDY4MTk4LCAwLCA3MDA4MiwgMzk0MCwgNDE1OTcsIAorICAgIDQzNzU0LCAzMzk2LCAxMjY0MiwgODY2NSwgMCwgMCwgMTI2MzAsIDE2NTMsIDkxNzgxNSwgMTAxNTMsIDAsIDYxNjYsIAorICAgIDEyMDUxNiwgMTE4OTg5LCAwLCA4ODE1LCA2NjY3MywgNjUwNDYsIDkyODUsIDkxMywgNDIyNTksIDExOTMxNywgMTE5MzE4LCAKKyAgICAyMTQyLCA2ODQ1NCwgNDI0ODUsIDk0MDEyLCA3ODc4LCA4MjExLCA0MjI5MywgNjQzNzcsIDAsIDkyNjQzLCAwLCAxOTQ2NzMsIAogICAgIDEyMDMyLCAwLCA5NzI1LCAwLCA3ODQzMSwgNTI2MywgMTI4MTgsIDc4NDMwLCA0MTkzOSwgMTAwMjIsIDY1Mzg3LCA3ODQxOSwgCi0gICAgNDI3NzcsIDEwMTM5LCA5ODAsIDQzNjk4LCA2NTM4NiwgMCwgMCwgNDM3MDEsIDQzMTk4LCA3MTg0LCAxMjA2NzMsIAorICAgIDQyNzc3LCAxMDEzOSwgOTgwLCA0MzY5OCwgNjUzODYsIDIyMDgsIDAsIDQzNzAxLCA0MzE5OCwgNzE4NCwgMTIwNjczLCAKICAgICAxOTQ3OTcsIDkxNzgxOSwgMTAwODUsIDExOTk5MiwgMCwgMTE5OTkzLCA2NjM0LCA5MjM3MywgMCwgMTE5MzIzLCA4MDcyLCAKICAgICAxMTkzMjEsIDQzNzAwLCAwLCA4ODcyLCA3NzgzLCA5MTc5OTIsIDEyMzk4LCA4MjM3LCAwLCAwLCAxMjM5NSwgMCwgCi0gICAgMTI2OTc3LCAxMjA1NjUsIDk5MTQsIDEyNzAxMSwgOTE3ODU0LCA3Mzk3NSwgNjM2NywgNjM1MSwgNjY2ODgsIDAsIDc4MTA3LCAKKyAgICAxMjY5NzcsIDEyMDU2NSwgOTkxNCwgMjIxNywgOTE3ODU0LCA3Mzk3NSwgNjM2NywgNjM1MSwgNjY2ODgsIDAsIDc4MTA3LCAKICAgICAwLCA2NDczNSwgNDEyNDMsIDkyMTk5LCA3ODA4LCAxODI5LCAwLCA0MTkzNywgNDM1OCwgNDMyNzIsIDYzNTMsIDAsIDAsIAogICAgIDEyMDQyMiwgMCwgMTcxMCwgMCwgMCwgNjU2MDcsIDAsIDQ5LCA2NjI3LCAwLCA2MjU4LCAxMDY4MywgNzg2NzIsIDk3NDEsIAogICAgIDc4MzI5LCA1NjQ5LCA3ODQ0MSwgNDM0NDMsIDY0NDE4LCAxNjQzLCA2NTIxMywgODQwNSwgMzQ3MCwgMTI4MjI1LCAxMzIxMywgCi0gICAgNDI0NTIsIDc4MzMxLCAwLCA3ODQ0NSwgMCwgMTA3MiwgNzg0NTcsIDc4NDUyLCA3ODQ1NCwgNjU3NiwgNDE5ODgsIDQxMTMyLCAKLSAgICA2NTY3NSwgMTA4MCwgMTIwMDAyLCA5ODg2LCA1NTIyNSwgMTEwMSwgNjg0MDQsIDEyMzA5LCA1NTIyNywgMCwgMTI2MzIsIAotICAgIDEwODYsIDE4NjksIDc4Njg1LCA3NjgwLCAwLCA2NTQ1OCwgMTIwNzE0LCAxMjYzOSwgMzM4MCwgODEyMywgMTA5MSwgCi0gICAgMTI2MzgsIDc5NzcsIDQ1MDEsIDQxMDk5LCAwLCA2NjMwOSwgMCwgMCwgMTQ5NCwgMCwgMCwgMCwgMTE2OTMsIDAsIDEwNDk0LCAKLSAgICA5MjY1NSwgNjU4NzIsIDEyMzYzLCAxMTM4NiwgMCwgMCwgMCwgMCwgNjQ1ODIsIDAsIDczNzk0LCAwLCA4MDIyLCAwLCAKLSAgICAxMjA0NjIsIDc0MTA2LCAxMjQxMywgMTk0ODI5LCA5MTc5OTQsIDAsIDkxNzk5NSwgNTU3MCwgMTg4MSwgNzIxMCwgMCwgCi0gICAgMTAxMiwgNjY2MzAsIDAsIDEyMDcwOSwgNzIwOCwgNjY0NDIsIDU1NjksIDAsIDQyMzM5LCAwLCA2MDYzLCAwLCAwLCAKLSAgICAxMTk1OTQsIDYwNTMsIDY1NjAyLCAwLCA5MjIwMSwgNjQ3MjcsIDkxNjAsIDE5NDgyNywgMCwgMCwgOTIxODAsIDEwNTAzLCAKLSAgICAxMTg4MTAsIDYwNTUsIDM4NzAsIDQyNzksIDg0OTAsIDEyMDExNCwgNDMxOSwgNjQ3ODYsIDg2MDIsIDEyMDExMCwgMTEzMjYsIAotICAgIDkyMjA0LCAwLCAwLCAxMjAxMTksIDc4MzMzLCAxMjAxMTcsIDEyMDExOCwgMTIwMDk5LCAxMjAxMDAsIDY1MDg3LCA1NTcxLCAKLSAgICAzNjc0LCA5NzQwLCA5MTIxLCA1NTY4LCAxMjAxMDcsIDEyMDEwOCwgNDIwODUsIDEwMTA3LCA0MjE1OSwgNDI4NzAsIAotICAgIDEyMDEwMSwgNTg5LCA3MDUwLCAwLCA0MzI4MSwgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAwLCA3NDA5OSwgCi0gICAgNDI2NDUsIDAsIDE5NDgxNSwgODU4MywgMCwgNTg0NywgNjkyOCwgMCwgMCwgMCwgMCwgMCwgNjY1OTIsIDEyMjA0LCAKLSAgICA5MTc5NjIsIDE5OTY2LCA3Nzg1NiwgNDI1NjEsIDEyMDYyNiwgMCwgMCwgODEyMCwgMTIwNzAxLCAwLCAwLCAxMjgwMTIsIAotICAgIDQxMDYzLCAwLCAxMDY2NCwgMCwgODM2OSwgMCwgNDU1MSwgMTk0OTY0LCAzMzY5LCAwLCAwLCA5NjczLCA2NjMzNCwgCi0gICAgNjU1ODAsIDEwNDc4LCAxMTg5NjAsIDEyNTE3LCA1NTcsIDk0NTcsIDEyMDM0LCAwLCA2MzU1LCAxMjUxOSwgNDEwMDQsIDAsIAotICAgIDE5NTAyNSwgNzQwOTQsIDAsIDAsIDc3OTcwLCAwLCAwLCAxMjgxNzUsIDEyMTExLCAzOTI3LCAwLCAxMjUxNSwgMTQ3NCwgCi0gICAgNjc4OTMsIDU0OTIsIDY5MjMsIDEyODA5OSwgMTA0NDEsIDczODM2LCAwLCA0Mzk5MCwgNTQ5MywgMCwgNzQzMTksIDAsIAotICAgIDY2NjM1LCAxMjAxOSwgMCwgMTYxOCwgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgOTE3OTU5LCA1ODUzLCAxMzA2MywgCi0gICAgMTAzNjMsIDAsIDEyOTU2LCAxMjgxNjksIDEyMDcyOSwgMTEzMTQsIDkxNzU4MiwgMTIwNjAsIDAsIDc4MzkyLCAxMjgyNiwgCi0gICAgNjMyOSwgMCwgMTA1MTQsIDY1NTE3LCA3NDM5NSwgMjcwNywgODMwOSwgMCwgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIAotICAgIDQzNDIwLCA3ODM5NiwgMTI3MDU3LCAyNjk1LCA0MjE3MSwgMCwgMCwgMCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgCi0gICAgMTIxMjUsIDEyNzY2LCAwLCAxMTY0LCAwLCAwLCA0MTkxOCwgMCwgMTI3NTQyLCA4Njg3LCA2NjAwOSwgMTIxNzgsIDcwNTMsIAotICAgIDEyODAwMSwgNzQ2OSwgMCwgNTI0OCwgMTIyMTgsIDEyMDUzOCwgNjQyNywgNDI4ODQsIDQxMTIzLCAwLCAwLCA0Mjg3MywgCi0gICAgNDExMjYsIDk5OTEsIDQxMTI4LCA3NDM3MSwgMTI3MDMxLCAwLCA5ODczLCAwLCA0Mjg3NywgNzk5NCwgNjQ3NjIsIDIwNTMsIAotICAgIDQyODQzLCA2NTkxLCA5MzQwLCAwLCAxNTg5LCAwLCAyOTYsIDc0NDM4LCA3ODg1MiwgMCwgNjc4NDEsIDc0MzcwLCAwLCAKLSAgICA4OTIyLCAxMjgwNjgsIDc0NjAwLCAxMjcwMCwgNzQ4MzYsIDAsIDEyNTc5LCAwLCAxMjU3NSwgNjQxNiwgNTY1NiwgMjg5MSwgCi0gICAgMTMyNjIsIDY1NTkwLCA1Mjk5LCAwLCAxMTQ3MywgNTQ0OSwgMTI1MiwgMCwgNzg0MDQsIDQxNDMxLCA3NDM2OSwgNjUzNzMsIAotICAgIDUyOTUsIDkxNzU2OSwgNzQxMTQsIDEyMjMsIDE2NDIsIDE3NCwgNzgzOTksIDg4MywgNDE2MSwgMTI2OTEsIDQyNjAzLCAKLSAgICA0MTQxMywgMzIxMiwgNDE0NTksIDMyMTEsIDc0ODEwLCA0MTQyNSwgMTI3MDI5LCA3ODQxMiwgNzQ0NTAsIDk3MjgsIDM4NDYsIAotICAgIDgwNzAsIDYxNTAsIDY2MzYsIDQzNzAsIDAsIDAsIDc0MTc4LCA3NDU4NywgNzQxMTcsIDAsIDAsIDAsIDQ5ODYsIDEyMTg5LCAKLSAgICAwLCA2NzY0OCwgMTIwNDk5LCA5MTc1NTMsIDQyNTcsIDEyMTA0LCA3Nzk0MiwgNjIyMCwgOTAwNCwgNjU1NjEsIDAsIAotICAgIDc3OTQ5LCAwLCA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgMCwgNjk2NzksIDY5Njg0LCA5ODkwLCA3ODU2MSwgMTI5NzEsIAotICAgIDc4NDUzLCA5MjU1NiwgNzM4OTgsIDExOTc5LCAwLCAxMTg5MDAsIDkxNzg5NCwgMCwgOTYzNSwgMTI2MDAsIDg4NzEsIDAsIAotICAgIDAsIDAsIDY0NjksIDc0MjI3LCAwLCA2NTMwNCwgNDY3OSwgMTAyMzAsIDY0MzAwLCA2NDg2NywgMzQyNywgNDI0MCwgMCwgMCwgCi0gICAgMCwgMCwgNDI5MTYsIDAsIDAsIDAsIDcyODIsIDc4NzI4LCA2NTczMywgNDQ0NSwgMTI3MTM4LCAxMjgwODIsIDM0OTQsIAotICAgIDc0NjA2LCA2NTU1LCAwLCA3Nzk3NiwgMCwgMCwgNzg1NjYsIDAsIDAsIDY1ODk4LCAwLCA2NTMxMiwgNTQ0NywgMCwgCisgICAgNDI0NTIsIDc4MzMxLCAxMjA2NjQsIDc4NDQ1LCAwLCAxMDcyLCA3ODQ1NywgNzg0NTIsIDc4NDU0LCA2NTc2LCA0MTk4OCwgCisgICAgNDExMzIsIDY1Njc1LCAxMDgwLCAxMjAwMDIsIDk4ODYsIDU1MjI1LCAxMTAxLCA2ODQwNCwgMTIzMDksIDU1MjI3LCAwLCAKKyAgICAxMjYzMiwgMTA4NiwgMTg2OSwgNzg2ODUsIDc2ODAsIDAsIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAKKyAgICAxMDkxLCAxMjYzOCwgNzk3NywgNDUwMSwgNDEwOTksIDAsIDY2MzA5LCAwLCAwLCAxNDk0LCA5ODMxNDYsIDEyNjYxMywgMCwgCisgICAgMTE2OTMsIDEyNjUxMywgMTA0OTQsIDkyNjU1LCA2NTg3MiwgMTIzNjMsIDExMzg2LCAwLCAwLCAwLCAwLCA2NDU4MiwgMCwgCisgICAgNzM3OTQsIDAsIDgwMjIsIDAsIDEyMDQ2MiwgNzQxMDYsIDEyNDEzLCA5NDA2OSwgOTE3OTk0LCA5MTc5OTMsIDkxNzk5NSwgCisgICAgNTU3MCwgMTg4MSwgNzIxMCwgMCwgMTAxMiwgNDM3NTIsIDAsIDEyMDcwOSwgNzIwOCwgNjY0NDIsIDU1NjksIDk4MzIzNiwgCisgICAgNDIzMzksIDAsIDYwNjMsIDAsIDc4MzgzLCAxMTk1OTQsIDYwNTMsIDY1NjAyLCAwLCA5MjIwMSwgNjQ3MjcsIDkxNjAsIAorICAgIDE5NDgyNywgMCwgMCwgOTIxODAsIDEwNTAzLCAxMTg4MTAsIDYwNTUsIDM4NzAsIDQyNzksIDg0OTAsIDEyMDExNCwgNDMxOSwgCisgICAgNjQ3ODYsIDg2MDIsIDEyMDExMCwgMTEzMjYsIDkyMjA0LCA5ODMxMTYsIDAsIDEyMDExOSwgNzgzMzMsIDEyMDExNywgCisgICAgMTIwMTE4LCAxMjAwOTksIDEyMDEwMCwgNjUwODcsIDU1NzEsIDM2NzQsIDk3NDAsIDkxMjEsIDU1NjgsIDEyMDEwNywgCisgICAgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgMTIwMTAxLCA1ODksIDcwNTAsIDk4Mzc5MSwgNDMyODEsIAorICAgIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgMTI2NDk3LCA3NDA5OSwgNDI2NDUsIDAsIDE5NDgxNSwgODU4MywgCisgICAgMCwgNTg0NywgNjkyOCwgMTI4MDc0LCAwLCAwLCAwLCAwLCA2NjU5MiwgMTIyMDQsIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCAKKyAgICA0MjU2MSwgMTIwNjI2LCA5ODMyNDUsIDAsIDgxMjAsIDEyMDcwMSwgMCwgMCwgMTI4MDEyLCA0MTA2MywgMCwgMTA2NjQsIDAsIAorICAgIDgzNjksIDAsIDQ1NTEsIDE5NDk2NCwgMzM2OSwgMCwgMCwgOTY3MywgNjYzMzQsIDY1NTgwLCAxMDQ3OCwgMTE4OTYwLCAKKyAgICAxMjUxNywgNTU3LCA5NDU3LCAxMjAzNCwgOTgzNjYyLCA2MzU1LCAxMjUxOSwgNDEwMDQsIDAsIDE5NTAyNSwgNzQwOTQsIDAsIAorICAgIDAsIDc3OTcwLCA5ODM1NjAsIDAsIDEyODE3NSwgMTIxMTEsIDM5MjcsIDAsIDEyNTE1LCAxNDc0LCA2Nzg5MywgNTQ5MiwgCisgICAgNjkyMywgOTIyODEsIDEwNDQxLCA3MzgzNiwgMCwgNDM5OTAsIDU0OTMsIDAsIDc0MzE5LCAwLCA2NjYzNSwgMTIwMTksIDAsIAorICAgIDE2MTgsIDAsIDEyMDQ3NCwgOTY0NSwgMTA0MzAsIDkxNzk1OSwgNTg1MywgMTMwNjMsIDEwMzYzLCAwLCAxMjk1NiwgCisgICAgMTI4MTY5LCAxMjA3MjksIDExMzE0LCA5MTc1ODIsIDEyMDYwLCAwLCA3ODM5MiwgMTI4MjYsIDYzMjksIDAsIDEwNTE0LCAKKyAgICA2NTUxNywgNzQzOTUsIDI3MDcsIDgzMDksIDAsIDEyNzA1NCwgNzgzOTgsIDQzNTcwLCAyNjk3LCA0MzQyMCwgNzgzOTYsIAorICAgIDEyNzA1NywgMjY5NSwgNDIxNzEsIDAsIDAsIDAsIDY3NjE3LCAxMTg5NzEsIDAsIDI2OTMsIDEyMTI1LCAxMjc2NiwgMCwgCisgICAgMTE2NCwgMTI4ODE3LCAwLCA0MTkxOCwgOTgzMTY4LCAxMjc1NDIsIDg2ODcsIDY2MDA5LCAxMjE3OCwgNzA1MywgMTI4MDAxLCAKKyAgICA3NDY5LCAwLCA1MjQ4LCAxMjIxOCwgMTIwNTM4LCA2NDI3LCA0Mjg4NCwgNDExMjMsIDAsIDAsIDQyODczLCA0MTEyNiwgCisgICAgOTk5MSwgNDExMjgsIDc0MzcxLCAxMjcwMzEsIDAsIDk4NzMsIDAsIDQyODc3LCA3OTk0LCA2NDc2MiwgMjA1MywgNDI4NDMsIAorICAgIDY1OTEsIDkzNDAsIDAsIDE1ODksIDAsIDI5NiwgNzQ0MzgsIDc4ODUyLCAwLCA2Nzg0MSwgNzQzNzAsIDAsIDg5MjIsIAorICAgIDEyODA2OCwgNzQ2MDAsIDEyNzAwLCA3NDgzNiwgMCwgMTI1NzksIDAsIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAxMzI2MiwgCisgICAgNjU1OTAsIDUyOTksIDAsIDExNDczLCA1NDQ5LCAxMjUyLCAwLCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgNTI5NSwgCisgICAgOTE3NTY5LCA3NDExNCwgMTIyMywgMTY0MiwgMTc0LCA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIDQxNDEzLCAKKyAgICAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIDQxNDI1LCAxMjcwMjksIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgODA3MCwgCisgICAgNjE1MCwgNjYzNiwgNDM3MCwgMCwgMCwgNzQxNzgsIDc0NTg3LCA3NDExNywgMCwgMCwgMCwgNDk4NiwgMTIxODksIDAsIAorICAgIDY3NjQ4LCAxMjA0OTksIDk0MDAxLCA0MjU3LCAxMjEwNCwgNzc5NDIsIDYyMjAsIDkwMDQsIDY1NTYxLCAwLCA3Nzk0OSwgMCwgCisgICAgNjgxMzUsIDkxNzU3NiwgNzc5NDYsIDAsIDY5Njc5LCA2OTY4NCwgOTg5MCwgNzg1NjEsIDEyOTcxLCA3ODQ1MywgOTI1NTYsIAorICAgIDczODk4LCAxMTk3OSwgNzAwNTEsIDExODkwMCwgOTE3ODk0LCAwLCA5NjM1LCAxMjYwMCwgODg3MSwgMCwgMCwgMCwgNjQ2OSwgCisgICAgNzQyMjcsIDAsIDY1MzA0LCA0Njc5LCAxMDIzMCwgNjQzMDAsIDY0ODY3LCAzNDI3LCA0MjQwLCAwLCAwLCAwLCAwLCAKKyAgICA0MjkxNiwgMCwgMCwgMCwgNzI4MiwgNzg3MjgsIDY1NzMzLCA0NDQ1LCAxMjcxMzgsIDEyODA4MiwgMzQ5NCwgNzQ2MDYsIAorICAgIDY1NTUsIDAsIDc3OTc2LCAwLCAwLCA3ODU2NiwgMCwgOTgzMTg5LCA2NTg5OCwgOTgzMjM4LCA2NTMxMiwgNTQ0NywgMCwgCiAgICAgMTI4OTUsIDY1NTkzLCA0MDEwLCAwLCA0MTEwNiwgMCwgNjQ0NDgsIDAsIDQxMTA1LCAwLCA2NTgyMCwgNjIzMiwgMCwgCiAgICAgMTI4MjgwLCAwLCA0MzYwOCwgMTE5MDkxLCAwLCA2NTM4LCA0MzM1LCA3ODM2NCwgMzk0MSwgNDExMjIsIDExMDYxLCAKLSAgICA3ODM2MywgNjQ4OTIsIDkxMTMsIDE5NTQsIDEyMTU1LCAwLCA0Mjg3OCwgMTE1MDAsIDAsIDAsIDc0NTc4LCAwLCA2NTgzMiwgCi0gICAgMCwgMCwgMCwgNzc5NzUsIDExOTIzMCwgNDU4NiwgMCwgMzUwLCAxMDk1MSwgMCwgNTA5LCAwLCAwLCA5MjMwNywgMCwgMCwgCi0gICAgNTEzMywgMCwgMCwgOTUwMCwgMCwgNDk1NywgNjQ3NDEsIDI0MjIsIDkzNTQsIDAsIDAsIDAsIDI0OTYsIDExNTE2LCA5NDQsIAotICAgIDExODg1MSwgMzg5MCwgMTIxNjgsIDE0MzgsIDAsIDAsIDAsIDQxOTQ3LCAxMjIwLCAxMjA4MjgsIDEyODU1NSwgMCwgMCwgCi0gICAgMTU3MSwgNDI2MzAsIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIDAsIDMxMiwgNDE5ODAsIDAsIDAsIDc4MTIwLCAKLSAgICA4ODc3LCAyNjksIDQ0MjksIDYyNzIsIDk2MTcsIDE0NjAsIDY5NTQsIDc4NjU3LCA0MTEyMCwgNjUxMjEsIDEwODYyLCAKLSAgICA2MDYwLCA0MTExOSwgNDE0MTYsIDc0MzU1LCA0MTczLCAwLCAwLCAwLCAxOTA2LCA5MTc5ODYsIDExNTMyLCA3NDA3MywgMCwgCi0gICAgMCwgMTk4NSwgNjI5NiwgOTU4MiwgOTE3ODk1LCA2NDI4NywgMCwgNzgxMTUsIDExNDI4LCAxNzMwLCAyNDU3LCAwLCAKLSAgICAxOTkxOCwgMTA0NjksIDAsIDAsIDc3MDMsIDg4NDAsIDgwMzUsIDAsIDAsIDkyNDkxLCAwLCA2MTI5LCAwLCAwLCAxMjgyNjgsIAotICAgIDAsIDc4NzQsIDg2ODEsIDExOTA5MiwgMCwgMTMxMzYsIDAsIDAsIDc0Mjc4LCA2Mzg4NiwgMTE4ODgxLCA5NjA1LCA3Mzg5MiwgCi0gICAgMTMyMjAsIDEyODc3NiwgMTIwMjc0LCA1NTE0LCAwLCA5MjI4LCAwLCAwLCAwLCA1MjQwLCA5ODExLCAxMDAxMiwgMzA5NiwgCi0gICAgMCwgMCwgMCwgNjY2NzYsIDY1ODczLCAwLCAwLCAwLCA5NTAxLCAwLCAxMjcyLCA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAKLSAgICAwLCAxNDY3LCAxMDE1OCwgMTAwNDAsIDAsIDk1MTksIDAsIDkxNzgxMiwgMCwgMTE4ODk5LCAxMjE5MywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTk5MzUsIDAsIDkyMTYyLCA2OTY3NiwgMCwgMCwgMCwgNTI3NSwgMCwgMCwgODYzNywgMCwgMCwgMzc4OSwgNjM4ODAsIAotICAgIDExNDcxLCA0MzU1NCwgNjU4NjIsIDExNDc0LCA2NjMzMiwgNjY2MDMsIDEyODEzOCwgMjQyNiwgMTIwNDIsIDkyMTk0LCAwLCAKLSAgICA5NTM3LCAzOTYxLCAxMjExNSwgNzc5NTMsIDI2MDUsIDQ1MDAsIDY0NTYxLCA1NTIyNCwgNDk4MSwgMCwgMCwgNjM4NzYsIAotICAgIDExNjY3LCA0MjY4NiwgNzc5NzMsIDQyMzYyLCA2NDY4NiwgNDQ5OSwgNDE2NDksIDc1ODksIDAsIDAsIDMyMzcsIDAsIAotICAgIDY4MjE1LCAwLCA4NTQxLCA3ODI5OCwgMCwgNDE4NjYsIDAsIDAsIDAsIDAsIDAsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgCi0gICAgNDE5NDAsIDgyOTksIDQxOTQ1LCA3MTMyLCA0MTk0MSwgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgCi0gICAgMCwgNDE2OTksIDEwNzYyLCA0Mzc4MCwgMTI5OTksIDAsIDAsIDgxMDYsIDQxMjgsIDAsIDAsIDQ0OTQsIDAsIDQwMTIsIAotICAgIDEwMzk1LCAwLCA0MzYzMywgNjU0NDcsIDAsIDAsIDExMDA0LCA2OTUsIDczOSwgNjk2LCA3NjExLCAwLCA0Mjc1NSwgCi0gICAgNzQ4MDIsIDkyMjcsIDc1MDYsIDc1MTAsIDkyMjgxLCA2OTEsIDczOCwgNzUxMSwgNzUxMiwgNzUxNSwgMzg2OCwgNjg4LCAKLSAgICA0MTg0NywgNjkwLCAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgOTE3OTExLCAwLCAwLCAzOTg1LCA5MTc5MTIsIAotICAgIDY1ODYwLCA2MzkyMSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDkxNzgwNSwgMTI4MDksIDY0MDYsIDQ2ODUsIDkyNTA1LCAxMDg3OSwgCi0gICAgMTAzNDcsIDQ2ODAsIDYzNDEsIDAsIDM4NTEsIDgxMzIsIDc0MzI1LCAwLCA5MTc5MDcsIDAsIDQxOTU4LCAxMTkxNzYsIAotICAgIDkxNzkwOCwgMCwgMCwgNDI2NTcsIDkyNDY4LCA3NjQzLCA0MjM3MywgMTE3MTQsIDY3NTg3LCA0MzU2OCwgMCwgMTE3MTcsIAotICAgIDc2NTAsIDEwNTk0LCA2NDk1MSwgNzY0NywgNzY0OSwgMTI4MTU1LCA3NjQ2LCAwLCA3ODA4MiwgOTY1MSwgMCwgMzg5MSwgMCwgCi0gICAgMCwgMjMzNywgMTczNSwgNzQzMjQsIDY3ODYwLCAyMzYzLCAwLCAwLCA0MzU2MSwgMCwgMCwgNzQxNDYsIDE4NjAsIDc0OTUsIAotICAgIDc1ODAsIDU4MTIsIDc0OTcsIDc1ODQsIDExOTE0MCwgMTI3ODUzLCAwLCAxMjAzNDcsIDc3MjcsIDAsIDg0OTgsIDY5ODE4LCAKLSAgICA4OTQ5LCAzMDY1LCA0MjcxOSwgNzEzNSwgMTU2OSwgOTIzNzUsIDEyNTM0LCAxMjEyNCwgNzY5MCwgMCwgMTI1MzMsIDAsIAotICAgIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAwLCA3NDgwMCwgMCwgMCwgMTE5ODAsIDEyODY1MCwgMCwgNjM4OTQsIDEyMDc2MCwgCi0gICAgMTIyODIsIDY2MTkyLCAwLCA3NDU5MiwgODg1MCwgNzQyNzUsIDkyMzgsIDEwNjE3LCA5MTc1NDUsIDAsIDkyNjI1LCAwLCAKLSAgICAxMjc5MSwgMCwgMCwgMCwgNDQ0NywgNzM3MzIsIDEyNzkzLCAxMjkwMCwgOTIzNzcsIDEwOTUwLCAwLCA3ODA4NywgMTI3OTAsIAotICAgIDQxNDAwLCAxMTkxMjgsIDY2NjA3LCAxMjc5MiwgNDIyMzIsIDE5NDkzOCwgMTc0NCwgMTI3ODksIDEwMzY2LCAxMjMxNywgCi0gICAgNDEzMTAsIDAsIDQxMzk5LCAwLCAwLCA1NTI1OCwgMCwgMTI2OTAsIDAsIDAsIDQzNjcyLCAxMjc4NDAsIDQxNjUyLCAyOTc0LCAKLSAgICA5MDEwLCAxMTMxNSwgMCwgMjc4LCAwLCA0MTQwNSwgMTE5MjU0LCAwLCAxMDA3NywgNjM4NTMsIDc0NTU3LCA0MjU4NiwgMCwgCi0gICAgMCwgNjAwMiwgMCwgNDM1NTMsIDAsIDY3OTAzLCAwLCAxMjc4NywgNDEzMDgsIDc5MzQsIDY1MzA2LCAwLCAwLCAwLCA4NjQ2LCAKLSAgICAwLCA3NzgyOSwgMCwgMCwgNjQxMywgNjU1MCwgMCwgMTk0MCwgMCwgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAxMDY3OCwgCi0gICAgMTAwNDQsIDAsIDAsIDAsIDY4NjU5LCA2NDAzLCA1NzA3LCAxMDM5MywgMTI3NTMyLCAwLCA2NjYxNCwgMCwgMCwgMCwgCisgICAgNzgzNjMsIDY0ODkyLCA5MTEzLCAxOTU0LCAxMjE1NSwgOTgzNjY1LCA0Mjg3OCwgMTE1MDAsIDAsIDAsIDc0NTc4LCAwLCAKKyAgICA2NTgzMiwgMCwgMCwgMCwgNzc5NzUsIDExOTIzMCwgNDU4NiwgMCwgMzUwLCAxMDk1MSwgMCwgNTA5LCAwLCAwLCA5MjMwNywgCisgICAgMCwgMCwgNTEzMywgMCwgMCwgOTUwMCwgMCwgNDk1NywgNjQ3NDEsIDI0MjIsIDIyMTIsIDk4MzA4MCwgMCwgMCwgMjQ5NiwgCisgICAgMTE1MTYsIDk0NCwgMTE4ODUxLCAzODkwLCAxMjE2OCwgMTQzOCwgMCwgOTgzMTE3LCAwLCA0MTk0NywgMTIyMCwgMTIwODI4LCAKKyAgICAxMjg1NTUsIDAsIDAsIDE1NzEsIDQyNjMwLCA0MTk0OSwgNDI4MDUsIDgyNzAsIDk0MywgNTY0LCAwLCAzMTIsIDQxOTgwLCAKKyAgICA5ODM5MzUsIDAsIDc4MTIwLCA4ODc3LCAyNjksIDQ0MjksIDYyNzIsIDk2MTcsIDE0NjAsIDY5NTQsIDc4NjU3LCA0MTEyMCwgCisgICAgNjUxMjEsIDEwODYyLCA2MDYwLCA0MTExOSwgNDE0MTYsIDc0MzU1LCA0MTczLCAwLCAwLCAwLCAxOTA2LCA5MTc5ODYsIAorICAgIDExNTMyLCA3NDA3MywgMTI3MzM4LCAwLCAxOTg1LCA2Mjk2LCA5NTgyLCA5MTc4OTUsIDY0Mjg3LCAwLCA3ODExNSwgCisgICAgMTE0MjgsIDE3MzAsIDI0NTcsIDkxNzgwOCwgMTk5MTgsIDEwNDY5LCAwLCAwLCA3NzAzLCA4ODQwLCA4MDM1LCAwLCAwLCAKKyAgICA5MjIzMCwgMCwgNjEyOSwgMCwgMTI4NTI4LCAxMjgyNjgsIDAsIDc4NzQsIDg2ODEsIDExOTA5MiwgMCwgMTMxMzYsIDAsIDAsIAorICAgIDcwMTAyLCA2Mzg4NiwgMTE4ODgxLCA5NjA1LCA3MTMwOCwgMTMyMjAsIDEyODc3NiwgMTIwMjc0LCA1NTE0LCAwLCA5MjI4LCAKKyAgICAwLCAwLCAwLCA1MjQwLCA5ODExLCAxMDAxMiwgMzA5NiwgMCwgMCwgOTgzMzQzLCA2NjY3NiwgNjU4NzMsIDAsIDAsIDAsIAorICAgIDk1MDEsIDAsIDEyNzIsIDY0NTM2LCA2NTQ2NSwgNjQ2NTQsIDc0NjcsIDAsIDE0NjcsIDEwMTU4LCAxMDA0MCwgMCwgOTUxOSwgCisgICAgMCwgOTE3ODEyLCAwLCAxMTg4OTksIDEyMTkzLCAwLCAwLCAwLCAwLCA5ODMzNDUsIDE5OTM1LCAwLCA5MjE2MiwgNjk2NzYsIAorICAgIDAsIDAsIDAsIDUyNzUsIDAsIDAsIDg2MzcsIDAsIDAsIDM3ODksIDYzODgwLCAxMTQ3MSwgNDM1NTQsIDY1ODYyLCAxMTQ3NCwgCisgICAgNjYzMzIsIDY2NjAzLCAxMjgxMzgsIDI0MjYsIDEyMDQyLCA5MjE5NCwgOTgzOTAyLCA5NTM3LCAzOTYxLCAxMjExNSwgCisgICAgNzc5NTMsIDI2MDUsIDQ1MDAsIDY0NTYxLCA1NTIyNCwgNDk4MSwgMCwgMCwgNjM4NzYsIDExNjY3LCA0MjY4NiwgNzc5NzMsIAorICAgIDQyMzYyLCA2NDY4NiwgNDQ5OSwgNDE2NDksIDc1ODksIDAsIDAsIDMyMzcsIDAsIDY4MjE1LCA5MTc5MDQsIDg1NDEsIAorICAgIDc4Mjk4LCA3MDAzNCwgNDE4NjYsIDAsIDAsIDAsIDAsIDY5OTI0LCA0MzU1NSwgMjgyMywgOTU1OSwgMTAwNjAsIDQxOTQwLCAKKyAgICA4Mjk5LCA0MTk0NSwgNzEzMiwgNDE5NDEsIDMzMDgsIDcxOTAsIDY0ODgwLCA4NjE0LCA2NTIyMCwgNDE0OTMsIDAsIAorICAgIDQxNjk5LCAxMDc2MiwgNDM3ODAsIDEyOTk5LCAwLCAwLCA4MTA2LCA0MTI4LCAwLCA2Mjc0LCA0NDk0LCAwLCA0MDEyLCAKKyAgICAxMDM5NSwgOTgzNTkxLCA0MzYzMywgNjU0NDcsIDEyNjUxMSwgMCwgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIDc2MTEsIDAsIAorICAgIDQyNzU1LCA3NDgwMiwgOTIyNywgNzUwNiwgNzUxMCwgNjk5MzcsIDY5MSwgNzM4LCA3NTExLCA3NTEyLCA3NTE1LCAzODY4LCAKKyAgICA2ODgsIDQxODQ3LCA2OTAsIDI1NDgsIDczNywgOTc0LCA4MDAzLCA3NDA2LCA5MTc5MTEsIDAsIDEyODY4OCwgMzk4NSwgCisgICAgOTE3OTEyLCA2NTg2MCwgNjM5MjEsIDcwNTEsIDY5Nzc3LCA0NjgyLCA5MTc4MDUsIDEyODA5LCA2NDA2LCA0Njg1LCAKKyAgICA5MjUwNSwgMTA4NzksIDEwMzQ3LCA0NjgwLCA2MzQxLCAwLCAzODUxLCA4MTMyLCA3NDMyNSwgMCwgOTE3OTA3LCAwLCAKKyAgICA0MTk1OCwgMTE5MTc2LCA5MTc5MDgsIDAsIDAsIDQyNjU3LCA5MjQ2OCwgNzY0MywgNDIzNzMsIDExNzE0LCA2NzU4NywgCisgICAgNDM1NjgsIDk4MzE3NSwgMTE3MTcsIDc2NTAsIDEwNTk0LCA2NDk1MSwgNzY0NywgNzY0OSwgMTI4MTU1LCA3NjQ2LCAwLCAKKyAgICA3ODA4MiwgOTY1MSwgMCwgMzg5MSwgMCwgMCwgMjMzNywgMTczNSwgNzQzMjQsIDY3ODYwLCAyMzYzLCA5ODMxMzUsIDAsIAorICAgIDQzNTYxLCAwLCAwLCA3NDE0NiwgMTg2MCwgNzQ5NSwgNzU4MCwgNTgxMiwgNzQ5NywgNzU4NCwgMTE5MTQwLCAxMjc4NTMsIAorICAgIDAsIDEyMDM0NywgNzcyNywgMCwgODQ5OCwgNjk4MTgsIDg5NDksIDMwNjUsIDQyNzE5LCA3MTM1LCAxNTY5LCA5MjM3NSwgCisgICAgMTI1MzQsIDEyMTI0LCA3NjkwLCAwLCAxMjUzMywgOTgzODcwLCA2NDE4LCA0NTQzLCA3ODA4NiwgNjk2OSwgMCwgNzQ4MDAsIAorICAgIDAsIDY3OTc0LCAxMTk4MCwgMTI4NjUwLCA5ODM3OTIsIDYzODk0LCAxMjA3NjAsIDEyMjgyLCA2NjE5MiwgMCwgNzQ1OTIsIAorICAgIDg4NTAsIDc0Mjc1LCA5MjM4LCAxMDYxNywgOTE3NTQ1LCAwLCA5MjYyNSwgMCwgMTI3OTEsIDAsIDAsIDEyNzg0MywgNDQ0NywgCisgICAgNzM3MzIsIDEyNzkzLCAxMjkwMCwgOTIzNzcsIDEwOTUwLCAwLCA3ODA4NywgMTI3OTAsIDQxNDAwLCAxMTkxMjgsIDY2NjA3LCAKKyAgICAxMjc5MiwgNDIyMzIsIDE5NDkzOCwgMTc0NCwgMTI3ODksIDEwMzY2LCAxMjMxNywgNDEzMTAsIDk4Mzg2MCwgNDEzOTksIDAsIAorICAgIDAsIDU1MjU4LCAwLCAxMjY5MCwgMCwgMCwgNDM2NzIsIDEyNzg0MCwgNDE2NTIsIDI5NzQsIDkwMTAsIDExMzE1LCAwLCAKKyAgICAyNzgsIDAsIDQxNDA1LCAxMTkyNTQsIDAsIDEwMDc3LCA2Mzg1MywgNzQ1NTcsIDQyNTg2LCAwLCAwLCA2MDAyLCAwLCAKKyAgICA0MzU1MywgMCwgNjc5MDMsIDAsIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDAsIDAsIDAsIDg2NDYsIDk4MzE4NiwgCisgICAgNzc4MjksIDcxMzYwLCAwLCA2NDEzLCA2NTUwLCAwLCAxOTQwLCAwLCA0MzYzNywgMjIwLCA2NTE5MywgNDM1NTEsIDEwNjc4LCAKKyAgICAxMDA0NCwgMTI4MzIyLCAwLCAwLCA2ODY1OSwgNjQwMywgNTcwNywgMTAzOTMsIDEyNzUzMiwgMCwgNjY2MTQsIDAsIDAsIDAsIAogICAgIDEwMjk3LCAwLCAzNzQyLCAwLCAzOTU5LCAwLCAwLCAwLCAyNDY3LCAwLCA2MDAzLCA2Mzg0NCwgNjY2MywgODA0MCwgMCwgCi0gICAgNjM4NDUsIDQxODIsIDc4MTcxLCA0Njc2LCAxMjA1MDEsIDAsIDAsIDI1MTAsIDAsIDEwMjA4LCA3ODE2OCwgOTIzNjEsIAotICAgIDExNTQwLCA0MzU0NiwgNjY5MiwgMCwgNDEwNjAsIDAsIDAsIDkwODMsIDAsIDAsIDc4MTQ0LCAxNTU5LCA2MzgzMSwgOTY3NywgCi0gICAgMTIwMjYwLCAwLCA2NTI1NiwgMCwgNzQwNzAsIDAsIDAsIDM2NSwgMTIwNTYsIDQzMDI3LCAxMjA0MjMsIDQxNzE2LCAKKyAgICA0Mzc1OCwgNDE4MiwgNzgxNzEsIDQ2NzYsIDEyMDUwMSwgMCwgMCwgMjUxMCwgMCwgMTAyMDgsIDc4MTY4LCA5MjM2MSwgCisgICAgMTE1NDAsIDQzNTQ2LCA2NjkyLCAwLCA0MTA2MCwgMCwgNDY2OCwgOTA4MywgMCwgMCwgNzgxNDQsIDE1NTksIDYzODMxLCAKKyAgICA5Njc3LCAxMjAyNjAsIDAsIDY1MjU2LCAwLCA3NDA3MCwgMCwgMCwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIAogICAgIDEyODIzNiwgMCwgMTIwNDcyLCA1NTE2LCAyODQ1LCA3NzE3LCA4MDM2LCA0MTcxNywgNzM4MjcsIDU0NCwgMTIwNDUsIAotICAgIDYyNzgsIDAsIDU1MTUsIDAsIDAsIDAsIDY1MzM5LCA0MzIyMSwgNjUxOTQsIDAsIDU1MTcsIDAsIDAsIDc0ODQxLCA2Nzg4NCwgCi0gICAgMCwgNjc4OTAsIDY3ODg1LCA2Nzg4MCwgNjc4ODEsIDY3ODgyLCA2Nzg4MywgMCwgMCwgNjc4NzksIDEyNzE4OCwgMTkwMiwgCi0gICAgNjc4ODcsIDk2MzgsIDEyOTc2LCAwLCAxMjQ4MywgMTIzNjgsIDQxNzY5LCA0MjcyNiwgNDE3NjUsIDEyODgxOSwgNjY2NywgCi0gICAgNjc4NzQsIDc1NTYsIDY3ODc4LCA3NDM1MSwgMTEyNjQsIDk4OSwgNDI2NzcsIDY3ODg5LCAwLCAxMzExLCA5MTc5NjYsIAotICAgIDQzMjYsIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAxMjg4ODAsIDY5MTcsIDc4MTU1LCAwLCA5NDksIDc4MTYyLCAwLCAKLSAgICA2MTQ4LCA4NjA1LCA0MjI1MywgNzgxNzcsIDAsIDAsIDQyNzE1LCAwLCAwLCAwLCA2Mzg3MSwgMCwgNDE3OTYsIDEyNjksIAotICAgIDY1MzAsIDAsIDY1MDU3LCAwLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDAsIDQ0MzEsIDQzMzEsIDAsIDEyODY3NSwgNDE4MzQsIAotICAgIDUyNzksIDAsIDEwMzM2LCA4MzEyLCAwLCA0MjcwMSwgMTI4ODI1LCAwLCA3ODE2NSwgNjYwMzYsIDAsIDAsIDY0MjgsIAotICAgIDQyMjcwLCAwLCAwLCA0MzA1OSwgNDI2NjYsIDUyNTYsIDEwNjcsIDI1NSwgMTIxMzEsIDAsIDk0OTMsIDAsIDQxMDE0LCAKLSAgICAxMTc5MywgMCwgMCwgNzQzOTQsIDQzNDYwLCAxMDY1MywgNDI3MjMsIDAsIDExOTYzMiwgMCwgNjU2MCwgNzAxNiwgNzQyNzQsIAotICAgIDAsIDQzNTU2LCAzOTI5LCA3MzkwMCwgNjYxNCwgMjc2OCwgOTI1MDQsIDk3NDYsIDUxMzUsIDExODExLCAxMjc5NiwgCi0gICAgMTE5NTMsIDAsIDY5NzYxLCA1MTM5LCAzNDYsIDc0MzAzLCA2MzA1LCAxMjc5NSwgNDY3NSwgNTE2OCwgNzg1NTIsIAotICAgIDEyNzc1MywgNzQzMTUsIDc0MzYxLCA4MjUzLCA4ODE3LCAxMTM2LCAwLCA0MzU2MywgOTIyMzIsIDAsIDE5NDc1MCwgNzM5MiwgCi0gICAgODIzMCwgOTM2NSwgMCwgMCwgMCwgMCwgMCwgNDA0MSwgMCwgMjM1NywgNDMyNDAsIDEyNzg2LCAyMjksIDExOTg4NSwgCi0gICAgMTE5ODg0LCA0NDAwNCwgNzE0MiwgMTE5ODgxLCAxMjM1MCwgNjU1NTQsIDExOTg4MiwgMTE5ODc3LCAxMTk4NzYsIDEyNzg1LCAKLSAgICA2Mzg2MywgNDM3OTUsIDc3NzAsIDEwNzEyLCA2NDg1MywgMTI2ODYsIDExODkxNiwgNDIzNzUsIDAsIDEyNzIzOCwgNjYzNTIsIAotICAgIDEwNDcwLCAwLCAxMTA1OSwgMTA3OTEsIDkxNzk0NCwgNDUwLCAwLCAwLCAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAKLSAgICAxMjMzLCAwLCA0NDAwOSwgNzgyODQsIDY2MzM4LCAwLCAwLCAxODM5LCAxMTg3OTksIDAsIDEwOTI3LCAxNzAxLCAwLCAKKyAgICA2Mjc4LCAwLCA1NTE1LCAwLCAwLCA5ODMwNTEsIDY1MzM5LCA0MzIyMSwgMjIxMSwgMCwgNTUxNywgMCwgMCwgNzQ4NDEsIAorICAgIDY3ODg0LCAwLCA2Nzg5MCwgNjc4ODUsIDY3ODgwLCA2Nzg4MSwgNjc4ODIsIDY3ODgzLCAwLCAwLCA2Nzg3OSwgMTI3MTg4LCAKKyAgICAxOTAyLCA2Nzg4NywgOTYzOCwgMTI5NzYsIDEyNjU0NiwgMTI0ODMsIDEyMzY4LCA0MTc2OSwgNDI3MjYsIDQxNzY1LCAKKyAgICA3MzYxLCA2NjY3LCA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCA0MjY3NywgNjc4ODksIDAsIDEzMTEsIAorICAgIDkxNzk2NiwgNDMyNiwgMTEwMDAsIDYzODI0LCAxMzA2OCwgMTA5MzIsIDEyODg4MCwgNjkxNywgNzgxNTUsIDAsIDk0OSwgCisgICAgNzgxNjIsIDAsIDYxNDgsIDg2MDUsIDQyMjUzLCA3ODE3NywgMCwgMCwgNDI3MTUsIDAsIDAsIDAsIDYzODcxLCAwLCAKKyAgICA0MTc5NiwgMTI2OSwgNjUzMCwgMCwgNjUwNTcsIDAsIDUxNDQsIDEyMjIxLCA0MjcxNiwgMCwgNDQzMSwgNDMzMSwgCisgICAgOTgzNzIwLCAxMjg2NzUsIDQxODM0LCA1Mjc5LCAwLCAxMDMzNiwgODMxMiwgMCwgNDI3MDEsIDEyODgyNSwgMCwgNzgxNjUsIAorICAgIDY2MDM2LCAwLCAwLCA2NDI4LCA0MjI3MCwgMCwgOTgzNTk2LCA0MzA1OSwgNDI2NjYsIDUyNTYsIDEwNjcsIDI1NSwgCisgICAgMTIxMzEsIDk4MzcxMywgOTQ5MywgOTgzOTU5LCA0MTAxNCwgMTE3OTMsIDE5NDkyMCwgMCwgNzQzOTQsIDQzNDYwLCAKKyAgICAxMDY1MywgNDI3MjMsIDk4Mzg0NSwgMTE5NjMyLCAwLCA2NTYwLCA3MDE2LCA3NDI3NCwgOTgzNjE1LCA0MzU1NiwgMzkyOSwgCisgICAgNjc5NzcsIDY2MTQsIDI3NjgsIDkyNTA0LCA5NzQ2LCA1MTM1LCAxMTgxMSwgMTI3OTYsIDExOTUzLCAwLCA2OTc2MSwgCisgICAgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIDUxNjgsIDc4NTUyLCAxMjc3NTMsIDc0MzE1LCA3NDM2MSwgCisgICAgODI1MywgODgxNywgMTEzNiwgMCwgNDM1NjMsIDkyMjMyLCAwLCAxOTQ3NTAsIDczOTIsIDgyMzAsIDkzNjUsIDAsIDAsIAorICAgIDk4MzYwNywgMCwgMCwgNDA0MSwgMCwgMjM1NywgNDMyNDAsIDEyNzg2LCAyMjksIDExOTg4NSwgMTE5ODg0LCA0NDAwNCwgCisgICAgNzE0MiwgMTE5ODgxLCAxMjM1MCwgNjU1NTQsIDExOTg4MiwgMTE5ODc3LCAxMTk4NzYsIDEyNzg1LCA2Mzg2MywgNDM3OTUsIAorICAgIDc3NzAsIDEwNzEyLCA2NDg1MywgMTI2ODYsIDExODkxNiwgNDIzNzUsIDAsIDEyNzIzOCwgNjYzNTIsIDEwNDcwLCAwLCAKKyAgICAxMTA1OSwgMTA3OTEsIDkxNzk0NCwgNDUwLCAxMTkzMjgsIDAsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIDEyMzMsIDAsIAorICAgIDQ0MDA5LCA3ODI4NCwgNjYzMzgsIDAsIDAsIDE4MzksIDExODc5OSwgOTgzMjE3LCAxMDkyNywgMTcwMSwgOTgzNjU1LCAKICAgICAyMzg4LCA0MTc0OSwgNDE3NjEsIDU0NTMsIDgzNjEsIDExOTg2NSwgNDE3NTgsIDU0NDQsIDQxNzYzLCA2NDg4OSwgNzE0MywgCi0gICAgOTI0OTMsIDc4Njc3LCAwLCA5MjQyOSwgNzgxNzQsIDY2NDMyLCA4ODAxLCAzMDUzLCA0MzQwLCAwLCAwLCA2NTgxMiwgCi0gICAgOTE3ODMxLCAwLCA0MTgyNCwgMCwgMTIwMjAzLCAxOTQ4MDAsIDE5NDgwMywgNDI3MDAsIDE5NDgwNSwgMTI3OTgwLCAKKyAgICA5MjQ5MywgNzg2NzcsIDAsIDkyNDI5LCA3ODE3NCwgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDk4MzA0NCwgMCwgNjU4MTIsIAorICAgIDkxNzgzMSwgMCwgNDE4MjQsIDY3OTg1LCAxMjAyMDMsIDE5NDgwMCwgMTk0ODAzLCA0MjcwMCwgMTk0ODA1LCAxMjc5ODAsIAogICAgIDE5NDgwNywgNzg2NzYsIDkyMzU2LCAxOTQ4MDgsIDAsIDAsIDQ0OTMsIDQzMzYsIDAsIDIzMTQsIDQzNjAyLCA3ODgyNiwgCi0gICAgMTE5MzI1LCAxOTQ4MTEsIDQyNDM5LCA2NDYzOCwgNDIzMjcsIDQzNTI4LCA0NDg5LCAxOTQ3OTEsIDAsIDE5NDc5MywgCi0gICAgMTkxMiwgNDIzODUsIDEwMzA2LCAxMDM3MCwgMCwgMCwgODg2NywgMTAyNTAsIDEwMjU4LCAyNzEyLCAxNjM1LCA3ODgyMSwgCi0gICAgMTQxMCwgOTI2NzEsIDAsIDExODg3OCwgMCwgMCwgOTkxOSwgMCwgNTU5LCAxMjgxNTcsIDQxODI1LCAxMjc5NzUsIDc4MTg4LCAKLSAgICA0ODkyLCA3NDAxNiwgMTk0NzgxLCA2NTQyLCA0MTk1NywgMTI4ODY1LCA1Nzc3LCAwLCA3NTksIDY1NzQ5LCAyMDc5LCAKLSAgICA2NTI0OCwgMTI3ODgsIDY0NDg3LCA2NDU1MiwgMCwgMTAyMjMsIDQyMDYyLCAwLCAwLCAwLCAzNjY4LCA2NTc1NCwgNDM1NjAsIAotICAgIDEyMjI2LCAwLCA2NTE0OSwgMjM0MCwgNDE5NTksIDE5NDc4NiwgMTk0Nzg1LCAxOTQ3ODgsIDQzNjE4LCA2NTc0NywgCi0gICAgMTA5MzcsIDI5NjIsIDAsIDIzMjEsIDM1ODcsIDY1NzQ1LCA5MjQzNiwgODkyMSwgOTk1MiwgMCwgMCwgNDI3MTQsIDk5NTEsIAotICAgIDQzNDA5LCAxOTQ3NzAsIDI5NDksIDY2MDEyLCAxOTQ3NzUsIDE5NDc3NCwgMjk1OCwgNjgzNTksIDQxODIwLCA0MzAzOCwgCi0gICAgMjM5NSwgMCwgOTk3NiwgMTIwMDQzLCAxMjAwNTAsIDEyMDA1OCwgNjgyMjAsIDEyODE0MywgNDI4MDksIDQyODA3LCAwLCAKLSAgICAxMjAwNDYsIDEwMTk4LCA0MTUwLCA2NDM3MSwgODMxOCwgNDE3OTAsIDAsIDQxODk4LCAyMzYwLCA0MTc5NCwgOTE3OTQyLCAKLSAgICAwLCAxMjc4MTgsIDAsIDAsIDI0MTgsIDAsIDI0MTEsIDExMzM2LCA3OTksIDYzODIzLCAxMDI3NiwgMTAzMDgsIDEwMzcyLCAKLSAgICA5MTc1NDEsIDQxNzcyLCA0MjgxMywgMjMxNywgMTAyNjAsIDExODk4MCwgNTUyODQsIDkyMjAzLCAwLCAxMDM4NCwgMCwgMCwgCi0gICAgMCwgNzc1MywgMjM1MSwgNjY1NSwgNjQ0ODksIDAsIDAsIDc3ODcyLCA0NDQzLCA0Mjc3OSwgMjMwLCAwLCAwLCA0MzU0OSwgCi0gICAgNDg1NSwgNDIxNTAsIDY1NzM5LCA1NDQxLCA0MTg5NiwgMTAyODgsIDEwMzIwLCAwLCA4NTUsIDcwNDYsIDYxMDksIDY1MDQ1LCAKLSAgICA2MzgzOSwgNzgxOTgsIDIwNDksIDEwMDk4LCAwLCA3NDE0NSwgMTI3OTQzLCAxMDI2NCwgMTAyODAsIDkxODQsIDEwMzc2LCAKLSAgICA3MDEzLCA0NDY3LCAwLCAwLCAwLCA0MTg4NywgMCwgNDg2MiwgOTczNSwgNjUzNywgMTIwNTkxLCA3NDI4NiwgMzkxNCwgCi0gICAgOTIxNzgsIDAsIDkwNjUsIDEyOTYxLCAwLCAwLCA5MjI1MywgMCwgMjg5LCAwLCA0Njk0LCAxMTQyMCwgNDY5MCwgMCwgCi0gICAgMTIwNTE0LCA5MTc5NzgsIDQ2OTMsIDAsIDQyNzI0LCAwLCA0Njg4LCAxMjA0NTQsIDAsIDAsIDExOTYyOSwgODIzOCwgCi0gICAgMzExMCwgMTIwMTYyLCAwLCAxMjAxNjMsIDY1MjgsIDEyNzU1MywgNDMwMzUsIDEyMDE2MSwgMjE4LCAwLCAxNTIwLCAwLCAKLSAgICA0Nzg2LCAwLCA0MzIyNSwgNDYwMiwgMCwgNzgxNjcsIDEwMDg4LCA2NTQ4LCAwLCAxMjAxNTYsIDQzOTc4LCA4OTg4LCAKLSAgICA4ODg4LCAwLCAwLCAwLCAwLCAxMDY2NiwgMCwgNzM5MDIsIDY5NzQwLCAwLCAwLCA5OTc1LCAwLCAxMTk5MDIsIDQ2ODksIAotICAgIDg5MzIsIDAsIDY1NTYwLCAxMTkyMDksIDc0NDQxLCA3ODgxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwNjUsIAotICAgIDgyMDcsIDAsIDkyNjEzLCAxMjgwMTEsIDAsIDY2MiwgMCwgOTI0NCwgMTk0ODYzLCAwLCAxMTkyNjEsIDAsIDAsIDAsIDAsIAotICAgIDQxOTI5LCAwLCAwLCA2NjY3NCwgNDE5MjYsIDEyMDQwOCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIDE5NDg2MiwgMCwgNTIsIAotICAgIDEzMTE4LCA2NDc1LCAwLCAxMjAzNDEsIDEyMDk1LCAxMDIyNSwgNDgxMiwgOTI1NzgsIDAsIDAsIDc0MDg1LCAwLCAzOTc4LCAKLSAgICAwLCA5MTc5NDUsIDEyNzgyMywgMTE1ODIsIDEyMDc2MSwgMTIyODEsIDAsIDY1NDQsIDEzMjQxLCAwLCA2OTc4MiwgCisgICAgMTE5MzI1LCAxOTQ4MTEsIDQyNDM5LCA2NDYzOCwgNDIzMjcsIDQzNTI4LCA0NDg5LCA3MTMzMSwgMCwgMTk0NzkzLCAxOTEyLCAKKyAgICA0MjM4NSwgMTAzMDYsIDEwMzcwLCAwLCAwLCA4ODY3LCAxMDI1MCwgMTAyNTgsIDI3MTIsIDE2MzUsIDc4ODIxLCAxNDEwLCAKKyAgICA5MjY3MSwgOTgzMjQ0LCAxMTg4NzgsIDAsIDAsIDk5MTksIDEyMDUyOCwgNTU5LCAxMjgxNTcsIDQxODI1LCAxMjc5NzUsIAorICAgIDc4MTg4LCA0ODkyLCA3NDAxNiwgMTk0NzgxLCA2NTQyLCA0MTk1NywgMTI4ODY1LCA1Nzc3LCAwLCA3NTksIDY1NzQ5LCAKKyAgICAyMDc5LCA2NTI0OCwgMTI3ODgsIDY0NDg3LCA2NDU1MiwgMCwgMTAyMjMsIDQyMDYyLCAwLCAwLCAxMjY1NzMsIDM2NjgsIAorICAgIDY1NzU0LCA0MzU2MCwgMTIyMjYsIDY3OTkxLCA2NTE0OSwgMjM0MCwgNDE5NTksIDE5NDc4NiwgMTk0Nzg1LCAxOTQ3ODgsIAorICAgIDQzNjE4LCA2NTc0NywgMTA5MzcsIDI5NjIsIDAsIDIzMjEsIDM1ODcsIDY1NzQ1LCA5MjQzNiwgODkyMSwgOTk1MiwgMCwgMCwgCisgICAgNDI3MTQsIDk5NTEsIDQzNDA5LCAxOTQ3NzAsIDI5NDksIDY2MDEyLCAxOTQ3NzUsIDE5NDc3NCwgMjk1OCwgNjgzNTksIAorICAgIDQxODIwLCAyMzAwLCAyMzk1LCAxMjg1NjMsIDk5NzYsIDEyMDA0MywgMTIwMDUwLCAxMjAwNTgsIDY4MjIwLCAxMjgxNDMsIAorICAgIDQyODA5LCA0MjgwNywgMCwgMTIwMDQ2LCAxMDE5OCwgNDE1MCwgNjQzNzEsIDgzMTgsIDQxNzkwLCA2Nzk3NiwgNDE4OTgsIAorICAgIDIzNjAsIDQxNzk0LCA5MTc5NDIsIDcxMzE0LCAxMjc4MTgsIDAsIDAsIDI0MTgsIDk4MzA5OCwgMjQxMSwgMTEzMzYsIDc5OSwgCisgICAgNjM4MjMsIDEwMjc2LCAxMDMwOCwgMTAzNzIsIDkxNzU0MSwgNDE3NzIsIDQyODEzLCAyMzE3LCAxMDI2MCwgMTE4OTgwLCAKKyAgICA1NTI4NCwgOTIyMDMsIDAsIDEwMzg0LCA5ODMyMTgsIDAsIDAsIDc3NTMsIDIzNTEsIDY2NTUsIDY0NDg5LCA2OTkzMSwgMCwgCisgICAgNzc4NzIsIDQ0NDMsIDQyNzc5LCAyMzAsIDAsIDAsIDQzNTQ5LCA0ODU1LCA0MjE1MCwgNjU3MzksIDU0NDEsIDQxODk2LCAKKyAgICAxMDI4OCwgMTAzMjAsIDAsIDg1NSwgNzA0NiwgNjEwOSwgNjUwNDUsIDYzODM5LCA3ODE5OCwgMjA0OSwgMTAwOTgsIDAsIAorICAgIDc0MTQ1LCAxMjc5NDMsIDEwMjY0LCAxMDI4MCwgOTE4NCwgMTAzNzYsIDcwMTMsIDQ0NjcsIDAsIDAsIDAsIDQxODg3LCAwLCAKKyAgICA0ODYyLCA5NzM1LCA2NTM3LCAxMjA1OTEsIDc0Mjg2LCAzOTE0LCA5MjE3OCwgOTM5NzYsIDkwNjUsIDEyOTYxLCAwLCAwLCAKKyAgICA5MjI1MywgMCwgMjg5LCAwLCA0Njk0LCAxMTQyMCwgNDY5MCwgMCwgMTIwNTE0LCA5MTc5NzgsIDQ2OTMsIDczODkzLCAKKyAgICA0MjcyNCwgMCwgNDY4OCwgMTIwNDU0LCAwLCAwLCA2Nzk5NCwgODIzOCwgMzExMCwgMTIwMTYyLCA5ODM4OTksIDEyMDE2MywgCisgICAgNjUyOCwgMTI3NTUzLCA0MzAzNSwgNjk4OTgsIDIxOCwgMCwgMTUyMCwgMCwgNDc4NiwgMCwgNDMyMjUsIDQ2MDIsIDAsIAorICAgIDc4MTY3LCAxMDA4OCwgNjU0OCwgMCwgMTIwMTU2LCA0Mzk3OCwgODk4OCwgODg4OCwgMCwgMCwgMCwgMCwgMTA2NjYsIDAsIAorICAgIDczOTAyLCA2OTc0MCwgMCwgMCwgOTk3NSwgMTI4MDM5LCAxMTk5MDIsIDQ2ODksIDg5MzIsIDAsIDY1NTYwLCAxMTkyMDksIAorICAgIDc0NDQxLCA3ODgxMCwgMCwgMCwgNjc5ODcsIDAsIDAsIDAsIDY3OTg5LCAwLCAxMDA2NSwgODIwNywgMCwgOTI2MTMsIAorICAgIDEyODAxMSwgMCwgNjYyLCAwLCA5MjQ0LCAxOTQ4NjMsIDAsIDExOTI2MSwgOTgzNDIwLCAwLCAwLCAwLCA0MTkyOSwgMCwgMCwgCisgICAgNjY2NzQsIDQxOTI2LCAxMjA0MDgsIDEyMDQ0MywgMTA1MTMsIDY0NjM3LCAxOTQ4NjIsIDY4MDEzLCA1MiwgMTMxMTgsIAorICAgIDY0NzUsIDAsIDEyMDM0MSwgMTIwOTUsIDEwMjI1LCA0ODEyLCA5MjU3OCwgMCwgNjc5OTIsIDc0MDg1LCAwLCAzOTc4LCAwLCAKKyAgICA5MTc5NDUsIDEyNzgyMywgMTE1ODIsIDEyMDc2MSwgMTIyODEsIDAsIDY1NDQsIDEzMjQxLCA5Mzk2MSwgNjk3ODIsIAogICAgIDEyODU1NywgMTk0ODYwLCAxMTc2NSwgNjUyNTgsIDEwMzY5LCAwLCAxNTg1LCA3MTkyLCAxMDI0OSwgNDIyLCAxNTAwLCAKICAgICAyMDM2LCA5ODYsIDE5NDg1OSwgNjQzOTQsIDU3ODEsIDU1OTksIDY0Mjk0LCAyNDk0LCAxMjA0NTAsIDQ4NjEsIDc0MDIxLCAKLSAgICA2NDMzNCwgNzgyMDMsIDEyNzgwOCwgMCwgOTIyNjYsIDY1MTAyLCA4OTYxLCA2NTg0MiwgMTAyNDMsIDEwMjQ1LCA5MTc5MzMsIAorICAgIDY0MzM0LCA3ODIwMywgMTI3ODA4LCAwLCA5MjI2NiwgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIDc0MTkxLCAKICAgICAxMjA0MTAsIDAsIDEyMDQ1MywgNjQ4MjEsIDk0NzgsIDI1MDgsIDkyNjgzLCAwLCAyMDIsIDEyODI0NiwgNzQxMzEsIDEyNDIsIAogICAgIDY1NTE0LCAwLCA2Mzk0MCwgMTI4NzA2LCA2NDUzMywgMTIwMTI5LCAwLCA2Nzg0MiwgMTE5OTAsIDkyNDMwLCA2MzkzOSwgCi0gICAgNDMzNzUsIDY1NDQwLCAyNTA0LCAwLCA3ODY3MSwgNjQ4MjksIDAsIDY5NDMsIDkxNzkzNCwgNTg1OSwgMCwgMjg1OCwgMCwgCi0gICAgNzQyOTQsIDAsIDY5MjM5LCAwLCAxMTkwMjcsIDEyOTkyLCAyNzUzLCAxOTM2LCA3NDQ5MSwgOTI1NzQsIDI3NTEsIDEyNjYyLCAKLSAgICAyNzYzLCA4OTUzLCA2NDcwMSwgMTA3MzEsIDEyOTIyLCA3MDUyLCA5MTc4MzksIDAsIDAsIDAsIDYzOTIwLCA3NDEyOCwgCi0gICAgMjg1NiwgMTE5OTEwLCA0NywgMTE5OTExLCAxMjY5ODYsIDY1ODU4LCAwLCAwLCAwLCA3ODk5LCAwLCA4NDE3LCA0Mzc5OCwgCi0gICAgNzA3MiwgMCwgMCwgNDAzMywgMTI4MTY0LCA0Mzk5MiwgMCwgMCwgMjEyLCA2NDYwMCwgMTkwMywgMTIzMjAsIDAsIDAsIDAsIAotICAgIDAsIDg5MTUsIDI3NTksIDk0NSwgNjY4OSwgMCwgMCwgMCwgMCwgMTI5MSwgNzQ4MjgsIDAsIDAsIDk1MzEsIDEzMTU1LCAKLSAgICA4NTA1LCA2ODM3OSwgMTIwNjIsIDAsIDAsIDY1NDg3LCA5MjE4OSwgNDE4MzcsIDEyMDYxMSwgMTIwNDMyLCAwLCAwLCAwLCAKLSAgICAxMjA0MzMsIDAsIDYzOTM1LCA3Mzk2MiwgMTIwODA2LCA2NDc4NywgNDM1MjQsIDAsIDY0NDI2LCAwLCAxOTQ5NDgsIDAsIDAsIAotICAgIDY1NjY0LCA2NjkzLCA5ODQzLCAwLCA4Njc0LCAxMTk4ODcsIDEyODgxMiwgOTI3MTUsIDAsIDEyNjI0LCAwLCAxNjczLCAKLSAgICA0ODExLCA5MjM4MywgNTk4NiwgOTMzOCwgMzA0NiwgNzQ0ODAsIDU5ODUsIDkxNzkyOCwgMTE5NTk4LCA5ODIwLCAwLCAKLSAgICAxMjE4NywgMCwgMCwgNTk4NCwgMCwgNDMzMDgsIDQzOTMsIDAsIDAsIDAsIDAsIDAsIDc0ODI2LCA2NDczMywgMCwgMCwgCi0gICAgMzQ5MSwgMCwgMCwgMTI4MjE5LCAzNTE0LCA2NTQ4NSwgMCwgNzQ5MiwgMCwgNzQ2MDUsIDkyNDgzLCA3NTE0LCAwLCAwLCAKLSAgICAxOTQ3MzEsIDc1MDIsIDc1ODcsIDY4MzUzLCAwLCAwLCA2MzkyNSwgMCwgNzYxMCwgMjE5LCAwLCAwLCA2OTIsIDQzNTg4LCAKLSAgICA3NDQzMywgNDE2MzUsIDQzMjQxLCA5Njg4LCA3MTQ3LCA5NTM1LCAwLCAwLCAwLCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCAKLSAgICAwLCA3MTQ5LCA3NDUzLCAwLCA4MDEzLCAwLCA5MjMwMSwgMCwgODg5NSwgNTI1MywgMCwgNTQ1OCwgMCwgMjg2NiwgMCwgCi0gICAgMTI3ODYwLCA2NTExMSwgNjg0MzMsIDY3MDAsIDEyMDQ4NCwgMCwgMCwgMCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCAKLSAgICA3MDU5LCAwLCAwLCA5NjA0LCA3ODcwMCwgNzQ0MSwgNjM4MjYsIDc4NzA2LCAxMTg5NDEsIDY0MzkyLCAxOTQ3MzUsIDAsIAotICAgIDI4NDQsIDAsIDQxOTc0LCAwLCAxMjEzOSwgMCwgMCwgMCwgMzM1OCwgNjUyOTUsIDAsIDMxMDQsIDE5NDczNCwgMCwgCi0gICAgMTk0NzY1LCAwLCA1MzA4LCAwLCAyOTAsIDAsIDAsIDI4NjIsIDI3OTIsIDE5NTA4OCwgMCwgMCwgMzI2OCwgNjY1OTEsIDAsIAotICAgIDY1NTIsIDQyMzY3LCA3MDM1LCAxMjA1NTgsIDAsIDAsIDE4MTQsIDAsIDEwMjQwLCA5MjMzOCwgNzQzMDUsIDAsIDc0NTI4LCAKLSAgICA2NTkwMywgMCwgNDI2NDYsIDc2MDYsIDI1OTEsIDI4MzcsIDQzNDEsIDc3OTU2LCA2NDQ4MiwgMTI3MzM3LCA4MTYzLCAKLSAgICA2NTI3MCwgMCwgMCwgMCwgOTExMiwgNzQ0MzEsIDg2MywgOTQ5MCwgMTE5ODk4LCA5MTc4MzcsIDQzMzIzLCAxMjA1MTMsIAotICAgIDExOTg5NywgOTA3MSwgMTI3MzMzLCAwLCAzNjU0LCA3Nzg5LCA5NjM3LCAwLCAyNTM1LCA2NTUwNCwgNzY1MywgNDA5OTMsIAotICAgIDExOTg5OSwgNjY1ODcsIDE5NTA5OCwgMCwgOTI0MDEsIDAsIDExMDA2LCAxMjkyNywgNzgwNywgODA3MywgMCwgMTA2MjksIAotICAgIDAsIDc0MDg4LCAzMDU2LCAxMDgyMywgMTI4Nzk3LCAxMjczMjcsIDg3NjIsIDEwNTA4LCA2OTY4OSwgNzM3NzAsIDQzOTY5LCAKLSAgICA0MzE5MywgMTA3MzcsIDM0NjMsIDAsIDAsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgNTgxMSwgMTIzNDUsIDcwNDksIDAsIAotICAgIDUxOTUsIDE5NTA4MSwgMCwgNjY2MzksIDAsIDAsIDAsIDEyODA0MSwgMCwgOTIzODUsIDEyNjIsIDAsIDY1NjEsIDE5OTM5LCAKLSAgICAwLCAwLCAwLCAxMTk5MDYsIDAsIDAsIDAsIDAsIDAsIDExOTkwNywgNjQ2MTIsIDExOTkxLCAwLCAwLCAwLCAxNTAyLCAwLCAKLSAgICAwLCA5MTA3LCAxMjczMTYsIDU3MDIsIDM2NTUsIDY3NjYxLCA4NDMwLCAwLCA3NDEzMiwgMTIwNzU4LCAwLCA3NDA1NywgCi0gICAgOTYwMywgMCwgNTI1NCwgMTIwNzQyLCA3NzI0LCA3NDM4OCwgNjgzNzUsIDEwNzk2LCA1MTI5LCAwLCAwLCA1OTAsIDc1NzksIAotICAgIDU2MTQsIDU4OTMsIDkyMjgwLCAxMTcyMCwgOTI0OTYsIDExNzIxLCAwLCA0Nzk4LCAwLCAxMTkzMTYsIDY2MDM4LCA0NzkzLCAKLSAgICA2Nzg1MSwgMTE3MjYsIDEyNzU0MSwgNzQyMDQsIDY4NjEwLCAwLCA2ODYyNiwgODk0LCAzMDAsIDkxNzgxMywgMTIzMDYsIAotICAgIDY2MjM1LCA4MDA0LCAwLCAwLCAyNTYyLCAwLCAwLCA0MjUwMywgMCwgMTE2NTIsIDAsIDAsIDExOTI0MSwgOTI2NDksIDAsIAotICAgIDUwOTYsIDUwOTUsIDI4NjMsIDM0MjQsIDkyMjQ0LCAxMDQ1NCwgNDI1MzAsIDUwOTQsIDExOTYzOCwgMCwgMTMxNTYsIDAsIAotICAgIDEwODMyLCA1MDkzLCAwLCAwLCAwLCA1MDkyLCAxMDcwOCwgMTEzMjcsIDAsIDUwOTEsIDE3NiwgMCwgOTE1MywgNDEwNCwgCi0gICAgNzg1OTksIDc4NjAxLCAxMjE1LCA0MjcxMiwgNTc0NCwgMTIyNzIsIDk4MzIsIDExNzc3LCAwLCAxMjczNzEsIDQyODgxLCAwLCAKKyAgICA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIDc4NjcxLCA2NDgyOSwgOTgzOTAxLCA2OTQzLCA5MTc5MzQsIDU4NTksIDAsIDI4NTgsIAorICAgIDk4MzM1MywgNzQyOTQsIDk4MzkwNSwgNjkyMzksIDAsIDExOTAyNywgMTI5OTIsIDI3NTMsIDE5MzYsIDcwMDc4LCA5MjU3NCwgCisgICAgMjc1MSwgMTI2NjIsIDI3NjMsIDg5NTMsIDY0NzAxLCAxMDczMSwgMTI5MjIsIDcwNTIsIDkxNzgzOSwgMCwgMCwgMCwgCisgICAgNjM5MjAsIDc0MTI4LCAyODU2LCAxMTk5MTAsIDQ3LCA2OTkwOCwgMTI2OTg2LCA2NTg1OCwgMCwgMCwgMCwgNzg5OSwgMCwgCisgICAgODQxNywgNDM3OTgsIDcwNzIsIDAsIDAsIDQwMzMsIDEyODE2NCwgNDM5OTIsIDAsIDAsIDIxMiwgNjQ2MDAsIDE5MDMsIAorICAgIDEyMzIwLCAwLCAwLCAxOTQ1NjMsIDAsIDg5MTUsIDI3NTksIDk0NSwgNjY4OSwgMCwgMCwgMCwgMCwgMTI5MSwgNzQ4MjgsIAorICAgIDAsIDAsIDk1MzEsIDEzMTU1LCA4NTA1LCA2ODM3OSwgMTIwNjIsIDAsIDAsIDY1NDg3LCA5MjE4OSwgNDE4MzcsIDEyMDYxMSwgCisgICAgMTIwNDMyLCAwLCAwLCAwLCAxMjA0MzMsIDAsIDYzOTM1LCA3Mzk2MiwgMTIwODA2LCA2NDc4NywgNDM1MjQsIDAsIDY0NDI2LCAKKyAgICAwLCAxOTQ5NDgsIDAsIDAsIDY1NjY0LCA2NjkzLCA5ODQzLCAwLCA4Njc0LCAxMTk4ODcsIDEyODgxMiwgOTI3MTUsIDAsIAorICAgIDEyNjI0LCAwLCAxNjczLCA0ODExLCA5MjM4MywgNTk4NiwgOTMzOCwgMzA0NiwgNzQ0ODAsIDU5ODUsIDkxNzkyOCwgCisgICAgMTE5NTk4LCA5ODIwLCAwLCAxMjE4NywgMCwgMCwgNTk4NCwgMCwgNDMzMDgsIDQzOTMsIDY3NjUwLCAwLCAwLCAwLCAwLCAKKyAgICA3NDgyNiwgNjQ3MzMsIDAsIDAsIDM0OTEsIDAsIDAsIDEyODIxOSwgMzUxNCwgNjU0ODUsIDAsIDc0OTIsIDAsIDc0NjA1LCAKKyAgICA5MjQ4MywgNzUxNCwgOTgzMzU5LCAwLCAxOTQ3MzEsIDc1MDIsIDc1ODcsIDY4MzUzLCAwLCAwLCA2MzkyNSwgMCwgNzYxMCwgCisgICAgMjE5LCAwLCAwLCA2OTIsIDQzNTg4LCA3NDQzMywgNDE2MzUsIDQzMjQxLCA5Njg4LCA3MTQ3LCA5NTM1LCAwLCA5Mzk5MSwgCisgICAgMCwgNjQ1MzAsIDAsIDY0NjEwLCAxMTgwNCwgMCwgNzE0OSwgNzQ1MywgMCwgODAxMywgMCwgOTIzMDEsIDAsIDg4OTUsIAorICAgIDUyNTMsIDcwMDI1LCA1NDU4LCAwLCAyODY2LCAwLCAxMjc4NjAsIDY1MTExLCA2ODQzMywgNjcwMCwgMTIwNDg0LCAwLCAKKyAgICAxMjA1ODMsIDAsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgNzA1OSwgOTgzNjY4LCAwLCA5NjA0LCA3ODcwMCwgNzQ0MSwgCisgICAgNjM4MjYsIDY3OTcwLCAxMTg5NDEsIDY0MzkyLCAxOTQ3MzUsIDk4MzY3OCwgMjg0NCwgOTgzOTMyLCA0MTk3NCwgMCwgCisgICAgMTIxMzksIDY3OTcxLCAwLCAwLCAzMzU4LCA2NTI5NSwgMCwgMzEwNCwgMTk0NzM0LCAwLCAxOTQ3NjUsIDk4MzIyNywgCisgICAgNTMwOCwgMCwgMjkwLCAwLCAwLCAyODYyLCAyNzkyLCAxOTUwODgsIDk4MzA3MCwgMCwgMzI2OCwgNjY1OTEsIDAsIDY1NTIsIAorICAgIDQyMzY3LCA3MDM1LCAxMjA1NTgsIDAsIDAsIDE4MTQsIDAsIDEwMjQwLCA5MjMzOCwgNzQzMDUsIDAsIDc0NTI4LCA2NTkwMywgCisgICAgMCwgNDI2NDYsIDc2MDYsIDI1OTEsIDI4MzcsIDQzNDEsIDc3OTU2LCA2NDQ4MiwgMTI3MzM3LCA4MTYzLCA2NTI3MCwgMCwgCisgICAgNzc5MzIsIDAsIDkxMTIsIDc0NDMxLCA4NjMsIDk0OTAsIDExOTg5OCwgMTI4MzQ5LCA0MzMyMywgMTIwNTEzLCAxMTk4OTcsIAorICAgIDkwNzEsIDEyNzMzMywgMCwgMzY1NCwgNzc4OSwgOTYzNywgMCwgMjUzNSwgNjU1MDQsIDc2NTMsIDQwOTkzLCAxMTk4OTksIAorICAgIDY2NTg3LCAxOTUwOTgsIDAsIDkyNDAxLCA5ODM4ODUsIDExMDA2LCAxMjkyNywgNzgwNywgODA3MywgMCwgMTA2MjksIDAsIAorICAgIDc0MDg4LCAzMDU2LCAxMDgyMywgMTI4Nzk3LCAxMjczMjcsIDg3NjIsIDEwNTA4LCA2OTY4OSwgNzM3NzAsIDQzOTY5LCAKKyAgICA0MzE5MywgMTA3MzcsIDM0NjMsIDk4MzA2NSwgMCwgNjY2MzMsIDg2OTUsIDQ4MTUsIDExMzIyLCA1ODExLCAxMjM0NSwgCisgICAgNzA0OSwgMTE5OTExLCA1MTk1LCAxOTUwODEsIDAsIDY2NjM5LCAwLCAwLCAwLCAxMjgwNDEsIDAsIDkyMzg1LCAxMjYyLCAwLCAKKyAgICA2NTYxLCAxOTkzOSwgMCwgMCwgMTI4NTM1LCAxMTk5MDYsIDAsIDAsIDk4MzA5NywgMCwgOTgzNjU4LCAxMTk5MDcsIAorICAgIDY0NjEyLCAxMTk5MSwgMCwgMCwgMCwgMTUwMiwgOTE3NTY4LCAwLCA5MTA3LCAxMjczMTYsIDU3MDIsIDM2NTUsIDY3NjYxLCAKKyAgICA4NDMwLCAwLCA3NDEzMiwgMTIwNzU4LCAwLCA3NDA1NywgOTYwMywgMCwgNTI1NCwgMTIwNzQyLCA3NzI0LCA3NDM4OCwgCisgICAgNjgzNzUsIDEwNzk2LCA1MTI5LCAwLCAwLCA1OTAsIDc1NzksIDU2MTQsIDU4OTMsIDkyMjgwLCAxMTcyMCwgOTI0OTYsIAorICAgIDExNzIxLCAwLCA0Nzk4LCAwLCAxMTkzMTYsIDY2MDM4LCA0NzkzLCA2Nzg1MSwgMTE3MjYsIDEyNzU0MSwgNzQyMDQsIAorICAgIDY4NjEwLCAwLCA2ODYyNiwgODk0LCAzMDAsIDkxNzgxMywgMTIzMDYsIDY2MjM1LCA4MDA0LCAwLCAwLCAyNTYyLCAKKyAgICAxMjY1NTUsIDAsIDQyNTAzLCAwLCAxMTY1MiwgMCwgMCwgMTE5MjQxLCA2NDY5OSwgMTI2NTY5LCA1MDk2LCA1MDk1LCAKKyAgICAyODYzLCAzNDI0LCA5MjI0NCwgMTA0NTQsIDQyNTMwLCA1MDk0LCAxMTk2MzgsIDAsIDEzMTU2LCAwLCAxMDgzMiwgNTA5MywgCisgICAgMCwgNjk4NTIsIDAsIDUwOTIsIDEwNzA4LCAxMTMyNywgMCwgNTA5MSwgMTc2LCAwLCA5MTUzLCA0MTA0LCA3ODU5OSwgCisgICAgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAxMjI3MiwgOTgzMiwgMTE3NzcsIDcxMjk5LCAxMjczNzEsIDQyODgxLCAwLCAKICAgICA4OTgwLCAxMTg5ODgsIDY3ODYxLCA4ODQ0LCA3MjA5LCAwLCAwLCA0Mjc4LCAwLCAwLCAxOTQ3ODksIDAsIDkwNzQsIDQzNDgsIAotICAgIDAsIDY1NTU4LCA2NTk0NiwgODExMywgNzA4NywgNTI1NSwgMTc4NiwgNjYxLCAwLCAwLCAwLCA3NDQyMywgMCwgNTg2LCAKLSAgICA3NDQxNCwgNjQzNTksIDEyNjcsIDAsIDY1NDY4LCAwLCA2NTczMSwgMCwgMTI3MTc5LCAzNjIxLCAxMjA0NzMsIDY2NjY2LCAKLSAgICA2NDIxMSwgMCwgNjU2MiwgMTI5MjgsIDAsIDEyMjgsIDY1NDkwLCAxMTM4MywgMCwgMCwgMCwgMTcxNCwgNzQ0MDYsIAotICAgIDEyNzgzMSwgMCwgMCwgMCwgNjYyMjUsIDAsIDAsIDQyNjYwLCAxMTQzNiwgMjA3MCwgNjQsIDEyMDY5NCwgMCwgMTAyOTEsIAotICAgIDEwMzIzLCAyODI2LCAwLCAwLCAwLCA0MjAwOCwgOTcwOCwgNDI3MTAsIDAsIDQyMDExLCA0MTk5OSwgOTIxNjQsIDEyMjA2LCAKLSAgICA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgMCwgMCwgNjU4MzMsIDc3ODQ4LCAwLCAxNzY1LCAwLCAwLCA2NTU4OCwgCi0gICAgMCwgMCwgMCwgODQwMSwgMCwgNDIwMTQsIDAsIDcwMzAsIDE5NDcwNCwgMTA0NzksIDY0OTU5LCAyODUyLCAwLCAwLCAwLCAwLCAKLSAgICAxMjg1ODYsIDkxNzk1MSwgNjk2MywgMCwgMTI2NjcsIDY0NTQwLCA3NDc4NiwgMTAxNDcsIDEyOTM1LCAxMjc1NjgsIDAsIDAsIAotICAgIDAsIDAsIDc4NzU3LCAwLCAwLCAwLCAwLCA5OTk0LCAxMjQ2NywgMjg2NCwgNjQ3MTksIDExNDgsIDEwNDM1LCAxMTQ2MiwgCi0gICAgNDE2NzUsIDAsIDI3NjUsIDAsIDAsIDAsIDEyMDcxOSwgMTI4MTg4LCA5MjUxNiwgNjY2NjIsIDAsIDc4MTMzLCA5MzY0LCAKLSAgICAxOTQ2ODUsIDc0NDE2LCAwLCAwLCA3Nzk4OCwgMjYzLCAxMDQ0OSwgNDEyODgsIDAsIDQxODM5LCA3ODM4NywgMCwgNzc5ODYsIAotICAgIDAsIDY5MzEsIDY5NzIyLCA2NDM1NSwgNzE3NywgMTIwNTMwLCAwLCAwLCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAKLSAgICAwLCA2ODA2LCA2OTkyLCA0MjAxOSwgMCwgNDEyOTAsIDAsIDc1MCwgMCwgMCwgMTAxNjMsIDYzOTEzLCA3NDA2NiwgNzAzMiwgCi0gICAgNTk1NCwgNjQ5MzEsIDQzMTQsIDAsIDE5OCwgNjg0NTMsIDczMCwgMTIwMDk0LCA2MzkwNywgNzc5OTMsIDc4ODkxLCAKLSAgICAxMzE2NSwgNzEwNywgNzQxNzEsIDQyODA0LCA2NzgsIDgyNDAsIDc4MDE1LCAxMjg3ODQsIDQxMzc4LCAxMTAwOCwgNjkzOCwgCi0gICAgOTIyMjIsIDkyNjM3LCAyMDk3LCA2NjI0NiwgMTIwNTYwLCAwLCAwLCAwLCAzODkyLCA2ODYzMiwgNjk2NDIsIDY3MTIsIAotICAgIDY2MDQ1LCA0MTQ3MCwgNjQ4MDUsIDAsIDAsIDAsIDY0ODAxLCAwLCA0OTcsIDEyMTAwLCA1OTUzLCA5MjY2NywgNzc5NiwgCi0gICAgNjk2NjksIDQzMjU0LCA3MzgzMSwgMCwgMTAyOTMsIDU5NTIsIDEyODEsIDAsIDAsIDAsIDEwNjc3LCA2MDQsIDQxMDk3LCAKLSAgICA5MTgyLCAxODU5LCAwLCA5MjYwMywgMzQyNSwgMTI3NDg4LCAwLCAyODM2LCAwLCAwLCA5NzA3LCAwLCA0MzIwMiwgMCwgMCwgCi0gICAgNjUxOTksIDE3MzgsIDkxNzgxOCwgMTI4MTU4LCAyODMyLCA5MjcwMiwgOTY3MCwgMTI5MzcsIDAsIDY2Mzc0LCA5MTc5NTYsIAotICAgIDAsIDI4MjIsIDY4MTIyLCA0NDM2LCA5MjUxOSwgMCwgNzM3NTIsIDAsIDY0ODcyLCA5MjM0MCwgMTMzMSwgMCwgMCwgMCwgCi0gICAgMTI3MDgsIDAsIDUwOTAsIDUwODksIDAsIDAsIDExOTEwOSwgMCwgMTI4NjgxLCAzMTksIDExODg0NywgNDM0NzksIDk0NzcsIAotICAgIDAsIDAsIDUwODcsIDkyMzI1LCA3NjQwLCA5NiwgNTA4NiwgMCwgOTIzNzksIDAsIDUwODUsIDY0Mjg2LCA5MjY2NSwgMCwgCi0gICAgNDE0MjIsIDAsIDExOTkwMSwgNDIzNTYsIDM3NzIsIDAsIDAsIDUwMTEsIDAsIDAsIDAsIDAsIDEyNzE2NSwgMTI3MjQxLCAKLSAgICA2Njc3LCA3NjAxLCAwLCA1OTEsIDY0NDE5LCAxMTg5NTMsIDkyMjYyLCAwLCAxMTg5MjMsIDczNzM0LCAwLCAxMDkzOSwgCi0gICAgNjEwNiwgNjkzMywgNDEyNzEsIDY3NjAsIDExOTkwMywgNDUzNCwgNDEyNzAsIDEyODg3NiwgMCwgNjU1NzQsIDAsIDkyMjQsIAotICAgIDAsIDM2NzEsIDg5NzYsIDAsIDAsIDQxMjc1LCA2MzcyLCAxMjgwODQsIDU1MjYxLCA3OTYzLCA2MzcxLCAwLCA1NjgsIDAsIAotICAgIDQxMjczLCAwLCAwLCA2NzI4LCAwLCA5NzE1LCAwLCA4MjU4LCAxMTc1MywgNzQ4MjAsIDAsIDk2MDIsIDExODkxOSwgNDIsIAotICAgIDAsIDQzNjg4LCAwLCAwLCA3NDU4LCAwLCAwLCA2NTM4NSwgMTE5OTAwLCAwLCAxMTk1OCwgMCwgOTE3ODIyLCAwLCA2MjU0LCAKLSAgICA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAwLCAwLCAwLCA0Mjg1OCwgMTE3ODksIDY1ODY4LCA1NTU3LCAxMDEzMywgCi0gICAgOTczNywgMTMxMDksIDAsIDk0NjcsIDU1NTgsIDg4NzgsIDEyODEzNiwgMTk1MDM2LCA3NDUxLCA2NzA2LCAxMDE0NiwgMCwgCi0gICAgOTA4NiwgNjQ1NjYsIDAsIDY0NTg0LCA3NDM3LCA3NDU0LCAxMjU5NCwgMTI4NjkwLCA2ODM2MiwgNDU0NiwgNzczMSwgMCwgCi0gICAgMTE5OTA5LCA3NDI0MywgMCwgMzgwNSwgMCwgMTk0NTY1LCA0NDAwMSwgNDEwMDgsIDAsIDYzMDcsIDE5OTQ5LCAwLCA3NTQ0LCAKLSAgICAwLCA0MzQ2OSwgMCwgMCwgMTAxNTIsIDY0NDIyLCA2NTA5MSwgMTE5MTEzLCA3NjAyLCA2NDcyOSwgMCwgNDM1MjEsIDAsIAotICAgIDQyMzAyLCA0MzcxMSwgNDM1MjMsIDQxNDQ3LCA1NTU5LCAwLCA4NzA0LCAyMzk3LCA1NTU2LCAwLCAwLCAwLCA5MDExLCAKLSAgICA5NjMwLCA5MjYzMywgMCwgMCwgNTUwNiwgMCwgMTkxMSwgNjY2NTIsIDAsIDk5NjEsIDg4NDUsIDY2Njk4LCAwLCAxMDc5MiwgCi0gICAgODg4OSwgMCwgMjA5OCwgMCwgNjQ3NTEsIDAsIDY2NjIyLCAwLCAwLCA3NDM2NCwgMCwgMCwgMCwgNzQzNjUsIDc1NTIsIDAsIAotICAgIDAsIDY1Mzg0LCA3MjIzLCA0NTU5LCAwLCAxOTU2LCA0MzEzOCwgNzAyNCwgNjU3MjgsIDY0NTAxLCAxMjEwLCAxOTUwNzcsIAotICAgIDY1MTc1LCAxMDE4NCwgNDMxNDAsIDQzNjU0LCAwLCAwLCAwLCAzOCwgODUzMywgNjY2NjksIDExOTEyNCwgMCwgMCwgMCwgCi0gICAgNDM1NywgMCwgMTE5ODM3LCAwLCA3NDIzMywgOTk2NywgMTE5ODUyLCA0Mjg2MCwgMTE5ODM4LCAxMDk0MSwgNjU3MjEsIAotICAgIDY5NjIsIDAsIDAsIDExOTMyNCwgMCwgMTEwMTQsIDEyNzk3MiwgODk0MiwgMTIwMDAsIDY5MjI0LCA5MjI2NywgMTI4NTM2LCAKLSAgICAxMTk3NCwgOTIyMTMsIDQyNzcyLCAxMjc1MTgsIDExNjUwLCA1MDEzLCA5MjY2MywgMTI4Njc3LCA2NjIxMCwgMTE4OTE0LCAKLSAgICA2NjEzLCA5MjQ3NiwgMCwgNDM4MTksIDAsIDAsIDY0NzE0LCAwLCAwLCAxMjE2MiwgMTIxMjAsIDQzNDc2LCAwLCAxMTAyNCwgCi0gICAgNzQ4MTEsIDY2MjI4LCAxMDU2MywgMCwgMTI3MTk2LCA0MzUyMiwgMjQ2MiwgMCwgMTgzNywgMCwgNjM5NzIsIDY5NTcsIDAsIAotICAgIDEyMDU1OSwgNDk1MiwgNjU3MTgsIDY1ODI3LCA1NTA0LCA2NTcyMCwgNjU3MTQsIDY1NzE1LCA2NTcxNiwgMCwgMTI3MDA1LCAKLSAgICAxMjcxMTksIDMxMDksIDYzOTc1LCA3NDAyOCwgMCwgODEwNywgMTE5MjM0LCAxMTI3LCA0NTUsIDAsIDYzOTY4LCAxMjc5MjQsIAotICAgIDM0ODMsIDExOTU5MywgMTk4OSwgMCwgNjk2NzgsIDkxMDQsIDM1MDMsIDY1Mzc1LCA5MjUwOSwgNjY5NCwgNDI2MzMsIAotICAgIDE4NjQsIDAsIDc0MzA2LCA0MTQ0NiwgMjU0MCwgNzczNiwgMCwgNzQwNjQsIDAsIDEwNTIxLCAwLCA0MjE3MywgOTcwNSwgCi0gICAgNzQxMjQsIDg2MDQsIDY5NTUsIDEwOTE2LCA0MzY4NCwgNjE0OSwgMzg4NywgMTk5NTYsIDE0MTEsIDI4MjQsIDAsIDEwMTA2LCAKLSAgICAxMjc4NjIsIDE0MDMsIDEyODgzOSwgMTM0NywgOTYzMSwgNzQ0NDQsIDAsIDAsIDAsIDAsIDg2NDAsIDAsIDI1OCwgMTY1NCwgCi0gICAgMCwgMCwgMCwgNDMzMTQsIDAsIDAsIDQwNDIsIDExNDc4LCAyODczLCA2Mzk3NywgMTE1MjIsIDQxNjY4LCA4NTQ5LCAKLSAgICAxMDg2MSwgMCwgNjM5NzYsIDAsIDY4NjIzLCAwLCA3NDU4NSwgNDEzOTEsIDAsIDkxNzkwMywgMzc2LCA2OTg3LCA5MjIxLCAKLSAgICAwLCAwLCA4ODIzLCAxMjg2OTcsIDEyOTQzLCA2NTE4NSwgNDE4NjksIDEyNjE5LCAwLCAxMDE1NCwgMCwgNzQ0MzksIDIwMzksIAotICAgIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgNDU4LCAxMjA2MjAsIDAsIDY5NzkxLCAxMjcxNjEsIDExOTE2LCA2NTAxNiwgCi0gICAgMCwgNjk2NzEsIDQyMTE1LCAwLCAxMjI4OCwgNzgwNTcsIDAsIDE0OTMsIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIAotICAgIDEzMDgwLCAwLCA2NTgwOCwgNjYxMCwgNjAzMCwgODA1OSwgNzUwOCwgMTMxMzEsIDAsIDAsIDAsIDg3OTQsIDQxMjc4LCAKLSAgICA0MTYyOSwgMTIxNTQsIDEyODE5MiwgNDEyNzcsIDY0NjU4LCAwLCA2NDM4MCwgNjYyNSwgNzQzNTQsIDE5OTA0LCAwLCAwLCAKLSAgICAwLCA2NTM3MSwgNzA3OCwgMCwgODMzLCAwLCA2MzY5LCAwLCAxMDk3OSwgNDE5NTMsIDAsIDQxNDM0LCA2MDYyLCAwLCAwLCAKLSAgICAxOTkxNiwgNjkxMywgOTMzLCAxMzQxLCA5ODQyLCA2NzIwLCA2NTc0NCwgMCwgMCwgMTI4Mjk1LCAwLCA3NDA1LCAxMDEwNSwgCi0gICAgNjU4MTAsIDAsIDQxNjMyLCA3NDkzLCA1NTI5MCwgMCwgNDE2MjIsIDAsIDAsIDExOTU1NiwgNzQ1ODQsIDc2MzIsIDk3MTYsIAotICAgIDE5OTU0LCA5ODA1LCA1OTkwLCA5MDAsIDAsIDYzOTU3LCAwLCAwLCAzNjEyLCAwLCA2NDM3NiwgMCwgNTM4OSwgOTI1OTcsIAotICAgIDAsIDY1OTM4LCAyODM5LCA5NjIxLCA1ODIsIDAsIDc0MzY4LCAzNzQ5LCA2OTQ5LCA3NTY5LCA3NDA2MSwgMCwgMCwgNjk1NiwgCi0gICAgNDQwMywgMTk5NjIsIDY1NTU5LCAzMjk5LCAwLCA5MTc1NjYsIDExOTEyNywgOTAwMiwgMCwgNzQzNzIsIDc0MjM2LCA4NDc4LCAKLSAgICA3NTk4LCA1NDYsIDQyNDY5LCA2NTU2OSwgMTkxOCwgOTU0MiwgNDcyLCA3NzE2LCAxMDMxOSwgMTAzODMsIDY5OTYsIDAsIAotICAgIDYzOTUyLCA4NDI1LCAzNjAyLCA4MzI4LCAxMTc2NCwgMTE4ODk0LCAwLCA2OTc5NiwgNDExODMsIDEyOTA3LCAxMDI3MSwgCi0gICAgMTAyODcsIDY4NCwgNDM1MjUsIDAsIDI4NTQsIDExOTU4NiwgNDU5MiwgNjU3NTUsIDAsIDkyMjU2LCAxMTk2MywgNDM2MjAsIAotICAgIDAsIDc4ODg5LCAwLCAwLCAxMjg4MDksIDk4ODEsIDQzMTE1LCA2NTc1NywgMzQxNSwgMCwgMCwgODY0OCwgMCwgNjc0MSwgCi0gICAgNDMwNDcsIDAsIDEzMTgwLCAxMjg1MTcsIDQxOCwgOTE3OTcyLCA2NDQ5NSwgMTAyOTUsIDEwMzI3LCAxMDM5MSwgNDE3NTIsIAotICAgIDc0MzM5LCA4NjQxLCA0MTQ0OSwgMCwgNzQxMDAsIDAsIDEwOTExLCA2OTQyLCAwLCAxMDI0LCA0Mjg0OSwgNDE3NTEsIAotICAgIDY5Nzc2LCA4OTQxLCAwLCA0NTU0LCAwLCA5MDIzLCAxMTY4NSwgMCwgOTkyOCwgNzg2MTcsIDAsIDExNDM3LCA0Mzc0MSwgCi0gICAgOTIxNjMsIDEyMDcwMCwgNjM5NjcsIDAsIDQxMjA2LCAxMjA3MjQsIDkwNDksIDQxMTg1LCA0MzE2NiwgMCwgMTE2ODAsIAotICAgIDkyNjE5LCAxMTY4NiwgNzg1NDQsIDY1MjI0LCA0NTY1LCA0NjU1LCAxMTk1NTMsIDAsIDkyMTgzLCA2NDUyMywgMTAzNDMsIAotICAgIDEwNDA3LCAwLCA2NjY3MSwgMTE0NjYsIDAsIDEyODAwMywgNDI4OTAsIDAsIDEyMDUwLCA2ODIwMSwgMjg2MCwgMCwgMCwgMCwgCi0gICAgNDI3OTIsIDU3NDMsIDEwNDI0LCAxMjA2NSwgNDI4NzIsIDAsIDkyMzQyLCAwLCA4ODc1LCAwLCAwLCA5MTc5OTEsIDc1MzEsIAotICAgIDEyODQ3LCAyNDEzLCAwLCA3ODYzNSwgOTYyLCAwLCAxMjg1NSwgNDExOTYsIDQyNTY0LCAwLCAxNTgyLCAwLCA1NTA4LCAwLCAKLSAgICAwLCAwLCAxMDgwMSwgMCwgOTIzNTQsIDAsIDcxNzMsIDQ5NiwgMTA0MzksIDQzMTMsIDY0NjA3LCA2OTYzOCwgNzg2MCwgMCwgCi0gICAgOTA2LCA0Mjc5MywgMjg0MiwgNjQwNSwgNjQ3MjIsIDEzMTMyLCA3OTgsIDY0Njk0LCAxMjgwMSwgODQwNiwgMTE1MywgCi0gICAgOTIxNzMsIDY0Nzg4LCAwLCA4MDU0LCA5MTc0LCAxMjg2NTIsIDkxNzk3NiwgOTk2NCwgMCwgNDE2MTEsIDQ2NDIsIDY2NTc0LCAKLSAgICAxMTU1NiwgOTE3OTgyLCAwLCA3ODg1NywgNDIwODksIDc4ODU1LCA5MDA4LCAwLCAwLCAxOTUwOTYsIDQyMDc5LCA5MTc5ODEsIAotICAgIDc3OTI0LCA0MjUxMywgMCwgNDI4NDIsIDczOTg1LCA2NTI4NSwgMTE4OTc0LCAxMjcwMDMsIDAsIDAsIDAsIDAsIDExMzM1LCAKLSAgICA2NDA2OSwgNDIwOTMsIDM5MjAsIDAsIDAsIDAsIDAsIDQ1ODAsIDQxOTY3LCAwLCA2NDM4NCwgOTIxNjcsIDExOTE1OCwgCi0gICAgMzAyMSwgNDIwMDQsIDAsIDAsIDQyMzE3LCA0MTk5OCwgMCwgNjk0NiwgMCwgMCwgMCwgMTI4MTkzLCA2NTIwNCwgMCwgCi0gICAgNjgxMTMsIDQyNjkwLCA5ODgwLCA0MjAxMCwgNzQ4MjQsIDY0NTg5LCAxMDExMSwgNjQ4NzUsIDEyNzg4MCwgNjgzOTksIAotICAgIDQzOTk4LCAxMTM2MCwgMCwgMCwgMCwgMTE4ODI2LCA0MjE0OSwgMCwgMCwgMCwgNjQ5NDEsIDc3OTE5LCAxMjA0MjEsIAotICAgIDEyODA3NywgMCwgNTUyNDcsIDQxMTAsIDY2MDA1LCA2OTU5LCAxMDkyOSwgMTE5MTEwLCAwLCA2NjcwMywgNzc5MjEsIAotICAgIDg2MTcsIDQxOTgyLCA2MDI1LCA2OTI0MiwgMCwgMCwgMCwgMCwgOTU5NywgNDIwOTksIDQzMTcyLCAwLCAxMDExNywgMCwgCisgICAgMCwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAxNzg2LCA2NjEsIDAsIDAsIDAsIDc0NDIzLCA3MTM0NSwgNTg2LCAKKyAgICA3NDQxNCwgNjQzNTksIDEyNjcsIDEyODI2OSwgNjU0NjgsIDAsIDY1NzMxLCAwLCAxMjcxNzksIDM2MjEsIDEyMDQ3MywgCisgICAgNjY2NjYsIDY0MjExLCAwLCA2NTYyLCAxMjkyOCwgMCwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAwLCAwLCAxNzE0LCAKKyAgICA3NDQwNiwgMTI3ODMxLCAwLCA5ODM5MTIsIDAsIDY2MjI1LCAwLCAwLCA0MjY2MCwgMTE0MzYsIDIwNzAsIDY0LCAxMjA2OTQsIAorICAgIDAsIDEwMjkxLCAxMDMyMywgMjgyNiwgMCwgMCwgMCwgNDIwMDgsIDk3MDgsIDQyNzEwLCAwLCA0MjAxMSwgNDE5OTksIAorICAgIDkyMTY0LCAxMjIwNiwgNTgzOSwgMTcwMiwgMTI0MCwgNzQwNjUsIDYyODYsIDAsIDk4Mzk2MCwgNjU4MzMsIDc3ODQ4LCAwLCAKKyAgICAxNzY1LCAwLCAwLCA2NTU4OCwgMCwgMCwgMCwgODQwMSwgMCwgNDIwMTQsIDAsIDcwMzAsIDE5NDcwNCwgMTA0NzksIAorICAgIDY0OTU5LCAyODUyLCAwLCAwLCAwLCAwLCAxMjg1ODYsIDkxNzk1MSwgNjk2MywgMCwgMTI2NjcsIDY0NTQwLCA3NDc4NiwgCisgICAgMTAxNDcsIDEyOTM1LCAxMjc1NjgsIDEyNjQ4MywgMCwgMCwgMCwgNzg3NTcsIDAsIDAsIDAsIDAsIDk5OTQsIDEyNDY3LCAKKyAgICAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCA0MTY3NSwgNzA4NCwgMjc2NSwgMCwgNDMzODIsIDAsIDEyMDcxOSwgCisgICAgMTI4MTg4LCA5MjUxNiwgNjY2NjIsIDAsIDc4MTMzLCA5MzY0LCAxOTQ2ODUsIDc0NDE2LCAwLCAwLCA3Nzk4OCwgMjYzLCAKKyAgICAxMDQ0OSwgNDEyODgsIDAsIDQxODM5LCA3ODM4NywgOTgzNzMzLCA3Nzk4NiwgMCwgNjkzMSwgNjk3MjIsIDY0MzU1LCAKKyAgICA3MTc3LCA3MDEwNSwgMCwgMCwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgMTI2NTc1LCA2ODA2LCA2OTkyLCAKKyAgICA0MjAxOSwgMCwgNDEyOTAsIDk4MzcwNywgNzUwLCAwLCA3MTMwNCwgMTAxNjMsIDYzOTEzLCA3MTMwMCwgNzAzMiwgNTk1NCwgCisgICAgNjQ5MzEsIDQzMTQsIDAsIDE5OCwgNjg0NTMsIDczMCwgMTIwMDk0LCA2MzkwNywgNzc5OTMsIDc4ODkxLCAxMzE2NSwgCisgICAgNzEwNywgNzQxNzEsIDQyODA0LCA2NzgsIDgyNDAsIDc4MDE1LCAxMjg3ODQsIDQxMzc4LCAxMTAwOCwgNjkzOCwgNzAwMjYsIAorICAgIDkyNjM3LCAyMDk3LCA2NjI0NiwgMTIwNTYwLCAwLCAwLCAwLCAzODkyLCA2ODYzMiwgNjk2NDIsIDY3MTIsIDY2MDQ1LCAKKyAgICA0MTQ3MCwgNjQ4MDUsIDAsIDAsIDEyODIxNSwgNjQ4MDEsIDAsIDQ5NywgMTIxMDAsIDU5NTMsIDkyNjY3LCA3Nzk2LCAKKyAgICA2OTY2OSwgNDMyNTQsIDczODMxLCAwLCAxMDI5MywgNTk1MiwgMTI4MSwgNDM3NDcsIDAsIDAsIDEwNjc3LCA2MDQsIAorICAgIDQxMDk3LCA5MTgyLCAxODU5LCAwLCA5MjYwMywgMzQyNSwgMTI3NDg4LCAwLCAyODM2LCAwLCAwLCA5NzA3LCAwLCA0MzIwMiwgCisgICAgMCwgMCwgNjUxOTksIDE3MzgsIDkxNzgxOCwgMTI4MTU4LCAyODMyLCA5MjcwMiwgOTY3MCwgMTI5MzcsIDAsIDY2Mzc0LCAKKyAgICA5MTc5NTYsIDAsIDI4MjIsIDY4MTIyLCA0NDM2LCA5MjUxOSwgOTgzNzE0LCA3Mzc1MiwgMCwgNjQ4NzIsIDkyMzQwLCAKKyAgICAxMzMxLCAwLCAwLCAwLCAxMjcwOCwgMCwgNTA5MCwgNTA4OSwgMTI3OTc3LCAwLCAxMTkxMDksIDAsIDEyODY4MSwgMzE5LCAKKyAgICAxMTg4NDcsIDQzNDc5LCA5NDc3LCAwLCAwLCA1MDg3LCA5MjMyNSwgNzY0MCwgOTYsIDUwODYsIDAsIDkyMzc5LCAwLCAKKyAgICA1MDg1LCA2NDI4NiwgOTI2NjUsIDAsIDQxNDIyLCAwLCAxMTk5MDEsIDQyMzU2LCAzNzcyLCAwLCAwLCA1MDExLCAwLCAwLCAKKyAgICAxMjY1ODcsIDAsIDEyNzE2NSwgMTI3MjQxLCA2Njc3LCA3NjAxLCAwLCA1OTEsIDY0NDE5LCAxMTg5NTMsIDkyMjYyLCAwLCAKKyAgICAxMTg5MjMsIDcwMDg0LCAwLCAxMDkzOSwgNjEwNiwgNjkzMywgNDEyNzEsIDY3NjAsIDcxMzQzLCA0NTM0LCA0MTI3MCwgCisgICAgMTI4ODc2LCAwLCA2NTU3NCwgMCwgOTIyNCwgNjk4NTMsIDM2NzEsIDg5NzYsIDEyNjQ3NCwgMCwgNDEyNzUsIDYzNzIsIAorICAgIDEyODA4NCwgNTUyNjEsIDc5NjMsIDYzNzEsIDAsIDU2OCwgMCwgNDEyNzMsIDk4MzcyMSwgMCwgNjcyOCwgMCwgOTcxNSwgMCwgCisgICAgODI1OCwgMTE3NTMsIDc0ODIwLCAwLCA5NjAyLCAxMTg5MTksIDQyLCAwLCA0MzY4OCwgMCwgMCwgNzQ1OCwgMCwgMCwgCisgICAgNjUzODUsIDExOTkwMCwgMCwgMTE5NTgsIDAsIDkxNzgyMiwgMCwgNjI1NCwgNDI3MjEsIDY2MzM2LCA4MDQ1LCAxMTU1MCwgCisgICAgMCwgMCwgOTgzNTk3LCA0Mjg1OCwgMTE3ODksIDY1ODY4LCA1NTU3LCAxMDEzMywgOTczNywgMTMxMDksIDAsIDk0NjcsIAorICAgIDU1NTgsIDg4NzgsIDEyODEzNiwgMTk1MDM2LCA3NDUxLCA2NzA2LCAxMDE0NiwgMCwgOTA4NiwgNjQ1NjYsIDAsIDY0NTg0LCAKKyAgICA3NDM3LCA3NDU0LCAxMjU5NCwgMTI4NjkwLCA2ODM2MiwgNDU0NiwgNzczMSwgMCwgNzAwNDgsIDc0MjQzLCAwLCAzODA1LCAKKyAgICAwLCAxOTQ1NjUsIDQ0MDAxLCA0MTAwOCwgMCwgNjMwNywgMTk5NDksIDk4Mzc4MSwgNzU0NCwgOTgzMDQ1LCA0MzQ2OSwgMCwgCisgICAgMCwgMTAxNTIsIDY0NDIyLCA2NTA5MSwgMTE5MTEzLCA3NjAyLCA2NDcyOSwgMCwgNDM1MjEsIDAsIDQyMzAyLCA0MzcxMSwgCisgICAgNDM1MjMsIDQxNDQ3LCA1NTU5LCAwLCA4NzA0LCAyMzk3LCA1NTU2LCAwLCAwLCAwLCA5MDExLCA5NjMwLCA5MjYzMywgMCwgCisgICAgOTM5OTgsIDU1MDYsIDAsIDE5MTEsIDY2NjUyLCAwLCA5OTYxLCA4ODQ1LCA2NjY5OCwgMCwgMTA3OTIsIDg4ODksIDAsIAorICAgIDIwOTgsIDAsIDY0NzUxLCAwLCA2NjYyMiwgMCwgMCwgNzQzNjQsIDAsIDAsIDk4Mzc5NiwgNzQzNjUsIDc1NTIsIDAsIDAsIAorICAgIDY1Mzg0LCA3MjIzLCA0NTU5LCAwLCAxOTU2LCA0MzEzOCwgNzAyNCwgNjU3MjgsIDY0NTAxLCAxMjEwLCAxOTUwNzcsIAorICAgIDY1MTc1LCAxMDE4NCwgNDMxNDAsIDQzNjU0LCAwLCAwLCAwLCAzOCwgODUzMywgNjY2NjksIDExOTEyNCwgOTgzMjg1LCAKKyAgICA5ODM3ODMsIDAsIDQzNTcsIDAsIDExOTgzNywgOTE3ODYzLCA3NDIzMywgOTk2NywgNzg4ODQsIDQyODYwLCAxMTk4MzgsIAorICAgIDEwOTQxLCA2NTcyMSwgNjk2MiwgMCwgMCwgMTE5MzI0LCAwLCAxMTAxNCwgMTI3OTcyLCA4OTQyLCAxMjAwMCwgNjkyMjQsIAorICAgIDkyMjY3LCAxMjg1MzYsIDExOTc0LCA5MjIxMywgNDI3NzIsIDEyNzUxOCwgMTE2NTAsIDUwMTMsIDkyNjYzLCAxMjY1ODMsIAorICAgIDY2MjEwLCAxMTg5MTQsIDY2MTMsIDkyNDc2LCAwLCA0MzgxOSwgOTgzNzYxLCAwLCA2NDcxNCwgMCwgMCwgMTIxNjIsIAorICAgIDEyMTIwLCA0MzQ3NiwgOTgzNzU3LCAxMTAyNCwgNzQ4MTEsIDY2MjI4LCAxMDU2MywgMCwgMTI3MTk2LCA0MzUyMiwgMjQ2MiwgCisgICAgMCwgMTgzNywgMCwgNjM5NzIsIDY5NTcsIDAsIDEyMDU1OSwgNDk1MiwgNjU3MTgsIDY1ODI3LCA1NTA0LCA2NTcyMCwgCisgICAgNjU3MTQsIDY1NzE1LCA2NTcxNiwgMCwgMTI3MDA1LCAxMjcxMTksIDMxMDksIDYzOTc1LCA3NDAyOCwgMCwgODEwNywgCisgICAgMTE5MjM0LCAxMTI3LCA0NTUsIDAsIDYzOTY4LCAxMjc5MjQsIDM0ODMsIDExOTU5MywgMTk4OSwgMCwgNjk2NzgsIDkxMDQsIAorICAgIDM1MDMsIDY1Mzc1LCA5MjUwOSwgNjY5NCwgNDI2MzMsIDE4NjQsIDAsIDc0MzA2LCA0MTQ0NiwgMjU0MCwgNzczNiwgMCwgCisgICAgNzQwNjQsIDAsIDEwNTIxLCAwLCA0MjE3MywgOTcwNSwgNzQxMjQsIDg2MDQsIDY5NTUsIDEwOTE2LCA0MzY4NCwgNjE0OSwgCisgICAgMzg4NywgMTk5NTYsIDE0MTEsIDI4MjQsIDAsIDEwMTA2LCAxMjc4NjIsIDE0MDMsIDEyODgzOSwgMTM0NywgOTYzMSwgCisgICAgNzQ0NDQsIDAsIDAsIDAsIDAsIDg2NDAsIDAsIDI1OCwgMTY1NCwgMCwgMCwgMCwgNDMzMTQsIDAsIDAsIDQwNDIsIDExNDc4LCAKKyAgICAyODczLCA2Mzk3NywgMTE1MjIsIDQxNjY4LCA4NTQ5LCAxMDg2MSwgMCwgNjM5NzYsIDAsIDY4NjIzLCAwLCA3NDU4NSwgCisgICAgNDEzOTEsIDAsIDkxNzkwMywgMzc2LCA2OTg3LCA5MjIxLCAwLCAwLCA4ODIzLCAxMjg2OTcsIDEyOTQzLCA2NTE4NSwgCisgICAgNDE4NjksIDEyNjE5LCAwLCAxMDE1NCwgOTgzMDQzLCA3NDQzOSwgMjAzOSwgMCwgNzQ0NiwgMTY4NCwgNjM5NzksIDEwOTc0LCAKKyAgICA0NTgsIDEyMDYyMCwgMCwgNjk3OTEsIDEyNzE2MSwgMTE5MTYsIDY1MDE2LCAwLCA2OTY3MSwgNDIxMTUsIDk4MzEzMywgCisgICAgMTIyODgsIDc4MDU3LCAwLCAxNDkzLCA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAxMzA4MCwgMCwgNjU4MDgsIDY2MTAsIAorICAgIDYwMzAsIDgwNTksIDc1MDgsIDEzMTMxLCAwLCA5ODM0MjMsIDAsIDg3OTQsIDQxMjc4LCA0MTYyOSwgMTIxNTQsIDEyODE5MiwgCisgICAgNDEyNzcsIDY0NjU4LCAwLCA2NDM4MCwgNjYyNSwgNzQzNTQsIDE5OTA0LCAwLCAwLCAwLCA2NTM3MSwgNzA3OCwgMCwgODMzLCAKKyAgICAwLCA2MzY5LCAwLCAxMDk3OSwgNDE5NTMsIDAsIDQxNDM0LCA2MDYyLCAwLCAwLCAxOTkxNiwgNjkxMywgOTMzLCAxMzQxLCAKKyAgICA5ODQyLCA2NzIwLCA2NTc0NCwgMCwgOTgzNTkyLCAxMjgyOTUsIDAsIDc0MDUsIDEwMTA1LCA2NTgxMCwgMCwgNDE2MzIsIAorICAgIDc0OTMsIDU1MjkwLCAwLCA0MTYyMiwgMCwgMCwgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgMTk5NTQsIDk4MDUsIAorICAgIDU5OTAsIDkwMCwgMCwgNjM5NTcsIDAsIDAsIDM2MTIsIDAsIDY0Mzc2LCA5Mzk4NywgNTM4OSwgOTI1OTcsIDAsIDY1OTM4LCAKKyAgICAyODM5LCA5NjIxLCA1ODIsIDAsIDc0MzY4LCAzNzQ5LCA2OTQ5LCA3NTY5LCA3NDA2MSwgMCwgMCwgNjk1NiwgNDQwMywgCisgICAgMTk5NjIsIDY1NTU5LCAzMjk5LCAwLCA5MTc1NjYsIDExOTEyNywgOTAwMiwgMCwgNzQzNzIsIDc0MjM2LCA4NDc4LCA3NTk4LCAKKyAgICA1NDYsIDQyNDY5LCA2NTU2OSwgMTkxOCwgOTU0MiwgNDcyLCA3NzE2LCAxMDMxOSwgMTAzODMsIDY5OTYsIDAsIDYzOTUyLCAKKyAgICA4NDI1LCAzNjAyLCA4MzI4LCAxMTc2NCwgMTE4ODk0LCAwLCA2OTc5NiwgNDExODMsIDEyOTA3LCAxMDI3MSwgMTAyODcsIAorICAgIDY4NCwgNDM1MjUsIDAsIDI4NTQsIDExOTU4NiwgNDU5MiwgNjU3NTUsIDAsIDkyMjU2LCAxMTk2MywgNDM2MjAsIDAsIAorICAgIDc4MjQ5LCAwLCAxMjg1NTEsIDEyODgwOSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCAxMTkxMzEsIDAsIDg2NDgsIDAsIAorICAgIDY3NDEsIDQzMDQ3LCAwLCAxMzE4MCwgMTI4NTE3LCA0MTgsIDkxNzk3MiwgNjQ0OTUsIDEwMjk1LCAxMDMyNywgMTAzOTEsIAorICAgIDQxNzUyLCA3NDMzOSwgODY0MSwgNDE0NDksIDAsIDc0MTAwLCAwLCAxMDkxMSwgNjk0MiwgMCwgMTAyNCwgNDI4NDksIAorICAgIDQxNzUxLCA2OTc3NiwgODk0MSwgOTgzNTU2LCA0NTU0LCAwLCA5MDIzLCAxMTY4NSwgMCwgOTkyOCwgNzg2MTcsIDAsIAorICAgIDExNDM3LCA0Mzc0MSwgOTIxNjMsIDEyMDcwMCwgNjM5NjcsIDk4MzQ3NSwgNDEyMDYsIDEyMDcyNCwgOTA0OSwgNDExODUsIAorICAgIDQzMTY2LCAwLCAxMTY4MCwgOTI2MTksIDExNjg2LCA3ODU0NCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMCwgCisgICAgOTIxODMsIDY0NTIzLCAxMDM0MywgMTA0MDcsIDAsIDY2NjcxLCAxMTQ2NiwgMCwgMTI4MDAzLCA0Mjg5MCwgNzQwMTMsIAorICAgIDEyMDUwLCA2ODIwMSwgMjg2MCwgMCwgMCwgMCwgNDI3OTIsIDU3NDMsIDEwNDI0LCAxMjA2NSwgNDI4NzIsIDAsIDkyMzQyLCAKKyAgICAwLCA4ODc1LCAwLCAwLCA5MTc5OTEsIDc1MzEsIDEyODQ3LCAyNDEzLCAwLCA3ODYzNSwgOTYyLCAwLCAxMjg1NSwgNDExOTYsIAorICAgIDQyNTY0LCAwLCAxNTgyLCA5ODM3MDYsIDU1MDgsIDAsIDAsIDAsIDEwODAxLCA2OTg3NiwgOTIzNTQsIDAsIDcxNzMsIDQ5NiwgCisgICAgMTA0MzksIDQzMTMsIDY0NjA3LCA2OTYzOCwgNzg2MCwgMCwgOTA2LCA0Mjc5MywgMjg0MiwgNjQwNSwgNjQ3MjIsIDEzMTMyLCAKKyAgICA3OTgsIDY0Njk0LCAxMjgwMSwgODQwNiwgMTE1MywgOTIxNzMsIDY0Nzg4LCAwLCA4MDU0LCA5MTc0LCAxMjg2NTIsIAorICAgIDkxNzk3NiwgOTk2NCwgNzQ0MDksIDQxNjExLCA0NjQyLCA2NjU3NCwgMTE1NTYsIDkxNzk4MiwgMCwgNzg4NTcsIDQyMDg5LCAKKyAgICA3ODg1NSwgOTAwOCwgMCwgMTI2NTkyLCAxOTUwOTYsIDQyMDc5LCA5MTc5ODEsIDc3OTI0LCA0MjUxMywgNzc5MjcsIAorICAgIDQyODQyLCA3Mzk4NSwgNjUyODUsIDExODk3NCwgMTI3MDAzLCA5ODM2OTMsIDAsIDAsIDAsIDExMzM1LCA2NDA2OSwgCisgICAgNDIwOTMsIDM5MjAsIDAsIDAsIDAsIDAsIDQ1ODAsIDQxOTY3LCA5ODM3MjMsIDY0Mzg0LCA5MjE2NywgOTM5ODQsIDMwMjEsIAorICAgIDQyMDA0LCAwLCAwLCA0MjMxNywgNDE5OTgsIDAsIDY5NDYsIDAsIDAsIDAsIDEyODE5MywgNjUyMDQsIDAsIDY4MTEzLCAKKyAgICA0MjY5MCwgOTg4MCwgNDIwMTAsIDc0ODI0LCA2NDU4OSwgMTAxMTEsIDY0ODc1LCAxMjc4ODAsIDY4Mzk5LCA0Mzk5OCwgCisgICAgMTEzNjAsIDAsIDAsIDAsIDExODgyNiwgNDIxNDksIDAsIDAsIDAsIDY0OTQxLCA3NzkxOSwgMTIwNDIxLCAxMjgwNzcsIDAsIAorICAgIDU1MjQ3LCA0MTEwLCA2NjAwNSwgNjk1OSwgMTA5MjksIDExOTExMCwgMCwgNjY3MDMsIDc3OTIxLCA4NjE3LCA0MTk4MiwgCisgICAgNjAyNSwgNjkyNDIsIDk4MzE3NiwgMCwgMCwgMCwgOTU5NywgNDIwOTksIDQzMTcyLCA5ODMzNjgsIDEwMTE3LCA5ODMxNjksIAogICAgIDkyMjk3LCA0MTYzNiwgMCwgMCwgMTIwNjgxLCA4MzAxLCAwLCAwLCAxODcsIDAsIDY1NjY5LCAxMjgzMzksIDQ5NjMsIDAsIAotICAgIDEyNzUxNywgMCwgODk2NCwgNjU2NzYsIDY1Nzg1LCAwLCA0MTk0OCwgMCwgMCwgMCwgNDE5NDIsIDY1NDQ5LCAzMTYwLCAKLSAgICAxMDA4MSwgMTMyMjYsIDQyMTIxLCA0MjQ3NSwgNDI2NjMsIDEyODIxMCwgNDE3NjYsIDAsIDY1ODgyLCA3ODg0OSwgNDE3NjAsIAotICAgIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIDY3ODU5LCA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgNzM4MzUsIAotICAgIDc4ODgsIDAsIDM5ODAsIDAsIDQyNjU2LCA0MTUwNywgODgwNiwgNzAyMywgMCwgNzQyNzksIDk0NDcsIDc4NjUxLCA3ODY3LCAKLSAgICA2OTIxOCwgNjIzNiwgMCwgMCwgMTA1MDUsIDAsIDEyODUxLCAxMTg5NDgsIDM0OCwgNTQ3NCwgMTI4ODQzLCAzMTAzLCAwLCAKLSAgICA0MTc1MywgMTI4NTQwLCAwLCAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCA0MTc1NiwgCi0gICAgNDMzNDcsIDQyNTYwLCA1MzkxLCA0MTc0NiwgMTE5MTQ3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDc0MzYwLCAyNjkxLCAwLCAKLSAgICA2NTU1MywgNzkzMywgNTU2MiwgNjk4MDAsIDEyODI2NSwgNDEyNjIsIDEyODE0NiwgNjQ0MjEsIDc0ODQ2LCA0MTI1MSwgMCwgCi0gICAgMCwgMzk3OSwgMCwgMCwgNzQ4MTMsIDAsIDAsIDAsIDAsIDkyNTI0LCA0MTI2NiwgMCwgMCwgMTI4ODM2LCAxMDU4NSwgCi0gICAgNjU3NDEsIDQxNzM3LCA5NTc0LCAyNjY2LCAwLCA0MTczOCwgODMxLCA0MTksIDEzMTI2LCAxMDcxNiwgMCwgNDI4MjIsIDAsIAotICAgIDY0MzQsIDAsIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgMCwgOTE2LCA3NjksIDQxNzQyLCAxMTk2OCwgNzQ4MDUsIAotICAgIDY0MzMsIDU1NjMsIDU0NywgMTk0MywgNjQzOSwgNTU2MCwgNDk5NCwgNDg3LCAwLCA0NDk3LCAzNzU0LCAxMjcwNTYsIAotICAgIDEyMDQyNCwgOTAzOSwgMCwgNDE3NzYsIDAsIDg3MTYsIDE1OTUsIDQxNjE1LCAwLCAwLCA3NDI2MCwgMCwgNDI4NTQsIAotICAgIDQzMjE5LCAxMjg3MDksIDAsIDEyMTg1LCAxMjg4NzksIDAsIDY4MzU1LCA2ODM1NywgMCwgNDI4NTYsIDg2MzQsIDAsIDAsIAotICAgIDQyMDksIDEyMDcwMiwgMCwgNjU4NzksIDQxNTM4LCA2NTYxMiwgMTI3NTQzLCA2NjksIDU2NzksIDAsIDY5Nzg2LCA5MjU0MCwgCi0gICAgMCwgMCwgNTY3OCwgMTE4MjEsIDAsIDY3MTEsIDQ2MCwgMCwgMCwgMCwgMCwgMTIwNzQ3LCAwLCAwLCA3ODA1MCwgMTE5MDIyLCAKLSAgICAwLCAwLCAwLCA3NzgyLCA5MDQ0LCA0OTc0LCAxMTc2MCwgNzg0OTQsIDc1NzcsIDY1NzExLCA0MTkxMiwgMTIxNiwgMCwgCi0gICAgMTI4MDc5LCA1NzkyLCAwLCAwLCA3ODUwMSwgMCwgMjkzMywgMTIyNDQsIDAsIDU2ODMsIDAsIDAsIDc4MTE5LCAxNTQ5LCAwLCAKLSAgICAwLCAxMjAzOTgsIDU2ODIsIDYyMDYsIDg2NzAsIDEwMjU2LCA1NjgwLCA5MTc1NjgsIDEwMDAxLCAwLCA2OTc2OCwgMTQ0OSwgCi0gICAgMTAyNDEsIDc4MjkwLCAxMjgyMjgsIDAsIDEwNTUyLCA2NDM0MiwgNDE5MjIsIDEyODU0OCwgODU4NCwgMCwgNTU2NywgCi0gICAgMjcxNywgMCwgMCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgMCwgMTI4MDI2LCAwLCA2NTcwOCwgNjU3MDksIAotICAgIDU1NjYsIDY5ODAzLCA2NTcwNCwgNjU3MDUsIDExOTA0LCA0Mjg3NSwgNDMzNzMsIDQyNTM5LCA1OTQyLCA4NDY4LCAKKyAgICAxMjc1MTcsIDAsIDg5NjQsIDY1Njc2LCA3Nzc1LCAwLCA0MTk0OCwgMCwgMCwgMCwgNDE5NDIsIDY1NDQ5LCAzMTYwLCAKKyAgICAxMDA4MSwgMTMyMjYsIDQyMTIxLCA0MjQ3NSwgNDI2NjMsIDEyODIxMCwgNDE3NjYsIDExOTExNCwgNjU4ODIsIDc4ODQ5LCAKKyAgICA0MTc2MCwgMTE4OSwgOTA1LCA0ODAsIDEwOTg1LCA0MTczMywgNjc4NTksIDk2MjksIDY3NDIsIDE3NDUsIDQzNjI1LCAKKyAgICA3MzgzNSwgNzg4OCwgMCwgMzk4MCwgMCwgNDI2NTYsIDQxNTA3LCA4ODA2LCA3MDIzLCAwLCA3NDI3OSwgOTQ0NywgNzg2NTEsIAorICAgIDc4NjcsIDY5MjE4LCA2MjM2LCA5ODMxMzQsIDAsIDEwNTA1LCAwLCAxMjg1MSwgMTE4OTQ4LCAzNDgsIDU0NzQsIDEyODg0MywgCisgICAgMzEwMywgMCwgNDE3NTMsIDEyODU0MCwgMCwgMCwgNzg4NDQsIDc4ODQ1LCA0MTczOSwgNzg4NDMsIDQyNTE1LCAxMDkzMSwgCisgICAgNDE3NTYsIDQzMzQ3LCA0MjU2MCwgNTM5MSwgNDE3NDYsIDExOTE0NywgOTI1OTEsIDQxMjU5LCA1NTYxLCA2OTkzMCwgCisgICAgMjY5MSwgMCwgNjU1NTMsIDc5MzMsIDU1NjIsIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMjgxNDYsIDY0NDIxLCA3NDg0NiwgCisgICAgNDEyNTEsIDAsIDAsIDM5NzksIDAsIDAsIDc0ODEzLCA5ODM3MzAsIDAsIDAsIDAsIDkyNTI0LCA0MTI2NiwgMCwgNjY1NjYsIAorICAgIDEyODgzNiwgMTA1ODUsIDY1NzQxLCA0MTczNywgOTU3NCwgMjY2NiwgMCwgNDE3MzgsIDgzMSwgNDE5LCAxMzEyNiwgCisgICAgMTA3MTYsIDAsIDQyODIyLCAwLCA2NDM0LCAwLCA2OTM5LCA3NzY2LCA2NDMyLCAxMjgxMDYsIDY5OTMyLCA5MTYsIDc2OSwgCisgICAgNDE3NDIsIDExOTY4LCA3NDgwNSwgNjQzMywgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCA0OTk0LCA0ODcsIAorICAgIDEyNjUzNywgNDQ5NywgMzc1NCwgMTI3MDU2LCAxMjA0MjQsIDkwMzksIDAsIDQxNzc2LCAwLCA4NzE2LCAxNTk1LCA0MTYxNSwgCisgICAgMCwgMCwgNzQyNjAsIDAsIDQyODU0LCA0MzIxOSwgMTI4NzA5LCA5ODM0NTIsIDEyMTg1LCAxMjg4NzksIDcwMDcyLCAKKyAgICA2ODM1NSwgNjgzNTcsIDAsIDQyODU2LCA4NjM0LCAwLCA5ODMzODksIDQyMDksIDEyMDcwMiwgMCwgNjU4NzksIDQxNTM4LCAKKyAgICA2NTYxMiwgMTI3NTQzLCA2NjksIDU2NzksIDAsIDY5Nzg2LCA5MjU0MCwgMCwgOTgzNDU2LCA1Njc4LCAxMTgyMSwgMCwgCisgICAgNjcxMSwgNDYwLCAwLCAwLCA5ODM0NTMsIDAsIDEyMDc0NywgMCwgMCwgNzgwNTAsIDExOTAyMiwgMCwgOTgzNDU0LCAwLCAKKyAgICA3NzgyLCA5MDQ0LCA0OTc0LCAxMTc2MCwgNzg0OTQsIDc1NzcsIDY1NzExLCA0MTkxMiwgMTIxNiwgMCwgMTI4MDc5LCAKKyAgICA1NzkyLCAwLCAwLCA3ODUwMSwgMCwgMjkzMywgMTIyNDQsIDAsIDU2ODMsIDk4MzM4NCwgMCwgNzgxMTksIDE1NDksIDAsIDAsIAorICAgIDEyMDM5OCwgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDY5OTM1LCAxMDAwMSwgMTI4NTEyLCA2OTc2OCwgMTQ0OSwgCisgICAgMTAyNDEsIDc4MjkwLCAxMjgyMjgsIDAsIDEwNTUyLCA2NDM0MiwgNDE5MjIsIDEyODU0OCwgODU4NCwgNjgwMzAsIDU1NjcsIAorICAgIDI3MTcsIDAsIDAsIDU1NjQsIDQyODg2LCA0MTkwOCwgNDI4ODIsIDU1NjUsIDk4MzI0OCwgMTI4MDI2LCAwLCA2NTcwOCwgCisgICAgNjU3MDksIDU1NjYsIDY5ODAzLCA2NTcwNCwgNjU3MDUsIDExOTA0LCA0Mjg3NSwgNDMzNzMsIDQyNTM5LCA1OTQyLCA4NDY4LCAKICAgICAxMjA1NjEsIDEwMzYxLCAxMDQyNSwgNjU2OTcsIDY1Njk4LCA2NTY5OSwgMCwgNjY1OTgsIDAsIDY0NjY0LCAxMDY0NywgCi0gICAgNzg3MDIsIDc4NzAzLCA3ODY5MCwgNDU3LCA3ODUwMiwgNjU3MDEsIDE5MzQsIDQzMDA2LCAwLCA4ODAyLCA3ODcxMCwgCisgICAgNzg3MDIsIDc4NzAzLCA3ODY5MCwgNDU3LCA3ODUwMiwgNjU3MDEsIDE5MzQsIDQzMDA2LCAxMTk5MDMsIDg4MDIsIDc4NzEwLCAKICAgICA2NTEzMCwgMTE3NDcsIDc4NzA5LCA2MDg3LCA3ODcwNSwgNzg3MTYsIDQxNzU3LCA3ODcxMSwgODA0MywgODk1MCwgNjU2OTQsIAogICAgIDY0NDg1LCA0MzUzNCwgMTA0NTcsIDAsIDExOTYxLCA3ODcyNSwgNzg3MjIsIDc4NzIzLCA3ODcyMCwgNzg3MjEsIDAsIAotICAgIDY1NTE1LCA5NDk5LCAxMDAzNSwgMTMwNjksIDAsIDAsIDk4ODksIDY4MTg0LCA0MjgwNiwgMCwgNzI1NiwgMCwgMCwgMTY2NywgCi0gICAgNDIxNjEsIDAsIDQyNDI4LCAwLCA2OTM0LCAwLCAxMDgwMiwgNjQ4NjEsIDY1NTYsIDc4MzkwLCAwLCA4MTAxLCAzNjEwLCAwLCAKLSAgICA0MTc0OCwgNDk5NSwgOTU1LCA2NTkwNywgMTE5MjA4LCA1MzUwLCA2NDMzOSwgNzgzMDYsIDY0NTQ5LCAxMDg3NSwgCi0gICAgMTI4NjYyLCA1NDc3LCA2NTY5MiwgMCwgMTI4NTMyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgOTE3OTU0LCAwLCAzODc0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NTYwMywgMCwgNjU2ODcsIDAsIDQxMDM4LCA3NDAwOSwgMTE5NTcwLCA0MjIzOSwgODUzNiwgCi0gICAgNzg3NDAsIDAsIDc4NzI2LCA3NDQzMiwgNzI0LCAwLCAxNDU1LCA3ODc0OSwgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgCi0gICAgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCAwLCA0MzUyMCwgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDAsIDc4NzYzLCAKLSAgICA3ODc2NCwgNzg3NjAsIDEwNzg4LCA2MDg4LCA3ODc1OSwgNzg3NTUsIDE5MCwgMCwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAKLSAgICAwLCA0NDE3LCAwLCA5MjI2MSwgNjM3MCwgMCwgNzgyNywgNjg0NDEsIDY5NjUsIDAsIDAsIDEzMjAxLCAxMjgyMDUsIDAsIDAsIAotICAgIDc0MzgyLCA3Mzc4MSwgNzkxOCwgNzM5ODgsIDAsIDAsIDkxNzg4NCwgMTcyOCwgMCwgMTIwNzEwLCAxNzgsIDEyOTcyLCAKLSAgICA5MjY3OSwgMCwgOTE3ODg3LCA5MjU2MywgMCwgMCwgNzgzMjcsIDEyMDQwNSwgNjU2OTAsIDAsIDAsIDExOTA1NCwgMCwgCi0gICAgOTI1MiwgOTE3ODg5LCA0NjUyLCA2ODM3MSwgMCwgMCwgMCwgMTMwNjUsIDk5MjMsIDEwODA2LCAwLCAxMTc2MywgMCwgCi0gICAgMTIwNjg4LCA2NzIzLCA3ODE4NywgMCwgNjk5MywgMCwgMCwgODMzMywgMCwgMCwgMTEzOTAsIDAsIDc0NDY0LCAwLCAKLSAgICA5MjMyMCwgNzQwODAsIDAsIDAsIDExOTEwLCA5MjU1OSwgODI3OCwgODk2MywgNDAzNCwgMTI4NTYwLCAwLCA2NTM0NCwgCi0gICAgMTIwNTE3LCA0MTc0NywgMCwgMCwgODY3NywgMCwgMTI3MDcsIDkzNTAsIDY2MDM3LCAxMjgxODAsIDg4MzYsIDEyMzE1LCAKLSAgICAxMjc0NywgODMwMCwgMCwgMCwgNzQ5MSwgODg1NiwgMTI4MDY0LCAwLCA0MzE1MCwgMTI3NzY4LCAxMjA0MDQsIDY1Mzg5LCAKLSAgICAxMjA0MDIsIDEyMDQwMywgMTA4MTMsIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgMTIwMjQ0LCA2NTM2LCAxMjAyMzgsIAotICAgIDEyMDIzOSwgNjU1MTYsIDEyMzIxLCAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDEwMDA3LCAxMjAyNDYsIDk1ODgsIDEyMDI0OCwgCi0gICAgMTU5NiwgMTIwMzgzLCA0MTk5NCwgNjU4MDEsIDEyODgwOCwgMCwgNjY1NzIsIDAsIDAsIDEwNjEzLCA2Njk3LCAxMjgwNSwgCi0gICAgNDE5MjgsIDQwOTgxLCA3ODQwMywgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCA3NDU1NSwgNjU5NDAsIAotICAgIDQzMjU5LCAwLCA2MTA3LCAwLCAxMTkxNzcsIDAsIDc4NDAxLCAxMjg2NDEsIDExNzgzLCAzMzUsIDEyMDIyNywgNjQ2ODksIAotICAgIDQzOCwgNDUxMCwgNTc2NSwgODcyMSwgMTIwMjMzLCAxMTkyMjcsIDYwOTIsIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCAKLSAgICA4MDk2LCAxMDI4NCwgMTI4NTE1LCAwLCAwLCAxMDM4MCwgODczMywgMCwgMTI4MjQwLCA0MTYwMiwgMCwgOTIzMDgsIAotICAgIDc0ODMxLCA5MTc5MDEsIDAsIDczNzQ3LCA2NTM5OSwgMCwgNjQ1OTEsIDQyNDA1LCAwLCAxMjA4MjAsIDg0MywgMTE1NDEsIAotICAgIDAsIDkxNzg5OCwgMjA2NSwgNDE5MzUsIDc0NDk2LCA0MTkwMiwgMCwgMCwgMjE1LCA0MTI1OCwgNzc4NzUsIDQzMTU5LCAKLSAgICAxOTUzLCA5NTc5LCA0MTkzOCwgMTI1NiwgMzkxMCwgOTQwNywgNjI0MiwgMCwgMCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAKLSAgICAxMDcwMCwgODgwNSwgMTc0MiwgMCwgOTMzMywgODIwMiwgMTI3NzUwLCAwLCAwLCAwLCAwLCA3Mzg4MiwgNDk5LCAwLCAKLSAgICA0MzQ2NywgMCwgNDM4MTgsIDAsIDE3MTIsIDU5MzIsIDc3ODQ1LCA0MTc2MiwgMCwgMCwgMTE5NjcsIDE3NzUsIDAsIDAsIDAsIAotICAgIDAsIDEyODAwOSwgOTQ1OCwgMCwgNjQ3MCwgOTE4MCwgMTIwMzgwLCA0MzE3NiwgMCwgMCwgNDI3ODIsIDAsIDAsIDAsIAotICAgIDEyODMwOSwgNzQ3NzcsIDEyMDY2OSwgOTQxNCwgMTIwMzgyLCA3Mzc4MiwgNzM5NjksIDU2NSwgNDI0ODQsIDU3OTQsIDIwMSwgCi0gICAgMjY2MiwgNDIyOTIsIDAsIDgyNTQsIDAsIDEwOTc1LCAwLCAxMjA2MjUsIDc0NzYzLCAxMDIyLCA0MTA4LCAzODgwLCAKLSAgICA3NDI0NywgMCwgMCwgOTIyNjMsIDkxNzk4MCwgNzUwNywgMCwgNDMxNDksIDAsIDY1MDMxLCA3OTYxLCAxNjM2LCAwLCAKLSAgICA2NTAyOSwgNjUwMjQsIDAsIDEyNDczLCA2NTM0LCAwLCA5OSwgOTgsIDk3LCAxMjA1NzEsIDY3NTg0LCA0MDQ5LCA3NDE2MywgCi0gICAgMTI3MDY1LCA3MDkwLCAwLCA3ODkyLCA5MTc5NjksIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCA2NTU2MiwgNjY1OTksIDY2NzIyLCAKLSAgICAwLCA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDAsIDAsIDEyNTk2LCA2NjU5NSwgNDIyNTgsIDQyNTcwLCA1NTkzLCAKLSAgICAxMTkxNDgsIDEyMDcxMSwgOTI0MjUsIDEwMTAwLCA2MDYxLCA2NDg1NCwgMTE5LCAxMTgsIDExNywgMTE2LCAxMjk5OCwgCi0gICAgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIDExNCwgMTEzLCAxMTIsIDEwMywgMTAyLCAxMDEsIAotICAgIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCA0MTIxMiwgNzc5MzEsIDE1MzYsIDY0MDkzLCAKLSAgICA3Mzk3MCwgNzc5MzAsIDEyNzE1NywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgMTI3NDQsIDQ3NSwgMTIwMzk0LCAxMzI2NiwgCi0gICAgMTI3ODEzLCAxMjcxMTEsIDAsIDczOTI2LCAwLCAxMDY0NSwgMTIxMiwgNjU0MywgMCwgODEzNCwgMTI4MDI4LCAyOTEzLCAKLSAgICA3Mzg3MCwgMTI3MTEzLCAxODY2LCAwLCAxOTUwOTUsIDAsIDg5MjMsIDE2NDUsIDEyMDU5LCA2NjU4NSwgNzg3ODYsIDMxOTYsIAotICAgIDAsIDAsIDU5MzUsIDEyNTAsIDEyNzA2NiwgODE3NCwgOTc4NywgNjczMywgOTg1OSwgNzkxNiwgOTg2MSwgOTg2MCwgNTI1OCwgCi0gICAgMTg4MiwgMTg5MiwgNjczMSwgMTA4ODIsIDQwNSwgMTE0NTQsIDczOTExLCAwLCAxMjg3ODEsIDQxMTY5LCA4OTM5LCAKLSAgICA0MTI0NSwgMCwgNDExNzAsIDE0NTQsIDExMzY5LCA2NDc3LCAxMjE1NywgMCwgMCwgMCwgNDExNzIsIDc4NTUsIDAsIDAsIAotICAgIDEwNDgwLCAwLCAwLCA3NzkzNiwgODI2NCwgMTI2MTAsIDAsIDY0NSwgMCwgNzYwOSwgNDA5NzMsIDAsIDczODMzLCA3ODI0OSwgCi0gICAgNTgyNCwgOTg0LCA3NzkxOCwgMTA2ODgsIDU4NTEsIDAsIDc3MjksIDczOTgyLCAxMjA1MTgsIDAsIDE5NTA4NiwgNDMzNjksIAotICAgIDAsIDEyODE0MCwgNjg0MTUsIDAsIDQ1MzgsIDEyMDQwNiwgNDMxNDEsIDAsIDAsIDc0MjE0LCA3Mzg4NiwgMCwgMCwgCi0gICAgMTE4OTAyLCA0MzAwNSwgNzg0NDgsIDk1NTIsIDAsIDAsIDAsIDEyOTk3LCAwLCAwLCAwLCAwLCAyMzgxLCAxMjg4MywgCi0gICAgMTA5OTQsIDEwNTI5LCA0MTkwNiwgMCwgMCwgMCwgMTI0MjUsIDEwNjYxLCAxMDg1NiwgOTYxNCwgMjQyOCwgNDE0NzgsIAotICAgIDg1ODIsIDEwMDY0LCA3MzkzMCwgMCwgMCwgMCwgNjQ4OTYsIDExOTE2MiwgMTk1MiwgOTIxODEsIDg0NTUsIDEwMDgyLCAKLSAgICAxMTU3NSwgMCwgMTE5NTY2LCAwLCAxMjgwOCwgMTIxODMsIDYxNDUsIDExODk1NSwgNjQ5MjksIDkyNDMzLCAwLCAwLCAKLSAgICA0MzE4NiwgNDI1MDksIDAsIDM5MjIsIDkxODcsIDAsIDAsIDEwMTkxLCAxMTkwNTcsIDExNzUyLCAzMzUzLCA5MzU4LCAwLCAKLSAgICA5MTc5NTcsIDY2NjgwLCAxMjAwOTAsIDgyNDgsIDc5MzEsIDg1NTgsIDk3OTUsIDY4MzgwLCAwLCAwLCAxMjAwODIsIAotICAgIDEyMDA4MSwgMTIwMDg0LCA0MTAyNywgMTIwMDg2LCAwLCAxMjAwODgsIDEyMDA4NywgNzAxOSwgMTIwMDczLCAwLCAxMTc1MSwgCi0gICAgMTIwMDc4LCA3ODI5NCwgNjQ2NTcsIDg2NTcsIDEyMDA0OCwgODU5NCwgMTIwMDY4LCAwLCAwLCAxMjAwNjksIDEyMDA3MiwgCi0gICAgMTIwMDcxLCAwLCAwLCA0MzE1NCwgNDEwMjksIDAsIDExMzMyLCA2NTM4MCwgNzcyOCwgMCwgMTEyOTQsIDAsIDY2NjY1LCAKLSAgICA3ODUxLCAwLCA4Mzc1LCA4Njk5LCAwLCA0MjUyNCwgMCwgOTA4NSwgMCwgNzUwNCwgOTMyNywgNjE2MCwgMTI4MDk1LCAwLCAKLSAgICAwLCA4MDg4LCAwLCA3NDAxMiwgOTI1MDAsIDAsIDQ0MzksIDY5MjYsIDAsIDEyOTI0LCAxMjgyMjcsIDQyMzY5LCAwLCAKLSAgICA2NTQ5MSwgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIDAsIDExMjk2LCAwLCAwLCAwLCA2NTgyNSwgOTU3NywgCi0gICAgNjgxOTksIDAsIDY0NjcwLCAwLCA3ODA1NiwgNjc5MywgMTEyOTUsIDAsIDc4MDUzLCA3Mzg3MiwgMCwgMCwgMTA5MDIsIDAsIAotICAgIDAsIDc4MDcwLCA3ODA2OCwgMTA0NzIsIDI5OTUsIDAsIDAsIDY0NjgyLCAyMzcxLCA3ODA2OSwgMTIwODA4LCAyNTksIAotICAgIDEwMDksIDkyMTcxLCAyNDAyLCAyMzMzLCA2NDQwLCAwLCAwLCA2NTEyNSwgNDEyNDQsIDAsIDEzMjcxLCA5MTAzLCA0MTE4MCwgCi0gICAgMCwgMCwgMCwgMCwgMTAyMTksIDAsIDAsIDAsIDAsIDQzMTc4LCAxMjcwNzAsIDQxMjYxLCAxMTkzNjIsIDQzNjQwLCA4NjEzLCAKLSAgICAwLCAxMTg5ODksIDY3MzYsIDE5NTA5MiwgNDE0OTIsIDEyMDA1LCAxMjc4ODksIDAsIDE4OTAsIDEyMDA1NiwgMCwgMCwgMCwgCi0gICAgNzI5MywgNzk5MSwgMCwgMTA1NzgsIDAsIDc4MDc2LCAxOTQ3MzgsIDc4MDc3LCAwLCAwLCA3ODgwMCwgOTI2NTMsIDY0NDQ1LCAKLSAgICA0MjY2OCwgNjYzNSwgMCwgNjE2NCwgNjUxNzAsIDAsIDAsIDc2NzYsIDExNjY0LCAwLCAwLCA2OTcwNywgMCwgMTE4ODEyLCAKLSAgICAwLCAwLCAxMjgwNDUsIDkxNzUsIDExOTI1LCA3ODA0NSwgOTA4OCwgMCwgNjQ1NDUsIDEzOTYsIDAsIDc1NDYsIDM4NDcsIDAsIAotICAgIDEyNzgzNSwgNDk4NSwgMTMyODgsIDY3MiwgODA5OCwgNDMxOTYsIDE5NDc0NiwgMCwgMTI4MTI2LCAwLCA3NDA0MywgCi0gICAgNjUwNzIsIDE1NzcsIDExNzcyLCAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMCwgCi0gICAgMTI4NTg0LCAxMjYyMiwgMCwgMCwgMCwgMTk0NzE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAwLCAKLSAgICAxMjY5ODMsIDQyNzMxLCA5MjIwNSwgMCwgMCwgMCwgMzA1MSwgNTg2MiwgNzgyMywgOTI0NzgsIDAsIDEyMDQxMSwgMzI1MCwgCi0gICAgNDM5OTEsIDY5Njg3LCA2NjY0OSwgOTUxMCwgNjYyMzcsIDAsIDAsIDQxMDY2LCA2NDY3MywgOTE3OTYzLCA5MTc5NjQsIDAsIAotICAgIDM1MDUsIDg3MDcsIDkxNzk2OCwgNjcyNSwgMTI4MDEzLCA5MTc5NzEsIDkyMzE0LCAzNDcxLCA5MTc5NzAsIDU0NzksIDg4MiwgCi0gICAgNjY4NiwgMTE5NTg0LCAxMTYxMywgMTIwNzcyLCA0Mjc1NCwgMCwgMCwgOTI2OTYsIDAsIDAsIDAsIDEyODUyMywgMzIyNSwgCisgICAgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgNzEzMDksIDAsIDk4ODksIDY4MTg0LCA0MjgwNiwgMCwgNzI1NiwgMCwgMCwgCisgICAgMTY2NywgNDIxNjEsIDAsIDQyNDI4LCAwLCA2OTM0LCAwLCAxMDgwMiwgNjQ4NjEsIDY1NTYsIDc4MzkwLCAwLCA4MTAxLCAKKyAgICAzNjEwLCA5ODMxOTksIDQxNzQ4LCA0OTk1LCA5NTUsIDY1OTA3LCAxMTkyMDgsIDUzNTAsIDY0MzM5LCA3ODMwNiwgNjQ1NDksIAorICAgIDEwODc1LCAxMjg2NjIsIDU0NzcsIDY1NjkyLCAwLCAxMjg1MzIsIDEyMDM5NywgMTI4OTYsIDEwNDU2LCA5MTc5NTQsIDAsIAorICAgIDM4NzQsIDAsIDAsIDk4MzYxOSwgMTIwMzMxLCAwLCAwLCA2NTYwMywgMCwgNjU2ODcsIDAsIDQxMDM4LCA3NDAwOSwgCisgICAgMTE5NTcwLCA0MjIzOSwgODUzNiwgNzg3NDAsIDc4MzI0LCA3ODcyNiwgNzQ0MzIsIDcyNCwgMCwgMTQ1NSwgNzg3NDksIAorICAgIDcxODMsIDY0NTgzLCA3ODc0NywgNjg0NDMsIDQxNzUsIDc4NzQxLCA0MzYxNCwgNjk4MDEsIDkzOSwgMCwgNDM1MjAsIAorICAgIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAwLCA3ODc2MywgNzg3NjQsIDc4NzYwLCAxMDc4OCwgNjA4OCwgNzg3NTksIDc4NzU1LCAKKyAgICAxOTAsIDAsIDEyNTkzLCAwLCA4MTg4LCA2NDQwOCwgMCwgNDQxNywgOTgzMjExLCA5MjI2MSwgNjM3MCwgMCwgNzgyNywgCisgICAgNjg0NDEsIDY5NjUsIDAsIDAsIDEzMjAxLCAxMjgyMDUsIDY5ODk2LCAwLCA3NDM4MiwgNzM3ODEsIDc5MTgsIDczOTg4LCAwLCAKKyAgICAwLCA5MTc4ODQsIDE3MjgsIDAsIDQzNzY0LCAxNzgsIDEyOTcyLCA5MjY3OSwgMCwgOTE3ODg3LCA5MjU2MywgOTgzMzczLCAKKyAgICAwLCA3ODMyNywgMTIwNDA1LCA2NTY5MCwgMCwgMCwgMTE5MDU0LCAwLCA5MjUyLCA5MTc4ODksIDQ2NTIsIDY4MzcxLCAwLCAKKyAgICAwLCAwLCAxMzA2NSwgOTkyMywgMTA4MDYsIDAsIDExNzYzLCA3MDAxNiwgMTIwNjg4LCA2NzIzLCA3ODE4NywgMCwgNjk5MywgCisgICAgMCwgMCwgODMzMywgMCwgMCwgMTEzOTAsIDAsIDc0NDY0LCAwLCA5MjMyMCwgNzQwODAsIDk4MzMwNywgNjk5MTEsIDExOTEwLCAKKyAgICA5MjU1OSwgODI3OCwgODk2MywgNDAzNCwgMTI4NTYwLCAwLCA2NTM0NCwgMTIwNTE3LCA0MTc0NywgMCwgMCwgODY3NywgMCwgCisgICAgMTI3MDcsIDkzNTAsIDY2MDM3LCAxMjgxODAsIDg4MzYsIDEyMzE1LCAxMjc0NywgODMwMCwgOTgzNzQxLCAwLCA3NDkxLCAKKyAgICA4ODU2LCA3MTM2MSwgMCwgNDMxNTAsIDEyNzc2OCwgMTIwNDA0LCA2NTM4OSwgMTIwNDAyLCAxMjA0MDMsIDEwODEzLCAKKyAgICAyNTkyLCAxMjg1MywgNDMyNjksIDcyNjMsIDEyMDI0NCwgNjUzNiwgMTIwMjM4LCAxMjAyMzksIDY1NTE2LCAxMjMyMSwgCisgICAgMTIwMzkxLCAxMjAzODgsIDU1Mjg3LCAxMDAwNywgMTIwMjQ2LCA5NTg4LCAxMjAyNDgsIDE1OTYsIDEyMDM4MywgNDE5OTQsIAorICAgIDY1ODAxLCAxMjg4MDgsIDAsIDY2NTcyLCAwLCAwLCAxMDYxMywgNjY5NywgMTI4MDUsIDQxOTI4LCA0MDk4MSwgNzg0MDMsIAorICAgIDc4NDA5LCA1MDA2LCA2NDMyOCwgMCwgOTkzMSwgMCwgODgyNSwgNzQ1NTUsIDY1OTQwLCA0MzI1OSwgMCwgNjEwNywgMCwgCisgICAgMTE5MTc3LCAwLCA3ODQwMSwgMTI4NjQxLCAxMTc4MywgMzM1LCAxMjAyMjcsIDY0Njg5LCA0MzgsIDQ1MTAsIDU3NjUsIAorICAgIDg3MjEsIDEyMDIzMywgMTE5MjI3LCA2MDkyLCAxMjg0MCwgNDMxMTIsIDg4NzYsIDEyMDIzMSwgODA5NiwgMTAyODQsIAorICAgIDEyODUxNSwgMCwgMCwgMTAzODAsIDg3MzMsIDk4MzA3MiwgMTI4MjQwLCA0MTYwMiwgMCwgOTIzMDgsIDc0ODMxLCAKKyAgICA5MTc5MDEsIDAsIDczNzQ3LCA2NTM5OSwgMCwgNjQ1OTEsIDQyNDA1LCAwLCAxMjA4MjAsIDg0MywgMTE1NDEsIDAsIAorICAgIDkxNzg5OCwgMjA2NSwgNDE5MzUsIDc0NDk2LCA0MTkwMiwgMCwgMCwgMjE1LCA0MTI1OCwgNzc4NzUsIDQzMTU5LCAxOTUzLCAKKyAgICA5NTc5LCA0MTkzOCwgMTI1NiwgMzkxMCwgOTQwNywgNjI0MiwgMCwgOTgzMTAwLCA0MTI1NywgNDE5MDAsIDg2NzUsIAorICAgIDEwNzAwLCA4ODA1LCAxNzQyLCAwLCA5MzMzLCA4MjAyLCAxMjc3NTAsIDAsIDk4MzE5NywgMCwgMCwgNzM4ODIsIDQ5OSwgCisgICAgOTgzMDQ5LCA0MzQ2NywgMCwgNDM4MTgsIDAsIDE3MTIsIDU5MzIsIDc3ODQ1LCA0MTc2MiwgOTgzMTA0LCAwLCAxMTk2NywgCisgICAgMTc3NSwgMCwgMCwgMCwgMCwgMTI4MDA5LCA5NDU4LCAwLCA2NDcwLCA5MTgwLCAxMjAzODAsIDQzMTc2LCAwLCAwLCAKKyAgICA0Mjc4MiwgMCwgMCwgMCwgMTI4MzA5LCA3NDc3NywgMTIwNjY5LCA5NDE0LCAxMjAzODIsIDczNzgyLCA3Mzk2OSwgNTY1LCAKKyAgICA0MjQ4NCwgNTc5NCwgMjAxLCAyNjYyLCA0MjI5MiwgMCwgODI1NCwgMCwgMTA5NzUsIDAsIDEyMDYyNSwgNzQ3NjMsIDEwMjIsIAorICAgIDQxMDgsIDM4ODAsIDc0MjQ3LCAwLCAwLCA5MjI2MywgOTE3OTgwLCA3NTA3LCAwLCA0MzE0OSwgMCwgNjUwMzEsIDc5NjEsIAorICAgIDE2MzYsIDAsIDY1MDI5LCA2NTAyNCwgMCwgMTI0NzMsIDY1MzQsIDAsIDk5LCA5OCwgOTcsIDEyMDU3MSwgNjc1ODQsIAorICAgIDQwNDksIDc0MTYzLCAxMjcwNjUsIDcwOTAsIDAsIDc4OTIsIDkxNzk2OSwgMTA3NzcsIDkxNzgwMywgNjUzMTAsIDY1NTYyLCAKKyAgICA2NjU5OSwgNjY3MjIsIDAsIDgwMzksIDMzNjMsIDY2NTk0LCA0MzQzNCwgMCwgMCwgMTI1OTYsIDY2NTk1LCA0MjI1OCwgCisgICAgNDI1NzAsIDU1OTMsIDExOTE0OCwgMTIwNzExLCA5MjQyNSwgMTAxMDAsIDYwNjEsIDY0ODU0LCAxMTksIDExOCwgMTE3LCAKKyAgICAxMTYsIDEyOTk4LCAxMjIsIDEyMSwgMTIwLCAxMTEsIDExMCwgMTA5LCAxMDgsIDExNSwgMTE0LCAxMTMsIDExMiwgMTAzLCAKKyAgICAxMDIsIDEwMSwgMTAwLCAxMDcsIDEwNiwgMTA1LCAxMDQsIDY0MzYsIDczOTc0LCA1MzQsIDQxMjEyLCA3NzkzMSwgMTUzNiwgCisgICAgNjQwOTMsIDczOTcwLCA3NzkzMCwgMTI3MTU3LCAwLCA2MDIwLCAxMjcxNiwgMTI3MTEyLCAxMjc0NCwgNDc1LCAxMjAzOTQsIAorICAgIDEzMjY2LCAxMjc4MTMsIDEyNzExMSwgMCwgNzM5MjYsIDAsIDEwNjQ1LCAxMjEyLCA2NTQzLCA5ODMyOTksIDgxMzQsIAorICAgIDEyODAyOCwgMjkxMywgNzM4NzAsIDEyNzExMywgMTg2NiwgMCwgMTk1MDk1LCAwLCA4OTIzLCAxNjQ1LCAxMjA1OSwgCisgICAgNjY1ODUsIDcxMjk3LCAzMTk2LCAwLCAwLCA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIDk3ODcsIDY3MzMsIDk4NTksIAorICAgIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIDE4ODIsIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIDExNDU0LCA3MzkxMSwgMCwgCisgICAgMTI4NzgxLCA0MTE2OSwgODkzOSwgNDEyNDUsIDAsIDQxMTcwLCAxNDU0LCAxMTM2OSwgNjQ3NywgMTIxNTcsIDAsIDAsIDAsIAorICAgIDQxMTcyLCA3ODU1LCAwLCAwLCAxMDQ4MCwgMCwgMCwgNzc5MzYsIDgyNjQsIDEyNjEwLCA5ODMzMDAsIDY0NSwgMTI2NjE2LCAKKyAgICA3NjA5LCA0MDk3MywgNjk5NDMsIDczODMzLCA2OTk0OCwgNTgyNCwgOTg0LCA3NzkxOCwgMTA2ODgsIDU4NTEsIDAsIDc3MjksIAorICAgIDczOTgyLCAxMjA1MTgsIDAsIDE5NTA4NiwgNDMzNjksIDAsIDEyODE0MCwgNjg0MTUsIDk4MzA5MywgNDUzOCwgMTIwNDA2LCAKKyAgICA0MzE0MSwgMCwgOTgzMjA4LCA3NDIxNCwgNzM4ODYsIDAsIDAsIDExODkwMiwgNDMwMDUsIDc4NDQ4LCA5NTUyLCAwLCAwLCAKKyAgICA5ODMxNTksIDEyOTk3LCAwLCAwLCAwLCAwLCAyMzgxLCAxMjg4MywgMTA5OTQsIDEwNTI5LCA0MTkwNiwgMCwgMCwgMCwgCisgICAgMTI0MjUsIDEwNjYxLCAxMDg1NiwgOTYxNCwgMjQyOCwgNDE0NzgsIDg1ODIsIDEwMDY0LCA3MzkzMCwgMCwgMCwgMCwgCisgICAgNjQ4OTYsIDExOTE2MiwgMTk1MiwgOTIxODEsIDg0NTUsIDEwMDgyLCAxMTU3NSwgOTgzNDgyLCAxMTk1NjYsIDAsIDEyODA4LCAKKyAgICAxMjE4MywgNjE0NSwgMTE4OTU1LCA2NDkyOSwgOTI0MzMsIDAsIDk4MzE5MywgNDMxODYsIDQyNTA5LCAwLCAzOTIyLCAKKyAgICA5MTg3LCA5ODM2MTQsIDAsIDEwMTkxLCAxMTkwNTcsIDExNzUyLCAzMzUzLCA5MzU4LCAwLCA3MTM2NiwgNjY2ODAsIAorICAgIDEyMDA5MCwgODI0OCwgNzkzMSwgODU1OCwgOTc5NSwgNjgzODAsIDk4MzI4OSwgMCwgMTIwMDgyLCAxMjAwODEsIDEyMDA4NCwgCisgICAgNDEwMjcsIDEyMDA4NiwgMCwgMTIwMDg4LCA3MzY2LCA3MDE5LCAxMjAwNzMsIDAsIDExNzUxLCAxMjAwNzgsIDc4Mjk0LCAKKyAgICA2NDY1NywgODY1NywgMTIwMDQ4LCA4NTk0LCAxMjAwNjgsIDAsIDAsIDEyMDA2OSwgMTIwMDcyLCAxMjAwNzEsIDAsIDAsIAorICAgIDQzMTU0LCA0MTAyOSwgMCwgMTEzMzIsIDY1MzgwLCA3NzI4LCA5NDA3NywgMTEyOTQsIDAsIDY2NjY1LCA3ODUxLCAwLCAKKyAgICA4Mzc1LCA4Njk5LCAwLCA0MjUyNCwgMCwgOTA4NSwgOTQwNDEsIDc1MDQsIDkzMjcsIDYxNjAsIDEyODA5NSwgOTgzODU1LCAKKyAgICAwLCA4MDg4LCAwLCA3NDAxMiwgOTI1MDAsIDAsIDQ0MzksIDY5MjYsIDk4MzA0NywgMTI5MjQsIDEyODIyNywgNDIzNjksIAorICAgIDQzNTAsIDY1NDkxLCA2NTE0NSwgOTA0MSwgNDM1NTksIDY0NTc3LCAxMDgyNiwgMCwgMTEyOTYsIDk4MzI3NSwgMCwgMCwgCisgICAgNjU4MjUsIDk1NzcsIDY4MTk5LCAwLCA2NDY3MCwgOTgzMTIxLCA3ODA1NiwgNjc5MywgMTEyOTUsIDAsIDc4MDUzLCAKKyAgICA3Mzg3MiwgMCwgMCwgMTA5MDIsIDAsIDAsIDc4MDcwLCA3ODA2OCwgMTA0NzIsIDI5OTUsIDAsIDAsIDY0NjgyLCAyMzcxLCAKKyAgICA3ODA2OSwgMTIwODA4LCAyNTksIDEwMDksIDkyMTcxLCAyNDAyLCAyMzMzLCA2NDQwLCAxOTQ3NDEsIDAsIDY1MTI1LCAKKyAgICA0MTI0NCwgMCwgMTMyNzEsIDkxMDMsIDIyNzgsIDAsIDAsIDAsIDAsIDEwMjE5LCAwLCAwLCAwLCAwLCA0MzE3OCwgCisgICAgMTI3MDcwLCA0MTI2MSwgMTE5MzYyLCA0MzY0MCwgODYxMywgMCwgOTQwNDksIDY3MzYsIDE5NTA5MiwgNDE0OTIsIDEyMDA1LCAKKyAgICA2OTkyNywgMCwgMTg5MCwgMTIwMDU2LCAwLCAwLCAwLCA3MjkzLCA3OTkxLCAwLCAxMDU3OCwgMCwgNzgwNzYsIDE5NDczOCwgCisgICAgNzgwNzcsIDY5OTI4LCAwLCA3ODgwMCwgOTI2NTMsIDY0NDQ1LCA0MjY2OCwgNjYzNSwgMCwgNjE2NCwgNjUxNzAsIDAsIDAsIAorICAgIDc2NzYsIDExNjY0LCAwLCA5ODM2NDksIDY5NzA3LCAwLCAxMTg4MTIsIDAsIDAsIDEyODA0NSwgOTE3NSwgMTE5MjUsIAorICAgIDc4MDQ1LCA5MDg4LCAwLCA2NDU0NSwgMTM5NiwgMCwgNzU0NiwgMzg0NywgMTI3MTc3LCAxMjc4MzUsIDQ5ODUsIDEzMjg4LCAKKyAgICA2NzIsIDgwOTgsIDQzMTk2LCAxOTQ3NDYsIDk4MzA5NiwgMTI4MTI2LCA0MjY1NSwgNzQwNDMsIDY1MDcyLCAxNTc3LCAKKyAgICAxMTc3MiwgMTMwNDEsIDU5MjgsIDQ1MjUsIDEwNjU4LCA2NTkxMSwgMTI2NiwgMTAxODAsIDAsIDEyODU4NCwgMTI2MjIsIDAsIAorICAgIDAsIDAsIDE5NDcxNCwgMTI3MTM5LCAxMzMxMCwgNzczLCAxOTkzMywgMTUzOSwgMCwgMTI2OTgzLCA0MjczMSwgNjc5NzIsIAorICAgIDAsIDAsIDAsIDMwNTEsIDU4NjIsIDc4MjMsIDkyNDc4LCAwLCAxMjA0MTEsIDMyNTAsIDQzOTkxLCA2OTY4NywgNjY2NDksIAorICAgIDk1MTAsIDY2MjM3LCA5ODMyOTQsIDAsIDQxMDY2LCA2NDY3MywgOTE3OTYzLCA5MTc5NjQsIDAsIDM1MDUsIDg3MDcsIAorICAgIDkxNzk2OCwgNjcyNSwgMTI4MDEzLCA5MTc5NzEsIDkyMzE0LCAzNDcxLCA5MTc5NzAsIDU0NzksIDg4MiwgNjY4NiwgCisgICAgMTE5NTg0LCAxMTYxMywgMTIwNzcyLCA0Mjc1NCwgMCwgOTgzMjk4LCA5MjY5NiwgMCwgMCwgMCwgMTI4NTIzLCAzMjI1LCAKICAgICA5MTc5OTYsIDQ0MzMsIDQxMTU2LCA0Mzk3MywgNDMxNzMsIDE0NDMsIDQzODEsIDAsIDAsIDEwOTI2LCAxMTc1NiwgMTE3NTcsIAogICAgIDY0ODc5LCA5MTc5NDksIDkxNzk1MCwgMTI3ODQ4LCAxMzIyNywgMCwgMTAwMjEsIDUxNjAsIDEzODcsIDAsIDkxNzk1MywgCiAgICAgNDE0MTgsIDAsIDY1OTE0LCA2NzIxLCAyMTcsIDkxNzk1NSwgOTE3OTYwLCA5MTc5NjEsIDEwNDQzLCAxMDc4OSwgNDExNTgsIAotICAgIDExOTI1NywgNDI3NCwgMCwgNDE0ODMsIDAsIDQxMjUwLCAwLCA0MjE3OSwgMCwgNTkzMSwgMTE3NDQsIDY5MjMyLCAwLCAKLSAgICA0MTI1MiwgNjY2ODIsIDAsIDExOTYzNywgNDEyNDksIDEzNjYsIDY0NjM1LCA2NTA0NywgMTI0NjYsIDAsIDAsIDQzOTcsIAorICAgIDExOTI1NywgNDI3NCwgOTgzMjkyLCA0MTQ4MywgMCwgNDEyNTAsIDAsIDQyMTc5LCAwLCA1OTMxLCAxMTc0NCwgNjkyMzIsIAorICAgIDAsIDQxMjUyLCA2NjY4MiwgMCwgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgMCwgMCwgNDM5NywgCiAgICAgMTI4MDM3LCAxMjgzMzYsIDQxMjk2LCA5NTQ1LCA0MTI5MSwgMTI4MDQ5LCAwLCA0MTQ4NSwgMzUxMSwgNDEyODIsIDU5MjMsIAogICAgIDEwNDAwLCAwLCAxMjg4MTgsIDc2MCwgMCwgMTIwODgsIDU3ODYsIDAsIDQyMjU2LCAxMTk4NjksIDExOTg2MCwgNDE3LCAKLSAgICA0MTQ3NCwgMTE5NTYyLCA0MTU2NSwgMCwgNTkzNCwgMTE5ODY3LCA2NjU4MywgMTE5MjMxLCA2NDg3NywgMCwgNjQ0ODEsIAorICAgIDQxNDc0LCAxMTk1NjIsIDQxNTY1LCAwLCA1OTM0LCAxMTk4NjcsIDY2NTgzLCAxMTkyMzEsIDY0ODc3LCAyMjg0LCA2NDQ4MSwgCiAgICAgNzg2MTQsIDY2MDEzLCA0MTk1NiwgNDM0NTUsIDEyNjk5NSwgMCwgMCwgMCwgNDIyNzMsIDU4MTksIDAsIDkxNzU1NiwgMCwgCi0gICAgMCwgMCwgNjU5MTAsIDEyNzc0NywgMTAyNDYsIDEyMDgxNiwgMCwgMTIzNywgMTAyNzQsIDQ1NTIsIDExOTU3NiwgMCwgMCwgCi0gICAgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgNDIwNjMsIDAsIDQyODExLCAxMDMxMiwgNzQxOTIsIDEyMDc5NCwgNzg0MCwgCi0gICAgMCwgNDM2MzAsIDEwMjUyLCAwLCAxMjgxMDQsIDQzMTg1LCAwLCA0Mzk2LCAwLCAxMTk4ODAsIDEwNzY5LCA5Njc2LCAKLSAgICAxMTkwNDEsIDAsIDk3NTMsIDAsIDg5NDQsIDAsIDAsIDEwNDczLCAwLCAwLCA2MDcyLCA0MzAyNSwgMTAyOTksIDAsIDAsIAotICAgIDEyMDYwOCwgNjYzMjYsIDAsIDAsIDAsIDQzODExLCA5MzMwLCAwLCA3MjIyLCAxMDI4MywgMTAzMTUsIDEwMzc5LCA0OTk2LCAKLSAgICAwLCAxMzI4MSwgNjY1MTcsIDc4NjUsIDEwMDg3LCA3ODM0MywgMCwgNzgzNDcsIDAsIDAsIDc1NjUsIDY2MzYzLCAxMjk1MiwgCi0gICAgNjQ4MDYsIDQzMTgwLCA3NzkyOCwgNjgwOTYsIDc3OTI5LCA0Mzk4MiwgNzQyODgsIDYyMiwgNzQwMjMsIDg4NSwgNDM0MDUsIAotICAgIDE2MDIsIDAsIDAsIDg1MiwgMCwgMTIxNjAsIDAsIDEwMjEyLCA2NTQzNSwgMCwgMTIwNzEsIDk2MDksIDEyMTU2LCAKLSAgICA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIDExMDM1LCAxMDQxMSwgOTE3OTg4LCAxMDI1NSwgNjcxMCwgMTAyNzksIDQxOTQsIAotICAgIDEwMzc1LCA5MTc5OTMsIDAsIDQzMTUsIDEyNjQ0LCAxMjc1MTYsIDc3OTM3LCA0MzYzOSwgNDMzNDMsIDAsIDkxNzk5OCwgCi0gICAgMTE1MDEsIDQxMTc3LCAxMjg2ODksIDAsIDkxNzc5MiwgMCwgOTI0MTMsIDg3MTUsIDAsIDQxMTc5LCAwLCA0MzMxMywgMCwgCi0gICAgNDExNzYsIDAsIDk5NCwgMCwgODQ1MiwgMTI3MTAzLCA3Mzk2NiwgMCwgMCwgNTkyMSwgMCwgMjU5NywgMCwgNTkyMiwgCi0gICAgMTE4OTAzLCA3Nzk0MywgNDE4NiwgOTI1MzEsIDEyNzEwNiwgMTI3MTA1LCA2NzE4LCAwLCA0NDA2LCA3NDYwMSwgODQ4MCwgCi0gICAgOTE5MiwgOTc0NywgMTI4Njk5LCA0NDEzLCA5MjE5NiwgNDIyNjgsIDMxOTgsIDU5MjQsIDU5MjAsIDkyNDY5LCA2OTIxLCAKLSAgICA3ODA4MSwgNzQwMDcsIDQyODY5LCA4NDE4LCAxMTY4MSwgNDMxNjksIDEwMTc2LCAwLCA3NDIsIDAsIDI4OTMsIDEwNzcyLCAKLSAgICA2NTI3NiwgNTkzNywgMTkxNCwgMjU1MywgMTE2ODIsIDY3NTYsIDEyODU5MCwgMTI4NjQ2LCA4MzYzLCAwLCAyOTkzLCAKLSAgICA3NzcyLCAzOTE2LCAwLCAxMjA0OTQsIDExNDEsIDQyNDA3LCA4MTU5LCA3MTgsIDc1NzIsIDk3MywgMCwgMTIwNzE4LCAKLSAgICAzMjM1LCAyNDE1LCA0MzE2NCwgMCwgODAxOCwgNDIzMzMsIDc0NzU2LCAxMDY3NSwgNjkzNywgNDI0ODYsIDQzMzgxLCAKLSAgICA2NTM5MCwgMTAwNjcsIDAsIDEyMDIsIDAsIDAsIDY1ODYzLCAwLCAwLCAwLCA3ODE4MiwgNjQ1NDIsIDMyNjAsIDczODI5LCAKLSAgICA2NTM4OCwgOTk0NSwgODQxOSwgNzgwNDIsIDY3MzgsIDAsIDQzNjgxLCA2OTcyOCwgMjA1OSwgMCwgMCwgNTUyMzcsIDE0MzEsIAotICAgIDAsIDY2NTY1LCAxMDgyMSwgMCwgMTI4MDQsIDEyODA3NiwgODIyOSwgMTIzNSwgMzMwNywgMTE0NzIsIDc4MDg5LCA3ODE4NCwgCi0gICAgNDU0NCwgMCwgMCwgMCwgMTc0MCwgNzgwOTcsIDg3NTgsIDk4NSwgMTI4NzIsIDY0NTExLCA3ODA5NCwgMTIwNjgsIDc4MTAyLCAKLSAgICAwLCAxMDE0MSwgMCwgNjM3NjEsIDg3ODUsIDQ0NzYsIDc4MTA5LCA2Mzc2MywgMTI2NTUsIDg5MDcsIDc4MTA1LCA3ODEwNiwgCi0gICAgNzgxMDMsIDc4MTA0LCAwLCAxMTk1NzIsIDEwNjY1LCA2NDYxNiwgNDE1NzIsIDAsIDEyNzE2MCwgMCwgNDE1NzMsIDAsIAotICAgIDM5MzEsIDEyMDI5NSwgNzQxNDMsIDAsIDAsIDAsIDAsIDExOTgyLCAwLCAwLCAwLCAxMjgwMTYsIDY0NDg0LCAwLCA0MTE2NywgCi0gICAgMCwgNDE3MzUsIDAsIDcxNywgMTA3NTQsIDAsIDAsIDEyNzk3OSwgMCwgNjM3NjcsIDAsIDE3ODAsIDY5MzYsIDAsIDAsIAotICAgIDgxOSwgMTA2MTEsIDk2OTQsIDEyNjk3OCwgMCwgMCwgMCwgMCwgODM0MywgODM0MiwgODM0NSwgODM0NCwgNjU3OCwgNzAwOSwgCisgICAgMTI2NjQzLCAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCA2NTc4NSwgMTIzNywgMTAyNzQsIDQ1NTIsIAorICAgIDExOTU3NiwgMCwgMCwgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgNDIwNjMsIDAsIDQyODExLCAxMDMxMiwgNjk4NDUsIAorICAgIDEyMDc5NCwgNzg0MCwgMCwgNDM2MzAsIDEwMjUyLCAwLCAxMjgxMDQsIDQzMTg1LCAwLCA0Mzk2LCAwLCAxMTk4ODAsIAorICAgIDEwNzY5LCA5Njc2LCAxMTkwNDEsIDAsIDk3NTMsIDAsIDg5NDQsIDAsIDAsIDEwNDczLCAwLCAwLCA2MDcyLCA0MzAyNSwgCisgICAgMTAyOTksIDAsIDAsIDEyMDYwOCwgNjYzMjYsIDk4MzQzOSwgMTI3Nzk0LCAwLCA0MzgxMSwgOTMzMCwgMTIwNTk2LCA3MjIyLCAKKyAgICAxMDI4MywgMTAzMTUsIDEwMzc5LCA0OTk2LCA5ODM3NzMsIDEzMjgxLCA2NjUxNywgNzg2NSwgMTAwODcsIDc4MzQzLCAwLCAKKyAgICA3ODM0NywgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCA2NDgwNiwgNDMxODAsIDc3OTI4LCA3NDE0LCA3NzkyOSwgNDM5ODIsIAorICAgIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCAwLCA4NTIsIDAsIDEyMTYwLCAwLCAxMDIxMiwgCisgICAgNjU0MzUsIDAsIDEyMDcxLCA5NjA5LCAxMjE1NiwgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAxMTAzNSwgMTA0MTEsIAorICAgIDkxNzk4OCwgMTAyNTUsIDY3MTAsIDEwMjc5LCA0MTk0LCAxMDM3NSwgNzM5MDAsIDAsIDQzMTUsIDEyNjQ0LCAxMjc1MTYsIAorICAgIDc3OTM3LCA0MzYzOSwgNDMzNDMsIDc4Nzc3LCA5MTc5OTgsIDExNTAxLCA0MTE3NywgMTI4Njg5LCAwLCA5MTc3OTIsIDAsIAorICAgIDkyNDEzLCA4NzE1LCAwLCA0MTE3OSwgMCwgNDMzMTMsIDAsIDQxMTc2LCAwLCA5OTQsIDAsIDg0NTIsIDEyNzEwMywgCisgICAgNzM5NjYsIDAsIDAsIDU5MjEsIDAsIDI1OTcsIDAsIDU5MjIsIDExODkwMywgNzc5NDMsIDQxODYsIDkyNTMxLCAxMjcxMDYsIAorICAgIDEyNzEwNSwgNjcxOCwgMCwgNDQwNiwgNzQ2MDEsIDg0ODAsIDkxOTIsIDk3NDcsIDEyNjUzMCwgNDQxMywgOTIxOTYsIAorICAgIDQyMjY4LCAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIAorICAgIDQzMTY5LCAxMDE3NiwgMCwgNzQyLCAwLCAyODkzLCAxMDc3MiwgNjUyNzYsIDU5MzcsIDE5MTQsIDI1NTMsIDExNjgyLCAKKyAgICA2NzU2LCAxMjg1OTAsIDEyODY0NiwgODM2MywgMCwgMjk5MywgNzc3MiwgMzkxNiwgNDMwMSwgMTIwNDk0LCAxMTQxLCAKKyAgICA0MjQwNywgODE1OSwgNzE4LCA3NTcyLCA5NzMsIDAsIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIAorICAgIDQyMzMzLCA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAwLCAxMjAyLCAwLCAwLCAKKyAgICA2NTg2MywgMCwgMCwgOTQwMTMsIDc4MTgyLCA2NDU0MiwgMzI2MCwgNzM4MjksIDY1Mzg4LCA5OTQ1LCA4NDE5LCA3ODA0MiwgCisgICAgNjczOCwgMCwgNDM2ODEsIDY5NzI4LCAyMDU5LCAwLCAwLCA1NTIzNywgMTQzMSwgMCwgNjY1NjUsIDEwODIxLCAwLCAKKyAgICAxMjgwNCwgMTI4MDc2LCA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCA0NTQ0LCAwLCAwLCAwLCAKKyAgICAxNzQwLCA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAxMjA2OCwgNzgxMDIsIDAsIDEwMTQxLCAwLCAKKyAgICA2Mzc2MSwgODc4NSwgNDQ3NiwgNzgxMDksIDYzNzYzLCAxMjY1NSwgODkwNywgNzgxMDUsIDc4MTA2LCA3ODEwMywgNzgxMDQsIAorICAgIDAsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCA0MTU3MiwgMCwgMTI3MTYwLCAwLCA0MTU3MywgMCwgMzkzMSwgMTIwMjk1LCAKKyAgICA3NDE0MywgMCwgMCwgMCwgNzg0NjAsIDExOTgyLCAwLCAwLCAwLCAxMjgwMTYsIDY0NDg0LCAwLCA0MTE2NywgMCwgNDE3MzUsIAorICAgIDk0MDE5LCA3MTcsIDEwNzU0LCAwLCAwLCAxMjc5NzksIDAsIDYzNzY3LCAwLCAxNzgwLCA2OTM2LCAwLCA5MjI1NCwgODE5LCAKKyAgICAxMDYxMSwgOTY5NCwgMTI2OTc4LCAwLCAwLCAwLCAwLCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCAKICAgICA3NTIzLCA2OTIyLCA4MzQ4LCA4MzQ3LCA3NTI1LCAzMzQ2LCA4MzM5LCAxMjgxNjUsIDEyODMzOCwgNTc1LCAyNjgsIAogICAgIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCA2NTU2NSwgODMzNiwgNTkzNiwgNzI5MCwgNzgxMTcsIDgzMzcsIAogICAgIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDEyMDcyMSwgNzgxMjMsIDY1NDY2LCAxMTA5MCwgNjk1MywgMCwgMTIwMzQ2LCAwLCAKQEAgLTE3MTI4LDE2ODYgKzE4MDYzLDI2NDIgQEAKICAgICA3ODMwLCAxMTY1MSwgMTMwOTMsIDY0MDAyLCAwLCA2NTc0MiwgMTI4NzQsIDExOTU5NywgMTE1OTAsIDAsIDc0MDQ4LCAKICAgICAxMjgzNTAsIDg1OTUsIDAsIDkxNzk0NywgNDM3MDMsIDEzMDk3LCAwLCA2NDY0MywgMTMyODMsIDEyNjk3LCAwLCAxMjM4MSwgCiAgICAgMzQ4OCwgNTkzMywgMTAwMzMsIDczNzM4LCA2NjI0MSwgNjU1NzAsIDAsIDEyMjk3LCAxMTkxNTMsIDE5NTUsIDAsIDUzNDksIAotICAgIDQyNTM4LCAwLCAwLCA2NTMwOCwgOTQ2MiwgOTE3NTU0LCAwLCAwLCAwLCA0MjczNiwgMCwgNTc1NiwgMCwgNzYzOCwgCi0gICAgNDE2NDIsIDQyNzY0LCAwLCA0MzEwOSwgNzYzNywgNTc1MiwgMTIwNjAwLCAwLCA3MzgzMiwgMTI4ODI3LCAxMjA2MzUsIAotICAgIDEyODIzMSwgNzgzMzQsIDAsIDc2MzYsIDY1MTcxLCA5MTI0LCAwLCA3ODg5MiwgMCwgMjkxLCAwLCAwLCAyMDI3LCA2NjIzMCwgCi0gICAgMTAwODAsIDc4MTM2LCAxMDQwMywgMCwgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDQyNTEyLCAxMjA0MzEsIAorICAgIDQyNTM4LCAwLCAwLCA3NDExLCA5NDYyLCA5MTc1NTQsIDAsIDAsIDAsIDQyNzM2LCAwLCA1NzU2LCA5ODMyMTksIDc2MzgsIAorICAgIDQxNjQyLCA0Mjc2NCwgMCwgNDMxMDksIDc2MzcsIDU3NTIsIDc0MDM3LCAwLCA3MzgzMiwgMTI4ODI3LCAxMjA2MzUsIAorICAgIDEyODIzMSwgNzgzMzQsIDAsIDc2MzYsIDY1MTcxLCA5MTI0LCAwLCA3ODg5MiwgMTIwNzk4LCAyOTEsIDAsIDAsIDIwMjcsIAorICAgIDY2MjMwLCAxMDA4MCwgNzgxMzYsIDEwNDAzLCAwLCA0NjQwLCA2NDcxMywgMTAyMjQsIDEyMDQyOSwgNDI1MTIsIDEyMDQzMSwgCiAgICAgMTIwNDMwLCAwLCAxMjgzNTEsIDEyNzQ4OSwgMTI3MTQ4LCAwLCA5MjQ5OSwgMCwgMTE5MDk0LCA3NDIxMywgNzgyNCwgMCwgCiAgICAgMCwgNDEyNzQsIDU3NzgsIDYzMDIsIDAsIDAsIDEyNjgwLCAxMTkxMzAsIDE0MTcsIDc3ODg5LCAxOTQ5MTQsIDk0NTIsIDAsIAotICAgIDc0MzkzLCAxMTU1MiwgMCwgMTI3ODU1LCAwLCA2NTM5MSwgMCwgMTAxNzIsIDY1NDUzLCA2Mzc4OSwgNDEyNjQsIDc4NjU4LCAKLSAgICA2NDI2LCA0NjQxLCA5MTc5LCA2NDgxOSwgNTUyNzgsIDQxMjU1LCA0MjAzNiwgNDE0NjksIDQxMjY5LCAxMjA0MTIsIAotICAgIDQxMjY3LCA0NjQ2LCAxMjA0MjUsIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIDc4MjcwLCAKLSAgICAxMjc5ODIsIDAsIDY0NzI4LCAwLCA3ODY3MywgNzg2NzQsIDE2NTksIDkxOSwgNDI3ODQsIDE2NzEsIDE5NTA4OSwgNjA2OSwgCi0gICAgOTIxOSwgMTk1MDkwLCAxNjYxLCAxMzEyMCwgNjM3ODQsIDY5ODE5LCAxMDE0MCwgOTcxMywgMTE5MTQzLCAwLCAwLCAwLCAKLSAgICAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAxMTk1NjcsIDE5NTEwMSwgOTI1NjEsIDQxNDYyLCAKLSAgICAxMjA0NzAsIDE5NTA3OSwgNTQyMiwgMTI4MjM0LCAwLCAwLCAwLCAxMDIyOSwgMTA2MzUsIDgyNiwgMTI4MDgxLCAxOTUwODIsIAotICAgIDE5NTA4NSwgMTk1MDg0LCAxOTUwODcsIDY0ODMsIDAsIDE4MDgsIDc4NDgsIDAsIDgxMDAsIDc4MjI3LCA3ODY2OSwgCi0gICAgNzg2NzAsIDEzMzAxLCA3ODY2NywgOTY2NywgNzg2NjUsIDc4ODcyLCAwLCAxMTAwMywgOTkwNCwgMCwgMCwgMTIwNjkwLCAKLSAgICA5MTQ0LCAxMDkyMSwgMCwgNzg2ODAsIDk4NDAsIDY1MTMxLCA3ODY3OCwgNzc4NDEsIDEwMzEzLCAwLCAwLCA2NDMyMCwgCi0gICAgMTAyNjUsIDc4Njg2LCAxMDk2MiwgNzg2ODQsIDQzMDA4LCA4OTQ1LCA3ODY4MywgMCwgNDEsIDE5NTA3MiwgMTc5MiwgCi0gICAgMTIwNTE1LCAxOTUwNzMsIDg2NTUsIDE5NTA3NSwgOTI1NDQsIDc3OTUxLCAxMjA2NiwgMCwgMzg1LCA0MTUyLCAyNTg1LCAKLSAgICAxMjc4MDQsIDExOTA2OCwgMzEyNiwgMCwgNzQxMzYsIDEwOTU3LCAwLCA0MzI1OCwgMCwgMTI3ODczLCAxMzE1NywgMCwgMCwgCi0gICAgMzU3MCwgMCwgNzQ0MywgMCwgNDQwMDYsIDY5OTcsIDAsIDAsIDc4NzksIDg3MzksIDExMDc1LCAwLCA2NTIxNiwgMCwgCi0gICAgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIDkxNzg2MiwgNzgzOSwgMTE5OTEzLCA3ODgwNiwgMTE5OTEyLCA5NjkxLCA0NDExLCAKLSAgICA3ODgwMiwgMCwgMCwgNDM0NDIsIDc4Nzk5LCA2NTI1NCwgMTAwNjYsIDAsIDAsIDAsIDAsIDEzMDYxLCA4MDE2LCA3ODY4NywgCi0gICAgMTk5MzIsIDY0ODMxLCAwLCAxMTk5MjMsIDEyMzkwLCAxMTkxNzEsIDE2MzQsIDY4MTE1LCAwLCAxMTA1NiwgMCwgMTE5OTI1LCAKLSAgICAwLCA0MTE2NSwgMTEzMjgsIDEyNDUwLCAwLCA0MTE2NiwgMCwgMTI0NTYsIDExOTkxNCwgMTcxLCA1OTQxLCAxMjQ1MiwgCi0gICAgOTE3NTQ0LCAxMjQ1OCwgMTI1MzEsIDc4Nzc5LCA0MzAxMywgNjM4MDAsIDc0MTYyLCAxMjc1NjksIDEyMDQ4MywgOTk2OSwgCi0gICAgMCwgMTI0NTQsIDYzODA2LCA0MjEzMiwgMTIwNjMsIDc4NDI1LCA3ODQyNCwgMzIzMCwgMCwgMCwgMCwgNTIwOSwgMjk3LCAKLSAgICA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIDc0MTU2LCAKLSAgICA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIDAsIDc0ODE1LCAxMDUxMiwgMCwgNzQ4MTQsIDc4ODc1LCAxMjc1MDUsIAotICAgIDc4ODc2LCAyNTAzLCA3Mzc3OCwgMTc2MiwgNjk3OTQsIDI0OTUsIDc4ODczLCA1ODQ0LCA3ODg3NCwgMTE4ODM4LCAwLCAKLSAgICAxMjY1NCwgNDY2MywgMTg5OSwgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgMCwgMCwgMCwgODg5MiwgMCwgCi0gICAgOTIzMzksIDAsIDAsIDU3ODIsIDQyMCwgMCwgMCwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMCwgMCwgNjQ4MTQsIDYzNzk2LCAKLSAgICA3Nzk2NSwgMCwgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDAsIDAsIDYzNzkyLCA0NjU5LCAxMjA3ODgsIDAsIDQzNjc2LCAwLCAKLSAgICA2OTY3MywgMCwgMCwgMCwgMzI5LCA3Nzk2OCwgOTI3MDcsIDkxNzU0OCwgNzM5OSwgMCwgNDExODgsIDEzMjQ0LCAxMjA0NjYsIAotICAgIDQyMTY3LCA3NDM1LCA3ODE5MywgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIDQzMTI2LCA3Nzk3MiwgMCwgCi0gICAgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDAsIDExNzIsIDY5Nzk5LCA2Nzg2LCAKLSAgICA0MzYwMSwgMTIwNDc2LCA3NDEyNiwgNTYwMywgMCwgNDQ3MywgMCwgMTk0ODIzLCAwLCA2NTM0NywgNjUzNDYsIDY1MzQ1LCAKLSAgICAwLCAxMjczODQsIDUzNDcsIDY5ODAyLCAwLCA3Mzg2OCwgMTE4OTQ0LCAxMDU4OCwgMCwgMCwgNjM3NTUsIDAsIDUzNDMsIAotICAgIDc4NDIyLCAwLCA0NTU1LCA1MzQxLCAwLCAwLCAxMjg2NzAsIDUzNTEsIDAsIDQzMTA0LCA2NTI0NCwgOTE3ODkyLCA2NDU0MSwgCi0gICAgNDI1MTksIDc0NDcyLCAwLCAwLCA3NDc2NSwgOTE3ODg4LCAxOTQ4OTIsIDY2MzgsIDAsIDY1MTEzLCAyNzEsIDc0MTgwLCAKLSAgICA2NTM3MCwgODgzNSwgNjUzNjgsIDEyNjUzLCA2NTM2NiwgNDIxNzIsIDQxMDg2LCA2NTM2MywgNjUzNjIsIDY1MzYxLCAKLSAgICAxMTkxMiwgNDM0MTAsIDExMzIzLCA2NTM1NywgMTE4MDAsIDY1MzU1LCA1MzQ1LCA2NTM1MywgNjUzNTIsIDY1MzUxLCA3NjEsIAotICAgIDY1MzQ5LCAxOTk1OSwgNjk3MTgsIDYzODU2LCAwLCAyNDIzLCA3Nzk1OCwgNjQ2NDcsIDc3OTU5LCAxMTk1NywgNDY5OSwgMCwgCi0gICAgMCwgMCwgMCwgNjQ2MDUsIDAsIDAsIDAsIDQ5MTYsIDAsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgNjk3NzMsIDk3NzMsIAotICAgIDEzMTY3LCAxMjkxOCwgNDEwOTYsIDczOTgwLCA2OTI0NSwgNzgyNTQsIDkxNzg5MywgMTA2ODQsIDAsIDkxNzg5NiwgMCwgCi0gICAgNzk0NiwgMTI1NDEsIDgxODIsIDY3NTg2LCA2OTc4MCwgMCwgMCwgMCwgMCwgOTAwNSwgMTIyNSwgNjYzMCwgMCwgMCwgMCwgCi0gICAgMCwgODg0NywgMCwgNjU4NzYsIDU1MzUsIDgzMjksIDc0NTkwLCAwLCA5MjYwOSwgMCwgMCwgMzEyNywgMjU5NSwgNjU3MTMsIAotICAgIDQyMDEzLCAwLCA1NjA3LCA0MTA4OSwgMCwgMCwgNzQyNTYsIDI2NjUsIDExMzA0LCAwLCA3NDIwMCwgNDk3MCwgODc2NCwgCisgICAgNzQzOTMsIDExNTUyLCAwLCAxMjc4NTUsIDEyODIxNywgNjUzOTEsIDAsIDEwMTcyLCA2NTQ1MywgNjM3ODksIDQxMjY0LCAKKyAgICA3ODY1OCwgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCA0MTI2OSwgCisgICAgMTIwNDEyLCA0MTI2NywgNDY0NiwgMTIwNDI1LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCAKKyAgICA3ODI3MCwgMTI3OTgyLCA5ODMxNzIsIDY0NzI4LCAwLCA3ODY3MywgNzg2NzQsIDE2NTksIDkxOSwgNDI3ODQsIDE2NzEsIAorICAgIDE5NTA4OSwgNjA2OSwgOTIxOSwgMTI4NTU4LCAxNjYxLCAxMzEyMCwgNjM3ODQsIDY5ODE5LCAxMDE0MCwgOTcxMywgCisgICAgMTE5MTQzLCAwLCAwLCA5NDA1MCwgMjMwNiwgMTA0ODUsIDExODk0MywgNjA2OCwgMTA2MTIsIDE5NTA5OSwgMTE5NTY3LCAKKyAgICAxOTUxMDEsIDkyNTYxLCA0MTQ2MiwgMTIwNDcwLCAxOTUwNzksIDU0MjIsIDEyODIzNCwgMCwgMCwgMCwgMTAyMjksIAorICAgIDEwNjM1LCA4MjYsIDEyODA4MSwgMTk1MDgyLCAxOTUwODUsIDE5NTA4NCwgMTk1MDg3LCA2NDgzLCA5MjIxMSwgMTgwOCwgCisgICAgNzg0OCwgMCwgODEwMCwgNzgyMjcsIDc4NjY5LCA3ODY3MCwgMTMzMDEsIDc4NjY3LCA5NjY3LCA3ODY2NSwgNzg4NzIsIDAsIAorICAgIDExMDAzLCA5OTA0LCAwLCAwLCAxMjA2OTAsIDkxNDQsIDEwOTIxLCAwLCA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCAKKyAgICA3Nzg0MSwgMTAzMTMsIDAsIDAsIDY0MzIwLCAxMDI2NSwgNzg2ODYsIDEwOTYyLCA3ODY4NCwgNDMwMDgsIDg5NDUsIAorICAgIDc4NjgzLCAwLCA0MSwgMTk1MDcyLCAxNzkyLCAxMjA1MTUsIDE5NTA3MywgODY1NSwgMTk1MDc1LCA5MjU0NCwgNzc5NTEsIAorICAgIDEyMDY2LCAwLCAzODUsIDQxNTIsIDI1ODUsIDEyNzgwNCwgMTE5MDY4LCAzMTI2LCAwLCA3NDEzNiwgMTA5NTcsIDk4MzY5NCwgCisgICAgNDMyNTgsIDExOTExNiwgMTI3ODczLCAxMzE1NywgMCwgOTE3NTQ0LCAzNTcwLCAwLCA3NDQzLCAwLCA0NDAwNiwgNjk5NywgCisgICAgNjgwMDQsIDEyNjYzMSwgNzg3OSwgODczOSwgMTEwNzUsIDAsIDY1MjE2LCAwLCA2OTc5NSwgMjU5MywgODQ2MywgNzgxMCwgCisgICAgOTE3ODYyLCA3ODM5LCAxMTk5MTMsIDc4ODA2LCAxMTk5MTIsIDk2OTEsIDQ0MTEsIDc4ODAyLCAwLCAwLCA0MzQ0MiwgCisgICAgNjk4NTEsIDY1MjU0LCAxMDA2NiwgOTgzODgwLCAwLCAwLCAwLCAxMzA2MSwgODAxNiwgNzg2ODcsIDE5OTMyLCA2NDgzMSwgCisgICAgMCwgMTE5OTIzLCAxMjM5MCwgMTE5MTcxLCAxNjM0LCA2ODExNSwgMCwgMTEwNTYsIDk4MzU3NCwgMTE5OTI1LCAwLCAKKyAgICA0MTE2NSwgMTEzMjgsIDEyNDUwLCAwLCA0MTE2NiwgMCwgMTI0NTYsIDExOTkxNCwgMTcxLCA1OTQxLCAxMjQ1MiwgCisgICAgMTk0NzA5LCAxMjQ1OCwgMTI1MzEsIDc4Nzc5LCA0MzAxMywgNjM4MDAsIDc0MTYyLCAxMjc1NjksIDEyMDQ4MywgOTk2OSwgCisgICAgMTIwNzY3LCAxMjQ1NCwgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIDc4NDI0LCAzMjMwLCAwLCAwLCAwLCA1MjA5LCAKKyAgICAyOTcsIDU4MTAsIDg1MjIsIDg0MTUsIDExOTkzNywgNzg0MjksIDc4NDI4LCA3MDc3LCAyNDk3LCAxMjg2NTEsIDk2MCwgCisgICAgNzQxNTYsIDY5ODEsIDkyMzc0LCAxMjkzOCwgNDI5MiwgMCwgNzQ4MTUsIDEwNTEyLCAwLCA3NDgxNCwgNzg4NzUsIAorICAgIDEyNzUwNSwgNzg4NzYsIDI1MDMsIDczNzc4LCAxNzYyLCA2OTc5NCwgMjQ5NSwgNzg4NzMsIDU4NDQsIDY4MDMxLCAKKyAgICAxMTg4MzgsIDAsIDEyNjU0LCA0NjYzLCAxODk5LCA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCAwLCAwLCAwLCAKKyAgICA4ODkyLCAwLCA5MjMzOSwgMCwgOTgzMDczLCA1NzgyLCA0MjAsIDAsIDAsIDQzNzk2LCAxMDc5NywgNjM3OTQsIDAsIDAsIAorICAgIDY0ODE0LCA2Mzc5NiwgNzc5NjUsIDAsIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAwLCAwLCA2Mzc5MiwgNDY1OSwgMTIwNzg4LCAKKyAgICAwLCA0MzY3NiwgMCwgNjk2NzMsIDAsIDAsIDAsIDMyOSwgNzc5NjgsIDkyNzA3LCA5MTc1NDgsIDczOTksIDAsIDQxMTg4LCAKKyAgICAxMzI0NCwgMTIwNDY2LCA0MjE2NywgNzQzNSwgNzgxOTMsIDUzODAsIDExOTA4NiwgNjkyMjUsIDExNTUsIDExMzY1LCAKKyAgICA0MzEyNiwgNzc5NzIsIDAsIDY1Njg0LCAwLCA1NjAxLCA2NTE5MiwgNDI3NjUsIDYzNzUyLCAwLCA3OTg3LCAxMjg1NDMsIAorICAgIDExNzIsIDY5Nzk5LCA2Nzg2LCA0MzYwMSwgMTIwNDc2LCA3NDEyNiwgNTYwMywgMCwgNDQ3MywgMCwgMTk0ODIzLCAwLCAKKyAgICA2NTM0NywgNjUzNDYsIDY1MzQ1LCAwLCAxMjczODQsIDUzNDcsIDY5ODAyLCA5ODM2MjMsIDczODY4LCAxMTg5NDQsIAorICAgIDEwNTg4LCAwLCAwLCA2Mzc1NSwgMCwgNTM0MywgNzg0MjIsIDEyMDY2MSwgNDU1NSwgNTM0MSwgMCwgNzAwNzEsIDEyODY3MCwgCisgICAgNTM1MSwgNzg2NzUsIDQzMTA0LCA2NTI0NCwgOTE3ODkyLCA2NDU0MSwgNDI1MTksIDc0NDcyLCAwLCAwLCA3NDc2NSwgCisgICAgOTE3ODg4LCAxMjc1MTAsIDY2MzgsIDAsIDY1MTEzLCAyNzEsIDc0MTgwLCA2NTM3MCwgODgzNSwgNjUzNjgsIDEyNjUzLCAKKyAgICA2NTM2NiwgNDIxNzIsIDQxMDg2LCA2NTM2MywgNjUzNjIsIDY1MzYxLCAxMTkxMiwgNDM0MTAsIDExMzIzLCA2NTM1NywgCisgICAgMTE4MDAsIDY1MzU1LCA1MzQ1LCA2NTM1MywgNjUzNTIsIDY1MzUxLCA3NjEsIDY1MzQ5LCAxOTk1OSwgNjk3MTgsIDYzODU2LCAKKyAgICAxMjY2MzUsIDI0MjMsIDc3OTU4LCA2NDY0NywgNzc5NTksIDExOTU3LCA0Njk5LCAwLCAwLCAwLCAwLCA2NDYwNSwgMCwgMCwgCisgICAgMCwgNDkxNiwgMCwgMzgwLCAxMDk1OCwgNjY1NjMsIDc3OTU1LCA2OTc3MywgOTc3MywgMTMxNjcsIDEyOTE4LCA0MTA5NiwgCisgICAgNzM5ODAsIDY5MjQ1LCA3ODI1NCwgOTE3ODkzLCAxMDY4NCwgMCwgOTE3ODk2LCAwLCA3OTQ2LCAxMjU0MSwgODE4MiwgCisgICAgNjc1ODYsIDY5NzgwLCAwLCAwLCAwLCAwLCA5MDA1LCAxMjI1LCA2NjMwLCAwLCAwLCAwLCA2ODAxMSwgODg0NywgMCwgCisgICAgNjU4NzYsIDU1MzUsIDgzMjksIDc0NTkwLCA5ODMyMDYsIDkyNjA5LCAwLCAwLCAzMTI3LCAyNTk1LCA2NTcxMywgNDIwMTMsIAorICAgIDk4Mzg0OSwgNTYwNywgNDEwODksIDAsIDAsIDc0MjU2LCAyNjY1LCAxMTMwNCwgNDM3NTEsIDc0MjAwLCA0OTcwLCA4NzY0LCAKICAgICAxMjA0NTksIDg5MzQsIDkyNzI2LCA0MTU2NiwgNDQ5MiwgMCwgNjUwMTEsIDQxMDkwLCAwLCAwLCAxMTg4LCA3MjU0LCAKLSAgICAxMTAwLCAwLCAxMjgzMDEsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjk3OTIsIDAsIDAsIDM1NzIsIDEwMDIzLCA0OTU5LCAKLSAgICAxMzA3OSwgMCwgMCwgOTcyOSwgMCwgMCwgMCwgNDMzNjEsIDAsIDAsIDExODAzLCA3OTk2LCA5OTA3LCA0MTQ1MCwgMTMzMDQsIAotICAgIDEyODI5MCwgMTI3MjYwLCA0MTQ1MSwgMCwgMTEwOTUsIDgyNzMsIDEyNzUzMywgMzQ1MSwgMCwgOTcyLCA0MTQ1MywgMCwgMCwgCi0gICAgNzM4ODMsIDkyNDA4LCA3Mzk0NSwgMCwgMzQ1NSwgMTk5NTUsIDk1MzgsIDAsIDY5ODA3LCAwLCAwLCAwLCAwLCAxMTM5NiwgCi0gICAgMCwgMTEwMTksIDAsIDAsIDAsIDEyMDUwNywgNDEwNzgsIDAsIDI2MSwgNTkyNywgNzc5MSwgMCwgNjQ0NDYsIDAsIDEwNjk2LCAKLSAgICAwLCA2MDczLCA5ODM4LCAxMTg5MjAsIDAsIDYwNzUsIDEyODU2MywgMjgyLCAwLCA2NDM3LCA3NDA3OCwgMTI4MDAwLCAKLSAgICA5ODAxLCAwLCAwLCAwLCAwLCAzNDc0LCAxMTg3ODcsIDAsIDEyMDY1NSwgNjA4MSwgMCwgMTI3ODQzLCA3NDA3NiwgNzg4NzksIAotICAgIDAsIDAsIDAsIDAsIDAsIDg3NTEsIDExNDk5LCAxMjAyNzMsIDc4MTYsIDEyNjM2LCA0NjY1LCAxMjYyOCwgNDY3MCwgCi0gICAgOTI2MDgsIDEyMDI3MiwgMCwgOTY0MiwgMTA5MTIsIDk1OCwgMCwgMTEzODcsIDc4ODc4LCA0NjY2LCAwLCA0OTE1LCAwLCAKLSAgICA0NjY5LCAwLCA2ODA5OSwgMTMyODcsIDQ2NjQsIDEwODM2LCAxMjA1NTAsIDAsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgMCwgCi0gICAgOTE3ODc1LCA4NjY0LCA5Njk3LCAzNjA2LCA5MTc4NzMsIDAsIDAsIDY0ODE1LCAxMDYzLCAxMjAyNTAsIDEyMDI1MSwgCi0gICAgOTc3MiwgNzI1NSwgODg4NiwgMTM4OSwgMTI3OTMyLCAxMjAyNTcsIDEyMDI1OCwgMTIwMjU5LCAxMjk0MSwgNDI2NjEsIAotICAgIDkyMzgxLCAxMjAyNTUsIDEyMDI1NiwgMTIzMDEsIDEyMDI2NiwgNjk4MjAsIDQxMTAyLCA2NjYwNCwgMTIwMjYyLCAKLSAgICAxMjAyNjMsIDEyMDI2NCwgMTAxNywgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgMCwgMCwgODYwOCwgNDI3ODksIAotICAgIDEyMDYxMywgMTI4NzA0LCAwLCAxMTkxOTYsIDExMzA3LCA2NjcwNywgOTE3ODcxLCAxMjc3NTEsIDExNzQ1LCA3OTE5LCAwLCAKLSAgICAxNjQxLCAwLCAwLCA4OTY2LCAwLCAwLCA1OTA4LCAwLCAwLCA2NzQ0LCAxMjgzNTUsIDE2OTksIDc0MTkxLCA3NDg0MywgMCwgCi0gICAgMCwgNjMwNiwgMTAxNjksIDAsIDExOTI1MSwgMTAwNjgsIDM3NjYsIDIzODksIDEyMDQ1NiwgMTIwNDU1LCA2NjExLCAyNTcsIAotICAgIDQzMTcwLCAxMzE1MywgMCwgNDIzODYsIDAsIDk0MzYsIDI1OTksIDAsIDY0OTYsIDk0NDksIDU5MzAsIDExNDc2LCAxMTAzMywgCi0gICAgMTE0NDcsIDEwNTQxLCA1NjIyLCAxMjA0MzYsIDg0NzcsIDM3NjAsIDE3MTgsIDk0NDIsIDY2NDMzLCAzNzc2LCAwLCAKLSAgICA0MTQzNSwgNDM1MiwgMCwgMjQzNSwgMTIwODA5LCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIAotICAgIDQyMDQsIDEyMDQ0NywgMzc2OCwgNjgxNDIsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgCi0gICAgMTI5NDcsIDQ1NjQsIDAsIDAsIDc0MjcxLCA3Mzc1MywgODM3NCwgMCwgMCwgNjgyOSwgNTIyNSwgMTI4ODA3LCAxMjczODUsIAotICAgIDAsIDAsIDExOTYxNSwgMCwgNzQ3OTMsIDU2MjYsIDczODA3LCAxMTc3MSwgMCwgMTI3MjM2LCAxMjgwMTksIDAsIDUzNTMsIAotICAgIDU2MjUsIDc0MTc5LCAwLCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCA2NDI3NywgMCwgNjk1MiwgMCwgMTIwNzUyLCAKLSAgICA3ODc2MiwgMjU5MCwgNTYyOSwgNjU1NTIsIDc1NTEsIDEwMzI1LCA1NjMyLCAxMDQ3MSwgMTIwMDM4LCAxMjAwMjcsIAotICAgIDEyMDAyOCwgMTIwMDI1LCA1NjI4LCAxMjAwMzEsIDk3MCwgMTIwMDI5LCA0NzcyLCAyNDAwLCA1NjI3LCAxMjAwMTcsIAotICAgIDEyMDAxOCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCAxMDk2MSwgMCwgMjAzLCAwLCAwLCAwLCAwLCA3ODM1MCwgMCwgCi0gICAgNjQzNzgsIDQyMDU0LCAwLCAwLCA1NTQsIDExOTY0OSwgMTEzNTgsIDAsIDEyMTgyLCA0MjA0OCwgMTEwNjUsIDEyNzg3OCwgCi0gICAgNzM4OTEsIDAsIDAsIDU2OTQsIDc2ODksIDY5Nzk4LCA5MzIzLCA0MzI1LCAzMDQ3LCAxMDMxNywgMTc1LCAwLCAwLCAKLSAgICA2OTc2NCwgMCwgMCwgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDAsIDY5NzcwLCA0MzY1MSwgMCwgNjgxMTgsIDEyODAyNCwgCi0gICAgMTEyOSwgMCwgMCwgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA5MTc3NzIsIDY1MjU1LCAwLCAzODQ1LCA0NDkwLCAKLSAgICAxMTg5NjksIDY2NDksIDc0NDAwLCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgMCwgNzc1NiwgMTIzNDIsIAotICAgIDEyODU2OCwgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA5MTc4NjMsIDQ1NiwgNzAyNiwgODE0NSwgMTE2OCwgOTI1MSwgCi0gICAgOTA4MiwgMTE5OTY0LCA2NDA1NSwgNDI3ODEsIDM4NjYsIDEyMzIzLCA0MTUxMiwgNzM4MDUsIDY4MTIxLCAwLCA0MTQ5NCwgCi0gICAgOTIzMTYsIDQ2NjAsIDAsIDEwNDA1LCAwLCA3ODgwMywgMCwgMCwgNDIwNDAsIDczOTE4LCAxMTk2MjcsIDc5NDQsIDQxNDU0LCAKLSAgICAxMjYwNSwgMCwgNDIyMDUsIDQxNDU1LCAyMzYsIDY0MDUxLCA3ODg2NywgODIxNCwgMCwgMCwgMCwgNDE0NTcsIDAsIAotICAgIDExOTU4OSwgMTk2OSwgMjM4NCwgODA5NywgOTE3ODY0LCAwLCAxMjczODAsIDc4MDI5LCA4NzY2LCAwLCA3ODA3OSwgNTg1NCwgCi0gICAgMTI3OTc0LCAxMDU4MywgMCwgMTE5OTg5LCAwLCAxMDQxNiwgOTE3ODY5LCAzODcyLCA5MTc4NjgsIDAsIDg0MjksIDAsIAotICAgIDExODgwNiwgMjgzOCwgMTI4ODAyLCAwLCA5MTc4NjYsIDAsIDAsIDAsIDAsIDAsIDExMDk2LCAxMjA4MTMsIDEwNTUzLCAKLSAgICAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgMCwgNzM3NDIsIDY2LCA2NSwgNjgsIDY3LCA3MCwgNjksIAotICAgIDcyLCA3MSwgNzQsIDczLCA3NiwgNzUsIDc4LCA3NywgODAsIDc5LCA4MiwgODEsIDg0LCA4MywgODYsIDg1LCA4OCwgODcsIAotICAgIDkwLCA4OSwgMTE5ODYyLCAxMDM1NywgNzM4NSwgODE3MCwgMTcwNCwgODU1NiwgMCwgOTY1OSwgMCwgMCwgMCwgOTU1NiwgMCwgCi0gICAgNDUwMywgMTEzNTMsIDk2NDcsIDAsIDc4MTg1LCAwLCAwLCA5MjcxMywgNzg4ODYsIDAsIDAsIDc0MjI5LCA2NjU5MywgCi0gICAgNjQzOCwgOTE3OTc5LCA5MTA5LCA3ODg4MiwgMTI4OSwgNjQ1OTksIDAsIDAsIDAsIDY1NTA3LCAyNDQ3LCAwLCAwLCAKLSAgICAxMjgwNDIsIDAsIDAsIDAsIDYzMzQsIDAsIDAsIDE5OTM3LCAwLCA5MjM2OCwgMCwgNTY3NSwgMjU0LCAwLCAwLCA2OTY4NiwgCi0gICAgNDI0MjUsIDg5MTgsIDY0MDAzLCA1NzE2LCA0MjMxMiwgMCwgMCwgNjk3MiwgNDI4MjYsIDAsIDQyNDY0LCAxMjA1NjcsIDAsIAotICAgIDkyNjQ1LCA3NDc5NiwgNjQ0MDAsIDY0NjkzLCAwLCA3Nzg2MSwgNjU0MjksIDk1MTUsIDQ0MzUsIDAsIDQyNTIyLCAwLCAwLCAKLSAgICAxMTc4NSwgMCwgNjQ2NzEsIDQxOTc4LCAxNDEyLCA0NTk0LCAxMzkxLCAxMDUzNiwgODA2NywgOTkwMSwgNzc3NSwgCi0gICAgMTI4MjkzLCAwLCA3NDU4OCwgMTIwNzQ4LCAzMTQwLCAxMjg4NTQsIDc5NjAsIDQzMjcxLCAwLCAxMjUxOCwgMTA5MDksIAotICAgIDEyNzUwOCwgMTQyOCwgMTI0NzIsIDAsIDEyODc4NywgNzY5OSwgMTIzOTMsIDAsIDAsIDAsIDc0NTE4LCA4MjIzLCAwLCAKLSAgICA0MjYxLCAwLCAwLCAwLCAwLCAwLCAxMjgzMDIsIDAsIDEyODA0NiwgNDM0MTksIDAsIDY0NTU0LCAxMDU3NCwgMzg3OCwgMCwgCi0gICAgNDIzNTIsIDE3NTIsIDczNzg1LCAwLCA0MjUwNiwgMTI4NTQxLCAxMDE5OSwgMCwgMCwgMCwgNjU5MTksIDAsIDY2OTUsIAotICAgIDcyMCwgMzI0LCAwLCAwLCA0MzQwNiwgMCwgMTQ2NCwgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCAwLCA2NDQ4OCwgMCwgMCwgCi0gICAgNjQwNDEsIDc0Nzg3LCAwLCA3ODg2NSwgOTIyNTgsIDY1NTk3LCAwLCA3ODg2MywgMCwgMTMwMiwgMCwgNzg4NjEsIDAsIDAsIAotICAgIDAsIDUyMDQsIDc0Nzc0LCA0MzQwNCwgNDMzOTYsIDAsIDM5OTUsIDY4MzYwLCA2NTYwOCwgMzcxNCwgMCwgMCwgMCwgCisgICAgMTEwMCwgMCwgMTI4MzAxLCA0MTA4MSwgMjkxMiwgMTE3NDksIDY5NzkyLCAwLCA2ODAxOSwgMzU3MiwgMTAwMjMsIDQ5NTksIAorICAgIDEzMDc5LCAwLCA5ODMyNjgsIDk3MjksIDAsIDAsIDAsIDQzMzYxLCAwLCAwLCAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIAorICAgIDEzMzA0LCAxMjgyOTAsIDEyNzI2MCwgNDE0NTEsIDAsIDExMDk1LCA4MjczLCAxMjc1MzMsIDM0NTEsIDk4MzMwMSwgOTcyLCAKKyAgICA0MTQ1MywgOTgzNDM0LCAwLCA3Mzg4MywgNjgwMjIsIDczOTQ1LCA5ODM3MjYsIDIyODgsIDE5OTU1LCA5NTM4LCAwLCAKKyAgICA2OTgwNywgMCwgMCwgMCwgMCwgMTEzOTYsIDk4MzQzMiwgMTEwMTksIDAsIDAsIDAsIDY4MDIwLCA0MTA3OCwgNzEzNjUsIAorICAgIDI2MSwgNTkyNywgNzc5MSwgMCwgNzM2MiwgMCwgMTA2OTYsIDAsIDYwNzMsIDk4MzgsIDExODkyMCwgMCwgNjA3NSwgCisgICAgOTM5OTUsIDI4MiwgMTI2NTEwLCA2NDM3LCA3NDA3OCwgMTI4MDAwLCA5ODAxLCAwLCA3NDE3NywgMCwgMCwgMzQ3NCwgCisgICAgMTE4Nzg3LCAwLCAxMjA2NTUsIDYwODEsIDAsIDc4ODc0LCA3NDA3NiwgNzg4NzksIDAsIDAsIDAsIDAsIDAsIDg3NTEsIAorICAgIDExNDk5LCAxMjAyNzMsIDc4MTYsIDEyNjM2LCA0NjY1LCAxMjYyOCwgNDY3MCwgOTI2MDgsIDEyMDI3MiwgNjgwMTcsIAorICAgIDk2NDIsIDEwOTEyLCA5NTgsIDAsIDExMzg3LCA3ODg3OCwgNDY2NiwgMCwgNDkxNSwgMCwgNDY2OSwgMCwgNjgwOTksIAorICAgIDEzMjg3LCA0NjY0LCAxMDgzNiwgMTIwNTUwLCAwLCA2OTc3NSwgMCwgNDM1OTUsIDc0NTAsIDAsIDkxNzg3NSwgODY2NCwgCisgICAgOTY5NywgMzYwNiwgOTE3ODczLCAwLCAwLCA2NDgxNSwgMTA2MywgMTIwMjUwLCAxMjAyNTEsIDk3NzIsIDcyNTUsIDg4ODYsIAorICAgIDEzODksIDEyNzkzMiwgMTIwMjU3LCAxMjAyNTgsIDEyMDI1OSwgMTI5NDEsIDQyNjYxLCA5MjM4MSwgMTIwMjU1LCAKKyAgICAxMjAyNTYsIDEyMzAxLCAxMjAyNjYsIDY5ODIwLCA0MTEwMiwgNjQ0MjgsIDEyMDI2MiwgMTIwMjYzLCAxMjAyNjQsIDEwMTcsIAorICAgIDY2NjAwLCA1MjMsIDUwNSwgMTQ0NywgNzQ0MzYsIDAsIDAsIDAsIDg2MDgsIDQyNzg5LCAxMjA2MTMsIDEyODcwNCwgMCwgCisgICAgNzM4NTUsIDExMzA3LCA2NjcwNywgOTE3ODcxLCAxMjc3NTEsIDExNzQ1LCA3OTE5LCAwLCAxNjQxLCAwLCAwLCA4OTY2LCAwLCAKKyAgICAwLCA1OTA4LCAwLCAwLCA2NzQ0LCAxMjgzNTUsIDE2OTksIDY5ODYxLCA3NDg0MywgOTE3OTMzLCAwLCA2MzA2LCAxMDE2OSwgCisgICAgNzEzMjQsIDExOTI1MSwgMTAwNjgsIDM3NjYsIDIzODksIDEyMDQ1NiwgMTIwNDU1LCA2NjExLCAyNTcsIDQzMTcwLCAKKyAgICAxMzE1MywgMCwgNDIzODYsIDAsIDk0MzYsIDI1OTksIDAsIDY0OTYsIDk0NDksIDU5MzAsIDExNDc2LCAxMTAzMywgMTE0NDcsIAorICAgIDEwNTQxLCA1NjIyLCAxMjA0MzYsIDg0NzcsIDM3NjAsIDE3MTgsIDk0NDIsIDY2NDMzLCAzNzc2LCAwLCA0MTQzNSwgNDM1MiwgCisgICAgOTgzNjEwLCAyNDM1LCAxMjA4MDksIDU2MjEsIDEyMDM4NSwgNDIwMSwgMzc3OCwgNDIwMywgNDIwMiwgNDIwNSwgNDIwNCwgCisgICAgMTIwNDQ3LCAzNzY4LCA2ODE0MiwgNzY1LCA0MTQ0MCwgMzc2NCwgODQ3MywgNjM3MywgODQ2OSwgMTIwNDM4LCAxMjk0NywgCisgICAgNDU2NCwgMCwgMCwgNzQyNzEsIDczNzUzLCA4Mzc0LCA5ODMxNTYsIDAsIDY4MjksIDUyMjUsIDEyODgwNywgMTI3Mzg1LCAwLCAKKyAgICAwLCAxMTk2MTUsIDAsIDc0NzkzLCA1NjI2LCA3MzgwNywgMTE3NzEsIDc0MDc1LCAxMjcyMzYsIDEyODAxOSwgNDI2MTQsIAorICAgIDUzNTMsIDU2MjUsIDc0MTc5LCAwLCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCA2NDI3NywgNjk5NDIsIDY5NTIsIAorICAgIDk4MzI2NCwgMTIwNzUyLCA3ODc2MiwgMjU5MCwgNTYyOSwgNjU1NTIsIDc1NTEsIDEwMzI1LCA1NjMyLCAxMDQ3MSwgCisgICAgMTIwMDM4LCAxMjAwMjcsIDEyMDAyOCwgMTIwMDI1LCA1NjI4LCAxMjAwMzEsIDk3MCwgMTIwMDI5LCA0NzcyLCAyNDAwLCAKKyAgICA1NjI3LCAxMjAwMTcsIDEyMDAxOCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAwLCAyMDMsIDAsIDAsIDAsIDAsIAorICAgIDc4MzUwLCAwLCA2NDM3OCwgNDIwNTQsIDAsIDAsIDU1NCwgMTE5NjQ5LCAxMTM1OCwgMCwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgCisgICAgMTI2NDY0LCA3Mzg5MSwgMCwgMCwgNTY5NCwgNzY4OSwgNjk3OTgsIDkzMjMsIDQzMjUsIDMwNDcsIDEwMzE3LCAxNzUsIDAsIAorICAgIDAsIDY5NzY0LCAwLCAwLCAxMjQzLCA0MjE1NCwgNTQzMSwgNjY1MiwgMCwgNjk3NzAsIDQzNjUxLCAwLCA2ODExOCwgCisgICAgMTI4MDI0LCAxMTI5LCAxMjY1NzQsIDAsIDY1OTAwLCAxOTg2LCA3ODQ2LCA3ODgwNCwgODY2MSwgOTE3NzcyLCA2NTI1NSwgCisgICAgMCwgMzg0NSwgNDQ5MCwgMTE4OTY5LCA2NjQ5LCA3NDQwMCwgMTQ1NiwgNzUzMCwgMTE5NzcsIDcyNDksIDgzNjYsIDAsIAorICAgIDc3NTYsIDEyMzQyLCAxMjg1NjgsIDUxLCA0MTUxNiwgMCwgODU3MCwgOTU2OCwgNzEzMTgsIDQ1NiwgNzAyNiwgODE0NSwgCisgICAgMTE2OCwgOTI1MSwgOTA4MiwgMTE5OTY0LCA2NDA1NSwgNDI3ODEsIDM4NjYsIDEyMzIzLCA0MTUxMiwgNzM4MDUsIDY4MTIxLCAKKyAgICAwLCA0MTQ5NCwgOTIzMTYsIDQ2NjAsIDAsIDEwNDA1LCAwLCA3ODgwMywgMCwgMCwgNDIwNDAsIDczOTE4LCAxMTk2MjcsIAorICAgIDc5NDQsIDQxNDU0LCAxMjYwNSwgMCwgNDIyMDUsIDQxNDU1LCAyMzYsIDY0MDUxLCA3ODg2NywgODIxNCwgMCwgMCwgMCwgCisgICAgNDE0NTcsIDk4Mzk2MSwgMTE5NTg5LCAxOTY5LCAyMzg0LCA4MDk3LCA5MTc4NjQsIDc0MTMsIDY4MDEyLCA3ODAyOSwgCisgICAgODc2NiwgMCwgNzgwNzksIDU4NTQsIDEyNzk3NCwgMTA1ODMsIDAsIDExOTk4OSwgMCwgMTA0MTYsIDkxNzg2OSwgMzg3MiwgCisgICAgOTE3ODY4LCAwLCA4NDI5LCAwLCAxMTg4MDYsIDI4MzgsIDEyODgwMiwgMCwgOTE3ODY2LCAwLCAwLCAwLCA5ODM5NTgsIAorICAgIDk0MDA1LCAxMTA5NiwgMTIwODEzLCAxMDU1MywgMTY2MiwgODQ4MywgMTIwMzk2LCA0MzYwNSwgNTg5MiwgNDM0MTgsIDAsIAorICAgIDczNzQyLCA2NiwgNjUsIDY4LCA2NywgNzAsIDY5LCA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgCisgICAgODIsIDgxLCA4NCwgODMsIDg2LCA4NSwgODgsIDg3LCA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIAorICAgIDg1NTYsIDAsIDk2NTksIDAsIDAsIDAsIDk1NTYsIDAsIDQ1MDMsIDExMzUzLCA5NjQ3LCAwLCA3ODE4NSwgMCwgMCwgCisgICAgOTI3MTMsIDc4ODg2LCAwLCAwLCA3NDIyOSwgNjY1OTMsIDY0MzgsIDkxNzk3OSwgOTEwOSwgNzg4ODIsIDEyODksIDY0NTk5LCAKKyAgICAwLCA2ODAwOSwgMCwgNjU1MDcsIDI0NDcsIDAsIDAsIDEyODA0MiwgMTI2NTQ1LCA5ODMxMzcsIDAsIDYzMzQsIDAsIDAsIAorICAgIDE5OTM3LCAwLCA5MjM2OCwgMCwgNTY3NSwgMjU0LCAwLCAwLCA2OTY4NiwgNDI0MjUsIDg5MTgsIDY0MDAzLCA1NzE2LCAKKyAgICA0MjMxMiwgMCwgMCwgNjk3MiwgNDI4MjYsIDAsIDQyNDY0LCAxMjA1NjcsIDAsIDkyNjQ1LCA3NDc5NiwgNjQ0MDAsIAorICAgIDY0NjkzLCAwLCA3Nzg2MSwgNjU0MjksIDk1MTUsIDQ0MzUsIDAsIDQyNTIyLCAwLCA2ODAwOCwgMTE3ODUsIDc0MTIsIAorICAgIDY0NjcxLCA0MTk3OCwgMTQxMiwgNDU5NCwgMTM5MSwgMTA1MzYsIDgwNjcsIDk5MDEsIDcxMDMsIDEyODI5MywgNzEwMiwgCisgICAgNzQ1ODgsIDEyMDc0OCwgMzE0MCwgMTI4ODU0LCA3OTYwLCA0MzI3MSwgMCwgMTI1MTgsIDEwOTA5LCAxMjc1MDgsIDE0MjgsIAorICAgIDEyNDcyLCAwLCA2OTg2NCwgNzY5OSwgMTIzOTMsIDAsIDAsIDAsIDc0NTE4LCA4MjIzLCAwLCA0MjYxLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjgzMDIsIDAsIDEyODA0NiwgNDM0MTksIDAsIDY0NTU0LCAxMDU3NCwgMzg3OCwgMCwgNDIzNTIsIDE3NTIsIAorICAgIDczNzg1LCAwLCA0MjUwNiwgMTI4NTQxLCAxMDE5OSwgMCwgMCwgNjgwMjEsIDY1OTE5LCAwLCA2Njk1LCA3MjAsIDMyNCwgMCwgCisgICAgMCwgNDM0MDYsIDk4MzcyNywgMTQ2NCwgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCAwLCA2NDQ4OCwgMCwgMCwgNjQwNDEsIAorICAgIDc0Nzg3LCAwLCA3ODg2NSwgOTIyNTgsIDY1NTk3LCAwLCA3ODg2MywgMCwgMTMwMiwgMCwgNzg4NjEsIDExOTEzNCwgMCwgMCwgCisgICAgNTIwNCwgNzQ3NzQsIDQzNDA0LCAxMTgzNSwgMCwgMzk5NSwgNjgzNjAsIDY1NjA4LCAzNzE0LCA5MjE5MCwgMCwgMCwgCiAgICAgMTA5OTksIDExNzUwLCAwLCA0MzI1MSwgNjg2NjAsIDQzMzAxLCAwLCAxMjA1NTcsIDgxMzAsIDg2NzIsIDEwODQ1LCAKLSAgICAxMTk2NCwgMCwgMCwgMCwgMCwgNjg0NTUsIDQyODYzLCA3MzgzOSwgMCwgMCwgMCwgMCwgMCwgMCwgNDY4LCA2MTIsIDAsIAotICAgIDY0NDAxLCA2NjQ0OCwgNjgzNzYsIDAsIDE2NzQsIDAsIDU4MjMsIDAsIDEyMjgwLCAwLCA1NDAsIDc0NTY0LCAxMTkwMTcsIAotICAgIDAsIDg0MzIsIDAsIDExMDczLCAwLCA2NDMxNiwgMCwgMCwgODIwLCA0MTc0MSwgMCwgMTIwNjY3LCAwLCA2NDY4NCwgCi0gICAgMTI2OTkyLCAzMzU5LCA3ODAwLCAxMjg2NDQsIDY1MTc3LCA2MjI2LCAzNTMsIDEyMzk2LCAwLCAxMTk2MTIsIDY0NzQyLCAKLSAgICAxMjg2ODIsIDEyMDI4MiwgMCwgMCwgMTI0MTIsIDE5OTQxLCAwLCAxMjAyNzcsIDc4ODQ3LCAxODg0LCA5NDgxLCA0MjQxOCwgCi0gICAgMCwgNDExNTcsIDAsIDExOTUsIDY0ODk4LCA3OTI0LCAwLCA0MTE1MSwgMjAxMCwgMCwgNDEzMjgsIDQyMzQ0LCAwLCAKLSAgICAxMjQwOSwgMCwgNDM2MCwgMTI3MDA5LCA5NzM5LCAwLCA3NDM5MiwgNzM5MjEsIDAsIDQyNTIxLCA4NTM5LCAwLCAwLCAKLSAgICAxMTg5ODYsIDAsIDQ3ODgsIDAsIDAsIDY1NzM0LCAwLCA0Mzc5MCwgMCwgMTMwNzUsIDc0NDI5LCAwLCA2NDU2OSwgNDM1MzIsIAotICAgIDEwODM3LCAyNDkyLCAxMjcxOTcsIDExODkwMSwgNjg2MzcsIDQxMTM2LCA0Mzc4NSwgMTE4MTMsIDk2NDksIDQxMTU0LCAKLSAgICAxMTk2MTcsIDUxMjgsIDQwMzgsIDQxMTQzLCA2NTYwNCwgNjQ4NTksIDQxNTkyLCA2NzcxLCAxNjQ4LCA1NDM1LCAwLCAKLSAgICA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgMTI3MDksIDY5ODYsIDkyMzY0LCAwLCAwLCA0MTM0OSwgMTE5MTIzLCAKLSAgICAxMjU4MSwgMTAzNzQsIDUxNzUsIDAsIDczODA2LCAxMDI1NCwgMCwgMTAyNzgsIDEwMjYyLCA3Nzk1MCwgNDEzNDYsIDAsIAotICAgIDYwNywgMCwgMTE5ODUzLCAxMjg4NDYsIDEyOTIzLCAxMDMxNCwgMTAyODIsIDY1NDc3LCAxMDM3OCwgMTIwMjk3LCA0MDk3NiwgCi0gICAgODI2NSwgMCwgMTE5ODM0LCA0MDk3NSwgNTg0MCwgNDI4MzgsIDAsIDQwOTc4LCAwLCAxMTk4NDAsIDAsIDAsIDAsIDY2NDQ0LCAKLSAgICAxMDUzOCwgMCwgMjU1MCwgMTE5ODM2LCA2Nzc5LCAwLCAwLCAzNTI1LCA2ODI0LCAxMTg4ODYsIDAsIDAsIDU2MTksIAotICAgIDY1ODIyLCAwLCAxOTQ4ODIsIDc0NTUsIDAsIDU2MTYsIDExNDg2LCA5NjU2LCAwLCAwLCAxMDcyNywgNTYxNSwgMCwgCi0gICAgMTIwNTUxLCA0MjM4MCwgNjQ4OTUsIDQzNjkzLCA2NjQ1MSwgODA4LCA1NDU1LCAxMTM0NywgMCwgMTAyNiwgNTYyMCwgCi0gICAgMTk0ODg3LCAwLCAxMTM1MCwgNTYxNywgMCwgOTIyNSwgNjQ2MzksIDEyNzA3MywgOTE0NSwgMTI4MDYwLCAxMzM4LCAKLSAgICAxMjA1ODEsIDAsIDEyNzM5LCA0NjAzLCAzMDg0LCAwLCA5MjQ4NCwgOTg1OCwgNjAzNywgMCwgMzk3NCwgNzgyMTMsIAotICAgIDEwMjkwLCAwLCAzMDgzLCAxMDMyMiwgMCwgMCwgMCwgNDEwMzYsIDAsIDAsIDQzMzIxLCA2NTYwNiwgMCwgNDEwMzIsIAotICAgIDQyMzg4LCAwLCA2NDcwMCwgMTAwMTEsIDE0NDUsIDQwOTYxLCAwLCAxOTQ4OTMsIDAsIDQwOTYwLCAwLCAxOTQ4OTEsIDAsIAotICAgIDQwOTYzLCA2NDk1MiwgMTA0MDIsIDAsIDAsIDkyMzA0LCAxMDYwMywgMCwgMCwgMCwgMCwgNjcxNCwgMTAwODMsIDEyNzA2OSwgCi0gICAgMTk0ODk1LCA3ODM2NywgMTI3Mzc3LCAwLCAwLCA5MDczLCA0MjU4NSwgNjQzMDIsIDEwNzA0LCA2NTAzMCwgNDc4NywgMCwgCi0gICAgNzQ4MjksIDAsIDY1NDIzLCAwLCAxMjgxMTgsIDk1NzAsIDAsIDk1MjUsIDI2ODksIDkxNzYyNiwgNjU0MjYsIDAsIAotICAgIDkxNzYyNCwgNDM3NDAsIDAsIDQwOTY2LCA5MTc2MjMsIDEzMjg2LCAzOTk4LCA0MjU5OCwgNDI1OTYsIDUwMywgNzQyMzcsIAorICAgIDExOTY0LCAwLCA5ODMxODUsIDAsIDAsIDY4NDU1LCA0Mjg2MywgNzM4MzksIDAsIDAsIDAsIDAsIDEyNjYyOSwgMCwgNDY4LCAKKyAgICA2MTIsIDAsIDY0NDAxLCA2NjQ0OCwgNjgzNzYsIDAsIDE2NzQsIDAsIDU4MjMsIDk4MzE2MywgMTIyODAsIDAsIDU0MCwgCisgICAgNzQ1NjQsIDExOTAxNywgMCwgODQzMiwgMCwgMTEwNzMsIDAsIDY0MzE2LCAwLCAwLCA4MjAsIDQxNzQxLCAwLCAxMjA2NjcsIAorICAgIDAsIDY0Njg0LCAxMjY5OTIsIDMzNTksIDc4MDAsIDY5OTM0LCA2NTE3NywgNjIyNiwgMzUzLCAxMjM5NiwgMCwgMTE5NjEyLCAKKyAgICA2NDc0MiwgMTI4NjgyLCAxMjAyODIsIDAsIDk4MzQ0MiwgMTI0MTIsIDE5OTQxLCAwLCAxMjAyNzcsIDc4ODQ3LCAxODg0LCAKKyAgICA5NDgxLCA0MjQxOCwgNzAwNTksIDQxMTU3LCAwLCAxMTk1LCA2NDg5OCwgNzkyNCwgMCwgNDExNTEsIDIwMTAsIDAsIAorICAgIDQxMzI4LCA0MjM0NCwgMCwgMTI0MDksIDAsIDQzNjAsIDEyNzAwOSwgOTczOSwgMTI4NTUwLCA2OTkzMywgNzM5MjEsIDAsIAorICAgIDQyNTIxLCA4NTM5LCA5ODM3MTYsIDAsIDExODk4NiwgMCwgNDc4OCwgMCwgNjgwMjMsIDY1NzM0LCA5ODM0NDcsIDQzNzkwLCAKKyAgICAwLCAxMzA3NSwgNzQ0MjksIDk0MDYzLCA2NDU2OSwgNDM1MzIsIDEwODM3LCAyNDkyLCAxMjcxOTcsIDExODkwMSwgNjg2MzcsIAorICAgIDQxMTM2LCA0Mzc4NSwgMTE4MTMsIDk2NDksIDQxMTU0LCAxMTk2MTcsIDUxMjgsIDQwMzgsIDQxMTQzLCA2NTYwNCwgCisgICAgNjQ4NTksIDQxNTkyLCA2NzcxLCAxNjQ4LCA1NDM1LCA5MTc4MzcsIDY3MzQsIDQxMzQzLCAxMTk4NDgsIDY1NDM5LCAKKyAgICAxMjcwOSwgNjk4NiwgOTIzNjQsIDY4MDE1LCAwLCA0MTM0OSwgNzAwMjEsIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgNzM4MDYsIAorICAgIDEwMjU0LCAwLCAxMDI3OCwgMTAyNjIsIDY5ODU4LCA0MTM0NiwgMCwgNjA3LCAwLCAxMTk4NTIsIDEyODg0NiwgMTI5MjMsIAorICAgIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCA4MjY1LCAwLCAxMTk4MzQsIDQwOTc1LCA1ODQwLCAKKyAgICA0MjgzOCwgMCwgNDA5NzgsIDk4Mzg4OCwgMTE5ODQwLCAwLCA5ODMwNzEsIDAsIDY2NDQ0LCAxMDUzOCwgMCwgMjU1MCwgCisgICAgMTE5ODM2LCA2Nzc5LCAwLCAwLCAzNTI1LCA2ODI0LCAxMTg4ODYsIDAsIDAsIDU2MTksIDY1ODIyLCAxMjY1NjcsIAorICAgIDE5NDg4MiwgNzQ1NSwgMCwgNTYxNiwgMTE0ODYsIDk2NTYsIDAsIDAsIDEwNzI3LCA1NjE1LCAwLCAxMjA1NTEsIDQyMzgwLCAKKyAgICA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIDExMzQ3LCAwLCAxMDI2LCA1NjIwLCAxOTQ4ODcsIDAsIDExMzUwLCAKKyAgICA1NjE3LCAwLCA5MjI1LCA2NDYzOSwgMTI3MDczLCA5MTQ1LCAxMjgwNjAsIDEzMzgsIDEyMDU4MSwgOTgzMTU4LCAxMjczOSwgCisgICAgNDYwMywgMzA4NCwgOTgzMTU1LCA5MjQ4NCwgOTg1OCwgNjAzNywgMCwgMzk3NCwgNzgyMTMsIDEwMjkwLCA5ODM2OTUsIAorICAgIDMwODMsIDEwMzIyLCAwLCAwLCAwLCA0MTAzNiwgMCwgMCwgNDMzMjEsIDY1NjA2LCAwLCA0MTAzMiwgNDIzODgsIDAsIAorICAgIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIDExOTEwNSwgMCwgNDA5NjAsIDAsIDE5NDg5MSwgMCwgNDA5NjMsIAorICAgIDY0OTUyLCAxMDQwMiwgMCwgMCwgOTIzMDQsIDEwNjAzLCAwLCAwLCA5ODMxMTMsIDAsIDY3MTQsIDEwMDgzLCAxMjcwNjksIAorICAgIDE5NDg5NSwgNzgzNjcsIDEyNzM3NywgMCwgOTM5NjMsIDkwNzMsIDQyNTg1LCA2NDMwMiwgMTA3MDQsIDY1MDMwLCA0Nzg3LCAKKyAgICAwLCA3NDgyOSwgMCwgNjU0MjMsIDAsIDEyODExOCwgOTU3MCwgNTUyNjAsIDk1MjUsIDI2ODksIDkxNzYyNiwgNjU0MjYsIDAsIAorICAgIDkxNzYyNCwgNDM3NDAsIDAsIDQwOTY2LCA5MTc2MjIsIDEzMjg2LCAzOTk4LCA0MjU5OCwgNDI1OTYsIDUwMywgNzQyMzcsIAogICAgIDg3MzUsIDI2OTAsIDY2NDg4LCA0MjgzNiwgMTI3MTUwLCA0MTk1NCwgOTE3NjE3LCAxNjUyLCA3NzIsIDY2ODgsIDgzMTAsIAogICAgIDY1NDI4LCAzNDg3LCA0MzQxNiwgMzU4NSwgMTAxOTQsIDQzMzIwLCAxMTkxNTksIDEyODE4MywgMTk0ODc0LCA2NDY4LCAKLSAgICA0MTk3NiwgOTcyMCwgOTE3NjA2LCAxMTc2NywgNDE5NzAsIDAsIDU4MzYsIDEyMzU4LCAwLCA0MzU1LCA5MDQ4LCAxMjE4MCwgCi0gICAgNjUwMjcsIDY0NjgwLCAxMzAzOCwgNDM2OTksIDAsIDQxNDg4LCAxMjgwODcsIDg1MjcsIDE5NDkxNywgMTIzNjIsIDEyNDM1LCAKLSAgICAxMjM2MCwgNDEwNTMsIDMyNjYsIDAsIDEyMzU2LCA4NjE2LCA0MTQ2NiwgMCwgOTI1ODgsIDExNDUwLCAwLCAzNjM4LCAKLSAgICAxMjM1NCwgMCwgMzIxNiwgMCwgMjM1OCwgOTI2MDYsIDg2MzMsIDAsIDAsIDExOTE4MiwgNjkyNDQsIDAsIDAsIDExNzU5LCAKLSAgICAxOTQ5MDMsIDYzNjgsIDc0ODIzLCAwLCA0MTQyMywgODA3OCwgMTA1MDQsIDAsIDQxNjk4LCA0MjIzNywgMCwgNzAwMiwgMCwgCi0gICAgNDE0MzAsIDQyMjY3LCA0MTA1MSwgNDE0ODQsIDAsIDAsIDQxMDUwLCA0MTQ3MywgMTA0NjYsIDEzMDk5LCAwLCAwLCAwLCAKLSAgICA2NDM1LCAwLCAxMTM2MiwgMCwgMCwgNjUzODIsIDAsIDQxNDIwLCAwLCAzNjI1LCA3ODE1NywgNDE0MDksIDAsIDY5NjM5LCAKLSAgICAyMDQxLCA5MTc4LCA5NjcyLCA0MTQyNywgNDM1NDEsIDQzMzE3LCAwLCAwLCAwLCA0MTQyNCwgOTE3NTk4LCAxMjA1NDYsIDAsIAotICAgIDEyODIxMiwgMCwgNDE0MTcsIDEyNjEsIDAsIDAsIDEyMTAyLCAxMTk2NjIsIDQxNDAxLCAwLCAxMjc1MzgsIDAsIDc4MjUxLCAKLSAgICAwLCA0MjI5MCwgMzI3NSwgOTI0NzIsIDQyMzI5LCA3NDc1OSwgMCwgMCwgMCwgOTIzODgsIDY5NjQ5LCAxMDk4OSwgNzQyMzQsIAotICAgIDAsIDEwNTk4LCA3NDEwLCAyNjY5LCA5MDMsIDAsIDI5MjAsIDAsIDEyNzIzMiwgNzQ2MDMsIDY0NTA0LCAxOTkyOCwgMCwgMCwgCi0gICAgMzkxNywgMCwgMTE3MzIsIDAsIDAsIDQxNDQ4LCA0MTQ2MSwgMTI4ODIzLCAwLCAxMjc5MTIsIDAsIDg4MTksIDEyNjYzLCAwLCAKLSAgICA0MTE4NCwgNzQwMTQsIDIzMiwgNzQ4MzUsIDEyMDY0NiwgOTE2OCwgNjU3ODYsIDAsIDAsIDAsIDkwOTQsIDAsIDExNzU4LCAKLSAgICA2ODQyNSwgMCwgMTA2NCwgNDI0NjcsIDEyODA0NCwgMTAxMTUsIDE5OTI0LCA5MjcxMSwgMCwgNzg2MiwgNjQ1NTEsIAotICAgIDEzMjI0LCA4NTE2LCA0MTg2MiwgNjY2NTAsIDc1NjEsIDc4NjE4LCA2OTc5MywgMTg3OCwgMCwgMCwgMjkxMSwgMCwgCi0gICAgNDExNzgsIDU0MjcsIDY0ODIzLCAwLCAwLCAzNzg3LCA0MTE3NCwgMCwgNDE0NTgsIDAsIDQxNDYzLCA0MjQxMywgMTEyOTIsIAotICAgIDI0MDYsIDc3NSwgMCwgNjU1ODQsIDAsIDYwNzQsIDk2MTgsIDEyODY2OCwgMCwgNDM0NDAsIDAsIDE5NDkwMSwgNDE0MzYsIAotICAgIDM2NTYsIDAsIDE5NDg5OSwgNDE0NTYsIDAsIDE1OTksIDExMzMzLCAwLCA2NzAzLCA4NTEzLCAwLCAxNjEzLCAwLCA2ODQ1NiwgCi0gICAgMTI1OTgsIDAsIDEyMDczNCwgNzg3NDUsIDc0NTAwLCA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgMCwgCisgICAgNDE5NzYsIDk3MjAsIDkxNzYwNiwgMTE3NjcsIDQxOTcwLCAxOTQ1OTYsIDU4MzYsIDEyMzU4LCAwLCA0MzU1LCA5MDQ4LCAKKyAgICAxMjE4MCwgNjUwMjcsIDY0NjgwLCAxMzAzOCwgNDM2OTksIDAsIDQxNDg4LCAxMjgwODcsIDg1MjcsIDE5NDkxNywgMTIzNjIsIAorICAgIDEyNDM1LCAxMjM2MCwgNDEwNTMsIDMyNjYsIDAsIDEyMzU2LCA4NjE2LCA0MTQ2NiwgMCwgOTI1ODgsIDExNDUwLCAwLCAKKyAgICAzNjM4LCAxMjM1NCwgMCwgMzIxNiwgMCwgMjM1OCwgOTI2MDYsIDg2MzMsIDAsIDk4MzczNiwgMTE5MTgyLCA2OTI0NCwgMCwgCisgICAgMCwgMTE3NTksIDE5NDkwMywgNjM2OCwgNzQ4MjMsIDAsIDQxNDIzLCA4MDc4LCAxMDUwNCwgMTI3NTU4LCA0MTY5OCwgCisgICAgNDIyMzcsIDAsIDcwMDIsIDk4MzY2OSwgNDE0MzAsIDQyMjY3LCA0MTA1MSwgNDE0ODQsIDAsIDAsIDQxMDUwLCA0MTQ3MywgCisgICAgMTA0NjYsIDEzMDk5LCAwLCAwLCAwLCA2NDM1LCAwLCAxMTM2MiwgMCwgMCwgNjUzODIsIDAsIDQxNDIwLCAwLCAzNjI1LCAKKyAgICA3ODE1NywgNDE0MDksIDAsIDY5NjM5LCAyMDQxLCA5MTc4LCA5NjcyLCA0MTQyNywgNDM1NDEsIDQzMzE3LCAwLCAwLCAwLCAKKyAgICA0MTQyNCwgOTE3NTk4LCAxMjA1NDYsIDAsIDEyODIxMiwgMCwgNDE0MTcsIDEyNjEsIDAsIDAsIDEyMTAyLCAxMTk2NjIsIAorICAgIDQxNDAxLCAwLCAxMjc1MzgsIDAsIDc4MjUxLCAwLCA0MjI5MCwgMzI3NSwgOTI0NzIsIDQyMzI5LCA3NDc1OSwgMCwgMCwgMCwgCisgICAgOTIzODgsIDY5NjQ5LCAxMDk4OSwgNzQyMzQsIDk4MzE0MCwgMTA1OTgsIDc0MTAsIDI2NjksIDkwMywgMCwgMjkyMCwgMCwgCisgICAgMTI3MjMyLCA3NDYwMywgNjQ1MDQsIDE5OTI4LCAwLCAwLCAzOTE3LCAwLCAxMTczMiwgMCwgOTgzMTgwLCA0MTQ0OCwgCisgICAgNDE0NjEsIDEyODgyMywgMCwgMTI3OTEyLCAwLCA4ODE5LCAxMjY2MywgMCwgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAKKyAgICAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCAwLCAwLCA5MDk0LCAwLCAxMTc1OCwgNjg0MjUsIDAsIDEwNjQsIDQyNDY3LCAKKyAgICAxMjgwNDQsIDEwMTE1LCAxOTkyNCwgOTI3MTEsIDAsIDc4NjIsIDY0NTUxLCAxMzIyNCwgODUxNiwgNDE4NjIsIDY2NjUwLCAKKyAgICA3NTYxLCA3ODYxOCwgNjk3OTMsIDE4NzgsIDAsIDk4MzI2MSwgMjkxMSwgMCwgNDExNzgsIDU0MjcsIDY0ODIzLCAwLCAwLCAKKyAgICAzNzg3LCA0MTE3NCwgMCwgNDE0NTgsIDAsIDQxNDYzLCA0MjQxMywgMTEyOTIsIDI0MDYsIDc3NSwgMCwgNjU1ODQsIAorICAgIDY5OTIzLCA2MDc0LCA5NjE4LCAxMjg2NjgsIDk4Mzk0MywgNDM0NDAsIDAsIDE5NDkwMSwgNDE0MzYsIDM2NTYsIDAsIAorICAgIDEyMDYwMCwgNDE0NTYsIDAsIDE1OTksIDExMzMzLCAwLCA2NzAzLCA4NTEzLCAwLCAxNjEzLCAwLCA2ODQ1NiwgMTI1OTgsIAorICAgIDk4MzE5MSwgMTIwNzM0LCA3ODc0NSwgNzQ1MDAsIDQxNDYwLCAxMDE0NSwgMTA1NDIsIDk5MzcsIDc4NzQ2LCA3MDAyOSwgCiAgICAgOTkwNSwgMCwgNjU3MzAsIDAsIDEyMDM3NCwgODQyNywgMTIwMzc1LCA1NTI0NiwgMTIwMzc2LCAwLCAxMTQ5NywgNjQ2ODcsIAogICAgIDc0MDA4LCA0MjU5MiwgMzg3MSwgMCwgMTI4MzA1LCA5MTExLCA1NzQxLCAwLCAxOTQ4NDYsIDEyMDM2NiwgMTE5MTExLCAKICAgICAxMjA3NDUsIDAsIDEyMDM2OCwgMCwgMTE2NDgsIDAsIDE5NDg3MywgMTIwMzY0LCA0MTU4NywgMTIwMzY1LCAwLCA3NDMyMiwgCiAgICAgNDIxMTMsIDAsIDEyNzE1NSwgMTIxNzIsIDAsIDc0NTMwLCA2NTI5OCwgNjU3MjMsIDE5NDg0MCwgNzM4NzEsIDY1NzI0LCAKLSAgICA3OTI4LCAxMjAzNTQsIDAsIDQxNTk1LCA3MzczMCwgMCwgNDIxMTgsIDczODMwLCA2NjA0MiwgMTAzNTUsIDAsIDc4NzUsIDAsIAotICAgIDQxNTk4LCAzOTkzLCAwLCAxNTQ1LCA0MDk3MSwgNTM2LCAxMjg1MjEsIDQzMDI5LCAwLCAwLCA2NTE3MywgNjUyODYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQxMzc1LCA1NDAyLCAwLCAwLCAxNjg3LCAxMjA1MDMsIDAsIDAsIDc4MTk0LCA2NDMyNiwgCi0gICAgNDA5NjksIDEwNTI2LCA3ODc1MywgODMyMywgNDA5NjgsIDEzMzksIDExNzMxLCA3ODc1NiwgMCwgNjU0NjAsIDEyMjQyLCAKLSAgICAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgMCwgMCwgODI2NiwgNDEwMDYsIDY1NzIyLCAwLCAxMDcxMCwgMCwgCi0gICAgMTE4OTQyLCA2NzY2NywgNjQ1NjcsIDExOTE1NSwgMTk1MDkxLCAwLCAxMTk2MzYsIDY3ODU3LCAxMjA2ODcsIDAsIDAsIAotICAgIDExNzU1LCA2NjMwNSwgMCwgMCwgMTA5MTcsIDEyMDc2NywgMCwgMTEyNzIsIDIwNDAsIDQxMjQ3LCA0MTMyNiwgMTk1MDYwLCAKLSAgICAxNzQxLCA0MjM3MCwgMTIyNywgMCwgMCwgMTE0MTMsIDAsIDAsIDUyODMsIDE1ODYsIDQ5NzgsIDAsIDE5ODQsIDE5NDYyMSwgCi0gICAgMCwgOTIyOTMsIDQwOTg0LCAxMjgzMDYsIDkzNzMsIDAsIDEyOTE2LCA2Mjg0LCAwLCA0MTY2MywgMCwgMCwgMCwgOTIzNywgCi0gICAgOTM4NSwgNDE2NDgsIDAsIDAsIDAsIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgNDEyODcsIDkyNjEwLCAwLCAwLCAKLSAgICA0MjIxOSwgMTI4MjU3LCAwLCA0MTk4NywgNDE2NzYsIDAsIDEyMDgyMywgMCwgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCAKLSAgICA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCAwLCAxMTQ1MSwgMCwgMTI4ODIyLCA0MjYzMSwgMjM1OSwgMCwgNjc4NDQsIAotICAgIDc0MTY0LCA0MTIzOCwgNTQ4LCAxMTQwNSwgMTMxMzMsIDY0MzY4LCAwLCAxMjg3OTUsIDAsIDM5NywgNDM2MjIsIDQyMTM5LCAKLSAgICA5NTQ3LCA5NTkwLCAxMjgyMzgsIDE2MTQsIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDAsIDQyOCwgOTYyMCwgCi0gICAgMTQ2NiwgNzgxMTIsIDEwOTgyLCAxMTg4MzEsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMCwgMCwgCi0gICAgMCwgNTgwNCwgMTE5NzYsIDg1NTQsIDkyNzIxLCAwLCAwLCA5MDU3LCA0MjI5NCwgNDEyMTgsIDAsIDAsIDc4MTM3LCAxODgzLCAKLSAgICAxMDk1MiwgODA0OCwgNzgxNDIsIDQxMjI1LCA5MjYyMSwgNDI5MTUsIDAsIDEyODY4NCwgMCwgNDQwNywgMCwgNjU4MDksIAotICAgIDExOTA3NCwgMTk0ODIxLCA4NDQ4LCA3MTQxLCA3NDE4MywgMCwgMTI2NzUsIDEyNjU5LCAwLCA0MjM2MywgMTIwNjI0LCAKLSAgICAxOTQ4MjQsIDU1MjczLCAxMDc2NiwgMTIwMTIsIDIzODYsIDY0NzMyLCA5MTcwLCA5MTc4MjEsIDkxMjMsIDY0NTg1LCAKLSAgICAxMjA1MDAsIDAsIDcxNDAsIDEwOTc3LCAxMjczNzgsIDQxNjQsIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCAKLSAgICA4NzA5LCAxMjgyODMsIDAsIDEyMDYzNywgNDI0MTksIDY0Nzk5LCA0MjA0NywgMCwgMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCAKLSAgICA1NzcsIDAsIDAsIDc0MzAwLCAwLCAxMjczMDgsIDc0ODQwLCAwLCAwLCAxMjg3OTEsIDkyMjI0LCA4NzM2LCAxNDE0LCAKLSAgICA0MjY0MywgOTY4MywgNDM0ODYsIDc0MzQ0LCAwLCAyNTM2LCAwLCA2NjMzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjYzMTcsIAotICAgIDkxNzYxMiwgNjYzMTUsIDIxMDYsIDEyMDIyMiwgMTEyNzMsIDAsIDQzMDA0LCA3NTQxLCAwLCAwLCA5NjEsIDY0MzA3LCAKLSAgICA2NjMyNCwgNjQ5MDYsIDEyODU5MSwgMzEwNiwgNjU5MTcsIDQxMjg0LCAxNjk2LCAwLCA4OTEsIDEyMTA1LCAwLCA0MjYyNCwgCi0gICAgMTI4MDIsIDMyNjQsIDg4MjQsIDEzMjY4LCA0MzAwMywgMTA5MzYsIDAsIDAsIDAsIDE5NDgyNiwgOTI2ODgsIDAsIDIzMjIsIAotICAgIDEyMDM3MSwgMCwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAzNTQ3LCAwLCAwLCAwLCAwLCA0MzIxNiwgNjA4OSwgCi0gICAgNzg2ODIsIDAsIDEyMDU3OCwgNDE3MCwgMTAyOSwgMTI3NzYxLCAxMjcwMzYsIDExOTIyNCwgNDIzNzQsIDAsIDc0NCwgMCwgCi0gICAgMCwgMCwgNjU4MjMsIDEyNzgyNiwgMCwgMzU1MSwgMCwgMCwgNDYyMywgNTUyNjgsIDAsIDQ1OTgsIDAsIDY1MTM2LCAKLSAgICAxMjcxMzYsIDAsIDAsIDEwODUxLCAwLCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIDEyMDc3OCwgNzg2NDgsIAotICAgIDExOTcyLCA3ODY0NiwgNzg2NDcsIDc4NjQ0LCA3ODY0NSwgMTc3LCA3ODY0MywgNjE3NiwgMTIwNTgwLCAwLCAwLCA2MTc3LCAKLSAgICA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAxMjgwMjcsIDY3NjczLCA3NTE4LCA4NzU0LCAwLCAKLSAgICAxMjAyMzcsIDIxMzcsIDQzMDgxLCAwLCAwLCA5MTM2LCAxMjAyNDAsIDQ0MDEsIDQxMjgwLCAwLCA4OTc0LCAyMzA4LCAwLCAKLSAgICA3NDE0OSwgMCwgMjMxOCwgMCwgNjYzNjEsIDgxOTgsIDAsIDY0MzYwLCAxMjYwMSwgNDI1MzYsIDY1MjY2LCAxMjA4MjcsIAotICAgIDc0MzA3LCAwLCA2OTcwLCA1NDA0LCA0MzMzMiwgMzY2NywgNzkzNiwgMTI5MjUsIDEyNjk4OSwgNjM4NSwgMCwgMCwgCi0gICAgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyODA4MywgMCwgNDIwNTMsIDIwNzUsIDQyMDU3LCAxMTA4MywgNDIwNTIsIDAsIDAsIAotICAgIDY3NjUxLCAwLCA5NjY1LCA5MjMwMCwgMCwgMTMxODEsIDAsIDAsIDAsIDAsIDc0MTQ4LCAwLCAwLCAxMjAyMjUsIDEyMDIyOSwgCi0gICAgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDAsIDAsIDAsIDQxMTQ4LCA4NjgzLCA3NTk0LCAxMjc1MTksIDAsIDExOTA5MCwgCi0gICAgMTA4NjksIDQzNDU4LCA0MTE0NiwgOTI0MDcsIDExNDQxLCAwLCAzNTEyLCAxMTk2MzMsIDAsIDgxMDMsIDAsIDAsIDY1MTg0LCAKLSAgICAxMTc4MCwgNDE1NjMsIDQyNzk2LCAwLCA2OTc0MiwgNDE1NDQsIDY1MTQ2LCAwLCAwLCAwLCAwLCAxOTk0MiwgMCwgCi0gICAgMTE4OTA4LCA3OTg4LCAxMDQzNiwgNzQyNzMsIDMyNzEsIDczODA0LCA2NDcxMSwgMCwgMCwgMCwgMCwgMzgwNCwgMTMwNzAsIAotICAgIDExNTU3LCA0MjA0NCwgMCwgMTA5NSwgMCwgMzU5OSwgMTI3Nzc0LCAwLCAxMjg4NjEsIDg1MTQsIDAsIDAsIDAsIDc0MzQ2LCAKLSAgICA2NjY5NywgMCwgMTE2ODQsIDAsIDkyNDg2LCAwLCAwLCA0MjA0MywgNDMyMzIsIDY2Njc3LCAwLCA0MjA0NiwgNzgyNDEsIAotICAgIDQwMzYsIDAsIDAsIDEyODIxMywgMTk0ODYxLCAwLCAxMTk1NCwgMCwgMTQ1MCwgMTI5ODYsIDEzNDAsIDAsIDY1NDQxLCAKLSAgICA5MjcyMiwgMCwgMCwgMTI3NzcyLCAwLCA5MTc1NDIsIDAsIDAsIDY1MzksIDAsIDAsIDAsIDE5NDg1NiwgMCwgMTIwNDkyLCAKLSAgICA0MTE5MCwgMzk3MywgMTE5MzY1LCA0NTc1LCA0MTE5MywgNzk4MiwgNDI5LCAwLCAxMjcxOTQsIDAsIDE5NDg1NCwgNjU3OTIsIAotICAgIDAsIDExODk2OCwgNjQxNywgMTE4OTE4LCA3ODE3OCwgMCwgMTk0ODUwLCAwLCAwLCA0OTE5LCAxMDU5MCwgMCwgNzc1NSwgMCwgCi0gICAgMCwgNjQ1NDgsIDEyMDUwNiwgMTYyMSwgMTAyMTQsIDY1MTI2LCAwLCAxMjcwMDQsIDAsIDEyMTg4LCAwLCAxNjE3LCA4MDUwLCAKLSAgICAwLCA1MDE1LCAwLCAxMTkxNzQsIDQyNTkwLCAxOTQ4NzEsIDE3NTYsIDc4MTgxLCAwLCA2NTc2OCwgNjM1MiwgNDE4OTIsIDAsIAotICAgIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCAwLCA5MjMzNSwgMCwgMCwgMCwgMCwgMTI3MTk1LCA3OTU3LCA4Njg5LCAKLSAgICA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAxOTQ4MTMsIDAsIDU1Mjg2LCA3MDczLCA2NTg1MCwgMTIzMjcsIDAsIAotICAgIDExOTAyOCwgMCwgMCwgMCwgMjM0MSwgODQ1MCwgODQ4NCwgODQ3NCwgMCwgMCwgMCwgODQ2MSwgMTI4MTAyLCAxMjE1MywgCi0gICAgMTI3OTksIDAsIDQzNzA5LCA0MzcwOCwgOTQ1MSwgNzU3MSwgMTMwNzMsIDAsIDAsIDY4MSwgMCwgNzAzLCAwLCAzMjcyLCAKLSAgICA4NzgxLCAxMjg5NCwgMCwgMTE3MDksIDkyMjg4LCA3NDQ0NiwgMCwgOTI1MzIsIDAsIDExMzM4LCAxMjA3NjgsIDMyNzYsIDAsIAotICAgIDAsIDY1OTI4LCAwLCAwLCA2NTAyMSwgNjQ3OTUsIDc0NTc0LCAwLCAxMDA0NywgNzg4MTQsIDMyNjIsIDc4ODExLCA0MjcxMSwgCi0gICAgMCwgMCwgNjg0NzgsIDE2MywgNTc2LCA5ODk1LCAxNjU1LCA3ODgxNywgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgMCwgMCwgMCwgCi0gICAgMCwgMTAwMzksIDAsIDAsIDU2MjMsIDU3MTcsIDU3NzYsIDAsIDAsIDAsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAKLSAgICAwLCAwLCA2Nzg0OCwgMCwgMCwgMCwgODg4NywgMCwgNzI5NSwgMTEwMzEsIDAsIDQzMTU3LCAwLCA4OTQ2LCAxMDM0OCwgCi0gICAgMTA0MTIsIDg3NTUsIDAsIDAsIDU3MTgsIDEzMjIxLCAwLCAwLCA3ODEzNSwgMCwgMCwgODgxMCwgNzQ0OTksIDY4NiwgMCwgCi0gICAgMCwgNDYxOSwgMTE4OTU0LCA2NjU0LCA3Mzc2OSwgNzQ0MjYsIDAsIDEyMDQwLCA2NTY4OSwgMTAxMjgsIDY1MTE4LCAwLCAKLSAgICAxMTkxNTEsIDc0MjA1LCA5MjY1MSwgMCwgMjQwMSwgNjgxNDQsIDg3OTIsIDAsIDAsIDY1NDU1LCAwLCA5MjI0NiwgMCwgCi0gICAgMTE5MTI5LCAwLCAxMjg4NiwgMTI3OTIwLCA2NjYyNCwgMCwgNDM1NTcsIDEwMzAwLCAxMDE2MSwgMTAzOTYsIDc0MTM1LCAwLCAKLSAgICAxMTg5NDUsIDc4MTE4LCA3Mzg1MSwgMzAxMCwgNjQ0MSwgNzgxMjIsIDE0NTgsIDQxNDc1LCAxMjg2NzIsIDAsIDAsIAotICAgIDExNDc5LCAwLCAwLCA2MzUwLCAxMjg2NCwgNjk2NzQsIDc4MTE0LCAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIDU1MjMwLCAKLSAgICAxMjg2ODYsIDQwNTIsIDAsIDc2MjYsIDAsIDAsIDEwNDUsIDAsIDU2MzEsIDQxMTEzLCAwLCAwLCA0MzcwNywgNzQxMjcsIDAsIAotICAgIDAsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCAwLCAwLCA2OTIyMSwgMTAyNSwgMCwgNDI2MjUsIDkxNzYyNywgCi0gICAgNzgwODQsIDQxNDQzLCAwLCAxMjgyMDYsIDAsIDE3NzQsIDE1MjMsIDAsIDAsIDQxNDQ1LCA3ODIzNiwgMCwgODU2NywgCi0gICAgNDE0NDIsIDM5ODgsIDAsIDc4MjM3LCAxMTg5MTAsIDAsIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgMCwgCi0gICAgMCwgNDM0NDYsIDAsIDY2NTEzLCA2MjU2LCAwLCA1NzksIDU1MjE4LCAxMDIwNiwgMCwgNjM3NSwgMjY3MywgMCwgMTE4MTQsIAotICAgIDAsIDQ0ODgsIDAsIDEyNzMzNiwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgCi0gICAgNDQ4NywgMTI3ODQ5LCA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgNzgyNTcsIDcyMDMsIDAsIDYxNCwgNzgxOTEsIAotICAgIDEyNzMyNSwgMTIwNjE1LCAwLCA3ODI2MiwgMTI4NjY5LCAxMjczMjMsIDAsIDQzMTIxLCAwLCAwLCA5MjUxMywgMTA1MCwgCi0gICAgNzU0OSwgMCwgMCwgOTMxNCwgMCwgMCwgMTIwNjE2LCAwLCAxMDA1NywgMCwgMTI3MzEzLCAwLCA2NjUwNCwgMCwgMCwgCi0gICAgMjMwNywgMCwgNjQzMzMsIDEyNzMxMiwgMTI4NTQ3LCA3Mzg3MywgMCwgMCwgMCwgMTI3OTczLCAxMjg3MDgsIDAsIDEwMzYwLCAKLSAgICA2NzQ2LCAwLCA5MjI0NSwgNDQwLCAwLCAxMzA4NSwgOTIzMywgNzQyMTYsIDAsIDAsIDk5NTcsIDAsIDY2NDQ3LCA4MDQ2LCAKLSAgICA2NDk2MywgNjU3NzcsIDEwMTI1LCA3NDIxMiwgNDI4MTksIDEwOTEwLCAwLCAxNTIxLCA5ODk2LCAwLCAxMDQ4NywgMCwgCi0gICAgMTI1MjcsIDAsIDc5NzAsIDAsIDEyODY2MCwgMCwgNjU3NjksIDUyNDMsIDk4NDksIDUyMzksIDY1NzcxLCAwLCAwLCA1MjM3LCAKLSAgICA2OTcxNCwgMCwgMTAxMDMsIDUyNDcsIDQ3NjksIDAsIDExODk3NywgMTI4NzMsIDU3NjQsIDAsIDAsIDMwMDgsIDQ4OTYsIDAsIAotICAgIDEyMDg3LCAwLCA1NTIzMSwgNDExMDMsIDAsIDY0NTY1LCA0NzczLCAwLCA5MjcxNywgMCwgNDc3MCwgMCwgOTE3NTY3LCAKLSAgICA4NzMxLCA2NTM3OCwgMTI3MzYyLCAxMjA2MTksIDkxMjIsIDEyODAzMywgMCwgNDc3NCwgMzAxOSwgOTk5NywgMTI4MzQsIDAsIAotICAgIDk0NTYsIDEwMjE1LCAxMjA1NDcsIDAsIDAsIDAsIDAsIDc0Nzc2LCA0MjgxLCA0NzY4LCAwLCA0MTUzNSwgNDA5OSwgOTAxNywgCi0gICAgMCwgMCwgNzgwOTUsIDAsIDc4MDk2LCAwLCAwLCAwLCA3ODA5OCwgMCwgNDI4MTQsIDg4MCwgMCwgMCwgMTI4MDIxLCAyMTM0LCAKLSAgICAwLCAxMDExNiwgOTg3NywgOTIzMjksIDAsIDAsIDcwOTUsIDAsIDc0MTE2LCA2Nzc4LCAwLCA3ODA5MCwgODI0MywgMjQyNywgCi0gICAgMTI4MTQxLCA3MDkzLCAwLCAxMTU4NSwgMTk1MDAzLCA5OTYyLCAwLCAxMjIyMywgMCwgMCwgMTQzNCwgMTIwMjU0LCA1NjM3LCAKLSAgICAxMTU3MywgMCwgMCwgMCwgMTk5NTEsIDAsIDc4MTIxLCAwLCAwLCA1NTI4MywgMCwgMCwgNzQ0MzcsIDExNTYsIDg3NDAsIAotICAgIDkyNDE1LCAzNzgyLCA2NDMzMSwgMCwgNDEzNzAsIDEwMTQsIDgyNjEsIDAsIDAsIDEwODM1LCAwLCA2NTUzNiwgMCwgCi0gICAgMTIwNDYzLCAwLCA3NzAyLCAxMTg4MjQsIDAsIDQzMDEwLCA2NTc3OSwgNjU3ODMsIDExNTAsIDEwNTQ3LCA1NzAwLCAwLCAKLSAgICAxMjA2MDMsIDY1MzgzLCAyMzM5LCA0MjU5NCwgNTY5NywgMTE4Nzg4LCAwLCAxMjg1NzYsIDAsIDQyMjU3LCA1Njk2LCAKLSAgICA5MjY3NywgMTIwNDY1LCAzODYyLCA5NjQzLCAwLCAwLCA3NjM0LCA2NTE2NywgOTg0NSwgMCwgMCwgNTcwMSwgOTcyMiwgCi0gICAgNDE0OTAsIDAsIDE0MjYsIDY4MjE3LCAwLCA2ODQ0NywgNDIyMDQsIDU1MjcwLCA4NTcxLCAxOTQ5OTEsIDc4MDY3LCAwLCAKLSAgICA3ODgxOCwgOTI3MTksIDQzMTgyLCAxMjE4NCwgMCwgNDIwMjIsIDAsIDEwMjgxLCAwLCA1NjUwLCA0MzE5NCwgNjQ3MTIsIAotICAgIDEwNzQ0LCAwLCA5OTAsIDU2NDcsIDAsIDczODcsIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIDEyODc5LCAxMTAxOCwgMCwgCi0gICAgMzk0NSwgOTI1ODksIDAsIDAsIDAsIDAsIDc4MjEyLCAxMjc3NDYsIDEwMjAsIDczNzYzLCAwLCA3ODczMSwgNTY0OCwgCi0gICAgNjQ3NDgsIDE5NDkxMCwgMCwgMTAyMDUsIDM1NDUsIDAsIDY5ODQsIDAsIDc0MDUxLCAwLCA0MzI0MiwgMTIwNDU4LCAyNjY3LCAKLSAgICAwLCAwLCAwLCA5OTExLCAwLCA2NTAyMCwgMTAwOTcsIDExOTE2NiwgMTI3MTQ1LCAwLCAxMTg4MzYsIDAsIDc4NDI3LCAKLSAgICAxMTQwLCA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDAsIDAsIDkxNzk2NSwgMTgxNSwgMTk5MTAsIDg5MCwgMCwgCi0gICAgMzI2NywgOTIyOTEsIDAsIDEwMTIzLCAwLCA0NDEwLCAxMDQxLCAxMDU3NiwgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDAsIAorICAgIDc5MjgsIDEyMDM1NCwgOTgzMDk1LCA0MTU5NSwgNzM3MzAsIDAsIDQyMTE4LCA3MzgzMCwgNjYwNDIsIDEwMzU1LCAKKyAgICA5ODMxMTAsIDc4NzUsIDAsIDQxNTk4LCAzOTkzLCAwLCAxNTQ1LCA0MDk3MSwgNTM2LCAxMjg1MjEsIDQzMDI5LCAwLCAwLCAKKyAgICA2NTE3MywgNjUyODYsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMzc1LCA1NDAyLCAwLCAwLCAxNjg3LCAxMjA1MDMsIDkxNzgxNywgCisgICAgMCwgNzgxOTQsIDY0MzI2LCA0MDk2OSwgMTA1MjYsIDc4NzUzLCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIDc4NzU2LCAwLCAKKyAgICA2NTQ2MCwgMTIyNDIsIDEyODUxMywgODAyMCwgMTA4NDMsIDExNTU0LCAwLCAwLCA4MjY2LCA0MTAwNiwgNjU3MjIsIDAsIAorICAgIDEwNzEwLCAwLCAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCAxOTUwOTEsIDAsIDExOTYzNiwgNjc4NTcsIDEyMDY4NywgCisgICAgMCwgOTgzMDY2LCAxMTc1NSwgNjYzMDUsIDAsIDAsIDEwOTE3LCA5Mzk3OSwgMCwgMTEyNzIsIDIwNDAsIDQxMjQ3LCAKKyAgICA0MTMyNiwgMTk1MDYwLCAxNzQxLCA0MjM3MCwgMTIyNywgMCwgMCwgMTE0MTMsIDAsIDAsIDUyODMsIDE1ODYsIDQ5NzgsIDAsIAorICAgIDE5ODQsIDExODMwLCAwLCA5MjI5MywgNDA5ODQsIDEyODMwNiwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDAsIDQxNjYzLCAwLCAKKyAgICAwLCAwLCA5MjM3LCA5Mzg1LCA0MTY0OCwgMCwgMTk0NTgwLCAyMjk5LCA0MTY2NiwgMTgzMCwgNzM3ODMsIDIwNTYsIAorICAgIDQxMjg3LCA5MjYxMCwgMCwgMCwgNDIyMTksIDEyODI1NywgMCwgNDE5ODcsIDQxNjc2LCA5ODMwNTksIDEyMDgyMywgCisgICAgOTgzMTQ0LCA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDY3OTg4LCAxMTQ1MSwgCisgICAgOTgzMTExLCAxMjg4MjIsIDQyNjMxLCAyMzU5LCAwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAxMzEzMywgCisgICAgNjQzNjgsIDk4MzIzMywgMTI4Nzk1LCAwLCAzOTcsIDQzNjIyLCA0MjEzOSwgOTU0NywgOTU5MCwgMTI4MjM4LCAxNjE0LCAKKyAgICA0MzY2MSwgNjQzNTYsIDY2MzA3LCA2NjUxLCAxMzU4LCAwLCA0MjgsIDk2MjAsIDE0NjYsIDc4MTEyLCAxMDk4MiwgCisgICAgMTE4ODMxLCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDAsIDAsIDAsIDU4MDQsIDExOTc2LCA4NTU0LCAKKyAgICA5MjcyMSwgMCwgMCwgOTA1NywgNDIyOTQsIDQxMjE4LCAwLCAwLCA3ODEzNywgMTg4MywgMTA5NTIsIDgwNDgsIDc4MTQyLCAKKyAgICA0MTIyNSwgOTI2MjEsIDQyOTE1LCA5ODM2NjcsIDEyODY4NCwgMCwgNDQwNywgMCwgNjU4MDksIDExOTA3NCwgMTk0ODIxLCAKKyAgICA4NDQ4LCA3MTQxLCA3NDE4MywgMCwgMTI2NzUsIDEyNjU5LCAwLCA0MjM2MywgMTIwNjI0LCAxOTQ4MjQsIDU1MjczLCAKKyAgICAxMDc2NiwgMTIwMTIsIDIzODYsIDY0NzMyLCA5MTcwLCA5MTc4MjEsIDkxMjMsIDY0NTg1LCAxMjA1MDAsIDExOTE1OCwgCisgICAgNzE0MCwgMTA5NzcsIDEyNzM3OCwgNDE2NCwgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIDg3MDksIDEyODI4MywgCisgICAgMTI2NDc3LCAxMjA2MzcsIDQyNDE5LCA2NDc5OSwgNDIwNDcsIDAsIDAsIDg0NzAsIDExODA3LCA2NTg5NywgNTc3LCAwLCAKKyAgICA5ODM3NTEsIDc0MzAwLCAwLCAxMjczMDgsIDc0ODQwLCAwLCAwLCAxMjg3OTEsIDkyMjI0LCA4NzM2LCAxNDE0LCA0MjY0MywgCisgICAgOTY4MywgNDM0ODYsIDc0MzQ0LCAwLCAyNTM2LCAwLCA2NjMzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjYzMTcsIDY5OTQ1LCAKKyAgICA2NjMxNSwgMjEwNiwgMTIwMjIyLCAxMTI3MywgMCwgNDMwMDQsIDc1NDEsIDAsIDAsIDk2MSwgNjQzMDcsIDY2MzI0LCAKKyAgICA2NDkwNiwgMTI4NTkxLCAzMTA2LCA2NTkxNywgNDEyODQsIDE2OTYsIDAsIDg5MSwgMTIxMDUsIDAsIDQyNjI0LCAxMjgwMiwgCisgICAgMzI2NCwgODgyNCwgMTMyNjgsIDQzMDAzLCAxMDkzNiwgMCwgMCwgMCwgMTk0ODI2LCA5MjY4OCwgMCwgMjMyMiwgMTIwMzcxLCAKKyAgICA5ODM1ODQsIDExNDQ5LCAxMjgxODcsIDQyODY4LCA0MTI4NSwgMzU0NywgMCwgMCwgMTI4NzkzLCA5ODMzOTAsIDQzMjE2LCAKKyAgICA2MDg5LCA3ODY4MiwgMCwgMTIwNTc4LCA0MTcwLCAxMDI5LCAxMjc3NjEsIDEyNzAzNiwgMTE5MjI0LCA0MjM3NCwgMCwgCisgICAgNzQ0LCAwLCAwLCAwLCA2NTgyMywgMTI3ODI2LCAwLCAzNTUxLCAwLCAwLCA0NjIzLCA1NTI2OCwgMCwgNDU5OCwgOTgzMTYyLCAKKyAgICA2NTEzNiwgMTI3MTM2LCAwLCAwLCAxMDg1MSwgMCwgNjE3OSwgOTI2MDIsIDYxODAsIDAsIDExOTUyLCAxMjA3NzgsIAorICAgIDc4NjQ4LCAxMTk3MiwgNzg2NDYsIDc4NjQ3LCA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIDEyMDU4MCwgMCwgMCwgCisgICAgNjE3NywgOTAyMCwgNzg2NTIsIDc4NjUzLCA2MTc4LCAxMjAyNDksIDEyMDI0MiwgMTI4MDI3LCA2NzY3MywgMjIxNCwgCisgICAgODc1NCwgMCwgMTIwMjM3LCAyMTM3LCA0MzA4MSwgMCwgMCwgOTEzNiwgMTIwMjQwLCA0NDAxLCA0MTI4MCwgMCwgODk3NCwgCisgICAgMjMwOCwgMCwgNzQxNDksIDAsIDIzMTgsIDk4MzE4MywgNjYzNjEsIDgxOTgsIDAsIDY0MzYwLCAxMjYwMSwgNDI1MzYsIAorICAgIDY1MjY2LCAxMjA4MjcsIDc0MzA3LCA5MjQ2MiwgNjk3MCwgNTQwNCwgNDMzMzIsIDM2NjcsIDc5MzYsIDEyOTI1LCAKKyAgICAxMjY5ODksIDYzODUsIDAsIDAsIDExODk0OSwgMTA4NzQsIDY1NTA1LCAxMjgwODMsIDAsIDQyMDUzLCAyMDc1LCA0MjA1NywgCisgICAgMTEwODMsIDQyMDUyLCAwLCAwLCA2NzY1MSwgMCwgOTY2NSwgOTIzMDAsIDk4MzY1NywgMTMxODEsIDAsIDAsIDAsIDcwMDg4LCAKKyAgICA3NDE0OCwgMCwgMCwgMTIwMjI1LCAxMjAyMjksIDEyMDIyNCwgNzQxNzIsIDQxMTQ1LCAwLCA5NDA5NiwgOTgzOTM3LCAKKyAgICA0MTE0OCwgODY4MywgNzU5NCwgMTI3NTE5LCAwLCAxMTkwOTAsIDEwODY5LCA0MzQ1OCwgNDExNDYsIDkyNDA3LCAxMTQ0MSwgCisgICAgMCwgMzUxMiwgMTE5NjMzLCA5ODM3MDAsIDgxMDMsIDAsIDAsIDY1MTg0LCAxMTc4MCwgNDE1NjMsIDQyNzk2LCAwLCAKKyAgICA2OTc0MiwgNDE1NDQsIDY1MTQ2LCAwLCAwLCAwLCAwLCAxOTk0MiwgMCwgMTE4OTA4LCA3OTg4LCAxMDQzNiwgNzQyNzMsIAorICAgIDMyNzEsIDczODA0LCA2NDcxMSwgMCwgOTQwNjQsIDAsIDAsIDM4MDQsIDEzMDcwLCAxMTU1NywgNDIwNDQsIDAsIDEwOTUsIAorICAgIDAsIDM1OTksIDEyNzc3NCwgMCwgMTI4ODYxLCA4NTE0LCAwLCAwLCAwLCA3NDM0NiwgNjY2OTcsIDAsIDExNjg0LCAwLCAKKyAgICA5MjQ4NiwgOTE3NjAzLCAwLCA0MjA0MywgNDMyMzIsIDY2Njc3LCAwLCA0MjA0NiwgNzgyNDEsIDQwMzYsIDEyNjQ4MSwgMCwgCisgICAgMTI4MjEzLCAxOTQ4NjEsIDAsIDExOTU0LCA5Mzk3OCwgMTQ1MCwgMTI5ODYsIDEzNDAsIDAsIDY1NDQxLCA5MjcyMiwgMCwgCisgICAgMCwgMTI3NzcyLCAwLCA5MTc1NDIsIDAsIDAsIDY1MzksIDAsIDAsIDAsIDE5NDg1NiwgMCwgMTIwNDkyLCA0MTE5MCwgCisgICAgMzk3MywgMTE5MzY1LCA0NTc1LCA0MTE5MywgNzk4MiwgNDI5LCAwLCAxMjcxOTQsIDAsIDE5NDg1NCwgNjU3OTIsIDAsIAorICAgIDExODk2OCwgNjQxNywgMTE4OTE4LCA3ODE3OCwgMCwgMTk0ODUwLCAwLCAwLCA0OTE5LCAxMDU5MCwgMTI4NTU2LCA3NzU1LCAKKyAgICAwLCAwLCA2NDU0OCwgMTIwNTA2LCAxNjIxLCAxMDIxNCwgNjUxMjYsIDAsIDEyNzAwNCwgMCwgMTIxODgsIDk4MzY1OSwgCisgICAgMTYxNywgODA1MCwgMCwgNTAxNSwgMCwgMTE5MTc0LCA0MjU5MCwgMTk0ODcxLCAxNzU2LCA3ODE4MSwgMCwgNjU3NjgsIAorICAgIDYzNTIsIDQxODkyLCAwLCA3NTU1LCAxMzEwMywgNTQwOCwgMjgxNywgMTIxNCwgNjk5MTksIDkyMzM1LCA5ODMxMjUsIDAsIAorICAgIDAsIDAsIDEyNzE5NSwgNzk1NywgODY4OSwgNjQ3MjMsIDEwNTYsIDQyODk2LCA3NDE0NywgMTk0ODEzLCAwLCA1NTI4NiwgCisgICAgNzA3MywgNjU4NTAsIDEyMzI3LCA5ODM5MzksIDExOTAyOCwgMCwgMCwgMCwgMjM0MSwgODQ1MCwgODQ4NCwgODQ3NCwgCisgICAgOTgzMjUyLCAwLCA3MDA3OSwgODQ2MSwgMTI4MTAyLCAxMjE1MywgMTI3OTksIDAsIDQzNzA5LCA0MzcwOCwgOTQ1MSwgCisgICAgNzU3MSwgMTMwNzMsIDAsIDAsIDY4MSwgOTgzMjQ2LCA3MDMsIDAsIDMyNzIsIDg3ODEsIDEyODk0LCA3MDA3NywgMTE3MDksIAorICAgIDkyMjg4LCA3NDQ0NiwgMCwgOTI1MzIsIDAsIDExMzM4LCAxMjA3NjgsIDMyNzYsIDAsIDAsIDY1OTI4LCAwLCAwLCA2NTAyMSwgCisgICAgNjQ3OTUsIDc0NTc0LCAwLCAxMDA0NywgNzg4MTQsIDMyNjIsIDc4ODExLCA0MjcxMSwgMCwgMCwgNjg0NzgsIDE2MywgNTc2LCAKKyAgICA5ODk1LCAxNjU1LCA3ODgxNywgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgOTgzMTIyLCAwLCAwLCAwLCAxMDAzOSwgMCwgCisgICAgOTgzOTM2LCA1NjIzLCA1NzE3LCA1Nzc2LCAwLCAwLCAwLCA0MTU5MSwgMTEwMzYsIDY1MjUyLCA5MjM4MiwgMCwgMCwgMCwgCisgICAgNjc4NDgsIDAsIDAsIDAsIDg4ODcsIDEyNzUyMSwgNzI5NSwgMTEwMzEsIDAsIDQzMTU3LCAwLCA4OTQ2LCAxMDM0OCwgCisgICAgMTA0MTIsIDg3NTUsIDAsIDAsIDU3MTgsIDEzMjIxLCAwLCAwLCA3ODEzNSwgMCwgOTgzNzAyLCA4ODEwLCA3NDQ5OSwgNjg2LCAKKyAgICAwLCA3MTM2MiwgNDYxOSwgMTE4OTU0LCA2NjU0LCA3Mzc2OSwgNzQ0MjYsIDAsIDEyMDQwLCA2NTY4OSwgMTAxMjgsIAorICAgIDY1MTE4LCAwLCAxMTkxNTEsIDc0MjA1LCA5MjY1MSwgMCwgMjQwMSwgNjgxNDQsIDg3OTIsIDk4MzYzOSwgMCwgNjU0NTUsIAorICAgIDAsIDkyMjQ2LCAwLCAxMTkxMjksIDAsIDEyODg2LCAxMjc5MjAsIDY2NjI0LCAwLCA0MzU1NywgMTAzMDAsIDEwMTYxLCAKKyAgICAxMDM5NiwgNzQxMzUsIDk4MzQ0NSwgMTE4OTQ1LCA3ODExOCwgNzM4NTEsIDMwMTAsIDY0NDEsIDc4MTIyLCAxNDU4LCAKKyAgICA0MTQ3NSwgMTI4NjcyLCA5Mzk3NSwgMCwgMTE0NzksIDAsIDEyMDM1NiwgNjM1MCwgMTI4NjQsIDY5Njc0LCA3ODExNCwgCisgICAgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCA1NTIzMCwgMTI4Njg2LCA0MDUyLCAwLCA3NjI2LCAwLCAwLCAxMDQ1LCAwLCAKKyAgICA1NjMxLCA0MTExMywgMCwgMCwgNDM3MDcsIDc0MTI3LCAwLCAwLCA4NDg2LCAwLCA3Mzc1OCwgMjMzNSwgNDM2MiwgCisgICAgOTgzMTk1LCAxMjY1NjEsIDY5MjIxLCAxMDI1LCAwLCA0MjYyNSwgOTE3NjI3LCA3ODA4NCwgNDE0NDMsIDAsIDEyODIwNiwgCisgICAgMCwgMTc3NCwgMTUyMywgMCwgMCwgNDE0NDUsIDc4MjM2LCAwLCA4NTY3LCA0MTQ0MiwgMzk4OCwgMCwgNzgyMzcsIAorICAgIDExODkxMCwgMCwgNjUyNzQsIDg1NjQsIDc4MTk5LCA3ODIzOCwgMTI3NTE1LCAwLCAwLCA0MzQ0NiwgMCwgNjY1MTMsIAorICAgIDYyNTYsIDAsIDU3OSwgNTUyMTgsIDEwMjA2LCA5ODMwNzUsIDYzNzUsIDI2NzMsIDAsIDExODE0LCAwLCA0NDg4LCAwLCAKKyAgICAxMjczMzYsIDY4NDUxLCAxMDQ0NCwgMTE4ODQ2LCAxMjczMzQsIDExNzk5LCA3NDQwNywgNjg0NjYsIDQ0ODcsIDEyNzg0OSwgCisgICAgNDI4MzIsIDEwMzIsIDEyMDI2NywgNDM0NTAsIDc4MjU3LCA3MjAzLCAwLCA2MTQsIDc4MTkxLCAxMjczMjUsIDEyMDYxNSwgCisgICAgMCwgNzgyNjIsIDEyODY2OSwgMTI3MzIzLCAwLCA0MzEyMSwgMCwgMCwgOTI1MTMsIDEwNTAsIDc1NDksIDAsIDAsIDkzMTQsIAorICAgIDAsIDAsIDEyMDYxNiwgMCwgMTAwNTcsIDAsIDEyNzMxMywgMCwgNjY1MDQsIDk4MzE3MSwgMCwgMjMwNywgMCwgNjQzMzMsIAorICAgIDEyNzMxMiwgMTI4NTQ3LCA3Mzg3MywgMCwgOTQwMzUsIDAsIDEyNzk3MywgMTI4NzA4LCAwLCAxMDM2MCwgNjc0NiwgMCwgCisgICAgOTIyNDUsIDQ0MCwgMCwgMTMwODUsIDkyMzMsIDc0MjE2LCAwLCAwLCA5OTU3LCAxMjgyODUsIDY2NDQ3LCA4MDQ2LCAKKyAgICA2NDk2MywgNjU3NzcsIDEwMTI1LCA3NDIxMiwgNDI4MTksIDEwOTEwLCAwLCAxNTIxLCA5ODk2LCA5Mzk2NSwgMTA0ODcsIAorICAgIDY5ODc4LCAxMjUyNywgMCwgNzk3MCwgMCwgMTI4NjYwLCAwLCA2NTc2OSwgNTI0MywgOTg0OSwgNTIzOSwgNjU3NzEsIAorICAgIDk4MzIyOSwgMCwgNTIzNywgNjk3MTQsIDAsIDEwMTAzLCA1MjQ3LCA0NzY5LCAwLCAxMTg5NzcsIDEyODczLCAyMjgzLCAKKyAgICA5ODMyMzEsIDAsIDMwMDgsIDQ4OTYsIDAsIDEyMDg3LCAwLCA1NTIzMSwgNDExMDMsIDAsIDY0NTY1LCA0NzczLCAwLCAKKyAgICA5MjcxNywgNzAwNzQsIDQ3NzAsIDAsIDkxNzU2NywgODczMSwgNjUzNzgsIDEyNzM2MiwgMTIwNjE5LCA5MTIyLCAxMjgwMzMsIAorICAgIDEyNjYwMCwgNDc3NCwgMzAxOSwgOTk5NywgMTI4MzQsIDAsIDk0NTYsIDEwMjE1LCAxMjA1NDcsIDAsIDAsIDAsIDAsIAorICAgIDc0Nzc2LCA0MjgxLCA0NzY4LCAwLCA0MTUzNSwgNDA5OSwgOTAxNywgMCwgMCwgNzgwOTUsIDAsIDc4MDk2LCAwLCAwLCAwLCAKKyAgICA3ODA5OCwgMCwgNDI4MTQsIDg4MCwgMCwgMCwgMTI4MDIxLCAyMTM0LCAwLCAxMDExNiwgOTg3NywgOTIzMjksIDAsIDAsIAorICAgIDcwOTUsIDAsIDc0MTE2LCA2Nzc4LCAwLCA3ODA5MCwgODI0MywgMjQyNywgMTI4MTQxLCA3MDkzLCAwLCAxMTU4NSwgCisgICAgMTk1MDAzLCA5OTYyLCAwLCAxMjIyMywgMCwgMCwgMTQzNCwgMTIwMjU0LCA1NjM3LCAxMTU3MywgMCwgMCwgMCwgMTk5NTEsIAorICAgIDAsIDc4MTIxLCAwLCAwLCA1NTI4MywgMCwgMCwgNzQ0MzcsIDExNTYsIDg3NDAsIDkyNDE1LCAzNzgyLCA2NDMzMSwgMCwgCisgICAgNDEzNzAsIDEwMTQsIDgyNjEsIDAsIDAsIDEwODM1LCAwLCA2NTUzNiwgMCwgMTIwNDYzLCAwLCA3NzAyLCAxMTg4MjQsIDAsIAorICAgIDQzMDEwLCA2NTc3OSwgNjU3ODMsIDExNTAsIDEwNTQ3LCA1NzAwLCAwLCAxMjA2MDMsIDY1MzgzLCAyMzM5LCA0MjU5NCwgCisgICAgNTY5NywgMTE4Nzg4LCAwLCAxMjg1NzYsIDAsIDQyMjU3LCA1Njk2LCA5MjY3NywgMTIwNDY1LCAzODYyLCA5NjQzLCAwLCAwLCAKKyAgICA3NjM0LCA2NTE2NywgOTg0NSwgMCwgMCwgNTcwMSwgOTcyMiwgNDE0OTAsIDk4MzE1MywgMTQyNiwgNjgyMTcsIDAsIAorICAgIDY4NDQ3LCA0MjIwNCwgNTUyNzAsIDg1NzEsIDE5NDk5MSwgNzgwNjcsIDAsIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAKKyAgICAwLCA0MjAyMiwgMCwgMTAyODEsIDAsIDU2NTAsIDQzMTk0LCA2NDcxMiwgMTA3NDQsIDAsIDk5MCwgNTY0NywgMCwgNzM4NywgCisgICAgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgMTI4NzksIDExMDE4LCA5ODM5MjEsIDM5NDUsIDkyNTg5LCAwLCAwLCAwLCAwLCAKKyAgICA3ODIxMiwgMTI3NzQ2LCAxMDIwLCA3Mzc2MywgMCwgNzg3MzEsIDU2NDgsIDY0NzQ4LCAxOTQ5MTAsIDc4NzMzLCAxMDIwNSwgCisgICAgMzU0NSwgOTgzNTg1LCA2OTg0LCAwLCA3NDA1MSwgOTgzNjQ2LCA0MzI0MiwgMTIwNDU4LCAyNjY3LCAwLCAwLCAwLCA5OTExLCAKKyAgICAwLCA2NTAyMCwgMTAwOTcsIDExOTE2NiwgMTI3MTQ1LCA5ODM2NTMsIDExODgzNiwgOTgzNzM5LCA3ODQyNywgMTE0MCwgCisgICAgNzg0MjYsIDAsIDEwMTU5LCAwLCAwLCA4MTI4LCAwLCAwLCA5MTc5NjUsIDE4MTUsIDE5OTEwLCA4OTAsIDAsIDMyNjcsIAorICAgIDkyMjkxLCAwLCAxMDEyMywgMCwgNDQxMCwgMTA0MSwgMTA1NzYsIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCAwLCAKICAgICAxMjgzNDcsIDAsIDAsIDAsIDE5OTM4LCA2NTkwNiwgMTI3ODE5LCAwLCAwLCAzMjk4LCA1Mzc1LCAxMDE0MiwgMCwgODIxNSwgCi0gICAgMCwgNjEzNCwgNDEyNDYsIDY0NDAyLCAwLCAxMjgyMTUsIDAsIDAsIDAsIDQxMzgyLCAwLCAxMjg2NTMsIDUxNzMsIDY1MzQ4LCAKKyAgICAwLCA2MTM0LCA0MTI0NiwgNjQ0MDIsIDAsIDY5ODk5LCAwLCAwLCAwLCA0MTM4MiwgMCwgMTI4NjUzLCA1MTczLCA2NTM0OCwgCiAgICAgNTI3LCAwLCAwLCA5MjYxMiwgMTI4MjUwLCA3ODc5NywgMTE5MTUsIDAsIDAsIDEwMDcyLCAwLCA0MjY5NSwgMjMyOSwgCi0gICAgNDIyNTAsIDAsIDEyODg2NCwgNjk2NjcsIDEyMjQ1LCAxNTY4LCAwLCAwLCAwLCAxMjgxMjAsIDAsIDc0MzI4LCA5MjcwOCwgCi0gICAgNzQ3NjksIDAsIDExOTA4NywgOTA2OSwgNjE0NCwgMCwgMCwgNzM4MjIsIDAsIDEyODAxMCwgNjQ5MTcsIDQxNTIxLCAKLSAgICAxMTg5MzQsIDQ5NCwgMTMyNTAsIDAsIDY1MDk4LCA2MzY0LCA5NTYsIDAsIDEyODMwLCAxMDQ2MiwgNzM3NDAsIDAsIDAsIDAsIAotICAgIDAsIDY2NDQ5LCAxMzI2MywgNzQyODEsIDY5MjE3LCAxMzE3MSwgMTI3Nzk2LCAwLCAwLCA5MjI5NCwgMCwgMTA0NCwgCi0gICAgNDEyNzYsIDAsIDAsIDAsIDQyMDY4LCAxMTc5NSwgMCwgMCwgMCwgMCwgNDI0NTAsIDM5MDcsIDAsIDY0NTI2LCA5MTc4NDcsIAotICAgIDY4MTk3LCAxMjI5NSwgMCwgMTE0NzUsIDAsIDMwMjAsIDExNTM3LCAwLCA2NjQ0MSwgMCwgMCwgMCwgMCwgMTA1NywgNTY2LCAKLSAgICA0MjY5NiwgMCwgMzAxNiwgNDIyNzQsIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIDY2NTcxLCA3ODQ3MiwgOTI1MTAsIDMwMDYsIAotICAgIDQ2MjAsIDEyNzIzNywgMCwgMCwgMCwgNjQ2NTksIDAsIDEyNzc0OSwgNTUyNTMsIDYzNTcsIDYzNjIsIDg2MjYsIDAsIDAsIAotICAgIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIDAsIDY0NDc3LCAwLCA0MzgxMywgMTA1MywgMCwgNzgyNjksIAotICAgIDAsIDAsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgNzQzNDksIDY2NDc5LCAwLCAwLCAwLCAwLCA0MjQ5MCwgNjg5LCA2NTA4LCAKLSAgICA0MTYzLCA0MjI5OCwgODYzOSwgNjY2NDEsIDQyNDYsIDAsIDAsIDEyMTMwLCAwLCA0MjMzNywgNjQ1OTYsIDY0Mzc1LCAKLSAgICA2NjQ4MSwgMTI3ODUwLCAwLCAwLCA2MzU5LCAwLCA0MzQ3MSwgMCwgMCwgMCwgMTI3Mjc0LCAwLCA2MzU4LCA2MzYxLCAKLSAgICAxOTI2LCA2MzU2LCA5MjYyNywgNzg5OCwgODExMCwgMTA5MzUsIDAsIDEwMDY5LCA1ODMwLCAwLCA0MzY4NSwgMCwgMCwgMCwgCi0gICAgMCwgODY5MywgNzg2MTEsIDExOTU2NSwgMCwgMTIwNDEzLCAwLCAxMjcyNTcsIDY1ODk0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMTkxODcsIDIxMzUsIDc4ODY4LCAwLCAwLCA3ODg2OSwgNDIzMTMsIDU1NzksIDkyNDEyLCAwLCAwLCAwLCAwLCA1NTc4LCAKLSAgICA0MTc3NCwgMTI4MTE1LCA0MjAyMywgNjIzNCwgNTY2OSwgOTIyNzUsIDAsIDAsIDAsIDEyNzUwNiwgNjgyMDIsIDU1ODMsIDAsIAotICAgIDAsIDQyNDI2LCA1NTgwLCA0MjI3NiwgMjkyMywgODkyLCA1NTgyLCA0MjQ2NSwgNDEzMzAsIDE5NDk4NywgNTc5NSwgCi0gICAgNjU1MTIsIDExOTAwNiwgNjU3MDIsIDAsIDEyMDgwMSwgNjUyNTEsIDAsIDY1NzEwLCAwLCAwLCA2NzY3MiwgMCwgNTM3MCwgCi0gICAgMCwgMjkzMSwgMTYzOCwgMTA5NjYsIDEwMTg4LCA2NTg3OCwgMTE4ODQ4LCAwLCA2OTY5NCwgMCwgMTI4ODMwLCA4MTcyLCAKLSAgICA0MjAxNywgMCwgMTA4NDQsIDAsIDEyODE5NSwgOTI0MjQsIDYzNzQsIDAsIDAsIDI4NiwgNzgwMjMsIDEwNjIsIDAsIAotICAgIDExOTk5OSwgMCwgNzM5NSwgMCwgMTA3MCwgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAwLCAzMDE1LCAxMjgwMjMsIAotICAgIDkxNzc2MywgNTIxMSwgMCwgNjQwMCwgMCwgMTk0OTgzLCAwLCA4MTg5LCAxMTI3NiwgMCwgMCwgMzcyLCAxMjg4MjksIDAsIAotICAgIDExODg3NCwgNDIxMDIsIDQxNTg1LCAxMjgyMDIsIDAsIDQyMTAxLCAyNzYsIDc4NDAyLCAwLCAzMywgNzQyMjYsIDEyNzMwMywgCi0gICAgOTAwNywgMTE4Nzk2LCA0MTU4OCwgNjYwMzMsIDQyNywgMTA3NjMsIDExODgxOSwgMCwgMTI3ODg0LCAwLCAxMDMxLCA2MjU3LCAKLSAgICAwLCA0MjEwNCwgMCwgMCwgMjMyOCwgOTI0MDksIDEwNzEsIDAsIDAsIDc0ODQ4LCAwLCAwLCAwLCAxMDQ3LCAwLCAwLCAKLSAgICA2NDc5MCwgMCwgNjk3MjMsIDEwNjUxLCAwLCAwLCAwLCAwLCA5MjIwNiwgMTE5MTgxLCA1NzExLCA0MTYzMywgMTIwOTgsIAotICAgIDY1NTcxLCA5MTY2LCAwLCA1NzEwLCAwLCA2NzkwLCA2NTE2OCwgMTMyMTYsIDAsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIAotICAgIDQxNjIzLCAxOTUwMDEsIDU3MTUsIDY5NjU0LCAwLCAwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIDU3MjIsIAotICAgIDAsIDg2NDMsIDczNzY4LCAwLCAxMTg5MDYsIDI3NTcsIDExMDY3LCA5NzE4LCA3NDQ5OCwgODkxMCwgMTA2ODksIDY0NzksIAotICAgIDAsIDAsIDAsIDc4NjA3LCA5MTk2LCA2OTY3MCwgMCwgMCwgMCwgMCwgMTE4OTExLCAwLCAwLCAwLCAwLCAwLCAxMjAwMTAsIAotICAgIDAsIDg3MDEsIDY4MTMwLCAxMTk2MTYsIDEyMDUyMiwgMCwgNDI0NzcsIDAsIDEyMTIzLCA0NDk1LCA0MzU2OSwgMCwgMCwgMCwgCi0gICAgNjQ5NDYsIDEwOTkyLCAwLCAxMjAwMDksIDAsIDAsIDkzMTgsIDEyMDY2MSwgMTMyNDksIDY1Njc5LCA3MzgwOCwgMCwgCi0gICAgNjU0NTcsIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCAxOTQ5OTcsIDEyMDAwNSwgMCwgCi0gICAgMCwgNTA4NCwgMCwgMCwgMTE4ODYxLCAwLCA3MzMsIDkxNzg3NiwgNzgwMTQsIDc4NDM2LCA3ODQzNSwgNDE2NzcsIDAsIAotICAgIDkyMTgsIDE3MzEsIDAsIDAsIDAsIDE5NTAxMCwgMCwgMCwgMCwgMTIwMDAxLCAxMjcwMTgsIDkyNDkyLCA1MTU1LCAwLCAKLSAgICA1MzU4LCAwLCAwLCA5MTc3NjcsIDY0NDI0LCAwLCAzODQwLCA2NDMxNCwgNDE0MzIsIDAsIDAsIDY4NDMwLCAxMTkxMTYsIAotICAgIDQzMjUzLCA2NTk0MywgMCwgMzM3MSwgMTA5ODgsIDAsIDg3NzEsIDE0NzksIDAsIDAsIDExMDksIDExNTgwLCAwLCA2NDYwMSwgCi0gICAgMTIyMDUsIDAsIDAsIDY0NTA3LCA4ODY4LCAzOTksIDAsIDc0ODQyLCAwLCAwLCAxMjE0OSwgMTMwODgsIDU1MSwgMCwgCi0gICAgMTAxNTYsIDEyMTE5LCA5MjU3MiwgMCwgMjU0NCwgNjUwNzQsIDExOTIxMSwgMCwgMCwgNzgwMTEsIDM1MSwgMTE5MTQ5LCAwLCAKLSAgICAwLCA1NTIyOSwgMCwgNzQyNjgsIDAsIDAsIDAsIDQyMzc3LCAwLCAwLCAwLCAwLCAwLCA5MDEzLCA0MDU0LCAwLCAwLCAwLCAKLSAgICAwLCA3Mzk2MCwgNTU4NSwgNjU4ODEsIDI1NDksIDc0NDY5LCAwLCAwLCA1NTg0LCA4MzU4LCAwLCA3NDQxMSwgOTIyMTksIAotICAgIDEwOTE5LCAwLCA3OTgwLCAwLCAwLCAwLCA0MTgwMCwgNTU4OSwgMCwgMjY2NCwgNDE2MTMsIDU1ODYsIDExODg5MCwgMCwgCi0gICAgMTEzNTYsIDAsIDAsIDQzNDUyLCA3ODYwOSwgMCwgNDI1NzMsIDY3ODU2LCAwLCA3ODEyOSwgMCwgMCwgOTI1MzUsIDgxMzUsIAotICAgIDY0NTAsIDEwMDU1LCA3Nzk5NiwgMCwgMCwgMCwgNTY1NywgMCwgOTYyNiwgMCwgNzc5OTQsIDEwMTc5LCA1NjU0LCAxMjkzOSwgCi0gICAgOTI1NzMsIDEyMDc5OSwgMCwgMCwgNTY1MiwgMTA5NDUsIDAsIDY2NDg2LCAwLCAzNjYxLCA3ODYzLCAwLCAwLCAwLCAKLSAgICA3NDUwOSwgMCwgNTY1OSwgMCwgMTI3NTEwLCA2NjcyOSwgNTY1NSwgMCwgNDIxNjgsIDAsIDEwNTUsIDkxNzYyOCwgCi0gICAgMTI3NzkyLCA2NjMxMCwgNzQwMzAsIDAsIDEyMTQ2LCA3Mzk1NSwgNzM5NTYsIDExNjE4LCAwLCAxMjY5OTAsIDAsIDEwMjcyLCAKLSAgICAxMDMwNCwgMTAzNjgsIDQyNTE4LCA1OTQsIDEwMjQ0LCAxMDI0OCwgNzQwNywgMCwgNjQ4NzAsIDAsIDM0NjcsIDAsIDAsIAotICAgIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIDAsIDAsIDY5Njk2LCAKLSAgICA2OTc2OSwgNjQ2NTYsIDAsIDAsIDE5NDgzNywgMCwgNTY2NiwgNjUyMjcsIDUzMTgsIDYzOTk0LCAwLCA5MDkxLCAxMDc5OCwgCi0gICAgMCwgMTI4MTY2LCAxMDE4NiwgMCwgNzczMiwgMCwgNjQ1NTYsIDAsIDAsIDU2NjgsIDc0NDQ1LCAwLCAwLCA1NjcwLCAwLCAKLSAgICAxMjcyOTcsIDExODIwLCAyOTkyLCA3ODI2LCA1NjY3LCAxOTk1MiwgMTIwODA3LCAwLCAxMjc0OSwgNzQ1NTEsIDAsIDAsIAotICAgIDY2NDk2LCA0MzYxLCAxMTkyNjAsIDEzMDYsIDkyODYsIDE0OTcsIDAsIDAsIDAsIDAsIDM1NzEsIDEzMjQ3LCAwLCA3OTczLCAKLSAgICA2NjM1MywgNjg0MzUsIDc4Mjc4LCA2Nzg5NiwgNDMxOTIsIDAsIDc4MjY1LCA1NTMsIDEyMDY1MywgMCwgMTI4NTU0LCAKLSAgICA1ODI5LCAwLCA0NTg3LCA3ODI4NSwgNjU5MTIsIDAsIDEyNzQ2LCAwLCAwLCAxMTk5MjQsIDU2MzMsIDExOTkyNywgMCwgMCwgCi0gICAgMCwgNjQ5MDUsIDAsIDk1MTIsIDEyMDY3MSwgMTI3NDIsIDY0NDMsIDAsIDAsIDkxMzUsIDAsIDQxNTY0LCAwLCA1NTIxOSwgCi0gICAgMTI4ODMyLCAwLCAwLCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAwLCAxMTY2OSwgMCwgNTYzNCwgNDUyNCwgMCwgCi0gICAgMTI3MjcwLCAwLCAxMTg4ODAsIDI0MjUsIDY1MTgyLCAxMjg3NjksIDQzNjM2LCA1MjIxLCA3ODQxMCwgMzI4LCAwLCAwLCAKLSAgICA2OTgxNSwgNTYzNiwgMCwgNTMyOSwgMCwgNTYzOCwgMTE5OTE4LCA3OTQwLCA2NDkzOCwgNDMyMjMsIDAsIDU2MzUsIDMzNzMsIAotICAgIDI5ODYsIDc4MjkyLCA3NDIyMywgMzQzNywgNzgyOTEsIDYyMDMsIDQyNDcsIDAsIDExOTIwLCA4Mjc0LCAwLCAwLCAxNjU3LCAKLSAgICA0MTU2MSwgNzgyOTksIDc4Mjk1LCA1NjM5LCAyOTU0LCA1NjYwLCA1NjQwLCA3ODMwMywgMCwgNzgzMDAsIDQyMjI3LCAwLCAKLSAgICAwLCA0MTYzNywgNjc4NzIsIDAsIDc4MzEwLCA0MTYyNSwgNDMzNjIsIDc4MzA5LCAxMjA3MTMsIDExNzA1LCA1NjQyLCAwLCAKLSAgICA1NDg2LCAwLCA0MzU2LCAxMTcxMCwgMCwgMTIwNTEsIDAsIDAsIDU2NDEsIDgyNTksIDAsIDEwNTgsIDAsIDY3NjMwLCAwLCAKLSAgICAwLCAxMTQ0LCA3ODc1MCwgMCwgNDIyMjgsIDAsIDczODkwLCAxMTg5NzIsIDAsIDY1MzIyLCAwLCA1NjQ1LCA2NDk2NCwgCi0gICAgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAwLCA1NjA4LCA2NTg5MCwgNDM4MDgsIDAsIDY3NjIxLCAxMTk5MzQsIDkwMDAsIAotICAgIDAsIDAsIDkyNjczLCAxODY1LCAwLCA1NjEzLCA3NDI2NywgMCwgMCwgNTYxMCwgMCwgMCwgNjU4MjYsIDIwNjksIDAsIAotICAgIDEwNzg3LCA0Mzk5OSwgMjk5NywgMCwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDY1Mzc2LCAyNDEyLCAwLCAKLSAgICA4MTg2LCA5ODA3LCA3NDI2OSwgMCwgMTMxMzAsIDY1ODc0LCAwLCA1ODA3LCAwLCAxMDAzMCwgNTMwNiwgMTI5MzYsIDAsIDAsIAotICAgIDExNzA0LCAwLCA5MjU4MywgMTAyMTEsIDAsIDAsIDAsIDAsIDExNzA2LCA5NzEwLCAwLCAwLCAwLCA0MTMsIDY1NjIzLCAKLSAgICA3MTE4LCAwLCA5MTMzLCA3NDI2MiwgMCwgMTA0MiwgMCwgNjQ3NzksIDEyMTcxLCAxMTkyNDAsIDYxODUsIDY0Nzc2LCAKLSAgICA0OTg0LCAwLCA3MDgsIDExMzkxLCAwLCAxMjI0MSwgOTI3MjAsIDAsIDEzMDgsIDAsIDI1MzQsIDgxMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTkxNywgMzAwMCwgMCwgMCwgMTIwNzM5LCAyMzY0LCA5MjQ0MywgNzQ0NzAsIDY2NjE4LCA2NTY4MCwgMCwgMTAwMjcsIAotICAgIDAsIDEyODE1NCwgMTIzMzcsIDEyMDcyMiwgMTI3MzY4LCAwLCAyOTgwLCA3NTUsIDY5Nzc0LCA5MzEsIDEzMTI0LCA2ODE4MiwgCi0gICAgNjM2MywgMjc0OCwgMCwgMCwgNjUwNDEsIDAsIDQ0MDExLCA4NzMwLCAwLCAxMjc4NTQsIDc4MzEyLCA3Mjc0LCAxMTkyNTAsIAotICAgIDAsIDcyNzUsIDc4MzA0LCA5MzUsIDAsIDY1ODQwLCAzNzcsIDQyMzI1LCAxMTY0OSwgMTI3MzYzLCA2NTI1MywgNjQzMDEsIAotICAgIDEyODgzNSwgNzgzMDgsIDQyMzQxLCA2NTI4NCwgMjQxNywgMCwgMTI4ODQsIDE5OTEyLCA3OTA3LCAxMDc2OCwgMCwgCi0gICAgMTk0OTk4LCAwLCAxMDY3MywgMTE5MjE3LCA3MjQ4LCAwLCAxMjgzNDYsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAxNjQ5LCAwLCAKLSAgICA5NjQsIDAsIDEyNzg3NiwgNzgyMjYsIDEyODc3NSwgMTI3NTEyLCAwLCAwLCAwLCAwLCA0MzY4OSwgMTI3OTExLCAxMzE0MiwgCi0gICAgNzg4MTIsIDQyNDE1LCA2NjU3NSwgNDU0MiwgNzQwMzcsIDQzNTQ3LCAwLCAwLCA3Njc3LCAyOTkxLCA0OTQ2LCA0MjQ1NCwgCi0gICAgMCwgNzk0OSwgMCwgMCwgMTEzNDEsIDQyNDk0LCAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDkyNzI0LCAKLSAgICA2NDc4LCA5ODk4LCA0MzY3MywgNjUyMzcsIDYyNDEsIDcxMDYsIDQ4NzcsIDAsIDYyMzgsIDAsIDEwNTQ4LCAxMjcwNDksIAotICAgIDQ0MDksIDAsIDAsIDY0Nzk4LCAwLCA1MzQ2LCAwLCAxMjA1MjgsIDYyMzcsIDQ4NzQsIDAsIDkxNzYsIDAsIDAsIDY1MjMxLCAKKyAgICA0MjI1MCwgMCwgMTI4ODY0LCA2OTY2NywgMTIyNDUsIDE1NjgsIDk0MDMzLCAwLCAwLCAxMjgxMjAsIDAsIDc0MzI4LCAKKyAgICA5MjcwOCwgNzQ3NjksIDAsIDExOTA4NywgOTA2OSwgNjE0NCwgMCwgMCwgNzM4MjIsIDAsIDEyODAxMCwgNjQ5MTcsIAorICAgIDQxNTIxLCAxMTg5MzQsIDQ5NCwgMTMyNTAsIDAsIDY1MDk4LCA2MzY0LCA5NTYsIDAsIDEyODMwLCAxMDQ2MiwgNzM3NDAsIAorICAgIDczNzM0LCAwLCAwLCAwLCA2NjQ0OSwgMTMyNjMsIDc0MjgxLCA2OTIxNywgMTMxNzEsIDEyNzc5NiwgMCwgMCwgOTIyOTQsIAorICAgIDAsIDEwNDQsIDQxMjc2LCAwLCAwLCAwLCA0MjA2OCwgMTE3OTUsIDAsIDAsIDAsIDAsIDQyNDUwLCAzOTA3LCAwLCA2NDUyNiwgCisgICAgMTE4MjksIDY4MTk3LCAxMjI5NSwgMCwgMTE0NzUsIDAsIDMwMjAsIDExNTM3LCAwLCA2NjQ0MSwgOTgzNDQ2LCA3MDk4LCAwLCAKKyAgICAwLCAxMDU3LCA1NjYsIDQyNjk2LCAwLCAzMDE2LCA0MjI3NCwgNDM0NjQsIDY2NDkwLCAxMjkyMSwgNjY1NzEsIDc4NDcyLCAKKyAgICA5MjUxMCwgMzAwNiwgNDYyMCwgMTI3MjM3LCA5ODM1NzgsIDAsIDAsIDY0NjU5LCAwLCAxMjc3NDksIDU1MjUzLCA2MzU3LCAKKyAgICA2MzYyLCA4NjI2LCA3MTMzNywgMjIxNiwgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgMCwgNjQ0NzcsIDAsIAorICAgIDQzODEzLCAxMDUzLCAwLCA3ODI2OSwgMCwgMTI2NTg2LCAxMDUyLCAxMDUxLCA0NTksIDEwNjAsIDc0MzQ5LCA2NjQ3OSwgMCwgCisgICAgMCwgMCwgMCwgNDI0OTAsIDY4OSwgNjUwOCwgNDE2MywgNDIyOTgsIDg2MzksIDY2NjQxLCA0MjQ2LCAwLCAwLCAxMjEzMCwgCisgICAgMCwgNDIzMzcsIDY0NTk2LCA2NDM3NSwgNjY0ODEsIDEyNzg1MCwgMCwgMCwgNjM1OSwgMCwgNDM0NzEsIDk4Mzc1OSwgMCwgCisgICAgMCwgMTI3Mjc0LCAwLCA2MzU4LCA2MzYxLCAxOTI2LCA2MzU2LCA5MjYyNywgNzg5OCwgODExMCwgMTA5MzUsIDAsIDEwMDY5LCAKKyAgICA1ODMwLCAwLCA0MzY4NSwgMCwgMCwgMCwgMCwgODY5MywgNzg2MTEsIDExOTU2NSwgOTgzNzk5LCAxMjA0MTMsIDAsIAorICAgIDEyNzI1NywgNjU4OTQsIDAsIDAsIDAsIDk4MzkxNCwgMCwgMCwgMTE5MTg3LCAyMTM1LCA3ODg2OCwgMCwgMCwgNzg4NjksIAorICAgIDQyMzEzLCA1NTc5LCA5MjQxMiwgMCwgOTgzMDgyLCA5NDAwMiwgMCwgNTU3OCwgNDE3NzQsIDEyODExNSwgNDIwMjMsIAorICAgIDYyMzQsIDU2NjksIDkyMjc1LCAwLCAwLCAwLCAxMjc1MDYsIDY4MjAyLCA1NTgzLCAwLCAwLCA0MjQyNiwgNTU4MCwgCisgICAgNDIyNzYsIDI5MjMsIDg5MiwgMjIyMCwgNDI0NjUsIDQxMzMwLCAxOTQ5ODcsIDU3OTUsIDY1NTEyLCAxMTkwMDYsIDY1NzAyLCAKKyAgICAwLCAxMjA4MDEsIDY1MjUxLCAwLCA2NTcxMCwgMCwgMCwgNjc2NzIsIDAsIDUzNzAsIDAsIDI5MzEsIDE2MzgsIDEwOTY2LCAKKyAgICAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDY5ODc5LCAxMjg4MzAsIDgxNzIsIDQyMDE3LCAwLCAxMDg0NCwgMCwgCisgICAgMTI4MTk1LCA5MjQyNCwgNjM3NCwgMCwgMCwgMjg2LCA3ODAyMywgMTA2MiwgMCwgMTE5OTk5LCAwLCA3Mzk1LCAwLCAxMDcwLCAKKyAgICA2NDkwMCwgNzE1MywgNjA5NSwgNDE4NjUsIDAsIDMwMTUsIDEyODAyMywgMTI2NDY1LCA1MjExLCA5ODMwODMsIDY0MDAsIDAsIAorICAgIDE5NDk4MywgNzAwNTQsIDgxODksIDExMjc2LCAwLCAwLCAzNzIsIDEyODgyOSwgMCwgMTE4ODc0LCA0MjEwMiwgNDE1ODUsIAorICAgIDEyODIwMiwgMCwgNDIxMDEsIDI3NiwgNzg0MDIsIDAsIDMzLCA3NDIyNiwgMTI3MzAzLCA5MDA3LCAxMTg3OTYsIDQxNTg4LCAKKyAgICA2NjAzMywgNDI3LCAxMDc2MywgMTE4ODE5LCAwLCAxMjc4ODQsIDAsIDEwMzEsIDYyNTcsIDAsIDQyMTA0LCAwLCA5ODM5NzEsIAorICAgIDIzMjgsIDkyNDA5LCAxMDcxLCA0Mjg5OSwgMCwgNzQ4NDgsIDAsIDk4MzU4MCwgMCwgMTA0NywgMCwgMCwgNjQ3OTAsIDAsIAorICAgIDY5NzIzLCAxMDY1MSwgMCwgMCwgMCwgMCwgOTIyMDYsIDExOTE4MSwgNTcxMSwgNDE2MzMsIDEyMDk4LCA2NTU3MSwgOTE2NiwgCisgICAgMCwgNTcxMCwgMCwgNjc5MCwgNjUxNjgsIDEzMjE2LCAwLCA2OTcxNiwgNjk3MjYsIDAsIDY0NjExLCA0MTYyMywgMTk1MDAxLCAKKyAgICA1NzE1LCA2OTY1NCwgMCwgMCwgNTcxMiwgMjc2MSwgNDE2MjAsIDY4MTI0LCAzMDc0LCA1NzIyLCAwLCA4NjQzLCA3Mzc2OCwgCisgICAgMCwgMTE4OTA2LCAyNzU3LCAxMTA2NywgOTcxOCwgNzQ0OTgsIDg5MTAsIDEwNjg5LCA2NDc5LCAwLCAwLCAwLCA3ODYwNywgCisgICAgOTE5NiwgNjk2NzAsIDAsIDAsIDAsIDAsIDExODkxMSwgMCwgMCwgMCwgMCwgMCwgMTIwMDEwLCAwLCA4NzAxLCA2ODEzMCwgCisgICAgMTE5NjE2LCAxMjA1MjIsIDAsIDQyNDc3LCAxOTQ5OTQsIDEyMTIzLCA0NDk1LCA0MzU2OSwgMCwgMCwgMCwgNjQ5NDYsIAorICAgIDEwOTkyLCAwLCAxMjAwMDksIDAsIDAsIDkzMTgsIDkzOTg2LCAxMzI0OSwgNjU2NzksIDczODA4LCAwLCA2NTQ1NywgCisgICAgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIDE5NDk5NywgMTIwMDA1LCAwLCA5ODM5NTcsIAorICAgIDUwODQsIDAsIDAsIDExODg2MSwgMCwgNzMzLCA5MTc4NzYsIDc4MDE0LCA3ODQzNiwgNzg0MzUsIDQxNjc3LCAwLCA5MjE4LCAKKyAgICAxNzMxLCAwLCA5ODM3MzcsIDAsIDY3OTkwLCAwLCAwLCAwLCAxMjAwMDEsIDEyNzAxOCwgOTI0OTIsIDUxNTUsIDEyMDAwMCwgCisgICAgNTM1OCwgOTgzNzM1LCAwLCA5MTc3NjcsIDY0NDI0LCA5ODMyMjUsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMCwgNzgzMTUsIAorICAgIDY4NDMwLCA2Nzk4MCwgNDMyNTMsIDY1OTQzLCAwLCAzMzcxLCAxMDk4OCwgMCwgODc3MSwgMTQ3OSwgMCwgMCwgMTEwOSwgCisgICAgMTE1ODAsIDAsIDY0NjAxLCAxMjIwNSwgMCwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgNjc5NzgsIDc0ODQyLCA5ODMyNzYsIAorICAgIDk4MzcxMiwgMTIxNDksIDEzMDg4LCA1NTEsIDAsIDEwMTU2LCAxMjExOSwgOTI1NzIsIDAsIDI1NDQsIDY1MDc0LCAKKyAgICAxMTkyMTEsIDAsIDAsIDc4MDExLCAzNTEsIDExOTE0OSwgMCwgMCwgNTUyMjksIDAsIDc0MjY4LCAwLCAwLCAwLCA0MjM3NywgCisgICAgMCwgMCwgMCwgOTgzOTE1LCAwLCA5MDEzLCA0MDU0LCAwLCA5ODM1NzAsIDAsIDAsIDczOTYwLCA1NTg1LCA2NTg4MSwgCisgICAgMjU0OSwgNzQ0NjksIDAsIDAsIDU1ODQsIDgzNTgsIDAsIDY0MjE1LCA5MjIxOSwgMTA5MTksIDAsIDc5ODAsIDEyNjYwMSwgCisgICAgOTgzNzc1LCAyMjE4LCA0MTgwMCwgNTU4OSwgMCwgMjY2NCwgNDE2MTMsIDU1ODYsIDExODg5MCwgMCwgMTEzNTYsIDAsIDAsIAorICAgIDQzNDUyLCA3ODYwOSwgMCwgNDI1NzMsIDY3ODU2LCAwLCA3ODEyOSwgMCwgMCwgNzQzOTIsIDgxMzUsIDY0NTAsIDEwMDU1LCAKKyAgICA3Nzk5NiwgMCwgMCwgMTE5MjI1LCA1NjU3LCAwLCA5NjI2LCAwLCA3Nzk5NCwgMTAxNzksIDU2NTQsIDEyOTM5LCA5MjU3MywgCisgICAgMTIwNzk5LCAwLCAwLCA1NjUyLCAxMDk0NSwgMCwgNjY0ODYsIDAsIDM2NjEsIDc4NjMsIDAsIDAsIDAsIDc0NTA5LCAKKyAgICA5ODM4NDMsIDU2NTksIDAsIDc4NjkyLCA2NjcyOSwgNTY1NSwgMCwgNDIxNjgsIDAsIDEwNTUsIDkxNzYyOCwgMTI3NzkyLCAKKyAgICA2NjMxMCwgNzQwMzAsIDAsIDEyMTQ2LCA3Mzk1NSwgNzM5NTYsIDExNjE4LCAwLCAxMjY5OTAsIDAsIDEwMjcyLCAxMDMwNCwgCisgICAgMTAzNjgsIDQyNTE4LCA1OTQsIDEwMjQ0LCAxMDI0OCwgNzQwNywgOTgzODc4LCA2NDg3MCwgMCwgMzQ2NywgOTgzODgyLCAwLCAKKyAgICAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAwLCA3MDAzNiwgCisgICAgNjk2OTYsIDY5NzY5LCA2NDY1NiwgOTgzNzE3LCAwLCA5NDAyMCwgNzAwNTYsIDU2NjYsIDY1MjI3LCA1MzE4LCA2Mzk5NCwgCisgICAgMCwgOTA5MSwgMTA3OTgsIDAsIDEyODE2NiwgMTAxODYsIDAsIDc3MzIsIDk4MzcxNSwgNjQ1NTYsIDAsIDAsIDU2NjgsIAorICAgIDc0NDQ1LCAwLCAxMjg2NjMsIDU2NzAsIDEyNjYxMCwgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgNzgyNiwgNTY2NywgMTk5NTIsIAorICAgIDEyMDgwNywgMCwgMTI3NDksIDc0NTUxLCAwLCAwLCA2NjQ5NiwgNDM2MSwgMTE5MjYwLCAxMzA2LCA5Mjg2LCAxNDk3LCAKKyAgICAxMjgyODYsIDk0MDA0LCAwLCAwLCAzNTcxLCAxMzI0NywgMCwgNzk3MywgNjYzNTMsIDY4NDM1LCA3ODI3OCwgNjc4OTYsIAorICAgIDQzMTkyLCAwLCA3ODI2NSwgNTUzLCAxMjA2NTMsIDAsIDEyODU1NCwgNTgyOSwgMCwgNDU4NywgNzgyODUsIDY1OTEyLCAwLCAKKyAgICAxMjc0NiwgMCwgMCwgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDk0MTAxLCA5NDEwMiwgOTQwOTksIDY0OTA1LCA5NDEwNSwgCisgICAgOTUxMiwgOTQxMDMsIDEyNzQyLCA2NDQzLCA5ODM3OTcsIDAsIDkxMzUsIDAsIDQxNTY0LCAwLCA1NTIxOSwgMTI4ODMyLCAKKyAgICA5ODM4NDIsIDAsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDAsIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAwLCAxMjcyNzAsIAorICAgIDAsIDExODg4MCwgMjQyNSwgNjUxODIsIDEyODc2OSwgNDM2MzYsIDUyMjEsIDc4NDEwLCAzMjgsIDAsIDk4MzgwMCwgCisgICAgNjk4MTUsIDU2MzYsIDAsIDUzMjksIDAsIDU2MzgsIDExOTkxOCwgNzk0MCwgNjQ5MzgsIDQzMjIzLCA0Mzc2MCwgNTYzNSwgCisgICAgMzM3MywgMjk4NiwgNzgyOTIsIDc0MjIzLCAzNDM3LCA3ODI5MSwgNjIwMywgNDI0NywgMCwgMTE5MjAsIDgyNzQsIDAsIDAsIAorICAgIDE2NTcsIDQxNTYxLCA3ODI5OSwgNzgyOTUsIDU2MzksIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCA5ODM2NzYsIDc4MzAwLCAKKyAgICA0MjIyNywgMCwgMCwgNDE2MzcsIDY3ODcyLCAwLCA3ODMxMCwgNDE2MjUsIDQzMzYyLCA3ODMwOSwgMTIwNzEzLCAxMTcwNSwgCisgICAgNTY0MiwgMCwgNTQ4NiwgMCwgNDM1NiwgMTE3MTAsIDAsIDEyMDUxLCA2OTkzOCwgMCwgNTY0MSwgODI1OSwgMCwgMTA1OCwgCisgICAgMCwgNjc2MzAsIDAsIDAsIDExNDQsIDc4NzUwLCAwLCA0MjIyOCwgMCwgNzM4OTAsIDExODk3MiwgMCwgMjgwMCwgMCwgCisgICAgNTY0NSwgNjQ5NjQsIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMCwgNTYwOCwgNjU4OTAsIDQzODA4LCAwLCA2NzYyMSwgCisgICAgMTE5OTM0LCA5MDAwLCAwLCAwLCA5MjY3MywgMTg2NSwgMCwgNTYxMywgNjk5NTAsIDAsIDAsIDU2MTAsIDAsIDAsIDY1ODI2LCAKKyAgICAyMDY5LCAwLCAxMDc4NywgNDM5OTksIDI5OTcsIDAsIDU2MDksIDc4MzE2LCA2NTMxOSwgNzgzMTMsIDEyMzE2LCA2NTM3NiwgCisgICAgMjQxMiwgMCwgODE4NiwgOTgwNywgNzQyNjksIDkyNTQ3LCAxMzEzMCwgNjU4NzQsIDAsIDU4MDcsIDAsIDEwMDMwLCA1MzA2LCAKKyAgICAxMjM2NCwgMTI4MDY0LCAwLCAxMTcwNCwgMCwgOTI1ODMsIDEwMjExLCAwLCAwLCAwLCAwLCAxMTcwNiwgOTcxMCwgMCwgMCwgCisgICAgMCwgNDEzLCA2NTYyMywgNzExOCwgMCwgOTEzMywgNzQyNjIsIDAsIDEwNDIsIDAsIDY0Nzc5LCAxMjE3MSwgMTE5MjQwLCAKKyAgICA2MTg1LCA2NDc3NiwgNDk4NCwgMCwgNzA4LCAxMTM5MSwgMCwgMTIyNDEsIDkyNzIwLCA5ODM4OTAsIDEzMDgsIDAsIDI1MzQsIAorICAgIDgxMCwgMCwgMCwgMCwgMCwgMCwgMTkxNywgMzAwMCwgMCwgMCwgMTIwNzM5LCAyMzY0LCA5MjQ0MywgNzQ0NzAsIDY2NjE4LCAKKyAgICA2NTY4MCwgMTIwNzc5LCAxMDAyNywgMCwgMTI4MTU0LCAxMjMzNywgMTIwNzIyLCAxMjczNjgsIDk4MzE2NywgMjk4MCwgCisgICAgNzU1LCA2OTc3NCwgOTMxLCAxMzEyNCwgNjgxODIsIDYzNjMsIDI3NDgsIDAsIDAsIDY1MDQxLCA5MjI3NiwgNDQwMTEsIAorICAgIDg3MzAsIDk4MzA2NywgMTI3ODU0LCA3ODMxMiwgNzI3NCwgMTE5MjUwLCAwLCA3Mjc1LCA3ODMwNCwgOTM1LCAwLCA2NTg0MCwgCisgICAgMzc3LCA0MjMyNSwgMTE2NDksIDEyNzM2MywgNjUyNTMsIDY0MzAxLCAxMjg4MzUsIDc4MzA4LCA0MjM0MSwgNjUyODQsIAorICAgIDI0MTcsIDAsIDEyODg0LCAxOTkxMiwgNzkwNywgMTA3NjgsIDAsIDE5NDk5OCwgMCwgMTA2NzMsIDExOTIxNywgNzI0OCwgMCwgCisgICAgMTI4MzQ2LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgMTY0OSwgMCwgOTY0LCAwLCAxMjc4NzYsIDc4MjI2LCAxMjg3NzUsIAorICAgIDEyNzUxMiwgMCwgMCwgMCwgMCwgNDM2ODksIDEyNzkxMSwgMTMxNDIsIDc4ODEyLCA0MjQxNSwgNjY1NzUsIDQ1NDIsIAorICAgIDY5OTA5LCA0MzU0NywgMCwgMCwgNzY3NywgMjk5MSwgNDk0NiwgNDI0NTQsIDExNTY1LCA3OTQ5LCAwLCA5ODM5MDksIAorICAgIDExMzQxLCA0MjQ5NCwgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA5MjcyNCwgNjQ3OCwgOTg5OCwgCisgICAgNDM2NzMsIDY1MjM3LCA2MjQxLCA3MTA2LCA0ODc3LCA5ODM3ODYsIDYyMzgsIDAsIDEwNTQ4LCAxMjcwNDksIDQ0MDksIDAsIAorICAgIDAsIDY0Nzk4LCAwLCA1MzQ2LCAwLCA5NDA0NywgNjIzNywgNDg3NCwgMCwgOTE3NiwgMCwgMTI2NTUzLCA2NTIzMSwgCiAgICAgNjU4ODQsIDEyNjc4LCA3ODc0OCwgMTE4OTEyLCAxMTM3OCwgNDQwMTgsIDQyNzg1LCAyNDA4LCAzMjUxLCAwLCAwLCA1Njg1LCAKICAgICAwLCAyNDYxLCAxMTA1MiwgNzA5MSwgNTM0MiwgODMxNywgMCwgNjgxNjMsIDUzNDAsIDAsIDEyNzgyMCwgNDM2MzUsIAotICAgIDczOTI4LCAxMjc1MjksIDAsIDAsIDAsIDEyODUxMCwgNjU0ODIsIDAsIDkxNDIsIDAsIDAsIDAsIDEwOTM4LCAwLCAKKyAgICA3MzkyOCwgMTI3NTI5LCAwLCAwLCAwLCAxMjg1MTAsIDY1NDgyLCAwLCA5MTQyLCAwLCAxMjY0NzAsIDAsIDEwOTM4LCAwLCAKICAgICAxMTg3OTAsIDExODIsIDI1NDIsIDQ4MjYsIDAsIDAsIDEyODE3NiwgNTI5LCA4NTgwLCAwLCAwLCAxMDU4NiwgMTA3OTAsIAotICAgIDEwODM5LCA2NjAyMywgNDE1OTMsIDQxMjA3LCAwLCAwLCA0MTU5NCwgMjI1LCA0MjgyOCwgMCwgMCwgMCwgMTEzNzYsIAorICAgIDEwODM5LCA2NjAyMywgNDE1OTMsIDQxMjA3LCAwLCAwLCA0MTU5NCwgMjI1LCA0MjgyOCwgMCwgMCwgOTgzOTI5LCAxMTM3NiwgCiAgICAgNzQzNzksIDEwNzIxLCA2NzY2NCwgMzQzOCwgNDIwOTcsIDEyNzI2NywgMTEwODQsIDMxOTQsIDQxODcwLCAyNjYsIDc4MzA1LCAKLSAgICAwLCA0MTg3MywgMTIwNTc1LCAxMTMyNCwgMTIwNTMxLCAwLCA4NDIwLCA2NDkxOCwgMTI4ODQ0LCA0MTg3MSwgNDEzMzgsIAotICAgIDM3MzQsIDc3MzQsIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDAsIDQwOTY1LCAxMjc5MzcsIDAsIDUxNjEsIDEwNTcyLCAKLSAgICAwLCAwLCAwLCA2NDM0OSwgNzI4NywgNDIxNjIsIDEyNzU1MiwgMCwgMCwgMTE5NDgsIDY5MjIwLCAxMjM1OSwgNDM0MjksIAotICAgIDQxMzY5LCAxNjk3LCAxMjE5MSwgMCwgNjg2MzMsIDcyODYsIDAsIDY4NjM1LCAxMDAzMSwgMCwgOTg3MCwgNjg2NDUsIAotICAgIDg2MjAsIDY1ODI0LCAwLCAxMTkzOCwgMCwgNzI4NSwgMCwgMTE5NTc3LCA0MjY3OCwgMCwgNDM2NzcsIDQxNTgzLCAwLCAKLSAgICA2NTc5OSwgOTI2MjMsIDAsIDAsIDAsIDc4MTY5LCA2NjE5OSwgMCwgMzYwOSwgNjg2MjQsIDAsIDgzMiwgMTIwNjkzLCAKLSAgICAxMjA3NzAsIDc4NDczLCA2NjAwNywgNzg0NzEsIDY1NzAzLCAwLCAwLCA0MjczMiwgNTE4MCwgOTI2OTksIDQxMzk1LCAKLSAgICA0MTUzMCwgMTE2OTEsIDY0NzczLCA5MjIxNCwgNzQwMDIsIDAsIDAsIDEyODY0NSwgNjM0OCwgMjQzLCAxMzIwMCwgMCwgCi0gICAgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIDQzNjg3LCAwLCAwLCA0Mjg1LCA2NjE5NSwgCi0gICAgMCwgNDIzMCwgMCwgMTMzMDcsIDQzMjU2LCA5MjM1MywgNzU2MywgNDIzNzYsIDAsIDY4NDQyLCAxMjA1MTIsIDAsIDAsIAotICAgIDIxNCwgMCwgMCwgNzg0NjYsIDY1ODkzLCAxMjIwOCwgOTk3MywgMCwgNjYzMTEsIDY1NTg5LCAxMjgyNzcsIDI2MDMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDYwMjIsIDAsIDI4ODQsIDAsIDExNjIwLCAwLCA0MywgMCwgNjY0NTMsIDEwMTYsIDQxMTA3LCAwLCAKLSAgICA0MTEyMSwgMzg4NSwgOTIsIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDAsIDIwNzQsIDAsIDc4MjgzLCAwLCAxMjQ1MywgCi0gICAgMTI4MTI4LCAwLCA3NDI0MSwgMCwgNjc5MSwgMTI0NTcsIDc4MjY4LCAwLCAwLCAwLCA3ODI3OSwgMCwgMCwgOTIzNTgsIAotICAgIDY2NjM3LCA3OTk1LCA4NzU5LCA0MzQyMSwgNzgyNzcsIDEyNDQ5LCAxMjg1NTIsIDAsIDAsIDg3NTIsIDMxOTcsIDQ3MjAsIAotICAgIDEwMTY1LCAwLCAxMTkyNDksIDAsIDExNTk1LCA2NDg5MywgMCwgNDM0MzUsIDAsIDAsIDQ5OTMsIDAsIDYxNjgsIDEwOTM0LCAKLSAgICAxOTQ2LCA3NDEsIDAsIDU0OTQsIDQ2MzksIDAsIDE5OTAsIDY2NTg5LCA0NDk4LCA3ODY2NCwgMTE5MTgzLCAwLCAwLCAKLSAgICA2OTczNCwgMjk2MCwgNzM3NzksIDAsIDg5NjksIDEyODExNywgNDM0MjQsIDEyNzA1OSwgMCwgMjk1MCwgMTE5NTc5LCAKLSAgICA2MjEwLCA2NTc1MywgMzcwLCAwLCAwLCAwLCA0OTUzLCAwLCAwLCAwLCAwLCA2OTIzMCwgMCwgMCwgNjU2ODgsIDAsIDUwNjMsIAotICAgIDM1MTcsIDI5NjQsIDQzNjYzLCA5MTc3NjIsIDYzNDQsIDc0NzkxLCAxMDU2NiwgMTAxNDQsIDY2MzMzLCA4MjUyLCA3MjksIAotICAgIDY2MDE2LCA3ODI1MywgMCwgMCwgNjQ5MjMsIDEyODA0MCwgNDM2NjksIDkwMzIsIDc4MjYzLCA3ODI2NCwgMCwgNDEyMTUsIAotICAgIDAsIDY1ODgzLCAwLCA5MTc3NzQsIDEyMDYwMiwgMzc2MSwgMCwgMCwgMCwgMCwgMTI5MTIsIDExOTAxMiwgMzg1MCwgCi0gICAgMTI4MTkxLCAwLCAwLCAwLCAwLCA5MDgsIDAsIDg2MTEsIDAsIDAsIDEyNzU1NSwgNDM2OTEsIDQxMTk3LCAwLCA4OTc4LCAKLSAgICAxMjA1NDAsIDExOTEzNSwgNDE1ODYsIDEwNTI3LCAwLCA5MTc4NDgsIDM4NDgsIDc4NzM5LCAxOTQ5MzcsIDEyNzUzNiwgCi0gICAgNjUyNDEsIDUzMzYsIDAsIDEyODc4NiwgNjYzLCAwLCAxMDc4MCwgMCwgMCwgNzg3NjcsIDAsIDEyNzE2MywgNjgxOTMsIAotICAgIDM0NywgMCwgMCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzg3NzQsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDc4NzY5LCAxMjE0MywgCisgICAgMTIwMTgzLCA0MTg3MywgMTIwNTc1LCAxMTMyNCwgMTIwNTMxLCAwLCA4NDIwLCA2NDkxOCwgMTI4ODQ0LCA0MTg3MSwgCisgICAgNDEzMzgsIDM3MzQsIDc3MzQsIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDkyNTE0LCA0MDk2NSwgMTI3OTM3LCAwLCAKKyAgICA1MTYxLCAxMDU3MiwgMCwgMCwgMCwgNjQzNDksIDcyODcsIDQyMTYyLCAxMjc1NTIsIDAsIDEyNjYwNSwgMTE5NDgsIAorICAgIDY5MjIwLCAxMjM1OSwgNDM0MjksIDQxMzY5LCAxNjk3LCAxMjE5MSwgMCwgNjg2MzMsIDcyODYsIDAsIDY4NjM1LCAxMDAzMSwgCisgICAgMCwgOTg3MCwgNjg2NDUsIDg2MjAsIDY1ODI0LCAwLCAxMTkzOCwgMCwgNzI4NSwgMCwgMTE5NTc3LCA0MjY3OCwgMCwgCisgICAgNDM2NzcsIDQxNTgzLCAwLCA2NTc5OSwgOTI2MjMsIDAsIDAsIDk4MzkyNywgNzgxNjksIDY2MTk5LCAwLCAzNjA5LCAKKyAgICA2ODYyNCwgMCwgODMyLCAxMjA2OTMsIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCA3ODQ3MSwgNjU3MDMsIDAsIDAsIDQyNzMyLCAKKyAgICA1MTgwLCA5MjY5OSwgNDEzOTUsIDQxNTMwLCAxMTY5MSwgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMCwgMCwgMTI4NjQ1LCAKKyAgICA2MzQ4LCAyNDMsIDEzMjAwLCA5ODM4MDQsIDYwMjQsIDkyMzA5LCA5OTc5LCAxMDAzNywgNDE1MjksIDEwNjQ4LCA4NTM4LCAKKyAgICA0MzY4NywgMCwgMCwgNDI4NSwgNjYxOTUsIDAsIDQyMzAsIDAsIDczNjcsIDQzMjU2LCA5MjM1MywgNzU2MywgNDIzNzYsIDAsIAorICAgIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMCwgMCwgNzg0NjYsIDY1ODkzLCAxMjIwOCwgOTk3MywgMCwgNjYzMTEsIAorICAgIDY1NTg5LCAxMjgyNzcsIDI2MDMsIDAsIDAsIDAsIDcwMDQ3LCAwLCA2MDIyLCAwLCAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIAorICAgIDAsIDY2NDUzLCAxMDE2LCA0MTEwNywgMCwgNDExMjEsIDM4ODUsIDkyLCA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCAwLCAKKyAgICAyMDc0LCAwLCA3ODI4MywgMCwgMTI0NTMsIDEyODEyOCwgOTgzODE3LCA3NDI0MSwgMTI2NTY4LCA2NzkxLCAxMjQ1NywgCisgICAgNzgyNjgsIDAsIDAsIDAsIDc4Mjc5LCAwLCAwLCA5MjM1OCwgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCA3ODI3NywgCisgICAgMTI0NDksIDEyODU1MiwgMCwgMCwgODc1MiwgMzE5NywgNDcyMCwgMTAxNjUsIDAsIDExOTI0OSwgMCwgMTE1OTUsIDY0ODkzLCAKKyAgICAwLCA0MzQzNSwgMCwgMCwgNDk5MywgMCwgNjE2OCwgMTA5MzQsIDE5NDYsIDc0MSwgMCwgNTQ5NCwgNDYzOSwgOTgzMTQ3LCAKKyAgICAxOTkwLCA2NjU4OSwgNDQ5OCwgNzg2NjQsIDExOTE4MywgMCwgMCwgNjk3MzQsIDI5NjAsIDczNzc5LCAwLCA4OTY5LCAKKyAgICAxMjgxMTcsIDQzNDI0LCAxMjcwNTksIDAsIDI5NTAsIDExOTU3OSwgNjIxMCwgNjU3NTMsIDM3MCwgMCwgMCwgMCwgNDk1MywgCisgICAgOTgzNjczLCAwLCAwLCAwLCA2OTIzMCwgMCwgMCwgNjU2ODgsIDk4MzI0MCwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIAorICAgIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCAKKyAgICA3MTMxNywgNjQ5MjMsIDEyODA0MCwgNDM2NjksIDkwMzIsIDc4MjYzLCA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCAwLCAKKyAgICA5MTc3NzQsIDEyMDYwMiwgMzc2MSwgMCwgMCwgNzAwNjgsIDAsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIDEyODE5MSwgMCwgMCwgCisgICAgMCwgMCwgOTA4LCAwLCA4NjExLCAwLCAwLCAxMjc1NTUsIDQzNjkxLCA0MTE5NywgMCwgODk3OCwgMTIwNTQwLCAxMTkxMzUsIAorICAgIDQxNTg2LCAxMDUyNywgMCwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgMTk0OTM3LCAxMjc1MzYsIDY1MjQxLCA1MzM2LCAKKyAgICA5ODMyNTEsIDEyODc4NiwgNjYzLCAwLCAxMDc4MCwgMCwgMCwgNzg3NjcsIDk4MzI0OSwgMTI3MTYzLCA2ODE5MywgMzQ3LCAKKyAgICAwLCAwLCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3ODc3NCwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNzg3NjksIDEyMTQzLCAKICAgICA2OTY1NywgNzg1MTIsIDAsIDQzNDQxLCA0MTgwNCwgNzg1MjMsIDAsIDc4NTI1LCAwLCAxMjg4NTksIDQxNTg0LCAxMDY4MSwgCi0gICAgMCwgMCwgNzM5MzgsIDAsIDEyODAyMiwgNDgwMCwgNjY2NjEsIDAsIDY2MzA2LCA2NDcxNSwgNzg1MzQsIDk1MTgsIDY2MDksIAotICAgIDEwNDM0LCAwLCAxMTMxOSwgMTA5NywgMCwgOTE3ODUwLCA0MTczMCwgMCwgMCwgNzM4NDcsIDc4NzYxLCA2NTE3MiwgCi0gICAgNDE3MjgsIDQxNzIxLCAwLCAwLCAwLCA0MTIwMywgMCwgMTMxMTAsIDQxNzI2LCAwLCAwLCAxMDAwLCA2OTY1MSwgMCwgCi0gICAgNDExNDAsIDEyMDksIDczOTc4LCAwLCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIDQxMTM4LCAwLCA2ODIxMywgMCwgCi0gICAgMTIxNjcsIDExMTUsIDQxNjA1LCA5Nzk0LCAxMjcwNjIsIDY3NjcxLCA1NTI0OCwgMTIyMzcsIDc4Nzg3LCA2NjMxNCwgCi0gICAgNjU4NywgOTI5MCwgNzg3ODIsIDc4NzgzLCA5MjMxLCA3ODc4MSwgMjk1OSwgNzkyNiwgMCwgMCwgMCwgNjQzOTgsIDAsIAotICAgIDExOTk3MCwgMTIzMTEsIDAsIDc4Nzk2LCA3ODc5OCwgNzg3OTQsIDc4Nzk1LCA2ODQzNCwgNzg3OTMsIDY2NjcwLCAwLCAwLCAKLSAgICAxMjI5MCwgMTIwMTY5LCAwLCAxMTk4NzMsIDQyMTQyLCA5OTY4LCA4MjA1LCAwLCA1MTMxLCAwLCA5NjI3LCA3ODUzNiwgCi0gICAgNzg1NDIsIDc4NTM1LCAwLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAKLSAgICAxMTMwOCwgMTE5OTk1LCAwLCAxMTk5OTcsIDExOTk5OCwgNjUzMDUsIDY1MTAwLCA0MDMxLCA0Mjc5NCwgMTIwMDAzLCAKLSAgICA3MDc1LCA4MTU0LCAxMTk5ODUsIDEyMDAwNywgNDE4MTcsIDczOTM0LCA0MjI3NSwgMTIwMDExLCAxMjAwMTIsIDc4NTI2LCAKLSAgICAxMjAwMTQsIDEyMDAxNSwgNjA0MSwgMCwgNDE4OTksIDAsIDgwMDIsIDAsIDQzNjQsIDAsIDAsIDY0MzMyLCAwLCA3ODEzLCAKLSAgICA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCA3ODQ1NSwgNzI3OSwgMTIwNDEsIDE0MTgsIDEwODg1LCAKLSAgICAxMjY3MywgMCwgMCwgOTY2MCwgMCwgMTMwMTIsIDQ1NzEsIDAsIDAsIDAsIDEyMDc4LCAyOTcwLCAwLCAxMDkzMywgMCwgCi0gICAgNzc4NzAsIDAsIDAsIDAsIDQxNTk5LCAwLCAxMjg4MzEsIDAsIDEyOTUwLCA5MjE2MCwgMzQ4NiwgMCwgNzgzMTEsIDQyMzksIAotICAgIDAsIDEyNzc5OSwgNjY1MTEsIDAsIDI2MzcsIDY0NjI5LCA4NDYwLCAxMjcwNTMsIDg0NzYsIDAsIDAsIDAsIDAsIDY1NjczLCAKLSAgICAxMDE5LCA3ODQ5NSwgNDE0OCwgMCwgMTIyODksIDAsIDQzMTYsIDAsIDEzMTE5LCAwLCA1NDEyLCA2NjI0MywgOTkzNSwgMCwgCi0gICAgNzM4NjQsIDAsIDQxNzM0LCA4MjA2LCA3NDA4MSwgOTE2MywgMzI4NiwgOTA3MiwgNTg2NywgMTMzMDIsIDc2MjIsIDcxMjAsIAotICAgIDQxNzM2LCA5MjU0NiwgNDE3MzEsIDAsIDc0MDAsIDU0MTYsIDY4NjYzLCAxMTg5MjQsIDEwODE3LCAwLCA0MTUzOSwgCi0gICAgMTI3Mjg0LCAwLCA3Mzk2MywgNDE4NTUsIDQxODY3LCA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCAKLSAgICA3MTE1LCA2NjAzMCwgNzM5MzIsIDU0OTgsIDczOTQyLCA0MTUzNiwgMCwgNjgyMDQsIDkyNTg3LCAzNDU5LCA4OTk3LCAwLCAKLSAgICAwLCAwLCAwLCA5MjUxMiwgMCwgNjYzNzcsIDY5NzgxLCAwLCAwLCA3ODUxMSwgMzE2MSwgMjk1LCAxMjAyMDcsIDAsIAotICAgIDkyMjIzLCAxMjc4NTYsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIDYzOTAyLCA0MzY0MSwgMCwgMzk3MSwgMCwgCi0gICAgNzM5NzIsIDI5NTIsIDc4NzY1LCAxMTAzOCwgMTA5MDEsIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDAsIDY2NywgMTIzMzIsIAotICAgIDYzODg3LCA2MDg2LCA0MTcyMiwgMCwgNTE3MiwgMCwgMCwgNDE1OSwgMCwgMCwgOTgxNSwgNjM4ODQsIDE5OTM0LCA2Mzg4MiwgCi0gICAgNDExOTgsIDg1NTUsIDYzODc4LCA2Mzg3NywgNDI0NjAsIDYwNTAsIDQyNzA4LCA2Mzg4MSwgNjM4NzIsIDAsIDQyNDIxLCAwLCAKLSAgICA0MTcyMywgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgNDE5MTMsIDYzODUyLCAwLCAwLCA0MjM0OCwgMCwgCisgICAgMCwgOTgzNjg2LCA3MzkzOCwgMCwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgMCwgNjYzMDYsIDY0NzE1LCA3ODUzNCwgOTUxOCwgCisgICAgNjYwOSwgMTA0MzQsIDAsIDExMzE5LCAxMDk3LCAwLCA5MTc4NTAsIDQxNzMwLCA5ODMyMTIsIDAsIDczODQ3LCA3ODc2MSwgCisgICAgNjUxNzIsIDQxNzI4LCA0MTcyMSwgMCwgMCwgMCwgNDEyMDMsIDkxNzYxMiwgMTMxMTAsIDQxNzI2LCA5ODM4NDYsIDAsIAorICAgIDEwMDAsIDY5NjUxLCAwLCA0MTE0MCwgMTIwOSwgNzM5NzgsIDAsIDczNzUwLCAxMDczLCA2MzIxLCA3Nzg3OCwgNDExMzgsIAorICAgIDAsIDY4MjEzLCAwLCAxMjE2NywgMTExNSwgNDE2MDUsIDk3OTQsIDEyNzA2MiwgNjc2NzEsIDU1MjQ4LCAxMjIzNywgCisgICAgNzg3ODcsIDY2MzE0LCA2NTg3LCA5MjkwLCA3ODc4MiwgNzg3ODMsIDkyMzEsIDc4NzgxLCAyOTU5LCA3OTI2LCAwLCAwLCAwLCAKKyAgICA2NDM5OCwgMCwgMTE5OTcwLCAxMjMxMSwgOTgzNzE4LCA3ODc5NiwgNzg3OTgsIDc4Nzk0LCA3ODc5NSwgNjg0MzQsIAorICAgIDc4NzkzLCA2NjY3MCwgMCwgMCwgMTIyOTAsIDEyMDE2OSwgMCwgMTE5ODczLCA0MjE0MiwgOTk2OCwgODIwNSwgMCwgNTEzMSwgCisgICAgMCwgOTYyNywgNzg1MzYsIDc4NTQyLCA3ODUzNSwgOTgzMjEwLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIAorICAgIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAxMTMwOCwgMTE5OTk1LCAwLCAxMTk5OTcsIDExOTk5OCwgNjUzMDUsIDY1MTAwLCAKKyAgICA0MDMxLCA0Mjc5NCwgMTIwMDAzLCA3MDc1LCA4MTU0LCAxMTk5ODUsIDEyMDAwNywgNDE4MTcsIDczOTM0LCA0MjI3NSwgCisgICAgMTIwMDExLCAxMjAwMTIsIDc4NTI2LCAxMjAwMTQsIDEyMDAxNSwgNjA0MSwgMCwgNDE4OTksIDAsIDgwMDIsIDAsIDQzNjQsIAorICAgIDAsIDAsIDY0MzMyLCAwLCA3ODEzLCA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCA3ODQ1NSwgNzI3OSwgCisgICAgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMCwgMCwgOTY2MCwgOTgzMjcyLCAxMzAxMiwgNDU3MSwgMCwgMCwgMTIwMTY0LCAKKyAgICAxMjA3OCwgMjk3MCwgMCwgMTA5MzMsIDAsIDc3ODcwLCAwLCAxMjcwMTUsIDAsIDQxNTk5LCAwLCAxMjg4MzEsIDAsIAorICAgIDEyOTUwLCA5MjE2MCwgMzQ4NiwgMCwgNzgzMTEsIDQyMzksIDAsIDEyNzc5OSwgNjY1MTEsIDAsIDI2MzcsIDY0NjI5LCAKKyAgICA4NDYwLCAxMjcwNTMsIDg0NzYsIDk4Mzk2NiwgMCwgMCwgMCwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgCisgICAgMCwgNDMxNiwgMCwgMTMxMTksIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCAwLCA3Mzg2NCwgOTgzMjAxLCA0MTczNCwgCisgICAgODIwNiwgNzQwODEsIDkxNjMsIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCA0MTczNiwgOTI1NDYsIAorICAgIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIDEyNzI4NCwgMCwgNzM5NjMsIAorICAgIDQxODU1LCA0MTg2NywgNjU1NjQsIDExMjc3LCA2NTg5MiwgMTE1MzYsIDEwNjIwLCA5MjI3MiwgNzExNSwgNjYwMzAsIAorICAgIDczOTMyLCA1NDk4LCA3Mzk0MiwgNDE1MzYsIDAsIDY4MjA0LCA5MjU4NywgMzQ1OSwgODk5NywgMCwgMCwgMCwgMCwgCisgICAgOTI1MTIsIDAsIDY2Mzc3LCA2OTc4MSwgMCwgOTgzNjkwLCA3ODUxMSwgMzE2MSwgMjk1LCAxMjAyMDcsIDAsIDkyMjIzLCAKKyAgICAxMjc4NTYsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIDYzOTAyLCA0MzY0MSwgMCwgMzk3MSwgMCwgNzAwNjMsIDI5NTIsIAorICAgIDc4NzY1LCAxMTAzOCwgMTA5MDEsIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDk0MDQzLCA2NjcsIDEyMzMyLCA2Mzg4NywgNjA4NiwgCisgICAgNDE3MjIsIDAsIDUxNzIsIDAsIDAsIDQxNTksIDAsIDAsIDk4MTUsIDYzODg0LCAxOTkzNCwgNjM4ODIsIDQxMTk4LCA4NTU1LCAKKyAgICA2Mzg3OCwgNjM4NzcsIDQyNDYwLCA2MDUwLCA0MjcwOCwgNjM4ODEsIDYzODcyLCAwLCA0MjQyMSwgMCwgNDE3MjMsIAorICAgIDYzODc1LCA2Mzg3NCwgMTE0NjAsIDc0MzIsIDE5MTMsIDQxOTEzLCA2Mzg1MiwgMTI2NjM2LCAwLCA0MjM0OCwgNzM4OTIsIAogICAgIDY3NTIsIDQ0NiwgNDE5MTEsIDEyNzkwNiwgNjM4NTEsIDYzODUwLCA0MTkxMCwgMCwgNjM4NDYsIDI5NzIsIDEyOTMyLCAKICAgICA3MjYyLCAwLCA2Mzg0OSwgNjM4NDgsIDYzODQ3LCAxMjgwNzAsIDY1NzAsIDgzMDIsIDcyNTksIDYzODQyLCA0MTc4LCAKICAgICAxMDc0NiwgNzI1MCwgMTMyMTQsIDEwMDQxLCA4MTA1LCA2Mzg5MiwgMCwgMTE4OTgzLCAxMTA1LCA0MTgwLCAwLCAxMjA5NCwgCiAgICAgOTQ5NywgMCwgNjM4OTEsIDYzODkwLCA2Mzg4OSwgNjM4ODgsIDU1MzgsIDk5ODcsIDAsIDExODkzMiwgMTY3OCwgMTMyNzQsIAogICAgIDU1MiwgMTIwNjU0LCA0NDAxMCwgMTA3ODUsIDAsIDExOTE3MCwgNDU1NywgNzQ0NTksIDkxNTksIDEwMTcxLCAxMzEyNSwgCiAgICAgNjM4NjAsIDU1NDAsIDYzODU4LCA2Mzg2NSwgMjgxLCAxMzI0MiwgNjM4NjIsIDc0MTU0LCAwLCA1NTM2LCA2NTU2OCwgCi0gICAgNjM4NTcsIDEzODgsIDc0MTY5LCAwLCAxMDc3LCAwLCA2NTA5OSwgMTE1MzEsIDU4MzQsIDAsIDAsIDAsIDAsIDQyNzczLCAwLCAKLSAgICAwLCAwLCAxMTkyMjAsIDAsIDM2NjMsIDAsIDExMTIsIDExOTEyMiwgODY4NiwgMCwgNTMzNCwgNjUwODEsIDQzMjQ5LCAKLSAgICA3NDc3OCwgMTI3OTY4LCAxMTA3NywgMCwgNjUwOSwgMCwgNTMyNywgMCwgMTk5MDcsIDYzODY5LCAzNDc4LCA3NTgzLCAKLSAgICA3Njc5LCAyOTAzLCAwLCAzMDAxLCAxMTU4LCA4NzQ1LCAwLCA3Mzc0OCwgNjM4NjYsIDAsIDE5MTUsIDQ4NDYsIDAsIAotICAgIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgNjkyMzgsIDY0NDM4LCAxMjA3MCwgODc2MCwgMTExNywgCi0gICAgMTE4OTg3LCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIDYzODM1LCA2MzgzNCwgMCwgNzgyNDAsIDEyMjI1LCAKLSAgICA2MzgzOCwgNjM4MzcsIDAsIDAsIDYzODMzLCA2MDQyLCA2NjM2MCwgODA4MywgMCwgMCwgNjM4MjEsIDYzODIwLCA2MzgxOSwgCi0gICAgNjM4MTgsIDAsIDUyMjcsIDkwNDcsIDYzODIyLCAxMjcxNjIsIDYwOTEsIDAsIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIAotICAgIDExOTU3OCwgNjM4MTIsIDYzODExLCA2MzgxMCwgNjM4MDksIDU1NDIsIDYzODE1LCA2MzgxNCwgNjM4MTMsIDYwNDcsIAotICAgIDE1OTcsIDEyMDE0MywgNzgwLCAyMDYsIDc3OTI1LCA0OTM2LCA2NTE0NywgODE2OCwgNjM5MzAsIDIwNzYsIDEwOTMsIAotICAgIDk4ODIsIDYzOTM0LCAyMDgyLCA2MzkzMiwgMTI4MTUwLCA2MzkyOSwgMzU0NiwgMTYwNSwgNzc5MzQsIDk4MDYsIDQzNDcyLCAKLSAgICA3NzkzMywgODQwMCwgMTEzNDMsIDIwODYsIDAsIDYzOTI2LCAyOTg0LCA1OTY4LCA5Mjg3LCAwLCA0NjE4LCA0MjIwOSwgCi0gICAgNDM0MzEsIDEzMTY5LCA1MjkwLCAyMDg5LCAxNjk1LCAxMDc0MywgMTA4OCwgNjM4MjUsIDcyNjgsIDEwODQsIDEwODUsIAotICAgIDYzODI5LCAxMDgzLCAxMDEzMSwgNzI4MywgMCwgNjM5NzAsIDEyODM1OCwgMTA5MiwgNDc1NCwgNzI3MywgNTI1MiwgCi0gICAgNDQwMTYsIDQzNjI3LCAxMjc5MjEsIDAsIDc0MDgsIDExODA5LCAwLCAwLCAwLCAyOTY1LCA3MjU4LCA4ODA4LCAwLCAxMDg5LCAKLSAgICA0MTg3LCA2MzkzNywgNDIxMTksIDQyMTIwLCAwLCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgMCwgNzQ0OTQsIDEyNDYzLCAKLSAgICAyOTk0LCAwLCAxMTg4MjcsIDAsIDk2NjQsIDc3OTM5LCA3Nzk0MCwgNjc4OTIsIDc3OTM4LCA3NDM0MywgMCwgMCwgNjYwLCAKLSAgICAxMDEyNywgNjY2LCA5MDIyLCA1NTMyLCA0MzY2NywgNTUzMywgNzc5NDEsIDc4NTA3LCA2MTE4LCAyMjIsIDk3OSwgMzg4NCwgCi0gICAgMCwgNzQxNTEsIDkyNjUyLCA2NTAyLCAwLCAxMjcxMTgsIDEyODY5NSwgNjM5NTEsIDEyNDY1LCAwLCAwLCAxMjg3ODIsIAotICAgIDYzOTQ2LCAxNzA3LCA2MzkyNCwgMTI0NjEsIDYzOTUwLCA2Mzg5NywgNjM5NDgsIDYzOTQ3LCA2Mzk0NSwgNjAzOCwgCi0gICAgNjM5NDMsIDYzOTQyLCA2NDY4NSwgNjM4OTUsIDY1ODM4LCAwLCA3Nzc2LCAwLCAwLCAxMjc3NzMsIDEyMDQ0NCwgNjk3MzAsIAotICAgIDgwMSwgNDMxNjUsIDE2OTAsIDYzOTE5LCA2MzkxOCwgNjM5MTcsIDEzMjc3LCA0MzY1OSwgMTI5NTEsIDEyMDYzOCwgOTkwNiwgCi0gICAgMjA1NCwgMjMzNCwgNzg1MTUsIDYzOTE2LCA1NDgzLCA2MzkxNCwgNjk3MzcsIDYzOTExLCA1NDg0LCA2MzkwOSwgNjM5MDgsIAotICAgIDI1MzksIDAsIDQzOTgwLCA1NDg1LCAwLCA0MjY5NywgOTA2MSwgNTUzNCwgMTA2NzIsIDQ1MDIsIDAsIDI1MywgMCwgCi0gICAgNjgyMDgsIDAsIDkyMDMsIDc0MjMxLCAwLCAxMTUzMCwgOTI1NDIsIDY4NjY4LCAwLCAxMjg4MTYsIDAsIDEwNDc0LCAKLSAgICA0MzQyNiwgMTMyNTcsIDQyMzU0LCAwLCAwLCAwLCAxOTUwNjUsIDAsIDg0MTMsIDAsIDAsIDU2OTMsIDcyNzIsIDAsIAotICAgIDEzMjA5LCA2NDQ3MCwgNjU4MzEsIDc4NDYwLCAxOTUwNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODEzMywgMTI3NzY3LCAKLSAgICA2NjYwOCwgMzExMSwgNDE4NjMsIDg4MDQsIDQyOTEzLCA5MjE4NywgNzI3MCwgMCwgNjY2MDYsIDY2MjgsIDEwNzYsIDc0MzMsIAotICAgIDE0MzYsIDczODQ0LCA1NTIyNiwgMTI4MzUzLCA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCA2MzkwNiwgMTU5OCwgCi0gICAgNjM5MDQsIDAsIDAsIDQxNzI5LCA0NDIzLCAxMzA3LCAwLCAxMDUxNSwgNDE1ODksIDEyODY5OCwgMCwgNjIxOCwgMCwgCi0gICAgMTQzMCwgMCwgMCwgMTIwNjA2LCA3ODc1NCwgNTQxMywgNzYxOSwgMzI1NSwgMzQ5MywgNzQwMzIsIDExNTQ5LCAxMDczNSwgCi0gICAgNDE3NDMsIDczOTM3LCA2ODAxLCAwLCA0NTE4LCAxMDk5MCwgNjUwNzMsIDUxNjcsIDQ0ODEsIDM3NzEsIDAsIDI3MTAsIDAsIAotICAgIDY5MjQzLCA0MTcyNCwgMCwgNDMwNzMsIDQxNjkwLCAxMjQ3OSwgMCwgMCwgMCwgMCwgMTE5NjU5LCAxNjI4LCAxMjcxNDksIAotICAgIDAsIDAsIDY1MjYyLCA2MzMzLCAxMDc4MywgNDIzMTUsIDAsIDYzODU1LCAxMjA2ODMsIDAsIDAsIDUzMzksIDc0MzIzLCAwLCAKLSAgICAxMzAwNCwgMCwgNDQ1NywgMCwgMCwgMCwgMCwgNTY4NCwgODY3OCwgMTA5MTQsIDAsIDU2ODksIDY1ODA3LCAwLCA2ODQ2NCwgCi0gICAgMTI2MzMsIDEyODcwLCA2OTcwNSwgNjUxODMsIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAwLCA3NDI1MSwgMCwgCi0gICAgMTIwNjQ3LCAwLCA1MCwgMTA1NTgsIDk4NzEsIDAsIDQzNjU1LCAwLCAwLCAwLCA2NjQ2OCwgMCwgMTMyNTksIDQ0NDgsIDAsIAotICAgIDAsIDAsIDAsIDY3ODUzLCAwLCAxMDY0MCwgMTE1MzksIDExNTEsIDAsIDkxNzYwNywgMTI3NTQ0LCAxMjcwNzksIDE5NTA1MCwgCi0gICAgMTI3ODUyLCAwLCAwLCAwLCAxMjUwMSwgNjQ2MDQsIDAsIDExNTI3LCAxMTg4NzAsIDg4MTIsIDAsIDExNTM4LCA4NjczLCAKLSAgICAxMjY1MCwgMTEwMjAsIDAsIDY2NDY3LCAyMTA1LCA4MDg3LCA3ODE2MywgNjk2MzIsIDk4OTQsIDAsIDAsIDAsIDQ2MzYsIAotICAgIDU1MjYyLCA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCAwLCAxMjA0OTUsIDAsIDEyODI4NCwgMTIyNzcsIDE5NDYyNywgCi0gICAgMTE5OTUsIDkyNTUzLCAwLCAxMjE1OCwgMCwgODc0MSwgMTAxOTcsIDAsIDkyNDI2LCAwLCA2NTMxLCAwLCAxMjc4NDYsIAotICAgIDQ3MywgNDM0MTUsIDAsIDAsIDE4NzMsIDEwODcsIDAsIDAsIDAsIDc4NTI3LCA2NjQzOSwgNDMyMTgsIDAsIDE5NDcxNiwgCi0gICAgNzIzNywgMTI1MDQsIDc0MjgyLCAwLCAwLCAwLCA5NDg5LCAwLCAwLCA0Mzg0LCA3NDIyMCwgMTk1MDU1LCAyMDU4LCAKLSAgICAxMjg4NjMsIDEzMjk1LCA0MzE5MSwgMTI4MDMwLCAwLCAxMTU0LCAzODU3LCAxMjA1LCAwLCAwLCAxMzEwMCwgMTI5NTgsIAotICAgIDEyMDcwNiwgNzQxNjgsIDAsIDAsIDQ0MjEsIDEwNTkyLCAwLCA0OTUsIDAsIDQxNzEyLCA3OTgzLCAwLCAxMjA3NzksIDAsIAotICAgIDYzNDcsIDAsIDc2NTQsIDQxNzEwLCA0MTk2LCAwLCA0MzcsIDQxNzA5LCA3Mzc3MiwgMCwgMCwgOTQ2NSwgMTMyOTAsIAotICAgIDExOTE4MCwgNDk5NywgNjQzMDYsIDAsIDAsIDQ5OTksIDE5NDY0MiwgMCwgMCwgNDcxMSwgMTIwNzY5LCAwLCAyNzM5LCAwLCAKLSAgICA4MDQ0LCA3NDgzNCwgMTk0NjQzLCA0MTc4OSwgMTI4MTQyLCAxMDgwOSwgMCwgMCwgMCwgMTc3OSwgNjYwMCwgNjYwMSwgCi0gICAgNDE1NDMsIDUzMjUsIDY0MiwgNjQxODcsIDEzMDU4LCAxMjA0NDksIDEyODc1LCAwLCA5MjE4NiwgMTMyMjksIDAsIDEwNTc1LCAKLSAgICA0MzM5OSwgMCwgMCwgNDE3OTEsIDExMDQsIDAsIDAsIDEwNjU1LCAwLCAwLCAwLCAwLCAxMDgyLCAxOTUwNDksIDg0MjgsIAotICAgIDY1NjksIDAsIDAsIDAsIDAsIDY3ODMsIDAsIDEyOTkzLCA4MDQ5LCA0MTU0OCwgNDQwMjEsIDY0NTgsIDAsIDEyODg4MiwgCi0gICAgNDc2MSwgNjM4MjgsIDQ3NjYsIDY0NjIzLCAxMjczLCA0MzQwNywgMCwgMTE4ODc2LCAxOTUwNDUsIDY5MTIsIDEzMTMsIAotICAgIDYzMjIsIDEwNDgzLCAwLCA0MTU0NSwgMCwgOTI0NDksIDAsIDAsIDAsIDAsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgMCwgCi0gICAgODUwMywgNTEyMiwgNDE1MjcsIDAsIDY2MzIwLCAwLCAwLCAwLCAwLCA0MTUzNywgNjk2ODMsIDgzMDMsIDgyODIsIDExODE3LCAKLSAgICA3Mzg1NywgMTAwMDMsIDczODU5LCA2NTkwNCwgMTk0NjYzLCAxNjg2LCAwLCA3ODQwNiwgMTE0NjcsIDM2NjQsIDY1OTIxLCAKLSAgICA2NDI5OSwgMTk0NjY0LCAwLCAwLCA0MzI0LCAxMjYsIDQyMjQ2LCAxMTkxNTIsIDAsIDc0Mzc4LCA2NTkyNiwgNzc0NCwgCi0gICAgMTk0NjM2LCA3NDI3NywgNzQzMDIsIDc4MDUyLCA0MzgxNywgNjk2NiwgNDM4MjIsIDgxMzYsIDAsIDY1NjAwLCAxNjMzLCAwLCAKLSAgICAwLCA0NzYyLCAxMTAzLCAwLCAwLCA0NzY1LCAwLCAxMzA3OCwgMCwgNDc2MCwgNjM4MjcsIDIwNTAsIDEwODcxLCA0MzE5OSwgCi0gICAgMTEwMiwgMCwgNDIyMzYsIDEyODg2NywgMTk0NjY3LCAxMTU0NiwgNzQ3OTQsIDMzNywgMCwgNDI1OTEsIDg2MjcsIDEyMjc5LCAKLSAgICAxMTExLCAwLCA5MjE2MSwgNDcwNywgNjgyMDYsIDEwMTQzLCA3ODgzLCAxMjcwODEsIDc4ODAsIDQ1MjIsIDg2NDUsIDU3MDQsIAotICAgIDEzMDEwLCAwLCA4MzA0LCA5MTc1NjEsIDAsIDExOTU3NSwgMCwgMCwgNjY2NTQsIDAsIDkyNjc2LCAwLCAxMzAwOCwgMCwgCi0gICAgNDM4NSwgMCwgMTMwMTEsIDAsIDkyNTY5LCAxMTkxNjEsIDEzMDA5LCAxNjAsIDI2NzcsIDAsIDAsIDQxNzkzLCA2NTc2MywgCi0gICAgNzQyMjEsIDEyMDE0MSwgNDE3OTIsIDQyNzcwLCAwLCA2NTc2MiwgMTE4ODI5LCA0MzgyMSwgNTcwOSwgMCwgMTI3MTc3LCAKLSAgICA0MzgxNiwgMCwgMCwgMTA3OSwgMzg2NywgNTcwOCwgMCwgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCA1NzA1LCA4NzkxLCAKLSAgICA0MDA1LCAwLCAxMDIzNywgMTA5OTEsIDAsIDQzNDU5LCA5MTczLCA5MTc1ODEsIDkxNzU4MCwgMTMxNzAsIDEyNTQwLCAKLSAgICA5MTc1NzcsIDQyNjA1LCAxMjA3NjUsIDkxNzU3MCwgNjg2NDcsIDkxNzU3MiwgMTAwNTgsIDAsIDc0ODY3LCAxOTQ2NTQsIAotICAgIDEyNzA3OCwgMzMzOSwgMTE0NDgsIDExMDYsIDkxNzU5MSwgOTE3NTkwLCA5MTc1OTMsIDMzNDAsIDkxNzU4NywgOTE3NTg2LCAKLSAgICA5MTc1ODksIDkxNzU4OCwgMTIwNTQxLCAxMDYwNSwgMTMwOSwgNjM5NjYsIDEyMDc0MywgMTc1NCwgOTIyMjYsIDEzMjQ2LCAKLSAgICA4NjQsIDAsIDExODkyNiwgODk3MiwgMCwgNzg0OSwgMTIwMDkyLCA5MjUzMywgMTMyNDAsIDE5NTA2OCwgNTE5MiwgNDMzOCwgCi0gICAgMCwgMTA5NDgsIDkxNzYwMSwgMTMxOTksIDkyNTc1LCAxMjM2LCAxMzIwOCwgMTMyNjEsIDEzMTg5LCAxMzE4OCwgMTIwMTY0LCAKLSAgICAwLCA3NDQwLCAwLCAxMjAxNTMsIDk1NTMsIDE1OTAsIDYzNzc3LCA2Mzc3NiwgMTMxNzgsIDYzNzgyLCA2Mzc4MSwgNjM3ODAsIAotICAgIDYzNzc5LCAxNTgzLCAwLCAxMzI2MCwgNDU1MCwgMCwgNjQyMDUsIDAsIDAsIDQxNTIyLCAwLCA5MjE2OCwgMCwgOTE3ODU4LCAKLSAgICAxMTM1NCwgMCwgMCwgNDI3OTUsIDAsIDExOTE5NSwgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIDEzMjcyLCAxMzE5NCwgMTMzNCwgCi0gICAgMCwgNDQ3OSwgMTE3OCwgNjU1ODYsIDEyMDY2MywgNjY2ODEsIDExOTE5MywgNDYwMSwgMCwgMCwgMCwgMCwgMCwgMTk0NjU4LCAKLSAgICAwLCA2ODA5LCA2Mzc4NiwgNjAzMSwgMCwgNjM3OTEsIDYzNzkwLCAxMTQ1LCA2Mzc4OCwgNzkxMCwgNjM3ODUsIDQzMTUzLCAKLSAgICA3NTQsIDEwMTkyLCAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAwLCAwLCAxMDc0NywgMTI1LCAwLCA2NDg5MCwgMCwgMCwgCi0gICAgMCwgNDE3MTksIDYzNzU4LCAzNTIzLCAxMDc0LCAxMzI1OCwgOTUzNiwgNzQwNzcsIDAsIDQ0MjcsIDc0MjQyLCA2Mzc1NywgCi0gICAgNDMxNDUsIDEyMjE3LCA2Mzc1NCwgNDE1MzIsIDEzNDksIDYzNzUwLCA2Mzc0OSwgMCwgMCwgMCwgNjM3NTMsIDYzODAyLCAKLSAgICA0MTA4NCwgMTIwNjIyLCA2ODEzMywgNDE5MzAsIDYzODA1LCA2MzgwNCwgNDM2MzIsIDYzODAxLCA0MTA4MiwgODE0MCwgCi0gICAgNjM3OTgsIDYyNjAsIDAsIDAsIDExOTIyNSwgNjM3OTMsIDExOTg4LCAzODk4LCAxMjgyNDEsIDEwMjAxLCAxMjIzOCwgCi0gICAgNjM3OTUsIDQyMTk0LCAxMDM2NywgMTI1MjEsIDEwNDMxLCA0MjExNCwgNDE5MzIsIDEwNjgsIDAsIDEyNTIzLCAxMjk0NSwgCi0gICAgMCwgNDIyMDMsIDc5NTAsIDEwODA0LCA2Mzc3MSwgNDI3ODcsIDQzODYsIDEyMjI0LCA2OTczLCAyNzkzLCAxMjQ3NSwgMCwgCi0gICAgMCwgNjM3NjksIDk1MzAsIDAsIDEyMjMyLCAxMzEzNSwgODU5NiwgNTY4MSwgNjM3NjIsIDQ1OTUsIDYzNzYwLCA3OTIsIDAsIAotICAgIDY0ODAzLCAwLCA4NzQyLCAwLCAxMTA1MywgMTI4Nzk2LCA2Mzc0NCwgMTI4MTA3LCAwLCA3NTg4LCA2Mzc0OCwgMTY5MywgCi0gICAgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgOTE3ODUzLCAxMDkwLCAxMjA2NzksIDEyODM1NiwgMTE2NjUsIDc0MTMzLCAKLSAgICA0NTU4LCA2NTY4NSwgOTUyMywgMCwgMCwgNzg2ODEsIDExNTEzLCAwLCA2MTU3LCA2Mzc3NSwgNjM3NzQsIDYzNzczLCAKLSAgICAxMzE5MSwgMTIxNzAsIDM1MDAsIDMxMzksIDAsIDMxNzAsIDEyNDg1LCAwLCAxMDg3MiwgNzgyNzEsIDEzMDA2LCA2NDQzMywgCi0gICAgMCwgMCwgOTQxLCAwLCAwLCAwLCA2NTU0MSwgMTEwNjMsIDAsIDgyMjgsIDAsIDQyMDY1LCAwLCAwLCAwLCAwLCA5MjQ1NSwgCi0gICAgNzM4NiwgMCwgNjQ0NDQsIDAsIDExOTg2MywgNDM2MDMsIDAsIDY1Mzk3LCAyODgsIDAsIDAsIDAsIDEwMDI1LCA5MTc5MTYsIAotICAgIDI5MTgsIDAsIDY1MzAwLCAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgMCwgMTI3ODI5LCA2NTM5MywgCi0gICAgMCwgNzQxMzgsIDAsIDAsIDAsIDc0MTM5LCA5MjcxMiwgNjUzOTQsIDExNTQ4LCA1MjcwLCAwLCA2NTM5NiwgMCwgNjU4MTMsIAotICAgIDEzMjU2LCAxMjgyLCAxMjA3NzEsIDAsIDAsIDEwODg4LCAwLCA2NTI0MiwgMCwgMzMzMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzQyNTksIDMzMDQsIDQyNzUzLCAwLCAwLCAwLCAxNjI3LCAwLCAwLCAwLCA1MzcxLCAxMzExNiwgMCwgMTgyNiwgMTE4Nzk0LCAKLSAgICAwLCA0MzA5NCwgMCwgNDM2NTAsIDAsIDAsIDkwMzUsIDAsIDAsIDEyODAwNSwgMCwgOTIyMDcsIDY4MTI1LCAwLCAxNjQsIDAsIAotICAgIDAsIDAsIDY5NTgsIDAsIDQzMTE2LCAwLCAwLCAxMzI0NSwgMCwgMCwgMTI3Mzc2LCAwLCA3Mzg5MywgMTI3NzU2LCAxMjY2NiwgCi0gICAgMTMxNzUsIDEzMjA3LCAxMjA0MTQsIDY2MDE0LCAxMjA0MjgsIDc0NDcsIDU5MjksIDAsIDY1NTA5LCAwLCA3NDQ5LCAKLSAgICAxMTMwNiwgMCwgNzM5MjAsIDMxODAsIDAsIDYzODA4LCA5MDU0LCA5NzEsIDEzMDYyLCAwLCAwLCA2NTE5NSwgMTAxNjQsIAotICAgIDkyMjUyLCA3NDQyOCwgMCwgNzgxNDYsIDkyNjExLCAwLCAwLCAwLCAxMDA0NSwgMTI4ODIsIDEzMjc1LCAxMjgxNjEsIAotICAgIDExMDU3LCAwLCAxMzI3NiwgMCwgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMCwgMCwgMCwgMTIyMjksIDQxNTIzLCAwLCAKLSAgICA0MzQxMSwgNzM3NTEsIDAsIDY0ODEzLCAwLCAwLCAxMDQ3NiwgMzg1OCwgMCwgMzkzMiwgNjQ5NTgsIDAsIDAsIDczOTg5LCAKLSAgICA2ODE5MiwgMCwgMCwgMzY5LCAwLCA0MTc4NCwgMCwgNjQxNjMsIDAsIDAsIDAsIDY1NDc0LCA0Nzk2LCAxMjI5MiwgMCwgCi0gICAgNjU0NzksIDAsIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCAwLCAwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCAKLSAgICA1Nzg4LCA4MDkyLCA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAwLCA0Mzg4LCAwLCA3NDYsIDEyMDc4NCwgMCwgCi0gICAgMCwgMTIwMTgsIDY1Mjk0LCAwLCAwLCAwLCAwLCA0NDIyLCA0NzA4LCAzNzk5LCA3NDI5MiwgMTE5MzU3LCAwLCA3NDQzMCwgCi0gICAgMCwgMTE3MDAsIDQzNzQsIDAsIDEyODE3OSwgMTM2NCwgMCwgODAzOCwgMCwgOTE3NTk3LCAxMjg2OCwgNjk4MTQsIDAsIAotICAgIDY3MzUsIDczOTc5LCAxMzE3NCwgNzM5NjgsIDEzMjI1LCAwLCA2OTgwOCwgNjU4MzUsIDAsIDIzNjUsIDc4NDEsIDAsIAotICAgIDQyODU1LCAxMTg4NTYsIDQyODY2LCAwLCAwLCAwLCA2NjQzOCwgNDE3ODUsIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIAotICAgIDExOTM1NCwgMCwgMCwgMCwgMCwgOTI0MDIsIDEyODA2MiwgMTI5NjUsIDM4NCwgNjQ1MTIsIDEwNDA0LCAxMDM0MCwgCi0gICAgMTE5MzUyLCAxNTU2LCA1Mjc0LCAxMzIxMCwgMTIwMTI1LCAxMDAxNywgOTczMywgNDE3ODcsIDAsIDEyNjk5NCwgNDEzNzMsIAotICAgIDc4MDM5LCAxMjMwMywgMCwgMTMyMzIsIDEzMjMzLCAzNDksIDQ4NjMsIDQxMzcxLCAxMTY1NiwgMCwgMTIwNzAzLCAKLSAgICAxMTk4ODMsIDEyODYxLCA0Mzk4LCA4NTQzLCA2NTYxOCwgMTI4MDE4LCAxMDk2LCAwLCAwLCA0MjY4OCwgMTI0NDEsIAotICAgIDEyMzU1LCAxMTkzNDgsIDExOTM0NywgNDMxOCwgMTA0NTIsIDAsIDgwMzIsIDEzMjQzLCAxMzIzNywgMTI3MTksIDAsIAotICAgIDExOTEwMSwgMCwgNjQ4ODQsIDExOTg3MiwgMTE5MzQ1LCA4NTk3LCAwLCAwLCA5ODY0LCAwLCAxMjA3ODUsIDExOTg3NCwgMCwgCi0gICAgMTMxOTUsIDQxNDUyLCA2NDk2MSwgNzcyMiwgMCwgMTA0NTksIDExOTg3OCwgMCwgMTE5ODc5LCA2NjU5MCwgMTI4MTIzLCAKLSAgICA0MTUzMywgNjYzMzcsIDAsIDkyMTg0LCAwLCA0OTY1LCA0MzQ0NSwgOTE3NTM2LCA3Mzg0OSwgMCwgNDM2MzgsIDc4NTM3LCAKLSAgICAxMjgyODcsIDYyNjEsIDExOTM0MiwgNDMxNDcsIDY2NTcwLCAxOTU3LCAxMDQyMCwgOTgyLCAyNzU2LCAxMzI5MiwgMTMyMDYsIAotICAgIDEyODgyOCwgMCwgMjkyNSwgNzM4MDksIDEzMDU2LCAxMjc1NTksIDEzMjEyLCA0MzIzOCwgMCwgMTMxOTAsIDEzMTg3LCAKLSAgICA5MjU0MSwgMTMxOTgsIDExODc5MywgMCwgNTI0MiwgMTE5MTc5LCA2NDQ3NiwgMTY5NCwgODIxNiwgMCwgNjc3MCwgNDMzMzEsIAotICAgIDAsIDY1NjIwLCAwLCA0MzU0NCwgMCwgMCwgNDE0NDQsIDY1NjIxLCAxMjAzMjUsIDkxOTcsIDUyNDYsIDExOTEwNiwgCi0gICAgMTMxODUsIDk3MDksIDEyMDMyMywgMTIwMzIyLCAxMjMxNCwgNjU2MTYsIDUyMzgsIDExOTMzMywgMCwgMTE5MzM3LCA1MjM2LCAKLSAgICA0MDk3OSwgMCwgNzQyMDEsIDgyODYsIDAsIDM5MzYsIDExOTMzMSwgMTE2OTksIDQxMzQ3LCAxMjcyNDksIDEzMjM1LCAKLSAgICA4ODQyLCA0MTI0OCwgMCwgNDM3OSwgMTMyMzksIDEyNjkyLCA3OTY5LCAxMjcyNjYsIDcyMTksIDEyNzI1MCwgMCwgCi0gICAgMTIwNTA5LCAwLCA2NjIyNCwgNzM0LCAyOTc5LCAxMjAzMDMsIDY1NjE5LCA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCAKLSAgICA2NjYzMSwgNDE0NzcsIDExOTI1NiwgMTIwMzEwLCA3NDUxMSwgNDE3NzAsIDE2NzAsIDY0NDIsIDEyMDMxNywgNDI0NDYsIAotICAgIDUzNzksIDEyMDMxOCwgNDExNjMsIDc0ODMyLCAxMjAzMTUsIDEyMDMxNCwgMTI4MDI1LCAwLCA0Mjg0MSwgMTMyNjcsIDAsIAotICAgIDAsIDQxNzc1LCAwLCA3MTMwLCA0MTc3MywgMCwgMTA2NjMsIDAsIDAsIDAsIDYxNTEsIDEyMTEwLCA0MjY3MywgNjU1NzIsIAotICAgIDY1MjkzLCA2NTI1MCwgMTMyNjUsIDEzMjY0LCA2NDUxOCwgMCwgNjEwMCwgMCwgOTI2NDcsIDU4MDgsIDY1OTIyLCAwLCAKLSAgICAxMjk2NywgNjYwNDEsIDU2MTIsIDQ1ODMsIDAsIDAsIDY4MDk3LCA2NDU3NSwgMTI4NTI0LCAxMTk2NSwgMCwgNjgzNTgsIDAsIAotICAgIDY5Nzg5LCAwLCA5MjI2MCwgNjgxMDIsIDk2OTgsIDc4MTQsIDc0NDc2LCAxMTk2NTEsIDEyODUxNCwgMCwgNDE5MjEsIAotICAgIDExODg1OCwgOTc1NiwgNjk4NSwgMTE5MjU4LCA3ODQ5MCwgNzQyMTksIDAsIDAsIDExODk5NywgODAxMiwgNTY3NCwgCi0gICAgMTIzNTMsIDAsIDEyMzYxLCA1Njc3LCA1NTg4LCAwLCA0MTkyNSwgMTI4MTI0LCA0MTkyMCwgNTY3MywgMTIwNTM0LCA1Njc2LCAKLSAgICA0MTkyMywgMTI2OTQsIDExODk3OCwgNTY3MiwgMTI5NCwgMCwgNzgwNTksIDAsIDQyNTExLCAxNzI3LCAxMjA3MjUsIAotICAgIDQyNDM2LCAwLCAwLCAwLCA3NDIyMiwgODcxOCwgMzU1MCwgNzM2LCAxMDI2OCwgNDUwNSwgMTAzMTYsIDc0MDkwLCA1ODI2LCAKLSAgICA1NTIzMiwgNTgxMywgMCwgMTIwNzEyLCA1ODQxLCA1ODM3LCA1NTIzNCwgMCwgMzEwNSwgMTI4MjksIDU4MzgsIDU3OTYsIDAsIAotICAgIDExOTU5MiwgNTc5MywgMCwgNTg2NiwgNTc5NywgNDEwMTEsIDU4NjUsIDEyMDA5MSwgNzk1NiwgNTk4LCAwLCA2NDY0OSwgCi0gICAgNTgwNiwgNDIzOTgsIDAsIDkwMzcsIDU2NzEsIDEyMDA0MSwgMCwgMCwgMCwgMTI4ODU1LCAwLCA4NDcsIDEyODI0MiwgCi0gICAgOTUyOSwgMCwgNjY2NTcsIDY5ODAsIDAsIDEyMDAzNSwgNzg0ODQsIDAsIDAsIDEyMDAzMywgNzg0ODYsIDAsIDAsIAotICAgIDEyMDAzOSwgNDI2ODMsIDAsIDAsIDcxMTQsIDAsIDAsIDQzMTkwLCA2NTQ2MywgMTU1NCwgMCwgNDI2MTEsIDQyNTYzLCAwLCAKLSAgICA1NjUxLCAyOTI5LCA2NzkyLCA0MzIwMSwgMCwgMTk5NjMsIDU2OTgsIDAsIDAsIDAsIDAsIDU2NDQsIDEwMjkyLCA2NTU0NiwgCi0gICAgNjk3MjcsIDY4MTQxLCA4MzcyLCAwLCA2NTExNiwgMCwgMTIwMDIyLCAxMDE3NSwgMTAzODgsIDQyNzk5LCAwLCA0MTAxMywgCi0gICAgMTA1NjgsIDAsIDAsIDI4NjksIDAsIDQxMDE1LCAxOTQ2OTIsIDI3ODUsIDQzNjYsIDAsIDEwOTU0LCA0MTgwMiwgMCwgCisgICAgNjM4NTcsIDEzODgsIDc0MTY5LCAwLCAxMDc3LCA5ODM1NzcsIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgMCwgMCwgMCwgCisgICAgNDI3NzMsIDAsIDAsIDAsIDExOTIyMCwgMCwgMzY2MywgMCwgMTExMiwgMTE5MTIyLCA4Njg2LCAwLCA1MzM0LCA2NTA4MSwgCisgICAgNDMyNDksIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCAwLCA2NTA5LCAwLCA1MzI3LCAwLCAxOTkwNywgNjM4NjksIDM0NzgsIAorICAgIDc1ODMsIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDQzNzQ2LCA3Mzc0OCwgNjM4NjYsIDc4NjI2LCAxOTE1LCAKKyAgICA0ODQ2LCAwLCA2NjM3MSwgMTE4OTg0LCA0MjEwNSwgMjk5MCwgMTIwMTI4LCA4MDUsIDY5MjM4LCA2NDQzOCwgMTIwNzAsIAorICAgIDg3NjAsIDExMTcsIDExODk4NywgMTIyMTIsIDEyMDEyMywgNjUxNzQsIDQyMzU3LCA2MzgzNSwgNjM4MzQsIDAsIDc4MjQwLCAKKyAgICAxMjIyNSwgNjM4MzgsIDYzODM3LCA5ODM4NDQsIDk4Mzc5NSwgNjM4MzMsIDYwNDIsIDY2MzYwLCA4MDgzLCAwLCAwLCAKKyAgICA2MzgyMSwgNjM4MjAsIDYzODE5LCA2MzgxOCwgOTgzODk1LCA1MjI3LCA5MDQ3LCA2MzgyMiwgMTI3MTYyLCA2MDkxLCAwLCAKKyAgICAxMDY5MSwgNTYwLCA1NjQzLCA4MjI2LCAxMTk1NzgsIDYzODEyLCA2MzgxMSwgNjM4MTAsIDYzODA5LCAyMjg5LCA2MzgxNSwgCisgICAgNjM4MTQsIDYzODEzLCA2MDQ3LCAxNTk3LCAxMjAxNDMsIDc4MCwgMjA2LCA3NzkyNSwgNDkzNiwgNjUxNDcsIDgxNjgsIAorICAgIDYzOTMwLCAyMDc2LCAxMDkzLCA5ODgyLCA2MzkzNCwgMjA4MiwgNjM5MzIsIDEyODE1MCwgNjM5MjksIDM1NDYsIDE2MDUsIAorICAgIDc3OTM0LCA5ODA2LCA0MzQ3MiwgNzc5MzMsIDg0MDAsIDExMzQzLCAyMDg2LCAwLCA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgCisgICAgMCwgNDYxOCwgNDIyMDksIDQzNDMxLCAxMzE2OSwgNTI5MCwgMjA4OSwgMTY5NSwgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAKKyAgICAxMDg0LCAxMDg1LCA2MzgyOSwgMTA4MywgMTAxMzEsIDcyODMsIDAsIDYzOTcwLCAxMjgzNTgsIDEwOTIsIDQ3NTQsIDcyNzMsIAorICAgIDUyNTIsIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAwLCA3NDA4LCAxMTgwOSwgOTE3NjE4LCAwLCAwLCAyOTY1LCA3MjU4LCAKKyAgICA4ODA4LCAwLCAxMDg5LCA0MTg3LCA2MzkzNywgNDIxMTksIDQyMTIwLCAwLCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgMCwgCisgICAgNzQ0OTQsIDEyNDYzLCAyOTk0LCAwLCAxMTg4MjcsIDAsIDk2NjQsIDc3OTM5LCA3Nzk0MCwgNjc4OTIsIDc3OTM4LCAKKyAgICA3NDM0MywgMCwgMCwgNjYwLCAxMDEyNywgNjY2LCA5MDIyLCA1NTMyLCA0MzY2NywgNTUzMywgNzc5NDEsIDc4NTA3LCAKKyAgICA2MTE4LCAyMjIsIDk3OSwgMzg4NCwgMCwgNzQxNTEsIDkyNjUyLCA2NTAyLCAwLCAxMjcxMTgsIDEyODY5NSwgNjM5NTEsIAorICAgIDEyNDY1LCAwLCAwLCAxMjg3ODIsIDYzOTQ2LCAxNzA3LCA2MzkyNCwgMTI0NjEsIDYzOTUwLCA2Mzg5NywgNjM5NDgsIAorICAgIDYzOTQ3LCA2Mzk0NSwgNjAzOCwgNjM5NDMsIDYzOTQyLCA2NDY4NSwgNjM4OTUsIDY1ODM4LCAyMjc2LCA3Nzc2LCA5NDA3NiwgCisgICAgMCwgMTI3NzczLCAxMjA0NDQsIDY5NzMwLCA4MDEsIDQzMTY1LCAxNjkwLCA2MzkxOSwgNjM5MTgsIDYzOTE3LCAxMzI3NywgCisgICAgNDM2NTksIDEyOTUxLCAxMjA2MzgsIDk5MDYsIDIwNTQsIDIzMzQsIDc4NTE1LCA2MzkxNiwgNTQ4MywgNjM5MTQsIDY5NzM3LCAKKyAgICA2MzkxMSwgNTQ4NCwgNjM5MDksIDYzOTA4LCAyNTM5LCAwLCA0Mzk4MCwgNTQ4NSwgMCwgNDI2OTcsIDkwNjEsIDU1MzQsIAorICAgIDEwNjcyLCA0NTAyLCAwLCAyNTMsIDAsIDY4MjA4LCAwLCA5MjAzLCA3NDIzMSwgMCwgMTE1MzAsIDkyNTQyLCA2ODY2OCwgMCwgCisgICAgMTE4OTA3LCAwLCAxMDQ3NCwgNDM0MjYsIDEzMjU3LCA0MjM1NCwgMTI4MDk5LCA5ODM2ODksIDcwMDQ0LCAxOTUwNjUsIDAsIAorICAgIDg0MTMsIDk4MzgwNywgMCwgNTY5MywgNzI3MiwgMCwgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzQzNTAsIDE5NTA2MywgMCwgMCwgCisgICAgMCwgMTI2NjM5LCAwLCAwLCA5NDA3OCwgMTI4MTMzLCAxMjc3NjcsIDY2NjA4LCAzMTExLCA0MTg2MywgODgwNCwgNDI5MTMsIAorICAgIDkyMTg3LCA3MjcwLCAwLCA2NjYwNiwgNjYyOCwgMTA3NiwgNzQzMywgMTQzNiwgNzM4NDQsIDU1MjI2LCAxMjgzNTMsIAorICAgIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIDYzOTA2LCAxNTk4LCA2MzkwNCwgMCwgMCwgNDE3MjksIDQ0MjMsIDEzMDcsIAorICAgIDAsIDEwNTE1LCA0MTU4OSwgMTI4Njk4LCAwLCA2MjE4LCAwLCAxNDMwLCAwLCAwLCAxMjA2MDYsIDc4NzU0LCA1NDEzLCAKKyAgICA3NjE5LCAzMjU1LCAzNDkzLCA3NDAzMiwgMTE1NDksIDEwNzM1LCA0MTc0MywgNzM5MzcsIDY4MDEsIDk4MzYyNCwgNDUxOCwgCisgICAgMTA5OTAsIDY1MDczLCA1MTY3LCA0NDgxLCAzNzcxLCAxMjAxNTgsIDI3MTAsIDAsIDY5MjQzLCA0MTcyNCwgMCwgNDMwNzMsIAorICAgIDQxNjkwLCAxMjQ3OSwgOTgzNjI2LCAwLCAwLCA5ODM4MDksIDcwMDQ2LCAxNjI4LCAxMjcxNDksIDk4MzQ3OSwgOTgzNzIyLCAKKyAgICA2NTI2MiwgNjMzMywgMTA3ODMsIDQyMzE1LCAwLCA2Mzg1NSwgOTQwNTYsIDAsIDAsIDUzMzksIDc0MzIzLCAwLCAxMzAwNCwgCisgICAgMCwgNDQ1NywgMCwgMCwgMCwgMCwgNTY4NCwgODY3OCwgMTA5MTQsIDAsIDU2ODksIDY1ODA3LCAwLCA2ODQ2NCwgMTI2MzMsIAorICAgIDEyODcwLCA2OTcwNSwgNjUxODMsIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAwLCA3NDI1MSwgMCwgMTIwNjQ3LCAKKyAgICAwLCA1MCwgMTA1NTgsIDk4NzEsIDQyNjEyLCA0MzY1NSwgMCwgMCwgMCwgNjY0NjgsIDAsIDEzMjU5LCA0NDQ4LCAwLCAKKyAgICA5ODM4MzYsIDAsIDcwMDQzLCA2Nzg1MywgMCwgMTA2NDAsIDExNTM5LCAxMTUxLCAwLCA5MTc2MDcsIDEyNzU0NCwgCisgICAgMTI3MDc5LCAxOTUwNTAsIDEyNzg1MiwgMCwgMCwgMCwgMTI1MDEsIDY0NjA0LCAwLCAxMTUyNywgMTE4ODcwLCA4ODEyLCAwLCAKKyAgICAxMTUzOCwgODY3MywgMTI2NTAsIDExMDIwLCAwLCA2NjQ2NywgMjEwNSwgODA4NywgNzgxNjMsIDY5NjMyLCA5ODk0LCAwLCAKKyAgICAwLCAwLCA0NjM2LCA1NTI2MiwgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgMCwgMTIwNDk1LCAwLCAxMjgyODQsIAorICAgIDEyMjc3LCAxOTQ2MjcsIDExOTk1LCA5MjU1MywgMCwgMTIxNTgsIDAsIDg3NDEsIDEwMTk3LCAwLCA5MjQyNiwgMCwgNjUzMSwgCisgICAgMCwgMTI3ODQ2LCA0NzMsIDQzNDE1LCAwLCA5ODM2NDEsIDE4NzMsIDEwODcsIDAsIDAsIDAsIDc4NTI3LCA2NjQzOSwgCisgICAgNDMyMTgsIDk4MzEyMywgMTk0NzE2LCA3MjM3LCAxMjUwNCwgNzQyODIsIDAsIDk4MzU3MSwgMCwgOTQ4OSwgMCwgMCwgCisgICAgNDM4NCwgNzQyMjAsIDYzODQ1LCAyMDU4LCAxMjg4NjMsIDEzMjk1LCA0MzE5MSwgMTI4MDMwLCAwLCAxMTU0LCAzODU3LCAKKyAgICAxMjA1LCAwLCAwLCAxMzEwMCwgMTI5NTgsIDEyMDcwNiwgNzQxNjgsIDAsIDAsIDQ0MjEsIDEwNTkyLCAwLCA0OTUsIAorICAgIDExOTAwNywgNDE3MTIsIDc5ODMsIDAsIDkzOTk3LCAwLCA2MzQ3LCAxMjAxNjUsIDc2NTQsIDQxNzEwLCA0MTk2LCAwLCAKKyAgICA0MzcsIDQxNzA5LCA3Mzc3MiwgMCwgMCwgOTQ2NSwgMTMyOTAsIDExOTE4MCwgNDk5NywgNjQzMDYsIDAsIDAsIDQ5OTksIAorICAgIDE5NDY0MiwgMCwgMTI2NTgyLCA0NzExLCAxMjA3NjksIDAsIDI3MzksIDAsIDgwNDQsIDc0ODM0LCAxOTQ2NDMsIDQxNzg5LCAKKyAgICAxMjgxNDIsIDEwODA5LCAwLCAwLCAwLCAxNzc5LCA2NjAwLCA2NjAxLCA0MTU0MywgNTMyNSwgNjQyLCA2NDE4NywgMTMwNTgsIAorICAgIDEyMDQ0OSwgMTI4NzUsIDAsIDkyMTg2LCAxMzIyOSwgMCwgMTA1NzUsIDQzMzk5LCAwLCAwLCA0MTc5MSwgMTEwNCwgMCwgMCwgCisgICAgMTA2NTUsIDAsIDAsIDAsIDAsIDEwODIsIDE5NTA0OSwgODQyOCwgNjU2OSwgMCwgMCwgMCwgNjk4NDksIDY3ODMsIDAsIAorICAgIDEyOTkzLCA4MDQ5LCA0MTU0OCwgNDQwMjEsIDY0NTgsIDk4Mzc5OCwgMTI4ODgyLCA0NzYxLCA2MzgyOCwgNDc2NiwgCisgICAgNjQ2MjMsIDEyNzMsIDQzNDA3LCAwLCAxMTg4NzYsIDE5NTA0NSwgNjkxMiwgMTMxMywgNjMyMiwgMTA0ODMsIDk4MzYwMywgCisgICAgNDE1NDUsIDAsIDkyNDQ5LCAwLCAwLCAwLCAwLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDAsIDg1MDMsIDUxMjIsIDQxNTI3LCAKKyAgICAwLCA2NjMyMCwgOTgzODAyLCAwLCAwLCAwLCA0MTUzNywgNjk2ODMsIDgzMDMsIDgyODIsIDExODE3LCA3Mzg1NywgMTAwMDMsIAorICAgIDczODU5LCA2NTkwNCwgNzM2MywgMTY4NiwgMCwgNzg0MDYsIDExNDY3LCAzNjY0LCA2NTkyMSwgNjQyOTksIDE5NDY2NCwgMCwgCisgICAgMCwgNDMyNCwgMTI2LCA0MjI0NiwgMTE5MTUyLCAwLCA3NDM3OCwgNjU5MjYsIDc3NDQsIDE5NDYzNiwgNzQyNzcsIDc0MzAyLCAKKyAgICA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAwLCA2NTYwMCwgMTYzMywgMCwgMCwgNDc2MiwgMTEwMywgMCwgMCwgCisgICAgNDc2NSwgOTgzNDg0LCAxMzA3OCwgMCwgNDc2MCwgNjM4MjcsIDIwNTAsIDEwODcxLCA0MzE5OSwgMTEwMiwgMCwgNDIyMzYsIAorICAgIDEyODg2NywgMTk0NjY3LCAxMTU0NiwgNzQ3OTQsIDMzNywgMCwgNDI1OTEsIDg2MjcsIDEyMjc5LCAxMTExLCAwLCA5MjE2MSwgCisgICAgNDcwNywgNjgyMDYsIDEwMTQzLCA3ODgzLCAxMjcwODEsIDc4ODAsIDQ1MjIsIDg2NDUsIDU3MDQsIDEzMDEwLCAwLCA4MzA0LCAKKyAgICA5MTc1NjEsIDAsIDExOTU3NSwgMjI5MywgMCwgNjY2NTQsIDAsIDkyNjc2LCAwLCAxMzAwOCwgMCwgNDM4NSwgMCwgMTMwMTEsIAorICAgIDAsIDkyNTY5LCAxMTkxNjEsIDEzMDA5LCAxNjAsIDI2NzcsIDAsIDAsIDQxNzkzLCA2NTc2MywgNzQyMjEsIDEyMDE0MSwgCisgICAgNDE3OTIsIDQyNzcwLCA5NDA1NCwgNjU3NjIsIDExODgyOSwgNDM4MjEsIDU3MDksIDAsIDk0MDUzLCA0MzgxNiwgMCwgMCwgCisgICAgMTA3OSwgMzg2NywgNTcwOCwgMCwgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCA1NzA1LCA4NzkxLCA0MDA1LCAwLCAxMDIzNywgCisgICAgMTA5OTEsIDEyODgxNiwgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAxMzE3MCwgMTI1NDAsIDkxNzU3NywgNDI2MDUsIAorICAgIDEyMDc2NSwgMTI2NjE3LCA2ODY0NywgOTE3NTcyLCAxMDA1OCwgMCwgNzQ4NjcsIDE5NDY1NCwgMTI3MDc4LCAzMzM5LCAKKyAgICAxMTQ0OCwgMTEwNiwgOTE3NTkxLCA5MTc1OTAsIDkxNzU5MywgMzM0MCwgOTE3NTg3LCA5MTc1ODYsIDkxNzU4OSwgCisgICAgOTE3NTg4LCAxMjA1NDEsIDEwNjA1LCAxMzA5LCA2Mzk2NiwgMTIwNzQzLCAxNzU0LCA5MjIyNiwgMTMyNDYsIDg2NCwgMCwgCisgICAgMTE4OTI2LCA4OTcyLCAwLCA3ODQ5LCAxMjAwOTIsIDkyNTMzLCAxMzI0MCwgMTk1MDY4LCA1MTkyLCA0MzM4LCA2Nzk4MiwgCisgICAgMTA5NDgsIDkxNzYwMSwgMTMxOTksIDkyNTc1LCAxMjM2LCAxMzIwOCwgMTMyNjEsIDEzMTg5LCAxMzE4OCwgOTM5OTMsIDAsIAorICAgIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgNjM3ODIsIDYzNzgxLCA2Mzc4MCwgCisgICAgNjM3NzksIDE1ODMsIDAsIDEzMjYwLCA0NTUwLCAwLCA2NDIwNSwgMCwgMCwgNDE1MjIsIDk4MzkwNiwgOTIxNjgsIAorICAgIDk4Mzc2MywgOTE3ODU4LCAxMTM1NCwgOTQwNzEsIDAsIDQyNzk1LCAwLCAxMTkxOTUsIDExMzk0LCAxOTQ2NDYsIDEzMjM2LCAKKyAgICAxMzI3MiwgMTMxOTQsIDEzMzQsIDY5OTI2LCA0NDc5LCAxMTc4LCA2NTU4NiwgMTIwNjYzLCA2NjY4MSwgMTE5MTkzLCAKKyAgICA0NjAxLCAwLCAwLCA5ODM3NTYsIDAsIDAsIDE5NDY1OCwgMCwgNjgwOSwgNjM3ODYsIDYwMzEsIDAsIDYzNzkxLCA2Mzc5MCwgCisgICAgMTE0NSwgNjM3ODgsIDc5MTAsIDYzNzg1LCA0MzE1MywgNzU0LCAxMDE5MiwgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgCisgICAgMCwgMCwgMTA3NDcsIDEyNSwgMCwgNjQ4OTAsIDAsIDk4MzEzMSwgMCwgNDE3MTksIDYzNzU4LCAzNTIzLCAxMDc0LCAKKyAgICAxMzI1OCwgOTUzNiwgNzQwNzcsIDAsIDQ0MjcsIDc0MjQyLCA2Mzc1NywgNDMxNDUsIDEyMjE3LCA2Mzc1NCwgNDE1MzIsIAorICAgIDEzNDksIDYzNzUwLCA2Mzc0OSwgMCwgMCwgMCwgNjM3NTMsIDYzODAyLCA0MTA4NCwgMTIwNjIyLCA2ODEzMywgNDE5MzAsIAorICAgIDYzODA1LCA2MzgwNCwgNDM2MzIsIDYzODAxLCA0MTA4MiwgODE0MCwgNjM3OTgsIDYyNjAsIDAsIDAsIDk0MDc0LCA2Mzc5MywgCisgICAgMTE5ODgsIDM4OTgsIDEyODI0MSwgMTAyMDEsIDEyMjM4LCA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgMTA0MzEsIAorICAgIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCA5ODMzMjEsIDQyMjAzLCA3OTUwLCAxMDgwNCwgNjM3NzEsIAorICAgIDQyNzg3LCA0Mzg2LCAxMjIyNCwgNjk3MywgMjc5MywgMTI0NzUsIDAsIDAsIDYzNzY5LCA5NTMwLCA5ODMxMTksIDEyMjMyLCAKKyAgICAxMzEzNSwgODU5NiwgNTY4MSwgNjM3NjIsIDQ1OTUsIDYzNzYwLCA3OTIsIDAsIDY0ODAzLCAwLCA4NzQyLCAwLCAxMTA1MywgCisgICAgMTI4Nzk2LCA2Mzc0NCwgMTI4MTA3LCAwLCA3NTg4LCA2Mzc0OCwgMTY5MywgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgCisgICAgOTE3ODUzLCAxMDkwLCAxMjA2NzksIDEyODM1NiwgMTE2NjUsIDc0MTMzLCA0NTU4LCA2NTY4NSwgOTUyMywgMCwgMCwgCisgICAgNzg2ODEsIDExNTEzLCAwLCA2MTU3LCA2Mzc3NSwgNjM3NzQsIDYzNzczLCAxMzE5MSwgMTIxNzAsIDM1MDAsIDMxMzksIDAsIAorICAgIDMxNzAsIDEyNDg1LCAwLCAxMDg3MiwgNzgyNzEsIDEzMDA2LCA2NDQzMywgMCwgMCwgOTQxLCAwLCAwLCAwLCA2NTU0MSwgCisgICAgMTEwNjMsIDAsIDgyMjgsIDAsIDQyMDY1LCAwLCAwLCA5NDAzOSwgMCwgOTI0NTUsIDczODYsIDAsIDY0NDQ0LCAwLCAKKyAgICAxMTk4NjMsIDQzNjAzLCA5NDA3NSwgNjUzOTcsIDI4OCwgMCwgMCwgMCwgMTAwMjUsIDY5OTE1LCAyOTE4LCAwLCA2NTMwMCwgCisgICAgMTE5ODcxLCA5ODgzLCA2NDcyNiwgMjc5MCwgNjUzOTUsIDM3OTMsIDAsIDEyNzgyOSwgNjUzOTMsIDAsIDc0MTM4LCAwLCAwLCAKKyAgICAwLCA3NDEzOSwgOTI3MTIsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgMCwgNjUzOTYsIDAsIDY1ODEzLCAxMzI1NiwgMTI4MiwgCisgICAgMTIwNzcxLCAwLCAwLCAxMDg4OCwgOTgzNjA0LCA2NTI0MiwgMCwgMzMzMCwgMCwgMCwgOTgzOTY1LCAwLCAwLCA3NDI1OSwgCisgICAgMzMwNCwgNDI3NTMsIDAsIDAsIDAsIDE2MjcsIDAsIDAsIDAsIDUzNzEsIDEzMTE2LCAwLCAxODI2LCAxMTg3OTQsIDAsIAorICAgIDQzMDk0LCA3MDAyMywgNDM2NTAsIDk0MDM3LCAwLCA5MDM1LCAwLCAwLCAxMjgwMDUsIDAsIDkyMjA3LCA2ODEyNSwgMCwgCisgICAgMTY0LCAwLCA5NDA2NywgOTQwMDAsIDY5NTgsIDAsIDQzMTE2LCAwLCA3MDAxOSwgMTMyNDUsIDAsIDAsIDEyNzM3NiwgMCwgCisgICAgNzAwMzEsIDEyNzc1NiwgMTI2NjYsIDEzMTc1LCAxMzIwNywgMTIwNDE0LCA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCAwLCAKKyAgICA2NTUwOSwgMCwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAwLCA2MzgwOCwgOTA1NCwgOTcxLCAxMzA2MiwgMCwgMCwgCisgICAgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIDAsIDc4MTQ2LCA5MjYxMSwgMCwgMCwgMCwgMTAwNDUsIDEyODgyLCAKKyAgICAxMzI3NSwgMTI4MTYxLCAxMTA1NywgMCwgMTMyNzYsIDAsIDQxNTI1LCA3ODE1MCwgNzI3MSwgMTE0NDQsIDAsIDAsIDAsIAorICAgIDEyMjI5LCA0MTUyMywgMCwgNDM0MTEsIDczNzUxLCAwLCA2NDgxMywgMCwgMCwgMTA0NzYsIDM4NTgsIDAsIDM5MzIsIAorICAgIDY0OTU4LCAwLCAwLCA3Mzk4OSwgNjgxOTIsIDAsIDY5ODQ3LCAzNjksIDAsIDQxNzg0LCAwLCA2NDE2MywgMCwgMCwgMCwgCisgICAgNjU0NzQsIDQ3OTYsIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAwLCA0MTc4MSwgMTA0ODYsIDQxNDgwLCA0MzAwMiwgOTg5OSwgCisgICAgMCwgMCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgNTc4OCwgODA5MiwgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgCisgICAgMCwgNDM4OCwgMCwgNzQ2LCAxMjA3ODQsIDAsIDAsIDEyMDE4LCA2NTI5NCwgMCwgMCwgMCwgMCwgNDQyMiwgNDcwOCwgCisgICAgMzc5OSwgNzQyOTIsIDExOTM1NywgMCwgNzQ0MzAsIDAsIDExNzAwLCA0Mzc0LCAwLCAxMjgxNzksIDEzNjQsIDAsIDgwMzgsIAorICAgIDAsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCAwLCA2NzM1LCA3Mzk3OSwgMTMxNzQsIDczOTY4LCAxMzIyNSwgMCwgNjk4MDgsIAorICAgIDY1ODM1LCAwLCAyMzY1LCA3ODQxLCAwLCA0Mjg1NSwgMTE4ODU2LCA0Mjg2NiwgMCwgMCwgMCwgNjY0MzgsIDQxNzg1LCAKKyAgICAxMjYxNywgNjQxNzIsIDEzMTczLCA0MzcyLCAxMTkzNTQsIDAsIDk4MzU2OCwgMCwgMCwgOTI0MDIsIDEyODA2MiwgMTI5NjUsIAorICAgIDM4NCwgNjQ1MTIsIDEwNDA0LCAxMDM0MCwgMTE5MzUyLCAxNTU2LCA1Mjc0LCAxMzIxMCwgMTIwMTI1LCAxMDAxNywgOTczMywgCisgICAgNDE3ODcsIDk4MzIzNywgMTI2OTk0LCA0MTM3MywgNzgwMzksIDEyMzAzLCAwLCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgCisgICAgNDEzNzEsIDExNjU2LCAwLCAxMjA3MDMsIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCAxMjgwMTgsIDEwOTYsIAorICAgIDAsIDAsIDQyNjg4LCAxMjQ0MSwgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgMCwgODAzMiwgMTMyNDMsIAorICAgIDEzMjM3LCAxMjcxOSwgMTI2NjQ2LCAxMTkxMDEsIDAsIDY0ODg0LCAxMTk4NzIsIDExOTM0NSwgODU5NywgMCwgMCwgOTg2NCwgCisgICAgMCwgMTIwNzg1LCAxMTk4NzQsIDk0MTA3LCAxMzE5NSwgNDE0NTIsIDY0OTYxLCA3NzIyLCAwLCAxMDQ1OSwgMTE5ODc4LCAwLCAKKyAgICAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIDQxNTMzLCA2NjMzNywgMCwgOTIxODQsIDAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIAorICAgIDczODQ5LCAwLCA0MzYzOCwgNzg1MzcsIDEyODI4NywgNjI2MSwgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCAKKyAgICA5ODIsIDI3NTYsIDEzMjkyLCAxMzIwNiwgMTI4ODI4LCAwLCAyOTI1LCA3MzgwOSwgMTMwNTYsIDEyNzU1OSwgMTMyMTIsIAorICAgIDQzMjM4LCAwLCAxMzE5MCwgMTMxODcsIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAwLCA1MjQyLCAxMTkxNzksIDY0NDc2LCAKKyAgICAxNjk0LCA4MjE2LCA3MTM2OSwgNjc3MCwgNDMzMzEsIDAsIDY1NjIwLCA5ODM3MTksIDQzNTQ0LCAxMjY0NjYsIDAsIAorICAgIDQxNDQ0LCA2NTYyMSwgNjk5NTUsIDkxOTcsIDUyNDYsIDExOTEwNiwgMTMxODUsIDk3MDksIDEyMDMyMywgMTIwMzIyLCAKKyAgICAxMjMxNCwgNjU2MTYsIDUyMzgsIDExOTMzMywgMCwgMTE5MzM3LCA1MjM2LCA0MDk3OSwgMCwgNzQyMDEsIDgyODYsIAorICAgIDEyODUzNywgMzkzNiwgMTE5MzMxLCAxMTY5OSwgNDEzNDcsIDEyNzI0OSwgMTMyMzUsIDg4NDIsIDQxMjQ4LCAwLCA0Mzc5LCAKKyAgICAxMzIzOSwgMTI2OTIsIDc5NjksIDEyNzI2NiwgNzIxOSwgMTI3MjUwLCAxMjgyNTEsIDEyMDUwOSwgMCwgNjYyMjQsIDczNCwgCisgICAgMjk3OSwgMTIwMzAzLCA2NTYxOSwgOTg3MiwgOTU3LCA2NDkyMSwgMTg0NiwgNjY2MzEsIDQxNDc3LCAxMTkyNTYsIAorICAgIDEyMDMxMCwgNzQ1MTEsIDQxNzcwLCAxNjcwLCA2NDQyLCAxMjAzMTcsIDQyNDQ2LCA1Mzc5LCAxMjAzMTgsIDQxMTYzLCAKKyAgICA3NDgzMiwgMTIwMzE1LCAxMjAzMTQsIDExNTA2LCAwLCA0Mjg0MSwgMTMyNjcsIDAsIDAsIDQxNzc1LCAwLCA3MTMwLCAKKyAgICA0MTc3MywgMCwgMTA2NjMsIDAsIDAsIDAsIDYxNTEsIDEyMTEwLCA0MjY3MywgNjU1NzIsIDY1MjkzLCA2NTI1MCwgMTMyNjUsIAorICAgIDEzMjY0LCA2NDUxOCwgMCwgNjEwMCwgMCwgOTI2NDcsIDU4MDgsIDY1OTIyLCAwLCAxMjk2NywgNjYwNDEsIDU2MTIsIAorICAgIDQ1ODMsIDAsIDAsIDY4MDk3LCA2NDU3NSwgMTI2NjM3LCAxMTk2NSwgMCwgNjgzNTgsIDAsIDY5Nzg5LCAwLCA5MjI2MCwgCisgICAgNjgxMDIsIDk2OTgsIDc4MTQsIDc0NDc2LCAxMTk2NTEsIDEyODUxNCwgMCwgNDE5MjEsIDExODg1OCwgOTc1NiwgNjk4NSwgCisgICAgMTE5MjU4LCA3ODQ5MCwgNzQyMTksIDAsIDAsIDExODk5NywgODAxMiwgNTY3NCwgMTIzNTMsIDAsIDEyMzYxLCA1Njc3LCAKKyAgICA1NTg4LCAwLCA0MTkyNSwgMTI4MTI0LCA0MTkyMCwgNTY3MywgMTIwNTM0LCA1Njc2LCA0MTkyMywgMTI2OTQsIDExODk3OCwgCisgICAgNTY3MiwgMTI5NCwgMCwgNzgwNTksIDAsIDQyNTExLCAxNzI3LCAxMjA3MjUsIDQyNDM2LCAwLCAwLCAwLCA3NDIyMiwgCisgICAgODcxOCwgMzU1MCwgNzM2LCAxMDI2OCwgNDUwNSwgMTAzMTYsIDc0MDkwLCA1ODI2LCA1NTIzMiwgNTgxMywgMCwgMTIwNzEyLCAKKyAgICA1ODQxLCA1ODM3LCA1NTIzNCwgMCwgMzEwNSwgMTI4MjksIDU4MzgsIDU3OTYsIDAsIDExOTU5MiwgNTc5MywgMCwgNTg2NiwgCisgICAgNTc5NywgNDEwMTEsIDU4NjUsIDEyMDA5MSwgNzk1NiwgNTk4LCAwLCA2NDY0OSwgNTgwNiwgNDIzOTgsIDAsIDkwMzcsIAorICAgIDU2NzEsIDEyMDA0MSwgMCwgMCwgMCwgMTI4ODU1LCAwLCA4NDcsIDEyODI0MiwgOTUyOSwgMCwgNjY2NTcsIDY5ODAsIAorICAgIDc4NDgzLCAxMjAwMzUsIDc4NDg0LCA5ODM0ODMsIDAsIDEyMDAzMywgNzg0ODYsIDAsIDAsIDEyMDAzOSwgNDI2ODMsIDAsIAorICAgIDk4MzA1NSwgNzExNCwgMCwgMCwgNDMxOTAsIDY1NDYzLCAxNTU0LCAwLCA0MjYxMSwgNDI1NjMsIDAsIDU2NTEsIDI5MjksIAorICAgIDY3OTIsIDQzMjAxLCAwLCAxOTk2MywgNTY5OCwgMCwgMCwgMCwgMCwgNTY0NCwgMTAyOTIsIDY1NTQ2LCA2OTcyNywgCisgICAgNjgxNDEsIDgzNzIsIDAsIDY1MTE2LCAwLCAxMjAwMjIsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDk0MTAwLCA0MTAxMywgCisgICAgMTA1NjgsIDAsIDk4MzYxOCwgMjg2OSwgMCwgNDEwMTUsIDE5NDY5MiwgMjc4NSwgNDM2NiwgMCwgMTA5NTQsIDQxODAyLCAwLCAKICAgICA0MjYwOCwgNzg0NjksIDk4ODQsIDQ3NTksIDAsIDAsIDEwMjY2LCA0MTM1OSwgMTE3MCwgNDMzNjUsIDY5ODEwLCA3MzkwOCwgCiAgICAgMTYwOSwgOTAyLCAwLCA2MzkzNiwgMTI4ODc1LCAxMTY2MSwgODEyMiwgNTgxOCwgMCwgMCwgMzg2MSwgOTU0MCwgMTEwMjgsIAotICAgIDI1NTQsIDUxNTgsIDU3MTQsIDEyNzAxNSwgMCwgMCwgODA3LCA0MzA3OSwgMCwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIAotICAgIDAsIDQyMTU1LCAwLCA0MTM1NiwgNzQxMTAsIDExODgwMSwgMCwgMCwgODY3NiwgMCwgMCwgMTEwNjYsIDQ1MSwgNjM5NDEsIAotICAgIDU3OTgsIDkzNDksIDQyMDE4LCAxMjc4NTgsIDAsIDAsIDQzNjA5LCA1OTA2LCAxMjA1NTMsIDE0NDAsIDAsIDEyODg1MywgCi0gICAgMTIwMDE2LCA3NDI4MywgMTEwMDUsIDAsIDY2NjU2LCA2NjA0NCwgMCwgMTk0Njk4LCAwLCAwLCA0MzM5MywgMTAwOTQsIDAsIAotICAgIDExNTI5LCAxMDg1NywgMTIwNjQzLCA2NjQzNiwgNjU0NiwgOTMsIDgxMDIsIDAsIDY4NDA1LCAwLCAwLCA4MTcxLCAwLCAKLSAgICAxMTkwOTcsIDEyNzA2NCwgOTE3NTQzLCAzODMsIDcxNTQsIDQxNjU2LCA5MjYzNCwgMCwgMCwgNTE4NywgMCwgMTI3Mjc3LCAKLSAgICAxMTI4NiwgNjg2MjAsIDY0MjE3LCAwLCA1MjMyLCAwLCA0MTAwOSwgMCwgNDEwMDUsIDAsIDAsIDAsIDgyOTIsIDE5NTA3NCwgCi0gICAgNDk4MCwgODg2MCwgNzM5NDcsIDEwMDI4LCA2NTI5MSwgNzA3NiwgMTMxODIsIDE5NDcwNSwgMCwgMCwgMTA2MzEsIDY2MDMxLCAKLSAgICA3OTcyLCAwLCA3ODc4NSwgMCwgNzkwMCwgMCwgMTEzMDksIDc4MzE5LCA0MTk4LCA0MjcyNSwgMCwgNjc2NTYsIDk5OTUsIDAsIAotICAgIDkyNTUyLCAwLCAxMjkzMSwgMCwgNDI2ODQsIDc0Mjg1LCAyMDg4LCAwLCA2NDM2NiwgNjUxNTYsIDg4MTQsIDQyMjM4LCAKLSAgICA3NDc3MSwgMCwgMCwgMTI4MzYsIDAsIDAsIDc0MzQyLCA4NTkzLCAwLCAwLCA2ODQ0NSwgMTMyNTUsIDAsIDAsIDc0NjQsIDAsIAotICAgIDY1ODY1LCAwLCAxOTQ2NTAsIDEyNzE0NCwgMCwgOTM0MiwgMTIwNDY0LCAwLCA2NDUxNiwgMCwgNzg3OTIsIDEwMTI5LCAKLSAgICA0MTAwNywgNzQzNzUsIDAsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIDExOTEzNiwgMCwgMCwgNjk3MjQsIDQwOTkyLCA5MjI2NCwgCi0gICAgMTI3MTUzLCA2ODY1MywgNDM1NTgsIDU1MjIsIDAsIDYxLCAwLCA3NDEwNSwgMzYzMywgMCwgNjUxNjIsIDQxMjM0LCAKLSAgICAxMjA4OSwgNzgyODEsIDk3NzEsIDAsIDEzMjUxLCAxMjg3MDEsIDAsIDYyNjIsIDI3ODQsIDQyNzQzLCAwLCA4MTI2LCAKLSAgICA2NjQ4MywgMCwgMCwgNDQxLCA0MjYyMSwgMCwgMCwgNDEwMDIsIDQwOTk5LCAxMTk2MjMsIDQzMjY2LCA3MTA4LCAxOTQ3NzksIAotICAgIDEwODkwLCA3NDQ4MSwgNjU4MzQsIDgzMjQsIDExOTEwMywgNjQ0MTcsIDc0ODE3LCAxMjc0NjUsIDY0NzM3LCAwLCAwLCAKLSAgICA4OTMwLCA2NjY3OCwgNzQyNDksIDExOTMsIDEwMDU2LCAxODAwLCAxMzI1MywgMTMyNTIsIDc4MjksIDAsIDAsIDc3NDMsIDAsIAotICAgIDAsIDc3OTA0LCA5MjY0MCwgNzc5MDUsIDkwMzQsIDYwMzksIDAsIDEwMDc1LCAwLCA0MTAxOCwgNjU2ODMsIDEwMzM4LCAKLSAgICA2NjQ2OSwgMCwgMCwgMCwgNDI4MTUsIDAsIDQxOTY2LCAwLCAwLCAwLCAxMTc5MiwgNDMwNjQsIDQxMDI1LCA5MTEsIDc1MzksIAotICAgIDAsIDAsIDEyMDMzOSwgNjUxNTksIDY0MzkwLCAwLCAwLCA1NTIwLCAxMTY2MiwgMCwgNjUzMzAsIDQyODEyLCAwLCAwLCAKLSAgICAxMjMyNiwgMCwgMCwgNDI4MDgsIDEyODMzNywgOTM0OCwgNjQ5MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNzU4NCwgNDM3MDIsIAotICAgIDAsIDU4NTcsIDY1MzQyLCA5MjcyNywgMTE5MTIwLCAxMjAwNzksIDg2NDQsIDAsIDAsIDAsIDc0Mjk2LCA0MTkwOSwgMCwgCi0gICAgMTIwMzMyLCAyNzkxLCA2OTY2MywgMTg5MSwgNjk4MjQsIDAsIDQxOTA3LCA2NjY0NywgMTE4OTM5LCA4NzYxLCAxMjk0MiwgCi0gICAgNTc0OCwgMCwgMTA3NzMsIDAsIDAsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCA4NTIwLCAxMzE0NiwgMTI3MTg1LCAKLSAgICA2MzkzMSwgMCwgNjU5MDIsIDI4ODIsIDAsIDAsIDEyODQzLCA0NTIwLCAxMjAzNDUsIDkyNDU5LCAwLCAwLCAwLCA3Mzg2MCwgCi0gICAgMCwgMCwgNjQzNDUsIDAsIDkyMDEsIDEyODMxNCwgMTk0OTQwLCAwLCAwLCA0MzY3OSwgOTE3NTg1LCA2NTExNywgOTIyNzAsIAotICAgIDAsIDEwNDI3LCAwLCAzODQ0LCAxMjA2NzUsIDk3NTUsIDExMTAsIDY2MTIsIDEyMjIyLCAwLCAxMjg3ODksIDAsIDAsIDc4MywgCi0gICAgMTk0OTM1LCAwLCAwLCAwLCAxOTQ3MjAsIDY1MDU2LCAzNjIwLCAwLCA2ODM3OCwgNDU1NiwgMCwgMCwgMTk0OTMzLCAKLSAgICA3NDI1MCwgMCwgNjc2NTcsIDEwNTEwLCA0MzgyLCA2NjQ4MiwgMCwgMCwgMTI3NTI3LCA5MTc3LCA4OTAyLCAwLCA5ODM5LCAKLSAgICAwLCAxMjg5MSwgMCwgMCwgNjM5OTksIDIwMTYsIDQxOTE3LCA5Nzg4LCA2MzkyOCwgMCwgMTg2MiwgNjU4MDAsIDkxNTUsIAotICAgIDY2NjIzLCA5Nzg2LCA2NTA4MiwgNDE5MTksIDg1NzksIDQxOTE0LCA3OTgxLCAwLCA2NjAxNywgNDUwOCwgNjQ4ODMsIAotICAgIDkyNDU2LCA5MjUyMiwgMTI3ODE0LCAwLCA2NDU5MiwgNzQyNzYsIDEyMDA4MCwgNjc4NCwgNzg3ODgsIDY4MTgxLCAwLCAwLCAKLSAgICAwLCAxMjc1MzQsIDEyMTQ3LCA5MDI0LCA2NjM3OCwgNjY0NzIsIDAsIDY0Mjg5LCA2NTI4OSwgNzgxNTEsIDY2NjU4LCAKLSAgICAxOTQ5MjksIDY0NTA5LCA3ODE1MiwgMCwgMCwgMTEwNTEsIDAsIDAsIDExMzU1LCA2NTg4NSwgMCwgMTI4MzEwLCA0MTIxNCwgCi0gICAgMCwgMTIyOTksIDAsIDc1MDAsIDQ1MDYsIDc3NzMsIDAsIDAsIDk5NjMsIDY4NjQ5LCAwLCA0MDQwLCAxMjA1NzAsIDYxNjcsIAotICAgIDAsIDYzOTIyLCA2NTk0LCAwLCAwLCAwLCAzNjI0LCA0MzAzNiwgMCwgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgCi0gICAgNDE5NTUsIDAsIDYzOTkzLCAxMDQ0MCwgOTYxMSwgMCwgNjgwMywgMCwgNzczOCwgNjM5ODYsIDExNDQ2LCA2Mzk4NCwgCi0gICAgOTI2NDEsIDM0MzUsIDc4MTY0LCA0MzgxNCwgNDM4MTAsIDcwMjksIDY0MjU4LCA0MTI5MiwgMTE4ODk4LCAxMjc0OCwgCi0gICAgNDI3NDIsIDk1MTcsIDExNTE4LCAwLCA3ODc5MCwgMCwgMTk0Nzc3LCA2Mzk1NiwgNDI0NTgsIDYzOTU0LCA2Mzk1MywgCi0gICAgNjM5NjAsIDk1OTEsIDQ1MTYsIDEwMjE3LCA2ODM3MCwgMTE0NjksIDY5Njk3LCA0MjMwNiwgMjcyMywgMTE4OTQ3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMTM5NywgMjg4MCwgMCwgMCwgMjg3MiwgMCwgMCwgMzQ5OCwgNDM3OCwgOTE3NTM5LCA0MjcwLCAwLCAKLSAgICA2NTU1MSwgNjgyMDUsIDY2MzMsIDQzMzg3LCAwLCA1MjMwLCAwLCAwLCAwLCAwLCAwLCA4MTYxLCAzOTMsIDEyMDEzLCAwLCAKLSAgICAwLCAwLCA0MTUsIDYzOTY0LCA2Mzk2MywgNDIzNDUsIDAsIDUxODMsIDE4NzcsIDQyNDk4LCAwLCAyOTI3LCAwLCA2Mzk2MSwgCi0gICAgNDQ3MiwgMCwgMCwgNzgxNTksIDY5Njk5LCA5MTc5MzYsIDQyMzQwLCA0NzU2LCAxMjgwNzgsIDcwODEsIDEwNzMwLCA3NjkxLCAKLSAgICAxMDMzMSwgNjM4MzAsIDExOTYyNSwgMTk0OTQ1LCA0MjEwMywgODYyOCwgOTgxMywgMCwgNDI0NTMsIDE2MDQsIDk1NjUsIAotICAgIDEwNTM5LCA2OTcwMSwgNjU3NjQsIDQxNDE1LCA2NTc2NywgMCwgODQ1NywgNDIzMDEsIDExMzcyLCA2NDg3MywgMTE5OTIsIAotICAgIDAsIDAsIDYzOTgwLCAxMTgwMSwgMzYyMiwgMCwgNjQzMzYsIDEyMDE3LCAxMDQ2MywgNjM5ODEsIDQ5NjcsIDY0MTg5LCAKLSAgICAxOTY2LCA0MzYyOCwgMCwgMCwgMCwgMCwgNjM5NzEsIDQzNDcsIDQ0MTYsIDQyMDk4LCAxMTAwOSwgMTA2OTQsIDYzOTczLCAKLSAgICA0MDIsIDAsIDEzMTQ3LCAwLCA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAwLCA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCAwLCAKLSAgICAxMTMwMiwgNjI1OSwgNDMzOTUsIDAsIDAsIDE5NDY3MCwgMCwgOTIzNTEsIDAsIDc0NDI1LCAxMTI5OSwgMTU2MSwgMCwgCi0gICAgOTIzNTksIDY0OTQyLCAwLCAxOTQ3MzMsIDAsIDE5NDczMiwgMCwgNzQzMDEsIDAsIDExMjgwLCAwLCA2OTc4NCwgNzQwNjAsIAotICAgIDAsIDAsIDExOTY2NCwgNTE0NSwgMTI0ODYsIDY1MDE4LCA2NjUxNiwgNTQwOSwgMTI3Mzc5LCAxOTQ2NjksIDc0MDIsIAotICAgIDUzOTksIDk2ODUsIDc0MDg5LCA3OTUyLCA1NDAxLCAwLCA2NjYxNiwgNjg0MjEsIDAsIDAsIDU0MDUsIDEyNzg3NSwgCi0gICAgNjQ4NjYsIDAsIDExOTU4MywgMTI4MzQ1LCA3ODc4NCwgNzQyNDgsIDExMzMwLCAxOTQ3MjMsIDY0NjkwLCAzMjU0LCAwLCAwLCAKLSAgICAwLCA0MjM5MCwgNDM2NzgsIDE5NDcyNSwgMCwgNjUwNzcsIDAsIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIAotICAgIDExNTIwLCA1NjExLCAwLCAzMzc3LCAwLCAwLCAwLCAwLCA3ODIyOCwgMCwgMCwgNDI2OTEsIDkxNzg4NiwgMTI3MTk4LCAKLSAgICA3NDc2NywgMCwgMTI3MDc1LCAxMzc5LCAyNDYsIDAsIDAsIDM3ODgsIDAsIDExMDQxLCA5MjU0OSwgNjYzMDQsIDAsIDAsIAotICAgIDg5MTcsIDQyNDAzLCAzMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNjU2LCAwLCA2NTIxNCwgMTE5MjQyLCA0MjU2NywgCi0gICAgOTIyMTcsIDEzMTYzLCAwLCAxMjA4MzEsIDc0NTk3LCAzMTgyLCAwLCAwLCAwLCA2NTAzNCwgNjU4ODksIDQyMTY5LCA0NzU1LCAKLSAgICA3NDI0NCwgMCwgMTE0NDMsIDAsIDY2MzE5LCA3NDU5OCwgNjA4LCA2MDAsIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgCi0gICAgNzQ1MTAsIDAsIDc0NDg1LCA0MjQ0MiwgNjU0NzAsIDAsIDY0MjAyLCAxMzE2MCwgNzc1OSwgNDI0ODIsIDQ4NSwgMTI4MDA2LCAKLSAgICAwLCA5ODI4LCAwLCAwLCA0MjI4MCwgMCwgOTM1MSwgNzc3OCwgNjQzNzksIDc0OTYsIDQyNDMxLCA2OTE2LCAxMjA4LCAwLCAKLSAgICAxMTk2MzEsIDExMDAyLCA0MjQ3MCwgMCwgMTE4OTQ2LCAwLCAwLCA3NDA0MSwgMCwgMTIwNjMzLCA0MzUzOSwgNTQxMSwgCi0gICAgNDIxOTYsIDAsIDAsIDAsIDkxNTAsIDAsIDQyMzkzLCAxMzA4NiwgMTMxMCwgMTk0Njg3LCA5MzM3LCAxMjA1MiwgMTA2NDMsIAotICAgIDU1MjcxLCAwLCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgNjU2MTEsIDAsIDAsIDE5NDc1NiwgNzQzMTAsIAorICAgIDI1NTQsIDUxNTgsIDU3MTQsIDIyMTMsIDAsIDAsIDgwNywgNDMwNzksIDAsIDc4NDc1LCA5NzYsIDU1MTEsIDY0NTUzLCAwLCAKKyAgICA0MjE1NSwgMCwgNDEzNTYsIDc0MTEwLCAxMTg4MDEsIDEyNjYxNCwgMCwgODY3NiwgOTgzMjgzLCAwLCA1NTgyLCA0NTEsIAorICAgIDYzOTQxLCA1Nzk4LCA5MzQ5LCA0MjAxOCwgMTI3ODU4LCAwLCAwLCA0MzYwOSwgNTkwNiwgMTIwNTUzLCAxNDQwLCAwLCAKKyAgICAxMjg4NTMsIDEyMDAxNiwgNzQyODMsIDExMDA1LCAwLCA2NjY1NiwgNjYwNDQsIDAsIDE5NDY5OCwgMCwgMCwgNDMzOTMsIAorICAgIDEwMDk0LCAwLCAxMTUyOSwgMTA4NTcsIDEyMDY0MywgNjY0MzYsIDY1NDYsIDkzLCA4MTAyLCAwLCA2ODQwNSwgMCwgMCwgCisgICAgODE3MSwgMCwgMTE5MDk3LCAxMjcwNjQsIDkxNzU0MywgMzgzLCA3MTU0LCA0MTY1NiwgOTI2MzQsIDk0MDQwLCAwLCA1MTg3LCAKKyAgICA3MTI5NiwgMTI3Mjc3LCAxMTI4NiwgNjg2MjAsIDY0MjE3LCAwLCA1MjMyLCAwLCA0MTAwOSwgMCwgNDEwMDUsIDAsIDAsIAorICAgIDk4MzgxOCwgODI5MiwgMTk1MDc0LCA0OTgwLCA4ODYwLCA3Mzk0NywgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgCisgICAgMTk0NzA1LCAwLCAwLCAxMDYzMSwgNjYwMzEsIDc5NzIsIDAsIDc4Nzg1LCAwLCA3OTAwLCAwLCAxMTMwOSwgMzgwNiwgCisgICAgNDE5OCwgNDI3MjUsIDAsIDY3NjU2LCA5OTk1LCAwLCA5MjU1MiwgMCwgMTI5MzEsIDAsIDQyNjg0LCA3NDI4NSwgMjA4OCwgCisgICAgNjQyMTMsIDY0MzY2LCA2NTE1NiwgODgxNCwgNDIyMzgsIDc0NzcxLCAwLCAwLCAxMjgzNiwgMCwgMCwgNzQzNDIsIDg1OTMsIAorICAgIDAsIDAsIDY4NDQ1LCAxMzI1NSwgMCwgMCwgNzQ2NCwgMCwgNjU4NjUsIDAsIDE5NDY1MCwgMTI3MTQ0LCAwLCA5MzQyLCAKKyAgICAxMjA0NjQsIDAsIDY0NTE2LCAwLCA3ODc5MiwgMTAxMjksIDQxMDA3LCA3NDM3NSwgMCwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgCisgICAgMTE5MTM2LCAwLCAwLCA2OTcyNCwgNDA5OTIsIDkyMjY0LCAxMjcxNTMsIDY4NjUzLCA0MzU1OCwgNTUyMiwgMCwgNjEsIDAsIAorICAgIDc0MTA1LCAzNjMzLCA5ODM4OTEsIDY1MTYyLCA0MTIzNCwgMTIwODksIDc4MjgxLCA5NzcxLCA5ODM4OTYsIDEzMjUxLCAKKyAgICAxMjg3MDEsIDAsIDYyNjIsIDI3ODQsIDQyNzQzLCAwLCA4MTI2LCA2NjQ4MywgMCwgMCwgNDQxLCA0MjYyMSwgMCwgMCwgCisgICAgNDEwMDIsIDQwOTk5LCAxMTk2MjMsIDQzMjY2LCA3MTA4LCAxOTQ3NzksIDEwODkwLCA3NDQ4MSwgNjU4MzQsIDgzMjQsIAorICAgIDExOTEwMywgNjQ0MTcsIDc0ODE3LCAxMjc0NjUsIDY0NzM3LCAwLCA5ODM2NTAsIDg5MzAsIDY2Njc4LCA3NDI0OSwgMTE5MywgCisgICAgMTAwNTYsIDE4MDAsIDEzMjUzLCAxMzI1MiwgNzgyOSwgMCwgMCwgNzc0MywgMCwgMCwgNzc5MDQsIDkyNjQwLCA3NzkwNSwgCisgICAgOTAzNCwgNjAzOSwgMCwgMTAwNzUsIDAsIDQxMDE4LCA2NTY4MywgMTAzMzgsIDY2NDY5LCAwLCAwLCAwLCA0MjgxNSwgMCwgCisgICAgNDE5NjYsIDAsIDEyNzQ3MSwgMCwgMTE3OTIsIDQzMDY0LCA0MTAyNSwgOTExLCA3NTM5LCAwLCAwLCAxMjAzMzksIDY1MTU5LCAKKyAgICA2NDM5MCwgMCwgMCwgNTUyMCwgMTE2NjIsIDAsIDY1MzMwLCA0MjgxMiwgMCwgMCwgMTIzMjYsIDk4Mzg0NywgMCwgNDI4MDgsIAorICAgIDEyODMzNywgOTM0OCwgNjQ5MDEsIDk4Mzg1MiwgMCwgMCwgMCwgMCwgMCwgOTE3NTg0LCA0MzcwMiwgOTgzNTc2LCA1ODU3LCAKKyAgICA2NTM0MiwgOTI3MjcsIDExOTEyMCwgMTIwMDc5LCA4NjQ0LCAwLCAwLCAwLCA3NDI5NiwgNDE5MDksIDAsIDEyMDMzMiwgCisgICAgMjc5MSwgNjk2NjMsIDE4OTEsIDY5ODI0LCAwLCA0MTkwNywgNjY2NDcsIDExODkzOSwgODc2MSwgMTI5NDIsIDU3NDgsIDAsIAorICAgIDEwNzczLCAwLCAwLCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgODUyMCwgMTMxNDYsIDEyNzE4NSwgNjM5MzEsIDAsIAorICAgIDY1OTAyLCAyODgyLCAwLCAwLCAxMjg0MywgNDUyMCwgMTIwMzQ1LCA5MjQ1OSwgMCwgOTgzNjUxLCAwLCA3Mzg2MCwgMCwgMCwgCisgICAgNjQzNDUsIDAsIDkyMDEsIDEyODMxNCwgMTk0OTQwLCAwLCAwLCA0MzY3OSwgOTE3NTg1LCA2NTExNywgOTIyNzAsIDAsIAorICAgIDEwNDI3LCAwLCAzODQ0LCAxMjA2NzUsIDk3NTUsIDExMTAsIDY2MTIsIDEyMjIyLCAwLCAxMjg3ODksIDAsIDAsIDc4MywgCisgICAgMTk0OTM1LCAwLCAwLCA5ODMwNjQsIDE5NDcyMCwgNjUwNTYsIDM2MjAsIDQxMTgwLCA2ODM3OCwgNDU1NiwgMCwgMCwgCisgICAgMTk0OTMzLCA3NDI1MCwgMCwgNjc2NTcsIDEwNTEwLCA0MzgyLCA2NjQ4MiwgMCwgMCwgMTI3NTI3LCA5MTc3LCA4OTAyLCAKKyAgICA5Mzk1OCwgOTgzOSwgMCwgMTI4OTEsIDk4Mzc0NiwgOTgzNjI3LCA2Mzk5OSwgMjAxNiwgNDE5MTcsIDk3ODgsIDYzOTI4LCAKKyAgICAwLCAxODYyLCA2NTgwMCwgOTE1NSwgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgODU3OSwgNDE5MTQsIDc5ODEsIDAsIAorICAgIDY2MDE3LCA0NTA4LCA2NDg4MywgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDAsIDY0NTkyLCA3NDI3NiwgMTIwMDgwLCA2Nzg0LCAKKyAgICA3ODc4OCwgNjgxODEsIDAsIDAsIDAsIDEyNzUzNCwgMTIxNDcsIDkwMjQsIDY2Mzc4LCA2NjQ3MiwgOTgzOTIwLCA2NDI4OSwgCisgICAgNjUyODksIDc4MTUxLCA2NjY1OCwgMTk0OTI5LCA2NDUwOSwgNzgxNTIsIDAsIDEyNjUwNSwgMTEwNTEsIDk4MzI4OCwgMCwgCisgICAgMTEzNTUsIDY1ODg1LCAwLCAxMjgzMTAsIDQxMjE0LCAwLCAxMjI5OSwgMCwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgCisgICAgOTk2MywgNjg2NDksIDEyNjYwOSwgNDA0MCwgMTIwNTcwLCA2MTY3LCAwLCA2MzkyMiwgNjU5NCwgOTgzNzMxLCAwLCAwLCAKKyAgICAzNjI0LCA0MzAzNiwgMCwgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgNDE5NTUsIDAsIDYzOTkzLCAxMDQ0MCwgOTYxMSwgCisgICAgNjU2MDUsIDY4MDMsIDAsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIDkyNjQxLCAzNDM1LCA3ODE2NCwgNDM4MTQsIAorICAgIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIDQyNzQyLCA5NTE3LCAxMTUxOCwgMCwgNzg3OTAsIAorICAgIDAsIDY3OTkzLCA2Mzk1NiwgNDI0NTgsIDYzOTU0LCA2Mzk1MywgNjM5NjAsIDk1OTEsIDQ1MTYsIDEwMjE3LCA2ODM3MCwgCisgICAgMTE0NjksIDY5Njk3LCA0MjMwNiwgMjcyMywgMTE4OTQ3LCAwLCAwLCAwLCAwLCAwLCAxMTM5NywgMjg4MCwgMCwgMCwgCisgICAgMjg3MiwgMCwgMCwgMzQ5OCwgNDM3OCwgOTE3NTM5LCA0MjcwLCAwLCA2NTU1MSwgNjgyMDUsIDY2MzMsIDQzMzg3LCAwLCAKKyAgICA1MjMwLCAwLCAwLCAwLCAwLCAwLCA4MTYxLCAzOTMsIDEyMDEzLCAwLCAwLCAxMjY0NzksIDQxNSwgNjM5NjQsIDYzOTYzLCAKKyAgICA0MjM0NSwgOTIzMTAsIDUxODMsIDE4NzcsIDQyNDk4LCAwLCAyOTI3LCAwLCA2Mzk2MSwgNDQ3MiwgMCwgMCwgNzgxNTksIAorICAgIDY5Njk5LCA5MTc5MzYsIDQyMzQwLCA0NzU2LCAxMjgwNzgsIDcwODEsIDEwNzMwLCA3NjkxLCAxMDMzMSwgNjM4MzAsIAorICAgIDExOTYyNSwgNDI5MjIsIDQyMTAzLCA4NjI4LCA5ODEzLCAwLCA0MjQ1MywgMTYwNCwgOTU2NSwgMTA1MzksIDY5NzAxLCAKKyAgICA2NTc2NCwgNDE0MTUsIDY1NzY3LCAwLCA4NDU3LCA0MjMwMSwgMTEzNzIsIDY0ODczLCAxMTk5MiwgMCwgMCwgNjM5ODAsIAorICAgIDExODAxLCAzNjIyLCA5ODMxMjQsIDY0MzM2LCAxMjAxNywgMTA0NjMsIDYzOTgxLCA0OTY3LCA2NDE4OSwgMTk2NiwgCisgICAgNDM2MjgsIDAsIDk4MzI4NCwgMCwgMCwgNjM5NzEsIDQzNDcsIDQ0MTYsIDQyMDk4LCAxMTAwOSwgMTA2OTQsIDYzOTczLCAKKyAgICA0MDIsIDAsIDEzMTQ3LCAxMjg2OTIsIDQyMTAwLCA2NDY0NiwgMTMyMjgsIDAsIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIAorICAgIDAsIDExMzAyLCA2MjU5LCA0MzM5NSwgMCwgMCwgMTk0NjcwLCAwLCA5MjM1MSwgMCwgNzQ0MjUsIDExMjk5LCAxNTYxLCAwLCAKKyAgICA5MjM1OSwgNjQ5NDIsIDk4MzU1OSwgMTk0NzMzLCA5ODM2NzcsIDE5NDczMiwgMCwgNzQzMDEsIDAsIDExMjgwLCAwLCAKKyAgICA2OTc4NCwgNzQwNjAsIDAsIDAsIDExOTY2NCwgNTE0NSwgMTI0ODYsIDY1MDE4LCA2NjUxNiwgNTQwOSwgMTI3Mzc5LCAKKyAgICAxOTQ2NjksIDc0MDIsIDUzOTksIDk2ODUsIDc0MDg5LCA3OTUyLCA1NDAxLCAwLCA2NjYxNiwgNjg0MjEsIDk4MzkxMCwgMCwgCisgICAgNTQwNSwgMTI3ODc1LCA2NDg2NiwgMCwgMTE5NTgzLCAxMjgzNDUsIDc4Nzg0LCA3NDI0OCwgMTEzMzAsIDE5NDcyMywgCisgICAgNjQ2OTAsIDMyNTQsIDAsIDAsIDEyODIwNywgNDIzOTAsIDQzNjc4LCAxOTQ3MjUsIDk4MzkwMCwgNjUwNzcsIDAsIDYzODgsIAorICAgIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIDExNTIwLCA1NjExLCAwLCAzMzc3LCAwLCAwLCAwLCAwLCA3ODIyOCwgMCwgCisgICAgOTgzNzUzLCA0MjY5MSwgOTE3ODg2LCAxMjcxOTgsIDc0NzY3LCAwLCAxMjcwNzUsIDEzNzksIDI0NiwgMCwgOTgzNzUyLCAKKyAgICAzNzg4LCA5ODMxMDYsIDExMDQxLCA5MjU0OSwgNjYzMDQsIDAsIDAsIDg5MTcsIDQyNDAzLCAzMDEsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk4MzY4OCwgMTA2NTYsIDAsIDY1MjE0LCAxMTkyNDIsIDQyNTY3LCA5MjIxNywgMTMxNjMsIDk4MzIwMiwgMTIwODMxLCAKKyAgICA3NDU5NywgMzE4MiwgMCwgMCwgMCwgNjUwMzQsIDY1ODg5LCA0MjE2OSwgNDc1NSwgNzQyNDQsIDE5NDYyMSwgMTE0NDMsIDAsIAorICAgIDY2MzE5LCA3NDU5OCwgNjA4LCA2MDAsIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDAsIDc0NDg1LCAKKyAgICA0MjQ0MiwgNjU0NzAsIDk4Mzg5OCwgNjQyMDIsIDEzMTYwLCA3NzU5LCA0MjQ4MiwgNDg1LCAxMjgwMDYsIDAsIDk4MjgsIDAsIAorICAgIDAsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIDExOTYzMSwgCisgICAgMTEwMDIsIDQyNDcwLCAwLCAxMTg5NDYsIDAsIDAsIDc0MDQxLCAwLCA3MDA0NSwgNDM1MzksIDU0MTEsIDQyMTk2LCAwLCAwLCAKKyAgICAwLCA5MTUwLCAwLCA0MjM5MywgMTMwODYsIDEzMTAsIDE5NDY4NywgOTMzNywgMTIwNTIsIDEwNjQzLCA1NTI3MSwgCisgICAgOTgzMTc5LCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgNjU2MTEsIDAsIDAsIDE5NDc1NiwgNzQzMTAsIAogICAgIDY1NTQsIDAsIDExOTE0LCA1NDUyLCAwLCAwLCAwLCAwLCAwLCAxOTQ2ODEsIDkyNTYwLCAyNzEzLCAwLCA5NjUwLCA0MzMzMCwgCiAgICAgMCwgMTk0Njc1LCAxNDA2LCAwLCAwLCA5MjY1OSwgMCwgNjgyMjMsIDQxNDMsIDE5NDY3NywgMCwgNjU3NDgsIDQxNDEsIAogICAgIDk2ODIsIDY1Mjg3LCAxNTA4LCAxMjcwMTMsIDg3NzksIDEwNTY5LCA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgCiAgICAgNDE0NSwgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIDU1MjUwLCA5MTg1LCA5NTUwLCAwLCA0MzQwMywgMCwgCi0gICAgMCwgMCwgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDAsIDEyOTU1LCAxMDU5NiwgMjg4OCwgMCwgMCwgMCwgOTY1NywgCi0gICAgOTAxOSwgMTk0NzY2LCAwLCAyODc4LCA1MzkwLCAwLCAxOTQ5NjEsIDAsIDY4Njc5LCA0MzU1MiwgNzUwMSwgNjMyOCwgMCwgCi0gICAgMTA0MjksIDEwMzY1LCAwLCAwLCA0MTk0NiwgNzUwMywgNTIzNSwgODAzLCA2ODM4MSwgMCwgMCwgODk4NiwgMCwgMTA2MzIsIAotICAgIDExOTM0LCAxMTQ1MiwgMTMzMiwgMCwgMCwgMCwgMCwgMTE4ODg3LCAxNzkxLCA1MTkxLCA5Mjg4LCA2NDgyMiwgMjg5MiwgMCwgCi0gICAgNDMzOTQsIDU1NSwgMCwgMCwgNjY2NDYsIDAsIDExOTAwMiwgMTMxNTEsIDc0NTEyLCA3Mjg5LCA3NDA1NSwgMCwgODg1NCwgCi0gICAgNjQxNjIsIDU4NTgsIDQxOTI3LCAxMDU4MiwgMCwgMTc4NCwgMTM2MSwgMTk1MDQ3LCAwLCA3OTA1LCAwLCA2NDg2OCwgCi0gICAgMTI4ODEzLCAxMzE1OCwgOTIxNjYsIDcyMTEsIDAsIDkzNzEsIDczOTczLCAwLCA2ODI4LCAxNjI1LCA5MjMwMiwgMCwgCi0gICAgMTM0MiwgNjg0NDAsIDY0MTcxLCAwLCAxMDkwMywgMCwgMCwgMCwgMCwgMCwgNDQ4MiwgNDE2MDYsIDAsIDEyODU2OSwgMCwgCi0gICAgMCwgNjQzODEsIDAsIDAsIDAsIDQyMjQ1LCAwLCA0MTk3MiwgMCwgNDQ0LCAwLCA5MTI3LCA2NjY4NywgNjY2MTksIDAsIAotICAgIDc4MDI1LCAwLCAxMTM0OSwgNDA5OTEsIDAsIDAsIDExOTU5OSwgMTIwODMwLCAwLCAxMTk3LCAxMjgyODIsIDExNDksIAotICAgIDE5NDk3MCwgMCwgMCwgNDA5OTAsIDAsIDAsIDM0OTIsIDAsIDEyNzk0MiwgMCwgMCwgMCwgMTI4MzgsIDAsIDE5OTQ4LCAwLCAKLSAgICAzMDk5LCAwLCAwLCA0MTA4NywgMCwgMCwgMCwgMTE5MDU5LCAxMjAzNiwgNDEzMDksIDAsIDAsIDgxNTIsIDAsIDY0NDI4LCAKLSAgICAxMjIyNywgMCwgMCwgMTI4MjgsIDEyNzUxMSwgMCwgMCwgMTIwNzA4LCAwLCAwLCAxMDM4NiwgMTE5NTc0LCAwLCAwLCAKLSAgICA5MjY4MCwgMCwgNjgxNTQsIDAsIDE3NDMsIDAsIDAsIDkyMjM5LCA2NTE4NiwgMCwgMCwgOTYwNiwgMCwgMCwgNjQ0MzksIDAsIAotICAgIDAsIDkyNjg2LCAwLCAwLCAxOTQ5NjcsIDAsIDAsIDMzOTUsIDkzNjIsIDEwODc4LCAwLCAwLCA3ODM2MiwgNjQ4MzAsIDAsIAotICAgIDAsIDQxMDkxLCAzNDI2LCAxMzQ0LCA4ODcwLCAwLCAwLCA0NzM1LCAxMjcwMTcsIDYxMTksIDEyODIyLCA0MjY5OSwgMCwgMCwgCi0gICAgNzQ4MTgsIDUzOTYsIDAsIDQyNjM3LCA0MTA4MCwgMCwgMTIwMzksIDEwNTU5LCAwLCAxMTg4OTIsIDAsIDk0NzIsIDAsIAotICAgIDExOTI5LCAwLCA3MTcwLCA5NTk2LCA2MTMwLCAxMjg4MjYsIDQzNjI5LCAxMTU3OSwgMTk0NzQxLCAwLCAxOTQ3NDAsIAotICAgIDEyODY5MSwgOTIxODUsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNywgNDMyMzQsIDY2MDA4LCAxMjYyNywgMCwgCi0gICAgNjg0MTQsIDAsIDQzNjE5LCA0MzM4MiwgMTEzMDAsIDQzMzA0LCA5Njg2LCA1ODkwLCAxMTc3NiwgNzU1OCwgMTI3MTU4LCAKLSAgICA2NTYyNywgMCwgMTA3MTgsIDEzMTU0LCAzNDYxLCA5MTM5LCAwLCAwLCAwLCAwLCA2NTM2NSwgNzM4NzcsIDY1NjI4LCAKLSAgICA3ODAxOSwgMCwgMCwgNDE3MDgsIDEyODYwLCAyNjQxLCAxMjA2OSwgMTA4MzgsIDU0MDMsIDEwMzUyLCA3MzkxNywgMTAwNjEsIAotICAgIDQzMjM3LCAwLCA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCA0MzA3OCwgMTI4MTI1LCAxMTg4MDksIDAsIAotICAgIDEwODk5LCA2NTQ2OSwgMCwgMCwgMCwgMjQxMCwgOTkzLCAwLCAxMjA1ODksIDEyMDY4OSwgNzg2OTMsIDAsIDAsIDcyMzIsIAotICAgIDAsIDExOTI1MywgMCwgNzExMCwgNzQ0NjIsIDIwNjYsIDEwNDg5LCA0MjE2NiwgNDM0NjMsIDEwNjU5LCAzNjAwLCAwLCAKLSAgICA0MjI0LCAxMzM2LCA0MTUxOCwgMCwgMCwgMCwgMCwgNDExMzksIDY0ODIwLCA5MjUzOCwgMTI5NjYsIDQxMTM0LCAwLCAwLCAKLSAgICAwLCAwLCAyNzIsIDQyNjMsIDg3OTMsIDAsIDAsIDQxNTAyLCAwLCA5ODMsIDEyNTQ5LCAwLCAwLCAxMTkwLCA0MTA5LCAKLSAgICAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgOTU0NCwgNDM0ODEsIDAsIDAsIDAsIDIwOTksIDUxMjAsIDI0MDksIAotICAgIDc3OTksIDAsIDc0NDI0LCAwLCAwLCA0NzMxLCAwLCA2NjYyOSwgMCwgMCwgMTI1NSwgNDE0OSwgOTI0NywgMCwgOTkxMywgMCwgCi0gICAgMCwgNjQ5MTQsIDkxNzc4NywgNjUxMDEsIDAsIDExNjk0LCA5MjQ3NSwgMTE2OTAsIDU4MzUsIDEyNzE2NCwgNjY2MjUsIAotICAgIDEwODQyLCA0MTM1NCwgNDIxMjMsIDQzMDk3LCAxMTY4OCwgNjY2MzQsIDEwOTQsIDE5NCwgNjQ2OTIsIDAsIDgxODAsIDAsIAotICAgIDAsIDk5NzIsIDczODY1LCA0NTE5LCA2MTE0LCAxMDg5OCwgNDMwNzIsIDAsIDAsIDEyODg1OCwgMCwgMCwgMTA2OTUsIDAsIAotICAgIDc1NDAsIDAsIDg4MSwgNzg1NywgNjA2NywgNjUxNjQsIDAsIDAsIDAsIDEzMzExLCA2ODQwMywgNDE4NTcsIDY0MzIxLCAKLSAgICA4MzU5LCAwLCAxMjY4OSwgMCwgMTk0NTk0LCAwLCAwLCAwLCA2ODE4MywgMCwgMCwgMTI4NywgNTQzNiwgMCwgMCwgNzQxNDIsIAotICAgIDkyMzI4LCA3NDE1MiwgMTE5MDc4LCA2MDUxLCAxMDQ5NywgNjk2NjgsIDg5ODUsIDEyMTA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNjUyLCAxMDUzNywgMCwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAyNzksIDczNzQ1LCAwLCAwLCAwLCAxNDg5LCAwLCAwLCAwLCAKLSAgICAzODk5LCAxMDA3LCA0MjEyNCwgMCwgNDIxMjIsIDkyMzM3LCAwLCAwLCAxMTk4NSwgMTM0NSwgNzg2MDAsIDAsIDAsIDg5NTYsIAotICAgIDQzMDgzLCAxMTk4MzAsIDQyMTM4LCA3ODYxMCwgMCwgMTIxNTEsIDc4NjA4LCA3ODYwNCwgNzg2MDUsIDYyODUsIDc4NjAzLCAKLSAgICA3ODYxMiwgNzg2MTMsIDY1OTQyLCA0OTIsIDg2ODUsIDAsIDAsIDAsIDc4NjIyLCA0MzcxMiwgMjU4MiwgMTE0NzAsIAotICAgIDY0NTM4LCA3NDQ0LCA3ODYxNSwgNzg2MTYsIDQxNTUwLCAwLCA3MzgzNywgMTE5ODIzLCAyNTI3LCAxMTk4MjQsIDE5NywgCi0gICAgMjc5OSwgOTI1OTQsIDQxOTQ0LCAxMjAyNzYsIDk5MzMsIDAsIDY2NTE1LCA3NjcsIDU1MjQsIDcwMjgsIDAsIDAsIAotICAgIDExOTgyNywgMTE5ODE3LCAxMTk4MjgsIDc4NjMzLCAxMDg5NiwgMCwgMTc5OSwgMTIwNDk3LCA2OTcxLCA3NDMzNiwgCi0gICAgMTI4MzQyLCAwLCA2NTM0MCwgMTE4OTc5LCA0MTU1MSwgMjQzNCwgMCwgMCwgMTIwNTc5LCAwLCA0NjMxLCAwLCAwLCA2NDA3LCAKLSAgICAwLCA2MzM4LCA0MzIxNCwgMCwgNzU3MCwgMCwgMzE5MiwgMCwgODQxNCwgMCwgMCwgMCwgMCwgMCwgOTE2NCwgNjY2MTIsIDAsIAotICAgIDMxNzEsIDY2MjMsIDQ5NjEsIDY4Mzk2LCA4ODYsIDU1MjE2LCA4NjU0LCA3ODgzMiwgOTk5MywgNzQzOTAsIDY0NjAzLCAwLCAKLSAgICA2OTI0MSwgOTU5OSwgNzg2MjksIDQzMDg0LCA3ODYyNywgNzg2MjgsIDc4NjI1LCAyMzk5LCA2OTY5MywgODk5NCwgMTA5NDQsIAotICAgIDQxMjA4LCAwLCA0MTE2OCwgODE3OCwgMCwgMzM2NywgOTIzMzQsIDQyNTEwLCA3ODY0MSwgNzg2MzYsIDY4MDQsIDc4NjM0LCAKLSAgICAxOTQ3LCAwLCAwLCA5MjY4MSwgNDI3NTksIDExMDY4LCAxNzA1LCA5MzMxLCAwLCA3NDc5OCwgOTE4MSwgNjUzNTksIDAsIAotICAgIDgwMTcsIDAsIDY1MDk2LCA2NjcyMCwgMCwgNDM0NzUsIDAsIDQ5MDksIDEyMTI2LCAxMjg2NzMsIDEyMDY5NiwgNDkwNCwgMCwgCisgICAgMCwgMCwgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDk4MzIwMywgMTI5NTUsIDEwNTk2LCAyODg4LCAxOTQ2NDUsIDAsIAorICAgIDAsIDk2NTcsIDkwMTksIDE5NDc2NiwgMCwgMjg3OCwgNTM5MCwgMCwgMTk0OTYxLCAwLCA2ODY3OSwgNDM1NTIsIDc1MDEsIAorICAgIDYzMjgsIDAsIDEwNDI5LCAxMDM2NSwgMCwgMCwgNDE5NDYsIDc1MDMsIDUyMzUsIDgwMywgNjgzODEsIDAsIDAsIDg5ODYsIAorICAgIDEyNjU0MiwgMTA2MzIsIDExOTM0LCAxMTQ1MiwgMTMzMiwgMCwgMCwgMTI2NjQ3LCAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIAorICAgIDkyODgsIDY0ODIyLCAyODkyLCAwLCA0MzM5NCwgNTU1LCAwLCAwLCA2NjY0NiwgMCwgMTE5MDAyLCAxMzE1MSwgNzQ1MTIsIAorICAgIDcyODksIDc0MDU1LCA2NDE2MSwgODg1NCwgNjQxNjIsIDU4NTgsIDQxOTI3LCAxMDU4MiwgMCwgMTc4NCwgMTM2MSwgCisgICAgMTk1MDQ3LCAwLCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAxMzE1OCwgOTIxNjYsIDcyMTEsIDAsIDkzNzEsIDczOTczLCAKKyAgICA5MTc1NTMsIDY4MjgsIDE2MjUsIDkyMzAyLCAwLCAxMzQyLCA2ODQ0MCwgNjQxNzEsIDEyNjcwNCwgMTA5MDMsIDk4MzQ4NiwgCisgICAgMCwgMCwgMCwgMCwgNDQ4MiwgNDE2MDYsIDAsIDEyODU2OSwgOTgzMTEyLCAwLCA2NDM4MSwgMCwgMCwgMTk1MDkwLCAKKyAgICA0MjI0NSwgMTI2NDY3LCA0MTk3MiwgMCwgNDQ0LCAwLCA5MTI3LCA2NjY4NywgNjY2MTksIDEyNjQ4OSwgNzgwMjUsIDAsIAorICAgIDExMzQ5LCA0MDk5MSwgOTE3NTcwLCAwLCAxMTk1OTksIDEyMDgzMCwgMCwgMTE5NywgMTI4MjgyLCAxMTQ5LCAxOTQ5NzAsIAorICAgIDAsIDAsIDQwOTkwLCA0Mzc2NSwgMCwgMzQ5MiwgMCwgMTI3OTQyLCAwLCAwLCAwLCAxMjgzOCwgOTgzOTY5LCAxOTk0OCwgMCwgCisgICAgMzA5OSwgMCwgMCwgNDEwODcsIDAsIDAsIDAsIDExOTA1OSwgMTIwMzYsIDQxMzA5LCAwLCAwLCA4MTUyLCAwLCA0MTU1MCwgCisgICAgMTIyMjcsIDk4MzYxMywgMCwgMTI4MjgsIDEyNzUxMSwgMCwgMCwgMTIwNzA4LCAwLCAwLCAxMDM4NiwgMTE5NTc0LCAwLCAwLCAKKyAgICA5MjY4MCwgOTgzNzgwLCA2ODE1NCwgMCwgMTc0MywgMCwgMCwgOTIyMzksIDY1MTg2LCA5MTc1NzEsIDAsIDk2MDYsIDAsIDAsIAorICAgIDY0NDM5LCAwLCAwLCA5MjY4NiwgMCwgMCwgMTk0OTY3LCAwLCAwLCAzMzk1LCA5MzYyLCAxMDg3OCwgMCwgMCwgNzgzNjIsIAorICAgIDY0ODMwLCAwLCAxMjY1NTcsIDQxMDkxLCAzNDI2LCAxMzQ0LCA4ODcwLCAwLCAwLCA0NzM1LCAxMjcwMTcsIDYxMTksIAorICAgIDEyODIyLCA0MjY5OSwgMCwgOTgzODE1LCA3NDgxOCwgMTQyMywgMCwgNDI2MzcsIDQxMDgwLCAwLCAxMjAzOSwgMTA1NTksIAorICAgIDAsIDExODg5MiwgMCwgOTQ3MiwgMCwgMTE5MjksIDAsIDcxNzAsIDk1OTYsIDYxMzAsIDEyODgyNiwgNDM2MjksIDExNTc5LCAKKyAgICA3ODcxMywgMCwgMTk0NzQwLCAxMjg2OTEsIDkyMTg1LCA2NjY5OSwgNjQ0NDAsIDEwMDQsIDkyNTg0LCAxOTQ3MzcsIAorICAgIDQzMjM0LCA2NjAwOCwgMTI2MjcsIDAsIDY4NDE0LCAwLCA0MzYxOSwgNDMzMDMsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgCisgICAgMTE3NzYsIDc1NTgsIDEyNzE1OCwgNjU2MjcsIDAsIDEwNzE4LCAxMzE1NCwgMzQ2MSwgOTEzOSwgMCwgMCwgMCwgMCwgCisgICAgNjUzNjUsIDczODc3LCA2NTYyOCwgNzgwMTksIDEyMDMxOSwgMCwgNDE3MDgsIDEyODYwLCAyNjQxLCAxMjA2OSwgMTA4MzgsIAorICAgIDU0MDMsIDEwMzUyLCA3MDA4NSwgMTAwNjEsIDQzMjM3LCAwLCA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCAKKyAgICA0MzA3OCwgMTI4MTI1LCAxMTg4MDksIDAsIDEwODk5LCA2NTQ2OSwgOTIzNjIsIDAsIDAsIDI0MTAsIDk5MywgMCwgCisgICAgMTIwNTg5LCAxMjA2ODksIDc4NjkzLCAwLCAwLCA3MjMyLCAwLCAxMTkyNTMsIDAsIDcxMTAsIDc0NDYyLCAyMDY2LCAKKyAgICAxMDQ4OSwgNDIxNjYsIDQzNDYzLCAxMDY1OSwgMzYwMCwgMCwgNDIyNCwgMTMzNiwgNDE1MTgsIDAsIDAsIDAsIDAsIAorICAgIDQxMTM5LCA2NDgyMCwgOTI1MzgsIDEyOTY2LCA0MTEzNCwgMCwgMCwgMCwgMCwgMjcyLCA0MjYzLCA4NzkzLCAwLCAwLCAKKyAgICA0MTUwMiwgMCwgOTgzLCAxMjU0OSwgMCwgMCwgMTE5MCwgNDEwOSwgMTMzNSwgODQxLCA1ODg4LCA0MTM1OCwgNjQ4NjMsIAorICAgIDk1NDQsIDQzNDgxLCAwLCAxOTQ4MDYsIDcwMDI3LCAyMDk5LCA1MTIwLCAyNDA5LCA3Nzk5LCAwLCA3NDQyNCwgMCwgMCwgCisgICAgNDczMSwgMCwgNjY2MjksIDAsIDAsIDEyNTUsIDQxNDksIDkyNDcsIDAsIDk5MTMsIDAsIDAsIDY0OTE0LCA5MTc3ODcsIAorICAgIDY1MTAxLCAwLCAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcxNjQsIDY2NjI1LCAxMDg0MiwgNDEzNTQsIDQyMTIzLCAKKyAgICA0MzA5NywgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCAwLCA4MTgwLCAwLCAwLCA5OTcyLCA3Mzg2NSwgNDUxOSwgCisgICAgNjExNCwgMTA4OTgsIDQzMDcyLCAwLCAwLCA5Mzk2MCwgOTgzMzE0LCAxMjY1ODEsIDEwNjk1LCAwLCA3NTQwLCAwLCA4ODEsIAorICAgIDc4NTcsIDYwNjcsIDY1MTY0LCAwLCAwLCAwLCAxMzMxMSwgNjg0MDMsIDQxODU3LCA2NDMyMSwgODM1OSwgMCwgMTI2ODksIAorICAgIDAsIDE5NDU5NCwgMCwgOTgzMzA0LCA5ODM4NzIsIDY4MTgzLCAwLCA5ODMzMDYsIDEyODcsIDU0MzYsIDAsIDk4MzMwOSwgCisgICAgNzQxNDIsIDkyMzI4LCA3NDE1MiwgMTE5MDc4LCA2MDUxLCAxMDQ5NywgNjk2NjgsIDg5ODUsIDEyMTA5LCA5ODMzMTUsIDAsIAorICAgIDEyNzI0MiwgMCwgMCwgMzY1MiwgMTA1MzcsIDAsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgMjc5LCA3Mzc0NSwgMCwgMCwgMCwgCisgICAgMTQ4OSwgMCwgMCwgMCwgMzg5OSwgMTAwNywgNDIxMjQsIDk4MzU1NywgNDIxMjIsIDkyMzM3LCA5MjM2NywgMCwgMTE5ODUsIAorICAgIDEzNDUsIDc4NjAwLCAwLCAwLCA4OTU2LCA0MzA4MywgOTQwNTcsIDQyMTM4LCA3ODYxMCwgMCwgMTIxNTEsIDc4NjA4LCAKKyAgICA3ODYwNCwgNzg2MDUsIDYyODUsIDc4NjAzLCA3ODYxMiwgNzg2MTMsIDY1OTQyLCA0OTIsIDg2ODUsIDAsIDk4Mzc1MCwgMCwgCisgICAgNzg2MjIsIDQzNzEyLCAyNTgyLCAxMTQ3MCwgNjQ1MzgsIDc0NDQsIDc4NjE1LCA3ODYxNiwgMjI5NywgMCwgNzM4MzcsIAorICAgIDExOTgyMywgMjUyNywgMTE5ODI0LCAxOTcsIDI3OTksIDkyNTk0LCA0MTk0NCwgMTIwMjc2LCA5OTMzLCAwLCA2NjUxNSwgCisgICAgNzY3LCA1NTI0LCA3MDI4LCAwLCAwLCAxMTk4MjcsIDExOTgxNywgMTE5ODI4LCA3ODYzMywgMTA4OTYsIDAsIDE3OTksIAorICAgIDEyMDQ5NywgNjk3MSwgNzQzMzYsIDEyODM0MiwgMCwgNjUzNDAsIDExODk3OSwgNDE1NTEsIDI0MzQsIDk0MDE4LCAwLCAKKyAgICAxMjA1NzksIDAsIDQ2MzEsIDAsIDAsIDY0MDcsIDAsIDYzMzgsIDQzMjE0LCAwLCA3NTcwLCAwLCAzMTkyLCAwLCA4NDE0LCAKKyAgICAwLCA5Mzk4MywgMCwgMCwgMCwgOTE2NCwgNjY2MTIsIDkzOTU5LCAzMTcxLCA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCAKKyAgICA1NTIxNiwgODY1NCwgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgNzAwNjYsIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIAorICAgIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAxMDk0NCwgNDEyMDgsIDk4MzcwNCwgNDExNjgsIAorICAgIDgxNzgsIDAsIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIDc4NjM2LCA2ODA0LCA3ODYzNCwgMTk0NywgMCwgMCwgCisgICAgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgNzQ3OTgsIDkxODEsIDY1MzU5LCAwLCA4MDE3LCAxMTk4MzEsIAorICAgIDY1MDk2LCA2NjcyMCwgMCwgNDM0NzUsIDAsIDQ5MDksIDEyMTI2LCAxMjg2NzMsIDEyMDY5NiwgNDkwNCwgOTgzMzI1LCAKICAgICA2OTY1MCwgMTM2NSwgOTI1MywgNDI3NTcsIDQzNDM2LCA3NDYyLCAwLCAwLCAwLCAwLCAxMTk1ODcsIDY0NDE1LCAwLCAwLCAKLSAgICA1Mzk4LCAwLCAxMjczODYsIDAsIDAsIDAsIDExOTAxNSwgMCwgMCwgOTQ3NiwgMCwgMCwgMTI3NjMsIDAsIDM2MjksIDAsIAotICAgIDEzMDA1LCAwLCAzNjI4LCAwLCAwLCA5MjUwMiwgMzQ2OSwgNDIxMDcsIDQyMTE2LCA5MTc1NzgsIDY0ODA5LCAyOTI4LCAKLSAgICA0OTA1LCA5ODUzLCA4NTEsIDkwNDAsIDAsIDY0NjY1LCA0MzA4NiwgOTExNCwgMCwgNDI1ODMsIDkzMTUsIDQ4MjIsIDQ5MDYsIAotICAgIDM4NTIsIDI4NDcsIDExOTgyMSwgMzIzNiwgMTEzMTcsIDEyNTEsIDc3NzcsIDQxODUyLCAxMTQxMCwgMTA5NjQsIDAsIAotICAgIDQzMjIyLCAxMjY0NiwgMTIwMjY5LCAxMDI1OSwgOTg2NSwgNjU4MjEsIDAsIDYwMTgsIDkyMjkwLCAwLCAxMjI3NiwgMCwgCi0gICAgNjgzNzIsIDAsIDkyMjU5LCAxMTkyNDQsIDAsIDAsIDEwNDY3LCAwLCAyNDQzLCAxMDkxOCwgNzgyMTcsIDExOTgyNSwgCi0gICAgMTAwMSwgOTI0MSwgMTkyNywgMCwgMCwgNzM5ODcsIDEyNzg4NSwgMCwgMCwgMTE4ODI4LCAxMjAyNzEsIDY1Njc4LCAKLSAgICAxMjg2NywgMCwgODI2MCwgNzc5NDUsIDc1MTksIDExNTA1LCAxMjI3NCwgODkwNCwgNTE4LCA2NTg1NywgMCwgMTI4Njc0LCAKLSAgICAxMzIwNCwgNDM4NywgODU3LCAwLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAxMjA1OTIsIDAsIDAsIDAsIDAsIDUxMzYsIAotICAgIDE5NjgsIDAsIDE5NTAyMywgMTMzNywgNjQ5NjcsIDE2MjksIDAsIDc5NiwgNjY1MDYsIDAsIDc0MTIzLCAxMjg3NywgMCwgCi0gICAgNDIzMTQsIDQzMzg4LCAwLCA3NDQwMywgNjEyMCwgNDc4LCA2NTE1MSwgNjgxMjgsIDEyODE0NywgNDMwODIsIDYwMTYsIDAsIAotICAgIDQyMjg0LCAxMjg1MDcsIDQyNzYsIDEyMDYsIDM2MTksIDQxNjM4LCA2OTY5MSwgMzg0MywgMTIwMTEsIDg4NTMsIDMzNjEsIAotICAgIDAsIDQ5MCwgMTA3MTUsIDc1NzgsIDY4Mzg0LCAwLCA2NTM1MCwgMTA1MzAsIDEyMzQ4LCA4NjUzLCA3NDMxNCwgNDI0MzUsIAotICAgIDYxNTQsIDk1NTEsIDY1MzU0LCA3ODUyMiwgNzg0LCA0MjM5NywgMzM0LCAwLCA0MjQxNiwgNjUzNTYsIDY1MjczLCA3Nzk4NywgCi0gICAgNjk2NjYsIDQ0NDIsIDEwMzY0LCAwLCA3NzgsIDQxNjI2LCA0MjQ1NSwgNzk4OSwgNzQwNjMsIDMyMjcsIDAsIDEyNzI3NSwgCi0gICAgNzM5ODMsIDI5MTUsIDExNTAyLCA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc4MzIwLCAwLCA2OTc1LCAwLCA1NDE1LCAKLSAgICAxMjE3NiwgMCwgNzQxOTMsIDM0NjIsIDY1MjE1LCA0MjYyOSwgNzg2OTEsIDczNzg0LCAwLCAwLCA5NzU5LCAwLCA3ODMyNCwgCi0gICAgMTI3MjU0LCA4MTE0LCA3ODY5OCwgNzg2OTcsIDc4Njk2LCA3ODY5NSwgODcxMCwgNDI0OTUsIDExODk1NiwgMCwgNDA1MSwgCi0gICAgMTA0NjAsIDQzMzY0LCAxMTg5MTcsIDEzNTYsIDEyMTYxLCA0MjcxMywgMTI4ODU3LCAxMjcyNjgsIDE2MTksIDk3MDMsIAotICAgIDQzMTUyLCA0MjQ4OSwgNDIxMTIsIDAsIDE4NzUsIDEwODA4LCA0MjEwOSwgMTIwMjg0LCA0MTg2MCwgNjQ4NjIsIDEzMzA1LCAKLSAgICA2NDkwNywgNTI4OSwgMTMxNDQsIDEyODY1OCwgMCwgNTU3NSwgOTY3NSwgMCwgNTk0MCwgMjI2LCAyNjQ5LCA2MzM2LCAwLCAKLSAgICAwLCA0MzIzNiwgMzM4MiwgNDI0NDksIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMCwgMTEyNjksIDEwMTUxLCA3Mzc1OSwgCi0gICAgNDMxMDAsIDc0NDQ5LCA2NTUwOCwgMCwgMCwgMCwgODkzNSwgOTE3OTg1LCAwLCAwLCAwLCA2MTYsIDc0NzUzLCA2NTE3OCwgCi0gICAgNDY4NCwgNzg3MDEsIDExOTY1MywgMCwgMCwgMCwgNjA0OCwgNzQ0NjAsIDQyMTEwLCA3Mzk2NSwgMTA4NzAsIDg1NTcsIAotICAgIDExMDU0LCA2ODY2NCwgMTE5MDQ5LCA5NjgxLCA0NDc1LCAwLCA0MTE0MiwgMjEwMCwgMCwgMTIwNzMxLCA2MDM1LCAwLCAKLSAgICA3NjUxLCAxMDI5NiwgNjQ0NDMsIDAsIDAsIDkxNzk4NywgMCwgMTE4OTY2LCA3NDE0NCwgNDA5OTcsIDAsIDEwMzkyLCAKLSAgICAxMDMyOCwgNDA5OTgsIDQzNDYyLCA3NDQ4OCwgMCwgOTgwMCwgODk3OSwgMCwgMTE5MTMxLCA0MTAwMCwgMCwgMTE5MjM5LCAKLSAgICA2NDg3LCAzMzg2LCAwLCAxMDM0NCwgMCwgNjUyOTksIDUzOTQsIDQzMjQ2LCA3ODI0MywgMTAyMjAsIDY2NTA1LCA0MTIwMCwgCi0gICAgMTI4NTgzLCA0NDI1LCAwLCAwLCAwLCA0MzA3NCwgNzM3OTksIDAsIDc4MTQ3LCAwLCAxMjE3MywgNzg1NDUsIDAsIDAsIAotICAgIDY1MzM4LCAwLCAwLCAxMTk1ODIsIDQ0NzQsIDAsIDQzMDkzLCAwLCAxNTg3LCAwLCAxMjczNzIsIDY0NDc1LCAxMjgwOTgsIAotICAgIDEzNjksIDAsIDk5NTksIDc5MjcsIDAsIDQ1NjAsIDAsIDAsIDkyMjc3LCAwLCA2NDk0OCwgNDQzMCwgNzQzNDcsIDQyNjAxLCAKLSAgICA0NTE0LCA2NjQzNCwgMCwgODE5NCwgNjU0NjIsIDEwNjI2LCAxMDk2NSwgMCwgODg5MywgMCwgMTI1NDIsIDAsIDY1MzQxLCAKLSAgICAwLCA2NTgyOSwgNzkyNSwgMTE5ODIyLCAxMDQ3NSwgMCwgMCwgMTM1MiwgMTEwNjksIDc3MDcsIDEyNzU2MCwgMCwgNjUyNzksIAotICAgIDEyNzEwMiwgNjgyMDcsIDEyNzEwMCwgNjU2MDUsIDYwNDAsIDEyNzA5NywgMTAwNzEsIDAsIDkzMzYsIDEyODgyNCwgMCwgCi0gICAgODg5OSwgNzc5OCwgNjQ0NzQsIDY0MjU5LCAwLCA2NTE4OCwgNzgyMCwgNDMwMTgsIDAsIDAsIDc3NDYsIDE0OTIsIDc4NTUxLCAKLSAgICAxMDg4NCwgNzc5ODIsIDAsIDUxMjcsIDExMjg1LCA0MjUwMSwgNTQ5NSwgNDI3MywgNDMwOTUsIDQxNDI2LCAxMDg0OSwgCi0gICAgNTczMCwgMjk5OSwgNjM0MiwgNjg2MzYsIDc0MzA0LCAzNzEsIDY0MzczLCA2MDIzLCAxNjksIDU0OTcsIDExNzA4LCAwLCAwLCAKLSAgICA2MzIzLCAxOTQ2ODQsIDgyMjQsIDAsIDg5MzgsIDYwNDMsIDEyNzM4LCAwLCAwLCA1MzIxLCAwLCAxOTQ3OTgsIDAsIDI1ODksIAotICAgIDc0MzMyLCAxNjg5LCA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDEyMDI5NiwgMTE5MDUsIDAsIDAsIDEyODUxNiwgCi0gICAgMTI4MTYzLCA3NDUxMywgNjA0OSwgMCwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIDAsIDE1MDMsIDAsIDAsIDAsIDU3MzEsIAotICAgIDEzODEsIDIzODcsIDAsIDAsIDgyODksIDY0NTI1LCA2NTgxNywgMjg4MSwgNDMxNDIsIDAsIDk2MDEsIDI4NzksIDk2NjgsIAotICAgIDk3NjYsIDAsIDU3MjksIDkxNzgzMywgNzQ0MTAsIDYwMzYsIDY0ODgxLCA0MDI2LCA5MzYxLCAxMjcwOTEsIDI4ODcsIDAsIAotICAgIDM1MjYsIDYyOTgsIDAsIDc3ODk3LCAxMjAwOTUsIDc4NTE5LCAwLCA4NTcyLCA2MDIxLCA3Nzg5NiwgMTI4Mjg4LCA3Nzg5NSwgCisgICAgNTM5OCwgMCwgMTI3Mzg2LCA5Mzk1MywgMCwgMCwgMTE5MDE1LCAwLCAwLCA5NDc2LCAwLCA5ODM3NjgsIDEyNzYzLCAKKyAgICAxMjY2MDMsIDM2MjksIDAsIDEzMDA1LCAwLCAzNjI4LCAwLCAwLCA5MjUwMiwgMzQ2OSwgNDIxMDcsIDQyMTE2LCA5MTc1NzgsIAorICAgIDY0ODA5LCAyOTI4LCA0OTA1LCA5ODUzLCA4NTEsIDkwNDAsIDAsIDY0NjY1LCA0MzA4NiwgOTExNCwgMCwgNDI1ODMsIAorICAgIDkzMTUsIDQ4MjIsIDQ5MDYsIDM4NTIsIDI4NDcsIDExOTgyMSwgMzIzNiwgMTEzMTcsIDEyNTEsIDc3NzcsIDQxODUyLCAKKyAgICAxMTQxMCwgMTA5NjQsIDAsIDQzMjIyLCAxMjY0NiwgMTIwMjY5LCAxMDI1OSwgOTg2NSwgNjU4MjEsIDAsIDYwMTgsIAorICAgIDkyMjkwLCAwLCAxMjI3NiwgMCwgNjgzNzIsIDAsIDkyMjU5LCAxMTkyNDQsIDAsIDk4MzIyNCwgMTA0NjcsIDAsIDI0NDMsIAorICAgIDEwOTE4LCA3ODIxNywgMTE5ODI1LCAxMDAxLCA5MjQxLCAxOTI3LCAwLCAwLCA3Mzk4NywgMTI3ODg1LCAwLCAwLCAKKyAgICAxMTg4MjgsIDEyMDI3MSwgNjU2NzgsIDEyODY3LCAwLCA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCAKKyAgICA1MTgsIDY1ODU3LCAwLCAxMjg2NzQsIDEzMjA0LCA0Mzg3LCA4NTcsIDAsIDY1MzY5LCAwLCA5MjMzNiwgNDMxMjUsIAorICAgIDEyMDU5MiwgMCwgMCwgMCwgMCwgNTEzNiwgMTk2OCwgOTgzMDQxLCAxMjY2MjcsIDEzMzcsIDY0OTY3LCAxNjI5LCAwLCAKKyAgICA3OTYsIDY2NTA2LCAwLCA3NDEyMywgMTI4NzcsIDEyMDY0OSwgNDIzMTQsIDQzMzg4LCAwLCA3NDQwMywgNjEyMCwgNDc4LCAKKyAgICA2NTE1MSwgNjgxMjgsIDEyODE0NywgNDMwODIsIDYwMTYsIDAsIDQyMjg0LCAxMjg1MDcsIDQyNzYsIDEyMDYsIDM2MTksIAorICAgIDQxNjM4LCA2OTY5MSwgMzg0MywgMTIwMTEsIDg4NTMsIDMzNjEsIDAsIDQ5MCwgMTA3MTUsIDc1NzgsIDY4Mzg0LCAwLCAKKyAgICA2NTM1MCwgMTA1MzAsIDEyMzQ4LCA4NjUzLCA3NDMxNCwgNDI0MzUsIDYxNTQsIDk1NTEsIDY1MzU0LCA3ODUyMiwgNzg0LCAKKyAgICA0MjM5NywgMzM0LCAwLCA0MjQxNiwgNjUzNTYsIDY1MjczLCA3Nzk4NywgNjk2NjYsIDQ0NDIsIDEwMzY0LCAwLCA3NzgsIAorICAgIDQxNjI2LCA0MjQ1NSwgNzk4OSwgNzQwNjMsIDMyMjcsIDY5OTA3LCAxMjcyNzUsIDczOTgzLCAyOTE1LCAxMTUwMiwgCisgICAgNDEwMjIsIDQxNzAyLCAxMDMwOSwgMTI3MDM1LCA3ODMyMCwgMCwgNjk3NSwgMCwgNTQxNSwgMTIxNzYsIDAsIDc0MTkzLCAKKyAgICAzNDYyLCA2NTIxNSwgNDI2MjksIDc4NjkxLCA3Mzc4NCwgMCwgMCwgOTc1OSwgMCwgNzAwNTcsIDEyNzI1NCwgODExNCwgCisgICAgNzg2OTgsIDc4Njk3LCA3ODY5NiwgNzg2OTUsIDg3MTAsIDQyNDk1LCAxMTg5NTYsIDAsIDQwNTEsIDEwNDYwLCA0MzM2NCwgCisgICAgMTE4OTE3LCAxMzU2LCAxMjE2MSwgNDI3MTMsIDEyODg1NywgMTI3MjY4LCAxNjE5LCA5NzAzLCA0MzE1MiwgNDI0ODksIAorICAgIDQyMTEyLCAxMjc5NzgsIDE4NzUsIDEwODA4LCA0MjEwOSwgMTIwMjg0LCA0MTg2MCwgNjQ4NjIsIDEzMzA1LCA2NDkwNywgCisgICAgNTI4OSwgMTMxNDQsIDEyODY1OCwgMCwgNTU3NSwgOTY3NSwgMCwgNTk0MCwgMjI2LCAyNjQ5LCA2MzM2LCA5ODMyNjksIAorICAgIDExOTgzMCwgNDMyMzYsIDMzODIsIDQyNDQ5LCA2NDk4LCAxNjU4LCAxMTkzNiwgNzgyMzIsIDAsIDExMjY5LCAxMDE1MSwgCisgICAgNzM3NTksIDQzMTAwLCA2OTg4OCwgNjU1MDgsIDAsIDAsIDAsIDg5MzUsIDkxNzk4NSwgMCwgMCwgMCwgNjE2LCA3NDc1MywgCisgICAgNjUxNzgsIDQ2ODQsIDc4NzAxLCAxMTk2NTMsIDAsIDEyNjU1MSwgMCwgNjA0OCwgNzQ0NjAsIDQyMTEwLCA3Mzk2NSwgCisgICAgMTA4NzAsIDg1NTcsIDExMDU0LCA2ODY2NCwgMTE5MDQ5LCA5NjgxLCA0NDc1LCAwLCA0MTE0MiwgMjEwMCwgMCwgMTIwNzMxLCAKKyAgICA2MDM1LCAwLCA3NjUxLCAxMDI5NiwgNjQ0NDMsIDAsIDk4MzI4NywgOTE3OTg3LCAwLCAxMTg5NjYsIDc0MTQ0LCA0MDk5NywgCisgICAgMCwgMTAzOTIsIDEwMzI4LCA0MDk5OCwgNDM0NjIsIDc0NDg4LCAwLCA5ODAwLCA4OTc5LCAwLCAxMzMwNywgNDEwMDAsIDAsIAorICAgIDExOTIzOSwgNjQ4NywgMzM4NiwgMCwgMTAzNDQsIDAsIDY1Mjk5LCA1Mzk0LCA0MzI0NiwgNzgyNDMsIDEwMjIwLCA2NjUwNSwgCisgICAgNDEyMDAsIDEyODU4MywgNDQyNSwgMCwgMCwgMCwgNDMwNzQsIDczNzk5LCA5ODMyMDAsIDc4MTQ3LCAwLCAxMjE3MywgCisgICAgNzg1NDUsIDAsIDEyNzAxMSwgNjUzMzgsIDAsIDAsIDExOTU4MiwgNDQ3NCwgMCwgNDMwOTMsIDEyODY0NCwgMTU4NywgMCwgCisgICAgMTI3MzcyLCA2NDQ3NSwgMTI4MDk4LCAxMzY5LCA5ODM2NjMsIDk5NTksIDc5MjcsIDAsIDQ1NjAsIDAsIDAsIDkyMjc3LCAwLCAKKyAgICA2NDk0OCwgNDQzMCwgNzQzNDcsIDQyNjAxLCA0NTE0LCA2NjQzNCwgOTM5NTUsIDgxOTQsIDY1NDYyLCAxMDYyNiwgMTA5NjUsIAorICAgIDAsIDg4OTMsIDk4MzI5MywgMTI1NDIsIDAsIDY1MzQxLCAwLCA2NTgyOSwgNzkyNSwgMTE5ODIyLCAxMDQ3NSwgMCwgMCwgCisgICAgMTM1MiwgMTEwNjksIDc3MDcsIDEyNzU2MCwgMTI2NDg2LCA2NTI3OSwgMTI3MTAyLCA2ODIwNywgMTI3MTAwLCA3MDk5LCAKKyAgICA2MDQwLCAxMjcwOTcsIDEwMDcxLCAwLCA5MzM2LCA0Mzc1MCwgMCwgODg5OSwgNzc5OCwgNjQ0NzQsIDY0MjU5LCA2OTg3MywgCisgICAgNjUxODgsIDc4MjAsIDQzMDE4LCAxMjcwODIsIDAsIDc3NDYsIDE0OTIsIDc4NTUxLCAxMDg4NCwgNzc5ODIsIDAsIDUxMjcsIAorICAgIDExMjg1LCA0MjUwMSwgNTQ5NSwgNDI3MywgNDMwOTUsIDQxNDI2LCAxMDg0OSwgNTczMCwgMjk5OSwgNjM0MiwgNjg2MzYsIAorICAgIDc0MzA0LCAzNzEsIDY0MzczLCA2MDIzLCAxNjksIDU0OTcsIDExNzA4LCAwLCAwLCA2MzIzLCAxOTQ2ODQsIDgyMjQsIDAsIAorICAgIDg5MzgsIDYwNDMsIDEyNzM4LCAwLCA5ODMwNzYsIDUzMjEsIDAsIDE5NDc5OCwgMCwgMjU4OSwgNzQzMzIsIDE2ODksIAorICAgIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgMTIwMjk2LCAxMTkwNSwgMCwgMCwgMTI4NTE2LCAxMjgxNjMsIDc0NTEzLCAKKyAgICA2MDQ5LCAwLCA0MDI3LCA4MzQsIDExODk2MiwgMTgwMywgMCwgMTUwMywgMCwgMCwgNzEzMTIsIDU3MzEsIDEzODEsIDIzODcsIAorICAgIDAsIDAsIDgyODksIDY0NTI1LCA2NTgxNywgMjg4MSwgNDMxNDIsIDAsIDk2MDEsIDI4NzksIDk2NjgsIDk3NjYsIDAsIAorICAgIDU3MjksIDkxNzgzMywgNzQ0MTAsIDYwMzYsIDY0ODgxLCA0MDI2LCA5MzYxLCAxMjcwOTEsIDI4ODcsIDAsIDM1MjYsIAorICAgIDYyOTgsIDAsIDc3ODk3LCAxMjAwOTUsIDc4NTE5LCAwLCA4NTcyLCA2MDIxLCA3Nzg5NiwgMTI4Mjg4LCA3Nzg5NSwgCiAgICAgNDMxNTUsIDAsIDExOTg0OSwgMzE0NiwgMTA5NTksIDk0ODMsIDAsIDc3ODkzLCAxMDk4MSwgMTY2LCA5MTc4NDEsIDg2MzUsIAotICAgIDAsIDEwNjIzLCA0MDgsIDExOTA1OCwgMTI3NTA3LCAxMzI5OCwgMCwgNzQyNiwgNDE2NDEsIDEyNzE3LCAwLCA3NjA3LCAKLSAgICAxMDYzOSwgNjY3MTMsIDAsIDAsIDQxNjQzLCA3NDEzNCwgMCwgODcxMywgNDE2NDAsIDEwMjIxLCA0MTY0NSwgNjY3MTIsIAotICAgIDY2NDUsIDY0NiwgNjY3MjYsIDY2NzExLCA0MjEyOSwgMCwgNzc5MDEsIDM0NzIsIDg2OTcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU4MDksIDE5NTAsIDExOTM1NiwgOTI0MzIsIDc0NTcyLCAwLCA0MjEzNiwgMCwgMCwgMCwgMCwgMzI0NywgMTE5ODU0LCAKLSAgICA2NTAxNywgMCwgNjg0MjgsIDY2NjY4LCAwLCAwLCAxMDk4MywgMCwgMCwgMCwgNDE1NjcsIDAsIDAsIDAsIDE5NDYyNCwgMCwgCi0gICAgMCwgMCwgODI4NSwgMCwgNDUwOSwgMCwgNjY0NzEsIDEyMjE2LCAwLCA0MDk4OCwgOTI1OTIsIDAsIDQxNzI3LCAwLCAKLSAgICA0Mjg0OCwgMjM5NiwgOTE3NzY2LCAwLCA3NDAxOCwgOTE3NTM4LCA2NDk0MCwgNzAyNywgMzg4NiwgMCwgNDI0NTcsIAotICAgIDExOTAwOCwgMCwgOTk2LCA2ODEyMywgOTE3NTcxLCA0MjQ5LCAwLCA5MTc1OTQsIDExNzA3LCA4MjIyLCAwLCA3OTM5LCAKLSAgICA5MjQ1NCwgOTI0NjAsIDEyNzgwMSwgOTE3NTkyLCAxMjgzNTksIDg1MzQsIDEyNzE1NCwgNDA5ODMsIDAsIDAsIDAsIDcyMDEsIAotICAgIDEyNTYxLCAwLCA0MjM3MSwgMTI1NTgsIDAsIDkxNzU0OSwgMTAwNTIsIDQwOTgyLCAwLCAwLCAxNDg4LCAwLCAwLCAwLCAKLSAgICA5MTc1NTksIDAsIDAsIDE1NjMsIDEyODAzNCwgOTYxOSwgMCwgMCwgMCwgMTI3ODcyLCAwLCA1ODAzLCA3Nzk3LCA2MDcwLCAKLSAgICAxMDAwNiwgMCwgMjkyMiwgNjA4MiwgMCwgNjUwMDksIDAsIDEyNTY3LCAxMjg3MDMsIDAsIDQxNDEyLCAwLCAwLCAzNjA3LCAKLSAgICA5MjAwLCAxMDA0NiwgOTYxMiwgNDIxNTMsIDgyMTgsIDk0ODUsIDAsIDIwMzIsIDc4MzU0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MzA4NSwgNjA1NywgNTA4LCAxMjg1ODUsIDEyODAxNSwgMTIwMjY1LCAwLCA5MjQwNSwgMCwgMCwgNjM4LCA2MDgzLCAKLSAgICAxMTkwNzIsIDAsIDAsIDIzMDUsIDc4MzQ4LCAwLCAwLCA2MDU2LCA2NjU5LCAwLCAwLCA2MDg1LCAwLCAwLCAzOTE1LCAKLSAgICA0MTYzNCwgMCwgNDE2MzksIDYzOTEyLCAxMTk0MSwgMCwgNDAyOCwgMTc4NywgNDIxODAsIDQzMDk2LCA5MjY5MCwgMzI0OSwgCi0gICAgMTc2OCwgMCwgMTIzMjgsIDUwMSwgMTI3MDc0LCAxMDYwMSwgMCwgNTgzLCAwLCA0MTk3NywgMCwgNjYwMDQsIDExOTM1MCwgCi0gICAgNjUwNSwgNzQwMTAsIDAsIDEzMDY0LCA1NTI2NywgMTIwODEwLCA2NTAwLCA1NTI2LCA2NTA0OSwgMCwgNzM3NjQsIDAsIAotICAgIDkyMzc2LCAxMjc0NSwgOTY3OCwgMCwgMTIwNTg3LCA5ODY5LCAxMjg4MTUsIDE3NzEsIDAsIDg5MzYsIDAsIDAsIDQyMDgsIAotICAgIDc4MzQxLCAxMTkxMTUsIDc4MzQyLCAwLCAwLCA3NDEwMSwgMCwgMTE3NjIsIDAsIDkyNDIyLCA3Nzk5NywgMTI4Nzg4LCAKLSAgICA2NjQ3NSwgMCwgNTAyNywgNzgxNzIsIDEyODg3OCwgMCwgNTA2OSwgNzM4NjIsIDUwMjgsIDk4OTcsIDAsIDczNzM5LCAKLSAgICA1MDI2LCAwLCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIDQxOTAxLCA3NDc5MCwgNzgxMzgsIAotICAgIDExOTM2MSwgMCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCA2ODQyNCwgNDEwNzAsIDc3OTAzLCAwLCAzNDQwLCAKLSAgICA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgMTcxNiwgMCwgMTA2MDAsIDkxNzg2NywgNjIwLCA0MTAwMSwgCi0gICAgNjAyOCwgMCwgNDI4OTIsIDAsIDc0ODIyLCA1MDI0LCAxMjA4MjksIDQxMDAzLCAwLCA1MDI1LCAxMjgyNjksIDAsIDAsIAotICAgIDExOTMyOCwgMCwgNjU1NTcsIDAsIDc0NTQxLCAwLCAxMTU5OSwgMTI4MjA5LCAxMTYwMiwgNjI0MywgMTE1NzQsIDExNTgxLCAKLSAgICAxMTU5NywgMTE1OTgsIDYyNTMsIDYxMDUsIDExNTg0LCA3NDE5NSwgMTE1NjksIDY1Mjc1LCA4OTA2LCAxMjcwOTYsIDU3NTUsIAotICAgIDI2MzYsIDAsIDEwODE1LCAxMTYxOSwgNzg3MTcsIDQxNTQwLCA3ODE1LCAxMTYxNiwgNjk3OSwgMTIwODAsIDc3MjEsIAotICAgIDExNjA0LCA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCAwLCA4MjksIDAsIDkyNDA2LCAxOTk1MCwgMCwgCi0gICAgMTI4MjE3LCA2NjE2LCAwLCAxMTg4NzUsIDEwOTUzLCAzOTEsIDAsIDY5Nzg1LCA0ODIsIDQyMjk2LCAxMTU4OCwgMCwgCi0gICAgNDM2MDYsIDAsIDY4Mzk3LCA2NjM3MCwgNzQ1MDYsIDQyMzM1LCAwLCAwLCAwLCA3NTM4LCA1MzE1LCAxMjA2NDQsIDQyNDkxLCAKLSAgICAwLCA0MjA2MSwgMTI4MDg4LCA0NTc2LCAwLCA2ODQxNywgNDM4MDksIDQyNzcsIDAsIDQwMzksIDY0NDcyLCA0MjMzOCwgCi0gICAgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIDExMzM3LCA3ODIwOSwgOTE3ODIwLCA2Mzk4OSwgMzk1OCwgMTIxMzIsIDE4NDksIAotICAgIDAsIDk5MjEsIDQyNDUxLCA0MjUzLCA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgNDExNjAsIDAsIDM2MTgsIDc4MzM4LCAKLSAgICAwLCA0MzMwMCwgNTE1NiwgOTI2MjksIDAsIDkyOSwgNjgyNywgNDIwMzUsIDQyNDM3LCAxNTU1LCAwLCA4NjkxLCA2NjQzNSwgCi0gICAgMCwgNDE2NjIsIDAsIDAsIDAsIDAsIDAsIDQ1NzgsIDY0NTEzLCA0MTY2NCwgMCwgNDI1NzgsIDEyODc5NCwgNDE2NjEsIAotICAgIDc4NzE1LCA0MzI2NywgOTM1NiwgMCwgMCwgMCwgMTI4NiwgMTAxNjYsIDAsIDAsIDY0NzA3LCAwLCA0MjQ3NiwgNzczMCwgMCwgCi0gICAgMTI4NTIyLCA0MjQ4MywgMCwgMCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgNDMzNTksIDAsIDY2NDEsIDUyNSwgNDE2MjcsIAotICAgIDkxNzkyMywgODc2MywgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgNjUyMjUsIDgzMjEsIDQyNTA0LCA0MjU4MSwgMCwgCi0gICAgNjkxNSwgNDIzMTAsIDQzNzcsIDg1NTksIDAsIDEyMDIzNCwgMCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgODY3OSwgNDE5MjQsIAotICAgIDE1NzYsIDc3MzUsIDkyMzk4LCAwLCA3Mzg0MCwgMCwgMTEzNzQsIDc4MDQzLCAxMDg4OSwgNDM0NjEsIDc3NTcsIDQyNDYyLCAKLSAgICAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgMjcxOCwgNDE2OCwgNzM4NDIsIDEzMzA4LCAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIDAsIAotICAgIDc3OTQ4LCAzNjMsIDExMDE1LCA3Nzk0NywgNzc5NDQsIDY0Mjk2LCAxMjcwOTAsIDY2NjkyLCAxMjA4MjYsIDAsIDY2NDkyLCAKLSAgICA2NTkzLCA2NDYyNSwgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDAsIDEwMDEzLCA2NDQzNCwgOTI1MjAsIDEyNzA5NSwgOTQ5MiwgCi0gICAgMTE3ODIsIDY0MzgyLCAxMjgzMywgNzc4MzAsIDAsIDEyOTcsIDQxNjMwLCA2MzAsIDEyNzA5NCwgMCwgMTIwNzc0LCAKLSAgICA5MjQ2NSwgMTA0MywgNDM2NTIsIDY2MjIzLCAxMDA5MCwgMCwgMTI4NjY0LCAzMTMsIDkxNzU2MywgNDE4ODEsIDAsIAotICAgIDQyMzExLCA3NDQ1LCAwLCA1NzUwLCAxMDc1OSwgOTQxOSwgNTUyMjIsIDk0MDUsIDExMjY4LCA0MjkxOSwgOTM5OCwgODUyNiwgCi0gICAgOTM5OSwgOTQyMiwgMCwgNjY0OTUsIDAsIDAsIDEyNzIzOSwgNDE3MTgsIDEwNzA3LCAxNjAzLCAwLCAxMTkwMDMsIDAsIAotICAgIDYzMSwgNzc5NTIsIDY5NzAzLCAxMzE2MSwgNjUyNzIsIDAsIDEwNTQ2LCA3NDIxMCwgNzgxMDEsIDExNjAwLCA3Nzk2MSwgCi0gICAgMjc5NywgNzM4MjEsIDQyNDI3LCAzMDYsIDcxNCwgMzA1OCwgNDIzODEsIDc3OTYyLCAxMjcwODAsIDEyMzUxLCA0MjM5NSwgCi0gICAgMCwgMTE2MDcsIDAsIDQyMjgyLCA3Nzk3MSwgNzc5NjcsIDkxNTcsIDczNzY1LCA2NjM2NCwgNDI0MzMsIDc3OTY0LCA3NjAzLCAKLSAgICAxMjgwMywgMTgwLCA0MjE0MSwgMCwgMTIwNjEyLCA2NjQ5NCwgMTI2NzQsIDgyNDQsIDM2MiwgOTI0MzksIDAsIDgwMzcsIAotICAgIDQzNzc3LCAxMTUzNSwgMCwgNzQ4NDUsIDUxODUsIDcxNjUsIDU1MjEsIDEwMzM0LCAyMDkzLCA3Nzk4MywgMTAzMDIsIAotICAgIDEyODExMiwgMTAxMDQsIDEwMjcsIDUxODEsIDAsIDAsIDEwNTIzLCAxNDQ2LCA0MjMyMCwgNDE2NDYsIDk5MSwgNTE4OSwgCi0gICAgNDI0NzIsIDQxNjQ3LCAxMjAxMDUsIDE3MjIsIDU1ODEsIDc3OTc5LCAzNDA1LCAwLCAxOTQ2NDQsIDU1MjMsIDAsIDQyNjIwLCAKLSAgICA5MjQ0NywgMCwgOTU0OSwgMCwgMTA1NDksIDU1MjgyLCA5NjYxLCA0MzY4MiwgMCwgNzc5MTAsIDEyMDAyNiwgNzg3MDgsIDAsIAotICAgIDc3OTExLCAwLCA0MTk5MSwgMCwgMCwgNzYzMCwgOTg0NiwgNzY4NCwgMTAzNTAsIDAsIDExNzQsIDc3OTgxLCA0MjczMywgCi0gICAgNzc5NzgsIDc3OTgwLCA2NjQ4NSwgNzc5NzcsIDQyMjc3LCA3Nzk3NCwgNDI0NTYsIDY1NjY3LCAxMjcwMzcsIDEyMzMwLCAKLSAgICAxMjgyNzIsIDAsIDQyNDE3LCA0MjM4MywgMCwgNDEzNDQsIDYyOTMsIDAsIDY2MjUyLCA3Nzk4NCwgNzQ0NDMsIDAsIAotICAgIDEwMjA5LCA4MzEzLCA0MTk1LCA3NDQzNSwgMTMxNiwgNjY2OTAsIDEyMDAzMiwgNjMzMiwgNjQ4OTQsIDAsIDY1ODcxLCAKLSAgICA3ODA2MCwgMTczNiwgMCwgMzkwMSwgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODg0MSwgNjkzLCAKLSAgICA5MTMwLCAzMTQsIDY0MTQ5LCA0MjQyMCwgMTE5NDksIDAsIDEyMDE1MiwgMTEwMjYsIDAsIDUzMzIsIDY5NDAsIDY0MTU0LCAKLSAgICAxMjYzNSwgMTI3MDA3LCA0MjcwNiwgMTc1MSwgMjczLCA4MTY1LCAxMzE2NiwgMTIwNzYzLCA3ODg0MCwgMCwgMTI4MjQsIDAsIAotICAgIDQ1MjgsIDUzMjAsIDYzMDEsIDQzNjYyLCA2MTMzLCA5MzM5LCA5NDYzLCA0MjM0NiwgMTA5MjIsIDY0NTYwLCAzNzU3LCAwLCAKLSAgICAwLCAwLCA2NTg2OSwgNzM3NjAsIDI1NjksIDAsIDIzMjYsIDY1NzQwLCAyNTY1LCA0MjQ1OSwgNzU5NiwgNzkyMSwgMCwgCi0gICAgNzQwOTUsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCAwLCA0MDQ0LCA5MjY0NiwgMCwgMTIyMzMsIDAsIDEwMjMsIAotICAgIDQ3NCwgMCwgMTE5ODE4LCAwLCAwLCA0MjQ4NywgNjU1NTYsIDAsIDAsIDQyMjk1LCAwLCAwLCAwLCA5MjUxOCwgOTgzNSwgCi0gICAgNjY0OTksIDAsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCAwLCAxODU4LCAwLCAwLCA1NTI1MSwgMTAxMTgsIDMxMzMsIAotICAgIDEyODAwOCwgNzM3OTUsIDAsIDk2MTAsIDgwNjgsIDgxOTcsIDAsIDY5OSwgMCwgNDE2NjUsIDU4NjgsIDAsIDkyNjk1LCAKLSAgICA0MjE4MiwgNzU4MSwgMTk5NDAsIDQzNjY4LCA0MTY2NywgMTI4MDU3LCAwLCAxOTIzLCA2NTU4MywgNjU4MDIsIDAsIAotICAgIDY0NTk3LCA0MzQ0NCwgMTE5MTg0LCA5MjE5NywgMCwgNjQ2NCwgNzAzNiwgMjk5NiwgMTkzNywgMCwgMCwgNDE4MzUsIAotICAgIDQwNDcsIDQxODQyLCAwLCA2NDEwNywgMCwgMCwgMTEwMTcsIDAsIDAsIDI5MywgNzc5NjYsIDkyMTY5LCA2NDc5MSwgCi0gICAgNDE4MjcsIDQyNDY2LCA0MzQyMiwgMTA1NzksIDg1NjAsIDAsIDY1NDEzLCA3Nzk2MywgNDgwMywgMTI5NjQsIDE3MzksIAotICAgIDE5NDEsIDM5MDAsIDAsIDE3MTMsIDc3OTY5LCAwLCA3Mzk1NywgMTE0MDcsIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCAKLSAgICA2NDEwNSwgMTI4MDgwLCA0MjQ4MSwgMTE3MTYsIDY2NDczLCA3MTc5LCA0MjI4OSwgMCwgNjQxMDMsIDk2OSwgMCwgOTM1MiwgCi0gICAgMCwgNjE2NSwgNjQxMDAsIDAsIDY2MzIsIDczODYxLCA0MjQwMiwgNzQzMjcsIDc4MDYsIDAsIDg5MTQsIDAsIDAsIDMxODMsIAotICAgIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgNjc4NDksIDU3NDYsIDczNzQ5LCAwLCA2NDQxNiwgCi0gICAgNDI0MjIsIDAsIDAsIDcwODIsIDczNzc1LCAzMzgsIDUwNTksIDE5NDcxOSwgMCwgNDIzMjgsIDEwNzY3LCAwLCA4MTE1LCAwLCAKLSAgICA3NDc1OCwgMCwgODIyNywgMjA3MywgMTIxOCwgMCwgMCwgNjU4NDgsIDAsIDAsIDAsIDAsIDEyNjk4NywgNDQ4NiwgMCwgMCwgCi0gICAgMCwgMTA5MjUsIDAsIDAsIDAsIDAsIDQyMzA5LCAxMDI1NywgNjUxOTEsIDEwMjczLCAwLCAxMDMwNSwgNDI0NjEsIDAsIAotICAgIDQyMzQ5LCA4ODMyLCA3ODA1MSwgNjQxMjcsIDEwNjQ0LCA0MjY2MiwgNzg4MjgsIDQyMjc4LCA3NDQ1MSwgMTI2OTg4LCAKLSAgICA5MTc4NTcsIDc3OTQsIDAsIDQyNDI5LCA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAzNjY5LCAzOTY4LCA0MjQ2OCwgMCwgNjk2NTgsIAotICAgIDAsIDY1NDAyLCAxMTk1ODEsIDAsIDAsIDY0OTMzLCAwLCA0MTk2MCwgNjY5OSwgMCwgMCwgMTI4MzU0LCA2ODIzLCA0MjM5MSwgCi0gICAgMTU4OCwgNjU0MDAsIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgMCwgOTE3OTM5LCAxMjc3NDQsIDYxMTUsIAotICAgIDIwNzgsIDQxNjU0LCA0MjQ4MCwgMCwgOTI2NTAsIDQxNjU1LCA2NTQwMSwgNDM5NzUsIDAsIDAsIDAsIDY0NCwgNjU1MDAsIAotICAgIDQxNjU3LCAxMDc3OCwgMzY1OSwgOTUzMywgMTg0LCAxNTUzLCAxMzEwNywgNjU0ODQsIDY5NjQ4LCAxMDUwMiwgNzQ0NTcsIAotICAgIDAsIDAsIDQxNTU0LCAwLCA4MjIwLCA5MTc5NDMsIDQxNTU3LCAwLCAwLCAxMTA3MCwgMTE5MjIxLCA1MTU3LCA0MDIwLCAKLSAgICA3Mzg1OCwgNDE1NTUsIDk1MTQsIDY0ODE4LCA2NTEwMywgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgMCwgNzQzNzcsIAotICAgIDExMDI5LCA2NjY1MSwgMCwgMCwgMTE4OTMwLCA2NDUyNywgMCwgNzg3NywgNzM4MDMsIDAsIDEyNzM0OCwgMTIwMDk2LCAKLSAgICA3NDYwMiwgOTk1NSwgMTE5NTU3LCA0MDU1LCA0MjgxNywgMCwgNjUyMTIsIDExNzE1LCAxMjE5MCwgMTIzMTksIDc4NjMwLCAKLSAgICAwLCA3ODYzMSwgOTUwMiwgNjU0MjcsIDAsIDY1NDI0LCAxMjYwNywgMCwgOTczNCwgNjU0MjUsIDAsIDAsIDEyNzM1NywgCi0gICAgNzg4MzUsIDkyNDEwLCAxMDExMiwgMTA4MjcsIDAsIDk4NjYsIDc0NTI3LCA2NjY3NSwgMCwgODYyNSwgNjQzNDYsIDExMjkwLCAKLSAgICAxMDQ3NywgMCwgODYzNiwgMCwgODMxNSwgNjU0NDQsIDAsIDAsIDc0NTk1LCA2MTUyLCAwLCAwLCA2NjI5LCAxMjgyNTEsIAorICAgIDk4MzYwNiwgMTA2MjMsIDQwOCwgMTE5MDU4LCAxMjc1MDcsIDEzMjk4LCAwLCA3NDI2LCA0MTY0MSwgMTI3MTcsIDAsIAorICAgIDc2MDcsIDEwNjM5LCA0MzM5NiwgMCwgMCwgNDE2NDMsIDc0MTM0LCA5ODMwNTQsIDg3MTMsIDQxNjQwLCAxMDIyMSwgCisgICAgNDE2NDUsIDY2NzEyLCA2NjQ1LCA2NDYsIDY2NzI2LCA2NjcxMSwgNDIxMjksIDkzOTk0LCA3NzkwMSwgMzQ3MiwgODY5NywgCisgICAgMCwgMCwgOTgzODA2LCAwLCAwLCAwLCA1ODA5LCAxOTUwLCAxMTkzNTYsIDkyNDMyLCA3NDU3MiwgMCwgNDIxMzYsIDAsIDAsIAorICAgIDAsIDAsIDMyNDcsIDExOTg1NCwgNjUwMTcsIDk4Mzk0NCwgNjg0MjgsIDY2NjY4LCAwLCAwLCAxMDk4MywgMCwgMCwgMCwgCisgICAgNDE1NjcsIDAsIDAsIDAsIDE5NDYyNCwgMTE5ODUzLCAwLCAwLCA4Mjg1LCAwLCA0NTA5LCAwLCA2NjQ3MSwgMTIyMTYsIDAsIAorICAgIDQwOTg4LCA5MjU5MiwgNzQ4MDksIDQxNzI3LCAwLCA0Mjg0OCwgMjM5NiwgOTE3NzY2LCAwLCA3NDAxOCwgOTE3NTM4LCAKKyAgICA2NDk0MCwgNzAyNywgMzg4NiwgMCwgNDI0NTcsIDExOTAwOCwgMCwgOTk2LCA2ODEyMywgOTQwNTgsIDQyNDksIDAsIAorICAgIDkxNzU5NCwgMTE3MDcsIDgyMjIsIDAsIDc5MzksIDkyNDU0LCA5MjQ2MCwgMTI3ODAxLCA5MTc1OTIsIDEyODM1OSwgODUzNCwgCisgICAgMTI3MTU0LCA0MDk4MywgMCwgOTgzMjM0LCAwLCA3MjAxLCAxMjU2MSwgMCwgNDIzNzEsIDEyNTU4LCAxNTQwLCA5MTc1NDksIAorICAgIDEwMDUyLCA0MDk4MiwgMCwgMCwgMTQ4OCwgMCwgMCwgMCwgOTE3NTU5LCAwLCAwLCAxNTYzLCAxMjgwMzQsIDk2MTksIAorICAgIDk4MzkzMSwgMCwgMCwgMTI3ODcyLCA3MTM2MywgNTgwMywgNzc5NywgNjA3MCwgMTAwMDYsIDAsIDI5MjIsIDYwODIsIDAsIAorICAgIDY1MDA5LCA5ODM5MzMsIDEyNTY3LCAxMjg3MDMsIDAsIDQxNDEyLCAwLCAwLCAzNjA3LCA5MjAwLCAxMDA0NiwgOTYxMiwgCisgICAgNDIxNTMsIDgyMTgsIDk0ODUsIDAsIDIwMzIsIDc4MzU0LCAwLCAwLCAwLCAwLCAwLCA0MzA4NSwgNjA1NywgNTA4LCAKKyAgICA5Mzk2OCwgMTI4MDE1LCA2Nzk2OCwgMCwgOTI0MDUsIDAsIDAsIDYzOCwgNjA4MywgMTE5MDcyLCAwLCAwLCAyMzA1LCAKKyAgICA3ODM0OCwgNjgwOTYsIDAsIDYwNTYsIDY2NTksIDY3OTY5LCAwLCA2MDg1LCAwLCAwLCAzOTE1LCA0MTYzNCwgMCwgNDE2MzksIAorICAgIDYzOTEyLCAxMTk0MSwgMCwgNDAyOCwgMTc4NywgNDIxODAsIDQzMDk2LCA0Mzc1MywgMzI0OSwgMTc2OCwgOTM5ODIsIAorICAgIDEyMzI4LCA1MDEsIDkzOTg1LCAxMDYwMSwgMCwgNTgzLCAwLCA0MTk3NywgMCwgNjYwMDQsIDExOTM1MCwgNjUwNSwgCisgICAgNzQwMTAsIDAsIDEzMDY0LCA1NTI2NywgMTIwODEwLCA2NTAwLCA1NTI2LCA2NTA0OSwgMCwgNzM3NjQsIDAsIDkyMzc2LCAKKyAgICAxMjc0NSwgOTY3OCwgMCwgMTIwNTg3LCA5ODY5LCAxMjg4MTUsIDE3NzEsIDAsIDg5MzYsIDAsIDAsIDQyMDgsIDc4MzQxLCAKKyAgICA3ODU2NywgNzgzNDIsIDAsIDk4MzQ0OCwgNzQxMDEsIDAsIDExNzYyLCAwLCA5MjQyMiwgNzc5OTcsIDY4MDEwLCA2NjQ3NSwgCisgICAgMCwgNTAyNywgNzgxNzIsIDEyODg3OCwgMCwgNTA2OSwgNzM4NjIsIDUwMjgsIDk4OTcsIDAsIDczNzM5LCA1MDI2LCAKKyAgICA5ODMyNDcsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgNDE5MDEsIDc0NzkwLCA3ODEzOCwgCisgICAgMTE5MzYxLCA5ODM1NjQsIDQzMTA2LCA1MDI5LCA2NTMwOSwgMTU4MCwgMzU5OCwgNjg0MjQsIDQxMDcwLCA3NzkwMywgMCwgCisgICAgMzQ0MCwgNzgyMTUsIDE1NjIsIDEyODY1NiwgMTI3MTc1LCAxMTkzNTgsIDE3MTYsIDk4MzY3MCwgMTA2MDAsIDkxNzg2NywgCisgICAgNjIwLCA0MTAwMSwgNjAyOCwgMCwgNDI4OTIsIDAsIDc0ODIyLCA1MDI0LCAxMjA4MjksIDQxMDAzLCAwLCA1MDI1LCAKKyAgICA2OTg5MiwgOTgzMjA3LCAwLCAxMTg4ODUsIDAsIDY1NTU3LCAwLCA3NDU0MSwgOTgzNTg3LCAxMTU5OSwgMTI4MjA5LCAKKyAgICAxMTYwMiwgNjI0MywgMTE1NzQsIDExNTgxLCAxMTU5NywgMTE1OTgsIDYyNTMsIDYxMDUsIDExNTg0LCA3NDE5NSwgMTE1NjksIAorICAgIDY1Mjc1LCA4OTA2LCAxMjcwOTYsIDU3NTUsIDI2MzYsIDAsIDEwODE1LCAxMTYxOSwgMjMwMSwgNDE1NDAsIDc4MTUsIAorICAgIDExNjE2LCA2OTc5LCAxMjA4MCwgNzcyMSwgMTE2MDQsIDc4NjksIDE1OTIsIDAsIDQyMTUyLCA3ODQ5OCwgNDEwNDgsIAorICAgIDkxNzc2MywgODI5LCAwLCA5MjQwNiwgMTk5NTAsIDAsIDEyNjQ4MiwgNjYxNiwgMCwgMTE4ODc1LCAxMDk1MywgMzkxLCAwLCAKKyAgICA2OTc4NSwgNDgyLCA0MjI5NiwgMTE1ODgsIDAsIDQzNjA2LCAwLCA2ODM5NywgNjYzNzAsIDc0NTA2LCA0MjMzNSwgCisgICAgOTgzMTg4LCAwLCAwLCA3NTM4LCA1MzE1LCAxMjA2NDQsIDQyNDkxLCAwLCA0MjA2MSwgMTI4MDg4LCA0NTc2LCAwLCAKKyAgICA2ODQxNywgNDM4MDksIDQyNzcsIDAsIDQwMzksIDY0NDcyLCA0MjMzOCwgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIAorICAgIDExMzM3LCA3ODIwOSwgOTE3ODIwLCA2Mzk4OSwgMzk1OCwgMTIxMzIsIDE4NDksIDAsIDk5MjEsIDQyNDUxLCA0MjUzLCAKKyAgICA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgNDExNjAsIDAsIDM2MTgsIDc4MzM4LCAwLCA0MzMwMCwgNTE1NiwgOTI2MjksIAorICAgIDAsIDkyOSwgNjgyNywgNDIwMzUsIDQyNDM3LCAxNTU1LCAwLCA4NjkxLCA2NjQzNSwgMjIxNSwgNDE2NjIsIDk0MDEwLCAwLCAKKyAgICAwLCAwLCA5Mzk1MiwgNDU3OCwgNjQ1MTMsIDQxNjY0LCA5ODM3MjUsIDQyNTc4LCAxMjg3OTQsIDQxNjYxLCA3ODcxNSwgCisgICAgNDMyNjcsIDkzNTYsIDAsIDAsIDAsIDEyODYsIDEwMTY2LCAwLCAwLCA2NDcwNywgOTgzMTI3LCA0MjQ3NiwgNzczMCwgCisgICAgOTgzODUwLCAxMjg1MjIsIDQyNDgzLCAwLCAwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCA0MzM1OSwgMCwgNjY0MSwgNTI1LCAKKyAgICA0MTYyNywgOTE3OTIzLCA4NzYzLCAxMjgzMDQsIDQxNjI4LCA1MzMsIDExOTMxLCA2NTIyNSwgODMyMSwgNDI1MDQsIAorICAgIDQyNTgxLCAwLCA2OTE1LCA0MjMxMCwgNDM3NywgODU1OSwgMCwgNzQzNjAsIDAsIDEzMTkzLCA2NDM1MCwgMTE2NjYsIAorICAgIDg2NzksIDQxOTI0LCAxNTc2LCA3NzM1LCA5MjM5OCwgMCwgNzM4NDAsIDk4MzA5MiwgMTEzNzQsIDc4MDQzLCAxMDg4OSwgCisgICAgNDM0NjEsIDc3NTcsIDQyNDYyLCAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgMjcxOCwgNDE2OCwgNzM4NDIsIDEzMzA4LCAKKyAgICAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIDAsIDc3OTQ4LCAzNjMsIDExMDE1LCA3Nzk0NywgNzc5NDQsIDY0Mjk2LCAxMjcwOTAsIAorICAgIDY2NjkyLCAxMjA4MjYsIDAsIDY2NDkyLCA2NTkzLCA2NDYyNSwgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDAsIDEwMDEzLCAKKyAgICA2NDQzNCwgOTI1MjAsIDEyNzA5NSwgOTQ5MiwgMTE3ODIsIDY0MzgyLCAxMjgzMywgNzc4MzAsIDAsIDEyOTcsIDQxNjMwLCAKKyAgICA2MzAsIDEyNzA5NCwgMCwgMTIwNzc0LCA5MjQ2NSwgMTA0MywgNDM2NTIsIDY2MjIzLCAxMDA5MCwgMCwgMTI4NjY0LCAzMTMsIAorICAgIDkxNzU2MywgNDE4ODEsIDAsIDQyMzExLCA3NDQ1LCAwLCA1NzUwLCAxMDc1OSwgOTQxOSwgNTUyMjIsIDk0MDUsIDExMjY4LCAKKyAgICA0MjkxOSwgOTM5OCwgODUyNiwgOTM5OSwgOTQyMiwgMCwgNjY0OTUsIDAsIDAsIDEyNzIzOSwgNDE3MTgsIDEwNzA3LCAKKyAgICAxNjAzLCAwLCAxMTkwMDMsIDAsIDYzMSwgNzc5NTIsIDY5NzAzLCAxMzE2MSwgNjUyNzIsIDAsIDEwNTQ2LCA3NDIxMCwgCisgICAgNzgxMDEsIDExNjAwLCA3Nzk2MSwgMjc5NywgNzM4MjEsIDQyNDI3LCAzMDYsIDcxNCwgMzA1OCwgNDIzODEsIDc3OTYyLCAKKyAgICAxMjcwODAsIDEyMzUxLCA0MjM5NSwgMCwgMTE2MDcsIDAsIDQyMjgyLCA3Nzk3MSwgNzc5NjcsIDkxNTcsIDczNzY1LCAKKyAgICA2NjM2NCwgNDI0MzMsIDc3OTY0LCA3NjAzLCAxMjgwMywgMTgwLCA0MjE0MSwgMCwgMTIwNjEyLCA2NjQ5NCwgMTI2NzQsIAorICAgIDgyNDQsIDM2MiwgOTI0MzksIDAsIDgwMzcsIDQzNzc3LCAxMTUzNSwgMCwgNzQ4NDUsIDUxODUsIDcxNjUsIDU1MjEsIAorICAgIDEwMzM0LCAyMDkzLCA3MTMyOSwgMTAzMDIsIDEyODExMiwgMTAxMDQsIDEwMjcsIDUxODEsIDAsIDAsIDEwNTIzLCAxNDQ2LCAKKyAgICA0MjMyMCwgNDE2NDYsIDk5MSwgNTE4OSwgNDI0NzIsIDQxNjQ3LCAxMjAxMDUsIDE3MjIsIDU1ODEsIDQyODk4LCAzNDA1LCAKKyAgICAwLCAxOTQ2NDQsIDU1MjMsIDAsIDQyNjIwLCA5MjQ0NywgOTgzODEwLCA5NTQ5LCAwLCAxMDU0OSwgNTUyODIsIDk2NjEsIAorICAgIDQzNjgyLCAwLCA3NzkxMCwgMTIwMDI2LCA3ODcwOCwgMCwgNzc5MTEsIDAsIDQxOTkxLCA5ODM4ODQsIDAsIDc2MzAsIAorICAgIDk4NDYsIDc2ODQsIDEwMzUwLCAwLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCA3Nzk4MCwgNjY0ODUsIDc3OTc3LCAKKyAgICA0MjI3NywgNzc5NzQsIDQyNDU2LCA2NTY2NywgMTI3MDM3LCAxMjMzMCwgMTI4MjcyLCAwLCA0MjQxNywgNDIzODMsIAorICAgIDY2NjMwLCA0MTM0NCwgNjI5MywgMCwgNjYyNTIsIDc3OTg0LCA3NDQ0MywgMCwgMTAyMDksIDgzMTMsIDQxOTUsIDc0NDM1LCAKKyAgICAxMzE2LCA2NjY5MCwgMTIwMDMyLCA2MzMyLCA2NDg5NCwgMCwgNjU4NzEsIDc4MDYwLCAxNzM2LCA5ODM2NzUsIDM5MDEsIAorICAgIDEyMjI4LCAxMjAxNTEsIDY1MjAwLCAzMzgzLCAxMDQ0NiwgNzg4NDEsIDY5MywgOTEzMCwgMzE0LCA2NDE0OSwgNDI0MjAsIAorICAgIDExOTQ5LCA5ODM2NjAsIDEyMDE1MiwgMTEwMjYsIDEyODc4OCwgNTMzMiwgNjk0MCwgNjQxNTQsIDEyNjM1LCAxMjcwMDcsIAorICAgIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCAxMjA3NjMsIDc4ODQwLCA3MTM2OCwgMTI4MjQsIDAsIDQ1MjgsIAorICAgIDUzMjAsIDYzMDEsIDQzNjYyLCA2MTMzLCA5MzM5LCA5NDYzLCA0MjM0NiwgMTA5MjIsIDY0NTYwLCAzNzU3LCAwLCAwLCAwLCAKKyAgICA2NTg2OSwgNzM3NjAsIDI1NjksIDAsIDIzMjYsIDY1NzQwLCAyNTY1LCA0MjQ1OSwgNzU5NiwgNzkyMSwgOTgzODU5LCAKKyAgICA3NDA5NSwgMTI3OTgxLCA0MTg0OCwgMjU2NywgNjYwMDYsIDAsIDQwNDQsIDkyNjQ2LCAwLCAxMjIzMywgOTgzODYyLCAKKyAgICAxMDIzLCA0NzQsIDAsIDExOTgxOCwgMCwgMCwgNDI0ODcsIDY1NTU2LCAwLCAxMjc4NjYsIDQyMjk1LCAwLCAwLCA3MTMyMiwgCisgICAgOTI1MTgsIDk4MzUsIDY2NDk5LCAwLCA1NDE3LCAxMjI3NSwgMTA4OTUsIDAsIDI3NCwgMCwgMTg1OCwgMCwgMCwgNTUyNTEsIAorICAgIDEwMTE4LCAzMTMzLCAxMjgwMDgsIDczNzk1LCAwLCA5NjEwLCA4MDY4LCA4MTk3LCAwLCA2OTksIDAsIDQxNjY1LCA1ODY4LCAKKyAgICAwLCA5MjY5NSwgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgMCwgMTkyMywgNjU1ODMsIAorICAgIDY1ODAyLCA5Mzk3MCwgNjQ1OTcsIDQzNDQ0LCAxMTkxODQsIDkyMTk3LCAwLCA2NDY0LCA3MDM2LCAyOTk2LCAxOTM3LCAKKyAgICA5ODM3NDIsIDAsIDQxODM1LCA0MDQ3LCA0MTg0MiwgMCwgNjQxMDcsIDAsIDAsIDExMDE3LCAxMjA2MDEsIDAsIDI5MywgCisgICAgNzc5NjYsIDkyMTY5LCA2NDc5MSwgNDE4MjcsIDQyNDY2LCA0MzQyMiwgMTA1NzksIDg1NjAsIDcxMzUwLCA2NTQxMywgCisgICAgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAxOTQxLCAzOTAwLCAwLCAxNzEzLCA3Nzk2OSwgMCwgNzM5NTcsIDExNDA3LCAKKyAgICA0MjQ0MSwgNDE5NzEsIDYyOTcsIDEyMDA5OCwgNjQxMDUsIDEyODA4MCwgNDI0ODEsIDExNzE2LCA2NjQ3MywgNzE3OSwgCisgICAgNDIyODksIDAsIDY0MTAzLCA5NjksIDAsIDkzNTIsIDAsIDYxNjUsIDY0MTAwLCAwLCA2NjMyLCA3Mzg2MSwgNDI0MDIsIAorICAgIDc0MzI3LCA3ODA2LCAwLCA4OTE0LCAwLCAwLCAzMTgzLCAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIAorICAgIDY3ODQ5LCA1NzQ2LCA3Mzc0OSwgMCwgNjQ0MTYsIDQyNDIyLCAwLCA5ODMwNDYsIDcwODIsIDczNzc1LCAzMzgsIDUwNTksIAorICAgIDE5NDcxOSwgMCwgNDIzMjgsIDEwNzY3LCAwLCA4MTE1LCAwLCA3NDc1OCwgMCwgODIyNywgMjA3MywgMTIxOCwgOTE3NzkwLCAKKyAgICAwLCA2NTg0OCwgMCwgMCwgNjk4NjMsIDAsIDEyNjk4NywgNDQ4NiwgMCwgMCwgMCwgMTA5MjUsIDAsIDAsIDAsIDk4MzU4NiwgCisgICAgNDIzMDksIDEwMjU3LCA2NTE5MSwgMTAyNzMsIDAsIDEwMzA1LCA0MjQ2MSwgMCwgNDIzNDksIDg4MzIsIDc4MDUxLCAKKyAgICA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIDY5ODc0LCA3Nzk0LCAwLCA0MjQyOSwgCisgICAgNjM3NywgNDIzMTYsIDExOTAyNiwgMzY2OSwgMzk2OCwgNDI0NjgsIDcxMzE5LCA2OTY1OCwgMCwgNjU0MDIsIDExOTU4MSwgCisgICAgMCwgMCwgNjQ5MzMsIDAsIDQxOTYwLCA2Njk5LCAwLCAwLCAxMjgzNTQsIDY4MjMsIDQyMzkxLCAxNTg4LCA2NTQwMCwgCisgICAgODQwOSwgNzgyMjMsIDE5OTY3LCA2NTM5OCwgNzg3LCA3MTMxNSwgOTE3OTM5LCAxMjc3NDQsIDYxMTUsIDIwNzgsIDQxNjU0LCAKKyAgICA0MjQ4MCwgMCwgOTI2NTAsIDQxNjU1LCA2NTQwMSwgNDM5NzUsIDAsIDAsIDAsIDY0NCwgNjU1MDAsIDQxNjU3LCAxMDc3OCwgCisgICAgMzY1OSwgOTUzMywgMTg0LCAxNTUzLCAxMzEwNywgNjU0ODQsIDY5NjQ4LCAxMDUwMiwgNzQ0NTcsIDAsIDAsIDQxNTU0LCAwLCAKKyAgICA4MjIwLCA5MTc5NDMsIDQxNTU3LCAwLCAwLCAxMTA3MCwgMTE5MjIxLCA1MTU3LCA0MDIwLCA3Mzg1OCwgNDE1NTUsIDk1MTQsIAorICAgIDY0ODE4LCA2NTEwMywgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgMCwgNzQzNzcsIDExMDI5LCA2NjY1MSwgOTgzMDY4LCAKKyAgICAwLCAxMTg5MzAsIDY0NTI3LCAwLCA3ODc3LCA3MzgwMywgOTgzNzg5LCAxMjczNDgsIDEyMDA5NiwgNzQ2MDIsIDk5NTUsIAorICAgIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgMTIxOTAsIDEyMzE5LCA3ODYzMCwgMCwgNzg2MzEsIAorICAgIDk1MDIsIDY1NDI3LCAwLCA2NTQyNCwgMTI2MDcsIDAsIDk3MzQsIDY1NDI1LCAwLCAwLCAxMjczNTcsIDc4ODM1LCA5MjQxMCwgCisgICAgMTAxMTIsIDEwODI3LCAwLCA5ODY2LCA3NDUyNywgNjY2NzUsIDAsIDg2MjUsIDY0MzQ2LCAxMTI5MCwgMTA0NzcsIDAsIAorICAgIDg2MzYsIDk4MzkxOCwgODMxNSwgNjU0NDQsIDk4Mzc4NCwgMCwgNzQ1OTUsIDYxNTIsIDAsIDAsIDY2MjksIDEyNzEwOCwgCiAgICAgMTIwMTcxLCAwLCA3NDU4OSwgNDM5OTMsIDAsIDY5NzkwLCA2NDQzNSwgMCwgNDM2OTAsIDExMDQ2LCAxMTQ5MCwgNDI3MzAsIAogICAgIDQ0ODUsIDEyNzEwNywgMCwgNjQ5MjYsIDAsIDAsIDAsIDU4NjksIDEyNDM3LCA0MjcyOCwgMCwgNzA0MCwgMzU4OCwgMCwgCiAgICAgMTI4MjUsIDAsIDAsIDEyNzI1LCAwLCAwLCA3ODY0MiwgMjIzLCAwLCA2OTY3NSwgMTIwMTY2LCA0MjQ0NCwgMCwgNjQ0OTksIAogICAgIDY1MjQ1LCAwLCAxMTcxLCAwLCA2OTcxNywgMCwgMTgwNSwgODc3MiwgNDM4MjAsIDAsIDk5MzAsIDY1MjQ3LCA3ODYxOSwgCiAgICAgMTIwMTExLCAyMzM4LCAwLCAxMTg4NTMsIDAsIDQyNjc2LCAwLCA2NDgwMCwgNjUyMzYsIDY3NjQ0LCA2ODEyNiwgMTIxMywgCi0gICAgMCwgNjQwNzUsIDc5NywgNjQwNzQsIDg3MzQsIDQyMTIsIDAsIDY0Mzg3LCA0MTE1LCAwLCA1MDA1LCA2NDA3MCwgNjQwNzMsIAotICAgIDEwNjc5LCAwLCA3Nzk1NCwgOTQwMiwgNjQyNzYsIDQyNiwgMCwgMCwgODI1MSwgMTAxMzYsIDY1NDM2LCAwLCAyMTIwLCAKLSAgICA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDEyMDE1OCwgMTA3MDEsIDE3NjQsIDMxMDEsIDEyNzgxNSwgMTI4NTgsIDEyMDE1OSwgCi0gICAgMCwgMTEzNzMsIDYzNzgsIDEyNzg1OSwgMTIwMTAzLCA4NjYzLCA5MzEyLCA0MTY0NCwgNDUzOSwgMjEyOSwgMCwgOTIyMiwgCi0gICAgMCwgMCwgNDI1OSwgOTA5MiwgNzQ1NjcsIDQxOTYxLCAwLCAxMjcyNCwgNjYzNTcsIDQyMzMxLCA2NDkzNSwgMCwgMCwgCi0gICAgMTI5MywgNzk0NywgMjEzMiwgMCwgNzQ1OTMsIDEyMDMwOCwgMjQ1NCwgNDI3MTcsIDM2MTMsIDEyODgzNywgMCwgMCwgCi0gICAgNjU4ODgsIDg4MTYsIDEwOTc4LCAxMDg0MCwgMCwgMTA2NjgsIDAsIDQzMDg3LCAxMjU5NSwgMTIwMzA0LCAwLCA4ODIyLCAwLCAKLSAgICAxMTU3LCA2NDkwMywgODYzOCwgMCwgMCwgMCwgMCwgMTIwMzE5LCA4MjM1LCAxMjAzMTYsIDQ0MDUsIDEwMDg2LCAxMjAyNDcsIAotICAgIDAsIDY5MjE2LCAwLCA2NTQzMCwgNzQwMTMsIDYwNzksIDY4MTcsIDEwNzY0LCAxMjc5MTAsIDY0MjkxLCAxMjgwNTEsIDk5OCwgCi0gICAgMTIwMzEyLCAxMTA2MiwgMTMxNywgNjQzMjcsIDE1NTgsIDAsIDE5OTEsIDc4ODIsIDQyMjU0LCAwLCA0MTcwMCwgNTMwLCAwLCAKLSAgICAxMDQyOCwgMTE5MzM1LCAxMjAwMiwgMTE5MzM2LCA1NzQyLCA0MzA3NiwgNDY5MiwgNjQ2MzAsIDQxODIzLCA0MDA3LCAKLSAgICA1MDA0LCAxMTkzMzQsIDc4OTYsIDc1MSwgNjU5NSwgNjU5NiwgMCwgNjYzNzMsIDAsIDAsIDY0OTA4LCA5MjY5MSwgNjMxMSwgCi0gICAgMCwgMTIwMDQsIDExOTE5MiwgMTIwNDksIDQzMTA4LCAxMjAzMjYsIDAsIDQxNzA1LCA5MjE4OCwgNjU5OCwgMCwgNjU5OSwgCi0gICAgMTIwMzM0LCAwLCA0MjE0OCwgMTE4ODI1LCA2NjAyNywgMCwgNjU5NywgOTQxMiwgODM0MCwgMTE4MjQsIDY0NzQ1LCAwLCAwLCAKLSAgICAwLCAxOTg4LCA1NDA3LCA2Nzg2NSwgMjQzMCwgNDE2NzgsIDAsIDEyMDI0MywgMjMzNiwgMCwgMCwgNzg4NzEsIDEyMDQ0MiwgCi0gICAgMCwgMTkyMSwgMTA5NDcsIDE5OTI3LCAwLCA2NTQwNiwgMCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIAotICAgIDkyMjksIDEwOTU2LCA0MjI4NSwgNDE2NzQsIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDAsIDU3NzQsIDgzMjUsIDAsIAotICAgIDY1NDAzLCAwLCAxODU0LCAxMDc5NCwgMCwgNjc2NjAsIDAsIDAsIDc4MzU5LCA1MjgwLCAwLCA0MzQ0LCAxMjkwNSwgCi0gICAgNjU0MzMsIDYwNzYsIDY0NzkzLCA0MTYxMCwgNzY4LCAxMjA3NCwgNDQyLCAwLCA2ODE2MiwgNjQwODEsIDEyOTM0LCAKLSAgICA0MTY4MiwgNjU0MzIsIDQxNjkzLCAwLCA2MDcxLCA2NTQzNCwgMTI3NDY3LCA0ODA0LCA0MDUzLCAwLCAxMjc0NjksIAotICAgIDE5NDY1MywgNDE2OTYsIDQ2NywgNjk4MjMsIDEyNzQ2MywgNjk3OTcsIDAsIDAsIDg0MjEsIDEyNzQ3MiwgNjk2ODIsIAotICAgIDQzNzA1LCA1MDIsIDAsIDY1NDMxLCAxMTkwNTYsIDAsIDEyMDQzLCAxMzAzLCAzMTYsIDkyNDYyLCAyMDI5LCAyMTM2LCAKLSAgICAxMTkyNDYsIDExNTMzLCA2NDM2NSwgNDM0ODAsIDkyNjM5LCA0ODYwLCAxOTQ2NDUsIDEyNzg3NywgNDI0ODgsIDAsIDk1ODMsIAotICAgIDEyODg0OSwgNTU0NiwgODAxOSwgNzM4NTYsIDAsIDAsIDAsIDU1NDQsIDIzNTUsIDEyMTUwLCA2NTcyNSwgNTU0MywgCi0gICAgNzc5ODksIDYzNzUxLCAxMjEzNywgNTU0OCwgNzc5ODUsIDAsIDY1NzI3LCA2ODM4OCwgNjU3MjYsIDYwNzcsIDEyODM1MiwgCi0gICAgNjU0NTIsIDAsIDExMzAxLCA3ODAxMywgNzgwMDgsIDc4MDEwLCA5ODc0LCA3ODAwNywgMCwgMTMxOSwgMzA1MCwgNjU0MTAsIAotICAgIDAsIDAsIDc4MDE2LCA3ODAxNywgNDI4MzAsIDQzOTk2LCA2NjcxNiwgMTI4MTM3LCA0NjkxLCA5MjI0MiwgOTM0NSwgNjIxLCAKLSAgICA5MjcwOSwgMTI4MjIyLCAwLCA2NTQxMSwgMCwgNDExODIsIDczODgxLCA2NTQwOCwgNzM4OTksIDc4MDI0LCA5NDc0LCAKLSAgICAxMDU0NSwgMTE5MTE4LCAxMDg4NywgMzc4NiwgNjU0MDksIDg4OTQsIDQzMTc5LCAxMTk2MTEsIDc5MjMsIDM3MTYsIAotICAgIDkyMzYzLCA5OTk2LCA4NTA4LCAwLCA3MDEyLCA4MTk1LCAxMjc4MzQsIDk1NjYsIDAsIDM3MjIsIDAsIDQxNzA3LCA4NDkzLCAKLSAgICA1NDUsIDk1NzUsIDQxMzc5LCAxMDA1MCwgMTI3MTgsIDAsIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAwLCAKLSAgICAwLCA5MTE5LCAyNzg3LCA3OTIwLCAxMTg4MjMsIDQwMjEsIDIwMTIsIDc5ODUsIDAsIDExOTY2MywgMCwgMCwgNzgwMjEsIAotICAgIDc4MDIyLCA0MTAsIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDAsIDQxNjU5LCA0MTY3MSwgMTgyNywgMCwgNjQzOTYsIAotICAgIDEwMTI2LCAxMjExNiwgNDE2NzMsIDEyMDM3MCwgMTE0MjIsIDc4MTQxLCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgNjg0MTIsIAotICAgIDQxMzQ1LCAxMjAzNjIsIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAyMTA0LCAKLSAgICA2NDg1OCwgMzYxLCAxMjAzNTcsIDg0NSwgMCwgNDE1NjAsIDExOTcwLCA0NTYyLCA5MTc5MjAsIDI5MjYsIDkxNzkxOSwgCi0gICAgNDU2OSwgNzQxMzAsIDAsIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMTg4OTEsIDY1NjI5LCAwLCAKLSAgICAxOTQ4NTgsIDAsIDAsIDEyNzU0NSwgMTIwNTQzLCAwLCAwLCA2MjkxLCAwLCA3ODYzOSwgNDE2NjksIDcwOTQsIDkxNzkyMSwgCi0gICAgMCwgMCwgNzQwNTQsIDEyNzc1NCwgMTk1MDI5LCAwLCA4MzksIDAsIDc2OTUsIDg3NjksIDY1MjQ2LCA0ODI5LCAwLCA0ODU5LCAKLSAgICA2NDQ2NywgMCwgMCwgMTE4OTk4LCA3MjA2LCAwLCA2NjQ3LCA0Mzk4NiwgMCwgNjk3NjYsIDAsIDY0NzY0LCA0MjEwLCAwLCAKLSAgICAxMjc5MzYsIDgwNCwgMCwgMCwgMTIyOTgsIDAsIDY2NjUzLCAwLCA2NDkyNCwgMTAwOTEsIDczOTMxLCA5NDY4LCA3NDI0NSwgCi0gICAgMCwgMCwgNzQyNDYsIDkyNTAzLCAxMjgzOSwgNjQ2NjksIDkyMjAyLCAwLCAxMjc5LCAxNDI1LCA2MjI0LCAxMTkyMjksIAotICAgIDExMDQ5LCAwLCA5MjY5NywgNDMyMzksIDg0ODIsIDkyNDQwLCAwLCA1MDMyLCA2OTY3NywgMTE5NDAsIDY3ODg4LCA2NjQsIAotICAgIDEyMDQzNywgNTAzNCwgMCwgMCwgMTI3NTI1LCA0MjcwMiwgNzM4ODgsIDAsIDEzMjk0LCA2Nzg3MywgNjQ4NjksIDYwMzIsIAotICAgIDAsIDkxMTUsIDc0MzAsIDEyMDM3NywgMCwgMTIwODE5LCA2ODM4NywgMTIwMTY4LCA3MzkxMywgMTIwMTcwLCA0MTE2MSwgCi0gICAgNTUxOCwgNDE3NCwgMTA5OTMsIDQxMTYyLCAxMjAxNjAsIDY0NTI4LCAxMTY5LCA0MzQsIDQxNDM3LCAxOTA1LCA2MDM0LCAKLSAgICA0MTE2NCwgNjQ3NDQsIDk1MjgsIDExODg2NywgMTI4ODAwLCA1MjQsIDAsIDc0MDI5LCA3ODgsIDc0MDI3LCAwLCAxOTQ2MzgsIAotICAgIDAsIDE2NjMsIDEwNDE5LCA3NDAyNSwgNDI2MzYsIDAsIDY5NzI1LCAwLCAxMjA2NTYsIDAsIDY3ODc2LCAwLCAwLCAwLCAKLSAgICA2Nzg5NywgNzQwMzksIDAsIDAsIDExMzk1LCAwLCAxMTkxMDcsIDQzNjEyLCA2NDM0NCwgMCwgMCwgMTA4NTUsIDU0NDUsIAotICAgIDkzNTUsIDAsIDY1MTk4LCA3MzkxLCA4OTg5LCAyMjEsIDY1Njg2LCAwLCAwLCA4MDEwLCA3MTkxLCA0OTYyLCA2OTc3MiwgCi0gICAgODg1NSwgMCwgMCwgNjQ0NjksIDEyMDQyNiwgMTA1NTUsIDAsIDQzMzMzLCA5MjI5OSwgMCwgMTIwNDI3LCAxMDQ1MSwgMCwgCi0gICAgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgOTk0NywgMTIwMTQ5LCA3ODMxNywgMzg3MywgODM2NywgMCwgMTIwMTQ2LCAKLSAgICA0MzQzMywgNDM2NDksIDExOTg3LCAwLCAwLCAxMTAxMCwgMTI3MjMsIDc0MDU5LCA3NDA2MiwgNjIxNywgNTg5NiwgMCwgCi0gICAgNzY4MiwgNzQwNDksIDE0NjIsIDEwMjM1LCAwLCAwLCAwLCAwLCAwLCAwLCA0MjU5NSwgMCwgNzQ0MDIsIDExODg2MCwgMCwgCi0gICAgMTIwNDE5LCA5MjQ5NywgNzQwNTIsIDAsIDAsIDEyMDU0OSwgMTE5MDgyLCA2NDI5NSwgMTIwNDE4LCAwLCA2NDc2NSwgCi0gICAgNzM5MjMsIDEyMDQxNywgMTIwNjYyLCAxMjA3MzAsIDE5NDcwMiwgNjIxNiwgMCwgMTA3NTUsIDk0NTUsIDAsIDgxMjQsIAotICAgIDEyNzA0MiwgOTQ3MCwgNjk0NCwgMTI3NTQwLCAwLCA2OTY4MCwgMjgyOCwgMCwgNTMxLCA0MjYzOCwgMCwgMCwgMCwgCi0gICAgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIDAsIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCA3ODU2MiwgMTk5MzYsIAotICAgIDc4MzMsIDEyMDY5MSwgMCwgNDI1OTksIDQyNTk3LCA0MjcwOSwgMTIwNDA5LCAxMjcwNDQsIDAsIDg1MzcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQxMTk5LCAxMDEyMSwgMjAyOCwgMCwgMCwgNjk3MTUsIDAsIDMwNjIsIDAsIDc0NDQ3LCAxMjYwOCwgMCwgCi0gICAgNjY0NDAsIDc1NDUsIDk3MDAsIDEyNTgwLCAwLCAxMjA3NzcsIDEyMDUwMiwgNDExNTUsIDAsIDc0MDcxLCAwLCAwLCAKLSAgICAxMjcxMywgMCwgMCwgMCwgNzg3NzIsIDAsIDE3MzQsIDAsIDAsIDEyNzA0MCwgNjQ1OTQsIDI0NTYsIDIzMSwgMCwgNzQxNjcsIAotICAgIDU0MiwgMCwgMTE4Nzg2LCAwLCAwLCAxMjMwLCAwLCAwLCAzNTk3LCA0NDQ2LCAxMDU4NCwgNzQyMzUsIDkyMjE1LCA0MDM3LCAKLSAgICAxMjc5MzgsIDgzNTIsIDAsIDU2ODcsIDAsIDY0NTE1LCAwLCAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgNzg0MzQsIDk3MDQsIDAsIAotICAgIDAsIDc0Mjg0LCAxMjgyODUsIDAsIDg2NjAsIDAsIDAsIDAsIDc4NzczLCA3NDQ4MiwgNDQ4MywgMTcwOSwgNjk3MjEsIAotICAgIDk5MDksIDYwODAsIDAsIDEyMDM1OCwgMTc0NiwgMTMxNSwgODY2NywgMCwgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMCwgCi0gICAgNDQ4MCwgMTEyNjYsIDEyODE1MiwgMTIyNiwgNjkzMCwgMCwgMCwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDAsIDc0Nzg1LCAKLSAgICAxMjAzNTYsIDAsIDAsIDQxNTAwLCAwLCAzMTEsIDExNDUzLCA2MjIxLCAxMDYwOCwgNjQ5NDMsIDc0MjgwLCAxMDg3NywgCi0gICAgMTE4ODY4LCA2NDg4NSwgNzQyNzIsIDAsIDAsIDAsIDEyMDczNiwgNzQzMTIsIDM0NSwgMCwgNzQ0NTYsIDY0NjA2LCA5OTE3LCAKLSAgICAwLCA5MjIzMSwgNTAzNywgMCwgMTc3NiwgODQyMiwgMCwgMTE4ODE0LCA0MTUwOCwgNDEyMDEsIDMyMywgNDMzMjgsIDAsIAotICAgIDQyNjk4LCAxMjk1LCAwLCA0NjI1LCAwLCA0NjMwLCAxMzExNywgMCwgMTI4NzcyLCA2NTEyMywgMTEyOTMsIDI2NjgsIAotICAgIDExMjg4LCAwLCA0MjY0MCwgNjU2NjYsIDI1MTksIDkyMzY5LCA2NTQyMCwgOTI0NzksIDAsIDQyNTIsIDUwNDksIDQyNjU5LCAKLSAgICAxMTkwMTEsIDcwNiwgNzc1NCwgMTA4NTQsIDg3MzgsIDAsIDY1NDE5LCAwLCAwLCA2NDksIDY1NDIxLCAwLCA2NjcwMiwgMCwgCi0gICAgMTI2NzAsIDEwMTMsIDAsIDY0OTE5LCA3MDUsIDAsIDY1NDIyLCAxMjc4MDMsIDExODMsIDAsIDcwMTcsIDQyODUyLCAwLCAKLSAgICA4MTU3LCA5NzM2LCA2NDUwMywgNjU0MTgsIDAsIDAsIDc0MDM1LCAwLCAxMTkxMywgNzM4NzQsIDY2OTYsIDAsIDg5MjAsIDAsIAotICAgIDAsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCA2NjIyNywgMCwgNDE4NCwgMCwgMCwgMTAxNzcsIDczNzc3LCAxODU3LCAwLCAKLSAgICA0NjI2LCA4NDY0LCA4NDcyLCAwLCA0NjI5LCA4NDk5LCA3ODMyMSwgNzgzMjIsIDQ2MjQsIDc4MTgsIDExOTE3MywgMCwgMCwgCi0gICAgNzgwNSwgMCwgMCwgNjkzNSwgOTIyOTIsIDc4MzI1LCA3ODMyNiwgNzgzMjMsIDQzMzI3LCA0Mzk4OSwgMTE5MDQ2LCA4NDkyLCAKLSAgICA4MjUwLCA4NDU5LCAwLCA4NDk3LCA4NDk2LCAwLCAwLCA3ODMzNiwgNzgzMzksIDk1NDMsIDc4MzM1LCA3ODMzMiwgNzc4MzIsIAotICAgIDY1ODQ5LCA3NzgzMSwgMCwgMCwgMTI0NTEsIDAsIDg2ODQsIDAsIDYxMDIsIDAsIDUyOTgsIDAsIDUyOTQsIDAsIDAsIDAsIAotICAgIDE5NTA2MiwgOTk0OSwgMTE5ODI2LCA0MzYxNywgMTE5MjE1LCAwLCAxMjA3MywgMCwgMCwgNzc4NjMsIDEzMTA4LCAKLSAgICAxMjA2MTcsIDc0Mzk3LCA0MTQ2OCwgMCwgMCwgNTI5MiwgNTUyNzIsIDAsIDE5MzksIDUzMDIsIDM5NzAsIDkxNzg3OSwgCi0gICAgMTI0NTUsIDE3OTMsIDAsIDAsIDAsIDY2NDMsIDkyNDc3LCA2NTI2MywgMCwgNzgzMzAsIDQxMjkzLCA3ODMyOCwgNjU5MjMsIAotICAgIDAsIDEzMjE5LCA5NTY5LCAwLCA3NDM4MywgMCwgMCwgMCwgNTUwMCwgODgxMywgMCwgMCwgNzQ1NjYsIDUzMjIsIDAsIAotICAgIDc4MzQwLCA0MzYzMSwgNTMyNCwgNjY0NDMsIDM3ODQsIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCA0MzMyNCwgCi0gICAgMzM2MCwgNzgzNDQsIDExNTIzLCAwLCA5MjQ4OCwgOTkyNiwgNzE5NywgMCwgNjg0MjksIDQyODk0LCA0MTgyMSwgMTI0OSwgCi0gICAgNzgzNjAsIDc4MzYxLCA3ODM1NiwgNzgzNTgsIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgNDMxNjIsIAotICAgIDQxODE1LCA0MTE1MCwgMCwgMTA1NzEsIDEwMDk2LCAwLCAwLCA3ODA3NCwgNjk0NywgNDExNTIsIDg4NywgOTI0OSwgNjU2NSwgCi0gICAgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIDc0NDY2LCAwLCA2NjcwLCA3Nzg4MiwgMCwgMCwgNDMwOTIsIDQzMzI1LCAwLCAKLSAgICAxMDE2OCwgMCwgOTc4MSwgMTI4NjU1LCA5MTkwLCAwLCA5NjY2LCA4MjY5LCA2NTk0NCwgNzQwMDUsIDEzMDE5LCAxMTY3MCwgCi0gICAgMTI3MzgzLCAzMTUsIDEyODEzLCAwLCA3ODQzMiwgNzgyNTYsIDc4MzUxLCA3ODM1MiwgMCwgMCwgMCwgMCwgMTM3OCwgCi0gICAgOTUwOSwgMCwgMCwgNzQ0NzUsIDMwNjYsIDkyMjIwLCA2Nzg0NywgMCwgOTIzNTUsIDAsIDc4MzY1LCA4Nzg3LCAxMjAzNzksIAotICAgIDE5NDYxNiwgNDE2MTgsIDE5NDYxNSwgNzgyNjEsIDE5NDYxNCwgMCwgNjQ2NTIsIDAsIDE5NDYxMiwgMCwgNzgzNjYsIAotICAgIDQyMDg4LCAwLCAxOTUwNjEsIDcxNzYsIDEyODgzMywgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgNzQ1MzQsIDgxMTksIAotICAgIDY0ODc0LCA5MTc4MTYsIDEyNzE5OSwgMTk0OTM5LCAwLCA3NDUyNSwgMCwgMCwgMTI5MzAsIDEzOTQsIDc0NTE0LCAwLCAKLSAgICA3NDUxNSwgMCwgMTE4ODA0LCAyOTk4LCA5NTI3LCAxMjA2NTksIDY1MTkwLCAxMjk3NywgNDIwOTAsIDExOTE2NSwgMCwgCi0gICAgMTE5MTAwLCA0MTIzNiwgOTIyMzUsIDQyMDA1LCA0MjAwMywgNDEyMzcsIDU4NDgsIDAsIDAsIDM2NzAsIDEyODY1NywgCi0gICAgMTk0NjAwLCAwLCAwLCA3ODkwLCAwLCAxMTI5OCwgNDMzMTUsIDAsIDYyMjksIDE1OTMsIDAsIDAsIDYxOSwgNDYzNSwgCi0gICAgNjUwODAsIDAsIDEyODAwMiwgNDEyMCwgNjUzMzcsIDY1MzM2LCAwLCAxMTgwOCwgMTE5MjE0LCA3NDExNSwgOTM2NiwgCi0gICAgNDI3OTAsIDQyMDA2LCAwLCA2NTMyNywgNjUzMjYsIDY1MzI1LCAxMDc1NywgMTUwNywgNDIyMTYsIDY1MzIxLCA2NTMyMCwgCi0gICAgNjUzMzUsIDY1MzM0LCA2NTMzMywgNjUzMzIsIDY1MzMxLCA0MjA1OSwgNjUzMjksIDQyNjg5LCA5MjQyNywgOTEyOCwgCi0gICAgMTE4ODg1LCA0MjA3MywgNjc4NSwgNjQ1OTAsIDAsIDQzNzEsIDcxOTYsIDY1MzE4LCAyMDM1LCA2NTMxNiwgNDEwNiwgCi0gICAgNjUzMTQsIDY1MzEzLCA0MjA3NCwgMTI3ODQ3LCA0MTIyOCwgMCwgNjU2MDksIDQxMjQxLCA3OTAzLCA0MTIzOSwgNDM1MzMsIAotICAgIDc4NDU5LCA3MTg5LCAwLCAwLCAwLCAxMjM1NywgNDI4MDIsIDc4NDUwLCA4NDg3LCA5MTMxLCAwLCA0NjE1LCAxMjY5NSwgCi0gICAgMTI3NzUyLCAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDAsIDAsIDU2MiwgMTIxNjksIDY1OTAsIDY5NzYyLCAKLSAgICA2NjQ1NSwgNjQ3MzgsIDMyMTksIDY4NjU0LCAwLCAwLCAxMDM3LCAwLCAyMDI1LCAxMjgyNjMsIDEzMDk4LCA3ODQ0MiwgCi0gICAgMTA2MzcsIDQ1NjgsIDU0OSwgMTU3MCwgMCwgMjgzNSwgMCwgMTA2MjQsIDQzNjIzLCAxMTA3MiwgMTI3MTkxLCAwLCAwLCAKLSAgICAxMjYwNiwgNzg0MzMsIDI4MjUsIDAsIDEwODI1LCA4MDc5LCAyODIxLCA0MTA0NiwgOTIzMjcsIDAsIDAsIDEyMDU5MywgCi0gICAgMTMwNzEsIDAsIDQ1MiwgNDEwNDksIDQyODQwLCA2MzQ2LCAyODMxLCA1NDYxLCA3NDU5NiwgMTE0NjUsIDUyMTIsIDAsIAotICAgIDY0NzAzLCAxMTkxOTEsIDQyMzA4LCA3MTgxLCAwLCA0MTMzMiwgMCwgMTIzMzMsIDAsIDE2NjgsIDAsIDAsIDAsIDExODcsIAotICAgIDAsIDQyNjI4LCA3ODU3NSwgMCwgMTI4Nzc3LCAwLCAzMjQwLCAxMjg1MTgsIDEyMTk0LCAwLCAxMTU5MSwgNDEwNjUsIAotICAgIDUzMjMsIDgxNjYsIDAsIDAsIDAsIDc0NTM1LCAxNjIzLCA2NTI5NywgMTI4ODU2LCA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIAotICAgIDEyNzI5NSwgODkxNiwgNjUwNDgsIDE5MDksIDg4NjQsIDAsIDAsIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDEyNzMwMCwgCi0gICAgOTIyOTYsIDQyMzcsIDkyNTc2LCAxMDM1LCA2NTgxNSwgMCwgNzg4MSwgNzAxLCA2NTkzNiwgMzQ4OSwgMCwgMCwgMTIwNzUxLCAKLSAgICAxMTQwMywgMCwgMCwgMTI3MTQ2LCAzNzk2LCA2ODAwLCAwLCAzOTk0LCAxMTQyMSwgMCwgMTk1MDc2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA2NDA3NSwgNzk3LCA2NDA3NCwgODczNCwgNDIxMiwgMTI3MzY5LCA2NDM4NywgNDExNSwgMCwgNTAwNSwgNjQwNzAsIAorICAgIDY0MDczLCAxMDY3OSwgMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDAsIDAsIDgyNTEsIDEwMTM2LCA2NTQzNiwgMCwgCisgICAgMjEyMCwgNDMzMDIsIDEyMjQsIDAsIDY1NTc2LCA3NDE5MiwgMTA3MDEsIDE3NjQsIDMxMDEsIDEyNzgxNSwgMTI4NTgsIAorICAgIDEyMDE1OSwgMCwgMTEzNzMsIDYzNzgsIDEyNzg1OSwgMTIwMTAzLCA4NjYzLCA5MzEyLCA0MTY0NCwgNDUzOSwgMjEyOSwgMCwgCisgICAgOTIyMiwgOTgzNzI5LCAwLCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIDAsIDEyNzI0LCA2NjM1NywgNDIzMzEsIDY0OTM1LCAKKyAgICAwLCAwLCAxMjkzLCA3OTQ3LCAyMTMyLCA5ODM3NTgsIDc0NTkzLCAxMjAzMDgsIDI0NTQsIDQyNzE3LCAzNjEzLCAxMjg4MzcsIAorICAgIDAsIDAsIDY1ODg4LCA4ODE2LCAxMDk3OCwgMTA4NDAsIDAsIDEwNjY4LCAwLCA0MzA4NywgMTI1OTUsIDEyMDMwNCwgCisgICAgOTgzMTE0LCA4ODIyLCAwLCAxMTU3LCA2NDkwMywgODYzOCwgMCwgMCwgMCwgMCwgNjk4NDgsIDgyMzUsIDEyMDMxNiwgCisgICAgNDQwNSwgMTAwODYsIDEyMDI0NywgMCwgNjkyMTYsIDAsIDY1NDMwLCA3MTMyMSwgNjA3OSwgNjgxNywgMTA3NjQsIAorICAgIDEyNzkxMCwgNjQyOTEsIDEyODA1MSwgOTk4LCAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgMTU1OCwgMCwgMTk5MSwgCisgICAgNzg4MiwgNDIyNTQsIDAsIDQxNzAwLCA1MzAsIDAsIDEwNDI4LCAxMTkzMzUsIDEyMDAyLCAxMTkzMzYsIDU3NDIsIDQzMDc2LCAKKyAgICA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIDUwMDQsIDExOTMzNCwgNzg5NiwgNzUxLCA2NTk1LCA2NTk2LCAxMjAzMjUsIAorICAgIDY2MzczLCAwLCAwLCA2NDkwOCwgOTI2OTEsIDYzMTEsIDAsIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCA0MzEwOCwgMTIwMzI2LCAKKyAgICAwLCA0MTcwNSwgOTIxODgsIDY1OTgsIDAsIDY1OTksIDEyMDMzNCwgMCwgNDIxNDgsIDExODgyNSwgNjYwMjcsIDAsIDY1OTcsIAorICAgIDk0MTIsIDgzNDAsIDExODI0LCA2NDc0NSwgMjI4MSwgNjk5MDQsIDAsIDE5ODgsIDU0MDcsIDY3ODY1LCAyNDMwLCA0MTY3OCwgCisgICAgMCwgMTIwMjQzLCAyMzM2LCA5ODM4OTQsIDAsIDc4ODcxLCAxMjA0NDIsIDk4Mzc2MCwgMTkyMSwgMTA5NDcsIDE5OTI3LCAwLCAKKyAgICA2NTQwNiwgMCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIDkyMjksIDEwOTU2LCA0MjI4NSwgNDE2NzQsIAorICAgIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDAsIDU3NzQsIDgzMjUsIDAsIDY1NDAzLCA5ODMwODksIDE4NTQsIDEwNzk0LCAKKyAgICAwLCA2NzY2MCwgNjk4NDYsIDAsIDc4MzU5LCA1MjgwLCAwLCA0MzQ0LCAxMjkwNSwgNjU0MzMsIDYwNzYsIDY0NzkzLCAKKyAgICA0MTYxMCwgNzY4LCAxMjA3NCwgNDQyLCAwLCA2ODE2MiwgNjQwODEsIDEyOTM0LCA0MTY4MiwgNjU0MzIsIDQxNjkzLCAwLCAKKyAgICA2MDcxLCA2NTQzNCwgMTI3NDY3LCA0ODA0LCA0MDUzLCAwLCAxMjc0NjksIDE5NDY1MywgNDE2OTYsIDQ2NywgNjk4MjMsIAorICAgIDEyNzQ2MywgNjk3OTcsIDE5NDY1MiwgMTI3NDczLCA4NDIxLCAxMjc0NzIsIDY5NjgyLCA0MzcwNSwgNTAyLCAwLCA2NTQzMSwgCisgICAgMTE5MDU2LCA2OTk1NCwgMTIwNDMsIDEzMDMsIDMxNiwgNzM2NCwgMjAyOSwgMjEzNiwgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIAorICAgIDQzNDgwLCA5MjYzOSwgNDg2MCwgMTI2NjQ4LCAxMjc4NzcsIDQyNDg4LCAwLCA5NTgzLCAxMjg4NDksIDU1NDYsIDgwMTksIAorICAgIDczODU2LCAwLCAwLCAwLCA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIDc3OTg5LCA2Mzc1MSwgMTIxMzcsIAorICAgIDU1NDgsIDc3OTg1LCAwLCA2NTcyNywgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIDY1NDUyLCAwLCAxMTMwMSwgCisgICAgNzgwMTMsIDc4MDA4LCA3ODAxMCwgOTg3NCwgNzgwMDcsIDAsIDEzMTksIDMwNTAsIDY1NDEwLCAwLCAwLCA3ODAxNiwgCisgICAgNzgwMTcsIDQyODMwLCA0Mzk5NiwgNjY3MTYsIDEyODEzNywgNDY5MSwgOTIyNDIsIDkzNDUsIDYyMSwgOTI3MDksIAorICAgIDEyODIyMiwgMCwgNjU0MTEsIDAsIDQxMTgyLCA3Mzg4MSwgNjU0MDgsIDczODk5LCA3ODAyNCwgOTQ3NCwgMTA1NDUsIAorICAgIDExOTExOCwgMTA4ODcsIDM3ODYsIDY1NDA5LCA4ODk0LCA0MzE3OSwgMTE5NjExLCA3OTIzLCAzNzE2LCA5MjM2MywgOTk5NiwgCisgICAgODUwOCwgMCwgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAwLCAzNzIyLCAwLCA0MTcwNywgODQ5MywgNTQ1LCA5NTc1LCAKKyAgICA0MTM3OSwgMTAwNTAsIDEyNzE4LCA2OTg1NCwgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIDAsIDAsIDkxMTksIAorICAgIDI3ODcsIDc5MjAsIDExODgyMywgNDAyMSwgMjAxMiwgNzk4NSwgMCwgMTE5NjYzLCAwLCAwLCA3ODAyMSwgNzgwMjIsIDQxMCwgCisgICAgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgMCwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCA2NDM5NiwgMTAxMjYsIDEyMTE2LCAKKyAgICA0MTY3MywgMTIwMzcwLCAxMTQyMiwgNzgxNDEsIDEyMDM3MywgMzg2MCwgMTIwMzY3LCA2ODQxMiwgNDEzNDUsIDEyMDM2MiwgCisgICAgMTIwMzYzLCAxMTc0OCwgNDIxNTgsIDc5NDEsIDExMDc2LCA4NzQ5LCAxMjAzNjEsIDIxMDQsIDY0ODU4LCAzNjEsIAorICAgIDEyMDM1NywgODQ1LCAwLCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDkxNzkyMCwgMjkyNiwgOTE3OTE5LCA0NTY5LCA3NDEzMCwgMCwgCisgICAgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDExODg5MSwgNjU2MjksIDAsIDE5NDg1OCwgMCwgMCwgMTI3NTQ1LCAKKyAgICAxMjA1NDMsIDAsIDAsIDYyOTEsIDAsIDc4NjM5LCA0MTY2OSwgNzA5NCwgOTE3OTIxLCAwLCA5ODM1ODEsIDc0MDU0LCAKKyAgICAxMjc3NTQsIDE5NTAyOSwgMCwgODM5LCA5ODMzMTEsIDc2OTUsIDg3NjksIDY1MjQ2LCA0ODI5LCAxOTQ2NjMsIDQ4NTksIAorICAgIDY0NDY3LCAwLCA5ODM5NTQsIDExODk5OCwgNzIwNiwgMCwgNjY0NywgNDM5ODYsIDAsIDY5NzY2LCAwLCA2NDc2NCwgNDIxMCwgCisgICAgOTgzODU0LCAxMjc5MzYsIDgwNCwgMCwgMCwgMTIyOTgsIDAsIDY2NjUzLCAwLCA2NDkyNCwgMTAwOTEsIDczOTMxLCA5NDY4LCAKKyAgICA3NDI0NSwgMCwgMCwgNzQyNDYsIDkyNTAzLCAxMjgzOSwgNjQ2NjksIDkyMjAyLCAwLCAxMjc5LCAxNDI1LCA2MjI0LCAKKyAgICAxMTkyMjksIDExMDQ5LCAwLCA5MjY5NywgNDMyMzksIDg0ODIsIDkyNDQwLCAwLCA1MDMyLCA2OTY3NywgMTE5NDAsIAorICAgIDY3ODg4LCA2NjQsIDEyMDQzNywgNTAzNCwgMCwgMCwgMTI3NTI1LCA0MjcwMiwgNzM4ODgsIDk4MzE0OSwgMTMyOTQsIAorICAgIDY3ODczLCA2NDg2OSwgNjAzMiwgMCwgOTExNSwgNzQzMCwgMTIwMzc3LCAwLCAxMjA4MTksIDY4Mzg3LCAxMjAxNjgsIAorICAgIDczOTEzLCAxMjAxNzAsIDQxMTYxLCA1NTE4LCA0MTc0LCAxMDk5MywgNDExNjIsIDEyMDE2MCwgNjQ1MjgsIDExNjksIDQzNCwgCisgICAgNDE0MzcsIDE5MDUsIDYwMzQsIDQxMTY0LCA2NDc0NCwgOTUyOCwgMTE4ODY3LCAxMjg4MDAsIDUyNCwgMCwgNzQwMjksIAorICAgIDc4OCwgNzQwMjcsIDAsIDE5NDYzOCwgMCwgMTY2MywgMTA0MTksIDc0MDI1LCA0MjYzNiwgMCwgNjk3MjUsIDAsIDEyMDY1NiwgCisgICAgMCwgNjc4NzYsIDAsIDAsIDAsIDY3ODk3LCA3NDAzOSwgMCwgMCwgMTEzOTUsIDAsIDExOTEwNywgNDM2MTIsIDY0MzQ0LCAwLCAKKyAgICAwLCAxMDg1NSwgNTQ0NSwgOTM1NSwgMCwgNjUxOTgsIDczOTEsIDg5ODksIDIyMSwgNjU2ODYsIDAsIDAsIDgwMTAsIDcxOTEsIAorICAgIDQ5NjIsIDY5NzcyLCA4ODU1LCAwLCAwLCA2NDQ2OSwgMTIwNDI2LCAxMDU1NSwgMCwgNDMzMzMsIDkyMjk5LCAwLCAKKyAgICAxMjA0MjcsIDEwNDUxLCAwLCA2NzY1MywgNzI0NSwgMTI0NDMsIDc0NDA1LCA5OTQ3LCAxMjAxNDksIDc4MzE3LCAzODczLCAKKyAgICA4MzY3LCAwLCAxMjAxNDYsIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDAsIDAsIDExMDEwLCAxMjcyMywgNzQwNTksIDc0MDYyLCAKKyAgICA2MjE3LCA1ODk2LCAwLCA3NjgyLCA3NDA0OSwgMTQ2MiwgMTAyMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNTk1LCAwLCAKKyAgICA3NDQwMiwgMTE4ODYwLCAwLCAxMjA0MTksIDkyNDk3LCA3NDA1MiwgMCwgOTIzNzgsIDEyMDU0OSwgMTE5MDgyLCA2NDI5NSwgCisgICAgMTIwNDE4LCAwLCA2NDc2NSwgNzM5MjMsIDEyMDQxNywgMTIwNjYyLCA2OTkyMCwgMTk0NzAyLCA2MjE2LCAwLCAxMDc1NSwgCisgICAgOTQ1NSwgMCwgODEyNCwgMTI3MDQyLCA5NDcwLCA2OTQ0LCAxMjc1NDAsIDAsIDY5NjgwLCAyODI4LCAwLCA1MzEsIDQyNjM4LCAKKyAgICAwLCAwLCAwLCA0MzQyOCwgODIwNCwgMzYxNCwgMjgyNywgOTY5NiwgMCwgMCwgODcyOCwgNDM1NCwgMTA5MDQsIDc4NTYyLCAKKyAgICAxOTkzNiwgNzgzMywgMTIwNjkxLCAwLCA0MjU5OSwgNDI1OTcsIDQyNzA5LCAxMjA0MDksIDEyNzA0NCwgMCwgODUzNywgMCwgCisgICAgMCwgOTM1NCwgOTgzMTY0LCAxMjg4MzMsIDQxMTk5LCAxMDEyMSwgMjAyOCwgMCwgOTgzMTk0LCA2OTcxNSwgMCwgMzA2MiwgCisgICAgMCwgNzQ0NDcsIDEyNjA4LCAwLCA2NjQ0MCwgNzU0NSwgOTcwMCwgMTI1ODAsIDkyMjA1LCAxMjA3NzcsIDEyMDUwMiwgCisgICAgNDExNTUsIDAsIDc0MDcxLCAwLCA5ODM0NDksIDEyNzEzLCAwLCAwLCAwLCA3ODc3MiwgMCwgMTczNCwgMCwgMCwgMTI3MDQwLCAKKyAgICA2NDU5NCwgMjQ1NiwgMjMxLCAwLCA3NDE2NywgNTQyLCAwLCAxMTg3ODYsIDAsIDk4Mzk3MCwgMTIzMCwgMCwgMCwgMzU5NywgCisgICAgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgMTI3OTM4LCA4MzUyLCAwLCA1Njg3LCAwLCA2NDUxNSwgMCwgCisgICAgMTk0ODAxLCA1NTI2NSwgNjc4NDYsIDc4NDM0LCA5NzA0LCAwLCAwLCA3MDA4MCwgNzEzMzgsIDAsIDg2NjAsIDEyNjQ5NSwgCisgICAgMCwgMCwgNzg3NzMsIDc0NDgyLCA0NDgzLCAxNzA5LCA2OTcyMSwgOTkwOSwgNjA4MCwgMCwgMTIwMzU4LCAxNzQ2LCAxMzE1LCAKKyAgICA4NjY3LCAwLCAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAwLCA0NDgwLCAxMTI2NiwgMTI4MTUyLCAxMjI2LCA2OTMwLCAKKyAgICA2Nzk3OSwgOTgzNjgxLCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgMCwgNzQ3ODUsIDY5ODc1LCAwLCAwLCA0MTUwMCwgMCwgCisgICAgMzExLCAxMTQ1MywgNjIyMSwgMTA2MDgsIDY0OTQzLCA3NDI4MCwgMTA4NzcsIDExODg2OCwgNjQ4ODUsIDc0MjcyLCAwLCAwLCAKKyAgICAxMjg1NTksIDEyMDczNiwgNzQzMTIsIDM0NSwgMCwgNzQ0NTYsIDY0NjA2LCA5OTE3LCAwLCA5MjIzMSwgNTAzNywgMCwgCisgICAgMTc3NiwgODQyMiwgMCwgMTE4ODE0LCA0MTUwOCwgNDEyMDEsIDMyMywgNDMzMjgsIDAsIDQyNjk4LCAxMjk1LCAxOTQ4NTMsIAorICAgIDQ2MjUsIDAsIDQ2MzAsIDEzMTE3LCAwLCAxMjg3NzIsIDY1MTIzLCAxMTI5MywgMjY2OCwgMTEyODgsIDAsIDQyNjQwLCAKKyAgICA2NTY2NiwgMjUxOSwgOTIzNjksIDY1NDIwLCA5MjQ3OSwgMCwgNDI1MiwgNTA0OSwgNDI2NTksIDExOTAxMSwgNzA2LCAKKyAgICA3NzU0LCAxMDg1NCwgODczOCwgMCwgNjU0MTksIDAsIDAsIDY0OSwgNjU0MjEsIDAsIDY2NzAyLCAwLCAxMjY3MCwgMTAxMywgCisgICAgMCwgNjQ5MTksIDcwNSwgMCwgNjU0MjIsIDEyNzgwMywgMTE4MywgMTI2NTE5LCA3MDE3LCA0Mjg1MiwgMCwgODE1NywgCisgICAgOTczNiwgNjQ1MDMsIDY1NDE4LCAwLCA5ODM4NjksIDc0MDM1LCAwLCAxMTkxMywgNzM4NzQsIDY2OTYsIDAsIDg5MjAsIAorICAgIDExOTI5OCwgMCwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIDY2MjI3LCAwLCA0MTg0LCAwLCAwLCAxMDE3NywgNzM3NzcsIAorICAgIDE4NTcsIDE5NDY1NywgNDYyNiwgODQ2NCwgODQ3MiwgMCwgNDYyOSwgODQ5OSwgNzgzMjEsIDc4MzIyLCA0NjI0LCA3ODE4LCAKKyAgICAxMTkxNzMsIDAsIDAsIDc4MDUsIDAsIDk0MDA3LCA2OTM1LCA5MjI5MiwgNzgzMjUsIDc4MzI2LCA3ODMyMywgNDMzMjcsIAorICAgIDQzOTg5LCAxMTkwNDYsIDg0OTIsIDgyNTAsIDg0NTksIDAsIDg0OTcsIDg0OTYsIDAsIDAsIDc4MzM2LCA3ODMzOSwgOTU0MywgCisgICAgNzgzMzUsIDc4MzMyLCA3NzgzMiwgNjU4NDksIDc3ODMxLCA5ODM5NTIsIDAsIDEyNDUxLCAwLCA4Njg0LCAwLCA2MTAyLCAwLCAKKyAgICA1Mjk4LCAwLCA1Mjk0LCAwLCAwLCA5ODM0NTEsIDE5NTA2MiwgOTk0OSwgMTE5ODI2LCA0MzYxNywgMTE5MjE1LCAwLCAKKyAgICAxMjA3MywgMCwgMCwgNzc4NjMsIDEzMTA4LCAxMjA2MTcsIDExNDM5LCA0MTQ2OCwgOTgzNzQ4LCAwLCA1MjkyLCA1NTI3MiwgCisgICAgOTgzODc0LCAxOTM5LCA1MzAyLCAzOTcwLCA5MTc4NzksIDEyNDU1LCAxNzkzLCAwLCAwLCAwLCA2NjQzLCA5MjQ3NywgCisgICAgNjUyNjMsIDAsIDc4MzMwLCA0MTI5MywgNzgzMjgsIDY1OTIzLCAwLCAxMzIxOSwgOTU2OSwgMCwgNzQzODMsIDAsIDc0MTk3LCAKKyAgICAwLCA1NTAwLCA4ODEzLCAwLCAwLCA3NDU2NiwgNTMyMiwgMCwgNzgzNDAsIDQzNjMxLCA1MzI0LCA2NjQ0MywgMzc4NCwgCisgICAgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDQzMzI0LCAzMzYwLCA3ODM0NCwgMTE1MjMsIDAsIDkyNDg4LCAKKyAgICA5OTI2LCA3MTk3LCAwLCA2ODQyOSwgNDI4OTQsIDQxODIxLCAxMjQ5LCA3ODM2MCwgNzgzNjEsIDc4MzU2LCA3ODM1OCwgCisgICAgNzgzNTMsIDY0ODk5LCA2NDc2MywgNDExNDksIDQxODA3LCA0MzE2MiwgNDE4MTUsIDQxMTUwLCAwLCAxMDU3MSwgMTAwOTYsIAorICAgIDAsIDAsIDc4MDc0LCA2OTQ3LCA0MTE1MiwgODg3LCA5MjQ5LCA2NTY1LCA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgCisgICAgNzQ0NjYsIDkzOTY2LCA2NjcwLCA3Nzg4MiwgMCwgMCwgNDMwOTIsIDQzMzI1LCAwLCAxMDE2OCwgMCwgOTc4MSwgMTI4NjU1LCAKKyAgICA5MTkwLCAwLCA5NjY2LCA4MjY5LCA2NTk0NCwgNzQwMDUsIDEzMDE5LCAxMTY3MCwgNjk4NjAsIDMxNSwgMTI4MTMsIAorICAgIDk4MzQ1MCwgNzg0MzIsIDc4MjU2LCA3ODM1MSwgNzgzNTIsIDAsIDk4MzY0OCwgMCwgMCwgMTM3OCwgOTUwOSwgMCwgMCwgCisgICAgNzQ0NzUsIDMwNjYsIDkyMjIwLCA2Nzg0NywgMCwgOTIzNTUsIDAsIDc4MzY1LCA4Nzg3LCAxMjAzNzksIDE5NDYxNiwgCisgICAgNDE2MTgsIDE5NDYxNSwgNzgyNjEsIDE5NDYxNCwgMCwgNjQ2NTIsIDAsIDE5NDYxMiwgMCwgNzgzNjYsIDQyMDg4LCAwLCAKKyAgICAxOTUwNjEsIDcxNzYsIDQzNzU2LCAxMDEzNywgNjEyMSwgMTA5OTUsIDc4MjU5LCA3NDUzNCwgODExOSwgNjQ4NzQsIAorICAgIDkxNzgxNiwgMTI3MTk5LCAxOTQ5MzksIDAsIDc0NTI1LCAwLCAwLCAxMjkzMCwgMTM5NCwgNzQ1MTQsIDAsIDc0NTE1LCAwLCAKKyAgICAxMTg4MDQsIDI5OTgsIDk1MjcsIDEyMDY1OSwgNjUxOTAsIDEyOTc3LCA0MjA5MCwgMTE5MTY1LCAwLCAxMTkxMDAsIAorICAgIDQxMjM2LCA5MjIzNSwgNDIwMDUsIDQyMDAzLCA0MTIzNywgNTg0OCwgMCwgMCwgMzY3MCwgMTI4NjU3LCAxOTQ2MDAsIDAsIAorICAgIDAsIDc4OTAsIDAsIDExMjk4LCA0MzMxNSwgMCwgNjIyOSwgMTU5MywgMCwgMCwgNjE5LCA0NjM1LCA2NTA4MCwgMCwgCisgICAgMTI4MDAyLCA0MTIwLCA2NTMzNywgNjUzMzYsIDAsIDExODA4LCAxMTkyMTQsIDc0MTE1LCA5MzY2LCA0Mjc5MCwgNDIwMDYsIAorICAgIDExOTExNSwgNjUzMjcsIDY1MzI2LCA2NTMyNSwgMTA3NTcsIDE1MDcsIDQyMjE2LCA2NTMyMSwgNjUzMjAsIDY1MzM1LCAKKyAgICA2NTMzNCwgNjUzMzMsIDY1MzMyLCA2NTMzMSwgNDIwNTksIDY1MzI5LCA0MjY4OSwgOTI0MjcsIDkxMjgsIDk0MDQ1LCAKKyAgICA0MjA3MywgNjc4NSwgNjQ1OTAsIDk4MzgyMSwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCA2NTMxNCwgCisgICAgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAwLCA2NTYwOSwgNDEyNDEsIDc5MDMsIDQxMjM5LCA0MzUzMywgNzg0NTksIAorICAgIDcxODksIDAsIDAsIDAsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIDkxMzEsIDAsIDQ2MTUsIDEyNjk1LCAxMjc3NTIsIAorICAgIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgMCwgMCwgNTYyLCAxMjE2OSwgNjU5MCwgNjk3NjIsIDY2NDU1LCA2NDczOCwgCisgICAgMzIxOSwgNjg2NTQsIDk4Mzc3OCwgMCwgMTAzNywgMCwgMjAyNSwgMTI4MjYzLCAxMzA5OCwgNzg0NDIsIDEwNjM3LCA0NTY4LCAKKyAgICA1NDksIDE1NzAsIDAsIDI4MzUsIDAsIDEwNjI0LCA0MzYyMywgMTEwNzIsIDEyNzE5MSwgMCwgMCwgMTI2MDYsIDc4NDMzLCAKKyAgICAyODI1LCAwLCAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCA3MzY1LCA5ODM3NDQsIDEyMDU5MywgMTMwNzEsIDAsIAorICAgIDQ1MiwgNDEwNDksIDQyODQwLCA2MzQ2LCAyODMxLCA1NDYxLCA3NDU5NiwgMTE0NjUsIDUyMTIsIDAsIDY0NzAzLCAKKyAgICAxMTkxOTEsIDQyMzA4LCA3MTgxLCAwLCA0MTMzMiwgMCwgMTIzMzMsIDAsIDE2NjgsIDAsIDAsIDAsIDExODcsIDk4MzM3NywgCisgICAgNDI2MjgsIDc4NTc1LCAwLCAxMjg3NzcsIDAsIDMyNDAsIDEyODUxOCwgMTIxOTQsIDAsIDExNTkxLCA0MTA2NSwgNTMyMywgCisgICAgODE2NiwgMCwgMCwgMCwgNzQ1MzUsIDE2MjMsIDY1Mjk3LCAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgMTI3Mjk1LCAKKyAgICA4OTE2LCA2NTA0OCwgMTkwOSwgODg2NCwgMCwgMCwgMTA3MzYsIDkyNTA4LCAxMTU3MSwgNzYxNSwgMTI3MzAwLCA5MjI5NiwgCisgICAgNDIzNywgOTI1NzYsIDEwMzUsIDY1ODE1LCAwLCA3ODgxLCA3MDEsIDY1OTM2LCAzNDg5LCAwLCAwLCAxMjA3NTEsIDExNDAzLCAKKyAgICAwLCAwLCAxMjcxNDYsIDM3OTYsIDY4MDAsIDAsIDM5OTQsIDExNDIxLCAwLCAxOTUwNzYsIDAsIDk4MzkxMywgMCwgMCwgCiAgICAgNjQ4NTcsIDEyODEwNSwgMjg1NSwgMTI3ODI4LCA2NjMwOCwgNDE2MjEsIDY4MjE0LCAxMjcyODMsIDEyNzgxNywgMTA2NTQsIAogICAgIDAsIDExOTIyNiwgMTIxNjQsIDMyNDYsIDc5MDYsIDQzOTcyLCA2NTg0NywgNzE4MiwgMCwgMTMwMjQsIDE5NDgyMiwgCi0gICAgNzQyNzAsIDEyODI4OSwgMCwgMCwgMCwgMTQ5NiwgNzQ3LCAwLCA5NDIsIDIzNzgsIDQzMTM2LCAxMjc5MDUsIDg0NjYsIDAsIAotICAgIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIDExNjE3LCAwLCAwLCAxMTQwOSwgNjgzNzMsIDYzODIsIDAsIDY0NjM0LCAKLSAgICAxMjgyNzksIDAsIDExNjEyLCAwLCA2NzYwMCwgMjM3NCwgMCwgODQ3NSwgMTE2MDksIDY2MzEzLCAwLCAwLCA1Mjg2LCAKLSAgICAxMTkyOTcsIDAsIDAsIDY0OTI1LCAxMjAyODMsIDE5NDU4NCwgMTE4OTgyLCAxOTQ1ODMsIDc3MDUsIDExOTQyLCAxMTMwNSwgCi0gICAgMTk0NTgxLCAzMzA5LCAwLCAwLCAwLCAwLCA2ODAyLCAwLCA0MTY1MywgMTI4MCwgMTI0MSwgNzE2OCwgMTIwOTYsIDAsIAotICAgIDY2NjE1LCA0MjU2NSwgNDE2NTEsIDAsIDAsIDAsIDQxNjUwLCA2NjUwNywgNjY0NzAsIDAsIDEyOTE0LCA0MTQ5MSwgCi0gICAgNjYwMTAsIDExOTU1MiwgNjA3OCwgOTk1NCwgMCwgMTQ3NSwgMCwgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgNDEwNjIsIAotICAgIDAsIDAsIDMyNTYsIDEyODY0MCwgNDIwNzYsIDQzMjUyLCA3ODgyMywgOTE3OTA2LCA4NzI3LCAwLCA2NTg3NSwgMCwgMCwgCi0gICAgMTI3NzYyLCAxMDU2MiwgNzQyMTUsIDQzMDY1LCAwLCAwLCAzMjQ4LCA3NDI5NywgMzI2MSwgOTAxNSwgMCwgMCwgMzYzNSwgCi0gICAgNjQzMzcsIDAsIDAsIDAsIDcxOTUsIDAsIDIwMDcsIDY0NDMxLCAwLCAwLCAwLCAwLCA2MzUsIDAsIDAsIDY1NjEzLCAKLSAgICA3NzkwOSwgOTI0MjAsIDczOTk3LCAwLCAwLCAxMTkyMTgsIDc5ODQsIDg2MDAsIDc0NDM0LCAxMjc3NzAsIDQxNzYsIDAsIAotICAgIDIwMzQsIDkyNTUxLCAxMjA4MDUsIDY1ODkxLCAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4ODYwLCA3ODU5NiwgMCwgMzY0OSwgCi0gICAgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgMzYzNCwgMTIwMjkxLCAxMTg5MjcsIDY3Njc3LCAxMjAxMjQsIDc4NjYsIDAsIDExNDAyLCAKLSAgICA0MjE0NiwgMTIwMTM0LCA3NDIzOCwgNDI2NjQsIDI4NDksIDEyNzAzNCwgMCwgNzkzOCwgMTI5NjAsIDE3NjEsIDExODEyLCAKLSAgICA2NTM3OSwgNjgzODYsIDEyODE4NSwgMTE1OSwgMCwgNjk3MjksIDAsIDAsIDcxNzgsIDE5NDYzMiwgMCwgNDE2ODAsIDAsIAotICAgIDEyODIwMywgMTE1MzQsIDE1MTQsIDExNjY4LCA2Nzg5MSwgOTMxMywgNzAxNSwgMCwgNjc4NzcsIDAsIDEyOTg5LCA2NjQ3NCwgCi0gICAgOTM2OCwgMTI4NDgsIDE2MjQsIDQzMjcwLCAwLCAxOTQ1NjMsIDEwODE4LCAxMjgyMDcsIDk5NTMsIDAsIDc4NDIxLCAxMTk0LCAKLSAgICAzMjQyLCA5NzYxLCA5NTU1LCA4NTk4LCAxMjAyOTksIDYxNjksIDEyODcxLCAxNTUxLCAyNzk4LCA2NTE3NiwgNDk1OCwgCi0gICAgNDI3NTIsIDExOTAyNSwgMCwgNjc4NzUsIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDE5NDc2OCwgMCwgNjgzNjQsIDAsIDQ4OTEsIAotICAgIDAsIDEwNjQxLCAwLCA3Mzc0NiwgMCwgNjgzNTIsIDAsIDczNzg3LCAwLCAxOTQ2MzMsIDcxOTksIDY0OTU1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MjY4NSwgNDI2NzksIDE5MywgMCwgMCwgMCwgNDI2NjcsIDAsIDUyNzEsIDkyMzE4LCA5MjUxNywgMTE4ODgyLCAKLSAgICAxMzYyLCAxMzI5NywgMCwgMTI4MDk0LCAwLCAwLCA3Mzc4OSwgMCwgNjY1OCwgNDQyNiwgMCwgOTI2MjgsIDAsIDkyMzE5LCAKLSAgICA3Mjc2LCA0MjE2MywgNTIyMCwgMCwgMCwgMCwgMjQxNiwgMzMxMCwgNDI3MDMsIDAsIDM3OSwgMCwgMTI3OTc3LCAwLCAwLCAKLSAgICAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCA0NTQ5LCAwLCAwLCAwLCAxMjc3NjMsIDEwODA3LCA5NTU4LCAxOTQ2MTMsIDAsIAotICAgIDg1MTUsIDg2ODgsIDEyODY2LCAwLCAzMjk0LCAwLCA4NTI5LCAxMjgxMDEsIDQzMzg1LCA3NTY0LCAwLCA0MzMyOSwgMCwgCi0gICAgOTI0NTgsIDczNzU3LCA2NjQ1NiwgNDIzNTksIDAsIDIwMzEsIDAsIDcyMDIsIDAsIDEyNjc2LCA0MjcyOSwgOTIxOTgsIAotICAgIDMyMTUsIDAsIDc3MTAsIDE2MTAsIDczODAxLCAwLCAwLCA2NTY4MiwgMCwgMTIwNTM3LCA2NTkyNCwgOTk3NCwgMjI4LCAKLSAgICA2NjM1NCwgMTUwMSwgMCwgNjQzOTUsIDUxNzksIDcyMDAsIDYyMjUsIDAsIDY1Nzk0LCAxNzI1LCA2NTUzMywgODE5NiwgCi0gICAgNzQ3NiwgNzQzOTksIDAsIDAsIDcxNTIsIDg1MDIsIDU3NjIsIDE5NjcsIDc0ODMsIDAsIDAsIDgxMDQsIDAsIDc0NzQsIAotICAgIDkyNTcxLCAwLCAwLCAxMDQxNCwgMTMwMDEsIDgxNDEsIDAsIDQyNTM3LCAxNTU3LCA0MzU5NCwgMTI4NjQyLCA2MzMwLCAKLSAgICA2ODA1LCA4NjMxLCAyNTQ1LCAxMjA2NzIsIDEyNzE2NiwgMCwgNzQxOTAsIDAsIDAsIDAsIDQyNzYyLCAwLCA0MjkxNCwgCi0gICAgMTY1MCwgMjYyLCAxNjM3LCAwLCA3OTAxLCAzMjM4LCAxMjgxNzMsIDQxODYxLCAwLCAwLCA2NTE1OCwgMTA4NjAsIDAsIAotICAgIDQzNjU4LCA3NTI3LCAwLCA0MzMxOSwgNjQxOSwgMCwgNDUsIDAsIDY0NTg4LCAwLCAwLCAxMTk4MTAsIDcxOTQsIDUyOTEsIAotICAgIDAsIDQzNjY2LCAxMzEyOSwgMCwgOTA4NCwgMCwgODczNywgMCwgMTI4ODEsIDAsIDEyOTA2LCA5NjM5LCA3OTEyLCAyNjIwLCAKLSAgICAwLCAwLCAwLCAwLCAxNzksIDY1ODk2LCAwLCA2NDc1NiwgMjg1MywgNzg0NDMsIDExODgxMywgMCwgMTE4OTk2LCAxMTkwMDksIAotICAgIDI4NTAsIDgwODQsIDAsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgNzQ3NTQsIDExOTg0MSwgNDIwNzIsIAotICAgIDExOTg0MywgMTE5ODQyLCAxMDM5OCwgMCwgMCwgODM3NywgMTI3MTE2LCA4MjQ1LCA2ODQwMSwgMzE1OCwgOTIzOTYsIAotICAgIDM5ODMsIDQzNjU2LCA5MjMsIDExOTg1NywgMTE5ODU2LCAyOTIsIDEzMDAyLCAxMTk4NDUsIDExOTg0NCwgMzIyMSwgMTc2MywgCi0gICAgOTI0NjMsIDQ2MTIsIDExOTg1MSwgMTE5ODUwLCA3MjUzLCAxMjcxMTAsIDY4MzkxLCAwLCAxMDc4MiwgMzYzNywgMTI5OTYsIAotICAgIDQzNTQyLCAwLCA2NDU3OCwgMCwgMzIyOCwgNjk2MzYsIDg3ODMsIDAsIDExOTYxNCwgMjczMSwgMCwgMCwgNzg1ODUsIAotICAgIDQxMDIsIDc2OTYsIDczODc4LCAwLCAwLCA3ODU4NiwgNDMzMTYsIDQxNzcsIDExMjgzLCA5MDg5LCAwLCA3Mzk5NiwgMCwgCi0gICAgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgMCwgMCwgNjM3OSwgMCwgMCwgMCwgMzIwOCwgMTI5NzUsIDc0Nzc1LCAwLCAKLSAgICAwLCA5MjM4OSwgNzQwNzIsIDU1MjY5LCAwLCAwLCAwLCAyMDMzLCA3ODU3NywgNzg1NzYsIDE5NTAyNiwgNTUyNTQsIDc3NDAsIAotICAgIDAsIDAsIDAsIDczOTY0LCAwLCAwLCA2NzYxMiwgNjU2NzQsIDAsIDAsIDQxNjg5LCAwLCA3NDAwNiwgNjQ5MDksIDY2NDYsIAotICAgIDExNzkwLCA3NDAxOSwgMCwgMTI4MDY2LCAxMjgwMzEsIDg1NjEsIDQ1NzMsIDAsIDUzMjYsIDAsIDEyMDYwNSwgNzIzMCwgCi0gICAgODI1NywgMCwgODc3OCwgNDE2ODgsIDAsIDY1Nzc2LCAyMDcxLCA4MzE0LCA2NDU5LCAwLCA3NjI4LCA2NTA5MiwgNzM5MDMsIAotICAgIDY2NzIxLCAxMTM0MiwgMTI4NTYxLCAwLCAwLCAxMjgyMjYsIDEyNzAwMSwgMCwgMTE4MTAsIDEzMTY0LCAxMDcyMywgOTY3LCAKLSAgICAwLCAwLCAxMTk0NiwgMCwgMzI1NywgMCwgMTIzMDcsIDE4NDUsIDAsIDQzNTI2LCAwLCAwLCAxODg2LCA0MjM0MiwgMTAwODksIAotICAgIDg3MCwgNzY0OCwgMzQ5OSwgODYwOSwgNzY1MiwgODc2LCA4NzEsIDg3NywgMCwgODc4LCA0MjAxNSwgODc5LCA0MzY5MiwgCi0gICAgNDU2MywgMCwgMCwgNzU5MSwgNjU4ODcsIDg2NywgOTUyMCwgODcyLCAwLCA4NjgsIDg3MywgNzY0MiwgMCwgODY5LCA4NzQsIAotICAgIDc2NDQsIDAsIDg3NSwgNzkwLCAxMjgzMDMsIDAsIDAsIDAsIDY2MTgyLCAwLCA1NDI5LCAwLCA2NjE4MCwgMCwgNjYxODEsIAotICAgIDY4NDUyLCAwLCAwLCA0MjA2NywgMCwgNTQzMywgMTA2NTcsIDc5MTEsIDE5NDYyMiwgMTU0NywgNjYxNzYsIDQyMDEyLCAKLSAgICAxMjA1NzYsIDU0MjUsIDQ5NzcsIDk5OTksIDUzMTcsIDU0MjMsIDQ2MTEsIDAsIDY3NjM3LCAwLCA5Njc5LCA3NDEyMiwgMCwgCi0gICAgMCwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDAsIDE4NTEsIDAsIDEyNzE4OSwgCi0gICAgMTE5MDgsIDAsIDkzNjAsIDExODg5NywgMCwgNDI3NzYsIDY2MTg3LCAxMjgzNywgODgyOSwgNzcxMSwgOTI3MTQsIDAsIAotICAgIDkyMzIxLCA0MzMxOCwgMCwgODgwOSwgMTE5OTc0LCAwLCAwLCAxMjA2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDc0MjcsIAotICAgIDk5NTgsIDQ1ODgsIDQzNjgwLCAwLCA3NDQ4NCwgMCwgMjQzMywgMCwgMTE5NjIyLCAzMzUyLCA3NDM2MywgMCwgMCwgNzkzLCAKLSAgICA3NDQwNCwgMCwgMzA1LCA1NjcsIDY3NjYyLCA4NDIsIDEyODUxOSwgODIwOCwgMCwgNDE2OTUsIDE2NDcsIDExODg3NywgMCwgCi0gICAgNzgzNywgOTE3NjI1LCA4MTgsIDUzMzcsIDkxNzYyMiwgOTE3NjIxLCA0MTM3NiwgMTE5OTc4LCA5MTc2MTgsIDEyMDU5NCwgCi0gICAgNzQwODYsIDkxNzYxNSwgOTE3NjE0LCA5MTc2MTMsIDEwOTczLCA2NjM1OSwgMTM3MiwgMTI3MTcyLCA5MTc2MDgsIDQ5NjksIAotICAgIDEyNTQsIDkxNzYwNSwgOTE3NjA0LCA5MTc2MDMsIDkxNzYwMiwgNjUyMjgsIDc4MjIxLCAwLCAwLCAyODQwLCAwLCAKLSAgICAxMTk5ODIsIDAsIDAsIDMyNDUsIDkwNjgsIDY4MTk0LCA2NDcyNSwgMCwgMCwgMTI5OTEsIDAsIDI2NTEsIDEyODUyOCwgMCwgCi0gICAgOTE3NjExLCAxMjcwMjYsIDEyODg4MywgMCwgMCwgNDM2NDgsIDEyMDgxMiwgMCwgNDMzMjIsIDkyNjYyLCAwLCAwLCAKLSAgICA2NDM3MiwgOTI2OTgsIDMyMjYsIDY1NSwgNzUyLCA3NDU3LCA3NDU2LCA3NDUyLCAzMjg1LCAxMjg3NzksIDEyNzgyMSwgCi0gICAgMTE5OTg4LCA2NTYxMCwgMjM5MSwgMCwgOTIyNDgsIDY3MSwgMjUwLCA3NDM0LCA2MTgsIDY2OCwgNjEwLCA0MjgwMCwgCi0gICAgNzQzMSwgMTE1MiwgNDI4MDEsIDY0MCwgMTIwNjY2LCA3NDQ4LCA3NDM5LCA2MjgsIDM5MDUsIDczODEwLCAwLCAxMjgyNjYsIAotICAgIDY0NzQ5LCA2Nzg1MCwgMjEwNywgMCwgMCwgNDYwNSwgMTI4MTc0LCAwLCA0MzM3MiwgNjU5NDUsIDEyODgzOCwgMCwgCi0gICAgMTE5NTkwLCAwLCAwLCAwLCA5ODcsIDY5MjcsIDExNTcyLCA0MjI2MSwgMTE0NjQsIDMzNjUsIDk5NzEsIDAsIDAsIAotICAgIDEyODI5NywgMCwgMCwgMCwgMCwgMTEzMzQsIDQzMzI2LCAxMjYwOSwgMTE1MTksIDExNTAzLCA1NTMwLCA1MjEwLCAwLCAKLSAgICA0NjI3LCAwLCA1MjA4LCAwLCAxMjg4NDIsIDEwMzMyLCA1MjE4LCA3OTc2LCA5MTU2LCAwLCAzMjQ0LCA1NTI5LCA2OTY0NywgCi0gICAgNzM4OTQsIDEyODg1MiwgNTQzMiwgNjQ5NjUsIDU1MjcsIDc0MDMzLCAxMDUxNiwgNzc5MCwgNTUyOCwgMCwgNDIxNDAsIAotICAgIDEyMDI4MSwgMCwgMCwgNDM1NDUsIDk4ODcsIDAsIDQwMDAsIDc0MjksIDc0MjgsIDY2NSwgNzQyNCwgMzIwNiwgMTIwMjc4LCAKLSAgICA3ODg0LCAwLCAxMjg1NjYsIDkxNzk4OSwgMTI4NjY2LCAyMTEsIDI1MDksIDAsIDEyMDU3MywgNjg2NzIsIDMyMjAsIAotICAgIDQyMjM1LCAwLCAxMDY5MCwgODk1MSwgNTIxNCwgNDI0NzQsIDgxMTgsIDAsIDcwNDgsIDQ1OTAsIDEyNzI1OCwgNTg1MiwgMCwgCi0gICAgMCwgMTI3MjU5LCAxNzA4LCAwLCAwLCAyNjIzLCAxMTk0MywgMCwgNjkyMjYsIDAsIDQ2OTgsIDY2NTA5LCAxMDY2LCAKLSAgICAxMTk5MjEsIDQ3MDEsIDAsIDEyMDI4NSwgNzQyMjUsIDExOTExNCwgODI2NywgMCwgMTI3MjY1LCAwLCA3NTE2LCAwLCAKLSAgICAyNjI1LCAwLCA4MDM0LCA3NDMwOSwgMCwgMzYzMSwgMTA5NTUsIDc4NTAsIDEyMDI5MywgODQxNiwgMCwgMCwgMCwgNDMzODQsIAotICAgIDEyNjYwLCAwLCAwLCAwLCA3NDg1MCwgNDEwNjksIDAsIDEyODE1NiwgMTIwOTksIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIAotICAgIDc5OTAsIDAsIDM5OTAsIDAsIDAsIDY2MzY4LCA1MDE3LCA2NDk1NiwgNzA3MSwgMCwgMTE5MTQ0LCAxMDMwLCAxMTg4MDAsIAotICAgIDAsIDk1MTMsIDQxMDU5LCA5MzU3LCAwLCAxNzczLCAwLCAxMjAzNTAsIDAsIDYzMzksIDc3NDUsIDk4NDQsIDAsIDY0NjUwLCAKLSAgICA5NCwgMTg4MCwgNzQ3NjYsIDAsIDg5MDgsIDAsIDEyODcwNywgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDAsIDAsIAotICAgIDQxMzA3LCA4NzMyLCAxMjAzMzgsIDAsIDE3NTcsIDY5NjQsIDQ2OTYsIDAsIDAsIDY0Nzg1LCA3Mzk0LCAzNjQxLCA1NDE5LCAKLSAgICAxMjgwNTUsIDAsIDEyNzg4MywgMCwgMTIwMzQ0LCA0Mzk4OCwgMCwgODYxMCwgNDMwNjIsIDc1OTIsIDg1NiwgNzQyOTksIAotICAgIDkzNiwgMTMyODksIDEyNzUyMSwgNDMxNzEsIDE0NTksIDAsIDY1MjQzLCA3ODYzOCwgMTk5NTMsIDAsIDE1MDQsIDExOTEwOCwgCi0gICAgMCwgMTI5MTMsIDc0MjA2LCA3NTI5LCAwLCAwLCAwLCAxMjA3ODIsIDQxMTMsIDAsIDIzNzIsIDMzNiwgMCwgNzUwOSwgCi0gICAgMTIxNTIsIDAsIDY4MiwgNjY0NTgsIDQxNTA1LCAwLCA2NDc0MywgMTA1OTMsIDE3MDMsIDAsIDAsIDgwMzMsIDAsIDAsIAotICAgIDk4MTAsIDEyNzI2OSwgMCwgMTI5NzAsIDAsIDQyMzUxLCAxMDEwOSwgMCwgMCwgMTk0NjkzLCAwLCAxMTkyNDcsIDAsIDAsIAotICAgIDc0MjkxLCAxOTY1LCA3MDY5LCA0MzMxMiwgMCwgNzM4ODcsIDAsIDIwODcsIDY0MzcwLCA2MzE0LCA0MTcxNCwgODUwMSwgMCwgCi0gICAgMCwgNzQyMzksIDQxMzE3LCA5MjYxNCwgMjA5MSwgNzQ1NDUsIDIwOTAsIDAsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAwLCAKLSAgICAxMDQ5OCwgMjA4MywgNzc4ODgsIDAsIDAsIDExOTIzNiwgNjM0LCAwLCAwLCAwLCA2OTc3OSwgNDE2NSwgODc0NiwgMCwgCi0gICAgOTY1NCwgMTI4NTYsIDY5MjQsIDAsIDcwNjYsIDAsIDAsIDEyODEzNSwgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgCi0gICAgNDEwMzksIDAsIDAsIDY4MCwgNjI3NCwgMTI4MjAwLCAxMTgxLCA3MDU2LCAzMTc0LCAwLCAwLCA5MjY2OCwgNjU2NjUsIAotICAgIDEyNzM3NSwgMCwgNjkyMCwgMCwgOTIyOTUsIDAsIDExODk2NSwgMCwgNjQ2NDQsIDEyNjk4MSwgMCwgMCwgNDEwMjgsIDAsIAotICAgIDYyMzEsIDI2MTMsIDY1MzAyLCA0MDk4OSwgMCwgMTk0Njk2LCAwLCA0Mjc2MCwgMCwgMCwgMCwgNDA5ODcsIDQ2NjcsIDAsIAotICAgIDAsIDg4MjgsIDAsIDAsIDEyNDYsIDQ3NDYsIDAsIDAsIDExMDIxLCA0NzQ5LCA5MjY3NSwgMCwgOTIxLCA0NzQ0LCAwLCAKLSAgICAxMjcwMiwgMjQyLCAwLCAxNTY2LCA4MjE3LCAwLCA2NDY1MywgNzgzODYsIDEyODEyMSwgNzQwMzYsIDc0NTA1LCA0MzI3NCwgCi0gICAgNTMxMywgOTUxLCAwLCAwLCAwLCA3NjA0LCAwLCA0MDA5LCAxMjc4MTYsIDAsIDEyMDU2MiwgMCwgMCwgNjQ4NjAsIAotICAgIDExOTEzOCwgMTE5MDY5LCAwLCAxMjczNzAsIDQwNDgsIDAsIDAsIDEyMDU5NiwgMTY0NiwgNzc4OTAsIDY0NTM0LCA3Mzk5NSwgCi0gICAgMTIwNzA1LCAwLCAxMTk4OTAsIDI1NzksIDExOTkwNSwgMzE3NywgMTEzNTcsIDkwOTksIDQxMDcsIDM0NDEsIDExOTg5NCwgCi0gICAgMjk3NSwgNzQ0NDIsIDk4MjIsIDAsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIDExODg0MCwgMCwgOTE3NTYyLCAwLCAzMzk5LCAKLSAgICA5ODUxLCAwLCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgMCwgNjc4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMTc3NywgOTE1MSwgCi0gICAgMTEzNywgNjk3NjcsIDc0OSwgNDIzNjYsIDAsIDUzODUsIDEyODU3NCwgMTI4MjE4LCAwLCAwLCA1OTg5LCAwLCAwLCAKLSAgICAxMjgwOTEsIDAsIDQxNjg1LCA2OTIyMywgMCwgOTc2OSwgNDE2ODQsIDAsIDUxOSwgMCwgMTE3NDAsIDU3NjYsIDAsIDAsIAotICAgIDI2MDAsIDg4NDgsIDEyMDEzOCwgNDEyOTcsIDAsIDM2NjYsIDc0NDczLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCA2OTY4OCwgCi0gICAgNjk3NzEsIDc0NDc5LCAwLCA2NTU4LCAwLCAwLCA2OTc2NSwgMTIwNzUwLCAyNTIsIDAsIDQxMzAyLCAwLCAwLCAwLCAKLSAgICA2OTc2MywgMCwgMTE3MjksIDg3MTksIDkwNjAsIDAsIDEyMDEzOSwgMTA3NjEsIDAsIDAsIDAsIDExODc5MiwgMTE3MzQsIDAsIAotICAgIDExNzMwLCAwLCA5NTkzLCA1NzU3LCAyNDAzLCA2NDgwOCwgNTUyNzUsIDAsIDExNzI4LCA0MzU3MiwgMCwgMCwgNzc2NCwgMCwgCi0gICAgMTEwOTQsIDEyMDgyNSwgMCwgMCwgNDI4MiwgODI5OCwgMCwgMCwgMCwgMCwgMCwgNjQ0NDksIDAsIDEyNzUwOSwgNjM4NTQsIAotICAgIDg0NTYsIDAsIDc0NzgzLCA2NTY3MCwgMCwgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCAwLCAwLCAwLCAwLCAKLSAgICAxMjA3NjQsIDAsIDEwMDE5LCA3NDc2MiwgMCwgMzQ1OCwgNDM2NSwgMCwgMCwgMzY0NywgMCwgMjYwMiwgMTI4MzQxLCAwLCAKLSAgICAxOTQ3MDcsIDQxMTM1LCAwLCAwLCAwLCA2NDYzMSwgMTcyLCA0OTcxLCA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIAotICAgIDAsIDkyMTkzLCA3NTk3LCAxMDUyOCwgMCwgMCwgMzczMiwgNzM5MTAsIDE5NDU4OCwgNTM0NCwgMCwgNDMzNjYsIDQzMzYzLCAKLSAgICA5MDYyLCAxMTkyNTIsIDAsIDAsIDAsIDY0NDc5LCA5MjMyLCA5MjU5NiwgMCwgMCwgMTk0NzEyLCAxMDkwMCwgNDE1MzEsIAotICAgIDEyNjMsIDM3MjAsIDEyMDQ4LCAwLCA2NDI5MiwgNDE1MjQsIDcyMjcsIDExOTYzNSwgNjA5OSwgNDE1MzQsIDAsIDEyNzM1NCwgCi0gICAgMTI3MzQ1LCAyOTksIDAsIDg1MjUsIDEyNzM0NywgMzUyNCwgOTE3NTY1LCA4ODMxLCAxMjczNDksIDkyNTY0LCAzMDc1LCAKLSAgICA2Nzg2NywgMTI3MzUyLCAwLCA2NjM2MiwgMCwgNjQzNTMsIDAsIDAsIDU4NDUsIDAsIDAsIDAsIDI1ODEsIDgyMDAsIAotICAgIDY1MTE0LCA2ODQ2MCwgMCwgNDMyODMsIDU1NTEsIDAsIDEyMDczNSwgMCwgNjM0MCwgMTE4ODU1LCAwLCA3ODEzNCwgODY4MCwgCi0gICAgNzIwNCwgMCwgMjU4OCwgMjkxNCwgNzAxMSwgNTUyODEsIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTE5NTYzLCAKKyAgICA3NDI3MCwgMTI4Mjg5LCAwLCAwLCAwLCAxNDk2LCA3NDcsIDAsIDk0MiwgMjM3OCwgNDMxMzYsIDEyNzkwNSwgODQ2NiwgCisgICAgOTgzNTc1LCA5MzIwLCA4MDAxLCAxMjMyLCA4MTM5LCAxMTYxNywgMCwgMCwgMTE0MDksIDY4MzczLCA2MzgyLCAwLCAKKyAgICA2NDYzNCwgMTI4Mjc5LCAwLCAxMTYxMiwgMCwgNjc2MDAsIDIzNzQsIDk0MDY2LCA4NDc1LCAxMTYwOSwgNjYzMTMsIDAsIDAsIAorICAgIDUyODYsIDExOTI5NywgMCwgMCwgNjQ5MjUsIDEyMDI4MywgMTk0NTg0LCAxMTg5ODIsIDE5NDU4MywgNzcwNSwgMTE5NDIsIAorICAgIDExMzA1LCAxOTQ1ODEsIDMzMDksIDAsIDAsIDAsIDAsIDY4MDIsIDAsIDQxNjUzLCAxMjgwLCAxMjQxLCA3MTY4LCAxMjA5NiwgCisgICAgMCwgNjY2MTUsIDQyNTY1LCA0MTY1MSwgMCwgMCwgMCwgNDE2NTAsIDY2NTA3LCA2NjQ3MCwgMCwgMTI5MTQsIDQxNDkxLCAKKyAgICA2NjAxMCwgMTE5NTUyLCA2MDc4LCA5OTU0LCAwLCAxNDc1LCAxMTkyNDcsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIAorICAgIDQxMDYyLCAwLCAwLCAzMjU2LCAxMDE4OSwgNDIwNzYsIDQzMjUyLCA3ODgyMywgOTE3OTA2LCA4NzI3LCAwLCA2NTg3NSwgMCwgCisgICAgMCwgMTI3NzYyLCAxMDU2MiwgNzQyMTUsIDQzMDY1LCAwLCAwLCAzMjQ4LCA3NDI5NywgMzI2MSwgOTAxNSwgNzEzNTEsIDAsIAorICAgIDM2MzUsIDY0MzM3LCA5ODMyNzMsIDAsIDAsIDcxOTUsIDAsIDIwMDcsIDY0NDMxLCAwLCAwLCAwLCAwLCA2MzUsIDAsIDAsIAorICAgIDY1NjEzLCA3NzkwOSwgOTI0MjAsIDczOTk3LCAwLCAwLCAxMTkyMTgsIDc5ODQsIDg2MDAsIDc0NDM0LCAxMjc3NzAsIAorICAgIDQxNzYsIDcwMDUwLCAyMDM0LCA5MjU1MSwgMTIwODA1LCA2NTg5MSwgMTI3MDM4LCAwLCAzMTgsIDIwMzgsIDEyODg2MCwgCisgICAgNzg1OTYsIDAsIDM2NDksIDEzMTQ5LCA0MjE0NSwgNDI3OTgsIDM2MzQsIDEyMDI5MSwgMTE4OTI3LCA2NzY3NywgMTIwMTI0LCAKKyAgICA3ODY2LCAwLCAxMTQwMiwgNDIxNDYsIDk0MDMyLCA3NDIzOCwgNDI2NjQsIDI4NDksIDEyNzAzNCwgMCwgNzkzOCwgMTI5NjAsIAorICAgIDE3NjEsIDExODEyLCA2NTM3OSwgNjgzODYsIDEyODE4NSwgMTE1OSwgMCwgNjk3MjksIDAsIDAsIDcxNzgsIDE5NDYzMiwgMCwgCisgICAgNDE2ODAsIDAsIDEyODIwMywgMTE1MzQsIDE1MTQsIDExNjY4LCA2Nzg5MSwgOTMxMywgNzAxNSwgMCwgNjc4NzcsIAorICAgIDE5NDU2NywgMTI5ODksIDY2NDc0LCA5MzY4LCAxMjg0OCwgMTYyNCwgNDMyNzAsIDAsIDc0Mjc4LCAxMDgxOCwgMTI2NjQ0LCAKKyAgICA5OTUzLCAwLCA3ODQyMSwgMTE5NCwgMzI0MiwgOTc2MSwgOTU1NSwgODU5OCwgMTIwMjk5LCA2MTY5LCAxMjg3MSwgMTU1MSwgCisgICAgMjc5OCwgNjUxNzYsIDQ5NTgsIDQyNzUyLCAxMTkwMjUsIDAsIDY3ODc1LCAxMjAzMDEsIDM0OTUsIDY2NjQ4LCAxOTQ3NjgsIAorICAgIDAsIDY4MzY0LCA5ODMyMjIsIDQ4OTEsIDAsIDEwNjQxLCAwLCA3Mzc0NiwgMCwgNjgzNTIsIDAsIDczNzg3LCAxOTQ4MjksIAorICAgIDE5NDYzMywgNzE5OSwgNjQ5NTUsIDAsIDAsIDAsIDAsIDAsIDQyNjg1LCA0MjY3OSwgMTkzLCAwLCAwLCAwLCA0MjY2NywgMCwgCisgICAgNTI3MSwgOTIzMTgsIDkyNTE3LCAxMTg4ODIsIDEzNjIsIDEzMjk3LCAwLCAxMjgwOTQsIDAsIDk4MzMyMywgNzM3ODksIDAsIAorICAgIDY2NTgsIDQ0MjYsIDAsIDkyNjI4LCA5ODM4MzMsIDkyMzE5LCA3Mjc2LCA0MjE2MywgNTIyMCwgMCwgMCwgOTgzMzIyLCAKKyAgICAyNDE2LCAzMzEwLCA0MjcwMywgMCwgMzc5LCAwLCA0Mzc1NSwgMCwgMCwgMzIyMywgNjU0OTIsIDEyODQsIDE5NDc3MSwgCisgICAgNDU0OSwgMCwgMCwgOTgzMTU0LCAxMjc3NjMsIDEwODA3LCA5NTU4LCAxOTQ2MTMsIDAsIDg1MTUsIDg2ODgsIDEyODY2LCAKKyAgICA2NTMwOCwgMzI5NCwgOTgzMzI0LCA4NTI5LCAxMjgxMDEsIDQzMzg1LCA3NTY0LCAwLCA0MzMyOSwgMCwgOTI0NTgsIAorICAgIDczNzU3LCA2NjQ1NiwgNDIzNTksIDAsIDIwMzEsIDAsIDcyMDIsIDAsIDEyNjc2LCA0MjcyOSwgOTIxOTgsIDMyMTUsIDAsIAorICAgIDc3MTAsIDE2MTAsIDczODAxLCAwLCAwLCA2NTY4MiwgMCwgMTIwNTM3LCA2NTkyNCwgOTk3NCwgMjI4LCA2NjM1NCwgMTUwMSwgCisgICAgMCwgNjQzOTUsIDUxNzksIDcyMDAsIDYyMjUsIDAsIDY1Nzk0LCAxNzI1LCA2NTUzMywgODE5NiwgNzQ3NiwgNzQzOTksIDAsIAorICAgIDAsIDcxNTIsIDg1MDIsIDU3NjIsIDE5NjcsIDc0ODMsIDAsIDAsIDgxMDQsIDAsIDc0NzQsIDc3OTc5LCAwLCAxMjY1MDcsIAorICAgIDEwNDE0LCAxMzAwMSwgODE0MSwgMCwgNDI1MzcsIDE1NTcsIDQzNTk0LCAxMjg2NDIsIDYzMzAsIDY4MDUsIDg2MzEsIAorICAgIDI1NDUsIDcwMDUyLCAxMjcxNjYsIDAsIDc0MTkwLCAwLCAwLCA5ODM3NzcsIDQyNzYyLCAwLCA0MjkxNCwgMTY1MCwgMjYyLCAKKyAgICAxNjM3LCAwLCA3OTAxLCAzMjM4LCAxMjgxNzMsIDQxODYxLCAwLCAxMjg1ODUsIDY1MTU4LCAxMDg2MCwgOTQwNTksIAorICAgIDQzNjU4LCA3NTI3LCAwLCA0MzMxOSwgNjQxOSwgMCwgNDUsIDAsIDY0NTg4LCA5Mzk4OSwgMCwgMTE5ODEwLCA3MTk0LCAKKyAgICA1MjkxLCAwLCA0MzY2NiwgMTMxMjksIDAsIDkwODQsIDAsIDg3MzcsIDAsIDEyODgxLCAwLCAxMjkwNiwgOTYzOSwgNzkxMiwgCisgICAgMjYyMCwgMCwgMCwgMCwgOTgzODY2LCAxNzksIDY1ODk2LCAwLCA2NDc1NiwgMjg1MywgNzg0NDMsIDExODgxMywgOTgzODgxLCAKKyAgICAxMTg5OTYsIDExOTAwOSwgMjg1MCwgODA4NCwgOTgzMDg1LCA3Mzg1MCwgMjgwMSwgOTIyODQsIDQyMDY5LCAxMTk4MzksIAorICAgIDc0NzU0LCAxMTk4NDEsIDQyMDcyLCAxMTk4NDMsIDExOTg0MiwgMTAzOTgsIDk4MzA1NiwgMCwgODM3NywgMTI3MTE2LCAKKyAgICA4MjQ1LCA2ODQwMSwgMzE1OCwgOTIzOTYsIDM5ODMsIDQzNjU2LCA5MjMsIDExOTg1NywgMTE5ODU2LCAyOTIsIDEzMDAyLCAKKyAgICAxMTk4NDUsIDExOTg0NCwgMzIyMSwgMTc2MywgOTI0NjMsIDQ2MTIsIDExOTg1MSwgMTE5ODUwLCA3MjUzLCAxMjcxMTAsIAorICAgIDY4MzkxLCAwLCAxMDc4MiwgMzYzNywgMTI5OTYsIDQzNTQyLCAwLCA2NDU3OCwgOTgzNjY2LCAzMjI4LCA2OTYzNiwgODc4MywgCisgICAgMCwgMTE5NjE0LCAyNzMxLCAwLCAwLCA3ODU4NSwgNDEwMiwgNzY5NiwgNzM4NzgsIDAsIDAsIDc4NTg2LCA0MzMxNiwgCisgICAgNDE3NywgMTEyODMsIDkwODksIDAsIDczOTk2LCA5ODMxNzMsIDY0NTAwLCA0MzY3NCwgMCwgNjQ5NDcsIDE4NTYsIDAsIDAsIAorICAgIDYzNzksIDAsIDAsIDAsIDMyMDgsIDEyOTc1LCA3NDc3NSwgMTI3MzgwLCA5ODM5MjIsIDkyMzg5LCA3NDA3MiwgNTUyNjksIAorICAgIDAsIDAsIDk4MzY3NCwgMjAzMywgNzg1NzcsIDc4NTc2LCAxOTUwMjYsIDU1MjU0LCA3NzQwLCAwLCAwLCAwLCA3Mzk2NCwgMCwgCisgICAgOTM5ODgsIDY3NjEyLCA2NTY3NCwgMTI4MjQ0LCA5NDExMCwgNDE2ODksIDAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgMTE3OTAsIAorICAgIDc0MDE5LCAwLCAxMjgwNjYsIDEyODAzMSwgODU2MSwgNDU3MywgMCwgNTMyNiwgMCwgMTIwNjA1LCA3MjMwLCA4MjU3LCAwLCAKKyAgICA4Nzc4LCA0MTY4OCwgMCwgNjU3NzYsIDIwNzEsIDgzMTQsIDY0NTksIDAsIDc2MjgsIDY1MDkyLCA3MzkwMywgNjY3MjEsIAorICAgIDExMzQyLCAxMjg1NjEsIDAsIDAsIDEyODIyNiwgMTI3MDAxLCAwLCAxMTgxMCwgMTMxNjQsIDEwNzIzLCA5NjcsIDk4Mzk0MiwgCisgICAgMTI2NDY5LCAxMTk0NiwgMCwgMzI1NywgMCwgMTIzMDcsIDE4NDUsIDk4MzE1NywgNDM1MjYsIDAsIDAsIDE4ODYsIDQyMzQyLCAKKyAgICAxMDA4OSwgODcwLCA3NjQ4LCAzNDk5LCA4NjA5LCA3NjUyLCA4NzYsIDg3MSwgODc3LCAwLCA4NzgsIDQyMDE1LCA4NzksIAorICAgIDQzNjkyLCA0NTYzLCAwLCAwLCA3NTkxLCA2NTg4NywgODY3LCA5NTIwLCA4NzIsIDEyNjYwNywgODY4LCA4NzMsIDc2NDIsIAorICAgIDAsIDg2OSwgODc0LCA3NjQ0LCAxMjA2NzQsIDg3NSwgNzkwLCAxMjgzMDMsIDAsIDAsIDAsIDY2MTgyLCA5ODMyNTAsIAorICAgIDU0MjksIDE5NTA1NSwgNjYxODAsIDEyNjQ4MCwgNjYxODEsIDY4NDUyLCA5ODMyODEsIDk4MzI0MiwgNDIwNjcsIDAsIAorICAgIDU0MzMsIDEwNjU3LCA3OTExLCAxOTQ2MjIsIDE1NDcsIDY2MTc2LCA0MjAxMiwgMTIwNTc2LCA1NDI1LCA0OTc3LCA5OTk5LCAKKyAgICA1MzE3LCA1NDIzLCA0NjExLCAwLCA2NzYzNywgMCwgOTY3OSwgNzQxMjIsIDAsIDAsIDAsIDY2MTk0LCA0NDE4LCA2NjE4NCwgCisgICAgNDYyOCwgNDI0NSwgMTE5NjQ4LCAwLCAwLCAxODUxLCAwLCAxMjcxODksIDExOTA4LCAwLCA5MzYwLCAxMTg4OTcsIAorICAgIDk4MzI3MCwgNDI3NzYsIDY2MTg3LCAxMjgzNywgODgyOSwgNzcxMSwgOTI3MTQsIDAsIDkyMzIxLCA0MzMxOCwgMCwgODgwOSwgCisgICAgNjk4ODEsIDAsIDk4MzE0MiwgMTIwNjA0LCA5ODMwNTIsIDk4Mzg3MywgMCwgOTgzMjYyLCAwLCAwLCA3NDI3LCA5OTU4LCAKKyAgICA0NTg4LCA0MzY4MCwgMCwgNzQ0ODQsIDE5NDk2OCwgMjQzMywgMCwgMTE5NjIyLCAzMzUyLCA3NDM2MywgOTgzODc2LCAwLCAKKyAgICA3OTMsIDc0NDA0LCAwLCAzMDUsIDU2NywgNjc2NjIsIDg0MiwgMTI4NTE5LCA4MjA4LCAwLCA0MTY5NSwgMTY0NywgCisgICAgMTE4ODc3LCAwLCA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgMTk0NjI4LCA5MTc2MjEsIDQxMzc2LCAxMTk5NzgsIAorICAgIDEyNjU3NiwgMTIwNTk0LCA3NDA4NiwgOTE3NjE1LCA5MTc2MTQsIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAxMzcyLCAKKyAgICAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgMTI1NCwgOTE3NjA1LCA5MTc2MDQsIDkzOTY3LCA5MTc2MDIsIDY1MjI4LCA3ODIyMSwgCisgICAgMTI2NjEyLCAwLCAyODQwLCAwLCAxMTk5ODIsIDk4MzkzMCwgMCwgMzI0NSwgOTA2OCwgNjgxOTQsIDY0NzI1LCAwLCAwLCAKKyAgICAxMjk5MSwgMCwgMjY1MSwgNjgwMTYsIDk4MzI1NywgOTE3NjExLCAxMjcwMjYsIDEyODg4MywgMCwgMCwgNDM2NDgsIAorICAgIDEyMDgxMiwgMCwgNDMzMjIsIDkyNjYyLCAwLCAwLCA2NDM3MiwgOTI2OTgsIDMyMjYsIDY1NSwgNzUyLCA3NDU3LCA3NDU2LCAKKyAgICA3NDUyLCAzMjg1LCAxMjg3NzksIDEyNzgyMSwgMTE5OTg4LCA2NTYxMCwgMjM5MSwgMCwgOTIyNDgsIDY3MSwgMjUwLCAKKyAgICA3NDM0LCA2MTgsIDY2OCwgNjEwLCA0MjgwMCwgNzQzMSwgMTE1MiwgNDI4MDEsIDY0MCwgMTIwNjY2LCA3NDQ4LCA3NDM5LCAKKyAgICA2MjgsIDM5MDUsIDczODEwLCAwLCAxMjgyNjYsIDY0NzQ5LCA2Nzg1MCwgMjEwNywgMCwgMCwgNDYwNSwgMTI4MTc0LCAKKyAgICA5ODMxOTIsIDQzMzcyLCA2NTk0NSwgMTI4ODM4LCAwLCAxMTk1OTAsIDAsIDAsIDAsIDk4NywgNjkyNywgMTE1NzIsIAorICAgIDQyMjYxLCAxMTQ2NCwgMzM2NSwgOTk3MSwgMCwgMCwgMTI4Mjk3LCAwLCAwLCAwLCAwLCAxMTMzNCwgNDMzMjYsIDEyNjA5LCAKKyAgICAxMTUxOSwgMTE1MDMsIDU1MzAsIDUyMTAsIDAsIDQ2MjcsIDk4Mzg4MywgNTIwOCwgMCwgMTI4ODQyLCAxMDMzMiwgNTIxOCwgCisgICAgNzk3NiwgOTE1NiwgMCwgMzI0NCwgNTUyOSwgNjk2NDcsIDczODk0LCAxMjg4NTIsIDU0MzIsIDY0OTY1LCA1NTI3LCAKKyAgICA3NDAzMywgMTA1MTYsIDc3OTAsIDU1MjgsIDAsIDQyMTQwLCAxMjAyODEsIDAsIDAsIDQzNTQ1LCA5ODg3LCAwLCA0MDAwLCAKKyAgICA3NDI5LCA3NDI4LCA2NjUsIDc0MjQsIDMyMDYsIDEyMDI3OCwgNzg4NCwgMCwgMTI4NTY2LCA5MTc5ODksIDEyODY2NiwgCisgICAgMjExLCAyNTA5LCAxMjg4NTgsIDEyMDU3MywgNjg2NzIsIDMyMjAsIDQyMjM1LCAwLCAxMDY5MCwgODk1MSwgNTIxNCwgCisgICAgNDI0NzQsIDgxMTgsIDAsIDcwNDgsIDQ1OTAsIDEyNzI1OCwgNTg1MiwgMCwgMCwgMTI3MjU5LCAxNzA4LCAwLCA5ODMxNjUsIAorICAgIDI2MjMsIDExOTQzLCAwLCA2OTIyNiwgMCwgNDY5OCwgNjY1MDksIDEwNjYsIDExOTkyMSwgNDcwMSwgOTgzODY3LCAKKyAgICAxMjAyODUsIDc0MjI1LCA5NDExMSwgODI2NywgMCwgMTI3MjY1LCAwLCA3NTE2LCAwLCAyNjI1LCA5ODM5NjgsIDgwMzQsIAorICAgIDc0MzA5LCAwLCAzNjMxLCAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAwLCAwLCAwLCA0MzM4NCwgMTI2NjAsIDAsIDAsIAorICAgIDAsIDc0ODUwLCA0MTA2OSwgMCwgMTI4MTU2LCAxMjA5OSwgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgNzk5MCwgMCwgMzk5MCwgCisgICAgMCwgOTgzMjU0LCA2NjM2OCwgNTAxNywgNjQ5NTYsIDcwNzEsIDAsIDExOTE0NCwgMTAzMCwgMTE4ODAwLCA5ODMxMjAsIAorICAgIDk1MTMsIDQxMDU5LCA5MzU3LCAwLCAxNzczLCAwLCAxMjAzNTAsIDAsIDYzMzksIDc3NDUsIDk4NDQsIDAsIDY0NjUwLCA5NCwgCisgICAgMTg4MCwgNzQ3NjYsIDk4MzgyOSwgODkwOCwgMCwgMTI4NzA3LCA2NTkxMywgNzg0NzAsIDEwNzUyLCAxMzAwMywgMCwgCisgICAgMTI2NTcyLCA0MTMwNywgODczMiwgMTIwMzM4LCAwLCAxNzU3LCA2OTY0LCA0Njk2LCAwLCAxMjAzMzUsIDY0Nzg1LCA3Mzk0LCAKKyAgICAzNjQxLCA1NDE5LCAxMjgwNTUsIDAsIDEyNzg4MywgMCwgMTIwMzQ0LCA0Mzk4OCwgMCwgODYxMCwgNDMwNjIsIDc1OTIsIAorICAgIDg1NiwgNzQyOTksIDkzNiwgMTMyODksIDY5ODk0LCA0MzE3MSwgMTQ1OSwgMCwgNjUyNDMsIDc4NjM4LCAxOTk1MywgMCwgCisgICAgMTUwNCwgNzAwNjQsIDAsIDEyOTEzLCA3NDIwNiwgNzUyOSwgMCwgMTI4Njk5LCA5ODM5NDgsIDEyMDc4MiwgNDExMywgMCwgCisgICAgMjM3MiwgMzM2LCAwLCA3NTA5LCAxMjE1MiwgMCwgNjgyLCA2NjQ1OCwgNDE1MDUsIDAsIDY0NzQzLCAxMDU5MywgMTcwMywgCisgICAgMCwgOTgzOTQ2LCA4MDMzLCA2OTk1MywgMCwgOTgxMCwgMTI3MjY5LCAwLCAxMjk3MCwgMCwgNDIzNTEsIDEwMTA5LCAKKyAgICA5MTc2MjMsIDAsIDE5NDY5MywgMCwgOTI2OTAsIDAsIDAsIDc0MjkxLCAxOTY1LCA3MDY5LCA0MzMxMiwgMCwgNzM4ODcsIDAsIAorICAgIDIwODcsIDY0MzcwLCA2MzE0LCA0MTcxNCwgODUwMSwgMCwgMCwgNzQyMzksIDQxMzE3LCA5MjYxNCwgMjA5MSwgNzQ1NDUsIAorICAgIDIwOTAsIDAsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAwLCAxMDQ5OCwgMjA4MywgNzc4ODgsIDAsIDAsIDExOTIzNiwgCisgICAgNjM0LCAwLCAwLCAwLCA2OTc3OSwgNDE2NSwgODc0NiwgMCwgOTY1NCwgMTI4NTYsIDY5MjQsIDAsIDcwNjYsIDk4MzcxMCwgCisgICAgMCwgMTI4MTM1LCA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCA0MTAzOSwgMTI3NDgzLCAwLCA2ODAsIDIzMDIsIAorICAgIDEyODIwMCwgMTE4MSwgNzA1NiwgMzE3NCwgMTI2NTE2LCAwLCA5MjY2OCwgNjU2NjUsIDEyNzM3NSwgMTI2NTA2LCA2OTIwLCAKKyAgICAwLCA5MjI5NSwgMCwgMTE4OTY1LCAwLCA2NDY0NCwgMTI2OTgxLCA3NDExOSwgMCwgNDEwMjgsIDAsIDYyMzEsIDI2MTMsIAorICAgIDY1MzAyLCA0MDk4OSwgMCwgMTk0Njk2LCAwLCA0Mjc2MCwgMCwgOTgzNTY2LCAwLCA0MDk4NywgNDY2NywgMCwgOTgzOTIzLCAKKyAgICA4ODI4LCAwLCAwLCAxMjQ2LCA0NzQ2LCAwLCAwLCAxMTAyMSwgNDc0OSwgOTI2NzUsIDAsIDkyMSwgNDc0NCwgMCwgMTI3MDIsIAorICAgIDI0MiwgMCwgMTU2NiwgODIxNywgMCwgNjQ2NTMsIDc4Mzg2LCAxMjgxMjEsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIDUzMTMsIAorICAgIDk1MSwgMCwgMCwgOTgzODU4LCA3NjA0LCA5ODMyODIsIDQwMDksIDEyNzgxNiwgOTgzNzAxLCAxMjA1NjIsIDAsIDk4MzcxMSwgCisgICAgNjQ4NjAsIDExOTEzOCwgMTE5MDY5LCAwLCAxMjczNzAsIDQwNDgsIDk4MzU5OCwgMCwgNzAwMjQsIDE2NDYsIDc3ODkwLCAKKyAgICA2NDUzNCwgNzM5OTUsIDEyMDcwNSwgMCwgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCA5MDk5LCA0MTA3LCAKKyAgICAzNDQxLCAxMTk4OTQsIDI5NzUsIDc0NDQyLCA5ODIyLCA5ODM5MjYsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIDExODg0MCwgMCwgCisgICAgOTE3NTYyLCAxOTQ2MTAsIDMzOTksIDk4NTEsIDk4MzcwOCwgMTE5MDksIDkwNTksIDAsIDc2ODcsIDAsIDY3ODksIDAsIDAsIAorICAgIDAsIDcxMzY3LCAwLCAwLCAxNzc3LCA5MTUxLCAxMTM3LCA2OTc2NywgNzQ5LCA0MjM2NiwgMCwgNTM4NSwgMTI4NTc0LCAKKyAgICAxMjgyMTgsIDAsIDAsIDU5ODksIDAsIDAsIDEyODA5MSwgMCwgNDE2ODUsIDY5MjIzLCAwLCA5NzY5LCA0MTY4NCwgCisgICAgOTgzMjE0LCA1MTksIDAsIDExNzQwLCA1NzY2LCAwLCAwLCAyNjAwLCA4ODQ4LCAxMjAxMzgsIDQxMjk3LCAwLCAzNjY2LCAKKyAgICA3NDQ3MywgNDEzMDAsIDc0NDY4LCA2NTE2MCwgMCwgNjk2ODgsIDY5NzcxLCA3NDQ3OSwgMCwgNjU1OCwgMCwgMCwgNjk3NjUsIAorICAgIDEyMDc1MCwgMjUyLCAwLCA0MTMwMiwgMCwgMCwgMCwgNjk3NjMsIDAsIDExNzI5LCA4NzE5LCA5MDYwLCAwLCAxMjAxMzksIAorICAgIDEwNzYxLCAwLCAwLCAwLCAxMTg3OTIsIDExNzM0LCA5ODMyMjEsIDExNzMwLCAwLCA5NTkzLCA1NzU3LCAyNDAzLCA2NDgwOCwgCisgICAgNTUyNzUsIDAsIDExNzI4LCA0MzU3MiwgMCwgMCwgNzc2NCwgOTgzNzA1LCAxMTA5NCwgMTIwODI1LCAwLCAwLCA0MjgyLCAKKyAgICA4Mjk4LCAwLCAwLCAwLCAwLCAwLCA2NDQ0OSwgMCwgMTI2NjUwLCA2Mzg1NCwgODQ1NiwgMCwgNzQ3ODMsIDY1NjcwLCAwLCAKKyAgICA3ODI1MCwgMCwgNzc3NCwgMTA2MDcsIDk3OTIsIDAsIDAsIDAsIDAsIDEyMDc2NCwgMCwgMTAwMTksIDc0NzYyLCAwLCAKKyAgICAzNDU4LCA0MzY1LCA3MDA1MywgOTgzNzAzLCAzNjQ3LCAwLCAyNjAyLCAxMjgzNDEsIDAsIDE5NDcwNywgNDExMzUsIDAsIDAsIAorICAgIDAsIDY0NjMxLCAxNzIsIDQ5NzEsIDQxMjE5LCA0MTEzNywgMTg4OSwgNzIzOCwgNjU0NSwgMTI2NDc2LCA5MjE5MywgNzU5NywgCisgICAgMTA1MjgsIDAsIDAsIDM3MzIsIDczOTEwLCAxOTQ1ODgsIDUzNDQsIDAsIDQzMzY2LCA0MzM2MywgOTA2MiwgMTE5MjUyLCAwLCAKKyAgICAwLCAwLCA2NDQ3OSwgOTIzMiwgOTI1OTYsIDAsIDAsIDE5NDcxMiwgMTA5MDAsIDQxNTMxLCAxMjYzLCAzNzIwLCAxMjA0OCwgCisgICAgMCwgNjQyOTIsIDQxNTI0LCA3MjI3LCAxMTk2MzUsIDYwOTksIDQxNTM0LCAwLCAxMjczNTQsIDEyNzM0NSwgMjk5LCAKKyAgICA5MTc5NTcsIDg1MjUsIDEyNzM0NywgMzUyNCwgOTE3NTY1LCA4ODMxLCAxMjczNDksIDkyNTY0LCAzMDc1LCA2Nzg2NywgCisgICAgMTI3MzUyLCAwLCA2NjM2MiwgMCwgNjQzNTMsIDAsIDAsIDU4NDUsIDAsIDAsIDAsIDI1ODEsIDgyMDAsIDY1MTE0LCAKKyAgICA2ODQ2MCwgMCwgNDMyODMsIDU1NTEsIDAsIDEyMDczNSwgMCwgNjM0MCwgMTE4ODU1LCAwLCA3ODEzNCwgODY4MCwgNzIwNCwgCisgICAgNzAwNjUsIDI1ODgsIDI5MTQsIDcwMTEsIDU1MjgxLCAwLCAyNDcxLCAxOTQ2MzEsIDI4ODMsIDI3NDksIDExOTU2MywgCiAgICAgNzM3NzQsIDEwOTEzLCAwLCAwLCA4NjY2LCA2NzUsIDQyNDkzLCAwLCA0MzU3MSwgMCwgNjIxOSwgMCwgOTk4MCwgNDEyMzIsIAotICAgIDEwOTI4LCAwLCA0MTE1MywgNDEyMjksIDExODk2NywgMCwgMzczOCwgMTI3MzY5LCAwLCAxMjcxMSwgMzE4MSwgNjYyMTIsIAotICAgIDc0Mjg5LCA2ODQ3MiwgNDI4NTcsIDgyNjIsIDAsIDAsIDAsIDAsIDQyMzQ3LCAxMjA5MiwgOTYxNSwgNzIzNCwgNzQwNDcsIAotICAgIDAsIDAsIDY0Njc0LCAwLCAwLCA3Mzg0NiwgMjkzNCwgMTI3MjIsIDEyMDc2MiwgOTIyLCA0Mzk4MywgNzQ1MDcsIDAsIAotICAgIDc0NDYxLCAzMjE4LCAxMjA0NzEsIDc0MjkwLCAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIDg1NjksIDExNDA0LCAxMTkzMiwgCi0gICAgNzM3MjgsIDMyMTQsIDEyMDQ2MSwgMTIwNDY4LCAxMjEyOCwgMzIwNywgNjU0ODYsIDc4NzI5LCAxOTAxLCA3ODcyNywgCi0gICAgMTI3MzI2LCAxMjA0NjAsIDc0MjUsIDMyMDUsIDAsIDc4NzM3LCA3ODczNiwgNzg3MzUsIDQzMzgzLCA3ODczMywgNjU0NTksIAotICAgIDI2MDYsIDc4NzMwLCA3Mzg5NywgMCwgMTE0OTYsIDExNzMsIDAsIDQxMjcyLCAxMTk2NjEsIDAsIDAsIDAsIDEyMDczNywgMCwgCi0gICAgMCwgMCwgMzc4LCAyNjEwLCAwLCA2NTA3OSwgMCwgNjU2OTUsIDAsIDM3LCA3MDY4LCAwLCAxMjA0ODAsIDEyMDQ3OSwgCi0gICAgMzIwOSwgMTIwNDc3LCAwLCAxMDYzOCwgOTc2OCwgMTIwNDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTUxMCwgMCwgMCwgCi0gICAgNTIzMywgMCwgNjQ3OTIsIDAsIDAsIDAsIDAsIDcwNjAsIDk4NDcsIDEyMDE0NCwgMTY4NSwgNTk1LCAwLCA3Mzk3MSwgCi0gICAgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDAsIDEwMDA0LCAxMjY5OTcsIDAsIDY1NDEsIDAsIDAsIDAsIDMyNDMsIDkwMTQsIAotICAgIDU2MDYsIDAsIDUzOCwgNjQ2MjAsIDU2MDIsIDg0NjcsIDc0MzkxLCA2NTQ3LCAwLCA4MjAzLCA3ODQ4OCwgMCwgODQ1OCwgCi0gICAgNjUyMTEsIDg0OTUsIDExOTkwNCwgMCwgOTE3NTUyLCA3NzksIDc4MzE0LCA2NDM2NywgMjQ2NSwgMCwgODE5MywgNTUyNzksIAotICAgIDk3MzAsIDkyODAsIDAsIDcwNjUsIDc0MTU1LCA0MzQ2LCAwLCA3Mzc5OCwgNTA0LCAwLCA5MjQxNCwgODk4MiwgMCwgMCwgMCwgCi0gICAgNzgyLCAwLCAxMDg4MywgMCwgMTk0ODUyLCA3MzIsIDM3MzcsIDEyNzI1MywgMTU0OCwgNjg2NTAsIDAsIDE4MzIsIDU2MDQsIAotICAgIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDAsIDExNzg3LCAzNzQ1LCAwLCAwLCA0Mjg4OCwgNjU3MTIsIDAsIDM4NjksIAotICAgIDExOTM3LCA1NzI1LCAxMjc1MzksIDE3ODMsIDY4NjQ4LCA1NzI4LCAwLCAwLCAwLCAxMTkxOCwgNjY1NjcsIDU3MjQsIDAsIAotICAgIDU3MjcsIDc4NTIxLCAwLCAwLCA3NjQsIDAsIDEyODExNiwgNDM1MzEsIDAsIDkwMzMsIDAsIDQyNTMyLCA2MjIzLCAxMTA0MiwgCi0gICAgMTIwNzQ5LCAxMTQyMywgMCwgMTE5ODYxLCAwLCA0MzQ2NSwgMCwgMTI4MjY3LCA2NTU5LCA2NDU1NywgMCwgMCwgMTIwNjQ4LCAKLSAgICA0MzAxOSwgNDM0NzcsIDEwMjM4LCAwLCAwLCA0MzM3NywgOTIyODIsIDAsIDE0NzgsIDk3ODMsIDExODI1LCAyNjA3LCAKLSAgICA2NDc0MCwgMCwgNzczOSwgNzQ1NDMsIDAsIDAsIDAsIDYxMzIsIDAsIDYzNzY1LCAwLCAwLCA0MTE0NCwgMCwgOTI0MzgsIAotICAgIDQzNTM3LCA2NzYxLCAxMDA5MywgNDM2OSwgOTE3NzkxLCAwLCAwLCA4ODIwLCAzOTQ3LCAwLCAwLCAxMTUxNSwgNTI2LCAwLCAKLSAgICA0MTI5NSwgMTk0NjAzLCA5MTc3ODUsIDE5NDkzMiwgMCwgNzY4OCwgOTE3Nzg2LCA3Njg2LCA4Mjg4LCAxMTgxNSwgMCwgMCwgCi0gICAgMCwgMTU0MywgMzcxMywgNDEyMjEsIDEyNDIzLCA0MjI4MSwgOTE3Nzg4LCA3NDAyNCwgMTIyOTMsIDAsIDY0MzU3LCAKLSAgICAxMTc5NCwgNDIwODIsIDAsIDE3MzcsIDg5ODcsIDQyMDgxLCAwLCA3MjA1LCAwLCA5MzM1LCAxMjg1MCwgMTE5ODcwLCAKLSAgICA2NTUzLCA3MDU1LCAwLCA4Mjc3LCAwLCAwLCA1NDc1LCA3NDc5NSwgNjc4MCwgMCwgMCwgMTI5OTAsIDExNjAsIDQyMDg0LCAKLSAgICAxMTk2NTAsIDQxMjE3LCAxMTk2NjAsIDEwMDE4LCAzNjAsIDAsIDAsIDY4MTc2LCA1ODYzLCAzMTM3LCAwLCA0MTQ3LCAwLCAKLSAgICA0MTIxNiwgNzg0NCwgMjYxNiwgMTE5MTkwLCA2ODQ2MSwgNjUyMzQsIDAsIDEzMDc2LCAzMTM1LCAwLCA3ODE0MywgCi0gICAgMTE5MTM5LCAzMTQyLCA5MjQ1MSwgMCwgMTA4MTksIDExOTU4MCwgMTAxODMsIDAsIDI2MDgsIDE0NzAsIDczOTY3LCAwLCAKLSAgICA2MjI3LCAwLCAwLCA2OTc0MSwgMCwgNjE2MywgMCwgMCwgMTI3MzE0LCAwLCAwLCA4NjAzLCAwLCAxMTk4NjYsIDMzMDYsIAotICAgIDEwODc2LCA0MzM5MiwgMTE5NTczLCAxMjc5MzEsIDU3NTEsIDAsIDYyMjIsIDAsIDAsIDEyMDg2LCA3NDAzLCAxNjAwLCAKLSAgICA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCA5MjY1OCwgMTEzMTAsIDAsIDg4ODIsIDAsIDAsIDI1NzAsIDcwMjEsIDAsIDAsIAotICAgIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCA2OTc0LCAwLCAwLCAwLCA1MDAyLCAwLCA0MTI4NiwgMCwgMTI3MDE5LCAwLCA0MzU4NSwgCi0gICAgMCwgNjU1MSwgMCwgMTI4MjI5LCAwLCA0MTI4OSwgMCwgMTk0NjAyLCAwLCA4OTc3LCA2MDIsIDEyMDgxNCwgMCwgMTI4Nzc4LCAKLSAgICAxMjg2NjEsIDAsIDAsIDQxMjc5LCAwLCAwLCAwLCAxMTA4MSwgNDM2MTUsIDAsIDAsIDAsIDAsIDEyNzI3LCAwLCAwLCAKLSAgICA3ODM5NywgOTQ3NSwgNzExMiwgNjUxMDUsIDAsIDk2MzMsIDEwODg2LCA0MzU5MiwgNzgzMSwgMCwgMTk0NTcxLCAwLCAKLSAgICA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIDgyOTEsIDQzMDUxLCA5MjU3MCwgMCwgMjU5NiwgNDM1ODQsIDAsIDEzMTEzLCAKLSAgICAwLCAxMjc3NTcsIDIzOTMsIDcwNTgsIDkwODcsIDc0MDY3LCA2ODY3MywgNDE1NzQsIDc4MzM3LCAwLCA3NDA1OCwgNjM3NiwgCi0gICAgMCwgMCwgMCwgMCwgOTg1NCwgMTI3NzQ4LCA2NDY5NiwgMCwgMTI4MjIwLCAwLCA2OTk0LCAwLCAxNzIwLCAwLCAwLCAwLCAKLSAgICA2NTI5LCA3MDYzLCAwLCAzNzUxLCA5MTIwLCAwLCAwLCAxNzk4LCA3MDksIDAsIDEzNTQsIDE4NzYsIDEzMTUyLCA2NTU3LCAKLSAgICAxMjQzMCwgODEzNywgMCwgOTI2NDIsIDAsIDAsIDI0NSwgMTI4MDk3LCAxMTQ1NiwgNDEyMzMsIDcwNzAsIDAsIDAsIDYxMzYsIAotICAgIDkxNzYwOSwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgNDIwNDUsIDk4MDQsIDAsIDQzMiwgMzU5NSwgMCwgNjU0MzcsIAotICAgIDAsIDc0NDU1LCA0MjM5OSwgMCwgMCwgMTI4Mjc0LCAwLCAxMTk2NTgsIDAsIDAsIDAsIDc3ODk0LCA4Nzk3LCAwLCA5MDUyLCAKLSAgICA2NDg4OCwgNzE2NywgMjM1NiwgOTUsIDc0Nzg0LCAxMDU4MCwgMCwgNDIyODYsIDAsIDY0NjQwLCAwLCAxMTkxMDQsIDAsIAotICAgIDc0MTM3LCAwLCAxMDA2MywgMTI2NTIsIDEyMTk5LCA5MjQ4MCwgMCwgMjU2NiwgMTE5NzEsIDAsIDAsIDEwNjUsIDAsIDAsIAotICAgIDQzNDAwLCAyNTc2LCA2NjY5NiwgMCwgMCwgNDM2MDQsIDAsIDAsIDc0MDgyLCA1MTQsIDc0NTAyLCAwLCAyOTIxLCA0MzIxNSwgCi0gICAgNjQ0OTMsIDU3NzIsIDEyOTY4LCAwLCAxOTQ5NDQsIDc0NTgwLCA0MzM5OCwgMjU4MCwgMCwgNDEzNDEsIDQxMjIzLCA2NTY0LCAKLSAgICAxNDYzLCA0MTM0MiwgMCwgNTI5MywgMCwgMCwgMzczMywgMTEzNDYsIDAsIDEyMDU0LCAwLCA3NDA5OCwgNDI4MjcsIDAsIAotICAgIDEzMDkxLCAwLCAwLCAwLCA5MTc5MTUsIDAsIDEyNzAyNSwgMCwgNzQ4MjEsIDAsIDAsIDExOTA0MiwgMCwgMTI3ODY1LCAKLSAgICAxMzA5MCwgNjY2NDMsIDAsIDEyNzAsIDExMzIsIDQyMzYwLCAwLCA3NDA5NiwgNjY2NTUsIDQyNTY5LCAxMjc4MjQsIDAsIAotICAgIDY0NzYxLCAwLCA0MTAyMSwgODUxMCwgNDI0MzIsIDAsIDAsIDAsIDAsIDY0NDk2LCA3NDEwOSwgMCwgOTkxNSwgMCwgMCwgCi0gICAgNzA2MSwgNDEzMzYsIDM4NTQsIDY5NzAwLCAxMzE0MSwgNjg0MTMsIDQzNDAxLCA0MjMxOSwgMTMwODIsIDAsIDcwNjcsIAotICAgIDY4MjIxLCAwLCAwLCAxMjcxNzEsIDAsIDAsIDEyNzc5NywgOTAyOSwgNDM1NDMsIDExOTMxNSwgMjM1MywgNjMwOCwgMCwgCi0gICAgNzQ3OTIsIDI2MTEsIDExOTE4NiwgMCwgMCwgMCwgNDM2NjQsIDkyMzk5LCA2NjYyNywgMCwgNDQ4NCwgODUwOSwgMTE4OTc2LCAKLSAgICA3ODExNiwgNjUyMzMsIDAsIDQxMjI0LCA0MTAxNywgMCwgMzc0NywgMTA1MjIsIDAsIDAsIDE2OTEsIDQxMjI2LCAwLCAKLSAgICAxMjEwNywgNDQwMDIsIDEwOTA1LCA2NTAxMCwgMTk0OTg2LCA2OTcsIDY2MDE4LCA5Mjg0LCA0MjQ0LCAwLCAwLCA5MjY0NCwgCi0gICAgMTMxMjEsIDEyMDAzNiwgMCwgMTIwMTAsIDEyODU3MywgMTI4MjIxLCAwLCAwLCAwLCAxMjcxOTMsIDY1ODE2LCA2ODExMSwgCi0gICAgMCwgMTI3OTMzLCA2NTY2OCwgOTIyNTcsIDY2MTgsIDExODc4NCwgNjYzNjUsIDAsIDQyMjM0LCAxMjY0OCwgMTI4MDM5LCAKLSAgICA3MTIzLCAwLCA1Nzg1LCA5MTk4LCA5NzY0LCA0MTMxNiwgNjU4NzcsIDczODMsIDEzMjMwLCA0MTI5OSwgMCwgMCwgNjgzNjUsIAotICAgIDEyODI1OCwgMCwgMCwgMCwgMTMxMjIsIDAsIDE5MSwgNzQxMTksIDg1ODUsIDgwMDAsIDY0NDExLCAxMjA2NTIsIDQyODg5LCAKKyAgICAxMDkyOCwgMCwgNDExNTMsIDQxMjI5LCAxMTg5NjcsIDAsIDM3MzgsIDk0MDE2LCAwLCAxMjcxMSwgMzE4MSwgNjYyMTIsIAorICAgIDc0Mjg5LCA2ODQ3MiwgNDI4NTcsIDgyNjIsIDk4MzM3MSwgMCwgOTgzMjIwLCAwLCA0MjM0NywgMTIwOTIsIDk2MTUsIAorICAgIDcyMzQsIDc0MDQ3LCA5ODMwODgsIDAsIDQzNzQ0LCAwLCAwLCA3Mzg0NiwgMjkzNCwgMTI3MjIsIDEyMDc2MiwgOTIyLCAKKyAgICA0Mzk4MywgNzQ1MDcsIDk4MzEyNiwgNzQ0NjEsIDMyMTgsIDEyMDQ3MSwgNzQyOTAsIDEyMDQ2OSwgNjQ1NjIsIDEyMDQ3NSwgCisgICAgODU2OSwgMTE0MDQsIDExOTMyLCA3MzcyOCwgMzIxNCwgMTIwNDYxLCAxMjA0NjgsIDEyMTI4LCAzMjA3LCA2NTQ4NiwgCisgICAgNzg3MjksIDE5MDEsIDc4NzI3LCAxMjczMjYsIDEyMDQ2MCwgNzQyNSwgMzIwNSwgNjgwMDMsIDc4NzM3LCA3ODczNiwgCisgICAgNzg3MzUsIDQzMzgzLCA2OTk0MCwgNjU0NTksIDI2MDYsIDc4NzMwLCA3Mzg5NywgMCwgMTE0OTYsIDExNzMsIDAsIDQxMjcyLCAKKyAgICAxMTk2NjEsIDAsIDAsIDk4MzMxMywgMTIwNzM3LCAwLCA5ODM5NjIsIDk4MzMxMiwgMzc4LCAyNjEwLCAwLCA2NTA3OSwgCisgICAgOTgzMzE3LCA2NTY5NSwgMTI2NTU5LCAzNywgNzA2OCwgMCwgMTIwNDgwLCAxMjA0NzksIDMyMDksIDEyMDQ3NywgMCwgCisgICAgMTA2MzgsIDk3NjgsIDY5OTUyLCAxMTk5MDksIDk4MzM5MSwgMCwgMCwgMCwgMCwgNjU1MTAsIDAsIDAsIDUyMzMsIAorICAgIDk4MzMyNywgNjQ3OTIsIDk4MzMyNiwgMCwgMTI2NjMzLCAwLCA3MDYwLCA5ODQ3LCAxMjAxNDQsIDE2ODUsIDU5NSwgMCwgCisgICAgNzM5NzEsIDEyOTIsIDg5NDAsIDczODAsIDExMDg4LCAwLCAxMDAwNCwgMTI2OTk3LCAwLCA2NTQxLCAwLCAwLCAwLCAzMjQzLCAKKyAgICA5MDE0LCA1NjA2LCAwLCA1MzgsIDY0NjIwLCA1NjAyLCA4NDY3LCA3NDM5MSwgNjU0NywgMTI4MTMyLCA4MjAzLCA3ODQ4OCwgCisgICAgOTgzMDkwLCA4NDU4LCA2NTIxMSwgODQ5NSwgMTE5OTA0LCAwLCA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCAKKyAgICA2OTkwMSwgODE5MywgNTUyNzksIDk3MzAsIDkyODAsIDAsIDcwNjUsIDc0MTU1LCA0MzQ2LCAwLCA3Mzc5OCwgNTA0LCAwLCAKKyAgICA5MjQxNCwgODk4MiwgMCwgMCwgMCwgNzgyLCAwLCAxMDg4MywgMCwgMTk0ODUyLCA3MzIsIDM3MzcsIDEyNzI1MywgMTU0OCwgCisgICAgNjg2NTAsIDkyNTA3LCAxODMyLCA1NjA0LCA1NzM1LCA0MTE0MSwgMTE5MDIwLCA0Mzc2LCAwLCAxMTc4NywgMzc0NSwgMCwgCisgICAgMCwgNDI4ODgsIDY1NzEyLCA5ODMyOTYsIDM4NjksIDExOTM3LCA1NzI1LCAxMjc1MzksIDE3ODMsIDY4NjQ4LCA1NzI4LCAwLCAKKyAgICAwLCAwLCAxMTkxOCwgNjY1NjcsIDU3MjQsIDAsIDU3MjcsIDc4NTIxLCAwLCAwLCA3NjQsIDAsIDEyODExNiwgNDM1MzEsIDAsIAorICAgIDkwMzMsIDAsIDQyNTMyLCA2MjIzLCAxMTA0MiwgMTIwNzQ5LCAxMTQyMywgMCwgMTE5ODYxLCA3MTM0NCwgNDM0NjUsIDAsIAorICAgIDEyODI2NywgNjU1OSwgNjQ1NTcsIDcxMzQ4LCA5MjY0OSwgMTIwNjQ4LCA0MzAxOSwgNDM0NzcsIDEwMjM4LCA3NDQ5MSwgMCwgCisgICAgNDMzNzcsIDkyMjgyLCA3MTM0NiwgMTQ3OCwgOTc4MywgMTE4MjUsIDI2MDcsIDY0NzQwLCAwLCA3NzM5LCA3NDU0MywgMCwgCisgICAgMCwgMCwgNjEzMiwgMCwgNjM3NjUsIDAsIDcwMDU4LCA0MTE0NCwgMCwgOTI0MzgsIDQzNTM3LCA2NzYxLCAxMDA5MywgCisgICAgNDM2OSwgOTE3NzkxLCAwLCA5ODMxNDgsIDg4MjAsIDM5NDcsIDAsIDAsIDExNTE1LCA1MjYsIDEyODEwMywgNDEyOTUsIAorICAgIDE5NDYwMywgOTE3Nzg1LCAxOTQ5MzIsIDAsIDc2ODgsIDkxNzc4NiwgNzY4NiwgODI4OCwgMTE4MTUsIDAsIDAsIDk4MzM3NCwgCisgICAgMTU0MywgMzcxMywgNDEyMjEsIDEyNDIzLCA0MjI4MSwgOTE3Nzg4LCA3NDAyNCwgMTIyOTMsIDAsIDY0MzU3LCAxMTc5NCwgCisgICAgNDIwODIsIDAsIDE3MzcsIDg5ODcsIDQyMDgxLCAwLCA3MjA1LCAwLCA5MzM1LCAxMjg1MCwgMTE5ODcwLCA2NTUzLCA3MDU1LCAKKyAgICAwLCA4Mjc3LCAwLCAwLCA1NDc1LCA3NDc5NSwgNjc4MCwgMCwgMCwgMTI5OTAsIDExNjAsIDQyMDg0LCAxMTk2NTAsIAorICAgIDQxMjE3LCAxMTk2NjAsIDEwMDE4LCAzNjAsIDAsIDAsIDY4MTc2LCA1ODYzLCAzMTM3LCAwLCA0MTQ3LCA5ODMxNzAsIAorICAgIDQxMjE2LCA3ODQ0LCAyNjE2LCAxMTkxOTAsIDY4NDYxLCA2NTIzNCwgOTgzMjg2LCAxMzA3NiwgMzEzNSwgOTgzMjc5LCAKKyAgICA3ODE0MywgMTE5MTM5LCAzMTQyLCA5MjQ1MSwgOTQwNjgsIDEwODE5LCAxMTk1ODAsIDEwMTgzLCAwLCAyNjA4LCAxNDcwLCAKKyAgICA3Mzk2NywgOTQwMDgsIDYyMjcsIDAsIDEyNzE3MywgNjk3NDEsIDk4MzU4MiwgNjE2MywgOTgzNTU4LCAwLCAxMjczMTQsIDAsIAorICAgIDAsIDg2MDMsIDAsIDExOTg2NiwgMzMwNiwgMTA4NzYsIDQzMzkyLCAxMTk1NzMsIDEyNzkzMSwgNTc1MSwgMCwgNjIyMiwgMCwgCisgICAgMCwgMTIwODYsIDc0MDMsIDE2MDAsIDY0MzA5LCA2NDkzOSwgMCwgNjQ3ODMsIDkyNjU4LCAxMTMxMCwgMCwgODg4MiwgMCwgCisgICAgMCwgMjU3MCwgNzAyMSwgMCwgMCwgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIDY5NzQsIDAsIDAsIDk4MzIwOSwgNTAwMiwgMCwgCisgICAgNDEyODYsIDY5OTQ2LCAxMjcwMTksIDAsIDQzNTg1LCAwLCA2NTUxLCA5ODM5NTMsIDEyODIyOSwgMCwgNDEyODksIDAsIAorICAgIDE5NDYwMiwgMCwgODk3NywgNjAyLCAxMjA4MTQsIDAsIDEyODc3OCwgMTI4NjYxLCAwLCA5ODMzNjcsIDQxMjc5LCAwLCAwLCAKKyAgICAwLCAxMTA4MSwgNDM2MTUsIDAsIDAsIDAsIDk4MzYxMiwgMTI3MjcsIDAsIDAsIDc4Mzk3LCA5NDc1LCA3MTEyLCA2NTEwNSwgCisgICAgMCwgOTYzMywgMTA4ODYsIDQzNTkyLCA3ODMxLCA5ODM4MjAsIDE5NDU3MSwgMCwgNzM5MTUsIDgwNzYsIDQzMDQ4LCA4MjkwLCAKKyAgICA4MjkxLCA0MzA1MSwgOTI1NzAsIDAsIDI1OTYsIDQzNTg0LCAwLCAxMzExMywgMCwgMTI3NzU3LCAyMzkzLCA3MDU4LCAKKyAgICA5MDg3LCA3NDA2NywgNjg2NzMsIDQxNTc0LCA3ODMzNywgMCwgNzQwNTgsIDYzNzYsIDAsIDAsIDAsIDAsIDk4NTQsIAorICAgIDEyNzc0OCwgNjQ2OTYsIDAsIDEyODIyMCwgMCwgNjk5NCwgMCwgMTcyMCwgMCwgMCwgMCwgNjUyOSwgNzA2MywgOTgzMTgyLCAKKyAgICAzNzUxLCA5MTIwLCA5ODM0NzcsIDAsIDE3OTgsIDcwOSwgMCwgMTM1NCwgMTg3NiwgMTMxNTIsIDY1NTcsIDEyNDMwLCAKKyAgICA4MTM3LCA5NDA5OCwgOTI2NDIsIDAsIDAsIDI0NSwgMTI4MDk3LCAxMTQ1NiwgNDEyMzMsIDcwNzAsIDAsIDk0MDQ2LCAKKyAgICA2MTM2LCA5MTc2MDksIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIDQyMDQ1LCA5ODA0LCAxMTg5NjMsIDQzMiwgMzU5NSwgCisgICAgMTk0OTQ1LCA2NTQzNywgMCwgNzQ0NTUsIDQyMzk5LCAwLCAwLCAxMjgyNzQsIDAsIDExOTY1OCwgMCwgMCwgMCwgNzc4OTQsIAorICAgIDg3OTcsIDAsIDkwNTIsIDY0ODg4LCA3MTY3LCAyMzU2LCA5NSwgNzQ3ODQsIDEwNTgwLCAwLCA0MjI4NiwgMCwgNjQ2NDAsIAorICAgIDAsIDk0MTA5LCAwLCA3NDEzNywgNzAwMzUsIDEwMDYzLCAxMjY1MiwgMTIxOTksIDkyNDgwLCAwLCAyNTY2LCAxMTk3MSwgCisgICAgOTgzNzI4LCAwLCAxMDY1LCAwLCAwLCA0MzQwMCwgMjU3NiwgNjY2OTYsIDkzOTk5LCAwLCA0MzYwNCwgMCwgMCwgNzQwODIsIAorICAgIDUxNCwgNzQ1MDIsIDcwMDMyLCAyOTIxLCA0MzIxNSwgNjQ0OTMsIDU3NzIsIDEyOTY4LCA3MDA1NSwgMTk0OTQ0LCA3NDU4MCwgCisgICAgNDMzOTgsIDI1ODAsIDk4MzgwMSwgNDEzNDEsIDQxMjIzLCA2NTY0LCAxNDYzLCA0MTM0MiwgMCwgNTI5MywgNzAwMjAsIDAsIAorICAgIDM3MzMsIDExMzQ2LCAwLCAxMjA1NCwgMCwgNzQwOTgsIDQyODI3LCAwLCAxMzA5MSwgMCwgMCwgMCwgOTE3OTE1LCAwLCAKKyAgICAxMjcwMjUsIDAsIDc0ODIxLCAwLCA5ODM3MjQsIDExOTA0MiwgMCwgMTI3ODY1LCAxMzA5MCwgNjY2NDMsIDAsIDEyNzAsIAorICAgIDExMzIsIDQyMzYwLCAwLCA3NDA5NiwgNjY2NTUsIDQyNTY5LCAxMjc4MjQsIDAsIDY0NzYxLCAwLCA0MTAyMSwgODUxMCwgCisgICAgNDI0MzIsIDAsIDAsIDE5NDc4MiwgMCwgNjQ0OTYsIDc0MTA5LCA3MDAzMCwgOTkxNSwgMCwgOTgzMjE2LCA3MDYxLCAKKyAgICA0MTMzNiwgMzg1NCwgNjk3MDAsIDEzMTQxLCA2ODQxMywgNDM0MDEsIDQyMzE5LCAxMzA4MiwgMCwgNzA2NywgNjgyMjEsIDAsIAorICAgIDEyNzM4MywgMTI3MTcxLCAwLCAwLCAxMjc3OTcsIDkwMjksIDQzNTQzLCAxMTkzMTUsIDIzNTMsIDYzMDgsIDAsIDc0NzkyLCAKKyAgICAyNjExLCAxMTkxODYsIDAsIDAsIDAsIDQzNjY0LCA5MjM5OSwgNjY2MjcsIDAsIDQ0ODQsIDg1MDksIDExODk3NiwgMTEwNjYsIAorICAgIDY1MjMzLCAwLCA0MTIyNCwgNDEwMTcsIDAsIDM3NDcsIDEwNTIyLCAwLCAwLCAxNjkxLCA0MTIyNiwgMCwgMTIxMDcsIAorICAgIDcxMDAsIDEwOTA1LCA2NTAxMCwgMTk0OTg2LCA2OTcsIDY2MDE4LCA5Mjg0LCA0MjQ0LCAwLCAwLCA5MjY0NCwgMTMxMjEsIAorICAgIDEyMDAzNiwgMCwgMTIwMTAsIDEyODU3MywgMTI4MjIxLCAwLCAwLCAwLCAxMjcxOTMsIDY1ODE2LCA2ODExMSwgMCwgCisgICAgMTI3OTMzLCA2NTY2OCwgOTIyNTcsIDY2MTgsIDExODc4NCwgNjYzNjUsIDAsIDQyMjM0LCAxMjY0OCwgNzgxMTAsIDcxMjMsIAorICAgIDcwMDM4LCA1Nzg1LCA5MTk4LCA5NzY0LCA0MTMxNiwgNjU4NzcsIDczODMsIDEzMjMwLCA0MTI5OSwgMCwgMCwgNjgzNjUsIAorICAgIDEyODI1OCwgMCwgMCwgMCwgMTMxMjIsIDAsIDE5MSwgNzAwNjAsIDg1ODUsIDgwMDAsIDY0NDExLCAxMjA2NTIsIDQyODg5LCAKICAgICA2NDg1MCwgNDEwNzIsIDQxNTc4LCAwLCA0MTU3NywgMCwgMTAwMDIsIDAsIDY1MzMsIDczODAyLCA0MTU3MCwgMCwgNjgzLCAKICAgICAzOTYsIDQxNTgwLCA2ODE0NiwgMCwgMTI5MDEsIDQzMDU4LCAwLCAzNDMsIDcxMjksIDQyNjgwLCA0MTM2MCwgNzgxNTQsIDAsIAotICAgIDQ3NDMsIDAsIDAsIDc0MDQwLCA3NDEwOCwgODc0MywgMTcyNCwgMTQzMywgMTE5MzIyLCAwLCAzNzM5LCA2MjYzLCA5MjUxNCwgCi0gICAgMCwgMzk2NCwgNjU5MiwgMCwgMTI4NjkzLCA2NjA0MCwgMCwgNDI1NjgsIDY5ODA2LCAwLCAxNzc4LCAzOTU2LCAwLCAKLSAgICA0MjA3MCwgNjU2MywgNDMwNzUsIDkwMTgsIDAsIDAsIDEyMDY3LCA0MTMxMiwgMCwgNTU0NywgNzQ1MzEsIDEyNzk2OSwgMCwgCi0gICAgODE3NSwgMCwgMjg0LCA4MTA4LCA5MzQsIDAsIDc0MDAxLCAxNzMsIDY2NDYwLCA3MTc0LCA5MjcwMywgMTE4ODIyLCAxNzUwLCAKLSAgICAwLCA0Mzk0LCA2ODM2OCwgMTgwNywgMCwgOTIyOTgsIDAsIDU4ODksIDAsIDcxODAsIDAsIDExOTE0NSwgMCwgOTE3NTU4LCAKLSAgICA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgMjU4MywgNDUxMiwgMTE5MzYwLCA2NTIzMCwgCi0gICAgMTI4MTA5LCAwLCAwLCAzODU1LCAwLCAwLCAwLCAwLCA3NDI5NSwgMCwgMCwgOTI0MTYsIDM5NzUsIDAsIDc0MDg3LCAwLCAKLSAgICAxMjY3MiwgMzc5OCwgMjcwMywgMCwgMCwgMjEwOSwgOTc3NCwgMTI3NSwgMCwgMCwgNDEwOTUsIDM5NjIsIDAsIDI5MzIsIAotICAgIDQxMTAxLCAzOTU0LCA2NDU3LCA0NTEzLCAwLCAwLCA3Mzk5NCwgNzM5OTIsIDE0NjgsIDAsIDAsIDQxODUxLCAxMjgyMzAsIAotICAgIDQxODQ2LCAwLCA1NTIzOCwgNzYzMywgNDE4NDksIDY4Mzg1LCA0MzIwLCAzMjI0LCAwLCAxMjgwMzIsIDAsIDQyNTMxLCAwLCAKLSAgICAxNTEwLCAwLCA4MjU2LCAwLCAxMTM5MywgMCwgODg3OSwgMTI4MDc1LCA5MjQ3NCwgODc3MCwgMCwgMCwgNzgzNzcsIDE5MTAsIAotICAgIDg2NzEsIDc4Mzc0LCA0MjgzLCAwLCAxMjcxMTcsIDY4MzYxLCA3ODMxOCwgMjY1NCwgNzg5MywgMTk1MDA3LCAwLCAwLCAwLCAKLSAgICA2NTEwNiwgNDI3NjEsIDEyODU3LCA0NTgxLCA4NDExLCA3ODM3MiwgNzgzNzEsIDc4MzcwLCA3ODM2OSwgNzgzNjgsIDAsIDAsIAotICAgIDAsIDE3MzMsIDQzOTIsIDI1NjgsIDEwNzg2LCA2OTY2MSwgMCwgODE4NCwgNDE0ODYsIDAsIDczOTYsIDcxMTYsIDAsIAotICAgIDY5Nzg4LCAwLCA3MTg1LCA3OTY1LCAwLCAwLCA5MjM0NywgMCwgNDEzNTAsIDkxMjksIDAsIDAsIDAsIDAsIDkyNDg5LCAwLCAKLSAgICAxMDQ4MSwgMCwgMTI3NDg2LCA3MTcxLCAwLCAzNDAsIDkyNDk4LCAwLCAwLCAwLCA5MjIwMCwgMCwgMCwgNjc2NCwgCi0gICAgMTI3NDg3LCAwLCAwLCAwLCAwLCA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAwLCAzMjEwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjc5NzAsIDkxNzYxOSwgMCwgMCwgMTAwNDMsIDAsIDExODYsIDQxNTcxLCA2OTk5LCA2MTcsIDk0NjQsIDEyODI0NCwgCi0gICAgMzY3NSwgNTIwNywgNjUwNjIsIDUyMTMsIDE5NDc2OSwgMjYxNywgNDEzNDgsIDQxNTY4LCAxMjg4MDMsIDMyNTMsIAotICAgIDEyMDUzNSwgMCwgODYzMCwgMTI4NTQ0LCAwLCA1NTk2LCA1NTQ1LCA3Mjg4LCAyNTg2LCA2NDg4NywgMCwgNTIxNywgMCwgMCwgCi0gICAgMCwgMCwgNjQyOTMsIDY4MDk4LCAyNjM1LCAwLCAwLCAwLCAwLCAwLCA3ODM1LCAwLCAwLCAxOTQ5ODgsIDkyMjg1LCAKLSAgICA2NDU1OCwgMTI3MTIyLCAwLCAxMjcxMjEsIDAsIDEyNzkxMywgMCwgNTc4NCwgMCwgMCwgMCwgMCwgNDAxMSwgOTE3NjE2LCAKLSAgICA2ODEwMSwgMCwgNzg2NCwgNDI1NCwgNjUwOTUsIDAsIDU2MDAsIDM5MDMsIDEyNzA4MywgMTA0NDcsIDU1OTgsIDEyMDcsIAotICAgIDEyMDUyMSwgNjY2ODksIDM1MDEsIDQyNTgyLCA0MzYwMCwgMTk0NzgwLCAwLCAxMTI0LCA1NTk3LCAxOTQ3NzgsIDE5NDc3MiwgCi0gICAgOTMyMSwgMCwgMCwgMCwgMCwgMTcxOSwgNjgzNTYsIDY4MzU0LCA5NjcxLCAxMTI1LCA0Mzk5LCAxMjc0NzksIDkxNzYxMCwgCi0gICAgMCwgNzYzMSwgNTQ4OCwgNzEyOCwgMTIwNTMyLCAwLCA1NDkxLCAwLCA4OTM3LCA0MzA0NCwgMjYwNCwgNzQxODcsIDU0OTAsIAotICAgIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIDYzMDAsIDAsIDcxMjIsIDAsIDQzOTAsIDQ1NCwgNDEzOTcsIDAsIAotICAgIDk4NzUsIDc1OTMsIDE5NDc5MiwgOTIyNzQsIDExODkxMywgNzIwNywgMCwgNjU5MDEsIDIzOTQsIDI1NzUsIDAsIDM3NDYsIAotICAgIDExMDE2LCA2NTc1MiwgMTIwMDM3LCAwLCA0MzQyMywgMTI4NjgzLCAxMTk4OSwgMCwgMCwgMCwgMCwgMCwgODI0OSwgCi0gICAgMTI4MTcyLCAwLCA3ODUzMSwgNjY0MCwgNzQ4MDYsIDI1OTgsIDUxMywgMCwgNjU4NiwgODY1NiwgMCwgMTI3MDAyLCAKLSAgICA2NTAwOCwgMCwgMTk0Nzg0LCAxOTQ5ODksIDE5NDc5NSwgMCwgOTI1MTUsIDY4NDc1LCAwLCAwLCAwLCA3ODYzNywgMTI2NDcsIAotICAgIDAsIDEyODA0MywgMCwgMTAzNiwgMCwgOTI0MTksIDE3MjMsIDEyODA1NiwgMCwgMCwgNDE1NzksIDI0NDQsIDAsIDEwNzA1LCAKLSAgICA3Mzg3NiwgMCwgNzQ0ODYsIDAsIDc0MCwgMTE5MjIyLCAxOTQ5NzgsIDE5NDk4NCwgMCwgNDIzOCwgMTEwNzEsIDk0NTksIAotICAgIDY4NDM3LCA3ODE0MCwgNzgxMzksIDE5NDk4NSwgODEyMSwgMTA0MzgsIDc0NDg3LCA0MjU3NCwgMTMyODUsIDU1MjYzLCAKLSAgICAxMTkwNywgMTk1MDAwLCA1NjkwLCA5MjI1NSwgMCwgMCwgNDMxODEsIDEzMDk1LCAwLCAxMjc4NTcsIDY0NDk4LCAwLCAKLSAgICA5NTA2LCA2OTc4LCAxOTQ5OTMsIDc3OTkyLCAwLCAwLCAxOTQ5OTIsIDAsIDEyNzg0NSwgMTEyMiwgMzE3LCAwLCAwLCAwLCAKLSAgICAwLCAxOTIwLCAwLCAxMDE3MywgODI3LCAwLCAwLCA3ODM3OCwgMTIwMTI2LCA1MjIzLCAxMzA0LCAwLCAxMTk1NjQsIDUyMjYsIAotICAgIDEyNjAyLCAwLCAwLCA5MzI5LCA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIAorICAgIDQ3NDMsIDAsIDAsIDc0MDQwLCA3NDEwOCwgODc0MywgMTcyNCwgMTQzMywgMTE5MzIyLCAwLCAzNzM5LCA2MjYzLCA3MTM0OSwgCisgICAgMCwgMzk2NCwgNjU5MiwgMCwgMTI4NjkzLCA2NjA0MCwgMCwgNDI1NjgsIDY5ODA2LCAxMjgxMTMsIDE3NzgsIDM5NTYsIDAsIAorICAgIDQyMDcwLCA2NTYzLCA0MzA3NSwgOTAxOCwgOTQwMDYsIDk4MzM4OCwgMTIwNjcsIDQxMzEyLCAwLCA1NTQ3LCA3NDUzMSwgCisgICAgMTI3OTY5LCAwLCA4MTc1LCAwLCAyODQsIDgxMDgsIDkzNCwgMCwgNzQwMDEsIDE3MywgNjY0NjAsIDcxNzQsIDkyNzAzLCAKKyAgICAxMTg4MjIsIDE3NTAsIDAsIDQzOTQsIDY4MzY4LCAxODA3LCA5ODM4NzksIDkyMjk4LCAwLCA1ODg5LCAwLCA3MTgwLCAwLCAKKyAgICAxMTkxNDUsIDAsIDkxNzU1OCwgNDI0NzEsIDY5ODIsIDE3MjEsIDQ0MDIyLCA3ODkxLCA0MjI0MywgNDIxNjAsIDI1ODMsIAorICAgIDQ1MTIsIDExOTM2MCwgNjUyMzAsIDEyODEwOSwgMCwgMCwgMzg1NSwgMCwgMCwgMCwgMCwgNzQyOTUsIDAsIDAsIDkyNDE2LCAKKyAgICAzOTc1LCAwLCA3NDA4NywgMCwgMTI2NzIsIDM3OTgsIDI3MDMsIDk4MzU5OSwgMCwgMjEwOSwgOTc3NCwgMTI3NSwgMCwgMCwgCisgICAgNDEwOTUsIDM5NjIsIDAsIDI5MzIsIDQxMTAxLCAzOTU0LCA2NDU3LCA0NTEzLCAwLCAwLCA3Mzk5NCwgNzM5OTIsIDE0NjgsIAorICAgIDAsIDAsIDQxODUxLCAxMjgyMzAsIDQxODQ2LCAwLCA1NTIzOCwgNzYzMywgNDE4NDksIDY4Mzg1LCA0MzIwLCAzMjI0LCAwLCAKKyAgICAxMjgwMzIsIDAsIDQyNTMxLCAxMTkxMDgsIDE1MTAsIDAsIDgyNTYsIDAsIDExMzkzLCAwLCA4ODc5LCAxMjgwNzUsIAorICAgIDkyNDc0LCA4NzcwLCAwLCAwLCA3ODM3NywgMTkxMCwgODY3MSwgNzgzNzQsIDQyODMsIDAsIDEyNzExNywgNjgzNjEsIAorICAgIDc4MzE4LCAyNjU0LCA3ODkzLCAxOTUwMDcsIDAsIDAsIDAsIDY1MTA2LCA0Mjc2MSwgMTI4NTcsIDQ1ODEsIDg0MTEsIAorICAgIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgMCwgMCwgMCwgMTczMywgNDM5MiwgMjU2OCwgMTA3ODYsIAorICAgIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMCwgNzM5NiwgNzExNiwgMCwgNjk3ODgsIDAsIDcxODUsIDc5NjUsIDAsIDAsIAorICAgIDkyMzQ3LCA5ODMwODcsIDQxMzUwLCA5MTI5LCAwLCAwLCAyMjk0LCAwLCA5MjQ4OSwgMCwgMTA0ODEsIDAsIDcwMDIyLCAKKyAgICA3MTcxLCAwLCAzNDAsIDkyNDk4LCA5Mzk3MiwgMCwgMCwgOTIyMDAsIDAsIDAsIDY3NjQsIDEyNzQ4NywgMCwgMCwgMCwgMCwgCisgICAgNjUyMDMsIDExMzkyLCAxMTkwOTgsIDExOTM1OSwgMCwgMzIxMCwgMCwgMCwgMTE4Nzk1LCAwLCAwLCAxMjc5NzAsIAorICAgIDkxNzYxOSwgMCwgMCwgMTAwNDMsIDAsIDExODYsIDQxNTcxLCA2OTk5LCA2MTcsIDk0NjQsIDEyNjY0MiwgMzY3NSwgNTIwNywgCisgICAgNjUwNjIsIDUyMTMsIDE5NDc2OSwgMjYxNywgNDEzNDgsIDQxNTY4LCAxMjg4MDMsIDMyNTMsIDEyMDUzNSwgMCwgODYzMCwgCisgICAgMTI4NTQ0LCAwLCA1NTk2LCA1NTQ1LCA3Mjg4LCAyNTg2LCA2NDg4NywgMCwgNTIxNywgNzEzMzYsIDAsIDAsIDAsIDY0MjkzLCAKKyAgICA2ODA5OCwgMjYzNSwgMCwgMCwgOTgzODM3LCAwLCA5ODM2MzIsIDc4MzUsIDcwMDQwLCAwLCAxOTQ5ODgsIDkyMjg1LCAKKyAgICA2NDU1OCwgMTI3MTIyLCAwLCAxMjcxMjEsIDAsIDEyNzkxMywgMCwgNTc4NCwgOTgzMTAyLCAwLCAwLCA3MDAzMywgNDAxMSwgCisgICAgOTE3NjE2LCA2ODEwMSwgMCwgNzg2NCwgNDI1NCwgNjUwOTUsIDk4MzQ4OCwgNTYwMCwgMzkwMywgMTI3MDgzLCAxMDQ0NywgCisgICAgNTU5OCwgMTIwNywgMTIwNTIxLCA2NjY4OSwgMzUwMSwgNDI1ODIsIDQzNjAwLCAxOTQ3ODAsIDAsIDExMjQsIDU1OTcsIAorICAgIDE5NDc3OCwgMTk0NzcyLCA5MzIxLCA5ODM0NzYsIDk4MzQ3MywgOTgzNDc0LCAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIAorICAgIDk2NzEsIDExMjUsIDQzOTksIDEyNzQ3OSwgOTE3NjEwLCA5ODM0ODAsIDc2MzEsIDU0ODgsIDcxMjgsIDEyMDUzMiwgMCwgCisgICAgNTQ5MSwgMCwgODkzNywgNDMwNDQsIDI2MDQsIDc0MTg3LCA1NDkwLCA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCAKKyAgICA2MzAwLCAwLCA3MTIyLCAwLCA0MzkwLCA0NTQsIDQxMzk3LCAwLCA5ODc1LCA3NTkzLCAxOTQ3OTEsIDkyMjc0LCAxMTg5MTMsIAorICAgIDcyMDcsIDAsIDY1OTAxLCAyMzk0LCAyNTc1LCAwLCAzNzQ2LCAxMTAxNiwgNjU3NTIsIDEyMDAzNywgMCwgNDM0MjMsIAorICAgIDEyODY4MywgMTE5ODksIDAsIDAsIDAsIDAsIDAsIDgyNDksIDEyODE3MiwgMCwgNzg1MzEsIDY2NDAsIDc0ODA2LCAyNTk4LCAKKyAgICA1MTMsIDAsIDY1ODYsIDg2NTYsIDAsIDEyMDcxMCwgNjUwMDgsIDAsIDE5NDc4NCwgMTk0OTg5LCAxOTQ3OTUsIDk4MzQ2NSwgCisgICAgOTI1MTUsIDY4NDc1LCA5Mzk3MywgMCwgMCwgNzg2MzcsIDEyNjQ3LCAwLCAxMjgwNDMsIDY5ODkzLCAxMDM2LCA5ODM0NjksIAorICAgIDkyNDE5LCAxNzIzLCAxMjgwNTYsIDc0MjE3LCAwLCA0MTU3OSwgMjQ0NCwgMCwgMTA3MDUsIDczODc2LCA5ODM0NjEsIAorICAgIDc0NDg2LCA5ODM0NTksIDc0MCwgMTE5MjIyLCAxOTQ5NzgsIDE5NDk4NCwgMCwgNDIzOCwgMTEwNzEsIDk0NTksIDY4NDM3LCAKKyAgICA3ODE0MCwgNzgxMzksIDE5NDk4NSwgODEyMSwgMTA0MzgsIDc0NDg3LCA0MjU3NCwgMTMyODUsIDU1MjYzLCAxMTkwNywgCisgICAgMTk1MDAwLCA1NjkwLCA5MjI1NSwgOTM5OTIsIDAsIDQzMTgxLCAxMzA5NSwgMCwgMTI3ODU3LCA2NDQ5OCwgMCwgOTUwNiwgCisgICAgNjk3OCwgMTk0OTkzLCA3Nzk5MiwgMCwgMCwgMTk0OTkyLCAwLCAxMjc4NDUsIDExMjIsIDMxNywgMCwgMCwgMCwgMCwgCisgICAgMTkyMCwgMCwgMTAxNzMsIDgyNywgMCwgMCwgNzgzNzgsIDEyMDEyNiwgNTIyMywgMTMwNCwgMCwgMTE5NTY0LCA1MjI2LCAKKyAgICAxMjYwMiwgOTQwNDQsIDAsIDkzMjksIDc3NTgsIDkyMzksIDQxMTczLCA1MjI0LCA1NDg3LCAxMjIyLCA1NjkyLCA0MTcyNSwgCiAgICAgNjkyMjksIDk2NzQsIDU2OTUsIDQxNzExLCA2NDYyNywgMTk5MDksIDAsIDc0NjA0LCA1NjkxLCAyODcsIDg2NiwgMjMzLCAKLSAgICAxMjc0OTAsIDAsIDQyODE2LCAwLCA2NTE0MCwgNzQ3OTcsIDAsIDg4MzAsIDY1NjgsIDQyMzAwLCAxMDUyNCwgNDExNzUsIDAsIAotICAgIDAsIDAsIDUyOTYsIDAsIDQyNDkyLCA0MzQwMiwgOTI0NjYsIDMzMDIsIDAsIDAsIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIAotICAgIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDAsIDAsIDEyMTIyLCAxMTk2MDIsIDQzOTc2LCAwLCAxNzg1LCA5MjUwNywgNjg2MjIsIAotICAgIDY1MTUzLCAxOTQ4MTAsIDUxMzgsIDAsIDAsIDAsIDAsIDQ1NDAsIDQxMTgxLCAwLCA2MjAwLCAwLCA1MTM0LCAwLCAzMjIsIAotICAgIDQ2NDMsIDUxMzIsIDAsIDYzODksIDAsIDUxNDMsIDAsIDg3OTAsIDEyODY5NCwgMCwgMTk0ODAyLCAwLCA4ODY5LCAKLSAgICAxMjA2MDEsIDAsIDQyMDYwLCAwLCAwLCAxOTQ4MDQsIDEyNzAxMiwgMTAyNzAsIDEwMjg2LCAxMDMxOCwgMTAzODIsIAotICAgIDQzNTI5LCA2NjQ3NywgMCwgMCwgNzQxNzAsIDAsIDMyMzQsIDAsIDAsIDc0Mzc2LCA0MzEzOSwgMTE4ODE1LCAxMjcwODQsIAotICAgIDEyMDYyNywgODc2NywgMCwgNzQ0ODksIDk2OTUsIDEyMDc0NiwgNTIwMSwgMCwgNjIxNSwgMTI3MTQsIDYyMTQsIDEzMTAxLCAKLSAgICAwLCAxOTQ5OTksIDY1MjY4LCAwLCAwLCAwLCAxMTAyNywgMCwgMTAwNTksIDEwNTExLCA0MjA3NSwgOTc2NywgNzg5LCAKLSAgICAxNzQ5LCA3ODg5MCwgMTI3MDcxLCAwLCAzMjAsIDAsIDg2NDcsIDAsIDMwNDksIDAsIDY0NzEsIDQyMDcxLCA0MzE1NiwgCi0gICAgOTkyNSwgMTI3MzU2LCAxMjczNTUsIDY2NDc4LCA0OTYwLCA1NTQ5LCAxMjczNTksIDEyNzM0NiwgODQ4NSwgNDY3MSwgCi0gICAgNTQxOCwgMTI3MzUwLCAzMzUxLCAxMjcwMDYsIDEyNzM1MSwgMTA2MTAsIDU0MTQsIDMwNjQsIDYyMTIsIDQyODYsIDU0MjEsIAotICAgIDEyNzM0NCwgOTU1NCwgMCwgMTI3Nzk0LCAxMjcxMDksIDY2NTMsIDEyODgxMSwgMCwgNjQ1MTAsIDYyMTMsIDEyODg1LCAwLCAKLSAgICAxMTkwNDUsIDY0NzIwLCAwLCAxMjA3NTksIDczNzQxLCAxMjYwMywgNzEzMSwgMTE0MzAsIDQ1NjYsIDc4NDMsIDkzMTcsIAotICAgIDM4MDEsIDEwMzQyLCAxMDQwNiwgMCwgMTE5MjU5LCA0MjU3NiwgMCwgNTIwMCwgMCwgOTE3OTQ4LCAwLCA5MTgzLCAKLSAgICAxMjczNjEsIDc0NDU4LCA3MzgyNSwgMzk1LCA1NDgyLCA1MTk4LCA4Nzg2LCAxMDM5MCwgNzQyMDIsIDUxOTYsIDQzMjI0LCAKLSAgICA2MTEzLCA0MjAwOSwgNTIwNSwgMCwgNDMzMDcsIDAsIDExODk3MywgMCwgMTIxMzQsIDAsIDAsIDExODg0MywgOTEyNiwgCi0gICAgNDM1LCAwLCAxMjAxNCwgMTAzNzcsIDgwOTMsIDkwNzksIDMyMDMsIDE5MiwgNjUxMDksIDMzODUsIDAsIDY0NDMwLCA1MzgzLCAKLSAgICAxMDI5NCwgMTAzMjYsIDEyODE3OCwgNTczOCwgMCwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCAwLCA2ODExMiwgCi0gICAgNzg3MiwgODU4MSwgMCwgMTI2MCwgMzE0OSwgNTM1OSwgMCwgMCwgNzkxNCwgNTM1NywgOTIxNzAsIDEyODY1OSwgMjYyNCwgCi0gICAgNTM2NCwgMCwgMTE0MzEsIDEyMDAzMCwgOTEwMSwgMTEwNTgsIDc4Mjg4LCAwLCA3ODI5MywgNDIyNzEsIDc4Mjg5LCAKLSAgICA0MjkxNywgMTIwNzkzLCAwLCA2NTU2NiwgNjcxNywgMTA2MTksIDQzMzYwLCA3ODM4NSwgNzgzODQsIDc4MzgzLCA3ODM4MiwgCi0gICAgNzgzODEsIDc4MzgwLCA3ODM3OSwgOTMxOSwgNzA5NywgMTE5MDU1LCA3NzkwNiwgMzIzMiwgNzM4MjQsIDc0NTgxLCAKLSAgICAxMjA2MzIsIDAsIDAsIDQxODg5LCA5MjQ1MywgMCwgMTE2MSwgNDE4OTUsIDc0MTAzLCA5NzAxLCA4NjIyLCAwLCAwLCAKLSAgICA3MzgxOSwgMTIwNTg4LCA1MDEyLCA3NzkxMiwgNDEzNjIsIDAsIDc4Mjk2LCAxMTkyMSwgMCwgMTE3NjksIDAsIDY4NjA5LCAKLSAgICA0MTM2NCwgMCwgNzQyMjgsIDQxMzUyLCA0MTM2MSwgMCwgNDEzNjYsIDAsIDMzNTYsIDAsIDkxNywgNjg0MjIsIDExOTkxNSwgCi0gICAgNzEzNCwgODE5OSwgNzgzODksIDExOTkxNywgNjc3LCAxMTk5MTYsIDAsIDExOTkzMiwgMTI3MTY5LCAwLCAwLCAwLCAzMzQ5LCAKLSAgICA3NDEyNSwgNzAyMiwgODkyNywgNDczOSwgMCwgNTgwMiwgMCwgODYxNSwgMCwgMCwgNDkxLCAwLCAxMDE5MCwgMTIwNjk4LCAKLSAgICA2NTgzNywgMTI4ODIwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIDc1ODYsIDQyMzA1LCAxMDg1MiwgMCwgCi0gICAgMCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgMTA0NiwgNzEyNCwgMCwgMCwgNTgxNSwgNTE3MSwgCi0gICAgNjU1MzksIDY4NjEyLCA2OTMyLCA3ODMxNSwgNDIzOTQsIDQxODc4LCA3NDg0OSwgMTIwNjIxLCAwLCA1MTY5LCAxMTkzNSwgCi0gICAgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAxMjA4MDQsIDUxNzYsIDg5MDUsIDQxMzYsIDQ4NzEsIDc4Mjg3LCAwLCA5ODMzLCAKLSAgICAwLCAwLCAxMTI4LCA2NTkyMCwgMCwgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgMzY2MiwgOTQxMywgCi0gICAgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgNTE2NSwgNTEyNiwgCi0gICAgNDEzODUsIDAsIDQxMzg5LCA5MTc5MzgsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIDk0MDQsIDM1MDcsIAotICAgIDk0MDYsIDc2MjksIDAsIDE5OTI1LCA0MjY2OSwgNjg0NjMsIDE4MywgNDM5ODUsIDI2MzEsIDAsIDEwNjI3LCA0MTEzMCwgCi0gICAgNzgyNjAsIDM5OTYsIDAsIDc4NzcxLCAwLCAxMTkzMTMsIDExOTMwNywgNzg3NjgsIDY1ODAsIDQzMzIsIDY0ODI1LCAKLSAgICA2NjMyOSwgMTA3MjYsIDY2Njg2LCA0MTEyNSwgNTg5OSwgNDEzNjUsIDkxNzkxOCwgMTIwODUsIDAsIDU3NCwgOTE3OTIyLCAKLSAgICA3NzgyNSwgNzM4MjgsIDU0NDgsIDQxMDU4LCA1NDQ2LCA2OTcwOSwgNDEzMjIsIDQyMjExLCA1NDQyLCA0MTkwLCA3NzgzNCwgCi0gICAgNzc4MzUsIDU0NTEsIDc3ODMzLCAzNjE2LCA3NzgyOCwgNzc4MzcsIDc3ODM4LCA3NzA4LCA3NzgzNiwgMTA4NTksIDY1ODY3LCAKLSAgICAxMDM0NSwgMTA0MDksIDQxOTEsIDAsIDc3ODQ0LCA3MzgwMCwgNDIxODEsIDc3ODQzLCA3NzgzOSwgMjA2MCwgMCwgNzExMSwgCi0gICAgMTE3ODgsIDY1NTg3LCA2ODEyOSwgMTA0MTUsIDc0MTAyLCAwLCAyMDUsIDAsIDEwMzUxLCAxMTkwNzYsIDAsIDk4NjIsIAotICAgIDY1ODgsIDQzMjU3LCA2NDY5NywgNzM5OTgsIDQxMzU1LCA1NTA1LCAxMTkxNTQsIDU1MDMsIDgwMjEsIDAsIDcxMjUsIAotICAgIDk4MTksIDQxMzU3LCA4MDExLCA0Mjg4NSwgNTUwNywgMTIwNDQsIDkyNjM2LCAwLCAxMDAyNiwgNTQ3MiwgNzEwOSwgMTE5MSwgCi0gICAgMTMxMDYsIDU0NzAsIDEwMzI5LCA1NDc2LCA4OTkxLCA2NjMyMiwgNjk3NzgsIDc4MjY3LCA0Mjg3NCwgODU1MCwgNDI4NzYsIAotICAgIDU1OTIsIDI5MTksIDAsIDI2NzUsIDU1OTUsIDc4NDExLCAwLCA0MzY3LCAwLCAwLCA1NDc4LCA1OTA0LCA1NTk0LCAwLCAKLSAgICA3NDE1MCwgNzI5MSwgNTU5MCwgNzc4NDksIDEzMDY3LCAxMTg5MDksIDEyMDM3MiwgMCwgOTczMSwgNjk3MzEsIDY0NjMzLCAKLSAgICA3Nzg1NywgNzc4NTQsIDc3ODU1LCA3Nzg1MiwgNzc4NTMsIDc3ODUwLCAxMDc1MCwgNDM3MTQsIDc3ODU4LCA3MTM3LCAwLCAKLSAgICAxMjgyOTYsIDEyODg3LCAxMDU1MSwgMTk0NTY0LCA3Nzg2NiwgNzc4NjcsIDc3ODY0LCA3Nzg2NSwgOTkyOSwgNTE5OSwgCi0gICAgOTkzNiwgMTEyMCwgNDIzODcsIDAsIDE0NDQsIDk0ODYsIDc1NTQsIDY1ODM5LCA1NTI1MiwgMCwgMTQ0MiwgMCwgNTg5NCwgCi0gICAgMCwgMCwgNDExNzEsIDkyNTExLCA3NDMxMywgMCwgMTMxNjIsIDAsIDMzMzQsIDAsIDExODgwMywgNzc4ODEsIDY2MDIyLCAwLCAKLSAgICAwLCAxNjUxLCAwLCA4ODYxLCAwLCAwLCAxMTQyLCAwLCA4MjcxLCAwLCAwLCAwLCAxMjkwMywgMCwgNDAwMiwgNDM2MjYsIAotICAgIDEwNDQyLCAxMDY3NiwgMzM0NCwgMCwgMCwgMTI5MjAsIDE5NDU2MCwgMCwgMCwgNjY2NDIsIDEyNzcsIDAsIDc4NzEsIDAsIAotICAgIDAsIDc4ODUzLCAwLCA3ODg1NCwgMTIwMzYwLCAwLCAxMTc4NCwgMCwgNzgwMTIsIDQ3MDAsIDY2MzY2LCA3ODg1OCwgCi0gICAgMTIwMzU5LCAxMTAxMiwgMCwgNzg4NTYsIDkyNDAwLCA3Nzg3OSwgNDk3MywgODc4NCwgNzc4NzcsIDc0ODA0LCA3Nzg3NCwgCi0gICAgNzc4NjksIDc3ODcxLCA0MjQ0MCwgMCwgNDMxMTgsIDAsIDQyMzY0LCA2Nzc0LCA2NzczLCA5MTc1NjAsIDEyMDM2OSwgCi0gICAgMTAzNDYsIDEwNDEwLCA3ODg1OSwgOTI0MywgMjQ2NCwgNzQyNjMsIDYxMDgsIDMzNzIsIDAsIDYyNDcsIDQzMTE3LCAKLSAgICA3NDUyNiwgNzEyMSwgNzQxNjYsIDAsIDEyMDM1NSwgOTI1MzcsIDAsIDAsIDE5NTAzNCwgMCwgMCwgMCwgNzQyMTcsIDMzNTQsIAotICAgIDE5NTAzNywgNDE5MiwgOTI4OSwgMTE4OTk5LCA0MTE5MSwgMzg3NiwgMCwgMTI3OTgzLCAxMjA2NjAsIDQzNjk2LCA0MzM4MCwgCi0gICAgMCwgMCwgMCwgMCwgMTE2MDMsIDAsIDAsIDY1ODksIDEyODU4OCwgMTk0Njc5LCAwLCAwLCAwLCAwLCAwLCA0MjU3MiwgCi0gICAgMTI4MjY0LCAxMDYzMCwgNzQ4MjcsIDE5NjMsIDExODg4OSwgMTI3OTc4LCAxMTY1NCwgMCwgNzU1MCwgMTA2ODYsIDU5MDMsIAotICAgIDAsIDc4MDA5LCA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgMzM2NiwgMTAzOTksIDAsIDAsIDExMDEzLCAxMjc5MjcsIAotICAgIDEyODMwMCwgMCwgNzg2MjEsIDE5NDY3MiwgNjkyNSwgMCwgMCwgOTE3OTI5LCAwLCAxMTU2OCwgMCwgNDMzNjcsIDY0NTc5LCAKKyAgICAxMjc0OTAsIDk4MzQzMywgNDI4MTYsIDk0MDM2LCA2NTE0MCwgNzQ3OTcsIDAsIDg4MzAsIDY1NjgsIDQyMzAwLCAxMDUyNCwgCisgICAgNDExNzUsIDk4MzQ0MCwgOTgzNDM3LCA5ODM0MzgsIDUyOTYsIDk4MzQzNiwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgCisgICAgMCwgMCwgNjUxNiwgNjUxNSwgNjUxNCwgNjUxMywgNjUxMiwgMCwgNzg1NiwgODY5MCwgMCwgMCwgMTIxMjIsIDExOTYwMiwgCisgICAgNDM5NzYsIDAsIDE3ODUsIDY5OTI1LCA2ODYyMiwgNjUxNTMsIDE5NDgxMCwgNTEzOCwgMCwgMCwgMTE4ODY5LCAwLCA0NTQwLCAKKyAgICA0MTE4MSwgMCwgNjIwMCwgMCwgNTEzNCwgMCwgMzIyLCA0NjQzLCA1MTMyLCAwLCA2Mzg5LCAxMjg1MzMsIDUxNDMsIDAsIAorICAgIDg3OTAsIDEyODY5NCwgMCwgMTk0ODAyLCAwLCA4ODY5LCA2OTkxNiwgMCwgNDIwNjAsIDcxMzI2LCA5NjQ4LCAxOTQ4MDQsIAorICAgIDEyNzAxMiwgMTAyNzAsIDEwMjg2LCAxMDMxOCwgMTAzODIsIDQzNTI5LCA2NjQ3NywgMCwgMCwgNzQxNzAsIDAsIDMyMzQsIAorICAgIDAsIDAsIDc0Mzc2LCA0MzEzOSwgMTE4ODE1LCAxMjcwODQsIDEyMDYyNywgODc2NywgMCwgNzQ0ODksIDk2OTUsIDEyMDc0NiwgCisgICAgNTIwMSwgMCwgNjIxNSwgMTI3MTQsIDYyMTQsIDEzMTAxLCAwLCAxOTQ5OTksIDY1MjY4LCAwLCAwLCAwLCAxMTAyNywgMCwgCisgICAgMTAwNTksIDEwNTExLCA0MjA3NSwgOTc2NywgNzg5LCAxNzQ5LCA3ODg5MCwgMTI3MDcxLCA5ODM2NjEsIDMyMCwgMCwgCisgICAgODY0NywgMCwgMzA0OSwgMCwgNjQ3MSwgNDIwNzEsIDQzMTU2LCA5OTI1LCAxMjczNTYsIDEyNzM1NSwgNjY0NzgsIDQ5NjAsIAorICAgIDU1NDksIDEyNzM1OSwgMTI3MzQ2LCA4NDg1LCA0NjcxLCA1NDE4LCAxMjczNTAsIDMzNTEsIDEyNzAwNiwgMTI3MzUxLCAKKyAgICAxMDYxMCwgNTQxNCwgMzA2NCwgNjIxMiwgNDI4NiwgNTQyMSwgMTI3MzQ0LCA5NTU0LCAwLCA5NDA0OCwgMTI3MTA5LCAKKyAgICA2NjUzLCAxMjg4MTEsIDAsIDY0NTEwLCA2MjEzLCAxMjg4NSwgMCwgMTE5MDQ1LCA2NDcyMCwgMCwgMTIwNzU5LCA3Mzc0MSwgCisgICAgMTI2MDMsIDcxMzEsIDExNDMwLCA0NTY2LCA3NTE4LCA5MzE3LCAzODAxLCAxMDM0MiwgMTA0MDYsIDAsIDExOTI1OSwgCisgICAgNDI1NzYsIDAsIDUyMDAsIDEyNjYxMSwgOTE3OTQ4LCAwLCA5MTgzLCAxMjczNjEsIDc0NDU4LCA3MzgyNSwgMzk1LCA1NDgyLCAKKyAgICA1MTk4LCA0MzQ5LCAxMDM5MCwgNzQyMDIsIDUxOTYsIDQzMjI0LCA2MTEzLCA0MjAwOSwgNTIwNSwgMCwgNDMzMDcsIDAsIAorICAgIDExODk3MywgMCwgMTIxMzQsIDAsIDAsIDExODg0MywgOTEyNiwgNDM1LCAwLCAxMjAxNCwgMTAzNzcsIDgwOTMsIDkwNzksIAorICAgIDMyMDMsIDE5MiwgNjUxMDksIDMzODUsIDAsIDY0NDMwLCA1MzgzLCAxMDI5NCwgMTAzMjYsIDEyODE3OCwgNTczOCwgCisgICAgOTgzMjEzLCAzMzM2LCA3ODM1NSwgNTM2MSwgMzYyMywgNDExNTksIDAsIDY4MTEyLCA3ODcyLCA4NTgxLCAwLCAxMjYwLCAKKyAgICAzMTQ5LCA1MzU5LCAxMjAxMzQsIDAsIDc5MTQsIDUzNTcsIDkyMTcwLCAxMjg2NTksIDI2MjQsIDUzNjQsIDAsIDExNDMxLCAKKyAgICAxMjAwMzAsIDkxMDEsIDExMDU4LCA3ODI4OCwgMCwgNzgyOTMsIDQyMjcxLCA3ODI4OSwgNDI5MTcsIDEyMDc5MywgMCwgCisgICAgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgzODUsIDc4Mzg0LCAxMTgzMiwgNzgzODIsIDc4MzgxLCA3ODM4MCwgCisgICAgNzgzNzksIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIDMyMzIsIDczODI0LCA3NDU4MSwgMTIwNjMyLCAwLCAwLCAKKyAgICA0MTg4OSwgOTI0NTMsIDAsIDExNjEsIDQxODk1LCA3NDEwMywgOTcwMSwgODYyMiwgMCwgMCwgNzM4MTksIDEyMDU4OCwgCisgICAgNTAxMiwgNzc5MTIsIDQxMzYyLCA2OTg2MiwgNzgyOTYsIDExOTIxLCAwLCAxMTc2OSwgMCwgNjg2MDksIDQxMzY0LCAwLCAKKyAgICA3NDIyOCwgNDEzNTIsIDQxMzYxLCAwLCA0MTM2NiwgMCwgMzM1NiwgMCwgOTE3LCA2ODQyMiwgMTE5OTE1LCA3MTM0LCAKKyAgICA4MTk5LCA3ODM4OSwgMTE5OTE3LCA2NzcsIDExOTkxNiwgMCwgMTE5OTMyLCAxMjcxNjksIDAsIDAsIDAsIDMzNDksIAorICAgIDc0MTI1LCA3MDIyLCA4OTI3LCA0NzM5LCAwLCA1ODAyLCAwLCA4NjE1LCAwLCAwLCA0OTEsIDEyODgxOSwgMTAxOTAsIAorICAgIDEyMDY5OCwgNjU4MzcsIDEyODgyMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCA3NTg2LCA0MjMwNSwgCisgICAgMTA4NTIsIDAsIDAsIDQ2MDYsIDY4NDQ4LCA5MDk1LCA3NzQxLCAxMjY4NCwgNDE4ODUsIDEwNDYsIDcxMjQsIDAsIDAsIAorICAgIDU4MTUsIDUxNzEsIDY1NTM5LCA2ODYxMiwgNjkzMiwgNzQyNjcsIDQyMzk0LCA0MTg3OCwgNzQ4NDksIDEyMDYyMSwgMCwgCisgICAgNTE2OSwgMTE5MzUsIDAsIDAsIDMxNzUsIDEyMDgyMiwgMTUzNywgMTIwODA0LCA1MTc2LCA4OTA1LCA0MTM2LCA0ODcxLCAKKyAgICA3ODI4NywgMCwgOTgzMywgMCwgMCwgMTEyOCwgNjU5MjAsIDAsIDk3MTEsIDcwNTcsIDk0MDgsIDk0MDksIDk0MTAsIDk0MTEsIAorICAgIDM2NjIsIDk0MTMsIDMzNzgsIDk0MTUsIDk0MTYsIDk0MTcsIDk0MTgsIDYzMjAsIDk0MjAsIDk0MjEsIDU4OTcsIDk0MjMsIAorICAgIDUxNjUsIDUxMjYsIDQxMzg1LCAwLCA0MTM4OSwgOTE3OTM4LCA4OTU1LCAzMzc0LCA5NDAwLCA5NDAxLCA3MTE5LCA5NDAzLCAKKyAgICA5NDA0LCAzNTA3LCA5NDA2LCA3NjI5LCA5ODM2MTcsIDE5OTI1LCA0MjY2OSwgNjg0NjMsIDE4MywgNDM5ODUsIDI2MzEsIDAsIAorICAgIDEwNjI3LCA0MTEzMCwgNzgyNjAsIDM5OTYsIDAsIDc4NzcxLCAwLCAxMTkzMTMsIDExOTMwNywgNzg3NjgsIDY1ODAsIAorICAgIDQzMzIsIDY0ODI1LCA2NjMyOSwgMTA3MjYsIDY2Njg2LCA0MTEyNSwgNTg5OSwgNDEzNjUsIDkxNzkxOCwgMTIwODUsIDAsIAorICAgIDU3NCwgOTE3OTIyLCA3NzgyNSwgNzM4MjgsIDU0NDgsIDQxMDU4LCA1NDQ2LCA2OTcwOSwgNDEzMjIsIDQyMjExLCA1NDQyLCAKKyAgICA0MTkwLCA3NzgzNCwgNzc4MzUsIDU0NTEsIDc3ODMzLCAzNjE2LCA3NzgyOCwgNzc4MzcsIDc3ODM4LCA3NzA4LCA3NzgzNiwgCisgICAgMTA4NTksIDY1ODY3LCAxMDM0NSwgMTA0MDksIDQxOTEsIDAsIDc3ODQ0LCA3MzgwMCwgNDIxODEsIDc3ODQzLCA3NzgzOSwgCisgICAgMjA2MCwgMCwgNzExMSwgMTE3ODgsIDY1NTg3LCA2ODEyOSwgMTA0MTUsIDc0MTAyLCAwLCAyMDUsIDAsIDEwMzUxLCAKKyAgICAxMTkwNzYsIDAsIDk4NjIsIDY1ODgsIDQzMjU3LCA2NDY5NywgNzM5OTgsIDQxMzU1LCA1NTA1LCAxMTkxNTQsIDU1MDMsIAorICAgIDgwMjEsIDAsIDcxMjUsIDk4MTksIDQxMzU3LCA4MDExLCA0Mjg4NSwgNTUwNywgMTIwNDQsIDkyNjM2LCAwLCAxMDAyNiwgCisgICAgNTQ3MiwgNzEwOSwgMTE5MSwgMTMxMDYsIDU0NzAsIDEwMzI5LCA1NDc2LCA4OTkxLCA2NjMyMiwgNjk3NzgsIDc4MjY3LCAKKyAgICA0Mjg3NCwgODU1MCwgNDI4NzYsIDU1OTIsIDI5MTksIDAsIDI2NzUsIDU1OTUsIDc4NDExLCA0Mzc2MiwgNDM2NywgMCwgMCwgCisgICAgNTQ3OCwgNTkwNCwgNTU5NCwgMCwgNzQxNTAsIDcyOTEsIDU1OTAsIDQzNzYxLCAxMzA2NywgMTE4OTA5LCAxMjAzNzIsIAorICAgIDk4MzEwOCwgOTczMSwgNjk3MzEsIDY0NjMzLCA3Nzg1NywgNzc4NTQsIDc3ODU1LCA3Nzg1MiwgNzc4NTMsIDc3ODUwLCAKKyAgICAxMDc1MCwgNDM3MTQsIDc3ODU4LCA3MTM3LCAwLCAxMjgyOTYsIDEyODg3LCAxMDU1MSwgMTk0NTY0LCA3Nzg2NiwgNzc4NjcsIAorICAgIDc3ODY0LCA3Nzg2NSwgOTkyOSwgNTE5OSwgOTkzNiwgMTEyMCwgNDIzODcsIDAsIDE0NDQsIDk0ODYsIDc1NTQsIDY1ODM5LCAKKyAgICA1NTI1MiwgNzM5NzIsIDE0NDIsIDAsIDU4OTQsIDcwMDY5LCAwLCA0MTE3MSwgOTI1MTEsIDc0MzEzLCAwLCAxMzE2MiwgMCwgCisgICAgMzMzNCwgMTk1MDEwLCAxMTg4MDMsIDc3ODgxLCA2NjAyMiwgMCwgMCwgMTY1MSwgMTI4NzcxLCA4ODYxLCAwLCAwLCAxMTQyLCAKKyAgICAwLCA4MjcxLCAwLCA5ODMwNTgsIDEyNjY0NSwgMTI5MDMsIDAsIDQwMDIsIDQzNjI2LCAxMDQ0MiwgMTA2NzYsIDMzNDQsIDAsIAorICAgIDAsIDEyOTIwLCAxOTQ1NjAsIDAsIDAsIDY2NjQyLCAxMjc3LCAwLCA3ODcxLCAwLCAwLCA3ODg1MywgMCwgNzg4NTQsIAorICAgIDEyMDM2MCwgMCwgMTE3ODQsIDAsIDc4MDEyLCA0NzAwLCA2NjM2NiwgNzg4NTgsIDEyMDM1OSwgMTEwMTIsIDAsIDc4ODU2LCAKKyAgICA5MjQwMCwgNzc4NzksIDQ5NzMsIDg3ODQsIDc3ODc3LCA3NDgwNCwgNzc4NzQsIDc3ODY5LCA3Nzg3MSwgNDI0NDAsIDAsIAorICAgIDQzMTE4LCAwLCA0MjM2NCwgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIDEwMzQ2LCAxMDQxMCwgNzg4NTksIDkyNDMsIAorICAgIDI0NjQsIDc0MjYzLCA2MTA4LCAzMzcyLCAwLCA2MjQ3LCA0MzExNywgNzQ1MjYsIDcxMjEsIDc0MTY2LCAwLCAxMjAzNTUsIAorICAgIDkyNTM3LCAwLCAwLCAxOTUwMzQsIDAsIDAsIDAsIDcwMDgzLCAzMzU0LCAxOTUwMzcsIDQxOTIsIDkyODksIDExODk5OSwgCisgICAgNDExOTEsIDM4NzYsIDAsIDcwMDY3LCAxMjA2NjAsIDQzNjk2LCA0MzM4MCwgMCwgOTgzMDkxLCAwLCAwLCAxMTYwMywgCisgICAgOTgzOTQ1LCAwLCA2NTg5LCAxMjg1ODgsIDE5NDY3OSwgMCwgMCwgOTgzNjkxLCAwLCAwLCA0MjU3MiwgMTI4MjY0LCAKKyAgICAxMDYzMCwgNzQ4MjcsIDE5NjMsIDExNjIyLCAxMjcwOTgsIDExNjU0LCAwLCA3NTUwLCAxMDY4NiwgNTkwMywgMCwgNzgwMDksIAorICAgIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAzMzY2LCAxMDM5OSwgMCwgNTU0MiwgMTEwMTMsIDEyNzkyNywgMTI4MzAwLCAKKyAgICAwLCA3ODYyMSwgMTk0NjcyLCA2OTI1LCAwLCAwLCA5MTc5MjksIDAsIDExNTY4LCA5ODM2NjQsIDQzMzY3LCA2NDU3OSwgCiAgICAgOTE3OTMwLCA3ODUyLCAwLCAwLCA2NzU0LCA2MzEyLCAwLCA2NDY3MiwgNjUyOTYsIDAsIDExODk1NywgMCwgNDE2LCAKLSAgICAxMjI5NiwgNjg0NTcsIDczODM0LCA2ODE3NywgMTEwNTAsIDEwOTg0LCA5MjIwOCwgMCwgMCwgOTIxODIsIDAsIDAsIDk1MzIsIAotICAgIDY2MzU1LCAwLCAwLCA5MTc5MjUsIDY0MzQzLCAxOTUwMzIsIDEyODI4MSwgMTk1MDMxLCAwLCAwLCAxOTUwNTcsIDExNDQ1LCAKLSAgICAwLCAyMTEyLCAxOTUwNTYsIDEyODgxNCwgMTAxODUsIDEwMjEsIDEyODEzMCwgOTUwNywgMTAyMTAsIDc0NTQ0LCA4MDIzLCAKLSAgICAxMjAwLCAxMjI0MywgNzgwMDEsIDUyODIsIDc4MDAzLCA5NjI0LCAxMTU0NSwgMCwgMTIwNDkzLCAzMzQzLCA0NDI0LCAKLSAgICAxMTA0NywgMTg4NSwgNDMyNjgsIDM4OTYsIDc4NjI2LCA2NjQ5NywgMjk0NywgMzkyLCA3ODk0LCA0MzkxLCA2ODEzOSwgMCwgCi0gICAgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIDAsIDY0NzU3LCAwLCAzOTEzLCAwLCAwLCAKLSAgICA3ODIzNSwgNzA0NCwgMTI2NSwgMCwgNjMwOSwgNzA0NSwgNzE3NSwgNzA0NywgNzgyMzksIDExNzkxLCAwLCAwLCA4MjIxLCAKLSAgICA3ODMwNywgNDE4NjQsIDAsIDAsIDAsIDAsIDE2NywgMCwgNzgzMDEsIDAsIDc0MjExLCA0MTg5NywgNjg0NzcsIDAsIAotICAgIDkxNzU4MywgMCwgMCwgMjQ5MywgMCwgMTE4ODExLCAwLCAwLCA2NDM1NCwgMCwgODc3NywgMCwgNDA2LCA4ODg0LCAyMzg1LCAKLSAgICAwLCA5MjQ1MCwgMCwgOTE3NTczLCA0MzAzMCwgNDIwMjcsIDEyMTE0LCAwLCA5MTc1NzksIDY0OTM2LCAxOTQ2OTUsIDAsIAotICAgIDEyMDYyOSwgMTA1NjEsIDAsIDgzNjUsIDEyMDUzOSwgMCwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAwLCAKLSAgICA5MTc1NzUsIDc4MzQsIDc0MTU5LCAwLCA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1OTYsIDE2MzksIDAsIDAsIAotICAgIDc0MTU3LCA2MzI3LCA2NzI0LCAwLCAxMjgwODYsIDkyNTY2LCAwLCA0ODE3LCA3ODQ0NiwgMTk0NzU5LCA5MjUzNiwgNzA0MywgCi0gICAgOTYwMCwgMTEwMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NDgsIDY0Nzk0LCA0MjA1MCwgMTIyOTEsIDU1Mjg5LCAxOTQ3NjEsIAotICAgIDEyMzQzLCA2NTcsIDE5NTA1NCwgNDI3MDUsIDQ0NjEsIDExMzQsIDE4MzgsIDc4NDM4LCAyMDU3LCAwLCA0NDY4LCAwLCAwLCAKLSAgICAwLCA0NDU2LCA1MjA2LCAxMDcyMCwgMCwgNDI1MjMsIDEyNzUyMCwgMCwgMCwgOTE3NTk1LCA2NTU1MCwgMjYwLCA0ODE2LCAKLSAgICA2NzY1OCwgMTA2ODcsIDAsIDQ4MjEsIDQ0NjYsIDAsIDE5NTA0MywgNDgxOCwgMTk1MDQ4LCA0MTQwMywgMTE5OTc3LCAwLCAKLSAgICAwLCA0MTQwNiwgNDMyNzMsIDc0MTYwLCAxMTk5ODMsIDczOTM5LCA5MjYzOCwgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAKLSAgICAxMTY1LCAxMTk5ODAsIDQ0NTEsIDEzMDg3LCAwLCAxMTI4NCwgMTE5OTg3LCA3Mzg1NSwgNjUxNTUsIDQzMDE0LCA1NDM5LCAKLSAgICA5MzYzLCAxMjc1NTgsIDMzNzUsIDEyODg2OSwgNTkwMCwgMCwgNzg4OSwgMjcyMiwgNDIyNjIsIDAsIDAsIDEyODc3NCwgMCwgCi0gICAgMCwgMCwgMTI3ODEwLCAxMTQwMSwgMCwgMCwgNjg0NTksIDAsIDAsIDAsIDAsIDY1NDM4LCAwLCA3MjgwLCAxMjc4ODcsIDAsIAotICAgIDEyNzM4MSwgNDg2OCwgMTE5OTY3LCAxMTk5NjYsIDExODc5OCwgMCwgMCwgNDMxNjEsIDAsIDkyMzYwLCAwLCA1MTgyLCAwLCAKLSAgICAxMjA1NDIsIDAsIDAsIDQyMjYsIDEyMDc5OCwgMTIxMzUsIDU3MzIsIDQ0NjQsIDAsIDAsIDk3NywgNDQ1OCwgMCwgMCwgCi0gICAgNjQ3NzAsIDc0ODM4LCAwLCAzNDQsIDAsIDE5NDc5MCwgMTM5NSwgNjQyNzksIDAsIDkyMjQwLCAwLCA3ODYsIDAsIDQzMTc0LCAKLSAgICA2NDM0MCwgMCwgMCwgMTIwNzIzLCA0MzAyNiwgNzYxMiwgMTAxMzIsIDY0NDEzLCA2NTAyNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjg0NDQsIDAsIDkyNDM3LCAwLCAxMTkxNjAsIDEwMjA0LCA5MjY1NiwgMCwgMTI3ODA5LCAwLCAxMzk5LCAwLCA2NTIxNywgCi0gICAgMCwgODg1MiwgMCwgMjQxLCAxMjg3ODAsIDQ5MDcsIDAsIDAsIDc5MzIsIDk3MjcsIDEyODg3MywgNzQyNTUsIDg3NDgsIDAsIAotICAgIDAsIDAsIDAsIDQyNzgwLCAwLCAwLCAwLCA0MjE3LCAwLCA4NjUwLCAwLCAwLCAwLCAwLCAxMTg4NzIsIDQzMDk5LCAzOTY1LCAKLSAgICAxMTkxMTksIDY3MTksIDAsIDEzMzAwLCA3ODQzOSwgMTI4MjYxLCA0MzA1NywgNjY1ODgsIDExODk5MSwgMCwgMCwgNzM4MTUsIAotICAgIDQ0MjAsIDAsIDY0MTAsIDc3NjAsIDAsIDAsIDAsIDAsIDAsIDcyOTQsIDAsIDAsIDAsIDkwNjYsIDAsIDExOTkzLCA0MzE4OCwgCi0gICAgMjYyNiwgNzc2MiwgMCwgMCwgMCwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgMCwgNzg1MTYsIDY5MTksIDg2MTksIAotICAgIDExOTY1NSwgMTAwMzgsIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTI2OTkzLCAxNTQyLCA5MjMwMywgMCwgMCwgMCwgMCwgCi0gICAgNzQzMTEsIDc4NDk3LCAwLCAxMDE4MSwgMCwgNDM2MjQsIDAsIDc3NzksIDAsIDEwMTk1LCA5NDc5LCA2MDI5LCAwLCAKLSAgICA5MjI2OCwgOTY4OSwgMCwgMCwgODk5MywgNjYzNTgsIDAsIDQyMzc4LCAzMzY4LCA2MDYsIDEyNzAzMCwgNzY5NywgNjkyMzcsIAotICAgIDY5Nzg3LCAyMDMwLCAwLCA2MDI3LCA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMCwgMCwgMCwgMCwgMCwgMjczNSwgNDI4MzEsIAotICAgIDc3OTM1LCAxMjcxMjAsIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDAsIDczOTQ2LCAwLCAwLCAwLCA2ODE0MCwgMCwgOTU3NiwgCi0gICAgMTI4ODcyLCAzMzQ3LCA0MTYwLCA1MTU0LCA1NTI4OCwgMzc5NCwgNjY1NjQsIDg1MzAsIDEyNzA2MywgNzcwOSwgNDExMTIsIAotICAgIDAsIDY2NTYwLCA0MjA0MSwgNDU3MiwgMTI4NzYsIDY2NTYxLCAwLCA2NzU4LCAwLCAxNjE1LCA1ODU1LCA4MDksIDAsIAotICAgIDkyMjgzLCAxMjgzMTYsIDEyODAwNCwgNTc5OSwgMCwgMCwgMCwgNzI2MCwgMCwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgCi0gICAgNzg4MTksIDY0Mzg2LCA2NTI1NywgMCwgNjg2MTYsIDEyMDYwNywgOTM0NywgMTI4MDY3LCA2NTMyLCAwLCAwLCAwLCAKLSAgICAxMjcwNjAsIDY1ODI4LCAwLCAyODMsIDY4NjY1LCA3ODgxMywgNTMyLCA3ODY2MywgMCwgMCwgMTIwNjA5LCAwLCAzMzcwLCAKLSAgICAwLCAxMTM2MSwgNTQ0MywgNzg3NzgsIDgxNTMsIDczNzY3LCAwLCAxMDc0MSwgMCwgMCwgMCwgMCwgNjU0OTUsIDY0NzA2LCAKLSAgICAwLCA0MzM0NCwgMCwgNzE0NCwgOTQ2NiwgNzg4NjYsIDk4MjQsIDAsIDAsIDAsIDAsIDkxNSwgNDM0MjUsIDAsIDAsIDAsIDAsIAotICAgIDEyNzE3OCwgNDMyNjQsIDAsIDAsIDAsIDAsIDc4ODY0LCA2NzMwLCA3ODg2MiwgNjgxNjEsIDY0NTUwLCA1MTg2LCAxMjg5MCwgCi0gICAgMTI3ODM3LCAwLCAxMjEwOCwgMCwgNjUxMjQsIDQzMTI3LCA2NjA0MywgMCwgNjMyNiwgNDMxMDcsIDc3ODI2LCAwLCAKLSAgICA0MjU2MiwgMCwgMCwgMCwgMTI4NTIwLCAxMTQ4NSwgNjEwMywgMTI3MTIzLCAwLCAxMTcxOCwgMCwgMTI4ODksIDkyNjU3LCAKLSAgICAxMjcxMzcsIDAsIDAsIDAsIDU1MjQ1LCAwLCAxNjMwLCAxMjgyMzIsIDY1NDgzLCAwLCAxMjU2NSwgMCwgNjU0NzYsIAotICAgIDEyMDAxMywgMCwgMTE5NTU0LCA5MjgzLCA3NzAwLCA5MTc1MzcsIDk2OTAsIDY1NDk5LCAwLCA2NDU5MywgNTEyLCAzMzc2LCAKLSAgICA2ODIxMCwgMCwgMCwgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCA0MjUyOSwgNzg1ODcsIDAsIDU5NTcsIDExMDU5MywgCi0gICAgODkyNiwgMCwgMCwgMTI4MjczLCAxMDc0NSwgMTAxNzQsIDczNzksIDY0NTgxLCA1Mzg2LCAxMjA2ODYsIDExNzEzLCAKLSAgICAxMDYzMywgNjk3MDgsIDUwNTYsIDAsIDAsIDAsIDEyMDc3MywgMCwgOTgxMiwgMCwgNDQ2MCwgMCwgMCwgMCwgMTI4MDM4LCAKLSAgICAwLCAwLCAxMjcxNzQsIDY0Mjc4LCA5MjM3MCwgNDM0NjYsIDAsIDAsIDY0Mzg5LCAyOTUzLCA3Mzg3OSwgMTgwMSwgMTI4MzUsIAotICAgIDExOTAyOSwgMCwgNzM4MjMsIDAsIDY2Mzc1LCAyMDg1LCA3MDIsIDQyNTc5LCA3Nzg4NCwgNzc4ODUsIDEzMDc0LCA3Nzg4MywgCi0gICAgMCwgMCwgMTI4NTcwLCAxMjEwNiwgMCwgNzQyMDcsIDE3NTUsIDEwNDgyLCAxMjg2MywgNzc4OTgsIDExNjMsIDI5NTEsIAotICAgIDk1MjIsIDc0MDc5LCA3ODI2NiwgMTIwNjc0LCAwLCAzMzg0LCA2OTIyNywgMTA3MDIsIDgzMCwgNzc5MDIsIDc3ODk5LCAKKyAgICAxMjI5NiwgNjg0NTcsIDczODM0LCA2ODE3NywgMTEwNTAsIDEwOTg0LCA5MjIwOCwgMCwgMCwgOTIxODIsIDAsIDk4MzYwNSwgCisgICAgOTUzMiwgNjYzNTUsIDAsIDk4MzIyOCwgOTE3OTI1LCA2NDM0MywgMTk1MDMyLCAxMjgyODEsIDE5NTAzMSwgMCwgMTk1MDMwLCAKKyAgICAxOTUwNTcsIDExNDQ1LCAwLCAyMTEyLCAxOTUwNTYsIDEyODgxNCwgMTAxODUsIDEwMjEsIDEyODEzMCwgOTUwNywgMTAyMTAsIAorICAgIDc0NTQ0LCA4MDIzLCAxMjAwLCAxMjI0MywgNzgwMDEsIDUyODIsIDc4MDAzLCA5NjI0LCAxMTU0NSwgMCwgMTIwNDkzLCAKKyAgICAzMzQzLCA0NDI0LCAxMTA0NywgMTg4NSwgNDMyNjgsIDM4OTYsIDc4NDQ0LCA2NjQ5NywgMjk0NywgMzkyLCA3ODk0LCAKKyAgICA0MzkxLCA2ODEzOSwgOTgzMDYyLCAxMzA1OSwgNzQ4MTYsIDc3OTk4LCAzMzgxLCA3OTQyLCAwLCA2OTIxOSwgMCwgNjQ3NTcsIAorICAgIDAsIDM5MTMsIDAsIDAsIDc4MjM1LCA3MDQ0LCAxMjY1LCAwLCA2MzA5LCA3MDQ1LCA3MTc1LCA3MDQ3LCA3ODIzOSwgCisgICAgMTE3OTEsIDAsIDAsIDgyMjEsIDc4MzA3LCA0MTg2NCwgMCwgMCwgMCwgMCwgMTY3LCA5ODM4OTcsIDc4MzAxLCA5ODM2NDQsIAorICAgIDc0MjExLCA0MTg5NywgNjg0NzcsIDAsIDkxNzU4MywgOTgzNjI1LCA5NDA2NSwgMjQ5MywgMCwgMTE4ODExLCAwLCAwLCAKKyAgICA2NDM1NCwgMCwgODc3NywgMCwgNDA2LCA4ODg0LCAyMzg1LCAwLCA5MjQ1MCwgMCwgOTE3NTczLCA0MzAzMCwgNDIwMjcsIAorICAgIDEyMTE0LCAwLCA5MTc1NzksIDY0OTM2LCAxOTQ2OTUsIDAsIDEyMDYyOSwgMTA1NjEsIDAsIDgzNjUsIDEyMDUzOSwgCisgICAgOTgzNzY1LCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDAsIDkxNzU3NSwgNzgzNCwgNzQxNTksIDAsIAorICAgIDkxNzU3NCwgMTAyOTgsIDY2MjQsIDQ5MDgsIDkxNzU5NiwgMTYzOSwgMCwgMCwgNzQxNTcsIDYzMjcsIDY3MjQsIDAsIAorICAgIDEyODA4NiwgOTI1NjYsIDY5OTEwLCA0ODE3LCA3ODQ0NiwgMTk0NzU5LCA5MjUzNiwgNzA0MywgOTYwMCwgMTEwMjIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDc1NDgsIDY0Nzk0LCA0MjA1MCwgMTIyOTEsIDU1Mjg5LCAxOTQ3NjEsIDEyMzQzLCA2NTcsIAorICAgIDE5NTA1NCwgNDI3MDUsIDQ0NjEsIDExMzQsIDE4MzgsIDc4NDM4LCAyMDU3LCAwLCA0NDY4LCAwLCAwLCAwLCA0NDU2LCAKKyAgICA1MjA2LCAxMDcyMCwgMCwgNDI1MjMsIDEyNzUyMCwgMCwgMCwgOTE3NTk1LCA2NTU1MCwgMjYwLCA0ODE2LCA2NzY1OCwgCisgICAgMTA2ODcsIDAsIDQ4MjEsIDQ0NjYsIDAsIDE5NTA0MywgNDgxOCwgMTk1MDQ4LCA0MTQwMywgMTE5OTc3LCAwLCAwLCAKKyAgICA0MTQwNiwgNDMyNzMsIDc0MTYwLCAxMTk5ODMsIDczOTM5LCA5MjYzOCwgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAxMTY1LCAKKyAgICAxMTk5ODAsIDQ0NTEsIDEzMDg3LCAwLCAxMTI4NCwgMTE5OTg3LCA3MDA5NywgNjUxNTUsIDQzMDE0LCA1NDM5LCA5MzYzLCAKKyAgICA3MDA3MCwgMzM3NSwgMTI4ODY5LCA1OTAwLCA5Mzk5MCwgNzg4OSwgMjcyMiwgNDIyNjIsIDAsIDAsIDEyODc3NCwgMCwgCisgICAgMjI4MiwgMCwgMTI3ODEwLCAxMTQwMSwgOTgzODEzLCAwLCA2ODQ1OSwgMCwgMCwgMCwgMCwgNjU0MzgsIDAsIDcyODAsIAorICAgIDEyNzg4NywgMCwgMTI3MzgxLCA0ODY4LCAxMTk5NjcsIDExOTk2NiwgMTE4Nzk4LCAwLCAwLCA0MzE2MSwgMCwgOTIzNjAsIAorICAgIDAsIDUxODIsIDAsIDEyMDU0MiwgMCwgMCwgNDIyNiwgMTE5MjQzLCAxMjEzNSwgNTczMiwgNDQ2NCwgMCwgNzEzMzAsIDk3NywgCisgICAgNDQ1OCwgMCwgMCwgNjQ3NzAsIDc0ODM4LCAwLCAzNDQsIDAsIDE5NDc5MCwgMTM5NSwgNjQyNzksIDAsIDkyMjQwLCAwLCAKKyAgICA3ODYsIDAsIDQzMTc0LCA2NDM0MCwgMCwgMTk0NzY3LCAxMjA3MjMsIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIAorICAgIDY1MDI1LCAwLCAwLCAwLCA5Mzk1NiwgMCwgNjg0NDQsIDAsIDkyNDM3LCAwLCAxMTkxNjAsIDEwMjA0LCA5MjY1NiwgMCwgCisgICAgMTI3ODA5LCA5ODM2MzUsIDEzOTksIDk4MzY0MywgNjUyMTcsIDAsIDg4NTIsIDEyODU3MSwgMjQxLCAxMjg3ODAsIDQ5MDcsIAorICAgIDAsIDk4MzYzMCwgNzkzMiwgOTcyNywgMTI4ODczLCA3NDI1NSwgODc0OCwgMCwgMCwgOTgzNjM0LCAwLCA0Mjc4MCwgMCwgMCwgCisgICAgMCwgNDIxNywgMCwgODY1MCwgMCwgMCwgMCwgNjk5MDAsIDExODg3MiwgNDMwOTksIDM5NjUsIDExOTExOSwgNjcxOSwgMCwgCisgICAgMTMzMDAsIDc4NDM5LCA5Mzk3MSwgNDMwNTcsIDY2NTg4LCAxMTg5OTEsIDAsIDAsIDczODE1LCA0NDIwLCAwLCA2NDEwLCAKKyAgICA3NzYwLCAwLCAwLCAwLCAwLCAwLCA3Mjk0LCAwLCAwLCAwLCA5MDY2LCAwLCAxMTk5MywgNDMxODgsIDI2MjYsIDc3NjIsIDAsIAorICAgIDAsIDAsIDkyNjAxLCA0MjgyNSwgNDE4NTQsIDUzMDQsIDAsIDc4NTE2LCA2OTE5LCA4NjE5LCAxMTk2NTUsIDEwMDM4LCAKKyAgICA2NjQ1NCwgOTU5MiwgNDI4NTEsIDEyNjk5MywgMTU0MiwgOTIzMDMsIDAsIDAsIDAsIDAsIDc0MzExLCA3ODQ5NywgMCwgCisgICAgMTAxODEsIDAsIDQzNjI0LCAwLCA3Nzc5LCAwLCAxMDE5NSwgOTQ3OSwgNjAyOSwgMCwgOTIyNjgsIDk2ODksIDAsIDY1NTc3LCAKKyAgICA4OTkzLCA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgMTI3MDMwLCA3Njk3LCA2OTIzNywgNjk3ODcsIDIwMzAsIDAsIAorICAgIDYwMjcsIDgzNzAsIDQzMjIsIDAsIDY1MjA3LCAwLCA5ODMzMzEsIDk4MzMzMCwgOTgzMzI5LCA5ODMzMjgsIDI3MzUsIAorICAgIDQyODMxLCA3NzkzNSwgMTI3MTIwLCA3NDg2NiwgODg4MSwgMTE5MDQ3LCAwLCAwLCA3Mzk0NiwgMCwgMCwgMCwgNjgxNDAsIAorICAgIDk4MzkxOSwgOTU3NiwgMTI4ODcyLCAzMzQ3LCA0MTYwLCA1MTU0LCA1NTI4OCwgMzc5NCwgNjY1NjQsIDg1MzAsIDEyNzA2MywgCisgICAgNzcwOSwgNDExMTIsIDk4MzEzMiwgNjY1NjAsIDQyMDQxLCA0NTcyLCAxMjg3NiwgNjY1NjEsIDk4Mzc0OSwgNjc1OCwgCisgICAgOTgzOTE3LCAxNjE1LCA1ODU1LCA4MDksIDAsIDkyMjgzLCAxMjgzMTYsIDEyODAwNCwgNTc5OSwgOTgzMzIwLCA3MDEwMCwgCisgICAgOTgzMzE4LCA3MjYwLCA5ODMzMTYsIDQzMDMxLCA2NDQyNSwgNjUxMjgsIDc4ODE5LCA2NDM4NiwgNjUyNTcsIDAsIDY4NjE2LCAKKyAgICAxMjA2MDcsIDkzNDcsIDEyODA2NywgNjUzMiwgMCwgMCwgMCwgMTI3MDYwLCA2NTgyOCwgMCwgMjgzLCA2ODY2NSwgNzg4MTMsIAorICAgIDUzMiwgNzg2NjMsIDAsIDk4Mzc4NywgMTIwNjA5LCAwLCAzMzcwLCAwLCAxMTM2MSwgNTQ0MywgNzg3NzgsIDgxNTMsIAorICAgIDczNzY3LCAwLCAxMDc0MSwgMCwgMjI5OCwgMCwgOTgzOTA4LCA2NTQ5NSwgNjQ3MDYsIDk4MzMxMCwgNDMzNDQsIDk4MzMwOCwgCisgICAgNzE0NCwgOTQ2NiwgNzg4NjYsIDk4MjQsIDk4MzMwMywgOTgzMzAyLCAwLCAwLCA5MTUsIDQzNDI1LCAwLCAwLCAwLCAwLCAKKyAgICAxMjcxNzgsIDQzMjY0LCA3MDA5NiwgMCwgMCwgNDMwMzgsIDc4ODY0LCA2NzMwLCA3ODg2MiwgNjgxNjEsIDY0NTUwLCAKKyAgICA1MTg2LCA3MzYwLCAxMjc4MzcsIDAsIDEyMTA4LCAwLCA2NTEyNCwgNDMxMjcsIDY2MDQzLCAwLCA2MzI2LCA0MzEwNywgCisgICAgNzc4MjYsIDAsIDQyNTYyLCAwLCAxMjg4MjEsIDAsIDEyODUyMCwgMTE0ODUsIDYxMDMsIDEyNzEyMywgOTgzMjk3LCAKKyAgICAxMTcxOCwgOTgzMjk1LCAxMjg4OSwgOTI2NTcsIDEyNzEzNywgMCwgMCwgMCwgNTUyNDUsIDAsIDE2MzAsIDEyODIzMiwgCisgICAgNjU0ODMsIDAsIDEyNTY1LCAwLCA2NTQ3NiwgMTIwMDEzLCAwLCAxMTk1NTQsIDkyODMsIDc3MDAsIDkxNzUzNywgOTY5MCwgCisgICAgNjU0OTksIDAsIDY0NTkzLCA1MTIsIDMzNzYsIDY4MjEwLCAwLCAxMjg2NzcsIDc3ODkyLCA2MzIsIDEyOTQwLCA3Nzg5MSwgCisgICAgNDI1MjksIDc4NTg3LCAwLCA1OTU3LCAxMTA1OTMsIDg5MjYsIDk4MzI5MSwgOTgzMjkwLCAxMjgyNzMsIDEwNzQ1LCAKKyAgICAxMDE3NCwgNzM3OSwgNjQ1ODEsIDUzODYsIDEyMDY4NiwgMTE3MTMsIDEwNjMzLCA2OTcwOCwgNTA1NiwgMCwgMCwgMCwgCisgICAgMTIwNzczLCAwLCA5ODEyLCAwLCA0NDYwLCAwLCAwLCA3MTMwNywgMTI4MDM4LCAwLCAwLCAxMjcxNzQsIDY0Mjc4LCAKKyAgICA5MjM3MCwgNDM0NjYsIDAsIDAsIDY0Mzg5LCAyOTUzLCA3Mzg3OSwgMTgwMSwgMTI4MzUsIDExOTAyOSwgMCwgNzM4MjMsIDAsIAorICAgIDY2Mzc1LCAyMDg1LCA3MDIsIDQyNTc5LCA3Nzg4NCwgNzc4ODUsIDEzMDc0LCA3Nzg4MywgOTgzMjc4LCA5ODMyNzcsIAorICAgIDEyODU3MCwgMTIxMDYsIDk4MzI3NCwgNzQyMDcsIDE3NTUsIDEwNDgyLCAxMjg2MywgNzc4OTgsIDExNjMsIDI5NTEsIAorICAgIDk1MjIsIDc0MDc5LCA3ODI2NiwgNjY2MDQsIDAsIDMzODQsIDY5MjI3LCAxMDcwMiwgODMwLCA3NzkwMiwgNzc4OTksIAogICAgIDc3OTAwLCA4NDUxLCAwLCAwLCAwLCA2OTczOSwgMCwgMCwgMCwgMCwgMjkwOCwgMCwgNDMzODYsIDY0OTAyLCA0MjQzLCAwLCAKLSAgICAxMjIzOSwgMCwgMCwgNDQ0MSwgMCwgMCwgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDAsIDQxMSwgMCwgOTE5OSwgMCwgNDA1NiwgCi0gICAgMTE4OTkyLCA0MTg5MCwgMCwgMjczMCwgNDE2MDQsIDAsIDU0MjgsIDE5NDc0MywgMzM2NCwgNDIyNjUsIDY0NDM3LCAKLSAgICAxMjc5MzUsIDExODgxNiwgMTk0NzQyLCA5Njg0LCAyMTYsIDAsIDE0MDEsIDEyODA1MywgNDQwMTIsIDAsIDAsIDkyNTg1LCAKLSAgICA5MTU4LCA3Nzg0MiwgMTIwNjY0LCA1NzY4LCAwLCAwLCAwLCA0ODQsIDE5NDczOSwgMCwgMCwgNjU4OTUsIDAsIDAsIDMzMzgsIAotICAgIDczOTM1LCA1NzIsIDcwNDEsIDI3MzYsIDY3NjA1LCAwLCAxMjg2ODAsIDI3OTQsIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgCi0gICAgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIDU0NTYsIDU1MDksIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDAsIDAsIAotICAgIDAsIDM0MzAsIDAsIDAsIDAsIDAsIDk4MSwgMCwgNDMzMCwgNzM5MjksIDEyMDUzNiwgMTgyNCwgMTA5MDgsIDAsIDcwMzQsIAotICAgIDQxNjgzLCA2NDYxNywgMCwgNzM3NTQsIDM5NTcsIDY0MzU4LCA2NDU0NywgMTI4MjU5LCA2NzQsIDYzOTkxLCAwLCAyOTQ2LCAKLSAgICA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgODM2NCwgNTEyMywgMTE5NjI4LCA1MjgxLCA1NDY5LCAKLSAgICA1MTIxLCAxMTkyNDUsIDExODk5MywgMCwgNTEzMCwgMCwgMCwgNzc5OTAsIDAsIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIAotICAgIDc3OTkxLCA1MjE2LCAwLCAwLCAwLCAwLCAzNDY4LCA3MDMzLCA5MjMwLCA1OTM5LCAxOTUwNTIsIDAsIDAsIDEyMDY3NywgCi0gICAgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgNjQ2MTMsIDEwMzg1LCA0MTcwNiwgMCwgMCwgMCwgMCwgMTE3MzksIDAsIAotICAgIDQxOTgxLCAwLCA1OTM4LCAwLCAwLCAxMjQ0OCwgNzU3NiwgMTA0MDEsIDEwMzM3LCA3Mzg1MiwgMCwgMTMwNTcsIDAsIAotICAgIDEyNjk3NiwgMCwgMTAwMDksIDAsIDQxNzAzLCAwLCAxMjE2NSwgMCwgMCwgOTg4NSwgMCwgODA3NywgMCwgMTI3OTA4LCAwLCAKLSAgICAwLCAwLCA5MjQ1NywgMCwgNDIyMCwgMTA3MjUsIDEwNDMzLCAwLCA2ODM5NSwgNDk4NywgNjQ1MTksIDAsIDEyODM0MCwgMCwgCi0gICAgMCwgMCwgMTA5NzAsIDExNzMzLCAwLCAxMjA3OTIsIDAsIDE5OTQ0LCAwLCA5MDA5LCA4NTUxLCA5MjM0NSwgMTE0NjgsIAotICAgIDY0NjM2LCA3NTc1LCAwLCAyNzI0LCAwLCAwLCAxMjMxMywgMTEwNTkyLCA1MTUsIDExOTk0NywgNDI3OTEsIDYzOTg3LCAKLSAgICA3ODI4NiwgMTE5OTQzLCAxMTk5NDAsIDExOTk0MSwgMTE5OTM4LCA5Nzc1LCA0MDQ2LCA0NTg5LCA0NTIxLCA2ODYyOSwgCi0gICAgOTE0MSwgMCwgNzg4NTAsIDI3NDEsIDY0Mzk5LCA2MTk3LCAxMzcwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTg0LCA4NjA2LCAKLSAgICAzMzAzLCA0MTM3MiwgMTE3ODYsIDk0NzMsIDY2MjAzLCA2NjE3NywgOTI0NDYsIDExNTkzLCA0MzAwNywgNDQ3OCwgNjYxNzgsIAotICAgIDAsIDAsIDI3NDQsIDAsIDQ0NzcsIDExODk2NCwgODE0LCA0MjA2NiwgNjYxODMsIDY2MjA0LCA0Mzc4NiwgMTE5OTYxLCAKLSAgICA2NjE5OCwgNDE4ODAsIDY2MTg4LCA2NjE5NywgNzgxNDgsIDExOTU1LCA2NjE5MCwgNjYxOTEsIDQxMTExLCA2NjE4OSwgCi0gICAgNzM3ODgsIDc3ODgsIDQ4NDcsIDAsIDEyNzc1OSwgMCwgMCwgMCwgMTU4MSwgNjUzNSwgNzgxNjEsIDEyOTU0LCA0MzAsIAotICAgIDc4MTYwLCA1NTI1OSwgNzgxNTgsIDEyODAzNiwgNTI3OCwgNDk0NSwgNDI4ODMsIDQ5NTAsIDAsIDY4NjI1LCAwLCA3MjY5LCAKLSAgICAwLCA1OTY0LCAxMjkwOCwgMCwgMCwgNzQ3NjQsIDc0NDc3LCAxMTkxNDYsIDE5NDkzNiwgNDk0OSwgMCwgNDQzLCAwLCAKLSAgICA0OTQ0LCA1NDY3LCAxMTk2MDMsIDAsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgMCwgNDIxMywgMCwgNDEzMDMsIDAsIDE5NDkzMSwgCi0gICAgMTE5OTYyLCA0MTMwNiwgNzM5ODQsIDI2OTgsIDEyNzE1OSwgMCwgMTIwNzIsIDMxOTMsIDAsIDQxMzA0LCA4MjQsIAotICAgIDEyODY3NiwgMTIwOTEsIDc4ODkzLCA3ODg5NCwgMTE5ODE2LCA0NjczLCA2NDgwNCwgNDY3OCwgMTE5ODIwLCAxMTk4MTksIAotICAgIDY1MDU5LCAwLCA2NzM5LCAwLCA1NDgxLCAzNDkwLCAxMTk5LCAxMTk4MTEsIDgzNTYsIDExOTgyOSwgMTE5ODMyLCA0Njc3LCAKLSAgICAxMjY4OCwgMzEwMiwgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIDc4MTcwLCA3ODE2NiwgCi0gICAgNDY3NCwgNDU0OCwgNDQwMDUsIDExOTk0OSwgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIDEyNzAyNCwgMTg1NSwgMCwgCi0gICAgNjg2NjksIDAsIDkyNDQ1LCAxMjc1NTQsIDAsIDAsIDExOTY1MiwgMjc0NSwgMTE3OTcsIDAsIDEyODE1OSwgOTIwMiwgCi0gICAgNDY1NCwgMCwgMCwgNjg2MzgsIDczOTkzLCAxMDUyNSwgNDY0OSwgNjUyMDksIDAsIDAsIDQ2NDgsIDQzMDgwLCAwLCAwLCAwLCAKLSAgICA2MjQ2LCA2NDk1MCwgNzgyOCwgNDY1MCwgNjc3NywgNjc3NiwgNjc3NSwgNDY1MywgNzgyMiwgNzgwMDUsIDkyMzg0LCAKLSAgICA0MzE4NywgODY2OSwgMCwgNjgyMSwgNjUwOTMsIDAsIDc4ODgxLCAyNzE2LCAwLCAwLCAwLCAwLCA2ODM2OSwgMTIwMDU0LCAKKyAgICAxMjIzOSwgMCwgMCwgNDQ0MSwgMCwgOTgzMjcxLCA3Mzk0MCwgNjQzNTIsIDEyNzUxMywgOTgzMjY3LCA0MTEsIDk4MzI2NSwgCisgICAgOTE5OSwgOTgzMjYzLCA0MDU2LCAxMTg5OTIsIDQxODkwLCAwLCAyNzMwLCA0MTYwNCwgOTgzOTI4LCA1NDI4LCAxOTQ3NDMsIAorICAgIDMzNjQsIDQyMjY1LCA2NDQzNywgMTI3OTM1LCAxMTg4MTYsIDE5NDc0MiwgOTY4NCwgMjE2LCAwLCAxNDAxLCAxMjgwNTMsIAorICAgIDQ0MDEyLCAwLCAwLCA5MjU4NSwgOTE1OCwgNzc4NDIsIDY5OTA1LCA1NzY4LCAwLCAwLCAwLCA0ODQsIDE5NDczOSwgMCwgMCwgCisgICAgNjU4OTUsIDAsIDAsIDMzMzgsIDczOTM1LCA1NzIsIDcwNDEsIDI3MzYsIDY3NjA1LCA5ODMyNTUsIDkzOTYyLCAyNzk0LCAKKyAgICA4ODA3LCA2NDQ5MSwgNzc4NDcsIDU0MzgsIDUyMjIsIDUzODEsIDQzMTE0LCAwLCA1MTkzLCA1MTI1LCA1NDU2LCA1NTA5LCAKKyAgICA3Nzg0NiwgMTk0NzQ3LCA5NTM0LCAwLCAwLCAwLCAzNDMwLCAwLCAwLCA3ODcxNywgMCwgOTgxLCAwLCA0MzMwLCA3MzkyOSwgCisgICAgMTIwNTM2LCAxODI0LCAxMDkwOCwgMCwgNzAzNCwgNDE2ODMsIDY0NjE3LCAwLCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAKKyAgICAxMjgyNTksIDY3NCwgNjM5OTEsIDk4MzI0MywgMjk0NiwgNTM1NCwgNTI1MSwgNTMyOCwgNTMwNywgMzc1OSwgMTE0MTEsIAorICAgIDgzNjQsIDUxMjMsIDExOTYyOCwgNTI4MSwgNTQ2OSwgNTEyMSwgMTE5MjQ1LCAxMTg5OTMsIDAsIDUxMzAsIDAsIDAsIAorICAgIDc3OTkwLCAwLCAxMjA3MjYsIDEyMjEsIDI3MzMsIDExNzQ2LCA3Nzk5MSwgNTIxNiwgMCwgMCwgMCwgMCwgMzQ2OCwgNzAzMywgCisgICAgOTIzMCwgNTkzOSwgMTk1MDUyLCAwLCAwLCAxMjA2NzcsIDY4NDAwLCA3Mjc4LCAxMDMyMSwgMTAyODksIDY0NjEzLCAKKyAgICAxMDM4NSwgNDE3MDYsIDAsIDAsIDk4MzQwNSwgMCwgMTE3MzksIDk4MzQxOCwgNDE5ODEsIDAsIDU5MzgsIDAsIDQzNzY2LCAKKyAgICAxMjQ0OCwgNzU3NiwgMTA0MDEsIDEwMzM3LCA3Mzg1MiwgMCwgMTMwNTcsIDAsIDEyNjk3NiwgMCwgMTAwMDksIDAsIAorICAgIDQxNzAzLCA5ODM2MjksIDEyMTY1LCAwLCAwLCA5ODg1LCAwLCA4MDc3LCAwLCAxMjc5MDgsIDAsIDAsIDAsIDkyNDU3LCAwLCAKKyAgICA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCA0OTg3LCA2NDUxOSwgMCwgMTI4MzQwLCAwLCAwLCAwLCAxMDk3MCwgCisgICAgMTE3MzMsIDAsIDEyMDc5MiwgMCwgMTk5NDQsIDAsIDkwMDksIDg1NTEsIDkyMzQ1LCAxMTQ2OCwgNjQ2MzYsIDc1NzUsIDAsIAorICAgIDI3MjQsIDAsIDAsIDEyMzEzLCAxMTA1OTIsIDUxNSwgMTE5OTQ3LCA0Mjc5MSwgNjM5ODcsIDc4Mjg2LCAxMTk5NDMsIAorICAgIDExOTk0MCwgMTE5OTQxLCAxMTk5MzgsIDk3NzUsIDQwNDYsIDQ1ODksIDQ1MjEsIDY4NjI5LCA5MTQxLCAwLCA3ODg1MCwgCisgICAgMjc0MSwgNjQzOTksIDYxOTcsIDEzNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxODQsIDg2MDYsIDMzMDMsIDQxMzcyLCAKKyAgICAxMTc4NiwgOTQ3MywgNjYyMDMsIDY2MTc3LCA5MjQ0NiwgMTE1OTMsIDQzMDA3LCA0NDc4LCA2NjE3OCwgMCwgMCwgMjc0NCwgCisgICAgMCwgNDQ3NywgMTE4OTY0LCA4MTQsIDQyMDY2LCA2NjE4MywgNjYyMDQsIDQzNzg2LCAxMTk5NjEsIDY2MTk4LCA0MTg4MCwgCisgICAgNjYxODgsIDExNjIzLCA3ODE0OCwgMTE5NTUsIDY2MTkwLCA2NjE5MSwgNDExMTEsIDY2MTg5LCA3Mzc4OCwgNzc4OCwgCisgICAgNDg0NywgMCwgMTI3NzU5LCAwLCAwLCAwLCAxNTgxLCA2NTM1LCA3ODE2MSwgMTI5NTQsIDQzMCwgNzgxNjAsIDU1MjU5LCAKKyAgICA3ODE1OCwgMTI4MDM2LCA1Mjc4LCA0OTQ1LCA0Mjg4MywgNDk1MCwgOTgzNDMwLCA2ODYyNSwgOTgzNDI4LCA3MjY5LCAwLCAKKyAgICA1OTY0LCAxMjkwOCwgOTgzNTU1LCAwLCA3NDc2NCwgNzQ0NzcsIDExOTE0NiwgMTk0OTM2LCA0OTQ5LCA5ODM0MjEsIDQ0MywgCisgICAgOTgzNDE5LCA0OTQ0LCA1NDY3LCAxMTk2MDMsIDAsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgMCwgNDIxMywgMCwgNDEzMDMsIDAsIAorICAgIDE5NDkzMSwgMTE5OTYyLCA0MTMwNiwgNzM5ODQsIDI2OTgsIDEyNzE1OSwgMCwgMTIwNzIsIDMxOTMsIDAsIDQxMzA0LCAKKyAgICA4MjQsIDEyODY3NiwgMTIwOTEsIDc4ODkzLCA3ODg5NCwgMTE5ODE2LCA0NjczLCA2NDgwNCwgNDY3OCwgMTE5ODIwLCAKKyAgICAxMTk4MTksIDY1MDU5LCAwLCA2NzM5LCAwLCA1NDgxLCAzNDkwLCAxMTk5LCAxMTk4MTEsIDgzNTYsIDY5OTQ3LCAxMTk4MzIsIAorICAgIDQ2NzcsIDEyNjg4LCAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIAorICAgIDc4MTY2LCA0Njc0LCA0NTQ4LCA0NDAwNSwgMTE5OTQ5LCA2ODY1OCwgMTE5OTQ2LCA4MDI1LCA2ODYzMCwgMTI3MDI0LCAKKyAgICAxODU1LCA5ODM0MDQsIDY4NjY5LCA5ODM0MDIsIDkyNDQ1LCAxMjc1NTQsIDAsIDEyNzMzOSwgMTE5NjUyLCAyNzQ1LCAKKyAgICAxMTc5NywgOTgzNDEwLCAxMjgxNTksIDkyMDIsIDQ2NTQsIDk4MzQwNiwgOTgzNDA4LCA2ODYzOCwgNzM5OTMsIDEwNTI1LCAKKyAgICA0NjQ5LCA2NTIwOSwgOTgzNDA5LCAwLCA0NjQ4LCA0MzA4MCwgOTgzMzk4LCA5ODMzOTksIDk4MzM5NiwgNjI0NiwgNjQ5NTAsIAorICAgIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDc4MDA1LCA5MjM4NCwgNDMxODcsIDg2NjksIAorICAgIDk4MzQwNywgNjgyMSwgNjUwOTMsIDAsIDc4ODgxLCAyNzE2LCAwLCA5ODMwNjAsIDk4MzQxMSwgMCwgNjgzNjksIDEyMDA1NCwgCiAgICAgMTEwNjAsIDg1NDcsIDI3MTEsIDQyMTY1LCA3ODAyNywgNzgwMjYsIDc5OTIsIDAsIDAsIDQ2NjIsIDc4MDMzLCA3ODAzMiwgCiAgICAgOTE0OSwgOTE0NiwgNTk5LCAyMDgxLCA3ODAzMSwgNzgwMzAsIDE5NDk2MiwgNDY1NiwgMTAxMzAsIDY4NDUwLCA3ODExLCAKLSAgICA0MDk5NCwgMTk0OTY1LCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCA1NzEzLCA1ODE0LCA0NjYxLCA0MjQzNCwgMCwgMCwgMCwgCi0gICAgNjQ5MDQsIDkwMjYsIDEwODMzLCA3NDg2NCwgNzU0NywgNDg2NywgMCwgMTAwMDgsIDEwMjIyLCAzMDU0LCAxOTQ5NTYsIAotICAgIDk3NDQsIDc4ODYwLCA3NjA1LCA0NjIyLCAxMTk2NTYsIDAsIDAsIDAsIDAsIDAsIDkwNDUsIDc4ODg4LCA0MjI1LCAxOTkyNiwgCi0gICAgNzg4ODcsIDEyODgwLCA2NTMwNywgNDYxNywgNzg4ODMsIDAsIDQxNzMyLCA0NjE2LCAxMDUxOCwgMTA0MjMsIDEwMzU5LCAwLCAKLSAgICA1OTU4LCAwLCAwLCA0MjE1LCA5Nzg5LCA5MTc5NDEsIDQzMjEsIDQ2MjEsIDAsIDQxMzEzLCA1MjIsIDUzNjgsIDAsIAotICAgIDY1ODAzLCAwLCA1MzY2LCAxMjIwMSwgNTM3MiwgMCwgMCwgMCwgNzcyMCwgNzM5MCwgMjY5NiwgMCwgMCwgNDYzOCwgMCwgCi0gICAgMTc5MCwgNzgyNDIsIDU5NjUsIDY0MzYzLCA2NjU2OSwgNjg2NDYsIDE5NDk2OCwgNTM3NiwgMTgzNSwgNTMzNSwgMTk0OTY2LCAKKyAgICA0MDk5NCwgMTk0OTY1LCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCA1NzEzLCA1ODE0LCA0NjYxLCA0MjQzNCwgOTgzNDAzLCAKKyAgICAwLCAwLCA2NDkwNCwgOTAyNiwgMTA4MzMsIDc0ODY0LCA3NTQ3LCA0ODY3LCAwLCAxMDAwOCwgMTAyMjIsIDMwNTQsIAorICAgIDE5NDk1NiwgOTc0NCwgNzg4NjAsIDc2MDUsIDQ2MjIsIDExOTY1NiwgOTgzMzg3LCA5NDA3MCwgOTgzMzg1LCA5ODMzODYsIAorICAgIDk4MzM4MywgOTA0NSwgNzg4ODgsIDQyMjUsIDE5OTI2LCA3ODg4NywgMTI4ODAsIDY1MzA3LCA0NjE3LCA3ODg4MywgCisgICAgOTgzMzc4LCA0MTczMiwgNDYxNiwgMTA1MTgsIDEwNDIzLCAxMDM1OSwgOTgzMzcyLCA1OTU4LCAwLCA5ODM0MjUsIDQyMTUsIAorICAgIDk3ODksIDkxNzk0MSwgNDMyMSwgNDYyMSwgOTgzMzgxLCA0MTMxMywgNTIyLCA1MzY4LCAwLCA2NTgwMywgMCwgNTM2NiwgCisgICAgMTIyMDEsIDUzNzIsIDAsIDk4MzQwMSwgMCwgNzcyMCwgNzM5MCwgMjY5NiwgOTgzMzkyLCAwLCA0NjM4LCA5ODMzOTcsIAorICAgIDE3OTAsIDc4MjQyLCA1OTY1LCA2NDM2MywgNjY1NjksIDY4NjQ2LCAxMjc4MzMsIDUzNzYsIDE4MzUsIDUzMzUsIDE5NDk2NiwgCiAgICAgMTI4MDg5LCA0NjMzLCAwLCA2ODExOSwgMTE4MCwgNDYzMiwgMTI4MDkzLCA1Mzg3LCA1MzMzLCAwLCAwLCA0MjA5NCwgCi0gICAgNTMzMSwgNDYzNCwgMTE5MjgsIDAsIDUzMzgsIDQ2MzcsIDEyODE3MCwgNTk3MSwgNDI0MTQsIDAsIDEyNjgsIDY1MDk3LCAKLSAgICA0MjM2MSwgMCwgMCwgNzM4NTMsIDE0MjcsIDAsIDAsIDU5NzAsIDM0MzEsIDAsIDEwMzU4LCAxMDQyMiwgNDc1OCwgMCwgCi0gICAgMTYwOCwgMjczOCwgMCwgMTA0NTUsIDQ3NTMsIDc0MDI2LCAxMTM0NCwgNDIyMiwgNjI0MCwgNTIzMSwgNzQzODQsIDAsIAotICAgIDY4Mzc3LCA2MjQ4LCAwLCAwLCAwLCA0MjMxOCwgOTI1ODIsIDUyMjksIDQ3NTcsIDAsIDAsIDI3MjgsIDQ3NTIsIDY0NTYzLCAKLSAgICA2NTIzNSwgNTIzNCwgMCwgMTI4MTQ1LCAwLCAxMDcxMywgNzE2NiwgMCwgMjYyMiwgNzQ2MCwgMTI3MzAyLCAwLCAwLCAKLSAgICA4OTU0LCA3NDc2MCwgNjUxODksIDI2MzIsIDkyMjMwLCAxMDEwOCwgMTAxMSwgNTU3NCwgMTg1MywgMjcwOSwgNjUxMzksIAotICAgIDU1NzcsIDAsIDAsIDExODg3MSwgNjg2NDEsIDg5NjUsIDc2MzUsIDQyMTc3LCA1MzE2LCAwLCA1MzE0LCA2NDUxLCA1NTcyLCAKLSAgICAwLCA1MzEyLCAwLCA1NTI1LCA1MzMwLCA1MzE5LCAwLCAwLCAxOTQ5MDcsIDQ0MDAzLCAwLCAwLCAwLCAxMjA0OTgsIAotICAgIDEyNzg1MSwgMTk1MDA5LCAwLCA3NDAyMiwgMCwgNjQ2MDksIDY4NjQzLCAxMjA2MzQsIDAsIDU3MjEsIDAsIDU1MTksIAotICAgIDg2MzIsIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCAwLCAxNjkyLCA0MjE5LCA0NjEwLCA4Njk2LCA0MzA1LCAKLSAgICAwLCA0NjA5LCA0MzQ3OCwgNDYxNCwgNTQxLCAwLCA1Mjg3LCA1MzA5LCA1Mjg1LCA2ODM4OSwgNTk2MSwgNDY0NywgNTYsIAotICAgIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCAwLCAwLCA5MjI3NiwgNDYwOCwgNjQyNjAsIDQxMTI0LCA1MTkwLCAKLSAgICA2NzYyOCwgMCwgNjgxNDUsIDcwODYsIDAsIDExOTI0MywgNjc2MjAsIDAsIDI3MzQsIDExMDc0LCAwLCA2NzYyNywgNDM1OTMsIAotICAgIDAsIDY3NjI1LCA1OTYwLCAwLCA4OTkyLCA0MjU5MywgMTI4MjYwLCAxNzgyLCA2NzYyMiwgNjgxMTQsIDExOTkzOSwgMCwgCi0gICAgNjgxODAsIDU1MDEsIDExOTk1MiwgNDI1MDgsIDc0NDIsIDQzNjY1LCAzNTksIDQxMjUzLCA2ODM5MiwgNjIzOSwgMTE5OTU2LCAKLSAgICA0MTI1NiwgMCwgNjgxMzQsIDAsIDc0MjA5LCA5MTc1NTAsIDkzNDYsIDY5NjYwLCA0MTI1NCwgMTI4MDQ3LCA0MzI5MSwgCi0gICAgMzc2NywgNTczNywgMCwgNDg2NSwgMCwgNTc0MCwgOTE3OTk3LCA1NzM2LCA0MzY4LCA2NDcyNCwgNzE5MywgNjgxMzcsIDAsIAotICAgIDU3MzksIDQxMDI0LCA0ODY2LCAwLCA3MzkwNCwgMCwgNDg2OSwgMTIwNTYzLCAwLCA0MjIzLCAxMjgyMDEsIDY2NTAsIDAsIAotICAgIDAsIDAsIDEyNzg5MCwgNDg3MCwgMTIwNDQ1LCA2ODY2MSwgNjcxNiwgNzgxNzYsIDY4NjY3LCA2ODM4MiwgNjg2NzYsIAotICAgIDEyNzkyNSwgMTAxMjIsIDQ4NjQsIDY2NTY4LCA0MTQ0LCA3OTM3LCAwLCA2MjQ1LCA2ODY1MiwgMjczMiwgNDI3MzQsIDc0NSwgCi0gICAgMCwgMTk1MDk3LCA5MjE5NSwgNDc3NywgNzgyMSwgMCwgNjg2MzEsIDQyNzc1LCAwLCAxOTQ5NTQsIDAsIDMwOTcsIDAsIAotICAgIDU5NjYsIDAsIDQ3NzgsIDAsIDEwODYzLCAwLCA0NzgxLCAwLCA2NDQwNywgMCwgMCwgODU3NywgMTI4NTYyLCA2ODE5NiwgCi0gICAgNDMyODUsIDEwMjE2LCA0NzgyLCAwLCAwLCAxMjA3NTcsIDY4NjE4LCAxMjMyNSwgNDMwNTYsIDg3MTcsIDAsIDAsIDQ3NzYsIAotICAgIDczODE4LCAxMTQ5MiwgODcwMCwgMCwgMTMxNzYsIDY4MzYzLCAxMDQyNiwgMCwgOTE3NTk5LCAxMDM2MiwgMTk0NzA2LCAKLSAgICAxNzE1LCA0ODQ5LCA4MjQyLCA5NTYxLCA3MzkyMiwgNDMyNzgsIDQyNjM1LCAwLCAwLCA1OTYzLCA5MTc5MjYsIDAsIDAsIAotICAgIDQ4NTAsIDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCA0ODU0LCAxMjc5MTgsIDUxNjQsIDAsIDEzNTAsIDUxMjQsIAotICAgIDY0NDIwLCAxOTkzLCA1MzYyLCA4NDcxLCAyNzA4LCA5MjQ3MSwgMTI0NDUsIDM3ODUsIDIzNCwgMzE5OSwgMCwgNDEyNjgsIAotICAgIDQ4NDgsIDI1MzAsIDkxNzkwOSwgMjA2OCwgMTk2NCwgMCwgNzM3NjIsIDEwNDU4LCAwLCA4NTc2LCA3ODU0MywgMCwgMjcwNCwgCi0gICAgNDc5NCwgMCwgNjgyMTEsIDgzMjIsIDQ3OTcsIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIDI0MzksIDY1MTA0LCA2OTgwNCwgCi0gICAgMCwgMzAzLCAwLCA5MjYyMiwgMCwgMjQzNywgMCwgNDIyMSwgNDg0NCwgMTE4ODY5LCAwLCAwLCAwLCAwLCAwLCA0MzI5MiwgCi0gICAgMCwgMjQ0MSwgMTA3MzksIDY1MDkwLCAwLCAxMTkzMjcsIDAsIDI0NTEsIDI3MTQsIDExOTMyNiwgMCwgNDMzNzksIDQ5MzcsIAorICAgIDUzMzEsIDQ2MzQsIDExOTI4LCA5ODM1OTQsIDUzMzgsIDQ2MzcsIDEyODE3MCwgNTk3MSwgNDI0MTQsIDAsIDEyNjgsIAorICAgIDY1MDk3LCA0MjM2MSwgMCwgMCwgNzM4NTMsIDE0MjcsIDAsIDAsIDU5NzAsIDM0MzEsIDAsIDEwMzU4LCAxMDQyMiwgNDc1OCwgCisgICAgOTgzMzY2LCAxNjA4LCAyNzM4LCAwLCAxMDQ1NSwgNDc1MywgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCAKKyAgICA3NDM4NCwgOTgzMzcwLCA2ODM3NywgNjI0OCwgOTgzMzU0LCA5ODMzNTUsIDk4MzM1MiwgNDIzMTgsIDkyNTgyLCA1MjI5LCAKKyAgICA0NzU3LCAwLCAwLCAyNzI4LCA0NzUyLCA2NDU2MywgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMCwgMTA3MTMsIDcxNjYsIDAsIAorICAgIDI2MjIsIDc0NjAsIDEyNzMwMiwgMCwgMCwgODk1NCwgNzQ3NjAsIDY1MTg5LCAyNjMyLCA0MjYxNywgMTAxMDgsIDEwMTEsIAorICAgIDU1NzQsIDE4NTMsIDI3MDksIDY1MTM5LCA1NTc3LCAwLCAwLCAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgCisgICAgNTMxNiwgMCwgNTMxNCwgNjQ1MSwgNTU3MiwgNjY0NjQsIDUzMTIsIDAsIDU1MjUsIDUzMzAsIDUzMTksIDk4MzQxMiwgCisgICAgOTgzODYzLCAxOTQ5MDcsIDQ0MDAzLCAwLCA5ODM0NzIsIDk4MzQxNSwgMTIwNDk4LCAxMjc4NTEsIDE5NTAwOSwgOTgzODU2LCAKKyAgICA3NDAyMiwgOTgzNDE0LCA2NDYwOSwgNjg2NDMsIDEyMDYzNCwgOTgzNDgxLCA1NzIxLCA5ODMzOTMsIDU1MTksIDg2MzIsIAorICAgIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA5ODMzNDQsIDE2OTIsIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIAorICAgIDAsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDk4MzM0NywgNTI4NywgNTMwOSwgNTI4NSwgNjgzODksIDU5NjEsIDQ2NDcsIAorICAgIDU2LCA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgOTgzMzQxLCA5ODMzMzgsIDc3ODQ5LCA0NjA4LCA2NDI2MCwgCisgICAgNDExMjQsIDUxOTAsIDY3NjI4LCAwLCA2ODE0NSwgNzA4NiwgMCwgNjc5OTgsIDY3NjIwLCAwLCAyNzM0LCAxMTA3NCwgMCwgCisgICAgNjc2MjcsIDQzNTkzLCAwLCA2NzYyNSwgNTk2MCwgMCwgODk5MiwgNDI1OTMsIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAKKyAgICAxMTk5MzksIDAsIDY4MTgwLCA1NTAxLCAxMTk5NTIsIDQyNTA4LCA3NDQyLCA0MzY2NSwgMzU5LCA0MTI1MywgNjgzOTIsIAorICAgIDYyMzksIDExOTk1NiwgNDEyNTYsIDAsIDY4MTM0LCAwLCA3NDIwOSwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIAorICAgIDEyODA0NywgNDMyOTEsIDM3NjcsIDU3MzcsIDAsIDQ4NjUsIDAsIDU3NDAsIDkxNzk5NywgNTczNiwgNDM2OCwgNjQ3MjQsIAorICAgIDcxOTMsIDY4MTM3LCAwLCA1NzM5LCA0MTAyNCwgNDg2NiwgMCwgNzM5MDQsIDk4MzgzMSwgNDg2OSwgMTIwNTYzLCAwLCAKKyAgICA0MjIzLCAxMjgyMDEsIDY2NTAsIDEyNjUwOSwgMCwgOTgzNDU1LCAxMjc4OTAsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIDY3MTYsIAorICAgIDc4MTc2LCA2ODY2NywgNjgzODIsIDY4Njc2LCAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgMCwgCisgICAgNjI0NSwgNjg2NTIsIDI3MzIsIDQyNzM0LCA3NDUsIDAsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDAsIDY4NjMxLCAKKyAgICA0Mjc3NSwgMCwgMTk0OTU0LCAwLCAzMDk3LCAwLCA1OTY2LCA5ODM0NzgsIDQ3NzgsIDAsIDEwODYzLCAwLCA0NzgxLCAwLCAKKyAgICA2NDQwNywgMCwgMTI4MzIzLCA4NTc3LCAxMjg1NjIsIDY4MTk2LCA0MzI4NSwgMTAyMTYsIDQ3ODIsIDAsIDAsIDEyMDc1NywgCisgICAgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAwLCAxMzE3NiwgCisgICAgNjgzNjMsIDEwNDI2LCAwLCA5MTc1OTksIDEwMzYyLCAxOTQ3MDYsIDE3MTUsIDQ4NDksIDgyNDIsIDk1NjEsIDczOTIyLCAKKyAgICA0MzI3OCwgNDI2MzUsIDAsIDAsIDU5NjMsIDkxNzkyNiwgMCwgMCwgNDg1MCwgMCwgMTYwNywgNDY2LCA0ODUzLCAxMTg5OTUsIAorICAgIDQ4NTQsIDEyNzkxOCwgNTE2NCwgOTgzODYxLCAxMzUwLCA1MTI0LCA2NDQyMCwgMTk5MywgNTM2MiwgODQ3MSwgMjcwOCwgCisgICAgOTI0NzEsIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDAsIDQxMjY4LCA0ODQ4LCAyNTMwLCA5MTc5MDksIDIwNjgsIDE5NjQsIAorICAgIDAsIDczNzYyLCAxMDQ1OCwgMCwgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDAsIDY4MjExLCA4MzIyLCA0Nzk3LCAKKyAgICA1NzUzLCAwLCAyNjk0LCA0NzkyLCAwLCAyNDM5LCA2NTEwNCwgNjk4MDQsIDk4MzQxNiwgMzAzLCA5ODMxMDEsIDkyNjIyLCAKKyAgICA5ODM0MTcsIDI0MzcsIDAsIDQyMjEsIDQ4NDQsIDkyMjE2LCAwLCAwLCAwLCA3MDA0MiwgMCwgNDMyOTIsIDAsIDI0NDEsIAorICAgIDEwNzM5LCA2NTA5MCwgMCwgMTE5MzI3LCAxMjY1NDEsIDI0NTEsIDI3MTQsIDExOTMyNiwgMCwgNDMzNzksIDQ5MzcsIAogICAgIDQzMzc2LCA3NTMsIDU4NDksIDEwNTk3LCA0MzA4OSwgMTE3MjIsIDkyNDgsIDkyNTU1LCA0Mjg3OSwgMTE3MjUsIDAsIDAsIAogICAgIDI3MjYsIDMxMDcsIDczOTU4LCA0OTQxLCA2NDkzNywgMTE5MjMzLCA5MTQwLCAxNDA4LCA1MjYxLCA0NjA3LCAwLCAxODEsIAotICAgIDAsIDQ5NDIsIDk1MzksIDQ5MzgsIDAsIDY1MjAxLCA1MjU5LCA5MzY5LCA2NDE4NSwgNDE0MiwgNTI1NywgMCwgMCwgNDk2NCwgCi0gICAgNTI2NCwgNjQxNzgsIDY0MTc3LCAxMjk3OSwgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIDY0MTc5LCA5NDgyLCA0ODczLCAKLSAgICA0MTIzMSwgMTgyMiwgNDI1MjYsIDEyODU4MSwgMTI3NTgsIDM4NjUsIDAsIDAsIDEwNTAwLCAwLCAwLCA3ODAyOCwgMCwgCi0gICAgOTgzMCwgNDM2NDIsIDM4OSwgMTA4OTMsIDc1MjEsIDEyNzg3OSwgNDg3MiwgNTQ2MywgMCwgMzEyNSwgOTU2NywgMCwgCi0gICAgNDg3OCwgNTQ1OSwgNDYwNCwgOTE3OTMxLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgMTE0OTQsIDAsIDk1NjMsIDEwODY1LCAKLSAgICA3NDU3MCwgNDMyNzksIDY0MTg2LCAwLCA3ODcxNCwgNjQxOTEsIDY0MTkwLCA4ODk4LCA2NDE4OCwgMCwgNDEwMzAsIAotICAgIDc4ODM2LCAwLCA5MTc4MzUsIDc4ODIwLCA5MTc4MzQsIDAsIDc4ODA1LCA0MTAzMSwgNzg4MDEsIDExOTYwLCA2NzQ1LCAKLSAgICAzMDgyLCAwLCA3ODUzOSwgNzM5MTksIDEwNTczLCA0MTc0NCwgNzA3OSwgNTg1NiwgMTI3MDQzLCA1MTYzLCA3ODgwOSwgCi0gICAgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIDAsIDEwNTY0LCA3NzYzLCAxMzA3NywgNDE4MTMsIDQ0MDAsIDQxNzQ1LCAKLSAgICA2NDIwNywgMTAyNzUsIDg5MjUsIDEwMzcxLCAxMDMwNywgNDE4MTQsIDQyNDgsIDAsIDAsIDQ1NDEsIDYyOTksIDY0MjA0LCAKLSAgICA2NDIwMywgNjQyMDEsIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDAsIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCAKLSAgICA2NTIyMywgOTk0MywgNjQxOTcsIDY0MTk2LCA2NDE5NSwgNjQxOTQsIDEzMjgyLCA2NDE3NSwgNjQxNzQsIDY0MTczLCAKLSAgICA3ODE4OSwgODQ2LCA3ODE4NiwgOTk2NSwgMCwgMCwgMCwgMCwgMjU0MywgMTIxNjMsIDMxMDgsIDk3NDUsIDY0MTY3LCAKLSAgICA2NDE2NiwgNjQxNjUsIDY0MTY0LCAyMTEwLCA5MjE3NiwgNjQxNjksIDY0MTY4LCA2NDk0OSwgMTA5NzIsIDEwMjUxLCAKLSAgICAxMDI0NywgNDI3NjgsIDcxNSwgNjQxNjEsIDQzMjk5LCA5NDUzLCA1MzQ4LCAxMDk0MywgMTIwMzc4LCAwLCAxMTM1MiwgCi0gICAgNTUwLCA5OTEwLCAwLCAwLCA2NjU3OSwgMTE1NTEsIDAsIDE5NTA4MCwgOTUwNCwgNzE4NywgMCwgMTAzNzMsIDAsIAotICAgIDEyMDc5MSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCA2NTIyMiwgNjk5OCwgCi0gICAgNzgxODAsIDAsIDMxMjgsIDQ3ODksIDUwNjcsIDUwNjYsIDExODg0OSwgNDc4NCwgMCwgODgyNywgMTE0NiwgNTA2NSwgCi0gICAgNzgxOTYsIDc4MTkyLCA2ODEzNiwgNzgxOTAsIDQzNDEyLCA1MDY0LCAyNDMxLCAwLCA5NDUwLCAxODA5LCAwLCA3ODIwMCwgCi0gICAgNzgyMDEsIDUwNjIsIDEyNjQsIDY0ODE3LCAxMzI1NCwgMTE2OTcsIDAsIDk3ODUsIDY0NzE2LCAwLCAzOTMzLCA3NDU1OSwgCi0gICAgNDc0MCwgNzk1NCwgMCwgMCwgNDI2MDksIDAsIDc0MTc1LCAwLCAxMjcwMTYsIDAsIDAsIDQyMTMwLCAwLCA1MTUxLCAKLSAgICA5MTc4MjksIDkxNzgyMywgMCwgMCwgMCwgNzYyMCwgMzgwMCwgNjUxMjIsIDAsIDAsIDgzNTUsIDc4NTQsIDAsIDk1NCwgCi0gICAgNjQ5MjcsIDQxODUsIDQxMDQ1LCAxMjcxNDEsIDQxNDM4LCA0MTQzOSwgNjg2NjYsIDEwNzExLCA0NTkzLCAxMjc3NDUsIAotICAgIDEyMDU4NCwgMCwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgMCwgMCwgMCwgNjQ3NTksIDYzODEsIDUxNjYsIDk4ODgsIAotICAgIDEyNzgwMCwgNTE0OCwgNDI4MzQsIDAsIDc4MjA1LCA3ODIwNiwgNDM3ODcsIDc4MjA0LCA2NDEzMSwgMzExOSwgOTE3ODE0LCAKLSAgICAwLCAzMDYwLCA2NDEzNSwgOTk4NiwgMCwgNzc4NzYsIDYzNiwgMTE2OTgsIDAsIDAsIDk5MTYsIDExNzAxLCA3ODM2LCAKLSAgICA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCA4ODYzLCA5MjQzMSwgMTE5OTYwLCAxNDc3LCA0MzI4OSwgMCwgNzQzNTgsIAotICAgIDg2MTgsIDAsIDk5MDgsIDAsIDAsIDAsIDM5MzcsIDEyMzEyLCAwLCAwLCAwLCA2NDc4MSwgOTEyLCA2MzQ5LCA0NTM2LCAKLSAgICAxMTk5NjMsIDc0NTMyLCAwLCA2MjQ0LCAwLCAxOTQ1ODAsIDM5MzUsIDEyMDY2NSwgMCwgMCwgMTE5NTAsIDUzOTIsIAotICAgIDQyMjQ4LCA2NTEyOSwgNjg2NTYsIDUzOTcsIDAsIDEyMDQ2LCAxMjU5OSwgMCwgMCwgNTM5NSwgMCwgNTM5MywgMzU0LCAKLSAgICA2ODYxNSwgMTE5OTQ4LCA3ODUwMywgMCwgMCwgNDIwMzksIDAsIDAsIDY0MTQyLCA2MjYsIDAsIDU4OTUsIDAsIDAsIDU3ODAsIAotICAgIDAsIDAsIDEyODg3NCwgMCwgMCwgNDMyOTcsIDAsIDQzMTEsIDQ2NDQsIDg4MTgsIDAsIDEyODE4NiwgMCwgNzE0NSwgMzkxOCwgCi0gICAgNjY0NTIsIDM3OTcsIDE2NDQsIDkyMzQ2LCA5NjU4LCA0MTQwLCAxMTM4NSwgNjU5NDcsIDY0NTUsIDkwMzAsIDgxMywgCi0gICAgMTE5OTQ1LCA2ODEzMSwgNDE0NiwgMTE5OTU3LCA1MzYwLCAyNDY2LCAwLCA2NzY2OSwgMTE5OTQyLCA2MjQ5LCA0MjExNywgCi0gICAgOTIyODcsIDEyODIyNCwgMCwgMCwgNzQwNDYsIDEyMDU4MywgNDkxMSwgOTg4LCA5MTc4MDcsIDAsIDAsIDQzMDYxLCA3MDU0LCAKKyAgICA5ODM0MjIsIDQ5NDIsIDk1MzksIDQ5MzgsIDAsIDY1MjAxLCA1MjU5LCA5MzY5LCA2NDE4NSwgNDE0MiwgNTI1NywgCisgICAgOTgzNjAxLCAwLCA0OTY0LCA1MjY0LCA2NDE3OCwgNjQxNzcsIDEyOTc5LCA0MTQxMSwgNjQxODIsIDY0MTgxLCA2NDE4MCwgCisgICAgNjQxNzksIDk0ODIsIDQ4NzMsIDQxMjMxLCAxODIyLCA0MjUyNiwgMTI4NTgxLCAxMjc1OCwgMzg2NSwgMCwgMCwgMTA1MDAsIAorICAgIDAsIDExOTAyNCwgNzgwMjgsIDkyNDA4LCA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCAKKyAgICA1NDYzLCAwLCAzMTI1LCA5NTY3LCAwLCA0ODc4LCA1NDU5LCA0NjA0LCA5MTc5MzEsIDk1NTcsIDU0NjUsIDY4NjE3LCAwLCAKKyAgICAxMTQ5NCwgMTI2NDkyLCA5NTYzLCAxMDg2NSwgNzQ1NzAsIDQzMjc5LCA2NDE4NiwgOTgzNDMxLCA3ODcxNCwgNjQxOTEsIAorICAgIDY0MTkwLCA4ODk4LCA2NDE4OCwgMCwgNDEwMzAsIDc4ODM2LCAwLCA5MTc4MzUsIDc4ODIwLCA5MTc4MzQsIDAsIDc4ODA1LCAKKyAgICA0MTAzMSwgNzg4MDEsIDExOTYwLCA2NzQ1LCAzMDgyLCA5ODM0MjksIDc4NTM5LCA3MzkxOSwgMTA1NzMsIDQxNzQ0LCAKKyAgICA3MDc5LCA1ODU2LCAxMjcwNDMsIDUxNjMsIDc4ODA5LCAxMjgxNjIsIDE4MTcsIDY2NzI0LCA3ODUzOCwgMCwgMTA1NjQsIAorICAgIDc3NjMsIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIDY0MjA3LCAxMDI3NSwgODkyNSwgMTAzNzEsIDEwMzA3LCA0MTgxNCwgCisgICAgNDI0OCwgMCwgMCwgNDU0MSwgNjI5OSwgNjQyMDQsIDY0MjAzLCA2NDIwMSwgNjQyMDAsIDY0MTk5LCA2NDE5OCwgMTI2NDcxLCAKKyAgICA0MjE1NiwgNzg2ODgsIDAsIDY0MTkzLCA2NDE5MiwgNjUyMjMsIDk5NDMsIDY0MTk3LCA2NDE5NiwgNjQxOTUsIDY0MTk0LCAKKyAgICAxMzI4MiwgNjQxNzUsIDY0MTc0LCA2NDE3MywgNzgxODksIDg0NiwgNzgxODYsIDk5NjUsIDAsIDAsIDAsIDAsIDI1NDMsIAorICAgIDEyMTYzLCAzMTA4LCA5NzQ1LCA2NDE2NywgNjQxNjYsIDY0MTY1LCA2NDE2NCwgMjExMCwgOTIxNzYsIDY0MTY5LCA2NDE2OCwgCisgICAgNjQ5NDksIDEwOTcyLCAxMDI1MSwgMTAyNDcsIDQyNzY4LCA3MTUsIDIyOTUsIDQzMjk5LCA5NDUzLCA1MzQ4LCAxMDk0MywgCisgICAgMTIwMzc4LCAwLCAxMTM1MiwgNTUwLCA5OTEwLCAxMjY3MDUsIDAsIDY2NTc5LCAxMTU1MSwgMCwgMTk1MDgwLCA5NTA0LCAKKyAgICA3MTg3LCAwLCAxMDM3MywgMCwgMTIwNzkxLCAxMDI2MSwgMTAyNTMsIDY0MDQsIDEwMjc3LCA3ODE4MywgMTE5ODQsIDE1NTIsIAorICAgIDY1MjIyLCA2OTk4LCA3ODE4MCwgMCwgMzEyOCwgNDc4OSwgNTA2NywgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAwLCA4ODI3LCAKKyAgICAxMTQ2LCA1MDY1LCA2OTg5MCwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgNDM0MTIsIDUwNjQsIDI0MzEsIDAsIDk0NTAsIDE4MDksIAorICAgIDAsIDc4MjAwLCA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIDEzMjU0LCAxMTY5NywgMTI2NTk4LCA5Nzg1LCA2NDcxNiwgMCwgCisgICAgMzkzMywgNzQ1NTksIDQ3NDAsIDc5NTQsIDAsIDAsIDQyNjA5LCAwLCA3NDE3NSwgMCwgMTI3MDE2LCAwLCA5ODM4NjQsIAorICAgIDQyMTMwLCAwLCA1MTUxLCA5MTc4MjksIDkxNzgyMywgMCwgOTM5ODAsIDAsIDc2MjAsIDM4MDAsIDY1MTIyLCAwLCAwLCAKKyAgICA4MzU1LCA3ODU0LCAwLCA5NTQsIDY0OTI3LCA0MTg1LCA0MTA0NSwgMTI3MTQxLCA0MTQzOCwgNDE0MzksIDY4NjY2LCAKKyAgICAxMDcxMSwgNDU5MywgMTI3NzQ1LCAxMjA1ODQsIDk4MzQwMCwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgMCwgMCwgMCwgCisgICAgNjQ3NTksIDYzODEsIDUxNjYsIDk4ODgsIDEyNzgwMCwgNTE0OCwgNDI4MzQsIDAsIDc4MjA1LCA3ODIwNiwgNDM3ODcsIAorICAgIDc4MjA0LCA2NDEzMSwgMzExOSwgOTE3ODE0LCAwLCAzMDYwLCA2NDEzNSwgOTk4NiwgMCwgNzc4NzYsIDYzNiwgMTE2OTgsIAorICAgIDAsIDk4MzQ0MywgOTkxNiwgMTE3MDEsIDc4MzYsIDQyNzQxLCA2NDEzNywgODMyMCwgNzg2NDAsIDg4NjMsIDkyNDMxLCAKKyAgICAxMTk5NjAsIDE0NzcsIDQzMjg5LCAwLCA3NDM1OCwgODYxOCwgOTgzMzk0LCA5OTA4LCA5ODM5NzIsIDAsIDAsIDM5MzcsIAorICAgIDEyMzEyLCAwLCA5ODMzOTUsIDAsIDY0NzgxLCA5MTIsIDYzNDksIDQ1MzYsIDkzOTU0LCA3NDUzMiwgMTI2NTk0LCA2MjQ0LCAKKyAgICA5MjIwOSwgNzEzNDEsIDM5MzUsIDEyMDY2NSwgOTgzNDY4LCAwLCAxMTk1MCwgNTM5MiwgNDIyNDgsIDY1MTI5LCA2ODY1NiwgCisgICAgNTM5NywgMCwgMTIwNDYsIDEyNTk5LCAwLCAxMjgyNjEsIDUzOTUsIDAsIDUzOTMsIDM1NCwgNjg2MTUsIDExOTk0OCwgCisgICAgNzg1MDMsIDAsIDAsIDQyMDM5LCAwLCAwLCA2NDE0MiwgNjI2LCAwLCA1ODk1LCAwLCAwLCA1NzgwLCAwLCAwLCAxMjg4NzQsIAorICAgIDAsIDAsIDQzMjk3LCA5ODMwNzksIDQzMTEsIDQ2NDQsIDg4MTgsIDAsIDEyODE4NiwgMCwgNzE0NSwgMzkxOCwgNjY0NTIsIAorICAgIDM3OTcsIDE2NDQsIDkyMzQ2LCA5NjU4LCA0MTQwLCAxMTM4NSwgNjU5NDcsIDY0NTUsIDkwMzAsIDgxMywgMTE5OTQ1LCAKKyAgICA2ODEzMSwgNDE0NiwgMTE5OTU3LCA1MzYwLCAyNDY2LCAwLCA2NzY2OSwgMTE5OTQyLCA2MjQ5LCA0MjExNywgOTIyODcsIAorICAgIDEyODIyNCwgMCwgMCwgNzQwNDYsIDQzNzQ1LCA0OTExLCA5ODgsIDkxNzgwNywgMCwgOTgzNDYwLCA0MzA2MSwgNzA1NCwgCiAgICAgNjQxNDcsIDAsIDY0OTIwLCA2ODE5NSwgNjY5OCwgMTE4OTMzLCA5MjUwNiwgMCwgMTIwMDA2LCAxMTk4MSwgMTIyMDIsIDAsIAogICAgIDExMDMyLCA2NzY1NCwgNjA5MywgMTE2MDgsIDk3NSwgNjg2NjIsIDY1ODQzLCAxNzAsIDAsIDAsIDQxNjksIDAsIDQxODU5LCAKICAgICA2MDU4LCAxMjA0MDEsIDEzMjAzLCAxMjA2NTcsIDAsIDAsIDY4NjU3LCA5ODE4LCAxMDE3OCwgMTAzMjQsIDQyMTA2LCAKICAgICA1ODk4LCA3NDU0MCwgNDczOCwgNDE4NTYsIDcwNjIsIDkxNzg2NSwgNDczNywgMTE3NzksIDQ3NDIsIDEyMDU2NCwgOTIzOTEsIAotICAgIDczNzM2LCAwLCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDAsIDkyNTI1LCAwLCA1MzAwLCA0NzQxLCA0MjEwOCwgCi0gICAgMCwgNjQxNTksIDQ3MzYsIDY0MTQ4LCAwLCA4NDksIDkyMTkxLCA3ODQ5MSwgNDMyODgsIDAsIDY2NjIwLCAwLCAxMjczMzEsIAotICAgIDY1NTQ5LCA5NDk2LCA2NDU5OCwgMTE4ODY2LCAwLCA3ODc2LCA2ODEzMiwgOTE3ODcyLCAzOTI4LCA5MTc4NzAsIDQzMzc4LCAKLSAgICAxMDcwNiwgNzE5OCwgMCwgNDg0MiwgMTIwNTMsIDEyODEyOSwgMCwgNDg0MSwgMCwgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIAotICAgIDE0OTAsIDAsIDExOTU5MSwgMCwgNDA5NzIsIDUyNDUsIDAsIDEwMTE0LCA0MjAwMSwgNDE4ODgsIDQ4NDUsIDgzMzIsIAotICAgIDQwOTc0LCA2NDM0NywgNDg0MCwgOTA3NywgNzgzNDYsIDE3NDcsIDkxNzg0OSwgNDgyNSwgNjkyNDAsIDkxNzg1MiwgCi0gICAgNjg2NTUsIDAsIDAsIDAsIDAsIDY4NjI4LCAwLCA5ODUwLCAxMTg5MzcsIDM2NywgMTQ3MiwgOTE3ODU5LCA2Njg3LCAxMjc0LCAKLSAgICAwLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgMTEwMjMsIDExOTU1OSwgNDgzMCwgOTEzNCwgCi0gICAgNzg2NjYsIDY0MTI2LCA0MzAxMSwgMCwgMCwgNjQxMDEsIDAsIDAsIDQ4MjQsIDEwNjE0LCAxMjAzOTAsIDAsIDE4ODgsIAotICAgIDE5NjAsIDc4NjEsIDkxNzg1NiwgNzg1MjQsIDQxODM2LCA0MzAxMiwgNjA1MiwgNjA2NCwgNTQsIDQzMDA5LCAxMjIxNCwgMCwgCi0gICAgNjIxMSwgMCwgMzU4LCA0MTk5NywgNDE4MzMsIDExNDQyLCAxMDc1OCwgNjU3NzQsIDAsIDEyMDM4NCwgNjQxMTUsIDkyMjIxLCAKLSAgICAwLCAwLCAwLCAxMTkwNTMsIDAsIDEyNzY1LCA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMCwgMCwgNDAxNywgMTI4MjcsIDUyNDEsIAotICAgIDEyMDM5MiwgMCwgNDExMTgsIDM5MjQsIDAsIDExMzY2LCA5MTc4NDMsIDAsIDAsIDkxNzg0NiwgNDExMTYsIDkxNzg0NCwgCi0gICAgOTE3NTY0LCAwLCAxMTM2MywgMTIwNTcsIDExOTE3LCAxNTY3LCA3NDAwMCwgNDcyMSwgMCwgNjYyMDIsIDg5NTcsIDQxMzksIAotICAgIDAsIDAsIDAsIDAsIDAsIDEyNzQwLCAxMjg3MDIsIDQ3MjIsIDY4MTYsIDEyNzc5MywgMTI3NTksIDQ3MjUsIDAsIDQ3MjYsIAotICAgIDAsIDAsIDAsIDkxNzkwNCwgOTE3OTA1LCAwLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDAsIDgwNTIsIDQ3NiwgMCwgMCwgCi0gICAgMTI4Mjk0LCA2NDIxMiwgNDEwMjAsIDEzODIsIDY0MjA5LCA2NDIxNiwgNjQyMTUsIDY0MjE0LCAxNjU2LCA0MTgzMSwgMCwgCisgICAgNzM3MzYsIDk4MzM1NiwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCAwLCA5MjUyNSwgMCwgNTMwMCwgNDc0MSwgCisgICAgNDIxMDgsIDk4MzM0NiwgNjQxNTksIDQ3MzYsIDY0MTQ4LCAwLCA4NDksIDkyMTkxLCA3ODQ5MSwgNDMyODgsIDAsIDY2NjIwLCAKKyAgICA5MTc5MTYsIDEyNzMzMSwgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDk4MzM1OCwgNzg3NiwgNjgxMzIsIDkxNzg3MiwgCisgICAgMzkyOCwgOTE3ODcwLCA0MzM3OCwgMTA3MDYsIDcxOTgsIDAsIDQ4NDIsIDEyMDUzLCAxMjgxMjksIDAsIDQ4NDEsIDAsIAorICAgIDQxNzEsIDEyMDA4LCA2MjUxLCAzOTIzLCAxNDkwLCAwLCAxMTk1OTEsIDEyNjUxMiwgNDA5NzIsIDUyNDUsIDAsIDEwMTE0LCAKKyAgICA0MjAwMSwgNDE4ODgsIDQ4NDUsIDgzMzIsIDQwOTc0LCA2NDM0NywgNDg0MCwgOTA3NywgNzgzNDYsIDE3NDcsIDkxNzg0OSwgCisgICAgNDgyNSwgNjkyNDAsIDkxNzg1MiwgNjg2NTUsIDAsIDk4MzM4MCwgMCwgMCwgNjg2MjgsIDk4MzMzOSwgOTg1MCwgMTE4OTM3LCAKKyAgICAzNjcsIDE0NzIsIDkxNzg1OSwgNjY4NywgMTI3NCwgMCwgNTkwNSwgMTIzMzksIDg5MTksIDczOTUzLCAxMDkwNywgNjUyNjEsIAorICAgIDExMDIzLCAxMTk1NTksIDQ4MzAsIDkxMzQsIDc4NjY2LCA2NDEyNiwgNDMwMTEsIDAsIDEyNjYyNiwgNjQxMDEsIDAsIDAsIAorICAgIDQ4MjQsIDEwNjE0LCAxMTk2NTksIDAsIDE4ODgsIDE5NjAsIDc4NjEsIDkxNzg1NiwgNzg1MjQsIDQxODM2LCA0MzAxMiwgCisgICAgNjA1MiwgNjA2NCwgNTQsIDQzMDA5LCAxMjIxNCwgMCwgNjIxMSwgMCwgMzU4LCA0MTk5NywgNDE4MzMsIDExNDQyLCAKKyAgICAxMDc1OCwgNjU3NzQsIDAsIDEyMDM4NCwgNjQxMTUsIDkyMjIxLCA3MDAxOCwgMCwgMCwgMTE5MDUzLCAwLCAxMjc2NSwgCisgICAgNjQxMTgsIDEyNjk5OCwgMTI5NjIsIDAsIDEyNjU4MCwgNDAxNywgMTI4MjcsIDUyNDEsIDEyMDM5MiwgMCwgNDExMTgsIAorICAgIDM5MjQsIDAsIDExMzY2LCA5MTc4NDMsIDAsIDAsIDkxNzg0NiwgNDExMTYsIDkxNzg0NCwgOTE3NTY0LCAwLCAxMTM2MywgCisgICAgMTIwNTcsIDExOTE3LCAxNTY3LCA3NDAwMCwgNDcyMSwgMTI2NjQxLCA2NjIwMiwgODk1NywgNDEzOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTI3NDAsIDEyODcwMiwgNDcyMiwgNjgxNiwgMTI3NzkzLCAxMjc1OSwgNDcyNSwgOTgzMzc1LCA0NzI2LCAwLCAKKyAgICAxOTQ4OTIsIDAsIDEyODMyMSwgOTE3OTA1LCAwLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDAsIDgwNTIsIDQ3NiwgMCwgMCwgCisgICAgMTI4Mjk0LCA2NDIxMiwgNDEwMjAsIDEzODIsIDY0MjA5LCA2NDIxNiwgNDQwMDIsIDY0MjE0LCAxNjU2LCA0MTgzMSwgMCwgCiAgICAgMCwgNDE4NDMsIDg3MjAsIDM5MDgsIDE0NTIsIDEzMTExLCAwLCA2NDA2NywgMTI3MzI4LCA4NTUyLCA2NDExMywgNDE4NDUsIAogICAgIDM4NDksIDc4NzMyLCA2NjIzMiwgOTc3OCwgMTIwMDY2LCA1ODkxLCA3MDY0LCA1NSwgOTk0OCwgMTE5MDg1LCAwLCAwLCAKLSAgICA3OTM1LCAyNDIwLCAwLCAxMTE0LCA5MjU5OSwgNjc1ODUsIDc4Njc1LCAxMjAwNTMsIDkyMzUwLCAxMjAwNTEsIDM5MzgsIAorICAgIDc5MzUsIDI0MjAsIDAsIDExMTQsIDkyNTk5LCA2NzU4NSwgNzAxMDQsIDEyMDA1MywgOTIzNTAsIDEyMDA1MSwgMzkzOCwgCiAgICAgMTIwMDU3LCA2NTQxNywgNjQ3MTcsIDEyMDA2MCwgMTIwMDYxLCA2NTQxNSwgMTIwMDU5LCA2MjkyLCA2NTMwMywgNzk1NSwgCiAgICAgNjQ1MiwgNDcxMywgMTI4MTk2LCA2NjI0OSwgOTE3ODg1LCA5MTc4OTAsIDkxNzg5MSwgNjUxNTIsIDcxOSwgMTIwMDQ0LCAKICAgICA3ODYyMywgMTIwMDQyLCA2NzEzLCA0NTMyLCA2NTQxMiwgNjk4MjIsIDEwODY4LCA0NzE3LCAyMzQ5LCA1OTAyLCA2NjQ1MCwgCiAgICAgNDcxMiwgOTE3OTAyLCA5MTc4OTksIDkxNzkwMCwgNjU0MTYsIDgxNTUsIDQ3MTgsIDM5NDIsIDQ3MTQsIDk2MjUsIDAsIAotICAgIDYzODMsIDE5NDc0NCwgMTIwMDYsIDEyODU2NSwgMCwgMCwgMCwgMCwgNjU0MTQsIDY0NTQsIDEyMjksIDAsIDY2NDM3LCAKLSAgICA2NjAyNSwgNzg2OTksIDAsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDkxNzg3NCwgNzg2OTQsIDkxNzg4MCwgCisgICAgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAwLCAwLCAwLCAwLCA2NTQxNCwgNjQ1NCwgMTIyOSwgMTI2NjA2LCAKKyAgICA2NjQzNywgNjYwMjUsIDc4Njk5LCAwLCA0MjUwMCwgMTIwNTA4LCA0ODA5LCA5NjIzLCA5MTc4NzQsIDc4Njk0LCA5MTc4ODAsIAogICAgIDkxNzg3NywgOTE3ODc4LCA2NTQwNSwgNjgxNTksIDEyODkzLCA5MTc4ODIsIDUzNjUsIDQ1NDUsIDg5MDEsIDkyNDIxLCAKICAgICAxMTk1NTUsIDQ4MTMsIDEyODI2MiwgMCwgNTkyNSwgNDgwOCwgNjQzMzAsIDAsIDY1NDc1LCAxMTg5NDAsIDE5NTAyOCwgCi0gICAgNDgxNCwgMCwgNDgxMCwgMCwgMCwgNjQ5MjgsIDEwNTQzLCAwLCAzNTIyLCAwLCA0MTQsIDY1NDA0LCAwLCAxOTUwMjcsIAorICAgIDQ4MTQsIDAsIDQ4MTAsIDAsIDAsIDY0OTI4LCAxMDU0MywgMCwgMzUyMiwgNzEzMzUsIDQxNCwgNjU0MDQsIDAsIDE5NTAyNywgCiAgICAgNjQ1NiwgNzM4MjAsIDAsIDY2OTEsIDQyMTkzLCA5MjIyNSwgMTI4MTcxLCAwLCA3NDQ5NSwgMCwgMCwgMCwgMTE4ODIwLCAKICAgICA5NzUxLCA2NTQwNywgMTI4MDg1LCAxMTc3MCwgMzkxOSwgMCwgMCwgNjUwNjEsIDAsIDAsIDAsIDEyMjM1LCAwLCAwLCAKLSAgICAxMjcyMzMsIDY0MDkyLCAwLCA2NDA4MCwgMCwgNjQwOTAsIDAsIDAsIDEwMTYyLCAxMDMxMCwgMCwgODQ1NCwgMTI3ODg4LCAKLSAgICA0MjAzOCwgMzg3LCA0MTM2MywgMTI3MzcsIDAsIDQ3ODAsIDQzMzY4LCAwLCA2NDMxMCwgNjQ2MjEsIDY3MzIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDg4OTYsIDAsIDM3NSwgNjk3NiwgNjY1ODIsIDExOTAwNSwgMCwgMCwgMCwgMTE5MjAyLCAxMTkyMDMsIDEyNTI2LCAKLSAgICA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAwLCA0NTI5LCAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAxMTkxOTksIAotICAgIDY5NjkyLCAwLCA2OTY5OCwgMTMxNTAsIDY0NDkyLCAwLCAwLCAwLCAxMjkwMiwgMCwgNDI4OTEsIDY2MzI3LCA3NDI5OCwgMCwgCi0gICAgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgMCwgNDE5MywgOTIyNTAsIDQyNDEsIDAsIDc5OTgsIDAsIDAsIDAsIDAsIAotICAgIDIzMTYsIDExODgyMSwgMCwgMCwgMCwgNjQyOTcsIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDAsIDUzNzMsIDAsIDAsIDM3NjIsIAotICAgIDEwMDE1LCAxMjczMzUsIDExOTIzMiwgMCwgNDE1OTAsIDAsIDkyMzc4LCAzNzgwLCA3NDg1LCA1Nzc5LCAwLCA0MjAzNywgMCwgCi0gICAgMzkwNiwgMTIzNDksIDAsIDgzMjYsIDAsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAzNzc5LCAwLCA0MzYxMywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjgwLCA3NDU1OCwgMTI3MzMyLCA2ODEzOCwgMTMwNzIsIDE4OTQsIDAsIDAsIDY1NDc4LCAKLSAgICA0MzMxMCwgNzIzMSwgMCwgMTE3NzMsIDAsIDAsIDAsIDAsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCAwLCAxMTkyMzcsIAotICAgIDAsIDEyODgwNSwgNDQ3MCwgMTE5NjEzLCA5MTc1NTcsIDc3ODAsIDUzNjksIDExODk1OCwgNTI0OSwgMCwgNTM2NywgODc1NiwgCi0gICAgMTI3MTQzLCAwLCA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgMCwgNjk2ODUsIDAsIDAsIDAsIDQ0MDIwLCAKLSAgICA2ODA4LCA0MTMxOSwgMTMwMCwgMTA2NTAsIDQxNjkyLCA2NDUwNSwgNDY2OCwgMCwgMTE5NjI0LCAxNDY1LCAxMDg1MCwgCisgICAgMTI3MjMzLCA2NDA5MiwgOTgzNDYyLCA2NDA4MCwgMCwgNjQwOTAsIDAsIDY5OTEzLCAxMDE2MiwgMTAzMTAsIDAsIDg0NTQsIAorICAgIDEyNzg4OCwgNDIwMzgsIDM4NywgNDEzNjMsIDEyNzM3LCAwLCA0NzgwLCA0MzM2OCwgMCwgNjQzMTAsIDY0NjIxLCA2NzMyLCAKKyAgICA3ODExNiwgMCwgOTgzMTM5LCAwLCA5ODMwNzQsIDg4OTYsIDAsIDM3NSwgNjk3NiwgNjY1ODIsIDExOTAwNSwgOTgzODY1LCAKKyAgICAwLCA5ODM0MjYsIDExOTIwMiwgMTE5MjAzLCAxMjUyNiwgNDMxMjAsIDIzMTUsIDAsIDE5MzgsIDExOTE5NywgMCwgNDUyOSwgCisgICAgMTE5MjAwLCAxMTkyMDEsIDExOTE5OCwgMTE5MTk5LCA2OTY5MiwgOTgzNDI0LCA2OTY5OCwgMTMxNTAsIDY0NDkyLCAwLCAwLCAKKyAgICAyMjkxLCAxMjkwMiwgMCwgNDI4OTEsIDY2MzI3LCA3NDI5OCwgOTE3ODU3LCAxMDc5OSwgNjk2OTAsIDI1ODcsIDY2MzcyLCAKKyAgICAwLCA0MTkzLCA5MjI1MCwgNDI0MSwgOTgzMDU3LCA3OTk4LCAwLCAwLCAwLCAxMjY2NDAsIDIzMTYsIDExODgyMSwgMCwgMCwgCisgICAgMCwgNjQyOTcsIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDAsIDUzNzMsIDAsIDk4Mzg3NywgMzc2MiwgMTAwMTUsIDEyMDY3MiwgCisgICAgMTE5MjMyLCAwLCA0MTU5MCwgMCwgNzAwOTgsIDM3ODAsIDc0ODUsIDU3NzksIDAsIDQyMDM3LCAwLCAzOTA2LCAxMjM0OSwgCisgICAgMCwgODMyNiwgMCwgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIDM3NzksIDAsIDQzNjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyODAsIDc0NTU4LCAxMjczMzIsIDY4MTM4LCAxMzA3MiwgMTg5NCwgMCwgMCwgNjU0NzgsIDQzMzEwLCA3MjMxLCAwLCAKKyAgICAxMTc3MywgMCwgMCwgMCwgMCwgMjU1MSwgMCwgNjQ1MywgMTAyMDAsIDYyMzUsIDk4Mzc0MywgMTE5MjM3LCAwLCAxMjg4MDUsIAorICAgIDQ0NzAsIDExODI2LCA5MTc1NTcsIDc3ODAsIDUzNjksIDExODk1OCwgNTI0OSwgMCwgNTM2NywgODc1NiwgMTI3MTQzLCAwLCAKKyAgICA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgOTgzMzQ4LCA2OTY4NSwgOTgzNzQ3LCAwLCAwLCA0NDAyMCwgCisgICAgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIDIyOTAsIDAsIDExOTYyNCwgMTQ2NSwgMTA4NTAsIAogICAgIDM5NDMsIDAsIDQxMjA1LCA0MTMxNSwgMTE4OTYxLCAwLCAwLCA1MzUyLCAwLCAwLCA4ODM5LCA0MTMxNCwgNzM4NCwgNzc4NSwgCiAgICAgNDEyMDQsIDEyNzMyMiwgNDEyMDksIDY5NjM3LCA5MjI0MSwgNDM2MDcsIDAsIDAsIDU0MjAsIDM4OTcsIDEwMTM0LCAwLCAKICAgICA3NDQxNywgNDAxOCwgNzE1MCwgNjgxMjcsIDAsIDAsIDAsIDAsIDEyNzUyNiwgMjU2MSwgNjg2MjEsIDM1NDIsIDcxNDgsIAogICAgIDEyMDc2LCA3OTUxLCA2ODE1MiwgMTE4ODU3LCA1MzAzLCA2Mjc2LCAxNzA2LCAwLCA3ODc1MSwgNzE0NiwgMCwgNjUxNTAsIAotICAgIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCA4NjAsIDAsIDEwNTA2LCAwLCA2OTY0MSwgMTA3NTMsIAorICAgIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCA4NjAsIDAsIDEwNTA2LCA5ODM0MjcsIDY5NjQxLCAxMDc1MywgCiAgICAgMTA4MzAsIDAsIDYxNSwgNjQ0OTAsIDc1NzQsIDkyNjE3LCA3NzkyMiwgMCwgMTI5MDksIDQzMDE2LCA2NDU1OSwgMTI3MDI4LCAKLSAgICAwLCAwLCAwLCAyMDIwLCAwLCA0MDIyLCAxMjg3ODMsIDAsIDc3OTIzLCAwLCA0MTY5MSwgMCwgMCwgNzQzMjksIDAsIAotICAgIDY0NjIyLCA5MDcwLCAwLCA2ODQxMSwgMzkxMSwgNDI4MjksIDQzMTIyLCAxMDMzLCA3NDQ0MCwgMCwgNzAwMCwgMzkwNCwgMCwgCi0gICAgMTI4MTk4LCAwLCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjczNjAsIDczOTcsIDExODgwNywgMCwgCi0gICAgNDI3NzgsIDEwMDAwLCA0MTA4OCwgNDQ5LCAwLCAzNzc3LCA2ODQ1OCwgMCwgOTYzNiwgMCwgMTA3MzgsIDY5NjM0LCA5MzY3LCAKLSAgICA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCAwLCA2NDQwOSwgMzU5NiwgMCwgMCwgOTc2MywgCisgICAgMCwgMCwgNjc5OTYsIDIwMjAsIDAsIDQwMjIsIDEyODc4MywgMCwgNzc5MjMsIDEyNjU5MywgNDE2OTEsIDAsIDAsIDc0MzI5LCAKKyAgICAwLCA2NDYyMiwgOTA3MCwgMCwgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDAsIDcwMDAsIDM5MDQsIAorICAgIDAsIDEyODE5OCwgMCwgMTE4OTMxLCAxMTk2MzAsIDEzMTIzLCAxMDg0NiwgMzQ1MCwgMTI3MzYwLCA3Mzk3LCAxMTg4MDcsIAorICAgIDAsIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMCwgMzc3NywgNjg0NTgsIDAsIDk2MzYsIDAsIDEwNzM4LCA2OTYzNCwgCisgICAgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgMCwgNjQ0MDksIDM1OTYsIDAsIDAsIDk3NjMsIAogICAgIDEyMDI4MCwgOTIxOTIsIDEyMzQ3LCAxMjQsIDEyOTgxLCA0MTEyNywgMjA5MiwgOTI2ODcsIDAsIDAsIDAsIDEwODIwLCAKLSAgICA0Mzk4NywgMCwgMCwgMTc2OSwgNDE3MTUsIDI0NjMsIDc4NDg5LCAwLCAxMjc3MCwgMCwgMTUzOCwgMCwgNDMxMjQsIDAsIAotICAgIDE5NTA1OCwgNzc5NSwgMTIwMzAwLCAwLCA0ODI4LCAxMjU4LCAxMjc4MDIsIDIwMDYsIDAsIDAsIDk0OTgsIDEyNzAzMiwgCisgICAgNDM5ODcsIDAsIDAsIDE3NjksIDQxNzE1LCAyNDYzLCA3ODQ4OSwgMCwgMTI3NzAsIDEyNjUwMCwgMTUzOCwgMCwgNDMxMjQsIAorICAgIDAsIDE5NTA1OCwgNzc5NSwgMTIwMzAwLCAwLCA0ODI4LCAxMjU4LCAxMjc4MDIsIDIwMDYsIDAsIDAsIDk0OTgsIDEyNzAzMiwgCiAgICAgMTI3MDMzLCAxMjAyODksIDEyMDI4OCwgMzkzOSwgMTIwMjkwLCA4ODQ2LCA4OTQzLCAxMjAyODcsIDEyMDI4NiwgMjY1MCwgCiAgICAgNDQ5MSwgMTk2MSwgNDI2MDIsIDExNTI1LCAxMjAyOTIsIDE5NTksIDEyMDI5NCwgNTUyMjgsIDExNzc0LCA0MTAxNiwgMCwgCiAgICAgNjg2NzUsIDEyODA1NCwgMTUxMSwgOTMyNCwgNzgyMTEsIDEwNTE5LCA2NjMzMSwgMzQ1NCwgMTk5MzAsIDAsIDQxMDE5LCAwLCAKICAgICAwLCA2NTI5MiwgNjgyMiwgMTI4NjIsIDAsIDAsIDQyMTQzLCA0MTgyOCwgNzgyMDcsIDY1NTMxLCA3ODIwOCwgMTE4ODc5LCAKLSAgICA1NTIyMywgMCwgMCwgNDE4MjYsIDg4NjUsIDY0MDIsIDAsIDEzMjc5LCA3OTE3LCAxMjAzNDAsIDAsIDc3MzMsIDAsIDQ5OTgsIAotICAgIDAsIDkyMzMyLCA0MTk1MCwgMCwgNDI2OCwgMCwgMCwgMCwgNDAxMywgMCwgMTA4ODEsIDAsIDAsIDAsIDc0Nzg4LCAyMDE0LCAKLSAgICAwLCAwLCA5NzY1LCAwLCAwLCAwLCAxOTUwNTksIDc4MzU3LCA2NTI4MSwgMTI3ODI1LCAxMDk0OSwgMCwgMCwgMCwgMjAxNSwgCi0gICAgMCwgMCwgMCwgNjYzMTgsIDQzMjMzLCAwLCA0MjUxNywgMCwgMCwgMCwgMTI2OTgsIDgwOTQsIDEwMTM1LCA2NTkwOSwgCi0gICAgNjQ3NCwgNzk0LCAwLCAxMjY1NiwgMTI4MTIyLCAxMTkzNTMsIDEyODI3MCwgMTY2NSwgMCwgNDgzMywgMCwgMTE5MzUxLCAKLSAgICAxMjczNjcsIDAsIDE4OSwgMTI2MTEsIDAsIDAsIDI4NTksIDQ4MzgsIDAsIDQ4MzQsIDY1MDc4LCAwLCAwLCA0ODM3LCAKLSAgICAxMjcwNjEsIDc3MCwgMCwgODExLCAwLCA0MTA0MiwgOTE3NTUxLCA0MTMxOCwgNjQ0MjcsIDAsIDAsIDc4ODQ4LCAzODk1LCAKLSAgICAwLCA3NDM0MSwgMzk3NiwgMCwgNDI4NTksIDEwMTkzLCAzMTE2LCA3NzQ3LCAwLCAwLCAwLCAwLCAwLCA0MzY4NiwgNzg4NDYsIAotICAgIDQxODc3LCAwLCAyODcxLCA2NDYxNCwgMTI4Nzg1LCA5OTksIDAsIDYzNDUsIDQxODc2LCAyNjYzLCAyMDE3LCAwLCAwLCAKLSAgICAxMTA0MCwgMTAxNTAsIDAsIDY0MzA4LCAxNTIyLCA1OTcsIDQ3NzUsIDEyNTU1LCAxMjU3MSwgMTI1NTAsIDEyNTgzLCAKLSAgICAxMjU2MCwgMjAxOSwgMTI1NTYsIDEyNTg0LCAzMDkyLCAwLCAxMjU2MiwgNDc4MywgMTI1NjYsIDEyNTY5LCAxMjU1NCwgMCwgCi0gICAgMTA4MTIsIDc4ODUxLCAwLCAwLCAzMDc4LCAxNDAyLCAwLCAxMjgyNzUsIDAsIDAsIDExOTI0OCwgMzk0LCAzMDg4LCAwLCAKLSAgICA5MjE3MiwgMCwgMzk5MSwgNjQzOTEsIDAsIDAsIDQyNCwgNjYzMjgsIDE5OTksIDY5NjU5LCA3MzkxNCwgMCwgMCwgMCwgMCwgCi0gICAgNDIyMzEsIDgyNDYsIDAsIDAsIDAsIDQxODQwLCAwLCAyMzc3LCAxMjk4LCA2NDAxMSwgMTI1NzIsIDExMzE4LCAxMjU1NywgCi0gICAgMTI1NTksIDEyNTcwLCA4NDg4LCAxMDAzLCAyMzczLCA5NDQ2LCA3NDgxLCA5NDQ4LCA0OCwgMCwgOTQ4MCwgNDgxLCAwLCAKLSAgICA5NDM4LCA5NDM5LCA5NDQwLCA5NDQxLCA4NDY1LCA5NDQzLCA5NDQ0LCA5NDQ1LCA5NDMwLCA5NDMxLCA5NDMyLCA5NDMzLCAKLSAgICA5NDM0LCA5NDM1LCAzOTg0LCA5NDM3LCAwLCAwLCA5NDI0LCA5NDI1LCA5NDI2LCA5NDI3LCA5NDI4LCA5NDI5LCA2NDc1OCwgCi0gICAgMjM2MiwgOTY1NSwgMCwgMjAwNCwgOTA5NiwgOTc4MiwgMTI4ODQ4LCA5MTcyLCAxMjg1NDUsIDE5OTY1LCAwLCA1OTU1LCAKLSAgICA2NzY2NiwgMTEwOCwgMCwgNzQ3NzMsIDAsIDAsIDY0NzgyLCAzOTI2LCA5MjQ0OCwgNjUyMTAsIDg3OTgsIDAsIDkyMTY1LCAKLSAgICAxMzkyLCAwLCAwLCAxMjczNjQsIDEwNjA2LCA4MDY1LCAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMCwgMCwgNjQ1MjQsIAotICAgIDkyNDE4LCA0MDE5LCAwLCAwLCA0MzI4MCwgODIxOSwgNjg0MDIsIDE4MTIsIDAsIDAsIDAsIDAsIDQyNDEwLCA3NDQ0OCwgCi0gICAgMTE5MTMyLCA2MDU0LCAxMDY5NywgMzE2OSwgNDIyOTcsIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMCwgMTI4MTM5LCAwLCAKLSAgICA2ODY3OCwgMCwgMCwgMTA0OSwgMCwgNjU3MDcsIDIzMDQsIDQxODA2LCA5MjMyNiwgNDIzMzYsIDM5MjEsIDAsIDExNzc1LCAKLSAgICA2NDc2MCwgMTE3NjYsIDEwMzgsIDQyMzAzLCA5ODIzLCAxMjcyNzgsIDY5MjM2LCA0MDA4LCA2NDAwNCwgODc3MywgMTA3MzMsIAotICAgIDM2LCAwLCA1MTUzLCA0MTgwNSwgMCwgNzM3MzUsIDc2MywgNDE4MDgsIDY0OTEwLCAwLCAyMDA5LCAwLCAwLCAxMjcxNDIsIAotICAgIDk2NDAsIDExOTk1MSwgMCwgMTIwNjk1LCA4NjIxLCAwLCAxMjg1MiwgMzAzMSwgMCwgNjQzNjEsIDAsIDE4MiwgMTk0NzE4LCAKLSAgICA5MjcxNiwgOTI1OTgsIDExOTk1MCwgMCwgOTA1OCwgMzY2LCAwLCA5ODkyLCA1OTY5LCAxMTc1NCwgMTA4NDgsIDQ1NzAsIAotICAgIDY1MzAxLCA0NDAxMywgNDI1NSwgMCwgMTAxMDIsIDQxMTg5LCA0MDAzLCA0MTAyNiwgNjgxMDksIDEzMjkzLCA0MTE5MiwgCi0gICAgNjk2MzUsIDAsIDQyMjUxLCAwLCA0MjUzNCwgNjUxNzksIDExMjg3LCA2MTI4LCAwLCAxMTAzNCwgMTA5MjMsIDY0NDIzLCAwLCAKLSAgICA2NTUwNiwgMCwgNjU4NjEsIDc0MDgzLCA5MjYwMCwgOTkzMiwgMCwgOTI0MjMsIDExOTk1NSwgMCwgOTgxNywgMCwgCi0gICAgMTIwMTQwLCAwLCAxMjExNywgNjY1ODYsIDQxODMsIDEwNTQwLCA2NjI1MCwgOTA2MywgMTI3MDQ1LCAwLCAxMTk5NTQsIDAsIAotICAgIDEyODk3LCAzNzkyLCAyMDExLCAwLCA2MDY1LCA0MzE2MCwgMCwgMTk0NzE1LCA4NjkyLCA0MTE4NiwgNDE4MTYsIDQxMDIzLCAKLSAgICA0MTgxOCwgNDExODcsIDExNjU5LCA3OTIyLCAxMjYxNCwgMjAwNSwgODUyMywgNzgwMDIsIDAsIDc1MTMsIDE4NjMsIDQ3MTAsIAotICAgIDAsIDU5NTYsIDc2MjEsIDc4MDA2LCA5MjYyNCwgNDcwNSwgNzE2LCA3ODAwNCwgMCwgNDcwNCwgMTIwMDQwLCAxMjAyNzAsIAotICAgIDQyMjQxLCAxNjEsIDQzOTc3LCA3NDU0NiwgNjYyMTQsIDQ3MDYsIDAsIDAsIDQyNjcyLCA0NzA5LCAxMDY4MCwgMCwgCi0gICAgNDMyOTMsIDExOTk0NCwgMCwgMTE5MTY0LCAxMjAzMjgsIDkyNDY3LCAwLCAxNzAwLCAxMTkyMjMsIDAsIDAsIDEyODExOSwgCi0gICAgNDAwNCwgMCwgMTA5NjgsIDQzMjk2LCAwLCA4NTA2LCAwLCAwLCAxMjY5OTYsIDEwMDUsIDkzNywgNzgyMTYsIDQ3MzQsIAotICAgIDI4NzAsIDAsIDc4MjE4LCAwLCA3NDYzLCA0NzI5LCAwLCAyMzUsIDEzODQsIDQ3MjgsIDAsIDEyMDQyMCwgOTI0OTAsIAotICAgIDEyMDMzMSwgODEwOSwgNDMxMDUsIDAsIDQ3MzAsIDQ0NywgMTMxODYsIDE1MTMsIDQ3MzMsIDEyMDQxNSwgMCwgMCwgCi0gICAgNDI1MjcsIDEyOTExLCA0MzQyNywgMTM4MywgODU2NSwgMjQ2OSwgMTIwMDI0LCA2NjkwLCA2MTU2LCA2ODExNywgNDM0MzksIAotICAgIDc5OTMsIDQyODgsIDEyMDQxNiwgMjY3NCwgMTMyMzgsIDExOTIyLCAwLCAxMjAzMzAsIDM1MTAsIDEzMjM0LCAwLCAKLSAgICAxMjA0MDcsIDU2MDUsIDQyMDk1LCAxMTM2NCwgMCwgMTM4MCwgNjU2MTcsIDEyMDI1MywgMTIwMjYxLCAxMzE5NiwgMTMxOTcsIAotICAgIDEyMDMwOSwgMTIwNjgyLCA5NDk1LCAxMTkzNDYsIDAsIDU5NTksIDAsIDczOTc2LCAxMjAzMDUsIDQzMzcxLCA2OTQxLCAKLSAgICAxMTkzNDksIDEzMjA1LCAxMzIxMSwgNTgwMSwgMTI3NjksIDY1OTA1LCA0MTY5NywgMTI4MywgMTIwMzAyLCA0Nzc5LCAwLCAKLSAgICAzNzE5LCA0MDA2LCAwLCAxOTk1NywgMTI4NzczLCAyMDIxLCAxMTkzMzIsIDEyMDY5OSwgMTE5MTUwLCA0MzAyOCwgNjU0OTMsIAotICAgIDQxODM4LCAzODc1LCA1OTYyLCA2NDM0MSwgOTI2MTYsIDk4MTQsIDQzNDU3LCA1ODI3LCAzMzE0LCA3Nzg3LCA3ODIzNCwgCi0gICAgNjU0OTQsIDY4MTUzLCAwLCAwLCAxMjA2MzYsIDY0NTMxLCAxMjA2OTIsIDE5NDYyNiwgMCwgMCwgNjYzMTYsIDY1NDY3LCAKLSAgICA1NzcxLCA0MTI5OCwgMCwgOTc0MiwgNTIxLCAwLCAxMDgwMCwgMCwgODQwNCwgMTk0NjI1LCA0ODMsIDcwOTYsIDcwODksIAotICAgIDY2MzIzLCA5MjgsIDAsIDAsIDExOTAxOCwgMTA1OTksIDExNTg2LCAzOTg5LCAxMDk3MSwgMCwgNjU3ODIsIDk4NDEsIAotICAgIDg4NDMsIDEyMTQ1LCA5MjQ3MCwgMTAwNzQsIDc4NTQ4LCAwLCAzNzY5LCAwLCAwLCAwLCAwLCA5NTczLCAwLCA2NTI5MCwgCi0gICAgODg0OSwgMCwgNjU4NTUsIDY1MTEyLCAxNzk2LCAxMjA1MDUsIDAsIDY5NjY1LCA4MTY0LCA0MTMwMSwgMzUwMiwgMCwgCi0gICAgNzM4OCwgMTA2MjEsIDczODM4LCA3ODU1MywgNTgyNSwgMTMwMDcsIDY4MTY1LCAwLCAxMjA0NTcsIDEyNjYxLCA3NjA4LCAKLSAgICAxMDM1NCwgMTA0MTgsIDQyNDExLCAyMDIyLCAwLCAxNDA5LCAxMjE5NSwgNDAwMSwgMzExMiwgMTA4MjQsIDEyMDYzOSwgCi0gICAgMTM5MCwgMCwgMCwgNDIxLCA0MzUzNiwgNTg0NiwgMTIwMTIwLCA0MTMwLCAxMjc3NzUsIDc1OTUsIDQyNTg4LCA3NjAwLCAKLSAgICAxMjAxMjEsIDY2MDM1LCAwLCAwLCA2NTg1MSwgNDI2MDcsIDEyODE5MCwgOTI0MDMsIDMxNjgsIDAsIDQyMTM0LCAwLCAKLSAgICAyMzcwLCAyODQ2LCA5MjYwNSwgMCwgMCwgMTIwMTMyLCAwLCAxODM2LCAwLCAwLCA5MjU1OCwgMzc0MCwgOTI1NDcsIDYyOTAsIAorICAgIDU1MjIzLCAwLCAxMjgwNzEsIDQxODI2LCA4ODY1LCA2NDAyLCAwLCAxMzI3OSwgNzkxNywgNzQ3NTUsIDAsIDc3MzMsIDAsIAorICAgIDQ5OTgsIDk4Mzg4NywgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAwLCAwLCA3MDA2MSwgNDAxMywgMCwgMTA4ODEsIDAsIDAsIAorICAgIDAsIDc0Nzg4LCAyMDE0LCAwLCAwLCA5NzY1LCAwLCAwLCAwLCAxOTUwNTksIDc4MzU3LCA2NTI4MSwgMTI3ODI1LCAxMDk0OSwgCisgICAgMCwgMCwgMCwgMjAxNSwgMCwgMCwgMCwgNjYzMTgsIDQzMjMzLCAwLCA0MjUxNywgMCwgMCwgMCwgMTI2OTgsIDgwOTQsIAorICAgIDEwMTM1LCA2NTkwOSwgNjQ3NCwgNzk0LCAwLCAxMjY1NiwgMTI4MTIyLCAxMTkzNTMsIDEyODI3MCwgMTY2NSwgMCwgNDgzMywgCisgICAgOTgzMDUzLCAxMTkzNTEsIDEyNzM2NywgMCwgMTg5LCAxMjYxMSwgMCwgMCwgMjg1OSwgNDgzOCwgMCwgNDgzNCwgNjUwNzgsIAorICAgIDAsIDAsIDQ4MzcsIDEyNzA2MSwgNzcwLCAwLCA4MTEsIDAsIDQxMDQyLCA5MTc1NTEsIDQxMzE4LCA2NDQyNywgMCwgCisgICAgMTI4MjA4LCA3ODg0OCwgMzg5NSwgMCwgNzQzNDEsIDM5NzYsIDAsIDQyODU5LCAxMDE5MywgMzExNiwgNzc0NywgMCwgMCwgCisgICAgMCwgMCwgMCwgNDM2ODYsIDc4ODQ2LCA0MTg3NywgMCwgMjg3MSwgNjQ2MTQsIDEyODc4NSwgOTk5LCAwLCA2MzQ1LCAKKyAgICA0MTg3NiwgMjY2MywgMjAxNywgMCwgMCwgMTEwNDAsIDEwMTUwLCAwLCA2NDMwOCwgMTUyMiwgNTk3LCA0Nzc1LCAxMjU1NSwgCisgICAgMTI1NzEsIDEyNTUwLCAxMjU4MywgMTI1NjAsIDIwMTksIDEyNTU2LCAxMjU4NCwgMzA5MiwgMCwgMTI1NjIsIDQ3ODMsIAorICAgIDEyNTY2LCAxMjU2OSwgMTI1NTQsIDAsIDEwODEyLCA3ODg1MSwgMCwgMCwgMzA3OCwgMTQwMiwgMCwgMTI4Mjc1LCAwLCAwLCAKKyAgICAxMTkyNDgsIDM5NCwgMzA4OCwgMCwgOTIxNzIsIDAsIDM5OTEsIDY0MzkxLCAwLCAxMjg1MjQsIDQyNCwgNjYzMjgsIDE5OTksIAorICAgIDY5NjU5LCA3MzkxNCwgMCwgMCwgMCwgMCwgNDIyMzEsIDgyNDYsIDAsIDAsIDAsIDQxODQwLCA5ODM2MDksIDIzNzcsIAorICAgIDEyOTgsIDY0MDExLCAxMjU3MiwgMTEzMTgsIDEyNTU3LCAxMjU1OSwgMTI1NzAsIDc0NzksIDEwMDMsIDIzNzMsIDk0NDYsIAorICAgIDc0ODEsIDk0NDgsIDQ4LCAwLCA5NDgwLCA0ODEsIDAsIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIDk0NDMsIAorICAgIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDAsIDAsIDk0MjQsIAorICAgIDk0MjUsIDk0MjYsIDk0MjcsIDk0MjgsIDk0MjksIDY0NzU4LCAyMzYyLCA5NjU1LCAwLCAyMDA0LCA5MDk2LCA5NzgyLCAKKyAgICAxMjg4NDgsIDkxNzIsIDEyODU0NSwgMTk5NjUsIDAsIDU5NTUsIDY3NjY2LCAxMTA4LCAwLCA3NDc3MywgMCwgMCwgNjQ3ODIsIAorICAgIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMCwgOTIxNjUsIDEzOTIsIDAsIDAsIDEyNzM2NCwgMTA2MDYsIDgwNjUsIAorICAgIDExODgwNSwgMTAzNTMsIDEwNDE3LCAwLCAwLCA2NDUyNCwgOTI0MTgsIDQwMTksIDAsIDk4MzI4MCwgNDMyODAsIDgyMTksIAorICAgIDY4NDAyLCAxODEyLCAxMTk5NjMsIDk4MzY4MywgMCwgMTI2NDg4LCA0MjQxMCwgNzQ0NDgsIDExOTEzMiwgNjA1NCwgCisgICAgMTA2OTcsIDMxNjksIDQyMjk3LCA0MjMyMiwgMTA2NDIsIDM5MDksIDk5NTAsIDAsIDEyODEzOSwgOTgzMjUzLCA2ODY3OCwgCisgICAgMCwgMCwgMTA0OSwgMCwgNjU3MDcsIDIzMDQsIDQxODA2LCA5MjMyNiwgNDIzMzYsIDM5MjEsIDAsIDExNzc1LCA2NDc2MCwgCisgICAgMTE3NjYsIDEwMzgsIDQyMzAzLCA5ODIzLCAxMjcyNzgsIDY5MjM2LCA0MDA4LCA2NDAwNCwgODc3MywgMTA3MzMsIDM2LCAwLCAKKyAgICA1MTUzLCA0MTgwNSwgMCwgNzM3MzUsIDc2MywgNDE4MDgsIDY0OTEwLCA5ODMxMzAsIDIwMDksIDAsIDAsIDEyNzE0MiwgCisgICAgOTY0MCwgMTE5OTUxLCAwLCAxMjA2OTUsIDg2MjEsIDEyMDUyMywgMTI4NTIsIDMwMzEsIDk4MzA1MCwgNjQzNjEsIDAsIAorICAgIDE4MiwgMTk0NzE4LCA5MjcxNiwgOTI1OTgsIDExOTk1MCwgNDI2MTMsIDkwNTgsIDM2NiwgMCwgOTg5MiwgNTk2OSwgCisgICAgMTE3NTQsIDEwODQ4LCA0NTcwLCA2NTMwMSwgNDQwMTMsIDQyNTUsIDEyNzg4OSwgMTAxMDIsIDQxMTg5LCA0MDAzLCAKKyAgICA0MTAyNiwgNjgxMDksIDEzMjkzLCA0MTE5MiwgNjk2MzUsIDAsIDQyMjUxLCAwLCA0MjUzNCwgNjUxNzksIDExMjg3LCAKKyAgICA2MTI4LCAwLCAxMTAzNCwgMTA5MjMsIDY0NDIzLCAwLCA2NTUwNiwgMCwgNjU4NjEsIDc0MDgzLCA5MjYwMCwgOTkzMiwgMCwgCisgICAgOTI0MjMsIDExOTk1NSwgMCwgOTgxNywgMCwgMTIwMTQwLCAwLCAxMjExNywgNjY1ODYsIDQxODMsIDEwNTQwLCA2NjI1MCwgCisgICAgOTA2MywgMTI3MDQ1LCAwLCAxMTk5NTQsIDAsIDEyODk3LCAzNzkyLCAyMDExLCAwLCA2MDY1LCA0MzE2MCwgMCwgMTk0NzE1LCAKKyAgICA4NjkyLCA0MTE4NiwgNDE4MTYsIDQxMDIzLCA0MTgxOCwgNDExODcsIDExNjU5LCA3OTIyLCAxMjYxNCwgMjAwNSwgODUyMywgCisgICAgNzgwMDIsIDAsIDc1MTMsIDE4NjMsIDQ3MTAsIDAsIDU5NTYsIDc2MjEsIDc4MDA2LCA5MjYyNCwgNDcwNSwgNzE2LCAKKyAgICA3ODAwNCwgMCwgNDcwNCwgMTIwMDQwLCAxMjAyNzAsIDQyMjQxLCAxNjEsIDQzOTc3LCA3NDU0NiwgNjYyMTQsIDQ3MDYsIDAsIAorICAgIDY5OTE0LCA0MjY3MiwgNDcwOSwgMTA2ODAsIDExOTA2NSwgNDMyOTMsIDExOTk0NCwgMCwgMTE5MTY0LCAxMjAzMjgsIAorICAgIDkyNDY3LCAxMDE4NywgMTcwMCwgMTE5MjIzLCAwLCAwLCAxMjgxMTksIDQwMDQsIDAsIDEwOTY4LCA0MzI5NiwgOTgzNjMzLCAKKyAgICA4NTA2LCAwLCAwLCAxMjY5OTYsIDEwMDUsIDkzNywgNzgyMTYsIDQ3MzQsIDI4NzAsIDAsIDc4MjE4LCA5ODMxMDksIDc0NjMsIAorICAgIDQ3MjksIDAsIDIzNSwgMTM4NCwgNDcyOCwgMCwgMTIwNDIwLCA5MjQ5MCwgNzQ0NDksIDgxMDksIDQzMTA1LCA5ODMxNzQsIAorICAgIDQ3MzAsIDQ0NywgMTMxODYsIDE1MTMsIDQ3MzMsIDEyMDQxNSwgMCwgMCwgNDI1MjcsIDEyOTExLCA0MzQyNywgMTM4MywgCisgICAgODU2NSwgMjQ2OSwgMTIwMDI0LCA2NjkwLCA2MTU2LCA2ODExNywgNDM0MzksIDc5OTMsIDQyODgsIDEyMDQxNiwgMjY3NCwgCisgICAgMTMyMzgsIDExOTIyLCAwLCAxMjAzMzAsIDM1MTAsIDEzMjM0LCAwLCAxMjA0MDcsIDU2MDUsIDQyMDk1LCAxMTM2NCwgMCwgCisgICAgMTM4MCwgNjU2MTcsIDEyMDI1MywgMTIwMjYxLCAxMzE5NiwgMTMxOTcsIDEyMDMwOSwgMTIwNjgyLCA5NDk1LCAxMTkzNDYsIAorICAgIDAsIDU5NTksIDY3OTg0LCA3Mzk3NiwgMTIwMzA1LCA0MzM3MSwgNjk0MSwgMTE5MzQ5LCAxMzIwNSwgMTMyMTEsIDU4MDEsIAorICAgIDEyNzY5LCA2NTkwNSwgNDE2OTcsIDEyODMsIDEyMDMwMiwgNDc3OSwgMCwgMzcxOSwgNDAwNiwgOTgzNTY5LCAxOTk1NywgCisgICAgMTI4NzczLCAyMDIxLCAxMTkzMzIsIDEyMDY5OSwgMTE5MTUwLCA0MzAyOCwgNjU0OTMsIDQxODM4LCAzODc1LCA1OTYyLCAKKyAgICA2NDM0MSwgOTI2MTYsIDk4MTQsIDQzNDU3LCA1ODI3LCAzMzE0LCA3Nzg3LCA3ODIzNCwgNjU0OTQsIDY4MTUzLCAwLCAwLCAKKyAgICAxMjA2MzYsIDY0NTMxLCAxMjA2OTIsIDE5NDYyNiwgMCwgMCwgNjYzMTYsIDY1NDY3LCA1NzcxLCA0MTI5OCwgOTgzNzg1LCAKKyAgICA5NzQyLCA1MjEsIDAsIDEwODAwLCA5MjIyMiwgODQwNCwgMTk0NjI1LCA0ODMsIDcwOTYsIDcwODksIDY2MzIzLCA5MjgsIDAsIAorICAgIDAsIDExOTAxOCwgMTA1OTksIDExNTg2LCAzOTg5LCAxMDk3MSwgNDM3NDgsIDY1NzgyLCA5ODQxLCA4ODQzLCAxMjE0NSwgCisgICAgOTI0NzAsIDEwMDc0LCA3ODU0OCwgMCwgMzc2OSwgMCwgMCwgMCwgOTgzMTA3LCA5NTczLCAwLCA2NTI5MCwgODg0OSwgMCwgCisgICAgNjU4NTUsIDY1MTEyLCAxNzk2LCAxMjA1MDUsIDAsIDY5NjY1LCA4MTY0LCA0MTMwMSwgMzUwMiwgMCwgNzM4OCwgMTA2MjEsIAorICAgIDczODM4LCA3ODU1MywgNTgyNSwgMTMwMDcsIDY4MTY1LCAwLCAxMjA0NTcsIDEyNjYxLCA3NjA4LCAxMDM1NCwgMTA0MTgsIAorICAgIDQyNDExLCAyMDIyLCAwLCAxNDA5LCAxMjE5NSwgNDAwMSwgMzExMiwgMTA4MjQsIDEyMDYzOSwgMTM5MCwgMCwgMCwgNDIxLCAKKyAgICA0MzUzNiwgNTg0NiwgMTIwMTIwLCA0MTMwLCAxMjc3NzUsIDc1OTUsIDQyNTg4LCA3NjAwLCAxMjAxMjEsIDY2MDM1LCAKKyAgICA5ODM5MDQsIDAsIDY1ODUxLCA0MjYwNywgMTI4MTkwLCA5MjQwMywgMzE2OCwgMCwgNDIxMzQsIDExODMxLCAyMzcwLCAKKyAgICAyODQ2LCA5MjYwNSwgMCwgMCwgMTIwMTMyLCAwLCAxODM2LCAwLCAwLCA5MjU1OCwgMzc0MCwgNjk4NDMsIDYyOTAsIAogICAgIDY1Mzc0LCAxMjA0NTEsIDIzOTAsIDM5NDQsIDY2NjI4LCAxMjA0MzQsIDAsIDYxMzUsIDMxMTgsIDc0MjY1LCAxMTkwOTMsIAotICAgIDEyMDQ0NiwgMCwgMCwgODEyNywgODk3NSwgNjQ3MzksIDc5NDMsIDAsIDAsIDEwNjE4LCAyNTg0LCAwLCAwLCAwLCA5OTk4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MjA0LCAwLCAwLCA4Mjc5LCA4Nzc2LCA2NDk1NCwgNDk3NSwgNzQ4MDksIDEyMDEzMCwgNDI2NywgCi0gICAgMTYzMSwgNDIyMDYsIDEyNzg2NiwgMCwgMTk1MDQ2LCA2NTcwMCwgNjY1NjIsIDAsIDY0NjQ1LCAwLCAwLCAwLCAxMjU4NiwgCi0gICAgMCwgOTI0MiwgMTI3OTIyLCAwLCA0NTIzLCA1ODQyLCAxMDQ5NSwgMzEyMiwgMCwgNzc5MywgNzgyNzUsIDkzMjgsIDAsIAotICAgIDc4MzkzLCAxMjYwNCwgMCwgNjYxNSwgNjc2NTAsIDkyMzQ0LCAzOTg2LCA0NDAyNSwgMCwgODkxMiwgNjQ1NTUsIDc0MDksIAotICAgIDAsIDAsIDk1NDEsIDc4Mjc2LCAwLCAxMTI3NSwgODU0MCwgMTE0OTgsIDAsIDAsIDQxMDQwLCAyNDU5LCAwLCAxMzA2MCwgCi0gICAgNDEwNDEsIDc0NDEzLCAwLCAwLCAwLCA2ODQyNywgMTA0NTAsIDEyNTUxLCA0MTA0MywgNzAyMCwgMTIwMzUzLCAzNzY1LCAwLCAKLSAgICAwLCAxNjA2LCAxMjAzNDgsIDEyMDM1MSwgMzA5MywgNjg0MzYsIDAsIDAsIDEyMDY0OSwgMCwgMCwgNDMxMiwgNzQwOTEsIAotICAgIDEyMDMzNywgMTIwMzM2LCAxMTkyMywgNDAyMywgMTIwMzMzLCA1NzYzLCAxMjAzMzUsIDQ4MjcsIDEwODk0LCAxMjgxMCwgCi0gICAgNjQ0MDYsIDExODc4NSwgNDQ1NSwgNzQzMjEsIDQzMywgMTE5NjIwLCA2NjY2MCwgMjQ5OSwgMCwgMCwgMCwgMTE5NzMsIAorICAgIDEyMDQ0NiwgMCwgMCwgODEyNywgODk3NSwgNjQ3MzksIDc5NDMsIDk4MzczNCwgMCwgMTA2MTgsIDI1ODQsIDAsIDAsIDAsIAorICAgIDk5OTgsIDEyODU2NCwgMCwgMCwgMCwgMCwgNjIwNCwgMCwgMCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDcwMDc1LCAKKyAgICAxMjAxMzAsIDQyNjcsIDE2MzEsIDQyMjA2LCA3Nzk4MywgMCwgMTk1MDQ2LCA2NTcwMCwgNjY1NjIsIDAsIDY0NjQ1LCAwLCAKKyAgICAwLCAxMjY1ODgsIDEyNTg2LCAwLCA5MjQyLCAxMjc5MjIsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCA5ODM3ODgsIAorICAgIDc3OTMsIDc4Mjc1LCA5MzI4LCAxMTkxMDQsIDc4MzkzLCAxMjYwNCwgMCwgNjYxNSwgMjI4NSwgOTIzNDQsIDM5ODYsIAorICAgIDQ0MDI1LCAwLCA4OTEyLCA2NDU1NSwgNzQwOSwgMCwgOTgzMzUwLCA5NTQxLCA3ODI3NiwgMCwgMTEyNzUsIDg1NDAsIAorICAgIDExNDk4LCAwLCA5ODMzNDksIDQxMDQwLCAyNDU5LCAwLCAxMzA2MCwgNDEwNDEsIDc0NDEzLCA5ODMxMzgsIDAsIDAsIAorICAgIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIDM3NjUsIDk4MzM0MiwgMCwgMTYwNiwgMTIwMzQ4LCAKKyAgICAxMjAzNTEsIDMwOTMsIDY4NDM2LCAwLCA5ODMwNjEsIDExOTYxMywgMCwgMCwgNDMxMiwgNzQwOTEsIDEyMDMzNywgCisgICAgMTIwMzM2LCAxMTkyMywgNDAyMywgMTIwMzMzLCA1NzYzLCA5NDAxNSwgNDgyNywgMTA4OTQsIDEyODEwLCA2NDQwNiwgCisgICAgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIDY2NjYwLCAyNDk5LCAwLCAwLCAxMTg4MzcsIDExOTczLCAKICAgICAxMzA4OSwgNDI5MywgMTIwMzI5LCA0MjIyNCwgNDI3NTgsIDEyMTk2LCA0MjgzNywgNDIyMjYsIDExOTMxOSwgMCwgCi0gICAgMTE5MTI2LCA1ODE3LCAxMjc4MDYsIDU1Mjc3LCAzMTIwLCA5Nzk3LCAwLCAwLCAwLCAxMDM4OSwgMCwgMCwgNDg5NSwgCi0gICAgNjUzNTgsIDAsIDQzNTksIDU4NSwgMjM4MywgMzUwOSwgMTk0OTIwLCA0ODYsIDQyOTAsIDU3NTgsIDEyNzU0NiwgMCwgMCwgCi0gICAgNzAwNCwgMCwgNjU4ODAsIDEyNzg4NiwgMTE5MDQ4LCAyMzgwLCAxMTM4MCwgMCwgMCwgMjM3NiwgMCwgMTE5MzIwLCAwLCAKLSAgICA1MTk3LCAxMjcwNDYsIDEyNzA0NywgMTI3MDQ4LCAyMzY2LCAxMjcwNTAsIDEyNzA1MSwgMTIwNTU0LCAxMjAwNDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDc0MTg4LCAxMjAyNDEsIDAsIDAsIDEyMDA0NywgMTI4NTc1LCAwLCAwLCAxMjAwNDksIDAsIAotICAgIDE4NDcsIDAsIDEwMzM5LCAwLCA0MjM4NCwgMCwgNDIyNywgNzQxNTgsIDAsIDkyNTAxLCA0MzAzMiwgMCwgNDIzNjUsIDAsIAotICAgIDEyNjcxLCAxMTM4NCwgMCwgMCwgMCwgNjQ3OTcsIDAsIDU4MjAsIDAsIDEyMDA1MiwgMTIwMDY1LCAwLCAxMjAwNjQsIAotICAgIDEyMDY1MCwgNDIxMzcsIDk4OTMsIDI3NTQsIDEyNjY0LCAxMjAwNjMsIDAsIDczNzcsIDEyNzg2NywgNDE3OTksIDY1NTMwLCAKLSAgICAxNzExLCAxMjk4NCwgNDMwMzksIDMxMTQsIDYyNTUsIDAsIDExODkzOCwgMCwgMTA4NTMsIDkyNiwgMCwgNzQxODQsIDAsIAotICAgIDEyMDA1NSwgMCwgNDMxNzUsIDAsIDQzMDM3LCA0MTc5OCwgNDEwMzUsIDExNTgzLCAxMjc3NjksIDQxODAxLCAxMTkwODgsIAotICAgIDAsIDUyMCwgNDIwMCwgMTI2OTksIDgzMzEsIDAsIDMwOTEsIDQxMDM0LCAxMjczNTMsIDAsIDgzNjAsIDAsIDc4MDQ0LCAKLSAgICAzMjEsIDQyMjksIDY0NTQzLCA5MTc5NDYsIDY1NTYzLCAwLCA5MTc5NzQsIDI4NjEsIDQzNzkzLCAxMDA5NSwgMCwgOTE5NSwgCi0gICAgOTIzODYsIDE4NjEsIDAsIDczNzMzLCAwLCAwLCA0MzA0MSwgMCwgNDM3OTQsIDEyODUzMCwgMzg1OSwgMTIxODEsIDQxNjYwLCAKLSAgICA4MjA5LCAwLCA3Mzg2NywgMTI5NzMsIDAsIDc0NzU3LCAxMjc1MTQsIDQxNjU4LCAwLCAwLCA1NzYwLCAwLCA3NDMsIDQ0MTQsIAorICAgIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgMzEyMCwgOTc5NywgMCwgMCwgMCwgMTAzODksIDEyNjQ4NSwgMCwgNDg5NSwgCisgICAgNjUzNTgsIDAsIDQzNTksIDU4NSwgMjM4MywgMzUwOSwgNzAwMzcsIDQ4NiwgNDI5MCwgNTc1OCwgMTI3NTQ2LCAwLCAwLCAKKyAgICA3MDA0LCAwLCA2NTg4MCwgMTI3ODg2LCAxMTkwNDgsIDIzODAsIDExMzgwLCAwLCA5Mzk5NiwgMjM3NiwgMCwgMTE5MzIwLCAKKyAgICAwLCA1MTk3LCAxMjcwNDYsIDEyNzA0NywgMTI3MDQ4LCAyMzY2LCAxMjcwNTAsIDEyNzA1MSwgMTIwNTU0LCAxMjAwNDUsIDAsIAorICAgIDAsIDAsIDk4MzA4NCwgMCwgMCwgMCwgNzQxODgsIDcxMzQyLCA5ODMwODYsIDk4MzU3MywgMTIwMDQ3LCAxMjg1NzUsIDAsIAorICAgIDAsIDEyMDA0OSwgMCwgMTg0NywgMCwgMTAzMzksIDk4MzM1NywgNDIzODQsIDAsIDQyMjcsIDc0MTU4LCAwLCA5MjUwMSwgCisgICAgNDMwMzIsIDAsIDQyMzY1LCAwLCAxMjY3MSwgMTEzODQsIDAsIDk4MzQ1NywgMCwgNjQ3OTcsIDk4MzMzNywgNTgyMCwgCisgICAgOTgzMzM2LCAxMjAwNTIsIDEyMDA2NSwgMCwgMTIwMDY0LCAxMjA2NTAsIDQyMTM3LCA5ODkzLCAyNzU0LCAxMjY2NCwgCisgICAgMTIwMDYzLCAwLCA3Mzc3LCAxMjc4NjcsIDQxNzk5LCA2NTUzMCwgMTcxMSwgMTI5ODQsIDQzMDM5LCAzMTE0LCA2MjU1LCAKKyAgICA5ODMzMzIsIDExODkzOCwgMCwgMTA4NTMsIDkyNiwgOTgzMzYxLCA3NDE4NCwgOTgzMzYwLCAxMjAwNTUsIDAsIDQzMTc1LCAKKyAgICAwLCA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTE5MDg4LCAxMTk2MDUsIDUyMCwgNDIwMCwgCisgICAgMTI2OTksIDgzMzEsIDAsIDMwOTEsIDQxMDM0LCAxMjczNTMsIDk4MzY3MiwgODM2MCwgMCwgNzgwNDQsIDMyMSwgNDIyOSwgCisgICAgNjQ1NDMsIDkxNzk0NiwgNjU1NjMsIDAsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAwLCA5MTk1LCA5MjM4NiwgCisgICAgMTg2MSwgMCwgNzM3MzMsIDAsIDAsIDQzMDQxLCAwLCA0Mzc5NCwgMTI4NTMwLCAzODU5LCAxMjE4MSwgNDE2NjAsIDgyMDksIAorICAgIDAsIDczODY3LCAxMjk3MywgMCwgNzQ3NTcsIDEyNzUxNCwgNDE2NTgsIDAsIDAsIDU3NjAsIDAsIDc0MywgNDQxNCwgCiAgICAgMTIwNzY2LCAwLCA0MjYzMiwgOTE3OTczLCA2NTE2MSwgNzM4OTYsIDEyODU4OSwgMCwgMTQwNSwgMTE5MDYzLCA0MzIyMCwgCiAgICAgNDMzNDEsIDAsIDE5OTE5LCAwLCA2NDUzMiwgNjUzNjcsIDQzNzEwLCAwLCAwLCAzNTEzLCAwLCAxMTg4ODMsIDQzMzQyLCAKICAgICAxMTkwNjQsIDY1NTI5LCA2NTM2NCwgMTI4MTk3LCAwLCA2NDg1LCAxMzk3LCAwLCA0MTk4NiwgOTI2NzgsIDAsIDAsIAotICAgIDc0MDk3LCAwLCA3NDcxLCAxMjA3OSwgMCwgMTI2ODIsIDQzMjg3LCA5MjMxNywgMCwgMCwgMCwgMCwgMCwgMTA5OSwgCi0gICAgMTA0OTAsIDAsIDEwNTAxLCA2NTE4MSwgNzQ0NjMsIDAsIDQ2NCwgNDE2MjQsIDY1MjgzLCA2NzY2MywgNzgyMjIsIDEzNDYsIAotICAgIDAsIDkxNzYzMSwgNjQ1NzMsIDY0ODk3LCA0MjMsIDE4MTgsIDY1MTQ0LCAwLCA4MjcyLCAxMjc4MTIsIDE5OTExLCA0MjE4LCAKLSAgICAzMDg3LCA2NDk2MCwgMTI3MjM0LCA0MzU2NCwgMCwgMCwgOTU4NCwgMTA0NjUsIDAsIDc0MzU5LCAxMjYyNiwgOTEwNiwgMCwgCi0gICAgNDI2NDIsIDEyMDIzMCwgNjQ3NTAsIDkzOTAsIDAsIDQxNzk3LCAwLCAwLCAyNjUsIDQxNzk1LCA2NDY2NiwgMCwgNDM1MzAsIAotICAgIDI3NTIsIDAsIDAsIDAsIDU5LCAwLCAwLCAwLCA5MjM3MSwgNzc4NzMsIDQxODEwLCAwLCA3MDEwLCAwLCA0MTgwOSwgCi0gICAgNDE0OTUsIDExOTM2NCwgMCwgNDIyNTIsIDQyMjEzLCA4MDA5LCAzMzA1LCA0MzAzMywgNTExLCA5MjcwMCwgNjYyNTUsIAotICAgIDEzMTI3LCAxMjAwNjcsIDAsIDAsIDAsIDkxNzk3NywgNjU5MTUsIDE0MDAsIDQxODEyLCAxMDY4NSwgMTk0ODcwLCAyMTAzLCAKLSAgICAxMDM4NywgNDQ1MywgNDMyNzYsIDkxNzc4MywgMTMxNTksIDAsIDY0ODEsIDQxMjEzLCAwLCAwLCAwLCAwLCA0MTk4MywgCi0gICAgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgMCwgNDYyLCA2ODExMCwgMTA0OTMsIDAsIDgxMjksIDAsIDAsIDc0NDcxLCAKLSAgICA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMCwgMTE5MDEzLCA0MzM0MCwgCi0gICAgMCwgNDEwMzMsIDY0OTMsIDQyNjI2LCAwLCAwLCAxMTQyNiwgNzc4ODcsIDE2ODEsIDExODc4OSwgMTIwNCwgMzc1NSwgCi0gICAgNjQ2NjEsIDcyMzUsIDEwMTcwLCAzOTY2LCA4OTExLCAwLCA0MTg0MSwgNDMzMzgsIDAsIDAsIDU3MjYsIDY0OTE1LCAKLSAgICA0MjE3NSwgMCwgMCwgNDE0OTcsIDY1MDQ0LCAxMjAxMDksIDI4NTEsIDQzMDE3LCAwLCAwLCA0MzczLCA3ODA1OCwgMCwgCi0gICAgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAwLCA2NTM2MCwgMCwgOTIzNjUsIDAsIDY0OTIyLCAwLCA4MTkwLCAKLSAgICAxMjA4MywgMCwgMCwgNjUwNiwgNjQzMTIsIDc0Mzc0LCAyMzY4LCAwLCA0NDE5LCAwLCAxMTkxMjUsIDM0MzksIDE4MjUsIAotICAgIDExOTIsIDEyMDEwNiwgODg5MSwgMzA4MCwgMTIwMjI4LCAyMzQ3LCA1NDMwLCAwLCA4OTkwLCAyODQ4LCAwLCAxMjgyMjMsIAotICAgIDkyNTI4LCAyNDksIDAsIDAsIDAsIDEyMDY1OCwgMCwgMCwgODg4MywgOTE3ODAyLCA3MjgsIDY4MTc4LCA5OTUsIDAsIDAsIAotICAgIDY0ODI2LCAwLCA5MTc3OTgsIDEyODM0OCwgMCwgMTk5NDUsIDgwOTEsIDU1OCwgMCwgMTIyNzMsIDE5NDgxNCwgMCwgCi0gICAgMTIxMTIsIDAsIDAsIDAsIDc0NDE5LCAxMjMzNSwgMTIwMTA0LCA5MTc3OTUsIDM0NDMsIDMxMjksIDAsIDIxMDIsIDY1NDQ1LCAKLSAgICA3ODI1OCwgNjQ4OTEsIDAsIDc3MjUsIDY1MTA4LCA3ODI1NSwgMCwgODYyNCwgNjkyNDYsIDEyNDQ2LCA0MzI5NSwgMCwgCi0gICAgNDE4OTQsIDAsIDYyNzcsIDQxNjcyLCA0MTg5MywgMTAwMTAsIDEyODY3OCwgMzU0MCwgMTI4NjQ5LCA4MzUsIDAsIDY5ODE2LCAKKyAgICA3NDA5NywgMCwgNzQ3MSwgMTIwNzksIDY3OTk3LCAxMjY4MiwgNDMyODcsIDkyMzE3LCAwLCA5ODMxNDMsIDk4MzY5OCwgMCwgCisgICAgMCwgMTA5OSwgMTA0OTAsIDAsIDEwNTAxLCA2NTE4MSwgNzQ0NjMsIDAsIDQ2NCwgNDE2MjQsIDY1MjgzLCA2NzY2MywgCisgICAgNzgyMjIsIDEzNDYsIDAsIDkxNzYzMSwgNjQ1NzMsIDY0ODk3LCA0MjMsIDE4MTgsIDY1MTQ0LCAwLCA4MjcyLCAxMjc4MTIsIAorICAgIDE5OTExLCA0MjE4LCAzMDg3LCA2NDk2MCwgMTI3MjM0LCA0MzU2NCwgMCwgMCwgOTU4NCwgMTA0NjUsIDk4Mzg5MywgCisgICAgNzQzNTksIDEyNjI2LCA5MTA2LCAwLCA0MjY0MiwgMTIwMjMwLCA2NDc1MCwgOTM5MCwgMCwgNDE3OTcsIDAsIDAsIDI2NSwgCisgICAgNDE3OTUsIDY0NjY2LCAxMjY1MDgsIDQzNTMwLCAyNzUyLCAwLCAwLCA5ODM0ODUsIDU5LCAwLCA5ODM1OTMsIDAsIDkyMzcxLCAKKyAgICA3Nzg3MywgNDE4MTAsIDAsIDcwMTAsIDAsIDQxODA5LCA0MTQ5NSwgMTE5MzY0LCAwLCA0MjI1MiwgNDIyMTMsIDgwMDksIAorICAgIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA2NjI1NSwgMTMxMjcsIDEyMDA2NywgMCwgNzQzOTcsIDEyMDIzNSwgOTE3OTc3LCAKKyAgICA2NTkxNSwgMTQwMCwgNDE4MTIsIDEwNjg1LCAxOTQ4NzAsIDIxMDMsIDEwMzg3LCA0NDUzLCA0MzI3NiwgOTE3NzgzLCAKKyAgICAxMzE1OSwgMCwgNjQ4MSwgNDEyMTMsIDAsIDAsIDAsIDAsIDQxOTgzLCA3NDE5OCwgNjYxNywgOTExNiwgMTE5NjU0LCAwLCAKKyAgICA0NjIsIDY4MTEwLCAxMDQ5MywgMCwgODEyOSwgMCwgMCwgNzQ0NzEsIDY2NDQsIDExNjU4LCAwLCAxMjgyNDUsIDM0NTIsIAorICAgIDExOTA2LCA5NTgxLCAxMzg1LCAzMDk4LCAwLCAxMTkwMTMsIDQzMzQwLCAwLCA0MTAzMywgNjQ5MywgNDI2MjYsIDAsIDAsIAorICAgIDExNDI2LCA3Nzg4NywgMTY4MSwgMTE4Nzg5LCAxMjA0LCAzNzU1LCA2NDY2MSwgNzIzNSwgMTAxNzAsIDM5NjYsIDg5MTEsIAorICAgIDAsIDQxODQxLCA0MzMzOCwgMCwgMCwgNTcyNiwgNjQ5MTUsIDQyMTc1LCAwLCAwLCA0MTQ5NywgNjUwNDQsIDEyMDEwOSwgCisgICAgMjg1MSwgNDMwMTcsIDk4MzU4OSwgMCwgNDM3MywgNzgwNTgsIDAsIDk1ODcsIDE3ODksIDY2NzEsIDEyODg0MCwgMzEwMCwgCisgICAgMCwgNjUzNjAsIDAsIDkyMzY1LCA5MTc3ODksIDY0OTIyLCAwLCA4MTkwLCAxMjA4MywgMCwgMCwgNjUwNiwgNjQzMTIsIAorICAgIDc0Mzc0LCAyMzY4LCAwLCA0NDE5LCA5ODM4MzgsIDExOTEyNSwgMzQzOSwgMTgyNSwgMTE5MiwgMTIwMTA2LCA4ODkxLCAKKyAgICAzMDgwLCAxMjAyMjgsIDIzNDcsIDU0MzAsIDAsIDg5OTAsIDI4NDgsIDAsIDEyODIyMywgOTI1MjgsIDI0OSwgMCwgMCwgMCwgCisgICAgMTIwNjU4LCAwLCAwLCA4ODgzLCA5MTc4MDIsIDcyOCwgNjgxNzgsIDk5NSwgMCwgMCwgNjQ4MjYsIDAsIDkxNzc5OCwgCisgICAgMTI4MzQ4LCAwLCAxOTk0NSwgODA5MSwgNTU4LCAwLCAxMjI3MywgMTk0ODE0LCA5ODM4NDEsIDEyMTEyLCA2OTkxMiwgMCwgCisgICAgMCwgNzQ0MTksIDEyMzM1LCAxMjAxMDQsIDkxNzc5NSwgMzQ0MywgMzEyOSwgMCwgMjEwMiwgNjU0NDUsIDc4MjU4LCAKKyAgICA2NDg5MSwgMCwgNzcyNSwgNjUxMDgsIDc4MjU1LCAwLCA4NjI0LCA2OTI0NiwgMTI0NDYsIDQzMjk1LCAwLCA0MTg5NCwgMCwgCisgICAgNjI3NywgNDE2NzIsIDQxODkzLCAxMDAxMCwgMTI4Njc4LCAzNTQwLCAxMjg2NDksIDgzNSwgNzEzNDAsIDY5ODE2LCAKICAgICAxMTk4NjgsIDc0NDA4LCAwLCA3Mzk1OSwgNTQyNiwgNDI1OCwgMCwgMCwgNTQyNCwgMTI4MTI3LCA4MjgzLCAwLCA1NDM0LCAKLSAgICAwLCAwLCAxOTkxNywgMTE0MDgsIDAsIDExOTQ3LCAwLCAxNDA0LCAzMDk1LCAxMTQzMiwgMTI4MzA3LCAzNDY0LCA2NDg2LCAKLSAgICA0ODE5LCAxMjgyMzMsIDAsIDU3MCwgODA5NSwgMzY3MiwgMTE5ODY0LCAxNDk4LCA2Nzg2NiwgMCwgMCwgNDMxLCAwLCAwLCAKLSAgICAxMjgxODIsIDEyODA5NiwgNjgxNjcsIDAsIDEzMDk2LCAxMjg2NDMsIDAsIDQzNDA4LCA5NTE2LCAxMjg1MzgsIDUyNjgsIAotICAgIDQyMjMwLCA0MjIyMCwgMCwgNDQ1MCwgMTIwNTExLCAxMTU0NywgNDM0MTcsIDEyODU0MiwgMzU2LCAzNDc3LCAyMjcsIAotICAgIDEwNDg4LCA2ODIwMywgMzgyLCAxMTQxOCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQ4NCwgMjU0MSwgNjYwMzksIDAsIDc4NzE4LCAKLSAgICA5MjcyMywgMzU0OSwgMCwgOTExMCwgMTE5NjY1LCAyNzQzLCAwLCA0MzI5MCwgMTk0ODEyLCA5MDk3LCAwLCA0MzAxNSwgCi0gICAgODc4MiwgMCwgNzc2LCAyNTI0LCA0MjcwNywgODU3MywgMCwgMCwgMCwgMCwgNDI2OTQsIDY0OTQ0LCA4OTUyLCAzODU2LCAKLSAgICAxMTg4MTgsIDAsIDU4NzIsIDY0OTUsIDAsIDAsIDAsIDkyNTQzLCAwLCAxMjA3MzMsIDEyODQ5LCAzOTUzLCAxODk3LCAwLCAKLSAgICA2NTA5NCwgMTE5OTQsIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDAsIDAsIDAsIDY4NDczLCA3NDEwNCwgNTIyOCwgCi0gICAgMTI4ODA0LCA3ODY4LCA0MzE4NCwgMCwgMCwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgMCwgMTE2MiwgMCwgMjY3MSwgMCwgCi0gICAgMCwgOTI2MzIsIDkyNjMxLCAxMTg4NjUsIDQ1NTMsIDczODExLCAwLCAxOTUwMDUsIDAsIDAsIDE5OTIxLCA3NDMzMSwgCi0gICAgMTE0MjQsIDE5NTAwNiwgNDU2NywgNDE4OTEsIDAsIDAsIDU1MjQ5LCA0ODIwLCA2NTIzOSwgMTk0NjYyLCAwLCAwLCAKLSAgICA0MzA0MiwgMTE5MjEyLCAxMzc3LCAxMjg2OSwgNDg5NywgNDI4MjEsIDkyNTAsIDAsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAKLSAgICAxMTMzMSwgNjE0NywgMTk0OTQxLCA0MzI4MiwgODgzMywgMCwgMCwgNjUwNCwgNzg0MDgsIDEyNjk3OSwgMTA3MTksIDAsIAotICAgIDE4OTgsIDE0MTMsIDQyNDQzLCAwLCA4MDIsIDEyMTQxLCAwLCAxOTQ2NzEsIDY2NDgsIDEwNjcxLCAyNTI4LCAwLCA2NDc4OSwgCi0gICAgOTE2OSwgODM4LCAxMjcwOTIsIDEyMDY5NywgODQ0LCA1MDE0LCAwLCAyNTYsIDAsIDk5OTAsIDAsIDQyNzM5LCA5MTc4NTEsIAotICAgIDc1NDIsIDY1NDY0LCA5NzI2LCAwLCA2NDg5LCAxMDA0OCwgNzQzMjYsIDc4NzE5LCA2NjU3MywgMCwgNzg3MjQsIDc4NzEyLCAKLSAgICAxMTc2MSwgMTk0NjU1LCAwLCA0MTA5NCwgMCwgMCwgMCwgMCwgOTI2ODksIDYxOTYsIDY5NDUsIDE5NDYyOCwgMTk0ODkwLCAKLSAgICAxMjgxODQsIDEyMDQ5MSwgMTE4MTYsIDE5NDk0MywgNTczMywgMjkzMCwgMCwgMCwgNDEwOTgsIDAsIDQxMDkzLCAwLCAKLSAgICA2NjYyNiwgNTg4LCA5NzYwLCAwLCAxOTQ3MTcsIDEyMzgsIDIwMCwgMCwgMTY2MCwgNzM5MTYsIDAsIDExODkwNSwgNzQzNjIsIAotICAgIDAsIDkyNDg1LCAxOTQ2NTEsIDAsIDAsIDMzOTQsIDE5NDg5NCwgMTIwNjY4LCAwLCAwLCAxMjczNTgsIDY2MjE5LCAKLSAgICAxMjcxODMsIDQzMjg0LCAxOTQ2NTcsIDc4MTcsIDE4NDEsIDExMDU1LCAxMjA1MzMsIDE5NDk3OSwgMTk0OTgyLCAxNjY5LCAKLSAgICAxMDc3NiwgMTk0OTgxLCA3NzAxLCAxOTQ5ODAsIDAsIDE5NDk5NSwgMTczMiwgNDAzMCwgMCwgMzk2MywgNjY2MTEsIAotICAgIDEyNzUzMCwgNDE3NjgsIDY0OTEsIDAsIDY1MzI0LCA5MTQsIDY1MzIzLCA4MDcxLCAzNTM4LCAwLCA3ODcxMywgNjUzMjgsIAotICAgIDkyNDQxLCA3NDM2NywgNzYxNCwgMCwgMTE4MTksIDAsIDEyMDA5LCAxMjM5OSwgMCwgNjc4NTIsIDY1NTM3LCAwLCAxMDg0MSwgCi0gICAgNDM0MzAsIDUzMDEsIDAsIDkyNjE4LCA1NzM0LCA4OTYwLCAwLCA5MjUyNywgNjUzMTcsIDc3ODgwLCAwLCAwLCAwLCAKLSAgICAxMjMwNCwgMCwgMCwgNjUzMTUsIDkyNjcwLCAxMjg1MTEsIDAsIDAsIDAsIDExOTYyMSwgOTI1MjksIDc0NTM2LCAxMjQ0NywgCi0gICAgNjQ0ODYsIDEyNzM3NCwgMCwgMCwgMCwgMCwgMCwgNDI3NjcsIDEwOTE1LCAwLCAxMjAwNywgNDM2OTUsIDEyMDUyMCwgCi0gICAgMTE5NzUsIDE5NDg3OCwgMCwgOTI2MDQsIDI1NTUsIDg2MjksIDAsIDQzMTY4LCA0MTg3MiwgNDM3MDYsIDQ0OTYsIAotICAgIDE5NDg3OSwgMTI4MTQ4LCAwLCAwLCAwLCAwLCAwLCA2NDczMCwgMCwgNjY3MTQsIDY4MjIyLCAwLCAwLCA2NTU5NiwgCi0gICAgOTIzMDYsIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgMTI3ODQsIDc3OTIsIDEzOTMsIDEyNzI0MiwgNjc4NzEsIDc0Mzg2LCAKLSAgICAwLCA4MjMzLCAxMjgyMCwgMCwgNjY4MywgMTk0ODc2LCAzNDQyLCAxMjE0NCwgMjg0MSwgMTI1NDMsIDAsIDE0NzMsIAotICAgIDQyODIwLCA2NDMyOSwgMTI3ODMyLCAwLCA2ODY0MiwgNjQ4OCwgMzU3LCAxMDQ4LCA0MTEwMCwgMCwgNDExMDQsIDAsIAotICAgIDM0MDYsIDEwNTQsIDExOTA2NSwgMTA0MCwgNjU0NTAsIDAsIDQ0MzQsIDEwNjksIDAsIDExODg2MiwgNjU3MzcsIDkxNzc2NSwgCi0gICAgMTI4NzA1LCAwLCAwLCA5NjkzLCA0MTk0MywgMCwgNDE5MzEsIDQxNzU5LCAxMjc1NywgNDM1MywgMCwgMTA1OSwgOTc5MCwgCi0gICAgODk5NSwgMTI4Mjg2LCAwLCA2NTkzNywgMCwgNDE3NjQsIDEwNjQ2LCAwLCAxMTg4MzMsIDkyMzcyLCAwLCA3NDgzMCwgCi0gICAgNzg1NjksIDEyNzQzLCAwLCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIDEyMjA3LCAxMTk2MTksIDYzMzUsIAotICAgIDY2NjAyLCAxMTMxMiwgNjQ4MDcsIDAsIDAsIDQxNzY3LCAwLCAwLCA0MzAyMCwgMTI4MjcxLCAzOTU1LCA3NDI1NCwgMCwgMCwgCi0gICAgOTE3ODYxLCAwLCA3NzkyNiwgOTc3MCwgOTI0NiwgMTIyMzAsIDAsIDAsIDAsIDEwNDQ4LCA0MTc4MywgNDE3ODYsIAotICAgIDEyNzA5MywgMTI3OTcsIDI3NTUsIDY0NTcxLCA3ODU3OCwgMTk0OTI3LCA0ODU3LCAwLCA0NDI4LCAxMjc5NCwgNzM3NTUsIAotICAgIDEyODA2MSwgNzg1NzQsIDAsIDAsIDAsIDU3NDcsIDc4ODI1LCAwLCA3OTc4LCA0MTA5MiwgNzQ1NzEsIDAsIDExOTI0LCAKLSAgICA0MzgxMiwgNDIxNDQsIDY1MDE1LCAwLCA1NjMsIDAsIDAsIDEyNzk4LCAxMTI3MSwgNTcsIDAsIDAsIDkxNzg2MCwgCi0gICAgMTE5MDQzLCAwLCAxMTkxMzQsIDQzMTM3LCA2OTQsIDAsIDk4NzYsIDAsIDExOTE2OCwgMCwgNzg4MjIsIDY0NTM3LCAwLCAKLSAgICAyNzcsIDc0Mzg1LCA3MjI5LCAxMjc2MSwgMCwgMCwgMTMwMjUsIDY0ODExLCA4NzU3LCA3ODgyNCwgMCwgMTU3NCwgNzM4MSwgCi0gICAgMCwgMjUyNSwgNDg1MiwgNTc0OSwgNjg0NjUsIDEzMDI3LCA0MjgyNCwgMTIwNTc0LCAxMDM5LCA3MTUxLCAxMDE1NSwgCi0gICAgNTc0NSwgMTg4LCA0MTg1OCwgMTE1OTIsIDAsIDc0MDE1LCA5MDU1LCA0MTg1MywgNDg1OCwgOTE3NzgwLCAwLCA0MzYsIAotICAgIDQ3NzEsIDAsIDI3ODYsIDAsIDQ4NTYsIDgwNTEsIDAsIDExOTYwOSwgMCwgOTY0NCwgMCwgMCwgMCwgMTk0OTE2LCAKLSAgICAxMjA3MzIsIDY2NzEwLCAxMTg4MzQsIDAsIDczOTA2LCAwLCAxMjcxMTQsIDAsIDEwMjM0LCA1ODQzLCAxMTkzOSwgMCwgCi0gICAgNDIxNTcsIDAsIDMxNTcsIDE5NDkxOCwgNjgzOTMsIDAsIDM1MDQsIDExOTE3OCwgMCwgMTA4MjIsIDUxNDksIDY2MDI5LCAKLSAgICAxMDIyNiwgNjUxNDIsIDAsIDM1OTQsIDQyNDI0LCAxOTQ5NTksIDQwLCAxMjY1NywgMCwgMCwgMzg2LCAwLCA4ODM0LCAwLCAKLSAgICAxMjgxNSwgNDM1NzQsIDAsIDczOTA3LCAwLCA3NDE5NiwgNzIyMCwgNzQ1MDQsIDAsIDc0MzE2LCAwLCA3NzkzMiwgNDMwNCwgCi0gICAgNzQ1MDMsIDgxNjAsIDc4NzA3LCAxOTQ3NTMsIDAsIDAsIDAsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMCwgMTMzMDMsIDAsIAotICAgIDkyMzkyLCAxOTQ3NTUsIDc1OTksIDEyNzgsIDQzNjE2LCAxMzI2OSwgMCwgMCwgNzQzODcsIDc4MTc5LCA3ODU5OCwgCi0gICAgNzQ0OTIsIDYwOTcsIDc1NjgsIDg3ODAsIDQ5ODIsIDEyNzQ2NCwgNzQ1MDEsIDE5NDc2MywgNzg1OTIsIDE5NDc2MiwgCi0gICAgMjY3MiwgMzczNSwgMTI3NDcxLCAxMzEzOCwgNDIyNjYsIDk0ODQsIDEwNzI0LCA0MTIwMiwgMTE5MDI0LCAwLCA0Mzc0MiwgCi0gICAgMCwgOTQ4NywgMTE5OTU5LCAxMTkxMTcsIDM4NDIsIDEyODc2OCwgNzg2NjgsIDEyNDQyLCA2MTkzLCA5NzkxLCAxMjc5NzYsIAotICAgIDAsIDQyNTE2LCA3MjI4LCA3NTU5LCA3NDgwMywgNzg0NjgsIDc4NzMsIDExMzk5LCAxMTkyMTksIDE5NDY5MSwgMTk0ODU1LCAKLSAgICAxOTQ2OTAsIDE5NDg1NywgMzYwNCwgMCwgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgNDI1MDcsIDE5NjIsIAotICAgIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAwLCAyMDcyLCA5MjMxMiwgNjk5NSwgNzQxNzMsIDU0MzcsIDc0MTc0LCAKLSAgICAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDAsIDE5OSwgMTk0ODQzLCA0MTA1LCAxOTQ4NDUsIDE5NDY5OSwgMTk0ODQ3LCAKLSAgICAxOTQ3MTAsIDExOTg3NSwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ4MCwgMTk1MDcwLCA2NDcyLCA2NTgxNCwgCi0gICAgNzM5NTQsIDAsIDQ3MjQsIDAsIDAsIDkxOTEsIDAsIDY0NDMyLCAwLCAwLCAxOTUwMjQsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAKLSAgICAwLCA2NjgwLCAxOTUwNDIsIDAsIDE5NTA1MSwgNjY3OSwgNzQ0MTIsIDkyMjUxLCAxOTQ4NjYsIDc0NDIxLCAxMTM4MiwgMCwgCi0gICAgMCwgMTI3ODkxLCAxMjc0ODQsIDE5NDgzMywgMTk0ODMyLCA2NjgxLCAxMjc0ODIsIDEyNjkzLCAxOTQ4MzYsIDQyNzI3LCAKLSAgICAxOTQ4MzgsIDEyODI1MiwgNzgxOTUsIDY1NDQyLCAxMTk2MTAsIDY5NzMzLCA5OTg5LCA0MzI0OCwgNjYyNDgsIDE5NDgxNiwgCi0gICAgMCwgMTk0ODE4LCAxMjg4NDUsIDE5NDgyMCwgMTk0ODE5LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgMTk0ODI1LCAKLSAgICA3MzkyNywgOTI0NDQsIDE5NDczNiwgNjU3NDYsIDEyNzQ3NiwgNzQ0MDksIDc0Mzg5LCAxMjg2OTYsIDQzNDIsIDQyODM5LCAKLSAgICAxOTQ4MzEsIDE2NzcsIDAsIDAsIDE5NDgwNiwgOTE3ODU1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgCi0gICAgMTAxNjAsIDAsIDAsIDc1ODUsIDY1MTY5LCAyMDUyLCA0MzA4LCA5MjE3NCwgNzQxNzcsIDc1MDUsIDU0MywgNjQ5MTYsIAotICAgIDY0NzM2LCAwLCAwLCA2NDY1NSwgMCwgMTE4OTIyLCAyMDY0LCAwLCA0MzE1OCwgNzkwMiwgMCwgNjUyNjUsIDE5NDYzOSwgMCwgCi0gICAgMTI3MTcwLCAwLCAwLCAwLCAwLCAxMjk5NCwgOTI3MjgsIDEwODI4LCAwLCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIDAsIAotICAgIDAsIDAsIDUwNiwgNzQ1NzMsIDQxMTk0LCA2NTczNSwgMjA1NSwgNDMyNTUsIDQxMTk1LCAwLCA4MTY5LCAwLCA4ODQxLCAwLCAKLSAgICA1MTYsIDAsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgNzQzMzMsIDEyMDE4MiwgCi0gICAgNzQ1MjAsIDc0MzA4LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgMTIwMTc0LCA2NTg0LCA3NzQ5LCAKLSAgICAxMTAzNywgMCwgMTc1OCwgMCwgMTA2NjcsIDEwNTYwLCAxMjAxOTcsIDkyNTkzLCAxOTM1LCAxMTUxNywgMTIwMTkzLCAKKyAgICA5ODM1OTAsIDAsIDE5OTE3LCAxMTQwOCwgMCwgMTE5NDcsIDAsIDE0MDQsIDMwOTUsIDExNDMyLCAxMjgzMDcsIDM0NjQsIAorICAgIDY0ODYsIDQ4MTksIDEyODIzMywgMCwgNTcwLCA4MDk1LCAzNjcyLCAxMTk4NjQsIDE0OTgsIDY3ODY2LCAwLCAxMjg1MzksIAorICAgIDQzMSwgMCwgMCwgMTI4MTgyLCAxMjgwOTYsIDY4MTY3LCA5ODM2NTQsIDEzMDk2LCAxMjg2NDMsIDAsIDQzNDA4LCA5NTE2LCAKKyAgICAxMjg1MzgsIDUyNjgsIDQyMjMwLCA0MjIyMCwgMCwgNDQ1MCwgMTIwNTExLCAxMTU0NywgNDM0MTcsIDEyODU0MiwgMzU2LCAKKyAgICAzNDc3LCAyMjcsIDEwNDg4LCA2ODIwMywgMzgyLCAxMTQxOCwgMCwgMTk1MDY2LCAwLCAwLCAwLCAwLCA2NDg0LCAyNTQxLCAKKyAgICA2NjAzOSwgMCwgNzg3MTgsIDkyNzIzLCAzNTQ5LCAwLCA5MTEwLCAxMTk2NjUsIDI3NDMsIDAsIDQzMjkwLCAxOTQ4MTIsIAorICAgIDkwOTcsIDAsIDQzMDE1LCA4NzgyLCAwLCA3NzYsIDI1MjQsIDQyNzA3LCA4NTczLCAwLCAxMjY0OTQsIDAsIDAsIDQyNjk0LCAKKyAgICA2NDk0NCwgODk1MiwgMzg1NiwgMTE4ODE4LCAwLCA1ODcyLCA2NDk1LCAwLCAwLCAwLCA5MjU0MywgMCwgMTIwNzMzLCAKKyAgICAxMjg0OSwgMzk1MywgMTg5NywgMCwgNjUwOTQsIDExOTk0LCA0MzM5LCA3NDU1NiwgOTI2NTQsIDY3ODQzLCAwLCAwLCAwLCAKKyAgICA2ODQ3MywgNzQxMDQsIDUyMjgsIDEyODgwNCwgNzg2OCwgNDMxODQsIDAsIDAsIDczOTg2LCA0MzQzOCwgMCwgNDMwMjIsIDAsIAorICAgIDExNjIsIDkxNzg0NywgMjY3MSwgMCwgMCwgOTI2MzIsIDkyNjMxLCAxMTg4NjUsIDQ1NTMsIDczODExLCAwLCAxOTUwMDUsIAorICAgIDAsIDAsIDE5OTIxLCA3NDMzMSwgMTE0MjQsIDE5NTAwNiwgNDU2NywgNDE4OTEsIDAsIDk4Mzc3OSwgNTUyNDksIDQ4MjAsIAorICAgIDY1MjM5LCAxOTQ2NjIsIDAsIDE5NDY2NSwgNDMwNDIsIDExOTIxMiwgMTM3NywgMTI4NjksIDQ4OTcsIDQyODIxLCA5MjUwLCAKKyAgICAwLCA0NDM4LCA2NDM4NSwgMCwgMTc1MywgMTEzMzEsIDYxNDcsIDE5NDk0MSwgNDMyODIsIDg4MzMsIDAsIDAsIDY1MDQsIAorICAgIDc4NDA4LCAxMjY5NzksIDEwNzE5LCAwLCAxODk4LCAxNDEzLCA0MjQ0MywgMCwgODAyLCAxMjE0MSwgMCwgMTk0NjcxLCAKKyAgICA2NjQ4LCAxMDY3MSwgMjUyOCwgMCwgNjQ3ODksIDkxNjksIDgzOCwgMTIwMDg3LCAxMjA2OTcsIDg0NCwgNTAxNCwgMCwgCisgICAgMjU2LCAwLCA5OTkwLCAwLCA0MjczOSwgOTE3ODUxLCA3NTQyLCA2NTQ2NCwgOTcyNiwgMCwgNjQ4OSwgMTAwNDgsIDc0MzI2LCAKKyAgICA3ODcxOSwgNjY1NzMsIDAsIDc4NzI0LCA3ODcxMiwgMTE3NjEsIDE5NDY1NSwgMCwgNDEwOTQsIDAsIDAsIDE5NDg5MywgMCwgCisgICAgOTI2ODksIDYxOTYsIDY5NDUsIDkzOTY5LCAxOTQ4OTAsIDEyODE4NCwgMTIwNDkxLCAxMTgxNiwgMTk0OTQzLCA1NzMzLCAKKyAgICAyOTMwLCAwLCAwLCA0MTA5OCwgMCwgNDEwOTMsIDAsIDY2NjI2LCA1ODgsIDk3NjAsIDAsIDE5NDcxNywgMTIzOCwgMjAwLCAKKyAgICA5ODMyMDUsIDE2NjAsIDczOTE2LCAwLCAxMTg5MDUsIDc0MzYyLCAwLCA5MjQ4NSwgMTk0NjUxLCAwLCA5ODM2OTcsIDMzOTQsIAorICAgIDE5NDg5NCwgMTIwNjY4LCAwLCAwLCAxMjczNTgsIDY2MjE5LCAxMjcxODMsIDQzMjg0LCAxOTQ2NTYsIDc4MTcsIDE4NDEsIAorICAgIDExMDU1LCAxMjA1MzMsIDE5NDk3OSwgMTk0OTgyLCAxNjY5LCAxMDc3NiwgMTk0OTgxLCA3NzAxLCAxOTQ5ODAsIDAsIAorICAgIDE5NDk5NSwgMTczMiwgNDAzMCwgMCwgMzk2MywgNjY2MTEsIDEyNzUzMCwgNDE3NjgsIDY0OTEsIDAsIDY1MzI0LCA5MTQsIAorICAgIDY1MzIzLCA4MDcxLCAzNTM4LCAwLCAyMjg3LCA2NTMyOCwgOTI0NDEsIDc0MzY3LCA3NjE0LCAwLCAxMTgxOSwgMCwgCisgICAgMTIwMDksIDEyMzk5LCAwLCA2Nzg1MiwgNjU1MzcsIDAsIDEwODQxLCA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIAorICAgIDg5NjAsIDAsIDkyNTI3LCA2NTMxNywgNzc4ODAsIDAsIDAsIDAsIDEyMzA0LCAwLCAwLCA2NTMxNSwgOTI2NzAsIDEyODUxMSwgCisgICAgMCwgMCwgMCwgMTE5NjIxLCA5MjUyOSwgNzQ1MzYsIDEyNDQ3LCA2NDQ4NiwgMTI3Mzc0LCAxMjY1NjIsIDk4MzEyOSwgMCwgCisgICAgMCwgOTgzNzkzLCA0Mjc2NywgMTA5MTUsIDAsIDEyMDA3LCA0MzY5NSwgMTIwNTIwLCAxMTk3NSwgMTk0ODc4LCAwLCAKKyAgICA5MjYwNCwgMjU1NSwgODYyOSwgMTI4NjQwLCA0MzE2OCwgNDE4NzIsIDQzNzA2LCA0NDk2LCAxOTQ4NzksIDEyODE0OCwgCisgICAgMTIwMjQxLCAwLCAwLCAwLCAwLCA2NDczMCwgNzAwNDEsIDY2NzE0LCA2ODIyMiwgMCwgNzAwNzYsIDY1NTk2LCA5MjMwNiwgCisgICAgMTE0MTYsIDQyODAsIDY3NjU1LCA4NzY1LCAxMjc4NCwgNzc5MiwgMTM5MywgMTI2NDczLCA2Nzg3MSwgNzQzODYsIDAsIAorICAgIDgyMzMsIDEyODIwLCAwLCA2NjgzLCAxOTQ4NzYsIDM0NDIsIDEyMTQ0LCAyODQxLCAxMjU0MywgMCwgMTQ3MywgNDI4MjAsIAorICAgIDY0MzI5LCAxMjc4MzIsIDAsIDY4NjQyLCA2NDg4LCAzNTcsIDEwNDgsIDQxMTAwLCAwLCA0MTEwNCwgOTQwMDMsIDM0MDYsIAorICAgIDEwNTQsIDcxMzIwLCAxMDQwLCA2NTQ1MCwgMCwgNDQzNCwgMTA2OSwgMCwgMTE4ODYyLCA2NTczNywgOTE3NzY1LCAKKyAgICAxMjg3MDUsIDAsIDk4MzY4NCwgOTY5MywgNDE5NDMsIDEyNjU2NCwgNDE5MzEsIDQxNzU5LCAxMjc1NywgNDM1MywgMCwgCisgICAgMTA1OSwgOTc5MCwgODk5NSwgMTE5OTc0LCA5ODM2ODcsIDY1OTM3LCAwLCA0MTc2NCwgMTA2NDYsIDAsIDExODgzMywgCisgICAgOTIzNzIsIDAsIDc0ODMwLCA3ODU2OSwgMTI3NDMsIDk4MzY4MCwgNjQ4MCwgOTE3NzYxLCA0MTc3OSwgNDI1ODAsIDY2NjAxLCAKKyAgICAxMjIwNywgMTE5NjE5LCA2MzM1LCA2NjYwMiwgMTEzMTIsIDY0ODA3LCAwLCAwLCA0MTc2NywgMTE5NjI5LCA5ODM3NTUsIAorICAgIDQzMDIwLCAxMjgyNzEsIDM5NTUsIDc0MjU0LCAwLCA5ODM3NDUsIDkxNzg2MSwgMCwgNzc5MjYsIDk3NzAsIDkyNDYsIAorICAgIDEyMjMwLCAwLCAwLCAwLCAxMDQ0OCwgNDE3ODMsIDQxNzg2LCAxMjcwOTMsIDEyNzk3LCAyNzU1LCA2NDU3MSwgNzg1NzgsIAorICAgIDE5NDkyNywgNDg1NywgMCwgNDQyOCwgMTI3OTQsIDczNzU1LCAxMjgwNjEsIDc4NTc0LCAwLCA3NDI4NCwgMCwgNTc0NywgCisgICAgNzg4MjUsIDAsIDc5NzgsIDQxMDkyLCA3NDU3MSwgMCwgMTE5MjQsIDQzODEyLCA0MjE0NCwgNjUwMTUsIDAsIDU2MywgMCwgCisgICAgOTgzNjgyLCAxMjc5OCwgMTEyNzEsIDU3LCAwLCAwLCA5MTc4NjAsIDExOTA0MywgMCwgOTQwNTEsIDQzMTM3LCA2OTQsIDAsIAorICAgIDk4NzYsIDAsIDExOTE2OCwgMCwgNzg4MjIsIDY0NTM3LCAwLCAyNzcsIDc0Mzg1LCA3MjI5LCAxMjc2MSwgMCwgMCwgCisgICAgMTMwMjUsIDY0ODExLCA4NzU3LCA3ODgyNCwgMTI2NDc4LCAxNTc0LCA3MzgxLCAwLCAyNTI1LCA0ODUyLCA1NzQ5LCAKKyAgICA2ODQ2NSwgMTMwMjcsIDQyODI0LCAxMjA1NzQsIDEwMzksIDcxNTEsIDEwMTU1LCA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgCisgICAgMCwgNzQwMTUsIDkwNTUsIDQxODUzLCA0ODU4LCA5MTc3ODAsIDAsIDQzNiwgNDc3MSwgMCwgMjc4NiwgMCwgNDg1NiwgCisgICAgODA1MSwgMCwgMTE5NjA5LCA3MTMyNywgOTY0NCwgMCwgMCwgMCwgMTk0OTE2LCAxMjA3MzIsIDY2NzEwLCAxMTg4MzQsIAorICAgIDk4MzM1MSwgNzM5MDYsIDEyODY4MCwgMTI3MTE0LCAwLCAxMDIzNCwgNTg0MywgMTE5MzksIDAsIDQyMTU3LCAwLCAzMTU3LCAKKyAgICAxOTQ5MTgsIDY4MzkzLCAwLCAzNTA0LCAxMTkxNzgsIDAsIDEwODIyLCA1MTQ5LCA2NjAyOSwgMTAyMjYsIDY1MTQyLCAKKyAgICAxMjgwMjUsIDM1OTQsIDQyNDI0LCAxOTQ5NTksIDQwLCAxMjY1NywgOTgzNjU2LCAwLCAzODYsIDAsIDg4MzQsIDAsIAorICAgIDEyODE1LCA0MzU3NCwgMCwgNzM5MDcsIDAsIDc0MTk2LCA3MjIwLCA3NDUwNCwgMCwgNzQzMTYsIDAsIDY1MzIyLCA0MzA0LCAKKyAgICA3NDUwMywgODE2MCwgNzg3MDcsIDE5NDc1MywgMCwgMCwgMTI4NTI2LCAxMzQ4LCA5MjM0OSwgNzg1OTcsIDEyNjUzOSwgCisgICAgMTMzMDMsIDAsIDkyMzkyLCAxOTQ3NTUsIDc1OTksIDEyNzgsIDQzNjE2LCAxMzI2OSwgMCwgMCwgNzQzODcsIDc4MTc5LCAKKyAgICA3ODU5OCwgNzQ0OTIsIDYwOTcsIDc1NjgsIDg3ODAsIDQ5ODIsIDEyNzQ2NCwgNzQ1MDEsIDE5NDc2MywgNzg1OTIsIAorICAgIDE5NDc2MiwgMjY3MiwgMzczNSwgMTI3NDcwLCAxMzEzOCwgNDIyNjYsIDk0ODQsIDEwNzI0LCA0MTIwMiwgNzEzNjQsIDAsIAorICAgIDQzNzQyLCAwLCA5NDg3LCAxMTk5NTksIDExOTExNywgMzg0MiwgMTI4NzY4LCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIAorICAgIDEyNzk3NiwgMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA3ODQ2OCwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAKKyAgICAxOTQ4NTUsIDE5NDY5MCwgMTk0ODU3LCAzNjA0LCAxMjA2ODMsIDExOTE4OCwgMTI4ODc3LCA3ODU0MCwgNzg1NDEsIAorICAgIDQyNTA3LCAxOTYyLCA0MzMwNSwgNzg0NzYsIDQyNTA1LCAxMTY2MCwgMCwgMjA3MiwgOTIzMTIsIDY5OTUsIDc0MTczLCAKKyAgICA1NDM3LCA3NDE3NCwgMTA2NjksIDg3MDIsIDc5NjQsIDkyMzUyLCAwLCAxOTksIDE5NDg0MywgNDEwNSwgMTk0ODQ1LCAKKyAgICAxOTQ2OTksIDE5NDg0NywgMTk0NzEwLCAxMTk4NzUsIDEzMTQ4LCA3NTYwLCA3ODQ3OSwgOTIyNiwgNzg0ODAsIDE5NTA3MCwgCisgICAgNjQ3MiwgNjU4MTQsIDczOTU0LCAwLCA0NzI0LCAwLCAwLCA5MTkxLCAwLCA2NDQzMiwgOTgzODA4LCA5ODMyNDEsIAorICAgIDE5NTAyNCwgMTAxOTYsIDc4ODYsIDAsIDY1ODUsIDAsIDY2ODAsIDE5NTA0MiwgMCwgMTk1MDUxLCA2Njc5LCA3NDQxMiwgCisgICAgOTIyNTEsIDE5NDg2NiwgNzQ0MjEsIDExMzgyLCA5ODM2MjIsIDk4MzYyOCwgMTI3ODkxLCAxMjc0ODQsIDE5NDgzMywgCisgICAgMTk0ODMyLCA2NjgxLCAxMjc0ODIsIDEyNjkzLCAxOTQ4MzYsIDQyNzI3LCA3ODE5NiwgMTI4MjUyLCA3ODE5NSwgNjU0NDIsIAorICAgIDExOTYxMCwgNjk3MzMsIDk5ODksIDQzMjQ4LCA2NjI0OCwgMTk0ODE2LCAwLCAxOTQ4MTgsIDEyODg0NSwgMTk0ODIwLCAKKyAgICAxOTQ4MTksIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCAxOTQ4MjUsIDczOTI3LCA5MjQ0NCwgMTk0NzM2LCAKKyAgICA2NTc0NiwgMTI3NDc2LCA2OTg4OSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIDE5NDgzMSwgMTY3NywgMCwgMCwgCisgICAgMTI2NTkwLCA5MTc4NTUsIDExMDkxLCAxMTAxMSwgMjcxOSwgMCwgMCwgMTE5NTk1LCAxMDE2MCwgMCwgMCwgNzU4NSwgCisgICAgNjUxNjksIDIwNTIsIDQzMDgsIDkyMTc0LCA0MzAwMCwgNzUwNSwgNTQzLCA2NDkxNiwgNjQ3MzYsIDAsIDAsIDY0NjU1LCAwLCAKKyAgICAxMTg5MjIsIDIwNjQsIDAsIDQzMTU4LCA3OTAyLCAwLCA2NTI2NSwgMTk0NjM5LCAwLCAxMjcxNzAsIDAsIDAsIDAsIDAsIAorICAgIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDk4MzkzNCwgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCAwLCAwLCAwLCA1MDYsIAorICAgIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgOTgzNjcxLCA4ODQxLCAwLCA1MTYsIAorICAgIDkzOTc0LCAyMDYzLCAxMTkwNTEsIDM0LCAxMjg4NTAsIDEyMDE4NiwgMTE1MDQsIDE2MTIsIDc0MzMzLCAxMjAxODIsIAorICAgIDExODI3LCA3NDMwOCwgMTIwMDEsIDEyMDE3OCwgMTAyNDIsIDY0NTY0LCAxMjAxNzksIDY3OTg2LCA2NTg0LCA3NzQ5LCAKKyAgICAxMTAzNywgMCwgMTc1OCwgMTI3MDkyLCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIDE5MzUsIDExNTE3LCAxMjAxOTMsIAogICAgIDEyMDE5NiwgMTIwMTk1LCAxOTMxLCAxMjAxODksIDc0ODM5LCAxMjAxOTEsIDEyMTcsIDY0NzAyLCAxMjY0MywgODI1LCAKICAgICAxMjc4MzgsIDE5NDkwNSwgMTIyOTQsIDkyNDI4LCA3ODgzNCwgOTEzOCwgNzg4MzEsIDc4ODMzLCAxMjYzMSwgNzg4MjksIAogICAgIDExMDgwLCA3NDU1NCwgNjQwMDAsIDU1OTEsIDEyMzksIDAsIDExMzEzLCAwLCAzNDAzLCAwLCAwLCA2NDM2NCwgOTIyNjksIAotICAgIDAsIDc0NTgyLCA4OTk4LCAxMjk4OCwgMCwgOTE1MiwgMCwgMCwgMTk0ODk4LCA2NzU4OSwgNDE4NTAsIDY0MjkwLCAzNDMzLCAKLSAgICA5MjM5MywgMTI2MTUsIDE1OTQsIDQyMTkyLCA2OTE0LCA2NzYwMywgMCwgMTE5NTY5LCA3NDU2NSwgNDEzNTMsIDY3NjAyLCAKLSAgICA2NzYxMSwgNDMzNywgMCwgMTI3Mjk2LCA5MTgsIDY1MDM1LCA0MTM1MSwgNzY4MSwgMTk0OTAwLCA0MjU3NywgNDEzOTMsIAotICAgIDEyNjY4LCAxOTQ5MDQsIDI0NzcsIDEyNzI4NSwgMCwgMTI3MzAxLCAwLCA2NzYwNCwgMTk0ODgwLCAxMjcyMzUsIDU3MywgCi0gICAgMTI3MjgyLCAxOTQ4ODQsIDExNDE3LCAxOTQ4ODYsIDExOTgxNCwgMTk0ODg4LCA2NzU5OSwgMCwgMTk0ODg5LCA2NzYwNywgCi0gICAgMTE0ODIsIDAsIDM5ODEsIDMzNTcsIDAsIDQyMjIzLCA0MjA3LCAxMjg4LCA3ODg0MiwgNzg4MzksIDY4NDE5LCA3ODgzNywgCi0gICAgMTE1ODksIDQyMTk1LCAxOTQ4NzIsIDE5NDU5OSwgMTI3MjYzLCA2NDYwMiwgNjc2MTgsIDkyNTM5LCAwLCA0Mjc4OCwgCi0gICAgNjg0MTYsIDY0NDgwLCAxOTQ4NzUsIDg0MjMsIDMzNDgsIDQ0OCwgNjg0NzYsIDk3MTcsIDAsIDAsIDk5NywgMCwgMCwgCi0gICAgOTI1NzcsIDAsIDExNDQwLCAxMTM3OSwgNDIwMDAsIDEzMTM5LCA0MjIyMSwgNjUwMTMsIDEyNjk5OSwgMTI3NzYwLCAKLSAgICA3Mzc5NiwgMCwgMTE5MjI4LCAxMjAzNSwgMCwgMjgxOCwgMCwgMCwgNzM3OTMsIDAsIDQxNzIsIDAsIDAsIDgzNzMsIAorICAgIDAsIDc0NTgyLCA4OTk4LCAxMjk4OCwgMCwgOTE1MiwgOTgzODQwLCAwLCAxMjY0ODQsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIAorICAgIDM0MzMsIDkyMzkzLCAxMjYxNSwgMTU5NCwgNDIxOTIsIDY5MTQsIDY3NjAzLCAwLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgCisgICAgNjc2MDIsIDY3NjExLCA0MzM3LCAwLCAxMjcyOTYsIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCAKKyAgICA0MTM5MywgMTI2NjgsIDE5NDkwNCwgMjQ3NywgMTI3Mjg1LCAwLCAxMjczMDEsIDAsIDY3NjA0LCAxOTQ4ODAsIDEyNzIzNSwgCisgICAgNTczLCAxMjcyODIsIDE5NDg4NCwgMTE0MTcsIDE5NDg4NiwgMTE5ODE0LCAxOTQ4ODgsIDY3NTk5LCAwLCAxOTQ4ODksIAorICAgIDY3NjA3LCAxMTQ4MiwgMCwgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4ODQyLCA3ODgzOSwgNjg0MTksIAorICAgIDc4ODM3LCAxMTU4OSwgNDIxOTUsIDE5NDg3MiwgMTk0NTk5LCAxMjcyNjMsIDY0NjAyLCA2NzYxOCwgOTI1MzksIDAsIAorICAgIDQyNzg4LCA2ODQxNiwgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2ODQ3NiwgOTcxNywgMCwgMCwgOTk3LCAwLCAKKyAgICAwLCA5MjU3NywgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAxMjc3NjAsIAorICAgIDczNzk2LCAwLCAxMTkyMjgsIDEyMDM1LCAwLCAyODE4LCAwLCA3NDQxMSwgNzM3OTMsIDAsIDQxNzIsIDAsIDAsIDgzNzMsIAogICAgIDEwODczLCAxMjE5NywgMCwgMCwgOTIyNjUsIDY5NzA2LCAwLCA3ODIxMCwgMCwgMTI4MTEwLCAxOTQ4NjUsIDEyNjk4MiwgCiAgICAgNzQ1NjMsIDY0ODI4LCAxMTQxOSwgMTk0ODY4LCA3NjYsIDEyNTcsIDAsIDExODg0NSwgMTEzODEsIDMyNjUsIDY2NjE3LCAKLSAgICAzMjc0LCAxMjczNjUsIDAsIDAsIDAsIDc0NTIyLCA0MTk4OSwgMCwgMCwgMTI4Nzk4LCAzMjYzLCAwLCA2NTY3MiwgMCwgCi0gICAgMzI3MCwgNjQ1MzksIDExNDg5LCAwLCAwLCAwLCAwLCA5NTA1LCA2NTUxOCwgMTk0Nzc2LCA3NTYsIDE5NDYwNSwgMCwgMCwgCi0gICAgMCwgNzI2MSwgMCwgMTg2LCAwLCAxMTkxNTYsIDU3NzAsIDEzMTc5LCA2NTgzMCwgMTI2MTIsIDEyOTQ5LCA2NDg1NiwgCi0gICAgMTI4MDAsIDAsIDc0MjAzLCA2NDcxOCwgMCwgMCwgOTI0MzQsIDExODkyOSwgMCwgMTE1NzgsIDAsIDExOTI5NiwgMCwgMCwgCi0gICAgMCwgMCwgNzQ1NjgsIDkyNTQsIDAsIDE3OTQsIDEyMDIxNywgNjQ1MjEsIDU2MjQsIDEyMDIyMCwgMTIwMjIxLCAxMTk5NTgsIAotICAgIDEyMDIyMywgMzYxNywgNjY2MzYsIDY0ODg2LCAxMjAyMTEsIDEyMDIxMiwgMTIwMjEzLCAxMjAyMTQsIDE4NzIsIDY2NTA4LCAKLSAgICAxMjA0NjcsIDQxMDc5LCAxMDc0OCwgNTUwMiwgMTE5MzMwLCA0NDUyLCAwLCAwLCA5MjUyNiwgNDUxMSwgMCwgMCwgNjQ2NzgsIAotICAgIDExNDI1LCAwLCA0MzI0NSwgMTIzMSwgMTk0NzgzLCAwLCAwLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgCi0gICAgODY5NCwgOTU0NiwgMCwgMCwgMTIwNDc4LCAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgCi0gICAgMTE5NjI2LCA3ODIwMiwgNjQwNTgsIDg3OTksIDQyMTMxLCAwLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCA4MzcsIAotICAgIDEwNTY3LCAwLCA0MzEwMywgMCwgMTIwNzU0LCAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA2NjQ2NCwgMTA3NTYsIDAsIAotICAgIDQyNjA2LCA2NDA0NSwgNjQwNDQsIDQzOTc5LCAxMDA3NiwgNjQwNDAsIDQzMDYwLCAxOTQ5NDIsIDEwMzQsIDMzOTIsIAotICAgIDEyNzc3MSwgNDMwOTEsIDY0MDMzLCA2NDAzMiwgNDI3MzUsIDY0MDM4LCA2NDAzNywgNjQwMzYsIDY0MDM1LCA0MjkxLCAKLSAgICAxOTQ5MjgsIDY0MDE1LCA2NDAxNCwgNjQ2ODEsIDE5NDkzMCwgMCwgNzgxNDUsIDAsIDQzMDkwLCAwLCAzNDc2LCA4OTczLCAKLSAgICA2NDAxMiwgNDI0NzMsIDY0MDEwLCA2NDAwOCwgNjQwMDcsIDIwMDMsIDc3MDYsIDY0NTE3LCA3ODE1MywgMjUzOCwgNjQwMDksIAotICAgIDIwNCwgMCwgNDgwMiwgNDExMSwgODIzOSwgOTA5OCwgNDgwNSwgNjQwMDEsIDY0MDU3LCA3ODg1LCA3MjQ3LCA2NDA1NCwgMCwgCi0gICAgMCwgNDc2NywgOTM0MywgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCAKLSAgICA0MTM0MCwgMTE4OTc1LCAxOTQ4MzUsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIDAsIDg0ODksIDE5NDIsIDAsIDE5NDgzNCwgCi0gICAgNDI1MjAsIDEyODI0OSwgMCwgMCwgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAwLCA2NDAyNSwgCi0gICAgOTE2NywgNDIxNTEsIDc4MjQ0LCAwLCAyMDI2LCA2NDAxOSwgNjQwMTgsIDY0MDE3LCA2NDAxNiwgMTI3NjgsIDAsIDc1ODIsIAotICAgIDc4MjUyLCA3ODI0OCwgNzc5MTQsIDc4MjQ2LCA3ODI0NywgMCwgNzc5MTUsIDc4NzY2LCA2Nzg4LCAxMzA5NCwgNzc5MjAsIAotICAgIDc1MzIsIDQxNDE0LCA3ODUyMCwgMzE3OSwgNzg1MTgsIDY0NzY5LCA3ODUxNCwgNzg1MTcsIDExNDYxLCA3NDQ1NCwgCi0gICAgMTA3NTEsIDkwNTEsIDEyMDcyMCwgNjcwOCwgMTA1MzUsIDAsIDY4MjE4LCA1NTI3NCwgMjAwOCwgNjQwMzEsIDY0MDMwLCAKLSAgICAyOTQsIDQxODc0LCAwLCAxMjY5OTEsIDY1OTI5LCAwLCAwLCAwLCAwLCA2NDAyOCwgODE0NiwgNjQwMjYsIDQxNzg4LCAKLSAgICAxOTQ4NDQsIDAsIDExODc5NSwgNjM0MywgNDMyNDcsIDExOTg4OCwgMCwgMTE5ODg2LCAxMTk4OTEsIDExOTg5MiwgCi0gICAgMTE5ODg5LCAxMTQzMywgMTE5ODk1LCAxMTk4OTYsIDAsIDc4MDEsIDY1NTc4LCAxOTQ4MzksIDEyOTE1LCA0Mzk2OCwgCi0gICAgMzI5NywgOTY5OSwgMTk0OTU1LCAxMTM1LCAwLCAwLCAxMjg1MjUsIDE5OTUsIDY3MjIsIDAsIDAsIDI1NTIsIDQxNTQ2LCAKLSAgICA2MCwgNjgzOTQsIDg2NDksIDQxNTQ5LCA3ODQ5NiwgMCwgMCwgNjY4MiwgMCwgNzg2NzksIDY0NzEwLCA0MTU0NywgMCwgCi0gICAgMjAxMywgMTI4MjkxLCA3ODUzMCwgNzg1MzIsIDc4NTI4LCA3ODUyOSwgMTI4MzIsIDc4NDkzLCA4MDgxLCA4MzYyLCAzNTM3LCAKLSAgICAxMTk5MDgsIDkxMzcsIDcxNTUsIDg5OTksIDAsIDc4NTMzLCAzNDY2LCAwLCAwLCAxOTk2LCAwLCAzNDUzLCA2MjgyLCAwLCAKLSAgICAyMDAyLCAyMDAwLCAxMjAxNzUsIDUzNywgMCwgNDE3OSwgNjUxMTksIDE5OTgsIDAsIDE4NDIsIDAsIDkyNjc0LCA5NjI4LCAKLSAgICA2ODQ0NiwgMTIwODEsIDk4MjYsIDY0NTAyLCAxNzY3LCAwLCAwLCAwLCAxMjAyMDEsIDAsIDAsIDAsIDMwNTksIDQ0MDI0LCAKLSAgICAxMjAyMDQsIDExOTk1MywgOTI2OTMsIDAsIDAsIDkyNDUyLCA0MTAwLCA5MjAsIDE4MTEsIDEzNTUsIDAsIDAsIDM1OTIsIAotICAgIDEwMDc4LCAwLCAwLCAwLCA4NTkyLCA2NTg3MCwgNjgxNjQsIDEyODc5MiwgMTA3NDIsIDAsIDQyOTE4LCAxOTk0LCA5MjgxLCAKLSAgICAzMjk2LCAxMjg2NSwgMTk5NywgMTg5NSwgCisgICAgMzI3NCwgMTI3MzY1LCAxMjY1MjMsIDk0MDQyLCA5ODM5NDEsIDc0NTIyLCA0MTk4OSwgMCwgMCwgMTI4Nzk4LCAzMjYzLCAwLCAKKyAgICA2NTY3MiwgMCwgMzI3MCwgNjQ1MzksIDExNDg5LCAwLCAwLCAwLCAwLCA5NTA1LCA2NTUxOCwgMTk0Nzc2LCA3NTYsIAorICAgIDE5NDYwNSwgMCwgMCwgMCwgNzI2MSwgMCwgMTg2LCAwLCAxMTkxNTYsIDU3NzAsIDEzMTc5LCA2NTgzMCwgMTI2MTIsIAorICAgIDEyOTQ5LCA2NDg1NiwgMTI4MDAsIDk4Mzg5MiwgNzQyMDMsIDY0NzE4LCAxMTUwNywgMCwgOTI0MzQsIDExODkyOSwgMCwgCisgICAgMTE1NzgsIDAsIDExOTI5NiwgMCwgMCwgMCwgMCwgNzQ1NjgsIDkyNTQsIDAsIDE3OTQsIDEyMDIxNywgNjQ1MjEsIDU2MjQsIAorICAgIDEyMDIyMCwgMTIwMjIxLCAxMTk5NTgsIDEyMDIyMywgMzYxNywgNjY2MzYsIDY0ODg2LCA5NDA2MSwgMTIwMjEyLCAKKyAgICAxMjAyMTMsIDEyMDIxNCwgMTg3MiwgNjY1MDgsIDEyMDQ2NywgNDEwNzksIDEwNzQ4LCA1NTAyLCAxMTkzMzAsIDQ0NTIsIDAsIAorICAgIDk4Mzc2MiwgOTI1MjYsIDQ1MTEsIDAsIDk4Mzg2OCwgNjQ2NzgsIDExNDI1LCAwLCA0MzI0NSwgMTIzMSwgMTk0NzgzLCAKKyAgICA2OTkwMywgMCwgOTAwMywgODE5MiwgMCwgNTMwNSwgOTY1MywgMTA2MTYsIDg2OTQsIDk1NDYsIDAsIDAsIDEyMDQ3OCwgCisgICAgMTIwMjAwLCA2NTIwNSwgMTIwMjAyLCA2NDA2MywgOTg3OCwgNzQ3ODAsIDExOTYyNiwgNzgyMDIsIDY0MDU4LCA4Nzk5LCAKKyAgICA0MjEzMSwgMCwgNjQwNjIsIDEwMjgsIDY0MDYwLCA2NDA1OSwgODM3LCAxMDU2NywgMCwgNDMxMDMsIDAsIDEyMDc1NCwgCisgICAgMTE0MjcsIDI5MDIsIDY0MDQzLCA2NDA0MiwgNDM3NDksIDEwNzU2LCA2NDA0NywgNDI2MDYsIDY0MDQ1LCA2NDA0NCwgCisgICAgNDM5NzksIDEwMDc2LCA2NDA0MCwgNDMwNjAsIDE5NDk0MiwgMTAzNCwgMzM5MiwgMTI3NzcxLCA0MzA5MSwgNjQwMzMsIAorICAgIDY0MDMyLCA0MjczNSwgNjQwMzgsIDY0MDM3LCA2NDAzNiwgNjQwMzUsIDQyOTEsIDE5NDkyOCwgNjQwMTUsIDY0MDE0LCAKKyAgICA2NDY4MSwgMTk0OTMwLCAwLCA3ODE0NSwgMCwgNDMwOTAsIDAsIDM0NzYsIDg5NzMsIDY0MDEyLCA0MjQ3MywgNjQwMTAsIAorICAgIDY0MDA4LCA2NDAwNywgMjAwMywgNzcwNiwgNjQ1MTcsIDc4MTUzLCAyNTM4LCA2NDAwOSwgMjA0LCAwLCA0ODAyLCA0MTExLCAKKyAgICA4MjM5LCA5MDk4LCA0ODA1LCA2NDAwMSwgNjQwNTcsIDc4ODUsIDcyNDcsIDY0MDU0LCA5ODMyNTgsIDAsIDQ3NjcsIDkzNDMsIAorICAgIDY0MDQ5LCA2NDA0OCwgMTIwMDM0LCAxMTMzLCA2NDA1MywgNjQwNTIsIDQzNDUzLCA2NDA1MCwgNDEzNDAsIDExODk3NSwgCisgICAgMTk0ODM1LCAxMDAwNSwgMTIzMjksIDQxMzMzLCAwLCA4NDg5LCAxOTQyLCAwLCAxOTQ4MzQsIDQyNTIwLCAxMjgyNDksIDAsIAorICAgIDAsIDEwNzYwLCA2NDAyMywgNjQwMjIsIDY0MDIxLCA2NTgyLCA0MzY3MCwgMCwgNjQwMjUsIDkxNjcsIDQyMTUxLCA3ODI0NCwgCisgICAgOTgzMjI2LCAyMDI2LCA2NDAxOSwgNjQwMTgsIDY0MDE3LCA2NDAxNiwgMTI3NjgsIDAsIDc1ODIsIDc4MjUyLCA3ODI0OCwgCisgICAgNzc5MTQsIDc4MjQ2LCA3ODI0NywgMCwgNzc5MTUsIDc4NzY2LCA2Nzg4LCAxMzA5NCwgNzc5MjAsIDc1MzIsIDQxNDE0LCAKKyAgICA3ODUyMCwgMzE3OSwgNzg1MTgsIDY0NzY5LCA3ODUxNCwgNzg1MTcsIDExNDYxLCA3NDQ1NCwgMTA3NTEsIDkwNTEsIAorICAgIDEyMDcyMCwgNjcwOCwgMTA1MzUsIDAsIDY4MjE4LCA1NTI3NCwgMjAwOCwgNjQwMzEsIDY0MDMwLCAyOTQsIDQxODc0LCAwLCAKKyAgICAxMjY5OTEsIDY1OTI5LCAwLCAwLCAwLCAwLCA2NDAyOCwgODE0NiwgNjQwMjYsIDQxNzg4LCAxOTQ4NDQsIDAsIDQzNTEsIAorICAgIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIDAsIDExOTg4NiwgMTE5ODkxLCAxMTk4OTIsIDExOTg4OSwgMTE0MzMsIDExOTg5NSwgCisgICAgMTE5ODk2LCAwLCA3ODAxLCA2NTU3OCwgMTk0ODM5LCAxMjkxNSwgNDM5NjgsIDMyOTcsIDk2OTksIDE5NDk1NSwgMTEzNSwgCisgICAgMCwgMCwgMTI4NTI1LCAxOTk1LCA2NzIyLCA5ODM5MTYsIDAsIDI1NTIsIDQxNTQ2LCA2MCwgNjgzOTQsIDg2NDksIDQxNTQ5LCAKKyAgICA3ODQ5NiwgOTgzMzE5LCAwLCA2NjgyLCAwLCA3ODY3OSwgNjQ3MTAsIDQxNTQ3LCA5ODM2MjEsIDIwMTMsIDEyODI5MSwgCisgICAgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgMTE5OTA4LCA5MTM3LCAKKyAgICA3MTU1LCA4OTk5LCAwLCA3ODUzMywgMzQ2NiwgMCwgMCwgMTk5NiwgMCwgMzQ1MywgNjI4MiwgMCwgMjAwMiwgMjAwMCwgCisgICAgMTIwMTc1LCA1MzcsIDAsIDQxNzksIDY1MTE5LCAxOTk4LCAwLCAxODQyLCAwLCA5MjY3NCwgOTYyOCwgNjg0NDYsIDEyMDgxLCAKKyAgICA5ODI2LCA2NDUwMiwgMTc2NywgMCwgMCwgMCwgMTIwMjAxLCA5ODM2MzcsIDAsIDAsIDMwNTksIDQ0MDI0LCAxMjAyMDQsIAorICAgIDExOTk1MywgOTI2OTMsIDAsIDAsIDkyNDUyLCA0MTAwLCA5MjAsIDE4MTEsIDEzNTUsIDAsIDAsIDM1OTIsIDEwMDc4LCAwLCAKKyAgICAwLCAwLCA4NTkyLCA2NTg3MCwgNjgxNjQsIDEyODc5MiwgMTA3NDIsIDAsIDQyOTE4LCAxOTk0LCA5MjgxLCAzMjk2LCAKKyAgICAxMjg2NSwgMTk5NywgMTg5NSwgCiB9OwogCiAjZGVmaW5lIGNvZGVfbWFnaWMgNDcKICNkZWZpbmUgY29kZV9zaXplIDMyNzY4CiAjZGVmaW5lIGNvZGVfcG9seSAzMjc3MQorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfc3RhcnQgPSAweGYwMDAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX2VuZCA9IDB4ZjAxYzE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVfYWxpYXNlc1tdID0geworICAgIDB4MDAwMCwKKyAgICAweDAwMDAsCisgICAgMHgwMDAxLAorICAgIDB4MDAwMSwKKyAgICAweDAwMDIsCisgICAgMHgwMDAyLAorICAgIDB4MDAwMywKKyAgICAweDAwMDMsCisgICAgMHgwMDA0LAorICAgIDB4MDAwNCwKKyAgICAweDAwMDUsCisgICAgMHgwMDA1LAorICAgIDB4MDAwNiwKKyAgICAweDAwMDYsCisgICAgMHgwMDA3LAorICAgIDB4MDAwNywKKyAgICAweDAwMDgsCisgICAgMHgwMDA4LAorICAgIDB4MDAwOSwKKyAgICAweDAwMDksCisgICAgMHgwMDA5LAorICAgIDB4MDAwOSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBBLAorICAgIDB4MDAwQSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBBLAorICAgIDB4MDAwQSwKKyAgICAweDAwMEIsCisgICAgMHgwMDBCLAorICAgIDB4MDAwQiwKKyAgICAweDAwMEMsCisgICAgMHgwMDBDLAorICAgIDB4MDAwRCwKKyAgICAweDAwMEQsCisgICAgMHgwMDBFLAorICAgIDB4MDAwRSwKKyAgICAweDAwMEUsCisgICAgMHgwMDBGLAorICAgIDB4MDAwRiwKKyAgICAweDAwMEYsCisgICAgMHgwMDEwLAorICAgIDB4MDAxMCwKKyAgICAweDAwMTEsCisgICAgMHgwMDExLAorICAgIDB4MDAxMiwKKyAgICAweDAwMTIsCisgICAgMHgwMDEzLAorICAgIDB4MDAxMywKKyAgICAweDAwMTQsCisgICAgMHgwMDE0LAorICAgIDB4MDAxNSwKKyAgICAweDAwMTUsCisgICAgMHgwMDE2LAorICAgIDB4MDAxNiwKKyAgICAweDAwMTcsCisgICAgMHgwMDE3LAorICAgIDB4MDAxOCwKKyAgICAweDAwMTgsCisgICAgMHgwMDE5LAorICAgIDB4MDAxOSwKKyAgICAweDAwMUEsCisgICAgMHgwMDFBLAorICAgIDB4MDAxQiwKKyAgICAweDAwMUIsCisgICAgMHgwMDFDLAorICAgIDB4MDAxQywKKyAgICAweDAwMUMsCisgICAgMHgwMDFELAorICAgIDB4MDAxRCwKKyAgICAweDAwMUQsCisgICAgMHgwMDFFLAorICAgIDB4MDAxRSwKKyAgICAweDAwMUUsCisgICAgMHgwMDFGLAorICAgIDB4MDAxRiwKKyAgICAweDAwMUYsCisgICAgMHgwMDIwLAorICAgIDB4MDA3RiwKKyAgICAweDAwN0YsCisgICAgMHgwMDgwLAorICAgIDB4MDA4MCwKKyAgICAweDAwODEsCisgICAgMHgwMDgxLAorICAgIDB4MDA4MiwKKyAgICAweDAwODIsCisgICAgMHgwMDgzLAorICAgIDB4MDA4MywKKyAgICAweDAwODQsCisgICAgMHgwMDg0LAorICAgIDB4MDA4NSwKKyAgICAweDAwODUsCisgICAgMHgwMDg2LAorICAgIDB4MDA4NiwKKyAgICAweDAwODcsCisgICAgMHgwMDg3LAorICAgIDB4MDA4OCwKKyAgICAweDAwODgsCisgICAgMHgwMDg4LAorICAgIDB4MDA4OSwKKyAgICAweDAwODksCisgICAgMHgwMDg5LAorICAgIDB4MDA4QSwKKyAgICAweDAwOEEsCisgICAgMHgwMDhBLAorICAgIDB4MDA4QiwKKyAgICAweDAwOEIsCisgICAgMHgwMDhCLAorICAgIDB4MDA4QywKKyAgICAweDAwOEMsCisgICAgMHgwMDhDLAorICAgIDB4MDA4RCwKKyAgICAweDAwOEQsCisgICAgMHgwMDhELAorICAgIDB4MDA4RSwKKyAgICAweDAwOEUsCisgICAgMHgwMDhFLAorICAgIDB4MDA4RiwKKyAgICAweDAwOEYsCisgICAgMHgwMDhGLAorICAgIDB4MDA5MCwKKyAgICAweDAwOTAsCisgICAgMHgwMDkxLAorICAgIDB4MDA5MSwKKyAgICAweDAwOTEsCisgICAgMHgwMDkyLAorICAgIDB4MDA5MiwKKyAgICAweDAwOTIsCisgICAgMHgwMDkzLAorICAgIDB4MDA5MywKKyAgICAweDAwOTQsCisgICAgMHgwMDk0LAorICAgIDB4MDA5NSwKKyAgICAweDAwOTUsCisgICAgMHgwMDk2LAorICAgIDB4MDA5NiwKKyAgICAweDAwOTYsCisgICAgMHgwMDk3LAorICAgIDB4MDA5NywKKyAgICAweDAwOTcsCisgICAgMHgwMDk4LAorICAgIDB4MDA5OCwKKyAgICAweDAwOTksCisgICAgMHgwMDk5LAorICAgIDB4MDA5QSwKKyAgICAweDAwOUEsCisgICAgMHgwMDlCLAorICAgIDB4MDA5QiwKKyAgICAweDAwOUMsCisgICAgMHgwMDlDLAorICAgIDB4MDA5RCwKKyAgICAweDAwOUQsCisgICAgMHgwMDlFLAorICAgIDB4MDA5RSwKKyAgICAweDAwOUYsCisgICAgMHgwMDlGLAorICAgIDB4MDBBMCwKKyAgICAweDAwQUQsCisgICAgMHgwMUEyLAorICAgIDB4MDFBMywKKyAgICAweDAzNEYsCisgICAgMHgwQ0RFLAorICAgIDB4MEU5RCwKKyAgICAweDBFOUYsCisgICAgMHgwRUEzLAorICAgIDB4MEVBNSwKKyAgICAweDBGRDAsCisgICAgMHgxODBCLAorICAgIDB4MTgwQywKKyAgICAweDE4MEQsCisgICAgMHgxODBFLAorICAgIDB4MjAwQiwKKyAgICAweDIwMEMsCisgICAgMHgyMDBELAorICAgIDB4MjAwRSwKKyAgICAweDIwMEYsCisgICAgMHgyMDJBLAorICAgIDB4MjAyQiwKKyAgICAweDIwMkMsCisgICAgMHgyMDJELAorICAgIDB4MjAyRSwKKyAgICAweDIwMkYsCisgICAgMHgyMDVGLAorICAgIDB4MjA2MCwKKyAgICAweDIxMTgsCisgICAgMHgyNDQ4LAorICAgIDB4MjQ0OSwKKyAgICAweEEwMTUsCisgICAgMHhGRTE4LAorICAgIDB4RkUwMCwKKyAgICAweEZFMDEsCisgICAgMHhGRTAyLAorICAgIDB4RkUwMywKKyAgICAweEZFMDQsCisgICAgMHhGRTA1LAorICAgIDB4RkUwNiwKKyAgICAweEZFMDcsCisgICAgMHhGRTA4LAorICAgIDB4RkUwOSwKKyAgICAweEZFMEEsCisgICAgMHhGRTBCLAorICAgIDB4RkUwQywKKyAgICAweEZFMEQsCisgICAgMHhGRTBFLAorICAgIDB4RkUwRiwKKyAgICAweEZFRkYsCisgICAgMHhGRUZGLAorICAgIDB4RkVGRiwKKyAgICAweDFEMEM1LAorICAgIDB4RTAxMDAsCisgICAgMHhFMDEwMSwKKyAgICAweEUwMTAyLAorICAgIDB4RTAxMDMsCisgICAgMHhFMDEwNCwKKyAgICAweEUwMTA1LAorICAgIDB4RTAxMDYsCisgICAgMHhFMDEwNywKKyAgICAweEUwMTA4LAorICAgIDB4RTAxMDksCisgICAgMHhFMDEwQSwKKyAgICAweEUwMTBCLAorICAgIDB4RTAxMEMsCisgICAgMHhFMDEwRCwKKyAgICAweEUwMTBFLAorICAgIDB4RTAxMEYsCisgICAgMHhFMDExMCwKKyAgICAweEUwMTExLAorICAgIDB4RTAxMTIsCisgICAgMHhFMDExMywKKyAgICAweEUwMTE0LAorICAgIDB4RTAxMTUsCisgICAgMHhFMDExNiwKKyAgICAweEUwMTE3LAorICAgIDB4RTAxMTgsCisgICAgMHhFMDExOSwKKyAgICAweEUwMTFBLAorICAgIDB4RTAxMUIsCisgICAgMHhFMDExQywKKyAgICAweEUwMTFELAorICAgIDB4RTAxMUUsCisgICAgMHhFMDExRiwKKyAgICAweEUwMTIwLAorICAgIDB4RTAxMjEsCisgICAgMHhFMDEyMiwKKyAgICAweEUwMTIzLAorICAgIDB4RTAxMjQsCisgICAgMHhFMDEyNSwKKyAgICAweEUwMTI2LAorICAgIDB4RTAxMjcsCisgICAgMHhFMDEyOCwKKyAgICAweEUwMTI5LAorICAgIDB4RTAxMkEsCisgICAgMHhFMDEyQiwKKyAgICAweEUwMTJDLAorICAgIDB4RTAxMkQsCisgICAgMHhFMDEyRSwKKyAgICAweEUwMTJGLAorICAgIDB4RTAxMzAsCisgICAgMHhFMDEzMSwKKyAgICAweEUwMTMyLAorICAgIDB4RTAxMzMsCisgICAgMHhFMDEzNCwKKyAgICAweEUwMTM1LAorICAgIDB4RTAxMzYsCisgICAgMHhFMDEzNywKKyAgICAweEUwMTM4LAorICAgIDB4RTAxMzksCisgICAgMHhFMDEzQSwKKyAgICAweEUwMTNCLAorICAgIDB4RTAxM0MsCisgICAgMHhFMDEzRCwKKyAgICAweEUwMTNFLAorICAgIDB4RTAxM0YsCisgICAgMHhFMDE0MCwKKyAgICAweEUwMTQxLAorICAgIDB4RTAxNDIsCisgICAgMHhFMDE0MywKKyAgICAweEUwMTQ0LAorICAgIDB4RTAxNDUsCisgICAgMHhFMDE0NiwKKyAgICAweEUwMTQ3LAorICAgIDB4RTAxNDgsCisgICAgMHhFMDE0OSwKKyAgICAweEUwMTRBLAorICAgIDB4RTAxNEIsCisgICAgMHhFMDE0QywKKyAgICAweEUwMTRELAorICAgIDB4RTAxNEUsCisgICAgMHhFMDE0RiwKKyAgICAweEUwMTUwLAorICAgIDB4RTAxNTEsCisgICAgMHhFMDE1MiwKKyAgICAweEUwMTUzLAorICAgIDB4RTAxNTQsCisgICAgMHhFMDE1NSwKKyAgICAweEUwMTU2LAorICAgIDB4RTAxNTcsCisgICAgMHhFMDE1OCwKKyAgICAweEUwMTU5LAorICAgIDB4RTAxNUEsCisgICAgMHhFMDE1QiwKKyAgICAweEUwMTVDLAorICAgIDB4RTAxNUQsCisgICAgMHhFMDE1RSwKKyAgICAweEUwMTVGLAorICAgIDB4RTAxNjAsCisgICAgMHhFMDE2MSwKKyAgICAweEUwMTYyLAorICAgIDB4RTAxNjMsCisgICAgMHhFMDE2NCwKKyAgICAweEUwMTY1LAorICAgIDB4RTAxNjYsCisgICAgMHhFMDE2NywKKyAgICAweEUwMTY4LAorICAgIDB4RTAxNjksCisgICAgMHhFMDE2QSwKKyAgICAweEUwMTZCLAorICAgIDB4RTAxNkMsCisgICAgMHhFMDE2RCwKKyAgICAweEUwMTZFLAorICAgIDB4RTAxNkYsCisgICAgMHhFMDE3MCwKKyAgICAweEUwMTcxLAorICAgIDB4RTAxNzIsCisgICAgMHhFMDE3MywKKyAgICAweEUwMTc0LAorICAgIDB4RTAxNzUsCisgICAgMHhFMDE3NiwKKyAgICAweEUwMTc3LAorICAgIDB4RTAxNzgsCisgICAgMHhFMDE3OSwKKyAgICAweEUwMTdBLAorICAgIDB4RTAxN0IsCisgICAgMHhFMDE3QywKKyAgICAweEUwMTdELAorICAgIDB4RTAxN0UsCisgICAgMHhFMDE3RiwKKyAgICAweEUwMTgwLAorICAgIDB4RTAxODEsCisgICAgMHhFMDE4MiwKKyAgICAweEUwMTgzLAorICAgIDB4RTAxODQsCisgICAgMHhFMDE4NSwKKyAgICAweEUwMTg2LAorICAgIDB4RTAxODcsCisgICAgMHhFMDE4OCwKKyAgICAweEUwMTg5LAorICAgIDB4RTAxOEEsCisgICAgMHhFMDE4QiwKKyAgICAweEUwMThDLAorICAgIDB4RTAxOEQsCisgICAgMHhFMDE4RSwKKyAgICAweEUwMThGLAorICAgIDB4RTAxOTAsCisgICAgMHhFMDE5MSwKKyAgICAweEUwMTkyLAorICAgIDB4RTAxOTMsCisgICAgMHhFMDE5NCwKKyAgICAweEUwMTk1LAorICAgIDB4RTAxOTYsCisgICAgMHhFMDE5NywKKyAgICAweEUwMTk4LAorICAgIDB4RTAxOTksCisgICAgMHhFMDE5QSwKKyAgICAweEUwMTlCLAorICAgIDB4RTAxOUMsCisgICAgMHhFMDE5RCwKKyAgICAweEUwMTlFLAorICAgIDB4RTAxOUYsCisgICAgMHhFMDFBMCwKKyAgICAweEUwMUExLAorICAgIDB4RTAxQTIsCisgICAgMHhFMDFBMywKKyAgICAweEUwMUE0LAorICAgIDB4RTAxQTUsCisgICAgMHhFMDFBNiwKKyAgICAweEUwMUE3LAorICAgIDB4RTAxQTgsCisgICAgMHhFMDFBOSwKKyAgICAweEUwMUFBLAorICAgIDB4RTAxQUIsCisgICAgMHhFMDFBQywKKyAgICAweEUwMUFELAorICAgIDB4RTAxQUUsCisgICAgMHhFMDFBRiwKKyAgICAweEUwMUIwLAorICAgIDB4RTAxQjEsCisgICAgMHhFMDFCMiwKKyAgICAweEUwMUIzLAorICAgIDB4RTAxQjQsCisgICAgMHhFMDFCNSwKKyAgICAweEUwMUI2LAorICAgIDB4RTAxQjcsCisgICAgMHhFMDFCOCwKKyAgICAweEUwMUI5LAorICAgIDB4RTAxQkEsCisgICAgMHhFMDFCQiwKKyAgICAweEUwMUJDLAorICAgIDB4RTAxQkQsCisgICAgMHhFMDFCRSwKKyAgICAweEUwMUJGLAorICAgIDB4RTAxQzAsCisgICAgMHhFMDFDMSwKKyAgICAweEUwMUMyLAorICAgIDB4RTAxQzMsCisgICAgMHhFMDFDNCwKKyAgICAweEUwMUM1LAorICAgIDB4RTAxQzYsCisgICAgMHhFMDFDNywKKyAgICAweEUwMUM4LAorICAgIDB4RTAxQzksCisgICAgMHhFMDFDQSwKKyAgICAweEUwMUNCLAorICAgIDB4RTAxQ0MsCisgICAgMHhFMDFDRCwKKyAgICAweEUwMUNFLAorICAgIDB4RTAxQ0YsCisgICAgMHhFMDFEMCwKKyAgICAweEUwMUQxLAorICAgIDB4RTAxRDIsCisgICAgMHhFMDFEMywKKyAgICAweEUwMUQ0LAorICAgIDB4RTAxRDUsCisgICAgMHhFMDFENiwKKyAgICAweEUwMUQ3LAorICAgIDB4RTAxRDgsCisgICAgMHhFMDFEOSwKKyAgICAweEUwMURBLAorICAgIDB4RTAxREIsCisgICAgMHhFMDFEQywKKyAgICAweEUwMURELAorICAgIDB4RTAxREUsCisgICAgMHhFMDFERiwKKyAgICAweEUwMUUwLAorICAgIDB4RTAxRTEsCisgICAgMHhFMDFFMiwKKyAgICAweEUwMUUzLAorICAgIDB4RTAxRTQsCisgICAgMHhFMDFFNSwKKyAgICAweEUwMUU2LAorICAgIDB4RTAxRTcsCisgICAgMHhFMDFFOCwKKyAgICAweEUwMUU5LAorICAgIDB4RTAxRUEsCisgICAgMHhFMDFFQiwKKyAgICAweEUwMUVDLAorICAgIDB4RTAxRUQsCisgICAgMHhFMDFFRSwKKyAgICAweEUwMUVGLAorfTsKKwordHlwZWRlZiBzdHJ1Y3QgTmFtZWRTZXF1ZW5jZSB7CisgICAgaW50IHNlcWxlbjsKKyAgICBQeV9VQ1MyIHNlcVs0XTsKK30gbmFtZWRfc2VxdWVuY2U7CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZWRfc2VxdWVuY2VzX3N0YXJ0ID0gMHhmMDIwMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZWRfc2VxdWVuY2VzX2VuZCA9IDB4ZjAzYTU7CitzdGF0aWMgY29uc3QgbmFtZWRfc2VxdWVuY2UgbmFtZWRfc2VxdWVuY2VzW10gPSB7CisgICAgezIsIHsweDAxMDAsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMTAxLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDA0NSwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwNjUsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEM4LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBFOCwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwQzksIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEU5LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBDQSwgMHgwMzA0fX0sCisgICAgezIsIHsweDAwRUEsIDB4MDMwNH19LAorICAgIHsyLCB7MHgwMENBLCAweDAzMEN9fSwKKyAgICB7MiwgezB4MDBFQSwgMHgwMzBDfX0sCisgICAgezIsIHsweDAxMkEsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMTJCLCAweDAzMDB9fSwKKyAgICB7MywgezB4MDA2OSwgMHgwMzA3LCAweDAzMDF9fSwKKyAgICB7MywgezB4MDA2RSwgMHgwMzYwLCAweDAwNjd9fSwKKyAgICB7MiwgezB4MDA0RiwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwNkYsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEQyLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBGMiwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRDMsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEYzLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDA1MywgMHgwMzI5fX0sCisgICAgezIsIHsweDAwNzMsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMTZBLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDE2QiwgMHgwMzAwfX0sCisgICAgezIsIHsweDAxMDQsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTA1LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDEwNCwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMDUsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTE4LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDExOSwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMTgsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTE5LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDExNiwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMTcsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTE2LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDExNywgMHgwMzAzfX0sCisgICAgezMsIHsweDAwNjksIDB4MDMwNywgMHgwMzAwfX0sCisgICAgezMsIHsweDAwNjksIDB4MDMwNywgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMkUsIDB4MDMwMX19LAorICAgIHszLCB7MHgwMTJGLCAweDAzMDcsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTJFLCAweDAzMDN9fSwKKyAgICB7MywgezB4MDEyRiwgMHgwMzA3LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA0QSwgMHgwMzAzfX0sCisgICAgezMsIHsweDAwNkEsIDB4MDMwNywgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNEMsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDZDLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA0RCwgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNkQsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDUyLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA3MiwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxNzIsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTczLCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDE3MiwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxNzMsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTZBLCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDE2QiwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxNkEsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTZCLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDBFNiwgMHgwMzAwfX0sCisgICAgezIsIHsweDAyNTQsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMjU0LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDI4QywgMHgwMzAwfX0sCisgICAgezIsIHsweDAyOEMsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMjU5LCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDI1OSwgMHgwMzAxfX0sCisgICAgezIsIHsweDAyNUEsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMjVBLCAweDAzMDF9fSwKKyAgICB7MywgezB4MDk5NSwgMHgwOUNELCAweDA5Qjd9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDRH19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkNEfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkMwfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkM2fX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkNBfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDQ319LAorICAgIHszLCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCN319LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkJFfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQkZ9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDMH19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkMxfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzJ9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDNn19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkM3fX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzh9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDQX19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkNCfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQ0N9fSwKKyAgICB7NCwgezB4MEJCNiwgMHgwQkNELCAweDBCQjAsIDB4MEJDMH19LAorICAgIHszLCB7MHgwRENBLCAweDIwMEQsIDB4MERCQX19LAorICAgIHszLCB7MHgwRENBLCAweDIwMEQsIDB4MERCQn19LAorICAgIHszLCB7MHgwREJCLCAweDBEQ0EsIDB4MjAwRH19LAorICAgIHsyLCB7MHgxMEUzLCAweDAzMDJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzgwfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4MX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzgzfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4NH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODV9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg2fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4N319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODh9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg5fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4QX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OEJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhDfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4RH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OEV9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhGfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5MH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTF9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzkyfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5M319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTR9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk1fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5Nn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTd9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk4fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5OX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUF9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlCfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5Q319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUR9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlFfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5Rn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QTB9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0ExfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBMn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QTd9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0FCfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBQ319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QUZ9fSwKKyAgICB7MiwgezB4MTdCQiwgMHgxN0M2fX0sCisgICAgezIsIHsweDE3QjYsIDB4MTdDNn19LAorICAgIHsyLCB7MHgzMDRCLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzA0RCwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwNEYsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMDUxLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzA1MywgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQUIsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEFELCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBBRiwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQjEsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEIzLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBCQiwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQzQsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEM4LCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzFGNywgMHgzMDlBfX0sCisgICAgezIsIHsweDAyRTUsIDB4MDJFOX19LAorICAgIHsyLCB7MHgwMkU5LCAweDAyRTV9fSwKK307CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3h4bGltaXRlZC5jIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwppbmRleCBlYzkyNGYyLi42NjFiNmUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3h4bGltaXRlZC5jCisrKyBiL01vZHVsZXMveHhsaW1pdGVkLmMKQEAgLTE4Nyw4ICsxODcsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG51bGxfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5VHlwZV9TbG90IE51bGxfVHlwZV9zbG90c1tdID0gewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96aXBpbXBvcnQuYyBiL01vZHVsZXMvemlwaW1wb3J0LmMKaW5kZXggZDhjM2Q4YS4uMTJiZmUyMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy96aXBpbXBvcnQuYworKysgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCkBAIC00OSw3ICs0OSw3IEBACiAvKiBmb3J3YXJkIGRlY2xzICovCiBzdGF0aWMgUHlPYmplY3QgKnJlYWRfZGlyZWN0b3J5KFB5T2JqZWN0ICphcmNoaXZlKTsKIHN0YXRpYyBQeU9iamVjdCAqZ2V0X2RhdGEoUHlPYmplY3QgKmFyY2hpdmUsIFB5T2JqZWN0ICp0b2NfZW50cnkpOwotc3RhdGljIFB5T2JqZWN0ICpnZXRfbW9kdWxlX2NvZGUoWmlwSW1wb3J0ZXIgKnNlbGYsIGNoYXIgKmZ1bGxuYW1lLAorc3RhdGljIFB5T2JqZWN0ICpnZXRfbW9kdWxlX2NvZGUoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICpmdWxsbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqcF9pc3BhY2thZ2UsIFB5T2JqZWN0ICoqcF9tb2RwYXRoKTsKIAogCkBAIC02MywxMDkgKzYzLDEwOSBAQAogc3RhdGljIGludAogemlwaW1wb3J0ZXJfaW5pdChaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpwYXRob2JqLCAqZmlsZXM7Ci0gICAgUHlfVU5JQ09ERSAqcGF0aCwgKnAsICpwcmVmaXgsIGJ1ZltNQVhQQVRITEVOKzJdOwotICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5T2JqZWN0ICpwYXRoLCAqZmlsZXMsICp0bXA7CisgICAgUHlPYmplY3QgKmZpbGVuYW1lID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbiwgZmxlbjsKKyNpZmRlZiBBTFRTRVAKKyAgICBfUHlfSURFTlRJRklFUihyZXBsYWNlKTsKKyNlbmRpZgogCiAgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcygiemlwaW1wb3J0ZXIoKSIsIGt3ZHMpKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnppcGltcG9ydGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTRGVjb2RlciwgJnBhdGhvYmopKQorICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmcGF0aCkpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIC8qIGNvcHkgcGF0aCB0byBidWYgKi8KLSAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUocGF0aG9iaik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShwYXRoKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocGF0aCk7CiAgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhaaXBJbXBvcnRFcnJvciwgImFyY2hpdmUgcGF0aCBpcyBlbXB0eSIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBpZiAobGVuID49IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFppcEltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImFyY2hpdmUgcGF0aCB0b28gbG9uZyIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBQeV9VTklDT0RFX3N0cmNweShidWYsIFB5VW5pY29kZV9BU19VTklDT0RFKHBhdGhvYmopKTsKIAogI2lmZGVmIEFMVFNFUAotICAgIGZvciAocCA9IGJ1ZjsgKnA7IHArKykgewotICAgICAgICBpZiAoKnAgPT0gQUxUU0VQKQotICAgICAgICAgICAgKnAgPSBTRVA7Ci0gICAgfQorICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocGF0aCwgJlB5SWRfcmVwbGFjZSwgIkNDIiwgQUxUU0VQLCBTRVApOworICAgIGlmICghdG1wKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICBwYXRoID0gdG1wOwogI2VuZGlmCiAKLSAgICBwYXRoID0gTlVMTDsKLSAgICBwcmVmaXggPSBOVUxMOworICAgIGZpbGVuYW1lID0gcGF0aDsKKyAgICBQeV9JTkNSRUYoZmlsZW5hbWUpOworICAgIGZsZW4gPSBsZW47CiAgICAgZm9yICg7OykgewogICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwogICAgICAgICBpbnQgcnY7CiAKLSAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkgewotICAgICAgICAgICAgcGF0aG9iaiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShidWYsIGxlbik7Ci0gICAgICAgICAgICBpZiAocGF0aG9iaiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgcnYgPSBfUHlfc3RhdChwYXRob2JqLCAmc3RhdGJ1Zik7CisgICAgICAgIHJ2ID0gX1B5X3N0YXQoZmlsZW5hbWUsICZzdGF0YnVmKTsKKyAgICAgICAgaWYgKHJ2ID09IC0yKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgaWYgKHJ2ID09IDApIHsKICAgICAgICAgICAgIC8qIGl0IGV4aXN0cyAqLwotICAgICAgICAgICAgaWYgKFNfSVNSRUcoc3RhdGJ1Zi5zdF9tb2RlKSkKLSAgICAgICAgICAgICAgICAvKiBpdCdzIGEgZmlsZSAqLwotICAgICAgICAgICAgICAgIHBhdGggPSBidWY7CisgICAgICAgICAgICBpZiAoIVNfSVNSRUcoc3RhdGJ1Zi5zdF9tb2RlKSkKKyAgICAgICAgICAgICAgICAvKiBpdCdzIGEgbm90IGZpbGUgKi8KKyAgICAgICAgICAgICAgICBQeV9DTEVBUihmaWxlbmFtZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgUHlfQ0xFQVIoZmlsZW5hbWUpOwogICAgICAgICAvKiBiYWNrIHVwIG9uZSBwYXRoIGVsZW1lbnQgKi8KLSAgICAgICAgcCA9IFB5X1VOSUNPREVfc3RycmNocihidWYsIFNFUCk7Ci0gICAgICAgIGlmIChwcmVmaXggIT0gTlVMTCkKLSAgICAgICAgICAgICpwcmVmaXggPSBTRVA7Ci0gICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgIGZsZW4gPSBQeVVuaWNvZGVfRmluZENoYXIocGF0aCwgU0VQLCAwLCBmbGVuLCAtMSk7CisgICAgICAgIGlmIChmbGVuID09IC0xKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICpwID0gJ1wwJzsKLSAgICAgICAgbGVuID0gcCAtIGJ1ZjsKLSAgICAgICAgcHJlZml4ID0gcDsKLSAgICAgICAgUHlfQ0xFQVIocGF0aG9iaik7CisgICAgICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYXRoLCAwLCBmbGVuKTsKICAgICB9Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkgeworICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhaaXBJbXBvcnRFcnJvciwgIm5vdCBhIFppcCBmaWxlIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgZmlsZXMgPSBQeURpY3RfR2V0SXRlbSh6aXBfZGlyZWN0b3J5X2NhY2hlLCBwYXRob2JqKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZpbGVuYW1lKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBmaWxlcyA9IFB5RGljdF9HZXRJdGVtKHppcF9kaXJlY3RvcnlfY2FjaGUsIGZpbGVuYW1lKTsKICAgICBpZiAoZmlsZXMgPT0gTlVMTCkgewotICAgICAgICBmaWxlcyA9IHJlYWRfZGlyZWN0b3J5KHBhdGhvYmopOworICAgICAgICBmaWxlcyA9IHJlYWRfZGlyZWN0b3J5KGZpbGVuYW1lKTsKICAgICAgICAgaWYgKGZpbGVzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oemlwX2RpcmVjdG9yeV9jYWNoZSwgcGF0aG9iaiwgZmlsZXMpICE9IDApCisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbSh6aXBfZGlyZWN0b3J5X2NhY2hlLCBmaWxlbmFtZSwgZmlsZXMpICE9IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihmaWxlcyk7CiAgICAgc2VsZi0+ZmlsZXMgPSBmaWxlczsKIAotICAgIHNlbGYtPmFyY2hpdmUgPSBwYXRob2JqOwotICAgIHBhdGhvYmogPSBOVUxMOworICAgIC8qIFRyYW5zZmVyIHJlZmVyZW5jZSAqLworICAgIHNlbGYtPmFyY2hpdmUgPSBmaWxlbmFtZTsKKyAgICBmaWxlbmFtZSA9IE5VTEw7CiAKLSAgICBpZiAocHJlZml4ICE9IE5VTEwpIHsKLSAgICAgICAgcHJlZml4Kys7Ci0gICAgICAgIGxlbiA9IFB5X1VOSUNPREVfc3RybGVuKHByZWZpeCk7Ci0gICAgICAgIGlmIChwcmVmaXhbbGVuLTFdICE9IFNFUCkgeworICAgIC8qIENoZWNrIGlmIHRoZXJlIGlzIGEgcHJlZml4IGRpcmVjdG9yeSBmb2xsb3dpbmcgdGhlIGZpbGVuYW1lLiAqLworICAgIGlmIChmbGVuICE9IGxlbikgeworICAgICAgICB0bXAgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhdGgsIGZsZW4rMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYXRoKSk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHNlbGYtPnByZWZpeCA9IHRtcDsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIocGF0aCwgbGVuLTEpICE9IFNFUCkgewogICAgICAgICAgICAgLyogYWRkIHRyYWlsaW5nIFNFUCAqLwotICAgICAgICAgICAgcHJlZml4W2xlbl0gPSBTRVA7Ci0gICAgICAgICAgICBwcmVmaXhbbGVuICsgMV0gPSAnXDAnOwotICAgICAgICAgICAgbGVuKys7CisgICAgICAgICAgICB0bXAgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyIsIHNlbGYtPnByZWZpeCwgU0VQKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnByZWZpeCk7CisgICAgICAgICAgICBzZWxmLT5wcmVmaXggPSB0bXA7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQotICAgICAgICBsZW4gPSAwOwotICAgIHNlbGYtPnByZWZpeCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwcmVmaXgsIGxlbik7Ci0gICAgaWYgKHNlbGYtPnByZWZpeCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotCisgICAgICAgIHNlbGYtPnByZWZpeCA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CisgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIHJldHVybiAwOwogCiBlcnJvcjoKLSAgICBQeV9YREVDUkVGKHBhdGhvYmopOworICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICBQeV9YREVDUkVGKGZpbGVuYW1lKTsKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQAogewogICAgIGlmIChzZWxmLT5hcmNoaXZlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiPHppcGltcG9ydGVyIG9iamVjdCBcIj8/P1wiPiIpOwotICAgIGVsc2UgaWYgKHNlbGYtPnByZWZpeCAhPSBOVUxMICYmIFB5VW5pY29kZV9HRVRfU0laRShzZWxmLT5wcmVmaXgpICE9IDApCisgICAgZWxzZSBpZiAoc2VsZi0+cHJlZml4ICE9IE5VTEwgJiYgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZi0+cHJlZml4KSAhPSAwKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjx6aXBpbXBvcnRlciBvYmplY3QgXCIlVSVjJVVcIj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YXJjaGl2ZSwgU0VQLCBzZWxmLT5wcmVmaXgpOwogICAgIGVsc2UKQEAgLTIwMiw0OSArMjAyLDU0IEBACiB9CiAKIC8qIHJldHVybiBmdWxsbmFtZS5zcGxpdCgiLiIpWy0xXSAqLwotc3RhdGljIGNoYXIgKgotZ2V0X3N1Ym5hbWUoY2hhciAqZnVsbG5hbWUpCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X3N1Ym5hbWUoUHlPYmplY3QgKmZ1bGxuYW1lKQogewotICAgIGNoYXIgKnN1Ym5hbWUgPSBzdHJyY2hyKGZ1bGxuYW1lLCAnLicpOwotICAgIGlmIChzdWJuYW1lID09IE5VTEwpCi0gICAgICAgIHN1Ym5hbWUgPSBmdWxsbmFtZTsKLSAgICBlbHNlCi0gICAgICAgIHN1Ym5hbWUrKzsKLSAgICByZXR1cm4gc3VibmFtZTsKKyAgICBQeV9zc2l6ZV90IGxlbiwgZG90OworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZnVsbG5hbWUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoZnVsbG5hbWUpOworICAgIGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihmdWxsbmFtZSwgJy4nLCAwLCBsZW4sIC0xKTsKKyAgICBpZiAoZG90ID09IC0xKSB7CisgICAgICAgIFB5X0lOQ1JFRihmdWxsbmFtZSk7CisgICAgICAgIHJldHVybiBmdWxsbmFtZTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoZnVsbG5hbWUsIGRvdCsxLCBsZW4pOwogfQogCiAvKiBHaXZlbiBhIChzdWIpbW9kdWxlbmFtZSwgd3JpdGUgdGhlIHBvdGVudGlhbCBmaWxlIHBhdGggaW4gdGhlCiAgICBhcmNoaXZlICh3aXRob3V0IGV4dGVuc2lvbikgdG8gdGhlIHBhdGggYnVmZmVyLiBSZXR1cm4gdGhlCi0gICBsZW5ndGggb2YgdGhlIHJlc3VsdGluZyBzdHJpbmcuICovCi1zdGF0aWMgaW50Ci1tYWtlX2ZpbGVuYW1lKFB5T2JqZWN0ICpwcmVmaXhfb2JqLCBjaGFyICpuYW1lLCBjaGFyICpwYXRoLCBzaXplX3QgcGF0aHNpemUpCisgICBsZW5ndGggb2YgdGhlIHJlc3VsdGluZyBzdHJpbmcuCisKKyAgIHJldHVybiBzZWxmLnByZWZpeCArIG5hbWUucmVwbGFjZSgnLicsIG9zLnNlcCkgKi8KK3N0YXRpYyBQeU9iamVjdCoKK21ha2VfZmlsZW5hbWUoUHlPYmplY3QgKnByZWZpeCwgUHlPYmplY3QgKm5hbWUpCiB7Ci0gICAgc2l6ZV90IGxlbjsKLSAgICBjaGFyICpwOwotICAgIFB5T2JqZWN0ICpwcmVmaXg7CisgICAgUHlPYmplY3QgKnBhdGhvYmo7CisgICAgUHlfVUNTNCAqcCwgKmJ1ZjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKIAotICAgIHByZWZpeCA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocHJlZml4X29iaik7Ci0gICAgaWYgKHByZWZpeCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShwcmVmaXgpOwotCi0gICAgLyogc2VsZi5wcmVmaXggKyBuYW1lIFsrIFNFUCArICJfX2luaXRfXyJdICsgIi5weVtjb10iICovCi0gICAgaWYgKGxlbiArIHN0cmxlbihuYW1lKSArIDEzID49IHBhdGhzaXplIC0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJwYXRoIHRvbyBsb25nIik7Ci0gICAgICAgIFB5X0RFQ1JFRihwcmVmaXgpOwotICAgICAgICByZXR1cm4gLTE7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJlZml4KSArIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpICsgMTsKKyAgICBwID0gYnVmID0gUHlNZW1fTWFsbG9jKHNpemVvZihQeV9VQ1M0KSAqIGxlbik7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHN0cmNweShwYXRoLCBQeUJ5dGVzX0FTX1NUUklORyhwcmVmaXgpKTsKLSAgICBQeV9ERUNSRUYocHJlZml4KTsKLSAgICBzdHJjcHkocGF0aCArIGxlbiwgbmFtZSk7Ci0gICAgZm9yIChwID0gcGF0aCArIGxlbjsgKnA7IHArKykgeworICAgIGlmICghUHlVbmljb2RlX0FzVUNTNChwcmVmaXgsIHAsIGxlbiwgMCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJlZml4KTsKKyAgICBsZW4gLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJlZml4KTsKKyAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQobmFtZSwgcCwgbGVuLCAxKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yICg7ICpwOyBwKyspIHsKICAgICAgICAgaWYgKCpwID09ICcuJykKICAgICAgICAgICAgICpwID0gU0VQOwogICAgIH0KLSAgICBsZW4gKz0gc3RybGVuKG5hbWUpOwotICAgIGFzc2VydChsZW4gPCBJTlRfTUFYKTsKLSAgICByZXR1cm4gKGludClsZW47CisgICAgcGF0aG9iaiA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBwLWJ1Zik7CisgICAgUHlNZW1fRnJlZShidWYpOworICAgIHJldHVybiBwYXRob2JqOwogfQogCiBlbnVtIHppX21vZHVsZV9pbmZvIHsKQEAgLTI1NCwzMiArMjU5LDExMyBAQAogICAgIE1JX1BBQ0tBR0UKIH07CiAKKy8qIERvZXMgdGhpcyBwYXRoIHJlcHJlc2VudCBhIGRpcmVjdG9yeT8KKyAgIG9uIGVycm9yLCByZXR1cm4gPCAwCisgICBpZiBub3QgYSBkaXIsIHJldHVybiAwCisgICBpZiBhIGRpciwgcmV0dXJuIDEKKyovCitzdGF0aWMgaW50CitjaGVja19pc19kaXJlY3RvcnkoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0KiBwcmVmaXgsIFB5T2JqZWN0ICpwYXRoKQoreworICAgIFB5T2JqZWN0ICpkaXJwYXRoOworICAgIGludCByZXM7CisKKyAgICAvKiBTZWUgaWYgdGhpcyBpcyBhICJkaXJlY3RvcnkiLiBJZiBzbywgaXQncyBlbGlnaWJsZSB0byBiZSBwYXJ0CisgICAgICAgb2YgYSBuYW1lc3BhY2UgcGFja2FnZS4gV2UgdGVzdCBieSBzZWVpbmcgaWYgdGhlIG5hbWUsIHdpdGggYW4KKyAgICAgICBhcHBlbmRlZCBwYXRoIHNlcGFyYXRvciwgZXhpc3RzLiAqLworICAgIGRpcnBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlVSVjIiwgcHJlZml4LCBwYXRoLCBTRVApOworICAgIGlmIChkaXJwYXRoID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICAvKiBJZiBkaXJwYXRoIGlzIHByZXNlbnQgaW4gc2VsZi0+ZmlsZXMsIHdlIGhhdmUgYSBkaXJlY3RvcnkuICovCisgICAgcmVzID0gUHlEaWN0X0NvbnRhaW5zKHNlbGYtPmZpbGVzLCBkaXJwYXRoKTsKKyAgICBQeV9ERUNSRUYoZGlycGF0aCk7CisgICAgcmV0dXJuIHJlczsKK30KKwogLyogUmV0dXJuIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgYSBtb2R1bGUuICovCiBzdGF0aWMgZW51bSB6aV9tb2R1bGVfaW5mbwotZ2V0X21vZHVsZV9pbmZvKFppcEltcG9ydGVyICpzZWxmLCBjaGFyICpmdWxsbmFtZSkKK2dldF9tb2R1bGVfaW5mbyhaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKmZ1bGxuYW1lKQogewotICAgIGNoYXIgKnN1Ym5hbWUsIHBhdGhbTUFYUEFUSExFTiArIDFdOwotICAgIGludCBsZW47CisgICAgUHlPYmplY3QgKnN1Ym5hbWU7CisgICAgUHlPYmplY3QgKnBhdGgsICpmdWxscGF0aCwgKml0ZW07CiAgICAgc3RydWN0IHN0X3ppcF9zZWFyY2hvcmRlciAqenNvOwogCiAgICAgc3VibmFtZSA9IGdldF9zdWJuYW1lKGZ1bGxuYW1lKTsKKyAgICBpZiAoc3VibmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTUlfRVJST1I7CiAKLSAgICBsZW4gPSBtYWtlX2ZpbGVuYW1lKHNlbGYtPnByZWZpeCwgc3VibmFtZSwgcGF0aCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBpZiAobGVuIDwgMCkKKyAgICBwYXRoID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUpOworICAgIFB5X0RFQ1JFRihzdWJuYW1lKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTUlfRVJST1I7CiAKICAgICBmb3IgKHpzbyA9IHppcF9zZWFyY2hvcmRlcjsgKnpzby0+c3VmZml4OyB6c28rKykgewotICAgICAgICBzdHJjcHkocGF0aCArIGxlbiwgenNvLT5zdWZmaXgpOwotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoc2VsZi0+ZmlsZXMsIHBhdGgpICE9IE5VTEwpIHsKKyAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlcyIsIHBhdGgsIHpzby0+c3VmZml4KTsKKyAgICAgICAgaWYgKGZ1bGxwYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBNSV9FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBpdGVtID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZmlsZXMsIGZ1bGxwYXRoKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bGxwYXRoKTsKKyAgICAgICAgaWYgKGl0ZW0gIT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgICAgICAgICAgaWYgKHpzby0+dHlwZSAmIElTX1BBQ0tBR0UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE1JX1BBQ0tBR0U7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIE1JX01PRFVMRTsKICAgICAgICAgfQogICAgIH0KKyAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgcmV0dXJuIE1JX05PVF9GT1VORDsKIH0KIAordHlwZWRlZiBlbnVtIHsKKyAgICBGTF9FUlJPUiwKKyAgICBGTF9OT1RfRk9VTkQsCisgICAgRkxfTU9EVUxFX0ZPVU5ELAorICAgIEZMX05TX0ZPVU5ECit9IGZpbmRfbG9hZGVyX3Jlc3VsdDsKKworLyogVGhlIGd1dHMgb2YgImZpbmRfbG9hZGVyIiBhbmQgImZpbmRfbW9kdWxlIi4gUmV0dXJuIHZhbHVlczoKKyAgIC0xOiBlcnJvcgorICAgIDA6IG5vIGxvYWRlciBvciBuYW1lc3BhY2UgcG9ydGlvbnMgZm91bmQKKyAgICAxOiBtb2R1bGUvcGFja2FnZSBmb3VuZAorICAgIDI6IG5hbWVzcGFjZSBwb3J0aW9uIGZvdW5kOiAqbmFtZXNwYWNlX3BvcnRpb24gd2lsbCBwb2ludCB0byB0aGUgbmFtZQorKi8KK3N0YXRpYyBmaW5kX2xvYWRlcl9yZXN1bHQKK2ZpbmRfbG9hZGVyKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqZnVsbG5hbWUsIFB5T2JqZWN0ICoqbmFtZXNwYWNlX3BvcnRpb24pCit7CisgICAgZW51bSB6aV9tb2R1bGVfaW5mbyBtaTsKKworICAgICpuYW1lc3BhY2VfcG9ydGlvbiA9IE5VTEw7CisKKyAgICBtaSA9IGdldF9tb2R1bGVfaW5mbyhzZWxmLCBmdWxsbmFtZSk7CisgICAgaWYgKG1pID09IE1JX0VSUk9SKQorICAgICAgICByZXR1cm4gRkxfRVJST1I7CisgICAgaWYgKG1pID09IE1JX05PVF9GT1VORCkgeworICAgICAgICAvKiBOb3QgYSBtb2R1bGUgb3IgcmVndWxhciBwYWNrYWdlLiBTZWUgaWYgdGhpcyBpcyBhIGRpcmVjdG9yeSwgYW5kCisgICAgICAgICAgIHRoZXJlZm9yZSBwb3NzaWJseSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UgcGFja2FnZS4gKi8KKyAgICAgICAgaW50IGlzX2RpciA9IGNoZWNrX2lzX2RpcmVjdG9yeShzZWxmLCBzZWxmLT5wcmVmaXgsIGZ1bGxuYW1lKTsKKyAgICAgICAgaWYgKGlzX2RpciA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChpc19kaXIpIHsKKyAgICAgICAgICAgIC8qIFRoaXMgaXMgcG9zc2libHkgYSBwb3J0aW9uIG9mIGEgbmFtZXNwYWNlCisgICAgICAgICAgICAgICBwYWNrYWdlLiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRpbmcgaXRzIHBhdGgsCisgICAgICAgICAgICAgICB3aXRob3V0IGEgdHJhaWxpbmcgc2VwYXJhdG9yLiAqLworICAgICAgICAgICAgKm5hbWVzcGFjZV9wb3J0aW9uID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWMlVSVVIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIFNFUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnByZWZpeCwgZnVsbG5hbWUpOworICAgICAgICAgICAgaWYgKCpuYW1lc3BhY2VfcG9ydGlvbiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBGTF9FUlJPUjsKKyAgICAgICAgICAgIHJldHVybiBGTF9OU19GT1VORDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gRkxfTk9UX0ZPVU5EOworICAgIH0KKyAgICAvKiBUaGlzIGlzIGEgbW9kdWxlIG9yIHBhY2thZ2UuICovCisgICAgcmV0dXJuIEZMX01PRFVMRV9GT1VORDsKK30KKworCiAvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiBzYXRpc2Z5IHRoZSBpbXBvcnQgb2YgdGhlIG1vZHVsZSBuYW1lZCBieQogICAgJ2Z1bGxuYW1lJy4gUmV0dXJuIHNlbGYgaWYgd2UgY2FuLCBOb25lIGlmIHdlIGNhbid0LiAqLwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI4NywyMiArMzczLDY0IEBACiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7CiAgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOwotICAgIGNoYXIgKmZ1bGxuYW1lOwotICAgIGVudW0gemlfbW9kdWxlX2luZm8gbWk7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VfcG9ydGlvbiA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInN8Tzp6aXBpbXBvcnRlci5maW5kX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmdWxsbmFtZSwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXxPOnppcGltcG9ydGVyLmZpbmRfbW9kdWxlIiwgJmZ1bGxuYW1lLCAmcGF0aCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbWkgPSBnZXRfbW9kdWxlX2luZm8oc2VsZiwgZnVsbG5hbWUpOwotICAgIGlmIChtaSA9PSBNSV9FUlJPUikKKyAgICBzd2l0Y2ggKGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lLCAmbmFtZXNwYWNlX3BvcnRpb24pKSB7CisgICAgY2FzZSBGTF9FUlJPUjoKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG1pID09IE1JX05PVF9GT1VORCkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgIGNhc2UgRkxfTlNfRk9VTkQ6CisgICAgICAgIC8qIEEgbmFtZXNwYWNlIHBvcnRpb24gaXMgbm90IGFsbG93ZWQgdmlhIGZpbmRfbW9kdWxlLCBzbyByZXR1cm4gTm9uZS4gKi8KKyAgICAgICAgUHlfREVDUkVGKG5hbWVzcGFjZV9wb3J0aW9uKTsKKyAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisgICAgY2FzZSBGTF9OT1RfRk9VTkQ6CisgICAgICAgIHJlc3VsdCA9IFB5X05vbmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRkxfTU9EVUxFX0ZPVU5EOgorICAgICAgICByZXN1bHQgPSAoUHlPYmplY3QgKilzZWxmOworICAgICAgICBicmVhazsKICAgICB9Ci0gICAgUHlfSU5DUkVGKHNlbGYpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gc2F0aXNmeSB0aGUgaW1wb3J0IG9mIHRoZSBtb2R1bGUgbmFtZWQgYnkKKyAgICdmdWxsbmFtZScsIG9yIHdoZXRoZXIgaXQgY291bGQgYmUgYSBwb3J0aW9uIG9mIGEgbmFtZXNwYWNlCisgICBwYWNrYWdlLiBSZXR1cm4gc2VsZiBpZiB3ZSBjYW4gbG9hZCBpdCwgYSBzdHJpbmcgY29udGFpbmluZyB0aGUKKyAgIGZ1bGwgcGF0aCBpZiBpdCdzIGEgcG9zc2libGUgbmFtZXNwYWNlIHBvcnRpb24sIE5vbmUgaWYgd2UKKyAgIGNhbid0IGxvYWQgaXQuICovCitzdGF0aWMgUHlPYmplY3QgKgoremlwaW1wb3J0ZXJfZmluZF9sb2FkZXIoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7CisgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZXNwYWNlX3BvcnRpb24gPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfE86emlwaW1wb3J0ZXIuZmluZF9tb2R1bGUiLCAmZnVsbG5hbWUsICZwYXRoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzd2l0Y2ggKGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lLCAmbmFtZXNwYWNlX3BvcnRpb24pKSB7CisgICAgY2FzZSBGTF9FUlJPUjoKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY2FzZSBGTF9OT1RfRk9VTkQ6ICAgICAgICAvKiBOb3QgZm91bmQsIHJldHVybiAoTm9uZSwgW10pICovCisgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk9bXSIsIFB5X05vbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZMX01PRFVMRV9GT1VORDogICAgIC8qIFJldHVybiAoc2VsZiwgW10pICovCisgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk9bXSIsIHNlbGYpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZMX05TX0ZPVU5EOiAgICAgICAgIC8qIFJldHVybiAoTm9uZSwgW25hbWVzcGFjZV9wb3J0aW9uXSkgKi8KKyAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT1tPXSIsIFB5X05vbmUsIG5hbWVzcGFjZV9wb3J0aW9uKTsKKyAgICAgICAgUHlfREVDUkVGKG5hbWVzcGFjZV9wb3J0aW9uKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogTG9hZCBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgbmFtZWQgYnkgJ2Z1bGxuYW1lJy4gKi8KQEAgLTMxMSwxOSArNDM5LDIxIEBACiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7CiAgICAgUHlPYmplY3QgKmNvZGUgPSBOVUxMLCAqbW9kLCAqZGljdDsKLSAgICBjaGFyICpmdWxsbmFtZTsKLSAgICBQeU9iamVjdCAqbW9kcGF0aCA9IE5VTEwsICptb2RwYXRoX2J5dGVzOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZTsKKyAgICBQeU9iamVjdCAqbW9kcGF0aCA9IE5VTEw7CiAgICAgaW50IGlzcGFja2FnZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczp6aXBpbXBvcnRlci5sb2FkX21vZHVsZSIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmxvYWRfbW9kdWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShmdWxsbmFtZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgY29kZSA9IGdldF9tb2R1bGVfY29kZShzZWxmLCBmdWxsbmFtZSwgJmlzcGFja2FnZSwgJm1vZHBhdGgpOwogICAgIGlmIChjb2RlID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBtb2QgPSBQeUltcG9ydF9BZGRNb2R1bGUoZnVsbG5hbWUpOworICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChmdWxsbmFtZSk7CiAgICAgaWYgKG1vZCA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGRpY3QgPSBQeU1vZHVsZV9HZXREaWN0KG1vZCk7CkBAIC0zMzYsMTcgKzQ2NiwxNyBAQAogICAgICAgICAvKiBhZGQgX19wYXRoX18gdG8gdGhlIG1vZHVsZSAqYmVmb3JlKiB0aGUgY29kZSBnZXRzCiAgICAgICAgICAgIGV4ZWN1dGVkICovCiAgICAgICAgIFB5T2JqZWN0ICpwa2dwYXRoLCAqZnVsbHBhdGg7Ci0gICAgICAgIGNoYXIgKnN1Ym5hbWUgPSBnZXRfc3VibmFtZShmdWxsbmFtZSk7CisgICAgICAgIFB5T2JqZWN0ICpzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOwogICAgICAgICBpbnQgZXJyOwogCi0gICAgICAgIGZ1bGxwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWMlVSVzIiwKKyAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVJVUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5hcmNoaXZlLCBTRVAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnByZWZpeCwgc3VibmFtZSk7CisgICAgICAgIFB5X0RFQ1JFRihzdWJuYW1lKTsKICAgICAgICAgaWYgKGZ1bGxwYXRoID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgICAgIHBrZ3BhdGggPSBQeV9CdWlsZFZhbHVlKCJbT10iLCBmdWxscGF0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRihmdWxscGF0aCk7CisgICAgICAgIHBrZ3BhdGggPSBQeV9CdWlsZFZhbHVlKCJbTl0iLCBmdWxscGF0aCk7CiAgICAgICAgIGlmIChwa2dwYXRoID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiX19wYXRoX18iLCBwa2dwYXRoKTsKQEAgLTM1NCwxOCArNDg0LDEzIEBACiAgICAgICAgIGlmIChlcnIgIT0gMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIG1vZHBhdGhfYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KG1vZHBhdGgpOwotICAgIGlmIChtb2RwYXRoX2J5dGVzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgbW9kID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeChmdWxsbmFtZSwgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKG1vZHBhdGhfYnl0ZXMpKTsKLSAgICBQeV9ERUNSRUYobW9kcGF0aF9ieXRlcyk7CisgICAgbW9kID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoZnVsbG5hbWUsIGNvZGUsIG1vZHBhdGgsIE5VTEwpOwogICAgIFB5X0NMRUFSKGNvZGUpOwogICAgIGlmIChtb2QgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgJXMgIyBsb2FkZWQgZnJvbSBaaXAgJVVcbiIsCisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0ICVVICMgbG9hZGVkIGZyb20gWmlwICVVXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUsIG1vZHBhdGgpOwogICAgIFB5X0RFQ1JFRihtb2RwYXRoKTsKICAgICByZXR1cm4gbW9kOwpAQCAtMzgwLDEyICs1MDUsMTAgQEAKIHppcGltcG9ydGVyX2dldF9maWxlbmFtZShQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKLSAgICBQeU9iamVjdCAqY29kZTsKLSAgICBjaGFyICpmdWxsbmFtZTsKLSAgICBQeU9iamVjdCAqbW9kcGF0aDsKKyAgICBQeU9iamVjdCAqZnVsbG5hbWUsICpjb2RlLCAqbW9kcGF0aDsKICAgICBpbnQgaXNwYWNrYWdlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmdldF9maWxlbmFtZSIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmdldF9maWxlbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZmdWxsbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC00MDQsMTAgKzUyNywxMCBAQAogemlwaW1wb3J0ZXJfaXNfcGFja2FnZShQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKLSAgICBjaGFyICpmdWxsbmFtZTsKKyAgICBQeU9iamVjdCAqZnVsbG5hbWU7CiAgICAgZW51bSB6aV9tb2R1bGVfaW5mbyBtaTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczp6aXBpbXBvcnRlci5pc19wYWNrYWdlIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuaXNfcGFja2FnZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZmdWxsbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC00MTUsNzEgKzUzOCw3MCBAQAogICAgIGlmIChtaSA9PSBNSV9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1pID09IE1JX05PVF9GT1VORCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAnJXMnIiwgZnVsbG5hbWUpOworICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAlUiIsIGZ1bGxuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcobWkgPT0gTUlfUEFDS0FHRSk7CiB9CiAKKwogc3RhdGljIFB5T2JqZWN0ICoKIHppcGltcG9ydGVyX2dldF9kYXRhKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIFB5T2JqZWN0ICpwYXRob2JqLCAqa2V5OwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnBhdGg7CisgICAgUHlPYmplY3QgKnBhdGgsICprZXk7CiAjaWZkZWYgQUxUU0VQCi0gICAgUHlfVU5JQ09ERSAqcCwgYnVmW01BWFBBVEhMRU4gKyAxXTsKKyAgICBfUHlfSURFTlRJRklFUihyZXBsYWNlKTsKICNlbmRpZgotICAgIFB5X1VOSUNPREUgKmFyY2hpdmU7CiAgICAgUHlPYmplY3QgKnRvY19lbnRyeTsKLSAgICBQeV9zc2l6ZV90IHBhdGhfbGVuLCBsZW47CisgICAgUHlfc3NpemVfdCBwYXRoX3N0YXJ0LCBwYXRoX2xlbiwgbGVuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmdldF9kYXRhIiwgJnBhdGhvYmopKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp6aXBpbXBvcnRlci5nZXRfZGF0YSIsICZwYXRoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBwYXRoX2xlbiA9IFB5VW5pY29kZV9HRVRfU0laRShwYXRob2JqKTsKLSAgICBwYXRoID0gUHlVbmljb2RlX0FTX1VOSUNPREUocGF0aG9iaik7CiAjaWZkZWYgQUxUU0VQCi0gICAgaWYgKHBhdGhfbGVuID49IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFppcEltcG9ydEVycm9yLCAicGF0aCB0b28gbG9uZyIpOworICAgIHBhdGggPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBhdGgsICZQeUlkX3JlcGxhY2UsICJDQyIsIEFMVFNFUCwgU0VQKTsKKyAgICBpZiAoIXBhdGgpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9VTklDT0RFX3N0cmNweShidWYsIHBhdGgpOwotICAgIGZvciAocCA9IGJ1ZjsgKnA7IHArKykgewotICAgICAgICBpZiAoKnAgPT0gQUxUU0VQKQotICAgICAgICAgICAgKnAgPSBTRVA7Ci0gICAgfQotICAgIHBhdGggPSBidWY7CisjZWxzZQorICAgIFB5X0lOQ1JFRihwYXRoKTsKICNlbmRpZgotICAgIGFyY2hpdmUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmLT5hcmNoaXZlKTsKLSAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZi0+YXJjaGl2ZSk7Ci0gICAgaWYgKChzaXplX3QpbGVuIDwgUHlfVU5JQ09ERV9zdHJsZW4ocGF0aCkgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9zdHJuY21wKHBhdGgsIGFyY2hpdmUsIGxlbikgPT0gMCAmJgotICAgICAgICBwYXRoW2xlbl0gPT0gU0VQKSB7Ci0gICAgICAgIHBhdGggKz0gbGVuICsgMTsKLSAgICAgICAgcGF0aF9sZW4gLT0gbGVuICsgMTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHBhdGgpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcGF0aF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYXRoKTsKKworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYtPmFyY2hpdmUpOworICAgIHBhdGhfc3RhcnQgPSAwOworICAgIGlmIChQeVVuaWNvZGVfVGFpbG1hdGNoKHBhdGgsIHNlbGYtPmFyY2hpdmUsIDAsIGxlbiwgLTEpCisgICAgICAgICYmIFB5VW5pY29kZV9SRUFEX0NIQVIocGF0aCwgbGVuKSA9PSBTRVApIHsKKyAgICAgICAgcGF0aF9zdGFydCA9IGxlbiArIDE7CiAgICAgfQogCi0gICAga2V5ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHBhdGgsIHBhdGhfbGVuKTsKKyAgICBrZXkgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhdGgsIHBhdGhfc3RhcnQsIHBhdGhfbGVuKTsKICAgICBpZiAoa2V5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtKHNlbGYtPmZpbGVzLCBrZXkpOwogICAgIGlmICh0b2NfZW50cnkgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfSU9FcnJvciwga2V5KTsKICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgcmV0dXJuIGdldF9kYXRhKHNlbGYtPmFyY2hpdmUsIHRvY19lbnRyeSk7CisgIGVycm9yOgorICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHppcGltcG9ydGVyX2dldF9jb2RlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIGNoYXIgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczp6aXBpbXBvcnRlci5nZXRfY29kZSIsICZmdWxsbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmdldF9jb2RlIiwgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXR1cm4gZ2V0X21vZHVsZV9jb2RlKHNlbGYsIGZ1bGxuYW1lLCBOVUxMLCBOVUxMKTsKQEAgLTQ5MCwzNCArNjEyLDM5IEBACiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7CiAgICAgUHlPYmplY3QgKnRvY19lbnRyeTsKLSAgICBjaGFyICpmdWxsbmFtZSwgKnN1Ym5hbWUsIHBhdGhbTUFYUEFUSExFTisxXTsKLSAgICBpbnQgbGVuOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZSwgKnN1Ym5hbWUsICpwYXRoLCAqZnVsbHBhdGg7CiAgICAgZW51bSB6aV9tb2R1bGVfaW5mbyBtaTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczp6aXBpbXBvcnRlci5nZXRfc291cmNlIiwgJmZ1bGxuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X3NvdXJjZSIsICZmdWxsbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbWkgPSBnZXRfbW9kdWxlX2luZm8oc2VsZiwgZnVsbG5hbWUpOwogICAgIGlmIChtaSA9PSBNSV9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1pID09IE1JX05PVF9GT1VORCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAnJXMnIiwgZnVsbG5hbWUpOworICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAlUiIsIGZ1bGxuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgc3VibmFtZSA9IGdldF9zdWJuYW1lKGZ1bGxuYW1lKTsKLQotICAgIGxlbiA9IG1ha2VfZmlsZW5hbWUoc2VsZi0+cHJlZml4LCBzdWJuYW1lLCBwYXRoLCBzaXplb2YocGF0aCkpOwotICAgIGlmIChsZW4gPCAwKQorICAgIGlmIChzdWJuYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKG1pID09IE1JX1BBQ0tBR0UpIHsKLSAgICAgICAgcGF0aFtsZW5dID0gU0VQOwotICAgICAgICBzdHJjcHkocGF0aCArIGxlbiArIDEsICJfX2luaXRfXy5weSIpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHN0cmNweShwYXRoICsgbGVuLCAiLnB5Iik7CisgICAgcGF0aCA9IG1ha2VfZmlsZW5hbWUoc2VsZi0+cHJlZml4LCBzdWJuYW1lKTsKKyAgICBQeV9ERUNSRUYoc3VibmFtZSk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0b2NfZW50cnkgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhzZWxmLT5maWxlcywgcGF0aCk7CisgICAgaWYgKG1pID09IE1JX1BBQ0tBR0UpCisgICAgICAgIGZ1bGxwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWNfX2luaXRfXy5weSIsIHBhdGgsIFNFUCk7CisgICAgZWxzZQorICAgICAgICBmdWxscGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVS5weSIsIHBhdGgpOworICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICBpZiAoZnVsbHBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0b2NfZW50cnkgPSBQeURpY3RfR2V0SXRlbShzZWxmLT5maWxlcywgZnVsbHBhdGgpOworICAgIFB5X0RFQ1JFRihmdWxscGF0aCk7CiAgICAgaWYgKHRvY19lbnRyeSAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXMsICpieXRlczsKICAgICAgICAgYnl0ZXMgPSBnZXRfZGF0YShzZWxmLT5hcmNoaXZlLCB0b2NfZW50cnkpOwpAQCAtNTQzLDYgKzY3MCwxNiBAQAogVGhlIG9wdGlvbmFsICdwYXRoJyBhcmd1bWVudCBpcyBpZ25vcmVkIC0tIGl0J3MgdGhlcmUgZm9yIGNvbXBhdGliaWxpdHlcblwKIHdpdGggdGhlIGltcG9ydGVyIHByb3RvY29sLiIpOwogCitQeURvY19TVFJWQVIoZG9jX2ZpbmRfbG9hZGVyLAorImZpbmRfbG9hZGVyKGZ1bGxuYW1lLCBwYXRoPU5vbmUpIC0+IHNlbGYsIHN0ciBvciBOb25lLlxuXAorXG5cCitTZWFyY2ggZm9yIGEgbW9kdWxlIHNwZWNpZmllZCBieSAnZnVsbG5hbWUnLiAnZnVsbG5hbWUnIG11c3QgYmUgdGhlXG5cCitmdWxseSBxdWFsaWZpZWQgKGRvdHRlZCkgbW9kdWxlIG5hbWUuIEl0IHJldHVybnMgdGhlIHppcGltcG9ydGVyXG5cCitpbnN0YW5jZSBpdHNlbGYgaWYgdGhlIG1vZHVsZSB3YXMgZm91bmQsIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlXG5cCitmdWxsIHBhdGggbmFtZSBpZiBpdCdzIHBvc3NpYmx5IGEgcG9ydGlvbiBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLFxuXAorb3IgTm9uZSBvdGhlcndpc2UuIFRoZSBvcHRpb25hbCAncGF0aCcgYXJndW1lbnQgaXMgaWdub3JlZCAtLSBpdCdzXG5cCisgdGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgaW1wb3J0ZXIgcHJvdG9jb2wuIik7CisKIFB5RG9jX1NUUlZBUihkb2NfbG9hZF9tb2R1bGUsCiAibG9hZF9tb2R1bGUoZnVsbG5hbWUpIC0+IG1vZHVsZS5cblwKIFxuXApAQCAtNTg0LDYgKzcyMSw4IEBACiBzdGF0aWMgUHlNZXRob2REZWYgemlwaW1wb3J0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiZmluZF9tb2R1bGUiLCB6aXBpbXBvcnRlcl9maW5kX21vZHVsZSwgTUVUSF9WQVJBUkdTLAogICAgICBkb2NfZmluZF9tb2R1bGV9LAorICAgIHsiZmluZF9sb2FkZXIiLCB6aXBpbXBvcnRlcl9maW5kX2xvYWRlciwgTUVUSF9WQVJBUkdTLAorICAgICBkb2NfZmluZF9sb2FkZXJ9LAogICAgIHsibG9hZF9tb2R1bGUiLCB6aXBpbXBvcnRlcl9sb2FkX21vZHVsZSwgTUVUSF9WQVJBUkdTLAogICAgICBkb2NfbG9hZF9tb2R1bGV9LAogICAgIHsiZ2V0X2RhdGEiLCB6aXBpbXBvcnRlcl9nZXRfZGF0YSwgTUVUSF9WQVJBUkdTLApAQCAtNzA4LDUwICs4NDcsNDEgQEAKICAgIGRhdGFfc2l6ZSBhbmQgZmlsZV9vZmZzZXQgYXJlIDAuCiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXJlYWRfZGlyZWN0b3J5KFB5T2JqZWN0ICphcmNoaXZlX29iaikKK3JlYWRfZGlyZWN0b3J5KFB5T2JqZWN0ICphcmNoaXZlKQogewotICAgIC8qIEZJWE1FOiB3b3JrIG9uIFB5X1VOSUNPREUqIGluc3RlYWQgb2YgY2hhciogKi8KICAgICBQeU9iamVjdCAqZmlsZXMgPSBOVUxMOwogICAgIEZJTEUgKmZwOwogICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzOwogICAgIHNob3J0IGNvbXByZXNzLCB0aW1lLCBkYXRlLCBuYW1lX3NpemU7CiAgICAgbG9uZyBjcmMsIGRhdGFfc2l6ZSwgZmlsZV9zaXplLCBoZWFkZXJfc2l6ZTsKICAgICBQeV9zc2l6ZV90IGZpbGVfb2Zmc2V0LCBoZWFkZXJfcG9zaXRpb24sIGhlYWRlcl9vZmZzZXQ7Ci0gICAgbG9uZyBpLCBsLCBjb3VudDsKLSAgICBzaXplX3QgbGVuZ3RoOwotICAgIFB5X1VOSUNPREUgcGF0aFtNQVhQQVRITEVOICsgNV07CisgICAgbG9uZyBsLCBjb3VudDsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgY2hhciBuYW1lW01BWFBBVEhMRU4gKyA1XTsKICAgICBQeU9iamVjdCAqbmFtZW9iaiA9IE5VTEw7CiAgICAgY2hhciAqcCwgZW5kb2ZfY2VudHJhbF9kaXJbMjJdOwogICAgIFB5X3NzaXplX3QgYXJjX29mZnNldDsgIC8qIEFic29sdXRlIG9mZnNldCB0byBzdGFydCBvZiB0aGUgemlwLWFyY2hpdmUuICovCi0gICAgUHlPYmplY3QgKnBhdGhvYmo7CisgICAgUHlPYmplY3QgKnBhdGg7CiAgICAgY29uc3QgY2hhciAqY2hhcnNldDsKICAgICBpbnQgYm9vdHN0cmFwOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShhcmNoaXZlX29iaikgPiBNQVhQQVRITEVOKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlppcCBwYXRoIG5hbWUgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X1VOSUNPREVfc3RyY3B5KHBhdGgsIFB5VW5pY29kZV9BU19VTklDT0RFKGFyY2hpdmVfb2JqKSk7Ci0KLSAgICBmcCA9IF9QeV9mb3BlbihhcmNoaXZlX29iaiwgInJiIik7CisgICAgZnAgPSBfUHlfZm9wZW4oYXJjaGl2ZSwgInJiIik7CiAgICAgaWYgKGZwID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3Qgb3BlbiBaaXAgZmlsZTogJyVVJyIsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IG9wZW4gWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBmc2VlayhmcCwgLTIyLCBTRUVLX0VORCk7CiAgICAgaGVhZGVyX3Bvc2l0aW9uID0gZnRlbGwoZnApOwogICAgIGlmIChmcmVhZChlbmRvZl9jZW50cmFsX2RpciwgMSwgMjIsIGZwKSAhPSAyMikgewogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAnJVUnIiwgYXJjaGl2ZV9vYmopOworICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGdldF9sb25nKCh1bnNpZ25lZCBjaGFyICopZW5kb2ZfY2VudHJhbF9kaXIpICE9IDB4MDYwNTRCNTApIHsKICAgICAgICAgLyogQmFkOiBFbmQgb2YgQ2VudHJhbCBEaXIgc2lnbmF0dXJlICovCiAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgIm5vdCBhIFppcCBmaWxlOiAnJVUnIiwgYXJjaGl2ZV9vYmopOworICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJub3QgYSBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC03NjQsOSArODk0LDYgQEAKICAgICBpZiAoZmlsZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGxlbmd0aCA9IFB5X1VOSUNPREVfc3RybGVuKHBhdGgpOwotICAgIHBhdGhbbGVuZ3RoXSA9IFNFUDsKLQogICAgIC8qIFN0YXJ0IG9mIENlbnRyYWwgRGlyZWN0b3J5ICovCiAgICAgY291bnQgPSAwOwogICAgIGZvciAoOzspIHsKQEAgLTc5NSw3ICs5MjIsNyBAQAogICAgICAgICAgICAgbmFtZV9zaXplID0gTUFYUEFUSExFTjsKIAogICAgICAgICBwID0gbmFtZTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG5hbWVfc2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoUHlfc3NpemVfdCluYW1lX3NpemU7IGkrKykgewogICAgICAgICAgICAgKnAgPSAoY2hhcilnZXRjKGZwKTsKICAgICAgICAgICAgIGlmICgqcCA9PSAnLycpCiAgICAgICAgICAgICAgICAgKnAgPSBTRVA7CkBAIC04MjgsMTIgKzk1NSwxMiBAQAogICAgICAgICAgICAgICAgICAgICBQWV9NQUpPUl9WRVJTSU9OLCBQWV9NSU5PUl9WRVJTSU9OKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLSAgICAgICAgUHlfVU5JQ09ERV9zdHJuY3B5KHBhdGggKyBsZW5ndGggKyAxLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lb2JqKSwgTUFYUEFUSExFTiAtIGxlbmd0aCAtIDEpOwotCi0gICAgICAgIHBhdGhvYmogPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocGF0aCwgUHlfVU5JQ09ERV9zdHJsZW4ocGF0aCkpOwotICAgICAgICBpZiAocGF0aG9iaiA9PSBOVUxMKQorICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG5hbWVvYmopID09IC0xKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgdCA9IFB5X0J1aWxkVmFsdWUoIk5obGxuaGhsIiwgcGF0aG9iaiwgY29tcHJlc3MsIGRhdGFfc2l6ZSwKKyAgICAgICAgcGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVjJVUiLCBhcmNoaXZlLCBTRVAsIG5hbWVvYmopOworICAgICAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgdCA9IFB5X0J1aWxkVmFsdWUoIk5obGxuaGhsIiwgcGF0aCwgY29tcHJlc3MsIGRhdGFfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplLCBmaWxlX29mZnNldCwgdGltZSwgZGF0ZSwgY3JjKTsKICAgICAgICAgaWYgKHQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC04NDYsOCArOTczLDggQEAKICAgICB9CiAgICAgZmNsb3NlKGZwKTsKICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB6aXBpbXBvcnQ6IGZvdW5kICVsZCBuYW1lcyBpbiAlVVxuIiwKLSAgICAgICAgICAgIGNvdW50LCBhcmNoaXZlX29iaik7CisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB6aXBpbXBvcnQ6IGZvdW5kICVsZCBuYW1lcyBpbiAlUlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBhcmNoaXZlKTsKICAgICByZXR1cm4gZmlsZXM7CiBlcnJvcjoKICAgICBmY2xvc2UoZnApOwpAQCAtODY1LDYgKzk5Miw3IEBACiAgICAgc3RhdGljIGludCBpbXBvcnRpbmdfemxpYiA9IDA7CiAgICAgUHlPYmplY3QgKnpsaWI7CiAgICAgUHlPYmplY3QgKmRlY29tcHJlc3M7CisgICAgX1B5X0lERU5USUZJRVIoZGVjb21wcmVzcyk7CiAKICAgICBpZiAoaW1wb3J0aW5nX3psaWIgIT0gMCkKICAgICAgICAgLyogU29tZW9uZSBoYXMgYSB6bGliLnB5W2NvXSBpbiB0aGVpciBaaXAgZmlsZTsKQEAgLTg3NCw4ICsxMDAyLDggQEAKICAgICB6bGliID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiemxpYiIpOwogICAgIGltcG9ydGluZ196bGliID0gMDsKICAgICBpZiAoemxpYiAhPSBOVUxMKSB7Ci0gICAgICAgIGRlY29tcHJlc3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHpsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNvbXByZXNzIik7CisgICAgICAgIGRlY29tcHJlc3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHpsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2RlY29tcHJlc3MpOwogICAgICAgICBQeV9ERUNSRUYoemxpYik7CiAgICAgfQogICAgIGVsc2UgewpAQCAtMTAwMSw3ICsxMTI5LDcgQEAKICAgIHRvIC5weSBpZiBhdmFpbGFibGUgYW5kIHdlIGRvbid0IHdhbnQgdG8gbWFzayBvdGhlciBlcnJvcnMpLgogICAgUmV0dXJucyBhIG5ldyByZWZlcmVuY2UuICovCiBzdGF0aWMgUHlPYmplY3QgKgotdW5tYXJzaGFsX2NvZGUoY2hhciAqcGF0aG5hbWUsIFB5T2JqZWN0ICpkYXRhLCB0aW1lX3QgbXRpbWUpCit1bm1hcnNoYWxfY29kZShQeU9iamVjdCAqcGF0aG5hbWUsIFB5T2JqZWN0ICpkYXRhLCB0aW1lX3QgbXRpbWUpCiB7CiAgICAgUHlPYmplY3QgKmNvZGU7CiAgICAgY2hhciAqYnVmID0gUHlCeXRlc19Bc1N0cmluZyhkYXRhKTsKQEAgLTEwMTUsOCArMTE0Myw4IEBACiAKICAgICBpZiAoZ2V0X2xvbmcoKHVuc2lnbmVkIGNoYXIgKilidWYpICE9IFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKCkpIHsKICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgJXMgaGFzIGJhZCBtYWdpY1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKKyAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyAlUiBoYXMgYmFkIG1hZ2ljXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsgIC8qIHNpZ25hbCBjYWxsZXIgdG8gdHJ5IGFsdGVybmF0aXZlICovCiAgICAgfQpAQCAtMTAyNCwxOSArMTE1MiwyMSBAQAogICAgIGlmIChtdGltZSAhPSAwICYmICFlcV9tdGltZShnZXRfbG9uZygodW5zaWduZWQgY2hhciAqKWJ1ZiArIDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGltZSkpIHsKICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgJXMgaGFzIGJhZCBtdGltZVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKKyAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyAlUiBoYXMgYmFkIG10aW1lXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsgIC8qIHNpZ25hbCBjYWxsZXIgdG8gdHJ5IGFsdGVybmF0aXZlICovCiAgICAgfQogCi0gICAgY29kZSA9IFB5TWFyc2hhbF9SZWFkT2JqZWN0RnJvbVN0cmluZyhidWYgKyA4LCBzaXplIC0gOCk7CisgICAgLyogWFhYIHRoZSBweWMncyBzaXplIGZpZWxkIGlzIGlnbm9yZWQ7IHRpbWVzdGFtcCBjb2xsaXNpb25zIGFyZSBwcm9iYWJseQorICAgICAgIHVuaW1wb3J0YW50IHdpdGggemlwIGZpbGVzLiAqLworICAgIGNvZGUgPSBQeU1hcnNoYWxfUmVhZE9iamVjdEZyb21TdHJpbmcoYnVmICsgMTIsIHNpemUgLSAxMik7CiAgICAgaWYgKGNvZGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFQeUNvZGVfQ2hlY2soY29kZSkpIHsKICAgICAgICAgUHlfREVDUkVGKGNvZGUpOwogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICJjb21waWxlZCBtb2R1bGUgJXMgaXMgbm90IGEgY29kZSBvYmplY3QiLAorICAgICAgICAgICAgICJjb21waWxlZCBtb2R1bGUgJVIgaXMgbm90IGEgY29kZSBvYmplY3QiLAogICAgICAgICAgICAgIHBhdGhuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTA1MCwxMSArMTE4MCwxMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG5vcm1hbGl6ZV9saW5lX2VuZGluZ3MoUHlPYmplY3QgKnNvdXJjZSkKIHsKLSAgICBjaGFyICpidWYsICpxLCAqcCA9IFB5Qnl0ZXNfQXNTdHJpbmcoc291cmNlKTsKKyAgICBjaGFyICpidWYsICpxLCAqcDsKICAgICBQeU9iamVjdCAqZml4ZWRfc291cmNlOwogICAgIGludCBsZW4gPSAwOwogCi0gICAgaWYgKCFwKSB7CisgICAgcCA9IFB5Qnl0ZXNfQXNTdHJpbmcoc291cmNlKTsKKyAgICBpZiAocCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCJcblwwIiwgMik7CiAgICAgfQogCkBAIC0xMDg3LDE2ICsxMjE4LDI0IEBACiAvKiBHaXZlbiBhIHN0cmluZyBidWZmZXIgY29udGFpbmluZyBQeXRob24gc291cmNlIGNvZGUsIGNvbXBpbGUgaXQKICAgIHJldHVybiBhbmQgcmV0dXJuIGEgY29kZSBvYmplY3QgYXMgYSBuZXcgcmVmZXJlbmNlLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWNvbXBpbGVfc291cmNlKGNoYXIgKnBhdGhuYW1lLCBQeU9iamVjdCAqc291cmNlKQorY29tcGlsZV9zb3VyY2UoUHlPYmplY3QgKnBhdGhuYW1lLCBQeU9iamVjdCAqc291cmNlKQogewotICAgIFB5T2JqZWN0ICpjb2RlLCAqZml4ZWRfc291cmNlOworICAgIFB5T2JqZWN0ICpjb2RlLCAqZml4ZWRfc291cmNlLCAqcGF0aGJ5dGVzOwogCi0gICAgZml4ZWRfc291cmNlID0gbm9ybWFsaXplX2xpbmVfZW5kaW5ncyhzb3VyY2UpOwotICAgIGlmIChmaXhlZF9zb3VyY2UgPT0gTlVMTCkKKyAgICBwYXRoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGhuYW1lKTsKKyAgICBpZiAocGF0aGJ5dGVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgY29kZSA9IFB5X0NvbXBpbGVTdHJpbmcoUHlCeXRlc19Bc1N0cmluZyhmaXhlZF9zb3VyY2UpLCBwYXRobmFtZSwKKyAgICBmaXhlZF9zb3VyY2UgPSBub3JtYWxpemVfbGluZV9lbmRpbmdzKHNvdXJjZSk7CisgICAgaWYgKGZpeGVkX3NvdXJjZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoYnl0ZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBjb2RlID0gUHlfQ29tcGlsZVN0cmluZyhQeUJ5dGVzX0FzU3RyaW5nKGZpeGVkX3NvdXJjZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Bc1N0cmluZyhwYXRoYnl0ZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2ZpbGVfaW5wdXQpOworICAgIFB5X0RFQ1JFRihwYXRoYnl0ZXMpOwogICAgIFB5X0RFQ1JFRihmaXhlZF9zb3VyY2UpOwogICAgIHJldHVybiBjb2RlOwogfQpAQCAtMTEyNSwxNCArMTI2NCwyMiBAQAogICAgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIG1hdGNoaW5nIC5weSBmaWxlLCBvciAwIGlmIG5vIHNvdXJjZQogICAgaXMgYXZhaWxhYmxlLiAqLwogc3RhdGljIHRpbWVfdAotZ2V0X210aW1lX29mX3NvdXJjZShaaXBJbXBvcnRlciAqc2VsZiwgY2hhciAqcGF0aCkKK2dldF9tdGltZV9vZl9zb3VyY2UoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICpwYXRoKQogewotICAgIFB5T2JqZWN0ICp0b2NfZW50cnk7Ci0gICAgdGltZV90IG10aW1lID0gMDsKLSAgICBQeV9zc2l6ZV90IGxhc3RjaGFyID0gc3RybGVuKHBhdGgpIC0gMTsKLSAgICBjaGFyIHNhdmVjaGFyID0gcGF0aFtsYXN0Y2hhcl07Ci0gICAgcGF0aFtsYXN0Y2hhcl0gPSAnXDAnOyAgLyogc3RyaXAgJ2MnIG9yICdvJyBmcm9tICoucHlbY29dICovCi0gICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoc2VsZi0+ZmlsZXMsIHBhdGgpOworICAgIFB5T2JqZWN0ICp0b2NfZW50cnksICpzdHJpcHBlZDsKKyAgICB0aW1lX3QgbXRpbWU7CisKKyAgICAvKiBzdHJpcCAnYycgb3IgJ28nIGZyb20gKi5weVtjb10gKi8KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHBhdGgpID09IC0xKQorICAgICAgICByZXR1cm4gKHRpbWVfdCktMTsKKyAgICBzdHJpcHBlZCA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlX0tJTkQocGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYXRoKSAtIDEpOworICAgIGlmIChzdHJpcHBlZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gKHRpbWVfdCktMTsKKworICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtKHNlbGYtPmZpbGVzLCBzdHJpcHBlZCk7CisgICAgUHlfREVDUkVGKHN0cmlwcGVkKTsKICAgICBpZiAodG9jX2VudHJ5ICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayh0b2NfZW50cnkpICYmCiAgICAgICAgIFB5VHVwbGVfU2l6ZSh0b2NfZW50cnkpID09IDgpIHsKICAgICAgICAgLyogZmV0Y2ggdGhlIHRpbWUgc3RhbXAgb2YgdGhlIC5weSBmaWxlIGZvciBjb21wYXJpc29uCkBAIC0xMTQxLDggKzEyODgsOCBAQAogICAgICAgICB0aW1lID0gUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dldEl0ZW0odG9jX2VudHJ5LCA1KSk7CiAgICAgICAgIGRhdGUgPSBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDYpKTsKICAgICAgICAgbXRpbWUgPSBwYXJzZV9kb3N0aW1lKHRpbWUsIGRhdGUpOwotICAgIH0KLSAgICBwYXRoW2xhc3RjaGFyXSA9IHNhdmVjaGFyOworICAgIH0gZWxzZQorICAgICAgICBtdGltZSA9IDA7CiAgICAgcmV0dXJuIG10aW1lOwogfQogCkBAIC0xMTUyLDI0ICsxMjk5LDE3IEBACiBnZXRfY29kZV9mcm9tX2RhdGEoWmlwSW1wb3J0ZXIgKnNlbGYsIGludCBpc3BhY2thZ2UsIGludCBpc2J5dGVjb2RlLAogICAgICAgICAgICAgICAgICAgIHRpbWVfdCBtdGltZSwgUHlPYmplY3QgKnRvY19lbnRyeSkKIHsKLSAgICBQeU9iamVjdCAqZGF0YSwgKmNvZGU7Ci0gICAgUHlPYmplY3QgKm1vZHBhdGg7CisgICAgUHlPYmplY3QgKmRhdGEsICptb2RwYXRoLCAqY29kZTsKIAogICAgIGRhdGEgPSBnZXRfZGF0YShzZWxmLT5hcmNoaXZlLCB0b2NfZW50cnkpOwogICAgIGlmIChkYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbW9kcGF0aCA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoUHlUdXBsZV9HZXRJdGVtKHRvY19lbnRyeSwgMCkpOwotICAgIGlmIChtb2RwYXRoID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGRhdGEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KKyAgICBtb2RwYXRoID0gUHlUdXBsZV9HZXRJdGVtKHRvY19lbnRyeSwgMCk7CiAgICAgaWYgKGlzYnl0ZWNvZGUpCi0gICAgICAgIGNvZGUgPSB1bm1hcnNoYWxfY29kZShQeUJ5dGVzX0FTX1NUUklORyhtb2RwYXRoKSwgZGF0YSwgbXRpbWUpOworICAgICAgICBjb2RlID0gdW5tYXJzaGFsX2NvZGUobW9kcGF0aCwgZGF0YSwgbXRpbWUpOwogICAgIGVsc2UKLSAgICAgICAgY29kZSA9IGNvbXBpbGVfc291cmNlKFB5Qnl0ZXNfQVNfU1RSSU5HKG1vZHBhdGgpLCBkYXRhKTsKLSAgICBQeV9ERUNSRUYobW9kcGF0aCk7CisgICAgICAgIGNvZGUgPSBjb21waWxlX3NvdXJjZShtb2RwYXRoLCBkYXRhKTsKICAgICBQeV9ERUNSRUYoZGF0YSk7CiAgICAgcmV0dXJuIGNvZGU7CiB9CkBAIC0xMTc3LDM1ICsxMzE3LDQ1IEBACiAvKiBHZXQgdGhlIGNvZGUgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbW9kdWxlIHNwZWNpZmllZCBieQogICAgJ2Z1bGxuYW1lJy4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRfbW9kdWxlX2NvZGUoWmlwSW1wb3J0ZXIgKnNlbGYsIGNoYXIgKmZ1bGxuYW1lLAorZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqZnVsbG5hbWUsCiAgICAgICAgICAgICAgICAgaW50ICpwX2lzcGFja2FnZSwgUHlPYmplY3QgKipwX21vZHBhdGgpCiB7Ci0gICAgUHlPYmplY3QgKnRvY19lbnRyeTsKLSAgICBjaGFyICpzdWJuYW1lLCBwYXRoW01BWFBBVEhMRU4gKyAxXTsKLSAgICBpbnQgbGVuOworICAgIFB5T2JqZWN0ICpjb2RlID0gTlVMTCwgKnRvY19lbnRyeSwgKnN1Ym5hbWU7CisgICAgUHlPYmplY3QgKnBhdGgsICpmdWxscGF0aCA9IE5VTEw7CiAgICAgc3RydWN0IHN0X3ppcF9zZWFyY2hvcmRlciAqenNvOwogCiAgICAgc3VibmFtZSA9IGdldF9zdWJuYW1lKGZ1bGxuYW1lKTsKKyAgICBpZiAoc3VibmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGxlbiA9IG1ha2VfZmlsZW5hbWUoc2VsZi0+cHJlZml4LCBzdWJuYW1lLCBwYXRoLCBzaXplb2YocGF0aCkpOwotICAgIGlmIChsZW4gPCAwKQorICAgIHBhdGggPSBtYWtlX2ZpbGVuYW1lKHNlbGYtPnByZWZpeCwgc3VibmFtZSk7CisgICAgUHlfREVDUkVGKHN1Ym5hbWUpOworICAgIGlmIChwYXRoID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZm9yICh6c28gPSB6aXBfc2VhcmNob3JkZXI7ICp6c28tPnN1ZmZpeDsgenNvKyspIHsKLSAgICAgICAgUHlPYmplY3QgKmNvZGUgPSBOVUxMOworICAgICAgICBjb2RlID0gTlVMTDsKIAotICAgICAgICBzdHJjcHkocGF0aCArIGxlbiwgenNvLT5zdWZmaXgpOworICAgICAgICBmdWxscGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVzIiwgcGF0aCwgenNvLT5zdWZmaXgpOworICAgICAgICBpZiAoZnVsbHBhdGggPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKwogICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcgPiAxKQotICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjIHRyeWluZyAlVSVjJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YXJjaGl2ZSwgKGludClTRVAsIHBhdGgpOwotICAgICAgICB0b2NfZW50cnkgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhzZWxmLT5maWxlcywgcGF0aCk7CisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgdHJ5aW5nICVVJWMlVVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5hcmNoaXZlLCAoaW50KVNFUCwgZnVsbHBhdGgpOworICAgICAgICB0b2NfZW50cnkgPSBQeURpY3RfR2V0SXRlbShzZWxmLT5maWxlcywgZnVsbHBhdGgpOwogICAgICAgICBpZiAodG9jX2VudHJ5ICE9IE5VTEwpIHsKICAgICAgICAgICAgIHRpbWVfdCBtdGltZSA9IDA7CiAgICAgICAgICAgICBpbnQgaXNwYWNrYWdlID0genNvLT50eXBlICYgSVNfUEFDS0FHRTsKICAgICAgICAgICAgIGludCBpc2J5dGVjb2RlID0genNvLT50eXBlICYgSVNfQllURUNPREU7CiAKLSAgICAgICAgICAgIGlmIChpc2J5dGVjb2RlKQotICAgICAgICAgICAgICAgIG10aW1lID0gZ2V0X210aW1lX29mX3NvdXJjZShzZWxmLCBwYXRoKTsKKyAgICAgICAgICAgIGlmIChpc2J5dGVjb2RlKSB7CisgICAgICAgICAgICAgICAgbXRpbWUgPSBnZXRfbXRpbWVfb2Zfc291cmNlKHNlbGYsIGZ1bGxwYXRoKTsKKyAgICAgICAgICAgICAgICBpZiAobXRpbWUgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUihmdWxscGF0aCk7CiAgICAgICAgICAgICBpZiAocF9pc3BhY2thZ2UgIT0gTlVMTCkKICAgICAgICAgICAgICAgICAqcF9pc3BhY2thZ2UgPSBpc3BhY2thZ2U7CiAgICAgICAgICAgICBjb2RlID0gZ2V0X2NvZGVfZnJvbV9kYXRhKHNlbGYsIGlzcGFja2FnZSwKQEAgLTEyMjEsMTEgKzEzNzEsMTYgQEAKICAgICAgICAgICAgICAgICAqcF9tb2RwYXRoID0gUHlUdXBsZV9HZXRJdGVtKHRvY19lbnRyeSwgMCk7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKCpwX21vZHBhdGgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGNvZGU7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlfQ0xFQVIoZnVsbHBhdGgpOwogICAgIH0KLSAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAnJXMnIiwgZnVsbG5hbWUpOwotICAgIHJldHVybiBOVUxMOworICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICVSIiwgZnVsbG5hbWUpOworZXhpdDoKKyAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgUHlfWERFQ1JFRihmdWxscGF0aCk7CisgICAgcmV0dXJuIGNvZGU7CiB9CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGlibW9kdWxlLmMgYi9Nb2R1bGVzL3psaWJtb2R1bGUuYwppbmRleCBhMWU2MDViLi42NTE5MTk0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3psaWJtb2R1bGUuYwpAQCAtNDMsNyArNDMsOSBAQAogICAgIHpfc3RyZWFtIHpzdDsKICAgICBQeU9iamVjdCAqdW51c2VkX2RhdGE7CiAgICAgUHlPYmplY3QgKnVuY29uc3VtZWRfdGFpbDsKKyAgICBjaGFyIGVvZjsKICAgICBpbnQgaXNfaW5pdGlhbGlzZWQ7CisgICAgUHlPYmplY3QgKnpkaWN0OwogICAgICNpZmRlZiBXSVRIX1RIUkVBRAogICAgICAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKICAgICAjZW5kaWYKQEAgLTc5LDE0ICs4MSwzNCBAQAogfQogCiBQeURvY19TVFJWQVIoY29tcHJlc3NvYmpfX2RvY19fLAotImNvbXByZXNzb2JqKFtsZXZlbF0pIC0tIFJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LlxuIgorImNvbXByZXNzb2JqKGxldmVsPS0xLCBtZXRob2Q9REVGTEFURUQsIHdiaXRzPTE1LCBtZW1sZXZlbD04LFxuIgorIiAgICAgICAgICAgIHN0cmF0ZWd5PVpfREVGQVVMVF9TVFJBVEVHWVssIHpkaWN0XSlcbiIKKyIgLS0gUmV0dXJuIGEgY29tcHJlc3NvciBvYmplY3QuXG4iCiAiXG4iCi0iT3B0aW9uYWwgYXJnIGxldmVsIGlzIHRoZSBjb21wcmVzc2lvbiBsZXZlbCwgaW4gMS05LiIpOworImxldmVsIGlzIHRoZSBjb21wcmVzc2lvbiBsZXZlbCAoYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgMC05OyBkZWZhdWx0IGlzIDYpLlxuIgorIkhpZ2hlciBjb21wcmVzc2lvbiBsZXZlbHMgYXJlIHNsb3dlciwgYnV0IHByb2R1Y2Ugc21hbGxlciByZXN1bHRzLlxuIgorIlxuIgorIm1ldGhvZCBpcyB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtLiBJZiBnaXZlbiwgdGhpcyBtdXN0IGJlIERFRkxBVEVELlxuIgorIlxuIgorIndiaXRzIGlzIHRoZSBiYXNlIHR3byBsb2dhcml0aG0gb2YgdGhlIHdpbmRvdyBzaXplIChyYW5nZTogOC4uMTUpLlxuIgorIlxuIgorIm1lbWxldmVsIGNvbnRyb2xzIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgZm9yIGludGVybmFsIGNvbXByZXNzaW9uIHN0YXRlLlxuIgorIlZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDEgdG8gOS4gSGlnaGVyIHZhbHVlcyByZXN1bHQgaW4gaGlnaGVyIG1lbW9yeSB1c2FnZSxcbiIKKyJmYXN0ZXIgY29tcHJlc3Npb24sIGFuZCBzbWFsbGVyIG91dHB1dC5cbiIKKyJcbiIKKyJzdHJhdGVneSBpcyB1c2VkIHRvIHR1bmUgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gUG9zc2libGUgdmFsdWVzIGFyZVxuIgorIlpfREVGQVVMVF9TVFJBVEVHWSwgWl9GSUxURVJFRCwgYW5kIFpfSFVGRk1BTl9PTkxZLlxuIgorIlxuIgorInpkaWN0IGlzIHRoZSBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkgLSBhIHNlcXVlbmNlIG9mIGJ5dGVzXG4iCisiY29udGFpbmluZyBzdWJzZXF1ZW5jZXMgdGhhdCBhcmUgbGlrZWx5IHRvIG9jY3VyIGluIHRoZSBpbnB1dCBkYXRhLiIpOwogCiBQeURvY19TVFJWQVIoZGVjb21wcmVzc29ial9fZG9jX18sCi0iZGVjb21wcmVzc29iaihbd2JpdHNdKSAtLSBSZXR1cm4gYSBkZWNvbXByZXNzb3Igb2JqZWN0LlxuIgorImRlY29tcHJlc3NvYmooW3diaXRzWywgemRpY3RdXSkgLS0gUmV0dXJuIGEgZGVjb21wcmVzc29yIG9iamVjdC5cbiIKICJcbiIKLSJPcHRpb25hbCBhcmcgd2JpdHMgaXMgdGhlIHdpbmRvdyBidWZmZXIgc2l6ZS4iKTsKKyJPcHRpb25hbCBhcmcgd2JpdHMgaXMgdGhlIHdpbmRvdyBidWZmZXIgc2l6ZS5cbiIKKyJcbiIKKyJPcHRpb25hbCBhcmcgemRpY3QgaXMgdGhlIHByZWRlZmluZWQgY29tcHJlc3Npb24gZGljdGlvbmFyeS4gVGhpcyBtdXN0IGJlXG4iCisidGhlIHNhbWUgZGljdGlvbmFyeSBhcyB1c2VkIGJ5IHRoZSBjb21wcmVzc29yIHRoYXQgcHJvZHVjZWQgdGhlIGlucHV0IGRhdGEuIik7CiAKIHN0YXRpYyBjb21wb2JqZWN0ICoKIG5ld2NvbXBvYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlKQpAQCAtOTUsNyArMTE3LDkgQEAKICAgICBzZWxmID0gUHlPYmplY3RfTmV3KGNvbXBvYmplY3QsIHR5cGUpOwogICAgIGlmIChzZWxmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIHNlbGYtPmVvZiA9IDA7CiAgICAgc2VsZi0+aXNfaW5pdGlhbGlzZWQgPSAwOworICAgIHNlbGYtPnpkaWN0ID0gTlVMTDsKICAgICBzZWxmLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwogICAgIGlmIChzZWxmLT51bnVzZWRfZGF0YSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKQEAgLTI5Nyw3ICszMjEsNyBAQAogCiAgICAgZXJyID0gaW5mbGF0ZUVuZCgmenN0KTsKICAgICBpZiAoZXJyICE9IFpfT0spIHsKLSAgICAgICAgemxpYl9lcnJvcih6c3QsIGVyciwgIndoaWxlIGZpbmlzaGluZyBkYXRhIGRlY29tcHJlc3Npb24iKTsKKyAgICAgICAgemxpYl9lcnJvcih6c3QsIGVyciwgIndoaWxlIGZpbmlzaGluZyBkZWNvbXByZXNzaW9uIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCkBAIC0zMTQsMTkgKzMzOCwyNCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlabGliX2NvbXByZXNzb2JqKFB5T2JqZWN0ICpzZWxmcHRyLCBQeU9iamVjdCAqYXJncykKK1B5WmxpYl9jb21wcmVzc29iaihQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgY29tcG9iamVjdCAqc2VsZjsKICAgICBpbnQgbGV2ZWw9Wl9ERUZBVUxUX0NPTVBSRVNTSU9OLCBtZXRob2Q9REVGTEFURUQ7CiAgICAgaW50IHdiaXRzPU1BWF9XQklUUywgbWVtTGV2ZWw9REVGX01FTV9MRVZFTCwgc3RyYXRlZ3k9MCwgZXJyOworICAgIFB5X2J1ZmZlciB6ZGljdDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImxldmVsIiwgIm1ldGhvZCIsICJ3Yml0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1MZXZlbCIsICJzdHJhdGVneSIsICJ6ZGljdCIsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aWlpaWk6Y29tcHJlc3NvYmoiLCAmbGV2ZWwsICZtZXRob2QsICZ3Yml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lbUxldmVsLCAmc3RyYXRlZ3kpKQorICAgIHpkaWN0LmJ1ZiA9IE5VTEw7IC8qIFNlbnRpbmVsLCBzbyB3ZSBjYW4gdGVsbCB3aGV0aGVyIHpkaWN0IHdhcyBzdXBwbGllZC4gKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aWlpaWl5Kjpjb21wcmVzc29iaiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbGV2ZWwsICZtZXRob2QsICZ3Yml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWVtTGV2ZWwsICZzdHJhdGVneSwgJnpkaWN0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzZWxmID0gbmV3Y29tcG9iamVjdCgmQ29tcHR5cGUpOwogICAgIGlmIChzZWxmPT1OVUxMKQotICAgICAgICByZXR1cm4oTlVMTCk7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgc2VsZi0+enN0LnphbGxvYyA9IChhbGxvY19mdW5jKU5VTEw7CiAgICAgc2VsZi0+enN0LnpmcmVlID0gKGZyZWVfZnVuYylaX05VTEw7CiAgICAgc2VsZi0+enN0Lm5leHRfaW4gPSBOVUxMOwpAQCAtMzM1LDMwICszNjQsNTggQEAKICAgICBzd2l0Y2goZXJyKSB7CiAgICAgY2FzZSAoWl9PSyk6CiAgICAgICAgIHNlbGYtPmlzX2luaXRpYWxpc2VkID0gMTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopc2VsZjsKKyAgICAgICAgaWYgKHpkaWN0LmJ1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIHN1Y2Nlc3M7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnIgPSBkZWZsYXRlU2V0RGljdGlvbmFyeSgmc2VsZi0+enN0LCB6ZGljdC5idWYsIHpkaWN0Lmxlbik7CisgICAgICAgICAgICBzd2l0Y2ggKGVycikgeworICAgICAgICAgICAgY2FzZSAoWl9PSyk6CisgICAgICAgICAgICAgICAgZ290byBzdWNjZXNzOworICAgICAgICAgICAgY2FzZSAoWl9TVFJFQU1fRVJST1IpOgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBkaWN0aW9uYXJ5Iik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJkZWZsYXRlU2V0RGljdGlvbmFyeSgpIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICB9CiAgICAgY2FzZSAoWl9NRU1fRVJST1IpOgotICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGNvbXByZXNzaW9uIG9iamVjdCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICBjYXNlKFpfU1RSRUFNX0VSUk9SKToKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgaW5pdGlhbGl6YXRpb24gb3B0aW9uIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBjcmVhdGluZyBjb21wcmVzc2lvbiBvYmplY3QiKTsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisKKyBlcnJvcjoKKyAgICBQeV9YREVDUkVGKHNlbGYpOworICAgIHNlbGYgPSBOVUxMOworIHN1Y2Nlc3M6CisgICAgaWYgKHpkaWN0LmJ1ZiAhPSBOVUxMKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ6ZGljdCk7CisgICAgcmV0dXJuIChQeU9iamVjdCopc2VsZjsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5WmxpYl9kZWNvbXByZXNzb2JqKFB5T2JqZWN0ICpzZWxmcHRyLCBQeU9iamVjdCAqYXJncykKK1B5WmxpYl9kZWNvbXByZXNzb2JqKFB5T2JqZWN0ICpzZWxmcHRyLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7IndiaXRzIiwgInpkaWN0IiwgTlVMTH07CiAgICAgaW50IHdiaXRzPURFRl9XQklUUywgZXJyOwogICAgIGNvbXBvYmplY3QgKnNlbGY7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpkZWNvbXByZXNzb2JqIiwgJndiaXRzKSkKKyAgICBQeU9iamVjdCAqemRpY3Q9TlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpTzpkZWNvbXByZXNzb2JqIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZ3Yml0cywgJnpkaWN0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHpkaWN0ICE9IE5VTEwgJiYgIVB5T2JqZWN0X0NoZWNrQnVmZmVyKHpkaWN0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInpkaWN0IGFyZ3VtZW50IG11c3Qgc3VwcG9ydCB0aGUgYnVmZmVyIHByb3RvY29sIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIHNlbGYgPSBuZXdjb21wb2JqZWN0KCZEZWNvbXB0eXBlKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKQpAQCAtMzY3LDYgKzQyNCwxMCBAQAogICAgIHNlbGYtPnpzdC56ZnJlZSA9IChmcmVlX2Z1bmMpWl9OVUxMOwogICAgIHNlbGYtPnpzdC5uZXh0X2luID0gTlVMTDsKICAgICBzZWxmLT56c3QuYXZhaWxfaW4gPSAwOworICAgIGlmICh6ZGljdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRih6ZGljdCk7CisgICAgICAgIHNlbGYtPnpkaWN0ID0gemRpY3Q7CisgICAgfQogICAgIGVyciA9IGluZmxhdGVJbml0Migmc2VsZi0+enN0LCB3Yml0cyk7CiAgICAgc3dpdGNoKGVycikgewogICAgIGNhc2UgKFpfT0spOgpAQCAtMzk2LDYgKzQ1Nyw3IEBACiAjZW5kaWYKICAgICBQeV9YREVDUkVGKHNlbGYtPnVudXNlZF9kYXRhKTsKICAgICBQeV9YREVDUkVGKHNlbGYtPnVuY29uc3VtZWRfdGFpbCk7CisgICAgUHlfWERFQ1JFRihzZWxmLT56ZGljdCk7CiAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwogfQogCkBAIC00ODIsNyArNTQ0LDcgQEAKICAgICAqLwogCiAgICAgaWYgKGVyciAhPSBaX09LICYmIGVyciAhPSBaX0JVRl9FUlJPUikgewotICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgY29tcHJlc3NpbmciKTsKKyAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGNvbXByZXNzaW5nIGRhdGEiKTsKICAgICAgICAgUHlfREVDUkVGKFJldFZhbCk7CiAgICAgICAgIFJldFZhbCA9IE5VTEw7CiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC01NTUsNiArNjE3LDI3IEBACiAgICAgZXJyID0gaW5mbGF0ZSgmKHNlbGYtPnpzdCksIFpfU1lOQ19GTFVTSCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAorICAgIGlmIChlcnIgPT0gWl9ORUVEX0RJQ1QgJiYgc2VsZi0+emRpY3QgIT0gTlVMTCkgeworICAgICAgICBQeV9idWZmZXIgemRpY3RfYnVmOworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlbGYtPnpkaWN0LCAmemRpY3RfYnVmLCBQeUJVRl9TSU1QTEUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoUmV0VmFsKTsKKyAgICAgICAgICAgIFJldFZhbCA9IE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGVyciA9IGluZmxhdGVTZXREaWN0aW9uYXJ5KCYoc2VsZi0+enN0KSwgemRpY3RfYnVmLmJ1ZiwgemRpY3RfYnVmLmxlbik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnpkaWN0X2J1Zik7CisgICAgICAgIGlmIChlcnIgIT0gWl9PSykgeworICAgICAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGRlY29tcHJlc3NpbmcgZGF0YSIpOworICAgICAgICAgICAgUHlfREVDUkVGKFJldFZhbCk7CisgICAgICAgICAgICBSZXRWYWwgPSBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICAvKiBSZXBlYXQgdGhlIGNhbGwgdG8gaW5mbGF0ZS4gKi8KKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBlcnIgPSBpbmZsYXRlKCYoc2VsZi0+enN0KSwgWl9TWU5DX0ZMVVNIKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisKICAgICAvKiBXaGlsZSBaX09LIGFuZCB0aGUgb3V0cHV0IGJ1ZmZlciBpcyBmdWxsLCB0aGVyZSBtaWdodCBiZSBtb3JlIG91dHB1dC4KICAgICAgICBTbyBleHRlbmQgdGhlIG91dHB1dCBidWZmZXIgYW5kIHRyeSBhZ2Fpbi4KICAgICAqLwpAQCAtNjE3LDEyICs3MDAsMTMgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQorICAgICAgICBzZWxmLT5lb2YgPSAxOwogICAgICAgICAvKiBXZSB3aWxsIG9ubHkgZ2V0IFpfQlVGX0VSUk9SIGlmIHRoZSBvdXRwdXQgYnVmZmVyIHdhcyBmdWxsCiAgICAgICAgICAgIGJ1dCB0aGVyZSB3YXNuJ3QgbW9yZSBvdXRwdXQgd2hlbiB3ZSB0cmllZCBhZ2Fpbiwgc28gaXQgaXMKICAgICAgICAgICAgbm90IGFuIGVycm9yIGNvbmRpdGlvbi4KICAgICAgICAgKi8KICAgICB9IGVsc2UgaWYgKGVyciAhPSBaX09LICYmIGVyciAhPSBaX0JVRl9FUlJPUikgewotICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgZGVjb21wcmVzc2luZyIpOworICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgZGVjb21wcmVzc2luZyBkYXRhIik7CiAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwogICAgICAgICBSZXRWYWwgPSBOVUxMOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNzAzLDcgKzc4Nyw3IEBACiAgICAgaWYgKGVyciA9PSBaX1NUUkVBTV9FTkQgJiYgZmx1c2htb2RlID09IFpfRklOSVNIKSB7CiAgICAgICAgIGVyciA9IGRlZmxhdGVFbmQoJihzZWxmLT56c3QpKTsKICAgICAgICAgaWYgKGVyciAhPSBaX09LKSB7Ci0gICAgICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAiZnJvbSBkZWZsYXRlRW5kKCkiKTsKKyAgICAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBmaW5pc2hpbmcgY29tcHJlc3Npb24iKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwogICAgICAgICAgICAgUmV0VmFsID0gTlVMTDsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC03NjcsMTAgKzg1MSwxNCBAQAogICAgIH0KICAgICBQeV9JTkNSRUYoc2VsZi0+dW51c2VkX2RhdGEpOwogICAgIFB5X0lOQ1JFRihzZWxmLT51bmNvbnN1bWVkX3RhaWwpOworICAgIFB5X1hJTkNSRUYoc2VsZi0+emRpY3QpOwogICAgIFB5X1hERUNSRUYocmV0dmFsLT51bnVzZWRfZGF0YSk7CiAgICAgUHlfWERFQ1JFRihyZXR2YWwtPnVuY29uc3VtZWRfdGFpbCk7CisgICAgUHlfWERFQ1JFRihyZXR2YWwtPnpkaWN0KTsKICAgICByZXR2YWwtPnVudXNlZF9kYXRhID0gc2VsZi0+dW51c2VkX2RhdGE7CiAgICAgcmV0dmFsLT51bmNvbnN1bWVkX3RhaWwgPSBzZWxmLT51bmNvbnN1bWVkX3RhaWw7CisgICAgcmV0dmFsLT56ZGljdCA9IHNlbGYtPnpkaWN0OworICAgIHJldHZhbC0+ZW9mID0gc2VsZi0+ZW9mOwogCiAgICAgLyogTWFyayBpdCBhcyBiZWluZyBpbml0aWFsaXplZCAqLwogICAgIHJldHZhbC0+aXNfaW5pdGlhbGlzZWQgPSAxOwpAQCAtODE4LDEwICs5MDYsMTQgQEAKIAogICAgIFB5X0lOQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7CiAgICAgUHlfSU5DUkVGKHNlbGYtPnVuY29uc3VtZWRfdGFpbCk7CisgICAgUHlfWElOQ1JFRihzZWxmLT56ZGljdCk7CiAgICAgUHlfWERFQ1JFRihyZXR2YWwtPnVudXNlZF9kYXRhKTsKICAgICBQeV9YREVDUkVGKHJldHZhbC0+dW5jb25zdW1lZF90YWlsKTsKKyAgICBQeV9YREVDUkVGKHJldHZhbC0+emRpY3QpOwogICAgIHJldHZhbC0+dW51c2VkX2RhdGEgPSBzZWxmLT51bnVzZWRfZGF0YTsKICAgICByZXR2YWwtPnVuY29uc3VtZWRfdGFpbCA9IHNlbGYtPnVuY29uc3VtZWRfdGFpbDsKKyAgICByZXR2YWwtPnpkaWN0ID0gc2VsZi0+emRpY3Q7CisgICAgcmV0dmFsLT5lb2YgPSBzZWxmLT5lb2Y7CiAKICAgICAvKiBNYXJrIGl0IGFzIGJlaW5nIGluaXRpYWxpemVkICovCiAgICAgcmV0dmFsLT5pc19pbml0aWFsaXNlZCA9IDE7CkBAIC04ODcsMTQgKzk3OSwxMyBAQAogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIH0KIAotICAgIC8qIElmIGZsdXNobW9kZSBpcyBaX0ZJTklTSCwgd2UgYWxzbyBoYXZlIHRvIGNhbGwgZGVmbGF0ZUVuZCgpIHRvIGZyZWUKLSAgICAgICB2YXJpb3VzIGRhdGEgc3RydWN0dXJlcy4gTm90ZSB3ZSBzaG91bGQgb25seSBnZXQgWl9TVFJFQU1fRU5EIHdoZW4KLSAgICAgICBmbHVzaG1vZGUgaXMgWl9GSU5JU0ggKi8KKyAgICAvKiBJZiBhdCBlbmQgb2Ygc3RyZWFtLCBjbGVhbiB1cCBhbnkgbWVtb3J5IGFsbG9jYXRlZCBieSB6bGliLiAqLwogICAgIGlmIChlcnIgPT0gWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgIGVyciA9IGluZmxhdGVFbmQoJihzZWxmLT56c3QpKTsKKyAgICAgICAgc2VsZi0+ZW9mID0gMTsKICAgICAgICAgc2VsZi0+aXNfaW5pdGlhbGlzZWQgPSAwOworICAgICAgICBlcnIgPSBpbmZsYXRlRW5kKCYoc2VsZi0+enN0KSk7CiAgICAgICAgIGlmIChlcnIgIT0gWl9PSykgewotICAgICAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgImZyb20gaW5mbGF0ZUVuZCgpIik7CisgICAgICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgZmluaXNoaW5nIGRlY29tcHJlc3Npb24iKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwogICAgICAgICAgICAgcmV0dmFsID0gTlVMTDsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC05NDIsNiArMTAzMyw3IEBACiBzdGF0aWMgUHlNZW1iZXJEZWYgRGVjb21wX21lbWJlcnNbXSA9IHsKICAgICB7InVudXNlZF9kYXRhIiwgICAgIFRfT0JKRUNULCBDT01QX09GRih1bnVzZWRfZGF0YSksIFJFQURPTkxZfSwKICAgICB7InVuY29uc3VtZWRfdGFpbCIsIFRfT0JKRUNULCBDT01QX09GRih1bmNvbnN1bWVkX3RhaWwpLCBSRUFET05MWX0sCisgICAgeyJlb2YiLCAgICAgICAgICAgICBUX0JPT0wsICAgQ09NUF9PRkYoZW9mKSwgUkVBRE9OTFl9LAogICAgIHtOVUxMfSwKIH07CiAKQEAgLTEwMjcsMTMgKzExMTksMTMgQEAKICAgICAgICAgICAgICAgICBhZGxlcjMyX19kb2NfX30sCiAgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilQeVpsaWJfY29tcHJlc3MsICBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgIGNvbXByZXNzX19kb2NfX30sCi0gICAgeyJjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbilQeVpsaWJfY29tcHJlc3NvYmosIE1FVEhfVkFSQVJHUywKKyAgICB7ImNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKVB5WmxpYl9jb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCiAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzb2JqX19kb2NfX30sCiAgICAgeyJjcmMzMiIsIChQeUNGdW5jdGlvbilQeVpsaWJfY3JjMzIsIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgY3JjMzJfX2RvY19ffSwKICAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pUHlabGliX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgICAgICBkZWNvbXByZXNzX19kb2NfX30sCi0gICAgeyJkZWNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKVB5WmxpYl9kZWNvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1MsCisgICAgeyJkZWNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKVB5WmxpYl9kZWNvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKICAgICAgICAgICAgICAgICAgICBkZWNvbXByZXNzb2JqX19kb2NfX30sCiAgICAge05VTEwsIE5VTEx9CiB9OwpAQCAtMTEwNywxMCArMTE5OSwxMCBAQAogIlxuIgogImFkbGVyMzIoc3RyaW5nWywgc3RhcnRdKSAtLSBDb21wdXRlIGFuIEFkbGVyLTMyIGNoZWNrc3VtLlxuIgogImNvbXByZXNzKHN0cmluZ1ssIGxldmVsXSkgLS0gQ29tcHJlc3Mgc3RyaW5nLCB3aXRoIGNvbXByZXNzaW9uIGxldmVsIGluIDEtOS5cbiIKLSJjb21wcmVzc29iaihbbGV2ZWxdKSAtLSBSZXR1cm4gYSBjb21wcmVzc29yIG9iamVjdC5cbiIKKyJjb21wcmVzc29iaihbbGV2ZWxbLCAuLi5dXSkgLS0gUmV0dXJuIGEgY29tcHJlc3NvciBvYmplY3QuXG4iCiAiY3JjMzIoc3RyaW5nWywgc3RhcnRdKSAtLSBDb21wdXRlIGEgQ1JDLTMyIGNoZWNrc3VtLlxuIgogImRlY29tcHJlc3Moc3RyaW5nLFt3Yml0c10sW2J1ZnNpemVdKSAtLSBEZWNvbXByZXNzZXMgYSBjb21wcmVzc2VkIHN0cmluZy5cbiIKLSJkZWNvbXByZXNzb2JqKFt3Yml0c10pIC0tIFJldHVybiBhIGRlY29tcHJlc3NvciBvYmplY3QuXG4iCisiZGVjb21wcmVzc29iaihbd2JpdHNbLCB6ZGljdF1dXSkgLS0gUmV0dXJuIGEgZGVjb21wcmVzc29yIG9iamVjdC5cbiIKICJcbiIKICInd2JpdHMnIGlzIHdpbmRvdyBidWZmZXIgc2l6ZS5cbiIKICJDb21wcmVzc29yIG9iamVjdHMgc3VwcG9ydCBjb21wcmVzcygpIGFuZCBmbHVzaCgpIG1ldGhvZHM7IGRlY29tcHJlc3NvclxuIgpAQCAtMTE2NCw2ICsxMjU2LDEwIEBACiAgICAgaWYgKHZlciAhPSBOVUxMKQogICAgICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlpMSUJfVkVSU0lPTiIsIHZlcik7CiAKKyAgICB2ZXIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyh6bGliVmVyc2lvbigpKTsKKyAgICBpZiAodmVyICE9IE5VTEwpCisgICAgICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWkxJQl9SVU5USU1FX1ZFUlNJT04iLCB2ZXIpOworCiAgICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIl9fdmVyc2lvbl9fIiwgIjEuMCIpOwogCiAgICAgcmV0dXJuIG07CmRpZmYgLS1naXQgYS9PYmplY3RzL2Fic3RyYWN0LmMgYi9PYmplY3RzL2Fic3RyYWN0LmMKaW5kZXggNzcwNWQwNS4uZWQ1ZTE5NiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9hYnN0cmFjdC5jCisrKyBiL09iamVjdHMvYWJzdHJhY3QuYwpAQCAtNzQsNyArNzQsNyBAQAogUHlfc3NpemVfdAogX1B5T2JqZWN0X0xlbmd0aEhpbnQoUHlPYmplY3QgKm8sIFB5X3NzaXplX3QgZGVmYXVsdHZhbHVlKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqaGludHN0cm9iaiA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19sZW5ndGhfaGludF9fKTsKICAgICBQeU9iamVjdCAqcm8sICpoaW50bWV0aDsKICAgICBQeV9zc2l6ZV90IHJ2OwogCkBAIC04OSw3ICs4OSw3IEBACiAgICAgfQogCiAgICAgLyogdHJ5IG8uX19sZW5ndGhfaGludF9fKCkgKi8KLSAgICBoaW50bWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICJfX2xlbmd0aF9oaW50X18iLCAmaGludHN0cm9iaik7CisgICAgaGludG1ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX2xlbmd0aF9oaW50X18pOwogICAgIGlmIChoaW50bWV0aCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjM3LDcgKzIzNyw4IEBACiAgICAgcGIgPSBvYmotPm9iX3R5cGUtPnRwX2FzX2J1ZmZlcjsKICAgICBpZiAocGIgPT0gTlVMTCB8fCBwYi0+YmZfZ2V0YnVmZmVyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBhbiBvYmplY3Qgd2l0aCB0aGUgYnVmZmVyIGludGVyZmFjZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGJ5dGVzLCBieXRlYXJyYXkgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGJ1ZmZlciBjb21wYXRpYmxlIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmICgoKnBiLT5iZl9nZXRidWZmZXIpKG9iaiwgJnZpZXcsIFB5QlVGX1NJTVBMRSkpIHJldHVybiAtMTsKQEAgLTMzMSw3ICszMzIsNyBAQAogewogICAgIGlmICghUHlPYmplY3RfQ2hlY2tCdWZmZXIob2JqKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiclMTAwcycgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYnVmZmVyIGludGVyZmFjZSIsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMTAwcycgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYnVmZmVyIGludGVyZmFjZSIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzM5LDcgKzM0MCw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9Jc0ZvcnRyYW5Db250aWd1b3VzKFB5X2J1ZmZlciAqdmlldykKK19Jc0ZvcnRyYW5Db250aWd1b3VzKGNvbnN0IFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IHNkLCBkaW07CiAgICAgaW50IGk7CkBAIC0zNjAsNyArMzYxLDcgQEAKIH0KIAogc3RhdGljIGludAotX0lzQ0NvbnRpZ3VvdXMoUHlfYnVmZmVyICp2aWV3KQorX0lzQ0NvbnRpZ3VvdXMoY29uc3QgUHlfYnVmZmVyICp2aWV3KQogewogICAgIFB5X3NzaXplX3Qgc2QsIGRpbTsKICAgICBpbnQgaTsKQEAgLTM4MSwxNiArMzgyLDE2IEBACiB9CiAKIGludAotUHlCdWZmZXJfSXNDb250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgY2hhciBmb3J0KQorUHlCdWZmZXJfSXNDb250aWd1b3VzKGNvbnN0IFB5X2J1ZmZlciAqdmlldywgY2hhciBvcmRlcikKIHsKIAogICAgIGlmICh2aWV3LT5zdWJvZmZzZXRzICE9IE5VTEwpIHJldHVybiAwOwogCi0gICAgaWYgKGZvcnQgPT0gJ0MnKQorICAgIGlmIChvcmRlciA9PSAnQycpCiAgICAgICAgIHJldHVybiBfSXNDQ29udGlndW91cyh2aWV3KTsKLSAgICBlbHNlIGlmIChmb3J0ID09ICdGJykKKyAgICBlbHNlIGlmIChvcmRlciA9PSAnRicpCiAgICAgICAgIHJldHVybiBfSXNGb3J0cmFuQ29udGlndW91cyh2aWV3KTsKLSAgICBlbHNlIGlmIChmb3J0ID09ICdBJykKKyAgICBlbHNlIGlmIChvcmRlciA9PSAnQScpCiAgICAgICAgIHJldHVybiAoX0lzQ0NvbnRpZ3VvdXModmlldykgfHwgX0lzRm9ydHJhbkNvbnRpZ3VvdXModmlldykpOwogICAgIHJldHVybiAwOwogfQpAQCAtNDQ0LDYyICs0NDUsNiBAQAogICAgIH0KIH0KIAotICAvKiB2aWV3IGlzIG5vdCBjaGVja2VkIGZvciBjb25zaXN0ZW5jeSBpbiBlaXRoZXIgb2YgdGhlc2UuICBJdCBpcwotICAgICBhc3N1bWVkIHRoYXQgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBpcyB2aWV3LT5sZW4gaW4KLSAgICAgdmlldy0+bGVuIC8gdmlldy0+aXRlbXNpemUgZWxlbWVudHMuCi0gICovCi0KLWludAotUHlCdWZmZXJfVG9Db250aWd1b3VzKHZvaWQgKmJ1ZiwgUHlfYnVmZmVyICp2aWV3LCBQeV9zc2l6ZV90IGxlbiwgY2hhciBmb3J0KQotewotICAgIGludCBrOwotICAgIHZvaWQgKCphZGRvbmUpKGludCwgUHlfc3NpemVfdCAqLCBjb25zdCBQeV9zc2l6ZV90ICopOwotICAgIFB5X3NzaXplX3QgKmluZGljZXMsIGVsZW1lbnRzOwotICAgIGNoYXIgKmRlc3QsICpwdHI7Ci0KLSAgICBpZiAobGVuID4gdmlldy0+bGVuKSB7Ci0gICAgICAgIGxlbiA9IHZpZXctPmxlbjsKLSAgICB9Ci0KLSAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKHZpZXcsIGZvcnQpKSB7Ci0gICAgICAgIC8qIHNpbXBsZXN0IGNvcHkgaXMgYWxsIHRoYXQgaXMgbmVlZGVkICovCi0gICAgICAgIG1lbWNweShidWYsIHZpZXctPmJ1ZiwgbGVuKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLyogT3RoZXJ3aXNlIGEgbW9yZSBlbGFib3JhdGUgc2NoZW1lIGlzIG5lZWRlZCAqLwotCi0gICAgLyogWFhYKG5ub3J3aXR6KTogbmVlZCB0byBjaGVjayBmb3Igb3ZlcmZsb3chICovCi0gICAgaW5kaWNlcyA9IChQeV9zc2l6ZV90ICopUHlNZW1fTWFsbG9jKHNpemVvZihQeV9zc2l6ZV90KSoodmlldy0+bmRpbSkpOwotICAgIGlmIChpbmRpY2VzID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBmb3IgKGs9MDsgazx2aWV3LT5uZGltO2srKykgewotICAgICAgICBpbmRpY2VzW2tdID0gMDsKLSAgICB9Ci0KLSAgICBpZiAoZm9ydCA9PSAnRicpIHsKLSAgICAgICAgYWRkb25lID0gX1B5X2FkZF9vbmVfdG9faW5kZXhfRjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGFkZG9uZSA9IF9QeV9hZGRfb25lX3RvX2luZGV4X0M7Ci0gICAgfQotICAgIGRlc3QgPSBidWY7Ci0gICAgLyogWFhYIDogVGhpcyBpcyBub3QgZ29pbmcgdG8gYmUgdGhlIGZhc3Rlc3QgY29kZSBpbiB0aGUgd29ybGQKLSAgICAgICAgICAgICBzZXZlcmFsIG9wdGltaXphdGlvbnMgYXJlIHBvc3NpYmxlLgotICAgICAqLwotICAgIGVsZW1lbnRzID0gbGVuIC8gdmlldy0+aXRlbXNpemU7Ci0gICAgd2hpbGUgKGVsZW1lbnRzLS0pIHsKLSAgICAgICAgYWRkb25lKHZpZXctPm5kaW0sIGluZGljZXMsIHZpZXctPnNoYXBlKTsKLSAgICAgICAgcHRyID0gUHlCdWZmZXJfR2V0UG9pbnRlcih2aWV3LCBpbmRpY2VzKTsKLSAgICAgICAgbWVtY3B5KGRlc3QsIHB0ciwgdmlldy0+aXRlbXNpemUpOwotICAgICAgICBkZXN0ICs9IHZpZXctPml0ZW1zaXplOwotICAgIH0KLSAgICBQeU1lbV9GcmVlKGluZGljZXMpOwotICAgIHJldHVybiAwOwotfQotCiBpbnQKIFB5QnVmZmVyX0Zyb21Db250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgdm9pZCAqYnVmLCBQeV9zc2l6ZV90IGxlbiwgY2hhciBmb3J0KQogewpAQCAtNjQ4LDkgKzU5Myw5IEBACiAKIGludAogUHlCdWZmZXJfRmlsbEluZm8oUHlfYnVmZmVyICp2aWV3LCBQeU9iamVjdCAqb2JqLCB2b2lkICpidWYsIFB5X3NzaXplX3QgbGVuLAotICAgICAgICAgICAgICBpbnQgcmVhZG9ubHksIGludCBmbGFncykKKyAgICAgICAgICAgICAgICAgIGludCByZWFkb25seSwgaW50IGZsYWdzKQogewotICAgIGlmICh2aWV3ID09IE5VTEwpIHJldHVybiAwOworICAgIGlmICh2aWV3ID09IE5VTEwpIHJldHVybiAwOyAvKiBYWFggd2h5IG5vdCAtMT8gKi8KICAgICBpZiAoKChmbGFncyAmIFB5QlVGX1dSSVRBQkxFKSA9PSBQeUJVRl9XUklUQUJMRSkgJiYKICAgICAgICAgKHJlYWRvbmx5ID09IDEpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKQEAgLTY5NiwxNiArNjQxLDE2IEBACiAgICAgUHlPYmplY3QgKm1ldGg7CiAgICAgUHlPYmplY3QgKmVtcHR5ID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdF9jYWNoZSA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19mb3JtYXRfXyk7CiAKICAgICAvKiBJZiBubyBmb3JtYXRfc3BlYyBpcyBwcm92aWRlZCwgdXNlIGFuIGVtcHR5IHN0cmluZyAqLwogICAgIGlmIChmb3JtYXRfc3BlYyA9PSBOVUxMKSB7Ci0gICAgICAgIGVtcHR5ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOworICAgICAgICBlbXB0eSA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgICAgIGZvcm1hdF9zcGVjID0gZW1wdHk7CiAgICAgfQogCiAgICAgLyogRmluZCB0aGUgKHVuYm91bmQhKSBfX2Zvcm1hdF9fIG1ldGhvZCAoYSBib3Jyb3dlZCByZWZlcmVuY2UpICovCi0gICAgbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgIl9fZm9ybWF0X18iLCAmZm9ybWF0X2NhY2hlKTsKKyAgICBtZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob2JqLCAmUHlJZF9fX2Zvcm1hdF9fKTsKICAgICBpZiAobWV0aCA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC03OTIsOCArNzM3LDcgQEAKICAgICAgICAgICAgIHJldHVybiB4OwogICAgICAgICBQeV9ERUNSRUYoeCk7IC8qIGNhbid0IGRvIGl0ICovCiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyNjgsMzcgKzEyMTIsMzIgQEAKIH0KIAogCi1QeU9iamVjdCAqCi1fUHlOdW1iZXJfQ29udmVydEludGVncmFsVG9JbnQoUHlPYmplY3QgKmludGVncmFsLCBjb25zdCBjaGFyKiBlcnJvcl9mb3JtYXQpCisvKgorICBSZXR1cm5zIHRoZSBJbnRlZ3JhbCBpbnN0YW5jZSBjb252ZXJ0ZWQgdG8gYW4gaW50LiBUaGUgaW5zdGFuY2UgaXMgZXhwZWN0ZWQKKyAgdG8gYmUgYW4gaW50IG9yIGhhdmUgYW4gX19pbnRfXyBtZXRob2QuIFN0ZWFscyBpbnRlZ3JhbCdzCisgIHJlZmVyZW5jZS4gZXJyb3JfZm9ybWF0IHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgdGhlIFR5cGVFcnJvciBpZiBpbnRlZ3JhbAorICBpc24ndCBhY3R1YWxseSBhbiBJbnRlZ3JhbCBpbnN0YW5jZS4gZXJyb3JfZm9ybWF0IHNob3VsZCBiZSBhIGZvcm1hdCBzdHJpbmcKKyAgdGhhdCBjYW4gYWNjZXB0IGEgY2hhciogbmFtaW5nIGludGVncmFsJ3MgdHlwZS4gCisqLworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnZlcnRfaW50ZWdyYWxfdG9faW50KFB5T2JqZWN0ICppbnRlZ3JhbCwgY29uc3QgY2hhciAqZXJyb3JfZm9ybWF0KQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqaW50X25hbWUgPSBOVUxMOwotICAgIGlmIChpbnRfbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgIGludF9uYW1lID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9faW50X18iKTsKLSAgICAgICAgaWYgKGludF9uYW1lID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoaW50ZWdyYWwgJiYgIVB5TG9uZ19DaGVjayhpbnRlZ3JhbCkpIHsKLSAgICAgICAgLyogRG9uJ3QgZ28gdGhyb3VnaCB0cF9hc19udW1iZXItPm5iX2ludCB0byBhdm9pZAotICAgICAgICAgICBoaXR0aW5nIHRoZSBjbGFzc2ljIGNsYXNzIGZhbGxiYWNrIHRvIF9fdHJ1bmNfXy4gKi8KLSAgICAgICAgUHlPYmplY3QgKmludF9mdW5jID0gUHlPYmplY3RfR2V0QXR0cihpbnRlZ3JhbCwgaW50X25hbWUpOwotICAgICAgICBpZiAoaW50X2Z1bmMgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogUmFpc2UgYSBkaWZmZXJlbnQgZXJyb3IuICovCi0gICAgICAgICAgICBnb3RvIG5vbl9pbnRlZ3JhbF9lcnJvcjsKLSAgICAgICAgfQorICAgIFB5TnVtYmVyTWV0aG9kcyAqbmI7CisgICAgaWYgKFB5TG9uZ19DaGVjayhpbnRlZ3JhbCkpCisgICAgICAgIHJldHVybiBpbnRlZ3JhbDsKKyAgICBuYiA9IFB5X1RZUEUoaW50ZWdyYWwpLT50cF9hc19udW1iZXI7CisgICAgaWYgKG5iLT5uYl9pbnQpIHsKKyAgICAgICAgUHlPYmplY3QgKmFzX2ludCA9IG5iLT5uYl9pbnQoaW50ZWdyYWwpOwogICAgICAgICBQeV9ERUNSRUYoaW50ZWdyYWwpOwotICAgICAgICBpbnRlZ3JhbCA9IFB5RXZhbF9DYWxsT2JqZWN0KGludF9mdW5jLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGludF9mdW5jKTsKLSAgICAgICAgaWYgKGludGVncmFsICYmICFQeUxvbmdfQ2hlY2soaW50ZWdyYWwpKSB7Ci0gICAgICAgICAgICBnb3RvIG5vbl9pbnRlZ3JhbF9lcnJvcjsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWFzX2ludCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlMb25nX0NoZWNrKGFzX2ludCkpCisgICAgICAgICAgICByZXR1cm4gYXNfaW50OworICAgICAgICBQeV9ERUNSRUYoYXNfaW50KTsKICAgICB9Ci0gICAgcmV0dXJuIGludGVncmFsOwotCi1ub25faW50ZWdyYWxfZXJyb3I6CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgZXJyb3JfZm9ybWF0LCBQeV9UWVBFKGludGVncmFsKS0+dHBfbmFtZSk7CiAgICAgUHlfREVDUkVGKGludGVncmFsKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gTlVMTDsgICAgCiB9CiAKIApAQCAtMTMyNSwxNiArMTI2NCwxMCBAQAogUHlOdW1iZXJfTG9uZyhQeU9iamVjdCAqbykKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07Ci0gICAgc3RhdGljIFB5T2JqZWN0ICp0cnVuY19uYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCAqdHJ1bmNfZnVuYzsKICAgICBjb25zdCBjaGFyICpidWZmZXI7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfbGVuOwotCi0gICAgaWYgKHRydW5jX25hbWUgPT0gTlVMTCkgewotICAgICAgICB0cnVuY19uYW1lID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fdHJ1bmNfXyIpOwotICAgICAgICBpZiAodHJ1bmNfbmFtZSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIF9QeV9JREVOVElGSUVSKF9fdHJ1bmNfXyk7CiAKICAgICBpZiAobyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOwpAQCAtMTM1NiwzMiArMTI4OSwzMCBAQAogICAgIH0KICAgICBpZiAoUHlMb25nX0NoZWNrKG8pKSAvKiBBbiBpbnQgc3ViY2xhc3Mgd2l0aG91dCBuYl9pbnQgKi8KICAgICAgICAgcmV0dXJuIF9QeUxvbmdfQ29weSgoUHlMb25nT2JqZWN0ICopbyk7Ci0gICAgdHJ1bmNfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHIobywgdHJ1bmNfbmFtZSk7CisgICAgdHJ1bmNfZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICZQeUlkX19fdHJ1bmNfXyk7CiAgICAgaWYgKHRydW5jX2Z1bmMpIHsKICAgICAgICAgUHlPYmplY3QgKnRydW5jYXRlZCA9IFB5RXZhbF9DYWxsT2JqZWN0KHRydW5jX2Z1bmMsIE5VTEwpOwogICAgICAgICBQeU9iamVjdCAqaW50X2luc3RhbmNlOwogICAgICAgICBQeV9ERUNSRUYodHJ1bmNfZnVuYyk7CiAgICAgICAgIC8qIF9fdHJ1bmNfXyBpcyBzcGVjaWZpZWQgdG8gcmV0dXJuIGFuIEludGVncmFsIHR5cGUsCi0gICAgICAgICAgIGJ1dCBsb25nKCkgbmVlZHMgdG8gcmV0dXJuIGEgbG9uZy4gKi8KLSAgICAgICAgaW50X2luc3RhbmNlID0gX1B5TnVtYmVyX0NvbnZlcnRJbnRlZ3JhbFRvSW50KAotICAgICAgICAgICAgdHJ1bmNhdGVkLAorICAgICAgICAgICBidXQgaW50KCkgbmVlZHMgdG8gcmV0dXJuIGEgaW50LiAqLworICAgICAgICBpbnRfaW5zdGFuY2UgPSBjb252ZXJ0X2ludGVncmFsX3RvX2ludCh0cnVuY2F0ZWQsCiAgICAgICAgICAgICAiX190cnVuY19fIHJldHVybmVkIG5vbi1JbnRlZ3JhbCAodHlwZSAlLjIwMHMpIik7CiAgICAgICAgIHJldHVybiBpbnRfaW5zdGFuY2U7CiAgICAgfQotICAgIFB5RXJyX0NsZWFyKCk7ICAvKiBJdCdzIG5vdCBhbiBlcnJvciBpZiAgby5fX3RydW5jX18gZG9lc24ndCBleGlzdC4gKi8KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoUHlCeXRlc19DaGVjayhvKSkKICAgICAgICAgLyogbmVlZCB0byBkbyBleHRyYSBlcnJvciBjaGVja2luZyB0aGF0IFB5TG9uZ19Gcm9tU3RyaW5nKCkKLSAgICAgICAgICogZG9lc24ndCBkby4gIEluIHBhcnRpY3VsYXIgbG9uZygnOS41JykgbXVzdCByYWlzZSBhbgorICAgICAgICAgKiBkb2Vzbid0IGRvLiAgSW4gcGFydGljdWxhciBpbnQoJzkuNScpIG11c3QgcmFpc2UgYW4KICAgICAgICAgICogZXhjZXB0aW9uLCBub3QgdHJ1bmNhdGUgdGhlIGZsb2F0LgogICAgICAgICAgKi8KICAgICAgICAgcmV0dXJuIGxvbmdfZnJvbV9zdHJpbmcoUHlCeXRlc19BU19TVFJJTkcobyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUobykpOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobykpCiAgICAgICAgIC8qIFRoZSBhYm92ZSBjaGVjayBpcyBkb25lIGluIFB5TG9uZ19Gcm9tVW5pY29kZSgpLiAqLwotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKG8pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShvKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuaWNvZGVPYmplY3QobywgMTApOwogICAgIGlmICghUHlPYmplY3RfQXNDaGFyQnVmZmVyKG8sICZidWZmZXIsICZidWZmZXJfbGVuKSkKICAgICAgICAgcmV0dXJuIGxvbmdfZnJvbV9zdHJpbmcoYnVmZmVyLCBidWZmZXJfbGVuKTsKIApAQCAtMTk4Niw3ICsxOTE3LDcgQEAKIGludAogUHlNYXBwaW5nX0NoZWNrKFB5T2JqZWN0ICpvKQogewotICAgIHJldHVybiAgICAgIG8gJiYgby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZyAmJgorICAgIHJldHVybiBvICYmIG8tPm9iX3R5cGUtPnRwX2FzX21hcHBpbmcgJiYKICAgICAgICAgby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZy0+bXBfc3Vic2NyaXB0OwogfQogCkBAIC0yMDg0LDEwICsyMDE1LDExIEBACiB7CiAgICAgUHlPYmplY3QgKmtleXM7CiAgICAgUHlPYmplY3QgKmZhc3Q7CisgICAgX1B5X0lERU5USUZJRVIoa2V5cyk7CiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobykpCiAgICAgICAgIHJldHVybiBQeURpY3RfS2V5cyhvKTsKLSAgICBrZXlzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvLCAia2V5cyIsIE5VTEwpOworICAgIGtleXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG8sICZQeUlkX2tleXMsIE5VTEwpOwogICAgIGlmIChrZXlzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZhc3QgPSBQeVNlcXVlbmNlX0Zhc3Qoa2V5cywgIm8ua2V5cygpIGFyZSBub3QgaXRlcmFibGUiKTsKQEAgLTIxMDAsMTAgKzIwMzIsMTEgQEAKIHsKICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgUHlPYmplY3QgKmZhc3Q7CisgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOwogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG8pKQogICAgICAgICByZXR1cm4gUHlEaWN0X0l0ZW1zKG8pOwotICAgIGl0ZW1zID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvLCAiaXRlbXMiLCBOVUxMKTsKKyAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobywgJlB5SWRfaXRlbXMsIE5VTEwpOwogICAgIGlmIChpdGVtcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGl0ZW1zLCAiby5pdGVtcygpIGFyZSBub3QgaXRlcmFibGUiKTsKQEAgLTIxMTYsMTAgKzIwNDksMTEgQEAKIHsKICAgICBQeU9iamVjdCAqdmFsdWVzOwogICAgIFB5T2JqZWN0ICpmYXN0OworICAgIF9QeV9JREVOVElGSUVSKHZhbHVlcyk7CiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobykpCiAgICAgICAgIHJldHVybiBQeURpY3RfVmFsdWVzKG8pOwotICAgIHZhbHVlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QobywgInZhbHVlcyIsIE5VTEwpOworICAgIHZhbHVlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobywgJlB5SWRfdmFsdWVzLCBOVUxMKTsKICAgICBpZiAodmFsdWVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZhc3QgPSBQeVNlcXVlbmNlX0Zhc3QodmFsdWVzLCAiby52YWx1ZXMoKSBhcmUgbm90IGl0ZXJhYmxlIik7CkBAIC0yMjI1LDIyICsyMTU5LDExIEBACiAgICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CiB9CiAKLVB5T2JqZWN0ICoKLVB5T2JqZWN0X0NhbGxNZXRob2QoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQorc3RhdGljIFB5T2JqZWN0KgorY2FsbG1ldGhvZChQeU9iamVjdCogZnVuYywgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhLCBpbnQgaXNfc2l6ZV90KQogewotICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7Ci0gICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwotCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCi0gICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7Ci0KLSAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvLCBuYW1lKTsKLSAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBQeU9iamVjdCAqYXJnczsKIAogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICB0eXBlX2Vycm9yKCJhdHRyaWJ1dGUgb2YgdHlwZSAnJS4yMDBzJyBpcyBub3QgY2FsbGFibGUiLCBmdW5jKTsKQEAgLTIyNDgsOSArMjE3MSwxMCBAQAogICAgIH0KIAogICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgewotICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKLSAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKKyAgICAgICAgaWYgKGlzX3NpemVfdCkKKyAgICAgICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKQEAgLTIyNjUsNDQgKzIxODksODYgQEAKIH0KIAogUHlPYmplY3QgKgorUHlPYmplY3RfQ2FsbE1ldGhvZChQeU9iamVjdCAqbywgY2hhciAqbmFtZSwgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKworICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOworICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAwKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5T2JqZWN0ICoKK19QeU9iamVjdF9DYWxsTWV0aG9kSWQoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1lLCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IHZhOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDApOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworUHlPYmplY3QgKgogX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXR2YWw7CiAKICAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKIAogICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotCi0gICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZ1bmMpKSB7Ci0gICAgICAgIHR5cGVfZXJyb3IoImF0dHJpYnV0ZSBvZiB0eXBlICclLjIwMHMnIGlzIG5vdCBjYWxsYWJsZSIsIGZ1bmMpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0KLSAgICByZXR2YWwgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoZnVuYywgYXJncyk7Ci0KLSAgZXhpdDoKLSAgICAvKiBhcmdzIGdldHMgY29uc3VtZWQgaW4gY2FsbF9mdW5jdGlvbl90YWlsICovCi0gICAgUHlfWERFQ1JFRihmdW5jKTsKLQorICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMSk7CisgICAgdmFfZW5kKHZhKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCitQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbE1ldGhvZElkX1NpemVUKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZSwgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJldHZhbDsKKworICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvYmphcmdzX21rdHVwbGUodmFfbGlzdCB2YSkKQEAgLTIzNTUsNiArMjMyMSwzNSBAQAogfQogCiBQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhQeU9iamVjdCAqY2FsbGFibGUsCisgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSwgLi4uKQoreworICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIHZhX2xpc3QgdmFyZ3M7CisKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisKKyAgICBjYWxsYWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2FsbGFibGUsIG5hbWUpOworICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGNvdW50IHRoZSBhcmdzICovCisgICAgdmFfc3RhcnQodmFyZ3MsIG5hbWUpOworICAgIGFyZ3MgPSBvYmphcmdzX21rdHVwbGUodmFyZ3MpOworICAgIHZhX2VuZCh2YXJncyk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisKKyAgICByZXR1cm4gdG1wOworfQorCitQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwgLi4uKQogewogICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOwpAQCAtMjM3OCwxMCArMjM3Myw4IEBACiAKIC8qIGlzaW5zdGFuY2UoKSwgaXNzdWJjbGFzcygpICovCiAKLS8qIGFic3RyYWN0X2dldF9iYXNlcygpIGhhcyBsb2dpY2FsbHkgNCByZXR1cm4gc3RhdGVzLCB3aXRoIGEgc29ydCBvZiAwdGgKLSAqIHN0YXRlIHRoYXQgd2lsbCBhbG1vc3QgbmV2ZXIgaGFwcGVuLgorLyogYWJzdHJhY3RfZ2V0X2Jhc2VzKCkgaGFzIGxvZ2ljYWxseSA0IHJldHVybiBzdGF0ZXM6CiAgKgotICogMC4gY3JlYXRpbmcgdGhlIF9fYmFzZXNfXyBzdGF0aWMgc3RyaW5nIGNvdWxkIGdldCBhIE1lbW9yeUVycm9yCiAgKiAxLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJhaXNlIGFuIEF0dHJpYnV0ZUVycm9yCiAgKiAyLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJhaXNlIHNvbWUgb3RoZXIgZXhjZXB0aW9uCiAgKiAzLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJldHVybiBhIHR1cGxlCkBAIC0yNDA3LDE2ICsyNDAwLDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYWJzdHJhY3RfZ2V0X2Jhc2VzKFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpfX2Jhc2VzX18gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fYmFzZXNfXyk7CiAgICAgUHlPYmplY3QgKmJhc2VzOwogCi0gICAgaWYgKF9fYmFzZXNfXyA9PSBOVUxMKSB7Ci0gICAgICAgIF9fYmFzZXNfXyA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2Jhc2VzX18iKTsKLSAgICAgICAgaWYgKF9fYmFzZXNfXyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIFB5X0FMTE9XX1JFQ1VSU0lPTgotICAgIGJhc2VzID0gUHlPYmplY3RfR2V0QXR0cihjbHMsIF9fYmFzZXNfXyk7CisgICAgYmFzZXMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19iYXNlc19fKTsKICAgICBQeV9FTkRfQUxMT1dfUkVDVVJTSU9OCiAgICAgaWYgKGJhc2VzID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQpAQCAtMjQ4NiwxOSArMjQ3NCwxMyBAQAogcmVjdXJzaXZlX2lzaW5zdGFuY2UoUHlPYmplY3QgKmluc3QsIFB5T2JqZWN0ICpjbHMpCiB7CiAgICAgUHlPYmplY3QgKmljbHM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpfX2NsYXNzX18gPSBOVUxMOwogICAgIGludCByZXR2YWwgPSAwOwotCi0gICAgaWYgKF9fY2xhc3NfXyA9PSBOVUxMKSB7Ci0gICAgICAgIF9fY2xhc3NfXyA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKLSAgICAgICAgaWYgKF9fY2xhc3NfXyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOwogCiAgICAgaWYgKFB5VHlwZV9DaGVjayhjbHMpKSB7CiAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X1R5cGVDaGVjayhpbnN0LCAoUHlUeXBlT2JqZWN0ICopY2xzKTsKICAgICAgICAgaWYgKHJldHZhbCA9PSAwKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYyA9IFB5T2JqZWN0X0dldEF0dHIoaW5zdCwgX19jbGFzc19fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICAgICAgaWYgKGMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI1MTksNyArMjUwMSw3IEBACiAgICAgICAgIGlmICghY2hlY2tfY2xhc3MoY2xzLAogICAgICAgICAgICAgImlzaW5zdGFuY2UoKSBhcmcgMiBtdXN0IGJlIGEgdHlwZSBvciB0dXBsZSBvZiB0eXBlcyIpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpY2xzID0gUHlPYmplY3RfR2V0QXR0cihpbnN0LCBfX2NsYXNzX18pOworICAgICAgICBpY2xzID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICBpZiAoaWNscyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI1MzgsNyArMjUyMCw3IEBACiBpbnQKIFB5T2JqZWN0X0lzSW5zdGFuY2UoUHlPYmplY3QgKmluc3QsIFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2luc3RhbmNlY2hlY2tfXyk7CiAgICAgUHlPYmplY3QgKmNoZWNrZXI7CiAKICAgICAvKiBRdWljayB0ZXN0IGZvciBhbiBleGFjdCBtYXRjaCAqLwpAQCAtMjU2NCw3ICsyNTQ2LDcgQEAKICAgICAgICAgcmV0dXJuIHI7CiAgICAgfQogCi0gICAgY2hlY2tlciA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKGNscywgIl9faW5zdGFuY2VjaGVja19fIiwgJm5hbWUpOworICAgIGNoZWNrZXIgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChjbHMsICZQeUlkX19faW5zdGFuY2VjaGVja19fKTsKICAgICBpZiAoY2hlY2tlciAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgICAgIGludCBvayA9IC0xOwpAQCAtMjYwNyw3ICsyNTg5LDcgQEAKIGludAogUHlPYmplY3RfSXNTdWJjbGFzcyhQeU9iamVjdCAqZGVyaXZlZCwgUHlPYmplY3QgKmNscykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm5hbWUgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fc3ViY2xhc3NjaGVja19fKTsKICAgICBQeU9iamVjdCAqY2hlY2tlcjsKIAogICAgIGlmIChQeVR1cGxlX0NoZWNrKGNscykpIHsKQEAgLTI2MjksNyArMjYxMSw3IEBACiAgICAgICAgIHJldHVybiByOwogICAgIH0KIAotICAgIGNoZWNrZXIgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChjbHMsICJfX3N1YmNsYXNzY2hlY2tfXyIsICZuYW1lKTsKKyAgICBjaGVja2VyID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoY2xzLCAmUHlJZF9fX3N1YmNsYXNzY2hlY2tfXyk7CiAgICAgaWYgKGNoZWNrZXIgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwogICAgICAgICBpbnQgb2sgPSAtMTsKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCmluZGV4IDU1YjRkZjYuLjJiYjNhMjkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwpAQCAtMTM5LDcgKzEzOSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBhbGxvYyA9IHNpemUgKyAxOwotICAgICAgICBuZXctPm9iX2J5dGVzID0gUHlNZW1fTWFsbG9jKGFsbG9jKTsKKyAgICAgICAgbmV3LT5vYl9ieXRlcyA9IFB5T2JqZWN0X01hbGxvYyhhbGxvYyk7CiAgICAgICAgIGlmIChuZXctPm9iX2J5dGVzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CkBAIC0yMDksNyArMjA5LDcgQEAKICAgICAgICAgYWxsb2MgPSBzaXplICsgMTsKICAgICB9CiAKLSAgICBzdmFsID0gUHlNZW1fUmVhbGxvYygoKFB5Qnl0ZUFycmF5T2JqZWN0ICopc2VsZiktPm9iX2J5dGVzLCBhbGxvYyk7CisgICAgc3ZhbCA9IFB5T2JqZWN0X1JlYWxsb2MoKChQeUJ5dGVBcnJheU9iamVjdCAqKXNlbGYpLT5vYl9ieXRlcywgYWxsb2MpOwogICAgIGlmIChzdmFsID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNzg5LDcgKzc4OSw3IEBACiAgICAgICAgIHNpemUgPSB2aWV3LmxlbjsKICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBzaXplKSA8IDApIGdvdG8gZmFpbDsKICAgICAgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cyhzZWxmLT5vYl9ieXRlcywgJnZpZXcsIHNpemUsICdDJykgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIGZhaWw6CkBAIC04NTAsODcgKzg1MCw4MiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZXByKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CiAgICAgY29uc3QgY2hhciAqcXVvdGVfcHJlZml4ID0gImJ5dGVhcnJheShiIjsKICAgICBjb25zdCBjaGFyICpxdW90ZV9wb3N0Zml4ID0gIikiOwogICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gUHlfU0laRShzZWxmKTsKLSAgICAvKiAxNCA9PSBzdHJsZW4ocXVvdGVfcHJlZml4KSArIDIgKyBzdHJsZW4ocXVvdGVfcG9zdGZpeCkgKi8KKyAgICAvKiAxNSA9PSBzdHJsZW4ocXVvdGVfcHJlZml4KSArIDIgKyBzdHJsZW4ocXVvdGVfcG9zdGZpeCkgKyAxICovCiAgICAgc2l6ZV90IG5ld3NpemU7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgaWYgKGxlbmd0aCA+IChQWV9TU0laRV9UX01BWCAtIDE0KSAvIDQpIHsKKyAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7CisgICAgcmVnaXN0ZXIgY2hhciBjOworICAgIHJlZ2lzdGVyIGNoYXIgKnA7CisgICAgaW50IHF1b3RlOworICAgIGNoYXIgKnRlc3QsICpzdGFydDsKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICBpZiAobGVuZ3RoID4gKFBZX1NTSVpFX1RfTUFYIC0gMTUpIC8gNCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICJieXRlYXJyYXkgb2JqZWN0IGlzIHRvbyBsYXJnZSB0byBtYWtlIHJlcHIiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG5ld3NpemUgPSAxNCArIDQgKiBsZW5ndGg7Ci0gICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBuZXdzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKSB7CisKKyAgICBuZXdzaXplID0gMTUgKyBsZW5ndGggKiA0OworICAgIGJ1ZmZlciA9IFB5T2JqZWN0X01hbGxvYyhuZXdzaXplKTsKKyAgICBpZiAoYnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgYzsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgaW50IHF1b3RlOwogCi0gICAgICAgIC8qIEZpZ3VyZSBvdXQgd2hpY2ggcXVvdGUgdG8gdXNlOyBzaW5nbGUgaXMgcHJlZmVycmVkICovCi0gICAgICAgIHF1b3RlID0gJ1wnJzsKLSAgICAgICAgewotICAgICAgICAgICAgY2hhciAqdGVzdCwgKnN0YXJ0OwotICAgICAgICAgICAgc3RhcnQgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgICAgICAgICBmb3IgKHRlc3QgPSBzdGFydDsgdGVzdCA8IHN0YXJ0K2xlbmd0aDsgKyt0ZXN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCp0ZXN0ID09ICciJykgewotICAgICAgICAgICAgICAgICAgICBxdW90ZSA9ICdcJyc7IC8qIGJhY2sgdG8gc2luZ2xlICovCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZGVjaWRlZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoKnRlc3QgPT0gJ1wnJykKLSAgICAgICAgICAgICAgICAgICAgcXVvdGUgPSAnIic7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZGVjaWRlZDoKLSAgICAgICAgICAgIDsKKyAgICAvKiBGaWd1cmUgb3V0IHdoaWNoIHF1b3RlIHRvIHVzZTsgc2luZ2xlIGlzIHByZWZlcnJlZCAqLworICAgIHF1b3RlID0gJ1wnJzsKKyAgICBzdGFydCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKKyAgICBmb3IgKHRlc3QgPSBzdGFydDsgdGVzdCA8IHN0YXJ0K2xlbmd0aDsgKyt0ZXN0KSB7CisgICAgICAgIGlmICgqdGVzdCA9PSAnIicpIHsKKyAgICAgICAgICAgIHF1b3RlID0gJ1wnJzsgLyogYmFjayB0byBzaW5nbGUgKi8KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KLSAgICAgICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgICAgICB3aGlsZSAoKnF1b3RlX3ByZWZpeCkKLSAgICAgICAgICAgICpwKysgPSAqcXVvdGVfcHJlZml4Kys7Ci0gICAgICAgICpwKysgPSBxdW90ZTsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIC8qIFRoZXJlJ3MgYXQgbGVhc3QgZW5vdWdoIHJvb20gZm9yIGEgaGV4IGVzY2FwZQotICAgICAgICAgICAgICAgYW5kIGEgY2xvc2luZyBxdW90ZS4gKi8KLSAgICAgICAgICAgIGFzc2VydChuZXdzaXplIC0gKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPj0gNSk7Ci0gICAgICAgICAgICBjID0gc2VsZi0+b2JfYnl0ZXNbaV07Ci0gICAgICAgICAgICBpZiAoYyA9PSAnXCcnIHx8IGMgPT0gJ1xcJykKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9IGM7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcdCcpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAndCc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcbicpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAnbic7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdccicpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAncic7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09IDApCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAneCcsICpwKysgPSAnMCcsICpwKysgPSAnMCc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjIDwgJyAnIHx8IGMgPj0gMHg3ZikgewotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soYyAmIDB4ZjApID4+IDRdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbYyAmIDB4Zl07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKnArKyA9IGM7Ci0gICAgICAgIH0KLSAgICAgICAgYXNzZXJ0KG5ld3NpemUgLSAocCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA+PSAxKTsKLSAgICAgICAgKnArKyA9IHF1b3RlOwotICAgICAgICB3aGlsZSAoKnF1b3RlX3Bvc3RmaXgpIHsKLSAgICAgICAgICAgKnArKyA9ICpxdW90ZV9wb3N0Zml4Kys7Ci0gICAgICAgIH0KLSAgICAgICAgKnAgPSAnXDAnOwotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmdiwgKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgZWxzZSBpZiAoKnRlc3QgPT0gJ1wnJykKKyAgICAgICAgICAgIHF1b3RlID0gJyInOwogICAgIH0KKworICAgIHAgPSBidWZmZXI7CisgICAgd2hpbGUgKCpxdW90ZV9wcmVmaXgpCisgICAgICAgICpwKysgPSAqcXVvdGVfcHJlZml4Kys7CisgICAgKnArKyA9IHF1b3RlOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIC8qIFRoZXJlJ3MgYXQgbGVhc3QgZW5vdWdoIHJvb20gZm9yIGEgaGV4IGVzY2FwZQorICAgICAgICAgICBhbmQgYSBjbG9zaW5nIHF1b3RlLiAqLworICAgICAgICBhc3NlcnQobmV3c2l6ZSAtIChwIC0gYnVmZmVyKSA+PSA1KTsKKyAgICAgICAgYyA9IHNlbGYtPm9iX2J5dGVzW2ldOworICAgICAgICBpZiAoYyA9PSAnXCcnIHx8IGMgPT0gJ1xcJykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gYzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHQnKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAndCc7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xuJykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ24nOworICAgICAgICBlbHNlIGlmIChjID09ICdccicpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICdyJzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAwKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAneCcsICpwKysgPSAnMCcsICpwKysgPSAnMCc7CisgICAgICAgIGVsc2UgaWYgKGMgPCAnICcgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICpwKysgPSAneCc7CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjICYgMHhmMCkgPj4gNF07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2MgJiAweGZdOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpwKysgPSBjOworICAgIH0KKyAgICBhc3NlcnQobmV3c2l6ZSAtIChwIC0gYnVmZmVyKSA+PSAxKTsKKyAgICAqcCsrID0gcXVvdGU7CisgICAgd2hpbGUgKCpxdW90ZV9wb3N0Zml4KSB7CisgICAgICAgKnArKyA9ICpxdW90ZV9wb3N0Zml4Kys7CisgICAgfQorCisgICAgdiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShidWZmZXIsIHAgLSBidWZmZXIsIE5VTEwpOworICAgIFB5T2JqZWN0X0ZyZWUoYnVmZmVyKTsKKyAgICByZXR1cm4gdjsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTk2NCwyMyArOTU5LDIwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICBzZWxmX3NpemUgPSBfZ2V0YnVmZmVyKHNlbGYsICZzZWxmX2J5dGVzKTsKICAgICBpZiAoc2VsZl9zaXplIDwgMCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICBvdGhlcl9zaXplID0gX2dldGJ1ZmZlcihvdGhlciwgJm90aGVyX2J5dGVzKTsKICAgICBpZiAob3RoZXJfc2l6ZSA8IDApIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VsZl9ieXRlcyk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIGlmIChzZWxmX3NpemUgIT0gb3RoZXJfc2l6ZSAmJiAob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpKSB7CkBAIC0xMDI4LDcgKzEwMjAsNyBAQAogICAgICAgICBQeUVycl9QcmludCgpOwogICAgIH0KICAgICBpZiAoc2VsZi0+b2JfYnl0ZXMgIT0gMCkgewotICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPm9iX2J5dGVzKTsKKyAgICAgICAgUHlPYmplY3RfRnJlZShzZWxmLT5vYl9ieXRlcyk7CiAgICAgfQogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CkBAIC0xMDM3LDYgKzEwMjksOCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIE1ldGhvZHMgKi8KIAorI2RlZmluZSBGQVNUU0VBUkNIIGZhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpIHN0cmluZ2xpYl8jI0YKICNkZWZpbmUgU1RSSU5HTElCX0NIQVIgY2hhcgogI2RlZmluZSBTVFJJTkdMSUJfTEVOIFB5Qnl0ZUFycmF5X0dFVF9TSVpFCiAjZGVmaW5lIFNUUklOR0xJQl9TVFIgUHlCeXRlQXJyYXlfQVNfU1RSSU5HCkBAIC0xMDc3LDI0ICsxMDcxLDQxIEBACiBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCiB7CiAgICAgUHlPYmplY3QgKnN1Ym9iajsKKyAgICBjaGFyIGJ5dGU7CiAgICAgUHlfYnVmZmVyIHN1YmJ1ZjsKKyAgICBjb25zdCBjaGFyICpzdWI7CisgICAgUHlfc3NpemVfdCBzdWJfbGVuOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOwogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiAtMjsKLSAgICBpZiAoX2dldGJ1ZmZlcihzdWJvYmosICZzdWJidWYpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0yOworCisgICAgaWYgKHN1Ym9iaikgeworICAgICAgICBpZiAoX2dldGJ1ZmZlcihzdWJvYmosICZzdWJidWYpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMjsKKworICAgICAgICBzdWIgPSBzdWJidWYuYnVmOworICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN1YiA9ICZieXRlOworICAgICAgICBzdWJfbGVuID0gMTsKKyAgICB9CisKICAgICBpZiAoZGlyID4gMCkKICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCiAgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLAotICAgICAgICAgICAgc3ViYnVmLmJ1Ziwgc3ViYnVmLmxlbiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwogICAgIGVsc2UKICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAogICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgICAgIHN1YmJ1Zi5idWYsIHN1YmJ1Zi5sZW4sIHN0YXJ0LCBlbmQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7CisgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworCisgICAgaWYgKHN1Ym9iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKKwogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTExMjcsMjYgKzExMzgsNjYgQEAKIGJ5dGVhcnJheV9jb3VudChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnN1Yl9vYmo7Ci0gICAgY29uc3QgY2hhciAqc3RyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOworICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgY2hhciBieXRlOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKKwogICAgIFB5X2J1ZmZlciB2c3ViOwogICAgIFB5T2JqZWN0ICpjb3VudF9vYmo7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJjb3VudCIsIGFyZ3MsICZzdWJfb2JqLCAmc3RhcnQsICZlbmQpKQorICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKF9nZXRidWZmZXIoc3ViX29iaiwgJnZzdWIpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHN1Yl9vYmopIHsKKyAgICAgICAgaWYgKF9nZXRidWZmZXIoc3ViX29iaiwgJnZzdWIpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHN1YiA9IHZzdWIuYnVmOworICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQogCiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwogCiAgICAgY291bnRfb2JqID0gUHlMb25nX0Zyb21Tc2l6ZV90KAotICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCB2c3ViLmJ1ZiwgdnN1Yi5sZW4sIFBZX1NTSVpFX1RfTUFYKQorICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIFBZX1NTSVpFX1RfTUFYKQogICAgICAgICApOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOworCisgICAgaWYgKHN1Yl9vYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOworCiAgICAgcmV0dXJuIGNvdW50X29iajsKIH0KIAorUHlEb2NfU1RSVkFSKGNsZWFyX19kb2NfXywKKyJCLmNsZWFyKCkgLT4gTm9uZVxuXAorXG5cCitSZW1vdmUgYWxsIGl0ZW1zIGZyb20gQi4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jbGVhcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIDApIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihjb3B5X19kb2NfXywKKyJCLmNvcHkoKSAtPiBieXRlYXJyYXlcblwKK1xuXAorUmV0dXJuIGEgY29weSBvZiBCLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2NvcHkoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZUFycmF5X0FTX1NUUklORygoUHlPYmplY3QgKilzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOworfQogCiBQeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAogIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCkBAIC0xOTg4LDcgKzIwMzksNyBAQAogfQogCiBQeURvY19TVFJWQVIoc3BsaXRfX2RvY19fLAotIkIuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pIC0+IGxpc3Qgb2YgYnl0ZWFycmF5c1xuXAorIkIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG5cCiBJZiBzZXAgaXMgbm90IGdpdmVuLCBCIGlzIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuXApAQCAtMTk5NiwxNSArMjA0NywxNyBAQAogSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXQgc3BsaXRzIGFyZSBkb25lLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9zcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgbjsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKICAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CiAgICAgUHlfYnVmZmVyIHZzdWI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPbjpzcGxpdCIsICZzdWJvYmosICZtYXhzcGxpdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwpAQCAtMjA4MCw3ICsyMTMzLDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0iQi5yc3BsaXQoc2VwWywgbWF4c3BsaXRdKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKKyJCLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2YgYnl0ZWFycmF5c1xuXAogXG5cCiBSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiBCLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlcixcblwKIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgQiBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuXG5cCkBAIC0yMDg5LDE1ICsyMTQyLDE3IEBACiBJZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdCBzcGxpdHMgYXJlIGRvbmUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOwogICAgIFB5X2J1ZmZlciB2c3ViOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8T246cnNwbGl0IiwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnJzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwpAQCAtMjQ0OCw3ICsyNTAzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcnN0cmlwKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IGxlZnQsIHJpZ2h0LCBteXNpemUsIGFyZ3NpemU7CisgICAgUHlfc3NpemVfdCByaWdodCwgbXlzaXplLCBhcmdzaXplOwogICAgIHZvaWQgKm15cHRyLCAqYXJncHRyOwogICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogICAgIFB5X2J1ZmZlciB2YXJnOwpAQCAtMjQ2NiwxMSArMjUyMSwxMCBAQAogICAgIH0KICAgICBteXB0ciA9IHNlbGYtPm9iX2J5dGVzOwogICAgIG15c2l6ZSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgbGVmdCA9IDA7CiAgICAgcmlnaHQgPSByc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGFyZ3B0ciwgYXJnc2l6ZSk7CiAgICAgaWYgKGFyZyAhPSBQeV9Ob25lKQogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKLSAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+b2JfYnl0ZXMgKyBsZWZ0LCByaWdodCAtIGxlZnQpOworICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5vYl9ieXRlcywgcmlnaHQpOwogfQogCiBQeURvY19TVFJWQVIoZGVjb2RlX2RvYywKQEAgLTI1OTIsMTEgKzI2NDYsMTMgQEAKIGlzIGdpdmVuIGFuZCB0cnVlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi1ieXRlYXJyYXlfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgJmtlZXBlbmRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKQEAgLTI2MTMsNyArMjY2OSw3IEBACiBFeGFtcGxlOiBieXRlYXJyYXkuZnJvbWhleCgnQjkgMDFFRicpIC0+IGJ5dGVhcnJheShiJ1xceGI5XFx4MDFcXHhlZicpLiIpOwogCiBzdGF0aWMgaW50Ci1oZXhfZGlnaXRfdG9faW50KFB5X1VOSUNPREUgYykKK2hleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQogewogICAgIGlmIChjID49IDEyOCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjYzMywxNSArMjY4OSwyMCBAQAogewogICAgIFB5T2JqZWN0ICpuZXdieXRlcywgKmhleG9iajsKICAgICBjaGFyICpidWY7Ci0gICAgUHlfVU5JQ09ERSAqaGV4OwogICAgIFB5X3NzaXplX3QgaGV4bGVuLCBieXRlc2xlbiwgaSwgajsKICAgICBpbnQgdG9wLCBib3Q7CisgICAgdm9pZCAqZGF0YTsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpmcm9taGV4IiwgJmhleG9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soaGV4b2JqKSk7Ci0gICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGhleG9iaik7Ci0gICAgaGV4ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaGV4b2JqKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGhleG9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChoZXhvYmopOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShoZXhvYmopOworICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGhleG9iaik7CisKICAgICBieXRlc2xlbiA9IGhleGxlbi8yOyAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLwogICAgIG5ld2J5dGVzID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNsZW4pOwogICAgIGlmICghbmV3Ynl0ZXMpCkBAIC0yNjQ5LDEyICsyNzEwLDEyIEBACiAgICAgYnVmID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKG5ld2J5dGVzKTsKICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IGhleGxlbjsgaSArPSAyKSB7CiAgICAgICAgIC8qIHNraXAgb3ZlciBzcGFjZXMgaW4gdGhlIGlucHV0ICovCi0gICAgICAgIHdoaWxlIChoZXhbaV0gPT0gJyAnKQorICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gJyAnKQogICAgICAgICAgICAgaSsrOwogICAgICAgICBpZiAoaSA+PSBoZXhsZW4pCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChoZXhbaV0pOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KGhleFtpKzFdKTsKKyAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CisgICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSk7CiAgICAgICAgIGlmICh0b3AgPT0gLTEgfHwgYm90ID09IC0xKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCkBAIC0yNjcyLDI2ICsyNzMzLDU5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yZWR1Y2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCitfY29tbW9uX3JlZHVjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKQogewotICAgIFB5T2JqZWN0ICpsYXRpbjEsICpkaWN0OwotICAgIGlmIChzZWxmLT5vYl9ieXRlcykKLSAgICAgICAgbGF0aW4xID0gUHlVbmljb2RlX0RlY29kZUxhdGluMShzZWxmLT5vYl9ieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TSVpFKHNlbGYpLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIGxhdGluMSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKLSAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKilzZWxmLCAiX19kaWN0X18iKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBkaWN0ID0gUHlfTm9uZTsKICAgICAgICAgUHlfSU5DUkVGKGRpY3QpOwogICAgIH0KIAotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTyhOcylOKSIsIFB5X1RZUEUoc2VsZiksIGxhdGluMSwgImxhdGluLTEiLCBkaWN0KTsKKyAgICBpZiAocHJvdG8gPCAzKSB7CisgICAgICAgIC8qIHVzZSBzdHIgYmFzZWQgcmVkdWN0aW9uIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAyLnggKi8KKyAgICAgICAgUHlPYmplY3QgKmxhdGluMTsKKyAgICAgICAgaWYgKHNlbGYtPm9iX2J5dGVzKQorICAgICAgICAgICAgbGF0aW4xID0gUHlVbmljb2RlX0RlY29kZUxhdGluMShzZWxmLT5vYl9ieXRlcywgUHlfU0laRShzZWxmKSwgTlVMTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxhdGluMSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPKE5zKU4pIiwgUHlfVFlQRShzZWxmKSwgbGF0aW4xLCAibGF0aW4tMSIsIGRpY3QpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogdXNlIG1vcmUgZWZmaWNpZW50IGJ5dGUgYmFzZWQgcmVkdWN0aW9uICovCisgICAgICAgIGlmIChzZWxmLT5vYl9ieXRlcykgeworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPKHkjKU4pIiwgUHlfVFlQRShzZWxmKSwgc2VsZi0+b2JfYnl0ZXMsIFB5X1NJWkUoc2VsZiksIGRpY3QpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPKClOKSIsIFB5X1RZUEUoc2VsZiksIGRpY3QpOworICAgICAgICB9CisgICAgfQorfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVkdWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBfY29tbW9uX3JlZHVjZShzZWxmLCAyKTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9leF9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlZHVjZV9leChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHByb3RvID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsICZwcm90bykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIF9jb21tb25fcmVkdWNlKHNlbGYsIHByb3RvKTsKIH0KIAogUHlEb2NfU1RSVkFSKHNpemVvZl9kb2MsCkBAIC0yNzM1LDExICsyODI5LDE0IEBACiBieXRlYXJyYXlfbWV0aG9kc1tdID0gewogICAgIHsiX19hbGxvY19fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9hbGxvYywgTUVUSF9OT0FSR1MsIGFsbG9jX2RvY30sCiAgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fcmVkdWNlX2V4X18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlZHVjZV9leCwgTUVUSF9WQVJBUkdTLCByZWR1Y2VfZXhfZG9jfSwKICAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NpemVvZiwgTUVUSF9OT0FSR1MsIHNpemVvZl9kb2N9LAogICAgIHsiYXBwZW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9hcHBlbmQsIE1FVEhfTywgYXBwZW5kX19kb2NfX30sCiAgICAgeyJjYXBpdGFsaXplIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jYXBpdGFsaXplLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2NhcGl0YWxpemVfX2RvY19ffSwKICAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIGNlbnRlcl9fZG9jX199LAorICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NsZWFyLCBNRVRIX05PQVJHUywgY2xlYXJfX2RvY19ffSwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvcHksIE1FVEhfTk9BUkdTLCBjb3B5X19kb2NfX30sCiAgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY291bnQsIE1FVEhfVkFSQVJHUywgY291bnRfX2RvY19ffSwKICAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZGVjb2RlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBkZWNvZGVfZG9jfSwKICAgICB7ImVuZHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLCBlbmRzd2l0aF9fZG9jX199LApAQCAtMjc4MCwxMSArMjg3NywxMSBAQAogICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yaW5kZXgsIE1FVEhfVkFSQVJHUywgcmluZGV4X19kb2NfX30sCiAgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKICAgICB7InJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JwYXJ0aXRpb24sIE1FVEhfTywgcnBhcnRpdGlvbl9fZG9jX199LAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3BsaXQsIE1FVEhfVkFSQVJHUywgcnNwbGl0X19kb2NfX30sCisgICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcnNwbGl0X19kb2NfX30sCiAgICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzdHJpcCwgTUVUSF9WQVJBUkdTLCByc3RyaXBfX2RvY19ffSwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdCwgTUVUSF9WQVJBUkdTLCBzcGxpdF9fZG9jX199LAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTLAotICAgICBzcGxpdGxpbmVzX19kb2NfX30sCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdGxpbmVzLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdGxpbmVzX19kb2NfX30sCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MgLAogICAgICBzdGFydHN3aXRoX19kb2NfX30sCiAgICAgeyJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3RyaXAsIE1FVEhfVkFSQVJHUywgc3RyaXBfX2RvY19ffSwKQEAgLTI5MDYsNyArMzAwMyw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2FycmF5aXRlcl9sZW5ndGhfaGludChieXRlc2l0ZXJvYmplY3QgKml0KQorYnl0ZWFycmF5aXRlcl9sZW5ndGhfaGludChieXRlc2l0ZXJvYmplY3QgKml0KQogewogICAgIFB5X3NzaXplX3QgbGVuID0gMDsKICAgICBpZiAoaXQtPml0X3NlcSkKQEAgLTI5MTcsOSArMzAxNCw0MSBAQAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywKICAgICAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlpdGVyX3JlZHVjZShieXRlc2l0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHUpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheWl0ZXJfc2V0c3RhdGUoYnl0ZXNpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgYnl0ZWFycmF5aXRlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pYnl0ZXNhcnJheWl0ZXJfbGVuZ3RoX2hpbnQsIE1FVEhfTk9BUkdTLAorICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheWl0ZXJfbGVuZ3RoX2hpbnQsIE1FVEhfTk9BUkdTLAogICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilieXRlYXJyYXlpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKaW5kZXggNzIzM2NlYS4uZWYzYzJmNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKKysrIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKQEAgLTI0OCwxMiArMjQ4LDggQEAKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICBQeV9NRU1DUFkocmVzdWx0LCBjcHRyLCBsZW4pOwotCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIGludCBjID0gUHlfQ0hBUk1BU0socmVzdWx0W2ldKTsKLSAgICAgICAgaWYgKFB5X0lTVVBQRVIoYykpCi0gICAgICAgICAgICByZXN1bHRbaV0gPSBQeV9UT0xPV0VSKGMpOworICAgICAgICByZXN1bHRbaV0gPSBQeV9UT0xPV0VSKCh1bnNpZ25lZCBjaGFyKSBjcHRyW2ldKTsKICAgICB9CiB9CiAKQEAgLTI2OCwxMiArMjY0LDggQEAKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICBQeV9NRU1DUFkocmVzdWx0LCBjcHRyLCBsZW4pOwotCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIGludCBjID0gUHlfQ0hBUk1BU0socmVzdWx0W2ldKTsKLSAgICAgICAgaWYgKFB5X0lTTE9XRVIoYykpCi0gICAgICAgICAgICByZXN1bHRbaV0gPSBQeV9UT1VQUEVSKGMpOworICAgICAgICByZXN1bHRbaV0gPSBQeV9UT1VQUEVSKCh1bnNpZ25lZCBjaGFyKSBjcHRyW2ldKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNvYmplY3QuYyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwppbmRleCA3OTZlNDAwLi5iZjkyNTlmIDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlc29iamVjdC5jCkBAIC00MSwxMCArNDEsNiBAQAogI2RlZmluZSBQeUJ5dGVzT2JqZWN0X1NJWkUgKG9mZnNldG9mKFB5Qnl0ZXNPYmplY3QsIG9iX3N2YWwpICsgMSkKIAogLyoKLSAgIEZvciBib3RoIFB5Qnl0ZXNfRnJvbVN0cmluZygpIGFuZCBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCksIHRoZQotICAgcGFyYW1ldGVyIGBzaXplJyBkZW5vdGVzIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGFsbG9jYXRlLCBub3QgY291bnRpbmcgYW55Ci0gICBudWxsIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KLQogICAgRm9yIFB5Qnl0ZXNfRnJvbVN0cmluZygpLCB0aGUgcGFyYW1ldGVyIGBzdHInIHBvaW50cyB0byBhIG51bGwtdGVybWluYXRlZAogICAgc3RyaW5nIGNvbnRhaW5pbmcgZXhhY3RseSBgc2l6ZScgYnl0ZXMuCiAKQEAgLTYxLDggKzU3LDggQEAKIAogICAgVGhlIFB5T2JqZWN0IG1lbWJlciBgb3AtPm9iX3NpemUnLCB3aGljaCBkZW5vdGVzIHRoZSBudW1iZXIgb2YgImV4dHJhCiAgICBpdGVtcyIgaW4gYSB2YXJpYWJsZS1zaXplIG9iamVjdCwgd2lsbCBjb250YWluIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgIGFsbG9jYXRlZCBmb3Igc3RyaW5nIGRhdGEsIG5vdCBjb3VudGluZyB0aGUgbnVsbCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuICBJdAotICAgaXMgdGhlcmVmb3JlIGVxdWFsIHRvIHRoZSBlcXVhbCB0byB0aGUgYHNpemUnIHBhcmFtZXRlciAoZm9yCisgICBhbGxvY2F0ZWQgZm9yIHN0cmluZyBkYXRhLCBub3QgY291bnRpbmcgdGhlIG51bGwgdGVybWluYXRpbmcgY2hhcmFjdGVyLgorICAgSXQgaXMgdGhlcmVmb3JlIGVxdWFsIHRvIHRoZSBgc2l6ZScgcGFyYW1ldGVyIChmb3IKICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKSkgb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIHRoZSBgc3RyJwogICAgcGFyYW1ldGVyIChmb3IgUHlCeXRlc19Gcm9tU3RyaW5nKCkpLgogKi8KQEAgLTU2OCw3NiArNTY0LDcwIEBACiBQeU9iamVjdCAqCiBQeUJ5dGVzX1JlcHIoUHlPYmplY3QgKm9iaiwgaW50IHNtYXJ0cXVvdGVzKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CiAgICAgcmVnaXN0ZXIgUHlCeXRlc09iamVjdCogb3AgPSAoUHlCeXRlc09iamVjdCopIG9iajsKLSAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IFB5X1NJWkUob3ApOwotICAgIHNpemVfdCBuZXdzaXplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoID0gUHlfU0laRShvcCk7CisgICAgc2l6ZV90IG5ld3NpemUsIHNxdW90ZXMsIGRxdW90ZXM7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgaWYgKGxlbmd0aCA+IChQWV9TU0laRV9UX01BWCAtIDMpIC8gNCkgeworICAgIHVuc2lnbmVkIGNoYXIgcXVvdGUsICpzLCAqcDsKKworICAgIC8qIENvbXB1dGUgc2l6ZSBvZiBvdXRwdXQgc3RyaW5nICovCisgICAgc3F1b3RlcyA9IGRxdW90ZXMgPSAwOworICAgIG5ld3NpemUgPSAzOyAvKiBiJycgKi8KKyAgICBzID0gKHVuc2lnbmVkIGNoYXIqKW9wLT5vYl9zdmFsOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBzd2l0Y2goc1tpXSkgeworICAgICAgICBjYXNlICdcJyc6IHNxdW90ZXMrKzsgbmV3c2l6ZSsrOyBicmVhazsKKyAgICAgICAgY2FzZSAnIic6ICBkcXVvdGVzKys7IG5ld3NpemUrKzsgYnJlYWs7CisgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnXHQnOiBjYXNlICdcbic6IGNhc2UgJ1xyJzoKKyAgICAgICAgICAgIG5ld3NpemUgKz0gMjsgYnJlYWs7IC8qIFxDICovCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoc1tpXSA8ICcgJyB8fCBzW2ldID49IDB4N2YpCisgICAgICAgICAgICAgICAgbmV3c2l6ZSArPSA0OyAvKiBceEhIICovCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3c2l6ZSsrOworICAgICAgICB9CisgICAgfQorICAgIHF1b3RlID0gJ1wnJzsKKyAgICBpZiAoc21hcnRxdW90ZXMgJiYgc3F1b3RlcyAmJiAhZHF1b3RlcykKKyAgICAgICAgcXVvdGUgPSAnIic7CisgICAgaWYgKHNxdW90ZXMgJiYgcXVvdGUgPT0gJ1wnJykKKyAgICAgICAgbmV3c2l6ZSArPSBzcXVvdGVzOworCisgICAgaWYgKG5ld3NpemUgPiAoUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlVbmljb2RlT2JqZWN0KSAtIDEpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgImJ5dGVzIG9iamVjdCBpcyB0b28gbGFyZ2UgdG8gbWFrZSByZXByIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBuZXdzaXplID0gMyArIDQgKiBsZW5ndGg7Ci0gICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBuZXdzaXplKTsKKworICAgIHYgPSBQeVVuaWNvZGVfTmV3KG5ld3NpemUsIDEyNyk7CiAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSBjOwotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7Ci0gICAgICAgIGludCBxdW90ZTsKKyAgICBwID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodik7CiAKLSAgICAgICAgLyogRmlndXJlIG91dCB3aGljaCBxdW90ZSB0byB1c2U7IHNpbmdsZSBpcyBwcmVmZXJyZWQgKi8KLSAgICAgICAgcXVvdGUgPSAnXCcnOwotICAgICAgICBpZiAoc21hcnRxdW90ZXMpIHsKLSAgICAgICAgICAgIGNoYXIgKnRlc3QsICpzdGFydDsKLSAgICAgICAgICAgIHN0YXJ0ID0gUHlCeXRlc19BU19TVFJJTkcob3ApOwotICAgICAgICAgICAgZm9yICh0ZXN0ID0gc3RhcnQ7IHRlc3QgPCBzdGFydCtsZW5ndGg7ICsrdGVzdCkgewotICAgICAgICAgICAgICAgIGlmICgqdGVzdCA9PSAnIicpIHsKLSAgICAgICAgICAgICAgICAgICAgcXVvdGUgPSAnXCcnOyAvKiBiYWNrIHRvIHNpbmdsZSAqLwotICAgICAgICAgICAgICAgICAgICBnb3RvIGRlY2lkZWQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCp0ZXN0ID09ICdcJycpCi0gICAgICAgICAgICAgICAgICAgIHF1b3RlID0gJyInOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVjaWRlZDoKLSAgICAgICAgICAgIDsKKyAgICAqcCsrID0gJ2InLCAqcCsrID0gcXVvdGU7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IG9wLT5vYl9zdmFsW2ldOworICAgICAgICBpZiAoYyA9PSBxdW90ZSB8fCBjID09ICdcXCcpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9IGM7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1x0JykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3QnOworICAgICAgICBlbHNlIGlmIChjID09ICdcbicpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICduJzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHInKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAncic7CisgICAgICAgIGVsc2UgaWYgKGMgPCAnICcgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICpwKysgPSAneCc7CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjICYgMHhmMCkgPj4gNF07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2MgJiAweGZdOwogICAgICAgICB9Ci0KLSAgICAgICAgKnArKyA9ICdiJywgKnArKyA9IHF1b3RlOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIC8qIFRoZXJlJ3MgYXQgbGVhc3QgZW5vdWdoIHJvb20gZm9yIGEgaGV4IGVzY2FwZQotICAgICAgICAgICAgICAgYW5kIGEgY2xvc2luZyBxdW90ZS4gKi8KLSAgICAgICAgICAgIGFzc2VydChuZXdzaXplIC0gKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPj0gNSk7Ci0gICAgICAgICAgICBjID0gb3AtPm9iX3N2YWxbaV07Ci0gICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSB8fCBjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSBjOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHQnKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3QnOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXG4nKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ24nOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHInKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3InOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA8ICcgJyB8fCBjID49IDB4N2YpIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGMgJiAweGYwKSA+PiA0XTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2MgJiAweGZdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICpwKysgPSBjOwotICAgICAgICB9Ci0gICAgICAgIGFzc2VydChuZXdzaXplIC0gKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPj0gMSk7Ci0gICAgICAgICpwKysgPSBxdW90ZTsKLSAgICAgICAgKnAgPSAnXDAnOwotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmdiwgKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnArKyA9IGM7CiAgICAgfQorICAgICpwKysgPSBxdW90ZTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKKyAgICByZXR1cm4gdjsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg3MSwzNSArODYxLDExIEBACiBzdGF0aWMgUHlfaGFzaF90CiBieXRlc19oYXNoKFB5Qnl0ZXNPYmplY3QgKmEpCiB7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBsZW47Ci0gICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqcDsKLSAgICByZWdpc3RlciBQeV9oYXNoX3QgeDsKLQotI2lmZGVmIFB5X0RFQlVHCi0gICAgYXNzZXJ0KF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKTsKLSNlbmRpZgotICAgIGlmIChhLT5vYl9zaGFzaCAhPSAtMSkKLSAgICAgICAgcmV0dXJuIGEtPm9iX3NoYXNoOwotICAgIGxlbiA9IFB5X1NJWkUoYSk7Ci0gICAgLyoKLSAgICAgIFdlIG1ha2UgdGhlIGhhc2ggb2YgdGhlIGVtcHR5IHN0cmluZyBiZSAwLCByYXRoZXIgdGhhbiB1c2luZwotICAgICAgKHByZWZpeCBeIHN1ZmZpeCksIHNpbmNlIHRoaXMgc2xpZ2h0bHkgb2JmdXNjYXRlcyB0aGUgaGFzaCBzZWNyZXQKLSAgICAqLwotICAgIGlmIChsZW4gPT0gMCkgewotICAgICAgICBhLT5vYl9zaGFzaCA9IDA7Ci0gICAgICAgIHJldHVybiAwOworICAgIGlmIChhLT5vYl9zaGFzaCA9PSAtMSkgeworICAgICAgICAvKiBDYW4ndCBmYWlsICovCisgICAgICAgIGEtPm9iX3NoYXNoID0gX1B5X0hhc2hCeXRlcygodW5zaWduZWQgY2hhciAqKSBhLT5vYl9zdmFsLCBQeV9TSVpFKGEpKTsKICAgICB9Ci0gICAgcCA9ICh1bnNpZ25lZCBjaGFyICopIGEtPm9iX3N2YWw7Ci0gICAgeCA9IF9QeV9IYXNoU2VjcmV0LnByZWZpeDsKLSAgICB4IF49ICpwIDw8IDc7Ci0gICAgd2hpbGUgKC0tbGVuID49IDApCi0gICAgICAgIHggPSAoX1B5SEFTSF9NVUxUSVBMSUVSKngpIF4gKnArKzsKLSAgICB4IF49IFB5X1NJWkUoYSk7Ci0gICAgeCBePSBfUHlfSGFzaFNlY3JldC5zdWZmaXg7Ci0gICAgaWYgKHggPT0gLTEpCi0gICAgICAgIHggPSAtMjsKLSAgICBhLT5vYl9zaGFzaCA9IHg7Ci0gICAgcmV0dXJuIHg7CisgICAgcmV0dXJuIGEtPm9iX3NoYXNoOwogfQogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC0xMDA3LDcgKzk3Myw3IEBACiAjZGVmaW5lIFNUUklQTkFNRShpKSAoc3RyaXBmb3JtYXRbaV0rMykKIAogUHlEb2NfU1RSVkFSKHNwbGl0X19kb2NfXywKLSJCLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCisiQi5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2YgYnl0ZXNcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG5cCiBJZiBzZXAgaXMgbm90IHNwZWNpZmllZCBvciBpcyBOb25lLCBCIGlzIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2VcblwKQEAgLTEwMTUsMTUgKzk4MSwxNyBAQAogSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXQgc3BsaXRzIGFyZSBkb25lLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19zcGxpdChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKICAgICBQeV9idWZmZXIgdnN1YjsKICAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPbjpzcGxpdCIsICZzdWJvYmosICZtYXhzcGxpdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwpAQCAtMTA5NSw3ICsxMDYzLDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0iQi5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pIC0+IGxpc3Qgb2YgYnl0ZXNcblwKKyJCLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2YgYnl0ZXNcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIsXG5cCiBzdGFydGluZyBhdCB0aGUgZW5kIG9mIEIgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LlxuXApAQCAtMTEwNSwxNSArMTA3MywxNyBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlfYnVmZmVyIHZzdWI7CiAgICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8T246cnNwbGl0IiwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnJzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwpAQCAtMTI1NCwzMSArMTIyNCw0MiBAQAogYnl0ZXNfZmluZF9pbnRlcm5hbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgaW50IGRpcikKIHsKICAgICBQeU9iamVjdCAqc3Vib2JqOworICAgIGNoYXIgYnl0ZTsKKyAgICBQeV9idWZmZXIgc3ViYnVmOwogICAgIGNvbnN0IGNoYXIgKnN1YjsKICAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CiAgICAgUHlfc3NpemVfdCBzdGFydD0wLCBlbmQ9UFlfU1NJWkVfVF9NQVg7CisgICAgUHlfc3NpemVfdCByZXM7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJmaW5kL3JmaW5kL2luZGV4L3JpbmRleCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQorICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCAmc3Vib2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIC0yOwogCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBzdWIgPSBQeUJ5dGVzX0FTX1NUUklORyhzdWJvYmopOwotICAgICAgICBzdWJfbGVuID0gUHlCeXRlc19HRVRfU0laRShzdWJvYmopOworICAgIGlmIChzdWJvYmopIHsKKyAgICAgICAgaWYgKF9nZXRidWZmZXIoc3Vib2JqLCAmc3ViYnVmKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTI7CisKKyAgICAgICAgc3ViID0gc3ViYnVmLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHN1YmJ1Zi5sZW47CiAgICAgfQotICAgIGVsc2UgaWYgKFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcihzdWJvYmosICZzdWIsICZzdWJfbGVuKSkKLSAgICAgICAgLyogWFhYIC0gdGhlICJleHBlY3RlZCBhIGNoYXJhY3RlciBidWZmZXIgb2JqZWN0IiBpcyBwcmV0dHkKLSAgICAgICAgICAgY29uZnVzaW5nIGZvciBhIG5vbi1leHBlcnQuICByZW1hcCB0byBzb21ldGhpbmcgZWxzZSA/ICovCi0gICAgICAgIHJldHVybiAtMjsKKyAgICBlbHNlIHsKKyAgICAgICAgc3ViID0gJmJ5dGU7CisgICAgICAgIHN1Yl9sZW4gPSAxOworICAgIH0KIAogICAgIGlmIChkaXIgPiAwKQotICAgICAgICByZXR1cm4gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCisgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAogICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksCiAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZmluZF9zbGljZSgKKyAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAogICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksCiAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworCisgICAgaWYgKHN1Ym9iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKKworICAgIHJldHVybiByZXM7CiB9CiAKIApAQCAtMTUwNCwyMyArMTQ4NSwzOCBAQAogICAgIFB5T2JqZWN0ICpzdWJfb2JqOwogICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwogICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKKyAgICBjaGFyIGJ5dGU7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJnN0YXJ0LCAmZW5kKSkKKyAgICBQeV9idWZmZXIgdnN1YjsKKyAgICBQeU9iamVjdCAqY291bnRfb2JqOworCisgICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJjb3VudCIsIGFyZ3MsICZzdWJfb2JqLCAmYnl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlCeXRlc19DaGVjayhzdWJfb2JqKSkgewotICAgICAgICBzdWIgPSBQeUJ5dGVzX0FTX1NUUklORyhzdWJfb2JqKTsKLSAgICAgICAgc3ViX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3ViX29iaik7CisgICAgaWYgKHN1Yl9vYmopIHsKKyAgICAgICAgaWYgKF9nZXRidWZmZXIoc3ViX29iaiwgJnZzdWIpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHN1YiA9IHZzdWIuYnVmOworICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47CiAgICAgfQotICAgIGVsc2UgaWYgKFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcihzdWJfb2JqLCAmc3ViLCAmc3ViX2xlbikpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQogCiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlCeXRlc19HRVRfU0laRShzZWxmKSk7CiAKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KAorICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKICAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKICAgICAgICAgKTsKKworICAgIGlmIChzdWJfb2JqKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKKworICAgIHJldHVybiBjb3VudF9vYmo7CiB9CiAKIApAQCAtMjMyOSwxMSArMjMyNSwxMyBAQAogaXMgZ2l2ZW4gYW5kIHRydWUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLWJ5dGVzX3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgJmtlZXBlbmRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKQEAgLTIzNTEsNyArMjM0OSw3IEBACiBFeGFtcGxlOiBieXRlcy5mcm9taGV4KCdCOSAwMUVGJykgLT4gYidcXHhiOVxceDAxXFx4ZWYnLiIpOwogCiBzdGF0aWMgaW50Ci1oZXhfZGlnaXRfdG9faW50KFB5X1VOSUNPREUgYykKK2hleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQogewogICAgIGlmIChjID49IDEyOCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjM3MSwxNSArMjM2OSwyMCBAQAogewogICAgIFB5T2JqZWN0ICpuZXdzdHJpbmcsICpoZXhvYmo7CiAgICAgY2hhciAqYnVmOwotICAgIFB5X1VOSUNPREUgKmhleDsKICAgICBQeV9zc2l6ZV90IGhleGxlbiwgYnl0ZXNsZW4sIGksIGo7CiAgICAgaW50IHRvcCwgYm90OworICAgIHZvaWQgKmRhdGE7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6ZnJvbWhleCIsICZoZXhvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKGhleG9iaikpOwotICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShoZXhvYmopOwotICAgIGhleCA9IFB5VW5pY29kZV9BU19VTklDT0RFKGhleG9iaik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShoZXhvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaGV4b2JqKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaGV4b2JqKTsKKyAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChoZXhvYmopOworCiAgICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KICAgICBuZXdzdHJpbmcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKICAgICBpZiAoIW5ld3N0cmluZykKQEAgLTIzODcsMTIgKzIzOTAsMTIgQEAKICAgICBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhuZXdzdHJpbmcpOwogICAgIGZvciAoaSA9IGogPSAwOyBpIDwgaGV4bGVuOyBpICs9IDIpIHsKICAgICAgICAgLyogc2tpcCBvdmVyIHNwYWNlcyBpbiB0aGUgaW5wdXQgKi8KLSAgICAgICAgd2hpbGUgKGhleFtpXSA9PSAnICcpCisgICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSA9PSAnICcpCiAgICAgICAgICAgICBpKys7CiAgICAgICAgIGlmIChpID49IGhleGxlbikKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB0b3AgPSBoZXhfZGlnaXRfdG9faW50KGhleFtpXSk7Ci0gICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoaGV4W2krMV0pOworICAgICAgICB0b3AgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKKyAgICAgICAgYm90ID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKzEpKTsKICAgICAgICAgaWYgKHRvcCA9PSAtMSB8fCBib3QgPT0gLTEpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJub24taGV4YWRlY2ltYWwgbnVtYmVyIGZvdW5kIGluICIKQEAgLTI0NzIsMTAgKzI0NzUsMTAgQEAKICAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAogICAgIHsicnBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlc19ycGFydGl0aW9uLCBNRVRIX08sCiAgICAgIHJwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19yc3BsaXQsIE1FVEhfVkFSQVJHUywgcnNwbGl0X19kb2NfX30sCisgICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnNwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCByc3BsaXRfX2RvY19ffSwKICAgICB7InJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19yc3RyaXAsIE1FVEhfVkFSQVJHUywgcnN0cmlwX19kb2NfX30sCi0gICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdCwgTUVUSF9WQVJBUkdTLCBzcGxpdF9fZG9jX199LAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1MsCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc3BsaXRfX2RvY19ffSwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgc3BsaXRsaW5lc19fZG9jX199LAogICAgIHsic3RhcnRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlc19zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MsCiAgICAgIHN0YXJ0c3dpdGhfX2RvY19ffSwKQEAgLTI1NzQsNiArMjU3NywxMiBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdCh4KSkgeworICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKwogICAgIC8qIFVzZSB0aGUgbW9kZXJuIGJ1ZmZlciBpbnRlcmZhY2UgKi8KICAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoeCkpIHsKICAgICAgICAgUHlfYnVmZmVyIHZpZXc7CkBAIC0yNTgyLDcgKzI1OTEsNiBAQAogICAgICAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHZpZXcubGVuKTsKICAgICAgICAgaWYgKCFuZXcpCiAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIC8qIFhYWChicmV0dC5jYW5ub24pOiBCZXR0ZXIgd2F5IHRvIGdldCB0byBpbnRlcm5hbCBidWZmZXI/ICovCiAgICAgICAgIGlmIChQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmlldywgdmlldy5sZW4sICdDJykgPCAwKQogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMjg1NywxNDkgKzI4NjUsNiBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBfUHlCeXRlc19Gb3JtYXRMb25nIGVtdWxhdGVzIHRoZSBmb3JtYXQgY29kZXMgZCwgdSwgbywgeCBhbmQgWCwgYW5kCi0gKiB0aGUgRl9BTFQgZmxhZywgZm9yIFB5dGhvbidzIGxvbmcgKHVuYm91bmRlZCkgaW50cy4gIEl0J3Mgbm90IHVzZWQgZm9yCi0gKiBQeXRob24ncyByZWd1bGFyIGludHMuCi0gKiBSZXR1cm4gdmFsdWU6ICBhIG5ldyBQeUJ5dGVzKiwgb3IgTlVMTCBpZiBlcnJvci4KLSAqICAuICAqcGJ1ZiBpcyBzZXQgdG8gcG9pbnQgaW50byBpdCwKLSAqICAgICAqcGxlbiBzZXQgdG8gdGhlICMgb2YgY2hhcnMgZm9sbG93aW5nIHRoYXQuCi0gKiAgICAgQ2FsbGVyIG11c3QgZGVjcmVmIGl0IHdoZW4gZG9uZSB1c2luZyBwYnVmLgotICogICAgIFRoZSBzdHJpbmcgc3RhcnRpbmcgYXQgKnBidWYgaXMgb2YgdGhlIGZvcm0KLSAqICAgICAgICAgIi0iPyAoIjB4IiB8ICIwWCIpPyBkaWdpdCsKLSAqICAgICAiMHgiLyIwWCIgYXJlIHByZXNlbnQgb25seSBmb3IgeCBhbmQgWCBjb252ZXJzaW9ucywgd2l0aCBGX0FMVAotICogICAgICAgICBzZXQgaW4gZmxhZ3MuICBUaGUgY2FzZSBvZiBoZXggZGlnaXRzIHdpbGwgYmUgY29ycmVjdCwKLSAqICAgICBUaGVyZSB3aWxsIGJlIGF0IGxlYXN0IHByZWMgZGlnaXRzLCB6ZXJvLWZpbGxlZCBvbiB0aGUgbGVmdCBpZgotICogICAgICAgICBuZWNlc3NhcnkgdG8gZ2V0IHRoYXQgbWFueS4KLSAqIHZhbCAgICAgICAgICBvYmplY3QgdG8gYmUgY29udmVydGVkCi0gKiBmbGFncyAgICAgICAgYml0bWFzayBvZiBmb3JtYXQgZmxhZ3M7IG9ubHkgRl9BTFQgaXMgbG9va2VkIGF0Ci0gKiBwcmVjICAgICAgICAgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzOyAwLWZpbGwgb24gbGVmdCBpZiBuZWVkZWQKLSAqIHR5cGUgICAgICAgICBhIGNoYXJhY3RlciBpbiBbZHVveFhdOyB1IGFjdHMgdGhlIHNhbWUgYXMgZAotICoKLSAqIENBVVRJT046ICBvLCB4IGFuZCBYIGNvbnZlcnNpb25zIG9uIHJlZ3VsYXIgaW50cyBjYW4gbmV2ZXIKLSAqIHByb2R1Y2UgYSAnLScgc2lnbiwgYnV0IGNhbiBmb3IgUHl0aG9uJ3MgdW5ib3VuZGVkIGludHMuCi0gKi8KLVB5T2JqZWN0KgotX1B5Qnl0ZXNfRm9ybWF0TG9uZyhQeU9iamVjdCAqdmFsLCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipwYnVmLCBpbnQgKnBsZW4pCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgaTsKLSAgICBpbnQgc2lnbjsgICAgICAgICAgIC8qIDEgaWYgJy0nLCBlbHNlIDAgKi8KLSAgICBpbnQgbGVuOyAgICAgICAgICAgIC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzICovCi0gICAgUHlfc3NpemVfdCBsbGVuOwotICAgIGludCBudW1kaWdpdHM7ICAgICAgLyogbGVuID09IG51bW5vbmRpZ2l0cyArIG51bWRpZ2l0cyAqLwotICAgIGludCBudW1ub25kaWdpdHMgPSAwOwotCi0gICAgLyogQXZvaWQgZXhjZWVkaW5nIFNTSVpFX1RfTUFYICovCi0gICAgaWYgKHByZWMgPiBJTlRfTUFYLTMpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicHJlY2lzaW9uIHRvbyBsYXJnZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlICdkJzoKLSAgICBjYXNlICd1JzoKLSAgICAgICAgLyogU3BlY2lhbC1jYXNlIGJvb2xlYW46IHdlIHdhbnQgMC8xICovCi0gICAgICAgIGlmIChQeUJvb2xfQ2hlY2sodmFsKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDEwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gUHlfVFlQRSh2YWwpLT50cF9zdHIodmFsKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnbyc6Ci0gICAgICAgIG51bW5vbmRpZ2l0cyA9IDI7Ci0gICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlICd4JzoKLSAgICBjYXNlICdYJzoKLSAgICAgICAgbnVtbm9uZGlnaXRzID0gMjsKLSAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfVG9CYXNlKHZhbCwgMTYpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBhc3NlcnQoISIndHlwZScgbm90IGluIFtkdW94WF0iKTsKLSAgICB9Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgYnVmID0gX1B5VW5pY29kZV9Bc1N0cmluZyhyZXN1bHQpOwotICAgIGlmICghYnVmKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICAvKiBUbyBtb2RpZnkgdGhlIHN0cmluZyBpbi1wbGFjZSwgdGhlcmUgY2FuIG9ubHkgYmUgb25lIHJlZmVyZW5jZS4gKi8KLSAgICBpZiAoUHlfUkVGQ05UKHJlc3VsdCkgIT0gMSkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGxsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZShyZXN1bHQpOwotICAgIGlmIChsbGVuID4gSU5UX01BWCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG9vIGxhcmdlIGluIF9QeUJ5dGVzX0Zvcm1hdExvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGxlbiA9IChpbnQpbGxlbjsKLSAgICBpZiAoYnVmW2xlbi0xXSA9PSAnTCcpIHsKLSAgICAgICAgLS1sZW47Ci0gICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKLSAgICB9Ci0gICAgc2lnbiA9IGJ1ZlswXSA9PSAnLSc7Ci0gICAgbnVtbm9uZGlnaXRzICs9IHNpZ247Ci0gICAgbnVtZGlnaXRzID0gbGVuIC0gbnVtbm9uZGlnaXRzOwotICAgIGFzc2VydChudW1kaWdpdHMgPiAwKTsKLQotICAgIC8qIEdldCByaWQgb2YgYmFzZSBtYXJrZXIgdW5sZXNzIEZfQUxUICovCi0gICAgaWYgKCgoZmxhZ3MgJiBGX0FMVCkgPT0gMCAmJgotICAgICAgICAodHlwZSA9PSAnbycgfHwgdHlwZSA9PSAneCcgfHwgdHlwZSA9PSAnWCcpKSkgewotICAgICAgICBhc3NlcnQoYnVmW3NpZ25dID09ICcwJyk7Ci0gICAgICAgIGFzc2VydChidWZbc2lnbisxXSA9PSAneCcgfHwgYnVmW3NpZ24rMV0gPT0gJ1gnIHx8Ci0gICAgICAgICAgICAgICBidWZbc2lnbisxXSA9PSAnbycpOwotICAgICAgICBudW1ub25kaWdpdHMgLT0gMjsKLSAgICAgICAgYnVmICs9IDI7Ci0gICAgICAgIGxlbiAtPSAyOwotICAgICAgICBpZiAoc2lnbikKLSAgICAgICAgICAgIGJ1ZlswXSA9ICctJzsKLSAgICAgICAgYXNzZXJ0KGxlbiA9PSBudW1ub25kaWdpdHMgKyBudW1kaWdpdHMpOwotICAgICAgICBhc3NlcnQobnVtZGlnaXRzID4gMCk7Ci0gICAgfQotCi0gICAgLyogRmlsbCB3aXRoIGxlYWRpbmcgemVyb2VzIHRvIG1lZXQgbWluaW11bSB3aWR0aC4gKi8KLSAgICBpZiAocHJlYyA+IG51bWRpZ2l0cykgewotICAgICAgICBQeU9iamVjdCAqcjEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bW5vbmRpZ2l0cyArIHByZWMpOwotICAgICAgICBjaGFyICpiMTsKLSAgICAgICAgaWYgKCFyMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBiMSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHIxKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bW5vbmRpZ2l0czsgKytpKQotICAgICAgICAgICAgKmIxKysgPSAqYnVmKys7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcmVjIC0gbnVtZGlnaXRzOyBpKyspCi0gICAgICAgICAgICAqYjErKyA9ICcwJzsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWRpZ2l0czsgaSsrKQotICAgICAgICAgICAgKmIxKysgPSAqYnVmKys7Ci0gICAgICAgICpiMSA9ICdcMCc7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSByMTsKLSAgICAgICAgYnVmID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICAgICAgbGVuID0gbnVtbm9uZGlnaXRzICsgcHJlYzsKLSAgICB9Ci0KLSAgICAvKiBGaXggdXAgY2FzZSBmb3IgaGV4IGNvbnZlcnNpb25zLiAqLwotICAgIGlmICh0eXBlID09ICdYJykgewotICAgICAgICAvKiBOZWVkIHRvIGNvbnZlcnQgYWxsIGxvd2VyIGNhc2UgbGV0dGVycyB0byB1cHBlciBjYXNlLgotICAgICAgICAgICBhbmQgbmVlZCB0byBjb252ZXJ0IDB4IHRvIDBYIChhbmQgLTB4IHRvIC0wWCkuICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgICAgICAgIGlmIChidWZbaV0gPj0gJ2EnICYmIGJ1ZltpXSA8PSAneCcpCi0gICAgICAgICAgICAgICAgYnVmW2ldIC09ICdhJy0nQSc7Ci0gICAgfQotICAgICpwYnVmID0gYnVmOwotICAgICpwbGVuID0gbGVuOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQKIFB5Qnl0ZXNfRmluaSh2b2lkKQogewpAQCAtMzA3Miw5ICsyOTM3LDQzIEBACiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLAogICAgICAgICAgICAgICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3N0cml0ZXJfcmVkdWNlKHN0cml0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHUpOworICAgIH0KK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaXRlcl9zZXRzdGF0ZShzdHJpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgc3RyaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pc3RyaXRlcl9sZW4sIE1FVEhfTk9BUkdTLAogICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXN0cml0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pc3RyaXRlcl9zZXRzdGF0ZSwgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsYXNzb2JqZWN0LmMgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKaW5kZXggYjdkMzVlZi4uYzQ4MWRkMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGFzc29iamVjdC5jCisrKyBiL09iamVjdHMvY2xhc3NvYmplY3QuYwpAQCAtMTQsNiArMTQsOCBAQAogI2RlZmluZSBQeU1ldGhvZF9NQVhGUkVFTElTVCAyNTYKICNlbmRpZgogCitfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisKIFB5T2JqZWN0ICoKIFB5TWV0aG9kX0Z1bmN0aW9uKFB5T2JqZWN0ICppbSkKIHsKQEAgLTE5MCw4ICsxOTIsNyBAQAogICAgICAgICAhUHlNZXRob2RfQ2hlY2soc2VsZikgfHwKICAgICAgICAgIVB5TWV0aG9kX0NoZWNrKG90aGVyKSkKICAgICB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KICAgICBhID0gKFB5TWV0aG9kT2JqZWN0ICopc2VsZjsKICAgICBiID0gKFB5TWV0aG9kT2JqZWN0ICopb3RoZXI7CkBAIC0yMjcsNyArMjI4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZnVuY25hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZ1bmMsICJfX25hbWVfXyIpOworICAgIGZ1bmNuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChmdW5jLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgaWYgKGZ1bmNuYW1lID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQxLDcgKzI0Miw3IEBACiAgICAgaWYgKGtsYXNzID09IE5VTEwpCiAgICAgICAgIGtsYXNzbmFtZSA9IE5VTEw7CiAgICAgZWxzZSB7Ci0gICAgICAgIGtsYXNzbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoa2xhc3MsICJfX25hbWVfXyIpOworICAgICAgICBrbGFzc25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGtsYXNzLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgICAgIGlmIChrbGFzc25hbWUgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZnVuY25hbWUpOwpAQCAtNDAxLDYgKzQwMiwxNSBAQAogICAgICh2b2lkKVB5TWV0aG9kX0NsZWFyRnJlZUxpc3QoKTsKIH0KIAorLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5TWV0aG9kX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlNZXRob2RPYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZnJlZSwgc2l6ZW9mKFB5TWV0aG9kT2JqZWN0KSk7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogaW5zdGFuY2UgbWV0aG9kCiAgKi8KQEAgLTUxOCw4ICs1MjgsNyBAQAogICAgICAgICAhUHlJbnN0YW5jZU1ldGhvZF9DaGVjayhzZWxmKSB8fAogICAgICAgICAhUHlJbnN0YW5jZU1ldGhvZF9DaGVjayhvdGhlcikpCiAgICAgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAgICAgYSA9IChQeUluc3RhbmNlTWV0aG9kT2JqZWN0ICopc2VsZjsKICAgICBiID0gKFB5SW5zdGFuY2VNZXRob2RPYmplY3QgKilvdGhlcjsKQEAgLTU0Niw3ICs1NTUsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBmdW5jbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZnVuYywgIl9fbmFtZV9fIik7CisgICAgZnVuY25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1bmMsICZQeUlkX19fbmFtZV9fKTsKICAgICBpZiAoZnVuY25hbWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9PYmplY3RzL2NvZGVvYmplY3QuYyBiL09iamVjdHMvY29kZW9iamVjdC5jCmluZGV4IGJiOTM4ZWEuLjk3MTNmNjEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY29kZW9iamVjdC5jCisrKyBiL09iamVjdHMvY29kZW9iamVjdC5jCkBAIC04LDE5ICs4LDI0IEBACiAvKiBhbGxfbmFtZV9jaGFycyhzKTogdHJ1ZSBpZmYgYWxsIGNoYXJzIGluIHMgYXJlIHZhbGlkIE5BTUVfQ0hBUlMgKi8KIAogc3RhdGljIGludAotYWxsX25hbWVfY2hhcnMoUHlfVU5JQ09ERSAqcykKK2FsbF9uYW1lX2NoYXJzKFB5T2JqZWN0ICpvKQogewogICAgIHN0YXRpYyBjaGFyIG9rX25hbWVfY2hhclsyNTZdOwogICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyICpuYW1lX2NoYXJzID0gKHVuc2lnbmVkIGNoYXIgKilOQU1FX0NIQVJTOworICAgIFB5VW5pY29kZU9iamVjdCAqdSA9IChQeVVuaWNvZGVPYmplY3QgKilvOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnM7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvKSB8fCBQeVVuaWNvZGVfUkVBRFkodSkgPT0gLTEgfHwKKyAgICAgICAgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHUpID49IDEyOCkKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAob2tfbmFtZV9jaGFyWypuYW1lX2NoYXJzXSA9PSAwKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnA7CiAgICAgICAgIGZvciAocCA9IG5hbWVfY2hhcnM7ICpwOyBwKyspCiAgICAgICAgICAgICBva19uYW1lX2NoYXJbKnBdID0gMTsKICAgICB9CisgICAgcyA9IFB5VW5pY29kZV8xQllURV9EQVRBKHUpOwogICAgIHdoaWxlICgqcykgewotICAgICAgICBpZiAoKnMgPj0gMTI4KQotICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChva19uYW1lX2NoYXJbKnMrK10gPT0gMCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTUxLDcgKzU2LDggQEAKICAgICAgICAgICAgUHlPYmplY3QgKmxub3RhYikKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvOwotICAgIFB5X3NzaXplX3QgaTsKKyAgICB1bnNpZ25lZCBjaGFyICpjZWxsMmFyZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpLCBuX2NlbGx2YXJzOwogCiAgICAgLyogQ2hlY2sgYXJndW1lbnQgdHlwZXMgKi8KICAgICBpZiAoYXJnY291bnQgPCAwIHx8IGt3b25seWFyZ2NvdW50IDwgMCB8fCBubG9jYWxzIDwgMCB8fApAQCAtNjgsNDggKzc0LDc5IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgbl9jZWxsdmFycyA9IFB5VHVwbGVfR0VUX1NJWkUoY2VsbHZhcnMpOwogICAgIGludGVybl9zdHJpbmdzKG5hbWVzKTsKICAgICBpbnRlcm5fc3RyaW5ncyh2YXJuYW1lcyk7CiAgICAgaW50ZXJuX3N0cmluZ3MoZnJlZXZhcnMpOwogICAgIGludGVybl9zdHJpbmdzKGNlbGx2YXJzKTsKICAgICAvKiBJbnRlcm4gc2VsZWN0ZWQgc3RyaW5nIGNvbnN0YW50cyAqLwotICAgIGZvciAoaSA9IFB5VHVwbGVfU2l6ZShjb25zdHMpOyAtLWkgPj0gMDsgKSB7CisgICAgZm9yIChpID0gUHlUdXBsZV9HRVRfU0laRShjb25zdHMpOyAtLWkgPj0gMDsgKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HZXRJdGVtKGNvbnN0cywgaSk7Ci0gICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHYpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYWxsX25hbWVfY2hhcnMoUHlVbmljb2RlX0FTX1VOSUNPREUodikpKQorICAgICAgICBpZiAoIWFsbF9uYW1lX2NoYXJzKHYpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZQeVR1cGxlX0dFVF9JVEVNKGNvbnN0cywgaSkpOwogICAgIH0KLSAgICBjbyA9IFB5T2JqZWN0X05FVyhQeUNvZGVPYmplY3QsICZQeUNvZGVfVHlwZSk7Ci0gICAgaWYgKGNvICE9IE5VTEwpIHsKLSAgICAgICAgY28tPmNvX2FyZ2NvdW50ID0gYXJnY291bnQ7Ci0gICAgICAgIGNvLT5jb19rd29ubHlhcmdjb3VudCA9IGt3b25seWFyZ2NvdW50OwotICAgICAgICBjby0+Y29fbmxvY2FscyA9IG5sb2NhbHM7Ci0gICAgICAgIGNvLT5jb19zdGFja3NpemUgPSBzdGFja3NpemU7Ci0gICAgICAgIGNvLT5jb19mbGFncyA9IGZsYWdzOwotICAgICAgICBQeV9JTkNSRUYoY29kZSk7Ci0gICAgICAgIGNvLT5jb19jb2RlID0gY29kZTsKLSAgICAgICAgUHlfSU5DUkVGKGNvbnN0cyk7Ci0gICAgICAgIGNvLT5jb19jb25zdHMgPSBjb25zdHM7Ci0gICAgICAgIFB5X0lOQ1JFRihuYW1lcyk7Ci0gICAgICAgIGNvLT5jb19uYW1lcyA9IG5hbWVzOwotICAgICAgICBQeV9JTkNSRUYodmFybmFtZXMpOwotICAgICAgICBjby0+Y29fdmFybmFtZXMgPSB2YXJuYW1lczsKLSAgICAgICAgUHlfSU5DUkVGKGZyZWV2YXJzKTsKLSAgICAgICAgY28tPmNvX2ZyZWV2YXJzID0gZnJlZXZhcnM7Ci0gICAgICAgIFB5X0lOQ1JFRihjZWxsdmFycyk7Ci0gICAgICAgIGNvLT5jb19jZWxsdmFycyA9IGNlbGx2YXJzOwotICAgICAgICBQeV9JTkNSRUYoZmlsZW5hbWUpOwotICAgICAgICBjby0+Y29fZmlsZW5hbWUgPSBmaWxlbmFtZTsKLSAgICAgICAgUHlfSU5DUkVGKG5hbWUpOwotICAgICAgICBjby0+Y29fbmFtZSA9IG5hbWU7Ci0gICAgICAgIGNvLT5jb19maXJzdGxpbmVubyA9IGZpcnN0bGluZW5vOwotICAgICAgICBQeV9JTkNSRUYobG5vdGFiKTsKLSAgICAgICAgY28tPmNvX2xub3RhYiA9IGxub3RhYjsKLSAgICAgICAgY28tPmNvX3pvbWJpZWZyYW1lID0gTlVMTDsKLSAgICAgICAgY28tPmNvX3dlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICAvKiBDcmVhdGUgbWFwcGluZyBiZXR3ZWVuIGNlbGxzIGFuZCBhcmd1bWVudHMgaWYgbmVlZGVkLiAqLworICAgIGlmIChuX2NlbGx2YXJzKSB7CisgICAgICAgIFB5X3NzaXplX3QgdG90YWxfYXJncyA9IGFyZ2NvdW50ICsga3dvbmx5YXJnY291bnQgKworICAgICAgICAgICAgKChmbGFncyAmIENPX1ZBUkFSR1MpICE9IDApICsgKChmbGFncyAmIENPX1ZBUktFWVdPUkRTKSAhPSAwKTsKKyAgICAgICAgUHlfc3NpemVfdCBhbGxvY19zaXplID0gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogbl9jZWxsdmFyczsKKyAgICAgICAgaW50IHVzZWRfY2VsbDJhcmcgPSAwOworICAgICAgICBjZWxsMmFyZyA9IFB5TWVtX01BTExPQyhhbGxvY19zaXplKTsKKyAgICAgICAgaWYgKGNlbGwyYXJnID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbWVtc2V0KGNlbGwyYXJnLCBDT19DRUxMX05PVF9BTl9BUkcsIGFsbG9jX3NpemUpOworICAgICAgICAvKiBGaW5kIGNlbGxzIHdoaWNoIGFyZSBhbHNvIGFyZ3VtZW50cy4gKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5fY2VsbHZhcnM7IGkrKykgeworICAgICAgICAgICAgUHlfc3NpemVfdCBqOworICAgICAgICAgICAgUHlPYmplY3QgKmNlbGwgPSBQeVR1cGxlX0dFVF9JVEVNKGNlbGx2YXJzLCBpKTsKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gUHlUdXBsZV9HRVRfSVRFTSh2YXJuYW1lcywgaik7CisgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZShjZWxsLCBhcmcpKSB7CisgICAgICAgICAgICAgICAgICAgIGNlbGwyYXJnW2ldID0gajsKKyAgICAgICAgICAgICAgICAgICAgdXNlZF9jZWxsMmFyZyA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIXVzZWRfY2VsbDJhcmcpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZSRUUoY2VsbDJhcmcpOworICAgICAgICAgICAgY2VsbDJhcmcgPSBOVUxMOworICAgICAgICB9CiAgICAgfQorICAgIGNvID0gUHlPYmplY3RfTkVXKFB5Q29kZU9iamVjdCwgJlB5Q29kZV9UeXBlKTsKKyAgICBpZiAoY28gPT0gTlVMTCkgeworICAgICAgICBpZiAoY2VsbDJhcmcpCisgICAgICAgICAgICBQeU1lbV9GUkVFKGNlbGwyYXJnKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGNvLT5jb19hcmdjb3VudCA9IGFyZ2NvdW50OworICAgIGNvLT5jb19rd29ubHlhcmdjb3VudCA9IGt3b25seWFyZ2NvdW50OworICAgIGNvLT5jb19ubG9jYWxzID0gbmxvY2FsczsKKyAgICBjby0+Y29fc3RhY2tzaXplID0gc3RhY2tzaXplOworICAgIGNvLT5jb19mbGFncyA9IGZsYWdzOworICAgIFB5X0lOQ1JFRihjb2RlKTsKKyAgICBjby0+Y29fY29kZSA9IGNvZGU7CisgICAgUHlfSU5DUkVGKGNvbnN0cyk7CisgICAgY28tPmNvX2NvbnN0cyA9IGNvbnN0czsKKyAgICBQeV9JTkNSRUYobmFtZXMpOworICAgIGNvLT5jb19uYW1lcyA9IG5hbWVzOworICAgIFB5X0lOQ1JFRih2YXJuYW1lcyk7CisgICAgY28tPmNvX3Zhcm5hbWVzID0gdmFybmFtZXM7CisgICAgUHlfSU5DUkVGKGZyZWV2YXJzKTsKKyAgICBjby0+Y29fZnJlZXZhcnMgPSBmcmVldmFyczsKKyAgICBQeV9JTkNSRUYoY2VsbHZhcnMpOworICAgIGNvLT5jb19jZWxsdmFycyA9IGNlbGx2YXJzOworICAgIGNvLT5jb19jZWxsMmFyZyA9IGNlbGwyYXJnOworICAgIFB5X0lOQ1JFRihmaWxlbmFtZSk7CisgICAgY28tPmNvX2ZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgUHlfSU5DUkVGKG5hbWUpOworICAgIGNvLT5jb19uYW1lID0gbmFtZTsKKyAgICBjby0+Y29fZmlyc3RsaW5lbm8gPSBmaXJzdGxpbmVubzsKKyAgICBQeV9JTkNSRUYobG5vdGFiKTsKKyAgICBjby0+Y29fbG5vdGFiID0gbG5vdGFiOworICAgIGNvLT5jb196b21iaWVmcmFtZSA9IE5VTEw7CisgICAgY28tPmNvX3dlYWtyZWZsaXN0ID0gTlVMTDsKICAgICByZXR1cm4gY287CiB9CiAKQEAgLTIxMiw5ICsyNDksNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpdGVtID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGl0ZW0pLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShpdGVtKSk7CisgICAgICAgICAgICBpdGVtID0gX1B5VW5pY29kZV9Db3B5KGl0ZW0pOwogICAgICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXd0dXBsZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMzAsNiArMzY1LDggQEAKICAgICBQeV9YREVDUkVGKGNvLT5jb19maWxlbmFtZSk7CiAgICAgUHlfWERFQ1JFRihjby0+Y29fbmFtZSk7CiAgICAgUHlfWERFQ1JFRihjby0+Y29fbG5vdGFiKTsKKyAgICBpZiAoY28tPmNvX2NlbGwyYXJnICE9IE5VTEwpCisgICAgICAgIFB5TWVtX0ZSRUUoY28tPmNvX2NlbGwyYXJnKTsKICAgICBpZiAoY28tPmNvX3pvbWJpZWZyYW1lICE9IE5VTEwpCiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChjby0+Y29fem9tYmllZnJhbWUpOwogICAgIGlmIChjby0+Y29fd2Vha3JlZmxpc3QgIT0gTlVMTCkKQEAgLTMzOCw2ICszNzUsMTcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2NvZGVfc2l6ZW9mKFB5Q29kZU9iamVjdCAqY28sIHZvaWQgKnVudXNlZCkKK3sKKyAgICBQeV9zc2l6ZV90IHJlczsKKworICAgIHJlcyA9IHNpemVvZihQeUNvZGVPYmplY3QpOworICAgIGlmIChjby0+Y29fY2VsbDJhcmcgIT0gTlVMTCAmJiBjby0+Y29fY2VsbHZhcnMgIT0gTlVMTCkKKyAgICAgICAgcmVzICs9IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSAqIHNpemVvZih1bnNpZ25lZCBjaGFyKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBjb2RlX3JlcHIoUHlDb2RlT2JqZWN0ICpjbykKIHsKICAgICBpbnQgbGluZW5vOwpAQCAtMzY2LDggKzQxNCw3IEBACiAgICAgaWYgKChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkgfHwKICAgICAgICAgIVB5Q29kZV9DaGVjayhzZWxmKSB8fAogICAgICAgICAhUHlDb2RlX0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICBjbyA9IChQeUNvZGVPYmplY3QgKilzZWxmOwpAQCAtNDQ0LDYgKzQ5MSwxMSBAQAogCiAvKiBYWFggY29kZSBvYmplY3RzIG5lZWQgdG8gcGFydGljaXBhdGUgaW4gR0M/ICovCiAKK3N0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgY29kZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWNvZGVfc2l6ZW9mLCBNRVRIX05PQVJHU30sCisgICAge05VTEwsIE5VTEx9ICAgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeVR5cGVPYmplY3QgUHlDb2RlX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiY29kZSIsCkBAIC00NzIsNyArNTI0LDcgQEAKICAgICBvZmZzZXRvZihQeUNvZGVPYmplY3QsIGNvX3dlYWtyZWZsaXN0KSwgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGNvZGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBjb2RlX21lbWJlcmxpc3QsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwppbmRleCBlMjQ3YmE5Li40MDNjNjBjIDEwMDY0NAotLS0gYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYworKysgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwpAQCAtMjY1LDkgKzI2NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdHJ5X2NvbXBsZXhfc3BlY2lhbF9tZXRob2QoUHlPYmplY3QgKm9wKSB7CiAgICAgUHlPYmplY3QgKmY7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpjb21wbGV4c3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fY29tcGxleF9fKTsKIAotICAgIGYgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvcCwgIl9fY29tcGxleF9fIiwgJmNvbXBsZXhzdHIpOworICAgIGYgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvcCwgJlB5SWRfX19jb21wbGV4X18pOwogICAgIGlmIChmKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGYsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoZik7CkBAIC0zMzAsMTIgKzMzMCwxMCBAQAogICAgIGludCBwcmVjaXNpb24gPSAwOwogICAgIGNoYXIgZm9ybWF0X2NvZGUgPSAncic7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBsZW47CiAKICAgICAvKiBJZiB0aGVzZSBhcmUgbm9uLU5VTEwsIHRoZXknbGwgbmVlZCB0byBiZSBmcmVlZC4gKi8KICAgICBjaGFyICpwcmUgPSBOVUxMOwogICAgIGNoYXIgKmltID0gTlVMTDsKLSAgICBjaGFyICpidWYgPSBOVUxMOwogCiAgICAgLyogVGhlc2UgZG8gbm90IG5lZWQgdG8gYmUgZnJlZWQuIHJlIGlzIGVpdGhlciBhbiBhbGlhcwogICAgICAgIGZvciBwcmUgb3IgYSBwb2ludGVyIHRvIGEgY29uc3RhbnQuICBsZWFkIGFuZCB0YWlsCkBAIC0zNzQsMjAgKzM3MiwxMCBAQAogICAgICAgICBsZWFkID0gIigiOwogICAgICAgICB0YWlsID0gIikiOwogICAgIH0KLSAgICAvKiBBbGxvYyB0aGUgZmluYWwgYnVmZmVyLiBBZGQgb25lIGZvciB0aGUgImoiIGluIHRoZSBmb3JtYXQgc3RyaW5nLAotICAgICAgIGFuZCBvbmUgZm9yIHRoZSB0cmFpbGluZyB6ZXJvIGJ5dGUuICovCi0gICAgbGVuID0gc3RybGVuKGxlYWQpICsgc3RybGVuKHJlKSArIHN0cmxlbihpbSkgKyBzdHJsZW4odGFpbCkgKyAyOwotICAgIGJ1ZiA9IFB5TWVtX01hbGxvYyhsZW4pOwotICAgIGlmICghYnVmKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0gICAgUHlPU19zbnByaW50ZihidWYsIGxlbiwgIiVzJXMlc2olcyIsIGxlYWQsIHJlLCBpbSwgdGFpbCk7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMlcyVzaiVzIiwgbGVhZCwgcmUsIGltLCB0YWlsKTsKICAgZG9uZToKICAgICBQeU1lbV9GcmVlKGltKTsKICAgICBQeU1lbV9GcmVlKHByZSk7Ci0gICAgUHlNZW1fRnJlZShidWYpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY2Miw4ICs2NTAsNyBAQAogICAgIHJldHVybiByZXM7CiAKIFVuaW1wbGVtZW50ZWQ6Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzEyLDEyICs2OTksMjIgQEAKIGNvbXBsZXhfX2Zvcm1hdF9fKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWM7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CisgICAgaW50IHJldDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpfX2Zvcm1hdF9fIiwgJmZvcm1hdF9zcGVjKSkKLSAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGZvcm1hdF9zcGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlciwgMCk7CisgICAgcmV0ID0gX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZFdyaXRlcigKKyAgICAgICAgJndyaXRlciwKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZm9ybWF0X3NwZWMsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKGZvcm1hdF9zcGVjKSk7CisgICAgaWYgKHJldCA9PSAtMSkgeworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiB9CiAKICNpZiAwCkBAIC03NjgsMjAgKzc2NSwxMCBAQAogICAgIFB5X3NzaXplX3QgbGVuOwogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICBQeV9zc2l6ZV90IGksIGJ1ZmxlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh2KTsKLSAgICAgICAgUHlfVU5JQ09ERSAqYnVmcHRyOwotICAgICAgICBzX2J1ZmZlciA9IFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHYpLCBidWZsZW4pOworICAgICAgICBzX2J1ZmZlciA9IF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSh2KTsKICAgICAgICAgaWYgKHNfYnVmZmVyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogUmVwbGFjZSBub24tQVNDSUkgd2hpdGVzcGFjZSB3aXRoICcgJyAqLwotICAgICAgICBidWZwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzX2J1ZmZlcik7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBidWZsZW47IGkrKykgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9IGJ1ZnB0cltpXTsKLSAgICAgICAgICAgIGlmIChjaCA+IDEyNyAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQotICAgICAgICAgICAgICAgIGJ1ZnB0cltpXSA9ICcgJzsKLSAgICAgICAgfQotICAgICAgICBzID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoc19idWZmZXIsICZsZW4pOworICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc19idWZmZXIsICZsZW4pOwogICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMgYi9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKaW5kZXggOTkzNGYyMy4uYWJjYzAwMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kZXNjcm9iamVjdC5jCisrKyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwpAQCAtOSw2ICs5LDcgQEAKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhkZXNjcik7CiAgICAgUHlfWERFQ1JFRihkZXNjci0+ZF90eXBlKTsKICAgICBQeV9YREVDUkVGKGRlc2NyLT5kX25hbWUpOworICAgIFB5X1hERUNSRUYoZGVzY3ItPmRfcXVhbG5hbWUpOwogICAgIFB5T2JqZWN0X0dDX0RlbChkZXNjcik7CiB9CiAKQEAgLTM1OSw2ICszNjAsNDQgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoZGVzY3ItPmRfbWV0aG9kLT5tbF9kb2MpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY2FsY3VsYXRlX3F1YWxuYW1lKFB5RGVzY3JPYmplY3QgKmRlc2NyKQoreworICAgIFB5T2JqZWN0ICp0eXBlX3F1YWxuYW1lLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKF9fcXVhbG5hbWVfXyk7CisKKyAgICBpZiAoZGVzY3ItPmRfbmFtZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2soZGVzY3ItPmRfbmFtZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICI8ZGVzY3JpcHRvcj4uX19uYW1lX18gaXMgbm90IGEgdW5pY29kZSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdHlwZV9xdWFsbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopZGVzY3ItPmRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX3F1YWxuYW1lX18pOworICAgIGlmICh0eXBlX3F1YWxuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodHlwZV9xdWFsbmFtZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIjxkZXNjcmlwdG9yPi5fX29iamNsYXNzX18uIgorICAgICAgICAgICAgICAgICAgICAgICAgIl9fcXVhbG5hbWVfXyBpcyBub3QgYSB1bmljb2RlIG9iamVjdCIpOworICAgICAgICBQeV9YREVDUkVGKHR5cGVfcXVhbG5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMuJVMiLCB0eXBlX3F1YWxuYW1lLCBkZXNjci0+ZF9uYW1lKTsKKyAgICBQeV9ERUNSRUYodHlwZV9xdWFsbmFtZSk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Rlc2NyX2dldF9xdWFsbmFtZShQeURlc2NyT2JqZWN0ICpkZXNjcikKK3sKKyAgICBpZiAoZGVzY3ItPmRfcXVhbG5hbWUgPT0gTlVMTCkKKyAgICAgICAgZGVzY3ItPmRfcXVhbG5hbWUgPSBjYWxjdWxhdGVfcXVhbG5hbWUoZGVzY3IpOworICAgIFB5X1hJTkNSRUYoZGVzY3ItPmRfcXVhbG5hbWUpOworICAgIHJldHVybiBkZXNjci0+ZF9xdWFsbmFtZTsKK30KKwogc3RhdGljIFB5TWVtYmVyRGVmIGRlc2NyX21lbWJlcnNbXSA9IHsKICAgICB7Il9fb2JqY2xhc3NfXyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeURlc2NyT2JqZWN0LCBkX3R5cGUpLCBSRUFET05MWX0sCiAgICAgeyJfX25hbWVfXyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeURlc2NyT2JqZWN0LCBkX25hbWUpLCBSRUFET05MWX0sCkBAIC0zNjcsNiArNDA2LDcgQEAKIAogc3RhdGljIFB5R2V0U2V0RGVmIG1ldGhvZF9nZXRzZXRbXSA9IHsKICAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKW1ldGhvZF9nZXRfZG9jfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZGVzY3JfZ2V0X3F1YWxuYW1lfSwKICAgICB7MH0KIH07CiAKQEAgLTM4Miw2ICs0MjIsNyBAQAogCiBzdGF0aWMgUHlHZXRTZXREZWYgbWVtYmVyX2dldHNldFtdID0gewogICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpbWVtYmVyX2dldF9kb2N9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilkZXNjcl9nZXRfcXVhbG5hbWV9LAogICAgIHswfQogfTsKIApAQCAtMzk3LDYgKzQzOCw3IEBACiAKIHN0YXRpYyBQeUdldFNldERlZiBnZXRzZXRfZ2V0c2V0W10gPSB7CiAgICAgeyJfX2RvY19fIiwgKGdldHRlcilnZXRzZXRfZ2V0X2RvY30sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWRlc2NyX2dldF9xdWFsbmFtZX0sCiAgICAgezB9CiB9OwogCkBAIC00MTIsNiArNDU0LDcgQEAKIAogc3RhdGljIFB5R2V0U2V0RGVmIHdyYXBwZXJkZXNjcl9nZXRzZXRbXSA9IHsKICAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKXdyYXBwZXJkZXNjcl9nZXRfZG9jfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZGVzY3JfZ2V0X3F1YWxuYW1lfSwKICAgICB7MH0KIH07CiAKQEAgLTYyMyw2ICs2NjYsOSBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGRlc2NyKTsKICAgICAgICAgICAgIGRlc2NyID0gTlVMTDsKICAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlc2NyLT5kX3F1YWxuYW1lID0gTlVMTDsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZGVzY3I7CiB9CkBAIC02OTAsNDEgKzczNiw0NCBAQAogfQogCiAKLS8qIC0tLSBSZWFkb25seSBwcm94eSBmb3IgZGljdGlvbmFyaWVzIChhY3R1YWxseSBhbnkgbWFwcGluZykgLS0tICovCisvKiAtLS0gbWFwcGluZ3Byb3h5OiByZWFkLW9ubHkgcHJveHkgZm9yIG1hcHBpbmdzIC0tLSAqLwogCiAvKiBUaGlzIGhhcyBubyByZWFzb24gdG8gYmUgaW4gdGhpcyBmaWxlIGV4Y2VwdCB0aGF0IGFkZGluZyBuZXcgZmlsZXMgaXMgYQogICAgYml0IG9mIGEgcGFpbiAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpkaWN0OwotfSBwcm94eW9iamVjdDsKKyAgICBQeU9iamVjdCAqbWFwcGluZzsKK30gbWFwcGluZ3Byb3h5b2JqZWN0OwogCiBzdGF0aWMgUHlfc3NpemVfdAotcHJveHlfbGVuKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9sZW4obWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfU2l6ZShwcC0+ZGljdCk7CisgICAgcmV0dXJuIFB5T2JqZWN0X1NpemUocHAtPm1hcHBpbmcpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfZ2V0aXRlbShwcm94eW9iamVjdCAqcHAsIFB5T2JqZWN0ICprZXkpCittYXBwaW5ncHJveHlfZ2V0aXRlbShtYXBwaW5ncHJveHlvYmplY3QgKnBwLCBQeU9iamVjdCAqa2V5KQogewotICAgIHJldHVybiBQeU9iamVjdF9HZXRJdGVtKHBwLT5kaWN0LCBrZXkpOworICAgIHJldHVybiBQeU9iamVjdF9HZXRJdGVtKHBwLT5tYXBwaW5nLCBrZXkpOwogfQogCi1zdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBwcm94eV9hc19tYXBwaW5nID0gewotICAgIChsZW5mdW5jKXByb3h5X2xlbiwgICAgICAgICAgICAgICAgICAgICAgICAgLyogbXBfbGVuZ3RoICovCi0gICAgKGJpbmFyeWZ1bmMpcHJveHlfZ2V0aXRlbSwgICAgICAgICAgICAgICAgICAvKiBtcF9zdWJzY3JpcHQgKi8KK3N0YXRpYyBQeU1hcHBpbmdNZXRob2RzIG1hcHBpbmdwcm94eV9hc19tYXBwaW5nID0geworICAgIChsZW5mdW5jKW1hcHBpbmdwcm94eV9sZW4sICAgICAgICAgICAgICAgICAgLyogbXBfbGVuZ3RoICovCisgICAgKGJpbmFyeWZ1bmMpbWFwcGluZ3Byb3h5X2dldGl0ZW0sICAgICAgICAgICAvKiBtcF9zdWJzY3JpcHQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1wX2Fzc19zdWJzY3JpcHQgKi8KIH07CiAKIHN0YXRpYyBpbnQKLXByb3h5X2NvbnRhaW5zKHByb3h5b2JqZWN0ICpwcCwgUHlPYmplY3QgKmtleSkKK21hcHBpbmdwcm94eV9jb250YWlucyhtYXBwaW5ncHJveHlvYmplY3QgKnBwLCBQeU9iamVjdCAqa2V5KQogewotICAgIHJldHVybiBQeURpY3RfQ29udGFpbnMocHAtPmRpY3QsIGtleSk7CisgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KHBwLT5tYXBwaW5nKSkKKyAgICAgICAgcmV0dXJuIFB5RGljdF9Db250YWlucyhwcC0+bWFwcGluZywga2V5KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeVNlcXVlbmNlX0NvbnRhaW5zKHBwLT5tYXBwaW5nLCBrZXkpOwogfQogCi1zdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgcHJveHlfYXNfc2VxdWVuY2UgPSB7CitzdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgbWFwcGluZ3Byb3h5X2FzX3NlcXVlbmNlID0gewogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfbGVuZ3RoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9jb25jYXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3JlcGVhdCAqLwpAQCAtNzMyLDE0NyArNzgxLDE5OSBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3Ffc2xpY2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2Fzc19pdGVtICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9hc3Nfc2xpY2UgKi8KLSAgICAob2Jqb2JqcHJvYylwcm94eV9jb250YWlucywgICAgICAgICAgICAgICAgIC8qIHNxX2NvbnRhaW5zICovCisgICAgKG9iam9ianByb2MpbWFwcGluZ3Byb3h5X2NvbnRhaW5zLCAgICAgICAgICAgICAgICAgLyogc3FfY29udGFpbnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2lucGxhY2VfY29uY2F0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9pbnBsYWNlX3JlcGVhdCAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X2dldChwcm94eW9iamVjdCAqcHAsIFB5T2JqZWN0ICphcmdzKQorbWFwcGluZ3Byb3h5X2dldChtYXBwaW5ncHJveHlvYmplY3QgKnBwLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqa2V5LCAqZGVmID0gUHlfTm9uZTsKKyAgICBfUHlfSURFTlRJRklFUihnZXQpOwogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZ2V0IiwgMSwgMiwgJmtleSwgJmRlZikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHBwLT5kaWN0LCAiZ2V0IiwgIihPTykiLCBrZXksIGRlZik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHAtPm1hcHBpbmcsICZQeUlkX2dldCwgIihPTykiLCBrZXksIGRlZik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9rZXlzKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9rZXlzKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QocHAtPmRpY3QsICJrZXlzIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoa2V5cyk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHAtPm1hcHBpbmcsICZQeUlkX2tleXMsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfdmFsdWVzKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV92YWx1ZXMobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChwcC0+ZGljdCwgInZhbHVlcyIsIE5VTEwpOworICAgIF9QeV9JREVOVElGSUVSKHZhbHVlcyk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHAtPm1hcHBpbmcsICZQeUlkX3ZhbHVlcywgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9pdGVtcyhwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfaXRlbXMobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChwcC0+ZGljdCwgIml0ZW1zIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBwLT5tYXBwaW5nLCAmUHlJZF9pdGVtcywgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9jb3B5KHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9jb3B5KG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QocHAtPmRpY3QsICJjb3B5IiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoY29weSk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHAtPm1hcHBpbmcsICZQeUlkX2NvcHksIE5VTEwpOwogfQogCi1zdGF0aWMgUHlNZXRob2REZWYgcHJveHlfbWV0aG9kc1tdID0gewotICAgIHsiZ2V0IiwgICAgICAgKFB5Q0Z1bmN0aW9uKXByb3h5X2dldCwgICAgICAgIE1FVEhfVkFSQVJHUywKKy8qIFdBUk5JTkc6IG1hcHBpbmdwcm94eSBtZXRob2RzIG11c3Qgbm90IGdpdmUgYWNjZXNzCisgICAgICAgICAgICB0byB0aGUgdW5kZXJseWluZyBtYXBwaW5nICovCisKK3N0YXRpYyBQeU1ldGhvZERlZiBtYXBwaW5ncHJveHlfbWV0aG9kc1tdID0geworICAgIHsiZ2V0IiwgICAgICAgKFB5Q0Z1bmN0aW9uKW1hcHBpbmdwcm94eV9nZXQsICAgICAgICBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5RG9jX1NUUigiRC5nZXQoa1ssZF0pIC0+IERba10gaWYgayBpbiBELCBlbHNlIGQuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgZCBkZWZhdWx0cyB0byBOb25lLiIpfSwKLSAgICB7ImtleXMiLCAgICAgIChQeUNGdW5jdGlvbilwcm94eV9rZXlzLCAgICAgICBNRVRIX05PQVJHUywKKyAgICAgICAgICAgICAgICIgIGQgZGVmYXVsdHMgdG8gTm9uZS4iKX0sCisgICAgeyJrZXlzIiwgICAgICAoUHlDRnVuY3Rpb24pbWFwcGluZ3Byb3h5X2tleXMsICAgICAgIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIkQua2V5cygpIC0+IGxpc3Qgb2YgRCdzIGtleXMiKX0sCi0gICAgeyJ2YWx1ZXMiLCAgICAoUHlDRnVuY3Rpb24pcHJveHlfdmFsdWVzLCAgICAgTUVUSF9OT0FSR1MsCisgICAgeyJ2YWx1ZXMiLCAgICAoUHlDRnVuY3Rpb24pbWFwcGluZ3Byb3h5X3ZhbHVlcywgICAgIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIkQudmFsdWVzKCkgLT4gbGlzdCBvZiBEJ3MgdmFsdWVzIil9LAotICAgIHsiaXRlbXMiLCAgICAgKFB5Q0Z1bmN0aW9uKXByb3h5X2l0ZW1zLCAgICAgIE1FVEhfTk9BUkdTLAorICAgIHsiaXRlbXMiLCAgICAgKFB5Q0Z1bmN0aW9uKW1hcHBpbmdwcm94eV9pdGVtcywgICAgICBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJELml0ZW1zKCkgLT4gbGlzdCBvZiBEJ3MgKGtleSwgdmFsdWUpIHBhaXJzLCBhcyAyLXR1cGxlcyIpfSwKLSAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbilwcm94eV9jb3B5LCAgICAgICBNRVRIX05PQVJHUywKKyAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbiltYXBwaW5ncHJveHlfY29weSwgICAgICAgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiRC5jb3B5KCkgLT4gYSBzaGFsbG93IGNvcHkgb2YgRCIpfSwKICAgICB7MH0KIH07CiAKIHN0YXRpYyB2b2lkCi1wcm94eV9kZWFsbG9jKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9kZWFsbG9jKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0socHApOwotICAgIFB5X0RFQ1JFRihwcC0+ZGljdCk7CisgICAgUHlfREVDUkVGKHBwLT5tYXBwaW5nKTsKICAgICBQeU9iamVjdF9HQ19EZWwocHApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfZ2V0aXRlcihwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfZ2V0aXRlcihtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9HZXRJdGVyKHBwLT5kaWN0KTsKKyAgICByZXR1cm4gUHlPYmplY3RfR2V0SXRlcihwcC0+bWFwcGluZyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9zdHIocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X3N0cihtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9TdHIocHAtPmRpY3QpOworICAgIHJldHVybiBQeU9iamVjdF9TdHIocHAtPm1hcHBpbmcpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfcmVwcihwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfcmVwcihtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZGljdF9wcm94eSglUikiLCBwcC0+ZGljdCk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJtYXBwaW5ncHJveHkoJVIpIiwgcHAtPm1hcHBpbmcpOwogfQogCiBzdGF0aWMgaW50Ci1wcm94eV90cmF2ZXJzZShQeU9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCittYXBwaW5ncHJveHlfdHJhdmVyc2UoUHlPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIHByb3h5b2JqZWN0ICpwcCA9IChwcm94eW9iamVjdCAqKXNlbGY7Ci0gICAgUHlfVklTSVQocHAtPmRpY3QpOworICAgIG1hcHBpbmdwcm94eW9iamVjdCAqcHAgPSAobWFwcGluZ3Byb3h5b2JqZWN0ICopc2VsZjsKKyAgICBQeV9WSVNJVChwcC0+bWFwcGluZyk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9yaWNoY29tcGFyZShwcm94eW9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKK21hcHBpbmdwcm94eV9yaWNoY29tcGFyZShtYXBwaW5ncHJveHlvYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X1JpY2hDb21wYXJlKHYtPmRpY3QsIHcsIG9wKTsKKyAgICByZXR1cm4gUHlPYmplY3RfUmljaENvbXBhcmUodi0+bWFwcGluZywgdywgb3ApOworfQorCitzdGF0aWMgaW50CittYXBwaW5ncHJveHlfY2hlY2tfbWFwcGluZyhQeU9iamVjdCAqbWFwcGluZykKK3sKKyAgICBpZiAoIVB5TWFwcGluZ19DaGVjayhtYXBwaW5nKQorICAgICAgICB8fCBQeUxpc3RfQ2hlY2sobWFwcGluZykKKyAgICAgICAgfHwgUHlUdXBsZV9DaGVjayhtYXBwaW5nKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAibWFwcGluZ3Byb3h5KCkgYXJndW1lbnQgbXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlcyIsCisgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobWFwcGluZyktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QqCittYXBwaW5ncHJveHlfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibWFwcGluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICptYXBwaW5nOworICAgIG1hcHBpbmdwcm94eW9iamVjdCAqbWFwcGluZ3Byb3h5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk86bWFwcGluZ3Byb3h5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZtYXBwaW5nKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobWFwcGluZ3Byb3h5X2NoZWNrX21hcHBpbmcobWFwcGluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbWFwcGluZ3Byb3h5ID0gUHlPYmplY3RfR0NfTmV3KG1hcHBpbmdwcm94eW9iamVjdCwgJlB5RGljdFByb3h5X1R5cGUpOworICAgIGlmIChtYXBwaW5ncHJveHkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKG1hcHBpbmcpOworICAgIG1hcHBpbmdwcm94eS0+bWFwcGluZyA9IG1hcHBpbmc7CisgICAgX1B5T2JqZWN0X0dDX1RSQUNLKG1hcHBpbmdwcm94eSk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW1hcHBpbmdwcm94eTsKIH0KIAogUHlUeXBlT2JqZWN0IFB5RGljdFByb3h5X1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKLSAgICAiZGljdF9wcm94eSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YocHJveHlvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgICJtYXBwaW5ncHJveHkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihtYXBwaW5ncHJveHlvYmplY3QpLCAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvcilwcm94eV9kZWFsbG9jLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3RvciltYXBwaW5ncHJveHlfZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIChyZXByZnVuYylwcm94eV9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIChyZXByZnVuYyltYXBwaW5ncHJveHlfcmVwciwgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCi0gICAgJnByb3h5X2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgICZwcm94eV9hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgICZtYXBwaW5ncHJveHlfYXNfc2VxdWVuY2UsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmbWFwcGluZ3Byb3h5X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KLSAgICAocmVwcmZ1bmMpcHJveHlfc3RyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChyZXByZnVuYyltYXBwaW5ncHJveHlfc3RyLCAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIHByb3h5X3RyYXZlcnNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICBtYXBwaW5ncHJveHlfdHJhdmVyc2UsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIChyaWNoY21wZnVuYylwcm94eV9yaWNoY29tcGFyZSwgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAocmljaGNtcGZ1bmMpbWFwcGluZ3Byb3h5X3JpY2hjb21wYXJlLCAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIChnZXRpdGVyZnVuYylwcm94eV9nZXRpdGVyLCAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChnZXRpdGVyZnVuYyltYXBwaW5ncHJveHlfZ2V0aXRlciwgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBwcm94eV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtYXBwaW5ncHJveHlfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgbWFwcGluZ3Byb3h5X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KIH07CiAKIFB5T2JqZWN0ICoKLVB5RGljdFByb3h5X05ldyhQeU9iamVjdCAqZGljdCkKK1B5RGljdFByb3h5X05ldyhQeU9iamVjdCAqbWFwcGluZykKIHsKLSAgICBwcm94eW9iamVjdCAqcHA7CisgICAgbWFwcGluZ3Byb3h5b2JqZWN0ICpwcDsKIAotICAgIHBwID0gUHlPYmplY3RfR0NfTmV3KHByb3h5b2JqZWN0LCAmUHlEaWN0UHJveHlfVHlwZSk7CisgICAgaWYgKG1hcHBpbmdwcm94eV9jaGVja19tYXBwaW5nKG1hcHBpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHBwID0gUHlPYmplY3RfR0NfTmV3KG1hcHBpbmdwcm94eW9iamVjdCwgJlB5RGljdFByb3h5X1R5cGUpOwogICAgIGlmIChwcCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihkaWN0KTsKLSAgICAgICAgcHAtPmRpY3QgPSBkaWN0OworICAgICAgICBQeV9JTkNSRUYobWFwcGluZyk7CisgICAgICAgIHBwLT5tYXBwaW5nID0gbWFwcGluZzsKICAgICAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKHBwKTsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXBwOwpAQCAtMTAyMCw5ICsxMTIxLDE2IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgord3JhcHBlcl9xdWFsbmFtZSh3cmFwcGVyb2JqZWN0ICp3cCkKK3sKKyAgICByZXR1cm4gZGVzY3JfZ2V0X3F1YWxuYW1lKChQeURlc2NyT2JqZWN0ICopd3AtPmRlc2NyKTsKK30KKwogc3RhdGljIFB5R2V0U2V0RGVmIHdyYXBwZXJfZ2V0c2V0c1tdID0gewogICAgIHsiX19vYmpjbGFzc19fIiwgKGdldHRlcil3cmFwcGVyX29iamNsYXNzfSwKICAgICB7Il9fbmFtZV9fIiwgKGdldHRlcil3cmFwcGVyX25hbWV9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcil3cmFwcGVyX3F1YWxuYW1lfSwKICAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKXdyYXBwZXJfZG9jfSwKICAgICB7MH0KIH07CkBAIC0xMzMyLDcgKzE0NDAsOCBAQAogCiAgICAgLyogaWYgbm8gZG9jc3RyaW5nIGdpdmVuIGFuZCB0aGUgZ2V0dGVyIGhhcyBvbmUsIHVzZSB0aGF0IG9uZSAqLwogICAgIGlmICgoZG9jID09IE5VTEwgfHwgZG9jID09IFB5X05vbmUpICYmIGdldCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpnZXRfZG9jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhnZXQsICJfX2RvY19fIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZG9jX18pOworICAgICAgICBQeU9iamVjdCAqZ2V0X2RvYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoZ2V0LCAmUHlJZF9fX2RvY19fKTsKICAgICAgICAgaWYgKGdldF9kb2MpIHsKICAgICAgICAgICAgIGlmIChQeV9UWVBFKHNlbGYpID09ICZQeVByb3BlcnR5X1R5cGUpIHsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHByb3AtPnByb3BfZG9jKTsKQEAgLTEzNDMsNyArMTQ1Miw3IEBACiAgICAgICAgICAgICAgICAgaW4gZGljdCBvZiB0aGUgc3ViY2xhc3MgaW5zdGFuY2UgaW5zdGVhZCwKICAgICAgICAgICAgICAgICBvdGhlcndpc2UgaXQgZ2V0cyBzaGFkb3dlZCBieSBfX2RvY19fIGluIHRoZQogICAgICAgICAgICAgICAgIGNsYXNzJ3MgZGljdC4gKi8KLSAgICAgICAgICAgICAgICBpbnQgZXJyID0gUHlPYmplY3RfU2V0QXR0clN0cmluZyhzZWxmLCAiX19kb2NfXyIsIGdldF9kb2MpOworICAgICAgICAgICAgICAgIGludCBlcnIgPSBfUHlPYmplY3RfU2V0QXR0cklkKHNlbGYsICZQeUlkX19fZG9jX18sIGdldF9kb2MpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihnZXRfZG9jKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyIDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTM2MSw2ICsxNDcwLDQzIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitwcm9wZXJ0eV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18ocHJvcGVydHlvYmplY3QgKnByb3AsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgaW50IHJlcyA9IF9QeU9iamVjdF9Jc0Fic3RyYWN0KHByb3AtPnByb3BfZ2V0KTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorCisgICAgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3QocHJvcC0+cHJvcF9zZXQpOworICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHJlcykgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisKKyAgICByZXMgPSBfUHlPYmplY3RfSXNBYnN0cmFjdChwcm9wLT5wcm9wX2RlbCk7CisgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAocmVzKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBQeV9SRVRVUk5fRkFMU0U7Cit9CisKK3N0YXRpYyBQeUdldFNldERlZiBwcm9wZXJ0eV9nZXRzZXRsaXN0W10gPSB7CisgICAgeyJfX2lzYWJzdHJhY3RtZXRob2RfXyIsCisgICAgIChnZXR0ZXIpcHJvcGVydHlfZ2V0X19faXNhYnN0cmFjdG1ldGhvZF9fLCBOVUxMLAorICAgICBOVUxMLAorICAgICBOVUxMfSwKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihwcm9wZXJ0eV9kb2MsCiAicHJvcGVydHkoZmdldD1Ob25lLCBmc2V0PU5vbmUsIGZkZWw9Tm9uZSwgZG9jPU5vbmUpIC0+IHByb3BlcnR5IGF0dHJpYnV0ZVxuIgogIlxuIgpAQCAtMTQyNiw3ICsxNTcyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgcHJvcGVydHlfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgcHJvcGVydHlfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBwcm9wZXJ0eV9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIHByb3BlcnR5X2Rlc2NyX2dldCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3Rub3Rlcy50eHQgYi9PYmplY3RzL2RpY3Rub3Rlcy50eHQKaW5kZXggZDNhYTc3NC4uZjg5NzIwYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kaWN0bm90ZXMudHh0CisrKyBiL09iamVjdHMvZGljdG5vdGVzLnR4dApAQCAtMSw3ICsxLDYgQEAKLU5PVEVTIE9OIE9QVElNSVpJTkcgRElDVElPTkFSSUVTCitOT1RFUyBPTiBESUNUSU9OQVJJRVMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLQogUHJpbmNpcGFsIFVzZSBDYXNlcyBmb3IgRGljdGlvbmFyaWVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjEsNyArMjAsNyBAQAogCiBCdWlsdGlucwogICAgIEZyZXF1ZW50IHJlYWRzLiAgQWxtb3N0IG5ldmVyIHdyaXR0ZW4uCi0gICAgU2l6ZSAxMjYgaW50ZXJuZWQgc3RyaW5ncyAoYXMgb2YgUHkyLjNiMSkuCisgICAgQWJvdXQgMTUwIGludGVybmVkIHN0cmluZ3MgKGFzIG9mIFB5My4zKS4KICAgICBBIGZldyBrZXlzIGFyZSBhY2Nlc3NlZCBtdWNoIG1vcmUgZnJlcXVlbnRseSB0aGFuIG90aGVycy4KIAogVW5pcXVpZmljYXRpb24KQEAgLTU5LDU1ICs1OCwyMCBAQAogICAgIENoYXJhY3Rlcml6ZWQgYnkgZGVsZXRpb25zIGludGVyc3BlcnNlZCB3aXRoIGFkZHMgYW5kIHJlcGxhY2VtZW50cy4KICAgICBQZXJmb3JtYW5jZSBiZW5lZml0cyBncmVhdGx5IGZyb20gdGhlIHJlLXVzZSBvZiBkdW1teSBlbnRyaWVzLgogCitEYXRhIExheW91dAorLS0tLS0tLS0tLS0KIAotRGF0YSBMYXlvdXQgKGFzc3VtaW5nIGEgMzItYml0IGJveCB3aXRoIDY0IGJ5dGVzIHBlciBjYWNoZSBsaW5lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TbWFsbGRpY3RzICg4IGVudHJpZXMpIGFyZSBhdHRhY2hlZCB0byB0aGUgZGljdG9iamVjdCBzdHJ1Y3R1cmUKLWFuZCB0aGUgd2hvbGUgZ3JvdXAgbmVhcmx5IGZpbGxzIHR3byBjb25zZWN1dGl2ZSBjYWNoZSBsaW5lcy4KLQotTGFyZ2VyIGRpY3RzIHVzZSB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgZGljdG9iamVjdCBzdHJ1Y3R1cmUgKG9uZSBjYWNoZQotbGluZSkgYW5kIGEgc2VwYXJhdGUsIGNvbnRpbnVvdXMgYmxvY2sgb2YgZW50cmllcyAoYXQgMTIgYnl0ZXMgZWFjaAotZm9yIGEgdG90YWwgb2YgNS4zMzMgZW50cmllcyBwZXIgY2FjaGUgbGluZSkuCitEaWN0aW9uYXJpZXMgYXJlIGNvbXBvc2VkIG9mIDMgY29tcG9uZW50czoKK1RoZSBkaWN0b2JqZWN0IHN0cnVjdCBpdHNlbGYKK0EgZGljdC1rZXlzIG9iamVjdCAoa2V5cyAmIGhhc2hlcykKK0EgdmFsdWVzIGFycmF5CiAKIAogVHVuYWJsZSBEaWN0aW9uYXJ5IFBhcmFtZXRlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSogUHlEaWN0X01JTlNJWkUuICBDdXJyZW50bHkgc2V0IHRvIDguCi0gICAgTXVzdCBiZSBhIHBvd2VyIG9mIHR3by4gIE5ldyBkaWN0cyBoYXZlIHRvIHplcm8tb3V0IGV2ZXJ5IGNlbGwuCi0gICAgRWFjaCBhZGRpdGlvbmFsIDggY29uc3VtZXMgMS41IGNhY2hlIGxpbmVzLiAgSW5jcmVhc2luZyBpbXByb3ZlcwotICAgIHRoZSBzcGFyc2VuZXNzIG9mIHNtYWxsIGRpY3Rpb25hcmllcyBidXQgY29zdHMgdGltZSB0byByZWFkIGluCi0gICAgdGhlIGFkZGl0aW9uYWwgY2FjaGUgbGluZXMgaWYgdGhleSBhcmUgbm90IGFscmVhZHkgaW4gY2FjaGUuCi0gICAgVGhhdCBjYXNlIGlzIGNvbW1vbiB3aGVuIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQuCi0KLSogTWF4aW11bSBkaWN0aW9uYXJ5IGxvYWQgaW4gUHlEaWN0X1NldEl0ZW0uICBDdXJyZW50bHkgc2V0IHRvIDIvMy4KLSAgICBJbmNyZWFzaW5nIHRoaXMgcmF0aW8gbWFrZXMgZGljdGlvbmFyaWVzIG1vcmUgZGVuc2UgcmVzdWx0aW5nCi0gICAgaW4gbW9yZSBjb2xsaXNpb25zLiAgRGVjcmVhc2luZyBpdCBpbXByb3ZlcyBzcGFyc2VuZXNzIGF0IHRoZQotICAgIGV4cGVuc2Ugb2Ygc3ByZWFkaW5nIGVudHJpZXMgb3ZlciBtb3JlIGNhY2hlIGxpbmVzIGFuZCBhdCB0aGUKLSAgICBjb3N0IG9mIHRvdGFsIG1lbW9yeSBjb25zdW1lZC4KLQotICAgIFRoZSBsb2FkIHRlc3Qgb2NjdXJzIGluIGhpZ2hseSB0aW1lIHNlbnNpdGl2ZSBjb2RlLiAgRWZmb3J0cwotICAgIHRvIG1ha2UgdGhlIHRlc3QgbW9yZSBjb21wbGV4IChmb3IgZXhhbXBsZSwgdmFyeWluZyB0aGUgbG9hZAotICAgIGZvciBkaWZmZXJlbnQgc2l6ZXMpIGhhdmUgZGVncmFkZWQgcGVyZm9ybWFuY2UuCi0KLSogR3Jvd3RoIHJhdGUgdXBvbiBoaXR0aW5nIG1heGltdW0gbG9hZC4gIEN1cnJlbnRseSBzZXQgdG8gKjIuCi0gICAgUmFpc2luZyB0aGlzIHRvICo0IHJlc3VsdHMgaW4gaGFsZiB0aGUgbnVtYmVyIG9mIHJlc2l6ZXMsCi0gICAgbGVzcyBlZmZvcnQgdG8gcmVzaXplLCBiZXR0ZXIgc3BhcnNlbmVzcyBmb3Igc29tZSAoYnV0IG5vdAotICAgIGFsbCBkaWN0IHNpemVzKSwgYW5kIHBvdGVudGlhbGx5IGRvdWJsZXMgbWVtb3J5IGNvbnN1bXB0aW9uCi0gICAgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIHRoZSBkaWN0aW9uYXJ5LiAgU2V0dGluZyB0byAqNAotICAgIGVsaW1pbmF0ZXMgZXZlcnkgb3RoZXIgcmVzaXplIHN0ZXAuCi0KLSogTWF4aW11bSBzcGFyc2VuZXNzIChtaW5pbXVtIGRpY3Rpb25hcnkgbG9hZCkuICBXaGF0IHBlcmNlbnRhZ2UKLSAgICBvZiBlbnRyaWVzIGNhbiBiZSB1bnVzZWQgYmVmb3JlIHRoZSBkaWN0aW9uYXJ5IHNocmlua3MgdG8KLSAgICBmcmVlIHVwIG1lbW9yeSBhbmQgc3BlZWQgdXAgaXRlcmF0aW9uPyAgKFRoZSBjdXJyZW50IENQeXRob24KLSAgICBjb2RlIGRvZXMgbm90IHJlcHJlc2VudCB0aGlzIHBhcmFtZXRlciBkaXJlY3RseS4pCi0KLSogU2hyaW5rYWdlIHJhdGUgdXBvbiBleGNlZWRpbmcgbWF4aW11bSBzcGFyc2VuZXNzLiAgVGhlIGN1cnJlbnQKLSAgICBDUHl0aG9uIGNvZGUgbmV2ZXIgZXZlbiBjaGVja3Mgc3BhcnNlbmVzcyB3aGVuIGRlbGV0aW5nIGEKLSAgICBrZXkuICBXaGVuIGEgbmV3IGtleSBpcyBhZGRlZCwgaXQgcmVzaXplcyBiYXNlZCBvbiB0aGUgbnVtYmVyCi0gICAgb2YgYWN0aXZlIGtleXMsIHNvIHRoYXQgdGhlIGFkZGl0aW9uIG1heSB0cmlnZ2VyIHNocmlua2FnZQotICAgIHJhdGhlciB0aGFuIGdyb3d0aC4KK1NlZSBjb21tZW50cyBmb3IgUHlEaWN0X01JTlNJWkVfU1BMSVQsIFB5RGljdF9NSU5TSVpFX0NPTUJJTkVELAorVVNBQkxFX0ZSQUNUSU9OIGFuZCBHUk9XVEhfUkFURSBpbiBkaWN0b2JqZWN0LmMKIAogVHVuZS11cHMgc2hvdWxkIGJlIG1lYXN1cmVkIGFjcm9zcyBhIGJyb2FkIHJhbmdlIG9mIGFwcGxpY2F0aW9ucyBhbmQKIHVzZSBjYXNlcy4gIEEgY2hhbmdlIHRvIGFueSBwYXJhbWV0ZXIgd2lsbCBoZWxwIGluIHNvbWUgc2l0dWF0aW9ucyBhbmQKQEAgLTEyNiw4ICs5MCw4IEBACiBBbHNvLCBldmVyeSBkaWN0aW9uYXJ5IGl0ZXJhdGVzIGF0IGxlYXN0IHR3aWNlLCBvbmNlIGZvciB0aGUgbWVtc2V0KCkKIHdoZW4gaXQgaXMgY3JlYXRlZCBhbmQgb25jZSBieSBkZWFsbG9jKCkuCiAKLURpY3Rpb25hcnkgb3BlcmF0aW9ucyBpbnZvbHZpbmcgb25seSBhIHNpbmdsZSBrZXkgY2FuIGJlIE8oMSkgdW5sZXNzIAotcmVzaXppbmcgaXMgcG9zc2libGUuICBCeSBjaGVja2luZyBmb3IgYSByZXNpemUgb25seSB3aGVuIHRoZSAKK0RpY3Rpb25hcnkgb3BlcmF0aW9ucyBpbnZvbHZpbmcgb25seSBhIHNpbmdsZSBrZXkgY2FuIGJlIE8oMSkgdW5sZXNzCityZXNpemluZyBpcyBwb3NzaWJsZS4gIEJ5IGNoZWNraW5nIGZvciBhIHJlc2l6ZSBvbmx5IHdoZW4gdGhlCiBkaWN0aW9uYXJ5IGNhbiBncm93IChhbmQgbWF5ICpyZXF1aXJlKiByZXNpemluZyksIG90aGVyIG9wZXJhdGlvbnMKIHJlbWFpbiBPKDEpLCBhbmQgdGhlIG9kZHMgb2YgcmVzaXplIHRocmFzaGluZyBvciBtZW1vcnkgZnJhZ21lbnRhdGlvbgogYXJlIHJlZHVjZWQuIEluIHBhcnRpY3VsYXIsIGFuIGFsZ29yaXRobSB0aGF0IGVtcHRpZXMgYSBkaWN0aW9uYXJ5CkBAIC0xMzUsMTM2ICs5OSw1MSBAQAogbm90IGJlIG5lY2Vzc2FyeSBhdCBhbGwgYmVjYXVzZSB0aGUgZGljdGlvbmFyeSBpcyBldmVudHVhbGx5CiBkaXNjYXJkZWQgZW50aXJlbHkuCiAKK1RoZSBrZXkgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGltcGxlbWVudGF0aW9uIGFuZCBlYXJsaWVyIHZlcnNpb25zIGFyZToKKyAgICAxLiBUaGUgdGFibGUgY2FuIGJlIHNwbGl0IGludG8gdHdvIHBhcnRzLCB0aGUga2V5cyBhbmQgdGhlIHZhbHVlcy4KKworICAgIDIuIFRoZXJlIGlzIGFuIGFkZGl0aW9uYWwga2V5LXZhbHVlIGNvbWJpbmF0aW9uOiAoa2V5LCBOVUxMKS4KKyAgICAgICBVbmxpa2UgKDxkdW1teT4sIE5VTEwpIHdoaWNoIHJlcHJlc2VudHMgYSBkZWxldGVkIHZhbHVlLCAoa2V5LCBOVUxMKQorICAgICAgIHJlcHJlc2VudGVkIGEgeWV0IHRvIGJlIGluc2VydGVkIHZhbHVlLiBUaGlzIGNvbWJpbmF0aW9uIGNhbiBvbmx5IG9jY3VyCisgICAgICAgd2hlbiB0aGUgdGFibGUgaXMgc3BsaXQuCisKKyAgICAzLiBObyBzbWFsbCB0YWJsZSBlbWJlZGRlZCBpbiB0aGUgZGljdCwKKyAgICAgICBhcyB0aGlzIHdvdWxkIG1ha2Ugc2hhcmluZyBvZiBrZXktdGFibGVzIGltcG9zc2libGUuCisKKworVGhlc2UgY2hhbmdlcyBoYXZlIHRoZSBmb2xsb3dpbmcgY29uc2VxdWVuY2VzLgorICAgMS4gR2VuZXJhbCBkaWN0aW9uYXJpZXMgYXJlIHNsaWdodGx5IGxhcmdlci4KKworICAgMi4gQWxsIG9iamVjdCBkaWN0aW9uYXJpZXMgb2YgYSBzaW5nbGUgY2xhc3MgY2FuIHNoYXJlIGEgc2luZ2xlIGtleS10YWJsZSwKKyAgICAgIHNhdmluZyBhYm91dCA2MCUgbWVtb3J5IGZvciBzdWNoIGNhc2VzLgogCiBSZXN1bHRzIG9mIENhY2hlIExvY2FsaXR5IEV4cGVyaW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XaGVuIGFuIGVudHJ5IGlzIHJldHJpZXZlZCBmcm9tIG1lbW9yeSwgNC4zMzMgYWRqYWNlbnQgZW50cmllcyBhcmUgYWxzbwotcmV0cmlldmVkIGludG8gYSBjYWNoZSBsaW5lLiAgU2luY2UgYWNjZXNzaW5nIGl0ZW1zIGluIGNhY2hlIGlzICptdWNoKgotY2hlYXBlciB0aGFuIGEgY2FjaGUgbWlzcywgYW4gZW50aWNpbmcgaWRlYSBpcyB0byBwcm9iZSB0aGUgYWRqYWNlbnQKLWVudHJpZXMgYXMgYSBmaXJzdCBzdGVwIGluIGNvbGxpc2lvbiByZXNvbHV0aW9uLiAgVW5mb3J0dW5hdGVseSwgdGhlCi1pbnRyb2R1Y3Rpb24gb2YgYW55IHJlZ3VsYXJpdHkgaW50byBjb2xsaXNpb24gc2VhcmNoZXMgcmVzdWx0cyBpbiBtb3JlCi1jb2xsaXNpb25zIHRoYW4gdGhlIGN1cnJlbnQgcmFuZG9tIGNoYWluaW5nIGFwcHJvYWNoLgorRXhwZXJpbWVudHMgb24gYW4gZWFybGllciBkZXNpZ24gb2YgZGljdGlvbmFyeSwgaW4gd2hpY2ggYWxsIHRhYmxlcyB3ZXJlCitjb21iaW5lZCwgc2hvd2VkIHRoZSBmb2xsb3dpbmc6CiAKLUV4cGxvaXRpbmcgY2FjaGUgbG9jYWxpdHkgYXQgdGhlIGV4cGVuc2Ugb2YgYWRkaXRpb25hbCBjb2xsaXNpb25zIGZhaWxzCi10byBwYXlvZmYgd2hlbiB0aGUgZW50cmllcyBhcmUgYWxyZWFkeSBsb2FkZWQgaW4gY2FjaGUgKHRoZSBleHBlbnNlCi1pcyBwYWlkIHdpdGggbm8gY29tcGVuc2F0aW5nIGJlbmVmaXQpLiAgVGhpcyBvY2N1cnMgaW4gc21hbGwgZGljdGlvbmFyaWVzCi13aGVyZSB0aGUgd2hvbGUgZGljdGlvbmFyeSBmaXRzIGludG8gYSBwYWlyIG9mIGNhY2hlIGxpbmVzLiAgSXQgYWxzbwotb2NjdXJzIGZyZXF1ZW50bHkgaW4gbGFyZ2UgZGljdGlvbmFyaWVzIHdoaWNoIGhhdmUgYSBjb21tb24gYWNjZXNzIHBhdHRlcm4KLXdoZXJlIHNvbWUga2V5cyBhcmUgYWNjZXNzZWQgbXVjaCBtb3JlIGZyZXF1ZW50bHkgdGhhbiBvdGhlcnMuICBUaGUKLW1vcmUgcG9wdWxhciBlbnRyaWVzICphbmQqIHRoZWlyIGNvbGxpc2lvbiBjaGFpbnMgdGVuZCB0byByZW1haW4gaW4gY2FjaGUuCisgIFdoZW4gYW4gZW50cnkgaXMgcmV0cmlldmVkIGZyb20gbWVtb3J5LCBzZXZlcmFsIGFkamFjZW50IGVudHJpZXMgYXJlIGFsc28KKyAgcmV0cmlldmVkIGludG8gYSBjYWNoZSBsaW5lLiAgU2luY2UgYWNjZXNzaW5nIGl0ZW1zIGluIGNhY2hlIGlzICptdWNoKgorICBjaGVhcGVyIHRoYW4gYSBjYWNoZSBtaXNzLCBhbiBlbnRpY2luZyBpZGVhIGlzIHRvIHByb2JlIHRoZSBhZGphY2VudAorICBlbnRyaWVzIGFzIGEgZmlyc3Qgc3RlcCBpbiBjb2xsaXNpb24gcmVzb2x1dGlvbi4gIFVuZm9ydHVuYXRlbHksIHRoZQorICBpbnRyb2R1Y3Rpb24gb2YgYW55IHJlZ3VsYXJpdHkgaW50byBjb2xsaXNpb24gc2VhcmNoZXMgcmVzdWx0cyBpbiBtb3JlCisgIGNvbGxpc2lvbnMgdGhhbiB0aGUgY3VycmVudCByYW5kb20gY2hhaW5pbmcgYXBwcm9hY2guCiAKLVRvIGV4cGxvaXQgY2FjaGUgbG9jYWxpdHksIGNoYW5nZSB0aGUgY29sbGlzaW9uIHJlc29sdXRpb24gc2VjdGlvbgotaW4gbG9va2RpY3QoKSBhbmQgbG9va2RpY3Rfc3RyaW5nKCkuICBTZXQgaV49MSBhdCB0aGUgdG9wIG9mIHRoZQotbG9vcCBhbmQgbW92ZSB0aGUgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSB0byBhbiB1bnJvbGxlZAotdmVyc2lvbiBvZiB0aGUgbG9vcC4KKyAgRXhwbG9pdGluZyBjYWNoZSBsb2NhbGl0eSBhdCB0aGUgZXhwZW5zZSBvZiBhZGRpdGlvbmFsIGNvbGxpc2lvbnMgZmFpbHMKKyAgdG8gcGF5b2ZmIHdoZW4gdGhlIGVudHJpZXMgYXJlIGFscmVhZHkgbG9hZGVkIGluIGNhY2hlICh0aGUgZXhwZW5zZQorICBpcyBwYWlkIHdpdGggbm8gY29tcGVuc2F0aW5nIGJlbmVmaXQpLiAgVGhpcyBvY2N1cnMgaW4gc21hbGwgZGljdGlvbmFyaWVzCisgIHdoZXJlIHRoZSB3aG9sZSBkaWN0aW9uYXJ5IGZpdHMgaW50byBhIHBhaXIgb2YgY2FjaGUgbGluZXMuICBJdCBhbHNvCisgIG9jY3VycyBmcmVxdWVudGx5IGluIGxhcmdlIGRpY3Rpb25hcmllcyB3aGljaCBoYXZlIGEgY29tbW9uIGFjY2VzcyBwYXR0ZXJuCisgIHdoZXJlIHNvbWUga2V5cyBhcmUgYWNjZXNzZWQgbXVjaCBtb3JlIGZyZXF1ZW50bHkgdGhhbiBvdGhlcnMuICBUaGUKKyAgbW9yZSBwb3B1bGFyIGVudHJpZXMgKmFuZCogdGhlaXIgY29sbGlzaW9uIGNoYWlucyB0ZW5kIHRvIHJlbWFpbiBpbiBjYWNoZS4KIAotVGhpcyBvcHRpbWl6YXRpb24gc3RyYXRlZ3kgY2FuIGJlIGxldmVyYWdlZCBpbiBzZXZlcmFsIHdheXM6CisgIFRvIGV4cGxvaXQgY2FjaGUgbG9jYWxpdHksIGNoYW5nZSB0aGUgY29sbGlzaW9uIHJlc29sdXRpb24gc2VjdGlvbgorICBpbiBsb29rZGljdCgpIGFuZCBsb29rZGljdF9zdHJpbmcoKS4gIFNldCBpXj0xIGF0IHRoZSB0b3Agb2YgdGhlCisgIGxvb3AgYW5kIG1vdmUgdGhlICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEgdG8gYW4gdW5yb2xsZWQKKyAgdmVyc2lvbiBvZiB0aGUgbG9vcC4KIAotKiBJZiB0aGUgZGljdGlvbmFyeSBpcyBrZXB0IHNwYXJzZSAodGhyb3VnaCB0aGUgdHVuYWJsZSBwYXJhbWV0ZXJzKSwKLXRoZW4gdGhlIG9jY3VycmVuY2Ugb2YgYWRkaXRpb25hbCBjb2xsaXNpb25zIGlzIGxlc3NlbmVkLgotCi0qIElmIGxvb2tkaWN0KCkgYW5kIGxvb2tkaWN0X3N0cmluZygpIGFyZSBzcGVjaWFsaXplZCBmb3Igc21hbGwgZGljdHMKLWFuZCBmb3IgbGFyZ2VkaWN0cywgdGhlbiB0aGUgdmVyc2lvbnMgZm9yIGxhcmdlX2RpY3RzIGNhbiBiZSBnaXZlbgotYW4gYWx0ZXJuYXRlIHNlYXJjaCBzdHJhdGVneSB3aXRob3V0IGluY3JlYXNpbmcgY29sbGlzaW9ucyBpbiBzbWFsbCBkaWN0cwotd2hpY2ggYWxyZWFkeSBoYXZlIHRoZSBtYXhpbXVtIGJlbmVmaXQgb2YgY2FjaGUgbG9jYWxpdHkuCi0KLSogSWYgdGhlIHVzZSBjYXNlIGZvciBhIGRpY3Rpb25hcnkgaXMga25vd24gdG8gaGF2ZSBhIHJhbmRvbSBrZXkKLWFjY2VzcyBwYXR0ZXJuIChhcyBvcHBvc2VkIHRvIGEgbW9yZSBjb21tb24gcGF0dGVybiB3aXRoIGEgWmlwZidzIGxhdwotZGlzdHJpYnV0aW9uKSwgdGhlbiB0aGVyZSB3aWxsIGJlIG1vcmUgYmVuZWZpdCBmb3IgbGFyZ2UgZGljdGlvbmFyaWVzCi1iZWNhdXNlIGFueSBnaXZlbiBrZXkgaXMgbm8gbW9yZSBsaWtlbHkgdGhhbiBhbm90aGVyIHRvIGFscmVhZHkgYmUKLWluIGNhY2hlLgotCi0qIEluIHVzZSBjYXNlcyB3aXRoIHBhaXJlZCBhY2Nlc3NlcyB0byB0aGUgc2FtZSBrZXksIHRoZSBzZWNvbmQgYWNjZXNzCi1pcyBhbHdheXMgaW4gY2FjaGUgYW5kIGdldHMgbm8gYmVuZWZpdCBmcm9tIGVmZm9ydHMgdG8gZnVydGhlciBpbXByb3ZlCi1jYWNoZSBsb2NhbGl0eS4KLQotT3B0aW1pemluZyB0aGUgU2VhcmNoIG9mIFNtYWxsIERpY3Rpb25hcmllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1JZiBsb29rZGljdCgpIGFuZCBsb29rZGljdF9zdHJpbmcoKSBhcmUgc3BlY2lhbGl6ZWQgZm9yIHNtYWxsZXIgZGljdGlvbmFyaWVzLAotdGhlbiBhIGN1c3RvbSBzZWFyY2ggYXBwcm9hY2ggY2FuIGJlIGltcGxlbWVudGVkIHRoYXQgZXhwbG9pdHMgdGhlIHNtYWxsCi1zZWFyY2ggc3BhY2UgYW5kIGNhY2hlIGxvY2FsaXR5LgotCi0qIFRoZSBzaW1wbGVzdCBleGFtcGxlIGlzIGEgbGluZWFyIHNlYXJjaCBvZiBjb250aWd1b3VzIGVudHJpZXMuICBUaGlzIGlzCi0gIHNpbXBsZSB0byBpbXBsZW1lbnQsIGd1YXJhbnRlZWQgdG8gdGVybWluYXRlIHJhcGlkbHksIG5ldmVyIHNlYXJjaGVzCi0gIHRoZSBzYW1lIGVudHJ5IHR3aWNlLCBhbmQgcHJlY2x1ZGVzIHRoZSBuZWVkIHRvIGNoZWNrIGZvciBkdW1teSBlbnRyaWVzLgotCi0qIEEgbW9yZSBhZHZhbmNlZCBleGFtcGxlIGlzIGEgc2VsZi1vcmdhbml6aW5nIHNlYXJjaCBzbyB0aGF0IHRoZSBtb3N0Ci0gIGZyZXF1ZW50bHkgYWNjZXNzZWQgZW50cmllcyBnZXQgcHJvYmVkIGZpcnN0LiAgVGhlIG9yZ2FuaXphdGlvbgotICBhZGFwdHMgaWYgdGhlIGFjY2VzcyBwYXR0ZXJuIGNoYW5nZXMgb3ZlciB0aW1lLiAgVHJlYXBzIGFyZSBpZGVhbGx5Ci0gIHN1aXRlZCBmb3Igc2VsZi1vcmdhbml6YXRpb24gd2l0aCB0aGUgbW9zdCBjb21tb24gZW50cmllcyBhdCB0aGUKLSAgdG9wIG9mIHRoZSBoZWFwIGFuZCBhIHJhcGlkIGJpbmFyeSBzZWFyY2ggcGF0dGVybi4gIE1vc3QgcHJvYmVzIGFuZAotICByZXN1bHRzIGFyZSBhbGwgbG9jYXRlZCBhdCB0aGUgdG9wIG9mIHRoZSB0cmVlIGFsbG93aW5nIHRoZW0gYWxsIHRvCi0gIGJlIGxvY2F0ZWQgaW4gb25lIG9yIHR3byBjYWNoZSBsaW5lcy4KLQotKiBBbHNvLCBzbWFsbCBkaWN0aW9uYXJpZXMgbWF5IGJlIG1hZGUgbW9yZSBkZW5zZSwgcGVyaGFwcyBmaWxsaW5nIGFsbAotICBlaWdodCBjZWxscyB0byB0YWtlIHRoZSBtYXhpbXVtIGFkdmFudGFnZSBvZiB0d28gY2FjaGUgbGluZXMuCitGb3Igc3BsaXQgdGFibGVzLCB0aGUgYWJvdmUgd2lsbCBhcHBseSB0byB0aGUga2V5cywgYnV0IHRoZSB2YWx1ZSB3aWxsCithbHdheXMgYmUgaW4gYSBkaWZmZXJlbnQgY2FjaGUgbGluZSBmcm9tIHRoZSBrZXkuCiAKIAotU3RyYXRlZ3kgUGF0dGVybgotLS0tLS0tLS0tLS0tLS0tLQotCi1Db25zaWRlciBhbGxvd2luZyB0aGUgdXNlciB0byBzZXQgdGhlIHR1bmFibGUgcGFyYW1ldGVycyBvciB0byBzZWxlY3QgYQotcGFydGljdWxhciBzZWFyY2ggbWV0aG9kLiAgU2luY2Ugc29tZSBkaWN0aW9uYXJ5IHVzZSBjYXNlcyBoYXZlIGtub3duCi1zaXplcyBhbmQgYWNjZXNzIHBhdHRlcm5zLCB0aGUgdXNlciBtYXkgYmUgYWJsZSB0byBwcm92aWRlIHVzZWZ1bCBoaW50cy4KLQotMSkgRm9yIGV4YW1wbGUsIGlmIG1lbWJlcnNoaXAgdGVzdGluZyBvciBsb29rdXBzIGRvbWluYXRlIHJ1bnRpbWUgYW5kIG1lbW9yeQotICAgaXMgbm90IGF0IGEgcHJlbWl1bSwgdGhlIHVzZXIgbWF5IGJlbmVmaXQgZnJvbSBzZXR0aW5nIHRoZSBtYXhpbXVtIGxvYWQKLSAgIHJhdGlvIGF0IDUlIG9yIDEwJSBpbnN0ZWFkIG9mIHRoZSB1c3VhbCA2Ni43JS4gIFRoaXMgd2lsbCBzaGFycGx5Ci0gICBjdXJ0YWlsIHRoZSBudW1iZXIgb2YgY29sbGlzaW9ucyBidXQgd2lsbCBpbmNyZWFzZSBpdGVyYXRpb24gdGltZS4KLSAgIFRoZSBidWlsdGluIG5hbWVzcGFjZSBpcyBhIHByaW1lIGV4YW1wbGUgb2YgYSBkaWN0aW9uYXJ5IHRoYXQgY2FuCi0gICBiZW5lZml0IGZyb20gYmVpbmcgaGlnaGx5IHNwYXJzZS4KLQotMikgRGljdGlvbmFyeSBjcmVhdGlvbiB0aW1lIGNhbiBiZSBzaG9ydGVuZWQgaW4gY2FzZXMgd2hlcmUgdGhlIHVsdGltYXRlCi0gICBzaXplIG9mIHRoZSBkaWN0aW9uYXJ5IGlzIGtub3duIGluIGFkdmFuY2UuICBUaGUgZGljdGlvbmFyeSBjYW4gYmUKLSAgIHByZS1zaXplZCBzbyB0aGF0IG5vIHJlc2l6ZSBvcGVyYXRpb25zIGFyZSByZXF1aXJlZCBkdXJpbmcgY3JlYXRpb24uCi0gICBOb3Qgb25seSBkb2VzIHRoaXMgc2F2ZSByZXNpemVzLCBidXQgdGhlIGtleSBpbnNlcnRpb24gd2lsbCBnbwotICAgbW9yZSBxdWlja2x5IGJlY2F1c2UgdGhlIGZpcnN0IGhhbGYgb2YgdGhlIGtleXMgd2lsbCBiZSBpbnNlcnRlZCBpbnRvCi0gICBhIG1vcmUgc3BhcnNlIGVudmlyb25tZW50IHRoYW4gYmVmb3JlLiAgVGhlIHByZWNvbmRpdGlvbnMgZm9yIHRoaXMKLSAgIHN0cmF0ZWd5IGFyaXNlIHdoZW5ldmVyIGEgZGljdGlvbmFyeSBpcyBjcmVhdGVkIGZyb20gYSBrZXkgb3IgaXRlbQotICAgc2VxdWVuY2UgYW5kIHRoZSBudW1iZXIgb2YgKnVuaXF1ZSoga2V5cyBpcyBrbm93bi4KLQotMykgSWYgdGhlIGtleSBzcGFjZSBpcyBsYXJnZSBhbmQgdGhlIGFjY2VzcyBwYXR0ZXJuIGlzIGtub3duIHRvIGJlIHJhbmRvbSwKLSAgIHRoZW4gc2VhcmNoIHN0cmF0ZWdpZXMgZXhwbG9pdGluZyBjYWNoZSBsb2NhbGl0eSBjYW4gYmUgZnJ1aXRmdWwuCi0gICBUaGUgcHJlY29uZGl0aW9ucyBmb3IgdGhpcyBzdHJhdGVneSBhcmlzZSBpbiBzaW11bGF0aW9ucyBhbmQKLSAgIG51bWVyaWNhbCBhbmFseXNpcy4KLQotNCkgSWYgdGhlIGtleXMgYXJlIGZpeGVkIGFuZCB0aGUgYWNjZXNzIHBhdHRlcm4gc3Ryb25nbHkgZmF2b3JzIHNvbWUgb2YKLSAgIHRoZSBrZXlzLCB0aGVuIHRoZSBlbnRyaWVzIGNhbiBiZSBzdG9yZWQgY29udGlndW91c2x5IGFuZCBhY2Nlc3NlZAotICAgd2l0aCBhIGxpbmVhciBzZWFyY2ggb3IgdHJlYXAuICBUaGlzIGV4cGxvaXRzIGtub3dsZWRnZSBvZiB0aGUgZGF0YSwKLSAgIGNhY2hlIGxvY2FsaXR5LCBhbmQgYSBzaW1wbGlmaWVkIHNlYXJjaCByb3V0aW5lLiAgSXQgYWxzbyBlbGltaW5hdGVzCi0gICB0aGUgbmVlZCB0byB0ZXN0IGZvciBkdW1teSBlbnRyaWVzIG9uIGVhY2ggcHJvYmUuICBUaGUgcHJlY29uZGl0aW9ucwotICAgZm9yIHRoaXMgc3RyYXRlZ3kgYXJpc2UgaW4gc3ltYm9sIHRhYmxlcyBhbmQgaW4gdGhlIGJ1aWx0aW4gZGljdGlvbmFyeS4KLQotCi1SZWFkb25seSBEaWN0aW9uYXJpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotU29tZSBkaWN0aW9uYXJ5IHVzZSBjYXNlcyBwYXNzIHRocm91Z2ggYSBidWlsZCBzdGFnZSBhbmQgdGhlbiBtb3ZlIHRvIGEKLW1vcmUgaGVhdmlseSBleGVyY2lzZWQgbG9va3VwIHN0YWdlIHdpdGggbm8gZnVydGhlciBjaGFuZ2VzIHRvIHRoZQotZGljdGlvbmFyeS4KLQotQW4gaWRlYSB0aGF0IGVtZXJnZWQgb24gcHl0aG9uLWRldiBpcyB0byBiZSBhYmxlIHRvIGNvbnZlcnQgYSBkaWN0aW9uYXJ5Ci10byBhIHJlYWQtb25seSBzdGF0ZS4gIFRoaXMgY2FuIGhlbHAgcHJldmVudCBwcm9ncmFtbWluZyBlcnJvcnMgYW5kIGFsc28KLXByb3ZpZGUga25vd2xlZGdlIHRoYXQgY2FuIGJlIGV4cGxvaXRlZCBmb3IgbG9va3VwIG9wdGltaXphdGlvbi4KLQotVGhlIGRpY3Rpb25hcnkgY2FuIGJlIGltbWVkaWF0ZWx5IHJlYnVpbHQgKGVsaW1pbmF0aW5nIGR1bW15IGVudHJpZXMpLAotcmVzaXplZCAodG8gYW4gYXBwcm9wcmlhdGUgbGV2ZWwgb2Ygc3BhcnNlbmVzcyksIGFuZCB0aGUga2V5cyBjYW4gYmUKLWpvc3RsZWQgKHRvIG1pbmltaXplIGNvbGxpc2lvbnMpLiAgVGhlIGxvb2tkaWN0KCkgcm91dGluZSBjYW4gdGhlbgotZWxpbWluYXRlIHRoZSB0ZXN0IGZvciBkdW1teSBlbnRyaWVzIChzYXZpbmcgYWJvdXQgMS80IG9mIHRoZSB0aW1lCi1zcGVudCBpbiB0aGUgY29sbGlzaW9uIHJlc29sdXRpb24gbG9vcCkuCi0KLUFuIGFkZGl0aW9uYWwgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IGxpbmtzIGludG8gdGhlIGVtcHR5IHNwYWNlcwotc28gdGhhdCBkaWN0aW9uYXJ5IGl0ZXJhdGlvbiBjYW4gcHJvY2VlZCBpbiBsZW4oZCkgc3RlcHMgaW5zdGVhZCBvZgotKG1wLT5tYXNrICsgMSkgc3RlcHMuICBBbHRlcm5hdGl2ZWx5LCBhIHNlcGFyYXRlIHR1cGxlIG9mIGtleXMgY2FuIGJlCi1rZXB0IGp1c3QgZm9yIGl0ZXJhdGlvbi4KLQotCi1DYWNoaW5nIExvb2t1cHMKLS0tLS0tLS0tLS0tLS0tLQotVGhlIGlkZWEgaXMgdG8gZXhwbG9pdCBrZXkgYWNjZXNzIHBhdHRlcm5zIGJ5IGFudGljaXBhdGluZyBmdXR1cmUgbG9va3VwcwotYmFzZWQgb24gcHJldmlvdXMgbG9va3Vwcy4KLQotVGhlIHNpbXBsZXN0IGluY2FybmF0aW9uIGlzIHRvIHNhdmUgdGhlIG1vc3QgcmVjZW50bHkgYWNjZXNzZWQgZW50cnkuCi1UaGlzIGdpdmVzIG9wdGltYWwgcGVyZm9ybWFuY2UgZm9yIHVzZSBjYXNlcyB3aGVyZSBldmVyeSBnZXQgaXMgZm9sbG93ZWQKLWJ5IGEgc2V0IG9yIGRlbCB0byB0aGUgc2FtZSBrZXkuCmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3RvYmplY3QuYyBiL09iamVjdHMvZGljdG9iamVjdC5jCmluZGV4IDI3ZGUxMGQuLmFlZjhkMTAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGljdG9iamVjdC5jCisrKyBiL09iamVjdHMvZGljdG9iamVjdC5jCkBAIC03LDkgKzcsOTMgQEAKICAgIHR1bmluZyBkaWN0aW9uYXJpZXMsIGFuZCBzZXZlcmFsIGlkZWFzIGZvciBwb3NzaWJsZSBvcHRpbWl6YXRpb25zLgogKi8KIAorCisvKgorVGhlcmUgYXJlIGZvdXIga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgorCisxLiBVbnVzZWQuICBtZV9rZXkgPT0gbWVfdmFsdWUgPT0gTlVMTAorICAgRG9lcyBub3QgaG9sZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIgbm93IGFuZCBuZXZlciBkaWQuICBVbnVzZWQgY2FuCisgICB0cmFuc2l0aW9uIHRvIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2gKKyAgIG1lX2tleSBpcyBOVUxMLCBhbmQgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KKworMi4gQWN0aXZlLiAgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX2tleSAhPSBkdW1teSBhbmQgbWVfdmFsdWUgIT0gTlVMTAorICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IG9yCisgICBQZW5kaW5nIHVwb24ga2V5IGRlbGV0aW9uIChmb3IgY29tYmluZWQgYW5kIHNwbGl0IHRhYmxlcyByZXNwZWN0aXZlbHkpLgorICAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIG1lX3ZhbHVlICE9IE5VTEwuCisKKzMuIER1bW15LiAgbWVfa2V5ID09IGR1bW15IGFuZCBtZV92YWx1ZSA9PSBOVUxMCisgICBQcmV2aW91c2x5IGhlbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLCBidXQgdGhhdCB3YXMgZGVsZXRlZCBhbmQgYW4KKyAgIGFjdGl2ZSBwYWlyIGhhcyBub3QgeWV0IG92ZXJ3cml0dGVuIHRoZSBzbG90LiAgRHVtbXkgY2FuIHRyYW5zaXRpb24gdG8KKyAgIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBEdW1teSBzbG90cyBjYW5ub3QgYmUgbWFkZSBVbnVzZWQgYWdhaW4KKyAgIChjYW5ub3QgaGF2ZSBtZV9rZXkgc2V0IHRvIE5VTEwpLCBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mCisgICBjb2xsaXNpb24gd291bGQgaGF2ZSBubyB3YXkgdG8ga25vdyB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCisKKzQuIFBlbmRpbmcuIE5vdCB5ZXQgaW5zZXJ0ZWQgb3IgZGVsZXRlZCBmcm9tIGEgc3BsaXQtdGFibGUuCisgICBrZXkgIT0gTlVMTCwga2V5ICE9IGR1bW15IGFuZCB2YWx1ZSA9PSBOVUxMCisKK1RoZSBEaWN0T2JqZWN0IGNhbiBiZSBpbiBvbmUgb2YgdHdvIGZvcm1zLgorRWl0aGVyOgorICBBIGNvbWJpbmVkIHRhYmxlOgorICAgIG1hX3ZhbHVlcyA9PSBOVUxMLCBka19yZWZjbnQgPT0gMS4KKyAgICBWYWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbWVfdmFsdWUgZmllbGQgb2YgdGhlIFB5RGljdEtleXNPYmplY3QuCisgICAgU2xvdCBraW5kIDQgaXMgbm90IGFsbG93ZWQgaS5lLgorICAgICAgICBrZXkgIT0gTlVMTCwga2V5ICE9IGR1bW15IGFuZCB2YWx1ZSA9PSBOVUxMIGlzIGlsbGVnYWwuCitPcjoKKyAgQSBzcGxpdCB0YWJsZToKKyAgICBtYV92YWx1ZXMgIT0gTlVMTCwgZGtfcmVmY250ID49IDEKKyAgICBWYWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbWFfdmFsdWVzIGFycmF5LgorICAgIE9ubHkgc3RyaW5nICh1bmljb2RlKSBrZXlzIGFyZSBhbGxvd2VkLCBubyA8ZHVtbXk+IGtleXMgYXJlIHByZXNlbnQuCisKK05vdGU6IC5wb3BpdGVtKCkgYWJ1c2VzIHRoZSBtZV9oYXNoIGZpZWxkIG9mIGFuIFVudXNlZCBvciBEdW1teSBzbG90IHRvCitob2xkIGEgc2VhcmNoIGZpbmdlci4gIFRoZSBtZV9oYXNoIGZpZWxkIG9mIFVudXNlZCBvciBEdW1teSBzbG90cyBoYXMgbm8KK21lYW5pbmcgb3RoZXJ3aXNlLiBBcyBhIGNvbnNlcXVlbmNlIG9mIHRoaXMgcG9waXRlbSBhbHdheXMgY29udmVydHMgdGhlIGRpY3QKK3RvIHRoZSBjb21iaW5lZC10YWJsZSBmb3JtLgorKi8KKworLyogUHlEaWN0X01JTlNJWkVfU1BMSVQgaXMgdGhlIG1pbmltdW0gc2l6ZSBvZiBhIHNwbGl0IGRpY3Rpb25hcnkuCisgKiBJdCBtdXN0IGJlIGEgcG93ZXIgb2YgMiwgYW5kIGF0IGxlYXN0IDQuCisgKiBSZXNpemluZyBvZiBzcGxpdCBkaWN0aW9uYXJpZXMgaXMgdmVyeSByYXJlLCBzbyB0aGUgc2F2aW5nIG1lbW9yeSBpcyBtb3JlCisgKiBpbXBvcnRhbnQgdGhhbiB0aGUgY29zdCBvZiByZXNpemluZy4KKyAqLworI2RlZmluZSBQeURpY3RfTUlOU0laRV9TUExJVCA0CisKKy8qIFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEIGlzIHRoZSBzdGFydGluZyBzaXplIGZvciBhbnkgbmV3LCBub24tc3BsaXQgZGljdC4KKyAqIDggYWxsb3dzIGRpY3RzIHdpdGggbm8gbW9yZSB0aGFuIDUgYWN0aXZlIGVudHJpZXM7IGV4cGVyaW1lbnRzIHN1Z2dlc3RlZAorICogdGhpcyBzdWZmaWNlcyBmb3IgdGhlIG1ham9yaXR5IG9mIGRpY3RzIChjb25zaXN0aW5nIG1vc3RseSBvZiB1c3VhbGx5LXNtYWxsCisgKiBkaWN0cyBjcmVhdGVkIHRvIHBhc3Mga2V5d29yZCBhcmd1bWVudHMpLgorICogTWFraW5nIHRoaXMgOCwgcmF0aGVyIHRoYW4gNCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgcmVzaXplcyBmb3IgbW9zdAorICogZGljdGlvbmFyaWVzLCB3aXRob3V0IGFueSBzaWduaWZpY2FudCBleHRyYSBtZW1vcnkgdXNlLgorICovCisjZGVmaW5lIFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEIDgKKwogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiBtZV9rZXkuICovCisgICAgUHlfaGFzaF90IG1lX2hhc2g7CisgICAgUHlPYmplY3QgKm1lX2tleTsKKyAgICBQeU9iamVjdCAqbWVfdmFsdWU7IC8qIFRoaXMgZmllbGQgaXMgb25seSBtZWFuaW5nZnVsIGZvciBjb21iaW5lZCB0YWJsZXMgKi8KK30gUHlEaWN0S2V5RW50cnk7CisKK3R5cGVkZWYgUHlEaWN0S2V5RW50cnkgKigqZGljdF9sb29rdXBfZnVuYykKKyhQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CisKK3N0cnVjdCBfZGljdGtleXNvYmplY3QgeworICAgIFB5X3NzaXplX3QgZGtfcmVmY250OworICAgIFB5X3NzaXplX3QgZGtfc2l6ZTsKKyAgICBkaWN0X2xvb2t1cF9mdW5jIGRrX2xvb2t1cDsKKyAgICBQeV9zc2l6ZV90IGRrX3VzYWJsZTsKKyAgICBQeURpY3RLZXlFbnRyeSBka19lbnRyaWVzWzFdOworfTsKKworCisvKgorVG8gZW5zdXJlIHRoZSBsb29rdXAgYWxnb3JpdGhtIHRlcm1pbmF0ZXMsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIFVudXNlZAorc2xvdCAoTlVMTCBrZXkpIGluIHRoZSB0YWJsZS4KK1RvIGF2b2lkIHNsb3dpbmcgZG93biBsb29rdXBzIG9uIGEgbmVhci1mdWxsIHRhYmxlLCB3ZSByZXNpemUgdGhlIHRhYmxlIHdoZW4KK2l0J3MgVVNBQkxFX0ZSQUNUSU9OIChjdXJyZW50bHkgdHdvLXRoaXJkcykgZnVsbC4KKyovCiAKIC8qIFNldCBhIGtleSBlcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnQsIHdyYXBwaW5nIGl0IGluIGEKICAqIHR1cGxlIGF1dG9tYXRpY2FsbHkgc28gdGhhdCB0dXBsZSBrZXlzIGFyZSBub3QgdW5wYWNrZWQgYXMgdGhlCkBAIC0yNSwxMCArMTA5LDYgQEAKICAgICBQeV9ERUNSRUYodHVwKTsKIH0KIAotLyogRGVmaW5lIHRoaXMgb3V0IGlmIHlvdSBkb24ndCB3YW50IGNvbnZlcnNpb24gc3RhdGlzdGljcyBvbiBleGl0LiAqLwotI3VuZGVmIFNIT1dfQ09OVkVSU0lPTl9DT1VOVFMKLQotLyogU2VlIGxhcmdlIGNvbW1lbnQgYmxvY2sgYmVsb3cuICBUaGlzIG11c3QgYmUgPj0gMS4gKi8KICNkZWZpbmUgUEVSVFVSQl9TSElGVCA1CiAKIC8qCkBAIC0xMjYsOCArMjA2LDEzIEBACiAKICovCiAKLS8qIE9iamVjdCB1c2VkIGFzIGR1bW15IGtleSB0byBmaWxsIGRlbGV0ZWQgZW50cmllcyAqLwotc3RhdGljIFB5T2JqZWN0ICpkdW1teSA9IE5VTEw7IC8qIEluaXRpYWxpemVkIGJ5IGZpcnN0IGNhbGwgdG8gbmV3UHlEaWN0T2JqZWN0KCkgKi8KKy8qIE9iamVjdCB1c2VkIGFzIGR1bW15IGtleSB0byBmaWxsIGRlbGV0ZWQgZW50cmllcworICogVGhpcyBjb3VsZCBiZSBhbnkgdW5pcXVlIG9iamVjdCwKKyAqIHVzZSBhIGN1c3RvbSB0eXBlIGluIG9yZGVyIHRvIG1pbmltaXNlIGNvdXBsaW5nLgorKi8KK3N0YXRpYyBQeU9iamVjdCBfZHVtbXlfc3RydWN0OworCisjZGVmaW5lIGR1bW15ICgmX2R1bW15X3N0cnVjdCkKIAogI2lmZGVmIFB5X1JFRl9ERUJVRwogUHlPYmplY3QgKgpAQCAtMTM4LDc3ICsyMjMsMTcgQEAKICNlbmRpZgogCiAvKiBmb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwotc3RhdGljIFB5RGljdEVudHJ5ICoKLWxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpOworc3RhdGljIFB5RGljdEtleUVudHJ5ICpsb29rZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworc3RhdGljIFB5RGljdEtleUVudHJ5ICpsb29rZGljdF9zcGxpdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CiAKLSNpZmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi1zdGF0aWMgbG9uZyBjcmVhdGVkID0gMEw7Ci1zdGF0aWMgbG9uZyBjb252ZXJ0ZWQgPSAwTDsKLQotc3RhdGljIHZvaWQKLXNob3dfY291bnRzKHZvaWQpCi17Ci0gICAgZnByaW50ZihzdGRlcnIsICJjcmVhdGVkICVsZCBzdHJpbmcgZGljdHNcbiIsIGNyZWF0ZWQpOwotICAgIGZwcmludGYoc3RkZXJyLCAiY29udmVydGVkICVsZCB0byBub3JtYWwgZGljdHNcbiIsIGNvbnZlcnRlZCk7Ci0gICAgZnByaW50ZihzdGRlcnIsICIlLjJmJSUgY29udmVyc2lvbiByYXRlXG4iLCAoMTAwLjAqY29udmVydGVkKS9jcmVhdGVkKTsKLX0KLSNlbmRpZgotCi0vKiBEZWJ1ZyBzdGF0aXN0aWMgdG8gY29tcGFyZSBhbGxvY2F0aW9ucyB3aXRoIHJldXNlIHRocm91Z2ggdGhlIGZyZWUgbGlzdCAqLwotI3VuZGVmIFNIT1dfQUxMT0NfQ09VTlQKLSNpZmRlZiBTSE9XX0FMTE9DX0NPVU5UCi1zdGF0aWMgc2l6ZV90IGNvdW50X2FsbG9jID0gMDsKLXN0YXRpYyBzaXplX3QgY291bnRfcmV1c2UgPSAwOwotCi1zdGF0aWMgdm9pZAotc2hvd19hbGxvYyh2b2lkKQotewotICAgIGZwcmludGYoc3RkZXJyLCAiRGljdCBhbGxvY2F0aW9uczogJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwKLSAgICAgICAgY291bnRfYWxsb2MpOwotICAgIGZwcmludGYoc3RkZXJyLCAiRGljdCByZXVzZSB0aHJvdWdoIGZyZWVsaXN0OiAlIiBQWV9GT1JNQVRfU0laRV9UCi0gICAgICAgICJkXG4iLCBjb3VudF9yZXVzZSk7Ci0gICAgZnByaW50ZihzdGRlcnIsICIlLjJmJSUgcmV1c2UgcmF0ZVxuXG4iLAotICAgICAgICAoMTAwLjAqY291bnRfcmV1c2UvKGNvdW50X2FsbG9jK2NvdW50X3JldXNlKSkpOwotfQotI2VuZGlmCi0KLS8qIERlYnVnIHN0YXRpc3RpYyB0byBjb3VudCBHQyB0cmFja2luZyBvZiBkaWN0cyAqLwotI2lmZGVmIFNIT1dfVFJBQ0tfQ09VTlQKLXN0YXRpYyBQeV9zc2l6ZV90IGNvdW50X3VudHJhY2tlZCA9IDA7Ci1zdGF0aWMgUHlfc3NpemVfdCBjb3VudF90cmFja2VkID0gMDsKLQotc3RhdGljIHZvaWQKLXNob3dfdHJhY2sodm9pZCkKLXsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkRpY3RzIGNyZWF0ZWQ6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsCi0gICAgICAgIGNvdW50X3RyYWNrZWQgKyBjb3VudF91bnRyYWNrZWQpOwotICAgIGZwcmludGYoc3RkZXJyLCAiRGljdHMgdHJhY2tlZCBieSB0aGUgR0M6ICUiIFBZX0ZPUk1BVF9TSVpFX1QKLSAgICAgICAgImRcbiIsIGNvdW50X3RyYWNrZWQpOwotICAgIGZwcmludGYoc3RkZXJyLCAiJS4yZiUlIGRpY3QgdHJhY2tpbmcgcmF0ZVxuXG4iLAotICAgICAgICAoMTAwLjAqY291bnRfdHJhY2tlZC8oY291bnRfdW50cmFja2VkK2NvdW50X3RyYWNrZWQpKSk7Ci19Ci0jZW5kaWYKLQotCi0vKiBJbml0aWFsaXphdGlvbiBtYWNyb3MuCi0gICBUaGVyZSBhcmUgdHdvIHdheXMgdG8gY3JlYXRlIGEgZGljdDogIFB5RGljdF9OZXcoKSBpcyB0aGUgbWFpbiBDIEFQSQotICAgZnVuY3Rpb24sIGFuZCB0aGUgdHBfbmV3IHNsb3QgbWFwcyB0byBkaWN0X25ldygpLiAgSW4gdGhlIGxhdHRlciBjYXNlIHdlCi0gICBjYW4gc2F2ZSBhIGxpdHRsZSB0aW1lIG92ZXIgd2hhdCBQeURpY3RfTmV3IGRvZXMgYmVjYXVzZSBpdCdzIGd1YXJhbnRlZWQKLSAgIHRoYXQgdGhlIFB5RGljdE9iamVjdCBzdHJ1Y3QgaXMgYWxyZWFkeSB6ZXJvZWQgb3V0LgotICAgRXZlcnlvbmUgZXhjZXB0IGRpY3RfbmV3KCkgc2hvdWxkIHVzZSBFTVBUWV9UT19NSU5TSVpFICh1bmxlc3MgdGhleSBoYXZlCi0gICBhbiBleGNlbGxlbnQgcmVhc29uIG5vdCB0bykuCi0qLwotCi0jZGVmaW5lIElOSVRfTk9OWkVST19ESUNUX1NMT1RTKG1wKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKG1wKS0+bWFfdGFibGUgPSAobXApLT5tYV9zbWFsbHRhYmxlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKG1wKS0+bWFfbWFzayA9IFB5RGljdF9NSU5TSVpFIC0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSgwKQotCi0jZGVmaW5lIEVNUFRZX1RPX01JTlNJWkUobXApIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbWVtc2V0KChtcCktPm1hX3NtYWxsdGFibGUsIDAsIHNpemVvZigobXApLT5tYV9zbWFsbHRhYmxlKSk7ICAgICAgICBcCi0gICAgKG1wKS0+bWFfdXNlZCA9IChtcCktPm1hX2ZpbGwgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgSU5JVF9OT05aRVJPX0RJQ1RfU0xPVFMobXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSgwKQorc3RhdGljIGludCBkaWN0cmVzaXplKFB5RGljdE9iamVjdCAqbXAsIFB5X3NzaXplX3QgbWludXNlZCk7CiAKIC8qIERpY3Rpb25hcnkgcmV1c2Ugc2NoZW1lIHRvIHNhdmUgY2FsbHMgdG8gbWFsbG9jLCBmcmVlLCBhbmQgbWVtc2V0ICovCiAjaWZuZGVmIFB5RGljdF9NQVhGUkVFTElTVApAQCAtMjE3LDczICsyNDIsMTk0IEBACiBzdGF0aWMgUHlEaWN0T2JqZWN0ICpmcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKIHN0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CiAKLXZvaWQKLVB5RGljdF9GaW5pKHZvaWQpCitpbnQKK1B5RGljdF9DbGVhckZyZWVMaXN0KHZvaWQpCiB7CiAgICAgUHlEaWN0T2JqZWN0ICpvcDsKLQorICAgIGludCByZXQgPSBudW1mcmVlOwogICAgIHdoaWxlIChudW1mcmVlKSB7CiAgICAgICAgIG9wID0gZnJlZV9saXN0Wy0tbnVtZnJlZV07CiAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChvcCkpOwogICAgICAgICBQeU9iamVjdF9HQ19EZWwob3ApOwogICAgIH0KKyAgICByZXR1cm4gcmV0OwogfQogCi1QeU9iamVjdCAqCi1QeURpY3RfTmV3KHZvaWQpCisvKiBQcmludCBzdW1tYXJ5IGluZm8gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBvcHRpbWl6ZWQgYWxsb2NhdG9yICovCit2b2lkCitfUHlEaWN0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQogewotICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgaWYgKGR1bW15ID09IE5VTEwpIHsgLyogQXV0by1pbml0aWFsaXplIGR1bW15ICovCi0gICAgICAgIGR1bW15ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxkdW1teSBrZXk+Iik7Ci0gICAgICAgIGlmIChkdW1teSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jaWZkZWYgU0hPV19DT05WRVJTSU9OX0NPVU5UUwotICAgICAgICBQeV9BdEV4aXQoc2hvd19jb3VudHMpOwotI2VuZGlmCi0jaWZkZWYgU0hPV19BTExPQ19DT1VOVAotICAgICAgICBQeV9BdEV4aXQoc2hvd19hbGxvYyk7Ci0jZW5kaWYKLSNpZmRlZiBTSE9XX1RSQUNLX0NPVU5UCi0gICAgICAgIFB5X0F0RXhpdChzaG93X3RyYWNrKTsKLSNlbmRpZgorICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlEaWN0T2JqZWN0IiwgbnVtZnJlZSwgc2l6ZW9mKFB5RGljdE9iamVjdCkpOworfQorCisKK3ZvaWQKK1B5RGljdF9GaW5pKHZvaWQpCit7CisgICAgUHlEaWN0X0NsZWFyRnJlZUxpc3QoKTsKK30KKworI2RlZmluZSBES19ERUJVR19JTkNSRUYgX1B5X0lOQ19SRUZUT1RBTCBfUHlfUkVGX0RFQlVHX0NPTU1BCisjZGVmaW5lIERLX0RFQlVHX0RFQ1JFRiBfUHlfREVDX1JFRlRPVEFMIF9QeV9SRUZfREVCVUdfQ09NTUEKKworI2RlZmluZSBES19JTkNSRUYoZGspIChES19ERUJVR19JTkNSRUYgKysoZGspLT5ka19yZWZjbnQpCisjZGVmaW5lIERLX0RFQ1JFRihkaykgaWYgKERLX0RFQlVHX0RFQ1JFRiAoLS0oZGspLT5ka19yZWZjbnQpID09IDApIGZyZWVfa2V5c19vYmplY3QoZGspCisjZGVmaW5lIERLX1NJWkUoZGspICgoZGspLT5ka19zaXplKQorI2RlZmluZSBES19NQVNLKGRrKSAoKChkayktPmRrX3NpemUpLTEpCisjZGVmaW5lIElTX1BPV0VSX09GXzIoeCkgKCgoeCkgJiAoeC0xKSkgPT0gMCkKKworLyogVVNBQkxFX0ZSQUNUSU9OIGlzIHRoZSBtYXhpbXVtIGRpY3Rpb25hcnkgbG9hZC4KKyAqIEN1cnJlbnRseSBzZXQgdG8gKDJuKzEpLzMuIEluY3JlYXNpbmcgdGhpcyByYXRpbyBtYWtlcyBkaWN0aW9uYXJpZXMgbW9yZQorICogZGVuc2UgcmVzdWx0aW5nIGluIG1vcmUgY29sbGlzaW9ucy4gIERlY3JlYXNpbmcgaXQgaW1wcm92ZXMgc3BhcnNlbmVzcworICogYXQgdGhlIGV4cGVuc2Ugb2Ygc3ByZWFkaW5nIGVudHJpZXMgb3ZlciBtb3JlIGNhY2hlIGxpbmVzIGFuZCBhdCB0aGUKKyAqIGNvc3Qgb2YgdG90YWwgbWVtb3J5IGNvbnN1bWVkLgorICoKKyAqIFVTQUJMRV9GUkFDVElPTiBtdXN0IG9iZXkgdGhlIGZvbGxvd2luZzoKKyAqICAgICAoMCA8IFVTQUJMRV9GUkFDVElPTihuKSA8IG4pIGZvciBhbGwgbiA+PSAyCisgKgorICogVVNBQkxFX0ZSQUNUSU9OIHNob3VsZCBiZSB2ZXJ5IHF1aWNrIHRvIGNhbGN1bGF0ZS4KKyAqIEZyYWN0aW9ucyBhcm91bmQgNS84IHRvIDIvMyBzZWVtIHRvIHdvcmsgd2VsbCBpbiBwcmFjdGljZS4KKyAqLworCisvKiBVc2UgKDJuKzEpLzMgcmF0aGVyIHRoYW4gMm4rMyBiZWNhdXNlOiBpdCBtYWtlcyBubyBkaWZmZXJlbmNlIGZvcgorICogY29tYmluZWQgdGFibGVzICh0aGUgdHdvIGZyYWN0aW9ucyByb3VuZCB0byB0aGUgc2FtZSBudW1iZXIgbiA8ICksCisgKiBidXQgMio0LzMgaXMgMiB3aGVyZWFzICgyKjQrMSkvMyBpcyAzIHdoaWNoIHBvdGVudGlhbGx5IHNhdmVzIHF1aXRlCisgKiBhIGxvdCBvZiBzcGFjZSBmb3Igc21hbGwsIHNwbGl0IHRhYmxlcyAqLworI2RlZmluZSBVU0FCTEVfRlJBQ1RJT04obikgKCgoKG4pIDw8IDEpKzEpLzMpCisKKy8qIEFsdGVybmF0aXZlIGZyYWN0aW9uIHRoYXQgaXMgb3RoZXJ3aXNlIGNsb3NlIGVub3VnaCB0byAoMm4rMSkvMyB0byBtYWtlCisgKiBsaXR0bGUgZGlmZmVyZW5jZS4gOCAqIDIvMyA9PSA4ICogNS84ID09IDUuIDE2ICogMi8zID09IDE2ICogNS84ID09IDEwLgorICogMzIgKiAyLzMgPSAyMSwgMzIgKiA1LzggPSAyMC4KKyAqIEl0cyBhZHZhbnRhZ2UgaXMgdGhhdCBpdCBpcyBmYXN0ZXIgdG8gY29tcHV0ZSBvbiBtYWNoaW5lcyB3aXRoIHNsb3cgZGl2aXNpb24uCisgKiAjZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKChuKSA+PiAxKSArICgobikgPj4gMikgLSAoKG4pID4+IDMpKQorKi8KKworLyogR1JPV1RIX1JBVEUuIEdyb3d0aCByYXRlIHVwb24gaGl0dGluZyBtYXhpbXVtIGxvYWQuICBDdXJyZW50bHkgc2V0IHRvICoyLgorICogUmFpc2luZyB0aGlzIHRvICo0IGRvdWJsZXMgbWVtb3J5IGNvbnN1bXB0aW9uIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZgorICogdGhlIGRpY3Rpb25hcnksIGJ1dCByZXN1bHRzIGluIGhhbGYgdGhlIG51bWJlciBvZiByZXNpemVzLCBsZXNzIGVmZm9ydCB0bworICogcmVzaXplIGFuZCBiZXR0ZXIgc3BhcnNlbmVzcyBmb3Igc29tZSAoYnV0IG5vdCBhbGwgZGljdCBzaXplcykuCisgKiBTZXR0aW5nIHRvICo0IGVsaW1pbmF0ZXMgZXZlcnkgb3RoZXIgcmVzaXplIHN0ZXAuCisgKiBHUk9XVEhfUkFURSB3YXMgc2V0IHRvICo0IHVwIHRvIHZlcnNpb24gMy4yLgorICovCisjZGVmaW5lIEdST1dUSF9SQVRFKHgpICgoeCkgKiAyKQorCisjZGVmaW5lIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKGQpIFwKKyAgICBpZiAoKGQpLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KSB7IFwKKyAgICAgICAgKGQpLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdF91bmljb2RlOyBcCiAgICAgfQorCisvKiBUaGlzIGltbXV0YWJsZSwgZW1wdHkgUHlEaWN0S2V5c09iamVjdCBpcyB1c2VkIGZvciBQeURpY3RfQ2xlYXIoKQorICogKHdoaWNoIGNhbm5vdCBmYWlsIGFuZCB0aHVzIGNhbiBkbyBubyBhbGxvY2F0aW9uKS4KKyAqLworc3RhdGljIFB5RGljdEtleXNPYmplY3QgZW1wdHlfa2V5c19zdHJ1Y3QgPSB7CisgICAgICAgIDIsIC8qIGRrX3JlZmNudCAxIGZvciB0aGlzIHN0cnVjdCwgMSBmb3IgZHVtbXlfc3RydWN0ICovCisgICAgICAgIDEsIC8qIGRrX3NpemUgKi8KKyAgICAgICAgbG9va2RpY3Rfc3BsaXQsIC8qIGRrX2xvb2t1cCAqLworICAgICAgICAwLCAvKiBka191c2FibGUgKGltbXV0YWJsZSkgKi8KKyAgICAgICAgeworICAgICAgICAgICAgeyAwLCAwLCAwIH0gLyogZGtfZW50cmllcyAoZW1wdHkpICovCisgICAgICAgIH0KK307CisKK3N0YXRpYyBQeU9iamVjdCAqZW1wdHlfdmFsdWVzWzFdID0geyBOVUxMIH07CisKKyNkZWZpbmUgUHlfRU1QVFlfS0VZUyAmZW1wdHlfa2V5c19zdHJ1Y3QKKworc3RhdGljIFB5RGljdEtleXNPYmplY3QgKm5ld19rZXlzX29iamVjdChQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlEaWN0S2V5c09iamVjdCAqZGs7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CisKKyAgICBhc3NlcnQoc2l6ZSA+PSBQeURpY3RfTUlOU0laRV9TUExJVCk7CisgICAgYXNzZXJ0KElTX1BPV0VSX09GXzIoc2l6ZSkpOworICAgIGRrID0gUHlNZW1fTUFMTE9DKHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIChzaXplLTEpKTsKKyAgICBpZiAoZGsgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgREtfREVCVUdfSU5DUkVGIGRrLT5ka19yZWZjbnQgPSAxOworICAgIGRrLT5ka19zaXplID0gc2l6ZTsKKyAgICBkay0+ZGtfdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKHNpemUpOworICAgIGVwMCA9ICZkay0+ZGtfZW50cmllc1swXTsKKyAgICAvKiBIYXNoIHZhbHVlIG9mIHNsb3QgMCBpcyB1c2VkIGJ5IHBvcGl0ZW0sIHNvIGl0IG11c3QgYmUgaW5pdGlhbGl6ZWQgKi8KKyAgICBlcDAtPm1lX2hhc2ggPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgZXAwW2ldLm1lX2tleSA9IE5VTEw7CisgICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IE5VTEw7CisgICAgfQorICAgIGRrLT5ka19sb29rdXAgPSBsb29rZGljdF91bmljb2RlX25vZHVtbXk7CisgICAgcmV0dXJuIGRrOworfQorCitzdGF0aWMgdm9pZAorZnJlZV9rZXlzX29iamVjdChQeURpY3RLZXlzT2JqZWN0ICprZXlzKQoreworICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gJmtleXMtPmRrX2VudHJpZXNbMF07CisgICAgUHlfc3NpemVfdCBpLCBuOworICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKGtleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIFB5X1hERUNSRUYoZW50cmllc1tpXS5tZV9rZXkpOworICAgICAgICBQeV9YREVDUkVGKGVudHJpZXNbaV0ubWVfdmFsdWUpOworICAgIH0KKyAgICBQeU1lbV9GUkVFKGtleXMpOworfQorCisjZGVmaW5lIG5ld192YWx1ZXMoc2l6ZSkgUHlNZW1fTkVXKFB5T2JqZWN0ICosIHNpemUpCisKKyNkZWZpbmUgZnJlZV92YWx1ZXModmFsdWVzKSBQeU1lbV9GUkVFKHZhbHVlcykKKworLyogQ29uc3VtZXMgYSByZWZlcmVuY2UgdG8gdGhlIGtleXMgb2JqZWN0ICovCitzdGF0aWMgUHlPYmplY3QgKgorbmV3X2RpY3QoUHlEaWN0S2V5c09iamVjdCAqa2V5cywgUHlPYmplY3QgKip2YWx1ZXMpCit7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKICAgICBpZiAobnVtZnJlZSkgewogICAgICAgICBtcCA9IGZyZWVfbGlzdFstLW51bWZyZWVdOwogICAgICAgICBhc3NlcnQgKG1wICE9IE5VTEwpOwogICAgICAgICBhc3NlcnQgKFB5X1RZUEUobXApID09ICZQeURpY3RfVHlwZSk7CiAgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UoKFB5T2JqZWN0ICopbXApOwotICAgICAgICBpZiAobXAtPm1hX2ZpbGwpIHsKLSAgICAgICAgICAgIEVNUFRZX1RPX01JTlNJWkUobXApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogQXQgbGVhc3Qgc2V0IG1hX3RhYmxlIGFuZCBtYV9tYXNrOyB0aGVzZSBhcmUgd3JvbmcKLSAgICAgICAgICAgICAgIGlmIGFuIGVtcHR5IGJ1dCBwcmVzaXplZCBkaWN0IGlzIGFkZGVkIHRvIGZyZWVsaXN0ICovCi0gICAgICAgICAgICBJTklUX05PTlpFUk9fRElDVF9TTE9UUyhtcCk7Ci0gICAgICAgIH0KLSAgICAgICAgYXNzZXJ0IChtcC0+bWFfdXNlZCA9PSAwKTsKLSAgICAgICAgYXNzZXJ0IChtcC0+bWFfdGFibGUgPT0gbXAtPm1hX3NtYWxsdGFibGUpOwotICAgICAgICBhc3NlcnQgKG1wLT5tYV9tYXNrID09IFB5RGljdF9NSU5TSVpFIC0gMSk7Ci0jaWZkZWYgU0hPV19BTExPQ19DT1VOVAotICAgICAgICBjb3VudF9yZXVzZSsrOwotI2VuZGlmCi0gICAgfSBlbHNlIHsKLSAgICAgICAgbXAgPSBQeU9iamVjdF9HQ19OZXcoUHlEaWN0T2JqZWN0LCAmUHlEaWN0X1R5cGUpOwotICAgICAgICBpZiAobXAgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBFTVBUWV9UT19NSU5TSVpFKG1wKTsKLSNpZmRlZiBTSE9XX0FMTE9DX0NPVU5UCi0gICAgICAgIGNvdW50X2FsbG9jKys7Ci0jZW5kaWYKICAgICB9Ci0gICAgbXAtPm1hX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGU7Ci0jaWZkZWYgU0hPV19UUkFDS19DT1VOVAotICAgIGNvdW50X3VudHJhY2tlZCsrOwotI2VuZGlmCi0jaWZkZWYgU0hPV19DT05WRVJTSU9OX0NPVU5UUwotICAgICsrY3JlYXRlZDsKLSNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBtcCA9IFB5T2JqZWN0X0dDX05ldyhQeURpY3RPYmplY3QsICZQeURpY3RfVHlwZSk7CisgICAgICAgIGlmIChtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBES19ERUNSRUYoa2V5cyk7CisgICAgICAgICAgICBmcmVlX3ZhbHVlcyh2YWx1ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgbXAtPm1hX2tleXMgPSBrZXlzOworICAgIG1wLT5tYV92YWx1ZXMgPSB2YWx1ZXM7CisgICAgbXAtPm1hX3VzZWQgPSAwOwogICAgIHJldHVybiAoUHlPYmplY3QgKiltcDsKIH0KIAorLyogQ29uc3VtZXMgYSByZWZlcmVuY2UgdG8gdGhlIGtleXMgb2JqZWN0ICovCitzdGF0aWMgUHlPYmplY3QgKgorbmV3X2RpY3Rfd2l0aF9zaGFyZWRfa2V5cyhQeURpY3RLZXlzT2JqZWN0ICprZXlzKQoreworICAgIFB5T2JqZWN0ICoqdmFsdWVzOworICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKKworICAgIHNpemUgPSBES19TSVpFKGtleXMpOworICAgIHZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CisgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CisgICAgICAgIERLX0RFQ1JFRihrZXlzKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgdmFsdWVzW2ldID0gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIG5ld19kaWN0KGtleXMsIHZhbHVlcyk7Cit9CisKK1B5T2JqZWN0ICoKK1B5RGljdF9OZXcodm9pZCkKK3sKKyAgICByZXR1cm4gbmV3X2RpY3QobmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKSwgTlVMTCk7Cit9CisKIC8qCiBUaGUgYmFzaWMgbG9va3VwIGZ1bmN0aW9uIHVzZWQgYnkgYWxsIG9wZXJhdGlvbnMuCiBUaGlzIGlzIGJhc2VkIG9uIEFsZ29yaXRobSBEIGZyb20gS251dGggVm9sLiAzLCBTZWMuIDYuNC4KQEAgLTMwMiwyOSArNDQ4LDM1IEBACiBsb29rZGljdCgpIGlzIGdlbmVyYWwtcHVycG9zZSwgYW5kIG1heSByZXR1cm4gTlVMTCBpZiAoYW5kIG9ubHkgaWYpIGEKIGNvbXBhcmlzb24gcmFpc2VzIGFuIGV4Y2VwdGlvbiAodGhpcyB3YXMgbmV3IGluIFB5dGhvbiAyLjUpLgogbG9va2RpY3RfdW5pY29kZSgpIGJlbG93IGlzIHNwZWNpYWxpemVkIHRvIHN0cmluZyBrZXlzLCBjb21wYXJpc29uIG9mIHdoaWNoIGNhbgotbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gTlVMTC4gIEZvciBib3RoLCB3aGVuCi10aGUga2V5IGlzbid0IGZvdW5kIGEgUHlEaWN0RW50cnkqIGlzIHJldHVybmVkIGZvciB3aGljaCB0aGUgbWVfdmFsdWUgZmllbGQgaXMKLU5VTEw7IHRoaXMgaXMgdGhlIHNsb3QgaW4gdGhlIGRpY3QgYXQgd2hpY2ggdGhlIGtleSB3b3VsZCBoYXZlIGJlZW4gZm91bmQsIGFuZAotdGhlIGNhbGxlciBjYW4gKGlmIGl0IHdpc2hlcykgYWRkIHRoZSA8a2V5LCB2YWx1ZT4gcGFpciB0byB0aGUgcmV0dXJuZWQKLVB5RGljdEVudHJ5Ki4KK25ldmVyIHJhaXNlIGFuIGV4Y2VwdGlvbjsgdGhhdCBmdW5jdGlvbiBjYW4gbmV2ZXIgcmV0dXJuIE5VTEwuCitsb29rZGljdF91bmljb2RlX25vZHVtbXkgaXMgZnVydGhlciBzcGVjaWFsaXplZCBmb3Igc3RyaW5nIGtleXMgdGhhdCBjYW5ub3QgYmUKK3RoZSA8ZHVtbXk+IHZhbHVlLgorRm9yIGJvdGgsIHdoZW4gdGhlIGtleSBpc24ndCBmb3VuZCBhIFB5RGljdEVudHJ5KiBpcyByZXR1cm5lZAord2hlcmUgdGhlIGtleSB3b3VsZCBoYXZlIGJlZW4gZm91bmQsICp2YWx1ZV9hZGRyIHBvaW50cyB0byB0aGUgbWF0Y2hpbmcgdmFsdWUKK3Nsb3QuCiAqLwotc3RhdGljIFB5RGljdEVudHJ5ICoKLWxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIHJlZ2lzdGVyIFB5X2hhc2hfdCBoYXNoKQorc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK2xvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKIHsKICAgICByZWdpc3RlciBzaXplX3QgaTsKICAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZnJlZXNsb3Q7Ci0gICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KW1wLT5tYV9tYXNrOwotICAgIFB5RGljdEVudHJ5ICplcDAgPSBtcC0+bWFfdGFibGU7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIHJlZ2lzdGVyIFB5RGljdEtleUVudHJ5ICpmcmVlc2xvdDsKKyAgICByZWdpc3RlciBzaXplX3QgbWFzazsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwOworICAgIHJlZ2lzdGVyIFB5RGljdEtleUVudHJ5ICplcDsKICAgICByZWdpc3RlciBpbnQgY21wOwogICAgIFB5T2JqZWN0ICpzdGFydGtleTsKIAordG9wOgorICAgIG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKKyAgICBlcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CiAgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZXAgPSAmZXAwW2ldOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpCisgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgIHJldHVybiBlcDsKLQorICAgIH0KICAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSkKICAgICAgICAgZnJlZXNsb3QgPSBlcDsKICAgICBlbHNlIHsKQEAgLTMzNSwxNyArNDg3LDE1IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV90YWJsZSAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNtcCA+IDApCisgICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgeworICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBUaGUgY29tcGFyZSBkaWQgbWFqb3IgbmFzdHkgc3R1ZmYgdG8gdGhlCi0gICAgICAgICAgICAgICAgICogZGljdDogIHN0YXJ0IG92ZXIuCi0gICAgICAgICAgICAgICAgICogWFhYIEEgY2xldmVyIGFkdmVyc2FyeSBjb3VsZCBwcmV2ZW50IHRoaXMKLSAgICAgICAgICAgICAgICAgKiBYWFggZnJvbSB0ZXJtaW5hdGluZy4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCk7CisgICAgICAgICAgICAgICAgLyogVGhlIGRpY3Qgd2FzIG11dGF0ZWQsIHJlc3RhcnQgKi8KKyAgICAgICAgICAgICAgICBnb3RvIHRvcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBmcmVlc2xvdCA9IE5VTEw7CkBAIC0zNTYsMjggKzUwNiwzNyBAQAogICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewogICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7CiAgICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gZnJlZXNsb3QgPT0gTlVMTCA/IGVwIDogZnJlZXNsb3Q7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSkKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZmcmVlc2xvdC0+bWVfdmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICB9CiAgICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpIHsKICAgICAgICAgICAgIHN0YXJ0a2V5ID0gZXAtPm1lX2tleTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKLSAgICAgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgaWYgKGNtcCA8IDApIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV90YWJsZSAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNtcCA+IDApCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgeworICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBUaGUgY29tcGFyZSBkaWQgbWFqb3IgbmFzdHkgc3R1ZmYgdG8gdGhlCi0gICAgICAgICAgICAgICAgICogZGljdDogIHN0YXJ0IG92ZXIuCi0gICAgICAgICAgICAgICAgICogWFhYIEEgY2xldmVyIGFkdmVyc2FyeSBjb3VsZCBwcmV2ZW50IHRoaXMKLSAgICAgICAgICAgICAgICAgKiBYWFggZnJvbSB0ZXJtaW5hdGluZy4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCk7CisgICAgICAgICAgICAgICAgLyogVGhlIGRpY3Qgd2FzIG11dGF0ZWQsIHJlc3RhcnQgKi8KKyAgICAgICAgICAgICAgICBnb3RvIHRvcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCkBAIC0zODcsNDYgKzU0NiwzOSBAQAogICAgIHJldHVybiAwOwogfQogCi0vKgotICogSGFja2VkIHVwIHZlcnNpb24gb2YgbG9va2RpY3Qgd2hpY2ggY2FuIGFzc3VtZSBrZXlzIGFyZSBhbHdheXMKLSAqIHVuaWNvZGVzOyB0aGlzIGFzc3VtcHRpb24gYWxsb3dzIHRlc3RpbmcgZm9yIGVycm9ycyBkdXJpbmcKLSAqIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgpIHRvIGJlIGRyb3BwZWQ7IHVuaWNvZGUtdW5pY29kZQotICogY29tcGFyaXNvbnMgbmV2ZXIgcmFpc2UgZXhjZXB0aW9ucy4gIFRoaXMgYWxzbyBtZWFucyB3ZSBkb24ndCBuZWVkCi0gKiB0byBnbyB0aHJvdWdoIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgpOyB3ZSBjYW4gYWx3YXlzIHVzZQotICogdW5pY29kZV9lcSgpIGRpcmVjdGx5LgotICoKLSAqIFRoaXMgaXMgdmFsdWFibGUgYmVjYXVzZSBkaWN0cyB3aXRoIG9ubHkgdW5pY29kZSBrZXlzIGFyZSB2ZXJ5IGNvbW1vbi4KLSAqLwotc3RhdGljIFB5RGljdEVudHJ5ICoKLWxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgcmVnaXN0ZXIgUHlfaGFzaF90IGhhc2gpCisvKiBTcGVjaWFsaXplZCB2ZXJzaW9uIGZvciBzdHJpbmctb25seSBrZXlzICovCitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKIHsKICAgICByZWdpc3RlciBzaXplX3QgaTsKICAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZnJlZXNsb3Q7Ci0gICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KW1wLT5tYV9tYXNrOwotICAgIFB5RGljdEVudHJ5ICplcDAgPSBtcC0+bWFfdGFibGU7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIHJlZ2lzdGVyIFB5RGljdEtleUVudHJ5ICpmcmVlc2xvdDsKKyAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmVwOwogCiAgICAgLyogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIHRvIGhhbmRsZSBub24tdW5pY29kZSBrZXlzLAogICAgICAgIGluY2x1ZGluZyBzdWJjbGFzc2VzIG9mIHN0cjsgZS5nLiwgb25lIHJlYXNvbiB0byBzdWJjbGFzcwogICAgICAgIHVuaWNvZGVzIGlzIHRvIG92ZXJyaWRlIF9fZXFfXywgYW5kIGZvciBzcGVlZCB3ZSBkb24ndCBjYXRlciB0bwogICAgICAgIHRoYXQgaGVyZS4gKi8KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSNpZmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi0gICAgICAgICsrY29udmVydGVkOwotI2VuZGlmCi0gICAgICAgIG1wLT5tYV9sb29rdXAgPSBsb29rZGljdDsKLSAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gpOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7CisgICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKICAgICB9Ci0gICAgaSA9IGhhc2ggJiBtYXNrOworICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIGVwID0gJmVwMFtpXTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KQorICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpIHsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwogICAgICAgICByZXR1cm4gZXA7CisgICAgfQogICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQogICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpCisgICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICB9CiAgICAgICAgIGZyZWVzbG90ID0gTlVMTDsKICAgICB9CiAKQEAgLTQzNSwxMyArNTg3LDIyIEBACiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CiAgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKICAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBmcmVlc2xvdCA9PSBOVUxMID8gZXAgOiBmcmVlc2xvdDsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZmcmVlc2xvdC0+bWVfdmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90OworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleQogICAgICAgICAgICAgfHwgKGVwLT5tZV9oYXNoID09IGhhc2gKICAgICAgICAgICAgICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkKLSAgICAgICAgICAgICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpCisgICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIH0KICAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkgJiYgZnJlZXNsb3QgPT0gTlVMTCkKICAgICAgICAgICAgIGZyZWVzbG90ID0gZXA7CiAgICAgfQpAQCAtNDQ5LDYgKzYxMCw5MiBAQAogICAgIHJldHVybiAwOwogfQogCisvKiBGYXN0ZXIgdmVyc2lvbiBvZiBsb29rZGljdF91bmljb2RlIHdoZW4gaXQgaXMga25vd24gdGhhdCBubyA8ZHVtbXk+IGtleXMKKyAqIHdpbGwgYmUgcHJlc2VudC4gKi8KK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitsb29rZGljdF91bmljb2RlX25vZHVtbXkoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKK3sKKyAgICByZWdpc3RlciBzaXplX3QgaTsKKyAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKKyAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmVwOworCisgICAgLyogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIHRvIGhhbmRsZSBub24tdW5pY29kZSBrZXlzLAorICAgICAgIGluY2x1ZGluZyBzdWJjbGFzc2VzIG9mIHN0cjsgZS5nLiwgb25lIHJlYXNvbiB0byBzdWJjbGFzcworICAgICAgIHVuaWNvZGVzIGlzIHRvIG92ZXJyaWRlIF9fZXFfXywgYW5kIGZvciBzcGVlZCB3ZSBkb24ndCBjYXRlciB0bworICAgICAgIHRoYXQgaGVyZS4gKi8KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OworICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkcik7CisgICAgfQorICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOworICAgIGVwID0gJmVwMFtpXTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOworICAgICAgICByZXR1cm4gZXA7CisgICAgfQorICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7CisgICAgICAgIGVwID0gJmVwMFtpICYgbWFza107CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLworICAgIHJldHVybiAwOworfQorCisvKiBWZXJzaW9uIG9mIGxvb2tkaWN0IGZvciBzcGxpdCB0YWJsZXMuCisgKiBBbGwgc3BsaXQgdGFibGVzIGFuZCBvbmx5IHNwbGl0IHRhYmxlcyB1c2UgdGhpcyBsb29rdXAgZnVuY3Rpb24uCisgKiBTcGxpdCB0YWJsZXMgb25seSBjb250YWluIHVuaWNvZGUga2V5cyBhbmQgbm8gZHVtbXkga2V5cywKKyAqIHNvIGFsZ29yaXRobSBpcyB0aGUgc2FtZSBhcyBsb29rZGljdF91bmljb2RlX25vZHVtbXkuCisgKi8KK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitsb29rZGljdF9zcGxpdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCit7CisgICAgcmVnaXN0ZXIgc2l6ZV90IGk7CisgICAgcmVnaXN0ZXIgc2l6ZV90IHBlcnR1cmI7CisgICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgIHJlZ2lzdGVyIFB5RGljdEtleUVudHJ5ICplcDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICBlcCA9IGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOworICAgICAgICAvKiBsb29rZGljdCBleHBlY3RzIGEgY29tYmluZWQtdGFibGUsIHNvIGZpeCB2YWx1ZV9hZGRyICovCisgICAgICAgIGkgPSBlcCAtIGVwMDsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgcmV0dXJuIGVwOworICAgIH0KKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKKyAgICBlcCA9ICZlcDBbaV07CisgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7CisgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07CisgICAgICAgIHJldHVybiBlcDsKKyAgICB9CisgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CisgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKKyAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOworICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KKyAgICByZXR1cm4gMDsKK30KKwogaW50CiBfUHlEaWN0X0hhc09ubHlTdHJpbmdLZXlzKFB5T2JqZWN0ICpkaWN0KQogewpAQCAtNDU2LDcgKzcwMyw3IEBACiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOwogICAgIGFzc2VydChQeURpY3RfQ2hlY2soZGljdCkpOwogICAgIC8qIFNob3J0Y3V0ICovCi0gICAgaWYgKCgoUHlEaWN0T2JqZWN0ICopZGljdCktPm1hX2xvb2t1cCA9PSBsb29rZGljdF91bmljb2RlKQorICAgIGlmICgoKFB5RGljdE9iamVjdCAqKWRpY3QpLT5tYV9rZXlzLT5ka19sb29rdXAgIT0gbG9va2RpY3QpCiAgICAgICAgIHJldHVybiAxOwogICAgIHdoaWxlIChQeURpY3RfTmV4dChkaWN0LCAmcG9zLCAma2V5LCAmdmFsdWUpKQogICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKQpAQCAtNDY0LDIzICs3MTEsMTIgQEAKICAgICByZXR1cm4gMTsKIH0KIAotI2lmZGVmIFNIT1dfVFJBQ0tfQ09VTlQKLSNkZWZpbmUgSU5DUkVBU0VfVFJBQ0tfQ09VTlQgXAotICAgIChjb3VudF90cmFja2VkKyssIGNvdW50X3VudHJhY2tlZC0tKTsKLSNkZWZpbmUgREVDUkVBU0VfVFJBQ0tfQ09VTlQgXAotICAgIChjb3VudF90cmFja2VkLS0sIGNvdW50X3VudHJhY2tlZCsrKTsKLSNlbHNlCi0jZGVmaW5lIElOQ1JFQVNFX1RSQUNLX0NPVU5UCi0jZGVmaW5lIERFQ1JFQVNFX1RSQUNLX0NPVU5UCi0jZW5kaWYKLQogI2RlZmluZSBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSkgXAogICAgIGRvIHsgXAogICAgICAgICBpZiAoIV9QeU9iamVjdF9HQ19JU19UUkFDS0VEKG1wKSkgeyBcCiAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKGtleSkgfHwgXAogICAgICAgICAgICAgICAgIF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCh2YWx1ZSkpIHsgXAogICAgICAgICAgICAgICAgIF9QeU9iamVjdF9HQ19UUkFDSyhtcCk7IFwKLSAgICAgICAgICAgICAgICBJTkNSRUFTRV9UUkFDS19DT1VOVCBcCiAgICAgICAgICAgICB9IFwKICAgICAgICAgfSBcCiAgICAgfSB3aGlsZSgwKQpAQCAtNDkwLDc4ICs3MjYsMTM2IEBACiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKICAgICBQeU9iamVjdCAqdmFsdWU7Ci0gICAgUHlfc3NpemVfdCBtYXNrLCBpOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CiAKICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG9wKSB8fCAhX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob3ApKQogICAgICAgICByZXR1cm47CiAKICAgICBtcCA9IChQeURpY3RPYmplY3QgKikgb3A7Ci0gICAgZXAgPSBtcC0+bWFfdGFibGU7Ci0gICAgbWFzayA9IG1wLT5tYV9tYXNrOwotICAgIGZvciAoaSA9IDA7IGkgPD0gbWFzazsgaSsrKSB7Ci0gICAgICAgIGlmICgodmFsdWUgPSBlcFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKHZhbHVlKSB8fAotICAgICAgICAgICAgX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKGVwW2ldLm1lX2tleSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmICgodmFsdWUgPSBtcC0+bWFfdmFsdWVzW2ldKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIV9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCgKKyAgICAgICAgICAgICAgICAgICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAgIERFQ1JFQVNFX1RSQUNLX0NPVU5UCisgICAgZWxzZSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmICgodmFsdWUgPSBlcDBbaV0ubWVfdmFsdWUpID09IE5VTEwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKHZhbHVlKSB8fAorICAgICAgICAgICAgICAgIF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRChlcDBbaV0ubWVfa2V5KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0sob3ApOwogfQogCi0vKgotSW50ZXJuYWwgcm91dGluZSB0byBpbnNlcnQgYSBuZXcgaXRlbSBpbnRvIHRoZSB0YWJsZSB3aGVuIHlvdSBoYXZlIGVudHJ5IG9iamVjdC4KLVVzZWQgYnkgaW5zZXJ0ZGljdC4KLSovCi1zdGF0aWMgaW50Ci1pbnNlcnRkaWN0X2J5X2VudHJ5KHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAotICAgICAgICAgICAgICAgICAgICBQeURpY3RFbnRyeSAqZXAsIFB5T2JqZWN0ICp2YWx1ZSkKKy8qIEludGVybmFsIGZ1bmN0aW9uIHRvIGZpbmQgc2xvdCBmb3IgYW4gaXRlbSBmcm9tIGl0cyBoYXNoCisgKiB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGtleSBpcyBub3QgcHJlc2VudCBpbiB0aGUgZGljdC4KKyAqLworc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK2ZpbmRfZW1wdHlfc2xvdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQogewotICAgIFB5T2JqZWN0ICpvbGRfdmFsdWU7CisgICAgc2l6ZV90IGk7CisgICAgc2l6ZV90IHBlcnR1cmI7CisgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKIAotICAgIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIHZhbHVlKTsKLSAgICBpZiAoZXAtPm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgb2xkX3ZhbHVlID0gZXAtPm1lX3ZhbHVlOwotICAgICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7IC8qIHdoaWNoICoqQ0FOKiogcmUtZW50ZXIgKi8KLSAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgYXNzZXJ0KGtleSAhPSBOVUxMKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpCisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKKyAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgZXAgPSAmZXAwW2ldOworICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVwLT5tZV9rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7CisgICAgICAgIGVwID0gJmVwMFtpICYgbWFza107CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKQotICAgICAgICAgICAgbXAtPm1hX2ZpbGwrKzsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBkdW1teSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZHVtbXkpOwotICAgICAgICB9Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7Ci0gICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKLSAgICAgICAgZXAtPm1lX3ZhbHVlID0gdmFsdWU7Ci0gICAgICAgIG1wLT5tYV91c2VkKys7Ci0gICAgfQotICAgIHJldHVybiAwOworICAgIGFzc2VydChlcC0+bWVfdmFsdWUgPT0gTlVMTCk7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMpCisgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOworICAgIGVsc2UKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOworICAgIHJldHVybiBlcDsKIH0KIAorc3RhdGljIGludAoraW5zZXJ0aW9uX3Jlc2l6ZShQeURpY3RPYmplY3QgKm1wKQoreworICAgIHJldHVybiBkaWN0cmVzaXplKG1wLCBHUk9XVEhfUkFURShtcC0+bWFfdXNlZCkpOworfQogCiAvKgogSW50ZXJuYWwgcm91dGluZSB0byBpbnNlcnQgYSBuZXcgaXRlbSBpbnRvIHRoZSB0YWJsZS4KIFVzZWQgYm90aCBieSB0aGUgaW50ZXJuYWwgcmVzaXplIHJvdXRpbmUgYW5kIGJ5IHRoZSBwdWJsaWMgaW5zZXJ0IHJvdXRpbmUuCi1FYXRzIGEgcmVmZXJlbmNlIHRvIGtleSBhbmQgb25lIHRvIHZhbHVlLgogUmV0dXJucyAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZCwgb3IgMCBvbiBzdWNjZXNzLgogKi8KIHN0YXRpYyBpbnQKLWluc2VydGRpY3QocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICp2YWx1ZSkKK2luc2VydGRpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKm9sZF92YWx1ZTsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIGFzc2VydChrZXkgIT0gZHVtbXkpOwogCi0gICAgYXNzZXJ0KG1wLT5tYV9sb29rdXAgIT0gTlVMTCk7Ci0gICAgZXAgPSBtcC0+bWFfbG9va3VwKG1wLCBrZXksIGhhc2gpOworICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwgJiYgIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKKyAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBlcCA9IG1wLT5tYV9rZXlzLT5ka19sb29rdXAobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJldHVybiBpbnNlcnRkaWN0X2J5X2VudHJ5KG1wLCBrZXksIGhhc2gsIGVwLCB2YWx1ZSk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSk7CisgICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7CisgICAgaWYgKG9sZF92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgZXAtPm1lX2tleSAhPSBkdW1teSk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7CisgICAgICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOyAvKiB3aGljaCAqKkNBTioqIHJlLWVudGVyICovCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKKyAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KKyAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKKyAgICAgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlID49IDApOworICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKKyAgICAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKKyAgICAgICAgICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1wLT5tYV91c2VkKys7CisgICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7CisgICAgfQorICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgZXAtPm1lX2tleSAhPSBkdW1teSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIC8qCkBAIC01NzEsMTggKzg2NSwyNSBAQAogdXNpbmcgaW5zZXJ0ZGljdCgpIGluIGRpY3RyZXNpemUoKSBpcyBkYW5nZXJvdXMgKFNGIGJ1ZyAjMTQ1NjIwOSkuCiBOb3RlIHRoYXQgbm8gcmVmY291bnRzIGFyZSBjaGFuZ2VkIGJ5IHRoaXMgcm91dGluZTsgaWYgbmVlZGVkLCB0aGUgY2FsbGVyCiBpcyByZXNwb25zaWJsZSBmb3IgaW5jcmVmJ2luZyBga2V5YCBhbmQgYHZhbHVlYC4KK05laXRoZXIgbXAtPm1hX3VzZWQgbm9yIGstPmRrX3VzYWJsZSBhcmUgbW9kaWZpZWQgYnkgdGhpcyByb3V0aW5lOyB0aGUgY2FsbGVyCittdXN0IHNldCB0aGVtIGNvcnJlY3RseQogKi8KIHN0YXRpYyB2b2lkCi1pbnNlcnRkaWN0X2NsZWFuKHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAoraW5zZXJ0ZGljdF9jbGVhbihQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwKICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQogewotICAgIHJlZ2lzdGVyIHNpemVfdCBpOwotICAgIHJlZ2lzdGVyIHNpemVfdCBwZXJ0dXJiOwotICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gKHNpemVfdCltcC0+bWFfbWFzazsKLSAgICBQeURpY3RFbnRyeSAqZXAwID0gbXAtPm1hX3RhYmxlOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKKyAgICBzaXplX3QgaTsKKyAgICBzaXplX3QgcGVydHVyYjsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprID0gbXAtPm1hX2tleXM7CisgICAgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KURLX1NJWkUoayktMTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJmstPmRrX2VudHJpZXNbMF07CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogCi0gICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpOworICAgIGFzc2VydChrLT5ka19sb29rdXAgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHZhbHVlICE9IE5VTEwpOworICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisgICAgYXNzZXJ0KGtleSAhPSBkdW1teSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwgay0+ZGtfbG9va3VwID09IGxvb2tkaWN0KTsKICAgICBpID0gaGFzaCAmIG1hc2s7CiAgICAgZXAgPSAmZXAwW2ldOwogICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVwLT5tZV9rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewpAQCAtNTkwLDMxICs4OTEsMzEgQEAKICAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKICAgICB9CiAgICAgYXNzZXJ0KGVwLT5tZV92YWx1ZSA9PSBOVUxMKTsKLSAgICBtcC0+bWFfZmlsbCsrOwogICAgIGVwLT5tZV9rZXkgPSBrZXk7CiAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwogICAgIGVwLT5tZV92YWx1ZSA9IHZhbHVlOwotICAgIG1wLT5tYV91c2VkKys7CiB9CiAKIC8qCiBSZXN0cnVjdHVyZSB0aGUgdGFibGUgYnkgYWxsb2NhdGluZyBhIG5ldyB0YWJsZSBhbmQgcmVpbnNlcnRpbmcgYWxsCiBpdGVtcyBhZ2Fpbi4gIFdoZW4gZW50cmllcyBoYXZlIGJlZW4gZGVsZXRlZCwgdGhlIG5ldyB0YWJsZSBtYXkKIGFjdHVhbGx5IGJlIHNtYWxsZXIgdGhhbiB0aGUgb2xkIG9uZS4KK0lmIGEgdGFibGUgaXMgc3BsaXQgKGl0cyBrZXlzIGFuZCBoYXNoZXMgYXJlIHNoYXJlZCwgaXRzIHZhbHVlcyBhcmUgbm90KSwKK3RoZW4gdGhlIHZhbHVlcyBhcmUgdGVtcG9yYXJpbHkgY29waWVkIGludG8gdGhlIHRhYmxlLCBpdCBpcyByZXNpemVkIGFzCithIGNvbWJpbmVkIHRhYmxlLCB0aGVuIHRoZSBtZV92YWx1ZSBzbG90cyBpbiB0aGUgb2xkIHRhYmxlIGFyZSBOVUxMZWQgb3V0LgorQWZ0ZXIgcmVzaXppbmcgYSB0YWJsZSBpcyBhbHdheXMgY29tYmluZWQsCitidXQgY2FuIGJlIHJlc3BsaXQgYnkgbWFrZV9rZXlzX3NoYXJlZCgpLgogKi8KIHN0YXRpYyBpbnQKIGRpY3RyZXNpemUoUHlEaWN0T2JqZWN0ICptcCwgUHlfc3NpemVfdCBtaW51c2VkKQogewogICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKLSAgICBQeURpY3RFbnRyeSAqb2xkdGFibGUsICpuZXd0YWJsZSwgKmVwOwotICAgIFB5X3NzaXplX3QgaTsKLSAgICBpbnQgaXNfb2xkdGFibGVfbWFsbG9jZWQ7Ci0gICAgUHlEaWN0RW50cnkgc21hbGxfY29weVtQeURpY3RfTUlOU0laRV07CisgICAgUHlEaWN0S2V5c09iamVjdCAqb2xka2V5czsKKyAgICBQeU9iamVjdCAqKm9sZHZhbHVlczsKKyAgICBQeV9zc2l6ZV90IGksIG9sZHNpemU7CiAKLSAgICBhc3NlcnQobWludXNlZCA+PSAwKTsKLQotICAgIC8qIEZpbmQgdGhlIHNtYWxsZXN0IHRhYmxlIHNpemUgPiBtaW51c2VkLiAqLwotICAgIGZvciAobmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFOworLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCisgICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7CiAgICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7CiAgICAgICAgICBuZXdzaXplIDw8PSAxKQogICAgICAgICA7CkBAIC02MjIsODMgKzkyMywxMjUgQEAKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLQotICAgIC8qIEdldCBzcGFjZSBmb3IgYSBuZXcgdGFibGUuICovCi0gICAgb2xkdGFibGUgPSBtcC0+bWFfdGFibGU7Ci0gICAgYXNzZXJ0KG9sZHRhYmxlICE9IE5VTEwpOwotICAgIGlzX29sZHRhYmxlX21hbGxvY2VkID0gb2xkdGFibGUgIT0gbXAtPm1hX3NtYWxsdGFibGU7Ci0KLSAgICBpZiAobmV3c2l6ZSA9PSBQeURpY3RfTUlOU0laRSkgewotICAgICAgICAvKiBBIGxhcmdlIHRhYmxlIGlzIHNocmlua2luZywgb3Igd2UgY2FuJ3QgZ2V0IGFueSBzbWFsbGVyLiAqLwotICAgICAgICBuZXd0YWJsZSA9IG1wLT5tYV9zbWFsbHRhYmxlOwotICAgICAgICBpZiAobmV3dGFibGUgPT0gb2xkdGFibGUpIHsKLSAgICAgICAgICAgIGlmIChtcC0+bWFfZmlsbCA9PSBtcC0+bWFfdXNlZCkgewotICAgICAgICAgICAgICAgIC8qIE5vIGR1bW1pZXMsIHNvIG5vIHBvaW50IGRvaW5nIGFueXRoaW5nLiAqLwotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgIG9sZGtleXMgPSBtcC0+bWFfa2V5czsKKyAgICBvbGR2YWx1ZXMgPSBtcC0+bWFfdmFsdWVzOworICAgIC8qIEFsbG9jYXRlIGEgbmV3IHRhYmxlLiAqLworICAgIG1wLT5tYV9rZXlzID0gbmV3X2tleXNfb2JqZWN0KG5ld3NpemUpOworICAgIGlmIChtcC0+bWFfa2V5cyA9PSBOVUxMKSB7CisgICAgICAgIG1wLT5tYV9rZXlzID0gb2xka2V5czsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAob2xka2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0KQorICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7CisgICAgb2xkc2l6ZSA9IERLX1NJWkUob2xka2V5cyk7CisgICAgbXAtPm1hX3ZhbHVlcyA9IE5VTEw7CisgICAgLyogSWYgZW1wdHkgdGhlbiBub3RoaW5nIHRvIGNvcHkgc28ganVzdCByZXR1cm4gKi8KKyAgICBpZiAob2xkc2l6ZSA9PSAxKSB7CisgICAgICAgIGFzc2VydChvbGRrZXlzID09IFB5X0VNUFRZX0tFWVMpOworICAgICAgICBES19ERUNSRUYob2xka2V5cyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAvKiBNYWluIGxvb3AgYmVsb3cgYXNzdW1lcyB3ZSBjYW4gdHJhbnNmZXIgcmVmY291bnQgdG8gbmV3IGtleXMKKyAgICAgKiBhbmQgdGhhdCB2YWx1ZSBpcyBzdG9yZWQgaW4gbWVfdmFsdWUuCisgICAgICogSW5jcmVtZW50IHJlZi1jb3VudHMgYW5kIGNvcHkgdmFsdWVzIGhlcmUgdG8gY29tcGVuc2F0ZQorICAgICAqIFRoaXMgKHJlc2l6aW5nIGEgc3BsaXQgdGFibGUpIHNob3VsZCBiZSByZWxhdGl2ZWx5IHJhcmUgKi8KKyAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYgKG9sZHZhbHVlc1tpXSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KTsKKyAgICAgICAgICAgICAgICBvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlID0gb2xkdmFsdWVzW2ldOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogV2UncmUgbm90IGdvaW5nIHRvIHJlc2l6ZSBpdCwgYnV0IHJlYnVpbGQgdGhlCi0gICAgICAgICAgICAgICB0YWJsZSBhbnl3YXkgdG8gcHVyZ2Ugb2xkIGR1bW15IGVudHJpZXMuCi0gICAgICAgICAgICAgICBTdWJ0bGU6ICBUaGlzIGlzICpuZWNlc3NhcnkqIGlmIGZpbGw9PXNpemUsCi0gICAgICAgICAgICAgICBhcyBsb29rZGljdCBuZWVkcyBhdCBsZWFzdCBvbmUgdmlyZ2luIHNsb3QgdG8KLSAgICAgICAgICAgICAgIHRlcm1pbmF0ZSBmYWlsaW5nIHNlYXJjaGVzLiAgSWYgZmlsbCA8IHNpemUsIGl0J3MKLSAgICAgICAgICAgICAgIG1lcmVseSBkZXNpcmFibGUsIGFzIGR1bW1pZXMgc2xvdyBzZWFyY2hlcy4gKi8KLSAgICAgICAgICAgIGFzc2VydChtcC0+bWFfZmlsbCA+IG1wLT5tYV91c2VkKTsKLSAgICAgICAgICAgIG1lbWNweShzbWFsbF9jb3B5LCBvbGR0YWJsZSwgc2l6ZW9mKHNtYWxsX2NvcHkpKTsKLSAgICAgICAgICAgIG9sZHRhYmxlID0gc21hbGxfY29weTsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbmV3dGFibGUgPSBQeU1lbV9ORVcoUHlEaWN0RW50cnksIG5ld3NpemUpOwotICAgICAgICBpZiAobmV3dGFibGUgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIE1ha2UgdGhlIGRpY3QgZW1wdHksIHVzaW5nIHRoZSBuZXcgdGFibGUuICovCi0gICAgYXNzZXJ0KG5ld3RhYmxlICE9IG9sZHRhYmxlKTsKLSAgICBtcC0+bWFfdGFibGUgPSBuZXd0YWJsZTsKLSAgICBtcC0+bWFfbWFzayA9IG5ld3NpemUgLSAxOwotICAgIG1lbXNldChuZXd0YWJsZSwgMCwgc2l6ZW9mKFB5RGljdEVudHJ5KSAqIG5ld3NpemUpOwotICAgIG1wLT5tYV91c2VkID0gMDsKLSAgICBpID0gbXAtPm1hX2ZpbGw7Ci0gICAgbXAtPm1hX2ZpbGwgPSAwOwotCi0gICAgLyogQ29weSB0aGUgZGF0YSBvdmVyOyB0aGlzIGlzIHJlZmNvdW50LW5ldXRyYWwgZm9yIGFjdGl2ZSBlbnRyaWVzOwotICAgICAgIGR1bW15IGVudHJpZXMgYXJlbid0IGNvcGllZCBvdmVyLCBvZiBjb3Vyc2UgKi8KLSAgICBmb3IgKGVwID0gb2xkdGFibGU7IGkgPiAwOyBlcCsrKSB7Ci0gICAgICAgIGlmIChlcC0+bWVfdmFsdWUgIT0gTlVMTCkgeyAgICAgICAgICAgICAvKiBhY3RpdmUgZW50cnkgKi8KLSAgICAgICAgICAgIC0taTsKKyAgICAvKiBNYWluIGxvb3AgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZvbGRrZXlzLT5ka19lbnRyaWVzW2ldOworICAgICAgICBpZiAoZXAtPm1lX3ZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IGR1bW15KTsKICAgICAgICAgICAgIGluc2VydGRpY3RfY2xlYW4obXAsIGVwLT5tZV9rZXksIGVwLT5tZV9oYXNoLCBlcC0+bWVfdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGVwLT5tZV9rZXkgIT0gTlVMTCkgeyAgICAgICAgICAvKiBkdW1teSBlbnRyeSAqLwotICAgICAgICAgICAgLS1pOwotICAgICAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gZHVtbXkpOwotICAgICAgICAgICAgUHlfREVDUkVGKGVwLT5tZV9rZXkpOwotICAgICAgICB9Ci0gICAgICAgIC8qIGVsc2Uga2V5ID09IHZhbHVlID09IE5VTEw6ICBub3RoaW5nIHRvIGRvICovCiAgICAgfQotCi0gICAgaWYgKGlzX29sZHRhYmxlX21hbGxvY2VkKQotICAgICAgICBQeU1lbV9ERUwob2xkdGFibGUpOworICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUgLT0gbXAtPm1hX3VzZWQ7CisgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7CisgICAgICAgIC8qIE5VTEwgb3V0IG1lX3ZhbHVlIHNsb3QgaW4gb2xka2V5cywgaW4gY2FzZSBpdCB3YXMgc2hhcmVkICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspCisgICAgICAgICAgICBvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlID0gTlVMTDsKKyAgICAgICAgYXNzZXJ0KG9sZHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpOworICAgICAgICBmcmVlX3ZhbHVlcyhvbGR2YWx1ZXMpOworICAgICAgICBES19ERUNSRUYob2xka2V5cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfbG9va3VwICE9IGxvb2tkaWN0X3NwbGl0KTsKKyAgICAgICAgaWYgKG9sZGtleXMtPmRrX2xvb2t1cCAhPSBsb29rZGljdF91bmljb2RlX25vZHVtbXkpIHsKKyAgICAgICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmb2xka2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoZXAwW2ldLm1lX2tleSA9PSBkdW1teSkKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfcmVmY250ID09IDEpOworICAgICAgICBES19ERUJVR19ERUNSRUYgUHlNZW1fRlJFRShvbGRrZXlzKTsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIENyZWF0ZSBhIG5ldyBkaWN0aW9uYXJ5IHByZS1zaXplZCB0byBob2xkIGFuIGVzdGltYXRlZCBudW1iZXIgb2YgZWxlbWVudHMuCi0gICBVbmRlcmVzdGltYXRlcyBhcmUgb2theSBiZWNhdXNlIHRoZSBkaWN0aW9uYXJ5IHdpbGwgcmVzaXplIGFzIG5lY2Vzc2FyeS4KLSAgIE92ZXJlc3RpbWF0ZXMganVzdCBtZWFuIHRoZSBkaWN0aW9uYXJ5IHdpbGwgYmUgbW9yZSBzcGFyc2UgdGhhbiB1c3VhbC4KLSovCisvKiBSZXR1cm5zIE5VTEwgaWYgdW5hYmxlIHRvIHNwbGl0IHRhYmxlLgorICogQSBOVUxMIHJldHVybiBkb2VzIG5vdCBuZWNlc3NhcmlseSBpbmRpY2F0ZSBhbiBlcnJvciAqLworc3RhdGljIFB5RGljdEtleXNPYmplY3QgKgorbWFrZV9rZXlzX3NoYXJlZChQeU9iamVjdCAqb3ApCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOworCisgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChvcCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAwOworICAgICAgICBQeU9iamVjdCAqKnZhbHVlczsKKyAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka19yZWZjbnQgPT0gMSk7CisgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0KSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGUpIHsKKyAgICAgICAgICAgIC8qIFJlbW92ZSBkdW1teSBrZXlzICovCisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSk7CisgICAgICAgIC8qIENvcHkgdmFsdWVzIGludG8gYSBuZXcgYXJyYXkgKi8KKyAgICAgICAgZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgICAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgICAgIHZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CisgICAgICAgIGlmICh2YWx1ZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLAorICAgICAgICAgICAgICAgICJOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBuZXcgdmFsdWVzIGFycmF5Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICB2YWx1ZXNbaV0gPSBlcDBbaV0ubWVfdmFsdWU7CisgICAgICAgICAgICBlcDBbaV0ubWVfdmFsdWUgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdF9zcGxpdDsKKyAgICAgICAgbXAtPm1hX3ZhbHVlcyA9IHZhbHVlczsKKyAgICB9CisgICAgREtfSU5DUkVGKG1wLT5tYV9rZXlzKTsKKyAgICByZXR1cm4gbXAtPm1hX2tleXM7Cit9CiAKIFB5T2JqZWN0ICoKIF9QeURpY3RfTmV3UHJlc2l6ZWQoUHlfc3NpemVfdCBtaW51c2VkKQogewotICAgIFB5T2JqZWN0ICpvcCA9IFB5RGljdF9OZXcoKTsKLQotICAgIGlmIChtaW51c2VkPjUgJiYgb3AgIT0gTlVMTCAmJiBkaWN0cmVzaXplKChQeURpY3RPYmplY3QgKilvcCwgbWludXNlZCkgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKG9wKTsKKyAgICBQeV9zc2l6ZV90IG5ld3NpemU7CisgICAgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXM7CisgICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7CisgICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7CisgICAgICAgICBuZXdzaXplIDw8PSAxKQorICAgICAgICA7CisgICAgbmV3X2tleXMgPSBuZXdfa2V5c19vYmplY3QobmV3c2l6ZSk7CisgICAgaWYgKG5ld19rZXlzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gb3A7CisgICAgcmV0dXJuIG5ld19kaWN0KG5ld19rZXlzLCBOVUxMKTsKIH0KIAogLyogTm90ZSB0aGF0LCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCBQeURpY3RfR2V0SXRlbSgpIHN1cHByZXNzZXMgYWxsIGVycm9ycwpAQCAtNzE2LDEyICsxMDU5LDE0IEBACiB7CiAgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkKICAgICB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKSB7CkBAIC03NDEsMjAgKzEwODYsMjAgQEAKICAgICAgICAgLyogcHJlc2VydmUgdGhlIGV4aXN0aW5nIGV4Y2VwdGlvbiAqLwogICAgICAgICBQeU9iamVjdCAqZXJyX3R5cGUsICplcnJfdmFsdWUsICplcnJfdGI7CiAgICAgICAgIFB5RXJyX0ZldGNoKCZlcnJfdHlwZSwgJmVycl92YWx1ZSwgJmVycl90Yik7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJfdHlwZSwgZXJyX3ZhbHVlLCBlcnJfdGIpOwogICAgICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICAgICAgaWYgKGVwID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gZXAtPm1lX3ZhbHVlOworICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KIAogLyogVmFyaWFudCBvZiBQeURpY3RfR2V0SXRlbSgpIHRoYXQgZG9lc24ndCBzdXBwcmVzcyBleGNlcHRpb25zLgpAQCAtNzY2LDE0ICsxMTExLDE1IEBACiB7CiAgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgUHlEaWN0T2JqZWN0Km1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQogICAgIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpIHsKQEAgLTc4MSw0OSArMTEyNyw1NSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gZXAtPm1lX3ZhbHVlOworICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KIAotc3RhdGljIGludAotZGljdF9zZXRfaXRlbV9ieV9oYXNoX29yX2VudHJ5KHJlZ2lzdGVyIFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlEaWN0RW50cnkgKmVwLCBQeU9iamVjdCAqdmFsdWUpCitQeU9iamVjdCAqCitfUHlEaWN0X0dldEl0ZW1JZFdpdGhFcnJvcihQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5KQogewotICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBuX3VzZWQ7CisgICAgUHlPYmplY3QgKmt2OworICAgIGt2ID0gX1B5VW5pY29kZV9Gcm9tSWQoa2V5KTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoa3YgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKGRwLCBrdik7Cit9CiAKLSAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBhc3NlcnQobXAtPm1hX2ZpbGwgPD0gbXAtPm1hX21hc2spOyAgLyogYXQgbGVhc3Qgb25lIGVtcHR5IHNsb3QgKi8KLSAgICBuX3VzZWQgPSBtcC0+bWFfdXNlZDsKLSAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIFB5X0lOQ1JFRihrZXkpOwotICAgIGlmIChlcCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOworLyogRmFzdCB2ZXJzaW9uIG9mIGdsb2JhbCB2YWx1ZSBsb29rdXAuCisgKiBMb29rdXAgaW4gZ2xvYmFscywgdGhlbiBidWlsdGlucy4KKyAqLworUHlPYmplY3QgKgorX1B5RGljdF9Mb2FkR2xvYmFsKFB5RGljdE9iamVjdCAqZ2xvYmFscywgUHlEaWN0T2JqZWN0ICpidWlsdGlucywgUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeU9iamVjdCAqeDsKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopa2V5KS0+aGFzaDsKKyAgICAgICAgaWYgKGhhc2ggIT0gLTEpIHsKKyAgICAgICAgICAgIFB5RGljdEtleUVudHJ5ICplOworICAgICAgICAgICAgZSA9IGdsb2JhbHMtPm1hX2tleXMtPmRrX2xvb2t1cChnbG9iYWxzLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHggPSAqdmFsdWVfYWRkcjsKKyAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICBlID0gYnVpbHRpbnMtPm1hX2tleXMtPmRrX2xvb2t1cChidWlsdGlucywga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgICAgICBpZiAoZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB4ID0gKnZhbHVlX2FkZHI7CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGluc2VydGRpY3RfYnlfZW50cnkobXAsIGtleSwgaGFzaCwgZXAsIHZhbHVlKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAvKiBJZiB3ZSBhZGRlZCBhIGtleSwgd2UgY2FuIHNhZmVseSByZXNpemUuICBPdGhlcndpc2UganVzdCByZXR1cm4hCi0gICAgICogSWYgZmlsbCA+PSAyLzMgc2l6ZSwgYWRqdXN0IHNpemUuICBOb3JtYWxseSwgdGhpcyBkb3VibGVzIG9yCi0gICAgICogcXVhZHVwbGVzIHRoZSBzaXplLCBidXQgaXQncyBhbHNvIHBvc3NpYmxlIGZvciB0aGUgZGljdCB0byBzaHJpbmsKLSAgICAgKiAoaWYgbWFfZmlsbCBpcyBtdWNoIGxhcmdlciB0aGFuIG1hX3VzZWQsIG1lYW5pbmcgYSBsb3Qgb2YgZGljdAotICAgICAqIGtleXMgaGF2ZSBiZWVuICogZGVsZXRlZCkuCi0gICAgICoKLSAgICAgKiBRdWFkcnVwbGluZyB0aGUgc2l6ZSBpbXByb3ZlcyBhdmVyYWdlIGRpY3Rpb25hcnkgc3BhcnNlbmVzcwotICAgICAqIChyZWR1Y2luZyBjb2xsaXNpb25zKSBhdCB0aGUgY29zdCBvZiBzb21lIG1lbW9yeSBhbmQgaXRlcmF0aW9uCi0gICAgICogc3BlZWQgKHdoaWNoIGxvb3BzIG92ZXIgZXZlcnkgcG9zc2libGUgZW50cnkpLiAgSXQgYWxzbyBoYWx2ZXMKLSAgICAgKiB0aGUgbnVtYmVyIG9mIGV4cGVuc2l2ZSByZXNpemUgb3BlcmF0aW9ucyBpbiBhIGdyb3dpbmcgZGljdGlvbmFyeS4KLSAgICAgKgotICAgICAqIFZlcnkgbGFyZ2UgZGljdGlvbmFyaWVzIChvdmVyIDUwSyBpdGVtcykgdXNlIGRvdWJsaW5nIGluc3RlYWQuCi0gICAgICogVGhpcyBtYXkgaGVscCBhcHBsaWNhdGlvbnMgd2l0aCBzZXZlcmUgbWVtb3J5IGNvbnN0cmFpbnRzLgotICAgICAqLwotICAgIGlmICghKG1wLT5tYV91c2VkID4gbl91c2VkICYmIG1wLT5tYV9maWxsKjMgPj0gKG1wLT5tYV9tYXNrKzEpKjIpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZGljdHJlc2l6ZShtcCwgKG1wLT5tYV91c2VkID4gNTAwMDAgPyAyIDogNCkgKiBtcC0+bWFfdXNlZCk7CisgICAgeCA9IFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKWdsb2JhbHMsIGtleSk7CisgICAgaWYgKHggIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIHg7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilidWlsdGlucywga2V5KTsKIH0KIAogLyogQ0FVVElPTjogUHlEaWN0X1NldEl0ZW0oKSBtdXN0IGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IHJlc2l6ZSB0aGUKQEAgLTgzMywzNiArMTE4NSwzNyBAQAogICogcmVtb3ZlIHRoZW0uCiAgKi8KIGludAotUHlEaWN0X1NldEl0ZW0ocmVnaXN0ZXIgUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCitQeURpY3RfU2V0SXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICByZWdpc3RlciBQeV9oYXNoX3QgaGFzaDsKLQorICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGFzc2VydChrZXkpOwogICAgIGFzc2VydCh2YWx1ZSk7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSAgICAgICAgaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2g7Ci0gICAgICAgIGlmIChoYXNoID09IC0xKQotICAgICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQorICAgIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJldHVybiBkaWN0X3NldF9pdGVtX2J5X2hhc2hfb3JfZW50cnkob3AsIGtleSwgaGFzaCwgTlVMTCwgdmFsdWUpOworCisgICAgLyogaW5zZXJ0ZGljdCgpIGhhbmRsZXMgYW55IHJlc2l6aW5nIHRoYXQgbWlnaHQgYmUgbmVjZXNzYXJ5ICovCisgICAgcmV0dXJuIGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpOwogfQogCiBpbnQKIFB5RGljdF9EZWxJdGVtKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKLSAgICByZWdpc3RlciBQeURpY3RPYmplY3QgKm1wOwotICAgIHJlZ2lzdGVyIFB5X2hhc2hfdCBoYXNoOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKLSAgICBQeU9iamVjdCAqb2xkX3ZhbHVlLCAqb2xkX2tleTsKKyAgICBQeURpY3RPYmplY3QgKm1wOworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqb2xkX2tleSwgKm9sZF92YWx1ZTsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CkBAIC04NzAsMjcgKzEyMjMsMzAgQEAKICAgICB9CiAgICAgYXNzZXJ0KGtleSk7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChlcC0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgIGlmICgqdmFsdWVfYWRkciA9PSBOVUxMKSB7CiAgICAgICAgIHNldF9rZXlfZXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICBvbGRfdmFsdWUgPSBlcC0+bWVfdmFsdWU7Ci0gICAgZXAtPm1lX3ZhbHVlID0gTlVMTDsKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICAqdmFsdWVfYWRkciA9IE5VTEw7CiAgICAgbXAtPm1hX3VzZWQtLTsKKyAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OworICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7CisgICAgfQogICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOwotICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtODk4LDY5ICsxMjU0LDcwIEBACiBQeURpY3RfQ2xlYXIoUHlPYmplY3QgKm9wKQogewogICAgIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgUHlEaWN0RW50cnkgKmVwLCAqdGFibGU7Ci0gICAgaW50IHRhYmxlX2lzX21hbGxvY2VkOwotICAgIFB5X3NzaXplX3QgZmlsbDsKLSAgICBQeURpY3RFbnRyeSBzbWFsbF9jb3B5W1B5RGljdF9NSU5TSVpFXTsKLSNpZmRlZiBQeV9ERUJVRworICAgIFB5RGljdEtleXNPYmplY3QgKm9sZGtleXM7CisgICAgUHlPYmplY3QgKipvbGR2YWx1ZXM7CiAgICAgUHlfc3NpemVfdCBpLCBuOwotI2VuZGlmCiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCiAgICAgICAgIHJldHVybjsKKyAgICBtcCA9ICgoUHlEaWN0T2JqZWN0ICopb3ApOworICAgIG9sZGtleXMgPSBtcC0+bWFfa2V5czsKKyAgICBvbGR2YWx1ZXMgPSBtcC0+bWFfdmFsdWVzOworICAgIGlmIChvbGR2YWx1ZXMgPT0gZW1wdHlfdmFsdWVzKQorICAgICAgICByZXR1cm47CisgICAgLyogRW1wdHkgdGhlIGRpY3QuLi4gKi8KKyAgICBES19JTkNSRUYoUHlfRU1QVFlfS0VZUyk7CisgICAgbXAtPm1hX2tleXMgPSBQeV9FTVBUWV9LRVlTOworICAgIG1wLT5tYV92YWx1ZXMgPSBlbXB0eV92YWx1ZXM7CisgICAgbXAtPm1hX3VzZWQgPSAwOworICAgIC8qIC4uLnRoZW4gY2xlYXIgdGhlIGtleXMgYW5kIHZhbHVlcyAqLworICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgeworICAgICAgICBuID0gREtfU0laRShvbGRrZXlzKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIFB5X0NMRUFSKG9sZHZhbHVlc1tpXSk7CisgICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CisgICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgYXNzZXJ0KG9sZGtleXMtPmRrX3JlZmNudCA9PSAxKTsKKyAgICAgICBES19ERUNSRUYob2xka2V5cyk7CisgICAgfQorfQorCisvKiBSZXR1cm5zIC0xIGlmIG5vIG1vcmUgaXRlbXMgKG9yIG9wIGlzIG5vdCBhIGRpY3QpLAorICogaW5kZXggb2YgaXRlbSBvdGhlcndpc2UuIFN0b3JlcyB2YWx1ZSBpbiBwdmFsdWUKKyAqLworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitkaWN0X25leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICoqcHZhbHVlKQoreworICAgIFB5X3NzaXplX3QgbWFzaywgb2Zmc2V0OworICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CisKKworICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotI2lmZGVmIFB5X0RFQlVHCi0gICAgbiA9IG1wLT5tYV9tYXNrICsgMTsKLSAgICBpID0gMDsKLSNlbmRpZgotCi0gICAgdGFibGUgPSBtcC0+bWFfdGFibGU7Ci0gICAgYXNzZXJ0KHRhYmxlICE9IE5VTEwpOwotICAgIHRhYmxlX2lzX21hbGxvY2VkID0gdGFibGUgIT0gbXAtPm1hX3NtYWxsdGFibGU7Ci0KLSAgICAvKiBUaGlzIGlzIGRlbGljYXRlLiAgRHVyaW5nIHRoZSBwcm9jZXNzIG9mIGNsZWFyaW5nIHRoZSBkaWN0LAotICAgICAqIGRlY3JlZnMgY2FuIGNhdXNlIHRoZSBkaWN0IHRvIG11dGF0ZS4gIFRvIGF2b2lkIGZhdGFsIGNvbmZ1c2lvbgotICAgICAqICh2b2ljZSBvZiBleHBlcmllbmNlKSwgd2UgaGF2ZSB0byBtYWtlIHRoZSBkaWN0IGVtcHR5IGJlZm9yZQotICAgICAqIGNsZWFyaW5nIHRoZSBzbG90cywgYW5kIG5ldmVyIHJlZmVyIHRvIGFueXRoaW5nIHZpYSBtcC0+eHh4IHdoaWxlCi0gICAgICogY2xlYXJpbmcuCi0gICAgICovCi0gICAgZmlsbCA9IG1wLT5tYV9maWxsOwotICAgIGlmICh0YWJsZV9pc19tYWxsb2NlZCkKLSAgICAgICAgRU1QVFlfVE9fTUlOU0laRShtcCk7Ci0KLSAgICBlbHNlIGlmIChmaWxsID4gMCkgewotICAgICAgICAvKiBJdCdzIGEgc21hbGwgdGFibGUgd2l0aCBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBiZSBjbGVhcmVkLgotICAgICAgICAgKiBBZnJhaWQgdGhlIG9ubHkgc2FmZSB3YXkgaXMgdG8gY29weSB0aGUgZGljdCBlbnRyaWVzIGludG8KLSAgICAgICAgICogYW5vdGhlciBzbWFsbCB0YWJsZSBmaXJzdC4KLSAgICAgICAgICovCi0gICAgICAgIG1lbWNweShzbWFsbF9jb3B5LCB0YWJsZSwgc2l6ZW9mKHNtYWxsX2NvcHkpKTsKLSAgICAgICAgdGFibGUgPSBzbWFsbF9jb3B5OwotICAgICAgICBFTVBUWV9UT19NSU5TSVpFKG1wKTsKKyAgICBpZiAoaSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgIH0KLSAgICAvKiBlbHNlIGl0J3MgYSBzbWFsbCB0YWJsZSB0aGF0J3MgYWxyZWFkeSBlbXB0eSAqLwotCi0gICAgLyogTm93IHdlIGNhbiBmaW5hbGx5IGNsZWFyIHRoaW5ncy4gIElmIEMgaGFkIHJlZmNvdW50cywgd2UgY291bGQKLSAgICAgKiBhc3NlcnQgdGhhdCB0aGUgcmVmY291bnQgb24gdGFibGUgaXMgMSBub3csIGkuZS4gdGhhdCB0aGlzIGZ1bmN0aW9uCi0gICAgICogaGFzIHVuaXF1ZSBhY2Nlc3MgdG8gaXQsIHNvIGRlY3JlZiBzaWRlLWVmZmVjdHMgY2FuJ3QgYWx0ZXIgaXQuCi0gICAgICovCi0gICAgZm9yIChlcCA9IHRhYmxlOyBmaWxsID4gMDsgKytlcCkgewotI2lmZGVmIFB5X0RFQlVHCi0gICAgICAgIGFzc2VydChpIDwgbik7Ci0gICAgICAgICsraTsKLSNlbmRpZgotICAgICAgICBpZiAoZXAtPm1lX2tleSkgewotICAgICAgICAgICAgLS1maWxsOwotICAgICAgICAgICAgUHlfREVDUkVGKGVwLT5tZV9rZXkpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihlcC0+bWVfdmFsdWUpOwotICAgICAgICB9Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXNzZXJ0KGVwLT5tZV92YWx1ZSA9PSBOVUxMKTsKLSNlbmRpZgorICAgIGVsc2UgeworICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CiAgICAgfQotCi0gICAgaWYgKHRhYmxlX2lzX21hbGxvY2VkKQotICAgICAgICBQeU1lbV9ERUwodGFibGUpOworICAgIG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKKyAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOworICAgICAgICBpKys7CisgICAgfQorICAgIGlmIChpID4gbWFzaykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChwdmFsdWUpCisgICAgICAgICpwdmFsdWUgPSAqdmFsdWVfcHRyOworICAgIHJldHVybiBpOwogfQogCiAvKgpAQCAtOTgxLDc1ICsxMzM4LDU5IEBACiBpbnQKIFB5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LCBQeU9iamVjdCAqKnB2YWx1ZSkKIHsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBtYXNrOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKLQotICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaSA9ICpwcG9zOworICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlfc3NpemVfdCBpID0gZGljdF9uZXh0KG9wLCAqcHBvcywgcHZhbHVlKTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiAwOwotICAgIGVwID0gKChQeURpY3RPYmplY3QgKilvcCktPm1hX3RhYmxlOwotICAgIG1hc2sgPSAoKFB5RGljdE9iamVjdCAqKW9wKS0+bWFfbWFzazsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmIGVwW2ldLm1lX3ZhbHVlID09IE5VTEwpCi0gICAgICAgIGkrKzsKKyAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKICAgICAqcHBvcyA9IGkrMTsKLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIHJldHVybiAwOwogICAgIGlmIChwa2V5KQotICAgICAgICAqcGtleSA9IGVwW2ldLm1lX2tleTsKLSAgICBpZiAocHZhbHVlKQotICAgICAgICAqcHZhbHVlID0gZXBbaV0ubWVfdmFsdWU7CisgICAgICAgICpwa2V5ID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OwogICAgIHJldHVybiAxOwogfQogCi0vKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9OZXh0IHRoYXQgcmV0dXJucyBhIGhhc2ggdmFsdWUgaW4gYWRkaXRpb24gdG8gdGhlIGtleSBhbmQgdmFsdWUuKi8KKy8qIEludGVybmFsIHZlcnNpb24gb2YgUHlEaWN0X05leHQgdGhhdCByZXR1cm5zIGEgaGFzaCB2YWx1ZSBpbiBhZGRpdGlvbgorICogdG8gdGhlIGtleSBhbmQgdmFsdWUuCisgKi8KIGludAotX1B5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LCBQeU9iamVjdCAqKnB2YWx1ZSwgUHlfaGFzaF90ICpwaGFzaCkKK19QeURpY3RfTmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgKnBwb3MsIFB5T2JqZWN0ICoqcGtleSwKKyAgICAgICAgICAgICBQeU9iamVjdCAqKnB2YWx1ZSwgUHlfaGFzaF90ICpwaGFzaCkKIHsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBtYXNrOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKLQotICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaSA9ICpwcG9zOworICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlfc3NpemVfdCBpID0gZGljdF9uZXh0KG9wLCAqcHBvcywgcHZhbHVlKTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiAwOwotICAgIGVwID0gKChQeURpY3RPYmplY3QgKilvcCktPm1hX3RhYmxlOwotICAgIG1hc2sgPSAoKFB5RGljdE9iamVjdCAqKW9wKS0+bWFfbWFzazsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmIGVwW2ldLm1lX3ZhbHVlID09IE5VTEwpCi0gICAgICAgIGkrKzsKKyAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKICAgICAqcHBvcyA9IGkrMTsKLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIHJldHVybiAwOwotICAgICpwaGFzaCA9IGVwW2ldLm1lX2hhc2g7CisgICAgKnBoYXNoID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfaGFzaDsKICAgICBpZiAocGtleSkKLSAgICAgICAgKnBrZXkgPSBlcFtpXS5tZV9rZXk7Ci0gICAgaWYgKHB2YWx1ZSkKLSAgICAgICAgKnB2YWx1ZSA9IGVwW2ldLm1lX3ZhbHVlOworICAgICAgICAqcGtleSA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKICAgICByZXR1cm4gMTsKIH0KIAogLyogTWV0aG9kcyAqLwogCiBzdGF0aWMgdm9pZAotZGljdF9kZWFsbG9jKHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXApCitkaWN0X2RlYWxsb2MoUHlEaWN0T2JqZWN0ICptcCkKIHsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7Ci0gICAgUHlfc3NpemVfdCBmaWxsID0gbXAtPm1hX2ZpbGw7CisgICAgUHlPYmplY3QgKip2YWx1ZXMgPSBtcC0+bWFfdmFsdWVzOworICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSBtcC0+bWFfa2V5czsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlPYmplY3RfR0NfVW5UcmFjayhtcCk7CiAgICAgUHlfVFJBU0hDQU5fU0FGRV9CRUdJTihtcCkKLSAgICBmb3IgKGVwID0gbXAtPm1hX3RhYmxlOyBmaWxsID4gMDsgZXArKykgewotICAgICAgICBpZiAoZXAtPm1lX2tleSkgewotICAgICAgICAgICAgLS1maWxsOwotICAgICAgICAgICAgUHlfREVDUkVGKGVwLT5tZV9rZXkpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihlcC0+bWVfdmFsdWUpOworICAgIGlmICh2YWx1ZXMgIT0gTlVMTCkgeworICAgICAgICBpZiAodmFsdWVzICE9IGVtcHR5X3ZhbHVlcykgeworICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJlZV92YWx1ZXModmFsdWVzKTsKICAgICAgICAgfQorICAgICAgICBES19ERUNSRUYoa2V5cyk7CiAgICAgfQotICAgIGlmIChtcC0+bWFfdGFibGUgIT0gbXAtPm1hX3NtYWxsdGFibGUpCi0gICAgICAgIFB5TWVtX0RFTChtcC0+bWFfdGFibGUpOworICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoa2V5cy0+ZGtfcmVmY250ID09IDEpOworICAgICAgICBES19ERUNSRUYoa2V5cyk7CisgICAgfQogICAgIGlmIChudW1mcmVlIDwgUHlEaWN0X01BWEZSRUVMSVNUICYmIFB5X1RZUEUobXApID09ICZQeURpY3RfVHlwZSkKICAgICAgICAgZnJlZV9saXN0W251bWZyZWUrK10gPSBtcDsKICAgICBlbHNlCkBAIC0xMDU3LDYgKzEzOTgsNyBAQAogICAgIFB5X1RSQVNIQ0FOX1NBRkVfRU5EKG1wKQogfQogCisKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3JlcHIoUHlEaWN0T2JqZWN0ICptcCkKIHsKQEAgLTEwODgsMTEgKzE0MzAsMTMgQEAKICAgICBpID0gMDsKICAgICB3aGlsZSAoUHlEaWN0X05leHQoKFB5T2JqZWN0ICopbXAsICZpLCAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGludCBzdGF0dXM7Ci0gICAgICAgIC8qIFByZXZlbnQgcmVwciBmcm9tIGRlbGV0aW5nIHZhbHVlIGR1cmluZyBrZXkgZm9ybWF0LiAqLworICAgICAgICAvKiBQcmV2ZW50IHJlcHIgZnJvbSBkZWxldGluZyBrZXkgb3IgdmFsdWUgZHVyaW5nIGtleSBmb3JtYXQuICovCisgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICBzID0gUHlPYmplY3RfUmVwcihrZXkpOwogICAgICAgICBQeVVuaWNvZGVfQXBwZW5kKCZzLCBjb2xvbik7CiAgICAgICAgIFB5VW5pY29kZV9BcHBlbmRBbmREZWwoJnMsIFB5T2JqZWN0X1JlcHIodmFsdWUpKTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIERvbmU7CkBAIC0xMTQ3LDI2ICsxNDkxLDI1IEBACiB7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOwotICAgIGFzc2VydChtcC0+bWFfdGFibGUgIT0gTlVMTCk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGVwLT5tZV92YWx1ZTsKKyAgICB2ID0gKnZhbHVlX2FkZHI7CiAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG1wKSkgewogICAgICAgICAgICAgLyogTG9vayB1cCBfX21pc3NpbmdfXyBtZXRob2QgaWYgd2UncmUgYSBzdWJjbGFzcy4gKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICptaXNzaW5nLCAqcmVzOwotICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICptaXNzaW5nX3N0ciA9IE5VTEw7Ci0gICAgICAgICAgICBtaXNzaW5nID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoKFB5T2JqZWN0ICopbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fbWlzc2luZ19fIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWlzc2luZ19zdHIpOworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19taXNzaW5nX18pOworICAgICAgICAgICAgbWlzc2luZyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKChQeU9iamVjdCAqKW1wLCAmUHlJZF9fX21pc3NpbmdfXyk7CiAgICAgICAgICAgICBpZiAobWlzc2luZyAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhtaXNzaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LCBOVUxMKTsKQEAgLTEyMDQsOCArMTU0Nyw5IEBACiB7CiAgICAgcmVnaXN0ZXIgUHlPYmplY3QgKnY7CiAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBqOwotICAgIFB5RGljdEVudHJ5ICplcDsKLSAgICBQeV9zc2l6ZV90IG1hc2ssIG47CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgbiwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgIGFnYWluOgogICAgIG4gPSBtcC0+bWFfdXNlZDsKQEAgLTEyMTksMTUgKzE1NjMsMjQgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KLSAgICBlcCA9IG1wLT5tYV90YWJsZTsKLSAgICBtYXNrID0gbXAtPm1hX21hc2s7Ci0gICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPD0gbWFzazsgaSsrKSB7Ci0gICAgICAgIGlmIChlcFtpXS5tZV92YWx1ZSAhPSBOVUxMKSB7CisgICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZlcFswXS5tZV92YWx1ZTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICB9CisgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKCp2YWx1ZV9wdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IGVwW2ldLm1lX2tleTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHYsIGosIGtleSk7CiAgICAgICAgICAgICBqKys7CiAgICAgICAgIH0KKyAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKICAgICB9CiAgICAgYXNzZXJ0KGogPT0gbik7CiAgICAgcmV0dXJuIHY7CkBAIC0xMjM4LDggKzE1OTEsOCBAQAogewogICAgIHJlZ2lzdGVyIFB5T2JqZWN0ICp2OwogICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgajsKLSAgICBQeURpY3RFbnRyeSAqZXA7Ci0gICAgUHlfc3NpemVfdCBtYXNrLCBuOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgbiwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgIGFnYWluOgogICAgIG4gPSBtcC0+bWFfdXNlZDsKQEAgLTEyNTMsMTEgKzE2MDYsMTkgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KLSAgICBlcCA9IG1wLT5tYV90YWJsZTsKLSAgICBtYXNrID0gbXAtPm1hX21hc2s7Ci0gICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPD0gbWFzazsgaSsrKSB7Ci0gICAgICAgIGlmIChlcFtpXS5tZV92YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBlcFtpXS5tZV92YWx1ZTsKKyAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIH0KKyAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSAqdmFsdWVfcHRyOworICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOworICAgICAgICBpZiAodmFsdWUgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTSh2LCBqLCB2YWx1ZSk7CiAgICAgICAgICAgICBqKys7CkBAIC0xMjcyLDkgKzE2MzMsMTAgQEAKIHsKICAgICByZWdpc3RlciBQeU9iamVjdCAqdjsKICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIGosIG47Ci0gICAgUHlfc3NpemVfdCBtYXNrOwotICAgIFB5T2JqZWN0ICppdGVtLCAqa2V5LCAqdmFsdWU7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICppdGVtLCAqa2V5OworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIC8qIFByZWFsbG9jYXRlIHRoZSBsaXN0IG9mIHR1cGxlcywgdG8gYXZvaWQgYWxsb2NhdGlvbnMgZHVyaW5nCiAgICAgICogdGhlIGxvb3Agb3ZlciB0aGUgaXRlbXMsIHdoaWNoIGNvdWxkIHRyaWdnZXIgR0MsIHdoaWNoCkBAIC0xMzAxLDEwICsxNjYzLDIwIEBACiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQogICAgIC8qIE5vdGhpbmcgd2UgZG8gYmVsb3cgbWFrZXMgYW55IGZ1bmN0aW9uIGNhbGxzLiAqLwotICAgIGVwID0gbXAtPm1hX3RhYmxlOwotICAgIG1hc2sgPSBtcC0+bWFfbWFzazsKLSAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8PSBtYXNrOyBpKyspIHsKLSAgICAgICAgaWYgKCh2YWx1ZT1lcFtpXS5tZV92YWx1ZSkgIT0gTlVMTCkgeworICAgIGVwID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXM7CisgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZlcFswXS5tZV92YWx1ZTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICB9CisgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gKnZhbHVlX3B0cjsKKyAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKKyAgICAgICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKICAgICAgICAgICAgIGtleSA9IGVwW2ldLm1lX2tleTsKICAgICAgICAgICAgIGl0ZW0gPSBQeUxpc3RfR0VUX0lURU0odiwgaik7CiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKQEAgLTEzNDgsOCArMTcyMCw2IEBACiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAoX1B5RGljdF9OZXh0KHNlcSwgJnBvcywgJmtleSwgJm9sZHZhbHVlLCAmaGFzaCkpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzNzAsOCArMTc0MCw2IEBACiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAoX1B5U2V0X05leHRFbnRyeShzZXEsICZwb3MsICZrZXksICZoYXNoKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQyMyw3ICsxNzkxLDggQEAKICAgICAgICAgcmVzdWx0ID0gLTE7CiAKICAgICBlbHNlIGlmIChhcmcgIT0gTlVMTCkgewotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhhcmcsICJrZXlzIikpCisgICAgICAgIF9QeV9JREVOVElGSUVSKGtleXMpOworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChhcmcsICZQeUlkX2tleXMpKQogICAgICAgICAgICAgcmVzdWx0ID0gUHlEaWN0X01lcmdlKHNlbGYsIGFyZywgMSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IFB5RGljdF9NZXJnZUZyb21TZXEyKHNlbGYsIGFyZywgMSk7CkBAIC0xNTM1LDggKzE5MDQsOCBAQAogUHlEaWN0X01lcmdlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQogewogICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAsICpvdGhlcjsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgUHlEaWN0RW50cnkgKmVudHJ5OworICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbjsKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cnk7CiAKICAgICAvKiBXZSBhY2NlcHQgZm9yIHRoZSBhcmd1bWVudCBlaXRoZXIgYSBjb25jcmV0ZSBkaWN0aW9uYXJ5IG9iamVjdCwKICAgICAgKiBvciBhbiBhYnN0cmFjdCAibWFwcGluZyIgb2JqZWN0LiAgRm9yIHRoZSBmb3JtZXIsIHdlIGNhbiBkbwpAQCAtMTU2MywyMCArMTkzMiwyMyBAQAogICAgICAgICAgKiBpbmNyZW1lbnRhbGx5IHJlc2l6aW5nIGFzIHdlIGluc2VydCBuZXcgaXRlbXMuICBFeHBlY3QKICAgICAgICAgICogdGhhdCB0aGVyZSB3aWxsIGJlIG5vIChvciBmZXcpIG92ZXJsYXBwaW5nIGtleXMuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoKG1wLT5tYV9maWxsICsgb3RoZXItPm1hX3VzZWQpKjMgPj0gKG1wLT5tYV9tYXNrKzEpKjIpIHsKLSAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIChtcC0+bWFfdXNlZCArIG90aGVyLT5tYV91c2VkKSoyKSAhPSAwKQorICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSAqIDMgPCBvdGhlci0+bWFfdXNlZCAqIDIpCisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgKG1wLT5tYV91c2VkICsgb3RoZXItPm1hX3VzZWQpKjIpICE9IDApCiAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8PSBvdGhlci0+bWFfbWFzazsgaSsrKSB7Ci0gICAgICAgICAgICBlbnRyeSA9ICZvdGhlci0+bWFfdGFibGVbaV07Ci0gICAgICAgICAgICBpZiAoZW50cnktPm1lX3ZhbHVlICE9IE5VTEwgJiYKKyAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUob3RoZXItPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgICAgICAgICBlbnRyeSA9ICZvdGhlci0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICAgICAgICAgIGlmIChvdGhlci0+bWFfdmFsdWVzKQorICAgICAgICAgICAgICAgIHZhbHVlID0gb3RoZXItPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGVudHJ5LT5tZV92YWx1ZTsKKworICAgICAgICAgICAgaWYgKHZhbHVlICE9IE5VTEwgJiYKICAgICAgICAgICAgICAgICAob3ZlcnJpZGUgfHwKICAgICAgICAgICAgICAgICAgUHlEaWN0X0dldEl0ZW0oYSwgZW50cnktPm1lX2tleSkgPT0gTlVMTCkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZW50cnktPm1lX2tleSk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVudHJ5LT5tZV92YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGVudHJ5LT5tZV9rZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1lX2hhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1lX3ZhbHVlKSAhPSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKSAhPSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE2MzgsMTEgKzIwMTAsMzcgQEAKIFB5RGljdF9Db3B5KFB5T2JqZWN0ICpvKQogewogICAgIFB5T2JqZWN0ICpjb3B5OworICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlfc3NpemVfdCBpLCBuOwogCiAgICAgaWYgKG8gPT0gTlVMTCB8fCAhUHlEaWN0X0NoZWNrKG8pKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopbzsKKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBQeURpY3RPYmplY3QgKnNwbGl0X2NvcHk7CisgICAgICAgIFB5T2JqZWN0ICoqbmV3dmFsdWVzID0gbmV3X3ZhbHVlcyhES19TSVpFKG1wLT5tYV9rZXlzKSk7CisgICAgICAgIGlmIChuZXd2YWx1ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBzcGxpdF9jb3B5ID0gUHlPYmplY3RfR0NfTmV3KFB5RGljdE9iamVjdCwgJlB5RGljdF9UeXBlKTsKKyAgICAgICAgaWYgKHNwbGl0X2NvcHkgPT0gTlVMTCkgeworICAgICAgICAgICAgZnJlZV92YWx1ZXMobmV3dmFsdWVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNwbGl0X2NvcHktPm1hX3ZhbHVlcyA9IG5ld3ZhbHVlczsKKyAgICAgICAgc3BsaXRfY29weS0+bWFfa2V5cyA9IG1wLT5tYV9rZXlzOworICAgICAgICBzcGxpdF9jb3B5LT5tYV91c2VkID0gbXAtPm1hX3VzZWQ7CisgICAgICAgIERLX0lOQ1JFRihtcC0+bWFfa2V5cyk7CisgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgICAgIFB5X1hJTkNSRUYodmFsdWUpOworICAgICAgICAgICAgc3BsaXRfY29weS0+bWFfdmFsdWVzW2ldID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19JU19UUkFDS0VEKG1wKSkKKyAgICAgICAgICAgIF9QeU9iamVjdF9HQ19UUkFDSyhzcGxpdF9jb3B5KTsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNwbGl0X2NvcHk7CisgICAgfQogICAgIGNvcHkgPSBQeURpY3RfTmV3KCk7CiAgICAgaWYgKGNvcHkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNzA0LDE0ICsyMTAyLDE4IEBACiAgICAgaWYgKGEtPm1hX3VzZWQgIT0gYi0+bWFfdXNlZCkKICAgICAgICAgLyogY2FuJ3QgYmUgZXF1YWwgaWYgIyBvZiBlbnRyaWVzIGRpZmZlciAqLwogICAgICAgICByZXR1cm4gMDsKLQogICAgIC8qIFNhbWUgIyBvZiBlbnRyaWVzIC0tIGNoZWNrIGFsbCBvZiAnZW0uICBFeGl0IGVhcmx5IG9uIGFueSBkaWZmLiAqLwotICAgIGZvciAoaSA9IDA7IGkgPD0gYS0+bWFfbWFzazsgaSsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphdmFsID0gYS0+bWFfdGFibGVbaV0ubWVfdmFsdWU7CisgICAgZm9yIChpID0gMDsgaSA8IERLX1NJWkUoYS0+bWFfa2V5cyk7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmYS0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICAgICAgUHlPYmplY3QgKmF2YWw7CisgICAgICAgIGlmIChhLT5tYV92YWx1ZXMpCisgICAgICAgICAgICBhdmFsID0gYS0+bWFfdmFsdWVzW2ldOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhdmFsID0gZXAtPm1lX3ZhbHVlOwogICAgICAgICBpZiAoYXZhbCAhPSBOVUxMKSB7CiAgICAgICAgICAgICBpbnQgY21wOwogICAgICAgICAgICAgUHlPYmplY3QgKmJ2YWw7Ci0gICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gYS0+bWFfdGFibGVbaV0ubWVfa2V5OworICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IGVwLT5tZV9rZXk7CiAgICAgICAgICAgICAvKiB0ZW1wb3JhcmlseSBidW1wIGF2YWwncyByZWZjb3VudCB0byBlbnN1cmUgaXQgc3RheXMKICAgICAgICAgICAgICAgIGFsaXZlIHVudGlsIHdlJ3JlIGRvbmUgd2l0aCBpdCAqLwogICAgICAgICAgICAgUHlfSU5DUkVGKGF2YWwpOwpAQCAtMTczMiw3ICsyMTM0LDcgQEAKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMTsKLSB9Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQpAQCAtMTc1MywyNCArMjE1NSwyNSBAQAogICAgICAgICByZXMgPSBQeV9Ob3RJbXBsZW1lbnRlZDsKICAgICBQeV9JTkNSRUYocmVzKTsKICAgICByZXR1cm4gcmVzOwotIH0KK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfY29udGFpbnMocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhlcC0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE3ODAsMjggKzIxODMsMjggQEAKICAgICBQeU9iamVjdCAqZmFpbG9iaiA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLCAxLCAyLCAma2V5LCAmZmFpbG9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2YWwgPSBlcC0+bWVfdmFsdWU7CisgICAgdmFsID0gKnZhbHVlX2FkZHI7CiAgICAgaWYgKHZhbCA9PSBOVUxMKQogICAgICAgICB2YWwgPSBmYWlsb2JqOwogICAgIFB5X0lOQ1JFRih2YWwpOwogICAgIHJldHVybiB2YWw7CiB9CiAKLQogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3Rfc2V0ZGVmYXVsdChyZWdpc3RlciBQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE4MDksMjcgKzIyMTIsNDAgQEAKICAgICBQeU9iamVjdCAqZmFpbG9iaiA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRkZWZhdWx0IiwgMSwgMiwgJmtleSwgJmZhaWxvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsID0gZXAtPm1lX3ZhbHVlOworICAgIHZhbCA9ICp2YWx1ZV9hZGRyOwogICAgIGlmICh2YWwgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGljdF9zZXRfaXRlbV9ieV9oYXNoX29yX2VudHJ5KChQeU9iamVjdCopbXAsIGtleSwgaGFzaCwgZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbG9iaikgPT0gMCkKLSAgICAgICAgICAgIHZhbCA9IGZhaWxvYmo7CisgICAgICAgIFB5X0lOQ1JFRihmYWlsb2JqKTsKKyAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKKyAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLworICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgfQorICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCBmYWlsb2JqKTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKKyAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICAqdmFsdWVfYWRkciA9IGZhaWxvYmo7CisgICAgICAgIHZhbCA9IGZhaWxvYmo7CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKKyAgICAgICAgbXAtPm1hX3VzZWQrKzsKICAgICB9Ci0gICAgUHlfWElOQ1JFRih2YWwpOworICAgIFB5X0lOQ1JFRih2YWwpOwogICAgIHJldHVybiB2YWw7CiB9CiAKQEAgLTE4NDUsOSArMjI2MSwxMCBAQAogZGljdF9wb3AoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICpvbGRfdmFsdWUsICpvbGRfa2V5OwogICAgIFB5T2JqZWN0ICprZXksICpkZWZsdCA9IE5VTEw7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG9wIiwgMSwgMiwgJmtleSwgJmRlZmx0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODYwLDE1ICsyMjc3LDE2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChlcC0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGlmIChvbGRfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoZGVmbHQpIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7CiAgICAgICAgICAgICByZXR1cm4gZGVmbHQ7CkBAIC0xODc2LDEzICsyMjk0LDE1IEBACiAgICAgICAgIHNldF9rZXlfZXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgIG9sZF92YWx1ZSA9IGVwLT5tZV92YWx1ZTsKLSAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOworICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOwotICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKKyAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OworICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7CisgICAgfQogICAgIHJldHVybiBvbGRfdmFsdWU7CiB9CiAKQEAgLTE4OTAsOSArMjMxMCwxMCBAQAogZGljdF9wb3BpdGVtKFB5RGljdE9iamVjdCAqbXApCiB7CiAgICAgUHlfaGFzaF90IGkgPSAwOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKnJlczsKIAorCiAgICAgLyogQWxsb2NhdGUgdGhlIHJlc3VsdCB0dXBsZSBiZWZvcmUgY2hlY2tpbmcgdGhlIHNpemUuICBCZWxpZXZlIGl0CiAgICAgICogb3Igbm90LCB0aGlzIGFsbG9jYXRpb24gY291bGQgdHJpZ2dlciBhIGdhcmJhZ2UgY29sbGVjdGlvbiB3aGljaAogICAgICAqIGNvdWxkIGVtcHR5IHRoZSBkaWN0LCBzbyBpZiB3ZSBjaGVja2VkIHRoZSBzaXplIGZpcnN0IGFuZCB0aGF0CkBAIC0xOTExLDI1ICsyMzMyLDM0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAicG9waXRlbSgpOiBkaWN0aW9uYXJ5IGlzIGVtcHR5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICAvKiBDb252ZXJ0IHNwbGl0IHRhYmxlIHRvIGNvbWJpbmVkIHRhYmxlICovCisgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3Rfc3BsaXQpIHsKKyAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIERLX1NJWkUobXAtPm1hX2tleXMpKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7CiAgICAgLyogU2V0IGVwIHRvICJ0aGUgZmlyc3QiIGRpY3QgZW50cnkgd2l0aCBhIHZhbHVlLiAgV2UgYWJ1c2UgdGhlIGhhc2gKICAgICAgKiBmaWVsZCBvZiBzbG90IDAgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXI6CiAgICAgICogSWYgc2xvdCAwIGhhcyBhIHZhbHVlLCB1c2Ugc2xvdCAwLgogICAgICAqIEVsc2Ugc2xvdCAwIGlzIGJlaW5nIHVzZWQgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXIsCiAgICAgICogYW5kIHdlIHVzZSBpdHMgaGFzaCB2YWx1ZSBhcyB0aGUgZmlyc3QgaW5kZXggdG8gbG9vay4KICAgICAgKi8KLSAgICBlcCA9ICZtcC0+bWFfdGFibGVbMF07CisgICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CiAgICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwogICAgICAgICBpID0gZXAtPm1lX2hhc2g7CiAgICAgICAgIC8qIFRoZSBoYXNoIGZpZWxkIG1heSBiZSBhIHJlYWwgaGFzaCB2YWx1ZSwgb3IgaXQgbWF5IGJlIGEKICAgICAgICAgICogbGVnaXQgc2VhcmNoIGZpbmdlciwgb3IgaXQgbWF5IGJlIGEgb25jZS1sZWdpdCBzZWFyY2gKICAgICAgICAgICogZmluZ2VyIHRoYXQncyBvdXQgb2YgYm91bmRzIG5vdyBiZWNhdXNlIGl0IHdyYXBwZWQgYXJvdW5kCiAgICAgICAgICAqIG9yIHRoZSB0YWJsZSBzaHJ1bmsgLS0gc2ltcGx5IG1ha2Ugc3VyZSBpdCdzIGluIGJvdW5kcyBub3cuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoaSA+IG1wLT5tYV9tYXNrIHx8IGkgPCAxKQorICAgICAgICBpZiAoaSA+IG1hc2sgfHwgaSA8IDEpCiAgICAgICAgICAgICBpID0gMTsgICAgICAgICAgICAgIC8qIHNraXAgc2xvdCAwICovCi0gICAgICAgIHdoaWxlICgoZXAgPSAmbXAtPm1hX3RhYmxlW2ldKS0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICB3aGlsZSAoKGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldKS0+bWVfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgaWYgKGkgPiBtcC0+bWFfbWFzaykKKyAgICAgICAgICAgIGlmIChpID4gbWFzaykKICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgfQogICAgIH0KQEAgLTE5MzksMjEgKzIzNjksMzQgQEAKICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7CiAgICAgZXAtPm1lX3ZhbHVlID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOwotICAgIGFzc2VydChtcC0+bWFfdGFibGVbMF0ubWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgbXAtPm1hX3RhYmxlWzBdLm1lX2hhc2ggPSBpICsgMTsgIC8qIG5leHQgcGxhY2UgdG8gc3RhcnQgKi8KKyAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWUgPT0gTlVMTCk7CisgICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfaGFzaCA9IGkgKyAxOyAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLwogICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBpbnQKIGRpY3RfdHJhdmVyc2UoUHlPYmplY3QgKm9wLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGkgPSAwOwotICAgIFB5T2JqZWN0ICpwazsKLSAgICBQeU9iamVjdCAqcHY7Ci0KLSAgICB3aGlsZSAoUHlEaWN0X05leHQob3AsICZpLCAmcGssICZwdikpIHsKLSAgICAgICAgUHlfVklTSVQocGspOwotICAgICAgICBQeV9WSVNJVChwdik7CisgICAgUHlfc3NpemVfdCBpLCBuOworICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IERLX1NJWkUobXAtPm1hX2tleXMpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTE5NzAsMTQgKzI0MTMsMjUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3NpemVvZihQeURpY3RPYmplY3QgKm1wKQogewotICAgIFB5X3NzaXplX3QgcmVzOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgcmVzOwogCisgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOwogICAgIHJlcyA9IHNpemVvZihQeURpY3RPYmplY3QpOwotICAgIGlmIChtcC0+bWFfdGFibGUgIT0gbXAtPm1hX3NtYWxsdGFibGUpCi0gICAgICAgIHJlcyA9IHJlcyArIChtcC0+bWFfbWFzayArIDEpICogc2l6ZW9mKFB5RGljdEVudHJ5KTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcykKKyAgICAgICAgcmVzICs9IHNpemUgKiBzaXplb2YoUHlPYmplY3QqKTsKKyAgICAvKiBJZiB0aGUgZGljdGlvbmFyeSBpcyBzcGxpdCwgdGhlIGtleXMgcG9ydGlvbiBpcyBhY2NvdW50ZWQtZm9yCisgICAgICAgaW4gdGhlIHR5cGUgb2JqZWN0LiAqLworICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfcmVmY250ID09IDEpCisgICAgICAgIHJlcyArPSBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoc2l6ZS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogCitQeV9zc2l6ZV90CitfUHlEaWN0X0tleXNTaXplKFB5RGljdEtleXNPYmplY3QgKmtleXMpCit7CisgICAgcmV0dXJuIHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArIChES19TSVpFKGtleXMpLTEpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKK30KKwogUHlEb2NfU1RSVkFSKGNvbnRhaW5zX19kb2NfXywKICJELl9fY29udGFpbnNfXyhrKSAtPiBUcnVlIGlmIEQgaGFzIGEga2V5IGssIGVsc2UgRmFsc2UiKTsKIApAQCAtMjA2NiwxNiArMjUyMCwxNyBAQAogewogICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7Ci0gICAgcmV0dXJuIGVwID09IE5VTEwgPyAtMSA6IChlcC0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIHJldHVybiAoZXAgPT0gTlVMTCkgPyAtMSA6ICgqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfQ29udGFpbnMgdXNlZCB3aGVuIHRoZSBoYXNoIHZhbHVlIGlzIGFscmVhZHkga25vd24gKi8KQEAgLTIwODMsMTAgKzI1MzgsMTEgQEAKIF9QeURpY3RfQ29udGFpbnMoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCi0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7Ci0gICAgcmV0dXJuIGVwID09IE5VTEwgPyAtMSA6IChlcC0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIHJldHVybiAoZXAgPT0gTlVMTCkgPyAtMSA6ICgqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogLyogSGFjayB0byBpbXBsZW1lbnQgImtleSBpbiBkaWN0IiAqLwpAQCAtMjExMiwyMiArMjU2OCwxNyBAQAogICAgIHNlbGYgPSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIFB5RGljdE9iamVjdCAqZCA9IChQeURpY3RPYmplY3QgKilzZWxmOwotICAgICAgICAvKiBJdCdzIGd1YXJhbnRlZWQgdGhhdCB0cC0+YWxsb2MgemVyb2VkIG91dCB0aGUgc3RydWN0LiAqLwotICAgICAgICBhc3NlcnQoZC0+bWFfdGFibGUgPT0gTlVMTCAmJiBkLT5tYV9maWxsID09IDAgJiYgZC0+bWFfdXNlZCA9PSAwKTsKLSAgICAgICAgSU5JVF9OT05aRVJPX0RJQ1RfU0xPVFMoZCk7Ci0gICAgICAgIGQtPm1hX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGU7CisgICAgICAgIGQtPm1hX2tleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkVfQ09NQklORUQpOworICAgICAgICAvKiBYWFggLSBTaG91bGQgd2UgcmFpc2UgYSBuby1tZW1vcnkgZXJyb3I/ICovCisgICAgICAgIGlmIChkLT5tYV9rZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgIERLX0lOQ1JFRihQeV9FTVBUWV9LRVlTKTsKKyAgICAgICAgICAgIGQtPm1hX2tleXMgPSBQeV9FTVBUWV9LRVlTOworICAgICAgICAgICAgZC0+bWFfdmFsdWVzID0gZW1wdHlfdmFsdWVzOworICAgICAgICB9CisgICAgICAgIGQtPm1hX3VzZWQgPSAwOwogICAgICAgICAvKiBUaGUgb2JqZWN0IGhhcyBiZWVuIGltcGxpY2l0bHkgdHJhY2tlZCBieSB0cF9hbGxvYyAqLwogICAgICAgICBpZiAodHlwZSA9PSAmUHlEaWN0X1R5cGUpCiAgICAgICAgICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhkKTsKLSNpZmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi0gICAgICAgICsrY3JlYXRlZDsKLSNlbmRpZgotI2lmZGVmIFNIT1dfVFJBQ0tfQ09VTlQKLSAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19JU19UUkFDS0VEKGQpKQotICAgICAgICAgICAgY291bnRfdHJhY2tlZCsrOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb3VudF91bnRyYWNrZWQrKzsKLSNlbmRpZgogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTIxOTgsNiArMjY0OSwxNiBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAorUHlPYmplY3QgKgorX1B5RGljdF9HZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSkKK3sKKyAgICBQeU9iamVjdCAqa3Y7CisgICAga3YgPSBfUHlVbmljb2RlX0Zyb21JZChrZXkpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmIChrdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlEaWN0X0dldEl0ZW0oZHAsIGt2KTsKK30KKwogLyogRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZGljdGlvbmFyeSBpbnRlcmZhY2UgKi8KIAogUHlPYmplY3QgKgpAQCAtMjIxMyw2ICsyNjc0LDE2IEBACiB9CiAKIGludAorX1B5RGljdF9TZXRJdGVtSWQoUHlPYmplY3QgKnYsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqa3Y7CisgICAga3YgPSBfUHlVbmljb2RlX0Zyb21JZChrZXkpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmIChrdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIFB5RGljdF9TZXRJdGVtKHYsIGt2LCBpdGVtKTsKK30KKworaW50CiBQeURpY3RfU2V0SXRlbVN0cmluZyhQeU9iamVjdCAqdiwgY29uc3QgY2hhciAqa2V5LCBQeU9iamVjdCAqaXRlbSkKIHsKICAgICBQeU9iamVjdCAqa3Y7CkBAIC0yMzAzLDE4ICsyNzc0LDI2IEBACiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLAogICAgICAgICAgICAgICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RpdGVyX3JlZHVjZShkaWN0aXRlcm9iamVjdCAqZGkpOworCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBkaWN0aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pZGljdGl0ZXJfbGVuLCBNRVRIX05PQVJHUywKICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0a2V5KGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKICAgICBQeU9iamVjdCAqa2V5OwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzazsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5c09iamVjdCAqazsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjMzMCwxNSArMjgwOSwyNSBAQAogICAgIGkgPSBkaS0+ZGlfcG9zOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgZ290byBmYWlsOwotICAgIGVwID0gZC0+bWFfdGFibGU7Ci0gICAgbWFzayA9IGQtPm1hX21hc2s7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiBlcFtpXS5tZV92YWx1ZSA9PSBOVUxMKQorICAgIGsgPSBkLT5tYV9rZXlzOworICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmstPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgfQorICAgIG1hc2sgPSBES19TSVpFKGspLTE7CisgICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKICAgICAgICAgaSsrOworICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwogICAgIGlmIChpID4gbWFzaykKICAgICAgICAgZ290byBmYWlsOwogICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBlcFtpXS5tZV9rZXk7CisgICAga2V5ID0gay0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgcmV0dXJuIGtleTsKIApAQCAtMjM4NCw5ICsyODczLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHR2YWx1ZShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzazsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICBpZiAoZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0MDAsMTcgKzI4ODksMjYgQEAKICAgICB9CiAKICAgICBpID0gZGktPmRpX3BvczsKLSAgICBtYXNrID0gZC0+bWFfbWFzazsKKyAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOwogICAgIGlmIChpIDwgMCB8fCBpID4gbWFzaykKICAgICAgICAgZ290byBmYWlsOwotICAgIGVwID0gZC0+bWFfdGFibGU7Ci0gICAgd2hpbGUgKCh2YWx1ZT1lcFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkgeworICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgfQorICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CiAgICAgICAgIGkrKzsKICAgICAgICAgaWYgKGkgPiBtYXNrKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwogICAgIGRpLT5sZW4tLTsKKyAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICByZXR1cm4gdmFsdWU7CiAKQEAgLTI0NTYsOSArMjk1NCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0aXRlbShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqcmVzdWx0ID0gZGktPmRpX3Jlc3VsdDsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIG1hc2s7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNDc0LDEwICsyOTcyLDE5IEBACiAgICAgaSA9IGRpLT5kaV9wb3M7CiAgICAgaWYgKGkgPCAwKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgZXAgPSBkLT5tYV90YWJsZTsKLSAgICBtYXNrID0gZC0+bWFfbWFzazsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmIGVwW2ldLm1lX3ZhbHVlID09IE5VTEwpCisgICAgbWFzayA9IERLX1NJWkUoZC0+bWFfa2V5cyktMTsKKyAgICBpZiAoZC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIH0KKyAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwogICAgICAgICBpKys7CisgICAgfQogICAgIGRpLT5kaV9wb3MgPSBpKzE7CiAgICAgaWYgKGkgPiBtYXNrKQogICAgICAgICBnb3RvIGZhaWw7CkBAIC0yNDkyLDggKzI5OTksOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBlcFtpXS5tZV9rZXk7Ci0gICAgdmFsdWUgPSBlcFtpXS5tZV92YWx1ZTsKKyAgICBrZXkgPSBkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKKyAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwga2V5KTsKQEAgLTI1NDAsNiArMzA0Nyw1MiBAQAogfTsKIAogCitzdGF0aWMgUHlPYmplY3QgKgorZGljdGl0ZXJfcmVkdWNlKGRpY3RpdGVyb2JqZWN0ICpkaSkKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBkaWN0aXRlcm9iamVjdCB0bXA7CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogY29weSB0aGUgaXRlcnRvciBzdGF0ZSAqLworICAgIHRtcCA9ICpkaTsKKyAgICBQeV9YSU5DUkVGKHRtcC5kaV9kaWN0KTsKKworICAgIC8qIGl0ZXJhdGUgdGhlIHRlbXBvcmFyeSBpbnRvIGEgbGlzdCAqLworICAgIGZvcig7OykgeworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IDA7CisgICAgICAgIGlmIChQeV9UWVBFKGRpKSA9PSAmUHlEaWN0SXRlckl0ZW1fVHlwZSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBkaWN0aXRlcl9pdGVybmV4dGl0ZW0oJnRtcCk7CisgICAgICAgIGVsc2UgaWYgKFB5X1RZUEUoZGkpID09ICZQeURpY3RJdGVyS2V5X1R5cGUpCisgICAgICAgICAgICBlbGVtZW50ID0gZGljdGl0ZXJfaXRlcm5leHRrZXkoJnRtcCk7CisgICAgICAgIGVsc2UgaWYgKFB5X1RZUEUoZGkpID09ICZQeURpY3RJdGVyVmFsdWVfVHlwZSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBkaWN0aXRlcl9pdGVybmV4dHZhbHVlKCZ0bXApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIGlmIChlbGVtZW50KSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCBlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXAuZGlfZGljdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFB5X1hERUNSRUYodG1wLmRpX2RpY3QpOworICAgIC8qIGNoZWNrIGZvciBlcnJvciAqLworICAgIGlmICh0bXAuZGlfZGljdCAhPSBOVUxMKSB7CisgICAgICAgIC8qIHdlIGhhdmUgYW4gZXJyb3IgKi8KKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTikiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLCBsaXN0KTsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogVmlldyBvYmplY3RzIGZvciBrZXlzKCksIGl0ZW1zKCksIHZhbHVlcygpLiAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMjY0NCwxMCArMzE5Nyw4IEBACiAgICAgYXNzZXJ0KFB5RGljdFZpZXdTZXRfQ2hlY2soc2VsZikpOwogICAgIGFzc2VydChvdGhlciAhPSBOVUxMKTsKIAotICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpICYmICFQeURpY3RWaWV3U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpICYmICFQeURpY3RWaWV3U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgbGVuX3NlbGYgPSBQeU9iamVjdF9TaXplKHNlbGYpOwogICAgIGlmIChsZW5fc2VsZiA8IDApCkBAIC0yNzQ1LDEwICszMjk2LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U2V0X05ldyhzZWxmKTsKICAgICBQeU9iamVjdCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKGRpZmZlcmVuY2VfdXBkYXRlKTsKKwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgImRpZmZlcmVuY2VfdXBkYXRlIiwgIk8iLCBvdGhlcik7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZXN1bHQsICZQeUlkX2RpZmZlcmVuY2VfdXBkYXRlLCAiTyIsIG90aGVyKTsKICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjc2MywxMCArMzMxNiwxMiBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeVNldF9OZXcoc2VsZik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUihpbnRlcnNlY3Rpb25fdXBkYXRlKTsKKwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgImludGVyc2VjdGlvbl91cGRhdGUiLCAiTyIsIG90aGVyKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJlc3VsdCwgJlB5SWRfaW50ZXJzZWN0aW9uX3VwZGF0ZSwgIk8iLCBvdGhlcik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3ODEsMTAgKzMzMzYsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlTZXRfTmV3KHNlbGYpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIodXBkYXRlKTsKKwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgInVwZGF0ZSIsICJPIiwgb3RoZXIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF91cGRhdGUsICJPIiwgb3RoZXIpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNzk5LDEwICszMzU2LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U2V0X05ldyhzZWxmKTsKICAgICBQeU9iamVjdCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKHN5bW1ldHJpY19kaWZmZXJlbmNlX3VwZGF0ZSk7CisKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyZXN1bHQsICJzeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUiLCAiTyIsCisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZXN1bHQsICZQeUlkX3N5bW1ldHJpY19kaWZmZXJlbmNlX3VwZGF0ZSwgIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTMwODEsMyArMzY0MCwxNTEgQEAKIHsKICAgICByZXR1cm4gZGljdHZpZXdfbmV3KGRpY3QsICZQeURpY3RWYWx1ZXNfVHlwZSk7CiB9CisKKy8qIFJldHVybnMgTlVMTCBpZiBjYW5ub3QgYWxsb2NhdGUgYSBuZXcgUHlEaWN0S2V5c09iamVjdCwKKyAgIGJ1dCBkb2VzIG5vdCBzZXQgYW4gZXJyb3IgKi8KK1B5RGljdEtleXNPYmplY3QgKgorX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3Modm9pZCkKK3sKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX1NQTElUKTsKKyAgICBpZiAoa2V5cyA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UKKyAgICAgICAga2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Rfc3BsaXQ7CisgICAgcmV0dXJuIGtleXM7Cit9CisKKyNkZWZpbmUgQ0FDSEVEX0tFWVModHApICgoKFB5SGVhcFR5cGVPYmplY3QqKXRwKS0+aHRfY2FjaGVkX2tleXMpCisKK1B5T2JqZWN0ICoKK1B5T2JqZWN0X0dlbmVyaWNHZXREaWN0KFB5T2JqZWN0ICpvYmosIHZvaWQgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CisgICAgaWYgKGRpY3RwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBvYmplY3QgaGFzIG5vIF9fZGljdF9fIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBkaWN0ID0gKmRpY3RwdHI7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShvYmopOworICAgICAgICBpZiAoKHRwLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpICYmIENBQ0hFRF9LRVlTKHRwKSkgeworICAgICAgICAgICAgREtfSU5DUkVGKENBQ0hFRF9LRVlTKHRwKSk7CisgICAgICAgICAgICAqZGljdHB0ciA9IGRpY3QgPSBuZXdfZGljdF93aXRoX3NoYXJlZF9rZXlzKENBQ0hFRF9LRVlTKHRwKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAqZGljdHB0ciA9IGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfWElOQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gZGljdDsKK30KKworaW50CitfUHlPYmplY3REaWN0X1NldEl0ZW0oUHlUeXBlT2JqZWN0ICp0cCwgUHlPYmplY3QgKipkaWN0cHRyLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIFB5T2JqZWN0ICpkaWN0OworICAgIGludCByZXM7CisgICAgUHlEaWN0S2V5c09iamVjdCAqY2FjaGVkOworCisgICAgYXNzZXJ0KGRpY3RwdHIgIT0gTlVMTCk7CisgICAgaWYgKCh0cC0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSAmJiAoY2FjaGVkID0gQ0FDSEVEX0tFWVModHApKSkgeworICAgICAgICBhc3NlcnQoZGljdHB0ciAhPSBOVUxMKTsKKyAgICAgICAgZGljdCA9ICpkaWN0cHRyOworICAgICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBES19JTkNSRUYoY2FjaGVkKTsKKyAgICAgICAgICAgIGRpY3QgPSBuZXdfZGljdF93aXRoX3NoYXJlZF9rZXlzKGNhY2hlZCk7CisgICAgICAgICAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICpkaWN0cHRyID0gZGljdDsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmVzID0gUHlEaWN0X0RlbEl0ZW0oZGljdCwga2V5KTsKKyAgICAgICAgICAgIGlmIChjYWNoZWQgIT0gKChQeURpY3RPYmplY3QgKilkaWN0KS0+bWFfa2V5cykgeworICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IE5VTEw7CisgICAgICAgICAgICAgICAgREtfREVDUkVGKGNhY2hlZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShkaWN0LCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChjYWNoZWQgIT0gKChQeURpY3RPYmplY3QgKilkaWN0KS0+bWFfa2V5cykgeworICAgICAgICAgICAgICAgIC8qIEVpdGhlciB1cGRhdGUgdHAtPmh0X2NhY2hlZF9rZXlzIG9yIGRlbGV0ZSBpdCAqLworICAgICAgICAgICAgICAgIGlmIChjYWNoZWQtPmRrX3JlZmNudCA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IG1ha2Vfa2V5c19zaGFyZWQoZGljdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQ0FDSEVEX0tFWVModHApID0gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgREtfREVDUkVGKGNhY2hlZCk7CisgICAgICAgICAgICAgICAgaWYgKENBQ0hFRF9LRVlTKHRwKSA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGRpY3QgPSAqZGljdHB0cjsKKyAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgKmRpY3RwdHIgPSBkaWN0OworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXMgPSBQeURpY3RfRGVsSXRlbShkaWN0LCBrZXkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0oZGljdCwga2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKwordm9pZAorX1B5RGljdEtleXNfRGVjUmVmKFB5RGljdEtleXNPYmplY3QgKmtleXMpCit7CisgICAgREtfREVDUkVGKGtleXMpOworfQorCisKKy8qIEFSR1NVU0VEICovCitzdGF0aWMgUHlPYmplY3QgKgorZHVtbXlfcmVwcihQeU9iamVjdCAqb3ApCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8ZHVtbXkga2V5PiIpOworfQorCisvKiBBUkdVU0VEICovCitzdGF0aWMgdm9pZAorZHVtbXlfZGVhbGxvYyhQeU9iamVjdCogaWdub3JlKQoreworICAgIC8qIFRoaXMgc2hvdWxkIG5ldmVyIGdldCBjYWxsZWQsIGJ1dCB3ZSBhbHNvIGRvbid0IHdhbnQgdG8gU0VHViBpZgorICAgICAqIHdlIGFjY2lkZW50YWxseSBkZWNyZWYgZHVtbXkta2V5IG91dCBvZiBleGlzdGVuY2UuCisgICAgICovCisgICAgUHlfRmF0YWxFcnJvcigiZGVhbGxvY2F0aW5nIDxkdW1teSBrZXk+Iik7Cit9CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEaWN0RHVtbXlfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICI8ZHVtbXkga2V5PiB0eXBlIiwKKyAgICAwLAorICAgIDAsCisgICAgZHVtbXlfZGVhbGxvYywgICAgICAvKnRwX2RlYWxsb2MqLyAvKm5ldmVyIGNhbGxlZCovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCisgICAgZHVtbXlfcmVwciwgICAgICAgICAvKnRwX3JlcHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyp0cF9mbGFncyAqLworfTsKKworc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3QgPSB7CisgIF9QeU9iamVjdF9FWFRSQV9JTklUCisgIDIsICZQeURpY3REdW1teV9UeXBlCit9OworCmRpZmYgLS1naXQgYS9PYmplY3RzL2VudW1vYmplY3QuYyBiL09iamVjdHMvZW51bW9iamVjdC5jCmluZGV4IDAwYTMzNDYuLmM0NThjZmUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZW51bW9iamVjdC5jCisrKyBiL09iamVjdHMvZW51bW9iamVjdC5jCkBAIC0xNTgsNiArMTU4LDIyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2VudW1fcmVkdWNlKGVudW1vYmplY3QgKmVuKQoreworICAgIGlmIChlbi0+ZW5fbG9uZ2luZGV4ICE9IE5VTEwpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUoZW4pLCBlbi0+ZW5fc2l0LCBlbi0+ZW5fbG9uZ2luZGV4KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUoZW4pLCBlbi0+ZW5fc2l0LCBlbi0+ZW5faW5kZXgpOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBlbnVtX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pZW51bV9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGVudW1fZG9jLAogImVudW1lcmF0ZShpdGVyYWJsZVssIHN0YXJ0XSkgLT4gaXRlcmF0b3IgZm9yIGluZGV4LCB2YWx1ZSBvZiBpdGVyYWJsZVxuIgogIlxuIgpAQCAtMTk3LDcgKzIxMyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWVudW1fbmV4dCwgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgZW51bV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTIyNCw4ICsyNDAsOCBAQAogewogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeU9iamVjdCAqc2VxLCAqcmV2ZXJzZWRfbWV0aDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnJldmVyc2VkX2NhY2hlID0gTlVMTDsKICAgICByZXZlcnNlZG9iamVjdCAqcm87CisgICAgX1B5X0lERU5USUZJRVIoX19yZXZlcnNlZF9fKTsKIAogICAgIGlmICh0eXBlID09ICZQeVJldmVyc2VkX1R5cGUgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJyZXZlcnNlZCgpIiwga3dkcykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjMzLDcgKzI0OSw3IEBACiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmV2ZXJzZWQiLCAxLCAxLCAmc2VxKSApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV2ZXJzZWRfbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHNlcSwgIl9fcmV2ZXJzZWRfXyIsICZyZXZlcnNlZF9jYWNoZSk7CisgICAgcmV2ZXJzZWRfbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHNlcSwgJlB5SWRfX19yZXZlcnNlZF9fKTsKICAgICBpZiAocmV2ZXJzZWRfbWV0aCAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHJldmVyc2VkX21ldGgsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYocmV2ZXJzZWRfbWV0aCk7CkBAIC0zMTksOCArMzM1LDQwIEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3JldmVyc2VkX3JlZHVjZShyZXZlcnNlZG9iamVjdCAqcm8pCit7CisgICAgaWYgKHJvLT5zZXEpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pbiIsIFB5X1RZUEUocm8pLCByby0+c2VxLCByby0+aW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCkpIiwgUHlfVFlQRShybykpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcmV2ZXJzZWRfc2V0c3RhdGUocmV2ZXJzZWRvYmplY3QgKnJvLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAocm8tPnNlcSAhPSAwKSB7CisgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5U2VxdWVuY2VfU2l6ZShyby0+c2VxKTsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChpbmRleCA8IC0xKQorICAgICAgICAgICAgaW5kZXggPSAtMTsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBuLTEpCisgICAgICAgICAgICBpbmRleCA9IG4tMTsKKyAgICAgICAgcm8tPmluZGV4ID0gaW5kZXg7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgcmV2ZXJzZWRpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilyZXZlcnNlZF9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilyZXZlcnNlZF9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilyZXZlcnNlZF9zZXRzdGF0ZSwgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2V4Y2VwdGlvbnMuYyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCmluZGV4IDlkYWExMmEuLjc0YmIyNjIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZXhjZXB0aW9ucy5jCisrKyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCkBAIC0xMCw2ICsxMCwyMCBAQAogI2luY2x1ZGUgIm9zZGVmcy5oIgogCiAKKy8qIENvbXBhdGliaWxpdHkgYWxpYXNlcyAqLworUHlPYmplY3QgKlB5RXhjX0Vudmlyb25tZW50RXJyb3IgPSBOVUxMOworUHlPYmplY3QgKlB5RXhjX0lPRXJyb3IgPSBOVUxMOworI2lmZGVmIE1TX1dJTkRPV1MKK1B5T2JqZWN0ICpQeUV4Y19XaW5kb3dzRXJyb3IgPSBOVUxMOworI2VuZGlmCisjaWZkZWYgX19WTVMKK1B5T2JqZWN0ICpQeUV4Y19WTVNFcnJvciA9IE5VTEw7CisjZW5kaWYKKworLyogVGhlIGRpY3QgbWFwIGZyb20gZXJybm8gY29kZXMgdG8gT1NFcnJvciBzdWJjbGFzc2VzICovCitzdGF0aWMgUHlPYmplY3QgKmVycm5vbWFwID0gTlVMTDsKKworCiAvKiBOT1RFOiBJZiB0aGUgZXhjZXB0aW9uIGNsYXNzIGhpZXJhcmNoeSBjaGFuZ2VzLCBkb24ndCBmb3JnZXQgdG8gdXBkYXRlCiAgKiBMaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAogICovCkBAIC0yOCw2ICs0MiwxMyBAQAogICAgIC8qIHRoZSBkaWN0IGlzIGNyZWF0ZWQgb24gdGhlIGZseSBpbiBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciAqLwogICAgIHNlbGYtPmRpY3QgPSBOVUxMOwogICAgIHNlbGYtPnRyYWNlYmFjayA9IHNlbGYtPmNhdXNlID0gc2VsZi0+Y29udGV4dCA9IE5VTEw7CisgICAgc2VsZi0+c3VwcHJlc3NfY29udGV4dCA9IDA7CisKKyAgICBpZiAoYXJncykgeworICAgICAgICBzZWxmLT5hcmdzID0gYXJnczsKKyAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICB9CiAKICAgICBzZWxmLT5hcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAgICAgaWYgKCFzZWxmLT5hcmdzKSB7CkBAIC00MSwxMiArNjIsMTUgQEAKIHN0YXRpYyBpbnQKIEJhc2VFeGNlcHRpb25faW5pdChQeUJhc2VFeGNlcHRpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBQeU9iamVjdCAqdG1wOworCiAgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcyhQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgUHlfREVDUkVGKHNlbGYtPmFyZ3MpOworICAgIHRtcCA9IHNlbGYtPmFyZ3M7CiAgICAgc2VsZi0+YXJncyA9IGFyZ3M7CiAgICAgUHlfSU5DUkVGKHNlbGYtPmFyZ3MpOworICAgIFB5X1hERUNSRUYodG1wKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMTYzLDM2ICsxODcsNiBAQAogICAge05VTEwsIE5VTEwsIDAsIE5VTEx9LAogfTsKIAotCi1zdGF0aWMgUHlPYmplY3QgKgotQmFzZUV4Y2VwdGlvbl9nZXRfZGljdChQeUJhc2VFeGNlcHRpb25PYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPmRpY3QgPT0gTlVMTCkgewotICAgICAgICBzZWxmLT5kaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAoIXNlbGYtPmRpY3QpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKHNlbGYtPmRpY3QpOwotICAgIHJldHVybiBzZWxmLT5kaWN0OwotfQotCi1zdGF0aWMgaW50Ci1CYXNlRXhjZXB0aW9uX3NldF9kaWN0KFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbCkKLXsKLSAgICBpZiAodmFsID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9fZGljdF9fIG1heSBub3QgYmUgZGVsZXRlZCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICghUHlEaWN0X0NoZWNrKHZhbCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9fZGljdF9fIG11c3QgYmUgYSBkaWN0aW9uYXJ5Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7Ci0gICAgUHlfSU5DUkVGKHZhbCk7Ci0gICAgc2VsZi0+ZGljdCA9IHZhbDsKLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIEJhc2VFeGNlcHRpb25fZ2V0X2FyZ3MoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICpzZWxmKQogewpAQCAtMzA2LDcgKzMwMCw3IEBACiAKIAogc3RhdGljIFB5R2V0U2V0RGVmIEJhc2VFeGNlcHRpb25fZ2V0c2V0W10gPSB7Ci0gICAgeyJfX2RpY3RfXyIsIChnZXR0ZXIpQmFzZUV4Y2VwdGlvbl9nZXRfZGljdCwgKHNldHRlcilCYXNlRXhjZXB0aW9uX3NldF9kaWN0fSwKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKICAgICB7ImFyZ3MiLCAoZ2V0dGVyKUJhc2VFeGNlcHRpb25fZ2V0X2FyZ3MsIChzZXR0ZXIpQmFzZUV4Y2VwdGlvbl9zZXRfYXJnc30sCiAgICAgeyJfX3RyYWNlYmFja19fIiwgKGdldHRlcilCYXNlRXhjZXB0aW9uX2dldF90YiwgKHNldHRlcilCYXNlRXhjZXB0aW9uX3NldF90Yn0sCiAgICAgeyJfX2NvbnRleHRfXyIsIChnZXR0ZXIpQmFzZUV4Y2VwdGlvbl9nZXRfY29udGV4dCwKQEAgLTM0Miw2ICszMzYsNyBAQAogUHlFeGNlcHRpb25fU2V0Q2F1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjYXVzZSkgewogICAgIFB5T2JqZWN0ICpvbGRfY2F1c2UgPSAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZTsKICAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZSA9IGNhdXNlOworICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPnN1cHByZXNzX2NvbnRleHQgPSAxOwogICAgIFB5X1hERUNSRUYob2xkX2NhdXNlKTsKIH0KIApAQCAtMzYxLDYgKzM1NiwxMyBAQAogfQogCiAKK3N0YXRpYyBzdHJ1Y3QgUHlNZW1iZXJEZWYgQmFzZUV4Y2VwdGlvbl9tZW1iZXJzW10gPSB7CisgICAgeyJfX3N1cHByZXNzX2NvbnRleHRfXyIsIFRfQk9PTCwKKyAgICAgb2Zmc2V0b2YoUHlCYXNlRXhjZXB0aW9uT2JqZWN0LCBzdXBwcmVzc19jb250ZXh0KX0sCisgICAge05VTEx9Cit9OworCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgX1B5RXhjX0Jhc2VFeGNlcHRpb24gPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIkJhc2VFeGNlcHRpb24iLCAvKnRwX25hbWUqLwpAQCAtMzkxLDcgKzM5Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBCYXNlRXhjZXB0aW9uX21ldGhvZHMsICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgQmFzZUV4Y2VwdGlvbl9tZW1iZXJzLCAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICBCYXNlRXhjZXB0aW9uX2dldHNldCwgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwpAQCAtNDM2LDExICs0MzgsMTMgQEAKICAgICBQeURvY19TVFIoRVhDRE9DKSwgKHRyYXZlcnNlcHJvYylFWENTVE9SRSAjIyBfdHJhdmVyc2UsIFwKICAgICAoaW5xdWlyeSlFWENTVE9SRSAjIyBfY2xlYXIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICZfICMjIEVYQ0JBU0UsIFwKICAgICAwLCAwLCAwLCBvZmZzZXRvZihQeSAjIyBFWENTVE9SRSAjIyBPYmplY3QsIGRpY3QpLCBcCi0gICAgKGluaXRwcm9jKUVYQ1NUT1JFICMjIF9pbml0LCAwLCBCYXNlRXhjZXB0aW9uX25ldyxcCisgICAgKGluaXRwcm9jKUVYQ1NUT1JFICMjIF9pbml0LCAwLCAwLCBcCiB9OyBcCiBQeU9iamVjdCAqUHlFeGNfICMjIEVYQ05BTUUgPSAoUHlPYmplY3QgKikmX1B5RXhjXyAjIyBFWENOQU1FCiAKLSNkZWZpbmUgQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oRVhDQkFTRSwgRVhDTkFNRSwgRVhDU1RPUkUsIEVYQ0RFQUxMT0MsIEVYQ01FVEhPRFMsIEVYQ01FTUJFUlMsIEVYQ1NUUiwgRVhDRE9DKSBcCisjZGVmaW5lIENvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKEVYQ0JBU0UsIEVYQ05BTUUsIEVYQ1NUT1JFLCBFWENORVcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDTUVUSE9EUywgRVhDTUVNQkVSUywgRVhDR0VUU0VULCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ1NUUiwgRVhDRE9DKSBcCiBzdGF0aWMgUHlUeXBlT2JqZWN0IF9QeUV4Y18gIyMgRVhDTkFNRSA9IHsgXAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKSBcCiAgICAgIyBFWENOQU1FLCBcCkBAIC00NTAsOSArNDU0LDkgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLCBcCiAgICAgUHlEb2NfU1RSKEVYQ0RPQyksICh0cmF2ZXJzZXByb2MpRVhDU1RPUkUgIyMgX3RyYXZlcnNlLCBcCiAgICAgKGlucXVpcnkpRVhDU1RPUkUgIyMgX2NsZWFyLCAwLCAwLCAwLCAwLCBFWENNRVRIT0RTLCBcCi0gICAgRVhDTUVNQkVSUywgMCwgJl8gIyMgRVhDQkFTRSwgXAorICAgIEVYQ01FTUJFUlMsIEVYQ0dFVFNFVCwgJl8gIyMgRVhDQkFTRSwgXAogICAgIDAsIDAsIDAsIG9mZnNldG9mKFB5ICMjIEVYQ1NUT1JFICMjIE9iamVjdCwgZGljdCksIFwKLSAgICAoaW5pdHByb2MpRVhDU1RPUkUgIyMgX2luaXQsIDAsIEJhc2VFeGNlcHRpb25fbmV3LFwKKyAgICAoaW5pdHByb2MpRVhDU1RPUkUgIyMgX2luaXQsIDAsIEVYQ05FVyxcCiB9OyBcCiBQeU9iamVjdCAqUHlFeGNfICMjIEVYQ05BTUUgPSAoUHlPYmplY3QgKikmX1B5RXhjXyAjIyBFWENOQU1FCiAKQEAgLTQ3NCw4ICs0NzgsNjQgQEAKIC8qCiAgKiAgICBTdG9wSXRlcmF0aW9uIGV4dGVuZHMgRXhjZXB0aW9uCiAgKi8KLVNpbXBsZUV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBTdG9wSXRlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAiU2lnbmFsIHRoZSBlbmQgZnJvbSBpdGVyYXRvci5fX25leHRfXygpLiIpOworCitzdGF0aWMgUHlNZW1iZXJEZWYgU3RvcEl0ZXJhdGlvbl9tZW1iZXJzW10gPSB7CisgICAgeyJ2YWx1ZSIsIFRfT0JKRUNULCBvZmZzZXRvZihQeVN0b3BJdGVyYXRpb25PYmplY3QsIHZhbHVlKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJnZW5lcmF0b3IgcmV0dXJuIHZhbHVlIil9LAorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBpbnQKK1N0b3BJdGVyYXRpb25faW5pdChQeVN0b3BJdGVyYXRpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKKworICAgIGlmIChCYXNlRXhjZXB0aW9uX2luaXQoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIGFyZ3MsIGt3ZHMpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlfQ0xFQVIoc2VsZi0+dmFsdWUpOworICAgIGlmIChzaXplID4gMCkKKyAgICAgICAgdmFsdWUgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgc2VsZi0+dmFsdWUgPSB2YWx1ZTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorU3RvcEl0ZXJhdGlvbl9jbGVhcihQeVN0b3BJdGVyYXRpb25PYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+dmFsdWUpOworICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX2NsZWFyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIHZvaWQKK1N0b3BJdGVyYXRpb25fZGVhbGxvYyhQeVN0b3BJdGVyYXRpb25PYmplY3QgKnNlbGYpCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgU3RvcEl0ZXJhdGlvbl9jbGVhcihzZWxmKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgaW50CitTdG9wSXRlcmF0aW9uX3RyYXZlcnNlKFB5U3RvcEl0ZXJhdGlvbk9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+dmFsdWUpOworICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3RyYXZlcnNlKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmLCB2aXNpdCwgYXJnKTsKK30KKworQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oCisgICAgUHlFeGNfRXhjZXB0aW9uLCAgICAgICAvKiBiYXNlICovCisgICAgU3RvcEl0ZXJhdGlvbiwgICAgICAgICAvKiBuYW1lICovCisgICAgU3RvcEl0ZXJhdGlvbiwgICAgICAgICAvKiBwcmVmaXggZm9yICpfaW5pdCwgZXRjICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAvKiBuZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIG1ldGhvZHMgKi8KKyAgICBTdG9wSXRlcmF0aW9uX21lbWJlcnMsIC8qIG1lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIGdldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgLyogc3RyICovCisgICAgIlNpZ25hbCB0aGUgZW5kIGZyb20gaXRlcmF0b3IuX19uZXh0X18oKS4iCispOwogCiAKIC8qCkBAIC01MDIsNyArNTYyLDcgQEAKICAgICBQeV9DTEVBUihzZWxmLT5jb2RlKTsKICAgICBpZiAoc2l6ZSA9PSAxKQogICAgICAgICBzZWxmLT5jb2RlID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKLSAgICBlbHNlIGlmIChzaXplID4gMSkKKyAgICBlbHNlIC8qIHNpemUgPiAxICovCiAgICAgICAgIHNlbGYtPmNvZGUgPSBhcmdzOwogICAgIFB5X0lOQ1JFRihzZWxmLT5jb2RlKTsKICAgICByZXR1cm4gMDsKQEAgLTUzNyw3ICs1OTcsNyBAQAogfTsKIAogQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oUHlFeGNfQmFzZUV4Y2VwdGlvbiwgU3lzdGVtRXhpdCwgU3lzdGVtRXhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbUV4aXRfZGVhbGxvYywgMCwgU3lzdGVtRXhpdF9tZW1iZXJzLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgU3lzdGVtRXhpdF9tZW1iZXJzLCAwLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVlc3QgdG8gZXhpdCBmcm9tIHRoZSBpbnRlcnByZXRlci4iKTsKIAogLyoKQEAgLTU1MCwxMjkgKzYxMCw0NDEgQEAKIC8qCiAgKiAgICBJbXBvcnRFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgogICovCi1TaW1wbGVFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgSW1wb3J0RXJyb3IsCi0gICAgICAgICAgIkltcG9ydCBjYW4ndCBmaW5kIG1vZHVsZSwgb3IgY2FuJ3QgZmluZCBuYW1lIGluIG1vZHVsZS4iKTsKIAorc3RhdGljIGludAorSW1wb3J0RXJyb3JfaW5pdChQeUltcG9ydEVycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKm1zZyA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKworLyogTWFjcm8gcmVwbGFjZW1lbnQgZG9lc24ndCBhbGxvdyAjIyB0byBzdGFydCB0aGUgZmlyc3QgbGluZSBvZiBhIG1hY3JvLAorICAgc28gd2UgbW92ZSB0aGUgYXNzaWdubWVudCBhbmQgTlVMTCBjaGVjayBpbnRvIHRoZSBpZi1zdGF0ZW1lbnQuICovCisjZGVmaW5lIEdFVF9LV0Qoa3dkKSB7IFwKKyAgICBrd2QgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhrd2RzLCAja3dkKTsgXAorICAgIGlmIChrd2QpIHsgXAorICAgICAgICBQeV9DTEVBUihzZWxmLT5rd2QpOyBcCisgICAgICAgIHNlbGYtPmt3ZCA9IGt3ZDsgICBcCisgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5rd2QpO1wKKyAgICAgICAgaWYgKFB5RGljdF9EZWxJdGVtU3RyaW5nKGt3ZHMsICNrd2QpKSBcCisgICAgICAgICAgICByZXR1cm4gLTE7IFwKKyAgICB9IFwKKyAgICB9CisKKyAgICBpZiAoa3dkcykgeworICAgICAgICBHRVRfS1dEKG5hbWUpOworICAgICAgICBHRVRfS1dEKHBhdGgpOworICAgIH0KKworICAgIGlmIChCYXNlRXhjZXB0aW9uX2luaXQoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIGFyZ3MsIGt3ZHMpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgIT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiSW1wb3J0RXJyb3IiLCAxLCAxLCAmbXNnKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgUHlfQ0xFQVIoc2VsZi0+bXNnKTsgICAgICAgICAgLyogcmVwbGFjaW5nICovCisgICAgc2VsZi0+bXNnID0gbXNnOworICAgIFB5X0lOQ1JFRihzZWxmLT5tc2cpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0ltcG9ydEVycm9yX2NsZWFyKFB5SW1wb3J0RXJyb3JPYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+bXNnKTsKKyAgICBQeV9DTEVBUihzZWxmLT5uYW1lKTsKKyAgICBQeV9DTEVBUihzZWxmLT5wYXRoKTsKKyAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9jbGVhcigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyB2b2lkCitJbXBvcnRFcnJvcl9kZWFsbG9jKFB5SW1wb3J0RXJyb3JPYmplY3QgKnNlbGYpCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgSW1wb3J0RXJyb3JfY2xlYXIoc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIGludAorSW1wb3J0RXJyb3JfdHJhdmVyc2UoUHlJbXBvcnRFcnJvck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+bXNnKTsKKyAgICBQeV9WSVNJVChzZWxmLT5uYW1lKTsKKyAgICBQeV9WSVNJVChzZWxmLT5wYXRoKTsKKyAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl90cmF2ZXJzZSgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiwgdmlzaXQsIGFyZyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitJbXBvcnRFcnJvcl9zdHIoUHlJbXBvcnRFcnJvck9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+bXNnICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYtPm1zZykpIHsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYtPm1zZyk7CisgICAgICAgIHJldHVybiBzZWxmLT5tc2c7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9zdHIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOworICAgIH0KK30KKworc3RhdGljIFB5TWVtYmVyRGVmIEltcG9ydEVycm9yX21lbWJlcnNbXSA9IHsKKyAgICB7Im1zZyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUltcG9ydEVycm9yT2JqZWN0LCBtc2cpLCAwLAorICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBtZXNzYWdlIil9LAorICAgIHsibmFtZSIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUltcG9ydEVycm9yT2JqZWN0LCBuYW1lKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJtb2R1bGUgbmFtZSIpfSwKKyAgICB7InBhdGgiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlJbXBvcnRFcnJvck9iamVjdCwgcGF0aCksIDAsCisgICAgICAgIFB5RG9jX1NUUigibW9kdWxlIHBhdGgiKX0sCisgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIEltcG9ydEVycm9yX21ldGhvZHNbXSA9IHsKKyAgICB7TlVMTH0KK307CisKK0NvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRFcnJvciwgMCAvKiBuZXcgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRFcnJvcl9tZXRob2RzLCBJbXBvcnRFcnJvcl9tZW1iZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBnZXRzZXQgKi8sIEltcG9ydEVycm9yX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbXBvcnQgY2FuJ3QgZmluZCBtb2R1bGUsIG9yIGNhbid0IGZpbmQgbmFtZSBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlLiIpOwogCiAvKgotICogICAgRW52aXJvbm1lbnRFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgorICogICAgT1NFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgogICovCiAKKyNpZmRlZiBNU19XSU5ET1dTCisjaW5jbHVkZSAiZXJybWFwLmgiCisjZW5kaWYKKwogLyogV2hlcmUgYSBmdW5jdGlvbiBoYXMgYSBzaW5nbGUgZmlsZW5hbWUsIHN1Y2ggYXMgb3BlbigpIG9yIHNvbWUKICAqIG9mIHRoZSBvcyBtb2R1bGUgZnVuY3Rpb25zLCBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoKSBpcwogICogY2FsbGVkLCBnaXZpbmcgYSB0aGlyZCBhcmd1bWVudCB3aGljaCBpcyB0aGUgZmlsZW5hbWUuICBCdXQsIHNvCiAgKiB0aGF0IG9sZCBjb2RlIHVzaW5nIGluLXBsYWNlIHVucGFja2luZyBkb2Vzbid0IGJyZWFrLCBlLmcuOgogICoKLSAqIGV4Y2VwdCBJT0Vycm9yLCAoZXJybm8sIHN0cmVycm9yKToKKyAqIGV4Y2VwdCBPU0Vycm9yLCAoZXJybm8sIHN0cmVycm9yKToKICAqCiAgKiB3ZSBoYWNrIGFyZ3Mgc28gdGhhdCBpdCBvbmx5IGNvbnRhaW5zIHR3byBpdGVtcy4gIFRoaXMgYWxzbwogICogbWVhbnMgd2UgbmVlZCBvdXIgb3duIF9fc3RyX18oKSB3aGljaCBwcmludHMgb3V0IHRoZSBmaWxlbmFtZQogICogd2hlbiBpdCB3YXMgc3VwcGxpZWQuCiAgKi8KKworLyogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNsZWFudXAgb24gZXJyb3IsIHRoZSBjYWxsZXIgc2hvdWxkICovCiBzdGF0aWMgaW50Ci1FbnZpcm9ubWVudEVycm9yX2luaXQoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywKLSAgICBQeU9iamVjdCAqa3dkcykKK29zZXJyb3JfcGFyc2VfYXJncyhQeU9iamVjdCAqKnBfYXJncywKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm15ZXJybm8sIFB5T2JqZWN0ICoqc3RyZXJyb3IsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipmaWxlbmFtZQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgICAgICAgICAsIFB5T2JqZWN0ICoqd2luZXJyb3IKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgKQogewotICAgIFB5T2JqZWN0ICpteWVycm5vID0gTlVMTCwgKnN0cmVycm9yID0gTlVMTCwgKmZpbGVuYW1lID0gTlVMTDsKLSAgICBQeU9iamVjdCAqc3Vic2xpY2UgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKmFyZ3MgPSAqcF9hcmdzOwogCi0gICAgaWYgKEJhc2VFeGNlcHRpb25faW5pdCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiwgYXJncywga3dkcykgPT0gLTEpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CiAKLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA8PSAxIHx8IFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPiAzKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIkVudmlyb25tZW50RXJyb3IiLCAyLCAzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJm15ZXJybm8sICZzdHJlcnJvciwgJmZpbGVuYW1lKSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0NMRUFSKHNlbGYtPm15ZXJybm8pOyAgICAgICAvKiByZXBsYWNpbmcgKi8KLSAgICBzZWxmLT5teWVycm5vID0gbXllcnJubzsKLSAgICBQeV9JTkNSRUYoc2VsZi0+bXllcnJubyk7Ci0KLSAgICBQeV9DTEVBUihzZWxmLT5zdHJlcnJvcik7ICAgICAgLyogcmVwbGFjaW5nICovCi0gICAgc2VsZi0+c3RyZXJyb3IgPSBzdHJlcnJvcjsKLSAgICBQeV9JTkNSRUYoc2VsZi0+c3RyZXJyb3IpOwotCi0gICAgLyogc2VsZi0+ZmlsZW5hbWUgd2lsbCByZW1haW4gUHlfTm9uZSBvdGhlcndpc2UgKi8KLSAgICBpZiAoZmlsZW5hbWUgIT0gTlVMTCkgewotICAgICAgICBQeV9DTEVBUihzZWxmLT5maWxlbmFtZSk7ICAgICAgLyogcmVwbGFjaW5nICovCi0gICAgICAgIHNlbGYtPmZpbGVuYW1lID0gZmlsZW5hbWU7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmLT5maWxlbmFtZSk7Ci0KLSAgICAgICAgc3Vic2xpY2UgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDAsIDIpOwotICAgICAgICBpZiAoIXN1YnNsaWNlKQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAobmFyZ3MgPj0gMiAmJiBuYXJncyA8PSA0KSB7CisgICAgICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIk9TRXJyb3IiLCAyLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ZXJybm8sIHN0cmVycm9yLCBmaWxlbmFtZSwgd2luZXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoKndpbmVycm9yICYmIFB5TG9uZ19DaGVjaygqd2luZXJyb3IpKSB7CisgICAgICAgICAgICBsb25nIGVycmNvZGUsIHdpbmVycmNvZGU7CisgICAgICAgICAgICBQeU9iamVjdCAqbmV3YXJnczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKIAotICAgICAgICBQeV9ERUNSRUYoc2VsZi0+YXJncyk7ICAvKiByZXBsYWNpbmcgYXJncyAqLwotICAgICAgICBzZWxmLT5hcmdzID0gc3Vic2xpY2U7CisgICAgICAgICAgICB3aW5lcnJjb2RlID0gUHlMb25nX0FzTG9uZygqd2luZXJyb3IpOworICAgICAgICAgICAgaWYgKHdpbmVycmNvZGUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAvKiBTZXQgZXJybm8gdG8gdGhlIGNvcnJlc3BvbmRpbmcgUE9TSVggZXJybm8gKG92ZXJyaWRpbmcKKyAgICAgICAgICAgICAgIGZpcnN0IGFyZ3VtZW50KS4gIFdpbmRvd3MgU29ja2V0IGVycm9yIGNvZGVzICg+PSAxMDAwMCkKKyAgICAgICAgICAgICAgIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlaXIgUE9TSVggY291bnRlcnBhcnRzLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICh3aW5lcnJjb2RlIDwgMTAwMDApCisgICAgICAgICAgICAgICAgZXJyY29kZSA9IHdpbmVycm9yX3RvX2Vycm5vKHdpbmVycmNvZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVycmNvZGUgPSB3aW5lcnJjb2RlOworICAgICAgICAgICAgKm15ZXJybm8gPSBQeUxvbmdfRnJvbUxvbmcoZXJyY29kZSk7CisgICAgICAgICAgICBpZiAoISpteWVycm5vKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldyhuYXJncyk7CisgICAgICAgICAgICBpZiAoIW5ld2FyZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCAqbXllcnJubyk7CisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWwgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWwpOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgaSwgdmFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIGFyZ3MgPSAqcF9hcmdzID0gbmV3YXJnczsKKyAgICAgICAgfQogICAgIH0KKyNlbHNlCisgICAgaWYgKG5hcmdzID49IDIgJiYgbmFyZ3MgPD0gMykgeworICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJPU0Vycm9yIiwgMiwgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteWVycm5vLCBzdHJlcnJvciwgZmlsZW5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLUVudmlyb25tZW50RXJyb3JfY2xlYXIoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICpzZWxmKQorb3NlcnJvcl9pbml0KFB5T1NFcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKipwX2FyZ3MsCisgICAgICAgICAgICAgUHlPYmplY3QgKm15ZXJybm8sIFB5T2JqZWN0ICpzdHJlcnJvciwKKyAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgLCBQeU9iamVjdCAqd2luZXJyb3IKKyNlbmRpZgorICAgICAgICAgICAgICkKK3sKKyAgICBQeU9iamVjdCAqYXJncyA9ICpwX2FyZ3M7CisgICAgUHlfc3NpemVfdCBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisKKyAgICAvKiBzZWxmLT5maWxlbmFtZSB3aWxsIHJlbWFpbiBQeV9Ob25lIG90aGVyd2lzZSAqLworICAgIGlmIChmaWxlbmFtZSAmJiBmaWxlbmFtZSAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChQeV9UWVBFKHNlbGYpID09IChQeVR5cGVPYmplY3QgKikgUHlFeGNfQmxvY2tpbmdJT0Vycm9yICYmCisgICAgICAgICAgICBQeU51bWJlcl9DaGVjayhmaWxlbmFtZSkpIHsKKyAgICAgICAgICAgIC8qIEJsb2NraW5nSU9FcnJvcidzIDNyZCBhcmd1bWVudCBjYW4gYmUgdGhlIG51bWJlciBvZgorICAgICAgICAgICAgICogY2hhcmFjdGVycyB3cml0dGVuLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzZWxmLT53cml0dGVuID0gUHlOdW1iZXJfQXNTc2l6ZV90KGZpbGVuYW1lLCBQeUV4Y19WYWx1ZUVycm9yKTsKKyAgICAgICAgICAgIGlmIChzZWxmLT53cml0dGVuID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKKyAgICAgICAgICAgIHNlbGYtPmZpbGVuYW1lID0gZmlsZW5hbWU7CisKKyAgICAgICAgICAgIGlmIChuYXJncyA+PSAyICYmIG5hcmdzIDw9IDMpIHsKKyAgICAgICAgICAgICAgICAvKiBmaWxlbmFtZSBpcyByZW1vdmVkIGZyb20gdGhlIGFyZ3MgdHVwbGUgKGZvciBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgICAgcHVycG9zZXMsIHNlZSB0ZXN0X2V4Y2VwdGlvbnMucHkpICovCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnNsaWNlID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAwLCAyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXN1YnNsaWNlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7ICAvKiByZXBsYWNpbmcgYXJncyAqLworICAgICAgICAgICAgICAgICpwX2FyZ3MgPSBhcmdzID0gc3Vic2xpY2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfWElOQ1JFRihteWVycm5vKTsKKyAgICBzZWxmLT5teWVycm5vID0gbXllcnJubzsKKworICAgIFB5X1hJTkNSRUYoc3RyZXJyb3IpOworICAgIHNlbGYtPnN0cmVycm9yID0gc3RyZXJyb3I7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfWElOQ1JFRih3aW5lcnJvcik7CisgICAgc2VsZi0+d2luZXJyb3IgPSB3aW5lcnJvcjsKKyNlbmRpZgorCisgICAgLyogU3RlYWxzIHRoZSByZWZlcmVuY2UgdG8gYXJncyAqLworICAgIFB5X0NMRUFSKHNlbGYtPmFyZ3MpOworICAgIHNlbGYtPmFyZ3MgPSBhcmdzOworICAgIGFyZ3MgPSBOVUxMOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitPU0Vycm9yX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcyk7CitzdGF0aWMgaW50CitPU0Vycm9yX2luaXQoUHlPU0Vycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOworCitzdGF0aWMgaW50Citvc2Vycm9yX3VzZV9pbml0KFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICAvKiBXaGVuIF9faW5pdF9fIGlzIGRlZmluZWQgaW4gYSBPU0Vycm9yIHN1YmNsYXNzLCB3ZSB3YW50IGFueQorICAgICAgIGV4dHJhbmVvdXMgYXJndW1lbnQgdG8gX19uZXdfXyB0byBiZSBpZ25vcmVkLiAgVGhlIG9ubHkgcmVhc29uYWJsZQorICAgICAgIHNvbHV0aW9uLCBnaXZlbiBfX25ld19fIHRha2VzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cywKKyAgICAgICBpcyB0byBkZWZlciBhcmcgcGFyc2luZyBhbmQgaW5pdGlhbGl6YXRpb24gdG8gX19pbml0X18uCisKKyAgICAgICBCdXQgd2hlbiBfX25ld19fIGlzIG92ZXJyaWRlbiBhcyB3ZWxsLCBpdCBzaG91bGQgY2FsbCBvdXIgX19uZXdfXworICAgICAgIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cy4KKworICAgICAgIChzZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEyNTU1I21zZzE0ODgyOSApCisgICAgKi8KKyAgICBpZiAodHlwZS0+dHBfaW5pdCAhPSAoaW5pdHByb2MpIE9TRXJyb3JfaW5pdCAmJgorICAgICAgICB0eXBlLT50cF9uZXcgPT0gKG5ld2Z1bmMpIE9TRXJyb3JfbmV3KSB7CisgICAgICAgIGFzc2VydCgoUHlPYmplY3QgKikgdHlwZSAhPSBQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorT1NFcnJvcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPU0Vycm9yT2JqZWN0ICpzZWxmID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbXllcnJubyA9IE5VTEwsICpzdHJlcnJvciA9IE5VTEwsICpmaWxlbmFtZSA9IE5VTEw7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICp3aW5lcnJvciA9IE5VTEw7CisjZW5kaWYKKworICAgIGlmICghb3NlcnJvcl91c2VfaW5pdCh0eXBlKSkgeworICAgICAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKHR5cGUtPnRwX25hbWUsIGt3ZHMpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgICAgICBpZiAob3NlcnJvcl9wYXJzZV9hcmdzKCZhcmdzLCAmbXllcnJubywgJnN0cmVycm9yLCAmZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAmd2luZXJyb3IKKyNlbmRpZgorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKG15ZXJybm8gJiYgUHlMb25nX0NoZWNrKG15ZXJybm8pICYmCisgICAgICAgICAgICBlcnJub21hcCAmJiAoUHlPYmplY3QgKikgdHlwZSA9PSBQeUV4Y19PU0Vycm9yKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbmV3dHlwZTsKKyAgICAgICAgICAgIG5ld3R5cGUgPSBQeURpY3RfR2V0SXRlbShlcnJub21hcCwgbXllcnJubyk7CisgICAgICAgICAgICBpZiAobmV3dHlwZSkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeVR5cGVfQ2hlY2sobmV3dHlwZSkpOworICAgICAgICAgICAgICAgIHR5cGUgPSAoUHlUeXBlT2JqZWN0ICopIG5ld3R5cGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZWxmID0gKFB5T1NFcnJvck9iamVjdCAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBzZWxmLT5kaWN0ID0gTlVMTDsKKyAgICBzZWxmLT50cmFjZWJhY2sgPSBzZWxmLT5jYXVzZSA9IHNlbGYtPmNvbnRleHQgPSBOVUxMOworICAgIHNlbGYtPndyaXR0ZW4gPSAtMTsKKworICAgIGlmICghb3NlcnJvcl91c2VfaW5pdCh0eXBlKSkgeworICAgICAgICBpZiAob3NlcnJvcl9pbml0KHNlbGYsICZhcmdzLCBteWVycm5vLCBzdHJlcnJvciwgZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgICAgICAgICAgICAgLCB3aW5lcnJvcgorI2VuZGlmCisgICAgICAgICAgICApKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNlbGYtPmFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgaWYgKHNlbGYtPmFyZ3MgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgIFB5X1hERUNSRUYoc2VsZik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQKK09TRXJyb3JfaW5pdChQeU9TRXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqbXllcnJubyA9IE5VTEwsICpzdHJlcnJvciA9IE5VTEwsICpmaWxlbmFtZSA9IE5VTEw7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICp3aW5lcnJvciA9IE5VTEw7CisjZW5kaWYKKworICAgIGlmICghb3NlcnJvcl91c2VfaW5pdChQeV9UWVBFKHNlbGYpKSkKKyAgICAgICAgLyogRXZlcnl0aGluZyBhbHJlYWR5IGRvbmUgaW4gT1NFcnJvcl9uZXcgKi8KKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIGt3ZHMpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgaWYgKG9zZXJyb3JfcGFyc2VfYXJncygmYXJncywgJm15ZXJybm8sICZzdHJlcnJvciwgJmZpbGVuYW1lCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAmd2luZXJyb3IKKyNlbmRpZgorICAgICAgICApKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgaWYgKG9zZXJyb3JfaW5pdChzZWxmLCAmYXJncywgbXllcnJubywgc3RyZXJyb3IsIGZpbGVuYW1lCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgICAgICAgICAgLCB3aW5lcnJvcgorI2VuZGlmCisgICAgICAgICkpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQKK09TRXJyb3JfY2xlYXIoUHlPU0Vycm9yT2JqZWN0ICpzZWxmKQogewogICAgIFB5X0NMRUFSKHNlbGYtPm15ZXJybm8pOwogICAgIFB5X0NMRUFSKHNlbGYtPnN0cmVycm9yKTsKICAgICBQeV9DTEVBUihzZWxmLT5maWxlbmFtZSk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0NMRUFSKHNlbGYtPndpbmVycm9yKTsKKyNlbmRpZgogICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX2NsZWFyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKIH0KIAogc3RhdGljIHZvaWQKLUVudmlyb25tZW50RXJyb3JfZGVhbGxvYyhQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKnNlbGYpCitPU0Vycm9yX2RlYWxsb2MoUHlPU0Vycm9yT2JqZWN0ICpzZWxmKQogewogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOwotICAgIEVudmlyb25tZW50RXJyb3JfY2xlYXIoc2VsZik7CisgICAgT1NFcnJvcl9jbGVhcihzZWxmKTsKICAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwogfQogCiBzdGF0aWMgaW50Ci1FbnZpcm9ubWVudEVycm9yX3RyYXZlcnNlKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LAorT1NFcnJvcl90cmF2ZXJzZShQeU9TRXJyb3JPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwKICAgICAgICAgdm9pZCAqYXJnKQogewogICAgIFB5X1ZJU0lUKHNlbGYtPm15ZXJybm8pOwogICAgIFB5X1ZJU0lUKHNlbGYtPnN0cmVycm9yKTsKICAgICBQeV9WSVNJVChzZWxmLT5maWxlbmFtZSk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X1ZJU0lUKHNlbGYtPndpbmVycm9yKTsKKyNlbmRpZgogICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3RyYXZlcnNlKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmLCB2aXNpdCwgYXJnKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLUVudmlyb25tZW50RXJyb3Jfc3RyKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqc2VsZikKK09TRXJyb3Jfc3RyKFB5T1NFcnJvck9iamVjdCAqc2VsZikKIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogSWYgYXZhaWxhYmxlLCB3aW5lcnJvciBoYXMgdGhlIHByaW9yaXR5IG92ZXIgbXllcnJubyAqLworICAgIGlmIChzZWxmLT53aW5lcnJvciAmJiBzZWxmLT5maWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbRXJyb3IgJVNdICVTOiAlUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT53aW5lcnJvciA/IHNlbGYtPndpbmVycm9yOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmZpbGVuYW1lKTsKKyAgICBpZiAoc2VsZi0+d2luZXJyb3IgJiYgc2VsZi0+c3RyZXJyb3IpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm9yICVTXSAlUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT53aW5lcnJvciA/IHNlbGYtPndpbmVycm9yOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSk7CisjZW5kaWYKICAgICBpZiAoc2VsZi0+ZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm5vICVTXSAlUzogJVIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+bXllcnJubyA/IHNlbGYtPm15ZXJybm86IFB5X05vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJlcnJvciA/IHNlbGYtPnN0cmVycm9yOiBQeV9Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmlsZW5hbWUpOwotICAgIGVsc2UgaWYgKHNlbGYtPm15ZXJybm8gJiYgc2VsZi0+c3RyZXJyb3IpCisgICAgaWYgKHNlbGYtPm15ZXJybm8gJiYgc2VsZi0+c3RyZXJyb3IpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm5vICVTXSAlUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5teWVycm5vID8gc2VsZi0+bXllcnJubzogUHlfTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fc3RyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKKyAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9zdHIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOwogfQogCi1zdGF0aWMgUHlNZW1iZXJEZWYgRW52aXJvbm1lbnRFcnJvcl9tZW1iZXJzW10gPSB7Ci0gICAgeyJlcnJubyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUVudmlyb25tZW50RXJyb3JPYmplY3QsIG15ZXJybm8pLCAwLAotICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBlcnJubyIpfSwKLSAgICB7InN0cmVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCwgc3RyZXJyb3IpLCAwLAotICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBzdHJlcnJvciIpfSwKLSAgICB7ImZpbGVuYW1lIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCwgZmlsZW5hbWUpLCAwLAotICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBmaWxlbmFtZSIpfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1FbnZpcm9ubWVudEVycm9yX3JlZHVjZShQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKnNlbGYpCitPU0Vycm9yX3JlZHVjZShQeU9TRXJyb3JPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmFyZ3MgPSBzZWxmLT5hcmdzOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMLCAqdG1wOwogCiAgICAgLyogc2VsZi0+YXJncyBpcyBvbmx5IHRoZSBmaXJzdCB0d28gcmVhbCBhcmd1bWVudHMgaWYgdGhlcmUgd2FzIGEKLSAgICAgKiBmaWxlIG5hbWUgZ2l2ZW4gdG8gRW52aXJvbm1lbnRFcnJvci4gKi8KKyAgICAgKiBmaWxlIG5hbWUgZ2l2ZW4gdG8gT1NFcnJvci4gKi8KICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAyICYmIHNlbGYtPmZpbGVuYW1lKSB7CiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygzKTsKICAgICAgICAgaWYgKCFhcmdzKQpAQCAtNjk5LDE0NCArMTA3MSw5MyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitPU0Vycm9yX3dyaXR0ZW5fZ2V0KFB5T1NFcnJvck9iamVjdCAqc2VsZiwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBpZiAoc2VsZi0+d3JpdHRlbiA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJjaGFyYWN0ZXJzX3dyaXR0ZW4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+d3JpdHRlbik7Cit9CiAKLXN0YXRpYyBQeU1ldGhvZERlZiBFbnZpcm9ubWVudEVycm9yX21ldGhvZHNbXSA9IHsKLSAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pRW52aXJvbm1lbnRFcnJvcl9yZWR1Y2UsIE1FVEhfTk9BUkdTfSwKK3N0YXRpYyBpbnQKK09TRXJyb3Jfd3JpdHRlbl9zZXQoUHlPU0Vycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnLCB2b2lkICpjb250ZXh0KQoreworICAgIFB5X3NzaXplX3QgbjsKKyAgICBuID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfVmFsdWVFcnJvcik7CisgICAgaWYgKG4gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHNlbGYtPndyaXR0ZW4gPSBuOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNZW1iZXJEZWYgT1NFcnJvcl9tZW1iZXJzW10gPSB7CisgICAgeyJlcnJubyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeU9TRXJyb3JPYmplY3QsIG15ZXJybm8pLCAwLAorICAgICAgICBQeURvY19TVFIoIlBPU0lYIGV4Y2VwdGlvbiBjb2RlIil9LAorICAgIHsic3RyZXJyb3IiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPU0Vycm9yT2JqZWN0LCBzdHJlcnJvciksIDAsCisgICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIHN0cmVycm9yIil9LAorICAgIHsiZmlsZW5hbWUiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPU0Vycm9yT2JqZWN0LCBmaWxlbmFtZSksIDAsCisgICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIGZpbGVuYW1lIil9LAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB7IndpbmVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5T1NFcnJvck9iamVjdCwgd2luZXJyb3IpLCAwLAorICAgICAgICBQeURvY19TVFIoIldpbjMyIGV4Y2VwdGlvbiBjb2RlIil9LAorI2VuZGlmCisgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIE9TRXJyb3JfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilPU0Vycm9yX3JlZHVjZSwgTUVUSF9OT0FSR1N9LAogICAgIHtOVUxMfQogfTsKIAotQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBFbnZpcm9ubWVudEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRFcnJvciwgRW52aXJvbm1lbnRFcnJvcl9kZWFsbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRFcnJvcl9tZXRob2RzLCBFbnZpcm9ubWVudEVycm9yX21lbWJlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudEVycm9yX3N0ciwKK3N0YXRpYyBQeUdldFNldERlZiBPU0Vycm9yX2dldHNldFtdID0geworICAgIHsiY2hhcmFjdGVyc193cml0dGVuIiwgKGdldHRlcikgT1NFcnJvcl93cml0dGVuX2dldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXR0ZXIpIE9TRXJyb3Jfd3JpdHRlbl9zZXQsIE5VTEx9LAorICAgIHtOVUxMfQorfTsKKworCitDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FeGNlcHRpb24sIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICBPU0Vycm9yLCBPU0Vycm9yX25ldywKKyAgICAgICAgICAgICAgICAgICAgICAgIE9TRXJyb3JfbWV0aG9kcywgT1NFcnJvcl9tZW1iZXJzLCBPU0Vycm9yX2dldHNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9TRXJyb3Jfc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgIkJhc2UgY2xhc3MgZm9yIEkvTyByZWxhdGVkIGVycm9ycy4iKTsKIAogCiAvKgotICogICAgSU9FcnJvciBleHRlbmRzIEVudmlyb25tZW50RXJyb3IKKyAqICAgIFZhcmlvdXMgT1NFcnJvciBzdWJjbGFzc2VzCiAgKi8KLU1pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FbnZpcm9ubWVudEVycm9yLCBJT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50RXJyb3IsICJJL08gb3BlcmF0aW9uIGZhaWxlZC4iKTsKLQotCi0vKgotICogICAgT1NFcnJvciBleHRlbmRzIEVudmlyb25tZW50RXJyb3IKLSAqLwotTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0Vudmlyb25tZW50RXJyb3IsIE9TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRFcnJvciwgIk9TIHN5c3RlbSBjYWxsIGZhaWxlZC4iKTsKLQotCi0vKgotICogICAgV2luZG93c0Vycm9yIGV4dGVuZHMgT1NFcnJvcgotICovCi0jaWZkZWYgTVNfV0lORE9XUwotI2luY2x1ZGUgImVycm1hcC5oIgotCi1zdGF0aWMgaW50Ci1XaW5kb3dzRXJyb3JfY2xlYXIoUHlXaW5kb3dzRXJyb3JPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfQ0xFQVIoc2VsZi0+bXllcnJubyk7Ci0gICAgUHlfQ0xFQVIoc2VsZi0+c3RyZXJyb3IpOwotICAgIFB5X0NMRUFSKHNlbGYtPmZpbGVuYW1lKTsKLSAgICBQeV9DTEVBUihzZWxmLT53aW5lcnJvcik7Ci0gICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fY2xlYXIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOwotfQotCi1zdGF0aWMgdm9pZAotV2luZG93c0Vycm9yX2RlYWxsb2MoUHlXaW5kb3dzRXJyb3JPYmplY3QgKnNlbGYpCi17Ci0gICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7Ci0gICAgV2luZG93c0Vycm9yX2NsZWFyKHNlbGYpOwotICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Ci19Ci0KLXN0YXRpYyBpbnQKLVdpbmRvd3NFcnJvcl90cmF2ZXJzZShQeVdpbmRvd3NFcnJvck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCi17Ci0gICAgUHlfVklTSVQoc2VsZi0+bXllcnJubyk7Ci0gICAgUHlfVklTSVQoc2VsZi0+c3RyZXJyb3IpOwotICAgIFB5X1ZJU0lUKHNlbGYtPmZpbGVuYW1lKTsKLSAgICBQeV9WSVNJVChzZWxmLT53aW5lcnJvcik7Ci0gICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fdHJhdmVyc2UoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIHZpc2l0LCBhcmcpOwotfQotCi1zdGF0aWMgaW50Ci1XaW5kb3dzRXJyb3JfaW5pdChQeVdpbmRvd3NFcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIFB5T2JqZWN0ICpvX2VycmNvZGUgPSBOVUxMOwotICAgIGxvbmcgZXJyY29kZTsKLSAgICBsb25nIHBvc2l4X2Vycm5vOwotCi0gICAgaWYgKEVudmlyb25tZW50RXJyb3JfaW5pdCgoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICopc2VsZiwgYXJncywga3dkcykKLSAgICAgICAgICAgID09IC0xKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoc2VsZi0+bXllcnJubyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8qIFNldCBlcnJubyB0byB0aGUgUE9TSVggZXJybm8sIGFuZCB3aW5lcnJvciB0byB0aGUgV2luMzIKLSAgICAgICBlcnJvciBjb2RlLiAqLwotICAgIGVycmNvZGUgPSBQeUxvbmdfQXNMb25nKHNlbGYtPm15ZXJybm8pOwotICAgIGlmIChlcnJjb2RlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBwb3NpeF9lcnJubyA9IHdpbmVycm9yX3RvX2Vycm5vKGVycmNvZGUpOwotCi0gICAgUHlfQ0xFQVIoc2VsZi0+d2luZXJyb3IpOwotICAgIHNlbGYtPndpbmVycm9yID0gc2VsZi0+bXllcnJubzsKLQotICAgIG9fZXJyY29kZSA9IFB5TG9uZ19Gcm9tTG9uZyhwb3NpeF9lcnJubyk7Ci0gICAgaWYgKCFvX2VycmNvZGUpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHNlbGYtPm15ZXJybm8gPSBvX2VycmNvZGU7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotCi1zdGF0aWMgUHlPYmplY3QgKgotV2luZG93c0Vycm9yX3N0cihQeVdpbmRvd3NFcnJvck9iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+ZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm9yICVTXSAlUzogJVIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+d2luZXJyb3IgPyBzZWxmLT53aW5lcnJvcjogUHlfTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5maWxlbmFtZSk7Ci0gICAgZWxzZSBpZiAoc2VsZi0+d2luZXJyb3IgJiYgc2VsZi0+c3RyZXJyb3IpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm9yICVTXSAlUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT53aW5lcnJvciA/IHNlbGYtPndpbmVycm9yOiBQeV9Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gRW52aXJvbm1lbnRFcnJvcl9zdHIoKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqKXNlbGYpOwotfQotCi1zdGF0aWMgUHlNZW1iZXJEZWYgV2luZG93c0Vycm9yX21lbWJlcnNbXSA9IHsKLSAgICB7ImVycm5vIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5V2luZG93c0Vycm9yT2JqZWN0LCBteWVycm5vKSwgMCwKLSAgICAgICAgUHlEb2NfU1RSKCJQT1NJWCBleGNlcHRpb24gY29kZSIpfSwKLSAgICB7InN0cmVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5V2luZG93c0Vycm9yT2JqZWN0LCBzdHJlcnJvciksIDAsCi0gICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIHN0cmVycm9yIil9LAotICAgIHsiZmlsZW5hbWUiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlXaW5kb3dzRXJyb3JPYmplY3QsIGZpbGVuYW1lKSwgMCwKLSAgICAgICAgUHlEb2NfU1RSKCJleGNlcHRpb24gZmlsZW5hbWUiKX0sCi0gICAgeyJ3aW5lcnJvciIsIFRfT0JKRUNULCBvZmZzZXRvZihQeVdpbmRvd3NFcnJvck9iamVjdCwgd2luZXJyb3IpLCAwLAotICAgICAgICBQeURvY19TVFIoIldpbjMyIGV4Y2VwdGlvbiBjb2RlIil9LAotICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KLX07Ci0KLUNvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFdpbmRvd3NFcnJvciwgV2luZG93c0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93c0Vycm9yX2RlYWxsb2MsIDAsIFdpbmRvd3NFcnJvcl9tZW1iZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93c0Vycm9yX3N0ciwgIk1TLVdpbmRvd3MgT1Mgc3lzdGVtIGNhbGwgZmFpbGVkLiIpOwotCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwotCi0KLS8qCi0gKiAgICBWTVNFcnJvciBleHRlbmRzIE9TRXJyb3IgKEkgdGhpbmspCi0gKi8KLSNpZmRlZiBfX1ZNUwotTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFZNU0Vycm9yLCBFbnZpcm9ubWVudEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVuVk1TIE9TIHN5c3RlbSBjYWxsIGZhaWxlZC4iKTsKLSNlbmRpZgotCitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgQmxvY2tpbmdJT0Vycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIHdvdWxkIGJsb2NrLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIENvbm5lY3Rpb25FcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiBlcnJvci4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBDaGlsZFByb2Nlc3NFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbGQgcHJvY2VzcyBlcnJvci4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19Db25uZWN0aW9uRXJyb3IsIEJyb2tlblBpcGVFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQnJva2VuIHBpcGUuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uQWJvcnRlZEVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIGFib3J0ZWQuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHJlZnVzZWQuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVzZXRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiByZXNldC4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBGaWxlRXhpc3RzRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgYWxyZWFkeSBleGlzdHMuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgRmlsZU5vdEZvdW5kRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgbm90IGZvdW5kLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIElzQURpcmVjdG9yeUVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVyYXRpb24gZG9lc24ndCB3b3JrIG9uIGRpcmVjdG9yaWVzLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIE5vdEFEaXJlY3RvcnlFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiT3BlcmF0aW9uIG9ubHkgd29ya3Mgb24gZGlyZWN0b3JpZXMuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgSW50ZXJydXB0ZWRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZXJydXB0ZWQgYnkgc2lnbmFsLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTm90IGVub3VnaCBwZXJtaXNzaW9ucy4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBQcm9jZXNzTG9va3VwRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlByb2Nlc3Mgbm90IGZvdW5kLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFRpbWVvdXRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCBleHBpcmVkLiIpOwogCiAvKgogICogICAgRU9GRXJyb3IgZXh0ZW5kcyBFeGNlcHRpb24KQEAgLTk2NywyMSArMTI4OCwyMyBAQAogc3RhdGljIFB5T2JqZWN0KgogbXlfYmFzZW5hbWUoUHlPYmplY3QgKm5hbWUpCiB7Ci0gICAgUHlfVU5JQ09ERSAqdW5pY29kZTsKICAgICBQeV9zc2l6ZV90IGksIHNpemUsIG9mZnNldDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpOwotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUobmFtZSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG5hbWUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShuYW1lKTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSk7CiAgICAgb2Zmc2V0ID0gMDsKICAgICBmb3IoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgIGlmICh1bmljb2RlW2ldID09IFNFUCkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID09IFNFUCkKICAgICAgICAgICAgIG9mZnNldCA9IGkgKyAxOwogICAgIH0KLSAgICBpZiAob2Zmc2V0ICE9IDApIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpICsgb2Zmc2V0LAotICAgICAgICAgICAgc2l6ZSAtIG9mZnNldCk7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAob2Zmc2V0ICE9IDApCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKG5hbWUsIG9mZnNldCwgc2l6ZSk7CisgICAgZWxzZSB7CiAgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgfQpAQCAtMTA0OSw3ICsxMzcyLDcgQEAKIH07CiAKIENvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgU3ludGF4RXJyb3IsIFN5bnRheEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgU3ludGF4RXJyb3JfZGVhbGxvYywgMCwgU3ludGF4RXJyb3JfbWVtYmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIFN5bnRheEVycm9yX21lbWJlcnMsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICBTeW50YXhFcnJvcl9zdHIsICJJbnZhbGlkIHN5bnRheC4iKTsKIAogCkBAIC0xMTAzLDcgKzE0MjYsNyBAQAogfQogCiBDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19Mb29rdXBFcnJvciwgS2V5RXJyb3IsIEJhc2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCBLZXlFcnJvcl9zdHIsICJNYXBwaW5nIGtleSBub3QgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCBLZXlFcnJvcl9zdHIsICJNYXBwaW5nIGtleSBub3QgZm91bmQuIik7CiAKIAogLyoKQEAgLTEyMDIsNyArMTUyNSw3IEBACiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiAtMTsKICAgICAqc3RhcnQgPSAoKFB5VW5pY29kZUVycm9yT2JqZWN0ICopZXhjKS0+c3RhcnQ7Ci0gICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwogICAgIGlmICgqc3RhcnQ8MCkKICAgICAgICAgKnN0YXJ0ID0gMDsgLypYWFggY2hlY2sgZm9yIHZhbHVlcyA8MCovCiAgICAgaWYgKCpzdGFydD49c2l6ZSkKQEAgLTEyNzAsNyArMTU5Myw3IEBACiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiAtMTsKICAgICAqZW5kID0gKChQeVVuaWNvZGVFcnJvck9iamVjdCAqKWV4YyktPmVuZDsKLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgaWYgKCplbmQ8MSkKICAgICAgICAgKmVuZCA9IDE7CiAgICAgaWYgKCplbmQ+c2l6ZSkKQEAgLTE0NDIsNiArMTc2NSwxMSBAQAogICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGVyci0+b2JqZWN0KSA8IC0xKSB7CisgICAgICAgIGVyci0+ZW5jb2RpbmcgPSBOVUxMOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgUHlfSU5DUkVGKGVyci0+ZW5jb2RpbmcpOwogICAgIFB5X0lOQ1JFRihlcnItPm9iamVjdCk7CiAgICAgUHlfSU5DUkVGKGVyci0+cmVhc29uKTsKQEAgLTE0NjYsOCArMTc5NCw4IEBACiAgICAgaWYgKGVuY29kaW5nX3N0ciA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7CiAKLSAgICBpZiAodXNlbGYtPnN0YXJ0IDwgUHlVbmljb2RlX0dFVF9TSVpFKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKLSAgICAgICAgaW50IGJhZGNoYXIgPSAoaW50KVB5VW5pY29kZV9BU19VTklDT0RFKHVzZWxmLT5vYmplY3QpW3VzZWxmLT5zdGFydF07CisgICAgaWYgKHVzZWxmLT5zdGFydCA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKKyAgICAgICAgUHlfVUNTNCBiYWRjaGFyID0gUHlVbmljb2RlX1JlYWRDaGFyKHVzZWxmLT5vYmplY3QsIHVzZWxmLT5zdGFydCk7CiAgICAgICAgIGNvbnN0IGNoYXIgKmZtdDsKICAgICAgICAgaWYgKGJhZGNoYXIgPD0gMHhmZikKICAgICAgICAgICAgIGZtdCA9ICInJVUnIGNvZGVjIGNhbid0IGVuY29kZSBjaGFyYWN0ZXIgJ1xceCUwMngnIGluIHBvc2l0aW9uICV6ZDogJVUiOwpAQCAtMTQ3OCw3ICsxODA2LDcgQEAKICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCiAgICAgICAgICAgICBmbXQsCiAgICAgICAgICAgICBlbmNvZGluZ19zdHIsCi0gICAgICAgICAgICBiYWRjaGFyLAorICAgICAgICAgICAgKGludCliYWRjaGFyLAogICAgICAgICAgICAgdXNlbGYtPnN0YXJ0LAogICAgICAgICAgICAgcmVhc29uX3N0cik7CiAgICAgfQpAQCAtMTY3NSw4ICsyMDAzLDggQEAKICAgICBpZiAocmVhc29uX3N0ciA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7CiAKLSAgICBpZiAodXNlbGYtPnN0YXJ0IDwgUHlVbmljb2RlX0dFVF9TSVpFKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKLSAgICAgICAgaW50IGJhZGNoYXIgPSAoaW50KVB5VW5pY29kZV9BU19VTklDT0RFKHVzZWxmLT5vYmplY3QpW3VzZWxmLT5zdGFydF07CisgICAgaWYgKHVzZWxmLT5zdGFydCA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKKyAgICAgICAgUHlfVUNTNCBiYWRjaGFyID0gUHlVbmljb2RlX1JlYWRDaGFyKHVzZWxmLT5vYmplY3QsIHVzZWxmLT5zdGFydCk7CiAgICAgICAgIGNvbnN0IGNoYXIgKmZtdDsKICAgICAgICAgaWYgKGJhZGNoYXIgPD0gMHhmZikKICAgICAgICAgICAgIGZtdCA9ICJjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVyICdcXHglMDJ4JyBpbiBwb3NpdGlvbiAlemQ6ICVVIjsKQEAgLTE2ODYsNyArMjAxNCw3IEBACiAgICAgICAgICAgICBmbXQgPSAiY2FuJ3QgdHJhbnNsYXRlIGNoYXJhY3RlciAnXFxVJTA4eCcgaW4gcG9zaXRpb24gJXpkOiAlVSI7CiAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAogICAgICAgICAgICAgZm10LAotICAgICAgICAgICAgYmFkY2hhciwKKyAgICAgICAgICAgIChpbnQpYmFkY2hhciwKICAgICAgICAgICAgIHVzZWxmLT5zdGFydCwKICAgICAgICAgICAgIHJlYXNvbl9zdHIKICAgICAgICAgKTsKQEAgLTE3MTcsNiArMjA0NSw3IEBACiB9OwogUHlPYmplY3QgKlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciA9IChQeU9iamVjdCAqKSZfUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yOwogCisvKiBEZXByZWNhdGVkLiAqLwogUHlPYmplY3QgKgogUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAogICAgIGNvbnN0IFB5X1VOSUNPREUgKm9iamVjdCwgUHlfc3NpemVfdCBsZW5ndGgsCkBAIC0xNzI2LDYgKzIwNTUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCwgbGVuZ3RoLCBzdGFydCwgZW5kLCByZWFzb24pOwogfQogCitQeU9iamVjdCAqCitfUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAorICAgIFB5T2JqZWN0ICpvYmplY3QsCisgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGNvbnN0IGNoYXIgKnJlYXNvbikKK3sKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciwgIk9ucyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QsIHN0YXJ0LCBlbmQsIHJlYXNvbik7Cit9CiAKIC8qCiAgKiAgICBBc3NlcnRpb25FcnJvciBleHRlbmRzIEV4Y2VwdGlvbgpAQCAtMTk3NSwxMSArMjMxMiw4MCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhiZGljdCwgIyBUWVBFLCBQeUV4Y18gIyMgVFlQRSkpIFwKICAgICAgICAgUHlfRmF0YWxFcnJvcigiTW9kdWxlIGRpY3Rpb25hcnkgaW5zZXJ0aW9uIHByb2JsZW0uIik7CiAKKyNkZWZpbmUgSU5JVF9BTElBUyhOQU1FLCBUWVBFKSBQeV9JTkNSRUYoUHlFeGNfICMjIFRZUEUpOyBcCisgICAgUHlfWERFQ1JFRihQeUV4Y18gIyMgTkFNRSk7IFwKKyAgICBQeUV4Y18gIyMgTkFNRSA9IFB5RXhjXyAjIyBUWVBFOyBcCisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGJkaWN0LCAjIE5BTUUsIFB5RXhjXyAjIyBOQU1FKSkgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJNb2R1bGUgZGljdGlvbmFyeSBpbnNlcnRpb24gcHJvYmxlbS4iKTsKKworI2RlZmluZSBBRERfRVJSTk8oVFlQRSwgQ09ERSkgeyBcCisgICAgUHlPYmplY3QgKl9jb2RlID0gUHlMb25nX0Zyb21Mb25nKENPREUpOyBcCisgICAgYXNzZXJ0KF9QeU9iamVjdF9SZWFsSXNTdWJjbGFzcyhQeUV4Y18gIyMgVFlQRSwgUHlFeGNfT1NFcnJvcikpOyBcCisgICAgaWYgKCFfY29kZSB8fCBQeURpY3RfU2V0SXRlbShlcnJub21hcCwgX2NvZGUsIFB5RXhjXyAjIyBUWVBFKSkgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJlcnJtYXAgaW5zZXJ0aW9uIHByb2JsZW0uIik7IFwKKyAgICBQeV9ERUNSRUYoX2NvZGUpOyBcCisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPFdpbnNvY2syLmg+CisvKiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyB3ZXJlIGFkZGVkIHRvIGVycm5vLmggaW4gVlMyMDEwIGJ1dCBoYXZlCisgICBwcmVmZXJyZWQgV1NBIGVxdWl2YWxlbnRzLiAqLworI3VuZGVmIEVBRERSSU5VU0UKKyN1bmRlZiBFQUREUk5PVEFWQUlMCisjdW5kZWYgRUFGTk9TVVBQT1JUCisjdW5kZWYgRUFMUkVBRFkKKyN1bmRlZiBFQ09OTkFCT1JURUQKKyN1bmRlZiBFQ09OTlJFRlVTRUQKKyN1bmRlZiBFQ09OTlJFU0VUCisjdW5kZWYgRURFU1RBRERSUkVRCisjdW5kZWYgRUhPU1RVTlJFQUNICisjdW5kZWYgRUlOUFJPR1JFU1MKKyN1bmRlZiBFSVNDT05OCisjdW5kZWYgRUxPT1AKKyN1bmRlZiBFTVNHU0laRQorI3VuZGVmIEVORVRET1dOCisjdW5kZWYgRU5FVFJFU0VUCisjdW5kZWYgRU5FVFVOUkVBQ0gKKyN1bmRlZiBFTk9CVUZTCisjdW5kZWYgRU5PUFJPVE9PUFQKKyN1bmRlZiBFTk9UQ09OTgorI3VuZGVmIEVOT1RTT0NLCisjdW5kZWYgRU9QTk9UU1VQUAorI3VuZGVmIEVQUk9UT05PU1VQUE9SVAorI3VuZGVmIEVQUk9UT1RZUEUKKyN1bmRlZiBFVElNRURPVVQKKyN1bmRlZiBFV09VTERCTE9DSworCisjaWYgZGVmaW5lZChXU0FFQUxSRUFEWSkgJiYgIWRlZmluZWQoRUFMUkVBRFkpCisjZGVmaW5lIEVBTFJFQURZIFdTQUVBTFJFQURZCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVDT05OQUJPUlRFRCkgJiYgIWRlZmluZWQoRUNPTk5BQk9SVEVEKQorI2RlZmluZSBFQ09OTkFCT1JURUQgV1NBRUNPTk5BQk9SVEVECisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVDT05OUkVGVVNFRCkgJiYgIWRlZmluZWQoRUNPTk5SRUZVU0VEKQorI2RlZmluZSBFQ09OTlJFRlVTRUQgV1NBRUNPTk5SRUZVU0VECisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVDT05OUkVTRVQpICYmICFkZWZpbmVkKEVDT05OUkVTRVQpCisjZGVmaW5lIEVDT05OUkVTRVQgV1NBRUNPTk5SRVNFVAorI2VuZGlmCisjaWYgZGVmaW5lZChXU0FFSU5QUk9HUkVTUykgJiYgIWRlZmluZWQoRUlOUFJPR1JFU1MpCisjZGVmaW5lIEVJTlBST0dSRVNTIFdTQUVJTlBST0dSRVNTCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVTSFVURE9XTikgJiYgIWRlZmluZWQoRVNIVVRET1dOKQorI2RlZmluZSBFU0hVVERPV04gV1NBRVNIVVRET1dOCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVUSU1FRE9VVCkgJiYgIWRlZmluZWQoRVRJTUVET1VUKQorI2RlZmluZSBFVElNRURPVVQgV1NBRVRJTUVET1VUCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVXT1VMREJMT0NLKSAmJiAhZGVmaW5lZChFV09VTERCTE9DSykKKyNkZWZpbmUgRVdPVUxEQkxPQ0sgV1NBRVdPVUxEQkxPQ0sKKyNlbmRpZgorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogdm9pZAotX1B5RXhjX0luaXQodm9pZCkKK19QeUV4Y19Jbml0KFB5T2JqZWN0ICpibHRpbm1vZCkKIHsKLSAgICBQeU9iamVjdCAqYmx0aW5tb2QsICpiZGljdDsKKyAgICBQeU9iamVjdCAqYmRpY3Q7CiAKICAgICBQUkVfSU5JVChCYXNlRXhjZXB0aW9uKQogICAgIFBSRV9JTklUKEV4Y2VwdGlvbikKQEAgLTE5ODksMTUgKzIzOTUsNyBAQAogICAgIFBSRV9JTklUKFN5c3RlbUV4aXQpCiAgICAgUFJFX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUFJFX0lOSVQoSW1wb3J0RXJyb3IpCi0gICAgUFJFX0lOSVQoRW52aXJvbm1lbnRFcnJvcikKLSAgICBQUkVfSU5JVChJT0Vycm9yKQogICAgIFBSRV9JTklUKE9TRXJyb3IpCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIFBSRV9JTklUKFdpbmRvd3NFcnJvcikKLSNlbmRpZgotI2lmZGVmIF9fVk1TCi0gICAgUFJFX0lOSVQoVk1TRXJyb3IpCi0jZW5kaWYKICAgICBQUkVfSU5JVChFT0ZFcnJvcikKICAgICBQUkVfSU5JVChSdW50aW1lRXJyb3IpCiAgICAgUFJFX0lOSVQoTm90SW1wbGVtZW50ZWRFcnJvcikKQEAgLTIwMzcsOSArMjQzNSwyNCBAQAogICAgIFBSRV9JTklUKEJ5dGVzV2FybmluZykKICAgICBQUkVfSU5JVChSZXNvdXJjZVdhcm5pbmcpCiAKLSAgICBibHRpbm1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYnVpbHRpbnMiKTsKLSAgICBpZiAoYmx0aW5tb2QgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiZXhjZXB0aW9ucyBib290c3RyYXBwaW5nIGVycm9yLiIpOworICAgIC8qIE9TRXJyb3Igc3ViY2xhc3NlcyAqLworICAgIFBSRV9JTklUKENvbm5lY3Rpb25FcnJvcik7CisKKyAgICBQUkVfSU5JVChCbG9ja2luZ0lPRXJyb3IpOworICAgIFBSRV9JTklUKEJyb2tlblBpcGVFcnJvcik7CisgICAgUFJFX0lOSVQoQ2hpbGRQcm9jZXNzRXJyb3IpOworICAgIFBSRV9JTklUKENvbm5lY3Rpb25BYm9ydGVkRXJyb3IpOworICAgIFBSRV9JTklUKENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IpOworICAgIFBSRV9JTklUKENvbm5lY3Rpb25SZXNldEVycm9yKTsKKyAgICBQUkVfSU5JVChGaWxlRXhpc3RzRXJyb3IpOworICAgIFBSRV9JTklUKEZpbGVOb3RGb3VuZEVycm9yKTsKKyAgICBQUkVfSU5JVChJc0FEaXJlY3RvcnlFcnJvcik7CisgICAgUFJFX0lOSVQoTm90QURpcmVjdG9yeUVycm9yKTsKKyAgICBQUkVfSU5JVChJbnRlcnJ1cHRlZEVycm9yKTsKKyAgICBQUkVfSU5JVChQZXJtaXNzaW9uRXJyb3IpOworICAgIFBSRV9JTklUKFByb2Nlc3NMb29rdXBFcnJvcik7CisgICAgUFJFX0lOSVQoVGltZW91dEVycm9yKTsKKwogICAgIGJkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChibHRpbm1vZCk7CiAgICAgaWYgKGJkaWN0ID09IE5VTEwpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImV4Y2VwdGlvbnMgYm9vdHN0cmFwcGluZyBlcnJvci4iKTsKQEAgLTIwNTIsMTQgKzI0NjUsMTQgQEAKICAgICBQT1NUX0lOSVQoU3lzdGVtRXhpdCkKICAgICBQT1NUX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUE9TVF9JTklUKEltcG9ydEVycm9yKQotICAgIFBPU1RfSU5JVChFbnZpcm9ubWVudEVycm9yKQotICAgIFBPU1RfSU5JVChJT0Vycm9yKQogICAgIFBPU1RfSU5JVChPU0Vycm9yKQorICAgIElOSVRfQUxJQVMoRW52aXJvbm1lbnRFcnJvciwgT1NFcnJvcikKKyAgICBJTklUX0FMSUFTKElPRXJyb3IsIE9TRXJyb3IpCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIFBPU1RfSU5JVChXaW5kb3dzRXJyb3IpCisgICAgSU5JVF9BTElBUyhXaW5kb3dzRXJyb3IsIE9TRXJyb3IpCiAjZW5kaWYKICNpZmRlZiBfX1ZNUwotICAgIFBPU1RfSU5JVChWTVNFcnJvcikKKyAgICBJTklUX0FMSUFTKFZNU0Vycm9yLCBPU0Vycm9yKQogI2VuZGlmCiAgICAgUE9TVF9JTklUKEVPRkVycm9yKQogICAgIFBPU1RfSU5JVChSdW50aW1lRXJyb3IpCkBAIC0yMTAwLDYgKzI1MTMsNDkgQEAKICAgICBQT1NUX0lOSVQoQnl0ZXNXYXJuaW5nKQogICAgIFBPU1RfSU5JVChSZXNvdXJjZVdhcm5pbmcpCiAKKyAgICBpZiAoIWVycm5vbWFwKSB7CisgICAgICAgIGVycm5vbWFwID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoIWVycm5vbWFwKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IGFsbG9jYXRlIG1hcCBmcm9tIGVycm5vcyB0byBPU0Vycm9yIHN1YmNsYXNzZXMiKTsKKyAgICB9CisKKyAgICAvKiBPU0Vycm9yIHN1YmNsYXNzZXMgKi8KKyAgICBQT1NUX0lOSVQoQ29ubmVjdGlvbkVycm9yKTsKKworICAgIFBPU1RfSU5JVChCbG9ja2luZ0lPRXJyb3IpOworICAgIEFERF9FUlJOTyhCbG9ja2luZ0lPRXJyb3IsIEVBR0FJTik7CisgICAgQUREX0VSUk5PKEJsb2NraW5nSU9FcnJvciwgRUFMUkVBRFkpOworICAgIEFERF9FUlJOTyhCbG9ja2luZ0lPRXJyb3IsIEVJTlBST0dSRVNTKTsKKyAgICBBRERfRVJSTk8oQmxvY2tpbmdJT0Vycm9yLCBFV09VTERCTE9DSyk7CisgICAgUE9TVF9JTklUKEJyb2tlblBpcGVFcnJvcik7CisgICAgQUREX0VSUk5PKEJyb2tlblBpcGVFcnJvciwgRVBJUEUpOworICAgIEFERF9FUlJOTyhCcm9rZW5QaXBlRXJyb3IsIEVTSFVURE9XTik7CisgICAgUE9TVF9JTklUKENoaWxkUHJvY2Vzc0Vycm9yKTsKKyAgICBBRERfRVJSTk8oQ2hpbGRQcm9jZXNzRXJyb3IsIEVDSElMRCk7CisgICAgUE9TVF9JTklUKENvbm5lY3Rpb25BYm9ydGVkRXJyb3IpOworICAgIEFERF9FUlJOTyhDb25uZWN0aW9uQWJvcnRlZEVycm9yLCBFQ09OTkFCT1JURUQpOworICAgIFBPU1RfSU5JVChDb25uZWN0aW9uUmVmdXNlZEVycm9yKTsKKyAgICBBRERfRVJSTk8oQ29ubmVjdGlvblJlZnVzZWRFcnJvciwgRUNPTk5SRUZVU0VEKTsKKyAgICBQT1NUX0lOSVQoQ29ubmVjdGlvblJlc2V0RXJyb3IpOworICAgIEFERF9FUlJOTyhDb25uZWN0aW9uUmVzZXRFcnJvciwgRUNPTk5SRVNFVCk7CisgICAgUE9TVF9JTklUKEZpbGVFeGlzdHNFcnJvcik7CisgICAgQUREX0VSUk5PKEZpbGVFeGlzdHNFcnJvciwgRUVYSVNUKTsKKyAgICBQT1NUX0lOSVQoRmlsZU5vdEZvdW5kRXJyb3IpOworICAgIEFERF9FUlJOTyhGaWxlTm90Rm91bmRFcnJvciwgRU5PRU5UKTsKKyAgICBQT1NUX0lOSVQoSXNBRGlyZWN0b3J5RXJyb3IpOworICAgIEFERF9FUlJOTyhJc0FEaXJlY3RvcnlFcnJvciwgRUlTRElSKTsKKyAgICBQT1NUX0lOSVQoTm90QURpcmVjdG9yeUVycm9yKTsKKyAgICBBRERfRVJSTk8oTm90QURpcmVjdG9yeUVycm9yLCBFTk9URElSKTsKKyAgICBQT1NUX0lOSVQoSW50ZXJydXB0ZWRFcnJvcik7CisgICAgQUREX0VSUk5PKEludGVycnVwdGVkRXJyb3IsIEVJTlRSKTsKKyAgICBQT1NUX0lOSVQoUGVybWlzc2lvbkVycm9yKTsKKyAgICBBRERfRVJSTk8oUGVybWlzc2lvbkVycm9yLCBFQUNDRVMpOworICAgIEFERF9FUlJOTyhQZXJtaXNzaW9uRXJyb3IsIEVQRVJNKTsKKyAgICBQT1NUX0lOSVQoUHJvY2Vzc0xvb2t1cEVycm9yKTsKKyAgICBBRERfRVJSTk8oUHJvY2Vzc0xvb2t1cEVycm9yLCBFU1JDSCk7CisgICAgUE9TVF9JTklUKFRpbWVvdXRFcnJvcik7CisgICAgQUREX0VSUk5PKFRpbWVvdXRFcnJvciwgRVRJTUVET1VUKTsKKwogICAgIHByZWFsbG9jYXRlX21lbWVycm9ycygpOwogCiAgICAgaWYgKCFQeUV4Y19SZWN1cnNpb25FcnJvckluc3QpIHsKQEAgLTIxMjYsNyArMjU4Miw2IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoYXJnc190dXBsZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfREVDUkVGKGJsdGlubW9kKTsKIH0KIAogdm9pZApAQCAtMjEzNCw0ICsyNTg5LDUgQEAKIHsKICAgICBQeV9DTEVBUihQeUV4Y19SZWN1cnNpb25FcnJvckluc3QpOwogICAgIGZyZWVfcHJlYWxsb2NhdGVkX21lbWVycm9ycygpOworICAgIFB5X0NMRUFSKGVycm5vbWFwKTsKIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvZmlsZW9iamVjdC5jIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKaW5kZXggZDIwZjE5Ni4uZTFjNDdjZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9maWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKQEAgLTMwLDExICszMCwxMiBAQAogICAgICAgICAgICAgICBjaGFyICplcnJvcnMsIGNoYXIgKm5ld2xpbmUsIGludCBjbG9zZWZkKQogewogICAgIFB5T2JqZWN0ICppbywgKnN0cmVhbTsKKyAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKIAogICAgIGlvID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJpbyIpOwogICAgIGlmIChpbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHJlYW0gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAib3BlbiIsICJpc2lzc3NpIiwgZmQsIG1vZGUsCisgICAgc3RyZWFtID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaXNzc2kiLCBmZCwgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmluZywgZW5jb2RpbmcsIGVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUsIGNsb3NlZmQpOwogICAgIFB5X0RFQ1JFRihpbyk7CkBAIC01OCw4ICs1OSw5IEBACiAgICAgewogICAgICAgICBQeU9iamVjdCAqcmVhZGVyOwogICAgICAgICBQeU9iamVjdCAqYXJnczsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZGxpbmUpOwogCi0gICAgICAgIHJlYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZiwgInJlYWRsaW5lIik7CisgICAgICAgIHJlYWRlciA9IF9QeU9iamVjdF9HZXRBdHRySWQoZiwgJlB5SWRfcmVhZGxpbmUpOwogICAgICAgICBpZiAocmVhZGVyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKG4gPD0gMCkKQEAgLTEwMywyMyArMTA1LDE4IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKG4gPCAwICYmIHJlc3VsdCAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhyZXN1bHQpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpOworICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7CiAgICAgICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXN1bHQgPSBOVUxMOwogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFT0Ygd2hlbiByZWFkaW5nIGEgbGluZSIpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHNbbGVuLTFdID09ICdcbicpIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHQtPm9iX3JlZmNudCA9PSAxKQotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgbGVuLTEpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBsZW4tMSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihyZXN1bHQsIGxlbi0xKSA9PSAnXG4nKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdjsKKyAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHJlc3VsdCwgMCwgbGVuLTEpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSB2OwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzEsMTEgKzEyOCwxMyBAQAogUHlGaWxlX1dyaXRlT2JqZWN0KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqZiwgaW50IGZsYWdzKQogewogICAgIFB5T2JqZWN0ICp3cml0ZXIsICp2YWx1ZSwgKmFyZ3MsICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOworCiAgICAgaWYgKGYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAid3JpdGVvYmplY3Qgd2l0aCBOVUxMIGZpbGUiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB3cml0ZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGYsICJ3cml0ZSIpOworICAgIHdyaXRlciA9IF9QeU9iamVjdF9HZXRBdHRySWQoZiwgJlB5SWRfd3JpdGUpOwogICAgIGlmICh3cml0ZXIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChmbGFncyAmIFB5X1BSSU5UX1JBVykgewpAQCAtMTk4LDExICsxOTcsMTIgQEAKIHsKICAgICBpbnQgZmQ7CiAgICAgUHlPYmplY3QgKm1ldGg7CisgICAgX1B5X0lERU5USUZJRVIoZmlsZW5vKTsKIAogICAgIGlmIChQeUxvbmdfQ2hlY2sobykpIHsKICAgICAgICAgZmQgPSBQeUxvbmdfQXNMb25nKG8pOwogICAgIH0KLSAgICBlbHNlIGlmICgobWV0aCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobywgImZpbGVubyIpKSAhPSBOVUxMKQorICAgIGVsc2UgaWYgKChtZXRoID0gX1B5T2JqZWN0X0dldEF0dHJJZChvLCAmUHlJZF9maWxlbm8pKSAhPSBOVUxMKQogICAgIHsKICAgICAgICAgUHlPYmplY3QgKmZubyA9IFB5RXZhbF9DYWxsT2JqZWN0KG1ldGgsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYobWV0aCk7CkBAIC0yOTcsOCArMjk3LDggQEAKICAgICAgICAgKnArKyA9IGM7CiAgICAgICAgIGlmIChjID09ICdcbicpIGJyZWFrOwogICAgIH0KLSAgICBpZiAoIGMgPT0gRU9GICYmIHNraXBuZXh0bGYgKQotICAgICAgICBuZXdsaW5ldHlwZXMgfD0gTkVXTElORV9DUjsKKyAgICAvKiBpZiAoIGMgPT0gRU9GICYmIHNraXBuZXh0bGYgKQorICAgICAgICBuZXdsaW5ldHlwZXMgfD0gTkVXTElORV9DUjsgKi8KICAgICBGVU5MT0NLRklMRShzdHJlYW0pOwogICAgICpwID0gJ1wwJzsKICAgICBpZiAoIHNraXBuZXh0bGYgKSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKaW5kZXggZTE0NmE0Zi4uYTQyYmU3MSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jCisrKyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwpAQCAtMTUsNTkgKzE1LDE3IEBACiAjZGVmaW5lIE1JTih4LCB5KSAoKHgpIDwgKHkpID8gKHgpIDogKHkpKQogCiAKLSNpZmRlZiBfT1NGX1NPVVJDRQotLyogT1NGMSA1LjEgZG9lc24ndCBtYWtlIHRoaXMgYXZhaWxhYmxlIHdpdGggWE9QRU5fU09VUkNFX0VYVEVOREVEIGRlZmluZWQgKi8KLWV4dGVybiBpbnQgZmluaXRlKGRvdWJsZSk7Ci0jZW5kaWYKLQogLyogU3BlY2lhbCBmcmVlIGxpc3QKLQotICAgU2luY2Ugc29tZSBQeXRob24gcHJvZ3JhbXMgY2FuIHNwZW5kIG11Y2ggb2YgdGhlaXIgdGltZSBhbGxvY2F0aW5nCi0gICBhbmQgZGVhbGxvY2F0aW5nIGZsb2F0cywgdGhlc2Ugb3BlcmF0aW9ucyBzaG91bGQgYmUgdmVyeSBmYXN0LgotICAgVGhlcmVmb3JlIHdlIHVzZSBhIGRlZGljYXRlZCBhbGxvY2F0aW9uIHNjaGVtZSB3aXRoIGEgbXVjaCBsb3dlcgotICAgb3ZlcmhlYWQgKGluIHNwYWNlIGFuZCB0aW1lKSB0aGFuIHN0cmFpZ2h0IG1hbGxvYygpOiBhIHNpbXBsZQotICAgZGVkaWNhdGVkIGZyZWUgbGlzdCwgZmlsbGVkIHdoZW4gbmVjZXNzYXJ5IHdpdGggbWVtb3J5IGZyb20gbWFsbG9jKCkuCi0KLSAgIGJsb2NrX2xpc3QgaXMgYSBzaW5nbHktbGlua2VkIGxpc3Qgb2YgYWxsIFB5RmxvYXRCbG9ja3MgZXZlciBhbGxvY2F0ZWQsCi0gICBsaW5rZWQgdmlhIHRoZWlyIG5leHQgbWVtYmVycy4gIFB5RmxvYXRCbG9ja3MgYXJlIG5ldmVyIHJldHVybmVkIHRvIHRoZQotICAgc3lzdGVtIGJlZm9yZSBzaHV0ZG93biAoUHlGbG9hdF9GaW5pKS4KLQogICAgZnJlZV9saXN0IGlzIGEgc2luZ2x5LWxpbmtlZCBsaXN0IG9mIGF2YWlsYWJsZSBQeUZsb2F0T2JqZWN0cywgbGlua2VkCiAgICB2aWEgYWJ1c2Ugb2YgdGhlaXIgb2JfdHlwZSBtZW1iZXJzLgogKi8KIAotI2RlZmluZSBCTE9DS19TSVpFICAgICAgMTAwMCAgICAvKiAxSyBsZXNzIHR5cGljYWwgbWFsbG9jIG92ZXJoZWFkICovCi0jZGVmaW5lIEJIRUFEX1NJWkUgICAgICA4ICAgICAgIC8qIEVub3VnaCBmb3IgYSA2NC1iaXQgcG9pbnRlciAqLwotI2RlZmluZSBOX0ZMT0FUT0JKRUNUUyAgKChCTE9DS19TSVpFIC0gQkhFQURfU0laRSkgLyBzaXplb2YoUHlGbG9hdE9iamVjdCkpCi0KLXN0cnVjdCBfZmxvYXRibG9jayB7Ci0gICAgc3RydWN0IF9mbG9hdGJsb2NrICpuZXh0OwotICAgIFB5RmxvYXRPYmplY3Qgb2JqZWN0c1tOX0ZMT0FUT0JKRUNUU107Ci19OwotCi10eXBlZGVmIHN0cnVjdCBfZmxvYXRibG9jayBQeUZsb2F0QmxvY2s7Ci0KLXN0YXRpYyBQeUZsb2F0QmxvY2sgKmJsb2NrX2xpc3QgPSBOVUxMOworI2lmbmRlZiBQeUZsb2F0X01BWEZSRUVMSVNUCisjZGVmaW5lIFB5RmxvYXRfTUFYRlJFRUxJU1QgICAgMTAwCisjZW5kaWYKK3N0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CiBzdGF0aWMgUHlGbG9hdE9iamVjdCAqZnJlZV9saXN0ID0gTlVMTDsKIAotc3RhdGljIFB5RmxvYXRPYmplY3QgKgotZmlsbF9mcmVlX2xpc3Qodm9pZCkKLXsKLSAgICBQeUZsb2F0T2JqZWN0ICpwLCAqcTsKLSAgICAvKiBYWFggRmxvYXQgYmxvY2tzIGVzY2FwZSB0aGUgb2JqZWN0IGhlYXAuIFVzZSBQeU9iamVjdF9NQUxMT0MgPz8/ICovCi0gICAgcCA9IChQeUZsb2F0T2JqZWN0ICopIFB5TWVtX01BTExPQyhzaXplb2YoUHlGbG9hdEJsb2NrKSk7Ci0gICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIChQeUZsb2F0T2JqZWN0ICopIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgKChQeUZsb2F0QmxvY2sgKilwKS0+bmV4dCA9IGJsb2NrX2xpc3Q7Ci0gICAgYmxvY2tfbGlzdCA9IChQeUZsb2F0QmxvY2sgKilwOwotICAgIHAgPSAmKChQeUZsb2F0QmxvY2sgKilwKS0+b2JqZWN0c1swXTsKLSAgICBxID0gcCArIE5fRkxPQVRPQkpFQ1RTOwotICAgIHdoaWxlICgtLXEgPiBwKQotICAgICAgICBQeV9UWVBFKHEpID0gKHN0cnVjdCBfdHlwZW9iamVjdCAqKShxLTEpOwotICAgIFB5X1RZUEUocSkgPSBOVUxMOwotICAgIHJldHVybiBwICsgTl9GTE9BVE9CSkVDVFMgLSAxOwotfQotCiBkb3VibGUKIFB5RmxvYXRfR2V0TWF4KHZvaWQpCiB7CkBAIC0xNTYsMTQgKzExNCwxNiBAQAogUHlPYmplY3QgKgogUHlGbG9hdF9Gcm9tRG91YmxlKGRvdWJsZSBmdmFsKQogewotICAgIHJlZ2lzdGVyIFB5RmxvYXRPYmplY3QgKm9wOwotICAgIGlmIChmcmVlX2xpc3QgPT0gTlVMTCkgewotICAgICAgICBpZiAoKGZyZWVfbGlzdCA9IGZpbGxfZnJlZV9saXN0KCkpID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZWdpc3RlciBQeUZsb2F0T2JqZWN0ICpvcCA9IGZyZWVfbGlzdDsKKyAgICBpZiAob3AgIT0gTlVMTCkgeworICAgICAgICBmcmVlX2xpc3QgPSAoUHlGbG9hdE9iamVjdCAqKSBQeV9UWVBFKG9wKTsKKyAgICAgICAgbnVtZnJlZS0tOworICAgIH0gZWxzZSB7CisgICAgICAgIG9wID0gKFB5RmxvYXRPYmplY3QqKSBQeU9iamVjdF9NQUxMT0Moc2l6ZW9mKFB5RmxvYXRPYmplY3QpKTsKKyAgICAgICAgaWYgKCFvcCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KICAgICAvKiBJbmxpbmUgUHlPYmplY3RfTmV3ICovCi0gICAgb3AgPSBmcmVlX2xpc3Q7Ci0gICAgZnJlZV9saXN0ID0gKFB5RmxvYXRPYmplY3QgKilQeV9UWVBFKG9wKTsKICAgICBQeU9iamVjdF9JTklUKG9wLCAmUHlGbG9hdF9UeXBlKTsKICAgICBvcC0+b2JfZnZhbCA9IGZ2YWw7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKQEAgLTE3OSwyNSArMTM5LDE0IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaSwgYnVmbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHYpOwotICAgICAgICBQeV9VTklDT0RFICpidWZwdHI7Ci0gICAgICAgIHNfYnVmZmVyID0gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodiksIGJ1Zmxlbik7CisgICAgICAgIHNfYnVmZmVyID0gX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHYpOwogICAgICAgICBpZiAoc19idWZmZXIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAvKiBSZXBsYWNlIG5vbi1BU0NJSSB3aGl0ZXNwYWNlIHdpdGggJyAnICovCi0gICAgICAgIGJ1ZnB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNfYnVmZmVyKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGJ1ZmxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gYnVmcHRyW2ldOwotICAgICAgICAgICAgaWYgKGNoID4gMTI3ICYmIFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCi0gICAgICAgICAgICAgICAgYnVmcHRyW2ldID0gJyAnOwotICAgICAgICB9Ci0gICAgICAgIHMgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CisgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CiAgICAgICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzX2J1ZmZlcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBsYXN0ID0gcyArIGxlbjsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlPYmplY3RfQXNDaGFyQnVmZmVyKHYsICZzLCAmbGVuKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLApAQCAtMjMzLDYgKzE4MiwxMSBAQAogZmxvYXRfZGVhbGxvYyhQeUZsb2F0T2JqZWN0ICpvcCkKIHsKICAgICBpZiAoUHlGbG9hdF9DaGVja0V4YWN0KG9wKSkgeworICAgICAgICBpZiAobnVtZnJlZSA+PSBQeUZsb2F0X01BWEZSRUVMSVNUKSAgeworICAgICAgICAgICAgUHlPYmplY3RfRlJFRShvcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbnVtZnJlZSsrOwogICAgICAgICBQeV9UWVBFKG9wKSA9IChzdHJ1Y3QgX3R5cGVvYmplY3QgKilmcmVlX2xpc3Q7CiAgICAgICAgIGZyZWVfbGlzdCA9IG9wOwogICAgIH0KQEAgLTMxMywxMyArMjY3LDE1IEBACiBmbG9hdF9yZXByKFB5RmxvYXRPYmplY3QgKnYpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBjaGFyICpidWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoUHlGbG9hdF9BU19ET1VCTEUodiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyJywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRFRTRl9BRERfRE9UXzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGNoYXIgKmJ1ZjsKKworICAgIGJ1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhQeUZsb2F0X0FTX0RPVUJMRSh2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3InLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9EVFNGX0FERF9ET1RfMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgaWYgKCFidWYpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkoYnVmLCBzdHJsZW4oYnVmKSk7CiAgICAgUHlNZW1fRnJlZShidWYpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01MjMsOCArNDc5LDcgQEAKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHIpOwogCiAgVW5pbXBsZW1lbnRlZDoKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeV9oYXNoX3QKQEAgLTEwODAsNyArMTAzNSw3IEBACiBjaGFyX2Zyb21faGV4KGludCB4KQogewogICAgIGFzc2VydCgwIDw9IHggJiYgeCA8IDE2KTsKLSAgICByZXR1cm4gIjAxMjM0NTY3ODlhYmNkZWYiW3hdOworICAgIHJldHVybiBQeV9oZXhkaWdpdHNbeF07CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTE3NTAsMTIgKzE3MDUsMjIgQEAKIGZsb2F0X19mb3JtYXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIGludCByZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6X19mb3JtYXRfXyIsICZmb3JtYXRfc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShmb3JtYXRfc3BlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykpOworCisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIDApOworICAgIHJldCA9IF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgICAgICAmd3JpdGVyLAorICAgICAgICBzZWxmLAorICAgICAgICBmb3JtYXRfc3BlYywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogUHlEb2NfU1RSVkFSKGZsb2F0X19mb3JtYXRfX2RvYywKQEAgLTE5NTAsOTggKzE5MTUsMzQgQEAKIGludAogUHlGbG9hdF9DbGVhckZyZWVMaXN0KHZvaWQpCiB7Ci0gICAgUHlGbG9hdE9iamVjdCAqcDsKLSAgICBQeUZsb2F0QmxvY2sgKmxpc3QsICpuZXh0OwotICAgIGludCBpOwotICAgIGludCB1OyAgICAgICAgICAgICAgICAgICAgICAvKiByZW1haW5pbmcgdW5mcmVlZCBmbG9hdHMgcGVyIGJsb2NrICovCi0gICAgaW50IGZyZWVsaXN0X3NpemUgPSAwOwotCi0gICAgbGlzdCA9IGJsb2NrX2xpc3Q7Ci0gICAgYmxvY2tfbGlzdCA9IE5VTEw7Ci0gICAgZnJlZV9saXN0ID0gTlVMTDsKLSAgICB3aGlsZSAobGlzdCAhPSBOVUxMKSB7Ci0gICAgICAgIHUgPSAwOwotICAgICAgICBmb3IgKGkgPSAwLCBwID0gJmxpc3QtPm9iamVjdHNbMF07Ci0gICAgICAgICAgICAgaSA8IE5fRkxPQVRPQkpFQ1RTOwotICAgICAgICAgICAgIGkrKywgcCsrKSB7Ci0gICAgICAgICAgICBpZiAoUHlGbG9hdF9DaGVja0V4YWN0KHApICYmIFB5X1JFRkNOVChwKSAhPSAwKQotICAgICAgICAgICAgICAgIHUrKzsKLSAgICAgICAgfQotICAgICAgICBuZXh0ID0gbGlzdC0+bmV4dDsKLSAgICAgICAgaWYgKHUpIHsKLSAgICAgICAgICAgIGxpc3QtPm5leHQgPSBibG9ja19saXN0OwotICAgICAgICAgICAgYmxvY2tfbGlzdCA9IGxpc3Q7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwLCBwID0gJmxpc3QtPm9iamVjdHNbMF07Ci0gICAgICAgICAgICAgICAgIGkgPCBOX0ZMT0FUT0JKRUNUUzsKLSAgICAgICAgICAgICAgICAgaSsrLCBwKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoIVB5RmxvYXRfQ2hlY2tFeGFjdChwKSB8fAotICAgICAgICAgICAgICAgICAgICBQeV9SRUZDTlQocCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHApID0gKHN0cnVjdCBfdHlwZW9iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9saXN0OwotICAgICAgICAgICAgICAgICAgICBmcmVlX2xpc3QgPSBwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobGlzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgZnJlZWxpc3Rfc2l6ZSArPSB1OwotICAgICAgICBsaXN0ID0gbmV4dDsKKyAgICBQeUZsb2F0T2JqZWN0ICpmID0gZnJlZV9saXN0LCAqbmV4dDsKKyAgICBpbnQgaSA9IG51bWZyZWU7CisgICAgd2hpbGUgKGYpIHsKKyAgICAgICAgbmV4dCA9IChQeUZsb2F0T2JqZWN0KikgUHlfVFlQRShmKTsKKyAgICAgICAgUHlPYmplY3RfRlJFRShmKTsKKyAgICAgICAgZiA9IG5leHQ7CiAgICAgfQotICAgIHJldHVybiBmcmVlbGlzdF9zaXplOworICAgIGZyZWVfbGlzdCA9IE5VTEw7CisgICAgbnVtZnJlZSA9IDA7CisgICAgcmV0dXJuIGk7CiB9CiAKIHZvaWQKIFB5RmxvYXRfRmluaSh2b2lkKQogewotICAgIFB5RmxvYXRPYmplY3QgKnA7Ci0gICAgUHlGbG9hdEJsb2NrICpsaXN0OwotICAgIGludCBpOwotICAgIGludCB1OyAgICAgICAgICAgICAgICAgICAgICAvKiB0b3RhbCB1bmZyZWVkIGZsb2F0cyBwZXIgYmxvY2sgKi8KLQotICAgIHUgPSBQeUZsb2F0X0NsZWFyRnJlZUxpc3QoKTsKLQotICAgIGlmICghUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIHJldHVybjsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiMgY2xlYW51cCBmbG9hdHMiKTsKLSAgICBpZiAoIXUpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbiIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAiOiAlZCB1bmZyZWVkIGZsb2F0JXNcbiIsCi0gICAgICAgICAgICB1LCB1ID09IDEgPyAiIiA6ICJzIik7Ci0gICAgfQotICAgIGlmIChQeV9WZXJib3NlRmxhZyA+IDEpIHsKLSAgICAgICAgbGlzdCA9IGJsb2NrX2xpc3Q7Ci0gICAgICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIHAgPSAmbGlzdC0+b2JqZWN0c1swXTsKLSAgICAgICAgICAgICAgICAgaSA8IE5fRkxPQVRPQkpFQ1RTOwotICAgICAgICAgICAgICAgICBpKyssIHArKykgewotICAgICAgICAgICAgICAgIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QocCkgJiYKLSAgICAgICAgICAgICAgICAgICAgUHlfUkVGQ05UKHApICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAgICAgUHlGbG9hdF9BU19ET1VCTEUocCksICdyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIE5VTEwpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYnVmKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBYWFgodHdvdXRlcnMpIGNhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmNvdW50IHRvIGxvbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudGlsICV6ZCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAiIyAgIDxmbG9hdCBhdCAlcCwgcmVmY250PSVsZCwgdmFsPSVzPlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIChsb25nKVB5X1JFRkNOVChwKSwgYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7Ci0gICAgICAgIH0KLSAgICB9CisgICAgKHZvaWQpUHlGbG9hdF9DbGVhckZyZWVMaXN0KCk7CiB9CiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeUZsb2F0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlGbG9hdE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlGbG9hdE9iamVjdCkpOworfQorCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogX1B5RmxvYXRfe1BhY2ssVW5wYWNrfXs0LDh9LiAgU2VlIGZsb2F0b2JqZWN0LmguCiAgKi8KQEAgLTIyNTEsNyArMjE1Miw3IEBACiAKICAgICAgICAgLyogRWlnaHRoIGJ5dGUgKi8KICAgICAgICAgKnAgPSBmbG8gJiAweEZGOwotICAgICAgICBwICs9IGluY3I7CisgICAgICAgIC8qIHAgKz0gaW5jcjsgKi8KIAogICAgICAgICAvKiBEb25lICovCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jIGIvT2JqZWN0cy9mcmFtZW9iamVjdC5jCmluZGV4IGFkY2U0MmIuLjgwOGU1OTUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnJhbWVvYmplY3QuYworKysgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKQEAgLTE1LDExICsxNSwxMSBAQAogI2RlZmluZSBPRkYoeCkgb2Zmc2V0b2YoUHlGcmFtZU9iamVjdCwgeCkKIAogc3RhdGljIFB5TWVtYmVyRGVmIGZyYW1lX21lbWJlcmxpc3RbXSA9IHsKLSAgICB7ImZfYmFjayIsICAgICAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9iYWNrKSwgICAgUkVBRE9OTFl9LAotICAgIHsiZl9jb2RlIiwgICAgICAgICAgVF9PQkpFQ1QsICAgICAgIE9GRihmX2NvZGUpLCAgICBSRUFET05MWX0sCi0gICAgeyJmX2J1aWx0aW5zIiwgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfYnVpbHRpbnMpLFJFQURPTkxZfSwKLSAgICB7ImZfZ2xvYmFscyIsICAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9nbG9iYWxzKSwgUkVBRE9OTFl9LAotICAgIHsiZl9sYXN0aSIsICAgICAgICAgVF9JTlQsICAgICAgICAgIE9GRihmX2xhc3RpKSwgICBSRUFET05MWX0sCisgICAgeyJmX2JhY2siLCAgICAgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfYmFjayksICAgICAgUkVBRE9OTFl9LAorICAgIHsiZl9jb2RlIiwgICAgICAgICAgVF9PQkpFQ1QsICAgICAgIE9GRihmX2NvZGUpLCAgICAgIFJFQURPTkxZfSwKKyAgICB7ImZfYnVpbHRpbnMiLCAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9idWlsdGlucyksICBSRUFET05MWX0sCisgICAgeyJmX2dsb2JhbHMiLCAgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfZ2xvYmFscyksICAgUkVBRE9OTFl9LAorICAgIHsiZl9sYXN0aSIsICAgICAgICAgVF9JTlQsICAgICAgICAgIE9GRihmX2xhc3RpKSwgICAgIFJFQURPTkxZfSwKICAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtNjE0LDEwICs2MTQsOCBAQAogICAgICAgICBpZiAoYnVpbHRpbnMpIHsKICAgICAgICAgICAgIGlmIChQeU1vZHVsZV9DaGVjayhidWlsdGlucykpIHsKICAgICAgICAgICAgICAgICBidWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYnVpbHRpbnMpOwotICAgICAgICAgICAgICAgIGFzc2VydCghYnVpbHRpbnMgfHwgUHlEaWN0X0NoZWNrKGJ1aWx0aW5zKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGJ1aWx0aW5zICE9IE5VTEwpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoIVB5RGljdF9DaGVjayhidWlsdGlucykpCi0gICAgICAgICAgICAgICAgYnVpbHRpbnMgPSBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChidWlsdGlucyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBObyBidWlsdGlucyEgICAgICAgICAgICAgIE1ha2UgdXAgYSBtaW5pbWFsIG9uZQpAQCAtNjM2LDcgKzYzNCw3IEBACiAgICAgICAgIC8qIElmIHdlIHNoYXJlIHRoZSBnbG9iYWxzLCB3ZSBzaGFyZSB0aGUgYnVpbHRpbnMuCiAgICAgICAgICAgIFNhdmUgYSBsb29rdXAgYW5kIGEgY2FsbC4gKi8KICAgICAgICAgYnVpbHRpbnMgPSBiYWNrLT5mX2J1aWx0aW5zOwotICAgICAgICBhc3NlcnQoYnVpbHRpbnMgIT0gTlVMTCAmJiBQeURpY3RfQ2hlY2soYnVpbHRpbnMpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWx0aW5zICE9IE5VTEwpOwogICAgICAgICBQeV9JTkNSRUYoYnVpbHRpbnMpOwogICAgIH0KICAgICBpZiAoY29kZS0+Y29fem9tYmllZnJhbWUgIT0gTlVMTCkgewpAQCAtNjY1LDExICs2NjMsMTMgQEAKICAgICAgICAgICAgIGYgPSBmcmVlX2xpc3Q7CiAgICAgICAgICAgICBmcmVlX2xpc3QgPSBmcmVlX2xpc3QtPmZfYmFjazsKICAgICAgICAgICAgIGlmIChQeV9TSVpFKGYpIDwgZXh0cmFzKSB7Ci0gICAgICAgICAgICAgICAgZiA9IFB5T2JqZWN0X0dDX1Jlc2l6ZShQeUZyYW1lT2JqZWN0LCBmLCBleHRyYXMpOwotICAgICAgICAgICAgICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpuZXdfZiA9IFB5T2JqZWN0X0dDX1Jlc2l6ZShQeUZyYW1lT2JqZWN0LCBmLCBleHRyYXMpOworICAgICAgICAgICAgICAgIGlmIChuZXdfZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChmKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJ1aWx0aW5zKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGYgPSBuZXdfZjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UoKFB5T2JqZWN0ICopZik7CiAgICAgICAgIH0KQEAgLTk1NSwzICs5NTUsMTMgQEAKICAgICBQeV9YREVDUkVGKGJ1aWx0aW5fb2JqZWN0KTsKICAgICBidWlsdGluX29iamVjdCA9IE5VTEw7CiB9CisKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeUZyYW1lX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlGcmFtZU9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlGcmFtZU9iamVjdCkpOworfQorCmRpZmYgLS1naXQgYS9PYmplY3RzL2Z1bmNvYmplY3QuYyBiL09iamVjdHMvZnVuY29iamVjdC5jCmluZGV4IDIyOTJhOWUuLjQ5NDE1YjkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnVuY29iamVjdC5jCisrKyBiL09iamVjdHMvZnVuY29iamVjdC5jCkBAIC02LDcgKzYsNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCiBQeU9iamVjdCAqCi1QeUZ1bmN0aW9uX05ldyhQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmdsb2JhbHMpCitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpxdWFsbmFtZSkKIHsKICAgICBQeUZ1bmN0aW9uT2JqZWN0ICpvcCA9IFB5T2JqZWN0X0dDX05ldyhQeUZ1bmN0aW9uT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUZ1bmN0aW9uX1R5cGUpOwpAQCAtNTQsNiArNTQsMTEgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2R1bGUpOwogICAgICAgICAgICAgb3AtPmZ1bmNfbW9kdWxlID0gbW9kdWxlOwogICAgICAgICB9CisgICAgICAgIGlmIChxdWFsbmFtZSkKKyAgICAgICAgICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gcXVhbG5hbWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gb3AtPmZ1bmNfbmFtZTsKKyAgICAgICAgUHlfSU5DUkVGKG9wLT5mdW5jX3F1YWxuYW1lKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTYyLDYgKzY3LDEyIEBACiB9CiAKIFB5T2JqZWN0ICoKK1B5RnVuY3Rpb25fTmV3KFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqZ2xvYmFscykKK3sKKyAgICByZXR1cm4gUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUoY29kZSwgZ2xvYmFscywgTlVMTCk7Cit9CisKK1B5T2JqZWN0ICoKIFB5RnVuY3Rpb25fR2V0Q29kZShQeU9iamVjdCAqb3ApCiB7CiAgICAgaWYgKCFQeUZ1bmN0aW9uX0NoZWNrKG9wKSkgewpAQCAtMjM0LDQyICsyNDUsNiBAQAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWZ1bmNfZ2V0X2RpY3QoUHlGdW5jdGlvbk9iamVjdCAqb3ApCi17Ci0gICAgaWYgKG9wLT5mdW5jX2RpY3QgPT0gTlVMTCkgewotICAgICAgICBvcC0+ZnVuY19kaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAob3AtPmZ1bmNfZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihvcC0+ZnVuY19kaWN0KTsKLSAgICByZXR1cm4gb3AtPmZ1bmNfZGljdDsKLX0KLQotc3RhdGljIGludAotZnVuY19zZXRfZGljdChQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQotewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KLSAgICAvKiBJdCBpcyBpbGxlZ2FsIHRvIGRlbCBmLmZ1bmNfZGljdCAqLwotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24ncyBkaWN0aW9uYXJ5IG1heSBub3QgYmUgZGVsZXRlZCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIENhbiBvbmx5IHNldCBmdW5jX2RpY3QgdG8gYSBkaWN0aW9uYXJ5ICovCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic2V0dGluZyBmdW5jdGlvbidzIGRpY3Rpb25hcnkgdG8gYSBub24tZGljdCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2RpY3Q7Ci0gICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19kaWN0ID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgogZnVuY19nZXRfY29kZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICBQeV9JTkNSRUYob3AtPmZ1bmNfY29kZSk7CkBAIC0zMzQsNiArMzA5LDMyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitmdW5jX2dldF9xdWFsbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKK3sKKyAgICBQeV9JTkNSRUYob3AtPmZ1bmNfcXVhbG5hbWUpOworICAgIHJldHVybiBvcC0+ZnVuY19xdWFsbmFtZTsKK30KKworc3RhdGljIGludAorZnVuY19zZXRfcXVhbG5hbWUoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworCisgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBmLl9fcXVhbG5hbWVfXyBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKKyAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KKyAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9fcXVhbG5hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB0bXAgPSBvcC0+ZnVuY19xdWFsbmFtZTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gdmFsdWU7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBmdW5jX2dldF9kZWZhdWx0cyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICBpZiAob3AtPmZ1bmNfZGVmYXVsdHMgPT0gTlVMTCkgewpAQCAtNDM5LDggKzQ0MCw5IEBACiAgICAgIChzZXR0ZXIpZnVuY19zZXRfa3dkZWZhdWx0c30sCiAgICAgeyJfX2Fubm90YXRpb25zX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X2Fubm90YXRpb25zLAogICAgICAoc2V0dGVyKWZ1bmNfc2V0X2Fubm90YXRpb25zfSwKLSAgICB7Il9fZGljdF9fIiwgKGdldHRlcilmdW5jX2dldF9kaWN0LCAoc2V0dGVyKWZ1bmNfc2V0X2RpY3R9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAogICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X25hbWUsIChzZXR0ZXIpZnVuY19zZXRfbmFtZX0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X3F1YWxuYW1lLCAoc2V0dGVyKWZ1bmNfc2V0X3F1YWxuYW1lfSwKICAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTU2MSw2ICs1NjMsNyBAQAogICAgIFB5X1hERUNSRUYob3AtPmZ1bmNfZGljdCk7CiAgICAgUHlfWERFQ1JFRihvcC0+ZnVuY19jbG9zdXJlKTsKICAgICBQeV9YREVDUkVGKG9wLT5mdW5jX2Fubm90YXRpb25zKTsKKyAgICBQeV9YREVDUkVGKG9wLT5mdW5jX3F1YWxuYW1lKTsKICAgICBQeU9iamVjdF9HQ19EZWwob3ApOwogfQogCkBAIC01NjgsNyArNTcxLDcgQEAKIGZ1bmNfcmVwcihQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxmdW5jdGlvbiAlVSBhdCAlcD4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5mdW5jX25hbWUsIG9wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+ZnVuY19xdWFsbmFtZSwgb3ApOwogfQogCiBzdGF0aWMgaW50CkBAIC01ODQsNiArNTg3LDcgQEAKICAgICBQeV9WSVNJVChmLT5mdW5jX2RpY3QpOwogICAgIFB5X1ZJU0lUKGYtPmZ1bmNfY2xvc3VyZSk7CiAgICAgUHlfVklTSVQoZi0+ZnVuY19hbm5vdGF0aW9ucyk7CisgICAgUHlfVklTSVQoZi0+ZnVuY19xdWFsbmFtZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY2Nyw4ICs2NzEsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIGZ1bmN0aW9uX2NhbGwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCiAgICAgZnVuY19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KQEAgLTcxNCw2ICs3MTgsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqY21fY2FsbGFibGU7CisgICAgUHlPYmplY3QgKmNtX2RpY3Q7CiB9IGNsYXNzbWV0aG9kOwogCiBzdGF0aWMgdm9pZApAQCAtNzIxLDYgKzcyNiw3IEBACiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopY20pOwogICAgIFB5X1hERUNSRUYoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBQeV9YREVDUkVGKGNtLT5jbV9kaWN0KTsKICAgICBQeV9UWVBFKGNtKS0+dHBfZnJlZSgoUHlPYmplY3QgKiljbSk7CiB9CiAKQEAgLTcyOCw2ICs3MzQsNyBAQAogY21fdHJhdmVyc2UoY2xhc3NtZXRob2QgKmNtLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKICAgICBQeV9WSVNJVChjbS0+Y21fY2FsbGFibGUpOworICAgIFB5X1ZJU0lUKGNtLT5jbV9kaWN0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNzM1LDYgKzc0Miw3IEBACiBjbV9jbGVhcihjbGFzc21ldGhvZCAqY20pCiB7CiAgICAgUHlfQ0xFQVIoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBQeV9DTEVBUihjbS0+Y21fZGljdCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTc3NCw2ICs3ODIsMjggQEAKICAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgUHlPYmplY3QgKgorY21fZ2V0X19faXNhYnN0cmFjdG1ldGhvZF9fKGNsYXNzbWV0aG9kICpjbSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3QoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIGNtX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9faXNhYnN0cmFjdG1ldGhvZF9fIiwKKyAgICAgKGdldHRlciljbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18sIE5VTEwsCisgICAgIE5VTEwsCisgICAgIE5VTEx9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3QsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGNsYXNzbWV0aG9kX2RvYywKICJjbGFzc21ldGhvZChmdW5jdGlvbikgLT4gbWV0aG9kXG5cCiBcblwKQEAgLTgxMiw3ICs4NDIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLApAQCAtODI1LDEyICs4NTUsMTIgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgY21fbWVtYmVybGlzdCwgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIGNtX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgY21fZGVzY3JfZ2V0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG9mZnNldG9mKGNsYXNzbWV0aG9kLCBjbV9kaWN0KSwgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIGNtX2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwpAQCAtODY5LDYgKzg5OSw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICpzbV9jYWxsYWJsZTsKKyAgICBQeU9iamVjdCAqc21fZGljdDsKIH0gc3RhdGljbWV0aG9kOwogCiBzdGF0aWMgdm9pZApAQCAtODc2LDYgKzkwNyw3IEBACiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopc20pOwogICAgIFB5X1hERUNSRUYoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBQeV9YREVDUkVGKHNtLT5zbV9kaWN0KTsKICAgICBQeV9UWVBFKHNtKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzbSk7CiB9CiAKQEAgLTg4Myw2ICs5MTUsNyBAQAogc21fdHJhdmVyc2Uoc3RhdGljbWV0aG9kICpzbSwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CiAgICAgUHlfVklTSVQoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBQeV9WSVNJVChzbS0+c21fZGljdCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTg5MCw2ICs5MjMsNyBAQAogc21fY2xlYXIoc3RhdGljbWV0aG9kICpzbSkKIHsKICAgICBQeV9DTEVBUihzbS0+c21fY2FsbGFibGUpOworICAgIFB5X0NMRUFSKHNtLT5zbV9kaWN0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtOTI3LDYgKzk2MSwyOCBAQAogICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KIH07CiAKK3N0YXRpYyBQeU9iamVjdCAqCitzbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18oc3RhdGljbWV0aG9kICpzbSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3Qoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIHNtX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9faXNhYnN0cmFjdG1ldGhvZF9fIiwKKyAgICAgKGdldHRlcilzbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18sIE5VTEwsCisgICAgIE5VTEwsCisgICAgIE5VTEx9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3QsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHN0YXRpY21ldGhvZF9kb2MsCiAic3RhdGljbWV0aG9kKGZ1bmN0aW9uKSAtPiBtZXRob2RcblwKIFxuXApAQCAtOTYyLDcgKzEwMTgsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLApAQCAtOTc1LDEyICsxMDMxLDEyIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIHNtX21lbWJlcmxpc3QsICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBzbV9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIHNtX2Rlc2NyX2dldCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZihzdGF0aWNtZXRob2QsIHNtX2RpY3QpLCAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICBzbV9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvZ2Vub2JqZWN0LmMgYi9PYmplY3RzL2dlbm9iamVjdC5jCmluZGV4IDZlMjVmMTMuLjU5N2FlZDMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZ2Vub2JqZWN0LmMKKysrIGIvT2JqZWN0cy9nZW5vYmplY3QuYwpAQCAtNSw2ICs1LDggQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKIAorc3RhdGljIFB5T2JqZWN0ICpnZW5fY2xvc2UoUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpOworCiBzdGF0aWMgaW50CiBnZW5fdHJhdmVyc2UoUHlHZW5PYmplY3QgKmdlbiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CkBAIC01MSw3ICs1Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZj09TlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKKyAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICAvKiBPbmx5IHNldCBleGNlcHRpb24gaWYgY2FsbGVkIGZyb20gc2VuZCgpICovCiAgICAgICAgIGlmIChhcmcgJiYgIWV4YykKICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CkBAIC05MCwxMiArOTIsMTkgQEAKIAogICAgIC8qIElmIHRoZSBnZW5lcmF0b3IganVzdCByZXR1cm5lZCAoYXMgb3Bwb3NlZCB0byB5aWVsZGluZyksIHNpZ25hbAogICAgICAqIHRoYXQgdGhlIGdlbmVyYXRvciBpcyBleGhhdXN0ZWQuICovCi0gICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lICYmIGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICAgICAgLyogU2V0IGV4Y2VwdGlvbiBpZiBub3QgY2FsbGVkIGJ5IGdlbl9pdGVybmV4dCgpICovCi0gICAgICAgIGlmIChhcmcpCisgICAgaWYgKHJlc3VsdCAmJiBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICAvKiBEZWxheSBleGNlcHRpb24gaW5zdGFudGlhdGlvbiBpZiB3ZSBjYW4gKi8KICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3RvcEl0ZXJhdGlvbiwgcmVzdWx0LCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3RvcEl0ZXJhdGlvbiwgZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X0NMRUFSKHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYgKCFyZXN1bHQgfHwgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CkBAIC0xMTEsOCArMTIwLDggQEAKICAgICAgICAgUHlfWERFQ1JFRih0KTsKICAgICAgICAgUHlfWERFQ1JFRih2KTsKICAgICAgICAgUHlfWERFQ1JFRih0Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihmKTsKICAgICAgICAgZ2VuLT5naV9mcmFtZSA9IE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRihmKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTIyLDggKzEzMSw4IEBACiAic2VuZChhcmcpIC0+IHNlbmQgJ2FyZycgaW50byBnZW5lcmF0b3IsXG5cCiByZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1nZW5fc2VuZChQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJnKQorUHlPYmplY3QgKgorX1B5R2VuX1NlbmQoUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZykKIHsKICAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBhcmcsIDApOwogfQpAQCAtMTMxLDExICsxNDAsNzIgQEAKIFB5RG9jX1NUUlZBUihjbG9zZV9kb2MsCiAiY2xvc2UoKSAtPiByYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBnZW5lcmF0b3IuIik7CiAKKy8qCisgKiAgIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIHVzZWQgYnkgZ2VuX2Nsb3NlIGFuZCBnZW5fdGhyb3cgdG8KKyAqICAgY2xvc2UgYSBzdWJpdGVyYXRvciBiZWluZyBkZWxlZ2F0ZWQgdG8gYnkgeWllbGQtZnJvbS4KKyAqLworCitzdGF0aWMgaW50CitnZW5fY2xvc2VfaXRlcihQeU9iamVjdCAqeWYpCit7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworCisgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgIHJldHZhbCA9IGdlbl9jbG9zZSgoUHlHZW5PYmplY3QgKil5ZiwgTlVMTCk7CisgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX2Nsb3NlKTsKKyAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoeWYpOworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihtZXRoLCAiIik7CisgICAgICAgICAgICBQeV9ERUNSRUYobWV0aCk7CisgICAgICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIFB5X1hERUNSRUYocmV0dmFsKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dlbl95ZihQeUdlbk9iamVjdCAqZ2VuKQoreworICAgIFB5T2JqZWN0ICp5ZiA9IE5VTEw7CisgICAgUHlGcmFtZU9iamVjdCAqZiA9IGdlbi0+Z2lfZnJhbWU7CisKKyAgICBpZiAoZikgeworICAgICAgICBQeU9iamVjdCAqYnl0ZWNvZGUgPSBmLT5mX2NvZGUtPmNvX2NvZGU7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvZGUgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVjb2RlKTsKKworICAgICAgICBpZiAoY29kZVtmLT5mX2xhc3RpICsgMV0gIT0gWUlFTERfRlJPTSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB5ZiA9IGYtPmZfc3RhY2t0b3BbLTFdOworICAgICAgICBQeV9JTkNSRUYoeWYpOworICAgIH0KKworICAgIHJldHVybiB5ZjsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGdlbl9jbG9zZShQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfR2VuZXJhdG9yRXhpdCk7CisgICAgUHlPYmplY3QgKnlmID0gZ2VuX3lmKGdlbik7CisgICAgaW50IGVyciA9IDA7CisKKyAgICBpZiAoeWYpIHsKKyAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgZXJyID0gZ2VuX2Nsb3NlX2l0ZXIoeWYpOworICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOworICAgICAgICBQeV9ERUNSRUYoeWYpOworICAgIH0KKyAgICBpZiAoZXJyID09IDApCisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfR2VuZXJhdG9yRXhpdCk7CiAgICAgcmV0dmFsID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxKTsKICAgICBpZiAocmV0dmFsKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwpAQCAtMTQ0LDggKzIxNCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKQotICAgICAgICB8fCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0dlbmVyYXRvckV4aXQpKQotICAgIHsKKyAgICAgICAgfHwgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19HZW5lcmF0b3JFeGl0KSkgewogICAgICAgICBQeUVycl9DbGVhcigpOyAgICAgICAgICAvKiBpZ25vcmUgdGhlc2UgZXJyb3JzICovCiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0xOTYsNyArMjY1LDcgQEAKICAgICAgICAgX1B5X05ld1JlZmVyZW5jZShzZWxmKTsKICAgICAgICAgc2VsZi0+b2JfcmVmY250ID0gcmVmY250OwogICAgIH0KLSAgICBhc3NlcnQoUHlUeXBlX0lTX0dDKHNlbGYtPm9iX3R5cGUpICYmCisgICAgYXNzZXJ0KFB5VHlwZV9JU19HQyhQeV9UWVBFKHNlbGYpKSAmJgogICAgICAgICAgICBfUHlfQVNfR0Moc2VsZiktPmdjLmdjX3JlZnMgIT0gX1B5R0NfUkVGU19VTlRSQUNLRUQpOwogCiAgICAgLyogSWYgUHlfUkVGX0RFQlVHLCBfUHlfTmV3UmVmZXJlbmNlIGJ1bXBlZCBfUHlfUmVmVG90YWwsIHNvCkBAIC0yMDksOCArMjc4LDggQEAKICAgICAgKiB1bmRvbmUuCiAgICAgICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCi0gICAgLS1zZWxmLT5vYl90eXBlLT50cF9mcmVlczsKLSAgICAtLXNlbGYtPm9iX3R5cGUtPnRwX2FsbG9jczsKKyAgICAtLShQeV9UWVBFKHNlbGYpLT50cF9mcmVlcyk7CisgICAgLS0oUHlfVFlQRShzZWxmKS0+dHBfYWxsb2NzKTsKICNlbmRpZgogfQogCkBAIC0yMjYsMTAgKzI5NSw2NCBAQAogICAgIFB5T2JqZWN0ICp0eXA7CiAgICAgUHlPYmplY3QgKnRiID0gTlVMTDsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqeWYgPSBnZW5feWYoZ2VuKTsKKyAgICBfUHlfSURFTlRJRklFUih0aHJvdyk7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0aHJvdyIsIDEsIDMsICZ0eXAsICZ2YWwsICZ0YikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKHlmKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgICAgIGludCBlcnI7CisgICAgICAgIGlmIChQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXModHlwLCBQeUV4Y19HZW5lcmF0b3JFeGl0KSkgeworICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgICAgIGVyciA9IGdlbl9jbG9zZV9pdGVyKHlmKTsKKyAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CisgICAgICAgICAgICBQeV9ERUNSRUYoeWYpOworICAgICAgICAgICAgaWYgKGVyciA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIGdlbl9zZW5kX2V4KGdlbiwgUHlfTm9uZSwgMSk7CisgICAgICAgICAgICBnb3RvIHRocm93X2hlcmU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOworICAgICAgICAgICAgcmV0ID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKXlmLCBhcmdzKTsKKyAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX3Rocm93KTsKKyAgICAgICAgICAgIGlmIChtZXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgICAgICAgICAgZ290byB0aHJvd19oZXJlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobWV0aCwgYXJncyk7CisgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOworICAgICAgICAgICAgUHlfREVDUkVGKG1ldGgpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsOworICAgICAgICAgICAgLyogUG9wIHN1Yml0ZXJhdG9yIGZyb20gc3RhY2sgKi8KKyAgICAgICAgICAgIHJldCA9ICooLS1nZW4tPmdpX2ZyYW1lLT5mX3N0YWNrdG9wKTsKKyAgICAgICAgICAgIGFzc2VydChyZXQgPT0geWYpOworICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7CisgICAgICAgICAgICAvKiBUZXJtaW5hdGlvbiByZXBldGl0aW9uIG9mIFlJRUxEX0ZST00gKi8KKyAgICAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkrKzsKKyAgICAgICAgICAgIGlmIChfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoJnZhbCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldCA9IGdlbl9zZW5kX2V4KGdlbiwgdmFsLCAwKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0ID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKwordGhyb3dfaGVyZToKICAgICAvKiBGaXJzdCwgY2hlY2sgdGhlIHRyYWNlYmFjayBhcmd1bWVudCwgcmVwbGFjaW5nIE5vbmUgd2l0aAogICAgICAgIE5VTEwuICovCiAgICAgaWYgKHRiID09IFB5X05vbmUpIHsKQEAgLTI3Miw3ICszOTUsNyBAQAogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbnMgbXVzdCBiZSBjbGFzc2VzIG9yIGluc3RhbmNlcyAiCiAgICAgICAgICAgICAgICAgICAgICAiZGVyaXZpbmcgZnJvbSBCYXNlRXhjZXB0aW9uLCBub3QgJXMiLAotICAgICAgICAgICAgICAgICAgICAgdHlwLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodHlwKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBnb3RvIGZhaWxlZF90aHJvdzsKICAgICB9CiAKQEAgLTI5MSw5ICs0MTQsNDYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5faXRlcm5leHQoUHlHZW5PYmplY3QgKmdlbikKIHsKLSAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBOVUxMLCAwKTsKKyAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmV0OworICAgIHJldCA9IGdlbl9zZW5kX2V4KGdlbiwgdmFsLCAwKTsKKyAgICBQeV9YREVDUkVGKHZhbCk7CisgICAgcmV0dXJuIHJldDsKIH0KIAorLyoKKyAqICAgSWYgU3RvcEl0ZXJhdGlvbiBleGNlcHRpb24gaXMgc2V0LCBmZXRjaGVzIGl0cyAndmFsdWUnCisgKiAgIGF0dHJpYnV0ZSBpZiBhbnksIG90aGVyd2lzZSBzZXRzIHB2YWx1ZSB0byBOb25lLgorICoKKyAqICAgUmV0dXJucyAwIGlmIG5vIGV4Y2VwdGlvbiBvciBTdG9wSXRlcmF0aW9uIGlzIHNldC4KKyAqICAgSWYgYW55IG90aGVyIGV4Y2VwdGlvbiBpcyBzZXQsIHJldHVybnMgLTEgYW5kIGxlYXZlcworICogICBwdmFsdWUgdW5jaGFuZ2VkLgorICovCisKK2ludAorX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqcHZhbHVlKSB7CisgICAgUHlPYmplY3QgKmV0LCAqZXYsICp0YjsKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOworCisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpIHsKKyAgICAgICAgUHlFcnJfRmV0Y2goJmV0LCAmZXYsICZ0Yik7CisgICAgICAgIFB5X1hERUNSRUYoZXQpOworICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgaWYgKGV2KSB7CisgICAgICAgICAgICB2YWx1ZSA9ICgoUHlTdG9wSXRlcmF0aW9uT2JqZWN0ICopZXYpLT52YWx1ZTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXYpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgdmFsdWUgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIH0KKyAgICAqcHZhbHVlID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5fcmVwcihQeUdlbk9iamVjdCAqZ2VuKQpAQCAtMzI0LDEzICs0ODQsMTMgQEAKIAogc3RhdGljIFB5TWVtYmVyRGVmIGdlbl9tZW1iZXJsaXN0W10gPSB7CiAgICAgeyJnaV9mcmFtZSIsICAgICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2ZyYW1lKSwgICAgICBSRUFET05MWX0sCi0gICAgeyJnaV9ydW5uaW5nIiwgICAgICBUX0lOVCwgICAgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX3J1bm5pbmcpLCAgICBSRUFET05MWX0sCisgICAgeyJnaV9ydW5uaW5nIiwgICAgICBUX0JPT0wsICAgIG9mZnNldG9mKFB5R2VuT2JqZWN0LCBnaV9ydW5uaW5nKSwgICAgUkVBRE9OTFl9LAogICAgIHsiZ2lfY29kZSIsICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2NvZGUpLCAgUkVBRE9OTFl9LAogICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgZ2VuX21ldGhvZHNbXSA9IHsKLSAgICB7InNlbmQiLChQeUNGdW5jdGlvbilnZW5fc2VuZCwgTUVUSF9PLCBzZW5kX2RvY30sCisgICAgeyJzZW5kIiwoUHlDRnVuY3Rpb24pX1B5R2VuX1NlbmQsIE1FVEhfTywgc2VuZF9kb2N9LAogICAgIHsidGhyb3ciLChQeUNGdW5jdGlvbilnZW5fdGhyb3csIE1FVEhfVkFSQVJHUywgdGhyb3dfZG9jfSwKICAgICB7ImNsb3NlIiwoUHlDRnVuY3Rpb24pZ2VuX2Nsb3NlLCBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCkBAIC00MTAsMTUgKzU3MCwxMyBAQAogICAgIGludCBpOwogICAgIFB5RnJhbWVPYmplY3QgKmYgPSBnZW4tPmdpX2ZyYW1lOwogCi0gICAgaWYgKGYgPT0gTlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwgfHwgZi0+Zl9pYmxvY2sgPD0gMCkKKyAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7IC8qIG5vIGZyYW1lIG9yIGVtcHR5IGJsb2Nrc3RhY2sgPT0gbm8gZmluYWxpemF0aW9uICovCiAKICAgICAvKiBBbnkgYmxvY2sgdHlwZSBiZXNpZGVzIGEgbG9vcCByZXF1aXJlcyBjbGVhbnVwLiAqLwotICAgIGkgPSBmLT5mX2libG9jazsKLSAgICB3aGlsZSAoLS1pID49IDApIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZi0+Zl9pYmxvY2s7IGkrKykKICAgICAgICAgaWYgKGYtPmZfYmxvY2tzdGFja1tpXS5iX3R5cGUgIT0gU0VUVVBfTE9PUCkKICAgICAgICAgICAgIHJldHVybiAxOwotICAgIH0KIAogICAgIC8qIE5vIGJsb2NrcyBleGNlcHQgbG9vcHMsIGl0J3Mgc2FmZSB0byBza2lwIGZpbmFsaXphdGlvbi4gKi8KICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL09iamVjdHMvaXRlcm9iamVjdC5jIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKaW5kZXggOTFhOTNmNS4uM2NmYmVhZiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKQEAgLTg4LDggKzg4LDM4IEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK2l0ZXJfcmVkdWNlKHNlcWl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTigoKSkiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpKTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgoraXRlcl9zZXRzdGF0ZShzZXFpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCkgeworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBzZXFpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilpdGVyX2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24paXRlcl9zZXRzdGF0ZSwgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xOTUsNiArMjI1LDIxIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjYWxsaXRlcl9yZWR1Y2UoY2FsbGl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfY2FsbGFibGUgIT0gTlVMTCAmJiBpdC0+aXRfc2VudGluZWwgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oT08pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X2NhbGxhYmxlLCBpdC0+aXRfc2VudGluZWwpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oKCkpIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjYWxsaXRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWNhbGxpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeVR5cGVPYmplY3QgUHlDYWxsSXRlcl9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgImNhbGxhYmxlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0yMjQsNyArMjY5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljYWxsaXRlcl9pdGVybmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGNhbGxpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3RvYmplY3QuYyBiL09iamVjdHMvbGlzdG9iamVjdC5jCmluZGV4IGI5ZWYwZDAuLjZlMGQwOTQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdG9iamVjdC5jCisrKyBiL09iamVjdHMvbGlzdG9iamVjdC5jCkBAIC05OCwxNiArOTgsMzIgQEAKIHN0YXRpYyBQeUxpc3RPYmplY3QgKmZyZWVfbGlzdFtQeUxpc3RfTUFYRlJFRUxJU1RdOwogc3RhdGljIGludCBudW1mcmVlID0gMDsKIAotdm9pZAotUHlMaXN0X0Zpbmkodm9pZCkKK2ludAorUHlMaXN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKICAgICBQeUxpc3RPYmplY3QgKm9wOwotCisgICAgaW50IHJldCA9IG51bWZyZWU7CiAgICAgd2hpbGUgKG51bWZyZWUpIHsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KG9wKSk7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiAgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK1B5TGlzdF9GaW5pKHZvaWQpCit7CisgICAgUHlMaXN0X0NsZWFyRnJlZUxpc3QoKTsKK30KKworLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5TGlzdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5TGlzdE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlMaXN0T2JqZWN0KSk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTczNyw2ICs3NTMsMTkgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2xpc3RjbGVhcihQeUxpc3RPYmplY3QgKnNlbGYpCit7CisgICAgbGlzdF9jbGVhcihzZWxmKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xpc3Rjb3B5KFB5TGlzdE9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gbGlzdF9zbGljZShzZWxmLCAwLCBQeV9TSVpFKHNlbGYpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGxpc3RhcHBlbmQoUHlMaXN0T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKIHsKICAgICBpZiAoYXBwMShzZWxmLCB2KSA9PSAwKQpAQCAtMjEwOSw4ICsyMTM4LDcgQEAKIGxpc3RpbmRleChQeUxpc3RPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgaSwgc3RhcnQ9MCwgc3RvcD1QeV9TSVpFKHNlbGYpOwotICAgIFB5T2JqZWN0ICp2LCAqZm9ybWF0X3R1cGxlLCAqZXJyX3N0cmluZzsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmVycl9mb3JtYXQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8mTyY6aW5kZXgiLCAmdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RXZhbF9TbGljZUluZGV4LCAmc3RhcnQsCkBAIC0yMTMzLDIwICsyMTYxLDcgQEAKICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZXJyX2Zvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGVycl9mb3JtYXQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiJXIgaXMgbm90IGluIGxpc3QiKTsKLSAgICAgICAgaWYgKGVycl9mb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBmb3JtYXRfdHVwbGUgPSBQeVR1cGxlX1BhY2soMSwgdik7Ci0gICAgaWYgKGZvcm1hdF90dXBsZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlcnJfc3RyaW5nID0gUHlVbmljb2RlX0Zvcm1hdChlcnJfZm9ybWF0LCBmb3JtYXRfdHVwbGUpOwotICAgIFB5X0RFQ1JFRihmb3JtYXRfdHVwbGUpOwotICAgIGlmIChlcnJfc3RyaW5nID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19WYWx1ZUVycm9yLCBlcnJfc3RyaW5nKTsKLSAgICBQeV9ERUNSRUYoZXJyX3N0cmluZyk7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICIlUiBpcyBub3QgaW4gbGlzdCIsIHYpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yMjAyLDEwICsyMjE3LDggQEAKICAgICBQeUxpc3RPYmplY3QgKnZsLCAqd2w7CiAgICAgUHlfc3NpemVfdCBpOwogCi0gICAgaWYgKCFQeUxpc3RfQ2hlY2sodikgfHwgIVB5TGlzdF9DaGVjayh3KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlMaXN0X0NoZWNrKHYpIHx8ICFQeUxpc3RfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHZsID0gKFB5TGlzdE9iamVjdCAqKXY7CiAgICAgd2wgPSAoUHlMaXN0T2JqZWN0ICopdzsKQEAgLTIzMTQsMTcgKzIzMjcsMjEgQEAKICJMLl9fcmV2ZXJzZWRfXygpIC0tIHJldHVybiBhIHJldmVyc2UgaXRlcmF0b3Igb3ZlciB0aGUgbGlzdCIpOwogUHlEb2NfU1RSVkFSKHNpemVvZl9kb2MsCiAiTC5fX3NpemVvZl9fKCkgLS0gc2l6ZSBvZiBMIGluIG1lbW9yeSwgaW4gYnl0ZXMiKTsKK1B5RG9jX1NUUlZBUihjbGVhcl9kb2MsCisiTC5jbGVhcigpIC0+IE5vbmUgLS0gcmVtb3ZlIGFsbCBpdGVtcyBmcm9tIEwiKTsKK1B5RG9jX1NUUlZBUihjb3B5X2RvYywKKyJMLmNvcHkoKSAtPiBsaXN0IC0tIGEgc2hhbGxvdyBjb3B5IG9mIEwiKTsKIFB5RG9jX1NUUlZBUihhcHBlbmRfZG9jLAotIkwuYXBwZW5kKG9iamVjdCkgLS0gYXBwZW5kIG9iamVjdCB0byBlbmQiKTsKKyJMLmFwcGVuZChvYmplY3QpIC0+IE5vbmUgLS0gYXBwZW5kIG9iamVjdCB0byBlbmQiKTsKIFB5RG9jX1NUUlZBUihleHRlbmRfZG9jLAotIkwuZXh0ZW5kKGl0ZXJhYmxlKSAtLSBleHRlbmQgbGlzdCBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUiKTsKKyJMLmV4dGVuZChpdGVyYWJsZSkgLT4gTm9uZSAtLSBleHRlbmQgbGlzdCBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUiKTsKIFB5RG9jX1NUUlZBUihpbnNlcnRfZG9jLAogIkwuaW5zZXJ0KGluZGV4LCBvYmplY3QpIC0tIGluc2VydCBvYmplY3QgYmVmb3JlIGluZGV4Iik7CiBQeURvY19TVFJWQVIocG9wX2RvYywKICJMLnBvcChbaW5kZXhdKSAtPiBpdGVtIC0tIHJlbW92ZSBhbmQgcmV0dXJuIGl0ZW0gYXQgaW5kZXggKGRlZmF1bHQgbGFzdCkuXG4iCiAiUmFpc2VzIEluZGV4RXJyb3IgaWYgbGlzdCBpcyBlbXB0eSBvciBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuIik7CiBQeURvY19TVFJWQVIocmVtb3ZlX2RvYywKLSJMLnJlbW92ZSh2YWx1ZSkgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuXG4iCisiTC5yZW1vdmUodmFsdWUpIC0+IE5vbmUgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuXG4iCiAiUmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50LiIpOwogUHlEb2NfU1RSVkFSKGluZGV4X2RvYywKICJMLmluZGV4KHZhbHVlLCBbc3RhcnQsIFtzdG9wXV0pIC0+IGludGVnZXIgLS0gcmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlLlxuIgpAQCAtMjMzNCw3ICsyMzUxLDcgQEAKIFB5RG9jX1NUUlZBUihyZXZlcnNlX2RvYywKICJMLnJldmVyc2UoKSAtLSByZXZlcnNlICpJTiBQTEFDRSoiKTsKIFB5RG9jX1NUUlZBUihzb3J0X2RvYywKLSJMLnNvcnQoa2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpIC0tIHN0YWJsZSBzb3J0ICpJTiBQTEFDRSoiKTsKKyJMLnNvcnQoa2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpIC0+IE5vbmUgLS0gc3RhYmxlIHNvcnQgKklOIFBMQUNFKiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKmxpc3Rfc3Vic2NyaXB0KFB5TGlzdE9iamVjdCosIFB5T2JqZWN0Kik7CiAKQEAgLTIzNDIsOSArMjM1OSwxMSBAQAogICAgIHsiX19nZXRpdGVtX18iLCAoUHlDRnVuY3Rpb24pbGlzdF9zdWJzY3JpcHQsIE1FVEhfT3xNRVRIX0NPRVhJU1QsIGdldGl0ZW1fZG9jfSwKICAgICB7Il9fcmV2ZXJzZWRfXyIsKFB5Q0Z1bmN0aW9uKWxpc3RfcmV2ZXJzZWQsIE1FVEhfTk9BUkdTLCByZXZlcnNlZF9kb2N9LAogICAgIHsiX19zaXplb2ZfXyIsICAoUHlDRnVuY3Rpb24pbGlzdF9zaXplb2YsIE1FVEhfTk9BUkdTLCBzaXplb2ZfZG9jfSwKKyAgICB7ImNsZWFyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0Y2xlYXIsICAgTUVUSF9OT0FSR1MsIGNsZWFyX2RvY30sCisgICAgeyJjb3B5IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pbGlzdGNvcHksICAgTUVUSF9OT0FSR1MsIGNvcHlfZG9jfSwKICAgICB7ImFwcGVuZCIsICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0YXBwZW5kLCAgTUVUSF9PLCBhcHBlbmRfZG9jfSwKICAgICB7Imluc2VydCIsICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0aW5zZXJ0LCAgTUVUSF9WQVJBUkdTLCBpbnNlcnRfZG9jfSwKLSAgICB7ImV4dGVuZCIsICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RleHRlbmQsICBNRVRIX08sIGV4dGVuZF9kb2N9LAorICAgIHsiZXh0ZW5kIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RleHRlbmQsICBNRVRIX08sIGV4dGVuZF9kb2N9LAogICAgIHsicG9wIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3Rwb3AsICAgICBNRVRIX1ZBUkFSR1MsIHBvcF9kb2N9LAogICAgIHsicmVtb3ZlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RyZW1vdmUsICBNRVRIX08sIHJlbW92ZV9kb2N9LAogICAgIHsiaW5kZXgiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RpbmRleCwgICBNRVRIX1ZBUkFSR1MsIGluZGV4X2RvY30sCkBAIC0yNDA3LDcgKzI0MjYsNyBAQAogICAgICAgICAgICAgc3JjID0gc2VsZi0+b2JfaXRlbTsKICAgICAgICAgICAgIGRlc3QgPSAoKFB5TGlzdE9iamVjdCAqKXJlc3VsdCktPm9iX2l0ZW07CiAgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOwotICAgICAgICAgICAgICAgICBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICAgICAgIGN1ciArPSAoc2l6ZV90KXN0ZXAsIGkrKykgewogICAgICAgICAgICAgICAgIGl0ID0gc3JjW2N1cl07CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0KTsKICAgICAgICAgICAgICAgICBkZXN0W2ldID0gaXQ7CkBAIC0yNDk4LDcgKzI1MTcsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLT5vYl9pdGVtICsgY3VyICsgMSwKICAgICAgICAgICAgICAgICAgICAgbGltICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGN1ciA9IHN0YXJ0ICsgc2xpY2VsZW5ndGgqc3RlcDsKKyAgICAgICAgICAgIGN1ciA9IHN0YXJ0ICsgKHNpemVfdClzbGljZWxlbmd0aCAqIHN0ZXA7CiAgICAgICAgICAgICBpZiAoY3VyIDwgKHNpemVfdClQeV9TSVpFKHNlbGYpKSB7CiAgICAgICAgICAgICAgICAgbWVtbW92ZShzZWxmLT5vYl9pdGVtICsgY3VyIC0gc2xpY2VsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gKyBjdXIsCkBAIC0yNTYyLDcgKzI1ODEsNyBAQAogICAgICAgICAgICAgc2VsZml0ZW1zID0gc2VsZi0+b2JfaXRlbTsKICAgICAgICAgICAgIHNlcWl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKHNlcSk7CiAgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOwotICAgICAgICAgICAgICAgICBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICAgICAgIGN1ciArPSAoc2l6ZV90KXN0ZXAsIGkrKykgewogICAgICAgICAgICAgICAgIGdhcmJhZ2VbaV0gPSBzZWxmaXRlbXNbY3VyXTsKICAgICAgICAgICAgICAgICBpbnMgPSBzZXFpdGVtc1tpXTsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaW5zKTsKQEAgLTI2NTAsMTEgKzI2NjksMTggQEAKIHN0YXRpYyBpbnQgbGlzdGl0ZXJfdHJhdmVyc2UobGlzdGl0ZXJvYmplY3QgKiwgdmlzaXRwcm9jLCB2b2lkICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9uZXh0KGxpc3RpdGVyb2JqZWN0ICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9sZW4obGlzdGl0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RpdGVyX3JlZHVjZV9nZW5lcmFsKHZvaWQgKl9pdCwgaW50IGZvcndhcmQpOworc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9yZWR1Y2UobGlzdGl0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RpdGVyX3NldHN0YXRlKGxpc3RpdGVyb2JqZWN0ICosIFB5T2JqZWN0ICpzdGF0ZSk7CiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBsaXN0aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfc2V0c3RhdGUsIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjc2MSw2ICsyNzg3LDI3IEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CiB9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9yZWR1Y2UobGlzdGl0ZXJvYmplY3QgKml0KQoreworICAgIHJldHVybiBsaXN0aXRlcl9yZWR1Y2VfZ2VuZXJhbChpdCwgMSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9zZXRzdGF0ZShsaXN0aXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBsb25nIGluZGV4ID0gUHlMb25nX0FzTG9uZyhzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgaXQtPml0X2luZGV4ID0gaW5kZXg7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCiAvKioqKioqKioqKioqKioqKioqKioqKiogTGlzdCBSZXZlcnNlIEl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yNzc0LDkgKzI4MjEsMTMgQEAKIHN0YXRpYyBpbnQgbGlzdHJldml0ZXJfdHJhdmVyc2UobGlzdHJldml0ZXJvYmplY3QgKiwgdmlzaXRwcm9jLCB2b2lkICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0cmV2aXRlcl9uZXh0KGxpc3RyZXZpdGVyb2JqZWN0ICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0cmV2aXRlcl9sZW4obGlzdHJldml0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RyZXZpdGVyX3JlZHVjZShsaXN0cmV2aXRlcm9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqbGlzdHJldml0ZXJfc2V0c3RhdGUobGlzdHJldml0ZXJvYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBsaXN0cmV2aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfc2V0c3RhdGUsIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjg3MywzICsyOTI0LDUxIEBACiAgICAgICAgIGxlbiA9IDA7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOwogfQorCitzdGF0aWMgUHlPYmplY3QgKgorbGlzdHJldml0ZXJfcmVkdWNlKGxpc3RyZXZpdGVyb2JqZWN0ICppdCkKK3sKKyAgICByZXR1cm4gbGlzdGl0ZXJfcmVkdWNlX2dlbmVyYWwoaXQsIDApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbGlzdHJldml0ZXJfc2V0c3RhdGUobGlzdHJldml0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChpbmRleCA8IC0xKQorICAgICAgICAgICAgaW5kZXggPSAtMTsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBQeUxpc3RfR0VUX1NJWkUoaXQtPml0X3NlcSkgLSAxKQorICAgICAgICAgICAgaW5kZXggPSBQeUxpc3RfR0VUX1NJWkUoaXQtPml0X3NlcSkgLSAxOworICAgICAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qIGNvbW1vbiBwaWNrbGluZyBzdXBwb3J0ICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9yZWR1Y2VfZ2VuZXJhbCh2b2lkICpfaXQsIGludCBmb3J3YXJkKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworCisgICAgLyogdGhlIG9iamVjdHMgYXJlIG5vdCB0aGUgc2FtZSwgaW5kZXggaXMgb2YgZGlmZmVyZW50IHR5cGVzISAqLworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIGxpc3RpdGVyb2JqZWN0ICppdCA9IChsaXN0aXRlcm9iamVjdCAqKV9pdDsKKyAgICAgICAgaWYgKGl0LT5pdF9zZXEpCisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKWwiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBsaXN0cmV2aXRlcm9iamVjdCAqaXQgPSAobGlzdHJldml0ZXJvYmplY3QgKilfaXQ7CisgICAgICAgIGlmIChpdC0+aXRfc2VxKQorICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oInJldmVyc2VkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfc2VxLCBpdC0+aXRfaW5kZXgpOworICAgIH0KKyAgICAvKiBlbXB0eSBpdGVyYXRvciwgY3JlYXRlIGFuIGVtcHR5IGxpc3QgKi8KKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIGxpc3QpOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9sb25nb2JqZWN0LmMgYi9PYmplY3RzL2xvbmdvYmplY3QuYwppbmRleCBhNzM1ZTMzLi44MGZlNzI0IDEwMDY0NAotLS0gYS9PYmplY3RzL2xvbmdvYmplY3QuYworKysgYi9PYmplY3RzL2xvbmdvYmplY3QuYwpAQCAtMzIwLDggKzMyMCwxNSBAQAogI2RlZmluZSBQWV9BQlNfTE9OR19NSU4gICAgICAgICAoMC0odW5zaWduZWQgbG9uZylMT05HX01JTikKICNkZWZpbmUgUFlfQUJTX1NTSVpFX1RfTUlOICAgICAgKDAtKHNpemVfdClQWV9TU0laRV9UX01JTikKIAotLyogR2V0IGEgQyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LgotICAgUmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvciBjb25kaXRpb24gaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLworLyogR2V0IGEgQyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4gX19pbnRfXworICAgbWV0aG9kLgorCisgICBPbiBvdmVyZmxvdywgcmV0dXJuIC0xIGFuZCBzZXQgKm92ZXJmbG93IHRvIDEgb3IgLTEgZGVwZW5kaW5nIG9uIHRoZSBzaWduIG9mCisgICB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlICpvdmVyZmxvdyBpcyAwLgorCisgICBGb3Igb3RoZXIgZXJyb3JzIChlLmcuLCBUeXBlRXJyb3IpLCByZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBjb25kaXRpb24uCisgICBJbiB0aGlzIGNhc2UgKm92ZXJmbG93IHdpbGwgYmUgMC4KKyovCiAKIGxvbmcKIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqdnYsIGludCAqb3ZlcmZsb3cpCkBAIC00MTAsNiArNDE3LDkgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKiBHZXQgYSBDIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbiBfX2ludF9fCisgICBtZXRob2QuICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCisKIGxvbmcKIFB5TG9uZ19Bc0xvbmcoUHlPYmplY3QgKm9iaikKIHsKQEAgLTkyMSw3ICs5MzEsNyBAQAogCiB9CiAKLS8qIENyZWF0ZSBhIG5ldyBsb25nIChvciBpbnQpIG9iamVjdCBmcm9tIGEgQyBwb2ludGVyICovCisvKiBDcmVhdGUgYSBuZXcgbG9uZyBpbnQgb2JqZWN0IGZyb20gYSBDIHBvaW50ZXIgKi8KIAogUHlPYmplY3QgKgogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKnApCkBAIC05MzksMTUgKzk0OSwxMSBAQAogCiB9CiAKLS8qIEdldCBhIEMgcG9pbnRlciBmcm9tIGEgbG9uZyBvYmplY3QgKG9yIGFuIGludCBvYmplY3QgaW4gc29tZSBjYXNlcykgKi8KKy8qIEdldCBhIEMgcG9pbnRlciBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LiAqLwogCiB2b2lkICoKIFB5TG9uZ19Bc1ZvaWRQdHIoUHlPYmplY3QgKnZ2KQogewotICAgIC8qIFRoaXMgZnVuY3Rpb24gd2lsbCBhbGxvdyBpbnQgb3IgbG9uZyBvYmplY3RzLiBJZiB2diBpcyBuZWl0aGVyLAotICAgICAgIHRoZW4gdGhlIFB5TG9uZ19Bc0xvbmcqKCkgZnVuY3Rpb25zIHdpbGwgcmFpc2UgdGhlIGV4Y2VwdGlvbjoKLSAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwgImJhZCBhcmd1bWVudCB0byBpbnRlcm5hbCBmdW5jdGlvbiIKLSAgICAqLwogI2lmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKICAgICBsb25nIHg7CiAKQEAgLTExMjgsOCArMTEzNCw4IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CiB9CiAKLS8qIEdldCBhIEMgUFlfTE9OR19MT05HIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LgotICAgUmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLworLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbgorICAgX19pbnRfXyBtZXRob2QuICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCiAKIFBZX0xPTkdfTE9ORwogUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKnZ2KQpAQCAtMTE5MSwxMCArMTE5NywxNCBAQAogICAgIGludCBvbmUgPSAxOwogICAgIGludCByZXM7CiAKLSAgICBpZiAodnYgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKHZ2KSkgeworICAgIGlmICh2diA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKICAgICB9CisgICAgaWYgKCFQeUxvbmdfQ2hlY2sodnYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgIH0KIAogICAgIHYgPSAoUHlMb25nT2JqZWN0Kil2djsKICAgICBzd2l0Y2goUHlfU0laRSh2KSkgewpAQCAtMTI4MSwxMiArMTI5MSwxNCBAQAogfQogI3VuZGVmIElTX0xJVFRMRV9FTkRJQU4KIAotLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBQeXRob24gbG9uZyBvciBQeXRob24gaW50IG9iamVjdC4KLSAgIE9uIG92ZXJmbG93LCByZXR1cm5zIC0xIGFuZCBzZXRzICpvdmVyZmxvdyB0byAxIG9yIC0xIGRlcGVuZGluZwotICAgb24gdGhlIHNpZ24gb2YgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSAqb3ZlcmZsb3cgaXMgMC4KKy8qIEdldCBhIEMgbG9uZyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4KKyAgIF9faW50X18gbWV0aG9kLgogCi0gICBGb3Igb3RoZXIgZXJyb3JzIChlLmcuLCB0eXBlIGVycm9yKSwgcmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvcgotICAgY29uZGl0aW9uLgorICAgT24gb3ZlcmZsb3csIHJldHVybiAtMSBhbmQgc2V0ICpvdmVyZmxvdyB0byAxIG9yIC0xIGRlcGVuZGluZyBvbiB0aGUgc2lnbiBvZgorICAgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSAqb3ZlcmZsb3cgaXMgMC4KKworICAgRm9yIG90aGVyIGVycm9ycyAoZS5nLiwgVHlwZUVycm9yKSwgcmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgY29uZGl0aW9uLgorICAgSW4gdGhpcyBjYXNlICpvdmVyZmxvdyB3aWxsIGJlIDAuCiAqLwogCiBQWV9MT05HX0xPTkcKQEAgLTEzODAsMTAgKzEzOTIsOCBAQAogCiAjZGVmaW5lIENIRUNLX0JJTk9QKHYsdykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSB8fCAhUHlMb25nX0NoZWNrKHcpKSB7ICAgICBcCi0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHYpIHx8ICFQeUxvbmdfQ2hlY2sodykpICAgICAgIFwKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUoMCkKIAogLyogYml0c19pbl9kaWdpdChkKSByZXR1cm5zIHRoZSB1bmlxdWUgaW50ZWdlciBrIHN1Y2ggdGhhdCAyKiooay0xKSA8PSBkIDwKQEAgLTE1NDAsMjAgKzE1NTAsMjIgQEAKICAgIHN0cmluZy4gIChSZXR1cm4gdmFsdWUgaXMgbm9uLXNoYXJlZCBzbyB0aGF0IGNhbGxlcnMgY2FuIG1vZGlmeSB0aGUKICAgIHJldHVybmVkIHZhbHVlIGlmIG5lY2Vzc2FyeS4pICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1sb25nX3RvX2RlY2ltYWxfc3RyaW5nKFB5T2JqZWN0ICphYSkKK3N0YXRpYyBpbnQKK2xvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoUHlPYmplY3QgKmFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgUHlMb25nT2JqZWN0ICpzY3JhdGNoLCAqYTsKICAgICBQeU9iamVjdCAqc3RyOwogICAgIFB5X3NzaXplX3Qgc2l6ZSwgc3RybGVuLCBzaXplX2EsIGksIGo7CiAgICAgZGlnaXQgKnBvdXQsICpwaW4sIHJlbSwgdGVucG93OwotICAgIFB5X1VOSUNPREUgKnA7CiAgICAgaW50IG5lZ2F0aXZlOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKIAogICAgIGEgPSAoUHlMb25nT2JqZWN0ICopYWE7CiAgICAgaWYgKGEgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKGEpKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzaXplX2EgPSBBQlMoUHlfU0laRShhKSk7CiAgICAgbmVnYXRpdmUgPSBQeV9TSVpFKGEpIDwgMDsKQEAgLTE1NzAsMTMgKzE1ODIsMTMgQEAKICAgICBpZiAoc2l6ZV9hID4gUFlfU1NJWkVfVF9NQVggLyBQeUxvbmdfU0hJRlQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibG9uZyBpcyB0b28gbGFyZ2UgdG8gZm9ybWF0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIC8qIHRoZSBleHByZXNzaW9uIHNpemVfYSAqIFB5TG9uZ19TSElGVCBpcyBub3cgc2FmZSBmcm9tIG92ZXJmbG93ICovCiAgICAgc2l6ZSA9IDEgKyBzaXplX2EgKiBQeUxvbmdfU0hJRlQgLyAoMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCk7CiAgICAgc2NyYXRjaCA9IF9QeUxvbmdfTmV3KHNpemUpOwogICAgIGlmIChzY3JhdGNoID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAKICAgICAvKiBjb252ZXJ0IGFycmF5IG9mIGJhc2UgX1B5TG9uZ19CQVNFIGRpZ2l0cyBpbiBwaW4gdG8gYW4gYXJyYXkgb2YKICAgICAgICBiYXNlIF9QeUxvbmdfREVDSU1BTF9CQVNFIGRpZ2l0cyBpbiBwb3V0LCBmb2xsb3dpbmcgS251dGggKFRBT0NQLApAQCAtMTU5OSw3ICsxNjExLDcgQEAKICAgICAgICAgLyogY2hlY2sgZm9yIGtleWJvYXJkIGludGVycnVwdCAqLwogICAgICAgICBTSUdDSEVDSyh7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAvKiBwb3V0IHNob3VsZCBoYXZlIGF0IGxlYXN0IG9uZSBkaWdpdCwgc28gdGhhdCB0aGUgY2FzZSB3aGVuIGEgPSAwCkBAIC0xNjE1LDY0ICsxNjI3LDExNiBAQAogICAgICAgICB0ZW5wb3cgKj0gMTA7CiAgICAgICAgIHN0cmxlbisrOwogICAgIH0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc3RybGVuKTsKLSAgICBpZiAoc3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAod3JpdGVyKSB7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHJsZW4sICc5JykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGtpbmQgPSB3cml0ZXItPmtpbmQ7CisgICAgICAgIHN0ciA9IE5VTEw7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdHIgPSBQeVVuaWNvZGVfTmV3KHN0cmxlbiwgJzknKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2NyYXRjaCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgfQorCisjZGVmaW5lIFdSSVRFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zICsgc3RybGVuOyBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQShzdHIpICsgc3RybGVuOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICpwID0gJ1wwJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiBwb3V0WzBdIHRocm91Z2ggcG91dFtzaXplLTJdIGNvbnRyaWJ1dGUgZXhhY3RseSAgICAgICAgICAgIFwKKyAgICAgICAgICAgX1B5TG9uZ19ERUNJTUFMX1NISUZUIGRpZ2l0cyBlYWNoICovICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGZvciAoaT0wOyBpIDwgc2l6ZSAtIDE7IGkrKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmVtID0gcG91dFtpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBfUHlMb25nX0RFQ0lNQUxfU0hJRlQ7IGorKykgeyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKi0tcCA9ICcwJyArIHJlbSAlIDEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHJlbSAvPSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiBwb3V0W3NpemUtMV06IGFsd2F5cyBwcm9kdWNlIGF0IGxlYXN0IG9uZSBkZWNpbWFsIGRpZ2l0ICovIFwKKyAgICAgICAgcmVtID0gcG91dFtpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKi0tcCA9ICcwJyArIHJlbSAlIDEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJlbSAvPSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gd2hpbGUgKHJlbSAhPSAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogYW5kIHNpZ24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChuZWdhdGl2ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKi0tcCA9ICctJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC8qIGNoZWNrIHdlJ3ZlIGNvdW50ZWQgY29ycmVjdGx5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGFzc2VydChwID09ICgoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MpKTsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGFzc2VydChwID09IChUWVBFKilQeVVuaWNvZGVfREFUQShzdHIpKTsgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKIAogICAgIC8qIGZpbGwgdGhlIHN0cmluZyByaWdodC10by1sZWZ0ICovCi0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikgKyBzdHJsZW47Ci0gICAgKnAgPSAnXDAnOwotICAgIC8qIHBvdXRbMF0gdGhyb3VnaCBwb3V0W3NpemUtMl0gY29udHJpYnV0ZSBleGFjdGx5Ci0gICAgICAgX1B5TG9uZ19ERUNJTUFMX1NISUZUIGRpZ2l0cyBlYWNoICovCi0gICAgZm9yIChpPTA7IGkgPCBzaXplIC0gMTsgaSsrKSB7Ci0gICAgICAgIHJlbSA9IHBvdXRbaV07Ci0gICAgICAgIGZvciAoaiA9IDA7IGogPCBfUHlMb25nX0RFQ0lNQUxfU0hJRlQ7IGorKykgewotICAgICAgICAgICAgKi0tcCA9ICcwJyArIHJlbSAlIDEwOwotICAgICAgICAgICAgcmVtIC89IDEwOwotICAgICAgICB9CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMSAqcDsKKyAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzEpOwogICAgIH0KLSAgICAvKiBwb3V0W3NpemUtMV06IGFsd2F5cyBwcm9kdWNlIGF0IGxlYXN0IG9uZSBkZWNpbWFsIGRpZ2l0ICovCi0gICAgcmVtID0gcG91dFtpXTsKLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsKLSAgICAgICAgcmVtIC89IDEwOwotICAgIH0gd2hpbGUgKHJlbSAhPSAwKTsKKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzIgKnA7CisgICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1VDUzQgKnA7CisgICAgICAgIGFzc2VydCAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1M0KTsKKyAgICB9CisjdW5kZWYgV1JJVEVfRElHSVRTCiAKLSAgICAvKiBhbmQgc2lnbiAqLwotICAgIGlmIChuZWdhdGl2ZSkKLSAgICAgICAgKi0tcCA9ICctJzsKLQotICAgIC8qIGNoZWNrIHdlJ3ZlIGNvdW50ZWQgY29ycmVjdGx5ICovCi0gICAgYXNzZXJ0KHAgPT0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSk7CiAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilzdHI7CisgICAgaWYgKHdyaXRlcikgeworICAgICAgICB3cml0ZXItPnBvcyArPSBzdHJsZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHN0ciwgMSkpOworICAgICAgICAqcF9vdXRwdXQgPSAoUHlPYmplY3QgKilzdHI7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbG9uZ190b19kZWNpbWFsX3N0cmluZyhQeU9iamVjdCAqYWEpCit7CisgICAgUHlPYmplY3QgKnY7CisgICAgaWYgKGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoYWEsICZ2LCBOVUxMKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHY7CiB9CiAKIC8qIENvbnZlcnQgYSBsb25nIGludCBvYmplY3QgdG8gYSBzdHJpbmcsIHVzaW5nIGEgZ2l2ZW4gY29udmVyc2lvbiBiYXNlLAotICAgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZiAyLCA4LCAxMCBvciAxNi4gIFJldHVybiBhIHN0cmluZyBvYmplY3QuCi0gICBJZiBiYXNlIGlzIDIsIDggb3IgMTYsIGFkZCB0aGUgcHJvcGVyIHByZWZpeCAnMGInLCAnMG8nIG9yICcweCcuICovCisgICB3aGljaCBzaG91bGQgYmUgb25lIG9mIDIsIDggb3IgMTYuICBSZXR1cm4gYSBzdHJpbmcgb2JqZWN0LgorICAgSWYgYmFzZSBpcyAyLCA4IG9yIDE2LCBhZGQgdGhlIHByb3BlciBwcmVmaXggJzBiJywgJzBvJyBvciAnMHgnCisgICBpZiBhbHRlcm5hdGUgaXMgbm9uemVyby4gKi8KIAotUHlPYmplY3QgKgotX1B5TG9uZ19Gb3JtYXQoUHlPYmplY3QgKmFhLCBpbnQgYmFzZSkKK3N0YXRpYyBpbnQKK2xvbmdfZm9ybWF0X2JpbmFyeShQeU9iamVjdCAqYWEsIGludCBiYXNlLCBpbnQgYWx0ZXJuYXRlLAorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKICAgICByZWdpc3RlciBQeUxvbmdPYmplY3QgKmEgPSAoUHlMb25nT2JqZWN0ICopYWE7Ci0gICAgUHlPYmplY3QgKnN0cjsKLSAgICBQeV9zc2l6ZV90IGksIHN6OworICAgIFB5T2JqZWN0ICp2OworICAgIFB5X3NzaXplX3Qgc3o7CiAgICAgUHlfc3NpemVfdCBzaXplX2E7Ci0gICAgUHlfVU5JQ09ERSAqcCwgc2lnbiA9ICdcMCc7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIGludCBuZWdhdGl2ZTsKICAgICBpbnQgYml0czsKIAotICAgIGFzc2VydChiYXNlID09IDIgfHwgYmFzZSA9PSA4IHx8IGJhc2UgPT0gMTAgfHwgYmFzZSA9PSAxNik7Ci0gICAgaWYgKGJhc2UgPT0gMTApCi0gICAgICAgIHJldHVybiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nKChQeU9iamVjdCAqKWEpOwotCisgICAgYXNzZXJ0KGJhc2UgPT0gMiB8fCBiYXNlID09IDggfHwgYmFzZSA9PSAxNik7CiAgICAgaWYgKGEgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKGEpKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzaXplX2EgPSBBQlMoUHlfU0laRShhKSk7CisgICAgbmVnYXRpdmUgPSBQeV9TSVpFKGEpIDwgMDsKIAogICAgIC8qIENvbXB1dGUgYSByb3VnaCB1cHBlciBib3VuZCBmb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nICovCiAgICAgc3dpdGNoIChiYXNlKSB7CkBAIC0xNjg5LDcwICsxNzUzLDEzNyBAQAogICAgICAgICBhc3NlcnQoMCk7IC8qIHNob3VsZG4ndCBldmVyIGdldCBoZXJlICovCiAgICAgICAgIGJpdHMgPSAwOyAvKiB0byBzaWxlbmNlIGdjYyB3YXJuaW5nICovCiAgICAgfQotICAgIC8qIGNvbXB1dGUgbGVuZ3RoIG9mIG91dHB1dCBzdHJpbmc6IGFsbG93IDIgY2hhcmFjdGVycyBmb3IgcHJlZml4IGFuZAotICAgICAgIDEgZm9yIHBvc3NpYmxlICctJyBzaWduLiAqLwotICAgIGlmIChzaXplX2EgPiAoUFlfU1NJWkVfVF9NQVggLSAzKSAvIFB5TG9uZ19TSElGVCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgaXMgdG9vIGxhcmdlIHRvIGZvcm1hdCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgLyogbm93IHNpemVfYSAqIFB5TG9uZ19TSElGVCArIDMgPD0gUFlfU1NJWkVfVF9NQVgsIHNvIHRoZSBSSFMgYmVsb3cKLSAgICAgICBpcyBzYWZlIGZyb20gb3ZlcmZsb3cgKi8KLSAgICBzeiA9IDMgKyAoc2l6ZV9hICogUHlMb25nX1NISUZUICsgKGJpdHMgLSAxKSkgLyBiaXRzOwotICAgIGFzc2VydChzeiA+PSAwKTsKLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc3opOwotICAgIGlmIChzdHIgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikgKyBzejsKLSAgICAqcCA9ICdcMCc7Ci0gICAgaWYgKFB5X1NJWkUoYSkgPCAwKQotICAgICAgICBzaWduID0gJy0nOwogCi0gICAgaWYgKFB5X1NJWkUoYSkgPT0gMCkgewotICAgICAgICAqLS1wID0gJzAnOworICAgIC8qIENvbXB1dGUgZXhhY3QgbGVuZ3RoICdzeicgb2Ygb3V0cHV0IHN0cmluZy4gKi8KKyAgICBpZiAoc2l6ZV9hID09IDApIHsKKyAgICAgICAgc3ogPSAxOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgLyogSlJIOiBzcGVjaWFsIGNhc2UgZm9yIHBvd2VyLW9mLTIgYmFzZXMgKi8KLSAgICAgICAgdHdvZGlnaXRzIGFjY3VtID0gMDsKLSAgICAgICAgaW50IGFjY3VtYml0cyA9IDA7ICAgICAgICAgICAgICAvKiAjIG9mIGJpdHMgaW4gYWNjdW0gKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVfYTsgKytpKSB7Ci0gICAgICAgICAgICBhY2N1bSB8PSAodHdvZGlnaXRzKWEtPm9iX2RpZ2l0W2ldIDw8IGFjY3VtYml0czsKLSAgICAgICAgICAgIGFjY3VtYml0cyArPSBQeUxvbmdfU0hJRlQ7Ci0gICAgICAgICAgICBhc3NlcnQoYWNjdW1iaXRzID49IGJpdHMpOwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgY2RpZ2l0OwotICAgICAgICAgICAgICAgIGNkaWdpdCA9IChQeV9VTklDT0RFKShhY2N1bSAmIChiYXNlIC0gMSkpOwotICAgICAgICAgICAgICAgIGNkaWdpdCArPSAoY2RpZ2l0IDwgMTApID8gJzAnIDogJ2EnLTEwOwotICAgICAgICAgICAgICAgIGFzc2VydChwID4gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSk7Ci0gICAgICAgICAgICAgICAgKi0tcCA9IGNkaWdpdDsKLSAgICAgICAgICAgICAgICBhY2N1bWJpdHMgLT0gYml0czsKLSAgICAgICAgICAgICAgICBhY2N1bSA+Pj0gYml0czsKLSAgICAgICAgICAgIH0gd2hpbGUgKGkgPCBzaXplX2EtMSA/IGFjY3VtYml0cyA+PSBiaXRzIDogYWNjdW0gPiAwKTsKKyAgICAgICAgUHlfc3NpemVfdCBzaXplX2FfaW5fYml0czsKKyAgICAgICAgLyogRW5zdXJlIG92ZXJmbG93IGRvZXNuJ3Qgb2NjdXIgZHVyaW5nIGNvbXB1dGF0aW9uIG9mIHN6LiAqLworICAgICAgICBpZiAoc2l6ZV9hID4gKFBZX1NTSVpFX1RfTUFYIC0gMykgLyBQeUxvbmdfU0hJRlQpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgaXMgdG9vIGxhcmdlIHRvIGZvcm1hdCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CisgICAgICAgIHNpemVfYV9pbl9iaXRzID0gKHNpemVfYSAtIDEpICogUHlMb25nX1NISUZUICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzX2luX2RpZ2l0KGEtPm9iX2RpZ2l0W3NpemVfYSAtIDFdKTsKKyAgICAgICAgLyogQWxsb3cgMSBjaGFyYWN0ZXIgZm9yIGEgJy0nIHNpZ24uICovCisgICAgICAgIHN6ID0gbmVnYXRpdmUgKyAoc2l6ZV9hX2luX2JpdHMgKyAoYml0cyAtIDEpKSAvIGJpdHM7CisgICAgfQorICAgIGlmIChhbHRlcm5hdGUpIHsKKyAgICAgICAgLyogMiBjaGFyYWN0ZXJzIGZvciBwcmVmaXggICovCisgICAgICAgIHN6ICs9IDI7CiAgICAgfQogCi0gICAgaWYgKGJhc2UgPT0gMTYpCi0gICAgICAgICotLXAgPSAneCc7Ci0gICAgZWxzZSBpZiAoYmFzZSA9PSA4KQotICAgICAgICAqLS1wID0gJ28nOwotICAgIGVsc2UgLyogKGJhc2UgPT0gMikgKi8KLSAgICAgICAgKi0tcCA9ICdiJzsKLSAgICAqLS1wID0gJzAnOwotICAgIGlmIChzaWduKQotICAgICAgICAqLS1wID0gc2lnbjsKLSAgICBpZiAocCAhPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnEgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpOwotICAgICAgICBhc3NlcnQocCA+IHEpOwotICAgICAgICBkbyB7Ci0gICAgICAgIH0gd2hpbGUgKCgqcSsrID0gKnArKykgIT0gJ1wwJyk7Ci0gICAgICAgIHEtLTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SZXNpemUoJnN0ciwoUHlfc3NpemVfdCkgKHEgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikpKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN6LCAneCcpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOworICAgICAgICB2ID0gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXN0cjsKKyAgICBlbHNlIHsKKyAgICAgICAgdiA9IFB5VW5pY29kZV9OZXcoc3osICd4Jyk7CisgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2KTsKKyAgICB9CisKKyNkZWZpbmUgV1JJVEVfRElHSVRTKFRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzejsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh2KSArIHN6OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoc2l6ZV9hID09IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKi0tcCA9ICcwJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgLyogSlJIOiBzcGVjaWFsIGNhc2UgZm9yIHBvd2VyLW9mLTIgYmFzZXMgKi8gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdHdvZGlnaXRzIGFjY3VtID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50IGFjY3VtYml0cyA9IDA7ICAgLyogIyBvZiBiaXRzIGluIGFjY3VtICovICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVfYTsgKytpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGFjY3VtIHw9ICh0d29kaWdpdHMpYS0+b2JfZGlnaXRbaV0gPDwgYWNjdW1iaXRzOyAgICAgICAgXAorICAgICAgICAgICAgICAgIGFjY3VtYml0cyArPSBQeUxvbmdfU0hJRlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGFzc2VydChhY2N1bWJpdHMgPj0gYml0cyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBjaGFyIGNkaWdpdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBjZGlnaXQgPSAoY2hhcikoYWNjdW0gJiAoYmFzZSAtIDEpKTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBjZGlnaXQgKz0gKGNkaWdpdCA8IDEwKSA/ICcwJyA6ICdhJy0xMDsgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAqLS1wID0gY2RpZ2l0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBhY2N1bWJpdHMgLT0gYml0czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBhY2N1bSA+Pj0gYml0czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIH0gd2hpbGUgKGkgPCBzaXplX2EtMSA/IGFjY3VtYml0cyA+PSBiaXRzIDogYWNjdW0gPiAwKTsgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoYWx0ZXJuYXRlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKGJhc2UgPT0gMTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICotLXAgPSAneCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZWxzZSBpZiAoYmFzZSA9PSA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICotLXAgPSAnbyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZWxzZSAvKiAoYmFzZSA9PSAyKSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICotLXAgPSAnYic7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKi0tcCA9ICcwJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKi0tcCA9ICctJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYXNzZXJ0KHAgPT0gKChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcykpOyBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc3NlcnQocCA9PSAoVFlQRSopUHlVbmljb2RlX0RBVEEodikpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzEgKnA7CisgICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MyICpwOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9VQ1M0ICpwOworICAgICAgICBhc3NlcnQgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTNCk7CisgICAgfQorI3VuZGVmIFdSSVRFX0RJR0lUUworCisgICAgaWYgKHdyaXRlcikgeworICAgICAgICB3cml0ZXItPnBvcyArPSBzejsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodiwgMSkpOworICAgICAgICAqcF9vdXRwdXQgPSB2OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworUHlPYmplY3QgKgorX1B5TG9uZ19Gb3JtYXQoUHlPYmplY3QgKm9iaiwgaW50IGJhc2UpCit7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBpbnQgZXJyOworICAgIGlmIChiYXNlID09IDEwKQorICAgICAgICBlcnIgPSBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgJnN0ciwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICBlcnIgPSBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCAxLCAmc3RyLCBOVUxMKTsKKyAgICBpZiAoZXJyID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gc3RyOworfQorCitpbnQKK19QeUxvbmdfRm9ybWF0V3JpdGVyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZSwgaW50IGFsdGVybmF0ZSkKK3sKKyAgICBpZiAoYmFzZSA9PSAxMCkKKyAgICAgICAgcmV0dXJuIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCBOVUxMLCB3cml0ZXIpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIGFsdGVybmF0ZSwgTlVMTCwgd3JpdGVyKTsKIH0KIAogLyogVGFibGUgb2YgZGlnaXQgdmFsdWVzIGZvciA4LWJpdCBzdHJpbmcgLT4gaW50ZWdlciBjb252ZXJzaW9uLgpAQCAtMjEzMCwyMyArMjI2MSwyNiBAQAogUHlPYmplY3QgKgogUHlMb25nX0Zyb21Vbmljb2RlKFB5X1VOSUNPREUgKnUsIFB5X3NzaXplX3QgbGVuZ3RoLCBpbnQgYmFzZSkKIHsKKyAgICBQeU9iamVjdCAqdiwgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodSwgbGVuZ3RoKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB2ID0gUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0KHVuaWNvZGUsIGJhc2UpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gdjsKK30KKworUHlPYmplY3QgKgorUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0KFB5T2JqZWN0ICp1LCBpbnQgYmFzZSkKK3sKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICphc2NpaWRpZzsKICAgICBjaGFyICpidWZmZXIsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBpLCBidWZsZW47Ci0gICAgUHlfVU5JQ09ERSAqcHRyOworICAgIFB5X3NzaXplX3QgYnVmbGVuOwogCi0gICAgYXNjaWlkaWcgPSBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkodSwgbGVuZ3RoKTsKKyAgICBhc2NpaWRpZyA9IF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSh1KTsKICAgICBpZiAoYXNjaWlkaWcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgLyogUmVwbGFjZSBub24tQVNDSUkgd2hpdGVzcGFjZSB3aXRoICcgJyAqLwotICAgIHB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFzY2lpZGlnKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IHB0cltpXTsKLSAgICAgICAgaWYgKGNoID4gMTI3ICYmIFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCi0gICAgICAgICAgICBwdHJbaV0gPSAnICc7Ci0gICAgfQotICAgIGJ1ZmZlciA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKGFzY2lpZGlnLCAmYnVmbGVuKTsKKyAgICBidWZmZXIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShhc2NpaWRpZywgJmJ1Zmxlbik7CiAgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhc2NpaWRpZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQ0Myw4ICsyNTc3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgIH0KLSAgICBhc3NlcnQoMSA8PSB4X3NpemUgJiYKLSAgICAgICAgICAgeF9zaXplIDw9IChQeV9zc2l6ZV90KShzaXplb2YoeF9kaWdpdHMpL3NpemVvZihkaWdpdCkpKTsKKyAgICBhc3NlcnQoMSA8PSB4X3NpemUgJiYgeF9zaXplIDw9IChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSCh4X2RpZ2l0cykpOwogCiAgICAgLyogUm91bmQsIGFuZCBjb252ZXJ0IHRvIGRvdWJsZS4gKi8KICAgICB4X2RpZ2l0c1swXSArPSBoYWxmX2V2ZW5fY29ycmVjdGlvblt4X2RpZ2l0c1swXSAmIDddOwpAQCAtMjQ4MSwxMCArMjYxNCwxNCBAQAogICAgIFB5X3NzaXplX3QgZXhwb25lbnQ7CiAgICAgZG91YmxlIHg7CiAKLSAgICBpZiAodiA9PSBOVUxMIHx8ICFQeUxvbmdfQ2hlY2sodikpIHsKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gLTEuMDsKICAgICB9CisgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFuIGludGVnZXIgaXMgcmVxdWlyZWQiKTsKKyAgICAgICAgcmV0dXJuIC0xLjA7CisgICAgfQogICAgIHggPSBfUHlMb25nX0ZyZXhwKChQeUxvbmdPYmplY3QgKil2LCAmZXhwb25lbnQpOwogICAgIGlmICgoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHx8IGV4cG9uZW50ID4gREJMX01BWF9FWFApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCkBAIC0zNjA5LDggKzM3NDYsNyBAQAogICAgIGVsc2UgewogICAgICAgICBQeV9ERUNSRUYoYSk7CiAgICAgICAgIFB5X0RFQ1JFRihiKTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogCiAgICAgaWYgKFB5X1NJWkUoYikgPCAwKSB7ICAvKiBpZiBleHBvbmVudCBpcyBuZWdhdGl2ZSAqLwpAQCAtNDEzNyw5ICs0MjczLDcgQEAKICAgICB9CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHgpKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKHgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWJhc2UpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0KHgsIChpbnQpYmFzZSk7CiAgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soeCkgfHwgUHlCeXRlc19DaGVjayh4KSkgewogICAgICAgICAvKiBTaW5jZSBQeUxvbmdfRnJvbVN0cmluZyBkb2Vzbid0IGhhdmUgYSBsZW5ndGggcGFyYW1ldGVyLAogICAgICAgICAgKiBjaGVjayBoZXJlIGZvciBwb3NzaWJsZSBOVUxzIGluIHRoZSBzdHJpbmcuICovCkBAIC00MjE4LDEyICs0MzUyLDIyIEBACiBsb25nX19mb3JtYXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIGludCByZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6X19mb3JtYXRfXyIsICZmb3JtYXRfc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoZm9ybWF0X3NwZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykpOworCisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIDApOworICAgIHJldCA9IF9QeUxvbmdfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCisgICAgICAgICZ3cml0ZXIsCisgICAgICAgIHNlbGYsCisgICAgICAgIGZvcm1hdF9zcGVjLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykpOworICAgIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogfQogCiAvKiBSZXR1cm4gYSBwYWlyIChxLCByKSBzdWNoIHRoYXQgYSA9IGIgKiBxICsgciwgYW5kCmRpZmYgLS1naXQgYS9PYmplY3RzL21lbW9yeW9iamVjdC5jIGIvT2JqZWN0cy9tZW1vcnlvYmplY3QuYwppbmRleCAyZTMyYjJhLi5mNTQ3OTgzIDEwMDY0NAotLS0gYS9PYmplY3RzL21lbW9yeW9iamVjdC5jCisrKyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKQEAgLTEsMTI2ICsxLDk1NCBAQAotCiAvKiBNZW1vcnl2aWV3IG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAKLSNkZWZpbmUgSVNfUkVMRUFTRUQobWVtb2JqKSBcCi0gICAgKCgoUHlNZW1vcnlWaWV3T2JqZWN0ICopIG1lbW9iaiktPnZpZXcuYnVmID09IE5VTEwpCiAKLSNkZWZpbmUgQ0hFQ0tfUkVMRUFTRUQobWVtb2JqKSBcCi0gICAgaWYgKElTX1JFTEVBU0VEKG1lbW9iaikpIHsgXAotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QiKTsgXAotICAgICAgICByZXR1cm4gTlVMTDsgXAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZWRCdWZmZXIgT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICAgTWFuYWdlZEJ1ZmZlciBPYmplY3Q6CisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICBUaGUgcHVycG9zZSBvZiB0aGlzIG9iamVjdCBpcyB0byBmYWNpbGl0YXRlIHRoZSBoYW5kbGluZyBvZiBjaGFpbmVkCisgICAgIG1lbW9yeXZpZXdzIHRoYXQgaGF2ZSB0aGUgc2FtZSB1bmRlcmx5aW5nIGV4cG9ydGluZyBvYmplY3QuIFBFUC0zMTE4CisgICAgIGFsbG93cyB0aGUgdW5kZXJseWluZyBvYmplY3QgdG8gY2hhbmdlIHdoaWxlIGEgdmlldyBpcyBleHBvcnRlZC4gVGhpcworICAgICBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cyB3aGVuIGNvbnN0cnVjdGluZyBhIG5ldyBtZW1vcnl2aWV3CisgICAgIGZyb20gYW4gZXhpc3RpbmcgbWVtb3J5dmlldy4KKworICAgICBSYXRoZXIgdGhhbiByZXBlYXRlZGx5IHJlZGlyZWN0aW5nIGJ1ZmZlciByZXF1ZXN0cyB0byB0aGUgb3JpZ2luYWwgYmFzZQorICAgICBvYmplY3QsIGFsbCBjaGFpbmVkIG1lbW9yeXZpZXdzIHVzZSBhIHNpbmdsZSBidWZmZXIgc25hcHNob3QuIFRoaXMKKyAgICAgc25hcHNob3QgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBfUHlNYW5hZ2VkQnVmZmVyX0Zyb21PYmplY3QoKS4KKworICAgT3duZXJzaGlwIHJ1bGVzOgorICAgLS0tLS0tLS0tLS0tLS0tLQorCisgICAgIFRoZSBtYXN0ZXIgYnVmZmVyIGluc2lkZSBhIG1hbmFnZWQgYnVmZmVyIGlzIGZpbGxlZCBpbiBieSB0aGUgb3JpZ2luYWwKKyAgICAgYmFzZSBvYmplY3QuIHNoYXBlLCBzdHJpZGVzLCBzdWJvZmZzZXRzIGFuZCBmb3JtYXQgYXJlIHJlYWQtb25seSBmb3IKKyAgICAgYWxsIGNvbnN1bWVycy4KKworICAgICBBIG1lbW9yeXZpZXcncyBidWZmZXIgaXMgYSBwcml2YXRlIGNvcHkgb2YgdGhlIGV4cG9ydGVyJ3MgYnVmZmVyLiBzaGFwZSwKKyAgICAgc3RyaWRlcyBhbmQgc3Vib2Zmc2V0cyBiZWxvbmcgdG8gdGhlIG1lbW9yeXZpZXcgYW5kIGFyZSB0aHVzIHdyaXRhYmxlLgorCisgICAgIElmIGEgbWVtb3J5dmlldyBpdHNlbGYgZXhwb3J0cyBzZXZlcmFsIGJ1ZmZlcnMgdmlhIG1lbW9yeV9nZXRidWYoKSwgYWxsCisgICAgIGJ1ZmZlciBjb3BpZXMgc2hhcmUgc2hhcGUsIHN0cmlkZXMgYW5kIHN1Ym9mZnNldHMuIEluIHRoaXMgY2FzZSwgdGhlCisgICAgIGFycmF5cyBhcmUgTk9UIHdyaXRhYmxlLgorCisgICBSZWZlcmVuY2UgY291bnQgYXNzdW1wdGlvbnM6CisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgVGhlICdvYmonIG1lbWJlciBvZiBhIFB5X2J1ZmZlciBtdXN0IGVpdGhlciBiZSBOVUxMIG9yIHJlZmVyIHRvIHRoZQorICAgICBleHBvcnRpbmcgYmFzZSBvYmplY3QuIEluIHRoZSBQeXRob24gY29kZWJhc2UsIGFsbCBnZXRidWZmZXJwcm9jcworICAgICByZXR1cm4gYSBuZXcgcmVmZXJlbmNlIHRvIHZpZXcub2JqIChleGFtcGxlOiBieXRlc19idWZmZXJfZ2V0YnVmZmVyKCkpLgorCisgICAgIFB5QnVmZmVyX1JlbGVhc2UoKSBkZWNyZW1lbnRzIHZpZXcub2JqIChpZiBub24tTlVMTCksIHNvIHRoZQorICAgICByZWxlYXNlYnVmZmVycHJvY3MgbXVzdCBOT1QgZGVjcmVtZW50IHZpZXcub2JqLgorKi8KKworCisjZGVmaW5lIFhTVFJJTkdJWkUodikgI3YKKyNkZWZpbmUgU1RSSU5HSVpFKHYpIFhTVFJJTkdJWkUodikKKworI2RlZmluZSBDSEVDS19NQlVGX1JFTEVBU0VEKG1idWYpIFwKKyAgICBpZiAoKChfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopbWJ1ZiktPmZsYWdzJl9QeV9NQU5BR0VEX0JVRkZFUl9SRUxFQVNFRCkgeyBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIm9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QiKTsgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQogCi0jZGVmaW5lIENIRUNLX1JFTEVBU0VEX0lOVChtZW1vYmopIFwKLSAgICBpZiAoSVNfUkVMRUFTRUQobWVtb2JqKSkgeyBcCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAib3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBtZW1vcnl2aWV3IG9iamVjdCIpOyBcCi0gICAgICAgIHJldHVybiAtMTsgXAotICAgIH0KIAotc3RhdGljIFB5X3NzaXplX3QKLWdldF9zaGFwZTAoUHlfYnVmZmVyICpidWYpCitQeV9MT0NBTF9JTkxJTkUoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqKQorbWJ1Zl9hbGxvYyh2b2lkKQogewotICAgIGlmIChidWYtPnNoYXBlICE9IE5VTEwpCi0gICAgICAgIHJldHVybiBidWYtPnNoYXBlWzBdOwotICAgIGlmIChidWYtPm5kaW0gPT0gMCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgImV4cG9ydGVkIGJ1ZmZlciBkb2VzIG5vdCBoYXZlIGFueSBzaGFwZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkICIKLSAgICAgICAgInRvIGl0Iik7Ci0gICAgcmV0dXJuIC0xOworICAgIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWY7CisKKyAgICBtYnVmID0gKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKikKKyAgICAgICAgUHlPYmplY3RfR0NfTmV3KF9QeU1hbmFnZWRCdWZmZXJPYmplY3QsICZfUHlNYW5hZ2VkQnVmZmVyX1R5cGUpOworICAgIGlmIChtYnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1idWYtPmZsYWdzID0gMDsKKyAgICBtYnVmLT5leHBvcnRzID0gMDsKKyAgICBtYnVmLT5tYXN0ZXIub2JqID0gTlVMTDsKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0sobWJ1Zik7CisKKyAgICByZXR1cm4gbWJ1ZjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19QeU1hbmFnZWRCdWZmZXJfRnJvbU9iamVjdChQeU9iamVjdCAqYmFzZSkKK3sKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOworCisgICAgbWJ1ZiA9IG1idWZfYWxsb2MoKTsKKyAgICBpZiAobWJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYmFzZSwgJm1idWYtPm1hc3RlciwgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgIG1idWYtPm1hc3Rlci5vYmogPSBOVUxMOworICAgICAgICBQeV9ERUNSRUYobWJ1Zik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKiltYnVmOwogfQogCiBzdGF0aWMgdm9pZAotZHVwX2J1ZmZlcihQeV9idWZmZXIgKmRlc3QsIFB5X2J1ZmZlciAqc3JjKQorbWJ1Zl9yZWxlYXNlKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgKmRlc3QgPSAqc3JjOwotICAgIGlmIChzcmMtPm5kaW0gPT0gMSAmJiBzcmMtPnNoYXBlICE9IE5VTEwpIHsKLSAgICAgICAgZGVzdC0+c2hhcGUgPSAmKGRlc3QtPnNtYWxsdGFibGVbMF0pOwotICAgICAgICBkZXN0LT5zaGFwZVswXSA9IGdldF9zaGFwZTAoc3JjKTsKLSAgICB9Ci0gICAgaWYgKHNyYy0+bmRpbSA9PSAxICYmIHNyYy0+c3RyaWRlcyAhPSBOVUxMKSB7Ci0gICAgICAgIGRlc3QtPnN0cmlkZXMgPSAmKGRlc3QtPnNtYWxsdGFibGVbMV0pOwotICAgICAgICBkZXN0LT5zdHJpZGVzWzBdID0gc3JjLT5zdHJpZGVzWzBdOwotICAgIH0KKyAgICBpZiAoc2VsZi0+ZmxhZ3MmX1B5X01BTkFHRURfQlVGRkVSX1JFTEVBU0VEKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBOT1RFOiBhdCB0aGlzIHBvaW50IHNlbGYtPmV4cG9ydHMgY2FuIHN0aWxsIGJlID4gMCBpZiB0aGlzIGZ1bmN0aW9uCisgICAgICAgaXMgY2FsbGVkIGZyb20gbWJ1Zl9jbGVhcigpIHRvIGJyZWFrIHVwIGEgcmVmZXJlbmNlIGN5Y2xlLiAqLworICAgIHNlbGYtPmZsYWdzIHw9IF9QeV9NQU5BR0VEX0JVRkZFUl9SRUxFQVNFRDsKKworICAgIC8qIFB5QnVmZmVyX1JlbGVhc2UoKSBkZWNyZW1lbnRzIG1hc3Rlci0+b2JqIGFuZCBzZXRzIGl0IHRvIE5VTEwuICovCisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VsZi0+bWFzdGVyKTsKK30KKworc3RhdGljIHZvaWQKK21idWZfZGVhbGxvYyhfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICpzZWxmKQoreworICAgIGFzc2VydChzZWxmLT5leHBvcnRzID09IDApOworICAgIG1idWZfcmVsZWFzZShzZWxmKTsKKyAgICBpZiAoc2VsZi0+ZmxhZ3MmX1B5X01BTkFHRURfQlVGRkVSX0ZSRUVfRk9STUFUKQorICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPm1hc3Rlci5mb3JtYXQpOworICAgIFB5T2JqZWN0X0dDX0RlbChzZWxmKTsKIH0KIAogc3RhdGljIGludAotbWVtb3J5X2dldGJ1ZihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQorbWJ1Zl90cmF2ZXJzZShfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBpbnQgcmVzID0gMDsKLSAgICBDSEVDS19SRUxFQVNFRF9JTlQoc2VsZik7Ci0gICAgaWYgKHNlbGYtPnZpZXcub2JqICE9IE5VTEwpCi0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0dldEJ1ZmZlcihzZWxmLT52aWV3Lm9iaiwgdmlldywgZmxhZ3MpOwotICAgIGlmICh2aWV3KQotICAgICAgICBkdXBfYnVmZmVyKHZpZXcsICZzZWxmLT52aWV3KTsKLSAgICByZXR1cm4gcmVzOworICAgIFB5X1ZJU0lUKHNlbGYtPm1hc3Rlci5vYmopOworICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZAotbWVtb3J5X3JlbGVhc2VidWYoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcpCitzdGF0aWMgaW50CittYnVmX2NsZWFyKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSh2aWV3KTsKKyAgICBhc3NlcnQoc2VsZi0+ZXhwb3J0cyA+PSAwKTsKKyAgICBtYnVmX3JlbGVhc2Uoc2VsZik7CisgICAgcmV0dXJuIDA7CiB9CiAKK1B5VHlwZU9iamVjdCBfUHlNYW5hZ2VkQnVmZmVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAibWFuYWdlZGJ1ZmZlciIsCisgICAgc2l6ZW9mKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QpLAorICAgIDAsCisgICAgKGRlc3RydWN0b3IpbWJ1Zl9kZWFsbG9jLCAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKW1idWZfdHJhdmVyc2UsICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpbWJ1Zl9jbGVhciAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlWaWV3IE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEluIHRoZSBwcm9jZXNzIG9mIGJyZWFraW5nIHJlZmVyZW5jZSBjeWNsZXMgbWJ1Zl9yZWxlYXNlKCkgY2FuIGJlCisgICBjYWxsZWQgYmVmb3JlIG1lbW9yeV9yZWxlYXNlKCkuICovCisjZGVmaW5lIEJBU0VfSU5BQ0NFU1NJQkxFKG12KSBcCisgICAgKCgoUHlNZW1vcnlWaWV3T2JqZWN0ICopbXYpLT5mbGFncyZfUHlfTUVNT1JZVklFV19SRUxFQVNFRCB8fCBcCisgICAgICgoUHlNZW1vcnlWaWV3T2JqZWN0ICopbXYpLT5tYnVmLT5mbGFncyZfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQpCisKKyNkZWZpbmUgQ0hFQ0tfUkVMRUFTRUQobXYpIFwKKyAgICBpZiAoQkFTRV9JTkFDQ0VTU0lCTEUobXYpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICJvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Iik7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgQ0hFQ0tfUkVMRUFTRURfSU5UKG12KSBcCisgICAgaWYgKEJBU0VfSU5BQ0NFU1NJQkxFKG12KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAib3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBtZW1vcnl2aWV3IG9iamVjdCIpOyBcCisgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENIRUNLX0xJU1RfT1JfVFVQTEUodikgXAorICAgIGlmICghUHlMaXN0X0NoZWNrKHYpICYmICFQeVR1cGxlX0NoZWNrKHYpKSB7IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgICAgICAgICBcCisgICAgICAgICAgICAjdiAiIG11c3QgYmUgYSBsaXN0IG9yIGEgdHVwbGUiKTsgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgVklFV19BRERSKG12KSAoJigoUHlNZW1vcnlWaWV3T2JqZWN0ICopbXYpLT52aWV3KQorCisvKiBDaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHN1Ym9mZnNldHMgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbi4gKi8KKyNkZWZpbmUgSEFWRV9QVFIoc3Vib2Zmc2V0cykgKHN1Ym9mZnNldHMgJiYgc3Vib2Zmc2V0c1swXSA+PSAwKQorLyogQWRqdXN0IHB0ciBpZiBzdWJvZmZzZXRzIGFyZSBwcmVzZW50LiAqLworI2RlZmluZSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cykgXAorICAgIChIQVZFX1BUUihzdWJvZmZzZXRzKSA/ICooKGNoYXIqKilwdHIpICsgc3Vib2Zmc2V0c1swXSA6IHB0cikKKworLyogTWVtb3J5dmlldyBidWZmZXIgcHJvcGVydGllcyAqLworI2RlZmluZSBNVl9DX0NPTlRJR1VPVVMoZmxhZ3MpIChmbGFncyYoX1B5X01FTU9SWVZJRVdfU0NBTEFSfF9QeV9NRU1PUllWSUVXX0MpKQorI2RlZmluZSBNVl9GX0NPTlRJR1VPVVMoZmxhZ3MpIFwKKyAgICAoZmxhZ3MmKF9QeV9NRU1PUllWSUVXX1NDQUxBUnxfUHlfTUVNT1JZVklFV19GT1JUUkFOKSkKKyNkZWZpbmUgTVZfQU5ZX0NPTlRJR1VPVVMoZmxhZ3MpIFwKKyAgICAoZmxhZ3MmKF9QeV9NRU1PUllWSUVXX1NDQUxBUnxfUHlfTUVNT1JZVklFV19DfF9QeV9NRU1PUllWSUVXX0ZPUlRSQU4pKQorCisvKiBGYXN0IGNvbnRpZ3VpdHkgdGVzdC4gQ2FsbGVyIG11c3QgZW5zdXJlIHN1Ym9mZnNldHM9PU5VTEwgYW5kIG5kaW09PTEuICovCisjZGVmaW5lIE1WX0NPTlRJR1VPVVNfTkRJTTEodmlldykgXAorICAgICgodmlldyktPnNoYXBlWzBdID09IDEgfHwgKHZpZXcpLT5zdHJpZGVzWzBdID09ICh2aWV3KS0+aXRlbXNpemUpCisKKy8qIGdldGJ1ZmZlcigpIHJlcXVlc3RzICovCisjZGVmaW5lIFJFUV9JTkRJUkVDVChmbGFncykgKChmbGFncyZQeUJVRl9JTkRJUkVDVCkgPT0gUHlCVUZfSU5ESVJFQ1QpCisjZGVmaW5lIFJFUV9DX0NPTlRJR1VPVVMoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfQ19DT05USUdVT1VTKSA9PSBQeUJVRl9DX0NPTlRJR1VPVVMpCisjZGVmaW5lIFJFUV9GX0NPTlRJR1VPVVMoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfRl9DT05USUdVT1VTKSA9PSBQeUJVRl9GX0NPTlRJR1VPVVMpCisjZGVmaW5lIFJFUV9BTllfQ09OVElHVU9VUyhmbGFncykgKChmbGFncyZQeUJVRl9BTllfQ09OVElHVU9VUykgPT0gUHlCVUZfQU5ZX0NPTlRJR1VPVVMpCisjZGVmaW5lIFJFUV9TVFJJREVTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX1NUUklERVMpID09IFB5QlVGX1NUUklERVMpCisjZGVmaW5lIFJFUV9TSEFQRShmbGFncykgKChmbGFncyZQeUJVRl9ORCkgPT0gUHlCVUZfTkQpCisjZGVmaW5lIFJFUV9XUklUQUJMRShmbGFncykgKGZsYWdzJlB5QlVGX1dSSVRBQkxFKQorI2RlZmluZSBSRVFfRk9STUFUKGZsYWdzKSAoZmxhZ3MmUHlCVUZfRk9STUFUKQorCisKIFB5RG9jX1NUUlZBUihtZW1vcnlfZG9jLAogIm1lbW9yeXZpZXcob2JqZWN0KVxuXAogXG5cCiBDcmVhdGUgYSBuZXcgbWVtb3J5dmlldyBvYmplY3Qgd2hpY2ggcmVmZXJlbmNlcyB0aGUgZ2l2ZW4gb2JqZWN0LiIpOwogCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBDb3B5IG1lbW9yeXZpZXcgYnVmZmVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gdGFrZSBhIHNvdXJjZSBhbmQgYSBkZXN0aW5hdGlvbiBidWZmZXIKKyAgIHdpdGggdGhlIHNhbWUgbG9naWNhbCBzdHJ1Y3R1cmU6IGZvcm1hdCwgaXRlbXNpemUsIG5kaW0gYW5kIHNoYXBlCisgICBhcmUgaWRlbnRpY2FsLCB3aXRoIG5kaW0gPiAwLgorCisgICBOT1RFOiBBbGwgYnVmZmVycyBhcmUgYXNzdW1lZCB0byBoYXZlIFB5QlVGX0ZVTEwgaW5mb3JtYXRpb24sIHdoaWNoCisgICBpcyB0aGUgY2FzZSBmb3IgbWVtb3J5dmlld3MhICovCisKKworLyogQXNzdW1wdGlvbnM6IG5kaW0gPj0gMS4gVGhlIG1hY3JvIHRlc3RzIGZvciBhIGNvcm5lciBjYXNlIHRoYXQgc2hvdWxkCisgICBwZXJoYXBzIGJlIGV4cGxpY2l0bHkgZm9yYmlkZGVuIGluIHRoZSBQRVAuICovCisjZGVmaW5lIEhBVkVfU1VCT0ZGU0VUU19JTl9MQVNUX0RJTSh2aWV3KSBcCisgICAgKHZpZXctPnN1Ym9mZnNldHMgJiYgdmlldy0+c3Vib2Zmc2V0c1tkZXN0LT5uZGltLTFdID49IDApCisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitsYXN0X2RpbV9pc19jb250aWd1b3VzKGNvbnN0IFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCit7CisgICAgYXNzZXJ0KGRlc3QtPm5kaW0gPiAwICYmIHNyYy0+bmRpbSA+IDApOworICAgIHJldHVybiAoIUhBVkVfU1VCT0ZGU0VUU19JTl9MQVNUX0RJTShkZXN0KSAmJgorICAgICAgICAgICAgIUhBVkVfU1VCT0ZGU0VUU19JTl9MQVNUX0RJTShzcmMpICYmCisgICAgICAgICAgICBkZXN0LT5zdHJpZGVzW2Rlc3QtPm5kaW0tMV0gPT0gZGVzdC0+aXRlbXNpemUgJiYKKyAgICAgICAgICAgIHNyYy0+c3RyaWRlc1tzcmMtPm5kaW0tMV0gPT0gc3JjLT5pdGVtc2l6ZSk7Cit9CisKKy8qIFRoaXMgaXMgbm90IGEgZ2VuZXJhbCBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcgZm9ybWF0IGVxdWl2YWxlbmNlLgorICAgSXQgaXMgdXNlZCBpbiBjb3B5X3NpbmdsZSgpIGFuZCBjb3B5X2J1ZmZlcigpIHRvIHdlZWQgb3V0IG5vbi1tYXRjaGluZworICAgZm9ybWF0cy4gU2tpcHBpbmcgdGhlICdAJyBjaGFyYWN0ZXIgaXMgc3BlY2lmaWNhbGx5IHVzZWQgaW4gc2xpY2UKKyAgIGFzc2lnbm1lbnRzLCB3aGVyZSB0aGUgbHZhbHVlIGlzIGFscmVhZHkga25vd24gdG8gaGF2ZSBhIHNpbmdsZSBjaGFyYWN0ZXIKKyAgIGZvcm1hdC4gVGhpcyBpcyBhIHBlcmZvcm1hbmNlIGhhY2sgdGhhdCBjb3VsZCBiZSByZXdyaXR0ZW4gKGlmIHByb3Blcmx5CisgICBiZW5jaG1hcmtlZCkuICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQorZXF1aXZfZm9ybWF0KGNvbnN0IFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCit7CisgICAgY29uc3QgY2hhciAqZGZtdCwgKnNmbXQ7CisKKyAgICBhc3NlcnQoZGVzdC0+Zm9ybWF0ICYmIHNyYy0+Zm9ybWF0KTsKKyAgICBkZm10ID0gZGVzdC0+Zm9ybWF0WzBdID09ICdAJyA/IGRlc3QtPmZvcm1hdCsxIDogZGVzdC0+Zm9ybWF0OworICAgIHNmbXQgPSBzcmMtPmZvcm1hdFswXSA9PSAnQCcgPyBzcmMtPmZvcm1hdCsxIDogc3JjLT5mb3JtYXQ7CisKKyAgICBpZiAoc3RyY21wKGRmbXQsIHNmbXQpICE9IDAgfHwKKyAgICAgICAgZGVzdC0+aXRlbXNpemUgIT0gc3JjLT5pdGVtc2l6ZSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyogVHdvIHNoYXBlcyBhcmUgZXF1aXZhbGVudCBpZiB0aGV5IGFyZSBlaXRoZXIgZXF1YWwgb3IgaWRlbnRpY2FsIHVwCisgICB0byBhIHplcm8gZWxlbWVudCBhdCB0aGUgc2FtZSBwb3NpdGlvbi4gRm9yIGV4YW1wbGUsIGluIE51bVB5IGFycmF5cworICAgdGhlIHNoYXBlcyBbMSwgMCwgNV0gYW5kIFsxLCAwLCA3XSBhcmUgZXF1aXZhbGVudC4gKi8KK1B5X0xPQ0FMX0lOTElORShpbnQpCitlcXVpdl9zaGFwZShjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGludCBpOworCisgICAgaWYgKGRlc3QtPm5kaW0gIT0gc3JjLT5uZGltKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBkZXN0LT5uZGltOyBpKyspIHsKKyAgICAgICAgaWYgKGRlc3QtPnNoYXBlW2ldICE9IHNyYy0+c2hhcGVbaV0pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKGRlc3QtPnNoYXBlW2ldID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyogQ2hlY2sgdGhhdCB0aGUgbG9naWNhbCBzdHJ1Y3R1cmUgb2YgdGhlIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2UgYnVmZmVycworICAgaXMgaWRlbnRpY2FsLiAqLworc3RhdGljIGludAorZXF1aXZfc3RydWN0dXJlKGNvbnN0IFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCit7CisgICAgaWYgKCFlcXVpdl9mb3JtYXQoZGVzdCwgc3JjKSB8fAorICAgICAgICAhZXF1aXZfc2hhcGUoZGVzdCwgc3JjKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGFzc2lnbm1lbnQ6IGx2YWx1ZSBhbmQgcnZhbHVlIGhhdmUgZGlmZmVyZW50IHN0cnVjdHVyZXMiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIEJhc2UgY2FzZSBmb3IgcmVjdXJzaXZlIG11bHRpLWRpbWVuc2lvbmFsIGNvcHlpbmcuIENvbnRpZ3VvdXMgYXJyYXlzIGFyZQorICAgY29waWVkIHdpdGggdmVyeSBsaXR0bGUgb3ZlcmhlYWQuIEFzc3VtcHRpb25zOiBuZGltID09IDEsIG1lbSA9PSBOVUxMIG9yCisgICBzaXplb2YobWVtKSA9PSBzaGFwZVswXSAqIGl0ZW1zaXplLiAqLworc3RhdGljIHZvaWQKK2NvcHlfYmFzZShjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwgUHlfc3NpemVfdCBpdGVtc2l6ZSwKKyAgICAgICAgICBjaGFyICpkcHRyLCBjb25zdCBQeV9zc2l6ZV90ICpkc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqZHN1Ym9mZnNldHMsCisgICAgICAgICAgY2hhciAqc3B0ciwgY29uc3QgUHlfc3NpemVfdCAqc3N0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKnNzdWJvZmZzZXRzLAorICAgICAgICAgIGNoYXIgKm1lbSkKK3sKKyAgICBpZiAobWVtID09IE5VTEwpIHsgLyogY29udGlndW91cyAqLworICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBzaGFwZVswXSAqIGl0ZW1zaXplOworICAgICAgICBpZiAoZHB0ciArIHNpemUgPCBzcHRyIHx8IHNwdHIgKyBzaXplIDwgZHB0cikKKyAgICAgICAgICAgIG1lbWNweShkcHRyLCBzcHRyLCBzaXplKTsgLyogbm8gb3ZlcmxhcHBpbmcgKi8KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVtbW92ZShkcHRyLCBzcHRyLCBzaXplKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGNoYXIgKnA7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgZm9yIChpPTAsIHA9bWVtOyBpIDwgc2hhcGVbMF07IHArPWl0ZW1zaXplLCBzcHRyKz1zc3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgICAgICBjaGFyICp4c3B0ciA9IEFESlVTVF9QVFIoc3B0ciwgc3N1Ym9mZnNldHMpOworICAgICAgICAgICAgbWVtY3B5KHAsIHhzcHRyLCBpdGVtc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpPTAsIHA9bWVtOyBpIDwgc2hhcGVbMF07IHArPWl0ZW1zaXplLCBkcHRyKz1kc3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMpOworICAgICAgICAgICAgbWVtY3B5KHhkcHRyLCBwLCBpdGVtc2l6ZSk7CisgICAgICAgIH0KKyAgICB9CisKK30KKworLyogUmVjdXJzaXZlbHkgY29weSBhIHNvdXJjZSBidWZmZXIgdG8gYSBkZXN0aW5hdGlvbiBidWZmZXIuIFRoZSB0d28gYnVmZmVycworICAgaGF2ZSB0aGUgc2FtZSBuZGltLCBzaGFwZSBhbmQgaXRlbXNpemUuICovCitzdGF0aWMgdm9pZAorY29weV9yZWMoY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsIFB5X3NzaXplX3QgbmRpbSwgUHlfc3NpemVfdCBpdGVtc2l6ZSwKKyAgICAgICAgIGNoYXIgKmRwdHIsIGNvbnN0IFB5X3NzaXplX3QgKmRzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpkc3Vib2Zmc2V0cywKKyAgICAgICAgIGNoYXIgKnNwdHIsIGNvbnN0IFB5X3NzaXplX3QgKnNzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpzc3Vib2Zmc2V0cywKKyAgICAgICAgIGNoYXIgKm1lbSkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobmRpbSA+PSAxKTsKKworICAgIGlmIChuZGltID09IDEpIHsKKyAgICAgICAgY29weV9iYXNlKHNoYXBlLCBpdGVtc2l6ZSwKKyAgICAgICAgICAgICAgICAgIGRwdHIsIGRzdHJpZGVzLCBkc3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgIHNwdHIsIHNzdHJpZGVzLCBzc3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgIG1lbSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IGRwdHIrPWRzdHJpZGVzWzBdLCBzcHRyKz1zc3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgIGNoYXIgKnhkcHRyID0gQURKVVNUX1BUUihkcHRyLCBkc3Vib2Zmc2V0cyk7CisgICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cyk7CisKKyAgICAgICAgY29weV9yZWMoc2hhcGUrMSwgbmRpbS0xLCBpdGVtc2l6ZSwKKyAgICAgICAgICAgICAgICAgeGRwdHIsIGRzdHJpZGVzKzEsIGRzdWJvZmZzZXRzID8gZHN1Ym9mZnNldHMrMSA6IE5VTEwsCisgICAgICAgICAgICAgICAgIHhzcHRyLCBzc3RyaWRlcysxLCBzc3Vib2Zmc2V0cyA/IHNzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICBtZW0pOworICAgIH0KK30KKworLyogRmFzdGVyIGNvcHlpbmcgb2Ygb25lLWRpbWVuc2lvbmFsIGFycmF5cy4gKi8KK3N0YXRpYyBpbnQKK2NvcHlfc2luZ2xlKFB5X2J1ZmZlciAqZGVzdCwgUHlfYnVmZmVyICpzcmMpCit7CisgICAgY2hhciAqbWVtID0gTlVMTDsKKworICAgIGFzc2VydChkZXN0LT5uZGltID09IDEpOworCisgICAgaWYgKCFlcXVpdl9zdHJ1Y3R1cmUoZGVzdCwgc3JjKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKCFsYXN0X2RpbV9pc19jb250aWd1b3VzKGRlc3QsIHNyYykpIHsKKyAgICAgICAgbWVtID0gUHlNZW1fTWFsbG9jKGRlc3QtPnNoYXBlWzBdICogZGVzdC0+aXRlbXNpemUpOworICAgICAgICBpZiAobWVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb3B5X2Jhc2UoZGVzdC0+c2hhcGUsIGRlc3QtPml0ZW1zaXplLAorICAgICAgICAgICAgICBkZXN0LT5idWYsIGRlc3QtPnN0cmlkZXMsIGRlc3QtPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgIHNyYy0+YnVmLCBzcmMtPnN0cmlkZXMsIHNyYy0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgbWVtKTsKKworICAgIGlmIChtZW0pCisgICAgICAgIFB5TWVtX0ZyZWUobWVtKTsKKworICAgIHJldHVybiAwOworfQorCisvKiBSZWN1cnNpdmVseSBjb3B5IHNyYyB0byBkZXN0LiBCb3RoIGJ1ZmZlcnMgbXVzdCBoYXZlIHRoZSBzYW1lIGJhc2ljCisgICBzdHJ1Y3R1cmUuIENvcHlpbmcgaXMgYXRvbWljLCB0aGUgZnVuY3Rpb24gbmV2ZXIgZmFpbHMgd2l0aCBhIHBhcnRpYWwKKyAgIGNvcHkuICovCitzdGF0aWMgaW50Citjb3B5X2J1ZmZlcihQeV9idWZmZXIgKmRlc3QsIFB5X2J1ZmZlciAqc3JjKQoreworICAgIGNoYXIgKm1lbSA9IE5VTEw7CisKKyAgICBhc3NlcnQoZGVzdC0+bmRpbSA+IDApOworCisgICAgaWYgKCFlcXVpdl9zdHJ1Y3R1cmUoZGVzdCwgc3JjKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKCFsYXN0X2RpbV9pc19jb250aWd1b3VzKGRlc3QsIHNyYykpIHsKKyAgICAgICAgbWVtID0gUHlNZW1fTWFsbG9jKGRlc3QtPnNoYXBlW2Rlc3QtPm5kaW0tMV0gKiBkZXN0LT5pdGVtc2l6ZSk7CisgICAgICAgIGlmIChtZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvcHlfcmVjKGRlc3QtPnNoYXBlLCBkZXN0LT5uZGltLCBkZXN0LT5pdGVtc2l6ZSwKKyAgICAgICAgICAgICBkZXN0LT5idWYsIGRlc3QtPnN0cmlkZXMsIGRlc3QtPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgc3JjLT5idWYsIHNyYy0+c3RyaWRlcywgc3JjLT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgIG1lbSk7CisKKyAgICBpZiAobWVtKQorICAgICAgICBQeU1lbV9GcmVlKG1lbSk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyogSW5pdGlhbGl6ZSBzdHJpZGVzIGZvciBhIEMtY29udGlndW91cyBhcnJheS4gKi8KK1B5X0xPQ0FMX0lOTElORSh2b2lkKQoraW5pdF9zdHJpZGVzX2Zyb21fc2hhcGUoUHlfYnVmZmVyICp2aWV3KQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydCh2aWV3LT5uZGltID4gMCk7CisKKyAgICB2aWV3LT5zdHJpZGVzW3ZpZXctPm5kaW0tMV0gPSB2aWV3LT5pdGVtc2l6ZTsKKyAgICBmb3IgKGkgPSB2aWV3LT5uZGltLTI7IGkgPj0gMDsgaS0tKQorICAgICAgICB2aWV3LT5zdHJpZGVzW2ldID0gdmlldy0+c3RyaWRlc1tpKzFdICogdmlldy0+c2hhcGVbaSsxXTsKK30KKworLyogSW5pdGlhbGl6ZSBzdHJpZGVzIGZvciBhIEZvcnRyYW4tY29udGlndW91cyBhcnJheS4gKi8KK1B5X0xPQ0FMX0lOTElORSh2b2lkKQoraW5pdF9mb3J0cmFuX3N0cmlkZXNfZnJvbV9zaGFwZShQeV9idWZmZXIgKnZpZXcpCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KHZpZXctPm5kaW0gPiAwKTsKKworICAgIHZpZXctPnN0cmlkZXNbMF0gPSB2aWV3LT5pdGVtc2l6ZTsKKyAgICBmb3IgKGkgPSAxOyBpIDwgdmlldy0+bmRpbTsgaSsrKQorICAgICAgICB2aWV3LT5zdHJpZGVzW2ldID0gdmlldy0+c3RyaWRlc1tpLTFdICogdmlldy0+c2hhcGVbaS0xXTsKK30KKworLyogQ29weSBzcmMgdG8gYSBjb250aWd1b3VzIHJlcHJlc2VudGF0aW9uLiBvcmRlciBpcyBvbmUgb2YgJ0MnLCAnRicgKEZvcnRyYW4pCisgICBvciAnQScgKEFueSkuIEFzc3VtcHRpb25zOiBzcmMgaGFzIFB5QlVGX0ZVTEwgaW5mb3JtYXRpb24sIHNyYy0+bmRpbSA+PSAxLAorICAgbGVuKG1lbSkgPT0gc3JjLT5sZW4uICovCitzdGF0aWMgaW50CitidWZmZXJfdG9fY29udGlndW91cyhjaGFyICptZW0sIFB5X2J1ZmZlciAqc3JjLCBjaGFyIG9yZGVyKQoreworICAgIFB5X2J1ZmZlciBkZXN0OworICAgIFB5X3NzaXplX3QgKnN0cmlkZXM7CisgICAgaW50IHJldDsKKworICAgIGFzc2VydChzcmMtPm5kaW0gPj0gMSk7CisgICAgYXNzZXJ0KHNyYy0+c2hhcGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHNyYy0+c3RyaWRlcyAhPSBOVUxMKTsKKworICAgIHN0cmlkZXMgPSBQeU1lbV9NYWxsb2Moc3JjLT5uZGltICogKHNpemVvZiAqc3JjLT5zdHJpZGVzKSk7CisgICAgaWYgKHN0cmlkZXMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogaW5pdGlhbGl6ZSBkZXN0ICovCisgICAgZGVzdCA9ICpzcmM7CisgICAgZGVzdC5idWYgPSBtZW07CisgICAgLyogc2hhcGUgaXMgY29uc3RhbnQgYW5kIHNoYXJlZDogdGhlIGxvZ2ljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlCisgICAgICAgYXJyYXkgaXMgdW5hbHRlcmVkLiAqLworCisgICAgLyogVGhlIHBoeXNpY2FsIHJlcHJlc2VudGF0aW9uIGRldGVybWluZWQgYnkgc3RyaWRlcyAoYW5kIHBvc3NpYmx5CisgICAgICAgc3Vib2Zmc2V0cykgbWF5IGNoYW5nZS4gKi8KKyAgICBkZXN0LnN0cmlkZXMgPSBzdHJpZGVzOworICAgIGlmIChvcmRlciA9PSAnQycgfHwgb3JkZXIgPT0gJ0EnKSB7CisgICAgICAgIGluaXRfc3RyaWRlc19mcm9tX3NoYXBlKCZkZXN0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGluaXRfZm9ydHJhbl9zdHJpZGVzX2Zyb21fc2hhcGUoJmRlc3QpOworICAgIH0KKworICAgIGRlc3Quc3Vib2Zmc2V0cyA9IE5VTEw7CisKKyAgICByZXQgPSBjb3B5X2J1ZmZlcigmZGVzdCwgc3JjKTsKKworICAgIFB5TWVtX0ZyZWUoc3RyaWRlcyk7CisgICAgcmV0dXJuIHJldDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0cnVjdG9ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEluaXRpYWxpemUgdmFsdWVzIHRoYXQgYXJlIHNoYXJlZCB3aXRoIHRoZSBtYW5hZ2VkIGJ1ZmZlci4gKi8KK1B5X0xPQ0FMX0lOTElORSh2b2lkKQoraW5pdF9zaGFyZWRfdmFsdWVzKFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCit7CisgICAgZGVzdC0+b2JqID0gc3JjLT5vYmo7CisgICAgZGVzdC0+YnVmID0gc3JjLT5idWY7CisgICAgZGVzdC0+bGVuID0gc3JjLT5sZW47CisgICAgZGVzdC0+aXRlbXNpemUgPSBzcmMtPml0ZW1zaXplOworICAgIGRlc3QtPnJlYWRvbmx5ID0gc3JjLT5yZWFkb25seTsKKyAgICBkZXN0LT5mb3JtYXQgPSBzcmMtPmZvcm1hdCA/IHNyYy0+Zm9ybWF0IDogIkIiOworICAgIGRlc3QtPmludGVybmFsID0gc3JjLT5pbnRlcm5hbDsKK30KKworLyogQ29weSBzaGFwZSBhbmQgc3RyaWRlcy4gUmVjb25zdHJ1Y3QgbWlzc2luZyB2YWx1ZXMuICovCitzdGF0aWMgdm9pZAoraW5pdF9zaGFwZV9zdHJpZGVzKFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgaWYgKHNyYy0+bmRpbSA9PSAwKSB7CisgICAgICAgIGRlc3QtPnNoYXBlID0gTlVMTDsKKyAgICAgICAgZGVzdC0+c3RyaWRlcyA9IE5VTEw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHNyYy0+bmRpbSA9PSAxKSB7CisgICAgICAgIGRlc3QtPnNoYXBlWzBdID0gc3JjLT5zaGFwZSA/IHNyYy0+c2hhcGVbMF0gOiBzcmMtPmxlbiAvIHNyYy0+aXRlbXNpemU7CisgICAgICAgIGRlc3QtPnN0cmlkZXNbMF0gPSBzcmMtPnN0cmlkZXMgPyBzcmMtPnN0cmlkZXNbMF0gOiBzcmMtPml0ZW1zaXplOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNyYy0+bmRpbTsgaSsrKQorICAgICAgICBkZXN0LT5zaGFwZVtpXSA9IHNyYy0+c2hhcGVbaV07CisgICAgaWYgKHNyYy0+c3RyaWRlcykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3JjLT5uZGltOyBpKyspCisgICAgICAgICAgICBkZXN0LT5zdHJpZGVzW2ldID0gc3JjLT5zdHJpZGVzW2ldOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW5pdF9zdHJpZGVzX2Zyb21fc2hhcGUoZGVzdCk7CisgICAgfQorfQorCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK2luaXRfc3Vib2Zmc2V0cyhQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChzcmMtPnN1Ym9mZnNldHMgPT0gTlVMTCkgeworICAgICAgICBkZXN0LT5zdWJvZmZzZXRzID0gTlVMTDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgc3JjLT5uZGltOyBpKyspCisgICAgICAgIGRlc3QtPnN1Ym9mZnNldHNbaV0gPSBzcmMtPnN1Ym9mZnNldHNbaV07Cit9CisKKy8qIGxlbiA9IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgKi8KK1B5X0xPQ0FMX0lOTElORSh2b2lkKQoraW5pdF9sZW4oUHlfYnVmZmVyICp2aWV3KQoreworICAgIFB5X3NzaXplX3QgaSwgbGVuOworCisgICAgbGVuID0gMTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgdmlldy0+bmRpbTsgaSsrKQorICAgICAgICBsZW4gKj0gdmlldy0+c2hhcGVbaV07CisgICAgbGVuICo9IHZpZXctPml0ZW1zaXplOworCisgICAgdmlldy0+bGVuID0gbGVuOworfQorCisvKiBJbml0aWFsaXplIG1lbW9yeXZpZXcgYnVmZmVyIHByb3BlcnRpZXMuICovCitzdGF0aWMgdm9pZAoraW5pdF9mbGFncyhQeU1lbW9yeVZpZXdPYmplY3QgKm12KQoreworICAgIGNvbnN0IFB5X2J1ZmZlciAqdmlldyA9ICZtdi0+dmlldzsKKyAgICBpbnQgZmxhZ3MgPSAwOworCisgICAgc3dpdGNoICh2aWV3LT5uZGltKSB7CisgICAgY2FzZSAwOgorICAgICAgICBmbGFncyB8PSAoX1B5X01FTU9SWVZJRVdfU0NBTEFSfF9QeV9NRU1PUllWSUVXX0N8CisgICAgICAgICAgICAgICAgICBfUHlfTUVNT1JZVklFV19GT1JUUkFOKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgICBpZiAoTVZfQ09OVElHVU9VU19ORElNMSh2aWV3KSkKKyAgICAgICAgICAgIGZsYWdzIHw9IChfUHlfTUVNT1JZVklFV19DfF9QeV9NRU1PUllWSUVXX0ZPUlRSQU4pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKHZpZXcsICdDJykpCisgICAgICAgICAgICBmbGFncyB8PSBfUHlfTUVNT1JZVklFV19DOworICAgICAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKHZpZXcsICdGJykpCisgICAgICAgICAgICBmbGFncyB8PSBfUHlfTUVNT1JZVklFV19GT1JUUkFOOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAodmlldy0+c3Vib2Zmc2V0cykgeworICAgICAgICBmbGFncyB8PSBfUHlfTUVNT1JZVklFV19QSUw7CisgICAgICAgIGZsYWdzICY9IH4oX1B5X01FTU9SWVZJRVdfQ3xfUHlfTUVNT1JZVklFV19GT1JUUkFOKTsKKyAgICB9CisKKyAgICBtdi0+ZmxhZ3MgPSBmbGFnczsKK30KKworLyogQWxsb2NhdGUgYSBuZXcgbWVtb3J5dmlldyBhbmQgcGVyZm9ybSBiYXNpYyBpbml0aWFsaXphdGlvbi4gTmV3IG1lbW9yeXZpZXdzCisgICBhcmUgZXhjbHVzaXZlbHkgY3JlYXRlZCB0aHJvdWdoIHRoZSBtYnVmX2FkZCBmdW5jdGlvbnMuICovCitQeV9MT0NBTF9JTkxJTkUoUHlNZW1vcnlWaWV3T2JqZWN0ICopCittZW1vcnlfYWxsb2MoaW50IG5kaW0pCit7CisgICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdjsKKworICAgIG12ID0gKFB5TWVtb3J5Vmlld09iamVjdCAqKQorICAgICAgICBQeU9iamVjdF9HQ19OZXdWYXIoUHlNZW1vcnlWaWV3T2JqZWN0LCAmUHlNZW1vcnlWaWV3X1R5cGUsIDMqbmRpbSk7CisgICAgaWYgKG12ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbXYtPm1idWYgPSBOVUxMOworICAgIG12LT5oYXNoID0gLTE7CisgICAgbXYtPmZsYWdzID0gMDsKKyAgICBtdi0+ZXhwb3J0cyA9IDA7CisgICAgbXYtPnZpZXcubmRpbSA9IG5kaW07CisgICAgbXYtPnZpZXcuc2hhcGUgPSBtdi0+b2JfYXJyYXk7CisgICAgbXYtPnZpZXcuc3RyaWRlcyA9IG12LT5vYl9hcnJheSArIG5kaW07CisgICAgbXYtPnZpZXcuc3Vib2Zmc2V0cyA9IG12LT5vYl9hcnJheSArIDIgKiBuZGltOworICAgIG12LT53ZWFrcmVmbGlzdCA9IE5VTEw7CisKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0sobXYpOworICAgIHJldHVybiBtdjsKK30KKworLyoKKyAgIFJldHVybiBhIG5ldyBtZW1vcnl2aWV3IHRoYXQgaXMgcmVnaXN0ZXJlZCB3aXRoIG1idWYuIElmIHNyYyBpcyBOVUxMLAorICAgdXNlIG1idWYtPm1hc3RlciBhcyB0aGUgdW5kZXJseWluZyBidWZmZXIuIE90aGVyd2lzZSwgdXNlIHNyYy4KKworICAgVGhlIG5ldyBtZW1vcnl2aWV3IGhhcyBmdWxsIGJ1ZmZlciBpbmZvcm1hdGlvbjogc2hhcGUgYW5kIHN0cmlkZXMKKyAgIGFyZSBhbHdheXMgcHJlc2VudCwgc3Vib2Zmc2V0cyBhcyBuZWVkZWQuIEFycmF5cyBhcmUgY29waWVkIHRvCisgICB0aGUgbWVtb3J5dmlldydzIG9iX2FycmF5IGZpZWxkLgorICovCitzdGF0aWMgUHlPYmplY3QgKgorbWJ1Zl9hZGRfdmlldyhfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmLCBjb25zdCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12OworICAgIFB5X2J1ZmZlciAqZGVzdDsKKworICAgIGlmIChzcmMgPT0gTlVMTCkKKyAgICAgICAgc3JjID0gJm1idWYtPm1hc3RlcjsKKworICAgIGlmIChzcmMtPm5kaW0gPiBQeUJVRl9NQVhfTkRJTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBudW1iZXIgb2YgZGltZW5zaW9ucyBtdXN0IG5vdCBleGNlZWQgIgorICAgICAgICAgICAgU1RSSU5HSVpFKFB5QlVGX01BWF9ORElNKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG12ID0gbWVtb3J5X2FsbG9jKHNyYy0+bmRpbSk7CisgICAgaWYgKG12ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZGVzdCA9ICZtdi0+dmlldzsKKyAgICBpbml0X3NoYXJlZF92YWx1ZXMoZGVzdCwgc3JjKTsKKyAgICBpbml0X3NoYXBlX3N0cmlkZXMoZGVzdCwgc3JjKTsKKyAgICBpbml0X3N1Ym9mZnNldHMoZGVzdCwgc3JjKTsKKyAgICBpbml0X2ZsYWdzKG12KTsKKworICAgIG12LT5tYnVmID0gbWJ1ZjsKKyAgICBQeV9JTkNSRUYobWJ1Zik7CisgICAgbWJ1Zi0+ZXhwb3J0cysrOworCisgICAgcmV0dXJuIChQeU9iamVjdCAqKW12OworfQorCisvKiBSZWdpc3RlciBhbiBpbmNvbXBsZXRlIHZpZXc6IHNoYXBlLCBzdHJpZGVzLCBzdWJvZmZzZXRzIGFuZCBmbGFncyBzdGlsbAorICAgbmVlZCB0byBiZSBpbml0aWFsaXplZC4gVXNlICduZGltJyBpbnN0ZWFkIG9mIHNyYy0+bmRpbSB0byBkZXRlcm1pbmUgdGhlCisgICBzaXplIG9mIHRoZSBtZW1vcnl2aWV3J3Mgb2JfYXJyYXkuCisKKyAgIEFzc3VtcHRpb246IG5kaW0gPD0gUHlCVUZfTUFYX05ESU0uICovCitzdGF0aWMgUHlPYmplY3QgKgorbWJ1Zl9hZGRfaW5jb21wbGV0ZV92aWV3KF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWYsIGNvbnN0IFB5X2J1ZmZlciAqc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuZGltKQoreworICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXY7CisgICAgUHlfYnVmZmVyICpkZXN0OworCisgICAgaWYgKHNyYyA9PSBOVUxMKQorICAgICAgICBzcmMgPSAmbWJ1Zi0+bWFzdGVyOworCisgICAgYXNzZXJ0KG5kaW0gPD0gUHlCVUZfTUFYX05ESU0pOworCisgICAgbXYgPSBtZW1vcnlfYWxsb2MobmRpbSk7CisgICAgaWYgKG12ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZGVzdCA9ICZtdi0+dmlldzsKKyAgICBpbml0X3NoYXJlZF92YWx1ZXMoZGVzdCwgc3JjKTsKKworICAgIG12LT5tYnVmID0gbWJ1ZjsKKyAgICBQeV9JTkNSRUYobWJ1Zik7CisgICAgbWJ1Zi0+ZXhwb3J0cysrOworCisgICAgcmV0dXJuIChQeU9iamVjdCAqKW12OworfQorCisvKiBFeHBvc2UgYSByYXcgbWVtb3J5IGFyZWEgYXMgYSB2aWV3IG9mIGNvbnRpZ3VvdXMgYnl0ZXMuIGZsYWdzIGNhbiBiZQorICAgUHlCVUZfUkVBRCBvciBQeUJVRl9XUklURS4gdmlldy0+Zm9ybWF0IGlzIHNldCB0byAiQiIgKHVuc2lnbmVkIGJ5dGVzKS4KKyAgIFRoZSBtZW1vcnl2aWV3IGhhcyBjb21wbGV0ZSBidWZmZXIgaW5mb3JtYXRpb24uICovCitQeU9iamVjdCAqCitQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeShjaGFyICptZW0sIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKQoreworICAgIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWY7CisgICAgUHlPYmplY3QgKm12OworICAgIGludCByZWFkb25seTsKKworICAgIGFzc2VydChtZW0gIT0gTlVMTCk7CisgICAgYXNzZXJ0KGZsYWdzID09IFB5QlVGX1JFQUQgfHwgZmxhZ3MgPT0gUHlCVUZfV1JJVEUpOworCisgICAgbWJ1ZiA9IG1idWZfYWxsb2MoKTsKKyAgICBpZiAobWJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlYWRvbmx5ID0gKGZsYWdzID09IFB5QlVGX1dSSVRFKSA/IDAgOiAxOworICAgICh2b2lkKVB5QnVmZmVyX0ZpbGxJbmZvKCZtYnVmLT5tYXN0ZXIsIE5VTEwsIG1lbSwgc2l6ZSwgcmVhZG9ubHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCVUZfRlVMTF9STyk7CisKKyAgICBtdiA9IG1idWZfYWRkX3ZpZXcobWJ1ZiwgTlVMTCk7CisgICAgUHlfREVDUkVGKG1idWYpOworCisgICAgcmV0dXJuIG12OworfQorCisvKiBDcmVhdGUgYSBtZW1vcnl2aWV3IGZyb20gYSBnaXZlbiBQeV9idWZmZXIuIEZvciBzaW1wbGUgYnl0ZSB2aWV3cywKKyAgIFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgdGhlIG9ubHkgZW50cnkgcG9pbnQgdGhhdCBjYW4gY3JlYXRlIGEgbWFzdGVyIGJ1ZmZlcgorICAgd2l0aG91dCBmdWxsIGluZm9ybWF0aW9uLiBCZWNhdXNlIG9mIHRoaXMgZmFjdCBpbml0X3NoYXBlX3N0cmlkZXMoKQorICAgbXVzdCBiZSBhYmxlIHRvIHJlY29uc3RydWN0IG1pc3NpbmcgdmFsdWVzLiAgKi8KIFB5T2JqZWN0ICoKIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKFB5X2J1ZmZlciAqaW5mbykKIHsKLSAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12aWV3OworICAgIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWY7CisgICAgUHlPYmplY3QgKm12OwogCiAgICAgaWYgKGluZm8tPmJ1ZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgImNhbm5vdCBtYWtlIG1lbW9yeSB2aWV3IGZyb20gYSBidWZmZXIgd2l0aCBhIE5VTEwgZGF0YSBwb2ludGVyIik7CisgICAgICAgICAgICAiUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoKTogaW5mby0+YnVmIG11c3Qgbm90IGJlIE5VTEwiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG12aWV3ID0gKFB5TWVtb3J5Vmlld09iamVjdCAqKQotICAgICAgICBQeU9iamVjdF9HQ19OZXcoUHlNZW1vcnlWaWV3T2JqZWN0LCAmUHlNZW1vcnlWaWV3X1R5cGUpOwotICAgIGlmIChtdmlldyA9PSBOVUxMKQorCisgICAgbWJ1ZiA9IG1idWZfYWxsb2MoKTsKKyAgICBpZiAobWJ1ZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkdXBfYnVmZmVyKCZtdmlldy0+dmlldywgaW5mbyk7Ci0gICAgLyogTk9URTogbXZpZXctPnZpZXcub2JqIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBpbmNyZWYnZWQgYXMKLSAgICAgICBwYXJ0IG9mIFB5QnVmZmVyX0ZpbGxJbmZvKCkuICovCi0gICAgX1B5T2JqZWN0X0dDX1RSQUNLKG12aWV3KTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopbXZpZXc7CisKKyAgICAvKiBpbmZvLT5vYmogaXMgZWl0aGVyIE5VTEwgb3IgYSBib3Jyb3dlZCByZWZlcmVuY2UuIFRoaXMgcmVmZXJlbmNlCisgICAgICAgc2hvdWxkIG5vdCBiZSBkZWNyZW1lbnRlZCBpbiBQeUJ1ZmZlcl9SZWxlYXNlKCkuICovCisgICAgbWJ1Zi0+bWFzdGVyID0gKmluZm87CisgICAgbWJ1Zi0+bWFzdGVyLm9iaiA9IE5VTEw7CisKKyAgICBtdiA9IG1idWZfYWRkX3ZpZXcobWJ1ZiwgTlVMTCk7CisgICAgUHlfREVDUkVGKG1idWYpOworCisgICAgcmV0dXJuIG12OwogfQogCisvKiBDcmVhdGUgYSBtZW1vcnl2aWV3IGZyb20gYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgYnVmZmVyIHByb3RvY29sLgorICAgSWYgdGhlIG9iamVjdCBpcyBhIG1lbW9yeXZpZXcsIHRoZSBuZXcgbWVtb3J5dmlldyBtdXN0IGJlIHJlZ2lzdGVyZWQKKyAgIHdpdGggdGhlIHNhbWUgbWFuYWdlZCBidWZmZXIuIE90aGVyd2lzZSwgYSBuZXcgbWFuYWdlZCBidWZmZXIgaXMgY3JlYXRlZC4gKi8KIFB5T2JqZWN0ICoKLVB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0KFB5T2JqZWN0ICpiYXNlKQorUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QoUHlPYmplY3QgKnYpCiB7Ci0gICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdmlldzsKLSAgICBQeV9idWZmZXIgdmlldzsKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOwogCi0gICAgaWYgKCFQeU9iamVjdF9DaGVja0J1ZmZlcihiYXNlKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImNhbm5vdCBtYWtlIG1lbW9yeSB2aWV3IGJlY2F1c2Ugb2JqZWN0IGRvZXMgIgotICAgICAgICAgICAgIm5vdCBoYXZlIHRoZSBidWZmZXIgaW50ZXJmYWNlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeU1lbW9yeVZpZXdfQ2hlY2sodikpIHsKKyAgICAgICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdiA9IChQeU1lbW9yeVZpZXdPYmplY3QgKil2OworICAgICAgICBDSEVDS19SRUxFQVNFRChtdik7CisgICAgICAgIHJldHVybiBtYnVmX2FkZF92aWV3KG12LT5tYnVmLCAmbXYtPnZpZXcpOworICAgIH0KKyAgICBlbHNlIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih2KSkgeworICAgICAgICBQeU9iamVjdCAqcmV0OworICAgICAgICBtYnVmID0gKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKilfUHlNYW5hZ2VkQnVmZmVyX0Zyb21PYmplY3Qodik7CisgICAgICAgIGlmIChtYnVmID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0ID0gbWJ1Zl9hZGRfdmlldyhtYnVmLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKG1idWYpOworICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KIAotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYmFzZSwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBtdmlldyA9IChQeU1lbW9yeVZpZXdPYmplY3QgKilQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigmdmlldyk7Ci0gICAgaWYgKG12aWV3ID09IE5VTEwpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJldHVybiAoUHlPYmplY3QgKiltdmlldzsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAibWVtb3J5dmlldzogJS4yMDBzIG9iamVjdCBkb2VzIG5vdCBoYXZlIHRoZSBidWZmZXIgaW50ZXJmYWNlIiwKKyAgICAgICAgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qIENvcHkgdGhlIGZvcm1hdCBzdHJpbmcgZnJvbSBhIGJhc2Ugb2JqZWN0IHRoYXQgbWlnaHQgdmFuaXNoLiAqLworc3RhdGljIGludAorbWJ1Zl9jb3B5X2Zvcm1hdChfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmLCBjb25zdCBjaGFyICpmbXQpCit7CisgICAgaWYgKGZtdCAhPSBOVUxMKSB7CisgICAgICAgIGNoYXIgKmNwID0gUHlNZW1fTWFsbG9jKHN0cmxlbihmbXQpKzEpOworICAgICAgICBpZiAoY3AgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBtYnVmLT5tYXN0ZXIuZm9ybWF0ID0gc3RyY3B5KGNwLCBmbXQpOworICAgICAgICBtYnVmLT5mbGFncyB8PSBfUHlfTUFOQUdFRF9CVUZGRVJfRlJFRV9GT1JNQVQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgICBSZXR1cm4gYSBtZW1vcnl2aWV3IHRoYXQgaXMgYmFzZWQgb24gYSBjb250aWd1b3VzIGNvcHkgb2Ygc3JjLgorICAgQXNzdW1wdGlvbnM6IHNyYyBoYXMgUHlCVUZfRlVMTF9STyBpbmZvcm1hdGlvbiwgc3JjLT5uZGltID4gMC4KKworICAgT3duZXJzaGlwIHJ1bGVzOgorICAgICAxKSBBcyB1c3VhbCwgdGhlIHJldHVybmVkIG1lbW9yeXZpZXcgaGFzIGEgcHJpdmF0ZSBjb3B5CisgICAgICAgIG9mIHNyYy0+c2hhcGUsIHNyYy0+c3RyaWRlcyBhbmQgc3JjLT5zdWJvZmZzZXRzLgorICAgICAyKSBzcmMtPmZvcm1hdCBpcyBjb3BpZWQgdG8gdGhlIG1hc3RlciBidWZmZXIgYW5kIHJlbGVhc2VkCisgICAgICAgIGluIG1idWZfZGVhbGxvYygpLiBUaGUgcmVsZWFzZWJ1ZmZlcnByb2Mgb2YgdGhlIGJ5dGVzCisgICAgICAgIG9iamVjdCBpcyBOVUxMLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIgdGhhdCBtYnVmX3JlbGVhc2UoKQorICAgICAgICBwYXNzZXMgdGhlIGFsdGVyZWQgZm9ybWF0IHBvaW50ZXIgdG8gUHlCdWZmZXJfUmVsZWFzZSgpLgorKi8KK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfZnJvbV9jb250aWd1b3VzX2NvcHkoUHlfYnVmZmVyICpzcmMsIGNoYXIgb3JkZXIpCit7CisgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsKKyAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12OworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBQeV9idWZmZXIgKmRlc3Q7CisgICAgaW50IGk7CisKKyAgICBhc3NlcnQoc3JjLT5uZGltID4gMCk7CisgICAgYXNzZXJ0KHNyYy0+c2hhcGUgIT0gTlVMTCk7CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc3JjLT5sZW4pOworICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG1idWYgPSAoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqKV9QeU1hbmFnZWRCdWZmZXJfRnJvbU9iamVjdChieXRlcyk7CisgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICBpZiAobWJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChtYnVmX2NvcHlfZm9ybWF0KG1idWYsIHNyYy0+Zm9ybWF0KSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKG1idWYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtdiA9IChQeU1lbW9yeVZpZXdPYmplY3QgKiltYnVmX2FkZF9pbmNvbXBsZXRlX3ZpZXcobWJ1ZiwgTlVMTCwgc3JjLT5uZGltKTsKKyAgICBQeV9ERUNSRUYobWJ1Zik7CisgICAgaWYgKG12ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZGVzdCA9ICZtdi0+dmlldzsKKworICAgIC8qIHNoYXJlZCB2YWx1ZXMgYXJlIGluaXRpYWxpemVkIGNvcnJlY3RseSBleGNlcHQgZm9yIGl0ZW1zaXplICovCisgICAgZGVzdC0+aXRlbXNpemUgPSBzcmMtPml0ZW1zaXplOworCisgICAgLyogc2hhcGUgYW5kIHN0cmlkZXMgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgc3JjLT5uZGltOyBpKyspIHsKKyAgICAgICAgZGVzdC0+c2hhcGVbaV0gPSBzcmMtPnNoYXBlW2ldOworICAgIH0KKyAgICBpZiAob3JkZXIgPT0gJ0MnIHx8IG9yZGVyID09ICdBJykgeworICAgICAgICBpbml0X3N0cmlkZXNfZnJvbV9zaGFwZShkZXN0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGluaXRfZm9ydHJhbl9zdHJpZGVzX2Zyb21fc2hhcGUoZGVzdCk7CisgICAgfQorICAgIC8qIHN1Ym9mZnNldHMgKi8KKyAgICBkZXN0LT5zdWJvZmZzZXRzID0gTlVMTDsKKworICAgIC8qIGZsYWdzICovCisgICAgaW5pdF9mbGFncyhtdik7CisKKyAgICBpZiAoY29weV9idWZmZXIoZGVzdCwgc3JjKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKG12KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKW12OworfQorCisvKgorICAgUmV0dXJuIGEgbmV3IG1lbW9yeXZpZXcgb2JqZWN0IGJhc2VkIG9uIGEgY29udGlndW91cyBleHBvcnRlciB3aXRoCisgICBidWZmZXJ0eXBlPXtQeUJVRl9SRUFELCBQeUJVRl9XUklURX0gYW5kIG9yZGVyPXsnQycsICdGJ29ydHJhbiwgb3IgJ0Enbnl9LgorICAgVGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMgaXMgdGhlIHNhbWUKKyAgIChpLmUuIHRvbGlzdChpbnB1dCkgPT0gdG9saXN0KG91dHB1dCkpLCBidXQgdGhlIHBoeXNpY2FsIGxheW91dCBpbgorICAgbWVtb3J5IGNhbiBiZSBleHBsaWNpdGx5IGNob3Nlbi4KKyAKKyAgIEFzIHVzdWFsLCBpZiBidWZmZXJ0eXBlPVB5QlVGX1dSSVRFLCB0aGUgZXhwb3J0ZXIncyBidWZmZXIgbXVzdCBiZSB3cml0YWJsZSwKKyAgIG90aGVyd2lzZSBpdCBtYXkgYmUgd3JpdGFibGUgb3IgcmVhZC1vbmx5LgorCisgICBJZiB0aGUgZXhwb3J0ZXIgaXMgYWxyZWFkeSBjb250aWd1b3VzIHdpdGggdGhlIGRlc2lyZWQgdGFyZ2V0IG9yZGVyLAorICAgdGhlIG1lbW9yeXZpZXcgd2lsbCBiZSBkaXJlY3RseSBiYXNlZCBvbiB0aGUgZXhwb3J0ZXIuCisKKyAgIE90aGVyd2lzZSwgaWYgdGhlIGJ1ZmZlcnR5cGUgaXMgUHlCVUZfUkVBRCwgdGhlIG1lbW9yeXZpZXcgd2lsbCBiZQorICAgYmFzZWQgb24gYSBuZXcgYnl0ZXMgb2JqZWN0LiBJZiBvcmRlcj17J0MnLCAnQSdueX0sIHVzZSAnQycgb3JkZXIsCisgICAnRidvcnRyYW4gb3JkZXIgb3RoZXJ3aXNlLgorKi8KK1B5T2JqZWN0ICoKK1B5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpvYmosIGludCBidWZmZXJ0eXBlLCBjaGFyIG9yZGVyKQoreworICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXY7CisgICAgUHlPYmplY3QgKnJldDsKKyAgICBQeV9idWZmZXIgKnZpZXc7CisKKyAgICBhc3NlcnQoYnVmZmVydHlwZSA9PSBQeUJVRl9SRUFEIHx8IGJ1ZmZlcnR5cGUgPT0gUHlCVUZfV1JJVEUpOworICAgIGFzc2VydChvcmRlciA9PSAnQycgfHwgb3JkZXIgPT0gJ0YnIHx8IG9yZGVyID09ICdBJyk7CisKKyAgICBtdiA9IChQeU1lbW9yeVZpZXdPYmplY3QgKilQeU1lbW9yeVZpZXdfRnJvbU9iamVjdChvYmopOworICAgIGlmIChtdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHZpZXcgPSAmbXYtPnZpZXc7CisgICAgaWYgKGJ1ZmZlcnR5cGUgPT0gUHlCVUZfV1JJVEUgJiYgdmlldy0+cmVhZG9ubHkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgInVuZGVybHlpbmcgYnVmZmVyIGlzIG5vdCB3cml0YWJsZSIpOworICAgICAgICBQeV9ERUNSRUYobXYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKHZpZXcsIG9yZGVyKSkKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW12OworCisgICAgaWYgKGJ1ZmZlcnR5cGUgPT0gUHlCVUZfV1JJVEUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIndyaXRhYmxlIGNvbnRpZ3VvdXMgYnVmZmVyIHJlcXVlc3RlZCAiCisgICAgICAgICAgICAiZm9yIGEgbm9uLWNvbnRpZ3VvdXMgb2JqZWN0LiIpOworICAgICAgICBQeV9ERUNSRUYobXYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXQgPSBtZW1vcnlfZnJvbV9jb250aWd1b3VzX2NvcHkodmlldywgb3JkZXIpOworICAgIFB5X0RFQ1JFRihtdik7CisgICAgcmV0dXJuIHJldDsKK30KKworCiBzdGF0aWMgUHlPYmplY3QgKgogbWVtb3J5X25ldyhQeVR5cGVPYmplY3QgKnN1YnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCAqb2JqOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib2JqZWN0IiwgMH07CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvYmplY3QiLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPOm1lbW9yeXZpZXciLCBrd2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iaikpIHsKQEAgLTEzMSwyMDMgKzk1OSwxODM4IEBACiB9CiAKIAotc3RhdGljIHZvaWQKLV9zdHJpZGVkX2NvcHlfbmQoY2hhciAqZGVzdCwgY2hhciAqc3JjLCBpbnQgbmQsIFB5X3NzaXplX3QgKnNoYXBlLAotICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdHJpZGVzLCBQeV9zc2l6ZV90IGl0ZW1zaXplLCBjaGFyIGZvcnQpCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIFByZXZpb3VzbHkgaW4gYWJzdHJhY3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeV9idWZmZXIgdmlldzsKKyAgICBQeV9zc2l6ZV90IGFycmF5WzFdOworfSBQeV9idWZmZXJfZnVsbDsKKworaW50CitQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXModm9pZCAqYnVmLCBQeV9idWZmZXIgKnNyYywgUHlfc3NpemVfdCBsZW4sIGNoYXIgb3JkZXIpCiB7Ci0gICAgaW50IGs7Ci0gICAgUHlfc3NpemVfdCBvdXRzdHJpZGU7CisgICAgUHlfYnVmZmVyX2Z1bGwgKmZiID0gTlVMTDsKKyAgICBpbnQgcmV0OwogCi0gICAgaWYgKG5kPT0wKSB7Ci0gICAgICAgIG1lbWNweShkZXN0LCBzcmMsIGl0ZW1zaXplKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobmQgPT0gMSkgewotICAgICAgICBmb3IgKGsgPSAwOyBrPHNoYXBlWzBdOyBrKyspIHsKLSAgICAgICAgICAgIG1lbWNweShkZXN0LCBzcmMsIGl0ZW1zaXplKTsKLSAgICAgICAgICAgIGRlc3QgKz0gaXRlbXNpemU7Ci0gICAgICAgICAgICBzcmMgKz0gc3RyaWRlc1swXTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGZvcnQgPT0gJ0YnKSB7Ci0gICAgICAgICAgICAvKiBDb3B5IGZpcnN0IGRpbWVuc2lvbiBmaXJzdCwKLSAgICAgICAgICAgICAgIHNlY29uZCBkaW1lbnNpb24gc2Vjb25kLCBldGMuLi4KLSAgICAgICAgICAgICAgIFNldCB1cCB0aGUgcmVjdXJzaXZlIGxvb3AgYmFja3dhcmRzIHNvIHRoYXQgZmluYWwKLSAgICAgICAgICAgICAgIGRpbWVuc2lvbiBpcyBhY3R1YWxseSBjb3BpZWQgbGFzdC4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBvdXRzdHJpZGUgPSBpdGVtc2l6ZTsKLSAgICAgICAgICAgIGZvciAoaz0xOyBrPG5kLTE7aysrKSB7Ci0gICAgICAgICAgICAgICAgb3V0c3RyaWRlICo9IHNoYXBlW2tdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChrPTA7IGs8c2hhcGVbbmQtMV07IGsrKykgewotICAgICAgICAgICAgICAgIF9zdHJpZGVkX2NvcHlfbmQoZGVzdCwgc3JjLCBuZC0xLCBzaGFwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMsIGl0ZW1zaXplLCBmb3J0KTsKLSAgICAgICAgICAgICAgICBkZXN0ICs9IG91dHN0cmlkZTsKLSAgICAgICAgICAgICAgICBzcmMgKz0gc3RyaWRlc1tuZC0xXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIGFzc2VydChvcmRlciA9PSAnQycgfHwgb3JkZXIgPT0gJ0YnIHx8IG9yZGVyID09ICdBJyk7CiAKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBDb3B5IGxhc3QgZGltZW5zaW9uIGZpcnN0LAotICAgICAgICAgICAgICAgc2Vjb25kLXRvLWxhc3QgZGltZW5zaW9uIHNlY29uZCwgZXRjLgotICAgICAgICAgICAgICAgU2V0IHVwIHRoZSByZWN1cnNpb24gc28gdGhhdCB0aGUKLSAgICAgICAgICAgICAgIGZpcnN0IGRpbWVuc2lvbiBpcyBjb3BpZWQgbGFzdAotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIG91dHN0cmlkZSA9IGl0ZW1zaXplOwotICAgICAgICAgICAgZm9yIChrPTE7IGsgPCBuZDsgaysrKSB7Ci0gICAgICAgICAgICAgICAgb3V0c3RyaWRlICo9IHNoYXBlW2tdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChrPTA7IGs8c2hhcGVbMF07IGsrKykgewotICAgICAgICAgICAgICAgIF9zdHJpZGVkX2NvcHlfbmQoZGVzdCwgc3JjLCBuZC0xLCBzaGFwZSsxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcysxLCBpdGVtc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcnQpOwotICAgICAgICAgICAgICAgIGRlc3QgKz0gb3V0c3RyaWRlOwotICAgICAgICAgICAgICAgIHNyYyArPSBzdHJpZGVzWzBdOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgaWYgKGxlbiAhPSBzcmMtPmxlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXM6IGxlbiAhPSB2aWV3LT5sZW4iKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXR1cm47CisKKyAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKHNyYywgb3JkZXIpKSB7CisgICAgICAgIG1lbWNweSgoY2hhciAqKWJ1Ziwgc3JjLT5idWYsIGxlbik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIGJ1ZmZlcl90b19jb250aWd1b3VzKCkgYXNzdW1lcyBQeUJVRl9GVUxMICovCisgICAgZmIgPSBQeU1lbV9NYWxsb2Moc2l6ZW9mICpmYiArIDMgKiBzcmMtPm5kaW0gKiAoc2l6ZW9mICpmYi0+YXJyYXkpKTsKKyAgICBpZiAoZmIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGZiLT52aWV3Lm5kaW0gPSBzcmMtPm5kaW07CisgICAgZmItPnZpZXcuc2hhcGUgPSBmYi0+YXJyYXk7CisgICAgZmItPnZpZXcuc3RyaWRlcyA9IGZiLT5hcnJheSArIHNyYy0+bmRpbTsKKyAgICBmYi0+dmlldy5zdWJvZmZzZXRzID0gZmItPmFycmF5ICsgMiAqIHNyYy0+bmRpbTsKKworICAgIGluaXRfc2hhcmVkX3ZhbHVlcygmZmItPnZpZXcsIHNyYyk7CisgICAgaW5pdF9zaGFwZV9zdHJpZGVzKCZmYi0+dmlldywgc3JjKTsKKyAgICBpbml0X3N1Ym9mZnNldHMoJmZiLT52aWV3LCBzcmMpOworCisgICAgc3JjID0gJmZiLT52aWV3OworCisgICAgcmV0ID0gYnVmZmVyX3RvX2NvbnRpZ3VvdXMoYnVmLCBzcmMsIG9yZGVyKTsKKyAgICBQeU1lbV9GcmVlKGZiKTsKKyAgICByZXR1cm4gcmV0OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlL0dDIG1hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogSW5mb3JtIHRoZSBtYW5hZ2VkIGJ1ZmZlciB0aGF0IHRoaXMgcGFydGljdWxhciBtZW1vcnl2aWV3IHdpbGwgbm90IGFjY2VzcworICAgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGFnYWluLiBJZiBubyBvdGhlciBtZW1vcnl2aWV3cyBhcmUgcmVnaXN0ZXJlZCB3aXRoCisgICB0aGUgbWFuYWdlZCBidWZmZXIsIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBpcyByZWxlYXNlZCBpbnN0YW50bHkgYW5kCisgICBtYXJrZWQgYXMgaW5hY2Nlc3NpYmxlIGZvciBib3RoIHRoZSBtZW1vcnl2aWV3IGFuZCB0aGUgbWFuYWdlZCBidWZmZXIuCisKKyAgIFRoaXMgZnVuY3Rpb24gZmFpbHMgaWYgdGhlIG1lbW9yeXZpZXcgaXRzZWxmIGhhcyBleHBvcnRlZCBidWZmZXJzLiAqLworc3RhdGljIGludAorX21lbW9yeV9yZWxlYXNlKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+ZmxhZ3MgJiBfUHlfTUVNT1JZVklFV19SRUxFQVNFRCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoc2VsZi0+ZXhwb3J0cyA9PSAwKSB7CisgICAgICAgIHNlbGYtPmZsYWdzIHw9IF9QeV9NRU1PUllWSUVXX1JFTEVBU0VEOworICAgICAgICBhc3NlcnQoc2VsZi0+bWJ1Zi0+ZXhwb3J0cyA+IDApOworICAgICAgICBpZiAoLS1zZWxmLT5tYnVmLT5leHBvcnRzID09IDApCisgICAgICAgICAgICBtYnVmX3JlbGVhc2Uoc2VsZi0+bWJ1Zik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoc2VsZi0+ZXhwb3J0cyA+IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXcgaGFzICV6ZCBleHBvcnRlZCBidWZmZXIlcyIsIHNlbGYtPmV4cG9ydHMsCisgICAgICAgICAgICBzZWxmLT5leHBvcnRzPT0xID8gIiIgOiAicyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlfRmF0YWxFcnJvcigiX21lbW9yeV9yZWxlYXNlKCk6IG5lZ2F0aXZlIGV4cG9ydCBjb3VudCIpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9yZWxlYXNlKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBpZiAoX21lbW9yeV9yZWxlYXNlKHNlbGYpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyB2b2lkCittZW1vcnlfZGVhbGxvYyhQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgYXNzZXJ0KHNlbGYtPmV4cG9ydHMgPT0gMCk7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgKHZvaWQpX21lbW9yeV9yZWxlYXNlKHNlbGYpOworICAgIFB5X0NMRUFSKHNlbGYtPm1idWYpOworICAgIGlmIChzZWxmLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQorICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBzZWxmKTsKKyAgICBQeU9iamVjdF9HQ19EZWwoc2VsZik7CiB9CiAKIHN0YXRpYyBpbnQKLV9pbmRpcmVjdF9jb3B5X25kKGNoYXIgKmRlc3QsIFB5X2J1ZmZlciAqdmlldywgY2hhciBmb3J0KQorbWVtb3J5X3RyYXZlcnNlKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCAqaW5kaWNlczsKLSAgICBpbnQgazsKLSAgICBQeV9zc2l6ZV90IGVsZW1lbnRzOwotICAgIGNoYXIgKnB0cjsKLSAgICB2b2lkICgqZnVuYykoaW50LCBQeV9zc2l6ZV90ICosIGNvbnN0IFB5X3NzaXplX3QgKik7CisgICAgUHlfVklTSVQoc2VsZi0+bWJ1Zik7CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBpZiAodmlldy0+bmRpbSA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X3NzaXplX3QpKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiAtMTsKK3N0YXRpYyBpbnQKK21lbW9yeV9jbGVhcihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgKHZvaWQpX21lbW9yeV9yZWxlYXNlKHNlbGYpOworICAgIFB5X0NMRUFSKHNlbGYtPm1idWYpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfZXhpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIG1lbW9yeV9yZWxlYXNlKChQeU1lbW9yeVZpZXdPYmplY3QgKilzZWxmLCBOVUxMKTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIENhc3RpbmcgZm9ybWF0IGFuZCBzaGFwZSAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgSVNfQllURV9GT1JNQVQoZikgKGYgPT0gJ2InIHx8IGYgPT0gJ0InIHx8IGYgPT0gJ2MnKQorCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK2dldF9uYXRpdmVfZm10Y2hhcihjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKKworICAgIGlmIChmbXRbMF0gPT0gJ0AnKSBmbXQrKzsKKworICAgIHN3aXRjaCAoZm10WzBdKSB7CisgICAgY2FzZSAnYyc6IGNhc2UgJ2InOiBjYXNlICdCJzogc2l6ZSA9IHNpemVvZihjaGFyKTsgYnJlYWs7CisgICAgY2FzZSAnaCc6IGNhc2UgJ0gnOiBzaXplID0gc2l6ZW9mKHNob3J0KTsgYnJlYWs7CisgICAgY2FzZSAnaSc6IGNhc2UgJ0knOiBzaXplID0gc2l6ZW9mKGludCk7IGJyZWFrOworICAgIGNhc2UgJ2wnOiBjYXNlICdMJzogc2l6ZSA9IHNpemVvZihsb25nKTsgYnJlYWs7CisgICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgY2FzZSAncSc6IGNhc2UgJ1EnOiBzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7IGJyZWFrOworICAgICNlbmRpZgorICAgIGNhc2UgJ24nOiBjYXNlICdOJzogc2l6ZSA9IHNpemVvZihQeV9zc2l6ZV90KTsgYnJlYWs7CisgICAgY2FzZSAnZic6IHNpemUgPSBzaXplb2YoZmxvYXQpOyBicmVhazsKKyAgICBjYXNlICdkJzogc2l6ZSA9IHNpemVvZihkb3VibGUpOyBicmVhazsKKyAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAorICAgIGNhc2UgJz8nOiBzaXplID0gc2l6ZW9mKF9Cb29sKTsgYnJlYWs7CisgICAgI2Vsc2UKKyAgICBjYXNlICc/Jzogc2l6ZSA9IHNpemVvZihjaGFyKTsgYnJlYWs7CisgICAgI2VuZGlmCisgICAgY2FzZSAnUCc6IHNpemUgPSBzaXplb2Yodm9pZCAqKTsgYnJlYWs7CiAgICAgfQogCi0gICAgaW5kaWNlcyA9IChQeV9zc2l6ZV90ICopUHlNZW1fTWFsbG9jKHNpemVvZihQeV9zc2l6ZV90KSp2aWV3LT5uZGltKTsKLSAgICBpZiAoaW5kaWNlcyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZm9yIChrPTA7IGs8dmlldy0+bmRpbTtrKyspIHsKLSAgICAgICAgaW5kaWNlc1trXSA9IDA7CisgICAgaWYgKHNpemUgPiAwICYmIGZtdFsxXSA9PSAnXDAnKSB7CisgICAgICAgICpyZXN1bHQgPSBmbXRbMF07CisgICAgICAgIHJldHVybiBzaXplOwogICAgIH0KIAotICAgIGVsZW1lbnRzID0gMTsKLSAgICBmb3IgKGs9MDsgazx2aWV3LT5uZGltOyBrKyspIHsKLSAgICAgICAgZWxlbWVudHMgKj0gdmlldy0+c2hhcGVba107CisgICAgcmV0dXJuIC0xOworfQorCisvKiBDYXN0IGEgbWVtb3J5dmlldydzIGRhdGEgdHlwZSB0byAnZm9ybWF0Jy4gVGhlIGlucHV0IGFycmF5IG11c3QgYmUKKyAgIEMtY29udGlndW91cy4gQXQgbGVhc3Qgb25lIG9mIGlucHV0LWZvcm1hdCwgb3V0cHV0LWZvcm1hdCBtdXN0IGhhdmUKKyAgIGJ5dGUgc2l6ZS4gVGhlIG91dHB1dCBhcnJheSBpcyAxLUQsIHdpdGggdGhlIHNhbWUgYnl0ZSBsZW5ndGggYXMgdGhlCisgICBpbnB1dCBhcnJheS4gVGh1cywgdmlldy0+bGVuIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgbmV3IGl0ZW1zaXplLiAqLworc3RhdGljIGludAorY2FzdF90b18xRChQeU1lbW9yeVZpZXdPYmplY3QgKm12LCBQeU9iamVjdCAqZm9ybWF0KQoreworICAgIFB5X2J1ZmZlciAqdmlldyA9ICZtdi0+dmlldzsKKyAgICBQeU9iamVjdCAqYXNjaWlmbXQ7CisgICAgY2hhciBzcmNjaGFyLCBkZXN0Y2hhcjsKKyAgICBQeV9zc2l6ZV90IGl0ZW1zaXplOworICAgIGludCByZXQgPSAtMTsKKworICAgIGFzc2VydCh2aWV3LT5uZGltID49IDEpOworICAgIGFzc2VydChQeV9TSVpFKG12KSA9PSAzKnZpZXctPm5kaW0pOworICAgIGFzc2VydCh2aWV3LT5zaGFwZSA9PSBtdi0+b2JfYXJyYXkpOworICAgIGFzc2VydCh2aWV3LT5zdHJpZGVzID09IG12LT5vYl9hcnJheSArIHZpZXctPm5kaW0pOworICAgIGFzc2VydCh2aWV3LT5zdWJvZmZzZXRzID09IG12LT5vYl9hcnJheSArIDIqdmlldy0+bmRpbSk7CisKKyAgICBpZiAoZ2V0X25hdGl2ZV9mbXRjaGFyKCZzcmNjaGFyLCB2aWV3LT5mb3JtYXQpIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBzb3VyY2UgZm9ybWF0IG11c3QgYmUgYSBuYXRpdmUgc2luZ2xlIGNoYXJhY3RlciAiCisgICAgICAgICAgICAiZm9ybWF0IHByZWZpeGVkIHdpdGggYW4gb3B0aW9uYWwgJ0AnIik7CisgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQotICAgIGlmIChmb3J0ID09ICdGJykgewotICAgICAgICBmdW5jID0gX1B5X2FkZF9vbmVfdG9faW5kZXhfRjsKKworICAgIGFzY2lpZm10ID0gUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoZm9ybWF0KTsKKyAgICBpZiAoYXNjaWlmbXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIGl0ZW1zaXplID0gZ2V0X25hdGl2ZV9mbXRjaGFyKCZkZXN0Y2hhciwgUHlCeXRlc19BU19TVFJJTkcoYXNjaWlmbXQpKTsKKyAgICBpZiAoaXRlbXNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IGRlc3RpbmF0aW9uIGZvcm1hdCBtdXN0IGJlIGEgbmF0aXZlIHNpbmdsZSAiCisgICAgICAgICAgICAiY2hhcmFjdGVyIGZvcm1hdCBwcmVmaXhlZCB3aXRoIGFuIG9wdGlvbmFsICdAJyIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBpZiAoIUlTX0JZVEVfRk9STUFUKHNyY2NoYXIpICYmICFJU19CWVRFX0ZPUk1BVChkZXN0Y2hhcikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBjYW5ub3QgY2FzdCBiZXR3ZWVuIHR3byBub24tYnl0ZSBmb3JtYXRzIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBpZiAodmlldy0+bGVuICUgaXRlbXNpemUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBsZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2YgaXRlbXNpemUiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgc3RybmNweShtdi0+Zm9ybWF0LCBQeUJ5dGVzX0FTX1NUUklORyhhc2NpaWZtdCksCisgICAgICAgICAgICBfUHlfTUVNT1JZVklFV19NQVhfRk9STUFUKTsKKyAgICBtdi0+Zm9ybWF0W19QeV9NRU1PUllWSUVXX01BWF9GT1JNQVQtMV0gPSAnXDAnOworICAgIHZpZXctPmZvcm1hdCA9IG12LT5mb3JtYXQ7CisgICAgdmlldy0+aXRlbXNpemUgPSBpdGVtc2l6ZTsKKworICAgIHZpZXctPm5kaW0gPSAxOworICAgIHZpZXctPnNoYXBlWzBdID0gdmlldy0+bGVuIC8gdmlldy0+aXRlbXNpemU7CisgICAgdmlldy0+c3RyaWRlc1swXSA9IHZpZXctPml0ZW1zaXplOworICAgIHZpZXctPnN1Ym9mZnNldHMgPSBOVUxMOworCisgICAgaW5pdF9mbGFncyhtdik7CisgCisgICAgcmV0ID0gMDsKKworb3V0OgorICAgIFB5X0RFQ1JFRihhc2NpaWZtdCk7CisgICAgcmV0dXJuIHJldDsKK30KKworLyogVGhlIG1lbW9yeXZpZXcgbXVzdCBoYXZlIHNwYWNlIGZvciAzKmxlbihzZXEpIGVsZW1lbnRzLiAqLworc3RhdGljIFB5X3NzaXplX3QKK2NvcHlfc2hhcGUoUHlfc3NpemVfdCAqc2hhcGUsIGNvbnN0IFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgbmRpbSwKKyAgICAgICAgICAgUHlfc3NpemVfdCBpdGVtc2l6ZSkKK3sKKyAgICBQeV9zc2l6ZV90IHgsIGk7CisgICAgUHlfc3NpemVfdCBsZW4gPSBpdGVtc2l6ZTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBuZGltOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzZXEsIGkpOworICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh0bXApKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3LmNhc3QoKTogZWxlbWVudHMgb2Ygc2hhcGUgbXVzdCBiZSBpbnRlZ2VycyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHRtcCk7CisgICAgICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoeCA8PSAwKSB7CisgICAgICAgICAgICAvKiBJbiBnZW5lcmFsIGVsZW1lbnRzIG9mIHNoYXBlIG1heSBiZSAwLCBidXQgbm90IGZvciBjYXN0aW5nLiAqLworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXcuY2FzdCgpOiBlbGVtZW50cyBvZiBzaGFwZSBtdXN0IGJlIGludGVnZXJzID4gMCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmICh4ID4gUFlfU1NJWkVfVF9NQVggLyBsZW4pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3LmNhc3QoKTogcHJvZHVjdChzaGFwZSkgPiBTU0laRV9NQVgiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBsZW4gKj0geDsKKyAgICAgICAgc2hhcGVbaV0gPSB4OworICAgIH0KKworICAgIHJldHVybiBsZW47Cit9CisKKy8qIENhc3QgYSAxLUQgYXJyYXkgdG8gYSBuZXcgc2hhcGUuIFRoZSByZXN1bHQgYXJyYXkgd2lsbCBiZSBDLWNvbnRpZ3VvdXMuCisgICBJZiB0aGUgcmVzdWx0IGFycmF5IGRvZXMgbm90IGhhdmUgZXhhY3RseSB0aGUgc2FtZSBieXRlIGxlbmd0aCBhcyB0aGUKKyAgIGlucHV0IGFycmF5LCByYWlzZSBWYWx1ZUVycm9yLiAqLworc3RhdGljIGludAorY2FzdF90b19ORChQeU1lbW9yeVZpZXdPYmplY3QgKm12LCBjb25zdCBQeU9iamVjdCAqc2hhcGUsIGludCBuZGltKQoreworICAgIFB5X2J1ZmZlciAqdmlldyA9ICZtdi0+dmlldzsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKworICAgIGFzc2VydCh2aWV3LT5uZGltID09IDEpOyAvKiBuZGltIGZyb20gY2FzdF90b18xRCgpICovCisgICAgYXNzZXJ0KFB5X1NJWkUobXYpID09IDMqKG5kaW09PTA/MTpuZGltKSk7IC8qIG5kaW0gb2YgcmVzdWx0IGFycmF5ICovCisgICAgYXNzZXJ0KHZpZXctPnNoYXBlID09IG12LT5vYl9hcnJheSk7CisgICAgYXNzZXJ0KHZpZXctPnN0cmlkZXMgPT0gbXYtPm9iX2FycmF5ICsgKG5kaW09PTA/MTpuZGltKSk7CisgICAgYXNzZXJ0KHZpZXctPnN1Ym9mZnNldHMgPT0gTlVMTCk7CisKKyAgICB2aWV3LT5uZGltID0gbmRpbTsKKyAgICBpZiAodmlldy0+bmRpbSA9PSAwKSB7CisgICAgICAgIHZpZXctPnNoYXBlID0gTlVMTDsKKyAgICAgICAgdmlldy0+c3RyaWRlcyA9IE5VTEw7CisgICAgICAgIGxlbiA9IHZpZXctPml0ZW1zaXplOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZnVuYyA9IF9QeV9hZGRfb25lX3RvX2luZGV4X0M7Ci0gICAgfQotICAgIHdoaWxlIChlbGVtZW50cy0tKSB7Ci0gICAgICAgIGZ1bmModmlldy0+bmRpbSwgaW5kaWNlcywgdmlldy0+c2hhcGUpOwotICAgICAgICBwdHIgPSBQeUJ1ZmZlcl9HZXRQb2ludGVyKHZpZXcsIGluZGljZXMpOwotICAgICAgICBtZW1jcHkoZGVzdCwgcHRyLCB2aWV3LT5pdGVtc2l6ZSk7Ci0gICAgICAgIGRlc3QgKz0gdmlldy0+aXRlbXNpemU7CisgICAgICAgIGxlbiA9IGNvcHlfc2hhcGUodmlldy0+c2hhcGUsIHNoYXBlLCBuZGltLCB2aWV3LT5pdGVtc2l6ZSk7CisgICAgICAgIGlmIChsZW4gPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpbml0X3N0cmlkZXNfZnJvbV9zaGFwZSh2aWV3KTsKICAgICB9CiAKLSAgICBQeU1lbV9GcmVlKGluZGljZXMpOworICAgIGlmICh2aWV3LT5sZW4gIT0gbGVuKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSAhPSBidWZmZXIgc2l6ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaW5pdF9mbGFncyhtdik7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAoremVyb19pbl9zaGFwZShQeU1lbW9yeVZpZXdPYmplY3QgKm12KQoreworICAgIFB5X2J1ZmZlciAqdmlldyA9ICZtdi0+dmlldzsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgdmlldy0+bmRpbTsgaSsrKQorICAgICAgICBpZiAodmlldy0+c2hhcGVbaV0gPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAxOworCiAgICAgcmV0dXJuIDA7CiB9CiAKIC8qCi0gICBHZXQgYSB0aGUgZGF0YSBmcm9tIGFuIG9iamVjdCBhcyBhIGNvbnRpZ3VvdXMgY2h1bmsgb2YgbWVtb3J5IChpbgotICAgZWl0aGVyICdDJyBvciAnRidvcnRyYW4gb3JkZXIpIGV2ZW4gaWYgaXQgbWVhbnMgY29weWluZyBpdCBpbnRvIGEKLSAgIHNlcGFyYXRlIG1lbW9yeSBhcmVhLgorICAgQ2FzdCBhIGNvcHkgb2YgJ3NlbGYnIHRvIGEgZGlmZmVyZW50IHZpZXcuIFRoZSBpbnB1dCB2aWV3IG11c3QKKyAgIGJlIEMtY29udGlndW91cy4gVGhlIGZ1bmN0aW9uIGFsd2F5cyBjYXN0cyB0aGUgaW5wdXQgdmlldyB0byBhCisgICAxLUQgb3V0cHV0IGFjY29yZGluZyB0byAnZm9ybWF0Jy4gQXQgbGVhc3Qgb25lIG9mIGlucHV0LWZvcm1hdCwKKyAgIG91dHB1dC1mb3JtYXQgbXVzdCBoYXZlIGJ5dGUgc2l6ZS4KIAotICAgUmV0dXJucyBhIG5ldyByZWZlcmVuY2UgdG8gYSBNZW1vcnkgdmlldyBvYmplY3QuICBJZiBubyBjb3B5IGlzIG5lZWRlZCwKLSAgIHRoZSBtZW1vcnkgdmlldyBvYmplY3QgcG9pbnRzIHRvIHRoZSBvcmlnaW5hbCBtZW1vcnkgYW5kIGhvbGRzIGEKLSAgIGxvY2sgb24gdGhlIG9yaWdpbmFsLiAgSWYgYSBjb3B5IGlzIG5lZWRlZCwgdGhlbiB0aGUgbWVtb3J5IHZpZXcgb2JqZWN0Ci0gICBwb2ludHMgdG8gYSBicmFuZC1uZXcgQnl0ZXMgb2JqZWN0IChhbmQgaG9sZHMgYSBtZW1vcnkgbG9jayBvbiBpdCkuCisgICBJZiAnc2hhcGUnIGlzIGdpdmVuLCB0aGUgMS1EIHZpZXcgZnJvbSB0aGUgcHJldmlvdXMgc3RlcCB3aWxsCisgICBiZSBjYXN0IHRvIGEgQy1jb250aWd1b3VzIHZpZXcgd2l0aCBuZXcgc2hhcGUgYW5kIHN0cmlkZXMuCiAKLSAgIGJ1ZmZlcnR5cGUKLQotICAgUHlCVUZfUkVBRCAgYnVmZmVyIG9ubHkgbmVlZHMgdG8gYmUgcmVhZC1vbmx5Ci0gICBQeUJVRl9XUklURSBidWZmZXIgbmVlZHMgdG8gYmUgd3JpdGFibGUgKGdpdmUgZXJyb3IgaWYgbm90IGNvbnRpZ3VvdXMpCi0gICBQeUJVRl9TSEFET1cgYnVmZmVyIG5lZWRzIHRvIGJlIHdyaXRhYmxlIHNvIHNoYWRvdyBpdCB3aXRoCi0gICAgICAgICAgICAgICAgYSBjb250aWd1b3VzIGJ1ZmZlciBpZiBpdCBpcyBub3QuIFRoZSB2aWV3IHdpbGwgcG9pbnQgdG8KLSAgICAgICAgICAgICAgICB0aGUgc2hhZG93IGJ1ZmZlciB3aGljaCBjYW4gYmUgd3JpdHRlbiB0byBhbmQgdGhlbgotICAgICAgICAgICAgICAgIHdpbGwgYmUgY29waWVkIGJhY2sgaW50byB0aGUgb3RoZXIgYnVmZmVyIHdoZW4gdGhlIG1lbW9yeQotICAgICAgICAgICAgICAgIHZpZXcgaXMgZGUtYWxsb2NhdGVkLiAgV2hpbGUgdGhlIHNoYWRvdyBidWZmZXIgaXMKLSAgICAgICAgICAgICAgICBiZWluZyB1c2VkLCBpdCB3aWxsIGhhdmUgYW4gZXhjbHVzaXZlIHdyaXRlIGxvY2sgb24KLSAgICAgICAgICAgICAgICB0aGUgb3JpZ2luYWwgYnVmZmVyLgotICovCi0KLVB5T2JqZWN0ICoKLVB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpvYmosIGludCBidWZmZXJ0eXBlLCBjaGFyIGZvcnQpCisgICBBbGwgY2FzdHMgbXVzdCByZXN1bHQgaW4gdmlld3MgdGhhdCB3aWxsIGhhdmUgdGhlIGV4YWN0IGJ5dGUKKyAgIHNpemUgb2YgdGhlIG9yaWdpbmFsIGlucHV0LiBPdGhlcndpc2UsIGFuIGVycm9yIGlzIHJhaXNlZC4KKyovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2Nhc3QoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptZW07Ci0gICAgUHlPYmplY3QgKmJ5dGVzOwotICAgIFB5X2J1ZmZlciAqdmlldzsKLSAgICBpbnQgZmxhZ3M7Ci0gICAgY2hhciAqZGVzdDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZvcm1hdCIsICJzaGFwZSIsIE5VTEx9OworICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXYgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzaGFwZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZvcm1hdDsKKyAgICBQeV9zc2l6ZV90IG5kaW0gPSAxOwogCi0gICAgaWYgKCFQeU9iamVjdF9DaGVja0J1ZmZlcihvYmopKSB7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICZzaGFwZSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGZvcm1hdCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYnVmZmVyIGludGVyZmFjZSIpOworICAgICAgICAgICAgIm1lbW9yeXZpZXc6IGZvcm1hdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIG1lbSA9IFB5T2JqZWN0X0dDX05ldyhQeU1lbW9yeVZpZXdPYmplY3QsICZQeU1lbW9yeVZpZXdfVHlwZSk7Ci0gICAgaWYgKG1lbSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHZpZXcgPSAmbWVtLT52aWV3OwotICAgIGZsYWdzID0gUHlCVUZfRlVMTF9STzsKLSAgICBzd2l0Y2goYnVmZmVydHlwZSkgewotICAgIGNhc2UgUHlCVUZfV1JJVEU6Ci0gICAgICAgIGZsYWdzID0gUHlCVUZfRlVMTDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosIHZpZXcsIGZsYWdzKSAhPSAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihtZW0pOworICAgIGlmICghTVZfQ19DT05USUdVT1VTKHNlbGYtPmZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IGNhc3RzIGFyZSByZXN0cmljdGVkIHRvIEMtY29udGlndW91cyB2aWV3cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKHZpZXcsIGZvcnQpKSB7Ci0gICAgICAgIC8qIG5vIGNvcHkgbmVlZGVkICovCi0gICAgICAgIF9QeU9iamVjdF9HQ19UUkFDSyhtZW0pOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopbWVtOwotICAgIH0KLSAgICAvKiBvdGhlcndpc2UgYSBjb3B5IGlzIG5lZWRlZCAqLwotICAgIGlmIChidWZmZXJ0eXBlID09IFB5QlVGX1dSSVRFKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihtZW0pOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAid3JpdGFibGUgY29udGlndW91cyBidWZmZXIgcmVxdWVzdGVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgYSBub24tY29udGlndW91c29iamVjdC4iKTsKKyAgICBpZiAoemVyb19pbl9zaGFwZShzZWxmKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IGNhbm5vdCBjYXN0IHZpZXcgd2l0aCB6ZXJvcyBpbiBzaGFwZSBvciBzdHJpZGVzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgdmlldy0+bGVuKTsKLSAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYobWVtKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGRlc3QgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7Ci0gICAgLyogZGlmZmVyZW50IGNvcHlpbmcgc3RyYXRlZ3kgZGVwZW5kaW5nIG9uIHdoZXRoZXIKLSAgICAgICBvciBub3QgYW55IHBvaW50ZXIgZGUtcmVmZXJlbmNpbmcgaXMgbmVlZGVkCi0gICAgKi8KLSAgICAvKiBzdHJpZGVkIG9yIGluLWRpcmVjdCBjb3B5ICovCi0gICAgaWYgKHZpZXctPnN1Ym9mZnNldHM9PU5VTEwpIHsKLSAgICAgICAgX3N0cmlkZWRfY29weV9uZChkZXN0LCB2aWV3LT5idWYsIHZpZXctPm5kaW0sIHZpZXctPnNoYXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXctPnN0cmlkZXMsIHZpZXctPml0ZW1zaXplLCBmb3J0KTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChfaW5kaXJlY3RfY29weV9uZChkZXN0LCB2aWV3LCBmb3J0KSA8IDApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobWVtKTsKKyAgICBpZiAoc2hhcGUpIHsKKyAgICAgICAgQ0hFQ0tfTElTVF9PUl9UVVBMRShzaGFwZSkKKyAgICAgICAgbmRpbSA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzaGFwZSk7CisgICAgICAgIGlmIChuZGltID4gUHlCVUZfTUFYX05ESU0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3OiBudW1iZXIgb2YgZGltZW5zaW9ucyBtdXN0IG5vdCBleGNlZWQgIgorICAgICAgICAgICAgICAgIFNUUklOR0laRShQeUJVRl9NQVhfTkRJTSkpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSh2aWV3KTsgIC8qIFhYWCA/ICovCisgICAgICAgIGlmIChzZWxmLT52aWV3Lm5kaW0gIT0gMSAmJiBuZGltICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXc6IGNhc3QgbXVzdCBiZSAxRCAtPiBORCBvciBORCAtPiAxRCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9Ci0gICAgX1B5T2JqZWN0X0dDX1RSQUNLKG1lbSk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKW1lbTsKKworICAgIG12ID0gKFB5TWVtb3J5Vmlld09iamVjdCAqKQorICAgICAgICBtYnVmX2FkZF9pbmNvbXBsZXRlX3ZpZXcoc2VsZi0+bWJ1ZiwgJnNlbGYtPnZpZXcsIG5kaW09PTAgPyAxIDogKGludCluZGltKTsKKyAgICBpZiAobXYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoY2FzdF90b18xRChtdiwgZm9ybWF0KSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKHNoYXBlICYmIGNhc3RfdG9fTkQobXYsIHNoYXBlLCAoaW50KW5kaW0pIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiAoUHlPYmplY3QgKiltdjsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKG12KTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQKK21lbW9yeV9nZXRidWYoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+dmlldzsKKyAgICBpbnQgYmFzZWZsYWdzID0gc2VsZi0+ZmxhZ3M7CisKKyAgICBDSEVDS19SRUxFQVNFRF9JTlQoc2VsZik7CisKKyAgICAvKiBzdGFydCB3aXRoIGNvbXBsZXRlIGluZm9ybWF0aW9uICovCisgICAgKnZpZXcgPSAqYmFzZTsKKyAgICB2aWV3LT5vYmogPSBOVUxMOworCisgICAgaWYgKFJFUV9XUklUQUJMRShmbGFncykgJiYgYmFzZS0+cmVhZG9ubHkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IHVuZGVybHlpbmcgYnVmZmVyIGlzIG5vdCB3cml0YWJsZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUkVRX0ZPUk1BVChmbGFncykpIHsKKyAgICAgICAgLyogTlVMTCBpbmRpY2F0ZXMgdGhhdCB0aGUgYnVmZmVyJ3MgZGF0YSB0eXBlIGhhcyBiZWVuIGNhc3QgdG8gJ0InLgorICAgICAgICAgICB2aWV3LT5pdGVtc2l6ZSBpcyB0aGUgX3ByZXZpb3VzXyBpdGVtc2l6ZS4gSWYgc2hhcGUgaXMgcHJlc2VudCwKKyAgICAgICAgICAgdGhlIGVxdWFsaXR5IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPSBsZW4gc3RpbGwgaG9sZHMgYXQgdGhpcworICAgICAgICAgICBwb2ludC4gVGhlIGVxdWFsaXR5IGNhbGNzaXplKGZvcm1hdCkgPSBpdGVtc2l6ZSBkb2VzIF9ub3RfIGhvbGQKKyAgICAgICAgICAgZnJvbSBoZXJlIG9uISAqLworICAgICAgICB2aWV3LT5mb3JtYXQgPSBOVUxMOworICAgIH0KKworICAgIGlmIChSRVFfQ19DT05USUdVT1VTKGZsYWdzKSAmJiAhTVZfQ19DT05USUdVT1VTKGJhc2VmbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IHVuZGVybHlpbmcgYnVmZmVyIGlzIG5vdCBDLWNvbnRpZ3VvdXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUkVRX0ZfQ09OVElHVU9VUyhmbGFncykgJiYgIU1WX0ZfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3QgRm9ydHJhbiBjb250aWd1b3VzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFJFUV9BTllfQ09OVElHVU9VUyhmbGFncykgJiYgIU1WX0FOWV9DT05USUdVT1VTKGJhc2VmbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IHVuZGVybHlpbmcgYnVmZmVyIGlzIG5vdCBjb250aWd1b3VzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFSRVFfSU5ESVJFQ1QoZmxhZ3MpICYmIChiYXNlZmxhZ3MgJiBfUHlfTUVNT1JZVklFV19QSUwpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciByZXF1aXJlcyBzdWJvZmZzZXRzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFSRVFfU1RSSURFUyhmbGFncykpIHsKKyAgICAgICAgaWYgKCFNVl9DX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3QgQy1jb250aWd1b3VzIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgdmlldy0+c3RyaWRlcyA9IE5VTEw7CisgICAgfQorICAgIGlmICghUkVRX1NIQVBFKGZsYWdzKSkgeworICAgICAgICAvKiBQeUJVRl9TSU1QTEUgb3IgUHlCVUZfV1JJVEFCTEU6IGF0IHRoaXMgcG9pbnQgYnVmIGlzIEMtY29udGlndW91cywKKyAgICAgICAgICAgc28gYmFzZS0+YnVmID0gbmRidWYtPmRhdGEuICovCisgICAgICAgIGlmICh2aWV3LT5mb3JtYXQgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogUHlCVUZfU0lNUExFfFB5QlVGX0ZPUk1BVCBhbmQgUHlCVUZfV1JJVEFCTEV8UHlCVUZfRk9STUFUIGRvCisgICAgICAgICAgICAgICBub3QgbWFrZSBzZW5zZS4gKi8KKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICAgICAibmRhcnJheTogY2Fubm90IGNhc3QgdG8gdW5zaWduZWQgYnl0ZXMgaWYgdGhlIGZvcm1hdCBmbGFnICIKKyAgICAgICAgICAgICAgICAiaXMgcHJlc2VudCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIC8qIHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPSBsZW4gYW5kIGNhbGNzaXplKGZvcm1hdCkgPSBpdGVtc2l6ZQorICAgICAgICAgICBkbyBfbm90XyBob2xkIGZyb20gaGVyZSBvbiEgKi8KKyAgICAgICAgdmlldy0+bmRpbSA9IDE7CisgICAgICAgIHZpZXctPnNoYXBlID0gTlVMTDsKKyAgICB9CisKKworICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgUHlfSU5DUkVGKHZpZXctPm9iaik7CisgICAgc2VsZi0+ZXhwb3J0cysrOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCittZW1vcnlfcmVsZWFzZWJ1ZihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldykKK3sKKyAgICBzZWxmLT5leHBvcnRzLS07CisgICAgcmV0dXJuOworICAgIC8qIFB5QnVmZmVyX1JlbGVhc2UoKSBkZWNyZW1lbnRzIHZpZXctPm9iaiBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMuICovCit9CisKKy8qIEJ1ZmZlciBtZXRob2RzICovCitzdGF0aWMgUHlCdWZmZXJQcm9jcyBtZW1vcnlfYXNfYnVmZmVyID0geworICAgIChnZXRidWZmZXJwcm9jKW1lbW9yeV9nZXRidWYsICAgICAgICAgLyogYmZfZ2V0YnVmZmVyICovCisgICAgKHJlbGVhc2VidWZmZXJwcm9jKW1lbW9yeV9yZWxlYXNlYnVmLCAvKiBiZl9yZWxlYXNlYnVmZmVyICovCit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgIE9wdGltaXplZCBwYWNrL3VucGFjayBmb3IgYWxsIG5hdGl2ZSBmb3JtYXQgc3BlY2lmaWVycyAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAgRml4IGV4Y2VwdGlvbnM6CisgICAgIDEpIEluY2x1ZGUgZm9ybWF0IHN0cmluZyBpbiB0aGUgZXJyb3IgbWVzc2FnZS4KKyAgICAgMikgT3ZlcmZsb3dFcnJvciAtPiBWYWx1ZUVycm9yLgorICAgICAzKSBUaGUgZXJyb3IgbWVzc2FnZSBmcm9tIFB5TnVtYmVyX0luZGV4KCkgaXMgbm90IGlkZWFsLgorKi8KK3N0YXRpYyBpbnQKK3R5cGVfZXJyb3JfaW50KGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAibWVtb3J5dmlldzogaW52YWxpZCB0eXBlIGZvciBmb3JtYXQgJyVzJyIsIGZtdCk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50Cit2YWx1ZV9lcnJvcl9pbnQoY29uc3QgY2hhciAqZm10KQoreworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAibWVtb3J5dmlldzogaW52YWxpZCB2YWx1ZSBmb3IgZm9ybWF0ICclcyciLCBmbXQpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGludAorZml4X2Vycm9yX2ludChjb25zdCBjaGFyICpmbXQpCit7CisgICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOworICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIHR5cGVfZXJyb3JfaW50KGZtdCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikgfHwKKyAgICAgICAgICAgICBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1ZhbHVlRXJyb3IpKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoZm10KTsKKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qIEFjY2VwdCBpbnRlZ2VyIG9iamVjdHMgb3Igb2JqZWN0cyB3aXRoIGFuIF9faW5kZXhfXygpIG1ldGhvZC4gKi8KK3N0YXRpYyBsb25nCitweWxvbmdfYXNfbGQoUHlPYmplY3QgKml0ZW0pCit7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBsb25nIGxkOworCisgICAgdG1wID0gUHlOdW1iZXJfSW5kZXgoaXRlbSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBsZCA9IFB5TG9uZ19Bc0xvbmcodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gbGQ7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nCitweWxvbmdfYXNfbHUoUHlPYmplY3QgKml0ZW0pCit7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICB1bnNpZ25lZCBsb25nIGx1OworCisgICAgdG1wID0gUHlOdW1iZXJfSW5kZXgoaXRlbSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpLTE7CisKKyAgICBsdSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiBsdTsKK30KKworI2lmZGVmIEhBVkVfTE9OR19MT05HCitzdGF0aWMgUFlfTE9OR19MT05HCitweWxvbmdfYXNfbGxkKFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgUFlfTE9OR19MT05HIGxsZDsKKworICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbGxkID0gUHlMb25nX0FzTG9uZ0xvbmcodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gbGxkOworfQorCitzdGF0aWMgdW5zaWduZWQgUFlfTE9OR19MT05HCitweWxvbmdfYXNfbGx1KFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGxsdTsKKworICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisKKyAgICBsbHUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIGxsdTsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlfc3NpemVfdAorcHlsb25nX2FzX3pkKFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgUHlfc3NpemVfdCB6ZDsKKworICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgemQgPSBQeUxvbmdfQXNTc2l6ZV90KHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHpkOworfQorCitzdGF0aWMgc2l6ZV90CitweWxvbmdfYXNfenUoUHlPYmplY3QgKml0ZW0pCit7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBzaXplX3QgenU7CisKKyAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiAoc2l6ZV90KS0xOworCisgICAgenUgPSBQeUxvbmdfQXNTaXplX3QodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4genU7Cit9CisKKy8qIFRpbWluZ3Mgd2l0aCB0aGUgbmRhcnJheSBmcm9tIF90ZXN0YnVmZmVyLmMgaW5kaWNhdGUgdGhhdCB1c2luZyB0aGUKKyAgIHN0cnVjdCBtb2R1bGUgaXMgYXJvdW5kIDE1eCBzbG93ZXIgdGhhbiB0aGUgdHdvIGZ1bmN0aW9ucyBiZWxvdy4gKi8KKworI2RlZmluZSBVTlBBQ0tfU0lOR0xFKGRlc3QsIHB0ciwgdHlwZSkgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdHlwZSB4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwdHIsIHNpemVvZiB4KTsgXAorICAgICAgICBkZXN0ID0geDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBVbnBhY2sgYSBzaW5nbGUgaXRlbS4gJ2ZtdCcgY2FuIGJlIGFueSBuYXRpdmUgZm9ybWF0IGNoYXJhY3RlciBpbiBzdHJ1Y3QKKyAgIG1vZHVsZSBzeW50YXguIFRoaXMgZnVuY3Rpb24gaXMgdmVyeSBzZW5zaXRpdmUgdG8gc21hbGwgY2hhbmdlcy4gV2l0aCB0aGlzCisgICBsYXlvdXQgZ2NjIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIGEgZmFzdCBqdW1wIHRhYmxlLiAqLworUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCit1bnBhY2tfc2luZ2xlKGNvbnN0IGNoYXIgKnB0ciwgY29uc3QgY2hhciAqZm10KQoreworICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBsbHU7CisgICAgdW5zaWduZWQgbG9uZyBsdTsKKyAgICBzaXplX3QgenU7CisgICAgUFlfTE9OR19MT05HIGxsZDsKKyAgICBsb25nIGxkOworICAgIFB5X3NzaXplX3QgemQ7CisgICAgZG91YmxlIGQ7CisgICAgdW5zaWduZWQgY2hhciB1YzsKKyAgICB2b2lkICpwOworCisgICAgc3dpdGNoIChmbXRbMF0pIHsKKworICAgIC8qIHNpZ25lZCBpbnRlZ2VycyBhbmQgZmFzdCBwYXRoIGZvciAnQicgKi8KKyAgICBjYXNlICdCJzogdWMgPSAqKCh1bnNpZ25lZCBjaGFyICopcHRyKTsgZ290byBjb252ZXJ0X3VjOworICAgIGNhc2UgJ2InOiBsZCA9ICAgKigoc2lnbmVkIGNoYXIgKilwdHIpOyBnb3RvIGNvbnZlcnRfbGQ7CisgICAgY2FzZSAnaCc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgc2hvcnQpOyBnb3RvIGNvbnZlcnRfbGQ7CisgICAgY2FzZSAnaSc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgaW50KTsgZ290byBjb252ZXJ0X2xkOworICAgIGNhc2UgJ2wnOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIGxvbmcpOyBnb3RvIGNvbnZlcnRfbGQ7CisKKyAgICAvKiBib29sZWFuICovCisgICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKKyAgICBjYXNlICc/JzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBfQm9vbCk7IGdvdG8gY29udmVydF9ib29sOworICAgICNlbHNlCisgICAgY2FzZSAnPyc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgY2hhcik7IGdvdG8gY29udmVydF9ib29sOworICAgICNlbmRpZgorCisgICAgLyogdW5zaWduZWQgaW50ZWdlcnMgKi8KKyAgICBjYXNlICdIJzogVU5QQUNLX1NJTkdMRShsdSwgcHRyLCB1bnNpZ25lZCBzaG9ydCk7IGdvdG8gY29udmVydF9sdTsKKyAgICBjYXNlICdJJzogVU5QQUNLX1NJTkdMRShsdSwgcHRyLCB1bnNpZ25lZCBpbnQpOyBnb3RvIGNvbnZlcnRfbHU7CisgICAgY2FzZSAnTCc6IFVOUEFDS19TSU5HTEUobHUsIHB0ciwgdW5zaWduZWQgbG9uZyk7IGdvdG8gY29udmVydF9sdTsKKworICAgIC8qIG5hdGl2ZSA2NC1iaXQgKi8KKyAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICBjYXNlICdxJzogVU5QQUNLX1NJTkdMRShsbGQsIHB0ciwgUFlfTE9OR19MT05HKTsgZ290byBjb252ZXJ0X2xsZDsKKyAgICBjYXNlICdRJzogVU5QQUNLX1NJTkdMRShsbHUsIHB0ciwgdW5zaWduZWQgUFlfTE9OR19MT05HKTsgZ290byBjb252ZXJ0X2xsdTsKKyAgICAjZW5kaWYKKworICAgIC8qIHNzaXplX3QgYW5kIHNpemVfdCAqLworICAgIGNhc2UgJ24nOiBVTlBBQ0tfU0lOR0xFKHpkLCBwdHIsIFB5X3NzaXplX3QpOyBnb3RvIGNvbnZlcnRfemQ7CisgICAgY2FzZSAnTic6IFVOUEFDS19TSU5HTEUoenUsIHB0ciwgc2l6ZV90KTsgZ290byBjb252ZXJ0X3p1OworCisgICAgLyogZmxvYXRzICovCisgICAgY2FzZSAnZic6IFVOUEFDS19TSU5HTEUoZCwgcHRyLCBmbG9hdCk7IGdvdG8gY29udmVydF9kb3VibGU7CisgICAgY2FzZSAnZCc6IFVOUEFDS19TSU5HTEUoZCwgcHRyLCBkb3VibGUpOyBnb3RvIGNvbnZlcnRfZG91YmxlOworCisgICAgLyogYnl0ZXMgb2JqZWN0ICovCisgICAgY2FzZSAnYyc6IGdvdG8gY29udmVydF9ieXRlczsKKworICAgIC8qIHBvaW50ZXIgKi8KKyAgICBjYXNlICdQJzogVU5QQUNLX1NJTkdMRShwLCBwdHIsIHZvaWQgKik7IGdvdG8gY29udmVydF9wb2ludGVyOworCisgICAgLyogZGVmYXVsdCAqLworICAgIGRlZmF1bHQ6IGdvdG8gZXJyX2Zvcm1hdDsKKyAgICB9CisKK2NvbnZlcnRfdWM6CisgICAgLyogUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKSBpcyBzbG93ZXIgKi8KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHVjKTsKK2NvbnZlcnRfbGQ6CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhsZCk7Citjb252ZXJ0X2x1OgorICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhsdSk7Citjb252ZXJ0X2xsZDoKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyhsbGQpOworY29udmVydF9sbHU6CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyhsbHUpOworY29udmVydF96ZDoKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHpkKTsKK2NvbnZlcnRfenU6CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHp1KTsKK2NvbnZlcnRfZG91YmxlOgorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoZCk7Citjb252ZXJ0X2Jvb2w6CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhsZCk7Citjb252ZXJ0X2J5dGVzOgorICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHB0ciwgMSk7Citjb252ZXJ0X3BvaW50ZXI6CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVm9pZFB0cihwKTsKK2Vycl9mb3JtYXQ6CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3OiBmb3JtYXQgJXMgbm90IHN1cHBvcnRlZCIsIGZtdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNkZWZpbmUgUEFDS19TSU5HTEUocHRyLCBzcmMsIHR5cGUpIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdHlwZSB4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeCA9ICh0eXBlKXNyYzsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbWVtY3B5KHB0ciwgKGNoYXIgKikmeCwgc2l6ZW9mIHgpOyAgIFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBQYWNrIGEgc2luZ2xlIGl0ZW0uICdmbXQnIGNhbiBiZSBhbnkgbmF0aXZlIGZvcm1hdCBjaGFyYWN0ZXIgaW4KKyAgIHN0cnVjdCBtb2R1bGUgc3ludGF4LiAqLworc3RhdGljIGludAorcGFja19zaW5nbGUoY2hhciAqcHRyLCBQeU9iamVjdCAqaXRlbSwgY29uc3QgY2hhciAqZm10KQoreworICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBsbHU7CisgICAgdW5zaWduZWQgbG9uZyBsdTsKKyAgICBzaXplX3QgenU7CisgICAgUFlfTE9OR19MT05HIGxsZDsKKyAgICBsb25nIGxkOworICAgIFB5X3NzaXplX3QgemQ7CisgICAgZG91YmxlIGQ7CisgICAgdm9pZCAqcDsKKworICAgIHN3aXRjaCAoZm10WzBdKSB7CisgICAgLyogc2lnbmVkIGludGVnZXJzICovCisgICAgY2FzZSAnYic6IGNhc2UgJ2gnOiBjYXNlICdpJzogY2FzZSAnbCc6CisgICAgICAgIGxkID0gcHlsb25nX2FzX2xkKGl0ZW0pOworICAgICAgICBpZiAobGQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOworICAgICAgICBzd2l0Y2ggKGZtdFswXSkgeworICAgICAgICBjYXNlICdiJzoKKyAgICAgICAgICAgIGlmIChsZCA8IFNDSEFSX01JTiB8fCBsZCA+IFNDSEFSX01BWCkgZ290byBlcnJfcmFuZ2U7CisgICAgICAgICAgICAqKChzaWduZWQgY2hhciAqKXB0cikgPSAoc2lnbmVkIGNoYXIpbGQ7IGJyZWFrOworICAgICAgICBjYXNlICdoJzoKKyAgICAgICAgICAgIGlmIChsZCA8IFNIUlRfTUlOIHx8IGxkID4gU0hSVF9NQVgpIGdvdG8gZXJyX3JhbmdlOworICAgICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgc2hvcnQpOyBicmVhazsKKyAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICBpZiAobGQgPCBJTlRfTUlOIHx8IGxkID4gSU5UX01BWCkgZ290byBlcnJfcmFuZ2U7CisgICAgICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxkLCBpbnQpOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDogLyogJ2wnICovCisgICAgICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxkLCBsb25nKTsgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAvKiB1bnNpZ25lZCBpbnRlZ2VycyAqLworICAgIGNhc2UgJ0InOiBjYXNlICdIJzogY2FzZSAnSSc6IGNhc2UgJ0wnOgorICAgICAgICBsdSA9IHB5bG9uZ19hc19sdShpdGVtKTsKKyAgICAgICAgaWYgKGx1ID09ICh1bnNpZ25lZCBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgc3dpdGNoIChmbXRbMF0pIHsKKyAgICAgICAgY2FzZSAnQic6CisgICAgICAgICAgICBpZiAobHUgPiBVQ0hBUl9NQVgpIGdvdG8gZXJyX3JhbmdlOworICAgICAgICAgICAgKigodW5zaWduZWQgY2hhciAqKXB0cikgPSAodW5zaWduZWQgY2hhcilsdTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ0gnOgorICAgICAgICAgICAgaWYgKGx1ID4gVVNIUlRfTUFYKSBnb3RvIGVycl9yYW5nZTsKKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbHUsIHVuc2lnbmVkIHNob3J0KTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ0knOgorICAgICAgICAgICAgaWYgKGx1ID4gVUlOVF9NQVgpIGdvdG8gZXJyX3JhbmdlOworICAgICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsdSwgdW5zaWduZWQgaW50KTsgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6IC8qICdMJyAqLworICAgICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsdSwgdW5zaWduZWQgbG9uZyk7IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgLyogbmF0aXZlIDY0LWJpdCAqLworICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgIGNhc2UgJ3EnOgorICAgICAgICBsbGQgPSBweWxvbmdfYXNfbGxkKGl0ZW0pOworICAgICAgICBpZiAobGxkID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbGQsIFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ1EnOgorICAgICAgICBsbHUgPSBweWxvbmdfYXNfbGx1KGl0ZW0pOworICAgICAgICBpZiAobGx1ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOworICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsdSwgdW5zaWduZWQgUFlfTE9OR19MT05HKTsKKyAgICAgICAgYnJlYWs7CisgICAgI2VuZGlmCisKKyAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KKyAgICBjYXNlICduJzoKKyAgICAgICAgemQgPSBweWxvbmdfYXNfemQoaXRlbSk7CisgICAgICAgIGlmICh6ZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgemQsIFB5X3NzaXplX3QpOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdOJzoKKyAgICAgICAgenUgPSBweWxvbmdfYXNfenUoaXRlbSk7CisgICAgICAgIGlmICh6dSA9PSAoc2l6ZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCB6dSwgc2l6ZV90KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAvKiBmbG9hdHMgKi8KKyAgICBjYXNlICdmJzogY2FzZSAnZCc6CisgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKGl0ZW0pOworICAgICAgICBpZiAoZCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgaWYgKGZtdFswXSA9PSAnZicpIHsKKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgZCwgZmxvYXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBkLCBkb3VibGUpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgLyogYm9vbCAqLworICAgIGNhc2UgJz8nOgorICAgICAgICBsZCA9IFB5T2JqZWN0X0lzVHJ1ZShpdGVtKTsKKyAgICAgICAgaWYgKGxkIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsgLyogcHJlc2VydmUgb3JpZ2luYWwgZXJyb3IgKi8KKyAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAorICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxkLCBfQm9vbCk7CisgICAgI2Vsc2UKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgY2hhcik7CisgICAgI2VuZGlmCisgICAgICAgICBicmVhazsKKworICAgIC8qIGJ5dGVzIG9iamVjdCAqLworICAgIGNhc2UgJ2MnOgorICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soaXRlbSkpCisgICAgICAgICAgICByZXR1cm4gdHlwZV9lcnJvcl9pbnQoZm10KTsKKyAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoaXRlbSkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoZm10KTsKKyAgICAgICAgKnB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGl0ZW0pWzBdOworICAgICAgICBicmVhazsKKworICAgIC8qIHBvaW50ZXIgKi8KKyAgICBjYXNlICdQJzoKKyAgICAgICAgcCA9IFB5TG9uZ19Bc1ZvaWRQdHIoaXRlbSk7CisgICAgICAgIGlmIChwID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOworICAgICAgICBQQUNLX1NJTkdMRShwdHIsIHAsIHZvaWQgKik7CisgICAgICAgIGJyZWFrOworCisgICAgLyogZGVmYXVsdCAqLworICAgIGRlZmF1bHQ6IGdvdG8gZXJyX2Zvcm1hdDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKKworZXJyX29jY3VycmVkOgorICAgIHJldHVybiBmaXhfZXJyb3JfaW50KGZtdCk7CitlcnJfcmFuZ2U6CisgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludChmbXQpOworZXJyX2Zvcm1hdDoKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgIm1lbW9yeXZpZXc6IGZvcm1hdCAlcyBub3Qgc3VwcG9ydGVkIiwgZm10KTsKKyAgICByZXR1cm4gLTE7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrIHVzaW5nIHRoZSBzdHJ1Y3QgbW9kdWxlICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBGb3IgcmVhc29uYWJsZSBwZXJmb3JtYW5jZSBpdCBpcyBuZWNlc3NhcnkgdG8gY2FjaGUgYWxsIG9iamVjdHMgcmVxdWlyZWQKKyAgIGZvciB1bnBhY2tpbmcuIEFuIHVucGFja2VyIGNhbiBoYW5kbGUgdGhlIGZvcm1hdCBwYXNzZWQgdG8gdW5wYWNrX2Zyb20oKS4KKyAgIEludmFyaWFudDogQWxsIHBvaW50ZXIgZmllbGRzIG9mIHRoZSBzdHJ1Y3Qgc2hvdWxkIGVpdGhlciBiZSBOVUxMIG9yIHZhbGlkCisgICBwb2ludGVycy4gKi8KK3N0cnVjdCB1bnBhY2tlciB7CisgICAgUHlPYmplY3QgKnVucGFja19mcm9tOyAvKiBTdHJ1Y3QudW5wYWNrX2Zyb20oZm9ybWF0KSAqLworICAgIFB5T2JqZWN0ICptdmlldzsgICAgICAgLyogY2FjaGVkIG1lbW9yeXZpZXcgKi8KKyAgICBjaGFyICppdGVtOyAgICAgICAgICAgIC8qIGJ1ZmZlciBmb3IgbXZpZXcgKi8KKyAgICBQeV9zc2l6ZV90IGl0ZW1zaXplOyAgIC8qIGxlbihpdGVtKSAqLworfTsKKworc3RhdGljIHN0cnVjdCB1bnBhY2tlciAqCit1bnBhY2tlcl9uZXcodm9pZCkKK3sKKyAgICBzdHJ1Y3QgdW5wYWNrZXIgKnggPSBQeU1lbV9NYWxsb2Moc2l6ZW9mICp4KTsKKworICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgeC0+dW5wYWNrX2Zyb20gPSBOVUxMOworICAgIHgtPm12aWV3ID0gTlVMTDsKKyAgICB4LT5pdGVtID0gTlVMTDsKKyAgICB4LT5pdGVtc2l6ZSA9IDA7CisKKyAgICByZXR1cm4geDsKK30KKworc3RhdGljIHZvaWQKK3VucGFja2VyX2ZyZWUoc3RydWN0IHVucGFja2VyICp4KQoreworICAgIGlmICh4KSB7CisgICAgICAgIFB5X1hERUNSRUYoeC0+dW5wYWNrX2Zyb20pOworICAgICAgICBQeV9YREVDUkVGKHgtPm12aWV3KTsKKyAgICAgICAgUHlNZW1fRnJlZSh4LT5pdGVtKTsKKyAgICAgICAgUHlNZW1fRnJlZSh4KTsKKyAgICB9Cit9CisKKy8qIFJldHVybiBhIG5ldyB1bnBhY2tlciBmb3IgdGhlIGdpdmVuIGZvcm1hdC4gKi8KK3N0YXRpYyBzdHJ1Y3QgdW5wYWNrZXIgKgorc3RydWN0X2dldF91bnBhY2tlcihjb25zdCBjaGFyICpmbXQsIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlPYmplY3QgKnN0cnVjdG1vZHVsZTsgICAgIC8qIFhYWCBjYWNoZSB0aGVzZSB0d28gKi8KKyAgICBQeU9iamVjdCAqU3RydWN0ID0gTlVMTDsgICAgLyogWFhYIGluIGdsb2JhbHM/ICAgICAqLworICAgIFB5T2JqZWN0ICpzdHJ1Y3RvYmogPSBOVUxMOworICAgIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOworICAgIHN0cnVjdCB1bnBhY2tlciAqeCA9IE5VTEw7CisKKyAgICBzdHJ1Y3Rtb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInN0cnVjdCIpOworICAgIGlmIChzdHJ1Y3Rtb2R1bGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBTdHJ1Y3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG1vZHVsZSwgIlN0cnVjdCIpOworICAgIFB5X0RFQ1JFRihzdHJ1Y3Rtb2R1bGUpOworICAgIGlmIChTdHJ1Y3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB4ID0gdW5wYWNrZXJfbmV3KCk7CisgICAgaWYgKHggPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGZvcm1hdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhmbXQpOworICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHN0cnVjdG9iaiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoU3RydWN0LCBmb3JtYXQsIE5VTEwpOworICAgIGlmIChzdHJ1Y3RvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHgtPnVucGFja19mcm9tID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3RvYmosICJ1bnBhY2tfZnJvbSIpOworICAgIGlmICh4LT51bnBhY2tfZnJvbSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgeC0+aXRlbSA9IFB5TWVtX01hbGxvYyhpdGVtc2l6ZSk7CisgICAgaWYgKHgtPml0ZW0gPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICB4LT5pdGVtc2l6ZSA9IGl0ZW1zaXplOworCisgICAgeC0+bXZpZXcgPSBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeSh4LT5pdGVtLCBpdGVtc2l6ZSwgUHlCVUZfV1JJVEUpOworICAgIGlmICh4LT5tdmlldyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisKK291dDoKKyAgICBQeV9YREVDUkVGKFN0cnVjdCk7CisgICAgUHlfWERFQ1JFRihmb3JtYXQpOworICAgIFB5X1hERUNSRUYoc3RydWN0b2JqKTsKKyAgICByZXR1cm4geDsKKworZXJyb3I6CisgICAgdW5wYWNrZXJfZnJlZSh4KTsKKyAgICB4ID0gTlVMTDsKKyAgICBnb3RvIG91dDsKK30KKworLyogdW5wYWNrIGEgc2luZ2xlIGl0ZW0gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJ1Y3RfdW5wYWNrX3NpbmdsZShjb25zdCBjaGFyICpwdHIsIHN0cnVjdCB1bnBhY2tlciAqeCkKK3sKKyAgICBQeU9iamVjdCAqdjsKKworICAgIG1lbWNweSh4LT5pdGVtLCBwdHIsIHgtPml0ZW1zaXplKTsKKyAgICB2ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyh4LT51bnBhY2tfZnJvbSwgeC0+bXZpZXcsIE5VTEwpOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUodikgPT0gMSkgeworICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlUdXBsZV9HRVRfSVRFTSh2LCAwKTsKKyAgICAgICAgUHlfSU5DUkVGKHRtcCk7CisgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIHRtcDsKKyAgICB9CisKKyAgICByZXR1cm4gdjsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVwcmVzZW50YXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIGFsbG93IGV4cGxpY2l0IGZvcm0gb2YgbmF0aXZlIGZvcm1hdCAqLworUHlfTE9DQUxfSU5MSU5FKGNvbnN0IGNoYXIgKikKK2FkanVzdF9mbXQoY29uc3QgUHlfYnVmZmVyICp2aWV3KQoreworICAgIGNvbnN0IGNoYXIgKmZtdDsKKworICAgIGZtdCA9ICh2aWV3LT5mb3JtYXRbMF0gPT0gJ0AnKSA/IHZpZXctPmZvcm1hdCsxIDogdmlldy0+Zm9ybWF0OworICAgIGlmIChmbXRbMF0gJiYgZm10WzFdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmbXQ7CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgIm1lbW9yeXZpZXc6IHVuc3VwcG9ydGVkIGZvcm1hdCAlcyIsIHZpZXctPmZvcm1hdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIEJhc2UgY2FzZSBmb3IgbXVsdGktZGltZW5zaW9uYWwgdW5wYWNraW5nLiBBc3N1bXB0aW9uOiBuZGltID09IDEuICovCitzdGF0aWMgUHlPYmplY3QgKgordG9saXN0X2Jhc2UoY29uc3QgY2hhciAqcHRyLCBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwKKyAgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKnN1Ym9mZnNldHMsCisgICAgICAgICAgICBjb25zdCBjaGFyICpmbXQpCit7CisgICAgUHlPYmplY3QgKmxzdCwgKml0ZW07CisgICAgUHlfc3NpemVfdCBpOworCisgICAgbHN0ID0gUHlMaXN0X05ldyhzaGFwZVswXSk7CisgICAgaWYgKGxzdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcHRyKz1zdHJpZGVzWzBdLCBpKyspIHsKKyAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKTsKKyAgICAgICAgaXRlbSA9IHVucGFja19zaW5nbGUoeHB0ciwgZm10KTsKKyAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeUxpc3RfU0VUX0lURU0obHN0LCBpLCBpdGVtKTsKKyAgICB9CisKKyAgICByZXR1cm4gbHN0OworfQorCisvKiBVbnBhY2sgYSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheSBpbnRvIGEgbmVzdGVkIGxpc3QuCisgICBBc3N1bXB0aW9uOiBuZGltID49IDEuICovCitzdGF0aWMgUHlPYmplY3QgKgordG9saXN0X3JlYyhjb25zdCBjaGFyICpwdHIsIFB5X3NzaXplX3QgbmRpbSwgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsCisgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKnN1Ym9mZnNldHMsCisgICAgICAgICAgIGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICBQeU9iamVjdCAqbHN0LCAqaXRlbTsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobmRpbSA+PSAxKTsKKyAgICBhc3NlcnQoc2hhcGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHN0cmlkZXMgIT0gTlVMTCk7CisKKyAgICBpZiAobmRpbSA9PSAxKQorICAgICAgICByZXR1cm4gdG9saXN0X2Jhc2UocHRyLCBzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cywgZm10KTsKKworICAgIGxzdCA9IFB5TGlzdF9OZXcoc2hhcGVbMF0pOworICAgIGlmIChsc3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IHB0cis9c3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKnhwdHIgPSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cyk7CisgICAgICAgIGl0ZW0gPSB0b2xpc3RfcmVjKHhwdHIsIG5kaW0tMSwgc2hhcGUrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcysxLCBzdWJvZmZzZXRzID8gc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm10KTsKKyAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeUxpc3RfU0VUX0lURU0obHN0LCBpLCBpdGVtKTsKKyAgICB9CisKKyAgICByZXR1cm4gbHN0OworfQorCisvKiBSZXR1cm4gYSBsaXN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZW1vcnl2aWV3LiBDdXJyZW50bHkgb25seSBidWZmZXJzCisgICB3aXRoIG5hdGl2ZSBmb3JtYXQgc3RyaW5ncyBhcmUgc3VwcG9ydGVkLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV90b2xpc3QoUHlNZW1vcnlWaWV3T2JqZWN0ICptdiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBjb25zdCBQeV9idWZmZXIgKnZpZXcgPSAmKG12LT52aWV3KTsKKyAgICBjb25zdCBjaGFyICpmbXQ7CisKKyAgICBDSEVDS19SRUxFQVNFRChtdik7CisKKyAgICBmbXQgPSBhZGp1c3RfZm10KHZpZXcpOworICAgIGlmIChmbXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgeworICAgICAgICByZXR1cm4gdW5wYWNrX3NpbmdsZSh2aWV3LT5idWYsIGZtdCk7CisgICAgfQorICAgIGVsc2UgaWYgKHZpZXctPm5kaW0gPT0gMSkgeworICAgICAgICByZXR1cm4gdG9saXN0X2Jhc2Uodmlldy0+YnVmLCB2aWV3LT5zaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXctPnN0cmlkZXMsIHZpZXctPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHRvbGlzdF9yZWModmlldy0+YnVmLCB2aWV3LT5uZGltLCB2aWV3LT5zaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy0+c3RyaWRlcywgdmlldy0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm10KTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfdG9ieXRlcyhQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBQeV9idWZmZXIgKnNyYyA9IFZJRVdfQUREUihzZWxmKTsKKyAgICBQeU9iamVjdCAqYnl0ZXMgPSBOVUxMOworCisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisKKyAgICBpZiAoTVZfQ19DT05USUdVT1VTKHNlbGYtPmZsYWdzKSkgeworICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzcmMtPmJ1Ziwgc3JjLT5sZW4pOworICAgIH0KKworICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzcmMtPmxlbik7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGJ1ZmZlcl90b19jb250aWd1b3VzKFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgc3JjLCAnQycpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gYnl0ZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfcmVwcihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmZsYWdzICYgX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPHJlbGVhc2VkIG1lbW9yeSBhdCAlcD4iLCBzZWxmKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1lbW9yeSBhdCAlcD4iLCBzZWxmKTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhpbmcgYW5kIHNsaWNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEdldCB0aGUgcG9pbnRlciB0byB0aGUgaXRlbSBhdCBpbmRleC4gKi8KK3N0YXRpYyBjaGFyICoKK3B0cl9mcm9tX2luZGV4KFB5X2J1ZmZlciAqdmlldywgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBjaGFyICpwdHI7CisgICAgUHlfc3NpemVfdCBuaXRlbXM7IC8qIGl0ZW1zIGluIHRoZSBmaXJzdCBkaW1lbnNpb24gKi8KKworICAgIGFzc2VydCh2aWV3LT5zaGFwZSk7CisgICAgYXNzZXJ0KHZpZXctPnN0cmlkZXMpOworCisgICAgbml0ZW1zID0gdmlldy0+c2hhcGVbMF07CisgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICBpbmRleCArPSBuaXRlbXM7CisgICAgfQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbml0ZW1zKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiaW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBwdHIgPSAoY2hhciAqKXZpZXctPmJ1ZjsKKyAgICBwdHIgKz0gdmlldy0+c3RyaWRlc1swXSAqIGluZGV4OworCisgICAgcHRyID0gQURKVVNUX1BUUihwdHIsIHZpZXctPnN1Ym9mZnNldHMpOworCisgICAgcmV0dXJuIHB0cjsKK30KKworLyogUmV0dXJuIHRoZSBpdGVtIGF0IGluZGV4LiBJbiBhIG9uZS1kaW1lbnNpb25hbCB2aWV3LCB0aGlzIGlzIGFuIG9iamVjdAorICAgd2l0aCB0aGUgdHlwZSBzcGVjaWZpZWQgYnkgdmlldy0+Zm9ybWF0LiBPdGhlcndpc2UsIHRoZSBpdGVtIGlzIGEgc3ViLXZpZXcuCisgICBUaGUgZnVuY3Rpb24gaXMgdXNlZCBpbiBtZW1vcnlfc3Vic2NyaXB0KCkgYW5kIG1lbW9yeV9hc19zZXF1ZW5jZS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfaXRlbShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgpCit7CisgICAgUHlfYnVmZmVyICp2aWV3ID0gJihzZWxmLT52aWV3KTsKKyAgICBjb25zdCBjaGFyICpmbXQ7CisKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKworICAgIGZtdCA9IGFkanVzdF9mbXQodmlldyk7CisgICAgaWYgKGZtdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImludmFsaWQgaW5kZXhpbmcgb2YgMC1kaW0gbWVtb3J5Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAodmlldy0+bmRpbSA9PSAxKSB7CisgICAgICAgIGNoYXIgKnB0ciA9IHB0cl9mcm9tX2luZGV4KHZpZXcsIGluZGV4KTsKKyAgICAgICAgaWYgKHB0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiB1bnBhY2tfc2luZ2xlKHB0ciwgZm10KTsKKyAgICB9CisKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgIm11bHRpLWRpbWVuc2lvbmFsIHN1Yi12aWV3cyBhcmUgbm90IGltcGxlbWVudGVkIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitpbml0X3NsaWNlKFB5X2J1ZmZlciAqYmFzZSwgUHlPYmplY3QgKmtleSwgaW50IGRpbSkKK3sKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aDsKKworICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChrZXksIGJhc2UtPnNoYXBlW2RpbV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW5ndGgpIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cyA9PSBOVUxMIHx8IGRpbSA9PSAwKSB7CisgICAgYWRqdXN0X2J1ZjoKKyAgICAgICAgYmFzZS0+YnVmID0gKGNoYXIgKiliYXNlLT5idWYgKyBiYXNlLT5zdHJpZGVzW2RpbV0gKiBzdGFydDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X3NzaXplX3QgbiA9IGRpbS0xOworICAgICAgICB3aGlsZSAobiA+PSAwICYmIGJhc2UtPnN1Ym9mZnNldHNbbl0gPCAwKQorICAgICAgICAgICAgbi0tOworICAgICAgICBpZiAobiA8IDApCisgICAgICAgICAgICBnb3RvIGFkanVzdF9idWY7IC8qIGFsbCBzdWJvZmZzZXRzIGFyZSBuZWdhdGl2ZSAqLworICAgICAgICBiYXNlLT5zdWJvZmZzZXRzW25dID0gYmFzZS0+c3Vib2Zmc2V0c1tuXSArIGJhc2UtPnN0cmlkZXNbZGltXSAqIHN0YXJ0OworICAgIH0KKyAgICBiYXNlLT5zaGFwZVtkaW1dID0gc2xpY2VsZW5ndGg7CisgICAgYmFzZS0+c3RyaWRlc1tkaW1dID0gYmFzZS0+c3RyaWRlc1tkaW1dICogc3RlcDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citpc19tdWx0aXNsaWNlKFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfc3NpemVfdCBzaXplLCBpOworCisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGtleSkpCisgICAgICAgIHJldHVybiAwOworICAgIHNpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGtleSk7CisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp4ID0gUHlUdXBsZV9HRVRfSVRFTShrZXksIGkpOworICAgICAgICBpZiAoIVB5U2xpY2VfQ2hlY2soeCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIG12W29ial0gcmV0dXJucyBhbiBvYmplY3QgaG9sZGluZyB0aGUgZGF0YSBmb3Igb25lIGVsZW1lbnQgaWYgb2JqCisgICBmdWxseSBpbmRleGVzIHRoZSBtZW1vcnl2aWV3IG9yIGFub3RoZXIgbWVtb3J5dmlldyBvYmplY3QgaWYgaXQKKyAgIGRvZXMgbm90LgorCisgICAwLWQgbWVtb3J5dmlldyBvYmplY3RzIGNhbiBiZSByZWZlcmVuY2VkIHVzaW5nIG12Wy4uLl0gb3IgbXZbKCldCisgICBidXQgbm90IHdpdGggYW55dGhpbmcgZWxzZS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfc3Vic2NyaXB0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9idWZmZXIgKnZpZXc7CisgICAgdmlldyA9ICYoc2VsZi0+dmlldyk7CisgICAgCisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisKKyAgICBpZiAodmlldy0+bmRpbSA9PSAwKSB7CisgICAgICAgIGlmIChQeVR1cGxlX0NoZWNrKGtleSkgJiYgUHlUdXBsZV9HRVRfU0laRShrZXkpID09IDApIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZtdCA9IGFkanVzdF9mbXQodmlldyk7CisgICAgICAgICAgICBpZiAoZm10ID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gdW5wYWNrX3NpbmdsZSh2aWV3LT5idWYsIGZtdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoa2V5ID09IFB5X0VsbGlwc2lzKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgImludmFsaWQgaW5kZXhpbmcgb2YgMC1kaW0gbWVtb3J5Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChQeUluZGV4X0NoZWNrKGtleSkpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICAgICAgaW5kZXggPSBQeU51bWJlcl9Bc1NzaXplX3Qoa2V5LCBQeUV4Y19JbmRleEVycm9yKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIG1lbW9yeV9pdGVtKHNlbGYsIGluZGV4KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlTbGljZV9DaGVjayhrZXkpKSB7CisgICAgICAgIFB5TWVtb3J5Vmlld09iamVjdCAqc2xpY2VkOworCisgICAgICAgIHNsaWNlZCA9IChQeU1lbW9yeVZpZXdPYmplY3QgKiltYnVmX2FkZF92aWV3KHNlbGYtPm1idWYsIHZpZXcpOworICAgICAgICBpZiAoc2xpY2VkID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAoaW5pdF9zbGljZSgmc2xpY2VkLT52aWV3LCBrZXksIDApIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNsaWNlZCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpbml0X2xlbigmc2xpY2VkLT52aWV3KTsKKyAgICAgICAgaW5pdF9mbGFncyhzbGljZWQpOworCisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzbGljZWQ7CisgICAgfQorICAgIGVsc2UgaWYgKGlzX211bHRpc2xpY2Uoa2V5KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICJtdWx0aS1kaW1lbnNpb25hbCBzbGljaW5nIGlzIG5vdCBpbXBsZW1lbnRlZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibWVtb3J5dmlldzogaW52YWxpZCBzbGljZSBrZXkiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludAorbWVtb3J5X2Fzc19zdWIoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgUHlfYnVmZmVyICp2aWV3ID0gJihzZWxmLT52aWV3KTsKKyAgICBQeV9idWZmZXIgc3JjOworICAgIGNvbnN0IGNoYXIgKmZtdDsKKyAgICBjaGFyICpwdHI7CisKKyAgICBDSEVDS19SRUxFQVNFRF9JTlQoc2VsZik7CisKKyAgICBmbXQgPSBhZGp1c3RfZm10KHZpZXcpOworICAgIGlmIChmbXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKHZpZXctPnJlYWRvbmx5KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJjYW5ub3QgbW9kaWZ5IHJlYWQtb25seSBtZW1vcnkiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiY2Fubm90IGRlbGV0ZSBtZW1vcnkiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodmlldy0+bmRpbSA9PSAwKSB7CisgICAgICAgIGlmIChrZXkgPT0gUHlfRWxsaXBzaXMgfHwKKyAgICAgICAgICAgIChQeVR1cGxlX0NoZWNrKGtleSkgJiYgUHlUdXBsZV9HRVRfU0laRShrZXkpPT0wKSkgeworICAgICAgICAgICAgcHRyID0gKGNoYXIgKil2aWV3LT5idWY7CisgICAgICAgICAgICByZXR1cm4gcGFja19zaW5nbGUocHRyLCB2YWx1ZSwgZm10KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgImludmFsaWQgaW5kZXhpbmcgb2YgMC1kaW0gbWVtb3J5Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHZpZXctPm5kaW0gIT0gMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3IGFzc2lnbm1lbnRzIGFyZSBjdXJyZW50bHkgcmVzdHJpY3RlZCB0byBuZGltID0gMSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgeworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGtleSwgUHlFeGNfSW5kZXhFcnJvcik7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBwdHIgPSBwdHJfZnJvbV9pbmRleCh2aWV3LCBpbmRleCk7CisgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIHBhY2tfc2luZ2xlKHB0ciwgdmFsdWUsIGZtdCk7CisgICAgfQorICAgIC8qIG9uZS1kaW1lbnNpb25hbDogZmFzdCBwYXRoICovCisgICAgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSAmJiB2aWV3LT5uZGltID09IDEpIHsKKyAgICAgICAgUHlfYnVmZmVyIGRlc3Q7IC8qIHNsaWNlZCB2aWV3ICovCisgICAgICAgIFB5X3NzaXplX3QgYXJyYXlzWzNdOworICAgICAgICBpbnQgcmV0ID0gLTE7CisKKyAgICAgICAgLyogcnZhbHVlIG11c3QgYmUgYW4gZXhwb3J0ZXIgKi8KKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih2YWx1ZSwgJnNyYywgUHlCVUZfRlVMTF9STykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgICBkZXN0ID0gKnZpZXc7CisgICAgICAgIGRlc3Quc2hhcGUgPSAmYXJyYXlzWzBdOyBkZXN0LnNoYXBlWzBdID0gdmlldy0+c2hhcGVbMF07CisgICAgICAgIGRlc3Quc3RyaWRlcyA9ICZhcnJheXNbMV07IGRlc3Quc3RyaWRlc1swXSA9IHZpZXctPnN0cmlkZXNbMF07CisgICAgICAgIGlmICh2aWV3LT5zdWJvZmZzZXRzKSB7CisgICAgICAgICAgICBkZXN0LnN1Ym9mZnNldHMgPSAmYXJyYXlzWzJdOyBkZXN0LnN1Ym9mZnNldHNbMF0gPSB2aWV3LT5zdWJvZmZzZXRzWzBdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGluaXRfc2xpY2UoJmRlc3QsIGtleSwgMCkgPCAwKQorICAgICAgICAgICAgZ290byBlbmRfYmxvY2s7CisgICAgICAgIGRlc3QubGVuID0gZGVzdC5zaGFwZVswXSAqIGRlc3QuaXRlbXNpemU7CisKKyAgICAgICAgcmV0ID0gY29weV9zaW5nbGUoJmRlc3QsICZzcmMpOworCisgICAgZW5kX2Jsb2NrOgorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzcmMpOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAgICBlbHNlIGlmIChQeVNsaWNlX0NoZWNrKGtleSkgfHwgaXNfbXVsdGlzbGljZShrZXkpKSB7CisgICAgICAgIC8qIENhbGwgbWVtb3J5X3N1YnNjcmlwdCgpIHRvIHByb2R1Y2UgYSBzbGljZWQgbHZhbHVlLCB0aGVuIGNvcHkKKyAgICAgICAgICAgcnZhbHVlIGludG8gbHZhbHVlLiBUaGlzIGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gX3Rlc3RidWZmZXIuYy4gKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldyBzbGljZSBhc3NpZ25tZW50cyBhcmUgY3VycmVudGx5IHJlc3RyaWN0ZWQgIgorICAgICAgICAgICAgInRvIG5kaW0gPSAxIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibWVtb3J5dmlldzogaW52YWxpZCBzbGljZSBrZXkiKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90CittZW1vcnlfbGVuZ3RoKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKK3sKKyAgICBDSEVDS19SRUxFQVNFRF9JTlQoc2VsZik7CisgICAgcmV0dXJuIHNlbGYtPnZpZXcubmRpbSA9PSAwID8gMSA6IHNlbGYtPnZpZXcuc2hhcGVbMF07Cit9CisKKy8qIEFzIG1hcHBpbmcgKi8KK3N0YXRpYyBQeU1hcHBpbmdNZXRob2RzIG1lbW9yeV9hc19tYXBwaW5nID0geworICAgIChsZW5mdW5jKW1lbW9yeV9sZW5ndGgsICAgICAgICAgICAgICAgLyogbXBfbGVuZ3RoICovCisgICAgKGJpbmFyeWZ1bmMpbWVtb3J5X3N1YnNjcmlwdCwgICAgICAgICAvKiBtcF9zdWJzY3JpcHQgKi8KKyAgICAob2Jqb2JqYXJncHJvYyltZW1vcnlfYXNzX3N1YiwgICAgICAgIC8qIG1wX2Fzc19zdWJzY3JpcHQgKi8KK307CisKKy8qIEFzIHNlcXVlbmNlICovCitzdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgbWVtb3J5X2FzX3NlcXVlbmNlID0geworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfbGVuZ3RoICovCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9jb25jYXQgKi8KKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3JlcGVhdCAqLworICAgICAgICAoc3NpemVhcmdmdW5jKW1lbW9yeV9pdGVtLCAgICAgICAgLyogc3FfaXRlbSAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyaXNvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgTVZfQ09NUEFSRV9FWCAtMSAgICAgICAvKiBleGNlcHRpb24gKi8KKyNkZWZpbmUgTVZfQ09NUEFSRV9OT1RfSU1QTCAtMiAvKiBub3QgaW1wbGVtZW50ZWQgKi8KKworLyogVHJhbnNsYXRlIGEgU3RydWN0RXJyb3IgdG8gIm5vdCBlcXVhbCIuIFByZXNlcnZlIG90aGVyIGV4Y2VwdGlvbnMuICovCitzdGF0aWMgaW50CitmaXhfc3RydWN0X2Vycm9yX2ludCh2b2lkKQoreworICAgIGFzc2VydChQeUVycl9PY2N1cnJlZCgpKTsKKyAgICAvKiBYWFggQ2Fubm90IGdldCBhdCBTdHJ1Y3RFcnJvciBkaXJlY3RseT8gKi8KKyAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19JbXBvcnRFcnJvcikgfHwKKyAgICAgICAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19NZW1vcnlFcnJvcikpIHsKKyAgICAgICAgcmV0dXJuIE1WX0NPTVBBUkVfRVg7CisgICAgfQorICAgIC8qIFN0cnVjdEVycm9yOiBpbnZhbGlkIG9yIHVua25vd24gZm9ybWF0IC0+IG5vdCBlcXVhbCAqLworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFVucGFjayBhbmQgY29tcGFyZSBzaW5nbGUgaXRlbXMgb2YgcCBhbmQgcSB1c2luZyB0aGUgc3RydWN0IG1vZHVsZS4gKi8KK3N0YXRpYyBpbnQKK3N0cnVjdF91bnBhY2tfY21wKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKnEsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja19wLCBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja19xKQoreworICAgIFB5T2JqZWN0ICp2LCAqdzsKKyAgICBpbnQgcmV0OworCisgICAgLyogQXQgdGhpcyBwb2ludCBhbnkgZXhjZXB0aW9uIGZyb20gdGhlIHN0cnVjdCBtb2R1bGUgc2hvdWxkIG5vdCBiZQorICAgICAgIFN0cnVjdEVycm9yLCBzaW5jZSBib3RoIGZvcm1hdHMgaGF2ZSBiZWVuIGFjY2VwdGVkIGFscmVhZHkuICovCisgICAgdiA9IHN0cnVjdF91bnBhY2tfc2luZ2xlKHAsIHVucGFja19wKTsKKyAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTVZfQ09NUEFSRV9FWDsKKworICAgIHcgPSBzdHJ1Y3RfdW5wYWNrX3NpbmdsZShxLCB1bnBhY2tfcSk7CisgICAgaWYgKHcgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgIHJldHVybiBNVl9DT01QQVJFX0VYOworICAgIH0KKworICAgIC8qIE1WX0NPTVBBUkVfRVggPT0gLTE6IGV4Y2VwdGlvbnMgYXJlIHByZXNlcnZlZCAqLworICAgIHJldCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCh2LCB3LCBQeV9FUSk7CisgICAgUHlfREVDUkVGKHYpOworICAgIFB5X0RFQ1JFRih3KTsKKworICAgIHJldHVybiByZXQ7Cit9CisKKy8qIFVucGFjayBhbmQgY29tcGFyZSBzaW5nbGUgaXRlbXMgb2YgcCBhbmQgcS4gSWYgYm90aCBwIGFuZCBxIGhhdmUgdGhlIHNhbWUKKyAgIHNpbmdsZSBlbGVtZW50IG5hdGl2ZSBmb3JtYXQsIHRoZSBjb21wYXJpc29uIHVzZXMgYSBmYXN0IHBhdGggKGdjYyBjcmVhdGVzCisgICBhIGp1bXAgdGFibGUgYW5kIGNvbnZlcnRzIG1lbWNweSBpbnRvIHNpbXBsZSBhc3NpZ25tZW50cyBvbiB4ODYveDY0KS4KKworICAgT3RoZXJ3aXNlLCB0aGUgY29tcGFyaXNvbiBpcyBkZWxlZ2F0ZWQgdG8gdGhlIHN0cnVjdCBtb2R1bGUsIHdoaWNoIGlzCisgICAzMC02MHggc2xvd2VyLiAqLworI2RlZmluZSBDTVBfU0lOR0xFKHAsIHEsIHR5cGUpIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0eXBlIHg7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHR5cGUgeTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbWVtY3B5KChjaGFyICopJngsIHAsIHNpemVvZiB4KTsgXAorICAgICAgICBtZW1jcHkoKGNoYXIgKikmeSwgcSwgc2l6ZW9mIHkpOyBcCisgICAgICAgIGVxdWFsID0gKHggPT0geSk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQordW5wYWNrX2NtcChjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICpxLCBjaGFyIGZtdCwKKyAgICAgICAgICAgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcSkKK3sKKyAgICBpbnQgZXF1YWw7CisKKyAgICBzd2l0Y2ggKGZtdCkgeworCisgICAgLyogc2lnbmVkIGludGVnZXJzIGFuZCBmYXN0IHBhdGggZm9yICdCJyAqLworICAgIGNhc2UgJ0InOiByZXR1cm4gKigodW5zaWduZWQgY2hhciAqKXApID09ICooKHVuc2lnbmVkIGNoYXIgKilxKTsKKyAgICBjYXNlICdiJzogcmV0dXJuICooKHNpZ25lZCBjaGFyICopcCkgPT0gKigoc2lnbmVkIGNoYXIgKilxKTsKKyAgICBjYXNlICdoJzogQ01QX1NJTkdMRShwLCBxLCBzaG9ydCk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdpJzogQ01QX1NJTkdMRShwLCBxLCBpbnQpOyByZXR1cm4gZXF1YWw7CisgICAgY2FzZSAnbCc6IENNUF9TSU5HTEUocCwgcSwgbG9uZyk7IHJldHVybiBlcXVhbDsKKworICAgIC8qIGJvb2xlYW4gKi8KKyAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAorICAgIGNhc2UgJz8nOiBDTVBfU0lOR0xFKHAsIHEsIF9Cb29sKTsgcmV0dXJuIGVxdWFsOworICAgICNlbHNlCisgICAgY2FzZSAnPyc6IENNUF9TSU5HTEUocCwgcSwgY2hhcik7IHJldHVybiBlcXVhbDsKKyAgICAjZW5kaWYKKworICAgIC8qIHVuc2lnbmVkIGludGVnZXJzICovCisgICAgY2FzZSAnSCc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgc2hvcnQpOyByZXR1cm4gZXF1YWw7CisgICAgY2FzZSAnSSc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgaW50KTsgcmV0dXJuIGVxdWFsOworICAgIGNhc2UgJ0wnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIGxvbmcpOyByZXR1cm4gZXF1YWw7CisKKyAgICAvKiBuYXRpdmUgNjQtYml0ICovCisgICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgY2FzZSAncSc6IENNUF9TSU5HTEUocCwgcSwgUFlfTE9OR19MT05HKTsgcmV0dXJuIGVxdWFsOworICAgIGNhc2UgJ1EnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7IHJldHVybiBlcXVhbDsKKyAgICAjZW5kaWYKKworICAgIC8qIHNzaXplX3QgYW5kIHNpemVfdCAqLworICAgIGNhc2UgJ24nOiBDTVBfU0lOR0xFKHAsIHEsIFB5X3NzaXplX3QpOyByZXR1cm4gZXF1YWw7CisgICAgY2FzZSAnTic6IENNUF9TSU5HTEUocCwgcSwgc2l6ZV90KTsgcmV0dXJuIGVxdWFsOworCisgICAgLyogZmxvYXRzICovCisgICAgLyogWFhYIERCTF9FUFNJTE9OPyAqLworICAgIGNhc2UgJ2YnOiBDTVBfU0lOR0xFKHAsIHEsIGZsb2F0KTsgcmV0dXJuIGVxdWFsOworICAgIGNhc2UgJ2QnOiBDTVBfU0lOR0xFKHAsIHEsIGRvdWJsZSk7IHJldHVybiBlcXVhbDsKKworICAgIC8qIGJ5dGVzIG9iamVjdCAqLworICAgIGNhc2UgJ2MnOiByZXR1cm4gKnAgPT0gKnE7CisKKyAgICAvKiBwb2ludGVyICovCisgICAgY2FzZSAnUCc6IENNUF9TSU5HTEUocCwgcSwgdm9pZCAqKTsgcmV0dXJuIGVxdWFsOworCisgICAgLyogdXNlIHRoZSBzdHJ1Y3QgbW9kdWxlICovCisgICAgY2FzZSAnXyc6CisgICAgICAgIGFzc2VydCh1bnBhY2tfcCk7CisgICAgICAgIGFzc2VydCh1bnBhY2tfcSk7CisgICAgICAgIHJldHVybiBzdHJ1Y3RfdW5wYWNrX2NtcChwLCBxLCB1bnBhY2tfcCwgdW5wYWNrX3EpOworICAgIH0KKworICAgIC8qIE5PVCBSRUFDSEVEICovCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgIm1lbW9yeXZpZXc6IGludGVybmFsIGVycm9yIGluIHJpY2hjb21wYXJlIik7CisgICAgcmV0dXJuIE1WX0NPTVBBUkVfRVg7Cit9CisKKy8qIEJhc2UgY2FzZSBmb3IgcmVjdXJzaXZlIGFycmF5IGNvbXBhcmlzb25zLiBBc3N1bXB0aW9uOiBuZGltID09IDEuICovCitzdGF0aWMgaW50CitjbXBfYmFzZShjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICpxLCBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwKKyAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnBzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpwc3Vib2Zmc2V0cywKKyAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnFzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpxc3Vib2Zmc2V0cywKKyAgICAgICAgIGNoYXIgZm10LCBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja19wLCBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja19xKQoreworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQgZXF1YWw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IHArPXBzdHJpZGVzWzBdLCBxKz1xc3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKnhwID0gQURKVVNUX1BUUihwLCBwc3Vib2Zmc2V0cyk7CisgICAgICAgIGNvbnN0IGNoYXIgKnhxID0gQURKVVNUX1BUUihxLCBxc3Vib2Zmc2V0cyk7CisgICAgICAgIGVxdWFsID0gdW5wYWNrX2NtcCh4cCwgeHEsIGZtdCwgdW5wYWNrX3AsIHVucGFja19xKTsKKyAgICAgICAgaWYgKGVxdWFsIDw9IDApCisgICAgICAgICAgICByZXR1cm4gZXF1YWw7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgdHdvIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5cyB0aGF0IGhhdmUgdGhlIHNhbWUKKyAgIGxvZ2ljYWwgc3RydWN0dXJlLiBBc3N1bXB0aW9uOiBuZGltID49IDEuICovCitzdGF0aWMgaW50CitjbXBfcmVjKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKnEsCisgICAgICAgIFB5X3NzaXplX3QgbmRpbSwgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsCisgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnBzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpwc3Vib2Zmc2V0cywKKyAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqcXN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKnFzdWJvZmZzZXRzLAorICAgICAgICBjaGFyIGZtdCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcSkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IGVxdWFsOworCisgICAgYXNzZXJ0KG5kaW0gPj0gMSk7CisgICAgYXNzZXJ0KHNoYXBlICE9IE5VTEwpOworICAgIGFzc2VydChwc3RyaWRlcyAhPSBOVUxMKTsKKyAgICBhc3NlcnQocXN0cmlkZXMgIT0gTlVMTCk7CisKKyAgICBpZiAobmRpbSA9PSAxKSB7CisgICAgICAgIHJldHVybiBjbXBfYmFzZShwLCBxLCBzaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBzdHJpZGVzLCBwc3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHFzdHJpZGVzLCBxc3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCwgdW5wYWNrX3AsIHVucGFja19xKTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IHArPXBzdHJpZGVzWzBdLCBxKz1xc3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKnhwID0gQURKVVNUX1BUUihwLCBwc3Vib2Zmc2V0cyk7CisgICAgICAgIGNvbnN0IGNoYXIgKnhxID0gQURKVVNUX1BUUihxLCBxc3Vib2Zmc2V0cyk7CisgICAgICAgIGVxdWFsID0gY21wX3JlYyh4cCwgeHEsIG5kaW0tMSwgc2hhcGUrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBzdHJpZGVzKzEsIHBzdWJvZmZzZXRzID8gcHN1Ym9mZnNldHMrMSA6IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICBxc3RyaWRlcysxLCBxc3Vib2Zmc2V0cyA/IHFzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgZm10LCB1bnBhY2tfcCwgdW5wYWNrX3EpOworICAgICAgICBpZiAoZXF1YWwgPD0gMCkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbDsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9yaWNoY29tcGFyZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5X2J1ZmZlciB3YnVmLCAqdnY7CisgICAgUHlfYnVmZmVyICp3dyA9IE5VTEw7CisgICAgc3RydWN0IHVucGFja2VyICp1bnBhY2tfdiA9IE5VTEw7CisgICAgc3RydWN0IHVucGFja2VyICp1bnBhY2tfdyA9IE5VTEw7CisgICAgY2hhciB2Zm10LCB3Zm10OworICAgIGludCBlcXVhbCA9IE1WX0NPTVBBUkVfTk9UX0lNUEw7CisKKyAgICBpZiAob3AgIT0gUHlfRVEgJiYgb3AgIT0gUHlfTkUpCisgICAgICAgIGdvdG8gcmVzdWx0OyAvKiBQeV9Ob3RJbXBsZW1lbnRlZCAqLworCisgICAgYXNzZXJ0KFB5TWVtb3J5Vmlld19DaGVjayh2KSk7CisgICAgaWYgKEJBU0VfSU5BQ0NFU1NJQkxFKHYpKSB7CisgICAgICAgIGVxdWFsID0gKHYgPT0gdyk7CisgICAgICAgIGdvdG8gcmVzdWx0OworICAgIH0KKyAgICB2diA9IFZJRVdfQUREUih2KTsKKworICAgIGlmIChQeU1lbW9yeVZpZXdfQ2hlY2sodykpIHsKKyAgICAgICAgaWYgKEJBU0VfSU5BQ0NFU1NJQkxFKHcpKSB7CisgICAgICAgICAgICBlcXVhbCA9ICh2ID09IHcpOworICAgICAgICAgICAgZ290byByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgd3cgPSBWSUVXX0FERFIodyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHcsICZ3YnVmLCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBnb3RvIHJlc3VsdDsgLyogUHlfTm90SW1wbGVtZW50ZWQgKi8KKyAgICAgICAgfQorICAgICAgICB3dyA9ICZ3YnVmOworICAgIH0KKworICAgIGlmICghZXF1aXZfc2hhcGUodnYsIHd3KSkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBlcXVhbCA9IDA7CisgICAgICAgIGdvdG8gcmVzdWx0OworICAgIH0KKworICAgIC8qIFVzZSBmYXN0IHVucGFja2luZyBmb3IgaWRlbnRpY2FsIHByaW1pdGl2ZSBDIHR5cGUgZm9ybWF0cy4gKi8KKyAgICBpZiAoZ2V0X25hdGl2ZV9mbXRjaGFyKCZ2Zm10LCB2di0+Zm9ybWF0KSA8IDApCisgICAgICAgIHZmbXQgPSAnXyc7CisgICAgaWYgKGdldF9uYXRpdmVfZm10Y2hhcigmd2ZtdCwgd3ctPmZvcm1hdCkgPCAwKQorICAgICAgICB3Zm10ID0gJ18nOworICAgIGlmICh2Zm10ID09ICdfJyB8fCB3Zm10ID09ICdfJyB8fCB2Zm10ICE9IHdmbXQpIHsKKyAgICAgICAgLyogVXNlIHN0cnVjdCBtb2R1bGUgdW5wYWNraW5nLiBOT1RFOiBFdmVuIGZvciBlcXVhbCBmb3JtYXQgc3RyaW5ncywKKyAgICAgICAgICAgbWVtY21wKCkgY2Fubm90IGJlIHVzZWQgZm9yIGl0ZW0gY29tcGFyaXNvbiBzaW5jZSBpdCB3b3VsZCBnaXZlCisgICAgICAgICAgIGluY29ycmVjdCByZXN1bHRzIGluIHRoZSBjYXNlIG9mIE5hTnMgb3IgdW5pbml0aWFsaXplZCBwYWRkaW5nCisgICAgICAgICAgIGJ5dGVzLiAqLworICAgICAgICB2Zm10ID0gJ18nOworICAgICAgICB1bnBhY2tfdiA9IHN0cnVjdF9nZXRfdW5wYWNrZXIodnYtPmZvcm1hdCwgdnYtPml0ZW1zaXplKTsKKyAgICAgICAgaWYgKHVucGFja192ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVxdWFsID0gZml4X3N0cnVjdF9lcnJvcl9pbnQoKTsKKyAgICAgICAgICAgIGdvdG8gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHVucGFja193ID0gc3RydWN0X2dldF91bnBhY2tlcih3dy0+Zm9ybWF0LCB3dy0+aXRlbXNpemUpOworICAgICAgICBpZiAodW5wYWNrX3cgPT0gTlVMTCkgeworICAgICAgICAgICAgZXF1YWwgPSBmaXhfc3RydWN0X2Vycm9yX2ludCgpOworICAgICAgICAgICAgZ290byByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodnYtPm5kaW0gPT0gMCkgeworICAgICAgICBlcXVhbCA9IHVucGFja19jbXAodnYtPmJ1Ziwgd3ctPmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZmbXQsIHVucGFja192LCB1bnBhY2tfdyk7CisgICAgfQorICAgIGVsc2UgaWYgKHZ2LT5uZGltID09IDEpIHsKKyAgICAgICAgZXF1YWwgPSBjbXBfYmFzZSh2di0+YnVmLCB3dy0+YnVmLCB2di0+c2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdnYtPnN0cmlkZXMsIHZ2LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIHd3LT5zdHJpZGVzLCB3dy0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICB2Zm10LCB1bnBhY2tfdiwgdW5wYWNrX3cpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZXF1YWwgPSBjbXBfcmVjKHZ2LT5idWYsIHd3LT5idWYsIHZ2LT5uZGltLCB2di0+c2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICB2di0+c3RyaWRlcywgdnYtPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICB3dy0+c3RyaWRlcywgd3ctPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICB2Zm10LCB1bnBhY2tfdiwgdW5wYWNrX3cpOworICAgIH0KKworcmVzdWx0OgorICAgIGlmIChlcXVhbCA8IDApIHsKKyAgICAgICAgaWYgKGVxdWFsID09IE1WX0NPTVBBUkVfTk9UX0lNUEwpCisgICAgICAgICAgICByZXMgPSBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgZWxzZSAvKiBleGNlcHRpb24gKi8KKyAgICAgICAgICAgIHJlcyA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKChlcXVhbCAmJiBvcCA9PSBQeV9FUSkgfHwgKCFlcXVhbCAmJiBvcCA9PSBQeV9ORSkpCisgICAgICAgIHJlcyA9IFB5X1RydWU7CisgICAgZWxzZQorICAgICAgICByZXMgPSBQeV9GYWxzZTsKKworICAgIGlmICh3dyA9PSAmd2J1ZikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSh3dyk7CisKKyAgICB1bnBhY2tlcl9mcmVlKHVucGFja192KTsKKyAgICB1bnBhY2tlcl9mcmVlKHVucGFja193KTsKKworICAgIFB5X1hJTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeV9oYXNoX3QKK21lbW9yeV9oYXNoKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+aGFzaCA9PSAtMSkgeworICAgICAgICBQeV9idWZmZXIgKnZpZXcgPSAmc2VsZi0+dmlldzsKKyAgICAgICAgY2hhciAqbWVtID0gdmlldy0+YnVmOworCisgICAgICAgIENIRUNLX1JFTEVBU0VEX0lOVChzZWxmKTsKKworICAgICAgICBpZiAoIXZpZXctPnJlYWRvbmx5KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGhhc2ggd3JpdGFibGUgbWVtb3J5dmlldyBvYmplY3QiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmlldy0+b2JqICE9IE5VTEwgJiYgUHlPYmplY3RfSGFzaCh2aWV3LT5vYmopID09IC0xKSB7CisgICAgICAgICAgICAvKiBLZWVwIHRoZSBvcmlnaW5hbCBlcnJvciBtZXNzYWdlICovCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIU1WX0NfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpIHsKKyAgICAgICAgICAgIG1lbSA9IFB5TWVtX01hbGxvYyh2aWV3LT5sZW4pOworICAgICAgICAgICAgaWYgKG1lbSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYnVmZmVyX3RvX2NvbnRpZ3VvdXMobWVtLCB2aWV3LCAnQycpIDwgMCkgeworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUobWVtKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBDYW4ndCBmYWlsICovCisgICAgICAgIHNlbGYtPmhhc2ggPSBfUHlfSGFzaEJ5dGVzKCh1bnNpZ25lZCBjaGFyICopbWVtLCB2aWV3LT5sZW4pOworCisgICAgICAgIGlmIChtZW0gIT0gdmlldy0+YnVmKQorICAgICAgICAgICAgUHlNZW1fRnJlZShtZW0pOworICAgIH0KKworICAgIHJldHVybiBzZWxmLT5oYXNoOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19JbnRUdXBsZUZyb21Tc2l6ZXQoaW50IGxlbiwgUHlfc3NpemVfdCAqdmFscykKK3sKKyAgICBpbnQgaTsKKyAgICBQeU9iamVjdCAqbzsKKyAgICBQeU9iamVjdCAqaW50VHVwbGU7CisKKyAgICBpZiAodmFscyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlUdXBsZV9OZXcoMCk7CisKKyAgICBpbnRUdXBsZSA9IFB5VHVwbGVfTmV3KGxlbik7CisgICAgaWYgKCFpbnRUdXBsZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKKyAgICAgICAgbyA9IFB5TG9uZ19Gcm9tU3NpemVfdCh2YWxzW2ldKTsKKyAgICAgICAgaWYgKCFvKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaW50VHVwbGUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbnRUdXBsZSwgaSwgbyk7CisgICAgfQorICAgIHJldHVybiBpbnRUdXBsZTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9vYmpfZ2V0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKK3sKKyAgICBQeV9idWZmZXIgKnZpZXcgPSAmc2VsZi0+dmlldzsKKworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworICAgIGlmICh2aWV3LT5vYmogPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHZpZXctPm9iaik7CisgICAgcmV0dXJuIHZpZXctPm9iajsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9uYnl0ZXNfZ2V0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKK3sKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnZpZXcubGVuKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIG1lbW9yeV9mb3JtYXRfZ2V0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKIHsKQEAgLTM0MywzMSArMjgwNiw2IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fSW50VHVwbGVGcm9tU3NpemV0KGludCBsZW4sIFB5X3NzaXplX3QgKnZhbHMpCi17Ci0gICAgaW50IGk7Ci0gICAgUHlPYmplY3QgKm87Ci0gICAgUHlPYmplY3QgKmludFR1cGxlOwotCi0gICAgaWYgKHZhbHMgPT0gTlVMTCkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KLSAgICBpbnRUdXBsZSA9IFB5VHVwbGVfTmV3KGxlbik7Ci0gICAgaWYgKCFpbnRUdXBsZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKLSAgICAgICAgbyA9IFB5TG9uZ19Gcm9tU3NpemVfdCh2YWxzW2ldKTsKLSAgICAgICAgaWYgKCFvKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaW50VHVwbGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbnRUdXBsZSwgaSwgbyk7Ci0gICAgfQotICAgIHJldHVybiBpbnRUdXBsZTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKIG1lbW9yeV9zaGFwZV9nZXQoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQogewogICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOwpAQCAtNDAyLDQyNSArMjg0MCw2MCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+dmlldy5uZGltKTsKIH0KIAotc3RhdGljIFB5R2V0U2V0RGVmIG1lbW9yeV9nZXRzZXRsaXN0W10gPXsKLSAgICB7ImZvcm1hdCIsICAgICAgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X2Zvcm1hdF9nZXQsICAgICAgTlVMTCwgTlVMTH0sCi0gICAgeyJpdGVtc2l6ZSIsICAgICAgICAoZ2V0dGVyKW1lbW9yeV9pdGVtc2l6ZV9nZXQsICAgIE5VTEwsIE5VTEx9LAotICAgIHsic2hhcGUiLCAgICAgICAgICAgKGdldHRlciltZW1vcnlfc2hhcGVfZ2V0LCAgICAgICBOVUxMLCBOVUxMfSwKLSAgICB7InN0cmlkZXMiLCAgICAgICAgIChnZXR0ZXIpbWVtb3J5X3N0cmlkZXNfZ2V0LCAgICAgTlVMTCwgTlVMTH0sCi0gICAgeyJzdWJvZmZzZXRzIiwgICAgICAoZ2V0dGVyKW1lbW9yeV9zdWJvZmZzZXRzX2dldCwgIE5VTEwsIE5VTEx9LAotICAgIHsicmVhZG9ubHkiLCAgICAgICAgKGdldHRlciltZW1vcnlfcmVhZG9ubHlfZ2V0LCAgICBOVUxMLCBOVUxMfSwKLSAgICB7Im5kaW0iLCAgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X25kaW1fZ2V0LCAgICAgICAgTlVMTCwgTlVMTH0sCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2NfY29udGlndW91cyhQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKE1WX0NfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2ZfY29udGlndW91cyhQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKE1WX0ZfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2NvbnRpZ3VvdXMoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhNVl9BTllfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpOworfQorCitzdGF0aWMgUHlHZXRTZXREZWYgbWVtb3J5X2dldHNldGxpc3RbXSA9IHsKKyAgICB7Im9iaiIsICAgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X29ial9nZXQsICAgICAgICBOVUxMLCBOVUxMfSwKKyAgICB7Im5ieXRlcyIsICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X25ieXRlc19nZXQsICAgICBOVUxMLCBOVUxMfSwKKyAgICB7InJlYWRvbmx5IiwgICAgICAgIChnZXR0ZXIpbWVtb3J5X3JlYWRvbmx5X2dldCwgICBOVUxMLCBOVUxMfSwKKyAgICB7Iml0ZW1zaXplIiwgICAgICAgIChnZXR0ZXIpbWVtb3J5X2l0ZW1zaXplX2dldCwgICBOVUxMLCBOVUxMfSwKKyAgICB7ImZvcm1hdCIsICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X2Zvcm1hdF9nZXQsICAgICBOVUxMLCBOVUxMfSwKKyAgICB7Im5kaW0iLCAgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X25kaW1fZ2V0LCAgICAgICBOVUxMLCBOVUxMfSwKKyAgICB7InNoYXBlIiwgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X3NoYXBlX2dldCwgICAgICBOVUxMLCBOVUxMfSwKKyAgICB7InN0cmlkZXMiLCAgICAgICAgIChnZXR0ZXIpbWVtb3J5X3N0cmlkZXNfZ2V0LCAgICBOVUxMLCBOVUxMfSwKKyAgICB7InN1Ym9mZnNldHMiLCAgICAgIChnZXR0ZXIpbWVtb3J5X3N1Ym9mZnNldHNfZ2V0LCBOVUxMLCBOVUxMfSwKKyAgICB7ImNfY29udGlndW91cyIsICAgIChnZXR0ZXIpbWVtb3J5X2NfY29udGlndW91cywgICBOVUxMLCBOVUxMfSwKKyAgICB7ImZfY29udGlndW91cyIsICAgIChnZXR0ZXIpbWVtb3J5X2ZfY29udGlndW91cywgICBOVUxMLCBOVUxMfSwKKyAgICB7ImNvbnRpZ3VvdXMiLCAgICAgIChnZXR0ZXIpbWVtb3J5X2NvbnRpZ3VvdXMsICAgICBOVUxMLCBOVUxMfSwKICAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sCiB9OwogCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfdG9ieXRlcyhQeU1lbW9yeVZpZXdPYmplY3QgKm1lbSwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICBDSEVDS19SRUxFQVNFRChtZW0pOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKAotICAgICAgICAgICAgKFB5T2JqZWN0ICopICZQeUJ5dGVzX1R5cGUsIG1lbSwgTlVMTCk7Ci19Ci0KLS8qIFRPRE86IHJld3JpdGUgdGhpcyBmdW5jdGlvbiB1c2luZyB0aGUgc3RydWN0IG1vZHVsZSB0byB1bnBhY2sKLSAgIGVhY2ggYnVmZmVyIGl0ZW0gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV90b2xpc3QoUHlNZW1vcnlWaWV3T2JqZWN0ICptZW0sIFB5T2JqZWN0ICpub2FyZ3MpCi17Ci0gICAgUHlfYnVmZmVyICp2aWV3ID0gJihtZW0tPnZpZXcpOwotICAgIFB5X3NzaXplX3QgaTsKLSAgICBQeU9iamVjdCAqcmVzLCAqaXRlbTsKLSAgICBjaGFyICpidWY7Ci0KLSAgICBDSEVDS19SRUxFQVNFRChtZW0pOwotICAgIGlmIChzdHJjbXAodmlldy0+Zm9ybWF0LCAiQiIpIHx8IHZpZXctPml0ZW1zaXplICE9IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsIAotICAgICAgICAgICAgICAgICJ0b2xpc3QoKSBvbmx5IHN1cHBvcnRzIGJ5dGUgdmlld3MiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmICh2aWV3LT5uZGltICE9IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsIAotICAgICAgICAgICAgICAgICJ0b2xpc3QoKSBvbmx5IHN1cHBvcnRzIG9uZS1kaW1lbnNpb25hbCBvYmplY3RzIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXMgPSBQeUxpc3RfTmV3KHZpZXctPmxlbik7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYgPSB2aWV3LT5idWY7Ci0gICAgZm9yIChpID0gMDsgaSA8IHZpZXctPmxlbjsgaSsrKSB7Ci0gICAgICAgIGl0ZW0gPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgY2hhcikgKmJ1Zik7Ci0gICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHJlcywgaSwgaXRlbSk7Ci0gICAgICAgIGJ1ZisrOwotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgdm9pZAotZG9fcmVsZWFzZShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPnZpZXcub2JqICE9IE5VTEwpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmKHNlbGYtPnZpZXcpKTsKLSAgICB9Ci0gICAgc2VsZi0+dmlldy5vYmogPSBOVUxMOwotICAgIHNlbGYtPnZpZXcuYnVmID0gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV9lbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7Ci0gICAgUHlfSU5DUkVGKHNlbGYpOwotICAgIHJldHVybiBzZWxmOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X2V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGRvX3JlbGVhc2UoKFB5TWVtb3J5Vmlld09iamVjdCAqKSBzZWxmKTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQogc3RhdGljIFB5TWV0aG9kRGVmIG1lbW9yeV9tZXRob2RzW10gPSB7Ci0gICAgeyJyZWxlYXNlIiwgbWVtb3J5X2V4aXQsIE1FVEhfTk9BUkdTfSwKLSAgICB7InRvYnl0ZXMiLCAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvYnl0ZXMsIE1FVEhfTk9BUkdTLCBOVUxMfSwKLSAgICB7InRvbGlzdCIsIChQeUNGdW5jdGlvbiltZW1vcnlfdG9saXN0LCBNRVRIX05PQVJHUywgTlVMTH0sCi0gICAgeyJfX2VudGVyX18iLCBtZW1vcnlfZW50ZXIsIE1FVEhfTk9BUkdTfSwKLSAgICB7Il9fZXhpdF9fIiwgbWVtb3J5X2V4aXQsIE1FVEhfVkFSQVJHU30sCi0gICAge05VTEwsICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwotfTsKLQotCi1zdGF0aWMgdm9pZAotbWVtb3J5X2RlYWxsb2MoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQotewotICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOwotICAgIGRvX3JlbGVhc2Uoc2VsZik7Ci0gICAgUHlPYmplY3RfR0NfRGVsKHNlbGYpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X3JlcHIoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQotewotICAgIGlmIChJU19SRUxFQVNFRChzZWxmKSkKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8cmVsZWFzZWQgbWVtb3J5IGF0ICVwPiIsIHNlbGYpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8bWVtb3J5IGF0ICVwPiIsIHNlbGYpOwotfQotCi0vKiBTZXF1ZW5jZSBtZXRob2RzICovCi1zdGF0aWMgUHlfc3NpemVfdAotbWVtb3J5X2xlbmd0aChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCi17Ci0gICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOwotICAgIHJldHVybiBnZXRfc2hhcGUwKCZzZWxmLT52aWV3KTsKLX0KLQotLyogQWx0ZXJuYXRlIHZlcnNpb24gb2YgbWVtb3J5X3N1YmNyaXB0IHRoYXQgb25seSBhY2NlcHRzIGluZGljZXMuCi0gICBVc2VkIGJ5IFB5U2VxSXRlcl9OZXcoKS4KLSovCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X2l0ZW0oUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IHJlc3VsdCkKLXsKLSAgICBQeV9idWZmZXIgKnZpZXcgPSAmKHNlbGYtPnZpZXcpOwotCi0gICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7Ci0gICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGluZGV4aW5nIG9mIDAtZGltIG1lbW9yeSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKHZpZXctPm5kaW0gPT0gMSkgewotICAgICAgICAvKiBSZXR1cm4gYSBieXRlcyBvYmplY3QgKi8KLSAgICAgICAgY2hhciAqcHRyOwotICAgICAgICBwdHIgPSAoY2hhciAqKXZpZXctPmJ1ZjsKLSAgICAgICAgaWYgKHJlc3VsdCA8IDApIHsKLSAgICAgICAgICAgIHJlc3VsdCArPSBnZXRfc2hhcGUwKHZpZXcpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgocmVzdWx0IDwgMCkgfHwgKHJlc3VsdCA+PSBnZXRfc2hhcGUwKHZpZXcpKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAodmlldy0+c3RyaWRlcyA9PSBOVUxMKQotICAgICAgICAgICAgcHRyICs9IHZpZXctPml0ZW1zaXplICogcmVzdWx0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwdHIgKz0gdmlldy0+c3RyaWRlc1swXSAqIHJlc3VsdDsKLSAgICAgICAgaWYgKHZpZXctPnN1Ym9mZnNldHMgIT0gTlVMTCAmJgotICAgICAgICAgICAgdmlldy0+c3Vib2Zmc2V0c1swXSA+PSAwKSB7Ci0gICAgICAgICAgICBwdHIgPSAqKChjaGFyICoqKXB0cikgKyB2aWV3LT5zdWJvZmZzZXRzWzBdOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHB0ciwgdmlldy0+aXRlbXNpemUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFJldHVybiBhIG5ldyBtZW1vcnktdmlldyBvYmplY3QgKi8KLSAgICAgICAgUHlfYnVmZmVyIG5ld3ZpZXc7Ci0gICAgICAgIG1lbXNldCgmbmV3dmlldywgMCwgc2l6ZW9mKG5ld3ZpZXcpKTsKLSAgICAgICAgLyogWFhYOiAgVGhpcyBuZWVkcyB0byBiZSBmaXhlZCBzbyBpdCBhY3R1YWxseSByZXR1cm5zIGEgc3ViLXZpZXcgKi8KLSAgICAgICAgcmV0dXJuIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCZuZXd2aWV3KTsKLSAgICB9Ci19Ci0KLS8qCi0gIG1lbVtvYmpdIHJldHVybnMgYSBieXRlcyBvYmplY3QgaG9sZGluZyB0aGUgZGF0YSBmb3Igb25lIGVsZW1lbnQgaWYKLSAgICAgICAgICAgb2JqIGZ1bGx5IGluZGV4ZXMgdGhlIG1lbW9yeSB2aWV3IG9yIGFub3RoZXIgbWVtb3J5LXZpZXcgb2JqZWN0Ci0gICAgICAgICAgIGlmIGl0IGRvZXMgbm90LgotCi0gICAgICAgICAgIDAtZCBtZW1vcnktdmlldyBvYmplY3RzIGNhbiBiZSByZWZlcmVuY2VkIHVzaW5nIC4uLiBvciAoKSBidXQKLSAgICAgICAgICAgbm90IHdpdGggYW55dGhpbmcgZWxzZS4KLSAqLwotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV9zdWJzY3JpcHQoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5KQotewotICAgIFB5X2J1ZmZlciAqdmlldzsKLSAgICB2aWV3ID0gJihzZWxmLT52aWV3KTsKLSAgICAKLSAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKLSAgICBpZiAodmlldy0+bmRpbSA9PSAwKSB7Ci0gICAgICAgIGlmIChrZXkgPT0gUHlfRWxsaXBzaXMgfHwKLSAgICAgICAgICAgIChQeVR1cGxlX0NoZWNrKGtleSkgJiYgUHlUdXBsZV9HRVRfU0laRShrZXkpPT0wKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgaW5kZXhpbmcgb2YgMC1kaW0gbWVtb3J5Iik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgcmVzdWx0OwotICAgICAgICByZXN1bHQgPSBQeU51bWJlcl9Bc1NzaXplX3Qoa2V5LCBOVUxMKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXR1cm4gbWVtb3J5X2l0ZW0oc2VsZiwgcmVzdWx0KTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlTbGljZV9DaGVjayhrZXkpKSB7Ci0gICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoOwotCi0gICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChrZXksIGdldF9zaGFwZTAodmlldyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIGlmIChzdGVwID09IDEgJiYgdmlldy0+bmRpbSA9PSAxKSB7Ci0gICAgICAgICAgICBQeV9idWZmZXIgbmV3dmlldzsKLSAgICAgICAgICAgIHZvaWQgKm5ld2J1ZiA9IChjaGFyICopIHZpZXctPmJ1ZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzdGFydCAqIHZpZXctPml0ZW1zaXplOwotICAgICAgICAgICAgaW50IG5ld2ZsYWdzID0gdmlldy0+cmVhZG9ubHkKLSAgICAgICAgICAgICAgICAgICAgPyBQeUJVRl9DT05USUdfUk8gOiBQeUJVRl9DT05USUc7Ci0gICAgCi0gICAgICAgICAgICAvKiBYWFggVGhlcmUgc2hvdWxkIGJlIGFuIEFQSSB0byBjcmVhdGUgYSBzdWJidWZmZXIgKi8KLSAgICAgICAgICAgIGlmICh2aWV3LT5vYmogIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodmlldy0+b2JqLCAmbmV3dmlldywgbmV3ZmxhZ3MpID09IC0xKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG5ld3ZpZXcgPSAqdmlldzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5ld3ZpZXcuYnVmID0gbmV3YnVmOwotICAgICAgICAgICAgbmV3dmlldy5sZW4gPSBzbGljZWxlbmd0aCAqIG5ld3ZpZXcuaXRlbXNpemU7Ci0gICAgICAgICAgICBuZXd2aWV3LmZvcm1hdCA9IHZpZXctPmZvcm1hdDsKLSAgICAgICAgICAgIG5ld3ZpZXcuc2hhcGUgPSAmKG5ld3ZpZXcuc21hbGx0YWJsZVswXSk7Ci0gICAgICAgICAgICBuZXd2aWV3LnNoYXBlWzBdID0gc2xpY2VsZW5ndGg7Ci0gICAgICAgICAgICBuZXd2aWV3LnN0cmlkZXMgPSAmKG5ld3ZpZXcuaXRlbXNpemUpOwotICAgICAgICAgICAgcmV0dXJuIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCZuZXd2aWV3KTsKLSAgICAgICAgfQotICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgImNhbm5vdCBpbmRleCBtZW1vcnkgdXNpbmcgXCIlLjIwMHNcIiIsIAotICAgICAgICBrZXktPm9iX3R5cGUtPnRwX25hbWUpOwotICAgIHJldHVybiBOVUxMOwotfQotCi0KLS8qIE5lZWQgdG8gc3VwcG9ydCBhc3NpZ25pbmcgbWVtb3J5IGlmIHdlIGNhbiAqLwotc3RhdGljIGludAotbWVtb3J5X2Fzc19zdWIoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCi17Ci0gICAgUHlfc3NpemVfdCBzdGFydCwgbGVuLCBieXRlbGVuOwotICAgIFB5X2J1ZmZlciBzcmN2aWV3OwotICAgIFB5X2J1ZmZlciAqdmlldyA9ICYoc2VsZi0+dmlldyk7Ci0gICAgY2hhciAqc3JjYnVmLCAqZGVzdGJ1ZjsKLQotICAgIENIRUNLX1JFTEVBU0VEX0lOVChzZWxmKTsKLSAgICBpZiAodmlldy0+cmVhZG9ubHkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJjYW5ub3QgbW9kaWZ5IHJlYWQtb25seSBtZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBkZWxldGUgbWVtb3J5Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKHZpZXctPm5kaW0gIT0gMSkgewotICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChQeUluZGV4X0NoZWNrKGtleSkpIHsKLSAgICAgICAgc3RhcnQgPSBQeU51bWJlcl9Bc1NzaXplX3Qoa2V5LCBOVUxMKTsKLSAgICAgICAgaWYgKHN0YXJ0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmIChzdGFydCA8IDApIHsKLSAgICAgICAgICAgIHN0YXJ0ICs9IGdldF9zaGFwZTAodmlldyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKChzdGFydCA8IDApIHx8IChzdGFydCA+PSBnZXRfc2hhcGUwKHZpZXcpKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImluZGV4IG91dCBvZiBib3VuZHMiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBsZW4gPSAxOwotICAgIH0KLSAgICBlbHNlIGlmIChQeVNsaWNlX0NoZWNrKGtleSkpIHsKLSAgICAgICAgUHlfc3NpemVfdCBzdG9wLCBzdGVwOwotCi0gICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChrZXksIGdldF9zaGFwZTAodmlldyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZsZW4pIDwgMCkgewotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzdGVwICE9IDEpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiY2Fubm90IGluZGV4IG1lbW9yeSB1c2luZyBcIiUuMjAwc1wiIiwgCi0gICAgICAgICAgICBrZXktPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodmFsdWUsICZzcmN2aWV3LCBQeUJVRl9DT05USUdfUk8pID09IC0xKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogWFhYIHNob3VsZCB3ZSBhbGxvdyBhc3NpZ25tZW50IG9mIGRpZmZlcmVudCBpdGVtIHNpemVzCi0gICAgICAgYXMgbG9uZyBhcyB0aGUgYnl0ZSBsZW5ndGggaXMgdGhlIHNhbWU/Ci0gICAgICAgKGUuZy4gYXNzaWduIDIgc2hvcnRzIHRvIGEgNC1ieXRlIHNsaWNlKSAqLwotICAgIGlmIChzcmN2aWV3Lml0ZW1zaXplICE9IHZpZXctPml0ZW1zaXplKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAibWlzbWF0Y2hpbmcgaXRlbSBzaXplcyBmb3IgXCIlLjIwMHNcIiBhbmQgXCIlLjIwMHNcIiIsIAotICAgICAgICAgICAgdmlldy0+b2JqLT5vYl90eXBlLT50cF9uYW1lLCBzcmN2aWV3Lm9iai0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIGdvdG8gX2Vycm9yOwotICAgIH0KLSAgICBieXRlbGVuID0gbGVuICogdmlldy0+aXRlbXNpemU7Ci0gICAgaWYgKGJ5dGVsZW4gIT0gc3Jjdmlldy5sZW4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAiY2Fubm90IG1vZGlmeSBzaXplIG9mIG1lbW9yeXZpZXcgb2JqZWN0Iik7Ci0gICAgICAgIGdvdG8gX2Vycm9yOwotICAgIH0KLSAgICAvKiBEbyB0aGUgYWN0dWFsIGNvcHkgKi8KLSAgICBkZXN0YnVmID0gKGNoYXIgKikgdmlldy0+YnVmICsgc3RhcnQgKiB2aWV3LT5pdGVtc2l6ZTsKLSAgICBzcmNidWYgPSAoY2hhciAqKSBzcmN2aWV3LmJ1ZjsKLSAgICBpZiAoZGVzdGJ1ZiArIGJ5dGVsZW4gPCBzcmNidWYgfHwgc3JjYnVmICsgYnl0ZWxlbiA8IGRlc3RidWYpCi0gICAgICAgIC8qIE5vIG92ZXJsYXBwaW5nICovCi0gICAgICAgIG1lbWNweShkZXN0YnVmLCBzcmNidWYsIGJ5dGVsZW4pOwotICAgIGVsc2UKLSAgICAgICAgbWVtbW92ZShkZXN0YnVmLCBzcmNidWYsIGJ5dGVsZW4pOwotCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmc3Jjdmlldyk7Ci0gICAgcmV0dXJuIDA7Ci0KLV9lcnJvcjoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzcmN2aWV3KTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfcmljaGNvbXBhcmUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApCi17Ci0gICAgUHlfYnVmZmVyIHZ2LCB3dzsKLSAgICBpbnQgZXF1YWwgPSAwOwotICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICB2di5vYmogPSBOVUxMOwotICAgIHd3Lm9iaiA9IE5VTEw7Ci0gICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKQotICAgICAgICBnb3RvIF9ub3RpbXBsOwotICAgIGlmICgoUHlNZW1vcnlWaWV3X0NoZWNrKHYpICYmIElTX1JFTEVBU0VEKHYpKSB8fAotICAgICAgICAoUHlNZW1vcnlWaWV3X0NoZWNrKHcpICYmIElTX1JFTEVBU0VEKHcpKSkgewotICAgICAgICBlcXVhbCA9ICh2ID09IHcpOwotICAgICAgICBnb3RvIF9lbmQ7Ci0gICAgfQotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodiwgJnZ2LCBQeUJVRl9DT05USUdfUk8pID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGdvdG8gX25vdGltcGw7Ci0gICAgfQotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodywgJnd3LCBQeUJVRl9DT05USUdfUk8pID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGdvdG8gX25vdGltcGw7Ci0gICAgfQotCi0gICAgaWYgKHZ2Lml0ZW1zaXplICE9IHd3Lml0ZW1zaXplIHx8IHZ2LmxlbiAhPSB3dy5sZW4pCi0gICAgICAgIGdvdG8gX2VuZDsKLQotICAgIGVxdWFsID0gIW1lbWNtcCh2di5idWYsIHd3LmJ1ZiwgdnYubGVuKTsKLQotX2VuZDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2dik7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmd3cpOwotICAgIGlmICgoZXF1YWwgJiYgb3AgPT0gUHlfRVEpIHx8ICghZXF1YWwgJiYgb3AgPT0gUHlfTkUpKQotICAgICAgICByZXMgPSBQeV9UcnVlOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gUHlfRmFsc2U7Ci0gICAgUHlfSU5DUkVGKHJlcyk7Ci0gICAgcmV0dXJuIHJlczsKLQotX25vdGltcGw6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmdnYpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnd3KTsKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLX0KLQotCi1zdGF0aWMgaW50Ci1tZW1vcnlfdHJhdmVyc2UoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKLXsKLSAgICBpZiAoc2VsZi0+dmlldy5vYmogIT0gTlVMTCkKLSAgICAgICAgUHlfVklTSVQoc2VsZi0+dmlldy5vYmopOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci1tZW1vcnlfY2xlYXIoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQotewotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlbGYtPnZpZXcpOwotICAgIHJldHVybiAwOwotfQotCi0KLS8qIEFzIG1hcHBpbmcgKi8KLXN0YXRpYyBQeU1hcHBpbmdNZXRob2RzIG1lbW9yeV9hc19tYXBwaW5nID0gewotICAgIChsZW5mdW5jKW1lbW9yeV9sZW5ndGgsICAgICAgICAgICAgICAgLyogbXBfbGVuZ3RoICovCi0gICAgKGJpbmFyeWZ1bmMpbWVtb3J5X3N1YnNjcmlwdCwgICAgICAgICAvKiBtcF9zdWJzY3JpcHQgKi8KLSAgICAob2Jqb2JqYXJncHJvYyltZW1vcnlfYXNzX3N1YiwgICAgICAgIC8qIG1wX2Fzc19zdWJzY3JpcHQgKi8KLX07Ci0KLXN0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBtZW1vcnlfYXNfc2VxdWVuY2UgPSB7Ci0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2xlbmd0aCAqLwotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9jb25jYXQgKi8KLSAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfcmVwZWF0ICovCi0gICAgICAgIChzc2l6ZWFyZ2Z1bmMpbWVtb3J5X2l0ZW0sICAgICAgICAgIC8qIHNxX2l0ZW0gKi8KLX07Ci0KLS8qIEJ1ZmZlciBtZXRob2RzICovCi0KLXN0YXRpYyBQeUJ1ZmZlclByb2NzIG1lbW9yeV9hc19idWZmZXIgPSB7Ci0gICAgKGdldGJ1ZmZlcnByb2MpbWVtb3J5X2dldGJ1ZiwgICAgICAgICAvKiBiZl9nZXRidWZmZXIgKi8KLSAgICAocmVsZWFzZWJ1ZmZlcnByb2MpbWVtb3J5X3JlbGVhc2VidWYsIC8qIGJmX3JlbGVhc2VidWZmZXIgKi8KKyAgICB7InJlbGVhc2UiLCAgICAgKFB5Q0Z1bmN0aW9uKW1lbW9yeV9yZWxlYXNlLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgeyJ0b2J5dGVzIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHsidG9saXN0IiwgICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHsiY2FzdCIsICAgICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X2Nhc3QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBOVUxMfSwKKyAgICB7Il9fZW50ZXJfXyIsICAgbWVtb3J5X2VudGVyLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgeyJfX2V4aXRfXyIsICAgIG1lbW9yeV9leGl0LCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHtOVUxMLCAgICAgICAgICBOVUxMfQogfTsKIAogCiBQeVR5cGVPYmplY3QgUHlNZW1vcnlWaWV3X1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKLSAgICAibWVtb3J5dmlldyIsCi0gICAgc2l6ZW9mKFB5TWVtb3J5Vmlld09iamVjdCksCi0gICAgMCwKKyAgICAibWVtb3J5dmlldyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgb2Zmc2V0b2YoUHlNZW1vcnlWaWV3T2JqZWN0LCBvYl9hcnJheSksICAgLyogdHBfYmFzaWNzaXplICovCisgICAgc2l6ZW9mKFB5X3NzaXplX3QpLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAoZGVzdHJ1Y3RvciltZW1vcnlfZGVhbGxvYywgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCkBAIC04MzAsNyArMjkwMyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgJm1lbW9yeV9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAmbWVtb3J5X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIChoYXNoZnVuYyltZW1vcnlfaGFzaCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KQEAgLTg0MSw3ICsyOTE0LDcgQEAKICAgICAodHJhdmVyc2Vwcm9jKW1lbW9yeV90cmF2ZXJzZSwgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KW1lbW9yeV9jbGVhciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgbWVtb3J5X3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIG9mZnNldG9mKFB5TWVtb3J5Vmlld09iamVjdCwgd2Vha3JlZmxpc3QpLC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgbWVtb3J5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKaW5kZXggZjFhOWY0Yi4uMWQxNDNmOSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYworKysgYi9PYmplY3RzL21ldGhvZG9iamVjdC5jCkBAIC00NCw3ICs0NCw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuICgoUHlDRnVuY3Rpb25PYmplY3QgKilvcCkgLT4gbV9tbCAtPiBtbF9tZXRoOworICAgIHJldHVybiBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04ob3ApOwogfQogCiBQeU9iamVjdCAqCkBAIC01NCw3ICs1NCw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuICgoUHlDRnVuY3Rpb25PYmplY3QgKilvcCkgLT4gbV9zZWxmOworICAgIHJldHVybiBQeUNGdW5jdGlvbl9HRVRfU0VMRihvcCk7CiB9CiAKIGludApAQCAtNjQsNyArNjQsNyBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXR1cm4gKChQeUNGdW5jdGlvbk9iamVjdCAqKW9wKSAtPiBtX21sIC0+IG1sX2ZsYWdzOworICAgIHJldHVybiBQeUNGdW5jdGlvbl9HRVRfRkxBR1Mob3ApOwogfQogCiBQeU9iamVjdCAqCkBAIC0xNTEsNiArMTUxLDQxIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKG0tPm1fbWwtPm1sX25hbWUpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWV0aF9nZXRfX3F1YWxuYW1lX18oUHlDRnVuY3Rpb25PYmplY3QgKm0sIHZvaWQgKmNsb3N1cmUpCit7CisgICAgLyogSWYgX19zZWxmX18gaXMgYSBtb2R1bGUgb3IgTlVMTCwgcmV0dXJuIG0uX19uYW1lX18KKyAgICAgICAoZS5nLiBsZW4uX19xdWFsbmFtZV9fID09ICdsZW4nKQorCisgICAgICAgSWYgX19zZWxmX18gaXMgYSB0eXBlLCByZXR1cm4gbS5fX3NlbGZfXy5fX3F1YWxuYW1lX18gKyAnLicgKyBtLl9fbmFtZV9fCisgICAgICAgKGUuZy4gZGljdC5mcm9ta2V5cy5fX3F1YWxuYW1lX18gPT0gJ2RpY3QuZnJvbWtleXMnKQorCisgICAgICAgT3RoZXJ3aXNlIHJldHVybiB0eXBlKG0uX19zZWxmX18pLl9fcXVhbG5hbWVfXyArICcuJyArIG0uX19uYW1lX18KKyAgICAgICAoZS5nLiBbXS5hcHBlbmQuX19xdWFsbmFtZV9fID09ICdsaXN0LmFwcGVuZCcpICovCisgICAgUHlPYmplY3QgKnR5cGUsICp0eXBlX3F1YWxuYW1lLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKF9fcXVhbG5hbWVfXyk7CisKKyAgICBpZiAobS0+bV9zZWxmID09IE5VTEwgfHwgUHlNb2R1bGVfQ2hlY2sobS0+bV9zZWxmKSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKG0tPm1fbWwtPm1sX25hbWUpOworCisgICAgdHlwZSA9IFB5VHlwZV9DaGVjayhtLT5tX3NlbGYpID8gbS0+bV9zZWxmIDogKFB5T2JqZWN0KilQeV9UWVBFKG0tPm1fc2VsZik7CisKKyAgICB0eXBlX3F1YWxuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0eXBlLCAmUHlJZF9fX3F1YWxuYW1lX18pOworICAgIGlmICh0eXBlX3F1YWxuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodHlwZV9xdWFsbmFtZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIjxtZXRob2Q+Ll9fY2xhc3NfXy4iCisgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIGlzIG5vdCBhIHVuaWNvZGUgb2JqZWN0Iik7CisgICAgICAgIFB5X1hERUNSRUYodHlwZV9xdWFsbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUy4lcyIsIHR5cGVfcXVhbG5hbWUsIG0tPm1fbWwtPm1sX25hbWUpOworICAgIFB5X0RFQ1JFRih0eXBlX3F1YWxuYW1lKTsKKyAgICByZXR1cm4gcmVzOworfQorCiBzdGF0aWMgaW50CiBtZXRoX3RyYXZlcnNlKFB5Q0Z1bmN0aW9uT2JqZWN0ICptLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKQEAgLTE2NCw3ICsxOTksNyBAQAogewogICAgIFB5T2JqZWN0ICpzZWxmOwogCi0gICAgc2VsZiA9IG0tPm1fc2VsZjsKKyAgICBzZWxmID0gUHlDRnVuY3Rpb25fR0VUX1NFTEYobSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKICAgICAgICAgc2VsZiA9IFB5X05vbmU7CiAgICAgUHlfSU5DUkVGKHNlbGYpOwpAQCAtMTc0LDYgKzIwOSw3IEBACiBzdGF0aWMgUHlHZXRTZXREZWYgbWV0aF9nZXRzZXRzIFtdID0gewogICAgIHsiX19kb2NfXyIsICAoZ2V0dGVyKW1ldGhfZ2V0X19kb2NfXywgIE5VTEwsIE5VTEx9LAogICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKW1ldGhfZ2V0X19uYW1lX18sIE5VTEwsIE5VTEx9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlciltZXRoX2dldF9fcXVhbG5hbWVfXywgTlVMTCwgTlVMTH0sCiAgICAgeyJfX3NlbGZfXyIsIChnZXR0ZXIpbWV0aF9nZXRfX3NlbGZfXywgTlVMTCwgTlVMTH0sCiAgICAgezB9CiB9OwpAQCAtMjA4LDggKzI0NCw3IEBACiAgICAgICAgICFQeUNGdW5jdGlvbl9DaGVjayhzZWxmKSB8fAogICAgICAgICAhUHlDRnVuY3Rpb25fQ2hlY2sob3RoZXIpKQogICAgIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogICAgIGEgPSAoUHlDRnVuY3Rpb25PYmplY3QgKilzZWxmOwogICAgIGIgPSAoUHlDRnVuY3Rpb25PYmplY3QgKilvdGhlcjsKQEAgLTMwMyw2ICszMzgsMTUgQEAKICAgICAodm9pZClQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0KCk7CiB9CiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeUNGdW5jdGlvbl9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5Q0Z1bmN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWUsIHNpemVvZihQeUNGdW5jdGlvbikpOworfQorCiAvKiBQeUNGdW5jdGlvbl9OZXcoKSBpcyBub3cganVzdCBhIG1hY3JvIHRoYXQgY2FsbHMgUHlDRnVuY3Rpb25fTmV3RXgoKSwKICAgIGJ1dCBpdCdzIHBhcnQgb2YgdGhlIEFQSSBzbyB3ZSBuZWVkIHRvIGtlZXAgYSBmdW5jdGlvbiBhcm91bmQgdGhhdAogICAgZXhpc3RpbmcgQyBleHRlbnNpb25zIGNhbiBjYWxsLgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKaW5kZXggNTMzZGI0Ni4uMmYyYmQzNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYworKysgYi9PYmplY3RzL21vZHVsZW9iamVjdC5jCkBAIC0yNywzNiArMjcsNDUgQEAKIAogCiBQeU9iamVjdCAqCi1QeU1vZHVsZV9OZXcoY29uc3QgY2hhciAqbmFtZSkKK1B5TW9kdWxlX05ld09iamVjdChQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU1vZHVsZU9iamVjdCAqbTsKLSAgICBQeU9iamVjdCAqbmFtZW9iajsKICAgICBtID0gUHlPYmplY3RfR0NfTmV3KFB5TW9kdWxlT2JqZWN0LCAmUHlNb2R1bGVfVHlwZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbS0+bWRfZGVmID0gTlVMTDsKICAgICBtLT5tZF9zdGF0ZSA9IE5VTEw7Ci0gICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwogICAgIG0tPm1kX2RpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKG0tPm1kX2RpY3QgPT0gTlVMTCB8fCBuYW1lb2JqID09IE5VTEwpCisgICAgaWYgKG0tPm1kX2RpY3QgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtLT5tZF9kaWN0LCAiX19uYW1lX18iLCBuYW1lb2JqKSAhPSAwKQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtLT5tZF9kaWN0LCAiX19uYW1lX18iLCBuYW1lKSAhPSAwKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG0tPm1kX2RpY3QsICJfX2RvY19fIiwgUHlfTm9uZSkgIT0gMCkKICAgICAgICAgZ290byBmYWlsOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtLT5tZF9kaWN0LCAiX19wYWNrYWdlX18iLCBQeV9Ob25lKSAhPSAwKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgUHlfREVDUkVGKG5hbWVvYmopOwogICAgIFB5T2JqZWN0X0dDX1RyYWNrKG0pOwogICAgIHJldHVybiAoUHlPYmplY3QgKiltOwogCiAgZmFpbDoKLSAgICBQeV9YREVDUkVGKG5hbWVvYmopOwogICAgIFB5X0RFQ1JFRihtKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlPYmplY3QgKgorUHlNb2R1bGVfTmV3KGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm5hbWVvYmosICptb2R1bGU7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1vZHVsZSA9IFB5TW9kdWxlX05ld09iamVjdChuYW1lb2JqKTsKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CisgICAgcmV0dXJuIG1vZHVsZTsKK30KKworCitQeU9iamVjdCAqCiBQeU1vZHVsZV9DcmVhdGUyKHN0cnVjdCBQeU1vZHVsZURlZiogbW9kdWxlLCBpbnQgbW9kdWxlX2FwaV92ZXJzaW9uKQogewogICAgIFB5T2JqZWN0ICpkLCAqdiwgKm47CkBAIC0xNzUsMjQgKzE4NCwzNSBAQAogICAgIHJldHVybiBkOwogfQogCi1jb25zdCBjaGFyICoKLVB5TW9kdWxlX0dldE5hbWUoUHlPYmplY3QgKm0pCitQeU9iamVjdCoKK1B5TW9kdWxlX0dldE5hbWVPYmplY3QoUHlPYmplY3QgKm0pCiB7CiAgICAgUHlPYmplY3QgKmQ7Ci0gICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgaWYgKCFQeU1vZHVsZV9DaGVjayhtKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZCA9ICgoUHlNb2R1bGVPYmplY3QgKiltKS0+bWRfZGljdDsKICAgICBpZiAoZCA9PSBOVUxMIHx8Ci0gICAgICAgIChuYW1lb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbmFtZV9fIikpID09IE5VTEwgfHwKLSAgICAgICAgIVB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKKyAgICAgICAgKG5hbWUgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19uYW1lX18iKSkgPT0gTlVMTCB8fAorICAgICAgICAhUHlVbmljb2RlX0NoZWNrKG5hbWUpKQogICAgIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAibmFtZWxlc3MgbW9kdWxlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKKyAgICBQeV9JTkNSRUYobmFtZSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IGNoYXIgKgorUHlNb2R1bGVfR2V0TmFtZShQeU9iamVjdCAqbSkKK3sKKyAgICBQeU9iamVjdCAqbmFtZSA9IFB5TW9kdWxlX0dldE5hbWVPYmplY3QobSk7CisgICAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfREVDUkVGKG5hbWUpOyAgIC8qIG1vZHVsZSBkaWN0IGhhcyBzdGlsbCBhIHJlZmVyZW5jZSAqLworICAgIHJldHVybiBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwogfQogCiBQeU9iamVjdCoKQEAgLTIyNSw3ICsyNDUsNyBAQAogICAgIGlmIChmaWxlb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHV0ZjggPSBfUHlVbmljb2RlX0FzU3RyaW5nKGZpbGVvYmopOwotICAgIFB5X0RFQ1JFRihmaWxlb2JqKTsKKyAgICBQeV9ERUNSRUYoZmlsZW9iaik7ICAgLyogbW9kdWxlIGRpY3QgaGFzIHN0aWxsIGEgcmVmZXJlbmNlICovCiAgICAgcmV0dXJuIHV0Zjg7CiB9CiAKQEAgLTI3MSw4ICsyOTEsOCBAQAogICAgIHBvcyA9IDA7CiAgICAgd2hpbGUgKFB5RGljdF9OZXh0KGQsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUgJiYgUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShrZXkpOwotICAgICAgICAgICAgaWYgKHVbMF0gPT0gJ18nICYmIHVbMV0gIT0gJ18nKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihrZXksIDApID09ICdfJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIoa2V5LCAxKSAhPSAnXycpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzICE9IE5VTEwpCkBAIC0yODksOSArMzA5LDggQEAKICAgICBwb3MgPSAwOwogICAgIHdoaWxlIChQeURpY3RfTmV4dChkLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGlmICh2YWx1ZSAhPSBQeV9Ob25lICYmIFB5VW5pY29kZV9DaGVjayhrZXkpKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICp1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoa2V5KTsKLSAgICAgICAgICAgIGlmICh1WzBdICE9ICdfJwotICAgICAgICAgICAgICAgIHx8IFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgIl9fYnVpbHRpbnNfXyIpICE9IDApCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihrZXksIDApICE9ICdfJyB8fAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgIl9fYnVpbHRpbnNfXyIpICE9IDApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOwpAQCAtMzUzLDIxICszNzIsNTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtb2R1bGVfcmVwcihQeU1vZHVsZU9iamVjdCAqbSkKIHsKLSAgICBjb25zdCBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwgKnJlcHI7CisgICAgUHlPYmplY3QgKm5hbWUsICpmaWxlbmFtZSwgKnJlcHIsICpsb2FkZXIgPSBOVUxMOwogCi0gICAgbmFtZSA9IFB5TW9kdWxlX0dldE5hbWUoKFB5T2JqZWN0ICopbSk7CisgICAgLyogU2VlIGlmIHRoZSBtb2R1bGUgaGFzIGFuIF9fbG9hZGVyX18uICBJZiBpdCBkb2VzLCBnaXZlIHRoZSBsb2FkZXIgdGhlCisgICAgICogZmlyc3Qgc2hvdCBhdCBwcm9kdWNpbmcgYSByZXByIGZvciB0aGUgbW9kdWxlLgorICAgICAqLworICAgIGlmIChtLT5tZF9kaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgbG9hZGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobS0+bWRfZGljdCwgIl9fbG9hZGVyX18iKTsKKyAgICB9CisgICAgaWYgKGxvYWRlciAhPSBOVUxMKSB7CisgICAgICAgIHJlcHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxvYWRlciwgIm1vZHVsZV9yZXByIiwgIihPKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKW0sIE5VTEwpOworICAgICAgICBpZiAocmVwciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHJlcHI7CisgICAgICAgIH0KKyAgICB9CisgICAgLyogX19sb2FkZXJfXy5tb2R1bGVfcmVwcihtKSBkaWQgbm90IHByb3ZpZGUgdXMgd2l0aCBhIHJlcHIuICBOZXh0LCBzZWUgaWYKKyAgICAgKiB0aGUgbW9kdWxlIGhhcyBhbiBfX2ZpbGVfXy4gIElmIGl0IGRvZXNuJ3QgdGhlbiB1c2UgcmVwcihfX2xvYWRlcl9fKSBpZgorICAgICAqIGl0IGV4aXN0cywgb3RoZXJ3aXNlLCBqdXN0IHVzZSBtb2R1bGUuX19uYW1lX18uCisgICAgICovCisgICAgbmFtZSA9IFB5TW9kdWxlX0dldE5hbWVPYmplY3QoKFB5T2JqZWN0ICopbSk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBuYW1lID0gIj8iOworICAgICAgICBuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKCI/IiwgMSk7CisgICAgICAgIGlmIChuYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZmlsZW5hbWUgPSBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdCgoUHlPYmplY3QgKiltKTsKICAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtb2R1bGUgJyVzJyAoYnVpbHQtaW4pPiIsIG5hbWUpOworICAgICAgICAvKiBUaGVyZSdzIG5vIG0uX19maWxlX18sIHNvIGlmIHRoZXJlIHdhcyBhbiBfX2xvYWRlcl9fLCB1c2UgdGhhdCBpbgorICAgICAgICAgKiB0aGUgcmVwciwgb3RoZXJ3aXNlLCB0aGUgb25seSB0aGluZyB5b3UgY2FuIHVzZSBpcyBtLl9fbmFtZV9fCisgICAgICAgICAqLworICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUj4iLCBuYW1lKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUiAoJVIpPiIsIG5hbWUsIGxvYWRlcik7CisgICAgICAgIH0KICAgICB9Ci0gICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8bW9kdWxlICclcycgZnJvbSAnJVUnPiIsIG5hbWUsIGZpbGVuYW1lKTsKLSAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOworICAgIC8qIEZpbmFsbHksIHVzZSBtLl9fZmlsZV9fICovCisgICAgZWxzZSB7CisgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUiBmcm9tICVSPiIsIG5hbWUsIGZpbGVuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICB9CisgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIHJldHVybiByZXByOwogfQogCkBAIC0zOTUsNiArNDQ3LDM1IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCittb2R1bGVfZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZGljdF9fKTsKKworICAgIGlmIChkaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RGljdF9DaGVjayhkaWN0KSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBQeU1vZHVsZV9HZXROYW1lKHNlbGYpOworICAgICAgICAgICAgaWYgKG5hbWUpCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcy5fX2RpY3RfXyBpcyBub3QgYSBkaWN0aW9uYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0geworICAgIHsiX19kaXJfXyIsIG1vZHVsZV9kaXIsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9fZGlyX18oKSAtPiBsaXN0XG5zcGVjaWFsaXplZCBkaXIoKSBpbXBsZW1lbnRhdGlvbiIpfSwKKyAgICB7MH0KK307CisKIAogUHlEb2NfU1RSVkFSKG1vZHVsZV9kb2MsCiAibW9kdWxlKG5hbWVbLCBkb2NdKVxuXApAQCAtNDMxLDcgKzUxMiw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtb2R1bGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBtb2R1bGVfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUzODc0YwotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKQEAgLTAsMCArMSwyMjUgQEAKKy8qIG5hbWVzcGFjZSBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKm5zX2RpY3Q7Cit9IF9QeU5hbWVzcGFjZU9iamVjdDsKKworCitzdGF0aWMgUHlNZW1iZXJEZWYgbmFtZXNwYWNlX21lbWJlcnNbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKF9QeU5hbWVzcGFjZU9iamVjdCwgbnNfZGljdCksIFJFQURPTkxZfSwKKyAgICB7TlVMTH0KK307CisKKworLyogTWV0aG9kcyAqLworCitzdGF0aWMgUHlPYmplY3QgKgorbmFtZXNwYWNlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBfUHlOYW1lc3BhY2VPYmplY3QgKm5zOworICAgIG5zID0gUHlPYmplY3RfR0NfTmV3KF9QeU5hbWVzcGFjZU9iamVjdCwgJl9QeU5hbWVzcGFjZV9UeXBlKTsKKyAgICBpZiAobnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBucy0+bnNfZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAobnMtPm5zX2RpY3QgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobnMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdF9HQ19UcmFjayhucyk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5zOworfQorCisKK3N0YXRpYyBpbnQKK25hbWVzcGFjZV9pbml0KF9QeU5hbWVzcGFjZU9iamVjdCAqbnMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICAvKiBpZ25vcmUgYXJncyBpZiBpdCdzIE5VTEwgb3IgZW1wdHkgKi8KKyAgICBpZiAoYXJncyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgYXJnY291bnQgPSBQeU9iamVjdF9TaXplKGFyZ3MpOworICAgICAgICBpZiAoYXJnY291bnQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGFyZ2NvdW50OworICAgICAgICBlbHNlIGlmIChhcmdjb3VudCA+IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJubyBwb3NpdGlvbmFsIGFyZ3VtZW50cyBleHBlY3RlZCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGlmIChrd2RzID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBQeURpY3RfVXBkYXRlKG5zLT5uc19kaWN0LCBrd2RzKTsKK30KKworCitzdGF0aWMgdm9pZAorbmFtZXNwYWNlX2RlYWxsb2MoX1B5TmFtZXNwYWNlT2JqZWN0ICpucykKK3sKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKG5zKTsKKyAgICBQeV9DTEVBUihucy0+bnNfZGljdCk7CisgICAgUHlfVFlQRShucyktPnRwX2ZyZWUoKFB5T2JqZWN0ICopbnMpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCituYW1lc3BhY2VfcmVwcihfUHlOYW1lc3BhY2VPYmplY3QgKm5zKQoreworICAgIGludCBpLCBsb29wX2Vycm9yID0gMDsKKyAgICBQeU9iamVjdCAqcGFpcnMgPSBOVUxMLCAqZCA9IE5VTEwsICprZXlzID0gTlVMTCwgKmtleXNfaXRlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqc2VwYXJhdG9yLCAqcGFpcnNyZXByLCAqcmVwciA9IE5VTEw7CisKKyAgICBpID0gUHlfUmVwckVudGVyKChQeU9iamVjdCAqKW5zKTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAgIHJldHVybiBpID4gMCA/IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJuYW1lc3BhY2UoLi4uKSIpIDogTlVMTDsKKyAgICB9CisKKyAgICBwYWlycyA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKHBhaXJzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBkID0gKChfUHlOYW1lc3BhY2VPYmplY3QgKilucyktPm5zX2RpY3Q7CisgICAgYXNzZXJ0KGQgIT0gTlVMTCk7CisgICAgUHlfSU5DUkVGKGQpOworCisgICAga2V5cyA9IFB5RGljdF9LZXlzKGQpOworICAgIGlmIChrZXlzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKFB5TGlzdF9Tb3J0KGtleXMpICE9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBrZXlzX2l0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGtleXMpOworICAgIGlmIChrZXlzX2l0ZXIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoa2V5c19pdGVyKSkgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGtleSkgJiYgUHlVbmljb2RlX0dFVF9TSVpFKGtleSkgPiAwKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUsICppdGVtOworCisgICAgICAgICAgICB2YWx1ZSA9IFB5RGljdF9HZXRJdGVtKGQsIGtleSk7CisgICAgICAgICAgICBhc3NlcnQodmFsdWUgIT0gTlVMTCk7CisKKyAgICAgICAgICAgIGl0ZW0gPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVM9JVIiLCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBsb29wX2Vycm9yID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxvb3BfZXJyb3IgPSBQeUxpc3RfQXBwZW5kKHBhaXJzLCBpdGVtKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgaWYgKGxvb3BfZXJyb3IpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHNlcGFyYXRvciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIsICIpOworICAgIGlmIChzZXBhcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHBhaXJzcmVwciA9IFB5VW5pY29kZV9Kb2luKHNlcGFyYXRvciwgcGFpcnMpOworICAgIFB5X0RFQ1JFRihzZXBhcmF0b3IpOworICAgIGlmIChwYWlyc3JlcHIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJVMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeU9iamVjdCAqKW5zKS0+b2JfdHlwZS0+dHBfbmFtZSwgcGFpcnNyZXByKTsKKyAgICBQeV9ERUNSRUYocGFpcnNyZXByKTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihwYWlycyk7CisgICAgUHlfWERFQ1JFRihkKTsKKyAgICBQeV9YREVDUkVGKGtleXMpOworICAgIFB5X1hERUNSRUYoa2V5c19pdGVyKTsKKyAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopbnMpOworCisgICAgcmV0dXJuIHJlcHI7Cit9CisKKworc3RhdGljIGludAorbmFtZXNwYWNlX3RyYXZlcnNlKF9QeU5hbWVzcGFjZU9iamVjdCAqbnMsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKG5zLT5uc19kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50CituYW1lc3BhY2VfY2xlYXIoX1B5TmFtZXNwYWNlT2JqZWN0ICpucykKK3sKKyAgICBQeV9DTEVBUihucy0+bnNfZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworUHlEb2NfU1RSVkFSKG5hbWVzcGFjZV9kb2MsCisiQSBzaW1wbGUgYXR0cmlidXRlLWJhc2VkIG5hbWVzcGFjZS5cblwKK1xuXAorbmFtZXNwYWNlKCoqa3dhcmdzKSIpOworCitQeVR5cGVPYmplY3QgX1B5TmFtZXNwYWNlX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAibmFtZXNwYWNlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoX1B5TmFtZXNwYWNlT2JqZWN0KSwgICAgICAgICAgICAgICAgIC8qIHRwX3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpbmFtZXNwYWNlX2RlYWxsb2MsICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpbmFtZXNwYWNlX3JlcHIsICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAorICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBuYW1lc3BhY2VfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpbmFtZXNwYWNlX3RyYXZlcnNlLCAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSluYW1lc3BhY2VfY2xlYXIsICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgbmFtZXNwYWNlX21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgb2Zmc2V0b2YoX1B5TmFtZXNwYWNlT2JqZWN0LCBuc19kaWN0KSwgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKW5hbWVzcGFjZV9pbml0LCAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIChuZXdmdW5jKW5hbWVzcGFjZV9uZXcsICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCisKK1B5T2JqZWN0ICoKK19QeU5hbWVzcGFjZV9OZXcoUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKm5zID0gbmFtZXNwYWNlX25ldygmX1B5TmFtZXNwYWNlX1R5cGUsIE5VTEwsIE5VTEwpOworICAgIGlmIChucyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChrd2RzID09IE5VTEwpCisgICAgICAgIHJldHVybiBuczsKKyAgICBpZiAoUHlEaWN0X1VwZGF0ZSgoKF9QeU5hbWVzcGFjZU9iamVjdCAqKW5zKS0+bnNfZGljdCwga3dkcykgIT0gMCkgeworICAgICAgICBQeV9ERUNSRUYobnMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbnM7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL29iamVjdC5jIGIvT2JqZWN0cy9vYmplY3QuYwppbmRleCA4NGVjMmYzLi5mNGMwMjA4IDEwMDY0NAotLS0gYS9PYmplY3RzL29iamVjdC5jCisrKyBiL09iamVjdHMvb2JqZWN0LmMKQEAgLTEsNSArMSw1IEBACiAKLS8qIEdlbmVyaWMgb2JqZWN0IG9wZXJhdGlvbnM7IGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBOb25lIChOb09iamVjdCkgKi8KKy8qIEdlbmVyaWMgb2JqZWN0IG9wZXJhdGlvbnM7IGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBOb25lICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIgpAQCAtMjksOCArMjksNiBAQAogfQogI2VuZGlmIC8qIFB5X1JFRl9ERUJVRyAqLwogCi1pbnQgUHlfRGl2aXNpb25XYXJuaW5nRmxhZzsKLQogLyogT2JqZWN0IGFsbG9jYXRpb24gcm91dGluZXMgdXNlZCBieSBORVdPQkogYW5kIE5FV1ZBUk9CSiBtYWNyb3MuCiAgICBUaGVzZSBhcmUgdXNlZCBieSB0aGUgaW5kaXZpZHVhbCByb3V0aW5lcyBmb3Igb2JqZWN0IGNyZWF0aW9uLgogICAgRG8gbm90IGNhbGwgdGhlbSBvdGhlcndpc2UsIHRoZXkgZG8gbm90IGluaXRpYWxpemUgdGhlIG9iamVjdCEgKi8KQEAgLTI5Nyw5ICsyOTUsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHMpKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnQ7Ci0gICAgICAgICAgICAgICAgdCA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUocyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIik7CisgICAgICAgICAgICAgICAgdCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcocywgInV0Zi04IiwgImJhY2tzbGFzaHJlcGxhY2UiKTsKICAgICAgICAgICAgICAgICBpZiAodCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXQgPSAwOwogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMzgyLDEzICszNzgsMTkgQEAKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXMgb2JqZWN0IGF0ICVwPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5vYl90eXBlLT50cF9uYW1lLCB2KTsKICAgICByZXMgPSAoKnYtPm9iX3R5cGUtPnRwX3JlcHIpKHYpOwotICAgIGlmIChyZXMgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrKHJlcykpIHsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHJlcykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJfX3JlcHJfXyByZXR1cm5lZCBub24tc3RyaW5nICh0eXBlICUuMjAwcykiLAogICAgICAgICAgICAgICAgICAgICAgcmVzLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyNpZm5kZWYgUHlfREVCVUcKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTQwNyw2ICs0MDksMTAgQEAKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxOVUxMPiIpOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2KSkgeworI2lmbmRlZiBQeV9ERUJVRworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHYpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCiAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQpAQCAtNDI4LDYgKzQzNCwxMSBAQAogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorI2lmbmRlZiBQeV9ERUJVRworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVzKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKICAgICByZXR1cm4gcmVzOwogfQogCkBAIC00NDEsMTEgKzQ1Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogcmVwciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgUHlVbmljb2RlIG9iamVjdCBieSBQeU9iamVjdF9SZXByICovCi0gICAgYXNjaWkgPSBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHIpLAotICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUocmVwciksCi0gICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIik7Ci0KKyAgICBhc2NpaSA9IF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhyZXByLCAiYmFja3NsYXNocmVwbGFjZSIpOwogICAgIFB5X0RFQ1JFRihyZXByKTsKICAgICBpZiAoYXNjaWkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00NjMsNyArNDcwLDcgQEAKIFB5T2JqZWN0X0J5dGVzKFB5T2JqZWN0ICp2KQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQsICpmdW5jOwotICAgIHN0YXRpYyBQeU9iamVjdCAqYnl0ZXNzdHJpbmcgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fYnl0ZXNfXyk7CiAKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKCI8TlVMTD4iKTsKQEAgLTQ3Myw3ICs0ODAsNyBAQAogICAgICAgICByZXR1cm4gdjsKICAgICB9CiAKLSAgICBmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwodiwgIl9fYnl0ZXNfXyIsICZieXRlc3N0cmluZyk7CisgICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHYsICZQeUlkX19fYnl0ZXNfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CkBAIC03NDcsNiArNzU0LDMzIEBACiB9CiAKIFB5X2hhc2hfdAorX1B5X0hhc2hCeXRlcyh1bnNpZ25lZCBjaGFyICpwLCBQeV9zc2l6ZV90IGxlbikKK3sKKyAgICBQeV91aGFzaF90IHg7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgLyoKKyAgICAgIFdlIG1ha2UgdGhlIGhhc2ggb2YgdGhlIGVtcHR5IHN0cmluZyBiZSAwLCByYXRoZXIgdGhhbiB1c2luZworICAgICAgKHByZWZpeCBeIHN1ZmZpeCksIHNpbmNlIHRoaXMgc2xpZ2h0bHkgb2JmdXNjYXRlcyB0aGUgaGFzaCBzZWNyZXQKKyAgICAqLworI2lmZGVmIFB5X0RFQlVHCisgICAgYXNzZXJ0KF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKTsKKyNlbmRpZgorICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgeCA9IChQeV91aGFzaF90KSBfUHlfSGFzaFNlY3JldC5wcmVmaXg7CisgICAgeCBePSAoUHlfdWhhc2hfdCkgKnAgPDwgNzsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgIHggPSAoX1B5SEFTSF9NVUxUSVBMSUVSICogeCkgXiAoUHlfdWhhc2hfdCkgKnArKzsKKyAgICB4IF49IChQeV91aGFzaF90KSBsZW47CisgICAgeCBePSAoUHlfdWhhc2hfdCkgX1B5X0hhc2hTZWNyZXQuc3VmZml4OworICAgIGlmICh4ID09IC0xKQorICAgICAgICB4ID0gLTI7CisgICAgcmV0dXJuIHg7Cit9CisKK1B5X2hhc2hfdAogUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkKFB5T2JqZWN0ICp2KQogewogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJ1bmhhc2hhYmxlIHR5cGU6ICclLjIwMHMnIiwKQEAgLTc4OCw3ICs4MjIsNyBAQAogICAgIGlmICh3ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlcyA9IFB5T2JqZWN0X0dldEF0dHIodiwgdyk7Ci0gICAgUHlfWERFQ1JFRih3KTsKKyAgICBQeV9ERUNSRUYodyk7CiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtODIwLDYgKzg1NCw2MiBAQAogICAgIHJldHVybiByZXM7CiB9CiAKK2ludAorX1B5T2JqZWN0X0lzQWJzdHJhY3QoUHlPYmplY3QgKm9iaikKK3sKKyAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0KiBpc2Fic3RyYWN0OworICAgIF9QeV9JREVOVElGSUVSKF9faXNhYnN0cmFjdG1ldGhvZF9fKTsKKworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpc2Fic3RyYWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19faXNhYnN0cmFjdG1ldGhvZF9fKTsKKyAgICBpZiAoaXNhYnN0cmFjdCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzID0gUHlPYmplY3RfSXNUcnVlKGlzYWJzdHJhY3QpOworICAgIFB5X0RFQ1JFRihpc2Fic3RyYWN0KTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeU9iamVjdCAqCitfUHlPYmplY3RfR2V0QXR0cklkKFB5T2JqZWN0ICp2LCBfUHlfSWRlbnRpZmllciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpvbmFtZSA9IF9QeVVuaWNvZGVfRnJvbUlkKG5hbWUpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmICghb25hbWUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0dldEF0dHIodiwgb25hbWUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAorX1B5T2JqZWN0X0hhc0F0dHJJZChQeU9iamVjdCAqdiwgX1B5X0lkZW50aWZpZXIgKm5hbWUpCit7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqb25hbWUgPSBfUHlVbmljb2RlX0Zyb21JZChuYW1lKTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoIW9uYW1lKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfSGFzQXR0cih2LCBvbmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50CitfUHlPYmplY3RfU2V0QXR0cklkKFB5T2JqZWN0ICp2LCBfUHlfSWRlbnRpZmllciAqbmFtZSwgUHlPYmplY3QgKncpCit7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqb25hbWUgPSBfUHlVbmljb2RlX0Zyb21JZChuYW1lKTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoIW9uYW1lKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfU2V0QXR0cih2LCBvbmFtZSwgdyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUHlPYmplY3QgKgogUHlPYmplY3RfR2V0QXR0cihQeU9iamVjdCAqdiwgUHlPYmplY3QgKm5hbWUpCiB7CkBAIC05MzgsNiArMTAyOCwxOSBAQAogICAgIHJldHVybiBvYmo7CiB9CiAKKy8qIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCBhIGJ1aWx0aW4gZnJvbSBpdHMgbmFtZSAqLworUHlPYmplY3QgKgorX1B5T2JqZWN0X0dldEJ1aWx0aW4oY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqbW9kLCAqYXR0cjsKKyAgICBtb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7CisgICAgaWYgKG1vZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhdHRyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2QsIG5hbWUpOworICAgIFB5X0RFQ1JFRihtb2QpOworICAgIHJldHVybiBhdHRyOworfQorCiAvKiBIZWxwZXIgdXNlZCB3aGVuIHRoZSBfX25leHRfXyBtZXRob2QgaXMgcmVtb3ZlZCBmcm9tIGEgdHlwZToKICAgIHRwX2l0ZXJuZXh0IGlzIG5ldmVyIE5VTEwgYW5kIGNhbiBiZSBzYWZlbHkgY2FsbGVkIHdpdGhvdXQgY2hlY2tpbmcKICAgIG9uIGV2ZXJ5IGl0ZXJhdGlvbi4KQEAgLTk4Niw3ICsxMDg5LDYgQEAKICAgICAgICAgZiA9IGRlc2NyLT5vYl90eXBlLT50cF9kZXNjcl9nZXQ7CiAgICAgICAgIGlmIChmICE9IE5VTEwgJiYgUHlEZXNjcl9Jc0RhdGEoZGVzY3IpKSB7CiAgICAgICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKW9iai0+b2JfdHlwZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZGVzY3IpOwogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CiAgICAgfQpAQCAtMTAxNyw3ICsxMTE5LDYgQEAKICAgICAgICAgcmVzID0gUHlEaWN0X0dldEl0ZW0oZGljdCwgbmFtZSk7CiAgICAgICAgIGlmIChyZXMgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlfSU5DUkVGKHJlcyk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGRlc2NyKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQpAQCAtMTAyNiwxMyArMTEyNywxMiBAQAogCiAgICAgaWYgKGYgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKVB5X1RZUEUob2JqKSk7Ci0gICAgICAgIFB5X0RFQ1JFRihkZXNjcik7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKICAgICBpZiAoZGVzY3IgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBkZXNjcjsKLSAgICAgICAgLyogZGVzY3Igd2FzIGFscmVhZHkgaW5jcmVmZWQgYWJvdmUgKi8KKyAgICAgICAgZGVzY3IgPSBOVUxMOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCkBAIC0xMDQwLDYgKzExNDAsNyBAQAogICAgICAgICAgICAgICAgICAiJyUuNTBzJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJVUnIiwKICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOwogICBkb25lOgorICAgIFB5X1hERUNSRUYoZGVzY3IpOwogICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICByZXR1cm4gcmVzOwogfQpAQCAtMTA2NiwxNSArMTE2NywxNSBAQAogICAgICAgICAgICAgICAgICAgICAgbmFtZS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeV9JTkNSRUYobmFtZSk7CiAKLSAgICBpZiAodHAtPnRwX2RpY3QgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlUeXBlX1JlYWR5KHRwKSA8IDApCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQorICAgIGlmICh0cC0+dHBfZGljdCA9PSBOVUxMICYmIFB5VHlwZV9SZWFkeSh0cCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYobmFtZSk7CiAKICAgICBkZXNjciA9IF9QeVR5cGVfTG9va3VwKHRwLCBuYW1lKTsKKyAgICBQeV9YSU5DUkVGKGRlc2NyKTsKKwogICAgIGYgPSBOVUxMOwogICAgIGlmIChkZXNjciAhPSBOVUxMKSB7CiAgICAgICAgIGYgPSBkZXNjci0+b2JfdHlwZS0+dHBfZGVzY3Jfc2V0OwpAQCAtMTA4NywxMyArMTE4OCwxMCBAQAogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CiAgICAgICAgIGlmIChkaWN0cHRyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGRpY3QgPSAqZGljdHB0cjsKLSAgICAgICAgICAgIGlmIChkaWN0ID09IE5VTEwgJiYgdmFsdWUgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgICAgICpkaWN0cHRyID0gZGljdDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdERpY3RfU2V0SXRlbShQeV9UWVBFKG9iaiksIGRpY3RwdHIsIG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CisgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGRpY3QgIT0gTlVMTCkgewpAQCAtMTEwMiw5ICsxMjAwLDkgQEAKICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9EZWxJdGVtKGRpY3QsIG5hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShkaWN0LCBuYW1lLCB2YWx1ZSk7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOwotICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKQEAgLTExMjQsNiArMTIyMiw3IEBACiAgICAgICAgICAgICAgICAgICInJS41MHMnIG9iamVjdCBhdHRyaWJ1dGUgJyVVJyBpcyByZWFkLW9ubHkiLAogICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7CiAgIGRvbmU6CisgICAgUHlfWERFQ1JFRihkZXNjcik7CiAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIHJldHVybiByZXM7CiB9CkBAIC0xMTM0LDYgKzEyMzMsMzIgQEAKICAgICByZXR1cm4gX1B5T2JqZWN0X0dlbmVyaWNTZXRBdHRyV2l0aERpY3Qob2JqLCBuYW1lLCB2YWx1ZSwgTlVMTCk7CiB9CiAKK2ludAorUHlPYmplY3RfR2VuZXJpY1NldERpY3QoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkaWN0LCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOworICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGhhcyBubyBfX2RpY3RfXyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJjYW5ub3QgZGVsZXRlIF9fZGljdF9fIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFQeURpY3RfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiX19kaWN0X18gbXVzdCBiZSBzZXQgdG8gYSBkaWN0aW9uYXJ5LCAiCisgICAgICAgICAgICAgICAgICAgICAibm90IGEgJyUuMjAwcyciLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZGljdCA9ICpkaWN0cHRyOworICAgIFB5X1hJTkNSRUYodmFsdWUpOworICAgICpkaWN0cHRyID0gdmFsdWU7CisgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKwogCiAvKiBUZXN0IGEgdmFsdWUgdXNlZCBhcyBjb25kaXRpb24sIGUuZy4sIGluIGEgZm9yIG9yIGlmIHN0YXRlbWVudC4KICAgIFJldHVybiAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZCAqLwpAQCAtMTE4Niw2NiArMTMxMSw2IEBACiAgICAgcmV0dXJuIHgtPm9iX3R5cGUtPnRwX2NhbGwgIT0gTlVMTDsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQeU9iamVjdF9EaXIoKSBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXIuCi0gICBNZXJnZSB0aGUgX19kaWN0X18gb2YgYWNsYXNzIGludG8gZGljdCwgYW5kIHJlY3Vyc2l2ZWx5IGFsc28gYWxsCi0gICB0aGUgX19kaWN0X19zIG9mIGFjbGFzcydzIGJhc2UgY2xhc3Nlcy4gIFRoZSBvcmRlciBvZiBtZXJnaW5nIGlzbid0Ci0gICBkZWZpbmVkLCBhcyBpdCdzIGV4cGVjdGVkIHRoYXQgb25seSB0aGUgZmluYWwgc2V0IG9mIGRpY3Qga2V5cyBpcwotICAgaW50ZXJlc3RpbmcuCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4KLSovCi0KLXN0YXRpYyBpbnQKLW1lcmdlX2NsYXNzX2RpY3QoUHlPYmplY3QqIGRpY3QsIFB5T2JqZWN0KiBhY2xhc3MpCi17Ci0gICAgUHlPYmplY3QgKmNsYXNzZGljdDsKLSAgICBQeU9iamVjdCAqYmFzZXM7Ci0KLSAgICBhc3NlcnQoUHlEaWN0X0NoZWNrKGRpY3QpKTsKLSAgICBhc3NlcnQoYWNsYXNzKTsKLQotICAgIC8qIE1lcmdlIGluIHRoZSB0eXBlJ3MgZGljdCAoaWYgYW55KS4gKi8KLSAgICBjbGFzc2RpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGFjbGFzcywgIl9fZGljdF9fIik7Ci0gICAgaWYgKGNsYXNzZGljdCA9PSBOVUxMKQotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIGVsc2UgewotICAgICAgICBpbnQgc3RhdHVzID0gUHlEaWN0X1VwZGF0ZShkaWN0LCBjbGFzc2RpY3QpOwotICAgICAgICBQeV9ERUNSRUYoY2xhc3NkaWN0KTsKLSAgICAgICAgaWYgKHN0YXR1cyA8IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgLyogUmVjdXJzaXZlbHkgbWVyZ2UgaW4gdGhlIGJhc2UgdHlwZXMnIChpZiBhbnkpIGRpY3RzLiAqLwotICAgIGJhc2VzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhhY2xhc3MsICJfX2Jhc2VzX18iKTsKLSAgICBpZiAoYmFzZXMgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLyogV2UgaGF2ZSBubyBndWFyYW50ZWUgdGhhdCBiYXNlcyBpcyBhIHJlYWwgdHVwbGUgKi8KLSAgICAgICAgUHlfc3NpemVfdCBpLCBuOwotICAgICAgICBuID0gUHlTZXF1ZW5jZV9TaXplKGJhc2VzKTsgLyogVGhpcyBiZXR0ZXIgYmUgcmlnaHQgKi8KLSAgICAgICAgaWYgKG4gPCAwKQotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaW50IHN0YXR1czsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYmFzZSA9IFB5U2VxdWVuY2VfR2V0SXRlbShiYXNlcywgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXR1cyA9IG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwotICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19CiAKIC8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyIHdpdGhvdXQgYXJndW1lbnRzOiByZXR1cm5zIHRoZSBsb2NhbCBzY29wZS4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjY5LDE0MCArMTMzNCw0MyBAQAogICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgaWYgKFB5TGlzdF9Tb3J0KG5hbWVzKSkgeworICAgICAgICBQeV9ERUNSRUYobmFtZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgLyogdGhlIGxvY2FscyBkb24ndCBuZWVkIHRvIGJlIERFQ1JFRidkICovCiAgICAgcmV0dXJuIG5hbWVzOwogfQogCi0vKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0RpciBvZiB0eXBlIG9iamVjdHM6IHJldHVybnMgX19kaWN0X18gYW5kIF9fYmFzZXNfXy4KLSAgIFdlIGRlbGliZXJhdGVseSBkb24ndCBzdWNrIHVwIGl0cyBfX2NsYXNzX18sIGFzIG1ldGhvZHMgYmVsb25naW5nIHRvIHRoZQotICAgbWV0YWNsYXNzIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgY29uZnVzaW5nIHRoYW4gaGVscGZ1bC4KLSovCi1zdGF0aWMgUHlPYmplY3QgKgotX3NwZWNpYWxpemVkX2Rpcl90eXBlKFB5T2JqZWN0ICpvYmopCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmRpY3QgPSBQeURpY3RfTmV3KCk7Ci0KLSAgICBpZiAoZGljdCAhPSBOVUxMICYmIG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgb2JqKSA9PSAwKQotICAgICAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKLQotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXIgb2YgbW9kdWxlIG9iamVjdHM6IHJldHVybnMgdGhlIG1vZHVsZSdzIF9fZGljdF9fLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLV9zcGVjaWFsaXplZF9kaXJfbW9kdWxlKFB5T2JqZWN0ICpvYmopCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZGljdF9fIik7Ci0KLSAgICBpZiAoZGljdCAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeURpY3RfQ2hlY2soZGljdCkpCi0gICAgICAgICAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gUHlNb2R1bGVfR2V0TmFtZShvYmopOwotICAgICAgICAgICAgaWYgKG5hbWUpCi0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcy5fX2RpY3RfXyBpcyBub3QgYSBkaWN0aW9uYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBQeV9YREVDUkVGKGRpY3QpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyIG9mIGdlbmVyaWMgb2JqZWN0czogcmV0dXJucyBfX2RpY3RfXywgX19jbGFzc19fLAotICAgYW5kIHJlY3Vyc2l2ZWx5IHVwIHRoZSBfX2NsYXNzX18uX19iYXNlc19fIGNoYWluLgotKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1fZ2VuZXJpY19kaXIoUHlPYmplY3QgKm9iaikKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZGljdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKml0c2NsYXNzID0gTlVMTDsKLQotICAgIC8qIEdldCBfX2RpY3RfXyAod2hpY2ggbWF5IG9yIG1heSBub3QgYmUgYSByZWFsIGRpY3QuLi4pICovCi0gICAgZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19kaWN0X18iKTsKLSAgICBpZiAoZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKCFQeURpY3RfQ2hlY2soZGljdCkpIHsKLSAgICAgICAgUHlfREVDUkVGKGRpY3QpOwotICAgICAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogQ29weSBfX2RpY3RfXyB0byBhdm9pZCBtdXRhdGluZyBpdC4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeURpY3RfQ29weShkaWN0KTsKLSAgICAgICAgUHlfREVDUkVGKGRpY3QpOwotICAgICAgICBkaWN0ID0gdGVtcDsKLSAgICB9Ci0KLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgLyogTWVyZ2UgaW4gYXR0cnMgcmVhY2hhYmxlIGZyb20gaXRzIGNsYXNzLiAqLwotICAgIGl0c2NsYXNzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2NsYXNzX18iKTsKLSAgICBpZiAoaXRzY2xhc3MgPT0gTlVMTCkKLSAgICAgICAgLyogWFhYKHRvbWVyKTogUGVyaGFwcyBmYWxsIGJhY2sgdG8gb2JqLT5vYl90eXBlIGlmIG5vCi0gICAgICAgICAgICAgICAgICAgICAgIF9fY2xhc3NfXyBleGlzdHM/ICovCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChtZXJnZV9jbGFzc19kaWN0KGRpY3QsIGl0c2NsYXNzKSAhPSAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKLSAgICAvKiBmYWxsIHRocm91Z2ggKi8KLWVycm9yOgotICAgIFB5X1hERUNSRUYoaXRzY2xhc3MpOwotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXI6IG9iamVjdCBpbnRyb3NwZWN0aW9uLgotICAgVGhpcyBjYWxscyBvbmUgb2YgdGhlIGFib3ZlIHNwZWNpYWxpemVkIHZlcnNpb25zIGlmIG5vIF9fZGlyX18gbWV0aG9kCi0gICBleGlzdHMuICovCisvKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0Rpcjogb2JqZWN0IGludHJvc3BlY3Rpb24uICovCiBzdGF0aWMgUHlPYmplY3QgKgogX2Rpcl9vYmplY3QoUHlPYmplY3QgKm9iaikKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRpcl9zdHIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpkaXJmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob2JqLCAiX19kaXJfXyIsICZkaXJfc3RyKTsKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqc29ydGVkOworICAgIF9QeV9JREVOVElGSUVSKF9fZGlyX18pOworICAgIFB5T2JqZWN0ICpkaXJmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob2JqLCAmUHlJZF9fX2Rpcl9fKTsKIAogICAgIGFzc2VydChvYmopOwogICAgIGlmIChkaXJmdW5jID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogdXNlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gKi8KLSAgICAgICAgaWYgKFB5TW9kdWxlX0NoZWNrKG9iaikpCi0gICAgICAgICAgICByZXN1bHQgPSBfc3BlY2lhbGl6ZWRfZGlyX21vZHVsZShvYmopOwotICAgICAgICBlbHNlIGlmIChQeVR5cGVfQ2hlY2sob2JqKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IF9zcGVjaWFsaXplZF9kaXJfdHlwZShvYmopOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBfZ2VuZXJpY19kaXIob2JqKTsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm9iamVjdCBkb2VzIG5vdCBwcm92aWRlIF9fZGlyX18iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiB1c2UgX19kaXJfXyAqLwotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGRpcmZ1bmMsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoZGlyZnVuYyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIC8qIHJlc3VsdCBtdXN0IGJlIGEgbGlzdCAqLwotICAgICAgICAvKiBYWFgoZ2JyYW5kbCk6IGNvdWxkIGFsc28gY2hlY2sgaWYgYWxsIGl0ZW1zIGFyZSBzdHJpbmdzICovCi0gICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHJlc3VsdCkpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIl9fZGlyX18oKSBtdXN0IHJldHVybiBhIGxpc3QsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocmVzdWx0KS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgICAgIH0KKyAgICAvKiB1c2UgX19kaXJfXyAqLworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZGlyZnVuYywgTlVMTCk7CisgICAgUHlfREVDUkVGKGRpcmZ1bmMpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogcmV0dXJuIHNvcnRlZChyZXN1bHQpICovCisgICAgc29ydGVkID0gUHlTZXF1ZW5jZV9MaXN0KHJlc3VsdCk7CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgaWYgKHNvcnRlZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlMaXN0X1NvcnQoc29ydGVkKSkgeworICAgICAgICBQeV9ERUNSRUYoc29ydGVkKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gc29ydGVkOwogfQogCiAvKiBJbXBsZW1lbnRhdGlvbiBvZiBkaXIoKSAtLSBpZiBvYmogaXMgTlVMTCwgcmV0dXJucyB0aGUgbmFtZXMgaW4gdGhlIGN1cnJlbnQKQEAgLTE0MTIsMzEgKzEzODAsMTMgQEAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0RpcihQeU9iamVjdCAqb2JqKQogewotICAgIFB5T2JqZWN0ICogcmVzdWx0OwotCi0gICAgaWYgKG9iaiA9PSBOVUxMKQotICAgICAgICAvKiBubyBvYmplY3QgLS0gaW50cm9zcGVjdCB0aGUgbG9jYWxzICovCi0gICAgICAgIHJlc3VsdCA9IF9kaXJfbG9jYWxzKCk7Ci0gICAgZWxzZQotICAgICAgICAvKiBvYmplY3QgLS0gaW50cm9zcGVjdCB0aGUgb2JqZWN0ICovCi0gICAgICAgIHJlc3VsdCA9IF9kaXJfb2JqZWN0KG9iaik7Ci0KLSAgICBhc3NlcnQocmVzdWx0ID09IE5VTEwgfHwgUHlMaXN0X0NoZWNrKHJlc3VsdCkpOwotCi0gICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIFB5TGlzdF9Tb3J0KHJlc3VsdCkgIT0gMCkgewotICAgICAgICAvKiBzb3J0aW5nIHRoZSBsaXN0IGZhaWxlZCAqLwotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiAob2JqID09IE5VTEwpID8gX2Rpcl9sb2NhbHMoKSA6IF9kaXJfb2JqZWN0KG9iaik7CiB9CiAKIC8qCi1Ob09iamVjdCBpcyB1c2FibGUgYXMgYSBub24tTlVMTCB1bmRlZmluZWQgdmFsdWUsIHVzZWQgYnkgdGhlIG1hY3JvIE5vbmUuCitOb25lIGlzIGEgbm9uLU5VTEwgdW5kZWZpbmVkIHZhbHVlLgogVGhlcmUgaXMgKGFuZCBzaG91bGQgYmUhKSBubyB3YXkgdG8gY3JlYXRlIG90aGVyIG9iamVjdHMgb2YgdGhpcyB0eXBlLAogc28gdGhlcmUgaXMgZXhhY3RseSBvbmUgKHdoaWNoIGlzIGluZGVzdHJ1Y3RpYmxlLCBieSB0aGUgd2F5KS4KLShYWFggVGhpcyB0eXBlIGFuZCB0aGUgdHlwZSBvZiBOb3RJbXBsZW1lbnRlZCBiZWxvdyBzaG91bGQgYmUgdW5pZmllZC4pCiAqLwogCiAvKiBBUkdTVVNFRCAqLwpAQCAtMTQ1Niw2ICsxNDA2LDU4IEBACiAgICAgUHlfRmF0YWxFcnJvcigiZGVhbGxvY2F0aW5nIE5vbmUiKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK25vbmVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgfHwgKGt3YXJncyAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiTm9uZVR5cGUgdGFrZXMgbm8gYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIGludAorbm9uZV9ib29sKFB5T2JqZWN0ICp2KQoreworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlOdW1iZXJNZXRob2RzIG5vbmVfYXNfbnVtYmVyID0geworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hZGQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfc3VidHJhY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbXVsdGlwbHkgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcmVtYWluZGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Rpdm1vZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9wb3dlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9uZWdhdGl2ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9wb3NpdGl2ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hYnNvbHV0ZSAqLworICAgIChpbnF1aXJ5KW5vbmVfYm9vbCwgICAgICAgICAvKiBuYl9ib29sICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2ludmVydCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9sc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcnNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2FuZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl94b3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfb3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Zsb2F0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfYWRkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2Vfc3VidHJhY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9tdWx0aXBseSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3JlbWFpbmRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3Bvd2VyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfbHNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfcnNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfYW5kICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfeG9yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2Vfb3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfZmxvb3JfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3RydWVfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfZmxvb3JfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfdHJ1ZV9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5kZXggKi8KK307CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlOb25lX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKQEAgLTE0NjgsMTAgKzE0NzAsMzQgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KICAgICBub25lX3JlcHIsICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCisgICAgJm5vbmVfYXNfbnVtYmVyLCAgICAvKnRwX2FzX251bWJlciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jICovCisgICAgbm9uZV9uZXcsICAgICAgICAgICAvKnRwX25ldyAqLwogfTsKIAogUHlPYmplY3QgX1B5X05vbmVTdHJ1Y3QgPSB7CkBAIC0xNDg4LDYgKzE1MTQsMTYgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIk5vdEltcGxlbWVudGVkIik7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitub3RpbXBsZW1lbnRlZF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSB8fCAoa3dhcmdzICYmIFB5RGljdF9TaXplKGt3YXJncykpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJOb3RJbXBsZW1lbnRlZFR5cGUgdGFrZXMgbm8gYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Cit9CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlOb3RJbXBsZW1lbnRlZF9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgIk5vdEltcGxlbWVudGVkVHlwZSIsCkBAIC0xNTAzLDYgKzE1MzksMzAgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsIC8qdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYWxsb2MgKi8KKyAgICBub3RpbXBsZW1lbnRlZF9uZXcsIC8qdHBfbmV3ICovCiB9OwogCiBQeU9iamVjdCBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgPSB7CkBAIC0xNTg1LDYgKzE2NDUsOSBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5UHJvcGVydHlfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIHByb3BlcnR5IHR5cGUiKTsKIAorICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeU1hbmFnZWRCdWZmZXJfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG1hbmFnZWQgYnVmZmVyIHR5cGUiKTsKKwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TWVtb3J5Vmlld19UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgbWVtb3J5dmlldyB0eXBlIik7CiAKQEAgLTE2NDQsNiArMTcwNyw5IEBACiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVppcF9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgemlwIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeU5hbWVzcGFjZV9UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgbmFtZXNwYWNlIHR5cGUiKTsKIH0KIAogCkBAIC0xNzg2LDYgKzE4NTIsMTggQEAKICAgICBQeU1lbV9GUkVFKHApOwogfQogCit2b2lkCitfUHlPYmplY3RfRGVidWdUeXBlU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeUNGdW5jdGlvbl9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5RGljdF9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5RmxvYXRfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeUZyYW1lX0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlMaXN0X0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlNZXRob2RfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeVNldF9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5VHVwbGVfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworfQogCiAvKiBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIHRvIGNvbnRyb2wgaW5maW5pdGUgcmVjdXJzaW9uIGluIHJlcHIsIHN0ciwgcHJpbnQsCiAgICBldGMuICBDb250YWluZXIgb2JqZWN0cyB0aGF0IG1heSByZWN1cnNpdmVseSBjb250YWluIHRoZW1zZWx2ZXMsCmRpZmYgLS1naXQgYS9PYmplY3RzL29ibWFsbG9jLmMgYi9PYmplY3RzL29ibWFsbG9jLmMKaW5kZXggMzkxNjI2Mi4uOTI1NDgyMSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYm1hbGxvYy5jCisrKyBiL09iamVjdHMvb2JtYWxsb2MuYwpAQCAtMiw2ICsyLDEzIEBACiAKICNpZmRlZiBXSVRIX1BZTUFMTE9DCiAKKyNpZmRlZiBIQVZFX01NQVAKKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAjaWZkZWYgTUFQX0FOT05ZTU9VUworICAjZGVmaW5lIEFSRU5BU19VU0VfTU1BUAorICNlbmRpZgorI2VuZGlmCisKICNpZmRlZiBXSVRIX1ZBTEdSSU5ECiAjaW5jbHVkZSA8dmFsZ3JpbmQvdmFsZ3JpbmQuaD4KIApAQCAtNzUsNyArODIsOCBAQAogICogQWxsb2NhdGlvbiBzdHJhdGVneSBhYnN0cmFjdDoKICAqCiAgKiBGb3Igc21hbGwgcmVxdWVzdHMsIHRoZSBhbGxvY2F0b3Igc3ViLWFsbG9jYXRlcyA8QmlnPiBibG9ja3Mgb2YgbWVtb3J5LgotICogUmVxdWVzdHMgZ3JlYXRlciB0aGFuIDI1NiBieXRlcyBhcmUgcm91dGVkIHRvIHRoZSBzeXN0ZW0ncyBhbGxvY2F0b3IuCisgKiBSZXF1ZXN0cyBncmVhdGVyIHRoYW4gU01BTExfUkVRVUVTVF9USFJFU0hPTEQgYnl0ZXMgYXJlIHJvdXRlZCB0byB0aGUKKyAqIHN5c3RlbSdzIGFsbG9jYXRvci4KICAqCiAgKiBTbWFsbCByZXF1ZXN0cyBhcmUgZ3JvdXBlZCBpbiBzaXplIGNsYXNzZXMgc3BhY2VkIDggYnl0ZXMgYXBhcnQsIGR1ZQogICogdG8gdGhlIHJlcXVpcmVkIHZhbGlkIGFsaWdubWVudCBvZiB0aGUgcmV0dXJuZWQgYWRkcmVzcy4gUmVxdWVzdHMgb2YKQEAgLTEwNywxMCArMTE1LDExIEBACiAgKiAgICAgICA1Ny02NCAgICAgICAgICAgICAgICAgICA2NCAgICAgICAgICAgICAgICAgICAgICAgNwogICogICAgICAgNjUtNzIgICAgICAgICAgICAgICAgICAgNzIgICAgICAgICAgICAgICAgICAgICAgIDgKICAqICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgLi4uCi0gKiAgICAgIDI0MS0yNDggICAgICAgICAgICAgICAgIDI0OCAgICAgICAgICAgICAgICAgICAgICAzMAotICogICAgICAyNDktMjU2ICAgICAgICAgICAgICAgICAyNTYgICAgICAgICAgICAgICAgICAgICAgMzEKKyAqICAgICAgNDk3LTUwNCAgICAgICAgICAgICAgICAgNTA0ICAgICAgICAgICAgICAgICAgICAgIDYyCisgKiAgICAgIDUwNS01MTIgICAgICAgICAgICAgICAgIDUxMiAgICAgICAgICAgICAgICAgICAgICA2MwogICoKLSAqICAgICAgMCwgMjU3IGFuZCB1cDogcm91dGVkIHRvIHRoZSB1bmRlcmx5aW5nIGFsbG9jYXRvci4KKyAqICAgICAgMCwgU01BTExfUkVRVUVTVF9USFJFU0hPTEQgKyAxIGFuZCB1cDogcm91dGVkIHRvIHRoZSB1bmRlcmx5aW5nCisgKiAgICAgIGFsbG9jYXRvci4KICAqLwogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KQEAgLTEzOSwxNCArMTQ4LDE3IEBACiAgKiBzbWFsbCBlbm91Z2ggaW4gb3JkZXIgdG8gdXNlIHByZWFsbG9jYXRlZCBtZW1vcnkgcG9vbHMuIFlvdSBjYW4gdHVuZQogICogdGhpcyB2YWx1ZSBhY2NvcmRpbmcgdG8geW91ciBhcHBsaWNhdGlvbiBiZWhhdmlvdXIgYW5kIG1lbW9yeSBuZWVkcy4KICAqCisgKiBOb3RlOiBhIHNpemUgdGhyZXNob2xkIG9mIDUxMiBndWFyYW50ZWVzIHRoYXQgbmV3bHkgY3JlYXRlZCBkaWN0aW9uYXJpZXMKKyAqIHdpbGwgYmUgYWxsb2NhdGVkIGZyb20gcHJlYWxsb2NhdGVkIG1lbW9yeSBwb29scyBvbiA2NC1iaXQuCisgKgogICogVGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzIG11c3QgaG9sZDoKLSAqICAgICAgMSkgQUxJR05NRU5UIDw9IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIDw9IDI1NgorICogICAgICAxKSBBTElHTk1FTlQgPD0gU01BTExfUkVRVUVTVF9USFJFU0hPTEQgPD0gNTEyCiAgKiAgICAgIDIpIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIGlzIGV2ZW5seSBkaXZpc2libGUgYnkgQUxJR05NRU5UCiAgKgogICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBzcGFjZSBlZmZpY2llbmN5LAogICogaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCBpcyBzZXQgdG8gYSBwb3dlciBvZiAyLgogICovCi0jZGVmaW5lIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIDI1NgorI2RlZmluZSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCA1MTIKICNkZWZpbmUgTkJfU01BTExfU0laRV9DTEFTU0VTICAgKFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIC8gQUxJR05NRU5UKQogCiAvKgpAQCAtMTc0LDE1ICsxODYsMTUgQEAKIC8qCiAgKiBUaGUgYWxsb2NhdG9yIHN1Yi1hbGxvY2F0ZXMgPEJpZz4gYmxvY2tzIG9mIG1lbW9yeSAoY2FsbGVkIGFyZW5hcykgYWxpZ25lZAogICogb24gYSBwYWdlIGJvdW5kYXJ5LiBUaGlzIGlzIGEgcmVzZXJ2ZWQgdmlydHVhbCBhZGRyZXNzIHNwYWNlIGZvciB0aGUKLSAqIGN1cnJlbnQgcHJvY2VzcyAob2J0YWluZWQgdGhyb3VnaCBhIG1hbGxvYyBjYWxsKS4gSW4gbm8gd2F5IHRoaXMgbWVhbnMKLSAqIHRoYXQgdGhlIG1lbW9yeSBhcmVuYXMgd2lsbCBiZSB1c2VkIGVudGlyZWx5LiBBIG1hbGxvYyg8QmlnPikgaXMgdXN1YWxseQotICogYW4gYWRkcmVzcyByYW5nZSByZXNlcnZhdGlvbiBmb3IgPEJpZz4gYnl0ZXMsIHVubGVzcyBhbGwgcGFnZXMgd2l0aGluIHRoaXMKLSAqIHNwYWNlIGFyZSByZWZlcmVuY2VkIHN1YnNlcXVlbnRseS4gU28gbWFsbG9jJ2luZyBiaWcgYmxvY2tzIGFuZCBub3QgdXNpbmcKLSAqIHRoZW0gZG9lcyBub3QgbWVhbiAid2FzdGluZyBtZW1vcnkiLiBJdCdzIGFuIGFkZHJlc3NhYmxlIHJhbmdlIHdhc3RhZ2UuLi4KKyAqIGN1cnJlbnQgcHJvY2VzcyAob2J0YWluZWQgdGhyb3VnaCBhIG1hbGxvYygpL21tYXAoKSBjYWxsKS4gSW4gbm8gd2F5IHRoaXMKKyAqIG1lYW5zIHRoYXQgdGhlIG1lbW9yeSBhcmVuYXMgd2lsbCBiZSB1c2VkIGVudGlyZWx5LiBBIG1hbGxvYyg8QmlnPikgaXMKKyAqIHVzdWFsbHkgYW4gYWRkcmVzcyByYW5nZSByZXNlcnZhdGlvbiBmb3IgPEJpZz4gYnl0ZXMsIHVubGVzcyBhbGwgcGFnZXMgd2l0aGluCisgKiB0aGlzIHNwYWNlIGFyZSByZWZlcmVuY2VkIHN1YnNlcXVlbnRseS4gU28gbWFsbG9jJ2luZyBiaWcgYmxvY2tzIGFuZCBub3QKKyAqIHVzaW5nIHRoZW0gZG9lcyBub3QgbWVhbiAid2FzdGluZyBtZW1vcnkiLiBJdCdzIGFuIGFkZHJlc3NhYmxlIHJhbmdlCisgKiB3YXN0YWdlLi4uCiAgKgotICogVGhlcmVmb3JlLCBhbGxvY2F0aW5nIGFyZW5hcyB3aXRoIG1hbGxvYyBpcyBub3Qgb3B0aW1hbCwgYmVjYXVzZSB0aGVyZSBpcwotICogc29tZSBhZGRyZXNzIHNwYWNlIHdhc3RhZ2UsIGJ1dCB0aGlzIGlzIHRoZSBtb3N0IHBvcnRhYmxlIHdheSB0byByZXF1ZXN0Ci0gKiBtZW1vcnkgZnJvbSB0aGUgc3lzdGVtIGFjcm9zcyB2YXJpb3VzIHBsYXRmb3Jtcy4KKyAqIEFyZW5hcyBhcmUgYWxsb2NhdGVkIHdpdGggbW1hcCgpIG9uIHN5c3RlbXMgc3VwcG9ydGluZyBhbm9ueW1vdXMgbWVtb3J5CisgKiBtYXBwaW5ncyB0byByZWR1Y2UgaGVhcCBmcmFnbWVudGF0aW9uLgogICovCiAjZGVmaW5lIEFSRU5BX1NJWkUgICAgICAgICAgICAgICgyNTYgPDwgMTApICAgICAvKiAyNTZLQiAqLwogCkBAIC00NDAsNiArNDUyLDkgQEAKICAgICAsIFBUKDQ4KSwgUFQoNDkpLCBQVCg1MCksIFBUKDUxKSwgUFQoNTIpLCBQVCg1MyksIFBUKDU0KSwgUFQoNTUpCiAjaWYgTkJfU01BTExfU0laRV9DTEFTU0VTID4gNTYKICAgICAsIFBUKDU2KSwgUFQoNTcpLCBQVCg1OCksIFBUKDU5KSwgUFQoNjApLCBQVCg2MSksIFBUKDYyKSwgUFQoNjMpCisjaWYgTkJfU01BTExfU0laRV9DTEFTU0VTID4gNjQKKyNlcnJvciAiTkJfU01BTExfU0laRV9DTEFTU0VTIHNob3VsZCBiZSBsZXNzIHRoYW4gNjQiCisjZW5kaWYgLyogTkJfU01BTExfU0laRV9DTEFTU0VTID4gNjQgKi8KICNlbmRpZiAvKiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA1NiAqLwogI2VuZGlmIC8qIE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyA+IDQ4ICovCiAjZW5kaWYgLyogTkJfU01BTExfU0laRV9DTEFTU0VTID4gNDAgKi8KQEAgLTUwOCwxMiArNTIzLDEwIEBACiAvKiBOdW1iZXIgb2YgYXJlbmFzIGFsbG9jYXRlZCB0aGF0IGhhdmVuJ3QgYmVlbiBmcmVlKCknZC4gKi8KIHN0YXRpYyBzaXplX3QgbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkID0gMDsKIAotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAvKiBUb3RhbCBudW1iZXIgb2YgdGltZXMgbWFsbG9jKCkgY2FsbGVkIHRvIGFsbG9jYXRlIGFuIGFyZW5hLiAqLwogc3RhdGljIHNpemVfdCBudGltZXNfYXJlbmFfYWxsb2NhdGVkID0gMDsKIC8qIEhpZ2ggd2F0ZXIgbWFyayAobWF4IHZhbHVlIGV2ZXIgc2VlbikgZm9yIG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZC4gKi8KIHN0YXRpYyBzaXplX3QgbmFyZW5hc19oaWdod2F0ZXIgPSAwOwotI2VuZGlmCiAKIC8qIEFsbG9jYXRlIGEgbmV3IGFyZW5hLiAgSWYgd2UgcnVuIG91dCBvZiBtZW1vcnksIHJldHVybiBOVUxMLiAgRWxzZQogICogYWxsb2NhdGUgYSBuZXcgYXJlbmEsIGFuZCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgYW4gYXJlbmFfb2JqZWN0CkBAIC01MjUsMTAgKzUzOCwxMiBAQAogewogICAgIHN0cnVjdCBhcmVuYV9vYmplY3QqIGFyZW5hb2JqOwogICAgIHVpbnQgZXhjZXNzOyAgICAgICAgLyogbnVtYmVyIG9mIGJ5dGVzIGFib3ZlIHBvb2wgYWxpZ25tZW50ICovCisgICAgdm9pZCAqYWRkcmVzczsKKyAgICBpbnQgZXJyOwogCiAjaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQotICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cygpOworICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOwogI2VuZGlmCiAgICAgaWYgKHVudXNlZF9hcmVuYV9vYmplY3RzID09IE5VTEwpIHsKICAgICAgICAgdWludCBpOwpAQCAtNTc3LDggKzU5MiwxNSBAQAogICAgIGFyZW5hb2JqID0gdW51c2VkX2FyZW5hX29iamVjdHM7CiAgICAgdW51c2VkX2FyZW5hX29iamVjdHMgPSBhcmVuYW9iai0+bmV4dGFyZW5hOwogICAgIGFzc2VydChhcmVuYW9iai0+YWRkcmVzcyA9PSAwKTsKLSAgICBhcmVuYW9iai0+YWRkcmVzcyA9ICh1cHRyKW1hbGxvYyhBUkVOQV9TSVpFKTsKLSAgICBpZiAoYXJlbmFvYmotPmFkZHJlc3MgPT0gMCkgeworI2lmZGVmIEFSRU5BU19VU0VfTU1BUAorICAgIGFkZHJlc3MgPSBtbWFwKE5VTEwsIEFSRU5BX1NJWkUsIFBST1RfUkVBRHxQUk9UX1dSSVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfUFJJVkFURXxNQVBfQU5PTllNT1VTLCAtMSwgMCk7CisgICAgZXJyID0gKGFkZHJlc3MgPT0gTUFQX0ZBSUxFRCk7CisjZWxzZQorICAgIGFkZHJlc3MgPSBtYWxsb2MoQVJFTkFfU0laRSk7CisgICAgZXJyID0gKGFkZHJlc3MgPT0gMCk7CisjZW5kaWYKKyAgICBpZiAoZXJyKSB7CiAgICAgICAgIC8qIFRoZSBhbGxvY2F0aW9uIGZhaWxlZDogcmV0dXJuIE5VTEwgYWZ0ZXIgcHV0dGluZyB0aGUKICAgICAgICAgICogYXJlbmFvYmogYmFjay4KICAgICAgICAgICovCkBAIC01ODYsMTMgKzYwOCwxMiBAQAogICAgICAgICB1bnVzZWRfYXJlbmFfb2JqZWN0cyA9IGFyZW5hb2JqOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgYXJlbmFvYmotPmFkZHJlc3MgPSAodXB0cilhZGRyZXNzOwogCiAgICAgKytuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQ7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICArK250aW1lc19hcmVuYV9hbGxvY2F0ZWQ7CiAgICAgaWYgKG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZCA+IG5hcmVuYXNfaGlnaHdhdGVyKQogICAgICAgICBuYXJlbmFzX2hpZ2h3YXRlciA9IG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZDsKLSNlbmRpZgogICAgIGFyZW5hb2JqLT5mcmVlcG9vbHMgPSBOVUxMOwogICAgIC8qIHBvb2xfYWRkcmVzcyA8LSBmaXJzdCBwb29sLWFsaWduZWQgYWRkcmVzcyBpbiB0aGUgYXJlbmEKICAgICAgICBuZnJlZXBvb2xzIDwtIG51bWJlciBvZiB3aG9sZSBwb29scyB0aGF0IGZpdCBhZnRlciBhbGlnbm1lbnQgKi8KQEAgLTEwNTQsNyArMTA3NSwxMSBAQAogICAgICAgICAgICAgICAgIHVudXNlZF9hcmVuYV9vYmplY3RzID0gYW87CiAKICAgICAgICAgICAgICAgICAvKiBGcmVlIHRoZSBlbnRpcmUgYXJlbmEuICovCisjaWZkZWYgQVJFTkFTX1VTRV9NTUFQCisgICAgICAgICAgICAgICAgbXVubWFwKCh2b2lkICopYW8tPmFkZHJlc3MsIEFSRU5BX1NJWkUpOworI2Vsc2UKICAgICAgICAgICAgICAgICBmcmVlKCh2b2lkICopYW8tPmFkZHJlc3MpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgYW8tPmFkZHJlc3MgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1hcmsgdW5hc3NvY2lhdGVkICovCiAgICAgICAgICAgICAgICAgLS1uYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQ7CiAKQEAgLTE2OTQsMTcgKzE3MTksMTkgQEAKICAgICB9CiB9CiAKKyNlbmRpZiAgLyogUFlNQUxMT0NfREVCVUcgKi8KKwogc3RhdGljIHNpemVfdAotcHJpbnRvbmUoY29uc3QgY2hhciogbXNnLCBzaXplX3QgdmFsdWUpCitwcmludG9uZShGSUxFICpvdXQsIGNvbnN0IGNoYXIqIG1zZywgc2l6ZV90IHZhbHVlKQogewogICAgIGludCBpLCBrOwogICAgIGNoYXIgYnVmWzEwMF07CiAgICAgc2l6ZV90IG9yaWd2YWx1ZSA9IHZhbHVlOwogCi0gICAgZnB1dHMobXNnLCBzdGRlcnIpOworICAgIGZwdXRzKG1zZywgb3V0KTsKICAgICBmb3IgKGkgPSAoaW50KXN0cmxlbihtc2cpOyBpIDwgMzU7ICsraSkKLSAgICAgICAgZnB1dGMoJyAnLCBzdGRlcnIpOwotICAgIGZwdXRjKCc9Jywgc3RkZXJyKTsKKyAgICAgICAgZnB1dGMoJyAnLCBvdXQpOworICAgIGZwdXRjKCc9Jywgb3V0KTsKIAogICAgIC8qIFdyaXRlIHRoZSB2YWx1ZSB3aXRoIGNvbW1hcy4gKi8KICAgICBpID0gMjI7CkBAIC0xNzI1LDE3ICsxNzUyLDMzIEBACiAKICAgICB3aGlsZSAoaSA+PSAwKQogICAgICAgICBidWZbaS0tXSA9ICcgJzsKLSAgICBmcHV0cyhidWYsIHN0ZGVycik7CisgICAgZnB1dHMoYnVmLCBvdXQpOwogCiAgICAgcmV0dXJuIG9yaWd2YWx1ZTsKIH0KIAotLyogUHJpbnQgc3VtbWFyeSBpbmZvIHRvIHN0ZGVyciBhYm91dCB0aGUgc3RhdGUgb2YgcHltYWxsb2MncyBzdHJ1Y3R1cmVzLgordm9pZAorX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhGSUxFICpvdXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJsb2NrX25hbWUsIGludCBudW1fYmxvY2tzLCBzaXplX3Qgc2l6ZW9mX2Jsb2NrKQoreworICAgIGNoYXIgYnVmMVsxMjhdOworICAgIGNoYXIgYnVmMlsxMjhdOworICAgIFB5T1Nfc25wcmludGYoYnVmMSwgc2l6ZW9mKGJ1ZjEpLAorICAgICAgICAgICAgICAgICAgIiVkICVzcyAqICV6ZCBieXRlcyBlYWNoIiwKKyAgICAgICAgICAgICAgICAgIG51bV9ibG9ja3MsIGJsb2NrX25hbWUsIHNpemVvZl9ibG9jayk7CisgICAgUHlPU19zbnByaW50ZihidWYyLCBzaXplb2YoYnVmMiksCisgICAgICAgICAgICAgICAgICAiJTQ4cyAiLCBidWYxKTsKKyAgICAodm9pZClwcmludG9uZShvdXQsIGJ1ZjIsIG51bV9ibG9ja3MgKiBzaXplb2ZfYmxvY2spOworfQorCisjaWZkZWYgV0lUSF9QWU1BTExPQworCisvKiBQcmludCBzdW1tYXJ5IGluZm8gdG8gIm91dCIgYWJvdXQgdGhlIHN0YXRlIG9mIHB5bWFsbG9jJ3Mgc3RydWN0dXJlcy4KICAqIEluIFB5X0RFQlVHIG1vZGUsIGFsc28gcGVyZm9ybSBzb21lIGV4cGVuc2l2ZSBpbnRlcm5hbCBjb25zaXN0ZW5jeQogICogY2hlY2tzLgogICovCiB2b2lkCi1fUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyh2b2lkKQorX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQogewogICAgIHVpbnQgaTsKICAgICBjb25zdCB1aW50IG51bWNsYXNzZXMgPSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCA+PiBBTElHTk1FTlRfU0hJRlQ7CkBAIC0xNzY0LDcgKzE4MDcsNyBAQAogICAgIHNpemVfdCB0b3RhbDsKICAgICBjaGFyIGJ1ZlsxMjhdOwogCi0gICAgZnByaW50ZihzdGRlcnIsICJTbWFsbCBibG9jayB0aHJlc2hvbGQgPSAlZCwgaW4gJXUgc2l6ZSBjbGFzc2VzLlxuIiwKKyAgICBmcHJpbnRmKG91dCwgIlNtYWxsIGJsb2NrIHRocmVzaG9sZCA9ICVkLCBpbiAldSBzaXplIGNsYXNzZXMuXG4iLAogICAgICAgICAgICAgU01BTExfUkVRVUVTVF9USFJFU0hPTEQsIG51bWNsYXNzZXMpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG51bWNsYXNzZXM7ICsraSkKQEAgLTE3NzUsNyArMTgxOCw2IEBACiAgICAgICogd2lsbCBiZSBsaXZpbmcgaW4gZnVsbCBwb29scyAtLSB3b3VsZCBiZSBhIHNoYW1lIHRvIG1pc3MgdGhlbS4KICAgICAgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4YXJlbmFzOyArK2kpIHsKLSAgICAgICAgdWludCBwb29sc2luYXJlbmE7CiAgICAgICAgIHVpbnQgajsKICAgICAgICAgdXB0ciBiYXNlID0gYXJlbmFzW2ldLmFkZHJlc3M7CiAKQEAgLTE3ODQsNyArMTgyNiw2IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbmFyZW5hcyArPSAxOwogCi0gICAgICAgIHBvb2xzaW5hcmVuYSA9IGFyZW5hc1tpXS5udG90YWxwb29sczsKICAgICAgICAgbnVtZnJlZXBvb2xzICs9IGFyZW5hc1tpXS5uZnJlZXBvb2xzOwogCiAgICAgICAgIC8qIHJvdW5kIHVwIHRvIHBvb2wgYWxpZ25tZW50ICovCkBAIC0xODIwLDEwICsxODYxLDEwIEBACiAgICAgfQogICAgIGFzc2VydChuYXJlbmFzID09IG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZCk7CiAKLSAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgIGZwdXRjKCdcbicsIG91dCk7CiAgICAgZnB1dHMoImNsYXNzICAgc2l6ZSAgIG51bSBwb29scyAgIGJsb2NrcyBpbiB1c2UgIGF2YWlsIGJsb2Nrc1xuIgogICAgICAgICAgICItLS0tLSAgIC0tLS0gICAtLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS1cbiIsCi0gICAgICAgICAgc3RkZXJyKTsKKyAgICAgICAgICBvdXQpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG51bWNsYXNzZXM7ICsraSkgewogICAgICAgICBzaXplX3QgcCA9IG51bXBvb2xzW2ldOwpAQCAtMTgzNCw3ICsxODc1LDcgQEAKICAgICAgICAgICAgIGFzc2VydChiID09IDAgJiYgZiA9PSAwKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJTV1ICU2dSAiCisgICAgICAgIGZwcmludGYob3V0LCAiJTV1ICU2dSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiJTExIiBQWV9GT1JNQVRfU0laRV9UICJ1ICIKICAgICAgICAgICAgICAgICAgICAgICAgICIlMTUiIFBZX0ZPUk1BVF9TSVpFX1QgInUgIgogICAgICAgICAgICAgICAgICAgICAgICAgIiUxMyIgUFlfRk9STUFUX1NJWkVfVCAidVxuIiwKQEAgLTE4NDQsMzUgKzE4ODUsMzYgQEAKICAgICAgICAgcG9vbF9oZWFkZXJfYnl0ZXMgKz0gcCAqIFBPT0xfT1ZFUkhFQUQ7CiAgICAgICAgIHF1YW50aXphdGlvbiArPSBwICogKChQT09MX1NJWkUgLSBQT09MX09WRVJIRUFEKSAlIHNpemUpOwogICAgIH0KLSAgICBmcHV0YygnXG4nLCBzdGRlcnIpOwotICAgICh2b2lkKXByaW50b25lKCIjIHRpbWVzIG9iamVjdCBtYWxsb2MgY2FsbGVkIiwgc2VyaWFsbm8pOwotCi0gICAgKHZvaWQpcHJpbnRvbmUoIiMgYXJlbmFzIGFsbG9jYXRlZCB0b3RhbCIsIG50aW1lc19hcmVuYV9hbGxvY2F0ZWQpOwotICAgICh2b2lkKXByaW50b25lKCIjIGFyZW5hcyByZWNsYWltZWQiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkIC0gbmFyZW5hcyk7Ci0gICAgKHZvaWQpcHJpbnRvbmUoIiMgYXJlbmFzIGhpZ2h3YXRlciBtYXJrIiwgbmFyZW5hc19oaWdod2F0ZXIpOwotICAgICh2b2lkKXByaW50b25lKCIjIGFyZW5hcyBhbGxvY2F0ZWQgY3VycmVudCIsIG5hcmVuYXMpOworICAgIGZwdXRjKCdcbicsIG91dCk7CisjaWZkZWYgUFlNQUxMT0NfREVCVUcKKyAgICAodm9pZClwcmludG9uZShvdXQsICIjIHRpbWVzIG9iamVjdCBtYWxsb2MgY2FsbGVkIiwgc2VyaWFsbm8pOworI2VuZGlmCisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgYWxsb2NhdGVkIHRvdGFsIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCk7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgcmVjbGFpbWVkIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCAtIG5hcmVuYXMpOworICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGhpZ2h3YXRlciBtYXJrIiwgbmFyZW5hc19oaWdod2F0ZXIpOworICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGFsbG9jYXRlZCBjdXJyZW50IiwgbmFyZW5hcyk7CiAKICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCiAgICAgICAgICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IGFyZW5hcyAqICVkIGJ5dGVzL2FyZW5hIiwKICAgICAgICAgbmFyZW5hcywgQVJFTkFfU0laRSk7Ci0gICAgKHZvaWQpcHJpbnRvbmUoYnVmLCBuYXJlbmFzICogQVJFTkFfU0laRSk7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCBidWYsIG5hcmVuYXMgKiBBUkVOQV9TSVpFKTsKIAotICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgZnB1dGMoJ1xuJywgb3V0KTsKIAotICAgIHRvdGFsID0gcHJpbnRvbmUoIiMgYnl0ZXMgaW4gYWxsb2NhdGVkIGJsb2NrcyIsIGFsbG9jYXRlZF9ieXRlcyk7Ci0gICAgdG90YWwgKz0gcHJpbnRvbmUoIiMgYnl0ZXMgaW4gYXZhaWxhYmxlIGJsb2NrcyIsIGF2YWlsYWJsZV9ieXRlcyk7CisgICAgdG90YWwgPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGluIGFsbG9jYXRlZCBibG9ja3MiLCBhbGxvY2F0ZWRfYnl0ZXMpOworICAgIHRvdGFsICs9IHByaW50b25lKG91dCwgIiMgYnl0ZXMgaW4gYXZhaWxhYmxlIGJsb2NrcyIsIGF2YWlsYWJsZV9ieXRlcyk7CiAKICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCiAgICAgICAgICIldSB1bnVzZWQgcG9vbHMgKiAlZCBieXRlcyIsIG51bWZyZWVwb29scywgUE9PTF9TSVpFKTsKLSAgICB0b3RhbCArPSBwcmludG9uZShidWYsIChzaXplX3QpbnVtZnJlZXBvb2xzICogUE9PTF9TSVpFKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsIGJ1ZiwgKHNpemVfdCludW1mcmVlcG9vbHMgKiBQT09MX1NJWkUpOwogCi0gICAgdG90YWwgKz0gcHJpbnRvbmUoIiMgYnl0ZXMgbG9zdCB0byBwb29sIGhlYWRlcnMiLCBwb29sX2hlYWRlcl9ieXRlcyk7Ci0gICAgdG90YWwgKz0gcHJpbnRvbmUoIiMgYnl0ZXMgbG9zdCB0byBxdWFudGl6YXRpb24iLCBxdWFudGl6YXRpb24pOwotICAgIHRvdGFsICs9IHByaW50b25lKCIjIGJ5dGVzIGxvc3QgdG8gYXJlbmEgYWxpZ25tZW50IiwgYXJlbmFfYWxpZ25tZW50KTsKLSAgICAodm9pZClwcmludG9uZSgiVG90YWwiLCB0b3RhbCk7CisgICAgdG90YWwgKz0gcHJpbnRvbmUob3V0LCAiIyBieXRlcyBsb3N0IHRvIHBvb2wgaGVhZGVycyIsIHBvb2xfaGVhZGVyX2J5dGVzKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGxvc3QgdG8gcXVhbnRpemF0aW9uIiwgcXVhbnRpemF0aW9uKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGxvc3QgdG8gYXJlbmEgYWxpZ25tZW50IiwgYXJlbmFfYWxpZ25tZW50KTsKKyAgICAodm9pZClwcmludG9uZShvdXQsICJUb3RhbCIsIHRvdGFsKTsKIH0KIAotI2VuZGlmICAvKiBQWU1BTExPQ19ERUJVRyAqLworI2VuZGlmIC8qICNpZmRlZiBXSVRIX1BZTUFMTE9DICovCiAKICNpZmRlZiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKIC8qIE1ha2UgdGhpcyBmdW5jdGlvbiBsYXN0IHNvIGdjYyB3b24ndCBpbmxpbmUgaXQgc2luY2UgdGhlIGRlZmluaXRpb24gaXMKZGlmZiAtLWdpdCBhL09iamVjdHMvcmFuZ2VvYmplY3QuYyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwppbmRleCA5MzViMjA1Li5jNDdhNGZmIDEwMDY0NAotLS0gYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCkBAIC0xLDYgKzEsNyBAQAogLyogUmFuZ2Ugb2JqZWN0IGltcGxlbWVudGF0aW9uICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogLyogU3VwcG9ydCBvYmplY3RzIHdob3NlIGxlbmd0aCBpcyA+IFBZX1NTSVpFX1RfTUFYLgogCkBAIC02MDksNiArNjEwLDEzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfSVRFUlNFQVJDSF9DT05UQUlOUyk7CiB9CiAKKy8qIENvbXBhcmUgdHdvIHJhbmdlIG9iamVjdHMuICBSZXR1cm4gMSBmb3IgZXF1YWwsIDAgZm9yIG5vdCBlcXVhbAorICAgYW5kIC0xIG9uIGVycm9yLiAgVGhlIGFsZ29yaXRobSBpcyByb3VnaGx5IHRoZSBDIGVxdWl2YWxlbnQgb2YKKworICAgaWYgcjAgaXMgcjE6CisgICAgICAgcmV0dXJuIFRydWUKKyAgIGlmIGxlbihyMCkgIT0gbGVuKHIxKToKKyAgICAgICByZXR1cm4gRmFsc2UKKyAgIGlmIG5vdCBsZW4ocjApOgorICAgICAgIHJldHVybiBUcnVlCisgICBpZiByMC5zdGFydCAhPSByMS5zdGFydDoKKyAgICAgICByZXR1cm4gRmFsc2UKKyAgIGlmIGxlbihyMCkgPT0gMToKKyAgICAgICByZXR1cm4gVHJ1ZQorICAgcmV0dXJuIHIwLnN0ZXAgPT0gcjEuc3RlcAorKi8KK3N0YXRpYyBpbnQKK3JhbmdlX2VxdWFscyhyYW5nZW9iamVjdCAqcjAsIHJhbmdlb2JqZWN0ICpyMSkKK3sKKyAgICBpbnQgY21wX3Jlc3VsdDsKKyAgICBQeU9iamVjdCAqb25lOworCisgICAgaWYgKHIwID09IHIxKQorICAgICAgICByZXR1cm4gMTsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHIwLT5sZW5ndGgsIHIxLT5sZW5ndGgsIFB5X0VRKTsKKyAgICAvKiBSZXR1cm4gRmFsc2Ugb3IgZXJyb3IgdG8gdGhlIGNhbGxlci4gKi8KKyAgICBpZiAoY21wX3Jlc3VsdCAhPSAxKQorICAgICAgICByZXR1cm4gY21wX3Jlc3VsdDsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfTm90KHIwLT5sZW5ndGgpOworICAgIC8qIFJldHVybiBUcnVlIG9yIGVycm9yIHRvIHRoZSBjYWxsZXIuICovCisgICAgaWYgKGNtcF9yZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuIGNtcF9yZXN1bHQ7CisgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChyMC0+c3RhcnQsIHIxLT5zdGFydCwgUHlfRVEpOworICAgIC8qIFJldHVybiBGYWxzZSBvciBlcnJvciB0byB0aGUgY2FsbGVyLiAqLworICAgIGlmIChjbXBfcmVzdWx0ICE9IDEpCisgICAgICAgIHJldHVybiBjbXBfcmVzdWx0OworICAgIG9uZSA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICBpZiAoIW9uZSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wocjAtPmxlbmd0aCwgb25lLCBQeV9FUSk7CisgICAgUHlfREVDUkVGKG9uZSk7CisgICAgLyogUmV0dXJuIFRydWUgb3IgZXJyb3IgdG8gdGhlIGNhbGxlci4gKi8KKyAgICBpZiAoY21wX3Jlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gY21wX3Jlc3VsdDsKKyAgICByZXR1cm4gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHIwLT5zdGVwLCByMS0+c3RlcCwgUHlfRVEpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcmFuZ2VfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQoreworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAoIVB5UmFuZ2VfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgUHlfTkU6CisgICAgY2FzZSBQeV9FUToKKyAgICAgICAgcmVzdWx0ID0gcmFuZ2VfZXF1YWxzKChyYW5nZW9iamVjdCopc2VsZiwgKHJhbmdlb2JqZWN0KilvdGhlcik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKG9wID09IFB5X05FKQorICAgICAgICAgICAgcmVzdWx0ID0gIXJlc3VsdDsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgY2FzZSBQeV9MRToKKyAgICBjYXNlIFB5X0dFOgorICAgIGNhc2UgUHlfTFQ6CisgICAgY2FzZSBQeV9HVDoKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworLyogSGFzaCBmdW5jdGlvbiBmb3IgcmFuZ2Ugb2JqZWN0cy4gIFJvdWdoIEMgZXF1aXZhbGVudCBvZgorCisgICBpZiBub3QgbGVuKHIpOgorICAgICAgIHJldHVybiBoYXNoKChsZW4ociksIE5vbmUsIE5vbmUpKQorICAgaWYgbGVuKHIpID09IDE6CisgICAgICAgcmV0dXJuIGhhc2goKGxlbihyKSwgci5zdGFydCwgTm9uZSkpCisgICByZXR1cm4gaGFzaCgobGVuKHIpLCByLnN0YXJ0LCByLnN0ZXApKQorKi8KK3N0YXRpYyBQeV9oYXNoX3QKK3JhbmdlX2hhc2gocmFuZ2VvYmplY3QgKnIpCit7CisgICAgUHlPYmplY3QgKnQ7CisgICAgUHlfaGFzaF90IHJlc3VsdCA9IC0xOworICAgIGludCBjbXBfcmVzdWx0OworCisgICAgdCA9IFB5VHVwbGVfTmV3KDMpOworICAgIGlmICghdCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5X0lOQ1JFRihyLT5sZW5ndGgpOworICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMCwgci0+bGVuZ3RoKTsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfTm90KHItPmxlbmd0aCk7CisgICAgaWYgKGNtcF9yZXN1bHQgPT0gLTEpCisgICAgICAgIGdvdG8gZW5kOworICAgIGlmIChjbXBfcmVzdWx0ID09IDEpIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMSwgUHlfTm9uZSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMiwgUHlfTm9uZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqb25lOworICAgICAgICBQeV9JTkNSRUYoci0+c3RhcnQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHQsIDEsIHItPnN0YXJ0KTsKKyAgICAgICAgb25lID0gUHlMb25nX0Zyb21Mb25nKDEpOworICAgICAgICBpZiAoIW9uZSkKKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHItPmxlbmd0aCwgb25lLCBQeV9FUSk7CisgICAgICAgIFB5X0RFQ1JFRihvbmUpOworICAgICAgICBpZiAoY21wX3Jlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICBpZiAoY21wX3Jlc3VsdCA9PSAxKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHQsIDIsIFB5X05vbmUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKHItPnN0ZXApOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0LCAyLCByLT5zdGVwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXN1bHQgPSBQeU9iamVjdF9IYXNoKHQpOworICBlbmQ6CisgICAgUHlfREVDUkVGKHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiByYW5nZV9jb3VudChyYW5nZW9iamVjdCAqciwgUHlPYmplY3QgKm9iKQogewpAQCAtNzQ5LDYgKzg4MSwxMyBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgUHlNZW1iZXJEZWYgcmFuZ2VfbWVtYmVyc1tdID0geworICAgIHsic3RhcnQiLCAgIFRfT0JKRUNUX0VYLCAgICBvZmZzZXRvZihyYW5nZW9iamVjdCwgc3RhcnQpLCAgIFJFQURPTkxZfSwKKyAgICB7InN0b3AiLCAgICBUX09CSkVDVF9FWCwgICAgb2Zmc2V0b2YocmFuZ2VvYmplY3QsIHN0b3ApLCAgICBSRUFET05MWX0sCisgICAgeyJzdGVwIiwgICAgVF9PQkpFQ1RfRVgsICAgIG9mZnNldG9mKHJhbmdlb2JqZWN0LCBzdGVwKSwgICAgUkVBRE9OTFl9LAorICAgIHswfQorfTsKKwogUHlUeXBlT2JqZWN0IFB5UmFuZ2VfVHlwZSA9IHsKICAgICAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAgICAgInJhbmdlIiwgICAgICAgICAgICAgICAgLyogTmFtZSBvZiB0aGlzIHR5cGUgKi8KQEAgLTc2Myw3ICs5MDIsNyBAQAogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAgICAgJnJhbmdlX2FzX3NlcXVlbmNlLCAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAgICAgJnJhbmdlX2FzX21hcHBpbmcsICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgICAgIChoYXNoZnVuYylyYW5nZV9oYXNoLCAgIC8qIHRwX2hhc2ggKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KICAgICAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAvKiB0cF9nZXRhdHRybyAqLwpAQCAtNzczLDEyICs5MTIsMTIgQEAKICAgICAgICAgcmFuZ2VfZG9jLCAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgICAgIHJhbmdlX3JpY2hjb21wYXJlLCAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgICAgIHJhbmdlX2l0ZXIsICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICAgICAgcmFuZ2VfbWV0aG9kcywgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgICAgIHJhbmdlX21lbWJlcnMsICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwpAQCAtODI1LDkgKzk2NCw1OSBAQAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywKICAgICAgICAgICAgICAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCityYW5nZWl0ZXJfcmVkdWNlKHJhbmdlaXRlcm9iamVjdCAqcikKK3sKKyAgICBQeU9iamVjdCAqc3RhcnQ9TlVMTCwgKnN0b3A9TlVMTCwgKnN0ZXA9TlVMTDsKKyAgICBQeU9iamVjdCAqcmFuZ2U7CisgICAgCisgICAgLyogY3JlYXRlIGEgcmFuZ2Ugb2JqZWN0IGZvciBwaWNrbGluZyAqLworICAgIHN0YXJ0ID0gUHlMb25nX0Zyb21Mb25nKHItPnN0YXJ0KTsKKyAgICBpZiAoc3RhcnQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnI7CisgICAgc3RvcCA9IFB5TG9uZ19Gcm9tTG9uZyhyLT5zdGFydCArIHItPmxlbiAqIHItPnN0ZXApOworICAgIGlmIChzdG9wID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyOworICAgIHN0ZXAgPSBQeUxvbmdfRnJvbUxvbmcoci0+c3RlcCk7CisgICAgaWYgKHN0ZXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnI7CisgICAgcmFuZ2UgPSAoUHlPYmplY3QqKW1ha2VfcmFuZ2Vfb2JqZWN0KCZQeVJhbmdlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIHN0b3AsIHN0ZXApOworICAgIGlmIChyYW5nZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycjsKKyAgICAvKiByZXR1cm4gdGhlIHJlc3VsdCAqLworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4paSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHJhbmdlLCByLT5pbmRleCk7CitlcnI6CisgICAgUHlfWERFQ1JFRihzdGFydCk7CisgICAgUHlfWERFQ1JFRihzdG9wKTsKKyAgICBQeV9YREVDUkVGKHN0ZXApOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcmFuZ2VpdGVyX3NldHN0YXRlKHJhbmdlaXRlcm9iamVjdCAqciwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIGxvbmcgaW5kZXggPSBQeUxvbmdfQXNMb25nKHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSByLT5sZW4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHItPmluZGV4ID0gaW5kZXg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiByYW5nZWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXJhbmdlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLAogICAgICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilyYW5nZWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pcmFuZ2VpdGVyX3NldHN0YXRlLCBNRVRIX08sCisgICAgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTk1Niw5ICsxMTQ1LDUxIEBACiAgICAgcmV0dXJuIFB5TnVtYmVyX1N1YnRyYWN0KHItPmxlbiwgci0+aW5kZXgpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbG9uZ3JhbmdlaXRlcl9yZWR1Y2UobG9uZ3JhbmdlaXRlcm9iamVjdCAqcikKK3sKKyAgICBQeU9iamVjdCAqcHJvZHVjdCwgKnN0b3A9TlVMTDsKKyAgICBQeU9iamVjdCAqcmFuZ2U7CisKKyAgICAvKiBjcmVhdGUgYSByYW5nZSBvYmplY3QgZm9yIHBpY2tsaW5nLiAgTXVzdCBjYWxjdWxhdGUgdGhlICJzdG9wIiB2YWx1ZSAqLworICAgIHByb2R1Y3QgPSBQeU51bWJlcl9NdWx0aXBseShyLT5sZW4sIHItPnN0ZXApOworICAgIGlmIChwcm9kdWN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHN0b3AgPSBQeU51bWJlcl9BZGQoci0+c3RhcnQsIHByb2R1Y3QpOworICAgIFB5X0RFQ1JFRihwcm9kdWN0KTsKKyAgICBpZiAoc3RvcCA9PSAgTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKHItPnN0YXJ0KTsKKyAgICBQeV9JTkNSRUYoci0+c3RlcCk7CisgICAgcmFuZ2UgPSAgKFB5T2JqZWN0KiltYWtlX3JhbmdlX29iamVjdCgmUHlSYW5nZV9UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHItPnN0YXJ0LCBzdG9wLCByLT5zdGVwKTsKKyAgICBpZiAocmFuZ2UgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoci0+c3RhcnQpOworICAgICAgICBQeV9ERUNSRUYoc3RvcCk7CisgICAgICAgIFB5X0RFQ1JFRihyLT5zdGVwKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogcmV0dXJuIHRoZSByZXN1bHQgKi8KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKU8iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLCByYW5nZSwgci0+aW5kZXgpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbG9uZ3JhbmdlaXRlcl9zZXRzdGF0ZShsb25ncmFuZ2VpdGVyb2JqZWN0ICpyLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfQ0xFQVIoci0+aW5kZXgpOworICAgIHItPmluZGV4ID0gc3RhdGU7CisgICAgUHlfSU5DUkVGKHItPmluZGV4KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIGxvbmdyYW5nZWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKWxvbmdyYW5nZWl0ZXJfbGVuLCBNRVRIX05PQVJHUywKICAgICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbG9uZ3JhbmdlaXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilsb25ncmFuZ2VpdGVyX3NldHN0YXRlLCBNRVRIX08sCisgICAgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc2V0b2JqZWN0LmMgYi9PYmplY3RzL3NldG9iamVjdC5jCmluZGV4IDNhYmVlZmIuLjNlOTE1NzIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc2V0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9zZXRvYmplY3QuYwpAQCAtNzcsNyArNzcsNyBAQAogc3RhdGljIHNldGVudHJ5ICoKIHNldF9sb29ra2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgcmVnaXN0ZXIgUHlfaGFzaF90IGhhc2gpCiB7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOworICAgIHJlZ2lzdGVyIHNpemVfdCBpOwogICAgIHJlZ2lzdGVyIHNpemVfdCBwZXJ0dXJiOwogICAgIHJlZ2lzdGVyIHNldGVudHJ5ICpmcmVlc2xvdDsKICAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IHNvLT5tYXNrOwpAQCAtODYsNyArODYsNyBAQAogICAgIHJlZ2lzdGVyIGludCBjbXA7CiAgICAgUHlPYmplY3QgKnN0YXJ0a2V5OwogCi0gICAgaSA9IGhhc2ggJiBtYXNrOworICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwgfHwgZW50cnktPmtleSA9PSBrZXkpCiAgICAgICAgIHJldHVybiBlbnRyeTsKQEAgLTE1OSw3ICsxNTksNyBAQAogc3RhdGljIHNldGVudHJ5ICoKIHNldF9sb29ra2V5X3VuaWNvZGUoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCByZWdpc3RlciBQeV9oYXNoX3QgaGFzaCkKIHsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7CisgICAgcmVnaXN0ZXIgc2l6ZV90IGk7CiAgICAgcmVnaXN0ZXIgc2l6ZV90IHBlcnR1cmI7CiAgICAgcmVnaXN0ZXIgc2V0ZW50cnkgKmZyZWVzbG90OwogICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gc28tPm1hc2s7CkBAIC0xNzQsNyArMTc0LDcgQEAKICAgICAgICAgc28tPmxvb2t1cCA9IHNldF9sb29ra2V5OwogICAgICAgICByZXR1cm4gc2V0X2xvb2trZXkoc28sIGtleSwgaGFzaCk7CiAgICAgfQotICAgIGkgPSBoYXNoICYgbWFzazsKKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKICAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMIHx8IGVudHJ5LT5rZXkgPT0ga2V5KQogICAgICAgICByZXR1cm4gZW50cnk7CkBAIC0yNTYsNyArMjU2LDcgQEAKICAgICBzZXRlbnRyeSAqdGFibGUgPSBzby0+dGFibGU7CiAgICAgcmVnaXN0ZXIgc2V0ZW50cnkgKmVudHJ5OwogCi0gICAgaSA9IGhhc2ggJiBtYXNrOworICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVudHJ5LT5rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewogICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7CkBAIC0zODYsNyArMzg2LDcgQEAKICAgICByZWdpc3RlciBQeV9zc2l6ZV90IG5fdXNlZDsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNDM0LDcgKzQzNCw3IEBACiAgICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC01NzksMTEgKzU3OSw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3JlcHIoUHlTZXRPYmplY3QgKnNvKQogewotICAgIFB5T2JqZWN0ICprZXlzLCAqcmVzdWx0PU5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqdTsKKyAgICBQeU9iamVjdCAqcmVzdWx0PU5VTEwsICprZXlzLCAqbGlzdHJlcHIsICp0bXA7CiAgICAgaW50IHN0YXR1cyA9IFB5X1JlcHJFbnRlcigoUHlPYmplY3QqKXNvKTsKLSAgICBQeU9iamVjdCAqbGlzdHJlcHI7Ci0gICAgUHlfc3NpemVfdCBuZXdzaXplOwogCiAgICAgaWYgKHN0YXR1cyAhPSAwKSB7CiAgICAgICAgIGlmIChzdGF0dXMgPCAwKQpAQCAtNjAxLDI5ICs1OTgsMjQgQEAKICAgICBpZiAoa2V5cyA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7CiAKKyAgICAvKiByZXByKGtleXMpWzE6LTFdICovCiAgICAgbGlzdHJlcHIgPSBQeU9iamVjdF9SZXByKGtleXMpOwogICAgIFB5X0RFQ1JFRihrZXlzKTsKICAgICBpZiAobGlzdHJlcHIgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwotICAgIG5ld3NpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUobGlzdHJlcHIpOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBuZXdzaXplKTsKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgICAgICAqdSsrID0gJ3snOwotICAgICAgICAvKiBPbWl0IHRoZSBicmFja2V0cyBmcm9tIHRoZSBsaXN0cmVwciAqLwotICAgICAgICBQeV9VTklDT0RFX0NPUFkodSwgUHlVbmljb2RlX0FTX1VOSUNPREUobGlzdHJlcHIpKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUobGlzdHJlcHIpLTIpOwotICAgICAgICB1ICs9IG5ld3NpemUtMjsKLSAgICAgICAgKnUrKyA9ICd9JzsKLSAgICB9CisgICAgdG1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhsaXN0cmVwciwgMSwgUHlVbmljb2RlX0dFVF9MRU5HVEgobGlzdHJlcHIpLTEpOwogICAgIFB5X0RFQ1JFRihsaXN0cmVwcik7Ci0gICAgaWYgKFB5X1RZUEUoc28pICE9ICZQeVNldF9UeXBlKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJVUpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc28pLT50cF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIHJlc3VsdCA9IHRtcDsKLSAgICB9CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgbGlzdHJlcHIgPSB0bXA7CisKKyAgICBpZiAoUHlfVFlQRShzbykgIT0gJlB5U2V0X1R5cGUpCisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyh7JVV9KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc28pLT50cF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0cmVwcik7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgieyVVfSIsIGxpc3RyZXByKTsKKyAgICBQeV9ERUNSRUYobGlzdHJlcHIpOwogZG9uZToKICAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0Kilzbyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTY4Miw3ICs2NzQsNyBAQAogICAgIHNldGVudHJ5ICplbnRyeTsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNzY4LDE0ICs3NjAsMTQgQEAKIGZyb3plbnNldF9oYXNoKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5U2V0T2JqZWN0ICpzbyA9IChQeVNldE9iamVjdCAqKXNlbGY7Ci0gICAgUHlfaGFzaF90IGgsIGhhc2ggPSAxOTI3ODY4MjM3TDsKKyAgICBQeV91aGFzaF90IGgsIGhhc2ggPSAxOTI3ODY4MjM3VTsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogCiAgICAgaWYgKHNvLT5oYXNoICE9IC0xKQogICAgICAgICByZXR1cm4gc28tPmhhc2g7CiAKLSAgICBoYXNoICo9IFB5U2V0X0dFVF9TSVpFKHNlbGYpICsgMTsKKyAgICBoYXNoICo9IChQeV91aGFzaF90KVB5U2V0X0dFVF9TSVpFKHNlbGYpICsgMTsKICAgICB3aGlsZSAoc2V0X25leHQoc28sICZwb3MsICZlbnRyeSkpIHsKICAgICAgICAgLyogV29yayB0byBpbmNyZWFzZSB0aGUgYml0IGRpc3BlcnNpb24gZm9yIGNsb3NlbHkgc3BhY2VkIGhhc2gKICAgICAgICAgICAgdmFsdWVzLiAgVGhlIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgdXNlIGNhc2VzIGhhdmUgbWFueQpAQCAtNzgzLDExICs3NzUsMTEgQEAKICAgICAgICAgICAgaGFzaGVzIHNvIHRoYXQgbWFueSBkaXN0aW5jdCBjb21iaW5hdGlvbnMgY29sbGFwc2UgdG8gb25seQogICAgICAgICAgICBhIGhhbmRmdWwgb2YgZGlzdGluY3QgaGFzaCB2YWx1ZXMuICovCiAgICAgICAgIGggPSBlbnRyeS0+aGFzaDsKLSAgICAgICAgaGFzaCBePSAoaCBeIChoIDw8IDE2KSBeIDg5ODY5NzQ3TCkgICogMzY0NDc5ODE2N3U7CisgICAgICAgIGhhc2ggXj0gKGggXiAoaCA8PCAxNikgXiA4OTg2OTc0N1UpICAqIDM2NDQ3OTgxNjdVOwogICAgIH0KLSAgICBoYXNoID0gaGFzaCAqIDY5MDY5TCArIDkwNzEzMzkyM0w7CisgICAgaGFzaCA9IGhhc2ggKiA2OTA2OVUgKyA5MDcxMzM5MjNVOwogICAgIGlmIChoYXNoID09IC0xKQotICAgICAgICBoYXNoID0gNTkwOTIzNzEzTDsKKyAgICAgICAgaGFzaCA9IDU5MDkyMzcxM1U7CiAgICAgc28tPmhhc2ggPSBoYXNoOwogICAgIHJldHVybiBoYXNoOwogfQpAQCAtODI3LDggKzgxOSw1MSBAQAogCiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLCAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqc2V0aXRlcl9pdGVybmV4dChzZXRpdGVyb2JqZWN0ICpzaSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzZXRpdGVyX3JlZHVjZShzZXRpdGVyb2JqZWN0ICpzaSkKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBzZXRpdGVyb2JqZWN0IHRtcDsKKworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBjb3B5IHRoZSBpdGVydG9yIHN0YXRlICovCisgICAgdG1wID0gKnNpOworICAgIFB5X1hJTkNSRUYodG1wLnNpX3NldCk7CisgICAgCisgICAgLyogaXRlcmF0ZSB0aGUgdGVtcG9yYXJ5IGludG8gYSBsaXN0ICovCisgICAgZm9yKDs7KSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gc2V0aXRlcl9pdGVybmV4dCgmdG1wKTsKKyAgICAgICAgaWYgKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcC5zaV9zZXQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGVsZW1lbnQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBQeV9YREVDUkVGKHRtcC5zaV9zZXQpOworICAgIC8qIGNoZWNrIGZvciBlcnJvciAqLworICAgIGlmICh0bXAuc2lfc2V0ICE9IE5VTEwpIHsKKyAgICAgICAgLyogd2UgaGF2ZSBhbiBlcnJvciAqLworICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIGxpc3QpOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBzZXRpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilzZXRpdGVyX2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKXNldGl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTEwNzYsOSArMTExMSwxMCBAQAogICAgIHJldHVybiBlbXB0eWZyb3plbnNldDsKIH0KIAotdm9pZAotUHlTZXRfRmluaSh2b2lkKQoraW50CitQeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpCiB7CisgICAgaW50IGZyZWVsaXN0X3NpemUgPSBudW1mcmVlOwogICAgIFB5U2V0T2JqZWN0ICpzbzsKIAogICAgIHdoaWxlIChudW1mcmVlKSB7CkBAIC0xMDg2LDEwICsxMTIyLDI3IEBACiAgICAgICAgIHNvID0gZnJlZV9saXN0W251bWZyZWVdOwogICAgICAgICBQeU9iamVjdF9HQ19EZWwoc28pOwogICAgIH0KKyAgICByZXR1cm4gZnJlZWxpc3Rfc2l6ZTsKK30KKwordm9pZAorUHlTZXRfRmluaSh2b2lkKQoreworICAgIFB5U2V0X0NsZWFyRnJlZUxpc3QoKTsKICAgICBQeV9DTEVBUihkdW1teSk7CiAgICAgUHlfQ0xFQVIoZW1wdHlmcm96ZW5zZXQpOwogfQogCisvKiBQcmludCBzdW1tYXJ5IGluZm8gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBvcHRpbWl6ZWQgYWxsb2NhdG9yICovCit2b2lkCitfUHlTZXRfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCit7CisgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlZSBQeVNldE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlTZXRPYmplY3QpKTsKK30KKworCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTEyMTAsMTAgKzEyNjMsOCBAQAogewogICAgIFB5U2V0T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgcmVzdWx0ID0gKFB5U2V0T2JqZWN0ICopc2V0X2NvcHkoc28pOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKQEAgLTEyMzAsMTAgKzEyODEsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9pb3IoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7Ci0gICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworCiAgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvKTsKQEAgLTEzODMsMTAgKzE0MzMsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9hbmQoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7Ci0gICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICByZXR1cm4gc2V0X2ludGVyc2VjdGlvbihzbywgb3RoZXIpOwogfQogCkBAIC0xMzk1LDEwICsxNDQzLDggQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJlc3VsdCA9IHNldF9pbnRlcnNlY3Rpb25fdXBkYXRlKHNvLCBvdGhlcik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE2MjUsMjAgKzE2NzEsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfc3ViKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewotICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmV0dXJuIHNldF9kaWZmZXJlbmNlKHNvLCBvdGhlcik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfaXN1YihQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoc28pOwpAQCAtMTczNiwxMCArMTc3OCw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3hvcihQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJldHVybiBzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2Uoc28sIG90aGVyKTsKIH0KIApAQCAtMTc0OCwxMCArMTc4OCw4IEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICByZXN1bHQgPSBzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlKHNvLCBvdGhlcik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE4MTMsMTAgKzE4NTEsOSBAQAogewogICAgIFB5T2JqZWN0ICpyMSwgKnIyOwogCi0gICAgaWYoIVB5QW55U2V0X0NoZWNrKHcpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYoIVB5QW55U2V0X0NoZWNrKHcpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBQeV9FUToKICAgICAgICAgaWYgKFB5U2V0X0dFVF9TSVpFKHYpICE9IFB5U2V0X0dFVF9TSVpFKHcpKQpAQCAtMTg0Niw4ICsxODgzLDcgQEAKICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICAgICAgcmV0dXJuIHNldF9pc3N1cGVyc2V0KHYsIHcpOwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xOTU5LDYgKzE5OTUsNyBAQAogc2V0X3JlZHVjZShQeVNldE9iamVjdCAqc28pCiB7CiAgICAgUHlPYmplY3QgKmtleXM9TlVMTCwgKmFyZ3M9TlVMTCwgKnJlc3VsdD1OVUxMLCAqZGljdD1OVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKIAogICAgIGtleXMgPSBQeVNlcXVlbmNlX0xpc3QoKFB5T2JqZWN0ICopc28pOwogICAgIGlmIChrZXlzID09IE5VTEwpCkBAIC0xOTY2LDcgKzIwMDMsNyBAQAogICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwga2V5cyk7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwotICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNvLCAiX19kaWN0X18iKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzbywgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZGljdCA9IFB5X05vbmU7CkBAIC0xOTgwLDggKzIwMTcsNiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9zaXplb2YoUHlTZXRPYmplY3QgKnNvKQogewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zbGljZW9iamVjdC5jIGIvT2JqZWN0cy9zbGljZW9iamVjdC5jCmluZGV4IGQ3Yjk3YzkuLmM0YTE5MDcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc2xpY2VvYmplY3QuYworKysgYi9PYmplY3RzL3NsaWNlb2JqZWN0LmMKQEAgLTE3LDYgKzE3LDE3IEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKIHN0YXRpYyBQeU9iamVjdCAqCitlbGxpcHNpc19uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSB8fCAoa3dhcmdzICYmIFB5RGljdF9TaXplKGt3YXJncykpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJFbGxpcHNpc1R5cGUgdGFrZXMgbm8gYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9JTkNSRUYoUHlfRWxsaXBzaXMpOworICAgIHJldHVybiBQeV9FbGxpcHNpczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGVsbGlwc2lzX3JlcHIoUHlPYmplY3QgKm9wKQogewogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiRWxsaXBzaXMiKTsKQEAgLTQzLDYgKzU0LDI0IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBlbGxpcHNpc19uZXcsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KIH07CiAKIFB5T2JqZWN0IF9QeV9FbGxpcHNpc09iamVjdCA9IHsKQEAgLTUxLDE5ICs4MCwzOCBAQAogfTsKIAogCi0vKiBTbGljZSBvYmplY3QgaW1wbGVtZW50YXRpb24KKy8qIFNsaWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLwogCi0gICBzdGFydCwgc3RvcCwgYW5kIHN0ZXAgYXJlIHB5dGhvbiBvYmplY3RzIHdpdGggTm9uZSBpbmRpY2F0aW5nIG5vCisvKiBVc2luZyBhIGNhY2hlIGlzIHZlcnkgZWZmZWN0aXZlIHNpbmNlIHR5cGljYWxseSBvbmx5IGEgc2luZ2xlIHNsaWNlIGlzCisgKiBjcmVhdGVkIGFuZCB0aGVuIGRlbGV0ZWQgYWdhaW4KKyAqLworc3RhdGljIFB5U2xpY2VPYmplY3QgKnNsaWNlX2NhY2hlID0gTlVMTDsKK3ZvaWQgUHlTbGljZV9GaW5pKHZvaWQpCit7CisgICAgUHlTbGljZU9iamVjdCAqb2JqID0gc2xpY2VfY2FjaGU7CisgICAgaWYgKG9iaiAhPSBOVUxMKSB7CisgICAgICAgIHNsaWNlX2NhY2hlID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3RfRGVsKG9iaik7CisgICAgfQorfQorCisvKiBzdGFydCwgc3RvcCwgYW5kIHN0ZXAgYXJlIHB5dGhvbiBvYmplY3RzIHdpdGggTm9uZSBpbmRpY2F0aW5nIG5vCiAgICBpbmRleCBpcyBwcmVzZW50LgogKi8KIAogUHlPYmplY3QgKgogUHlTbGljZV9OZXcoUHlPYmplY3QgKnN0YXJ0LCBQeU9iamVjdCAqc3RvcCwgUHlPYmplY3QgKnN0ZXApCiB7Ci0gICAgUHlTbGljZU9iamVjdCAqb2JqID0gUHlPYmplY3RfTmV3KFB5U2xpY2VPYmplY3QsICZQeVNsaWNlX1R5cGUpOwotCi0gICAgaWYgKG9iaiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeVNsaWNlT2JqZWN0ICpvYmo7CisgICAgaWYgKHNsaWNlX2NhY2hlICE9IE5VTEwpIHsKKyAgICAgICAgb2JqID0gc2xpY2VfY2FjaGU7CisgICAgICAgIHNsaWNlX2NhY2hlID0gTlVMTDsKKyAgICAgICAgX1B5X05ld1JlZmVyZW5jZSgoUHlPYmplY3QgKilvYmopOworICAgIH0gZWxzZSB7CisgICAgICAgIG9iaiA9IFB5T2JqZWN0X05ldyhQeVNsaWNlT2JqZWN0LCAmUHlTbGljZV9UeXBlKTsKKyAgICAgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgaWYgKHN0ZXAgPT0gTlVMTCkgc3RlcCA9IFB5X05vbmU7CiAgICAgUHlfSU5DUkVGKHN0ZXApOwpAQCAtMjMxLDcgKzI3OSwxMCBAQAogICAgIFB5X0RFQ1JFRihyLT5zdGVwKTsKICAgICBQeV9ERUNSRUYoci0+c3RhcnQpOwogICAgIFB5X0RFQ1JFRihyLT5zdG9wKTsKLSAgICBQeU9iamVjdF9EZWwocik7CisgICAgaWYgKHNsaWNlX2NhY2hlID09IE5VTEwpCisgICAgICAgIHNsaWNlX2NhY2hlID0gcjsKKyAgICBlbHNlCisgICAgICAgIFB5T2JqZWN0X0RlbChyKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI5NywxMCArMzQ4LDggQEAKICAgICBQeU9iamVjdCAqdDI7CiAgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICghUHlTbGljZV9DaGVjayh2KSB8fCAhUHlTbGljZV9DaGVjayh3KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlTbGljZV9DaGVjayh2KSB8fCAhUHlTbGljZV9DaGVjayh3KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgaWYgKHYgPT0gdykgewogICAgICAgICAvKiBYWFggRG8gd2UgcmVhbGx5IG5lZWQgdGhpcyBzaG9ydGN1dD8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2FzY2lpbGliLmggYi9PYmplY3RzL3N0cmluZ2xpYi9hc2NpaWxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MjgxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9hc2NpaWxpYi5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHRoaXMgaXMgc29ydCBvZiBhIGhhY2suICB0aGVyZSdzIGF0IGxlYXN0IG9uZSBwbGFjZSAoZm9ybWF0dGluZworICAgZmxvYXRzKSB3aGVyZSBzb21lIHN0cmluZ2xpYiBjb2RlIHRha2VzIGEgZGlmZmVyZW50IHBhdGggaWYgaXQncworICAgY29tcGlsZWQgYXMgdW5pY29kZS4gKi8KKyNkZWZpbmUgU1RSSU5HTElCX0lTX1VOSUNPREUgICAgIDEKKworI2RlZmluZSBGQVNUU0VBUkNIICAgICAgICAgICAgICAgYXNjaWlsaWJfZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgICAgICAgICAgICAgYXNjaWlsaWJfIyNGCisjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIDEKKyNkZWZpbmUgU1RSSU5HTElCX01BWF9DSEFSICAgICAgIDB4N0Z1CisjZGVmaW5lIFNUUklOR0xJQl9DSEFSICAgICAgICAgICBQeV9VQ1MxCisjZGVmaW5lIFNUUklOR0xJQl9UWVBFX05BTUUgICAgICAidW5pY29kZSIKKyNkZWZpbmUgU1RSSU5HTElCX1BBUlNFX0NPREUgICAgICJVIgorI2RlZmluZSBTVFJJTkdMSUJfRU1QVFkgICAgICAgICAgdW5pY29kZV9lbXB0eQorI2RlZmluZSBTVFJJTkdMSUJfSVNTUEFDRSAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFCisjZGVmaW5lIFNUUklOR0xJQl9JU0xJTkVCUkVBSyAgICBCTE9PTV9MSU5FQlJFQUsKKyNkZWZpbmUgU1RSSU5HTElCX0lTREVDSU1BTCAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9UT0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX1RPREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfU1RSICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEKKyNkZWZpbmUgU1RSSU5HTElCX0xFTiAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RICisjZGVmaW5lIFNUUklOR0xJQl9ORVcoU1RSLExFTikgICBfUHlVbmljb2RlX0Zyb21BU0NJSSgoY2hhciopKFNUUiksKExFTikpCisjZGVmaW5lIFNUUklOR0xJQl9SRVNJWkUgICAgICAgICBub3Rfc3VwcG9ydGVkCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLX0VYQUNUICAgIFB5VW5pY29kZV9DaGVja0V4YWN0CisKKyNkZWZpbmUgU1RSSU5HTElCX1RPU1RSICAgICAgICAgIFB5T2JqZWN0X1N0cgorI2RlZmluZSBTVFJJTkdMSUJfVE9BU0NJSSAgICAgICAgUHlPYmplY3RfQVNDSUkKKworI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcgX1B5VW5pY29kZV9hc2NpaV9JbnNlcnRUaG91c2FuZHNHcm91cGluZworCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaCBiL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNTVmNDkKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaApAQCAtMCwwICsxLDYzMyBAQAorLyogc3RyaW5nbGliOiBjb2RlYyBpbXBsZW1lbnRhdGlvbnMgKi8KKworI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisKKy8qIE1hc2sgdG8gY2hlY2sgb3IgZm9yY2UgYWxpZ25tZW50IG9mIGEgcG9pbnRlciB0byBDICdsb25nJyBib3VuZGFyaWVzICovCisjZGVmaW5lIExPTkdfUFRSX01BU0sgKHNpemVfdCkgKFNJWkVPRl9MT05HIC0gMSkKKworLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCisgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLworI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQorIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MFVMCisjZWxpZiAoU0laRU9GX0xPTkcgPT0gNCkKKyMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwVUwKKyNlbHNlCisjIGVycm9yIEMgJ2xvbmcnIHNpemUgc2hvdWxkIGJlIGVpdGhlciA0IG9yIDghCisjZW5kaWYKKworLyogMTB4eHh4eHggKi8KKyNkZWZpbmUgSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gpICgoY2gpID49IDB4ODAgJiYgKGNoKSA8IDB4QzApCisKK1B5X0xPQ0FMX0lOTElORShQeV9VQ1M0KQorU1RSSU5HTElCKHV0ZjhfZGVjb2RlKShjb25zdCBjaGFyICoqaW5wdHIsIGNvbnN0IGNoYXIgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm91dHBvcykKK3sKKyAgICBQeV9VQ1M0IGNoOworICAgIGNvbnN0IGNoYXIgKnMgPSAqaW5wdHI7CisgICAgY29uc3QgY2hhciAqYWxpZ25lZF9lbmQgPSAoY29uc3QgY2hhciAqKSAoKHNpemVfdCkgZW5kICYgfkxPTkdfUFRSX01BU0spOworICAgIFNUUklOR0xJQl9DSEFSICpwID0gZGVzdCArICpvdXRwb3M7CisKKyAgICB3aGlsZSAocyA8IGVuZCkgeworICAgICAgICBjaCA9ICh1bnNpZ25lZCBjaGFyKSpzOworCisgICAgICAgIGlmIChjaCA8IDB4ODApIHsKKyAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgcnVucyBvZiBBU0NJSSBjaGFyYWN0ZXJzLiBHaXZlbiB0aGF0IGNvbW1vbiBVVEYtOAorICAgICAgICAgICAgICAgaW5wdXQgd2lsbCBjb25zaXN0IG9mIGFuIG92ZXJ3aGVsbWluZyBtYWpvcml0eSBvZiBBU0NJSQorICAgICAgICAgICAgICAgY2hhcmFjdGVycywgd2UgdHJ5IHRvIG9wdGltaXplIGZvciB0aGlzIGNhc2UgYnkgY2hlY2tpbmcKKyAgICAgICAgICAgICAgIGFzIG1hbnkgY2hhcmFjdGVycyBhcyBhIEMgJ2xvbmcnIGNhbiBjb250YWluLgorICAgICAgICAgICAgICAgRmlyc3QsIGNoZWNrIGlmIHdlIGNhbiBkbyBhbiBhbGlnbmVkIHJlYWQsIGFzIG1vc3QgQ1BVcyBoYXZlCisgICAgICAgICAgICAgICBhIHBlbmFsdHkgZm9yIHVuYWxpZ25lZCByZWFkcy4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoISgoc2l6ZV90KSBzICYgTE9OR19QVFJfTUFTSykpIHsKKyAgICAgICAgICAgICAgICAvKiBIZWxwIHJlZ2lzdGVyIGFsbG9jYXRpb24gKi8KKyAgICAgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjaGFyICpfcyA9IHM7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXIgU1RSSU5HTElCX0NIQVIgKl9wID0gcDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoX3MgPCBhbGlnbmVkX2VuZCkgeworICAgICAgICAgICAgICAgICAgICAvKiBSZWFkIGEgd2hvbGUgbG9uZyBhdCBhIHRpbWUgKGVpdGhlciA0IG9yIDggYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICAgICBhbmQgZG8gYSBmYXN0IHVucm9sbGVkIGNvcHkgaWYgaXQgb25seSBjb250YWlucyBBU0NJSQorICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLiAqLworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlID0gKih1bnNpZ25lZCBsb25nICopIF9zOworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiBBU0NJSV9DSEFSX01BU0spCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgorICAgICAgICAgICAgICAgICAgICBfcFswXSA9IChTVFJJTkdMSUJfQ0hBUikodmFsdWUgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzFdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gOCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzJdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMTYpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFszXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDI0KSAmIDB4RkZ1KTsKKyMgaWYgU0laRU9GX0xPTkcgPT0gOAorICAgICAgICAgICAgICAgICAgICBfcFs0XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDMyKSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbNV0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA0MCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzZdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gNDgpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs3XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDU2KSAmIDB4RkZ1KTsKKyMgZW5kaWYKKyNlbHNlCisjIGlmIFNJWkVPRl9MT05HID09IDgKKyAgICAgICAgICAgICAgICAgICAgX3BbMF0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA1NikgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzFdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gNDgpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFsyXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDQwKSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbM10gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAzMikgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzRdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMjQpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs1XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDE2KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbNl0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA4KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbN10gPSAoU1RSSU5HTElCX0NIQVIpKHZhbHVlICYgMHhGRnUpOworIyBlbHNlCisgICAgICAgICAgICAgICAgICAgIF9wWzBdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMjQpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFsxXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDE2KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbMl0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA4KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbM10gPSAoU1RSSU5HTElCX0NIQVIpKHZhbHVlICYgMHhGRnUpOworIyBlbmRpZgorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIF9zICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcyA9IF9zOworICAgICAgICAgICAgICAgIHAgPSBfcDsKKyAgICAgICAgICAgICAgICBpZiAocyA9PSBlbmQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNoID0gKHVuc2lnbmVkIGNoYXIpKnM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ggPCAweDgwKSB7CisgICAgICAgICAgICAgICAgcysrOworICAgICAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChjaCA8IDB4QzIpIHsKKyAgICAgICAgICAgIC8qIGludmFsaWQgc2VxdWVuY2UKKyAgICAgICAgICAgICAgIFx4ODAtXHhCRiAtLSBjb250aW51YXRpb24gYnl0ZQorICAgICAgICAgICAgICAgXHhDMC1ceEMxIC0tIGZha2UgMDAwMC0wMDdGICovCisgICAgICAgICAgICBnb3RvIEludmFsaWRTdGFydDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjaCA8IDB4RTApIHsKKyAgICAgICAgICAgIC8qIFx4QzJceDgwLVx4REZceEJGIC0tIDAwODAtMDdGRiAqLworICAgICAgICAgICAgUHlfVUNTNCBjaDI7CisgICAgICAgICAgICBpZiAoZW5kIC0gcyA8IDIpIHsKKyAgICAgICAgICAgICAgICAvKiB1bmV4cGVjdGVkIGVuZCBvZiBkYXRhOiB0aGUgY2FsbGVyIHdpbGwgZGVjaWRlIHdoZXRoZXIKKyAgICAgICAgICAgICAgICAgICBpdCdzIGFuIGVycm9yIG9yIG5vdCAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2gyID0gKHVuc2lnbmVkIGNoYXIpc1sxXTsKKyAgICAgICAgICAgIGlmICghSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gyKSkKKyAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uOworICAgICAgICAgICAgY2ggPSAoY2ggPDwgNikgKyBjaDIgLQorICAgICAgICAgICAgICAgICAoKDB4QzAgPDwgNikgKyAweDgwKTsKKyAgICAgICAgICAgIGFzc2VydCAoKGNoID4gMHgwMDdGKSAmJiAoY2ggPD0gMHgwN0ZGKSk7CisgICAgICAgICAgICBzICs9IDI7CisgICAgICAgICAgICBpZiAoU1RSSU5HTElCX01BWF9DSEFSIDw9IDB4MDA3RiB8fAorICAgICAgICAgICAgICAgIChTVFJJTkdMSUJfTUFYX0NIQVIgPCAweDA3RkYgJiYgY2ggPiBTVFJJTkdMSUJfTUFYX0NIQVIpKQorICAgICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjaCA8IDB4RjApIHsKKyAgICAgICAgICAgIC8qIFx4RTBceEEwXHg4MC1ceEVGXHhCRlx4QkYgLS0gMDgwMC1GRkZGICovCisgICAgICAgICAgICBQeV9VQ1M0IGNoMiwgY2gzOworICAgICAgICAgICAgaWYgKGVuZCAtIHMgPCAzKSB7CisgICAgICAgICAgICAgICAgLyogdW5leHBlY3RlZCBlbmQgb2YgZGF0YTogdGhlIGNhbGxlciB3aWxsIGRlY2lkZSB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgaXQncyBhbiBlcnJvciBvciBub3QgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoMiA9ICh1bnNpZ25lZCBjaGFyKXNbMV07CisgICAgICAgICAgICBjaDMgPSAodW5zaWduZWQgY2hhcilzWzJdOworICAgICAgICAgICAgaWYgKCFJU19DT05USU5VQVRJT05fQllURShjaDIpIHx8CisgICAgICAgICAgICAgICAgIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMykpIHsKKyAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNoID09IDB4RTApIHsKKyAgICAgICAgICAgICAgICBpZiAoY2gyIDwgMHhBMCkKKyAgICAgICAgICAgICAgICAgICAgLyogaW52YWxpZCBzZXF1ZW5jZQorICAgICAgICAgICAgICAgICAgICAgICBceEUwXHg4MFx4ODAtXHhFMFx4OUZceEJGIC0tIGZha2UgMDAwMC0wODAwICovCisgICAgICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09IDB4RUQgJiYgY2gyID4gMHg5RikgeworICAgICAgICAgICAgICAgIC8qIERlY29kaW5nIFVURi04IHNlcXVlbmNlcyBpbiByYW5nZSBceEVEXHhBMFx4ODAtXHhFRFx4QkZceEJGCisgICAgICAgICAgICAgICAgICAgd2lsbCByZXN1bHQgaW4gc3Vycm9nYXRlcyBpbiByYW5nZSBEODAwLURGRkYuIFN1cnJvZ2F0ZXMgYXJlCisgICAgICAgICAgICAgICAgICAgbm90IHZhbGlkIFVURi04IHNvIHRoZXkgYXJlIHJlamVjdGVkLgorICAgICAgICAgICAgICAgICAgIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zL1VuaWNvZGU1LjIuMC9jaDAzLnBkZgorICAgICAgICAgICAgICAgICAgICh0YWJsZSAzLTcpIGFuZCBodHRwOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmMzNjI5LnR4dCAqLworICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoID0gKGNoIDw8IDEyKSArIChjaDIgPDwgNikgKyBjaDMgLQorICAgICAgICAgICAgICAgICAoKDB4RTAgPDwgMTIpICsgKDB4ODAgPDwgNikgKyAweDgwKTsKKyAgICAgICAgICAgIGFzc2VydCAoKGNoID4gMHgwN0ZGKSAmJiAoY2ggPD0gMHhGRkZGKSk7CisgICAgICAgICAgICBzICs9IDM7CisgICAgICAgICAgICBpZiAoU1RSSU5HTElCX01BWF9DSEFSIDw9IDB4MDdGRiB8fAorICAgICAgICAgICAgICAgIChTVFJJTkdMSUJfTUFYX0NIQVIgPCAweEZGRkYgJiYgY2ggPiBTVFJJTkdMSUJfTUFYX0NIQVIpKQorICAgICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjaCA8IDB4RjUpIHsKKyAgICAgICAgICAgIC8qIFx4RjBceDkwXHg4MFx4ODAtXHhGNFx4OEZceEJGXHhCRiAtLSAxMDAwMC0xMEZGRkYgKi8KKyAgICAgICAgICAgIFB5X1VDUzQgY2gyLCBjaDMsIGNoNDsKKyAgICAgICAgICAgIGlmIChlbmQgLSBzIDwgNCkgeworICAgICAgICAgICAgICAgIC8qIHVuZXhwZWN0ZWQgZW5kIG9mIGRhdGE6IHRoZSBjYWxsZXIgd2lsbCBkZWNpZGUgd2hldGhlcgorICAgICAgICAgICAgICAgICAgIGl0J3MgYW4gZXJyb3Igb3Igbm90ICovCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaDIgPSAodW5zaWduZWQgY2hhcilzWzFdOworICAgICAgICAgICAgY2gzID0gKHVuc2lnbmVkIGNoYXIpc1syXTsKKyAgICAgICAgICAgIGNoNCA9ICh1bnNpZ25lZCBjaGFyKXNbM107CisgICAgICAgICAgICBpZiAoIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMikgfHwKKyAgICAgICAgICAgICAgICAhSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gzKSB8fAorICAgICAgICAgICAgICAgICFJU19DT05USU5VQVRJT05fQllURShjaDQpKSB7CisgICAgICAgICAgICAgICAgLyogaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSAqLworICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA9PSAweEYwKSB7CisgICAgICAgICAgICAgICAgaWYgKGNoMiA8IDB4OTApCisgICAgICAgICAgICAgICAgICAgIC8qIGludmFsaWQgc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgXHhGMFx4ODBceDgwXHg4MC1ceEYwXHg4MFx4QkZceEJGIC0tIGZha2UgMDAwMC1GRkZGICovCisgICAgICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09IDB4RjQgJiYgY2gyID4gMHg4RikgeworICAgICAgICAgICAgICAgIC8qIGludmFsaWQgc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICBceEY0XHg5MFx4ODBcODAtIC0tIDExMDAwMC0gb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaCA9IChjaCA8PCAxOCkgKyAoY2gyIDw8IDEyKSArIChjaDMgPDwgNikgKyBjaDQgLQorICAgICAgICAgICAgICAgICAoKDB4RjAgPDwgMTgpICsgKDB4ODAgPDwgMTIpICsgKDB4ODAgPDwgNikgKyAweDgwKTsKKyAgICAgICAgICAgIGFzc2VydCAoKGNoID4gMHhGRkZGKSAmJiAoY2ggPD0gMHgxMEZGRkYpKTsKKyAgICAgICAgICAgIHMgKz0gNDsKKyAgICAgICAgICAgIGlmIChTVFJJTkdMSUJfTUFYX0NIQVIgPD0gMHhGRkZGIHx8CisgICAgICAgICAgICAgICAgKFNUUklOR0xJQl9NQVhfQ0hBUiA8IDB4MTBGRkZGICYmIGNoID4gU1RSSU5HTElCX01BWF9DSEFSKSkKKyAgICAgICAgICAgICAgICBnb3RvIE92ZXJmbG93OworICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZ290byBJbnZhbGlkU3RhcnQ7CisgICAgfQorICAgIGNoID0gMDsKK092ZXJmbG93OgorUmV0dXJuOgorICAgICppbnB0ciA9IHM7CisgICAgKm91dHBvcyA9IHAgLSBkZXN0OworICAgIHJldHVybiBjaDsKK0ludmFsaWRTdGFydDoKKyAgICBjaCA9IDE7CisgICAgZ290byBSZXR1cm47CitJbnZhbGlkQ29udGludWF0aW9uOgorICAgIGNoID0gMjsKKyAgICBnb3RvIFJldHVybjsKK30KKworI3VuZGVmIEFTQ0lJX0NIQVJfTUFTSworI3VuZGVmIElTX0NPTlRJTlVBVElPTl9CWVRFCisKKworLyogVVRGLTggZW5jb2RlciBzcGVjaWFsaXplZCBmb3IgYSBVbmljb2RlIGtpbmQgdG8gYXZvaWQgdGhlIHNsb3cKKyAgIFB5VW5pY29kZV9SRUFEKCkgbWFjcm8uIERlbGV0ZSBzb21lIHBhcnRzIG9mIHRoZSBjb2RlIGRlcGVuZGluZyBvbiB0aGUga2luZDoKKyAgIFVDUy0xIHN0cmluZ3MgZG9uJ3QgbmVlZCB0byBoYW5kbGUgc3Vycm9nYXRlcyBmb3IgZXhhbXBsZS4gKi8KK1B5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQorU1RSSU5HTElCKHV0ZjhfZW5jb2RlcikoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyNkZWZpbmUgTUFYX1NIT1JUX1VOSUNIQVJTIDMwMCAgLyogbGFyZ2VzdCBzaXplIHdlJ2xsIGRvIG9uIHRoZSBzdGFjayAqLworCisgICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAvKiBpbmRleCBpbnRvIHMgb2YgbmV4dCBpbnB1dCBieXRlICovCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAvKiByZXN1bHQgc3RyaW5nIG9iamVjdCAqLworICAgIGNoYXIgKnA7ICAgICAgICAgICAgICAgICAgICAgLyogbmV4dCBmcmVlIGJ5dGUgaW4gb3V0cHV0IGJ1ZmZlciAqLworICAgIFB5X3NzaXplX3QgbmFsbG9jYXRlZDsgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIGFsbG9jYXRlZCAqLworICAgIFB5X3NzaXplX3Qgbm5lZWRlZDsgICAgICAgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIG5lZWRlZCAqLworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVwID0gTlVMTDsKKyNlbmRpZgorI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisgICAgY29uc3QgUHlfc3NpemVfdCBtYXhfY2hhcl9zaXplID0gMjsKKyAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDJdOworI2VsaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDIKKyAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9jaGFyX3NpemUgPSAzOworICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogM107CisjZWxzZSAvKiAgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDQgKi8KKyAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9jaGFyX3NpemUgPSA0OworICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogNF07CisjZW5kaWYKKworICAgIGFzc2VydChzaXplID49IDApOworCisgICAgaWYgKHNpemUgPD0gTUFYX1NIT1JUX1VOSUNIQVJTKSB7CisgICAgICAgIC8qIFdyaXRlIGludG8gdGhlIHN0YWNrIGJ1ZmZlcjsgbmFsbG9jYXRlZCBjYW4ndCBvdmVyZmxvdy4KKyAgICAgICAgICogQXQgdGhlIGVuZCwgd2UnbGwgYWxsb2NhdGUgZXhhY3RseSBhcyBtdWNoIGhlYXAgc3BhY2UgYXMgaXQKKyAgICAgICAgICogdHVybnMgb3V0IHdlIG5lZWQuCisgICAgICAgICAqLworICAgICAgICBuYWxsb2NhdGVkID0gUHlfU0FGRV9ET1dOQ0FTVChzaXplb2Yoc3RhY2tidWYpLCBzaXplX3QsIGludCk7CisgICAgICAgIHJlc3VsdCA9IE5VTEw7ICAgLyogd2lsbCBhbGxvY2F0ZSBhZnRlciB3ZSdyZSBkb25lICovCisgICAgICAgIHAgPSBzdGFja2J1ZjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBtYXhfY2hhcl9zaXplKSB7CisgICAgICAgICAgICAvKiBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgfQorICAgICAgICAvKiBPdmVyYWxsb2NhdGUgb24gdGhlIGhlYXAsIGFuZCBnaXZlIHRoZSBleGNlc3MgYmFjayBhdCB0aGUgZW5kLiAqLworICAgICAgICBuYWxsb2NhdGVkID0gc2l6ZSAqIG1heF9jaGFyX3NpemU7CisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IGRhdGFbaSsrXTsKKworICAgICAgICBpZiAoY2ggPCAweDgwKSB7CisgICAgICAgICAgICAvKiBFbmNvZGUgQVNDSUkgKi8KKyAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CisKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgICAgICBpZiAoY2ggPCAweDA4MDApCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgLyogRW5jb2RlIExhdGluLTEgKi8KKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhjMCB8IChjaCA+PiA2KSk7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7CisgICAgICAgIH0KKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgICAgIGVsc2UgaWYgKFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIGssIHN0YXJ0cG9zOworICAgICAgICAgICAgc3RhcnRwb3MgPSBpLTE7CisgICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwgInV0Zi04IiwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAorICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4Yywgc3RhcnRwb3MsIHN0YXJ0cG9zKzEsICZuZXdwb3MpOworICAgICAgICAgICAgaWYgKCFyZXApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkKKyAgICAgICAgICAgICAgICByZXBzaXplID0gUHlCeXRlc19HRVRfU0laRShyZXApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOworCisgICAgICAgICAgICBpZiAocmVwc2l6ZSA+IG1heF9jaGFyX3NpemUpIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldDsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIHN0YWNrYnVmOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisKKyAgICAgICAgICAgICAgICBpZiAobmFsbG9jYXRlZCA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSArIG1heF9jaGFyX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLworICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuYWxsb2NhdGVkICs9IHJlcHNpemUgLSBtYXhfY2hhcl9zaXplOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5hbGxvY2F0ZWQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksIHN0YWNrYnVmLCBvZmZzZXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIG9mZnNldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgeworICAgICAgICAgICAgICAgIGNoYXIgKnByZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXApOworICAgICAgICAgICAgICAgIGZvcihrID0gcmVwc2l6ZTsgayA+IDA7IGstLSkKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICpwcmVwKys7CisgICAgICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8geworICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQgcmVwa2luZDsKKyAgICAgICAgICAgICAgICB2b2lkICpyZXBkYXRhOworCisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICByZXBraW5kID0gUHlVbmljb2RlX0tJTkQocmVwKTsKKyAgICAgICAgICAgICAgICByZXBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVwKTsKKworICAgICAgICAgICAgICAgIGZvcihrPTA7IGs8cmVwc2l6ZTsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKHJlcGtpbmQsIHJlcGRhdGEsIGspOworICAgICAgICAgICAgICAgICAgICBpZiAoMHg4MCA8PSBjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJ1dGYtOCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGktMSwgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKWM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIocmVwKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMgorICAgICAgICBpZiAoY2ggPCAweDEwMDAwKQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhlMCB8IChjaCA+PiAxMikpOworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpKTsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKKyAgICAgICAgfQorI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDIKKyAgICAgICAgZWxzZSAvKiBjaCA+PSAweDEwMDAwICovCisgICAgICAgIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICAvKiBFbmNvZGUgVUNTNCBVbmljb2RlIG9yZGluYWxzICovCisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZjAgfCAoY2ggPj4gMTgpKTsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gMTIpICYgMHgzZikpOworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpKTsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKKyAgICAgICAgfQorI2VuZGlmIC8qIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDIgKi8KKyNlbmRpZiAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxICovCisgICAgfQorCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIC8qIFRoaXMgd2FzIHN0YWNrIGFsbG9jYXRlZC4gKi8KKyAgICAgICAgbm5lZWRlZCA9IHAgLSBzdGFja2J1ZjsKKyAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7CisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3RhY2tidWYsIG5uZWVkZWQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogQ3V0IGJhY2sgdG8gc2l6ZSBhY3R1YWxseSBuZWVkZWQuICovCisgICAgICAgIG5uZWVkZWQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7CisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBubmVlZGVkKTsKKyAgICB9CisKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXhjKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CisKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXApOworICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKKyN1bmRlZiBNQVhfU0hPUlRfVU5JQ0hBUlMKK30KKworLyogVGhlIHBhdHRlcm4gZm9yIGNvbnN0cnVjdGluZyBVQ1MyLXJlcGVhdGVkIG1hc2tzLiAqLworI2lmIFNJWkVPRl9MT05HID09IDgKKyMgZGVmaW5lIFVDUzJfUkVQRUFUX01BU0sgMHgwMDAxMDAwMTAwMDEwMDAxdWwKKyNlbGlmIFNJWkVPRl9MT05HID09IDQKKyMgZGVmaW5lIFVDUzJfUkVQRUFUX01BU0sgMHgwMDAxMDAwMXVsCisjZWxzZQorIyBlcnJvciBDICdsb25nJyBzaXplIHNob3VsZCBiZSBlaXRoZXIgNCBvciA4IQorI2VuZGlmCisKKy8qIFRoZSBtYXNrIGZvciBmYXN0IGNoZWNraW5nLiAqLworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisvKiBUaGUgbWFzayBmb3IgZmFzdCBjaGVja2luZyBvZiB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQorICAgbm9uLUFTQ0lJIG9yIG5vbi1MYXRpbjEgVVRGMTYtZW5jb2RlZCBjaGFyYWN0ZXJzLiAqLworIyBkZWZpbmUgRkFTVF9DSEFSX01BU0sgICAgICAgICAoVUNTMl9SRVBFQVRfTUFTSyAqICgweEZGRkZ1ICYgflNUUklOR0xJQl9NQVhfQ0hBUikpCisjZWxzZQorLyogVGhlIG1hc2sgZm9yIGZhc3QgY2hlY2tpbmcgb2Ygd2hldGhlciBhIEMgJ2xvbmcnIG1heSBjb250YWluCisgICBVVEYxNi1lbmNvZGVkIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzLiBUaGlzIGlzIGFuIGVmZmljaWVudCBoZXVyaXN0aWMsCisgICBhc3N1bWluZyB0aGF0IG5vbi1zdXJyb2dhdGUgY2hhcmFjdGVycyB3aXRoIGEgY29kZSBwb2ludCA+PSAweDgwMDAgYXJlCisgICByYXJlIGluIG1vc3QgaW5wdXQuCisqLworIyBkZWZpbmUgRkFTVF9DSEFSX01BU0sgICAgICAgICAoVUNTMl9SRVBFQVRfTUFTSyAqIDB4ODAwMHUpCisjZW5kaWYKKy8qIFRoZSBtYXNrIGZvciBmYXN0IGJ5dGUtc3dhcHBpbmcuICovCisjZGVmaW5lIFNUUklQUEVEX01BU0sgICAgICAgICAgIChVQ1MyX1JFUEVBVF9NQVNLICogMHgwMEZGdSkKKy8qIFN3YXAgYnl0ZXMuICovCisjZGVmaW5lIFNXQUIodmFsdWUpICAgICAgICAgICAgICgoKCh2YWx1ZSkgPj4gOCkgJiBTVFJJUFBFRF9NQVNLKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHZhbHVlKSAmIFNUUklQUEVEX01BU0spIDw8IDgpKQorCitQeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK1NUUklOR0xJQih1dGYxNl9kZWNvZGUpKGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbnB0ciwgY29uc3QgdW5zaWduZWQgY2hhciAqZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpkZXN0LCBQeV9zc2l6ZV90ICpvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmF0aXZlX29yZGVyaW5nKQoreworICAgIFB5X1VDUzQgY2g7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWxpZ25lZF9lbmQgPQorICAgICAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgKChzaXplX3QpIGUgJiB+TE9OR19QVFJfTUFTSyk7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSA9ICppbnB0cjsKKyAgICBTVFJJTkdMSUJfQ0hBUiAqcCA9IGRlc3QgKyAqb3V0cG9zOworICAgIC8qIE9mZnNldHMgZnJvbSBxIGZvciByZXRyaWV2aW5nIGJ5dGUgcGFpcnMgaW4gdGhlIHJpZ2h0IG9yZGVyLiAqLworI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCisgICAgaW50IGloaSA9ICEhbmF0aXZlX29yZGVyaW5nLCBpbG8gPSAhbmF0aXZlX29yZGVyaW5nOworI2Vsc2UKKyAgICBpbnQgaWhpID0gIW5hdGl2ZV9vcmRlcmluZywgaWxvID0gISFuYXRpdmVfb3JkZXJpbmc7CisjZW5kaWYKKyAgICAtLWU7CisKKyAgICB3aGlsZSAocSA8IGUpIHsKKyAgICAgICAgUHlfVUNTNCBjaDI7CisgICAgICAgIC8qIEZpcnN0IGNoZWNrIGZvciBwb3NzaWJsZSBhbGlnbmVkIHJlYWQgb2YgYSBDICdsb25nJy4gVW5hbGlnbmVkCisgICAgICAgICAgIHJlYWRzIGFyZSBtb3JlIGV4cGVuc2l2ZSwgYmV0dGVyIHRvIGRlZmVyIHRvIGFub3RoZXIgaXRlcmF0aW9uLiAqLworICAgICAgICBpZiAoISgoc2l6ZV90KSBxICYgTE9OR19QVFJfTUFTSykpIHsKKyAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgcnVucyBvZiBpbi1yYW5nZSBub24tc3Vycm9nYXRlIGNoYXJzLiAqLworICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAqX3EgPSBxOworICAgICAgICAgICAgd2hpbGUgKF9xIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJsb2NrID0gKiAodW5zaWduZWQgbG9uZyAqKSBfcTsKKyAgICAgICAgICAgICAgICBpZiAobmF0aXZlX29yZGVyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIENhbiB1c2UgYnVmZmVyIGRpcmVjdGx5ICovCisgICAgICAgICAgICAgICAgICAgIGlmIChibG9jayAmIEZBU1RfQ0hBUl9NQVNLKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIGJ5dGUtc3dhcCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2sgJiBTV0FCKEZBU1RfQ0hBUl9NQVNLKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisgICAgICAgICAgICAgICAgICAgIGJsb2NrID4+PSA4OworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSBTV0FCKGJsb2NrKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KKyNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgorIyBpZiBTSVpFT0ZfTE9ORyA9PSA0CisgICAgICAgICAgICAgICAgcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgJiAweEZGRkZ1KTsKKyAgICAgICAgICAgICAgICBwWzFdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayA+PiAxNik7CisjIGVsaWYgU0laRU9GX0xPTkcgPT0gOAorICAgICAgICAgICAgICAgIHBbMF0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrICYgMHhGRkZGdSk7CisgICAgICAgICAgICAgICAgcFsxXSA9IChTVFJJTkdMSUJfQ0hBUikoKGJsb2NrID4+IDE2KSAmIDB4RkZGRnUpOworICAgICAgICAgICAgICAgIHBbMl0gPSAoU1RSSU5HTElCX0NIQVIpKChibG9jayA+PiAzMikgJiAweEZGRkZ1KTsKKyAgICAgICAgICAgICAgICBwWzNdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayA+PiA0OCk7CisjIGVuZGlmCisjZWxzZQorIyBpZiBTSVpFT0ZfTE9ORyA9PSA0CisgICAgICAgICAgICAgICAgcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgPj4gMTYpOworICAgICAgICAgICAgICAgIHBbMV0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrICYgMHhGRkZGdSk7CisjIGVsaWYgU0laRU9GX0xPTkcgPT0gOAorICAgICAgICAgICAgICAgIHBbMF0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrID4+IDQ4KTsKKyAgICAgICAgICAgICAgICBwWzFdID0gKFNUUklOR0xJQl9DSEFSKSgoYmxvY2sgPj4gMzIpICYgMHhGRkZGdSk7CisgICAgICAgICAgICAgICAgcFsyXSA9IChTVFJJTkdMSUJfQ0hBUikoKGJsb2NrID4+IDE2KSAmIDB4RkZGRnUpOworICAgICAgICAgICAgICAgIHBbM10gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrICYgMHhGRkZGdSk7CisjIGVuZGlmCisjZW5kaWYKKyAgICAgICAgICAgICAgICBfcSArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgICAgICAgICBwICs9IFNJWkVPRl9MT05HIC8gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHEgPSBfcTsKKyAgICAgICAgICAgIGlmIChxID49IGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjaCA9IChxW2loaV0gPDwgOCkgfCBxW2lsb107CisgICAgICAgIHEgKz0gMjsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpIHsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPCAyCisgICAgICAgICAgICBpZiAoY2ggPiBTVFJJTkdMSUJfTUFYX0NIQVIpCisgICAgICAgICAgICAgICAgLyogT3V0LW9mLXJhbmdlICovCisgICAgICAgICAgICAgICAgZ290byBSZXR1cm47CisjZW5kaWYKKyAgICAgICAgICAgICpwKysgPSAoU1RSSU5HTElCX0NIQVIpY2g7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFVURi0xNiBjb2RlIHBhaXI6ICovCisgICAgICAgIGlmIChxID49IGUpCisgICAgICAgICAgICBnb3RvIFVuZXhwZWN0ZWRFbmQ7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkpCisgICAgICAgICAgICBnb3RvIElsbGVnYWxFbmNvZGluZzsKKyAgICAgICAgY2gyID0gKHFbaWhpXSA8PCA4KSB8IHFbaWxvXTsKKyAgICAgICAgcSArPSAyOworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShjaDIpKQorICAgICAgICAgICAgZ290byBJbGxlZ2FsU3Vycm9nYXRlOworICAgICAgICBjaCA9IFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKGNoLCBjaDIpOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA8IDQKKyAgICAgICAgLyogT3V0LW9mLXJhbmdlICovCisgICAgICAgIGdvdG8gUmV0dXJuOworI2Vsc2UKKyAgICAgICAgKnArKyA9IChTVFJJTkdMSUJfQ0hBUiljaDsKKyNlbmRpZgorICAgIH0KKyAgICBjaCA9IDA7CitSZXR1cm46CisgICAgKmlucHRyID0gcTsKKyAgICAqb3V0cG9zID0gcCAtIGRlc3Q7CisgICAgcmV0dXJuIGNoOworVW5leHBlY3RlZEVuZDoKKyAgICBjaCA9IDE7CisgICAgZ290byBSZXR1cm47CitJbGxlZ2FsRW5jb2Rpbmc6CisgICAgY2ggPSAyOworICAgIGdvdG8gUmV0dXJuOworSWxsZWdhbFN1cnJvZ2F0ZToKKyAgICBjaCA9IDM7CisgICAgZ290byBSZXR1cm47Cit9CisjdW5kZWYgVUNTMl9SRVBFQVRfTUFTSworI3VuZGVmIEZBU1RfQ0hBUl9NQVNLCisjdW5kZWYgU1RSSVBQRURfTUFTSworI3VuZGVmIFNXQUIKKyN1bmRlZiBMT05HX1BUUl9NQVNLCisKKworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitTVFJJTkdMSUIodXRmMTZfZW5jb2RlKSh1bnNpZ25lZCBzaG9ydCAqb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmluLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmF0aXZlX29yZGVyaW5nKQoreworICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICplbmQgPSBpbiArIGxlbjsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorIyBkZWZpbmUgU1dBQjIoQ0gpICAoKENIKSA8PCA4KQorI2Vsc2UKKyMgZGVmaW5lIFNXQUIyKENIKSAgKCgoQ0gpIDw8IDgpIHwgKChDSCkgPj4gOCkpCisjZW5kaWYKKyNpZiBTVFJJTkdMSUJfTUFYX0NIQVIgPCAweDEwMDAwCisgICAgaWYgKG5hdGl2ZV9vcmRlcmluZykgeworIyBpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMgorICAgICAgICBQeV9NRU1DUFkob3V0LCBpbiwgMiAqIGxlbik7CisjIGVsc2UKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFNUUklOR0xJQl9DSEFSLCB1bnNpZ25lZCBzaG9ydCwgaW4sIGVuZCwgb3V0KTsKKyMgZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqdW5yb2xsZWRfZW5kID0gaW4gKyAobGVuICYgfiAoUHlfc3NpemVfdCkgMyk7CisgICAgICAgIHdoaWxlIChpbiA8IHVucm9sbGVkX2VuZCkgeworICAgICAgICAgICAgb3V0WzBdID0gU1dBQjIoaW5bMF0pOworICAgICAgICAgICAgb3V0WzFdID0gU1dBQjIoaW5bMV0pOworICAgICAgICAgICAgb3V0WzJdID0gU1dBQjIoaW5bMl0pOworICAgICAgICAgICAgb3V0WzNdID0gU1dBQjIoaW5bM10pOworICAgICAgICAgICAgaW4gKz0gNDsgb3V0ICs9IDQ7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGluIDwgZW5kKSB7CisgICAgICAgICAgICAqb3V0KysgPSBTV0FCMigqaW4pOworICAgICAgICAgICAgKytpbjsKKyAgICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgaWYgKG5hdGl2ZV9vcmRlcmluZykgeworICAgICAgICB3aGlsZSAoaW4gPCBlbmQpIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSAqaW4rKzsKKyAgICAgICAgICAgIGlmIChjaCA8IDB4MTAwMDApCisgICAgICAgICAgICAgICAgKm91dCsrID0gY2g7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKGNoKTsKKyAgICAgICAgICAgICAgICBvdXRbMV0gPSBQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpOworICAgICAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2hpbGUgKGluIDwgZW5kKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gKmluKys7CisgICAgICAgICAgICBpZiAoY2ggPCAweDEwMDAwKQorICAgICAgICAgICAgICAgICpvdXQrKyA9IFNXQUIyKChQeV9VQ1MyKWNoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X1VDUzIgY2gxID0gUHlfVU5JQ09ERV9ISUdIX1NVUlJPR0FURShjaCk7CisgICAgICAgICAgICAgICAgUHlfVUNTMiBjaDIgPSBQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpOworICAgICAgICAgICAgICAgIG91dFswXSA9IFNXQUIyKGNoMSk7CisgICAgICAgICAgICAgICAgb3V0WzFdID0gU1dBQjIoY2gyKTsKKyAgICAgICAgICAgICAgICBvdXQgKz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorI3VuZGVmIFNXQUIyCit9CisjZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2NvdW50LmggYi9PYmplY3RzL3N0cmluZ2xpYi9jb3VudC5oCmluZGV4IGRlMzRmOTYuLmY0ODUwMGIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2NvdW50LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvY291bnQuaApAQCAtMSwxNCArMSwxMSBAQAogLyogc3RyaW5nbGliOiBjb3VudCBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWZuZGVmIFNUUklOR0xJQl9DT1VOVF9ICi0jZGVmaW5lIFNUUklOR0xJQl9DT1VOVF9ICi0KICNpZm5kZWYgU1RSSU5HTElCX0ZBU1RTRUFSQ0hfSAogI2Vycm9yIG11c3QgaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIgYmVmb3JlIGluY2x1ZGluZyB0aGlzIG1vZHVsZQogI2VuZGlmCiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotc3RyaW5nbGliX2NvdW50KGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKK1NUUklOR0xJQihjb3VudCkoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdWIsIFB5X3NzaXplX3Qgc3ViX2xlbiwKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewpAQCAtMTksNyArMTYsNyBAQAogICAgIGlmIChzdWJfbGVuID09IDApCiAgICAgICAgIHJldHVybiAoc3RyX2xlbiA8IG1heGNvdW50KSA/IHN0cl9sZW4gKyAxIDogbWF4Y291bnQ7CiAKLSAgICBjb3VudCA9IGZhc3RzZWFyY2goc3RyLCBzdHJfbGVuLCBzdWIsIHN1Yl9sZW4sIG1heGNvdW50LCBGQVNUX0NPVU5UKTsKKyAgICBjb3VudCA9IEZBU1RTRUFSQ0goc3RyLCBzdHJfbGVuLCBzdWIsIHN1Yl9sZW4sIG1heGNvdW50LCBGQVNUX0NPVU5UKTsKIAogICAgIGlmIChjb3VudCA8IDApCiAgICAgICAgIHJldHVybiAwOyAvKiBubyBtYXRjaCAqLwpAQCAtMjcsNCArMjQsNCBAQAogICAgIHJldHVybiBjb3VudDsKIH0KIAotI2VuZGlmCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2VxLmggYi9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCmluZGV4IDNlN2Y1ZTguLjhlNzlhNDMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2VxLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaApAQCAtOSwxMyArOSwyNiBAQAogICAgIHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqYSA9IChQeVVuaWNvZGVPYmplY3QgKilhYTsKICAgICByZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKmIgPSAoUHlVbmljb2RlT2JqZWN0ICopYmI7CiAKLSAgICBpZiAoYS0+bGVuZ3RoICE9IGItPmxlbmd0aCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGEpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShiKSA9PSAtMSkgeworICAgICAgICBhc3NlcnQoMCAmJiAidW5pY29kZV9lcSByZWFkeSBmYWlsIik7CiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhLT5sZW5ndGggPT0gMCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKGEtPnN0clswXSAhPSBiLT5zdHJbMF0pCisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGEpICE9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGIpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoYS0+bGVuZ3RoID09IDEpCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGEpID09IDApCiAgICAgICAgIHJldHVybiAxOwotICAgIHJldHVybiBtZW1jbXAoYS0+c3RyLCBiLT5zdHIsIGEtPmxlbmd0aCAqIHNpemVvZihQeV9VTklDT0RFKSkgPT0gMDsKKyAgICBpZiAoUHlVbmljb2RlX0tJTkQoYSkgIT0gUHlVbmljb2RlX0tJTkQoYikpCisgICAgICAgIHJldHVybiAwOworICAgIC8qIEp1c3QgY29tcGFyaW5nIHRoZSBmaXJzdCBieXRlIGlzIGVub3VnaCB0byBzZWUgaWYgYSBhbmQgYiBkaWZmZXIuCisgICAgICogSWYgdGhleSBhcmUgMiBieXRlIG9yIDQgYnl0ZSBjaGFyYWN0ZXIgbW9zdCBkaWZmZXJlbmNlcyB3aWxsIGhhcHBlbiBpbgorICAgICAqIHRoZSBsb3dlciBieXRlcyBhbnl3YXlzLgorICAgICAqLworICAgIGlmIChQeVVuaWNvZGVfMUJZVEVfREFUQShhKVswXSAhPSBQeVVuaWNvZGVfMUJZVEVfREFUQShiKVswXSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFB5VW5pY29kZV9LSU5EKGEpID09IFB5VW5pY29kZV8xQllURV9LSU5EICYmCisgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKGEpID09IDEpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBtZW1jbXAoUHlVbmljb2RlXzFCWVRFX0RBVEEoYSksIFB5VW5pY29kZV8xQllURV9EQVRBKGIpLAorICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoYSkgKiBQeVVuaWNvZGVfS0lORChhKSkgPT0gMDsKIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaCBiL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAppbmRleCBlMjMxYzU4Li41YjhkNWRiIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCkBAIC0xLDYgKzEsNSBAQAogLyogc3RyaW5nbGliOiBmYXN0c2VhcmNoIGltcGxlbWVudGF0aW9uICovCiAKLSNpZm5kZWYgU1RSSU5HTElCX0ZBU1RTRUFSQ0hfSAogI2RlZmluZSBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAKIC8qIGZhc3Qgc2VhcmNoL2NvdW50IGltcGxlbWVudGF0aW9uLCBiYXNlZCBvbiBhIG1peCBiZXR3ZWVuIGJveWVyLQpAQCAtMzMsOCArMzIsNjIgQEAKICNkZWZpbmUgU1RSSU5HTElCX0JMT09NKG1hc2ssIGNoKSAgICAgXAogICAgICgobWFzayAmICAoMVVMIDw8ICgoY2gpICYgKFNUUklOR0xJQl9CTE9PTV9XSURUSCAtMSkpKSkpCiAKKwogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1mYXN0c2VhcmNoKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sCitTVFJJTkdMSUIoZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSIGNoLCB1bnNpZ25lZCBjaGFyIG5lZWRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCwgaW50IG1vZGUpCit7CisgICAgdm9pZCAqY2FuZGlkYXRlOworICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpmb3VuZDsKKworI2RlZmluZSBET19NRU1DSFIobWVtY2hyLCBzLCBuZWVkbGUsIG5jaGFycykgZG8geyBcCisgICAgY2FuZGlkYXRlID0gbWVtY2hyKChjb25zdCB2b2lkICopIChzKSwgKG5lZWRsZSksIChuY2hhcnMpICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7IFwKKyAgICBmb3VuZCA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKSBcCisgICAgICAgICgoUHlfc3NpemVfdCkgY2FuZGlkYXRlICYgKH4gKChQeV9zc2l6ZV90KSBzaXplb2YoU1RSSU5HTElCX0NIQVIpIC0gMSkpKTsgXAorICAgIH0gd2hpbGUgKDApCisKKyAgICBpZiAobW9kZSA9PSBGQVNUX1NFQVJDSCkgeworICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcHRyID0gczsKKyAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmUgPSBzICsgbjsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGUpIHsKKyAgICAgICAgICAgIERPX01FTUNIUihtZW1jaHIsIHB0ciwgbmVlZGxlLCBlIC0gcHRyKTsKKyAgICAgICAgICAgIGlmIChmb3VuZCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChzaXplb2YoU1RSSU5HTElCX0NIQVIpID09IDEgfHwgKmZvdW5kID09IGNoKQorICAgICAgICAgICAgICAgIHJldHVybiAoZm91bmQgLSBzKTsKKyAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCisgICAgICAgICAgICBwdHIgPSBmb3VuZCArIDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNpZmRlZiBIQVZFX01FTVJDSFIKKyAgICAvKiBtZW1yY2hyKCkgaXMgYSBHTlUgZXh0ZW5zaW9uLCBhdmFpbGFibGUgc2luY2UgZ2xpYmMgMi4xLjkxLgorICAgICAgIGl0IGRvZXNuJ3Qgc2VlbSBhcyBvcHRpbWl6ZWQgYXMgbWVtY2hyKCksIGJ1dCBpcyBzdGlsbCBxdWl0ZQorICAgICAgIGZhc3RlciB0aGFuIG91ciBoYW5kLXdyaXR0ZW4gbG9vcCBpbiBGQVNUU0VBUkNIIGJlbG93ICovCisgICAgZWxzZSBpZiAobW9kZSA9PSBGQVNUX1JTRUFSQ0gpIHsKKyAgICAgICAgd2hpbGUgKG4gPiAwKSB7CisgICAgICAgICAgICBET19NRU1DSFIobWVtcmNociwgcywgbmVlZGxlLCBuKTsKKyAgICAgICAgICAgIGlmIChmb3VuZCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIG4gPSBmb3VuZCAtIHM7CisgICAgICAgICAgICBpZiAoc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSA9PSAxIHx8ICpmb3VuZCA9PSBjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoMCk7IC8qIFNob3VsZCBuZXZlciBnZXQgaGVyZSAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyN1bmRlZiBET19NRU1DSFIKK30KKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitGQVNUU0VBUkNIKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sCiAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBwLCBQeV9zc2l6ZV90IG0sCiAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQsIGludCBtb2RlKQogewpAQCAtNTIsNiArMTA1LDI0IEBACiAgICAgICAgIGlmIChtIDw9IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIC8qIHVzZSBzcGVjaWFsIGNhc2UgZm9yIDEtY2hhcmFjdGVyIHN0cmluZ3MgKi8KKyAgICAgICAgaWYgKG4gPiAxMCAmJiAobW9kZSA9PSBGQVNUX1NFQVJDSAorI2lmZGVmIEhBVkVfTUVNUkNIUgorICAgICAgICAgICAgICAgICAgICB8fCBtb2RlID09IEZBU1RfUlNFQVJDSAorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICkpIHsKKyAgICAgICAgICAgIC8qIHVzZSBtZW1jaHIgaWYgd2UgY2FuIGNob29zZSBhIG5lZWRsZSB3aXRob3V0IHR3byBtYW55IGxpa2VseQorICAgICAgICAgICAgICAgZmFsc2UgcG9zaXRpdmVzICovCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZTsKKyAgICAgICAgICAgIG5lZWRsZSA9IHBbMF0gJiAweGZmOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICAgICAgICAgIC8qIElmIGxvb2tpbmcgZm9yIGEgbXVsdGlwbGUgb2YgMjU2LCB3ZSdkIGhhdmUgdG9vCisgICAgICAgICAgICAgICBtYW55IGZhbHNlIHBvc2l0aXZlcyBsb29raW5nIGZvciB0aGUgJ1wwJyBieXRlIGluIFVDUzIKKyAgICAgICAgICAgICAgIGFuZCBVQ1M0IHJlcHJlc2VudGF0aW9ucy4gKi8KKyAgICAgICAgICAgIGlmIChuZWVkbGUgIT0gMCkKKyNlbmRpZgorICAgICAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUIoZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIpCisgICAgICAgICAgICAgICAgICAgICAgIChzLCBuLCBwWzBdLCBuZWVkbGUsIG1heGNvdW50LCBtb2RlKTsKKyAgICAgICAgfQogICAgICAgICBpZiAobW9kZSA9PSBGQVNUX0NPVU5UKSB7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgICAgICAgICAgIGlmIChzW2ldID09IHBbMF0pIHsKQEAgLTE1Nyw0ICsyMjgsMyBAQAogICAgIHJldHVybiBjb3VudDsKIH0KIAotI2VuZGlmCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmggYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKaW5kZXggY2U2MTVkYy4uNTE4ZTAxMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaApAQCAtMSwxNCArMSwxMSBAQAogLyogc3RyaW5nbGliOiBmaW5kL2luZGV4IGltcGxlbWVudGF0aW9uICovCiAKLSNpZm5kZWYgU1RSSU5HTElCX0ZJTkRfSAotI2RlZmluZSBTVFJJTkdMSUJfRklORF9ICi0KICNpZm5kZWYgU1RSSU5HTElCX0ZBU1RTRUFSQ0hfSAogI2Vycm9yIG11c3QgaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIgYmVmb3JlIGluY2x1ZGluZyB0aGlzIG1vZHVsZQogI2VuZGlmCiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotc3RyaW5nbGliX2ZpbmQoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAorU1RSSU5HTElCKGZpbmQpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdWIsIFB5X3NzaXplX3Qgc3ViX2xlbiwKICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0KQogewpAQCAtMTksNyArMTYsNyBAQAogICAgIGlmIChzdWJfbGVuID09IDApCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAKLSAgICBwb3MgPSBmYXN0c2VhcmNoKHN0ciwgc3RyX2xlbiwgc3ViLCBzdWJfbGVuLCAtMSwgRkFTVF9TRUFSQ0gpOworICAgIHBvcyA9IEZBU1RTRUFSQ0goc3RyLCBzdHJfbGVuLCBzdWIsIHN1Yl9sZW4sIC0xLCBGQVNUX1NFQVJDSCk7CiAKICAgICBpZiAocG9zID49IDApCiAgICAgICAgIHBvcyArPSBvZmZzZXQ7CkBAIC0yOCw3ICsyNSw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotc3RyaW5nbGliX3JmaW5kKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKK1NUUklOR0xJQihyZmluZCkoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdWIsIFB5X3NzaXplX3Qgc3ViX2xlbiwKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCkKIHsKQEAgLTM5LDcgKzM2LDcgQEAKICAgICBpZiAoc3ViX2xlbiA9PSAwKQogICAgICAgICByZXR1cm4gc3RyX2xlbiArIG9mZnNldDsKIAotICAgIHBvcyA9IGZhc3RzZWFyY2goc3RyLCBzdHJfbGVuLCBzdWIsIHN1Yl9sZW4sIC0xLCBGQVNUX1JTRUFSQ0gpOworICAgIHBvcyA9IEZBU1RTRUFSQ0goc3RyLCBzdHJfbGVuLCBzdWIsIHN1Yl9sZW4sIC0xLCBGQVNUX1JTRUFSQ0gpOwogCiAgICAgaWYgKHBvcyA+PSAwKQogICAgICAgICBwb3MgKz0gb2Zmc2V0OwpAQCAtNjMsMjkgKzYwLDI5IEBACiAgICAgfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLXN0cmluZ2xpYl9maW5kX3NsaWNlKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKK1NUUklOR0xJQihmaW5kX3NsaWNlKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3ViLCBQeV9zc2l6ZV90IHN1Yl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKIHsKICAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBzdHJfbGVuKTsKLSAgICByZXR1cm4gc3RyaW5nbGliX2ZpbmQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIHN0YXJ0KTsKKyAgICByZXR1cm4gU1RSSU5HTElCKGZpbmQpKHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBzdGFydCk7CiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotc3RyaW5nbGliX3JmaW5kX3NsaWNlKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKK1NUUklOR0xJQihyZmluZF9zbGljZSkoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdWIsIFB5X3NzaXplX3Qgc3ViX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKIHsKICAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBzdHJfbGVuKTsKLSAgICByZXR1cm4gc3RyaW5nbGliX3JmaW5kKHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBzdGFydCk7CisgICAgcmV0dXJuIFNUUklOR0xJQihyZmluZCkoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIHN0YXJ0KTsKIH0KIAogI2lmZGVmIFNUUklOR0xJQl9XQU5UX0NPTlRBSU5TX09CSgogCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotc3RyaW5nbGliX2NvbnRhaW5zX29iaihQeU9iamVjdCogc3RyLCBQeU9iamVjdCogc3ViKQorU1RSSU5HTElCKGNvbnRhaW5zX29iaikoUHlPYmplY3QqIHN0ciwgUHlPYmplY3QqIHN1YikKIHsKLSAgICByZXR1cm4gc3RyaW5nbGliX2ZpbmQoCisgICAgcmV0dXJuIFNUUklOR0xJQihmaW5kKSgKICAgICAgICAgU1RSSU5HTElCX1NUUihzdHIpLCBTVFJJTkdMSUJfTEVOKHN0ciksCiAgICAgICAgIFNUUklOR0xJQl9TVFIoc3ViKSwgU1RSSU5HTElCX0xFTihzdWIpLCAwCiAgICAgICAgICkgIT0gLTE7CkBAIC05OCwxNCArOTUsMTQgQEAKIHJpbmRleCkgYW5kIGZvciBjb3VudCwgc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGgsIGJlY2F1c2UgdGhleSBhbGwgaGF2ZQogdGhlIHNhbWUgYmVoYXZpb3VyIGZvciB0aGUgYXJndW1lbnRzLgogCi1JdCBkb2VzIG5vdCB0b3VjaCB0aGUgdmFyaWFibGVzIHJlY2VpdmVkIHVudGlsIGl0IGtub3dzIGV2ZXJ5dGhpbmcgCitJdCBkb2VzIG5vdCB0b3VjaCB0aGUgdmFyaWFibGVzIHJlY2VpdmVkIHVudGlsIGl0IGtub3dzIGV2ZXJ5dGhpbmcKIGlzIG9rLgogKi8KIAogI2RlZmluZSBGT1JNQVRfQlVGRkVSX1NJWkUgNTAKIAogUHlfTE9DQUxfSU5MSU5FKGludCkKLXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKGNvbnN0IGNoYXIgKiBmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKK1NUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzKShjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1Ym9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCiB7CkBAIC0xNDgsMjggKzE0NSw3NiBAQAogCiBOb3RlIHRoYXQgd2UgcmVjZWl2ZSBhIHBvaW50ZXIgdG8gdGhlIHBvaW50ZXIgb2YgdGhlIHN1YnN0cmluZyBvYmplY3QsCiBzbyB3aGVuIHdlIGNyZWF0ZSB0aGF0IG9iamVjdCBpbiB0aGlzIGZ1bmN0aW9uIHdlIGRvbid0IERFQ1JFRiBpdCwKLWJlY2F1c2UgaXQgY29udGludWVzIGxpdmluZyBpbiB0aGUgY2FsbGVyIGZ1bmN0aW9ucyAodGhvc2UgZnVuY3Rpb25zLCAKK2JlY2F1c2UgaXQgY29udGludWVzIGxpdmluZyBpbiB0aGUgY2FsbGVyIGZ1bmN0aW9ucyAodGhvc2UgZnVuY3Rpb25zLAogYWZ0ZXIgZmluaXNoaW5nIHVzaW5nIHRoZSBzdWJzdHJpbmcsIG11c3QgREVDUkVGIGl0KS4KICovCiAKIFB5X0xPQ0FMX0lOTElORShpbnQpCi1zdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKGNvbnN0IGNoYXIgKiBmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICoqc3Vic3RyaW5nLAorU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSkoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1YnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKIHsKICAgICBQeU9iamVjdCAqdG1wX3N1YnN0cmluZzsKIAotICAgIGlmKHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vic3RyaW5nLAorICAgIGlmKFNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzKShmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1YnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kKSkgewogICAgICAgICB0bXBfc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QodG1wX3N1YnN0cmluZyk7CiAgICAgICAgIGlmICghdG1wX3N1YnN0cmluZykKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAqc3Vic3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKXRtcF9zdWJzdHJpbmc7CisgICAgICAgICpzdWJzdHJpbmcgPSB0bXBfc3Vic3RyaW5nOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLSNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLworI2Vsc2UgLyogIVNUUklOR0xJQl9JU19VTklDT0RFICovCiAKLSNlbmRpZiAvKiBTVFJJTkdMSUJfRklORF9IICovCisvKgorV3JhcHMgc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKSBhbmQgYWRkaXRpb25hbGx5IGNoZWNrcyB3aGV0aGVyIHRoZQorZmlyc3QgYXJndW1lbnQgaXMgYW4gaW50ZWdlciBpbiByYW5nZSgwLCAyNTYpLgorCitJZiB0aGlzIGlzIHRoZSBjYXNlLCB3cml0ZXMgdGhlIGludGVnZXIgdmFsdWUgdG8gdGhlIGJ5dGUgcGFyYW1ldGVyCithbmQgc2V0cyBzdWJvYmogdG8gTlVMTC4gT3RoZXJ3aXNlLCBzZXRzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBzdWJvYmoKK2FuZCBkb2Vzbid0IHRvdWNoIGJ5dGUuIFRoZSBvdGhlciBwYXJhbWV0ZXJzIGFyZSBzaW1pbGFyIHRvIHRob3NlIG9mCitzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpLgorKi8KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1NUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzX2J5dGUpKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJvYmosIGNoYXIgKmJ5dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQoreworICAgIFB5T2JqZWN0ICp0bXBfc3Vib2JqOworICAgIFB5X3NzaXplX3QgaXZhbDsKKyAgICBQeU9iamVjdCAqZXJyOworCisgICAgaWYoIVNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzKShmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1Ym9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghUHlOdW1iZXJfQ2hlY2sodG1wX3N1Ym9iaikpIHsKKyAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QodG1wX3N1Ym9iaiwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgaWYgKGl2YWwgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gUHlFcnJfT2NjdXJyZWQoKTsKKyAgICAgICAgaWYgKGVyciAmJiAhUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKGVyciwgUHlFeGNfT3ZlcmZsb3dFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAqc3Vib2JqID0gTlVMTDsKKyAgICAqYnl0ZSA9IChjaGFyKWl2YWw7CisgICAgcmV0dXJuIDE7Cit9CisKKyNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMzQ0YTAKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qIEZpbmRpbmcgdGhlIG9wdGltYWwgd2lkdGggb2YgdW5pY29kZSBjaGFyYWN0ZXJzIGluIGEgYnVmZmVyICovCisKKyNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorCisvKiBNYXNrIHRvIGNoZWNrIG9yIGZvcmNlIGFsaWdubWVudCBvZiBhIHBvaW50ZXIgdG8gQyAnbG9uZycgYm91bmRhcmllcyAqLworI2RlZmluZSBMT05HX1BUUl9NQVNLIChzaXplX3QpIChTSVpFT0ZfTE9ORyAtIDEpCisKKy8qIE1hc2sgdG8gcXVpY2tseSBjaGVjayB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQorICAgbm9uLUFTQ0lJLCBVVEY4LWVuY29kZWQgY2hhci4gKi8KKyNpZiAoU0laRU9GX0xPTkcgPT0gOCkKKyMgZGVmaW5lIFVDUzFfQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MFVMCisjZWxpZiAoU0laRU9GX0xPTkcgPT0gNCkKKyMgZGVmaW5lIFVDUzFfQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODBVTAorI2Vsc2UKKyMgZXJyb3IgQyAnbG9uZycgc2l6ZSBzaG91bGQgYmUgZWl0aGVyIDQgb3IgOCEKKyNlbmRpZgorCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKworUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCitTVFJJTkdMSUIoZmluZF9tYXhfY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIgKmJlZ2luLCBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZW5kKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBiZWdpbjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphbGlnbmVkX2VuZCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopICgoc2l6ZV90KSBlbmQgJiB+TE9OR19QVFJfTUFTSyk7CisKKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICBpZiAoISgoc2l6ZV90KSBwICYgTE9OR19QVFJfTUFTSykpIHsKKyAgICAgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAqX3AgPSBwOworICAgICAgICAgICAgd2hpbGUgKF9wIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlID0gKih1bnNpZ25lZCBsb25nICopIF9wOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmIFVDUzFfQVNDSUlfQ0hBUl9NQVNLKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjU1OworICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcCA9IF9wOworICAgICAgICAgICAgaWYgKHAgPT0gZW5kKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICgqcCsrICYgMHg4MCkKKyAgICAgICAgICAgIHJldHVybiAyNTU7CisgICAgfQorICAgIHJldHVybiAxMjc7Cit9CisKKyN1bmRlZiBMT05HX1BUUl9NQVNLCisjdW5kZWYgQVNDSUlfQ0hBUl9NQVNLCisKKyNlbHNlIC8qIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxICovCisKKyNkZWZpbmUgTUFTS19BU0NJSSAweEZGRkZGRjgwCisjZGVmaW5lIE1BU0tfVUNTMSAweEZGRkZGRjAwCisjZGVmaW5lIE1BU0tfVUNTMiAweEZGRkYwMDAwCisKKyNkZWZpbmUgTUFYX0NIQVJfQVNDSUkgMHg3ZgorI2RlZmluZSBNQVhfQ0hBUl9VQ1MxICAweGZmCisjZGVmaW5lIE1BWF9DSEFSX1VDUzIgIDB4ZmZmZgorI2RlZmluZSBNQVhfQ0hBUl9VQ1M0ICAweDEwZmZmZgorCitQeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK1NUUklOR0xJQihmaW5kX21heF9jaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiAqYmVnaW4sIGNvbnN0IFNUUklOR0xJQl9DSEFSICplbmQpCit7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDIKKyAgICBjb25zdCBQeV9VQ1M0IG1hc2tfbGltaXQgPSBNQVNLX1VDUzE7CisgICAgY29uc3QgUHlfVUNTNCBtYXhfY2hhcl9saW1pdCA9IE1BWF9DSEFSX1VDUzI7CisjZWxpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gNAorICAgIGNvbnN0IFB5X1VDUzQgbWFza19saW1pdCA9IE1BU0tfVUNTMjsKKyAgICBjb25zdCBQeV9VQ1M0IG1heF9jaGFyX2xpbWl0ID0gTUFYX0NIQVJfVUNTNDsKKyNlbHNlCisjZXJyb3IgSW52YWxpZCBTVFJJTkdMSUJfU0laRU9GX0NIQVIgKG11c3QgYmUgMSwgMiBvciA0KQorI2VuZGlmCisgICAgcmVnaXN0ZXIgUHlfVUNTNCBtYXNrOworICAgIFB5X3NzaXplX3QgbiA9IGVuZCAtIGJlZ2luOworICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpwID0gYmVnaW47CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnVucm9sbGVkX2VuZCA9IGJlZ2luICsgKG4gJiB+IChQeV9zc2l6ZV90KSAzKTsKKyAgICBQeV9VQ1M0IG1heF9jaGFyOworCisgICAgbWF4X2NoYXIgPSBNQVhfQ0hBUl9BU0NJSTsKKyAgICBtYXNrID0gTUFTS19BU0NJSTsKKyAgICB3aGlsZSAocCA8IHVucm9sbGVkX2VuZCkgeworICAgICAgICBTVFJJTkdMSUJfQ0hBUiBiaXRzID0gcFswXSB8IHBbMV0gfCBwWzJdIHwgcFszXTsKKyAgICAgICAgaWYgKGJpdHMgJiBtYXNrKSB7CisgICAgICAgICAgICBpZiAobWFzayA9PSBtYXNrX2xpbWl0KSB7CisgICAgICAgICAgICAgICAgLyogTGltaXQgcmVhY2hlZCAqLworICAgICAgICAgICAgICAgIHJldHVybiBtYXhfY2hhcl9saW1pdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtYXNrID09IE1BU0tfQVNDSUkpIHsKKyAgICAgICAgICAgICAgICBtYXhfY2hhciA9IE1BWF9DSEFSX1VDUzE7CisgICAgICAgICAgICAgICAgbWFzayA9IE1BU0tfVUNTMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIG1hc2sgY2FuJ3QgYmUgTUFTS19VQ1MyIGJlY2F1c2Ugb2YgbWFza19saW1pdCBhYm92ZSAqLworICAgICAgICAgICAgICAgIGFzc2VydChtYXNrID09IE1BU0tfVUNTMSk7CisgICAgICAgICAgICAgICAgbWF4X2NoYXIgPSBNQVhfQ0hBUl9VQ1MyOworICAgICAgICAgICAgICAgIG1hc2sgPSBNQVNLX1VDUzI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBXZSBjaGVjayB0aGUgbmV3IG1hc2sgb24gdGhlIHNhbWUgY2hhcnMgaW4gdGhlIG5leHQgaXRlcmF0aW9uICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBwICs9IDQ7CisgICAgfQorICAgIHdoaWxlIChwIDwgZW5kKSB7CisgICAgICAgIGlmIChwWzBdICYgbWFzaykgeworICAgICAgICAgICAgaWYgKG1hc2sgPT0gbWFza19saW1pdCkgeworICAgICAgICAgICAgICAgIC8qIExpbWl0IHJlYWNoZWQgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gbWF4X2NoYXJfbGltaXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobWFzayA9PSBNQVNLX0FTQ0lJKSB7CisgICAgICAgICAgICAgICAgbWF4X2NoYXIgPSBNQVhfQ0hBUl9VQ1MxOworICAgICAgICAgICAgICAgIG1hc2sgPSBNQVNLX1VDUzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBtYXNrIGNhbid0IGJlIE1BU0tfVUNTMiBiZWNhdXNlIG9mIG1hc2tfbGltaXQgYWJvdmUgKi8KKyAgICAgICAgICAgICAgICBhc3NlcnQobWFzayA9PSBNQVNLX1VDUzEpOworICAgICAgICAgICAgICAgIG1heF9jaGFyID0gTUFYX0NIQVJfVUNTMjsKKyAgICAgICAgICAgICAgICBtYXNrID0gTUFTS19VQ1MyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogV2UgY2hlY2sgdGhlIG5ldyBtYXNrIG9uIHRoZSBzYW1lIGNoYXJzIGluIHRoZSBuZXh0IGl0ZXJhdGlvbiAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgcCsrOworICAgIH0KKyAgICByZXR1cm4gbWF4X2NoYXI7Cit9CisKKyN1bmRlZiBNQVNLX0FTQ0lJCisjdW5kZWYgTUFTS19VQ1MxCisjdW5kZWYgTUFTS19VQ1MyCisjdW5kZWYgTUFYX0NIQVJfQVNDSUkKKyN1bmRlZiBNQVhfQ0hBUl9VQ1MxCisjdW5kZWYgTUFYX0NIQVJfVUNTMgorI3VuZGVmIE1BWF9DSEFSX1VDUzQKKworI2VuZGlmIC8qIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxICovCisjZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZm9ybWF0dGVyLmggYi9PYmplY3RzL3N0cmluZ2xpYi9mb3JtYXR0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZkYzYyZC4uMDAwMDAwMAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9mb3JtYXR0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MTggKzAsMCBAQAotLyogaW1wbGVtZW50cyB0aGUgc3RyaW5nLCBsb25nLCBhbmQgZmxvYXQgZm9ybWF0dGVycy4gIHRoYXQgaXMsCi0gICBzdHJpbmcuX19mb3JtYXRfXywgZXRjLiAqLwotCi0jaW5jbHVkZSA8bG9jYWxlLmg+Ci0KLS8qIEJlZm9yZSBpbmNsdWRpbmcgdGhpcywgeW91IG11c3QgaW5jbHVkZSBlaXRoZXI6Ci0gICBzdHJpbmdsaWIvdW5pY29kZWRlZnMuaAotICAgc3RyaW5nbGliL3N0cmluZ2RlZnMuaAotCi0gICBBbHNvLCB5b3Ugc2hvdWxkIGRlZmluZSB0aGUgbmFtZXM6Ci0gICBGT1JNQVRfU1RSSU5HCi0gICBGT1JNQVRfTE9ORwotICAgRk9STUFUX0ZMT0FUCi0gICBGT1JNQVRfQ09NUExFWAotICAgdG8gYmUgd2hhdGV2ZXIgeW91IHdhbnQgdGhlIHB1YmxpYyBuYW1lcyBvZiB0aGVzZSBmdW5jdGlvbnMgdG8KLSAgIGJlLiAgVGhlc2UgYXJlIHRoZSBvbmx5IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGRlZmluZWQgaGVyZS4KLSovCi0KLS8qIFJhaXNlcyBhbiBleGNlcHRpb24gYWJvdXQgYW4gdW5rbm93biBwcmVzZW50YXRpb24gdHlwZSBmb3IgdGhpcwotICogdHlwZS4gKi8KLQotc3RhdGljIHZvaWQKLXVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoU1RSSU5HTElCX0NIQVIgcHJlc2VudGF0aW9uX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVfbmFtZSkKLXsKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIC8qIElmIFNUUklOR0xJQl9DSEFSIGlzIFB5X1VOSUNPREUsICVjIG1pZ2h0IGJlIG91dC1vZi1yYW5nZSwKLSAgICAgICBoZW5jZSB0aGUgdHdvIGNhc2VzLiBJZiBpdCBpcyBjaGFyLCBnY2MgY29tcGxhaW5zIHRoYXQgdGhlCi0gICAgICAgY29uZGl0aW9uIGJlbG93IGlzIGFsd2F5cyB0cnVlLCBoZW5jZSB0aGUgaWZkZWYuICovCi0gICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCi0jZW5kaWYKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBmb3JtYXQgY29kZSAnJWMnICIKLSAgICAgICAgICAgICAgICAgICAgICJmb3Igb2JqZWN0IG9mIHR5cGUgJyUuMjAwcyciLAotICAgICAgICAgICAgICAgICAgICAgKGNoYXIpcHJlc2VudGF0aW9uX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUpOwotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgZWxzZQotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIGZvcm1hdCBjb2RlICdcXHgleCcgIgotICAgICAgICAgICAgICAgICAgICAgImZvciBvYmplY3Qgb2YgdHlwZSAnJS4yMDBzJyIsCi0gICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KXByZXNlbnRhdGlvbl90eXBlLAotICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9pZAotaW52YWxpZF9jb21tYV90eXBlKFNUUklOR0xJQl9DSEFSIHByZXNlbnRhdGlvbl90eXBlKQotewotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgLyogU2VlIGNvbW1lbnQgaW4gdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZSAqLwotICAgIGlmIChwcmVzZW50YXRpb25fdHlwZSA+IDMyICYmIHByZXNlbnRhdGlvbl90eXBlIDwgMTI4KQotI2VuZGlmCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICclYycuIiwKLSAgICAgICAgICAgICAgICAgICAgIChjaGFyKXByZXNlbnRhdGlvbl90eXBlKTsKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJ1xceCV4Jy4iLAotICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClwcmVzZW50YXRpb25fdHlwZSk7Ci0jZW5kaWYKLX0KLQotLyoKLSAgICBnZXRfaW50ZWdlciBjb25zdW1lcyAwIG9yIG1vcmUgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXJzIGZyb20gYW4KLSAgICBpbnB1dCBzdHJpbmcsIHVwZGF0ZXMgKnJlc3VsdCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aXZlCi0gICAgaW50ZWdlciwgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBkaWdpdHMgY29uc3VtZWQuCi0KLSAgICByZXR1cm5zIC0xIG9uIGVycm9yLgotKi8KLXN0YXRpYyBpbnQKLWdldF9pbnRlZ2VyKFNUUklOR0xJQl9DSEFSICoqcHRyLCBTVFJJTkdMSUJfQ0hBUiAqZW5kLAotICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqcmVzdWx0KQotewotICAgIFB5X3NzaXplX3QgYWNjdW11bGF0b3IsIGRpZ2l0dmFsLCBvbGRhY2N1bXVsYXRvcjsKLSAgICBpbnQgbnVtZGlnaXRzOwotICAgIGFjY3VtdWxhdG9yID0gbnVtZGlnaXRzID0gMDsKLSAgICBmb3IgKDs7KCpwdHIpKyssIG51bWRpZ2l0cysrKSB7Ci0gICAgICAgIGlmICgqcHRyID49IGVuZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkaWdpdHZhbCA9IFNUUklOR0xJQl9UT0RFQ0lNQUwoKipwdHIpOwotICAgICAgICBpZiAoZGlnaXR2YWwgPCAwKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8qCi0gICAgICAgICAgIFRoaXMgdHJpY2sgd2FzIGNvcGllZCBmcm9tIG9sZCBVbmljb2RlIGZvcm1hdCBjb2RlLiAgSXQncyBjdXRlLAotICAgICAgICAgICBidXQgd291bGQgcmVhbGx5IHN1Y2sgb24gYW4gb2xkIG1hY2hpbmUgd2l0aCBhIHNsb3cgZGl2aWRlCi0gICAgICAgICAgIGltcGxlbWVudGF0aW9uLiAgRm9ydHVuYXRlbHksIGluIHRoZSBub3JtYWwgY2FzZSB3ZSBkbyBub3QKLSAgICAgICAgICAgZXhwZWN0IHRvbyBtYW55IGRpZ2l0cy4KLSAgICAgICAgKi8KLSAgICAgICAgb2xkYWNjdW11bGF0b3IgPSBhY2N1bXVsYXRvcjsKLSAgICAgICAgYWNjdW11bGF0b3IgKj0gMTA7Ci0gICAgICAgIGlmICgoYWNjdW11bGF0b3IrMTApLzEwICE9IG9sZGFjY3VtdWxhdG9yKzEpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJUb28gbWFueSBkZWNpbWFsIGRpZ2l0cyBpbiBmb3JtYXQgc3RyaW5nIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgYWNjdW11bGF0b3IgKz0gZGlnaXR2YWw7Ci0gICAgfQotICAgICpyZXN1bHQgPSBhY2N1bXVsYXRvcjsKLSAgICByZXR1cm4gbnVtZGlnaXRzOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIHN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIgcGFyc2luZyAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qIHJldHVybnMgdHJ1ZSBpZiB0aGlzIGNoYXJhY3RlciBpcyBhIHNwZWNpZmllciBhbGlnbm1lbnQgdG9rZW4gKi8KLVB5X0xPQ0FMX0lOTElORShpbnQpCi1pc19hbGlnbm1lbnRfdG9rZW4oU1RSSU5HTElCX0NIQVIgYykKLXsKLSAgICBzd2l0Y2ggKGMpIHsKLSAgICBjYXNlICc8JzogY2FzZSAnPic6IGNhc2UgJz0nOiBjYXNlICdeJzoKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi0vKiByZXR1cm5zIHRydWUgaWYgdGhpcyBjaGFyYWN0ZXIgaXMgYSBzaWduIGVsZW1lbnQgKi8KLVB5X0xPQ0FMX0lOTElORShpbnQpCi1pc19zaWduX2VsZW1lbnQoU1RSSU5HTElCX0NIQVIgYykKLXsKLSAgICBzd2l0Y2ggKGMpIHsKLSAgICBjYXNlICcgJzogY2FzZSAnKyc6IGNhc2UgJy0nOgotICAgICAgICByZXR1cm4gMTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFNUUklOR0xJQl9DSEFSIGZpbGxfY2hhcjsKLSAgICBTVFJJTkdMSUJfQ0hBUiBhbGlnbjsKLSAgICBpbnQgYWx0ZXJuYXRlOwotICAgIFNUUklOR0xJQl9DSEFSIHNpZ247Ci0gICAgUHlfc3NpemVfdCB3aWR0aDsKLSAgICBpbnQgdGhvdXNhbmRzX3NlcGFyYXRvcnM7Ci0gICAgUHlfc3NpemVfdCBwcmVjaXNpb247Ci0gICAgU1RSSU5HTElCX0NIQVIgdHlwZTsKLX0gSW50ZXJuYWxGb3JtYXRTcGVjOwotCi0KLSNpZiAwCi0vKiBPY2Nhc3Npb25hbGx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nLiBTaG91bGQgbm9ybWFsbHkgYmUgY29tbWVudGVkIG91dC4gKi8KLXN0YXRpYyB2b2lkCi1ERUJVR19QUklOVF9GT1JNQVRfU1BFQyhJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCkKLXsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBmaWxsX2NoYXIgJWRcbiIsIGZvcm1hdC0+ZmlsbF9jaGFyKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBhbGlnbiAlZFxuIiwgZm9ybWF0LT5hbGlnbik7Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogYWx0ZXJuYXRlICVkXG4iLCBmb3JtYXQtPmFsdGVybmF0ZSk7Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogc2lnbiAlZFxuIiwgZm9ybWF0LT5zaWduKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiB3aWR0aCAlemRcbiIsIGZvcm1hdC0+d2lkdGgpOwotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHRob3VzYW5kc19zZXBhcmF0b3JzICVkXG4iLAotICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBwcmVjaXNpb24gJXpkXG4iLCBmb3JtYXQtPnByZWNpc2lvbik7Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogdHlwZSAlY1xuIiwgZm9ybWF0LT50eXBlKTsKLSAgICBwcmludGYoIlxuIik7Ci19Ci0jZW5kaWYKLQotCi0vKgotICBwdHIgcG9pbnRzIHRvIHRoZSBzdGFydCBvZiB0aGUgZm9ybWF0X3NwZWMsIGVuZCBwb2ludHMganVzdCBwYXN0IGl0cyBlbmQuCi0gIGZpbGxzIGluIGZvcm1hdCB3aXRoIHRoZSBwYXJzZWQgaW5mb3JtYXRpb24uCi0gIHJldHVybnMgMSBvbiBzdWNjZXNzLCAwIG9uIGZhaWx1cmUuCi0gIGlmIGZhaWx1cmUsIHNldHMgdGhlIGV4Y2VwdGlvbgotKi8KLXN0YXRpYyBpbnQKLXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBkZWZhdWx0X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBkZWZhdWx0X2FsaWduKQotewotICAgIFNUUklOR0xJQl9DSEFSICpwdHIgPSBmb3JtYXRfc3BlYzsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqZW5kID0gZm9ybWF0X3NwZWMgKyBmb3JtYXRfc3BlY19sZW47Ci0KLSAgICAvKiBlbmQtcHRyIGlzIHVzZWQgdGhyb3VnaG91dCB0aGlzIGNvZGUgdG8gc3BlY2lmeSB0aGUgbGVuZ3RoIG9mCi0gICAgICAgdGhlIGlucHV0IHN0cmluZyAqLwotCi0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBpbnQgYWxpZ25fc3BlY2lmaWVkID0gMDsKLQotICAgIGZvcm1hdC0+ZmlsbF9jaGFyID0gJ1wwJzsKLSAgICBmb3JtYXQtPmFsaWduID0gZGVmYXVsdF9hbGlnbjsKLSAgICBmb3JtYXQtPmFsdGVybmF0ZSA9IDA7Ci0gICAgZm9ybWF0LT5zaWduID0gJ1wwJzsKLSAgICBmb3JtYXQtPndpZHRoID0gLTE7Ci0gICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDA7Ci0gICAgZm9ybWF0LT5wcmVjaXNpb24gPSAtMTsKLSAgICBmb3JtYXQtPnR5cGUgPSBkZWZhdWx0X3R5cGU7Ci0KLSAgICAvKiBJZiB0aGUgc2Vjb25kIGNoYXIgaXMgYW4gYWxpZ25tZW50IHRva2VuLAotICAgICAgIHRoZW4gcGFyc2UgdGhlIGZpbGwgY2hhciAqLwotICAgIGlmIChlbmQtcHRyID49IDIgJiYgaXNfYWxpZ25tZW50X3Rva2VuKHB0clsxXSkpIHsKLSAgICAgICAgZm9ybWF0LT5hbGlnbiA9IHB0clsxXTsKLSAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPSBwdHJbMF07Ci0gICAgICAgIGFsaWduX3NwZWNpZmllZCA9IDE7Ci0gICAgICAgIHB0ciArPSAyOwotICAgIH0KLSAgICBlbHNlIGlmIChlbmQtcHRyID49IDEgJiYgaXNfYWxpZ25tZW50X3Rva2VuKHB0clswXSkpIHsKLSAgICAgICAgZm9ybWF0LT5hbGlnbiA9IHB0clswXTsKLSAgICAgICAgYWxpZ25fc3BlY2lmaWVkID0gMTsKLSAgICAgICAgKytwdHI7Ci0gICAgfQotCi0gICAgLyogUGFyc2UgdGhlIHZhcmlvdXMgc2lnbiBvcHRpb25zICovCi0gICAgaWYgKGVuZC1wdHIgPj0gMSAmJiBpc19zaWduX2VsZW1lbnQocHRyWzBdKSkgewotICAgICAgICBmb3JtYXQtPnNpZ24gPSBwdHJbMF07Ci0gICAgICAgICsrcHRyOwotICAgIH0KLQotICAgIC8qIElmIHRoZSBuZXh0IGNoYXJhY3RlciBpcyAjLCB3ZSdyZSBpbiBhbHRlcm5hdGUgbW9kZS4gIFRoaXMgb25seQotICAgICAgIGFwcGxpZXMgdG8gaW50ZWdlcnMuICovCi0gICAgaWYgKGVuZC1wdHIgPj0gMSAmJiBwdHJbMF0gPT0gJyMnKSB7Ci0gICAgICAgIGZvcm1hdC0+YWx0ZXJuYXRlID0gMTsKLSAgICAgICAgKytwdHI7Ci0gICAgfQotCi0gICAgLyogVGhlIHNwZWNpYWwgY2FzZSBmb3IgMC1wYWRkaW5nIChiYWNrd2FyZHMgY29tcGF0KSAqLwotICAgIGlmIChmb3JtYXQtPmZpbGxfY2hhciA9PSAnXDAnICYmIGVuZC1wdHIgPj0gMSAmJiBwdHJbMF0gPT0gJzAnKSB7Ci0gICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyID0gJzAnOwotICAgICAgICBpZiAoIWFsaWduX3NwZWNpZmllZCkgewotICAgICAgICAgICAgZm9ybWF0LT5hbGlnbiA9ICc9JzsKLSAgICAgICAgfQotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICBjb25zdW1lZCA9IGdldF9pbnRlZ2VyKCZwdHIsIGVuZCwgJmZvcm1hdC0+d2lkdGgpOwotICAgIGlmIChjb25zdW1lZCA9PSAtMSkKLSAgICAgICAgLyogT3ZlcmZsb3cgZXJyb3IuIEV4Y2VwdGlvbiBhbHJlYWR5IHNldC4gKi8KLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvKiBJZiBjb25zdW1lZCBpcyAwLCB3ZSBkaWRuJ3QgY29uc3VtZSBhbnkgY2hhcmFjdGVycyBmb3IgdGhlCi0gICAgICAgd2lkdGguIEluIHRoYXQgY2FzZSwgcmVzZXQgdGhlIHdpZHRoIHRvIC0xLCBiZWNhdXNlCi0gICAgICAgZ2V0X2ludGVnZXIoKSB3aWxsIGhhdmUgc2V0IGl0IHRvIHplcm8uIC0xIGlzIGhvdyB3ZSByZWNvcmQKLSAgICAgICB0aGF0IHRoZSB3aWR0aCB3YXNuJ3Qgc3BlY2lmaWVkLiAqLwotICAgIGlmIChjb25zdW1lZCA9PSAwKQotICAgICAgICBmb3JtYXQtPndpZHRoID0gLTE7Ci0KLSAgICAvKiBDb21tYSBzaWduaWZpZXMgYWRkIHRob3VzYW5kcyBzZXBhcmF0b3JzICovCi0gICAgaWYgKGVuZC1wdHIgJiYgcHRyWzBdID09ICcsJykgewotICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMTsKLSAgICAgICAgKytwdHI7Ci0gICAgfQotCi0gICAgLyogUGFyc2UgZmllbGQgcHJlY2lzaW9uICovCi0gICAgaWYgKGVuZC1wdHIgJiYgcHRyWzBdID09ICcuJykgewotICAgICAgICArK3B0cjsKLQotICAgICAgICBjb25zdW1lZCA9IGdldF9pbnRlZ2VyKCZwdHIsIGVuZCwgJmZvcm1hdC0+cHJlY2lzaW9uKTsKLSAgICAgICAgaWYgKGNvbnN1bWVkID09IC0xKQotICAgICAgICAgICAgLyogT3ZlcmZsb3cgZXJyb3IuIEV4Y2VwdGlvbiBhbHJlYWR5IHNldC4gKi8KLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIC8qIE5vdCBoYXZpbmcgYSBwcmVjaXNpb24gYWZ0ZXIgYSBkb3QgaXMgYW4gZXJyb3IuICovCi0gICAgICAgIGlmIChjb25zdW1lZCA9PSAwKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRm9ybWF0IHNwZWNpZmllciBtaXNzaW5nIHByZWNpc2lvbiIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgIH0KLQotICAgIC8qIEZpbmFsbHksIHBhcnNlIHRoZSB0eXBlIGZpZWxkLiAqLwotCi0gICAgaWYgKGVuZC1wdHIgPiAxKSB7Ci0gICAgICAgIC8qIE1vcmUgdGhhbiBvbmUgY2hhciByZW1haW4sIGludmFsaWQgY29udmVyc2lvbiBzcGVjLiAqLwotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgY29udmVyc2lvbiBzcGVjaWZpY2F0aW9uIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChlbmQtcHRyID09IDEpIHsKLSAgICAgICAgZm9ybWF0LT50eXBlID0gcHRyWzBdOwotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICAvKiBEbyBhcyBtdWNoIHZhbGlkYXRpbmcgYXMgd2UgY2FuLCBqdXN0IGJ5IGxvb2tpbmcgYXQgdGhlIGZvcm1hdAotICAgICAgIHNwZWNpZmllci4gIERvIG5vdCB0YWtlIGludG8gYWNjb3VudCB3aGF0IHR5cGUgb2YgZm9ybWF0dGluZwotICAgICAgIHdlJ3JlIGRvaW5nIChpbnQsIGZsb2F0LCBzdHJpbmcpLiAqLwotCi0gICAgaWYgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMpIHsKLSAgICAgICAgc3dpdGNoIChmb3JtYXQtPnR5cGUpIHsKLSAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgIGNhc2UgJ2UnOgotICAgICAgICBjYXNlICdmJzoKLSAgICAgICAgY2FzZSAnZyc6Ci0gICAgICAgIGNhc2UgJ0UnOgotICAgICAgICBjYXNlICdHJzoKLSAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgIGNhc2UgJ0YnOgotICAgICAgICBjYXNlICdcMCc6Ci0gICAgICAgICAgICAvKiBUaGVzZSBhcmUgYWxsb3dlZC4gU2VlIFBFUCAzNzguKi8KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaW52YWxpZF9jb21tYV90eXBlKGZvcm1hdC0+dHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiAxOwotfQotCi0vKiBDYWxjdWxhdGUgdGhlIHBhZGRpbmcgbmVlZGVkLiAqLwotc3RhdGljIHZvaWQKLWNhbGNfcGFkZGluZyhQeV9zc2l6ZV90IG5jaGFycywgUHlfc3NpemVfdCB3aWR0aCwgU1RSSU5HTElCX0NIQVIgYWxpZ24sCi0gICAgICAgICAgICAgUHlfc3NpemVfdCAqbl9scGFkZGluZywgUHlfc3NpemVfdCAqbl9ycGFkZGluZywKLSAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX3RvdGFsKQotewotICAgIGlmICh3aWR0aCA+PSAwKSB7Ci0gICAgICAgIGlmIChuY2hhcnMgPiB3aWR0aCkKLSAgICAgICAgICAgICpuX3RvdGFsID0gbmNoYXJzOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqbl90b3RhbCA9IHdpZHRoOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogbm90IHNwZWNpZmllZCwgdXNlIGFsbCBvZiB0aGUgY2hhcnMgYW5kIG5vIG1vcmUgKi8KLSAgICAgICAgKm5fdG90YWwgPSBuY2hhcnM7Ci0gICAgfQotCi0gICAgLyogRmlndXJlIG91dCBob3cgbXVjaCBsZWFkaW5nIHNwYWNlIHdlIG5lZWQsIGJhc2VkIG9uIHRoZQotICAgICAgIGFsaWduaW5nICovCi0gICAgaWYgKGFsaWduID09ICc+JykKLSAgICAgICAgKm5fbHBhZGRpbmcgPSAqbl90b3RhbCAtIG5jaGFyczsKLSAgICBlbHNlIGlmIChhbGlnbiA9PSAnXicpCi0gICAgICAgICpuX2xwYWRkaW5nID0gKCpuX3RvdGFsIC0gbmNoYXJzKSAvIDI7Ci0gICAgZWxzZSBpZiAoYWxpZ24gPT0gJzwnIHx8IGFsaWduID09ICc9JykKLSAgICAgICAgKm5fbHBhZGRpbmcgPSAwOwotICAgIGVsc2UgewotICAgICAgICAvKiBXZSBzaG91bGQgbmV2ZXIgaGF2ZSBhbiB1bnNwZWNpZmllZCBhbGlnbm1lbnQuICovCi0gICAgICAgICpuX2xwYWRkaW5nID0gMDsKLSAgICAgICAgYXNzZXJ0KDApOwotICAgIH0KLQotICAgICpuX3JwYWRkaW5nID0gKm5fdG90YWwgLSBuY2hhcnMgLSAqbl9scGFkZGluZzsKLX0KLQotLyogRG8gdGhlIHBhZGRpbmcsIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBjYWxsZXItc3VwcGxpZWQKLSAgIGNvbnRlbnQgZ29lcy4gKi8KLXN0YXRpYyBTVFJJTkdMSUJfQ0hBUiAqCi1maWxsX3BhZGRpbmcoU1RSSU5HTElCX0NIQVIgKnAsIFB5X3NzaXplX3QgbmNoYXJzLCBTVFJJTkdMSUJfQ0hBUiBmaWxsX2NoYXIsCi0gICAgICAgICAgICAgUHlfc3NpemVfdCBuX2xwYWRkaW5nLCBQeV9zc2l6ZV90IG5fcnBhZGRpbmcpCi17Ci0gICAgLyogUGFkIG9uIGxlZnQuICovCi0gICAgaWYgKG5fbHBhZGRpbmcpCi0gICAgICAgIFNUUklOR0xJQl9GSUxMKHAsIGZpbGxfY2hhciwgbl9scGFkZGluZyk7Ci0KLSAgICAvKiBQYWQgb24gcmlnaHQuICovCi0gICAgaWYgKG5fcnBhZGRpbmcpCi0gICAgICAgIFNUUklOR0xJQl9GSUxMKHAgKyBuY2hhcnMgKyBuX2xwYWRkaW5nLCBmaWxsX2NoYXIsIG5fcnBhZGRpbmcpOwotCi0gICAgLyogUG9pbnRlciB0byB0aGUgdXNlciBjb250ZW50LiAqLwotICAgIHJldHVybiBwICsgbl9scGFkZGluZzsKLX0KLQotI2lmIGRlZmluZWQgRk9STUFUX0ZMT0FUIHx8IGRlZmluZWQgRk9STUFUX0xPTkcgfHwgZGVmaW5lZCBGT1JNQVRfQ09NUExFWAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBjb21tb24gcm91dGluZXMgZm9yIG51bWVyaWMgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiBMb2NhbGUgdHlwZSBjb2Rlcy4gKi8KLSNkZWZpbmUgTFRfQ1VSUkVOVF9MT0NBTEUgMAotI2RlZmluZSBMVF9ERUZBVUxUX0xPQ0FMRSAxCi0jZGVmaW5lIExUX05PX0xPQ0FMRSAyCi0KLS8qIExvY2FsZSBpbmZvIG5lZWRlZCBmb3IgZm9ybWF0dGluZyBpbnRlZ2VycyBhbmQgdGhlIHBhcnQgb2YgZmxvYXRzCi0gICBiZWZvcmUgYW5kIGluY2x1ZGluZyB0aGUgZGVjaW1hbC4gTm90ZSB0aGF0IGxvY2FsZXMgb25seSBzdXBwb3J0Ci0gICA4LWJpdCBjaGFycywgbm90IHVuaWNvZGUuICovCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgY2hhciAqZGVjaW1hbF9wb2ludDsKLSAgICBjaGFyICp0aG91c2FuZHNfc2VwOwotICAgIGNoYXIgKmdyb3VwaW5nOwotfSBMb2NhbGVJbmZvOwotCi0vKiBkZXNjcmliZXMgdGhlIGxheW91dCBmb3IgYW4gaW50ZWdlciwgc2VlIHRoZSBjb21tZW50IGluCi0gICBjYWxjX251bWJlcl93aWR0aHMoKSBmb3IgZGV0YWlscyAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5X3NzaXplX3Qgbl9scGFkZGluZzsKLSAgICBQeV9zc2l6ZV90IG5fcHJlZml4OwotICAgIFB5X3NzaXplX3Qgbl9zcGFkZGluZzsKLSAgICBQeV9zc2l6ZV90IG5fcnBhZGRpbmc7Ci0gICAgY2hhciBzaWduOwotICAgIFB5X3NzaXplX3Qgbl9zaWduOyAgICAgIC8qIG51bWJlciBvZiBkaWdpdHMgbmVlZGVkIGZvciBzaWduICgwLzEpICovCi0gICAgUHlfc3NpemVfdCBuX2dyb3VwZWRfZGlnaXRzOyAvKiBTcGFjZSB0YWtlbiB1cCBieSB0aGUgZGlnaXRzLCBpbmNsdWRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBncm91cGluZyBjaGFycy4gKi8KLSAgICBQeV9zc2l6ZV90IG5fZGVjaW1hbDsgICAvKiAwIGlmIG9ubHkgYW4gaW50ZWdlciAqLwotICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXI7IC8qIERpZ2l0cyBpbiBkZWNpbWFsIGFuZC9vciBleHBvbmVudCBwYXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGluZyB0aGUgZGVjaW1hbCBpdHNlbGYsIGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudC4gKi8KLQotICAgIC8qIFRoZXNlIDIgYXJlIG5vdCB0aGUgd2lkdGhzIG9mIGZpZWxkcywgYnV0IGFyZSBuZWVkZWQgYnkKLSAgICAgICBTVFJJTkdMSUJfR1JPVVBJTkcuICovCi0gICAgUHlfc3NpemVfdCBuX2RpZ2l0czsgICAgLyogVGhlIG51bWJlciBvZiBkaWdpdHMgYmVmb3JlIGEgZGVjaW1hbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGV4cG9uZW50LiAqLwotICAgIFB5X3NzaXplX3Qgbl9taW5fd2lkdGg7IC8qIFRoZSBtaW5fd2lkdGggd2UgdXNlZCB3aGVuIHdlIGNvbXB1dGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5fZ3JvdXBlZF9kaWdpdHMgd2lkdGguICovCi19IE51bWJlckZpZWxkV2lkdGhzOwotCi0KLS8qIEdpdmVuIGEgbnVtYmVyIG9mIHRoZSBmb3JtOgotICAgZGlnaXRzW3JlbWFpbmRlcl0KLSAgIHdoZXJlIHB0ciBwb2ludHMgdG8gdGhlIHN0YXJ0IGFuZCBlbmQgcG9pbnRzIHRvIHRoZSBlbmQsIGZpbmQgd2hlcmUKLSAgICB0aGUgaW50ZWdlciBwYXJ0IGVuZHMuIFRoaXMgY291bGQgYmUgYSBkZWNpbWFsLCBhbiBleHBvbmVudCwgYm90aCwKLSAgICBvciBuZWl0aGVyLgotICAgSWYgYSBkZWNpbWFsIHBvaW50IGlzIHByZXNlbnQsIHNldCAqaGFzX2RlY2ltYWwgYW5kIGluY3JlbWVudAotICAgIHJlbWFpbmRlciBiZXlvbmQgaXQuCi0gICBSZXN1bHRzIGFyZSB1bmRlZmluZWQgKGJ1dCBzaG91bGRuJ3QgY3Jhc2gpIGZvciBpbXByb3Blcmx5Ci0gICAgZm9ybWF0dGVkIHN0cmluZ3MuCi0qLwotc3RhdGljIHZvaWQKLXBhcnNlX251bWJlcihTVFJJTkdMSUJfQ0hBUiAqcHRyLCBQeV9zc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX3JlbWFpbmRlciwgaW50ICpoYXNfZGVjaW1hbCkKLXsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqZW5kID0gcHRyICsgbGVuOwotICAgIFNUUklOR0xJQl9DSEFSICpyZW1haW5kZXI7Ci0KLSAgICB3aGlsZSAocHRyPGVuZCAmJiBpc2RpZ2l0KCpwdHIpKQotICAgICAgICArK3B0cjsKLSAgICByZW1haW5kZXIgPSBwdHI7Ci0KLSAgICAvKiBEb2VzIHJlbWFpbmRlciBzdGFydCB3aXRoIGEgZGVjaW1hbCBwb2ludD8gKi8KLSAgICAqaGFzX2RlY2ltYWwgPSBwdHI8ZW5kICYmICpyZW1haW5kZXIgPT0gJy4nOwotCi0gICAgLyogU2tpcCB0aGUgZGVjaW1hbCBwb2ludC4gKi8KLSAgICBpZiAoKmhhc19kZWNpbWFsKQotICAgICAgICByZW1haW5kZXIrKzsKLQotICAgICpuX3JlbWFpbmRlciA9IGVuZCAtIHJlbWFpbmRlcjsKLX0KLQotLyogbm90IGFsbCBmaWVsZHMgb2YgZm9ybWF0IGFyZSB1c2VkLiAgZm9yIGV4YW1wbGUsIHByZWNpc2lvbiBpcwotICAgdW51c2VkLiAgc2hvdWxkIHRoaXMgdGFrZSBkaXNjcmV0ZSBwYXJhbXMgaW4gb3JkZXIgdG8gYmUgbW9yZSBjbGVhcgotICAgYWJvdXQgd2hhdCBpdCBkb2VzPyAgb3IgaXMgcGFzc2luZyBhIHNpbmdsZSBmb3JtYXQgcGFyYW1ldGVyIGVhc2llcgotICAgYW5kIG1vcmUgZWZmaWNpZW50IGVub3VnaCB0byBqdXN0aWZ5IGEgbGl0dGxlIG9iZnVzY2F0aW9uPyAqLwotc3RhdGljIFB5X3NzaXplX3QKLWNhbGNfbnVtYmVyX3dpZHRocyhOdW1iZXJGaWVsZFdpZHRocyAqc3BlYywgUHlfc3NpemVfdCBuX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiBzaWduX2NoYXIsIFNUUklOR0xJQl9DSEFSICpudW1iZXIsCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX251bWJlciwgUHlfc3NpemVfdCBuX3JlbWFpbmRlciwKLSAgICAgICAgICAgICAgICAgICBpbnQgaGFzX2RlY2ltYWwsIGNvbnN0IExvY2FsZUluZm8gKmxvY2FsZSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCkKLXsKLSAgICBQeV9zc2l6ZV90IG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nOwotICAgIFB5X3NzaXplX3Qgbl9wYWRkaW5nOwotCi0gICAgc3BlYy0+bl9kaWdpdHMgPSBuX251bWJlciAtIG5fcmVtYWluZGVyIC0gKGhhc19kZWNpbWFsPzE6MCk7Ci0gICAgc3BlYy0+bl9scGFkZGluZyA9IDA7Ci0gICAgc3BlYy0+bl9wcmVmaXggPSBuX3ByZWZpeDsKLSAgICBzcGVjLT5uX2RlY2ltYWwgPSBoYXNfZGVjaW1hbCA/IHN0cmxlbihsb2NhbGUtPmRlY2ltYWxfcG9pbnQpIDogMDsKLSAgICBzcGVjLT5uX3JlbWFpbmRlciA9IG5fcmVtYWluZGVyOwotICAgIHNwZWMtPm5fc3BhZGRpbmcgPSAwOwotICAgIHNwZWMtPm5fcnBhZGRpbmcgPSAwOwotICAgIHNwZWMtPnNpZ24gPSAnXDAnOwotICAgIHNwZWMtPm5fc2lnbiA9IDA7Ci0KLSAgICAvKiB0aGUgb3V0cHV0IHdpbGwgbG9vayBsaWtlOgotICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICB8IDxscGFkZGluZz4gPHNpZ24+IDxwcmVmaXg+IDxzcGFkZGluZz4gPGdyb3VwZWRfZGlnaXRzPiA8ZGVjaW1hbD4gPHJlbWFpbmRlcj4gPHJwYWRkaW5nPiB8Ci0gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCi0gICAgICAgc2lnbiBpcyBjb21wdXRlZCBmcm9tIGZvcm1hdC0+c2lnbiBhbmQgdGhlIGFjdHVhbAotICAgICAgIHNpZ24gb2YgdGhlIG51bWJlcgotCi0gICAgICAgcHJlZml4IGlzIGdpdmVuIChpdCdzIGZvciB0aGUgJzB4JyBwcmVmaXgpCi0KLSAgICAgICBkaWdpdHMgaXMgYWxyZWFkeSBrbm93bgotCi0gICAgICAgdGhlIHRvdGFsIHdpZHRoIGlzIGVpdGhlciBnaXZlbiwgb3IgY29tcHV0ZWQgZnJvbSB0aGUKLSAgICAgICBhY3R1YWwgZGlnaXRzCi0KLSAgICAgICBvbmx5IG9uZSBvZiBscGFkZGluZywgc3BhZGRpbmcsIGFuZCBycGFkZGluZyBjYW4gYmUgbm9uLXplcm8sCi0gICAgICAgYW5kIGl0J3MgY2FsY3VsYXRlZCBmcm9tIHRoZSB3aWR0aCBhbmQgb3RoZXIgZmllbGRzCi0gICAgKi8KLQotICAgIC8qIGNvbXB1dGUgdGhlIHZhcmlvdXMgcGFydHMgd2UncmUgZ29pbmcgdG8gd3JpdGUgKi8KLSAgICBzd2l0Y2ggKGZvcm1hdC0+c2lnbikgewotICAgIGNhc2UgJysnOgotICAgICAgICAvKiBhbHdheXMgcHV0IGEgKyBvciAtICovCi0gICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7Ci0gICAgICAgIHNwZWMtPnNpZ24gPSAoc2lnbl9jaGFyID09ICctJyA/ICctJyA6ICcrJyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgJyAnOgotICAgICAgICBzcGVjLT5uX3NpZ24gPSAxOwotICAgICAgICBzcGVjLT5zaWduID0gKHNpZ25fY2hhciA9PSAnLScgPyAnLScgOiAnICcpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICAvKiBOb3Qgc3BlY2lmaWVkLCBvciB0aGUgZGVmYXVsdCAoLSkgKi8KLSAgICAgICAgaWYgKHNpZ25fY2hhciA9PSAnLScpIHsKLSAgICAgICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7Ci0gICAgICAgICAgICBzcGVjLT5zaWduID0gJy0nOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogVGhlIG51bWJlciBvZiBjaGFycyB1c2VkIGZvciBub24tZGlnaXRzIGFuZCBub24tcGFkZGluZy4gKi8KLSAgICBuX25vbl9kaWdpdF9ub25fcGFkZGluZyA9IHNwZWMtPm5fc2lnbiArIHNwZWMtPm5fcHJlZml4ICsgc3BlYy0+bl9kZWNpbWFsICsKLSAgICAgICAgc3BlYy0+bl9yZW1haW5kZXI7Ci0KLSAgICAvKiBtaW5fd2lkdGggY2FuIGdvIG5lZ2F0aXZlLCB0aGF0J3Mgb2theS4gZm9ybWF0LT53aWR0aCA9PSAtMSBtZWFucwotICAgICAgIHdlIGRvbid0IGNhcmUuICovCi0gICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICcwJyAmJiBmb3JtYXQtPmFsaWduID09ICc9JykKLSAgICAgICAgc3BlYy0+bl9taW5fd2lkdGggPSBmb3JtYXQtPndpZHRoIC0gbl9ub25fZGlnaXRfbm9uX3BhZGRpbmc7Ci0gICAgZWxzZQotICAgICAgICBzcGVjLT5uX21pbl93aWR0aCA9IDA7Ci0KLSAgICBpZiAoc3BlYy0+bl9kaWdpdHMgPT0gMCkKLSAgICAgICAgLyogVGhpcyBjYXNlIG9ubHkgb2NjdXJzIHdoZW4gdXNpbmcgJ2MnIGZvcm1hdHRpbmcsIHdlIG5lZWQKLSAgICAgICAgICAgdG8gc3BlY2lhbCBjYXNlIGl0IGJlY2F1c2UgdGhlIGdyb3VwaW5nIGNvZGUgYWx3YXlzIHdhbnRzCi0gICAgICAgICAgIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGNoYXJhY3Rlci4gKi8KLSAgICAgICAgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyA9IDA7Ci0gICAgZWxzZQotICAgICAgICBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzID0gU1RSSU5HTElCX0dST1VQSU5HKE5VTEwsIDAsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy0+bl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy0+bl9taW5fd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLT5ncm91cGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUtPnRob3VzYW5kc19zZXApOwotCi0gICAgLyogR2l2ZW4gdGhlIGRlc2lyZWQgd2lkdGggYW5kIHRoZSB0b3RhbCBvZiBkaWdpdCBhbmQgbm9uLWRpZ2l0Ci0gICAgICAgc3BhY2Ugd2UgY29uc3VtZSwgc2VlIGlmIHdlIG5lZWQgYW55IHBhZGRpbmcuIGZvcm1hdC0+d2lkdGggY2FuCi0gICAgICAgYmUgbmVnYXRpdmUgKG1lYW5pbmcgbm8gcGFkZGluZyksIGJ1dCB0aGlzIGNvZGUgc3RpbGwgd29ya3MgaW4KLSAgICAgICB0aGF0IGNhc2UuICovCi0gICAgbl9wYWRkaW5nID0gZm9ybWF0LT53aWR0aCAtCi0gICAgICAgICAgICAgICAgICAgICAgICAobl9ub25fZGlnaXRfbm9uX3BhZGRpbmcgKyBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzKTsKLSAgICBpZiAobl9wYWRkaW5nID4gMCkgewotICAgICAgICAvKiBTb21lIHBhZGRpbmcgaXMgbmVlZGVkLiBEZXRlcm1pbmUgaWYgaXQncyBsZWZ0LCBzcGFjZSwgb3IgcmlnaHQuICovCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0LT5hbGlnbikgewotICAgICAgICBjYXNlICc8JzoKLSAgICAgICAgICAgIHNwZWMtPm5fcnBhZGRpbmcgPSBuX3BhZGRpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnXic6Ci0gICAgICAgICAgICBzcGVjLT5uX2xwYWRkaW5nID0gbl9wYWRkaW5nIC8gMjsKLSAgICAgICAgICAgIHNwZWMtPm5fcnBhZGRpbmcgPSBuX3BhZGRpbmcgLSBzcGVjLT5uX2xwYWRkaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJz0nOgotICAgICAgICAgICAgc3BlYy0+bl9zcGFkZGluZyA9IG5fcGFkZGluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICc+JzoKLSAgICAgICAgICAgIHNwZWMtPm5fbHBhZGRpbmcgPSBuX3BhZGRpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIC8qIFNob3VsZG4ndCBnZXQgaGVyZSwgYnV0IHRyZWF0IGl0IGFzICc+JyAqLwotICAgICAgICAgICAgc3BlYy0+bl9scGFkZGluZyA9IG5fcGFkZGluZzsKLSAgICAgICAgICAgIGFzc2VydCgwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBzcGVjLT5uX2xwYWRkaW5nICsgc3BlYy0+bl9zaWduICsgc3BlYy0+bl9wcmVmaXggKwotICAgICAgICBzcGVjLT5uX3NwYWRkaW5nICsgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyArIHNwZWMtPm5fZGVjaW1hbCArCi0gICAgICAgIHNwZWMtPm5fcmVtYWluZGVyICsgc3BlYy0+bl9ycGFkZGluZzsKLX0KLQotLyogRmlsbCBpbiB0aGUgZGlnaXQgcGFydHMgb2YgYSBudW1iZXJzJ3Mgc3RyaW5nIHJlcHJlc2VudGF0aW9uLAotICAgYXMgZGV0ZXJtaW5lZCBpbiBjYWxjX251bWJlcl93aWR0aHMoKS4KLSAgIE5vIGVycm9yIGNoZWNraW5nLCBzaW5jZSB3ZSBrbm93IHRoZSBidWZmZXIgaXMgdGhlIGNvcnJlY3Qgc2l6ZS4gKi8KLXN0YXRpYyB2b2lkCi1maWxsX251bWJlcihTVFJJTkdMSUJfQ0hBUiAqYnVmLCBjb25zdCBOdW1iZXJGaWVsZFdpZHRocyAqc3BlYywKLSAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpkaWdpdHMsIFB5X3NzaXplX3Qgbl9kaWdpdHMsCi0gICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqcHJlZml4LCBTVFJJTkdMSUJfQ0hBUiBmaWxsX2NoYXIsCi0gICAgICAgICAgICBMb2NhbGVJbmZvICpsb2NhbGUsIGludCB0b3VwcGVyKQotewotICAgIC8qIFVzZWQgdG8ga2VlcCB0cmFjayBvZiBkaWdpdHMsIGRlY2ltYWwsIGFuZCByZW1haW5kZXIuICovCi0gICAgU1RSSU5HTElCX0NIQVIgKnAgPSBkaWdpdHM7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgUHlfc3NpemVfdCByOwotI2VuZGlmCi0KLSAgICBpZiAoc3BlYy0+bl9scGFkZGluZykgewotICAgICAgICBTVFJJTkdMSUJfRklMTChidWYsIGZpbGxfY2hhciwgc3BlYy0+bl9scGFkZGluZyk7Ci0gICAgICAgIGJ1ZiArPSBzcGVjLT5uX2xwYWRkaW5nOwotICAgIH0KLSAgICBpZiAoc3BlYy0+bl9zaWduID09IDEpIHsKLSAgICAgICAgKmJ1ZisrID0gc3BlYy0+c2lnbjsKLSAgICB9Ci0gICAgaWYgKHNwZWMtPm5fcHJlZml4KSB7Ci0gICAgICAgIG1lbW1vdmUoYnVmLAotICAgICAgICAgICAgICAgIHByZWZpeCwKLSAgICAgICAgICAgICAgICBzcGVjLT5uX3ByZWZpeCAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICBpZiAodG91cHBlcikgewotICAgICAgICAgICAgUHlfc3NpemVfdCB0OwotICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IHNwZWMtPm5fcHJlZml4OyArK3QpCi0gICAgICAgICAgICAgICAgYnVmW3RdID0gU1RSSU5HTElCX1RPVVBQRVIoYnVmW3RdKTsKLSAgICAgICAgfQotICAgICAgICBidWYgKz0gc3BlYy0+bl9wcmVmaXg7Ci0gICAgfQotICAgIGlmIChzcGVjLT5uX3NwYWRkaW5nKSB7Ci0gICAgICAgIFNUUklOR0xJQl9GSUxMKGJ1ZiwgZmlsbF9jaGFyLCBzcGVjLT5uX3NwYWRkaW5nKTsKLSAgICAgICAgYnVmICs9IHNwZWMtPm5fc3BhZGRpbmc7Ci0gICAgfQotCi0gICAgLyogT25seSBmb3IgdHlwZSAnYycgc3BlY2lhbCBjYXNlLCBpdCBoYXMgbm8gZGlnaXRzLiAqLwotICAgIGlmIChzcGVjLT5uX2RpZ2l0cyAhPSAwKSB7Ci0gICAgICAgIC8qIEZpbGwgdGhlIGRpZ2l0cyB3aXRoIEluc2VydFRob3VzYW5kc0dyb3VwaW5nLiAqLwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgciA9Ci0jZW5kaWYKLSAgICAgICAgICAgIFNUUklOR0xJQl9HUk9VUElORyhidWYsIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMsIGRpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLT5uX2RpZ2l0cywgc3BlYy0+bl9taW5fd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLT5ncm91cGluZywgbG9jYWxlLT50aG91c2FuZHNfc2VwKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGFzc2VydChyID09IHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMpOwotI2VuZGlmCi0gICAgICAgIHAgKz0gc3BlYy0+bl9kaWdpdHM7Ci0gICAgfQotICAgIGlmICh0b3VwcGVyKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgdDsKLSAgICAgICAgZm9yICh0ID0gMDsgdCA8IHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHM7ICsrdCkKLSAgICAgICAgICAgIGJ1Zlt0XSA9IFNUUklOR0xJQl9UT1VQUEVSKGJ1Zlt0XSk7Ci0gICAgfQotICAgIGJ1ZiArPSBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzOwotCi0gICAgaWYgKHNwZWMtPm5fZGVjaW1hbCkgewotICAgICAgICBQeV9zc2l6ZV90IHQ7Ci0gICAgICAgIGZvciAodCA9IDA7IHQgPCBzcGVjLT5uX2RlY2ltYWw7ICsrdCkKLSAgICAgICAgICAgIGJ1Zlt0XSA9IGxvY2FsZS0+ZGVjaW1hbF9wb2ludFt0XTsKLSAgICAgICAgYnVmICs9IHNwZWMtPm5fZGVjaW1hbDsKLSAgICAgICAgcCArPSAxOwotICAgIH0KLQotICAgIGlmIChzcGVjLT5uX3JlbWFpbmRlcikgewotICAgICAgICBtZW1jcHkoYnVmLCBwLCBzcGVjLT5uX3JlbWFpbmRlciAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICBidWYgKz0gc3BlYy0+bl9yZW1haW5kZXI7Ci0gICAgICAgIHAgKz0gc3BlYy0+bl9yZW1haW5kZXI7Ci0gICAgfQotCi0gICAgaWYgKHNwZWMtPm5fcnBhZGRpbmcpIHsKLSAgICAgICAgU1RSSU5HTElCX0ZJTEwoYnVmLCBmaWxsX2NoYXIsIHNwZWMtPm5fcnBhZGRpbmcpOwotICAgICAgICBidWYgKz0gc3BlYy0+bl9ycGFkZGluZzsKLSAgICB9Ci19Ci0KLXN0YXRpYyBjaGFyIG5vX2dyb3VwaW5nWzFdID0ge0NIQVJfTUFYfTsKLQotLyogRmluZCB0aGUgZGVjaW1hbCBwb2ludCBjaGFyYWN0ZXIocz8pLCB0aG91c2FuZHNfc2VwYXJhdG9yKHM/KSwgYW5kCi0gICBncm91cGluZyBkZXNjcmlwdGlvbiwgZWl0aGVyIGZvciB0aGUgY3VycmVudCBsb2NhbGUgaWYgdHlwZSBpcwotICAgTFRfQ1VSUkVOVF9MT0NBTEUsIGEgaGFyZC1jb2RlZCBsb2NhbGUgaWYgTFRfREVGQVVMVF9MT0NBTEUsIG9yCi0gICBub25lIGlmIExUX05PX0xPQ0FMRS4gKi8KLXN0YXRpYyB2b2lkCi1nZXRfbG9jYWxlX2luZm8oaW50IHR5cGUsIExvY2FsZUluZm8gKmxvY2FsZV9pbmZvKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgTFRfQ1VSUkVOVF9MT0NBTEU6IHsKLSAgICAgICAgc3RydWN0IGxjb252ICpsb2NhbGVfZGF0YSA9IGxvY2FsZWNvbnYoKTsKLSAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSBsb2NhbGVfZGF0YS0+ZGVjaW1hbF9wb2ludDsKLSAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSBsb2NhbGVfZGF0YS0+dGhvdXNhbmRzX3NlcDsKLSAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gbG9jYWxlX2RhdGEtPmdyb3VwaW5nOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBMVF9ERUZBVUxUX0xPQ0FMRToKLSAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSAiLiI7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gIiwiOwotICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSAiXDMiOyAvKiBHcm91cCBldmVyeSAzIGNoYXJhY3RlcnMuICBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltcGxpY2l0KSB0cmFpbGluZyAwIG1lYW5zIHJlcGVhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZWx5LiAqLwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExUX05PX0xPQ0FMRToKLSAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSAiLiI7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gIiI7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9IG5vX2dyb3VwaW5nOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBhc3NlcnQoMCk7Ci0gICAgfQotfQotCi0jZW5kaWYgLyogRk9STUFUX0ZMT0FUIHx8IEZPUk1BVF9MT05HIHx8IEZPUk1BVF9DT01QTEVYICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogc3RyaW5nIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdF9zdHJpbmdfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLCBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCkKLXsKLSAgICBQeV9zc2l6ZV90IGxwYWQ7Ci0gICAgUHlfc3NpemVfdCBycGFkOwotICAgIFB5X3NzaXplX3QgdG90YWw7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnA7Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBTVFJJTkdMSUJfTEVOKHZhbHVlKTsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIC8qIHNpZ24gaXMgbm90IGFsbG93ZWQgb24gc3RyaW5ncyAqLwotICAgIGlmIChmb3JtYXQtPnNpZ24gIT0gJ1wwJykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJTaWduIG5vdCBhbGxvd2VkIGluIHN0cmluZyBmb3JtYXQgc3BlY2lmaWVyIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBhbHRlcm5hdGUgaXMgbm90IGFsbG93ZWQgb24gc3RyaW5ncyAqLwotICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJBbHRlcm5hdGUgZm9ybSAoIykgbm90IGFsbG93ZWQgaW4gc3RyaW5nIGZvcm1hdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVyIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiAnPScgYWxpZ25tZW50IG5vdCBhbGxvd2VkIG9uIHN0cmluZ3MgKi8KLSAgICBpZiAoZm9ybWF0LT5hbGlnbiA9PSAnPScpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiJz0nIGFsaWdubWVudCBub3QgYWxsb3dlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW4gc3RyaW5nIGZvcm1hdCBzcGVjaWZpZXIiKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIGlmIHByZWNpc2lvbiBpcyBzcGVjaWZpZWQsIG91dHB1dCBubyBtb3JlIHRoYXQgZm9ybWF0LnByZWNpc2lvbgotICAgICAgIGNoYXJhY3RlcnMgKi8KLSAgICBpZiAoZm9ybWF0LT5wcmVjaXNpb24gPj0gMCAmJiBsZW4gPj0gZm9ybWF0LT5wcmVjaXNpb24pIHsKLSAgICAgICAgbGVuID0gZm9ybWF0LT5wcmVjaXNpb247Ci0gICAgfQotCi0gICAgY2FsY19wYWRkaW5nKGxlbiwgZm9ybWF0LT53aWR0aCwgZm9ybWF0LT5hbGlnbiwgJmxwYWQsICZycGFkLCAmdG90YWwpOwotCi0gICAgLyogYWxsb2NhdGUgdGhlIHJlc3VsdGluZyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHRvdGFsKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIFdyaXRlIGludG8gdGhhdCBzcGFjZS4gRmlyc3QgdGhlIHBhZGRpbmcuICovCi0gICAgcCA9IGZpbGxfcGFkZGluZyhTVFJJTkdMSUJfU1RSKHJlc3VsdCksIGxlbiwKLSAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyPT0nXDAnPycgJzpmb3JtYXQtPmZpbGxfY2hhciwKLSAgICAgICAgICAgICAgICAgICAgIGxwYWQsIHJwYWQpOwotCi0gICAgLyogVGhlbiB0aGUgc291cmNlIHN0cmluZy4gKi8KLSAgICBtZW1jcHkocCwgU1RSSU5HTElCX1NUUih2YWx1ZSksIGxlbiAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotCi1kb25lOgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBsb25nIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWYgZGVmaW5lZCBGT1JNQVRfTE9ORyB8fCBkZWZpbmVkIEZPUk1BVF9JTlQKLXR5cGVkZWYgUHlPYmplY3QqCi0oKkludE9yTG9uZ1RvU3RyaW5nKShQeU9iamVjdCAqdmFsdWUsIGludCBiYXNlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdF9pbnRfb3JfbG9uZ19pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludE9yTG9uZ1RvU3RyaW5nIHRvc3RyaW5nKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp0bXAgPSBOVUxMOwotICAgIFNUUklOR0xJQl9DSEFSICpwbnVtZXJpY19jaGFyczsKLSAgICBTVFJJTkdMSUJfQ0hBUiBudW1lcmljX2NoYXI7Ci0gICAgU1RSSU5HTElCX0NIQVIgc2lnbl9jaGFyID0gJ1wwJzsKLSAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOyAgICAgICAvKiBjb3VudCBvZiBkaWdpdHMgbmVlZCBmcm9tIHRoZSBjb21wdXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyAqLwotICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXIgPSAwOyAvKiBVc2VkIG9ubHkgZm9yICdjJyBmb3JtYXR0aW5nLCB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBub24tZGlnaXRzICovCi0gICAgUHlfc3NpemVfdCBuX3ByZWZpeCA9IDA7ICAgLyogQ291bnQgb2YgcHJlZml4IGNoYXJzLCAoZS5nLiwgJzB4JykgKi8KLSAgICBQeV9zc2l6ZV90IG5fdG90YWw7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnByZWZpeCA9IE5VTEw7Ci0gICAgTnVtYmVyRmllbGRXaWR0aHMgc3BlYzsKLSAgICBsb25nIHg7Ci0KLSAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCi0gICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCi0gICAgTG9jYWxlSW5mbyBsb2NhbGU7Ci0KLSAgICAvKiBubyBwcmVjaXNpb24gYWxsb3dlZCBvbiBpbnRlZ2VycyAqLwotICAgIGlmIChmb3JtYXQtPnByZWNpc2lvbiAhPSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJQcmVjaXNpb24gbm90IGFsbG93ZWQgaW4gaW50ZWdlciBmb3JtYXQgc3BlY2lmaWVyIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBzcGVjaWFsIGNhc2UgZm9yIGNoYXJhY3RlciBmb3JtYXR0aW5nICovCi0gICAgaWYgKGZvcm1hdC0+dHlwZSA9PSAnYycpIHsKLSAgICAgICAgLyogZXJyb3IgdG8gc3BlY2lmeSBhIHNpZ24gKi8KLSAgICAgICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnXDAnKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2lnbiBub3QgYWxsb3dlZCB3aXRoIGludGVnZXIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmb3JtYXQgc3BlY2lmaWVyICdjJyIpOwotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogdGFrZW4gZnJvbSB1bmljb2Rlb2JqZWN0LmMgZm9ybWF0Y2hhcigpICovCi0gICAgICAgIC8qIEludGVnZXIgaW5wdXQgdHJ1bmNhdGVkIHRvIGEgY2hhcmFjdGVyICovCi0vKiBYWFg6IHdvbid0IHdvcmsgZm9yIGludCAqLwotICAgICAgICB4ID0gUHlMb25nX0FzTG9uZyh2YWx1ZSk7Ci0gICAgICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmICh4IDwgMCB8fCB4ID4gMHgxMGZmZmYpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIih3aWRlIFB5dGhvbiBidWlsZCkiKTsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgaWYgKHggPCAwIHx8IHggPiAweGZmZmYpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTAwMDApICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKG5hcnJvdyBQeXRob24gYnVpbGQpIik7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBudW1lcmljX2NoYXIgPSAoU1RSSU5HTElCX0NIQVIpeDsKLSAgICAgICAgcG51bWVyaWNfY2hhcnMgPSAmbnVtZXJpY19jaGFyOwotICAgICAgICBuX2RpZ2l0cyA9IDE7Ci0KLSAgICAgICAgLyogQXMgYSBzb3J0LW9mIGhhY2ssIHdlIHRlbGwgY2FsY19udW1iZXJfd2lkdGhzIHRoYXQgd2Ugb25seQotICAgICAgICAgICBoYXZlICJyZW1haW5kZXIiIGNoYXJhY3RlcnMuIGNhbGNfbnVtYmVyX3dpZHRocyB0aGlua3MKLSAgICAgICAgICAgdGhlc2UgYXJlIGNoYXJhY3RlcnMgdGhhdCBkb24ndCBnZXQgZm9ybWF0dGVkLCBvbmx5IGNvcGllZAotICAgICAgICAgICBpbnRvIHRoZSBvdXRwdXQgc3RyaW5nLiBXZSBkbyB0aGlzIGZvciAnYycgZm9ybWF0dGluZywKLSAgICAgICAgICAgYmVjYXVzZSB0aGUgY2hhcmFjdGVycyBhcmUgbGlrZWx5IHRvIGJlIG5vbi1kaWdpdHMuICovCi0gICAgICAgIG5fcmVtYWluZGVyID0gMTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGludCBiYXNlOwotICAgICAgICBpbnQgbGVhZGluZ19jaGFyc190b19za2lwID0gMDsgIC8qIE51bWJlciBvZiBjaGFyYWN0ZXJzIGFkZGVkIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlOdW1iZXJfVG9CYXNlIHRoYXQgd2Ugd2FudCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAgb3Zlci4gKi8KLQotICAgICAgICAvKiBDb21wdXRlIHRoZSBiYXNlIGFuZCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgYWRkZWQgYnkKLSAgICAgICAgICAgUHlOdW1iZXJfVG9CYXNlICovCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0LT50eXBlKSB7Ci0gICAgICAgIGNhc2UgJ2InOgotICAgICAgICAgICAgYmFzZSA9IDI7Ci0gICAgICAgICAgICBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAyOyAvKiAwYiAqLwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ28nOgotICAgICAgICAgICAgYmFzZSA9IDg7Ci0gICAgICAgICAgICBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAyOyAvKiAwbyAqLwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3gnOgotICAgICAgICBjYXNlICdYJzoKLSAgICAgICAgICAgIGJhc2UgPSAxNjsKLSAgICAgICAgICAgIGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDI7IC8qIDB4ICovCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDogIC8qIHNob3VsZG4ndCBiZSBuZWVkZWQsIGJ1dCBzdG9wcyBhIGNvbXBpbGVyIHdhcm5pbmcgKi8KLSAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgYmFzZSA9IDEwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIHByZWZpeCBjaGFycyBpcyB0aGUgc2FtZSBhcyB0aGUgbGVhZGluZwotICAgICAgICAgICBjaGFycyB0byBza2lwICovCi0gICAgICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkKLSAgICAgICAgICAgIG5fcHJlZml4ID0gbGVhZGluZ19jaGFyc190b19za2lwOwotCi0gICAgICAgIC8qIERvIHRoZSBoYXJkIHBhcnQsIGNvbnZlcnRpbmcgdG8gYSBzdHJpbmcgaW4gYSBnaXZlbiBiYXNlICovCi0gICAgICAgIHRtcCA9IHRvc3RyaW5nKHZhbHVlLCBiYXNlKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBkb25lOwotCi0gICAgICAgIHBudW1lcmljX2NoYXJzID0gU1RSSU5HTElCX1NUUih0bXApOwotICAgICAgICBuX2RpZ2l0cyA9IFNUUklOR0xJQl9MRU4odG1wKTsKLQotICAgICAgICBwcmVmaXggPSBwbnVtZXJpY19jaGFyczsKLQotICAgICAgICAvKiBSZW1lbWJlciBub3QgdG8gbW9kaWZ5IHdoYXQgcG51bWVyaWNfY2hhcnMgcG9pbnRzIHRvLiAgaXQKLSAgICAgICAgICAgbWlnaHQgYmUgaW50ZXJuZWQuICBPbmx5IG1vZGlmeSBpdCBhZnRlciB3ZSBjb3B5IGl0IGludG8gYQotICAgICAgICAgICBuZXdseSBhbGxvY2F0ZWQgb3V0cHV0IGJ1ZmZlci4gKi8KLQotICAgICAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAotICAgICAgICAgICBhbmQgc2tpcCBpdCAqLwotICAgICAgICBpZiAocG51bWVyaWNfY2hhcnNbMF0gPT0gJy0nKSB7Ci0gICAgICAgICAgICBzaWduX2NoYXIgPSBwbnVtZXJpY19jaGFyc1swXTsKLSAgICAgICAgICAgICsrcHJlZml4OwotICAgICAgICAgICAgKytsZWFkaW5nX2NoYXJzX3RvX3NraXA7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBTa2lwIG92ZXIgdGhlIGxlYWRpbmcgY2hhcnMgKDB4LCAwYiwgZXRjLikgKi8KLSAgICAgICAgbl9kaWdpdHMgLT0gbGVhZGluZ19jaGFyc190b19za2lwOwotICAgICAgICBwbnVtZXJpY19jaGFycyArPSBsZWFkaW5nX2NoYXJzX3RvX3NraXA7Ci0gICAgfQotCi0gICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLwotICAgIGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAotICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKTsKLQotICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KLSAgICBuX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZzcGVjLCBuX3ByZWZpeCwgc2lnbl9jaGFyLCBwbnVtZXJpY19jaGFycywKLSAgICAgICAgICAgICAgICAgICAgICAgbl9kaWdpdHMsIG5fcmVtYWluZGVyLCAwLCAmbG9jYWxlLCBmb3JtYXQpOwotCi0gICAgLyogQWxsb2NhdGUgdGhlIG1lbW9yeS4gKi8KLSAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIG5fdG90YWwpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiAqLwotICAgIGZpbGxfbnVtYmVyKFNUUklOR0xJQl9TVFIocmVzdWx0KSwgJnNwZWMsIHBudW1lcmljX2NoYXJzLCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICBwcmVmaXgsIGZvcm1hdC0+ZmlsbF9jaGFyID09ICdcMCcgPyAnICcgOiBmb3JtYXQtPmZpbGxfY2hhciwKLSAgICAgICAgICAgICAgICAmbG9jYWxlLCBmb3JtYXQtPnR5cGUgPT0gJ1gnKTsKLQotZG9uZToKLSAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZiAvKiBkZWZpbmVkIEZPUk1BVF9MT05HIHx8IGRlZmluZWQgRk9STUFUX0lOVCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIGZsb2F0IGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBGT1JNQVRfRkxPQVQKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotc3RhdGljIHZvaWQKLXN0cnRvdW5pY29kZShQeV9VTklDT0RFICpidWZmZXIsIGNvbnN0IGNoYXIgKmNoYXJidWZmZXIsIFB5X3NzaXplX3QgbGVuKQotewotICAgIFB5X3NzaXplX3QgaTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpCi0gICAgICAgIGJ1ZmZlcltpXSA9IChQeV9VTklDT0RFKWNoYXJidWZmZXJbaV07Ci19Ci0jZW5kaWYKLQotLyogbXVjaCBvZiB0aGlzIGlzIHRha2VuIGZyb20gdW5pY29kZW9iamVjdC5jICovCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0X2Zsb2F0X2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCkKLXsKLSAgICBjaGFyICpidWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KLSAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOwotICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXI7Ci0gICAgUHlfc3NpemVfdCBuX3RvdGFsOwotICAgIGludCBoYXNfZGVjaW1hbDsKLSAgICBkb3VibGUgdmFsOwotICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uID0gZm9ybWF0LT5wcmVjaXNpb247Ci0gICAgUHlfc3NpemVfdCBkZWZhdWx0X3ByZWNpc2lvbiA9IDY7Ci0gICAgU1RSSU5HTElCX0NIQVIgdHlwZSA9IGZvcm1hdC0+dHlwZTsKLSAgICBpbnQgYWRkX3BjdCA9IDA7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnA7Ci0gICAgTnVtYmVyRmllbGRXaWR0aHMgc3BlYzsKLSAgICBpbnQgZmxhZ3MgPSAwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFNUUklOR0xJQl9DSEFSIHNpZ25fY2hhciA9ICdcMCc7Ci0gICAgaW50IGZsb2F0X3R5cGU7IC8qIFVzZWQgdG8gc2VlIGlmIHdlIGhhdmUgYSBuYW4sIGluZiwgb3IgcmVndWxhciBmbG9hdC4gKi8KLQotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgUHlfVU5JQ09ERSAqdW5pY29kZV90bXAgPSBOVUxMOwotI2VuZGlmCi0KLSAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCi0gICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCi0gICAgTG9jYWxlSW5mbyBsb2NhbGU7Ci0KLSAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpCi0gICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUxUOwotCi0gICAgaWYgKHR5cGUgPT0gJ1wwJykgewotICAgICAgICAvKiBPbWl0dGVkIHR5cGUgc3BlY2lmaWVyLiAgQmVoYXZlcyBpbiB0aGUgc2FtZSB3YXkgYXMgcmVwcih4KQotICAgICAgICAgICBhbmQgc3RyKHgpIGlmIG5vIHByZWNpc2lvbiBpcyBnaXZlbiwgZWxzZSBsaWtlICdnJywgYnV0IHdpdGgKLSAgICAgICAgICAgYXQgbGVhc3Qgb25lIGRpZ2l0IGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LiAqLwotICAgICAgICBmbGFncyB8PSBQeV9EVFNGX0FERF9ET1RfMDsKLSAgICAgICAgdHlwZSA9ICdyJzsKLSAgICAgICAgZGVmYXVsdF9wcmVjaXNpb24gPSAwOwotICAgIH0KLQotICAgIGlmICh0eXBlID09ICduJykKLSAgICAgICAgLyogJ24nIGlzIHRoZSBzYW1lIGFzICdnJywgZXhjZXB0IGZvciB0aGUgbG9jYWxlIHVzZWQgdG8KLSAgICAgICAgICAgZm9ybWF0IHRoZSByZXN1bHQuIFdlIHRha2UgY2FyZSBvZiB0aGF0IGxhdGVyLiAqLwotICAgICAgICB0eXBlID0gJ2cnOwotCi0gICAgdmFsID0gUHlGbG9hdF9Bc0RvdWJsZSh2YWx1ZSk7Ci0gICAgaWYgKHZhbCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIGlmICh0eXBlID09ICclJykgewotICAgICAgICB0eXBlID0gJ2YnOwotICAgICAgICB2YWwgKj0gMTAwOwotICAgICAgICBhZGRfcGN0ID0gMTsKLSAgICB9Ci0KLSAgICBpZiAocHJlY2lzaW9uIDwgMCkKLSAgICAgICAgcHJlY2lzaW9uID0gZGVmYXVsdF9wcmVjaXNpb247Ci0gICAgZWxzZSBpZiAodHlwZSA9PSAncicpCi0gICAgICAgIHR5cGUgPSAnZyc7Ci0KLSAgICAvKiBDYXN0ICJ0eXBlIiwgYmVjYXVzZSBpZiB3ZSdyZSBpbiB1bmljb2RlIHdlIG5lZWQgdG8gcGFzcyBhCi0gICAgICAgOC1iaXQgY2hhci4gVGhpcyBpcyBzYWZlLCBiZWNhdXNlIHdlJ3ZlIHJlc3RyaWN0ZWQgd2hhdCAidHlwZSIKLSAgICAgICBjYW4gYmUuICovCi0gICAgYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHZhbCwgKGNoYXIpdHlwZSwgcHJlY2lzaW9uLCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZsb2F0X3R5cGUpOwotICAgIGlmIChidWYgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotICAgIG5fZGlnaXRzID0gc3RybGVuKGJ1Zik7Ci0KLSAgICBpZiAoYWRkX3BjdCkgewotICAgICAgICAvKiBXZSBrbm93IHRoYXQgYnVmIGhhcyBhIHRyYWlsaW5nIHplcm8gKHNpbmNlIHdlIGp1c3QgY2FsbGVkCi0gICAgICAgICAgIHN0cmxlbigpIG9uIGl0KSwgYW5kIHdlIGRvbid0IHVzZSB0aGF0IGZhY3QgYW55IG1vcmUuIFNvIHdlCi0gICAgICAgICAgIGNhbiBqdXN0IHdyaXRlIG92ZXIgdGhlIHRyYWlsaW5nIHplcm8uICovCi0gICAgICAgIGJ1ZltuX2RpZ2l0c10gPSAnJSc7Ci0gICAgICAgIG5fZGlnaXRzICs9IDE7Ci0gICAgfQotCi0gICAgLyogU2luY2UgdGhlcmUgaXMgbm8gdW5pY29kZSB2ZXJzaW9uIG9mIFB5T1NfZG91YmxlX3RvX3N0cmluZywKLSAgICAgICBqdXN0IHVzZSB0aGUgOCBiaXQgdmVyc2lvbiBhbmQgdGhlbiBjb252ZXJ0IHRvIHVuaWNvZGUuICovCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICB1bmljb2RlX3RtcCA9IChQeV9VTklDT0RFKilQeU1lbV9NYWxsb2MoKG5fZGlnaXRzKSpzaXplb2YoUHlfVU5JQ09ERSkpOwotICAgIGlmICh1bmljb2RlX3RtcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0gICAgc3RydG91bmljb2RlKHVuaWNvZGVfdG1wLCBidWYsIG5fZGlnaXRzKTsKLSAgICBwID0gdW5pY29kZV90bXA7Ci0jZWxzZQotICAgIHAgPSBidWY7Ci0jZW5kaWYKLQotICAgIC8qIElzIGEgc2lnbiBjaGFyYWN0ZXIgcHJlc2VudCBpbiB0aGUgb3V0cHV0PyAgSWYgc28sIHJlbWVtYmVyIGl0Ci0gICAgICAgYW5kIHNraXAgaXQgKi8KLSAgICBpZiAoKnAgPT0gJy0nKSB7Ci0gICAgICAgIHNpZ25fY2hhciA9ICpwOwotICAgICAgICArK3A7Ci0gICAgICAgIC0tbl9kaWdpdHM7Ci0gICAgfQotCi0gICAgLyogRGV0ZXJtaW5lIGlmIHdlIGhhdmUgYW55ICJyZW1haW5kZXIiIChhZnRlciB0aGUgZGlnaXRzLCBtaWdodCBpbmNsdWRlCi0gICAgICAgZGVjaW1hbCBvciBleHBvbmVudCBvciBib3RoIChvciBuZWl0aGVyKSkgKi8KLSAgICBwYXJzZV9udW1iZXIocCwgbl9kaWdpdHMsICZuX3JlbWFpbmRlciwgJmhhc19kZWNpbWFsKTsKLQotICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KLSAgICBnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPwotICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKLSAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSk7Ci0KLSAgICAvKiBDYWxjdWxhdGUgaG93IG11Y2ggbWVtb3J5IHdlJ2xsIG5lZWQuICovCi0gICAgbl90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmc3BlYywgMCwgc2lnbl9jaGFyLCBwLCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fcmVtYWluZGVyLCBoYXNfZGVjaW1hbCwgJmxvY2FsZSwgZm9ybWF0KTsKLQotICAgIC8qIEFsbG9jYXRlIHRoZSBtZW1vcnkuICovCi0gICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCBuX3RvdGFsKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIFBvcHVsYXRlIHRoZSBtZW1vcnkuICovCi0gICAgZmlsbF9udW1iZXIoU1RSSU5HTElCX1NUUihyZXN1bHQpLCAmc3BlYywgcCwgbl9kaWdpdHMsIE5VTEwsCi0gICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPT0gJ1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLCAmbG9jYWxlLAotICAgICAgICAgICAgICAgIDApOwotCi1kb25lOgotICAgIFB5TWVtX0ZyZWUoYnVmKTsKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIFB5TWVtX0ZyZWUodW5pY29kZV90bXApOwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZiAvKiBGT1JNQVRfRkxPQVQgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBjb21wbGV4IGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgRk9STUFUX0NPTVBMRVgKLQotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdF9jb21wbGV4X2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQotewotICAgIGRvdWJsZSByZTsKLSAgICBkb3VibGUgaW07Ci0gICAgY2hhciAqcmVfYnVmID0gTlVMTDsgICAgICAgLyogYnVmZmVyIHJldHVybmVkIGZyb20gUHlPU19kb3VibGVfdG9fc3RyaW5nICovCi0gICAgY2hhciAqaW1fYnVmID0gTlVMTDsgICAgICAgLyogYnVmZmVyIHJldHVybmVkIGZyb20gUHlPU19kb3VibGVfdG9fc3RyaW5nICovCi0KLSAgICBJbnRlcm5hbEZvcm1hdFNwZWMgdG1wX2Zvcm1hdCA9ICpmb3JtYXQ7Ci0gICAgUHlfc3NpemVfdCBuX3JlX2RpZ2l0czsKLSAgICBQeV9zc2l6ZV90IG5faW1fZGlnaXRzOwotICAgIFB5X3NzaXplX3Qgbl9yZV9yZW1haW5kZXI7Ci0gICAgUHlfc3NpemVfdCBuX2ltX3JlbWFpbmRlcjsKLSAgICBQeV9zc2l6ZV90IG5fcmVfdG90YWw7Ci0gICAgUHlfc3NpemVfdCBuX2ltX3RvdGFsOwotICAgIGludCByZV9oYXNfZGVjaW1hbDsKLSAgICBpbnQgaW1faGFzX2RlY2ltYWw7Ci0gICAgUHlfc3NpemVfdCBwcmVjaXNpb24gPSBmb3JtYXQtPnByZWNpc2lvbjsKLSAgICBQeV9zc2l6ZV90IGRlZmF1bHRfcHJlY2lzaW9uID0gNjsKLSAgICBTVFJJTkdMSUJfQ0hBUiB0eXBlID0gZm9ybWF0LT50eXBlOwotICAgIFNUUklOR0xJQl9DSEFSICpwX3JlOwotICAgIFNUUklOR0xJQl9DSEFSICpwX2ltOwotICAgIE51bWJlckZpZWxkV2lkdGhzIHJlX3NwZWM7Ci0gICAgTnVtYmVyRmllbGRXaWR0aHMgaW1fc3BlYzsKLSAgICBpbnQgZmxhZ3MgPSAwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFNUUklOR0xJQl9DSEFSICpwOwotICAgIFNUUklOR0xJQl9DSEFSIHJlX3NpZ25fY2hhciA9ICdcMCc7Ci0gICAgU1RSSU5HTElCX0NIQVIgaW1fc2lnbl9jaGFyID0gJ1wwJzsKLSAgICBpbnQgcmVfZmxvYXRfdHlwZTsgLyogVXNlZCB0byBzZWUgaWYgd2UgaGF2ZSBhIG5hbiwgaW5mLCBvciByZWd1bGFyIGZsb2F0LiAqLwotICAgIGludCBpbV9mbG9hdF90eXBlOwotICAgIGludCBhZGRfcGFyZW5zID0gMDsKLSAgICBpbnQgc2tpcF9yZSA9IDA7Ci0gICAgUHlfc3NpemVfdCBscGFkOwotICAgIFB5X3NzaXplX3QgcnBhZDsKLSAgICBQeV9zc2l6ZV90IHRvdGFsOwotCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICBQeV9VTklDT0RFICpyZV91bmljb2RlX3RtcCA9IE5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqaW1fdW5pY29kZV90bXAgPSBOVUxMOwotI2VuZGlmCi0KLSAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCi0gICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCi0gICAgTG9jYWxlSW5mbyBsb2NhbGU7Ci0KLSAgICAvKiBaZXJvIHBhZGRpbmcgaXMgbm90IGFsbG93ZWQuICovCi0gICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICcwJykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJaZXJvIHBhZGRpbmcgaXMgbm90IGFsbG93ZWQgaW4gY29tcGxleCBmb3JtYXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogTmVpdGhlciBpcyAnPScgYWxpZ25tZW50IC4gKi8KLSAgICBpZiAoZm9ybWF0LT5hbGlnbiA9PSAnPScpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiJz0nIGFsaWdubWVudCBmbGFnIGlzIG5vdCBhbGxvd2VkIGluIGNvbXBsZXggZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZXIiKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIHJlID0gUHlDb21wbGV4X1JlYWxBc0RvdWJsZSh2YWx1ZSk7Ci0gICAgaWYgKHJlID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBkb25lOwotICAgIGltID0gUHlDb21wbGV4X0ltYWdBc0RvdWJsZSh2YWx1ZSk7Ci0gICAgaWYgKGltID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKQotICAgICAgICBmbGFncyB8PSBQeV9EVFNGX0FMVDsKLQotICAgIGlmICh0eXBlID09ICdcMCcpIHsKLSAgICAgICAgLyogT21pdHRlZCB0eXBlIHNwZWNpZmllci4gU2hvdWxkIGJlIGxpa2Ugc3RyKHNlbGYpLiAqLwotICAgICAgICB0eXBlID0gJ3InOwotICAgICAgICBkZWZhdWx0X3ByZWNpc2lvbiA9IDA7Ci0gICAgICAgIGlmIChyZSA9PSAwLjAgJiYgY29weXNpZ24oMS4wLCByZSkgPT0gMS4wKQotICAgICAgICAgICAgc2tpcF9yZSA9IDE7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZF9wYXJlbnMgPSAxOwotICAgIH0KLQotICAgIGlmICh0eXBlID09ICduJykKLSAgICAgICAgLyogJ24nIGlzIHRoZSBzYW1lIGFzICdnJywgZXhjZXB0IGZvciB0aGUgbG9jYWxlIHVzZWQgdG8KLSAgICAgICAgICAgZm9ybWF0IHRoZSByZXN1bHQuIFdlIHRha2UgY2FyZSBvZiB0aGF0IGxhdGVyLiAqLwotICAgICAgICB0eXBlID0gJ2cnOwotCi0gICAgaWYgKHByZWNpc2lvbiA8IDApCi0gICAgICAgIHByZWNpc2lvbiA9IGRlZmF1bHRfcHJlY2lzaW9uOwotICAgIGVsc2UgaWYgKHR5cGUgPT0gJ3InKQotICAgICAgICB0eXBlID0gJ2cnOwotCi0gICAgLyogQ2FzdCAidHlwZSIsIGJlY2F1c2UgaWYgd2UncmUgaW4gdW5pY29kZSB3ZSBuZWVkIHRvIHBhc3MgYQotICAgICAgIDgtYml0IGNoYXIuIFRoaXMgaXMgc2FmZSwgYmVjYXVzZSB3ZSd2ZSByZXN0cmljdGVkIHdoYXQgInR5cGUiCi0gICAgICAgY2FuIGJlLiAqLwotICAgIHJlX2J1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhyZSwgKGNoYXIpdHlwZSwgcHJlY2lzaW9uLCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlX2Zsb2F0X3R5cGUpOwotICAgIGlmIChyZV9idWYgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotICAgIGltX2J1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhpbSwgKGNoYXIpdHlwZSwgcHJlY2lzaW9uLCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltX2Zsb2F0X3R5cGUpOwotICAgIGlmIChpbV9idWYgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgbl9yZV9kaWdpdHMgPSBzdHJsZW4ocmVfYnVmKTsKLSAgICBuX2ltX2RpZ2l0cyA9IHN0cmxlbihpbV9idWYpOwotCi0gICAgLyogU2luY2UgdGhlcmUgaXMgbm8gdW5pY29kZSB2ZXJzaW9uIG9mIFB5T1NfZG91YmxlX3RvX3N0cmluZywKLSAgICAgICBqdXN0IHVzZSB0aGUgOCBiaXQgdmVyc2lvbiBhbmQgdGhlbiBjb252ZXJ0IHRvIHVuaWNvZGUuICovCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICByZV91bmljb2RlX3RtcCA9IChQeV9VTklDT0RFKilQeU1lbV9NYWxsb2MoKG5fcmVfZGlnaXRzKSpzaXplb2YoUHlfVU5JQ09ERSkpOwotICAgIGlmIChyZV91bmljb2RlX3RtcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0gICAgc3RydG91bmljb2RlKHJlX3VuaWNvZGVfdG1wLCByZV9idWYsIG5fcmVfZGlnaXRzKTsKLSAgICBwX3JlID0gcmVfdW5pY29kZV90bXA7Ci0KLSAgICBpbV91bmljb2RlX3RtcCA9IChQeV9VTklDT0RFKilQeU1lbV9NYWxsb2MoKG5faW1fZGlnaXRzKSpzaXplb2YoUHlfVU5JQ09ERSkpOwotICAgIGlmIChpbV91bmljb2RlX3RtcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0gICAgc3RydG91bmljb2RlKGltX3VuaWNvZGVfdG1wLCBpbV9idWYsIG5faW1fZGlnaXRzKTsKLSAgICBwX2ltID0gaW1fdW5pY29kZV90bXA7Ci0jZWxzZQotICAgIHBfcmUgPSByZV9idWY7Ci0gICAgcF9pbSA9IGltX2J1ZjsKLSNlbmRpZgotCi0gICAgLyogSXMgYSBzaWduIGNoYXJhY3RlciBwcmVzZW50IGluIHRoZSBvdXRwdXQ/ICBJZiBzbywgcmVtZW1iZXIgaXQKLSAgICAgICBhbmQgc2tpcCBpdCAqLwotICAgIGlmICgqcF9yZSA9PSAnLScpIHsKLSAgICAgICAgcmVfc2lnbl9jaGFyID0gKnBfcmU7Ci0gICAgICAgICsrcF9yZTsKLSAgICAgICAgLS1uX3JlX2RpZ2l0czsKLSAgICB9Ci0gICAgaWYgKCpwX2ltID09ICctJykgewotICAgICAgICBpbV9zaWduX2NoYXIgPSAqcF9pbTsKLSAgICAgICAgKytwX2ltOwotICAgICAgICAtLW5faW1fZGlnaXRzOwotICAgIH0KLQotICAgIC8qIERldGVybWluZSBpZiB3ZSBoYXZlIGFueSAicmVtYWluZGVyIiAoYWZ0ZXIgdGhlIGRpZ2l0cywgbWlnaHQgaW5jbHVkZQotICAgICAgIGRlY2ltYWwgb3IgZXhwb25lbnQgb3IgYm90aCAob3IgbmVpdGhlcikpICovCi0gICAgcGFyc2VfbnVtYmVyKHBfcmUsIG5fcmVfZGlnaXRzLCAmbl9yZV9yZW1haW5kZXIsICZyZV9oYXNfZGVjaW1hbCk7Ci0gICAgcGFyc2VfbnVtYmVyKHBfaW0sIG5faW1fZGlnaXRzLCAmbl9pbV9yZW1haW5kZXIsICZpbV9oYXNfZGVjaW1hbCk7Ci0KLSAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCi0gICAgZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KLSAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCi0gICAgICAgICAgICAgICAgICAgICZsb2NhbGUpOwotCi0gICAgLyogVHVybiBvZmYgYW55IHBhZGRpbmcuIFdlJ2xsIGRvIGl0IGxhdGVyIGFmdGVyIHdlJ3ZlIGNvbXBvc2VkCi0gICAgICAgdGhlIG51bWJlcnMgd2l0aG91dCBwYWRkaW5nLiAqLwotICAgIHRtcF9mb3JtYXQuZmlsbF9jaGFyID0gJ1wwJzsKLSAgICB0bXBfZm9ybWF0LmFsaWduID0gJzwnOwotICAgIHRtcF9mb3JtYXQud2lkdGggPSAtMTsKLQotICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KLSAgICBuX3JlX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZyZV9zcGVjLCAwLCByZV9zaWduX2NoYXIsIHBfcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX3JlX2RpZ2l0cywgbl9yZV9yZW1haW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZV9oYXNfZGVjaW1hbCwgJmxvY2FsZSwgJnRtcF9mb3JtYXQpOwotCi0gICAgLyogU2FtZSBmb3JtYXR0aW5nLCBidXQgYWx3YXlzIGluY2x1ZGUgYSBzaWduLCB1bmxlc3MgdGhlIHJlYWwgcGFydCBpcwotICAgICAqIGdvaW5nIHRvIGJlIG9taXR0ZWQsIGluIHdoaWNoIGNhc2Ugd2UgdXNlIHdoYXRldmVyIHNpZ24gY29udmVudGlvbiB3YXMKLSAgICAgKiByZXF1ZXN0ZWQgYnkgdGhlIG9yaWdpbmFsIGZvcm1hdC4gKi8KLSAgICBpZiAoIXNraXBfcmUpCi0gICAgICAgIHRtcF9mb3JtYXQuc2lnbiA9ICcrJzsKLSAgICBuX2ltX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZpbV9zcGVjLCAwLCBpbV9zaWduX2NoYXIsIHBfaW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2ltX2RpZ2l0cywgbl9pbV9yZW1haW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbV9oYXNfZGVjaW1hbCwgJmxvY2FsZSwgJnRtcF9mb3JtYXQpOwotCi0gICAgaWYgKHNraXBfcmUpCi0gICAgICAgIG5fcmVfdG90YWwgPSAwOwotCi0gICAgLyogQWRkIDEgZm9yIHRoZSAnaicsIGFuZCBvcHRpb25hbGx5IDIgZm9yIHBhcmVucy4gKi8KLSAgICBjYWxjX3BhZGRpbmcobl9yZV90b3RhbCArIG5faW1fdG90YWwgKyAxICsgYWRkX3BhcmVucyAqIDIsCi0gICAgICAgICAgICAgICAgIGZvcm1hdC0+d2lkdGgsIGZvcm1hdC0+YWxpZ24sICZscGFkLCAmcnBhZCwgJnRvdGFsKTsKLQotICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgdG90YWwpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogUG9wdWxhdGUgdGhlIG1lbW9yeS4gRmlyc3QsIHRoZSBwYWRkaW5nLiAqLwotICAgIHAgPSBmaWxsX3BhZGRpbmcoU1RSSU5HTElCX1NUUihyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgbl9yZV90b3RhbCArIG5faW1fdG90YWwgKyAxICsgYWRkX3BhcmVucyAqIDIsCi0gICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhcj09J1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLAotICAgICAgICAgICAgICAgICAgICAgbHBhZCwgcnBhZCk7Ci0KLSAgICBpZiAoYWRkX3BhcmVucykKLSAgICAgICAgKnArKyA9ICcoJzsKLQotICAgIGlmICghc2tpcF9yZSkgewotICAgICAgICBmaWxsX251bWJlcihwLCAmcmVfc3BlYywgcF9yZSwgbl9yZV9kaWdpdHMsIE5VTEwsIDAsICZsb2NhbGUsIDApOwotICAgICAgICBwICs9IG5fcmVfdG90YWw7Ci0gICAgfQotICAgIGZpbGxfbnVtYmVyKHAsICZpbV9zcGVjLCBwX2ltLCBuX2ltX2RpZ2l0cywgTlVMTCwgMCwgJmxvY2FsZSwgMCk7Ci0gICAgcCArPSBuX2ltX3RvdGFsOwotICAgICpwKysgPSAnaic7Ci0KLSAgICBpZiAoYWRkX3BhcmVucykKLSAgICAgICAgKnArKyA9ICcpJzsKLQotZG9uZToKLSAgICBQeU1lbV9GcmVlKHJlX2J1Zik7Ci0gICAgUHlNZW1fRnJlZShpbV9idWYpOwotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgUHlNZW1fRnJlZShyZV91bmljb2RlX3RtcCk7Ci0gICAgUHlNZW1fRnJlZShpbV91bmljb2RlX3RtcCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmIC8qIEZPUk1BVF9DT01QTEVYICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogYnVpbHQgaW4gZm9ybWF0dGVycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLVB5T2JqZWN0ICoKLUZPUk1BVF9TVFJJTkcoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbikKLXsKLSAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotCi0gICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKLSAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCi0gICAgaWYgKGZvcm1hdF9zcGVjX2xlbiA9PSAwKSB7Ci0gICAgICAgIHJlc3VsdCA9IFNUUklOR0xJQl9UT1NUUihvYmopOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCi0gICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsIGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAncycsICc8JykpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KLSAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7Ci0gICAgY2FzZSAncyc6Ci0gICAgICAgIC8qIG5vIHR5cGUgY29udmVyc2lvbiBuZWVkZWQsIGFscmVhZHkgYSBzdHJpbmcuICBkbyB0aGUgZm9ybWF0dGluZyAqLwotICAgICAgICByZXN1bHQgPSBmb3JtYXRfc3RyaW5nX2ludGVybmFsKG9iaiwgJmZvcm1hdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8qIHVua25vd24gKi8KLSAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotZG9uZToKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWYgZGVmaW5lZCBGT1JNQVRfTE9ORyB8fCBkZWZpbmVkIEZPUk1BVF9JTlQKLXN0YXRpYyBQeU9iamVjdCoKLWZvcm1hdF9pbnRfb3JfbG9uZyhQeU9iamVjdCogb2JqLAotICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICBJbnRPckxvbmdUb1N0cmluZyB0b3N0cmluZykKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdG1wID0gTlVMTDsKLSAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OwotCi0gICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKLSAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCi0gICAgaWYgKGZvcm1hdF9zcGVjX2xlbiA9PSAwKSB7Ci0gICAgICAgIHJlc3VsdCA9IFNUUklOR0xJQl9UT1NUUihvYmopOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCi0gICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdkJywgJz4nKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLwotICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKLSAgICBjYXNlICdiJzoKLSAgICBjYXNlICdjJzoKLSAgICBjYXNlICdkJzoKLSAgICBjYXNlICdvJzoKLSAgICBjYXNlICd4JzoKLSAgICBjYXNlICdYJzoKLSAgICBjYXNlICduJzoKLSAgICAgICAgLyogbm8gdHlwZSBjb252ZXJzaW9uIG5lZWRlZCwgYWxyZWFkeSBhbiBpbnQgKG9yIGxvbmcpLiAgZG8KLSAgICAgICAgICAgdGhlIGZvcm1hdHRpbmcgKi8KLSAgICAgICAgICAgIHJlc3VsdCA9IGZvcm1hdF9pbnRfb3JfbG9uZ19pbnRlcm5hbChvYmosICZmb3JtYXQsIHRvc3RyaW5nKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlICdlJzoKLSAgICBjYXNlICdFJzoKLSAgICBjYXNlICdmJzoKLSAgICBjYXNlICdGJzoKLSAgICBjYXNlICdnJzoKLSAgICBjYXNlICdHJzoKLSAgICBjYXNlICclJzoKLSAgICAgICAgLyogY29udmVydCB0byBmbG9hdCAqLwotICAgICAgICB0bXAgPSBQeU51bWJlcl9GbG9hdChvYmopOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIHJlc3VsdCA9IGZvcm1hdF9mbG9hdF9pbnRlcm5hbCh0bXAsICZmb3JtYXQpOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8qIHVua25vd24gKi8KLSAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotZG9uZToKLSAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZiAvKiBGT1JNQVRfTE9ORyB8fCBkZWZpbmVkIEZPUk1BVF9JTlQgKi8KLQotI2lmZGVmIEZPUk1BVF9MT05HCi0vKiBOZWVkIHRvIGRlZmluZSBsb25nX2Zvcm1hdCBhcyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBjb252ZXJ0IGEgbG9uZwotICAgdG8gYSBzdHJpbmcuICBJbiAzLjAsIF9QeUxvbmdfRm9ybWF0IGhhcyB0aGUgY29ycmVjdCBzaWduYXR1cmUuICBJbgotICAgMi54LCB3ZSBuZWVkIHRvIGZ1ZGdlIGEgZmV3IHBhcmFtZXRlcnMgKi8KLSNpZiBQWV9WRVJTSU9OX0hFWCA+PSAweDAzMDAwMDAwCi0jZGVmaW5lIGxvbmdfZm9ybWF0IF9QeUxvbmdfRm9ybWF0Ci0jZWxzZQotc3RhdGljIFB5T2JqZWN0KgotbG9uZ19mb3JtYXQoUHlPYmplY3QqIHZhbHVlLCBpbnQgYmFzZSkKLXsKLSAgICAvKiBDb252ZXJ0IHRvIGJhc2UsIGRvbid0IGFkZCB0cmFpbGluZyAnTCcsIGFuZCB1c2UgdGhlIG5ldyBvY3RhbAotICAgICAgIGZvcm1hdC4gV2UgYWxyZWFkeSBrbm93IHRoaXMgaXMgYSBsb25nIG9iamVjdCAqLwotICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodmFsdWUpKTsKLSAgICAvKiBjb252ZXJ0IHRvIGJhc2UsIGRvbid0IGFkZCAnTCcsIGFuZCB1c2UgdGhlIG5ldyBvY3RhbCBmb3JtYXQgKi8KLSAgICByZXR1cm4gX1B5TG9uZ19Gb3JtYXQodmFsdWUsIGJhc2UsIDAsIDEpOwotfQotI2VuZGlmCi0KLVB5T2JqZWN0ICoKLUZPUk1BVF9MT05HKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbikKLXsKLSAgICByZXR1cm4gZm9ybWF0X2ludF9vcl9sb25nKG9iaiwgZm9ybWF0X3NwZWMsIGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdfZm9ybWF0KTsKLX0KLSNlbmRpZiAvKiBGT1JNQVRfTE9ORyAqLwotCi0jaWZkZWYgRk9STUFUX0lOVAotLyogdGhpcyBpcyBvbmx5IHVzZWQgZm9yIDIueCwgbm90IDMuMCAqLwotc3RhdGljIFB5T2JqZWN0KgotaW50X2Zvcm1hdChQeU9iamVjdCogdmFsdWUsIGludCBiYXNlKQotewotICAgIC8qIENvbnZlcnQgdG8gYmFzZSwgYW5kIHVzZSB0aGUgbmV3IG9jdGFsIGZvcm1hdC4gV2UgYWxyZWFkeQotICAgICAgIGtub3cgdGhpcyBpcyBhbiBpbnQgb2JqZWN0ICovCi0gICAgYXNzZXJ0KFB5SW50X0NoZWNrKHZhbHVlKSk7Ci0gICAgcmV0dXJuIF9QeUludF9Gb3JtYXQoKFB5SW50T2JqZWN0Kil2YWx1ZSwgYmFzZSwgMSk7Ci19Ci0KLVB5T2JqZWN0ICoKLUZPUk1BVF9JTlQoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbikKLXsKLSAgICByZXR1cm4gZm9ybWF0X2ludF9vcl9sb25nKG9iaiwgZm9ybWF0X3NwZWMsIGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9mb3JtYXQpOwotfQotI2VuZGlmIC8qIEZPUk1BVF9JTlQgKi8KLQotI2lmZGVmIEZPUk1BVF9GTE9BVAotUHlPYmplY3QgKgotRk9STUFUX0ZMT0FUKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7Ci0KLSAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQotICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KLSAgICBpZiAoZm9ybWF0X3NwZWNfbGVuID09IDApIHsKLSAgICAgICAgcmVzdWx0ID0gU1RSSU5HTElCX1RPU1RSKG9iaik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KLSAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ1wwJywgJz4nKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLwotICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKLSAgICBjYXNlICdcMCc6IC8qIE5vIGZvcm1hdCBjb2RlOiBsaWtlICdnJywgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwuICovCi0gICAgY2FzZSAnZSc6Ci0gICAgY2FzZSAnRSc6Ci0gICAgY2FzZSAnZic6Ci0gICAgY2FzZSAnRic6Ci0gICAgY2FzZSAnZyc6Ci0gICAgY2FzZSAnRyc6Ci0gICAgY2FzZSAnbic6Ci0gICAgY2FzZSAnJSc6Ci0gICAgICAgIC8qIG5vIGNvbnZlcnNpb24sIGFscmVhZHkgYSBmbG9hdC4gIGRvIHRoZSBmb3JtYXR0aW5nICovCi0gICAgICAgIHJlc3VsdCA9IGZvcm1hdF9mbG9hdF9pbnRlcm5hbChvYmosICZmb3JtYXQpOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8qIHVua25vd24gKi8KLSAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotZG9uZToKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmIC8qIEZPUk1BVF9GTE9BVCAqLwotCi0jaWZkZWYgRk9STUFUX0NPTVBMRVgKLVB5T2JqZWN0ICoKLUZPUk1BVF9DT01QTEVYKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbikKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OwotCi0gICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKLSAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCi0gICAgaWYgKGZvcm1hdF9zcGVjX2xlbiA9PSAwKSB7Ci0gICAgICAgIHJlc3VsdCA9IFNUUklOR0xJQl9UT1NUUihvYmopOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCi0gICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdcMCcsICc+JykpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KLSAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7Ci0gICAgY2FzZSAnXDAnOiAvKiBObyBmb3JtYXQgY29kZTogbGlrZSAnZycsIGJ1dCB3aXRoIGF0IGxlYXN0IG9uZSBkZWNpbWFsLiAqLwotICAgIGNhc2UgJ2UnOgotICAgIGNhc2UgJ0UnOgotICAgIGNhc2UgJ2YnOgotICAgIGNhc2UgJ0YnOgotICAgIGNhc2UgJ2cnOgotICAgIGNhc2UgJ0cnOgotICAgIGNhc2UgJ24nOgotICAgICAgICAvKiBubyBjb252ZXJzaW9uLCBhbHJlYWR5IGEgY29tcGxleC4gIGRvIHRoZSBmb3JtYXR0aW5nICovCi0gICAgICAgIHJlc3VsdCA9IGZvcm1hdF9jb21wbGV4X2ludGVybmFsKG9iaiwgJmZvcm1hdCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgLyogdW5rbm93biAqLwotICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi1kb25lOgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYgLyogRk9STUFUX0NPTVBMRVggKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCBiL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaAppbmRleCBmNTQ4MTMzLi42ZTJmMDczIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCkBAIC0xLDIxICsxLDE5IEBACiAvKiBzdHJpbmdsaWI6IGxvY2FsZSByZWxhdGVkIGhlbHBlcnMgaW1wbGVtZW50YXRpb24gKi8KIAotI2lmbmRlZiBTVFJJTkdMSUJfTE9DQUxFVVRJTF9ICi0jZGVmaW5lIFNUUklOR0xJQl9MT0NBTEVVVElMX0gKLQogI2luY2x1ZGUgPGxvY2FsZS5oPgogCi0jZGVmaW5lIE1BWCh4LCB5KSAoKHgpIDwgKHkpID8gKHkpIDogKHgpKQotI2RlZmluZSBNSU4oeCwgeSkgKCh4KSA8ICh5KSA/ICh4KSA6ICh5KSkKKyNpZm5kZWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgICBlcnJvciAibG9jYWxldXRpbCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgorI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBjb25zdCBjaGFyICpncm91cGluZzsKICAgICBjaGFyIHByZXZpb3VzOwogICAgIFB5X3NzaXplX3QgaTsgLyogV2hlcmUgd2UncmUgY3VycmVudGx5IHBvaW50aW5nIGluIGdyb3VwaW5nLiAqLwotfSBHcm91cEdlbmVyYXRvcjsKK30gU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yKTsKIAogc3RhdGljIHZvaWQKLV9Hcm91cEdlbmVyYXRvcl9pbml0KEdyb3VwR2VuZXJhdG9yICpzZWxmLCBjb25zdCBjaGFyICpncm91cGluZykKK1NUUklOR0xJQihHcm91cEdlbmVyYXRvcl9pbml0KShTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3IpICpzZWxmLCBjb25zdCBjaGFyICpncm91cGluZykKIHsKICAgICBzZWxmLT5ncm91cGluZyA9IGdyb3VwaW5nOwogICAgIHNlbGYtPmkgPSAwOwpAQCAtMjQsNyArMjIsNyBAQAogCiAvKiBSZXR1cm5zIHRoZSBuZXh0IGdyb3VwaW5nLCBvciAwIHRvIHNpZ25pZnkgZW5kLiAqLwogc3RhdGljIFB5X3NzaXplX3QKLV9Hcm91cEdlbmVyYXRvcl9uZXh0KEdyb3VwR2VuZXJhdG9yICpzZWxmKQorU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yX25leHQpKFNUUklOR0xJQihHcm91cEdlbmVyYXRvcikgKnNlbGYpCiB7CiAgICAgLyogTm90ZSB0aGF0IHdlIGRvbid0IHJlYWxseSBkbyBtdWNoIGVycm9yIGNoZWNraW5nIGhlcmUuIElmIGEKICAgICAgICBncm91cGluZyBzdHJpbmcgY29udGFpbnMganVzdCBDSEFSX01BWCwgZm9yIGV4YW1wbGUsIHRoZW4ganVzdApAQCAtNDgsMjcgKzQ2LDE4IEBACiAvKiBGaWxsIGluIHNvbWUgZGlnaXRzLCBsZWFkaW5nIHplcm9zLCBhbmQgdGhvdXNhbmRzIHNlcGFyYXRvci4gQWxsCiAgICBhcmUgb3B0aW9uYWwsIGRlcGVuZGluZyBvbiB3aGVuIHdlJ3JlIGNhbGxlZC4gKi8KIHN0YXRpYyB2b2lkCi1maWxsKFNUUklOR0xJQl9DSEFSICoqZGlnaXRzX2VuZCwgU1RSSU5HTElCX0NIQVIgKipidWZmZXJfZW5kLAotICAgICBQeV9zc2l6ZV90IG5fY2hhcnMsIFB5X3NzaXplX3Qgbl96ZXJvcywgY29uc3QgY2hhciogdGhvdXNhbmRzX3NlcCwKK1NUUklOR0xJQihmaWxsKShTVFJJTkdMSUJfQ0hBUiAqKmRpZ2l0c19lbmQsIFNUUklOR0xJQl9DSEFSICoqYnVmZmVyX2VuZCwKKyAgICAgUHlfc3NpemVfdCBuX2NoYXJzLCBQeV9zc2l6ZV90IG5femVyb3MsIFNUUklOR0xJQl9DSEFSKiB0aG91c2FuZHNfc2VwLAogICAgICBQeV9zc2l6ZV90IHRob3VzYW5kc19zZXBfbGVuKQogewotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCiAgICAgUHlfc3NpemVfdCBpOwotI2VuZGlmCiAKICAgICBpZiAodGhvdXNhbmRzX3NlcCkgewogICAgICAgICAqYnVmZmVyX2VuZCAtPSB0aG91c2FuZHNfc2VwX2xlbjsKIAogICAgICAgICAvKiBDb3B5IHRoZSB0aG91c2FuZHNfc2VwIGNoYXJzIGludG8gdGhlIGJ1ZmZlci4gKi8KLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgICAgICAvKiBDb252ZXJ0IGZyb20gdGhlIGNoYXIncyBvZiB0aGUgdGhvdXNhbmRzX3NlcCBmcm9tCi0gICAgICAgICAgIHRoZSBsb2NhbGUgaW50byB1bmljb2RlLiAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhvdXNhbmRzX3NlcF9sZW47ICsraSkKLSAgICAgICAgICAgICgqYnVmZmVyX2VuZClbaV0gPSB0aG91c2FuZHNfc2VwW2ldOwotI2Vsc2UKLSAgICAgICAgLyogTm8gY29udmVyc2lvbiwganVzdCBtZW1jcHkgdGhlIHRob3VzYW5kc19zZXAuICovCi0gICAgICAgIG1lbWNweSgqYnVmZmVyX2VuZCwgdGhvdXNhbmRzX3NlcCwgdGhvdXNhbmRzX3NlcF9sZW4pOwotI2VuZGlmCisgICAgICAgIG1lbWNweSgqYnVmZmVyX2VuZCwgdGhvdXNhbmRzX3NlcCwKKyAgICAgICAgICAgICAgIHRob3VzYW5kc19zZXBfbGVuICogU1RSSU5HTElCX1NJWkVPRl9DSEFSKTsKICAgICB9CiAKICAgICAqYnVmZmVyX2VuZCAtPSBuX2NoYXJzOwpAQCAtNzYsMTEgKzY1LDEyIEBACiAgICAgbWVtY3B5KCpidWZmZXJfZW5kLCAqZGlnaXRzX2VuZCwgbl9jaGFycyAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwogCiAgICAgKmJ1ZmZlcl9lbmQgLT0gbl96ZXJvczsKLSAgICBTVFJJTkdMSUJfRklMTCgqYnVmZmVyX2VuZCwgJzAnLCBuX3plcm9zKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbl96ZXJvczsgaSsrKQorICAgICAgICAoKmJ1ZmZlcl9lbmQpW2ldID0gJzAnOwogfQogCiAvKioKLSAqIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZzoKKyAqIEluc2VydFRob3VzYW5kc0dyb3VwaW5nOgogICogQGJ1ZmZlcjogQSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiBhIHN0cmluZy4KICAqIEBuX2J1ZmZlcjogTnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gQGJ1ZmZlci4KICAqIEBkaWdpdHM6IEEgcG9pbnRlciB0byB0aGUgZGlnaXRzIHdlJ3JlIHJlYWRpbmcgZnJvbS4gSWYgY291bnQKQEAgLTEwOSwxNCArOTksMTYgQEAKICAqIEFzIGNsb3NlbHkgYXMgcG9zc2libGUsIHRoaXMgY29kZSBtaW1pY3MgdGhlIGxvZ2ljIGluIGRlY2ltYWwucHkncwogICAgIF9pbnNlcnRfdGhvdXNhbmRzX3NlcCgpLgogICoqLwotUHlfc3NpemVfdAotX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nKFNUUklOR0xJQl9DSEFSICpidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGhvdXNhbmRzX3NlcCkKK3N0YXRpYyBQeV9zc2l6ZV90CitTVFJJTkdMSUIoSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcpKAorICAgIFNUUklOR0xJQl9DSEFSICpidWZmZXIsCisgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKKyAgICBTVFJJTkdMSUJfQ0hBUiAqZGlnaXRzLAorICAgIFB5X3NzaXplX3Qgbl9kaWdpdHMsCisgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCisgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcsCisgICAgU1RSSU5HTElCX0NIQVIgKnRob3VzYW5kc19zZXAsCisgICAgUHlfc3NpemVfdCB0aG91c2FuZHNfc2VwX2xlbikKIHsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKICAgICBQeV9zc2l6ZV90IG5femVyb3M7CkBAIC0xMjgsMjMgKzEyMCwyMiBAQAogICAgIFNUUklOR0xJQl9DSEFSICpkaWdpdHNfZW5kID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGw7CiAgICAgUHlfc3NpemVfdCBuX2NoYXJzOwotICAgIFB5X3NzaXplX3QgdGhvdXNhbmRzX3NlcF9sZW4gPSBzdHJsZW4odGhvdXNhbmRzX3NlcCk7CiAgICAgUHlfc3NpemVfdCByZW1haW5pbmcgPSBuX2RpZ2l0czsgLyogTnVtYmVyIG9mIGNoYXJzIHJlbWFpbmluZyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGxvb2tlZCBhdCAqLwogICAgIC8qIEEgZ2VuZXJhdG9yIHRoYXQgcmV0dXJucyBhbGwgb2YgdGhlIGdyb3VwaW5nIHdpZHRocywgdW50aWwgaXQKICAgICAgICByZXR1cm5zIDAuICovCi0gICAgR3JvdXBHZW5lcmF0b3IgZ3JvdXBnZW47Ci0gICAgX0dyb3VwR2VuZXJhdG9yX2luaXQoJmdyb3VwZ2VuLCBncm91cGluZyk7CisgICAgU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yKSBncm91cGdlbjsKKyAgICBTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3JfaW5pdCkoJmdyb3VwZ2VuLCBncm91cGluZyk7CiAKICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgIGJ1ZmZlcl9lbmQgPSBidWZmZXIgKyBuX2J1ZmZlcjsKICAgICAgICAgZGlnaXRzX2VuZCA9IGRpZ2l0cyArIG5fZGlnaXRzOwogICAgIH0KIAotICAgIHdoaWxlICgobCA9IF9Hcm91cEdlbmVyYXRvcl9uZXh0KCZncm91cGdlbikpID4gMCkgewotICAgICAgICBsID0gTUlOKGwsIE1BWChNQVgocmVtYWluaW5nLCBtaW5fd2lkdGgpLCAxKSk7Ci0gICAgICAgIG5femVyb3MgPSBNQVgoMCwgbCAtIHJlbWFpbmluZyk7Ci0gICAgICAgIG5fY2hhcnMgPSBNQVgoMCwgTUlOKHJlbWFpbmluZywgbCkpOworICAgIHdoaWxlICgobCA9IFNUUklOR0xJQihHcm91cEdlbmVyYXRvcl9uZXh0KSgmZ3JvdXBnZW4pKSA+IDApIHsKKyAgICAgICAgbCA9IFB5X01JTihsLCBQeV9NQVgoUHlfTUFYKHJlbWFpbmluZywgbWluX3dpZHRoKSwgMSkpOworICAgICAgICBuX3plcm9zID0gUHlfTUFYKDAsIGwgLSByZW1haW5pbmcpOworICAgICAgICBuX2NoYXJzID0gUHlfTUFYKDAsIFB5X01JTihyZW1haW5pbmcsIGwpKTsKIAogICAgICAgICAvKiBVc2Ugbl96ZXJvIHplcm8ncyBhbmQgbl9jaGFycyBjaGFycyAqLwogCkBAIC0xNTMsNyArMTQ0LDcgQEAKIAogICAgICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgICAgICAvKiBDb3B5IGludG8gdGhlIG91dHB1dCBidWZmZXIuICovCi0gICAgICAgICAgICBmaWxsKCZkaWdpdHNfZW5kLCAmYnVmZmVyX2VuZCwgbl9jaGFycywgbl96ZXJvcywKKyAgICAgICAgICAgIFNUUklOR0xJQihmaWxsKSgmZGlnaXRzX2VuZCwgJmJ1ZmZlcl9lbmQsIG5fY2hhcnMsIG5femVyb3MsCiAgICAgICAgICAgICAgICAgIHVzZV9zZXBhcmF0b3IgPyB0aG91c2FuZHNfc2VwIDogTlVMTCwgdGhvdXNhbmRzX3NlcF9sZW4pOwogICAgICAgICB9CiAKQEAgLTE3Miw0MSArMTYzLDE4IEBACiAgICAgaWYgKCFsb29wX2Jyb2tlbikgewogICAgICAgICAvKiBXZSBsZWZ0IHRoZSBsb29wIHdpdGhvdXQgdXNpbmcgYSBicmVhayBzdGF0ZW1lbnQuICovCiAKLSAgICAgICAgbCA9IE1BWChNQVgocmVtYWluaW5nLCBtaW5fd2lkdGgpLCAxKTsKLSAgICAgICAgbl96ZXJvcyA9IE1BWCgwLCBsIC0gcmVtYWluaW5nKTsKLSAgICAgICAgbl9jaGFycyA9IE1BWCgwLCBNSU4ocmVtYWluaW5nLCBsKSk7CisgICAgICAgIGwgPSBQeV9NQVgoUHlfTUFYKHJlbWFpbmluZywgbWluX3dpZHRoKSwgMSk7CisgICAgICAgIG5femVyb3MgPSBQeV9NQVgoMCwgbCAtIHJlbWFpbmluZyk7CisgICAgICAgIG5fY2hhcnMgPSBQeV9NQVgoMCwgUHlfTUlOKHJlbWFpbmluZywgbCkpOwogCiAgICAgICAgIC8qIFVzZSBuX3plcm8gemVybydzIGFuZCBuX2NoYXJzIGNoYXJzICovCiAgICAgICAgIGNvdW50ICs9ICh1c2Vfc2VwYXJhdG9yID8gdGhvdXNhbmRzX3NlcF9sZW4gOiAwKSArIG5femVyb3MgKyBuX2NoYXJzOwogICAgICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgICAgICAvKiBDb3B5IGludG8gdGhlIG91dHB1dCBidWZmZXIuICovCi0gICAgICAgICAgICBmaWxsKCZkaWdpdHNfZW5kLCAmYnVmZmVyX2VuZCwgbl9jaGFycywgbl96ZXJvcywKKyAgICAgICAgICAgIFNUUklOR0xJQihmaWxsKSgmZGlnaXRzX2VuZCwgJmJ1ZmZlcl9lbmQsIG5fY2hhcnMsIG5femVyb3MsCiAgICAgICAgICAgICAgICAgIHVzZV9zZXBhcmF0b3IgPyB0aG91c2FuZHNfc2VwIDogTlVMTCwgdGhvdXNhbmRzX3NlcF9sZW4pOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBjb3VudDsKIH0KIAotLyoqCi0gKiBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGU6Ci0gKiBAYnVmZmVyOiBBIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIGEgc3RyaW5nLgotICogQG5fZGlnaXRzOiBUaGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgc3RyaW5nLCBpbiB3aGljaCB3ZSB3YW50Ci0gKiAgICAgICAgICAgIHRvIHB1dCB0aGUgZ3JvdXBpbmcgY2hhcnMuCi0gKgotICogUmVhZHMgdGhlZSBjdXJyZW50IGxvY2FsZSBhbmQgY2FsbHMgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nKCkuCi0gKiovCi1QeV9zc2l6ZV90Ci1fUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUoU1RSSU5HTElCX0NIQVIgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpkaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCkKLXsKLSAgICAgICAgc3RydWN0IGxjb252ICpsb2NhbGVfZGF0YSA9IGxvY2FsZWNvbnYoKTsKLSAgICAgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcgPSBsb2NhbGVfZGF0YS0+Z3JvdXBpbmc7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnRob3VzYW5kc19zZXAgPSBsb2NhbGVfZGF0YS0+dGhvdXNhbmRzX3NlcDsKLQotICAgICAgICByZXR1cm4gX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nKGJ1ZmZlciwgbl9idWZmZXIsIGRpZ2l0cywgbl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluX3dpZHRoLCBncm91cGluZywgdGhvdXNhbmRzX3NlcCk7Ci19Ci0jZW5kaWYgLyogU1RSSU5HTElCX0xPQ0FMRVVUSUxfSCAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvcGFydGl0aW9uLmggYi9PYmplY3RzL3N0cmluZ2xpYi9wYXJ0aXRpb24uaAppbmRleCAwMTcwYmRkLi40MGNiNTEyIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9wYXJ0aXRpb24uaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9wYXJ0aXRpb24uaApAQCAtMSwxNCArMSwxMSBAQAogLyogc3RyaW5nbGliOiBwYXJ0aXRpb24gaW1wbGVtZW50YXRpb24gKi8KIAotI2lmbmRlZiBTVFJJTkdMSUJfUEFSVElUSU9OX0gKLSNkZWZpbmUgU1RSSU5HTElCX1BBUlRJVElPTl9ICi0KICNpZm5kZWYgU1RSSU5HTElCX0ZBU1RTRUFSQ0hfSAogI2Vycm9yIG11c3QgaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIgYmVmb3JlIGluY2x1ZGluZyB0aGlzIG1vZHVsZQogI2VuZGlmCiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCopCi1zdHJpbmdsaWJfcGFydGl0aW9uKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHBhcnRpdGlvbikoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QqIHNlcF9vYmosCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzZXAsIFB5X3NzaXplX3Qgc2VwX2xlbikKQEAgLTI1LDcgKzIyLDcgQEAKICAgICBpZiAoIW91dCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBwb3MgPSBmYXN0c2VhcmNoKHN0ciwgc3RyX2xlbiwgc2VwLCBzZXBfbGVuLCAtMSwgRkFTVF9TRUFSQ0gpOworICAgIHBvcyA9IEZBU1RTRUFSQ0goc3RyLCBzdHJfbGVuLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1NFQVJDSCk7CiAKICAgICBpZiAocG9zIDwgMCkgewogI2lmIFNUUklOR0xJQl9NVVRBQkxFCkBAIC01OCw3ICs1NSw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCopCi1zdHJpbmdsaWJfcnBhcnRpdGlvbihQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihycGFydGl0aW9uKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0KiBzZXBfb2JqLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHNlcCwgUHlfc3NpemVfdCBzZXBfbGVuKQpAQCAtNzUsNyArNzIsNyBAQAogICAgIGlmICghb3V0KQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHBvcyA9IGZhc3RzZWFyY2goc3RyLCBzdHJfbGVuLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1JTRUFSQ0gpOworICAgIHBvcyA9IEZBU1RTRUFSQ0goc3RyLCBzdHJfbGVuLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1JTRUFSQ0gpOwogCiAgICAgaWYgKHBvcyA8IDApIHsKICNpZiBTVFJJTkdMSUJfTVVUQUJMRQpAQCAtMTA3LDQgKzEwNCwzIEBACiAgICAgcmV0dXJuIG91dDsKIH0KIAotI2VuZGlmCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9zcGxpdC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvc3BsaXQuaAppbmRleCA2MGU3NzY3Li45NDdkZDI4IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9zcGxpdC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3NwbGl0LmgKQEAgLTEsOCArMSw1IEBACiAvKiBzdHJpbmdsaWI6IHNwbGl0IGltcGxlbWVudGF0aW9uICovCiAKLSNpZm5kZWYgU1RSSU5HTElCX1NQTElUX0gKLSNkZWZpbmUgU1RSSU5HTElCX1NQTElUX0gKLQogI2lmbmRlZiBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAjZXJyb3IgbXVzdCBpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIiBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgbW9kdWxlCiAjZW5kaWYKQEAgLTU0LDcgKzUxLDcgQEAKICNkZWZpbmUgRklYX1BSRUFMTE9DX1NJWkUobGlzdCkgUHlfU0laRShsaXN0KSA9IGNvdW50CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3NwbGl0X3doaXRlc3BhY2UoUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIoc3BsaXRfd2hpdGVzcGFjZSkoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewpAQCAtMTAyLDcgKzk5LDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCi1zdHJpbmdsaWJfc3BsaXRfY2hhcihQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihzcGxpdF9jaGFyKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSIGNoLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKQEAgLTE0NSw3ICsxNDIsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9zcGxpdChQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihzcGxpdCkoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzZXAsIFB5X3NzaXplX3Qgc2VwX2xlbiwKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQpAQCAtMTU4LDcgKzE1NSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmIChzZXBfbGVuID09IDEpCi0gICAgICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRfY2hhcihzdHJfb2JqLCBzdHIsIHN0cl9sZW4sIHNlcFswXSwgbWF4Y291bnQpOworICAgICAgICByZXR1cm4gU1RSSU5HTElCKHNwbGl0X2NoYXIpKHN0cl9vYmosIHN0ciwgc3RyX2xlbiwgc2VwWzBdLCBtYXhjb3VudCk7CiAKICAgICBsaXN0ID0gUHlMaXN0X05ldyhQUkVBTExPQ19TSVpFKG1heGNvdW50KSk7CiAgICAgaWYgKGxpc3QgPT0gTlVMTCkKQEAgLTE2Niw3ICsxNjMsNyBAQAogCiAgICAgaSA9IGogPSAwOwogICAgIHdoaWxlIChtYXhjb3VudC0tID4gMCkgewotICAgICAgICBwb3MgPSBmYXN0c2VhcmNoKHN0citpLCBzdHJfbGVuLWksIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfU0VBUkNIKTsKKyAgICAgICAgcG9zID0gRkFTVFNFQVJDSChzdHIraSwgc3RyX2xlbi1pLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1NFQVJDSCk7CiAgICAgICAgIGlmIChwb3MgPCAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGogPSBpICsgcG9zOwpAQCAtMTkzLDcgKzE5MCw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3JzcGxpdF93aGl0ZXNwYWNlKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHJzcGxpdF93aGl0ZXNwYWNlKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKQEAgLTI0Myw3ICsyNDAsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9yc3BsaXRfY2hhcihQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihyc3BsaXRfY2hhcikoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSIGNoLAogICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCkBAIC0yODcsNyArMjg0LDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCi1zdHJpbmdsaWJfcnNwbGl0KFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHJzcGxpdCkoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHNlcCwgUHlfc3NpemVfdCBzZXBfbGVuLAogICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQpAQCAtMzAwLDcgKzI5Nyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmIChzZXBfbGVuID09IDEpCi0gICAgICAgIHJldHVybiBzdHJpbmdsaWJfcnNwbGl0X2NoYXIoc3RyX29iaiwgc3RyLCBzdHJfbGVuLCBzZXBbMF0sIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIFNUUklOR0xJQihyc3BsaXRfY2hhcikoc3RyX29iaiwgc3RyLCBzdHJfbGVuLCBzZXBbMF0sIG1heGNvdW50KTsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KFBSRUFMTE9DX1NJWkUobWF4Y291bnQpKTsKICAgICBpZiAobGlzdCA9PSBOVUxMKQpAQCAtMzA4LDcgKzMwNSw3IEBACiAKICAgICBqID0gc3RyX2xlbjsKICAgICB3aGlsZSAobWF4Y291bnQtLSA+IDApIHsKLSAgICAgICAgcG9zID0gZmFzdHNlYXJjaChzdHIsIGosIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CisgICAgICAgIHBvcyA9IEZBU1RTRUFSQ0goc3RyLCBqLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1JTRUFSQ0gpOwogICAgICAgICBpZiAocG9zIDwgMCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBTUExJVF9BREQoc3RyLCBwb3MgKyBzZXBfbGVuLCBqKTsKQEAgLTMzNiw3ICszMzMsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9zcGxpdGxpbmVzKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHNwbGl0bGluZXMpKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgaW50IGtlZXBlbmRzKQogewpAQCAtMzkxLDQgKzM4OCwzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nZGVmcy5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nZGVmcy5oCmluZGV4IDFjNDk0MjYuLjdiYjkxYTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ2RlZnMuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmgKQEAgLTYsNyArNiwxMCBAQAogICAgY29tcGlsZWQgYXMgdW5pY29kZS4gKi8KICNkZWZpbmUgU1RSSU5HTElCX0lTX1VOSUNPREUgICAgIDAKIAorI2RlZmluZSBGQVNUU0VBUkNIIGZhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpIHN0cmluZ2xpYl8jI0YKICNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5Qnl0ZXNPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIDEKICNkZWZpbmUgU1RSSU5HTElCX0NIQVIgICAgICAgICAgIGNoYXIKICNkZWZpbmUgU1RSSU5HTElCX1RZUEVfTkFNRSAgICAgICJzdHJpbmciCiAjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiUyIKQEAgLTE1LDkgKzE4LDYgQEAKICNkZWZpbmUgU1RSSU5HTElCX0lTTElORUJSRUFLKHgpICgoeCA9PSAnXG4nKSB8fCAoeCA9PSAnXHInKSkKICNkZWZpbmUgU1RSSU5HTElCX0lTREVDSU1BTCh4KSAgICgoeCA+PSAnMCcpICYmICh4IDw9ICc5JykpCiAjZGVmaW5lIFNUUklOR0xJQl9UT0RFQ0lNQUwoeCkgICAoU1RSSU5HTElCX0lTREVDSU1BTCh4KSA/ICh4IC0gJzAnKSA6IC0xKQotI2RlZmluZSBTVFJJTkdMSUJfVE9VUFBFUiAgICAgICAgUHlfVE9VUFBFUgotI2RlZmluZSBTVFJJTkdMSUJfVE9MT1dFUiAgICAgICAgUHlfVE9MT1dFUgotI2RlZmluZSBTVFJJTkdMSUJfRklMTCAgICAgICAgICAgbWVtc2V0CiAjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORwogI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRQogI2RlZmluZSBTVFJJTkdMSUJfTkVXICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQpAQCAtMjUsNyArMjUsNSBAQAogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlCeXRlc19DaGVjawogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlCeXRlc19DaGVja0V4YWN0CiAjZGVmaW5lIFNUUklOR0xJQl9UT1NUUiAgICAgICAgICBQeU9iamVjdF9TdHIKLSNkZWZpbmUgU1RSSU5HTElCX0dST1VQSU5HICAgICAgIF9QeUJ5dGVzX0luc2VydFRob3VzYW5kc0dyb3VwaW5nCi0jZGVmaW5lIFNUUklOR0xJQl9HUk9VUElOR19MT0NBTEUgX1B5Qnl0ZXNfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUKICNkZWZpbmUgU1RSSU5HTElCX1RPQVNDSUkgICAgICAgIFB5T2JqZWN0X1JlcHIKICNlbmRpZiAvKiAhU1RSSU5HTElCX1NUUklOR0RFRlNfSCAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMWxpYi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMWxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YzZmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91Y3MxbGliLmgKQEAgLTAsMCArMSwzMSBAQAorLyogdGhpcyBpcyBzb3J0IG9mIGEgaGFjay4gIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIHBsYWNlIChmb3JtYXR0aW5nCisgICBmbG9hdHMpIHdoZXJlIHNvbWUgc3RyaW5nbGliIGNvZGUgdGFrZXMgYSBkaWZmZXJlbnQgcGF0aCBpZiBpdCdzCisgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLworI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICB1Y3MxbGliX2Zhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpICAgICAgICAgICAgIHVjczFsaWJfIyNGCisjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIDEKKyNkZWZpbmUgU1RSSU5HTElCX01BWF9DSEFSICAgICAgIDB4RkZ1CisjZGVmaW5lIFNUUklOR0xJQl9DSEFSICAgICAgICAgICBQeV9VQ1MxCisjZGVmaW5lIFNUUklOR0xJQl9UWVBFX05BTUUgICAgICAidW5pY29kZSIKKyNkZWZpbmUgU1RSSU5HTElCX1BBUlNFX0NPREUgICAgICJVIgorI2RlZmluZSBTVFJJTkdMSUJfRU1QVFkgICAgICAgICAgdW5pY29kZV9lbXB0eQorI2RlZmluZSBTVFJJTkdMSUJfSVNTUEFDRSAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFCisjZGVmaW5lIFNUUklOR0xJQl9JU0xJTkVCUkVBSyAgICBCTE9PTV9MSU5FQlJFQUsKKyNkZWZpbmUgU1RSSU5HTElCX0lTREVDSU1BTCAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9UT0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX1RPREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfU1RSICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEKKyNkZWZpbmUgU1RSSU5HTElCX0xFTiAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RICisjZGVmaW5lIFNUUklOR0xJQl9ORVcgICAgICAgICAgICBfUHlVbmljb2RlX0Zyb21VQ1MxCisjZGVmaW5lIFNUUklOR0xJQl9SRVNJWkUgICAgICAgICBub3Rfc3VwcG9ydGVkCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLX0VYQUNUICAgIFB5VW5pY29kZV9DaGVja0V4YWN0CisKKyNkZWZpbmUgU1RSSU5HTElCX1RPU1RSICAgICAgICAgIFB5T2JqZWN0X1N0cgorI2RlZmluZSBTVFJJTkdMSUJfVE9BU0NJSSAgICAgICAgUHlPYmplY3RfQVNDSUkKKworI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcgX1B5VW5pY29kZV91Y3MxX0luc2VydFRob3VzYW5kc0dyb3VwaW5nCisKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMmxpYi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMmxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZTU3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91Y3MybGliLmgKQEAgLTAsMCArMSwzMCBAQAorLyogdGhpcyBpcyBzb3J0IG9mIGEgaGFjay4gIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIHBsYWNlIChmb3JtYXR0aW5nCisgICBmbG9hdHMpIHdoZXJlIHNvbWUgc3RyaW5nbGliIGNvZGUgdGFrZXMgYSBkaWZmZXJlbnQgcGF0aCBpZiBpdCdzCisgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLworI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICB1Y3MybGliX2Zhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpICAgICAgICAgICAgIHVjczJsaWJfIyNGCisjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIDIKKyNkZWZpbmUgU1RSSU5HTElCX01BWF9DSEFSICAgICAgIDB4RkZGRnUKKyNkZWZpbmUgU1RSSU5HTElCX0NIQVIgICAgICAgICAgIFB5X1VDUzIKKyNkZWZpbmUgU1RSSU5HTElCX1RZUEVfTkFNRSAgICAgICJ1bmljb2RlIgorI2RlZmluZSBTVFJJTkdMSUJfUEFSU0VfQ09ERSAgICAgIlUiCisjZGVmaW5lIFNUUklOR0xJQl9FTVBUWSAgICAgICAgICB1bmljb2RlX2VtcHR5CisjZGVmaW5lIFNUUklOR0xJQl9JU1NQQUNFICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UKKyNkZWZpbmUgU1RSSU5HTElCX0lTTElORUJSRUFLICAgIEJMT09NX0xJTkVCUkVBSworI2RlZmluZSBTVFJJTkdMSUJfSVNERUNJTUFMICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1RPREVDSU1BTCAgICAgIFB5X1VOSUNPREVfVE9ERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQQorI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgKKyNkZWZpbmUgU1RSSU5HTElCX05FVyAgICAgICAgICAgIF9QeVVuaWNvZGVfRnJvbVVDUzIKKyNkZWZpbmUgU1RSSU5HTElCX1JFU0laRSAgICAgICAgIG5vdF9zdXBwb3J0ZWQKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5VW5pY29kZV9DaGVjaworI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QKKworI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfU3RyCisjZGVmaW5lIFNUUklOR0xJQl9UT0FTQ0lJICAgICAgICBQeU9iamVjdF9BU0NJSQorCisjZGVmaW5lIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyBfUHlVbmljb2RlX3VjczJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdWNzNGxpYi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdWNzNGxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0N2EyN2UKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91Y3M0bGliLmgKQEAgLTAsMCArMSwzMCBAQAorLyogdGhpcyBpcyBzb3J0IG9mIGEgaGFjay4gIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIHBsYWNlIChmb3JtYXR0aW5nCisgICBmbG9hdHMpIHdoZXJlIHNvbWUgc3RyaW5nbGliIGNvZGUgdGFrZXMgYSBkaWZmZXJlbnQgcGF0aCBpZiBpdCdzCisgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLworI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICB1Y3M0bGliX2Zhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpICAgICAgICAgICAgIHVjczRsaWJfIyNGCisjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIDQKKyNkZWZpbmUgU1RSSU5HTElCX01BWF9DSEFSICAgICAgIDB4MTBGRkZGdQorI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgUHlfVUNTNAorI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInVuaWNvZGUiCisjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiVSIKKyNkZWZpbmUgU1RSSU5HTElCX0VNUFRZICAgICAgICAgIHVuaWNvZGVfZW1wdHkKKyNkZWZpbmUgU1RSSU5HTElCX0lTU1BBQ0UgICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRQorI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsgICAgQkxPT01fTElORUJSRUFLCisjZGVmaW5lIFNUUklOR0xJQl9JU0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfVE9ERUNJTUFMICAgICAgUHlfVU5JQ09ERV9UT0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBCisjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSAorI2RlZmluZSBTVFJJTkdMSUJfTkVXICAgICAgICAgICAgX1B5VW5pY29kZV9Gcm9tVUNTNAorI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgbm90X3N1cHBvcnRlZAorI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlVbmljb2RlX0NoZWNrCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdAorCisjZGVmaW5lIFNUUklOR0xJQl9UT1NUUiAgICAgICAgICBQeU9iamVjdF9TdHIKKyNkZWZpbmUgU1RSSU5HTElCX1RPQVNDSUkgICAgICAgIFB5T2JqZWN0X0FTQ0lJCisKKyNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nIF9QeVVuaWNvZGVfdWNzNF9JbnNlcnRUaG91c2FuZHNHcm91cGluZworCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91bmRlZi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzExN2VjCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaApAQCAtMCwwICsxLDEyIEBACisjdW5kZWYgIEZBU1RTRUFSQ0gKKyN1bmRlZiAgU1RSSU5HTElCCisjdW5kZWYgIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUgorI3VuZGVmICBTVFJJTkdMSUJfTUFYX0NIQVIKKyN1bmRlZiAgU1RSSU5HTElCX0NIQVIKKyN1bmRlZiAgU1RSSU5HTElCX1NUUgorI3VuZGVmICBTVFJJTkdMSUJfTEVOCisjdW5kZWYgIFNUUklOR0xJQl9ORVcKKyN1bmRlZiAgU1RSSU5HTElCX1JFU0laRQorI3VuZGVmICBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKKyN1bmRlZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdfZm9ybWF0LmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIE9iamVjdHMvc3RyaW5nbGliL3N0cmluZ19mb3JtYXQuaApyZW5hbWUgdG8gT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaAppbmRleCA2YzdhZGNiLi5iZTU4MGM2IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdfZm9ybWF0LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaApAQCAtMSwxNiArMSw3IEBACiAvKgotICAgIHN0cmluZ19mb3JtYXQuaCAtLSBpbXBsZW1lbnRhdGlvbiBvZiBzdHJpbmcuZm9ybWF0KCkuCi0KLSAgICBJdCB1c2VzIHRoZSBPYmplY3RzL3N0cmluZ2xpYiBjb252ZW50aW9ucywgc28gdGhhdCBpdCBjYW4gYmUKLSAgICBjb21waWxlZCBmb3IgYm90aCB1bmljb2RlIGFuZCBzdHJpbmcgb2JqZWN0cy4KKyAgICB1bmljb2RlX2Zvcm1hdC5oIC0tIGltcGxlbWVudGF0aW9uIG9mIHN0ci5mb3JtYXQoKS4KICovCiAKLQotLyogRGVmaW5lcyBmb3IgUHl0aG9uIDIuNiBjb21wYXRpYmlsaXR5ICovCi0jaWYgUFlfVkVSU0lPTl9IRVggPCAweDAzMDAwMDAwCi0jZGVmaW5lIFB5TG9uZ19Gcm9tU3NpemVfdCBfUHlMb25nX0Zyb21Tc2l6ZV90Ci0jZW5kaWYKLQogLyogRGVmaW5lcyBmb3IgbW9yZSBlZmZpY2llbnRseSByZWFsbG9jYXRpbmcgdGhlIHN0cmluZyBidWZmZXIgKi8KICNkZWZpbmUgSU5JVElBTF9TSVpFX0lOQ1JFTUVOVCAxMDAKICNkZWZpbmUgU0laRV9NVUxUSVBMSUVSIDIKQEAgLTI2LDggKzE3LDggQEAKICAgIHVuaWNvZGUgcG9pbnRlcnMuCiAqLwogdHlwZWRlZiBzdHJ1Y3QgewotICAgIFNUUklOR0xJQl9DSEFSICpwdHI7Ci0gICAgU1RSSU5HTElCX0NIQVIgKmVuZDsKKyAgICBQeU9iamVjdCAqc3RyOyAvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBlbmQ7CiB9IFN1YlN0cmluZzsKIAogCkBAIC02NCwzNCArNTUsMzIgQEAKIAogLyogZmlsbCBpbiBhIFN1YlN0cmluZyBmcm9tIGEgcG9pbnRlciBhbmQgbGVuZ3RoICovCiBQeV9MT0NBTF9JTkxJTkUodm9pZCkKLVN1YlN0cmluZ19pbml0KFN1YlN0cmluZyAqc3RyLCBTVFJJTkdMSUJfQ0hBUiAqcCwgUHlfc3NpemVfdCBsZW4pCitTdWJTdHJpbmdfaW5pdChTdWJTdHJpbmcgKnN0ciwgUHlPYmplY3QgKnMsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogewotICAgIHN0ci0+cHRyID0gcDsKLSAgICBpZiAocCA9PSBOVUxMKQotICAgICAgICBzdHItPmVuZCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICBzdHItPmVuZCA9IHN0ci0+cHRyICsgbGVuOworICAgIHN0ci0+c3RyID0gczsKKyAgICBzdHItPnN0YXJ0ID0gc3RhcnQ7CisgICAgc3RyLT5lbmQgPSBlbmQ7CiB9CiAKLS8qIHJldHVybiBhIG5ldyBzdHJpbmcuICBpZiBzdHItPnB0ciBpcyBOVUxMLCByZXR1cm4gTm9uZSAqLworLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+c3RyIGlzIE5VTEwsIHJldHVybiBOb25lICovCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKIFN1YlN0cmluZ19uZXdfb2JqZWN0KFN1YlN0cmluZyAqc3RyKQogewotICAgIGlmIChzdHItPnB0ciA9PSBOVUxMKSB7CisgICAgaWYgKHN0ci0+c3RyID09IE5VTEwpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoc3RyLT5wdHIsIHN0ci0+ZW5kIC0gc3RyLT5wdHIpOworICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKHN0ci0+c3RyLCBzdHItPnN0YXJ0LCBzdHItPmVuZCk7CiB9CiAKLS8qIHJldHVybiBhIG5ldyBzdHJpbmcuICBpZiBzdHItPnB0ciBpcyBOVUxMLCByZXR1cm4gTm9uZSAqLworLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+c3RyIGlzIE5VTEwsIHJldHVybiBOb25lICovCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKIFN1YlN0cmluZ19uZXdfb2JqZWN0X29yX2VtcHR5KFN1YlN0cmluZyAqc3RyKQogewotICAgIGlmIChzdHItPnB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKE5VTEwsIDApOworICAgIGlmIChzdHItPnN0ciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgIH0KLSAgICByZXR1cm4gU1RSSU5HTElCX05FVyhzdHItPnB0ciwgc3RyLT5lbmQgLSBzdHItPnB0cik7CisgICAgcmV0dXJuIFN1YlN0cmluZ19uZXdfb2JqZWN0KHN0cik7CiB9CiAKIC8qIFJldHVybiAxIGlmIGFuIGVycm9yIGhhcyBiZWVuIGRldGVjdGVkIHN3aXRjaGluZyBiZXR3ZWVuIGF1dG9tYXRpYwpAQCAtMTIxLDc0ICsxMTAsNiBAQAogCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogICAgT3V0cHV0IHN0cmluZyBtYW5hZ2VtZW50IGZ1bmN0aW9ucyAgICAgICAqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFNUUklOR0xJQl9DSEFSICpwdHI7Ci0gICAgU1RSSU5HTElCX0NIQVIgKmVuZDsKLSAgICBQeU9iamVjdCAqb2JqOwotICAgIFB5X3NzaXplX3Qgc2l6ZV9pbmNyZW1lbnQ7Ci19IE91dHB1dFN0cmluZzsKLQotLyogaW5pdGlhbGl6ZSBhbiBPdXRwdXRTdHJpbmcgb2JqZWN0LCByZXNlcnZpbmcgc2l6ZSBjaGFyYWN0ZXJzICovCi1zdGF0aWMgaW50Ci1vdXRwdXRfaW5pdGlhbGl6ZShPdXRwdXRTdHJpbmcgKm91dHB1dCwgUHlfc3NpemVfdCBzaXplKQotewotICAgIG91dHB1dC0+b2JqID0gU1RSSU5HTElCX05FVyhOVUxMLCBzaXplKTsKLSAgICBpZiAob3V0cHV0LT5vYmogPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBvdXRwdXQtPnB0ciA9IFNUUklOR0xJQl9TVFIob3V0cHV0LT5vYmopOwotICAgIG91dHB1dC0+ZW5kID0gU1RSSU5HTElCX0xFTihvdXRwdXQtPm9iaikgKyBvdXRwdXQtPnB0cjsKLSAgICBvdXRwdXQtPnNpemVfaW5jcmVtZW50ID0gSU5JVElBTF9TSVpFX0lOQ1JFTUVOVDsKLQotICAgIHJldHVybiAxOwotfQotCi0vKgotICAgIG91dHB1dF9leHRlbmQgcmVhbGxvY2F0ZXMgdGhlIG91dHB1dCBzdHJpbmcgYnVmZmVyLgotICAgIEl0IHJldHVybnMgYSBzdGF0dXM6ICAwIGZvciBhIGZhaWxlZCByZWFsbG9jYXRpb24sCi0gICAgMSBmb3Igc3VjY2Vzcy4KLSovCi0KLXN0YXRpYyBpbnQKLW91dHB1dF9leHRlbmQoT3V0cHV0U3RyaW5nICpvdXRwdXQsIFB5X3NzaXplX3QgY291bnQpCi17Ci0gICAgU1RSSU5HTElCX0NIQVIgKnN0YXJ0cHRyID0gU1RSSU5HTElCX1NUUihvdXRwdXQtPm9iaik7Ci0gICAgUHlfc3NpemVfdCBjdXJsZW4gPSBvdXRwdXQtPnB0ciAtIHN0YXJ0cHRyOwotICAgIFB5X3NzaXplX3QgbWF4bGVuID0gY3VybGVuICsgY291bnQgKyBvdXRwdXQtPnNpemVfaW5jcmVtZW50OwotCi0gICAgaWYgKFNUUklOR0xJQl9SRVNJWkUoJm91dHB1dC0+b2JqLCBtYXhsZW4pIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgc3RhcnRwdHIgPSBTVFJJTkdMSUJfU1RSKG91dHB1dC0+b2JqKTsKLSAgICBvdXRwdXQtPnB0ciA9IHN0YXJ0cHRyICsgY3VybGVuOwotICAgIG91dHB1dC0+ZW5kID0gc3RhcnRwdHIgKyBtYXhsZW47Ci0gICAgaWYgKG91dHB1dC0+c2l6ZV9pbmNyZW1lbnQgPCBNQVhfU0laRV9JTkNSRU1FTlQpCi0gICAgICAgIG91dHB1dC0+c2l6ZV9pbmNyZW1lbnQgKj0gU0laRV9NVUxUSVBMSUVSOwotICAgIHJldHVybiAxOwotfQotCi0vKgotICAgIG91dHB1dF9kYXRhIGR1bXBzIGNoYXJhY3RlcnMgaW50byBvdXIgb3V0cHV0IHN0cmluZwotICAgIGJ1ZmZlci4KLQotICAgIEluIHNvbWUgY2FzZXMsIGl0IGhhcyB0byByZWFsbG9jYXRlIHRoZSBzdHJpbmcuCi0KLSAgICBJdCByZXR1cm5zIGEgc3RhdHVzOiAgMCBmb3IgYSBmYWlsZWQgcmVhbGxvY2F0aW9uLAotICAgIDEgZm9yIHN1Y2Nlc3MuCi0qLwotc3RhdGljIGludAotb3V0cHV0X2RhdGEoT3V0cHV0U3RyaW5nICpvdXRwdXQsIGNvbnN0IFNUUklOR0xJQl9DSEFSICpzLCBQeV9zc2l6ZV90IGNvdW50KQotewotICAgIGlmICgoY291bnQgPiBvdXRwdXQtPmVuZCAtIG91dHB1dC0+cHRyKSAmJiAhb3V0cHV0X2V4dGVuZChvdXRwdXQsIGNvdW50KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbWVtY3B5KG91dHB1dC0+cHRyLCBzLCBjb3VudCAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgIG91dHB1dC0+cHRyICs9IGNvdW50OwotICAgIHJldHVybiAxOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoqKioqKioqKioqICBGb3JtYXQgc3RyaW5nIHBhcnNpbmcgLS0gaW50ZWdlcnMgYW5kIGlkZW50aWZpZXJzICoqKioqKioqKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKQEAgLTE5NywzMSArMTE4LDI4IEBACiB7CiAgICAgUHlfc3NpemVfdCBhY2N1bXVsYXRvciA9IDA7CiAgICAgUHlfc3NpemVfdCBkaWdpdHZhbDsKLSAgICBQeV9zc2l6ZV90IG9sZGFjY3VtdWxhdG9yOwotICAgIFNUUklOR0xJQl9DSEFSICpwOworICAgIFB5X3NzaXplX3QgaTsKIAogICAgIC8qIGVtcHR5IHN0cmluZyBpcyBhbiBlcnJvciAqLwotICAgIGlmIChzdHItPnB0ciA+PSBzdHItPmVuZCkKKyAgICBpZiAoc3RyLT5zdGFydCA+PSBzdHItPmVuZCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgZm9yIChwID0gc3RyLT5wdHI7IHAgPCBzdHItPmVuZDsgcCsrKSB7Ci0gICAgICAgIGRpZ2l0dmFsID0gU1RSSU5HTElCX1RPREVDSU1BTCgqcCk7CisgICAgZm9yIChpID0gc3RyLT5zdGFydDsgaSA8IHN0ci0+ZW5kOyBpKyspIHsKKyAgICAgICAgZGlnaXR2YWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChQeVVuaWNvZGVfUkVBRF9DSEFSKHN0ci0+c3RyLCBpKSk7CiAgICAgICAgIGlmIChkaWdpdHZhbCA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIC8qCi0gICAgICAgICAgIFRoaXMgdHJpY2sgd2FzIGNvcGllZCBmcm9tIG9sZCBVbmljb2RlIGZvcm1hdCBjb2RlLiAgSXQncyBjdXRlLAotICAgICAgICAgICBidXQgd291bGQgcmVhbGx5IHN1Y2sgb24gYW4gb2xkIG1hY2hpbmUgd2l0aCBhIHNsb3cgZGl2aWRlCi0gICAgICAgICAgIGltcGxlbWVudGF0aW9uLiAgRm9ydHVuYXRlbHksIGluIHRoZSBub3JtYWwgY2FzZSB3ZSBkbyBub3QKLSAgICAgICAgICAgZXhwZWN0IHRvbyBtYW55IGRpZ2l0cy4KKyAgICAgICAgICAgRGV0ZWN0IHBvc3NpYmxlIG92ZXJmbG93IGJlZm9yZSBpdCBoYXBwZW5zOgorCisgICAgICAgICAgICAgIGFjY3VtdWxhdG9yICogMTAgKyBkaWdpdHZhbCA+IFBZX1NTSVpFX1RfTUFYIGlmIGFuZCBvbmx5IGlmCisgICAgICAgICAgICAgIGFjY3VtdWxhdG9yID4gKFBZX1NTSVpFX1RfTUFYIC0gZGlnaXR2YWwpIC8gMTAuCiAgICAgICAgICovCi0gICAgICAgIG9sZGFjY3VtdWxhdG9yID0gYWNjdW11bGF0b3I7Ci0gICAgICAgIGFjY3VtdWxhdG9yICo9IDEwOwotICAgICAgICBpZiAoKGFjY3VtdWxhdG9yKzEwKS8xMCAhPSBvbGRhY2N1bXVsYXRvcisxKSB7CisgICAgICAgIGlmIChhY2N1bXVsYXRvciA+IChQWV9TU0laRV9UX01BWCAtIGRpZ2l0dmFsKSAvIDEwKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgZGVjaW1hbCBkaWdpdHMgaW4gZm9ybWF0IHN0cmluZyIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIGFjY3VtdWxhdG9yICs9IGRpZ2l0dmFsOworICAgICAgICBhY2N1bXVsYXRvciA9IGFjY3VtdWxhdG9yICogMTAgKyBkaWdpdHZhbDsKICAgICB9CiAgICAgcmV0dXJuIGFjY3VtdWxhdG9yOwogfQpAQCAtMjgyLDM0ICsyMDAsMzYgQEAKICAgICAgICBsaWZldGltZSBvZiB0aGUgaXRlcmF0b3IuICBjYW4gYmUgZW1wdHkgKi8KICAgICBTdWJTdHJpbmcgc3RyOwogCi0gICAgLyogcG9pbnRlciB0byB3aGVyZSB3ZSBhcmUgaW5zaWRlIGZpZWxkX25hbWUgKi8KLSAgICBTVFJJTkdMSUJfQ0hBUiAqcHRyOworICAgIC8qIGluZGV4IHRvIHdoZXJlIHdlIGFyZSBpbnNpZGUgZmllbGRfbmFtZSAqLworICAgIFB5X3NzaXplX3QgaW5kZXg7CiB9IEZpZWxkTmFtZUl0ZXJhdG9yOwogCiAKIHN0YXRpYyBpbnQKLUZpZWxkTmFtZUl0ZXJhdG9yX2luaXQoRmllbGROYW1lSXRlcmF0b3IgKnNlbGYsIFNUUklOR0xJQl9DSEFSICpwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuKQorRmllbGROYW1lSXRlcmF0b3JfaW5pdChGaWVsZE5hbWVJdGVyYXRvciAqc2VsZiwgUHlPYmplY3QgKnMsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogewotICAgIFN1YlN0cmluZ19pbml0KCZzZWxmLT5zdHIsIHB0ciwgbGVuKTsKLSAgICBzZWxmLT5wdHIgPSBzZWxmLT5zdHIucHRyOworICAgIFN1YlN0cmluZ19pbml0KCZzZWxmLT5zdHIsIHMsIHN0YXJ0LCBlbmQpOworICAgIHNlbGYtPmluZGV4ID0gc3RhcnQ7CiAgICAgcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBpbnQKIF9GaWVsZE5hbWVJdGVyYXRvcl9hdHRyKEZpZWxkTmFtZUl0ZXJhdG9yICpzZWxmLCBTdWJTdHJpbmcgKm5hbWUpCiB7Ci0gICAgU1RSSU5HTElCX0NIQVIgYzsKKyAgICBQeV9VQ1M0IGM7CiAKLSAgICBuYW1lLT5wdHIgPSBzZWxmLT5wdHI7CisgICAgbmFtZS0+c3RyID0gc2VsZi0+c3RyLnN0cjsKKyAgICBuYW1lLT5zdGFydCA9IHNlbGYtPmluZGV4OwogCiAgICAgLyogcmV0dXJuIGV2ZXJ5dGhpbmcgdW50aWwgJy4nIG9yICdbJyAqLwotICAgIHdoaWxlIChzZWxmLT5wdHIgPCBzZWxmLT5zdHIuZW5kKSB7Ci0gICAgICAgIHN3aXRjaCAoYyA9ICpzZWxmLT5wdHIrKykgeworICAgIHdoaWxlIChzZWxmLT5pbmRleCA8IHNlbGYtPnN0ci5lbmQpIHsKKyAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc2VsZi0+c3RyLnN0ciwgc2VsZi0+aW5kZXgrKyk7CisgICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICBjYXNlICdbJzoKICAgICAgICAgY2FzZSAnLic6CiAgICAgICAgICAgICAvKiBiYWNrdXAgc28gdGhhdCB3ZSB0aGlzIGNoYXJhY3RlciB3aWxsIGJlIHNlZW4gbmV4dCB0aW1lICovCi0gICAgICAgICAgICBzZWxmLT5wdHItLTsKKyAgICAgICAgICAgIHNlbGYtPmluZGV4LS07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzE3LDcgKzIzNyw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAvKiBlbmQgb2Ygc3RyaW5nIGlzIG9rYXkgKi8KLSAgICBuYW1lLT5lbmQgPSBzZWxmLT5wdHI7CisgICAgbmFtZS0+ZW5kID0gc2VsZi0+aW5kZXg7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTMyNSwxMyArMjQ1LDE1IEBACiBfRmllbGROYW1lSXRlcmF0b3JfaXRlbShGaWVsZE5hbWVJdGVyYXRvciAqc2VsZiwgU3ViU3RyaW5nICpuYW1lKQogewogICAgIGludCBicmFja2V0X3NlZW4gPSAwOwotICAgIFNUUklOR0xJQl9DSEFSIGM7CisgICAgUHlfVUNTNCBjOwogCi0gICAgbmFtZS0+cHRyID0gc2VsZi0+cHRyOworICAgIG5hbWUtPnN0ciA9IHNlbGYtPnN0ci5zdHI7CisgICAgbmFtZS0+c3RhcnQgPSBzZWxmLT5pbmRleDsKIAogICAgIC8qIHJldHVybiBldmVyeXRoaW5nIHVudGlsICddJyAqLwotICAgIHdoaWxlIChzZWxmLT5wdHIgPCBzZWxmLT5zdHIuZW5kKSB7Ci0gICAgICAgIHN3aXRjaCAoYyA9ICpzZWxmLT5wdHIrKykgeworICAgIHdoaWxlIChzZWxmLT5pbmRleCA8IHNlbGYtPnN0ci5lbmQpIHsKKyAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc2VsZi0+c3RyLnN0ciwgc2VsZi0+aW5kZXgrKyk7CisgICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICBjYXNlICddJzoKICAgICAgICAgICAgIGJyYWNrZXRfc2VlbiA9IDE7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM0OCw3ICsyNzAsNyBAQAogCiAgICAgLyogZW5kIG9mIHN0cmluZyBpcyBva2F5ICovCiAgICAgLyogZG9uJ3QgaW5jbHVkZSB0aGUgJ10nICovCi0gICAgbmFtZS0+ZW5kID0gc2VsZi0+cHRyLTE7CisgICAgbmFtZS0+ZW5kID0gc2VsZi0+aW5kZXgtMTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMzU4LDEwICsyODAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqbmFtZV9pZHgsIFN1YlN0cmluZyAqbmFtZSkKIHsKICAgICAvKiBjaGVjayBhdCBlbmQgb2YgaW5wdXQgKi8KLSAgICBpZiAoc2VsZi0+cHRyID49IHNlbGYtPnN0ci5lbmQpCisgICAgaWYgKHNlbGYtPmluZGV4ID49IHNlbGYtPnN0ci5lbmQpCiAgICAgICAgIHJldHVybiAxOwogCi0gICAgc3dpdGNoICgqc2VsZi0+cHRyKyspIHsKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9SRUFEX0NIQVIoc2VsZi0+c3RyLnN0ciwgc2VsZi0+aW5kZXgrKykpIHsKICAgICBjYXNlICcuJzoKICAgICAgICAgKmlzX2F0dHJpYnV0ZSA9IDE7CiAgICAgICAgIGlmIChfRmllbGROYW1lSXRlcmF0b3JfYXR0cihzZWxmLCBuYW1lKSA9PSAwKQpAQCAtMzg0LDcgKzMwNiw3IEBACiAgICAgfQogCiAgICAgLyogZW1wdHkgc3RyaW5nIGlzIGFuIGVycm9yICovCi0gICAgaWYgKG5hbWUtPnB0ciA9PSBuYW1lLT5lbmQpIHsKKyAgICBpZiAobmFtZS0+c3RhcnQgPT0gbmFtZS0+ZW5kKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiRW1wdHkgYXR0cmlidXRlIGluIGZvcm1hdCBzdHJpbmciKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDAwLDI0ICszMjIsMjMgQEAKICAgICAgICAgICAgJ3Jlc3QnIGlzIGFuIGl0ZXJhdG9yIHRvIHJldHVybiB0aGUgcmVzdAogKi8KIHN0YXRpYyBpbnQKLWZpZWxkX25hbWVfc3BsaXQoU1RSSU5HTElCX0NIQVIgKnB0ciwgUHlfc3NpemVfdCBsZW4sIFN1YlN0cmluZyAqZmlyc3QsCitmaWVsZF9uYW1lX3NwbGl0KFB5T2JqZWN0ICpzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBTdWJTdHJpbmcgKmZpcnN0LAogICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpmaXJzdF9pZHgsIEZpZWxkTmFtZUl0ZXJhdG9yICpyZXN0LAogICAgICAgICAgICAgICAgICBBdXRvTnVtYmVyICphdXRvX251bWJlcikKIHsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjOwotICAgIFNUUklOR0xJQl9DSEFSICpwID0gcHRyOwotICAgIFNUUklOR0xJQl9DSEFSICplbmQgPSBwdHIgKyBsZW47CisgICAgUHlfVUNTNCBjOworICAgIFB5X3NzaXplX3QgaSA9IHN0YXJ0OwogICAgIGludCBmaWVsZF9uYW1lX2lzX2VtcHR5OwogICAgIGludCB1c2luZ19udW1lcmljX2luZGV4OwogCiAgICAgLyogZmluZCB0aGUgcGFydCB1cCB1bnRpbCB0aGUgZmlyc3QgJy4nIG9yICdbJyAqLwotICAgIHdoaWxlIChwIDwgZW5kKSB7Ci0gICAgICAgIHN3aXRjaCAoYyA9ICpwKyspIHsKKyAgICB3aGlsZSAoaSA8IGVuZCkgeworICAgICAgICBzd2l0Y2ggKGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHN0ciwgaSsrKSkgewogICAgICAgICBjYXNlICdbJzoKICAgICAgICAgY2FzZSAnLic6CiAgICAgICAgICAgICAvKiBiYWNrdXAgc28gdGhhdCB3ZSB0aGlzIGNoYXJhY3RlciBpcyBhdmFpbGFibGUgdG8gdGhlCiAgICAgICAgICAgICAgICAicmVzdCIgaXRlcmF0b3IgKi8KLSAgICAgICAgICAgIHAtLTsKKyAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY29udGludWU7CkBAIC00MjYsMTUgKzM0NywxNSBAQAogICAgIH0KIAogICAgIC8qIHNldCB1cCB0aGUgcmV0dXJuIHZhbHVlcyAqLwotICAgIFN1YlN0cmluZ19pbml0KGZpcnN0LCBwdHIsIHAgLSBwdHIpOwotICAgIEZpZWxkTmFtZUl0ZXJhdG9yX2luaXQocmVzdCwgcCwgZW5kIC0gcCk7CisgICAgU3ViU3RyaW5nX2luaXQoZmlyc3QsIHN0ciwgc3RhcnQsIGkpOworICAgIEZpZWxkTmFtZUl0ZXJhdG9yX2luaXQocmVzdCwgc3RyLCBpLCBlbmQpOwogCiAgICAgLyogc2VlIGlmICJmaXJzdCIgaXMgYW4gaW50ZWdlciwgaW4gd2hpY2ggY2FzZSBpdCdzIHVzZWQgYXMgYW4gaW5kZXggKi8KICAgICAqZmlyc3RfaWR4ID0gZ2V0X2ludGVnZXIoZmlyc3QpOwogICAgIGlmICgqZmlyc3RfaWR4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZmllbGRfbmFtZV9pc19lbXB0eSA9IGZpcnN0LT5wdHIgPj0gZmlyc3QtPmVuZDsKKyAgICBmaWVsZF9uYW1lX2lzX2VtcHR5ID0gZmlyc3QtPnN0YXJ0ID49IGZpcnN0LT5lbmQ7CiAKICAgICAvKiBJZiB0aGUgZmllbGQgbmFtZSBpcyBvbWl0dGVkIG9yIGlmIHdlIGhhdmUgYSBudW1lcmljIGluZGV4CiAgICAgICAgc3BlY2lmaWVkLCB0aGVuIHdlJ3JlIGRvaW5nIG51bWVyaWMgaW5kZXhpbmcgaW50byBhcmdzLiAqLwpAQCAtNDg5LDcgKzQxMCw3IEBACiAgICAgUHlfc3NpemVfdCBpbmRleDsKICAgICBGaWVsZE5hbWVJdGVyYXRvciByZXN0OwogCi0gICAgaWYgKCFmaWVsZF9uYW1lX3NwbGl0KGlucHV0LT5wdHIsIGlucHV0LT5lbmQgLSBpbnB1dC0+cHRyLCAmZmlyc3QsCisgICAgaWYgKCFmaWVsZF9uYW1lX3NwbGl0KGlucHV0LT5zdHIsIGlucHV0LT5zdGFydCwgaW5wdXQtPmVuZCwgJmZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5kZXgsICZyZXN0LCBhdXRvX251bWJlcikpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC01NzMsMzkgKzQ5NCw0MSBAQAogICAgIGFwcGVuZHMgdG8gdGhlIG91dHB1dC4KICovCiBzdGF0aWMgaW50Ci1yZW5kZXJfZmllbGQoUHlPYmplY3QgKmZpZWxkb2JqLCBTdWJTdHJpbmcgKmZvcm1hdF9zcGVjLCBPdXRwdXRTdHJpbmcgKm91dHB1dCkKK3JlbmRlcl9maWVsZChQeU9iamVjdCAqZmllbGRvYmosIFN1YlN0cmluZyAqZm9ybWF0X3NwZWMsIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKICAgICBpbnQgb2sgPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlY19vYmplY3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICooKmZvcm1hdHRlcikoUHlPYmplY3QgKiwgU1RSSU5HTElCX0NIQVIgKiwgUHlfc3NpemVfdCkgPSBOVUxMOwotICAgIFNUUklOR0xJQl9DSEFSKiBmb3JtYXRfc3BlY19zdGFydCA9IGZvcm1hdF9zcGVjLT5wdHIgPwotICAgICAgICAgICAgZm9ybWF0X3NwZWMtPnB0ciA6IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4gPSBmb3JtYXRfc3BlYy0+cHRyID8KLSAgICAgICAgICAgIGZvcm1hdF9zcGVjLT5lbmQgLSBmb3JtYXRfc3BlYy0+cHRyIDogMDsKKyAgICBpbnQgKCpmb3JtYXR0ZXIpIChfUHlVbmljb2RlV3JpdGVyKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlfc3NpemVfdCwgUHlfc3NpemVfdCkgPSBOVUxMOworICAgIGludCBlcnI7CiAKICAgICAvKiBJZiB3ZSBrbm93IHRoZSB0eXBlIGV4YWN0bHksIHNraXAgdGhlIGxvb2t1cCBvZiBfX2Zvcm1hdF9fIGFuZCBqdXN0CiAgICAgICAgY2FsbCB0aGUgZm9ybWF0dGVyIGRpcmVjdGx5LiAqLwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChmaWVsZG9iaikpCi0gICAgICAgIGZvcm1hdHRlciA9IF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWQ7CisgICAgICAgIGZvcm1hdHRlciA9IF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWRXcml0ZXI7CiAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrRXhhY3QoZmllbGRvYmopKQotICAgICAgICBmb3JtYXR0ZXIgPV9QeUxvbmdfRm9ybWF0QWR2YW5jZWQ7CisgICAgICAgIGZvcm1hdHRlciA9IF9QeUxvbmdfRm9ybWF0QWR2YW5jZWRXcml0ZXI7CiAgICAgZWxzZSBpZiAoUHlGbG9hdF9DaGVja0V4YWN0KGZpZWxkb2JqKSkKLSAgICAgICAgZm9ybWF0dGVyID0gX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWQ7Ci0KLSAgICAvKiBYWFg6IGZvciAyLjYsIGNvbnZlcnQgZm9ybWF0X3NwZWMgdG8gdGhlIGFwcHJvcHJpYXRlIHR5cGUKLSAgICAgICAodW5pY29kZSwgc3RyKSAqLworICAgICAgICBmb3JtYXR0ZXIgPSBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZFdyaXRlcjsKKyAgICBlbHNlIGlmIChQeUNvbXBsZXhfQ2hlY2tFeGFjdChmaWVsZG9iaikpCisgICAgICAgIGZvcm1hdHRlciA9IF9QeUNvbXBsZXhfRm9ybWF0QWR2YW5jZWRXcml0ZXI7CiAKICAgICBpZiAoZm9ybWF0dGVyKSB7CiAgICAgICAgIC8qIHdlIGtub3cgZXhhY3RseSB3aGljaCBmb3JtYXR0ZXIgd2lsbCBiZSBjYWxsZWQgd2hlbiBfX2Zvcm1hdF9fIGlzCiAgICAgICAgICAgIGxvb2tlZCB1cCwgc28gY2FsbCBpdCBkaXJlY3RseSwgaW5zdGVhZC4gKi8KLSAgICAgICAgcmVzdWx0ID0gZm9ybWF0dGVyKGZpZWxkb2JqLCBmb3JtYXRfc3BlY19zdGFydCwgZm9ybWF0X3NwZWNfbGVuKTsKKyAgICAgICAgZXJyID0gZm9ybWF0dGVyKHdyaXRlciwgZmllbGRvYmosIGZvcm1hdF9zcGVjLT5zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlYy0+c3RhcnQsIGZvcm1hdF9zcGVjLT5lbmQpOworICAgICAgICByZXR1cm4gKGVyciA9PSAwKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIFdlIG5lZWQgdG8gY3JlYXRlIGFuIG9iamVjdCBvdXQgb2YgdGhlIHBvaW50ZXJzIHdlIGhhdmUsIGJlY2F1c2UKICAgICAgICAgICAgX19mb3JtYXRfXyB0YWtlcyBhIHN0cmluZy91bmljb2RlIG9iamVjdCBmb3IgZm9ybWF0X3NwZWMuICovCi0gICAgICAgIGZvcm1hdF9zcGVjX29iamVjdCA9IFNUUklOR0xJQl9ORVcoZm9ybWF0X3NwZWNfc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWNfbGVuKTsKKyAgICAgICAgaWYgKGZvcm1hdF9zcGVjLT5zdHIpCisgICAgICAgICAgICBmb3JtYXRfc3BlY19vYmplY3QgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGZvcm1hdF9zcGVjLT5zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjLT5zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWMtPmVuZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZvcm1hdF9zcGVjX29iamVjdCA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgICAgIGlmIChmb3JtYXRfc3BlY19vYmplY3QgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZG9uZTsKIApAQCAtNjE0LDI0ICs1MzcsMTAgQEAKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKIAotI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDMwMDAwMDAKLSAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHJlc3VsdCkpOwotI2Vsc2UKLSAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhyZXN1bHQpIHx8IFB5VW5pY29kZV9DaGVjayhyZXN1bHQpKTsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cih3cml0ZXIsIHJlc3VsdCkgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBvayA9IDE7CiAKLSAgICAvKiBDb252ZXJ0IHJlc3VsdCB0byBvdXIgdHlwZS4gIFdlIGNvdWxkIGJlIHN0ciwgYW5kIHJlc3VsdCBjb3VsZAotICAgICAgIGJlIHVuaWNvZGUgKi8KLSAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICp0bXAgPSBTVFJJTkdMSUJfVE9TVFIocmVzdWx0KTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gdG1wOwotICAgIH0KLSNlbmRpZgotCi0gICAgb2sgPSBvdXRwdXRfZGF0YShvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfU1RSKHJlc3VsdCksIFNUUklOR0xJQl9MRU4ocmVzdWx0KSk7CiBkb25lOgogICAgIFB5X1hERUNSRUYoZm9ybWF0X3NwZWNfb2JqZWN0KTsKICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CkBAIC02NDAsMjMgKzU0OSwyNCBAQAogCiBzdGF0aWMgaW50CiBwYXJzZV9maWVsZChTdWJTdHJpbmcgKnN0ciwgU3ViU3RyaW5nICpmaWVsZF9uYW1lLCBTdWJTdHJpbmcgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmNvbnZlcnNpb24pCisgICAgICAgICAgICBQeV9VQ1M0ICpjb252ZXJzaW9uKQogewogICAgIC8qIE5vdGUgdGhpcyBmdW5jdGlvbiB3b3JrcyBpZiB0aGUgZmllbGQgbmFtZSBpcyB6ZXJvIGxlbmd0aCwKICAgICAgICB3aGljaCBpcyBnb29kLiAgWmVybyBsZW5ndGggZmllbGQgbmFtZXMgYXJlIGhhbmRsZWQgbGF0ZXIsIGluCiAgICAgICAgZmllbGRfbmFtZV9zcGxpdC4gKi8KIAotICAgIFNUUklOR0xJQl9DSEFSIGMgPSAwOworICAgIFB5X1VDUzQgYyA9IDA7CiAKICAgICAvKiBpbml0aWFsaXplIHRoZXNlLCBhcyB0aGV5IG1heSBiZSBlbXB0eSAqLwogICAgICpjb252ZXJzaW9uID0gJ1wwJzsKLSAgICBTdWJTdHJpbmdfaW5pdChmb3JtYXRfc3BlYywgTlVMTCwgMCk7CisgICAgU3ViU3RyaW5nX2luaXQoZm9ybWF0X3NwZWMsIE5VTEwsIDAsIDApOwogCiAgICAgLyogU2VhcmNoIGZvciB0aGUgZmllbGQgbmFtZS4gIGl0J3MgdGVybWluYXRlZCBieSB0aGUgZW5kIG9mCiAgICAgICAgdGhlIHN0cmluZywgb3IgYSAnOicgb3IgJyEnICovCi0gICAgZmllbGRfbmFtZS0+cHRyID0gc3RyLT5wdHI7Ci0gICAgd2hpbGUgKHN0ci0+cHRyIDwgc3RyLT5lbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKihzdHItPnB0cisrKSkgeworICAgIGZpZWxkX25hbWUtPnN0ciA9IHN0ci0+c3RyOworICAgIGZpZWxkX25hbWUtPnN0YXJ0ID0gc3RyLT5zdGFydDsKKyAgICB3aGlsZSAoc3RyLT5zdGFydCA8IHN0ci0+ZW5kKSB7CisgICAgICAgIHN3aXRjaCAoKGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHN0ci0+c3RyLCBzdHItPnN0YXJ0KyspKSkgewogICAgICAgICBjYXNlICc6JzoKICAgICAgICAgY2FzZSAnISc6CiAgICAgICAgICAgICBicmVhazsKQEAgLTY2OSwyNiArNTc5LDI3IEBACiAgICAgaWYgKGMgPT0gJyEnIHx8IGMgPT0gJzonKSB7CiAgICAgICAgIC8qIHdlIGhhdmUgYSBmb3JtYXQgc3BlY2lmaWVyIGFuZC9vciBhIGNvbnZlcnNpb24gKi8KICAgICAgICAgLyogZG9uJ3QgaW5jbHVkZSB0aGUgbGFzdCBjaGFyYWN0ZXIgKi8KLSAgICAgICAgZmllbGRfbmFtZS0+ZW5kID0gc3RyLT5wdHItMTsKKyAgICAgICAgZmllbGRfbmFtZS0+ZW5kID0gc3RyLT5zdGFydC0xOwogCiAgICAgICAgIC8qIHRoZSBmb3JtYXQgc3BlY2lmaWVyIGlzIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgKi8KLSAgICAgICAgZm9ybWF0X3NwZWMtPnB0ciA9IHN0ci0+cHRyOworICAgICAgICBmb3JtYXRfc3BlYy0+c3RyID0gc3RyLT5zdHI7CisgICAgICAgIGZvcm1hdF9zcGVjLT5zdGFydCA9IHN0ci0+c3RhcnQ7CiAgICAgICAgIGZvcm1hdF9zcGVjLT5lbmQgPSBzdHItPmVuZDsKIAogICAgICAgICAvKiBzZWUgaWYgdGhlcmUncyBhIGNvbnZlcnNpb24gc3BlY2lmaWVyICovCiAgICAgICAgIGlmIChjID09ICchJykgewogICAgICAgICAgICAgLyogdGhlcmUgbXVzdCBiZSBhbm90aGVyIGNoYXJhY3RlciBwcmVzZW50ICovCi0gICAgICAgICAgICBpZiAoZm9ybWF0X3NwZWMtPnB0ciA+PSBmb3JtYXRfc3BlYy0+ZW5kKSB7CisgICAgICAgICAgICBpZiAoZm9ybWF0X3NwZWMtPnN0YXJ0ID49IGZvcm1hdF9zcGVjLT5lbmQpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZCBvZiBmb3JtYXQgd2hpbGUgbG9va2luZyBmb3IgY29udmVyc2lvbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZXIiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpjb252ZXJzaW9uID0gKihmb3JtYXRfc3BlYy0+cHRyKyspOworICAgICAgICAgICAgKmNvbnZlcnNpb24gPSBQeVVuaWNvZGVfUkVBRF9DSEFSKGZvcm1hdF9zcGVjLT5zdHIsIGZvcm1hdF9zcGVjLT5zdGFydCsrKTsKIAogICAgICAgICAgICAgLyogaWYgdGhlcmUgaXMgYW5vdGhlciBjaGFyYWN0ZXIsIGl0IG11c3QgYmUgYSBjb2xvbiAqLwotICAgICAgICAgICAgaWYgKGZvcm1hdF9zcGVjLT5wdHIgPCBmb3JtYXRfc3BlYy0+ZW5kKSB7Ci0gICAgICAgICAgICAgICAgYyA9ICooZm9ybWF0X3NwZWMtPnB0cisrKTsKKyAgICAgICAgICAgIGlmIChmb3JtYXRfc3BlYy0+c3RhcnQgPCBmb3JtYXRfc3BlYy0+ZW5kKSB7CisgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoZm9ybWF0X3NwZWMtPnN0ciwgZm9ybWF0X3NwZWMtPnN0YXJ0KyspOwogICAgICAgICAgICAgICAgIGlmIChjICE9ICc6JykgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAnOicgYWZ0ZXIgZm9ybWF0IHNwZWNpZmllciIpOwpAQCAtNjk5LDcgKzYxMCw3IEBACiAgICAgfQogICAgIGVsc2UKICAgICAgICAgLyogZW5kIG9mIHN0cmluZywgdGhlcmUncyBubyBmb3JtYXRfc3BlYyBvciBjb252ZXJzaW9uICovCi0gICAgICAgIGZpZWxkX25hbWUtPmVuZCA9IHN0ci0+cHRyOworICAgICAgICBmaWVsZF9uYW1lLT5lbmQgPSBzdHItPnN0YXJ0OwogCiAgICAgcmV0dXJuIDE7CiB9CkBAIC03MTgsOSArNjI5LDEwIEBACiB9IE1hcmt1cEl0ZXJhdG9yOwogCiBzdGF0aWMgaW50Ci1NYXJrdXBJdGVyYXRvcl9pbml0KE1hcmt1cEl0ZXJhdG9yICpzZWxmLCBTVFJJTkdMSUJfQ0hBUiAqcHRyLCBQeV9zc2l6ZV90IGxlbikKK01hcmt1cEl0ZXJhdG9yX2luaXQoTWFya3VwSXRlcmF0b3IgKnNlbGYsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogewotICAgIFN1YlN0cmluZ19pbml0KCZzZWxmLT5zdHIsIHB0ciwgbGVuKTsKKyAgICBTdWJTdHJpbmdfaW5pdCgmc2VsZi0+c3RyLCBzdHIsIHN0YXJ0LCBlbmQpOwogICAgIHJldHVybiAxOwogfQogCkBAIC03MjksMzAgKzY0MSwzMCBAQAogc3RhdGljIGludAogTWFya3VwSXRlcmF0b3JfbmV4dChNYXJrdXBJdGVyYXRvciAqc2VsZiwgU3ViU3RyaW5nICpsaXRlcmFsLAogICAgICAgICAgICAgICAgICAgICBpbnQgKmZpZWxkX3ByZXNlbnQsIFN1YlN0cmluZyAqZmllbGRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgU3ViU3RyaW5nICpmb3JtYXRfc3BlYywgU1RSSU5HTElCX0NIQVIgKmNvbnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgIFN1YlN0cmluZyAqZm9ybWF0X3NwZWMsIFB5X1VDUzQgKmNvbnZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgIGludCAqZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nKQogewogICAgIGludCBhdF9lbmQ7Ci0gICAgU1RSSU5HTElCX0NIQVIgYyA9IDA7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnN0YXJ0OworICAgIFB5X1VDUzQgYyA9IDA7CisgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBpbnQgY291bnQ7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgaW50IG1hcmt1cF9mb2xsb3dzID0gMDsKIAogICAgIC8qIGluaXRpYWxpemUgYWxsIG9mIHRoZSBvdXRwdXQgdmFyaWFibGVzICovCi0gICAgU3ViU3RyaW5nX2luaXQobGl0ZXJhbCwgTlVMTCwgMCk7Ci0gICAgU3ViU3RyaW5nX2luaXQoZmllbGRfbmFtZSwgTlVMTCwgMCk7Ci0gICAgU3ViU3RyaW5nX2luaXQoZm9ybWF0X3NwZWMsIE5VTEwsIDApOworICAgIFN1YlN0cmluZ19pbml0KGxpdGVyYWwsIE5VTEwsIDAsIDApOworICAgIFN1YlN0cmluZ19pbml0KGZpZWxkX25hbWUsIE5VTEwsIDAsIDApOworICAgIFN1YlN0cmluZ19pbml0KGZvcm1hdF9zcGVjLCBOVUxMLCAwLCAwKTsKICAgICAqY29udmVyc2lvbiA9ICdcMCc7CiAgICAgKmZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZyA9IDA7CiAgICAgKmZpZWxkX3ByZXNlbnQgPSAwOwogCiAgICAgLyogTm8gbW9yZSBpbnB1dCwgZW5kIG9mIGl0ZXJhdG9yLiAgVGhpcyBpcyB0aGUgbm9ybWFsIGV4aXQKICAgICAgICBwYXRoLiAqLwotICAgIGlmIChzZWxmLT5zdHIucHRyID49IHNlbGYtPnN0ci5lbmQpCisgICAgaWYgKHNlbGYtPnN0ci5zdGFydCA+PSBzZWxmLT5zdHIuZW5kKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIHN0YXJ0ID0gc2VsZi0+c3RyLnB0cjsKKyAgICBzdGFydCA9IHNlbGYtPnN0ci5zdGFydDsKIAogICAgIC8qIEZpcnN0IHJlYWQgYW55IGxpdGVyYWwgdGV4dC4gUmVhZCB1bnRpbCB0aGUgZW5kIG9mIHN0cmluZywgYW4KICAgICAgICBlc2NhcGVkICd7JyBvciAnfScsIG9yIGFuIHVuZXNjYXBlZCAneycuICBJbiBvcmRlciB0byBuZXZlcgpAQCAtNzYxLDggKzY3Myw4IEBACiAgICAgICAgaW5jbHVkaW5nIHRoZSBicmFjZSwgYnV0IG5vIGZvcm1hdCBvYmplY3QuICBUaGUgbmV4dCB0aW1lCiAgICAgICAgdGhyb3VnaCwgd2UnbGwgcmV0dXJuIHRoZSByZXN0IG9mIHRoZSBsaXRlcmFsLCBza2lwcGluZyBwYXN0CiAgICAgICAgdGhlIHNlY29uZCBjb25zZWN1dGl2ZSBicmFjZS4gKi8KLSAgICB3aGlsZSAoc2VsZi0+c3RyLnB0ciA8IHNlbGYtPnN0ci5lbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKihzZWxmLT5zdHIucHRyKyspKSB7CisgICAgd2hpbGUgKHNlbGYtPnN0ci5zdGFydCA8IHNlbGYtPnN0ci5lbmQpIHsKKyAgICAgICAgc3dpdGNoIChjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5zdHIuc3RhcnQrKykpIHsKICAgICAgICAgY2FzZSAneyc6CiAgICAgICAgIGNhc2UgJ30nOgogICAgICAgICAgICAgbWFya3VwX2ZvbGxvd3MgPSAxOwpAQCAtNzczLDEwICs2ODUsMTIgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgYXRfZW5kID0gc2VsZi0+c3RyLnB0ciA+PSBzZWxmLT5zdHIuZW5kOwotICAgIGxlbiA9IHNlbGYtPnN0ci5wdHIgLSBzdGFydDsKKyAgICBhdF9lbmQgPSBzZWxmLT5zdHIuc3RhcnQgPj0gc2VsZi0+c3RyLmVuZDsKKyAgICBsZW4gPSBzZWxmLT5zdHIuc3RhcnQgLSBzdGFydDsKIAotICAgIGlmICgoYyA9PSAnfScpICYmIChhdF9lbmQgfHwgKGMgIT0gKnNlbGYtPnN0ci5wdHIpKSkgeworICAgIGlmICgoYyA9PSAnfScpICYmIChhdF9lbmQgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgKGMgIT0gUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0ci5zdGFydCkpKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlNpbmdsZSAnfScgZW5jb3VudGVyZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgImluIGZvcm1hdCBzdHJpbmciKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC03ODcsMTAgKzcwMSwxMCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFhdF9lbmQpIHsKLSAgICAgICAgaWYgKGMgPT0gKnNlbGYtPnN0ci5wdHIpIHsKKyAgICAgICAgaWYgKGMgPT0gUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5zdHIuc3RhcnQpKSB7CiAgICAgICAgICAgICAvKiBlc2NhcGVkIH0gb3Igeywgc2tpcCBpdCBpbiB0aGUgaW5wdXQuICB0aGVyZSBpcyBubwogICAgICAgICAgICAgICAgbWFya3VwIG9iamVjdCBmb2xsb3dpbmcgdXMsIGp1c3QgdGhpcyBsaXRlcmFsIHRleHQgKi8KLSAgICAgICAgICAgIHNlbGYtPnN0ci5wdHIrKzsKKyAgICAgICAgICAgIHNlbGYtPnN0ci5zdGFydCsrOwogICAgICAgICAgICAgbWFya3VwX2ZvbGxvd3MgPSAwOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTc5OCw3ICs3MTIsOCBAQAogICAgIH0KIAogICAgIC8qIHJlY29yZCB0aGUgbGl0ZXJhbCB0ZXh0ICovCi0gICAgbGl0ZXJhbC0+cHRyID0gc3RhcnQ7CisgICAgbGl0ZXJhbC0+c3RyID0gc2VsZi0+c3RyLnN0cjsKKyAgICBsaXRlcmFsLT5zdGFydCA9IHN0YXJ0OwogICAgIGxpdGVyYWwtPmVuZCA9IHN0YXJ0ICsgbGVuOwogCiAgICAgaWYgKCFtYXJrdXBfZm9sbG93cykKQEAgLTgxMCwxMiArNzI1LDEyIEBACiAgICAgKmZpZWxkX3ByZXNlbnQgPSAxOwogICAgIGNvdW50ID0gMTsKIAotICAgIHN0YXJ0ID0gc2VsZi0+c3RyLnB0cjsKKyAgICBzdGFydCA9IHNlbGYtPnN0ci5zdGFydDsKIAogICAgIC8qIHdlIGtub3cgd2UgY2FuJ3QgaGF2ZSBhIHplcm8gbGVuZ3RoIHN0cmluZywgc28gZG9uJ3Qgd29ycnkKICAgICAgICBhYm91dCB0aGF0IGNhc2UgKi8KLSAgICB3aGlsZSAoc2VsZi0+c3RyLnB0ciA8IHNlbGYtPnN0ci5lbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKihzZWxmLT5zdHIucHRyKyspKSB7CisgICAgd2hpbGUgKHNlbGYtPnN0ci5zdGFydCA8IHNlbGYtPnN0ci5lbmQpIHsKKyAgICAgICAgc3dpdGNoIChjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5zdHIuc3RhcnQrKykpIHsKICAgICAgICAgY2FzZSAneyc6CiAgICAgICAgICAgICAvKiB0aGUgZm9ybWF0IHNwZWMgbmVlZHMgdG8gYmUgcmVjdXJzaXZlbHkgZXhwYW5kZWQuCiAgICAgICAgICAgICAgICB0aGlzIGlzIGFuIG9wdGltaXphdGlvbiwgYW5kIG5vdCBzdHJpY3RseSBuZWVkZWQgKi8KQEAgLTgyOCw3ICs3NDMsNyBAQAogICAgICAgICAgICAgICAgIC8qIHdlJ3JlIGRvbmUuICBwYXJzZSBhbmQgZ2V0IG91dCAqLwogICAgICAgICAgICAgICAgIFN1YlN0cmluZyBzOwogCi0gICAgICAgICAgICAgICAgU3ViU3RyaW5nX2luaXQoJnMsIHN0YXJ0LCBzZWxmLT5zdHIucHRyIC0gMSAtIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICBTdWJTdHJpbmdfaW5pdCgmcywgc2VsZi0+c3RyLnN0ciwgc3RhcnQsIHNlbGYtPnN0ci5zdGFydCAtIDEpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZV9maWVsZCgmcywgZmllbGRfbmFtZSwgZm9ybWF0X3NwZWMsIGNvbnZlcnNpb24pID09IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogCkBAIC04NDcsNyArNzYyLDcgQEAKIAogLyogZG8gdGhlICFyIG9yICFzIGNvbnZlcnNpb24gb24gb2JqICovCiBzdGF0aWMgUHlPYmplY3QgKgotZG9fY29udmVyc2lvbihQeU9iamVjdCAqb2JqLCBTVFJJTkdMSUJfQ0hBUiBjb252ZXJzaW9uKQorZG9fY29udmVyc2lvbihQeU9iamVjdCAqb2JqLCBQeV9VQ1M0IGNvbnZlcnNpb24pCiB7CiAgICAgLyogWFhYIGluIHByZS0zLjAsIGRvIHdlIG5lZWQgdG8gY29udmVydCB0aGlzIHRvIHVuaWNvZGUsIHNpbmNlIGl0CiAgICAgICAgbWlnaHQgaGF2ZSByZXR1cm5lZCBhIHN0cmluZz8gKi8KQEAgLTg1NSwxMSArNzcwLDkgQEAKICAgICBjYXNlICdyJzoKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X1JlcHIob2JqKTsKICAgICBjYXNlICdzJzoKLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9UT1NUUihvYmopOwotI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDMwMDAwMDAKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X1N0cihvYmopOwogICAgIGNhc2UgJ2EnOgotICAgICAgICByZXR1cm4gU1RSSU5HTElCX1RPQVNDSUkob2JqKTsKLSNlbmRpZgorICAgICAgICByZXR1cm4gUHlPYmplY3RfQVNDSUkob2JqKTsKICAgICBkZWZhdWx0OgogICAgICAgICBpZiAoY29udmVyc2lvbiA+IDMyICYmIGNvbnZlcnNpb24gPCAxMjcpIHsKICAgICAgICAgICAgICAgICAvKiBJdCdzIHRoZSBBU0NJSSBzdWJyYW5nZTsgY2FzdGluZyB0byBjaGFyIGlzIHNhZmUKQEAgLTg5MSw4ICs4MDQsOCBAQAogCiBzdGF0aWMgaW50CiBvdXRwdXRfbWFya3VwKFN1YlN0cmluZyAqZmllbGRfbmFtZSwgU3ViU3RyaW5nICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgaW50IGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZywgU1RSSU5HTElCX0NIQVIgY29udmVyc2lvbiwKLSAgICAgICAgICAgICAgT3V0cHV0U3RyaW5nICpvdXRwdXQsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLAorICAgICAgICAgICAgICBpbnQgZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nLCBQeV9VQ1M0IGNvbnZlcnNpb24sCisgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCiAgICAgICAgICAgICAgIGludCByZWN1cnNpb25fZGVwdGgsIEF1dG9OdW1iZXIgKmF1dG9fbnVtYmVyKQogewogICAgIFB5T2JqZWN0ICp0bXAgPSBOVUxMOwpAQCAtOTA4LDcgKzgyMSw3IEBACiAKICAgICBpZiAoY29udmVyc2lvbiAhPSAnXDAnKSB7CiAgICAgICAgIHRtcCA9IGRvX2NvbnZlcnNpb24oZmllbGRvYmosIGNvbnZlcnNpb24pOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIGlmICh0bXAgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkodG1wKSA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gZG9uZTsKIAogICAgICAgICAvKiBkbyB0aGUgYXNzaWdubWVudCwgdHJhbnNmZXJyaW5nIG93bmVyc2hpcDogZmllbGRvYmogPSB0bXAgKi8KQEAgLTkyMSwyMCArODM0LDE5IEBACiAgICAgaWYgKGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZykgewogICAgICAgICB0bXAgPSBidWlsZF9zdHJpbmcoZm9ybWF0X3NwZWMsIGFyZ3MsIGt3YXJncywgcmVjdXJzaW9uX2RlcHRoLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvX251bWJlcik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWSh0bXApID09IC0xKQogICAgICAgICAgICAgZ290byBkb25lOwogCiAgICAgICAgIC8qIG5vdGUgdGhhdCBpbiB0aGUgY2FzZSB3ZSdyZSBleHBhbmRpbmcgdGhlIGZvcm1hdCBzdHJpbmcsCiAgICAgICAgICAgIHRtcCBtdXN0IGJlIGtlcHQgYXJvdW5kIHVudGlsIGFmdGVyIHRoZSBjYWxsIHRvCiAgICAgICAgICAgIHJlbmRlcl9maWVsZC4gKi8KLSAgICAgICAgU3ViU3RyaW5nX2luaXQoJmV4cGFuZGVkX2Zvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfU1RSKHRtcCksIFNUUklOR0xJQl9MRU4odG1wKSk7CisgICAgICAgIFN1YlN0cmluZ19pbml0KCZleHBhbmRlZF9mb3JtYXRfc3BlYywgdG1wLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0bXApKTsKICAgICAgICAgYWN0dWFsX2Zvcm1hdF9zcGVjID0gJmV4cGFuZGVkX2Zvcm1hdF9zcGVjOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIGFjdHVhbF9mb3JtYXRfc3BlYyA9IGZvcm1hdF9zcGVjOwogCi0gICAgaWYgKHJlbmRlcl9maWVsZChmaWVsZG9iaiwgYWN0dWFsX2Zvcm1hdF9zcGVjLCBvdXRwdXQpID09IDApCisgICAgaWYgKHJlbmRlcl9maWVsZChmaWVsZG9iaiwgYWN0dWFsX2Zvcm1hdF9zcGVjLCB3cml0ZXIpID09IDApCiAgICAgICAgIGdvdG8gZG9uZTsKIAogICAgIHJlc3VsdCA9IDE7CkBAIC05NTQsNyArODY2LDcgQEAKICovCiBzdGF0aWMgaW50CiBkb19tYXJrdXAoU3ViU3RyaW5nICppbnB1dCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCi0gICAgICAgICAgT3V0cHV0U3RyaW5nICpvdXRwdXQsIGludCByZWN1cnNpb25fZGVwdGgsIEF1dG9OdW1iZXIgKmF1dG9fbnVtYmVyKQorICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgaW50IHJlY3Vyc2lvbl9kZXB0aCwgQXV0b051bWJlciAqYXV0b19udW1iZXIpCiB7CiAgICAgTWFya3VwSXRlcmF0b3IgaXRlcjsKICAgICBpbnQgZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nOwpAQCAtOTYzLDIwICs4NzUsMzUgQEAKICAgICBTdWJTdHJpbmcgbGl0ZXJhbDsKICAgICBTdWJTdHJpbmcgZmllbGRfbmFtZTsKICAgICBTdWJTdHJpbmcgZm9ybWF0X3NwZWM7Ci0gICAgU1RSSU5HTElCX0NIQVIgY29udmVyc2lvbjsKKyAgICBQeV9VQ1M0IGNvbnZlcnNpb24sIG1heGNoYXI7CisgICAgUHlfc3NpemVfdCBzdWJsZW47CisgICAgaW50IGVycjsKIAotICAgIE1hcmt1cEl0ZXJhdG9yX2luaXQoJml0ZXIsIGlucHV0LT5wdHIsIGlucHV0LT5lbmQgLSBpbnB1dC0+cHRyKTsKKyAgICBNYXJrdXBJdGVyYXRvcl9pbml0KCZpdGVyLCBpbnB1dC0+c3RyLCBpbnB1dC0+c3RhcnQsIGlucHV0LT5lbmQpOwogICAgIHdoaWxlICgocmVzdWx0ID0gTWFya3VwSXRlcmF0b3JfbmV4dCgmaXRlciwgJmxpdGVyYWwsICZmaWVsZF9wcmVzZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmllbGRfbmFtZSwgJmZvcm1hdF9zcGVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZykpID09IDIpIHsKLSAgICAgICAgaWYgKCFvdXRwdXRfZGF0YShvdXRwdXQsIGxpdGVyYWwucHRyLCBsaXRlcmFsLmVuZCAtIGxpdGVyYWwucHRyKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoZmllbGRfcHJlc2VudCkKKyAgICAgICAgc3VibGVuID0gbGl0ZXJhbC5lbmQgLSBsaXRlcmFsLnN0YXJ0OworICAgICAgICBpZiAoc3VibGVuKSB7CisgICAgICAgICAgICBtYXhjaGFyID0gX1B5VW5pY29kZV9GaW5kTWF4Q2hhcihsaXRlcmFsLnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWwuc3RhcnQsIGxpdGVyYWwuZW5kKTsKKyAgICAgICAgICAgIGVyciA9IF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN1YmxlbiwgbWF4Y2hhcik7CisgICAgICAgICAgICBpZiAoZXJyID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbC5zdHIsIGxpdGVyYWwuc3RhcnQsIHN1Ymxlbik7CisgICAgICAgICAgICB3cml0ZXItPnBvcyArPSBzdWJsZW47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmllbGRfcHJlc2VudCkgeworICAgICAgICAgICAgaWYgKGl0ZXIuc3RyLnN0YXJ0ID09IGl0ZXIuc3RyLmVuZCkKKyAgICAgICAgICAgICAgICB3cml0ZXItPm92ZXJhbGxvY2F0ZSA9IDA7CiAgICAgICAgICAgICBpZiAoIW91dHB1dF9tYXJrdXAoJmZpZWxkX25hbWUsICZmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcsIGNvbnZlcnNpb24sIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcsIGNvbnZlcnNpb24sIHdyaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBrd2FyZ3MsIHJlY3Vyc2lvbl9kZXB0aCwgYXV0b19udW1iZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05OTAsNDMgKzkxNywyNiBAQAogYnVpbGRfc3RyaW5nKFN1YlN0cmluZyAqaW5wdXQsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLAogICAgICAgICAgICAgIGludCByZWN1cnNpb25fZGVwdGgsIEF1dG9OdW1iZXIgKmF1dG9fbnVtYmVyKQogewotICAgIE91dHB1dFN0cmluZyBvdXRwdXQ7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLQotICAgIG91dHB1dC5vYmogPSBOVUxMOyAvKiBuZWVkZWQgc28gY2xlYW51cCBjb2RlIGFsd2F5cyB3b3JrcyAqLworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIFB5X3NzaXplX3QgbWlubGVuOwogCiAgICAgLyogY2hlY2sgdGhlIHJlY3Vyc2lvbiBsZXZlbCAqLwogICAgIGlmIChyZWN1cnNpb25fZGVwdGggPD0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJNYXggc3RyaW5nIHJlY3Vyc2lvbiBleGNlZWRlZCIpOwotICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIC8qIGluaXRpYWwgc2l6ZSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBmb3JtYXQgc3RyaW5nLCBwbHVzIHRoZSBzaXplCi0gICAgICAgaW5jcmVtZW50LiAgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgZGVmYXVsdCAqLwotICAgIGlmICghb3V0cHV0X2luaXRpYWxpemUoJm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LT5lbmQgLSBpbnB1dC0+cHRyICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIElOSVRJQUxfU0laRV9JTkNSRU1FTlQpKQotICAgICAgICBnb3RvIGRvbmU7CisgICAgbWlubGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQtPnN0cikgKyAxMDA7CisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIG1pbmxlbik7CiAKLSAgICBpZiAoIWRvX21hcmt1cChpbnB1dCwgYXJncywga3dhcmdzLCAmb3V0cHV0LCByZWN1cnNpb25fZGVwdGgsCisgICAgaWYgKCFkb19tYXJrdXAoaW5wdXQsIGFyZ3MsIGt3YXJncywgJndyaXRlciwgcmVjdXJzaW9uX2RlcHRoLAogICAgICAgICAgICAgICAgICAgIGF1dG9fbnVtYmVyKSkgewotICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgY291bnQgPSBvdXRwdXQucHRyIC0gU1RSSU5HTElCX1NUUihvdXRwdXQub2JqKTsKLSAgICBpZiAoU1RSSU5HTElCX1JFU0laRSgmb3V0cHV0Lm9iaiwgY291bnQpIDwgMCkgewotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogdHJhbnNmZXIgb3duZXJzaGlwIHRvIHJlc3VsdCAqLwotICAgIHJlc3VsdCA9IG91dHB1dC5vYmo7Ci0gICAgb3V0cHV0Lm9iaiA9IE5VTEw7Ci0KLWRvbmU6Ci0gICAgUHlfWERFQ1JFRihvdXRwdXQub2JqKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTEwNDcsOCArOTU3LDExIEBACiAKICAgICBBdXRvTnVtYmVyIGF1dG9fbnVtYmVyOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBBdXRvTnVtYmVyX0luaXQoJmF1dG9fbnVtYmVyKTsKLSAgICBTdWJTdHJpbmdfaW5pdCgmaW5wdXQsIFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOworICAgIFN1YlN0cmluZ19pbml0KCZpbnB1dCwgc2VsZiwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpOwogICAgIHJldHVybiBidWlsZF9zdHJpbmcoJmlucHV0LCBhcmdzLCBrd2FyZ3MsIHJlY3Vyc2lvbl9kZXB0aCwgJmF1dG9fbnVtYmVyKTsKIH0KIApAQCAtMTA3MCw5ICs5ODMsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotCi0gICAgU1RSSU5HTElCX09CSkVDVCAqc3RyOwotCisgICAgUHlPYmplY3QgKnN0cjsKICAgICBNYXJrdXBJdGVyYXRvciBpdF9tYXJrdXA7CiB9IGZvcm1hdHRlcml0ZXJvYmplY3Q7CiAKQEAgLTEwOTcsNyArMTAwOCw3IEBACiAgICAgU3ViU3RyaW5nIGxpdGVyYWw7CiAgICAgU3ViU3RyaW5nIGZpZWxkX25hbWU7CiAgICAgU3ViU3RyaW5nIGZvcm1hdF9zcGVjOwotICAgIFNUUklOR0xJQl9DSEFSIGNvbnZlcnNpb247CisgICAgUHlfVUNTNCBjb252ZXJzaW9uOwogICAgIGludCBmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmc7CiAgICAgaW50IGZpZWxkX3ByZXNlbnQ7CiAgICAgaW50IHJlc3VsdCA9IE1hcmt1cEl0ZXJhdG9yX25leHQoJml0LT5pdF9tYXJrdXAsICZsaXRlcmFsLCAmZmllbGRfcHJlc2VudCwKQEAgLTExNDEsNyArMTA1Miw4IEBACiAgICAgICAgICAgICBQeV9JTkNSRUYoY29udmVyc2lvbl9zdHIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnZlcnNpb25fc3RyID0gU1RSSU5HTElCX05FVygmY29udmVyc2lvbiwgMSk7CisgICAgICAgICAgICBjb252ZXJzaW9uX3N0ciA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnZlcnNpb24sIDEpOwogICAgICAgICBpZiAoY29udmVyc2lvbl9zdHIgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZG9uZTsKIApAQCAtMTE5OCw3ICsxMTEwLDcgQEAKICAgIGRlc2NyaWJpbmcgdGhlIHBhcnNlZCBlbGVtZW50cy4gIEl0J3MgYSB3cmFwcGVyIGFyb3VuZAogICAgc3RyaW5nbGliL3N0cmluZ19mb3JtYXQuaCdzIE1hcmt1cEl0ZXJhdG9yICovCiBzdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0dGVyX3BhcnNlcihQeU9iamVjdCAqaWdub3JlZCwgU1RSSU5HTElCX09CSkVDVCAqc2VsZikKK2Zvcm1hdHRlcl9wYXJzZXIoUHlPYmplY3QgKmlnbm9yZWQsIFB5T2JqZWN0ICpzZWxmKQogewogICAgIGZvcm1hdHRlcml0ZXJvYmplY3QgKml0OwogCkBAIC0xMjA3LDYgKzExMTksOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGl0ID0gUHlPYmplY3RfTmV3KGZvcm1hdHRlcml0ZXJvYmplY3QsICZQeUZvcm1hdHRlckl0ZXJfVHlwZSk7CiAgICAgaWYgKGl0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTIxNiwxMCArMTEzMSw3IEBACiAgICAgaXQtPnN0ciA9IHNlbGY7CiAKICAgICAvKiBpbml0aWFsaXplIHRoZSBjb250YWluZWQgTWFya3VwSXRlcmF0b3IgKi8KLSAgICBNYXJrdXBJdGVyYXRvcl9pbml0KCZpdC0+aXRfbWFya3VwLAotICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX1NUUihzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9MRU4oc2VsZikpOwotCisgICAgTWFya3VwSXRlcmF0b3JfaW5pdCgmaXQtPml0X21hcmt1cCwgKFB5T2JqZWN0KilzZWxmLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OwogfQogCkBAIC0xMjM1LDkgKzExNDcsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotCi0gICAgU1RSSU5HTElCX09CSkVDVCAqc3RyOwotCisgICAgUHlPYmplY3QgKnN0cjsKICAgICBGaWVsZE5hbWVJdGVyYXRvciBpdF9maWVsZDsKIH0gZmllbGRuYW1laXRlcm9iamVjdDsKIApAQCAtMTMzOCw3ICsxMjQ4LDcgQEAKICAgIGZpZWxkX25hbWVfc3BsaXQuICBUaGUgaXRlcmF0b3IgaXQgcmV0dXJucyBpcyBhCiAgICBGaWVsZE5hbWVJdGVyYXRvciAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdHRlcl9maWVsZF9uYW1lX3NwbGl0KFB5T2JqZWN0ICppZ25vcmVkLCBTVFJJTkdMSUJfT0JKRUNUICpzZWxmKQorZm9ybWF0dGVyX2ZpZWxkX25hbWVfc3BsaXQoUHlPYmplY3QgKmlnbm9yZWQsIFB5T2JqZWN0ICpzZWxmKQogewogICAgIFN1YlN0cmluZyBmaXJzdDsKICAgICBQeV9zc2l6ZV90IGZpcnN0X2lkeDsKQEAgLTEzNTIsNiArMTI2Miw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaXQgPSBQeU9iamVjdF9OZXcoZmllbGRuYW1laXRlcm9iamVjdCwgJlB5RmllbGROYW1lSXRlcl9UeXBlKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzYzLDggKzEyNzYsNyBAQAogCiAgICAgLyogUGFzcyBpbiBhdXRvX251bWJlciA9IE5VTEwuIFdlJ2xsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcgZm9yCiAgICAgICAgZmlyc3Rfb2JqIGluIHRoYXQgY2FzZS4gKi8KLSAgICBpZiAoIWZpZWxkX25hbWVfc3BsaXQoU1RSSU5HTElCX1NUUihzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0xFTihzZWxmKSwKKyAgICBpZiAoIWZpZWxkX25hbWVfc3BsaXQoKFB5T2JqZWN0KilzZWxmLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0LCAmZmlyc3RfaWR4LCAmaXQtPml0X2ZpZWxkLCBOVUxMKSkKICAgICAgICAgZ290byBkb25lOwogCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaAppbmRleCAwOWRhZTZkLi5mMTZmMjFlIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKQEAgLTYsNyArNiwxMCBAQAogICAgY29tcGlsZWQgYXMgdW5pY29kZS4gKi8KICNkZWZpbmUgU1RSSU5HTElCX0lTX1VOSUNPREUgICAgIDEKIAorI2RlZmluZSBGQVNUU0VBUkNIICAgICAgICAgICAgICAgZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgICAgICAgICAgICAgc3RyaW5nbGliXyMjRgogI2RlZmluZSBTVFJJTkdMSUJfT0JKRUNUICAgICAgICAgUHlVbmljb2RlT2JqZWN0CisjZGVmaW5lIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAgICBQeV9VTklDT0RFX1NJWkUKICNkZWZpbmUgU1RSSU5HTElCX0NIQVIgICAgICAgICAgIFB5X1VOSUNPREUKICNkZWZpbmUgU1RSSU5HTElCX1RZUEVfTkFNRSAgICAgICJ1bmljb2RlIgogI2RlZmluZSBTVFJJTkdMSUJfUEFSU0VfQ09ERSAgICAgIlUiCkBAIC0xNSwxNyArMTgsMTIgQEAKICNkZWZpbmUgU1RSSU5HTElCX0lTTElORUJSRUFLICAgIEJMT09NX0xJTkVCUkVBSwogI2RlZmluZSBTVFJJTkdMSUJfSVNERUNJTUFMICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwKICNkZWZpbmUgU1RSSU5HTElCX1RPREVDSU1BTCAgICAgIFB5X1VOSUNPREVfVE9ERUNJTUFMCi0jZGVmaW5lIFNUUklOR0xJQl9UT1VQUEVSICAgICAgICBQeV9VTklDT0RFX1RPVVBQRVIKLSNkZWZpbmUgU1RSSU5HTElCX1RPTE9XRVIgICAgICAgIFB5X1VOSUNPREVfVE9MT1dFUgotI2RlZmluZSBTVFJJTkdMSUJfRklMTCAgICAgICAgICAgUHlfVU5JQ09ERV9GSUxMCiAjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERQogI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFCiAjZGVmaW5lIFNUUklOR0xJQl9ORVcgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVVuaWNvZGUKICNkZWZpbmUgU1RSSU5HTElCX1JFU0laRSAgICAgICAgIFB5VW5pY29kZV9SZXNpemUKICNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5VW5pY29kZV9DaGVjawogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QKLSNkZWZpbmUgU1RSSU5HTElCX0dST1VQSU5HICAgICAgIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKLSNkZWZpbmUgU1RSSU5HTElCX0dST1VQSU5HX0xPQ0FMRSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nTG9jYWxlCiAKICNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDMwMDAwMDAKICNkZWZpbmUgU1RSSU5HTElCX1RPU1RSICAgICAgICAgIFB5T2JqZWN0X1VuaWNvZGUKZGlmZiAtLWdpdCBhL09iamVjdHMvdHVwbGVvYmplY3QuYyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwppbmRleCBlOTllZGEwLi4wMTNkYjY5IDEwMDY0NAotLS0gYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCkBAIC00NSw2ICs0NSwyMiBAQAogfQogI2VuZGlmCiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeVR1cGxlX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworI2lmIFB5VHVwbGVfTUFYU0FWRVNJWkUgPiAwCisgICAgaW50IGk7CisgICAgY2hhciBidWZbMTI4XTsKKyAgICBmb3IgKGkgPSAxOyBpIDwgUHlUdXBsZV9NQVhTQVZFU0laRTsgaSsrKSB7CisgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAiZnJlZSAlZC1zaXplZCBQeVR1cGxlT2JqZWN0IiwgaSk7CisgICAgICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlW2ldLCBfUHlPYmplY3RfVkFSX1NJWkUoJlB5VHVwbGVfVHlwZSwgaSkpOworICAgIH0KKyNlbmRpZgorfQogCiBQeU9iamVjdCAqCiBQeVR1cGxlX05ldyhyZWdpc3RlciBQeV9zc2l6ZV90IHNpemUpCkBAIC04Nyw3ICsxMDMsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgfQotICAgICAgICBuYnl0ZXMgKz0gc2l6ZW9mKFB5VHVwbGVPYmplY3QpIC0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICAvKiBuYnl0ZXMgKz0gc2l6ZW9mKFB5VHVwbGVPYmplY3QpIC0gc2l6ZW9mKFB5T2JqZWN0ICopOyAqLwogCiAgICAgICAgIG9wID0gUHlPYmplY3RfR0NfTmV3VmFyKFB5VHVwbGVPYmplY3QsICZQeVR1cGxlX1R5cGUsIHNpemUpOwogICAgICAgICBpZiAob3AgPT0gTlVMTCkKQEAgLTMxMywxMSArMzI5LDEyIEBACiBzdGF0aWMgUHlfaGFzaF90CiB0dXBsZWhhc2goUHlUdXBsZU9iamVjdCAqdikKIHsKLSAgICByZWdpc3RlciBQeV9oYXNoX3QgeCwgeTsKKyAgICByZWdpc3RlciBQeV91aGFzaF90IHg7CisgICAgcmVnaXN0ZXIgUHlfaGFzaF90IHk7CiAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBsZW4gPSBQeV9TSVpFKHYpOwogICAgIHJlZ2lzdGVyIFB5T2JqZWN0ICoqcDsKLSAgICBQeV9oYXNoX3QgbXVsdCA9IF9QeUhBU0hfTVVMVElQTElFUjsKLSAgICB4ID0gMHgzNDU2NzhMOworICAgIFB5X3VoYXNoX3QgbXVsdCA9IF9QeUhBU0hfTVVMVElQTElFUjsKKyAgICB4ID0gMHgzNDU2Nzg7CiAgICAgcCA9IHYtPm9iX2l0ZW07CiAgICAgd2hpbGUgKC0tbGVuID49IDApIHsKICAgICAgICAgeSA9IFB5T2JqZWN0X0hhc2goKnArKyk7CkBAIC0zMjgsNyArMzQ1LDcgQEAKICAgICAgICAgbXVsdCArPSAoUHlfaGFzaF90KSg4MjUyMEwgKyBsZW4gKyBsZW4pOwogICAgIH0KICAgICB4ICs9IDk3NTMxTDsKLSAgICBpZiAoeCA9PSAtMSkKKyAgICBpZiAoeCA9PSAoUHlfdWhhc2hfdCktMSkKICAgICAgICAgeCA9IC0yOwogICAgIHJldHVybiB4OwogfQpAQCAtNTQ0LDEwICs1NjEsOCBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IHZsZW4sIHdsZW47CiAKLSAgICBpZiAoIVB5VHVwbGVfQ2hlY2sodikgfHwgIVB5VHVwbGVfQ2hlY2sodykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2sodikgfHwgIVB5VHVwbGVfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHZ0ID0gKFB5VHVwbGVPYmplY3QgKil2OwogICAgIHd0ID0gKFB5VHVwbGVPYmplY3QgKil3OwpAQCAtOTY4LDggKzk4MywzOSBAQAogCiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLCAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0dXBsZWl0ZXJfcmVkdWNlKHR1cGxlaXRlcm9iamVjdCAqaXQpCit7CisgICAgaWYgKGl0LT5pdF9zZXEpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbCIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTigoKSkiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3R1cGxlaXRlcl9zZXRzdGF0ZSh0dXBsZWl0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgbG9uZyBpbmRleCA9IFB5TG9uZ19Bc0xvbmcoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIGVsc2UgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCAmJiBpbmRleCA+IFB5VHVwbGVfR0VUX1NJWkUoaXQtPml0X3NlcSkpCisgICAgICAgICAgICBpbmRleCA9IFB5VHVwbGVfR0VUX1NJWkUoaXQtPml0X3NlcSk7CisgICAgICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHR1cGxlaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pdHVwbGVpdGVyX2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKXR1cGxlaXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbil0dXBsZWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlb2JqZWN0LmMgYi9PYmplY3RzL3R5cGVvYmplY3QuYwppbmRleCBhZGI2OWNiLi5hMzU3Y2VkIDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVvYmplY3QuYworKysgYi9PYmplY3RzL3R5cGVvYmplY3QuYwpAQCAtMTQsMTYgKzE0LDE3IEBACiAgICBNQ0FDSEVfTUFYX0FUVFJfU0laRSwgc2luY2UgaXQgbWlnaHQgYmUgYSBwcm9ibGVtIGlmIHZlcnkgbGFyZ2UKICAgIHN0cmluZ3MgYXJlIHVzZWQgYXMgYXR0cmlidXRlIG5hbWVzLiAqLwogI2RlZmluZSBNQ0FDSEVfTUFYX0FUVFJfU0laRSAgICAxMDAKLSNkZWZpbmUgTUNBQ0hFX1NJWkVfRVhQICAgICAgICAgMTAKKyNkZWZpbmUgTUNBQ0hFX1NJWkVfRVhQICAgICAgICAgOQogI2RlZmluZSBNQ0FDSEVfSEFTSCh2ZXJzaW9uLCBuYW1lX2hhc2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAoKCh1bnNpZ25lZCBpbnQpKHZlcnNpb24pICogKHVuc2lnbmVkIGludCkobmFtZV9oYXNoKSkgICAgICAgICAgXAogICAgICAgICAgPj4gKDgqc2l6ZW9mKHVuc2lnbmVkIGludCkgLSBNQ0FDSEVfU0laRV9FWFApKQogI2RlZmluZSBNQ0FDSEVfSEFTSF9NRVRIT0QodHlwZSwgbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBNQ0FDSEVfSEFTSCgodHlwZSktPnRwX3ZlcnNpb25fdGFnLCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgKChQeVVuaWNvZGVPYmplY3QgKikobmFtZSkpLT5oYXNoKQorICAgICAgICAgICAgICAgICAgICAoKFB5QVNDSUlPYmplY3QgKikobmFtZSkpLT5oYXNoKQogI2RlZmluZSBNQ0FDSEVfQ0FDSEVBQkxFX05BTUUobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdChuYW1lKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShuYW1lKSA8PSBNQ0FDSEVfTUFYX0FUVFJfU0laRQorICAgICAgICBQeVVuaWNvZGVfUkVBRFkobmFtZSkgIT0gLTEgJiYgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSA8PSBNQ0FDSEVfTUFYX0FUVFJfU0laRQogCiBzdHJ1Y3QgbWV0aG9kX2NhY2hlX2VudHJ5IHsKICAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsKQEAgLTM0LDYgKzM1LDIyIEBACiBzdGF0aWMgc3RydWN0IG1ldGhvZF9jYWNoZV9lbnRyeSBtZXRob2RfY2FjaGVbMSA8PCBNQ0FDSEVfU0laRV9FWFBdOwogc3RhdGljIHVuc2lnbmVkIGludCBuZXh0X3ZlcnNpb25fdGFnID0gMDsKIAorX1B5X0lERU5USUZJRVIoX19jbGFzc19fKTsKK19QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKK19QeV9JREVOVElGSUVSKF9fZG9jX18pOworX1B5X0lERU5USUZJRVIoX19nZXRpdGVtX18pOworX1B5X0lERU5USUZJRVIoX19nZXRhdHRyaWJ1dGVfXyk7CitfUHlfSURFTlRJRklFUihfX2hhc2hfXyk7CitfUHlfSURFTlRJRklFUihfX21vZHVsZV9fKTsKK19QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKK19QeV9JREVOVElGSUVSKF9fbmV3X18pOworCitzdGF0aWMgUHlPYmplY3QgKgorX1B5VHlwZV9Mb29rdXBJZChQeVR5cGVPYmplY3QgKnR5cGUsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzbG90X3RwX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcyk7CisKIHVuc2lnbmVkIGludAogUHlUeXBlX0NsZWFyQ2FjaGUodm9pZCkKIHsKQEAgLTk2LDE1ICsxMTMsMTMgQEAKIHN0YXRpYyB2b2lkCiB0eXBlX21yb19tb2RpZmllZChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpiYXNlcykgewogICAgIC8qCi0gICAgICAgQ2hlY2sgdGhhdCBhbGwgYmFzZSBjbGFzc2VzIG9yIGVsZW1lbnRzIG9mIHRoZSBtcm8gb2YgdHlwZSBhcmUKKyAgICAgICBDaGVjayB0aGF0IGFsbCBiYXNlIGNsYXNzZXMgb3IgZWxlbWVudHMgb2YgdGhlIE1STyBvZiB0eXBlIGFyZQogICAgICAgIGFibGUgdG8gYmUgY2FjaGVkLiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGJhc2UKICAgICAgICBjbGFzc2VzIG9yIG1ybyBvZiB0aGUgdHlwZSBhcmUgYWx0ZXJlZC4KIAogICAgICAgIFVuc2V0IEhBVkVfVkVSU0lPTl9UQUcgYW5kIFZBTElEX1ZFUlNJT05fVEFHIGlmIHRoZSB0eXBlCi0gICAgICAgaW5oZXJpdHMgZnJvbSBhbiBvbGQtc3R5bGUgY2xhc3MsIGVpdGhlciBkaXJlY3RseSBvciBpZiBpdAotICAgICAgIGFwcGVhcnMgaW4gdGhlIE1STyBvZiBhIG5ldy1zdHlsZSBjbGFzcy4gIE5vIHN1cHBvcnQgZWl0aGVyIGZvcgotICAgICAgIGN1c3RvbSBNUk9zIHRoYXQgaW5jbHVkZSB0eXBlcyB0aGF0IGFyZSBub3Qgb2ZmaWNpYWxseSBzdXBlcgotICAgICAgIHR5cGVzLgorICAgICAgIGhhcyBhIGN1c3RvbSBNUk8gdGhhdCBpbmNsdWRlcyBhIHR5cGUgd2hpY2ggaXMgbm90IG9mZmljaWFsbHkKKyAgICAgICBzdXBlciB0eXBlLgogCiAgICAgICAgQ2FsbGVkIGZyb20gbXJvX2ludGVybmFsLCB3aGljaCB3aWxsIHN1YnNlcXVlbnRseSBiZSBjYWxsZWQgb24KICAgICAgICBlYWNoIHN1YmNsYXNzIHdoZW4gdGhlaXIgbXJvIGlzIHJlY3Vyc2l2ZWx5IHVwZGF0ZWQuCkBAIC0xMjAsMTEgKzEzNSw3IEBACiAgICAgICAgIFB5T2JqZWN0ICpiID0gUHlUdXBsZV9HRVRfSVRFTShiYXNlcywgaSk7CiAgICAgICAgIFB5VHlwZU9iamVjdCAqY2xzOwogCi0gICAgICAgIGlmICghUHlUeXBlX0NoZWNrKGIpICkgewotICAgICAgICAgICAgY2xlYXIgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQorICAgICAgICBhc3NlcnQoUHlUeXBlX0NoZWNrKGIpKTsKICAgICAgICAgY2xzID0gKFB5VHlwZU9iamVjdCAqKWI7CiAKICAgICAgICAgaWYgKCFQeVR5cGVfSGFzRmVhdHVyZShjbHMsIFB5X1RQRkxBR1NfSEFWRV9WRVJTSU9OX1RBRykgfHwKQEAgLTIwMSw2ICsyMTIsMjIgQEAKICAgICB7MH0KIH07CiAKK3N0YXRpYyBpbnQKK2NoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cihQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc2V0ICVzLiVzIiwgdHlwZS0+dHBfbmFtZSwgbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLiVzIiwgdHlwZS0+dHBfbmFtZSwgbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHR5cGVfbmFtZShQeVR5cGVPYmplY3QgKnR5cGUsIHZvaWQgKmNvbnRleHQpCiB7CkBAIC0yMjIsNiArMjQ5LDE5IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgordHlwZV9xdWFsbmFtZShQeVR5cGVPYmplY3QgKnR5cGUsIHZvaWQgKmNvbnRleHQpCit7CisgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgeworICAgICAgICBQeUhlYXBUeXBlT2JqZWN0KiBldCA9IChQeUhlYXBUeXBlT2JqZWN0Kil0eXBlOworICAgICAgICBQeV9JTkNSRUYoZXQtPmh0X3F1YWxuYW1lKTsKKyAgICAgICAgcmV0dXJuIGV0LT5odF9xdWFsbmFtZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiB0eXBlX25hbWUodHlwZSwgY29udGV4dCk7CisgICAgfQorfQorCiBzdGF0aWMgaW50CiB0eXBlX3NldF9uYW1lKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQogewpAQCAtMjI5LDE2ICsyNjksOCBAQAogICAgIGNoYXIgKnRwX25hbWU7CiAgICAgUHlPYmplY3QgKnRtcDsKIAotICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzZXQgJXMuX19uYW1lX18iLCB0eXBlLT50cF9uYW1lKTsKKyAgICBpZiAoIWNoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cih0eXBlLCB2YWx1ZSwgIl9fbmFtZV9fIikpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNhbid0IGRlbGV0ZSAlcy5fX25hbWVfXyIsIHR5cGUtPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImNhbiBvbmx5IGFzc2lnbiBzdHJpbmcgdG8gJXMuX19uYW1lX18sIG5vdCAnJXMnIiwKQEAgLTI3NCw2ICszMDYsMjUgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAordHlwZV9zZXRfcXVhbG5hbWUoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCit7CisgICAgUHlIZWFwVHlwZU9iamVjdCogZXQ7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjYW4gb25seSBhc3NpZ24gc3RyaW5nIHRvICVzLl9fcXVhbG5hbWVfXywgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZXQgPSAoUHlIZWFwVHlwZU9iamVjdCopdHlwZTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X0RFQ1JFRihldC0+aHRfcXVhbG5hbWUpOworICAgIGV0LT5odF9xdWFsbmFtZSA9IHZhbHVlOworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9tb2R1bGUoUHlUeXBlT2JqZWN0ICp0eXBlLCB2b2lkICpjb250ZXh0KQogewpAQCAtMjgxLDcgKzMzMiw3IEBACiAgICAgY2hhciAqczsKIAogICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHsKLSAgICAgICAgbW9kID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbW9kdWxlX18iKTsKKyAgICAgICAgbW9kID0gX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXyk7CiAgICAgICAgIGlmICghbW9kKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJfX21vZHVsZV9fIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTMwMSwyMCArMzUyLDEyIEBACiBzdGF0aWMgaW50CiB0eXBlX3NldF9tb2R1bGUoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgaWYgKCEodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNldCAlcy5fX21vZHVsZV9fIiwgdHlwZS0+dHBfbmFtZSk7CisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX21vZHVsZV9fIikpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNhbid0IGRlbGV0ZSAlcy5fX21vZHVsZV9fIiwgdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAKICAgICBQeVR5cGVfTW9kaWZpZWQodHlwZSk7CiAKLSAgICByZXR1cm4gUHlEaWN0X1NldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbW9kdWxlX18iLCB2YWx1ZSk7CisgICAgcmV0dXJuIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIHZhbHVlKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQzNSwxNiArNDc4LDggQEAKICAgICBQeVR5cGVPYmplY3QgKm5ld19iYXNlLCAqb2xkX2Jhc2U7CiAgICAgUHlPYmplY3QgKm9sZF9iYXNlcywgKm9sZF9tcm87CiAKLSAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc2V0ICVzLl9fYmFzZXNfXyIsIHR5cGUtPnRwX25hbWUpOworICAgIGlmICghY2hlY2tfc2V0X3NwZWNpYWxfdHlwZV9hdHRyKHR5cGUsIHZhbHVlLCAiX19iYXNlc19fIikpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNhbid0IGRlbGV0ZSAlcy5fX2Jhc2VzX18iLCB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICAgICBpZiAoIVB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgImNhbiBvbmx5IGFzc2lnbiB0dXBsZSB0byAlcy5fX2Jhc2VzX18sIG5vdCAlcyIsCkBAIC00NjEsOCArNDk2LDcgQEAKICAgICAgICAgb2IgPSBQeVR1cGxlX0dFVF9JVEVNKHZhbHVlLCBpKTsKICAgICAgICAgaWYgKCFQeVR5cGVfQ2hlY2sob2IpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICIlcy5fX2Jhc2VzX18gbXVzdCBiZSB0dXBsZSBvZiBvbGQtIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAibmV3LXN0eWxlIGNsYXNzZXMsIG5vdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJXMuX19iYXNlc19fIG11c3QgYmUgdHVwbGUgb2YgY2xhc3Nlcywgbm90ICclcyciLAogICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUsIFB5X1RZUEUob2IpLT50cF9uYW1lKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtNTgwLDcgKzYxNCw3IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpICYmIHR5cGUtPnRwX2RvYyAhPSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcodHlwZS0+dHBfZG9jKTsKLSAgICByZXN1bHQgPSBQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19kb2NfXyIpOworICAgIHJlc3VsdCA9IF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fZG9jX18pOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICByZXN1bHQgPSBQeV9Ob25lOwogICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKQEAgLTU5NSw2ICs2MjksMTUgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgaW50Cit0eXBlX3NldF9kb2MoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCit7CisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX2RvY19fIikpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBQeVR5cGVfTW9kaWZpZWQodHlwZSk7CisgICAgcmV0dXJuIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fZG9jX18sIHZhbHVlKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHR5cGVfX19pbnN0YW5jZWNoZWNrX18oUHlPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICppbnN0KQogewpAQCAtNjI1LDEyICs2NjgsMTMgQEAKIAogc3RhdGljIFB5R2V0U2V0RGVmIHR5cGVfZ2V0c2V0c1tdID0gewogICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKXR5cGVfbmFtZSwgKHNldHRlcil0eXBlX3NldF9uYW1lLCBOVUxMfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpdHlwZV9xdWFsbmFtZSwgKHNldHRlcil0eXBlX3NldF9xdWFsbmFtZSwgTlVMTH0sCiAgICAgeyJfX2Jhc2VzX18iLCAoZ2V0dGVyKXR5cGVfZ2V0X2Jhc2VzLCAoc2V0dGVyKXR5cGVfc2V0X2Jhc2VzLCBOVUxMfSwKICAgICB7Il9fbW9kdWxlX18iLCAoZ2V0dGVyKXR5cGVfbW9kdWxlLCAoc2V0dGVyKXR5cGVfc2V0X21vZHVsZSwgTlVMTH0sCiAgICAgeyJfX2Fic3RyYWN0bWV0aG9kc19fIiwgKGdldHRlcil0eXBlX2Fic3RyYWN0bWV0aG9kcywKICAgICAgKHNldHRlcil0eXBlX3NldF9hYnN0cmFjdG1ldGhvZHMsIE5VTEx9LAogICAgIHsiX19kaWN0X18iLCAgKGdldHRlcil0eXBlX2RpY3QsICBOVUxMLCBOVUxMfSwKLSAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKXR5cGVfZ2V0X2RvYywgTlVMTCwgTlVMTH0sCisgICAgeyJfX2RvY19fIiwgKGdldHRlcil0eXBlX2dldF9kb2MsIChzZXR0ZXIpdHlwZV9zZXRfZG9jLCBOVUxMfSwKICAgICB7MH0KIH07CiAKQEAgLTY0Niw3ICs2OTAsNyBAQAogICAgICAgICBQeV9ERUNSRUYobW9kKTsKICAgICAgICAgbW9kID0gTlVMTDsKICAgICB9Ci0gICAgbmFtZSA9IHR5cGVfbmFtZSh0eXBlLCBOVUxMKTsKKyAgICBuYW1lID0gdHlwZV9xdWFsbmFtZSh0eXBlLCBOVUxMKTsKICAgICBpZiAobmFtZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtOTA2LDcgKzk1MCw3IEBACiAKICAgICAvKiBGaW5kIHRoZSBuZWFyZXN0IGJhc2Ugd2l0aCBhIGRpZmZlcmVudCB0cF9kZWFsbG9jICovCiAgICAgYmFzZSA9IHR5cGU7Ci0gICAgd2hpbGUgKChiYXNlZGVhbGxvYyA9IGJhc2UtPnRwX2RlYWxsb2MpID09IHN1YnR5cGVfZGVhbGxvYykgeworICAgIHdoaWxlICgoLypiYXNlZGVhbGxvYyA9Ki8gYmFzZS0+dHBfZGVhbGxvYykgPT0gc3VidHlwZV9kZWFsbG9jKSB7CiAgICAgICAgIGJhc2UgPSBiYXNlLT50cF9iYXNlOwogICAgICAgICBhc3NlcnQoYmFzZSk7CiAgICAgfQpAQCAtMTEyOSwxNiArMTE3MywxMSBAQAogKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWxvb2t1cF9tYXliZShQeU9iamVjdCAqc2VsZiwgY2hhciAqYXR0cnN0ciwgUHlPYmplY3QgKiphdHRyb2JqKQorbG9va3VwX21heWJlKFB5T2JqZWN0ICpzZWxmLCBfUHlfSWRlbnRpZmllciAqYXR0cmlkKQogewogICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICBpZiAoKmF0dHJvYmogPT0gTlVMTCkgewotICAgICAgICAqYXR0cm9iaiA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKGF0dHJzdHIpOwotICAgICAgICBpZiAoKmF0dHJvYmogPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXMgPSBfUHlUeXBlX0xvb2t1cChQeV9UWVBFKHNlbGYpLCAqYXR0cm9iaik7CisgICAgcmVzID0gX1B5VHlwZV9Mb29rdXBJZChQeV9UWVBFKHNlbGYpLCBhdHRyaWQpOwogICAgIGlmIChyZXMgIT0gTlVMTCkgewogICAgICAgICBkZXNjcmdldGZ1bmMgZjsKICAgICAgICAgaWYgKChmID0gUHlfVFlQRShyZXMpLT50cF9kZXNjcl9nZXQpID09IE5VTEwpCkBAIC0xMTUwLDE4ICsxMTg5LDE4IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1sb29rdXBfbWV0aG9kKFB5T2JqZWN0ICpzZWxmLCBjaGFyICphdHRyc3RyLCBQeU9iamVjdCAqKmF0dHJvYmopCitsb29rdXBfbWV0aG9kKFB5T2JqZWN0ICpzZWxmLCBfUHlfSWRlbnRpZmllciAqYXR0cmlkKQogewotICAgIFB5T2JqZWN0ICpyZXMgPSBsb29rdXBfbWF5YmUoc2VsZiwgYXR0cnN0ciwgYXR0cm9iaik7CisgICAgUHlPYmplY3QgKnJlcyA9IGxvb2t1cF9tYXliZShzZWxmLCBhdHRyaWQpOwogICAgIGlmIChyZXMgPT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAqYXR0cm9iaik7CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgYXR0cmlkLT5vYmplY3QpOwogICAgIHJldHVybiByZXM7CiB9CiAKIFB5T2JqZWN0ICoKLV9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKFB5T2JqZWN0ICpzZWxmLCBjaGFyICphdHRyc3RyLCBQeU9iamVjdCAqKmF0dHJvYmopCitfUHlPYmplY3RfTG9va3VwU3BlY2lhbChQeU9iamVjdCAqc2VsZiwgX1B5X0lkZW50aWZpZXIgKmF0dHJpZCkKIHsKLSAgICByZXR1cm4gbG9va3VwX21heWJlKHNlbGYsIGF0dHJzdHIsIGF0dHJvYmopOworICAgIHJldHVybiBsb29rdXBfbWF5YmUoc2VsZiwgYXR0cmlkKTsKIH0KIAogLyogQSB2YXJpYXRpb24gb2YgUHlPYmplY3RfQ2FsbE1ldGhvZCB0aGF0IHVzZXMgbG9va3VwX21ldGhvZCgpCkBAIC0xMTY5LDE3ICsxMjA4LDE3IEBACiAgICBhcyBsb29rdXBfbWV0aG9kIHRvIGNhY2hlIHRoZSBpbnRlcm5lZCBuYW1lIHN0cmluZyBvYmplY3QuICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX21ldGhvZChQeU9iamVjdCAqbywgY2hhciAqbmFtZSwgUHlPYmplY3QgKipuYW1lb2JqLCBjaGFyICpmb3JtYXQsIC4uLikKK2NhbGxfbWV0aG9kKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwogICAgIFB5T2JqZWN0ICphcmdzLCAqZnVuYyA9IDAsICpyZXR2YWw7CiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAKLSAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWUsIG5hbWVvYmopOworICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZWlkKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIHZhX2VuZCh2YSk7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgKm5hbWVvYmopOworICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1laWQtPm9iamVjdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTIwNSwxOSArMTI0NCwxNyBAQAogLyogQ2xvbmUgb2YgY2FsbF9tZXRob2QoKSB0aGF0IHJldHVybnMgTm90SW1wbGVtZW50ZWQgd2hlbiB0aGUgbG9va3VwIGZhaWxzLiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9tYXliZShQeU9iamVjdCAqbywgY2hhciAqbmFtZSwgUHlPYmplY3QgKipuYW1lb2JqLCBjaGFyICpmb3JtYXQsIC4uLikKK2NhbGxfbWF5YmUoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7CiAgICAgUHlPYmplY3QgKmFyZ3MsICpmdW5jID0gMCwgKnJldHZhbDsKICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZSwgbmFtZW9iaik7CisgICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1laWQpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKICAgICAgICAgdmFfZW5kKHZhKTsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgICAgICB9CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xMjgzLDcgKzEzMjAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGNsYXNzX25hbWUoUHlPYmplY3QgKmNscykKIHsKLSAgICBQeU9iamVjdCAqbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2xzLCAiX19uYW1lX18iKTsKKyAgICBQeU9iamVjdCAqbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2xzLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeV9YREVDUkVGKG5hbWUpOwpAQCAtMTUzOCw5ICsxNTc1LDkgQEAKICAgICAgICAgcmVzdWx0ID0gbXJvX2ltcGxlbWVudGF0aW9uKHR5cGUpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICptcm9fc3RyOworICAgICAgICBfUHlfSURFTlRJRklFUihtcm8pOwogICAgICAgICBjaGVja2l0ID0gMTsKLSAgICAgICAgbXJvID0gbG9va3VwX21ldGhvZCgoUHlPYmplY3QgKil0eXBlLCAibXJvIiwgJm1yb19zdHIpOworICAgICAgICBtcm8gPSBsb29rdXBfbWV0aG9kKChQeU9iamVjdCAqKXR5cGUsICZQeUlkX21ybyk7CiAgICAgICAgIGlmIChtcm8gPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChtcm8sIE5VTEwpOwpAQCAtMTU4NCw3ICsxNjIxLDcgQEAKICAgICB0eXBlLT50cF9tcm8gPSB0dXBsZTsKIAogICAgIHR5cGVfbXJvX21vZGlmaWVkKHR5cGUsIHR5cGUtPnRwX21ybyk7Ci0gICAgLyogY29ybmVyIGNhc2U6IHRoZSBvbGQtc3R5bGUgc3VwZXIgY2xhc3MgbWlnaHQgaGF2ZSBiZWVuIGhpZGRlbgorICAgIC8qIGNvcm5lciBjYXNlOiB0aGUgc3VwZXIgY2xhc3MgbWlnaHQgaGF2ZSBiZWVuIGhpZGRlbgogICAgICAgIGZyb20gdGhlIGN1c3RvbSBNUk8gKi8KICAgICB0eXBlX21yb19tb2RpZmllZCh0eXBlLCB0eXBlLT50cF9iYXNlcyk7CiAKQEAgLTE2NDEsOSArMTY3OCw4IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoYmFzZSA9PSBOVUxMKQotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImEgbmV3LXN0eWxlIGNsYXNzIGNhbid0IGhhdmUgb25seSBjbGFzc2ljIGJhc2VzIik7CisgICAgYXNzZXJ0IChiYXNlICE9IE5VTEwpOworCiAgICAgcmV0dXJuIGJhc2U7CiB9CiAKQEAgLTE3MTEsMTUgKzE3NDcsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGdldF9kaWN0X2Rlc2NyaXB0b3IoUHlUeXBlT2JqZWN0ICp0eXBlKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqZGljdF9zdHI7CiAgICAgUHlPYmplY3QgKmRlc2NyOwogCi0gICAgaWYgKGRpY3Rfc3RyID09IE5VTEwpIHsKLSAgICAgICAgZGljdF9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19kaWN0X18iKTsKLSAgICAgICAgaWYgKGRpY3Rfc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZGVzY3IgPSBfUHlUeXBlX0xvb2t1cCh0eXBlLCBkaWN0X3N0cik7CisgICAgZGVzY3IgPSBfUHlUeXBlX0xvb2t1cElkKHR5cGUsICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGVzY3IgPT0gTlVMTCB8fCAhUHlEZXNjcl9Jc0RhdGEoZGVzY3IpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTczNyw4ICsxNzY3LDYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzdWJ0eXBlX2RpY3QoUHlPYmplY3QgKm9iaiwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqKmRpY3RwdHI7Ci0gICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgUHlUeXBlT2JqZWN0ICpiYXNlOwogCiAgICAgYmFzZSA9IGdldF9idWlsdGluX2Jhc2Vfd2l0aF9kaWN0KFB5X1RZUEUob2JqKSk7CkBAIC0xNzU2LDI1ICsxNzg0LDEzIEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZ1bmMoZGVzY3IsIG9iaiwgKFB5T2JqZWN0ICopKFB5X1RZUEUob2JqKSkpOwogICAgIH0KLQotICAgIGRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOwotICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGhhcyBubyBfX2RpY3RfXyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZGljdCA9ICpkaWN0cHRyOwotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgICpkaWN0cHRyID0gZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICBQeV9YSU5DUkVGKGRpY3QpOwotICAgIHJldHVybiBkaWN0OworICAgIHJldHVybiBQeU9iamVjdF9HZW5lcmljR2V0RGljdChvYmosIGNvbnRleHQpOwogfQogCiBzdGF0aWMgaW50CiBzdWJ0eXBlX3NldGRpY3QoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQogewotICAgIFB5T2JqZWN0ICoqZGljdHB0cjsKLSAgICBQeU9iamVjdCAqZGljdDsKKyAgICBQeU9iamVjdCAqZGljdCwgKipkaWN0cHRyOwogICAgIFB5VHlwZU9iamVjdCAqYmFzZTsKIAogICAgIGJhc2UgPSBnZXRfYnVpbHRpbl9iYXNlX3dpdGhfZGljdChQeV9UWVBFKG9iaikpOwpAQCAtMTc5Miw3ICsxODA4LDcgQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZnVuYyhkZXNjciwgb2JqLCB2YWx1ZSk7CiAgICAgfQotCisgICAgLyogQWxtb3N0IGxpa2UgUHlPYmplY3RfR2VuZXJpY1NldERpY3QsIGJ1dCBhbGxvdyBfX2RpY3RfXyB0byBiZSBkZWxldGVkLiAqLwogICAgIGRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOwogICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLApAQCAtMTk1MywxNCArMTk2OSwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHR5cGVfbmV3KFB5VHlwZU9iamVjdCAqbWV0YXR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqbmFtZSwgKmJhc2VzLCAqZGljdDsKKyAgICBQeU9iamVjdCAqbmFtZSwgKmJhc2VzID0gTlVMTCwgKm9yaWdfZGljdCwgKmRpY3QgPSBOVUxMOwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibmFtZSIsICJiYXNlcyIsICJkaWN0IiwgMH07Ci0gICAgUHlPYmplY3QgKnNsb3RzLCAqdG1wLCAqbmV3c2xvdHM7Ci0gICAgUHlUeXBlT2JqZWN0ICp0eXBlLCAqYmFzZSwgKnRtcHR5cGUsICp3aW5uZXI7CisgICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqc2xvdHMgPSBOVUxMLCAqdG1wLCAqbmV3c2xvdHM7CisgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gTlVMTCwgKmJhc2UsICp0bXB0eXBlLCAqd2lubmVyOwogICAgIFB5SGVhcFR5cGVPYmplY3QgKmV0OwogICAgIFB5TWVtYmVyRGVmICptcDsKICAgICBQeV9zc2l6ZV90IGksIG5iYXNlcywgbnNsb3RzLCBzbG90b2Zmc2V0LCBhZGRfZGljdCwgYWRkX3dlYWs7CiAgICAgaW50IGosIG1heV9hZGRfZGljdCwgbWF5X2FkZF93ZWFrOworICAgIF9QeV9JREVOVElGSUVSKF9fcXVhbG5hbWVfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19zbG90c19fKTsKIAogICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgYXNzZXJ0KGt3ZHMgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dkcykpOwpAQCAtMTk5MCw3ICsyMDA4LDcgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiVU8hTyE6dHlwZSIsIGt3bGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlUdXBsZV9UeXBlLCAmYmFzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5RGljdF9UeXBlLCAmZGljdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5RGljdF9UeXBlLCAmb3JpZ19kaWN0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBEZXRlcm1pbmUgdGhlIHByb3BlciBtZXRhdHlwZSB0byBkZWFsIHdpdGggdGhpczogKi8KQEAgLTIwMTAsMzAgKzIwMjgsMzAgQEAKICAgICBpZiAobmJhc2VzID09IDApIHsKICAgICAgICAgYmFzZXMgPSBQeVR1cGxlX1BhY2soMSwgJlB5QmFzZU9iamVjdF9UeXBlKTsKICAgICAgICAgaWYgKGJhc2VzID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIG5iYXNlcyA9IDE7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgUHlfSU5DUkVGKGJhc2VzKTsKIAotICAgIC8qIFhYWCBGcm9tIGhlcmUgdW50aWwgdHlwZSBpcyBhbGxvY2F0ZWQsICJyZXR1cm4gTlVMTCIgbGVha3MgYmFzZXMhICovCi0KICAgICAvKiBDYWxjdWxhdGUgYmVzdCBiYXNlLCBhbmQgY2hlY2sgdGhhdCBhbGwgYmFzZXMgYXJlIHR5cGUgb2JqZWN0cyAqLwogICAgIGJhc2UgPSBiZXN0X2Jhc2UoYmFzZXMpOwogICAgIGlmIChiYXNlID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGlmICghUHlUeXBlX0hhc0ZlYXR1cmUoYmFzZSwgUHlfVFBGTEFHU19CQVNFVFlQRSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlICclLjEwMHMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIGJhc2UgdHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICBiYXNlLT50cF9uYW1lKTsKLSAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCisgICAgZGljdCA9IFB5RGljdF9Db3B5KG9yaWdfZGljdCk7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKwogICAgIC8qIENoZWNrIGZvciBhIF9fc2xvdHNfXyBzZXF1ZW5jZSB2YXJpYWJsZSBpbiBkaWN0LCBhbmQgY291bnQgaXQgKi8KLSAgICBzbG90cyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGRpY3QsICJfX3Nsb3RzX18iKTsKKyAgICBzbG90cyA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fc2xvdHNfXyk7CiAgICAgbnNsb3RzID0gMDsKICAgICBhZGRfZGljdCA9IDA7CiAgICAgYWRkX3dlYWsgPSAwOwpAQCAtMjA1NSwxMCArMjA3Myw4IEBACiAgICAgICAgICAgICBzbG90cyA9IFB5VHVwbGVfUGFjaygxLCBzbG90cyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNsb3RzID0gUHlTZXF1ZW5jZV9UdXBsZShzbG90cyk7Ci0gICAgICAgIGlmIChzbG90cyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHNsb3RzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhzbG90cykpOwogCiAgICAgICAgIC8qIEFyZSBzbG90cyBhbGxvd2VkPyAqLwpAQCAtMjA2OCwyNCArMjA4NCwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJub25lbXB0eSBfX3Nsb3RzX18gIgogICAgICAgICAgICAgICAgICAgICAgICAgICJub3Qgc3VwcG9ydGVkIGZvciBzdWJ0eXBlIG9mICclcyciLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UtPnRwX25hbWUpOwotICAgICAgICAgIGJhZF9zbG90czoKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc2xvdHMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAKICAgICAgICAgLyogQ2hlY2sgZm9yIHZhbGlkIHNsb3QgbmFtZXMgYW5kIHR3byBzcGVjaWFsIGNhc2VzICovCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuc2xvdHM7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5VHVwbGVfR0VUX0lURU0oc2xvdHMsIGkpOwogICAgICAgICAgICAgaWYgKCF2YWxpZF9pZGVudGlmaWVyKHRtcCkpCi0gICAgICAgICAgICAgICAgZ290byBiYWRfc2xvdHM7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodG1wKSk7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcodG1wLCAiX19kaWN0X18iKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtYXlfYWRkX2RpY3QgfHwgYWRkX2RpY3QpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJfX2RpY3RfXyBzbG90IGRpc2FsbG93ZWQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZSBhbHJlYWR5IGdvdCBvbmUiKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBiYWRfc2xvdHM7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZF9kaWN0Kys7CiAgICAgICAgICAgICB9CkBAIC0yMDk1LDcgKzIxMDgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fd2Vha3JlZl9fIHNsb3QgZGlzYWxsb3dlZDogIgogICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciB3ZSBhbHJlYWR5IGdvdCBvbmUsICIKICAgICAgICAgICAgICAgICAgICAgICAgICJvciBfX2l0ZW1zaXplX18gIT0gMCIpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGJhZF9zbG90czsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYWRkX3dlYWsrKzsKICAgICAgICAgICAgIH0KQEAgLTIxMDcsNyArMjEyMCw3IEBACiAgICAgICAgICovCiAgICAgICAgIG5ld3Nsb3RzID0gUHlMaXN0X05ldyhuc2xvdHMgLSBhZGRfZGljdCAtIGFkZF93ZWFrKTsKICAgICAgICAgaWYgKG5ld3Nsb3RzID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGJhZF9zbG90czsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGZvciAoaSA9IGogPSAwOyBpIDwgbnNsb3RzOyBpKyspIHsKICAgICAgICAgICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0oc2xvdHMsIGkpOwogICAgICAgICAgICAgaWYgKChhZGRfZGljdCAmJgpAQCAtMjExOCwyNSArMjEzMSwyOSBAQAogICAgICAgICAgICAgdG1wID1fUHlfTWFuZ2xlKG5hbWUsIHRtcCk7CiAgICAgICAgICAgICBpZiAoIXRtcCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdzbG90cyk7Ci0gICAgICAgICAgICAgICAgZ290byBiYWRfc2xvdHM7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShuZXdzbG90cywgaiwgdG1wKTsKKyAgICAgICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShkaWN0LCB0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlUiBpbiBfX3Nsb3RzX18gY29uZmxpY3RzIHdpdGggY2xhc3MgdmFyaWFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXApOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdzbG90cyk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGorKzsKICAgICAgICAgfQogICAgICAgICBhc3NlcnQoaiA9PSBuc2xvdHMgLSBhZGRfZGljdCAtIGFkZF93ZWFrKTsKICAgICAgICAgbnNsb3RzID0gajsKLSAgICAgICAgUHlfREVDUkVGKHNsb3RzKTsKKyAgICAgICAgUHlfQ0xFQVIoc2xvdHMpOwogICAgICAgICBpZiAoUHlMaXN0X1NvcnQobmV3c2xvdHMpID09IC0xKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwogICAgICAgICAgICAgUHlfREVDUkVGKG5ld3Nsb3RzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBzbG90cyA9IFB5TGlzdF9Bc1R1cGxlKG5ld3Nsb3RzKTsKICAgICAgICAgUHlfREVDUkVGKG5ld3Nsb3RzKTsKLSAgICAgICAgaWYgKHNsb3RzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorICAgICAgICBpZiAoc2xvdHMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAgICAgLyogU2Vjb25kYXJ5IGJhc2VzIG1heSBwcm92aWRlIHdlYWtyZWZzIG9yIGRpY3QgKi8KICAgICAgICAgaWYgKG5iYXNlcyA+IDEgJiYKQEAgLTIxNjQsMjIgKzIxODEsMTcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8qIFhYWCBGcm9tIGhlcmUgdW50aWwgdHlwZSBpcyBzYWZlbHkgYWxsb2NhdGVkLAotICAgICAgICJyZXR1cm4gTlVMTCIgbWF5IGxlYWsgc2xvdHMhICovCi0KICAgICAvKiBBbGxvY2F0ZSB0aGUgdHlwZSBvYmplY3QgKi8KICAgICB0eXBlID0gKFB5VHlwZU9iamVjdCAqKW1ldGF0eXBlLT50cF9hbGxvYyhtZXRhdHlwZSwgbnNsb3RzKTsKLSAgICBpZiAodHlwZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc2xvdHMpOwotICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKHR5cGUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIEtlZXAgbmFtZSBhbmQgc2xvdHMgYWxpdmUgaW4gdGhlIGV4dGVuZGVkIHR5cGUgb2JqZWN0ICovCiAgICAgZXQgPSAoUHlIZWFwVHlwZU9iamVjdCAqKXR5cGU7CiAgICAgUHlfSU5DUkVGKG5hbWUpOwogICAgIGV0LT5odF9uYW1lID0gbmFtZTsKICAgICBldC0+aHRfc2xvdHMgPSBzbG90czsKKyAgICBzbG90cyA9IE5VTEw7CiAKICAgICAvKiBJbml0aWFsaXplIHRwX2ZsYWdzICovCiAgICAgdHlwZS0+dHBfZmxhZ3MgPSBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hFQVBUWVBFIHwKQEAgLTIxOTMsNTkgKzIyMDUsNjkgQEAKICAgICB0eXBlLT50cF9hc19tYXBwaW5nID0gJmV0LT5hc19tYXBwaW5nOwogICAgIHR5cGUtPnRwX2FzX2J1ZmZlciA9ICZldC0+YXNfYnVmZmVyOwogICAgIHR5cGUtPnRwX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwotICAgIGlmICghdHlwZS0+dHBfbmFtZSkgewotICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBpZiAoIXR5cGUtPnRwX25hbWUpCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAvKiBTZXQgdHBfYmFzZSBhbmQgdHBfYmFzZXMgKi8KICAgICB0eXBlLT50cF9iYXNlcyA9IGJhc2VzOworICAgIGJhc2VzID0gTlVMTDsKICAgICBQeV9JTkNSRUYoYmFzZSk7CiAgICAgdHlwZS0+dHBfYmFzZSA9IGJhc2U7CiAKICAgICAvKiBJbml0aWFsaXplIHRwX2RpY3QgZnJvbSBwYXNzZWQtaW4gZGljdCAqLwotICAgIHR5cGUtPnRwX2RpY3QgPSBkaWN0ID0gUHlEaWN0X0NvcHkoZGljdCk7Ci0gICAgaWYgKGRpY3QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBQeV9JTkNSRUYoZGljdCk7CisgICAgdHlwZS0+dHBfZGljdCA9IGRpY3Q7CiAKICAgICAvKiBTZXQgX19tb2R1bGVfXyBpbiB0aGUgZGljdCAqLwotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkaWN0LCAiX19tb2R1bGVfXyIpID09IE5VTEwpIHsKKyAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19tb2R1bGVfXykgPT0gTlVMTCkgewogICAgICAgICB0bXAgPSBQeUV2YWxfR2V0R2xvYmFscygpOwogICAgICAgICBpZiAodG1wICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHRtcCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHRtcCwgIl9fbmFtZV9fIik7CisgICAgICAgICAgICB0bXAgPSBfUHlEaWN0X0dldEl0ZW1JZCh0bXAsICZQeUlkX19fbmFtZV9fKTsKICAgICAgICAgICAgIGlmICh0bXAgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiX19tb2R1bGVfXyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCkgPCAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQoZGljdCwgJlB5SWRfX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvKiBTZXQgaHRfcXVhbG5hbWUgdG8gZGljdFsnX19xdWFsbmFtZV9fJ10gaWYgYXZhaWxhYmxlLCBlbHNlIHRvCisgICAgICAgX19uYW1lX18uICBUaGUgX19xdWFsbmFtZV9fIGFjY2Vzc29yIHdpbGwgbG9vayBmb3IgaHRfcXVhbG5hbWUuCisgICAgKi8KKyAgICBxdWFsbmFtZSA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fcXVhbG5hbWVfXyk7CisgICAgaWYgKHF1YWxuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socXVhbG5hbWUpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIF9fcXVhbG5hbWVfXyBtdXN0IGJlIGEgc3RyLCBub3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocXVhbG5hbWUpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHF1YWxuYW1lID0gZXQtPmh0X25hbWU7CisgICAgfQorICAgIFB5X0lOQ1JFRihxdWFsbmFtZSk7CisgICAgZXQtPmh0X3F1YWxuYW1lID0gcXVhbG5hbWU7CisKICAgICAvKiBTZXQgdHBfZG9jIHRvIGEgY29weSBvZiBkaWN0WydfX2RvY19fJ10sIGlmIHRoZSBsYXR0ZXIgaXMgdGhlcmUKICAgICAgICBhbmQgaXMgYSBzdHJpbmcuICBUaGUgX19kb2NfXyBhY2Nlc3NvciB3aWxsIGZpcnN0IGxvb2sgZm9yIHRwX2RvYzsKICAgICAgICBpZiB0aGF0IGZhaWxzLCBpdCB3aWxsIHN0aWxsIGxvb2sgaW50byBfX2RpY3RfXy4KICAgICAqLwogICAgIHsKLSAgICAgICAgUHlPYmplY3QgKmRvYyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGRpY3QsICJfX2RvY19fIik7CisgICAgICAgIFB5T2JqZWN0ICpkb2MgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2RvY19fKTsKICAgICAgICAgaWYgKGRvYyAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhkb2MpKSB7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgIGNoYXIgKmRvY19zdHI7CiAgICAgICAgICAgICBjaGFyICp0cF9kb2M7CiAKICAgICAgICAgICAgIGRvY19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGRvYyk7Ci0gICAgICAgICAgICBpZiAoZG9jX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRvY19zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgLyogU2lsZW50bHkgdHJ1bmNhdGUgdGhlIGRvY3N0cmluZyBpZiBpdCBjb250YWlucyBudWxsIGJ5dGVzLiAqLwogICAgICAgICAgICAgbGVuID0gc3RybGVuKGRvY19zdHIpOwogICAgICAgICAgICAgdHBfZG9jID0gKGNoYXIgKilQeU9iamVjdF9NQUxMT0MobGVuICsgMSk7Ci0gICAgICAgICAgICBpZiAodHBfZG9jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodHBfZG9jID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIG1lbWNweSh0cF9kb2MsIGRvY19zdHIsIGxlbiArIDEpOwogICAgICAgICAgICAgdHlwZS0+dHBfZG9jID0gdHBfZG9jOwogICAgICAgICB9CkBAIC0yMjUzLDI4ICsyMjc1LDI1IEBACiAKICAgICAvKiBTcGVjaWFsLWNhc2UgX19uZXdfXzogaWYgaXQncyBhIHBsYWluIGZ1bmN0aW9uLAogICAgICAgIG1ha2UgaXQgYSBzdGF0aWMgZnVuY3Rpb24gKi8KLSAgICB0bXAgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkaWN0LCAiX19uZXdfXyIpOworICAgIHRtcCA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fbmV3X18pOwogICAgIGlmICh0bXAgIT0gTlVMTCAmJiBQeUZ1bmN0aW9uX0NoZWNrKHRtcCkpIHsKICAgICAgICAgdG1wID0gUHlTdGF0aWNNZXRob2RfTmV3KHRtcCk7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIl9fbmV3X18iLCB0bXApOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQoZGljdCwgJlB5SWRfX19uZXdfXywgdG1wKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICB9CiAKICAgICAvKiBBZGQgZGVzY3JpcHRvcnMgZm9yIGN1c3RvbSBzbG90cyBmcm9tIF9fc2xvdHNfXywgb3IgZm9yIF9fZGljdF9fICovCiAgICAgbXAgPSBQeUhlYXBUeXBlX0dFVF9NRU1CRVJTKGV0KTsKICAgICBzbG90b2Zmc2V0ID0gYmFzZS0+dHBfYmFzaWNzaXplOwotICAgIGlmIChzbG90cyAhPSBOVUxMKSB7CisgICAgaWYgKGV0LT5odF9zbG90cyAhPSBOVUxMKSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuc2xvdHM7IGkrKywgbXArKykgewogICAgICAgICAgICAgbXAtPm5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKAotICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc2xvdHMsIGkpKTsKLSAgICAgICAgICAgIGlmIChtcC0+bmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oZXQtPmh0X3Nsb3RzLCBpKSk7CisgICAgICAgICAgICBpZiAobXAtPm5hbWUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgbXAtPnR5cGUgPSBUX09CSkVDVF9FWDsKICAgICAgICAgICAgIG1wLT5vZmZzZXQgPSBzbG90b2Zmc2V0OwogCkBAIC0yMjkyLDYgKzIzMTEsOSBAQAogICAgICAgICAgICAgdHlwZS0+dHBfZGljdG9mZnNldCA9IHNsb3RvZmZzZXQ7CiAgICAgICAgIHNsb3RvZmZzZXQgKz0gc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgIH0KKyAgICBpZiAodHlwZS0+dHBfZGljdG9mZnNldCkgeworICAgICAgICBldC0+aHRfY2FjaGVkX2tleXMgPSBfUHlEaWN0X05ld0tleXNGb3JDbGFzcygpOworICAgIH0KICAgICBpZiAoYWRkX3dlYWspIHsKICAgICAgICAgYXNzZXJ0KCFiYXNlLT50cF9pdGVtc2l6ZSk7CiAgICAgICAgIHR5cGUtPnRwX3dlYWtsaXN0b2Zmc2V0ID0gc2xvdG9mZnNldDsKQEAgLTIzMzUsMTUgKzIzNTcsMjEgQEAKICAgICAgICAgdHlwZS0+dHBfZnJlZSA9IFB5T2JqZWN0X0RlbDsKIAogICAgIC8qIEluaXRpYWxpemUgdGhlIHJlc3QgKi8KLSAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIFB1dCB0aGUgcHJvcGVyIHNsb3RzIGluIHBsYWNlICovCiAgICAgZml4dXBfc2xvdF9kaXNwYXRjaGVycyh0eXBlKTsKIAorICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopdHlwZTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICBQeV9YREVDUkVGKGJhc2VzKTsKKyAgICBQeV9YREVDUkVGKHNsb3RzKTsKKyAgICBQeV9YREVDUkVGKHR5cGUpOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgc2hvcnQgc2xvdG9mZnNldHNbXSA9IHsKQEAgLTIzNTIsMzAgKzIzODAsODkgQEAKIH07CiAKIFB5T2JqZWN0ICoKLVB5VHlwZV9Gcm9tU3BlYyhQeVR5cGVfU3BlYyAqc3BlYykKK1B5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcyhQeVR5cGVfU3BlYyAqc3BlYywgUHlPYmplY3QgKmJhc2VzKQogewogICAgIFB5SGVhcFR5cGVPYmplY3QgKnJlcyA9IChQeUhlYXBUeXBlT2JqZWN0KilQeVR5cGVfR2VuZXJpY0FsbG9jKCZQeVR5cGVfVHlwZSwgMCk7CisgICAgUHlUeXBlT2JqZWN0ICp0eXBlLCAqYmFzZTsKKyAgICBjaGFyICpzOwogICAgIGNoYXIgKnJlc19zdGFydCA9IChjaGFyKilyZXM7CiAgICAgUHlUeXBlX1Nsb3QgKnNsb3Q7CisgICAgCisgICAgLyogU2V0IHRoZSB0eXBlIG5hbWUgYW5kIHF1YWxuYW1lICovCisgICAgcyA9IHN0cnJjaHIoc3BlYy0+bmFtZSwgJy4nKTsKKyAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICBzID0gKGNoYXIqKXNwZWMtPm5hbWU7CisgICAgZWxzZQorICAgICAgICBzKys7CiAKICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMtPmh0X25hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzcGVjLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdHlwZSA9ICZyZXMtPmh0X3R5cGU7CisgICAgLyogVGhlIGZsYWdzIG11c3QgYmUgaW5pdGlhbGl6ZWQgZWFybHksIGJlZm9yZSB0aGUgR0MgdHJhdmVyc2VzIHVzICovCisgICAgdHlwZS0+dHBfZmxhZ3MgPSBzcGVjLT5mbGFncyB8IFB5X1RQRkxBR1NfSEVBUFRZUEU7CisgICAgcmVzLT5odF9uYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcocyk7CiAgICAgaWYgKCFyZXMtPmh0X25hbWUpCiAgICAgICAgIGdvdG8gZmFpbDsKLSAgICByZXMtPmh0X3R5cGUudHBfbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcocmVzLT5odF9uYW1lKTsKLSAgICBpZiAoIXJlcy0+aHRfdHlwZS50cF9uYW1lKQorICAgIHJlcy0+aHRfcXVhbG5hbWUgPSByZXMtPmh0X25hbWU7CisgICAgUHlfSU5DUkVGKHJlcy0+aHRfcXVhbG5hbWUpOworICAgIHR5cGUtPnRwX25hbWUgPSBzcGVjLT5uYW1lOworICAgIGlmICghdHlwZS0+dHBfbmFtZSkKICAgICAgICAgZ290byBmYWlsOworICAgIAorICAgIC8qIEFkanVzdCBmb3IgZW1wdHkgdHVwbGUgYmFzZXMgKi8KKyAgICBpZiAoIWJhc2VzKSB7CisgICAgICAgIGJhc2UgPSAmUHlCYXNlT2JqZWN0X1R5cGU7CisgICAgICAgIC8qIFNlZSB3aGV0aGVyIFB5X3RwX2Jhc2Uocykgd2FzIHNwZWNpZmllZCAqLworICAgICAgICBmb3IgKHNsb3QgPSBzcGVjLT5zbG90czsgc2xvdC0+c2xvdDsgc2xvdCsrKSB7CisgICAgICAgICAgICBpZiAoc2xvdC0+c2xvdCA9PSBQeV90cF9iYXNlKQorICAgICAgICAgICAgICAgIGJhc2UgPSBzbG90LT5wZnVuYzsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNsb3QtPnNsb3QgPT0gUHlfdHBfYmFzZXMpIHsKKyAgICAgICAgICAgICAgICBiYXNlcyA9IHNsb3QtPnBmdW5jOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihiYXNlcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFiYXNlcykKKyAgICAgICAgICAgIGJhc2VzID0gUHlUdXBsZV9QYWNrKDEsIGJhc2UpOworICAgICAgICBpZiAoIWJhc2VzKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIFB5X0lOQ1JFRihiYXNlcyk7CiAKLSAgICByZXMtPmh0X3R5cGUudHBfYmFzaWNzaXplID0gc3BlYy0+YmFzaWNzaXplOwotICAgIHJlcy0+aHRfdHlwZS50cF9pdGVtc2l6ZSA9IHNwZWMtPml0ZW1zaXplOwotICAgIHJlcy0+aHRfdHlwZS50cF9mbGFncyA9IHNwZWMtPmZsYWdzIHwgUHlfVFBGTEFHU19IRUFQVFlQRTsKKyAgICAvKiBDYWxjdWxhdGUgYmVzdCBiYXNlLCBhbmQgY2hlY2sgdGhhdCBhbGwgYmFzZXMgYXJlIHR5cGUgb2JqZWN0cyAqLworICAgIGJhc2UgPSBiZXN0X2Jhc2UoYmFzZXMpOworICAgIGlmIChiYXNlID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBpZiAoIVB5VHlwZV9IYXNGZWF0dXJlKGJhc2UsIFB5X1RQRkxBR1NfQkFTRVRZUEUpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidHlwZSAnJS4xMDBzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSBiYXNlIHR5cGUiLAorICAgICAgICAgICAgICAgICAgICAgYmFzZS0+dHBfbmFtZSk7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICAvKiBJbml0aWFsaXplIGVzc2VudGlhbCBmaWVsZHMgKi8KKyAgICB0eXBlLT50cF9hc19udW1iZXIgPSAmcmVzLT5hc19udW1iZXI7CisgICAgdHlwZS0+dHBfYXNfc2VxdWVuY2UgPSAmcmVzLT5hc19zZXF1ZW5jZTsKKyAgICB0eXBlLT50cF9hc19tYXBwaW5nID0gJnJlcy0+YXNfbWFwcGluZzsKKyAgICB0eXBlLT50cF9hc19idWZmZXIgPSAmcmVzLT5hc19idWZmZXI7CisgICAgLyogU2V0IHRwX2Jhc2UgYW5kIHRwX2Jhc2VzICovCisgICAgdHlwZS0+dHBfYmFzZXMgPSBiYXNlczsKKyAgICBiYXNlcyA9IE5VTEw7CisgICAgUHlfSU5DUkVGKGJhc2UpOworICAgIHR5cGUtPnRwX2Jhc2UgPSBiYXNlOworCisgICAgdHlwZS0+dHBfYmFzaWNzaXplID0gc3BlYy0+YmFzaWNzaXplOworICAgIHR5cGUtPnRwX2l0ZW1zaXplID0gc3BlYy0+aXRlbXNpemU7CiAKICAgICBmb3IgKHNsb3QgPSBzcGVjLT5zbG90czsgc2xvdC0+c2xvdDsgc2xvdCsrKSB7Ci0gICAgICAgIGlmIChzbG90LT5zbG90ID49IHNpemVvZihzbG90b2Zmc2V0cykvc2l6ZW9mKHNsb3RvZmZzZXRzWzBdKSkgeworICAgICAgICBpZiAoc2xvdC0+c2xvdCA+PSBQeV9BUlJBWV9MRU5HVEgoc2xvdG9mZnNldHMpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW52YWxpZCBzbG90IG9mZnNldCIpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CisgICAgICAgIGlmIChzbG90LT5zbG90ID09IFB5X3RwX2Jhc2UgfHwgc2xvdC0+c2xvdCA9PSBQeV90cF9iYXNlcykKKyAgICAgICAgICAgIC8qIFByb2Nlc3NlZCBhYm92ZSAqLworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICoodm9pZCoqKShyZXNfc3RhcnQgKyBzbG90b2Zmc2V0c1tzbG90LT5zbG90XSkgPSBzbG90LT5wZnVuYzsKIAogICAgICAgICAvKiBuZWVkIHRvIG1ha2UgYSBjb3B5IG9mIHRoZSBkb2NzdHJpbmcgc2xvdCwgd2hpY2ggdXN1YWxseQpAQCAtMjM4NiwxOSArMjQ3MywyOSBAQAogICAgICAgICAgICAgaWYgKHRwX2RvYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgICAgIG1lbWNweSh0cF9kb2MsIHNsb3QtPnBmdW5jLCBsZW4pOwotICAgICAgICAgICAgcmVzLT5odF90eXBlLnRwX2RvYyA9IHRwX2RvYzsKKyAgICAgICAgICAgIHR5cGUtPnRwX2RvYyA9IHRwX2RvYzsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAocmVzLT5odF90eXBlLnRwX2RlYWxsb2MgPT0gTlVMTCkgeworICAgIGlmICh0eXBlLT50cF9kaWN0b2Zmc2V0KSB7CisgICAgICAgIHJlcy0+aHRfY2FjaGVkX2tleXMgPSBfUHlEaWN0X05ld0tleXNGb3JDbGFzcygpOworICAgIH0KKyAgICBpZiAodHlwZS0+dHBfZGVhbGxvYyA9PSBOVUxMKSB7CiAgICAgICAgIC8qIEl0J3MgYSBoZWFwIHR5cGUsIHNvIG5lZWRzIHRoZSBoZWFwIHR5cGVzJyBkZWFsbG9jLgogICAgICAgICAgICBzdWJ0eXBlX2RlYWxsb2Mgd2lsbCBjYWxsIHRoZSBiYXNlIHR5cGUncyB0cF9kZWFsbG9jLCBpZgogICAgICAgICAgICBuZWNlc3NhcnkuICovCi0gICAgICAgIHJlcy0+aHRfdHlwZS50cF9kZWFsbG9jID0gc3VidHlwZV9kZWFsbG9jOworICAgICAgICB0eXBlLT50cF9kZWFsbG9jID0gc3VidHlwZV9kZWFsbG9jOwogICAgIH0KIAotICAgIGlmIChQeVR5cGVfUmVhZHkoJnJlcy0+aHRfdHlwZSkgPCAwKQorICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKQogICAgICAgICBnb3RvIGZhaWw7CiAKKyAgICAvKiBTZXQgdHlwZS5fX21vZHVsZV9fICovCisgICAgcyA9IHN0cnJjaHIoc3BlYy0+bmFtZSwgJy4nKTsKKyAgICBpZiAocyAhPSBOVUxMKQorICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fLCAKKyAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgKKyAgICAgICAgICAgICAgICBzcGVjLT5uYW1lLCAoUHlfc3NpemVfdCkocyAtIHNwZWMtPm5hbWUpKSk7CisKICAgICByZXR1cm4gKFB5T2JqZWN0KilyZXM7CiAKICBmYWlsOgpAQCAtMjQwNiw2ICsyNTAzLDEyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK1B5T2JqZWN0ICoKK1B5VHlwZV9Gcm9tU3BlYyhQeVR5cGVfU3BlYyAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzKHNwZWMsIE5VTEwpOworfQorCiAKIC8qIEludGVybmFsIEFQSSB0byBsb29rIGZvciBhIG5hbWUgdGhyb3VnaCB0aGUgTVJPLgogICAgVGhpcyByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlLCBhbmQgZG9lc24ndCBzZXQgYW4gZXhjZXB0aW9uISAqLwpAQCAtMjQzNSw2ICsyNTM4LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXMgPSBOVUxMOworICAgIC8qIGtlZXAgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIG1ybyBiZWNhdXNlIHR5cGUtPnRwX21ybyBjYW4gYmUgcmVwbGFjZWQKKyAgICAgICBkdXJpbmcgUHlEaWN0X0dldEl0ZW0oZGljdCwgbmFtZSkgICovCisgICAgUHlfSU5DUkVGKG1ybyk7CiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2sobXJvKSk7CiAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUobXJvKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CkBAIC0yNDQ2LDYgKzI1NTIsNyBAQAogICAgICAgICBpZiAocmVzICE9IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CisgICAgUHlfREVDUkVGKG1ybyk7CiAKICAgICBpZiAoTUNBQ0hFX0NBQ0hFQUJMRV9OQU1FKG5hbWUpICYmIGFzc2lnbl92ZXJzaW9uX3RhZyh0eXBlKSkgewogICAgICAgICBoID0gTUNBQ0hFX0hBU0hfTUVUSE9EKHR5cGUsIG5hbWUpOwpAQCAtMjQ1OCw2ICsyNTY1LDE2IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK19QeVR5cGVfTG9va3VwSWQoUHlUeXBlT2JqZWN0ICp0eXBlLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm9uYW1lOworICAgIG9uYW1lID0gX1B5VW5pY29kZV9Gcm9tSWQobmFtZSk7ICAgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAob25hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeVR5cGVfTG9va3VwKHR5cGUsIG9uYW1lKTsKK30KKwogLyogVGhpcyBpcyBzaW1pbGFyIHRvIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKCksCiAgICBidXQgdXNlcyBfUHlUeXBlX0xvb2t1cCgpIGluc3RlYWQgb2YganVzdCBsb29raW5nIGluIHR5cGUtPnRwX2RpY3QuICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjU1Nyw2ICsyNjc0LDkgQEAKICAgICByZXR1cm4gdXBkYXRlX3Nsb3QodHlwZSwgbmFtZSk7CiB9CiAKK2V4dGVybiB2b2lkCitfUHlEaWN0S2V5c19EZWNSZWYoUHlEaWN0S2V5c09iamVjdCAqa2V5cyk7CisKIHN0YXRpYyB2b2lkCiB0eXBlX2RlYWxsb2MoUHlUeXBlT2JqZWN0ICp0eXBlKQogewpAQCAtMjU3OCw3ICsyNjk4LDEwIEBACiAgICAgICovCiAgICAgUHlPYmplY3RfRnJlZSgoY2hhciAqKXR5cGUtPnRwX2RvYyk7CiAgICAgUHlfWERFQ1JFRihldC0+aHRfbmFtZSk7CisgICAgUHlfWERFQ1JFRihldC0+aHRfcXVhbG5hbWUpOwogICAgIFB5X1hERUNSRUYoZXQtPmh0X3Nsb3RzKTsKKyAgICBpZiAoZXQtPmh0X2NhY2hlZF9rZXlzKQorICAgICAgICBfUHlEaWN0S2V5c19EZWNSZWYoZXQtPmh0X2NhY2hlZF9rZXlzKTsKICAgICBQeV9UWVBFKHR5cGUpLT50cF9mcmVlKChQeU9iamVjdCAqKXR5cGUpOwogfQogCkBAIC0yNjE2LDYgKzI3MzksOTkgQEAKICAgICByZXR1cm4gUHlEaWN0X05ldygpOwogfQogCisvKgorICAgTWVyZ2UgdGhlIF9fZGljdF9fIG9mIGFjbGFzcyBpbnRvIGRpY3QsIGFuZCByZWN1cnNpdmVseSBhbHNvIGFsbAorICAgdGhlIF9fZGljdF9fcyBvZiBhY2xhc3MncyBiYXNlIGNsYXNzZXMuICBUaGUgb3JkZXIgb2YgbWVyZ2luZyBpc24ndAorICAgZGVmaW5lZCwgYXMgaXQncyBleHBlY3RlZCB0aGF0IG9ubHkgdGhlIGZpbmFsIHNldCBvZiBkaWN0IGtleXMgaXMKKyAgIGludGVyZXN0aW5nLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuCisqLworCitzdGF0aWMgaW50CittZXJnZV9jbGFzc19kaWN0KFB5T2JqZWN0ICpkaWN0LCBQeU9iamVjdCAqYWNsYXNzKQoreworICAgIFB5T2JqZWN0ICpjbGFzc2RpY3Q7CisgICAgUHlPYmplY3QgKmJhc2VzOworICAgIF9QeV9JREVOVElGSUVSKF9fYmFzZXNfXyk7CisKKyAgICBhc3NlcnQoUHlEaWN0X0NoZWNrKGRpY3QpKTsKKyAgICBhc3NlcnQoYWNsYXNzKTsKKworICAgIC8qIE1lcmdlIGluIHRoZSB0eXBlJ3MgZGljdCAoaWYgYW55KS4gKi8KKyAgICBjbGFzc2RpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKGFjbGFzcywgJlB5SWRfX19kaWN0X18pOworICAgIGlmIChjbGFzc2RpY3QgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaW50IHN0YXR1cyA9IFB5RGljdF9VcGRhdGUoZGljdCwgY2xhc3NkaWN0KTsKKyAgICAgICAgUHlfREVDUkVGKGNsYXNzZGljdCk7CisgICAgICAgIGlmIChzdGF0dXMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIFJlY3Vyc2l2ZWx5IG1lcmdlIGluIHRoZSBiYXNlIHR5cGVzJyAoaWYgYW55KSBkaWN0cy4gKi8KKyAgICBiYXNlcyA9IF9QeU9iamVjdF9HZXRBdHRySWQoYWNsYXNzLCAmUHlJZF9fX2Jhc2VzX18pOworICAgIGlmIChiYXNlcyA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UgeworICAgICAgICAvKiBXZSBoYXZlIG5vIGd1YXJhbnRlZSB0aGF0IGJhc2VzIGlzIGEgcmVhbCB0dXBsZSAqLworICAgICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgICAgIG4gPSBQeVNlcXVlbmNlX1NpemUoYmFzZXMpOyAvKiBUaGlzIGJldHRlciBiZSByaWdodCAqLworICAgICAgICBpZiAobiA8IDApCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhdHVzOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpiYXNlID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGJhc2VzLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoYmFzZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdHVzID0gbWVyZ2VfY2xhc3NfZGljdChkaWN0LCBiYXNlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZSk7CisgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyogX19kaXJfXyBmb3IgdHlwZSBvYmplY3RzOiByZXR1cm5zIF9fZGljdF9fIGFuZCBfX2Jhc2VzX18uCisgICBXZSBkZWxpYmVyYXRlbHkgZG9uJ3Qgc3VjayB1cCBpdHMgX19jbGFzc19fLCBhcyBtZXRob2RzIGJlbG9uZ2luZyB0byB0aGUKKyAgIG1ldGFjbGFzcyB3b3VsZCBwcm9iYWJseSBiZSBtb3JlIGNvbmZ1c2luZyB0aGFuIGhlbHBmdWwuCisqLworc3RhdGljIFB5T2JqZWN0ICoKK3R5cGVfZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGljdCA9IFB5RGljdF9OZXcoKTsKKworICAgIGlmIChkaWN0ICE9IE5VTEwgJiYgbWVyZ2VfY2xhc3NfZGljdChkaWN0LCBzZWxmKSA9PSAwKQorICAgICAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKKworICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0KgordHlwZV9zaXplb2YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzX3VudXNlZCkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gKFB5VHlwZU9iamVjdCopc2VsZjsKKyAgICBpZiAodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSB7CisgICAgICAgIFB5SGVhcFR5cGVPYmplY3QqIGV0ID0gKFB5SGVhcFR5cGVPYmplY3QqKXR5cGU7CisgICAgICAgIHNpemUgPSBzaXplb2YoUHlIZWFwVHlwZU9iamVjdCk7CisgICAgICAgIGlmIChldC0+aHRfY2FjaGVkX2tleXMpCisgICAgICAgICAgICBzaXplICs9IF9QeURpY3RfS2V5c1NpemUoZXQtPmh0X2NhY2hlZF9rZXlzKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBzaXplID0gc2l6ZW9mKFB5VHlwZU9iamVjdCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIHR5cGVfbWV0aG9kc1tdID0gewogICAgIHsibXJvIiwgKFB5Q0Z1bmN0aW9uKW1yb19leHRlcm5hbCwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigibXJvKCkgLT4gbGlzdFxucmV0dXJuIGEgdHlwZSdzIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIil9LApAQCAtMjYyOSw2ICsyODQ1LDEwIEBACiAgICAgIFB5RG9jX1NUUigiX19pbnN0YW5jZWNoZWNrX18oKSAtPiBib29sXG5jaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2UiKX0sCiAgICAgeyJfX3N1YmNsYXNzY2hlY2tfXyIsIHR5cGVfX19zdWJjbGFzc2NoZWNrX18sIE1FVEhfTywKICAgICAgUHlEb2NfU1RSKCJfX3N1YmNsYXNzY2hlY2tfXygpIC0+IGJvb2xcbmNoZWNrIGlmIGEgY2xhc3MgaXMgYSBzdWJjbGFzcyIpfSwKKyAgICB7Il9fZGlyX18iLCB0eXBlX2RpciwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiX19kaXJfXygpIC0+IGxpc3RcbnNwZWNpYWxpemVkIF9fZGlyX18gaW1wbGVtZW50YXRpb24gZm9yIHR5cGVzIil9LAorICAgIHsiX19zaXplb2ZfXyIsICAgICAgdHlwZV9zaXplb2YsICAgICAgIE1FVEhfTk9BUkdTLAorICAgICAiX19zaXplb2ZfXygpIC0+IGludFxucmV0dXJuIG1lbW9yeSBjb25zdW1wdGlvbiBvZiB0aGUgdHlwZSBvYmplY3QifSwKICAgICB7MH0KIH07CiAKQEAgLTI2NDEsNyArMjg2MSwxMiBAQAogewogICAgIC8qIEJlY2F1c2Ugb2YgdHlwZV9pc19nYygpLCB0aGUgY29sbGVjdG9yIG9ubHkgY2FsbHMgdGhpcwogICAgICAgIGZvciBoZWFwdHlwZXMuICovCi0gICAgYXNzZXJ0KHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSk7CisgICAgaWYgKCEodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgeworICAgICAgICBjaGFyIG1zZ1syMDBdOworICAgICAgICBzcHJpbnRmKG1zZywgInR5cGVfdHJhdmVyc2UoKSBjYWxsZWQgZm9yIG5vbi1oZWFwIHR5cGUgJyUuMTAwcyciLAorICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOworICAgICAgICBQeV9GYXRhbEVycm9yKG1zZyk7CisgICAgfQogCiAgICAgUHlfVklTSVQodHlwZS0+dHBfZGljdCk7CiAgICAgUHlfVklTSVQodHlwZS0+dHBfY2FjaGUpOwpAQCAtMjY2MCw2ICsyODg1LDcgQEAKIHN0YXRpYyBpbnQKIHR5cGVfY2xlYXIoUHlUeXBlT2JqZWN0ICp0eXBlKQogeworICAgIFB5RGljdEtleXNPYmplY3QgKmNhY2hlZF9rZXlzOwogICAgIC8qIEJlY2F1c2Ugb2YgdHlwZV9pc19nYygpLCB0aGUgY29sbGVjdG9yIG9ubHkgY2FsbHMgdGhpcwogICAgICAgIGZvciBoZWFwdHlwZXMuICovCiAgICAgYXNzZXJ0KHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSk7CkBAIC0yNjkxLDYgKzI5MTcsMTEgQEAKICAgICAqLwogCiAgICAgUHlUeXBlX01vZGlmaWVkKHR5cGUpOworICAgIGNhY2hlZF9rZXlzID0gKChQeUhlYXBUeXBlT2JqZWN0ICopdHlwZSktPmh0X2NhY2hlZF9rZXlzOworICAgIGlmIChjYWNoZWRfa2V5cyAhPSBOVUxMKSB7CisgICAgICAgICgoUHlIZWFwVHlwZU9iamVjdCAqKXR5cGUpLT5odF9jYWNoZWRfa2V5cyA9IE5VTEw7CisgICAgICAgIF9QeURpY3RLZXlzX0RlY1JlZihjYWNoZWRfa2V5cyk7CisgICAgfQogICAgIGlmICh0eXBlLT50cF9kaWN0KQogICAgICAgICBQeURpY3RfQ2xlYXIodHlwZS0+dHBfZGljdCk7CiAgICAgUHlfQ0xFQVIodHlwZS0+dHBfbXJvKTsKQEAgLTI4MDYsMjIgKzMwMzcsMTEgQEAKIG9iamVjdF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgaW50IGVyciA9IDA7Ci0gICAgaWYgKGV4Y2Vzc19hcmdzKGFyZ3MsIGt3ZHMpKSB7Ci0gICAgICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IFB5X1RZUEUoc2VsZik7Ci0gICAgICAgIGlmICh0eXBlLT50cF9pbml0ICE9IG9iamVjdF9pbml0ICYmCi0gICAgICAgICAgICB0eXBlLT50cF9uZXcgIT0gb2JqZWN0X25ldykKLSAgICAgICAgewotICAgICAgICAgICAgZXJyID0gUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdC5fX2luaXRfXygpIHRha2VzIG5vIHBhcmFtZXRlcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAxKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh0eXBlLT50cF9pbml0ICE9IG9iamVjdF9pbml0IHx8Ci0gICAgICAgICAgICAgICAgIHR5cGUtPnRwX25ldyA9PSBvYmplY3RfbmV3KQotICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJvYmplY3QuX19pbml0X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIik7Ci0gICAgICAgICAgICBlcnIgPSAtMTsKLSAgICAgICAgfQorICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IFB5X1RZUEUoc2VsZik7CisgICAgaWYgKGV4Y2Vzc19hcmdzKGFyZ3MsIGt3ZHMpICYmCisgICAgICAgICh0eXBlLT50cF9uZXcgPT0gb2JqZWN0X25ldyB8fCB0eXBlLT50cF9pbml0ICE9IG9iamVjdF9pbml0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAib2JqZWN0Ll9faW5pdF9fKCkgdGFrZXMgbm8gcGFyYW1ldGVycyIpOworICAgICAgICBlcnIgPSAtMTsKICAgICB9CiAgICAgcmV0dXJuIGVycjsKIH0KQEAgLTI4MjksMzMgKzMwNDksMjEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvYmplY3RfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGludCBlcnIgPSAwOwotICAgIGlmIChleGNlc3NfYXJncyhhcmdzLCBrd2RzKSkgewotICAgICAgICBpZiAodHlwZS0+dHBfbmV3ICE9IG9iamVjdF9uZXcgJiYKLSAgICAgICAgICAgIHR5cGUtPnRwX2luaXQgIT0gb2JqZWN0X2luaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVyciA9IFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QuX19uZXdfXygpIHRha2VzIG5vIHBhcmFtZXRlcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAxKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh0eXBlLT50cF9uZXcgIT0gb2JqZWN0X25ldyB8fAotICAgICAgICAgICAgICAgICB0eXBlLT50cF9pbml0ID09IG9iamVjdF9pbml0KQotICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJvYmplY3QuX19uZXdfXygpIHRha2VzIG5vIHBhcmFtZXRlcnMiKTsKLSAgICAgICAgICAgIGVyciA9IC0xOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChlcnIgPCAwKQorICAgIGlmIChleGNlc3NfYXJncyhhcmdzLCBrd2RzKSAmJgorICAgICAgICAodHlwZS0+dHBfaW5pdCA9PSBvYmplY3RfaW5pdCB8fCB0eXBlLT50cF9uZXcgIT0gb2JqZWN0X25ldykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm9iamVjdC5fX25ld19fKCkgdGFrZXMgbm8gcGFyYW1ldGVycyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBpZiAodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0lTX0FCU1RSQUNUKSB7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqY29tbWEgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqYWJzdHJhY3RfbWV0aG9kcyA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0ICpidWlsdGluczsKICAgICAgICAgUHlPYmplY3QgKnNvcnRlZDsKICAgICAgICAgUHlPYmplY3QgKnNvcnRlZF9tZXRob2RzID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKmpvaW5lZCA9IE5VTEw7CisgICAgICAgIFB5T2JqZWN0ICpjb21tYTsKKyAgICAgICAgX1B5X3N0YXRpY19zdHJpbmcoY29tbWFfaWQsICIsICIpOworICAgICAgICBfUHlfSURFTlRJRklFUihzb3J0ZWQpOwogCiAgICAgICAgIC8qIENvbXB1dGUgIiwgIi5qb2luKHNvcnRlZCh0eXBlLl9fYWJzdHJhY3RtZXRob2RzX18pKQogICAgICAgICAgICBpbnRvIGpvaW5lZC4gKi8KQEAgLTI4NjUsNyArMzA3Myw3IEBACiAgICAgICAgIGJ1aWx0aW5zID0gUHlFdmFsX0dldEJ1aWx0aW5zKCk7CiAgICAgICAgIGlmIChidWlsdGlucyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgc29ydGVkID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoYnVpbHRpbnMsICJzb3J0ZWQiKTsKKyAgICAgICAgc29ydGVkID0gX1B5RGljdF9HZXRJdGVtSWQoYnVpbHRpbnMsICZQeUlkX3NvcnRlZCk7CiAgICAgICAgIGlmIChzb3J0ZWQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIHNvcnRlZF9tZXRob2RzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzb3J0ZWQsCkBAIC0yODczLDEzICszMDgxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICAgICAgaWYgKHNvcnRlZF9tZXRob2RzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBpZiAoY29tbWEgPT0gTlVMTCkgewotICAgICAgICAgICAgY29tbWEgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiLCAiKTsKLSAgICAgICAgICAgIGlmIChjb21tYSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgam9pbmVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZChjb21tYSwgImpvaW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPIiwgIHNvcnRlZF9tZXRob2RzKTsKKyAgICAgICAgY29tbWEgPSBfUHlVbmljb2RlX0Zyb21JZCgmY29tbWFfaWQpOworICAgICAgICBpZiAoY29tbWEgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGpvaW5lZCA9IFB5VW5pY29kZV9Kb2luKGNvbW1hLCBzb3J0ZWRfbWV0aG9kcyk7CiAgICAgICAgIGlmIChqb2luZWQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTI5MTcsNyArMzEyMiw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihtb2QpOwogICAgICAgICBtb2QgPSBOVUxMOwogICAgIH0KLSAgICBuYW1lID0gdHlwZV9uYW1lKHR5cGUsIE5VTEwpOworICAgIG5hbWUgPSB0eXBlX3F1YWxuYW1lKHR5cGUsIE5VTEwpOwogICAgIGlmIChuYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChtb2QgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhtb2QsICJidWlsdGlucyIpKQpAQCAtMzA4MCw3ICszMjg1LDcgQEAKICAgICB9CiAgICAgaWYgKCFQeVR5cGVfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgIl9fY2xhc3NfXyBtdXN0IGJlIHNldCB0byBuZXctc3R5bGUgY2xhc3MsIG5vdCAnJXMnIG9iamVjdCIsCisgICAgICAgICAgIl9fY2xhc3NfXyBtdXN0IGJlIHNldCB0byBhIGNsYXNzLCBub3QgJyVzJyBvYmplY3QiLAogICAgICAgICAgIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMxMjEsMTQgKzMzMjYsMTkgQEAKIGltcG9ydF9jb3B5cmVnKHZvaWQpCiB7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpjb3B5cmVnX3N0cjsKKyAgICBzdGF0aWMgUHlPYmplY3QgKm1vZF9jb3B5cmVnID0gTlVMTDsKIAogICAgIGlmICghY29weXJlZ19zdHIpIHsKICAgICAgICAgY29weXJlZ19zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiY29weXJlZyIpOwogICAgICAgICBpZiAoY29weXJlZ19zdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBpZiAoIW1vZF9jb3B5cmVnKSB7CisgICAgICAgIG1vZF9jb3B5cmVnID0gUHlJbXBvcnRfSW1wb3J0KGNvcHlyZWdfc3RyKTsKKyAgICB9CiAKLSAgICByZXR1cm4gUHlJbXBvcnRfSW1wb3J0KGNvcHlyZWdfc3RyKTsKKyAgICBQeV9YSU5DUkVGKG1vZF9jb3B5cmVnKTsKKyAgICByZXR1cm4gbW9kX2NvcHlyZWc7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMTM3LDE0ICszMzQ3LDExIEBACiAgICAgUHlPYmplY3QgKmNsc2RpY3Q7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CiAgICAgUHlPYmplY3QgKnNsb3RuYW1lczsKLQotICAgIGlmICghUHlUeXBlX0NoZWNrKGNscykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9CisgICAgX1B5X0lERU5USUZJRVIoX19zbG90bmFtZXNfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX3Nsb3RuYW1lcyk7CiAKICAgICBjbHNkaWN0ID0gKChQeVR5cGVPYmplY3QgKiljbHMpLT50cF9kaWN0OwotICAgIHNsb3RuYW1lcyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGNsc2RpY3QsICJfX3Nsb3RuYW1lc19fIik7CisgICAgc2xvdG5hbWVzID0gX1B5RGljdF9HZXRJdGVtSWQoY2xzZGljdCwgJlB5SWRfX19zbG90bmFtZXNfXyk7CiAgICAgaWYgKHNsb3RuYW1lcyAhPSBOVUxMICYmIFB5TGlzdF9DaGVjayhzbG90bmFtZXMpKSB7CiAgICAgICAgIFB5X0lOQ1JFRihzbG90bmFtZXMpOwogICAgICAgICByZXR1cm4gc2xvdG5hbWVzOwpAQCAtMzE1NCw3ICszMzYxLDcgQEAKICAgICBpZiAoY29weXJlZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHNsb3RuYW1lcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoY29weXJlZywgIl9zbG90bmFtZXMiLCAiTyIsIGNscyk7CisgICAgc2xvdG5hbWVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChjb3B5cmVnLCAmUHlJZF9fc2xvdG5hbWVzLCAiTyIsIGNscyk7CiAgICAgUHlfREVDUkVGKGNvcHlyZWcpOwogICAgIGlmIChzbG90bmFtZXMgIT0gTlVMTCAmJgogICAgICAgICBzbG90bmFtZXMgIT0gUHlfTm9uZSAmJgpAQCAtMzE3OCwxMiArMzM4NSwxMyBAQAogICAgIFB5T2JqZWN0ICpzbG90cyA9IE5VTEwsICpsaXN0aXRlbXMgPSBOVUxMLCAqZGljdGl0ZW1zID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29weXJlZyA9IE5VTEwsICpuZXdvYmogPSBOVUxMLCAqcmVzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRuZXdhcmdzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0c3RhdGVfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7CiAKLSAgICBjbHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fY2xhc3NfXyIpOwotICAgIGlmIChjbHMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY2xzID0gKFB5T2JqZWN0ICopIFB5X1RZUEUob2JqKTsKIAotICAgIGdldG5ld2FyZ3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZ2V0bmV3YXJnc19fIik7CisgICAgZ2V0bmV3YXJncyA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2dldG5ld2FyZ3NfXyk7CiAgICAgaWYgKGdldG5ld2FyZ3MgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRuZXdhcmdzLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGdldG5ld2FyZ3MpOwpAQCAtMzIwMSw3ICszNDA5LDcgQEAKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVuZDsKIAotICAgIGdldHN0YXRlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2dldHN0YXRlX18iKTsKKyAgICBnZXRzdGF0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2dldHN0YXRlX18pOwogICAgIGlmIChnZXRzdGF0ZSAhPSBOVUxMKSB7CiAgICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRzdGF0ZSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRzdGF0ZSk7CkBAIC0zMjA5LDE3ICszNDE3LDE4IEBACiAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICoqZGljdDsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgc3RhdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZGljdF9fIik7Ci0gICAgICAgIGlmIChzdGF0ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBkaWN0ID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKKyAgICAgICAgaWYgKGRpY3QgJiYgKmRpY3QpCisgICAgICAgICAgICBzdGF0ZSA9ICpkaWN0OworICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdGF0ZSA9IFB5X05vbmU7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoc3RhdGUpOwotICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihzdGF0ZSk7CiAgICAgICAgIG5hbWVzID0gc2xvdG5hbWVzKGNscyk7CiAgICAgICAgIGlmIChuYW1lcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgIGlmIChuYW1lcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChuYW1lcyAhPSBQeV9Ob25lICYmIFB5TGlzdF9HRVRfU0laRShuYW1lcykgPiAwKSB7CiAgICAgICAgICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKG5hbWVzKSk7CiAgICAgICAgICAgICBzbG90cyA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgICAgIGlmIChzbG90cyA9PSBOVUxMKQpAQCAtMzI2Niw3ICszNDc1LDggQEAKICAgICAgICAgUHlfSU5DUkVGKGRpY3RpdGVtcyk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqaXRlbXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKG9iaiwgIml0ZW1zIiwgIiIpOworICAgICAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CisgICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgIiIpOwogICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICBkaWN0aXRlbXMgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZW1zKTsKQEAgLTMyNzgsNyArMzQ4OCw3IEBACiAgICAgY29weXJlZyA9IGltcG9ydF9jb3B5cmVnKCk7CiAgICAgaWYgKGNvcHlyZWcgPT0gTlVMTCkKICAgICAgICAgZ290byBlbmQ7Ci0gICAgbmV3b2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb3B5cmVnLCAiX19uZXdvYmpfXyIpOworICAgIG5ld29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfX19uZXdvYmpfXyk7CiAgICAgaWYgKG5ld29iaiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVuZDsKIApAQCAtMzI4Niw4ICszNDk2LDggQEAKICAgICBhcmdzMiA9IFB5VHVwbGVfTmV3KG4rMSk7CiAgICAgaWYgKGFyZ3MyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZW5kOworICAgIFB5X0lOQ1JFRihjbHMpOwogICAgIFB5VHVwbGVfU0VUX0lURU0oYXJnczIsIDAsIGNscyk7Ci0gICAgY2xzID0gTlVMTDsKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMzI5Nyw3ICszNTA3LDYgQEAKICAgICByZXMgPSBQeVR1cGxlX1BhY2soNSwgbmV3b2JqLCBhcmdzMiwgc3RhdGUsIGxpc3RpdGVtcywgZGljdGl0ZW1zKTsKIAogICBlbmQ6Ci0gICAgUHlfWERFQ1JFRihjbHMpOwogICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgUHlfWERFQ1JFRihhcmdzMik7CiAgICAgUHlfWERFQ1JFRihzbG90cyk7CkBAIC0zMzU3LDMxICszNTY2LDM0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X3JlZHVjZV9leChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgc3RhdGljIFB5T2JqZWN0ICpvYmpyZWR1Y2U7CiAgICAgUHlPYmplY3QgKnJlZHVjZSwgKnJlczsKICAgICBpbnQgcHJvdG8gPSAwOworICAgIF9QeV9JREVOVElGSUVSKF9fcmVkdWNlX18pOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZWR1Y2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX3JlZHVjZV9fIik7CisgICAgaWYgKG9ianJlZHVjZSA9PSBOVUxMKSB7CisgICAgICAgIG9ianJlZHVjZSA9IF9QeURpY3RfR2V0SXRlbUlkKFB5QmFzZU9iamVjdF9UeXBlLnRwX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fcmVkdWNlX18pOworICAgICAgICBpZiAob2JqcmVkdWNlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZWR1Y2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fcmVkdWNlX18pOwogICAgIGlmIChyZWR1Y2UgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKmNscywgKmNsc3JlZHVjZSwgKm9ianJlZHVjZTsKKyAgICAgICAgUHlPYmplY3QgKmNscywgKmNsc3JlZHVjZTsKICAgICAgICAgaW50IG92ZXJyaWRlOwotICAgICAgICBjbHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2NsYXNzX18iKTsKLSAgICAgICAgaWYgKGNscyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVkdWNlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGNsc3JlZHVjZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2xzLCAiX19yZWR1Y2VfXyIpOwotICAgICAgICBQeV9ERUNSRUYoY2xzKTsKKworICAgICAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShzZWxmKTsKKyAgICAgICAgY2xzcmVkdWNlID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fcmVkdWNlX18pOwogICAgICAgICBpZiAoY2xzcmVkdWNlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWR1Y2UpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgb2JqcmVkdWNlID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoUHlCYXNlT2JqZWN0X1R5cGUudHBfZGljdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fcmVkdWNlX18iKTsKICAgICAgICAgb3ZlcnJpZGUgPSAoY2xzcmVkdWNlICE9IG9ianJlZHVjZSk7CiAgICAgICAgIFB5X0RFQ1JFRihjbHNyZWR1Y2UpOwogICAgICAgICBpZiAob3ZlcnJpZGUpIHsKQEAgLTMzOTksOCArMzYxMSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X3N1YmNsYXNzaG9vayhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIFB5RG9jX1NUUlZBUihvYmplY3Rfc3ViY2xhc3Nob29rX2RvYywKQEAgLTM0MzEsMjEgKzM2NDIsMjEgQEAKICAgICBzZWxmX2FzX3N0ciA9IFB5T2JqZWN0X1N0cihzZWxmKTsKICAgICBpZiAoc2VsZl9hc19zdHIgIT0gTlVMTCkgewogICAgICAgICAvKiBJc3N1ZSA3OTk0OiBJZiB3ZSdyZSBjb252ZXJ0aW5nIHRvIGEgc3RyaW5nLCB3ZQotCSAgIHNob3VsZCByZWplY3QgZm9ybWF0IHNwZWNpZmljYXRpb25zICovCi0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpID4gMCkgewotCSAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCi0JCQkgICAgICJvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCAiCi0JCQkgICAgICJzdHJpbmcgaXMgZGVwcmVjYXRlZCIsIDEpIDwgMCkgewotCSAgICAgIGdvdG8gZG9uZTsKLQkgICAgfQotCSAgICAvKiBFdmVudHVhbGx5IHRoaXMgd2lsbCBiZWNvbWUgYW4gZXJyb3I6Ci0JICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0JICAgICAgICJub24tZW1wdHkgZm9ybWF0IHN0cmluZyBwYXNzZWQgdG8gb2JqZWN0Ll9fZm9ybWF0X18iKTsKLQkgICAgICAgZ290byBkb25lOwotCSAgICAqLwotCX0KKyAgICAgICAgICAgc2hvdWxkIHJlamVjdCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgKi8KKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGZvcm1hdF9zcGVjKSA+IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIGlzIGRlcHJlY2F0ZWQiLCAxKSA8IDApIHsKKyAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogRXZlbnR1YWxseSB0aGlzIHdpbGwgYmVjb21lIGFuIGVycm9yOgorICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICJub24tZW1wdHkgZm9ybWF0IHN0cmluZyBwYXNzZWQgdG8gb2JqZWN0Ll9fZm9ybWF0X18iKTsKKyAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgICovCisgICAgICAgIH0KIAotCXJlc3VsdCA9IFB5T2JqZWN0X0Zvcm1hdChzZWxmX2FzX3N0ciwgZm9ybWF0X3NwZWMpOworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Gb3JtYXQoc2VsZl9hc19zdHIsIGZvcm1hdF9zcGVjKTsKICAgICB9CiAKIGRvbmU6CkBAIC0zNDY4LDYgKzM2NzksNTMgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKKy8qIF9fZGlyX18gZm9yIGdlbmVyaWMgb2JqZWN0czogcmV0dXJucyBfX2RpY3RfXywgX19jbGFzc19fLAorICAgYW5kIHJlY3Vyc2l2ZWx5IHVwIHRoZSBfX2NsYXNzX18uX19iYXNlc19fIGNoYWluLgorKi8KK3N0YXRpYyBQeU9iamVjdCAqCitvYmplY3RfZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGljdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKml0c2NsYXNzID0gTlVMTDsKKworICAgIC8qIEdldCBfX2RpY3RfXyAod2hpY2ggbWF5IG9yIG1heSBub3QgYmUgYSByZWFsIGRpY3QuLi4pICovCisgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19kaWN0X18pOworICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICB9CisgICAgZWxzZSBpZiAoIVB5RGljdF9DaGVjayhkaWN0KSkgeworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBDb3B5IF9fZGljdF9fIHRvIGF2b2lkIG11dGF0aW5nIGl0LiAqLworICAgICAgICBQeU9iamVjdCAqdGVtcCA9IFB5RGljdF9Db3B5KGRpY3QpOworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgIGRpY3QgPSB0ZW1wOworICAgIH0KKworICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBNZXJnZSBpbiBhdHRycyByZWFjaGFibGUgZnJvbSBpdHMgY2xhc3MuICovCisgICAgaXRzY2xhc3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fY2xhc3NfXyk7CisgICAgaWYgKGl0c2NsYXNzID09IE5VTEwpCisgICAgICAgIC8qIFhYWCh0b21lcik6IFBlcmhhcHMgZmFsbCBiYWNrIHRvIG9iai0+b2JfdHlwZSBpZiBubworICAgICAgICAgICAgICAgICAgICAgICBfX2NsYXNzX18gZXhpc3RzPyAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UgaWYgKG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgaXRzY2xhc3MpICE9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKKyAgICAvKiBmYWxsIHRocm91Z2ggKi8KK2Vycm9yOgorICAgIFB5X1hERUNSRUYoaXRzY2xhc3MpOworICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIG9iamVjdF9tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9leF9fIiwgb2JqZWN0X3JlZHVjZV9leCwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoImhlbHBlciBmb3IgcGlja2xlIil9LApAQCAtMzQ3OSw2ICszNzM3LDggQEAKICAgICAgUHlEb2NfU1RSKCJkZWZhdWx0IG9iamVjdCBmb3JtYXR0ZXIiKX0sCiAgICAgeyJfX3NpemVvZl9fIiwgb2JqZWN0X3NpemVvZiwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX19zaXplb2ZfXygpIC0+IGludFxuc2l6ZSBvZiBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcyIpfSwKKyAgICB7Il9fZGlyX18iLCBvYmplY3RfZGlyLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX2Rpcl9fKCkgLT4gbGlzdFxuZGVmYXVsdCBkaXIoKSBpbXBsZW1lbnRhdGlvbiIpfSwKICAgICB7MH0KIH07CiAKQEAgLTM1NDgsNyArMzgwOCw3IEBACiAgICAgICAgICAgICBkZXNjciA9IFB5RGVzY3JfTmV3Q2xhc3NNZXRob2QodHlwZSwgbWV0aCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAobWV0aC0+bWxfZmxhZ3MgJiBNRVRIX1NUQVRJQykgewotICAgICAgICAgICAgUHlPYmplY3QgKmNmdW5jID0gUHlDRnVuY3Rpb25fTmV3KG1ldGgsIE5VTEwpOworICAgICAgICAgICAgUHlPYmplY3QgKmNmdW5jID0gUHlDRnVuY3Rpb25fTmV3KG1ldGgsIChQeU9iamVjdCopdHlwZSk7CiAgICAgICAgICAgICBpZiAoY2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBkZXNjciA9IFB5U3RhdGljTWV0aG9kX05ldyhjZnVuYyk7CkBAIC0zNjI5LDggKzM4ODksOCBAQAogICAgICAgICAgICB0aGF0IHRoZSBleHRlbnNpb24gdHlwZSdzIG93biBmYWN0b3J5IGZ1bmN0aW9uIGVuc3VyZXMpLgogICAgICAgICAgICBIZWFwIHR5cGVzLCBvZiBjb3Vyc2UsIGFyZSB1bmRlciBvdXIgY29udHJvbCwgc28gdGhleSBkbwogICAgICAgICAgICBpbmhlcml0IHRwX25ldzsgc3RhdGljIGV4dGVuc2lvbiB0eXBlcyB0aGF0IHNwZWNpZnkgc29tZQotICAgICAgICAgICBvdGhlciBidWlsdC1pbiB0eXBlIGFzIHRoZSBkZWZhdWx0IGFyZSBjb25zaWRlcmVkCi0gICAgICAgICAgIG5ldy1zdHlsZS1hd2FyZSBzbyB0aGV5IGFsc28gaW5oZXJpdCBvYmplY3QuX19uZXdfXy4gKi8KKyAgICAgICAgICAgb3RoZXIgYnVpbHQtaW4gdHlwZSBhcyB0aGUgZGVmYXVsdCBhbHNvCisgICAgICAgICAgIGluaGVyaXQgb2JqZWN0Ll9fbmV3X18uICovCiAgICAgICAgIGlmIChiYXNlICE9ICZQeUJhc2VPYmplY3RfVHlwZSB8fAogICAgICAgICAgICAgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKICAgICAgICAgICAgIGlmICh0eXBlLT50cF9uZXcgPT0gTlVMTCkKQEAgLTM2NjksMjMgKzM5MjksMTcgQEAKICAgICAgICAgdHlwZS0+dHBfZmxhZ3MgfD0gUHlfVFBGTEFHU19ESUNUX1NVQkNMQVNTOwogfQogCi1zdGF0aWMgY2hhciAqaGFzaF9uYW1lX29wW10gPSB7Ci0gICAgIl9fZXFfXyIsCi0gICAgIl9faGFzaF9fIiwKLSAgICBOVUxMCi19OwotCiBzdGF0aWMgaW50CiBvdmVycmlkZXNfaGFzaChQeVR5cGVPYmplY3QgKnR5cGUpCiB7Ci0gICAgY2hhciAqKnA7CiAgICAgUHlPYmplY3QgKmRpY3QgPSB0eXBlLT50cF9kaWN0OworICAgIF9QeV9JREVOVElGSUVSKF9fZXFfXyk7CiAKICAgICBhc3NlcnQoZGljdCAhPSBOVUxMKTsKLSAgICBmb3IgKHAgPSBoYXNoX25hbWVfb3A7ICpwOyBwKyspIHsKLSAgICAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGRpY3QsICpwKSAhPSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2VxX18pICE9IE5VTEwpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2hhc2hfXykgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM5NzEsMTYgKzQyMjUsMTYgQEAKICAgICAvKiBpZiB0aGUgdHlwZSBkaWN0aW9uYXJ5IGRvZXNuJ3QgY29udGFpbiBhIF9fZG9jX18sIHNldCBpdCBmcm9tCiAgICAgICAgdGhlIHRwX2RvYyBzbG90LgogICAgICAqLwotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19kb2NfXyIpID09IE5VTEwpIHsKKyAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXykgPT0gTlVMTCkgewogICAgICAgICBpZiAodHlwZS0+dHBfZG9jICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpkb2MgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyh0eXBlLT50cF9kb2MpOwogICAgICAgICAgICAgaWYgKGRvYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19kb2NfXyIsIGRvYyk7CisgICAgICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX2RvY19fLCBkb2MpOwogICAgICAgICAgICAgUHlfREVDUkVGKGRvYyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fZG9jX18iLCBQeV9Ob25lKTsKKyAgICAgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2RvY19fLCBQeV9Ob25lKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzk5MSw4ICs0MjQ1LDggQEAKICAgICAgICBUaGlzIHNpZ25hbHMgdGhhdCBfX2hhc2hfXyBpcyBub3QgaW5oZXJpdGVkLgogICAgICAqLwogICAgIGlmICh0eXBlLT50cF9oYXNoID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2hhc2hfXyIpID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19oYXNoX18iLCBQeV9Ob25lKSA8IDApCisgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX2hhc2hfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19faGFzaF9fLCBQeV9Ob25lKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIHR5cGUtPnRwX2hhc2ggPSBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ7CiAgICAgICAgIH0KQEAgLTQ1ODksNyArNDg0Myw3IEBACiAgICAgICAgb2JqZWN0Ll9fbmV3X18oZGljdCkuICBUbyBkbyB0aGlzLCB3ZSBjaGVjayB0aGF0IHRoZQogICAgICAgIG1vc3QgZGVyaXZlZCBiYXNlIHRoYXQncyBub3QgYSBoZWFwIHR5cGUgaXMgdGhpcyB0eXBlLiAqLwogICAgIHN0YXRpY2Jhc2UgPSBzdWJ0eXBlOwotICAgIHdoaWxlIChzdGF0aWNiYXNlICYmIChzdGF0aWNiYXNlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKQorICAgIHdoaWxlIChzdGF0aWNiYXNlICYmIChzdGF0aWNiYXNlLT50cF9uZXcgPT0gc2xvdF90cF9uZXcpKQogICAgICAgICBzdGF0aWNiYXNlID0gc3RhdGljYmFzZS0+dHBfYmFzZTsKICAgICAvKiBJZiBzdGF0aWNiYXNlIGlzIE5VTEwgbm93LCBpdCBpcyBhIHJlYWxseSB3ZWlyZCB0eXBlLgogICAgICAgIEluIHRoZSBzcGlyaXQgb2YgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKD8pLCBqdXN0IHNodXQgdXAuICovCkBAIC00NjIyLDEyICs0ODc2LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKmZ1bmM7CiAKLSAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbmV3X18iKSAhPSBOVUxMKQorICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX25ld19fKSAhPSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKICAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3KHRwX25ld19tZXRob2RkZWYsIChQeU9iamVjdCAqKXR5cGUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbmV3X18iLCBmdW5jKSkgeworICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX25ld19fLCBmdW5jKSkgewogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC00NjQyLDM0ICs0ODk2LDM0IEBACiBzdGF0aWMgUHlPYmplY3QgKiBcCiBGVU5DTkFNRShQeU9iamVjdCAqc2VsZikgXAogeyBcCi0gICAgc3RhdGljIFB5T2JqZWN0ICpjYWNoZV9zdHI7IFwKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgT1BTVFIsICZjYWNoZV9zdHIsICIoKSIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcoaWQsIE9QU1RSKTsgXAorICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmaWQsICIoKSIpOyBcCiB9CiAKICNkZWZpbmUgU0xPVDEoRlVOQ05BTUUsIE9QU1RSLCBBUkcxVFlQRSwgQVJHQ09ERVMpIFwKIHN0YXRpYyBQeU9iamVjdCAqIFwKIEZVTkNOQU1FKFB5T2JqZWN0ICpzZWxmLCBBUkcxVFlQRSBhcmcxKSBcCiB7IFwKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0cjsgXAotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCBPUFNUUiwgJmNhY2hlX3N0ciwgIigiIEFSR0NPREVTICIpIiwgYXJnMSk7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhpZCwgT1BTVFIpOyBcCisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZpZCwgIigiIEFSR0NPREVTICIpIiwgYXJnMSk7IFwKIH0KIAogLyogQm9vbGVhbiBoZWxwZXIgZm9yIFNMT1QxQklORlVMTCgpLgogICAgcmlnaHQuX19jbGFzc19fIGlzIGEgbm9udHJpdmlhbCBzdWJjbGFzcyBvZiBsZWZ0Ll9fY2xhc3NfXy4gKi8KIHN0YXRpYyBpbnQKLW1ldGhvZF9pc19vdmVybG9hZGVkKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQsIGNoYXIgKm5hbWUpCittZXRob2RfaXNfb3ZlcmxvYWRlZChQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0LCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5hbWUpCiB7CiAgICAgUHlPYmplY3QgKmEsICpiOwogICAgIGludCBvazsKIAotICAgIGIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKShQeV9UWVBFKHJpZ2h0KSksIG5hbWUpOworICAgIGIgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKShQeV9UWVBFKHJpZ2h0KSksIG5hbWUpOwogICAgIGlmIChiID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgLyogSWYgcmlnaHQgZG9lc24ndCBoYXZlIGl0LCBpdCdzIG5vdCBvdmVybG9hZGVkICovCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKShQeV9UWVBFKGxlZnQpKSwgbmFtZSk7CisgICAgYSA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopKFB5X1RZUEUobGVmdCkpLCBuYW1lKTsKICAgICBpZiAoYSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIFB5X0RFQ1JFRihiKTsKQEAgLTQ2OTMsNyArNDk0Nyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKiBcCiBGVU5DTkFNRShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyKSBcCiB7IFwKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0ciwgKnJjYWNoZV9zdHI7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhvcF9pZCwgT1BTVFIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcocm9wX2lkLCBST1BTVFIpOyBcCiAgICAgaW50IGRvX290aGVyID0gUHlfVFlQRShzZWxmKSAhPSBQeV9UWVBFKG90aGVyKSAmJiBcCiAgICAgICAgIFB5X1RZUEUob3RoZXIpLT50cF9hc19udW1iZXIgIT0gTlVMTCAmJiBcCiAgICAgICAgIFB5X1RZUEUob3RoZXIpLT50cF9hc19udW1iZXItPlNMT1ROQU1FID09IFRFU1RGVU5DOyBcCkBAIC00NzAyLDI3ICs0OTU3LDIzIEBACiAgICAgICAgIFB5T2JqZWN0ICpyOyBcCiAgICAgICAgIGlmIChkb19vdGhlciAmJiBcCiAgICAgICAgICAgICBQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob3RoZXIpLCBQeV9UWVBFKHNlbGYpKSAmJiBcCi0gICAgICAgICAgICBtZXRob2RfaXNfb3ZlcmxvYWRlZChzZWxmLCBvdGhlciwgUk9QU1RSKSkgeyBcCi0gICAgICAgICAgICByID0gY2FsbF9tYXliZSggXAotICAgICAgICAgICAgICAgIG90aGVyLCBST1BTVFIsICZyY2FjaGVfc3RyLCAiKE8pIiwgc2VsZik7IFwKKyAgICAgICAgICAgIG1ldGhvZF9pc19vdmVybG9hZGVkKHNlbGYsIG90aGVyLCAmcm9wX2lkKSkgeyBcCisgICAgICAgICAgICByID0gY2FsbF9tYXliZShvdGhlciwgJnJvcF9pZCwgIihPKSIsIHNlbGYpOyBcCiAgICAgICAgICAgICBpZiAociAhPSBQeV9Ob3RJbXBsZW1lbnRlZCkgXAogICAgICAgICAgICAgICAgIHJldHVybiByOyBcCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7IFwKICAgICAgICAgICAgIGRvX290aGVyID0gMDsgXAogICAgICAgICB9IFwKLSAgICAgICAgciA9IGNhbGxfbWF5YmUoIFwKLSAgICAgICAgICAgIHNlbGYsIE9QU1RSLCAmY2FjaGVfc3RyLCAiKE8pIiwgb3RoZXIpOyBcCisgICAgICAgIHIgPSBjYWxsX21heWJlKHNlbGYsICZvcF9pZCwgIihPKSIsIG90aGVyKTsgXAogICAgICAgICBpZiAociAhPSBQeV9Ob3RJbXBsZW1lbnRlZCB8fCBcCiAgICAgICAgICAgICBQeV9UWVBFKG90aGVyKSA9PSBQeV9UWVBFKHNlbGYpKSBcCiAgICAgICAgICAgICByZXR1cm4gcjsgXAogICAgICAgICBQeV9ERUNSRUYocik7IFwKICAgICB9IFwKICAgICBpZiAoZG9fb3RoZXIpIHsgXAotICAgICAgICByZXR1cm4gY2FsbF9tYXliZSggXAotICAgICAgICAgICAgb3RoZXIsIFJPUFNUUiwgJnJjYWNoZV9zdHIsICIoTykiLCBzZWxmKTsgXAorICAgICAgICByZXR1cm4gY2FsbF9tYXliZShvdGhlciwgJnJvcF9pZCwgIihPKSIsIHNlbGYpOyBcCiAgICAgfSBcCi0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsgXAotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsgXAorICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsgXAogfQogCiAjZGVmaW5lIFNMT1QxQklOKEZVTkNOQU1FLCBTTE9UTkFNRSwgT1BTVFIsIFJPUFNUUikgXApAQCAtNDczMiwxNiArNDk4MywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICogXAogRlVOQ05BTUUoUHlPYmplY3QgKnNlbGYsIEFSRzFUWVBFIGFyZzEsIEFSRzJUWVBFIGFyZzIpIFwKIHsgXAotICAgIHN0YXRpYyBQeU9iamVjdCAqY2FjaGVfc3RyOyBcCi0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsIE9QU1RSLCAmY2FjaGVfc3RyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICIoIiBBUkdDT0RFUyAiKSIsIGFyZzEsIGFyZzIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcoaWQsICNPUFNUUik7IFwKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCAiKCIgQVJHQ09ERVMgIikiLCBhcmcxLCBhcmcyKTsgXAogfQogCiBzdGF0aWMgUHlfc3NpemVfdAogc2xvdF9zcV9sZW5ndGgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpsZW5fc3RyOwotICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19sZW5fXyIsICZsZW5fc3RyLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2xlbl9fKTsKKyAgICBQeU9iamVjdCAqcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19sZW5fXywgIigpIik7CiAgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBpZiAocmVzID09IE5VTEwpCkBAIC00NzYyLDE2ICs1MDEyLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF9zcV9pdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGkpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpnZXRpdGVtX3N0cjsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MgPSBOVUxMLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOwogICAgIGRlc2NyZ2V0ZnVuYyBmOwogCi0gICAgaWYgKGdldGl0ZW1fc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0aXRlbV9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRpdGVtX18iKTsKLSAgICAgICAgaWYgKGdldGl0ZW1fc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZnVuYyA9IF9QeVR5cGVfTG9va3VwKFB5X1RZUEUoc2VsZiksIGdldGl0ZW1fc3RyKTsKKyAgICBmdW5jID0gX1B5VHlwZV9Mb29rdXBJZChQeV9UWVBFKHNlbGYpLCAmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICBpZiAoKGYgPSBQeV9UWVBFKGZ1bmMpLT50cF9kZXNjcl9nZXQpID09IE5VTEwpCiAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CkBAIC00Nzk0LDYgKzUwMzgsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqZ2V0aXRlbV9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgZ2V0aXRlbV9zdHIpOwogICAgIH0KICAgICBQeV9YREVDUkVGKGFyZ3MpOwpAQCAtNDgwNiwxNCArNTA1MSwxMyBAQAogc2xvdF9zcV9hc3NfaXRlbShQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxpdGVtX3N0ciwgKnNldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsaXRlbV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiAKICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fZGVsaXRlbV9fIiwgJmRlbGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKG4pIiwgaW5kZXgpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2RlbGl0ZW1fXywgIihuKSIsIGluZGV4KTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX3NldGl0ZW1fXyIsICZzZXRpdGVtX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIihuTykiLCBpbmRleCwgdmFsdWUpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3NldGl0ZW1fXywgIihuTykiLCBpbmRleCwgdmFsdWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtNDgyNSwxMCArNTA2OSw5IEBACiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXMsICphcmdzOwogICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBfUHlfSURFTlRJRklFUihfX2NvbnRhaW5zX18pOwogCi0gICAgc3RhdGljIFB5T2JqZWN0ICpjb250YWluc19zdHI7Ci0KLSAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICJfX2NvbnRhaW5zX18iLCAmY29udGFpbnNfc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fY29udGFpbnNfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKQEAgLTQ4NTksMTQgKzUxMDIsMTQgQEAKIHNsb3RfbXBfYXNzX3N1YnNjcmlwdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxpdGVtX3N0ciwgKnNldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsaXRlbV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiAKICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fZGVsaXRlbV9fIiwgJmRlbGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwga2V5KTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxpdGVtX18sICIoTykiLCBrZXkpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fc2V0aXRlbV9fIiwgJnNldGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICIoT08pIiwga2V5LCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0aXRlbV9fLCAiKE9PKSIsIGtleSwgdmFsdWUpOworCiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC00ODg3LDcgKzUxMzAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfbmJfcG93ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgUHlPYmplY3QgKm1vZHVsdXMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpwb3dfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fcG93X18pOwogCiAgICAgaWYgKG1vZHVsdXMgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHNsb3RfbmJfcG93ZXJfYmluYXJ5KHNlbGYsIG90aGVyKTsKQEAgLTQ4OTYsMTEgKzUxMzksOSBAQAogICAgICAgIHNsb3RfbmJfcG93ZXIsIHNvIGNoZWNrIGJlZm9yZSBjYWxsaW5nIHNlbGYuX19wb3dfXy4gKi8KICAgICBpZiAoUHlfVFlQRShzZWxmKS0+dHBfYXNfbnVtYmVyICE9IE5VTEwgJiYKICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfYXNfbnVtYmVyLT5uYl9wb3dlciA9PSBzbG90X25iX3Bvd2VyKSB7Ci0gICAgICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19wb3dfXyIsICZwb3dfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIihPTykiLCBvdGhlciwgbW9kdWx1cyk7CisgICAgICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3Bvd19fLCAiKE9PKSIsIG90aGVyLCBtb2R1bHVzKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBTTE9UMChzbG90X25iX25lZ2F0aXZlLCAiX19uZWdfXyIpCkBAIC00OTExLDE1ICs1MTUyLDE2IEBACiBzbG90X25iX2Jvb2woUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICphcmdzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqYm9vbF9zdHIsICpsZW5fc3RyOwogICAgIGludCByZXN1bHQgPSAtMTsKICAgICBpbnQgdXNpbmdfbGVuID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihfX2xlbl9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2Jvb2xfXyk7CiAKLSAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICJfX2Jvb2xfXyIsICZib29sX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2Jvb2xfXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAiX19sZW5fXyIsICZsZW5fc3RyKTsKKyAgICAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2xlbl9fKTsKICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBQeUVycl9PY2N1cnJlZCgpID8gLTEgOiAxOwogICAgICAgICB1c2luZ19sZW4gPSAxOwpAQCAtNDk1NCw4ICs1MTk2LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X25iX2luZGV4KFB5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqaW5kZXhfc3RyOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19pbmRleF9fIiwgJmluZGV4X3N0ciwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoX19pbmRleF9fKTsKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19pbmRleF9fLCAiKCkiKTsKIH0KIAogCkBAIC00OTc2LDggKzUyMTgsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfbmJfaW5wbGFjZV9wb3dlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiBhcmcxLCBQeU9iamVjdCAqYXJnMikKIHsKLSAgc3RhdGljIFB5T2JqZWN0ICpjYWNoZV9zdHI7Ci0gIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19pcG93X18iLCAmY2FjaGVfc3RyLCAiKCIgIk8iICIpIiwgYXJnMSk7CisgICAgX1B5X0lERU5USUZJRVIoX19pcG93X18pOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2lwb3dfXywgIigiICJPIiAiKSIsIGFyZzEpOwogfQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX2xzaGlmdCwgIl9faWxzaGlmdF9fIiwgUHlPYmplY3QgKiwgIk8iKQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX3JzaGlmdCwgIl9faXJzaGlmdF9fIiwgUHlPYmplY3QgKiwgIk8iKQpAQCAtNDk5NCw5ICs1MjM2LDkgQEAKIHNsb3RfdHBfcmVwcihQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnJlcHJfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fcmVwcl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX3JlcHJfXyIsICZyZXByX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19yZXByX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKQEAgLTUwMTEsMjMgKzUyNTMsMzAgQEAKIHNsb3RfdHBfc3RyKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqc3RyX3N0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX3N0cl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX3N0cl9fIiwgJnN0cl9zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fc3RyX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXNzOworICAgICAgICAvKiBQeU9iamVjdCAqcmVzczsgKi8KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgcmVzID0gc2xvdF90cF9yZXByKHNlbGYpOwogICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXNzID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKHJlcywgTlVMTCk7CisgICAgICAgIC8qIFhYWCB0aGlzIGlzIG5vbi1zZW5zaWNhbC4gV2h5IHNob3VsZCB3ZSByZXR1cm4KKyAgICAgICAgICAgYSBieXRlcyBvYmplY3QgZnJvbSBfX3N0cl9fLiBJcyB0aGlzIGNvZGUgZXZlbgorICAgICAgICAgICB1c2VkPyAtIG12bCAqLworICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIC8qCisgICAgICAgIHJlc3MgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcocmVzKTsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJldHVybiByZXNzOworICAgICAgICAqLwogICAgIH0KIH0KIApAQCAtNTAzNSwxMCArNTI4NCw5IEBACiBzbG90X3RwX2hhc2goUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpoYXNoX3N0cjsKICAgICBQeV9zc2l6ZV90IGg7CiAKLSAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAiX19oYXNoX18iLCAmaGFzaF9zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19faGFzaF9fKTsKIAogICAgIGlmIChmdW5jID09IFB5X05vbmUpIHsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwpAQCAtNTA4Miw4ICs1MzMwLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2NhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhbGxfc3RyOwotICAgIFB5T2JqZWN0ICptZXRoID0gbG9va3VwX21ldGhvZChzZWxmLCAiX19jYWxsX18iLCAmY2FsbF9zdHIpOworICAgIF9QeV9JREVOVElGSUVSKF9fY2FsbF9fKTsKKyAgICBQeU9iamVjdCAqbWV0aCA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19jYWxsX18pOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKICAgICBpZiAobWV0aCA9PSBOVUxMKQpAQCAtNTEwOSw5ICs1MzU3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2dldGF0dHJvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmdldGF0dHJpYnV0ZV9zdHIgPSBOVUxMOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19nZXRhdHRyaWJ1dGVfXyIsICZnZXRhdHRyaWJ1dGVfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwgbmFtZSk7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fZ2V0YXR0cmlidXRlX18sICIoTykiLCBuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTUxMzcsMjYgKzUzODMsMTQgQEAKIHsKICAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShzZWxmKTsKICAgICBQeU9iamVjdCAqZ2V0YXR0ciwgKmdldGF0dHJpYnV0ZSwgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmdldGF0dHJpYnV0ZV9zdHIgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0YXR0cl9zdHIgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0YXR0cl9fKTsKIAotICAgIGlmIChnZXRhdHRyX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGdldGF0dHJfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fZ2V0YXR0cl9fIik7Ci0gICAgICAgIGlmIChnZXRhdHRyX3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChnZXRhdHRyaWJ1dGVfc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0YXR0cmlidXRlX3N0ciA9Ci0gICAgICAgICAgICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRhdHRyaWJ1dGVfXyIpOwotICAgICAgICBpZiAoZ2V0YXR0cmlidXRlX3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIC8qIHNwZWVkIGhhY2s6IHdlIGNvdWxkIHVzZSBsb29rdXBfbWF5YmUsIGJ1dCB0aGF0IHdvdWxkIHJlc29sdmUgdGhlCiAgICAgICAgbWV0aG9kIGZ1bGx5IGZvciBlYWNoIGF0dHJpYnV0ZSBsb29rdXAgZm9yIGNsYXNzZXMgd2l0aAogICAgICAgIF9fZ2V0YXR0cl9fLCBldmVuIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBwcmVzZW50LiBTbyB3ZSB1c2UKICAgICAgICBfUHlUeXBlX0xvb2t1cCBhbmQgY3JlYXRlIHRoZSBtZXRob2Qgb25seSB3aGVuIG5lZWRlZCwgd2l0aAogICAgICAgIGNhbGxfYXR0cmlidXRlLiAqLwotICAgIGdldGF0dHIgPSBfUHlUeXBlX0xvb2t1cCh0cCwgZ2V0YXR0cl9zdHIpOworICAgIGdldGF0dHIgPSBfUHlUeXBlX0xvb2t1cElkKHRwLCAmUHlJZF9fX2dldGF0dHJfXyk7CiAgICAgaWYgKGdldGF0dHIgPT0gTlVMTCkgewogICAgICAgICAvKiBObyBfX2dldGF0dHJfXyBob29rOiB1c2UgYSBzaW1wbGVyIGRpc3BhdGNoZXIgKi8KICAgICAgICAgdHAtPnRwX2dldGF0dHJvID0gc2xvdF90cF9nZXRhdHRybzsKQEAgLTUxNjgsNyArNTQwMiw3IEBACiAgICAgICAgX19nZXRhdHRyX18sIGV2ZW4gd2hlbiBzZWxmIGhhcyB0aGUgZGVmYXVsdCBfX2dldGF0dHJpYnV0ZV9fCiAgICAgICAgbWV0aG9kLiBTbyB3ZSB1c2UgX1B5VHlwZV9Mb29rdXAgYW5kIGNyZWF0ZSB0aGUgbWV0aG9kIG9ubHkgd2hlbgogICAgICAgIG5lZWRlZCwgd2l0aCBjYWxsX2F0dHJpYnV0ZS4gKi8KLSAgICBnZXRhdHRyaWJ1dGUgPSBfUHlUeXBlX0xvb2t1cCh0cCwgZ2V0YXR0cmlidXRlX3N0cik7CisgICAgZ2V0YXR0cmlidXRlID0gX1B5VHlwZV9Mb29rdXBJZCh0cCwgJlB5SWRfX19nZXRhdHRyaWJ1dGVfXyk7CiAgICAgaWYgKGdldGF0dHJpYnV0ZSA9PSBOVUxMIHx8CiAgICAgICAgIChQeV9UWVBFKGdldGF0dHJpYnV0ZSkgPT0gJlB5V3JhcHBlckRlc2NyX1R5cGUgJiYKICAgICAgICAgICgoUHlXcmFwcGVyRGVzY3JPYmplY3QgKilnZXRhdHRyaWJ1dGUpLT5kX3dyYXBwZWQgPT0KQEAgLTUxOTEsNDAgKzU0MjUsMzcgQEAKIHNsb3RfdHBfc2V0YXR0cm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbGF0dHJfc3RyLCAqc2V0YXR0cl9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19kZWxhdHRyX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0YXR0cl9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxhdHRyX18iLCAmZGVsYXR0cl9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoTykiLCBuYW1lKTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxhdHRyX18sICIoTykiLCBuYW1lKTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX3NldGF0dHJfXyIsICZzZXRhdHRyX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIihPTykiLCBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0YXR0cl9fLCAiKE9PKSIsIG5hbWUsIHZhbHVlKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9ERUNSRUYocmVzKTsKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGNoYXIgKm5hbWVfb3BbXSA9IHsKLSAgICAiX19sdF9fIiwKLSAgICAiX19sZV9fIiwKLSAgICAiX19lcV9fIiwKLSAgICAiX19uZV9fIiwKLSAgICAiX19ndF9fIiwKLSAgICAiX19nZV9fIiwKK3N0YXRpYyBfUHlfSWRlbnRpZmllciBuYW1lX29wW10gPSB7CisgICAgezAsICJfX2x0X18iLCAwfSwKKyAgICB7MCwgIl9fbGVfXyIsIDB9LAorICAgIHswLCAiX19lcV9fIiwgMH0sCisgICAgezAsICJfX25lX18iLCAwfSwKKyAgICB7MCwgIl9fZ3RfXyIsIDB9LAorICAgIHswLCAiX19nZV9fIiwgMH0KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpvcF9zdHJbNl07CiAKLSAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCBuYW1lX29wW29wXSwgJm9wX3N0cltvcF0pOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZuYW1lX29wW29wXSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBvdGhlcik7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKQEAgLTUyNDEsOSArNTQ3Miw5IEBACiBzbG90X3RwX2l0ZXIoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICppdGVyX3N0ciwgKmdldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9faXRlcl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2l0ZXJfXyIsICZpdGVyX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19pdGVyX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmFyZ3M7CiAgICAgICAgIGFyZ3MgPSByZXMgPSBQeVR1cGxlX05ldygwKTsKQEAgLTUyNTUsNyArNTQ4Niw3IEBACiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9fZ2V0aXRlbV9fIiwgJmdldGl0ZW1fc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiLApAQCAtNTI2OSw4ICs1NTAwLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2l0ZXJuZXh0KFB5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqbmV4dF9zdHI7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX25leHRfXyIsICZuZXh0X3N0ciwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoX19uZXh0X18pOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX25leHRfXywgIigpIik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01Mjc4LDE0ICs1NTA5LDkgQEAKIHsKICAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShzZWxmKTsKICAgICBQeU9iamVjdCAqZ2V0OwotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0X3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRfXyk7CiAKLSAgICBpZiAoZ2V0X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGdldF9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRfXyIpOwotICAgICAgICBpZiAoZ2V0X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGdldCA9IF9QeVR5cGVfTG9va3VwKHRwLCBnZXRfc3RyKTsKKyAgICBnZXQgPSBfUHlUeXBlX0xvb2t1cElkKHRwLCAmUHlJZF9fX2dldF9fKTsKICAgICBpZiAoZ2V0ID09IE5VTEwpIHsKICAgICAgICAgLyogQXZvaWQgZnVydGhlciBzbG93ZG93bnMgKi8KICAgICAgICAgaWYgKHRwLT50cF9kZXNjcl9nZXQgPT0gc2xvdF90cF9kZXNjcl9nZXQpCkBAIC01MzA0LDE0ICs1NTMwLDEzIEBACiBzbG90X3RwX2Rlc2NyX3NldChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhcmdldCwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxfc3RyLCAqc2V0X3N0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX2RlbGV0ZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldF9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxldGVfXyIsICZkZWxfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwgdGFyZ2V0KTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxldGVfXywgIihPKSIsIHRhcmdldCk7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19zZXRfXyIsICZzZXRfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE9PKSIsIHRhcmdldCwgdmFsdWUpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3NldF9fLCAiKE9PKSIsIHRhcmdldCwgdmFsdWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtNTMyMSw4ICs1NTQ2LDggQEAKIHN0YXRpYyBpbnQKIHNsb3RfdHBfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqaW5pdF9zdHI7Ci0gICAgUHlPYmplY3QgKm1ldGggPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2luaXRfXyIsICZpbml0X3N0cik7CisgICAgX1B5X0lERU5USUZJRVIoX19pbml0X18pOworICAgIFB5T2JqZWN0ICptZXRoID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2luaXRfXyk7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIGlmIChtZXRoID09IE5VTEwpCkBAIC01MzQ1LDE3ICs1NTcwLDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF90cF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuZXdfc3RyOwogICAgIFB5T2JqZWN0ICpmdW5jOwogICAgIFB5T2JqZWN0ICpuZXdhcmdzLCAqeDsKICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CiAKLSAgICBpZiAobmV3X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIG5ld19zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19uZXdfXyIpOwotICAgICAgICBpZiAobmV3X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyKChQeU9iamVjdCAqKXR5cGUsIG5ld19zdHIpOworICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXR5cGUsICZQeUlkX19fbmV3X18pOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTUzNzksNyArNTU5OSw3IEBACiBzdGF0aWMgdm9pZAogc2xvdF90cF9kZWwoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxfc3RyID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2RlbF9fKTsKICAgICBQeU9iamVjdCAqZGVsLCAqcmVzOwogICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CiAKQEAgLTUzOTEsNyArNTYxMSw3IEBACiAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CiAKICAgICAvKiBFeGVjdXRlIF9fZGVsX18gbWV0aG9kLCBpZiBhbnkuICovCi0gICAgZGVsID0gbG9va3VwX21heWJlKHNlbGYsICJfX2RlbF9fIiwgJmRlbF9zdHIpOworICAgIGRlbCA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2RlbF9fKTsKICAgICBpZiAoZGVsICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZGVsLCBOVUxMKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQpAQCAtNjEwNiw3ICs2MzI2LDcgQEAKICAgICAgICAgLyogV2Ugd2FudCBfX2NsYXNzX18gdG8gcmV0dXJuIHRoZSBjbGFzcyBvZiB0aGUgc3VwZXIgb2JqZWN0CiAgICAgICAgICAgIChpLmUuIHN1cGVyLCBvciBhIHN1YmNsYXNzKSwgbm90IHRoZSBjbGFzcyBvZiBzdS0+b2JqLiAqLwogICAgICAgICBza2lwID0gKFB5VW5pY29kZV9DaGVjayhuYW1lKSAmJgotICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG5hbWUpID09IDkgJiYKKyAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDkgJiYKICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJfX2NsYXNzX18iKSA9PSAwKTsKICAgICB9CiAKQEAgLTYxMzEsNiArNjM1MSw5IEBACiAgICAgICAgIH0KICAgICAgICAgaSsrOwogICAgICAgICByZXMgPSBOVUxMOworICAgICAgICAvKiBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBtcm8gYmVjYXVzZSBzdGFydHR5cGUtPnRwX21ybyBjYW4gYmUKKyAgICAgICAgICAgcmVwbGFjZWQgZHVyaW5nIFB5RGljdF9HZXRJdGVtKGRpY3QsIG5hbWUpICAqLworICAgICAgICBQeV9JTkNSRUYobXJvKTsKICAgICAgICAgZm9yICg7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0obXJvLCBpKTsKICAgICAgICAgICAgIGlmIChQeVR5cGVfQ2hlY2sodG1wKSkKQEAgLTYxNTUsOSArNjM3OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgICAgICAgICAgICAgcmVzID0gdG1wOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobXJvKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihtcm8pOwogICAgIH0KICAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoc2VsZiwgbmFtZSk7CiB9CkBAIC02MTY3LDcgKzYzOTIsNyBAQAogewogICAgIC8qIENoZWNrIHRoYXQgYSBzdXBlcigpIGNhbGwgbWFrZXMgc2Vuc2UuICBSZXR1cm4gYSB0eXBlIG9iamVjdC4KIAotICAgICAgIG9iaiBjYW4gYmUgYSBuZXctc3R5bGUgY2xhc3MsIG9yIGFuIGluc3RhbmNlIG9mIG9uZToKKyAgICAgICBvYmogY2FuIGJlIGEgY2xhc3MsIG9yIGFuIGluc3RhbmNlIG9mIG9uZToKIAogICAgICAgIC0gSWYgaXQgaXMgYSBjbGFzcywgaXQgbXVzdCBiZSBhIHN1YmNsYXNzIG9mICd0eXBlJy4gICAgICBUaGlzIGNhc2UgaXMKICAgICAgICAgIHVzZWQgZm9yIGNsYXNzIG1ldGhvZHM7IHRoZSByZXR1cm4gdmFsdWUgaXMgb2JqLgpAQCAtNjE5MywxNyArNjQxOCw5IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBUcnkgdGhlIHNsb3cgd2F5ICovCi0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqY2xhc3Nfc3RyID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKmNsYXNzX2F0dHI7CiAKLSAgICAgICAgaWYgKGNsYXNzX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjbGFzc19zdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiX19jbGFzc19fIik7Ci0gICAgICAgICAgICBpZiAoY2xhc3Nfc3RyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQotICAgICAgICBjbGFzc19hdHRyID0gUHlPYmplY3RfR2V0QXR0cihvYmosIGNsYXNzX3N0cik7Ci0KKyAgICAgICAgY2xhc3NfYXR0ciA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICBpZiAoY2xhc3NfYXR0ciAhPSBOVUxMICYmCiAgICAgICAgICAgICBQeVR5cGVfQ2hlY2soY2xhc3NfYXR0cikgJiYKICAgICAgICAgICAgIChQeVR5cGVPYmplY3QgKiljbGFzc19hdHRyICE9IFB5X1RZUEUob2JqKSkKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZXNsb3RzLmluYyBiL09iamVjdHMvdHlwZXNsb3RzLmluYwppbmRleCA1MTg2ZGNmLi5jYWExZTAzIDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVzbG90cy5pbmMKKysrIGIvT2JqZWN0cy90eXBlc2xvdHMuaW5jCkBAIC0xLDQgKzEsNCBAQAotLyogR2VuZXJhdGVkIGJ5IHR5cGVzbG90cy5weSAkUmV2aXNpb24kICovCisvKiBHZW5lcmF0ZWQgYnkgdHlwZXNsb3RzLnB5ICovCiAwLAogMCwKIG9mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGFzX21hcHBpbmcubXBfYXNzX3N1YnNjcmlwdCksCmRpZmYgLS1naXQgYS9PYmplY3RzL3R5cGVzbG90cy5weSBiL09iamVjdHMvdHlwZXNsb3RzLnB5CmluZGV4IDJlMDBjODAuLmIyNGM3ZjQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHlwZXNsb3RzLnB5CisrKyBiL09iamVjdHMvdHlwZXNsb3RzLnB5CkBAIC0zLDcgKzMsNyBAQAogCiBpbXBvcnQgc3lzLCByZQogCi1wcmludCgiLyogR2VuZXJhdGVkIGJ5IHR5cGVzbG90cy5weSAkUmV2aXNpb24kICovIikKK3ByaW50KCIvKiBHZW5lcmF0ZWQgYnkgdHlwZXNsb3RzLnB5ICovIikKIHJlcyA9IHt9CiBmb3IgbGluZSBpbiBzeXMuc3RkaW46CiAgICAgbSA9IHJlLm1hdGNoKCIjZGVmaW5lIFB5XyhbYS16X10rKSAoWzAtOV0rKSIsIGxpbmUpCmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGVjdHlwZS5jIGIvT2JqZWN0cy91bmljb2RlY3R5cGUuYwppbmRleCA5ZjZhYzg5Li5hNTcyYzEyIDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGVjdHlwZS5jCisrKyBiL09iamVjdHMvdW5pY29kZWN0eXBlLmMKQEAgLTIxLDEzICsyMSwyMCBAQAogI2RlZmluZSBYSURfU1RBUlRfTUFTSyAweDEwMAogI2RlZmluZSBYSURfQ09OVElOVUVfTUFTSyAweDIwMAogI2RlZmluZSBQUklOVEFCTEVfTUFTSyAweDQwMAotI2RlZmluZSBOT0RFTFRBX01BU0sgMHg4MDAKLSNkZWZpbmUgTlVNRVJJQ19NQVNLIDB4MTAwMAorI2RlZmluZSBOVU1FUklDX01BU0sgMHg4MDAKKyNkZWZpbmUgQ0FTRV9JR05PUkFCTEVfTUFTSyAweDEwMDAKKyNkZWZpbmUgQ0FTRURfTUFTSyAweDIwMDAKKyNkZWZpbmUgRVhURU5ERURfQ0FTRV9NQVNLIDB4NDAwMAogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgY29uc3QgUHlfVUNTNCB1cHBlcjsKLSAgICBjb25zdCBQeV9VQ1M0IGxvd2VyOwotICAgIGNvbnN0IFB5X1VDUzQgdGl0bGU7CisgICAgLyogCisgICAgICAgVGhlc2UgYXJlIGVpdGhlciBkZWx0YXMgdG8gdGhlIGNoYXJhY3RlciBvciBvZmZzZXRzIGluCisgICAgICAgX1B5VW5pY29kZV9FeHRlbmRlZENhc2UuCisgICAgKi8KKyAgICBjb25zdCBpbnQgdXBwZXI7CisgICAgY29uc3QgaW50IGxvd2VyOworICAgIGNvbnN0IGludCB0aXRsZTsKKyAgICAvKiBOb3RlIGlmIG1vcmUgZmxhZyBzcGFjZSBpcyBuZWVkZWQsIGRlY2ltYWwgYW5kIGRpZ2l0IGNvdWxkIGJlIHVuaWZpZWQuICovCiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBkZWNpbWFsOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGlnaXQ7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgZmxhZ3M7CkBAIC01NywxNSArNjQsMTAgQEAKIFB5X1VDUzQgX1B5VW5pY29kZV9Ub1RpdGxlY2FzZShyZWdpc3RlciBQeV9VQ1M0IGNoKQogewogICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKLSAgICBpbnQgZGVsdGEgPSBjdHlwZS0+dGl0bGU7CiAKLSAgICBpZiAoY3R5cGUtPmZsYWdzICYgTk9ERUxUQV9NQVNLKQotICAgICAgICByZXR1cm4gZGVsdGE7Ci0KLSAgICBpZiAoZGVsdGEgPj0gMzI3NjgpCi0gICAgICAgICAgICBkZWx0YSAtPSA2NTUzNjsKLQotICAgIHJldHVybiBjaCArIGRlbHRhOworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtjdHlwZS0+dGl0bGUgJiAweEZGRkZdOworICAgIHJldHVybiBjaCArIGN0eXBlLT50aXRsZTsKIH0KIAogLyogUmV0dXJucyAxIGZvciBVbmljb2RlIGNoYXJhY3RlcnMgaGF2aW5nIHRoZSBjYXRlZ29yeSAnTHQnLCAwCkBAIC0xODgsMTIgKzE5MCwxMCBAQAogUHlfVUNTNCBfUHlVbmljb2RlX1RvVXBwZXJjYXNlKFB5X1VDUzQgY2gpCiB7CiAgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOwotICAgIGludCBkZWx0YSA9IGN0eXBlLT51cHBlcjsKLSAgICBpZiAoY3R5cGUtPmZsYWdzICYgTk9ERUxUQV9NQVNLKQotICAgICAgICByZXR1cm4gZGVsdGE7Ci0gICAgaWYgKGRlbHRhID49IDMyNzY4KQotICAgICAgICAgICAgZGVsdGEgLT0gNjU1MzY7Ci0gICAgcmV0dXJuIGNoICsgZGVsdGE7CisKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLKQorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbY3R5cGUtPnVwcGVyICYgMHhGRkZGXTsKKyAgICByZXR1cm4gY2ggKyBjdHlwZS0+dXBwZXI7CiB9CiAKIC8qIFJldHVybnMgdGhlIGxvd2VyY2FzZSBVbmljb2RlIGNoYXJhY3RlcnMgY29ycmVzcG9uZGluZyB0byBjaCBvciBqdXN0CkBAIC0yMDIsMTIgKzIwMiw4NyBAQAogUHlfVUNTNCBfUHlVbmljb2RlX1RvTG93ZXJjYXNlKFB5X1VDUzQgY2gpCiB7CiAgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOwotICAgIGludCBkZWx0YSA9IGN0eXBlLT5sb3dlcjsKLSAgICBpZiAoY3R5cGUtPmZsYWdzICYgTk9ERUxUQV9NQVNLKQotICAgICAgICByZXR1cm4gZGVsdGE7Ci0gICAgaWYgKGRlbHRhID49IDMyNzY4KQotICAgICAgICAgICAgZGVsdGEgLT0gNjU1MzY7Ci0gICAgcmV0dXJuIGNoICsgZGVsdGE7CisKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLKQorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbY3R5cGUtPmxvd2VyICYgMHhGRkZGXTsKKyAgICByZXR1cm4gY2ggKyBjdHlwZS0+bG93ZXI7Cit9CisKK2ludCBfUHlVbmljb2RlX1RvTG93ZXJGdWxsKFB5X1VDUzQgY2gsIFB5X1VDUzQgKnJlcykKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLKSB7CisgICAgICAgIGludCBpbmRleCA9IGN0eXBlLT5sb3dlciAmIDB4RkZGRjsKKyAgICAgICAgaW50IG4gPSBjdHlwZS0+bG93ZXIgPj4gMjQ7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgcmVzW2ldID0gX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbaW5kZXggKyBpXTsKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorICAgIHJlc1swXSA9IGNoICsgY3R5cGUtPmxvd2VyOworICAgIHJldHVybiAxOworfQorCitpbnQgX1B5VW5pY29kZV9Ub1RpdGxlRnVsbChQeV9VQ1M0IGNoLCBQeV9VQ1M0ICpyZXMpCit7CisgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOworCisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykgeworICAgICAgICBpbnQgaW5kZXggPSBjdHlwZS0+dGl0bGUgJiAweEZGRkY7CisgICAgICAgIGludCBuID0gY3R5cGUtPnRpdGxlID4+IDI0OworICAgICAgICBpbnQgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHJlc1tpXSA9IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2luZGV4ICsgaV07CisgICAgICAgIHJldHVybiBuOworICAgIH0KKyAgICByZXNbMF0gPSBjaCArIGN0eXBlLT50aXRsZTsKKyAgICByZXR1cm4gMTsKK30KKworaW50IF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoUHlfVUNTNCBjaCwgUHlfVUNTNCAqcmVzKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spIHsKKyAgICAgICAgaW50IGluZGV4ID0gY3R5cGUtPnVwcGVyICYgMHhGRkZGOworICAgICAgICBpbnQgbiA9IGN0eXBlLT51cHBlciA+PiAyNDsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICByZXNbaV0gPSBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtpbmRleCArIGldOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmVzWzBdID0gY2ggKyBjdHlwZS0+dXBwZXI7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludCBfUHlVbmljb2RlX1RvRm9sZGVkRnVsbChQeV9VQ1M0IGNoLCBQeV9VQ1M0ICpyZXMpCit7CisgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOworCisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSyAmJiAoY3R5cGUtPmxvd2VyID4+IDIwKSAmIDcpIHsKKyAgICAgICAgaW50IGluZGV4ID0gKGN0eXBlLT5sb3dlciAmIDB4RkZGRikgKyAoY3R5cGUtPmxvd2VyID4+IDI0KTsKKyAgICAgICAgaW50IG4gPSAoY3R5cGUtPmxvd2VyID4+IDIwKSAmIDc7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgcmVzW2ldID0gX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbaW5kZXggKyBpXTsKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlX1RvTG93ZXJGdWxsKGNoLCByZXMpOworfQorCitpbnQgX1B5VW5pY29kZV9Jc0Nhc2VkKFB5X1VDUzQgY2gpCit7CisgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOworCisgICAgcmV0dXJuIChjdHlwZS0+ZmxhZ3MgJiBDQVNFRF9NQVNLKSAhPSAwOworfQorCitpbnQgX1B5VW5pY29kZV9Jc0Nhc2VJZ25vcmFibGUoUHlfVUNTNCBjaCkKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICByZXR1cm4gKGN0eXBlLT5mbGFncyAmIENBU0VfSUdOT1JBQkxFX01BU0spICE9IDA7CiB9CiAKIC8qIFJldHVybnMgMSBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzIGhhdmluZyB0aGUgY2F0ZWdvcnkgJ0xsJywgJ0x1JywgJ0x0JywKZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKaW5kZXggYjI1YjE3Yi4uNzczYTliZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKQEAgLTEsOCArMSw3IEBACiAvKgogCiBVbmljb2RlIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIG9yaWdpbmFsIGNvZGUgYnkgRnJlZHJpayBMdW5kaCwKLW1vZGlmaWVkIGJ5IE1hcmMtQW5kcmUgTGVtYnVyZyA8bWFsQGxlbWJ1cmcuY29tPiBhY2NvcmRpbmcgdG8gdGhlCi1Vbmljb2RlIEludGVncmF0aW9uIFByb3Bvc2FsIChzZWUgZmlsZSBNaXNjL3VuaWNvZGUudHh0KS4KK21vZGlmaWVkIGJ5IE1hcmMtQW5kcmUgTGVtYnVyZyA8bWFsQGxlbWJ1cmcuY29tPi4KIAogTWFqb3Igc3BlZWQgdXBncmFkZXMgdG8gdGhlIG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMgYXQgdGhlIFJleWtqYXZpawogTmVlZEZvclNwZWVkIHNwcmludCwgYnkgRnJlZHJpayBMdW5kaCBhbmQgQW5kcmV3IERhbGtlLgpAQCAtNDIsMzQgKzQxLDEyIEBACiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJ1Y25oYXNoLmgiCisjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgogCiAjaWZkZWYgTVNfV0lORE9XUwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCi0vKiBMaW1pdCBmb3IgdGhlIFVuaWNvZGUgb2JqZWN0IGZyZWUgbGlzdCAqLwotCi0jZGVmaW5lIFB5VW5pY29kZV9NQVhGUkVFTElTVCAgICAgICAxMDI0Ci0KLS8qIExpbWl0IGZvciB0aGUgVW5pY29kZSBvYmplY3QgZnJlZSBsaXN0IHN0YXkgYWxpdmUgb3B0aW1pemF0aW9uLgotCi0gICBUaGUgaW1wbGVtZW50YXRpb24gd2lsbCBrZWVwIGFsbG9jYXRlZCBVbmljb2RlIG1lbW9yeSBpbnRhY3QgZm9yCi0gICBhbGwgb2JqZWN0cyBvbiB0aGUgZnJlZSBsaXN0IGhhdmluZyBhIHNpemUgbGVzcyB0aGFuIHRoaXMKLSAgIGxpbWl0LiBUaGlzIHJlZHVjZXMgbWFsbG9jKCkgb3ZlcmhlYWQgZm9yIHNtYWxsIFVuaWNvZGUgb2JqZWN0cy4KLQotICAgQXQgd29yc3QgdGhpcyB3aWxsIHJlc3VsdCBpbiBQeVVuaWNvZGVfTUFYRlJFRUxJU1QgKgotICAgKHNpemVvZihQeVVuaWNvZGVPYmplY3QpICsgS0VFUEFMSVZFX1NJWkVfTElNSVQgKwotICAgbWFsbG9jKCktb3ZlcmhlYWQpIGJ5dGVzIG9mIHVudXNlZCBnYXJiYWdlLgotCi0gICBTZXR0aW5nIHRoZSBsaW1pdCB0byAwIGVmZmVjdGl2ZWx5IHR1cm5zIHRoZSBmZWF0dXJlIG9mZi4KLQotICAgTm90ZTogVGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSAhIElmIHlvdSBnZXQgY29yZSBkdW1wcyB3aGVuCi0gICB1c2luZyBVbmljb2RlIG9iamVjdHMsIHR1cm4gdGhpcyBmZWF0dXJlIG9mZi4KLQotKi8KLQotI2RlZmluZSBLRUVQQUxJVkVfU0laRV9MSU1JVCAgICAgICA5Ci0KIC8qIEVuZGlhbm5lc3Mgc3dpdGNoZXM7IGRlZmF1bHRzIHRvIGxpdHRsZSBlbmRpYW4gKi8KIAogI2lmZGVmIFdPUkRTX0JJR0VORElBTgpAQCAtOTAsNiArNjcsMTEwIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisvKiBNYXhpbXVtIGNvZGUgcG9pbnQgb2YgVW5pY29kZSA2LjA6IDB4MTBmZmZmICgxLDExNCwxMTEpICovCisjZGVmaW5lIE1BWF9VTklDT0RFIDB4MTBmZmZmCisKKyNpZmRlZiBQeV9ERUJVRworIyAgZGVmaW5lIF9QeVVuaWNvZGVfQ0hFQ0sob3ApIF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShvcCwgMCkKKyNlbHNlCisjICBkZWZpbmUgX1B5VW5pY29kZV9DSEVDSyhvcCkgUHlVbmljb2RlX0NoZWNrKG9wKQorI2VuZGlmCisKKyNkZWZpbmUgX1B5VW5pY29kZV9VVEY4KG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKShvcCkpLT51dGY4KQorI2RlZmluZSBQeVVuaWNvZGVfVVRGOChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShvcCkpLCAgICAgICAgICAgICAgICAgICAgXAorICAgICBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvcCkgPyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAoKGNoYXIqKSgoUHlBU0NJSU9iamVjdCopKG9wKSArIDEpKSA6ICAgICAgICAgIFwKKyAgICAgICAgIF9QeVVuaWNvZGVfVVRGOChvcCkpCisjZGVmaW5lIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgob3ApICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kikob3ApKS0+dXRmOF9sZW5ndGgpCisjZGVmaW5lIFB5VW5pY29kZV9VVEY4X0xFTkdUSChvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgICAgICAgICBcCisgICAgIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSA/ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICgoUHlBU0NJSU9iamVjdCopKG9wKSktPmxlbmd0aCA6ICAgICAgICAgICAgICAgXAorICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSChvcCkpCisjZGVmaW5lIF9QeVVuaWNvZGVfV1NUUihvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0Kikob3ApKS0+d3N0cikKKyNkZWZpbmUgX1B5VW5pY29kZV9XU1RSX0xFTkdUSChvcCkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKShvcCkpLT53c3RyX2xlbmd0aCkKKyNkZWZpbmUgX1B5VW5pY29kZV9MRU5HVEgob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+bGVuZ3RoKQorI2RlZmluZSBfUHlVbmljb2RlX1NUQVRFKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5zdGF0ZSkKKyNkZWZpbmUgX1B5VW5pY29kZV9IQVNIKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+aGFzaCkKKyNkZWZpbmUgX1B5VW5pY29kZV9LSU5EKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5zdGF0ZS5raW5kKQorI2RlZmluZSBfUHlVbmljb2RlX0dFVF9MRU5HVEgob3ApICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPmxlbmd0aCkKKyNkZWZpbmUgX1B5VW5pY29kZV9EQVRBX0FOWShvcCkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5VW5pY29kZU9iamVjdCopKG9wKSktPmRhdGEuYW55KQorCisvKiBPcHRpbWl6ZWQgdmVyc2lvbiBvZiBQeV9NQVgoKSB0byBjb21wdXRlIHRoZSBtYXhpbXVtIGNoYXJhY3RlcjoKKyAgIHVzZSBpdCB3aGVuIHlvdXIgYXJlIGNvbXB1dGluZyB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIFB5VW5pY29kZV9OZXcoKSAqLworI2RlZmluZSBNQVhfTUFYQ0hBUihtYXhjaGFyMSwgbWF4Y2hhcjIpICAgICAgICAgICAgICAgICBcCisgICAgKChtYXhjaGFyMSkgfCAobWF4Y2hhcjIpKQorCisjdW5kZWYgUHlVbmljb2RlX1JFQURZCisjZGVmaW5lIFB5VW5pY29kZV9SRUFEWShvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoUHlVbmljb2RlX0lTX1JFQURZKG9wKSA/ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAwIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIF9QeVVuaWNvZGVfUmVhZHkob3ApKSkKKworI2RlZmluZSBfUHlVbmljb2RlX1NIQVJFX1VURjgob3ApICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgYXNzZXJ0KCFQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvcCkpLCAgICAgICAgICAgXAorICAgICAoX1B5VW5pY29kZV9VVEY4KG9wKSA9PSBQeVVuaWNvZGVfREFUQShvcCkpKQorI2RlZmluZSBfUHlVbmljb2RlX1NIQVJFX1dTVFIob3ApICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9PSBQeVVuaWNvZGVfREFUQShvcCkpKQorCisvKiB0cnVlIGlmIHRoZSBVbmljb2RlIG9iamVjdCBoYXMgYW4gYWxsb2NhdGVkIFVURi04IG1lbW9yeSBibG9jaworICAgKG5vdCBzaGFyZWQgd2l0aCBvdGhlciBkYXRhKSAqLworI2RlZmluZSBfUHlVbmljb2RlX0hBU19VVEY4X01FTU9SWShvcCkgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKCFQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvcCkgICAgICAgICAgICAgICAgICAgXAorICAgICAgJiYgX1B5VW5pY29kZV9VVEY4KG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAmJiBfUHlVbmljb2RlX1VURjgob3ApICE9IFB5VW5pY29kZV9EQVRBKG9wKSkpCisKKy8qIHRydWUgaWYgdGhlIFVuaWNvZGUgb2JqZWN0IGhhcyBhbiBhbGxvY2F0ZWQgd3N0ciBtZW1vcnkgYmxvY2sKKyAgIChub3Qgc2hhcmVkIHdpdGggb3RoZXIgZGF0YSkgKi8KKyNkZWZpbmUgX1B5VW5pY29kZV9IQVNfV1NUUl9NRU1PUlkob3ApICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChfUHlVbmljb2RlX1dTVFIob3ApICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICghUHlVbmljb2RlX0lTX1JFQURZKG9wKSB8fCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIF9QeVVuaWNvZGVfV1NUUihvcCkgIT0gUHlVbmljb2RlX0RBVEEob3ApKSkpCisKKy8qIEdlbmVyaWMgaGVscGVyIG1hY3JvIHRvIGNvbnZlcnQgY2hhcmFjdGVycyBvZiBkaWZmZXJlbnQgdHlwZXMuCisgICBmcm9tX3R5cGUgYW5kIHRvX3R5cGUgaGF2ZSB0byBiZSB2YWxpZCB0eXBlIG5hbWVzLCBiZWdpbiBhbmQgZW5kCisgICBhcmUgcG9pbnRlcnMgdG8gdGhlIHNvdXJjZSBjaGFyYWN0ZXJzIHdoaWNoIHNob3VsZCBiZSBvZiB0eXBlCisgICAiZnJvbV90eXBlICoiLiAgdG8gaXMgYSBwb2ludGVyIG9mIHR5cGUgInRvX3R5cGUgKiIgYW5kIHBvaW50cyB0byB0aGUKKyAgIGJ1ZmZlciB3aGVyZSB0aGUgcmVzdWx0IGNoYXJhY3RlcnMgYXJlIHdyaXR0ZW4gdG8uICovCisjZGVmaW5lIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhmcm9tX3R5cGUsIHRvX3R5cGUsIGJlZ2luLCBlbmQsIHRvKSBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdG9fdHlwZSAqX3RvID0gKHRvX3R5cGUgKikgdG87ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBmcm9tX3R5cGUgKl9pdGVyID0gKGJlZ2luKTsgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGZyb21fdHlwZSAqX2VuZCA9IChlbmQpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfc3NpemVfdCBuID0gKF9lbmQpIC0gKF9pdGVyKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBmcm9tX3R5cGUgKl91bnJvbGxlZF9lbmQgPSAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfaXRlciArIChuICYgfiAoUHlfc3NpemVfdCkgMyk7ICAgICAgICAgICAgIFwKKyAgICAgICAgd2hpbGUgKF9pdGVyIDwgKF91bnJvbGxlZF9lbmQpKSB7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX3RvWzBdID0gKHRvX3R5cGUpIF9pdGVyWzBdOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfdG9bMV0gPSAodG9fdHlwZSkgX2l0ZXJbMV07ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF90b1syXSA9ICh0b190eXBlKSBfaXRlclsyXTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX3RvWzNdID0gKHRvX3R5cGUpIF9pdGVyWzNdOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfaXRlciArPSA0OyBfdG8gKz0gNDsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB3aGlsZSAoX2l0ZXIgPCAoX2VuZCkpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAqX3RvKysgPSAodG9fdHlwZSkgKl9pdGVyKys7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCiAvKiBUaGlzIGRpY3Rpb25hcnkgaG9sZHMgYWxsIGludGVybmVkIHVuaWNvZGUgc3RyaW5ncy4gIE5vdGUgdGhhdCByZWZlcmVuY2VzCiAgICB0byBzdHJpbmdzIGluIHRoaXMgZGljdGlvbmFyeSBhcmUgKm5vdCogY291bnRlZCBpbiB0aGUgc3RyaW5nJ3Mgb2JfcmVmY250LgogICAgV2hlbiB0aGUgaW50ZXJuZWQgc3RyaW5nIHJlYWNoZXMgYSByZWZjbnQgb2YgMCB0aGUgc3RyaW5nIGRlYWxsb2NhdGlvbgpAQCAtMTAwLDE2ICsxODEsMTUgQEAKICovCiBzdGF0aWMgUHlPYmplY3QgKmludGVybmVkOwogCi0vKiBGcmVlIGxpc3QgZm9yIFVuaWNvZGUgb2JqZWN0cyAqLwotc3RhdGljIFB5VW5pY29kZU9iamVjdCAqZnJlZV9saXN0Owotc3RhdGljIGludCBudW1mcmVlOwotCiAvKiBUaGUgZW1wdHkgVW5pY29kZSBvYmplY3QgaXMgc2hhcmVkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuICovCi1zdGF0aWMgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlX2VtcHR5Oworc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX2VtcHR5OworCisvKiBMaXN0IG9mIHN0YXRpYyBzdHJpbmdzLiAqLworc3RhdGljIF9QeV9JZGVudGlmaWVyICpzdGF0aWNfc3RyaW5nczsKIAogLyogU2luZ2xlIGNoYXJhY3RlciBVbmljb2RlIHN0cmluZ3MgaW4gdGhlIExhdGluLTEgcmFuZ2UgYXJlIGJlaW5nCiAgICBzaGFyZWQgYXMgd2VsbC4gKi8KLXN0YXRpYyBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGVfbGF0aW4xWzI1Nl07CitzdGF0aWMgUHlPYmplY3QgKnVuaWNvZGVfbGF0aW4xWzI1Nl07CiAKIC8qIEZhc3QgZGV0ZWN0aW9uIG9mIHRoZSBtb3N0IGZyZXF1ZW50IHdoaXRlc3BhY2UgY2hhcmFjdGVycyAqLwogY29uc3QgdW5zaWduZWQgY2hhciBfUHlfYXNjaWlfd2hpdGVzcGFjZVtdID0gewpAQCAtMTQyLDE2ICsyMjIsMzEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKnVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywKKy8qIGZvcndhcmQgKi8KK3N0YXRpYyBQeVVuaWNvZGVPYmplY3QgKl9QeVVuaWNvZGVfTmV3KFB5X3NzaXplX3QgbGVuZ3RoKTsKK3N0YXRpYyBQeU9iamVjdCogZ2V0X2xhdGluMV9jaGFyKHVuc2lnbmVkIGNoYXIgY2gpOworc3RhdGljIGludCB1bmljb2RlX21vZGlmaWFibGUoUHlPYmplY3QgKnVuaWNvZGUpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlVbmljb2RlX0Zyb21VQ1MxKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSk7CitzdGF0aWMgUHlPYmplY3QgKgorX1B5VW5pY29kZV9Gcm9tVUNTMihjb25zdCBQeV9VQ1MyICpzLCBQeV9zc2l6ZV90IHNpemUpOworc3RhdGljIFB5T2JqZWN0ICoKK19QeVVuaWNvZGVfRnJvbVVDUzQoY29uc3QgUHlfVUNTNCAqcywgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywKICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlcixjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqcmVhc29uLAotICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAogICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLCBQeV9zc2l6ZV90ICpuZXdwb3MpOwogCi1zdGF0aWMgdm9pZCByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsKK3N0YXRpYyB2b2lkCityYWlzZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pOwogCiAvKiBTYW1lIGZvciBsaW5lYnJlYWtzICovCiBzdGF0aWMgdW5zaWduZWQgY2hhciBhc2NpaV9saW5lYnJlYWtbXSA9IHsKQEAgLTE4MSw3ICsyNzYsOCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKIH07CiAKLQorLyogVGhlIG1heCB1bmljb2RlIHZhbHVlIGlzIGFsd2F5cyAweDEwRkZGRiB3aGlsZSB1c2luZyB0aGUgUEVQLTM5MyBBUEkuCisgICBUaGlzIGZ1bmN0aW9uIGlzIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkIEFQSS4gKi8KIFB5X1VOSUNPREUKIFB5VW5pY29kZV9HZXRNYXgodm9pZCkKIHsKQEAgLTE5NCw2ICsyOTAsMjI0IEBACiAjZW5kaWYKIH0KIAorI2lmZGVmIFB5X0RFQlVHCitpbnQKK19QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShQeU9iamVjdCAqb3AsIGludCBjaGVja19jb250ZW50KQoreworICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpOworICAgIHVuc2lnbmVkIGludCBraW5kOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpOworCisgICAgYXNjaWkgPSAoUHlBU0NJSU9iamVjdCAqKW9wOworICAgIGtpbmQgPSBhc2NpaS0+c3RhdGUua2luZDsKKworICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkgPT0gMSAmJiBhc2NpaS0+c3RhdGUuY29tcGFjdCA9PSAxKSB7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5yZWFkeSA9PSAxKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKmNvbXBhY3QgPSAoUHlDb21wYWN0VW5pY29kZU9iamVjdCAqKW9wOworICAgICAgICB2b2lkICpkYXRhOworCisgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCA9PSAxKSB7CisgICAgICAgICAgICBkYXRhID0gY29tcGFjdCArIDE7CisgICAgICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgIHx8IGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAgICB8fCBraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUuYXNjaWkgPT0gMCk7CisgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLnJlYWR5ID09IDEpOworICAgICAgICAgICAgYXNzZXJ0IChjb21wYWN0LT51dGY4ICE9IGRhdGEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlID0gKFB5VW5pY29kZU9iamVjdCAqKW9wOworCisgICAgICAgICAgICBkYXRhID0gdW5pY29kZS0+ZGF0YS5hbnk7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+bGVuZ3RoID09IDApOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+aGFzaCA9PSAtMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5jb21wYWN0ID09IDApOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUuYXNjaWkgPT0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5yZWFkeSA9PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLmludGVybmVkID09IFNTVEFURV9OT1RfSU5URVJORUQpOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+d3N0ciAhPSBOVUxMKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoZGF0YSA9PSBOVUxMKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoY29tcGFjdC0+dXRmOCA9PSBOVUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgICAgIHx8IGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAgICAgICAgfHwga2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5jb21wYWN0ID09IDApOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUucmVhZHkgPT0gMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGRhdGEgIT0gTlVMTCk7CisgICAgICAgICAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKGNvbXBhY3QtPnV0ZjggPT0gZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoY29tcGFjdC0+dXRmOF9sZW5ndGggPT0gYXNjaWktPmxlbmd0aCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChjb21wYWN0LT51dGY4ICE9IGRhdGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgICAgICBpZiAoCisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICAgICAgICAgIGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQKKyNlbHNlCisgICAgICAgICAgICAgICAga2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORAorI2VuZGlmCisgICAgICAgICAgICAgICApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT53c3RyID09IGRhdGEpOworICAgICAgICAgICAgICAgIGFzc2VydChjb21wYWN0LT53c3RyX2xlbmd0aCA9PSBhc2NpaS0+bGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+d3N0ciAhPSBkYXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb21wYWN0LT51dGY4ID09IE5VTEwpCisgICAgICAgICAgICBhc3NlcnQoY29tcGFjdC0+dXRmOF9sZW5ndGggPT0gMCk7CisgICAgICAgIGlmIChhc2NpaS0+d3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgYXNzZXJ0KGNvbXBhY3QtPndzdHJfbGVuZ3RoID09IDApOworICAgIH0KKyAgICAvKiBjaGVjayB0aGF0IHRoZSBiZXN0IGtpbmQgaXMgdXNlZCAqLworICAgIGlmIChjaGVja19jb250ZW50ICYmIGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCisgICAgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIFB5X1VDUzQgbWF4Y2hhciA9IDA7CisgICAgICAgIHZvaWQgKmRhdGE7CisgICAgICAgIFB5X1VDUzQgY2g7CisKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGFzY2lpKTsKKyAgICAgICAgZm9yIChpPTA7IGkgPCBhc2NpaS0+bGVuZ3RoOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICBpZiAoY2ggPiBtYXhjaGFyKQorICAgICAgICAgICAgICAgIG1heGNoYXIgPSBjaDsKKyAgICAgICAgfQorICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSA9PSAwKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPj0gMTI4KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA8PSAyNTUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFzc2VydChtYXhjaGFyIDwgMTI4KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA+PSAweDEwMCk7CisgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA8PSAweEZGRkYpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPj0gMHgxMDAwMCk7CisgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGFzY2lpLT5sZW5ndGgpID09IDApOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QqCit1bmljb2RlX3Jlc3VsdF93Y2hhcihQeU9iamVjdCAqdW5pY29kZSkKK3sKKyNpZm5kZWYgUHlfREVCVUcKKyAgICBQeV9zc2l6ZV90IGxlbjsKKworICAgIGFzc2VydChQeV9SRUZDTlQodW5pY29kZSkgPT0gMSk7CisKKyAgICBsZW4gPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorCisgICAgaWYgKGxlbiA9PSAxKSB7CisgICAgICAgIHdjaGFyX3QgY2ggPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSlbMF07CisgICAgICAgIGlmIChjaCA8IDI1NikgeworICAgICAgICAgICAgUHlPYmplY3QgKmxhdGluMV9jaGFyID0gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKWNoKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBsYXRpbjFfY2hhcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChfUHlVbmljb2RlX1JlYWR5KHVuaWNvZGUpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisjZWxzZQorICAgIC8qIGRvbid0IG1ha2UgdGhlIHJlc3VsdCByZWFkeSBpbiBkZWJ1ZyBtb2RlIHRvIGVuc3VyZSB0aGF0IHRoZSBjYWxsZXIKKyAgICAgICBtYWtlcyB0aGUgc3RyaW5nIHJlYWR5IGJlZm9yZSB1c2luZyBpdCAqLworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMSkpOworI2VuZGlmCisgICAgcmV0dXJuIHVuaWNvZGU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3VuaWNvZGVfcmVzdWx0X3JlYWR5KFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworCisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgaWYgKGxlbmd0aCA9PSAwKSB7CisgICAgICAgIGlmICh1bmljb2RlICE9IHVuaWNvZGVfZW1wdHkpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoID09IDEpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgMCk7CisgICAgICAgIGlmIChjaCA8IDI1NikgeworICAgICAgICAgICAgUHlPYmplY3QgKmxhdGluMV9jaGFyID0gdW5pY29kZV9sYXRpbjFbY2hdOworICAgICAgICAgICAgaWYgKGxhdGluMV9jaGFyICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAodW5pY29kZSAhPSBsYXRpbjFfY2hhcikgeworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYobGF0aW4xX2NoYXIpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBsYXRpbjFfY2hhcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMSkpOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKKyAgICAgICAgICAgICAgICB1bmljb2RlX2xhdGluMVtjaF0gPSB1bmljb2RlOworICAgICAgICAgICAgICAgIHJldHVybiB1bmljb2RlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgcmV0dXJuIHVuaWNvZGU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3VuaWNvZGVfcmVzdWx0KFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHVuaWNvZGUpKTsKKyAgICBpZiAoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfcmVhZHkodW5pY29kZSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfd2NoYXIodW5pY29kZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3VuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodW5pY29kZSkpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYodW5pY29kZSk7CisgICAgICAgIHJldHVybiB1bmljb2RlOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIC8qIFN1YnR5cGUgLS0gcmV0dXJuIGdlbnVpbmUgdW5pY29kZSBzdHJpbmcgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gKi8KKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ29weSh1bmljb2RlKTsKK30KKworI2lmZGVmIEhBVkVfTUJDUworc3RhdGljIE9TVkVSU0lPTklORk9FWCB3aW52ZXI7CisjZW5kaWYKKwogLyogLS0tIEJsb29tIEZpbHRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogLyogc3R1ZmYgdG8gaW1wbGVtZW50IHNpbXBsZSAiYmxvb20gZmlsdGVycyIgZm9yIFVuaWNvZGUgY2hhcmFjdGVycy4KQEAgLTIyMyw3ICs1MzcsOCBAQAogICAgICgoY2gpIDwgMTI4VSA/IGFzY2lpX2xpbmVicmVha1soY2gpXSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoQkxPT00oYmxvb21fbGluZWJyZWFrLCAoY2gpKSAmJiBQeV9VTklDT0RFX0lTTElORUJSRUFLKGNoKSkpCiAKLVB5X0xPQ0FMX0lOTElORShCTE9PTV9NQVNLKSBtYWtlX2Jsb29tX21hc2soUHlfVU5JQ09ERSogcHRyLCBQeV9zc2l6ZV90IGxlbikKK1B5X0xPQ0FMX0lOTElORShCTE9PTV9NQVNLKQorbWFrZV9ibG9vbV9tYXNrKGludCBraW5kLCB2b2lkKiBwdHIsIFB5X3NzaXplX3QgbGVuKQogewogICAgIC8qIGNhbGN1bGF0ZSBzaW1wbGUgYmxvb20tc3R5bGUgYml0bWFzayBmb3IgYSBnaXZlbiB1bmljb2RlIHN0cmluZyAqLwogCkBAIC0yMzIsNzYgKzU0NywyNTMgQEAKIAogICAgIG1hc2sgPSAwOwogICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgICAgQkxPT01fQUREKG1hc2ssIHB0cltpXSk7CisgICAgICAgIEJMT09NX0FERChtYXNrLCBQeVVuaWNvZGVfUkVBRChraW5kLCBwdHIsIGkpKTsKIAogICAgIHJldHVybiBtYXNrOwogfQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KSB1bmljb2RlX21lbWJlcihQeV9VTklDT0RFIGNociwgUHlfVU5JQ09ERSogc2V0LCBQeV9zc2l6ZV90IHNldGxlbikKLXsKLSAgICBQeV9zc2l6ZV90IGk7CisjZGVmaW5lIEJMT09NX01FTUJFUihtYXNrLCBjaHIsIHN0cikgXAorICAgIChCTE9PTShtYXNrLCBjaHIpIFwKKyAgICAgJiYgKFB5VW5pY29kZV9GaW5kQ2hhcihzdHIsIGNociwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSwgMSkgPj0gMCkpCiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2V0bGVuOyBpKyspCi0gICAgICAgIGlmIChzZXRbaV0gPT0gY2hyKQotICAgICAgICAgICAgcmV0dXJuIDE7CisvKiBDb21waWxhdGlvbiBvZiB0ZW1wbGF0ZWQgcm91dGluZXMgKi8KIAotICAgIHJldHVybiAwOwotfQorI2luY2x1ZGUgInN0cmluZ2xpYi9hc2NpaWxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3BhcnRpdGlvbi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgogCi0jZGVmaW5lIEJMT09NX01FTUJFUihtYXNrLCBjaHIsIHNldCwgc2V0bGVuKSAgICAgICAgICAgICAgICAgICAgXAotICAgIEJMT09NKG1hc2ssIGNocikgJiYgdW5pY29kZV9tZW1iZXIoY2hyLCBzZXQsIHNldGxlbikKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzMWxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3BhcnRpdGlvbi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczJsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kX21heF9jaGFyLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2xvY2FsZXV0aWwuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91Y3M0bGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvcGFydGl0aW9uLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3NwbGl0LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5pY29kZWRlZnMuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCiAKIC8qIC0tLSBVbmljb2RlIE9iamVjdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMKLWludCB1bmljb2RlX3Jlc2l6ZShyZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgpCitzdGF0aWMgUHlPYmplY3QgKgorZml4dXAoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgKCpmaXhmY3QpKFB5T2JqZWN0ICpzKSk7CisKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KSBmaW5kY2hhcih2b2lkICpzLCBpbnQga2luZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsIFB5X1VDUzQgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICB2b2lkICpvbGRzdHI7CisgICAgaW50IG1vZGUgPSAoZGlyZWN0aW9uID09IDEpID8gRkFTVF9TRUFSQ0ggOiBGQVNUX1JTRUFSQ0g7CiAKLSAgICAvKiBTaG9ydGN1dCBpZiB0aGVyZSdzIG5vdGhpbmcgbXVjaCB0byBkby4gKi8KLSAgICBpZiAodW5pY29kZS0+bGVuZ3RoID09IGxlbmd0aCkKLSAgICAgICAgZ290byByZXNldDsKLQotICAgIC8qIFJlc2l6aW5nIHNoYXJlZCBvYmplY3QgKHVuaWNvZGVfZW1wdHkgb3Igc2luZ2xlIGNoYXJhY3RlcgotICAgICAgIG9iamVjdHMpIGluLXBsYWNlIGlzIG5vdCBhbGxvd2VkLiBVc2UgUHlVbmljb2RlX1Jlc2l6ZSgpCi0gICAgICAgaW5zdGVhZCAhICovCi0KLSAgICBpZiAodW5pY29kZSA9PSB1bmljb2RlX2VtcHR5IHx8Ci0gICAgICAgICh1bmljb2RlLT5sZW5ndGggPT0gMSAmJgotICAgICAgICAgdW5pY29kZS0+c3RyWzBdIDwgMjU2VSAmJgotICAgICAgICAgdW5pY29kZV9sYXRpbjFbdW5pY29kZS0+c3RyWzBdXSA9PSB1bmljb2RlKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgcmVzaXplIHNoYXJlZCBzdHIgb2JqZWN0cyIpOworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIFB5X1VDUzEgY2gxID0gKFB5X1VDUzEpIGNoOworICAgICAgICAgICAgaWYgKGNoMSA9PSBjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9mYXN0c2VhcmNoKChQeV9VQ1MxICopIHMsIHNpemUsICZjaDEsIDEsIDAsIG1vZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIFB5X1VDUzIgY2gyID0gKFB5X1VDUzIpIGNoOworICAgICAgICAgICAgaWYgKGNoMiA9PSBjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9mYXN0c2VhcmNoKChQeV9VQ1MyICopIHMsIHNpemUsICZjaDIsIDEsIDAsIG1vZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3M0bGliX2Zhc3RzZWFyY2goKFB5X1VDUzQgKikgcywgc2l6ZSwgJmNoLCAxLCAwLCBtb2RlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Cit9CiAKLSAgICAvKiBXZSBhbGxvY2F0ZSBvbmUgbW9yZSBieXRlIHRvIG1ha2Ugc3VyZSB0aGUgc3RyaW5nIGlzIFV4MDAwMCB0ZXJtaW5hdGVkLgotICAgICAgIFRoZSBvdmVyYWxsb2NhdGlvbiBpcyBhbHNvIHVzZWQgYnkgZmFzdHNlYXJjaCwgd2hpY2ggYXNzdW1lcyB0aGF0IGl0J3MKLSAgICAgICBzYWZlIHRvIGxvb2sgYXQgc3RyW2xlbmd0aF0gKHdpdGhvdXQgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCB3aGF0Ci0gICAgICAgaXQgY29udGFpbnMpLiAqLworc3RhdGljIFB5T2JqZWN0KgorcmVzaXplX2NvbXBhY3QoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQoreworICAgIFB5X3NzaXplX3QgY2hhcl9zaXplOworICAgIFB5X3NzaXplX3Qgc3RydWN0X3NpemU7CisgICAgUHlfc3NpemVfdCBuZXdfc2l6ZTsKKyAgICBpbnQgc2hhcmVfd3N0cjsKKyAgICBQeU9iamVjdCAqbmV3X3VuaWNvZGU7CisgICAgYXNzZXJ0KHVuaWNvZGVfbW9kaWZpYWJsZSh1bmljb2RlKSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKTsKIAotICAgIG9sZHN0ciA9IHVuaWNvZGUtPnN0cjsKLSAgICB1bmljb2RlLT5zdHIgPSBQeU9iamVjdF9SRUFMTE9DKHVuaWNvZGUtPnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeV9VTklDT0RFKSAqIChsZW5ndGggKyAxKSk7Ci0gICAgaWYgKCF1bmljb2RlLT5zdHIpIHsKLSAgICAgICAgdW5pY29kZS0+c3RyID0gKFB5X1VOSUNPREUgKilvbGRzdHI7CisgICAgY2hhcl9zaXplID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgc3RydWN0X3NpemUgPSBzaXplb2YoUHlBU0NJSU9iamVjdCk7CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IHNpemVvZihQeUNvbXBhY3RVbmljb2RlT2JqZWN0KTsKKyAgICBzaGFyZV93c3RyID0gX1B5VW5pY29kZV9TSEFSRV9XU1RSKHVuaWNvZGUpOworCisgICAgaWYgKGxlbmd0aCA+ICgoUFlfU1NJWkVfVF9NQVggLSBzdHJ1Y3Rfc2l6ZSkgLyBjaGFyX3NpemUgLSAxKSkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbmV3X3NpemUgPSAoc3RydWN0X3NpemUgKyAobGVuZ3RoICsgMSkgKiBjaGFyX3NpemUpOworCisgICAgX1B5X0RFQ19SRUZUT1RBTDsKKyAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKHVuaWNvZGUpOworCisgICAgbmV3X3VuaWNvZGUgPSAoUHlPYmplY3QgKilQeU9iamVjdF9SRUFMTE9DKChjaGFyICopdW5pY29kZSwgbmV3X3NpemUpOworICAgIGlmIChuZXdfdW5pY29kZSA9PSBOVUxMKSB7CisgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UodW5pY29kZSk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB1bmljb2RlID0gbmV3X3VuaWNvZGU7CisgICAgX1B5X05ld1JlZmVyZW5jZSh1bmljb2RlKTsKKworICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgIGlmIChzaGFyZV93c3RyKSB7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgfQorICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCh1bmljb2RlKSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgMCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAwKSk7CisgICAgcmV0dXJuIHVuaWNvZGU7Cit9CisKK3N0YXRpYyBpbnQKK3Jlc2l6ZV9pbnBsYWNlKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKK3sKKyAgICB3Y2hhcl90ICp3c3RyOworICAgIFB5X3NzaXplX3QgbmV3X3NpemU7CisgICAgYXNzZXJ0KCFQeVVuaWNvZGVfSVNfQ09NUEFDVCh1bmljb2RlKSk7CisgICAgYXNzZXJ0KFB5X1JFRkNOVCh1bmljb2RlKSA9PSAxKTsKKworICAgIGlmIChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpIHsKKyAgICAgICAgUHlfc3NpemVfdCBjaGFyX3NpemU7CisgICAgICAgIGludCBzaGFyZV93c3RyLCBzaGFyZV91dGY4OworICAgICAgICB2b2lkICpkYXRhOworCisgICAgICAgIGRhdGEgPSBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpOworICAgICAgICBjaGFyX3NpemUgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICAgICAgc2hhcmVfd3N0ciA9IF9QeVVuaWNvZGVfU0hBUkVfV1NUUih1bmljb2RlKTsKKyAgICAgICAgc2hhcmVfdXRmOCA9IF9QeVVuaWNvZGVfU0hBUkVfVVRGOCh1bmljb2RlKTsKKworICAgICAgICBpZiAobGVuZ3RoID4gKFBZX1NTSVpFX1RfTUFYIC8gY2hhcl9zaXplIC0gMSkpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbmV3X3NpemUgPSAobGVuZ3RoICsgMSkgKiBjaGFyX3NpemU7CisKKyAgICAgICAgaWYgKCFzaGFyZV91dGY4ICYmIF9QeVVuaWNvZGVfSEFTX1VURjhfTUVNT1JZKHVuaWNvZGUpKQorICAgICAgICB7CisgICAgICAgICAgICBQeU9iamVjdF9ERUwoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpKTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IE5VTEw7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGEgPSAoUHlPYmplY3QgKilQeU9iamVjdF9SRUFMTE9DKGRhdGEsIG5ld19zaXplKTsKKyAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gZGF0YTsKKyAgICAgICAgaWYgKHNoYXJlX3dzdHIpIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IGRhdGE7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgICAgICB9CisgICAgICAgIGlmIChzaGFyZV91dGY4KSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBkYXRhOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aDsKKyAgICAgICAgfQorICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aDsKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpLCBkYXRhLCBsZW5ndGgsIDApOworICAgICAgICBpZiAoc2hhcmVfd3N0ciB8fCBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPT0gTlVMTCkgeworICAgICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAwKSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpICE9IE5VTEwpOworCisgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICBpZiAobGVuZ3RoID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2Yod2NoYXJfdCkgLSAxKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdW5pY29kZS0+c3RyW2xlbmd0aF0gPSAwOwotICAgIHVuaWNvZGUtPmxlbmd0aCA9IGxlbmd0aDsKLQotICByZXNldDoKLSAgICAvKiBSZXNldCB0aGUgb2JqZWN0IGNhY2hlcyAqLwotICAgIGlmICh1bmljb2RlLT5kZWZlbmMpIHsKLSAgICAgICAgUHlfQ0xFQVIodW5pY29kZS0+ZGVmZW5jKTsKKyAgICBuZXdfc2l6ZSA9IHNpemVvZih3Y2hhcl90KSAqIChsZW5ndGggKyAxKTsKKyAgICB3c3RyID0gIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKTsKKyAgICB3c3RyID0gUHlPYmplY3RfUkVBTExPQyh3c3RyLCBuZXdfc2l6ZSk7CisgICAgaWYgKCF3c3RyKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdW5pY29kZS0+aGFzaCA9IC0xOwotCisgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gd3N0cjsKKyAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSlbbGVuZ3RoXSA9IDA7CisgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aDsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDApKTsKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorcmVzaXplX2NvcHkoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQoreworICAgIFB5X3NzaXplX3QgY29weV9sZW5ndGg7CisgICAgaWYgKF9QeVVuaWNvZGVfS0lORCh1bmljb2RlKSAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgICAgICBQeU9iamVjdCAqY29weTsKKworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgY29weSA9IFB5VW5pY29kZV9OZXcobGVuZ3RoLCBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkpOworICAgICAgICBpZiAoY29weSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgY29weV9sZW5ndGggPSBQeV9NSU4obGVuZ3RoLCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKGNvcHksIDAsIHVuaWNvZGUsIDAsIGNvcHlfbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGNvcHk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdzsKKworICAgICAgICB3ID0gKFB5T2JqZWN0KilfUHlVbmljb2RlX05ldyhsZW5ndGgpOworICAgICAgICBpZiAodyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGNvcHlfbGVuZ3RoID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgY29weV9sZW5ndGggPSBQeV9NSU4oY29weV9sZW5ndGgsIGxlbmd0aCk7CisgICAgICAgIFB5X1VOSUNPREVfQ09QWShfUHlVbmljb2RlX1dTVFIodyksIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHc7CisgICAgfQorfQorCiAvKiBXZSBhbGxvY2F0ZSBvbmUgbW9yZSBieXRlIHRvIG1ha2Ugc3VyZSB0aGUgc3RyaW5nIGlzCiAgICBVeDAwMDAgdGVybWluYXRlZDsgc29tZSBjb2RlIChlLmcuIG5ld19pZGVudGlmaWVyKQogICAgcmVsaWVzIG9uIHRoYXQuCkBAIC0zMTEsNTUgKzgwMywzOSBAQAogCiAqLwogCi1zdGF0aWMKLVB5VW5pY29kZU9iamVjdCAqX1B5VW5pY29kZV9OZXcoUHlfc3NpemVfdCBsZW5ndGgpCitzdGF0aWMgUHlVbmljb2RlT2JqZWN0ICoKK19QeVVuaWNvZGVfTmV3KFB5X3NzaXplX3QgbGVuZ3RoKQogewogICAgIHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKKyAgICBzaXplX3QgbmV3X3NpemU7CiAKICAgICAvKiBPcHRpbWl6YXRpb24gZm9yIGVtcHR5IHN0cmluZ3MgKi8KICAgICBpZiAobGVuZ3RoID09IDAgJiYgdW5pY29kZV9lbXB0eSAhPSBOVUxMKSB7CiAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKLSAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgICAgIHJldHVybiAoUHlVbmljb2RlT2JqZWN0Kil1bmljb2RlX2VtcHR5OwogICAgIH0KIAogICAgIC8qIEVuc3VyZSB3ZSB3b24ndCBvdmVyZmxvdyB0aGUgc2l6ZS4gKi8KICAgICBpZiAobGVuZ3RoID4gKChQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9VTklDT0RFKSkgLSAxKSkgewogICAgICAgICByZXR1cm4gKFB5VW5pY29kZU9iamVjdCAqKVB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQotCi0gICAgLyogVW5pY29kZSBmcmVlbGlzdCAmIG1lbW9yeSBhbGxvY2F0aW9uICovCi0gICAgaWYgKGZyZWVfbGlzdCkgewotICAgICAgICB1bmljb2RlID0gZnJlZV9saXN0OwotICAgICAgICBmcmVlX2xpc3QgPSAqKFB5VW5pY29kZU9iamVjdCAqKil1bmljb2RlOwotICAgICAgICBudW1mcmVlLS07Ci0gICAgICAgIGlmICh1bmljb2RlLT5zdHIpIHsKLSAgICAgICAgICAgIC8qIEtlZXAtQWxpdmUgb3B0aW1pemF0aW9uOiB3ZSBvbmx5IHVwc2l6ZSB0aGUgYnVmZmVyLAotICAgICAgICAgICAgICAgbmV2ZXIgZG93bnNpemUgaXQuICovCi0gICAgICAgICAgICBpZiAoKHVuaWNvZGUtPmxlbmd0aCA8IGxlbmd0aCkgJiYKLSAgICAgICAgICAgICAgICB1bmljb2RlX3Jlc2l6ZSh1bmljb2RlLCBsZW5ndGgpIDwgMCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0X0RFTCh1bmljb2RlLT5zdHIpOwotICAgICAgICAgICAgICAgIHVuaWNvZGUtPnN0ciA9IE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaXplX3QgbmV3X3NpemUgPSBzaXplb2YoUHlfVU5JQ09ERSkgKiAoKHNpemVfdClsZW5ndGggKyAxKTsKLSAgICAgICAgICAgIHVuaWNvZGUtPnN0ciA9IChQeV9VTklDT0RFKikgUHlPYmplY3RfTUFMTE9DKG5ld19zaXplKTsKLSAgICAgICAgfQotICAgICAgICBQeU9iamVjdF9JTklUKHVuaWNvZGUsICZQeVVuaWNvZGVfVHlwZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzaXplX3QgbmV3X3NpemU7Ci0gICAgICAgIHVuaWNvZGUgPSBQeU9iamVjdF9OZXcoUHlVbmljb2RlT2JqZWN0LCAmUHlVbmljb2RlX1R5cGUpOwotICAgICAgICBpZiAodW5pY29kZSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG5ld19zaXplID0gc2l6ZW9mKFB5X1VOSUNPREUpICogKChzaXplX3QpbGVuZ3RoICsgMSk7Ci0gICAgICAgIHVuaWNvZGUtPnN0ciA9IChQeV9VTklDT0RFKikgUHlPYmplY3RfTUFMTE9DKG5ld19zaXplKTsKKyAgICBpZiAobGVuZ3RoIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiTmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gX1B5VW5pY29kZV9OZXciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCF1bmljb2RlLT5zdHIpIHsKKyAgICB1bmljb2RlID0gUHlPYmplY3RfTmV3KFB5VW5pY29kZU9iamVjdCwgJlB5VW5pY29kZV9UeXBlKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBuZXdfc2l6ZSA9IHNpemVvZihQeV9VTklDT0RFKSAqICgoc2l6ZV90KWxlbmd0aCArIDEpOworICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IChQeV9VTklDT0RFKikgUHlPYmplY3RfTUFMTE9DKG5ld19zaXplKTsKKyAgICBpZiAoIV9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSkgeworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgLyogSW5pdGlhbGl6ZSB0aGUgZmlyc3QgZWxlbWVudCB0byBndWFyZCBhZ2FpbnN0IGNhc2VzIHdoZXJlCiAgICAgICogdGhlIGNhbGxlciBmYWlscyBiZWZvcmUgaW5pdGlhbGl6aW5nIHN0ciAtLSB1bmljb2RlX3Jlc2l6ZSgpCiAgICAgICogcmVhZHMgc3RyWzBdLCBhbmQgdGhlIEtlZXAtQWxpdmUgb3B0aW1pemF0aW9uIGNhbiBrZWVwIG1lbW9yeQpAQCAtMzY3LDI0ICs4NDMsNjU4IEBACiAgICAgICogV2UgZG9uJ3Qgd2FudCB1bmljb2RlX3Jlc2l6ZSB0byByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluCiAgICAgICogdGhhdCBjYXNlLgogICAgICAqLwotICAgIHVuaWNvZGUtPnN0clswXSA9IDA7Ci0gICAgdW5pY29kZS0+c3RyW2xlbmd0aF0gPSAwOwotICAgIHVuaWNvZGUtPmxlbmd0aCA9IGxlbmd0aDsKLSAgICB1bmljb2RlLT5oYXNoID0gLTE7Ci0gICAgdW5pY29kZS0+c3RhdGUgPSAwOwotICAgIHVuaWNvZGUtPmRlZmVuYyA9IE5VTEw7CisgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpWzBdID0gMDsKKyAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSlbbGVuZ3RoXSA9IDA7CisgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aDsKKyAgICBfUHlVbmljb2RlX0hBU0godW5pY29kZSkgPSAtMTsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmludGVybmVkID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuY29tcGFjdCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5yZWFkeSA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5hc2NpaSA9IDA7CisgICAgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9IE5VTEw7CisgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSAwOworICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IE5VTEw7CisgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgoUHlPYmplY3QgKil1bmljb2RlLCAwKSk7CiAgICAgcmV0dXJuIHVuaWNvZGU7Ci0KLSAgb25FcnJvcjoKLSAgICAvKiBYWFggVU5SRUYvTkVXUkVGIGludGVyZmFjZSBzaG91bGQgYmUgbW9yZSBzeW1tZXRyaWNhbCAqLwotICAgIF9QeV9ERUNfUkVGVE9UQUw7Ci0gICAgX1B5X0ZvcmdldFJlZmVyZW5jZSgoUHlPYmplY3QgKil1bmljb2RlKTsKLSAgICBQeU9iamVjdF9EZWwodW5pY29kZSk7Ci0gICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYwotdm9pZCB1bmljb2RlX2RlYWxsb2MocmVnaXN0ZXIgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlKQorc3RhdGljIGNvbnN0IGNoYXIqCit1bmljb2RlX2tpbmRfbmFtZShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICAvKiBkb24ndCBjaGVjayBjb25zaXN0ZW5jeTogdW5pY29kZV9raW5kX25hbWUoKSBpcyBjYWxsZWQgZnJvbQorICAgICAgIF9QeVVuaWNvZGVfRHVtcCgpICovCisgICAgaWYgKCFQeVVuaWNvZGVfSVNfQ09NUEFDVCh1bmljb2RlKSkKKyAgICB7CisgICAgICAgIGlmICghUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKQorICAgICAgICAgICAgcmV0dXJuICJ3c3RyIjsKKyAgICAgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORCh1bmljb2RlKSkKKyAgICAgICAgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gImxlZ2FjeSBhc2NpaSI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuICJsZWdhY3kgbGF0aW4xIjsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgICAgIHJldHVybiAibGVnYWN5IFVDUzIiOworICAgICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuICJsZWdhY3kgVUNTNCI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gIjxsZWdhY3kgaW52YWxpZCBraW5kPiI7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CisgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORCh1bmljb2RlKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgICAgICByZXR1cm4gImFzY2lpIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuICJsYXRpbjEiOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiAiVUNTMiI7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuICJVQ1M0IjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gIjxpbnZhbGlkIGNvbXBhY3Qga2luZD4iOworICAgIH0KK30KKworI2lmZGVmIFB5X0RFQlVHCisvKiBGdW5jdGlvbnMgd3JhcHBpbmcgbWFjcm9zIGZvciB1c2UgaW4gZGVidWdnZXIgKi8KK2NoYXIgKl9QeVVuaWNvZGVfdXRmOCh2b2lkICp1bmljb2RlKXsKKyAgICByZXR1cm4gUHlVbmljb2RlX1VURjgodW5pY29kZSk7Cit9CisKK3ZvaWQgKl9QeVVuaWNvZGVfY29tcGFjdF9kYXRhKHZvaWQgKnVuaWNvZGUpIHsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9DT01QQUNUX0RBVEEodW5pY29kZSk7Cit9Cit2b2lkICpfUHlVbmljb2RlX2RhdGEodm9pZCAqdW5pY29kZSl7CisgICAgcHJpbnRmKCJvYmogJXBcbiIsIHVuaWNvZGUpOworICAgIHByaW50ZigiY29tcGFjdCAlZFxuIiwgUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpOworICAgIHByaW50ZigiY29tcGFjdCBhc2NpaSAlZFxuIiwgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkodW5pY29kZSkpOworICAgIHByaW50ZigiYXNjaWkgb3AgJXBcbiIsICgodm9pZCopKChQeUFTQ0lJT2JqZWN0KikodW5pY29kZSkgKyAxKSkpOworICAgIHByaW50ZigiY29tcGFjdCBvcCAlcFxuIiwgKCh2b2lkKikoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKSh1bmljb2RlKSArIDEpKSk7CisgICAgcHJpbnRmKCJjb21wYWN0IGRhdGEgJXBcbiIsIF9QeVVuaWNvZGVfQ09NUEFDVF9EQVRBKHVuaWNvZGUpKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7Cit9CisKK3ZvaWQKK19QeVVuaWNvZGVfRHVtcChQeU9iamVjdCAqb3ApCit7CisgICAgUHlBU0NJSU9iamVjdCAqYXNjaWkgPSAoUHlBU0NJSU9iamVjdCAqKW9wOworICAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKmNvbXBhY3QgPSAoUHlDb21wYWN0VW5pY29kZU9iamVjdCAqKW9wOworICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZSA9IChQeVVuaWNvZGVPYmplY3QgKilvcDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKGFzY2lpLT5zdGF0ZS5jb21wYWN0KQorICAgIHsKKyAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSkKKyAgICAgICAgICAgIGRhdGEgPSAoYXNjaWkgKyAxKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YSA9IChjb21wYWN0ICsgMSk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgZGF0YSA9IHVuaWNvZGUtPmRhdGEuYW55OworICAgIHByaW50ZigiJXM6IGxlbj0lenUsICIsdW5pY29kZV9raW5kX25hbWUob3ApLCBhc2NpaS0+bGVuZ3RoKTsKKworICAgIGlmIChhc2NpaS0+d3N0ciA9PSBkYXRhKQorICAgICAgICBwcmludGYoInNoYXJlZCAiKTsKKyAgICBwcmludGYoIndzdHI9JXAiLCBhc2NpaS0+d3N0cik7CisKKyAgICBpZiAoIShhc2NpaS0+c3RhdGUuYXNjaWkgPT0gMSAmJiBhc2NpaS0+c3RhdGUuY29tcGFjdCA9PSAxKSkgeworICAgICAgICBwcmludGYoIiAoJXp1KSwgIiwgY29tcGFjdC0+d3N0cl9sZW5ndGgpOworICAgICAgICBpZiAoIWFzY2lpLT5zdGF0ZS5jb21wYWN0ICYmIGNvbXBhY3QtPnV0ZjggPT0gdW5pY29kZS0+ZGF0YS5hbnkpCisgICAgICAgICAgICBwcmludGYoInNoYXJlZCAiKTsKKyAgICAgICAgcHJpbnRmKCJ1dGY4PSVwICglenUpIiwgY29tcGFjdC0+dXRmOCwgY29tcGFjdC0+dXRmOF9sZW5ndGgpOworICAgIH0KKyAgICBwcmludGYoIiwgZGF0YT0lcFxuIiwgZGF0YSk7Cit9CisjZW5kaWYKKworUHlPYmplY3QgKgorUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IHNpemUsIFB5X1VDUzQgbWF4Y2hhcikKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKnVuaWNvZGU7CisgICAgdm9pZCAqZGF0YTsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgaW50IGlzX3NoYXJpbmcsIGlzX2FzY2lpOworICAgIFB5X3NzaXplX3QgY2hhcl9zaXplOworICAgIFB5X3NzaXplX3Qgc3RydWN0X3NpemU7CisKKyAgICAvKiBPcHRpbWl6YXRpb24gZm9yIGVtcHR5IHN0cmluZ3MgKi8KKyAgICBpZiAoc2l6ZSA9PSAwICYmIHVuaWNvZGVfZW1wdHkgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKworICAgIGlzX2FzY2lpID0gMDsKKyAgICBpc19zaGFyaW5nID0gMDsKKyAgICBzdHJ1Y3Rfc2l6ZSA9IHNpemVvZihQeUNvbXBhY3RVbmljb2RlT2JqZWN0KTsKKyAgICBpZiAobWF4Y2hhciA8IDEyOCkgeworICAgICAgICBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQ7CisgICAgICAgIGNoYXJfc2l6ZSA9IDE7CisgICAgICAgIGlzX2FzY2lpID0gMTsKKyAgICAgICAgc3RydWN0X3NpemUgPSBzaXplb2YoUHlBU0NJSU9iamVjdCk7CisgICAgfQorICAgIGVsc2UgaWYgKG1heGNoYXIgPCAyNTYpIHsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5EOworICAgICAgICBjaGFyX3NpemUgPSAxOworICAgIH0KKyAgICBlbHNlIGlmIChtYXhjaGFyIDwgNjU1MzYpIHsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV8yQllURV9LSU5EOworICAgICAgICBjaGFyX3NpemUgPSAyOworICAgICAgICBpZiAoc2l6ZW9mKHdjaGFyX3QpID09IDIpCisgICAgICAgICAgICBpc19zaGFyaW5nID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtYXhjaGFyID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBtYXhpbXVtIGNoYXJhY3RlciBwYXNzZWQgdG8gUHlVbmljb2RlX05ldyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAga2luZCA9IFB5VW5pY29kZV80QllURV9LSU5EOworICAgICAgICBjaGFyX3NpemUgPSA0OworICAgICAgICBpZiAoc2l6ZW9mKHdjaGFyX3QpID09IDQpCisgICAgICAgICAgICBpc19zaGFyaW5nID0gMTsKKyAgICB9CisKKyAgICAvKiBFbnN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlIHNpemUuICovCisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJOZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBQeVVuaWNvZGVfTmV3Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoc2l6ZSA+ICgoUFlfU1NJWkVfVF9NQVggLSBzdHJ1Y3Rfc2l6ZSkgLyBjaGFyX3NpemUgLSAxKSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICAvKiBEdXBsaWNhdGVkIGFsbG9jYXRpb24gY29kZSBmcm9tIF9QeU9iamVjdF9OZXcoKSBpbnN0ZWFkIG9mIGEgY2FsbCB0bworICAgICAqIFB5T2JqZWN0X05ldygpIHNvIHdlIGFyZSBhYmxlIHRvIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgb2JqZWN0IGFuZAorICAgICAqIGl0J3MgZGF0YSBidWZmZXIuCisgICAgICovCisgICAgb2JqID0gKFB5T2JqZWN0ICopIFB5T2JqZWN0X01BTExPQyhzdHJ1Y3Rfc2l6ZSArIChzaXplICsgMSkgKiBjaGFyX3NpemUpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgb2JqID0gUHlPYmplY3RfSU5JVChvYmosICZQeVVuaWNvZGVfVHlwZSk7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHVuaWNvZGUgPSAoUHlDb21wYWN0VW5pY29kZU9iamVjdCAqKW9iajsKKyAgICBpZiAoaXNfYXNjaWkpCisgICAgICAgIGRhdGEgPSAoKFB5QVNDSUlPYmplY3QqKW9iaikgKyAxOworICAgIGVsc2UKKyAgICAgICAgZGF0YSA9IHVuaWNvZGUgKyAxOworICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gc2l6ZTsKKyAgICBfUHlVbmljb2RlX0hBU0godW5pY29kZSkgPSAtMTsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmludGVybmVkID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBraW5kOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuY29tcGFjdCA9IDE7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5yZWFkeSA9IDE7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5hc2NpaSA9IGlzX2FzY2lpOworICAgIGlmIChpc19hc2NpaSkgeworICAgICAgICAoKGNoYXIqKWRhdGEpW3NpemVdID0gMDsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAoKGNoYXIqKWRhdGEpW3NpemVdID0gMDsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIHVuaWNvZGUtPnV0ZjggPSBOVUxMOworICAgICAgICB1bmljb2RlLT51dGY4X2xlbmd0aCA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB1bmljb2RlLT51dGY4ID0gTlVMTDsKKyAgICAgICAgdW5pY29kZS0+dXRmOF9sZW5ndGggPSAwOworICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkKKyAgICAgICAgICAgICgoUHlfVUNTMiopZGF0YSlbc2l6ZV0gPSAwOworICAgICAgICBlbHNlIC8qIGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQgKi8KKyAgICAgICAgICAgICgoUHlfVUNTNCopZGF0YSlbc2l6ZV0gPSAwOworICAgICAgICBpZiAoaXNfc2hhcmluZykgeworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IHNpemU7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSAod2NoYXJfdCAqKWRhdGE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICAvKiBGaWxsIHRoZSBkYXRhIHdpdGggaW52YWxpZCBjaGFyYWN0ZXJzIHRvIGRldGVjdCBidWdzIGVhcmxpZXIuCisgICAgICAgX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHN0ciwgMSkgZGV0ZWN0cyBpbnZhbGlkIGNoYXJhY3RlcnMsCisgICAgICAgYXQgbGVhc3QgZm9yIEFTQ0lJIGFuZCBVQ1MtNCBzdHJpbmdzLiBVKzAwRkYgaXMgaW52YWxpZCBpbiBBU0NJSQorICAgICAgIGFuZCBVK0ZGRkZGRkZGIGlzIGFuIGludmFsaWQgY2hhcmFjdGVyIGluIFVuaWNvZGUgNi4wLiAqLworICAgIG1lbXNldChkYXRhLCAweGZmLCBzaXplICoga2luZCk7CisjZW5kaWYKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KChQeU9iamVjdCopdW5pY29kZSwgMCkpOworICAgIHJldHVybiBvYmo7Cit9CisKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisvKiBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBhIDE2LWJpdHMgd2NoYXJfdCByZXByZXNlbnRhdGlvbiB0byBVQ1M0LCB0aGlzCisgICB3aWxsIGRlY29kZSBzdXJyb2dhdGUgcGFpcnMsIHRoZSBvdGhlciBjb252ZXJzaW9ucyBhcmUgaW1wbGVtZW50ZWQgYXMgbWFjcm9zCisgICBmb3IgZWZmaWNpZW5jeS4KKworICAgVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgdW5pY29kZSBjYW4gaG9sZCBvbmUgbW9yZSBjb2RlIHBvaW50IHRoYW4gd3N0cgorICAgY2hhcmFjdGVycyBmb3IgYSB0ZXJtaW5hdGluZyBudWxsIGNoYXJhY3Rlci4gKi8KK3N0YXRpYyB2b2lkCit1bmljb2RlX2NvbnZlcnRfd2NoYXJfdG9fdWNzNChjb25zdCB3Y2hhcl90ICpiZWdpbiwgY29uc3Qgd2NoYXJfdCAqZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgY29uc3Qgd2NoYXJfdCAqaXRlcjsKKyAgICBQeV9VQ1M0ICp1Y3M0X291dDsKKworICAgIGFzc2VydCh1bmljb2RlICE9IE5VTEwpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICB1Y3M0X291dCA9IFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpOworCisgICAgZm9yIChpdGVyID0gYmVnaW47IGl0ZXIgPCBlbmQ7ICkgeworICAgICAgICBhc3NlcnQodWNzNF9vdXQgPCAoUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKSk7CisgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKGl0ZXJbMF0pCisgICAgICAgICAgICAmJiAoaXRlcisxKSA8IGVuZAorICAgICAgICAgICAgJiYgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGl0ZXJbMV0pKQorICAgICAgICB7CisgICAgICAgICAgICAqdWNzNF9vdXQrKyA9IFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKGl0ZXJbMF0sIGl0ZXJbMV0pOworICAgICAgICAgICAgaXRlciArPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgKnVjczRfb3V0KysgPSAqaXRlcjsKKyAgICAgICAgICAgIGl0ZXIrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQodWNzNF9vdXQgPT0gKFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkpOworCit9CisjZW5kaWYKKworc3RhdGljIGludAordW5pY29kZV9jaGVja19tb2RpZmlhYmxlKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGlmICghdW5pY29kZV9tb2RpZmlhYmxlKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgbW9kaWZ5IGEgc3RyaW5nIGN1cnJlbnRseSB1c2VkIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK19jb3B5X2NoYXJhY3RlcnMoUHlPYmplY3QgKnRvLCBQeV9zc2l6ZV90IHRvX3N0YXJ0LAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbSwgUHlfc3NpemVfdCBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGhvd19tYW55LCBpbnQgY2hlY2tfbWF4Y2hhcikKK3sKKyAgICB1bnNpZ25lZCBpbnQgZnJvbV9raW5kLCB0b19raW5kOworICAgIHZvaWQgKmZyb21fZGF0YSwgKnRvX2RhdGE7CisKKyAgICBhc3NlcnQoMCA8PSBob3dfbWFueSk7CisgICAgYXNzZXJ0KDAgPD0gZnJvbV9zdGFydCk7CisgICAgYXNzZXJ0KDAgPD0gdG9fc3RhcnQpOworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soZnJvbSkpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkoZnJvbSkpOworICAgIGFzc2VydChmcm9tX3N0YXJ0ICsgaG93X21hbnkgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgoZnJvbSkpOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayh0bykpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodG8pKTsKKyAgICBhc3NlcnQodG9fc3RhcnQgKyBob3dfbWFueSA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0bykpOworCisgICAgaWYgKGhvd19tYW55ID09IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgZnJvbV9raW5kID0gUHlVbmljb2RlX0tJTkQoZnJvbSk7CisgICAgZnJvbV9kYXRhID0gUHlVbmljb2RlX0RBVEEoZnJvbSk7CisgICAgdG9fa2luZCA9IFB5VW5pY29kZV9LSU5EKHRvKTsKKyAgICB0b19kYXRhID0gUHlVbmljb2RlX0RBVEEodG8pOworCisjaWZkZWYgUHlfREVCVUcKKyAgICBpZiAoIWNoZWNrX21heGNoYXIKKyAgICAgICAgJiYgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGZyb20pID4gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHRvKSkKKyAgICB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgdG9fbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0byk7CisgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgZm9yIChpPTA7IGkgPCBob3dfbWFueTsgaSsrKSB7CisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGZyb21fa2luZCwgZnJvbV9kYXRhLCBmcm9tX3N0YXJ0ICsgaSk7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gdG9fbWF4Y2hhcik7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIGlmIChmcm9tX2tpbmQgPT0gdG9fa2luZCkgeworICAgICAgICBpZiAoY2hlY2tfbWF4Y2hhcgorICAgICAgICAgICAgJiYgIVB5VW5pY29kZV9JU19BU0NJSShmcm9tKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkodG8pKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBXcml0aW5nIExhdGluLTEgY2hhcmFjdGVycyBpbnRvIGFuIEFTQ0lJIHN0cmluZyByZXF1aXJlcyB0bworICAgICAgICAgICAgICAgY2hlY2sgdGhhdCBhbGwgd3JpdHRlbiBjaGFyYWN0ZXJzIGFyZSBwdXJlIEFTQ0lJICovCisgICAgICAgICAgICBQeV9VQ1M0IG1heF9jaGFyOworICAgICAgICAgICAgbWF4X2NoYXIgPSB1Y3MxbGliX2ZpbmRfbWF4X2NoYXIoZnJvbV9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X1VDUzEqKWZyb21fZGF0YSArIGhvd19tYW55KTsKKyAgICAgICAgICAgIGlmIChtYXhfY2hhciA+PSAxMjgpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5X01FTUNQWSgoY2hhciopdG9fZGF0YSArIHRvX2tpbmQgKiB0b19zdGFydCwKKyAgICAgICAgICAgICAgICAgIChjaGFyKilmcm9tX2RhdGEgKyBmcm9tX2tpbmQgKiBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgdG9fa2luZCAqIGhvd19tYW55KTsKKyAgICB9CisgICAgZWxzZSBpZiAoZnJvbV9raW5kID09IFB5VW5pY29kZV8xQllURV9LSU5ECisgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkKKyAgICB7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgIFB5X1VDUzEsIFB5X1VDUzIsCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICApOworICAgIH0KKyAgICBlbHNlIGlmIChmcm9tX2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKQorICAgIHsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMSwgUHlfVUNTNCwKKyAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICk7CisgICAgfQorICAgIGVsc2UgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORAorICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpCisgICAgeworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICBQeV9VQ1MyLCBQeV9VQ1M0LAorICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydCAoUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGZyb20pID4gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHRvKSk7CisKKyAgICAgICAgaWYgKCFjaGVja19tYXhjaGFyKSB7CisgICAgICAgICAgICBpZiAoZnJvbV9raW5kID09IFB5VW5pY29kZV8yQllURV9LSU5ECisgICAgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzIsIFB5X1VDUzEsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChmcm9tX2tpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0LCBQeV9VQ1MxLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZnJvbV9raW5kID09IFB5VW5pY29kZV80QllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCwgUHlfVUNTMiwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb25zdCBQeV9VQ1M0IHRvX21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodG8pOworICAgICAgICAgICAgUHlfVUNTNCBjaDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBob3dfbWFueTsgaSsrKSB7CisgICAgICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChmcm9tX2tpbmQsIGZyb21fZGF0YSwgZnJvbV9zdGFydCArIGkpOworICAgICAgICAgICAgICAgIGlmIChjaCA+IHRvX21heGNoYXIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUodG9fa2luZCwgdG9fZGF0YSwgdG9fc3RhcnQgKyBpLCBjaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQKK19QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKAorICAgIFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCB0b19zdGFydCwKKyAgICBQeU9iamVjdCAqZnJvbSwgUHlfc3NpemVfdCBmcm9tX3N0YXJ0LCBQeV9zc2l6ZV90IGhvd19tYW55KQoreworICAgICh2b2lkKV9jb3B5X2NoYXJhY3RlcnModG8sIHRvX3N0YXJ0LCBmcm9tLCBmcm9tX3N0YXJ0LCBob3dfbWFueSwgMCk7Cit9CisKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9Db3B5Q2hhcmFjdGVycyhQeU9iamVjdCAqdG8sIFB5X3NzaXplX3QgdG9fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZyb20sIFB5X3NzaXplX3QgZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGhvd19tYW55KQoreworICAgIGludCBlcnI7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmcm9tKSB8fCAhUHlVbmljb2RlX0NoZWNrKHRvKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZnJvbSkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHRvKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKGZyb21fc3RhcnQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh0b19zdGFydCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaG93X21hbnkgPSBQeV9NSU4oUHlVbmljb2RlX0dFVF9MRU5HVEgoZnJvbSksIGhvd19tYW55KTsKKyAgICBpZiAodG9fc3RhcnQgKyBob3dfbWFueSA+IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRvKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHdyaXRlICV6aSBjaGFyYWN0ZXJzIGF0ICV6aSAiCisgICAgICAgICAgICAgICAgICAgICAiaW4gYSBzdHJpbmcgb2YgJXppIGNoYXJhY3RlcnMiLAorICAgICAgICAgICAgICAgICAgICAgaG93X21hbnksIHRvX3N0YXJ0LCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0bykpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGhvd19tYW55ID09IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKHVuaWNvZGVfY2hlY2tfbW9kaWZpYWJsZSh0bykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGVyciA9IF9jb3B5X2NoYXJhY3RlcnModG8sIHRvX3N0YXJ0LCBmcm9tLCBmcm9tX3N0YXJ0LCBob3dfbWFueSwgMSk7CisgICAgaWYgKGVycikgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGNvcHkgJXMgY2hhcmFjdGVycyAiCisgICAgICAgICAgICAgICAgICAgICAiaW50byBhIHN0cmluZyBvZiAlcyBjaGFyYWN0ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfa2luZF9uYW1lKGZyb20pLAorICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV9raW5kX25hbWUodG8pKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gaG93X21hbnk7Cit9CisKKy8qIEZpbmQgdGhlIG1heGltdW0gY29kZSBwb2ludCBhbmQgY291bnQgdGhlIG51bWJlciBvZiBzdXJyb2dhdGUgcGFpcnMgc28gYQorICAgY29ycmVjdCBzdHJpbmcgbGVuZ3RoIGNhbiBiZSBjb21wdXRlZCBiZWZvcmUgY29udmVydGluZyBhIHN0cmluZyB0byBVQ1M0LgorICAgVGhpcyBmdW5jdGlvbiBjb3VudHMgc2luZ2xlIHN1cnJvZ2F0ZXMgYXMgYSBjaGFyYWN0ZXIgYW5kIG5vdCBhcyBhIHBhaXIuCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG9yIC0xIG9uIGVycm9yLiAqLworc3RhdGljIGludAorZmluZF9tYXhjaGFyX3N1cnJvZ2F0ZXMoY29uc3Qgd2NoYXJfdCAqYmVnaW4sIGNvbnN0IHdjaGFyX3QgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgKm1heGNoYXIsIFB5X3NzaXplX3QgKm51bV9zdXJyb2dhdGVzKQoreworICAgIGNvbnN0IHdjaGFyX3QgKml0ZXI7CisgICAgUHlfVUNTNCBjaDsKKworICAgIGFzc2VydChudW1fc3Vycm9nYXRlcyAhPSBOVUxMICYmIG1heGNoYXIgIT0gTlVMTCk7CisgICAgKm51bV9zdXJyb2dhdGVzID0gMDsKKyAgICAqbWF4Y2hhciA9IDA7CisKKyAgICBmb3IgKGl0ZXIgPSBiZWdpbjsgaXRlciA8IGVuZDsgKSB7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShpdGVyWzBdKQorICAgICAgICAgICAgJiYgKGl0ZXIrMSkgPCBlbmQKKyAgICAgICAgICAgICYmIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShpdGVyWzFdKSkKKyAgICAgICAgeworICAgICAgICAgICAgY2ggPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhpdGVyWzBdLCBpdGVyWzFdKTsKKyAgICAgICAgICAgICsrKCpudW1fc3Vycm9nYXRlcyk7CisgICAgICAgICAgICBpdGVyICs9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoID0gKml0ZXI7CisgICAgICAgICAgICBpdGVyKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNoID4gKm1heGNoYXIpIHsKKyAgICAgICAgICAgICptYXhjaGFyID0gY2g7CisgICAgICAgICAgICBpZiAoKm1heGNoYXIgPiBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIFUrJXggaXMgbm90IGluIHJhbmdlIFtVKzAwMDA7IFUrMTBmZmZmXSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorX1B5VW5pY29kZV9SZWFkeShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICB3Y2hhcl90ICplbmQ7CisgICAgUHlfVUNTNCBtYXhjaGFyID0gMDsKKyAgICBQeV9zc2l6ZV90IG51bV9zdXJyb2dhdGVzOworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICBQeV9zc2l6ZV90IGxlbmd0aF93b19zdXJyb2dhdGVzOworI2VuZGlmCisKKyAgICAvKiBfUHlVbmljb2RlX1JlYWR5KCkgaXMgb25seSBpbnRlbmRlZCBmb3Igb2xkLXN0eWxlIEFQSSB1c2FnZSB3aGVyZQorICAgICAgIHN0cmluZ3Mgd2VyZSBjcmVhdGVkIHVzaW5nIF9QeU9iamVjdF9OZXcoKSBhbmQgd2hlcmUgbm8gY2Fub25pY2FsCisgICAgICAgcmVwcmVzZW50YXRpb24gKHRoZSBzdHIgZmllbGQpIGhhcyBiZWVuIHNldCB5ZXQgYWthIHN0cmluZ3MKKyAgICAgICB3aGljaCBhcmUgbm90IHlldCByZWFkeS4gKi8KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmljb2RlKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfS0lORCh1bmljb2RlKSA9PSBQeVVuaWNvZGVfV0NIQVJfS0lORCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9PSBOVUxMKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID09IE5VTEwpOworICAgIC8qIEFjdHVhbGx5LCBpdCBzaG91bGQgbmVpdGhlciBiZSBpbnRlcm5lZCBub3IgYmUgYW55dGhpbmcgZWxzZTogKi8KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5pbnRlcm5lZCA9PSBTU1RBVEVfTk9UX0lOVEVSTkVEKTsKKworICAgIGVuZCA9IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSArIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgaWYgKGZpbmRfbWF4Y2hhcl9zdXJyb2dhdGVzKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4Y2hhciwgJm51bV9zdXJyb2dhdGVzKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKG1heGNoYXIgPCAyNTYpIHsKKyAgICAgICAgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9IFB5T2JqZWN0X01BTExPQyhfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpICsgMSk7CisgICAgICAgIGlmICghX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMod2NoYXJfdCwgdW5zaWduZWQgY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpKTsKKyAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSlbX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKV0gPSAnXDAnOworICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5EOworICAgICAgICBpZiAobWF4Y2hhciA8IDEyOCkgeworICAgICAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5hc2NpaSA9IDE7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmFzY2lpID0gMDsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IE5VTEw7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgfQorICAgICAgICBQeU9iamVjdF9GUkVFKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSk7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSAwOworICAgIH0KKyAgICAvKiBJbiB0aGlzIGNhc2Ugd2UgbWlnaHQgaGF2ZSB0byBjb252ZXJ0IGRvd24gZnJvbSA0LWJ5dGUgbmF0aXZlCisgICAgICAgd2NoYXJfdCB0byAyLWJ5dGUgdW5pY29kZS4gKi8KKyAgICBlbHNlIGlmIChtYXhjaGFyIDwgNjU1MzYpIHsKKyAgICAgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzID09IDAgJiYKKyAgICAgICAgICAgICAgICJGaW5kTWF4Q2hhckFuZE51bVN1cnJvZ2F0ZVBhaXJzKCkgbWVzc2VkIHVwIik7CisKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgICAgIC8qIFdlIGNhbiBzaGFyZSByZXByZXNlbnRhdGlvbnMgYW5kIGFyZSBkb25lLiAqLworICAgICAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpOworICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKVtfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpXSA9ICdcMCc7CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0gUHlVbmljb2RlXzJCWVRFX0tJTkQ7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworI2Vsc2UKKyAgICAgICAgLyogc2l6ZW9mKHdjaGFyX3QpID09IDQgKi8KKyAgICAgICAgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9IFB5T2JqZWN0X01BTExPQygKKyAgICAgICAgICAgIDIgKiAoX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSArIDEpKTsKKyAgICAgICAgaWYgKCFfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyh3Y2hhcl90LCBQeV9VQ1MyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSksIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSkpOworICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKVtfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpXSA9ICdcMCc7CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0gUHlVbmljb2RlXzJCWVRFX0tJTkQ7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICBQeU9iamVjdF9GUkVFKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSk7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSAwOworI2VuZGlmCisgICAgfQorICAgIC8qIG1heGNoYXIgZXhlZWRzIDE2IGJpdCwgd2VlIG5lZWQgNCBieXRlcyBmb3IgdW5pY29kZSBjaGFyYWN0ZXJzICovCisgICAgZWxzZSB7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICAvKiBpbiBjYXNlIHRoZSBuYXRpdmUgcmVwcmVzZW50YXRpb24gaXMgMi1ieXRlcywgd2UgbmVlZCB0byBhbGxvY2F0ZSBhCisgICAgICAgICAgIG5ldyBub3JtYWxpemVkIDQtYnl0ZSB2ZXJzaW9uLiAqLworICAgICAgICBsZW5ndGhfd29fc3Vycm9nYXRlcyA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgLSBudW1fc3Vycm9nYXRlczsKKyAgICAgICAgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9IFB5T2JqZWN0X01BTExPQyg0ICogKGxlbmd0aF93b19zdXJyb2dhdGVzICsgMSkpOworICAgICAgICBpZiAoIV9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGhfd29fc3Vycm9nYXRlczsKKyAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0gUHlVbmljb2RlXzRCWVRFX0tJTkQ7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICAvKiB1bmljb2RlX2NvbnZlcnRfd2NoYXJfdG9fdWNzNCgpIHJlcXVpcmVzIGEgcmVhZHkgc3RyaW5nICovCisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkucmVhZHkgPSAxOworICAgICAgICB1bmljb2RlX2NvbnZlcnRfd2NoYXJfdG9fdWNzNChfUHlVbmljb2RlX1dTVFIodW5pY29kZSksIGVuZCwgdW5pY29kZSk7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKTsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IDA7CisjZWxzZQorICAgICAgICBhc3NlcnQobnVtX3N1cnJvZ2F0ZXMgPT0gMCk7CisKKyAgICAgICAgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKTsKKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0gUHlVbmljb2RlXzRCWVRFX0tJTkQ7CisjZW5kaWYKKyAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSlbX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSldID0gJ1wwJzsKKyAgICB9CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5yZWFkeSA9IDE7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCit1bmljb2RlX2RlYWxsb2MocmVnaXN0ZXIgUHlPYmplY3QgKnVuaWNvZGUpCiB7CiAgICAgc3dpdGNoIChQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQodW5pY29kZSkpIHsKICAgICBjYXNlIFNTVEFURV9OT1RfSU5URVJORUQ6CkBAIC0zOTMsNyArMTUwMyw3IEBACiAgICAgY2FzZSBTU1RBVEVfSU5URVJORURfTU9SVEFMOgogICAgICAgICAvKiByZXZpdmUgZGVhZCBvYmplY3QgdGVtcG9yYXJpbHkgZm9yIERlbEl0ZW0gKi8KICAgICAgICAgUHlfUkVGQ05UKHVuaWNvZGUpID0gMzsKLSAgICAgICAgaWYgKFB5RGljdF9EZWxJdGVtKGludGVybmVkLCAoUHlPYmplY3QgKil1bmljb2RlKSAhPSAwKQorICAgICAgICBpZiAoUHlEaWN0X0RlbEl0ZW0oaW50ZXJuZWQsIHVuaWNvZGUpICE9IDApCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgICJkZWxldGlvbiBvZiBpbnRlcm5lZCBzdHJpbmcgZmFpbGVkIik7CiAgICAgICAgIGJyZWFrOwpAQCAtNDA1LDI0MCArMTUxNSw3NDEgQEAKICAgICAgICAgUHlfRmF0YWxFcnJvcigiSW5jb25zaXN0ZW50IGludGVybmVkIHN0cmluZyBzdGF0ZS4iKTsKICAgICB9CiAKLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodW5pY29kZSkgJiYKLSAgICAgICAgbnVtZnJlZSA8IFB5VW5pY29kZV9NQVhGUkVFTElTVCkgewotICAgICAgICAvKiBLZWVwLUFsaXZlIG9wdGltaXphdGlvbiAqLwotICAgICAgICBpZiAodW5pY29kZS0+bGVuZ3RoID49IEtFRVBBTElWRV9TSVpFX0xJTUlUKSB7Ci0gICAgICAgICAgICBQeU9iamVjdF9ERUwodW5pY29kZS0+c3RyKTsKLSAgICAgICAgICAgIHVuaWNvZGUtPnN0ciA9IE5VTEw7Ci0gICAgICAgICAgICB1bmljb2RlLT5sZW5ndGggPSAwOwotICAgICAgICB9Ci0gICAgICAgIGlmICh1bmljb2RlLT5kZWZlbmMpIHsKLSAgICAgICAgICAgIFB5X0NMRUFSKHVuaWNvZGUtPmRlZmVuYyk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogQWRkIHRvIGZyZWUgbGlzdCAqLwotICAgICAgICAqKFB5VW5pY29kZU9iamVjdCAqKil1bmljb2RlID0gZnJlZV9saXN0OwotICAgICAgICBmcmVlX2xpc3QgPSB1bmljb2RlOwotICAgICAgICBudW1mcmVlKys7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdF9ERUwodW5pY29kZS0+c3RyKTsKLSAgICAgICAgUHlfWERFQ1JFRih1bmljb2RlLT5kZWZlbmMpOwotICAgICAgICBQeV9UWVBFKHVuaWNvZGUpLT50cF9mcmVlKChQeU9iamVjdCAqKXVuaWNvZGUpOwotICAgIH0KKyAgICBpZiAoX1B5VW5pY29kZV9IQVNfV1NUUl9NRU1PUlkodW5pY29kZSkpCisgICAgICAgIFB5T2JqZWN0X0RFTChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgIGlmIChfUHlVbmljb2RlX0hBU19VVEY4X01FTU9SWSh1bmljb2RlKSkKKyAgICAgICAgUHlPYmplY3RfREVMKF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSk7CisgICAgaWYgKCFQeVVuaWNvZGVfSVNfQ09NUEFDVCh1bmljb2RlKSAmJiBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpKQorICAgICAgICBQeU9iamVjdF9ERUwoX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSk7CisKKyAgICBQeV9UWVBFKHVuaWNvZGUpLT50cF9mcmVlKHVuaWNvZGUpOwogfQogCi1zdGF0aWMKLWludCBfUHlVbmljb2RlX1Jlc2l6ZShQeVVuaWNvZGVPYmplY3QgKip1bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKKyNpZmRlZiBQeV9ERUJVRworc3RhdGljIGludAordW5pY29kZV9pc19zaW5nbGV0b24oUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgcmVnaXN0ZXIgUHlVbmljb2RlT2JqZWN0ICp2OwotCi0gICAgLyogQXJndW1lbnQgY2hlY2tzICovCi0gICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpID0gKFB5QVNDSUlPYmplY3QgKil1bmljb2RlOworICAgIGlmICh1bmljb2RlID09IHVuaWNvZGVfZW1wdHkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChhc2NpaS0+c3RhdGUua2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCAmJiBhc2NpaS0+bGVuZ3RoID09IDEpCisgICAgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCAwKTsKKyAgICAgICAgaWYgKGNoIDwgMjU2ICYmIHVuaWNvZGVfbGF0aW4xW2NoXSA9PSB1bmljb2RlKQorICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIHYgPSAqdW5pY29kZTsKLSAgICBpZiAodiA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodikgfHwgUHlfUkVGQ05UKHYpICE9IDEgfHwgbGVuZ3RoIDwgMCkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgogCi0gICAgLyogUmVzaXppbmcgdW5pY29kZV9lbXB0eSBhbmQgc2luZ2xlIGNoYXJhY3RlciBvYmplY3RzIGlzIG5vdAotICAgICAgIHBvc3NpYmxlIHNpbmNlIHRoZXNlIGFyZSBiZWluZyBzaGFyZWQuIFdlIHNpbXBseSByZXR1cm4gYSBmcmVzaAotICAgICAgIGNvcHkgd2l0aCB0aGUgc2FtZSBVbmljb2RlIGNvbnRlbnQuICovCi0gICAgaWYgKHYtPmxlbmd0aCAhPSBsZW5ndGggJiYKLSAgICAgICAgKHYgPT0gdW5pY29kZV9lbXB0eSB8fCB2LT5sZW5ndGggPT0gMSkpIHsKLSAgICAgICAgUHlVbmljb2RlT2JqZWN0ICp3ID0gX1B5VW5pY29kZV9OZXcobGVuZ3RoKTsKLSAgICAgICAgaWYgKHcgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHctPnN0ciwgdi0+c3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoIDwgdi0+bGVuZ3RoID8gbGVuZ3RoIDogdi0+bGVuZ3RoKTsKLSAgICAgICAgUHlfREVDUkVGKCp1bmljb2RlKTsKLSAgICAgICAgKnVuaWNvZGUgPSB3Oworc3RhdGljIGludAordW5pY29kZV9tb2RpZmlhYmxlKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHVuaWNvZGUpKTsKKyAgICBpZiAoUHlfUkVGQ05UKHVuaWNvZGUpICE9IDEpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChfUHlVbmljb2RlX0hBU0godW5pY29kZSkgIT0gLTEpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQodW5pY29kZSkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3QodW5pY29kZSkpCisgICAgICAgIHJldHVybiAwOworI2lmZGVmIFB5X0RFQlVHCisgICAgLyogc2luZ2xldG9uIHJlZmNvdW50IGlzIGdyZWF0ZXIgdGhhbiAxICovCisgICAgYXNzZXJ0KCF1bmljb2RlX2lzX3NpbmdsZXRvbih1bmljb2RlKSk7CisjZW5kaWYKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAordW5pY29kZV9yZXNpemUoUHlPYmplY3QgKipwX3VuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQoreworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIFB5X3NzaXplX3Qgb2xkX2xlbmd0aDsKKworICAgIGFzc2VydChwX3VuaWNvZGUgIT0gTlVMTCk7CisgICAgdW5pY29kZSA9ICpwX3VuaWNvZGU7CisKKyAgICBhc3NlcnQodW5pY29kZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoMCA8PSBsZW5ndGgpOworCisgICAgaWYgKF9QeVVuaWNvZGVfS0lORCh1bmljb2RlKSA9PSBQeVVuaWNvZGVfV0NIQVJfS0lORCkKKyAgICAgICAgb2xkX2xlbmd0aCA9IFB5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICBlbHNlCisgICAgICAgIG9sZF9sZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAob2xkX2xlbmd0aCA9PSBsZW5ndGgpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGxlbmd0aCA9PSAwKSB7CisgICAgICAgIFB5X0RFQ1JFRigqcF91bmljb2RlKTsKKyAgICAgICAgKnBfdW5pY29kZSA9IHVuaWNvZGVfZW1wdHk7CisgICAgICAgIFB5X0lOQ1JFRigqcF91bmljb2RlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgLyogTm90ZSB0aGF0IHdlIGRvbid0IGhhdmUgdG8gbW9kaWZ5ICp1bmljb2RlIGZvciB1bnNoYXJlZCBVbmljb2RlCi0gICAgICAgb2JqZWN0cywgc2luY2Ugd2UgY2FuIG1vZGlmeSB0aGVtIGluLXBsYWNlLiAqLwotICAgIHJldHVybiB1bmljb2RlX3Jlc2l6ZSh2LCBsZW5ndGgpOworICAgIGlmICghdW5pY29kZV9tb2RpZmlhYmxlKHVuaWNvZGUpKSB7CisgICAgICAgIFB5T2JqZWN0ICpjb3B5ID0gcmVzaXplX2NvcHkodW5pY29kZSwgbGVuZ3RoKTsKKyAgICAgICAgaWYgKGNvcHkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgUHlfREVDUkVGKCpwX3VuaWNvZGUpOworICAgICAgICAqcF91bmljb2RlID0gY29weTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKSB7CisgICAgICAgIFB5T2JqZWN0ICpuZXdfdW5pY29kZSA9IHJlc2l6ZV9jb21wYWN0KHVuaWNvZGUsIGxlbmd0aCk7CisgICAgICAgIGlmIChuZXdfdW5pY29kZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAqcF91bmljb2RlID0gbmV3X3VuaWNvZGU7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzaXplX2lucGxhY2UodW5pY29kZSwgbGVuZ3RoKTsKIH0KIAotaW50IFB5VW5pY29kZV9SZXNpemUoUHlPYmplY3QgKip1bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKK2ludAorUHlVbmljb2RlX1Jlc2l6ZShQeU9iamVjdCAqKnBfdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIF9QeVVuaWNvZGVfUmVzaXplKChQeVVuaWNvZGVPYmplY3QgKiopdW5pY29kZSwgbGVuZ3RoKTsKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBpZiAocF91bmljb2RlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgdW5pY29kZSA9ICpwX3VuaWNvZGU7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpIHx8IGxlbmd0aCA8IDApCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gdW5pY29kZV9yZXNpemUocF91bmljb2RlLCBsZW5ndGgpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21Vbmljb2RlKGNvbnN0IFB5X1VOSUNPREUgKnUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKK3N0YXRpYyBpbnQKK3VuaWNvZGVfd2lkZW4oUHlPYmplY3QgKipwX3VuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWF4Y2hhcikKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKCpwX3VuaWNvZGUpKTsKKyAgICBhc3NlcnQobGVuZ3RoIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpwX3VuaWNvZGUpKTsKKyAgICBpZiAobWF4Y2hhciA8PSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoKnBfdW5pY29kZSkpCisgICAgICAgIHJldHVybiAwOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9OZXcoUHlVbmljb2RlX0dFVF9MRU5HVEgoKnBfdW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjaGFyKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXN1bHQsIDAsICpwX3VuaWNvZGUsIDAsIGxlbmd0aCk7CisgICAgUHlfREVDUkVGKCpwX3VuaWNvZGUpOworICAgICpwX3VuaWNvZGUgPSByZXN1bHQ7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3VuaWNvZGVfcHV0Y2hhcihQeU9iamVjdCAqKnBfdW5pY29kZSwgUHlfc3NpemVfdCAqcG9zLAorICAgICAgICAgICAgICAgIFB5X1VDUzQgY2gpCit7CisgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKKyAgICBpZiAodW5pY29kZV93aWRlbihwX3VuaWNvZGUsICpwb3MsIGNoKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQoKnBfdW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKCpwX3VuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAoKnBvcykrKywgY2gpOworICAgIHJldHVybiAwOworfQorCisvKiBDb3B5IGEgQVNDSUkgb3IgbGF0aW4xIGNoYXIqIHN0cmluZyBpbnRvIGEgUHl0aG9uIFVuaWNvZGUgc3RyaW5nLgorCisgICBXQVJOSU5HOiBUaGUgZnVuY3Rpb24gZG9lc24ndCBjb3B5IHRoZSB0ZXJtaW5hdGluZyBudWxsIGNoYXJhY3RlciBhbmQKKyAgIGRvZXNuJ3QgY2hlY2sgdGhlIG1heGltdW0gY2hhcmFjdGVyIChtYXkgd3JpdGUgYSBsYXRpbjEgY2hhcmFjdGVyIGluIGFuCisgICBBU0NJSSBzdHJpbmcpLiAqLworc3RhdGljIHZvaWQKK3VuaWNvZGVfd3JpdGVfY3N0cihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuKQoreworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICBjb25zdCBjaGFyICplbmQgPSBzdHIgKyBsZW47CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiB7CisgICAgICAgIGFzc2VydChpbmRleCArIGxlbiA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgICAgIG1lbWNweSgoY2hhciAqKSBkYXRhICsgaW5kZXgsIHN0ciwgbGVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IHsKKyAgICAgICAgUHlfVUNTMiAqc3RhcnQgPSAoUHlfVUNTMiAqKWRhdGEgKyBpbmRleDsKKyAgICAgICAgUHlfVUNTMiAqdWNzMiA9IHN0YXJ0OworICAgICAgICBhc3NlcnQoaW5kZXggPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworCisgICAgICAgIGZvciAoOyBzdHIgPCBlbmQ7ICsrdWNzMiwgKytzdHIpCisgICAgICAgICAgICAqdWNzMiA9IChQeV9VQ1MyKSpzdHI7CisKKyAgICAgICAgYXNzZXJ0KCh1Y3MyIC0gc3RhcnQpIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgUHlfVUNTNCAqc3RhcnQgPSAoUHlfVUNTNCAqKWRhdGEgKyBpbmRleDsKKyAgICAgICAgUHlfVUNTNCAqdWNzNCA9IHN0YXJ0OworICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgIGFzc2VydChpbmRleCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisKKyAgICAgICAgZm9yICg7IHN0ciA8IGVuZDsgKyt1Y3M0LCArK3N0cikKKyAgICAgICAgICAgICp1Y3M0ID0gKFB5X1VDUzQpKnN0cjsKKworICAgICAgICBhc3NlcnQoKHVjczQgLSBzdGFydCkgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgIH0KKyAgICB9Cit9CisKKworc3RhdGljIFB5T2JqZWN0KgorZ2V0X2xhdGluMV9jaGFyKHVuc2lnbmVkIGNoYXIgY2gpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGUgPSB1bmljb2RlX2xhdGluMVtjaF07CisgICAgaWYgKCF1bmljb2RlKSB7CisgICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KDEsIGNoKTsKKyAgICAgICAgaWYgKCF1bmljb2RlKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpWzBdID0gY2g7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMSkpOworICAgICAgICB1bmljb2RlX2xhdGluMVtjaF0gPSB1bmljb2RlOworICAgIH0KKyAgICBQeV9JTkNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHVuaWNvZGU7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gcm9tVW5pY29kZShjb25zdCBQeV9VTklDT0RFICp1LCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgUHlfVUNTNCBtYXhjaGFyID0gMDsKKyAgICBQeV9zc2l6ZV90IG51bV9zdXJyb2dhdGVzOworCisgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCopX1B5VW5pY29kZV9OZXcoc2l6ZSk7CiAKICAgICAvKiBJZiB0aGUgVW5pY29kZSBkYXRhIGlzIGtub3duIGF0IGNvbnN0cnVjdGlvbiB0aW1lLCB3ZSBjYW4gYXBwbHkKICAgICAgICBzb21lIG9wdGltaXphdGlvbnMgd2hpY2ggc2hhcmUgY29tbW9ubHkgdXNlZCBvYmplY3RzLiAqLwotICAgIGlmICh1ICE9IE5VTEwpIHsKIAotICAgICAgICAvKiBPcHRpbWl6YXRpb24gZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICAgICAgaWYgKHNpemUgPT0gMCAmJiB1bmljb2RlX2VtcHR5ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlX2VtcHR5OwotICAgICAgICB9Ci0KLSAgICAgICAgLyogU2luZ2xlIGNoYXJhY3RlciBVbmljb2RlIG9iamVjdHMgaW4gdGhlIExhdGluLTEgcmFuZ2UgYXJlCi0gICAgICAgICAgIHNoYXJlZCB3aGVuIHVzaW5nIHRoaXMgY29uc3RydWN0b3IgKi8KLSAgICAgICAgaWYgKHNpemUgPT0gMSAmJiAqdSA8IDI1NikgewotICAgICAgICAgICAgdW5pY29kZSA9IHVuaWNvZGVfbGF0aW4xWyp1XTsKLSAgICAgICAgICAgIGlmICghdW5pY29kZSkgewotICAgICAgICAgICAgICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldygxKTsKLSAgICAgICAgICAgICAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIHVuaWNvZGUtPnN0clswXSA9ICp1OwotICAgICAgICAgICAgICAgIHVuaWNvZGVfbGF0aW4xWyp1XSA9IHVuaWNvZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLSAgICAgICAgfQorICAgIC8qIE9wdGltaXphdGlvbiBmb3IgZW1wdHkgc3RyaW5ncyAqLworICAgIGlmIChzaXplID09IDAgJiYgdW5pY29kZV9lbXB0eSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CiAgICAgfQogCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOworICAgIC8qIFNpbmdsZSBjaGFyYWN0ZXIgVW5pY29kZSBvYmplY3RzIGluIHRoZSBMYXRpbi0xIHJhbmdlIGFyZQorICAgICAgIHNoYXJlZCB3aGVuIHVzaW5nIHRoaXMgY29uc3RydWN0b3IgKi8KKyAgICBpZiAoc2l6ZSA9PSAxICYmICp1IDwgMjU2KQorICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKSp1KTsKKworICAgIC8qIElmIG5vdCBlbXB0eSBhbmQgbm90IHNpbmdsZSBjaGFyYWN0ZXIsIGNvcHkgdGhlIFVuaWNvZGUgZGF0YQorICAgICAgIGludG8gdGhlIG5ldyBvYmplY3QgKi8KKyAgICBpZiAoZmluZF9tYXhjaGFyX3N1cnJvZ2F0ZXModSwgdSArIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhjaGFyLCAmbnVtX3N1cnJvZ2F0ZXMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KHNpemUgLSBudW1fc3Vycm9nYXRlcywgbWF4Y2hhcik7CiAgICAgaWYgKCF1bmljb2RlKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIENvcHkgdGhlIFVuaWNvZGUgZGF0YSBpbnRvIHRoZSBuZXcgb2JqZWN0ICovCi0gICAgaWYgKHUgIT0gTlVMTCkKLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHVuaWNvZGUtPnN0ciwgdSwgc2l6ZSk7CisgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORCh1bmljb2RlKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VTklDT0RFLCB1bnNpZ25lZCBjaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LCB1ICsgc2l6ZSwgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorI2lmIFB5X1VOSUNPREVfU0laRSA9PSAyCisgICAgICAgIFB5X01FTUNQWShQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDIpOworI2Vsc2UKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VOSUNPREUsIFB5X1VDUzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUsIHUgKyBzaXplLCBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgICAgIC8qIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSB3aGljaCBoYXMgdG8gcHJvY2VzcyBzdXJyb2dhdGVzLCB0aHVzCisgICAgICAgICAgIGEgc2ltcGxlIGNvcHkgbG9vcCBpcyBub3QgZW5vdWdoIGFuZCB3ZSBuZWVkIGEgZnVuY3Rpb24uICovCisgICAgICAgIHVuaWNvZGVfY29udmVydF93Y2hhcl90b191Y3M0KHUsIHUgKyBzaXplLCB1bmljb2RlKTsKKyNlbHNlCisgICAgICAgIGFzc2VydChudW1fc3Vycm9nYXRlcyA9PSAwKTsKKyAgICAgICAgUHlfTUVNQ1BZKFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogNCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDAgJiYgIkltcG9zc2libGUgc3RhdGUiKTsKKyAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodW5pY29kZSk7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoY29uc3QgY2hhciAqdSwgUHlfc3NpemVfdCBzaXplKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKGNvbnN0IGNoYXIgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0KICAgICBpZiAoc2l6ZSA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICAvKiBJZiB0aGUgVW5pY29kZSBkYXRhIGlzIGtub3duIGF0IGNvbnN0cnVjdGlvbiB0aW1lLCB3ZSBjYW4gYXBwbHkKLSAgICAgICBzb21lIG9wdGltaXphdGlvbnMgd2hpY2ggc2hhcmUgY29tbW9ubHkgdXNlZCBvYmplY3RzLgotICAgICAgIEFsc28sIHRoaXMgbWVhbnMgdGhlIGlucHV0IG11c3QgYmUgVVRGLTgsIHNvIGZhbGwgYmFjayB0byB0aGUKLSAgICAgICBVVEYtOCBkZWNvZGVyIGF0IHRoZSBlbmQuICovCi0gICAgaWYgKHUgIT0gTlVMTCkgewotCi0gICAgICAgIC8qIE9wdGltaXphdGlvbiBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgICAgICBpZiAoc2l6ZSA9PSAwICYmIHVuaWNvZGVfZW1wdHkgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGVfZW1wdHk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBTaW5nbGUgY2hhcmFjdGVycyBhcmUgc2hhcmVkIHdoZW4gdXNpbmcgdGhpcyBjb25zdHJ1Y3Rvci4KLSAgICAgICAgICAgUmVzdHJpY3QgdG8gQVNDSUksIHNpbmNlIHRoZSBpbnB1dCBtdXN0IGJlIFVURi04LiAqLwotICAgICAgICBpZiAoc2l6ZSA9PSAxICYmIFB5X0NIQVJNQVNLKCp1KSA8IDEyOCkgewotICAgICAgICAgICAgdW5pY29kZSA9IHVuaWNvZGVfbGF0aW4xW1B5X0NIQVJNQVNLKCp1KV07Ci0gICAgICAgICAgICBpZiAoIXVuaWNvZGUpIHsKLSAgICAgICAgICAgICAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoMSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF1bmljb2RlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB1bmljb2RlLT5zdHJbMF0gPSBQeV9DSEFSTUFTSygqdSk7Ci0gICAgICAgICAgICAgICAgdW5pY29kZV9sYXRpbjFbUHlfQ0hBUk1BU0soKnUpXSA9IHVuaWNvZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOCh1LCBzaXplLCBOVUxMKTsKLSAgICB9Ci0KLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIGlmICh1ICE9IE5VTEwpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHUsIHNpemUsIE5VTEwsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKV9QeVVuaWNvZGVfTmV3KHNpemUpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21TdHJpbmcoY29uc3QgY2hhciAqdSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gcm9tU3RyaW5nKGNvbnN0IGNoYXIgKnUpCiB7CiAgICAgc2l6ZV90IHNpemUgPSBzdHJsZW4odSk7CiAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgImlucHV0IHRvbyBsb25nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bCh1LCAoUHlfc3NpemVfdClzaXplLCBOVUxMLCBOVUxMKTsKK30KIAotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUodSwgc2l6ZSk7CitQeU9iamVjdCAqCitfUHlVbmljb2RlX0Zyb21JZChfUHlfSWRlbnRpZmllciAqaWQpCit7CisgICAgaWYgKCFpZC0+b2JqZWN0KSB7CisgICAgICAgIGlkLT5vYmplY3QgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGlkLT5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihpZC0+c3RyaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghaWQtPm9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZSgmaWQtPm9iamVjdCk7CisgICAgICAgIGFzc2VydCghaWQtPm5leHQpOworICAgICAgICBpZC0+bmV4dCA9IHN0YXRpY19zdHJpbmdzOworICAgICAgICBzdGF0aWNfc3RyaW5ncyA9IGlkOworICAgIH0KKyAgICByZXR1cm4gaWQtPm9iamVjdDsKK30KKwordm9pZAorX1B5VW5pY29kZV9DbGVhclN0YXRpY1N0cmluZ3MoKQoreworICAgIF9QeV9JZGVudGlmaWVyICppOworICAgIGZvciAoaSA9IHN0YXRpY19zdHJpbmdzOyBpOyBpID0gaS0+bmV4dCkgeworICAgICAgICBQeV9ERUNSRUYoaS0+b2JqZWN0KTsKKyAgICAgICAgaS0+b2JqZWN0ID0gTlVMTDsKKyAgICAgICAgaS0+bmV4dCA9IE5VTEw7CisgICAgfQorfQorCisvKiBJbnRlcm5hbCBmdW5jdGlvbiwgZG9lc24ndCBjaGVjayBtYXhpbXVtIGNoYXJhY3RlciAqLworCitQeU9iamVjdCoKK19QeVVuaWNvZGVfRnJvbUFTQ0lJKGNvbnN0IGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKWJ1ZmZlcjsKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgYXNzZXJ0KHNbMF0gPCAxMjgpOworI2VuZGlmCisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoc1swXSk7CisgICAgfQorICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CisgICAgaWYgKCF1bmljb2RlKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtZW1jcHkoUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSksIHMsIHNpemUpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMSkpOworICAgIHJldHVybiB1bmljb2RlOworfQorCitzdGF0aWMgUHlfVUNTNAora2luZF9tYXhjaGFyX2xpbWl0KHVuc2lnbmVkIGludCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiAweDgwOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiAweDEwMDsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gMHgxMDAwMDsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCAmJiAiaW52YWxpZCBraW5kIik7CisgICAgICAgIHJldHVybiBNQVhfVU5JQ09ERTsKKyAgICB9Cit9CisKK1B5X0xPQ0FMX0lOTElORShQeV9VQ1M0KQorYWxpZ25fbWF4Y2hhcihQeV9VQ1M0IG1heGNoYXIpCit7CisgICAgaWYgKG1heGNoYXIgPD0gMTI3KQorICAgICAgICByZXR1cm4gMTI3OworICAgIGVsc2UgaWYgKG1heGNoYXIgPD0gMjU1KQorICAgICAgICByZXR1cm4gMjU1OworICAgIGVsc2UgaWYgKG1heGNoYXIgPD0gNjU1MzUpCisgICAgICAgIHJldHVybiA2NTUzNTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBNQVhfVU5JQ09ERTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorX1B5VW5pY29kZV9Gcm9tVUNTMShjb25zdCB1bnNpZ25lZCBjaGFyKiB1LCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICB1bnNpZ25lZCBjaGFyIG1heF9jaGFyOworCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKyAgICBhc3NlcnQoc2l6ZSA+IDApOworICAgIGlmIChzaXplID09IDEpCisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIodVswXSk7CisKKyAgICBtYXhfY2hhciA9IHVjczFsaWJfZmluZF9tYXhfY2hhcih1LCB1ICsgc2l6ZSk7CisgICAgcmVzID0gUHlVbmljb2RlX05ldyhzaXplLCBtYXhfY2hhcik7CisgICAgaWYgKCFyZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1lbWNweShQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpLCB1LCBzaXplKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeVVuaWNvZGVfRnJvbVVDUzIoY29uc3QgUHlfVUNTMiAqdSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlfVUNTMiBtYXhfY2hhcjsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisgICAgYXNzZXJ0KHNpemUgPiAwKTsKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSB1WzBdOworICAgICAgICBpZiAoY2ggPCAyNTYpCisgICAgICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKWNoKTsKKworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KDEsIGNoKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORChyZXMpLCBQeVVuaWNvZGVfREFUQShyZXMpLCAwLCBjaCk7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisgICAgbWF4X2NoYXIgPSB1Y3MybGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIHNpemUpOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgbWF4X2NoYXIpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobWF4X2NoYXIgPj0gMjU2KQorICAgICAgICBtZW1jcHkoUHlVbmljb2RlXzJCWVRFX0RBVEEocmVzKSwgdSwgc2l6ZW9mKFB5X1VDUzIpKnNpemUpOworICAgIGVsc2UgeworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICBQeV9VQ1MyLCBQeV9VQ1MxLCB1LCB1ICsgc2l6ZSwgUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKSk7CisgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0KgorX1B5VW5pY29kZV9Gcm9tVUNTNChjb25zdCBQeV9VQ1M0ICp1LCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeV9VQ1M0IG1heF9jaGFyOworCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKyAgICBhc3NlcnQoc2l6ZSA+IDApOworICAgIGlmIChzaXplID09IDEpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IHVbMF07CisgICAgICAgIGlmIChjaCA8IDI1NikKKyAgICAgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoKHVuc2lnbmVkIGNoYXIpY2gpOworCisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoMSwgY2gpOworICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHJlcyksIFB5VW5pY29kZV9EQVRBKHJlcyksIDAsIGNoKTsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICBtYXhfY2hhciA9IHVjczRsaWJfZmluZF9tYXhfY2hhcih1LCB1ICsgc2l6ZSk7CisgICAgcmVzID0gUHlVbmljb2RlX05ldyhzaXplLCBtYXhfY2hhcik7CisgICAgaWYgKCFyZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChtYXhfY2hhciA8IDI1NikKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VDUzQsIFB5X1VDUzEsIHUsIHUgKyBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKSk7CisgICAgZWxzZSBpZiAobWF4X2NoYXIgPCAweDEwMDAwKQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTNCwgUHlfVUNTMiwgdSwgdSArIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShyZXMpKTsKKyAgICBlbHNlCisgICAgICAgIG1lbWNweShQeVVuaWNvZGVfNEJZVEVfREFUQShyZXMpLCB1LCBzaXplb2YoUHlfVUNTNCkqc2l6ZSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeU9iamVjdCoKK1B5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoaW50IGtpbmQsIGNvbnN0IHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQoreworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInNpemUgbXVzdCBiZSBwb3NpdGl2ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRnJvbVVDUzEoYnVmZmVyLCBzaXplKTsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Gcm9tVUNTMihidWZmZXIsIHNpemUpOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21VQ1M0KGJ1ZmZlciwgc2l6ZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiaW52YWxpZCBraW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworUHlfVUNTNAorX1B5VW5pY29kZV9GaW5kTWF4Q2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKnN0YXJ0cHRyLCAqZW5kcHRyOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CisgICAgYXNzZXJ0KDAgPD0gc3RhcnQpOworICAgIGFzc2VydChlbmQgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgIGFzc2VydChzdGFydCA8PSBlbmQpOworCisgICAgaWYgKHN0YXJ0ID09IDAgJiYgZW5kID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpOworCisgICAgaWYgKHN0YXJ0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuIDEyNzsKKworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgIHJldHVybiAxMjc7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgc3RhcnRwdHIgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICBlbmRwdHIgPSAoY2hhciAqKXN0YXJ0cHRyICsgZW5kICoga2luZDsKKyAgICBzdGFydHB0ciA9IChjaGFyICopc3RhcnRwdHIgKyBzdGFydCAqIGtpbmQ7CisgICAgc3dpdGNoKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzMWxpYl9maW5kX21heF9jaGFyKHN0YXJ0cHRyLCBlbmRwdHIpOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3MybGliX2ZpbmRfbWF4X2NoYXIoc3RhcnRwdHIsIGVuZHB0cik7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczRsaWJfZmluZF9tYXhfY2hhcihzdGFydHB0ciwgZW5kcHRyKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworLyogRW5zdXJlIHRoYXQgYSBzdHJpbmcgdXNlcyB0aGUgbW9zdCBlZmZpY2llbnQgc3RvcmFnZSwgaWYgaXQgaXMgbm90IHRoZQorICAgY2FzZTogY3JlYXRlIGEgbmV3IHN0cmluZyB3aXRoIG9mIHRoZSByaWdodCBraW5kLiBXcml0ZSBOVUxMIGludG8gKnBfdW5pY29kZQorICAgb24gZXJyb3IuICovCitzdGF0aWMgdm9pZAordW5pY29kZV9hZGp1c3RfbWF4Y2hhcihQeU9iamVjdCAqKnBfdW5pY29kZSkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgKmNvcHk7CisgICAgUHlfVUNTNCBtYXhfY2hhcjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKKworICAgIGFzc2VydChwX3VuaWNvZGUgIT0gTlVMTCk7CisgICAgdW5pY29kZSA9ICpwX3VuaWNvZGU7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzEgKnUgPSBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgbWF4X2NoYXIgPSB1Y3MxbGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIGxlbik7CisgICAgICAgIGlmIChtYXhfY2hhciA+PSAxMjgpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTMiAqdSA9IFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICBtYXhfY2hhciA9IHVjczJsaWJfZmluZF9tYXhfY2hhcih1LCB1ICsgbGVuKTsKKyAgICAgICAgaWYgKG1heF9jaGFyID49IDI1NikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgKnUgPSBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBtYXhfY2hhciA9IHVjczRsaWJfZmluZF9tYXhfY2hhcih1LCB1ICsgbGVuKTsKKyAgICAgICAgaWYgKG1heF9jaGFyID49IDB4MTAwMDApCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvcHkgPSBQeVVuaWNvZGVfTmV3KGxlbiwgbWF4X2NoYXIpOworICAgIGlmIChjb3B5ICE9IE5VTEwpCisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKGNvcHksIDAsIHVuaWNvZGUsIDAsIGxlbik7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICpwX3VuaWNvZGUgPSBjb3B5OworfQorCitQeU9iamVjdCoKK19QeVVuaWNvZGVfQ29weShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKyAgICBQeU9iamVjdCAqY29weTsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBjb3B5ID0gUHlVbmljb2RlX05ldyhsZW5ndGgsIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSk7CisgICAgaWYgKCFjb3B5KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoY29weSkgPT0gUHlVbmljb2RlX0tJTkQodW5pY29kZSkpOworCisgICAgUHlfTUVNQ1BZKFB5VW5pY29kZV9EQVRBKGNvcHkpLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAgbGVuZ3RoICogUHlVbmljb2RlX0tJTkQodW5pY29kZSkpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koY29weSwgMSkpOworICAgIHJldHVybiBjb3B5OworfQorCisKKy8qIFdpZGVuIFVuaWNvZGUgb2JqZWN0cyB0byBsYXJnZXIgYnVmZmVycy4gRG9uJ3Qgd3JpdGUgdGVybWluYXRpbmcgbnVsbAorICAgY2hhcmFjdGVyLiBSZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KKwordm9pZCoKK19QeVVuaWNvZGVfQXNLaW5kKFB5T2JqZWN0ICpzLCB1bnNpZ25lZCBpbnQga2luZCkKK3sKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICB2b2lkICpyZXN1bHQ7CisgICAgdW5zaWduZWQgaW50IHNraW5kOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzKTsKKyAgICBza2luZCA9IFB5VW5pY29kZV9LSU5EKHMpOworICAgIGlmIChza2luZCA+PSBraW5kKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImludmFsaWQgd2lkZW5pbmcgYXR0ZW1wdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmVzdWx0ID0gUHlNZW1fTWFsbG9jKGxlbiAqIHNpemVvZihQeV9VQ1MyKSk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGFzc2VydChza2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgIFB5X1VDUzEsIFB5X1VDUzIsCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShzKSwKKyAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHMpICsgbGVuLAorICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSBQeU1lbV9NYWxsb2MobGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgaWYgKHNraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICAgICAgUHlfVUNTMiwgUHlfVUNTNCwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShzKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShzKSArIGxlbiwKKyAgICAgICAgICAgICAgICByZXN1bHQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KHNraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgICAgICBQeV9VQ1MxLCBQeV9VQ1M0LAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHMpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHMpICsgbGVuLAorICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiaW52YWxpZCBraW5kIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeV9VQ1M0KgorYXNfdWNzNChQeU9iamVjdCAqc3RyaW5nLCBQeV9VQ1M0ICp0YXJnZXQsIFB5X3NzaXplX3QgdGFyZ2V0c2l6ZSwKKyAgICAgICAgaW50IGNvcHlfbnVsbCkKK3sKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuLCB0YXJnZXRsZW47CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOworICAgIHRhcmdldGxlbiA9IGxlbjsKKyAgICBpZiAoY29weV9udWxsKQorICAgICAgICB0YXJnZXRsZW4rKzsKKyAgICBpZiAoIXRhcmdldCkgeworICAgICAgICBpZiAoUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVUNTNCkgPCB0YXJnZXRsZW4pIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB0YXJnZXQgPSBQeU1lbV9NYWxsb2ModGFyZ2V0bGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHRhcmdldHNpemUgPCB0YXJnZXRsZW4pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIGlzIGxvbmdlciB0aGFuIHRoZSBidWZmZXIiKTsKKyAgICAgICAgICAgIGlmIChjb3B5X251bGwgJiYgMCA8IHRhcmdldHNpemUpCisgICAgICAgICAgICAgICAgdGFyZ2V0WzBdID0gMDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzEgKnN0YXJ0ID0gKFB5X1VDUzEgKikgZGF0YTsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VDUzEsIFB5X1VDUzQsIHN0YXJ0LCBzdGFydCArIGxlbiwgdGFyZ2V0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MyICpzdGFydCA9IChQeV9VQ1MyICopIGRhdGE7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1MyLCBQeV9VQ1M0LCBzdGFydCwgc3RhcnQgKyBsZW4sIHRhcmdldCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgIFB5X01FTUNQWSh0YXJnZXQsIGRhdGEsIGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgfQorICAgIGlmIChjb3B5X251bGwpCisgICAgICAgIHRhcmdldFtsZW5dID0gMDsKKyAgICByZXR1cm4gdGFyZ2V0OworfQorCitQeV9VQ1M0KgorUHlVbmljb2RlX0FzVUNTNChQeU9iamVjdCAqc3RyaW5nLCBQeV9VQ1M0ICp0YXJnZXQsIFB5X3NzaXplX3QgdGFyZ2V0c2l6ZSwKKyAgICAgICAgICAgICAgICAgaW50IGNvcHlfbnVsbCkKK3sKKyAgICBpZiAodGFyZ2V0ID09IE5VTEwgfHwgdGFyZ2V0c2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYXNfdWNzNChzdHJpbmcsIHRhcmdldCwgdGFyZ2V0c2l6ZSwgY29weV9udWxsKTsKK30KKworUHlfVUNTNCoKK1B5VW5pY29kZV9Bc1VDUzRDb3B5KFB5T2JqZWN0ICpzdHJpbmcpCit7CisgICAgcmV0dXJuIGFzX3VjczQoc3RyaW5nLCBOVUxMLCAwLCAxKTsKIH0KIAogI2lmZGVmIEhBVkVfV0NIQVJfSAogCi0jaWYgKFB5X1VOSUNPREVfU0laRSA9PSAyKSAmJiBkZWZpbmVkKFNJWkVPRl9XQ0hBUl9UKSAmJiAoU0laRU9GX1dDSEFSX1QgPT0gNCkKLSMgZGVmaW5lIENPTlZFUlRfV0NIQVJfVE9fU1VSUk9HQVRFUwotI2VuZGlmCi0KLSNpZmRlZiBDT05WRVJUX1dDSEFSX1RPX1NVUlJPR0FURVMKLQotLyogSGVyZSBzaXplb2Yod2NoYXJfdCkgaXMgNCBidXQgUHlfVU5JQ09ERV9TSVpFID09IDIsIHNvIHdlIG5lZWQKLSAgIHRvIGNvbnZlcnQgZnJvbSBVVEYzMiB0byBVVEYxNi4gKi8KLQotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocmVnaXN0ZXIgY29uc3Qgd2NoYXJfdCAqdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gcm9tV2lkZUNoYXIocmVnaXN0ZXIgY29uc3Qgd2NoYXJfdCAqdywgUHlfc3NpemVfdCBzaXplKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgUHlfc3NpemVfdCBhbGxvYzsKLSAgICBjb25zdCB3Y2hhcl90ICpvcmlnX3c7Ci0KICAgICBpZiAodyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChzaXplID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKHNpemUgPT0gLTEpIHsKLSAgICAgICAgc2l6ZSA9IHdjc2xlbih3KTsKLSAgICB9Ci0KLSAgICBhbGxvYyA9IHNpemU7Ci0gICAgb3JpZ193ID0gdzsKLSAgICBmb3IgKGkgPSBzaXplOyBpID4gMDsgaS0tKSB7Ci0gICAgICAgIGlmICgqdyA+IDB4RkZGRikKLSAgICAgICAgICAgIGFsbG9jKys7Ci0gICAgICAgIHcrKzsKLSAgICB9Ci0gICAgdyA9IG9yaWdfdzsKLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoYWxsb2MpOwotICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBDb3B5IHRoZSB3Y2hhcl90IGRhdGEgaW50byB0aGUgbmV3IG9iamVjdCAqLwotICAgIHsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqdTsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgICAgICBmb3IgKGkgPSBzaXplOyBpID4gMDsgaS0tKSB7Ci0gICAgICAgICAgICBpZiAoKncgPiAweEZGRkYpIHsKLSAgICAgICAgICAgICAgICB3Y2hhcl90IG9yZGluYWwgPSAqdysrOwotICAgICAgICAgICAgICAgIG9yZGluYWwgLT0gMHgxMDAwMDsKLSAgICAgICAgICAgICAgICAqdSsrID0gMHhEODAwIHwgKG9yZGluYWwgPj4gMTApOwotICAgICAgICAgICAgICAgICp1KysgPSAweERDMDAgfCAob3JkaW5hbCAmIDB4M0ZGKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqdSsrID0gKncrKzsKKyAgICAgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CiAgICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7Ci19Ci0KLSNlbHNlCi0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJlZ2lzdGVyIGNvbnN0IHdjaGFyX3QgKncsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCi17Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOwotCi0gICAgaWYgKHcgPT0gTlVMTCkgewotICAgICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTY0NywyOSArMjI1OCwxMCBAQAogICAgICAgICBzaXplID0gd2NzbGVuKHcpOwogICAgIH0KIAotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogQ29weSB0aGUgd2NoYXJfdCBkYXRhIGludG8gdGhlIG5ldyBvYmplY3QgKi8KLSNpZiBQeV9VTklDT0RFX1NJWkUgPT0gU0laRU9GX1dDSEFSX1QKLSAgICBtZW1jcHkodW5pY29kZS0+c3RyLCB3LCBzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKLSNlbHNlCi0gICAgewotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFICp1OwotICAgICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIHUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKLSAgICAgICAgZm9yIChpID0gc2l6ZTsgaSA+IDA7IGktLSkKLSAgICAgICAgICAgICp1KysgPSAqdysrOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSh3LCBzaXplKTsKIH0KIAotI2VuZGlmIC8qIENPTlZFUlRfV0NIQVJfVE9fU1VSUk9HQVRFUyAqLwotCi0jdW5kZWYgQ09OVkVSVF9XQ0hBUl9UT19TVVJST0dBVEVTCisjZW5kaWYgLyogSEFWRV9XQ0hBUl9IICovCiAKIHN0YXRpYyB2b2lkCiBtYWtlZm10KGNoYXIgKmZtdCwgaW50IGxvbmdmbGFnLCBpbnQgbG9uZ2xvbmdmbGFnLCBpbnQgc2l6ZV90ZmxhZywKQEAgLTcwNywxMCArMjI5OSw3MSBAQAogICAgICpmbXQgPSAnXDAnOwogfQogCi0jZGVmaW5lIGFwcGVuZHN0cmluZyhzdHJpbmcpIHtmb3IgKGNvcHkgPSBzdHJpbmc7KmNvcHk7KSAqcysrID0gKmNvcHkrKzt9CisvKiBoZWxwZXIgZm9yIFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpICovCiAKLS8qIHNpemUgb2YgZml4ZWQtc2l6ZSBidWZmZXIgZm9yIGZvcm1hdHRpbmcgc2luZ2xlIGFyZ3VtZW50cyAqLwotI2RlZmluZSBJVEVNX0JVRkZFUl9MRU4gMjEKK3N0YXRpYyBjb25zdCBjaGFyKgorcGFyc2VfZm9ybWF0X2ZsYWdzKGNvbnN0IGNoYXIgKmYsCisgICAgICAgICAgICAgICAgICAgaW50ICpwX3dpZHRoLCBpbnQgKnBfcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgIGludCAqcF9sb25nZmxhZywgaW50ICpwX2xvbmdsb25nZmxhZywgaW50ICpwX3NpemVfdGZsYWcpCit7CisgICAgaW50IHdpZHRoLCBwcmVjaXNpb24sIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWc7CisKKyAgICAvKiBwYXJzZSB0aGUgd2lkdGgucHJlY2lzaW9uIHBhcnQsIGUuZy4gIiUyLjVzIiA9PiB3aWR0aD0yLCBwcmVjaXNpb249NSAqLworICAgIGYrKzsKKyAgICB3aWR0aCA9IDA7CisgICAgd2hpbGUgKFB5X0lTRElHSVQoKHVuc2lnbmVkKSpmKSkKKyAgICAgICAgd2lkdGggPSAod2lkdGgqMTApICsgKmYrKyAtICcwJzsKKyAgICBwcmVjaXNpb24gPSAwOworICAgIGlmICgqZiA9PSAnLicpIHsKKyAgICAgICAgZisrOworICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQorICAgICAgICAgICAgcHJlY2lzaW9uID0gKHByZWNpc2lvbioxMCkgKyAqZisrIC0gJzAnOworICAgICAgICBpZiAoKmYgPT0gJyUnKSB7CisgICAgICAgICAgICAvKiAiJS4zJXMiID0+IGYgcG9pbnRzIHRvICIzIiAqLworICAgICAgICAgICAgZi0tOworICAgICAgICB9CisgICAgfQorICAgIGlmICgqZiA9PSAnXDAnKSB7CisgICAgICAgIC8qIGJvZ3VzIGZvcm1hdCAiJS4xIiA9PiBnbyBiYWNrd2FyZCwgZiBwb2ludHMgdG8gIjEiICovCisgICAgICAgIGYtLTsKKyAgICB9CisgICAgaWYgKHBfd2lkdGggIT0gTlVMTCkKKyAgICAgICAgKnBfd2lkdGggPSB3aWR0aDsKKyAgICBpZiAocF9wcmVjaXNpb24gIT0gTlVMTCkKKyAgICAgICAgKnBfcHJlY2lzaW9uID0gcHJlY2lzaW9uOworCisgICAgLyogSGFuZGxlICVsZCwgJWx1LCAlbGxkIGFuZCAlbGx1LiAqLworICAgIGxvbmdmbGFnID0gMDsKKyAgICBsb25nbG9uZ2ZsYWcgPSAwOworICAgIHNpemVfdGZsYWcgPSAwOworCisgICAgaWYgKCpmID09ICdsJykgeworICAgICAgICBpZiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScgfHwgZlsxXSA9PSAnaScpIHsKKyAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKKyAgICAgICAgICAgICsrZjsKKyAgICAgICAgfQorI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgIGVsc2UgaWYgKGZbMV0gPT0gJ2wnICYmCisgICAgICAgICAgICAgICAgIChmWzJdID09ICdkJyB8fCBmWzJdID09ICd1JyB8fCBmWzJdID09ICdpJykpIHsKKyAgICAgICAgICAgIGxvbmdsb25nZmxhZyA9IDE7CisgICAgICAgICAgICBmICs9IDI7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnLiAqLworICAgIGVsc2UgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScgfHwgZlsxXSA9PSAnaScpKSB7CisgICAgICAgIHNpemVfdGZsYWcgPSAxOworICAgICAgICArK2Y7CisgICAgfQorICAgIGlmIChwX2xvbmdmbGFnICE9IE5VTEwpCisgICAgICAgICpwX2xvbmdmbGFnID0gbG9uZ2ZsYWc7CisgICAgaWYgKHBfbG9uZ2xvbmdmbGFnICE9IE5VTEwpCisgICAgICAgICpwX2xvbmdsb25nZmxhZyA9IGxvbmdsb25nZmxhZzsKKyAgICBpZiAocF9zaXplX3RmbGFnICE9IE5VTEwpCisgICAgICAgICpwX3NpemVfdGZsYWcgPSBzaXplX3RmbGFnOworICAgIHJldHVybiBmOworfQorCiAvKiBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlcXVpcmVkIGZvciBvdXRwdXQgb2YgJWxkLiAgMjEgY2hhcmFjdGVycwogICAgYWxsb3dzIGZvciA2NC1iaXQgaW50ZWdlcnMgKGluIGRlY2ltYWwpIGFuZCBhbiBvcHRpb25hbCBzaWduLiAqLwogI2RlZmluZSBNQVhfTE9OR19DSEFSUyAyMQpAQCAtNzMxLDEwNiArMjM4NCwzNSBAQAogICAgIGludCBwcmVjaXNpb24gPSAwOwogICAgIGludCB6ZXJvcGFkOwogICAgIGNvbnN0IGNoYXIqIGY7Ci0gICAgUHlfVU5JQ09ERSAqczsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogICAgIC8qIHVzZWQgYnkgc3ByaW50ZiAqLwotICAgIGNoYXIgYnVmZmVyW0lURU1fQlVGRkVSX0xFTisxXTsKLSAgICAvKiB1c2UgYWJ1ZmZlciBpbnN0ZWFkIG9mIGJ1ZmZlciwgaWYgd2UgbmVlZCBtb3JlIHNwYWNlCi0gICAgICogKHdoaWNoIGNhbiBoYXBwZW4gaWYgdGhlcmUncyBhIGZvcm1hdCBzcGVjaWZpZXIgd2l0aCB3aWR0aCkuICovCi0gICAgY2hhciAqYWJ1ZmZlciA9IE5VTEw7Ci0gICAgY2hhciAqcmVhbGJ1ZmZlcjsKLSAgICBQeV9zc2l6ZV90IGFidWZmZXJzaXplID0gMDsKICAgICBjaGFyIGZtdFs2MV07IC8qIHNob3VsZCBiZSBlbm91Z2ggZm9yICUwd2lkdGgucHJlY2lzaW9ubGxkICovCi0gICAgY29uc3QgY2hhciAqY29weTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAxMjc7IC8qIHJlc3VsdCBpcyBBU0NJSSBieSBkZWZhdWx0ICovCisgICAgUHlfVUNTNCBhcmdtYXhjaGFyOworICAgIFB5X3NzaXplX3QgbnVtYmVyc2l6ZSA9IDA7CisgICAgY2hhciAqbnVtYmVycmVzdWx0cyA9IE5VTEw7CisgICAgY2hhciAqbnVtYmVycmVzdWx0ID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKIAogICAgIFB5X1ZBX0NPUFkoY291bnQsIHZhcmdzKTsKICAgICAvKiBzdGVwIDE6IGNvdW50IHRoZSBudW1iZXIgb2YgJVMvJVIvJUEvJXMgZm9ybWF0IHNwZWNpZmljYXRpb25zCiAgICAgICogKHdlIGNhbGwgUHlPYmplY3RfU3RyKCkvUHlPYmplY3RfUmVwcigpL1B5T2JqZWN0X0FTQ0lJKCkvCiAgICAgICogUHlVbmljb2RlX0RlY29kZVVURjgoKSBmb3IgdGhlc2Ugb2JqZWN0cyBvbmNlIGR1cmluZyBzdGVwIDMgYW5kIHB1dCB0aGUKLSAgICAgKiByZXN1bHQgaW4gYW4gYXJyYXkpICovCi0gICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7Ci0gICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICAgaWYgKCooZisxKT09JyUnKQotICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICBpZiAoKihmKzEpPT0nUycgfHwgKihmKzEpPT0nUicgfHwgKihmKzEpPT0nQScgfHwgKihmKzEpID09ICdWJykKLSAgICAgICAgICAgICAgICAgKytjYWxsY291bnQ7Ci0gICAgICAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKHVuc2lnbmVkKSpmKSkKLSAgICAgICAgICAgICAgICAgd2lkdGggPSAod2lkdGgqMTApICsgKmYrKyAtICcwJzsKLSAgICAgICAgICAgICB3aGlsZSAoKisrZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKHVuc2lnbmVkKSpmKSkKLSAgICAgICAgICAgICAgICAgOwotICAgICAgICAgICAgIGlmICgqZiA9PSAncycpCi0gICAgICAgICAgICAgICAgICsrY2FsbGNvdW50OwotICAgICAgICAgfQotICAgICAgICAgZWxzZSBpZiAoMTI4IDw9ICh1bnNpZ25lZCBjaGFyKSpmKSB7Ci0gICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIGV4cGVjdHMgYW4gQVNDSUktZW5jb2RlZCBmb3JtYXQgIgotICAgICAgICAgICAgICAgICJzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweCUwMngiLAotICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKSpmKTsKLSAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgIH0KLSAgICB9Ci0gICAgLyogc3RlcCAyOiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSByZXN1bHRzIG9mCi0gICAgICogUHlPYmplY3RfU3RyKCkvUHlPYmplY3RfUmVwcigpL1B5VW5pY29kZV9EZWNvZGVVVEY4KCkgY2FsbHMgKi8KLSAgICBpZiAoY2FsbGNvdW50KSB7Ci0gICAgICAgIGNhbGxyZXN1bHRzID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQeU9iamVjdCAqKSpjYWxsY291bnQpOwotICAgICAgICBpZiAoIWNhbGxyZXN1bHRzKSB7Ci0gICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgY2FsbHJlc3VsdCA9IGNhbGxyZXN1bHRzOwotICAgIH0KLSAgICAvKiBzdGVwIDM6IGZpZ3VyZSBvdXQgaG93IGxhcmdlIGEgYnVmZmVyIHdlIG5lZWQgKi8KKyAgICAgKiByZXN1bHQgaW4gYW4gYXJyYXkpCisgICAgICogYWxzbyBlc3RpbWF0ZSBhIHVwcGVyIGJvdW5kIGZvciBhbGwgdGhlIG51bWJlciBmb3JtYXRzIGluIHRoZSBzdHJpbmcsCisgICAgICogbnVtYmVycyB3aWxsIGJlIGZvcm1hdHRlZCBpbiBzdGVwIDMgYW5kIGJlIGtlcHQgaW4gYSAnXDAnLXNlcGFyYXRlZAorICAgICAqIGJ1ZmZlciBiZWZvcmUgcHV0dGluZyBldmVyeXRoaW5nIHRvZ2V0aGVyLiAqLwogICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgewogICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgIGludCBsb25nbG9uZ2ZsYWcgPSAwOwotI2VuZGlmCi0gICAgICAgICAgICBjb25zdCBjaGFyKiBwID0gZjsKLSAgICAgICAgICAgIHdpZHRoID0gMDsKLSAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgd2lkdGggPSAod2lkdGgqMTApICsgKmYrKyAtICcwJzsKLSAgICAgICAgICAgIHdoaWxlICgqKytmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgIDsKKyAgICAgICAgICAgIGludCBsb25nbG9uZ2ZsYWc7CisgICAgICAgICAgICAvKiBza2lwIHdpZHRoIG9yIHdpZHRoLnByZWNpc2lvbiAoZWcuICIxLjIiIG9mICIlMS4yZiIpICovCisgICAgICAgICAgICBmID0gcGFyc2VfZm9ybWF0X2ZsYWdzKGYsICZ3aWR0aCwgTlVMTCwgTlVMTCwgJmxvbmdsb25nZmxhZywgTlVMTCk7CisgICAgICAgICAgICBpZiAoKmYgPT0gJ3MnIHx8ICpmPT0nUycgfHwgKmY9PSdSJyB8fCAqZj09J0EnIHx8ICpmPT0nVicpCisgICAgICAgICAgICAgICAgKytjYWxsY291bnQ7CiAKLSAgICAgICAgICAgIC8qIHNraXAgdGhlICdsJyBvciAneicgaW4geyVsZCwgJXpkLCAlbHUsICV6dX0gc2luY2UKLSAgICAgICAgICAgICAqIHRoZXkgZG9uJ3QgYWZmZWN0IHRoZSBhbW91bnQgb2Ygc3BhY2Ugd2UgcmVzZXJ2ZS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCpmID09ICdsJykgewotICAgICAgICAgICAgICAgIGlmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykgewotICAgICAgICAgICAgICAgICAgICArK2Y7Ci0gICAgICAgICAgICAgICAgfQotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZlsxXSA9PSAnbCcgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZlsyXSA9PSAnZCcgfHwgZlsyXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvbmdsb25nZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIGYgKz0gMjsKLSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzd2l0Y2ggKCpmKSB7Ci0gICAgICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgIHsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgaW50IG9yZGluYWwgPSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9yZGluYWwgPiAweGZmZmYpCi0gICAgICAgICAgICAgICAgICAgIG4gKz0gMjsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG4rKzsKLSNlbHNlCi0gICAgICAgICAgICAgICAgKHZvaWQpdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIG4rKzsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICAgICAgbisrOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnZCc6IGNhc2UgJ3UnOiBjYXNlICdpJzogY2FzZSAneCc6Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyhjb3VudCwgaW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCpmID09ICdkJyB8fCAqZj09J3UnIHx8ICpmPT0naScgfHwgKmY9PSd4JyB8fCAqZj09J3AnKSB7CiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgICAgICBpZiAobG9uZ2xvbmdmbGFnKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8IE1BWF9MT05HX0xPTkdfQ0hBUlMpCkBAIC04NDQsMTkgKzI0MjYsMTU1IEBACiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgbW9yZSAod2hpY2ggd2UgYWxsb2NhdGUgbGF0ZXIpLiAqLwogICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCBNQVhfTE9OR19DSEFSUykKICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gTUFYX0xPTkdfQ0hBUlM7Ci0gICAgICAgICAgICAgICAgbiArPSB3aWR0aDsKLSAgICAgICAgICAgICAgICAvKiBYWFggc2hvdWxkIGFsbG93IGZvciBsYXJnZSBwcmVjaXNpb24gaGVyZSB0b28uICovCi0gICAgICAgICAgICAgICAgaWYgKGFidWZmZXJzaXplIDwgd2lkdGgpCi0gICAgICAgICAgICAgICAgICAgIGFidWZmZXJzaXplID0gd2lkdGg7CisKKyAgICAgICAgICAgICAgICAvKiBhY2NvdW50IGZvciB0aGUgc2l6ZSArICdcMCcgdG8gc2VwYXJhdGUgbnVtYmVycworICAgICAgICAgICAgICAgICAgIGluc2lkZSBvZiB0aGUgbnVtYmVycmVzdWx0cyBidWZmZXIgKi8KKyAgICAgICAgICAgICAgICBudW1iZXJzaXplICs9ICh3aWR0aCArIDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCh1bnNpZ25lZCBjaGFyKSpmID4gMTI3KSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkgZXhwZWN0cyBhbiBBU0NJSS1lbmNvZGVkIGZvcm1hdCAiCisgICAgICAgICAgICAgICAgInN0cmluZywgZ290IGEgbm9uLUFTQ0lJIGJ5dGU6IDB4JTAyeCIsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpKmYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgLyogc3RlcCAyOiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSByZXN1bHRzIG9mCisgICAgICogUHlPYmplY3RfU3RyKCkvUHlPYmplY3RfUmVwcigpL1B5VW5pY29kZV9EZWNvZGVVVEY4KCkgY2FsbHMgKi8KKyAgICBpZiAoY2FsbGNvdW50KSB7CisgICAgICAgIGNhbGxyZXN1bHRzID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQeU9iamVjdCAqKSAqIGNhbGxjb3VudCk7CisgICAgICAgIGlmICghY2FsbHJlc3VsdHMpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBjYWxscmVzdWx0ID0gY2FsbHJlc3VsdHM7CisgICAgfQorICAgIC8qIHN0ZXAgMi41OiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSByZXN1bHRzIG9mIGZvcm1hdGluZyBudW1iZXJzICovCisgICAgaWYgKG51bWJlcnNpemUpIHsKKyAgICAgICAgbnVtYmVycmVzdWx0cyA9IFB5T2JqZWN0X01hbGxvYyhudW1iZXJzaXplKTsKKyAgICAgICAgaWYgKCFudW1iZXJyZXN1bHRzKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIG51bWJlcnJlc3VsdCA9IG51bWJlcnJlc3VsdHM7CisgICAgfQorCisgICAgLyogc3RlcCAzOiBmb3JtYXQgbnVtYmVycyBhbmQgZmlndXJlIG91dCBob3cgbGFyZ2UgYSBidWZmZXIgd2UgbmVlZCAqLworICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgeworICAgICAgICBpZiAoKmYgPT0gJyUnKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBwOworICAgICAgICAgICAgaW50IGxvbmdmbGFnOworICAgICAgICAgICAgaW50IGxvbmdsb25nZmxhZzsKKyAgICAgICAgICAgIGludCBzaXplX3RmbGFnOworICAgICAgICAgICAgaW50IG51bXByaW50ZWQ7CisKKyAgICAgICAgICAgIHAgPSBmOworICAgICAgICAgICAgemVyb3BhZCA9IChmWzFdID09ICcwJyk7CisgICAgICAgICAgICBmID0gcGFyc2VfZm9ybWF0X2ZsYWdzKGYsICZ3aWR0aCwgJnByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvbmdmbGFnLCAmbG9uZ2xvbmdmbGFnLCAmc2l6ZV90ZmxhZyk7CisgICAgICAgICAgICBzd2l0Y2ggKCpmKSB7CisgICAgICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IG9yZGluYWwgPSB2YV9hcmcoY291bnQsIGludCk7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIG9yZGluYWwpOworICAgICAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsIHplcm9wYWQsCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgcHJlY2lzaW9uLCAqZik7CisgICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCBsb25nKSk7CisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIFBZX0xPTkdfTE9ORykpOworI2VuZGlmCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgUHlfc3NpemVfdCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgaW50KSk7CisgICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOworICAgICAgICAgICAgICAgIC8qIGFkdmFuY2UgYnkgKzEgdG8gc2tpcCBvdmVyIHRoZSAnXDAnICovCisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgemVyb3BhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBwcmVjaXNpb24sICd1Jyk7CisgICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCB1bnNpZ25lZCBsb25nKSk7CisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORykpOworI2VuZGlmCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgc2l6ZV90KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCB1bnNpZ25lZCBpbnQpKTsKKyAgICAgICAgICAgICAgICBuICs9IG51bXByaW50ZWQ7CisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgMCwgMCwgMCwgemVyb3BhZCwgd2lkdGgsIHByZWNpc2lvbiwgJ3gnKTsKKyAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwgdmFfYXJnKGNvdW50LCBpbnQpKTsKKyAgICAgICAgICAgICAgICBuICs9IG51bXByaW50ZWQ7CisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsICIlcCIsIHZhX2FyZyhjb3VudCwgdm9pZCopKTsKKyAgICAgICAgICAgICAgICAvKiAlcCBpcyBpbGwtZGVmaW5lZDogIGVuc3VyZSBsZWFkaW5nIDB4LiAqLworICAgICAgICAgICAgICAgIGlmIChudW1iZXJyZXN1bHRbMV0gPT0gJ1gnKQorICAgICAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHRbMV0gPSAneCc7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobnVtYmVycmVzdWx0WzFdICE9ICd4JykgeworICAgICAgICAgICAgICAgICAgICBtZW1tb3ZlKG51bWJlcnJlc3VsdCArIDIsIG51bWJlcnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4obnVtYmVycmVzdWx0KSArIDEpOworICAgICAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHRbMF0gPSAnMCc7CisgICAgICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdFsxXSA9ICd4JzsKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCArPSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuICs9IG51bXByaW50ZWQ7CisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvKiBVVEYtOCAqLwogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMgPSB2YV9hcmcoY291bnQsIGNvbnN0IGNoYXIqKTsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyID0gUHlVbmljb2RlX0RlY29kZVVURjgocywgc3RybGVuKHMpLCAicmVwbGFjZSIpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHIgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHN0cmxlbihzKSwgInJlcGxhY2UiLCBOVUxMKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0cikKICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9TSVpFKHN0cik7CisgICAgICAgICAgICAgICAgLyogc2luY2UgUHlVbmljb2RlX0RlY29kZVVURjggcmV0dXJucyBhbHJlYWR5IGZsZXhpYmxlCisgICAgICAgICAgICAgICAgICAgdW5pY29kZSBvYmplY3RzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgcmVhZHkgb24gdGhlbSAqLworICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyKTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwogICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHRoZSBzdHIgYW5kIHN3aXRjaCB0byB0aGUgbmV4dCBzbG90ICovCiAgICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IHN0cjsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTg2NCw4ICsyNTgyLDEyIEBACiAgICAgICAgICAgICBjYXNlICdVJzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqID0gdmFfYXJnKGNvdW50LCBQeU9iamVjdCAqKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQob2JqICYmIFB5VW5pY29kZV9DaGVjayhvYmopKTsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOworICAgICAgICAgICAgICAgIGFzc2VydChvYmogJiYgX1B5VW5pY29kZV9DSEVDSyhvYmopKTsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKG9iaik7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgJ1YnOgpAQCAtODc0LDE2ICsyNTk2LDI2IEBACiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gdmFfYXJnKGNvdW50LCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJfb2JqOwogICAgICAgICAgICAgICAgIGFzc2VydChvYmogfHwgc3RyKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoIW9iaiB8fCBQeVVuaWNvZGVfQ2hlY2sob2JqKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCFvYmogfHwgX1B5VW5pY29kZV9DSEVDSyhvYmopKTsKICAgICAgICAgICAgICAgICBpZiAob2JqKSB7Ci0gICAgICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShvYmopOworICAgICAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKICAgICAgICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzdHJfb2JqID0gUHlVbmljb2RlX0RlY29kZVVURjgoc3RyLCBzdHJsZW4oc3RyKSwgInJlcGxhY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoc3RyLCBzdHJsZW4oc3RyKSwgInJlcGxhY2UiLCBOVUxMKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJfb2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShzdHJfb2JqKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyX29iaik7CisgICAgICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBhcmdtYXhjaGFyKTsKKyAgICAgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKICAgICAgICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IHN0cl9vYmo7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODk2LDcgKzI2MjgsMTMgQEAKICAgICAgICAgICAgICAgICBzdHIgPSBQeU9iamVjdF9TdHIob2JqKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0cikKICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9TSVpFKHN0cik7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyKTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwogICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHRoZSBzdHIgYW5kIHN3aXRjaCB0byB0aGUgbmV4dCBzbG90ICovCiAgICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IHN0cjsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTkwOSw3ICsyNjQ3LDEzIEBACiAgICAgICAgICAgICAgICAgcmVwciA9IFB5T2JqZWN0X1JlcHIob2JqKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlcHIpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShyZXByKTsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcHIpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXByKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHJlcHIpOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBhcmdtYXhjaGFyKTsKKyAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHIpOwogICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHRoZSByZXByIGFuZCBzd2l0Y2ggdG8gdGhlIG5leHQgc2xvdCAqLwogICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSByZXByOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTIyLDIwICsyNjY2LDE3IEBACiAgICAgICAgICAgICAgICAgYXNjaWkgPSBQeU9iamVjdF9BU0NJSShvYmopOwogICAgICAgICAgICAgICAgIGlmICghYXNjaWkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShhc2NpaSk7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhc2NpaSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFzY2lpKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGFzY2lpKTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhc2NpaSk7CiAgICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgdGhlIHJlcHIgYW5kIHN3aXRjaCB0byB0aGUgbmV4dCBzbG90ICovCiAgICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IGFzY2lpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICAvKiBtYXhpbXVtIDY0LWJpdCBwb2ludGVyIHJlcHJlc2VudGF0aW9uOgotICAgICAgICAgICAgICAgICAqIDB4ZmZmZmZmZmZmZmZmZmZmZgotICAgICAgICAgICAgICAgICAqIHNvIDE5IGNoYXJhY3RlcnMgaXMgZW5vdWdoLgotICAgICAgICAgICAgICAgICAqIFhYWCBJIGNvdW50IDE4IC0tIHdoYXQncyB0aGUgZXh0cmEgZm9yPwotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIG4gKz0gMTk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIC8qIGlmIHdlIHN0dW1ibGUgdXBvbiBhbiB1bmtub3duCiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZyBjb2RlLCBjb3B5IHRoZSByZXN0IG9mCkBAIC05NTAsMTI3ICsyNjkxLDY4IEBACiAgICAgICAgICAgICBuKys7CiAgICAgfQogICBleHBhbmQ6Ci0gICAgaWYgKGFidWZmZXJzaXplID4gSVRFTV9CVUZGRVJfTEVOKSB7Ci0gICAgICAgIC8qIGFkZCAxIGZvciBzcHJpbnRmJ3MgdHJhaWxpbmcgbnVsbCBieXRlICovCi0gICAgICAgIGFidWZmZXIgPSBQeU9iamVjdF9NYWxsb2MoYWJ1ZmZlcnNpemUgKyAxKTsKLSAgICAgICAgaWYgKCFhYnVmZmVyKSB7Ci0gICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICB9Ci0gICAgICAgIHJlYWxidWZmZXIgPSBhYnVmZmVyOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJlYWxidWZmZXIgPSBidWZmZXI7CiAgICAgLyogc3RlcCA0OiBmaWxsIHRoZSBidWZmZXIgKi8KLSAgICAvKiBTaW5jZSB3ZSd2ZSBhbmFseXplZCBob3cgbXVjaCBzcGFjZSB3ZSBuZWVkIGZvciB0aGUgd29yc3QgY2FzZSwKKyAgICAvKiBTaW5jZSB3ZSd2ZSBhbmFseXplZCBob3cgbXVjaCBzcGFjZSB3ZSBuZWVkLAogICAgICAgIHdlIGRvbid0IGhhdmUgdG8gcmVzaXplIHRoZSBzdHJpbmcuCiAgICAgICAgVGhlcmUgY2FuIGJlIG5vIGVycm9ycyBiZXlvbmQgdGhpcyBwb2ludC4gKi8KLSAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgbik7CisgICAgc3RyaW5nID0gUHlVbmljb2RlX05ldyhuLCBtYXhjaGFyKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgZ290byBmYWlsOwotCi0gICAgcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cmluZyk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CiAgICAgY2FsbHJlc3VsdCA9IGNhbGxyZXN1bHRzOworICAgIG51bWJlcnJlc3VsdCA9IG51bWJlcnJlc3VsdHM7CiAKLSAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKKyAgICBmb3IgKGkgPSAwLCBmID0gZm9ybWF0OyAqZjsgZisrKSB7CiAgICAgICAgIGlmICgqZiA9PSAnJScpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBmKys7Ci0gICAgICAgICAgICBpbnQgbG9uZ2ZsYWcgPSAwOwotICAgICAgICAgICAgaW50IGxvbmdsb25nZmxhZyA9IDA7Ci0gICAgICAgICAgICBpbnQgc2l6ZV90ZmxhZyA9IDA7Ci0gICAgICAgICAgICB6ZXJvcGFkID0gKCpmID09ICcwJyk7Ci0gICAgICAgICAgICAvKiBwYXJzZSB0aGUgd2lkdGgucHJlY2lzaW9uIHBhcnQgKi8KLSAgICAgICAgICAgIHdpZHRoID0gMDsKLSAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgd2lkdGggPSAod2lkdGgqMTApICsgKmYrKyAtICcwJzsKLSAgICAgICAgICAgIHByZWNpc2lvbiA9IDA7Ci0gICAgICAgICAgICBpZiAoKmYgPT0gJy4nKSB7Ci0gICAgICAgICAgICAgICAgZisrOwotICAgICAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IChwcmVjaXNpb24qMTApICsgKmYrKyAtICcwJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIEhhbmRsZSAlbGQsICVsdSwgJWxsZCBhbmQgJWxsdS4gKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAnbCcpIHsKLSAgICAgICAgICAgICAgICBpZiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOwotICAgICAgICAgICAgICAgICAgICArK2Y7Ci0gICAgICAgICAgICAgICAgfQotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZlsxXSA9PSAnbCcgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZlsyXSA9PSAnZCcgfHwgZlsyXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvbmdsb25nZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIGYgKz0gMjsKLSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcuICovCi0gICAgICAgICAgICBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKLSAgICAgICAgICAgICAgICBzaXplX3RmbGFnID0gMTsKLSAgICAgICAgICAgICAgICArK2Y7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBjaGFyKiBwOworCisgICAgICAgICAgICBwID0gZjsKKyAgICAgICAgICAgIGYgPSBwYXJzZV9mb3JtYXRfZmxhZ3MoZiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAvKiBjaGVja2luZyBmb3IgPT0gYmVjYXVzZSB0aGUgbGFzdCBhcmd1bWVudCBjb3VsZCBiZSBhIGVtcHR5CisgICAgICAgICAgICAgICBzdHJpbmcsIHdoaWNoIGNhdXNlcyBpIHRvIHBvaW50IHRvIGVuZCwgdGhlIGFzc2VydCBhdCB0aGUgZW5kIG9mCisgICAgICAgICAgICAgICB0aGUgbG9vcCAqLworICAgICAgICAgICAgYXNzZXJ0KGkgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSk7CiAKICAgICAgICAgICAgIHN3aXRjaCAoKmYpIHsKICAgICAgICAgICAgIGNhc2UgJ2MnOgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBvcmRpbmFsID0gdmFfYXJnKHZhcmdzLCBpbnQpOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICBpZiAob3JkaW5hbCA+IDB4ZmZmZikgewotICAgICAgICAgICAgICAgICAgICBvcmRpbmFsIC09IDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgICAgICpzKysgPSAweEQ4MDAgfCAob3JkaW5hbCA+PiAxMCk7Ci0gICAgICAgICAgICAgICAgICAgICpzKysgPSAweERDMDAgfCAob3JkaW5hbCAmIDB4M0ZGKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgICpzKysgPSBvcmRpbmFsOworICAgICAgICAgICAgICAgIGNvbnN0IGludCBvcmRpbmFsID0gdmFfYXJnKHZhcmdzLCBpbnQpOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpKyssIG9yZGluYWwpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsIHplcm9wYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgcHJlY2lzaW9uLCAnZCcpOwotICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgbG9uZykpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIFB5X3NzaXplX3QpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhyZWFsYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnLCB6ZXJvcGFkLAotICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIHByZWNpc2lvbiwgJ3UnKTsKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIHNpemVfdCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgdW5zaWduZWQgaW50KSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kc3RyaW5nKHJlYWxidWZmZXIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIDAsIDAsIDAsIHplcm9wYWQsIHdpZHRoLCBwcmVjaXNpb24sICdpJyk7Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgaW50KSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kc3RyaW5nKHJlYWxidWZmZXIpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICBjYXNlICd1JzoKICAgICAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCAwLCAwLCAwLCB6ZXJvcGFkLCB3aWR0aCwgcHJlY2lzaW9uLCAneCcpOwotICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhyZWFsYnVmZmVyKTsKKyAgICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgIC8qIHVudXNlZCwgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgKi8KKyAgICAgICAgICAgICAgICBpZiAoKmYgPT0gJ3AnKQorICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKHZhcmdzLCB2b2lkICopOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyh2YXJncywgaW50KTsKKyAgICAgICAgICAgICAgICAvKiBleHRyYWN0IHRoZSByZXN1bHQgZnJvbSBudW1iZXJyZXN1bHRzIGFuZCBhcHBlbmQuICovCisgICAgICAgICAgICAgICAgbGVuID0gc3RybGVuKG51bWJlcnJlc3VsdCk7CisgICAgICAgICAgICAgICAgdW5pY29kZV93cml0ZV9jc3RyKHN0cmluZywgaSwgbnVtYmVycmVzdWx0LCBsZW4pOworICAgICAgICAgICAgICAgIC8qIHNraXAgb3ZlciB0aGUgc2VwYXJhdGluZyAnXDAnICovCisgICAgICAgICAgICAgICAgaSArPSBsZW47CisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IGxlbjsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKm51bWJlcnJlc3VsdCA9PSAnXDAnKTsKKyAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHQrKzsKKyAgICAgICAgICAgICAgICBhc3NlcnQobnVtYmVycmVzdWx0IDw9IG51bWJlcnJlc3VsdHMgKyBudW1iZXJzaXplKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIHVudXNlZCwgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgKi8KKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyh2YXJncywgY2hhciAqKTsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocywgUHlVbmljb2RlX0FTX1VOSUNPREUoKmNhbGxyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpKTsKLSAgICAgICAgICAgICAgICBzICs9IFB5VW5pY29kZV9HRVRfU0laRSgqY2FsbHJlc3VsdCk7CisgICAgICAgICAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpjYWxscmVzdWx0KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoKmNhbGxyZXN1bHQpIDw9IFB5VW5pY29kZV9LSU5EKHN0cmluZykpOworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgKmNhbGxyZXN1bHQsIDAsIHNpemUpOworICAgICAgICAgICAgICAgIGkgKz0gc2l6ZTsKICAgICAgICAgICAgICAgICAvKiBXZSdyZSBkb25lIHdpdGggdGhlIHVuaWNvZGUoKS9yZXByKCkgPT4gZm9yZ2V0IGl0ICovCiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKCpjYWxscmVzdWx0KTsKICAgICAgICAgICAgICAgICAvKiBzd2l0Y2ggdG8gbmV4dCB1bmljb2RlKCkvcmVwcigpIHJlc3VsdCAqLwpAQCAtMTA4MCwyMyArMjc2MiwyOSBAQAogICAgICAgICAgICAgY2FzZSAnVSc6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiA9IHZhX2FyZyh2YXJncywgUHlPYmplY3QgKik7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHMsIFB5VW5pY29kZV9BU19VTklDT0RFKG9iaiksIHNpemUpOwotICAgICAgICAgICAgICAgIHMgKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKG9iaikgPD0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKSk7CisgICAgICAgICAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoc3RyaW5nLCBpLCBvYmosIDAsIHNpemUpOworICAgICAgICAgICAgICAgIGkgKz0gc2l6ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgJ1YnOgogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqID0gdmFfYXJnKHZhcmdzLCBQeU9iamVjdCAqKTsKICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIGNvbnN0IGNoYXIgKik7CiAgICAgICAgICAgICAgICAgaWYgKG9iaikgewotICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHMsIFB5VW5pY29kZV9BU19VTklDT0RFKG9iaiksIHNpemUpOwotICAgICAgICAgICAgICAgICAgICBzICs9IHNpemU7CisgICAgICAgICAgICAgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQob2JqKSA8PSBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoc3RyaW5nLCBpLCBvYmosIDAsIHNpemUpOworICAgICAgICAgICAgICAgICAgICBpICs9IHNpemU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHMsIFB5VW5pY29kZV9BU19VTklDT0RFKCpjYWxscmVzdWx0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSgqY2FsbHJlc3VsdCkpOwotICAgICAgICAgICAgICAgICAgICBzICs9IFB5VW5pY29kZV9HRVRfU0laRSgqY2FsbHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqY2FsbHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCgqY2FsbHJlc3VsdCkgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9LSU5EKHN0cmluZykpOworICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhzdHJpbmcsIGksICpjYWxscmVzdWx0LCAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgaSArPSBzaXplOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoKmNhbGxyZXN1bHQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICArK2NhbGxyZXN1bHQ7CkBAIC0xMTA2LDUyICsyNzk0LDQ0IEBACiAgICAgICAgICAgICBjYXNlICdSJzoKICAgICAgICAgICAgIGNhc2UgJ0EnOgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnVjb3B5OwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgdXNpemU7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCB1cG9zOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpjYWxscmVzdWx0KTsKICAgICAgICAgICAgICAgICAvKiB1bnVzZWQsIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0ICovCiAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyh2YXJncywgUHlPYmplY3QgKik7Ci0gICAgICAgICAgICAgICAgdWNvcHkgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqY2FsbHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgdXNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpOwotICAgICAgICAgICAgICAgIGZvciAodXBvcyA9IDA7IHVwb3M8dXNpemU7KQotICAgICAgICAgICAgICAgICAgICAqcysrID0gdWNvcHlbdXBvcysrXTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoKmNhbGxyZXN1bHQpIDw9IFB5VW5pY29kZV9LSU5EKHN0cmluZykpOworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgKmNhbGxyZXN1bHQsIDAsICBzaXplKTsKKyAgICAgICAgICAgICAgICBpICs9IHNpemU7CiAgICAgICAgICAgICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoZSB1bmljb2RlKCkvcmVwcigpID0+IGZvcmdldCBpdCAqLwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRigqY2FsbHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgLyogc3dpdGNoIHRvIG5leHQgdW5pY29kZSgpL3JlcHIoKSByZXN1bHQgKi8KICAgICAgICAgICAgICAgICArK2NhbGxyZXN1bHQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVwIiwgdmFfYXJnKHZhcmdzLCB2b2lkKikpOwotICAgICAgICAgICAgICAgIC8qICVwIGlzIGlsbC1kZWZpbmVkOiAgZW5zdXJlIGxlYWRpbmcgMHguICovCi0gICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnWCcpCi0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclsxXSA9ICd4JzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChidWZmZXJbMV0gIT0gJ3gnKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1lbW1vdmUoYnVmZmVyKzIsIGJ1ZmZlciwgc3RybGVuKGJ1ZmZlcikrMSk7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclswXSA9ICcwJzsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyWzFdID0gJ3gnOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhcHBlbmRzdHJpbmcoYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgICpzKysgPSAnJSc7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGkrKywgJyUnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYXBwZW5kc3RyaW5nKHApOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuID0gc3RybGVuKHApOworICAgICAgICAgICAgICAgIHVuaWNvZGVfd3JpdGVfY3N0cihzdHJpbmcsIGksIHAsIGxlbik7CisgICAgICAgICAgICAgICAgaSArPSBsZW47CisgICAgICAgICAgICAgICAgYXNzZXJ0KGkgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSk7CiAgICAgICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKnMrKyA9ICpmOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSsrLCAqZik7CisgICAgICAgIH0KICAgICB9CisgICAgYXNzZXJ0KGkgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSk7CiAKICAgZW5kOgogICAgIGlmIChjYWxscmVzdWx0cykKICAgICAgICAgUHlPYmplY3RfRnJlZShjYWxscmVzdWx0cyk7Ci0gICAgaWYgKGFidWZmZXIpCi0gICAgICAgIFB5T2JqZWN0X0ZyZWUoYWJ1ZmZlcik7Ci0gICAgUHlVbmljb2RlX1Jlc2l6ZSgmc3RyaW5nLCBzIC0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyaW5nKSk7Ci0gICAgcmV0dXJuIHN0cmluZzsKKyAgICBpZiAobnVtYmVycmVzdWx0cykKKyAgICAgICAgUHlPYmplY3RfRnJlZShudW1iZXJyZXN1bHRzKTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQoc3RyaW5nKTsKICAgZmFpbDoKICAgICBpZiAoY2FsbHJlc3VsdHMpIHsKICAgICAgICAgUHlPYmplY3QgKipjYWxscmVzdWx0MiA9IGNhbGxyZXN1bHRzOwpAQCAtMTE2MSwxMyArMjg0MSwxMSBAQAogICAgICAgICB9CiAgICAgICAgIFB5T2JqZWN0X0ZyZWUoY2FsbHJlc3VsdHMpOwogICAgIH0KLSAgICBpZiAoYWJ1ZmZlcikKLSAgICAgICAgUHlPYmplY3RfRnJlZShhYnVmZmVyKTsKKyAgICBpZiAobnVtYmVycmVzdWx0cykKKyAgICAgICAgUHlPYmplY3RfRnJlZShudW1iZXJyZXN1bHRzKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotI3VuZGVmIGFwcGVuZHN0cmluZwotCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRnJvbUZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKQEAgLTExODQsNiArMjg2Miw4IEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAorI2lmZGVmIEhBVkVfV0NIQVJfSAorCiAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkgYW5kIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKCk6CiAgICBjb252ZXJ0IGEgVW5pY29kZSBvYmplY3QgdG8gYSB3aWRlIGNoYXJhY3RlciBzdHJpbmcuCiAKQEAgLTExOTQsMTAzICsyODc0LDI3IEBACiAgICAgIGNoYXJhY3Rlcikgd3JpdHRlbiBpbnRvIHcuIFdyaXRlIGF0IG1vc3Qgc2l6ZSB3aWRlIGNoYXJhY3RlcnMgKGluY2x1ZGluZwogICAgICB0aGUgbnVsbCBjaGFyYWN0ZXIpLiAqLwogc3RhdGljIFB5X3NzaXplX3QKLXVuaWNvZGVfYXN3aWRlY2hhcihQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUsCit1bmljb2RlX2Fzd2lkZWNoYXIoUHlPYmplY3QgKnVuaWNvZGUsCiAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqdywKICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCiB7Ci0jaWYgUHlfVU5JQ09ERV9TSVpFID09IFNJWkVPRl9XQ0hBUl9UCiAgICAgUHlfc3NpemVfdCByZXM7CisgICAgY29uc3Qgd2NoYXJfdCAqd3N0cjsKKworICAgIHdzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh1bmljb2RlLCAmcmVzKTsKKyAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKICAgICBpZiAodyAhPSBOVUxMKSB7Ci0gICAgICAgIHJlcyA9IFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKTsKICAgICAgICAgaWYgKHNpemUgPiByZXMpCiAgICAgICAgICAgICBzaXplID0gcmVzICsgMTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzID0gc2l6ZTsKLSAgICAgICAgbWVtY3B5KHcsIHVuaWNvZGUtPnN0ciwgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIFB5X01FTUNQWSh3LCB3c3RyLCBzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpICsgMTsKLSNlbGlmIFB5X1VOSUNPREVfU0laRSA9PSAyICYmIFNJWkVPRl9XQ0hBUl9UID09IDQKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICp1OwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnVlbmQ7Ci0gICAgY29uc3Qgd2NoYXJfdCAqd29yaWcsICp3ZW5kOwotICAgIFB5X3NzaXplX3QgbmNoYXI7Ci0KLSAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7Ci0gICAgdWVuZCA9IHUgKyBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSk7Ci0gICAgaWYgKHcgIT0gTlVMTCkgewotICAgICAgICB3b3JpZyA9IHc7Ci0gICAgICAgIHdlbmQgPSB3ICsgc2l6ZTsKLSAgICAgICAgd2hpbGUgKHUgIT0gdWVuZCAmJiB3ICE9IHdlbmQpIHsKLSAgICAgICAgICAgIGlmICgweEQ4MDAgPD0gdVswXSAmJiB1WzBdIDw9IDB4REJGRgotICAgICAgICAgICAgICAgICYmIDB4REMwMCA8PSB1WzFdICYmIHVbMV0gPD0gMHhERkZGKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICp3ID0gKCgodVswXSAmIDB4M0ZGKSA8PCAxMCkgfCAodVsxXSAmIDB4M0ZGKSkgKyAweDEwMDAwOwotICAgICAgICAgICAgICAgIHUgKz0gMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICp3ID0gKnU7Ci0gICAgICAgICAgICAgICAgdSsrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdysrOwotICAgICAgICB9Ci0gICAgICAgIGlmICh3ICE9IHdlbmQpCi0gICAgICAgICAgICAqdyA9IEwnXDAnOwotICAgICAgICByZXR1cm4gdyAtIHdvcmlnOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbmNoYXIgPSAxOyAvKiBudWxsIGNoYXJhY3RlciBhdCB0aGUgZW5kICovCi0gICAgICAgIHdoaWxlICh1ICE9IHVlbmQpIHsKLSAgICAgICAgICAgIGlmICgweEQ4MDAgPD0gdVswXSAmJiB1WzBdIDw9IDB4REJGRgotICAgICAgICAgICAgICAgICYmIDB4REMwMCA8PSB1WzFdICYmIHVbMV0gPD0gMHhERkZGKQotICAgICAgICAgICAgICAgIHUgKz0gMjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1Kys7Ci0gICAgICAgICAgICBuY2hhcisrOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBuY2hhcjsKLSNlbGlmIFB5X1VOSUNPREVfU0laRSA9PSA0ICYmIFNJWkVPRl9XQ0hBUl9UID09IDIKLSAgICByZWdpc3RlciBQeV9VTklDT0RFICp1LCAqdWVuZCwgb3JkaW5hbDsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgd2NoYXJfdCAqd29yaWcsICp3ZW5kOwotICAgIFB5X3NzaXplX3QgbmNoYXI7Ci0KLSAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7Ci0gICAgdWVuZCA9IHUgKyBQeVVuaWNvZGVfR0VUX1NJWkUodSk7Ci0gICAgaWYgKHcgIT0gTlVMTCkgewotICAgICAgICB3b3JpZyA9IHc7Ci0gICAgICAgIHdlbmQgPSB3ICsgc2l6ZTsKLSAgICAgICAgd2hpbGUgKHUgIT0gdWVuZCAmJiB3ICE9IHdlbmQpIHsKLSAgICAgICAgICAgIG9yZGluYWwgPSAqdTsKLSAgICAgICAgICAgIGlmIChvcmRpbmFsID4gMHhmZmZmKSB7Ci0gICAgICAgICAgICAgICAgb3JkaW5hbCAtPSAweDEwMDAwOwotICAgICAgICAgICAgICAgICp3KysgPSAweEQ4MDAgfCAob3JkaW5hbCA+PiAxMCk7Ci0gICAgICAgICAgICAgICAgKncrKyA9IDB4REMwMCB8IChvcmRpbmFsICYgMHgzRkYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICp3KysgPSBvcmRpbmFsOwotICAgICAgICAgICAgdSsrOwotICAgICAgICB9Ci0gICAgICAgIGlmICh3ICE9IHdlbmQpCi0gICAgICAgICAgICAqdyA9IDA7Ci0gICAgICAgIHJldHVybiB3IC0gd29yaWc7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBuY2hhciA9IDE7IC8qIG51bGwgY2hhcmFjdGVyICovCi0gICAgICAgIHdoaWxlICh1ICE9IHVlbmQpIHsKLSAgICAgICAgICAgIGlmICgqdSA+IDB4ZmZmZikKLSAgICAgICAgICAgICAgICBuY2hhciArPSAyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5jaGFyKys7Ci0gICAgICAgICAgICB1Kys7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5jaGFyOwotICAgIH0KLSNlbHNlCi0jICBlcnJvciAidW5zdXBwb3J0ZWQgd2NoYXJfdCBhbmQgUHlfVU5JQ09ERSBzaXplcywgc2VlIGlzc3VlICM4NjcwIgotI2VuZGlmCisgICAgICAgIHJldHVybiByZXMgKyAxOwogfQogCiBQeV9zc2l6ZV90CkBAIC0xMzAyLDcgKzI5MDYsNyBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXR1cm4gdW5pY29kZV9hc3dpZGVjaGFyKChQeVVuaWNvZGVPYmplY3QqKXVuaWNvZGUsIHcsIHNpemUpOworICAgIHJldHVybiB1bmljb2RlX2Fzd2lkZWNoYXIodW5pY29kZSwgdywgc2l6ZSk7CiB9CiAKIHdjaGFyX3QqCkBAIC0xMzE3LDcgKzI5MjEsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBidWZsZW4gPSB1bmljb2RlX2Fzd2lkZWNoYXIoKFB5VW5pY29kZU9iamVjdCAqKXVuaWNvZGUsIE5VTEwsIDApOworICAgIGJ1ZmxlbiA9IHVuaWNvZGVfYXN3aWRlY2hhcih1bmljb2RlLCBOVUxMLCAwKTsKKyAgICBpZiAoYnVmbGVuID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUFlfU1NJWkVfVF9NQVggLyBzaXplb2Yod2NoYXJfdCkgPCBidWZsZW4pIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzI4LDUwICsyOTM0LDU0IEBACiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBidWZsZW4gPSB1bmljb2RlX2Fzd2lkZWNoYXIoKFB5VW5pY29kZU9iamVjdCAqKXVuaWNvZGUsIGJ1ZmZlciwgYnVmbGVuKTsKKyAgICBidWZsZW4gPSB1bmljb2RlX2Fzd2lkZWNoYXIodW5pY29kZSwgYnVmZmVyLCBidWZsZW4pOworICAgIGlmIChidWZsZW4gPT0gLTEpIHsKKyAgICAgICAgUHlNZW1fRlJFRShidWZmZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHNpemUgIT0gTlVMTCkKICAgICAgICAgKnNpemUgPSBidWZsZW47CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9XQ0hBUl9IICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbU9yZGluYWwoaW50IG9yZGluYWwpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbU9yZGluYWwoaW50IG9yZGluYWwpCiB7Ci0gICAgUHlfVU5JQ09ERSBzWzJdOwotCi0gICAgaWYgKG9yZGluYWwgPCAwIHx8IG9yZGluYWwgPiAweDEwZmZmZikgeworICAgIFB5T2JqZWN0ICp2OworICAgIGlmIChvcmRpbmFsIDwgMCB8fCBvcmRpbmFsID4gTUFYX1VOSUNPREUpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2hyKCkgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGlmIChvcmRpbmFsID4gMHhmZmZmKSB7Ci0gICAgICAgIG9yZGluYWwgLT0gMHgxMDAwMDsKLSAgICAgICAgc1swXSA9IDB4RDgwMCB8IChvcmRpbmFsID4+IDEwKTsKLSAgICAgICAgc1sxXSA9IDB4REMwMCB8IChvcmRpbmFsICYgMHgzRkYpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIDIpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChvcmRpbmFsIDwgMjU2KQorICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKG9yZGluYWwpOwogCi0gICAgc1swXSA9IChQeV9VTklDT0RFKW9yZGluYWw7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCAxKTsKKyAgICB2ID0gUHlVbmljb2RlX05ldygxLCBvcmRpbmFsKTsKKyAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQodiksIFB5VW5pY29kZV9EQVRBKHYpLCAwLCBvcmRpbmFsKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKKyAgICByZXR1cm4gdjsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tT2JqZWN0KHJlZ2lzdGVyIFB5T2JqZWN0ICpvYmopCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbU9iamVjdChyZWdpc3RlciBQeU9iamVjdCAqb2JqKQogewogICAgIC8qIFhYWCBQZXJoYXBzIHdlIHNob3VsZCBtYWtlIHRoaXMgQVBJIGFuIGFsaWFzIG9mCiAgICAgICAgUHlPYmplY3RfU3RyKCkgaW5zdGVhZCA/ISAqLwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeV9JTkNSRUYob2JqKTsKICAgICAgICAgcmV0dXJuIG9iajsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CiAgICAgICAgIC8qIEZvciBhIFVuaWNvZGUgc3VidHlwZSB0aGF0J3Mgbm90IGEgVW5pY29kZSBvYmplY3QsCiAgICAgICAgICAgIHJldHVybiBhIHRydWUgVW5pY29kZSBvYmplY3Qgd2l0aCB0aGUgc2FtZSBkYXRhLiAqLwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKG9iaiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG9iaikpOworICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Db3B5KG9iaik7CiAgICAgfQogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICJDYW4ndCBjb252ZXJ0ICclLjEwMHMnIG9iamVjdCB0byBzdHIgaW1wbGljaXRseSIsCkBAIC0xMzc5LDkgKzI5ODksMTAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChyZWdpc3RlciBQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KHJlZ2lzdGVyIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5X2J1ZmZlciBidWZmZXI7CiAgICAgUHlPYmplY3QgKnY7CkBAIC0xMzk1LDcgKzMwMDYsNyBAQAogICAgIGlmIChQeUJ5dGVzX0NoZWNrKG9iaikpIHsKICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUob2JqKSA9PSAwKSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7Ci0gICAgICAgICAgICB2ID0gKFB5T2JqZWN0ICopIHVuaWNvZGVfZW1wdHk7CisgICAgICAgICAgICB2ID0gdW5pY29kZV9lbXB0eTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlKApAQCAtMTQyMiw3ICszMDMzLDcgQEAKIAogICAgIGlmIChidWZmZXIubGVuID09IDApIHsKICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOwotICAgICAgICB2ID0gKFB5T2JqZWN0ICopIHVuaWNvZGVfZW1wdHk7CisgICAgICAgIHYgPSB1bmljb2RlX2VtcHR5OwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlKChjaGFyKikgYnVmZmVyLmJ1ZiwgYnVmZmVyLmxlbiwgZW5jb2RpbmcsIGVycm9ycyk7CkBAIC0xNDQzLDYgKzMwNTQsMTAgQEAKICAgICBjaGFyICpsOwogICAgIGNoYXIgKmxfZW5kOwogCisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgc3RyY3B5KGxvd2VyLCAidXRmLTgiKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQogICAgIGUgPSBlbmNvZGluZzsKICAgICBsID0gbG93ZXI7CiAgICAgbF9lbmQgPSAmbG93ZXJbbG93ZXJfbGVuIC0gMV07CkBAIC0xNDY0LDI2ICszMDc5LDI2IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGUoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICpidWZmZXIgPSBOVUxMLCAqdW5pY29kZTsKICAgICBQeV9idWZmZXIgaW5mbzsKICAgICBjaGFyIGxvd2VyWzExXTsgIC8qIEVub3VnaCBmb3IgYW55IGVuY29kaW5nIHNob3J0Y3V0ICovCiAKLSAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKLSAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7Ci0KICAgICAvKiBTaG9ydGN1dHMgZm9yIGNvbW1vbiBkZWZhdWx0IGVuY29kaW5ncyAqLwogICAgIGlmIChub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGxvd2VyLCBzaXplb2YobG93ZXIpKSkgewotICAgICAgICBpZiAoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4KHMsIHNpemUsIGVycm9ycyk7CisgICAgICAgIGlmICgoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKSB8fAorICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgInV0ZjgiKSA9PSAwKSkKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CiAgICAgICAgIGVsc2UgaWYgKChzdHJjbXAobG93ZXIsICJsYXRpbi0xIikgPT0gMCkgfHwKKyAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDApIHx8CiAgICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc28tODg1OS0xIikgPT0gMCkpCiAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxhdGluMShzLCBzaXplLCBlcnJvcnMpOwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorI2lmZGVmIEhBVkVfTUJDUwogICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDUyhzLCBzaXplLCBlcnJvcnMpOwogI2VuZGlmCkBAIC0xNTEzLDE2ICszMTI4LDE3IEBACiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAgICAgUHlfREVDUkVGKGJ1ZmZlcik7Ci0gICAgcmV0dXJuIHVuaWNvZGU7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHVuaWNvZGUpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRihidWZmZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdChQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdChQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKIApAQCAtMTUzOCwxNSArMzE1NCwxNiBAQAogICAgIHYgPSBQeUNvZGVjX0RlY29kZSh1bmljb2RlLCBlbmNvZGluZywgZXJyb3JzKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogCiAgIG9uRXJyb3I6CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwogCkBAIC0xNTY5LDE2ICszMTg2LDE3IEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGUoY29uc3QgUHlfVU5JQ09ERSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZShjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnYsICp1bmljb2RlOwogCkBAIC0xNTkwLDkgKzMyMDgsMTAgQEAKICAgICByZXR1cm4gdjsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7CiAKQEAgLTE2MTQsMTcgKzMyMzMsMTkyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBzaXplX3QKK3djc3RvbWJzX2Vycm9ycG9zKGNvbnN0IHdjaGFyX3QgKndzdHIpCit7CisgICAgc2l6ZV90IGxlbjsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgd2NoYXJfdCBidWZbM107CisjZWxzZQorICAgIHdjaGFyX3QgYnVmWzJdOworI2VuZGlmCisgICAgY2hhciBvdXRidWZbTUJfTEVOX01BWF07CisgICAgY29uc3Qgd2NoYXJfdCAqc3RhcnQsICpwcmV2aW91czsKKworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICBidWZbMl0gPSAwOworI2Vsc2UKKyAgICBidWZbMV0gPSAwOworI2VuZGlmCisgICAgc3RhcnQgPSB3c3RyOworICAgIHdoaWxlICgqd3N0ciAhPSBMJ1wwJykKKyAgICB7CisgICAgICAgIHByZXZpb3VzID0gd3N0cjsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKHdzdHJbMF0pCisgICAgICAgICAgICAmJiBQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUod3N0clsxXSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJ1ZlswXSA9IHdzdHJbMF07CisgICAgICAgICAgICBidWZbMV0gPSB3c3RyWzFdOworICAgICAgICAgICAgd3N0ciArPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYnVmWzBdID0gKndzdHI7CisgICAgICAgICAgICBidWZbMV0gPSAwOworICAgICAgICAgICAgd3N0cisrOworICAgICAgICB9CisjZWxzZQorICAgICAgICBidWZbMF0gPSAqd3N0cjsKKyAgICAgICAgd3N0cisrOworI2VuZGlmCisgICAgICAgIGxlbiA9IHdjc3RvbWJzKG91dGJ1ZiwgYnVmLCBzaXplb2Yob3V0YnVmKSk7CisgICAgICAgIGlmIChsZW4gPT0gKHNpemVfdCktMSkKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91cyAtIHN0YXJ0OworICAgIH0KKworICAgIC8qIGZhaWxlZCB0byBmaW5kIHRoZSB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgKi8KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbG9jYWxlX2Vycm9yX2hhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKnN1cnJvZ2F0ZWVzY2FwZSkKK3sKKyAgICBpZiAoZXJyb3JzID09IE5VTEwpIHsKKyAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgICAgICAqc3Vycm9nYXRlZXNjYXBlID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3Vycm9nYXRlZXNjYXBlIikgPT0gMCkgeworICAgICAgICAqc3Vycm9nYXRlZXNjYXBlID0gMTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAib25seSAnc3RyaWN0JyBhbmQgJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlcnMgIgorICAgICAgICAgICAgICAgICAiYXJlIHN1cHBvcnRlZCwgbm90ICclcyciLAorICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgIHJldHVybiAtMTsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUxvY2FsZShQeU9iamVjdCAqdW5pY29kZSwgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5X3NzaXplX3Qgd2xlbiwgd2xlbjI7CisgICAgd2NoYXJfdCAqd3N0cjsKKyAgICBQeU9iamVjdCAqYnl0ZXMgPSBOVUxMOworICAgIGNoYXIgKmVycm1zZzsKKyAgICBQeU9iamVjdCAqcmVhc29uOworICAgIFB5T2JqZWN0ICpleGM7CisgICAgc2l6ZV90IGVycm9yX3BvczsKKyAgICBpbnQgc3Vycm9nYXRlZXNjYXBlOworCisgICAgaWYgKGxvY2FsZV9lcnJvcl9oYW5kbGVyKGVycm9ycywgJnN1cnJvZ2F0ZWVzY2FwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHdzdHIgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh1bmljb2RlLCAmd2xlbik7CisgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB3bGVuMiA9IHdjc2xlbih3c3RyKTsKKyAgICBpZiAod2xlbjIgIT0gd2xlbikgeworICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHN1cnJvZ2F0ZWVzY2FwZSkgeworICAgICAgICAvKiBsb2NhbGUgZW5jb2Rpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUgKi8KKyAgICAgICAgY2hhciAqc3RyOworCisgICAgICAgIHN0ciA9IF9QeV93Y2hhcjJjaGFyKHdzdHIsICZlcnJvcl9wb3MpOworICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChlcnJvcl9wb3MgPT0gKHNpemVfdCktMSkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGdvdG8gZW5jb2RlX2Vycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoc3RyKTsKKyAgICAgICAgUHlNZW1fRnJlZShzdHIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc2l6ZV90IGxlbiwgbGVuMjsKKworICAgICAgICBsZW4gPSB3Y3N0b21icyhOVUxMLCB3c3RyLCAwKTsKKyAgICAgICAgaWYgKGxlbiA9PSAoc2l6ZV90KS0xKSB7CisgICAgICAgICAgICBlcnJvcl9wb3MgPSAoc2l6ZV90KS0xOworICAgICAgICAgICAgZ290byBlbmNvZGVfZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKTsKKyAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGxlbjIgPSB3Y3N0b21icyhQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIHdzdHIsIGxlbisxKTsKKyAgICAgICAgaWYgKGxlbjIgPT0gKHNpemVfdCktMSB8fCBsZW4yID4gbGVuKSB7CisgICAgICAgICAgICBlcnJvcl9wb3MgPSAoc2l6ZV90KS0xOworICAgICAgICAgICAgZ290byBlbmNvZGVfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CisgICAgcmV0dXJuIGJ5dGVzOworCitlbmNvZGVfZXJyb3I6CisgICAgZXJybXNnID0gc3RyZXJyb3IoZXJybm8pOworICAgIGFzc2VydChlcnJtc2cgIT0gTlVMTCk7CisKKyAgICBpZiAoZXJyb3JfcG9zID09IChzaXplX3QpLTEpCisgICAgICAgIGVycm9yX3BvcyA9IHdjc3RvbWJzX2Vycm9ycG9zKHdzdHIpOworCisgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICBQeV9YREVDUkVGKGJ5dGVzKTsKKworICAgIGlmIChlcnJtc2cgIT0gTlVMTCkgeworICAgICAgICBzaXplX3QgZXJybGVuOworICAgICAgICB3c3RyID0gX1B5X2NoYXIyd2NoYXIoZXJybXNnLCAmZXJybGVuKTsKKyAgICAgICAgaWYgKHdzdHIgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVhc29uID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3c3RyLCBlcnJsZW4pOworICAgICAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBlcnJtc2cgPSBOVUxMOworICAgIH0KKyAgICBpZiAoZXJybXNnID09IE5VTEwpCisgICAgICAgIHJlYXNvbiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKAorICAgICAgICAgICAgIndjc3RvbWJzKCkgZW5jb3VudGVyZWQgYW4gdW5lbmNvZGFibGUgIgorICAgICAgICAgICAgIndpZGUgY2hhcmFjdGVyIik7CisgICAgaWYgKHJlYXNvbiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGV4YyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IsICJzT25uTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbGUiLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCllcnJvcl9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShlcnJvcl9wb3MrMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbik7CisgICAgUHlfREVDUkVGKHJlYXNvbik7CisgICAgaWYgKGV4YyAhPSBOVUxMKSB7CisgICAgICAgIFB5Q29kZWNfU3RyaWN0RXJyb3JzKGV4Yyk7CisgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCi0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVNQkNTKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworI2lmZGVmIEhBVkVfTUJDUworICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBOVUxMKTsKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsICJzdXJyb2dhdGVlc2NhcGUiKTsKICNlbHNlCiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgLyogQm9vdHN0cmFwIGNoZWNrOiBpZiB0aGUgZmlsZXN5c3RlbSBjb2RlYyBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIHdlCkBAIC0xNjQyLDQ2ICszNDM2LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIGxvY2FsZSBlbmNvZGluZyB3aXRoIHN1cnJvZ2F0ZWVzY2FwZSAqLwotICAgICAgICB3Y2hhcl90ICp3Y2hhcjsKLSAgICAgICAgY2hhciAqYnl0ZXM7Ci0gICAgICAgIFB5T2JqZWN0ICpieXRlc19vYmo7Ci0gICAgICAgIHNpemVfdCBlcnJvcl9wb3M7Ci0KLSAgICAgICAgd2NoYXIgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh1bmljb2RlLCBOVUxMKTsKLSAgICAgICAgaWYgKHdjaGFyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYnl0ZXMgPSBfUHlfd2NoYXIyY2hhcih3Y2hhciwgJmVycm9yX3Bvcyk7Ci0gICAgICAgIGlmIChieXRlcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoZXJyb3JfcG9zICE9IChzaXplX3QpLTEpIHsKLSAgICAgICAgICAgICAgICBjaGFyICplcnJtc2cgPSBzdHJlcnJvcihlcnJubyk7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm1zZyA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBlcnJtc2cgPSAiUHlfd2NoYXIyY2hhcigpIGZhaWxlZCI7Ci0gICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLAotICAgICAgICAgICAgICAgICAgICAiZmlsZXN5c3RlbWVuY29kaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JfcG9zLCBlcnJvcl9wb3MrMSwKLSAgICAgICAgICAgICAgICAgICAgZXJybXNnKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUod2NoYXIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlNZW1fRnJlZSh3Y2hhcik7Ci0KLSAgICAgICAgYnl0ZXNfb2JqID0gUHlCeXRlc19Gcm9tU3RyaW5nKGJ5dGVzKTsKLSAgICAgICAgUHlNZW1fRnJlZShieXRlcyk7Ci0gICAgICAgIHJldHVybiBieXRlc19vYmo7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKHVuaWNvZGUsICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICB9CiAjZW5kaWYKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgY2hhciBsb3dlclsxMV07ICAvKiBFbm91Z2ggZm9yIGFueSBlbmNvZGluZyBzaG9ydGN1dCAqLwpAQCAtMTY5MSw0NiArMzQ1NCwyNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKLSAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7Ci0KICAgICAvKiBTaG9ydGN1dHMgZm9yIGNvbW1vbiBkZWZhdWx0IGVuY29kaW5ncyAqLwogICAgIGlmIChub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGxvd2VyLCBzaXplb2YobG93ZXIpKSkgewotICAgICAgICBpZiAoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICBpZiAoKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkgfHwKKyAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJ1dGY4IikgPT0gMCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgTlVMTCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoKHN0cmNtcChsb3dlciwgImxhdGluLTEiKSA9PSAwKSB8fAorICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCkgfHwKICAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzby04ODU5LTEiKSA9PSAwKSkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisjaWZkZWYgSEFWRV9NQkNTCiAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVNQkNTKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIGVycm9ycyk7CiAjZW5kaWYKICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVBU0NJSShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOwogICAgIH0KLSAgICAvKiBEdXJpbmcgYm9vdHN0cmFwLCB3ZSBtYXkgbmVlZCB0byBmaW5kIHRoZSBlbmNvZGluZ3MKLSAgICAgICBwYWNrYWdlLCB0byBsb2FkIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZywgYW5kIHJlcXVpcmUgdGhlCi0gICAgICAgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaW4gb3JkZXIgdG8gbG9hZCB0aGUgZW5jb2RpbmdzCi0gICAgICAgcGFja2FnZS4KLQotICAgICAgIEJyZWFrIG91dCBvZiB0aGlzIGRlcGVuZGVuY3kgYnkgYXNzdW1pbmcgdGhhdCB0aGUgcGF0aCB0bwotICAgICAgIHRoZSBlbmNvZGluZ3MgbW9kdWxlIGlzIEFTQ0lJLW9ubHkuICBYWFggY291bGQgdHJ5IHdjc3RvbWJzCi0gICAgICAgaW5zdGVhZCwgaWYgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGlzIHRoZSBsb2NhbGUncwotICAgICAgIGVuY29kaW5nLiAqLwotICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nICYmCi0gICAgICAgICAgICAgc3RyY21wKGVuY29kaW5nLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKSA9PSAwICYmCi0gICAgICAgICAgICAgIVB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycC0+Y29kZWNzX2luaXRpYWxpemVkKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUFTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOwogCiAgICAgLyogRW5jb2RlIHZpYSB0aGUgY29kZWMgcmVnaXN0cnkgKi8KICAgICB2ID0gUHlDb2RlY19FbmNvZGUodW5pY29kZSwgZW5jb2RpbmcsIGVycm9ycyk7CkBAIC0xNzY2LDkgKzM1MTAsMTAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7CiAKQEAgLTE3OTcsMjQgKzM1NDIsMTUxIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3N0YXRpYyBzaXplX3QKK21ic3Rvd2NzX2Vycm9ycG9zKGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IGxlbikKIHsKLSAgICBQeU9iamVjdCAqdiA9ICgoUHlVbmljb2RlT2JqZWN0ICopdW5pY29kZSktPmRlZmVuYzsKLSAgICBpZiAodikKLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgaWYgKGVycm9ycyAhPSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJub24tTlVMTCBlbmNvZGluZyBpbiBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmciKTsKLSAgICB2ID0gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgaWYgKCF2KQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAoKFB5VW5pY29kZU9iamVjdCAqKXVuaWNvZGUpLT5kZWZlbmMgPSB2OwotICAgIHJldHVybiB2OworI2lmZGVmIEhBVkVfTUJSVE9XQworICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gc3RyOworICAgIG1ic3RhdGVfdCBtYnM7CisgICAgc2l6ZV90IGNvbnZlcnRlZDsKKyAgICB3Y2hhcl90IGNoOworCisgICAgbWVtc2V0KCZtYnMsIDAsIHNpemVvZiBtYnMpOworICAgIHdoaWxlIChsZW4pCisgICAgeworICAgICAgICBjb252ZXJ0ZWQgPSBtYnJ0b3djKCZjaCwgKGNoYXIqKXN0ciwgbGVuLCAmbWJzKTsKKyAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAwKQorICAgICAgICAgICAgLyogUmVhY2hlZCBlbmQgb2Ygc3RyaW5nICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAoc2l6ZV90KS0xIHx8IGNvbnZlcnRlZCA9PSAoc2l6ZV90KS0yKSB7CisgICAgICAgICAgICAvKiBDb252ZXJzaW9uIGVycm9yIG9yIGluY29tcGxldGUgY2hhcmFjdGVyICovCisgICAgICAgICAgICByZXR1cm4gc3RyIC0gc3RhcnQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzdHIgKz0gY29udmVydGVkOworICAgICAgICAgICAgbGVuIC09IGNvbnZlcnRlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBmYWlsZWQgdG8gZmluZCB0aGUgdW5kZWNvZGFibGUgYnl0ZSBzZXF1ZW5jZSAqLworICAgIHJldHVybiAwOworI2VuZGlmCisgICAgcmV0dXJuIDA7CiB9CiAKIFB5T2JqZWN0KgorUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICB3Y2hhcl90IHNtYWxsYnVmWzI1Nl07CisgICAgc2l6ZV90IHNtYWxsYnVmX2xlbiA9IFB5X0FSUkFZX0xFTkdUSChzbWFsbGJ1Zik7CisgICAgd2NoYXJfdCAqd3N0cjsKKyAgICBzaXplX3Qgd2xlbiwgd2xlbjI7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgaW50IHN1cnJvZ2F0ZWVzY2FwZTsKKyAgICBzaXplX3QgZXJyb3JfcG9zOworICAgIGNoYXIgKmVycm1zZzsKKyAgICBQeU9iamVjdCAqcmVhc29uLCAqZXhjOworCisgICAgaWYgKGxvY2FsZV9lcnJvcl9oYW5kbGVyKGVycm9ycywgJnN1cnJvZ2F0ZWVzY2FwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzdHJbbGVuXSAhPSAnXDAnIHx8IGxlbiAhPSBzdHJsZW4oc3RyKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHN1cnJvZ2F0ZWVzY2FwZSkKKyAgICB7CisgICAgICAgIHdzdHIgPSBfUHlfY2hhcjJ3Y2hhcihzdHIsICZ3bGVuKTsKKyAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKHdsZW4gPT0gKHNpemVfdCktMSkKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgd2xlbik7CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQorICAgIGVsc2UgeworI2lmbmRlZiBIQVZFX0JST0tFTl9NQlNUT1dDUworICAgICAgICB3bGVuID0gbWJzdG93Y3MoTlVMTCwgc3RyLCAwKTsKKyNlbHNlCisgICAgICAgIHdsZW4gPSBsZW47CisjZW5kaWYKKyAgICAgICAgaWYgKHdsZW4gPT0gKHNpemVfdCktMSkKKyAgICAgICAgICAgIGdvdG8gZGVjb2RlX2Vycm9yOworICAgICAgICBpZiAod2xlbisxIDw9IHNtYWxsYnVmX2xlbikgeworICAgICAgICAgICAgd3N0ciA9IHNtYWxsYnVmOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHdsZW4gPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZih3Y2hhcl90KSAtIDEpCisgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICAgICAgICAgIHdzdHIgPSBQeU1lbV9NYWxsb2MoKHdsZW4rMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgaWYgKCF3c3RyKQorICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICB9CisKKyAgICAgICAgLyogVGhpcyBzaG91bGRuJ3QgZmFpbCBub3cgKi8KKyAgICAgICAgd2xlbjIgPSBtYnN0b3djcyh3c3RyLCBzdHIsIHdsZW4rMSk7CisgICAgICAgIGlmICh3bGVuMiA9PSAoc2l6ZV90KS0xKSB7CisgICAgICAgICAgICBpZiAod3N0ciAhPSBzbWFsbGJ1ZikKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICAgICAgZ290byBkZWNvZGVfZXJyb3I7CisgICAgICAgIH0KKyNpZmRlZiBIQVZFX0JST0tFTl9NQlNUT1dDUworICAgICAgICBhc3NlcnQod2xlbjIgPT0gd2xlbik7CisjZW5kaWYKKyAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgd2xlbjIpOworICAgICAgICBpZiAod3N0ciAhPSBzbWFsbGJ1ZikKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQorICAgIHJldHVybiB1bmljb2RlOworCitkZWNvZGVfZXJyb3I6CisgICAgZXJybXNnID0gc3RyZXJyb3IoZXJybm8pOworICAgIGFzc2VydChlcnJtc2cgIT0gTlVMTCk7CisKKyAgICBlcnJvcl9wb3MgPSBtYnN0b3djc19lcnJvcnBvcyhzdHIsIGxlbik7CisgICAgaWYgKGVycm1zZyAhPSBOVUxMKSB7CisgICAgICAgIHNpemVfdCBlcnJsZW47CisgICAgICAgIHdzdHIgPSBfUHlfY2hhcjJ3Y2hhcihlcnJtc2csICZlcnJsZW4pOworICAgICAgICBpZiAod3N0ciAhPSBOVUxMKSB7CisgICAgICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIGVycmxlbik7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVycm1zZyA9IE5VTEw7CisgICAgfQorICAgIGlmIChlcnJtc2cgPT0gTlVMTCkKKyAgICAgICAgcmVhc29uID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoCisgICAgICAgICAgICAibWJzdG93Y3MoKSBlbmNvdW50ZXJlZCBhbiBpbnZhbGlkIG11bHRpYnl0ZSBzZXF1ZW5jZSIpOworICAgIGlmIChyZWFzb24gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlFeGNfVW5pY29kZURlY29kZUVycm9yLCAic3kjbm5PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsZSIsIHN0ciwgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCllcnJvcl9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShlcnJvcl9wb3MrMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbik7CisgICAgUHlfREVDUkVGKHJlYXNvbik7CisgICAgaWYgKGV4YyAhPSBOVUxMKSB7CisgICAgICAgIFB5Q29kZWNfU3RyaWN0RXJyb3JzKGV4Yyk7CisgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0KgorUHlVbmljb2RlX0RlY29kZUxvY2FsZShjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUgPSAoUHlfc3NpemVfdClzdHJsZW4oc3RyKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoc3RyLCBzaXplLCBlcnJvcnMpOworfQorCisKK1B5T2JqZWN0KgogUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjb25zdCBjaGFyICpzKSB7CiAgICAgUHlfc3NpemVfdCBzaXplID0gKFB5X3NzaXplX3Qpc3RybGVuKHMpOwogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShzLCBzaXplKTsKQEAgLTE4MjMsMTAgKzM2OTUsMTAgQEAKIFB5T2JqZWN0KgogUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQogewotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorI2lmZGVmIEhBVkVfTUJDUwogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDUyhzLCBzaXplLCBOVUxMKTsKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQotICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCBzaXplLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgInN1cnJvZ2F0ZWVzY2FwZSIsIE5VTEwpOwogI2Vsc2UKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICAvKiBCb290c3RyYXAgY2hlY2s6IGlmIHRoZSBmaWxlc3lzdGVtIGNvZGVjIGlzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgd2UKQEAgLTE4NDQsMjMgKzM3MTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiBsb2NhbGUgZW5jb2Rpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUgKi8KLSAgICAgICAgd2NoYXJfdCAqd2NoYXI7Ci0gICAgICAgIFB5T2JqZWN0ICp1bmljb2RlOwotICAgICAgICBzaXplX3QgbGVuOwotCi0gICAgICAgIGlmIChzW3NpemVdICE9ICdcMCcgfHwgc2l6ZSAhPSBzdHJsZW4ocykpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgIHdjaGFyID0gX1B5X2NoYXIyd2NoYXIocywgJmxlbik7Ci0gICAgICAgIGlmICh3Y2hhciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KLSAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod2NoYXIsIGxlbik7Ci0gICAgICAgIFB5TWVtX0ZyZWUod2NoYXIpOwotICAgICAgICByZXR1cm4gdW5pY29kZTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTE5MjMsMTMgKzM3NzksMTMgQEAKIFB5VW5pY29kZV9GU0RlY29kZXIoUHlPYmplY3QqIGFyZywgdm9pZCogYWRkcikKIHsKICAgICBQeU9iamVjdCAqb3V0cHV0ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgdm9pZCAqZGF0YTsKICAgICBpZiAoYXJnID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKCooUHlPYmplY3QqKilhZGRyKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgb3V0cHV0ID0gYXJnOwogICAgICAgICBQeV9JTkNSRUYob3V0cHV0KTsKICAgICB9CkBAIC0xOTQ4LDkgKzM4MDQsMTIgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob3V0cHV0KTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KTsKLSAgICBpZiAoc2l6ZSAhPSBQeV9VTklDT0RFX3N0cmxlbihkYXRhKSkgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob3V0cHV0KSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChmaW5kY2hhcihQeVVuaWNvZGVfREFUQShvdXRwdXQpLCBQeVVuaWNvZGVfS0lORChvdXRwdXQpLAorICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvdXRwdXQpLCAwLCAxKSA+PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIik7CiAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE5NjEsNDAgKzM4MjAsMTY2IEBACiAKIAogY2hhcioKLV9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICpwc2l6ZSkKK1B5VW5pY29kZV9Bc1VURjhBbmRTaXplKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICpwc2l6ZSkKIHsKICAgICBQeU9iamVjdCAqYnl0ZXM7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgYnl0ZXMgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcodW5pY29kZSwgTlVMTCk7Ci0gICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHBzaXplICE9IE5VTEwpCi0gICAgICAgICpwc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOwotICAgIHJldHVybiBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CisKKyAgICBpZiAoUHlVbmljb2RlX1VURjgodW5pY29kZSkgPT0gTlVMTCkgeworICAgICAgICBhc3NlcnQoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKHVuaWNvZGUpKTsKKyAgICAgICAgYnl0ZXMgPSBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCAic3RyaWN0Iik7CisgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IFB5T2JqZWN0X01BTExPQyhQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSArIDEpOworICAgICAgICBpZiAoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7CisgICAgICAgIFB5X01FTUNQWShfUHlVbmljb2RlX1VURjgodW5pY29kZSksCisgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksCisgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpICsgMSk7CisgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgfQorCisgICAgaWYgKHBzaXplKQorICAgICAgICAqcHNpemUgPSBQeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpOwogfQogCiBjaGFyKgotX1B5VW5pY29kZV9Bc1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5VW5pY29kZV9Bc1VURjgoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKHVuaWNvZGUsIE5VTEwpOworICAgIHJldHVybiBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSh1bmljb2RlLCBOVUxMKTsKIH0KIAotUHlfVU5JQ09ERSAqUHlVbmljb2RlX0FzVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSkKK1B5X1VOSUNPREUgKgorUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKnNpemUpCiB7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqb25lX2J5dGU7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gNAorICAgIGNvbnN0IFB5X1VDUzIgKnR3b19ieXRlczsKKyNlbHNlCisgICAgY29uc3QgUHlfVUNTNCAqZm91cl9ieXRlczsKKyAgICBjb25zdCBQeV9VQ1M0ICp1Y3M0X2VuZDsKKyAgICBQeV9zc2l6ZV90IG51bV9zdXJyb2dhdGVzOworI2VuZGlmCisgICAgd2NoYXJfdCAqdzsKKyAgICB3Y2hhcl90ICp3Y2hhcl9lbmQ7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CisgICAgaWYgKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9PSBOVUxMKSB7CisgICAgICAgIC8qIE5vbi1BU0NJSSBjb21wYWN0IHVuaWNvZGUgb2JqZWN0ICovCisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgIT0gMCk7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOwogCi0gIG9uRXJyb3I6Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVVuaWNvZGVfS0lORCh1bmljb2RlKSA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgICAgIGZvdXJfYnl0ZXMgPSBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgICAgIHVjczRfZW5kID0gZm91cl9ieXRlcyArIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICAgICAgbnVtX3N1cnJvZ2F0ZXMgPSAwOworCisgICAgICAgICAgICBmb3IgKDsgZm91cl9ieXRlcyA8IHVjczRfZW5kOyArK2ZvdXJfYnl0ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoKmZvdXJfYnl0ZXMgPiAweEZGRkYpCisgICAgICAgICAgICAgICAgICAgICsrbnVtX3N1cnJvZ2F0ZXM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9ICh3Y2hhcl90ICopIFB5T2JqZWN0X01BTExPQygKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHdjaGFyX3QpICogKF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpICsgMSArIG51bV9zdXJyb2dhdGVzKSk7CisgICAgICAgICAgICBpZiAoIV9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgKyBudW1fc3Vycm9nYXRlczsKKworICAgICAgICAgICAgdyA9IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKTsKKyAgICAgICAgICAgIHdjaGFyX2VuZCA9IHcgKyBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICAgICAgZm91cl9ieXRlcyA9IFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICAgICAgZm9yICg7IGZvdXJfYnl0ZXMgPCB1Y3M0X2VuZDsgKytmb3VyX2J5dGVzLCArK3cpIHsKKyAgICAgICAgICAgICAgICBpZiAoKmZvdXJfYnl0ZXMgPiAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KCpmb3VyX2J5dGVzIDw9IE1BWF9VTklDT0RFKTsKKyAgICAgICAgICAgICAgICAgICAgLyogZW5jb2RlIHN1cnJvZ2F0ZSBwYWlyIGluIHRoaXMgY2FzZSAqLworICAgICAgICAgICAgICAgICAgICAqdysrID0gUHlfVU5JQ09ERV9ISUdIX1NVUlJPR0FURSgqZm91cl9ieXRlcyk7CisgICAgICAgICAgICAgICAgICAgICp3ICAgPSBQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoKmZvdXJfYnl0ZXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICp3ID0gKmZvdXJfYnl0ZXM7CisKKyAgICAgICAgICAgICAgICBpZiAodyA+IHdjaGFyX2VuZCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoMCAmJiAiTWlzY2FsY3VsYXRlZCBzdHJpbmcgZW5kIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgKncgPSAwOworI2Vsc2UKKyAgICAgICAgICAgIC8qIHNpemVvZih3Y2hhcl90KSA9PSA0ICovCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJJbXBvc3NpYmxlIHVuaWNvZGUgb2JqZWN0IHN0YXRlLCB3c3RyIGFuZCBzdHIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIHNoYXJlIG1lbW9yeSBhbHJlYWR5LiIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9ICh3Y2hhcl90ICopIFB5T2JqZWN0X01BTExPQyhzaXplb2Yod2NoYXJfdCkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgKyAxKSk7CisgICAgICAgICAgICBpZiAoIV9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgICAgIHcgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgICAgICAgICB3Y2hhcl9lbmQgPSB3ICsgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSk7CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfS0lORCh1bmljb2RlKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgICAgIG9uZV9ieXRlID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgICAgICAgICAgZm9yICg7IHcgPCB3Y2hhcl9lbmQ7ICsrb25lX2J5dGUsICsrdykKKyAgICAgICAgICAgICAgICAgICAgKncgPSAqb25lX2J5dGU7CisgICAgICAgICAgICAgICAgLyogbnVsbC10ZXJtaW5hdGUgdGhlIHdzdHIgKi8KKyAgICAgICAgICAgICAgICAqdyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfS0lORCh1bmljb2RlKSA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDQKKyAgICAgICAgICAgICAgICB0d29fYnl0ZXMgPSBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBmb3IgKDsgdyA8IHdjaGFyX2VuZDsgKyt0d29fYnl0ZXMsICsrdykKKyAgICAgICAgICAgICAgICAgICAgKncgPSAqdHdvX2J5dGVzOworICAgICAgICAgICAgICAgIC8qIG51bGwtdGVybWluYXRlIHRoZSB3c3RyICovCisgICAgICAgICAgICAgICAgKncgPSAwOworI2Vsc2UKKyAgICAgICAgICAgICAgICAvKiBzaXplb2Yod2NoYXJfdCkgPT0gMiAqLworICAgICAgICAgICAgICAgIFB5T2JqZWN0X0ZSRUUoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKTsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkltcG9zc2libGUgdW5pY29kZSBvYmplY3Qgc3RhdGUsIHdzdHIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBzdHIgc2hvdWxkIHNoYXJlIG1lbW9yeSBhbHJlYWR5LiIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoMCAmJiAiVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmIChzaXplICE9IE5VTEwpCisgICAgICAgICpzaXplID0gUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgIHJldHVybiBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CiB9CiAKLVB5X3NzaXplX3QgUHlVbmljb2RlX0dldFNpemUoUHlPYmplY3QgKnVuaWNvZGUpCitQeV9VTklDT0RFICoKK1B5VW5pY29kZV9Bc1VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHVuaWNvZGUsIE5VTEwpOworfQorCisKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9HZXRTaXplKFB5T2JqZWN0ICp1bmljb2RlKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CkBAIC0yMDA2LDcgKzM5OTEsNTcgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKLWNvbnN0IGNoYXIgKlB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmcodm9pZCkKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9HZXRMZW5ndGgoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworfQorCitQeV9VQ1M0CitQeVVuaWNvZGVfUmVhZENoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgpCit7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkgfHwgUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiAoUHlfVUNTNCktMTsKKyAgICB9CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOworICAgIH0KKyAgICByZXR1cm4gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBpbmRleCk7Cit9CisKK2ludAorUHlVbmljb2RlX1dyaXRlQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCwgUHlfVUNTNCBjaCkKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSB8fCAhUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh1bmljb2RlX2NoZWNrX21vZGlmaWFibGUodW5pY29kZSkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoY2ggPiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJjaGFyYWN0ZXIgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgaW5kZXgsIGNoKTsKKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgY2hhciAqCitQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKHZvaWQpCiB7CiAgICAgcmV0dXJuICJ1dGYtOCI7CiB9CkBAIC0yMDQ1LDI2ICs0MDgwLDI5IEBACiAgICByZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgogKi8KIAotc3RhdGljCi1pbnQgdW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqcmVhc29uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKippbnB1dCwgY29uc3QgY2hhciAqKmluZW5kLCBQeV9zc2l6ZV90ICpzdGFydGlucG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmVuZGlucG9zLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwgY29uc3QgY2hhciAqKmlucHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqKm91dHB1dCwgUHlfc3NpemVfdCAqb3V0cG9zLCBQeV9VTklDT0RFICoqb3V0cHRyKQorc3RhdGljIGludAordW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqaW5wdXQsIGNvbnN0IGNoYXIgKippbmVuZCwgUHlfc3NpemVfdCAqc3RhcnRpbnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmVuZGlucG9zLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwgY29uc3QgY2hhciAqKmlucHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipvdXRwdXQsIFB5X3NzaXplX3QgKm91dHBvcykKIHsKICAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKICAgICBQeU9iamVjdCAqcmVzdHVwbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IG91dHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoKm91dHB1dCk7CisgICAgUHlfc3NpemVfdCBvdXRzaXplOwogICAgIFB5X3NzaXplX3QgaW5zaXplOwogICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplOwogICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgIFB5X1VOSUNPREUgKnJlcHB0cjsKICAgICBQeU9iamVjdCAqaW5wdXRvYmogPSBOVUxMOwotICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKICAgICBpbnQgcmVzID0gLTE7CiAKKyAgICBpZiAoX1B5VW5pY29kZV9LSU5EKCpvdXRwdXQpICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKQorICAgICAgICBvdXRzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKm91dHB1dCk7CisgICAgZWxzZQorICAgICAgICBvdXRzaXplID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCgqb3V0cHV0KTsKKwogICAgIGlmICgqZXJyb3JIYW5kbGVyID09IE5VTEwpIHsKICAgICAgICAgKmVycm9ySGFuZGxlciA9IFB5Q29kZWNfTG9va3VwRXJyb3IoZXJyb3JzKTsKICAgICAgICAgaWYgKCplcnJvckhhbmRsZXIgPT0gTlVMTCkKQEAgLTIwODgsNiArNDEyNiw4IEBACiAgICAgfQogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShyZXN0dXBsZSwgYXJncGFyc2UsICZQeVVuaWNvZGVfVHlwZSwgJnJlcHVuaWNvZGUsICZuZXdwb3MpKQogICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgLyogQ29weSBiYWNrIHRoZSBieXRlcyB2YXJpYWJsZXMsIHdoaWNoIG1pZ2h0IGhhdmUgYmVlbiBtb2RpZmllZCBieSB0aGUKICAgICAgICBjYWxsYmFjayAqLwpAQCAtMjExMSwyNSArNDE1MSw0NyBAQAogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCi0gICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCi0gICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyAoc3RhcnRpbmcKLSAgICAgICBhdCB0aGUgbmV3IGlucHV0IHBvc2l0aW9uKSwgc28gd2Ugd29uJ3QgaGF2ZSB0byBjaGVjayBzcGFjZQotICAgICAgIHdoZW4gdGhlcmUgYXJlIG5vIGVycm9ycyBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nKSAqLwotICAgIHJlcHB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHVuaWNvZGUpOwotICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVwdW5pY29kZSk7Ci0gICAgcmVxdWlyZWRzaXplID0gKm91dHBvcyArIHJlcHNpemUgKyBpbnNpemUtbmV3cG9zOwotICAgIGlmIChyZXF1aXJlZHNpemUgPiBvdXRzaXplKSB7Ci0gICAgICAgIGlmIChyZXF1aXJlZHNpemU8MipvdXRzaXplKQotICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipvdXRzaXplOwotICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUob3V0cHV0LCByZXF1aXJlZHNpemUpIDwgMCkKKyAgICBpZiAoX1B5VW5pY29kZV9LSU5EKCpvdXRwdXQpICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgIC8qIG5lZWQgbW9yZSBzcGFjZT8gKGF0IGxlYXN0IGVub3VnaCBmb3Igd2hhdCB3ZQorICAgICAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIChzdGFydGluZworICAgICAgICAgICBhdCB0aGUgbmV3IGlucHV0IHBvc2l0aW9uKSwgc28gd2Ugd29uJ3QgaGF2ZSB0byBjaGVjayBzcGFjZQorICAgICAgICAgICB3aGVuIHRoZXJlIGFyZSBubyBlcnJvcnMgaW4gdGhlIHJlc3Qgb2YgdGhlIHN0cmluZykgKi8KKyAgICAgICAgUHlfc3NpemVfdCByZXBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXB1bmljb2RlKTsKKyAgICAgICAgcmVxdWlyZWRzaXplID0gKm91dHBvcyArIHJlcGxlbiArIGluc2l6ZS1uZXdwb3M7CisgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBvdXRzaXplKSB7CisgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplPDIqb3V0c2l6ZSkKKyAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKm91dHNpemU7CisgICAgICAgICAgICBpZiAodW5pY29kZV9yZXNpemUob3V0cHV0LCByZXF1aXJlZHNpemUpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVuaWNvZGVfd2lkZW4ob3V0cHV0LCAqb3V0cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocmVwdW5pY29kZSkpIDwgMCkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgKm91dHB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKCpvdXRwdXQpICsgKm91dHBvczsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoKm91dHB1dCwgKm91dHBvcywgcmVwdW5pY29kZSwgMCwgcmVwbGVuKTsKKyAgICAgICAgKm91dHBvcyArPSByZXBsZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB3Y2hhcl90ICpyZXB3c3RyOworICAgICAgICBQeV9zc2l6ZV90IHJlcHdsZW47CisgICAgICAgIHJlcHdzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShyZXB1bmljb2RlLCAmcmVwd2xlbik7CisgICAgICAgIGlmIChyZXB3c3RyID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIC8qIG5lZWQgbW9yZSBzcGFjZT8gKGF0IGxlYXN0IGVub3VnaCBmb3Igd2hhdCB3ZQorICAgICAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIChzdGFydGluZworICAgICAgICAgICBhdCB0aGUgbmV3IGlucHV0IHBvc2l0aW9uKSwgc28gd2Ugd29uJ3QgaGF2ZSB0byBjaGVjayBzcGFjZQorICAgICAgICAgICB3aGVuIHRoZXJlIGFyZSBubyBlcnJvcnMgaW4gdGhlIHJlc3Qgb2YgdGhlIHN0cmluZykgKi8KKyAgICAgICAgcmVxdWlyZWRzaXplID0gKm91dHBvcyArIHJlcHdsZW4gKyBpbnNpemUtbmV3cG9zOworICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gb3V0c2l6ZSkgeworICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA8IDIqb3V0c2l6ZSkKKyAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKm91dHNpemU7CisgICAgICAgICAgICBpZiAodW5pY29kZV9yZXNpemUob3V0cHV0LCByZXF1aXJlZHNpemUpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgd2NzbmNweShfUHlVbmljb2RlX1dTVFIoKm91dHB1dCkgKyAqb3V0cG9zLCByZXB3c3RyLCByZXB3bGVuKTsKKyAgICAgICAgKm91dHBvcyArPSByZXB3bGVuOwogICAgIH0KICAgICAqZW5kaW5wb3MgPSBuZXdwb3M7CiAgICAgKmlucHRyID0gKmlucHV0ICsgbmV3cG9zOwotICAgIFB5X1VOSUNPREVfQ09QWSgqb3V0cHRyLCByZXBwdHIsIHJlcHNpemUpOwotICAgICpvdXRwdHIgKz0gcmVwc2l6ZTsKLSAgICAqb3V0cG9zICs9IHJlcHNpemU7CiAKICAgICAvKiB3ZSBtYWRlIGl0ISAqLwogICAgIHJlcyA9IDA7CkBAIC0yMjIwLDkgKzQyODIsMTAgQEAKICAgICAgIChkaXJlY3RXUyAmJiAodXRmN19jYXRlZ29yeVsoYyldID09IDIpKSB8fCAgICAgICAgXAogICAgICAgKGRpcmVjdE8gJiYgKHV0ZjdfY2F0ZWdvcnlbKGMpXSA9PSAxKSkpKQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVVURjcoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVVURjcoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOwogfQpAQCAtMjIzNCw0MiArNDI5Nyw0MiBAQAogICogYWxsIHRoZSBzaGlmdCBzdGF0ZSAoc2VlbiBiaXRzLCBudW1iZXIgb2YgYml0cyBzZWVuLCBoaWdoCiAgKiBzdXJyb2dhdGUpLiAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwogICAgIGNvbnN0IGNoYXIgKmU7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CiAgICAgY29uc3QgY2hhciAqZXJybXNnID0gIiI7CiAgICAgaW50IGluU2hpZnQgPSAwOwotICAgIFB5X1VOSUNPREUgKnNoaWZ0T3V0U3RhcnQ7CisgICAgUHlfc3NpemVfdCBzaGlmdE91dFN0YXJ0OwogICAgIHVuc2lnbmVkIGludCBiYXNlNjRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBsb25nIGJhc2U2NGJ1ZmZlciA9IDA7Ci0gICAgUHlfVU5JQ09ERSBzdXJyb2dhdGUgPSAwOworICAgIFB5X1VDUzQgc3Vycm9nYXRlID0gMDsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKKyAgICAvKiBTdGFydCBvZmYgYXNzdW1pbmcgaXQncyBhbGwgQVNDSUkuIFdpZGVuIGxhdGVyIGFzIG5lY2Vzc2FyeS4gKi8KKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOwogICAgIGlmICghdW5pY29kZSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICAgICAqY29uc3VtZWQgPSAwOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CiAgICAgfQogCi0gICAgcCA9IHVuaWNvZGUtPnN0cjsKLSAgICBzaGlmdE91dFN0YXJ0ID0gcDsKKyAgICBzaGlmdE91dFN0YXJ0ID0gb3V0cG9zID0gMDsKICAgICBlID0gcyArIHNpemU7CiAKICAgICB3aGlsZSAocyA8IGUpIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaDsKKyAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgIHJlc3RhcnQ6CiAgICAgICAgIGNoID0gKHVuc2lnbmVkIGNoYXIpICpzOwogCkBAIC0yMjgwLDM0ICs0MzQzLDMxIEBACiAgICAgICAgICAgICAgICAgcysrOwogICAgICAgICAgICAgICAgIGlmIChiYXNlNjRiaXRzID49IDE2KSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIHdlIGhhdmUgZW5vdWdoIGJpdHMgZm9yIGEgVVRGLTE2IHZhbHVlICovCi0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgb3V0Q2ggPSAoUHlfVU5JQ09ERSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlNjRidWZmZXIgPj4gKGJhc2U2NGJpdHMtMTYpKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBvdXRDaCA9IChQeV9VQ1M0KShiYXNlNjRidWZmZXIgPj4gKGJhc2U2NGJpdHMtMTYpKTsKICAgICAgICAgICAgICAgICAgICAgYmFzZTY0Yml0cyAtPSAxNjsKICAgICAgICAgICAgICAgICAgICAgYmFzZTY0YnVmZmVyICY9ICgxIDw8IGJhc2U2NGJpdHMpIC0gMTsgLyogY2xlYXIgaGlnaCBiaXRzICovCiAgICAgICAgICAgICAgICAgICAgIGlmIChzdXJyb2dhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV4cGVjdGluZyBhIHNlY29uZCBzdXJyb2dhdGUgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdXRDaCA+PSAweERDMDAgJiYgb3V0Q2ggPD0gMHhERkZGKSB7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9ICgoKHN1cnJvZ2F0ZSAmIDB4M0ZGKTw8MTApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChvdXRDaCAmIDB4M0ZGKSkgKyAweDEwMDAwOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gc3Vycm9nYXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSBvdXRDaDsKLSNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShvdXRDaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoMiA9IFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKHN1cnJvZ2F0ZSwgb3V0Q2gpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoMikgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSBzdXJyb2dhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgc3Vycm9nYXRlKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvdXRDaCA+PSAweEQ4MDAgJiYgb3V0Q2ggPD0gMHhEQkZGKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKG91dENoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogZmlyc3Qgc3Vycm9nYXRlICovCiAgICAgICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgPSBvdXRDaDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSBvdXRDaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIG91dENoKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjMxNSw3ICs0Mzc1LDggQEAKICAgICAgICAgICAgICAgICBpblNoaWZ0ID0gMDsKICAgICAgICAgICAgICAgICBzKys7CiAgICAgICAgICAgICAgICAgaWYgKHN1cnJvZ2F0ZSkgewotICAgICAgICAgICAgICAgICAgICAqcCsrID0gc3Vycm9nYXRlOworICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBzdXJyb2dhdGUpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGJhc2U2NGJpdHMgPiAwKSB7IC8qIGxlZnQtb3ZlciBiaXRzICovCkBAIC0yMzM1LDcgKzQzOTYsOCBAQAogICAgICAgICAgICAgICAgIGlmIChjaCAhPSAnLScpIHsKICAgICAgICAgICAgICAgICAgICAgLyogJy0nIGlzIGFic29yYmVkOyBvdGhlciB0ZXJtaW5hdGluZwogICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIGFyZSBwcmVzZXJ2ZWQgKi8KLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjM0NCwxNiArNDQwNiwxOCBAQAogICAgICAgICAgICAgcysrOyAvKiBjb25zdW1lICcrJyAqLwogICAgICAgICAgICAgaWYgKHMgPCBlICYmICpzID09ICctJykgeyAvKiAnKy0nIGVuY29kZXMgJysnICovCiAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICpwKysgPSAnKyc7CisgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgJysnKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBiZWdpbiBiYXNlNjQtZW5jb2RlZCBzZWN0aW9uICovCiAgICAgICAgICAgICAgICAgaW5TaGlmdCA9IDE7Ci0gICAgICAgICAgICAgICAgc2hpZnRPdXRTdGFydCA9IHA7CisgICAgICAgICAgICAgICAgc2hpZnRPdXRTdGFydCA9IG91dHBvczsKICAgICAgICAgICAgICAgICBiYXNlNjRiaXRzID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChERUNPREVfRElSRUNUKGNoKSkgeyAvKiBjaGFyYWN0ZXIgZGVjb2RlcyBhcyBpdHNlbGYgKi8KLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgcysrOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMjM2NCwxMyArNDQyOCwxMiBAQAogICAgICAgICB9CiAgICAgICAgIGNvbnRpbnVlOwogdXRmN0Vycm9yOgotICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwogICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwogICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICJ1dGY3IiwgZXJybXNnLAogICAgICAgICAgICAgICAgICZzdGFydHMsICZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKQEAgLTIzODEsMTMgKzQ0NDQsMTIgQEAKICAgICAgICAgaWYgKHN1cnJvZ2F0ZSB8fAogICAgICAgICAgICAgICAgIChiYXNlNjRiaXRzID49IDYpIHx8CiAgICAgICAgICAgICAgICAgKGJhc2U2NGJpdHMgPiAwICYmIGJhc2U2NGJ1ZmZlciAhPSAwKSkgewotICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKICAgICAgICAgICAgIGVuZGlucG9zID0gc2l6ZTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAidXRmNyIsICJ1bnRlcm1pbmF0ZWQgc2hpZnQgc2VxdWVuY2UiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBpZiAocyA8IGUpCiAgICAgICAgICAgICAgICAgZ290byByZXN0YXJ0OwpAQCAtMjM5Nyw3ICs0NDU5LDcgQEAKICAgICAvKiByZXR1cm4gc3RhdGUgKi8KICAgICBpZiAoY29uc3VtZWQpIHsKICAgICAgICAgaWYgKGluU2hpZnQpIHsKLSAgICAgICAgICAgIHAgPSBzaGlmdE91dFN0YXJ0OyAvKiBiYWNrIG9mZiBvdXRwdXQgKi8KKyAgICAgICAgICAgIG91dHBvcyA9IHNoaWZ0T3V0U3RhcnQ7IC8qIGJhY2sgb2ZmIG91dHB1dCAqLwogICAgICAgICAgICAgKmNvbnN1bWVkID0gc3RhcnRpbnBvczsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTI0MDUsMTIgKzQ0NjcsMTIgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdW5pY29kZSwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpKSA8IDApCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodW5pY29kZSk7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CkBAIC0yNDIwLDI2ICs0NDgyLDM2IEBACiB9CiAKIAotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGVVVEY3KGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRTZXRPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfRW5jb2RlVVRGNyhQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRTZXRPLAorICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICp2OwotICAgIC8qIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIHRpZ2h0ZW4gdGhpcyB3b3JzdCBjYXNlICovCi0gICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQgPSA4ICogc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGFsbG9jYXRlZDsKICAgICBpbnQgaW5TaGlmdCA9IDA7Ci0gICAgUHlfc3NpemVfdCBpID0gMDsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgdW5zaWduZWQgaW50IGJhc2U2NGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGxvbmcgYmFzZTY0YnVmZmVyID0gMDsKICAgICBjaGFyICogb3V0OwogICAgIGNoYXIgKiBzdGFydDsKIAotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworCisgICAgaWYgKGxlbiA9PSAwKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKIAotICAgIGlmIChhbGxvY2F0ZWQgLyA4ICE9IHNpemUpCisgICAgLyogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gdGlnaHRlbiB0aGlzIHdvcnN0IGNhc2UgKi8KKyAgICBhbGxvY2F0ZWQgPSA4ICogbGVuOworICAgIGlmIChhbGxvY2F0ZWQgLyA4ICE9IGxlbikKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBhbGxvY2F0ZWQpOwpAQCAtMjQ0Nyw4ICs0NTE5LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdGFydCA9IG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwotICAgIGZvciAoO2kgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IHNbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAogICAgICAgICBpZiAoaW5TaGlmdCkgewogICAgICAgICAgICAgaWYgKEVOQ09ERV9ESVJFQ1QoY2gsICFiYXNlNjRTZXRPLCAhYmFzZTY0V2hpdGVTcGFjZSkpIHsKQEAgLTI0ODYsOCArNDU1OCw5IEBACiAgICAgICAgIH0KICAgICAgICAgY29udGludWU7CiBlbmNvZGVfY2hhcjoKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKICAgICAgICAgaWYgKGNoID49IDB4MTAwMDApIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisKICAgICAgICAgICAgIC8qIGNvZGUgZmlyc3Qgc3Vycm9nYXRlICovCiAgICAgICAgICAgICBiYXNlNjRiaXRzICs9IDE2OwogICAgICAgICAgICAgYmFzZTY0YnVmZmVyID0gKGJhc2U2NGJ1ZmZlciA8PCAxNikgfCAweGQ4MDAgfCAoKGNoLTB4MTAwMDApID4+IDEwKTsKQEAgLTI0OTYsOSArNDU2OSw4IEBACiAgICAgICAgICAgICAgICAgYmFzZTY0Yml0cyAtPSA2OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogcHJlcGFyZSBzZWNvbmQgc3Vycm9nYXRlICovCi0gICAgICAgICAgICBjaCA9ICAweERDMDAgfCAoKGNoLTB4MTAwMDApICYgMHgzRkYpOworICAgICAgICAgICAgY2ggPSBQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpOwogICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgYmFzZTY0Yml0cyArPSAxNjsKICAgICAgICAgYmFzZTY0YnVmZmVyID0gKGJhc2U2NGJ1ZmZlciA8PCAxNikgfCBjaDsKICAgICAgICAgd2hpbGUgKGJhc2U2NGJpdHMgPj0gNikgewpAQCAtMjUxNCw2ICs0NTg2LDIyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiB2OwogfQorUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZVVURjcoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRTZXRPLAorICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFdoaXRlU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9FbmNvZGVVVEY3KHRtcCwgYmFzZTY0U2V0TywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0V2hpdGVTcGFjZSwgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCiAjdW5kZWYgSVNfQkFTRTY0CiAjdW5kZWYgRlJPTV9CQVNFNjQKQEAgLTI1MjMsMjcyICs0NjExLDIwOSBAQAogCiAvKiAtLS0gVVRGLTggQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljCi1jaGFyIHV0ZjhfY29kZV9sZW5ndGhbMjU2XSA9IHsKLSAgICAvKiBNYXAgVVRGLTggZW5jb2RlZCBwcmVmaXggYnl0ZSB0byBzZXF1ZW5jZSBsZW5ndGguICBaZXJvIG1lYW5zCi0gICAgICAgaWxsZWdhbCBwcmVmaXguICBTZWUgUkZDIDM2MjkgZm9yIGRldGFpbHMgKi8KLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAvKiAwMC0wRiAqLwotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIC8qIDcwLTdGICovCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLyogODAtOEYgKi8KLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLyogQjAtQkYgKi8KLSAgICAwLCAwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAvKiBDMC1DMSArIEMyLUNGICovCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgLyogRDAtREYgKi8KLSAgICAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAvKiBFMC1FRiAqLwotICAgIDQsIDQsIDQsIDQsIDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgIC8qIEYwLUY0ICsgRjUtRkYgKi8KLX07Ci0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlVVRGOChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlVVRGOChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CiB9CiAKKyNpbmNsdWRlICJzdHJpbmdsaWIvYXNjaWlsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY29kZWNzLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzMWxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb2RlY3MuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91Y3MybGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvZGVjcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczRsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY29kZWNzLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKIC8qIE1hc2sgdG8gY2hlY2sgb3IgZm9yY2UgYWxpZ25tZW50IG9mIGEgcG9pbnRlciB0byBDICdsb25nJyBib3VuZGFyaWVzICovCiAjZGVmaW5lIExPTkdfUFRSX01BU0sgKHNpemVfdCkgKFNJWkVPRl9MT05HIC0gMSkKIAogLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCiAgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLwogI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MEwKKyMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwODA4MDgwODBVTAogI2VsaWYgKFNJWkVPRl9MT05HID09IDQpCi0jIGRlZmluZSBBU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MEwKKyMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwVUwKICNlbHNlCiAjIGVycm9yIEMgJ2xvbmcnIHNpemUgc2hvdWxkIGJlIGVpdGhlciA0IG9yIDghCiAjZW5kaWYKIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorc3RhdGljIFB5X3NzaXplX3QKK2FzY2lpX2RlY29kZShjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5kLCBQeV9VQ1MxICpkZXN0KQogeworICAgIGNvbnN0IGNoYXIgKnAgPSBzdGFydDsKKyAgICBjb25zdCBjaGFyICphbGlnbmVkX2VuZCA9IChjb25zdCBjaGFyICopICgoc2l6ZV90KSBlbmQgJiB+TE9OR19QVFJfTUFTSyk7CisKKyNpZiBTSVpFT0ZfTE9ORyA8PSBTSVpFT0ZfVk9JRF9QCisgICAgYXNzZXJ0KCEoKHNpemVfdCkgZGVzdCAmIExPTkdfUFRSX01BU0spKTsKKyAgICBpZiAoISgoc2l6ZV90KSBwICYgTE9OR19QVFJfTUFTSykpIHsKKyAgICAgICAgLyogRmFzdCBwYXRoLCBzZWUgaW4gU1RSSU5HTElCKHV0ZjhfZGVjb2RlKSBmb3IKKyAgICAgICAgICAgYW4gZXhwbGFuYXRpb24uICovCisgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLworICAgICAgICByZWdpc3RlciBjb25zdCBjaGFyICpfcCA9IHA7CisgICAgICAgIHJlZ2lzdGVyIFB5X1VDUzEgKiBxID0gZGVzdDsKKyAgICAgICAgd2hpbGUgKF9wIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKikgX3A7CisgICAgICAgICAgICBpZiAodmFsdWUgJiBBU0NJSV9DSEFSX01BU0spCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAqKCh1bnNpZ25lZCBsb25nICopcSkgPSB2YWx1ZTsKKyAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgcSArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgfQorICAgICAgICBwID0gX3A7CisgICAgICAgIHdoaWxlIChwIDwgZW5kKSB7CisgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGNoYXIpKnAgJiAweDgwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgKnErKyA9ICpwKys7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHAgLSBzdGFydDsKKyAgICB9CisjZW5kaWYKKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICAvKiBGYXN0IHBhdGgsIHNlZSBpbiBTVFJJTkdMSUIodXRmOF9kZWNvZGUpIGluIHN0cmluZ2xpYi9jb2RlY3MuaAorICAgICAgICAgICBmb3IgYW4gZXhwbGFuYXRpb24uICovCisgICAgICAgIGlmICghKChzaXplX3QpIHAgJiBMT05HX1BUUl9NQVNLKSkgeworICAgICAgICAgICAgLyogSGVscCByZWdpc3RlciBhbGxvY2F0aW9uICovCisgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjaGFyICpfcCA9IHA7CisgICAgICAgICAgICB3aGlsZSAoX3AgPCBhbGlnbmVkX2VuZCkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSAqKHVuc2lnbmVkIGxvbmcgKikgX3A7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYgQVNDSUlfQ0hBUl9NQVNLKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHAgPSBfcDsKKyAgICAgICAgICAgIGlmIChfcCA9PSBlbmQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCh1bnNpZ25lZCBjaGFyKSpwICYgMHg4MCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICArK3A7CisgICAgfQorICAgIG1lbWNweShkZXN0LCBzdGFydCwgcCAtIHN0YXJ0KTsKKyAgICByZXR1cm4gcCAtIHN0YXJ0OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwotICAgIGludCBuOwotICAgIGludCBrOworICAgIGNvbnN0IGNoYXIgKmVuZCA9IHMgKyBzaXplOworICAgIFB5X3NzaXplX3Qgb3V0cG9zOworCiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7Ci0gICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgY29uc3QgY2hhciAqZSwgKmFsaWduZWRfZW5kOwotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICBQeV9VTklDT0RFICpwOwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCi0gICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKLSAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgICAgICpjb25zdW1lZCA9IDA7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgIH0KIAotICAgIC8qIFVucGFjayBVVEYtOCBlbmNvZGVkIGRhdGEgKi8KLSAgICBwID0gdW5pY29kZS0+c3RyOwotICAgIGUgPSBzICsgc2l6ZTsKLSAgICBhbGlnbmVkX2VuZCA9IChjb25zdCBjaGFyICopICgoc2l6ZV90KSBlICYgfkxPTkdfUFRSX01BU0spOworICAgIC8qIEFTQ0lJIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDEyOCBvcmRpbmFscyBpbiBVbmljb2RlLiAqLworICAgIGlmIChzaXplID09IDEgJiYgKHVuc2lnbmVkIGNoYXIpc1swXSA8IDEyOCkgeworICAgICAgICBpZiAoY29uc3VtZWQpCisgICAgICAgICAgICAqY29uc3VtZWQgPSAxOworICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKXNbMF0pOworICAgIH0KIAotICAgIHdoaWxlIChzIDwgZSkgewotICAgICAgICBQeV9VQ1M0IGNoID0gKHVuc2lnbmVkIGNoYXIpKnM7CisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKKyAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIGlmIChjaCA8IDB4ODApIHsKLSAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgcnVucyBvZiBBU0NJSSBjaGFyYWN0ZXJzLiBHaXZlbiB0aGF0IGNvbW1vbiBVVEYtOAotICAgICAgICAgICAgICAgaW5wdXQgd2lsbCBjb25zaXN0IG9mIGFuIG92ZXJ3aGVsbWluZyBtYWpvcml0eSBvZiBBU0NJSQotICAgICAgICAgICAgICAgY2hhcmFjdGVycywgd2UgdHJ5IHRvIG9wdGltaXplIGZvciB0aGlzIGNhc2UgYnkgY2hlY2tpbmcKLSAgICAgICAgICAgICAgIGFzIG1hbnkgY2hhcmFjdGVycyBhcyBhIEMgJ2xvbmcnIGNhbiBjb250YWluLgotICAgICAgICAgICAgICAgRmlyc3QsIGNoZWNrIGlmIHdlIGNhbiBkbyBhbiBhbGlnbmVkIHJlYWQsIGFzIG1vc3QgQ1BVcyBoYXZlCi0gICAgICAgICAgICAgICBhIHBlbmFsdHkgZm9yIHVuYWxpZ25lZCByZWFkcy4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoISgoc2l6ZV90KSBzICYgTE9OR19QVFJfTUFTSykpIHsKLSAgICAgICAgICAgICAgICAvKiBIZWxwIHJlZ2lzdGVyIGFsbG9jYXRpb24gKi8KLSAgICAgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjaGFyICpfcyA9IHM7Ci0gICAgICAgICAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqX3AgPSBwOwotICAgICAgICAgICAgICAgIHdoaWxlIChfcyA8IGFsaWduZWRfZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIFJlYWQgYSB3aG9sZSBsb25nIGF0IGEgdGltZSAoZWl0aGVyIDQgb3IgOCBieXRlcyksCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBkbyBhIGZhc3QgdW5yb2xsZWQgY29weSBpZiBpdCBvbmx5IGNvbnRhaW5zIEFTQ0lJCi0gICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuICovCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9ICoodW5zaWduZWQgbG9uZyAqKSBfczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiBBU0NJSV9DSEFSX01BU0spCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgX3BbMF0gPSAodW5zaWduZWQgY2hhcikgX3NbMF07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzFdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzFdOwotICAgICAgICAgICAgICAgICAgICBfcFsyXSA9ICh1bnNpZ25lZCBjaGFyKSBfc1syXTsKLSAgICAgICAgICAgICAgICAgICAgX3BbM10gPSAodW5zaWduZWQgY2hhcikgX3NbM107Ci0jaWYgKFNJWkVPRl9MT05HID09IDgpCi0gICAgICAgICAgICAgICAgICAgIF9wWzRdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzRdOwotICAgICAgICAgICAgICAgICAgICBfcFs1XSA9ICh1bnNpZ25lZCBjaGFyKSBfc1s1XTsKLSAgICAgICAgICAgICAgICAgICAgX3BbNl0gPSAodW5zaWduZWQgY2hhcikgX3NbNl07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzddID0gKHVuc2lnbmVkIGNoYXIpIF9zWzddOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIF9zICs9IFNJWkVPRl9MT05HOwotICAgICAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcyA9IF9zOwotICAgICAgICAgICAgICAgIHAgPSBfcDsKLSAgICAgICAgICAgICAgICBpZiAocyA9PSBlKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjaCA9ICh1bnNpZ25lZCBjaGFyKSpzOwotICAgICAgICAgICAgfQorICAgIG91dHBvcyA9IGFzY2lpX2RlY29kZShzLCBlbmQsIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpKTsKKyAgICBzICs9IG91dHBvczsKKyAgICB3aGlsZSAocyA8IGVuZCkgeworICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgICAgICBjaCA9IGFzY2lpbGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2ggPSB1Y3MxbGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcyk7CisgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgY2ggPSB1Y3MybGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgIGNoID0gdWNzNGxpYl91dGY4X2RlY29kZSgmcywgZW5kLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcyk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoY2ggPCAweDgwKSB7Ci0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpY2g7Ci0gICAgICAgICAgICBzKys7CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgaWYgKHMgPT0gZW5kIHx8IGNvbnN1bWVkKQorICAgICAgICAgICAgICAgIGdvdG8gRW5kOworICAgICAgICAgICAgZXJybXNnID0gInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiOworICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOworICAgICAgICAgICAgd2hpbGUgKGVuZGlucG9zIDwgc2l6ZSAmJiAoc3RhcnRzW2VuZGlucG9zXSAmIDB4QzApID09IDB4ODApCisgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBzdGFydCBieXRlIjsKKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzOworICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7CisgICAgICAgICAgICB3aGlsZSAoZW5kaW5wb3MgPCBzaXplICYmIChzdGFydHNbZW5kaW5wb3NdICYgMHhDMCkgPT0gMHg4MCkKKyAgICAgICAgICAgICAgICBlbmRpbnBvcysrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgbiA9IHV0ZjhfY29kZV9sZW5ndGhbY2hdOwotCi0gICAgICAgIGlmIChzICsgbiA+IGUpIHsKLSAgICAgICAgICAgIGlmIChjb25zdW1lZCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIjsKLSAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7Ci0gICAgICAgICAgICAgICAgZm9yIChrPTE7IChrIDwgc2l6ZS1zdGFydGlucG9zKSAmJiAoKHNba10mMHhDMCkgPT0gMHg4MCk7IGsrKykKLSAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAobikgewotCi0gICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAgIGVycm1zZyA9ICJpbnZhbGlkIHN0YXJ0IGJ5dGUiOwotICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7Ci0gICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLQotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBlcnJtc2cgPSAiaW50ZXJuYWwgZXJyb3IiOwotICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7Ci0gICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLQotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoKHNbMV0gJiAweGMwKSAhPSAweDgwKSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImludmFsaWQgY29udGludWF0aW9uIGJ5dGUiOwotICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotICAgICAgICAgICAgICAgIGdvdG8gdXRmOEVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDFmKSA8PCA2KSArIChzWzFdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDA3RikgJiYgKGNoIDw9IDB4MDdGRikpOwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgLyogRGVjb2RpbmcgVVRGLTggc2VxdWVuY2VzIGluIHJhbmdlIFx4ZWRceGEwXHg4MC1ceGVkXHhiZlx4YmYKLSAgICAgICAgICAgICAgIHdpbGwgcmVzdWx0IGluIHN1cnJvZ2F0ZXMgaW4gcmFuZ2UgZDgwMC1kZmZmLiBTdXJyb2dhdGVzIGFyZQotICAgICAgICAgICAgICAgbm90IHZhbGlkIFVURi04IHNvIHRoZXkgYXJlIHJlamVjdGVkLgotICAgICAgICAgICAgICAgU2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdmVyc2lvbnMvVW5pY29kZTUuMi4wL2NoMDMucGRmCi0gICAgICAgICAgICAgICAodGFibGUgMy03KSBhbmQgaHR0cDovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjMzYyOS50eHQgKi8KLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEUwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweEEwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RUQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OUYpKSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImludmFsaWQgY29udGludWF0aW9uIGJ5dGUiOwotICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotCi0gICAgICAgICAgICAgICAgLyogaWYgc1sxXSBmaXJzdCB0d28gYml0cyBhcmUgMSBhbmQgMCwgdGhlbiB0aGUgaW52YWxpZAotICAgICAgICAgICAgICAgICAgIGNvbnRpbnVhdGlvbiBieXRlIGlzIHNbMl0sIHNvIGluY3JlbWVudCBlbmRpbnBvcyBieSAxLAotICAgICAgICAgICAgICAgICAgIGlmIG5vdCwgc1sxXSBpcyBpbnZhbGlkIGFuZCBlbmRpbnBvcyBkb2Vzbid0IG5lZWQgdG8KLSAgICAgICAgICAgICAgICAgICBiZSBpbmNyZW1lbnRlZC4gKi8KLSAgICAgICAgICAgICAgICBpZiAoKHNbMV0gJiAweEMwKSA9PSAweDgwKQotICAgICAgICAgICAgICAgICAgICBlbmRpbnBvcysrOwotICAgICAgICAgICAgICAgIGdvdG8gdXRmOEVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDBmKSA8PCAxMikgKyAoKHNbMV0gJiAweDNmKSA8PCA2KSArIChzWzJdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDdGRikgJiYgKGNoIDw9IDB4RkZGRikpOwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzJdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzNdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjAgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA8IDB4OTApIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhGNCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdID4gMHg4RikpIHsKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSI7Ci0gICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7Ci0gICAgICAgICAgICAgICAgaWYgKChzWzFdICYgMHhDMCkgPT0gMHg4MCkgewotICAgICAgICAgICAgICAgICAgICBlbmRpbnBvcysrOwotICAgICAgICAgICAgICAgICAgICBpZiAoKHNbMl0gJiAweEMwKSA9PSAweDgwKQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaCA9ICgoc1swXSAmIDB4NykgPDwgMTgpICsgKChzWzFdICYgMHgzZikgPDwgMTIpICsKLSAgICAgICAgICAgICAgICAgKChzWzJdICYgMHgzZikgPDwgNikgKyAoc1szXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweEZGRkYpICYmIChjaCA8PSAweDEwZmZmZikpOwotCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpY2g7Ci0jZWxzZQotICAgICAgICAgICAgLyogIGNvbXB1dGUgYW5kIGFwcGVuZCB0aGUgdHdvIHN1cnJvZ2F0ZXM6ICovCi0KLSAgICAgICAgICAgIC8qICB0cmFuc2xhdGUgZnJvbSAxMDAwMC4uMTBGRkZGIHRvIDAuLkZGRkYgKi8KLSAgICAgICAgICAgIGNoIC09IDB4MTAwMDA7Ci0KLSAgICAgICAgICAgIC8qICBoaWdoIHN1cnJvZ2F0ZSA9IHRvcCAxMCBiaXRzIGFkZGVkIHRvIEQ4MDAgKi8KLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSkoMHhEODAwICsgKGNoID4+IDEwKSk7Ci0KLSAgICAgICAgICAgIC8qICBsb3cgc3Vycm9nYXRlID0gYm90dG9tIDEwIGJpdHMgYWRkZWQgdG8gREMwMCAqLwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSgweERDMDAgKyAoY2ggJiAweDAzRkYpKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcyArPSBuOwotICAgICAgICBjb250aW51ZTsKLQotICAgICAgdXRmOEVycm9yOgotICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwogICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICJ1dGYtOCIsIGVycm1zZywKLSAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKKyAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIGFsaWduZWRfZW5kID0gKGNvbnN0IGNoYXIgKikgKChzaXplX3QpIGUgJiB+TE9OR19QVFJfTUFTSyk7CiAgICAgfQotICAgIGlmIChjb25zdW1lZCkKLSAgICAgICAgKmNvbnN1bWVkID0gcy1zdGFydHM7CiAKLSAgICAvKiBBZGp1c3QgbGVuZ3RoICovCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ1bmljb2RlLCBwIC0gdW5pY29kZS0+c3RyKSA8IDApCitFbmQ6CisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICBpZiAoY29uc3VtZWQpCisgICAgICAgICpjb25zdW1lZCA9IHMgLSBzdGFydHM7CiAKLSAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gdW5pY29kZTsKKworb25FcnJvcjoKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIFB5X1hERUNSRUYodW5pY29kZSk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSN1bmRlZiBBU0NJSV9DSEFSX01BU0sKLQogI2lmZGVmIF9fQVBQTEVfXwogCiAvKiBTaW1wbGlmaWVkIFVURi04IGRlY29kZXIgdXNpbmcgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIsCkBAIC0yNzk3LDkgKzQ4MjIsOSBAQAogd2NoYXJfdCoKIF9QeV9EZWNvZGVVVEY4X3N1cnJvZ2F0ZWVzY2FwZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgaW50IG47CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICB3Y2hhcl90ICp1bmljb2RlLCAqcDsKKyAgICB3Y2hhcl90ICp1bmljb2RlOworICAgIFB5X3NzaXplX3Qgb3V0cG9zOwogCiAgICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKICAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KQEAgLTI4MTIsMjc3ICs0ODM3LDEwMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFVucGFjayBVVEYtOCBlbmNvZGVkIGRhdGEgKi8KLSAgICBwID0gdW5pY29kZTsKICAgICBlID0gcyArIHNpemU7CisgICAgb3V0cG9zID0gMDsKICAgICB3aGlsZSAocyA8IGUpIHsKLSAgICAgICAgUHlfVUNTNCBjaCA9ICh1bnNpZ25lZCBjaGFyKSpzOwotCi0gICAgICAgIGlmIChjaCA8IDB4ODApIHsKLSAgICAgICAgICAgICpwKysgPSAod2NoYXJfdCljaDsKLSAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgbiA9IHV0ZjhfY29kZV9sZW5ndGhbY2hdOwotICAgICAgICBpZiAocyArIG4gPiBlKSB7Ci0gICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAobikgewotICAgICAgICBjYXNlIDA6Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGdvdG8gc3Vycm9nYXRlZXNjYXBlOwotCi0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODApCi0gICAgICAgICAgICAgICAgZ290byBzdXJyb2dhdGVlc2NhcGU7Ci0gICAgICAgICAgICBjaCA9ICgoc1swXSAmIDB4MWYpIDw8IDYpICsgKHNbMV0gJiAweDNmKTsKLSAgICAgICAgICAgIGFzc2VydCAoKGNoID4gMHgwMDdGKSAmJiAoY2ggPD0gMHgwN0ZGKSk7Ci0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpY2g7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAvKiBEZWNvZGluZyBVVEYtOCBzZXF1ZW5jZXMgaW4gcmFuZ2UgXHhlZFx4YTBceDgwLVx4ZWRceGJmXHhiZgotICAgICAgICAgICAgICAgd2lsbCByZXN1bHQgaW4gc3Vycm9nYXRlcyBpbiByYW5nZSBkODAwLWRmZmYuIFN1cnJvZ2F0ZXMgYXJlCi0gICAgICAgICAgICAgICBub3QgdmFsaWQgVVRGLTggc28gdGhleSBhcmUgcmVqZWN0ZWQuCi0gICAgICAgICAgICAgICBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy92ZXJzaW9ucy9Vbmljb2RlNS4yLjAvY2gwMy5wZGYKLSAgICAgICAgICAgICAgICh0YWJsZSAzLTcpIGFuZCBodHRwOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmMzNjI5LnR4dCAqLwotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzJdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RTAgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA8IDB4QTApIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhFRCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdID4gMHg5RikpIHsKLQotICAgICAgICAgICAgICAgIGdvdG8gc3Vycm9nYXRlZXNjYXBlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDBmKSA8PCAxMikgKyAoKHNbMV0gJiAweDNmKSA8PCA2KSArIChzWzJdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDdGRikgJiYgKGNoIDw9IDB4RkZGRikpOwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzJdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzNdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjAgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA8IDB4OTApIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhGNCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdID4gMHg4RikpIHsKLSAgICAgICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHg3KSA8PCAxOCkgKyAoKHNbMV0gJiAweDNmKSA8PCAxMikgKwotICAgICAgICAgICAgICAgICAoKHNbMl0gJiAweDNmKSA8PCA2KSArIChzWzNdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4RkZGRikgJiYgKGNoIDw9IDB4MTBmZmZmKSk7Ci0KKyAgICAgICAgUHlfVUNTNCBjaDsKICNpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0Ci0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpY2g7CisgICAgICAgIGNoID0gdWNzNGxpYl91dGY4X2RlY29kZSgmcywgZSwgKFB5X1VDUzQgKil1bmljb2RlLCAmb3V0cG9zKTsKICNlbHNlCi0gICAgICAgICAgICAvKiAgY29tcHV0ZSBhbmQgYXBwZW5kIHRoZSB0d28gc3Vycm9nYXRlczogKi8KLQotICAgICAgICAgICAgLyogIHRyYW5zbGF0ZSBmcm9tIDEwMDAwLi4xMEZGRkYgdG8gMC4uRkZGRiAqLwotICAgICAgICAgICAgY2ggLT0gMHgxMDAwMDsKLQotICAgICAgICAgICAgLyogIGhpZ2ggc3Vycm9nYXRlID0gdG9wIDEwIGJpdHMgYWRkZWQgdG8gRDgwMCAqLwotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KSgweEQ4MDAgKyAoY2ggPj4gMTApKTsKLQotICAgICAgICAgICAgLyogIGxvdyBzdXJyb2dhdGUgPSBib3R0b20gMTAgYml0cyBhZGRlZCB0byBEQzAwICovCi0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpKDB4REMwMCArIChjaCAmIDB4MDNGRikpOworICAgICAgICBjaCA9IHVjczJsaWJfdXRmOF9kZWNvZGUoJnMsIGUsIChQeV9VQ1MyICopdW5pY29kZSwgJm91dHBvcyk7CiAjZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY2ggPiAweEZGKSB7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gNAorICAgICAgICAgICAgYXNzZXJ0KDApOworI2Vsc2UKKyAgICAgICAgICAgIGFzc2VydChQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpOworICAgICAgICAgICAgLyogIGNvbXB1dGUgYW5kIGFwcGVuZCB0aGUgdHdvIHN1cnJvZ2F0ZXM6ICovCisgICAgICAgICAgICB1bmljb2RlW291dHBvcysrXSA9ICh3Y2hhcl90KVB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoY2gpOworICAgICAgICAgICAgdW5pY29kZVtvdXRwb3MrK10gPSAod2NoYXJfdClQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpOworI2VuZGlmCiAgICAgICAgIH0KLSAgICAgICAgcyArPSBuOwotICAgICAgICBjb250aW51ZTsKLQotICAgICAgc3Vycm9nYXRlZXNjYXBlOgotICAgICAgICAqcCsrID0gMHhEQzAwICsgY2g7Ci0gICAgICAgIHMrKzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIWNoICYmIHMgPT0gZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8qIHN1cnJvZ2F0ZWVzY2FwZSAqLworICAgICAgICAgICAgdW5pY29kZVtvdXRwb3MrK10gPSAweERDMDAgKyAodW5zaWduZWQgY2hhcikqcysrOworICAgICAgICB9CiAgICAgfQotICAgICpwID0gTCdcMCc7CisgICAgdW5pY29kZVtvdXRwb3NdID0gTCdcMCc7CiAgICAgcmV0dXJuIHVuaWNvZGU7CiB9CiAKICNlbmRpZiAvKiBfX0FQUExFX18gKi8KIAotLyogQWxsb2NhdGlvbiBzdHJhdGVneTogIGlmIHRoZSBzdHJpbmcgaXMgc2hvcnQsIGNvbnZlcnQgaW50byBhIHN0YWNrIGJ1ZmZlcgorLyogUHJpbWFyeSBpbnRlcm5hbCBmdW5jdGlvbiB3aGljaCBjcmVhdGVzIHV0ZjggZW5jb2RlZCBieXRlcyBvYmplY3RzLgorCisgICBBbGxvY2F0aW9uIHN0cmF0ZWd5OiAgaWYgdGhlIHN0cmluZyBpcyBzaG9ydCwgY29udmVydCBpbnRvIGEgc3RhY2sgYnVmZmVyCiAgICBhbmQgYWxsb2NhdGUgZXhhY3RseSBhcyBtdWNoIHNwYWNlIG5lZWRlZCBhdCB0aGUgZW5kLiAgRWxzZSBhbGxvY2F0ZSB0aGUKICAgIG1heGltdW0gcG9zc2libGUgbmVlZGVkICg0IHJlc3VsdCBieXRlcyBwZXIgVW5pY29kZSBjaGFyYWN0ZXIpLCBhbmQgcmV0dXJuCiAgICB0aGUgZXhjZXNzIG1lbW9yeSBhdCB0aGUgZW5kLgogKi8KIFB5T2JqZWN0ICoKLVB5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitfUHlVbmljb2RlX0FzVVRGOFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgY29uc3QgY2hhciAqZXJyb3JzKQogewotI2RlZmluZSBNQVhfU0hPUlRfVU5JQ0hBUlMgMzAwICAvKiBsYXJnZXN0IHNpemUgd2UnbGwgZG8gb24gdGhlIHN0YWNrICovCisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBzaXplOwogCi0gICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAvKiBpbmRleCBpbnRvIHMgb2YgbmV4dCBpbnB1dCBieXRlICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAvKiByZXN1bHQgc3RyaW5nIG9iamVjdCAqLwotICAgIGNoYXIgKnA7ICAgICAgICAgICAgICAgICAgICAgLyogbmV4dCBmcmVlIGJ5dGUgaW4gb3V0cHV0IGJ1ZmZlciAqLwotICAgIFB5X3NzaXplX3QgbmFsbG9jYXRlZDsgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIGFsbG9jYXRlZCAqLwotICAgIFB5X3NzaXplX3Qgbm5lZWRlZDsgICAgICAgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIG5lZWRlZCAqLwotICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogNF07Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0KLSAgICBhc3NlcnQocyAhPSBOVUxMKTsKLSAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKLQotICAgIGlmIChzaXplIDw9IE1BWF9TSE9SVF9VTklDSEFSUykgewotICAgICAgICAvKiBXcml0ZSBpbnRvIHRoZSBzdGFjayBidWZmZXI7IG5hbGxvY2F0ZWQgY2FuJ3Qgb3ZlcmZsb3cuCi0gICAgICAgICAqIEF0IHRoZSBlbmQsIHdlJ2xsIGFsbG9jYXRlIGV4YWN0bHkgYXMgbXVjaCBoZWFwIHNwYWNlIGFzIGl0Ci0gICAgICAgICAqIHR1cm5zIG91dCB3ZSBuZWVkLgotICAgICAgICAgKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IFB5X1NBRkVfRE9XTkNBU1Qoc2l6ZW9mKHN0YWNrYnVmKSwgc2l6ZV90LCBpbnQpOwotICAgICAgICByZXN1bHQgPSBOVUxMOyAgIC8qIHdpbGwgYWxsb2NhdGUgYWZ0ZXIgd2UncmUgZG9uZSAqLwotICAgICAgICBwID0gc3RhY2tidWY7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBPdmVyYWxsb2NhdGUgb24gdGhlIGhlYXAsIGFuZCBnaXZlIHRoZSBleGNlc3MgYmFjayBhdCB0aGUgZW5kLiAqLwotICAgICAgICBuYWxsb2NhdGVkID0gc2l6ZSAqIDQ7Ci0gICAgICAgIGlmIChuYWxsb2NhdGVkIC8gNCAhPSBzaXplKSAgLyogb3ZlcmZsb3chICovCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIH0KLQotICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOykgewotICAgICAgICBQeV9VQ1M0IGNoID0gc1tpKytdOwotCi0gICAgICAgIGlmIChjaCA8IDB4ODApCi0gICAgICAgICAgICAvKiBFbmNvZGUgQVNDSUkgKi8KLSAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7Ci0KLSAgICAgICAgZWxzZSBpZiAoY2ggPCAweDA4MDApIHsKLSAgICAgICAgICAgIC8qIEVuY29kZSBMYXRpbi0xICovCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4YzAgfCAoY2ggPj4gNikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOwotICAgICAgICB9IGVsc2UgaWYgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERGRkYpIHsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2U6IGNoZWNrIGZvciBoaWdoIGFuZCBsb3cgc3Vycm9nYXRlICovCi0gICAgICAgICAgICBpZiAoY2ggPD0gMHhEQkZGICYmIGkgIT0gc2l6ZSAmJiAweERDMDAgPD0gc1tpXSAmJiBzW2ldIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIFB5X1VDUzQgY2gyID0gc1tpXTsKLSAgICAgICAgICAgICAgICAvKiBDb21iaW5lIHRoZSB0d28gc3Vycm9nYXRlcyB0byBmb3JtIGEgVUNTNCB2YWx1ZSAqLwotICAgICAgICAgICAgICAgIGNoID0gKChjaCAtIDB4RDgwMCkgPDwgMTAgfCAoY2gyIC0gMHhEQzAwKSkgKyAweDEwMDAwOwotICAgICAgICAgICAgICAgIGkrKzsKLQotICAgICAgICAgICAgICAgIC8qIEVuY29kZSBVQ1M0IFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZjAgfCAoY2ggPj4gMTgpKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDEyKSAmIDB4M2YpKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOwotICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSwgazsKLSAgICAgICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLCAidXRmLTgiLCAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIsCi0gICAgICAgICAgICAgICAgICAgICBzLCBzaXplLCAmZXhjLCBpLTEsIGksICZuZXdwb3MpOwotICAgICAgICAgICAgICAgIGlmICghcmVwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkKLSAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVwKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVwKTsKLQotICAgICAgICAgICAgICAgIGlmIChyZXBzaXplID4gNCkgewotICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldDsKLQotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gc3RhY2tidWY7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChuYWxsb2NhdGVkID4gUFlfU1NJWkVfVF9NQVggLSByZXBzaXplICsgNCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbmFsbG9jYXRlZCArPSByZXBzaXplIC0gNDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5hbGxvY2F0ZWQpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksIHN0YWNrYnVmLCBvZmZzZXQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgb2Zmc2V0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqcHJlcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvcihrID0gcmVwc2l6ZTsgayA+IDA7IGstLSkKLSAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSAqcHJlcCsrOwotICAgICAgICAgICAgICAgIH0gZWxzZSAvKiByZXAgaXMgdW5pY29kZSAqLyB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnByZXAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXApOwotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGM7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yKGs9MDsgazxyZXBzaXplOyBrKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwcmVwW2tdOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDB4ODAgPD0gYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgInV0Zi04Iiwgcywgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGktMSwgaSwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKXByZXBba107Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0gZWxzZSBpZiAoY2ggPCAweDEwMDAwKSB7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZTAgfCAoY2ggPj4gMTIpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gNikgJiAweDNmKSk7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7Ci0gICAgICAgIH0gZWxzZSAvKiBjaCA+PSAweDEwMDAwICovIHsKLSAgICAgICAgICAgIC8qIEVuY29kZSBVQ1M0IFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhmMCB8IChjaCA+PiAxOCkpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiAxMikgJiAweDNmKSk7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIFRoaXMgd2FzIHN0YWNrIGFsbG9jYXRlZC4gKi8KLSAgICAgICAgbm5lZWRlZCA9IHAgLSBzdGFja2J1ZjsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3RhY2tidWYsIG5uZWVkZWQpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogQ3V0IGJhY2sgdG8gc2l6ZSBhY3R1YWxseSBuZWVkZWQuICovCi0gICAgICAgIG5uZWVkZWQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBubmVlZGVkKTsKLSAgICB9Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotIGVycm9yOgotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgIHJldHVybiBOVUxMOwotCi0jdW5kZWYgTUFYX1NIT1JUX1VOSUNIQVJTCi19Ci0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfVVRGOCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoUHlVbmljb2RlX1VURjgodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSk7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAvKiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBBU0NJSSwgb3IgUHlVbmljb2RlX1VURjgoKSB3b3VsZCBiZSBzZXQgKi8KKyAgICAgICAgYXNzZXJ0KCFQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpOworICAgICAgICByZXR1cm4gdWNzMWxpYl91dGY4X2VuY29kZXIodW5pY29kZSwgZGF0YSwgc2l6ZSwgZXJyb3JzKTsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzMmxpYl91dGY4X2VuY29kZXIodW5pY29kZSwgZGF0YSwgc2l6ZSwgZXJyb3JzKTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzNGxpYl91dGY4X2VuY29kZXIodW5pY29kZSwgZGF0YSwgc2l6ZSwgZXJyb3JzKTsKKyAgICB9Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlPYmplY3QgKnYsICp1bmljb2RlOworCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB2ID0gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHY7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIE5VTEwpOwogfQogCiAvKiAtLS0gVVRGLTMyIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTMxMDcsMTQgKzQ5NTYsNyBAQAogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICBQeV9VTklDT0RFICpwOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBpbnQgcGFpcnMgPSAwOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnFxOwotI2Vsc2UKLSAgICBjb25zdCBpbnQgcGFpcnMgPSAwOwotI2VuZGlmCisgICAgUHlPYmplY3QgKnVuaWNvZGU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSwgKmU7CiAgICAgaW50IGJvID0gMDsgICAgICAgLyogYXNzdW1lIG5hdGl2ZSBvcmRlcmluZyBieSBkZWZhdWx0ICovCiAgICAgY29uc3QgY2hhciAqZXJybXNnID0gIiI7CkBAIC0zMTc4LDIzICs1MDIwLDEzIEBACiAgICAgICAgIGlvcmRlclszXSA9IDA7CiAgICAgfQogCi0gICAgLyogT24gbmFycm93IGJ1aWxkcyB3ZSBzcGxpdCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIEJNUCBpbnRvIHR3bwotICAgICAgIGNvZGVwb2ludHMgPT4gY291bnQgaG93IG11Y2ggZXh0cmEgc3BhY2Ugd2UgbmVlZC4gKi8KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgZm9yIChxcSA9IHE7IHFxIDwgZTsgcXEgKz0gNCkKLSAgICAgICAgaWYgKHFxW2lvcmRlclsyXV0gIT0gMCB8fCBxcVtpb3JkZXJbM11dICE9IDApCi0gICAgICAgICAgICBwYWlycysrOwotI2VuZGlmCi0KICAgICAvKiBUaGlzIG1pZ2h0IGJlIG9uZSB0byBtdWNoLCBiZWNhdXNlIG9mIGEgQk9NICovCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KChzaXplKzMpLzQrcGFpcnMpOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KChzaXplKzMpLzQsIDEyNyk7CiAgICAgaWYgKCF1bmljb2RlKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLQotICAgIC8qIFVucGFjayBVVEYtMzIgZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGUtPnN0cjsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgb3V0cG9zID0gMDsKIAogICAgIHdoaWxlIChxIDwgZSkgewogICAgICAgICBQeV9VQ1M0IGNoOwpAQCAtMzIxOSwyNCArNTA1MSwxNiBAQAogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzQ7CiAgICAgICAgICAgICBnb3RvIHV0ZjMyRXJyb3I7CiAgICAgICAgIH0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmIChjaCA+PSAweDEwMDAwKQotICAgICAgICB7Ci0gICAgICAgICAgICAqcCsrID0gMHhEODAwIHwgKChjaC0weDEwMDAwKSA+PiAxMCk7Ci0gICAgICAgICAgICAqcCsrID0gMHhEQzAwIHwgKChjaC0weDEwMDAwKSAmIDB4M0ZGKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgcSArPSA0OwogICAgICAgICBjb250aW51ZTsKICAgICAgIHV0ZjMyRXJyb3I6Ci0gICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInV0ZjMyIiwgZXJybXNnLAogICAgICAgICAgICAgICAgICZzdGFydHMsIChjb25zdCBjaGFyICoqKSZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAoY29uc3QgY2hhciAqKikmcSwKLSAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKQEAgLTMyNDcsMTIgKzUwNzEsMTIgQEAKICAgICAgICAgKmNvbnN1bWVkID0gKGNvbnN0IGNoYXIgKilxLXN0YXJ0czsKIAogICAgIC8qIEFkanVzdCBsZW5ndGggKi8KLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnVuaWNvZGUsIHAgLSB1bmljb2RlLT5zdHIpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIAogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKQEAgLTMyNjIsMTkgKzUwODYsMTYgQEAKIH0KIAogUHlPYmplY3QgKgotUHlVbmljb2RlX0VuY29kZVVURjMyKGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQorX1B5VW5pY29kZV9FbmNvZGVVVEYzMihQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCiB7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdjsKICAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgIFB5X3NzaXplX3QgbnNpemUsIGJ5dGVzaXplOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBQeV9zc2l6ZV90IGksIHBhaXJzOwotI2Vsc2UKLSAgICBjb25zdCBpbnQgcGFpcnMgPSAwOwotI2VuZGlmCisgICAgUHlfc3NpemVfdCBuc2l6ZSwgYnl0ZXNpemUsIGk7CiAgICAgLyogT2Zmc2V0cyBmcm9tIHAgZm9yIHN0b3JpbmcgYnl0ZSBwYWlycyBpbiB0aGUgcmlnaHQgb3JkZXIuICovCiAjaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KICAgICBpbnQgaW9yZGVyW10gPSB7MCwgMSwgMiwgM307CkBAIC0zMjkxLDE1ICs1MTEyLDE3IEBACiAgICAgICAgIHAgKz0gNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSgwKQogCi0gICAgLyogSW4gbmFycm93IGJ1aWxkcyB3ZSBjYW4gb3V0cHV0IHN1cnJvZ2F0ZSBwYWlycyBhcyBvbmUgY29kZXBvaW50LAotICAgICAgIHNvIHdlIG5lZWQgbGVzcyBzcGFjZS4gKi8KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgZm9yIChpID0gcGFpcnMgPSAwOyBpIDwgc2l6ZS0xOyBpKyspCi0gICAgICAgIGlmICgweEQ4MDAgPD0gc1tpXSAmJiBzW2ldIDw9IDB4REJGRiAmJgotICAgICAgICAgICAgMHhEQzAwIDw9IHNbaSsxXSAmJiBzW2krMV0gPD0gMHhERkZGKQotICAgICAgICAgICAgcGFpcnMrKzsKLSNlbmRpZgotICAgIG5zaXplID0gKHNpemUgLSBwYWlycyArIChieXRlb3JkZXIgPT0gMCkpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN0cikpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKworICAgIG5zaXplID0gbGVuICsgKGJ5dGVvcmRlciA9PSAwKTsKICAgICBieXRlc2l6ZSA9IG5zaXplICogNDsKICAgICBpZiAoYnl0ZXNpemUgLyA0ICE9IG5zaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTMzMTAsNyArNTEzMyw3IEBACiAgICAgcCA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgaWYgKGJ5dGVvcmRlciA9PSAwKQogICAgICAgICBTVE9SRUNIQVIoMHhGRUZGKTsKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgZ290byBkb25lOwogCiAgICAgaWYgKGJ5dGVvcmRlciA9PSAtMSkgewpAQCAtMzMyOCwzNiArNTE1MSwzMyBAQAogICAgICAgICBpb3JkZXJbM10gPSAwOwogICAgIH0KIAotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VDUzQgY2ggPSAqcysrOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERCRkYgJiYgc2l6ZSA+IDApIHsKLSAgICAgICAgICAgIFB5X1VDUzQgY2gyID0gKnM7Ci0gICAgICAgICAgICBpZiAoMHhEQzAwIDw9IGNoMiAmJiBjaDIgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgY2ggPSAoKChjaCAmIDB4M0ZGKTw8MTApIHwgKGNoMiAmIDB4M0ZGKSkgKyAweDEwMDAwOwotICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBzaXplLS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBTVE9SRUNIQVIoY2gpOwotICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgIFNUT1JFQ0hBUihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CiAKICAgZG9uZToKICAgICByZXR1cm4gdjsKICN1bmRlZiBTVE9SRUNIQVIKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc1VURjMyU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZVVURjMyKGNvbnN0IFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQogewotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih0bXAsIGVycm9ycywgYnl0ZW9yZGVyKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih1bmljb2RlLCBOVUxMLCAwKTsKIH0KIAogLyogLS0tIFVURi0xNiBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0zMzcxLDIzICs1MTkxLDYgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBieXRlb3JkZXIsIE5VTEwpOwogfQogCi0vKiBUd28gbWFza3MgZm9yIGZhc3QgY2hlY2tpbmcgb2Ygd2hldGhlciBhIEMgJ2xvbmcnIG1heSBjb250YWluCi0gICBVVEYxNi1lbmNvZGVkIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzLiBUaGlzIGlzIGFuIGVmZmljaWVudCBoZXVyaXN0aWMsCi0gICBhc3N1bWluZyB0aGF0IG5vbi1zdXJyb2dhdGUgY2hhcmFjdGVycyB3aXRoIGEgY29kZSBwb2ludCA+PSAweDgwMDAgYXJlCi0gICByYXJlIGluIG1vc3QgaW5wdXQuCi0gICBGQVNUX0NIQVJfTUFTSyBpcyB1c2VkIHdoZW4gdGhlIGlucHV0IGlzIGluIG5hdGl2ZSBieXRlIG9yZGVyaW5nLAotICAgU1dBUFBFRF9GQVNUX0NIQVJfTUFTSyB3aGVuIHRoZSBpbnB1dCBpcyBpbiBieXRlc3dhcHBlZCBvcmRlcmluZy4KLSovCi0jaWYgKFNJWkVPRl9MT05HID09IDgpCi0jIGRlZmluZSBGQVNUX0NIQVJfTUFTSyAgICAgICAgIDB4ODAwMDgwMDA4MDAwODAwMEwKLSMgZGVmaW5lIFNXQVBQRURfRkFTVF9DSEFSX01BU0sgMHgwMDgwMDA4MDAwODAwMDgwTAotI2VsaWYgKFNJWkVPRl9MT05HID09IDQpCi0jIGRlZmluZSBGQVNUX0NIQVJfTUFTSyAgICAgICAgIDB4ODAwMDgwMDBMCi0jIGRlZmluZSBTV0FQUEVEX0ZBU1RfQ0hBUl9NQVNLIDB4MDA4MDAwODBMCi0jZWxzZQotIyBlcnJvciBDICdsb25nJyBzaXplIHNob3VsZCBiZSBlaXRoZXIgNCBvciA4IQotI2VuZGlmCi0KIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCkBAIC0zMzk5LDMxICs1MjAyLDE0IEBACiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSwgKmUsICphbGlnbmVkX2VuZDsKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpxLCAqZTsKICAgICBpbnQgYm8gPSAwOyAgICAgICAvKiBhc3N1bWUgbmF0aXZlIG9yZGVyaW5nIGJ5IGRlZmF1bHQgKi8KLSAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gMDsKKyAgICBpbnQgbmF0aXZlX29yZGVyaW5nOwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwotICAgIC8qIE9mZnNldHMgZnJvbSBxIGZvciByZXRyaWV2aW5nIGJ5dGUgcGFpcnMgaW4gdGhlIHJpZ2h0IG9yZGVyLiAqLwotI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCi0gICAgaW50IGloaSA9IDEsIGlsbyA9IDA7Ci0jZWxzZQotICAgIGludCBpaGkgPSAwLCBpbG8gPSAxOwotI2VuZGlmCiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSAgICAvKiBOb3RlOiBzaXplIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcgVW5pY29kZQotICAgICAgIGNoYXJhY3RlciBjb3VudCAqLwotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOwotCi0gICAgLyogVW5wYWNrIFVURi0xNiBlbmNvZGVkIGRhdGEgKi8KLSAgICBwID0gdW5pY29kZS0+c3RyOwogICAgIHEgPSAodW5zaWduZWQgY2hhciAqKXM7CiAgICAgZSA9IHEgKyBzaXplOwogCkBAIC0zNDM0LDE3NiArNTIyMCw5OCBAQAogICAgICAgIGJ5dGUgb3JkZXIgc2V0dGluZyBhY2NvcmRpbmdseS4gSW4gbmF0aXZlIG1vZGUsIHRoZSBsZWFkaW5nIEJPTQogICAgICAgIG1hcmsgaXMgc2tpcHBlZCwgaW4gYWxsIG90aGVyIG1vZGVzLCBpdCBpcyBjb3BpZWQgdG8gdGhlIG91dHB1dAogICAgICAgIHN0cmVhbSBhcy1pcyAoZ2l2aW5nIGEgWldOQlNQIGNoYXJhY3RlcikuICovCi0gICAgaWYgKGJvID09IDApIHsKLSAgICAgICAgaWYgKHNpemUgPj0gMikgewotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSBib20gPSAocVtpaGldIDw8IDgpIHwgcVtpbG9dOwotI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCi0gICAgICAgICAgICBpZiAoYm9tID09IDB4RkVGRikgewotICAgICAgICAgICAgICAgIHEgKz0gMjsKLSAgICAgICAgICAgICAgICBibyA9IC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYm9tID09IDB4RkZGRSkgewotICAgICAgICAgICAgICAgIHEgKz0gMjsKLSAgICAgICAgICAgICAgICBibyA9IDE7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgaWYgKGJvbSA9PSAweEZFRkYpIHsKLSAgICAgICAgICAgICAgICBxICs9IDI7Ci0gICAgICAgICAgICAgICAgYm8gPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYm9tID09IDB4RkZGRSkgewotICAgICAgICAgICAgICAgIHEgKz0gMjsKLSAgICAgICAgICAgICAgICBibyA9IC0xOwotICAgICAgICAgICAgfQotI2VuZGlmCisgICAgaWYgKGJvID09IDAgJiYgc2l6ZSA+PSAyKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgYm9tID0gKHFbMV0gPDwgOCkgfCBxWzBdOworICAgICAgICBpZiAoYm9tID09IDB4RkVGRikgeworICAgICAgICAgICAgcSArPSAyOworICAgICAgICAgICAgYm8gPSAtMTsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChib20gPT0gMHhGRkZFKSB7CisgICAgICAgICAgICBxICs9IDI7CisgICAgICAgICAgICBibyA9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJ5dGVvcmRlcikKKyAgICAgICAgICAgICpieXRlb3JkZXIgPSBibzsKICAgICB9CiAKLSAgICBpZiAoYm8gPT0gLTEpIHsKLSAgICAgICAgLyogZm9yY2UgTEUgKi8KLSAgICAgICAgaWhpID0gMTsKLSAgICAgICAgaWxvID0gMDsKKyAgICBpZiAocSA9PSBlKSB7CisgICAgICAgIGlmIChjb25zdW1lZCkKKyAgICAgICAgICAgICpjb25zdW1lZCA9IHNpemU7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CiAgICAgfQotICAgIGVsc2UgaWYgKGJvID09IDEpIHsKLSAgICAgICAgLyogZm9yY2UgQkUgKi8KLSAgICAgICAgaWhpID0gMDsKLSAgICAgICAgaWxvID0gMTsKLSAgICB9CisKICNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgotICAgIG5hdGl2ZV9vcmRlcmluZyA9IGlsbyA8IGloaTsKKyAgICBuYXRpdmVfb3JkZXJpbmcgPSBibyA8PSAwOwogI2Vsc2UKLSAgICBuYXRpdmVfb3JkZXJpbmcgPSBpbG8gPiBpaGk7CisgICAgbmF0aXZlX29yZGVyaW5nID0gYm8gPj0gMDsKICNlbmRpZgogCi0gICAgYWxpZ25lZF9lbmQgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAoKHNpemVfdCkgZSAmIH5MT05HX1BUUl9NQVNLKTsKKyAgICAvKiBOb3RlOiBzaXplIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcgVW5pY29kZQorICAgICAgIGNoYXJhY3RlciBjb3VudCAqLworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KChlIC0gcSArIDEpIC8gMiwgMTI3KTsKKyAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgb3V0cG9zID0gMDsKICAgICB3aGlsZSAoMSkgewotICAgICAgICBQeV9VTklDT0RFIGNoOwotICAgICAgICBpZiAoZSAtIHEgPCAyKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSAwOworICAgICAgICBpZiAoZSAtIHEgPj0gMikgeworICAgICAgICAgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICAgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBhc2NpaWxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNoID0gdWNzMWxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgICAgIGNoID0gdWNzMmxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgICAgICBjaCA9IHVjczRsaWJfdXRmMTZfZGVjb2RlKCZxLCBlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChjaCkKKyAgICAgICAgeworICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAvKiByZW1haW5pbmcgYnl0ZSBhdCB0aGUgZW5kPyAoc2l6ZSBzaG91bGQgYmUgZXZlbikgKi8KICAgICAgICAgICAgIGlmIChxID09IGUgfHwgY29uc3VtZWQpCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZ290byBFbmQ7CiAgICAgICAgICAgICBlcnJtc2cgPSAidHJ1bmNhdGVkIGRhdGEiOwogICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoY29uc3QgY2hhciAqKXEpIC0gc3RhcnRzOwogICAgICAgICAgICAgZW5kaW5wb3MgPSAoKGNvbnN0IGNoYXIgKillKSAtIHN0YXJ0czsKLSAgICAgICAgICAgIG91dHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKLSAgICAgICAgICAgIGdvdG8gdXRmMTZFcnJvcjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLyogVGhlIHJlbWFpbmluZyBpbnB1dCBjaGFycyBhcmUgaWdub3JlZCBpZiB0aGUgY2FsbGJhY2sKICAgICAgICAgICAgICAgIGNob29zZXMgdG8gc2tpcCB0aGUgaW5wdXQgKi8KLSAgICAgICAgfQotICAgICAgICAvKiBGaXJzdCBjaGVjayBmb3IgcG9zc2libGUgYWxpZ25lZCByZWFkIG9mIGEgQyAnbG9uZycuIFVuYWxpZ25lZAotICAgICAgICAgICByZWFkcyBhcmUgbW9yZSBleHBlbnNpdmUsIGJldHRlciB0byBkZWZlciB0byBhbm90aGVyIGl0ZXJhdGlvbi4gKi8KLSAgICAgICAgaWYgKCEoKHNpemVfdCkgcSAmIExPTkdfUFRSX01BU0spKSB7Ci0gICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHJ1bnMgb2Ygbm9uLXN1cnJvZ2F0ZSBjaGFycy4gKi8KLSAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9xID0gcTsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKl9wID0gcDsKLSAgICAgICAgICAgIGlmIChuYXRpdmVfb3JkZXJpbmcpIHsKLSAgICAgICAgICAgICAgICAvKiBOYXRpdmUgb3JkZXJpbmcgaXMgc2ltcGxlOiBhcyBsb25nIGFzIHRoZSBpbnB1dCBjYW5ub3QKLSAgICAgICAgICAgICAgICAgICBwb3NzaWJseSBjb250YWluIGEgc3Vycm9nYXRlIGNoYXIsIGRvIGFuIHVucm9sbGVkIGNvcHkKLSAgICAgICAgICAgICAgICAgICBvZiBzZXZlcmFsIDE2LWJpdCBjb2RlIHBvaW50cyB0byB0aGUgdGFyZ2V0IG9iamVjdC4KLSAgICAgICAgICAgICAgICAgICBUaGUgbm9uLXN1cnJvZ2F0ZSBjaGVjayBpcyBkb25lIG9uIHNldmVyYWwgaW5wdXQgYnl0ZXMKLSAgICAgICAgICAgICAgICAgICBhdCBhIHRpbWUgKGFzIG1hbnkgYXMgYSBDICdsb25nJyBjYW4gY29udGFpbikuICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKF9xIDwgYWxpZ25lZF9lbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhID0gKiAodW5zaWduZWQgbG9uZyAqKSBfcTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiBGQVNUX0NIQVJfTUFTSykKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBfcFswXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzBdOwotICAgICAgICAgICAgICAgICAgICBfcFsxXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzFdOwotI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotICAgICAgICAgICAgICAgICAgICBfcFsyXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzJdOwotICAgICAgICAgICAgICAgICAgICBfcFszXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzNdOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIF9xICs9IFNJWkVPRl9MT05HOwotICAgICAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORyAvIDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLyogQnl0ZXN3YXBwZWQgb3JkZXJpbmcgaXMgc2ltaWxhciwgYnV0IHdlIG11c3QgZGVjb21wb3NlCi0gICAgICAgICAgICAgICAgICAgdGhlIGNvcHkgYnl0ZXdpc2UsIGFuZCB0YWtlIGNhcmUgb2YgemVybydpbmcgb3V0IHRoZQotICAgICAgICAgICAgICAgICAgIHVwcGVyIGJ5dGVzIGlmIHRoZSB0YXJnZXQgb2JqZWN0IGlzIGluIDMyLWJpdCB1bml0cwotICAgICAgICAgICAgICAgICAgICh0aGF0IGlzLCBpbiBVQ1MtNCBidWlsZHMpLiAqLwotICAgICAgICAgICAgICAgIHdoaWxlIChfcSA8IGFsaWduZWRfZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9ICogKHVuc2lnbmVkIGxvbmcgKikgX3E7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhICYgU1dBUFBFRF9GQVNUX0NIQVJfTUFTSykKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAvKiBaZXJvIHVwcGVyIGJ5dGVzIGluIFVDUy00IGJ1aWxkcyAqLwotI2lmIChQeV9VTklDT0RFX1NJWkUgPiAyKQotICAgICAgICAgICAgICAgICAgICBfcFswXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIF9wWzFdID0gMDsKLSNpZiAoU0laRU9GX0xPTkcgPT0gOCkKLSAgICAgICAgICAgICAgICAgICAgX3BbMl0gPSAwOwotICAgICAgICAgICAgICAgICAgICBfcFszXSA9IDA7Ci0jZW5kaWYKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAvKiBJc3N1ZSAjNDkxNjsgVUNTLTQgYnVpbGRzIG9uIGJpZyBlbmRpYW4gbWFjaGluZXMgbXVzdAotICAgICAgICAgICAgICAgICAgICAgICBmaWxsIHRoZSB0d28gbGFzdCBieXRlcyBvZiBlYWNoIDQtYnl0ZSB1bml0LiAqLwotI2lmICghZGVmaW5lZChCWVRFT1JERVJfSVNfTElUVExFX0VORElBTikgJiYgUHlfVU5JQ09ERV9TSVpFID4gMikKLSMgZGVmaW5lIE9GRiAyCi0jZWxzZQotIyBkZWZpbmUgT0ZGIDAKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDFdID0gX3FbMF07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMF0gPSBfcVsxXTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAxICsgUHlfVU5JQ09ERV9TSVpFXSA9IF9xWzJdOwotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDAgKyBQeV9VTklDT0RFX1NJWkVdID0gX3FbM107Ci0jaWYgKFNJWkVPRl9MT05HID09IDgpCi0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMSArIDIgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbNF07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMCArIDIgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbNV07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMSArIDMgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbNl07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMCArIDMgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbN107Ci0jZW5kaWYKLSN1bmRlZiBPRkYKLSAgICAgICAgICAgICAgICAgICAgX3EgKz0gU0laRU9GX0xPTkc7Ci0gICAgICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HIC8gMjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwID0gX3A7Ci0gICAgICAgICAgICBxID0gX3E7Ci0gICAgICAgICAgICBpZiAoZSAtIHEgPCAyKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGNoID0gKHFbaWhpXSA8PCA4KSB8IHFbaWxvXTsKLQotICAgICAgICBxICs9IDI7Ci0KLSAgICAgICAgaWYgKGNoIDwgMHhEODAwIHx8IGNoID4gMHhERkZGKSB7Ci0gICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGVycm1zZyA9ICJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIjsKKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSAoKGNvbnN0IGNoYXIgKilxKSAtIDIgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9ICgoY29uc3QgY2hhciAqKWUpIC0gc3RhcnRzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGVycm1zZyA9ICJpbGxlZ2FsIGVuY29kaW5nIjsKKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSAoKGNvbnN0IGNoYXIgKilxKSAtIDIgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGVycm1zZyA9ICJpbGxlZ2FsIFVURi0xNiBzdXJyb2dhdGUiOworICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoY29uc3QgY2hhciAqKXEpIC0gNCAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICAvKiBVVEYtMTYgY29kZSBwYWlyOiAqLwotICAgICAgICBpZiAoZSAtIHEgPCAyKSB7Ci0gICAgICAgICAgICBlcnJtc2cgPSAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSI7Ci0gICAgICAgICAgICBzdGFydGlucG9zID0gKCgoY29uc3QgY2hhciAqKXEpIC0gMikgLSBzdGFydHM7Ci0gICAgICAgICAgICBlbmRpbnBvcyA9ICgoY29uc3QgY2hhciAqKWUpIC0gc3RhcnRzOwotICAgICAgICAgICAgZ290byB1dGYxNkVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGlmICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhEQkZGKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoMiA9IChxW2loaV0gPDwgOCkgfCBxW2lsb107Ci0gICAgICAgICAgICBxICs9IDI7Ci0gICAgICAgICAgICBpZiAoMHhEQzAwIDw9IGNoMiAmJiBjaDIgPD0gMHhERkZGKSB7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgICpwKysgPSBjaDsKLSAgICAgICAgICAgICAgICAqcCsrID0gY2gyOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAqcCsrID0gKCgoY2ggJiAweDNGRik8PDEwKSB8IChjaDIgJiAweDNGRikpICsgMHgxMDAwMDsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImlsbGVnYWwgVVRGLTE2IHN1cnJvZ2F0ZSI7Ci0gICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoKGNvbnN0IGNoYXIgKilxKS00KS1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzI7Ci0gICAgICAgICAgICAgICAgZ290byB1dGYxNkVycm9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgIH0KLSAgICAgICAgZXJybXNnID0gImlsbGVnYWwgZW5jb2RpbmciOwotICAgICAgICBzdGFydGlucG9zID0gKCgoY29uc3QgY2hhciAqKXEpLTIpLXN0YXJ0czsKLSAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzI7Ci0gICAgICAgIC8qIEZhbGwgdGhyb3VnaCB0byByZXBvcnQgdGhlIGVycm9yICovCi0KLSAgICAgIHV0ZjE2RXJyb3I6Ci0gICAgICAgIG91dHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywKICAgICAgICAgICAgICAgICAmZXJyb3JIYW5kbGVyLApAQCAtMzYxNSwyNyArNTMyMywyMSBAQAogICAgICAgICAgICAgICAgICZleGMsCiAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiopJnEsCiAgICAgICAgICAgICAgICAgJnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgJm91dHBvcywKLSAgICAgICAgICAgICAgICAmcCkpCisgICAgICAgICAgICAgICAgJm91dHBvcykpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIC8qIFVwZGF0ZSBkYXRhIGJlY2F1c2UgdW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIgbWlnaHQgaGF2ZQotICAgICAgICAgICBjaGFuZ2VkIHRoZSBpbnB1dCBvYmplY3QuICovCi0gICAgICAgIGFsaWduZWRfZW5kID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgKChzaXplX3QpIGUgJiB+TE9OR19QVFJfTUFTSyk7CiAgICAgfQogCi0gICAgaWYgKGJ5dGVvcmRlcikKLSAgICAgICAgKmJ5dGVvcmRlciA9IGJvOwotCitFbmQ6CiAgICAgaWYgKGNvbnN1bWVkKQogICAgICAgICAqY29uc3VtZWQgPSAoY29uc3QgY2hhciAqKXEtc3RhcnRzOwogCiAgICAgLyogQWRqdXN0IGxlbmd0aCAqLwotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdW5pY29kZSwgcCAtIHVuaWNvZGUtPnN0cikgPCAwKQorICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdW5pY29kZSwgb3V0cG9zKSA8IDApCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHVuaWNvZGUpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwpAQCAtMzY0NCw4ICs1MzQ2LDc3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSN1bmRlZiBGQVNUX0NIQVJfTUFTSwotI3VuZGVmIFNXQVBQRURfRkFTVF9DSEFSX01BU0sKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQoreworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBjb25zdCB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5T2JqZWN0ICp2OworICAgIHVuc2lnbmVkIHNob3J0ICpvdXQ7CisgICAgUHlfc3NpemVfdCBieXRlc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHBhaXJzOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorICAgIGludCBuYXRpdmVfb3JkZXJpbmcgPSBieXRlb3JkZXIgPj0gMDsKKyNlbHNlCisgICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IGJ5dGVvcmRlciA8PSAwOworI2VuZGlmCisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHIpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisKKyAgICBwYWlycyA9IDA7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCAqaW4gPSAoY29uc3QgUHlfVUNTNCAqKWRhdGE7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgKmVuZCA9IGluICsgbGVuOworICAgICAgICB3aGlsZSAoaW4gPCBlbmQpCisgICAgICAgICAgICBpZiAoKmluKysgPj0gMHgxMDAwMCkKKyAgICAgICAgICAgICAgICBwYWlycysrOworICAgIH0KKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyAyIC0gcGFpcnMgLSAoYnl0ZW9yZGVyID09IDApKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBieXRlc2l6ZSA9IChsZW4gKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCkpICogMjsKKyAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2l6ZSk7CisgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBvdXRwdXQgYnVmZmVyIGlzIDItYnl0ZXMgYWxpZ25lZCAqLworICAgIGFzc2VydCgoKFB5X3VpbnRwdHJfdClQeUJ5dGVzX0FTX1NUUklORyh2KSAmIDEpID09IDApOworICAgIG91dCA9ICh1bnNpZ25lZCBzaG9ydCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOworICAgIGlmIChieXRlb3JkZXIgPT0gMCkKKyAgICAgICAgKm91dCsrID0gMHhGRUZGOworICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeworICAgICAgICB1Y3MxbGliX3V0ZjE2X2VuY29kZShvdXQsIChjb25zdCBQeV9VQ1MxICopZGF0YSwgbGVuLCBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeworICAgICAgICB1Y3MybGliX3V0ZjE2X2VuY29kZShvdXQsIChjb25zdCBQeV9VQ1MyICopZGF0YSwgbGVuLCBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogeworICAgICAgICB1Y3M0bGliX3V0ZjE2X2VuY29kZShvdXQsIChjb25zdCBQeV9VQ1M0ICopZGF0YSwgbGVuLCBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KKworICBkb25lOgorICAgIHJldHVybiB2OworfQogCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoY29uc3QgUHlfVU5JQ09ERSAqcywKQEAgLTM2NTMsMTM2ICs1NDI0LDE0MSBAQAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQogewotICAgIFB5T2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIGNoYXIgKnA7Ci0gICAgUHlfc3NpemVfdCBuc2l6ZSwgYnl0ZXNpemU7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgUHlfc3NpemVfdCBpLCBwYWlyczsKLSNlbHNlCi0gICAgY29uc3QgaW50IHBhaXJzID0gMDsKLSNlbmRpZgotICAgIC8qIE9mZnNldHMgZnJvbSBwIGZvciBzdG9yaW5nIGJ5dGUgcGFpcnMgaW4gdGhlIHJpZ2h0IG9yZGVyLiAqLwotI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCi0gICAgaW50IGloaSA9IDEsIGlsbyA9IDA7Ci0jZWxzZQotICAgIGludCBpaGkgPSAwLCBpbG8gPSAxOwotI2VuZGlmCi0KLSNkZWZpbmUgU1RPUkVDSEFSKENIKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcFtpaGldID0gKChDSCkgPj4gOCkgJiAweGZmOyAgICAgICAgICAgIFwKLSAgICAgICAgcFtpbG9dID0gKENIKSAmIDB4ZmY7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcCArPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlKDApCi0KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBmb3IgKGkgPSBwYWlycyA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgIGlmIChzW2ldID49IDB4MTAwMDApCi0gICAgICAgICAgICBwYWlycysrOwotI2VuZGlmCi0gICAgLyogMiAqIChzaXplICsgcGFpcnMgKyAoYnl0ZW9yZGVyID09IDApKSAqLwotICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggfHwKLSAgICAgICAgc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gcGFpcnMgLSAoYnl0ZW9yZGVyID09IDApKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICBuc2l6ZSA9IHNpemUgKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCk7Ci0gICAgYnl0ZXNpemUgPSBuc2l6ZSAqIDI7Ci0gICAgaWYgKGJ5dGVzaXplIC8gMiAhPSBuc2l6ZSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNpemUpOwotICAgIGlmICh2ID09IE5VTEwpCisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBwID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICBpZiAoYnl0ZW9yZGVyID09IDApCi0gICAgICAgIFNUT1JFQ0hBUigweEZFRkYpOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIGlmIChieXRlb3JkZXIgPT0gLTEpIHsKLSAgICAgICAgLyogZm9yY2UgTEUgKi8KLSAgICAgICAgaWhpID0gMTsKLSAgICAgICAgaWxvID0gMDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoYnl0ZW9yZGVyID09IDEpIHsKLSAgICAgICAgLyogZm9yY2UgQkUgKi8KLSAgICAgICAgaWhpID0gMDsKLSAgICAgICAgaWxvID0gMTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gKnMrKzsKLSAgICAgICAgUHlfVU5JQ09ERSBjaDIgPSAwOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgY2gyID0gMHhEQzAwIHwgKChjaC0weDEwMDAwKSAmIDB4M0ZGKTsKLSAgICAgICAgICAgIGNoICA9IDB4RDgwMCB8ICgoY2gtMHgxMDAwMCkgPj4gMTApOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgU1RPUkVDSEFSKGNoKTsKLSAgICAgICAgaWYgKGNoMikKLSAgICAgICAgICAgIFNUT1JFQ0hBUihjaDIpOwotICAgIH0KLQotICBkb25lOgotICAgIHJldHVybiB2OwotI3VuZGVmIFNUT1JFQ0hBUgorICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodG1wLCBlcnJvcnMsIGJ5dGVvcmRlcik7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKLSAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodW5pY29kZSwgTlVMTCwgMCk7CiB9CiAKIC8qIC0tLSBVbmljb2RlIEVzY2FwZSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlLCBkZXRlcm1pbmVzCisgICBpZiBhbGwgdGhlIGVzY2FwZXMgaW4gdGhlIHN0cmluZyBtYWtlIGl0IHN0aWxsIGEgdmFsaWQgQVNDSUkgc3RyaW5nLgorICAgUmV0dXJucyAtMSBpZiBhbnkgZXNjYXBlcyB3ZXJlIGZvdW5kIHdoaWNoIGNhdXNlIHRoZSBzdHJpbmcgdG8KKyAgIHBvcCBvdXQgb2YgQVNDSUkgcmFuZ2UuICBPdGhlcndpc2UgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZQorICAgcmVxdWlyZWQgYnVmZmVyIHRvIGhvbGQgdGhlIHN0cmluZy4KKyAgICovCitzdGF0aWMgUHlfc3NpemVfdAorbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVuZCA9IHAgKyBzaXplOworICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gMDsKKworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgZm9yICg7IHAgPCBlbmQ7ICsrcCkgeworICAgICAgICBpZiAoKnAgPiAxMjcpIHsKKyAgICAgICAgICAgIC8qIE5vbi1BU0NJSSAqLworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCpwICE9ICdcXCcpIHsKKyAgICAgICAgICAgIC8qIE5vcm1hbCBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgICsrbGVuZ3RoOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogQmFja3NsYXNoLWVzY2FwZSwgY2hlY2sgbmV4dCBjaGFyICovCisgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAvKiBFc2NhcGUgc2VxdWVuY2UgcmVhY2hlcyB0aWxsIGVuZCBvZiBzdHJpbmcgb3IKKyAgICAgICAgICAgICAgIG5vbi1BU0NJSSBmb2xsb3ctdXAuICovCisgICAgICAgICAgICBpZiAocCA+PSBlbmQgfHwgKnAgPiAxMjcpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgICAgIC8qIGJhY2tzbGFzaCArIFxuIHJlc3VsdCBpbiB6ZXJvIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnXCcnOiBjYXNlICdcIic6CisgICAgICAgICAgICBjYXNlICdiJzogY2FzZSAnZic6IGNhc2UgJ3QnOgorICAgICAgICAgICAgY2FzZSAnbic6IGNhc2UgJ3InOiBjYXNlICd2JzogY2FzZSAnYSc6CisgICAgICAgICAgICAgICAgKytsZW5ndGg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKKyAgICAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOgorICAgICAgICAgICAgY2FzZSAneCc6IGNhc2UgJ3UnOiBjYXNlICdVJzogY2FzZSAnTic6CisgICAgICAgICAgICAgICAgLyogdGhlc2UgZG8gbm90IGd1YXJhbnRlZSBBU0NJSSBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAvKiBjb3VudCB0aGUgYmFja3NsYXNoICsgdGhlIG90aGVyIGNoYXJhY3RlciAqLworICAgICAgICAgICAgICAgIGxlbmd0aCArPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBsZW5ndGg7Cit9CisKIHN0YXRpYyBfUHlVbmljb2RlX05hbWVfQ0FQSSAqdWNuaGFzaF9DQVBJID0gTlVMTDsKIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKLSAgICBQeV9zc2l6ZV90IG91dHBvczsKLSAgICBpbnQgaTsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7Ci0gICAgUHlfVU5JQ09ERSAqcDsKKyAgICBpbnQgajsKKyAgICBQeU9iamVjdCAqdjsKICAgICBjb25zdCBjaGFyICplbmQ7CiAgICAgY2hhciogbWVzc2FnZTsKICAgICBQeV9VQ1M0IGNociA9IDB4ZmZmZmZmZmY7IC8qIGluIGNhc2UgJ2dldGNvZGUnIG1lc3NlcyB1cCAqLwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5X3NzaXplX3QgaTsKIAotICAgIC8qIEVzY2FwZWQgc3RyaW5ncyB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nCi0gICAgICAgVW5pY29kZSBzdHJpbmcsIHNvIHdlIHN0YXJ0IHdpdGggc2l6ZSBoZXJlIGFuZCB0aGVuIHJlZHVjZSB0aGUKLSAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4KLSAgICAgICAoYnV0IGlmIHRoZSBlcnJvciBjYWxsYmFjayByZXR1cm5zIGEgbG9uZyByZXBsYWNlbWVudCBzdHJpbmcKLSAgICAgICB3ZSdsbCBoYXZlIHRvIGFsbG9jYXRlIG1vcmUgc3BhY2UpICovCi0gICAgdiA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOwotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBsZW4gPSBsZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcocywgc2l6ZSk7CisKKyAgICAvKiBBZnRlciBsZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcoKSB0aGVyZSBhcmUgdHdvIGFsdGVybmF0aXZlcywKKyAgICAgICBlaXRoZXIgdGhlIHN0cmluZyBpcyBwdXJlIEFTQ0lJIHdpdGggbmFtZWQgZXNjYXBlcyBsaWtlIFxuLCBldGMuCisgICAgICAgYW5kIHdlIGRldGVybWluZWQgaXQncyBleGFjdCBzaXplIChjb21tb24gY2FzZSkKKyAgICAgICBvciBpdCBjb250YWlucyBceCwgXHUsIC4uLiBlc2NhcGUgc2VxdWVuY2VzLiAgdGhlbiB3ZSBjcmVhdGUgYQorICAgICAgIGxlZ2FjeSB3Y2hhciBzdHJpbmcgYW5kIHJlc2l6ZSBpdCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uICovCisgICAgaWYgKGxlbiA+PSAwKSB7CisgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KGxlbiwgMTI3KTsKKyAgICAgICAgaWYgKCF2KQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQodikgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKKyAgICAgICAgICAgVW5pY29kZSBzdHJpbmcsIHNvIHdlIHN0YXJ0IHdpdGggc2l6ZSBoZXJlIGFuZCB0aGVuIHJlZHVjZSB0aGUKKyAgICAgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuCisgICAgICAgICAgIChidXQgaWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVybnMgYSBsb25nIHJlcGxhY2VtZW50IHN0cmluZworICAgICAgICAgICB3ZSdsbCBoYXZlIHRvIGFsbG9jYXRlIG1vcmUgc3BhY2UpICovCisgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CisgICAgICAgIGlmICghdikKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgbGVuID0gc2l6ZTsKKyAgICB9CisKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLQotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgaSA9IDA7CiAgICAgZW5kID0gcyArIHNpemU7CiAKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIFB5X1VOSUNPREUgeDsKKyAgICAgICAgUHlfVUNTNCB4OwogICAgICAgICBpbnQgZGlnaXRzOwogCisgICAgICAgIC8qIFRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggaSA9PSBhc2NpaV9sZW5ndGggaXMgYSBiYWNrc2xhc2gKKyAgICAgICAgICAgZm9sbG93ZWQgYnkgYSBuZXdsaW5lLiAqLworICAgICAgICBhc3NlcnQoaSA8PSBsZW4pOworCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwogICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJmksICh1bnNpZ25lZCBjaGFyKSAqcysrKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMzc5MiwyMCArNTU2OCwzNCBAQAogICAgICAgICBjID0gKnMrKzsKICAgICAgICAgaWYgKHMgPiBlbmQpCiAgICAgICAgICAgICBjID0gJ1wwJzsgLyogSW52YWxpZCBhZnRlciBcICovCisKKyAgICAgICAgLyogVGhlIG9ubHkgY2FzZSBpbiB3aGljaCBpID09IGFzY2lpX2xlbmd0aCBpcyBhIGJhY2tzbGFzaAorICAgICAgICAgICBmb2xsb3dlZCBieSBhIG5ld2xpbmUuICovCisgICAgICAgIGFzc2VydChpIDwgbGVuIHx8IChpID09IGxlbiAmJiBjID09ICdcbicpKTsKKwogICAgICAgICBzd2l0Y2ggKGMpIHsKIAogICAgICAgICAgICAgLyogXHggZXNjYXBlcyAqLworI2RlZmluZSBXUklURUNIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmaSwgY2gpIDwgMCkgICAgXAorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9d2hpbGUoMCkKKwogICAgICAgICBjYXNlICdcbic6IGJyZWFrOwotICAgICAgICBjYXNlICdcXCc6ICpwKysgPSAnXFwnOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCcnOiAqcCsrID0gJ1wnJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1wiJzogKnArKyA9ICdcIic7IGJyZWFrOwotICAgICAgICBjYXNlICdiJzogKnArKyA9ICdcYic7IGJyZWFrOwotICAgICAgICBjYXNlICdmJzogKnArKyA9ICdcMDE0JzsgYnJlYWs7IC8qIEZGICovCi0gICAgICAgIGNhc2UgJ3QnOiAqcCsrID0gJ1x0JzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ24nOiAqcCsrID0gJ1xuJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3InOiAqcCsrID0gJ1xyJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3YnOiAqcCsrID0gJ1wwMTMnOyBicmVhazsgLyogVlQgKi8KLSAgICAgICAgY2FzZSAnYSc6ICpwKysgPSAnXDAwNyc7IGJyZWFrOyAvKiBCRUwsIG5vdCBjbGFzc2ljIEMgKi8KKyAgICAgICAgY2FzZSAnXFwnOiBXUklURUNIQVIoJ1xcJyk7IGJyZWFrOworICAgICAgICBjYXNlICdcJyc6IFdSSVRFQ0hBUignXCcnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ1wiJzogV1JJVEVDSEFSKCdcIicpOyBicmVhazsKKyAgICAgICAgY2FzZSAnYic6IFdSSVRFQ0hBUignXGInKTsgYnJlYWs7CisgICAgICAgIC8qIEZGICovCisgICAgICAgIGNhc2UgJ2YnOiBXUklURUNIQVIoJ1wwMTQnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ3QnOiBXUklURUNIQVIoJ1x0Jyk7IGJyZWFrOworICAgICAgICBjYXNlICduJzogV1JJVEVDSEFSKCdcbicpOyBicmVhazsKKyAgICAgICAgY2FzZSAncic6IFdSSVRFQ0hBUignXHInKTsgYnJlYWs7CisgICAgICAgIC8qIFZUICovCisgICAgICAgIGNhc2UgJ3YnOiBXUklURUNIQVIoJ1wwMTMnKTsgYnJlYWs7CisgICAgICAgIC8qIEJFTCwgbm90IGNsYXNzaWMgQyAqLworICAgICAgICBjYXNlICdhJzogV1JJVEVDSEFSKCdcMDA3Jyk7IGJyZWFrOwogCiAgICAgICAgICAgICAvKiBcT09PIChvY3RhbCkgZXNjYXBlcyAqLwogICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKQEAgLTM4MTYsNyArNTYwNiw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykKICAgICAgICAgICAgICAgICAgICAgeCA9ICh4PDwzKSArICpzKysgLSAnMCc7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcCsrID0geDsKKyAgICAgICAgICAgIFdSSVRFQ0hBUih4KTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAvKiBoZXggZXNjYXBlcyAqLwpAQCAtMzgzOCwyNyArNTYyOCwyNyBAQAogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFxVWFhYWFhYWFggZXNjYXBlIjsKICAgICAgICAgaGV4ZXNjYXBlOgogICAgICAgICAgICAgY2hyID0gMDsKLSAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAocytkaWdpdHM+ZW5kKSB7CiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzaXplOwogICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgImVuZCBvZiBzdHJpbmcgaW4gZXNjYXBlIHNlcXVlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmaSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICBnb3RvIG5leHRCeXRlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGRpZ2l0czsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSBzW2ldOworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGRpZ2l0czsgKytqKSB7CisgICAgICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSBzW2pdOwogICAgICAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpIHsKLSAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSAocytpKzEpLXN0YXJ0czsKKyAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSAocytqKzEpLXN0YXJ0czsKICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJmkpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KTsKICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0Qnl0ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2hyID0gKGNocjw8NCkgJiB+MHhGOwpAQCAtMzg2OSwzNCArNTY1OSwyMiBAQAogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2hyICs9IDEwICsgYyAtICdBJzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHMgKz0gaTsKKyAgICAgICAgICAgIHMgKz0gajsKICAgICAgICAgICAgIGlmIChjaHIgPT0gMHhmZmZmZmZmZiAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIC8qIF9kZWNvZGluZ19lcnJvciB3aWxsIGhhdmUgYWxyZWFkeSB3cml0dGVuIGludG8gdGhlCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGJ1ZmZlci4gKi8KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgc3RvcmU6CiAgICAgICAgICAgICAvKiB3aGVuIHdlIGdldCBoZXJlLCBjaHIgaXMgYSAzMi1iaXQgdW5pY29kZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIGlmIChjaHIgPD0gMHhmZmZmKQotICAgICAgICAgICAgICAgIC8qIFVDUy0yIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSkgY2hyOwotICAgICAgICAgICAgZWxzZSBpZiAoY2hyIDw9IDB4MTBmZmZmKSB7Ci0gICAgICAgICAgICAgICAgLyogVUNTLTQgY2hhcmFjdGVyLiBFaXRoZXIgc3RvcmUgZGlyZWN0bHksIG9yIGFzCi0gICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlIHBhaXIuICovCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgKnArKyA9IGNocjsKLSNlbHNlCi0gICAgICAgICAgICAgICAgY2hyIC09IDB4MTAwMDBMOwotICAgICAgICAgICAgICAgICpwKysgPSAweEQ4MDAgKyAoUHlfVU5JQ09ERSkgKGNociA+PiAxMCk7Ci0gICAgICAgICAgICAgICAgKnArKyA9IDB4REMwMCArIChQeV9VTklDT0RFKSAoY2hyICYgMHgwM0ZGKTsKLSNlbmRpZgorICAgICAgICAgICAgaWYgKGNociA8PSBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgICAgIFdSSVRFQ0hBUihjaHIpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVlc2NhcGUiLCAiaWxsZWdhbCBVbmljb2RlIGNoYXJhY3RlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJmkpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTM5MDYsNyArNTY4NCw4IEBACiAgICAgICAgICAgICBtZXNzYWdlID0gIm1hbGZvcm1lZCBcXE4gY2hhcmFjdGVyIGVzY2FwZSI7CiAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAvKiBsb2FkIHRoZSB1bmljb2RlIGRhdGEgbW9kdWxlICovCi0gICAgICAgICAgICAgICAgdWNuaGFzaF9DQVBJID0gKF9QeVVuaWNvZGVfTmFtZV9DQVBJICopUHlDYXBzdWxlX0ltcG9ydChQeVVuaWNvZGVEYXRhX0NBUFNVTEVfTkFNRSwgMSk7CisgICAgICAgICAgICAgICAgdWNuaGFzaF9DQVBJID0gKF9QeVVuaWNvZGVfTmFtZV9DQVBJICopUHlDYXBzdWxlX0ltcG9ydCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZURhdGFfQ0FQU1VMRV9OQU1FLCAxKTsKICAgICAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gdWNuaGFzaEVycm9yOwogICAgICAgICAgICAgfQpAQCAtMzkxOSwxNyArNTY5OCwxNyBAQAogICAgICAgICAgICAgICAgICAgICAvKiBmb3VuZCBhIG5hbWUuICBsb29rIGl0IHVwIGluIHRoZSB1bmljb2RlIGRhdGFiYXNlICovCiAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAidW5rbm93biBVbmljb2RlIGNoYXJhY3RlciBuYW1lIjsKICAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJLT5nZXRjb2RlKE5VTEwsIHN0YXJ0LCAoaW50KShzLXN0YXJ0LTEpLCAmY2hyKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSS0+Z2V0Y29kZShOVUxMLCBzdGFydCwgKGludCkocy1zdGFydC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hyLCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RvcmU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVlc2NhcGUiLCBtZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgJnYsICZpKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBicmVhazsKIApAQCAtMzkzOCwyOCArNTcxNywyOSBAQAogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiXFwgYXQgZW5kIG9mIHN0cmluZyI7CiAgICAgICAgICAgICAgICAgcy0tOwogICAgICAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJmkpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpc1stMV07CisgICAgICAgICAgICAgICAgV1JJVEVDSEFSKCdcXCcpOworICAgICAgICAgICAgICAgIFdSSVRFQ0hBUihzWy0xXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgbmV4dEJ5dGU6CiAgICAgICAgIDsKICAgICB9Ci0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKKyN1bmRlZiBXUklURUNIQVIKKworICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdiwgaSkgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgdWNuaGFzaEVycm9yOgogICAgIFB5RXJyX1NldFN0cmluZygKQEAgLTM5ODUsMzkgKzU3NjUsMTYgQEAKIAogKi8KIAotUHlfTE9DQUxfSU5MSU5FKGNvbnN0IFB5X1VOSUNPREUgKikgZmluZGNoYXIoY29uc3QgUHlfVU5JQ09ERSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgY2gpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIC8qIGxpa2Ugd2NzY2hyLCBidXQgZG9lc24ndCBzdG9wIGF0IE5VTEwgY2hhcmFjdGVycyAqLwotCi0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgaWYgKCpzID09IGNoKQotICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgIHMrKzsKLSAgICB9Ci0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgKmhleGRpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKLQotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQoteworICAgIFB5X3NzaXplX3QgaSwgbGVuOwogICAgIFB5T2JqZWN0ICpyZXByOwogICAgIGNoYXIgKnA7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAwOwogCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgY29uc3QgUHlfc3NpemVfdCBleHBhbmRzaXplID0gMTA7Ci0jZWxzZQotICAgIGNvbnN0IFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDY7Ci0jZW5kaWYKLQotICAgIC8qIFhYWChubm9yd2l0eik6IHJhdGhlciB0aGFuIG92ZXItYWxsb2NhdGluZywgaXQgd291bGQgYmUKLSAgICAgICBiZXR0ZXIgdG8gY2hvb3NlIGEgZGlmZmVyZW50IHNjaGVtZS4gIFBlcmhhcHMgc2NhbiB0aGUKLSAgICAgICBmaXJzdCBOLWNoYXJzIG9mIHRoZSBzdHJpbmcgYW5kIGFsbG9jYXRlIGJhc2VkIG9uIHRoYXQgc2l6ZS4KLSAgICAqLwogICAgIC8qIEluaXRpYWwgYWxsb2NhdGlvbiBpcyBiYXNlZCBvbiB0aGUgbG9uZ2VzdC1wb3NzaWJsZSB1bmljaHIKICAgICAgICBlc2NhcGUuCiAKQEAgLTQwMzIsMjMgKzU3ODksMzggQEAKICAgICAgICBlc2NhcGUuCiAgICAgKi8KIAotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDQ7IGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSA2OyBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiBleHBhbmRzaXplID0gMTA7IGJyZWFrOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKLSAgICBpZiAoc2l6ZSA+IChQWV9TU0laRV9UX01BWCAtIDIgLSAxKSAvIGV4cGFuZHNpemUpCisgICAgaWYgKGxlbiA+IChQWV9TU0laRV9UX01BWCAtIDIgLSAxKSAvIGV4cGFuZHNpemUpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCiAgICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBleHBhbmRzaXplKnNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGV4cGFuZHNpemUqbGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxKTsKICAgICBpZiAocmVwciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKIAotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKICAgICAgICAgLyogRXNjYXBlIGJhY2tzbGFzaGVzICovCiAgICAgICAgIGlmIChjaCA9PSAnXFwnKSB7CkBAIC00MDU3LDU3ICs1ODI5LDMwIEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgIC8qIE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMHh4eHh4eCcgKi8KICAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjQpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0jZWxzZQotICAgICAgICAvKiBNYXAgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDwgMHhEQzAwKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoMjsKLSAgICAgICAgICAgIFB5X1VDUzQgdWNzOwotCi0gICAgICAgICAgICBjaDIgPSAqcysrOwotICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgaWYgKGNoMiA+PSAweERDMDAgJiYgY2gyIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkgKyAweDAwMDEwMDAwOwotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjApICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDE2KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoOiBpc29sYXRlZCBzdXJyb2dhdGVzIGFyZSBjb3BpZWQgYXMtaXMgKi8KLSAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgIHNpemUrKzsKLSAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCiAgICAgICAgIGlmIChjaCA+PSAyNTYpIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE1hcCBzcGVjaWFsIHdoaXRlc3BhY2UgdG8gJ1x0JywgXG4nLCAnXHInICovCkBAIC00MTI4LDggKzU4NzMsOCBAQAogICAgICAgICBlbHNlIGlmIChjaCA8ICcgJyB8fCBjaCA+PSAweDdGKSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdOwogICAgICAgICB9CiAKICAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KQEAgLTQxNDMsMzAgKzU4ODgsMzEgQEAKICAgICByZXR1cm4gcmVwcjsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQogewotICAgIFB5T2JqZWN0ICpzOwotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHMgPSBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpKTsKLSAgICByZXR1cm4gczsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogLS0tIFJhdyBVbmljb2RlIEVzY2FwZSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnY7CiAgICAgY29uc3QgY2hhciAqZW5kOwogICAgIGNvbnN0IGNoYXIgKmJzOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwpAQCAtNDE3NiwxMiArNTkyMiwxMiBAQAogICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCiAgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuIChCdXQgZGVjb2RpbmcgZXJyb3IKICAgICAgICBoYW5kbGVyIG1pZ2h0IGhhdmUgdG8gcmVzaXplIHRoZSBzdHJpbmcpICovCi0gICAgdiA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOworICAgIHYgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgb3V0cG9zID0gMDsKICAgICBlbmQgPSBzICsgc2l6ZTsKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CkBAIC00MTkxLDcgKzU5MzcsOCBAQAogCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwogICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSpzKys7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCAodW5zaWduZWQgY2hhcikqcysrKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwpAQCAtNDIwMiwxOSArNTk0OSwxOSBAQAogICAgICAgICBmb3IgKDtzIDwgZW5kOykgewogICAgICAgICAgICAgaWYgKCpzICE9ICdcXCcpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpKnMrKzsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsICh1bnNpZ25lZCBjaGFyKSpzKyspIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCgocyAtIGJzKSAmIDEpID09IDAgfHwKICAgICAgICAgICAgIHMgPj0gZW5kIHx8CiAgICAgICAgICAgICAoKnMgIT0gJ3UnICYmICpzICE9ICdVJykpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIHAtLTsKKyAgICAgICAgb3V0cG9zLS07CiAgICAgICAgIGNvdW50ID0gKnM9PSd1JyA/IDQgOiA4OwogICAgICAgICBzKys7CiAKICAgICAgICAgLyogXHVYWFhYIHdpdGggNCBoZXggZGlnaXRzLCBcVXh4eHh4eHh4IHdpdGggOCAqLwotICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICBmb3IgKHggPSAwLCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsrcykgewogICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwogICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkgewpAQCAtNDIyMyw3ICs1OTcwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICJyYXd1bmljb2RlZXNjYXBlIiwgInRydW5jYXRlZCBcXHVYWFhYIiwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIGdvdG8gbmV4dEJ5dGU7CiAgICAgICAgICAgICB9CkBAIC00MjM1LDM3ICs1OTgyLDI2IEBACiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnQSc7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHggPD0gMHhmZmZmKQotICAgICAgICAgICAgLyogVUNTLTIgY2hhcmFjdGVyICovCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpIHg7Ci0gICAgICAgIGVsc2UgaWYgKHggPD0gMHgxMGZmZmYpIHsKLSAgICAgICAgICAgIC8qIFVDUy00IGNoYXJhY3Rlci4gRWl0aGVyIHN0b3JlIGRpcmVjdGx5LCBvciBhcwotICAgICAgICAgICAgICAgc3Vycm9nYXRlIHBhaXIuICovCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpIHg7Ci0jZWxzZQotICAgICAgICAgICAgeCAtPSAweDEwMDAwTDsKLSAgICAgICAgICAgICpwKysgPSAweEQ4MDAgKyAoUHlfVU5JQ09ERSkgKHggPj4gMTApOwotICAgICAgICAgICAgKnArKyA9IDB4REMwMCArIChQeV9VTklDT0RFKSAoeCAmIDB4MDNGRik7Ci0jZW5kaWYKKyAgICAgICAgaWYgKHggPD0gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsIHgpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJcXFV4eHh4eHh4eCBvdXQgb2YgcmFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgfQogICAgICAgbmV4dEJ5dGU6CiAgICAgICAgIDsKICAgICB9Ci0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHYpOwpAQCAtNDI3NCwxNDQgKzYwMTAsMTM5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKKworUHlPYmplY3QgKgorUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwogICAgIGNoYXIgKnE7CisgICAgUHlfc3NpemVfdCBleHBhbmRzaXplLCBwb3M7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGNvbnN0IFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDEwOwotI2Vsc2UKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSA2OwotI2VuZGlmCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgLyogNCBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgMTAgYnl0ZXMsIDIgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDYKKyAgICAgICBieXRlcywgYW5kIDEgYnl0ZSBjaGFyYWN0ZXJzIDQuICovCisgICAgZXhwYW5kc2l6ZSA9IGtpbmQgKiAyICsgMjsKIAotICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQorICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCi0gICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOworICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBsZW4pOwogICAgIGlmIChyZXByID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKGxlbiA9PSAwKQogICAgICAgICByZXR1cm4gcmVwcjsKIAogICAgIHAgPSBxID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7Ci0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpzKys7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCisgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBsZW47IHBvcysrKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOwogICAgICAgICAvKiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVeHh4eHh4eHgnICovCiAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMTVdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSNlbHNlCi0gICAgICAgICAgICAvKiBNYXAgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgICAgIGlmIChjaCA+PSAweEQ4MDAgJiYgY2ggPCAweERDMDApIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNoMjsKLSAgICAgICAgICAgICAgICBQeV9VQ1M0IHVjczsKLQotICAgICAgICAgICAgICAgIGNoMiA9ICpzKys7Ci0gICAgICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgICAgIGlmIChjaDIgPj0gMHhEQzAwICYmIGNoMiA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICAgICAgdWNzID0gKCgoY2ggJiAweDAzRkYpIDw8IDEwKSB8IChjaDIgJiAweDAzRkYpKSArIDB4MDAwMTAwMDA7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjgpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI0KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyMCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTYpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbdWNzICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaDogaXNvbGF0ZWQgc3Vycm9nYXRlcyBhcmUgY29waWVkIGFzLWlzICovCi0gICAgICAgICAgICAgICAgcy0tOwotICAgICAgICAgICAgICAgIHNpemUrKzsKLSAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KLSAgICAgICAgaWYgKGNoID49IDI1NikgeworICAgICAgICBlbHNlIGlmIChjaCA+PSAyNTYpIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMTVdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KICAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KICAgICAgICAgZWxzZQogICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9Ci0gICAgc2l6ZSA9IHAgLSBxOwogCi0gICAgYXNzZXJ0KHNpemUgPiAwKTsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBzaXplKSA8IDApCisgICAgYXNzZXJ0KHAgPiBxKTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gcSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gcmVwcjsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQogewotICAgIFB5T2JqZWN0ICpzOwotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHMgPSBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpKTsKLQotICAgIHJldHVybiBzOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiAtLS0gVW5pY29kZSBJbnRlcm5hbCBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpfUHlVbmljb2RlX0RlY29kZVVuaWNvZGVJbnRlcm5hbChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0RlY29kZVVuaWNvZGVJbnRlcm5hbChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnY7CiAgICAgY29uc3QgY2hhciAqZW5kOwogICAgIGNvbnN0IGNoYXIgKnJlYXNvbjsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIFB5X1VOSUNPREUgdW5pbWF4ID0gUHlVbmljb2RlX0dldE1heCgpOwotI2VuZGlmCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiBkZXByZWNhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgIDEpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFhYWCBvdmVyZmxvdyBkZXRlY3Rpb24gbWlzc2luZyAqLwotICAgIHYgPSBfUHlVbmljb2RlX05ldygoc2l6ZStQeV9VTklDT0RFX1NJWkUtMSkvIFB5X1VOSUNPREVfU0laRSk7CisgICAgdiA9IFB5VW5pY29kZV9OZXcoKHNpemUrUHlfVU5JQ09ERV9TSVpFLTEpLyBQeV9VTklDT0RFX1NJWkUsIDEyNyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChQeVVuaWNvZGVfR2V0U2l6ZSgoUHlPYmplY3QgKil2KSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpID09IDApCisgICAgICAgIHJldHVybiB2OworICAgIG91dHBvcyA9IDA7CiAgICAgZW5kID0gcyArIHNpemU7CiAKICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICBtZW1jcHkocCwgcywgc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgUHlfVU5JQ09ERSB1Y2g7CisgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgIC8qIFdlIGNvcHkgdGhlIHJhdyByZXByZXNlbnRhdGlvbiBvbmUgYnl0ZSBhdCBhIHRpbWUgYmVjYXVzZSB0aGUKKyAgICAgICAgICAgcG9pbnRlciBtYXkgYmUgdW5hbGlnbmVkIChzZWUgdGVzdF9jb2RlY2NhbGxiYWNrcykuICovCisgICAgICAgICgoY2hhciAqKSAmdWNoKVswXSA9IHNbMF07CisgICAgICAgICgoY2hhciAqKSAmdWNoKVsxXSA9IHNbMV07CisjaWZkZWYgUHlfVU5JQ09ERV9XSURFCisgICAgICAgICgoY2hhciAqKSAmdWNoKVsyXSA9IHNbMl07CisgICAgICAgICgoY2hhciAqKSAmdWNoKVszXSA9IHNbM107CisjZW5kaWYKKyAgICAgICAgY2ggPSB1Y2g7CisKICAgICAgICAgLyogV2UgaGF2ZSB0byBzYW5pdHkgY2hlY2sgdGhlIHJhdyBkYXRhLCBvdGhlcndpc2UgZG9vbSBsb29tcyBmb3IKICAgICAgICAgICAgc29tZSBtYWxmb3JtZWQgVUNTLTQgZGF0YS4gKi8KICAgICAgICAgaWYgKAogI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgKnAgPiB1bmltYXggfHwgKnAgPCAwIHx8CisgICAgICAgICAgICBjaCA+IDB4MTBmZmZmIHx8CiAjZW5kaWYKICAgICAgICAgICAgIGVuZC1zIDwgUHlfVU5JQ09ERV9TSVpFCiAgICAgICAgICAgICApCkBAIC00NDI1LDI2ICs2MTU2LDM5IEBACiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzIC0gc3RhcnRzICsgUHlfVU5JQ09ERV9TSVpFOwogICAgICAgICAgICAgICAgIHJlYXNvbiA9ICJpbGxlZ2FsIGNvZGUgcG9pbnQgKD4gMHgxMEZGRkYpIjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG91dHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCIsIHJlYXNvbiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcyArPSBQeV9VTklDT0RFX1NJWkU7CisjaWZuZGVmIFB5X1VOSUNPREVfV0lERQorICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkgJiYgcyA8IGVuZCkKKyAgICAgICAgeworICAgICAgICAgICAgUHlfVU5JQ09ERSB1Y2gyOworICAgICAgICAgICAgKChjaGFyICopICZ1Y2gyKVswXSA9IHNbMF07CisgICAgICAgICAgICAoKGNoYXIgKikgJnVjaDIpWzFdID0gc1sxXTsKKyAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUodWNoMikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2ggPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyh1Y2gsIHVjaDIpOworICAgICAgICAgICAgICAgIHMgKz0gUHlfVU5JQ09ERV9TSVpFOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgcyArPSBQeV9VTklDT0RFX1NJWkU7Ci0gICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHYpOwpAQCAtNDQ1NSw1NyArNjE5OSwyNyBAQAogCiAvKiAtLS0gTGF0aW4tMSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVMYXRpbjEoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVMYXRpbjEoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgY29uc3QgY2hhciAqZSwgKnVucm9sbGVkX2VuZDsKLQogICAgIC8qIExhdGluLTEgaXMgZXF1aXZhbGVudCB0byB0aGUgZmlyc3QgMjU2IG9yZGluYWxzIGluIFVuaWNvZGUuICovCi0gICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICBQeV9VTklDT0RFIHIgPSAqKHVuc2lnbmVkIGNoYXIqKXM7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnIsIDEpOwotICAgIH0KLQotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgIGUgPSBzICsgc2l6ZTsKLSAgICAvKiBVbnJvbGxpbmcgdGhlIGNvcHkgbWFrZXMgaXQgbXVjaCBmYXN0ZXIgYnkgcmVkdWNpbmcgdGhlIGxvb3BpbmcKLSAgICAgICBvdmVyaGVhZC4gVGhpcyBpcyBzaW1pbGFyIHRvIHdoYXQgbWFueSBtZW1jcHkoKSBpbXBsZW1lbnRhdGlvbnMgZG8uICovCi0gICAgdW5yb2xsZWRfZW5kID0gZSAtIDQ7Ci0gICAgd2hpbGUgKHMgPCB1bnJvbGxlZF9lbmQpIHsKLSAgICAgICAgcFswXSA9ICh1bnNpZ25lZCBjaGFyKSBzWzBdOwotICAgICAgICBwWzFdID0gKHVuc2lnbmVkIGNoYXIpIHNbMV07Ci0gICAgICAgIHBbMl0gPSAodW5zaWduZWQgY2hhcikgc1syXTsKLSAgICAgICAgcFszXSA9ICh1bnNpZ25lZCBjaGFyKSBzWzNdOwotICAgICAgICBzICs9IDQ7Ci0gICAgICAgIHAgKz0gNDsKLSAgICB9Ci0gICAgd2hpbGUgKHMgPCBlKQotICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpICpzKys7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21VQ1MxKCh1bnNpZ25lZCBjaGFyKilzLCBzaXplKTsKIH0KIAogLyogY3JlYXRlIG9yIGFkanVzdCBhIFVuaWNvZGVFbmNvZGVFcnJvciAqLwotc3RhdGljIHZvaWQgbWFrZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCitzdGF0aWMgdm9pZAorbWFrZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKSB7Ci0gICAgICAgICpleGNlcHRpb25PYmplY3QgPSBQeVVuaWNvZGVFbmNvZGVFcnJvcl9DcmVhdGUoCi0gICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgKmV4Y2VwdGlvbk9iamVjdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigKKyAgICAgICAgICAgIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciwgInNPbm5zIiwKKyAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0KCpleGNlcHRpb25PYmplY3QsIHN0YXJ0cG9zKSkKQEAgLTQ1MjIsMTQgKzYyMzYsMTUgQEAKIH0KIAogLyogcmFpc2VzIGEgVW5pY29kZUVuY29kZUVycm9yICovCi1zdGF0aWMgdm9pZCByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorc3RhdGljIHZvaWQKK3JhaXNlX2VuY29kZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBtYWtlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgIT0gTlVMTCkKICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoKmV4Y2VwdGlvbk9iamVjdCk7CiB9CkBAIC00NTM4LDE1ICs2MjUzLDE2IEBACiAgICBidWlsZCBhcmd1bWVudHMsIGNhbGwgdGhlIGNhbGxiYWNrIGFuZCBjaGVjayB0aGUgYXJndW1lbnRzLAogICAgcHV0IHRoZSByZXN1bHQgaW50byBuZXdwb3MgYW5kIHJldHVybiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nLCB3aGljaAogICAgaGFzIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIgKi8KLXN0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKICAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiT247ZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyL2J5dGVzLCBpbnQpIHR1cGxlIjsKLQorICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICBQeU9iamVjdCAqcmVzdW5pY29kZTsKIApAQCAtNDU1Niw4ICs2MjcyLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKwogICAgIG1ha2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLCBzaXplLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNDU4MSw4ICs2MzAxLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICgqbmV3cG9zPDApCi0gICAgICAgICpuZXdwb3MgPSBzaXplKypuZXdwb3M7Ci0gICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPnNpemUpIHsKKyAgICAgICAgKm5ld3BvcyA9IGxlbiArICpuZXdwb3M7CisgICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPmxlbikgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW5kZXhFcnJvciwgInBvc2l0aW9uICV6ZCBmcm9tIGVycm9yIGhhbmRsZXIgb3V0IG9mIGJvdW5kcyIsICpuZXdwb3MpOwogICAgICAgICBQeV9ERUNSRUYocmVzdHVwbGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ1OTIsMTggKzYzMTIsMTcgQEAKICAgICByZXR1cm4gcmVzdW5pY29kZTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX2VuY29kZV91Y3MxKGNvbnN0IFB5X1VOSUNPREUgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9lbmNvZGVfdWNzMShQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGltaXQpCiB7CisgICAgLyogaW5wdXQgc3RhdGUgKi8KKyAgICBQeV9zc2l6ZV90IHBvcz0wLCBzaXplOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgLyogb3V0cHV0IG9iamVjdCAqLwogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgLyogcG9pbnRlcnMgdG8gdGhlIGJlZ2lubmluZyBhbmQgZW5kKzEgb2YgaW5wdXQgKi8KLSAgICBjb25zdCBQeV9VTklDT0RFICpzdGFydHAgPSBwOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmVuZHAgPSBwICsgc2l6ZTsKLSAgICAvKiBwb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHVuZW5jb2RhYmxlIGNoYXJhY3RlcnMgKi8KLSAgICAvKiBjb25zdCBQeV9VTklDT0RFICpiYWRwID0gTlVMTDsgKi8KICAgICAvKiBwb2ludGVyIGludG8gdGhlIG91dHB1dCAqLwogICAgIGNoYXIgKnN0cjsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwpAQCAtNDYxNiw2ICs2MzM1LDExIEBACiAgICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCiAgICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAgICAgLyogYWxsb2NhdGUgZW5vdWdoIGZvciBhIHNpbXBsZSBlbmNvZGluZyB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwogICAgIGlmIChzaXplID09IDApCkBAIC00NjI2LDI4ICs2MzUwLDI0IEBACiAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKICAgICByZXNzaXplID0gc2l6ZTsKIAotICAgIHdoaWxlIChwPGVuZHApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjID0gKnA7CisgICAgd2hpbGUgKHBvcyA8IHNpemUpIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKIAogICAgICAgICAvKiBjYW4gd2UgZW5jb2RlIHRoaXM/ICovCiAgICAgICAgIGlmIChjPGxpbWl0KSB7CiAgICAgICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwogICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpYzsKLSAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICsrcG9zOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfc3NpemVfdCB1bmljb2RlcG9zID0gcC1zdGFydHA7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlOwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplOwotICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlc3BvczsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnVuaTI7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIG5ld3BvcywgcmVzcG9zLCBpOwogICAgICAgICAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW5lbmNvZGFibGUgY2hhcnMgKi8KLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmNvbGxzdGFydCA9IHA7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsZW5kID0gcDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0ID0gcG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gcG9zOwogICAgICAgICAgICAgLyogZmluZCBhbGwgdW5lY29kYWJsZSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICB3aGlsZSAoKGNvbGxlbmQgPCBlbmRwKSAmJiAoKCpjb2xsZW5kKT49bGltaXQpKQorICAgICAgICAgICAgd2hpbGUgKChjb2xsZW5kIDwgc2l6ZSkgJiYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGNvbGxlbmQpPj1saW1pdCkpCiAgICAgICAgICAgICAgICAgKytjb2xsZW5kOwogICAgICAgICAgICAgLyogY2FjaGUgY2FsbGJhY2sgbmFtZSBsb29rdXAgKGlmIG5vdCBkb25lIHlldCwgaS5lLiBpdCdzIHRoZSBmaXJzdCBlcnJvcikgKi8KICAgICAgICAgICAgIGlmIChrbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7CkBAIC00NjY0LDM5ICs2Mzg0LDM3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKGtub3duX2Vycm9ySGFuZGxlcikgewogICAgICAgICAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KLSAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBzdGFydHAsIHNpemUsIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydCwgY29sbGVuZCwgcmVhc29uKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KICAgICAgICAgICAgICAgICB3aGlsZSAoY29sbHN0YXJ0Kys8Y29sbGVuZCkKICAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gJz8nOyAvKiBmYWxsIHRocm91Z2ggKi8KICAgICAgICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCi0gICAgICAgICAgICAgICAgcCA9IGNvbGxlbmQ7CisgICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KICAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgIC8qIGRldGVybWluZSByZXBsYWNlbWVudCBzaXplICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQsIHJlcHNpemUgPSAwOyBwIDwgY29sbGVuZDsgKytwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgqcDwxMCkKKyAgICAgICAgICAgICAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydCwgcmVwc2l6ZSA9IDA7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMisxKzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrMisxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwKQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrMysxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis0KzE7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzUrMTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis1KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMDApCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis2KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzcrMTsKLSNlbmRpZgorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvcytyZXBzaXplKyhlbmRwLWNvbGxlbmQpOworICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvcytyZXBzaXplKyhzaXplLWNvbGxlbmQpOwogICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiByZXNzaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemU8MipyZXNzaXplKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipyZXNzaXplOwpAQCAtNDcwNSwxNyArNjQyMywxOCBAQAogICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwogICAgICAgICAgICAgICAgICAgICByZXNzaXplID0gcmVxdWlyZWRzaXplOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCi0gICAgICAgICAgICAgICAgZm9yIChwID0gY29sbHN0YXJ0OyBwIDwgY29sbGVuZDsgKytwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSBzcHJpbnRmKHN0ciwgIiYjJWQ7IiwgKGludCkqcCk7CisgICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RyICs9IHNwcmludGYoc3RyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHN0YXJ0cCwgc2l6ZSwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LXN0YXJ0cCwgY29sbGVuZC1zdGFydHAsICZuZXdwb3MpOwotICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsICZleGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7CisgICAgICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCB8fCAoUHlVbmljb2RlX0NoZWNrKHJlcHVuaWNvZGUpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcHVuaWNvZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIERpcmVjdGx5IGNvcHkgYnl0ZXMgcmVzdWx0IHRvIG91dHB1dC4gKi8KQEAgLTQ3MzIsNyArNjQ1MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHN0ciwgUHlCeXRlc19Bc1N0cmluZyhyZXB1bmljb2RlKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHN0ciArPSByZXBzaXplOwotICAgICAgICAgICAgICAgICAgICBwID0gc3RhcnRwICsgbmV3cG9zOworICAgICAgICAgICAgICAgICAgICBwb3MgPSBuZXdwb3M7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDc0MCw4ICs2NDU5LDggQEAKICAgICAgICAgICAgICAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLCBzbwogICAgICAgICAgICAgICAgICAgIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UgZm9yIGVuY29kYWJsZSBjaGFyYWN0ZXJzKSAqLwogICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3MrcmVwc2l6ZSsoZW5kcC1jb2xsZW5kKTsKKyAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zK3JlcHNpemUrKHNpemUtY29sbGVuZCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IHJlc3NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZTwyKnJlc3NpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKnJlc3NpemU7CkBAIC00NzU0LDE3ICs2NDczLDE3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHVuZW5jb2RhYmxlIGluIHRoZSByZXBsYWNlbWVudAogICAgICAgICAgICAgICAgICAgIGFuZCBjb3B5IGl0IHRvIHRoZSBvdXRwdXQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHVuaTIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXB1bmljb2RlKTtyZXBzaXplLS0+MDsgKyt1bmkyLCArK3N0cikgewotICAgICAgICAgICAgICAgICAgICBjID0gKnVuaTI7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgcmVwc2l6ZS0tPjA7ICsraSwgKytzdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwdW5pY29kZSwgaSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjID49IGxpbWl0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBzdGFydHAsIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVwb3MsIHVuaWNvZGVwb3MrMSwgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcywgcG9zKzEsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgKnN0ciA9IChjaGFyKWM7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBzdGFydHAgKyBuZXdwb3M7CisgICAgICAgICAgICAgICAgcG9zID0gbmV3cG9zOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDc4OCwzMyArNjUwNyw1NyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZUxhdGluMShjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyogRGVwcmVjYXRlZCAqLworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUxhdGluMShjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICByZXR1cm4gdW5pY29kZV9lbmNvZGVfdWNzMShwLCBzaXplLCBlcnJvcnMsIDI1Nik7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMjU2KTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIEZhc3QgcGF0aDogaWYgaXQgaXMgYSBvbmUtYnl0ZSBzdHJpbmcsIGNvbnN0cnVjdAorICAgICAgIGJ5dGVzIG9iamVjdCBkaXJlY3RseS4gKi8KKyAgICBpZiAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgLyogTm9uLUxhdGluLTEgY2hhcmFjdGVycyBwcmVzZW50LiBEZWZlciB0byBhYm92ZSBmdW5jdGlvbiB0bworICAgICAgIHJhaXNlIHRoZSBleGNlcHRpb24uICovCisgICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEodW5pY29kZSwgZXJyb3JzLCAyNTYpOworfQorCitQeU9iamVjdCoKK1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBOVUxMKTsKIH0KIAogLyogLS0tIDctYml0IEFTQ0lJIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlQVNDSUkoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlQVNDSUkoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKQEAgLTQ4MjIsNzAgKzY1NjUsOTkgQEAKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIC8qIEFTQ0lJIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDEyOCBvcmRpbmFscyBpbiBVbmljb2RlLiAqLwotICAgIGlmIChzaXplID09IDEgJiYgKih1bnNpZ25lZCBjaGFyKilzIDwgMTI4KSB7Ci0gICAgICAgIFB5X1VOSUNPREUgciA9ICoodW5zaWduZWQgY2hhciopczsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmciwgMSk7CisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgIH0KIAotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIC8qIEFTQ0lJIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDEyOCBvcmRpbmFscyBpbiBVbmljb2RlLiAqLworICAgIGlmIChzaXplID09IDEgJiYgKHVuc2lnbmVkIGNoYXIpc1swXSA8IDEyOCkKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhcilzWzBdKTsKKworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKwogICAgIGUgPSBzICsgc2l6ZTsKKyAgICBkYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSk7CisgICAgb3V0cG9zID0gYXNjaWlfZGVjb2RlKHMsIGUsIChQeV9VQ1MxICopZGF0YSk7CisgICAgaWYgKG91dHBvcyA9PSBzaXplKQorICAgICAgICByZXR1cm4gdW5pY29kZTsKKworICAgIHMgKz0gb3V0cG9zOworICAgIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKICAgICB3aGlsZSAocyA8IGUpIHsKICAgICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpKnM7CiAgICAgICAgIGlmIChjIDwgMTI4KSB7Ci0gICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBvdXRwb3MrKywgYyk7CiAgICAgICAgICAgICArK3M7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotICAgICAgICAgICAgb3V0cG9zID0gcCAtIChQeV9VTklDT0RFICopUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgImFzY2lpIiwgIm9yZGluYWwgbm90IGluIHJhbmdlKDEyOCkiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSA8IFB5VW5pY29kZV9HRVRfU0laRSh2KSkKLSAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQorICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gdW5pY29kZTsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYodik7CisgICAgUHlfWERFQ1JFRih1bmljb2RlKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZUFTQ0lJKGNvbnN0IFB5X1VOSUNPREUgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyogRGVwcmVjYXRlZCAqLworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUFTQ0lJKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICByZXR1cm4gdW5pY29kZV9lbmNvZGVfdWNzMShwLCBzaXplLCBlcnJvcnMsIDEyOCk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMTI4KTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBGYXN0IHBhdGg6IGlmIGl0IGlzIGFuIEFTQ0lJLW9ubHkgc3RyaW5nLCBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0CisgICAgICAgZGlyZWN0bHkuIEVsc2UgZGVmZXIgdG8gYWJvdmUgZnVuY3Rpb24gdG8gcmFpc2UgdGhlIGV4Y2VwdGlvbi4gKi8KKyAgICBpZiAoUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpIDwgMTI4KQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgIHJldHVybiB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMTI4KTsKIH0KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBOVUxMKTsKK30KKworI2lmZGVmIEhBVkVfTUJDUwogCiAvKiAtLS0gTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNDg5MywzMzYgKzY2NjUsODQyIEBACiAjZGVmaW5lIE5FRURfUkVUUlkKICNlbmRpZgogCi0vKiBYWFggVGhpcyBjb2RlIGlzIGxpbWl0ZWQgdG8gInRydWUiIGRvdWJsZS1ieXRlIGVuY29kaW5ncywgYXMKLSAgIGEpIGl0IGFzc3VtZXMgYW4gaW5jb21wbGV0ZSBjaGFyYWN0ZXIgY29uc2lzdHMgb2YgYSBzaW5nbGUgYnl0ZSwgYW5kCi0gICBiKSBJc0RCQ1NMZWFkQnl0ZSAocHJvYmFibHkpIGRvZXMgbm90IHdvcmsgZm9yIG5vbi1EQkNTIG11bHRpLWJ5dGUKLSAgIGVuY29kaW5ncywgc2VlIElzREJDU0xlYWRCeXRlRXggZG9jdW1lbnRhdGlvbi4gKi8KKyNpZm5kZWYgV0NfRVJSX0lOVkFMSURfQ0hBUlMKKyMgIGRlZmluZSBXQ19FUlJfSU5WQUxJRF9DSEFSUyAweDAwODAKKyNlbmRpZgogCi1zdGF0aWMgaW50IGlzX2RiY3NfbGVhZF9ieXRlKGNvbnN0IGNoYXIgKnMsIGludCBvZmZzZXQpCitzdGF0aWMgY2hhcioKK2NvZGVfcGFnZV9uYW1lKFVJTlQgY29kZV9wYWdlLCBQeU9iamVjdCAqKm9iaikKK3sKKyAgICAqb2JqID0gTlVMTDsKKyAgICBpZiAoY29kZV9wYWdlID09IENQX0FDUCkKKyAgICAgICAgcmV0dXJuICJtYmNzIjsKKyAgICBpZiAoY29kZV9wYWdlID09IENQX1VURjcpCisgICAgICAgIHJldHVybiAiQ1BfVVRGNyI7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY4KQorICAgICAgICByZXR1cm4gIkNQX1VURjgiOworCisgICAgKm9iaiA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiY3AldSIsIGNvZGVfcGFnZSk7CisgICAgaWYgKCpvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Qnl0ZXNfQVNfU1RSSU5HKCpvYmopOworfQorCitzdGF0aWMgaW50Citpc19kYmNzX2xlYWRfYnl0ZShVSU5UIGNvZGVfcGFnZSwgY29uc3QgY2hhciAqcywgaW50IG9mZnNldCkKIHsKICAgICBjb25zdCBjaGFyICpjdXJyID0gcyArIG9mZnNldDsKKyAgICBjb25zdCBjaGFyICpwcmV2OwogCi0gICAgaWYgKElzREJDU0xlYWRCeXRlKCpjdXJyKSkgewotICAgICAgICBjb25zdCBjaGFyICpwcmV2ID0gQ2hhclByZXYocywgY3Vycik7Ci0gICAgICAgIHJldHVybiAocHJldiA9PSBjdXJyKSB8fCAhSXNEQkNTTGVhZEJ5dGUoKnByZXYpIHx8IChjdXJyIC0gcHJldiA9PSAyKTsKLSAgICB9CisgICAgaWYgKCFJc0RCQ1NMZWFkQnl0ZUV4KGNvZGVfcGFnZSwgKmN1cnIpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHByZXYgPSBDaGFyUHJldkV4QShjb2RlX3BhZ2UsIHMsIGN1cnIsIDApOworICAgIGlmIChwcmV2ID09IGN1cnIpCisgICAgICAgIHJldHVybiAxOworICAgIC8qIEZJWE1FOiBUaGlzIGNvZGUgaXMgbGltaXRlZCB0byAidHJ1ZSIgZG91YmxlLWJ5dGUgZW5jb2RpbmdzLAorICAgICAgIGFzIGl0IGFzc3VtZXMgYW4gaW5jb21wbGV0ZSBjaGFyYWN0ZXIgY29uc2lzdHMgb2YgYSBzaW5nbGUKKyAgICAgICBieXRlLiAqLworICAgIGlmIChjdXJyIC0gcHJldiA9PSAyKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoIUlzREJDU0xlYWRCeXRlRXgoY29kZV9wYWdlLCAqcHJldikpCisgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiAwOwogfQogCi0vKgotICogRGVjb2RlIE1CQ1Mgc3RyaW5nIGludG8gdW5pY29kZSBvYmplY3QuIElmICdmaW5hbCcgaXMgc2V0LCBjb252ZXJ0cwotICogdHJhaWxpbmcgbGVhZC1ieXRlIHRvby4gUmV0dXJucyBjb25zdW1lZCBzaXplIGlmIHN1Y2NlZWQsIC0xIG90aGVyd2lzZS4KLSAqLwotc3RhdGljIGludCBkZWNvZGVfbWJjcyhQeVVuaWNvZGVPYmplY3QgKip2LAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzLCAvKiBNQkNTIHN0cmluZyAqLwotICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgLyogc2l6ZW9mIE1CQ1Mgc3RyaW5nICovCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBmaW5hbCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorc3RhdGljIERXT1JECitkZWNvZGVfY29kZV9wYWdlX2ZsYWdzKFVJTlQgY29kZV9wYWdlKQogewotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgUHlfc3NpemVfdCBuOwotICAgIERXT1JEIHVzaXplOwotICAgIERXT1JEIGZsYWdzOwotCi0gICAgYXNzZXJ0KHNpemUgPj0gMCk7Ci0KLSAgICAvKiBjaGVjayBhbmQgaGFuZGxlICdlcnJvcnMnIGFyZyAqLwotICAgIGlmIChlcnJvcnM9PU5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpPT0wKQotICAgICAgICBmbGFncyA9IE1CX0VSUl9JTlZBTElEX0NIQVJTOwotICAgIGVsc2UgaWYgKHN0cmNtcChlcnJvcnMsICJpZ25vcmUiKT09MCkKLSAgICAgICAgZmxhZ3MgPSAwOwotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJtYmNzIGVuY29kaW5nIGRvZXMgbm90IHN1cHBvcnQgZXJyb3JzPSclcyciLAotICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGNykgeworICAgICAgICAvKiBUaGUgQ1BfVVRGNyBkZWNvZGVyIG9ubHkgc3VwcG9ydHMgZmxhZ3M9MCAqLworICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgZWxzZQorICAgICAgICByZXR1cm4gTUJfRVJSX0lOVkFMSURfQ0hBUlM7Cit9CiAKLSAgICAvKiBTa2lwIHRyYWlsaW5nIGxlYWQtYnl0ZSB1bmxlc3MgJ2ZpbmFsJyBpcyBzZXQgKi8KLSAgICBpZiAoIWZpbmFsICYmIHNpemUgPj0gMSAmJiBpc19kYmNzX2xlYWRfYnl0ZShzLCBzaXplIC0gMSkpCi0gICAgICAgIC0tc2l6ZTsKKy8qCisgKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIGEgV2luZG93cyBjb2RlIHBhZ2UgaW50byB1bmljb2RlIG9iamVjdCBpbiBzdHJpY3QKKyAqIG1vZGUuCisgKgorICogUmV0dXJucyBjb25zdW1lZCBzaXplIGlmIHN1Y2NlZWQsIHJldHVybnMgLTIgb24gZGVjb2RlIGVycm9yLCBvciByYWlzZSBhCisgKiBXaW5kb3dzRXJyb3IgYW5kIHJldHVybnMgLTEgb24gb3RoZXIgZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQKK2RlY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KFVJTlQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKip2LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zaXplKQoreworICAgIGNvbnN0IERXT1JEIGZsYWdzID0gZGVjb2RlX2NvZGVfcGFnZV9mbGFncyhjb2RlX3BhZ2UpOworICAgIHdjaGFyX3QgKm91dDsKKyAgICBEV09SRCBvdXRzaXplOwogCiAgICAgLyogRmlyc3QgZ2V0IHRoZSBzaXplIG9mIHRoZSByZXN1bHQgKi8KLSAgICBpZiAoc2l6ZSA+IDApIHsKLSAgICAgICAgdXNpemUgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX0FDUCwgZmxhZ3MsIHMsIHNpemUsIE5VTEwsIDApOwotICAgICAgICBpZiAodXNpemU9PTApCi0gICAgICAgICAgICBnb3RvIG1iY3NfZGVjb2RlX2Vycm9yOwotICAgIH0gZWxzZQotICAgICAgICB1c2l6ZSA9IDA7CisgICAgYXNzZXJ0KGluc2l6ZSA+IDApOworICAgIG91dHNpemUgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKGNvZGVfcGFnZSwgZmxhZ3MsIGluLCBpbnNpemUsIE5VTEwsIDApOworICAgIGlmIChvdXRzaXplIDw9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBpZiAoKnYgPT0gTlVMTCkgewogICAgICAgICAvKiBDcmVhdGUgdW5pY29kZSBvYmplY3QgKi8KLSAgICAgICAgKnYgPSBfUHlVbmljb2RlX05ldyh1c2l6ZSk7CisgICAgICAgIC8qIEZJWE1FOiBkb24ndCB1c2UgX1B5VW5pY29kZV9OZXcoKSwgYnV0IGFsbG9jYXRlIGEgd2NoYXJfdCogYnVmZmVyICovCisgICAgICAgICp2ID0gKFB5T2JqZWN0KilfUHlVbmljb2RlX05ldyhvdXRzaXplKTsKICAgICAgICAgaWYgKCp2ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIG4gPSAwOworICAgICAgICBvdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdik7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBFeHRlbmQgdW5pY29kZSBvYmplY3QgKi8KLSAgICAgICAgbiA9IFB5VW5pY29kZV9HRVRfU0laRSgqdik7Ci0gICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSh2LCBuICsgdXNpemUpIDwgMCkKKyAgICAgICAgUHlfc3NpemVfdCBuID0gUHlVbmljb2RlX0dFVF9TSVpFKCp2KTsKKyAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKHYsIG4gKyBvdXRzaXplKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIG91dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCp2KSArIG47CiAgICAgfQogCiAgICAgLyogRG8gdGhlIGNvbnZlcnNpb24gKi8KLSAgICBpZiAodXNpemUgPiAwKSB7Ci0gICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdikgKyBuOwotICAgICAgICBpZiAoMCA9PSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX0FDUCwgZmxhZ3MsIHMsIHNpemUsIHAsIHVzaXplKSkgewotICAgICAgICAgICAgZ290byBtYmNzX2RlY29kZV9lcnJvcjsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gc2l6ZTsKKyAgICBvdXRzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihjb2RlX3BhZ2UsIGZsYWdzLCBpbiwgaW5zaXplLCBvdXQsIG91dHNpemUpOworICAgIGlmIChvdXRzaXplIDw9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0dXJuIGluc2l6ZTsKIAotbWJjc19kZWNvZGVfZXJyb3I6Ci0gICAgLyogSWYgdGhlIGxhc3QgZXJyb3Igd2FzIEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04sIHRoZW4KLSAgICAgICB3ZSByYWlzZSBhIFVuaWNvZGVEZWNvZGVFcnJvciAtIGVsc2UgaXQgaXMgYSAnZ2VuZXJpYycKLSAgICAgICB3aW5kb3dzIGVycm9yCi0gICAgICovCi0gICAgaWYgKEdldExhc3RFcnJvcigpPT1FUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OKSB7Ci0gICAgICAgIC8qIElkZWFsbHksIHdlIHNob3VsZCBnZXQgcmVhc29uIGZyb20gRm9ybWF0TWVzc2FnZSAtIHRoaXMKLSAgICAgICAgICAgaXMgdGhlIFdpbmRvd3MgMjAwMCBFbmdsaXNoIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UKLSAgICAgICAgKi8KLSAgICAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJObyBtYXBwaW5nIGZvciB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZXhpc3RzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIHRoZSB0YXJnZXQgbXVsdGktYnl0ZSBjb2RlIHBhZ2UuIjsKLSAgICAgICAgbWFrZV9kZWNvZGVfZXhjZXB0aW9uKCZleGMsICJtYmNzIiwgcywgc2l6ZSwgMCwgMCwgcmVhc29uKTsKLSAgICAgICAgaWYgKGV4YyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOwotICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgwLCBOVUxMKTsKLSAgICB9CitlcnJvcjoKKyAgICBpZiAoR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTikKKyAgICAgICAgcmV0dXJuIC0yOworICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwogICAgIHJldHVybiAtMTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLyoKKyAqIERlY29kZSBhIGJ5dGUgc3RyaW5nIGZyb20gYSBjb2RlIHBhZ2UgaW50byB1bmljb2RlIG9iamVjdCB3aXRoIGFuIGVycm9yCisgKiBoYW5kbGVyLgorICoKKyAqIFJldHVybnMgY29uc3VtZWQgc2l6ZSBpZiBzdWNjZWVkLCBvciByYWlzZSBhIFdpbmRvd3NFcnJvciBvcgorICogVW5pY29kZURlY29kZUVycm9yIGV4Y2VwdGlvbiBhbmQgcmV0dXJucyAtMSBvbiBlcnJvci4KKyAqLworc3RhdGljIGludAorZGVjb2RlX2NvZGVfcGFnZV9lcnJvcnMoVUlOVCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnYsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbiwgY29uc3QgaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2ID0gTlVMTDsKLSAgICBpbnQgZG9uZTsKKyAgICBjb25zdCBjaGFyICpzdGFydGluID0gaW47CisgICAgY29uc3QgY2hhciAqZW5kaW4gPSBpbiArIHNpemU7CisgICAgY29uc3QgRFdPUkQgZmxhZ3MgPSBkZWNvZGVfY29kZV9wYWdlX2ZsYWdzKGNvZGVfcGFnZSk7CisgICAgLyogSWRlYWxseSwgd2Ugc2hvdWxkIGdldCByZWFzb24gZnJvbSBGb3JtYXRNZXNzYWdlLiBUaGlzIGlzIHRoZSBXaW5kb3dzCisgICAgICAgMjAwMCBFbmdsaXNoIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UuICovCisgICAgY29uc3QgY2hhciAqcmVhc29uID0gIk5vIG1hcHBpbmcgZm9yIHRoZSBVbmljb2RlIGNoYXJhY3RlciBleGlzdHMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgdGFyZ2V0IGNvZGUgcGFnZS4iOworICAgIC8qIGVhY2ggc3RlcCBjYW5ub3QgZGVjb2RlIG1vcmUgdGhhbiAxIGNoYXJhY3RlciwgYnV0IGEgY2hhcmFjdGVyIGNhbiBiZQorICAgICAgIHJlcHJlc2VudGVkIGFzIGEgc3Vycm9nYXRlIHBhaXIgKi8KKyAgICB3Y2hhcl90IGJ1ZmZlclsyXSwgKnN0YXJ0b3V0LCAqb3V0OworICAgIGludCBpbnNpemUsIG91dHNpemU7CisgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7CisgICAgY2hhciAqZW5jb2Rpbmc7CisgICAgRFdPUkQgZXJyOworICAgIGludCByZXQgPSAtMTsKKworICAgIGFzc2VydChzaXplID4gMCk7CisKKyAgICBlbmNvZGluZyA9IGNvZGVfcGFnZV9uYW1lKGNvZGVfcGFnZSwgJmVuY29kaW5nX29iaik7CisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgICAgICAvKiBUaGUgbGFzdCBlcnJvciB3YXMgRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTiwgdGhlbiB3ZSByYWlzZSBhCisgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvci4gKi8KKyAgICAgICAgbWFrZV9kZWNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBpbiwgc2l6ZSwgMCwgMCwgcmVhc29uKTsKKyAgICAgICAgaWYgKGV4YyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICAgICAgUHlfQ0xFQVIoZXhjKTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICgqdiA9PSBOVUxMKSB7CisgICAgICAgIC8qIENyZWF0ZSB1bmljb2RlIG9iamVjdCAqLworICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gKFB5X3NzaXplX3QpUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIC8qIEZJWE1FOiBkb24ndCB1c2UgX1B5VW5pY29kZV9OZXcoKSwgYnV0IGFsbG9jYXRlIGEgd2NoYXJfdCogYnVmZmVyICovCisgICAgICAgICp2ID0gKFB5T2JqZWN0KilfUHlVbmljb2RlX05ldyhzaXplICogUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpOworICAgICAgICBpZiAoKnYgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHN0YXJ0b3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRXh0ZW5kIHVuaWNvZGUgb2JqZWN0ICovCisgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5VW5pY29kZV9HRVRfU0laRSgqdik7CisgICAgICAgIGlmIChzaXplID4gKFBZX1NTSVpFX1RfTUFYIC0gbikgLyAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKHYsIG4gKyBzaXplICogUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHN0YXJ0b3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpICsgbjsKKyAgICB9CisKKyAgICAvKiBEZWNvZGUgdGhlIGJ5dGUgc3RyaW5nIGNoYXJhY3RlciBwZXIgY2hhcmFjdGVyICovCisgICAgb3V0ID0gc3RhcnRvdXQ7CisgICAgd2hpbGUgKGluIDwgZW5kaW4pCisgICAgeworICAgICAgICAvKiBEZWNvZGUgYSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgaW5zaXplID0gMTsKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgICAgb3V0c2l6ZSA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoY29kZV9wYWdlLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLCBpbnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpKTsKKyAgICAgICAgICAgIGlmIChvdXRzaXplID4gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgaWYgKGVyciAhPSBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OCisgICAgICAgICAgICAgICAgJiYgZXJyICE9IEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluc2l6ZSsrOworICAgICAgICB9CisgICAgICAgIC8qIDQ9bWF4aW11bSBsZW5ndGggb2YgYSBVVEYtOCBzZXF1ZW5jZSAqLworICAgICAgICB3aGlsZSAoaW5zaXplIDw9IDQgJiYgKGluICsgaW5zaXplKSA8PSBlbmRpbik7CisKKyAgICAgICAgaWYgKG91dHNpemUgPD0gMCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zLCBlbmRpbnBvcywgb3V0cG9zOworCisgICAgICAgICAgICBzdGFydGlucG9zID0gaW4gLSBzdGFydGluOworICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKKyAgICAgICAgICAgIG91dHBvcyA9IG91dCAtIFB5VW5pY29kZV9BU19VTklDT0RFKCp2KTsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAmc3RhcnRpbiwgJmVuZGluLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmaW4sCisgICAgICAgICAgICAgICAgICAgIHYsICZvdXRwb3MpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdikgKyBvdXRwb3M7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbiArPSBpbnNpemU7CisgICAgICAgICAgICBtZW1jcHkob3V0LCBidWZmZXIsIG91dHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgb3V0ICs9IG91dHNpemU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiB3cml0ZSBhIE5VTCBjaGFyYWN0ZXIgYXQgdGhlIGVuZCAqLworICAgICpvdXQgPSAwOworCisgICAgLyogRXh0ZW5kIHVuaWNvZGUgb2JqZWN0ICovCisgICAgb3V0c2l6ZSA9IG91dCAtIHN0YXJ0b3V0OworICAgIGFzc2VydChvdXRzaXplIDw9IFB5VW5pY29kZV9XU1RSX0xFTkdUSCgqdikpOworICAgIGlmICh1bmljb2RlX3Jlc2l6ZSh2LCBvdXRzaXplKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0ID0gc2l6ZTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihlbmNvZGluZ19vYmopOworICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY29kZV9jb2RlX3BhZ2Vfc3RhdGVmdWwoaW50IGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQoreworICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKKyAgICBpbnQgY2h1bmtfc2l6ZSwgZmluYWwsIGNvbnZlcnRlZCwgZG9uZTsKKworICAgIGlmIChjb2RlX3BhZ2UgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBjb2RlIHBhZ2UgbnVtYmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgKmNvbnN1bWVkID0gMDsKIAorICAgIGRvCisgICAgewogI2lmZGVmIE5FRURfUkVUUlkKLSAgcmV0cnk6Ci0gICAgaWYgKHNpemUgPiBJTlRfTUFYKQotICAgICAgICBkb25lID0gZGVjb2RlX21iY3MoJnYsIHMsIElOVF9NQVgsIDAsIGVycm9ycyk7Ci0gICAgZWxzZQorICAgICAgICBpZiAoc2l6ZSA+IElOVF9NQVgpIHsKKyAgICAgICAgICAgIGNodW5rX3NpemUgPSBJTlRfTUFYOworICAgICAgICAgICAgZmluYWwgPSAwOworICAgICAgICAgICAgZG9uZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGRvbmUgPSBkZWNvZGVfbWJjcygmdiwgcywgKGludClzaXplLCAhY29uc3VtZWQsIGVycm9ycyk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGNodW5rX3NpemUgPSAoaW50KXNpemU7CisgICAgICAgICAgICBmaW5hbCA9IChjb25zdW1lZCA9PSBOVUxMKTsKKyAgICAgICAgICAgIGRvbmUgPSAxOworICAgICAgICB9CiAKLSAgICBpZiAoZG9uZSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRih2KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgICAgICAvKiBTa2lwIHRyYWlsaW5nIGxlYWQtYnl0ZSB1bmxlc3MgJ2ZpbmFsJyBpcyBzZXQgKi8KKyAgICAgICAgaWYgKCFmaW5hbCAmJiBpc19kYmNzX2xlYWRfYnl0ZShjb2RlX3BhZ2UsIHMsIGNodW5rX3NpemUgLSAxKSkKKyAgICAgICAgICAgIC0tY2h1bmtfc2l6ZTsKIAotICAgIGlmIChjb25zdW1lZCkKLSAgICAgICAgKmNvbnN1bWVkICs9IGRvbmU7CisgICAgICAgIGlmIChjaHVua19zaXplID09IDAgJiYgZG9uZSkgeworICAgICAgICAgICAgaWYgKHYgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgICAgICB9CiAKLSNpZmRlZiBORUVEX1JFVFJZCi0gICAgaWYgKHNpemUgPiBJTlRfTUFYKSB7Ci0gICAgICAgIHMgKz0gZG9uZTsKLSAgICAgICAgc2l6ZSAtPSBkb25lOwotICAgICAgICBnb3RvIHJldHJ5OwotICAgIH0KLSNlbmRpZgogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgICAgIGNvbnZlcnRlZCA9IGRlY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KGNvZGVfcGFnZSwgJnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGNodW5rX3NpemUpOworICAgICAgICBpZiAoY29udmVydGVkID09IC0yKQorICAgICAgICAgICAgY29udmVydGVkID0gZGVjb2RlX2NvZGVfcGFnZV9lcnJvcnMoY29kZV9wYWdlLCAmdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGNodW5rX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICBhc3NlcnQoY29udmVydGVkICE9IDApOworCisgICAgICAgIGlmIChjb252ZXJ0ZWQgPCAwKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKHYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uc3VtZWQpCisgICAgICAgICAgICAqY29uc3VtZWQgKz0gY29udmVydGVkOworCisgICAgICAgIHMgKz0gY29udmVydGVkOworICAgICAgICBzaXplIC09IGNvbnZlcnRlZDsKKyAgICB9IHdoaWxlICghZG9uZSk7CisKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlTUJDUyhjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bChpbnQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQoreworICAgIHJldHVybiBkZWNvZGVfY29kZV9wYWdlX3N0YXRlZnVsKGNvZGVfcGFnZSwgcywgc2l6ZSwgZXJyb3JzLCBjb25zdW1lZCk7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQoreworICAgIHJldHVybiBkZWNvZGVfY29kZV9wYWdlX3N0YXRlZnVsKENQX0FDUCwgcywgc2l6ZSwgZXJyb3JzLCBjb25zdW1lZCk7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVNQkNTKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKIH0KIAorc3RhdGljIERXT1JECitlbmNvZGVfY29kZV9wYWdlX2ZsYWdzKFVJTlQgY29kZV9wYWdlLCBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY4KSB7CisgICAgICAgIGlmICh3aW52ZXIuZHdNYWpvclZlcnNpb24gPj0gNikKKyAgICAgICAgICAgIC8qIENQX1VURjggc3VwcG9ydHMgV0NfRVJSX0lOVkFMSURfQ0hBUlMgb24gV2luZG93cyBWaXN0YQorICAgICAgICAgICAgICAgYW5kIGxhdGVyICovCisgICAgICAgICAgICByZXR1cm4gV0NfRVJSX0lOVkFMSURfQ0hBUlM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIC8qIENQX1VURjggb25seSBzdXBwb3J0cyBmbGFncz0wIG9uIFdpbmRvd3Mgb2xkZXIgdGhhbiBWaXN0YSAqLworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY3KSB7CisgICAgICAgIC8qIENQX1VURjcgb25seSBzdXBwb3J0cyBmbGFncz0wICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGVycm9ycyAhPSBOVUxMICYmIHN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gV0NfTk9fQkVTVF9GSVRfQ0hBUlM7CisgICAgfQorfQorCiAvKgotICogQ29udmVydCB1bmljb2RlIGludG8gc3RyaW5nIG9iamVjdCAoTUJDUykuCi0gKiBSZXR1cm5zIDAgaWYgc3VjY2VlZCwgLTEgb3RoZXJ3aXNlLgorICogRW5jb2RlIGEgVW5pY29kZSBzdHJpbmcgdG8gYSBXaW5kb3dzIGNvZGUgcGFnZSBpbnRvIGEgYnl0ZSBzdHJpbmcgaW4gc3RyaWN0CisgKiBtb2RlLgorICoKKyAqIFJldHVybnMgY29uc3VtZWQgY2hhcmFjdGVycyBpZiBzdWNjZWVkLCByZXR1cm5zIC0yIG9uIGVuY29kZSBlcnJvciwgb3IgcmFpc2UKKyAqIGEgV2luZG93c0Vycm9yIGFuZCByZXR1cm5zIC0xIG9uIG90aGVyIGVycm9yLgogICovCi1zdGF0aWMgaW50IGVuY29kZV9tYmNzKFB5T2JqZWN0ICoqcmVwciwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqcCwgLyogdW5pY29kZSAqLwotICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgLyogc2l6ZSBvZiB1bmljb2RlICovCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9ycykKK3N0YXRpYyBpbnQKK2VuY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KFVJTlQgY29kZV9wYWdlLCBQeU9iamVjdCAqKm91dGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3Qgb2Zmc2V0LCBpbnQgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJyb3JzKQogewogICAgIEJPT0wgdXNlZERlZmF1bHRDaGFyID0gRkFMU0U7Ci0gICAgQk9PTCAqcHVzZWREZWZhdWx0Q2hhcjsKLSAgICBpbnQgbWJjc3NpemU7Ci0gICAgUHlfc3NpemVfdCBuOworICAgIEJPT0wgKnB1c2VkRGVmYXVsdENoYXIgPSAmdXNlZERlZmF1bHRDaGFyOworICAgIGludCBvdXRzaXplOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIERXT1JEIGZsYWdzOworICAgIHdjaGFyX3QgKnA7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGNvbnN0IERXT1JEIGZsYWdzID0gZW5jb2RlX2NvZGVfcGFnZV9mbGFncyhjb2RlX3BhZ2UsIE5VTEwpOworICAgIGNoYXIgKm91dDsKKyAgICAvKiBDcmVhdGUgYSBzdWJzdHJpbmcgc28gdGhhdCB3ZSBjYW4gZ2V0IHRoZSBVVEYtMTYgcmVwcmVzZW50YXRpb24KKyAgICAgICBvZiBqdXN0IHRoZSBzbGljZSB1bmRlciBjb25zaWRlcmF0aW9uLiAqLworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAKLSAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKyAgICBhc3NlcnQobGVuID4gMCk7CiAKLSAgICAvKiBjaGVjayBhbmQgaGFuZGxlICdlcnJvcnMnIGFyZyAqLwotICAgIGlmIChlcnJvcnM9PU5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpPT0wKSB7Ci0gICAgICAgIGZsYWdzID0gV0NfTk9fQkVTVF9GSVRfQ0hBUlM7CisgICAgaWYgKGNvZGVfcGFnZSAhPSBDUF9VVEY4ICYmIGNvZGVfcGFnZSAhPSBDUF9VVEY3KQogICAgICAgICBwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChlcnJvcnMsICJyZXBsYWNlIik9PTApIHsKLSAgICAgICAgZmxhZ3MgPSAwOworICAgIGVsc2UKICAgICAgICAgcHVzZWREZWZhdWx0Q2hhciA9IE5VTEw7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJtYmNzIGVuY29kaW5nIGRvZXMgbm90IHN1cHBvcnQgZXJyb3JzPSclcyciLAotICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0gICAgICAgICByZXR1cm4gLTE7CisKKyAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHVuaWNvZGUsIG9mZnNldCwgb2Zmc2V0K2xlbik7CisgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcCA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHN1YnN0cmluZywgJnNpemUpOworICAgIGlmIChwID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvKiBGaXJzdCBnZXQgdGhlIHNpemUgb2YgdGhlIHJlc3VsdCAqLwotICAgIGlmIChzaXplID4gMCkgewotICAgICAgICBtYmNzc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCBmbGFncywgcCwgc2l6ZSwgTlVMTCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOwotICAgICAgICBpZiAobWJjc3NpemUgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoMCwgTlVMTCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLyogSWYgd2UgdXNlZCBhIGRlZmF1bHQgY2hhciwgdGhlbiB3ZSBmYWlsZWQhICovCi0gICAgICAgIGlmIChwdXNlZERlZmF1bHRDaGFyICYmICpwdXNlZERlZmF1bHRDaGFyKQotICAgICAgICAgICAgZ290byBtYmNzX2VuY29kZV9lcnJvcjsKLSAgICB9IGVsc2UgewotICAgICAgICBtYmNzc2l6ZSA9IDA7CisgICAgb3V0c2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoY29kZV9wYWdlLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcHVzZWREZWZhdWx0Q2hhcik7CisgICAgaWYgKG91dHNpemUgPD0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICAvKiBJZiB3ZSB1c2VkIGEgZGVmYXVsdCBjaGFyLCB0aGVuIHdlIGZhaWxlZCEgKi8KKyAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikgeworICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIC0yOwogICAgIH0KIAotICAgIGlmICgqcmVwciA9PSBOVUxMKSB7CisgICAgaWYgKCpvdXRieXRlcyA9PSBOVUxMKSB7CiAgICAgICAgIC8qIENyZWF0ZSBzdHJpbmcgb2JqZWN0ICovCi0gICAgICAgICpyZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBtYmNzc2l6ZSk7Ci0gICAgICAgIGlmICgqcmVwciA9PSBOVUxMKQorICAgICAgICAqb3V0Ynl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG91dHNpemUpOworICAgICAgICBpZiAoKm91dGJ5dGVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBuID0gMDsKKyAgICAgICAgfQorICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogRXh0ZW5kIHN0cmluZyBvYmplY3QgKi8KLSAgICAgICAgbiA9IFB5Qnl0ZXNfU2l6ZSgqcmVwcik7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUocmVwciwgbiArIG1iY3NzaXplKSA8IDApCisgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgbiA9IFB5Qnl0ZXNfU2l6ZSgqb3V0Ynl0ZXMpOworICAgICAgICBpZiAob3V0c2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gbikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUob3V0Ynl0ZXMsIG4gKyBvdXRzaXplKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcykgKyBuOwogICAgIH0KIAogICAgIC8qIERvIHRoZSBjb252ZXJzaW9uICovCi0gICAgaWYgKHNpemUgPiAwKSB7Ci0gICAgICAgIGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORygqcmVwcikgKyBuOwotICAgICAgICBpZiAoMCA9PSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgZmxhZ3MsIHAsIHNpemUsIHMsIG1iY3NzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgwLCBOVUxMKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikKLSAgICAgICAgICAgIGdvdG8gbWJjc19lbmNvZGVfZXJyb3I7Ci0gICAgfQorICAgIG91dHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIG91dHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcHVzZWREZWZhdWx0Q2hhcik7CisgICAgUHlfQ0xFQVIoc3Vic3RyaW5nKTsKKyAgICBpZiAob3V0c2l6ZSA8PSAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChwdXNlZERlZmF1bHRDaGFyICYmICpwdXNlZERlZmF1bHRDaGFyKQorICAgICAgICByZXR1cm4gLTI7CiAgICAgcmV0dXJuIDA7CiAKLW1iY3NfZW5jb2RlX2Vycm9yOgotICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgIm1iY3MiLCBwLCBzaXplLCAwLCAwLCAiaW52YWxpZCBjaGFyYWN0ZXIiKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7CitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKEdldExhc3RFcnJvcigpID09IEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04pCisgICAgICAgIHJldHVybiAtMjsKKyAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlTUJDUyhjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKgorICogRW5jb2RlIGEgVW5pY29kZSBzdHJpbmcgdG8gYSBXaW5kb3dzIGNvZGUgcGFnZSBpbnRvIGEgYnl0ZSBzdHJpbmcgdXNpbmcgYQorICogZXJyb3IgaGFuZGxlci4KKyAqCisgKiBSZXR1cm5zIGNvbnN1bWVkIGNoYXJhY3RlcnMgaWYgc3VjY2VlZCwgb3IgcmFpc2UgYSBXaW5kb3dzRXJyb3IgYW5kIHJldHVybnMKKyAqIC0xIG9uIG90aGVyIGVycm9yLgorICovCitzdGF0aWMgaW50CitlbmNvZGVfY29kZV9wYWdlX2Vycm9ycyhVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IHVuaWNvZGVfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbnNpemUsIGNvbnN0IGNoYXIqIGVycm9ycykKIHsKLSAgICBQeU9iamVjdCAqcmVwciA9IE5VTEw7Ci0gICAgaW50IHJldDsKKyAgICBjb25zdCBEV09SRCBmbGFncyA9IGVuY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlLCBlcnJvcnMpOworICAgIFB5X3NzaXplX3QgcG9zID0gdW5pY29kZV9vZmZzZXQ7CisgICAgUHlfc3NpemVfdCBlbmRpbiA9IHVuaWNvZGVfb2Zmc2V0ICsgaW5zaXplOworICAgIC8qIElkZWFsbHksIHdlIHNob3VsZCBnZXQgcmVhc29uIGZyb20gRm9ybWF0TWVzc2FnZS4gVGhpcyBpcyB0aGUgV2luZG93cworICAgICAgIDIwMDAgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLiAqLworICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJpbnZhbGlkIGNoYXJhY3RlciI7CisgICAgLyogND1tYXhpbXVtIGxlbmd0aCBvZiBhIFVURi04IHNlcXVlbmNlICovCisgICAgY2hhciBidWZmZXJbNF07CisgICAgQk9PTCB1c2VkRGVmYXVsdENoYXIgPSBGQUxTRSwgKnB1c2VkRGVmYXVsdENoYXI7CisgICAgUHlfc3NpemVfdCBvdXRzaXplOworICAgIGNoYXIgKm91dDsKKyAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZW5jb2Rpbmdfb2JqID0gTlVMTDsKKyAgICBjaGFyICplbmNvZGluZzsKKyAgICBQeV9zc2l6ZV90IG5ld3BvcywgbmV3b3V0c2l6ZTsKKyAgICBQeU9iamVjdCAqcmVwOworICAgIGludCByZXQgPSAtMTsKIAotI2lmZGVmIE5FRURfUkVUUlkKLSAgcmV0cnk6Ci0gICAgaWYgKHNpemUgPiBJTlRfTUFYKQotICAgICAgICByZXQgPSBlbmNvZGVfbWJjcygmcmVwciwgcCwgSU5UX01BWCwgZXJyb3JzKTsKKyAgICBhc3NlcnQoaW5zaXplID4gMCk7CisKKyAgICBlbmNvZGluZyA9IGNvZGVfcGFnZV9uYW1lKGNvZGVfcGFnZSwgJmVuY29kaW5nX29iaik7CisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgICAgICAvKiBUaGUgbGFzdCBlcnJvciB3YXMgRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTiwKKyAgICAgICAgICAgdGhlbiB3ZSByYWlzZSBhIFVuaWNvZGVFbmNvZGVFcnJvci4gKi8KKyAgICAgICAgbWFrZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLCAwLCAwLCByZWFzb24pOworICAgICAgICBpZiAoZXhjICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5Q29kZWNfU3RyaWN0RXJyb3JzKGV4Yyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXhjKTsKKyAgICAgICAgfQorICAgICAgICBQeV9YREVDUkVGKGVuY29kaW5nX29iaik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoY29kZV9wYWdlICE9IENQX1VURjggJiYgY29kZV9wYWdlICE9IENQX1VURjcpCisgICAgICAgIHB1c2VkRGVmYXVsdENoYXIgPSAmdXNlZERlZmF1bHRDaGFyOwogICAgIGVsc2UKLSNlbmRpZgotICAgICAgICByZXQgPSBlbmNvZGVfbWJjcygmcmVwciwgcCwgKGludClzaXplLCBlcnJvcnMpOworICAgICAgICBwdXNlZERlZmF1bHRDaGFyID0gTlVMTDsKIAotICAgIGlmIChyZXQgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYocmVwcik7CisgICAgaWYgKFB5X0FSUkFZX0xFTkdUSChidWZmZXIpID4gUFlfU1NJWkVfVF9NQVggLyBpbnNpemUpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgb3V0c2l6ZSA9IGluc2l6ZSAqIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpOworCisgICAgaWYgKCpvdXRieXRlcyA9PSBOVUxMKSB7CisgICAgICAgIC8qIENyZWF0ZSBzdHJpbmcgb2JqZWN0ICovCisgICAgICAgICpvdXRieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgb3V0c2l6ZSk7CisgICAgICAgIGlmICgqb3V0Ynl0ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBFeHRlbmQgc3RyaW5nIG9iamVjdCAqLworICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeUJ5dGVzX1NpemUoKm91dGJ5dGVzKTsKKyAgICAgICAgaWYgKG4gPiBQWV9TU0laRV9UX01BWCAtIG91dHNpemUpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUob3V0Ynl0ZXMsIG4gKyBvdXRzaXplKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpICsgbjsKKyAgICB9CisKKyAgICAvKiBFbmNvZGUgdGhlIHN0cmluZyBjaGFyYWN0ZXIgcGVyIGNoYXJhY3RlciAqLworICAgIHdoaWxlIChwb3MgPCBlbmRpbikKKyAgICB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIHBvcyk7CisgICAgICAgIHdjaGFyX3QgY2hhcnNbMl07CisgICAgICAgIGludCBjaGFyc2l6ZTsKKyAgICAgICAgaWYgKGNoIDwgMHgxMDAwMCkgeworICAgICAgICAgICAgY2hhcnNbMF0gPSAod2NoYXJfdCljaDsKKyAgICAgICAgICAgIGNoYXJzaXplID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoIC09IDB4MTAwMDA7CisgICAgICAgICAgICBjaGFyc1swXSA9IDB4ZDgwMCArIChjaCA+PiAxMCk7CisgICAgICAgICAgICBjaGFyc1sxXSA9IDB4ZGMwMCArIChjaCAmIDB4M2ZmKTsKKyAgICAgICAgICAgIGNoYXJzaXplID0gMjsKKyAgICAgICAgfQorCisgICAgICAgIG91dHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzLCBjaGFyc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcHVzZWREZWZhdWx0Q2hhcik7CisgICAgICAgIGlmIChvdXRzaXplID4gMCkgeworICAgICAgICAgICAgaWYgKHB1c2VkRGVmYXVsdENoYXIgPT0gTlVMTCB8fCAhKCpwdXNlZERlZmF1bHRDaGFyKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgICAgICBtZW1jcHkob3V0LCBidWZmZXIsIG91dHNpemUpOworICAgICAgICAgICAgICAgIG91dCArPSBvdXRzaXplOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAorICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLCBlbmNvZGluZywgcmVhc29uLAorICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4YywKKyAgICAgICAgICAgICAgICAgIHBvcywgcG9zICsgMSwgJm5ld3Bvcyk7CisgICAgICAgIGlmIChyZXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHBvcyA9IG5ld3BvczsKKworICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7CisgICAgICAgICAgICBvdXRzaXplID0gUHlCeXRlc19HRVRfU0laRShyZXApOworICAgICAgICAgICAgaWYgKG91dHNpemUgIT0gMSkgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0ID0gb3V0IC0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKTsKKyAgICAgICAgICAgICAgICBuZXdvdXRzaXplID0gUHlCeXRlc19HRVRfU0laRSgqb3V0Ynl0ZXMpICsgKG91dHNpemUgLSAxKTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuZXdvdXRzaXplKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcykgKyBvZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZW1jcHkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCBvdXRzaXplKTsKKyAgICAgICAgICAgIG91dCArPSBvdXRzaXplOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgICAgICAgICAgdm9pZCAqZGF0YTsKKworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApID09IC0xKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb3V0c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCk7CisgICAgICAgICAgICBpZiAob3V0c2l6ZSAhPSAxKSB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQgPSBvdXQgLSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOworICAgICAgICAgICAgICAgIG5ld291dHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpvdXRieXRlcykgKyAob3V0c2l6ZSAtIDEpOworICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUob3V0Ynl0ZXMsIG5ld291dHNpemUpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3V0ID0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKSArIG9mZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXApOworICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcCk7CisgICAgICAgICAgICBmb3IgKGk9MDsgaSA8IG91dHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPiAxMjcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3MsIHBvcyArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGVuY29kZSBlcnJvciBoYW5kbGVyIHJlc3VsdCB0byBBU0NJSSIpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKm91dCA9ICh1bnNpZ25lZCBjaGFyKWNoOworICAgICAgICAgICAgICAgIG91dCsrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihyZXApOworICAgIH0KKyAgICAvKiB3cml0ZSBhIE5VTCBieXRlICovCisgICAgKm91dCA9IDA7CisgICAgb3V0c2l6ZSA9IG91dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcyk7CisgICAgYXNzZXJ0KG91dHNpemUgPD0gUHlCeXRlc19HRVRfU0laRSgqb3V0Ynl0ZXMpKTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBvdXRzaXplKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0ID0gMDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihlbmNvZGluZ19vYmopOworICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2VuY29kZV9jb2RlX3BhZ2UoaW50IGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqb3V0Ynl0ZXMgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgb2Zmc2V0OworICAgIGludCBjaHVua19sZW4sIHJldCwgZG9uZTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworCisgICAgaWYgKGNvZGVfcGFnZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGNvZGUgcGFnZSBudW1iZXIiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0jaWZkZWYgTkVFRF9SRVRSWQotICAgIGlmIChzaXplID4gSU5UX01BWCkgewotICAgICAgICBwICs9IElOVF9NQVg7Ci0gICAgICAgIHNpemUgLT0gSU5UX01BWDsKLSAgICAgICAgZ290byByZXRyeTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCi0gICAgcmV0dXJuIHJlcHI7CisgICAgb2Zmc2V0ID0gMDsKKyAgICBkbworICAgIHsKKyNpZmRlZiBORUVEX1JFVFJZCisgICAgICAgIC8qIFVURi0xNiBlbmNvZGluZyBtYXkgZG91YmxlIHRoZSBzaXplLCBzbyB1c2Ugb25seSBJTlRfTUFYLzIKKyAgICAgICAgICAgY2h1bmtzLiAqLworICAgICAgICBpZiAobGVuID4gSU5UX01BWC8yKSB7CisgICAgICAgICAgICBjaHVua19sZW4gPSBJTlRfTUFYLzI7CisgICAgICAgICAgICBkb25lID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgY2h1bmtfbGVuID0gKGludClsZW47CisgICAgICAgICAgICBkb25lID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHJldCA9IGVuY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KGNvZGVfcGFnZSwgJm91dGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBvZmZzZXQsIGNodW5rX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgaWYgKHJldCA9PSAtMikKKyAgICAgICAgICAgIHJldCA9IGVuY29kZV9jb2RlX3BhZ2VfZXJyb3JzKGNvZGVfcGFnZSwgJm91dGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtfbGVuLCBlcnJvcnMpOworICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihvdXRieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldCArPSBjaHVua19sZW47CisgICAgICAgIGxlbiAtPSBjaHVua19sZW47CisgICAgfSB3aGlsZSAoIWRvbmUpOworCisgICAgcmV0dXJuIG91dGJ5dGVzOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzTUJDU1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVNQkNTKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGUsICpyZXM7CisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBlbmNvZGVfY29kZV9wYWdlKENQX0FDUCwgdW5pY29kZSwgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKGludCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIHJldHVybiBlbmNvZGVfY29kZV9wYWdlKGNvZGVfcGFnZSwgdW5pY29kZSwgZXJyb3JzKTsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0FzTUJDU1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVNQkNTKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBOVUxMKTsKIH0KIAogI3VuZGVmIE5FRURfUkVUUlkKIAotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KIAogLyogLS0tIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKICAgICBjb25zdCBjaGFyICplOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp2OwogICAgIFB5X3NzaXplX3QgZXh0cmFjaGFycyA9IDA7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqbWFwc3RyaW5nID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IG1hcGxlbiA9IDA7CiAKICAgICAvKiBEZWZhdWx0IHRvIExhdGluLTEgKi8KICAgICBpZiAobWFwcGluZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxhdGluMShzLCBzaXplLCBlcnJvcnMpOwogCi0gICAgdiA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOworICAgIHYgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgb3V0cG9zID0gMDsKICAgICBlID0gcyArIHNpemU7CiAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KG1hcHBpbmcpKSB7Ci0gICAgICAgIG1hcHN0cmluZyA9IFB5VW5pY29kZV9BU19VTklDT0RFKG1hcHBpbmcpOwotICAgICAgICBtYXBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUobWFwcGluZyk7CisgICAgICAgIFB5X3NzaXplX3QgbWFwbGVuOworICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIG1hcGtpbmQ7CisgICAgICAgIHZvaWQgKm1hcGRhdGE7CisgICAgICAgIFB5X1VDUzQgeDsKKworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG1hcHBpbmcpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgbWFwbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobWFwcGluZyk7CisgICAgICAgIG1hcGRhdGEgPSBQeVVuaWNvZGVfREFUQShtYXBwaW5nKTsKKyAgICAgICAgbWFwa2luZCA9IFB5VW5pY29kZV9LSU5EKG1hcHBpbmcpOwogICAgICAgICB3aGlsZSAocyA8IGUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqczsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgeCA9IDB4ZmZmZTsgLyogaWxsZWdhbCB2YWx1ZSAqLworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjaDsKKyAgICAgICAgICAgIGlmIChtYXBraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EICYmIG1hcGxlbiA+PSAyNTYpIHsKKyAgICAgICAgICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIG91dGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2KTsKKyAgICAgICAgICAgICAgICBpZiAob3V0a2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgICAgICAgICB2b2lkICpvdXRkYXRhID0gUHlVbmljb2RlX0RBVEEodik7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh2KTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoID0gKnM7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gUHlVbmljb2RlX1JFQUQoUHlVbmljb2RlXzJCWVRFX0tJTkQsIG1hcGRhdGEsIGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID4gbWF4Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV8xQllURV9LSU5ELCBvdXRkYXRhLCBvdXRwb3MrKywgeCk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3M7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG91dGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3V0ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHYpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAocyA8IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBQeVVuaWNvZGVfUkVBRChQeVVuaWNvZGVfMkJZVEVfS0lORCwgbWFwZGF0YSwgY2gpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gMHhGRkZFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlXzJCWVRFX0tJTkQsIG91dGRhdGEsIG91dHBvcysrLCB4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaCA9ICpzOwogCiAgICAgICAgICAgICBpZiAoY2ggPCBtYXBsZW4pCi0gICAgICAgICAgICAgICAgeCA9IG1hcHN0cmluZ1tjaF07Ci0KLSAgICAgICAgICAgIGlmICh4ID09IDB4ZmZmZSkgeworICAgICAgICAgICAgICAgIHggPSBQeVVuaWNvZGVfUkVBRChtYXBraW5kLCBtYXBkYXRhLCBjaCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeCA9IDB4ZmZmZTsgLyogaW52YWxpZCB2YWx1ZSAqLworRXJyb3I6CisgICAgICAgICAgICBpZiAoeCA9PSAweGZmZmUpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLyogdW5kZWZpbmVkIG1hcHBpbmcgKi8KLSAgICAgICAgICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MrMTsKICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcm1hcCIsICJjaGFyYWN0ZXIgbWFwcyB0byA8dW5kZWZpbmVkPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcykpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwKysgPSB4OworCisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCB4KSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgKytzOwogICAgICAgICB9CiAgICAgfQpAQCAtNTI1NiwxOCArNzUzNCwxOCBAQAogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKXZhbHVlOworICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsIHZhbHVlKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHggPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgICAgIC8qIHVuZGVmaW5lZCBtYXBwaW5nICovCi0gICAgICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7CiAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJtYXAiLCAiY2hhcmFjdGVyIG1hcHMgdG8gPHVuZGVmaW5lZD4iLAogICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KQEAgLTUyNzUsMzIgKzc1NTMsMzcgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgdGFyZ2V0c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh4KTsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHRhcmdldHNpemU7CiAKLSAgICAgICAgICAgICAgICBpZiAodGFyZ2V0c2l6ZSA9PSAxKQorICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoeCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICB0YXJnZXRzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoeCk7CisKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0c2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIDEtMSBtYXBwaW5nICovCi0gICAgICAgICAgICAgICAgICAgICpwKysgPSAqUHlVbmljb2RlX0FTX1VOSUNPREUoeCk7Ci0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRF9DSEFSKHgsIDApKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldHNpemUgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIDEtbiBtYXBwaW5nICovCiAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRzaXplID4gZXh0cmFjaGFycykgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVzaXplIGZpcnN0ICovCi0gICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9sZHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmVlZGVkID0gKHRhcmdldHNpemUgLSBleHRyYWNoYXJzKSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0c2l6ZSA8PCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY2hhcnMgKz0gbmVlZGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgLyogWFhYIG92ZXJmbG93IGRldGVjdGlvbiBtaXNzaW5nICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHYpICsgbmVlZGVkKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSArIG5lZWRlZCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodikgKyBvbGRwb3M7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHNpemUpOwotICAgICAgICAgICAgICAgICAgICBwICs9IHRhcmdldHNpemU7CisgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3dpZGVuKCZ2LCBvdXRwb3MsIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh4KSkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnModiwgb3V0cG9zLCB4LCAwLCB0YXJnZXRzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0cG9zICs9IHRhcmdldHNpemU7CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhY2hhcnMgLT0gdGFyZ2V0c2l6ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLyogMS0wIG1hcHBpbmc6IHNraXAgdGhlIGNoYXJhY3RlciAqLwpAQCAtNTMxNiwxMiArNzU5OSwxMSBAQAogICAgICAgICAgICAgKytzOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikgPCBQeVVuaWNvZGVfR0VUX1NJWkUodikpCi0gICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA8IDApCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LCBvdXRwb3MpIDwgMCkKKyAgICAgICAgZ290byBvbkVycm9yOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwpAQCAtNTMzMiw3ICs3NjE0LDcgQEAKIAogLyogQ2hhcm1hcCBlbmNvZGluZzogdGhlIGxvb2t1cCB0YWJsZSAqLwogCi1zdHJ1Y3QgZW5jb2RpbmdfbWFweworc3RydWN0IGVuY29kaW5nX21hcCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWwxWzMyXTsKICAgICBpbnQgY291bnQyLCBjb3VudDM7CkBAIC01NDA2LDcgKzc2ODgsNiBAQAogUHlPYmplY3QqCiBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcChQeU9iamVjdCogc3RyaW5nKQogewotICAgIFB5X1VOSUNPREUgKmRlY29kZTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIHN0cnVjdCBlbmNvZGluZ19tYXAgKm1yZXN1bHQ7CiAgICAgaW50IGk7CkBAIC01NDE1LDM1ICs3Njk2LDM5IEBACiAgICAgdW5zaWduZWQgY2hhciBsZXZlbDJbNTEyXTsKICAgICB1bnNpZ25lZCBjaGFyICptbGV2ZWwxLCAqbWxldmVsMiwgKm1sZXZlbDM7CiAgICAgaW50IGNvdW50MiA9IDAsIGNvdW50MyA9IDA7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKyAgICBQeV9VQ1M0IGNoOwogCi0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSB8fCBQeVVuaWNvZGVfR2V0U2l6ZShzdHJpbmcpICE9IDI1NikgeworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN0cmluZykgfHwgIVB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGRlY29kZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cmluZyk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKKyAgICBsZW5ndGggPSBQeV9NSU4obGVuZ3RoLCAyNTYpOwogICAgIG1lbXNldChsZXZlbDEsIDB4RkYsIHNpemVvZiBsZXZlbDEpOwogICAgIG1lbXNldChsZXZlbDIsIDB4RkYsIHNpemVvZiBsZXZlbDIpOwogCiAgICAgLyogSWYgdGhlcmUgaXNuJ3QgYSBvbmUtdG8tb25lIG1hcHBpbmcgb2YgTlVMTCB0byBcMCwKICAgICAgICBvciBpZiB0aGVyZSBhcmUgbm9uLUJNUCBjaGFyYWN0ZXJzLCB3ZSBuZWVkIHRvIHVzZQogICAgICAgIGEgbWFwcGluZyBkaWN0aW9uYXJ5LiAqLwotICAgIGlmIChkZWNvZGVbMF0gIT0gMCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkgIT0gMCkKICAgICAgICAgbmVlZF9kaWN0ID0gMTsKLSAgICBmb3IgKGkgPSAxOyBpIDwgMjU2OyBpKyspIHsKKyAgICBmb3IgKGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgaW50IGwxLCBsMjsKLSAgICAgICAgaWYgKGRlY29kZVtpXSA9PSAwCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICB8fCBkZWNvZGVbaV0gPiAweEZGRkYKLSNlbmRpZgotICAgICAgICAgICAgKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA9PSAwIHx8IGNoID4gMHhGRkZGKSB7CiAgICAgICAgICAgICBuZWVkX2RpY3QgPSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGRlY29kZVtpXSA9PSAweEZGRkUpCisgICAgICAgIGlmIChjaCA9PSAweEZGRkUpCiAgICAgICAgICAgICAvKiB1bm1hcHBlZCBjaGFyYWN0ZXIgKi8KICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBsMSA9IGRlY29kZVtpXSA+PiAxMTsKLSAgICAgICAgbDIgPSBkZWNvZGVbaV0gPj4gNzsKKyAgICAgICAgbDEgPSBjaCA+PiAxMTsKKyAgICAgICAgbDIgPSBjaCA+PiA3OwogICAgICAgICBpZiAobGV2ZWwxW2wxXSA9PSAweEZGKQogICAgICAgICAgICAgbGV2ZWwxW2wxXSA9IGNvdW50MisrOwogICAgICAgICBpZiAobGV2ZWwyW2wyXSA9PSAweEZGKQpAQCAtNTQ1OCw5ICs3NzQzLDggQEAKICAgICAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOwogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKLSAgICAgICAgICAgIGtleSA9IHZhbHVlID0gTlVMTDsKLSAgICAgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhkZWNvZGVbaV0pOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CiAgICAgICAgICAgICB2YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhpKTsKICAgICAgICAgICAgIGlmICgha2V5IHx8ICF2YWx1ZSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDE7CkBAIC01NDkzLDE3ICs3Nzc3LDE4IEBACiAgICAgbWVtc2V0KG1sZXZlbDIsIDB4RkYsIDE2KmNvdW50Mik7CiAgICAgbWVtc2V0KG1sZXZlbDMsIDAsIDEyOCpjb3VudDMpOwogICAgIGNvdW50MyA9IDA7Ci0gICAgZm9yIChpID0gMTsgaSA8IDI1NjsgaSsrKSB7CisgICAgZm9yIChpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGludCBvMSwgbzIsIG8zLCBpMiwgaTM7Ci0gICAgICAgIGlmIChkZWNvZGVbaV0gPT0gMHhGRkZFKQorICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA9PSAweEZGRkUpCiAgICAgICAgICAgICAvKiB1bm1hcHBlZCBjaGFyYWN0ZXIgKi8KICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBvMSA9IGRlY29kZVtpXT4+MTE7Ci0gICAgICAgIG8yID0gKGRlY29kZVtpXT4+NykgJiAweEY7CisgICAgICAgIG8xID0gY2g+PjExOworICAgICAgICBvMiA9IChjaD4+NykgJiAweEY7CiAgICAgICAgIGkyID0gMTYqbWxldmVsMVtvMV0gKyBvMjsKICAgICAgICAgaWYgKG1sZXZlbDJbaTJdID09IDB4RkYpCiAgICAgICAgICAgICBtbGV2ZWwyW2kyXSA9IGNvdW50MysrOwotICAgICAgICBvMyA9IGRlY29kZVtpXSAmIDB4N0Y7CisgICAgICAgIG8zID0gY2ggJiAweDdGOwogICAgICAgICBpMyA9IDEyOCptbGV2ZWwyW2kyXSArIG8zOwogICAgICAgICBtbGV2ZWwzW2kzXSA9IGk7CiAgICAgfQpAQCAtNTUxMSw3ICs3Nzk2LDcgQEAKIH0KIAogc3RhdGljIGludAotZW5jb2RpbmdfbWFwX2xvb2t1cChQeV9VTklDT0RFIGMsIFB5T2JqZWN0ICptYXBwaW5nKQorZW5jb2RpbmdfbWFwX2xvb2t1cChQeV9VQ1M0IGMsIFB5T2JqZWN0ICptYXBwaW5nKQogewogICAgIHN0cnVjdCBlbmNvZGluZ19tYXAgKm1hcCA9IChzdHJ1Y3QgZW5jb2RpbmdfbWFwKiltYXBwaW5nOwogICAgIGludCBsMSA9IGM+PjExOwpAQCAtNTUxOSwxMSArNzgwNCw4IEBACiAgICAgaW50IGwzID0gYyAmIDB4N0Y7CiAgICAgaW50IGk7CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBpZiAoYyA+IDB4RkZGRikgeworICAgIGlmIChjID4gMHhGRkZGKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotI2VuZGlmCiAgICAgaWYgKGMgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLyogbGV2ZWwgMSovCkBAIC01NTQ3LDcgKzc4MjksOCBAQAogLyogTG9va3VwIHRoZSBjaGFyYWN0ZXIgY2ggaW4gdGhlIG1hcHBpbmcuIElmIHRoZSBjaGFyYWN0ZXIKICAgIGNhbid0IGJlIGZvdW5kLCBQeV9Ob25lIGlzIHJldHVybmVkIChvciBOVUxMLCBpZiBhbm90aGVyCiAgICBlcnJvciBvY2N1cnJlZCkuICovCi1zdGF0aWMgUHlPYmplY3QgKmNoYXJtYXBlbmNvZGVfbG9va3VwKFB5X1VOSUNPREUgYywgUHlPYmplY3QgKm1hcHBpbmcpCitzdGF0aWMgUHlPYmplY3QgKgorY2hhcm1hcGVuY29kZV9sb29rdXAoUHlfVUNTNCBjLCBQeU9iamVjdCAqbWFwcGluZykKIHsKICAgICBQeU9iamVjdCAqdyA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZyljKTsKICAgICBQeU9iamVjdCAqeDsKQEAgLTU2MDQsMTYgKzc4ODcsMTYgQEAKIAogdHlwZWRlZiBlbnVtIGNoYXJtYXBlbmNvZGVfcmVzdWx0IHsKICAgICBlbmNfU1VDQ0VTUywgZW5jX0ZBSUxFRCwgZW5jX0VYQ0VQVElPTgotfWNoYXJtYXBlbmNvZGVfcmVzdWx0OworfSBjaGFybWFwZW5jb2RlX3Jlc3VsdDsKIC8qIGxvb2t1cCB0aGUgY2hhcmFjdGVyLCBwdXQgdGhlIHJlc3VsdCBpbiB0aGUgb3V0cHV0IHN0cmluZyBhbmQgYWRqdXN0CiAgICB2YXJpb3VzIHN0YXRlIHZhcmlhYmxlcy4gUmVzaXplIHRoZSBvdXRwdXQgYnl0ZXMgb2JqZWN0IGlmIG5vdCBlbm91Z2gKICAgIHNwYWNlIGlzIGF2YWlsYWJsZS4gUmV0dXJuIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IHRoYXQKICAgIHdhcyBwdXQgaW4gdGhlIG91dHB1dCBidWZmZXIsIG9yIFB5X05vbmUsIGlmIHRoZSBtYXBwaW5nIHdhcyB1bmRlZmluZWQKICAgIChpbiB3aGljaCBjYXNlIG5vIGNoYXJhY3RlciB3YXMgd3JpdHRlbikgb3IgTlVMTCwgaWYgYQogICAgcmVhbGxvY2F0aW9uIGVycm9yIG9jY3VycmVkLiBUaGUgY2FsbGVyIG11c3QgZGVjcmVmIHRoZSByZXN1bHQgKi8KLXN0YXRpYwotY2hhcm1hcGVuY29kZV9yZXN1bHQgY2hhcm1hcGVuY29kZV9vdXRwdXQoUHlfVU5JQ09ERSBjLCBQeU9iamVjdCAqbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqb3V0b2JqLCBQeV9zc2l6ZV90ICpvdXRwb3MpCitzdGF0aWMgY2hhcm1hcGVuY29kZV9yZXN1bHQKK2NoYXJtYXBlbmNvZGVfb3V0cHV0KFB5X1VDUzQgYywgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm91dG9iaiwgUHlfc3NpemVfdCAqb3V0cG9zKQogewogICAgIFB5T2JqZWN0ICpyZXA7CiAgICAgY2hhciAqb3V0c3RhcnQ7CkBAIC01NjY5LDE3ICs3OTUyLDE5IEBACiAKIC8qIGhhbmRsZSBhbiBlcnJvciBpbiBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcAogICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IgKi8KLXN0YXRpYwotaW50IGNoYXJtYXBfZW5jb2RpbmdfZXJyb3IoCi0gICAgY29uc3QgUHlfVU5JQ09ERSAqcCwgUHlfc3NpemVfdCBzaXplLCBQeV9zc2l6ZV90ICppbnBvcywgUHlPYmplY3QgKm1hcHBpbmcsCitzdGF0aWMgaW50CitjaGFybWFwX2VuY29kaW5nX2Vycm9yKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICppbnBvcywgUHlPYmplY3QgKm1hcHBpbmcsCiAgICAgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCiAgICAgaW50ICprbm93bl9lcnJvckhhbmRsZXIsIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLCBjb25zdCBjaGFyICplcnJvcnMsCiAgICAgUHlPYmplY3QgKipyZXMsIFB5X3NzaXplX3QgKnJlc3BvcykKIHsKICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7IC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwotICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHNpemUsIHJlcHNpemU7CiAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgUHlfVU5JQ09ERSAqdW5pMjsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIC8qIHN0YXJ0cG9zIGZvciBjb2xsZWN0aW5nIHVuZW5jb2RhYmxlIGNoYXJzICovCiAgICAgUHlfc3NpemVfdCBjb2xsc3RhcnRwb3MgPSAqaW5wb3M7CiAgICAgUHlfc3NpemVfdCBjb2xsZW5kcG9zID0gKmlucG9zKzE7CkBAIC01Njg3LDE5ICs3OTcyLDI2IEBACiAgICAgY2hhciAqZW5jb2RpbmcgPSAiY2hhcm1hcCI7CiAgICAgY2hhciAqcmVhc29uID0gImNoYXJhY3RlciBtYXBzIHRvIDx1bmRlZmluZWQ+IjsKICAgICBjaGFybWFwZW5jb2RlX3Jlc3VsdCB4OworICAgIFB5X1VDUzQgY2g7CisgICAgaW50IHZhbDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CiAgICAgLyogZmluZCBhbGwgdW5lbmNvZGFibGUgY2hhcmFjdGVycyAqLwogICAgIHdoaWxlIChjb2xsZW5kcG9zIDwgc2l6ZSkgewogICAgICAgICBQeU9iamVjdCAqcmVwOwogICAgICAgICBpZiAoUHlfVFlQRShtYXBwaW5nKSA9PSAmRW5jb2RpbmdNYXBUeXBlKSB7Ci0gICAgICAgICAgICBpbnQgcmVzID0gZW5jb2RpbmdfbWFwX2xvb2t1cChwW2NvbGxlbmRwb3NdLCBtYXBwaW5nKTsKLSAgICAgICAgICAgIGlmIChyZXMgIT0gLTEpCisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgY29sbGVuZHBvcyk7CisgICAgICAgICAgICB2YWwgPSBlbmNvZGluZ19tYXBfbG9va3VwKGNoLCBtYXBwaW5nKTsKKyAgICAgICAgICAgIGlmICh2YWwgIT0gLTEpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICArK2NvbGxlbmRwb3M7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIHJlcCA9IGNoYXJtYXBlbmNvZGVfbG9va3VwKHBbY29sbGVuZHBvc10sIG1hcHBpbmcpOworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgY29sbGVuZHBvcyk7CisgICAgICAgIHJlcCA9IGNoYXJtYXBlbmNvZGVfbG9va3VwKGNoLCBtYXBwaW5nKTsKICAgICAgICAgaWYgKHJlcD09TlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgZWxzZSBpZiAocmVwIT1QeV9Ob25lKSB7CkBAIC01NzI1LDcgKzgwMTcsNyBAQAogICAgIH0KICAgICBzd2l0Y2ggKCprbm93bl9lcnJvckhhbmRsZXIpIHsKICAgICBjYXNlIDE6IC8qIHN0cmljdCAqLwotICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHAsIHNpemUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KICAgICAgICAgZm9yIChjb2xscG9zID0gY29sbHN0YXJ0cG9zOyBjb2xscG9zPGNvbGxlbmRwb3M7ICsrY29sbHBvcykgewpAQCAtNTczNCw3ICs4MDI2LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh4PT1lbmNfRkFJTEVEKSB7Ci0gICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCBwLCBzaXplLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01NzQ3LDEzICs4MDM5LDEzIEBACiAgICAgICAgIGZvciAoY29sbHBvcyA9IGNvbGxzdGFydHBvczsgY29sbHBvcyA8IGNvbGxlbmRwb3M7ICsrY29sbHBvcykgewogICAgICAgICAgICAgY2hhciBidWZmZXJbMisyOSsxKzFdOwogICAgICAgICAgICAgY2hhciAqY3A7Ci0gICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiYjJWQ7IiwgKGludClwW2NvbGxwb3NdKTsKKyAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJiMlZDsiLCAoaW50KVB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgY29sbHBvcykpOwogICAgICAgICAgICAgZm9yIChjcCA9IGJ1ZmZlcjsgKmNwOyArK2NwKSB7CiAgICAgICAgICAgICAgICAgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KCpjcCwgbWFwcGluZywgcmVzLCByZXNwb3MpOwogICAgICAgICAgICAgICAgIGlmICh4PT1lbmNfRVhDRVBUSU9OKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeD09ZW5jX0ZBSUxFRCkgewotICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHAsIHNpemUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC01NzYyLDcgKzgwNTQsNyBAQAogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCBlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCBwLCBzaXplLCBleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCB1bmljb2RlLCBleGNlcHRpb25PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsICZuZXdwb3MpOwogICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNTc4NiwxNSArODA3OCwyMyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCi0gICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVwdW5pY29kZSk7Ci0gICAgICAgIGZvciAodW5pMiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHVuaWNvZGUpOyByZXBzaXplLS0+MDsgKyt1bmkyKSB7Ci0gICAgICAgICAgICB4ID0gY2hhcm1hcGVuY29kZV9vdXRwdXQoKnVuaTIsIG1hcHBpbmcsIHJlcywgcmVzcG9zKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXB1bmljb2RlKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcHVuaWNvZGUpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVwdW5pY29kZSk7CisgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHJlcHNpemU7IGluZGV4KyspIHsKKyAgICAgICAgICAgIFB5X1VDUzQgcmVwY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpbmRleCk7CisgICAgICAgICAgICB4ID0gY2hhcm1hcGVuY29kZV9vdXRwdXQocmVwY2gsIG1hcHBpbmcsIHJlcywgcmVzcG9zKTsKICAgICAgICAgICAgIGlmICh4PT1lbmNfRVhDRVBUSU9OKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHg9PWVuY19GQUlMRUQpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCBwLCBzaXplLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01ODA0LDE1ICs4MTA0LDE2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIC8qIG91dHB1dCBvYmplY3QgKi8KICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICAvKiBjdXJyZW50IGlucHV0IHBvc2l0aW9uICovCiAgICAgUHlfc3NpemVfdCBpbnBvcyA9IDA7CisgICAgUHlfc3NpemVfdCBzaXplOwogICAgIC8qIGN1cnJlbnQgb3V0cHV0IHBvc2l0aW9uICovCiAgICAgUHlfc3NpemVfdCByZXNwb3MgPSAwOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwpAQCAtNTgyMiw5ICs4MTIzLDEzIEBACiAgICAgICogMz1pZ25vcmUsIDQ9eG1sY2hhcnJlZnJlcGxhY2UgKi8KICAgICBpbnQga25vd25fZXJyb3JIYW5kbGVyID0gLTE7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisKICAgICAvKiBEZWZhdWx0IHRvIExhdGluLTEgKi8KICAgICBpZiAobWFwcGluZyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxhdGluMShwLCBzaXplLCBlcnJvcnMpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbmNvZGVfdWNzMSh1bmljb2RlLCBlcnJvcnMsIDI1Nik7CiAKICAgICAvKiBhbGxvY2F0ZSBlbm91Z2ggZm9yIGEgc2ltcGxlIGVuY29kaW5nIHdpdGhvdXQKICAgICAgICByZXBsYWNlbWVudHMsIGlmIHdlIG5lZWQgbW9yZSwgd2UnbGwgcmVzaXplICovCkBAIC01ODM1LDEyICs4MTQwLDEzIEBACiAgICAgICAgIHJldHVybiByZXM7CiAKICAgICB3aGlsZSAoaW5wb3M8c2l6ZSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBpbnBvcyk7CiAgICAgICAgIC8qIHRyeSB0byBlbmNvZGUgaXQgKi8KLSAgICAgICAgY2hhcm1hcGVuY29kZV9yZXN1bHQgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KHBbaW5wb3NdLCBtYXBwaW5nLCAmcmVzLCAmcmVzcG9zKTsKKyAgICAgICAgY2hhcm1hcGVuY29kZV9yZXN1bHQgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KGNoLCBtYXBwaW5nLCAmcmVzLCAmcmVzcG9zKTsKICAgICAgICAgaWYgKHg9PWVuY19FWENFUFRJT04pIC8qIGVycm9yICovCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIGlmICh4PT1lbmNfRkFJTEVEKSB7IC8qIHVuZW5jb2RhYmxlIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgaWYgKGNoYXJtYXBfZW5jb2RpbmdfZXJyb3IocCwgc2l6ZSwgJmlucG9zLCBtYXBwaW5nLAorICAgICAgICAgICAgaWYgKGNoYXJtYXBfZW5jb2RpbmdfZXJyb3IodW5pY29kZSwgJmlucG9zLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrbm93bl9lcnJvckhhbmRsZXIsICZlcnJvckhhbmRsZXIsIGVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXMsICZyZXNwb3MpKSB7CkBAIC01ODY4LDI4ICs4MTc0LDQzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcpCisvKiBEZXByZWNhdGVkICovCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAodW5pY29kZSwgbWFwcGluZywgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkgfHwgbWFwcGluZyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcCh1bmljb2RlLCBtYXBwaW5nLCBOVUxMKTsKIH0KIAogLyogY3JlYXRlIG9yIGFkanVzdCBhIFVuaWNvZGVUcmFuc2xhdGVFcnJvciAqLwotc3RhdGljIHZvaWQgbWFrZV90cmFuc2xhdGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCitzdGF0aWMgdm9pZAorbWFrZV90cmFuc2xhdGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKSB7Ci0gICAgICAgICpleGNlcHRpb25PYmplY3QgPSBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9DcmVhdGUoCi0gICAgICAgICAgICB1bmljb2RlLCBzaXplLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOworICAgICAgICAqZXhjZXB0aW9uT2JqZWN0ID0gX1B5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0NyZWF0ZSgKKyAgICAgICAgICAgIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQoKmV4Y2VwdGlvbk9iamVjdCwgc3RhcnRwb3MpKQpAQCAtNTkwNiwxMyArODIyNywxNCBAQAogfQogCiAvKiByYWlzZXMgYSBVbmljb2RlVHJhbnNsYXRlRXJyb3IgKi8KLXN0YXRpYyB2b2lkIHJhaXNlX3RyYW5zbGF0ZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKK3N0YXRpYyB2b2lkCityYWlzZV90cmFuc2xhdGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBtYWtlX3RyYW5zbGF0ZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBzaXplLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOwogICAgIGlmICgqZXhjZXB0aW9uT2JqZWN0ICE9IE5VTEwpCiAgICAgICAgIFB5Q29kZWNfU3RyaWN0RXJyb3JzKCpleGNlcHRpb25PYmplY3QpOwogfQpAQCAtNTkyMSwxMiArODI0MywxMyBAQAogICAgYnVpbGQgYXJndW1lbnRzLCBjYWxsIHRoZSBjYWxsYmFjayBhbmQgY2hlY2sgdGhlIGFyZ3VtZW50cywKICAgIHB1dCB0aGUgcmVzdWx0IGludG8gbmV3cG9zIGFuZCByZXR1cm4gdGhlIHJlcGxhY2VtZW50IHN0cmluZywgd2hpY2gKICAgIGhhcyB0byBiZSBmcmVlZCBieSB0aGUgY2FsbGVyICovCi1zdGF0aWMgUHlPYmplY3QgKnVuaWNvZGVfdHJhbnNsYXRlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX3RyYW5zbGF0ZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqbmV3cG9zKQogewogICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47dHJhbnNsYXRpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKIApAQCAtNTk0MSw3ICs4MjY0LDcgQEAKICAgICB9CiAKICAgICBtYWtlX3RyYW5zbGF0ZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBzaXplLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOwogICAgIGlmICgqZXhjZXB0aW9uT2JqZWN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC01OTYwLDEwICs4MjgzLDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoaV9uZXdwb3M8MCkKLSAgICAgICAgKm5ld3BvcyA9IHNpemUraV9uZXdwb3M7CisgICAgICAgICpuZXdwb3MgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKStpX25ld3BvczsKICAgICBlbHNlCiAgICAgICAgICpuZXdwb3MgPSBpX25ld3BvczsKLSAgICBpZiAoKm5ld3BvczwwIHx8ICpuZXdwb3M+c2l6ZSkgeworICAgIGlmICgqbmV3cG9zPDAgfHwgKm5ld3Bvcz5QeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW5kZXhFcnJvciwgInBvc2l0aW9uICV6ZCBmcm9tIGVycm9yIGhhbmRsZXIgb3V0IG9mIGJvdW5kcyIsICpuZXdwb3MpOwogICAgICAgICBQeV9ERUNSRUYocmVzdHVwbGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU5NzYsOCArODI5OSw4IEBACiAvKiBMb29rdXAgdGhlIGNoYXJhY3RlciBjaCBpbiB0aGUgbWFwcGluZyBhbmQgcHV0IHRoZSByZXN1bHQgaW4gcmVzdWx0LAogICAgd2hpY2ggbXVzdCBiZSBkZWNyZWZlZCBieSB0aGUgY2FsbGVyLgogICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IgKi8KLXN0YXRpYwotaW50IGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKFB5X1VOSUNPREUgYywgUHlPYmplY3QgKm1hcHBpbmcsIFB5T2JqZWN0ICoqcmVzdWx0KQorc3RhdGljIGludAorY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoUHlfVUNTNCBjLCBQeU9iamVjdCAqbWFwcGluZywgUHlPYmplY3QgKipyZXN1bHQpCiB7CiAgICAgUHlPYmplY3QgKncgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpYyk7CiAgICAgUHlPYmplY3QgKng7CkBAIC02MDI2LDIwICs4MzQ5LDIxIEBACiAvKiBlbnN1cmUgdGhhdCAqb3V0b2JqIGlzIGF0IGxlYXN0IHJlcXVpcmVkc2l6ZSBjaGFyYWN0ZXJzIGxvbmcsCiAgICBpZiBub3QgcmVhbGxvY2F0ZSBhbmQgYWRqdXN0IHZhcmlvdXMgc3RhdGUgdmFyaWFibGVzLgogICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IgKi8KLXN0YXRpYwotaW50IGNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKFB5T2JqZWN0ICoqb3V0b2JqLCBQeV9VTklDT0RFICoqb3V0cCwKK3N0YXRpYyBpbnQKK2NoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKFB5X1VDUzQgKipvdXRvYmosIFB5X3NzaXplX3QgKnBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplKQogewotICAgIFB5X3NzaXplX3Qgb2xkc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSgqb3V0b2JqKTsKKyAgICBQeV9zc2l6ZV90IG9sZHNpemUgPSAqcHNpemU7CisgICAgUHlfVUNTNCAqbmV3X291dG9iajsKICAgICBpZiAocmVxdWlyZWRzaXplID4gb2xkc2l6ZSkgewotICAgICAgICAvKiByZW1lbWJlciBvbGQgb3V0cHV0IHBvc2l0aW9uICovCi0gICAgICAgIFB5X3NzaXplX3Qgb3V0cG9zID0gKm91dHAtUHlVbmljb2RlX0FTX1VOSUNPREUoKm91dG9iaik7CiAgICAgICAgIC8qIGV4cG9uZW50aWFsbHkgb3ZlcmFsbG9jYXRlIHRvIG1pbmltaXplIHJlYWxsb2NhdGlvbnMgKi8KICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA8IDIgKiBvbGRzaXplKQogICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMiAqIG9sZHNpemU7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKG91dG9iaiwgcmVxdWlyZWRzaXplKSA8IDApCisgICAgICAgIG5ld19vdXRvYmogPSBQeU1lbV9SZWFsbG9jKCpvdXRvYmosIHJlcXVpcmVkc2l6ZSAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIGlmIChuZXdfb3V0b2JqID09IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICpvdXRwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKm91dG9iaikgKyBvdXRwb3M7CisgICAgICAgICpvdXRvYmogPSBuZXdfb3V0b2JqOworICAgICAgICAqcHNpemUgPSByZXF1aXJlZHNpemU7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtNjA0OSwzOCArODM3Myw0NCBAQAogICAgdW5kZWZpbmVkIChpbiB3aGljaCBjYXNlIG5vIGNoYXJhY3RlciB3YXMgd3JpdHRlbikuCiAgICBUaGUgY2FsbGVkIG11c3QgZGVjcmVmIHJlc3VsdC4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yLiAqLwotc3RhdGljCi1pbnQgY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoY29uc3QgUHlfVU5JQ09ERSAqc3RhcnRpbnAsIGNvbnN0IFB5X1VOSUNPREUgKmN1cmlucCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGluc2l6ZSwgUHlPYmplY3QgKm1hcHBpbmcsIFB5T2JqZWN0ICoqb3V0b2JqLCBQeV9VTklDT0RFICoqb3V0cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnJlcykKK3N0YXRpYyBpbnQKK2NoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KFB5T2JqZWN0ICppbnB1dCwgUHlfc3NpemVfdCBpcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsIFB5X1VDUzQgKipvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpvc2l6ZSwgUHlfc3NpemVfdCAqb3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcmVzKQogewotICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cCgqY3VyaW5wLCBtYXBwaW5nLCByZXMpKQorICAgIFB5X1VDUzQgY3VyaW5wID0gUHlVbmljb2RlX1JFQURfQ0hBUihpbnB1dCwgaXBvcyk7CisgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKGN1cmlucCwgbWFwcGluZywgcmVzKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICgqcmVzPT1OVUxMKSB7CiAgICAgICAgIC8qIG5vdCBmb3VuZCA9PiBkZWZhdWx0IHRvIDE6MSBtYXBwaW5nICovCi0gICAgICAgICooKm91dHApKysgPSAqY3VyaW5wOworICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IGN1cmlucDsKICAgICB9CiAgICAgZWxzZSBpZiAoKnJlcz09UHlfTm9uZSkKICAgICAgICAgOwogICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjaygqcmVzKSkgewogICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwotICAgICAgICAqKCpvdXRwKSsrID0gKFB5X1VOSUNPREUpUHlMb25nX0FTX0xPTkcoKnJlcyk7CisgICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gKFB5X1VDUzQpUHlMb25nX0FTX0xPTkcoKnJlcyk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjaygqcmVzKSkgewotICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoKnJlcyk7CisgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSgqcmVzKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpyZXMpOwogICAgICAgICBpZiAocmVwc2l6ZT09MSkgewogICAgICAgICAgICAgLyogbm8gb3ZlcmZsb3cgY2hlY2ssIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBzcGFjZSBpcyBlbm91Z2ggKi8KLSAgICAgICAgICAgICooKm91dHApKysgPSAqUHlVbmljb2RlX0FTX1VOSUNPREUoKnJlcyk7CisgICAgICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IFB5VW5pY29kZV9SRUFEX0NIQVIoKnJlcywgMCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAocmVwc2l6ZSE9MCkgewogICAgICAgICAgICAgLyogbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplID0gKCpvdXRwLVB5VW5pY29kZV9BU19VTklDT0RFKCpvdXRvYmopKSArCi0gICAgICAgICAgICAgICAgKGluc2l6ZSAtIChjdXJpbnAtc3RhcnRpbnApKSArCisgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZSA9ICpvcG9zICsKKyAgICAgICAgICAgICAgICAoUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpIC0gaXBvcykgKwogICAgICAgICAgICAgICAgIHJlcHNpemUgLSAxOwotICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKG91dG9iaiwgb3V0cCwgcmVxdWlyZWRzaXplKSkKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShvdXRwdXQsIG9zaXplLCByZXF1aXJlZHNpemUpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIG1lbWNweSgqb3V0cCwgUHlVbmljb2RlX0FTX1VOSUNPREUoKnJlcyksIHNpemVvZihQeV9VTklDT0RFKSpyZXBzaXplKTsKLSAgICAgICAgICAgICpvdXRwICs9IHJlcHNpemU7CisgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCByZXBzaXplOyBpKyspCisgICAgICAgICAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSBQeVVuaWNvZGVfUkVBRF9DSEFSKCpyZXMsIGkpOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKQEAgLTYwODgsMjAgKzg0MTgsMjEgQEAKICAgICByZXR1cm4gMDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChQeU9iamVjdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIC8qIG91dHB1dCBvYmplY3QgKi8KLSAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKLSAgICAvKiBwb2ludGVycyB0byB0aGUgYmVnaW5uaW5nIGFuZCBlbmQrMSBvZiBpbnB1dCAqLwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnN0YXJ0cCA9IHA7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqZW5kcCA9IHAgKyBzaXplOwotICAgIC8qIHBvaW50ZXIgaW50byB0aGUgb3V0cHV0ICovCi0gICAgUHlfVU5JQ09ERSAqc3RyOworICAgIC8qIGlucHV0IG9iamVjdCAqLworICAgIGNoYXIgKmlkYXRhOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgaTsKKyAgICBpbnQga2luZDsKKyAgICAvKiBvdXRwdXQgYnVmZmVyICovCisgICAgUHlfVUNTNCAqb3V0cHV0ID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG9zaXplOworICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgLyogY3VycmVudCBvdXRwdXQgcG9zaXRpb24gKi8KLSAgICBQeV9zc2l6ZV90IHJlc3BvcyA9IDA7CisgICAgUHlfc3NpemVfdCBvcG9zOwogICAgIGNoYXIgKnJlYXNvbiA9ICJjaGFyYWN0ZXIgbWFwcyB0byA8dW5kZWZpbmVkPiI7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CkBAIC02MTE1LDM4ICs4NDQ2LDUyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaW5wdXQpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZGF0YSA9IChjaGFyKilQeVVuaWNvZGVfREFUQShpbnB1dCk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGlucHV0KTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpOworICAgIGkgPSAwOworCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICBQeV9JTkNSRUYoaW5wdXQpOworICAgICAgICByZXR1cm4gaW5wdXQ7CisgICAgfQorCiAgICAgLyogYWxsb2NhdGUgZW5vdWdoIGZvciBhIHNpbXBsZSAxOjEgdHJhbnNsYXRpb24gd2l0aG91dAogICAgICAgIHJlcGxhY2VtZW50cywgaWYgd2UgbmVlZCBtb3JlLCB3ZSdsbCByZXNpemUgKi8KLSAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc2l6ZSk7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQorICAgIG9zaXplID0gc2l6ZTsKKyAgICBvdXRwdXQgPSBQeU1lbV9NYWxsb2Mob3NpemUgKiBzaXplb2YoUHlfVUNTNCkpOworICAgIG9wb3MgPSAwOworICAgIGlmIChvdXRwdXQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICBzdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpOworICAgIH0KIAotICAgIHdoaWxlIChwPGVuZHApIHsKKyAgICB3aGlsZSAoaTxzaXplKSB7CiAgICAgICAgIC8qIHRyeSB0byBlbmNvZGUgaXQgKi8KICAgICAgICAgUHlPYmplY3QgKnggPSBOVUxMOwotICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoc3RhcnRwLCBwLCBzaXplLCBtYXBwaW5nLCAmcmVzLCAmc3RyLCAmeCkpIHsKKyAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KGlucHV0LCBpLCBtYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB1dCwgJm9zaXplLCAmb3BvcywgJngpKSB7CiAgICAgICAgICAgICBQeV9YREVDUkVGKHgpOwogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9CiAgICAgICAgIFB5X1hERUNSRUYoeCk7CiAgICAgICAgIGlmICh4IT1QeV9Ob25lKSAvKiBpdCB3b3JrZWQgPT4gYWRqdXN0IGlucHV0IHBvaW50ZXIgKi8KLSAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICsraTsKICAgICAgICAgZWxzZSB7IC8qIHVudHJhbnNsYXRhYmxlIGNoYXJhY3RlciAqLwogICAgICAgICAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOyAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KICAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqdW5pMjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgdW5pMjsKICAgICAgICAgICAgIC8qIHN0YXJ0cG9zIGZvciBjb2xsZWN0aW5nIHVudHJhbnNsYXRhYmxlIGNoYXJzICovCi0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsc3RhcnQgPSBwOwotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqY29sbGVuZCA9IHArMTsKLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmNvbGw7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxzdGFydCA9IGk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlbmQgPSBpKzE7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGw7CiAKICAgICAgICAgICAgIC8qIGZpbmQgYWxsIHVudHJhbnNsYXRhYmxlIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgIHdoaWxlIChjb2xsZW5kIDwgZW5kcCkgewotICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cCgqY29sbGVuZCwgbWFwcGluZywgJngpKQorICAgICAgICAgICAgd2hpbGUgKGNvbGxlbmQgPCBzaXplKSB7CisgICAgICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKFB5VW5pY29kZV9SRUFEKGtpbmQsaWRhdGEsIGNvbGxlbmQpLCBtYXBwaW5nLCAmeCkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHgpOwogICAgICAgICAgICAgICAgIGlmICh4IT1QeV9Ob25lKQpAQCAtNjE2OSw4MCArODUxNCw5NCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKICAgICAgICAgICAgIGNhc2UgMTogLyogc3RyaWN0ICovCi0gICAgICAgICAgICAgICAgcmFpc2VfdHJhbnNsYXRlX2V4Y2VwdGlvbigmZXhjLCBzdGFydHAsIHNpemUsIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX3RyYW5zbGF0ZV9leGNlcHRpb24oJmV4YywgaW5wdXQsIGNvbGxzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlbmQsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCiAgICAgICAgICAgICAgICAgLyogTm8gbmVlZCB0byBjaGVjayBmb3Igc3BhY2UsIHRoaXMgaXMgYSAxOjEgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGNvbGwgPSBjb2xsc3RhcnQ7IGNvbGw8Y29sbGVuZDsgKytjb2xsKQotICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAnPyc7CisgICAgICAgICAgICAgICAgZm9yIChjb2xsID0gY29sbHN0YXJ0OyBjb2xsPGNvbGxlbmQ7IGNvbGwrKykKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W29wb3MrK10gPSAnPyc7CiAgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgICAgICAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLwotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGkgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSA0OiAvKiB4bWxjaGFycmVmcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQ7IHAgPCBjb2xsZW5kOyArK3ApIHsKKyAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIGkpICovCisgICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3A7Ci0gICAgICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJiMlZDsiLCAoaW50KSpwKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKCZyZXMsICZzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyLVB5VW5pY29kZV9BU19VTklDT0RFKHJlcykpK3N0cmxlbihidWZmZXIpKyhlbmRwLWNvbGxlbmQpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICImIyVkOyIsIFB5VW5pY29kZV9SRUFEKGtpbmQsIGlkYXRhLCBpKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmb3V0cHV0LCAmb3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcG9zK3N0cmxlbihidWZmZXIpKyhzaXplLWNvbGxlbmQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgZm9yIChjcCA9IGJ1ZmZlcjsgKmNwOyArK2NwKQotICAgICAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gKmNwOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0W29wb3MrK10gPSAqY3A7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGkgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24sIHN0YXJ0cCwgc2l6ZSwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LXN0YXJ0cCwgY29sbGVuZC1zdGFydHAsICZuZXdwb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24sIGlucHV0LCAmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOwogICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAgKi8KLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmcmVzLCAmc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyLVB5VW5pY29kZV9BU19VTklDT0RFKHJlcykpK3JlcHNpemUrKGVuZHAtY29sbGVuZCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZm9yICh1bmkyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7IHJlcHNpemUtLT4wOyArK3VuaTIpCi0gICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICp1bmkyOwotICAgICAgICAgICAgICAgIHAgPSBzdGFydHAgKyBuZXdwb3M7CisgICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCisgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmb3V0cHV0LCAmb3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wb3MrcmVwc2l6ZSsoc2l6ZS1jb2xsZW5kKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAodW5pMiA9IDA7IHJlcHNpemUtLT4wOyArK3VuaTIpCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXB1bmljb2RlLCB1bmkyKTsKKyAgICAgICAgICAgICAgICBpID0gbmV3cG9zOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAvKiBSZXNpemUgaWYgd2UgYWxsb2NhdGVkIHRvIG11Y2ggKi8KLSAgICByZXNwb3MgPSBzdHItUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKLSAgICBpZiAocmVzcG9zPFB5VW5pY29kZV9HRVRfU0laRShyZXMpKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZyZXMsIHJlc3BvcykgPCAwKQotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgIH0KKyAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBvdXRwdXQsIG9wb3MpOworICAgIGlmICghcmVzKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYocmVzKTsKKyAgICBQeU1lbV9GcmVlKG91dHB1dCk7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9UcmFuc2xhdGUoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyogRGVwcmVjYXRlZC4gVXNlIFB5VW5pY29kZV9UcmFuc2xhdGUgaW5zdGVhZC4gKi8KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAodW5pY29kZSwgbWFwcGluZywgZXJyb3JzKTsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX1RyYW5zbGF0ZShQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtNjI1MSwxNzkgKzg2MTAsMzI0IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeV9VQ1M0CitmaXhfZGVjaW1hbF9hbmRfc3BhY2VfdG9fYXNjaWkoUHlPYmplY3QgKnNlbGYpCit7CisgICAgLyogTm8gbmVlZCB0byBjYWxsIFB5VW5pY29kZV9SRUFEWShzZWxmKSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25seQorICAgICAgIGNhbGxlZCBhcyBhIGNhbGxiYWNrIGZyb20gZml4dXAoKSB3aGljaCBkb2VzIGl0IGFscmVhZHkuICovCisgICAgY29uc3QgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBjb25zdCBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAxMjcsIGNoLCBmaXhlZDsKKyAgICBpbnQgbW9kaWZpZWQgPSAwOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBmaXhlZCA9IDA7CisgICAgICAgIGlmIChjaCA+IDEyNykgeworICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCisgICAgICAgICAgICAgICAgZml4ZWQgPSAnICc7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVjaW1hbCA+PSAwKQorICAgICAgICAgICAgICAgICAgICBmaXhlZCA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZml4ZWQgIT0gMCkgeworICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gMTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgZml4ZWQpOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpLCBmaXhlZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGNoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAobW9kaWZpZWQpID8gbWF4Y2hhciA6IDA7Cit9CisKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkgPD0gMTI3KSB7CisgICAgICAgIC8qIElmIHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBBU0NJSSwganVzdCByZXR1cm4gdGhlIHNhbWUgc3RyaW5nICovCisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgfQorICAgIHJldHVybiBmaXh1cCh1bmljb2RlLCBmaXhfZGVjaW1hbF9hbmRfc3BhY2VfdG9fYXNjaWkpOworfQorCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoUHlfVU5JQ09ERSAqcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5X1VOSUNPREUgKnA7IC8qIHdyaXRlIHBvaW50ZXIgaW50byByZXN1bHQgKi8KKyAgICBQeU9iamVjdCAqZGVjaW1hbDsKICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgLyogQ29weSB0byBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSAoUHlPYmplY3QgKilfUHlVbmljb2RlX05ldyhsZW5ndGgpOwotICAgIFB5X1VOSUNPREVfQ09QWShQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpLCBzLCBsZW5ndGgpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICAvKiBJdGVyYXRlIG92ZXIgY29kZSBwb2ludHMgKi8KKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBtYXhjaGFyID0gMTI3OwogICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBQeV9VTklDT0RFIGNoID1zW2ldOworICAgICAgICBQeV9VTklDT0RFIGNoID0gc1tpXTsKICAgICAgICAgaWYgKGNoID4gMTI3KSB7CiAgICAgICAgICAgICBpbnQgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCi0gICAgICAgICAgICAgICAgcFtpXSA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgICAgICAgICAgY2ggPSAnMCcgKyBkZWNpbWFsOworICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGNoKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgLyogQ29weSB0byBhIG5ldyBzdHJpbmcgKi8KKyAgICBkZWNpbWFsID0gUHlVbmljb2RlX05ldyhsZW5ndGgsIG1heGNoYXIpOworICAgIGlmIChkZWNpbWFsID09IE5VTEwpCisgICAgICAgIHJldHVybiBkZWNpbWFsOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChkZWNpbWFsKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoZGVjaW1hbCk7CisgICAgLyogSXRlcmF0ZSBvdmVyIGNvZGUgcG9pbnRzICovCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFB5X1VOSUNPREUgY2ggPSBzW2ldOworICAgICAgICBpZiAoY2ggPiAxMjcpIHsKKyAgICAgICAgICAgIGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOworICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKKyAgICAgICAgICAgICAgICBjaCA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgIH0KKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGksIGNoKTsKKyAgICB9CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KGRlY2ltYWwpOwogfQogLyogLS0tIERlY2ltYWwgRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLWludCBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbChQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitpbnQKK1B5VW5pY29kZV9FbmNvZGVEZWNpbWFsKFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICBQeV9VTklDT0RFICpwLCAqZW5kOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gImRlY2ltYWwiOwotICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJpbnZhbGlkIGRlY2ltYWwgVW5pY29kZSBzdHJpbmciOwotICAgIC8qIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgdXNlZCBmb3IgY2FjaGluZyBzdHJpbmcgY29tcGFyaXNvbnMKLSAgICAgKiAtMT1ub3QgaW5pdGlhbGl6ZWQsIDA9dW5rbm93biwgMT1zdHJpY3QsIDI9cmVwbGFjZSwgMz1pZ25vcmUsIDQ9eG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICBpbnQga25vd25fZXJyb3JIYW5kbGVyID0gLTE7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgUHlfc3NpemVfdCBpOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCiAgICAgaWYgKG91dHB1dCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBwID0gczsKLSAgICBlbmQgPSBzICsgbGVuZ3RoOwotICAgIHdoaWxlIChwIDwgZW5kKSB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgY2ggPSAqcDsKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIGxlbmd0aCk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKworICAgIGZvciAoaT0wOyBpIDwgbGVuZ3RoOyApIHsKKyAgICAgICAgUHlPYmplY3QgKmV4YzsKKyAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgaW50IGRlY2ltYWw7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlOwotICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7Ci0gICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgICAgICBQeV9VTklDT0RFICp1bmkyOwotICAgICAgICBQeV9VTklDT0RFICpjb2xsc3RhcnQ7Ci0gICAgICAgIFB5X1VOSUNPREUgKmNvbGxlbmQ7CisgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3M7CisKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAogICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1NQQUNFKGNoKSkgewogICAgICAgICAgICAgKm91dHB1dCsrID0gJyAnOwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkgewogICAgICAgICAgICAgKm91dHB1dCsrID0gJzAnICsgZGVjaW1hbDsKLSAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICgwIDwgY2ggJiYgY2ggPCAyNTYpIHsKICAgICAgICAgICAgICpvdXRwdXQrKyA9IChjaGFyKWNoOwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgLyogQWxsIG90aGVyIGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQgdW5lbmNvZGFibGUgKi8KLSAgICAgICAgY29sbHN0YXJ0ID0gcDsKLSAgICAgICAgZm9yIChjb2xsZW5kID0gcCsxOyBjb2xsZW5kIDwgZW5kOyBjb2xsZW5kKyspIHsKLSAgICAgICAgICAgIGlmICgoMCA8ICpjb2xsZW5kICYmICpjb2xsZW5kIDwgMjU2KSB8fAotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRSgqY29sbGVuZCkgfHwKLSAgICAgICAgICAgICAgICAwIDw9IFB5X1VOSUNPREVfVE9ERUNJTUFMKCpjb2xsZW5kKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAvKiBjYWNoZSBjYWxsYmFjayBuYW1lIGxvb2t1cAotICAgICAgICAgKiAoaWYgbm90IGRvbmUgeWV0LCBpLmUuIGl0J3MgdGhlIGZpcnN0IGVycm9yKSAqLwotICAgICAgICBpZiAoa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewotICAgICAgICAgICAgaWYgKChlcnJvcnM9PU5VTEwpIHx8ICghc3RyY21wKGVycm9ycywgInN0cmljdCIpKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAxOwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMjsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikpCi0gICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMzsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSA0OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKLSAgICAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KLSAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHMsIGxlbmd0aCwgY29sbHN0YXJ0LXMsIGNvbGxlbmQtcywgcmVhc29uKTsKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCi0gICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQ7IHAgPCBjb2xsZW5kOyArK3ApCi0gICAgICAgICAgICAgICAgKm91dHB1dCsrID0gJz8nOwotICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCi0gICAgICAgICAgICBwID0gY29sbGVuZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCi0gICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQ7IHAgPCBjb2xsZW5kOyArK3ApCi0gICAgICAgICAgICAgICAgb3V0cHV0ICs9IHNwcmludGYob3V0cHV0LCAiJiMlZDsiLCAoaW50KSpwKTsKLSAgICAgICAgICAgIHAgPSBjb2xsZW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHMsIGxlbmd0aCwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQtcywgY29sbGVuZC1zLCAmbmV3cG9zKTsKLSAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socmVwdW5pY29kZSkpIHsKLSAgICAgICAgICAgICAgICAvKiBCeXRlIHJlc3VsdHMgbm90IHN1cHBvcnRlZCwgc2luY2UgdGhleSBoYXZlIG5vIGRlY2ltYWwgcHJvcGVydHkuICovCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVycm9yIGhhbmRsZXIgc2hvdWxkIHJldHVybiB1bmljb2RlIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICAqLwotICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgIGZvciAodW5pMiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHVuaWNvZGUpOyByZXBzaXplLS0+MDsgKyt1bmkyKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICp1bmkyOwotICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQotICAgICAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAnICc7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlY2ltYWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChjaCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAnMCcgKyBkZWNpbWFsOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgwIDwgY2ggJiYgY2ggPCAyNTYpCi0gICAgICAgICAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAoY2hhciljaDsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBsZW5ndGgsIGNvbGxzdGFydC1zLCBjb2xsZW5kLXMsIHJlYXNvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwID0gcyArIG5ld3BvczsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgfQorCisgICAgICAgIHN0YXJ0cG9zID0gaTsKKyAgICAgICAgZXhjID0gTlVMTDsKKyAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCAiZGVjaW1hbCIsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRwb3MsIHN0YXJ0cG9zKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZGVjaW1hbCBVbmljb2RlIHN0cmluZyIpOworICAgICAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICAvKiAwLXRlcm1pbmF0ZSB0aGUgb3V0cHV0IHN0cmluZyAqLwogICAgICpvdXRwdXQrKyA9ICdcMCc7Ci0gICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgcmV0dXJuIDA7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIHJldHVybiAtMTsKIH0KIAogLyogLS0tIEhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLSNpbmNsdWRlICJzdHJpbmdsaWIvdW5pY29kZWRlZnMuaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorc3RhdGljIFB5X3NzaXplX3QKK2FueV9maW5kX3NsaWNlKGludCBkaXJlY3Rpb24sIFB5T2JqZWN0KiBzMSwgUHlPYmplY3QqIHMyLAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQoreworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCByZXN1bHQ7CiAKLSNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHMxKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHMyKTsKKyAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHMxKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoczIpOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoczEsIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgcmV0dXJuIC0yOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoczIsIGtpbmQpOworICAgIGlmICghYnVmMikgeworICAgICAgICBpZiAoa2luZDEgIT0ga2luZCkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoczEpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzMik7CiAKLSNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKLSNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nTG9jYWxlIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUKLSNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgorICAgIGlmIChkaXJlY3Rpb24gPiAwKSB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzMSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHMyKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9maW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVjczFsaWJfZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgcmVzdWx0ID0gdWNzMmxpYl9maW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3M0bGliX2ZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gLTI7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzMSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHMyKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9yZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB1Y3MxbGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3MybGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3M0bGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCk7IHJlc3VsdCA9IC0yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeV9zc2l6ZV90CitfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGluZGV4LAorICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCisgICAgdm9pZCAqZGlnaXRzLCBQeV9zc2l6ZV90IG5fZGlnaXRzLAorICAgIFB5X3NzaXplX3QgbWluX3dpZHRoLAorICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nLCBQeU9iamVjdCAqdGhvdXNhbmRzX3NlcCwKKyAgICBQeV9VQ1M0ICptYXhjaGFyKQoreworICAgIHVuc2lnbmVkIGludCBraW5kLCB0aG91c2FuZHNfc2VwX2tpbmQ7CisgICAgY2hhciAqZGF0YSwgKnRob3VzYW5kc19zZXBfZGF0YTsKKyAgICBQeV9zc2l6ZV90IHRob3VzYW5kc19zZXBfbGVuOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgaWYgKHVuaWNvZGUgIT0gTlVMTCkgeworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgIGRhdGEgPSAoY2hhciAqKSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSArIGluZGV4ICoga2luZDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKKyAgICAgICAgZGF0YSA9IE5VTEw7CisgICAgfQorICAgIHRob3VzYW5kc19zZXBfa2luZCA9IFB5VW5pY29kZV9LSU5EKHRob3VzYW5kc19zZXApOworICAgIHRob3VzYW5kc19zZXBfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHRob3VzYW5kc19zZXApOworICAgIHRob3VzYW5kc19zZXBfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGhvdXNhbmRzX3NlcCk7CisgICAgaWYgKHVuaWNvZGUgIT0gTlVMTCAmJiB0aG91c2FuZHNfc2VwX2tpbmQgIT0ga2luZCkgeworICAgICAgICBpZiAodGhvdXNhbmRzX3NlcF9raW5kIDwga2luZCkgeworICAgICAgICAgICAgdGhvdXNhbmRzX3NlcF9kYXRhID0gX1B5VW5pY29kZV9Bc0tpbmQodGhvdXNhbmRzX3NlcCwga2luZCk7CisgICAgICAgICAgICBpZiAoIXRob3VzYW5kc19zZXBfZGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkYXRhID0gX1B5VW5pY29kZV9Bc0tpbmQodW5pY29kZSwgdGhvdXNhbmRzX3NlcF9raW5kKTsKKyAgICAgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAodW5pY29kZSAhPSBOVUxMICYmIFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgIGxlbiA9IGFzY2lpbGliX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgICAgICAgICAgICAgIChQeV9VQ1MxICopIGRhdGEsIG5fYnVmZmVyLCAoUHlfVUNTMSAqKSBkaWdpdHMsIG5fZGlnaXRzLAorICAgICAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAgICAgKFB5X1VDUzEgKikgdGhvdXNhbmRzX3NlcF9kYXRhLCB0aG91c2FuZHNfc2VwX2xlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxlbiA9IHVjczFsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAgICAgKFB5X1VDUzEqKWRhdGEsIG5fYnVmZmVyLCAoUHlfVUNTMSopZGlnaXRzLCBuX2RpZ2l0cywKKyAgICAgICAgICAgICAgICBtaW5fd2lkdGgsIGdyb3VwaW5nLAorICAgICAgICAgICAgICAgIChQeV9VQ1MxICopIHRob3VzYW5kc19zZXBfZGF0YSwgdGhvdXNhbmRzX3NlcF9sZW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBsZW4gPSB1Y3MybGliX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgICAgICAgICAgKFB5X1VDUzIgKikgZGF0YSwgbl9idWZmZXIsIChQeV9VQ1MyICopIGRpZ2l0cywgbl9kaWdpdHMsCisgICAgICAgICAgICBtaW5fd2lkdGgsIGdyb3VwaW5nLAorICAgICAgICAgICAgKFB5X1VDUzIgKikgdGhvdXNhbmRzX3NlcF9kYXRhLCB0aG91c2FuZHNfc2VwX2xlbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIGxlbiA9IHVjczRsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAoUHlfVUNTNCAqKSBkYXRhLCBuX2J1ZmZlciwgKFB5X1VDUzQgKikgZGlnaXRzLCBuX2RpZ2l0cywKKyAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAoUHlfVUNTNCAqKSB0aG91c2FuZHNfc2VwX2RhdGEsIHRob3VzYW5kc19zZXBfbGVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh1bmljb2RlICE9IE5VTEwgJiYgdGhvdXNhbmRzX3NlcF9raW5kICE9IGtpbmQpIHsKKyAgICAgICAgaWYgKHRob3VzYW5kc19zZXBfa2luZCA8IGtpbmQpCisgICAgICAgICAgICBQeU1lbV9GcmVlKHRob3VzYW5kc19zZXBfZGF0YSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoZGF0YSk7CisgICAgfQorICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKKyAgICAgICAgKm1heGNoYXIgPSAxMjc7CisgICAgICAgIGlmIChsZW4gIT0gbl9kaWdpdHMpIHsKKyAgICAgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0aG91c2FuZHNfc2VwKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxlbjsKK30KKwogCiAvKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwogI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXApAQCAtNjQ0MCw3MiArODk0NCwxMDIgQEAKICAgICAgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CiAKLS8qIF9QeV9VTklDT0RFX05FWFQgaXMgYSBwcml2YXRlIG1hY3JvIHVzZWQgdG8gcmV0cmlldmUgdGhlIGNoYXJhY3RlciBwb2ludGVkCi0gKiBieSAncHRyJywgcG9zc2libHkgY29tYmluaW5nIHN1cnJvZ2F0ZSBwYWlycyBvbiBuYXJyb3cgYnVpbGRzLgotICogJ3B0cicgYW5kICdlbmQnIG11c3QgYmUgUHlfVU5JQ09ERSosIHdpdGggJ3B0cicgcG9pbnRpbmcgYXQgdGhlIGNoYXJhY3RlcgotICogdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYW5kICdlbmQnIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4KLSAqICgnZW5kJyBpcyB1c2VkIG9uIG5hcnJvdyBidWlsZHMgdG8gZGV0ZWN0IGEgbG9uZSBzdXJyb2dhdGUgYXQgdGhlCi0gKiBlbmQgb2YgdGhlIGJ1ZmZlciB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCB1bmNoYW5nZWQuKQotICogVGhlIHB0ciBhbmQgZW5kIGFyZ3VtZW50cyBzaG91bGQgYmUgc2lkZS1lZmZlY3QgZnJlZSBhbmQgcHRyIG11c3QgYW4gbHZhbHVlLgotICogVGhlIHR5cGUgb2YgdGhlIHJldHVybmVkIGNoYXIgaXMgYWx3YXlzIFB5X1VDUzQuCi0gKgotICogTm90ZTogdGhlIG1hY3JvIGFkdmFuY2VzIHB0ciB0byBuZXh0IGNoYXIsIHNvIGl0IG1pZ2h0IGhhdmUgc2lkZS1lZmZlY3RzCi0gKiAgICAgICAoZXNwZWNpYWxseSBpZiB1c2VkIHdpdGggb3RoZXIgbWFjcm9zKS4KLSAqLwotCi0vKiBoZWxwZXIgbWFjcm9zIHVzZWQgYnkgX1B5X1VOSUNPREVfTkVYVCAqLwotI2RlZmluZSBfUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERCRkYpCi0jZGVmaW5lIF9QeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoY2gpICgweERDMDAgPD0gY2ggJiYgY2ggPD0gMHhERkZGKQotLyogSm9pbiB0d28gc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHJldHVybiBhIHNpbmdsZSBQeV9VQ1M0IHZhbHVlLiAqLwotI2RlZmluZSBfUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaGlnaCwgbG93KSAgXAotICAgICgoKCgoUHlfVUNTNCkoaGlnaCkgJiAweDAzRkYpIDw8IDEwKSB8ICAgICAgXAotICAgICAgKChQeV9VQ1M0KShsb3cpICYgMHgwM0ZGKSkgKyAweDEwMDAwKQotCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0jZGVmaW5lIF9QeV9VTklDT0RFX05FWFQocHRyLCBlbmQpICoocHRyKSsrCi0jZWxzZQotI2RlZmluZSBfUHlfVU5JQ09ERV9ORVhUKHB0ciwgZW5kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAoKChfUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURSgqKHB0cikpICYmIChwdHIpIDwgKGVuZCkpICYmICAgICAgXAotICAgICAgICBfUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKChwdHIpWzFdKSkgPyAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICgocHRyKSArPSAyLF9QeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUygocHRyKVstMl0sIChwdHIpWy0xXSkpIDogXAotICAgICAgIChQeV9VQ1M0KSoocHRyKSsrKQotI2VuZGlmCi0KLVB5X3NzaXplX3QgUHlVbmljb2RlX0NvdW50KFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQorUHlfc3NpemVfdAorUHlVbmljb2RlX0NvdW50KFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwotICAgIFB5VW5pY29kZU9iamVjdCogc3RyX29iajsKLSAgICBQeVVuaWNvZGVPYmplY3QqIHN1Yl9vYmo7CisgICAgUHlPYmplY3QqIHN0cl9vYmo7CisgICAgUHlPYmplY3QqIHN1Yl9vYmo7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAotICAgIHN0cl9vYmogPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKKyAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoIXN0cl9vYmopCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBzdWJfb2JqID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7CisgICAgc3ViX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7CiAgICAgaWYgKCFzdWJfb2JqKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1Yl9vYmopID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHN0cl9vYmotPmxlbmd0aCk7Ci0gICAgcmVzdWx0ID0gc3RyaW5nbGliX2NvdW50KAotICAgICAgICBzdHJfb2JqLT5zdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yl9vYmotPnN0ciwgc3ViX29iai0+bGVuZ3RoLAotICAgICAgICBQWV9TU0laRV9UX01BWAotICAgICAgICApOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJfb2JqKTsKKyAgICBraW5kID0ga2luZDE7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJfb2JqKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkgeworICAgICAgICBpZiAoa2luZDIgPiBraW5kKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViX29iaiwga2luZCk7CisgICAgfQorICAgIGlmICghYnVmMikKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3ViX29iaik7CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cl9vYmopICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJfb2JqKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2NvdW50KAorICAgICAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICAgICApOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSB1Y3MxbGliX2NvdW50KAorICAgICAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3MybGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1MyKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3M0bGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1M0KilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7IHJlc3VsdCA9IDA7CisgICAgfQogCiAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKIAorICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworCiAgICAgcmV0dXJuIHJlc3VsdDsKKyAgb25FcnJvcjoKKyAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kICYmIGJ1ZjIpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisgICAgcmV0dXJuIC0xOwogfQogCi1QeV9zc2l6ZV90IFB5VW5pY29kZV9GaW5kKFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQorUHlfc3NpemVfdAorUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCkBAIC02NTE3LDE5ICs5MDUxLDE1IEBACiAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CiAKLSAgICBpZiAoZGlyZWN0aW9uID4gMCkKLSAgICAgICAgcmVzdWx0ID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN1YiksIFB5VW5pY29kZV9HRVRfU0laRShzdWIpLAotICAgICAgICAgICAgc3RhcnQsIGVuZAotICAgICAgICAgICAgKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3ViKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YiksCi0gICAgICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICAgICApOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKGRpcmVjdGlvbiwKKyAgICAgICAgc3RyLCBzdWIsIHN0YXJ0LCBlbmQKKyAgICAgICAgKTsKIAogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIFB5X0RFQ1JFRihzdWIpOwpAQCAtNjUzNywzNyArOTA2NywxMDQgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMKLWludCB0YWlsbWF0Y2goUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZywKLSAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCi0gICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfRmluZENoYXIoUHlPYmplY3QgKnN0ciwgUHlfVUNTNCBjaCwKKyAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIGlmIChzdWJzdHJpbmctPmxlbmd0aCA9PSAwKQorICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgcmVzdWx0OworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0yOworICAgIGlmIChzdGFydCA8IDAgfHwgZW5kIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICBpZiAoZW5kID4gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSkKKyAgICAgICAgZW5kID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICByZXN1bHQgPSBmaW5kY2hhcihQeVVuaWNvZGVfMUJZVEVfREFUQShzdHIpICsga2luZCpzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICBraW5kLCBlbmQtc3RhcnQsIGNoLCBkaXJlY3Rpb24pOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBzdGFydCArIHJlc3VsdDsKK30KKworc3RhdGljIGludAordGFpbG1hdGNoKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcsCisgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICBpbnQgZGlyZWN0aW9uKQoreworICAgIGludCBraW5kX3NlbGY7CisgICAgaW50IGtpbmRfc3ViOworICAgIHZvaWQgKmRhdGFfc2VsZjsKKyAgICB2b2lkICpkYXRhX3N1YjsKKyAgICBQeV9zc2l6ZV90IG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBlbmRfc3ViOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fAorICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSA9PSAwKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHNlbGYtPmxlbmd0aCk7Ci0gICAgZW5kIC09IHN1YnN0cmluZy0+bGVuZ3RoOworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKKyAgICBlbmQgLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKICAgICBpZiAoZW5kIDwgc3RhcnQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGRpcmVjdGlvbiA+IDApIHsKLSAgICAgICAgaWYgKFB5X1VOSUNPREVfTUFUQ0goc2VsZiwgZW5kLCBzdWJzdHJpbmcpKQorICAgIGtpbmRfc2VsZiA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGFfc2VsZiA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGtpbmRfc3ViID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKKyAgICBkYXRhX3N1YiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgZW5kX3N1YiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZykgLSAxOworCisgICAgaWYgKGRpcmVjdGlvbiA+IDApCisgICAgICAgIG9mZnNldCA9IGVuZDsKKyAgICBlbHNlCisgICAgICAgIG9mZnNldCA9IHN0YXJ0OworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmRfc2VsZiwgZGF0YV9zZWxmLCBvZmZzZXQpID09CisgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmRfc3ViLCBkYXRhX3N1YiwgMCkgJiYKKyAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZF9zZWxmLCBkYXRhX3NlbGYsIG9mZnNldCArIGVuZF9zdWIpID09CisgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmRfc3ViLCBkYXRhX3N1YiwgZW5kX3N1YikpIHsKKyAgICAgICAgLyogSWYgYm90aCBhcmUgb2YgdGhlIHNhbWUga2luZCwgbWVtY21wIGlzIHN1ZmZpY2llbnQgKi8KKyAgICAgICAgaWYgKGtpbmRfc2VsZiA9PSBraW5kX3N1YikgeworICAgICAgICAgICAgcmV0dXJuICEgbWVtY21wKChjaGFyICopZGF0YV9zZWxmICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9mZnNldCAqIFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3ViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZykgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpKTsKKyAgICAgICAgfQorICAgICAgICAvKiBvdGhlcndpc2Ugd2UgaGF2ZSB0byBjb21wYXJlIGVhY2ggY2hhcmFjdGVyIGJ5IGZpcnN0IGFjY2VzaW5nIGl0ICovCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogV2UgZG8gbm90IG5lZWQgdG8gY29tcGFyZSAwIGFuZCBsZW4oc3Vic3RyaW5nKS0xIGJlY2F1c2UKKyAgICAgICAgICAgICAgIHRoZSBpZiBzdGF0ZW1lbnQgYWJvdmUgZW5zdXJlZCBhbHJlYWR5IHRoYXQgdGhleSBhcmUgZXF1YWwKKyAgICAgICAgICAgICAgIHdoZW4gd2UgZW5kIHVwIGhlcmUuICovCisgICAgICAgICAgICAvLyBUT0RPOiBob25vciBkaXJlY3Rpb24gYW5kIGRvIGEgZm9yd2FyZCBvciBiYWNrd2FyZHMgc2VhcmNoCisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgZW5kX3N1YjsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmRfc2VsZiwgZGF0YV9zZWxmLCBvZmZzZXQgKyBpKSAhPQorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kX3N1YiwgZGF0YV9zdWIsIGkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiAxOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChQeV9VTklDT0RFX01BVENIKHNlbGYsIHN0YXJ0LCBzdWJzdHJpbmcpKQotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gMDsKIH0KIAotUHlfc3NpemVfdCBQeVVuaWNvZGVfVGFpbG1hdGNoKFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfVGFpbG1hdGNoKFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCkBAIC02NTgwLDggKzkxNzcsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gdGFpbG1hdGNoKChQeVVuaWNvZGVPYmplY3QgKilzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVPYmplY3QgKilzdWJzdHIsCisgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHN0ciwgc3Vic3RyLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIFB5X0RFQ1JFRihzdWJzdHIpOwpAQCAtNjU5MSwxNjggKzkxODcsMzEyIEBACiAvKiBBcHBseSBmaXhmY3QgZmlsdGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCBzZWxmIGFuZCByZXR1cm4gYQogICAgcmVmZXJlbmNlIHRvIHRoZSBtb2RpZmllZCBvYmplY3QgKi8KIAotc3RhdGljCi1QeU9iamVjdCAqZml4dXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgIGludCAoKmZpeGZjdCkoUHlVbmljb2RlT2JqZWN0ICpzKSkKK3N0YXRpYyBQeU9iamVjdCAqCitmaXh1cChQeU9iamVjdCAqc2VsZiwKKyAgICAgIFB5X1VDUzQgKCpmaXhmY3QpKFB5T2JqZWN0ICpzKSkKIHsKKyAgICBQeU9iamVjdCAqdTsKKyAgICBQeV9VQ1M0IG1heGNoYXJfb2xkLCBtYXhjaGFyX25ldyA9IDA7CisgICAgUHlPYmplY3QgKnY7CiAKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7Ci0KLSAgICB1ID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzZWxmLT5sZW5ndGgpOworICAgIHUgPSBfUHlVbmljb2RlX0NvcHkoc2VsZik7CiAgICAgaWYgKHUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWF4Y2hhcl9vbGQgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodSk7CiAKLSAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyLCBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7CisgICAgLyogZml4IGZ1bmN0aW9ucyByZXR1cm4gdGhlIG5ldyBtYXhpbXVtIGNoYXJhY3RlciBpbiBhIHN0cmluZywKKyAgICAgICBpZiB0aGUga2luZCBvZiB0aGUgcmVzdWx0aW5nIHVuaWNvZGUgb2JqZWN0IGRvZXMgbm90IGNoYW5nZSwKKyAgICAgICBldmVyeXRoaW5nIGlzIGZpbmUuICBPdGhlcndpc2Ugd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHN0cmluZyBraW5kCisgICAgICAgYW5kIHJlLXJ1biB0aGUgZml4IGZ1bmN0aW9uLiAqLworICAgIG1heGNoYXJfbmV3ID0gZml4ZmN0KHUpOwogCi0gICAgaWYgKCFmaXhmY3QodSkgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgLyogZml4ZmN0IHNob3VsZCByZXR1cm4gVFJVRSBpZiBpdCBtb2RpZmllZCB0aGUgYnVmZmVyLiBJZgotICAgICAgICAgICBGQUxTRSwgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBidWZmZXIgaW5zdGVhZAotICAgICAgICAgICAodG8gc2F2ZSBzcGFjZSwgbm90IHRpbWUpICovCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICBpZiAobWF4Y2hhcl9uZXcgPT0gMCkgeworICAgICAgICAvKiBubyBjaGFuZ2VzICovOworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1OworICAgIH0KKworICAgIG1heGNoYXJfbmV3ID0gYWxpZ25fbWF4Y2hhcihtYXhjaGFyX25ldyk7CisKKyAgICBpZiAobWF4Y2hhcl9uZXcgPT0gbWF4Y2hhcl9vbGQpCisgICAgICAgIHJldHVybiB1OworCisgICAgLyogSW4gY2FzZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXIgY2hhbmdlZCwgd2UgbmVlZCB0bworICAgICAgIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0aGUgbmV3IGNhdGVnb3J5LiAqLworICAgIHYgPSBQeVVuaWNvZGVfTmV3KFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjaGFyX25ldyk7CisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIChQeU9iamVjdCopIHU7CisgICAgaWYgKG1heGNoYXJfbmV3ID4gbWF4Y2hhcl9vbGQpIHsKKyAgICAgICAgLyogSWYgdGhlIG1heGNoYXIgaW5jcmVhc2VkIHNvIHRoYXQgdGhlIGtpbmQgY2hhbmdlZCwgbm90IGFsbAorICAgICAgICAgICBjaGFyYWN0ZXJzIGFyZSByZXByZXNlbnRhYmxlIGFueW1vcmUgYW5kIHdlIG5lZWQgdG8gZml4IHRoZQorICAgICAgICAgICBzdHJpbmcgYWdhaW4uIFRoaXMgb25seSBoYXBwZW5zIGluIHZlcnkgZmV3IGNhc2VzLiAqLworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh2LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSk7CisgICAgICAgIG1heGNoYXJfb2xkID0gZml4ZmN0KHYpOworICAgICAgICBhc3NlcnQobWF4Y2hhcl9vbGQgPiAwICYmIG1heGNoYXJfb2xkIDw9IG1heGNoYXJfbmV3KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHYsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKKyAgICB9CisgICAgUHlfREVDUkVGKHUpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodiwgMSkpOworICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMKLWludCBmaXh1cHBlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCitzdGF0aWMgUHlPYmplY3QgKgorYXNjaWlfdXBwZXJfb3JfbG93ZXIoUHlPYmplY3QgKnNlbGYsIGludCBsb3dlcikKIHsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IHNlbGYtPmxlbmd0aDsKLSAgICBQeV9VTklDT0RFICpzID0gc2VsZi0+c3RyOwotICAgIGludCBzdGF0dXMgPSAwOworICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgY2hhciAqcmVzZGF0YSwgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgd2hpbGUgKGxlbi0tID4gMCkgewotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFIGNoOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcobGVuLCAxMjcpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcyk7CisgICAgaWYgKGxvd2VyKQorICAgICAgICBfUHlfYnl0ZXNfbG93ZXIocmVzZGF0YSwgZGF0YSwgbGVuKTsKKyAgICBlbHNlCisgICAgICAgIF9QeV9ieXRlc191cHBlcihyZXNkYXRhLCBkYXRhLCBsZW4pOworICAgIHJldHVybiByZXM7Cit9CiAKLSAgICAgICAgY2ggPSBQeV9VTklDT0RFX1RPVVBQRVIoKnMpOwotICAgICAgICBpZiAoY2ggIT0gKnMpIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IDE7Ci0gICAgICAgICAgICAqcyA9IGNoOworc3RhdGljIFB5X1VDUzQKK2hhbmRsZV9jYXBpdGFsX3NpZ21hKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfc3NpemVfdCBpKQoreworICAgIFB5X3NzaXplX3QgajsKKyAgICBpbnQgZmluYWxfc2lnbWE7CisgICAgUHlfVUNTNCBjOworICAgIC8qIFUrMDNBMyBpcyBpbiB0aGUgRmluYWxfU2lnbWEgY29udGV4dCB3aGVuLCBpdCBpcyBmb3VuZCBsaWtlIHRoaXM6CisKKyAgICAgXHB7Y2FzZWR9XHB7Y2FzZS1pZ25vcmFibGV9KlUrMDNBMyEoXHB7Y2FzZS1pZ25vcmFibGV9Klxwe2Nhc2VkfSkKKworICAgIHdoZXJlICEgaXMgYSBuZWdhdGlvbiBhbmQgXHB7eHh4fSBpcyBhIGNoYXJhY3RlciB3aXRoIHByb3BlcnR5IHh4eC4KKyAgICAqLworICAgIGZvciAoaiA9IGkgLSAxOyBqID49IDA7IGotLSkgeworICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgIGlmICghX1B5VW5pY29kZV9Jc0Nhc2VJZ25vcmFibGUoYykpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgZmluYWxfc2lnbWEgPSBqID49IDAgJiYgX1B5VW5pY29kZV9Jc0Nhc2VkKGMpOworICAgIGlmIChmaW5hbF9zaWdtYSkgeworICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IGxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgICAgICBpZiAoIV9QeVVuaWNvZGVfSXNDYXNlSWdub3JhYmxlKGMpKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHMrKzsKKyAgICAgICAgZmluYWxfc2lnbWEgPSBqID09IGxlbmd0aCB8fCAhX1B5VW5pY29kZV9Jc0Nhc2VkKGMpOwogICAgIH0KLQotICAgIHJldHVybiBzdGF0dXM7CisgICAgcmV0dXJuIChmaW5hbF9zaWdtYSkgPyAweDNDMiA6IDB4M0MzOwogfQogCi1zdGF0aWMKLWludCBmaXhsb3dlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCitzdGF0aWMgaW50Citsb3dlcl91Y3M0KGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfc3NpemVfdCBpLAorICAgICAgICAgICBQeV9VQ1M0IGMsIFB5X1VDUzQgKm1hcHBlZCkKIHsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IHNlbGYtPmxlbmd0aDsKLSAgICBQeV9VTklDT0RFICpzID0gc2VsZi0+c3RyOwotICAgIGludCBzdGF0dXMgPSAwOworICAgIC8qIE9ic2N1cmUgc3BlY2lhbCBjYXNlLiAqLworICAgIGlmIChjID09IDB4M0EzKSB7CisgICAgICAgIG1hcHBlZFswXSA9IGhhbmRsZV9jYXBpdGFsX3NpZ21hKGtpbmQsIGRhdGEsIGxlbmd0aCwgaSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gX1B5VW5pY29kZV9Ub0xvd2VyRnVsbChjLCBtYXBwZWQpOworfQogCi0gICAgd2hpbGUgKGxlbi0tID4gMCkgewotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFIGNoOworc3RhdGljIFB5X3NzaXplX3QKK2RvX2NhcGl0YWxpemUoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgUHlfc3NpemVfdCBpLCBrID0gMDsKKyAgICBpbnQgbl9yZXMsIGo7CisgICAgUHlfVUNTNCBjLCBtYXBwZWRbM107CiAKLSAgICAgICAgY2ggPSBQeV9VTklDT0RFX1RPTE9XRVIoKnMpOwotICAgICAgICBpZiAoY2ggIT0gKnMpIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IDE7Ci0gICAgICAgICAgICAqcyA9IGNoOworICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoYywgbWFwcGVkKTsKKyAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICByZXNbaysrXSA9IG1hcHBlZFtqXTsKKyAgICB9CisgICAgZm9yIChpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgbl9yZXMgPSBsb3dlcl91Y3M0KGtpbmQsIGRhdGEsIGxlbmd0aCwgaSwgYywgbWFwcGVkKTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG5fcmVzOyBqKyspIHsKKyAgICAgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsIG1hcHBlZFtqXSk7CisgICAgICAgICAgICByZXNbaysrXSA9IG1hcHBlZFtqXTsKICAgICAgICAgfQotICAgICAgICBzKys7CiAgICAgfQotCi0gICAgcmV0dXJuIHN0YXR1czsKKyAgICByZXR1cm4gazsKIH0KIAotc3RhdGljCi1pbnQgZml4c3dhcGNhc2UoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQotewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7CitzdGF0aWMgUHlfc3NpemVfdAorZG9fc3dhcGNhc2UoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpIHsKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOwogCi0gICAgd2hpbGUgKGxlbi0tID4gMCkgewotICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1VQUEVSKCpzKSkgewotICAgICAgICAgICAgKnMgPSBQeV9VTklDT0RFX1RPTE9XRVIoKnMpOwotICAgICAgICAgICAgc3RhdHVzID0gMTsKLSAgICAgICAgfSBlbHNlIGlmIChQeV9VTklDT0RFX0lTTE9XRVIoKnMpKSB7Ci0gICAgICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9VUFBFUigqcyk7Ci0gICAgICAgICAgICBzdGF0dXMgPSAxOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSwgbWFwcGVkWzNdOworICAgICAgICBpbnQgbl9yZXMsIGo7CisgICAgICAgIGlmIChQeV9VTklDT0RFX0lTVVBQRVIoYykpIHsKKyAgICAgICAgICAgIG5fcmVzID0gbG93ZXJfdWNzNChraW5kLCBkYXRhLCBsZW5ndGgsIGksIGMsIG1hcHBlZCk7CiAgICAgICAgIH0KLSAgICAgICAgcysrOwotICAgIH0KLQotICAgIHJldHVybiBzdGF0dXM7Ci19Ci0KLXN0YXRpYwotaW50IGZpeGNhcGl0YWxpemUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQotewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7Ci0KLSAgICBpZiAobGVuID09IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghUHlfVU5JQ09ERV9JU1VQUEVSKCpzKSkgewotICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9VUFBFUigqcyk7Ci0gICAgICAgIHN0YXR1cyA9IDE7Ci0gICAgfQotICAgIHMrKzsKLSAgICB3aGlsZSAoLS1sZW4gPiAwKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0xPV0VSKCpzKSkgewotICAgICAgICAgICAgKnMgPSBQeV9VTklDT0RFX1RPTE9XRVIoKnMpOwotICAgICAgICAgICAgc3RhdHVzID0gMTsKKyAgICAgICAgZWxzZSBpZiAoUHlfVU5JQ09ERV9JU0xPV0VSKGMpKSB7CisgICAgICAgICAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoYywgbWFwcGVkKTsKICAgICAgICAgfQotICAgICAgICBzKys7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbl9yZXMgPSAxOworICAgICAgICAgICAgbWFwcGVkWzBdID0gYzsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBzdGF0dXM7CisgICAgcmV0dXJuIGs7CiB9CiAKLXN0YXRpYwotaW50IGZpeHRpdGxlKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3N0YXRpYyBQeV9zc2l6ZV90Citkb191cHBlcl9vcl9sb3dlcihpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywKKyAgICAgICAgICAgICAgICAgIFB5X1VDUzQgKm1heGNoYXIsIGludCBsb3dlcikKIHsKLSAgICByZWdpc3RlciBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpLCBtYXBwZWRbM107CisgICAgICAgIGludCBuX3JlcywgajsKKyAgICAgICAgaWYgKGxvd2VyKQorICAgICAgICAgICAgbl9yZXMgPSBsb3dlcl91Y3M0KGtpbmQsIGRhdGEsIGxlbmd0aCwgaSwgYywgbWFwcGVkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbl9yZXMgPSBfUHlVbmljb2RlX1RvVXBwZXJGdWxsKGMsIG1hcHBlZCk7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGs7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90Citkb191cHBlcihpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICByZXR1cm4gZG9fdXBwZXJfb3JfbG93ZXIoa2luZCwgZGF0YSwgbGVuZ3RoLCByZXMsIG1heGNoYXIsIDApOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorZG9fbG93ZXIoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgcmV0dXJuIGRvX3VwcGVyX29yX2xvd2VyKGtpbmQsIGRhdGEsIGxlbmd0aCwgcmVzLCBtYXhjaGFyLCAxKTsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK2RvX2Nhc2Vmb2xkKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCAqcmVzLCBQeV9VQ1M0ICptYXhjaGFyKQoreworICAgIFB5X3NzaXplX3QgaSwgayA9IDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIFB5X1VDUzQgbWFwcGVkWzNdOworICAgICAgICBpbnQgaiwgbl9yZXMgPSBfUHlVbmljb2RlX1RvRm9sZGVkRnVsbChjLCBtYXBwZWQpOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBrOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorZG9fdGl0bGUoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgUHlfc3NpemVfdCBpLCBrID0gMDsKICAgICBpbnQgcHJldmlvdXNfaXNfY2FzZWQ7CiAKLSAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBQeV9VTklDT0RFX1RPVElUTEUoKnApOwotICAgICAgICBpZiAoKnAgIT0gY2gpIHsKLSAgICAgICAgICAgICpwID0gY2g7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKICAgICBwcmV2aW91c19pc19jYXNlZCA9IDA7Ci0gICAgZm9yICg7IHAgPCBlOyBwKyspIHsKLSAgICAgICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSBjaCA9ICpwOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgUHlfVUNTNCBtYXBwZWRbM107CisgICAgICAgIGludCBuX3JlcywgajsKIAogICAgICAgICBpZiAocHJldmlvdXNfaXNfY2FzZWQpCi0gICAgICAgICAgICAqcCA9IFB5X1VOSUNPREVfVE9MT1dFUihjaCk7CisgICAgICAgICAgICBuX3JlcyA9IGxvd2VyX3VjczQoa2luZCwgZGF0YSwgbGVuZ3RoLCBpLCBjLCBtYXBwZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcCA9IFB5X1VOSUNPREVfVE9USVRMRShjaCk7CisgICAgICAgICAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9UaXRsZUZ1bGwoYywgbWFwcGVkKTsKIAotICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU0xPV0VSKGNoKSB8fAotICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1VQUEVSKGNoKSB8fAotICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1RJVExFKGNoKSkKLSAgICAgICAgICAgIHByZXZpb3VzX2lzX2Nhc2VkID0gMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJldmlvdXNfaXNfY2FzZWQgPSAwOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgICAgICB9CisKKyAgICAgICAgcHJldmlvdXNfaXNfY2FzZWQgPSBfUHlVbmljb2RlX0lzQ2FzZWQoYyk7CiAgICAgfQotICAgIHJldHVybiAxOworICAgIHJldHVybiBrOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY2FzZV9vcGVyYXRpb24oUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICgqcGVyZm9ybSkoaW50LCB2b2lkICosIFB5X3NzaXplX3QsIFB5X1VDUzQgKiwgUHlfVUNTNCAqKSkKK3sKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwgbmV3bGVuZ3RoID0gMDsKKyAgICBpbnQga2luZCwgb3V0a2luZDsKKyAgICB2b2lkICpkYXRhLCAqb3V0ZGF0YTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAwLCAqdG1wLCAqdG1wZW5kOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShzZWxmKSk7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIHRtcCA9IFB5TWVtX01BTExPQyhzaXplb2YoUHlfVUNTNCkgKiAzICogbGVuZ3RoKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG5ld2xlbmd0aCA9IHBlcmZvcm0oa2luZCwgZGF0YSwgbGVuZ3RoLCB0bXAsICZtYXhjaGFyKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KG5ld2xlbmd0aCwgbWF4Y2hhcik7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGxlYXZlOworICAgIHRtcGVuZCA9IHRtcCArIG5ld2xlbmd0aDsKKyAgICBvdXRkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICBvdXRraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICBzd2l0Y2ggKG91dGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTNCwgUHlfVUNTMSwgdG1wLCB0bXBlbmQsIG91dGRhdGEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTNCwgUHlfVUNTMiwgdG1wLCB0bXBlbmQsIG91dGRhdGEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBtZW1jcHkob3V0ZGF0YSwgdG1wLCBzaXplb2YoUHlfVUNTNCkgKiBuZXdsZW5ndGgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgbGVhdmU6CisgICAgUHlNZW1fRlJFRSh0bXApOworICAgIHJldHVybiByZXM7CiB9CiAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Kb2luKFB5T2JqZWN0ICpzZXBhcmF0b3IsIFB5T2JqZWN0ICpzZXEpCiB7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSBibGFuayA9ICcgJzsKLSAgICBjb25zdCBQeV9VTklDT0RFICpzZXAgPSAmYmxhbms7Ci0gICAgUHlfc3NpemVfdCBzZXBsZW4gPSAxOwotICAgIFB5VW5pY29kZU9iamVjdCAqcmVzID0gTlVMTDsgLyogdGhlIHJlc3VsdCAqLwotICAgIFB5X1VOSUNPREUgKnJlc19wOyAgICAgICAvKiBwb2ludGVyIHRvIGZyZWUgYnl0ZSBpbiByZXMncyBzdHJpbmcgYXJlYSAqLworICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2VwbGVuOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOyAvKiB0aGUgcmVzdWx0ICovCiAgICAgUHlPYmplY3QgKmZzZXE7ICAgICAgICAgIC8qIFB5U2VxdWVuY2VfRmFzdChzZXEpICovCiAgICAgUHlfc3NpemVfdCBzZXFsZW47ICAgICAgIC8qIGxlbihmc2VxKSAtLSBudW1iZXIgb2YgaXRlbXMgaW4gc2VxdWVuY2UgKi8KICAgICBQeU9iamVjdCAqKml0ZW1zOwogICAgIFB5T2JqZWN0ICppdGVtOwotICAgIFB5X3NzaXplX3Qgc3osIGk7CisgICAgUHlfc3NpemVfdCBzeiwgaSwgcmVzX29mZnNldDsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfVUNTNCBpdGVtX21heGNoYXI7CisgICAgaW50IHVzZV9tZW1jcHk7CisgICAgdW5zaWduZWQgY2hhciAqcmVzX2RhdGEgPSBOVUxMLCAqc2VwX2RhdGEgPSBOVUxMOworICAgIFB5T2JqZWN0ICpsYXN0X29iajsKKyAgICB1bnNpZ25lZCBpbnQga2luZCA9IDA7CiAKICAgICBmc2VxID0gUHlTZXF1ZW5jZV9GYXN0KHNlcSwgIiIpOwogICAgIGlmIChmc2VxID09IE5VTEwpIHsKQEAgLTY3NjYsMjQgKzk1MDYsMzQgQEAKICAgICBzZXFsZW4gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZnNlcSk7CiAgICAgLyogSWYgZW1wdHkgc2VxdWVuY2UsIHJldHVybiB1IiIuICovCiAgICAgaWYgKHNlcWxlbiA9PSAwKSB7Ci0gICAgICAgIHJlcyA9IF9QeVVuaWNvZGVfTmV3KDApOyAgLyogZW1wdHkgc2VxdWVuY2U7IHJldHVybiB1IiIgKi8KLSAgICAgICAgZ290byBEb25lOworICAgICAgICBQeV9ERUNSRUYoZnNlcSk7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmVzID0gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgcmV0dXJuIHJlczsKICAgICB9Ci0gICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CisKICAgICAvKiBJZiBzaW5nbGV0b24gc2VxdWVuY2Ugd2l0aCBhbiBleGFjdCBVbmljb2RlLCByZXR1cm4gdGhhdC4gKi8KKyAgICBsYXN0X29iaiA9IE5VTEw7CisgICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CiAgICAgaWYgKHNlcWxlbiA9PSAxKSB7Ci0gICAgICAgIGl0ZW0gPSBpdGVtc1swXTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGl0ZW0pKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7Ci0gICAgICAgICAgICByZXMgPSAoUHlVbmljb2RlT2JqZWN0ICopaXRlbTsKLSAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGl0ZW1zWzBdKSkgeworICAgICAgICAgICAgcmVzID0gaXRlbXNbMF07CisgICAgICAgICAgICBQeV9JTkNSRUYocmVzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmc2VxKTsKKyAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIH0KKyAgICAgICAgc2VwbGVuID0gMDsKKyAgICAgICAgbWF4Y2hhciA9IDA7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBTZXQgdXAgc2VwIGFuZCBzZXBsZW4gKi8KICAgICAgICAgaWYgKHNlcGFyYXRvciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBzZXAgPSAmYmxhbms7CisgICAgICAgICAgICAvKiBmYWxsIGJhY2sgdG8gYSBibGFuayBzcGFjZSBzZXBhcmF0b3IgKi8KKyAgICAgICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnICcpOworICAgICAgICAgICAgaWYgKCFzZXApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgc2VwbGVuID0gMTsKKyAgICAgICAgICAgIG1heGNoYXIgPSAzMjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHNlcGFyYXRvcikpIHsKQEAgLTY3OTMsOSArOTU0MywxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlcGFyYXRvciktPnRwX25hbWUpOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNlcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlcGFyYXRvcik7Ci0gICAgICAgICAgICBzZXBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2VwYXJhdG9yKTsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VwYXJhdG9yKSkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBzZXAgPSBzZXBhcmF0b3I7CisgICAgICAgICAgICBzZXBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBhcmF0b3IpOworICAgICAgICAgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzZXBhcmF0b3IpOworICAgICAgICAgICAgLyogaW5jIHJlZmNvdW50IHRvIGtlZXAgdGhpcyBjb2RlIHBhdGggc3ltbWV0cmljIHdpdGggdGhlCisgICAgICAgICAgICAgICBhYm92ZSBjYXNlIG9mIGEgYmxhbmsgc2VwYXJhdG9yICovCisgICAgICAgICAgICBQeV9JTkNSRUYoc2VwKTsKICAgICAgICAgfQorICAgICAgICBsYXN0X29iaiA9IHNlcDsKICAgICB9CiAKICAgICAvKiBUaGVyZSBhcmUgYXQgbGVhc3QgdHdvIHRoaW5ncyB0byBqb2luLCBvciBlbHNlIHdlIGhhdmUgYSBzdWJjbGFzcwpAQCAtNjgwNCw2ICs5NTYxLDExIEBACiAgICAgICogbmVlZCAoc3opLCBhbmQgc2VlIHdoZXRoZXIgYWxsIGFyZ3VtZW50IGFyZSBzdHJpbmdzLgogICAgICAqLwogICAgIHN6ID0gMDsKKyNpZmRlZiBQeV9ERUJVRworICAgIHVzZV9tZW1jcHkgPSAwOworI2Vsc2UKKyAgICB1c2VfbWVtY3B5ID0gMTsKKyNlbmRpZgogICAgIGZvciAoaSA9IDA7IGkgPCBzZXFsZW47IGkrKykgewogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG9sZF9zeiA9IHN6OwogICAgICAgICBpdGVtID0gaXRlbXNbaV07CkBAIC02ODE0LDcgKzk1NzYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBQeV9UWVBFKGl0ZW0pLT50cF9uYW1lKTsKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgfQotICAgICAgICBzeiArPSBQeVVuaWNvZGVfR0VUX1NJWkUoaXRlbSk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaXRlbSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIHN6ICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworICAgICAgICBpdGVtX21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoaXRlbSk7CisgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBpdGVtX21heGNoYXIpOwogICAgICAgICBpZiAoaSAhPSAwKQogICAgICAgICAgICAgc3ogKz0gc2VwbGVuOwogICAgICAgICBpZiAoc3ogPCBvbGRfc3ogfHwgc3ogPiBQWV9TU0laRV9UX01BWCkgewpAQCAtNjgyMiwyNjYgKzk1ODgsNzI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpvaW4oKSByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZyIpOwogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9CisgICAgICAgIGlmICh1c2VfbWVtY3B5ICYmIGxhc3Rfb2JqICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfS0lORChsYXN0X29iaikgIT0gUHlVbmljb2RlX0tJTkQoaXRlbSkpCisgICAgICAgICAgICAgICAgdXNlX21lbWNweSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgbGFzdF9vYmogPSBpdGVtOwogICAgIH0KIAotICAgIHJlcyA9IF9QeVVuaWNvZGVfTmV3KHN6KTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHN6LCBtYXhjaGFyKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIC8qIENhdGVuYXRlIGV2ZXJ5dGhpbmcuICovCi0gICAgcmVzX3AgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpOwotICAgIGZvciAoaSA9IDA7IGkgPCBzZXFsZW47ICsraSkgeworI2lmZGVmIFB5X0RFQlVHCisgICAgdXNlX21lbWNweSA9IDA7CisjZWxzZQorICAgIGlmICh1c2VfbWVtY3B5KSB7CisgICAgICAgIHJlc19kYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcyk7CisgICAgICAgIGlmIChzZXBsZW4gIT0gMCkKKyAgICAgICAgICAgIHNlcF9kYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VwKTsKKyAgICB9CisjZW5kaWYKKyAgICBmb3IgKGkgPSAwLCByZXNfb2Zmc2V0ID0gMDsgaSA8IHNlcWxlbjsgKytpKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaXRlbWxlbjsKICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldOwotICAgICAgICBpdGVtbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGl0ZW0pOwogICAgICAgICAvKiBDb3B5IGl0ZW0sIGFuZCBtYXliZSB0aGUgc2VwYXJhdG9yLiAqLwotICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHJlc19wLCBzZXAsIHNlcGxlbik7Ci0gICAgICAgICAgICByZXNfcCArPSBzZXBsZW47CisgICAgICAgIGlmIChpICYmIHNlcGxlbiAhPSAwKSB7CisgICAgICAgICAgICBpZiAodXNlX21lbWNweSkgeworICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBzZXBsZW4pOworICAgICAgICAgICAgICAgIHJlc19kYXRhICs9IGtpbmQgKiBzZXBsZW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXMsIHJlc19vZmZzZXQsIHNlcCwgMCwgc2VwbGVuKTsKKyAgICAgICAgICAgICAgICByZXNfb2Zmc2V0ICs9IHNlcGxlbjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBQeV9VTklDT0RFX0NPUFkocmVzX3AsIFB5VW5pY29kZV9BU19VTklDT0RFKGl0ZW0pLCBpdGVtbGVuKTsKLSAgICAgICAgcmVzX3AgKz0gaXRlbWxlbjsKKyAgICAgICAgaXRlbWxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworICAgICAgICBpZiAoaXRlbWxlbiAhPSAwKSB7CisgICAgICAgICAgICBpZiAodXNlX21lbWNweSkgeworICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoaXRlbSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBpdGVtbGVuKTsKKyAgICAgICAgICAgICAgICByZXNfZGF0YSArPSBraW5kICogaXRlbWxlbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlcywgcmVzX29mZnNldCwgaXRlbSwgMCwgaXRlbWxlbik7CisgICAgICAgICAgICAgICAgcmVzX29mZnNldCArPSBpdGVtbGVuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQorICAgIGlmICh1c2VfbWVtY3B5KQorICAgICAgICBhc3NlcnQocmVzX2RhdGEgPT0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBraW5kICogUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzKSk7CisgICAgZWxzZQorICAgICAgICBhc3NlcnQocmVzX29mZnNldCA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXMpKTsKIAotICBEb25lOgogICAgIFB5X0RFQ1JFRihmc2VxKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzOworICAgIFB5X1hERUNSRUYoc2VwKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7CiAKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYoZnNlcSk7CisgICAgUHlfWERFQ1JFRihzZXApOwogICAgIFB5X1hERUNSRUYocmVzKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljCi1QeVVuaWNvZGVPYmplY3QgKnBhZChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlZnQsCi0gICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBmaWxsKQorI2RlZmluZSBGSUxMKGtpbmQsIGRhdGEsIHZhbHVlLCBzdGFydCwgbGVuZ3RoKSBcCisgICAgZG8geyBcCisgICAgICAgIFB5X3NzaXplX3QgaV8gPSAwOyBcCisgICAgICAgIGFzc2VydChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKTsgXAorICAgICAgICBzd2l0Y2ggKChraW5kKSkgeyBcCisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IHsgXAorICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIHRvXyA9ICh1bnNpZ25lZCBjaGFyICopKChkYXRhKSkgKyAoc3RhcnQpOyBcCisgICAgICAgICAgICBtZW1zZXQodG9fLCAodW5zaWduZWQgY2hhcil2YWx1ZSwgKGxlbmd0aCkpOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeyBcCisgICAgICAgICAgICBQeV9VQ1MyICogdG9fID0gKFB5X1VDUzIgKikoKGRhdGEpKSArIChzdGFydCk7IFwKKyAgICAgICAgICAgIGZvciAoOyBpXyA8IChsZW5ndGgpOyArK2lfLCArK3RvXykgKnRvXyA9ICh2YWx1ZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIH0gXAorICAgICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiB7IFwKKyAgICAgICAgICAgIFB5X1VDUzQgKiB0b18gPSAoUHlfVUNTNCAqKSgoZGF0YSkpICsgKHN0YXJ0KTsgXAorICAgICAgICAgICAgZm9yICg7IGlfIDwgKGxlbmd0aCk7ICsraV8sICsrdG9fKSAqdG9fID0gKHZhbHVlKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgZGVmYXVsdDogYXNzZXJ0KDApOyBcCisgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IHdoaWxlICgwKQorCit2b2lkCitfUHlVbmljb2RlX0Zhc3RGaWxsKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBmaWxsX2NoYXIpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1OworICAgIGNvbnN0IGVudW0gUHlVbmljb2RlX0tpbmQga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGNvbnN0IHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQodW5pY29kZV9tb2RpZmlhYmxlKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoZmlsbF9jaGFyIDw9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSk7CisgICAgYXNzZXJ0KHN0YXJ0ID49IDApOworICAgIGFzc2VydChzdGFydCArIGxlbmd0aCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgRklMTChraW5kLCBkYXRhLCBmaWxsX2NoYXIsIHN0YXJ0LCBsZW5ndGgpOworfQorCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfRmlsbChQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICBQeV9VQ1M0IGZpbGxfY2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IG1heGxlbjsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodW5pY29kZV9jaGVja19tb2RpZmlhYmxlKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoc3RhcnQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChmaWxsX2NoYXIgPiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGwgY2hhcmFjdGVyIGlzIGJpZ2dlciB0aGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIHN0cmluZyBtYXhpbXVtIGNoYXJhY3RlciIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWF4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkgLSBzdGFydDsKKyAgICBsZW5ndGggPSBQeV9NSU4obWF4bGVuLCBsZW5ndGgpOworICAgIGlmIChsZW5ndGggPD0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBfUHlVbmljb2RlX0Zhc3RGaWxsKHVuaWNvZGUsIHN0YXJ0LCBsZW5ndGgsIGZpbGxfY2hhcik7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3BhZChQeU9iamVjdCAqc2VsZiwKKyAgICBQeV9zc2l6ZV90IGxlZnQsCisgICAgUHlfc3NpemVfdCByaWdodCwKKyAgICBQeV9VQ1M0IGZpbGwpCit7CisgICAgUHlPYmplY3QgKnU7CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBpZiAobGVmdCA8IDApCiAgICAgICAgIGxlZnQgPSAwOwogICAgIGlmIChyaWdodCA8IDApCiAgICAgICAgIHJpZ2h0ID0gMDsKIAotICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBzZWxmOwotICAgIH0KKyAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IDApCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CiAKLSAgICBpZiAobGVmdCA+IFBZX1NTSVpFX1RfTUFYIC0gc2VsZi0+bGVuZ3RoIHx8Ci0gICAgICAgIHJpZ2h0ID4gUFlfU1NJWkVfVF9NQVggLSAobGVmdCArIHNlbGYtPmxlbmd0aCkpIHsKKyAgICBpZiAobGVmdCA+IFBZX1NTSVpFX1RfTUFYIC0gX1B5VW5pY29kZV9MRU5HVEgoc2VsZikgfHwKKyAgICAgICAgcmlnaHQgPiBQWV9TU0laRV9UX01BWCAtIChsZWZ0ICsgX1B5VW5pY29kZV9MRU5HVEgoc2VsZikpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicGFkZGVkIHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdSA9IF9QeVVuaWNvZGVfTmV3KGxlZnQgKyBzZWxmLT5sZW5ndGggKyByaWdodCk7Ci0gICAgaWYgKHUpIHsKLSAgICAgICAgaWYgKGxlZnQpCi0gICAgICAgICAgICBQeV9VTklDT0RFX0ZJTEwodS0+c3RyLCBmaWxsLCBsZWZ0KTsKLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHUtPnN0ciArIGxlZnQsIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoKTsKLSAgICAgICAgaWYgKHJpZ2h0KQotICAgICAgICAgICAgUHlfVU5JQ09ERV9GSUxMKHUtPnN0ciArIGxlZnQgKyBzZWxmLT5sZW5ndGgsIGZpbGwsIHJpZ2h0KTsKLSAgICB9CisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzZWxmKTsKKyAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgZmlsbCk7CisgICAgdSA9IFB5VW5pY29kZV9OZXcobGVmdCArIF9QeVVuaWNvZGVfTEVOR1RIKHNlbGYpICsgcmlnaHQsIG1heGNoYXIpOworICAgIGlmICghdSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHUpOworICAgIGlmIChsZWZ0KQorICAgICAgICBGSUxMKGtpbmQsIGRhdGEsIGZpbGwsIDAsIGxlZnQpOworICAgIGlmIChyaWdodCkKKyAgICAgICAgRklMTChraW5kLCBkYXRhLCBmaWxsLCBsZWZ0ICsgX1B5VW5pY29kZV9MRU5HVEgoc2VsZiksIHJpZ2h0KTsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh1LCBsZWZ0LCBzZWxmLCAwLCBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1LCAxKSk7CiAgICAgcmV0dXJuIHU7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfU3BsaXRsaW5lcyhQeU9iamVjdCAqc3RyaW5nLCBpbnQga2VlcGVuZHMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfU3BsaXRsaW5lcyhQeU9iamVjdCAqc3RyaW5nLCBpbnQga2VlcGVuZHMpCiB7CiAgICAgUHlPYmplY3QgKmxpc3Q7CiAKICAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJpbmcpOwogICAgIGlmIChzdHJpbmcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdHJpbmcpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICBsaXN0ID0gc3RyaW5nbGliX3NwbGl0bGluZXMoCi0gICAgICAgIChQeU9iamVjdCopIHN0cmluZywgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyaW5nKSwKLSAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cmluZyksIGtlZXBlbmRzKTsKLQorICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc3RyaW5nKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyaW5nKSkKKyAgICAgICAgICAgIGxpc3QgPSBhc2NpaWxpYl9zcGxpdGxpbmVzKAorICAgICAgICAgICAgICAgIHN0cmluZywgUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyaW5nKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpLCBrZWVwZW5kcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxpc3QgPSB1Y3MxbGliX3NwbGl0bGluZXMoCisgICAgICAgICAgICAgICAgc3RyaW5nLCBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyksIGtlZXBlbmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgbGlzdCA9IHVjczJsaWJfc3BsaXRsaW5lcygKKyAgICAgICAgICAgIHN0cmluZywgUHlVbmljb2RlXzJCWVRFX0RBVEEoc3RyaW5nKSwKKyAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyksIGtlZXBlbmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgbGlzdCA9IHVjczRsaWJfc3BsaXRsaW5lcygKKyAgICAgICAgICAgIHN0cmluZywgUHlVbmljb2RlXzRCWVRFX0RBVEEoc3RyaW5nKSwKKyAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyksIGtlZXBlbmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICBsaXN0ID0gMDsKKyAgICB9CiAgICAgUHlfREVDUkVGKHN0cmluZyk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYwotUHlPYmplY3QgKnNwbGl0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQorc3RhdGljIFB5T2JqZWN0ICoKK3NwbGl0KFB5T2JqZWN0ICpzZWxmLAorICAgICAgUHlPYmplY3QgKnN1YnN0cmluZywKKyAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CisgICAgUHlPYmplY3QqIG91dDsKKwogICAgIGlmIChtYXhjb3VudCA8IDApCiAgICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdF93aGl0ZXNwYWNlKAotICAgICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBtYXhjb3VudAotICAgICAgICAgICAgKTsKKyAgICAgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzZWxmKSkgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYXNjaWlsaWJfc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9zcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzJCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJldHVybiB1Y3M0bGliX3NwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV80QllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCi0gICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdCgKLSAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLAotICAgICAgICBzdWJzdHJpbmctPnN0ciwgc3Vic3RyaW5nLT5sZW5ndGgsCi0gICAgICAgIG1heGNvdW50Ci0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOworICAgIGtpbmQgPSBraW5kMSA+IGtpbmQyID8ga2luZDEgOiBraW5kMjsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzZWxmLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgaWYgKGtpbmQxICE9IGtpbmQpIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJzdHJpbmcpKQorICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfc3BsaXQoCisgICAgICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0ID0gdWNzMWxpYl9zcGxpdCgKKyAgICAgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3MybGliX3NwbGl0KAorICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzNGxpYl9zcGxpdCgKKyAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG91dCA9IE5VTEw7CisgICAgfQorICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworICAgIHJldHVybiBvdXQ7CiB9CiAKLXN0YXRpYwotUHlPYmplY3QgKnJzcGxpdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQorc3RhdGljIFB5T2JqZWN0ICoKK3JzcGxpdChQeU9iamVjdCAqc2VsZiwKKyAgICAgICBQeU9iamVjdCAqc3Vic3RyaW5nLAorICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CisgICAgUHlPYmplY3QqIG91dDsKKwogICAgIGlmIChtYXhjb3VudCA8IDApCiAgICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yc3BsaXRfd2hpdGVzcGFjZSgKLSAgICAgICAgICAgIChQeU9iamVjdCopIHNlbGYsICBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgbWF4Y291bnQKLSAgICAgICAgICAgICk7CisgICAgICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc2VsZikpIHsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFzY2lpbGliX3JzcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX3JzcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfcnNwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV8yQllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gdWNzNGxpYl9yc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzRCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKLSAgICByZXR1cm4gc3RyaW5nbGliX3JzcGxpdCgKLSAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLAotICAgICAgICBzdWJzdHJpbmctPnN0ciwgc3Vic3RyaW5nLT5sZW5ndGgsCi0gICAgICAgIG1heGNvdW50Ci0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOworICAgIGtpbmQgPSBraW5kMSA+IGtpbmQyID8ga2luZDEgOiBraW5kMjsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzZWxmLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgaWYgKGtpbmQxICE9IGtpbmQpIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJzdHJpbmcpKQorICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcnNwbGl0KAorICAgICAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dCA9IHVjczFsaWJfcnNwbGl0KAorICAgICAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczJsaWJfcnNwbGl0KAorICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzNGxpYl9yc3BsaXQoCisgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBvdXQgPSBOVUxMOworICAgIH0KKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gb3V0OwogfQogCi1zdGF0aWMKLVB5T2JqZWN0ICpyZXBsYWNlKFB5VW5pY29kZU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3RyMSwKLSAgICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3RyMiwKLSAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCitzdGF0aWMgUHlfc3NpemVfdAorYW55bGliX2ZpbmQoaW50IGtpbmQsIFB5T2JqZWN0ICpzdHIxLCB2b2lkICpidWYxLCBQeV9zc2l6ZV90IGxlbjEsCisgICAgICAgICAgICBQeU9iamVjdCAqc3RyMiwgdm9pZCAqYnVmMiwgUHlfc3NpemVfdCBsZW4yLCBQeV9zc2l6ZV90IG9mZnNldCkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHIxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3RyMikpCisgICAgICAgICAgICByZXR1cm4gYXNjaWlsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBvZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG9mZnNldCk7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczJsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBvZmZzZXQpOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3M0bGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgb2Zmc2V0KTsKKyAgICB9CisgICAgYXNzZXJ0KDApOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK2FueWxpYl9jb3VudChpbnQga2luZCwgUHlPYmplY3QgKnNzdHIsIHZvaWQqIHNidWYsIFB5X3NzaXplX3Qgc2xlbiwKKyAgICAgICAgICAgICBQeU9iamVjdCAqc3RyMSwgdm9pZCAqYnVmMSwgUHlfc3NpemVfdCBsZW4xLCBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3N0cikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN0cjEpKQorICAgICAgICAgICAgcmV0dXJuIGFzY2lpbGliX2NvdW50KHNidWYsIHNsZW4sIGJ1ZjEsIGxlbjEsIG1heGNvdW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfY291bnQoc2J1Ziwgc2xlbiwgYnVmMSwgbGVuMSwgbWF4Y291bnQpOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3MybGliX2NvdW50KHNidWYsIHNsZW4sIGJ1ZjEsIGxlbjEsIG1heGNvdW50KTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzNGxpYl9jb3VudChzYnVmLCBzbGVuLCBidWYxLCBsZW4xLCBtYXhjb3VudCk7CisgICAgfQorICAgIGFzc2VydCgwKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3JlcGxhY2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHIxLAorICAgICAgICBQeU9iamVjdCAqc3RyMiwgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBQeU9iamVjdCAqdTsKKyAgICBjaGFyICpzYnVmID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgY2hhciAqYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cjEpOworICAgIGNoYXIgKmJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdHIyKTsKKyAgICBpbnQgc3JlbGVhc2UgPSAwLCByZWxlYXNlMSA9IDAsIHJlbGVhc2UyID0gMDsKKyAgICBpbnQgc2tpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBpbnQga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIxKTsKKyAgICBpbnQga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdHIyKTsKKyAgICBQeV9zc2l6ZV90IHNsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBQeV9zc2l6ZV90IGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKTsKKyAgICBQeV9zc2l6ZV90IGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIyKTsKKyAgICBpbnQgbWF5c2hyaW5rOworICAgIFB5X1VDUzQgbWF4Y2hhciwgbWF4Y2hhcl9zdHIyOwogCiAgICAgaWYgKG1heGNvdW50IDwgMCkKICAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IHNlbGYtPmxlbmd0aCA9PSAwKQorICAgIGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgc2xlbiA9PSAwKQogICAgICAgICBnb3RvIG5vdGhpbmc7CiAKLSAgICBpZiAoc3RyMS0+bGVuZ3RoID09IHN0cjItPmxlbmd0aCkgewotICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgaWYgKHN0cjEgPT0gc3RyMikKKyAgICAgICAgZ290byBub3RoaW5nOworICAgIGlmIChza2luZCA8IGtpbmQxKQorICAgICAgICAvKiBzdWJzdHJpbmcgdG9vIHdpZGUgdG8gYmUgcHJlc2VudCAqLworICAgICAgICBnb3RvIG5vdGhpbmc7CisKKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHNlbGYpOworICAgIG1heGNoYXJfc3RyMiA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIyKTsKKyAgICAvKiBSZXBsYWNpbmcgc3RyMSB3aXRoIHN0cjIgbWF5IGNhdXNlIGEgbWF4Y2hhciByZWR1Y3Rpb24gaW4gdGhlCisgICAgICAgcmVzdWx0IHN0cmluZy4gKi8KKyAgICBtYXlzaHJpbmsgPSAobWF4Y2hhcl9zdHIyIDwgbWF4Y2hhcik7CisgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIG1heGNoYXJfc3RyMik7CisKKyAgICBpZiAobGVuMSA9PSBsZW4yKSB7CiAgICAgICAgIC8qIHNhbWUgbGVuZ3RoICovCi0gICAgICAgIGlmIChzdHIxLT5sZW5ndGggPT0gMCkKKyAgICAgICAgaWYgKGxlbjEgPT0gMCkKICAgICAgICAgICAgIGdvdG8gbm90aGluZzsKLSAgICAgICAgaWYgKHN0cjEtPmxlbmd0aCA9PSAxKSB7CisgICAgICAgIGlmIChsZW4xID09IDEpIHsKICAgICAgICAgICAgIC8qIHJlcGxhY2UgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgUHlfVU5JQ09ERSB1MSwgdTI7Ci0gICAgICAgICAgICBpZiAoIWZpbmRjaGFyKHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBzdHIxLT5zdHJbMF0pKQorICAgICAgICAgICAgUHlfVUNTNCB1MSwgdTI7CisgICAgICAgICAgICBpbnQgcmtpbmQ7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGluZGV4LCBwb3M7CisgICAgICAgICAgICBjaGFyICpzcmM7CisKKyAgICAgICAgICAgIHUxID0gUHlVbmljb2RlX1JFQURfQ0hBUihzdHIxLCAwKTsKKyAgICAgICAgICAgIHBvcyA9IGZpbmRjaGFyKHNidWYsIFB5VW5pY29kZV9LSU5EKHNlbGYpLCBzbGVuLCB1MSwgMSk7CisgICAgICAgICAgICBpZiAocG9zIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIG5vdGhpbmc7Ci0gICAgICAgICAgICB1ID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzZWxmLT5sZW5ndGgpOworICAgICAgICAgICAgdTIgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHN0cjIsIDApOworICAgICAgICAgICAgdSA9IFB5VW5pY29kZV9OZXcoc2xlbiwgbWF4Y2hhcik7CiAgICAgICAgICAgICBpZiAoIXUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyLCBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7Ci0gICAgICAgICAgICB1MSA9IHN0cjEtPnN0clswXTsKLSAgICAgICAgICAgIHUyID0gc3RyMi0+c3RyWzBdOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHUtPmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGlmICh1LT5zdHJbaV0gPT0gdTEpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKC0tbWF4Y291bnQgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIHUtPnN0cltpXSA9IHUyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGkgPSBzdHJpbmdsaWJfZmluZCgKLSAgICAgICAgICAgICAgICBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgc3RyMS0+c3RyLCBzdHIxLT5sZW5ndGgsIDAKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh1LCAwLCBzZWxmLCAwLCBzbGVuKTsKKyAgICAgICAgICAgIHJraW5kID0gUHlVbmljb2RlX0tJTkQodSk7CisKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgUHlVbmljb2RlX0RBVEEodSksIHBvcywgdTIpOworICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICAgICAgc3JjID0gc2J1ZjsKKyAgICAgICAgICAgIHdoaWxlICgtLW1heGNvdW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBvcysrOworICAgICAgICAgICAgICAgIHNyYyArPSBwb3MgKiBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICAgICAgICAgICAgICBzbGVuIC09IHBvczsKKyAgICAgICAgICAgICAgICBpbmRleCArPSBwb3M7CisgICAgICAgICAgICAgICAgcG9zID0gZmluZGNoYXIoc3JjLCBQeVVuaWNvZGVfS0lORChzZWxmKSwgc2xlbiwgdTEsIDEpOworICAgICAgICAgICAgICAgIGlmIChwb3MgPCAwKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUocmtpbmQsIFB5VW5pY29kZV9EQVRBKHUpLCBpbmRleCArIHBvcywgdTIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IHJraW5kID0gc2tpbmQ7CisgICAgICAgICAgICBjaGFyICpyZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgICAgIGlmIChraW5kMSA8IHJraW5kKSB7CisgICAgICAgICAgICAgICAgLyogd2lkZW4gc3Vic3RyaW5nICovCisgICAgICAgICAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjEsIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcmVsZWFzZTEgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSA9IGFueWxpYl9maW5kKHJraW5kLCBzZWxmLCBzYnVmLCBzbGVuLCBzdHIxLCBidWYxLCBsZW4xLCAwKTsKICAgICAgICAgICAgIGlmIChpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIG5vdGhpbmc7Ci0gICAgICAgICAgICB1ID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzZWxmLT5sZW5ndGgpOworICAgICAgICAgICAgaWYgKHJraW5kID4ga2luZDIpIHsKKyAgICAgICAgICAgICAgICAvKiB3aWRlbiByZXBsYWNlbWVudCAqLworICAgICAgICAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdHIyLCBya2luZCk7CisgICAgICAgICAgICAgICAgaWYgKCFidWYyKSBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIHJlbGVhc2UyID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHJraW5kIDwga2luZDIpIHsKKyAgICAgICAgICAgICAgICAvKiB3aWRlbiBzZWxmIGFuZCBidWYxICovCisgICAgICAgICAgICAgICAgcmtpbmQgPSBraW5kMjsKKyAgICAgICAgICAgICAgICBpZiAocmVsZWFzZTEpIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgICAgICAgICAgICAgc2J1ZiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlbGYsIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIXNidWYpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgc3JlbGVhc2UgPSAxOworICAgICAgICAgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHIxLCBya2luZCk7CisgICAgICAgICAgICAgICAgaWYgKCFidWYxKSBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIHJlbGVhc2UxID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHUgPSBQeVVuaWNvZGVfTmV3KHNsZW4sIG1heGNoYXIpOwogICAgICAgICAgICAgaWYgKCF1KQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHUtPnN0ciwgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQodSkgPT0gcmtpbmQpOworICAgICAgICAgICAgcmVzID0gUHlVbmljb2RlX0RBVEEodSk7CiAKKyAgICAgICAgICAgIG1lbWNweShyZXMsIHNidWYsIHJraW5kICogc2xlbik7CiAgICAgICAgICAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHUtPnN0citpLCBzdHIyLT5zdHIsIHN0cjItPmxlbmd0aCk7Ci0gICAgICAgICAgICBpICs9IHN0cjEtPmxlbmd0aDsKKyAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgYnVmMiwKKyAgICAgICAgICAgICAgICAgICBya2luZCAqIGxlbjIpOworICAgICAgICAgICAgaSArPSBsZW4xOwogCiAgICAgICAgICAgICB3aGlsZSAoIC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaSA9IHN0cmluZ2xpYl9maW5kKHNlbGYtPnN0citpLCBzZWxmLT5sZW5ndGgtaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyMS0+c3RyLCBzdHIxLT5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkpOworICAgICAgICAgICAgICAgIGkgPSBhbnlsaWJfZmluZChya2luZCwgc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2J1Zitya2luZCppLCBzbGVuLWksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cjEsIGJ1ZjEsIGxlbjEsIGkpOwogICAgICAgICAgICAgICAgIGlmIChpID09IC0xKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyK2ksIHN0cjItPnN0ciwgc3RyMi0+bGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBpICs9IHN0cjEtPmxlbmd0aDsKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpLAorICAgICAgICAgICAgICAgICAgICAgICBidWYyLAorICAgICAgICAgICAgICAgICAgICAgICBya2luZCAqIGxlbjIpOworICAgICAgICAgICAgICAgIGkgKz0gbGVuMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9zc2l6ZV90IG4sIGksIGosIGlyZXM7CisgICAgICAgIFB5X3NzaXplX3QgcHJvZHVjdCwgbmV3X3NpemU7CisgICAgICAgIGludCBya2luZCA9IHNraW5kOworICAgICAgICBjaGFyICpyZXM7CiAKLSAgICAgICAgUHlfc3NpemVfdCBuLCBpLCBqOwotICAgICAgICBQeV9zc2l6ZV90IHByb2R1Y3QsIG5ld19zaXplLCBkZWx0YTsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLQotICAgICAgICAvKiByZXBsYWNlIHN0cmluZ3MgKi8KLSAgICAgICAgbiA9IHN0cmluZ2xpYl9jb3VudChzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgc3RyMS0+c3RyLCBzdHIxLT5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOworICAgICAgICBpZiAoa2luZDEgPCBya2luZCkgeworICAgICAgICAgICAgLyogd2lkZW4gc3Vic3RyaW5nICovCisgICAgICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyMSwgcmtpbmQpOworICAgICAgICAgICAgaWYgKCFidWYxKSBnb3RvIGVycm9yOworICAgICAgICAgICAgcmVsZWFzZTEgPSAxOworICAgICAgICB9CisgICAgICAgIG4gPSBhbnlsaWJfY291bnQocmtpbmQsIHNlbGYsIHNidWYsIHNsZW4sIHN0cjEsIGJ1ZjEsIGxlbjEsIG1heGNvdW50KTsKICAgICAgICAgaWYgKG4gPT0gMCkKICAgICAgICAgICAgIGdvdG8gbm90aGluZzsKLSAgICAgICAgLyogbmV3X3NpemUgPSBzZWxmLT5sZW5ndGggKyBuICogKHN0cjItPmxlbmd0aCAtIHN0cjEtPmxlbmd0aCkpOyAqLwotICAgICAgICBkZWx0YSA9IChzdHIyLT5sZW5ndGggLSBzdHIxLT5sZW5ndGgpOwotICAgICAgICBpZiAoZGVsdGEgPT0gMCkgewotICAgICAgICAgICAgbmV3X3NpemUgPSBzZWxmLT5sZW5ndGg7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwcm9kdWN0ID0gbiAqIChzdHIyLT5sZW5ndGggLSBzdHIxLT5sZW5ndGgpOwotICAgICAgICAgICAgaWYgKChwcm9kdWN0IC8gKHN0cjItPmxlbmd0aCAtIHN0cjEtPmxlbmd0aCkpICE9IG4pIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBuZXdfc2l6ZSA9IHNlbGYtPmxlbmd0aCArIHByb2R1Y3Q7Ci0gICAgICAgICAgICBpZiAobmV3X3NpemUgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoa2luZDIgPCBya2luZCkgeworICAgICAgICAgICAgLyogd2lkZW4gcmVwbGFjZW1lbnQgKi8KKyAgICAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdHIyLCBya2luZCk7CisgICAgICAgICAgICBpZiAoIWJ1ZjIpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICByZWxlYXNlMiA9IDE7CiAgICAgICAgIH0KLSAgICAgICAgdSA9IF9QeVVuaWNvZGVfTmV3KG5ld19zaXplKTsKKyAgICAgICAgZWxzZSBpZiAoa2luZDIgPiBya2luZCkgeworICAgICAgICAgICAgLyogd2lkZW4gc2VsZiBhbmQgYnVmMSAqLworICAgICAgICAgICAgcmtpbmQgPSBraW5kMjsKKyAgICAgICAgICAgIHNidWYgPSBfUHlVbmljb2RlX0FzS2luZChzZWxmLCBya2luZCk7CisgICAgICAgICAgICBpZiAoIXNidWYpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBzcmVsZWFzZSA9IDE7CisgICAgICAgICAgICBpZiAocmVsZWFzZTEpIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyMSwgcmtpbmQpOworICAgICAgICAgICAgaWYgKCFidWYxKSBnb3RvIGVycm9yOworICAgICAgICAgICAgcmVsZWFzZTEgPSAxOworICAgICAgICB9CisgICAgICAgIC8qIG5ld19zaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgKyBuICogKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjIpIC0KKyAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMSkpKTsgKi8KKyAgICAgICAgcHJvZHVjdCA9IG4gKiAobGVuMi1sZW4xKTsKKyAgICAgICAgaWYgKChwcm9kdWN0IC8gKGxlbjItbGVuMSkpICE9IG4pIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBuZXdfc2l6ZSA9IHNsZW4gKyBwcm9kdWN0OworICAgICAgICBpZiAobmV3X3NpemUgPT0gMCkgeworICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICAgICAgdSA9IHVuaWNvZGVfZW1wdHk7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5ld19zaXplIDwgMCB8fCBuZXdfc2l6ZSA+IChQWV9TU0laRV9UX01BWCA+PiAocmtpbmQtMSkpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgdSA9IFB5VW5pY29kZV9OZXcobmV3X3NpemUsIG1heGNoYXIpOwogICAgICAgICBpZiAoIXUpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaSA9IDA7Ci0gICAgICAgIHAgPSB1LT5zdHI7Ci0gICAgICAgIGlmIChzdHIxLT5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQodSkgPT0gcmtpbmQpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICAgICAgaXJlcyA9IGkgPSAwOworICAgICAgICBpZiAobGVuMSA+IDApIHsKICAgICAgICAgICAgIHdoaWxlIChuLS0gPiAwKSB7CiAgICAgICAgICAgICAgICAgLyogbG9vayBmb3IgbmV4dCBtYXRjaCAqLwotICAgICAgICAgICAgICAgIGogPSBzdHJpbmdsaWJfZmluZChzZWxmLT5zdHIraSwgc2VsZi0+bGVuZ3RoLWksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cjEtPnN0ciwgc3RyMS0+bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKTsKKyAgICAgICAgICAgICAgICBqID0gYW55bGliX2ZpbmQocmtpbmQsIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNidWYgKyBya2luZCAqIGksIHNsZW4taSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyMSwgYnVmMSwgbGVuMSwgaSk7CiAgICAgICAgICAgICAgICAgaWYgKGogPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGogPiBpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIGNvcHkgdW5jaGFuZ2VkIHBhcnQgW2k6al0gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIHNlbGYtPnN0citpLCBqLWkpOwotICAgICAgICAgICAgICAgICAgICBwICs9IGogLSBpOworICAgICAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2J1ZiArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJraW5kICogKGotaSkpOworICAgICAgICAgICAgICAgICAgICBpcmVzICs9IGogLSBpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBjb3B5IHN1YnN0aXR1dGlvbiBzdHJpbmcgKi8KLSAgICAgICAgICAgICAgICBpZiAoc3RyMi0+bGVuZ3RoID4gMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc3RyMi0+c3RyLCBzdHIyLT5sZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICBwICs9IHN0cjItPmxlbmd0aDsKKyAgICAgICAgICAgICAgICBpZiAobGVuMiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBya2luZCAqIGxlbjIpOworICAgICAgICAgICAgICAgICAgICBpcmVzICs9IGxlbjI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGkgPSBqICsgc3RyMS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIGkgPSBqICsgbGVuMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpIDwgc2VsZi0+bGVuZ3RoKQorICAgICAgICAgICAgaWYgKGkgPCBzbGVuKQogICAgICAgICAgICAgICAgIC8qIGNvcHkgdGFpbCBbaTpdICovCi0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIHNlbGYtPnN0citpLCBzZWxmLT5sZW5ndGgtaSk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgc2J1ZiArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmtpbmQgKiAoc2xlbi1pKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBpbnRlcmxlYXZlICovCiAgICAgICAgICAgICB3aGlsZSAobiA+IDApIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc3RyMi0+c3RyLCBzdHIyLT5sZW5ndGgpOwotICAgICAgICAgICAgICAgIHAgKz0gc3RyMi0+bGVuZ3RoOworICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgICAgIGJ1ZjIsCisgICAgICAgICAgICAgICAgICAgICAgIHJraW5kICogbGVuMik7CisgICAgICAgICAgICAgICAgaXJlcyArPSBsZW4yOwogICAgICAgICAgICAgICAgIGlmICgtLW4gPD0gMCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgKnArKyA9IHNlbGYtPnN0cltpKytdOworICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgICAgIHNidWYgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgICAgIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpcmVzKys7CisgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIHNlbGYtPnN0citpLCBzZWxmLT5sZW5ndGgtaSk7CisgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgIHNidWYgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgcmtpbmQgKiAoc2xlbi1pKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKSB1OworCisgICAgaWYgKG1heXNocmluaykgeworICAgICAgICB1bmljb2RlX2FkanVzdF9tYXhjaGFyKCZ1KTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgIGRvbmU6CisgICAgaWYgKHNyZWxlYXNlKQorICAgICAgICBQeU1lbV9GUkVFKHNidWYpOworICAgIGlmIChyZWxlYXNlMSkKKyAgICAgICAgUHlNZW1fRlJFRShidWYxKTsKKyAgICBpZiAocmVsZWFzZTIpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMik7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1LCAxKSk7CisgICAgcmV0dXJuIHU7CiAKICAgbm90aGluZzoKICAgICAvKiBub3RoaW5nIHRvIHJlcGxhY2U7IHJldHVybiBvcmlnaW5hbCBzdHJpbmcgKHdoZW4gcG9zc2libGUpICovCi0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOwotICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoKTsKKyAgICBpZiAoc3JlbGVhc2UpCisgICAgICAgIFB5TWVtX0ZSRUUoc2J1Zik7CisgICAgaWYgKHJlbGVhc2UxKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjEpOworICAgIGlmIChyZWxlYXNlMikKKyAgICAgICAgUHlNZW1fRlJFRShidWYyKTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworCisgIGVycm9yOgorICAgIGlmIChzcmVsZWFzZSAmJiBzYnVmKQorICAgICAgICBQeU1lbV9GUkVFKHNidWYpOworICAgIGlmIChyZWxlYXNlMSAmJiBidWYxKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjEpOworICAgIGlmIChyZWxlYXNlMiAmJiBidWYyKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjIpOworICAgIHJldHVybiBOVUxMOwogfQogCiAvKiAtLS0gVW5pY29kZSBPYmplY3QgTWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTcwOTMsOSArMTAzMTksMTEgQEAKIGNoYXJhY3RlcnMsIGFsbCByZW1haW5pbmcgY2FzZWQgY2hhcmFjdGVycyBoYXZlIGxvd2VyIGNhc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfdGl0bGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV90aXRsZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gZml4dXAoc2VsZiwgZml4dGl0bGUpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb190aXRsZSk7CiB9CiAKIFB5RG9jX1NUUlZBUihjYXBpdGFsaXplX19kb2NfXywKQEAgLTcxMDUsNTcgKzEwMzMzLDM4IEBACiBoYXZlIHVwcGVyIGNhc2UgYW5kIHRoZSByZXN0IGxvd2VyIGNhc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfY2FwaXRhbGl6ZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2NhcGl0YWxpemUoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIGZpeHVwKHNlbGYsIGZpeGNhcGl0YWxpemUpOwotfQotCi0jaWYgMAotUHlEb2NfU1RSVkFSKGNhcHdvcmRzX19kb2NfXywKLSAgICAgICAgICAgICAiUy5jYXB3b3JkcygpIC0+IHN0clxuXAotXG5cCi1BcHBseSAuY2FwaXRhbGl6ZSgpIHRvIGFsbCB3b3JkcyBpbiBTIGFuZCByZXR1cm4gdGhlIHJlc3VsdCB3aXRoXG5cCi1ub3JtYWxpemVkIHdoaXRlc3BhY2UgKGFsbCB3aGl0ZXNwYWNlIHN0cmluZ3MgYXJlIHJlcGxhY2VkIGJ5ICcgJykuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfY2Fwd29yZHMoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQotewotICAgIFB5T2JqZWN0ICpsaXN0OwotICAgIFB5T2JqZWN0ICppdGVtOwotICAgIFB5X3NzaXplX3QgaTsKLQotICAgIC8qIFNwbGl0IGludG8gd29yZHMgKi8KLSAgICBsaXN0ID0gc3BsaXQoc2VsZiwgTlVMTCwgLTEpOwotICAgIGlmICghbGlzdCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIENhcGl0YWxpemUgZWFjaCB3b3JkICovCi0gICAgZm9yIChpID0gMDsgaSA8IFB5TGlzdF9HRVRfU0laRShsaXN0KTsgaSsrKSB7Ci0gICAgICAgIGl0ZW0gPSBmaXh1cCgoUHlVbmljb2RlT2JqZWN0ICopUHlMaXN0X0dFVF9JVEVNKGxpc3QsIGkpLAotICAgICAgICAgICAgICAgICAgICAgZml4Y2FwaXRhbGl6ZSk7Ci0gICAgICAgIGlmIChpdGVtID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIFB5X0RFQ1JFRihQeUxpc3RfR0VUX0lURU0obGlzdCwgaSkpOwotICAgICAgICBQeUxpc3RfU0VUX0lURU0obGlzdCwgaSwgaXRlbSk7Ci0gICAgfQotCi0gICAgLyogSm9pbiB0aGUgd29yZHMgdG8gZm9ybSBhIG5ldyBzdHJpbmcgKi8KLSAgICBpdGVtID0gUHlVbmljb2RlX0pvaW4oTlVMTCwgbGlzdCk7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKWl0ZW07CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpID09IDApCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX2NhcGl0YWxpemUpOwogfQotI2VuZGlmCisKK1B5RG9jX1NUUlZBUihjYXNlZm9sZF9fZG9jX18sCisgICAgICAgICAgICAgIlMuY2FzZWZvbGQoKSAtPiBzdHJcblwKK1xuXAorUmV0dXJuIGEgdmVyc2lvbiBvZiBTIHN1aXRhYmxlIGZvciBjYXNlbGVzcyBjb21wYXJpc29ucy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfY2FzZWZvbGQoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgcmV0dXJuIGFzY2lpX3VwcGVyX29yX2xvd2VyKHNlbGYsIDEpOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb19jYXNlZm9sZCk7Cit9CisKIAogLyogQXJndW1lbnQgY29udmVydGVyLiAgQ29lcmNlcyB0byBhIHNpbmdsZSB1bmljb2RlIGNoYXJhY3RlciAqLwogCiBzdGF0aWMgaW50CiBjb252ZXJ0X3VjKFB5T2JqZWN0ICpvYmosIHZvaWQgKmFkZHIpCiB7Ci0gICAgUHlfVU5JQ09ERSAqZmlsbGNoYXJsb2MgPSAoUHlfVU5JQ09ERSAqKWFkZHI7CisgICAgUHlfVUNTNCAqZmlsbGNoYXJsb2MgPSAoUHlfVUNTNCAqKWFkZHI7CiAgICAgUHlPYmplY3QgKnVuaW9iajsKLSAgICBQeV9VTklDT0RFICp1bmlzdHI7CiAKICAgICB1bmlvYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvYmopOwogICAgIGlmICh1bmlvYmogPT0gTlVMTCkgewpAQCAtNzE2MywxNCArMTAzNzIsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBVbmljb2RlIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHVuaW9iaikgIT0gMSkgeworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmlvYmopICE9IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgbXVzdCBiZSBleGFjdGx5IG9uZSBjaGFyYWN0ZXIgbG9uZyIpOwogICAgICAgICBQeV9ERUNSRUYodW5pb2JqKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHVuaXN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaW9iaik7Ci0gICAgKmZpbGxjaGFybG9jID0gdW5pc3RyWzBdOworICAgICpmaWxsY2hhcmxvYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pb2JqLCAwKTsKICAgICBQeV9ERUNSRUYodW5pb2JqKTsKICAgICByZXR1cm4gMTsKIH0KQEAgLTcxODIsMTEyICsxMDM5MCw2NCBAQAogZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2NlbnRlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9jZW50ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgbWFyZywgbGVmdDsKICAgICBQeV9zc2l6ZV90IHdpZHRoOwotICAgIFB5X1VOSUNPREUgZmlsbGNoYXIgPSAnICc7CisgICAgUHlfVUNTNCBmaWxsY2hhciA9ICcgJzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxPJjpjZW50ZXIiLCAmd2lkdGgsIGNvbnZlcnRfdWMsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmxlbmd0aCA+PSB3aWR0aCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG1hcmcgPSB3aWR0aCAtIHNlbGYtPmxlbmd0aDsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPj0gd2lkdGgpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgICBtYXJnID0gd2lkdGggLSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICBsZWZ0ID0gbWFyZyAvIDIgKyAobWFyZyAmIHdpZHRoICYgMSk7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgcGFkKHNlbGYsIGxlZnQsIG1hcmcgLSBsZWZ0LCBmaWxsY2hhcik7CisgICAgcmV0dXJuIHBhZChzZWxmLCBsZWZ0LCBtYXJnIC0gbGVmdCwgZmlsbGNoYXIpOwogfQogCi0jaWYgMAotCi0vKiBUaGlzIGNvZGUgc2hvdWxkIGdvIGludG8gc29tZSBmdXR1cmUgVW5pY29kZSBjb2xsYXRpb24gc3VwcG9ydAotICAgbW9kdWxlLiBUaGUgYmFzaWMgY29tcGFyaXNvbiBzaG91bGQgY29tcGFyZSBvcmRpbmFscyBvbiBhIG5haXZlCi0gICBiYXNpcyAodGhpcyBpcyB3aGF0IEphdmEgZG9lcyBhbmQgdGh1cyBKeXRob24gdG9vKS4gKi8KLQotLyogc3BlZWR5IFVURi0xNiBjb2RlIHBvaW50IG9yZGVyIGNvbXBhcmlzb24gKi8KLS8qIGdsZWFuZWQgZnJvbTogKi8KLS8qIGh0dHA6Ly93d3ctNC5pYm0uY29tL3NvZnR3YXJlL2RldmVsb3Blci9saWJyYXJ5L3V0ZjE2Lmh0bWw/ZHd6b25lPXVuaWNvZGUgKi8KLQotc3RhdGljIHNob3J0IHV0ZjE2Rml4dXBbMzJdID0KLXsKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAwLCAwLCAweDIwMDAsIC0weDgwMCwgLTB4ODAwLCAtMHg4MDAsIC0weDgwMAotfTsKKy8qIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHN0cjEgYW5kIHN0cjIgYXJlIHJlYWRpZWQgYnkgdGhlIGNhbGxlci4gKi8KIAogc3RhdGljIGludAotdW5pY29kZV9jb21wYXJlKFB5VW5pY29kZU9iamVjdCAqc3RyMSwgUHlVbmljb2RlT2JqZWN0ICpzdHIyKQordW5pY29kZV9jb21wYXJlKFB5T2JqZWN0ICpzdHIxLCBQeU9iamVjdCAqc3RyMikKIHsKLSAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CisgICAgaW50IGtpbmQxLCBraW5kMjsKKyAgICB2b2lkICpkYXRhMSwgKmRhdGEyOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMiwgaTsKIAotICAgIFB5X1VOSUNPREUgKnMxID0gc3RyMS0+c3RyOwotICAgIFB5X1VOSUNPREUgKnMyID0gc3RyMi0+c3RyOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyMSk7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdHIyKTsKKyAgICBkYXRhMSA9IFB5VW5pY29kZV9EQVRBKHN0cjEpOworICAgIGRhdGEyID0gUHlVbmljb2RlX0RBVEEoc3RyMik7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjEpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIyKTsKIAotICAgIGxlbjEgPSBzdHIxLT5sZW5ndGg7Ci0gICAgbGVuMiA9IHN0cjItPmxlbmd0aDsKLQotICAgIHdoaWxlIChsZW4xID4gMCAmJiBsZW4yID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGMxLCBjMjsKLQotICAgICAgICBjMSA9ICpzMSsrOwotICAgICAgICBjMiA9ICpzMisrOwotCi0gICAgICAgIGlmIChjMSA+ICgxPDwxMSkgKiAyNikKLSAgICAgICAgICAgIGMxICs9IHV0ZjE2Rml4dXBbYzE+PjExXTsKLSAgICAgICAgaWYgKGMyID4gKDE8PDExKSAqIDI2KQotICAgICAgICAgICAgYzIgKz0gdXRmMTZGaXh1cFtjMj4+MTFdOwotICAgICAgICAvKiBub3cgYzEgYW5kIGMyIGFyZSBpbiBVVEYtMzItY29tcGF0aWJsZSBvcmRlciAqLworICAgIGZvciAoaSA9IDA7IGkgPCBsZW4xICYmIGkgPCBsZW4yOyArK2kpIHsKKyAgICAgICAgUHlfVUNTNCBjMSwgYzI7CisgICAgICAgIGMxID0gUHlVbmljb2RlX1JFQUQoa2luZDEsIGRhdGExLCBpKTsKKyAgICAgICAgYzIgPSBQeVVuaWNvZGVfUkVBRChraW5kMiwgZGF0YTIsIGkpOwogCiAgICAgICAgIGlmIChjMSAhPSBjMikKICAgICAgICAgICAgIHJldHVybiAoYzEgPCBjMikgPyAtMSA6IDE7Ci0KLSAgICAgICAgbGVuMS0tOyBsZW4yLS07CiAgICAgfQogCiAgICAgcmV0dXJuIChsZW4xIDwgbGVuMikgPyAtMSA6IChsZW4xICE9IGxlbjIpOwogfQogCi0jZWxzZQotCi1zdGF0aWMgaW50Ci11bmljb2RlX2NvbXBhcmUoUHlVbmljb2RlT2JqZWN0ICpzdHIxLCBQeVVuaWNvZGVPYmplY3QgKnN0cjIpCitpbnQKK1B5VW5pY29kZV9Db21wYXJlKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwotCi0gICAgUHlfVU5JQ09ERSAqczEgPSBzdHIxLT5zdHI7Ci0gICAgUHlfVU5JQ09ERSAqczIgPSBzdHIyLT5zdHI7Ci0KLSAgICBsZW4xID0gc3RyMS0+bGVuZ3RoOwotICAgIGxlbjIgPSBzdHIyLT5sZW5ndGg7Ci0KLSAgICB3aGlsZSAobGVuMSA+IDAgJiYgbGVuMiA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjMSwgYzI7Ci0KLSAgICAgICAgYzEgPSAqczErKzsKLSAgICAgICAgYzIgPSAqczIrKzsKLQotICAgICAgICBpZiAoYzEgIT0gYzIpCi0gICAgICAgICAgICByZXR1cm4gKGMxIDwgYzIpID8gLTEgOiAxOwotCi0gICAgICAgIGxlbjEtLTsgbGVuMi0tOworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobGVmdCkgJiYgUHlVbmljb2RlX0NoZWNrKHJpZ2h0KSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxlZnQpID09IC0xIHx8CisgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRFkocmlnaHQpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gdW5pY29kZV9jb21wYXJlKGxlZnQsIHJpZ2h0KTsKICAgICB9Ci0KLSAgICByZXR1cm4gKGxlbjEgPCBsZW4yKSA/IC0xIDogKGxlbjEgIT0gbGVuMik7Ci19Ci0KLSNlbmRpZgotCi1pbnQgUHlVbmljb2RlX0NvbXBhcmUoUHlPYmplY3QgKmxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0KQotewotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobGVmdCkgJiYgUHlVbmljb2RlX0NoZWNrKHJpZ2h0KSkKLSAgICAgICAgcmV0dXJuIHVuaWNvZGVfY29tcGFyZSgoUHlVbmljb2RlT2JqZWN0ICopbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlVbmljb2RlT2JqZWN0ICopcmlnaHQpOwogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICJDYW4ndCBjb21wYXJlICUuMTAwcyBhbmQgJS4xMDBzIiwKICAgICAgICAgICAgICAgICAgbGVmdC0+b2JfdHlwZS0+dHBfbmFtZSwKQEAgLTcyOTgsMTcgKzEwNDU4LDIzIEBACiBpbnQKIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKFB5T2JqZWN0KiB1bmksIGNvbnN0IGNoYXIqIHN0cikKIHsKLSAgICBpbnQgaTsKLSAgICBQeV9VTklDT0RFICppZDsKLSAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHVuaSkpOwotICAgIGlkID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pKTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9VQ1M0IGNocjsKKworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHVuaSkpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmkpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmkpOwogICAgIC8qIENvbXBhcmUgVW5pY29kZSBzdHJpbmcgYW5kIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IHN0cmluZyAqLwotICAgIGZvciAoaSA9IDA7IGlkW2ldICYmIHN0cltpXTsgaSsrKQotICAgICAgICBpZiAoaWRbaV0gIT0gc3RyW2ldKQotICAgICAgICAgICAgcmV0dXJuICgoaW50KWlkW2ldIDwgKGludClzdHJbaV0pID8gLTEgOiAxOworICAgIGZvciAoaSA9IDA7IChjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkgJiYgc3RyW2ldOyBpKyspCisgICAgICAgIGlmIChjaHIgIT0gc3RyW2ldKQorICAgICAgICAgICAgcmV0dXJuIChjaHIgPCAodW5zaWduZWQgY2hhcikoc3RyW2ldKSkgPyAtMSA6IDE7CiAgICAgLyogVGhpcyBjaGVjayBrZWVwcyBQeXRob24gc3RyaW5ncyB0aGF0IGVuZCBpbiAnXDAnIGZyb20gY29tcGFyaW5nIGVxdWFsCiAgICAgIHRvIEMgc3RyaW5ncyBpZGVudGljYWwgdXAgdG8gdGhhdCBwb2ludC4gKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHVuaSkgIT0gaSB8fCBpZFtpXSkKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pKSAhPSBpIHx8IGNocikKICAgICAgICAgcmV0dXJuIDE7IC8qIHVuaSBpcyBsb25nZXIgKi8KICAgICBpZiAoc3RyW2ldKQogICAgICAgICByZXR1cm4gLTE7IC8qIHN0ciBpcyBsb25nZXIgKi8KQEAgLTczMTksMTYgKzEwNDg1LDE4IEBACiAjZGVmaW5lIFRFU1RfQ09ORChjb25kKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgKChjb25kKSA/IFB5X1RydWUgOiBQeV9GYWxzZSkKIAotUHlPYmplY3QgKlB5VW5pY29kZV9SaWNoQ29tcGFyZShQeU9iamVjdCAqbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ApCitQeU9iamVjdCAqCitQeVVuaWNvZGVfUmljaENvbXBhcmUoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCwgaW50IG9wKQogewogICAgIGludCByZXN1bHQ7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGxlZnQpICYmIFB5VW5pY29kZV9DaGVjayhyaWdodCkpIHsKICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgIGlmICgoKFB5VW5pY29kZU9iamVjdCAqKSBsZWZ0KS0+bGVuZ3RoICE9Ci0gICAgICAgICAgICAoKFB5VW5pY29kZU9iamVjdCAqKSByaWdodCktPmxlbmd0aCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxlZnQpID09IC0xIHx8CisgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRFkocmlnaHQpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChsZWZ0KSAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyaWdodCkgfHwKKyAgICAgICAgICAgIFB5VW5pY29kZV9LSU5EKGxlZnQpICE9IFB5VW5pY29kZV9LSU5EKHJpZ2h0KSkgewogICAgICAgICAgICAgaWYgKG9wID09IFB5X0VRKSB7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X0ZhbHNlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gUHlfRmFsc2U7CkBAIC03MzQxLDggKzEwNTA5LDcgQEAKICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCiAgICAgICAgICAgICByZXN1bHQgPSAwOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSB1bmljb2RlX2NvbXBhcmUoKFB5VW5pY29kZU9iamVjdCAqKWxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXJpZ2h0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHVuaWNvZGVfY29tcGFyZShsZWZ0LCByaWdodCk7CiAKICAgICAgICAgLyogQ29udmVydCB0aGUgcmV0dXJuIHZhbHVlIHRvIGEgQm9vbGVhbiAqLwogICAgICAgICBzd2l0Y2ggKG9wKSB7CkBAIC03MzcyLDE0ICsxMDUzOSwxNiBAQAogICAgICAgICByZXR1cm4gdjsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKLWludCBQeVVuaWNvZGVfQ29udGFpbnMoUHlPYmplY3QgKmNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQpCitpbnQKK1B5VW5pY29kZV9Db250YWlucyhQeU9iamVjdCAqY29udGFpbmVyLCBQeU9iamVjdCAqZWxlbWVudCkKIHsKICAgICBQeU9iamVjdCAqc3RyLCAqc3ViOworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogICAgIGludCByZXN1bHQ7CiAKICAgICAvKiBDb2VyY2UgdGhlIHR3byBhcmd1bWVudHMgKi8KQEAgLTczOTYsNTAgKzEwNTY1LDEwNiBAQAogICAgICAgICBQeV9ERUNSRUYoc3ViKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgIH0KIAotICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9jb250YWluc19vYmooc3RyLCBzdWIpOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yik7CisgICAga2luZCA9IGtpbmQxOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWIpOworICAgIGlmIChraW5kMiAhPSBraW5kKSB7CisgICAgICAgIGlmIChraW5kMiA+IGtpbmQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViLCBraW5kKTsKKyAgICB9CisgICAgaWYgKCFidWYyKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3ViKTsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczFsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCAwKSAhPSAtMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmVzdWx0ID0gdWNzMmxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIDApICE9IC0xOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3M0bGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgMCkgIT0gLTE7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJlc3VsdCA9IC0xOworICAgICAgICBhc3NlcnQoMCk7CisgICAgfQogCiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgUHlfREVDUkVGKHN1Yik7CiAKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qIENvbmNhdCB0byBzdHJpbmcgb3IgVW5pY29kZSBvYmplY3QgZ2l2aW5nIGEgbmV3IFVuaWNvZGUgb2JqZWN0LiAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0NvbmNhdChQeU9iamVjdCAqbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Db25jYXQoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnUgPSBOVUxMLCAqdiA9IE5VTEwsICp3OworICAgIFB5T2JqZWN0ICp1ID0gTlVMTCwgKnYgPSBOVUxMLCAqdzsKKyAgICBQeV9VQ1M0IG1heGNoYXIsIG1heGNoYXIyOworICAgIFB5X3NzaXplX3QgdV9sZW4sIHZfbGVuLCBuZXdfbGVuOwogCiAgICAgLyogQ29lcmNlIHRoZSB0d28gYXJndW1lbnRzICovCi0gICAgdSA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdChsZWZ0KTsKKyAgICB1ID0gUHlVbmljb2RlX0Zyb21PYmplY3QobGVmdCk7CiAgICAgaWYgKHUgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIHYgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QocmlnaHQpOworICAgIHYgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChyaWdodCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgLyogU2hvcnRjdXRzICovCiAgICAgaWYgKHYgPT0gdW5pY29kZV9lbXB0eSkgewogICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1OworICAgICAgICByZXR1cm4gdTsKICAgICB9CiAgICAgaWYgKHUgPT0gdW5pY29kZV9lbXB0eSkgewogICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OworICAgICAgICByZXR1cm4gdjsKICAgICB9CiAKKyAgICB1X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpOworICAgIHZfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodik7CisgICAgaWYgKHVfbGVuID4gUFlfU1NJWkVfVF9NQVggLSB2X2xlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzIGFyZSB0b28gbGFyZ2UgdG8gY29uY2F0Iik7CisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CisgICAgbmV3X2xlbiA9IHVfbGVuICsgdl9sZW47CisKKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHUpOworICAgIG1heGNoYXIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHYpOworICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBtYXhjaGFyMik7CisKICAgICAvKiBDb25jYXQgdGhlIHR3byBVbmljb2RlIHN0cmluZ3MgKi8KLSAgICB3ID0gX1B5VW5pY29kZV9OZXcodS0+bGVuZ3RoICsgdi0+bGVuZ3RoKTsKKyAgICB3ID0gUHlVbmljb2RlX05ldyhuZXdfbGVuLCBtYXhjaGFyKTsKICAgICBpZiAodyA9PSBOVUxMKQogICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgUHlfVU5JQ09ERV9DT1BZKHctPnN0ciwgdS0+c3RyLCB1LT5sZW5ndGgpOwotICAgIFB5X1VOSUNPREVfQ09QWSh3LT5zdHIgKyB1LT5sZW5ndGgsIHYtPnN0ciwgdi0+bGVuZ3RoKTsKLQorICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHcsIDAsIHUsIDAsIHVfbGVuKTsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3LCB1X2xlbiwgdiwgMCwgdl9sZW4pOwogICAgIFB5X0RFQ1JFRih1KTsKICAgICBQeV9ERUNSRUYodik7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXc7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh3LCAxKSk7CisgICAgcmV0dXJuIHc7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHUpOwpAQCAtNzQ0OCwxOSArMTA2NzMsODkgQEAKIH0KIAogdm9pZAotUHlVbmljb2RlX0FwcGVuZChQeU9iamVjdCAqKnBsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCitQeVVuaWNvZGVfQXBwZW5kKFB5T2JqZWN0ICoqcF9sZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgUHlPYmplY3QgKm5ldzsKLSAgICBpZiAoKnBsZWZ0ID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAocmlnaHQgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKCpwbGVmdCkpIHsKLSAgICAgICAgUHlfREVDUkVGKCpwbGVmdCk7Ci0gICAgICAgICpwbGVmdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmxlZnQsICpyZXM7CisgICAgUHlfVUNTNCBtYXhjaGFyLCBtYXhjaGFyMjsKKyAgICBQeV9zc2l6ZV90IGxlZnRfbGVuLCByaWdodF9sZW4sIG5ld19sZW47CisKKyAgICBpZiAocF9sZWZ0ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbmV3ID0gUHlVbmljb2RlX0NvbmNhdCgqcGxlZnQsIHJpZ2h0KTsKLSAgICBQeV9ERUNSRUYoKnBsZWZ0KTsKLSAgICAqcGxlZnQgPSBuZXc7CisgICAgbGVmdCA9ICpwX2xlZnQ7CisgICAgaWYgKHJpZ2h0ID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhsZWZ0KSkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxlZnQpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmlnaHQpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgLyogU2hvcnRjdXRzICovCisgICAgaWYgKGxlZnQgPT0gdW5pY29kZV9lbXB0eSkgeworICAgICAgICBQeV9ERUNSRUYobGVmdCk7CisgICAgICAgIFB5X0lOQ1JFRihyaWdodCk7CisgICAgICAgICpwX2xlZnQgPSByaWdodDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocmlnaHQgPT0gdW5pY29kZV9lbXB0eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGVmdF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChsZWZ0KTsKKyAgICByaWdodF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyaWdodCk7CisgICAgaWYgKGxlZnRfbGVuID4gUFlfU1NJWkVfVF9NQVggLSByaWdodF9sZW4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5ncyBhcmUgdG9vIGxhcmdlIHRvIGNvbmNhdCIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBuZXdfbGVuID0gbGVmdF9sZW4gKyByaWdodF9sZW47CisKKyAgICBpZiAodW5pY29kZV9tb2RpZmlhYmxlKGxlZnQpCisgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHJpZ2h0KQorICAgICAgICAmJiBQeVVuaWNvZGVfS0lORChyaWdodCkgPD0gUHlVbmljb2RlX0tJTkQobGVmdCkKKyAgICAgICAgLyogRG9uJ3QgcmVzaXplIGZvciBhc2NpaSArPSBsYXRpbjEuIENvbnZlcnQgYXNjaWkgdG8gbGF0aW4xIHJlcXVpcmVzCisgICAgICAgICAgIHRvIGNoYW5nZSB0aGUgc3RydWN0dXJlIHNpemUsIGJ1dCBjaGFyYWN0ZXJzIGFyZSBzdG9yZWQganVzdCBhZnRlcgorICAgICAgICAgICB0aGUgc3RydWN0dXJlLCBhbmQgc28gaXQgcmVxdWlyZXMgdG8gbW92ZSBhbGwgY2hhcmFjdGVycyB3aGljaCBpcworICAgICAgICAgICBub3Qgc28gZGlmZmVyZW50IHRoYW4gZHVwbGljYXRpbmcgdGhlIHN0cmluZy4gKi8KKyAgICAgICAgJiYgIShQeVVuaWNvZGVfSVNfQVNDSUkobGVmdCkgJiYgIVB5VW5pY29kZV9JU19BU0NJSShyaWdodCkpKQorICAgIHsKKyAgICAgICAgLyogYXBwZW5kIGlucGxhY2UgKi8KKyAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKHBfbGVmdCwgbmV3X2xlbikgIT0gMCkgeworICAgICAgICAgICAgLyogWFhYIGlmIF9QeVVuaWNvZGVfUmVzaXplKCkgZmFpbHMsICdsZWZ0JyBoYXMgYmVlbgorICAgICAgICAgICAgICogZGVhbGxvY2F0ZWQgc28gaXQgY2Fubm90IGJlIHB1dCBiYWNrIGludG8KKyAgICAgICAgICAgICAqICd2YXJpYWJsZScuICBUaGUgTWVtb3J5RXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlcmUKKyAgICAgICAgICAgICAqIGlzIG5vIHZhbHVlIGluICd2YXJpYWJsZScsIHdoaWNoIG1pZ2h0ICh2ZXJ5CisgICAgICAgICAgICAgKiByZW1vdGVseSkgYmUgYSBjYXVzZSBvZiBpbmNvbXBhdGliaWxpdGllcy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICAvKiBjb3B5ICdyaWdodCcgaW50byB0aGUgbmV3bHkgYWxsb2NhdGVkIGFyZWEgb2YgJ2xlZnQnICovCisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKCpwX2xlZnQsIGxlZnRfbGVuLCByaWdodCwgMCwgcmlnaHRfbGVuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUobGVmdCk7CisgICAgICAgIG1heGNoYXIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHJpZ2h0KTsKKyAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIG1heGNoYXIyKTsKKworICAgICAgICAvKiBDb25jYXQgdGhlIHR3byBVbmljb2RlIHN0cmluZ3MgKi8KKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyhuZXdfbGVuLCBtYXhjaGFyKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzLCAwLCBsZWZ0LCAwLCBsZWZ0X2xlbik7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlcywgbGVmdF9sZW4sIHJpZ2h0LCAwLCByaWdodF9sZW4pOworICAgICAgICBQeV9ERUNSRUYobGVmdCk7CisgICAgICAgICpwX2xlZnQgPSByZXM7CisgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKnBfbGVmdCwgMSkpOworICAgIHJldHVybjsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoKnBfbGVmdCk7CiB9CiAKIHZvaWQKQEAgLTc0NzgsMjMgKzEwNzczLDY0IEBACiBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfY291bnQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfY291bnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCBpcmVzdWx0OwogCiAgICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJjb3VudCIsIGFyZ3MsICZzdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc2VsZi0+bGVuZ3RoKTsKLSAgICByZXN1bHQgPSBQeUxvbmdfRnJvbVNzaXplX3QoCi0gICAgICAgIHN0cmluZ2xpYl9jb3VudChzZWxmLT5zdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWJzdHJpbmctPnN0ciwgc3Vic3RyaW5nLT5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0laRV9UX01BWCkKLSAgICAgICAgKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDIgPiBraW5kMSkKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICBraW5kID0ga2luZDE7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpcmVzdWx0ID0gdWNzMWxpYl9jb3VudCgKKyAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgaXJlc3VsdCA9IHVjczJsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzIqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIGlyZXN1bHQgPSB1Y3M0bGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1M0KilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7IGlyZXN1bHQgPSAwOworICAgIH0KKworICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tU3NpemVfdChpcmVzdWx0KTsKKworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAKQEAgLTc1MTIsNyArMTA4NDgsNyBAQAogY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9lbmNvZGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3VuaWNvZGVfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIDB9OwogICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKQEAgLTc1MjEsNyArMTA4NTcsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczplbmNvZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmVuY29kaW5nLCAmZXJyb3JzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiB9CiAKIFB5RG9jX1NUUlZBUihleHBhbmR0YWJzX19kb2NfXywKQEAgLTc1MzEsODIgKzEwODY3LDgyIEBACiBJZiB0YWJzaXplIGlzIG5vdCBnaXZlbiwgYSB0YWIgc2l6ZSBvZiA4IGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9leHBhbmR0YWJzKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2V4cGFuZHRhYnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgKmU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSAgICBQeV9VTklDT0RFICpxOwotICAgIFB5X1VOSUNPREUgKnFlOwotICAgIFB5X3NzaXplX3QgaSwgaiwgaW5jcjsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7CisgICAgUHlfc3NpemVfdCBpLCBqLCBsaW5lX3Bvcywgc3JjX2xlbiwgaW5jcjsKKyAgICBQeV9VQ1M0IGNoOworICAgIFB5T2JqZWN0ICp1OworICAgIHZvaWQgKnNyY19kYXRhLCAqZGVzdF9kYXRhOwogICAgIGludCB0YWJzaXplID0gODsKKyAgICBpbnQga2luZDsKKyAgICBpbnQgZm91bmQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmV4cGFuZHRhYnMiLCAmdGFic2l6ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBGaXJzdCBwYXNzOiBkZXRlcm1pbmUgc2l6ZSBvZiBvdXRwdXQgc3RyaW5nICovCi0gICAgaSA9IDA7IC8qIGNoYXJzIHVwIHRvIGFuZCBpbmNsdWRpbmcgbW9zdCByZWNlbnQgXG4gb3IgXHIgKi8KLSAgICBqID0gMDsgLyogY2hhcnMgc2luY2UgbW9zdCByZWNlbnQgXG4gb3IgXHIgKHVzZSBpbiB0YWIgY2FsY3VsYXRpb25zKSAqLwotICAgIGUgPSBzZWxmLT5zdHIgKyBzZWxmLT5sZW5ndGg7IC8qIGVuZCBvZiBpbnB1dCAqLwotICAgIGZvciAocCA9IHNlbGYtPnN0cjsgcCA8IGU7IHArKykKLSAgICAgICAgaWYgKCpwID09ICdcdCcpIHsKKyAgICBzcmNfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgaSA9IGogPSBsaW5lX3BvcyA9IDA7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIHNyY19kYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgZm91bmQgPSAwOworICAgIGZvciAoOyBpIDwgc3JjX2xlbjsgaSsrKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgc3JjX2RhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gJ1x0JykgeworICAgICAgICAgICAgZm91bmQgPSAxOwogICAgICAgICAgICAgaWYgKHRhYnNpemUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaW5jciA9IHRhYnNpemUgLSAoaiAlIHRhYnNpemUpOyAvKiBjYW5ub3Qgb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgICAgICBpbmNyID0gdGFic2l6ZSAtIChsaW5lX3BvcyAlIHRhYnNpemUpOyAvKiBjYW5ub3Qgb3ZlcmZsb3cgKi8KICAgICAgICAgICAgICAgICBpZiAoaiA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzE7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgICAgICAgICAgICAgbGluZV9wb3MgKz0gaW5jcjsKICAgICAgICAgICAgICAgICBqICs9IGluY3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoaiA+IFBZX1NTSVpFX1RfTUFYIC0gMSkKLSAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MTsKKyAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OworICAgICAgICAgICAgbGluZV9wb3MrKzsKICAgICAgICAgICAgIGorKzsKLSAgICAgICAgICAgIGlmICgqcCA9PSAnXG4nIHx8ICpwID09ICdccicpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSA+IFBZX1NTSVpFX1RfTUFYIC0gaikKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzE7Ci0gICAgICAgICAgICAgICAgaSArPSBqOwotICAgICAgICAgICAgICAgIGogPSAwOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNoID09ICdcbicgfHwgY2ggPT0gJ1xyJykKKyAgICAgICAgICAgICAgICBsaW5lX3BvcyA9IDA7CiAgICAgICAgIH0KLQotICAgIGlmIChpID4gUFlfU1NJWkVfVF9NQVggLSBqKQotICAgICAgICBnb3RvIG92ZXJmbG93MTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKIAogICAgIC8qIFNlY29uZCBwYXNzOiBjcmVhdGUgb3V0cHV0IHN0cmluZyBhbmQgZmlsbCBpdCAqLwotICAgIHUgPSBfUHlVbmljb2RlX05ldyhpICsgaik7CisgICAgdSA9IFB5VW5pY29kZV9OZXcoaiwgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHNlbGYpKTsKICAgICBpZiAoIXUpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGRlc3RfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHUpOwogCi0gICAgaiA9IDA7IC8qIHNhbWUgYXMgaW4gZmlyc3QgcGFzcyAqLwotICAgIHEgPSB1LT5zdHI7IC8qIG5leHQgb3V0cHV0IGNoYXIgKi8KLSAgICBxZSA9IHUtPnN0ciArIHUtPmxlbmd0aDsgLyogZW5kIG9mIG91dHB1dCAqLworICAgIGkgPSBqID0gbGluZV9wb3MgPSAwOwogCi0gICAgZm9yIChwID0gc2VsZi0+c3RyOyBwIDwgZTsgcCsrKQotICAgICAgICBpZiAoKnAgPT0gJ1x0JykgeworICAgIGZvciAoOyBpIDwgc3JjX2xlbjsgaSsrKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgc3JjX2RhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gJ1x0JykgewogICAgICAgICAgICAgaWYgKHRhYnNpemUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaSA9IHRhYnNpemUgLSAoaiAlIHRhYnNpemUpOwotICAgICAgICAgICAgICAgIGogKz0gaTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaS0tKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChxID49IHFlKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzI7Ci0gICAgICAgICAgICAgICAgICAgICpxKysgPSAnICc7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGluY3IgPSB0YWJzaXplIC0gKGxpbmVfcG9zICUgdGFic2l6ZSk7CisgICAgICAgICAgICAgICAgbGluZV9wb3MgKz0gaW5jcjsKKyAgICAgICAgICAgICAgICBGSUxMKGtpbmQsIGRlc3RfZGF0YSwgJyAnLCBqLCBpbmNyKTsKKyAgICAgICAgICAgICAgICBqICs9IGluY3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAocSA+PSBxZSkKLSAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MjsKLSAgICAgICAgICAgICpxKysgPSAqcDsKKyAgICAgICAgICAgIGxpbmVfcG9zKys7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGVzdF9kYXRhLCBqLCBjaCk7CiAgICAgICAgICAgICBqKys7Ci0gICAgICAgICAgICBpZiAoKnAgPT0gJ1xuJyB8fCAqcCA9PSAnXHInKQotICAgICAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgaWYgKGNoID09ICdcbicgfHwgY2ggPT0gJ1xyJykKKyAgICAgICAgICAgICAgICBsaW5lX3BvcyA9IDA7CiAgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0IChqID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpKTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodSk7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKLQotICBvdmVyZmxvdzI6Ci0gICAgUHlfREVDUkVGKHUpOwotICBvdmVyZmxvdzE6CisgIG92ZXJmbG93OgogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibmV3IHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNzYyMSw5ICsxMDk1Nyw5IEBACiBSZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZmluZChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9maW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CkBAIC03NjMyLDYzICsxMDk2OCwxMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3Vic3RyaW5nKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YnN0cmluZyksCi0gICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKIAogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogCisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2dldGl0ZW0oUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQordW5pY29kZV9nZXRpdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQogewotICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc2VsZi0+bGVuZ3RoKSB7CisgICAgdm9pZCAqZGF0YTsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgUHlfVUNTNCBjaDsKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc2VsZikgfHwgUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGluZGV4KTsKKyAgICBpZiAoY2ggPCAyNTYpCisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoY2gpOwogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmc2VsZi0+c3RyW2luZGV4XSwgMSk7CisgICAgcmVzID0gUHlVbmljb2RlX05ldygxLCBjaCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgMCwgY2gpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogLyogQmVsaWV2ZSBpdCBvciBub3QsIHRoaXMgcHJvZHVjZXMgdGhlIHNhbWUgdmFsdWUgZm9yIEFTQ0lJIHN0cmluZ3MKLSAgIGFzIHN0cmluZ19oYXNoKCkuICovCisgICBhcyBieXRlc19oYXNoKCkuICovCiBzdGF0aWMgUHlfaGFzaF90Ci11bmljb2RlX2hhc2goUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9oYXNoKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5X3NzaXplX3QgbGVuOwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgUHlfaGFzaF90IHg7CisgICAgUHlfdWhhc2hfdCB4OwogCiAjaWZkZWYgUHlfREVCVUcKICAgICBhc3NlcnQoX1B5X0hhc2hTZWNyZXRfSW5pdGlhbGl6ZWQpOwogI2VuZGlmCi0gICAgaWYgKHNlbGYtPmhhc2ggIT0gLTEpCi0gICAgICAgIHJldHVybiBzZWxmLT5oYXNoOwotICAgIGxlbiA9IFB5X1NJWkUoc2VsZik7CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTSChzZWxmKSAhPSAtMSkKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfSEFTSChzZWxmKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAgICAgLyoKICAgICAgIFdlIG1ha2UgdGhlIGhhc2ggb2YgdGhlIGVtcHR5IHN0cmluZyBiZSAwLCByYXRoZXIgdGhhbiB1c2luZwogICAgICAgKHByZWZpeCBeIHN1ZmZpeCksIHNpbmNlIHRoaXMgc2xpZ2h0bHkgb2JmdXNjYXRlcyB0aGUgaGFzaCBzZWNyZXQKICAgICAqLwogICAgIGlmIChsZW4gPT0gMCkgewotICAgICAgICBzZWxmLT5oYXNoID0gMDsKKyAgICAgICAgX1B5VW5pY29kZV9IQVNIKHNlbGYpID0gMDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHAgPSBzZWxmLT5zdHI7Ci0gICAgeCA9IF9QeV9IYXNoU2VjcmV0LnByZWZpeDsKLSAgICB4IF49ICpwIDw8IDc7Ci0gICAgd2hpbGUgKC0tbGVuID49IDApCi0gICAgICAgIHggPSAoX1B5SEFTSF9NVUxUSVBMSUVSKngpIF4gKnArKzsKLSAgICB4IF49IFB5X1NJWkUoc2VsZik7Ci0gICAgeCBePSBfUHlfSGFzaFNlY3JldC5zdWZmaXg7CisKKyAgICAvKiBUaGUgaGFzaCBmdW5jdGlvbiBhcyBhIG1hY3JvLCBnZXRzIGV4cGFuZGVkIHRocmVlIHRpbWVzIGJlbG93LiAqLworI2RlZmluZSBIQVNIKFApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeCBePSAoUHlfdWhhc2hfdCkgKlAgPDwgNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB3aGlsZSAoLS1sZW4gPj0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB4ID0gKF9QeUhBU0hfTVVMVElQTElFUiAqIHgpIF4gKFB5X3VoYXNoX3QpICpQKys7ICBcCisKKyAgICB4ID0gKFB5X3VoYXNoX3QpIF9QeV9IYXNoU2VjcmV0LnByZWZpeDsKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHNlbGYpKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZik7CisgICAgICAgIEhBU0goYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiB7CisgICAgICAgIGNvbnN0IFB5X1VDUzIgKnMgPSBQeVVuaWNvZGVfMkJZVEVfREFUQShzZWxmKTsKKyAgICAgICAgSEFTSChzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgUHlfVUNTNCAqbDsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHNlbGYpID09IFB5VW5pY29kZV80QllURV9LSU5EICYmCisgICAgICAgICAgICAgICAiSW1wb3NzaWJsZSBzd2l0Y2ggY2FzZSBpbiB1bmljb2RlX2hhc2giKTsKKyAgICAgICAgbCA9IFB5VW5pY29kZV80QllURV9EQVRBKHNlbGYpOworICAgICAgICBIQVNIKGwpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorICAgIHggXj0gKFB5X3VoYXNoX3QpIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIHggXj0gKFB5X3VoYXNoX3QpIF9QeV9IYXNoU2VjcmV0LnN1ZmZpeDsKKwogICAgIGlmICh4ID09IC0xKQogICAgICAgICB4ID0gLTI7Ci0gICAgc2VsZi0+aGFzaCA9IHg7CisgICAgX1B5VW5pY29kZV9IQVNIKHNlbGYpID0geDsKICAgICByZXR1cm4geDsKIH0KKyN1bmRlZiBIQVNICiAKIFB5RG9jX1NUUlZBUihpbmRleF9fZG9jX18sCiAgICAgICAgICAgICAgIlMuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCkBAIC03Njk2LDEwICsxMTA4MywxMCBAQAogTGlrZSBTLmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90IGZvdW5kLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9pbmRleChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9pbmRleChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmc7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgIFB5X3NzaXplX3QgZW5kOwogCkBAIC03NzA3LDE0ICsxMTA5NCwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdWJzdHJpbmcpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3Vic3RyaW5nKSwKLSAgICAgICAgc3RhcnQsIGVuZAotICAgICAgICApOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgxLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChyZXN1bHQgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic3Vic3RyaW5nIG5vdCBmb3VuZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc3MzAsMjQgKzExMTIxLDMxIEBACiBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc2xvd2VyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNsb3dlcihQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIGludCBjYXNlZDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFB5X1VOSUNPREVfSVNMT1dFUigqcCkpOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNMT1dFUihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwogICAgIGNhc2VkID0gMDsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAogICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1VQUEVSKGNoKSB8fCBQeV9VTklDT0RFX0lTVElUTEUoY2gpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKQEAgLTc3NjQsMjQgKzExMTYyLDMxIEBACiBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc3VwcGVyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXN1cHBlcihQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIGludCBjYXNlZDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFB5X1VOSUNPREVfSVNVUFBFUigqcCkgIT0gMCk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1VQUEVSKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSAhPSAwKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKICAgICBjYXNlZCA9IDA7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNMT1dFUihjaCkgfHwgUHlfVU5JQ09ERV9JU1RJVExFKGNoKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CkBAIC03ODAwLDI2ICsxMTIwNSwzNCBAQAogUmV0dXJuIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc3RpdGxlKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXN0aXRsZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIGludCBjYXNlZCwgcHJldmlvdXNfaXNfY2FzZWQ7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygoUHlfVU5JQ09ERV9JU1RJVExFKCpwKSAhPSAwKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9VTklDT0RFX0lTVVBQRVIoKnApICE9IDApKTsKKyAgICBpZiAobGVuZ3RoID09IDEpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOworICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChQeV9VTklDT0RFX0lTVElUTEUoY2gpICE9IDApIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X1VOSUNPREVfSVNVUFBFUihjaCkgIT0gMCkpOworICAgIH0KIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKICAgICBjYXNlZCA9IDA7CiAgICAgcHJldmlvdXNfaXNfY2FzZWQgPSAwOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTVVBQRVIoY2gpIHx8IFB5X1VOSUNPREVfSVNUSVRMRShjaCkpIHsKICAgICAgICAgICAgIGlmIChwcmV2aW91c19pc19jYXNlZCkKQEAgLTc4NDYsMjMgKzExMjU5LDI5IEBACiBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNzcGFjZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzc3BhY2UoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRSgqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1NQQUNFKGNoKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQpAQCAtNzg3NiwyMyArMTEyOTUsMjkgQEAKIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc2FscGhhKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNhbHBoYShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU0FMUEhBKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTQUxQSEEoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTQUxQSEEoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0FMUEhBKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CkBAIC03OTA1LDIzICsxMTMzMCwzMSBAQAogYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzYWxudW0oUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc2FsbnVtKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW4sIGk7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNBTE5VTSgqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbiA9PSAxKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9VTklDT0RFX0lTQUxOVU0oY2gpKTsKKyAgICB9CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbiA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0FMTlVNKGNoKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQpAQCAtNzkzNSwyMyArMTEzNjgsMjkgQEAKIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc2RlY2ltYWwoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc2RlY2ltYWwoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNERUNJTUFMKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKQorICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNERUNJTUFMKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CkBAIC03OTY0LDIzICsxMTQwMywzMCBAQAogYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzZGlnaXQoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc2RpZ2l0KFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTRElHSVQoKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW5ndGggPT0gMSkgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCk7CisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfVU5JQ09ERV9JU0RJR0lUKGNoKSk7CisgICAgfQogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNESUdJVChfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTRElHSVQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKQEAgLTc5OTMsMjMgKzExNDM5LDI5IEBACiBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNudW1lcmljKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNudW1lcmljKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTTlVNRVJJQygqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU05VTUVSSUMoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTTlVNRVJJQyhfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTTlVNRVJJQyhQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOwpAQCAtODAxOCwxMyArMTE0NzAsMjEgQEAKIGludAogUHlVbmljb2RlX0lzSWRlbnRpZmllcihQeU9iamVjdCAqc2VsZikKIHsKLSAgICBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKFB5VW5pY29kZU9iamVjdCopc2VsZik7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9VQ1M0IGZpcnN0OwogCi0gICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiaWRlbnRpZmllciBub3QgcmVhZHkiKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBQRVAgMzEzMSBzYXlzIHRoYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBtdXN0IGJlIGluCiAgICAgICAgWElEX1N0YXJ0IGFuZCBzdWJzZXF1ZW50IGNoYXJhY3RlcnMgaW4gWElEX0NvbnRpbnVlLApAQCAtODAzNCwxMyArMTE0OTQsMTIgQEAKICAgICAgICBkZWZpbml0aW9uIG9mIFhJRF9TdGFydCBhbmQgWElEX0NvbnRpbnVlLCBpdCBpcyBzdWZmaWNpZW50CiAgICAgICAgdG8gY2hlY2sganVzdCBmb3IgdGhlc2UsIGV4Y2VwdCB0aGF0IF8gbXVzdCBiZSBhbGxvd2VkCiAgICAgICAgYXMgc3RhcnRpbmcgYW4gaWRlbnRpZmllci4gICovCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgZmlyc3QgPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZpcnN0ID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCk7CiAgICAgaWYgKCFfUHlVbmljb2RlX0lzWGlkU3RhcnQoZmlyc3QpICYmIGZpcnN0ICE9IDB4NUYgLyogTE9XIExJTkUgKi8pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgd2hpbGUgKHAgPCBlKQotICAgICAgICBpZiAoIV9QeVVuaWNvZGVfSXNYaWRDb250aW51ZShfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkKKyAgICBmb3IgKGkgPSAxOyBpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7IGkrKykKKyAgICAgICAgaWYgKCFfUHlVbmljb2RlX0lzWGlkQ29udGludWUoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC04MDY2LDE3ICsxMTUyNSwyMyBAQAogc3RhdGljIFB5T2JqZWN0KgogdW5pY29kZV9pc3ByaW50YWJsZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYgUHlfVU5JQ09ERV9JU1BSSU5UQUJMRSgqcCkpIHsKLSAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgfQorICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNQUklOVEFCTEUoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNQUklOVEFCTEUoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTUFJJTlRBQkxFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkgewogICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgICAgICB9CiAgICAgfQpAQCAtODA5Niw5ICsxMTU2MSwxMSBAQAogfQogCiBzdGF0aWMgUHlfc3NpemVfdAotdW5pY29kZV9sZW5ndGgoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9sZW5ndGgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIHNlbGYtPmxlbmd0aDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogfQogCiBQeURvY19TVFJWQVIobGp1c3RfX2RvY19fLApAQCAtODEwOCwyMCArMTE1NzUsMjEgQEAKIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfbGp1c3QoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfbGp1c3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3Qgd2lkdGg7Ci0gICAgUHlfVU5JQ09ERSBmaWxsY2hhciA9ICcgJzsKKyAgICBQeV9VQ1M0IGZpbGxjaGFyID0gJyAnOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufE8mOmxqdXN0IiwgJndpZHRoLCBjb252ZXJ0X3VjLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5sZW5ndGggPj0gd2lkdGggJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgcGFkKHNlbGYsIDAsIHdpZHRoIC0gc2VsZi0+bGVuZ3RoLCBmaWxsY2hhcik7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpID49IHdpZHRoKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworCisgICAgcmV0dXJuIHBhZChzZWxmLCAwLCB3aWR0aCAtIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBmaWxsY2hhcik7CiB9CiAKIFB5RG9jX1NUUlZBUihsb3dlcl9fZG9jX18sCkBAIC04MTMwLDkgKzExNTk4LDEzIEBACiBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgUyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2xvd2VyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfbG93ZXIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIGZpeHVwKHNlbGYsIGZpeGxvd2VyKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKQorICAgICAgICByZXR1cm4gYXNjaWlfdXBwZXJfb3JfbG93ZXIoc2VsZiwgMSk7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX2xvd2VyKTsKIH0KIAogI2RlZmluZSBMRUZUU1RSSVAgMApAQCAtODE0NiwxOSArMTE2MTgsMjcgQEAKIAogLyogZXh0ZXJuYWxseSB2aXNpYmxlIGZvciBzdHIuc3RyaXAodW5pY29kZSkgKi8KIFB5T2JqZWN0ICoKLV9QeVVuaWNvZGVfWFN0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKnNlcG9iaikKK19QeVVuaWNvZGVfWFN0cmlwKFB5T2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlLCBQeU9iamVjdCAqc2Vwb2JqKQogewotICAgIFB5X1VOSUNPREUgKnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICBQeV9VTklDT0RFICpzZXAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZXBvYmopOwotICAgIFB5X3NzaXplX3Qgc2VwbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHNlcG9iaik7Ci0gICAgUHlfc3NpemVfdCBpLCBqOworICAgIHZvaWQgKmRhdGE7CisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBpLCBqLCBsZW47CisgICAgQkxPT01fTUFTSyBzZXBtYXNrOwogCi0gICAgQkxPT01fTUFTSyBzZXBtYXNrID0gbWFrZV9ibG9vbV9tYXNrKHNlcCwgc2VwbGVuKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzZXBvYmopID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgc2VwbWFzayA9IG1ha2VfYmxvb21fbWFzayhQeVVuaWNvZGVfS0lORChzZXBvYmopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoc2Vwb2JqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcG9iaikpOwogCiAgICAgaSA9IDA7CiAgICAgaWYgKHN0cmlwdHlwZSAhPSBSSUdIVFNUUklQKSB7Ci0gICAgICAgIHdoaWxlIChpIDwgbGVuICYmIEJMT09NX01FTUJFUihzZXBtYXNrLCBzW2ldLCBzZXAsIHNlcGxlbikpIHsKKyAgICAgICAgd2hpbGUgKGkgPCBsZW4gJiYKKyAgICAgICAgICAgICAgIEJMT09NX01FTUJFUihzZXBtYXNrLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSwgc2Vwb2JqKSkgewogICAgICAgICAgICAgaSsrOwogICAgICAgICB9CiAgICAgfQpAQCAtODE2NywyOCArMTE2NDcsNzAgQEAKICAgICBpZiAoc3RyaXB0eXBlICE9IExFRlRTVFJJUCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICBqLS07Ci0gICAgICAgIH0gd2hpbGUgKGogPj0gaSAmJiBCTE9PTV9NRU1CRVIoc2VwbWFzaywgc1tqXSwgc2VwLCBzZXBsZW4pKTsKKyAgICAgICAgfSB3aGlsZSAoaiA+PSBpICYmCisgICAgICAgICAgICAgICAgIEJMT09NX01FTUJFUihzZXBtYXNrLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKSwgc2Vwb2JqKSk7CiAgICAgICAgIGorKzsKICAgICB9CiAKLSAgICBpZiAoaSA9PSAwICYmIGogPT0gbGVuICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopc2VsZjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMraSwgai1pKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhzZWxmLCBpLCBqKTsKIH0KIAorUHlPYmplY3QqCitQeVVuaWNvZGVfU3Vic3RyaW5nKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICB1bnNpZ25lZCBjaGFyICpkYXRhOworICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBlbmQgPSBQeV9NSU4oZW5kLCBsZW5ndGgpOworCisgICAgaWYgKHN0YXJ0ID09IDAgJiYgZW5kID09IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICAgIGlmIChzdGFydCA8IDAgfHwgZW5kIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChzdGFydCA+PSBsZW5ndGggfHwgZW5kIDwgc3RhcnQpIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisKKyAgICBsZW5ndGggPSBlbmQgLSBzdGFydDsKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKSB7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKTsKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRnJvbUFTQ0lJKChjaGFyKikoZGF0YSArIHN0YXJ0KSwgbGVuZ3RoKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShraW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICsga2luZCAqIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgpOworICAgIH0KK30KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRvX3N0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSkKK2RvX3N0cmlwKFB5T2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlKQogewotICAgIFB5X1VOSUNPREUgKnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwgaSwgajsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuLCBpLCBqOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogCiAgICAgaSA9IDA7CiAgICAgaWYgKHN0cmlwdHlwZSAhPSBSSUdIVFNUUklQKSB7Ci0gICAgICAgIHdoaWxlIChpIDwgbGVuICYmIFB5X1VOSUNPREVfSVNTUEFDRShzW2ldKSkgeworICAgICAgICB3aGlsZSAoaSA8IGxlbiAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKSB7CiAgICAgICAgICAgICBpKys7CiAgICAgICAgIH0KICAgICB9CkBAIC04MTk3LDIxICsxMTcxOSwxNiBAQAogICAgIGlmIChzdHJpcHR5cGUgIT0gTEVGVFNUUklQKSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGotLTsKLSAgICAgICAgfSB3aGlsZSAoaiA+PSBpICYmIFB5X1VOSUNPREVfSVNTUEFDRShzW2pdKSk7CisgICAgICAgIH0gd2hpbGUgKGogPj0gaSAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaikpKTsKICAgICAgICAgaisrOwogICAgIH0KIAotICAgIGlmIChpID09IDAgJiYgaiA9PSBsZW4gJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0KilzZWxmOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocytpLCBqLWkpOworICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKHNlbGYsIGksIGopOwogfQogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kb19hcmdzdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUsIFB5T2JqZWN0ICphcmdzKQorZG9fYXJnc3RyaXAoUHlPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOwogCkBAIC04MjQxLDcgKzExNzU4LDcgQEAKIElmIGNoYXJzIGlzIGdpdmVuIGFuZCBub3QgTm9uZSwgcmVtb3ZlIGNoYXJhY3RlcnMgaW4gY2hhcnMgaW5zdGVhZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfc3RyaXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfc3RyaXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApCiAgICAgICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBCT1RIU1RSSVApOyAvKiBDb21tb24gY2FzZSAqLwpAQCAtODI1Nyw3ICsxMTc3NCw3IEBACiBJZiBjaGFycyBpcyBnaXZlbiBhbmQgbm90IE5vbmUsIHJlbW92ZSBjaGFyYWN0ZXJzIGluIGNoYXJzIGluc3RlYWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2xzdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9sc3RyaXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApCiAgICAgICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBMRUZUU1RSSVApOyAvKiBDb21tb24gY2FzZSAqLwpAQCAtODI3Myw3ICsxMTc5MCw3IEBACiBJZiBjaGFycyBpcyBnaXZlbiBhbmQgbm90IE5vbmUsIHJlbW92ZSBjaGFyYWN0ZXJzIGluIGNoYXJzIGluc3RlYWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3JzdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yc3RyaXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApCiAgICAgICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBSSUdIVFNUUklQKTsgLyogQ29tbW9uIGNhc2UgKi8KQEAgLTgyODMsNjQgKzExODAwLDc2IEBACiAKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9yZXBlYXQoUHlVbmljb2RlT2JqZWN0ICpzdHIsIFB5X3NzaXplX3QgbGVuKQordW5pY29kZV9yZXBlYXQoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBsZW4pCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1OwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgUHlfc3NpemVfdCBuY2hhcnM7Ci0gICAgc2l6ZV90IG5ieXRlczsKKyAgICBQeU9iamVjdCAqdTsKKyAgICBQeV9zc2l6ZV90IG5jaGFycywgbjsKIAogICAgIGlmIChsZW4gPCAxKSB7CiAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGVfZW1wdHk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgIH0KIAotICAgIGlmIChsZW4gPT0gMSAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdHIpKSB7Ci0gICAgICAgIC8qIG5vIHJlcGVhdCwgcmV0dXJuIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICBQeV9JTkNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHN0cjsKLSAgICB9CisgICAgLyogbm8gcmVwZWF0LCByZXR1cm4gb3JpZ2luYWwgc3RyaW5nICovCisgICAgaWYgKGxlbiA9PSAxKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHN0cik7CiAKLSAgICAvKiBlbnN1cmUgIyBvZiBjaGFycyBuZWVkZWQgZG9lc24ndCBvdmVyZmxvdyBpbnQgYW5kICMgb2YgYnl0ZXMKLSAgICAgKiBuZWVkZWQgZG9lc24ndCBvdmVyZmxvdyBzaXplX3QKLSAgICAgKi8KLSAgICBuY2hhcnMgPSBsZW4gKiBzdHItPmxlbmd0aDsKLSAgICBpZiAobmNoYXJzIC8gbGVuICE9IHN0ci0+bGVuZ3RoKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpID4gUFlfU1NJWkVfVF9NQVggLyBsZW4pIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAicmVwZWF0ZWQgc3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBuYnl0ZXMgPSAobmNoYXJzICsgMSkgKiBzaXplb2YoUHlfVU5JQ09ERSk7Ci0gICAgaWYgKG5ieXRlcyAvIHNpemVvZihQeV9VTklDT0RFKSAhPSAoc2l6ZV90KShuY2hhcnMgKyAxKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXBlYXRlZCBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHUgPSBfUHlVbmljb2RlX05ldyhuY2hhcnMpOworICAgIG5jaGFycyA9IGxlbiAqIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisKKyAgICB1ID0gUHlVbmljb2RlX05ldyhuY2hhcnMsIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpKTsKICAgICBpZiAoIXUpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCh1KSA9PSBQeVVuaWNvZGVfS0lORChzdHIpKTsKIAotICAgIHAgPSB1LT5zdHI7Ci0KLSAgICBpZiAoc3RyLT5sZW5ndGggPT0gMSkgewotICAgICAgICBQeV9VTklDT0RFX0ZJTEwocCwgc3RyLT5zdHJbMF0sIGxlbik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlfc3NpemVfdCBkb25lID0gc3RyLT5sZW5ndGg7IC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvcGllZCB0aGlzIGZhciAqLwotICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc3RyLT5zdHIsIHN0ci0+bGVuZ3RoKTsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSA9PSAxKSB7CisgICAgICAgIGNvbnN0IGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBmaWxsX2NoYXIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBQeVVuaWNvZGVfREFUQShzdHIpLCAwKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIHZvaWQgKnRvID0gUHlVbmljb2RlX0RBVEEodSk7CisgICAgICAgICAgICBtZW1zZXQodG8sICh1bnNpZ25lZCBjaGFyKWZpbGxfY2hhciwgbGVuKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICBQeV9VQ1MyICp1Y3MyID0gUHlVbmljb2RlXzJCWVRFX0RBVEEodSk7CisgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgbGVuOyArK24pCisgICAgICAgICAgICAgICAgdWNzMltuXSA9IGZpbGxfY2hhcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X1VDUzQgKnVjczQgPSBQeVVuaWNvZGVfNEJZVEVfREFUQSh1KTsKKyAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBsZW47ICsrbikKKyAgICAgICAgICAgICAgICB1Y3M0W25dID0gZmlsbF9jaGFyOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBudW1iZXIgb2YgY2hhcmFjdGVycyBjb3BpZWQgdGhpcyBmYXIgKi8KKyAgICAgICAgUHlfc3NpemVfdCBkb25lID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICAgICAgY29uc3QgUHlfc3NpemVfdCBjaGFyX3NpemUgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgICAgICBjaGFyICp0byA9IChjaGFyICopIFB5VW5pY29kZV9EQVRBKHUpOworICAgICAgICBQeV9NRU1DUFkodG8sIFB5VW5pY29kZV9EQVRBKHN0ciksCisgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpICogY2hhcl9zaXplKTsKICAgICAgICAgd2hpbGUgKGRvbmUgPCBuY2hhcnMpIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgbiA9IChkb25lIDw9IG5jaGFycy1kb25lKSA/IGRvbmUgOiBuY2hhcnMtZG9uZTsKLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwK2RvbmUsIHAsIG4pOworICAgICAgICAgICAgbiA9IChkb25lIDw9IG5jaGFycy1kb25lKSA/IGRvbmUgOiBuY2hhcnMtZG9uZTsKKyAgICAgICAgICAgIFB5X01FTUNQWSh0byArIChkb25lICogY2hhcl9zaXplKSwgdG8sIG4gKiBjaGFyX3NpemUpOwogICAgICAgICAgICAgZG9uZSArPSBuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHU7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1LCAxKSk7CisgICAgcmV0dXJuIHU7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcGxvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vib2JqLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcGxvYmosCisgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewogICAgIFB5T2JqZWN0ICpzZWxmOwogICAgIFB5T2JqZWN0ICpzdHIxOwpAQCAtODM2MSwxMCArMTE4OTAsMTIgQEAKICAgICAgICAgUHlfREVDUkVGKHN0cjEpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmVzdWx0ID0gcmVwbGFjZSgoUHlVbmljb2RlT2JqZWN0ICopc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVPYmplY3QgKilzdHIxLAotICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXN0cjIsCi0gICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fAorICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3RyMSkgPT0gLTEgfHwKKyAgICAgICAgUHlVbmljb2RlX1JFQURZKHN0cjIpID09IC0xKQorICAgICAgICByZXN1bHQgPSBOVUxMOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7CiAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgIFB5X0RFQ1JFRihzdHIxKTsKICAgICBQeV9ERUNSRUYoc3RyMik7CkBAIC04Mzc5LDE3NyArMTE5MTAsMTgxIEBACiBnaXZlbiwgb25seSB0aGUgZmlyc3QgY291bnQgb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3JlcGxhY2UoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdHIxOwotICAgIFB5VW5pY29kZU9iamVjdCAqc3RyMjsKKyAgICBQeU9iamVjdCAqc3RyMTsKKyAgICBQeU9iamVjdCAqc3RyMjsKICAgICBQeV9zc2l6ZV90IG1heGNvdW50ID0gLTE7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpyZXBsYWNlIiwgJnN0cjEsICZzdHIyLCAmbWF4Y291bnQpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIxID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KChQeU9iamVjdCAqKXN0cjEpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHN0cjEgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIxKTsKICAgICBpZiAoc3RyMSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIyID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KChQeU9iamVjdCAqKXN0cjIpOworICAgIHN0cjIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIyKTsKICAgICBpZiAoc3RyMiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzdHIxKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgcmVzdWx0ID0gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIxKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyMikgPT0gLTEpCisgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKIAogICAgIFB5X0RFQ1JFRihzdHIxKTsKICAgICBQeV9ERUNSRUYoc3RyMik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljCi1QeU9iamVjdCAqdW5pY29kZV9yZXByKFB5T2JqZWN0ICp1bmljb2RlKQorc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfcmVwcihQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBQeU9iamVjdCAqcmVwcjsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIFB5X1VOSUNPREUgKnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKLSAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSk7CisgICAgUHlfc3NpemVfdCBpc2l6ZTsKKyAgICBQeV9zc2l6ZV90IG9zaXplLCBzcXVvdGUsIGRxdW90ZSwgaSwgbzsKKyAgICBQeV9VQ1M0IG1heCwgcXVvdGU7CisgICAgaW50IGlraW5kLCBva2luZDsKKyAgICB2b2lkICppZGF0YSwgKm9kYXRhOwogCi0gICAgLyogWFhYKG5ub3J3aXR6KTogcmF0aGVyIHRoYW4gb3Zlci1hbGxvY2F0aW5nLCBpdCB3b3VsZCBiZQotICAgICAgIGJldHRlciB0byBjaG9vc2UgYSBkaWZmZXJlbnQgc2NoZW1lLiAgUGVyaGFwcyBzY2FuIHRoZQotICAgICAgIGZpcnN0IE4tY2hhcnMgb2YgdGhlIHN0cmluZyBhbmQgYWxsb2NhdGUgYmFzZWQgb24gdGhhdCBzaXplLgotICAgICovCi0gICAgLyogSW5pdGlhbCBhbGxvY2F0aW9uIGlzIGJhc2VkIG9uIHRoZSBsb25nZXN0LXBvc3NpYmxlIHVuaWNocgotICAgICAgIGVzY2FwZS4KLQotICAgICAgIEluIHdpZGUgKFVURi0zMikgYnVpbGRzICdcVTAweHh4eHh4JyBpcyAxMCBjaGFycyBwZXIgc291cmNlCi0gICAgICAgdW5pY2hyLCBzbyBpbiB0aGlzIGNhc2UgaXQncyB0aGUgbG9uZ2VzdCB1bmljaHIgZXNjYXBlLiBJbgotICAgICAgIG5hcnJvdyAoVVRGLTE2KSBidWlsZHMgdGhpcyBpcyBmaXZlIGNoYXJzIHBlciBzb3VyY2UgdW5pY2hyCi0gICAgICAgc2luY2UgdGhlcmUgYXJlIHR3byB1bmljaHJzIGluIHRoZSBzdXJyb2dhdGUgcGFpciwgc28gaW4gbmFycm93Ci0gICAgICAgKFVURi0xNikgYnVpbGRzIGl0J3Mgbm90IHRoZSBsb25nZXN0IHVuaWNociBlc2NhcGUuCi0KLSAgICAgICBJbiB3aWRlIG9yIG5hcnJvdyBidWlsZHMgJ1x1eHh4eCcgaXMgNiBjaGFycyBwZXIgc291cmNlIHVuaWNociwKLSAgICAgICBzbyBpbiB0aGUgbmFycm93IChVVEYtMTYpIGJ1aWxkIGNhc2UgaXQncyB0aGUgbG9uZ2VzdCB1bmljaHIKLSAgICAgICBlc2NhcGUuCi0gICAgKi8KLQotICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLyogcXVvdGVzICovCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDEwKnNpemUKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDYqc2l6ZQotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDEpOwotICAgIGlmIChyZXByID09IE5VTEwpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcik7CisgICAgaXNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwogCi0gICAgLyogQWRkIHF1b3RlICovCi0gICAgKnArKyA9IChmaW5kY2hhcihzLCBzaXplLCAnXCcnKSAmJgotICAgICAgICAgICAgIWZpbmRjaGFyKHMsIHNpemUsICciJykpID8gJyInIDogJ1wnJzsKLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gKnMrKzsKKyAgICAvKiBDb21wdXRlIGxlbmd0aCBvZiBvdXRwdXQsIHF1b3RlIGNoYXJhY3RlcnMsIGFuZAorICAgICAgIG1heGltdW0gY2hhcmFjdGVyICovCisgICAgb3NpemUgPSAyOyAvKiBxdW90ZXMgKi8KKyAgICBtYXggPSAxMjc7CisgICAgc3F1b3RlID0gZHF1b3RlID0gMDsKKyAgICBpa2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBpc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChpa2luZCwgaWRhdGEsIGkpOworICAgICAgICBzd2l0Y2ggKGNoKSB7CisgICAgICAgIGNhc2UgJ1wnJzogc3F1b3RlKys7IG9zaXplKys7IGJyZWFrOworICAgICAgICBjYXNlICciJzogIGRxdW90ZSsrOyBvc2l6ZSsrOyBicmVhazsKKyAgICAgICAgY2FzZSAnXFwnOiBjYXNlICdcdCc6IGNhc2UgJ1xyJzogY2FzZSAnXG4nOgorICAgICAgICAgICAgb3NpemUgKz0gMjsgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvKiBGYXN0LXBhdGggQVNDSUkgKi8KKyAgICAgICAgICAgIGlmIChjaCA8ICcgJyB8fCBjaCA9PSAweDdmKQorICAgICAgICAgICAgICAgIG9zaXplICs9IDQ7IC8qIFx4SEggKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMHg3ZikKKyAgICAgICAgICAgICAgICBvc2l6ZSsrOworICAgICAgICAgICAgZWxzZSBpZiAoUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShjaCkpIHsKKyAgICAgICAgICAgICAgICBvc2l6ZSsrOworICAgICAgICAgICAgICAgIG1heCA9IGNoID4gbWF4ID8gY2ggOiBtYXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwKQorICAgICAgICAgICAgICAgIG9zaXplICs9IDQ7IC8qIFx4SEggKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkKKyAgICAgICAgICAgICAgICBvc2l6ZSArPSA2OyAvKiBcdUhISEggKi8KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvc2l6ZSArPSAxMDsgLyogXHVISEhISEhISCAqLworICAgICAgICB9CisgICAgfQorCisgICAgcXVvdGUgPSAnXCcnOworICAgIGlmIChzcXVvdGUpIHsKKyAgICAgICAgaWYgKGRxdW90ZSkKKyAgICAgICAgICAgIC8qIEJvdGggc3F1b3RlIGFuZCBkcXVvdGUgcHJlc2VudC4gVXNlIHNxdW90ZSwKKyAgICAgICAgICAgICAgIGFuZCBlc2NhcGUgdGhlbSAqLworICAgICAgICAgICAgb3NpemUgKz0gc3F1b3RlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBxdW90ZSA9ICciJzsKKyAgICB9CisKKyAgICByZXByID0gUHlVbmljb2RlX05ldyhvc2l6ZSwgbWF4KTsKKyAgICBpZiAocmVwciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBva2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcHIpOworICAgIG9kYXRhID0gUHlVbmljb2RlX0RBVEEocmVwcik7CisKKyAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCAwLCBxdW90ZSk7CisgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgb3NpemUtMSwgcXVvdGUpOworCisgICAgZm9yIChpID0gMCwgbyA9IDE7IGkgPCBpc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChpa2luZCwgaWRhdGEsIGkpOwogCiAgICAgICAgIC8qIEVzY2FwZSBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzICovCi0gICAgICAgIGlmICgoY2ggPT0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcilbMF0pIHx8IChjaCA9PSAnXFwnKSkgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgIGlmICgoY2ggPT0gcXVvdGUpIHx8IChjaCA9PSAnXFwnKSkgeworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgY2gpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLwogICAgICAgICBpZiAoY2ggPT0gJ1x0JykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3QnOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3QnKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjaCA9PSAnXG4nKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAnbic7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnbicpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNoID09ICdccicpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICdyJzsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdyJyk7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBNYXAgbm9uLXByaW50YWJsZSBVUyBBU0NJSSB0byAnXHhoaCcgKi8KICAgICAgICAgZWxzZSBpZiAoY2ggPCAnICcgfHwgY2ggPT0gMHg3RikgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDB4MDAwRl07CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAneCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXSk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl0pOwogICAgICAgICB9CiAKICAgICAgICAgLyogQ29weSBBU0NJSSBjaGFyYWN0ZXJzIGFzLWlzICovCiAgICAgICAgIGVsc2UgaWYgKGNoIDwgMHg3RikgewotICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBjaCk7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBOb24tQVNDSUkgY2hhcmFjdGVycyAqLwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5X1VDUzQgdWNzID0gY2g7Ci0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICBQeV9VTklDT0RFIGNoMiA9IDA7Ci0gICAgICAgICAgICAvKiBHZXQgY29kZSBwb2ludCBmcm9tIHN1cnJvZ2F0ZSBwYWlyICovCi0gICAgICAgICAgICBpZiAoc2l6ZSA+IDApIHsKLSAgICAgICAgICAgICAgICBjaDIgPSAqczsKLSAgICAgICAgICAgICAgICBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDwgMHhEQzAwICYmIGNoMiA+PSAweERDMDAKLSAgICAgICAgICAgICAgICAgICAgJiYgY2gyIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgICAgICB1Y3MgPSAoKChjaCAmIDB4MDNGRikgPDwgMTApIHwgKGNoMiAmIDB4MDNGRikpCi0gICAgICAgICAgICAgICAgICAgICAgICArIDB4MDAwMTAwMDA7Ci0gICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAgICAgLyogTWFwIFVuaWNvZGUgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAoY2F0ZWdvcmllcyBaKiBhbmQgQyogZXhjZXB0IEFTQ0lJIHNwYWNlKQogICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1BSSU5UQUJMRSh1Y3MpKSB7CisgICAgICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNQUklOVEFCTEUoY2gpKSB7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKICAgICAgICAgICAgICAgICAvKiBNYXAgOC1iaXQgY2hhcmFjdGVycyB0byAnXHhoaCcgKi8KLSAgICAgICAgICAgICAgICBpZiAodWNzIDw9IDB4ZmYpIHsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDB4MDAwRl07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgICAgICAgICBlbHNlIGlmICh1Y3MgPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyMCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDE2KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTIpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1t1Y3MgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPD0gMHhmZikgeworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICd4Jyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8PSAweGZmZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAndScpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbY2ggJiAweEZdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyogTWFwIDIxLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAweHh4eHh4JyAqLwogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICd1JzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDEyKSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA4KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbdWNzICYgMHgwMDBGXTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnVScpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4Rl0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIENvcHkgY2hhcmFjdGVycyBhcy1pcyAqLwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGNoOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICBpZiAodWNzID49IDB4MTAwMDApCi0gICAgICAgICAgICAgICAgICAgICpwKysgPSBjaDI7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIGNoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAvKiBBZGQgcXVvdGUgKi8KLSAgICAqcCsrID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcilbMF07Ci0KLSAgICAqcCA9ICdcMCc7Ci0gICAgUHlVbmljb2RlX1Jlc2l6ZSgmcmVwciwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHIpKTsKKyAgICAvKiBDbG9zaW5nIHF1b3RlIGFscmVhZHkgYWRkZWQgYXQgdGhlIGJlZ2lubmluZyAqLworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVwciwgMSkpOwogICAgIHJldHVybiByZXByOwogfQogCkBAIC04NTYzLDkgKzEyMDk4LDkgQEAKIFJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9yZmluZChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yZmluZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmc7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgIFB5X3NzaXplX3QgZW5kOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwpAQCAtODU3NCwxNCArMTIxMDksMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN1YnN0cmluZyksIFB5VW5pY29kZV9HRVRfU0laRShzdWJzdHJpbmcpLAotICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKC0xLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKIH0KIApAQCAtODU5MSw5ICsxMjEzMCw5IEBACiBMaWtlIFMucmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90IGZvdW5kLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9yaW5kZXgoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfcmluZGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CkBAIC04NjAyLDE4ICsxMjE0MSwyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3Vic3RyaW5nKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YnN0cmluZyksCi0gICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7CiAKICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKIAorICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHJlc3VsdCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzdWJzdHJpbmcgbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKIH0KIApAQCAtODYyNCwyNSArMTIxNjgsMjUgQEAKIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfcmp1c3QoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfcmp1c3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3Qgd2lkdGg7Ci0gICAgUHlfVU5JQ09ERSBmaWxsY2hhciA9ICcgJzsKKyAgICBQeV9VQ1M0IGZpbGxjaGFyID0gJyAnOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufE8mOnJqdXN0IiwgJndpZHRoLCBjb252ZXJ0X3VjLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5sZW5ndGggPj0gd2lkdGggJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgcGFkKHNlbGYsIHdpZHRoIC0gc2VsZi0+bGVuZ3RoLCAwLCBmaWxsY2hhcik7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpID49IHdpZHRoKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworCisgICAgcmV0dXJuIHBhZChzZWxmLCB3aWR0aCAtIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCAwLCBmaWxsY2hhcik7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfU3BsaXQoUHlPYmplY3QgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfU3BsaXQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIApAQCAtODY1Nyw3ICsxMjIwMSw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXN1bHQgPSBzcGxpdCgoUHlVbmljb2RlT2JqZWN0ICopcywgKFB5VW5pY29kZU9iamVjdCAqKXNlcCwgbWF4c3BsaXQpOworICAgIHJlc3VsdCA9IHNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwogCiAgICAgUHlfREVDUkVGKHMpOwogICAgIFB5X1hERUNSRUYoc2VwKTsKQEAgLTg2NjUsNyArMTIyMDksNyBAQAogfQogCiBQeURvY19TVFJWQVIoc3BsaXRfX2RvY19fLAotICAgICAgICAgICAgICJTLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIHN0cmluZ3NcblwKKyAgICAgICAgICAgICAiUy5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2Ygc3RyaW5nc1xuXAogXG5cCiBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiBTLCB1c2luZyBzZXAgYXMgdGhlXG5cCiBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXRcblwKQEAgLTg2NzQsMjAgKzEyMjE4LDIyIEBACiByZW1vdmVkIGZyb20gdGhlIHJlc3VsdC4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9zcGxpdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9zcGxpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhjb3VudCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8T246c3BsaXQiLCAmc3Vic3RyaW5nLCAmbWF4Y291bnQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T246c3BsaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1YnN0cmluZywgJm1heGNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoc3Vic3RyaW5nID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzcGxpdChzZWxmLCBOVUxMLCBtYXhjb3VudCk7CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCi0gICAgICAgIHJldHVybiBzcGxpdChzZWxmLCAoUHlVbmljb2RlT2JqZWN0ICopc3Vic3RyaW5nLCBtYXhjb3VudCk7CisgICAgICAgIHJldHVybiBzcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3BsaXQoKFB5T2JqZWN0ICopc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTg2OTYsNiArMTIyNDIsOSBAQAogICAgIFB5T2JqZWN0KiBzdHJfb2JqOwogICAgIFB5T2JqZWN0KiBzZXBfb2JqOwogICAgIFB5T2JqZWN0KiBvdXQ7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAogICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwogICAgIGlmICghc3RyX29iaikKQEAgLTg3MDUsMTYgKzEyMjU0LDYyIEBACiAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VwX29iaikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICBvdXQgPSBzdHJpbmdsaWJfcGFydGl0aW9uKAotICAgICAgICBzdHJfb2JqLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJfb2JqKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN0cl9vYmopLAotICAgICAgICBzZXBfb2JqLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZXBfb2JqKSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlcF9vYmopCi0gICAgICAgICk7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHNlcF9vYmopOworICAgIGtpbmQgPSBQeV9NQVgoa2luZDEsIGtpbmQyKTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHJfb2JqLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjEpCisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc2VwX29iaik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzZXBfb2JqLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpCisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcF9vYmopOworCisgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzdHJfb2JqKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHNlcF9vYmopKQorICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQgPSB1Y3MxbGliX3BhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzMmxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczRsaWJfcGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIG91dCA9IDA7CisgICAgfQogCiAgICAgUHlfREVDUkVGKHNlcF9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiBvdXQ7CisgIG9uRXJyb3I6CisgICAgUHlfREVDUkVGKHNlcF9vYmopOworICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCAmJiBidWYxKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kICYmIGJ1ZjIpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIApAQCAtODcyNCw2ICsxMjMxOSw5IEBACiAgICAgUHlPYmplY3QqIHN0cl9vYmo7CiAgICAgUHlPYmplY3QqIHNlcF9vYmo7CiAgICAgUHlPYmplY3QqIG91dDsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCiAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7CiAgICAgaWYgKCFzdHJfb2JqKQpAQCAtODczNCwxNSArMTIzMzIsNTYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgb3V0ID0gc3RyaW5nbGliX3JwYXJ0aXRpb24oCi0gICAgICAgIHN0cl9vYmosIFB5VW5pY29kZV9BU19VTklDT0RFKHN0cl9vYmopLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyX29iaiksCi0gICAgICAgIHNlcF9vYmosIFB5VW5pY29kZV9BU19VTklDT0RFKHNlcF9vYmopLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VwX29iaikKLSAgICAgICAgKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9pbik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKKyAgICBraW5kID0gUHlfTUFYKGtpbmQxLCBraW5kMik7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9pbik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHJfaW4sIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzZXBfb2JqKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQpOworICAgIGlmICghYnVmMikKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VwX29iaik7CisKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHN0cl9pbikpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cl9vYmopICYmIFB5VW5pY29kZV9JU19BU0NJSShzZXBfb2JqKSkKKyAgICAgICAgICAgIG91dCA9IGFzY2lpbGliX3JwYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dCA9IHVjczFsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzMmxpYl9ycGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3M0bGliX3JwYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgb3V0ID0gMDsKKyAgICB9CiAKICAgICBQeV9ERUNSRUYoc2VwX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKKyAgb25FcnJvcjoKKyAgICBQeV9ERUNSRUYoc2VwX29iaik7CisgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMSAhPSBraW5kICYmIGJ1ZjEpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKHBhcnRpdGlvbl9fZG9jX18sCkBAIC04NzUzLDkgKzEyMzkyLDkgQEAKIGZvdW5kLCByZXR1cm4gUyBhbmQgdHdvIGVtcHR5IHN0cmluZ3MuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfcGFydGl0aW9uKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcGFyYXRvcikKK3VuaWNvZGVfcGFydGl0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwYXJhdG9yKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfUGFydGl0aW9uKChQeU9iamVjdCAqKXNlbGYsIHNlcGFyYXRvcik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9QYXJ0aXRpb24oc2VsZiwgc2VwYXJhdG9yKTsKIH0KIAogUHlEb2NfU1RSVkFSKHJwYXJ0aXRpb25fX2RvY19fLApAQCAtODc2NiwxNCArMTI0MDUsMTMgQEAKIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybiB0d28gZW1wdHkgc3RyaW5ncyBhbmQgUy4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9ycGFydGl0aW9uKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcGFyYXRvcikKK3VuaWNvZGVfcnBhcnRpdGlvbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcGFyYXRvcikKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX1JQYXJ0aXRpb24oKFB5T2JqZWN0ICopc2VsZiwgc2VwYXJhdG9yKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1JQYXJ0aXRpb24oc2VsZiwgc2VwYXJhdG9yKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9SU3BsaXQoUHlPYmplY3QgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2VwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9SU3BsaXQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIApAQCAtODc4OCw3ICsxMjQyNiw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXN1bHQgPSByc3BsaXQoKFB5VW5pY29kZU9iamVjdCAqKXMsIChQeVVuaWNvZGVPYmplY3QgKilzZXAsIG1heHNwbGl0KTsKKyAgICByZXN1bHQgPSByc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7CiAKICAgICBQeV9ERUNSRUYocyk7CiAgICAgUHlfWERFQ1JFRihzZXApOwpAQCAtODc5Niw3ICsxMjQzNCw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLAotICAgICAgICAgICAgICJTLnJzcGxpdChbc2VwWywgbWF4c3BsaXRdXSkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCisgICAgICAgICAgICAgIlMucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCiBcblwKIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIFMsIHVzaW5nIHNlcCBhcyB0aGVcblwKIGRlbGltaXRlciBzdHJpbmcsIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBhbmRcblwKQEAgLTg4MDUsMjAgKzEyNDQzLDIyIEBACiBpcyBhIHNlcGFyYXRvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9yc3BsaXQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfcnNwbGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeU9iamVjdCAqc3Vic3RyaW5nID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heGNvdW50ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPbjpyc3BsaXQiLCAmc3Vic3RyaW5nLCAmbWF4Y291bnQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T246cnNwbGl0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzdWJzdHJpbmcsICZtYXhjb3VudCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHN1YnN0cmluZyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gcnNwbGl0KHNlbGYsIE5VTEwsIG1heGNvdW50KTsKICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIHJzcGxpdChzZWxmLCAoUHlVbmljb2RlT2JqZWN0ICopc3Vic3RyaW5nLCBtYXhjb3VudCk7CisgICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JTcGxpdCgoUHlPYmplY3QgKilzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9SU3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CiB9CiAKIFB5RG9jX1NUUlZBUihzcGxpdGxpbmVzX19kb2NfXywKQEAgLTg4MjksMjYgKzEyNDY5LDIyIEBACiBpcyBnaXZlbiBhbmQgdHJ1ZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9zcGxpdGxpbmVzKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImtlZXBlbmRzIiwgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6c3BsaXRsaW5lcyIsICZrZWVwZW5kcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpOnNwbGl0bGluZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmtlZXBlbmRzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gUHlVbmljb2RlX1NwbGl0bGluZXMoKFB5T2JqZWN0ICopc2VsZiwga2VlcGVuZHMpOworICAgIHJldHVybiBQeVVuaWNvZGVfU3BsaXRsaW5lcyhzZWxmLCBrZWVwZW5kcyk7CiB9CiAKIHN0YXRpYwogUHlPYmplY3QgKnVuaWNvZGVfc3RyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBzZWxmOwotICAgIH0gZWxzZQotICAgICAgICAvKiBTdWJ0eXBlIC0tIHJldHVybiBnZW51aW5lIHVuaWNvZGUgc3RyaW5nIHdpdGggdGhlIHNhbWUgdmFsdWUuICovCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpKTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOwogfQogCiBQeURvY19TVFJWQVIoc3dhcGNhc2VfX2RvY19fLApAQCAtODg1OCw5ICsxMjQ5NCwxMSBAQAogYW5kIHZpY2UgdmVyc2EuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfc3dhcGNhc2UoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9zd2FwY2FzZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gZml4dXAoc2VsZiwgZml4c3dhcGNhc2UpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb19zd2FwY2FzZSk7CiB9CiAKIFB5RG9jX1NUUlZBUihtYWtldHJhbnNfX2RvY19fLApAQCAtODg3Niw3ICsxMjUxNCw3IEBACiBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvIE5vbmUgaW4gdGhlIHJlc3VsdC4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9tYWtldHJhbnMoUHlVbmljb2RlT2JqZWN0ICpudWxsLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfbWFrZXRyYW5zKFB5T2JqZWN0ICpudWxsLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqeCwgKnkgPSBOVUxMLCAqeiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5ldyA9IE5VTEwsICprZXksICp2YWx1ZTsKQEAgLTg4ODksMjQgKzEyNTI3LDMwIEBACiAgICAgaWYgKCFuZXcpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh5ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IHhfa2luZCwgeV9raW5kLCB6X2tpbmQ7CisgICAgICAgIHZvaWQgKnhfZGF0YSwgKnlfZGF0YSwgKnpfZGF0YTsKKwogICAgICAgICAvKiB4IG11c3QgYmUgYSBzdHJpbmcgdG9vLCBvZiBlcXVhbCBsZW5ndGggKi8KLSAgICAgICAgUHlfc3NpemVfdCB5bGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHkpOwogICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh4KSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImZpcnN0IG1ha2V0cmFucyBhcmd1bWVudCBtdXN0ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmUgYSBzdHJpbmcgaWYgdGhlcmUgaXMgYSBzZWNvbmQgYXJndW1lbnQiKTsKICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoeCkgIT0geWxlbikgeworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoeCkgIT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoeSkpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidGhlIGZpcnN0IHR3byBtYWtldHJhbnMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudHMgbXVzdCBoYXZlIGVxdWFsIGxlbmd0aCIpOwogICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgIH0KICAgICAgICAgLyogY3JlYXRlIGVudHJpZXMgZm9yIHRyYW5zbGF0aW5nIGNoYXJzIGluIHggdG8gdGhvc2UgaW4geSAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh4KVtpXSk7CisgICAgICAgIHhfa2luZCA9IFB5VW5pY29kZV9LSU5EKHgpOworICAgICAgICB5X2tpbmQgPSBQeVVuaWNvZGVfS0lORCh5KTsKKyAgICAgICAgeF9kYXRhID0gUHlVbmljb2RlX0RBVEEoeCk7CisgICAgICAgIHlfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHkpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgoeCk7IGkrKykgeworICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9SRUFEKHhfa2luZCwgeF9kYXRhLCBpKSk7CiAgICAgICAgICAgICBpZiAoIWtleSkKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgICAgIHZhbHVlID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9BU19VTklDT0RFKHkpW2ldKTsKKyAgICAgICAgICAgIHZhbHVlID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9SRUFEKHlfa2luZCwgeV9kYXRhLCBpKSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgZ290byBlcnI7CkBAIC04OTE5LDggKzEyNTYzLDEwIEBACiAgICAgICAgIH0KICAgICAgICAgLyogY3JlYXRlIGVudHJpZXMgZm9yIGRlbGV0aW5nIGNoYXJzIGluIHogKi8KICAgICAgICAgaWYgKHogIT0gTlVMTCkgewotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VW5pY29kZV9HRVRfU0laRSh6KTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9BU19VTklDT0RFKHopW2ldKTsKKyAgICAgICAgICAgIHpfa2luZCA9IFB5VW5pY29kZV9LSU5EKHopOworICAgICAgICAgICAgel9kYXRhID0gUHlVbmljb2RlX0RBVEEoeik7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgoeik7IGkrKykgeworICAgICAgICAgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfUkVBRCh6X2tpbmQsIHpfZGF0YSwgaSkpOwogICAgICAgICAgICAgICAgIGlmICgha2V5KQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShuZXcsIGtleSwgUHlfTm9uZSk7CkBAIC04OTMwLDYgKzEyNTc2LDkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CisgICAgICAgIGludCBraW5kOworICAgICAgICB2b2lkICpkYXRhOworCiAgICAgICAgIC8qIHggbXVzdCBiZSBhIGRpY3QgKi8KICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdCh4KSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImlmIHlvdSBnaXZlIG9ubHkgb25lIGFyZ3VtZW50ICIKQEAgLTg5NDEsMTIgKzEyNTkwLDE0IEBACiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKICAgICAgICAgICAgICAgICAvKiBjb252ZXJ0IHN0cmluZyBrZXlzIHRvIGludGVnZXIga2V5cyAqLwogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdrZXk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShrZXkpICE9IDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoa2V5KSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic3RyaW5nIGtleXMgaW4gdHJhbnNsYXRlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YWJsZSBtdXN0IGJlIG9mIGxlbmd0aCAxIik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuZXdrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX0FTX1VOSUNPREUoa2V5KVswXSk7CisgICAgICAgICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGtleSk7CisgICAgICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGtleSk7CisgICAgICAgICAgICAgICAgbmV3a2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKTsKICAgICAgICAgICAgICAgICBpZiAoIW5ld2tleSkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0obmV3LCBuZXdrZXksIHZhbHVlKTsKQEAgLTg5ODAsOSArMTI2MzEsOSBAQAogYXJlIGRlbGV0ZWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfdHJhbnNsYXRlKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlKQordW5pY29kZV90cmFuc2xhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsIHRhYmxlLCAiaWdub3JlIik7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzZWxmLCB0YWJsZSwgImlnbm9yZSIpOwogfQogCiBQeURvY19TVFJWQVIodXBwZXJfX2RvY19fLApAQCAtODk5MSw5ICsxMjY0MiwxMyBAQAogUmV0dXJuIGEgY29weSBvZiBTIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfdXBwZXIoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV91cHBlcihQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gZml4dXAoc2VsZiwgZml4dXBwZXIpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpCisgICAgICAgIHJldHVybiBhc2NpaV91cHBlcl9vcl9sb3dlcihzZWxmLCAwKTsKKyAgICByZXR1cm4gY2FzZV9vcGVyYXRpb24oc2VsZiwgZG9fdXBwZXIpOwogfQogCiBQeURvY19TVFJWQVIoemZpbGxfX2RvY19fLApAQCAtOTAwMyw1NSArMTI2NTgsNTAgQEAKIG9mIHRoZSBzcGVjaWZpZWQgd2lkdGguIFRoZSBzdHJpbmcgUyBpcyBuZXZlciB0cnVuY2F0ZWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3pmaWxsKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3pmaWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9zc2l6ZV90IGZpbGw7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1OwotCisgICAgUHlPYmplY3QgKnU7CiAgICAgUHlfc3NpemVfdCB3aWR0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X1VDUzQgY2hyOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnpmaWxsIiwgJndpZHRoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc2VsZi0+bGVuZ3RoID49IHdpZHRoKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikKLSAgICAgICAgICAgICAgICApOwotICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGZpbGwgPSB3aWR0aCAtIHNlbGYtPmxlbmd0aDsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPj0gd2lkdGgpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgICBmaWxsID0gd2lkdGggLSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKIAogICAgIHUgPSBwYWQoc2VsZiwgZmlsbCwgMCwgJzAnKTsKIAogICAgIGlmICh1ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHUtPnN0cltmaWxsXSA9PSAnKycgfHwgdS0+c3RyW2ZpbGxdID09ICctJykgeworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodSk7CisgICAgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgZmlsbCk7CisKKyAgICBpZiAoY2hyID09ICcrJyB8fCBjaHIgPT0gJy0nKSB7CiAgICAgICAgIC8qIG1vdmUgc2lnbiB0byBiZWdpbm5pbmcgb2Ygc3RyaW5nICovCi0gICAgICAgIHUtPnN0clswXSA9IHUtPnN0cltmaWxsXTsKLSAgICAgICAgdS0+c3RyW2ZpbGxdID0gJzAnOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgMCwgY2hyKTsKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGZpbGwsICcwJyk7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHU7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1LCAxKSk7CisgICAgcmV0dXJuIHU7CiB9CiAKICNpZiAwCi1zdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2ZyZWVsaXN0c2l6ZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCi17Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhudW1mcmVlKTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfX2RlY2ltYWwyYXNjaWkoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSShQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHNlbGYpOwogfQogI2VuZGlmCiAKQEAgLTkwNjQsMTEgKzEyNzE0LDExIEBACiBwcmVmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBzdHJpbmdzIHRvIHRyeS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfc3RhcnRzd2l0aChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCit1bmljb2RlX3N0YXJ0c3dpdGgoUHlPYmplY3QgKnNlbGYsCiAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgaW50IHJlc3VsdDsKQEAgLTkwNzgsOCArMTI3MjgsNyBAQAogICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHN1YnN0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdCgKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSkpOworICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QoUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpKTsKICAgICAgICAgICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKQEAgLTkwOTEsNyArMTI3NDAsNyBAQAogICAgICAgICAvKiBub3RoaW5nIG1hdGNoZWQgKi8KICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgIH0KLSAgICBzdWJzdHJpbmcgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKKyAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwogICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKQEAgLTkxMTMsMTEgKzEyNzYyLDExIEBACiBzdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBzdHJpbmdzIHRvIHRyeS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZW5kc3dpdGgoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAordW5pY29kZV9lbmRzd2l0aChQeU9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgaW50IHJlc3VsdDsKQEAgLTkxMjcsNyArMTI3NzYsNyBAQAogICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHN1YnN0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdCgKKyAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KAogICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7CiAgICAgICAgICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05MTM5LDcgKzEyNzg4LDcgQEAKICAgICAgICAgfQogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgfQotICAgIHN1YnN0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOworICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7CiAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZW5kc3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKQEAgLTkxNTEsNyArMTI4MDAsMTYwIEBACiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOwogfQogCi0jaW5jbHVkZSAic3RyaW5nbGliL3N0cmluZ19mb3JtYXQuaCIKK1B5X0xPQ0FMX0lOTElORSh2b2lkKQorX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIHdyaXRlci0+c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKTsKKyAgICB3cml0ZXItPm1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUod3JpdGVyLT5idWZmZXIpOworICAgIHdyaXRlci0+ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKTsKKyAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfS0lORCh3cml0ZXItPmJ1ZmZlcik7Cit9CisKK3ZvaWQKK19QeVVuaWNvZGVXcml0ZXJfSW5pdChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X3NzaXplX3QgbWluX2xlbmd0aCkKK3sKKyAgICBtZW1zZXQod3JpdGVyLCAwLCBzaXplb2YoKndyaXRlcikpOworI2lmZGVmIFB5X0RFQlVHCisgICAgd3JpdGVyLT5raW5kID0gNTsgICAgLyogaW52YWxpZCBraW5kICovCisjZW5kaWYKKyAgICB3cml0ZXItPm1pbl9sZW5ndGggPSBQeV9NQVgobWluX2xlbmd0aCwgMTAwKTsKKyAgICB3cml0ZXItPm92ZXJhbGxvY2F0ZSA9IChtaW5fbGVuZ3RoID4gMCk7Cit9CisKK2ludAorX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgbWF4Y2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IG5ld2xlbjsKKyAgICBQeU9iamVjdCAqbmV3YnVmZmVyOworCisgICAgYXNzZXJ0KGxlbmd0aCA+IDApOworCisgICAgaWYgKGxlbmd0aCA+IFBZX1NTSVpFX1RfTUFYIC0gd3JpdGVyLT5wb3MpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBuZXdsZW4gPSB3cml0ZXItPnBvcyArIGxlbmd0aDsKKworICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgIGlmICh3cml0ZXItPm92ZXJhbGxvY2F0ZSkgeworICAgICAgICAgICAgLyogb3ZlcmFsbG9jYXRlIDI1JSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHJlc2l6ZSAqLworICAgICAgICAgICAgaWYgKG5ld2xlbiA8PSAoUFlfU1NJWkVfVF9NQVggLSBuZXdsZW4gLyA0KSkKKyAgICAgICAgICAgICAgICBuZXdsZW4gKz0gbmV3bGVuIC8gNDsKKyAgICAgICAgICAgIGlmIChuZXdsZW4gPCB3cml0ZXItPm1pbl9sZW5ndGgpCisgICAgICAgICAgICAgICAgbmV3bGVuID0gd3JpdGVyLT5taW5fbGVuZ3RoOworICAgICAgICB9CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gUHlVbmljb2RlX05ldyhuZXdsZW4sIG1heGNoYXIpOworICAgICAgICBpZiAod3JpdGVyLT5idWZmZXIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUod3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKG5ld2xlbiA+IHdyaXRlci0+c2l6ZSkgeworICAgICAgICBpZiAod3JpdGVyLT5vdmVyYWxsb2NhdGUpIHsKKyAgICAgICAgICAgIC8qIG92ZXJhbGxvY2F0ZSAyNSUgdG8gbGltaXQgdGhlIG51bWJlciBvZiByZXNpemUgKi8KKyAgICAgICAgICAgIGlmIChuZXdsZW4gPD0gKFBZX1NTSVpFX1RfTUFYIC0gbmV3bGVuIC8gNCkpCisgICAgICAgICAgICAgICAgbmV3bGVuICs9IG5ld2xlbiAvIDQ7CisgICAgICAgICAgICBpZiAobmV3bGVuIDwgd3JpdGVyLT5taW5fbGVuZ3RoKQorICAgICAgICAgICAgICAgIG5ld2xlbiA9IHdyaXRlci0+bWluX2xlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyIHx8IHdyaXRlci0+cmVhZG9ubHkpIHsKKyAgICAgICAgICAgIC8qIHJlc2l6ZSArIHdpZGVuICovCisgICAgICAgICAgICBuZXdidWZmZXIgPSBQeVVuaWNvZGVfTmV3KG5ld2xlbiwgbWF4Y2hhcik7CisgICAgICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMobmV3YnVmZmVyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIsIDAsIHdyaXRlci0+cG9zKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXItPnJlYWRvbmx5ID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG5ld2J1ZmZlciA9IHJlc2l6ZV9jb21wYWN0KHdyaXRlci0+YnVmZmVyLCBuZXdsZW4pOworICAgICAgICAgICAgaWYgKG5ld2J1ZmZlciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IG5ld2J1ZmZlcjsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUod3JpdGVyKTsKKyAgICB9CisgICAgZWxzZSBpZiAobWF4Y2hhciA+IHdyaXRlci0+bWF4Y2hhcikgeworICAgICAgICBhc3NlcnQoIXdyaXRlci0+cmVhZG9ubHkpOworICAgICAgICBuZXdidWZmZXIgPSBQeVVuaWNvZGVfTmV3KHdyaXRlci0+c2l6ZSwgbWF4Y2hhcik7CisgICAgICAgIGlmIChuZXdidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMobmV3YnVmZmVyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciwgMCwgd3JpdGVyLT5wb3MpOworICAgICAgICBQeV9ERUNSRUYod3JpdGVyLT5idWZmZXIpOworICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IG5ld2J1ZmZlcjsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUod3JpdGVyKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5T2JqZWN0ICpzdHIpCit7CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyKTsKKyAgICBpZiAobWF4Y2hhciA+IHdyaXRlci0+bWF4Y2hhciB8fCBsZW4gPiB3cml0ZXItPnNpemUgLSB3cml0ZXItPnBvcykgeworICAgICAgICBpZiAod3JpdGVyLT5idWZmZXIgPT0gTlVMTCAmJiAhd3JpdGVyLT5vdmVyYWxsb2NhdGUpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzdHIpOworICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBzdHI7CisgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOworICAgICAgICAgICAgd3JpdGVyLT5yZWFkb25seSA9IDE7CisgICAgICAgICAgICB3cml0ZXItPnNpemUgPSAwOworICAgICAgICAgICAgd3JpdGVyLT5wb3MgKz0gbGVuOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKHdyaXRlciwgbGVuLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwgMCwgbGVuKTsKKyAgICB3cml0ZXItPnBvcyArPSBsZW47CisgICAgcmV0dXJuIDA7Cit9CisKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVXcml0ZXJfRmluaXNoKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBpZiAod3JpdGVyLT5wb3MgPT0gMCkgeworICAgICAgICBQeV9YREVDUkVGKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisgICAgaWYgKHdyaXRlci0+cmVhZG9ubHkpIHsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKSA9PSB3cml0ZXItPnBvcyk7CisgICAgICAgIHJldHVybiB3cml0ZXItPmJ1ZmZlcjsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKSAhPSB3cml0ZXItPnBvcykgeworICAgICAgICBQeU9iamVjdCAqbmV3YnVmZmVyOworICAgICAgICBuZXdidWZmZXIgPSByZXNpemVfY29tcGFjdCh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MpOworICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IG5ld2J1ZmZlcjsKKyAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXItPmJ1ZmZlciwgMSkpOworICAgIHJldHVybiB3cml0ZXItPmJ1ZmZlcjsKK30KKwordm9pZAorX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBQeV9DTEVBUih3cml0ZXItPmJ1ZmZlcik7Cit9CisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaCIKIAogUHlEb2NfU1RSVkFSKGZvcm1hdF9fZG9jX18sCiAgICAgICAgICAgICAgIlMuZm9ybWF0KCphcmdzLCAqKmt3YXJncykgLT4gc3RyXG5cCkBAIC05MTY5LDEzICsxMjk3MSwyMyBAQAogdW5pY29kZV9fZm9ybWF0X18oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYzsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICBpbnQgcmV0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOl9fZm9ybWF0X18iLCAmZm9ybWF0X3NwZWMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBfUHlVbmljb2RlX0Zvcm1hdEFkdmFuY2VkKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoZm9ybWF0X3NwZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCAwKTsKKyAgICByZXQgPSBfUHlVbmljb2RlX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKCZ3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBmb3JtYXRfc3BlYywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKGZvcm1hdF9zcGVjKSk7CisgICAgaWYgKHJldCA9PSAtMSkgeworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiB9CiAKIFB5RG9jX1NUUlZBUihwX2Zvcm1hdF9fZG9jX18sCkBAIC05MTg0LDI4ICsxMjk5Niw1NSBAQAogUmV0dXJuIGEgZm9ybWF0dGVkIHZlcnNpb24gb2YgUyBhcyBkZXNjcmliZWQgYnkgZm9ybWF0X3NwZWMuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX19zaXplb2ZfXyhQeVVuaWNvZGVPYmplY3QgKnYpCit1bmljb2RlX19zaXplb2ZfXyhQeU9iamVjdCAqdikKIHsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemVvZihQeVVuaWNvZGVPYmplY3QpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeV9VTklDT0RFKSAqICh2LT5sZW5ndGggKyAxKSk7CisgICAgUHlfc3NpemVfdCBzaXplOworCisgICAgLyogSWYgaXQncyBhIGNvbXBhY3Qgb2JqZWN0LCBhY2NvdW50IGZvciBiYXNlIHN0cnVjdHVyZSArCisgICAgICAgY2hhcmFjdGVyIGRhdGEuICovCisgICAgaWYgKFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKHYpKQorICAgICAgICBzaXplID0gc2l6ZW9mKFB5QVNDSUlPYmplY3QpICsgUHlVbmljb2RlX0dFVF9MRU5HVEgodikgKyAxOworICAgIGVsc2UgaWYgKFB5VW5pY29kZV9JU19DT01QQUNUKHYpKQorICAgICAgICBzaXplID0gc2l6ZW9mKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QpICsKKyAgICAgICAgICAgIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSArIDEpICogUHlVbmljb2RlX0tJTkQodik7CisgICAgZWxzZSB7CisgICAgICAgIC8qIElmIGl0IGlzIGEgdHdvLWJsb2NrIG9iamVjdCwgYWNjb3VudCBmb3IgYmFzZSBvYmplY3QsIGFuZAorICAgICAgICAgICBmb3IgY2hhcmFjdGVyIGJsb2NrIGlmIHByZXNlbnQuICovCisgICAgICAgIHNpemUgPSBzaXplb2YoUHlVbmljb2RlT2JqZWN0KTsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVfREFUQV9BTlkodikpCisgICAgICAgICAgICBzaXplICs9IChQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSArIDEpICoKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfS0lORCh2KTsKKyAgICB9CisgICAgLyogSWYgdGhlIHdzdHIgcG9pbnRlciBpcyBwcmVzZW50LCBhY2NvdW50IGZvciBpdCB1bmxlc3MgaXQgaXMgc2hhcmVkCisgICAgICAgd2l0aCB0aGUgZGF0YSBwb2ludGVyLiBDaGVjayBpZiB0aGUgZGF0YSBpcyBub3Qgc2hhcmVkLiAqLworICAgIGlmIChfUHlVbmljb2RlX0hBU19XU1RSX01FTU9SWSh2KSkKKyAgICAgICAgc2l6ZSArPSAoUHlVbmljb2RlX1dTVFJfTEVOR1RIKHYpICsgMSkgKiBzaXplb2Yod2NoYXJfdCk7CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTX1VURjhfTUVNT1JZKHYpKQorICAgICAgICBzaXplICs9IFB5VW5pY29kZV9VVEY4X0xFTkdUSCh2KSArIDE7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOwogfQogCiBQeURvY19TVFJWQVIoc2l6ZW9mX19kb2NfXywKICAgICAgICAgICAgICAiUy5fX3NpemVvZl9fKCkgLT4gc2l6ZSBvZiBTIGluIG1lbW9yeSwgaW4gYnl0ZXMiKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZ2V0bmV3YXJncyhQeVVuaWNvZGVPYmplY3QgKnYpCit1bmljb2RlX2dldG5ld2FyZ3MoUHlPYmplY3QgKnYpCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIih1IykiLCB2LT5zdHIsIHYtPmxlbmd0aCk7CisgICAgUHlPYmplY3QgKmNvcHkgPSBfUHlVbmljb2RlX0NvcHkodik7CisgICAgaWYgKCFjb3B5KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE4pIiwgY29weSk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiB1bmljb2RlX21ldGhvZHNbXSA9IHsKICAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9lbmNvZGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGVuY29kZV9fZG9jX199LAogICAgIHsicmVwbGFjZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9yZXBsYWNlLCBNRVRIX1ZBUkFSR1MsIHJlcGxhY2VfX2RvY19ffSwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3NwbGl0LCBNRVRIX1ZBUkFSR1MsIHNwbGl0X19kb2NfX30sCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcnNwbGl0LCBNRVRIX1ZBUkFSR1MsIHJzcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0X19kb2NfX30sCisgICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcnNwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCByc3BsaXRfX2RvY19ffSwKICAgICB7ImpvaW4iLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfam9pbiwgTUVUSF9PLCBqb2luX19kb2NfX30sCiAgICAgeyJjYXBpdGFsaXplIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2NhcGl0YWxpemUsIE1FVEhfTk9BUkdTLCBjYXBpdGFsaXplX19kb2NfX30sCisgICAgeyJjYXNlZm9sZCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9jYXNlZm9sZCwgTUVUSF9OT0FSR1MsIGNhc2Vmb2xkX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV90aXRsZSwgTUVUSF9OT0FSR1MsIHRpdGxlX19kb2NfX30sCiAgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIGNlbnRlcl9fZG9jX199LAogICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfY291bnQsIE1FVEhfVkFSQVJHUywgY291bnRfX2RvY19ffSwKQEAgLTkyMjEsNyArMTMwNjAsNyBAQAogICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKICAgICB7InJzdHJpcCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9yc3RyaXAsIE1FVEhfVkFSQVJHUywgcnN0cmlwX19kb2NfX30sCiAgICAgeyJycGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JwYXJ0aXRpb24sIE1FVEhfTywgcnBhcnRpdGlvbl9fZG9jX199LAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1MsIHNwbGl0bGluZXNfX2RvY19ffSwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc3BsaXRsaW5lc19fZG9jX199LAogICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3RyaXAsIE1FVEhfVkFSQVJHUywgc3RyaXBfX2RvY19ffSwKICAgICB7InN3YXBjYXNlIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3N3YXBjYXNlLCBNRVRIX05PQVJHUywgc3dhcGNhc2VfX2RvY19ffSwKICAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV90cmFuc2xhdGUsIE1FVEhfTywgdHJhbnNsYXRlX19kb2NfX30sCkBAIC05MjQ3LDEyICsxMzA4Niw3IEBACiAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfU1RBVElDLCBtYWtldHJhbnNfX2RvY19ffSwKICAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfX3NpemVvZl9fLCBNRVRIX05PQVJHUywgc2l6ZW9mX19kb2NfX30sCiAjaWYgMAotICAgIHsiY2Fwd29yZHMiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfY2Fwd29yZHMsIE1FVEhfTk9BUkdTLCBjYXB3b3Jkc19fZG9jX199LAotI2VuZGlmCi0KLSNpZiAwCiAgICAgLyogVGhlc2UgbWV0aG9kcyBhcmUganVzdCB1c2VkIGZvciBkZWJ1Z2dpbmcgdGhlIGltcGxlbWVudGF0aW9uLiAqLwotICAgIHsiZnJlZWxpc3RzaXplIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2ZyZWVsaXN0c2l6ZSwgTUVUSF9OT0FSR1N9LAogICAgIHsiX2RlY2ltYWwyYXNjaWkiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfX2RlY2ltYWwyYXNjaWksIE1FVEhfTk9BUkdTfSwKICNlbmRpZgogCkBAIC05MjYzLDEwICsxMzA5Nyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9tb2QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQogewotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICByZXR1cm4gUHlVbmljb2RlX0Zvcm1hdCh2LCB3KTsKIH0KIApAQCAtOTI4OSw1MCArMTMxMjEsNjkgQEAKIH07CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfc3Vic2NyaXB0KFB5VW5pY29kZU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGl0ZW0pCit1bmljb2RlX3N1YnNjcmlwdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGl0ZW0pCiB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoUHlJbmRleF9DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9zc2l6ZV90IGkgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfSW5kZXhFcnJvcik7CiAgICAgICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGkgPCAwKQotICAgICAgICAgICAgaSArPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7CisgICAgICAgICAgICBpICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgICAgICByZXR1cm4gdW5pY29kZV9nZXRpdGVtKHNlbGYsIGkpOwogICAgIH0gZWxzZSBpZiAoUHlTbGljZV9DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aCwgY3VyLCBpOwotICAgICAgICBQeV9VTklDT0RFKiBzb3VyY2VfYnVmOwotICAgICAgICBQeV9VTklDT0RFKiByZXN1bHRfYnVmOwotICAgICAgICBQeU9iamVjdCogcmVzdWx0OworICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgICAgICB2b2lkICpzcmNfZGF0YSwgKmRlc3RfZGF0YTsKKyAgICAgICAgaW50IHNyY19raW5kLCBkZXN0X2tpbmQ7CisgICAgICAgIFB5X1VDUzQgY2gsIG1heF9jaGFyLCBraW5kX2xpbWl0OwogCi0gICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChpdGVtLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZiksCisgICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChpdGVtLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW5ndGgpIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2xpY2VsZW5ndGggPD0gMCkgewotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKLSAgICAgICAgfSBlbHNlIGlmIChzdGFydCA9PSAwICYmIHN0ZXAgPT0gMSAmJiBzbGljZWxlbmd0aCA9PSBzZWxmLT5sZW5ndGggJiYKLSAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGFydCA9PSAwICYmIHN0ZXAgPT0gMSAmJgorICAgICAgICAgICAgICAgICAgIHNsaWNlbGVuZ3RoID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKSB7CisgICAgICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZXAgPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzZWxmLT5zdHIgKyBzdGFydCwgc2xpY2VsZW5ndGgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc291cmNlX2J1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKChQeU9iamVjdCopc2VsZik7Ci0gICAgICAgICAgICByZXN1bHRfYnVmID0gKFB5X1VOSUNPREUgKilQeU9iamVjdF9NQUxMT0Moc2xpY2VsZW5ndGgqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5X1VOSUNPREUpKTsKLQotICAgICAgICAgICAgaWYgKHJlc3VsdF9idWYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgICAgICAgICAgZm9yIChjdXIgPSBzdGFydCwgaSA9IDA7IGkgPCBzbGljZWxlbmd0aDsgY3VyICs9IHN0ZXAsIGkrKykgewotICAgICAgICAgICAgICAgIHJlc3VsdF9idWZbaV0gPSBzb3VyY2VfYnVmW2N1cl07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShyZXN1bHRfYnVmLCBzbGljZWxlbmd0aCk7Ci0gICAgICAgICAgICBQeU9iamVjdF9GUkVFKHJlc3VsdF9idWYpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgc3RhcnQgKyBzbGljZWxlbmd0aCk7CiAgICAgICAgIH0KKyAgICAgICAgLyogR2VuZXJhbCBjYXNlICovCisgICAgICAgIHNyY19raW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgICAgIHNyY19kYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKSB7CisgICAgICAgICAgICBraW5kX2xpbWl0ID0ga2luZF9tYXhjaGFyX2xpbWl0KHNyY19raW5kKTsKKyAgICAgICAgICAgIG1heF9jaGFyID0gMDsKKyAgICAgICAgICAgIGZvciAoY3VyID0gc3RhcnQsIGkgPSAwOyBpIDwgc2xpY2VsZW5ndGg7IGN1ciArPSBzdGVwLCBpKyspIHsKKyAgICAgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKHNyY19raW5kLCBzcmNfZGF0YSwgY3VyKTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPiBtYXhfY2hhcikgeworICAgICAgICAgICAgICAgICAgICBtYXhfY2hhciA9IGNoOworICAgICAgICAgICAgICAgICAgICBpZiAobWF4X2NoYXIgPj0ga2luZF9saW1pdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBtYXhfY2hhciA9IDEyNzsKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX05ldyhzbGljZWxlbmd0aCwgbWF4X2NoYXIpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZGVzdF9raW5kID0gUHlVbmljb2RlX0tJTkQocmVzdWx0KTsKKyAgICAgICAgZGVzdF9kYXRhID0gUHlVbmljb2RlX0RBVEEocmVzdWx0KTsKKworICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOyBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoc3JjX2tpbmQsIHNyY19kYXRhLCBjdXIpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGRlc3Rfa2luZCwgZGVzdF9kYXRhLCBpLCBjaCk7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXN1bHQsIDEpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9IGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAic3RyaW5nIGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkzNjYsMTYgKzEzMjE3LDE3IEBACiAKIC8qIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIGEgUHlVbmljb2RlIG9iamVjdCwgb3IgTlVMTCBvbiBmYWlsdXJlLiAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlKQorc3RhdGljIGludAorZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlLAorICAgICAgICAgICAgUHlPYmplY3QgKipwX291dHB1dCwgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewogICAgIGNoYXIgKnA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBkb3VibGUgeDsKKyAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwogICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChwcmVjIDwgMCkKICAgICAgICAgcHJlYyA9IDY7CkBAIC05MzgzLDU0ICsxMzIzNSwxNjggQEAKICAgICBwID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHgsIHR5cGUsIHByZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxhZ3MgJiBGX0FMVCkgPyBQeV9EVFNGX0FMVCA6IDAsIE5VTEwpOwogICAgIGlmIChwID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShwLCBzdHJsZW4ocCkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgbGVuID0gc3RybGVuKHApOworICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIGxlbiwgMTI3KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgdW5pY29kZV93cml0ZV9jc3RyKHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywgcCwgbGVuKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gbGVuOworICAgIH0KKyAgICBlbHNlCisgICAgICAgICpwX291dHB1dCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKHAsIGxlbik7CiAgICAgUHlNZW1fRnJlZShwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiAwOwogfQogCisvKiBmb3JtYXRsb25nKCkgZW11bGF0ZXMgdGhlIGZvcm1hdCBjb2RlcyBkLCB1LCBvLCB4IGFuZCBYLCBhbmQKKyAqIHRoZSBGX0FMVCBmbGFnLCBmb3IgUHl0aG9uJ3MgbG9uZyAodW5ib3VuZGVkKSBpbnRzLiAgSXQncyBub3QgdXNlZCBmb3IKKyAqIFB5dGhvbidzIHJlZ3VsYXIgaW50cy4KKyAqIFJldHVybiB2YWx1ZTogIGEgbmV3IFB5VW5pY29kZU9iamVjdCosIG9yIE5VTEwgaWYgZXJyb3IuCisgKiAgICAgVGhlIG91dHB1dCBzdHJpbmcgaXMgb2YgdGhlIGZvcm0KKyAqICAgICAgICAgIi0iPyAoIjB4IiB8ICIwWCIpPyBkaWdpdCsKKyAqICAgICAiMHgiLyIwWCIgYXJlIHByZXNlbnQgb25seSBmb3IgeCBhbmQgWCBjb252ZXJzaW9ucywgd2l0aCBGX0FMVAorICogICAgICAgICBzZXQgaW4gZmxhZ3MuICBUaGUgY2FzZSBvZiBoZXggZGlnaXRzIHdpbGwgYmUgY29ycmVjdCwKKyAqICAgICBUaGVyZSB3aWxsIGJlIGF0IGxlYXN0IHByZWMgZGlnaXRzLCB6ZXJvLWZpbGxlZCBvbiB0aGUgbGVmdCBpZgorICogICAgICAgICBuZWNlc3NhcnkgdG8gZ2V0IHRoYXQgbWFueS4KKyAqIHZhbCAgICAgICAgICBvYmplY3QgdG8gYmUgY29udmVydGVkCisgKiBmbGFncyAgICAgICAgYml0bWFzayBvZiBmb3JtYXQgZmxhZ3M7IG9ubHkgRl9BTFQgaXMgbG9va2VkIGF0CisgKiBwcmVjICAgICAgICAgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzOyAwLWZpbGwgb24gbGVmdCBpZiBuZWVkZWQKKyAqIHR5cGUgICAgICAgICBhIGNoYXJhY3RlciBpbiBbZHVveFhdOyB1IGFjdHMgdGhlIHNhbWUgYXMgZAorICoKKyAqIENBVVRJT046ICBvLCB4IGFuZCBYIGNvbnZlcnNpb25zIG9uIHJlZ3VsYXIgaW50cyBjYW4gbmV2ZXIKKyAqIHByb2R1Y2UgYSAnLScgc2lnbiwgYnV0IGNhbiBmb3IgUHl0aG9uJ3MgdW5ib3VuZGVkIGludHMuCisgKi8KIHN0YXRpYyBQeU9iamVjdCoKIGZvcm1hdGxvbmcoUHlPYmplY3QgKnZhbCwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUpCiB7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgY2hhciAqYnVmOwotICAgIGludCBsZW47Ci0gICAgUHlPYmplY3QgKnN0cjsgLyogdGVtcG9yYXJ5IHN0cmluZyBvYmplY3QuICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IHNpZ247ICAgICAgICAgICAvKiAxIGlmICctJywgZWxzZSAwICovCisgICAgaW50IGxlbjsgICAgICAgICAgICAvKiBudW1iZXIgb2YgY2hhcmFjdGVycyAqLworICAgIFB5X3NzaXplX3QgbGxlbjsKKyAgICBpbnQgbnVtZGlnaXRzOyAgICAgIC8qIGxlbiA9PSBudW1ub25kaWdpdHMgKyBudW1kaWdpdHMgKi8KKyAgICBpbnQgbnVtbm9uZGlnaXRzID0gMDsKIAotICAgIHN0ciA9IF9QeUJ5dGVzX0Zvcm1hdExvbmcodmFsLCBmbGFncywgcHJlYywgdHlwZSwgJmJ1ZiwgJmxlbik7Ci0gICAgaWYgKCFzdHIpCisgICAgLyogQXZvaWQgZXhjZWVkaW5nIFNTSVpFX1RfTUFYICovCisgICAgaWYgKHByZWMgPiBJTlRfTUFYLTMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicHJlY2lzaW9uIHRvbyBsYXJnZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwotICAgIFB5X0RFQ1JFRihzdHIpOworICAgIH0KKworICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodmFsKSk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlICdkJzoKKyAgICBjYXNlICd1JzoKKyAgICAgICAgLyogU3BlY2lhbC1jYXNlIGJvb2xlYW46IHdlIHdhbnQgMC8xICovCisgICAgICAgIGlmIChQeUJvb2xfQ2hlY2sodmFsKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDEwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gUHlfVFlQRSh2YWwpLT50cF9zdHIodmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnbyc6CisgICAgICAgIG51bW5vbmRpZ2l0cyA9IDI7CisgICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlICd4JzoKKyAgICBjYXNlICdYJzoKKyAgICAgICAgbnVtbm9uZGlnaXRzID0gMjsKKyAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfVG9CYXNlKHZhbCwgMTYpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoISIndHlwZScgbm90IGluIFtkdW94WF0iKTsKKyAgICB9CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYXNzZXJ0KHVuaWNvZGVfbW9kaWZpYWJsZShyZXN1bHQpKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHJlc3VsdCkpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfQVNDSUkocmVzdWx0KSk7CisKKyAgICAvKiBUbyBtb2RpZnkgdGhlIHN0cmluZyBpbi1wbGFjZSwgdGhlcmUgY2FuIG9ubHkgYmUgb25lIHJlZmVyZW5jZS4gKi8KKyAgICBpZiAoUHlfUkVGQ05UKHJlc3VsdCkgIT0gMSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGJ1ZiA9IFB5VW5pY29kZV9EQVRBKHJlc3VsdCk7CisgICAgbGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7CisgICAgaWYgKGxsZW4gPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0b28gbGFyZ2UgaW4gX1B5Qnl0ZXNfRm9ybWF0TG9uZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbGVuID0gKGludClsbGVuOworICAgIHNpZ24gPSBidWZbMF0gPT0gJy0nOworICAgIG51bW5vbmRpZ2l0cyArPSBzaWduOworICAgIG51bWRpZ2l0cyA9IGxlbiAtIG51bW5vbmRpZ2l0czsKKyAgICBhc3NlcnQobnVtZGlnaXRzID4gMCk7CisKKyAgICAvKiBHZXQgcmlkIG9mIGJhc2UgbWFya2VyIHVubGVzcyBGX0FMVCAqLworICAgIGlmICgoKGZsYWdzICYgRl9BTFQpID09IDAgJiYKKyAgICAgICAgKHR5cGUgPT0gJ28nIHx8IHR5cGUgPT0gJ3gnIHx8IHR5cGUgPT0gJ1gnKSkpIHsKKyAgICAgICAgYXNzZXJ0KGJ1ZltzaWduXSA9PSAnMCcpOworICAgICAgICBhc3NlcnQoYnVmW3NpZ24rMV0gPT0gJ3gnIHx8IGJ1ZltzaWduKzFdID09ICdYJyB8fAorICAgICAgICAgICAgICAgYnVmW3NpZ24rMV0gPT0gJ28nKTsKKyAgICAgICAgbnVtbm9uZGlnaXRzIC09IDI7CisgICAgICAgIGJ1ZiArPSAyOworICAgICAgICBsZW4gLT0gMjsKKyAgICAgICAgaWYgKHNpZ24pCisgICAgICAgICAgICBidWZbMF0gPSAnLSc7CisgICAgICAgIGFzc2VydChsZW4gPT0gbnVtbm9uZGlnaXRzICsgbnVtZGlnaXRzKTsKKyAgICAgICAgYXNzZXJ0KG51bWRpZ2l0cyA+IDApOworICAgIH0KKworICAgIC8qIEZpbGwgd2l0aCBsZWFkaW5nIHplcm9lcyB0byBtZWV0IG1pbmltdW0gd2lkdGguICovCisgICAgaWYgKHByZWMgPiBudW1kaWdpdHMpIHsKKyAgICAgICAgUHlPYmplY3QgKnIxID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1ub25kaWdpdHMgKyBwcmVjKTsKKyAgICAgICAgY2hhciAqYjE7CisgICAgICAgIGlmICghcjEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYjEgPSBQeUJ5dGVzX0FTX1NUUklORyhyMSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1ub25kaWdpdHM7ICsraSkKKyAgICAgICAgICAgICpiMSsrID0gKmJ1ZisrOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJlYyAtIG51bWRpZ2l0czsgaSsrKQorICAgICAgICAgICAgKmIxKysgPSAnMCc7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1kaWdpdHM7IGkrKykKKyAgICAgICAgICAgICpiMSsrID0gKmJ1ZisrOworICAgICAgICAqYjEgPSAnXDAnOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ID0gcjE7CisgICAgICAgIGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgIGxlbiA9IG51bW5vbmRpZ2l0cyArIHByZWM7CisgICAgfQorCisgICAgLyogRml4IHVwIGNhc2UgZm9yIGhleCBjb252ZXJzaW9ucy4gKi8KKyAgICBpZiAodHlwZSA9PSAnWCcpIHsKKyAgICAgICAgLyogTmVlZCB0byBjb252ZXJ0IGFsbCBsb3dlciBjYXNlIGxldHRlcnMgdG8gdXBwZXIgY2FzZS4KKyAgICAgICAgICAgYW5kIG5lZWQgdG8gY29udmVydCAweCB0byAwWCAoYW5kIC0weCB0byAtMFgpLiAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICBpZiAoYnVmW2ldID49ICdhJyAmJiBidWZbaV0gPD0gJ3gnKQorICAgICAgICAgICAgICAgIGJ1ZltpXSAtPSAnYSctJ0EnOworICAgIH0KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhyZXN1bHQpIHx8IGxlbiAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpKSB7CisgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgICAgICB1bmljb2RlID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkoYnVmLCBsZW4pOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ID0gdW5pY29kZTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGludAotZm9ybWF0Y2hhcihQeV9VTklDT0RFICpidWYsCi0gICAgICAgICAgIHNpemVfdCBidWZsZW4sCi0gICAgICAgICAgIFB5T2JqZWN0ICp2KQorc3RhdGljIFB5X1VDUzQKK2Zvcm1hdGNoYXIoUHlPYmplY3QgKnYpCiB7CiAgICAgLyogcHJlc3VtZSB0aGF0IHRoZSBidWZmZXIgaXMgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzIGxvbmcgKi8KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodikgPT0gMSkgewotICAgICAgICAgICAgYnVmWzBdID0gUHlVbmljb2RlX0FTX1VOSUNPREUodilbMF07Ci0gICAgICAgICAgICBidWZbMV0gPSAnXDAnOwotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSA9PSAxKSB7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JFQURfQ0hBUih2LCAwKTsKICAgICAgICAgfQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh2KSA9PSAyKSB7Ci0gICAgICAgICAgICAvKiBEZWNvZGUgYSB2YWxpZCBzdXJyb2dhdGUgcGFpciAqLwotICAgICAgICAgICAgaW50IGMwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodilbMF07Ci0gICAgICAgICAgICBpbnQgYzEgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KVsxXTsKLSAgICAgICAgICAgIGlmICgweEQ4MDAgPD0gYzAgJiYgYzAgPD0gMHhEQkZGICYmCi0gICAgICAgICAgICAgICAgMHhEQzAwIDw9IGMxICYmIGMxIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIGJ1ZlswXSA9IGMwOwotICAgICAgICAgICAgICAgIGJ1ZlsxXSA9IGMxOwotICAgICAgICAgICAgICAgIGJ1ZlsyXSA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogICAgIGVsc2UgewpAQCAtOTQ0MCw0NSArMTM0MDYsMzUgQEAKICAgICAgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKIAotICAgICAgICBpZiAoeCA8IDAgfHwgeCA+IDB4MTBmZmZmKSB7CisgICAgICAgIGlmICh4IDwgMCB8fCB4ID4gTUFYX1VOSUNPREUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgcmV0dXJuIChQeV9VQ1M0KSAtMTsKICAgICAgICAgfQogCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoeCA+IDB4ZmZmZikgewotICAgICAgICAgICAgeCAtPSAweDEwMDAwOwotICAgICAgICAgICAgYnVmWzBdID0gKFB5X1VOSUNPREUpKDB4RDgwMCB8ICh4ID4+IDEwKSk7Ci0gICAgICAgICAgICBidWZbMV0gPSAoUHlfVU5JQ09ERSkoMHhEQzAwIHwgKHggJiAweDNGRikpOwotICAgICAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBidWZbMF0gPSAoUHlfVU5JQ09ERSkgeDsKLSAgICAgICAgYnVmWzFdID0gJ1wwJzsKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiAoUHlfVUNTNCkgeDsKICAgICB9CiAKICAgb25FcnJvcjoKICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiJWMgcmVxdWlyZXMgaW50IG9yIGNoYXIiKTsKLSAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChQeV9VQ1M0KSAtMTsKIH0KIAotLyogZm10JSh2MSx2MiwuLi4pIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBzcHJpbnRmKGZtdCwgdjEsIHYyLCAuLi4pCi0gICBGT1JNQVRCVUZMRU4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIGluIHdoaWNoIGNoYXJzIGFyZSBmb3JtYXR0ZWQuCi0qLwotI2RlZmluZSBGT1JNQVRCVUZMRU4gKHNpemVfdCkxMAotCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zvcm1hdChQeU9iamVjdCAqZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRm9ybWF0KFB5T2JqZWN0ICpmb3JtYXQsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgKmZtdCwgKnJlczsKLSAgICBQeV9zc2l6ZV90IGZtdGNudCwgcmVzY250LCByZXNsZW4sIGFyZ2xlbiwgYXJnaWR4OworICAgIFB5X3NzaXplX3QgZm10Y250LCBmbXRwb3MsIGFyZ2xlbiwgYXJnaWR4OwogICAgIGludCBhcmdzX293bmVkID0gMDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmRpY3QgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0ZW1wID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2Vjb25kID0gTlVMTDsKICAgICBQeU9iamVjdCAqdWZvcm1hdDsKKyAgICB2b2lkICpmbXQ7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kLCBmbXRraW5kOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIFB5X3NzaXplX3Qgc3VibGVuOworICAgIFB5X1VDUzQgbWF4Y2hhcjsKIAogICAgIGlmIChmb3JtYXQgPT0gTlVMTCB8fCBhcmdzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CkBAIC05NDg3LDE0ICsxMzQ0MywxNSBAQAogICAgIHVmb3JtYXQgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChmb3JtYXQpOwogICAgIGlmICh1Zm9ybWF0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZtdCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVmb3JtYXQpOwotICAgIGZtdGNudCA9IFB5VW5pY29kZV9HRVRfU0laRSh1Zm9ybWF0KTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVmb3JtYXQpID09IC0xKQorICAgICAgICBQeV9ERUNSRUYodWZvcm1hdCk7CiAKLSAgICByZXNsZW4gPSByZXNjbnQgPSBmbXRjbnQgKyAxMDA7Ci0gICAgcmVzdWx0ID0gX1B5VW5pY29kZV9OZXcocmVzbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICByZXMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOworICAgIGZtdCA9IFB5VW5pY29kZV9EQVRBKHVmb3JtYXQpOworICAgIGZtdGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1Zm9ybWF0KTsKKyAgICBmbXRjbnQgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1Zm9ybWF0KTsKKyAgICBmbXRwb3MgPSAwOworCisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIGZtdGNudCArIDEwMCk7CiAKICAgICBpZiAoUHlUdXBsZV9DaGVjayhhcmdzKSkgewogICAgICAgICBhcmdsZW4gPSBQeVR1cGxlX1NpemUoYXJncyk7CkBAIC05NTA5LDM1ICsxMzQ2Niw0NiBAQAogICAgICAgICBkaWN0ID0gYXJnczsKIAogICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7Ci0gICAgICAgIGlmICgqZm10ICE9ICclJykgewotICAgICAgICAgICAgaWYgKC0tcmVzY250IDwgMCkgewotICAgICAgICAgICAgICAgIHJlc2NudCA9IGZtdGNudCArIDEwMDsKLSAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OwotICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIHJlcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCkgKyByZXNsZW4gLSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgLS1yZXNjbnQ7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcykgIT0gJyUnKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IG5vbmZtdHBvczsKKyAgICAgICAgICAgIG5vbmZtdHBvcyA9IGZtdHBvcysrOworICAgICAgICAgICAgd2hpbGUgKGZtdGNudCA+PSAwICYmCisgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MpICE9ICclJykgeworICAgICAgICAgICAgICAgIGZtdHBvcysrOworICAgICAgICAgICAgICAgIGZtdGNudC0tOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKnJlcysrID0gKmZtdCsrOworICAgICAgICAgICAgaWYgKGZtdGNudCA8IDApCisgICAgICAgICAgICAgICAgZm10cG9zLS07CisgICAgICAgICAgICBzdWJsZW4gPSBmbXRwb3MgLSBub25mbXRwb3M7CisgICAgICAgICAgICBtYXhjaGFyID0gX1B5VW5pY29kZV9GaW5kTWF4Q2hhcih1Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZm10cG9zLCBub25mbXRwb3MgKyBzdWJsZW4pOworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBzdWJsZW4sIG1heGNoYXIpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLmJ1ZmZlciwgd3JpdGVyLnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVmb3JtYXQsIG5vbmZtdHBvcywgc3VibGVuKTsKKyAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gc3VibGVuOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogR290IGEgZm9ybWF0IHNwZWNpZmllciAqLwogICAgICAgICAgICAgaW50IGZsYWdzID0gMDsKICAgICAgICAgICAgIFB5X3NzaXplX3Qgd2lkdGggPSAtMTsKICAgICAgICAgICAgIGludCBwcmVjID0gLTE7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGMgPSAnXDAnOwotICAgICAgICAgICAgUHlfVU5JQ09ERSBmaWxsOworICAgICAgICAgICAgUHlfVUNTNCBjID0gJ1wwJzsKKyAgICAgICAgICAgIFB5X1VDUzQgZmlsbDsKKyAgICAgICAgICAgIGludCBzaWduOworICAgICAgICAgICAgUHlfVUNTNCBzaWduY2hhcjsKICAgICAgICAgICAgIGludCBpc251bW9rOwogICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBOVUxMOwotICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBOVUxMOwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqcGJ1ZjsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgc2lnbjsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwotICAgICAgICAgICAgUHlfVU5JQ09ERSBmb3JtYXRidWZbRk9STUFUQlVGTEVOXTsgLyogRm9yIGZvcm1hdGNoYXIoKSAqLworICAgICAgICAgICAgdm9pZCAqcGJ1ZiA9IE5VTEw7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHBpbmRleCwgbGVuOworICAgICAgICAgICAgUHlfVUNTNCBidWZtYXhjaGFyOworICAgICAgICAgICAgUHlfc3NpemVfdCBidWZsZW47CiAKLSAgICAgICAgICAgIGZtdCsrOwotICAgICAgICAgICAgaWYgKCpmbXQgPT0gJygnKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqa2V5c3RhcnQ7CisgICAgICAgICAgICBmbXRwb3MrKzsKKyAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcyk7CisgICAgICAgICAgICBpZiAoYyA9PSAnKCcpIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGtleXN0YXJ0OwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qga2V5bGVuOwogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CiAgICAgICAgICAgICAgICAgaW50IHBjb3VudCA9IDE7CkBAIC05NTQ3LDM0ICsxMzUxNSwyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCByZXF1aXJlcyBhIG1hcHBpbmciKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICArK2ZtdDsKKyAgICAgICAgICAgICAgICArK2ZtdHBvczsKICAgICAgICAgICAgICAgICAtLWZtdGNudDsKLSAgICAgICAgICAgICAgICBrZXlzdGFydCA9IGZtdDsKKyAgICAgICAgICAgICAgICBrZXlzdGFydCA9IGZtdHBvczsKICAgICAgICAgICAgICAgICAvKiBTa2lwIG92ZXIgYmFsYW5jZWQgcGFyZW50aGVzZXMgKi8KICAgICAgICAgICAgICAgICB3aGlsZSAocGNvdW50ID4gMCAmJiAtLWZtdGNudCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcpJykKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyknKQogICAgICAgICAgICAgICAgICAgICAgICAgLS1wY291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpmbXQgPT0gJygnKQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09ICcoJykKICAgICAgICAgICAgICAgICAgICAgICAgICsrcGNvdW50OwotICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgZm10cG9zKys7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGtleWxlbiA9IGZtdCAtIGtleXN0YXJ0IC0gMTsKKyAgICAgICAgICAgICAgICBrZXlsZW4gPSBmbXRwb3MgLSBrZXlzdGFydCAtIDE7CiAgICAgICAgICAgICAgICAgaWYgKGZtdGNudCA8IDAgfHwgcGNvdW50ID4gMCkgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBsZXRlIGZvcm1hdCBrZXkiKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KLSNpZiAwCi0gICAgICAgICAgICAgICAgLyoga2V5cyBhcmUgY29udmVydGVkIHRvIHN0cmluZ3MgdXNpbmcgVVRGLTggYW5kCi0gICAgICAgICAgICAgICAgICAgdGhlbiBsb29rZWQgdXAgc2luY2UgUHl0aG9uIHVzZXMgc3RyaW5ncyB0byBob2xkCi0gICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIG5hbWVzIGV0Yy4gaW4gaXRzIG5hbWVzcGFjZXMgYW5kIHdlCi0gICAgICAgICAgICAgICAgICAgd291bGRuJ3Qgd2FudCB0byBicmVhayBjb21tb24gaWRpb21zLiAqLwotICAgICAgICAgICAgICAgIGtleSA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KGtleXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAga2V5ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGtleXN0YXJ0LCBrZXlsZW4pOwotI2VuZGlmCisgICAgICAgICAgICAgICAga2V5ID0gUHlVbmljb2RlX1N1YnN0cmluZyh1Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5c3RhcnQsIGtleXN0YXJ0ICsga2V5bGVuKTsKICAgICAgICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICBpZiAoYXJnc19vd25lZCkgewpAQCAtOTU5MSw3ICsxMzU1MSw4IEBACiAgICAgICAgICAgICAgICAgYXJnaWR4ID0gLTI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAoYyA9ICpmbXQrKykgeworICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgICAgICAgICBjYXNlICctJzogZmxhZ3MgfD0gRl9MSlVTVDsgY29udGludWU7CiAgICAgICAgICAgICAgICAgY2FzZSAnKyc6IGZsYWdzIHw9IEZfU0lHTjsgY29udGludWU7CiAgICAgICAgICAgICAgICAgY2FzZSAnICc6IGZsYWdzIHw9IEZfQkxBTks7IGNvbnRpbnVlOwpAQCAtOTYxNywxNSArMTM1NzgsMTggQEAKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAtd2lkdGg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQotICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgewogICAgICAgICAgICAgICAgIHdpZHRoID0gYyAtICcwJzsKICAgICAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJzAnIHx8IGMgPiAnOScpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCh3aWR0aCoxMCkgLyAxMCAhPSB3aWR0aCkgeworICAgICAgICAgICAgICAgICAgICAvKiBTaW5jZSBjIGlzIHVuc2lnbmVkLCB0aGUgUkhTIHdvdWxkIGVuZCB1cCBhcyB1bnNpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgbWl4aW5nIHNpZ25lZCBhbmQgdW5zaWduZWQgY29tcGFyaXNvbi4gU2luY2UgYyBpcyBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICcwJyBhbmQgJzknLCBjYXN0aW5nIHRvIGludCBpcyBzYWZlLiAqLworICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiAoUFlfU1NJWkVfVF9NQVggLSAoKGludCljIC0gJzAnKSkgLyAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIHRvbyBiaWciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKQEAgLTk2MzYsNyArMTM2MDAsNyBAQAogICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgcHJlYyA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCi0gICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTk2NTIsMTUgKzEzNjE2LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSAwOwogICAgICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CiAgICAgICAgICAgICAgICAgICAgIHByZWMgPSBjIC0gJzAnOwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJzAnIHx8IGMgPiAnOScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByZWMqMTApIC8gMTAgIT0gcHJlYykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWMgPiAoSU5UX01BWCAtICgoaW50KWMgLSAnMCcpKSAvIDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVjIHRvbyBiaWciKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CkBAIC05NjcyLDcgKzEzNjM2LDcgQEAKICAgICAgICAgICAgIGlmIChmbXRjbnQgPj0gMCkgewogICAgICAgICAgICAgICAgIGlmIChjID09ICdoJyB8fCBjID09ICdsJyB8fCBjID09ICdMJykgewogICAgICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGZtdGNudCA8IDApIHsKQEAgLTk2ODAsMjUgKzEzNjQ0LDM2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBsZXRlIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjICE9ICclJykgewotICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChmbXRjbnQgPT0gMCkKKyAgICAgICAgICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMDsKKworICAgICAgICAgICAgaWYgKGMgPT0gJyUnKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCAxLCAnJScpID09IC0xKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgJyUnKTsKKyAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDE7CisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CisgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKwogICAgICAgICAgICAgc2lnbiA9IDA7CisgICAgICAgICAgICBzaWduY2hhciA9ICdcMCc7CiAgICAgICAgICAgICBmaWxsID0gJyAnOwogICAgICAgICAgICAgc3dpdGNoIChjKSB7CiAKLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIHBidWYgPSBmb3JtYXRidWY7Ci0gICAgICAgICAgICAgICAgLyogcHJlc3VtZSB0aGF0IGJ1ZmZlciBsZW5ndGggaXMgYXQgbGVhc3QgMSAqLwotICAgICAgICAgICAgICAgIHBidWZbMF0gPSAnJSc7Ci0gICAgICAgICAgICAgICAgbGVuID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQogICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgIGNhc2UgJ2EnOgorICAgICAgICAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdCh2KSAmJiB3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoX1B5TG9uZ19Gb3JtYXRXcml0ZXIoJndyaXRlciwgdiwgMTAsIGZsYWdzICYgRl9BTFQpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHYpICYmIGMgPT0gJ3MnKSB7CiAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB2OwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGVtcCk7CkBAIC05NzEwLDIxICsxMzY4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gUHlPYmplY3RfUmVwcih2KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IFB5T2JqZWN0X0FTQ0lJKHYpOwotICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHRlbXApKQotICAgICAgICAgICAgICAgICAgICAgICAgLyogbm90aGluZyB0byBkbyAqLzsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBhcmd1bWVudCBoYXMgbm9uLXN0cmluZyBzdHIoKSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZW1wKTsKLSAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodGVtcCk7Ci0gICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQotICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlICdpJzoKQEAgLTk3MzMsNiArMTM2OTQsMzIgQEAKICAgICAgICAgICAgIGNhc2UgJ28nOgogICAgICAgICAgICAgY2FzZSAneCc6CiAgICAgICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodikKKyAgICAgICAgICAgICAgICAgICAgJiYgd2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMQorICAgICAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICBzd2l0Y2goYykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDEwLCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDE2LCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDgsIGZsYWdzICYgRl9BTFQpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaXNudW1vayA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKFB5TnVtYmVyX0NoZWNrKHYpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppb2JqPU5VTEw7CkBAIC05NzQ3LDEzICsxMzczNCw5IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChpb2JqIT1OVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrKGlvYmopKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNudW1vayA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGZvcm1hdGxvbmcoaW9iaiwgZmxhZ3MsIHByZWMsIChjID09ICdpJz8gJ2QnOiBjKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGlvYmopOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGVtcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW9iaik7CkBAIC05Nzc2LDIyICsxMzc1OSwzOCBAQAogICAgICAgICAgICAgY2FzZSAnRic6CiAgICAgICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgIGNhc2UgJ0cnOgotICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYyk7Ci0gICAgICAgICAgICAgICAgaWYgKCF0ZW1wKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgcGJ1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHRlbXApOwotICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh0ZW1wKTsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMQorICAgICAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMsIE5VTEwsICZ3cml0ZXIpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgc2lnbiA9IDE7CiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQogICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOworICAgICAgICAgICAgICAgIGlmIChmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYywgJnRlbXAsIE5VTEwpID09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZW1wID0gTlVMTDsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICAgICAgcGJ1ZiA9IGZvcm1hdGJ1ZjsKLSAgICAgICAgICAgICAgICBsZW4gPSBmb3JtYXRjaGFyKHBidWYsIHNpemVvZihmb3JtYXRidWYpL3NpemVvZihQeV9VTklDT0RFKSwgdik7Ci0gICAgICAgICAgICAgICAgaWYgKGxlbiA8IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCA9IGZvcm1hdGNoYXIodik7CisgICAgICAgICAgICAgICAgaWYgKGNoID09IChQeV9VQ1M0KSAtMSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIDEsIGNoKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgY2gpOworICAgICAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDE7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGVtcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC05Nzk5LDkwICsxMzc5OCwxMzkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0IGluZGV4ICV6ZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzMTw9YyAmJiBjPD0xMjYpID8gKGNoYXIpYyA6ICc/JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZm10IC0gMSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1Zm9ybWF0KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXRwb3MgLSAxKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGFzc2VydCAoUHlVbmljb2RlX0NoZWNrKHRlbXApKTsKKworICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cigmd3JpdGVyLCB0ZW1wKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh0ZW1wKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5X0NMRUFSKHRlbXApOworICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh0ZW1wKTsKKyAgICAgICAgICAgIHBidWYgPSBQeVVuaWNvZGVfREFUQSh0ZW1wKTsKKyAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRlbXApOworCisgICAgICAgICAgICBpZiAoYyA9PSAncycgfHwgYyA9PSAncicgfHwgYyA9PSAnYScpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyA+PSAwICYmIGxlbiA+IHByZWMpCisgICAgICAgICAgICAgICAgICAgIGxlbiA9IHByZWM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIHBidWYgaXMgaW5pdGlhbGl6ZWQgaGVyZS4gKi8KKyAgICAgICAgICAgIHBpbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoc2lnbikgewotICAgICAgICAgICAgICAgIGlmICgqcGJ1ZiA9PSAnLScgfHwgKnBidWYgPT0gJysnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNpZ24gPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXgpOworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnLScgfHwgY2ggPT0gJysnKSB7CisgICAgICAgICAgICAgICAgICAgIHNpZ25jaGFyID0gY2g7CiAgICAgICAgICAgICAgICAgICAgIGxlbi0tOworICAgICAgICAgICAgICAgICAgICBwaW5kZXgrKzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBGX1NJR04pCi0gICAgICAgICAgICAgICAgICAgIHNpZ24gPSAnKyc7CisgICAgICAgICAgICAgICAgICAgIHNpZ25jaGFyID0gJysnOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgRl9CTEFOSykKLSAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICcgJzsKKyAgICAgICAgICAgICAgICAgICAgc2lnbmNoYXIgPSAnICc7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBzaWduID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh3aWR0aCA8IGxlbikKICAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKLSAgICAgICAgICAgIGlmIChyZXNjbnQgLSAoc2lnbiAhPSAwKSA8IHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgcmVzbGVuIC09IHJlc2NudDsKLSAgICAgICAgICAgICAgICByZXNjbnQgPSB3aWR0aCArIGZtdGNudCArIDEwMDsKLSAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OwotICAgICAgICAgICAgICAgIGlmIChyZXNsZW4gPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgLyogQ29tcHV0ZSB0aGUgbGVuZ3RoIGFuZCBtYXhpbXVtIGNoYXJhY3RlciBvZiB0aGUKKyAgICAgICAgICAgICAgIHdyaXR0ZW4gY2hhcmFjdGVycyAqLworICAgICAgICAgICAgYnVmbWF4Y2hhciA9IDEyNzsKKyAgICAgICAgICAgIGlmICghKGZsYWdzICYgRl9MSlVTVCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoKHdpZHRoLTEpID4gbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmbWF4Y2hhciA9IE1BWF9NQVhDSEFSKGJ1Zm1heGNoYXIsIGZpbGwpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgcmVzbGVuKSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pCisgICAgICAgICAgICAgICAgICAgICAgICBidWZtYXhjaGFyID0gTUFYX01BWENIQVIoYnVmbWF4Y2hhciwgZmlsbCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgKyByZXNsZW4gLSByZXNjbnQ7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXhjaGFyID0gX1B5VW5pY29kZV9GaW5kTWF4Q2hhcih0ZW1wLCAwLCBwaW5kZXgrbGVuKTsKKyAgICAgICAgICAgIGJ1Zm1heGNoYXIgPSBNQVhfTUFYQ0hBUihidWZtYXhjaGFyLCBtYXhjaGFyKTsKKworICAgICAgICAgICAgYnVmbGVuID0gd2lkdGg7CisgICAgICAgICAgICBpZiAoc2lnbiAmJiBsZW4gPT0gd2lkdGgpCisgICAgICAgICAgICAgICAgYnVmbGVuKys7CisKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgYnVmbGVuLCBidWZtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgIC8qIFdyaXRlIGNoYXJhY3RlcnMgKi8KICAgICAgICAgICAgIGlmIChzaWduKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZpbGwgIT0gJyAnKQotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOwotICAgICAgICAgICAgICAgIHJlc2NudC0tOworICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykgeworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCBzaWduY2hhcik7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKQogICAgICAgICAgICAgICAgICAgICB3aWR0aC0tOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJiAoYyA9PSAneCcgfHwgYyA9PSAnWCcgfHwgYyA9PSAnbycpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMF0gPT0gJzAnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlsxXSA9PSBjKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KSA9PSAnMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXggKyAxKSA9PSBjKTsKICAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpIHsKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysxLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAyOworICAgICAgICAgICAgICAgICAgICBwaW5kZXggKz0gMjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzY250IC09IDI7CiAgICAgICAgICAgICAgICAgd2lkdGggLT0gMjsKICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKQogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDA7CiAgICAgICAgICAgICAgICAgbGVuIC09IDI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4gJiYgIShmbGFncyAmIEZfTEpVU1QpKSB7Ci0gICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAtLXJlc2NudDsKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gZmlsbDsKLSAgICAgICAgICAgICAgICB9IHdoaWxlICgtLXdpZHRoID4gbGVuKTsKKyAgICAgICAgICAgICAgICBzdWJsZW4gPSB3aWR0aCAtIGxlbjsKKyAgICAgICAgICAgICAgICBGSUxMKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgZmlsbCwgd3JpdGVyLnBvcywgc3VibGVuKTsKKyAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IHN1YmxlbjsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmaWxsID09ICcgJykgewotICAgICAgICAgICAgICAgIGlmIChzaWduKQotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOworICAgICAgICAgICAgICAgIGlmIChzaWduKSB7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsIHNpZ25jaGFyKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgRl9BTFQpICYmIChjID09ICd4JyB8fCBjID09ICdYJyB8fCBjID09ICdvJykpIHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMF0gPT0gJzAnKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMV0gPT0gYyk7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXgpID09ICcwJyk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXgrMSkgPT0gYyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsICcwJyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrMSwgYyk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgcGluZGV4ICs9IDI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHJlcywgcGJ1ZiwgbGVuKTsKLSAgICAgICAgICAgIHJlcyArPSBsZW47Ci0gICAgICAgICAgICByZXNjbnQgLT0gbGVuOwotICAgICAgICAgICAgd2hpbGUgKC0td2lkdGggPj0gbGVuKSB7Ci0gICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICAgICAgKnJlcysrID0gJyAnOworCisgICAgICAgICAgICBpZiAobGVuKSB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLmJ1ZmZlciwgd3JpdGVyLnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLCBwaW5kZXgsIGxlbik7CisgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSBsZW47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pIHsKKyAgICAgICAgICAgICAgICBzdWJsZW4gPSB3aWR0aCAtIGxlbjsKKyAgICAgICAgICAgICAgICBGSUxMKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgJyAnLCB3cml0ZXIucG9zLCBzdWJsZW4pOworICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gc3VibGVuOworICAgICAgICAgICAgfQorCituZXh0YXJnOgogICAgICAgICAgICAgaWYgKGRpY3QgJiYgKGFyZ2lkeCA8IGFyZ2xlbikgJiYgYyAhPSAnJScpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBzdHJpbmcgZm9ybWF0dGluZyIpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRlbXApOwogICAgICAgICB9IC8qICclJyAqLwogICAgIH0gLyogdW50aWwgZW5kICovCiAgICAgaWYgKGFyZ2lkeCA8IGFyZ2xlbiAmJiAhZGljdCkgewpAQCAtOTg5MSwxNyArMTM5MzksMTkgQEAKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4gLSByZXNjbnQpIDwgMCkKLSAgICAgICAgZ290byBvbkVycm9yOwogICAgIGlmIChhcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9CiAgICAgUHlfREVDUkVGKHVmb3JtYXQpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilyZXN1bHQ7CisgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICBQeV9YREVDUkVGKHNlY29uZCk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRihyZXN1bHQpOwogICAgIFB5X0RFQ1JFRih1Zm9ybWF0KTsKKyAgICBQeV9YREVDUkVGKHRlbXApOworICAgIFB5X1hERUNSRUYoc2Vjb25kKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIH0KQEAgLTk5MjQsOCArMTM5NzQsMTAgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9zczpzdHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJngsICZlbmNvZGluZywgJmVycm9ycykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh4ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKilfUHlVbmljb2RlX05ldygwKTsKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMICYmIGVycm9ycyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKHgpOwogICAgIGVsc2UKQEAgLTk5MzUsMzEgKzEzOTg3LDEwMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfc3VidHlwZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp0bXAsICpwbmV3OwotICAgIFB5X3NzaXplX3QgbjsKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgKnNlbGY7CisgICAgUHlfc3NpemVfdCBsZW5ndGgsIGNoYXJfc2l6ZTsKKyAgICBpbnQgc2hhcmVfd3N0ciwgc2hhcmVfdXRmODsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCiAgICAgYXNzZXJ0KFB5VHlwZV9Jc1N1YnR5cGUodHlwZSwgJlB5VW5pY29kZV9UeXBlKSk7Ci0gICAgdG1wID0gKFB5VW5pY29kZU9iamVjdCAqKXVuaWNvZGVfbmV3KCZQeVVuaWNvZGVfVHlwZSwgYXJncywga3dkcyk7Ci0gICAgaWYgKHRtcCA9PSBOVUxMKQorCisgICAgdW5pY29kZSA9IHVuaWNvZGVfbmV3KCZQeVVuaWNvZGVfVHlwZSwgYXJncywga3dkcyk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayh0bXApKTsKLSAgICBwbmV3ID0gKFB5VW5pY29kZU9iamVjdCAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCBuID0gdG1wLT5sZW5ndGgpOwotICAgIGlmIChwbmV3ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcG5ldy0+c3RyID0gKFB5X1VOSUNPREUqKSBQeU9iamVjdF9NQUxMT0Moc2l6ZW9mKFB5X1VOSUNPREUpICogKG4rMSkpOwotICAgIGlmIChwbmV3LT5zdHIgPT0gTlVMTCkgewotICAgICAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKChQeU9iamVjdCAqKXBuZXcpOwotICAgICAgICBQeU9iamVjdF9EZWwocG5ldyk7Ci0gICAgICAgIFB5X0RFQ1JFRih0bXApOwotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKworICAgIHNlbGYgPSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X1VOSUNPREVfQ09QWShwbmV3LT5zdHIsIHRtcC0+c3RyLCBuKzEpOwotICAgIHBuZXctPmxlbmd0aCA9IG47Ci0gICAgcG5ldy0+aGFzaCA9IHRtcC0+aGFzaDsKLSAgICBQeV9ERUNSRUYodG1wKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcG5ldzsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisKKyAgICBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSA9IGxlbmd0aDsKKyNpZmRlZiBQeV9ERUJVRworICAgIF9QeVVuaWNvZGVfSEFTSChzZWxmKSA9IC0xOworI2Vsc2UKKyAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSBfUHlVbmljb2RlX0hBU0godW5pY29kZSk7CisjZW5kaWYKKyAgICBfUHlVbmljb2RlX1NUQVRFKHNlbGYpLmludGVybmVkID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHNlbGYpLmtpbmQgPSBraW5kOworICAgIF9QeVVuaWNvZGVfU1RBVEUoc2VsZikuY29tcGFjdCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURShzZWxmKS5hc2NpaSA9IF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWk7CisgICAgX1B5VW5pY29kZV9TVEFURShzZWxmKS5yZWFkeSA9IDE7CisgICAgX1B5VW5pY29kZV9XU1RSKHNlbGYpID0gTlVMTDsKKyAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHNlbGYpID0gMDsKKyAgICBfUHlVbmljb2RlX1VURjgoc2VsZikgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgoc2VsZikgPSAwOworICAgIF9QeVVuaWNvZGVfREFUQV9BTlkoc2VsZikgPSBOVUxMOworCisgICAgc2hhcmVfdXRmOCA9IDA7CisgICAgc2hhcmVfd3N0ciA9IDA7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgY2hhcl9zaXplID0gMTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSA8IDEyOCkKKyAgICAgICAgICAgIHNoYXJlX3V0ZjggPSAxOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgIGNoYXJfc2l6ZSA9IDI7CisgICAgICAgIGlmIChzaXplb2Yod2NoYXJfdCkgPT0gMikKKyAgICAgICAgICAgIHNoYXJlX3dzdHIgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBjaGFyX3NpemUgPSA0OworICAgICAgICBpZiAoc2l6ZW9mKHdjaGFyX3QpID09IDQpCisgICAgICAgICAgICBzaGFyZV93c3RyID0gMTsKKyAgICB9CisKKyAgICAvKiBFbnN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlIGxlbmd0aC4gKi8KKyAgICBpZiAobGVuZ3RoID4gKFBZX1NTSVpFX1RfTUFYIC8gY2hhcl9zaXplIC0gMSkpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KKyAgICBkYXRhID0gUHlPYmplY3RfTUFMTE9DKChsZW5ndGggKyAxKSAqIGNoYXJfc2l6ZSk7CisgICAgaWYgKGRhdGEgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQorCisgICAgX1B5VW5pY29kZV9EQVRBX0FOWShzZWxmKSA9IGRhdGE7CisgICAgaWYgKHNoYXJlX3V0ZjgpIHsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSChzZWxmKSA9IGxlbmd0aDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHNlbGYpID0gZGF0YTsKKyAgICB9CisgICAgaWYgKHNoYXJlX3dzdHIpIHsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSChzZWxmKSA9IGxlbmd0aDsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHNlbGYpID0gKHdjaGFyX3QgKilkYXRhOworICAgIH0KKworICAgIFB5X01FTUNQWShkYXRhLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAga2luZCAqIChsZW5ndGggKyAxKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzZWxmLCAxKSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSBfUHlVbmljb2RlX0hBU0godW5pY29kZSk7CisjZW5kaWYKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHNlbGY7CisKK29uRXJyb3I6CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKHVuaWNvZGVfZG9jLApAQCAtMTAwMjEsMTIgKzE0MTQzLDEyIEBACiAKIC8qIEluaXRpYWxpemUgdGhlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KIAotdm9pZCBfUHlVbmljb2RlX0luaXQodm9pZCkKK2ludCBfUHlVbmljb2RlX0luaXQodm9pZCkKIHsKICAgICBpbnQgaTsKIAogICAgIC8qIFhYWCAtIG1vdmUgdGhpcyBhcnJheSB0byB1bmljb2RlY3R5cGUuYyA/ICovCi0gICAgUHlfVU5JQ09ERSBsaW5lYnJlYWtbXSA9IHsKKyAgICBQeV9VQ1MyIGxpbmVicmVha1tdID0gewogICAgICAgICAweDAwMEEsIC8qIExJTkUgRkVFRCAqLwogICAgICAgICAweDAwMEQsIC8qIENBUlJJQUdFIFJFVFVSTiAqLwogICAgICAgICAweDAwMUMsIC8qIEZJTEUgU0VQQVJBVE9SICovCkBAIC0xMDAzOCwxMSArMTQxNjAsMTAgQEAKICAgICB9OwogCiAgICAgLyogSW5pdCB0aGUgaW1wbGVtZW50YXRpb24gKi8KLSAgICBmcmVlX2xpc3QgPSBOVUxMOwotICAgIG51bWZyZWUgPSAwOwotICAgIHVuaWNvZGVfZW1wdHkgPSBfUHlVbmljb2RlX05ldygwKTsKKyAgICB1bmljb2RlX2VtcHR5ID0gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICBpZiAoIXVuaWNvZGVfZW1wdHkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgY3JlYXRlIGVtcHR5IHN0cmluZyIpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZV9lbXB0eSwgMSkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQogICAgICAgICB1bmljb2RlX2xhdGluMVtpXSA9IE5VTEw7CkBAIC0xMDA1MSwxMCArMTQxNzIsMTkgQEAKIAogICAgIC8qIGluaXRpYWxpemUgdGhlIGxpbmVicmVhayBibG9vbSBmaWx0ZXIgKi8KICAgICBibG9vbV9saW5lYnJlYWsgPSBtYWtlX2Jsb29tX21hc2soCi0gICAgICAgIGxpbmVicmVhaywgc2l6ZW9mKGxpbmVicmVhaykgLyBzaXplb2YobGluZWJyZWFrWzBdKQotICAgICAgICApOworICAgICAgICBQeVVuaWNvZGVfMkJZVEVfS0lORCwgbGluZWJyZWFrLAorICAgICAgICBQeV9BUlJBWV9MRU5HVEgobGluZWJyZWFrKSk7CiAKICAgICBQeVR5cGVfUmVhZHkoJkVuY29kaW5nTWFwVHlwZSk7CisKKyNpZmRlZiBIQVZFX01CQ1MKKyAgICB3aW52ZXIuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZih3aW52ZXIpOworICAgIGlmICghR2V0VmVyc2lvbkV4KChPU1ZFUlNJT05JTkZPKikmd2ludmVyKSkgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiAwOwogfQogCiAvKiBGaW5hbGl6ZSB0aGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiAqLwpAQCAtMTAwNjIsMjEgKzE0MTkyLDcgQEAKIGludAogUHlVbmljb2RlX0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKLSAgICBpbnQgZnJlZWxpc3Rfc2l6ZSA9IG51bWZyZWU7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1OwotCi0gICAgZm9yICh1ID0gZnJlZV9saXN0OyB1ICE9IE5VTEw7KSB7Ci0gICAgICAgIFB5VW5pY29kZU9iamVjdCAqdiA9IHU7Ci0gICAgICAgIHUgPSAqKFB5VW5pY29kZU9iamVjdCAqKil1OwotICAgICAgICBpZiAodi0+c3RyKQotICAgICAgICAgICAgUHlPYmplY3RfREVMKHYtPnN0cik7Ci0gICAgICAgIFB5X1hERUNSRUYodi0+ZGVmZW5jKTsKLSAgICAgICAgUHlPYmplY3RfRGVsKHYpOwotICAgICAgICBudW1mcmVlLS07Ci0gICAgfQotICAgIGZyZWVfbGlzdCA9IE5VTEw7Ci0gICAgYXNzZXJ0KG51bWZyZWUgPT0gMCk7Ci0gICAgcmV0dXJuIGZyZWVsaXN0X3NpemU7CisgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQKQEAgLTEwMDkzLDE3ICsxNDIwOSwyMiBAQAogICAgICAgICAgICAgdW5pY29kZV9sYXRpbjFbaV0gPSBOVUxMOwogICAgICAgICB9CiAgICAgfQorICAgIF9QeVVuaWNvZGVfQ2xlYXJTdGF0aWNTdHJpbmdzKCk7CiAgICAgKHZvaWQpUHlVbmljb2RlX0NsZWFyRnJlZUxpc3QoKTsKIH0KIAogdm9pZAogUHlVbmljb2RlX0ludGVybkluUGxhY2UoUHlPYmplY3QgKipwKQogewotICAgIHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqcyA9IChQeVVuaWNvZGVPYmplY3QgKikoKnApOworICAgIHJlZ2lzdGVyIFB5T2JqZWN0ICpzID0gKnA7CiAgICAgUHlPYmplY3QgKnQ7CisjaWZkZWYgUHlfREVCVUcKKyAgICBhc3NlcnQocyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhzKSk7CisjZWxzZQogICAgIGlmIChzID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhzKSkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigKLSAgICAgICAgICAgICJQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZTogdW5pY29kZSBzdHJpbmdzIG9ubHkgcGxlYXNlISIpOworICAgICAgICByZXR1cm47CisjZW5kaWYKICAgICAvKiBJZiBpdCdzIGEgc3ViY2xhc3MsIHdlIGRvbid0IHJlYWxseSBrbm93IHdoYXQgcHV0dGluZwogICAgICAgIGl0IGluIHRoZSBpbnRlcm5lZCBkaWN0IG1pZ2h0IGRvLiAqLwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3QocykpCkBAIC0xMDEyMSw3ICsxNDI0Miw3IEBACiAgICAgICAgdGhvdWdoIHRoZSBrZXkgaXMgcHJlc2VudCBpbiB0aGUgZGljdGlvbmFyeSwKICAgICAgICBuYW1lbHkgd2hlbiB0aGlzIGhhcHBlbnMgZHVyaW5nIGEgc3RhY2sgb3ZlcmZsb3cuICovCiAgICAgUHlfQUxMT1dfUkVDVVJTSU9OCi0gICAgICAgIHQgPSBQeURpY3RfR2V0SXRlbShpbnRlcm5lZCwgKFB5T2JqZWN0ICopcyk7CisgICAgdCA9IFB5RGljdF9HZXRJdGVtKGludGVybmVkLCBzKTsKICAgICBQeV9FTkRfQUxMT1dfUkVDVVJTSU9OCiAKICAgICAgICAgaWYgKHQpIHsKQEAgLTEwMTMyLDcgKzE0MjUzLDcgQEAKICAgICAgICAgfQogCiAgICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW0oaW50ZXJuZWQsIChQeU9iamVjdCAqKXMsIChQeU9iamVjdCAqKXMpIDwgMCkgeworICAgIGlmIChQeURpY3RfU2V0SXRlbShpbnRlcm5lZCwgcywgcykgPCAwKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDA7CiAgICAgICAgIHJldHVybjsKQEAgLTEwMTQxLDcgKzE0MjYyLDcgQEAKICAgICAvKiBUaGUgdHdvIHJlZmVyZW5jZXMgaW4gaW50ZXJuZWQgYXJlIG5vdCBjb3VudGVkIGJ5IHJlZmNudC4KICAgICAgICBUaGUgZGVhbGxvY2F0b3Igd2lsbCB0YWtlIGNhcmUgb2YgdGhpcyAqLwogICAgIFB5X1JFRkNOVChzKSAtPSAyOwotICAgIFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRChzKSA9IFNTVEFURV9JTlRFUk5FRF9NT1JUQUw7CisgICAgX1B5VW5pY29kZV9TVEFURShzKS5pbnRlcm5lZCA9IFNTVEFURV9JTlRFUk5FRF9NT1JUQUw7CiB9CiAKIHZvaWQKQEAgLTEwMTQ5LDcgKzE0MjcwLDcgQEAKIHsKICAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZShwKTsKICAgICBpZiAoUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKCpwKSAhPSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUwpIHsKLSAgICAgICAgUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKCpwKSA9IFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTDsKKyAgICAgICAgX1B5VW5pY29kZV9TVEFURSgqcCkuaW50ZXJuZWQgPSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUw7CiAgICAgICAgIFB5X0lOQ1JFRigqcCk7CiAgICAgfQogfQpAQCAtMTAxNjQsMTAgKzE0Mjg1LDExIEBACiAgICAgcmV0dXJuIHM7CiB9CiAKLXZvaWQgX1B5X1JlbGVhc2VJbnRlcm5lZFVuaWNvZGVTdHJpbmdzKHZvaWQpCit2b2lkCitfUHlfUmVsZWFzZUludGVybmVkVW5pY29kZVN0cmluZ3Modm9pZCkKIHsKICAgICBQeU9iamVjdCAqa2V5czsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnM7CisgICAgUHlPYmplY3QgKnM7CiAgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5X3NzaXplX3QgaW1tb3J0YWxfc2l6ZSA9IDAsIG1vcnRhbF9zaXplID0gMDsKIApAQCAtMTAxODgsMjMgKzE0MzEwLDI3IEBACiAgICAgZnByaW50ZihzdGRlcnIsICJyZWxlYXNpbmcgJSIgUFlfRk9STUFUX1NJWkVfVCAiZCBpbnRlcm5lZCBzdHJpbmdzXG4iLAogICAgICAgICAgICAgbik7CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICBzID0gKFB5VW5pY29kZU9iamVjdCAqKSBQeUxpc3RfR0VUX0lURU0oa2V5cywgaSk7Ci0gICAgICAgIHN3aXRjaCAocy0+c3RhdGUpIHsKKyAgICAgICAgcyA9IFB5TGlzdF9HRVRfSVRFTShrZXlzLCBpKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzKSA9PSAtMSkgeworICAgICAgICAgICAgYXNzZXJ0KDAgJiYgImNvdWxkIG5vdCByZWFkeSBzdHJpbmciKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IHJlYWR5IHN0cmluZ1xuIik7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQocykpIHsKICAgICAgICAgY2FzZSBTU1RBVEVfTk9UX0lOVEVSTkVEOgogICAgICAgICAgICAgLyogWFhYIFNob3VsZG4ndCBoYXBwZW4gKi8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTDoKICAgICAgICAgICAgIFB5X1JFRkNOVChzKSArPSAxOwotICAgICAgICAgICAgaW1tb3J0YWxfc2l6ZSArPSBzLT5sZW5ndGg7CisgICAgICAgICAgICBpbW1vcnRhbF9zaXplICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NUQVRFX0lOVEVSTkVEX01PUlRBTDoKICAgICAgICAgICAgIFB5X1JFRkNOVChzKSArPSAyOwotICAgICAgICAgICAgbW9ydGFsX3NpemUgKz0gcy0+bGVuZ3RoOworICAgICAgICAgICAgbW9ydGFsX3NpemUgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgocyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkluY29uc2lzdGVudCBpbnRlcm5lZCBzdHJpbmcgc3RhdGUuIik7CiAgICAgICAgIH0KLSAgICAgICAgcy0+c3RhdGUgPSBTU1RBVEVfTk9UX0lOVEVSTkVEOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHMpLmludGVybmVkID0gU1NUQVRFX05PVF9JTlRFUk5FRDsKICAgICB9CiAgICAgZnByaW50ZihzdGRlcnIsICJ0b3RhbCBzaXplIG9mIGFsbCBpbnRlcm5lZCBzdHJpbmdzOiAiCiAgICAgICAgICAgICAiJSIgUFlfRk9STUFUX1NJWkVfVCAiZC8lIiBQWV9GT1JNQVRfU0laRV9UICJkICIKQEAgLTEwMjIxLDcgKzE0MzQ3LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlfc3NpemVfdCBpdF9pbmRleDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKml0X3NlcTsgLyogU2V0IHRvIE5VTEwgd2hlbiBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KKyAgICBQeU9iamVjdCAqaXRfc2VxOyAgICAvKiBTZXQgdG8gTlVMTCB3aGVuIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSB1bmljb2RlaXRlcm9iamVjdDsKIAogc3RhdGljIHZvaWQKQEAgLTEwMjQyLDE4ICsxNDM2OCwxOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVpdGVyX25leHQodW5pY29kZWl0ZXJvYmplY3QgKml0KQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc2VxOwotICAgIFB5T2JqZWN0ICppdGVtOworICAgIFB5T2JqZWN0ICpzZXEsICppdGVtOwogCiAgICAgYXNzZXJ0KGl0ICE9IE5VTEwpOwogICAgIHNlcSA9IGl0LT5pdF9zZXE7CiAgICAgaWYgKHNlcSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHNlcSkpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHNlcSkpOwogCi0gICAgaWYgKGl0LT5pdF9pbmRleCA8IFB5VW5pY29kZV9HRVRfU0laRShzZXEpKSB7Ci0gICAgICAgIGl0ZW0gPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZXEpK2l0LT5pdF9pbmRleCwgMSk7CisgICAgaWYgKGl0LT5pdF9pbmRleCA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcSkpIHsKKyAgICAgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZXEpOworICAgICAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VxKTsKKyAgICAgICAgUHlfVUNTNCBjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpdC0+aXRfaW5kZXgpOworICAgICAgICBpdGVtID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNocik7CiAgICAgICAgIGlmIChpdGVtICE9IE5VTEwpCiAgICAgICAgICAgICArK2l0LT5pdF9pbmRleDsKICAgICAgICAgcmV0dXJuIGl0ZW07CkBAIC0xMDI2OSwxNSArMTQzOTYsNDkgQEAKIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9IDA7CiAgICAgaWYgKGl0LT5pdF9zZXEpCi0gICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShpdC0+aXRfc2VxKSAtIGl0LT5pdF9pbmRleDsKKyAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaXQtPml0X3NlcSkgLSBpdC0+aXRfaW5kZXg7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOwogfQogCiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLCAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlaXRlcl9yZWR1Y2UodW5pY29kZWl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHUpOworICAgIH0KK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWl0ZXJfc2V0c3RhdGUodW5pY29kZWl0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICBpbmRleCA9IDA7CisgICAgaXQtPml0X2luZGV4ID0gaW5kZXg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiB1bmljb2RlaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pdW5pY29kZWl0ZXJfbGVuLCBNRVRIX05PQVJHUywKICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil1bmljb2RlaXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbil1bmljb2RlaXRlcl9zZXRzdGF0ZSwgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgIE5VTEx9ICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xMDMyMywxNiArMTQ0ODQsMTkgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlcSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGl0ID0gUHlPYmplY3RfR0NfTmV3KHVuaWNvZGVpdGVyb2JqZWN0LCAmUHlVbmljb2RlSXRlcl9UeXBlKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaXQtPml0X2luZGV4ID0gMDsKICAgICBQeV9JTkNSRUYoc2VxKTsKLSAgICBpdC0+aXRfc2VxID0gKFB5VW5pY29kZU9iamVjdCAqKXNlcTsKKyAgICBpdC0+aXRfc2VxID0gc2VxOwogICAgIF9QeU9iamVjdF9HQ19UUkFDSyhpdCk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OwogfQogCisKIHNpemVfdAogUHlfVU5JQ09ERV9zdHJsZW4oY29uc3QgUHlfVU5JQ09ERSAqdSkKIHsKQEAgLTEwNDI0LDI1ICsxNDU4OCwzMSBAQAogfQogCiBQeV9VTklDT0RFKgotUHlVbmljb2RlX0FzVW5pY29kZUNvcHkoUHlPYmplY3QgKm9iamVjdCkKK1B5VW5pY29kZV9Bc1VuaWNvZGVDb3B5KFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZSA9IChQeVVuaWNvZGVPYmplY3QgKilvYmplY3Q7Ci0gICAgUHlfVU5JQ09ERSAqY29weTsKLSAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlfVU5JQ09ERSAqdSwgKmNvcHk7CisgICAgUHlfc3NpemVfdCBsZW4sIHNpemU7CiAKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHVuaWNvZGUsICZsZW4pOworICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIC8qIEVuc3VyZSB3ZSB3b24ndCBvdmVyZmxvdyB0aGUgc2l6ZS4gKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpID4gKChQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9VTklDT0RFKSkgLSAxKSkgeworICAgIGlmIChsZW4gPiAoKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpICsgMTsgLyogY29weSB0aGUgbnVsIGNoYXJhY3RlciAqLworICAgIHNpemUgPSBsZW4gKyAxOyAvKiBjb3B5IHRoZSBudWxsIGNoYXJhY3RlciAqLwogICAgIHNpemUgKj0gc2l6ZW9mKFB5X1VOSUNPREUpOwogICAgIGNvcHkgPSBQeU1lbV9NYWxsb2Moc2l6ZSk7CiAgICAgaWYgKGNvcHkgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbWVtY3B5KGNvcHksIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLCBzaXplKTsKKyAgICBtZW1jcHkoY29weSwgdSwgc2l6ZSk7CiAgICAgcmV0dXJuIGNvcHk7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaCBiL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAppbmRleCA4OGE3OTEyLi40NmE5MmJiIDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKKysrIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCkBAIC04LDE4NCArOCw5OTIgQEAKICAgICB7MCwgMCwgMCwgMCwgMCwgNDh9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxMDU2fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMTAyNH0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDU2Mzh9LAotICAgIHswLCAwLCAwLCAxLCAxLCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgMiwgMiwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDMsIDMsIDU2Mzh9LAotICAgIHswLCAwLCAwLCA0LCA0LCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgNSwgNSwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDYsIDYsIDU2Mzh9LAotICAgIHswLCAwLCAwLCA3LCA3LCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgOCwgOCwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDksIDksIDU2Mzh9LAotICAgIHswLCAzMiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDE1MzZ9LAotICAgIHs2NTUwNCwgMCwgNjU1MDQsIDAsIDAsIDE4MDF9LAotICAgIHswLCAwLCAwLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMCwgMCwgMCwgMiwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDMsIDUxMjR9LAotICAgIHs3NDMsIDAsIDc0MywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDAsIDAsIDAsIDEsIDUxMjR9LAogICAgIHswLCAwLCAwLCAwLCAwLCA1MTIwfSwKLSAgICB7MTIxLCAwLCAxMjEsIDAsIDAsIDE4MDF9LAotICAgIHswLCAxLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU1MzUsIDAsIDY1NTM1LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjUzMzcsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTMwNCwgMCwgNjUzMDQsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTQxNSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1MjM2LCAwLCA2NTIzNiwgMCwgMCwgMTgwMX0sCi0gICAgezE5NSwgMCwgMTk1LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMjEwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjA2LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjA1LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNzksIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDIsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDMsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDcsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs5NywgMCwgOTcsIDAsIDAsIDE4MDF9LAotICAgIHswLCAyMTEsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDksIDAsIDAsIDAsIDE5MjF9LAotICAgIHsxNjMsIDAsIDE2MywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDIxMywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezEzMCwgMCwgMTMwLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMjE0LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjE4LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjE3LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjE5LCAwLCAwLCAwLCAxOTIxfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMzU5MH0sCisgICAgezAsIDAsIDAsIDEsIDEsIDM1OTB9LAorICAgIHswLCAwLCAwLCAyLCAyLCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgMywgMywgMzU5MH0sCisgICAgezAsIDAsIDAsIDQsIDQsIDM1OTB9LAorICAgIHswLCAwLCAwLCA1LCA1LCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgNiwgNiwgMzU5MH0sCisgICAgezAsIDAsIDAsIDcsIDcsIDM1OTB9LAorICAgIHswLCAwLCAwLCA4LCA4LCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgOSwgOSwgMzU5MH0sCisgICAgezAsIDMyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDAsIDAsIDAsIDAsIDE1MzZ9LAorICAgIHstMzIsIDAsIC0zMiwgMCwgMCwgOTk5M30sCisgICAgezAsIDAsIDAsIDAsIDAsIDk5OTN9LAorICAgIHswLCAwLCAwLCAwLCAwLCA0MDk2fSwKKyAgICB7MCwgMCwgMCwgMCwgMiwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDMsIDMwNzZ9LAorICAgIHsxNjc3NzIxOCwgMTc4MjU3OTIsIDE2Nzc3MjE4LCAwLCAwLCAyNjM3N30sCisgICAgezAsIDAsIDAsIDAsIDAsIDU2MzJ9LAorICAgIHswLCAwLCAwLCAwLCAxLCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMzA3Mn0sCisgICAgezMzNTU0NDM4LCAxODg3NDM3MSwgMzM1NTQ0NDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTIxLCAwLCAxMjEsIDAsIDAsIDk5OTN9LAorICAgIHswLCAxLCAwLCAwLCAwLCAxMDExM30sCisgICAgey0xLCAwLCAtMSwgMCwgMCwgOTk5M30sCisgICAgezE2Nzc3MjI4LCAzMzU1NDQ0MiwgMTY3NzcyMjgsIDAsIDAsIDI2NDk3fSwKKyAgICB7LTIzMiwgMCwgLTIzMiwgMCwgMCwgOTk5M30sCisgICAgezMzNTU0NDQ4LCAxODg3NDM4MSwgMzM1NTQ0NDgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTEyMSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxNjc3NzIzNiwgMTc4MjU4MTAsIDE2Nzc3MjM2LCAwLCAwLCAyNjM3N30sCisgICAgezE5NSwgMCwgMTk1LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMjEwLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIwNiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMDUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgNzksIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjAyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIwMywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMDcsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7OTcsIDAsIDk3LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMjExLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIwOSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxNjMsIDAsIDE2MywgMCwgMCwgOTk5M30sCisgICAgezAsIDIxMywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxMzAsIDAsIDEzMCwgMCwgMCwgOTk5M30sCisgICAgezAsIDIxNCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMTgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjE3LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIxOSwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxNzkzfSwKLSAgICB7NTYsIDAsIDU2LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMiwgMSwgMCwgMCwgMTkyMX0sCi0gICAgezY1NTM1LCAxLCAwLCAwLCAwLCAxODU3fSwKLSAgICB7NjU1MzQsIDAsIDY1NTM1LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NTcsIDAsIDY1NDU3LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU0MzksIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTQ4MCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NDA2LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMTA3OTUsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTM3MywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDEwNzkyLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MTA4MTUsIDAsIDEwODE1LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjUzNDEsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2OSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDcxLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MTA3ODMsIDAsIDEwNzgzLCAwLCAwLCAxODAxfSwKLSAgICB7MTA3ODAsIDAsIDEwNzgwLCAwLCAwLCAxODAxfSwKLSAgICB7MTA3ODIsIDAsIDEwNzgyLCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMjYsIDAsIDY1MzI2LCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMzAsIDAsIDY1MzMwLCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMzEsIDAsIDY1MzMxLCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMzQsIDAsIDY1MzM0LCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMzMsIDAsIDY1MzMzLCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMjksIDAsIDY1MzI5LCAwLCAwLCAxODAxfSwKLSAgICB7NDI4OTMsIDYxMywgNDI4OTMsIDAsIDAsIDM4NDl9LAotICAgIHs2NTMyNywgMCwgNjUzMjcsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMyNSwgMCwgNjUzMjUsIDAsIDAsIDE4MDF9LAotICAgIHsxMDc0MywgMCwgMTA3NDMsIDAsIDAsIDE4MDF9LAotICAgIHsxMDc0OSwgMCwgMTA3NDksIDAsIDAsIDE4MDF9LAotICAgIHs2NTMyMywgMCwgNjUzMjMsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMyMiwgMCwgNjUzMjIsIDAsIDAsIDE4MDF9LAotICAgIHsxMDcyNywgMCwgMTA3MjcsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMxOCwgMCwgNjUzMTgsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ2NywgMCwgNjU0NjcsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMxOSwgMCwgNjUzMTksIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ2NSwgMCwgNjU0NjUsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMxNywgMCwgNjUzMTcsIDAsIDAsIDE4MDF9LAotICAgIHs4NCwgMCwgODQsIDAsIDAsIDE1MzZ9LAotICAgIHswLCAwLCAwLCAwLCAwLCAxMDI1fSwKLSAgICB7MCwgMzgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAzNywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY0LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjMsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTQ5OCwgMCwgNjU0OTgsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ5OSwgMCwgNjU0OTksIDAsIDAsIDE4MDF9LAotICAgIHs2NTUwNSwgMCwgNjU1MDUsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ3MiwgMCwgNjU0NzIsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ3MywgMCwgNjU0NzMsIDAsIDAsIDE4MDF9LAotICAgIHswLCA4LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU0NzQsIDAsIDY1NDc0LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NzksIDAsIDY1NDc5LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NDg5LCAwLCA2NTQ4OSwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDgyLCAwLCA2NTQ4MiwgMCwgMCwgMTgwMX0sCi0gICAgezY1NTI4LCAwLCA2NTUyOCwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDUwLCAwLCA2NTQ1MCwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDU2LCAwLCA2NTQ1NiwgMCwgMCwgMTgwMX0sCi0gICAgezcsIDAsIDcsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTQ3NiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NDQwLCAwLCA2NTQ0MCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NTI5LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgODAsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAxNSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NTIxLCAwLCA2NTUyMSwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDQ4LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU0ODgsIDAsIDY1NDg4LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgMTUzN30sCi0gICAgezAsIDcyNjQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAwLCAwLCAwLCAxLCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgMiwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDMsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCA0LCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgNSwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDYsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCA3LCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgOCwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDksIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCAwLCA1ODg4fSwKLSAgICB7NDI4NzcsIDc1NDUsIDQyODc3LCAwLCAwLCAzODQ5fSwKLSAgICB7MzgxNCwgMCwgMzgxNCwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDc3LCAwLCA2NTQ3NywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDU3OTIxLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7OCwgMCwgOCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NTI4LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NzQsIDAsIDc0LCAwLCAwLCAxODAxfSwKLSAgICB7ODYsIDAsIDg2LCAwLCAwLCAxODAxfSwKLSAgICB7MTAwLCAwLCAxMDAsIDAsIDAsIDE4MDF9LAotICAgIHsxMjgsIDAsIDEyOCwgMCwgMCwgMTgwMX0sCi0gICAgezExMiwgMCwgMTEyLCAwLCAwLCAxODAxfSwKLSAgICB7MTI2LCAwLCAxMjYsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTUyOCwgMCwgMCwgMCwgMTg1N30sCi0gICAgezksIDAsIDksIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTQ2MiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NTI3LCAwLCAwLCAwLCAxODU3fSwKLSAgICB7NTgzMzEsIDAsIDU4MzMxLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU0NTAsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTQzNiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NDI0LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjU0MDgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTQxMCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCA0LCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgNSwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDYsIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCA3LCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgOCwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDksIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCAwLCAxNzkyfSwKLSAgICB7MCwgNTgwMTksIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA1NzE1MywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU3Mjc0LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTUwOCwgMCwgNjU1MDgsIDAsIDAsIDE4MDF9LAotICAgIHswLCAxNiwgMCwgMCwgMCwgNTg4OH0sCi0gICAgezY1NTIwLCAwLCA2NTUyMCwgMCwgMCwgNTg4OH0sCi0gICAgezAsIDI2LCAwLCAwLCAwLCAxMDI0fSwKLSAgICB7NjU1MTAsIDAsIDY1NTEwLCAwLCAwLCAxMDI0fSwKLSAgICB7MCwgNTQ3OTMsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2MTcyMiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU0ODA5LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NTQ3NDEsIDAsIDU0NzQxLCAwLCAwLCAxODAxfSwKLSAgICB7NTQ3NDQsIDAsIDU0NzQ0LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNTQ3NTYsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA1NDc4NywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU0NzUzLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNTQ3NTQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA1NDcyMSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezU4MjcyLCAwLCA1ODI3MiwgMCwgMCwgMTgwMX0sCisgICAgezU2LCAwLCA1NiwgMCwgMCwgOTk5M30sCisgICAgezAsIDIsIDEsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTEsIDEsIDAsIDAsIDAsIDEwMDQ5fSwKKyAgICB7LTIsIDAsIC0xLCAwLCAwLCA5OTkzfSwKKyAgICB7LTc5LCAwLCAtNzksIDAsIDAsIDk5OTN9LAorICAgIHszMzU1NDQ1NiwgMTg4NzQzODksIDMzNTU0NDU2LCAwLCAwLCAyNjM3N30sCisgICAgezAsIC05NywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNTYsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEzMCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAxMDc5NSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTYzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDEwNzkyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezEwODE1LCAwLCAxMDgxNSwgMCwgMCwgOTk5M30sCisgICAgezAsIC0xOTUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgNjksIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgNzEsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MTA3ODMsIDAsIDEwNzgzLCAwLCAwLCA5OTkzfSwKKyAgICB7MTA3ODAsIDAsIDEwNzgwLCAwLCAwLCA5OTkzfSwKKyAgICB7MTA3ODIsIDAsIDEwNzgyLCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxMCwgMCwgLTIxMCwgMCwgMCwgOTk5M30sCisgICAgey0yMDYsIDAsIC0yMDYsIDAsIDAsIDk5OTN9LAorICAgIHstMjA1LCAwLCAtMjA1LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIwMiwgMCwgLTIwMiwgMCwgMCwgOTk5M30sCisgICAgey0yMDMsIDAsIC0yMDMsIDAsIDAsIDk5OTN9LAorICAgIHstMjA3LCAwLCAtMjA3LCAwLCAwLCA5OTkzfSwKKyAgICB7NDIyODAsIDAsIDQyMjgwLCAwLCAwLCA5OTkzfSwKKyAgICB7NDIzMDgsIDAsIDQyMzA4LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIwOSwgMCwgLTIwOSwgMCwgMCwgOTk5M30sCisgICAgey0yMTEsIDAsIC0yMTEsIDAsIDAsIDk5OTN9LAorICAgIHsxMDc0MywgMCwgMTA3NDMsIDAsIDAsIDk5OTN9LAorICAgIHsxMDc0OSwgMCwgMTA3NDksIDAsIDAsIDk5OTN9LAorICAgIHstMjEzLCAwLCAtMjEzLCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxNCwgMCwgLTIxNCwgMCwgMCwgOTk5M30sCisgICAgezEwNzI3LCAwLCAxMDcyNywgMCwgMCwgOTk5M30sCisgICAgey0yMTgsIDAsIC0yMTgsIDAsIDAsIDk5OTN9LAorICAgIHstNjksIDAsIC02OSwgMCwgMCwgOTk5M30sCisgICAgey0yMTcsIDAsIC0yMTcsIDAsIDAsIDk5OTN9LAorICAgIHstNzEsIDAsIC03MSwgMCwgMCwgOTk5M30sCisgICAgey0yMTksIDAsIC0yMTksIDAsIDAsIDk5OTN9LAorICAgIHswLCAwLCAwLCAwLCAwLCAxNDA4OX0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDU4ODl9LAotICAgIHs0Mjg3NywgNzU0NSwgNDI4NzcsIDAsIDAsIDM5Njl9LAotICAgIHs0Mjg5MywgNjEzLCA0Mjg5MywgMCwgMCwgMzk2OX0sCi0gICAgezAsIDQwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU0OTYsIDAsIDY1NDk2LCAwLCAwLCAxODAxfSwKKyAgICB7MTY3NzcyNDQsIDE3ODI1ODE4LCAxNjc3NzI0NCwgMCwgMCwgMzAyMTZ9LAorICAgIHswLCAwLCAwLCAwLCAwLCAxMzMyMX0sCisgICAgezAsIDM4LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDM3LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDY0LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDYzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezUwMzMxNjgxLCAxOTkyMjk3MywgNTAzMzE2ODEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7LTM4LCAwLCAtMzgsIDAsIDAsIDk5OTN9LAorICAgIHstMzcsIDAsIC0zNywgMCwgMCwgOTk5M30sCisgICAgezUwMzMxNjg4LCAxOTkyMjk4MCwgNTAzMzE2ODgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzcyNjEsIDE3ODI1ODM1LCAxNjc3NzI2MSwgMCwgMCwgMjYzNzd9LAorICAgIHstNjQsIDAsIC02NCwgMCwgMCwgOTk5M30sCisgICAgey02MywgMCwgLTYzLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxNjc3NzI2NCwgMTc4MjU4MzgsIDE2Nzc3MjY0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3MjY3LCAxNzgyNTg0MSwgMTY3NzcyNjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxNjc3NzI3MCwgMTc4MjU4NDQsIDE2Nzc3MjcwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3MjczLCAxNzgyNTg0NywgMTY3NzcyNzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7LTgsIDAsIC04LCAwLCAwLCA5OTkzfSwKKyAgICB7MTY3NzcyNzYsIDE3ODI1ODUwLCAxNjc3NzI3NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzI3OSwgMTc4MjU4NTMsIDE2Nzc3Mjc5LCAwLCAwLCAyNjM3N30sCisgICAgezcsIDAsIDcsIDAsIDAsIDk5OTN9LAorICAgIHswLCAtNjAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MTY3NzcyODIsIDE3ODI1ODU2LCAxNjc3NzI4MiwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtNywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCA4MCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstODAsIDAsIC04MCwgMCwgMCwgOTk5M30sCisgICAgezAsIDE1LCAwLCAwLCAwLCAxMDExM30sCisgICAgey0xNSwgMCwgLTE1LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgNDgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTQ4LCAwLCAtNDgsIDAsIDAsIDk5OTN9LAorICAgIHszMzU1NDUwMiwgMTg4NzQ0MzUsIDMzNTU0NTA0LCAwLCAwLCAyNjM3N30sCisgICAgezAsIDAsIDAsIDAsIDAsIDE1Mzd9LAorICAgIHswLCA3MjY0LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDAsIDAsIDAsIDEsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCAyLCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgMywgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDQsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCA1LCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgNiwgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDcsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCA4LCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgOSwgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDAsIDM4NDB9LAorICAgIHszNTMzMiwgMCwgMzUzMzIsIDAsIDAsIDk5OTN9LAorICAgIHszODE0LCAwLCAzODE0LCAwLCAwLCA5OTkzfSwKKyAgICB7MzM1NTQ1MDksIDE4ODc0NDQyLCAzMzU1NDUwOSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDUxNCwgMTg4NzQ0NDcsIDMzNTU0NTE0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTE5LCAxODg3NDQ1MiwgMzM1NTQ1MTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1MjQsIDE4ODc0NDU3LCAzMzU1NDUyNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDUyOSwgMTg4NzQ0NjIsIDMzNTU0NTI5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3MzE3LCAxNzgyNTg5MSwgMTY3NzczMTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzczMjEsIDE4ODc0NDcwLCAxNjc3NzMyMSwgMCwgMCwgMjY0OTd9LAorICAgIHs4LCAwLCA4LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgLTgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MzM1NTQ1NDEsIDE4ODc0NDc0LCAzMzU1NDU0MSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMTc2MywgMTk5MjMwNTUsIDUwMzMxNzYzLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMxNzcwLCAxOTkyMzA2MiwgNTAzMzE3NzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzE3NzcsIDE5OTIzMDY5LCA1MDMzMTc3NywgMCwgMCwgMjYzNzd9LAorICAgIHs3NCwgMCwgNzQsIDAsIDAsIDk5OTN9LAorICAgIHs4NiwgMCwgODYsIDAsIDAsIDk5OTN9LAorICAgIHsxMDAsIDAsIDEwMCwgMCwgMCwgOTk5M30sCisgICAgezEyOCwgMCwgMTI4LCAwLCAwLCA5OTkzfSwKKyAgICB7MTEyLCAwLCAxMTIsIDAsIDAsIDk5OTN9LAorICAgIHsxMjYsIDAsIDEyNiwgMCwgMCwgOTk5M30sCisgICAgezMzNTU0NTY3LCAxODg3NDUwMCwgMTY3NzczNTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1NzMsIDE4ODc0NTA2LCAxNjc3NzM1OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDU3OSwgMTg4NzQ1MTIsIDE2Nzc3MzY1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTg1LCAxODg3NDUxOCwgMTY3NzczNzEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1OTEsIDE4ODc0NTI0LCAxNjc3NzM3NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDU5NywgMTg4NzQ1MzAsIDE2Nzc3MzgzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NjAzLCAxODg3NDUzNiwgMTY3NzczODksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2MDksIDE4ODc0NTQyLCAxNjc3NzM5NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDYxNSwgMTg4NzQ1NDgsIDE2Nzc3NDAxLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjIxLCAxODg3NDU1NCwgMTY3Nzc0MDcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2MjcsIDE4ODc0NTYwLCAxNjc3NzQxMywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDYzMywgMTg4NzQ1NjYsIDE2Nzc3NDE5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjM5LCAxODg3NDU3MiwgMTY3Nzc0MjUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2NDUsIDE4ODc0NTc4LCAxNjc3NzQzMSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDY1MSwgMTg4NzQ1ODQsIDE2Nzc3NDM3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjU3LCAxODg3NDU5MCwgMTY3Nzc0NDMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2NjMsIDE4ODc0NTk2LCAxNjc3NzQ0OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDY2OSwgMTg4NzQ2MDIsIDE2Nzc3NDU1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0Njc1LCAxODg3NDYwOCwgMTY3Nzc0NjEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2ODEsIDE4ODc0NjE0LCAxNjc3NzQ2NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDY4NywgMTg4NzQ2MjAsIDE2Nzc3NDczLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NjkzLCAxODg3NDYyNiwgMTY3Nzc0NzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2OTksIDE4ODc0NjMyLCAxNjc3NzQ4NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDcwNSwgMTg4NzQ2MzgsIDE2Nzc3NDkxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NzExLCAxODg3NDY0NCwgMTY3Nzc0OTcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3MTcsIDE4ODc0NjUwLCAxNjc3NzUwMywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDcyMywgMTg4NzQ2NTYsIDE2Nzc3NTA5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzI5LCAxODg3NDY2MiwgMTY3Nzc1MTUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3MzUsIDE4ODc0NjY4LCAxNjc3NzUyMSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDc0MSwgMTg4NzQ2NzQsIDE2Nzc3NTI3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzQ3LCAxODg3NDY4MCwgMTY3Nzc1MzMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3NTMsIDE4ODc0Njg2LCAxNjc3NzUzOSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDc1OSwgMTg4NzQ2OTIsIDE2Nzc3NTQ1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NzY1LCAxODg3NDY5OCwgMTY3Nzc1NTEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3NzEsIDE4ODc0NzA0LCAxNjc3NzU1NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDc3NywgMTg4NzQ3MTAsIDE2Nzc3NTYzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NzgzLCAxODg3NDcxNiwgMTY3Nzc1NjksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3ODksIDE4ODc0NzIyLCAxNjc3NzU3NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDc5NSwgMTg4NzQ3MjgsIDE2Nzc3NTgxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODAxLCAxODg3NDczNCwgMTY3Nzc1ODcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MDcsIDE4ODc0NzQwLCAxNjc3NzU5MywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDgxMywgMTg4NzQ3NDYsIDE2Nzc3NTk5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODE5LCAxODg3NDc1MiwgMTY3Nzc2MDUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4MjUsIDE4ODc0NzU4LCAxNjc3NzYxMSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDgzMSwgMTg4NzQ3NjQsIDE2Nzc3NjE3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODM3LCAxODg3NDc3MCwgMTY3Nzc2MjMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4NDMsIDE4ODc0Nzc2LCAxNjc3NzYyOSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDg0OSwgMTg4NzQ3ODIsIDE2Nzc3NjM1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODU1LCAxODg3NDc4OCwgMzM1NTQ4NTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NjIsIDE4ODc0Nzk1LCAxNjc3NzY0OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg2OCwgMTg4NzQ4MDEsIDMzNTU0ODcwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODc1LCAxODg3NDgwOCwgMzM1NTQ4NzUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwOTcsIDE5OTIzMzg5LCA1MDMzMjEwMCwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtNzQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MzM1NTQ4OTAsIDE4ODc0ODIzLCAxNjc3NzY3NiwgMCwgMCwgMjY0MzN9LAorICAgIHsxNjc3NzY3OSwgMTc4MjYyNTMsIDE2Nzc3Njc5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODk5LCAxODg3NDgzMiwgMzM1NTQ5MDEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MDYsIDE4ODc0ODM5LCAxNjc3NzY5MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkxMiwgMTg4NzQ4NDUsIDMzNTU0OTE0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTE5LCAxODg3NDg1MiwgMzM1NTQ5MTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIxNDEsIDE5OTIzNDMzLCA1MDMzMjE0NCwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtODYsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MzM1NTQ5MzQsIDE4ODc0ODY3LCAxNjc3NzcyMCwgMCwgMCwgMjY0MzN9LAorICAgIHs1MDMzMjE1NywgMTk5MjM0NDksIDUwMzMyMTU3LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMTY0LCAxOTkyMzQ1NiwgNTAzMzIxNjQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NTQsIDE4ODc0ODg3LCAzMzU1NDk1NCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjE3NiwgMTk5MjM0NjgsIDUwMzMyMTc2LCAwLCAwLCAyNjM3N30sCisgICAgezAsIC0xMDAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7NTAzMzIxODMsIDE5OTIzNDc1LCA1MDMzMjE4MywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjE5MCwgMTk5MjM0ODIsIDUwMzMyMTkwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTgwLCAxODg3NDkxMywgMzM1NTQ5ODAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5ODUsIDE4ODc0OTE4LCAzMzU1NDk4NSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjIwNywgMTk5MjM0OTksIDUwMzMyMjA3LCAwLCAwLCAyNjM3N30sCisgICAgezAsIC0xMTIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MzM1NTQ5OTcsIDE4ODc0OTMwLCAzMzU1NDk5OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAwNCwgMTg4NzQ5MzcsIDE2Nzc3NzkwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDEwLCAxODg3NDk0MywgMzM1NTUwMTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMTcsIDE4ODc0OTUwLCAzMzU1NTAxNywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjIzOSwgMTk5MjM1MzEsIDUwMzMyMjQyLCAwLCAwLCAyNjM3N30sCisgICAgezAsIC0xMjgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEyNiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHszMzU1NTAzMiwgMTg4NzQ5NjUsIDE2Nzc3ODE4LCAwLCAwLCAyNjQzM30sCisgICAgezAsIDAsIDAsIDAsIDAsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCA0LCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgNSwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDYsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCA3LCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgOCwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDksIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCAwLCAxNzkyfSwKKyAgICB7MCwgLTc1MTcsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTgzODMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTgyNjIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTI4LCAwLCAtMjgsIDAsIDAsIDk5OTN9LAorICAgIHswLCAxNiwgMCwgMCwgMCwgMTIxNjB9LAorICAgIHstMTYsIDAsIC0xNiwgMCwgMCwgMTIwNDB9LAorICAgIHswLCAyNiwgMCwgMCwgMCwgOTM0NH0sCisgICAgey0yNiwgMCwgLTI2LCAwLCAwLCA5MjI0fSwKKyAgICB7MCwgLTEwNzQzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0zODE0LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xMDcyNywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstMTA3OTUsIDAsIC0xMDc5NSwgMCwgMCwgOTk5M30sCisgICAgey0xMDc5MiwgMCwgLTEwNzkyLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgLTEwNzgwLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xMDc0OSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTA3ODMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEwNzgyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xMDgxNSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstNzI2NCwgMCwgLTcyNjQsIDAsIDAsIDk5OTN9LAorICAgIHswLCAwLCAwLCAwLCAwLCA1MTIxfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMzg0MX0sCisgICAgezAsIC0zNTMzMiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIyODAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTQyMzA4LCAwLCAwLCAwLCAxMDExM30sCisgICAgezMzNTU1MDM4LCAxODg3NDk3MSwgMzM1NTUwNDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNDUsIDE4ODc0OTc4LCAzMzU1NTA0NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA1MiwgMTg4NzQ5ODUsIDMzNTU1MDU0LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMjc2LCAxOTkyMzU2OCwgNTAzMzIyNzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIyODYsIDE5OTIzNTc4LCA1MDMzMjI4OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA3OSwgMTg4NzUwMTIsIDMzNTU1MDgxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDg2LCAxODg3NTAxOSwgMzM1NTUwODgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwOTMsIDE4ODc1MDI2LCAzMzU1NTA5NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTEwMCwgMTg4NzUwMzMsIDMzNTU1MTAyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTA3LCAxODg3NTA0MCwgMzM1NTUxMDksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMTQsIDE4ODc1MDQ3LCAzMzU1NTExNiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTEyMSwgMTg4NzUwNTQsIDMzNTU1MTIzLCAwLCAwLCAyNjM3N30sCisgICAgezAsIDAsIDAsIDAsIDAsIDEwMjV9LAorICAgIHswLCAwLCAwLCAwLCAwLCA1NjMzfSwKKyAgICB7MCwgNDAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTQwLCAwLCAtNDAsIDAsIDAsIDk5OTN9LAorfTsKKworLyogZXh0ZW5kZWQgY2FzZSBtYXBwaW5ncyAqLworCitjb25zdCBQeV9VQ1M0IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW10gPSB7CisgICAgMTgxLAorICAgIDk1NiwKKyAgICA5MjQsCisgICAgMjIzLAorICAgIDExNSwKKyAgICAxMTUsCisgICAgODMsCisgICAgODMsCisgICAgODMsCisgICAgMTE1LAorICAgIDEwNSwKKyAgICA3NzUsCisgICAgMzA0LAorICAgIDMyOSwKKyAgICA3MDAsCisgICAgMTEwLAorICAgIDcwMCwKKyAgICA3OCwKKyAgICAzODMsCisgICAgMTE1LAorICAgIDgzLAorICAgIDQ5NiwKKyAgICAxMDYsCisgICAgNzgwLAorICAgIDc0LAorICAgIDc4MCwKKyAgICA4MzcsCisgICAgOTUzLAorICAgIDkyMSwKKyAgICA5MTIsCisgICAgOTUzLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTIxLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTQ0LAorICAgIDk2NSwKKyAgICA3NzYsCisgICAgNzY5LAorICAgIDkzMywKKyAgICA3NzYsCisgICAgNzY5LAorICAgIDk2MiwKKyAgICA5NjMsCisgICAgOTMxLAorICAgIDk3NiwKKyAgICA5NDYsCisgICAgOTE0LAorICAgIDk3NywKKyAgICA5NTIsCisgICAgOTIwLAorICAgIDk4MSwKKyAgICA5NjYsCisgICAgOTM0LAorICAgIDk4MiwKKyAgICA5NjAsCisgICAgOTI4LAorICAgIDEwMDgsCisgICAgOTU0LAorICAgIDkyMiwKKyAgICAxMDA5LAorICAgIDk2MSwKKyAgICA5MjksCisgICAgMTAxMywKKyAgICA5NDksCisgICAgOTE3LAorICAgIDE0MTUsCisgICAgMTM4MSwKKyAgICAxNDEwLAorICAgIDEzMzMsCisgICAgMTM2MiwKKyAgICAxMzMzLAorICAgIDE0MTAsCisgICAgNzgzMCwKKyAgICAxMDQsCisgICAgODE3LAorICAgIDcyLAorICAgIDgxNywKKyAgICA3ODMxLAorICAgIDExNiwKKyAgICA3NzYsCisgICAgODQsCisgICAgNzc2LAorICAgIDc4MzIsCisgICAgMTE5LAorICAgIDc3OCwKKyAgICA4NywKKyAgICA3NzgsCisgICAgNzgzMywKKyAgICAxMjEsCisgICAgNzc4LAorICAgIDg5LAorICAgIDc3OCwKKyAgICA3ODM0LAorICAgIDk3LAorICAgIDcwMiwKKyAgICA2NSwKKyAgICA3MDIsCisgICAgNzgzNSwKKyAgICA3Nzc3LAorICAgIDc3NzYsCisgICAgMjIzLAorICAgIDExNSwKKyAgICAxMTUsCisgICAgNzgzOCwKKyAgICA4MDE2LAorICAgIDk2NSwKKyAgICA3ODcsCisgICAgOTMzLAorICAgIDc4NywKKyAgICA4MDE4LAorICAgIDk2NSwKKyAgICA3ODcsCisgICAgNzY4LAorICAgIDkzMywKKyAgICA3ODcsCisgICAgNzY4LAorICAgIDgwMjAsCisgICAgOTY1LAorICAgIDc4NywKKyAgICA3NjksCisgICAgOTMzLAorICAgIDc4NywKKyAgICA3NjksCisgICAgODAyMiwKKyAgICA5NjUsCisgICAgNzg3LAorICAgIDgzNCwKKyAgICA5MzMsCisgICAgNzg3LAorICAgIDgzNCwKKyAgICA4MDY0LAorICAgIDc5MzYsCisgICAgOTUzLAorICAgIDc5NDQsCisgICAgOTIxLAorICAgIDgwNzIsCisgICAgODA2NSwKKyAgICA3OTM3LAorICAgIDk1MywKKyAgICA3OTQ1LAorICAgIDkyMSwKKyAgICA4MDczLAorICAgIDgwNjYsCisgICAgNzkzOCwKKyAgICA5NTMsCisgICAgNzk0NiwKKyAgICA5MjEsCisgICAgODA3NCwKKyAgICA4MDY3LAorICAgIDc5MzksCisgICAgOTUzLAorICAgIDc5NDcsCisgICAgOTIxLAorICAgIDgwNzUsCisgICAgODA2OCwKKyAgICA3OTQwLAorICAgIDk1MywKKyAgICA3OTQ4LAorICAgIDkyMSwKKyAgICA4MDc2LAorICAgIDgwNjksCisgICAgNzk0MSwKKyAgICA5NTMsCisgICAgNzk0OSwKKyAgICA5MjEsCisgICAgODA3NywKKyAgICA4MDcwLAorICAgIDc5NDIsCisgICAgOTUzLAorICAgIDc5NTAsCisgICAgOTIxLAorICAgIDgwNzgsCisgICAgODA3MSwKKyAgICA3OTQzLAorICAgIDk1MywKKyAgICA3OTUxLAorICAgIDkyMSwKKyAgICA4MDc5LAorICAgIDgwNjQsCisgICAgNzkzNiwKKyAgICA5NTMsCisgICAgNzk0NCwKKyAgICA5MjEsCisgICAgODA3MiwKKyAgICA4MDY1LAorICAgIDc5MzcsCisgICAgOTUzLAorICAgIDc5NDUsCisgICAgOTIxLAorICAgIDgwNzMsCisgICAgODA2NiwKKyAgICA3OTM4LAorICAgIDk1MywKKyAgICA3OTQ2LAorICAgIDkyMSwKKyAgICA4MDc0LAorICAgIDgwNjcsCisgICAgNzkzOSwKKyAgICA5NTMsCisgICAgNzk0NywKKyAgICA5MjEsCisgICAgODA3NSwKKyAgICA4MDY4LAorICAgIDc5NDAsCisgICAgOTUzLAorICAgIDc5NDgsCisgICAgOTIxLAorICAgIDgwNzYsCisgICAgODA2OSwKKyAgICA3OTQxLAorICAgIDk1MywKKyAgICA3OTQ5LAorICAgIDkyMSwKKyAgICA4MDc3LAorICAgIDgwNzAsCisgICAgNzk0MiwKKyAgICA5NTMsCisgICAgNzk1MCwKKyAgICA5MjEsCisgICAgODA3OCwKKyAgICA4MDcxLAorICAgIDc5NDMsCisgICAgOTUzLAorICAgIDc5NTEsCisgICAgOTIxLAorICAgIDgwNzksCisgICAgODA4MCwKKyAgICA3OTY4LAorICAgIDk1MywKKyAgICA3OTc2LAorICAgIDkyMSwKKyAgICA4MDg4LAorICAgIDgwODEsCisgICAgNzk2OSwKKyAgICA5NTMsCisgICAgNzk3NywKKyAgICA5MjEsCisgICAgODA4OSwKKyAgICA4MDgyLAorICAgIDc5NzAsCisgICAgOTUzLAorICAgIDc5NzgsCisgICAgOTIxLAorICAgIDgwOTAsCisgICAgODA4MywKKyAgICA3OTcxLAorICAgIDk1MywKKyAgICA3OTc5LAorICAgIDkyMSwKKyAgICA4MDkxLAorICAgIDgwODQsCisgICAgNzk3MiwKKyAgICA5NTMsCisgICAgNzk4MCwKKyAgICA5MjEsCisgICAgODA5MiwKKyAgICA4MDg1LAorICAgIDc5NzMsCisgICAgOTUzLAorICAgIDc5ODEsCisgICAgOTIxLAorICAgIDgwOTMsCisgICAgODA4NiwKKyAgICA3OTc0LAorICAgIDk1MywKKyAgICA3OTgyLAorICAgIDkyMSwKKyAgICA4MDk0LAorICAgIDgwODcsCisgICAgNzk3NSwKKyAgICA5NTMsCisgICAgNzk4MywKKyAgICA5MjEsCisgICAgODA5NSwKKyAgICA4MDgwLAorICAgIDc5NjgsCisgICAgOTUzLAorICAgIDc5NzYsCisgICAgOTIxLAorICAgIDgwODgsCisgICAgODA4MSwKKyAgICA3OTY5LAorICAgIDk1MywKKyAgICA3OTc3LAorICAgIDkyMSwKKyAgICA4MDg5LAorICAgIDgwODIsCisgICAgNzk3MCwKKyAgICA5NTMsCisgICAgNzk3OCwKKyAgICA5MjEsCisgICAgODA5MCwKKyAgICA4MDgzLAorICAgIDc5NzEsCisgICAgOTUzLAorICAgIDc5NzksCisgICAgOTIxLAorICAgIDgwOTEsCisgICAgODA4NCwKKyAgICA3OTcyLAorICAgIDk1MywKKyAgICA3OTgwLAorICAgIDkyMSwKKyAgICA4MDkyLAorICAgIDgwODUsCisgICAgNzk3MywKKyAgICA5NTMsCisgICAgNzk4MSwKKyAgICA5MjEsCisgICAgODA5MywKKyAgICA4MDg2LAorICAgIDc5NzQsCisgICAgOTUzLAorICAgIDc5ODIsCisgICAgOTIxLAorICAgIDgwOTQsCisgICAgODA4NywKKyAgICA3OTc1LAorICAgIDk1MywKKyAgICA3OTgzLAorICAgIDkyMSwKKyAgICA4MDk1LAorICAgIDgwOTYsCisgICAgODAzMiwKKyAgICA5NTMsCisgICAgODA0MCwKKyAgICA5MjEsCisgICAgODEwNCwKKyAgICA4MDk3LAorICAgIDgwMzMsCisgICAgOTUzLAorICAgIDgwNDEsCisgICAgOTIxLAorICAgIDgxMDUsCisgICAgODA5OCwKKyAgICA4MDM0LAorICAgIDk1MywKKyAgICA4MDQyLAorICAgIDkyMSwKKyAgICA4MTA2LAorICAgIDgwOTksCisgICAgODAzNSwKKyAgICA5NTMsCisgICAgODA0MywKKyAgICA5MjEsCisgICAgODEwNywKKyAgICA4MTAwLAorICAgIDgwMzYsCisgICAgOTUzLAorICAgIDgwNDQsCisgICAgOTIxLAorICAgIDgxMDgsCisgICAgODEwMSwKKyAgICA4MDM3LAorICAgIDk1MywKKyAgICA4MDQ1LAorICAgIDkyMSwKKyAgICA4MTA5LAorICAgIDgxMDIsCisgICAgODAzOCwKKyAgICA5NTMsCisgICAgODA0NiwKKyAgICA5MjEsCisgICAgODExMCwKKyAgICA4MTAzLAorICAgIDgwMzksCisgICAgOTUzLAorICAgIDgwNDcsCisgICAgOTIxLAorICAgIDgxMTEsCisgICAgODA5NiwKKyAgICA4MDMyLAorICAgIDk1MywKKyAgICA4MDQwLAorICAgIDkyMSwKKyAgICA4MTA0LAorICAgIDgwOTcsCisgICAgODAzMywKKyAgICA5NTMsCisgICAgODA0MSwKKyAgICA5MjEsCisgICAgODEwNSwKKyAgICA4MDk4LAorICAgIDgwMzQsCisgICAgOTUzLAorICAgIDgwNDIsCisgICAgOTIxLAorICAgIDgxMDYsCisgICAgODA5OSwKKyAgICA4MDM1LAorICAgIDk1MywKKyAgICA4MDQzLAorICAgIDkyMSwKKyAgICA4MTA3LAorICAgIDgxMDAsCisgICAgODAzNiwKKyAgICA5NTMsCisgICAgODA0NCwKKyAgICA5MjEsCisgICAgODEwOCwKKyAgICA4MTAxLAorICAgIDgwMzcsCisgICAgOTUzLAorICAgIDgwNDUsCisgICAgOTIxLAorICAgIDgxMDksCisgICAgODEwMiwKKyAgICA4MDM4LAorICAgIDk1MywKKyAgICA4MDQ2LAorICAgIDkyMSwKKyAgICA4MTEwLAorICAgIDgxMDMsCisgICAgODAzOSwKKyAgICA5NTMsCisgICAgODA0NywKKyAgICA5MjEsCisgICAgODExMSwKKyAgICA4MTE0LAorICAgIDgwNDgsCisgICAgOTUzLAorICAgIDgxMjIsCisgICAgOTIxLAorICAgIDgxMjIsCisgICAgODM3LAorICAgIDgxMTUsCisgICAgOTQ1LAorICAgIDk1MywKKyAgICA5MTMsCisgICAgOTIxLAorICAgIDgxMjQsCisgICAgODExNiwKKyAgICA5NDAsCisgICAgOTUzLAorICAgIDkwMiwKKyAgICA5MjEsCisgICAgOTAyLAorICAgIDgzNywKKyAgICA4MTE4LAorICAgIDk0NSwKKyAgICA4MzQsCisgICAgOTEzLAorICAgIDgzNCwKKyAgICA4MTE5LAorICAgIDk0NSwKKyAgICA4MzQsCisgICAgOTUzLAorICAgIDkxMywKKyAgICA4MzQsCisgICAgOTIxLAorICAgIDkxMywKKyAgICA4MzQsCisgICAgODM3LAorICAgIDgxMTUsCisgICAgOTQ1LAorICAgIDk1MywKKyAgICA5MTMsCisgICAgOTIxLAorICAgIDgxMjQsCisgICAgODEyNiwKKyAgICA5NTMsCisgICAgOTIxLAorICAgIDgxMzAsCisgICAgODA1MiwKKyAgICA5NTMsCisgICAgODEzOCwKKyAgICA5MjEsCisgICAgODEzOCwKKyAgICA4MzcsCisgICAgODEzMSwKKyAgICA5NTEsCisgICAgOTUzLAorICAgIDkxOSwKKyAgICA5MjEsCisgICAgODE0MCwKKyAgICA4MTMyLAorICAgIDk0MiwKKyAgICA5NTMsCisgICAgOTA1LAorICAgIDkyMSwKKyAgICA5MDUsCisgICAgODM3LAorICAgIDgxMzQsCisgICAgOTUxLAorICAgIDgzNCwKKyAgICA5MTksCisgICAgODM0LAorICAgIDgxMzUsCisgICAgOTUxLAorICAgIDgzNCwKKyAgICA5NTMsCisgICAgOTE5LAorICAgIDgzNCwKKyAgICA5MjEsCisgICAgOTE5LAorICAgIDgzNCwKKyAgICA4MzcsCisgICAgODEzMSwKKyAgICA5NTEsCisgICAgOTUzLAorICAgIDkxOSwKKyAgICA5MjEsCisgICAgODE0MCwKKyAgICA4MTQ2LAorICAgIDk1MywKKyAgICA3NzYsCisgICAgNzY4LAorICAgIDkyMSwKKyAgICA3NzYsCisgICAgNzY4LAorICAgIDgxNDcsCisgICAgOTUzLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTIxLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgODE1MCwKKyAgICA5NTMsCisgICAgODM0LAorICAgIDkyMSwKKyAgICA4MzQsCisgICAgODE1MSwKKyAgICA5NTMsCisgICAgNzc2LAorICAgIDgzNCwKKyAgICA5MjEsCisgICAgNzc2LAorICAgIDgzNCwKKyAgICA4MTYyLAorICAgIDk2NSwKKyAgICA3NzYsCisgICAgNzY4LAorICAgIDkzMywKKyAgICA3NzYsCisgICAgNzY4LAorICAgIDgxNjMsCisgICAgOTY1LAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTMzLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgODE2NCwKKyAgICA5NjEsCisgICAgNzg3LAorICAgIDkyOSwKKyAgICA3ODcsCisgICAgODE2NiwKKyAgICA5NjUsCisgICAgODM0LAorICAgIDkzMywKKyAgICA4MzQsCisgICAgODE2NywKKyAgICA5NjUsCisgICAgNzc2LAorICAgIDgzNCwKKyAgICA5MzMsCisgICAgNzc2LAorICAgIDgzNCwKKyAgICA4MTc4LAorICAgIDgwNjAsCisgICAgOTUzLAorICAgIDgxODYsCisgICAgOTIxLAorICAgIDgxODYsCisgICAgODM3LAorICAgIDgxNzksCisgICAgOTY5LAorICAgIDk1MywKKyAgICA5MzcsCisgICAgOTIxLAorICAgIDgxODgsCisgICAgODE4MCwKKyAgICA5NzQsCisgICAgOTUzLAorICAgIDkxMSwKKyAgICA5MjEsCisgICAgOTExLAorICAgIDgzNywKKyAgICA4MTgyLAorICAgIDk2OSwKKyAgICA4MzQsCisgICAgOTM3LAorICAgIDgzNCwKKyAgICA4MTgzLAorICAgIDk2OSwKKyAgICA4MzQsCisgICAgOTUzLAorICAgIDkzNywKKyAgICA4MzQsCisgICAgOTIxLAorICAgIDkzNywKKyAgICA4MzQsCisgICAgODM3LAorICAgIDgxNzksCisgICAgOTY5LAorICAgIDk1MywKKyAgICA5MzcsCisgICAgOTIxLAorICAgIDgxODgsCisgICAgNjQyNTYsCisgICAgMTAyLAorICAgIDEwMiwKKyAgICA3MCwKKyAgICA3MCwKKyAgICA3MCwKKyAgICAxMDIsCisgICAgNjQyNTcsCisgICAgMTAyLAorICAgIDEwNSwKKyAgICA3MCwKKyAgICA3MywKKyAgICA3MCwKKyAgICAxMDUsCisgICAgNjQyNTgsCisgICAgMTAyLAorICAgIDEwOCwKKyAgICA3MCwKKyAgICA3NiwKKyAgICA3MCwKKyAgICAxMDgsCisgICAgNjQyNTksCisgICAgMTAyLAorICAgIDEwMiwKKyAgICAxMDUsCisgICAgNzAsCisgICAgNzAsCisgICAgNzMsCisgICAgNzAsCisgICAgMTAyLAorICAgIDEwNSwKKyAgICA2NDI2MCwKKyAgICAxMDIsCisgICAgMTAyLAorICAgIDEwOCwKKyAgICA3MCwKKyAgICA3MCwKKyAgICA3NiwKKyAgICA3MCwKKyAgICAxMDIsCisgICAgMTA4LAorICAgIDY0MjYxLAorICAgIDExNSwKKyAgICAxMTYsCisgICAgODMsCisgICAgODQsCisgICAgODMsCisgICAgMTE2LAorICAgIDY0MjYyLAorICAgIDExNSwKKyAgICAxMTYsCisgICAgODMsCisgICAgODQsCisgICAgODMsCisgICAgMTE2LAorICAgIDY0Mjc1LAorICAgIDEzOTYsCisgICAgMTM5OCwKKyAgICAxMzQ4LAorICAgIDEzNTAsCisgICAgMTM0OCwKKyAgICAxMzk4LAorICAgIDY0Mjc2LAorICAgIDEzOTYsCisgICAgMTM4MSwKKyAgICAxMzQ4LAorICAgIDEzMzMsCisgICAgMTM0OCwKKyAgICAxMzgxLAorICAgIDY0Mjc3LAorICAgIDEzOTYsCisgICAgMTM4NywKKyAgICAxMzQ4LAorICAgIDEzMzksCisgICAgMTM0OCwKKyAgICAxMzg3LAorICAgIDY0Mjc4LAorICAgIDE0MDYsCisgICAgMTM5OCwKKyAgICAxMzU4LAorICAgIDEzNTAsCisgICAgMTM1OCwKKyAgICAxMzk4LAorICAgIDY0Mjc5LAorICAgIDEzOTYsCisgICAgMTM4OSwKKyAgICAxMzQ4LAorICAgIDEzNDEsCisgICAgMTM0OCwKKyAgICAxMzg5LAogfTsKIAogLyogdHlwZSBpbmRleGVzICovCkBAIC0xOTUsNzIgKzEwMDMsNzIgQEAKICAgICAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM0LCAzNSwgMzYsIDM3LCAKICAgICAzOCwgMzksIDM0LCAzNCwgMzQsIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCAKICAgICA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NCwgNjQsIDY1LCA2NiwgNjcsIDY0LCAKLSAgICA2NCwgNjQsIDY0LCA2OCwgNjksIDY0LCA2NCwgNjQsIDY0LCA2NCwgNjQsIDcwLCAxNywgNzEsIDcyLCA3MywgNzQsIDc1LCAKLSAgICA3NiwgNjQsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA2NCwgNjQsIDg0LCA4NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgODYsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICA2NCwgNjQsIDY0LCA2OCwgNjksIDY0LCA2NCwgNjQsIDY0LCA2NCwgNjQsIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCAKKyAgICA3NywgNjQsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA2NCwgNjQsIDg1LCA4NiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgODcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODgsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg4LCA4OSwgOTAsIDkxLCAzNCwgMzQsIDM0LCA5MiwgMzQsIDM0LCAKLSAgICAzNCwgOTMsIDk0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDk1LCAzNCwgMzQsIDM0LCA5NiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDk3LCA5OCwgOTksIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwMCwgMTAxLCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwMiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAxMDMsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMTAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDEwMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA2LCAxMDcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA4LCAxMDksIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTEwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAxMTEsIDM0LCAzNCwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgCi0gICAgMTIxLCAxMjIsIDEyMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg5LCA5MCwgOTEsIDkyLCAzNCwgMzQsIDM0LCA5MywgMzQsIDM0LCAKKyAgICAzNCwgOTQsIDk1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDk2LCAzNCwgMzQsIDM0LCA5NywgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDk4LCA5OSwgMTAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDEsIDEwMiwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDMsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMTA0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwNSwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDEwMSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAxMDQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwNiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwNywgMTA4LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwOSwgMTEwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDExMSwgMTEyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDExMywgMzQsIDM0LCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgMTIyLCAKKyAgICAxMjMsIDEyNCwgMTI1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAxMjQsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNiwgMTI3LCAxMjgsIAotICAgIDEyOSwgMTMwLCAxMzEsIDEzMiwgMzQsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgCi0gICAgMTcsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNDgsIDE3LCAxNDksIDE3LCAKLSAgICAxNTAsIDE3LCAxNTEsIDE3LCAxNTIsIDE3LCAxNywgMTcsIDE1MywgMTcsIDE3LCAxNywgMTU0LCAxNTUsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE1NiwgMTcsIDE1NywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE1OCwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDM0LCAzNCwgMzQsIDM0LCAxNTksIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNjAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDY0LCAxNjEsIDE2MiwgMTYzLCAxNjQsIDE3LCAxNjUsIDE3LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAKLSAgICAxNzIsIDE3MywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTc0LCAxNzUsIDE3NiwgCi0gICAgMTc3LCAxNzgsIDE3LCAxNzksIDE4MCwgMTgxLCAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgNjUsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTg3LCAxODgsIDE4OSwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODYsIDE5MCwgMzQsIDE5MSwgCi0gICAgMTkyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAxMjYsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyOCwgMTI5LCAxMzAsIAorICAgIDEzMSwgMTMyLCAxMzMsIDEzNCwgMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgCisgICAgNzEsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNTAsIDcxLCAxNTEsIDE1MiwgCisgICAgMTUzLCA3MSwgMTU0LCA3MSwgMTU1LCA3MSwgNzEsIDcxLCAxNTYsIDcxLCA3MSwgNzEsIDE1NywgMTU4LCAxNTksIDE2MCwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTYxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNjIsIDcxLCAKKyAgICAxNjMsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNjQsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMTY1LCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjYsIDE2NywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjgsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDY0LCAxNjksIDE3MCwgMTcxLCAxNzIsIDcxLCAxNzMsIDcxLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgCisgICAgMTc5LCAxODAsIDE4MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxODIsIDE4MywgNzEsIDcxLCAxODQsIAorICAgIDE4NSwgMTg2LCAxODcsIDE4OCwgNzEsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCA2NSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxOTcsIDE5OCwgCisgICAgMTk5LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NywgMjAwLCAKKyAgICAzNCwgMjAxLCAyMDIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTMsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTk0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjAzLCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE5NiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwNiwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCkBAIC0yNjgsODYwICsxMDc2LDg2MiBAQAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTk3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAxOTgsIDM0LCAxOTksIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAzNCwgMTkzLCAzNCwgMzQsIDE5OSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMjAwLCAxNywgMjAxLCAyMDIsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDIwMywgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAyMDMsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAyMDgsIDM0LCAyMDksIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMjAzLCAzNCwgMzQsIDIwOSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgMjEwLCA3MSwgMjExLCAyMTIsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDIxMywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAyMTMsIAogfTsKIAotc3RhdGljIHVuc2lnbmVkIGNoYXIgaW5kZXgyW10gPSB7CitzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMiwgMywgMywgMywgMywgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMywgMywgMywgMiwgNCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCA1LCA1LCA1LCA1LCAxNywgNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA1LCA1LCAKKyAgICAxLCAxLCAxLCAxLCAzLCAzLCAzLCAyLCA0LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA2LCAxOCwgNiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1LCA1LCAKICAgICA1LCA1LCAxLCAxLCAxLCAxLCAxLCAxLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOSwgNSwgNSwgCi0gICAgMSwgNSwgNSwgNSwgNSwgMjAsIDIxLCA1LCAyMiwgNSwgMTcsIDUsIDIzLCAxOSwgNSwgMjQsIDI0LCAyNCwgNSwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCA1LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTksIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgNSwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyOCwgMjksIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDE5LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAzMCwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMzEsIDMyLCAzMywgMjYsIDI3LCAyNiwgMjcsIDM0LCAyNiwgCi0gICAgMjcsIDM1LCAzNSwgMjYsIDI3LCAxOSwgMzYsIDM3LCAzOCwgMjYsIDI3LCAzNSwgMzksIDQwLCA0MSwgNDIsIDI2LCAyNywgCi0gICAgNDMsIDE5LCA0MSwgNDQsIDQ1LCA0NiwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgNDcsIDI2LCAyNywgNDcsIDE5LCAxOSwgCi0gICAgMjYsIDI3LCA0NywgMjYsIDI3LCA0OCwgNDgsIDI2LCAyNywgMjYsIDI3LCA0OSwgMjYsIDI3LCAxOSwgNTAsIDI2LCAyNywgCi0gICAgMTksIDUxLCA1MCwgNTAsIDUwLCA1MCwgNTIsIDUzLCA1NCwgNTIsIDUzLCA1NCwgNTIsIDUzLCA1NCwgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDU1LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxOSwgNTIsIDUzLCA1NCwgCi0gICAgMjYsIDI3LCA1NiwgNTcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCA1OCwgMTksIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDU5LCAyNiwgCi0gICAgMjcsIDYwLCA2MSwgNjIsIDYyLCAyNiwgMjcsIDYzLCA2NCwgNjUsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDE5LCA3MSwgNzEsIDE5LCA3MiwgMTksIDczLCAxOSwgMTksIDE5LCAxOSwgCi0gICAgNzEsIDE5LCAxOSwgNzQsIDE5LCA3NSwgMTksIDE5LCA3NiwgNzcsIDE5LCA3OCwgMTksIDE5LCAxOSwgNzcsIDE5LCA3OSwgCi0gICAgODAsIDE5LCAxOSwgODEsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA4MiwgMTksIDE5LCA4MywgMTksIDE5LCA4MywgCi0gICAgMTksIDE5LCAxOSwgMTksIDgzLCA4NCwgODUsIDg1LCA4NiwgMTksIDE5LCAxOSwgMTksIDE5LCA4NywgMTksIDUwLCAxOSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgMjAsIDUsIDUsIAorICAgIDIxLCA1LCA2LCA1LCA1LCAyMiwgMjMsIDYsIDI0LCA1LCAyNSwgNiwgMjYsIDIwLCA1LCAyNywgMjcsIDI3LCA1LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAyOCwgMTksIDE5LCAxOSwgMTksIDE5LCAKICAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAyOSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzIsIDMzLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM0LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzUsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM2LCAzNywgMzgsIDMwLCAzMSwgMzAsIDMxLCAzOSwgCisgICAgMzAsIDMxLCA0MCwgNDAsIDMwLCAzMSwgMjAsIDQxLCA0MiwgNDMsIDMwLCAzMSwgNDAsIDQ0LCA0NSwgNDYsIDQ3LCAzMCwgCisgICAgMzEsIDQ4LCAyMCwgNDYsIDQ5LCA1MCwgNTEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDUyLCAzMCwgMzEsIDUyLCAyMCwgCisgICAgMjAsIDMwLCAzMSwgNTIsIDMwLCAzMSwgNTMsIDUzLCAzMCwgMzEsIDMwLCAzMSwgNTQsIDMwLCAzMSwgMjAsIDU1LCAzMCwgCisgICAgMzEsIDIwLCA1NiwgNTUsIDU1LCA1NSwgNTUsIDU3LCA1OCwgNTksIDU3LCA1OCwgNTksIDU3LCA1OCwgNTksIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA2MCwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNjEsIDU3LCA1OCwgCisgICAgNTksIDMwLCAzMSwgNjIsIDYzLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNjQsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2NSwgCisgICAgMzAsIDMxLCA2NiwgNjcsIDY4LCA2OCwgMzAsIDMxLCA2OSwgNzAsIDcxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgNzIsIDczLCA3NCwgNzUsIDc2LCAyMCwgNzcsIDc3LCAyMCwgNzgsIDIwLCA3OSwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDc3LCAyMCwgMjAsIDgwLCAyMCwgODEsIDgyLCAyMCwgODMsIDg0LCAyMCwgODUsIDIwLCAyMCwgMjAsIDg0LCAyMCwgCisgICAgODYsIDg3LCAyMCwgMjAsIDg4LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgODksIDIwLCAyMCwgOTAsIDIwLCAyMCwgCisgICAgOTAsIDIwLCAyMCwgMjAsIDIwLCA5MCwgOTEsIDkyLCA5MiwgOTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTQsIDIwLCA1NSwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCisgICAgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk1LCA5NSwgNiwgNiwgNiwgNiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgCisgICAgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA5NiwgNiwgOTYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAorICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDk3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAzMSwgOTYsIDYsIDMwLCAzMSwgMCwgMCwgCisgICAgOTgsIDUwLCA1MCwgNTAsIDUsIDAsIDAsIDAsIDAsIDAsIDYsIDYsIDk5LCAyNSwgMTAwLCAxMDAsIDEwMCwgMCwgMTAxLCAwLCAKKyAgICAxMDIsIDEwMiwgMTAzLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEwNCwgMTA1LCAxMDUsIDEwNSwgCisgICAgMTA2LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDEwNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTA4LCAxMDksIDEwOSwgMTEwLCAxMTEsIDExMiwgCisgICAgMTEzLCAxMTMsIDExMywgMTE0LCAxMTUsIDExNiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTE3LCAxMTgsIDExOSwgMjAsIAorICAgIDEyMCwgMTIxLCA1LCAzMCwgMzEsIDEyMiwgMzAsIDMxLCAyMCwgNjQsIDY0LCA2NCwgMTIzLCAxMjMsIDEyMywgMTIzLCAKKyAgICAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxNywgMTcsIDE3LCAKICAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgODgsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDI2LCAyNywgMjYsIDI3LCA1MCwgNSwgMjYsIDI3LCAwLCAwLCA4OSwgCi0gICAgNDUsIDQ1LCA0NSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgOTAsIDE3LCA5MSwgOTEsIDkxLCAwLCA5MiwgMCwgOTMsIDkzLCAKLSAgICAxOSwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAwLCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCA5NCwgOTUsIDk1LCA5NSwgMTksIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgOTYsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDk3LCA5OCwgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDIsIDEwMiwgMTAzLCAKLSAgICAxMDQsIDEwNSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTA2LCAxMDcsIDEwOCwgMTksIDEwOSwgMTEwLCA1LCAyNiwgMjcsIAotICAgIDExMSwgMjYsIDI3LCAxOSwgNTgsIDU4LCA1OCwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgCi0gICAgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxMTMsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMTE0LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDAsIDAsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTksIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDE3LCA1LCAxNywgMTcsIDUsIDE3LCAxNywgNSwgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgMCwgMCwgNSwgNSwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDUsIDUsIDUsIDUsIDUwLCA1MCwgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUwLCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCAxNywgMTcsIDUsIAotICAgIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUwLCA1MCwgNTAsIAotICAgIDUsIDUsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAxLCA1MCwgMTcsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgNTAsIDUwLCA1LCA1LCA1LCA1LCA1MCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDE3LCAxNywgMTcsIDUwLCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgCisgICAgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCA2LCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMjUsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTI2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDAsIDAsIDk2LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCisgICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAorICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI5LCAwLCA1LCA1LCAwLCAwLCAwLCAKKyAgICAwLCA1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgNSwgMjUsIDI1LCA1LCAyNSwgMjUsIAorICAgIDUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNSwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDcsIDgsIAorICAgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDIxLCA1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA5NiwgOTYsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDUsIDUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAyMSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA5NiwgOTYsIDUsIDUsIDUsIDUsIDk2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDk2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCA5NiwgMjUsIDI1LCAyNSwgOTYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgCisgICAgMjUsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCA1NSwgMTgsIDE4LCAxOCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCA1LCA1LCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIAorICAgIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAorICAgIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDI1LCAwLCAxOCwgCisgICAgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI1LCAyNSwgNTUsIDU1LCA1NSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIAorICAgIDE4LCAwLCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgCisgICAgMTgsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKKyAgICAxMywgMTQsIDE1LCAxNiwgNSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAxOCwgMTgsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMjUsIDI1LCAwLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDAsIDAsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAxOCwgMTgsIDAsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAxOCwgMTgsIDE4LCAwLCAKKyAgICAxOCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDE4LCAxOCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMCwgMjUsIDAsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzMCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAKKyAgICAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgCisgICAgMTMwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDk2LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgNSwgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgMTgsIDE4LCAxOCwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCA1NSwgCisgICAgMTgsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxOCwgMTgsIDE4LCAyNSwgNSwgNSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMTMxLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgMjUsIDI1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDk2LCA1LCA1LCA1LCA1LCA1NSwgMjUsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMjUsIDI1LCAyNSwgMiwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxMzIsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAwLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDAsIDAsIDI1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDk2LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIAorICAgIDI1LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgCisgICAgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDUsIDUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCA1MCwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCA1LCA1LCA2LCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDE3LCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMCwgMCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAKLSAgICAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMTcsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgCi0gICAgMTcsIDE3LCAwLCAwLCAxNywgMTcsIDE3LCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDAsIDAsIDAsIDAsIDUwLCAKLSAgICA1MCwgMCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1MCwgCi0gICAgNTAsIDUsIDUsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCAwLCAwLCAxNywgMCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAxNywgMTcsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDE3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE3LCAxNywgNTAsIDUwLCA1MCwgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE3LCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDAsIDAsIDE3LCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAwLCAKLSAgICAxNywgMTcsIDE3LCAwLCAwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAxNywgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAwLCAwLCAxNywgMTcsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgCi0gICAgMCwgMCwgMCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAotICAgIDEzLCAxNCwgMTUsIDUsIDUwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNywgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDAsIDUwLCAwLCA1MCwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAxNywgMCwgMCwgNTAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2LCA3LCA4LCA5LCAKLSAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAyNCwgMjQsIDI0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNywgMTcsIDE3LCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAwLCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgMCwgMCwgMTcsIDE3LCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMTcsIDUwLCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDAsIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMCwgMTcsIAotICAgIDE3LCAxNywgMTcsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDAsIDAsIDAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAxNywgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMCwgMTcsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDExNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgMCwgNTAsIDAsIDAsIDUwLCA1MCwgMCwgNTAsIDAsIDAsIAotICAgIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDUwLCAwLCA1MCwgMCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDUwLCAxMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIAotICAgIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIAotICAgIDAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNywgOCwgCi0gICAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIDE3LCAKLSAgICA1LCAxNywgNSwgMTcsIDUsIDUsIDUsIDUsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAKLSAgICAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDUsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAxOCwgMTgsIDI1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCisgICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCisgICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCisgICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk1LCAxNDIsIDIwLCAyMCwgMjAsIDE0MywgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDE0NCwgCisgICAgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDIwLCAyMCwgMTUwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTUxLCAxNTEsIAorICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAKKyAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAwLCAwLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAwLCAwLCAKKyAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgCisgICAgMTUyLCAxNTIsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgMTUyLCAxNTIsIAorICAgIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMCwgMCwgMTUyLCAxNTIsIDE1MiwgCisgICAgMTUyLCAxNTIsIDE1MiwgMCwgMCwgMTUzLCAxNTEsIDE1NCwgMTUxLCAxNTUsIDE1MSwgMTU2LCAxNTEsIDAsIDE1MiwgMCwgCisgICAgMTUyLCAwLCAxNTIsIDAsIDE1MiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAKKyAgICAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTcsIDE1NywgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNTksIDE1OSwgCisgICAgMTYwLCAxNjAsIDE2MSwgMTYxLCAxNjIsIDE2MiwgMCwgMCwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAKKyAgICAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIDE4MywgCisgICAgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIAorICAgIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgMTUxLCAKKyAgICAxNTEsIDIxMSwgMjEyLCAyMTMsIDAsIDIxNCwgMjE1LCAxNTIsIDE1MiwgMjE2LCAyMTYsIDIxNywgNiwgMjE4LCA2LCA2LCAKKyAgICA2LCAyMTksIDIyMCwgMjIxLCAwLCAyMjIsIDIyMywgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjUsIDYsIDYsIDYsIDE1MSwgCisgICAgMTUxLCAyMjYsIDIyNywgMCwgMCwgMjI4LCAyMjksIDE1MiwgMTUyLCAyMzAsIDIzMCwgMCwgNiwgNiwgNiwgMTUxLCAxNTEsIAorICAgIDIzMSwgMjMyLCAyMzMsIDExOSwgMjM0LCAyMzUsIDE1MiwgMTUyLCAyMzYsIDIzNiwgMTIyLCA2LCA2LCA2LCAwLCAwLCAKKyAgICAyMzcsIDIzOCwgMjM5LCAwLCAyNDAsIDI0MSwgMjQyLCAyNDIsIDI0MywgMjQzLCAyNDQsIDYsIDYsIDAsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxLCAyMSwgMjEsIDIxLCAyMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNiwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNiwgMywgMywgMjEsIDIxLCAyMSwgMjEsIDIxLCAyLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI0NSwgOTUsIDAsIDAsIAorICAgIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDUsIDUsIDUsIDUsIDUsIDk1LCAyNDUsIDI2LCAyMiwgMjMsIDI0NiwgCisgICAgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDUsIDUsIDUsIDUsIDUsIDAsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAotICAgIDE0LCAxNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDE3LCA1MCwgMTcsIDE3LCAxNywgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgMTcsIDYsIDcsIDgsIAotICAgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgCi0gICAgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMTcsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMTE5LCAxMjAsIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDAsIDAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDEyOCwgMTI4LCAxMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgNSwgNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMCwgMTcsIDE3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMSwgMSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgNSwgNSwgNSwgNTAsIDUsIDUsIDUsIDUsIDUwLCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDIsIDAsIDYsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDE3LCA1MCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgMTE5LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAxNywgNiwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCi0gICAgMTQsIDE1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAxNywgMTcsIDE3LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgNTAsIDUwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA2LCA3LCA4LCA5LCAKLSAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCA1LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgMTcsIDUwLCA1MCwgNTAsIDUwLCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNTAsIDEyOSwgCi0gICAgMTksIDE5LCAxOSwgMTMwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgCi0gICAgMTcsIDE3LCAxNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDE5LCAxOSwgMTksIDE5LCAxMzEsIDE5LCAxOSwgMTMyLCAKLSAgICAxOSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzNCwgCi0gICAgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAwLCAwLCAKLSAgICAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAwLCAwLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIAotICAgIDEzMywgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAKLSAgICAxMzMsIDEzMywgMTMzLCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTMzLCAxMzMsIDEzMywgCi0gICAgMTMzLCAxMzMsIDEzMywgMCwgMCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMCwgMCwgMTksIDEzMywgMTksIAotICAgIDEzMywgMTksIDEzMywgMTksIDEzMywgMCwgMTM0LCAwLCAxMzQsIDAsIDEzNCwgMCwgMTM0LCAxMzMsIDEzMywgMTMzLCAKLSAgICAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNSwgCi0gICAgMTM1LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNywgMTM3LCAxMzgsIDEzOCwgMTM5LCAxMzksIDE0MCwgMTQwLCAwLCAwLCAKLSAgICAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxMzMsIDEzMywgMTksIDE0MiwgMTksIDAsIDE5LCAxOSwgMTM0LCAxMzQsIAotICAgIDE0MywgMTQzLCAxNDQsIDUsIDE0NSwgNSwgNSwgNSwgMTksIDE0MiwgMTksIDAsIDE5LCAxOSwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDQsIDUsIDUsIDUsIDEzMywgMTMzLCAxOSwgMTksIDAsIDAsIDE5LCAxOSwgMTM0LCAxMzQsIDE0NywgMTQ3LCAwLCAKLSAgICA1LCA1LCA1LCAxMzMsIDEzMywgMTksIDE5LCAxOSwgMTA4LCAxOSwgMTksIDEzNCwgMTM0LCAxNDgsIDE0OCwgMTExLCA1LCAKLSAgICA1LCA1LCAwLCAwLCAxOSwgMTQyLCAxOSwgMCwgMTksIDE5LCAxNDksIDE0OSwgMTUwLCAxNTAsIDE0NCwgNSwgNSwgMCwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMSwgMSwgMSwgMSwgMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMywgMywgMSwgMSwgMSwgMSwgMSwgMiwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMTUxLCA1MCwgMCwgMCwgMTUyLCAxNTMsIAotICAgIDE1NCwgMTU1LCAxNTYsIDE1NywgNSwgNSwgNSwgNSwgNSwgNTAsIDE1MSwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgCi0gICAgMTU1LCAxNTYsIDE1NywgNSwgNSwgNSwgNSwgNSwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICA1LCA1LCA1LCA1LCAxNywgNSwgNSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMTAyLCA1LCA1LCA1LCA1LCAxMDIsIAotICAgIDUsIDUsIDE5LCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDE5LCA1LCAxMDIsIDUsIDUsIDE1OCwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgNSwgMTU5LCA1LCAxMDIsIDUsIDE2MCwgCi0gICAgMTYxLCAxMDIsIDEwMiwgMTU4LCAxOSwgMTAyLCAxMDIsIDE2MiwgMTAyLCAxOSwgNTAsIDUwLCA1MCwgNTAsIDE5LCA1LCA1LCAKLSAgICAxOSwgMTksIDEwMiwgMTAyLCA1LCA1LCA1LCA1LCA1LCAxMDIsIDE5LCAxOSwgMTksIDE5LCA1LCA1LCA1LCA1LCAxNjMsIDUsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAxNjQsIDE2NCwgCi0gICAgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIAotICAgIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAKLSAgICAxNjUsIDE2NSwgMTI4LCAxMjgsIDEyOCwgMjYsIDI3LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDI0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNiwgNiwgNiwgNiwgMjUsIDYsIDYsIDYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDExMywgNSwgNSwgCisgICAgNSwgNSwgMTEzLCA1LCA1LCAyMCwgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAyMCwgNSwgMTEzLCA1LCAKKyAgICA1LCAyNTIsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCA1LCA1LCA1LCA1LCA1LCAxMTMsIDUsIDI1MywgNSwgMTEzLCAKKyAgICA1LCAyNTQsIDI1NSwgMTEzLCAxMTMsIDI1MiwgMjAsIDExMywgMTEzLCAyNTYsIDExMywgMjAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyMCwgNSwgNSwgMjAsIDIwLCAxMTMsIDExMywgNSwgNSwgNSwgNSwgNSwgMTEzLCAyMCwgMjAsIDIwLCAyMCwgNSwgNSwgNSwgCisgICAgNSwgMjU3LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIAorICAgIDI1OCwgMjU4LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKKyAgICAyNTksIDI1OSwgMjU5LCAyNTksIDE0MSwgMTQxLCAxNDEsIDMwLCAzMSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAyNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0xMTM1LDYzMiArMTk0NSw2ODQgQEAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgCi0gICAgMTU2LCAxNTcsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjMsIDIwLCAyMSwgMTUyLCAKLSAgICAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgCi0gICAgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY3LCAxNjcsIAotICAgIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAKLSAgICAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE1MSwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDI0LCAKLSAgICAxNTEsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAKKyAgICAyNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIAorICAgIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIAorICAgIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgCisgICAgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjQ1LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIAorICAgIDI0NSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjMsIAotICAgIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgCi0gICAgMTU2LCAxNTcsIDI0LCAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjYsIAorICAgIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgCisgICAgMjUwLCAyNTEsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDAsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAwLCAyNiwgMjcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE5LCAyNiwgMjcsIDE5LCAyNiwgMjcsIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDUwLCAxNzcsIDE3NywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDE5LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAyNiwgMjcsIDI2LCAyNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMjQsIAotICAgIDUsIDUsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgCi0gICAgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIAotICAgIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDg5LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAyLCA1LCA1LCA1LCA1LCA1MCwgNTAsIDEyOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCAxMjgsIDEyOCwgCi0gICAgMTI4LCA1MCwgNTAsIDUsIDUsIDUsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMCwgMCwgMTcsIDE3LCA1LCA1LCA1MCwgNTAsIDUwLCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNSwgNSwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3OSwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAxNzksIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCAxNzksIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgMTc5LCAKLSAgICAxNzksIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgMTc5LCAxNzksIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgMTc5LCAxNzksIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKKyAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCisgICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAorICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMCwgMzAsIDMxLCAyNjIsIDI2MywgCisgICAgMjY0LCAyNjUsIDI2NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjY3LCAyNjgsIDI2OSwgMjcwLCAyMCwgMzAsIDMxLCAKKyAgICAyMCwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk1LCA5NSwgMjcxLCAyNzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAyMCwgNSwgNSwgNSwgNSwgNSwgNSwgMzAsIDMxLCAzMCwgMzEsIDI1LCAyNSwgMjUsIDMwLCAzMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMjcsIDUsIDUsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCisgICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAorICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKKyAgICAyNzIsIDI3MiwgMjcyLCAwLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDI3MiwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5NiwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3MywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgNTAsIDE3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNywgMTcsIDUsIDUwLCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDE5LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDUwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDI2LCAyNywgMjYsIDI3LCAxODAsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCA1MCwgNSwgNSwgMjYsIDI3LCAxODEsIDE5LCAwLCAyNiwgMjcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgNTAsIAotICAgIDUwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAotICAgIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUwLCAwLCAwLCAwLCAKLSAgICAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTAsIAotICAgIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDUsIDUsIAotICAgIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNTAsIDE3LCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDE3LCAxNywgMTcsIDUwLCA1MCwgMTcsIDE3LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDE3LCAxNywgNTAsIDE3LCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgMTcsIDE3LCAwLCAwLCAKLSAgICA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MCwgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgMCwgNTAsIDUwLCAKLSAgICAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA4OSwgODksIDg5LCA4OSwgODksIDg5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDg5LCA4OSwgNSwgNSwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAxNywgMTcsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgCi0gICAgMTcsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDg5LCA1MCwgODksIDUwLCA4OSwgMCwgODksIDUwLCA4OSwgNTAsIDg5LCA1MCwgCi0gICAgODksIDUwLCA4OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgMSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCA1LCA1LCA1LCA1LCAxNywgNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDExNywgMTE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMSwgMSwgMSwgNSwgNSwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAyNCwgMjQsIDI0LCAyNCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjQsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDIsIDUsIDUsIDUsIDUsIDk2LCA1NSwgMTQxLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1LCA5NiwgCisgICAgOTYsIDk2LCA5NiwgOTYsIDUsIDUsIDE0MSwgMTQxLCAxNDEsIDk2LCA1NSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDYsIDYsIDk2LCA5NiwgNTUsIAorICAgIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDUsIDk2LCA5NiwgOTYsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1LCA1LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjc0LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI3NCwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAyNzQsIDI3NCwgMjc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCAyNzQsIDI3NCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDI0LCAyNCwgMjQsIDI0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDEyOCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxMjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA1NSwgMjUsIDYsIDYsIDYsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA5NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCisgICAgNiwgNiwgNiwgNiwgNiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNiwgNiwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgOTUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDI3NSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDk2LCA2LCA2LCAzMCwgMzEsIDI3NiwgMjAsIDAsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NSwgOTUsIDIwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIAorICAgIDE4LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgCisgICAgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDk2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIAotICAgIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAKLSAgICAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgCi0gICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKLSAgICAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCi0gICAgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgCi0gICAgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDAsIDAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgMCwgMCwgMCwgCi0gICAgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMCwgMCwgNSwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIAotICAgIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDE3LCAyMywgMjAsIDIxLCAxNTIsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDI0LCAyNCwgNSwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCAwLCAwLCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCAxOCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgOTYsIDUsIDUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAyNSwgMTgsIDE4LCA1LCA1LCA1NSwgOTYsIDk2LCAKKyAgICAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAKKyAgICAxOCwgMTgsIDI1LCAxOCwgMTgsIDUsIDE4LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI3NCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDE3LCAxNywgMTcsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgMCwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDEsIDUsIAotICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI3OCwgMjc5LCAyODAsIDI4MSwgMjgyLCAyODMsIDI4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI5MCwgMjkwLCAyOTAsIDI5MCwgMjkwLCAyOTAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTU4LCAxNTgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTU4LCAxNTgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyOTAsIDI5MCwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgCisgICAgMTgsIDUsIDUsIDYsIDAsIDUsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI5MCwgNTUsIDI5MCwgNTUsIDI5MCwgMCwgMjkwLCA1NSwgMjkwLCA1NSwgCisgICAgMjkwLCA1NSwgMjkwLCA1NSwgMjkwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyMSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNiwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNiwgMTgsIDYsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyOTEsIDI5MSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDUsIDUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDI3LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE0MSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAKKyAgICAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgCisgICAgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkzLCAyOTMsIAorICAgIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAKKyAgICAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgCisgICAgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAwLCAyNSwgCisgICAgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDI2LCAyMiwgMjMsIDI0NiwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjcsIDI3LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDAsIDE4LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgCisgICAgMjQ5LCAyNTAsIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI1MiwgMjUyLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDI1MiwgMjUyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE3NzUsMjcyICsyNjM3LDI4NiBAQAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgNSwgNSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgNSwgNSwgNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDAsIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMCwgMTAyLCAxMDIsIDAsIDAsIDEwMiwgMCwgMCwgMTAyLCAxMDIsIDAsIDAsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgCi0gICAgMTksIDE5LCAwLCAxOSwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMCwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMCwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMCwgMTAyLCAwLCAwLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAwLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCA1LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCA1LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxMDIsIDE5LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA2LCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA2LCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTEsIDE1MSwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIAotICAgIDE1NCwgMTU1LCAxNTYsIDE1NywgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAwLCAxMTMsIDExMywgMCwgMCwgMTEzLCAwLCAwLCAKKyAgICAxMTMsIDExMywgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMjAsIDIwLCAyMCwgMjAsIDAsIDIwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMCwgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAwLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDAsIDAsIDAsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMjAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgMCwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKKyAgICA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ1LCAyNDUsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgCisgICAgMjUwLCAyNTEsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIAorICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAogICAgIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCAwLCA1LCAwLCA1LCAwLCA1LCAwLCA1LCAKLSAgICA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCAwLCA1LCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAogfTsKIAogLyogUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBhcyBkb3VibGUgZm9yIFVuaWNvZGUgY2hhcmFjdGVycwpAQCAtMjEwMCw2ICsyOTc2LDEwIEBACiAgICAgY2FzZSAweDEwMThBOgogICAgIGNhc2UgMHgxMDRBMDoKICAgICBjYXNlIDB4MTEwNjY6CisgICAgY2FzZSAweDExMEYwOgorICAgIGNhc2UgMHgxMTEzNjoKKyAgICBjYXNlIDB4MTExRDA6CisgICAgY2FzZSAweDExNkMwOgogICAgIGNhc2UgMHgxRDdDRToKICAgICBjYXNlIDB4MUQ3RDg6CiAgICAgY2FzZSAweDFEN0UyOgpAQCAtMjE4Nyw2ICszMDY3LDEwIEBACiAgICAgY2FzZSAweDEwRTYwOgogICAgIGNhc2UgMHgxMTA1MjoKICAgICBjYXNlIDB4MTEwNjc6CisgICAgY2FzZSAweDExMEYxOgorICAgIGNhc2UgMHgxMTEzNzoKKyAgICBjYXNlIDB4MTExRDE6CisgICAgY2FzZSAweDExNkMxOgogICAgIGNhc2UgMHgxMjQxNToKICAgICBjYXNlIDB4MTI0MUU6CiAgICAgY2FzZSAweDEyNDJDOgpAQCAtMjI2Myw2ICszMTQ3LDcgQEAKICAgICBjYXNlIDB4Mjc5MzoKICAgICBjYXNlIDB4MzAzODoKICAgICBjYXNlIDB4MzIyOToKKyAgICBjYXNlIDB4MzI0ODoKICAgICBjYXNlIDB4MzI4OToKICAgICBjYXNlIDB4NEVDMDoKICAgICBjYXNlIDB4NTM0MToKQEAgLTI0ODMsNiArMzM2OCwxMCBAQAogICAgIGNhc2UgMHgxMEU2MToKICAgICBjYXNlIDB4MTEwNTM6CiAgICAgY2FzZSAweDExMDY4OgorICAgIGNhc2UgMHgxMTBGMjoKKyAgICBjYXNlIDB4MTExMzg6CisgICAgY2FzZSAweDExMUQyOgorICAgIGNhc2UgMHgxMTZDMjoKICAgICBjYXNlIDB4MTI0MDA6CiAgICAgY2FzZSAweDEyNDE2OgogICAgIGNhc2UgMHgxMjQxRjoKQEAgLTI1MTUsNiArMzQwNCw3IEBACiAgICAgY2FzZSAweDI0OUI6CiAgICAgY2FzZSAweDI0RjQ6CiAgICAgY2FzZSAweDMwMzk6CisgICAgY2FzZSAweDMyNDk6CiAgICAgY2FzZSAweDUzNDQ6CiAgICAgY2FzZSAweDVFRkY6CiAgICAgY2FzZSAweDEwMTExOgpAQCAtMjYyNiw2ICszNTE2LDEwIEBACiAgICAgY2FzZSAweDEwRTYyOgogICAgIGNhc2UgMHgxMTA1NDoKICAgICBjYXNlIDB4MTEwNjk6CisgICAgY2FzZSAweDExMEYzOgorICAgIGNhc2UgMHgxMTEzOToKKyAgICBjYXNlIDB4MTExRDM6CisgICAgY2FzZSAweDExNkMzOgogICAgIGNhc2UgMHgxMjQwMToKICAgICBjYXNlIDB4MTI0MDg6CiAgICAgY2FzZSAweDEyNDE3OgpAQCAtMjY3MSw2ICszNTY1LDcgQEAKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC84LjA7CiAgICAgY2FzZSAweDEzNzQ6CiAgICAgY2FzZSAweDMwM0E6CisgICAgY2FzZSAweDMyNEE6CiAgICAgY2FzZSAweDMyNUE6CiAgICAgY2FzZSAweDUzNDU6CiAgICAgY2FzZSAweDEwMTEyOgpAQCAtMjc3MCw2ICszNjY1LDEwIEBACiAgICAgY2FzZSAweDEwRTYzOgogICAgIGNhc2UgMHgxMTA1NToKICAgICBjYXNlIDB4MTEwNkE6CisgICAgY2FzZSAweDExMEY0OgorICAgIGNhc2UgMHgxMTEzQToKKyAgICBjYXNlIDB4MTExRDQ6CisgICAgY2FzZSAweDExNkM0OgogICAgIGNhc2UgMHgxMjQwMjoKICAgICBjYXNlIDB4MTI0MDk6CiAgICAgY2FzZSAweDEyNDBGOgpAQCAtMjc5OSw2ICszNjk4LDcgQEAKICAgICBjYXNlIDB4MjE1ODoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDQuMC81LjA7CiAgICAgY2FzZSAweDEzNzU6CisgICAgY2FzZSAweDMyNEI6CiAgICAgY2FzZSAweDMyQjU6CiAgICAgY2FzZSAweDUzNEM6CiAgICAgY2FzZSAweDEwMTEzOgpAQCAtMjkwMCw2ICszODAwLDEwIEBACiAgICAgY2FzZSAweDEwRTY0OgogICAgIGNhc2UgMHgxMTA1NjoKICAgICBjYXNlIDB4MTEwNkI6CisgICAgY2FzZSAweDExMEY1OgorICAgIGNhc2UgMHgxMTEzQjoKKyAgICBjYXNlIDB4MTExRDU6CisgICAgY2FzZSAweDExNkM1OgogICAgIGNhc2UgMHgxMjQwMzoKICAgICBjYXNlIDB4MTI0MEE6CiAgICAgY2FzZSAweDEyNDEwOgpAQCAtMjkzMSw2ICszODM1LDcgQEAKICAgICBjYXNlIDB4MjE2QzoKICAgICBjYXNlIDB4MjE3QzoKICAgICBjYXNlIDB4MjE4NjoKKyAgICBjYXNlIDB4MzI0QzoKICAgICBjYXNlIDB4MzJCRjoKICAgICBjYXNlIDB4MTAxMTQ6CiAgICAgY2FzZSAweDEwMTQ0OgpAQCAtMzAzNCw2ICszOTM5LDEwIEBACiAgICAgY2FzZSAweDEwRTY1OgogICAgIGNhc2UgMHgxMTA1NzoKICAgICBjYXNlIDB4MTEwNkM6CisgICAgY2FzZSAweDExMEY2OgorICAgIGNhc2UgMHgxMTEzQzoKKyAgICBjYXNlIDB4MTExRDY6CisgICAgY2FzZSAweDExNkM2OgogICAgIGNhc2UgMHgxMjQwNDoKICAgICBjYXNlIDB4MTI0MEI6CiAgICAgY2FzZSAweDEyNDExOgpAQCAtMzA1MSw2ICszOTYwLDcgQEAKICAgICBjYXNlIDB4MjBBRUE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2LjA7CiAgICAgY2FzZSAweDEzNzc6CisgICAgY2FzZSAweDMyNEQ6CiAgICAgY2FzZSAweDEwMTE1OgogICAgIGNhc2UgMHgxMEU2RToKICAgICBjYXNlIDB4MTEwNjA6CkBAIC0zMTI0LDYgKzQwMzQsMTAgQEAKICAgICBjYXNlIDB4MTBFNjY6CiAgICAgY2FzZSAweDExMDU4OgogICAgIGNhc2UgMHgxMTA2RDoKKyAgICBjYXNlIDB4MTEwRjc6CisgICAgY2FzZSAweDExMTNEOgorICAgIGNhc2UgMHgxMTFENzoKKyAgICBjYXNlIDB4MTE2Qzc6CiAgICAgY2FzZSAweDEyNDA1OgogICAgIGNhc2UgMHgxMjQwQzoKICAgICBjYXNlIDB4MTI0MTI6CkBAIC0zMTQ2LDYgKzQwNjAsNyBAQAogICAgIGNhc2UgMHgyMTVFOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNy4wLzguMDsKICAgICBjYXNlIDB4MTM3ODoKKyAgICBjYXNlIDB4MzI0RToKICAgICBjYXNlIDB4MTAxMTY6CiAgICAgY2FzZSAweDEwRTZGOgogICAgIGNhc2UgMHgxMTA2MToKQEAgLTMyMTcsNiArNDEzMiwxMCBAQAogICAgIGNhc2UgMHgxMEU2NzoKICAgICBjYXNlIDB4MTEwNTk6CiAgICAgY2FzZSAweDExMDZFOgorICAgIGNhc2UgMHgxMTBGODoKKyAgICBjYXNlIDB4MTExM0U6CisgICAgY2FzZSAweDExMUQ4OgorICAgIGNhc2UgMHgxMTZDODoKICAgICBjYXNlIDB4MTI0MDY6CiAgICAgY2FzZSAweDEyNDBEOgogICAgIGNhc2UgMHgxMjQxMzoKQEAgLTMyMzMsNiArNDE1Miw3IEBACiAgICAgY2FzZSAweDFGMTA5OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOC4wOwogICAgIGNhc2UgMHgxMzc5OgorICAgIGNhc2UgMHgzMjRGOgogICAgIGNhc2UgMHgxMDExNzoKICAgICBjYXNlIDB4MTBFNzA6CiAgICAgY2FzZSAweDExMDYyOgpAQCAtMzMwNSw2ICs0MjI1LDEwIEBACiAgICAgY2FzZSAweDEwRTY4OgogICAgIGNhc2UgMHgxMTA1QToKICAgICBjYXNlIDB4MTEwNkY6CisgICAgY2FzZSAweDExMEY5OgorICAgIGNhc2UgMHgxMTEzRjoKKyAgICBjYXNlIDB4MTExRDk6CisgICAgY2FzZSAweDExNkM5OgogICAgIGNhc2UgMHgxMjQwNzoKICAgICBjYXNlIDB4MTI0MEU6CiAgICAgY2FzZSAweDEyNDE0OgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwppbmRleCAxMzMyM2NmLi5lMDdhZGIyIDEwMDY0NAotLS0gYS9PYmplY3RzL3dlYWtyZWZvYmplY3QuYworKysgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwpAQCAtMTU2LDI4ICsxNTYsMzIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3ZWFrcmVmX3JlcHIoUHlXZWFrUmVmZXJlbmNlICpzZWxmKQogewotICAgIGNoYXIgYnVmZmVyWzI1Nl07Ci0gICAgaWYgKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpID09IFB5X05vbmUpIHsKLSAgICAgICAgUHlPU19zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiPHdlYWtyZWYgYXQgJXA7IGRlYWQ+Iiwgc2VsZik7CisgICAgUHlPYmplY3QgKm5hbWUsICpyZXByOworICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKKworICAgIGlmIChQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSA9PSBQeV9Ob25lKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjx3ZWFrcmVmIGF0ICVwOyBkZWFkPiIsIHNlbGYpOworCisgICAgbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZiksICZQeUlkX19fbmFtZV9fKTsKKyAgICBpZiAobmFtZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sobmFtZSkpIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgICAgICI8d2Vha3JlZiBhdCAlcDsgdG8gJyVzJyBhdCAlcD4iLAorICAgICAgICAgICAgc2VsZiwKKyAgICAgICAgICAgIFB5X1RZUEUoUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZikpLT50cF9uYW1lLAorICAgICAgICAgICAgUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZikpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgY2hhciAqbmFtZSA9IE5VTEw7Ci0gICAgICAgIFB5T2JqZWN0ICpuYW1lb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX25hbWVfXyIpOwotICAgICAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKLSAgICAgICAgICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKLSAgICAgICAgUHlPU19zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLAotICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPyAiPHdlYWtyZWYgYXQgJXA7IHRvICclLjUwcycgYXQgJXAgKCVzKT4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI8d2Vha3JlZiBhdCAlcDsgdG8gJyUuNTBzJyBhdCAlcD4iLAotICAgICAgICAgICAgICAgICAgICAgIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSktPnRwX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIFB5X1hERUNSRUYobmFtZW9iaik7CisgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgICAgICI8d2Vha3JlZiBhdCAlcDsgdG8gJyVzJyBhdCAlcCAoJVUpPiIsCisgICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgUHlfVFlQRShQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSktPnRwX25hbWUsCisgICAgICAgICAgICBQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSwKKyAgICAgICAgICAgIG5hbWUpOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmZmVyKTsKKyAgICBQeV9YREVDUkVGKG5hbWUpOworICAgIHJldHVybiByZXByOwogfQogCiAvKiBXZWFrIHJlZmVyZW5jZXMgb25seSBzdXBwb3J0IGVxdWFsaXR5LCBub3Qgb3JkZXJpbmcuIFR3byB3ZWFrIHJlZmVyZW5jZXMKQEAgLTE5MCw4ICsxOTQsNyBAQAogICAgIGlmICgob3AgIT0gUHlfRVEgJiYgb3AgIT0gUHlfTkUpIHx8CiAgICAgICAgICFQeVdlYWtyZWZfQ2hlY2soc2VsZikgfHwKICAgICAgICAgIVB5V2Vha3JlZl9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogICAgIGlmIChQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSA9PSBQeV9Ob25lCiAgICAgICAgIHx8IFB5V2Vha3JlZl9HRVRfT0JKRUNUKG90aGVyKSA9PSBQeV9Ob25lKSB7CkBAIC00MzgsOCArNDQxLDkgQEAKICNkZWZpbmUgV1JBUF9NRVRIT0QobWV0aG9kLCBzcGVjaWFsKSBcCiAgICAgc3RhdGljIFB5T2JqZWN0ICogXAogICAgIG1ldGhvZChQeU9iamVjdCAqcHJveHkpIHsgXAorICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc3BlY2lhbCk7IFwKICAgICAgICAgICAgIFVOV1JBUChwcm94eSk7IFwKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChwcm94eSwgc3BlY2lhbCwgIiIpOyBcCisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHJveHksICZQeUlkXyMjc3BlY2lhbCwgIiIpOyBcCiAgICAgICAgIH0KIAogCkBAIC00NTIsMTIgKzQ1NiwxMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHByb3h5X3JlcHIoUHlXZWFrUmVmZXJlbmNlICpwcm94eSkKIHsKLSAgICBjaGFyIGJ1ZlsxNjBdOwotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICI8d2Vha3Byb3h5IGF0ICVwIHRvICUuMTAwcyBhdCAlcD4iLCBwcm94eSwKLSAgICAgICAgICAgICAgICAgIFB5X1RZUEUoUHlXZWFrcmVmX0dFVF9PQkpFQ1QocHJveHkpKS0+dHBfbmFtZSwKLSAgICAgICAgICAgICAgICAgIFB5V2Vha3JlZl9HRVRfT0JKRUNUKHByb3h5KSk7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAiPHdlYWtwcm94eSBhdCAlcCB0byAlcyBhdCAlcD4iLAorICAgICAgICBwcm94eSwKKyAgICAgICAgUHlfVFlQRShQeVdlYWtyZWZfR0VUX09CSkVDVChwcm94eSkpLT50cF9uYW1lLAorICAgICAgICBQeVdlYWtyZWZfR0VUX09CSkVDVChwcm94eSkpOwogfQogCiAKQEAgLTU4Myw3ICs1ODYsNyBAQAogfQogCiAKLVdSQVBfTUVUSE9EKHByb3h5X2J5dGVzLCAiX19ieXRlc19fIikKK1dSQVBfTUVUSE9EKHByb3h5X2J5dGVzLCBfX2J5dGVzX18pCiAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHByb3h5X21ldGhvZHNbXSA9IHsKZGlmZiAtLWdpdCBhL1BDL1ZDNi9fbXVsdGlwcm9jZXNzaW5nLmRzcCBiL1BDL1ZDNi9fbXVsdGlwcm9jZXNzaW5nLmRzcAppbmRleCAyZGNhZjgzLi5lMWI4NDcwIDEwMDY0NAotLS0gYS9QQy9WQzYvX211bHRpcHJvY2Vzc2luZy5kc3AKKysrIGIvUEMvVkM2L19tdWx0aXByb2Nlc3NpbmcuZHNwCkBAIC05NywxOCArOTcsMTAgQEAKICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdccGlwZV9jb25uZWN0aW9uLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCiBTT1VSQ0U9Li5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNlbWFwaG9yZS5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzb2NrZXRfY29ubmVjdGlvbi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQogU09VUkNFPS4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1x3aW4zMl9mdW5jdGlvbnMuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBFbmQgVGFyZ2V0DQpkaWZmIC0tZ2l0IGEvUEMvVkM2L3B5dGhvbmNvcmUuZHNwIGIvUEMvVkM2L3B5dGhvbmNvcmUuZHNwCmluZGV4IDkyNjI1NmQuLjBjZTk4ZDEgMTAwNjQ0Ci0tLSBhL1BDL1ZDNi9weXRob25jb3JlLmRzcAorKysgYi9QQy9WQzYvcHl0aG9uY29yZS5kc3AKQEAgLTU0LDcgKzU0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbGFyZ2VpbnQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMDAwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvb3V0OiIuL3B5dGhvbjMyLmRsbCINCisjIEFERCBMSU5LMzIgbGFyZ2VpbnQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMDAwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvb3V0OiIuL3B5dGhvbjMzLmRsbCINCiAjIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAicHl0aG9uY29yZSAtIFdpbjMyIERlYnVnIg0KQEAgLTgyLDcgKzgyLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbGFyZ2VpbnQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMDAwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvb3V0OiIuL3B5dGhvbjMyX2QuZGxsIiAvcGRidHlwZTpzZXB0DQorIyBBREQgTElOSzMyIGxhcmdlaW50LmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgL25vbG9nbyAvYmFzZToiMHgxZTAwMDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL291dDoiLi9weXRob24zM19kLmRsbCIgL3BkYnR5cGU6c2VwdA0KICMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KIA0KICFFTkRJRiANCkBAIC00NjYsMTEgKzQ2Niw2IEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCi1TT1VSQ0U9Li5caW1wb3J0X250LmMNCi0jIEFERCBDUFAgL0kgIi4uXC4uXFB5dGhvbiINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCiBTT1VSQ0U9Li5cLi5cUHl0aG9uXGltcG9ydGRsLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCmRpZmYgLS1naXQgYS9QQy9WQzYvcmVhZG1lLnR4dCBiL1BDL1ZDNi9yZWFkbWUudHh0CmluZGV4IGZhMWFlN2QuLmQ2ZWM2ZTYgMTAwNjQ0Ci0tLSBhL1BDL1ZDNi9yZWFkbWUudHh0CisrKyBiL1BDL1ZDNi9yZWFkbWUudHh0CkBAIC0xMiw3ICsxMiw3IEBACiBUaGUgcHJvcGVyIG9yZGVyIHRvIGJ1aWxkIHN1YnByb2plY3RzOgogCiAxKSBweXRob25jb3JlICh0aGlzIGJ1aWxkcyB0aGUgbWFpbiBQeXRob24gRExMIGFuZCBsaWJyYXJ5IGZpbGVzLAotICAgICAgICAgICAgICAgcHl0aG9uMzIue2RsbCwgbGlifSBpbiBSZWxlYXNlIG1vZGUpCisgICAgICAgICAgICAgICBweXRob24zMy57ZGxsLCBsaWJ9IGluIFJlbGVhc2UgbW9kZSkKIAogMikgcHl0aG9uICh0aGlzIGJ1aWxkcyB0aGUgbWFpbiBQeXRob24gZXhlY3V0YWJsZSwKICAgICAgICAgICAgcHl0aG9uLmV4ZSBpbiBSZWxlYXNlIG1vZGUpCkBAIC0yMyw3ICsyMyw3IEBACiAgICB0byB0aGUgc3Vic3lzdGVtcyB0aGV5IGltcGxlbWVudDsgc2VlIFNVQlBST0pFQ1RTIGJlbG93KQogCiBXaGVuIHVzaW5nIHRoZSBEZWJ1ZyBzZXR0aW5nLCB0aGUgb3V0cHV0IGZpbGVzIGhhdmUgYSBfZCBhZGRlZCB0bwotdGhlaXIgbmFtZTogIHB5dGhvbjMyX2QuZGxsLCBweXRob25fZC5leGUsIHB5ZXhwYXRfZC5weWQsIGFuZCBzbyBvbi4KK3RoZWlyIG5hbWU6ICBweXRob24zM19kLmRsbCwgcHl0aG9uX2QuZXhlLCBweWV4cGF0X2QucHlkLCBhbmQgc28gb24uCiAKIFNVQlBST0pFQ1RTCiAtLS0tLS0tLS0tLQpAQCAtMTUzLDkgKzE1Myw5IEBACiAKICAgICBVbnBhY2sgaW50byB0aGUgImRpc3QiIGRpcmVjdG9yeSwgcmV0YWluaW5nIHRoZSBmb2xkZXIgbmFtZSBmcm9tCiAgICAgdGhlIGFyY2hpdmUgLSBmb3IgZXhhbXBsZSwgdGhlIGxhdGVzdCBzdGFibGUgT3BlblNTTCB3aWxsIGluc3RhbGwgYXMKLSAgICAgICAgZGlzdC9vcGVuc3NsLTEuMC4wagorICAgICAgICBkaXN0L29wZW5zc2wtMS4wLjFjCiAKLSAgICBZb3UgbmVlZCB0byB1c2UgdmVyc2lvbiAxLjAuMGogb2YgT3BlblNTTC4KKyAgICBZb3UgbmVlZCB0byB1c2UgdmVyc2lvbiAxLjAuMWMgb2YgT3BlblNTTC4KIAogICAgIFlvdSBjYW4gaW5zdGFsbCB0aGUgTkFTTSBhc3NlbWJsZXIgZnJvbQogICAgICAgICBodHRwOi8vd3d3Lm5hc20udXMvCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9weXRob25jb3JlLnZjcHJvaiBiL1BDL1ZTNy4xL3B5dGhvbmNvcmUudmNwcm9qCmluZGV4IDc3ZjdkOWQuLjA1YzQxODQgMTAwNjQ0Ci0tLSBhL1BDL1ZTNy4xL3B5dGhvbmNvcmUudmNwcm9qCisrKyBiL1BDL1ZTNy4xL3B5dGhvbmNvcmUudmNwcm9qCkBAIC0zOSwxNSArMzksMTUgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzIuZGxsIg0KKwkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjMzLmRsbCINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQogCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjMyLnBkYiINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjMzLnBkYiINCiAJCQkJU3ViU3lzdGVtPSIyIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjMyLmxpYiINCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjMzLmxpYiINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCkBAIC05OSwxNSArOTksMTUgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzJfZC5kbGwiDQorCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzNfZC5kbGwiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KIAkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMl9kLnBkYiINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjMzX2QucGRiIg0KIAkJCQlTdWJTeXN0ZW09IjIiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzJfZC5saWIiDQorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zM19kLmxpYiINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCkBAIC0xNjYsMTUgKzE2NiwxNSBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyINCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzIuZGxsIg0KKwkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjMzLmRsbCINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IkZBTFNFIg0KIAkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMi5wZGIiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMy5wZGIiDQogCQkJCVN1YlN5c3RlbT0iMiINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zMi5saWIiDQorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zMy5saWIiDQogCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQpAQCAtMjMzLDE1ICsyMzMsMTUgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iLi9weXRob24zMi5kbGwiDQorCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzMuZGxsIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCiAJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzIucGRiIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzMucGRiIg0KIAkJCQlTdWJTeXN0ZW09IjIiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzIubGliIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzMubGliIg0KIAkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KQEAgLTYxNiwzMyArNjE2LDYgQEAKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydC5jIj4NCiAJCTwvRmlsZT4NCiAJCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xpbXBvcnRfbnQuYyI+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPg0KLQkJCQk8VG9vbA0KLQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbiIvPg0KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4NCi0JCQkJPFRvb2wNCi0JCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob24iLz4NCi0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiI+DQotCQkJCTxUb29sDQotCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uIi8+DQotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIj4NCi0JCQkJPFRvb2wNCi0JCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob24iLz4NCi0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnRkbC5jIj4NCiAJCTwvRmlsZT4NCiAJCTxGaWxlDQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcmVhZG1lLnR4dCBiL1BDL1ZTNy4xL3JlYWRtZS50eHQKaW5kZXggOGZiMDY5Zi4uYmZkOGE3MCAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvcmVhZG1lLnR4dAorKysgYi9QQy9WUzcuMS9yZWFkbWUudHh0CkBAIC0xMiw3ICsxMiw3IEBACiBUaGUgcHJvcGVyIG9yZGVyIHRvIGJ1aWxkIHN1YnByb2plY3RzOgogCiAxKSBweXRob25jb3JlICh0aGlzIGJ1aWxkcyB0aGUgbWFpbiBQeXRob24gRExMIGFuZCBsaWJyYXJ5IGZpbGVzLAotICAgICAgICAgICAgICAgcHl0aG9uMjYue2RsbCwgbGlifSBpbiBSZWxlYXNlIG1vZGUpCisgICAgICAgICAgICAgICBweXRob24zMy57ZGxsLCBsaWJ9IGluIFJlbGVhc2UgbW9kZSkKICAgICAgICAgICAgICAgTk9URTogIGluIHByZXZpb3VzIHJlbGVhc2VzLCB0aGlzIHN1YnByb2plY3Qgd2FzCiAgICAgICAgICAgICAgIG5hbWVkIGFmdGVyIHRoZSByZWxlYXNlIG51bWJlciwgZS5nLiBweXRob24yMC4KIApAQCAtMjYsNyArMjYsNyBAQAogICAgdGVzdCBzbGF2ZTsgc2VlIFNVQlBST0pFQ1RTIGJlbG93KQogCiBXaGVuIHVzaW5nIHRoZSBEZWJ1ZyBzZXR0aW5nLCB0aGUgb3V0cHV0IGZpbGVzIGhhdmUgYSBfZCBhZGRlZCB0bwotdGhlaXIgbmFtZTogIHB5dGhvbjI2X2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLgordGhlaXIgbmFtZTogIHB5dGhvbjMzX2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLgogCiBTVUJQUk9KRUNUUwogLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qIGIvUEMvVlM4LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKaW5kZXggYzJiYmVjNC4uOGYxY2FmYyAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKKysrIGIvUEMvVlM4LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKQEAgLTUyMiwxMCArNTIyLDYgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xjb25uZWN0aW9uLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCiAJCTxGaWx0ZXINCiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQpAQCAtNTM1LDE4ICs1MzEsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHBpcGVfY29ubmVjdGlvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNlbWFwaG9yZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNvY2tldF9jb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcd2luMzJfZnVuY3Rpb25zLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvYnVpbGRfc3NsLmJhdCBiL1BDL1ZTOC4wL2J1aWxkX3NzbC5iYXQKaW5kZXggMzljMWZmMC4uMzU3YjA4YiAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvYnVpbGRfc3NsLmJhdAorKysgYi9QQy9WUzguMC9idWlsZF9zc2wuYmF0CkBAIC0yLDEwICsyLDEwIEBACiBpZiBub3QgZGVmaW5lZCBIT1NUX1BZVEhPTiAoCiAgIGlmICUxIEVRVSBEZWJ1ZyAoCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQotICAgIGlmIG5vdCBleGlzdCBweXRob24zMl9kLmRsbCBleGl0IDEKKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzNfZC5kbGwgZXhpdCAxCiAgICkgRUxTRSAoCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUKLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzIuZGxsIGV4aXQgMQorICAgIGlmIG5vdCBleGlzdCBweXRob24zMy5kbGwgZXhpdCAxCiAgICkKICkKICVIT1NUX1BZVEhPTiUgYnVpbGRfc3NsLnB5ICUxICUyICUzCmRpZmYgLS1naXQgYS9QQy9WUzguMC9raWxsX3B5dGhvbi5jIGIvUEMvVlM4LjAva2lsbF9weXRob24uYwppbmRleCA2YjkxNjc4Li5iYjMyM2QzIDEwMDY0NAotLS0gYS9QQy9WUzguMC9raWxsX3B5dGhvbi5jCisrKyBiL1BDL1ZTOC4wL2tpbGxfcHl0aG9uLmMKQEAgLTEwNiw3ICsxMDYsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBYWFggVE9ETzogaWYgd2UgcmVhbGx5IHdhbnRlZCB0byBiZSBmYW5jeSwgd2UgY291bGQgY2hlY2sgdGhlIAogICAgICAgICAgKiBtb2R1bGVzIGZvciBhbGwgcHJvY2Vzc2VzIChub3QganVzdCB0aGUgcHl0aG9uW19kXS5leGUgb25lcykKLSAgICAgICAgICogYW5kIHNlZSBpZiBhbnkgb2Ygb3VyIERMTHMgYXJlIGxvYWRlZCAoaS5lLiBweXRob24zMltfZF0uZGxsKSwKKyAgICAgICAgICogYW5kIHNlZSBpZiBhbnkgb2Ygb3VyIERMTHMgYXJlIGxvYWRlZCAoaS5lLiBweXRob24zM1tfZF0uZGxsKSwKICAgICAgICAgICogYXMgdGhhdCB3b3VsZCBhbHNvIGluaGliaXQgb3VyIGFiaWxpdHkgdG8gcmVidWlsZCB0aGUgc29sdXRpb24uCiAgICAgICAgICAqIE5vdCB3b3J0aCBsb29zaW5nIHNsZWVwIG92ZXIgdGhvdWdoOyBmb3Igbm93LCBhIHNpbXBsZSBjaGVjayAKICAgICAgICAgICogZm9yIGp1c3QgdGhlIHB5dGhvbiBleGVjdXRhYmxlIHNob3VsZCBiZSBzdWZmaWNpZW50LgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvcHlwcm9qZWN0LnZzcHJvcHMgYi9QQy9WUzguMC9weXByb2plY3QudnNwcm9wcwppbmRleCAyYTgyZTQ5Li5mODZjZGVjIDEwMDY0NAotLS0gYS9QQy9WUzguMC9weXByb2plY3QudnNwcm9wcworKysgYi9QQy9WUzguMC9weXByb2plY3QudnNwcm9wcwpAQCAtMzgsNyArMzgsNyBAQAogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9IlB5RGxsTmFtZSINCi0JCVZhbHVlPSJweXRob24zMiINCisJCVZhbHVlPSJweXRob24zMyINCiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0iUHl0aG9uRXhlIg0KQEAgLTU4LDcgKzU4LDcgQEAKIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJvcGVuc3NsRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxvcGVuc3NsLTEuMC4waiINCisJCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMWMiDQogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9InRjbHRrRGlyIg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3B5dGhvbmNvcmUudmNwcm9qIGIvUEMvVlM4LjAvcHl0aG9uY29yZS52Y3Byb2oKaW5kZXggZTgxNTU5ZS4uYTc1YmI5ZCAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvcHl0aG9uY29yZS52Y3Byb2oKKysrIGIvUEMvVlM4LjAvcHl0aG9uY29yZS52Y3Byb2oKQEAgLTE3MDcsMTAgKzE3MDcsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xpbXBvcnRfbnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1zdmNydG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnoyLnZjcHJvaiBiL1BDL1ZTOS4wL19iejIudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvYnoyLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX2J6Mi52Y3Byb2oKaW5kZXggZTJiMzUzYi4uN2NlYjhjNyAxMDA2NDQKLS0tIGEvUENidWlsZC9iejIudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19iejIudmNwcm9qCkBAIC0xLDggKzEsOCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQotCU5hbWU9ImJ6MiINCisJVmVyc2lvbj0iOS4wMCINCisJTmFtZT0iX2J6MiINCiAJUHJvamVjdEdVSUQ9Ins3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KIAlSb290TmFtZXNwYWNlPSJiejIiDQogCUtleXdvcmQ9IldpbjMyUHJvaiINCkBAIC01MjcsNyArNTI3LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGJ6Mm1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2J6Mm1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fY3R5cGVzLnZjcHJvaiBiL1BDL1ZTOS4wL19jdHlwZXMudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIFBDYnVpbGQvX2N0eXBlcy52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19jdHlwZXMudmNwcm9qCmluZGV4IDFlYjhiNTcuLjhlNWNiYTEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2N0eXBlcy52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX2N0eXBlcy52Y3Byb2oKQEAgLTQyLDcgKzQyLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0xMDMsNyArMTAzLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0xNjQsNyArMTY0LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0yMjgsNyArMjI4LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0yOTEsNyArMjkxLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0zNTUsNyArMzU1LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC00MTksNyArNDE5LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC00ODMsNyArNDgzLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC01MzEsMjcgKzUzMSwyNyBAQAogCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzX2RsZmNuLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlc19kbGZjbi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaV9jb21tb24uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmljb25maWcuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpY29uZmlnLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpdGFyZ2V0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTU5LDM5ICs1NTksMzkgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbGJhY2tzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxiYWNrcy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxwcm9jLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxwcm9jLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2ZpZWxkLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IkRlYnVnfHg2NCINCkBAIC02MjcsNyArNjI3LDcgQEAKIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjcHJvaiBiL1BDL1ZTOS4wL19jdHlwZXNfdGVzdC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9fY3R5cGVzX3Rlc3QudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fY3R5cGVzX3Rlc3QudmNwcm9qCmluZGV4IDBjN2FiYmUuLjcwMzM1NDYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjcHJvagorKysgYi9QQy9WUzkuMC9fY3R5cGVzX3Rlc3QudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il9jdHlwZXNfdGVzdCINCiAJUHJvamVjdEdVSUQ9Ins5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9Ig0KIAlSb290TmFtZXNwYWNlPSJfY3R5cGVzX3Rlc3QiDQpAQCAtNTAzLDcgKzUwMyw3IEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTUxMSw3ICs1MTEsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXMudmNwcm9qIGIvUEMvVlM5LjAvX2RlY2ltYWwudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggNjklCmNvcHkgZnJvbSBQQ2J1aWxkL19jdHlwZXMudmNwcm9qCmNvcHkgdG8gUEMvVlM5LjAvX2RlY2ltYWwudmNwcm9qCmluZGV4IDFlYjhiNTcuLmI5ZmFiYjAgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2N0eXBlcy52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX2RlY2ltYWwudmNwcm9qCkBAIC0yLDkgKzIsOSBAQAogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQogCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9jdHlwZXMiDQotCVByb2plY3RHVUlEPSJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSINCi0JUm9vdE5hbWVzcGFjZT0iX2N0eXBlcyINCisJTmFtZT0iX2RlY2ltYWwiDQorCVByb2plY3RHVUlEPSJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fSINCisJUm9vdE5hbWVzcGFjZT0iX2RlY2ltYWwiDQogCUtleXdvcmQ9IldpbjMyUHJvaiINCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KIAk+DQpAQCAtNDIsNyArNDIsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00iDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTEwMyw3ICsxMDQsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTY0LDcgKzE2Niw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTc3LDcgKzE4MCw2IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KIAkJCQlTdWJTeXN0ZW09IjAiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KIAkJCS8+DQpAQCAtMjI4LDcgKzIzMCw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0yNDEsNyArMjQ0LDYgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQogCQkJCVN1YlN5c3RlbT0iMCINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQogCQkJLz4NCkBAIC0yOTEsNyArMjkzLDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0zMDQsNyArMzA3LDYgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQogCQkJCVN1YlN5c3RlbT0iMCINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQogCQkJLz4NCkBAIC0zNTUsNyArMzU3LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00iDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTM2OCw3ICszNzEsNiBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCiAJCQkJU3ViU3lzdGVtPSIwIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQpAQCAtNDE5LDcgKzQyMSw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtNDMyLDcgKzQzNSw2IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KIAkJCQlTdWJTeXN0ZW09IjAiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KIAkJCS8+DQpAQCAtNDgzLDcgKzQ4NSw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC00OTYsNyArNDk5LDYgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQogCQkJCVN1YlN5c3RlbT0iMCINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQogCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KQEAgLTUzMSwyNyArNTMzLDcxIEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlcy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzX2RsZmNuLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiaXRzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb252b2x1dGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmljb25maWcuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNydC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGRvY3N0cmluZ3MuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1wZGVjaW1hbC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xudW1iZXJ0aGVvcnkuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcc2l4c3RlcC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0cmFuc3Bvc2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHlwZWFyaXRoLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHVtb2Rhcml0aC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2NvbXBhdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y3N0ZGludC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTU5LDc1ICs2MDUsNjcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcX2RlY2ltYWwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjYWxsYmFja3MuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJhc2Vhcml0aC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxwcm9jLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjZmllbGQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnRleHQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnZvbHV0ZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXG1hbGxvY19jbG9zdXJlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjcnQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xwcmVwX2NpZi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmMiDQogCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGlvLmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1lbW9yeS5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtcGRlY2ltYWwuYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbnVtYmVydGhlb3J5LmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHNpeHN0ZXAuYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHJhbnNwb3NlLmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjZGl2NjQuYXNtIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNjQyLDggKzY4MCw4IEBACiAJCQkJCT4NCiAJCQkJCTxUb29sDQogCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQorCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQorCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KIAkJCQkJLz4NCiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtNjU5LDggKzY5Nyw4IEBACiAJCQkJCT4NCiAJCQkJCTxUb29sDQogCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCisJCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gJnF1b3Q7JChJbnREaXIpXHZjZGl2NjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCisJCQkJCQlPdXRwdXRzPSIkKEludERpcilcdmNkaXY2NC5vYmoiDQogCQkJCQkvPg0KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC02NzYsOCArNzE0LDggQEAKIAkJCQkJPg0KIAkJCQkJPFRvb2wNCiAJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KKwkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQorCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KIAkJCQkJLz4NCiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtNjkzLDggKzczMSw4IEBACiAJCQkJCT4NCiAJCQkJCTxUb29sDQogCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCisJCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcdmNkaXY2NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KKwkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx2Y2RpdjY0Lm9iaiINCiAJCQkJCS8+DQogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjcHJvaiBiL1BDL1ZTOS4wL19lbGVtZW50dHJlZS52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gUENidWlsZC9fZWxlbWVudHRyZWUudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fZWxlbWVudHRyZWUudmNwcm9qCmluZGV4IDNlOTYzMWYuLmY5ZDczNzUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjcHJvagorKysgYi9QQy9WUzkuMC9fZWxlbWVudHRyZWUudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il9lbGVtZW50dHJlZSINCiAJUHJvamVjdEdVSUQ9InsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9Ig0KIAlSb290TmFtZXNwYWNlPSJfZWxlbWVudHRyZWUiDQpAQCAtNDIsNyArNDIsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0xMDQsNyArMTA0LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMTY2LDcgKzE2Niw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTIyOSw3ICsyMjksNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0yOTEsNyArMjkxLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMzU0LDcgKzM1NCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTQxNyw3ICs0MTcsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC00ODAsNyArNDgwLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtNTI3LDYzICs1MjcsNjMgQEAKIAkJCU5hbWU9IkhlYWRlciBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XGFzY2lpLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxhc2NpaS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxhc2NpaXRhYi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcYXNjaWl0YWIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcZXhwYXQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2NvbmZpZy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfY29uZmlnLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2V4dGVybmFsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxleHBhdF9leHRlcm5hbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxpYXNjaWl0YWIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGlhc2NpaXRhYi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxpbnRlcm5hbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcaW50ZXJuYWwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcbGF0aW4xdGFiLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxsYXRpbjF0YWIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcbWFjY29uZmlnLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxtYWNjb25maWcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcbmFtZXRhYi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbmFtZXRhYi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxweWV4cGF0bnMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHB5ZXhwYXRucy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx1dGY4dGFiLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx1dGY4dGFiLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHdpbmNvbmZpZy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcd2luY29uZmlnLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTU5MSwxOSArNTkxLDE5IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfZWxlbWVudHRyZWUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9lbGVtZW50dHJlZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9faGFzaGxpYi52Y3Byb2ogYi9QQy9WUzkuMC9faGFzaGxpYi52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9faGFzaGxpYi52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19oYXNobGliLnZjcHJvagppbmRleCBlMDVkOTdlLi43NzQxN2VjIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19oYXNobGliLnZjcHJvagorKysgYi9QQy9WUzkuMC9faGFzaGxpYi52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0iX2hhc2hsaWIiDQogCVByb2plY3RHVUlEPSJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCiAJUm9vdE5hbWVzcGFjZT0iX2hhc2hsaWIiDQpAQCAtNTI3LDcgKzUyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oYXNob3BlbnNzbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9iejIudmNwcm9qIGIvUEMvVlM5LjAvX2x6bWEudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggODIlCmNvcHkgZnJvbSBQQ2J1aWxkL2J6Mi52Y3Byb2oKY29weSB0byBQQy9WUzkuMC9fbHptYS52Y3Byb2oKaW5kZXggZTJiMzUzYi4uN2M2MDAzZiAxMDA2NDQKLS0tIGEvUENidWlsZC9iejIudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19sem1hLnZjcHJvagpAQCAtMSwxMCArMSwxMCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQotCU5hbWU9ImJ6MiINCi0JUHJvamVjdEdVSUQ9Ins3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KLQlSb290TmFtZXNwYWNlPSJiejIiDQorCVZlcnNpb249IjkuMDAiDQorCU5hbWU9Il9sem1hIg0KKwlQcm9qZWN0R1VJRD0ie0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0iDQorCVJvb3ROYW1lc3BhY2U9Imx6bWEiDQogCUtleXdvcmQ9IldpbjMyUHJvaiINCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KIAk+DQpAQCAtNDIsOCArNDIsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtNTYsNyArNTYsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KQEAgLTEwNCw4ICsxMDQsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTE4LDcgKzExOCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCkBAIC0xNjYsOCArMTY2LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTE4MCw3ICsxODAsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KQEAgLTIyOSw4ICsyMjksOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMjQzLDcgKzI0Myw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCkBAIC0yOTEsOCArMjkxLDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTMwNSw3ICszMDUsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KQEAgLTM1NCw4ICszNTQsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMzY4LDcgKzM2OCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQogCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC00MTcsOCArNDE3LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTQzMSw3ICs0MzEsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KQEAgLTQ4MCw4ICs0ODAsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtNDk0LDcgKzQ5NCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQogCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC01MjcsNTEgKzUyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xiejJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9ImJ6aXAyIDEuMC42IEhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYl9wcml2YXRlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJiemlwMiAxLjAuNiBTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJsb2Nrc29ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcY29tcHJlc3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxjcmN0YWJsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGRlY29tcHJlc3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxodWZmbWFuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilccmFuZHRhYmxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbHptYW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbXNpLnZjcHJvaiBiL1BDL1ZTOS4wL19tc2kudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIFBDYnVpbGQvX21zaS52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19tc2kudmNwcm9qCmluZGV4IDA4NGVmZGYuLmNiMjMwZTEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX21zaS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX21zaS52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0iX21zaSINCiAJUHJvamVjdEdVSUQ9InszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9Ig0KIAlSb290TmFtZXNwYWNlPSJfbXNpIg0KQEAgLTUxOSw3ICs1MTksNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXF9tc2kuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xfbXNpLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zb2NrZXQudmNwcm9qIGIvUEMvVlM5LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5NSUKY29weSBmcm9tIFBDYnVpbGQvX3NvY2tldC52Y3Byb2oKY29weSB0byBQQy9WUzkuMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagppbmRleCBlZTcyYzEwLi5mYjNkMWU3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19zb2NrZXQudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCkBAIC0xLDEwICsxLDEwIEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX3NvY2tldCINCi0JUHJvamVjdEdVSUQ9Ins4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlSb290TmFtZXNwYWNlPSJfc29ja2V0Ig0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJfbXVsdGlwcm9jZXNzaW5nIg0KKwlQcm9qZWN0R1VJRD0iezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iDQorCVJvb3ROYW1lc3BhY2U9Il9tdWx0aXByb2Nlc3NpbmciDQogCUtleXdvcmQ9IldpbjMyUHJvaiINCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KIAk+DQpAQCAtNTE5LDcgKzUxOSw3IEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC01MjcsNyArNTI3LDExIEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zb2NrZXQudmNwcm9qIGIvUEMvVlM5LjAvX3NvY2tldC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9fc29ja2V0LnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX3NvY2tldC52Y3Byb2oKaW5kZXggZWU3MmMxMC4uZmYxZjZkNCAxMDA2NDQKLS0tIGEvUENidWlsZC9fc29ja2V0LnZjcHJvagorKysgYi9QQy9WUzkuMC9fc29ja2V0LnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJfc29ja2V0Ig0KIAlQcm9qZWN0R1VJRD0iezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0iDQogCVJvb3ROYW1lc3BhY2U9Il9zb2NrZXQiDQpAQCAtNTE5LDcgKzUxOSw3IEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTI3LDcgKzUyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3FsaXRlMy52Y3Byb2ogYi9QQy9WUzkuMC9fc3FsaXRlMy52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gUENidWlsZC9fc3FsaXRlMy52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19zcWxpdGUzLnZjcHJvagppbmRleCBiMzFmOWI2Li5mNzEwMGYxIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19zcWxpdGUzLnZjcHJvagorKysgYi9QQy9WUzkuMC9fc3FsaXRlMy52Y3Byb2oKQEAgLTUyNyw0MyArNTI3LDQzIEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxzcWxpdGVjb21wYXQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3FsaXRlY29tcGF0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTcxLDM5ICs1NzEsMzkgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVccm93LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NzbC52Y3Byb2ogYi9QQy9WUzkuMC9fc3NsLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL19zc2wudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fc3NsLnZjcHJvagppbmRleCA1NzI4Yzg0Li45N2FhMjk0IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19zc2wudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19zc2wudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il9zc2wiDQogCVByb2plY3RHVUlEPSJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCiAJUm9vdE5hbWVzcGFjZT0iX3NzbCINCkBAIC01MjcsNyArNTI3LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zc2wuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zc2wuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RjYXBpLnZjcHJvaiBiL1BDL1ZTOS4wL190ZXN0YnVmZmVyLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk3JQpjb3B5IGZyb20gUENidWlsZC9fdGVzdGNhcGkudmNwcm9qCmNvcHkgdG8gUEMvVlM5LjAvX3Rlc3RidWZmZXIudmNwcm9qCmluZGV4IDU1ZjI0M2YuLjAzMzc3ZTEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3Rlc3RjYXBpLnZjcHJvagorKysgYi9QQy9WUzkuMC9fdGVzdGJ1ZmZlci52Y3Byb2oKQEAgLTEsMTAgKzEsMTAgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJfdGVzdGNhcGkiDQotCVByb2plY3RHVUlEPSJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCi0JUm9vdE5hbWVzcGFjZT0iX3Rlc3RjYXBpIg0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJfdGVzdGJ1ZmZlciINCisJUHJvamVjdEdVSUQ9IntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9Ig0KKwlSb290TmFtZXNwYWNlPSJfdGVzdGJ1ZmZlciINCiAJS2V5d29yZD0iV2luMzJQcm9qIg0KIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQogCT4NCkBAIC01MTEsNyArNTExLDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3Rlc3RidWZmZXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RjYXBpLnZjcHJvaiBiL1BDL1ZTOS4wL190ZXN0Y2FwaS52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9fdGVzdGNhcGkudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fdGVzdGNhcGkudmNwcm9qCmluZGV4IDU1ZjI0M2YuLjQ1MzMwMGEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3Rlc3RjYXBpLnZjcHJvagorKysgYi9QQy9WUzkuMC9fdGVzdGNhcGkudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il90ZXN0Y2FwaSINCiAJUHJvamVjdEdVSUQ9Ins2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KIAlSb290TmFtZXNwYWNlPSJfdGVzdGNhcGkiDQpAQCAtNTExLDcgKzUxMSw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfdGVzdGNhcGltb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGtpbnRlci52Y3Byb2ogYi9QQy9WUzkuMC9fdGtpbnRlci52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9fdGtpbnRlci52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL190a2ludGVyLnZjcHJvagppbmRleCAxYzVmMGNiLi41MTYzMzE3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL190a2ludGVyLnZjcHJvagorKysgYi9QQy9WUzkuMC9fdGtpbnRlci52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0iX3RraW50ZXIiDQogCVByb2plY3RHVUlEPSJ7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfSINCiAJUm9vdE5hbWVzcGFjZT0iX3RraW50ZXIiDQpAQCAtNTI3LDExICs1MjcsMTEgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF90a2ludGVyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGtpbnRlci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x0a2FwcGluaXQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHRrYXBwaW5pdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjcHJvaiBiL1BDL1ZTOS4wL2JkaXN0X3dpbmluc3QudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggNzclCnJlbmFtZSBmcm9tIFBDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL2JkaXN0X3dpbmluc3QudmNwcm9qCmluZGV4IDY4YjM5MzEuLmI4Y2M3YWQgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvYmRpc3Rfd2luaW5zdC52Y3Byb2oKQEAgLTIwLDcgKzIwLDcgQEAKIAk8Q29uZmlndXJhdGlvbnM+DQogCQk8Q29uZmlndXJhdGlvbg0KIAkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiDQogCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQogCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQogCQkJVXNlT2ZNRkM9IjAiDQpAQCAtNDUsMTQgKzQ1LDE0IEBACiAJCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQogCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiIg0KKwkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiIg0KIAkJCQlIZWFkZXJGaWxlTmFtZT0iIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCiAJCQkJT3B0aW1pemF0aW9uPSIxIg0KIAkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMCINCkBAIC02Nyw3ICs2Nyw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUEM7Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtNzUsMTEgKzc1LDExIEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNvbWN0bDMyLmxpYiBpbWFnZWhscC5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC5leGUiDQorCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC5leGUiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KIAkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAucGRiIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAucGRiIg0KIAkJCQlTdWJTeXN0ZW09IjIiDQogCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCiAJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQpAQCAtMTM1LDE0ICsxMzUsMTQgQEAKIAkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCiAJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiDQorCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiDQogCQkJCUhlYWRlckZpbGVOYW1lPSIiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlPcHRpbWl6YXRpb249IjEiDQogCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXEluY2x1ZGU7Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGU7Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KQEAgLTE1Nyw3ICsxNTcsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFBDOy4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTE2NSwxMSArMTY1LDExIEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNvbWN0bDMyLmxpYiBpbWFnZWhscC5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5leGUiDQorCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5leGUiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KIAkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQucGRiIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQucGRiIg0KIAkJCQlTdWJTeXN0ZW09IjIiDQogCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCiAJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQpAQCAtMjA2LDM4ICsyMDYsMzggQEAKIAkJCUZpbHRlcj0iY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGV4dHJhY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGV4dHJhY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0iemxpYiINCiAJCQkJPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCTwvRmlsdGVyPg0KQEAgLTI0Nyw3ICsyNDcsNyBAQAogCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGJkaXN0X3dpbmluc3RcYXJjaGl2ZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcYXJjaGl2ZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtMjU2LDExICsyNTYsMTEgQEAKIAkJCUZpbHRlcj0iaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5yYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xiZGlzdF93aW5pbnN0XFB5dGhvblBvd2VyZWQuYm1wIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcUHl0aG9uUG93ZXJlZC5ibXAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2RlYnVnLnZzcHJvcHMgYi9QQy9WUzkuMC9kZWJ1Zy52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL2RlYnVnLnZzcHJvcHMKcmVuYW1lIHRvIFBDL1ZTOS4wL2RlYnVnLnZzcHJvcHMKZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLmMgYi9QQy9WUzkuMC9raWxsX3B5dGhvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMzIzZDMKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9WUzkuMC9raWxsX3B5dGhvbi5jCkBAIC0wLDAgKzEsMTc4IEBACisvKgorICogSGVscGVyIHByb2dyYW0gZm9yIGtpbGxpbmcgbGluZ2VyaW5nIHB5dGhvbltfZF0uZXhlIHByb2Nlc3NlcyBiZWZvcmUKKyAqIGJ1aWxkaW5nLCB0aHVzIGF0dGVtcHRpbmcgdG8gYXZvaWQgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIGZpbGVzIGJlaW5nCisgKiBsb2NrZWQuCisgKi8KKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHRsaGVscDMyLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI3ByYWdtYSBjb21tZW50KGxpYiwgInBzYXBpIikKKworI2lmZGVmIF9ERUJVRworI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbl9kLmV4ZSIpCisjZGVmaW5lIFBZVEhPTl9FWEVfTEVOICAgICAgKDEyKQorI2RlZmluZSBLSUxMX1BZVEhPTl9FWEUgICAgIChMImtpbGxfcHl0aG9uX2QuZXhlIikKKyNkZWZpbmUgS0lMTF9QWVRIT05fRVhFX0xFTiAoMTcpCisjZWxzZQorI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbi5leGUiKQorI2RlZmluZSBQWVRIT05fRVhFX0xFTiAgICAgICgxMCkKKyNkZWZpbmUgS0lMTF9QWVRIT05fRVhFICAgICAoTCJraWxsX3B5dGhvbi5leGUiKQorI2RlZmluZSBLSUxMX1BZVEhPTl9FWEVfTEVOICgxNSkKKyNlbmRpZgorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIEhBTkRMRSAgIGhwLCBoc3AsIGhzbTsgLyogcHJvY2Vzcywgc25hcHNob3QgcHJvY2Vzc2VzLCBzbmFwc2hvdCBtb2R1bGVzICovCisgICAgRFdPUkQgICAgZGFjLCBvdXJfcGlkOworICAgIHNpemVfdCAgIGxlbjsKKyAgICB3Y2hhcl90ICBwYXRoW01BWF9QQVRIKzFdOworCisgICAgTU9EVUxFRU5UUlkzMlcgIG1lOworICAgIFBST0NFU1NFTlRSWTMyVyBwZTsKKworICAgIG1lLmR3U2l6ZSA9IHNpemVvZihNT0RVTEVFTlRSWTMyVyk7CisgICAgcGUuZHdTaXplID0gc2l6ZW9mKFBST0NFU1NFTlRSWTMyVyk7CisKKyAgICBtZW1zZXQocGF0aCwgMCwgTUFYX1BBVEgrMSk7CisKKyAgICBvdXJfcGlkID0gR2V0Q3VycmVudFByb2Nlc3NJZCgpOworCisgICAgaHNtID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQTU9EVUxFLCBvdXJfcGlkKTsKKyAgICBpZiAoaHNtID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIHByaW50ZigiQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90WzFdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKCFNb2R1bGUzMkZpcnN0Vyhoc20sICZtZSkpIHsKKyAgICAgICAgcHJpbnRmKCJNb2R1bGUzMkZpcnN0V1sxXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qCisgICAgICogRW51bWVyYXRlIG92ZXIgdGhlIG1vZHVsZXMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaW4gb3JkZXIgdG8gZmluZAorICAgICAqIGtpbGxfcHJvY2Vzc1tfZF0uZXhlLCB0aGVuIHRha2UgYSBub3RlIG9mIHRoZSBkaXJlY3RvcnkgaXQgbGl2ZXMgaW4uCisgICAgICovCisgICAgZG8geworICAgICAgICBpZiAoX3djc25pY21wKG1lLnN6TW9kdWxlLCBLSUxMX1BZVEhPTl9FWEUsIEtJTExfUFlUSE9OX0VYRV9MRU4pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbGVuID0gd2Nzbmxlbl9zKG1lLnN6RXhlUGF0aCwgTUFYX1BBVEgpIC0gS0lMTF9QWVRIT05fRVhFX0xFTjsKKyAgICAgICAgd2NzbmNweV9zKHBhdGgsIE1BWF9QQVRIKzEsIG1lLnN6RXhlUGF0aCwgbGVuKTsgCisKKyAgICAgICAgYnJlYWs7CisKKyAgICB9IHdoaWxlIChNb2R1bGUzMk5leHRXKGhzbSwgJm1lKSk7CisKKyAgICBDbG9zZUhhbmRsZShoc20pOworCisgICAgaWYgKHBhdGggPT0gTlVMTCkgeworICAgICAgICBwcmludGYoImZhaWxlZCB0byBkaXNjZXJuIGRpcmVjdG9yeSBvZiBydW5uaW5nIHByb2Nlc3NcbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRha2UgYSBzbmFwc2hvdCBvZiBzeXN0ZW0gcHJvY2Vzc2VzLiAgRW51bWVyYXRlIG92ZXIgdGhlIHNuYXBzaG90LAorICAgICAqIGxvb2tpbmcgZm9yIHB5dGhvbiBwcm9jZXNzZXMuICBXaGVuIHdlIGZpbmQgb25lLCB2ZXJpZnkgaXQgbGl2ZXMKKyAgICAgKiBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkgd2UgbGl2ZSBpbi4gIElmIGl0IGRvZXMsIGtpbGwgaXQuICBJZiB3ZSdyZQorICAgICAqIHVuYWJsZSB0byBraWxsIGl0LCB0cmVhdCB0aGlzIGFzIGEgZmF0YWwgZXJyb3IgYW5kIHJldHVybiAxLgorICAgICAqIAorICAgICAqIFRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgaXMgdGhhdCB3ZSdyZSBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSAKKyAgICAgKiBidWlsZCBwcm9jZXNzIG9uIHRoZSBiYXNpcyB0aGF0IHdlJ2xsIHRha2UgY2FyZSBvZiBraWxsaW5nIGFueQorICAgICAqIHJ1bm5pbmcgaW5zdGFuY2VzLCBzdWNoIHRoYXQgdGhlIGJ1aWxkIHdvbid0IGVuY291bnRlciBwZXJtaXNzaW9uCisgICAgICogZGVuaWVkIGVycm9ycyBkdXJpbmcgbGlua2luZy4gSWYgd2UgY2FuJ3Qga2lsbCBvbmUgb2YgdGhlIHByb2Nlc3NlcywKKyAgICAgKiB3ZSBjYW4ndCBwcm92aWRlIHRoaXMgYXNzdXJhbmNlLCBhbmQgdGhlIGJ1aWxkIHNob3VsZG4ndCBzdGFydC4KKyAgICAgKi8KKworICAgIGhzcCA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUFBST0NFU1MsIDApOworICAgIGlmIChoc3AgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgcHJpbnRmKCJDcmVhdGVUb29saGVscDMyU25hcHNob3RbMl0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoIVByb2Nlc3MzMkZpcnN0Vyhoc3AsICZwZSkpIHsKKyAgICAgICAgcHJpbnRmKCJQcm9jZXNzMzJGaXJzdFcgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICBDbG9zZUhhbmRsZShoc3ApOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBkYWMgPSBQUk9DRVNTX1FVRVJZX0lORk9STUFUSU9OIHwgUFJPQ0VTU19WTV9SRUFEIHwgUFJPQ0VTU19URVJNSU5BVEU7CisgICAgZG8geworCisgICAgICAgIC8qCisgICAgICAgICAqIFhYWCBUT0RPOiBpZiB3ZSByZWFsbHkgd2FudGVkIHRvIGJlIGZhbmN5LCB3ZSBjb3VsZCBjaGVjayB0aGUgCisgICAgICAgICAqIG1vZHVsZXMgZm9yIGFsbCBwcm9jZXNzZXMgKG5vdCBqdXN0IHRoZSBweXRob25bX2RdLmV4ZSBvbmVzKQorICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjMzW19kXS5kbGwpLAorICAgICAgICAgKiBhcyB0aGF0IHdvdWxkIGFsc28gaW5oaWJpdCBvdXIgYWJpbGl0eSB0byByZWJ1aWxkIHRoZSBzb2x1dGlvbi4KKyAgICAgICAgICogTm90IHdvcnRoIGxvb3Npbmcgc2xlZXAgb3ZlciB0aG91Z2g7IGZvciBub3csIGEgc2ltcGxlIGNoZWNrIAorICAgICAgICAgKiBmb3IganVzdCB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCisgICAgICAgICAqLworCisgICAgICAgIGlmIChfd2NzbmljbXAocGUuc3pFeGVGaWxlLCBQWVRIT05fRVhFLCBQWVRIT05fRVhFX0xFTikpCisgICAgICAgICAgICAvKiBUaGlzIGlzbid0IGEgcHl0aG9uIHByb2Nlc3MuICovCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvKiBJdCdzIGEgcHl0aG9uIHByb2Nlc3MsIHNvIGZpZ3VyZSBvdXQgd2hpY2ggZGlyZWN0b3J5IGl0J3MgaW4uLi4gKi8KKyAgICAgICAgaHNtID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQTU9EVUxFLCBwZS50aDMyUHJvY2Vzc0lEKTsKKyAgICAgICAgaWYgKGhzbSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgICAgIC8qIAorICAgICAgICAgICAgICogSWYgb3VyIG1vZHVsZSBzbmFwc2hvdCBmYWlscyAod2hpY2ggd2lsbCBoYXBwZW4gaWYgd2UgZG9uJ3Qgb3duCisgICAgICAgICAgICAgKiB0aGUgcHJvY2VzcyksIGp1c3QgaWdub3JlIGl0IGFuZCBjb250aW51ZS4gIChJdCBzZWVtcyBkaWZmZXJlbnQKKyAgICAgICAgICAgICAqIHZlcnNpb25zIG9mIFdpbmRvd3MgcmV0dXJuIGRpZmZlcmVudCB2YWx1ZXMgZm9yIEdldExhc3RFcnJvcigpCisgICAgICAgICAgICAgKiBpbiB0aGlzIHNpdHVhdGlvbjsgaXQncyBlYXNpZXIgdG8ganVzdCBpZ25vcmUgaXQgYW5kIG1vdmUgb24gdnMuCisgICAgICAgICAgICAgKiBzdG9wcGluZyB0aGUgYnVpbGQgZm9yIHdoYXQgY291bGQgYmUgYSBmYWxzZSBwb3NpdGl2ZS4pCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIU1vZHVsZTMyRmlyc3RXKGhzbSwgJm1lKSkgeworICAgICAgICAgICAgcHJpbnRmKCJNb2R1bGUzMkZpcnN0V1syXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOworICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKF93Y3NuaWNtcChtZS5zek1vZHVsZSwgUFlUSE9OX0VYRSwgUFlUSE9OX0VYRV9MRU4pKQorICAgICAgICAgICAgICAgIC8qIFdyb25nIG1vZHVsZSwgd2UncmUgbG9va2luZyBmb3IgcHl0aG9uW19kXS5leGUuLi4gKi8KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKF93Y3NuaWNtcChwYXRoLCBtZS5zekV4ZVBhdGgsIGxlbikpCisgICAgICAgICAgICAgICAgLyogUHJvY2VzcyBkb2Vzbid0IGxpdmUgaW4gb3VyIGRpcmVjdG9yeS4gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLyogUHl0aG9uIHByb2Nlc3MgcmVzaWRpbmcgaW4gdGhlIHJpZ2h0IGRpcmVjdG9yeSwga2lsbCBpdCEgICovCisgICAgICAgICAgICBocCA9IE9wZW5Qcm9jZXNzKGRhYywgRkFMU0UsIHBlLnRoMzJQcm9jZXNzSUQpOworICAgICAgICAgICAgaWYgKCFocCkgeworICAgICAgICAgICAgICAgIHByaW50ZigiT3BlblByb2Nlc3MgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7CisgICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFUZXJtaW5hdGVQcm9jZXNzKGhwLCAxKSkgeworICAgICAgICAgICAgICAgIHByaW50ZigiVGVybWluYXRlUHJvY2VzcyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKKyAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOworICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgfSB3aGlsZSAoTW9kdWxlMzJOZXh0Vyhoc20sICZtZSkpOworCisgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7CisKKyAgICB9IHdoaWxlIChQcm9jZXNzMzJOZXh0Vyhoc3AsICZwZSkpOworCisgICAgQ2xvc2VIYW5kbGUoaHNwKTsKKworICAgIHJldHVybiAwOworfQorCisvKiB2aTogc2V0IHRzPTggc3c9NCBzdHM9NCBleHBhbmR0YWIgKi8KZGlmZiAtLWdpdCBhL1BDYnVpbGQva2lsbF9weXRob24udmNwcm9qIGIvUEMvVlM5LjAva2lsbF9weXRob24udmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL2tpbGxfcHl0aG9uLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAva2lsbF9weXRob24udmNwcm9qCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby5jIGIvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjRhNjRhCi0tLSAvZGV2L251bGwKKysrIGIvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8uYwpAQCAtMCwwICsxLDE5NSBAQAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8aW8uaD4KKworI2RlZmluZSBDTURfU0laRSA1MDAKKworLyogVGhpcyBmaWxlIGNyZWF0ZXMgdGhlIGdldGJ1aWxkaW5mby5vIG9iamVjdCwgYnkgZmlyc3QKKyAgIGludm9raW5nIHN1YndjcmV2LmV4ZSAoaWYgZm91bmQpLCBhbmQgdGhlbiBpbnZva2luZyBjbC5leGUuCisgICBBcyBhIHNpZGUgZWZmZWN0LCBpdCBtaWdodCBnZW5lcmF0ZSBQQ0J1aWxkXGdldGJ1aWxkaW5mbzIuYworICAgYWxzby4gSWYgdGhpcyBpc24ndCBhIHN1YnZlcnNpb24gY2hlY2tvdXQsIG9yIHN1YndjcmV2IGlzbid0CisgICBmb3VuZCwgaXQgY29tcGlsZXMgLi5cXC4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyBpbnN0ZWFkLgorCisgICBDdXJyZW50bHksIHN1YndjcmV2LmV4ZSBpcyBmb3VuZCBmcm9tIHRoZSByZWdpc3RyeSBlbnRyaWVzCisgICBvZiBUb3J0b2lzZVNWTi4KKworICAgTm8gYXR0ZW1wdCBpcyBtYWRlIHRvIHBsYWNlIGdldGJ1aWxkaW5mby5vIGludG8gdGhlIHByb3BlcgorICAgYmluYXJ5IGRpcmVjdG9yeS4gVGhpcyBpc24ndCBuZWNlc3NhcnksIGFzIHRoaXMgdG9vbCBpcworICAgaW52b2tlZCBhcyBhIHByZS1saW5rIHN0ZXAgZm9yIHB5dGhvbmNvcmUsIHNvIHRoYXQgb3ZlcndyaXRlcworICAgYW55IHByZXZpb3VzIGdldGJ1aWxkaW5mby5vLgorCisgICBIb3dldmVyLCBpZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcm92aWRlZCwgdGhpcyB3aWxsIGJlIHVzZWQKKyAgIGFzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aGVyZSBhbnkgZ2V0YnVpbGRpbmZvMi5jIGFuZAorICAgZ2V0YnVpbGRpbmZvLm8gZmlsZXMgYXJlIHB1dC4gIFRoaXMgaXMgdXNlZnVsIGlmIG11bHRpcGxlCisgICBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgYnVpbHQgaW4gcGFyYWxsZWwsIHRvIGF2b2lkIHRoZW0KKyAgIHRyYW1wbGluZyBlYWNoIG90aGVyJ3MgZmlsZXMuCisKKyovCisKK2ludCBtYWtlX2J1aWxkaW5mbzIoY29uc3QgY2hhciAqdG1wcGF0aCkKK3sKKyAgICBzdHJ1Y3QgX3N0YXQgc3Q7CisgICAgSEtFWSBoVG9ydG9pc2U7CisgICAgY2hhciBjb21tYW5kW0NNRF9TSVpFKzFdOworICAgIERXT1JEIHR5cGUsIHNpemU7CisgICAgaWYgKF9zdGF0KCIuc3ZuIiwgJnN0KSA8IDApCisgICAgICAgIHJldHVybiAwOworICAgIC8qIEFsbG93IHN1cHByZXNzaW9uIG9mIHN1YndjcmV2LmV4ZSBpbnZvY2F0aW9uIGlmIGEgbm9fc3Vid2NyZXYgZmlsZSBpcyBwcmVzZW50LiAqLworICAgIGlmIChfc3RhdCgibm9fc3Vid2NyZXYiLCAmc3QpID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChSZWdPcGVuS2V5KEhLRVlfTE9DQUxfTUFDSElORSwgIlNvZnR3YXJlXFxUb3J0b2lzZVNWTiIsICZoVG9ydG9pc2UpICE9IEVSUk9SX1NVQ0NFU1MgJiYKKyAgICAgICAgUmVnT3BlbktleShIS0VZX0NVUlJFTlRfVVNFUiwgIlNvZnR3YXJlXFxUb3J0b2lzZVNWTiIsICZoVG9ydG9pc2UpICE9IEVSUk9SX1NVQ0NFU1MpCisgICAgICAgIC8qIFRvcnRvaXNlIG5vdCBpbnN0YWxsZWQgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgY29tbWFuZFswXSA9ICciJzsgIC8qIHF1b3RlIHRoZSBwYXRoIHRvIHRoZSBleGVjdXRhYmxlICovCisgICAgc2l6ZSA9IHNpemVvZihjb21tYW5kKSAtIDE7CisgICAgaWYgKFJlZ1F1ZXJ5VmFsdWVFeChoVG9ydG9pc2UsICJEaXJlY3RvcnkiLCAwLCAmdHlwZSwgY29tbWFuZCsxLCAmc2l6ZSkgIT0gRVJST1JfU1VDQ0VTUyB8fAorICAgICAgICB0eXBlICE9IFJFR19TWikKKyAgICAgICAgLyogUmVnaXN0cnkgY29ycnVwdGVkICovCisgICAgICAgIHJldHVybiAwOworICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiYmluXFxzdWJ3Y3Jldi5leGUiKTsKKyAgICBpZiAoX3N0YXQoY29tbWFuZCsxLCAmc3QpIDwgMCkKKyAgICAgICAgLyogc3Vid2NyZXYuZXhlIG5vdCBwYXJ0IG9mIHRoZSByZWxlYXNlICovCisgICAgICAgIHJldHVybiAwOworICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIgLi5cXC4uIC4uXFwuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMgXCIiKTsKKyAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7IC8qIHF1b3RlZCB0bXBwYXRoICovCisgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiIpOworCisgICAgcHV0cyhjb21tYW5kKTsgZmZsdXNoKHN0ZG91dCk7CisgICAgaWYgKHN5c3RlbShjb21tYW5kKSA8IDApCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiAxOworfQorCitjb25zdCBjaGFyIERFTElNU1tdID0geyAiIFxuIiB9OworCitpbnQgZ2V0X21lcmN1cmlhbF9pbmZvKGNoYXIgKiBoZ2JyYW5jaCwgY2hhciAqIGhndGFnLCBjaGFyICogaGdyZXYsIGludCBzaXplKQoreworICAgIGludCByZXN1bHQgPSAwOworICAgIGNoYXIgZmlsZW5hbWVbQ01EX1NJWkVdOworICAgIGNoYXIgY21kbGluZVtDTURfU0laRV07CisKKyAgICBzdHJjcHlfcyhmaWxlbmFtZSwgQ01EX1NJWkUsICJ0bXBYWFhYWFgiKTsKKyAgICBpZiAoX21rdGVtcF9zKGZpbGVuYW1lLCBDTURfU0laRSkgPT0gMCkgeworICAgICAgICBpbnQgcmM7CisKKyAgICAgICAgc3RyY3B5X3MoY21kbGluZSwgQ01EX1NJWkUsICJoZyBpZCAtYml0ID4gIik7CisgICAgICAgIHN0cmNhdF9zKGNtZGxpbmUsIENNRF9TSVpFLCBmaWxlbmFtZSk7CisgICAgICAgIHJjID0gc3lzdGVtKGNtZGxpbmUpOworICAgICAgICBpZiAocmMgPT0gMCkgeworICAgICAgICAgICAgRklMRSAqIGZwOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZm9wZW5fcygmZnAsIGZpbGVuYW1lLCAiciIpID09IDApIHsKKyAgICAgICAgICAgICAgICBjaGFyICogY3AgPSBmZ2V0cyhjbWRsaW5lLCBDTURfU0laRSwgZnApOworCisgICAgICAgICAgICAgICAgaWYgKGNwKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgKiBjb250ZXh0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAqIHRwID0gc3RydG9rX3MoY3AsIERFTElNUywgJmNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhncmV2LCBzaXplLCB0cCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGdicmFuY2gsIHNpemUsIHRwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3RhZywgc2l6ZSwgdHApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmY2xvc2UoZnApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIF91bmxpbmsoZmlsZW5hbWUpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciphcmd2W10pCit7CisgICAgY2hhciBjb21tYW5kW0NNRF9TSVpFXSA9ICJjbC5leGUgLWMgLURfV0lOMzIgLURVU0VfRExfRVhQT1JUIC1EX1dJTkRPV1MgLURXSU4zMiAtRF9XSU5ETEwgIjsKKyAgICBjaGFyIHRtcHBhdGhbQ01EX1NJWkVdID0gIiI7CisgICAgaW50IGRvX3VubGluaywgcmVzdWx0OworICAgIGNoYXIgKnRtcGRpciA9IE5VTEw7CisgICAgaWYgKGFyZ2MgPD0gMiB8fCBhcmdjID4gMykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm1ha2VfYnVpbGRpbmZvICQoQ29uZmlndXJhdGlvbk5hbWUpIFt0bXBkaXJdXG4iKTsKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZSIpID09IDApIHsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgIik7CisgICAgfQorICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiRGVidWciKSA9PSAwKSB7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLURfREVCVUcgLU1EZCAiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlSXRhbml1bSIpID09IDApIHsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX0lUQU5JVU0gIik7CisgICAgfQorICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZUFNRDY0IikgPT0gMCkgeworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAiKTsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX09QVEVST04gIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gJXNcbiIsIGFyZ3ZbMV0pOworICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0KKyAgICBpZiAoYXJnYyA+IDIpIHsKKyAgICAgICAgdG1wZGlyID0gYXJndlsyXTsKKyAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksIHRtcGRpcik7CisgICAgICAgIC8qIEhhY2sgZml4IGZvciBiYWQgY29tbWFuZCBsaW5lOiAgSWYgdGhlIGNvbW1hbmQgaXMgaXNzdWVkIGxpa2UgdGhpczoKKyAgICAgICAgICogJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcikiCisgICAgICAgICAqIHdlIHdpbGwgZ2V0IGEgdHJhaWxpbmcgcXVvdGUgYmVjYXVzZSBJbnREaXIgZW5kcyB3aXRoIGEgYmFja3NsYXNoIHRoYXQgdGhlbgorICAgICAgICAgKiBlc2NhcGVzIHRoZSBmaW5hbCAiLiAgVG8gc2ltcGxpZnkgdGhlIGxpZmUgZm9yIGRldmVsb3BlcnMsIGNhdGNoIHRoYXQgcHJvYmxlbQorICAgICAgICAgKiBoZXJlIGJ5IGN1dHRpbmcgaXQgb2ZmLgorICAgICAgICAgKiBUaGUgcHJvcGVyIGNvbW1hbmQgbGluZSwgYnR3IGlzOgorICAgICAgICAgKiAkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKVwiCisgICAgICAgICAqIEhvb3JheSBmb3IgY29tbWFuZCBsaW5lIHBhcnNpbmcgb24gd2luZG93cy4KKyAgICAgICAgICovCisgICAgICAgIGlmIChzdHJsZW4odG1wcGF0aCkgPiAwICYmIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID09ICciJykKKyAgICAgICAgICAgIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID0gJ1wwJzsKKyAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksICJcXCIpOworICAgIH0KKworICAgIGlmICgoZG9fdW5saW5rID0gbWFrZV9idWlsZGluZm8yKHRtcHBhdGgpKSkgeworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIik7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiAtRFNVQldDUkVWICIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgY2hhciBoZ3RhZ1tDTURfU0laRV07CisgICAgICAgIGNoYXIgaGdicmFuY2hbQ01EX1NJWkVdOworICAgICAgICBjaGFyIGhncmV2W0NNRF9TSVpFXTsKKworICAgICAgICBpZiAoZ2V0X21lcmN1cmlhbF9pbmZvKGhnYnJhbmNoLCBoZ3RhZywgaGdyZXYsIENNRF9TSVpFKSkgeworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItREhHQlJBTkNIPVxcXCIiKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ2JyYW5jaCk7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIiKTsKKworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLURIR1RBRz1cXFwiIik7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGd0YWcpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiIik7CisKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1ESEdWRVJTSU9OPVxcXCIiKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ3Jldik7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIgIik7CisgICAgICAgIH0KKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIik7CisgICAgfQorICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1Gb1wiIik7CisgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOworICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvLm9cIiAtSS4uXFwuLlxcSW5jbHVkZSAtSS4uXFwuLlxcUEMiKTsKKyAgICBwdXRzKGNvbW1hbmQpOyBmZmx1c2goc3Rkb3V0KTsKKyAgICByZXN1bHQgPSBzeXN0ZW0oY29tbWFuZCk7CisgICAgaWYgKGRvX3VubGluaykgeworICAgICAgICBjb21tYW5kWzBdID0gJ1wwJzsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcIiIpOworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIiKTsKKyAgICAgICAgX3VubGluayhjb21tYW5kKTsKKyAgICB9CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjcHJvaiBiL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvbWFrZV9idWlsZGluZm8udmNwcm9qCmluZGV4IDE5MTBiOWUuLjkyNDA2NWQgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmNwcm9qCisrKyBiL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IndpbmRvd3MtMTI1MCI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJtYWtlX2J1aWxkaW5mbyINCiAJUHJvamVjdEdVSUQ9IntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KIAlSb290TmFtZXNwYWNlPSJtYWtlX2J1aWxkaW5mbyINCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmNwcm9qIGIvUEMvVlM5LjAvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2oKaW5kZXggODgxZjQ0Yi4uMGExZmQyOCAxMDA2NDQKLS0tIGEvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagorKysgYi9QQy9WUzkuMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJtYWtlX3ZlcnNpb25pbmZvIg0KIAlQcm9qZWN0R1VJRD0ie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQogCVJvb3ROYW1lc3BhY2U9Im1ha2VfdmVyc2lvbmluZm8iDQpAQCAtMzIsOCArMzIsOCBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQogCQkJCURlc2NyaXB0aW9uPSJCdWlsZCBQQy9weXRob25udF9yYyhfZCkuaCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yYy5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjLmgiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCisJCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCkBAIC05Miw3ICs5Miw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbl9udC5oJiN4MEQ7JiN4MEE7Ig0KKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udC5oJiN4MEQ7JiN4MEE7Ig0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQogCQk8Q29uZmlndXJhdGlvbg0KQEAgLTEwNiw4ICsxMDYsOCBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQogCQkJCURlc2NyaXB0aW9uPSJCdWlsZCBQQy9weXRob25udF9yYyhfZCkuaCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yYy5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjLmgiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCisJCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCkBAIC0xNTgsNyArMTU4LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJCTxDb25maWd1cmF0aW9uDQpAQCAtMTc1LDggKzE3NSw4IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCiAJCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjX2QuaCINCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCYjeDBEOyYjeDBBOyINCisJCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yY19kLmgiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KQEAgLTIzNSw3ICsyMzUsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbl9udF9kLmgmI3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnRfZC5oJiN4MEQ7JiN4MEE7Ig0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQogCQk8Q29uZmlndXJhdGlvbg0KQEAgLTI0OSw4ICsyNDksOCBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQogCQkJCURlc2NyaXB0aW9uPSJCdWlsZCBQQy9weXRob25udF9yYyhfZCkuaCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjX2QuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yY19kLmgiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQorCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCkBAIC0zMDMsNyArMzAzLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25fbnRfZC5oJiN4MEQ7JiN4MEE7Ig0KKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAk8L0NvbmZpZ3VyYXRpb25zPg0KQEAgLTMxNCw3ICszMTQsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9wY2J1aWxkLnNsbiBiL1BDL1ZTOS4wL3BjYnVpbGQuc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmOGNiYjYKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9WUzkuMC9wY2J1aWxkLnNsbgpAQCAtMCwwICsxLDY1OCBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTAuMDANCisjIFZpc3VhbCBTdHVkaW8gMjAwOA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uIiwgInB5dGhvbi52Y3Byb2oiLCAie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9ID0ge0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX3ZlcnNpb25pbmZvIiwgIm1ha2VfdmVyc2lvbmluZm8udmNwcm9qIiwgIntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbmNvcmUiLCAicHl0aG9uY29yZS52Y3Byb2oiLCAie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9ID0ge0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0NCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9ID0ge0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob253IiwgInB5dGhvbncudmNwcm9qIiwgIntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmNwcm9qIiwgIntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmNwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7MjE1MEUzMzMtOEZEQy00MkEzLTk0NzQtMUEzOTU2RDQ2REU4fSIpID0gIlNvbHV0aW9uIEl0ZW1zIiwgIlNvbHV0aW9uIEl0ZW1zIiwgIns1NTNFQzMzRS05ODE2LTQ5OTYtQTY2MC01RDYxODZBMEIwQjN9Ig0KKwlQcm9qZWN0U2VjdGlvbihTb2x1dGlvbkl0ZW1zKSA9IHByZVByb2plY3QNCisJCS4uXC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMgPSAuLlwuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jDQorCQlyZWFkbWUudHh0ID0gcmVhZG1lLnR4dA0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbnNvdW5kIiwgIndpbnNvdW5kLnZjcHJvaiIsICJ7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9kZWNpbWFsIiwgIl9kZWNpbWFsLnZjcHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXMiLCAiX2N0eXBlcy52Y3Byb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzX3Rlc3QiLCAiX2N0eXBlc190ZXN0LnZjcHJvaiIsICJ7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9lbGVtZW50dHJlZSIsICJfZWxlbWVudHRyZWUudmNwcm9qIiwgInsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX21zaSIsICJfbXNpLnZjcHJvaiIsICJ7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zb2NrZXQiLCAiX3NvY2tldC52Y3Byb2oiLCAiezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3FsaXRlMyIsICJfc3FsaXRlMy52Y3Byb2oiLCAiezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9ID0ge0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3NsIiwgIl9zc2wudmNwcm9qIiwgIntDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSA9IHs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSA9IHtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RjYXBpIiwgIl90ZXN0Y2FwaS52Y3Byb2oiLCAiezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGtpbnRlciIsICJfdGtpbnRlci52Y3Byb2oiLCAiezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfYnoyIiwgIl9iejIudmNwcm9qIiwgIns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2x6bWEiLCAiX2x6bWEudmNwcm9qIiwgIntGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2VsZWN0IiwgInNlbGVjdC52Y3Byb2oiLCAiezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ1bmljb2RlZGF0YSIsICJ1bmljb2RlZGF0YS52Y3Byb2oiLCAie0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweWV4cGF0IiwgInB5ZXhwYXQudmNwcm9qIiwgIntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYmRpc3Rfd2luaW5zdCIsICJiZGlzdF93aW5pbnN0LnZjcHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfaGFzaGxpYiIsICJfaGFzaGxpYi52Y3Byb2oiLCAiezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9ID0ge0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0NCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzcWxpdGUzIiwgInNxbGl0ZTMudmNwcm9qIiwgIntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX211bHRpcHJvY2Vzc2luZyIsICJfbXVsdGlwcm9jZXNzaW5nLnZjcHJvaiIsICJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbCIsICJzc2wudmNwcm9qIiwgIntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAia2lsbF9weXRob24iLCAia2lsbF9weXRob24udmNwcm9qIiwgIns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbjNkbGwiLCAicHl0aG9uM2RsbC52Y3Byb2oiLCAiezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieHhsaW1pdGVkIiwgInh4bGltaXRlZC52Y3Byb2oiLCAie0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RidWZmZXIiLCAiX3Rlc3RidWZmZXIudmNwcm9qIiwgIntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK0dsb2JhbA0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KKwkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0DQorCQlQR0luc3RydW1lbnR8V2luMzIgPSBQR0luc3RydW1lbnR8V2luMzINCisJCVBHSW5zdHJ1bWVudHx4NjQgPSBQR0luc3RydW1lbnR8eDY0DQorCQlQR1VwZGF0ZXxXaW4zMiA9IFBHVXBkYXRlfFdpbjMyDQorCQlQR1VwZGF0ZXx4NjQgPSBQR1VwZGF0ZXx4NjQNCisJCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQorCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0DQorCUVuZEdsb2JhbFNlY3Rpb24NCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwlFbmRHbG9iYWxTZWN0aW9uDQorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCisJRW5kR2xvYmFsU2VjdGlvbg0KK0VuZEdsb2JhbA0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGdpbnN0cnVtZW50LnZzcHJvcHMgYi9QQy9WUzkuMC9wZ2luc3RydW1lbnQudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9wZ2luc3RydW1lbnQudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAvcGdpbnN0cnVtZW50LnZzcHJvcHMKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGd1cGRhdGUudnNwcm9wcyBiL1BDL1ZTOS4wL3BndXBkYXRlLnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvcGd1cGRhdGUudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAvcGd1cGRhdGUudnNwcm9wcwpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWQudnNwcm9wcyBiL1BDL1ZTOS4wL3B5ZC52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3B5ZC52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9weWQudnNwcm9wcwpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWRfZC52c3Byb3BzIGIvUEMvVlM5LjAvcHlkX2QudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9weWRfZC52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9weWRfZC52c3Byb3BzCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZXhwYXQudmNwcm9qIGIvUEMvVlM5LjAvcHlleHBhdC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gUENidWlsZC9weWV4cGF0LnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvcHlleHBhdC52Y3Byb2oKaW5kZXggNWEyMGE1MS4uYThkMmNkNyAxMDA2NDQKLS0tIGEvUENidWlsZC9weWV4cGF0LnZjcHJvagorKysgYi9QQy9WUzkuMC9weWV4cGF0LnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJweWV4cGF0Ig0KIAlQcm9qZWN0R1VJRD0ie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQogCVJvb3ROYW1lc3BhY2U9InB5ZXhwYXQiDQpAQCAtNDIsNyArNDIsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMTAzLDcgKzEwMyw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0xNjQsNyArMTY0LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTIyNiw3ICsyMjYsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMjg3LDcgKzI4Nyw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0zNDksNyArMzQ5LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTQxMSw3ICs0MTEsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtNDczLDcgKzQ3Myw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC01MTksMTEgKzUxOSwxMSBAQAogCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTMxLDE5ICs1MzEsMTkgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHB5ZXhwYXQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5ZXhwYXQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlwcm9qZWN0LnZzcHJvcHMgYi9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDg1JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3B5cHJvamVjdC52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9weXByb2plY3QudnNwcm9wcwppbmRleCA2YTk0YTY4Li4wMWM3Y2E3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5cHJvamVjdC52c3Byb3BzCisrKyBiL1BDL1ZTOS4wL3B5cHJvamVjdC52c3Byb3BzCkBAIC0xMSw3ICsxMSw3IEBACiAJCU9wdGltaXphdGlvbj0iMiINCiAJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KIAkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIg0KLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZTsgLi5cUEMiDQorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOyAuLlwuLlxQQyINCiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lOMzIiDQogCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KIAkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiDQpAQCAtMzQsMTEgKzM0LDExIEBACiAJLz4NCiAJPFRvb2wNCiAJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQQzsuLlxJbmNsdWRlIg0KKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cSW5jbHVkZSINCiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0iUHlEbGxOYW1lIg0KLQkJVmFsdWU9InB5dGhvbjMyIg0KKwkJVmFsdWU9InB5dGhvbjMzIg0KIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJQeXRob25FeGUiDQpAQCAtNDYsMTkgKzQ2LDIzIEBACiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0iZXh0ZXJuYWxzRGlyIg0KLQkJVmFsdWU9Ii4uXC4uIg0KKwkJVmFsdWU9Ii4uXC4uXC4uIg0KIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJzcWxpdGUzRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy43LjQiDQorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHNxbGl0ZS0zLjcuMTIiDQogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9ImJ6MkRpciINCiAJCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcYnppcDItMS4wLjYiDQogCS8+DQogCTxVc2VyTWFjcm8NCisJCU5hbWU9Imx6bWFEaXIiDQorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHh6LTUuMC4zIg0KKwkvPg0KKwk8VXNlck1hY3JvDQogCQlOYW1lPSJvcGVuc3NsRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxvcGVuc3NsLTEuMC4waiINCisJCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMWMiDQogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9InRjbHRrRGlyIg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbi52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gUENidWlsZC9weXRob24udmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9weXRob24udmNwcm9qCmluZGV4IDQ3YjI4OWUuLmIwN2RlMjEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uLnZjcHJvagorKysgYi9QQy9WUzkuMC9weXRob24udmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InB5dGhvbiINCiAJUHJvamVjdEdVSUQ9IntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9Ig0KIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQpAQCAtMjAyLDcgKzIwMiw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC0yNzcsNyArMjc3LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KIAkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTYxNSwxMSArNjE1LDExIEBACiAJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xweWNvbi5pY28iDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHljb24uaWNvIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENccHl0aG9uX2V4ZS5yYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNjI3LDcgKzYyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xweXRob24uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5dGhvbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24zZGxsLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbjNkbGwudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggNjklCnJlbmFtZSBmcm9tIFBDYnVpbGQvcHl0aG9uM2RsbC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3B5dGhvbjNkbGwudmNwcm9qCmluZGV4IDUyYzY3NTIuLmVkNzMzM2IgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvcHl0aG9uM2RsbC52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0icHl0aG9uM2RsbCINCiAJUHJvamVjdEdVSUQ9Ins4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9Ig0KIAlSb290TmFtZXNwYWNlPSJweXRob24zZGxsIg0KQEAgLTI3LDkgKzI3LDkgQEAKIAkJCT4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQorCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCisJCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KIAkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCiAJCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCkBAIC00Niw5ICs0Niw5IEBACiAJCQk+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KKwkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQorCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQorCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCiAJCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQogCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQpAQCAtNjUsOSArNjUsOSBAQAogCQkJPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCisJCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KKwkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KKwkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQogCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KIAkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KQEAgLTg0LDkgKzg0LDkgQEAKIAkJCT4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQorCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSINCisJCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KIAkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCiAJCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCkBAIC0xMDMsOSArMTAzLDkgQEAKIAkJCT4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQorCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCisJCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KIAkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCiAJCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCkBAIC0xMjIsOSArMTIyLDkgQEAKIAkJCT4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQorCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSINCisJCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KIAkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCiAJCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCkBAIC0xNDQsNyArMTQ0LDcgQEAKIAkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ig0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHB5dGhvbjMuZGVmIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbjMuZGVmIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCkBAIC0xNzIsNyArMTcyLDcgQEAKIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHB5dGhvbjNkbGwuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob24zZGxsLmMiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KQEAgLTIxMiw3ICsyMTIsNyBAQAogCQkJVW5pcXVlSWRlbnRpZmllcj0iezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX0iDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENccHl0aG9uX250LnJjIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9udC5yYyINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggNjElCnJlbmFtZSBmcm9tIFBDYnVpbGQvcHl0aG9uY29yZS52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCmluZGV4IDVlNjEzMDguLjlmYjYzZmYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvcHl0aG9uY29yZS52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0icHl0aG9uY29yZSINCiAJUHJvamVjdEdVSUQ9IntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9Ig0KIAlSb290TmFtZXNwYWNlPSJweXRob25jb3JlIg0KQEAgLTQzLDcgKzQzLDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQeXRob247Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KIAkJCS8+DQpAQCAtNTQsNyArNTQsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtMTE4LDcgKzExOCw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMiINCiAJCQkvPg0KQEAgLTEyOSw3ICsxMjksNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtMTk2LDcgKzE5Niw3IEBACiAJCQkJT3B0aW1pemF0aW9uPSIwIg0KIAkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCINCiAJCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMyINCiAJCQkvPg0KQEAgLTIwNyw3ICsyMDcsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtMjc0LDcgKzI3NCw3IEBACiAJCQkJT3B0aW1pemF0aW9uPSIwIg0KIAkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCINCiAJCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMyINCiAJCQkvPg0KQEAgLTI4NSw3ICsyODUsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtMzQ4LDcgKzM0OCw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMiINCiAJCQkvPg0KQEAgLTM1OSw3ICszNTksNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtNDIzLDcgKzQyMyw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMiINCiAJCQkvPg0KQEAgLTQzNCw3ICs0MzQsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtNDk4LDcgKzQ5OCw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMiINCiAJCQkvPg0KQEAgLTUwOSw3ICs1MDksNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtNTczLDcgKzU3Myw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMiINCiAJCQkvPg0KQEAgLTU4NCw3ICs1ODQsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtNjMxLDM1OSArNjMxLDM2MyBAQAogCQkJTmFtZT0iSW5jbHVkZSINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGFic3RyYWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhYnN0cmFjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxhY2N1LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhY2N1LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGFzZGwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFzZGwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYXN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhc3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYml0c2V0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxiaXRzZXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYm9vbG9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYm9vbG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxieXRlc19tZXRob2RzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlc19tZXRob2RzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGJ5dGVhcnJheW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYnl0ZWFycmF5b2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGJ5dGVzb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlc29iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxjZWxsb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjZWxsb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGNldmFsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjZXZhbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxjbGFzc29iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY2xhc3NvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcY29kZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29kZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxjb2RlY3MuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvZGVjcy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxjb21waWxlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb21waWxlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGNvbXBsZXhvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvbXBsZXhvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZGF0ZXRpbWUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGRhdGV0aW1lLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGRlc2Nyb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkZXNjcm9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxkaWN0b2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkaWN0b2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGR5bmFtaWNfYW5ub3RhdGlvbnMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGR5bmFtaWNfYW5ub3RhdGlvbnMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZW51bW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZW51bW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxlcnJjb2RlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxlcnJjb2RlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGV2YWwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGV2YWwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZmlsZW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmlsZW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxmaWxldXRpbHMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZpbGV1dGlscy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxmbG9hdG9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmxvYXRvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZm9ybWF0dGVyX3VuaWNvZGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZyYW1lb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGZyYW1lb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmdW5jb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGZ1bmNvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGdlbm9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxnZW5vYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGdyYW1pbml0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGdyYW1pbml0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxncmFtbWFyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGdyYW1tYXIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGltcG9ydC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxpbXBvcnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGludHJjaGVjay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxpbnRyY2hlY2suaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGl0ZXJvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcaXRlcm9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbGlzdG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxsaXN0b2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsb25naW50cmVwci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxsb25naW50cmVwci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbG9uZ29iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxsb25nb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtYXJzaGFsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG1hcnNoYWwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1lbW9yeW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxtZW1vcnlvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1ldGFncmFtbWFyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG1ldGFncmFtbWFyLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtZXRob2RvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcbWV0aG9kb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtb2RzdXBwb3J0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1vZHVsZW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxtb2R1bGVvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG5hbWVzcGFjZW9iamVjdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxub2RlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG5vZGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9iamltcGwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcb2JqaW1wbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb3Bjb2RlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG9wY29kZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb3NkZWZzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG9zZGVmcy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGFyc2V0b2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGdlbi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxwZ2VuLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwZ2VuaGVhZGVycy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxwZ2VuaGVhZGVycy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlfY3Vyc2VzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5X2N1cnNlcy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlhcmVuYS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweWFyZW5hLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWNhcHN1bGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHljYXBzdWxlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWN0eXBlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5Y3R5cGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZGVidWcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlkZWJ1Zy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHllcnJvcnMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHllcnJvcnMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZXhwYXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlleHBhdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlmcGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlmcGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5Z2V0b3B0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5Z2V0b3B0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hY3Rvb2xib3guaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHltYWN0b29sYm94LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hdGguaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHltYXRoLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRpbWUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHl0aW1lLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hY3JvLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5bWVtLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1lbS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweXBvcnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5cG9ydC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweXN0YXRlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0YXRlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5c3RyY21wLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0cmNtcC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweXN0cnRvZC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlzdHJ0b2QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZHRvYS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZHRvYS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxQeXRob24tYXN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxQeXRob24tYXN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXFB5dGhvbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcUHl0aG9uLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5dGhvbnJ1bi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHl0aG9ucnVuLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5dGhyZWFkLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRocmVhZC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxyYW5nZW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccmFuZ2VvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcc2V0b2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzZXRvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcc2xpY2VvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHNsaWNlb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHN0cnVjdG1lbWJlci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3RydWN0bWVtYmVyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHN0cnVjdHNlcS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3RydWN0c2VxLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHN5bXRhYmxlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzeW10YWJsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxzeXNtb2R1bGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN5c21vZHVsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVx0aW1lZnVuY3MuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHRpbWVmdW5jcy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVx0b2tlbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdG9rZW4uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcdHJhY2ViYWNrLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0cmFjZWJhY2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcdHVwbGVvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHR1cGxlb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHVjbmhhc2guaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHVjbmhhc2guaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcdW5pY29kZW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdW5pY29kZW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVx3ZWFrcmVmb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx3ZWFrcmVmb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC05OTEsMjIyICs5OTUsMjIyIEBACiAJCQlOYW1lPSJNb2R1bGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jb2xsZWN0aW9uc21vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jc3YuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jc3YuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2Z1bmN0b29sc21vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Z1bmN0b29sc21vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaGVhcHFtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oZWFwcW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfanNvbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2pzb24uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2xvY2FsZW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2xvY2FsZW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbHNwcm9mLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbHNwcm9mLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tYXRoLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbWF0aC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbWF0aC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX21hdGguaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3BpY2tsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3BpY2tsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcmUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcmUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3N0cnVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3N0cnVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfdGltZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3dlYWtyZWYuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3RpbWUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93aW5hcGkuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3dlYWtyZWYuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGFycmF5bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGFycmF5bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xhdGV4aXRtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcYXRleGl0bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xhdWRpb29wLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGF1ZGlvb3AuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGJpbmFzY2lpLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGJpbmFzY2lpLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjbWF0aG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjbWF0aG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RhdGV0aW1lbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9kYXRldGltZW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXJybm9tb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXJybm9tb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGZhdWx0aGFuZGxlci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xnY21vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZ2Ntb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcaXRlcnRvb2xzbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xpdGVydG9vbHNtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbWFpbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWFpbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xtYXRobW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtYXRobW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG1kNW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcb3BlcmF0b3IuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG9wZXJhdG9yLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHBhcnNlcm1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccGFyc2VybW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xwb3NpeG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzaGExbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGExbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhMjU2bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNoYTUxMm1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhNTEybW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2lnbmFsbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHN5bXRhYmxlbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzeW10YWJsZW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfdGhyZWFkbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGhyZWFkbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHRpbWVtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHRpbWVtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNceHhzdWJ0eXBlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x4eHN1YnR5cGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemlwaW1wb3J0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6aXBpbXBvcnQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYm1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYm1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0iX2lvIg0KIAkJCQk+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXGZpbGVpby5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xmaWxlaW8uYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGJ5dGVzaW8uYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9pb1xzdHJpbmdpby5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xzdHJpbmdpby5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXGlvYmFzZS5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xpb2Jhc2UuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCTwvRmlsdGVyPg0KQEAgLTEyMTQsMzEgKzEyMTgsMzEgQEAKIAkJCQlOYW1lPSJ6bGliIg0KIAkJCQk+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGNvbXByZXNzLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxnemlvLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxnemlvLmMiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KQEAgLTEzMDYsNjcgKzEzMTAsNjcgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mYmFjay5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mYmFjay5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mZml4ZWQuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZpeGVkLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHRyZWVzLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx0cmVlcy5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx0cmVlcy5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdHJlZXMuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcdW5jb21wci5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdW5jb21wci5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx6Y29uZi5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemNvbmYuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcemNvbmYuaW4uaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpjb25mLmluLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHpsaWIuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpsaWIuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJPC9GaWx0ZXI+DQpAQCAtMTM3NCw3MSArMTM3OCw3MSBAQAogCQkJCU5hbWU9ImNqa2NvZGVjcyINCiAJCQkJPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2NuLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfY24uYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2hrLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaGsuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2lzbzIwMjIuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19pc28yMDIyLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19qcC5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2pwLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19rci5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2tyLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc190dy5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX3R3LmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcYWxnX2ppc3gwMjAxLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXGFsZ19qaXN4MDIwMS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGNqa2NvZGVjcy5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xjamtjb2RlY3MuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xlbXVfamlzeDAyMTNfMjAwMC5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xlbXVfamlzeDAyMTNfMjAwMC5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2NuLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2NuLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfaGsuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfaGsuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qaXN4MDIxM19wYWlyLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2ppc3gwMjEzX3BhaXIuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qcC5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qcC5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2tyLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2tyLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfdHcuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfdHcuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQk8L0ZpbHRlcj4NCkBAIC0xNDQ3LDE3NSArMTQ1MSwxNzkgQEAKIAkJCU5hbWU9Ik9iamVjdHMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xhYnN0cmFjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYWJzdHJhY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcYWNjdS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYWNjdS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xib29sb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xib29sb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGJ5dGVzX21ldGhvZHMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVzX21ldGhvZHMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcYnl0ZWFycmF5b2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xieXRlYXJyYXlvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcYnl0ZXNvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVzb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGNhcHN1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNhcHN1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcY2VsbG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2VsbG9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xjbGFzc29iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2xhc3NvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcY29kZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY29kZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xjb21wbGV4b2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb21wbGV4b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxjb3VudC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXGNvdW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGRlc2Nyb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xkaWN0b2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkaWN0b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGVudW1vYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGVudW1vYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZXhjZXB0aW9ucy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZXhjZXB0aW9ucy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmFzdHNlYXJjaC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXGZhc3RzZWFyY2guaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZmlsZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmlsZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmluZC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXGZpbmQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZmxvYXRvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZsb2F0b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGZyYW1lb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmcmFtZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xmdW5jb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmdW5jb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGdlbm9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGl0ZXJvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGl0ZXJvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcbGlzdG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbGlzdG9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xsb25nb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xsb25nb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXG1lbW9yeW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbWVtb3J5b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXG1ldGhvZG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbWV0aG9kb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXG1vZHVsZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbW9kdWxlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbmFtZXNwYWNlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXG9ibWFsbG9jLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHBhcnRpdGlvbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcb2JtYWxsb2MuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNccmFuZ2VvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxwYXJ0aXRpb24uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcc2V0b2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xzbGljZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc2V0b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxzcGxpdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc2xpY2VvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcc3RydWN0c2VxLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcc3BsaXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcdHVwbGVvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cnVjdHNlcS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1x0eXBlb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0dXBsZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1x1bmljb2RlY3R5cGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHR5cGVvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcdW5pY29kZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZWN0eXBlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2Rlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHdlYWtyZWZvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHdlYWtyZWZvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTE2MjMsNTkgKzE2MzEsNTkgQEAKIAkJCU5hbWU9IlBhcnNlciINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcYWNjZWxlci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxhY2NlbGVyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcYml0c2V0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGJpdHNldC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXGZpcnN0c2V0cy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxmaXJzdHNldHMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxncmFtbWFyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGdyYW1tYXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxncmFtbWFyMS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxncmFtbWFyMS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXGxpc3Rub2RlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGxpc3Rub2RlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxteXJlYWRsaW5lLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG15cmVhZGxpbmUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxub2RlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG5vZGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxwYXJzZXIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJccGFyc2VyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJccGFyc2VyLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNlci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXHBhcnNldG9rLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNldG9rLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcdG9rZW5pemVyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHRva2VuaXplci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXHRva2VuaXplci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclx0b2tlbml6ZXIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTE2ODMsMzkgKzE2OTEsMzEgQEAKIAkJCU5hbWU9IlBDIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXF9zdWJwcm9jZXNzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcd2lucmVnLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1x3aW5yZWcuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xjb25maWcuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGNvbmZpZy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGRsX250LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xkbF9udC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGVycm1hcC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcZXJybWFwLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZ2V0cGF0aHAuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGdldHBhdGhwLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbXN2Y3J0bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xpbXBvcnRfbnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXG1zdmNydG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENccHljb25maWcuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbmZpZy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtMTcyMywxOTEgKzE3MjMsMTkxIEBACiAJCQlOYW1lPSJQeXRob24iDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXF93YXJuaW5ncy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxfd2FybmluZ3MuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxhc2RsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzZGwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxhc3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYXN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cYmx0aW5tb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYmx0aW5tb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxjZXZhbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjZXZhbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGNvZGVjcy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb2RlY3MuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxjb21waWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGNvbXBpbGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR5bmFtaWNfYW5ub3RhdGlvbnMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxkeW5sb2FkX3dpbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxkeW5sb2FkX3dpbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGVycm9ycy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxlcnJvcnMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxmaWxldXRpbHMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZmlsZXV0aWxzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxmcm96ZW4uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZnJvemVuLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZnV0dXJlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZ1dHVyZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdldGFyZ3MuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0YXJncy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdldGNvbXBpbGVyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGNvbXBpbGVyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZ2V0Y29weXJpZ2h0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGNvcHlyaWdodC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdldG9wdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRvcHQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxnZXRwbGF0Zm9ybS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRwbGF0Zm9ybS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdldHZlcnNpb24uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0dmVyc2lvbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdyYW1pbml0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdyYW1pbml0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25caW1wb3J0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGltcG9ydGRsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydGRsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25caW1wb3J0ZGwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxtYXJzaGFsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1hcnNoYWwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxtb2RzdXBwb3J0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1vZHN1cHBvcnQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxteXNucHJpbnRmLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG15c25wcmludGYuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxteXN0cnRvdWwuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbXlzdHJ0b3VsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccGVlcGhvbGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccGVlcGhvbGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweWFyZW5hLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5YXJlbmEuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweWN0eXBlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5Y3R5cGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweWZwZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWZwZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHB5bWF0aC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweW1hdGguYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweXRpbWUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHl0aW1lLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccHlzdGF0ZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0YXRlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccHlzdHJjbXAuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdHJjbXAuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweXN0cnRvZC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0cnRvZC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGR0b2EuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHRvYS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cUHl0aG9uLWFzdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHB5dGhvbnJ1bi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXRob25ydW4uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAgCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccmFuZG9tLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHJhbmRvbS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHN0cnVjdG1lbWJlci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzdHJ1Y3RtZW1iZXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxzeW10YWJsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzeW10YWJsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHN5c21vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzeXNtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblx0aHJlYWQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cdGhyZWFkX250LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHRocmVhZF9udC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHRyYWNlYmFjay5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0cmFjZWJhY2suYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTE5MTUsNyArMTkxNSw3IEBACiAJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xweXRob25fbnQucmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX250LnJjIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob253LnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbncudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvcHl0aG9udy52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3B5dGhvbncudmNwcm9qCmluZGV4IDdhZTU2MmEuLjdmNWMwNGIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9udy52Y3Byb2oKKysrIGIvUEMvVlM5LjAvcHl0aG9udy52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0icHl0aG9udyINCiAJUHJvamVjdEdVSUQ9IntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQpAQCAtNjAwLDcgKzYwMCw3IEBACiAJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xweXRob25fZXhlLnJjIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9leGUucmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC02MDgsNyArNjA4LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xXaW5NYWluLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcV2luTWFpbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWxlYXNlLnZzcHJvcHMgYi9QQy9WUzkuMC9yZWxlYXNlLnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvcmVsZWFzZS52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9yZWxlYXNlLnZzcHJvcHMKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc2VsZWN0LnZjcHJvaiBiL1BDL1ZTOS4wL3NlbGVjdC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9zZWxlY3QudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9zZWxlY3QudmNwcm9qCmluZGV4IDAyZTBhMmYuLjYzN2ZkOTcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvc2VsZWN0LnZjcHJvagorKysgYi9QQy9WUzkuMC9zZWxlY3QudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InNlbGVjdCINCiAJUHJvamVjdEdVSUQ9InsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9Ig0KIAlSb290TmFtZXNwYWNlPSJzZWxlY3QiDQpAQCAtNTI3LDcgKzUyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnZjcHJvaiBiL1BDL1ZTOS4wL3NxbGl0ZTMudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIFBDYnVpbGQvc3FsaXRlMy52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3NxbGl0ZTMudmNwcm9qCmluZGV4IGUxNzcxZjQuLmVmOGMzMjggMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvc3FsaXRlMy52Y3Byb2oKKysrIGIvUEMvVlM5LjAvc3FsaXRlMy52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0ic3FsaXRlMyINCiAJUHJvamVjdEdVSUQ9IntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KIAlSb290TmFtZXNwYWNlPSJzcWxpdGUzIg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52c3Byb3BzIGIvUEMvVlM5LjAvc3FsaXRlMy52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3NxbGl0ZTMudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAvc3FsaXRlMy52c3Byb3BzCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NzbC52Y3Byb2ogYi9QQy9WUzkuMC9zc2wudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIFBDYnVpbGQvc3NsLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvc3NsLnZjcHJvagppbmRleCBlYzJiZTMwLi5kMzBlODc3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3NzbC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvc3NsLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJzc2wiDQogCVByb2plY3RHVUlEPSJ7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSINCiAJUm9vdE5hbWVzcGFjZT0ic3NsIg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvdW5pY29kZWRhdGEudmNwcm9qIGIvUEMvVlM5LjAvdW5pY29kZWRhdGEudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIFBDYnVpbGQvdW5pY29kZWRhdGEudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC91bmljb2RlZGF0YS52Y3Byb2oKaW5kZXggNTk2ODJhMS4uYjY2ZmY3MiAxMDA2NDQKLS0tIGEvUENidWlsZC91bmljb2RlZGF0YS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvdW5pY29kZWRhdGEudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InVuaWNvZGVkYXRhIg0KIAlQcm9qZWN0R1VJRD0ie0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0iDQogCVJvb3ROYW1lc3BhY2U9InVuaWNvZGVkYXRhIg0KQEAgLTUxMSwxMSArNTExLDExIEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YV9kYi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcdW5pY29kZW5hbWVfZGIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC01MjMsNyArNTIzLDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlZGF0YS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC93OXhwb3Blbi52Y3Byb2ogYi9QQy9WUzkuMC93OXhwb3Blbi52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gUENidWlsZC93OXhwb3Blbi52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3c5eHBvcGVuLnZjcHJvagppbmRleCAwNWQ4ZjgxLi43YTg1YjAwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3c5eHBvcGVuLnZjcHJvagorKysgYi9QQy9WUzkuMC93OXhwb3Blbi52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0idzl4cG9wZW4iDQogCVByb2plY3RHVUlEPSJ7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSINCiAJUm9vdE5hbWVzcGFjZT0idzl4cG9wZW4iDQpAQCAtNTY2LDcgKzU2Niw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcdzl4cG9wZW4uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3OXhwb3Blbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC93aW5zb3VuZC52Y3Byb2ogYi9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC93aW5zb3VuZC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3dpbnNvdW5kLnZjcHJvagppbmRleCA2OTQ3MGNjLi40N2RiZjI5IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3dpbnNvdW5kLnZjcHJvagorKysgYi9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0id2luc291bmQiDQogCVByb2plY3RHVUlEPSJ7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fSINCiAJUm9vdE5hbWVzcGFjZT0id2luc291bmQiDQpAQCAtNTEzLDcgKzUxMyw3IEBACiAJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1x3aW5zb3VuZC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHdpbnNvdW5kLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3g2NC52c3Byb3BzIGIvUEMvVlM5LjAveDY0LnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQveDY0LnZzcHJvcHMKcmVuYW1lIHRvIFBDL1ZTOS4wL3g2NC52c3Byb3BzCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3Byb2ogYi9QQy9WUzkuMC94eGxpbWl0ZWQudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQveHhsaW1pdGVkLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAveHhsaW1pdGVkLnZjcHJvagppbmRleCA2ZGEyMDE2Li5hM2FhYWQ2IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3Byb2oKKysrIGIvUEMvVlM5LjAveHhsaW1pdGVkLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJ4eGxpbWl0ZWQiDQogCVByb2plY3RHVUlEPSJ7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfSINCiAJUm9vdE5hbWVzcGFjZT0ieHhsaW1pdGVkIg0KQEAgLTQwNyw3ICs0MDcsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNceHhsaW1pdGVkLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x4eGxpbWl0ZWQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDL19tc2kuYyBiL1BDL19tc2kuYwppbmRleCBkNGQ4NDgzLi4wYjViOTRlIDEwMDY0NAotLS0gYS9QQy9fbXNpLmMKKysrIGIvUEMvX21zaS5jCkBAIC0xOCw3ICsxOCw3IEBACiB1dWlkY3JlYXRlKFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0KmFyZ3MpCiB7CiAgICAgVVVJRCByZXN1bHQ7Ci0gICAgdW5zaWduZWQgc2hvcnQgKmNyZXN1bHQ7CisgICAgd2NoYXJfdCAqY3Jlc3VsdDsKICAgICBQeU9iamVjdCAqb3Jlc3VsdDsKIAogICAgIC8qIE1heSByZXR1cm4gb2ssIGxvY2FsIG9ubHksIGFuZCBubyBhZGRyZXNzLgpAQCAtMzUsNyArMzUsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBvcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGNyZXN1bHQsIHdjc2xlbihjcmVzdWx0KSk7CisgICAgb3Jlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoY3Jlc3VsdCwgd2NzbGVuKGNyZXN1bHQpKTsKICAgICBScGNTdHJpbmdGcmVlVygmY3Jlc3VsdCk7CiAgICAgcmV0dXJuIG9yZXN1bHQ7CiAKQEAgLTEyMiw3ICsxMjIsOSBAQAogc3RhdGljIEZORkNJU1RBVFVTKGNiX3N0YXR1cykKIHsKICAgICBpZiAocHYpIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocHYsICJzdGF0dXMiLCAiaWlpIiwgdHlwZVN0YXR1cywgY2IxLCBjYjIpOworICAgICAgICBfUHlfSURFTlRJRklFUihzdGF0dXMpOworCisgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHB2LCAmUHlJZF9zdGF0dXMsICJpaWkiLCB0eXBlU3RhdHVzLCBjYjEsIGNiMik7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC0xMzMsNyArMTM1LDkgQEAKIHN0YXRpYyBGTkZDSUdFVE5FWFRDQUJJTkVUKGNiX2dldG5leHRjYWJpbmV0KQogewogICAgIGlmIChwdikgewotICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChwdiwgImdldG5leHRjYWJpbmV0IiwgImkiLCBwY2NhYi0+aUNhYik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGdldG5leHRjYWJpbmV0KTsKKworICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwdiwgJlB5SWRfZ2V0bmV4dGNhYmluZXQsICJpIiwgcGNjYWItPmlDYWIpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhyZXN1bHQpKSB7CkBAIC0zNzUsNyArMzc5LDcgQEAKICAgICB9CiAgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gbXNpZXJyb3IoKGludCkgc3RhdHVzKTsKLSAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocmVzLCBzaXplKTsKKyAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJlcywgc2l6ZSk7CiAgICAgaWYgKGJ1ZiAhPSByZXMpCiAgICAgICAgIGZyZWUocmVzKTsKICAgICByZXR1cm4gc3RyaW5nOwpAQCAtMzk3LDcgKzQwMSw3IEBACiB7CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgZmllbGQ7Ci0gICAgUHlfVU5JQ09ERSAqZGF0YTsKKyAgICB3Y2hhcl90ICpkYXRhOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpdTpTZXRTdHJpbmciLCAmZmllbGQsICZkYXRhKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00MTQsNyArNDE4LDcgQEAKIHsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBmaWVsZDsKLSAgICBQeV9VTklDT0RFICpkYXRhOworICAgIHdjaGFyX3QgKmRhdGE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml1OlNldFN0cmVhbSIsICZmaWVsZCwgJmRhdGEpKQogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL1BDL19zdWJwcm9jZXNzLmMgYi9QQy9fc3VicHJvY2Vzcy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWE3OWE3Li4wMDAwMDAwCi0tLSBhL1BDL19zdWJwcm9jZXNzLmMKKysrIC9kZXYvbnVsbApAQCAtMSw2OTAgKzAsMCBAQAotLyoKLSAqIHN1cHBvcnQgcm91dGluZXMgZm9yIHN1YnByb2Nlc3MgbW9kdWxlCi0gKgotICogQ3VycmVudGx5LCB0aGlzIGV4dGVuc2lvbiBtb2R1bGUgaXMgb25seSByZXF1aXJlZCB3aGVuIHVzaW5nIHRoZQotICogc3VicHJvY2VzcyBtb2R1bGUgb24gV2luZG93cywgYnV0IGluIHRoZSBmdXR1cmUsIHN0dWJzIGZvciBvdGhlcgotICogcGxhdGZvcm1zIG1pZ2h0IGJlIGFkZGVkIGhlcmUgYXMgd2VsbC4KLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgRnJlZHJpayBMdW5kaCA8ZnJlZHJpa0BweXRob253YXJlLmNvbT4KLSAqIENvcHlyaWdodCAoYykgMjAwNCBieSBTZWNyZXQgTGFicyBBQiwgaHR0cDovL3d3dy5weXRob253YXJlLmNvbQotICogQ29weXJpZ2h0IChjKSAyMDA0IGJ5IFBldGVyIEFzdHJhbmQgPGFzdHJhbmRAbHlzYXRvci5saXUuc2U+Ci0gKgotICogQnkgb2J0YWluaW5nLCB1c2luZywgYW5kL29yIGNvcHlpbmcgdGhpcyBzb2Z0d2FyZSBhbmQvb3IgaXRzCi0gKiBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24sIHlvdSBhZ3JlZSB0aGF0IHlvdSBoYXZlIHJlYWQsIHVuZGVyc3Rvb2QsCi0gKiBhbmQgd2lsbCBjb21wbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zOgotICoKLSAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCi0gKiBpdHMgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMKLSAqIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4KLSAqIGFsbCBjb3BpZXMsIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24KLSAqIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiB0aGUKLSAqIGF1dGhvcnMgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8KLSAqIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvcgotICogcGVybWlzc2lvbi4KLSAqCi0gKiBUSEUgQVVUSE9SUyBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKLSAqIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4KLSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTCi0gKiBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCi0gKiBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotICogV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0gKgotICovCi0KLS8qIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4gKi8KLS8qIFNlZSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvMi40L2xpY2Vuc2UgZm9yIGxpY2Vuc2luZyBkZXRhaWxzLiAqLwotCi0jaW5jbHVkZSAiUHl0aG9uLmgiCi0KLSNkZWZpbmUgV0lORE9XU19MRUFOX0FORF9NRUFOCi0jaW5jbHVkZSAid2luZG93cy5oIgotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogaGFuZGxlIHdyYXBwZXIuICBub3RlIHRoYXQgdGhpcyBsaWJyYXJ5IHVzZXMgaW50ZWdlcnMgd2hlbiBwYXNzaW5nCi0gICBoYW5kbGVzIHRvIGEgZnVuY3Rpb24sIGFuZCBoYW5kbGUgd3JhcHBlcnMgd2hlbiByZXR1cm5pbmcgaGFuZGxlcy4KLSAgIHRoZSB3cmFwcGVyIGlzIHVzZWQgdG8gcHJvdmlkZSBEZXRhY2ggYW5kIENsb3NlIG1ldGhvZHMgKi8KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBIQU5ETEUgaGFuZGxlOwotfSBzcF9oYW5kbGVfb2JqZWN0OwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IHNwX2hhbmRsZV90eXBlOwotCi1zdGF0aWMgUHlPYmplY3QqCi1zcF9oYW5kbGVfbmV3KEhBTkRMRSBoYW5kbGUpCi17Ci0gICAgc3BfaGFuZGxlX29iamVjdCogc2VsZjsKLQotICAgIHNlbGYgPSBQeU9iamVjdF9ORVcoc3BfaGFuZGxlX29iamVjdCwgJnNwX2hhbmRsZV90eXBlKTsKLSAgICBpZiAoc2VsZiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNlbGYtPmhhbmRsZSA9IGhhbmRsZTsKLQotICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotfQotCi0jaWYgZGVmaW5lZChNU19XSU4zMikgJiYgIWRlZmluZWQoTVNfV0lONjQpCi0jZGVmaW5lIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgaGFuZGxlKQotI2RlZmluZSBQWV9IQU5ETEVfUEFSQU0gImwiCi0jZWxzZQotI2RlZmluZSBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKSBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIGhhbmRsZSkKLSNkZWZpbmUgUFlfSEFORExFX1BBUkFNICJMIgotI2VuZGlmCi0KLXN0YXRpYyBQeU9iamVjdCoKLXNwX2hhbmRsZV9kZXRhY2goc3BfaGFuZGxlX29iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgSEFORExFIGhhbmRsZTsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpEZXRhY2giKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBoYW5kbGUgPSBzZWxmLT5oYW5kbGU7Ci0KLSAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLQotICAgIC8qIG5vdGU6IHJldHVybiB0aGUgY3VycmVudCBoYW5kbGUsIGFzIGFuIGludGVnZXIgKi8KLSAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCoKLXNwX2hhbmRsZV9jbG9zZShzcF9oYW5kbGVfb2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Q2xvc2UiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoc2VsZi0+aGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIENsb3NlSGFuZGxlKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1zcF9oYW5kbGVfZGVhbGxvYyhzcF9oYW5kbGVfb2JqZWN0KiBzZWxmKQotewotICAgIGlmIChzZWxmLT5oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIENsb3NlSGFuZGxlKHNlbGYtPmhhbmRsZSk7Ci0gICAgUHlPYmplY3RfRlJFRShzZWxmKTsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIHNwX2hhbmRsZV9tZXRob2RzW10gPSB7Ci0gICAgeyJEZXRhY2giLCAoUHlDRnVuY3Rpb24pIHNwX2hhbmRsZV9kZXRhY2gsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJDbG9zZSIsICAoUHlDRnVuY3Rpb24pIHNwX2hhbmRsZV9jbG9zZSwgIE1FVEhfVkFSQVJHU30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi1zdGF0aWMgUHlPYmplY3QqCi1zcF9oYW5kbGVfYXNfaW50KHNwX2hhbmRsZV9vYmplY3QqIHNlbGYpCi17Ci0gICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTShzZWxmLT5oYW5kbGUpOwotfQotCi1zdGF0aWMgUHlOdW1iZXJNZXRob2RzIHNwX2hhbmRsZV9hc19udW1iZXI7Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3Qgc3BfaGFuZGxlX3R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9zdWJwcm9jZXNzX2hhbmRsZSIsIHNpemVvZihzcF9oYW5kbGVfb2JqZWN0KSwgMCwKLSAgICAoZGVzdHJ1Y3Rvcikgc3BfaGFuZGxlX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgJnNwX2hhbmRsZV9hc19udW1iZXIsICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyp0cF9mbGFncyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgc3BfaGFuZGxlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KLX07Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiB3aW5kb3dzIEFQSSBmdW5jdGlvbnMgKi8KLQotUHlEb2NfU1RSVkFSKEdldFN0ZEhhbmRsZV9kb2MsCi0iR2V0U3RkSGFuZGxlKGhhbmRsZSkgLT4gaW50ZWdlclxuXAotXG5cCi1SZXR1cm4gYSBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBzdGFuZGFyZCBkZXZpY2VcblwKLShTVERfSU5QVVRfSEFORExFLCBTVERfT1VUUFVUX0hBTkRMRSwgU1REX0VSUk9SX0hBTkRMRSkuXG5cCi1UaGUgaW50ZWdlciBhc3NvY2lhdGVkIHdpdGggdGhlIGhhbmRsZSBvYmplY3QgaXMgcmV0dXJuZWQuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9HZXRTdGRIYW5kbGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIEhBTkRMRSBoYW5kbGU7Ci0gICAgaW50IHN0ZF9oYW5kbGU7Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaGFuZGxlID0gR2V0U3RkSGFuZGxlKChEV09SRCkgc3RkX2hhbmRsZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7Ci0KLSAgICBpZiAoISBoYW5kbGUpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9Ci0KLSAgICAvKiBub3RlOiByZXR1cm5zIGludGVnZXIsIG5vdCBoYW5kbGUgb2JqZWN0ICovCi0gICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpOwotfQotCi1QeURvY19TVFJWQVIoR2V0Q3VycmVudFByb2Nlc3NfZG9jLAotIkdldEN1cnJlbnRQcm9jZXNzKCkgLT4gaGFuZGxlXG5cCi1cblwKLVJldHVybiBhIGhhbmRsZSBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9HZXRDdXJyZW50UHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldEN1cnJlbnRQcm9jZXNzIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHNwX2hhbmRsZV9uZXcoR2V0Q3VycmVudFByb2Nlc3MoKSk7Ci19Ci0KLVB5RG9jX1NUUlZBUihEdXBsaWNhdGVIYW5kbGVfZG9jLAotIkR1cGxpY2F0ZUhhbmRsZShzb3VyY2VfcHJvY19oYW5kbGUsIHNvdXJjZV9oYW5kbGUsXG5cCi0gICAgICAgICAgICAgICAgIHRhcmdldF9wcm9jX2hhbmRsZSwgdGFyZ2V0X2hhbmRsZSwgYWNjZXNzLFxuXAotICAgICAgICAgICAgICAgICBpbmhlcml0Wywgb3B0aW9uc10pIC0+IGhhbmRsZVxuXAotXG5cCi1SZXR1cm4gYSBkdXBsaWNhdGUgaGFuZGxlIG9iamVjdC5cblwKLVxuXAotVGhlIGR1cGxpY2F0ZSBoYW5kbGUgcmVmZXJzIHRvIHRoZSBzYW1lIG9iamVjdCBhcyB0aGUgb3JpZ2luYWxcblwKLWhhbmRsZS4gVGhlcmVmb3JlLCBhbnkgY2hhbmdlcyB0byB0aGUgb2JqZWN0IGFyZSByZWZsZWN0ZWRcblwKLXRocm91Z2ggYm90aCBoYW5kbGVzLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfRHVwbGljYXRlSGFuZGxlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBIQU5ETEUgdGFyZ2V0X2hhbmRsZTsKLSAgICBCT09MIHJlc3VsdDsKLQotICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGU7Ci0gICAgSEFORExFIHNvdXJjZV9oYW5kbGU7Ci0gICAgSEFORExFIHRhcmdldF9wcm9jZXNzX2hhbmRsZTsKLSAgICBpbnQgZGVzaXJlZF9hY2Nlc3M7Ci0gICAgaW50IGluaGVyaXRfaGFuZGxlOwotICAgIGludCBvcHRpb25zID0gMDsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0hBTkRMRV9QQVJBTSBQWV9IQU5ETEVfUEFSQU0gUFlfSEFORExFX1BBUkFNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiaWl8aTpEdXBsaWNhdGVIYW5kbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNvdXJjZV9wcm9jZXNzX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VfaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXNpcmVkX2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0X2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzdWx0ID0gRHVwbGljYXRlSGFuZGxlKAotICAgICAgICBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCi0gICAgICAgIHNvdXJjZV9oYW5kbGUsCi0gICAgICAgIHRhcmdldF9wcm9jZXNzX2hhbmRsZSwKLSAgICAgICAgJnRhcmdldF9oYW5kbGUsCi0gICAgICAgIGRlc2lyZWRfYWNjZXNzLAotICAgICAgICBpbmhlcml0X2hhbmRsZSwKLSAgICAgICAgb3B0aW9ucwotICAgICk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmICghIHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKLQotICAgIHJldHVybiBzcF9oYW5kbGVfbmV3KHRhcmdldF9oYW5kbGUpOwotfQotCi1QeURvY19TVFJWQVIoQ3JlYXRlUGlwZV9kb2MsCi0iQ3JlYXRlUGlwZShwaXBlX2F0dHJzLCBzaXplKSAtPiAocmVhZF9oYW5kbGUsIHdyaXRlX2hhbmRsZSlcblwKLVxuXAotQ3JlYXRlIGFuIGFub255bW91cyBwaXBlLCBhbmQgcmV0dXJuIGhhbmRsZXMgdG8gdGhlIHJlYWQgYW5kXG5cCi13cml0ZSBlbmRzIG9mIHRoZSBwaXBlLlxuXAotXG5cCi1waXBlX2F0dHJzIGlzIGlnbm9yZWQgaW50ZXJuYWxseSBhbmQgY2FuIGJlIE5vbmUuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9DcmVhdGVQaXBlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBIQU5ETEUgcmVhZF9waXBlOwotICAgIEhBTkRMRSB3cml0ZV9waXBlOwotICAgIEJPT0wgcmVzdWx0OwotCi0gICAgUHlPYmplY3QqIHBpcGVfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLwotICAgIGludCBzaXplOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2k6Q3JlYXRlUGlwZSIsICZwaXBlX2F0dHJpYnV0ZXMsICZzaXplKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzdWx0ID0gQ3JlYXRlUGlwZSgmcmVhZF9waXBlLCAmd3JpdGVfcGlwZSwgTlVMTCwgc2l6ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmICghIHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKAotICAgICAgICAiTk4iLCBzcF9oYW5kbGVfbmV3KHJlYWRfcGlwZSksIHNwX2hhbmRsZV9uZXcod3JpdGVfcGlwZSkpOwotfQotCi0vKiBoZWxwZXJzIGZvciBjcmVhdGVwcm9jZXNzICovCi0KLXN0YXRpYyBpbnQKLWdldGludChQeU9iamVjdCogb2JqLCBjaGFyKiBuYW1lKQotewotICAgIFB5T2JqZWN0KiB2YWx1ZTsKLSAgICBpbnQgcmV0OwotCi0gICAgdmFsdWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgbmFtZSk7Ci0gICAgaWYgKCEgdmFsdWUpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogRklYTUU6IHByb3BhZ2F0ZSBlcnJvcj8gKi8KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldCA9IChpbnQpIFB5TG9uZ19Bc0xvbmcodmFsdWUpOwotICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIEhBTkRMRQotZ2V0aGFuZGxlKFB5T2JqZWN0KiBvYmosIGNoYXIqIG5hbWUpCi17Ci0gICAgc3BfaGFuZGxlX29iamVjdCogdmFsdWU7Ci0gICAgSEFORExFIHJldDsKLQotICAgIHZhbHVlID0gKHNwX2hhbmRsZV9vYmplY3QqKSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgbmFtZSk7Ci0gICAgaWYgKCEgdmFsdWUpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogRklYTUU6IHByb3BhZ2F0ZSBlcnJvcj8gKi8KLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeV9UWVBFKHZhbHVlKSAhPSAmc3BfaGFuZGxlX3R5cGUpCi0gICAgICAgIHJldCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXQgPSB2YWx1ZS0+aGFuZGxlOwotICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5T2JqZWN0KgotZ2V0ZW52aXJvbm1lbnQoUHlPYmplY3QqIGVudmlyb25tZW50KQotewotICAgIGludCBpOwotICAgIFB5X3NzaXplX3QgZW52c2l6ZTsKLSAgICBQeU9iamVjdCogb3V0ID0gTlVMTDsKLSAgICBQeU9iamVjdCoga2V5czsKLSAgICBQeU9iamVjdCogdmFsdWVzOwotICAgIFB5X1VOSUNPREUqIHA7Ci0KLSAgICAvKiBjb252ZXJ0IGVudmlyb25tZW50IGRpY3Rpb25hcnkgdG8gd2luZG93cyBlbnZpcm9tZW50IHN0cmluZyAqLwotICAgIGlmICghIFB5TWFwcGluZ19DaGVjayhlbnZpcm9ubWVudCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLCAiZW52aXJvbm1lbnQgbXVzdCBiZSBkaWN0aW9uYXJ5IG9yIE5vbmUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgZW52c2l6ZSA9IFB5TWFwcGluZ19MZW5ndGgoZW52aXJvbm1lbnQpOwotCi0gICAga2V5cyA9IFB5TWFwcGluZ19LZXlzKGVudmlyb25tZW50KTsKLSAgICB2YWx1ZXMgPSBQeU1hcHBpbmdfVmFsdWVzKGVudmlyb25tZW50KTsKLSAgICBpZiAoIWtleXMgfHwgIXZhbHVlcykKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIG91dCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAyMDQ4KTsKLSAgICBpZiAoISBvdXQpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0KTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCBlbnZzaXplOyBpKyspIHsKLSAgICAgICAgUHlfc3NpemVfdCBrc2l6ZSwgdnNpemUsIHRvdGFsc2l6ZTsKLSAgICAgICAgUHlPYmplY3QqIGtleSA9IFB5TGlzdF9HRVRfSVRFTShrZXlzLCBpKTsKLSAgICAgICAgUHlPYmplY3QqIHZhbHVlID0gUHlMaXN0X0dFVF9JVEVNKHZhbHVlcywgaSk7Ci0KLSAgICAgICAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKGtleSkgfHwgISBQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJlbnZpcm9ubWVudCBjYW4gb25seSBjb250YWluIHN0cmluZ3MiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAga3NpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoa2V5KTsKLSAgICAgICAgdnNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodmFsdWUpOwotICAgICAgICB0b3RhbHNpemUgPSAocCAtIFB5VW5pY29kZV9BU19VTklDT0RFKG91dCkpICsga3NpemUgKyAxICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnNpemUgKyAxICsgMTsKLSAgICAgICAgaWYgKHRvdGFsc2l6ZSA+IFB5VW5pY29kZV9HRVRfU0laRShvdXQpKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvdXQpOwotICAgICAgICAgICAgUHlVbmljb2RlX1Jlc2l6ZSgmb3V0LCB0b3RhbHNpemUgKyAxMDI0KTsKLSAgICAgICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvdXQpICsgb2Zmc2V0OwotICAgICAgICB9Ci0gICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShrZXkpLCBrc2l6ZSk7Ci0gICAgICAgIHAgKz0ga3NpemU7Ci0gICAgICAgICpwKysgPSAnPSc7Ci0gICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2YWx1ZSksIHZzaXplKTsKLSAgICAgICAgcCArPSB2c2l6ZTsKLSAgICAgICAgKnArKyA9ICdcMCc7Ci0gICAgfQotCi0gICAgLyogYWRkIHRyYWlsaW5nIG51bGwgYnl0ZSAqLwotICAgICpwKysgPSAnXDAnOwotICAgIFB5VW5pY29kZV9SZXNpemUoJm91dCwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKG91dCkpOwotCi0gICAgLyogUHlPYmplY3RfUHJpbnQob3V0LCBzdGRvdXQsIDApOyAqLwotCi0gICAgUHlfWERFQ1JFRihrZXlzKTsKLSAgICBQeV9YREVDUkVGKHZhbHVlcyk7Ci0KLSAgICByZXR1cm4gb3V0OwotCi0gZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihvdXQpOwotICAgIFB5X1hERUNSRUYoa2V5cyk7Ci0gICAgUHlfWERFQ1JFRih2YWx1ZXMpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1QeURvY19TVFJWQVIoQ3JlYXRlUHJvY2Vzc19kb2MsCi0iQ3JlYXRlUHJvY2VzcyhhcHBfbmFtZSwgY21kX2xpbmUsIHByb2NfYXR0cnMsIHRocmVhZF9hdHRycyxcblwKLSAgICAgICAgICAgICAgIGluaGVyaXQsIGZsYWdzLCBlbnZfbWFwcGluZywgY3VyZGlyLFxuXAotICAgICAgICAgICAgICAgc3RhcnR1cF9pbmZvKSAtPiAocHJvY19oYW5kbGUsIHRocmVhZF9oYW5kbGUsXG5cCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsIHRpZClcblwKLVxuXAotQ3JlYXRlIGEgbmV3IHByb2Nlc3MgYW5kIGl0cyBwcmltYXJ5IHRocmVhZC4gVGhlIHJldHVyblxuXAotdmFsdWUgaXMgYSB0dXBsZSBvZiB0aGUgcHJvY2VzcyBoYW5kbGUsIHRocmVhZCBoYW5kbGUsXG5cCi1wcm9jZXNzIElELCBhbmQgdGhyZWFkIElELlxuXAotXG5cCi1wcm9jX2F0dHJzIGFuZCB0aHJlYWRfYXR0cnMgYXJlIGlnbm9yZWQgaW50ZXJuYWxseSBhbmQgY2FuIGJlIE5vbmUuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9DcmVhdGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBCT09MIHJlc3VsdDsKLSAgICBQUk9DRVNTX0lORk9STUFUSU9OIHBpOwotICAgIFNUQVJUVVBJTkZPVyBzaTsKLSAgICBQeU9iamVjdCogZW52aXJvbm1lbnQ7Ci0KLSAgICBQeV9VTklDT0RFKiBhcHBsaWNhdGlvbl9uYW1lOwotICAgIFB5X1VOSUNPREUqIGNvbW1hbmRfbGluZTsKLSAgICBQeU9iamVjdCogcHJvY2Vzc19hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCi0gICAgUHlPYmplY3QqIHRocmVhZF9hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCi0gICAgaW50IGluaGVyaXRfaGFuZGxlczsKLSAgICBpbnQgY3JlYXRpb25fZmxhZ3M7Ci0gICAgUHlPYmplY3QqIGVudl9tYXBwaW5nOwotICAgIFB5X1VOSUNPREUqIGN1cnJlbnRfZGlyZWN0b3J5OwotICAgIFB5T2JqZWN0KiBzdGFydHVwX2luZm87Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PaWlPWk86Q3JlYXRlUHJvY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmYXBwbGljYXRpb25fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21tYW5kX2xpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJvY2Vzc19hdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRocmVhZF9hdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluaGVyaXRfaGFuZGxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZjcmVhdGlvbl9mbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbnZfbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJyZW50X2RpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHVwX2luZm8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFplcm9NZW1vcnkoJnNpLCBzaXplb2Yoc2kpKTsKLSAgICBzaS5jYiA9IHNpemVvZihzaSk7Ci0KLSAgICAvKiBub3RlOiB3ZSBvbmx5IHN1cHBvcnQgYSBzbWFsbCBzdWJzZXQgb2YgYWxsIFNJIGF0dHJpYnV0ZXMgKi8KLSAgICBzaS5kd0ZsYWdzID0gZ2V0aW50KHN0YXJ0dXBfaW5mbywgImR3RmxhZ3MiKTsKLSAgICBzaS53U2hvd1dpbmRvdyA9IGdldGludChzdGFydHVwX2luZm8sICJ3U2hvd1dpbmRvdyIpOwotICAgIHNpLmhTdGRJbnB1dCA9IGdldGhhbmRsZShzdGFydHVwX2luZm8sICJoU3RkSW5wdXQiKTsKLSAgICBzaS5oU3RkT3V0cHV0ID0gZ2V0aGFuZGxlKHN0YXJ0dXBfaW5mbywgImhTdGRPdXRwdXQiKTsKLSAgICBzaS5oU3RkRXJyb3IgPSBnZXRoYW5kbGUoc3RhcnR1cF9pbmZvLCAiaFN0ZEVycm9yIik7Ci0KLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoZW52X21hcHBpbmcgPT0gUHlfTm9uZSkKLSAgICAgICAgZW52aXJvbm1lbnQgPSBOVUxMOwotICAgIGVsc2UgewotICAgICAgICBlbnZpcm9ubWVudCA9IGdldGVudmlyb25tZW50KGVudl9tYXBwaW5nKTsKLSAgICAgICAgaWYgKCEgZW52aXJvbm1lbnQpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzdWx0ID0gQ3JlYXRlUHJvY2Vzc1coYXBwbGljYXRpb25fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdF9oYW5kbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25fZmxhZ3MgfCBDUkVBVEVfVU5JQ09ERV9FTlZJUk9OTUVOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50ID8gUHlVbmljb2RlX0FTX1VOSUNPREUoZW52aXJvbm1lbnQpIDogTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgUHlfWERFQ1JFRihlbnZpcm9ubWVudCk7Ci0KLSAgICBpZiAoISByZXN1bHQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk5paSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3BfaGFuZGxlX25ldyhwaS5oUHJvY2VzcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3BfaGFuZGxlX25ldyhwaS5oVGhyZWFkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBwaS5kd1Byb2Nlc3NJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBwaS5kd1RocmVhZElkKTsKLX0KLQotUHlEb2NfU1RSVkFSKFRlcm1pbmF0ZVByb2Nlc3NfZG9jLAotIlRlcm1pbmF0ZVByb2Nlc3MoaGFuZGxlLCBleGl0X2NvZGUpIC0+IE5vbmVcblwKLVxuXAotVGVybWluYXRlIHRoZSBzcGVjaWZpZWQgcHJvY2VzcyBhbmQgYWxsIG9mIGl0cyB0aHJlYWRzLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfVGVybWluYXRlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgQk9PTCByZXN1bHQ7Ci0KLSAgICBIQU5ETEUgcHJvY2VzczsKLSAgICBpbnQgZXhpdF9jb2RlOwotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgUFlfSEFORExFX1BBUkFNICJpOlRlcm1pbmF0ZVByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2Nlc3MsICZleGl0X2NvZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFRlcm1pbmF0ZVByb2Nlc3MocHJvY2VzcywgZXhpdF9jb2RlKTsKLQotICAgIGlmICghIHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KLQotUHlEb2NfU1RSVkFSKEdldEV4aXRDb2RlUHJvY2Vzc19kb2MsCi0iR2V0RXhpdENvZGVQcm9jZXNzKGhhbmRsZSkgLT4gRXhpdCBjb2RlXG5cCi1cblwKLVJldHVybiB0aGUgdGVybWluYXRpb24gc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgcHJvY2Vzcy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX0dldEV4aXRDb2RlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgRFdPUkQgZXhpdF9jb2RlOwotICAgIEJPT0wgcmVzdWx0OwotCi0gICAgSEFORExFIHByb2Nlc3M7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBQWV9IQU5ETEVfUEFSQU0gIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gR2V0RXhpdENvZGVQcm9jZXNzKHByb2Nlc3MsICZleGl0X2NvZGUpOwotCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwotCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhleGl0X2NvZGUpOwotfQotCi1QeURvY19TVFJWQVIoV2FpdEZvclNpbmdsZU9iamVjdF9kb2MsCi0iV2FpdEZvclNpbmdsZU9iamVjdChoYW5kbGUsIHRpbWVvdXQpIC0+IHJlc3VsdFxuXAotXG5cCi1XYWl0IHVudGlsIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGlzIGluIHRoZSBzaWduYWxlZCBzdGF0ZSBvclxuXAotdGhlIHRpbWUtb3V0IGludGVydmFsIGVsYXBzZXMuIFRoZSB0aW1lb3V0IHZhbHVlIGlzIHNwZWNpZmllZFxuXAotaW4gbWlsbGlzZWNvbmRzLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfV2FpdEZvclNpbmdsZU9iamVjdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgRFdPUkQgcmVzdWx0OwotCi0gICAgSEFORExFIGhhbmRsZTsKLSAgICBpbnQgbWlsbGlzZWNvbmRzOwotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgUFlfSEFORExFX1BBUkFNICJpOldhaXRGb3JTaW5nbGVPYmplY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtaWxsaXNlY29uZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGhhbmRsZSwgKERXT1JEKSBtaWxsaXNlY29uZHMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzdWx0ID09IFdBSVRfRkFJTEVEKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwotCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygoaW50KSByZXN1bHQpOwotfQotCi1QeURvY19TVFJWQVIoR2V0VmVyc2lvbl9kb2MsCi0iR2V0VmVyc2lvbigpIC0+IHZlcnNpb25cblwKLVxuXAotUmV0dXJuIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfR2V0VmVyc2lvbihQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldFZlcnNpb24iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChpbnQpIEdldFZlcnNpb24oKSk7Ci19Ci0KLVB5RG9jX1NUUlZBUihHZXRNb2R1bGVGaWxlTmFtZV9kb2MsCi0iR2V0TW9kdWxlRmlsZU5hbWUobW9kdWxlKSAtPiBwYXRoXG5cCi1cblwKLVJldHVybiB0aGUgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnNcblwKLXRoZSBzcGVjaWZpZWQgbW9kdWxlLiBUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIGxvYWRlZCBieSB0aGVcblwKLWN1cnJlbnQgcHJvY2Vzcy5cblwKLVxuXAotVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgaGFuZGxlIHRvIHRoZSBsb2FkZWQgbW9kdWxlXG5cCi13aG9zZSBwYXRoIGlzIGJlaW5nIHJlcXVlc3RlZC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgMCwgXG5cCi1HZXRNb2R1bGVGaWxlTmFtZSByZXRyaWV2ZXMgdGhlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgZmlsZVxuXAotb2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX0dldE1vZHVsZUZpbGVOYW1lKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBCT09MIHJlc3VsdDsKLSAgICBITU9EVUxFIG1vZHVsZTsKLSAgICBXQ0hBUiBmaWxlbmFtZVtNQVhfUEFUSF07Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIFBZX0hBTkRMRV9QQVJBTSAiOkdldE1vZHVsZUZpbGVOYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2R1bGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IEdldE1vZHVsZUZpbGVOYW1lVyhtb2R1bGUsIGZpbGVuYW1lLCBNQVhfUEFUSCk7Ci0gICAgZmlsZW5hbWVbTUFYX1BBVEgtMV0gPSAnXDAnOwotCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShmaWxlbmFtZSwgUHlfVU5JQ09ERV9zdHJsZW4oZmlsZW5hbWUpKTsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIHNwX2Z1bmN0aW9uc1tdID0gewotICAgIHsiR2V0U3RkSGFuZGxlIiwgc3BfR2V0U3RkSGFuZGxlLCBNRVRIX1ZBUkFSR1MsIEdldFN0ZEhhbmRsZV9kb2N9LAotICAgIHsiR2V0Q3VycmVudFByb2Nlc3MiLCBzcF9HZXRDdXJyZW50UHJvY2VzcywgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Q3VycmVudFByb2Nlc3NfZG9jfSwKLSAgICB7IkR1cGxpY2F0ZUhhbmRsZSIsICAgICAgICAgc3BfRHVwbGljYXRlSGFuZGxlLCAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVIYW5kbGVfZG9jfSwKLSAgICB7IkNyZWF0ZVBpcGUiLCBzcF9DcmVhdGVQaXBlLCBNRVRIX1ZBUkFSR1MsIENyZWF0ZVBpcGVfZG9jfSwKLSAgICB7IkNyZWF0ZVByb2Nlc3MiLCBzcF9DcmVhdGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsIENyZWF0ZVByb2Nlc3NfZG9jfSwKLSAgICB7IlRlcm1pbmF0ZVByb2Nlc3MiLCBzcF9UZXJtaW5hdGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hdGVQcm9jZXNzX2RvY30sCi0gICAgeyJHZXRFeGl0Q29kZVByb2Nlc3MiLCBzcF9HZXRFeGl0Q29kZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0RXhpdENvZGVQcm9jZXNzX2RvY30sCi0gICAgeyJXYWl0Rm9yU2luZ2xlT2JqZWN0Iiwgc3BfV2FpdEZvclNpbmdsZU9iamVjdCwgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhaXRGb3JTaW5nbGVPYmplY3RfZG9jfSwKLSAgICB7IkdldFZlcnNpb24iLCBzcF9HZXRWZXJzaW9uLCBNRVRIX1ZBUkFSR1MsIEdldFZlcnNpb25fZG9jfSwKLSAgICB7IkdldE1vZHVsZUZpbGVOYW1lIiwgc3BfR2V0TW9kdWxlRmlsZU5hbWUsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRNb2R1bGVGaWxlTmFtZV9kb2N9LAotICAgIHtOVUxMLCBOVUxMfQotfTsKLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotc3RhdGljIHZvaWQKLWRlZmludChQeU9iamVjdCogZCwgY29uc3QgY2hhciogbmFtZSwgaW50IHZhbHVlKQotewotICAgIFB5T2JqZWN0KiB2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKSB2YWx1ZSk7Ci0gICAgaWYgKHYpIHsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgKGNoYXIqKSBuYW1lLCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgIH0KLX0KLQotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfc3VicHJvY2Vzc21vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgIl9zdWJwcm9jZXNzIiwKLSAgICBOVUxMLAotICAgIC0xLAotICAgIHNwX2Z1bmN0aW9ucywKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMCi19OwotCi1QeU1PRElOSVRfRlVOQwotUHlJbml0X19zdWJwcm9jZXNzKCkKLXsKLSAgICBQeU9iamVjdCAqZDsKLSAgICBQeU9iamVjdCAqbTsKLQotICAgIC8qIHBhdGNoIHVwIG9iamVjdCBkZXNjcmlwdG9ycyAqLwotICAgIHNwX2hhbmRsZV9hc19udW1iZXIubmJfaW50ID0gKHVuYXJ5ZnVuYykgc3BfaGFuZGxlX2FzX2ludDsKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZzcF9oYW5kbGVfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9zdWJwcm9jZXNzbW9kdWxlKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKLQotICAgIC8qIGNvbnN0YW50cyAqLwotICAgIGRlZmludChkLCAiU1REX0lOUFVUX0hBTkRMRSIsIFNURF9JTlBVVF9IQU5ETEUpOwotICAgIGRlZmludChkLCAiU1REX09VVFBVVF9IQU5ETEUiLCBTVERfT1VUUFVUX0hBTkRMRSk7Ci0gICAgZGVmaW50KGQsICJTVERfRVJST1JfSEFORExFIiwgU1REX0VSUk9SX0hBTkRMRSk7Ci0gICAgZGVmaW50KGQsICJEVVBMSUNBVEVfU0FNRV9BQ0NFU1MiLCBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpOwotICAgIGRlZmludChkLCAiU1RBUlRGX1VTRVNUREhBTkRMRVMiLCBTVEFSVEZfVVNFU1RESEFORExFUyk7Ci0gICAgZGVmaW50KGQsICJTVEFSVEZfVVNFU0hPV1dJTkRPVyIsIFNUQVJURl9VU0VTSE9XV0lORE9XKTsKLSAgICBkZWZpbnQoZCwgIlNXX0hJREUiLCBTV19ISURFKTsKLSAgICBkZWZpbnQoZCwgIklORklOSVRFIiwgSU5GSU5JVEUpOwotICAgIGRlZmludChkLCAiV0FJVF9PQkpFQ1RfMCIsIFdBSVRfT0JKRUNUXzApOwotICAgIGRlZmludChkLCAiQ1JFQVRFX05FV19DT05TT0xFIiwgQ1JFQVRFX05FV19DT05TT0xFKTsKLSAgICBkZWZpbnQoZCwgIkNSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCIsIENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCk7Ci0gICAgZGVmaW50KGQsICJTVElMTF9BQ1RJVkUiLCBTVElMTF9BQ1RJVkUpOwotCi0gICAgcmV0dXJuIG07Ci19CmRpZmYgLS1naXQgYS9QQy9jb25maWcuYyBiL1BDL2NvbmZpZy5jCmluZGV4IDFmYzJiNDAuLjU3YjUwNzMgMTAwNjQ0Ci0tLSBhL1BDL2NvbmZpZy5jCisrKyBiL1BDL2NvbmZpZy5jCkBAIC0xMiw2ICsxMiw3IEBACiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9iaW5hc2NpaSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X2NtYXRoKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfZXJybm8odm9pZCk7CitleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9mYXVsdGhhbmRsZXIodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9nYyh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X21hdGgodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fbWQ1KHZvaWQpOwpAQCAtNTUsNyArNTYsNyBAQAogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2NvZGVjc19qcCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19jb2RlY3Nfa3Iodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fY29kZWNzX3R3KHZvaWQpOwotZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3N1YnByb2Nlc3Modm9pZCk7CitleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fd2luYXBpKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2xzcHJvZih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19hc3Qodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9faW8odm9pZCk7CkBAIC04Miw2ICs4Myw3IEBACiAgICAgeyJiaW5hc2NpaSIsIFB5SW5pdF9iaW5hc2NpaX0sCiAgICAgeyJjbWF0aCIsIFB5SW5pdF9jbWF0aH0sCiAgICAgeyJlcnJubyIsIFB5SW5pdF9lcnJub30sCisgICAgeyJmYXVsdGhhbmRsZXIiLCBQeUluaXRfZmF1bHRoYW5kbGVyfSwKICAgICB7ImdjIiwgUHlJbml0X2djfSwKICAgICB7Im1hdGgiLCBQeUluaXRfbWF0aH0sCiAgICAgeyJudCIsIFB5SW5pdF9udH0sIC8qIFVzZSB0aGUgTlQgb3MgZnVuY3Rpb25zLCBub3QgcG9zaXggKi8KQEAgLTk5LDggKzEwMSw4IEBACiAgICAgeyJtc3ZjcnQiLCBQeUluaXRfbXN2Y3J0fSwKICAgICB7Il9sb2NhbGUiLCBQeUluaXRfX2xvY2FsZX0sCiAjZW5kaWYKLSAgICAvKiBYWFggU2hvdWxkIF9zdWJwcm9jZXNzIGdvIGluIGEgV0lOMzIgYmxvY2s/ICBub3QgV0lONjQ/ICovCi0gICAgeyJfc3VicHJvY2VzcyIsIFB5SW5pdF9fc3VicHJvY2Vzc30sCisgICAgLyogWFhYIFNob3VsZCBfd2luYXBpIGdvIGluIGEgV0lOMzIgYmxvY2s/ICBub3QgV0lONjQ/ICovCisgICAgeyJfd2luYXBpIiwgUHlJbml0X193aW5hcGl9LAogCiAgICAgeyJfY29kZWNzIiwgUHlJbml0X19jb2RlY3N9LAogICAgIHsiX3dlYWtyZWYiLCBQeUluaXRfX3dlYWtyZWZ9LApAQCAtMTQxLDEwICsxNDMsOSBAQAogICAgIHsibWFyc2hhbCIsIFB5TWFyc2hhbF9Jbml0fSwKIAogICAgIC8qIFRoaXMgbGl2ZXMgaXQgd2l0aCBpbXBvcnQuYyAqLwotICAgIHsiaW1wIiwgUHlJbml0X2ltcH0sCisgICAgeyJfaW1wIiwgUHlJbml0X2ltcH0sCiAKICAgICAvKiBUaGVzZSBlbnRyaWVzIGFyZSBoZXJlIGZvciBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMgKi8KLSAgICB7Il9fbWFpbl9fIiwgTlVMTH0sCiAgICAgeyJidWlsdGlucyIsIE5VTEx9LAogICAgIHsic3lzIiwgTlVMTH0sCiAgICAgeyJfd2FybmluZ3MiLCBfUHlXYXJuaW5nc19Jbml0fSwKZGlmZiAtLWdpdCBhL1BDL2RsX250LmMgYi9QQy9kbF9udC5jCmluZGV4IGVmMWNlMDkuLmFlMTBmYjUgMTAwNjQ0Ci0tLSBhL1BDL2RsX250LmMKKysrIGIvUEMvZGxfbnQuYwpAQCAtMTgsNyArMTgsOCBAQAogSE1PRFVMRSBQeVdpbl9ETExoTW9kdWxlID0gTlVMTDsKIGNvbnN0IGNoYXIgKlB5V2luX0RMTFZlcnNpb25TdHJpbmcgPSBkbGxWZXJzaW9uQnVmZmVyOwogCi0vLyBXaW5kb3dzICJBY3RpdmF0aW9uIENvbnRleHQiIHdvcms6CisjaWYgSEFWRV9TWFMKKy8vIFdpbmRvd3MgIkFjdGl2YXRpb24gQ29udGV4dCIgd29yay4KIC8vIE91ciAucHlkIGV4dGVuc2lvbiBtb2R1bGVzIGFyZSBnZW5lcmFsbHkgYnVpbHQgd2l0aG91dCBhIG1hbmlmZXN0IChpZSwKIC8vIHRob3NlIGluY2x1ZGVkIHdpdGggUHl0aG9uIGFuZCB0aG9zZSBidWlsdCB3aXRoIGEgZGVmYXVsdCBkaXN0dXRpbHMuCiAvLyBUaGlzIHJlcXVpcmVzIHdlIHBlcmZvcm0gc29tZSAiYWN0aXZhdGlvbiBjb250ZXh0IiBtYWdpYyB3aGVuIGxvYWRpbmcgb3VyCkBAIC0yOSw2ICszMCw4IEBACiAvLyBBcyBhbiBhZGRlZCBjb21wbGljYXRpb24sIHRoaXMgbWFnaWMgb25seSB3b3JrcyBvbiBYUCBvciBsYXRlciAtIHdlIHNpbXBseQogLy8gdXNlIHRoZSBleGlzdGVuY2UgKG9yIG5vdCkgb2YgdGhlIHJlbGV2YW50IGZ1bmN0aW9uIHBvaW50ZXJzIGZyb20ga2VybmVsMzIuCiAvLyBTZWUgYnVnIDQ1NjYgKGh0dHA6Ly9weXRob24ub3JnL3NmLzQ1NjYpIGZvciBtb3JlIGRldGFpbHMuCisvLyBJbiBWaXN1YWwgU3R1ZGlvIDIwMTAsIHNpZGUgYnkgc2lkZSBhc3NlbWJsaWVzIGFyZSBubyBsb25nZXIgdXNlZCBieQorLy8gZGVmYXVsdC4KIAogdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5fR0VUQ1VSUkVOVEFDVENUWCkoSEFORExFICopOwogdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5fQUNUSVZBVEVBQ1RDVFgpKEhBTkRMRSwgVUxPTkdfUFRSICopOwpAQCAtNzUsNiArNzgsNyBAQAogICAgICAgICBpZiAoISgqcGZuRGVhY3RpdmF0ZUFjdEN0eCkoMCwgY29va2llKSkKICAgICAgICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCJQeXRob24gZmFpbGVkIHRvIGRlLWFjdGl2YXRlIHRoZSBhY3RpdmF0aW9uIGNvbnRleHRcbiIpOwogfQorI2VuZGlmIC8qIEhBVkVfU1hTICovCiAKIEJPT0wgICAgV0lOQVBJICBEbGxNYWluIChIQU5ETEUgaEluc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTE9ORyB1bF9yZWFzb25fZm9yX2NhbGwsCkBAIC04NywxNyArOTEsMjEgQEAKICAgICAgICAgICAgIC8vIDEwMDAgaXMgYSBtYWdpYyBudW1iZXIgSSBwaWNrZWQgb3V0IG9mIHRoZSBhaXIuICBDb3VsZCBkbyB3aXRoIGEgI2RlZmluZSwgSSBzcG9zZS4uLgogICAgICAgICAgICAgTG9hZFN0cmluZyhoSW5zdCwgMTAwMCwgZGxsVmVyc2lvbkJ1ZmZlciwgc2l6ZW9mKGRsbFZlcnNpb25CdWZmZXIpKTsKIAorI2lmIEhBVkVfU1hTCiAgICAgICAgICAgICAvLyBhbmQgY2FwdHVyZSBvdXIgYWN0aXZhdGlvbiBjb250ZXh0IGZvciB1c2Ugd2hlbiBsb2FkaW5nIGV4dGVuc2lvbnMuCiAgICAgICAgICAgICBfTG9hZEFjdEN0eFBvaW50ZXJzKCk7CiAgICAgICAgICAgICBpZiAocGZuR2V0Q3VycmVudEFjdEN0eCAmJiBwZm5BZGRSZWZBY3RDdHgpCiAgICAgICAgICAgICAgICAgaWYgKCgqcGZuR2V0Q3VycmVudEFjdEN0eCkoJlB5V2luX0RMTGhBY3RpdmF0aW9uQ29udGV4dCkpCiAgICAgICAgICAgICAgICAgICAgIGlmICghKCpwZm5BZGRSZWZBY3RDdHgpKFB5V2luX0RMTGhBY3RpdmF0aW9uQ29udGV4dCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygiUHl0aG9uIGZhaWxlZCB0byBsb2FkIHRoZSBkZWZhdWx0IGFjdGl2YXRpb24gY29udGV4dFxuIik7CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRExMX1BST0NFU1NfREVUQUNIOgorI2lmIEhBVkVfU1hTCiAgICAgICAgICAgICBpZiAocGZuUmVsZWFzZUFjdEN0eCkKICAgICAgICAgICAgICAgICAoKnBmblJlbGVhc2VBY3RDdHgpKFB5V2luX0RMTGhBY3RpdmF0aW9uQ29udGV4dCk7CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKZGlmZiAtLWdpdCBhL1BDL2V4YW1wbGVfbnQvZXhhbXBsZS52Y3Byb2ogYi9QQy9leGFtcGxlX250L2V4YW1wbGUudmNwcm9qCmluZGV4IGY5MjRjN2QuLmZiYTAwYjYgMTAwNjQ0Ci0tLSBhL1BDL2V4YW1wbGVfbnQvZXhhbXBsZS52Y3Byb2oKKysrIGIvUEMvZXhhbXBsZV9udC9leGFtcGxlLnZjcHJvagpAQCAtMzksNyArMzksNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL2V4cG9ydDppbml0ZXhhbXBsZSINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgcHl0aG9uMjYubGliIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBweXRob24zMy5saWIiDQogCQkJCU91dHB1dEZpbGU9Ii5cUmVsZWFzZS9leGFtcGxlLnB5ZCINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQpAQCAtMTA1LDcgKzEwNSw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvZXhwb3J0OmluaXRleGFtcGxlIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBweXRob24yNl9kLmxpYiINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgcHl0aG9uMzNfZC5saWIiDQogCQkJCU91dHB1dEZpbGU9Ii5cRGVidWcvZXhhbXBsZV9kLnB5ZCINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQpkaWZmIC0tZ2l0IGEvUEMvZnJvemVuX2RsbG1haW4uYyBiL1BDL2Zyb3plbl9kbGxtYWluLmMKaW5kZXggYThjYzg4NS4uMDE1NmM1MCAxMDA2NDQKLS0tIGEvUEMvZnJvemVuX2RsbG1haW4uYworKysgYi9QQy9mcm96ZW5fZGxsbWFpbi5jCkBAIC03Nyw3ICs3Nyw3IEBACiB7CiAgICAgLy8gTXVzdCBnbyBiYWNrd2FyZHMKICAgICBjaGFyICoqbW9kTmFtZTsKLSAgICBmb3IgKG1vZE5hbWUgPSBwb3NzaWJsZU1vZHVsZXMrKHNpemVvZihwb3NzaWJsZU1vZHVsZXMpIC8gc2l6ZW9mKGNoYXIgKikpLTI7CisgICAgZm9yIChtb2ROYW1lID0gcG9zc2libGVNb2R1bGVzK1B5X0FSUkFZX0xFTkdUSChwb3NzaWJsZU1vZHVsZXMpLTI7CiAgICAgICAgICBtb2ROYW1lID49IHBvc3NpYmxlTW9kdWxlczsKICAgICAgICAgICptb2ROYW1lLS0pIHsKIC8qICAgICAgICAgICAgICBwcmludGYoIlRlcm1pbmF0aW5nICclcydcbiIsICptb2ROYW1lKTsqLwpAQCAtMTAzLDcgKzEwMyw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIE11c3QgZ28gYmFja3dhcmRzCiAgICAgICAgICAgICBjaGFyICoqbW9kTmFtZTsKLSAgICAgICAgICAgIGZvciAobW9kTmFtZSA9IHBvc3NpYmxlTW9kdWxlcysoc2l6ZW9mKHBvc3NpYmxlTW9kdWxlcykgLyBzaXplb2YoY2hhciAqKSktMjsKKyAgICAgICAgICAgIGZvciAobW9kTmFtZSA9IHBvc3NpYmxlTW9kdWxlcytQeV9BUlJBWV9MRU5HVEgocG9zc2libGVNb2R1bGVzKS0yOwogICAgICAgICAgICAgICAgICBtb2ROYW1lID49IHBvc3NpYmxlTW9kdWxlczsKICAgICAgICAgICAgICAgICAgKm1vZE5hbWUtLSkKICAgICAgICAgICAgICAgICBDYWxsTW9kdWxlRGxsTWFpbigqbW9kTmFtZSwgRExMX1BST0NFU1NfREVUQUNIKTsKQEAgLTExOCw3ICsxMTgsNyBAQAogICAgIEJPT0wgKFdJTkFQSSAqIHBmbmRsbG1haW4pKEhJTlNUQU5DRSwgRFdPUkQsIExQVk9JRCk7CiAKICAgICBjaGFyIGZ1bmNOYW1lWzI1NV07Ci0gICAgSE1PRFVMRSBobW9kID0gR2V0TW9kdWxlSGFuZGxlKE5VTEwpOworICAgIEhNT0RVTEUgaG1vZCA9IEdldE1vZHVsZUhhbmRsZVcoTlVMTCk7CiAgICAgc3RyY3B5KGZ1bmNOYW1lLCAiX0RsbE1haW4iKTsKICAgICBzdHJjYXQoZnVuY05hbWUsIG1vZE5hbWUpOwogICAgIHN0cmNhdChmdW5jTmFtZSwgIkAxMiIpOyAvLyBzdGRjYWxsIGNvbnZlbnRpb24uCmRpZmYgLS1naXQgYS9QQy9nZXRwYXRocC5jIGIvUEMvZ2V0cGF0aHAuYwppbmRleCBjZDNhNGIyLi5iNWJmMzI1IDEwMDY0NAotLS0gYS9QQy9nZXRwYXRocC5jCisrKyBiL1BDL2dldHBhdGhwLmMKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAgIGlmIChrZXlCdWY9PU5VTEwpIGdvdG8gZG9uZTsKIAogICAgIG1lbWNweShrZXlCdWZQdHIsIGtleVByZWZpeCwgc2l6ZW9mKGtleVByZWZpeCktc2l6ZW9mKFdDSEFSKSk7Ci0gICAga2V5QnVmUHRyICs9IHNpemVvZihrZXlQcmVmaXgpL3NpemVvZihXQ0hBUikgLSAxOworICAgIGtleUJ1ZlB0ciArPSBQeV9BUlJBWV9MRU5HVEgoa2V5UHJlZml4KSAtIDE7CiAgICAgbWJzdG93Y3Moa2V5QnVmUHRyLCBQeVdpbl9ETExWZXJzaW9uU3RyaW5nLCB2ZXJzaW9uTGVuKTsKICAgICBrZXlCdWZQdHIgKz0gdmVyc2lvbkxlbjsKICAgICAvKiBOVUxMIGNvbWVzIHdpdGggdGhpcyBvbmUhICovCkBAIC00MjMsNiArNDIzLDUzIEBACiAgICAgICAgIHByb2dwYXRoWzBdID0gJ1wwJzsKIH0KIAorc3RhdGljIGludAorZmluZF9lbnZfY29uZmlnX3ZhbHVlKEZJTEUgKiBlbnZfZmlsZSwgY29uc3Qgd2NoYXJfdCAqIGtleSwgd2NoYXJfdCAqIHZhbHVlKQoreworICAgIGludCByZXN1bHQgPSAwOyAvKiBtZWFuaW5nIG5vdCBmb3VuZCAqLworICAgIGNoYXIgYnVmZmVyW01BWFBBVEhMRU4qMisxXTsgIC8qIGFsbG93IGV4dHJhIGZvciBrZXksICc9JywgZXRjLiAqLworCisgICAgZnNlZWsoZW52X2ZpbGUsIDAsIFNFRUtfU0VUKTsKKyAgICB3aGlsZSAoIWZlb2YoZW52X2ZpbGUpKSB7CisgICAgICAgIGNoYXIgKiBwID0gZmdldHMoYnVmZmVyLCBNQVhQQVRITEVOKjIsIGVudl9maWxlKTsKKyAgICAgICAgd2NoYXJfdCB0bXBidWZmZXJbTUFYUEFUSExFTioyKzFdOworICAgICAgICBQeU9iamVjdCAqIGRlY29kZWQ7CisgICAgICAgIGludCBuOworCisgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbiA9IHN0cmxlbihwKTsKKyAgICAgICAgaWYgKHBbbiAtIDFdICE9ICdcbicpIHsKKyAgICAgICAgICAgIC8qIGxpbmUgaGFzIG92ZXJmbG93ZWQgLSBiYWlsICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAocFswXSA9PSAnIycpICAgIC8qIENvbW1lbnQgLSBza2lwICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KGJ1ZmZlciwgbiwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICBpZiAoZGVjb2RlZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGs7CisgICAgICAgICAgICBrID0gUHlVbmljb2RlX0FzV2lkZUNoYXIoZGVjb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBidWZmZXIsIE1BWFBBVEhMRU4gKiAyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKKyAgICAgICAgICAgIGlmIChrID49IDApIHsKKyAgICAgICAgICAgICAgICB3Y2hhcl90ICogdG9rID0gd2NzdG9rKHRtcGJ1ZmZlciwgTCIgXHRcclxuIik7CisgICAgICAgICAgICAgICAgaWYgKCh0b2sgIT0gTlVMTCkgJiYgIXdjc2NtcCh0b2ssIGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rKE5VTEwsIEwiIFx0Iik7CisgICAgICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBMIj0iKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rKE5VTEwsIEwiXHJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvayAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbmNweSh2YWx1ZSwgdG9rLCBNQVhQQVRITEVOKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyB2b2lkCiBjYWxjdWxhdGVfcGF0aCh2b2lkKQogewpAQCAtNDU3LDYgKzUwNCw0MCBAQAogICAgIC8qIHByb2dwYXRoIGd1YXJhbnRlZWQgXDAgdGVybWluYXRlZCBpbiBNQVhQQVRIKzEgYnl0ZXMuICovCiAgICAgd2NzY3B5KGFyZ3YwX3BhdGgsIHByb2dwYXRoKTsKICAgICByZWR1Y2UoYXJndjBfcGF0aCk7CisKKyAgICAvKiBTZWFyY2ggZm9yIGFuIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZSwgZmlyc3QgaW4gdGhlCisgICAgICAgZXhlY3V0YWJsZSdzIGRpcmVjdG9yeSBhbmQgdGhlbiBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KKyAgICAgICBJZiBmb3VuZCwgb3BlbiBpdCBmb3IgdXNlIHdoZW4gc2VhcmNoaW5nIGZvciBwcmVmaXhlcy4KKyAgICAqLworCisgICAgeworICAgICAgICB3Y2hhcl90IHRtcGJ1ZmZlcltNQVhQQVRITEVOKzFdOworICAgICAgICB3Y2hhcl90ICplbnZfY2ZnID0gTCJweXZlbnYuY2ZnIjsKKyAgICAgICAgRklMRSAqIGVudl9maWxlID0gTlVMTDsKKworICAgICAgICB3Y3NjcHkodG1wYnVmZmVyLCBhcmd2MF9wYXRoKTsKKyAgICAgICAgam9pbih0bXBidWZmZXIsIGVudl9jZmcpOworICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4odG1wYnVmZmVyLCBMInIiKTsKKyAgICAgICAgaWYgKGVudl9maWxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgICAgIHJlZHVjZSh0bXBidWZmZXIpOworICAgICAgICAgICAgcmVkdWNlKHRtcGJ1ZmZlcik7CisgICAgICAgICAgICBqb2luKHRtcGJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4odG1wYnVmZmVyLCBMInIiKTsKKyAgICAgICAgICAgIGlmIChlbnZfZmlsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChlbnZfZmlsZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBMb29rIGZvciBhICdob21lJyB2YXJpYWJsZSBhbmQgc2V0IGFyZ3YwX3BhdGggdG8gaXQsIGlmIGZvdW5kICovCisgICAgICAgICAgICBpZiAoZmluZF9lbnZfY29uZmlnX3ZhbHVlKGVudl9maWxlLCBMImhvbWUiLCB0bXBidWZmZXIpKSB7CisgICAgICAgICAgICAgICAgd2NzY3B5KGFyZ3YwX3BhdGgsIHRtcGJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmY2xvc2UoZW52X2ZpbGUpOworICAgICAgICAgICAgZW52X2ZpbGUgPSBOVUxMOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKHB5dGhvbmhvbWUgPT0gTlVMTCB8fCAqcHl0aG9uaG9tZSA9PSAnXDAnKSB7CiAgICAgICAgIGlmIChzZWFyY2hfZm9yX3ByZWZpeChhcmd2MF9wYXRoLCBMQU5ETUFSSykpCiAgICAgICAgICAgICBweXRob25ob21lID0gcHJlZml4OwpAQCAtNzA4LDggKzc4OSw4IEBACiAgICAgcmV0dXJuIHByb2dwYXRoOwogfQogCi0vKiBMb2FkIHB5dGhvbjMuZGxsIGJlZm9yZSBsb2FkaW5nIGFueSBleHRlbnNpb24gbW9kdWxlIHRoYXQgbWlnaHQgcmVmZXIgCi0gICB0byBpdC4gVGhhdCB3YXksIHdlIGNhbiBiZSBzdXJlIHRoYXQgYWx3YXlzIHRoZSBweXRob24zLmRsbCBjb3JyZXNwb25kaW5nIAorLyogTG9hZCBweXRob24zLmRsbCBiZWZvcmUgbG9hZGluZyBhbnkgZXh0ZW5zaW9uIG1vZHVsZSB0aGF0IG1pZ2h0IHJlZmVyCisgICB0byBpdC4gVGhhdCB3YXksIHdlIGNhbiBiZSBzdXJlIHRoYXQgYWx3YXlzIHRoZSBweXRob24zLmRsbCBjb3JyZXNwb25kaW5nCiAgICB0byB0aGlzIHB5dGhvbiBETEwgaXMgbG9hZGVkLCBub3QgYSBweXRob24zLmRsbCB0aGF0IG1pZ2h0IGJlIG9uIHRoZSBwYXRoCiAgICBieSBjaGFuY2UuCiAgICBSZXR1cm4gd2hldGhlciB0aGUgRExMIHdhcyBmb3VuZC4KZGlmZiAtLWdpdCBhL1BDL2ltcG9ydF9udC5jIGIvUEMvaW1wb3J0X250LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NmE3NzQuLjAwMDAwMDAKLS0tIGEvUEMvaW1wb3J0X250LmMKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotIGltcG9ydF9udC5jCi0KLSAgV2luMzIgc3BlY2lmaWMgaW1wb3J0IGNvZGUuCi0KLSovCi0KLSNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlICJvc2RlZnMuaCIKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSAiaW1wb3J0ZGwuaCIKLSNpbmNsdWRlICJtYWxsb2MuaCIgLyogZm9yIGFsbG9jYSAqLwotCi0vKiBhIHN0cmluZyBsb2FkZWQgZnJvbSB0aGUgRExMIGF0IHN0YXJ0dXAgKi8KLWV4dGVybiBjb25zdCBjaGFyICpQeVdpbl9ETExWZXJzaW9uU3RyaW5nOwotCi1GSUxFICpQeVdpbl9GaW5kUmVnaXN0ZXJlZE1vZHVsZShjb25zdCBjaGFyICptb2R1bGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZpbGVkZXNjciAqKnBwRmlsZURlc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpwYXRoQnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwYXRoTGVuKQotewotICAgIGNoYXIgKm1vZHVsZUtleTsKLSAgICBjb25zdCBjaGFyIGtleVByZWZpeFtdID0gIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXCI7Ci0gICAgY29uc3QgY2hhciBrZXlTdWZmaXhbXSA9ICJcXE1vZHVsZXNcXCI7Ci0jaWZkZWYgX0RFQlVHCi0gICAgLyogSW4gZGVidWdnaW5nIGJ1aWxkcywgd2UgX211c3RfIGhhdmUgdGhlIGRlYnVnIHZlcnNpb24KLSAgICAgKiByZWdpc3RlcmVkLgotICAgICAqLwotICAgIGNvbnN0IGNoYXIgZGVidWdTdHJpbmdbXSA9ICJcXERlYnVnIjsKLSNlbHNlCi0gICAgY29uc3QgY2hhciBkZWJ1Z1N0cmluZ1tdID0gIiI7Ci0jZW5kaWYKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHAgPSBOVUxMOwotICAgIEZJTEUgKmZwOwotICAgIEhLRVkga2V5QmFzZSA9IEhLRVlfQ1VSUkVOVF9VU0VSOwotICAgIGludCBtb2ROYW1lU2l6ZTsKLSAgICBsb25nIHJlZ1N0YXQ7Ci0KLSAgICAvKiBDYWxjdWxhdGUgdGhlIHNpemUgZm9yIHRoZSBzcHJpbnRmIGJ1ZmZlci4KLSAgICAgKiBHZXQgdGhlIHNpemUgb2YgdGhlIGNoYXJzIG9ubHksIHBsdXMgMSBOVUxMLgotICAgICAqLwotICAgIHNpemVfdCBidWZTaXplID0gc2l6ZW9mKGtleVByZWZpeCktMSArCi0gICAgICAgICAgICAgICAgICAgICBzdHJsZW4oUHlXaW5fRExMVmVyc2lvblN0cmluZykgKwotICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGtleVN1ZmZpeCkgKwotICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG1vZHVsZU5hbWUpICsKLSAgICAgICAgICAgICAgICAgICAgIHNpemVvZihkZWJ1Z1N0cmluZykgLSAxOwotICAgIC8qIGFsbG9jYSA9PSBubyBmcmVlIHJlcXVpcmVkLCBidXQgbWVtb3J5IG9ubHkgbG9jYWwgdG8gZm4sCi0gICAgICogYWxzbyBubyBoZWFwIGZyYWdtZW50YXRpb24hCi0gICAgICovCi0gICAgbW9kdWxlS2V5ID0gYWxsb2NhKGJ1ZlNpemUpOwotICAgIFB5T1Nfc25wcmludGYobW9kdWxlS2V5LCBidWZTaXplLAotICAgICAgICAgICAgICAgICAgIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXCVzXFxNb2R1bGVzXFwlcyVzIiwKLSAgICAgICAgICAgICAgICAgIFB5V2luX0RMTFZlcnNpb25TdHJpbmcsIG1vZHVsZU5hbWUsIGRlYnVnU3RyaW5nKTsKLQotICAgIGFzc2VydChwYXRoTGVuIDwgSU5UX01BWCk7Ci0gICAgbW9kTmFtZVNpemUgPSAoaW50KXBhdGhMZW47Ci0gICAgcmVnU3RhdCA9IFJlZ1F1ZXJ5VmFsdWUoa2V5QmFzZSwgbW9kdWxlS2V5LCBwYXRoQnVmLCAmbW9kTmFtZVNpemUpOwotICAgIGlmIChyZWdTdGF0ICE9IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgLyogTm8gdXNlciBzZXR0aW5nIC0gbG9va3VwIGluIG1hY2hpbmUgc2V0dGluZ3MgKi8KLSAgICAgICAga2V5QmFzZSA9IEhLRVlfTE9DQUxfTUFDSElORTsKLSAgICAgICAgLyogYmUgYW5hbCAtIGZhaWx1cmUgbWF5IGhhdmUgcmVzZXQgc2l6ZSBwYXJhbSAqLwotICAgICAgICBtb2ROYW1lU2l6ZSA9IChpbnQpcGF0aExlbjsKLSAgICAgICAgcmVnU3RhdCA9IFJlZ1F1ZXJ5VmFsdWUoa2V5QmFzZSwgbW9kdWxlS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoQnVmLCAmbW9kTmFtZVNpemUpOwotCi0gICAgICAgIGlmIChyZWdTdGF0ICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgLyogdXNlIHRoZSBmaWxlIGV4dGVuc2lvbiB0byBsb2NhdGUgdGhlIHR5cGUgZW50cnkuICovCi0gICAgZm9yIChmZHAgPSBfUHlJbXBvcnRfRmlsZXRhYjsgZmRwLT5zdWZmaXggIT0gTlVMTDsgZmRwKyspIHsKLSAgICAgICAgc2l6ZV90IGV4dExlbiA9IHN0cmxlbihmZHAtPnN1ZmZpeCk7Ci0gICAgICAgIGFzc2VydChtb2ROYW1lU2l6ZSA+PSAwKTsgLyogZWxzZSBjYXN0IHRvIHNpemVfdCBpcyB3cm9uZyAqLwotICAgICAgICBpZiAoKHNpemVfdCltb2ROYW1lU2l6ZSA+IGV4dExlbiAmJgotICAgICAgICAgICAgc3RybmljbXAocGF0aEJ1ZiArICgoc2l6ZV90KW1vZE5hbWVTaXplLWV4dExlbi0xKSwKLSAgICAgICAgICAgICAgICAgICAgIGZkcC0+c3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgZXh0TGVuKSA9PSAwKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChmZHAtPnN1ZmZpeCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcCA9IGZvcGVuKHBhdGhCdWYsIGZkcC0+bW9kZSk7Ci0gICAgaWYgKGZwICE9IE5VTEwpCi0gICAgICAgICpwcEZpbGVEZXNjID0gZmRwOwotICAgIHJldHVybiBmcDsKLX0KZGlmZiAtLWdpdCBhL1BDL2xhdW5jaGVyLmMgYi9QQy9sYXVuY2hlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYWQ0NGEKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9sYXVuY2hlci5jCkBAIC0wLDAgKzEsMTM2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEyIFZpbmF5IFNhamlwLgorICogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgY29udHJpYnV0b3IgYWdyZWVtZW50LgorICoKKyAqIEJhc2VkIG9uIHRoZSB3b3JrIG9mOgorICoKKyAqIE1hcmsgSGFtbW9uZCAob3JpZ2luYWwgYXV0aG9yIG9mIFB5dGhvbiB2ZXJzaW9uKQorICogQ3VydCBIYWdlbmxvY2hlciAoam9iIG1hbmFnZW1lbnQpCisgKi8KKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxzaGxvYmouaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHRjaGFyLmg+CisKKyNkZWZpbmUgQlVGU0laRSAyNTYKKyNkZWZpbmUgTVNHU0laRSAxMDI0CisKKy8qIEJ1aWxkIG9wdGlvbnMuICovCisjZGVmaW5lIFNLSVBfUFJFRklYCisvKiAjZGVmaW5lIFNFQVJDSF9QQVRIICovCisKKy8qIEp1c3QgZm9yIG5vdyAtIHN0YXRpYyBkZWZpbml0aW9uICovCisKK3N0YXRpYyBGSUxFICogbG9nX2ZwID0gTlVMTDsKKworc3RhdGljIHdjaGFyX3QgKgorc2tpcF93aGl0ZXNwYWNlKHdjaGFyX3QgKiBwKQoreworICAgIHdoaWxlICgqcCAmJiBpc3NwYWNlKCpwKSkKKyAgICAgICAgKytwOworICAgIHJldHVybiBwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpcyBoZXJlIHRvIHNpbXBsaWZ5IG1lbW9yeSBtYW5hZ2VtZW50CisgKiBhbmQgdG8gdHJlYXQgYmxhbmsgdmFsdWVzIGFzIGlmIHRoZXkgYXJlIGFic2VudC4KKyAqLworc3RhdGljIHdjaGFyX3QgKiBnZXRfZW52KHdjaGFyX3QgKiBrZXkpCit7CisgICAgLyogVGhpcyBpcyBub3QgdGhyZWFkLXNhZmUsIGp1c3QgbGlrZSBnZXRlbnYgKi8KKyAgICBzdGF0aWMgd2NoYXJfdCBidWZbMjU2XTsKKyAgICBEV09SRCByZXN1bHQgPSBHZXRFbnZpcm9ubWVudFZhcmlhYmxlVyhrZXksIGJ1ZiwgMjU2KTsKKworICAgIGlmIChyZXN1bHQgPiAyNTUpIHsKKyAgICAgICAgLyogTGFyZ2UgZW52aXJvbm1lbnQgdmFyaWFibGUuIEFjY2VwdCBzb21lIGxlYWthZ2UgKi8KKyAgICAgICAgd2NoYXJfdCAqYnVmMiA9ICh3Y2hhcl90KiltYWxsb2Moc2l6ZW9mKHdjaGFyX3QpICogKHJlc3VsdCsxKSk7CisgICAgICAgIEdldEVudmlyb25tZW50VmFyaWFibGVXKGtleSwgYnVmMiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGJ1ZjI7CisgICAgfQorCisgICAgaWYgKHJlc3VsdCA9PSAwKQorICAgICAgICAvKiBFaXRoZXIgc29tZSBlcnJvciwgZS5nLiBFUlJPUl9FTlZWQVJfTk9UX0ZPVU5ELAorICAgICAgICAgICBvciBhbiBlbXB0eSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gYnVmOworfQorCisKK3N0YXRpYyB2b2lkCitkZWJ1Zyh3Y2hhcl90ICogZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YTsKKworICAgIGlmIChsb2dfZnAgIT0gTlVMTCkgeworICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICAgICAgdmZ3cHJpbnRmX3MobG9nX2ZwLCBmb3JtYXQsIHZhKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCit3aW5lcnJvcihpbnQgcmMsIHdjaGFyX3QgKiBtZXNzYWdlLCBpbnQgc2l6ZSkKK3sKKyAgICBGb3JtYXRNZXNzYWdlVygKKyAgICAgICAgRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfCBGT1JNQVRfTUVTU0FHRV9JR05PUkVfSU5TRVJUUywKKyAgICAgICAgTlVMTCwgcmMsIE1BS0VMQU5HSUQoTEFOR19ORVVUUkFMLCBTVUJMQU5HX0RFRkFVTFQpLAorICAgICAgICBtZXNzYWdlLCBzaXplLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQKK2Vycm9yKGludCByYywgd2NoYXJfdCAqIGZvcm1hdCwgLi4uICkKK3sKKyAgICB2YV9saXN0IHZhOworICAgIHdjaGFyX3QgbWVzc2FnZVtNU0dTSVpFXTsKKyAgICB3Y2hhcl90IHdpbl9tZXNzYWdlW01TR1NJWkVdOworICAgIGludCBsZW47CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBsZW4gPSBfdnNud3ByaW50Zl9zKG1lc3NhZ2UsIE1TR1NJWkUsIF9UUlVOQ0FURSwgZm9ybWF0LCB2YSk7CisKKyAgICBpZiAocmMgPT0gMCkgeyAgLyogYSBXaW5kb3dzIGVycm9yICovCisgICAgICAgIHdpbmVycm9yKEdldExhc3RFcnJvcigpLCB3aW5fbWVzc2FnZSwgTVNHU0laRSk7CisgICAgICAgIGlmIChsZW4gPj0gMCkgeworICAgICAgICAgICAgX3Nud3ByaW50Zl9zKCZtZXNzYWdlW2xlbl0sIE1TR1NJWkUgLSBsZW4sIF9UUlVOQ0FURSwgTCI6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3aW5fbWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyNpZiAhZGVmaW5lZChfV0lORE9XUykKKyAgICBmd3ByaW50ZihzdGRlcnIsIEwiJXNcbiIsIG1lc3NhZ2UpOworI2Vsc2UKKyAgICBNZXNzYWdlQm94KE5VTEwsIG1lc3NhZ2UsIFRFWFQoIlB5dGhvbiBMYXVuY2hlciBpcyBzb3JyeSB0byBzYXkgLi4uIiksIE1CX09LKTsgCisjZW5kaWYKKyAgICBFeGl0UHJvY2VzcyhyYyk7Cit9CisKKyNpZiBkZWZpbmVkKF9XSU5ET1dTKQorCisjZGVmaW5lIFBZVEhPTl9FWEVDVVRBQkxFIEwicHl0aG9udy5leGUiCisKKyNlbHNlCisKKyNkZWZpbmUgUFlUSE9OX0VYRUNVVEFCTEUgTCJweXRob24uZXhlIgorCisjZW5kaWYKKworI2RlZmluZSBSQ19OT19TVERfSEFORExFUyAgIDEwMAorI2RlZmluZSBSQ19DUkVBVEVfUFJPQ0VTUyAgIDEwMQorI2RlZmluZSBSQ19CQURfVklSVFVBTF9QQVRIIDEwMgorI2RlZmluZSBSQ19OT19QWVRIT04gICAgICAgIDEwMworCisjZGVmaW5lIE1BWF9WRVJTSU9OX1NJWkUgICAgNAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgd2NoYXJfdCB2ZXJzaW9uW01BWF9WRVJTSU9OX1NJWkVdOyAvKiBtLm4gKi8KKyAgICBpbnQgYml0czsgICAvKiAzMiBvciA2NCAqLworICAgIHdjaGFyX3QgZXhlY3V0YWJsZVtNQVhfUEFUSF07Cit9IElOU1RBTExFRF9QWVRIT047CisKKy8qCisgKiBUbyBhdm9pZCBtZXNzaW5nIGFib3V0IHdpdGggaGVhcCBhbGxvY2F0aW9ucywganVzdCBhc3N1bWUgd2UgY2FuIGFsbG9jYXRlCisgKiBzdGF0aWNhbGx5IGFuZCBuZXZlciBoYXZlIHRvIGRlYWwgd2l0aCBtb3JlIHZlcnNpb25zIHRoYW4gdGhpcy4KKyAqLworI2RlZmluZSBNQVhfSU5TVEFMTEVEX1BZVEhPTlMgICAxMDAKKworc3RhdGljIElOU1RBTExFRF9QWVRIT04gaW5zdGFsbGVkX3B5dGhvbnNbTUFYX0lOU1RBTExFRF9QWVRIT05TXTsKKworc3RhdGljIHNpemVfdCBudW1faW5zdGFsbGVkX3B5dGhvbnMgPSAwOworCisvKiB0byBob2xkIFNPRlRXQVJFXFB5dGhvblxQeXRob25Db3JlXFguWVxJbnN0YWxsUGF0aCAqLworI2RlZmluZSBJUF9CQVNFX1NJWkUgNDAKKyNkZWZpbmUgSVBfU0laRSAoSVBfQkFTRV9TSVpFICsgTUFYX1ZFUlNJT05fU0laRSkKKyNkZWZpbmUgQ09SRV9QQVRIIEwiU09GVFdBUkVcXFB5dGhvblxcUHl0aG9uQ29yZSIKKworc3RhdGljIHdjaGFyX3QgKiBsb2NhdGlvbl9jaGVja3NbXSA9IHsKKyAgICBMIlxcIiwKKyAgICBMIlxcUENCdWlsZFxcIiwKKyAgICBMIlxcUENCdWlsZFxcYW1kNjRcXCIsCisgICAgTlVMTAorfTsKKworc3RhdGljIElOU1RBTExFRF9QWVRIT04gKgorZmluZF9leGlzdGluZ19weXRob24od2NoYXJfdCAqIHBhdGgpCit7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIHJlc3VsdCA9IE5VTEw7CisgICAgc2l6ZV90IGk7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIGlwOworCisgICAgZm9yIChpID0gMCwgaXAgPSBpbnN0YWxsZWRfcHl0aG9uczsgaSA8IG51bV9pbnN0YWxsZWRfcHl0aG9uczsgaSsrLCBpcCsrKSB7CisgICAgICAgIGlmIChfd2NzaWNtcChwYXRoLCBpcC0+ZXhlY3V0YWJsZSkgPT0gMCkgeworICAgICAgICAgICAgcmVzdWx0ID0gaXA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorbG9jYXRlX3B5dGhvbnNfZm9yX2tleShIS0VZIHJvb3QsIFJFR1NBTSBmbGFncykKK3sKKyAgICBIS0VZIGNvcmVfcm9vdCwgaXBfa2V5OworICAgIExTVEFUVVMgc3RhdHVzID0gUmVnT3BlbktleUV4Vyhyb290LCBDT1JFX1BBVEgsIDAsIGZsYWdzLCAmY29yZV9yb290KTsKKyAgICB3Y2hhcl90IG1lc3NhZ2VbTVNHU0laRV07CisgICAgRFdPUkQgaTsKKyAgICBzaXplX3QgbjsKKyAgICBCT09MIG9rOworICAgIERXT1JEIHR5cGUsIGRhdGFfc2l6ZSwgYXR0cnM7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIGlwLCAqIHBpcDsKKyAgICB3Y2hhcl90IGlwX3BhdGhbSVBfU0laRV07CisgICAgd2NoYXJfdCAqIGNoZWNrOworICAgIHdjaGFyX3QgKiogY2hlY2twOworICAgIHdjaGFyX3QgKmtleV9uYW1lID0gKHJvb3QgPT0gSEtFWV9MT0NBTF9NQUNISU5FKSA/IEwiSEtMTSIgOiBMIkhLQ1UiOworCisgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9TVUNDRVNTKQorICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6IHVuYWJsZSB0byBvcGVuIFB5dGhvbkNvcmUga2V5IGluICVzXG4iLAorICAgICAgICAgICAgICBrZXlfbmFtZSk7CisgICAgZWxzZSB7CisgICAgICAgIGlwID0gJmluc3RhbGxlZF9weXRob25zW251bV9pbnN0YWxsZWRfcHl0aG9uc107CisgICAgICAgIGZvciAoaSA9IDA7IG51bV9pbnN0YWxsZWRfcHl0aG9ucyA8IE1BWF9JTlNUQUxMRURfUFlUSE9OUzsgaSsrKSB7CisgICAgICAgICAgICBzdGF0dXMgPSBSZWdFbnVtS2V5Vyhjb3JlX3Jvb3QsIGksIGlwLT52ZXJzaW9uLCBNQVhfVkVSU0lPTl9TSVpFKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfTk9fTU9SRV9JVEVNUykgeworICAgICAgICAgICAgICAgICAgICAvKiB1bmV4cGVjdGVkIGVycm9yICovCisgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKHN0YXR1cywgbWVzc2FnZSwgTVNHU0laRSk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiQ2FuJ3QgZW51bWVyYXRlIHJlZ2lzdHJ5IGtleSBmb3IgdmVyc2lvbiAlczogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT52ZXJzaW9uLCBtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfc253cHJpbnRmX3MoaXBfcGF0aCwgSVBfU0laRSwgX1RSVU5DQVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIiVzXFwlc1xcSW5zdGFsbFBhdGgiLCBDT1JFX1BBVEgsIGlwLT52ZXJzaW9uKTsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBSZWdPcGVuS2V5RXhXKHJvb3QsIGlwX3BhdGgsIDAsIGZsYWdzLCAmaXBfa2V5KTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICAgICAgd2luZXJyb3Ioc3RhdHVzLCBtZXNzYWdlLCBNU0dTSVpFKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogJ21lc3NhZ2UnIGFscmVhZHkgaGFzIGEgdHJhaWxpbmcgXG4KKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCIlc1xcJXM6ICVzIiwga2V5X25hbWUsIGlwX3BhdGgsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGF0YV9zaXplID0gc2l6ZW9mKGlwLT5leGVjdXRhYmxlKSAtIDE7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gUmVnUXVlcnlWYWx1ZUV4VyhpcF9rZXksIE5VTEwsIE5VTEwsICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExQQllURSlpcC0+ZXhlY3V0YWJsZSwgJmRhdGFfc2l6ZSk7CisgICAgICAgICAgICAgICAgUmVnQ2xvc2VLZXkoaXBfa2V5KTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICAgICAgd2luZXJyb3Ioc3RhdHVzLCBtZXNzYWdlLCBNU0dTSVpFKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCIlc1xcJXM6ICVzXG4iLCBrZXlfbmFtZSwgaXBfcGF0aCwgbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBSRUdfU1opIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YV9zaXplID0gZGF0YV9zaXplIC8gc2l6ZW9mKHdjaGFyX3QpIC0gMTsgIC8qIGZvciBOVUwgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlwLT5leGVjdXRhYmxlW2RhdGFfc2l6ZSAtIDFdID09IEwnXFwnKQorICAgICAgICAgICAgICAgICAgICAgICAgLS1kYXRhX3NpemU7IC8qIHJlZyB2YWx1ZSBlbmRlZCBpbiBhIGJhY2tzbGFzaCAqLworICAgICAgICAgICAgICAgICAgICAvKiBpcC0+ZXhlY3V0YWJsZSBpcyBkYXRhX3NpemUgbG9uZyAqLworICAgICAgICAgICAgICAgICAgICBmb3IgKGNoZWNrcCA9IGxvY2F0aW9uX2NoZWNrczsgKmNoZWNrcDsgKytjaGVja3ApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrID0gKmNoZWNrcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9zbndwcmludGZfcygmaXAtPmV4ZWN1dGFibGVbZGF0YV9zaXplXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCAtIGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCAtIGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIiVzJXMiLCBjaGVjaywgUFlUSE9OX0VYRUNVVEFCTEUpOworICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1coaXAtPmV4ZWN1dGFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZXJyb3IoR2V0TGFzdEVycm9yKCksIG1lc3NhZ2UsIE1TR1NJWkUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJXM6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRycyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJyVzJyBpcyBhIFwKK2RpcmVjdG9yeVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgYXR0cnMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmluZF9leGlzdGluZ19weXRob24oaXAtPmV4ZWN1dGFibGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlczogYWxyZWFkeSBcCitmb3VuZDogJXNcbiIsIGlwLT5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIHRoZSBleGVjdXRhYmxlIHR5cGUuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBHZXRCaW5hcnlUeXBlVyhpcC0+ZXhlY3V0YWJsZSwgJmF0dHJzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiRmFpbHVyZSBnZXR0aW5nIGJpbmFyeSB0eXBlOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJzID09IFNDU182NEJJVF9CSU5BUlkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+Yml0cyA9IDY0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRycyA9PSBTQ1NfMzJCSVRfQklOQVJZKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmJpdHMgPSAzMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmJpdHMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXAtPmJpdHMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlczogXAoraW52YWxpZCBiaW5hcnkgdHlwZTogJVhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgYXR0cnMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdjc2NocihpcC0+ZXhlY3V0YWJsZSwgTCcgJykgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGhhcyBzcGFjZXMsIHNvIHF1b3RlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHdjc2xlbihpcC0+ZXhlY3V0YWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtbW92ZSgmaXAtPmV4ZWN1dGFibGVbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGVbMF0gPSBMJ1wiJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZVtuICsgMV0gPSBMJ1wiJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZVtuICsgMl0gPSBMJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJXMgXAoraXMgYSAlZGJpdCBleGVjdXRhYmxlXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlLCBpcC0+Yml0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK251bV9pbnN0YWxsZWRfcHl0aG9uczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcCA9IGlwKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtX2luc3RhbGxlZF9weXRob25zID49CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX0lOU1RBTExFRF9QWVRIT05TKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ29weSBvdmVyIHRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgbmV4dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmlwID0gKnBpcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBSZWdDbG9zZUtleShjb3JlX3Jvb3QpOworICAgIH0KK30KKworc3RhdGljIGludAorY29tcGFyZV9weXRob25zKGNvbnN0IHZvaWQgKiBwMSwgY29uc3Qgdm9pZCAqIHAyKQoreworICAgIElOU1RBTExFRF9QWVRIT04gKiBpcDEgPSAoSU5TVEFMTEVEX1BZVEhPTiAqKSBwMTsKKyAgICBJTlNUQUxMRURfUFlUSE9OICogaXAyID0gKElOU1RBTExFRF9QWVRIT04gKikgcDI7CisgICAgLyogbm90ZSByZXZlcnNlIHNvcnRpbmcgb24gdmVyc2lvbiAqLworICAgIGludCByZXN1bHQgPSB3Y3NjbXAoaXAyLT52ZXJzaW9uLCBpcDEtPnZlcnNpb24pOworCisgICAgaWYgKHJlc3VsdCA9PSAwKQorICAgICAgICByZXN1bHQgPSBpcDItPmJpdHMgLSBpcDEtPmJpdHM7IC8qIDY0IGJlZm9yZSAzMiAqLworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCitsb2NhdGVfYWxsX3B5dGhvbnMoKQoreworI2lmIGRlZmluZWQoX01fWDY0KQorICAgIC8vIElmIHdlIGFyZSBhIDY0Yml0IHByb2Nlc3MsIGZpcnN0IGhpdCB0aGUgMzJiaXQga2V5cy4KKyAgICBkZWJ1ZyhMImxvY2F0aW5nIFB5dGhvbnMgaW4gMzJiaXQgcmVnaXN0cnlcbiIpOworICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9DVVJSRU5UX1VTRVIsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzMyS0VZKTsKKyAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfTE9DQUxfTUFDSElORSwgS0VZX1JFQUQgfCBLRVlfV09XNjRfMzJLRVkpOworI2Vsc2UKKyAgICAvLyBJZiB3ZSBhcmUgYSAzMmJpdCBwcm9jZXNzIG9uIGEgNjRiaXQgV2luZG93cywgZmlyc3QgaGl0IHRoZSA2NGJpdCBrZXlzLgorICAgIEJPT0wgZjY0ID0gRkFMU0U7CisgICAgaWYgKElzV293NjRQcm9jZXNzKEdldEN1cnJlbnRQcm9jZXNzKCksICZmNjQpICYmIGY2NCkgeworICAgICAgICBkZWJ1ZyhMImxvY2F0aW5nIFB5dGhvbnMgaW4gNjRiaXQgcmVnaXN0cnlcbiIpOworICAgICAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF82NEtFWSk7CisgICAgICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9MT0NBTF9NQUNISU5FLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF82NEtFWSk7CisgICAgfQorI2VuZGlmICAgIAorICAgIC8vIG5vdyBoaXQgdGhlICJuYXRpdmUiIGtleSBmb3IgdGhpcyBwcm9jZXNzIGJpdHRlZG5lc3MuCisgICAgZGVidWcoTCJsb2NhdGluZyBQeXRob25zIGluIG5hdGl2ZSByZWdpc3RyeVxuIik7CisgICAgbG9jYXRlX3B5dGhvbnNfZm9yX2tleShIS0VZX0NVUlJFTlRfVVNFUiwgS0VZX1JFQUQpOworICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9MT0NBTF9NQUNISU5FLCBLRVlfUkVBRCk7CisgICAgcXNvcnQoaW5zdGFsbGVkX3B5dGhvbnMsIG51bV9pbnN0YWxsZWRfcHl0aG9ucywgc2l6ZW9mKElOU1RBTExFRF9QWVRIT04pLAorICAgICAgICAgIGNvbXBhcmVfcHl0aG9ucyk7Cit9CisKK3N0YXRpYyBJTlNUQUxMRURfUFlUSE9OICoKK2ZpbmRfcHl0aG9uX2J5X3ZlcnNpb24od2NoYXJfdCBjb25zdCAqIHdhbnRlZF92ZXIpCit7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIHJlc3VsdCA9IE5VTEw7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIGlwID0gaW5zdGFsbGVkX3B5dGhvbnM7CisgICAgc2l6ZV90IGksIG47CisgICAgc2l6ZV90IHdsZW4gPSB3Y3NsZW4od2FudGVkX3Zlcik7CisgICAgaW50IGJpdHMgPSAwOworCisgICAgaWYgKHdjc3N0cih3YW50ZWRfdmVyLCBMIi0zMiIpKQorICAgICAgICBiaXRzID0gMzI7CisgICAgZm9yIChpID0gMDsgaSA8IG51bV9pbnN0YWxsZWRfcHl0aG9uczsgaSsrLCBpcCsrKSB7CisgICAgICAgIG4gPSB3Y3NsZW4oaXAtPnZlcnNpb24pOworICAgICAgICBpZiAobiA+IHdsZW4pCisgICAgICAgICAgICBuID0gd2xlbjsKKyAgICAgICAgaWYgKCh3Y3NuY21wKGlwLT52ZXJzaW9uLCB3YW50ZWRfdmVyLCBuKSA9PSAwKSAmJgorICAgICAgICAgICAgLyogYml0cyA9PSAwID0+IGRvbid0IGNhcmUgKi8KKyAgICAgICAgICAgICgoYml0cyA9PSAwKSB8fCAoaXAtPmJpdHMgPT0gYml0cykpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBpcDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworc3RhdGljIHdjaGFyX3QgYXBwZGF0YV9pbmlfcGF0aFtNQVhfUEFUSF07CitzdGF0aWMgd2NoYXJfdCBsYXVuY2hlcl9pbmlfcGF0aFtNQVhfUEFUSF07CisKKy8qCisgKiBHZXQgYSB2YWx1ZSBlaXRoZXIgZnJvbSB0aGUgZW52aXJvbm1lbnQgb3IgYSBjb25maWd1cmF0aW9uIGZpbGUuCisgKiBUaGUga2V5IHBhc3NlZCBpbiB3aWxsIGVpdGhlciBiZSAicHl0aG9uIiwgInB5dGhvbjIiIG9yICJweXRob24zIi4KKyAqLworc3RhdGljIHdjaGFyX3QgKgorZ2V0X2NvbmZpZ3VyZWRfdmFsdWUod2NoYXJfdCAqIGtleSkKK3sKKy8qCisgKiBOb3RlOiB0aGlzIHN0YXRpYyB2YWx1ZSBpcyB1c2VkIHRvIHJldHVybiBhIGNvbmZpZ3VyZWQgdmFsdWUKKyAqIG9idGFpbmVkIGVpdGhlciBmcm9tIHRoZSBlbnZpcm9ubWVudCBvciBjb25maWd1cmF0aW9uIGZpbGUuCisgKiBUaGlzIHNob3VsZCBiZSBPSyBzaW5jZSB0aGVyZSB3b3VsZG4ndCBiZSBhbnkgY29uY3VycmVudCBjYWxscy4KKyAqLworICAgIHN0YXRpYyB3Y2hhcl90IGNvbmZpZ3VyZWRfdmFsdWVbTVNHU0laRV07CisgICAgd2NoYXJfdCAqIHJlc3VsdCA9IE5VTEw7CisgICAgd2NoYXJfdCAqIGZvdW5kX2luID0gTCJlbnZpcm9ubWVudCI7CisgICAgRFdPUkQgc2l6ZTsKKworICAgIC8qIEZpcnN0LCBzZWFyY2ggdGhlIGVudmlyb25tZW50LiAqLworICAgIF9zbndwcmludGZfcyhjb25maWd1cmVkX3ZhbHVlLCBNU0dTSVpFLCBfVFJVTkNBVEUsIEwicHlfJXMiLCBrZXkpOworICAgIHJlc3VsdCA9IGdldF9lbnYoY29uZmlndXJlZF92YWx1ZSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMICYmIGFwcGRhdGFfaW5pX3BhdGhbMF0pIHsKKyAgICAgICAgLyogTm90IGluIGVudmlyb25tZW50OiBjaGVjayBsb2NhbCBjb25maWd1cmF0aW9uLiAqLworICAgICAgICBzaXplID0gR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdXKEwiZGVmYXVsdHMiLCBrZXksIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZF92YWx1ZSwgTVNHU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBkYXRhX2luaV9wYXRoKTsKKyAgICAgICAgaWYgKHNpemUgPiAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBjb25maWd1cmVkX3ZhbHVlOworICAgICAgICAgICAgZm91bmRfaW4gPSBhcHBkYXRhX2luaV9wYXRoOworICAgICAgICB9CisgICAgfQorICAgIGlmIChyZXN1bHQgPT0gTlVMTCAmJiBsYXVuY2hlcl9pbmlfcGF0aFswXSkgeworICAgICAgICAvKiBOb3QgaW4gZW52aXJvbm1lbnQgb3IgbG9jYWw6IGNoZWNrIGdsb2JhbCBjb25maWd1cmF0aW9uLiAqLworICAgICAgICBzaXplID0gR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdXKEwiZGVmYXVsdHMiLCBrZXksIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZF92YWx1ZSwgTVNHU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2hlcl9pbmlfcGF0aCk7CisgICAgICAgIGlmIChzaXplID4gMCkgeworICAgICAgICAgICAgcmVzdWx0ID0gY29uZmlndXJlZF92YWx1ZTsKKyAgICAgICAgICAgIGZvdW5kX2luID0gbGF1bmNoZXJfaW5pX3BhdGg7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBkZWJ1ZyhMImZvdW5kIGNvbmZpZ3VyZWQgdmFsdWUgJyVzPSVzJyBpbiAlc1xuIiwKKyAgICAgICAgICAgICAga2V5LCByZXN1bHQsIGZvdW5kX2luID8gZm91bmRfaW4gOiBMIih1bmtub3duKSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKEwiZm91bmQgbm8gY29uZmlndXJlZCB2YWx1ZSBmb3IgJyVzJ1xuIiwga2V5KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIElOU1RBTExFRF9QWVRIT04gKgorbG9jYXRlX3B5dGhvbih3Y2hhcl90ICogd2FudGVkX3ZlcikKK3sKKyAgICBzdGF0aWMgd2NoYXJfdCBjb25maWdfa2V5IFtdID0geyBMInB5dGhvblgiIH07CisgICAgc3RhdGljIHdjaGFyX3QgKiBsYXN0X2NoYXIgPSAmY29uZmlnX2tleVtzaXplb2YoY29uZmlnX2tleSkgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHdjaGFyX3QpIC0gMl07CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIHJlc3VsdCA9IE5VTEw7CisgICAgc2l6ZV90IG4gPSB3Y3NsZW4od2FudGVkX3Zlcik7CisgICAgd2NoYXJfdCAqIGNvbmZpZ3VyZWRfdmFsdWU7CisKKyAgICBpZiAobnVtX2luc3RhbGxlZF9weXRob25zID09IDApCisgICAgICAgIGxvY2F0ZV9hbGxfcHl0aG9ucygpOworCisgICAgaWYgKG4gPT0gMSkgeyAgIC8qIGp1c3QgbWFqb3IgdmVyc2lvbiBzcGVjaWZpZWQgKi8KKyAgICAgICAgKmxhc3RfY2hhciA9ICp3YW50ZWRfdmVyOworICAgICAgICBjb25maWd1cmVkX3ZhbHVlID0gZ2V0X2NvbmZpZ3VyZWRfdmFsdWUoY29uZmlnX2tleSk7CisgICAgICAgIGlmIChjb25maWd1cmVkX3ZhbHVlICE9IE5VTEwpCisgICAgICAgICAgICB3YW50ZWRfdmVyID0gY29uZmlndXJlZF92YWx1ZTsKKyAgICB9CisgICAgaWYgKCp3YW50ZWRfdmVyKSB7CisgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24od2FudGVkX3Zlcik7CisgICAgICAgIGRlYnVnKEwic2VhcmNoIGZvciBQeXRob24gdmVyc2lvbiAnJXMnIGZvdW5kICIsIHdhbnRlZF92ZXIpOworICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICBkZWJ1ZyhMIiclcydcbiIsIHJlc3VsdC0+ZXhlY3V0YWJsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZWJ1ZyhMIm5vIGludGVycHJldGVyXG4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgKmxhc3RfY2hhciA9IEwnXDAnOyAvKiBsb29rIGZvciBhbiBvdmVyYWxsIGRlZmF1bHQgKi8KKyAgICAgICAgY29uZmlndXJlZF92YWx1ZSA9IGdldF9jb25maWd1cmVkX3ZhbHVlKGNvbmZpZ19rZXkpOworICAgICAgICBpZiAoY29uZmlndXJlZF92YWx1ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oY29uZmlndXJlZF92YWx1ZSk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oTCIyIik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oTCIzIik7CisgICAgICAgIGRlYnVnKEwic2VhcmNoIGZvciBkZWZhdWx0IFB5dGhvbiBmb3VuZCAiKTsKKyAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgZGVidWcoTCJ2ZXJzaW9uICVzIGF0ICclcydcbiIsCisgICAgICAgICAgICAgICAgICByZXN1bHQtPnZlcnNpb24sIHJlc3VsdC0+ZXhlY3V0YWJsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZWJ1ZyhMIm5vIGludGVycHJldGVyXG4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogUHJvY2VzcyBjcmVhdGlvbiBjb2RlCisgKi8KKworc3RhdGljIEJPT0wKK3NhZmVfZHVwbGljYXRlX2hhbmRsZShIQU5ETEUgaW4sIEhBTkRMRSAqIHBvdXQpCit7CisgICAgQk9PTCBvazsKKyAgICBIQU5ETEUgcHJvY2VzcyA9IEdldEN1cnJlbnRQcm9jZXNzKCk7CisgICAgRFdPUkQgcmM7CisKKyAgICAqcG91dCA9IE5VTEw7CisgICAgb2sgPSBEdXBsaWNhdGVIYW5kbGUocHJvY2VzcywgaW4sIHByb2Nlc3MsIHBvdXQsIDAsIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIHJjID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIGlmIChyYyA9PSBFUlJPUl9JTlZBTElEX0hBTkRMRSkgeworICAgICAgICAgICAgZGVidWcoTCJEdXBsaWNhdGVIYW5kbGUgcmV0dXJuZWQgRVJST1JfSU5WQUxJRF9IQU5ETEVcbiIpOworICAgICAgICAgICAgb2sgPSBUUlVFOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVidWcoTCJEdXBsaWNhdGVIYW5kbGUgcmV0dXJuZWQgJWRcbiIsIHJjKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gb2s7Cit9CisKK3N0YXRpYyBCT09MIFdJTkFQSQorY3RybF9jX2hhbmRsZXIoRFdPUkQgY29kZSkKK3sKKyAgICByZXR1cm4gVFJVRTsgICAgLyogV2UganVzdCBpZ25vcmUgYWxsIGNvbnRyb2wgZXZlbnRzLiAqLworfQorCitzdGF0aWMgdm9pZAorcnVuX2NoaWxkKHdjaGFyX3QgKiBjbWRsaW5lKQoreworICAgIEhBTkRMRSBqb2I7CisgICAgSk9CT0JKRUNUX0VYVEVOREVEX0xJTUlUX0lORk9STUFUSU9OIGluZm87CisgICAgRFdPUkQgcmM7CisgICAgQk9PTCBvazsKKyAgICBTVEFSVFVQSU5GT1cgc2k7CisgICAgUFJPQ0VTU19JTkZPUk1BVElPTiBwaTsKKworICAgIGRlYnVnKEwicnVuX2NoaWxkOiBhYm91dCB0byBydW4gJyVzJ1xuIiwgY21kbGluZSk7CisgICAgam9iID0gQ3JlYXRlSm9iT2JqZWN0KE5VTEwsIE5VTEwpOworICAgIG9rID0gUXVlcnlJbmZvcm1hdGlvbkpvYk9iamVjdChqb2IsIEpvYk9iamVjdEV4dGVuZGVkTGltaXRJbmZvcm1hdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5mbywgc2l6ZW9mKGluZm8pLCAmcmMpOworICAgIGlmICghb2sgfHwgKHJjICE9IHNpemVvZihpbmZvKSkgfHwgIWpvYikKKyAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiSm9iIGluZm9ybWF0aW9uIHF1ZXJ5aW5nIGZhaWxlZCIpOworICAgIGluZm8uQmFzaWNMaW1pdEluZm9ybWF0aW9uLkxpbWl0RmxhZ3MgfD0gSk9CX09CSkVDVF9MSU1JVF9LSUxMX09OX0pPQl9DTE9TRSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKT0JfT0JKRUNUX0xJTUlUX1NJTEVOVF9CUkVBS0FXQVlfT0s7CisgICAgb2sgPSBTZXRJbmZvcm1hdGlvbkpvYk9iamVjdChqb2IsIEpvYk9iamVjdEV4dGVuZGVkTGltaXRJbmZvcm1hdGlvbiwgJmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoaW5mbykpOworICAgIGlmICghb2spCisgICAgICAgIGVycm9yKFJDX0NSRUFURV9QUk9DRVNTLCBMIkpvYiBpbmZvcm1hdGlvbiBzZXR0aW5nIGZhaWxlZCIpOworICAgIG1lbXNldCgmc2ksIDAsIHNpemVvZihzaSkpOworICAgIHNpLmNiID0gc2l6ZW9mKHNpKTsKKyAgICBvayA9IHNhZmVfZHVwbGljYXRlX2hhbmRsZShHZXRTdGRIYW5kbGUoU1REX0lOUFVUX0hBTkRMRSksICZzaS5oU3RkSW5wdXQpOworICAgIGlmICghb2spCisgICAgICAgIGVycm9yKFJDX05PX1NURF9IQU5ETEVTLCBMInN0ZGluIGR1cGxpY2F0aW9uIGZhaWxlZCIpOworICAgIG9rID0gc2FmZV9kdXBsaWNhdGVfaGFuZGxlKEdldFN0ZEhhbmRsZShTVERfT1VUUFVUX0hBTkRMRSksICZzaS5oU3RkT3V0cHV0KTsKKyAgICBpZiAoIW9rKQorICAgICAgICBlcnJvcihSQ19OT19TVERfSEFORExFUywgTCJzdGRvdXQgZHVwbGljYXRpb24gZmFpbGVkIik7CisgICAgb2sgPSBzYWZlX2R1cGxpY2F0ZV9oYW5kbGUoR2V0U3RkSGFuZGxlKFNURF9FUlJPUl9IQU5ETEUpLCAmc2kuaFN0ZEVycm9yKTsKKyAgICBpZiAoIW9rKQorICAgICAgICBlcnJvcihSQ19OT19TVERfSEFORExFUywgTCJzdGRlcnIgZHVwbGljYXRpb24gZmFpbGVkIik7CisKKyAgICBvayA9IFNldENvbnNvbGVDdHJsSGFuZGxlcihjdHJsX2NfaGFuZGxlciwgVFJVRSk7CisgICAgaWYgKCFvaykKKyAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiY29udHJvbCBoYW5kbGVyIHNldHRpbmcgZmFpbGVkIik7CisKKyAgICBzaS5kd0ZsYWdzID0gU1RBUlRGX1VTRVNUREhBTkRMRVM7CisgICAgb2sgPSBDcmVhdGVQcm9jZXNzVyhOVUxMLCBjbWRsaW5lLCBOVUxMLCBOVUxMLCBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgTlVMTCwgJnNpLCAmcGkpOworICAgIGlmICghb2spCisgICAgICAgIGVycm9yKFJDX0NSRUFURV9QUk9DRVNTLCBMIlVuYWJsZSB0byBjcmVhdGUgcHJvY2VzcyB1c2luZyAnJXMnIiwgY21kbGluZSk7CisgICAgQXNzaWduUHJvY2Vzc1RvSm9iT2JqZWN0KGpvYiwgcGkuaFByb2Nlc3MpOworICAgIENsb3NlSGFuZGxlKHBpLmhUaHJlYWQpOworICAgIFdhaXRGb3JTaW5nbGVPYmplY3QocGkuaFByb2Nlc3MsIElORklOSVRFKTsKKyAgICBvayA9IEdldEV4aXRDb2RlUHJvY2VzcyhwaS5oUHJvY2VzcywgJnJjKTsKKyAgICBpZiAoIW9rKQorICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJGYWlsZWQgdG8gZ2V0IGV4aXQgY29kZSBvZiBwcm9jZXNzIik7CisgICAgZGVidWcoTCJjaGlsZCBwcm9jZXNzIGV4aXQgY29kZTogJWRcbiIsIHJjKTsKKyAgICBFeGl0UHJvY2VzcyhyYyk7Cit9CisKK3N0YXRpYyB2b2lkCitpbnZva2VfY2hpbGQod2NoYXJfdCAqIGV4ZWN1dGFibGUsIHdjaGFyX3QgKiBzdWZmaXgsIHdjaGFyX3QgKiBjbWRsaW5lKQoreworICAgIHdjaGFyX3QgKiBjaGlsZF9jb21tYW5kOworICAgIHNpemVfdCBjaGlsZF9jb21tYW5kX3NpemU7CisgICAgQk9PTCBub19zdWZmaXggPSAoc3VmZml4ID09IE5VTEwpIHx8ICgqc3VmZml4ID09IEwnXDAnKTsKKyAgICBCT09MIG5vX2NtZGxpbmUgPSAoKmNtZGxpbmUgPT0gTCdcMCcpOworCisgICAgaWYgKG5vX3N1ZmZpeCAmJiBub19jbWRsaW5lKQorICAgICAgICBydW5fY2hpbGQoZXhlY3V0YWJsZSk7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChub19zdWZmaXgpIHsKKyAgICAgICAgICAgIC8qIGFkZCAyIGZvciBzcGFjZSBzZXBhcmF0b3IgKyB0ZXJtaW5hdGluZyBOVUwuICovCisgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgPSB3Y3NsZW4oZXhlY3V0YWJsZSkgKyB3Y3NsZW4oY21kbGluZSkgKyAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogYWRkIDMgZm9yIDIgc3BhY2Ugc2VwYXJhdG9ycyArIHRlcm1pbmF0aW5nIE5VTC4gKi8KKyAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSA9IHdjc2xlbihleGVjdXRhYmxlKSArIHdjc2xlbihzdWZmaXgpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc2xlbihjbWRsaW5lKSArIDM7CisgICAgICAgIH0KKyAgICAgICAgY2hpbGRfY29tbWFuZCA9IGNhbGxvYyhjaGlsZF9jb21tYW5kX3NpemUsIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIGlmIChjaGlsZF9jb21tYW5kID09IE5VTEwpCisgICAgICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJ1bmFibGUgdG8gYWxsb2NhdGUgJWQgYnl0ZXMgZm9yIGNoaWxkIGNvbW1hbmQuIiwKKyAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSk7CisgICAgICAgIGlmIChub19zdWZmaXgpCisgICAgICAgICAgICBfc253cHJpbnRmX3MoY2hpbGRfY29tbWFuZCwgY2hpbGRfY29tbWFuZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSAtIDEsIEwiJXMgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUsIGNtZGxpbmUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBfc253cHJpbnRmX3MoY2hpbGRfY29tbWFuZCwgY2hpbGRfY29tbWFuZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSAtIDEsIEwiJXMgJXMgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUsIHN1ZmZpeCwgY21kbGluZSk7CisgICAgICAgIHJ1bl9jaGlsZChjaGlsZF9jb21tYW5kKTsKKyAgICAgICAgZnJlZShjaGlsZF9jb21tYW5kKTsKKyAgICB9Cit9CisKK3N0YXRpYyB3Y2hhcl90ICogYnVpbHRpbl92aXJ0dWFsX3BhdGhzIFtdID0geworICAgIEwiL3Vzci9iaW4vZW52IHB5dGhvbiIsCisgICAgTCIvdXNyL2Jpbi9weXRob24iLAorICAgIEwiL3Vzci9sb2NhbC9iaW4vcHl0aG9uIiwKKyAgICBMInB5dGhvbiIsCisgICAgTlVMTAorfTsKKworLyogRm9yIG5vdywgYSBzdGF0aWMgYXJyYXkgb2YgY29tbWFuZHMuICovCisKKyNkZWZpbmUgTUFYX0NPTU1BTkRTIDEwMAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgd2NoYXJfdCBrZXlbTUFYX1BBVEhdOworICAgIHdjaGFyX3QgdmFsdWVbTVNHU0laRV07Cit9IENPTU1BTkQ7CisKK3N0YXRpYyBDT01NQU5EIGNvbW1hbmRzW01BWF9DT01NQU5EU107CitzdGF0aWMgaW50IG51bV9jb21tYW5kcyA9IDA7CisKKyNpZiBkZWZpbmVkKFNLSVBfUFJFRklYKQorCitzdGF0aWMgd2NoYXJfdCAqIGJ1aWx0aW5fcHJlZml4ZXMgW10gPSB7CisgICAgLyogVGhlc2UgbXVzdCBiZSBpbiBhbiBvcmRlciB0aGF0IHRoZSBsb25nZXN0IG1hdGNoZXMgc2hvdWxkIGJlIGZvdW5kLAorICAgICAqIGkuZS4gaWYgdGhlIHByZWZpeCBpcyAiL3Vzci9iaW4vZW52ICIsIGl0IHNob3VsZCBtYXRjaCB0aGF0IGVudHJ5CisgICAgICogKmJlZm9yZSogbWF0Y2hpbmcgIi91c3IvYmluLyIuCisgICAgICovCisgICAgTCIvdXNyL2Jpbi9lbnYgIiwKKyAgICBMIi91c3IvYmluLyIsCisgICAgTCIvdXNyL2xvY2FsL2Jpbi8iLAorICAgIE5VTEwKK307CisKK3N0YXRpYyB3Y2hhcl90ICogc2tpcF9wcmVmaXgod2NoYXJfdCAqIG5hbWUpCit7CisgICAgd2NoYXJfdCAqKiBwcCA9IGJ1aWx0aW5fcHJlZml4ZXM7CisgICAgd2NoYXJfdCAqIHJlc3VsdCA9IG5hbWU7CisgICAgd2NoYXJfdCAqIHA7CisgICAgc2l6ZV90IG47CisKKyAgICBmb3IgKDsgcCA9ICpwcDsgcHArKykgeworICAgICAgICBuID0gd2NzbGVuKHApOworICAgICAgICBpZiAoX3djc25pY21wKHAsIG5hbWUsIG4pID09IDApIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSBuOyAgIC8qIHNraXAgdGhlIHByZWZpeCAqLworICAgICAgICAgICAgaWYgKHBbbiAtIDFdID09IEwnICcpIC8qIE5vIGVtcHR5IHN0cmluZ3MgaW4gdGFibGUsIHNvIG4gPiAxICovCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2tpcF93aGl0ZXNwYWNlKHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYKKworI2lmIGRlZmluZWQoU0VBUkNIX1BBVEgpCisKK3N0YXRpYyBDT01NQU5EIHBhdGhfY29tbWFuZDsKKworc3RhdGljIENPTU1BTkQgKiBmaW5kX29uX3BhdGgod2NoYXJfdCAqIG5hbWUpCit7CisgICAgd2NoYXJfdCAqIHBhdGhleHQ7CisgICAgc2l6ZV90ICAgIHZhcnNpemU7CisgICAgd2NoYXJfdCAqIGNvbnRleHQgPSBOVUxMOworICAgIHdjaGFyX3QgKiBleHRlbnNpb247CisgICAgQ09NTUFORCAqIHJlc3VsdCA9IE5VTEw7CisgICAgRFdPUkQgICAgIGxlbjsKKyAgICBlcnJub190ICAgcmM7CisKKyAgICB3Y3NjcHlfcyhwYXRoX2NvbW1hbmQua2V5LCBNQVhfUEFUSCwgbmFtZSk7CisgICAgaWYgKHdjc2NocihuYW1lLCBMJy4nKSAhPSBOVUxMKSB7CisgICAgICAgIC8qIGFzc3VtZSBpdCBoYXMgYW4gZXh0ZW5zaW9uLiAqLworICAgICAgICBsZW4gPSBTZWFyY2hQYXRoVyhOVUxMLCBuYW1lLCBOVUxMLCBNU0dTSVpFLCBwYXRoX2NvbW1hbmQudmFsdWUsIE5VTEwpOworICAgICAgICBpZiAobGVuKSB7CisgICAgICAgICAgICByZXN1bHQgPSAmcGF0aF9jb21tYW5kOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBObyBleHRlbnNpb24gLSBzZWFyY2ggdXNpbmcgcmVnaXN0ZXJlZCBleHRlbnNpb25zLiAqLworICAgICAgICByYyA9IF93ZHVwZW52X3MoJnBhdGhleHQsICZ2YXJzaXplLCBMIlBBVEhFWFQiKTsKKyAgICAgICAgaWYgKHJjID09IDApIHsKKyAgICAgICAgICAgIGV4dGVuc2lvbiA9IHdjc3Rva19zKHBhdGhleHQsIEwiOyIsICZjb250ZXh0KTsKKyAgICAgICAgICAgIHdoaWxlIChleHRlbnNpb24pIHsKKyAgICAgICAgICAgICAgICBsZW4gPSBTZWFyY2hQYXRoVyhOVUxMLCBuYW1lLCBleHRlbnNpb24sIE1TR1NJWkUsIHBhdGhfY29tbWFuZC52YWx1ZSwgTlVMTCk7CisgICAgICAgICAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAmcGF0aF9jb21tYW5kOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gd2NzdG9rX3MoTlVMTCwgTCI7IiwgJmNvbnRleHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJlZShwYXRoZXh0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYKKworc3RhdGljIENPTU1BTkQgKiBmaW5kX2NvbW1hbmQod2NoYXJfdCAqIG5hbWUpCit7CisgICAgQ09NTUFORCAqIHJlc3VsdCA9IE5VTEw7CisgICAgQ09NTUFORCAqIGNwID0gY29tbWFuZHM7CisgICAgaW50IGk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX2NvbW1hbmRzOyBpKyssIGNwKyspIHsKKyAgICAgICAgaWYgKF93Y3NpY21wKGNwLT5rZXksIG5hbWUpID09IDApIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisjaWYgZGVmaW5lZChTRUFSQ0hfUEFUSCkKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJlc3VsdCA9IGZpbmRfb25fcGF0aChuYW1lKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCit1cGRhdGVfY29tbWFuZChDT01NQU5EICogY3AsIHdjaGFyX3QgKiBuYW1lLCB3Y2hhcl90ICogY21kbGluZSkKK3sKKyAgICB3Y3NuY3B5X3MoY3AtPmtleSwgTUFYX1BBVEgsIG5hbWUsIF9UUlVOQ0FURSk7CisgICAgd2NzbmNweV9zKGNwLT52YWx1ZSwgTVNHU0laRSwgY21kbGluZSwgX1RSVU5DQVRFKTsKK30KKworc3RhdGljIHZvaWQKK2FkZF9jb21tYW5kKHdjaGFyX3QgKiBuYW1lLCB3Y2hhcl90ICogY21kbGluZSkKK3sKKyAgICBpZiAobnVtX2NvbW1hbmRzID49IE1BWF9DT01NQU5EUykgeworICAgICAgICBkZWJ1ZyhMImNhbid0IGFkZCAlcyA9ICclcyc6IG5vIHJvb21cbiIsIG5hbWUsIGNtZGxpbmUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgQ09NTUFORCAqIGNwID0gJmNvbW1hbmRzW251bV9jb21tYW5kcysrXTsKKworICAgICAgICB1cGRhdGVfY29tbWFuZChjcCwgbmFtZSwgY21kbGluZSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorcmVhZF9jb25maWdfZmlsZSh3Y2hhcl90ICogY29uZmlnX3BhdGgpCit7CisgICAgd2NoYXJfdCBrZXluYW1lc1tNU0dTSVpFXTsKKyAgICB3Y2hhcl90IHZhbHVlW01TR1NJWkVdOworICAgIERXT1JEIHJlYWQ7CisgICAgd2NoYXJfdCAqIGtleTsKKyAgICBDT01NQU5EICogY3A7CisgICAgd2NoYXJfdCAqIGNtZHA7CisKKyAgICByZWFkID0gR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdXKEwiY29tbWFuZHMiLCBOVUxMLCBOVUxMLCBrZXluYW1lcywgTVNHU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wYXRoKTsKKyAgICBpZiAocmVhZCA9PSBNU0dTSVpFIC0gMSkgeworICAgICAgICBkZWJ1ZyhMInJlYWRfY29tbWFuZHM6ICVzOiBub3QgZW5vdWdoIHNwYWNlIGZvciBuYW1lc1xuIiwgY29uZmlnX3BhdGgpOworICAgIH0KKyAgICBrZXkgPSBrZXluYW1lczsKKyAgICB3aGlsZSAoKmtleSkgeworICAgICAgICByZWFkID0gR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdXKEwiY29tbWFuZHMiLCBrZXksIE5VTEwsIHZhbHVlLCBNU0dTSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgpOworICAgICAgICBpZiAocmVhZCA9PSBNU0dTSVpFIC0gMSkgeworICAgICAgICAgICAgZGVidWcoTCJyZWFkX2NvbW1hbmRzOiAlczogbm90IGVub3VnaCBzcGFjZSBmb3IgJXNcbiIsCisgICAgICAgICAgICAgICAgICBjb25maWdfcGF0aCwga2V5KTsKKyAgICAgICAgfQorICAgICAgICBjbWRwID0gc2tpcF93aGl0ZXNwYWNlKHZhbHVlKTsKKyAgICAgICAgaWYgKCpjbWRwKSB7CisgICAgICAgICAgICBjcCA9IGZpbmRfY29tbWFuZChrZXkpOworICAgICAgICAgICAgaWYgKGNwID09IE5VTEwpCisgICAgICAgICAgICAgICAgYWRkX2NvbW1hbmQoa2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdXBkYXRlX2NvbW1hbmQoY3AsIGtleSwgdmFsdWUpOworICAgICAgICB9CisgICAgICAgIGtleSArPSB3Y3NsZW4oa2V5KSArIDE7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCByZWFkX2NvbW1hbmRzKCkKK3sKKyAgICBpZiAobGF1bmNoZXJfaW5pX3BhdGhbMF0pCisgICAgICAgIHJlYWRfY29uZmlnX2ZpbGUobGF1bmNoZXJfaW5pX3BhdGgpOworICAgIGlmIChhcHBkYXRhX2luaV9wYXRoWzBdKQorICAgICAgICByZWFkX2NvbmZpZ19maWxlKGFwcGRhdGFfaW5pX3BhdGgpOworfQorCitzdGF0aWMgQk9PTAorcGFyc2Vfc2hlYmFuZyh3Y2hhcl90ICogc2hlYmFuZ19saW5lLCBpbnQgbmNoYXJzLCB3Y2hhcl90ICoqIGNvbW1hbmQsCisgICAgICAgICAgICAgIHdjaGFyX3QgKiogc3VmZml4KQoreworICAgIEJPT0wgcmMgPSBGQUxTRTsKKyAgICB3Y2hhcl90ICoqIHZwcDsKKyAgICBzaXplX3QgcGxlbjsKKyAgICB3Y2hhcl90ICogcDsKKyAgICB3Y2hhcl90IHphcHBlZDsKKyAgICB3Y2hhcl90ICogZW5kcCA9IHNoZWJhbmdfbGluZSArIG5jaGFycyAtIDE7CisgICAgQ09NTUFORCAqIGNwOworICAgIHdjaGFyX3QgKiBza2lwcGVkOworCisgICAgKmNvbW1hbmQgPSBOVUxMOyAgICAvKiBmYWlsdXJlIHJldHVybiAqLworICAgICpzdWZmaXggPSBOVUxMOworCisgICAgaWYgKCgqc2hlYmFuZ19saW5lKysgPT0gTCcjJykgJiYgKCpzaGViYW5nX2xpbmUrKyA9PSBMJyEnKSkgeworICAgICAgICBzaGViYW5nX2xpbmUgPSBza2lwX3doaXRlc3BhY2Uoc2hlYmFuZ19saW5lKTsKKyAgICAgICAgaWYgKCpzaGViYW5nX2xpbmUpIHsKKyAgICAgICAgICAgICpjb21tYW5kID0gc2hlYmFuZ19saW5lOworICAgICAgICAgICAgZm9yICh2cHAgPSBidWlsdGluX3ZpcnR1YWxfcGF0aHM7ICp2cHA7ICsrdnBwKSB7CisgICAgICAgICAgICAgICAgcGxlbiA9IHdjc2xlbigqdnBwKTsKKyAgICAgICAgICAgICAgICBpZiAod2NzbmNtcChzaGViYW5nX2xpbmUsICp2cHAsIHBsZW4pID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmMgPSBUUlVFOworICAgICAgICAgICAgICAgICAgICAvKiBXZSBjYW4gZG8gdGhpcyBiZWNhdXNlIGFsbCBidWlsdGluIGNvbW1hbmRzIGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgICogInB5dGhvbiIuCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAqY29tbWFuZCA9IHdjc3N0cihzaGViYW5nX2xpbmUsIEwicHl0aG9uIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqdnBwID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIE5vdCBmb3VuZCBpbiBidWlsdGlucyAtIGxvb2sgaW4gY3VzdG9taXNlZCBjb21tYW5kcy4KKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqIFdlIGNhbid0IHBlcm1hbmVudGx5IG1vZGlmeSB0aGUgc2hlYmFuZyBsaW5lIGluIGNhc2UKKyAgICAgICAgICAgICAgICAgKiBpdCdzIG5vdCBhIGN1c3RvbWlzZWQgY29tbWFuZCwgYnV0IHdlIGNhbiB0ZW1wb3JhcmlseQorICAgICAgICAgICAgICAgICAqIHN0aWNrIGEgTlVMIGFmdGVyIHRoZSBjb21tYW5kIHdoaWxlIHNlYXJjaGluZyBmb3IgaXQsCisgICAgICAgICAgICAgICAgICogdGhlbiBwdXQgYmFjayB0aGUgY2hhciB3ZSB6YXBwZWQuCisgICAgICAgICAgICAgICAgICovCisjaWYgZGVmaW5lZChTS0lQX1BSRUZJWCkKKyAgICAgICAgICAgICAgICBza2lwcGVkID0gc2tpcF9wcmVmaXgoc2hlYmFuZ19saW5lKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgc2tpcHBlZCA9IHNoZWJhbmdfbGluZTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHAgPSB3Y3NwYnJrKHNraXBwZWQsIEwiIFx0XHJcbiIpOworICAgICAgICAgICAgICAgIGlmIChwICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgemFwcGVkID0gKnA7CisgICAgICAgICAgICAgICAgICAgICpwID0gTCdcMCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNwID0gZmluZF9jb21tYW5kKHNraXBwZWQpOworICAgICAgICAgICAgICAgIGlmIChwICE9IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICpwID0gemFwcGVkOworICAgICAgICAgICAgICAgIGlmIChjcCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICpjb21tYW5kID0gY3AtPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBpZiAocCAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgKnN1ZmZpeCA9IHNraXBfd2hpdGVzcGFjZShwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiByZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZSAqLworICAgICAgICAgICAgd2hpbGUgKChlbmRwID4gc2hlYmFuZ19saW5lKSAmJiBpc3NwYWNlKCplbmRwKSkKKyAgICAgICAgICAgICAgICAtLWVuZHA7CisgICAgICAgICAgICBpZiAoZW5kcCA+IHNoZWJhbmdfbGluZSkKKyAgICAgICAgICAgICAgICBlbmRwWzFdID0gTCdcMCc7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJjOworfQorCisvKiAjZGVmaW5lIENQX1VURjggICAgICAgICAgICAgNjUwMDEgZGVmaW5lZCBpbiB3aW5ubHMuaCAqLworI2RlZmluZSBDUF9VVEYxNkxFICAgICAgICAgIDEyMDAKKyNkZWZpbmUgQ1BfVVRGMTZCRSAgICAgICAgICAxMjAxCisjZGVmaW5lIENQX1VURjMyTEUgICAgICAgICAgMTIwMDAKKyNkZWZpbmUgQ1BfVVRGMzJCRSAgICAgICAgICAxMjAwMQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IGxlbmd0aDsKKyAgICBjaGFyIHNlcXVlbmNlWzRdOworICAgIFVJTlQgY29kZV9wYWdlOworfSBCT007CisKKy8qCisgKiBTdHJpY3RseSwgd2UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgVVRGLTE2IGFuZiBVVEYtMzIsIHNpbmNlIFB5dGhvbiBpdHNlbGYKKyAqIGRvZXNuJ3QuIE5ldmVyIG1pbmQsIG9uZSBkYXkgaXQgbWlnaHQgLSB0aGVyZSdzIG5vIGhhcm0gbGVhdmluZyBpdCBpbi4KKyAqLworc3RhdGljIEJPTSBCT01zW10gPSB7CisgICAgeyAzLCB7IDB4RUYsIDB4QkIsIDB4QkYgfSwgQ1BfVVRGOCB9LCAgICAgICAgICAgLyogVVRGLTggLSBrZWVwIGZpcnN0ICovCisgICAgeyAyLCB7IDB4RkYsIDB4RkUgfSwgQ1BfVVRGMTZMRSB9LCAgICAgICAgICAgICAgLyogVVRGLTE2TEUgKi8KKyAgICB7IDIsIHsgMHhGRSwgMHhGRiB9LCBDUF9VVEYxNkJFIH0sICAgICAgICAgICAgICAvKiBVVEYtMTZCRSAqLworICAgIHsgNCwgeyAweEZGLCAweEZFLCAweDAwLCAweDAwIH0sIENQX1VURjMyTEUgfSwgIC8qIFVURi0zMkxFICovCisgICAgeyA0LCB7IDB4MDAsIDB4MDAsIDB4RkUsIDB4RkYgfSwgQ1BfVVRGMzJCRSB9LCAgLyogVVRGLTMyQkUgKi8KKyAgICB7IDAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIEJPTSAqCitmaW5kX0JPTShjaGFyICogYnVmZmVyKQoreworLyoKKyAqIExvb2sgZm9yIGEgQk9NIGluIHRoZSBpbnB1dCBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUKKyAqIGNvcnJlc3BvbmRpbmcgc3RydWN0dXJlLCBvciBOVUxMIGlmIG5vdCBmb3VuZC4KKyAqLworICAgIEJPTSAqIHJlc3VsdCA9IE5VTEw7CisgICAgQk9NICpib207CisKKyAgICBmb3IgKGJvbSA9IEJPTXM7IGJvbS0+bGVuZ3RoOyBib20rKykgeworICAgICAgICBpZiAoc3RybmNtcChib20tPnNlcXVlbmNlLCBidWZmZXIsIGJvbS0+bGVuZ3RoKSA9PSAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBib207CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgY2hhciAqCitmaW5kX3Rlcm1pbmF0b3IoY2hhciAqIGJ1ZmZlciwgaW50IGxlbiwgQk9NICpib20pCit7CisgICAgY2hhciAqIHJlc3VsdCA9IE5VTEw7CisgICAgY2hhciAqIGVuZCA9IGJ1ZmZlciArIGxlbjsKKyAgICBjaGFyICAqIHA7CisgICAgY2hhciBjOworICAgIGludCBjcDsKKworICAgIGZvciAocCA9IGJ1ZmZlcjsgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgIGMgPSAqcDsKKyAgICAgICAgaWYgKGMgPT0gJ1xyJykgeworICAgICAgICAgICAgcmVzdWx0ID0gcDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChjID09ICdcbicpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgY3AgPSBib20tPmNvZGVfcGFnZTsKKworICAgICAgICAvKiBhZGp1c3RtZW50cyB0byBpbmNsdWRlIGFsbCBieXRlcyBvZiB0aGUgY2hhciAqLworICAgICAgICAvKiBubyBhZGp1c3RtZW50IG5lZWRlZCBmb3IgVVRGLTggb3IgYmlnIGVuZGlhbiAqLworICAgICAgICBpZiAoY3AgPT0gQ1BfVVRGMTZMRSkKKyAgICAgICAgICAgICsrcmVzdWx0OworICAgICAgICBlbHNlIGlmIChjcCA9PSBDUF9VVEYzMkxFKQorICAgICAgICAgICAgcmVzdWx0ICs9IDM7CisgICAgICAgICsrcmVzdWx0OyAvKiBwb2ludCBqdXN0IHBhc3QgdGVybWluYXRvciAqLworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQk9PTAordmFsaWRhdGVfdmVyc2lvbih3Y2hhcl90ICogcCkKK3sKKyAgICBCT09MIHJlc3VsdCA9IFRSVUU7CisKKyAgICBpZiAoIWlzZGlnaXQoKnApKSAgICAgICAgICAgICAgIC8qIGV4cGVjdCBtYWpvciB2ZXJzaW9uICovCisgICAgICAgIHJlc3VsdCA9IEZBTFNFOworICAgIGVsc2UgaWYgKCorK3ApIHsgICAgICAgICAgICAgICAgLyogbW9yZSB0byBkbyAqLworICAgICAgICBpZiAoKnAgIT0gTCcuJykgICAgICAgICAgICAgLyogbWFqb3IvbWlub3Igc2VwYXJhdG9yICovCisgICAgICAgICAgICByZXN1bHQgPSBGQUxTRTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICArK3A7CisgICAgICAgICAgICBpZiAoIWlzZGlnaXQoKnApKSAgICAgICAvKiBleHBlY3QgbWlub3IgdmVyc2lvbiAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZBTFNFOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIGlmICgqcCkgeyAgICAgICAgICAgLyogbW9yZSB0byBkbyAqLworICAgICAgICAgICAgICAgICAgICBpZiAoKnAgIT0gTCctJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZBTFNFOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKnAgIT0gJzMnKSAmJiAoKisrcCAhPSAnMicpICYmICEqKytwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZBTFNFOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1bnNpZ25lZCBzaG9ydCBtaW47CisgICAgdW5zaWduZWQgc2hvcnQgbWF4OworICAgIHdjaGFyX3QgdmVyc2lvbltNQVhfVkVSU0lPTl9TSVpFXTsKK30gUFlDX01BR0lDOworCitzdGF0aWMgUFlDX01BR0lDIG1hZ2ljX3ZhbHVlc1tdID0geworICAgIHsgMHhjNjg3LCAweGM2ODcsIEwiMi4wIiB9LAorICAgIHsgMHhlYjJhLCAweGViMmEsIEwiMi4xIiB9LAorICAgIHsgMHhlZDJkLCAweGVkMmQsIEwiMi4yIiB9LAorICAgIHsgMHhmMjNiLCAweGYyNDUsIEwiMi4zIiB9LAorICAgIHsgMHhmMjU5LCAweGYyNmQsIEwiMi40IiB9LAorICAgIHsgMHhmMjc3LCAweGYyYjMsIEwiMi41IiB9LAorICAgIHsgMHhmMmM3LCAweGYyZDEsIEwiMi42IiB9LAorICAgIHsgMHhmMmRiLCAweGYzMDMsIEwiMi43IiB9LAorICAgIHsgMHgwYmI4LCAweDBjM2IsIEwiMy4wIiB9LAorICAgIHsgMHgwYzQ1LCAweDBjNGYsIEwiMy4xIiB9LAorICAgIHsgMHgwYzU4LCAweDBjNmMsIEwiMy4yIiB9LAorICAgIHsgMHgwYzc2LCAweDBjNzYsIEwiMy4zIiB9LAorICAgIHsgMCB9Cit9OworCitzdGF0aWMgSU5TVEFMTEVEX1BZVEhPTiAqCitmaW5kX2J5X21hZ2ljKHVuc2lnbmVkIHNob3J0IG1hZ2ljKQoreworICAgIElOU1RBTExFRF9QWVRIT04gKiByZXN1bHQgPSBOVUxMOworICAgIFBZQ19NQUdJQyAqIG1wOworCisgICAgZm9yIChtcCA9IG1hZ2ljX3ZhbHVlczsgbXAtPm1pbjsgbXArKykgeworICAgICAgICBpZiAoKG1hZ2ljID49IG1wLT5taW4pICYmIChtYWdpYyA8PSBtcC0+bWF4KSkgeworICAgICAgICAgICAgcmVzdWx0ID0gbG9jYXRlX3B5dGhvbihtcC0+dmVyc2lvbik7CisgICAgICAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK21heWJlX2hhbmRsZV9zaGViYW5nKHdjaGFyX3QgKiogYXJndiwgd2NoYXJfdCAqIGNtZGxpbmUpCit7CisvKgorICogTG9vayBmb3IgYSBzaGViYW5nIGxpbmUgaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiAgSWYgZm91bmQKKyAqIGFuZCB3ZSBzcGF3biBhIGNoaWxkIHByb2Nlc3MsIHRoaXMgbmV2ZXIgcmV0dXJucy4gIElmIGl0CisgKiBkb2VzIHJldHVybiB0aGVuIHdlIHByb2Nlc3MgdGhlIGFyZ3MgIm5vcm1hbGx5Ii4KKyAqCisgKiBhcmd2WzBdIG1pZ2h0IGJlIGEgZmlsZW5hbWUgd2l0aCBhIHNoZWJhbmcuCisgKi8KKyAgICBGSUxFICogZnA7CisgICAgZXJybm9fdCByYyA9IF93Zm9wZW5fcygmZnAsICphcmd2LCBMInJiIik7CisgICAgdW5zaWduZWQgY2hhciBidWZmZXJbQlVGU0laRV07CisgICAgd2NoYXJfdCBzaGViYW5nX2xpbmVbQlVGU0laRSArIDFdOworICAgIHNpemVfdCByZWFkOworICAgIGNoYXIgKnA7CisgICAgY2hhciAqIHN0YXJ0OworICAgIGNoYXIgKiBzaGViYW5nX2FsaWFzID0gKGNoYXIgKikgc2hlYmFuZ19saW5lOworICAgIEJPTSogYm9tOworICAgIGludCBpLCBqLCBuY2hhcnMgPSAwOworICAgIGludCBoZWFkZXJfbGVuOworICAgIEJPT0wgaXNfdmlydDsKKyAgICB3Y2hhcl90ICogY29tbWFuZDsKKyAgICB3Y2hhcl90ICogc3VmZml4OworICAgIElOU1RBTExFRF9QWVRIT04gKiBpcDsKKworICAgIGlmIChyYyA9PSAwKSB7CisgICAgICAgIHJlYWQgPSBmcmVhZChidWZmZXIsIHNpemVvZihjaGFyKSwgQlVGU0laRSwgZnApOworICAgICAgICBkZWJ1ZyhMIm1heWJlX2hhbmRsZV9zaGViYW5nOiByZWFkICVkIGJ5dGVzXG4iLCByZWFkKTsKKyAgICAgICAgZmNsb3NlKGZwKTsKKworICAgICAgICBpZiAoKHJlYWQgPj0gNCkgJiYgKGJ1ZmZlclszXSA9PSAnXG4nKSAmJiAoYnVmZmVyWzJdID09ICdccicpKSB7CisgICAgICAgICAgICBpcCA9IGZpbmRfYnlfbWFnaWMoKGJ1ZmZlclsxXSA8PCA4IHwgYnVmZmVyWzBdKSAmIDB4RkZGRik7CisgICAgICAgICAgICBpZiAoaXAgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGRlYnVnKEwic2NyaXB0IGZpbGUgaXMgY29tcGlsZWQgYWdhaW5zdCBQeXRob24gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgaXAtPnZlcnNpb24pOworICAgICAgICAgICAgICAgIGludm9rZV9jaGlsZChpcC0+ZXhlY3V0YWJsZSwgTlVMTCwgY21kbGluZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogTG9vayBmb3IgQk9NICovCisgICAgICAgIGJvbSA9IGZpbmRfQk9NKGJ1ZmZlcik7CisgICAgICAgIGlmIChib20gPT0gTlVMTCkgeworICAgICAgICAgICAgc3RhcnQgPSBidWZmZXI7CisgICAgICAgICAgICBkZWJ1ZyhMIm1heWJlX2hhbmRsZV9zaGViYW5nOiBCT00gbm90IGZvdW5kLCB1c2luZyBVVEYtOFxuIik7CisgICAgICAgICAgICBib20gPSBCT01zOyAvKiBwb2ludHMgdG8gVVRGLTggZW50cnkgLSB0aGUgZGVmYXVsdCAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVidWcoTCJtYXliZV9oYW5kbGVfc2hlYmFuZzogQk9NIGZvdW5kLCBjb2RlIHBhZ2UgJWRcbiIsCisgICAgICAgICAgICAgICAgICBib20tPmNvZGVfcGFnZSk7CisgICAgICAgICAgICBzdGFydCA9ICZidWZmZXJbYm9tLT5sZW5ndGhdOworICAgICAgICB9CisgICAgICAgIHAgPSBmaW5kX3Rlcm1pbmF0b3Ioc3RhcnQsIEJVRlNJWkUsIGJvbSk7CisgICAgICAgIC8qCisgICAgICAgICAqIElmIG5vIENSIG9yIExGIHdhcyBmb3VuZCBpbiB0aGUgaGVhZGluZywKKyAgICAgICAgICogd2UgYXNzdW1lIGl0J3Mgbm90IGEgc2hlYmFuZyBmaWxlLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKHAgPT0gTlVMTCkgeworICAgICAgICAgICAgZGVidWcoTCJtYXliZV9oYW5kbGVfc2hlYmFuZzogTm8gbGluZSB0ZXJtaW5hdG9yIGZvdW5kXG4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBGb3VuZCBsaW5lIHRlcm1pbmF0b3IgLSBwYXJzZSB0aGUgc2hlYmFuZy4KKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBTdHJpY3RseSwgd2UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgVVRGLTE2IGFuZiBVVEYtMzIsCisgICAgICAgICAgICAgKiBzaW5jZSBQeXRob24gaXRzZWxmIGRvZXNuJ3QuCisgICAgICAgICAgICAgKiBOZXZlciBtaW5kLCBvbmUgZGF5IGl0IG1pZ2h0LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBoZWFkZXJfbGVuID0gKGludCkgKHAgLSBzdGFydCk7CisgICAgICAgICAgICBzd2l0Y2goYm9tLT5jb2RlX3BhZ2UpIHsKKyAgICAgICAgICAgIGNhc2UgQ1BfVVRGODoKKyAgICAgICAgICAgICAgICBuY2hhcnMgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKGJvbS0+Y29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBoZWFkZXJfbGVuLCBzaGViYW5nX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCVUZTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1BfVVRGMTZCRToKKyAgICAgICAgICAgICAgICBpZiAoaGVhZGVyX2xlbiAlIDIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIm1heWJlX2hhbmRsZV9zaGViYW5nOiBVVEYtMTZCRSwgYnV0IGFuIG9kZCBudW1iZXIgXAorb2YgYnl0ZXM6ICVkXG4iLCBoZWFkZXJfbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgLyogbmNoYXJzID0gMDsgTm90IG5lZWRlZCAtIGluaXRpYWxpc2VkIHRvIDAuICovCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBoZWFkZXJfbGVuOyBpID4gMDsgaSAtPSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaGViYW5nX2FsaWFzW2kgLSAxXSA9IHN0YXJ0W2kgLSAyXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoZWJhbmdfYWxpYXNbaSAtIDJdID0gc3RhcnRbaSAtIDFdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG5jaGFycyA9IGhlYWRlcl9sZW4gLyBzaXplb2Yod2NoYXJfdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDUF9VVEYxNkxFOgorICAgICAgICAgICAgICAgIGlmICgoaGVhZGVyX2xlbiAlIDIpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJVVEYtMTZMRSwgYnV0IGFuIG9kZCBudW1iZXIgb2YgYnl0ZXM6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgLyogbmNoYXJzID0gMDsgTm90IG5lZWRlZCAtIGluaXRpYWxpc2VkIHRvIDAuICovCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBubyBhY3R1YWwgY29udmVyc2lvbiBuZWVkZWQuICovCisgICAgICAgICAgICAgICAgICAgIG1lbWNweShzaGViYW5nX2xpbmUsIHN0YXJ0LCBoZWFkZXJfbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgbmNoYXJzID0gaGVhZGVyX2xlbiAvIHNpemVvZih3Y2hhcl90KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENQX1VURjMyQkU6CisgICAgICAgICAgICAgICAgaWYgKGhlYWRlcl9sZW4gJSA0ICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJVVEYtMzJCRSwgYnV0IG5vdCBkaXZpc2libGUgYnkgNDogJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9sZW4pOworICAgICAgICAgICAgICAgICAgICAvKiBuY2hhcnMgPSAwOyBOb3QgbmVlZGVkIC0gaW5pdGlhbGlzZWQgdG8gMC4gKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGhlYWRlcl9sZW4sIGogPSBoZWFkZXJfbGVuIC8gMjsgaSA+IDA7IGkgLT0gNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiAtPSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaGViYW5nX2FsaWFzW2ogLSAxXSA9IHN0YXJ0W2kgLSAyXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoZWJhbmdfYWxpYXNbaiAtIDJdID0gc3RhcnRbaSAtIDFdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG5jaGFycyA9IGhlYWRlcl9sZW4gLyBzaXplb2Yod2NoYXJfdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDUF9VVEYzMkxFOgorICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfbGVuICUgNCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiVVRGLTMyTEUsIGJ1dCBub3QgZGl2aXNpYmxlIGJ5IDQ6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgLyogbmNoYXJzID0gMDsgTm90IG5lZWRlZCAtIGluaXRpYWxpc2VkIHRvIDAuICovCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBoZWFkZXJfbGVuLCBqID0gaGVhZGVyX2xlbiAvIDI7IGkgPiAwOyBpIC09IDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogLT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hlYmFuZ19hbGlhc1tqIC0gMV0gPSBzdGFydFtpIC0gM107CisgICAgICAgICAgICAgICAgICAgICAgICBzaGViYW5nX2FsaWFzW2ogLSAyXSA9IHN0YXJ0W2kgLSA0XTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBuY2hhcnMgPSBoZWFkZXJfbGVuIC8gc2l6ZW9mKHdjaGFyX3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChuY2hhcnMgPiAwKSB7CisgICAgICAgICAgICAgICAgc2hlYmFuZ19saW5lWy0tbmNoYXJzXSA9IEwnXDAnOworICAgICAgICAgICAgICAgIGlzX3ZpcnQgPSBwYXJzZV9zaGViYW5nKHNoZWJhbmdfbGluZSwgbmNoYXJzLCAmY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3VmZml4KTsKKyAgICAgICAgICAgICAgICBpZiAoY29tbWFuZCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwicGFyc2Vfc2hlYmFuZzogZm91bmQgY29tbWFuZDogJXNcbiIsIGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzX3ZpcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludm9rZV9jaGlsZChjb21tYW5kLCBzdWZmaXgsIGNtZGxpbmUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4ID0gd2NzY2hyKGNvbW1hbmQsIEwnICcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1ZmZpeCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN1ZmZpeCsrID0gTCdcMCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4ID0gc2tpcF93aGl0ZXNwYWNlKHN1ZmZpeCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2NzbmNtcChjb21tYW5kLCBMInB5dGhvbiIsIDYpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFJDX0JBRF9WSVJUVUFMX1BBVEgsIEwiVW5rbm93biB2aXJ0dWFsIFwKK3BhdGggJyVzJyIsIGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCArPSA2OyAgIC8qIHNraXAgcGFzdCAicHl0aG9uIiAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpjb21tYW5kICYmICF2YWxpZGF0ZV92ZXJzaW9uKGNvbW1hbmQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFJDX0JBRF9WSVJUVUFMX1BBVEgsIEwiSW52YWxpZCB2ZXJzaW9uIFwKK3NwZWNpZmljYXRpb246ICclcycuXG5JbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgc2NyaXB0LCAncHl0aG9uJyBuZWVkcyB0byBiZSBcCitmb2xsb3dlZCBieSBhIHZhbGlkIHZlcnNpb24gc3BlY2lmaWVyLlxuUGxlYXNlIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0RPIGNvdWxkIGNhbGwgdmFsaWRhdGVfdmVyc2lvbihjb21tYW5kKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uIFwKKyglcykgaXMgbm90IGluc3RhbGxlZCIsIGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlX2NoaWxkKGlwLT5leGVjdXRhYmxlLCBzdWZmaXgsIGNtZGxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgd2NoYXJfdCAqCitza2lwX21lKHdjaGFyX3QgKiBjbWRsaW5lKQoreworICAgIEJPT0wgcXVvdGVkOworICAgIHdjaGFyX3QgYzsKKyAgICB3Y2hhcl90ICogcmVzdWx0ID0gY21kbGluZTsKKworICAgIHF1b3RlZCA9IGNtZGxpbmVbMF0gPT0gTCdcIic7CisgICAgaWYgKCFxdW90ZWQpCisgICAgICAgIGMgPSBMJyAnOworICAgIGVsc2UgeworICAgICAgICBjID0gTCdcIic7CisgICAgICAgICsrcmVzdWx0OworICAgIH0KKyAgICByZXN1bHQgPSB3Y3NjaHIocmVzdWx0LCBjKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIC8qIHdoZW4sIGZvciBleGFtcGxlLCBqdXN0IGV4ZSBuYW1lIG9uIGNvbW1hbmQgbGluZSAqLworICAgICAgICByZXN1bHQgPSBMIiI7CisgICAgZWxzZSB7CisgICAgICAgICsrcmVzdWx0OyAvKiBza2lwIHBhc3Qgc3BhY2Ugb3IgY2xvc2luZyBxdW90ZSAqLworICAgICAgICByZXN1bHQgPSBza2lwX3doaXRlc3BhY2UocmVzdWx0KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIERXT1JEIHZlcnNpb25faGlnaCA9IDA7CitzdGF0aWMgRFdPUkQgdmVyc2lvbl9sb3cgPSAwOworCitzdGF0aWMgdm9pZAorZ2V0X3ZlcnNpb25faW5mbyh3Y2hhcl90ICogdmVyc2lvbl90ZXh0LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBXT1JEIG1haiwgbWluLCByZWwsIGJsZDsKKworICAgIGlmICghdmVyc2lvbl9oaWdoICYmICF2ZXJzaW9uX2xvdykKKyAgICAgICAgd2NzbmNweV9zKHZlcnNpb25fdGV4dCwgc2l6ZSwgTCIwLjEiLCBfVFJVTkNBVEUpOyAgIC8qIGZhbGxiYWNrICovCisgICAgZWxzZSB7CisgICAgICAgIG1haiA9IEhJV09SRCh2ZXJzaW9uX2hpZ2gpOworICAgICAgICBtaW4gPSBMT1dPUkQodmVyc2lvbl9oaWdoKTsKKyAgICAgICAgcmVsID0gSElXT1JEKHZlcnNpb25fbG93KTsKKyAgICAgICAgYmxkID0gTE9XT1JEKHZlcnNpb25fbG93KTsKKyAgICAgICAgX3Nud3ByaW50Zl9zKHZlcnNpb25fdGV4dCwgc2l6ZSwgX1RSVU5DQVRFLCBMIiVkLiVkLiVkLiVkIiwgbWFqLAorICAgICAgICAgICAgICAgICAgICAgbWluLCByZWwsIGJsZCk7CisgICAgfQorfQorCitzdGF0aWMgaW50Citwcm9jZXNzKGludCBhcmdjLCB3Y2hhcl90ICoqIGFyZ3YpCit7CisgICAgd2NoYXJfdCAqIHdwOworICAgIHdjaGFyX3QgKiBjb21tYW5kOworICAgIHdjaGFyX3QgKiBwOworICAgIGludCByYyA9IDA7CisgICAgc2l6ZV90IHBsZW47CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIGlwOworICAgIEJPT0wgdmFsaWQ7CisgICAgRFdPUkQgc2l6ZSwgYXR0cnM7CisgICAgSFJFU1VMVCBocjsKKyAgICB3Y2hhcl90IG1lc3NhZ2VbTVNHU0laRV07CisgICAgd2NoYXJfdCB2ZXJzaW9uX3RleHQgW01BWF9QQVRIXTsKKyAgICB2b2lkICogdmVyc2lvbl9kYXRhOworICAgIFZTX0ZJWEVERklMRUlORk8gKiBmaWxlX2luZm87CisgICAgVUlOVCBibG9ja19zaXplOworCisgICAgd3AgPSBnZXRfZW52KEwiUFlMQVVOQ0hfREVCVUciKTsKKyAgICBpZiAoKHdwICE9IE5VTEwpICYmICgqd3AgIT0gTCdcMCcpKQorICAgICAgICBsb2dfZnAgPSBzdGRlcnI7CisKKyNpZiBkZWZpbmVkKF9NX1g2NCkKKyAgICBkZWJ1ZyhMImxhdW5jaGVyIGJ1aWxkOiA2NGJpdFxuIik7CisjZWxzZQorICAgIGRlYnVnKEwibGF1bmNoZXIgYnVpbGQ6IDMyYml0XG4iKTsKKyNlbmRpZgorI2lmIGRlZmluZWQoX1dJTkRPV1MpCisgICAgZGVidWcoTCJsYXVuY2hlciBleGVjdXRhYmxlOiBXaW5kb3dzXG4iKTsKKyNlbHNlCisgICAgZGVidWcoTCJsYXVuY2hlciBleGVjdXRhYmxlOiBDb25zb2xlXG4iKTsKKyNlbmRpZgorICAgIC8qIEdldCB0aGUgbG9jYWwgYXBwZGF0YSBmb2xkZXIgKG5vbi1yb2FtaW5nKSAqLworICAgIGhyID0gU0hHZXRGb2xkZXJQYXRoVyhOVUxMLCBDU0lETF9MT0NBTF9BUFBEQVRBLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCBhcHBkYXRhX2luaV9wYXRoKTsKKyAgICBpZiAoaHIgIT0gU19PSykgeworICAgICAgICBkZWJ1ZyhMIlNIR2V0Rm9sZGVyUGF0aCBmYWlsZWQ6ICVYXG4iLCBocik7CisgICAgICAgIGFwcGRhdGFfaW5pX3BhdGhbMF0gPSBMJ1wwJzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHBsZW4gPSB3Y3NsZW4oYXBwZGF0YV9pbmlfcGF0aCk7CisgICAgICAgIHAgPSAmYXBwZGF0YV9pbmlfcGF0aFtwbGVuXTsKKyAgICAgICAgd2NzbmNweV9zKHAsIE1BWF9QQVRIIC0gcGxlbiwgTCJcXHB5LmluaSIsIF9UUlVOQ0FURSk7CisgICAgICAgIGF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKGFwcGRhdGFfaW5pX3BhdGgpOworICAgICAgICBpZiAoYXR0cnMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKKyAgICAgICAgICAgIGRlYnVnKEwiRmlsZSAnJXMnIG5vbi1leGlzdGVudFxuIiwgYXBwZGF0YV9pbmlfcGF0aCk7CisgICAgICAgICAgICBhcHBkYXRhX2luaV9wYXRoWzBdID0gTCdcMCc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZWJ1ZyhMIlVzaW5nIGxvY2FsIGNvbmZpZ3VyYXRpb24gZmlsZSAnJXMnXG4iLCBhcHBkYXRhX2luaV9wYXRoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwbGVuID0gR2V0TW9kdWxlRmlsZU5hbWVXKE5VTEwsIGxhdW5jaGVyX2luaV9wYXRoLCBNQVhfUEFUSCk7CisgICAgc2l6ZSA9IEdldEZpbGVWZXJzaW9uSW5mb1NpemVXKGxhdW5jaGVyX2luaV9wYXRoLCAmc2l6ZSk7CisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICB3aW5lcnJvcihHZXRMYXN0RXJyb3IoKSwgbWVzc2FnZSwgTVNHU0laRSk7CisgICAgICAgIGRlYnVnKEwiR2V0RmlsZVZlcnNpb25JbmZvU2l6ZSBmYWlsZWQ6ICVzXG4iLCBtZXNzYWdlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZlcnNpb25fZGF0YSA9IG1hbGxvYyhzaXplKTsKKyAgICAgICAgaWYgKHZlcnNpb25fZGF0YSkgeworICAgICAgICAgICAgdmFsaWQgPSBHZXRGaWxlVmVyc2lvbkluZm9XKGxhdW5jaGVyX2luaV9wYXRoLCAwLCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25fZGF0YSk7CisgICAgICAgICAgICBpZiAoIXZhbGlkKQorICAgICAgICAgICAgICAgIGRlYnVnKEwiR2V0RmlsZVZlcnNpb25JbmZvIGZhaWxlZDogJVhcbiIsIEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhbGlkID0gVmVyUXVlcnlWYWx1ZVcodmVyc2lvbl9kYXRhLCBMIlxcIiwgJmZpbGVfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZibG9ja19zaXplKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKQorICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIlZlclF1ZXJ5VmFsdWUgZmFpbGVkOiAlWFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uX2hpZ2ggPSBmaWxlX2luZm8tPmR3RmlsZVZlcnNpb25NUzsKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9sb3cgPSBmaWxlX2luZm8tPmR3RmlsZVZlcnNpb25MUzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmVlKHZlcnNpb25fZGF0YSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcCA9IHdjc3JjaHIobGF1bmNoZXJfaW5pX3BhdGgsIEwnXFwnKTsKKyAgICBpZiAocCA9PSBOVUxMKSB7CisgICAgICAgIGRlYnVnKEwiR2V0TW9kdWxlRmlsZU5hbWVXIHJldHVybmVkIHZhbHVlIGhhcyBubyBiYWNrc2xhc2g6ICVzXG4iLAorICAgICAgICAgICAgICBsYXVuY2hlcl9pbmlfcGF0aCk7CisgICAgICAgIGxhdW5jaGVyX2luaV9wYXRoWzBdID0gTCdcMCc7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB3Y3NuY3B5X3MocCwgTUFYX1BBVEggLSAocCAtIGxhdW5jaGVyX2luaV9wYXRoKSwgTCJcXHB5LmluaSIsCisgICAgICAgICAgICAgICAgICBfVFJVTkNBVEUpOworICAgICAgICBhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhsYXVuY2hlcl9pbmlfcGF0aCk7CisgICAgICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgeworICAgICAgICAgICAgZGVidWcoTCJGaWxlICclcycgbm9uLWV4aXN0ZW50XG4iLCBsYXVuY2hlcl9pbmlfcGF0aCk7CisgICAgICAgICAgICBsYXVuY2hlcl9pbmlfcGF0aFswXSA9IEwnXDAnOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVidWcoTCJVc2luZyBnbG9iYWwgY29uZmlndXJhdGlvbiBmaWxlICclcydcbiIsIGxhdW5jaGVyX2luaV9wYXRoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbW1hbmQgPSBza2lwX21lKEdldENvbW1hbmRMaW5lVygpKTsKKyAgICBkZWJ1ZyhMIkNhbGxlZCB3aXRoIGNvbW1hbmQgbGluZTogJXMiLCBjb21tYW5kKTsKKyAgICBpZiAoYXJnYyA8PSAxKSB7CisgICAgICAgIHZhbGlkID0gRkFMU0U7CisgICAgICAgIHAgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcCA9IGFyZ3ZbMV07CisgICAgICAgIHBsZW4gPSB3Y3NsZW4ocCk7CisgICAgICAgIGlmIChwWzBdICE9IEwnLScpIHsKKyAgICAgICAgICAgIHJlYWRfY29tbWFuZHMoKTsKKyAgICAgICAgICAgIG1heWJlX2hhbmRsZV9zaGViYW5nKCZhcmd2WzFdLCBjb21tYW5kKTsKKyAgICAgICAgfQorICAgICAgICAvKiBObyBmaWxlIHdpdGggc2hlYmFuZywgb3IgYW4gdW5yZWNvZ25pc2VkIHNoZWJhbmcuCisgICAgICAgICAqIElzIHRoZSBmaXJzdCBhcmcgYSBzcGVjaWFsIHZlcnNpb24gcXVhbGlmaWVyPworICAgICAgICAgKi8KKyAgICAgICAgdmFsaWQgPSAoKnAgPT0gTCctJykgJiYgdmFsaWRhdGVfdmVyc2lvbigmcFsxXSk7CisgICAgICAgIGlmICh2YWxpZCkgeworICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKCZwWzFdKTsKKyAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJSZXF1ZXN0ZWQgUHl0aG9uIHZlcnNpb24gKCVzKSBub3QgXAoraW5zdGFsbGVkIiwgJnBbMV0pOworICAgICAgICAgICAgY29tbWFuZCArPSB3Y3NsZW4ocCk7CisgICAgICAgICAgICBjb21tYW5kID0gc2tpcF93aGl0ZXNwYWNlKGNvbW1hbmQpOworICAgICAgICB9CisgICAgfQorICAgIGlmICghdmFsaWQpIHsKKyAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKEwiIik7CisgICAgICAgIGlmIChpcCA9PSBOVUxMKQorICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIkNhbid0IGZpbmQgYSBkZWZhdWx0IFB5dGhvbi4iKTsKKyAgICAgICAgaWYgKChhcmdjID09IDIpICYmICghX3djc2ljbXAocCwgTCItaCIpIHx8ICFfd2NzaWNtcChwLCBMIi0taGVscCIpKSkgeworI2lmIGRlZmluZWQoX01fWDY0KQorICAgICAgICAgICAgQk9PTCBjYW5EbzY0Yml0ID0gVFJVRTsKKyNlbHNlCisgICAgLy8gSWYgd2UgYXJlIGEgMzJiaXQgcHJvY2VzcyBvbiBhIDY0Yml0IFdpbmRvd3MsIGZpcnN0IGhpdCB0aGUgNjRiaXQga2V5cy4KKyAgICAgICAgICAgIEJPT0wgY2FuRG82NGJpdCA9IEZBTFNFOworICAgICAgICAgICAgSXNXb3c2NFByb2Nlc3MoR2V0Q3VycmVudFByb2Nlc3MoKSwgJmNhbkRvNjRiaXQpOworI2VuZGlmCisKKyAgICAgICAgICAgIGdldF92ZXJzaW9uX2luZm8odmVyc2lvbl90ZXh0LCBNQVhfUEFUSCk7CisgICAgICAgICAgICBmd3ByaW50ZihzdGRvdXQsIEwiXAorUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIFZlcnNpb24gJXNcblxuIiwgdmVyc2lvbl90ZXh0KTsKKyAgICAgICAgICAgIGZ3cHJpbnRmKHN0ZG91dCwgTCJcCit1c2FnZTogJXMgWyBsYXVuY2hlci1hcmd1bWVudHMgXSBzY3JpcHQgWyBzY3JpcHQtYXJndW1lbnRzIF1cblxuIiwgYXJndlswXSk7CisgICAgICAgICAgICBmcHV0d3MoTCJcCitMYXVuY2hlciBhcmd1bWVudHM6XG5cblwKKy0yICAgICA6IExhdW5jaCB0aGUgbGF0ZXN0IFB5dGhvbiAyLnggdmVyc2lvblxuXAorLTMgICAgIDogTGF1bmNoIHRoZSBsYXRlc3QgUHl0aG9uIDMueCB2ZXJzaW9uXG5cCistWC5ZICAgOiBMYXVuY2ggdGhlIHNwZWNpZmllZCBQeXRob24gdmVyc2lvblxuIiwgc3Rkb3V0KTsKKyAgICAgICAgICAgIGlmIChjYW5EbzY0Yml0KSB7CisgICAgICAgICAgICAgICAgZnB1dHdzKEwiXAorLVguWS0zMjogTGF1bmNoIHRoZSBzcGVjaWZpZWQgMzJiaXQgUHl0aG9uIHZlcnNpb24iLCBzdGRvdXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnB1dHdzKEwiXG5cblRoZSBmb2xsb3dpbmcgaGVscCB0ZXh0IGlzIGZyb20gUHl0aG9uOlxuXG4iLCBzdGRvdXQpOworICAgICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaW52b2tlX2NoaWxkKGlwLT5leGVjdXRhYmxlLCBOVUxMLCBjb21tYW5kKTsKKyAgICByZXR1cm4gcmM7Cit9CisKKyNpZiBkZWZpbmVkKF9XSU5ET1dTKQorCitpbnQgV0lOQVBJIHdXaW5NYWluKEhJTlNUQU5DRSBoSW5zdGFuY2UsIEhJTlNUQU5DRSBoUHJldkluc3RhbmNlLAorICAgICAgICAgICAgICAgICAgIExQV1NUUiBscHN0ckNtZCwgaW50IG5TaG93KQoreworICAgIHJldHVybiBwcm9jZXNzKF9fYXJnYywgX193YXJndik7Cit9CisKKyNlbHNlCisKK2ludCBjZGVjbCB3bWFpbihpbnQgYXJnYywgd2NoYXJfdCAqKiBhcmd2KQoreworICAgIHJldHVybiBwcm9jZXNzKGFyZ2MsIGFyZ3YpOworfQorCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5pY28gYi9QQy9sYXVuY2hlci5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFkN2Q1NwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2xhdW5jaGVyLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9tc3ZjcnRtb2R1bGUuYyBiL1BDL21zdmNydG1vZHVsZS5jCmluZGV4IDE2NmRmMDMuLjA0ZDIwODggMTAwNzU1Ci0tLSBhL1BDL21zdmNydG1vZHVsZS5jCisrKyBiL1BDL21zdmNydG1vZHVsZS5jCkBAIC0yNyw2ICsyNyw4IEBACiAjaWZkZWYgX01TQ19WRVIKICNpZiBfTVNDX1ZFUiA+PSAxNTAwICYmIF9NU0NfVkVSIDwgMTYwMAogI2luY2x1ZGUgPGNydGFzc2VtLmg+CisjZWxpZiBfTVNDX1ZFUiA+PSAxNjAwCisjaW5jbHVkZSA8Y3J0dmVyc2lvbi5oPgogI2VuZGlmCiAjZW5kaWYKIApAQCAtMjExLDggKzIxMyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbXN2Y3J0X2dldHdjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfVU5JQ09ERSBjaDsKLSAgICBQeV9VTklDT0RFIHVbMV07CisgICAgd2NoYXJfdCBjaDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmdldHdjaCIpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIyMCw4ICsyMjEsNyBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBjaCA9IF9nZXR3Y2goKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHVbMF0gPSBjaDsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHUsIDEpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOwogfQogCiBQeURvY19TVFJWQVIoZ2V0d2NoX2RvYywKQEAgLTI1Niw4ICsyNTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1zdmNydF9nZXR3Y2hlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9VTklDT0RFIGNoOwotICAgIFB5X1VOSUNPREUgc1sxXTsKKyAgICB3Y2hhcl90IGNoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0d2NoZSIpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI2NSw4ICsyNjQsNyBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBjaCA9IF9nZXR3Y2hlKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBzWzBdID0gY2g7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCAxKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNoKTsKIH0KIAogUHlEb2NfU1RSVkFSKGdldHdjaGVfZG9jLApAQCAtNDY4LDcgKzQ2Niw3IEBACiBQeUluaXRfbXN2Y3J0KHZvaWQpCiB7CiAgICAgaW50IHN0OwotICAgIFB5T2JqZWN0ICpkOworICAgIFB5T2JqZWN0ICpkLCAqdmVyc2lvbjsKICAgICBQeU9iamVjdCAqbSA9IFB5TW9kdWxlX0NyZWF0ZSgmbXN2Y3J0bW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ5OCw2ICs0OTYsNyBAQAogI2VuZGlmCiAKICAgICAvKiBjb25zdGFudHMgZm9yIHRoZSBjcnQgdmVyc2lvbnMgKi8KKyAgICAodm9pZClzdDsKICNpZmRlZiBfVkNfQVNTRU1CTFlfUFVCTElDS0VZVE9LRU4KICAgICBzdCA9IFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJWQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVkNfQVNTRU1CTFlfUFVCTElDS0VZVE9LRU4pOwpAQCAtNTE0LDUgKzUxMywxNSBAQAogICAgIGlmIChzdCA8IDApIHJldHVybiBOVUxMOwogI2VuZGlmCiAKKyAgICAvKiBjb25zdGFudHMgZm9yIHRoZSAyMDEwIGNydCB2ZXJzaW9ucyAqLworI2lmIGRlZmluZWQoX1ZDX0NSVF9NQUpPUl9WRVJTSU9OKSAmJiBkZWZpbmVkIChfVkNfQ1JUX01JTk9SX1ZFUlNJT04pICYmIGRlZmluZWQoX1ZDX0NSVF9CVUlMRF9WRVJTSU9OKSAmJiBkZWZpbmVkKF9WQ19DUlRfUkJVSUxEX1ZFUlNJT04pCisgICAgdmVyc2lvbiA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlZC4lZC4lZC4lZCIsIF9WQ19DUlRfTUFKT1JfVkVSU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZDX0NSVF9NSU5PUl9WRVJTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVkNfQ1JUX0JVSUxEX1ZFUlNJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WQ19DUlRfUkJVSUxEX1ZFUlNJT04pOworICAgIHN0ID0gUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDUlRfQVNTRU1CTFlfVkVSU0lPTiIsIHZlcnNpb24pOworICAgIGlmIChzdCA8IDApIHJldHVybiBOVUxMOworI2VuZGlmCisKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL1BDL29zMmVteC9NYWtlZmlsZSBiL1BDL29zMmVteC9NYWtlZmlsZQppbmRleCBkOWNkZWQ3Li44MDA2MTBlIDEwMDY0NAotLS0gYS9QQy9vczJlbXgvTWFrZWZpbGUKKysrIGIvUEMvb3MyZW14L01ha2VmaWxlCkBAIC0yMzcsNyArMjM3LDcgQEAKIAogIyBPdXRwdXQgZmlsZSBuYW1lcwogUFlUSE9OX1ZFUj0JMi42Ci1QWVRIT05fTElCPQlweXRob24yNgorUFlUSE9OX0xJQj0JcHl0aG9uMzMKIFBZVEhPTi5MSUI9CSQoUFlUSE9OX0xJQilfcyRBCiBQWVRIT04uSU1QTElCPQkkKFBZVEhPTl9MSUIpJEEKIGlmZXEgKCQoRVhFT01GKSx5ZXMpCmRpZmYgLS1naXQgYS9QQy9vczJlbXgvUkVBRE1FLm9zMmVteCBiL1BDL29zMmVteC9SRUFETUUub3MyZW14CmluZGV4IGZjZjU1ZDIuLjYxY2Y2ZGYgMTAwNjQ0Ci0tLSBhL1BDL29zMmVteC9SRUFETUUub3MyZW14CisrKyBiL1BDL29zMmVteC9SRUFETUUub3MyZW14CkBAIC0zMDUsNyArMzA1LDcgQEAKICAgIHRvIGJlIGluc3RhbGxlZCBpbiBhIGRpcmVjdG9yeSBvdGhlciB0aGFuIHRoZSBQWVRIT05IT01FIGRpcmVjdG9yeSwgc2V0IAogICAgdGhlIHZhbHVlIG9mIHRoZSBNYWtlZmlsZSB2YXJpYWJsZSBFWEVfRElSIHRvIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcnkuCiAKLTMuIElmIHlvdSB3aXNoIHRoZSBQeXRob24gY29yZSBETEwgKHB5dGhvbjI2LmRsbCkgdG8gYmUgaW5zdGFsbGVkIGluIGEgCiszLiBJZiB5b3Ugd2lzaCB0aGUgUHl0aG9uIGNvcmUgRExMIChweXRob24zMy5kbGwpIHRvIGJlIGluc3RhbGxlZCBpbiBhIAogICAgZGlyZWN0b3J5IG90aGVyIHRoYW4gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgUHl0aG9uIGV4ZWN1dGFibGVzIGFyZSAKICAgIGluc3RhbGxlZCAoYnkgZGVmYXVsdCwgdGhlIFBZVEhPTkhPTUUgZGlyZWN0b3J5KSwgc2V0IHRoZSB2YWx1ZSBvZiB0aGUgCiAgICBNYWtlZmlsZSB2YXJpYWJsZSBETExfRElSIHRvIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcnkuICBUaGlzIERMTCBtdXN0IApkaWZmIC0tZ2l0IGEvUEMvb3MyZW14L2NvbmZpZy5jIGIvUEMvb3MyZW14L2NvbmZpZy5jCmluZGV4IDIxOGFhNjguLjU4NzkxMTAgMTAwNjQ0Ci0tLSBhL1BDL29zMmVteC9jb25maWcuYworKysgYi9QQy9vczJlbXgvY29uZmlnLmMKQEAgLTE1MCwxMCArMTUwLDkgQEAKICAgICB7Im1hcnNoYWwiLCBQeU1hcnNoYWxfSW5pdH0sCiAKICAgICAvKiBUaGlzIGxpdmVzIGl0IHdpdGggaW1wb3J0LmMgKi8KLSAgICB7ImltcCIsIGluaXRpbXB9LAorICAgIHsiX2ltcCIsIGluaXRpbXB9LAogCiAgICAgLyogVGhlc2UgZW50cmllcyBhcmUgaGVyZSBmb3Igc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzICovCi0gICAgeyJfX21haW5fXyIsIE5VTEx9LAogICAgIHsiYnVpbHRpbnMiLCBOVUxMfSwKICAgICB7InN5cyIsIE5VTEx9LAogCmRpZmYgLS1naXQgYS9QQy9vczJlbXgvcHljb25maWcuaCBiL1BDL29zMmVteC9weWNvbmZpZy5oCmluZGV4IDM4MGUxOWMuLmU1NjEwNWEgMTAwNjQ0Ci0tLSBhL1BDL29zMmVteC9weWNvbmZpZy5oCisrKyBiL1BDL29zMmVteC9weWNvbmZpZy5oCkBAIC0xLDYgKzEsOCBAQAogI2lmbmRlZiBQeV9DT05GSUdfSAogI2RlZmluZSBQeV9DT05GSUdfSAogCisjZXJyb3IgIlBFUCAxMTogT1MvMiBpcyBub3cgdW5zdXBwb3J0ZWQsIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjQiCisKIC8qIGNvbmZpZy5oLgogICogQXQgc29tZSB0aW1lIGluIHRoZSBwYXN0LCBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieS9mcm9tIGNvbmZpZ3VyZS4KICAqIG5vdyBtYWludGFpbmVkIG1hbnVhbGx5LgpkaWZmIC0tZ2l0IGEvUEMvb3MyZW14L3B5dGhvbjI3LmRlZiBiL1BDL29zMmVteC9weXRob24zMy5kZWYKc2ltaWxhcml0eSBpbmRleCA4NSUKcmVuYW1lIGZyb20gUEMvb3MyZW14L3B5dGhvbjI3LmRlZgpyZW5hbWUgdG8gUEMvb3MyZW14L3B5dGhvbjMzLmRlZgppbmRleCBkODdkZDc2Li4yNTY3MjZiIDEwMDY0NAotLS0gYS9QQy9vczJlbXgvcHl0aG9uMjcuZGVmCisrKyBiL1BDL29zMmVteC9weXRob24zMy5kZWYKQEAgLTEsNzIgKzEsNzIgQEAKLUxJQlJBUlkgcHl0aG9uMjYgSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSAKK0xJQlJBUlkgcHl0aG9uMzMgSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSAKIERFU0NSSVBUSU9OICJQeXRob24gMi42IENvcmUgRExMIiAKIFBST1RNT0RFIAogREFUQSBNVUxUSVBMRSBOT05TSEFSRUQgCiBFWFBPUlRTIAogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29uZmlnKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNvbmZpZykKICAgIl9QeUltcG9ydF9Jbml0dGFiIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZGxmY24pCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZGxmY24pCiA7ICAiZGxvcGVuIgogOyAgImRsc3ltIgogOyAgImRsY2xvc2UiCiA7ICAiZGxlcnJvciIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdldHBhdGhwKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldHBhdGhwKQogICAiUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoIgogICAiUHlfR2V0UHJlZml4IgogICAiUHlfR2V0RXhlY1ByZWZpeCIKICAgIlB5X0dldFBhdGgiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXRidWlsZGluZm8pCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ2V0YnVpbGRpbmZvKQogICAiUHlfR2V0QnVpbGRJbmZvIgogICAiX1B5X3N2bnZlcnNpb24iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtYWluKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1haW4pCiAgICJQeV9NYWluIgogICAiUHlfR2V0QXJnY0FyZ3YiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihhY2NlbGVyKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGFjY2VsZXIpCiAgICJQeUdyYW1tYXJfQWRkQWNjZWxlcmF0b3JzIgogICAiUHlHcmFtbWFyX1JlbW92ZUFjY2VsZXJhdG9ycyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdyYW1tYXIxKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdyYW1tYXIxKQogICAiUHlHcmFtbWFyX0ZpbmRERkEiCiAgICJQeUdyYW1tYXJfTGFiZWxSZXByIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobGlzdG5vZGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobGlzdG5vZGUpCiAgICJQeU5vZGVfTGlzdFRyZWUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihub2RlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG5vZGUpCiAgICJQeU5vZGVfTmV3IgogICAiUHlOb2RlX0FkZENoaWxkIgogICAiUHlOb2RlX0ZyZWUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihwYXJzZXIpCis7IEZyb20gcHl0aG9uMzNfcy5saWIocGFyc2VyKQogICAiUHlQYXJzZXJfQWRkVG9rZW4iCiAgICJQeVBhcnNlcl9OZXciCiAgICJQeVBhcnNlcl9EZWxldGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihwYXJzZXRvaykKKzsgRnJvbSBweXRob24zM19zLmxpYihwYXJzZXRvaykKICAgIlB5UGFyc2VyX1BhcnNlU3RyaW5nIgogICAiUHlQYXJzZXJfUGFyc2VTdHJpbmdGbGFnc0ZpbGVuYW1lIgogICAiUHlQYXJzZXJfUGFyc2VGaWxlIgogICAiUHlQYXJzZXJfUGFyc2VGaWxlRmxhZ3MiCiAgICJQeVBhcnNlcl9QYXJzZVN0cmluZ0ZsYWdzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYml0c2V0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGJpdHNldCkKICAgIl9QeV9uZXdiaXRzZXQiCiAgICJfUHlfZGVsYml0c2V0IgogICAiX1B5X2FkZGJpdCIKICAgIl9QeV9zYW1lYml0c2V0IgogICAiX1B5X21lcmdlYml0c2V0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobWV0YWdyYW1tYXIpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobWV0YWdyYW1tYXIpCiAgICJfUHlfbWV0YV9ncmFtbWFyIgogICAiUHlfbWV0YV9ncmFtbWFyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodG9rZW5pemVyKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHRva2VuaXplcikKICAgIlB5VG9rZW5fT25lQ2hhciIKICAgIlB5VG9rZW5fVHdvQ2hhcnMiCiAgICJQeVRva2VuX1RocmVlQ2hhcnMiCkBAIC03NiwxNCArNzYsMTQgQEAKICAgIlB5VG9rZW5pemVyX0dldCIKICAgIl9QeVBhcnNlcl9Ub2tlbk5hbWVzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobXlyZWFkbGluZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihteXJlYWRsaW5lKQogICAiX1B5T1NfUmVhZGxpbmVUU3RhdGUiCiAgICJQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIgogICAiUHlPU19TdGRpb1JlYWRsaW5lIgogICAiUHlPU19SZWFkbGluZSIKICAgIlB5T1NfSW5wdXRIb29rIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYWJzdHJhY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYWJzdHJhY3QpCiAgICJfUHlPYmplY3RfTGVuZ3RoSGludCIKICAgIlB5TWFwcGluZ19TaXplIgogICAiUHlPYmplY3RfQ2FsbE1ldGhvZCIKQEAgLTE3NCwxMyArMTc0LDEzIEBACiAgICJQeU9iamVjdF9Jc0luc3RhbmNlIgogICAiUHlPYmplY3RfSXNTdWJjbGFzcyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGJvb2xvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYm9vbG9iamVjdCkKICAgIlB5Qm9vbF9Gcm9tTG9uZyIKICAgIlB5Qm9vbF9UeXBlIgogICAiX1B5X1plcm9TdHJ1Y3QiCiAgICJfUHlfVHJ1ZVN0cnVjdCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGJ1ZmZlcm9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihidWZmZXJvYmplY3QpCiAgICJQeUJ1ZmZlcl9Gcm9tT2JqZWN0IgogICAiUHlCdWZmZXJfRnJvbVJlYWRXcml0ZU9iamVjdCIKICAgIlB5QnVmZmVyX0Zyb21NZW1vcnkiCkBAIC0xODgsMTMgKzE4OCwxMyBAQAogICAiUHlCdWZmZXJfTmV3IgogICAiUHlCdWZmZXJfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNlbGxvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY2VsbG9iamVjdCkKICAgIlB5Q2VsbF9OZXciCiAgICJQeUNlbGxfR2V0IgogICAiUHlDZWxsX1NldCIKICAgIlB5Q2VsbF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY2xhc3NvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY2xhc3NvYmplY3QpCiAgICJQeUNsYXNzX05ldyIKICAgIlB5Q2xhc3NfSXNTdWJjbGFzcyIKICAgIlB5SW5zdGFuY2VfTmV3IgpAQCAtMjA5LDcgKzIwOSw3IEBACiAgICJQeUluc3RhbmNlX1R5cGUiCiAgICJQeU1ldGhvZF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY2Fwc3VsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihjYXBzdWxlKQogICAiUHlDYXBzdWxlX0dldENvbnRleHQiCiAgICJQeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvciIKICAgIlB5Q2Fwc3VsZV9HZXROYW1lIgpAQCAtMjIyLDcgKzIyMiw3IEBACiAgICJQeUNhcHN1bGVfU2V0TmFtZSIKICAgIlB5Q2Fwc3VsZV9TZXRQb2ludGVyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihjb2JqZWN0KQogICAiUHlDT2JqZWN0X0Zyb21Wb2lkUHRyIgogICAiUHlDT2JqZWN0X0Zyb21Wb2lkUHRyQW5kRGVzYyIKICAgIlB5Q09iamVjdF9Bc1ZvaWRQdHIiCkBAIC0yMzEsMTMgKzIzMSwxMyBAQAogICAiUHlDT2JqZWN0X1NldFZvaWRQdHIiCiAgICJQeUNPYmplY3RfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNvZGVvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY29kZW9iamVjdCkKICAgIlB5Q29kZV9OZXciCiAgICJQeUNvZGVfQWRkcjJMaW5lIgogICAiUHlDb2RlX0NoZWNrTGluZU51bWJlciIKICAgIlB5Q29kZV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29tcGxleG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihjb21wbGV4b2JqZWN0KQogICAiX1B5X2NfcG93IgogICAiX1B5X2Nfc3VtIgogICAiX1B5X2NfZGlmZiIKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAiUHlDb21wbGV4X0FzQ0NvbXBsZXgiCiAgICJQeUNvbXBsZXhfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGRlc2Nyb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGRlc2Nyb2JqZWN0KQogICAiUHlXcmFwcGVyX05ldyIKICAgIlB5RGVzY3JfTmV3TWV0aG9kIgogICAiUHlEZXNjcl9OZXdDbGFzc01ldGhvZCIKQEAgLTI2Miw3ICsyNjIsNyBAQAogICAiUHlXcmFwcGVyRGVzY3JfVHlwZSIKICAgIlB5UHJvcGVydHlfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGRpY3RvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZGljdG9iamVjdCkKICAgIlB5RGljdF9OZXciCiAgICJQeURpY3RfR2V0SXRlbSIKICAgIlB5RGljdF9TZXRJdGVtIgpAQCAtMjg2LDExICsyODYsMTEgQEAKICAgIlB5RGljdEl0ZXJWYWx1ZV9UeXBlIgogICAiUHlEaWN0SXRlckl0ZW1fVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGVudW1vYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZW51bW9iamVjdCkKICAgIlB5RW51bV9UeXBlIgogICAiUHlSZXZlcnNlZF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZmlsZW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihmaWxlb2JqZWN0KQogICAiUHlGaWxlX0Zyb21TdHJpbmciCiAgICJQeV9Vbml2ZXJzYWxOZXdsaW5lRnJlYWQiCiAgICJQeUZpbGVfR2V0TGluZSIKQEAgLTMwNiw3ICszMDYsNyBAQAogICAiUHlGaWxlX05hbWUiCiAgICJQeUZpbGVfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGZsb2F0b2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZsb2F0b2JqZWN0KQogICAiUHlGbG9hdF9Gcm9tU3RyaW5nIgogICAiUHlGbG9hdF9Bc0RvdWJsZSIKICAgIlB5RmxvYXRfRmluaSIKQEAgLTMyMSw3ICszMjEsNyBAQAogICAiUHlGbG9hdF9Bc1N0cmluZ0V4IgogICAiUHlGbG9hdF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZnJhbWVvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZnJhbWVvYmplY3QpCiAgICJQeUZyYW1lX05ldyIKICAgIlB5RnJhbWVfRmFzdFRvTG9jYWxzIgogICAiUHlGcmFtZV9Mb2NhbHNUb0Zhc3QiCkBAIC0zMzEsNyArMzMxLDcgQEAKICAgIlB5RnJhbWVfQmxvY2tQb3AiCiAgICJQeUZyYW1lX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihmdW5jb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZ1bmNvYmplY3QpCiAgICJQeUZ1bmN0aW9uX05ldyIKICAgIlB5RnVuY3Rpb25fR2V0Q29kZSIKICAgIlB5RnVuY3Rpb25fR2V0R2xvYmFscyIKQEAgLTM0NiwxMiArMzQ2LDEyIEBACiAgICJQeUNsYXNzTWV0aG9kX1R5cGUiCiAgICJQeVN0YXRpY01ldGhvZF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2Vub2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdlbm9iamVjdCkKICAgIlB5R2VuX05ldyIKICAgIlB5R2VuX05lZWRzRmluYWxpemluZyIKICAgIlB5R2VuX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihpbnRvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoaW50b2JqZWN0KQogICAiUHlJbnRfQXNMb25nIgogICAiUHlJbnRfQXNVbnNpZ25lZExvbmdNYXNrIgogICAiUHlJbnRfQXNVbnNpZ25lZExvbmdMb25nTWFzayIKQEAgLTM2NiwxMyArMzY2LDEzIEBACiAgICJfUHlJbnRfSW5pdCIKICAgIlB5SW50X1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihpdGVyb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGl0ZXJvYmplY3QpCiAgICJQeVNlcUl0ZXJfTmV3IgogICAiUHlDYWxsSXRlcl9OZXciCiAgICJQeVNlcUl0ZXJfVHlwZSIKICAgIlB5Q2FsbEl0ZXJfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGxpc3RvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobGlzdG9iamVjdCkKICAgIlB5TGlzdF9OZXciCiAgICJQeUxpc3RfQXBwZW5kIgogICAiUHlMaXN0X1NpemUiCkBAIC0zOTAsNyArMzkwLDcgQEAKICAgIlB5TGlzdEl0ZXJfVHlwZSIKICAgIlB5TGlzdFJldkl0ZXJfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGxvbmdvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobG9uZ29iamVjdCkKICAgIlB5TG9uZ19Gcm9tRG91YmxlIgogICAiUHlMb25nX0FzTG9uZyIKICAgIl9QeUxvbmdfQXNTc2l6ZV90IgpAQCAtNDIwLDcgKzQyMCw3IEBACiAgICJQeUxvbmdfVHlwZSIKICAgIl9QeUxvbmdfRGlnaXRWYWx1ZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1ldGhvZG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihtZXRob2RvYmplY3QpCiAgICJQeUNGdW5jdGlvbl9DYWxsIgogICAiUHlfRmluZE1ldGhvZEluQ2hhaW4iCiAgICJQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbiIKQEAgLTQzMiw3ICs0MzIsNyBAQAogICAiUHlDRnVuY3Rpb25fTmV3IgogICAiUHlDRnVuY3Rpb25fVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1vZHVsZW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihtb2R1bGVvYmplY3QpCiAgICJQeU1vZHVsZV9OZXciCiAgICJfUHlNb2R1bGVfQ2xlYXIiCiAgICJQeU1vZHVsZV9HZXREaWN0IgpAQCAtNDQwLDcgKzQ0MCw3IEBACiAgICJQeU1vZHVsZV9HZXRGaWxlbmFtZSIKICAgIlB5TW9kdWxlX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIob2JqZWN0KQogICAiUHlfRGl2aXNpb25XYXJuaW5nRmxhZyIKICAgIlB5T2JqZWN0X1N0ciIKICAgIlB5T2JqZWN0X1JlcHIiCkBAIC00OTMsMTUgKzQ5MywxNSBAQAogICAiX1B5VHJhc2hfZGVsZXRlX25lc3RpbmciCiAgICJfUHlUcmFzaF9kZWxldGVfbGF0ZXIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihvYm1hbGxvYykKKzsgRnJvbSBweXRob24zM19zLmxpYihvYm1hbGxvYykKICAgIlB5T2JqZWN0X01hbGxvYyIKICAgIlB5T2JqZWN0X0ZyZWUiCiAgICJQeU9iamVjdF9SZWFsbG9jIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocmFuZ2VvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIocmFuZ2VvYmplY3QpCiAgICJQeVJhbmdlX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzZXRvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc2V0b2JqZWN0KQogICAiUHlTZXRfUG9wIgogICAiUHlTZXRfTmV3IgogICAiUHlGcm96ZW5TZXRfTmV3IgpAQCAtNTE2LDcgKzUxNiw3IEBACiAgICJQeVNldF9UeXBlIgogICAiUHlGcm96ZW5TZXRfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHNsaWNlb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHNsaWNlb2JqZWN0KQogICAiX1B5U2xpY2VfRnJvbUluZGljZXMiCiAgICJQeVNsaWNlX0dldEluZGljZXMiCiAgICJQeVNsaWNlX0dldEluZGljZXNFeCIKQEAgLTUyNCw3ICs1MjQsNyBAQAogICAiX1B5X0VsbGlwc2lzT2JqZWN0IgogICAiUHlTbGljZV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc3RyaW5nb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN0cmluZ29iamVjdCkKICAgIlB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplIgogICAiUHlTdHJpbmdfSW50ZXJuSW5QbGFjZSIKICAgIlB5U3RyaW5nX0Zyb21TdHJpbmciCkBAIC01NTUsMTIgKzU1NSwxMiBAQAogICAiUHlTdHJpbmdfVHlwZSIKICAgIlB5QmFzZVN0cmluZ19UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc3RydWN0c2VxKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN0cnVjdHNlcSkKICAgIlB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUiCiAgICJQeVN0cnVjdFNlcXVlbmNlX05ldyIKICAgIlB5U3RydWN0U2VxdWVuY2VfVW5uYW1lZEZpZWxkIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodHVwbGVvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodHVwbGVvYmplY3QpCiAgICJQeVR1cGxlX05ldyIKICAgIlB5VHVwbGVfUGFjayIKICAgIl9QeVR1cGxlX1Jlc2l6ZSIKQEAgLTU3Miw3ICs1NzIsNyBAQAogICAiUHlUdXBsZV9UeXBlIgogICAiUHlUdXBsZUl0ZXJfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHR5cGVvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodHlwZW9iamVjdCkKICAgIlB5VHlwZV9Jc1N1YnR5cGUiCiAgICJfUHlUeXBlX0xvb2t1cCIKICAgIlB5VHlwZV9SZWFkeSIKQEAgLTU4Myw3ICs1ODMsNyBAQAogICAiUHlCYXNlT2JqZWN0X1R5cGUiCiAgICJQeVN1cGVyX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih1bmljb2Rlb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHVuaWNvZGVvYmplY3QpCiAgICJQeVVuaWNvZGVVQ1MyX1Jlc2l6ZSIKICAgIlB5VW5pY29kZVVDUzJfRnJvbU9yZGluYWwiCiAgICJQeVVuaWNvZGVVQ1MyX0Zyb21PYmplY3QiCkBAIC02NDksNyArNjQ5LDcgQEAKICAgIlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QiCiAgICJQeVVuaWNvZGVfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHVuaWNvZGVjdHlwZSkKKzsgRnJvbSBweXRob24zM19zLmxpYih1bmljb2RlY3R5cGUpCiAgICJfUHlVbmljb2RlX1R5cGVSZWNvcmRzIgogICAiX1B5VW5pY29kZVVDUzJfVG9OdW1lcmljIgogICAiX1B5VW5pY29kZVVDUzJfSXNMb3dlcmNhc2UiCkBAIC02NjcsNyArNjY3LDcgQEAKICAgIl9QeVVuaWNvZGVVQ1MyX0lzTnVtZXJpYyIKICAgIl9QeVVuaWNvZGVVQ1MyX0lzQWxwaGEiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih3ZWFrcmVmb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHdlYWtyZWZvYmplY3QpCiAgICJQeVdlYWtyZWZfTmV3UmVmIgogICAiUHlXZWFrcmVmX05ld1Byb3h5IgogICAiUHlPYmplY3RfQ2xlYXJXZWFrUmVmcyIKQEAgLTY3OCw3ICs2NzgsNyBAQAogICAiX1B5V2Vha3JlZl9Qcm94eVR5cGUiCiAgICJfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoUHl0aG9uLWFzdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihQeXRob24tYXN0KQogOyAgImluaXRfYXN0IgogICAiTW9kdWxlIgogICAiSW50ZXJhY3RpdmUiCkBAIC03MzcsMTggKzczNywxOCBAQAogICAiYWxpYXMiCiAgICJQeUFTVF9tb2Qyb2JqIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYXNkbCkKKzsgRnJvbSBweXRob24zM19zLmxpYihhc2RsKQogICAiYXNkbF9zZXFfbmV3IgogICAiYXNkbF9pbnRfc2VxX25ldyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGFzdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihhc3QpCiAgICJQeUFTVF9Gcm9tTm9kZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGJsdGlubW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGJsdGlubW9kdWxlKQogICAiX1B5QnVpbHRpbl9Jbml0IgogICAiUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGV4Y2VwdGlvbnMpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZXhjZXB0aW9ucykKICAgIlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0IgogICAiUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQiCiAgICJQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQiCkBAIC04MjQsNyArODI0LDcgQEAKICAgIlB5RXhjX0ltcG9ydFdhcm5pbmciCiAgICJQeUV4Y19NZW1vcnlFcnJvckluc3QiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjZXZhbCkKKzsgRnJvbSBweXRob24zM19zLmxpYihjZXZhbCkKICAgIlB5RXZhbF9FdmFsRnJhbWVFeCIKICAgIlB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzIgogICAiUHlFdmFsX0V2YWxDb2RlRXgiCkBAIC04NjMsMTMgKzg2MywxMyBAQAogICAiX1B5X0NoZWNrSW50ZXJ2YWwiCiAgICJfUHlfVGlja2VyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29tcGlsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihjb21waWxlKQogICAiX1B5X01hbmdsZSIKICAgIlB5QVNUX0NvbXBpbGUiCiAgICJQeU5vZGVfQ29tcGlsZSIKICAgIlB5X09wdGltaXplRmxhZyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNvZGVjcykKKzsgRnJvbSBweXRob24zM19zLmxpYihjb2RlY3MpCiAgICJfUHlDb2RlY19Mb29rdXAiCiAgICJQeUNvZGVjX0VuY29kZSIKICAgIlB5Q29kZWNfRGVjb2RlIgpAQCAtODg4LDcgKzg4OCw3IEBACiAgICJQeUNvZGVjX0xvb2t1cEVycm9yIgogICAiUHlDb2RlY19TdHJpY3RFcnJvcnMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihlcnJvcnMpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZXJyb3JzKQogICAiUHlFcnJfU2V0Tm9uZSIKICAgIlB5RXJyX1NldFN0cmluZyIKICAgIlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyIKQEAgLTkxNCwxNiArOTE0LDE2IEBACiAgICJQeUVycl9XYXJuIgogICAiUHlFcnJfV2FybkV4cGxpY2l0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZnJvemVuKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZyb3plbikKICAgIlB5SW1wb3J0X0Zyb3plbk1vZHVsZXMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihmcm96ZW5tYWluKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZyb3plbm1haW4pCiAgICJQeV9Gcm96ZW5NYWluIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZnV0dXJlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZ1dHVyZSkKICAgIlB5RnV0dXJlX0Zyb21BU1QiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXRhcmdzKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldGFyZ3MpCiAgICJQeUFyZ19QYXJzZSIKICAgIl9QeUFyZ19QYXJzZV9TaXplVCIKICAgIlB5QXJnX1BhcnNlVHVwbGUiCkBAIC05MzcsMjIgKzkzNywyMiBAQAogICAiX1B5QXJnX1ZhUGFyc2VfU2l6ZVQiCiAgICJfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXRjb21waWxlcikKKzsgRnJvbSBweXRob24zM19zLmxpYihnZXRjb21waWxlcikKICAgIlB5X0dldENvbXBpbGVyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2V0Y29weXJpZ2h0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldGNvcHlyaWdodCkKICAgIlB5X0dldENvcHlyaWdodCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdldHBsYXRmb3JtKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldHBsYXRmb3JtKQogICAiUHlfR2V0UGxhdGZvcm0iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXR2ZXJzaW9uKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldHZlcnNpb24pCiAgICJQeV9HZXRWZXJzaW9uIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ3JhbWluaXQpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ3JhbWluaXQpCiAgICJfUHlQYXJzZXJfR3JhbW1hciIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGltcG9ydCkKKzsgRnJvbSBweXRob24zM19zLmxpYihpbXBvcnQpCiAgICJfUHlJbXBvcnRfSW5pdCIKICAgIl9QeUltcG9ydEhvb2tzX0luaXQiCiAgICJQeUltcG9ydF9JbXBvcnRNb2R1bGUiCkBAIC05NzksMTAgKzk3OSwxMCBAQAogICAiUHlJbXBvcnRfSW5pdHRhYiIKICAgIl9QeUltcG9ydF9GaWxldGFiIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoaW1wb3J0ZGwpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoaW1wb3J0ZGwpCiAgICJfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtYXJzaGFsKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1hcnNoYWwpCiAgICJQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZSIKICAgIlB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvU3RyaW5nIgogICAiUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZSIKQEAgLTk5Myw3ICs5OTMsNyBAQAogICAiUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nIgogICAiUHlNYXJzaGFsX0luaXQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtb2RzdXBwb3J0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1vZHN1cHBvcnQpCiAgICJQeV9Jbml0TW9kdWxlNCIKICAgIlB5X0J1aWxkVmFsdWUiCiAgICJfUHlfQnVpbGRWYWx1ZV9TaXplVCIKQEAgLTEwMDYsMjQgKzEwMDYsMjQgQEAKICAgIlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50IgogICAiX1B5X1BhY2thZ2VDb250ZXh0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobXlzbnByaW50ZikKKzsgRnJvbSBweXRob24zM19zLmxpYihteXNucHJpbnRmKQogICAiUHlPU19zbnByaW50ZiIKICAgIlB5T1NfdnNucHJpbnRmIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobXlzdHJ0b3VsKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG15c3RydG91bCkKICAgIlB5T1Nfc3RydG91bCIKICAgIlB5T1Nfc3RydG9sIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocHlhcmVuYSkKKzsgRnJvbSBweXRob24zM19zLmxpYihweWFyZW5hKQogICAiUHlBcmVuYV9OZXciCiAgICJQeUFyZW5hX0ZyZWUiCiAgICJQeUFyZW5hX01hbGxvYyIKICAgIlB5QXJlbmFfQWRkUHlPYmplY3QiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihweWZwZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihweWZwZSkKICAgIlB5RlBFX2R1bW15IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocHlzdGF0ZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihweXN0YXRlKQogICAiUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyIgogICAiUHlUaHJlYWRTdGF0ZV9DbGVhciIKICAgIl9QeVRocmVhZF9DdXJyZW50RnJhbWVzIgpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAKICAgIl9QeVRocmVhZFN0YXRlX0N1cnJlbnQiCiAgICJfUHlUaHJlYWRTdGF0ZV9HZXRGcmFtZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHB5dGhvbnJ1bikKKzsgRnJvbSBweXRob24zM19zLmxpYihweXRob25ydW4pCiAgICJQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWciCiAgICJQeV9EZWJ1Z0ZsYWciCiAgICJQeV9WZXJib3NlRmxhZyIKQEAgLTExMTAsMjAgKzExMTAsMjAgQEAKICAgIlB5X1VuaWNvZGVGbGFnIgogICAiX1B5X1FuZXdGbGFnIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc3RydWN0bWVtYmVyKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN0cnVjdG1lbWJlcikKICAgIlB5TWVtYmVyX0dldCIKICAgIlB5TWVtYmVyX0dldE9uZSIKICAgIlB5TWVtYmVyX1NldE9uZSIKICAgIlB5TWVtYmVyX1NldCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHN5bXRhYmxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN5bXRhYmxlKQogICAiUHlTeW10YWJsZV9CdWlsZCIKICAgIlB5U3ltdGFibGVfRnJlZSIKICAgIlB5U1RfR2V0U2NvcGUiCiAgICJQeVN5bXRhYmxlX0xvb2t1cCIKICAgIlB5U1RFbnRyeV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc3lzbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN5c21vZHVsZSkKICAgIl9QeVN5c19Jbml0IgogICAiUHlTeXNfV3JpdGVTdGRlcnIiCiAgICJQeVN5c19TZXRQYXRoIgpAQCAtMTEzNywyMiArMTEzNywyMiBAQAogICAiUHlTeXNfUmVzZXRXYXJuT3B0aW9ucyIKICAgIlB5U3lzX0FkZFdhcm5PcHRpb24iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih0cmFjZWJhY2spCis7IEZyb20gcHl0aG9uMzNfcy5saWIodHJhY2ViYWNrKQogICAiUHlUcmFjZUJhY2tfSGVyZSIKICAgIlB5VHJhY2VCYWNrX1ByaW50IgogICAiUHlUcmFjZUJhY2tfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdldG9wdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihnZXRvcHQpCiAgICJfUHlPU19HZXRPcHQiCiAgICJfUHlPU19vcHRlcnIiCiAgICJfUHlPU19vcHRpbmQiCiAgICJfUHlPU19vcHRhcmciCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihkeW5sb2FkX3NobGliKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGR5bmxvYWRfc2hsaWIpCiAgICJfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWIiCiAgICJfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih0aHJlYWQpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodGhyZWFkKQogICAiUHlUaHJlYWRfZGVsZXRlX2tleV92YWx1ZSIKICAgIlB5VGhyZWFkX2luaXRfdGhyZWFkIgogICAiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCIKQEAgLTExNjksNyArMTE2OSw3IEBACiAgICJQeVRocmVhZF9zZXRfa2V5X3ZhbHVlIgogICAiUHlUaHJlYWRfZ2V0X2tleV92YWx1ZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdjbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdjbW9kdWxlKQogOyAgImluaXRnYyIKICAgIl9QeU9iamVjdF9HQ19OZXciCiAgICJfUHlPYmplY3RfR0NfTmV3VmFyIgpAQCAtMTE4NSw3ICsxMTg1LDcgQEAKICAgIl9QeU9iamVjdF9HQ19EZWwiCiAgICJfUHlHQ19nZW5lcmF0aW9uMCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHNpZ25hbG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzaWduYWxtb2R1bGUpCiA7ICAiaW5pdHNpZ25hbCIKICAgIlB5RXJyX0NoZWNrU2lnbmFscyIKICAgIlB5RXJyX1NldEludGVycnVwdCIKQEAgLTExOTQsMTIxICsxMTk0LDEyMSBAQAogICAiUHlPU19Jbml0SW50ZXJydXB0cyIKICAgIlB5T1NfQWZ0ZXJGb3JrIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocG9zaXhtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIocG9zaXhtb2R1bGUpCiA7ICAiaW5pdG9zMiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF90aHJlYWRtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX3RocmVhZG1vZHVsZSkKIDsgICJpbml0X3RocmVhZCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGFycmF5bW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGFycmF5bW9kdWxlKQogOyAgImluaXRhcnJheSIKIDsgICJhcnJheV9tZXRob2RzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYmluYXNjaWkpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYmluYXNjaWkpCiA7ICAiaW5pdGJpbmFzY2lpIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY21hdGhtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY21hdGhtb2R1bGUpCiA7ICAiaW5pdGNtYXRoIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoX2NvZGVjc21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihfY29kZWNzbW9kdWxlKQogOyAgImluaXRfY29kZWNzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29sbGVjdGlvbnNtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY29sbGVjdGlvbnNtb2R1bGUpCiA7ICAiaW5pdGNvbGxlY3Rpb25zIgogICAiZGVxdWVpdGVyX3R5cGUiCiAgICJkZXF1ZXJldml0ZXJfdHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNQaWNrbGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY1BpY2tsZSkKIDsgICJpbml0Y1BpY2tsZSIKIDsgICJmYXN0X3NhdmVfbGVhdmUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfY3N2KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9jc3YpCiA7ICAiaW5pdF9jc3YiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihkYXRldGltZW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihkYXRldGltZW1vZHVsZSkKIDsgICJpbml0ZGF0ZXRpbWUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihkbG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihkbG1vZHVsZSkKIDsgICJpbml0ZGwiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihlcnJub21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihlcnJub21vZHVsZSkKIDsgICJpbml0ZXJybm8iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihmY250bG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihmY250bG1vZHVsZSkKIDsgICJpbml0ZmNudGwiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfZnVuY3Rvb2xzbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9mdW5jdG9vbHNtb2R1bGUpCiA7ICAiaW5pdF9mdW5jdG9vbHMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfaGVhcHFtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX2hlYXBxbW9kdWxlKQogOyAgImluaXRfaGVhcHEiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihpbWFnZW9wKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGltYWdlb3ApCiA7ICAiaW5pdGltYWdlb3AiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihpdGVydG9vbHNtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoaXRlcnRvb2xzbW9kdWxlKQogOyAgImluaXRpdGVydG9vbHMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfbG9jYWxlbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9sb2NhbGVtb2R1bGUpCiA7ICAiaW5pdF9sb2NhbGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtYXRobW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1hdGhtb2R1bGUpCiA7ICAiaW5pdG1hdGgiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtZDUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobWQ1KQogICAibWQ1X2ZpbmlzaCIKICAgIm1kNV9pbml0IgogICAibWQ1X2FwcGVuZCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1kNW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihtZDVtb2R1bGUpCiA7ICAiaW5pdF9tZDUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihvcGVyYXRvcikKKzsgRnJvbSBweXRob24zM19zLmxpYihvcGVyYXRvcikKIDsgICJpbml0b3BlcmF0b3IiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfcmFuZG9tbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9yYW5kb21tb2R1bGUpCiA7ICAiaW5pdF9yYW5kb20iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihyZ2JpbWdtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIocmdiaW1nbW9kdWxlKQogOyAgImluaXRyZ2JpbWciCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzaGFtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc2hhbW9kdWxlKQogOyAgImluaXRfc2hhIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc2hhMjU2bW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHNoYTI1Nm1vZHVsZSkKIDsgICJpbml0X3NoYTI1NiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHNoYTUxMm1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzaGE1MTJtb2R1bGUpCiA7ICAiaW5pdF9zaGE1MTIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfc3JlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9zcmUpCiA7ICAiaW5pdF9zcmUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzdHJvcG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzdHJvcG1vZHVsZSkKIDsgICJpbml0c3Ryb3AiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfc3RydWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9zdHJ1Y3QpCiA7ICAiaW5pdF9zdHJ1Y3QiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzeW10YWJsZW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzeW10YWJsZW1vZHVsZSkKIDsgICJpbml0X3N5bXRhYmxlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodGVybWlvcykKKzsgRnJvbSBweXRob24zM19zLmxpYih0ZXJtaW9zKQogOyAgImluaXR0ZXJtaW9zIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodGltZW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYih0aW1lbW9kdWxlKQogOyAgImluaXR0aW1lIgogICAiX1B5VGltZV9Eb3VibGVUb1RpbWV0IgogOyAgImluaXR0aW1lem9uZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHRpbWluZ21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYih0aW1pbmdtb2R1bGUpCiA7ICAiaW5pdHRpbWluZyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF93ZWFrcmVmKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF93ZWFrcmVmKQogOyAgImluaXRfd2Vha3JlZiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHh4c3VidHlwZSkKKzsgRnJvbSBweXRob24zM19zLmxpYih4eHN1YnR5cGUpCiA7ICAiaW5pdHh4c3VidHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHppcGltcG9ydCkKKzsgRnJvbSBweXRob24zM19zLmxpYih6aXBpbXBvcnQpCiA7ICAiaW5pdHppcGltcG9ydCIKZGlmZiAtLWdpdCBhL1BDL29zMnZhY3BwL2NvbmZpZy5jIGIvUEMvb3MydmFjcHAvY29uZmlnLmMKaW5kZXggYmJkZjZmMy4uYjI2YjUyMSAxMDA2NDQKLS0tIGEvUEMvb3MydmFjcHAvY29uZmlnLmMKKysrIGIvUEMvb3MydmFjcHAvY29uZmlnLmMKQEAgLTg4LDEwICs4OCw5IEBACiAgICAgICAgIHsibWFyc2hhbCIsIFB5TWFyc2hhbF9Jbml0fSwKIAogICAgICAgICAvKiBUaGlzIGxpdmVzIGl0IHdpdGggaW1wb3J0LmMgKi8KLSAgICAgICAgeyJpbXAiLCBpbml0aW1wfSwKKyAgICAgICAgeyJfaW1wIiwgaW5pdGltcH0sCiAKICAgICAgICAgLyogVGhlc2UgZW50cmllcyBhcmUgaGVyZSBmb3Igc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzICovCi0gICAgICAgIHsiX19tYWluX18iLCBOVUxMfSwKICAgICAgICAgeyJidWlsdGlucyIsIE5VTEx9LAogICAgICAgICB7InN5cyIsIE5VTEx9LAogCmRpZmYgLS1naXQgYS9QQy9weWNvbmZpZy5oIGIvUEMvcHljb25maWcuaAppbmRleCBiYTgwODAwLi5kNmRlNWYwIDEwMDY0NAotLS0gYS9QQy9weWNvbmZpZy5oCisrKyBiL1BDL3B5Y29uZmlnLmgKQEAgLTIxNSwxNCArMjE1LDE5IEBACiAjZGVmaW5lIGNvcHlzaWduIF9jb3B5c2lnbgogI2RlZmluZSBoeXBvdCBfaHlwb3QKIAotI2VuZGlmIC8qIF9NU0NfVkVSICovCisvKiBTaWRlIGJ5IFNpZGUgYXNzZW1ibGllcyBzdXBwb3J0ZWQgaW4gVlMgMjAwNSBhbmQgVlMgMjAwOCBidXQgbm90IDIwMTAqLworI2lmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxNjAwCisjZGVmaW5lIEhBVkVfU1hTIDEKKyNlbmRpZgogCiAvKiBkZWZpbmUgc29tZSBBTlNJIHR5cGVzIHRoYXQgYXJlIG5vdCBkZWZpbmVkIGluIGVhcmxpZXIgV2luIGhlYWRlcnMgKi8KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxMjAwCisjaWYgX01TQ19WRVIgPj0gMTIwMAogLyogVGhpcyBmaWxlIG9ubHkgZXhpc3RzIGluIFZDIDYuMCBvciBoaWdoZXIgKi8KICNpbmNsdWRlIDxiYXNldHNkLmg+CiAjZW5kaWYKIAorI2VuZGlmIC8qIF9NU0NfVkVSICovCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBUaGUgQm9ybGFuZCBjb21waWxlciBkZWZpbmVzIF9fQk9STEFORENfXyAqLwogLyogWFhYIFRoZXNlIGRlZmluZXMgYXJlIGxpa2VseSBpbmNvbXBsZXRlLCBidXQgc2hvdWxkIGJlIGVhc3kgdG8gZml4LiAqLwpAQCAtMzE5LDExICszMjQsMTEgQEAKIAkJCXRoZWlyIE1ha2VmaWxlIChvdGhlciBjb21waWxlcnMgYXJlIGdlbmVyYWxseQogCQkJdGFrZW4gY2FyZSBvZiBieSBkaXN0dXRpbHMuKSAqLwogIwkJCWlmIGRlZmluZWQoX0RFQlVHKQotIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMyX2QubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zM19kLmxpYiIpCiAjCQkJZWxpZiBkZWZpbmVkKFB5X0xJTUlURURfQVBJKQogIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMubGliIikKICMJCQllbHNlCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzIubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zMy5saWIiKQogIwkJCWVuZGlmIC8qIF9ERUJVRyAqLwogIwkJZW5kaWYgLyogX01TQ19WRVIgKi8KICMJZW5kaWYgLyogUHlfQlVJTERfQ09SRSAqLwpAQCAtNTUwLDEwICs1NTUsNiBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgR05VIHJlYWRsaW5lIGxpYnJhcnkgKi8KIC8qICNkZWZpbmUgV0lUSF9SRUFETElORSAxICovCiAKLS8qIERlZmluZSBhcyB0aGUgc2l6ZSBvZiB0aGUgdW5pY29kZSB0eXBlLiAqLwotLyogVGhpcyBpcyBlbm91Z2ggZm9yIHVuaWNvZGVvYmplY3QuaCB0byBkbyB0aGUgInJpZ2h0IHRoaW5nIiBvbiBXaW5kb3dzLiAqLwotI2RlZmluZSBQeV9VTklDT0RFX1NJWkUgMgotCiAvKiBVc2UgUHl0aG9uJ3Mgb3duIHNtYWxsLWJsb2NrIG1lbW9yeS1hbGxvY2F0b3IuICovCiAjZGVmaW5lIFdJVEhfUFlNQUxMT0MgMQogCkBAIC03MTQsOSArNzE1LDYgQEAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91dHNuYW1lLmg+IGhlYWRlciBmaWxlLiAgKi8KIC8qICNkZWZpbmUgSEFWRV9TWVNfVVRTTkFNRV9IIDEgKi8KIAotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8dGhyZWFkLmg+IGhlYWRlciBmaWxlLiAgKi8KLS8qICN1bmRlZiBIQVZFX1RIUkVBRF9IICovCi0KIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gICovCiAvKiAjZGVmaW5lIEhBVkVfVU5JU1REX0ggMSAqLwogCmRpZmYgLS1naXQgYS9QQy9weWxhdW5jaGVyLnJjIGIvUEMvcHlsYXVuY2hlci5yYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjU4MjRhCi0tLSAvZGV2L251bGwKKysrIGIvUEMvcHlsYXVuY2hlci5yYwpAQCAtMCwwICsxLDUxIEBACisjaW5jbHVkZSA8d2luZG93cy5oPgorCisjZGVmaW5lIE1TX1dJTkRPV1MKKyNpbmNsdWRlICIuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCIKKyNpbmNsdWRlICIuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCIKKyNpZmRlZiBfREVCVUcKKyMgICBpbmNsdWRlICJweXRob25udF9yY19kLmgiCisjZWxzZQorIyAgIGluY2x1ZGUgInB5dGhvbm50X3JjLmgiCisjZW5kaWYKKworI2RlZmluZSBQWVRIT05fVkVSU0lPTiBQWV9WRVJTSU9OICJcMCIKKyNkZWZpbmUgUFlWRVJTSU9ONjQgUFlfTUFKT1JfVkVSU0lPTiwgUFlfTUlOT1JfVkVSU0lPTiwgRklFTEQzLCBQWVRIT05fQVBJX1ZFUlNJT04KKworVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPCisgRklMRVZFUlNJT04gUFlWRVJTSU9ONjQKKyBQUk9EVUNUVkVSU0lPTiBQWVZFUlNJT042NAorIEZJTEVGTEFHU01BU0sgMHgxN0wKKyNpZmRlZiBfREVCVUcKKyBGSUxFRkxBR1MgMHgxTAorI2Vsc2UKKyBGSUxFRkxBR1MgMHgwTAorI2VuZGlmCisgRklMRU9TIDB4NEwKKyBGSUxFVFlQRSAweDFMCisgRklMRVNVQlRZUEUgMHgwTAorQkVHSU4KKyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgQkxPQ0sgIjA4MDkwNGIwIgorICAgICAgICBCRUdJTgorICAgICAgICAgICAgVkFMVUUgIkNvbW1lbnRzIiwgIlB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyIKKyAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsICJQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIChDb25zb2xlKSIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCisgICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgInB5IgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykgMjAxMS0yMDEyIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHkiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgRU5ECisgICAgRU5ECisgICAgQkxPQ0sgIlZhckZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4ODA5LCAxMjAwCisgICAgRU5ECitFTkQKKworSURJX0lDT04xICAgICAgICAgICAgICAgSUNPTiAgICAgICAgICAgICAgICAgICAgImxhdW5jaGVyLmljbyIKKworCmRpZmYgLS1naXQgYS9QQy9weXRob24zLmRlZiBiL1BDL3B5dGhvbjMuZGVmCmluZGV4IGE4NDUzMzUuLmQ3MjY1MjUgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMuZGVmCisrKyBiL1BDL3B5dGhvbjMuZGVmCkBAIC0xLDY4OSArMSw2OTkgQEAKKzsgV2hlbiBjaGFuZ2luZyB0aGlzIGZpbGUsIHJ1biBweXRob24zM2dlbi5weQogTElCUkFSWQkicHl0aG9uMyIKIEVYUE9SVFMKLSAgUHlBcmdfUGFyc2U9cHl0aG9uMzIuUHlBcmdfUGFyc2UKLSAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zMi5QeUFyZ19QYXJzZVR1cGxlCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zMi5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzIuUHlBcmdfVW5wYWNrVHVwbGUKLSAgUHlBcmdfVmFQYXJzZT1weXRob24zMi5QeUFyZ19WYVBhcnNlCi0gIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjMyLlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zMi5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKLSAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzIuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQotICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzIuUHlCb29sX0Zyb21Mb25nCi0gIFB5Qm9vbF9UeXBlPXB5dGhvbjMyLlB5Qm9vbF9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzIuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zMi5QeUJ5dGVBcnJheV9Bc1N0cmluZwotICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzIuUHlCeXRlQXJyYXlfQ29uY2F0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzIuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAotICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zMi5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzIuUHlCeXRlQXJyYXlfUmVzaXplCi0gIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzIuUHlCeXRlQXJyYXlfU2l6ZQotICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjMyLlB5Qnl0ZUFycmF5X1R5cGUgREFUQQotICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjMyLlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjMyLlB5Qnl0ZXNfQXNTdHJpbmcKLSAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzIuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzIuUHlCeXRlc19Db25jYXQKLSAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzIuUHlCeXRlc19Db25jYXRBbmREZWwKLSAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzIuUHlCeXRlc19EZWNvZGVFc2NhcGUKLSAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjMyLlB5Qnl0ZXNfRnJvbUZvcm1hdAotICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjMyLlB5Qnl0ZXNfRnJvbUZvcm1hdFYKLSAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjMyLlB5Qnl0ZXNfRnJvbU9iamVjdAotICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzIuUHlCeXRlc19Gcm9tU3RyaW5nCi0gIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzIuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzIuUHlCeXRlc19SZXByCi0gIFB5Qnl0ZXNfU2l6ZT1weXRob24zMi5QeUJ5dGVzX1NpemUKLSAgUHlCeXRlc19UeXBlPXB5dGhvbjMyLlB5Qnl0ZXNfVHlwZSBEQVRBCi0gIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzIuUHlDRnVuY3Rpb25fQ2FsbAotICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjMyLlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKLSAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzIuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLSAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzIuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KLSAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zMi5QeUNGdW5jdGlvbl9HZXRTZWxmCi0gIFB5Q0Z1bmN0aW9uX05ld0V4PXB5dGhvbjMyLlB5Q0Z1bmN0aW9uX05ld0V4Ci0gIFB5Q0Z1bmN0aW9uX1R5cGU9cHl0aG9uMzIuUHlDRnVuY3Rpb25fVHlwZSBEQVRBCi0gIFB5Q2FsbEl0ZXJfTmV3PXB5dGhvbjMyLlB5Q2FsbEl0ZXJfTmV3Ci0gIFB5Q2FsbEl0ZXJfVHlwZT1weXRob24zMi5QeUNhbGxJdGVyX1R5cGUgREFUQQotICBQeUNhbGxhYmxlX0NoZWNrPXB5dGhvbjMyLlB5Q2FsbGFibGVfQ2hlY2sKLSAgUHlDYXBzdWxlX0dldENvbnRleHQ9cHl0aG9uMzIuUHlDYXBzdWxlX0dldENvbnRleHQKLSAgUHlDYXBzdWxlX0dldERlc3RydWN0b3I9cHl0aG9uMzIuUHlDYXBzdWxlX0dldERlc3RydWN0b3IKLSAgUHlDYXBzdWxlX0dldE5hbWU9cHl0aG9uMzIuUHlDYXBzdWxlX0dldE5hbWUKLSAgUHlDYXBzdWxlX0dldFBvaW50ZXI9cHl0aG9uMzIuUHlDYXBzdWxlX0dldFBvaW50ZXIKLSAgUHlDYXBzdWxlX0ltcG9ydD1weXRob24zMi5QeUNhcHN1bGVfSW1wb3J0Ci0gIFB5Q2Fwc3VsZV9Jc1ZhbGlkPXB5dGhvbjMyLlB5Q2Fwc3VsZV9Jc1ZhbGlkCi0gIFB5Q2Fwc3VsZV9OZXc9cHl0aG9uMzIuUHlDYXBzdWxlX05ldwotICBQeUNhcHN1bGVfU2V0Q29udGV4dD1weXRob24zMi5QeUNhcHN1bGVfU2V0Q29udGV4dAotICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcj1weXRob24zMi5QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfU2V0TmFtZT1weXRob24zMi5QeUNhcHN1bGVfU2V0TmFtZQotICBQeUNhcHN1bGVfU2V0UG9pbnRlcj1weXRob24zMi5QeUNhcHN1bGVfU2V0UG9pbnRlcgotICBQeUNhcHN1bGVfVHlwZT1weXRob24zMi5QeUNhcHN1bGVfVHlwZSBEQVRBCi0gIFB5Q2xhc3NNZXRob2REZXNjcl9UeXBlPXB5dGhvbjMyLlB5Q2xhc3NNZXRob2REZXNjcl9UeXBlIERBVEEKLSAgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzPXB5dGhvbjMyLlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycwotICBQeUNvZGVjX0RlY29kZT1weXRob24zMi5QeUNvZGVjX0RlY29kZQotICBQeUNvZGVjX0RlY29kZXI9cHl0aG9uMzIuUHlDb2RlY19EZWNvZGVyCi0gIFB5Q29kZWNfRW5jb2RlPXB5dGhvbjMyLlB5Q29kZWNfRW5jb2RlCi0gIFB5Q29kZWNfRW5jb2Rlcj1weXRob24zMi5QeUNvZGVjX0VuY29kZXIKLSAgUHlDb2RlY19JZ25vcmVFcnJvcnM9cHl0aG9uMzIuUHlDb2RlY19JZ25vcmVFcnJvcnMKLSAgUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXI9cHl0aG9uMzIuUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKLSAgUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXI9cHl0aG9uMzIuUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKLSAgUHlDb2RlY19Lbm93bkVuY29kaW5nPXB5dGhvbjMyLlB5Q29kZWNfS25vd25FbmNvZGluZwotICBQeUNvZGVjX0xvb2t1cEVycm9yPXB5dGhvbjMyLlB5Q29kZWNfTG9va3VwRXJyb3IKLSAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zMi5QeUNvZGVjX1JlZ2lzdGVyCi0gIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zMi5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKLSAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjMyLlB5Q29kZWNfUmVwbGFjZUVycm9ycwotICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zMi5QeUNvZGVjX1N0cmVhbVJlYWRlcgotICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zMi5QeUNvZGVjX1N0cmVhbVdyaXRlcgotICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zMi5QeUNvZGVjX1N0cmljdEVycm9ycwotICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjMyLlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKLSAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjMyLlB5Q29tcGxleF9Gcm9tRG91YmxlcwotICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjMyLlB5Q29tcGxleF9JbWFnQXNEb3VibGUKLSAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zMi5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCi0gIFB5Q29tcGxleF9UeXBlPXB5dGhvbjMyLlB5Q29tcGxleF9UeXBlIERBVEEKLSAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zMi5QeURlc2NyX05ld0NsYXNzTWV0aG9kCi0gIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjMyLlB5RGVzY3JfTmV3R2V0U2V0Ci0gIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjMyLlB5RGVzY3JfTmV3TWVtYmVyCi0gIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjMyLlB5RGVzY3JfTmV3TWV0aG9kCi0gIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzIuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzIuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zMi5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQotICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zMi5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCi0gIFB5RGljdEtleXNfVHlwZT1weXRob24zMi5QeURpY3RLZXlzX1R5cGUgREFUQQotICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzIuUHlEaWN0UHJveHlfTmV3Ci0gIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzIuUHlEaWN0UHJveHlfVHlwZSBEQVRBCi0gIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjMyLlB5RGljdFZhbHVlc19UeXBlIERBVEEKLSAgUHlEaWN0X0NsZWFyPXB5dGhvbjMyLlB5RGljdF9DbGVhcgotICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzIuUHlEaWN0X0NvbnRhaW5zCi0gIFB5RGljdF9Db3B5PXB5dGhvbjMyLlB5RGljdF9Db3B5Ci0gIFB5RGljdF9EZWxJdGVtPXB5dGhvbjMyLlB5RGljdF9EZWxJdGVtCi0gIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjMyLlB5RGljdF9EZWxJdGVtU3RyaW5nCi0gIFB5RGljdF9HZXRJdGVtPXB5dGhvbjMyLlB5RGljdF9HZXRJdGVtCi0gIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjMyLlB5RGljdF9HZXRJdGVtU3RyaW5nCi0gIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjMyLlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCi0gIFB5RGljdF9JdGVtcz1weXRob24zMi5QeURpY3RfSXRlbXMKLSAgUHlEaWN0X0tleXM9cHl0aG9uMzIuUHlEaWN0X0tleXMKLSAgUHlEaWN0X01lcmdlPXB5dGhvbjMyLlB5RGljdF9NZXJnZQotICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zMi5QeURpY3RfTWVyZ2VGcm9tU2VxMgotICBQeURpY3RfTmV3PXB5dGhvbjMyLlB5RGljdF9OZXcKLSAgUHlEaWN0X05leHQ9cHl0aG9uMzIuUHlEaWN0X05leHQKLSAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzIuUHlEaWN0X1NldEl0ZW0KLSAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzIuUHlEaWN0X1NldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X1NpemU9cHl0aG9uMzIuUHlEaWN0X1NpemUKLSAgUHlEaWN0X1R5cGU9cHl0aG9uMzIuUHlEaWN0X1R5cGUgREFUQQotICBQeURpY3RfVXBkYXRlPXB5dGhvbjMyLlB5RGljdF9VcGRhdGUKLSAgUHlEaWN0X1ZhbHVlcz1weXRob24zMi5QeURpY3RfVmFsdWVzCi0gIFB5RWxsaXBzaXNfVHlwZT1weXRob24zMi5QeUVsbGlwc2lzX1R5cGUgREFUQQotICBQeUVudW1fVHlwZT1weXRob24zMi5QeUVudW1fVHlwZSBEQVRBCi0gIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjMyLlB5RXJyX0JhZEFyZ3VtZW50Ci0gIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zMi5QeUVycl9CYWRJbnRlcm5hbENhbGwKLSAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjMyLlB5RXJyX0NoZWNrU2lnbmFscwotICBQeUVycl9DbGVhcj1weXRob24zMi5QeUVycl9DbGVhcgotICBQeUVycl9EaXNwbGF5PXB5dGhvbjMyLlB5RXJyX0Rpc3BsYXkKLSAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zMi5QeUVycl9FeGNlcHRpb25NYXRjaGVzCi0gIFB5RXJyX0ZldGNoPXB5dGhvbjMyLlB5RXJyX0ZldGNoCi0gIFB5RXJyX0Zvcm1hdD1weXRob24zMi5QeUVycl9Gb3JtYXQKLSAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjMyLlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzIuUHlFcnJfTmV3RXhjZXB0aW9uCi0gIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzIuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYwotICBQeUVycl9Ob01lbW9yeT1weXRob24zMi5QeUVycl9Ob01lbW9yeQotICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzIuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCi0gIFB5RXJyX09jY3VycmVkPXB5dGhvbjMyLlB5RXJyX09jY3VycmVkCi0gIFB5RXJyX1ByaW50PXB5dGhvbjMyLlB5RXJyX1ByaW50Ci0gIFB5RXJyX1ByaW50RXg9cHl0aG9uMzIuUHlFcnJfUHJpbnRFeAotICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zMi5QeUVycl9Qcm9ncmFtVGV4dAotICBQeUVycl9SZXN0b3JlPXB5dGhvbjMyLlB5RXJyX1Jlc3RvcmUKLSAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjMyLlB5RXJyX1NldEZyb21FcnJubwotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzIuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zMi5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKLSAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjMyLlB5RXJyX1NldEludGVycnVwdAotICBQeUVycl9TZXROb25lPXB5dGhvbjMyLlB5RXJyX1NldE5vbmUKLSAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjMyLlB5RXJyX1NldE9iamVjdAotICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzIuUHlFcnJfU2V0U3RyaW5nCi0gIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjMyLlB5RXJyX1N5bnRheExvY2F0aW9uCi0gIFB5RXJyX1dhcm5FeD1weXRob24zMi5QeUVycl9XYXJuRXgKLSAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjMyLlB5RXJyX1dhcm5FeHBsaWNpdAotICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjMyLlB5RXJyX1dhcm5Gb3JtYXQKLSAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjMyLlB5RXJyX1dyaXRlVW5yYWlzYWJsZQotICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzIuUHlFdmFsX0FjcXVpcmVMb2NrCi0gIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjMyLlB5RXZhbF9BY3F1aXJlVGhyZWFkCi0gIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzIuUHlFdmFsX0NhbGxGdW5jdGlvbgotICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zMi5QeUV2YWxfQ2FsbE1ldGhvZAotICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zMi5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcwotICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzIuUHlFdmFsX0V2YWxDb2RlCi0gIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjMyLlB5RXZhbF9FdmFsQ29kZUV4Ci0gIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzIuUHlFdmFsX0V2YWxGcmFtZQotICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzIuUHlFdmFsX0V2YWxGcmFtZUV4Ci0gIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zMi5QeUV2YWxfR2V0QnVpbHRpbnMKLSAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zMi5QeUV2YWxfR2V0Q2FsbFN0YXRzCi0gIFB5RXZhbF9HZXRGcmFtZT1weXRob24zMi5QeUV2YWxfR2V0RnJhbWUKLSAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjMyLlB5RXZhbF9HZXRGdW5jRGVzYwotICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzIuUHlFdmFsX0dldEZ1bmNOYW1lCi0gIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjMyLlB5RXZhbF9HZXRHbG9iYWxzCi0gIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzIuUHlFdmFsX0dldExvY2FscwotICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzIuUHlFdmFsX0luaXRUaHJlYWRzCi0gIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjMyLlB5RXZhbF9SZUluaXRUaHJlYWRzCi0gIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zMi5QeUV2YWxfUmVsZWFzZUxvY2sKLSAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzIuUHlFdmFsX1JlbGVhc2VUaHJlYWQKLSAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzIuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKLSAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzIuUHlFdmFsX1NhdmVUaHJlYWQKLSAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zMi5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCi0gIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zMi5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQotICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zMi5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjMyLlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKLSAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zMi5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzIuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQotICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzIuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKLSAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjMyLlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX0VPRkVycm9yPXB5dGhvbjMyLlB5RXhjX0VPRkVycm9yIERBVEEKLSAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zMi5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKLSAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjMyLlB5RXhjX0V4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zMi5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQotICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjMyLlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQotICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjMyLlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQotICBQeUV4Y19JT0Vycm9yPXB5dGhvbjMyLlB5RXhjX0lPRXJyb3IgREFUQQotICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zMi5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzIuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCi0gIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzIuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzIuUHlFeGNfSW5kZXhFcnJvciBEQVRBCi0gIFB5RXhjX0tleUVycm9yPXB5dGhvbjMyLlB5RXhjX0tleUVycm9yIERBVEEKLSAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzIuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQotICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zMi5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCi0gIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjMyLlB5RXhjX01lbW9yeUVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjMyLlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCi0gIFB5RXhjX05hbWVFcnJvcj1weXRob24zMi5QeUV4Y19OYW1lRXJyb3IgREFUQQotICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjMyLlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQotICBQeUV4Y19PU0Vycm9yPXB5dGhvbjMyLlB5RXhjX09TRXJyb3IgREFUQQotICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjMyLlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQotICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjMyLlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQotICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzIuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzIuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzIuUHlFeGNfUnVudGltZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzIuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQotICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjMyLlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQotICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zMi5QeUV4Y19TeW50YXhFcnJvciBEQVRBCi0gIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzIuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCi0gIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjMyLlB5RXhjX1N5c3RlbUVycm9yIERBVEEKLSAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zMi5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKLSAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzIuUHlFeGNfVGFiRXJyb3IgREFUQQotICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzIuUHlFeGNfVHlwZUVycm9yIERBVEEKLSAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzIuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzIuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjMyLlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zMi5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzIuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzIuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQotICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zMi5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCi0gIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzIuUHlFeGNfVmFsdWVFcnJvciBEQVRBCi0gIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzIuUHlFeGNfV2FybmluZyBEQVRBCi0gIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjMyLlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKLSAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzIuUHlFeGNlcHRpb25fR2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zMi5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zMi5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKLSAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzIuUHlFeGNlcHRpb25fU2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zMi5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zMi5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKLSAgUHlGaWxlX0Zyb21GZD1weXRob24zMi5QeUZpbGVfRnJvbUZkCi0gIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjMyLlB5RmlsZV9HZXRMaW5lCi0gIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zMi5QeUZpbGVfV3JpdGVPYmplY3QKLSAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjMyLlB5RmlsZV9Xcml0ZVN0cmluZwotICBQeUZpbHRlcl9UeXBlPXB5dGhvbjMyLlB5RmlsdGVyX1R5cGUgREFUQQotICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjMyLlB5RmxvYXRfQXNEb3VibGUKLSAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjMyLlB5RmxvYXRfRnJvbURvdWJsZQotICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzIuUHlGbG9hdF9Gcm9tU3RyaW5nCi0gIFB5RmxvYXRfR2V0SW5mbz1weXRob24zMi5QeUZsb2F0X0dldEluZm8KLSAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzIuUHlGbG9hdF9HZXRNYXgKLSAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzIuUHlGbG9hdF9HZXRNaW4KLSAgUHlGbG9hdF9UeXBlPXB5dGhvbjMyLlB5RmxvYXRfVHlwZSBEQVRBCi0gIFB5RnJvemVuU2V0X05ldz1weXRob24zMi5QeUZyb3plblNldF9OZXcKLSAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zMi5QeUZyb3plblNldF9UeXBlIERBVEEKLSAgUHlHQ19Db2xsZWN0PXB5dGhvbjMyLlB5R0NfQ29sbGVjdAotICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zMi5QeUdJTFN0YXRlX0Vuc3VyZQotICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zMi5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQotICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzIuUHlHSUxTdGF0ZV9SZWxlYXNlCi0gIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zMi5QeUdldFNldERlc2NyX1R5cGUgREFUQQotICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzIuUHlJbXBvcnRfQWRkTW9kdWxlCi0gIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzIuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgotICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjMyLlB5SW1wb3J0X0NsZWFudXAKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzIuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zMi5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4Ci0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zMi5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKLSAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzIuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzIuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzIuUHlJbXBvcnRfR2V0TWFnaWNUYWcKLSAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zMi5QeUltcG9ydF9HZXRNb2R1bGVEaWN0Ci0gIFB5SW1wb3J0X0ltcG9ydD1weXRob24zMi5QeUltcG9ydF9JbXBvcnQKLSAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjMyLlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzIuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjMyLlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzIuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jawotICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzIuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zMi5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKLSAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zMi5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzIuUHlJbnRlcnByZXRlclN0YXRlX05ldwotICBQeUl0ZXJfTmV4dD1weXRob24zMi5QeUl0ZXJfTmV4dAotICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzIuUHlMaXN0SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjMyLlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzIuUHlMaXN0X0FwcGVuZAotICBQeUxpc3RfQXNUdXBsZT1weXRob24zMi5QeUxpc3RfQXNUdXBsZQotICBQeUxpc3RfR2V0SXRlbT1weXRob24zMi5QeUxpc3RfR2V0SXRlbQotICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzIuUHlMaXN0X0dldFNsaWNlCi0gIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzIuUHlMaXN0X0luc2VydAotICBQeUxpc3RfTmV3PXB5dGhvbjMyLlB5TGlzdF9OZXcKLSAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzIuUHlMaXN0X1JldmVyc2UKLSAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzIuUHlMaXN0X1NldEl0ZW0KLSAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjMyLlB5TGlzdF9TZXRTbGljZQotICBQeUxpc3RfU2l6ZT1weXRob24zMi5QeUxpc3RfU2l6ZQotICBQeUxpc3RfU29ydD1weXRob24zMi5QeUxpc3RfU29ydAotICBQeUxpc3RfVHlwZT1weXRob24zMi5QeUxpc3RfVHlwZSBEQVRBCi0gIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjMyLlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjMyLlB5TG9uZ19Bc0RvdWJsZQotICBQeUxvbmdfQXNMb25nPXB5dGhvbjMyLlB5TG9uZ19Bc0xvbmcKLSAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjMyLlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zMi5QeUxvbmdfQXNMb25nTG9uZwotICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjMyLlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjMyLlB5TG9uZ19Bc1NpemVfdAotICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjMyLlB5TG9uZ19Bc1NzaXplX3QKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjMyLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjMyLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzIuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zMi5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCi0gIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzIuUHlMb25nX0FzVm9pZFB0cgotICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zMi5QeUxvbmdfRnJvbURvdWJsZQotICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzIuUHlMb25nX0Zyb21Mb25nCi0gIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzIuUHlMb25nX0Zyb21Mb25nTG9uZwotICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zMi5QeUxvbmdfRnJvbVNpemVfdAotICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzIuUHlMb25nX0Zyb21Tc2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjMyLlB5TG9uZ19Gcm9tU3RyaW5nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjMyLlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zMi5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjMyLlB5TG9uZ19Gcm9tVm9pZFB0cgotICBQeUxvbmdfR2V0SW5mbz1weXRob24zMi5QeUxvbmdfR2V0SW5mbwotICBQeUxvbmdfVHlwZT1weXRob24zMi5QeUxvbmdfVHlwZSBEQVRBCi0gIFB5TWFwX1R5cGU9cHl0aG9uMzIuUHlNYXBfVHlwZSBEQVRBCi0gIFB5TWFwcGluZ19DaGVjaz1weXRob24zMi5QeU1hcHBpbmdfQ2hlY2sKLSAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzIuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zMi5QeU1hcHBpbmdfSGFzS2V5Ci0gIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzIuUHlNYXBwaW5nX0hhc0tleVN0cmluZwotICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzIuUHlNYXBwaW5nX0l0ZW1zCi0gIFB5TWFwcGluZ19LZXlzPXB5dGhvbjMyLlB5TWFwcGluZ19LZXlzCi0gIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzIuUHlNYXBwaW5nX0xlbmd0aAotICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zMi5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfU2l6ZT1weXRob24zMi5QeU1hcHBpbmdfU2l6ZQotICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjMyLlB5TWFwcGluZ19WYWx1ZXMKLSAgUHlNZW1fRnJlZT1weXRob24zMi5QeU1lbV9GcmVlCi0gIFB5TWVtX01hbGxvYz1weXRob24zMi5QeU1lbV9NYWxsb2MKLSAgUHlNZW1fUmVhbGxvYz1weXRob24zMi5QeU1lbV9SZWFsbG9jCi0gIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zMi5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQotICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zMi5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAotICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zMi5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cwotICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zMi5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCi0gIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zMi5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zMi5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAotICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzIuUHlNb2R1bGVfQWRkT2JqZWN0Ci0gIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjMyLlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50Ci0gIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzIuUHlNb2R1bGVfQ3JlYXRlMgotICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzIuUHlNb2R1bGVfR2V0RGVmCi0gIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzIuUHlNb2R1bGVfR2V0RGljdAotICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zMi5QeU1vZHVsZV9HZXRGaWxlbmFtZQotICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zMi5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAotICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjMyLlB5TW9kdWxlX0dldE5hbWUKLSAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzIuUHlNb2R1bGVfR2V0U3RhdGUKLSAgUHlNb2R1bGVfTmV3PXB5dGhvbjMyLlB5TW9kdWxlX05ldwotICBQeU1vZHVsZV9UeXBlPXB5dGhvbjMyLlB5TW9kdWxlX1R5cGUgREFUQQotICBQeU51bGxJbXBvcnRlcl9UeXBlPXB5dGhvbjMyLlB5TnVsbEltcG9ydGVyX1R5cGUgREFUQQotICBQeU51bWJlcl9BYnNvbHV0ZT1weXRob24zMi5QeU51bWJlcl9BYnNvbHV0ZQotICBQeU51bWJlcl9BZGQ9cHl0aG9uMzIuUHlOdW1iZXJfQWRkCi0gIFB5TnVtYmVyX0FuZD1weXRob24zMi5QeU51bWJlcl9BbmQKLSAgUHlOdW1iZXJfQXNTc2l6ZV90PXB5dGhvbjMyLlB5TnVtYmVyX0FzU3NpemVfdAotICBQeU51bWJlcl9DaGVjaz1weXRob24zMi5QeU51bWJlcl9DaGVjawotICBQeU51bWJlcl9EaXZtb2Q9cHl0aG9uMzIuUHlOdW1iZXJfRGl2bW9kCi0gIFB5TnVtYmVyX0Zsb2F0PXB5dGhvbjMyLlB5TnVtYmVyX0Zsb2F0Ci0gIFB5TnVtYmVyX0Zsb29yRGl2aWRlPXB5dGhvbjMyLlB5TnVtYmVyX0Zsb29yRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VBZGQ9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZUFkZAotICBQeU51bWJlcl9JblBsYWNlQW5kPXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VBbmQKLSAgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlPXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlTHNoaWZ0PXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VMc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5PXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VNdWx0aXBseQotICBQeU51bWJlcl9JblBsYWNlT3I9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZU9yCi0gIFB5TnVtYmVyX0luUGxhY2VQb3dlcj1weXRob24zMi5QeU51bWJlcl9JblBsYWNlUG93ZXIKLSAgUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcj1weXRob24zMi5QeU51bWJlcl9JblBsYWNlUmVtYWluZGVyCi0gIFB5TnVtYmVyX0luUGxhY2VSc2hpZnQ9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZVJzaGlmdAotICBQeU51bWJlcl9JblBsYWNlU3VidHJhY3Q9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0Ci0gIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlPXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VYb3I9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZVhvcgotICBQeU51bWJlcl9JbmRleD1weXRob24zMi5QeU51bWJlcl9JbmRleAotICBQeU51bWJlcl9JbnZlcnQ9cHl0aG9uMzIuUHlOdW1iZXJfSW52ZXJ0Ci0gIFB5TnVtYmVyX0xvbmc9cHl0aG9uMzIuUHlOdW1iZXJfTG9uZwotICBQeU51bWJlcl9Mc2hpZnQ9cHl0aG9uMzIuUHlOdW1iZXJfTHNoaWZ0Ci0gIFB5TnVtYmVyX011bHRpcGx5PXB5dGhvbjMyLlB5TnVtYmVyX011bHRpcGx5Ci0gIFB5TnVtYmVyX05lZ2F0aXZlPXB5dGhvbjMyLlB5TnVtYmVyX05lZ2F0aXZlCi0gIFB5TnVtYmVyX09yPXB5dGhvbjMyLlB5TnVtYmVyX09yCi0gIFB5TnVtYmVyX1Bvc2l0aXZlPXB5dGhvbjMyLlB5TnVtYmVyX1Bvc2l0aXZlCi0gIFB5TnVtYmVyX1Bvd2VyPXB5dGhvbjMyLlB5TnVtYmVyX1Bvd2VyCi0gIFB5TnVtYmVyX1JlbWFpbmRlcj1weXRob24zMi5QeU51bWJlcl9SZW1haW5kZXIKLSAgUHlOdW1iZXJfUnNoaWZ0PXB5dGhvbjMyLlB5TnVtYmVyX1JzaGlmdAotICBQeU51bWJlcl9TdWJ0cmFjdD1weXRob24zMi5QeU51bWJlcl9TdWJ0cmFjdAotICBQeU51bWJlcl9Ub0Jhc2U9cHl0aG9uMzIuUHlOdW1iZXJfVG9CYXNlCi0gIFB5TnVtYmVyX1RydWVEaXZpZGU9cHl0aG9uMzIuUHlOdW1iZXJfVHJ1ZURpdmlkZQotICBQeU51bWJlcl9Yb3I9cHl0aG9uMzIuUHlOdW1iZXJfWG9yCi0gIFB5T1NfQWZ0ZXJGb3JrPXB5dGhvbjMyLlB5T1NfQWZ0ZXJGb3JrCi0gIFB5T1NfSW5pdEludGVycnVwdHM9cHl0aG9uMzIuUHlPU19Jbml0SW50ZXJydXB0cwotICBQeU9TX0lucHV0SG9vaz1weXRob24zMi5QeU9TX0lucHV0SG9vayBEQVRBCi0gIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQ9cHl0aG9uMzIuUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAotICBQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyPXB5dGhvbjMyLlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIgREFUQQotICBQeU9TX2RvdWJsZV90b19zdHJpbmc9cHl0aG9uMzIuUHlPU19kb3VibGVfdG9fc3RyaW5nCi0gIFB5T1NfZ2V0c2lnPXB5dGhvbjMyLlB5T1NfZ2V0c2lnCi0gIFB5T1NfbXlzdHJpY21wPXB5dGhvbjMyLlB5T1NfbXlzdHJpY21wCi0gIFB5T1NfbXlzdHJuaWNtcD1weXRob24zMi5QeU9TX215c3RybmljbXAKLSAgUHlPU19zZXRzaWc9cHl0aG9uMzIuUHlPU19zZXRzaWcKLSAgUHlPU19zbnByaW50Zj1weXRob24zMi5QeU9TX3NucHJpbnRmCi0gIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZT1weXRob24zMi5QeU9TX3N0cmluZ190b19kb3VibGUKLSAgUHlPU19zdHJ0b2w9cHl0aG9uMzIuUHlPU19zdHJ0b2wKLSAgUHlPU19zdHJ0b3VsPXB5dGhvbjMyLlB5T1Nfc3RydG91bAotICBQeU9TX3ZzbnByaW50Zj1weXRob24zMi5QeU9TX3ZzbnByaW50ZgotICBQeU9iamVjdF9BU0NJST1weXRob24zMi5QeU9iamVjdF9BU0NJSQotICBQeU9iamVjdF9Bc0NoYXJCdWZmZXI9cHl0aG9uMzIuUHlPYmplY3RfQXNDaGFyQnVmZmVyCi0gIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I9cHl0aG9uMzIuUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcgotICBQeU9iamVjdF9Bc1JlYWRCdWZmZXI9cHl0aG9uMzIuUHlPYmplY3RfQXNSZWFkQnVmZmVyCi0gIFB5T2JqZWN0X0FzV3JpdGVCdWZmZXI9cHl0aG9uMzIuUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgotICBQeU9iamVjdF9CeXRlcz1weXRob24zMi5QeU9iamVjdF9CeXRlcwotICBQeU9iamVjdF9DYWxsPXB5dGhvbjMyLlB5T2JqZWN0X0NhbGwKLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uPXB5dGhvbjMyLlB5T2JqZWN0X0NhbGxGdW5jdGlvbgotICBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzPXB5dGhvbjMyLlB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKLSAgUHlPYmplY3RfQ2FsbE1ldGhvZD1weXRob24zMi5QeU9iamVjdF9DYWxsTWV0aG9kCi0gIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzPXB5dGhvbjMyLlB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxPYmplY3Q9cHl0aG9uMzIuUHlPYmplY3RfQ2FsbE9iamVjdAotICBQeU9iamVjdF9DaGVja1JlYWRCdWZmZXI9cHl0aG9uMzIuUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyCi0gIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnM9cHl0aG9uMzIuUHlPYmplY3RfQ2xlYXJXZWFrUmVmcwotICBQeU9iamVjdF9EZWxJdGVtPXB5dGhvbjMyLlB5T2JqZWN0X0RlbEl0ZW0KLSAgUHlPYmplY3RfRGVsSXRlbVN0cmluZz1weXRob24zMi5QeU9iamVjdF9EZWxJdGVtU3RyaW5nCi0gIFB5T2JqZWN0X0Rpcj1weXRob24zMi5QeU9iamVjdF9EaXIKLSAgUHlPYmplY3RfRm9ybWF0PXB5dGhvbjMyLlB5T2JqZWN0X0Zvcm1hdAotICBQeU9iamVjdF9GcmVlPXB5dGhvbjMyLlB5T2JqZWN0X0ZyZWUKLSAgUHlPYmplY3RfR0NfRGVsPXB5dGhvbjMyLlB5T2JqZWN0X0dDX0RlbAotICBQeU9iamVjdF9HQ19UcmFjaz1weXRob24zMi5QeU9iamVjdF9HQ19UcmFjawotICBQeU9iamVjdF9HQ19VblRyYWNrPXB5dGhvbjMyLlB5T2JqZWN0X0dDX1VuVHJhY2sKLSAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHI9cHl0aG9uMzIuUHlPYmplY3RfR2VuZXJpY0dldEF0dHIKLSAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHI9cHl0aG9uMzIuUHlPYmplY3RfR2VuZXJpY1NldEF0dHIKLSAgUHlPYmplY3RfR2V0QXR0cj1weXRob24zMi5QeU9iamVjdF9HZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHJTdHJpbmc9cHl0aG9uMzIuUHlPYmplY3RfR2V0QXR0clN0cmluZwotICBQeU9iamVjdF9HZXRJdGVtPXB5dGhvbjMyLlB5T2JqZWN0X0dldEl0ZW0KLSAgUHlPYmplY3RfR2V0SXRlcj1weXRob24zMi5QeU9iamVjdF9HZXRJdGVyCi0gIFB5T2JqZWN0X0hhc0F0dHI9cHl0aG9uMzIuUHlPYmplY3RfSGFzQXR0cgotICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nPXB5dGhvbjMyLlB5T2JqZWN0X0hhc0F0dHJTdHJpbmcKLSAgUHlPYmplY3RfSGFzaD1weXRob24zMi5QeU9iamVjdF9IYXNoCi0gIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZD1weXRob24zMi5QeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQKLSAgUHlPYmplY3RfSW5pdD1weXRob24zMi5QeU9iamVjdF9Jbml0Ci0gIFB5T2JqZWN0X0luaXRWYXI9cHl0aG9uMzIuUHlPYmplY3RfSW5pdFZhcgotICBQeU9iamVjdF9Jc0luc3RhbmNlPXB5dGhvbjMyLlB5T2JqZWN0X0lzSW5zdGFuY2UKLSAgUHlPYmplY3RfSXNTdWJjbGFzcz1weXRob24zMi5QeU9iamVjdF9Jc1N1YmNsYXNzCi0gIFB5T2JqZWN0X0lzVHJ1ZT1weXRob24zMi5QeU9iamVjdF9Jc1RydWUKLSAgUHlPYmplY3RfTGVuZ3RoPXB5dGhvbjMyLlB5T2JqZWN0X0xlbmd0aAotICBQeU9iamVjdF9NYWxsb2M9cHl0aG9uMzIuUHlPYmplY3RfTWFsbG9jCi0gIFB5T2JqZWN0X05vdD1weXRob24zMi5QeU9iamVjdF9Ob3QKLSAgUHlPYmplY3RfUmVhbGxvYz1weXRob24zMi5QeU9iamVjdF9SZWFsbG9jCi0gIFB5T2JqZWN0X1JlcHI9cHl0aG9uMzIuUHlPYmplY3RfUmVwcgotICBQeU9iamVjdF9SaWNoQ29tcGFyZT1weXRob24zMi5QeU9iamVjdF9SaWNoQ29tcGFyZQotICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2w9cHl0aG9uMzIuUHlPYmplY3RfUmljaENvbXBhcmVCb29sCi0gIFB5T2JqZWN0X1NlbGZJdGVyPXB5dGhvbjMyLlB5T2JqZWN0X1NlbGZJdGVyCi0gIFB5T2JqZWN0X1NldEF0dHI9cHl0aG9uMzIuUHlPYmplY3RfU2V0QXR0cgotICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nPXB5dGhvbjMyLlB5T2JqZWN0X1NldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfU2V0SXRlbT1weXRob24zMi5QeU9iamVjdF9TZXRJdGVtCi0gIFB5T2JqZWN0X1NpemU9cHl0aG9uMzIuUHlPYmplY3RfU2l6ZQotICBQeU9iamVjdF9TdHI9cHl0aG9uMzIuUHlPYmplY3RfU3RyCi0gIFB5T2JqZWN0X1R5cGU9cHl0aG9uMzIuUHlPYmplY3RfVHlwZSBEQVRBCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjMyLlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzIuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncwotICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzIuUHlQcm9wZXJ0eV9UeXBlIERBVEEKLSAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zMi5QeVJhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlSYW5nZV9UeXBlPXB5dGhvbjMyLlB5UmFuZ2VfVHlwZSBEQVRBCi0gIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zMi5QeVJldmVyc2VkX1R5cGUgREFUQQotICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjMyLlB5U2VxSXRlcl9OZXcKLSAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzIuUHlTZXFJdGVyX1R5cGUgREFUQQotICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjMyLlB5U2VxdWVuY2VfQ2hlY2sKLSAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzIuUHlTZXF1ZW5jZV9Db25jYXQKLSAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zMi5QeVNlcXVlbmNlX0NvbnRhaW5zCi0gIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzIuUHlTZXF1ZW5jZV9Db3VudAotICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzIuUHlTZXF1ZW5jZV9EZWxJdGVtCi0gIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzIuUHlTZXF1ZW5jZV9EZWxTbGljZQotICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzIuUHlTZXF1ZW5jZV9GYXN0Ci0gIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zMi5QeVNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zMi5QeVNlcXVlbmNlX0dldFNsaWNlCi0gIFB5U2VxdWVuY2VfSW49cHl0aG9uMzIuUHlTZXF1ZW5jZV9JbgotICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzIuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0Ci0gIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zMi5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKLSAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zMi5QeVNlcXVlbmNlX0luZGV4Ci0gIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjMyLlB5U2VxdWVuY2VfTGVuZ3RoCi0gIFB5U2VxdWVuY2VfTGlzdD1weXRob24zMi5QeVNlcXVlbmNlX0xpc3QKLSAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzIuUHlTZXF1ZW5jZV9SZXBlYXQKLSAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjMyLlB5U2VxdWVuY2VfU2V0SXRlbQotICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjMyLlB5U2VxdWVuY2VfU2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjMyLlB5U2VxdWVuY2VfU2l6ZQotICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjMyLlB5U2VxdWVuY2VfVHVwbGUKLSAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzIuUHlTZXRJdGVyX1R5cGUgREFUQQotICBQeVNldF9BZGQ9cHl0aG9uMzIuUHlTZXRfQWRkCi0gIFB5U2V0X0NsZWFyPXB5dGhvbjMyLlB5U2V0X0NsZWFyCi0gIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjMyLlB5U2V0X0NvbnRhaW5zCi0gIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzIuUHlTZXRfRGlzY2FyZAotICBQeVNldF9OZXc9cHl0aG9uMzIuUHlTZXRfTmV3Ci0gIFB5U2V0X1BvcD1weXRob24zMi5QeVNldF9Qb3AKLSAgUHlTZXRfU2l6ZT1weXRob24zMi5QeVNldF9TaXplCi0gIFB5U2V0X1R5cGU9cHl0aG9uMzIuUHlTZXRfVHlwZSBEQVRBCi0gIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zMi5QeVNsaWNlX0dldEluZGljZXMKLSAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzIuUHlTbGljZV9HZXRJbmRpY2VzRXgKLSAgUHlTbGljZV9OZXc9cHl0aG9uMzIuUHlTbGljZV9OZXcKLSAgUHlTbGljZV9UeXBlPXB5dGhvbjMyLlB5U2xpY2VfVHlwZSBEQVRBCi0gIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zMi5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQotICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzIuUHlTdGF0ZV9GaW5kTW9kdWxlCi0gIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zMi5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzIuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjMyLlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQotICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzIuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U3VwZXJfVHlwZT1weXRob24zMi5QeVN1cGVyX1R5cGUgREFUQQotICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjMyLlB5U3lzX0FkZFdhcm5PcHRpb24KLSAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzIuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKLSAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjMyLlB5U3lzX0Zvcm1hdFN0ZGVycgotICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzIuUHlTeXNfRm9ybWF0U3Rkb3V0Ci0gIFB5U3lzX0dldE9iamVjdD1weXRob24zMi5QeVN5c19HZXRPYmplY3QKLSAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzIuUHlTeXNfSGFzV2Fybk9wdGlvbnMKLSAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zMi5QeVN5c19SZXNldFdhcm5PcHRpb25zCi0gIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzIuUHlTeXNfU2V0QXJndgotICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzIuUHlTeXNfU2V0QXJndkV4Ci0gIFB5U3lzX1NldE9iamVjdD1weXRob24zMi5QeVN5c19TZXRPYmplY3QKLSAgUHlTeXNfU2V0UGF0aD1weXRob24zMi5QeVN5c19TZXRQYXRoCi0gIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjMyLlB5U3lzX1dyaXRlU3RkZXJyCi0gIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjMyLlB5U3lzX1dyaXRlU3Rkb3V0Ci0gIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzIuUHlUaHJlYWRTdGF0ZV9DbGVhcgotICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zMi5QeVRocmVhZFN0YXRlX0RlbGV0ZQotICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzIuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50Ci0gIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjMyLlB5VGhyZWFkU3RhdGVfR2V0Ci0gIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zMi5QeVRocmVhZFN0YXRlX0dldERpY3QKLSAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzIuUHlUaHJlYWRTdGF0ZV9OZXcKLSAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zMi5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCi0gIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zMi5QeVRocmVhZFN0YXRlX1N3YXAKLSAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zMi5QeVRyYWNlQmFja19IZXJlCi0gIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjMyLlB5VHJhY2VCYWNrX1ByaW50Ci0gIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzIuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCi0gIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzIuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zMi5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKLSAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjMyLlB5VHVwbGVfR2V0SXRlbQotICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjMyLlB5VHVwbGVfR2V0U2xpY2UKLSAgUHlUdXBsZV9OZXc9cHl0aG9uMzIuUHlUdXBsZV9OZXcKLSAgUHlUdXBsZV9QYWNrPXB5dGhvbjMyLlB5VHVwbGVfUGFjawotICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzIuUHlUdXBsZV9TZXRJdGVtCi0gIFB5VHVwbGVfU2l6ZT1weXRob24zMi5QeVR1cGxlX1NpemUKLSAgUHlUdXBsZV9UeXBlPXB5dGhvbjMyLlB5VHVwbGVfVHlwZSBEQVRBCi0gIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjMyLlB5VHlwZV9DbGVhckNhY2hlCi0gIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zMi5QeVR5cGVfRnJvbVNwZWMKLSAgUHlUeXBlX0dlbmVyaWNBbGxvYz1weXRob24zMi5QeVR5cGVfR2VuZXJpY0FsbG9jCi0gIFB5VHlwZV9HZW5lcmljTmV3PXB5dGhvbjMyLlB5VHlwZV9HZW5lcmljTmV3Ci0gIFB5VHlwZV9HZXRGbGFncz1weXRob24zMi5QeVR5cGVfR2V0RmxhZ3MKLSAgUHlUeXBlX0lzU3VidHlwZT1weXRob24zMi5QeVR5cGVfSXNTdWJ0eXBlCi0gIFB5VHlwZV9Nb2RpZmllZD1weXRob24zMi5QeVR5cGVfTW9kaWZpZWQKLSAgUHlUeXBlX1JlYWR5PXB5dGhvbjMyLlB5VHlwZV9SZWFkeQotICBQeVR5cGVfVHlwZT1weXRob24zMi5QeVR5cGVfVHlwZSBEQVRBCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZT1weXRob24zMi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zMi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZD1weXRob24zMi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzIuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZD1weXRob24zMi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zMi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVJdGVyX1R5cGU9cHl0aG9uMzIuUHlVbmljb2RlSXRlcl9UeXBlIERBVEEKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kPXB5dGhvbjMyLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzIuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbj1weXRob24zMi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzIuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kPXB5dGhvbjMyLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzIuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0PXB5dGhvbjMyLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZV9BcHBlbmQ9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9BcHBlbmQKLSAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FwcGVuZEFuZERlbAotICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzQ2hhcm1hcFN0cmluZwotICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNEZWNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNEZWNvZGVkVW5pY29kZQotICBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNFbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRTdHJpbmcKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRVbmljb2RlCi0gIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzTGF0aW4xU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc1VURjE2U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNVVEYzMlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNVVEY4U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc1dpZGVDaGFyCi0gIFB5VW5pY29kZV9DbGVhckZyZWVsaXN0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQ2xlYXJGcmVlbGlzdAotICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0NvbXBhcmUKLSAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0NvbmNhdAotICBQeVVuaWNvZGVfQ29udGFpbnM9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Db250YWlucwotICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Db3VudAotICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlCi0gIFB5VW5pY29kZV9EZWNvZGVBU0NJST1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZUFTQ0lJCi0gIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlQ2hhcm1hcAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlTGF0aW4xCi0gIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTY9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYxNgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjE2U3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzIKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWw9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYzMlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOAotICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOFN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlVW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9GU0NvbnZlcnRlcgotICBQeVVuaWNvZGVfRlNEZWNvZGVyPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRlNEZWNvZGVyCi0gIFB5VW5pY29kZV9GaW5kPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRmluZAotICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRm9ybWF0Ci0gIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zyb21FbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRnJvbUZvcm1hdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0VgotICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zyb21PYmplY3QKLSAgUHlVbmljb2RlX0Zyb21PcmRpbmFsPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRnJvbU9yZGluYWwKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gcm9tU3RyaW5nCi0gIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXI9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gcm9tV2lkZUNoYXIKLSAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0dldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfR2V0U2l6ZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0dldFNpemUKLSAgUHlVbmljb2RlX0lzSWRlbnRpZmllcj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0lzSWRlbnRpZmllcgotICBQeVVuaWNvZGVfSm9pbj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0pvaW4KLSAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1BhcnRpdGlvbgotICBQeVVuaWNvZGVfUlBhcnRpdGlvbj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1JQYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1JTcGxpdAotICBQeVVuaWNvZGVfUmVwbGFjZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1JlcGxhY2UKLSAgUHlVbmljb2RlX1Jlc2l6ZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1Jlc2l6ZQotICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9SaWNoQ29tcGFyZQotICBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfU2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9TcGxpdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1NwbGl0Ci0gIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfU3BsaXRsaW5lcwotICBQeVVuaWNvZGVfVGFpbG1hdGNoPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfVGFpbG1hdGNoCi0gIFB5VW5pY29kZV9UcmFuc2xhdGU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9UcmFuc2xhdGUKLSAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzIuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKLSAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzIuUHlVbmljb2RlX0RlY29kZVVURjcKLSAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zMi5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCi0gIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzIuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zMi5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZwotICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzIuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCi0gIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjMyLlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCi0gIFB5VW5pY29kZV9UeXBlPXB5dGhvbjMyLlB5VW5pY29kZV9UeXBlIERBVEEKLSAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zMi5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKLSAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjMyLlB5V2Vha3JlZl9OZXdQcm94eQotICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjMyLlB5V2Vha3JlZl9OZXdSZWYKLSAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zMi5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlXcmFwcGVyX05ldz1weXRob24zMi5QeVdyYXBwZXJfTmV3Ci0gIFB5WmlwX1R5cGU9cHl0aG9uMzIuUHlaaXBfVHlwZSBEQVRBCi0gIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjMyLlB5X0FkZFBlbmRpbmdDYWxsCi0gIFB5X0F0RXhpdD1weXRob24zMi5QeV9BdEV4aXQKLSAgUHlfQnVpbGRWYWx1ZT1weXRob24zMi5QeV9CdWlsZFZhbHVlCi0gIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzIuUHlfQ29tcGlsZVN0cmluZwotICBQeV9EZWNSZWY9cHl0aG9uMzIuUHlfRGVjUmVmCi0gIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjMyLlB5X0VuZEludGVycHJldGVyCi0gIFB5X0V4aXQ9cHl0aG9uMzIuUHlfRXhpdAotICBQeV9GYXRhbEVycm9yPXB5dGhvbjMyLlB5X0ZhdGFsRXJyb3IKLSAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zMi5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfRmluYWxpemU9cHl0aG9uMzIuUHlfRmluYWxpemUKLSAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjMyLlB5X0dldEJ1aWxkSW5mbwotICBQeV9HZXRDb21waWxlcj1weXRob24zMi5QeV9HZXRDb21waWxlcgotICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzIuUHlfR2V0Q29weXJpZ2h0Ci0gIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzIuUHlfR2V0RXhlY1ByZWZpeAotICBQeV9HZXRQYXRoPXB5dGhvbjMyLlB5X0dldFBhdGgKLSAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzIuUHlfR2V0UGxhdGZvcm0KLSAgUHlfR2V0UHJlZml4PXB5dGhvbjMyLlB5X0dldFByZWZpeAotICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzIuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCi0gIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjMyLlB5X0dldFByb2dyYW1OYW1lCi0gIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzIuUHlfR2V0UHl0aG9uSG9tZQotICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zMi5QeV9HZXRSZWN1cnNpb25MaW1pdAotICBQeV9HZXRWZXJzaW9uPXB5dGhvbjMyLlB5X0dldFZlcnNpb24KLSAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zMi5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfSW5jUmVmPXB5dGhvbjMyLlB5X0luY1JlZgotICBQeV9Jbml0aWFsaXplPXB5dGhvbjMyLlB5X0luaXRpYWxpemUKLSAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjMyLlB5X0luaXRpYWxpemVFeAotICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjMyLlB5X0lzSW5pdGlhbGl6ZWQKLSAgUHlfTWFpbj1weXRob24zMi5QeV9NYWluCi0gIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzIuUHlfTWFrZVBlbmRpbmdDYWxscwotICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zMi5QeV9OZXdJbnRlcnByZXRlcgotICBQeV9SZXByRW50ZXI9cHl0aG9uMzIuUHlfUmVwckVudGVyCi0gIFB5X1JlcHJMZWF2ZT1weXRob24zMi5QeV9SZXByTGVhdmUKLSAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzIuUHlfU2V0UHJvZ3JhbU5hbWUKLSAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zMi5QeV9TZXRQeXRob25Ib21lCi0gIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjMyLlB5X1NldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjMyLlB5X1N5bXRhYmxlU3RyaW5nCi0gIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zMi5QeV9WYUJ1aWxkVmFsdWUKLSAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zMi5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzIuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAotICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zMi5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAotICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjMyLl9QeU9iamVjdF9HQ19NYWxsb2MKLSAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zMi5fUHlPYmplY3RfR0NfTmV3Ci0gIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzIuX1B5T2JqZWN0X0dDX05ld1ZhcgotICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjMyLl9QeU9iamVjdF9HQ19SZXNpemUKLSAgX1B5T2JqZWN0X05ldz1weXRob24zMi5fUHlPYmplY3RfTmV3Ci0gIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzIuX1B5T2JqZWN0X05ld1ZhcgotICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzIuX1B5U3RhdGVfQWRkTW9kdWxlCi0gIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzIuX1B5VGhyZWFkU3RhdGVfSW5pdAotICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zMi5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYwotICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzIuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKLSAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzIuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQotICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zMi5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAotICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjMyLl9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KLSAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zMi5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzIuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzIuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzIuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKLSAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzIuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQotICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjMyLl9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKLSAgX1B5X0RlYWxsb2M9cHl0aG9uMzIuX1B5X0RlYWxsb2MKLSAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjMyLl9QeV9FbGxpcHNpc09iamVjdCBEQVRBCi0gIF9QeV9GYWxzZVN0cnVjdD1weXRob24zMi5fUHlfRmFsc2VTdHJ1Y3QgREFUQQotICBfUHlfTm9uZVN0cnVjdD1weXRob24zMi5fUHlfTm9uZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zMi5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQotICBfUHlfU3dhcHBlZE9wPXB5dGhvbjMyLl9QeV9Td2FwcGVkT3AgREFUQQotICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zMi5fUHlfVHJ1ZVN0cnVjdCBEQVRBCi0gIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzIuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAorICBQeUFyZ19QYXJzZT1weXRob24zMy5QeUFyZ19QYXJzZQorICBQeUFyZ19QYXJzZVR1cGxlPXB5dGhvbjMzLlB5QXJnX1BhcnNlVHVwbGUKKyAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjMzLlB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcworICBQeUFyZ19VbnBhY2tUdXBsZT1weXRob24zMy5QeUFyZ19VbnBhY2tUdXBsZQorICBQeUFyZ19WYVBhcnNlPXB5dGhvbjMzLlB5QXJnX1ZhUGFyc2UKKyAgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzMuUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMKKyAgUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzPXB5dGhvbjMzLlB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cworICBQeUJhc2VPYmplY3RfVHlwZT1weXRob24zMy5QeUJhc2VPYmplY3RfVHlwZSBEQVRBCisgIFB5Qm9vbF9Gcm9tTG9uZz1weXRob24zMy5QeUJvb2xfRnJvbUxvbmcKKyAgUHlCb29sX1R5cGU9cHl0aG9uMzMuUHlCb29sX1R5cGUgREFUQQorICBQeUJ5dGVBcnJheUl0ZXJfVHlwZT1weXRob24zMy5QeUJ5dGVBcnJheUl0ZXJfVHlwZSBEQVRBCisgIFB5Qnl0ZUFycmF5X0FzU3RyaW5nPXB5dGhvbjMzLlB5Qnl0ZUFycmF5X0FzU3RyaW5nCisgIFB5Qnl0ZUFycmF5X0NvbmNhdD1weXRob24zMy5QeUJ5dGVBcnJheV9Db25jYXQKKyAgUHlCeXRlQXJyYXlfRnJvbU9iamVjdD1weXRob24zMy5QeUJ5dGVBcnJheV9Gcm9tT2JqZWN0CisgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjMzLlB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplCisgIFB5Qnl0ZUFycmF5X1Jlc2l6ZT1weXRob24zMy5QeUJ5dGVBcnJheV9SZXNpemUKKyAgUHlCeXRlQXJyYXlfU2l6ZT1weXRob24zMy5QeUJ5dGVBcnJheV9TaXplCisgIFB5Qnl0ZUFycmF5X1R5cGU9cHl0aG9uMzMuUHlCeXRlQXJyYXlfVHlwZSBEQVRBCisgIFB5Qnl0ZXNJdGVyX1R5cGU9cHl0aG9uMzMuUHlCeXRlc0l0ZXJfVHlwZSBEQVRBCisgIFB5Qnl0ZXNfQXNTdHJpbmc9cHl0aG9uMzMuUHlCeXRlc19Bc1N0cmluZworICBQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZT1weXRob24zMy5QeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVzX0NvbmNhdD1weXRob24zMy5QeUJ5dGVzX0NvbmNhdAorICBQeUJ5dGVzX0NvbmNhdEFuZERlbD1weXRob24zMy5QeUJ5dGVzX0NvbmNhdEFuZERlbAorICBQeUJ5dGVzX0RlY29kZUVzY2FwZT1weXRob24zMy5QeUJ5dGVzX0RlY29kZUVzY2FwZQorICBQeUJ5dGVzX0Zyb21Gb3JtYXQ9cHl0aG9uMzMuUHlCeXRlc19Gcm9tRm9ybWF0CisgIFB5Qnl0ZXNfRnJvbUZvcm1hdFY9cHl0aG9uMzMuUHlCeXRlc19Gcm9tRm9ybWF0VgorICBQeUJ5dGVzX0Zyb21PYmplY3Q9cHl0aG9uMzMuUHlCeXRlc19Gcm9tT2JqZWN0CisgIFB5Qnl0ZXNfRnJvbVN0cmluZz1weXRob24zMy5QeUJ5dGVzX0Zyb21TdHJpbmcKKyAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zMy5QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplCisgIFB5Qnl0ZXNfUmVwcj1weXRob24zMy5QeUJ5dGVzX1JlcHIKKyAgUHlCeXRlc19TaXplPXB5dGhvbjMzLlB5Qnl0ZXNfU2l6ZQorICBQeUJ5dGVzX1R5cGU9cHl0aG9uMzMuUHlCeXRlc19UeXBlIERBVEEKKyAgUHlDRnVuY3Rpb25fQ2FsbD1weXRob24zMy5QeUNGdW5jdGlvbl9DYWxsCisgIFB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzMuUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdAorICBQeUNGdW5jdGlvbl9HZXRGbGFncz1weXRob24zMy5QeUNGdW5jdGlvbl9HZXRGbGFncworICBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbj1weXRob24zMy5QeUNGdW5jdGlvbl9HZXRGdW5jdGlvbgorICBQeUNGdW5jdGlvbl9HZXRTZWxmPXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX0dldFNlbGYKKyAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzMuUHlDRnVuY3Rpb25fTmV3RXgKKyAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zMy5QeUNGdW5jdGlvbl9UeXBlIERBVEEKKyAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzMuUHlDYWxsSXRlcl9OZXcKKyAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjMzLlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCisgIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzMuUHlDYWxsYWJsZV9DaGVjaworICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zMy5QeUNhcHN1bGVfR2V0Q29udGV4dAorICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zMy5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zMy5QeUNhcHN1bGVfR2V0TmFtZQorICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zMy5QeUNhcHN1bGVfR2V0UG9pbnRlcgorICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjMzLlB5Q2Fwc3VsZV9JbXBvcnQKKyAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzMuUHlDYXBzdWxlX0lzVmFsaWQKKyAgUHlDYXBzdWxlX05ldz1weXRob24zMy5QeUNhcHN1bGVfTmV3CisgIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjMzLlB5Q2Fwc3VsZV9TZXRDb250ZXh0CisgIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjMzLlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCisgIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjMzLlB5Q2Fwc3VsZV9TZXROYW1lCisgIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjMzLlB5Q2Fwc3VsZV9TZXRQb2ludGVyCisgIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjMzLlB5Q2Fwc3VsZV9UeXBlIERBVEEKKyAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzMuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzMuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjMzLlB5Q29kZWNfRGVjb2RlCisgIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zMy5QeUNvZGVjX0RlY29kZXIKKyAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzMuUHlDb2RlY19FbmNvZGUKKyAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjMzLlB5Q29kZWNfRW5jb2RlcgorICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zMy5QeUNvZGVjX0lnbm9yZUVycm9ycworICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zMy5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgorICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zMy5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgorICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzMuUHlDb2RlY19Lbm93bkVuY29kaW5nCisgIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzMuUHlDb2RlY19Mb29rdXBFcnJvcgorICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjMzLlB5Q29kZWNfUmVnaXN0ZXIKKyAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjMzLlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgorICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzMuUHlDb2RlY19SZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjMzLlB5Q29kZWNfU3RyZWFtUmVhZGVyCisgIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjMzLlB5Q29kZWNfU3RyZWFtV3JpdGVyCisgIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjMzLlB5Q29kZWNfU3RyaWN0RXJyb3JzCisgIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzMuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycworICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzMuUHlDb21wbGV4X0Zyb21Eb3VibGVzCisgIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzMuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQorICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjMzLlB5Q29tcGxleF9SZWFsQXNEb3VibGUKKyAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzMuUHlDb21wbGV4X1R5cGUgREFUQQorICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjMzLlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKKyAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzMuUHlEZXNjcl9OZXdHZXRTZXQKKyAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzMuUHlEZXNjcl9OZXdNZW1iZXIKKyAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzMuUHlEZXNjcl9OZXdNZXRob2QKKyAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zMy5QeURpY3RJdGVtc19UeXBlIERBVEEKKyAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zMy5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKKyAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjMzLlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjMzLlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKKyAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjMzLlB5RGljdEtleXNfVHlwZSBEQVRBCisgIFB5RGljdFByb3h5X05ldz1weXRob24zMy5QeURpY3RQcm94eV9OZXcKKyAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zMy5QeURpY3RQcm94eV9UeXBlIERBVEEKKyAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzMuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeURpY3RfQ2xlYXI9cHl0aG9uMzMuUHlEaWN0X0NsZWFyCisgIFB5RGljdF9Db250YWlucz1weXRob24zMy5QeURpY3RfQ29udGFpbnMKKyAgUHlEaWN0X0NvcHk9cHl0aG9uMzMuUHlEaWN0X0NvcHkKKyAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzMuUHlEaWN0X0RlbEl0ZW0KKyAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzMuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzMuUHlEaWN0X0dldEl0ZW0KKyAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzMuUHlEaWN0X0dldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzMuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKKyAgUHlEaWN0X0l0ZW1zPXB5dGhvbjMzLlB5RGljdF9JdGVtcworICBQeURpY3RfS2V5cz1weXRob24zMy5QeURpY3RfS2V5cworICBQeURpY3RfTWVyZ2U9cHl0aG9uMzMuUHlEaWN0X01lcmdlCisgIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjMzLlB5RGljdF9NZXJnZUZyb21TZXEyCisgIFB5RGljdF9OZXc9cHl0aG9uMzMuUHlEaWN0X05ldworICBQeURpY3RfTmV4dD1weXRob24zMy5QeURpY3RfTmV4dAorICBQeURpY3RfU2V0SXRlbT1weXRob24zMy5QeURpY3RfU2V0SXRlbQorICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zMy5QeURpY3RfU2V0SXRlbVN0cmluZworICBQeURpY3RfU2l6ZT1weXRob24zMy5QeURpY3RfU2l6ZQorICBQeURpY3RfVHlwZT1weXRob24zMy5QeURpY3RfVHlwZSBEQVRBCisgIFB5RGljdF9VcGRhdGU9cHl0aG9uMzMuUHlEaWN0X1VwZGF0ZQorICBQeURpY3RfVmFsdWVzPXB5dGhvbjMzLlB5RGljdF9WYWx1ZXMKKyAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjMzLlB5RWxsaXBzaXNfVHlwZSBEQVRBCisgIFB5RW51bV9UeXBlPXB5dGhvbjMzLlB5RW51bV9UeXBlIERBVEEKKyAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzMuUHlFcnJfQmFkQXJndW1lbnQKKyAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjMzLlB5RXJyX0JhZEludGVybmFsQ2FsbAorICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzMuUHlFcnJfQ2hlY2tTaWduYWxzCisgIFB5RXJyX0NsZWFyPXB5dGhvbjMzLlB5RXJyX0NsZWFyCisgIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzMuUHlFcnJfRGlzcGxheQorICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjMzLlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfRmV0Y2g9cHl0aG9uMzMuUHlFcnJfRmV0Y2gKKyAgUHlFcnJfRm9ybWF0PXB5dGhvbjMzLlB5RXJyX0Zvcm1hdAorICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzMuUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX05ld0V4Y2VwdGlvbj1weXRob24zMy5QeUVycl9OZXdFeGNlcHRpb24KKyAgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYz1weXRob24zMy5QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCisgIFB5RXJyX05vTWVtb3J5PXB5dGhvbjMzLlB5RXJyX05vTWVtb3J5CisgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbj1weXRob24zMy5QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KKyAgUHlFcnJfT2NjdXJyZWQ9cHl0aG9uMzMuUHlFcnJfT2NjdXJyZWQKKyAgUHlFcnJfUHJpbnQ9cHl0aG9uMzMuUHlFcnJfUHJpbnQKKyAgUHlFcnJfUHJpbnRFeD1weXRob24zMy5QeUVycl9QcmludEV4CisgIFB5RXJyX1Byb2dyYW1UZXh0PXB5dGhvbjMzLlB5RXJyX1Byb2dyYW1UZXh0CisgIFB5RXJyX1Jlc3RvcmU9cHl0aG9uMzMuUHlFcnJfUmVzdG9yZQorICBQeUVycl9TZXRGcm9tRXJybm89cHl0aG9uMzMuUHlFcnJfU2V0RnJvbUVycm5vCisgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZT1weXRob24zMy5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKKyAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0PXB5dGhvbjMzLlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAorICBQeUVycl9TZXRJbnRlcnJ1cHQ9cHl0aG9uMzMuUHlFcnJfU2V0SW50ZXJydXB0CisgIFB5RXJyX1NldE5vbmU9cHl0aG9uMzMuUHlFcnJfU2V0Tm9uZQorICBQeUVycl9TZXRPYmplY3Q9cHl0aG9uMzMuUHlFcnJfU2V0T2JqZWN0CisgIFB5RXJyX1NldFN0cmluZz1weXRob24zMy5QeUVycl9TZXRTdHJpbmcKKyAgUHlFcnJfU3ludGF4TG9jYXRpb249cHl0aG9uMzMuUHlFcnJfU3ludGF4TG9jYXRpb24KKyAgUHlFcnJfV2FybkV4PXB5dGhvbjMzLlB5RXJyX1dhcm5FeAorICBQeUVycl9XYXJuRXhwbGljaXQ9cHl0aG9uMzMuUHlFcnJfV2FybkV4cGxpY2l0CisgIFB5RXJyX1dhcm5Gb3JtYXQ9cHl0aG9uMzMuUHlFcnJfV2FybkZvcm1hdAorICBQeUVycl9Xcml0ZVVucmFpc2FibGU9cHl0aG9uMzMuUHlFcnJfV3JpdGVVbnJhaXNhYmxlCisgIFB5RXZhbF9BY3F1aXJlTG9jaz1weXRob24zMy5QeUV2YWxfQWNxdWlyZUxvY2sKKyAgUHlFdmFsX0FjcXVpcmVUaHJlYWQ9cHl0aG9uMzMuUHlFdmFsX0FjcXVpcmVUaHJlYWQKKyAgUHlFdmFsX0NhbGxGdW5jdGlvbj1weXRob24zMy5QeUV2YWxfQ2FsbEZ1bmN0aW9uCisgIFB5RXZhbF9DYWxsTWV0aG9kPXB5dGhvbjMzLlB5RXZhbF9DYWxsTWV0aG9kCisgIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzPXB5dGhvbjMzLlB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzCisgIFB5RXZhbF9FdmFsQ29kZT1weXRob24zMy5QeUV2YWxfRXZhbENvZGUKKyAgUHlFdmFsX0V2YWxDb2RlRXg9cHl0aG9uMzMuUHlFdmFsX0V2YWxDb2RlRXgKKyAgUHlFdmFsX0V2YWxGcmFtZT1weXRob24zMy5QeUV2YWxfRXZhbEZyYW1lCisgIFB5RXZhbF9FdmFsRnJhbWVFeD1weXRob24zMy5QeUV2YWxfRXZhbEZyYW1lRXgKKyAgUHlFdmFsX0dldEJ1aWx0aW5zPXB5dGhvbjMzLlB5RXZhbF9HZXRCdWlsdGlucworICBQeUV2YWxfR2V0Q2FsbFN0YXRzPXB5dGhvbjMzLlB5RXZhbF9HZXRDYWxsU3RhdHMKKyAgUHlFdmFsX0dldEZyYW1lPXB5dGhvbjMzLlB5RXZhbF9HZXRGcmFtZQorICBQeUV2YWxfR2V0RnVuY0Rlc2M9cHl0aG9uMzMuUHlFdmFsX0dldEZ1bmNEZXNjCisgIFB5RXZhbF9HZXRGdW5jTmFtZT1weXRob24zMy5QeUV2YWxfR2V0RnVuY05hbWUKKyAgUHlFdmFsX0dldEdsb2JhbHM9cHl0aG9uMzMuUHlFdmFsX0dldEdsb2JhbHMKKyAgUHlFdmFsX0dldExvY2Fscz1weXRob24zMy5QeUV2YWxfR2V0TG9jYWxzCisgIFB5RXZhbF9Jbml0VGhyZWFkcz1weXRob24zMy5QeUV2YWxfSW5pdFRocmVhZHMKKyAgUHlFdmFsX1JlSW5pdFRocmVhZHM9cHl0aG9uMzMuUHlFdmFsX1JlSW5pdFRocmVhZHMKKyAgUHlFdmFsX1JlbGVhc2VMb2NrPXB5dGhvbjMzLlB5RXZhbF9SZWxlYXNlTG9jaworICBQeUV2YWxfUmVsZWFzZVRocmVhZD1weXRob24zMy5QeUV2YWxfUmVsZWFzZVRocmVhZAorICBQeUV2YWxfUmVzdG9yZVRocmVhZD1weXRob24zMy5QeUV2YWxfUmVzdG9yZVRocmVhZAorICBQeUV2YWxfU2F2ZVRocmVhZD1weXRob24zMy5QeUV2YWxfU2F2ZVRocmVhZAorICBQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkPXB5dGhvbjMzLlB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQKKyAgUHlFeGNfQXJpdGhtZXRpY0Vycm9yPXB5dGhvbjMzLlB5RXhjX0FyaXRobWV0aWNFcnJvciBEQVRBCisgIFB5RXhjX0Fzc2VydGlvbkVycm9yPXB5dGhvbjMzLlB5RXhjX0Fzc2VydGlvbkVycm9yIERBVEEKKyAgUHlFeGNfQXR0cmlidXRlRXJyb3I9cHl0aG9uMzMuUHlFeGNfQXR0cmlidXRlRXJyb3IgREFUQQorICBQeUV4Y19CYXNlRXhjZXB0aW9uPXB5dGhvbjMzLlB5RXhjX0Jhc2VFeGNlcHRpb24gREFUQQorICBQeUV4Y19CdWZmZXJFcnJvcj1weXRob24zMy5QeUV4Y19CdWZmZXJFcnJvciBEQVRBCisgIFB5RXhjX0J5dGVzV2FybmluZz1weXRob24zMy5QeUV4Y19CeXRlc1dhcm5pbmcgREFUQQorICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzMuUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfRU9GRXJyb3I9cHl0aG9uMzMuUHlFeGNfRU9GRXJyb3IgREFUQQorICBQeUV4Y19FbnZpcm9ubWVudEVycm9yPXB5dGhvbjMzLlB5RXhjX0Vudmlyb25tZW50RXJyb3IgREFUQQorICBQeUV4Y19FeGNlcHRpb249cHl0aG9uMzMuUHlFeGNfRXhjZXB0aW9uIERBVEEKKyAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yPXB5dGhvbjMzLlB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvciBEQVRBCisgIFB5RXhjX0Z1dHVyZVdhcm5pbmc9cHl0aG9uMzMuUHlFeGNfRnV0dXJlV2FybmluZyBEQVRBCisgIFB5RXhjX0dlbmVyYXRvckV4aXQ9cHl0aG9uMzMuUHlFeGNfR2VuZXJhdG9yRXhpdCBEQVRBCisgIFB5RXhjX0lPRXJyb3I9cHl0aG9uMzMuUHlFeGNfSU9FcnJvciBEQVRBCisgIFB5RXhjX0ltcG9ydEVycm9yPXB5dGhvbjMzLlB5RXhjX0ltcG9ydEVycm9yIERBVEEKKyAgUHlFeGNfSW1wb3J0V2FybmluZz1weXRob24zMy5QeUV4Y19JbXBvcnRXYXJuaW5nIERBVEEKKyAgUHlFeGNfSW5kZW50YXRpb25FcnJvcj1weXRob24zMy5QeUV4Y19JbmRlbnRhdGlvbkVycm9yIERBVEEKKyAgUHlFeGNfSW5kZXhFcnJvcj1weXRob24zMy5QeUV4Y19JbmRleEVycm9yIERBVEEKKyAgUHlFeGNfS2V5RXJyb3I9cHl0aG9uMzMuUHlFeGNfS2V5RXJyb3IgREFUQQorICBQeUV4Y19LZXlib2FyZEludGVycnVwdD1weXRob24zMy5QeUV4Y19LZXlib2FyZEludGVycnVwdCBEQVRBCisgIFB5RXhjX0xvb2t1cEVycm9yPXB5dGhvbjMzLlB5RXhjX0xvb2t1cEVycm9yIERBVEEKKyAgUHlFeGNfTWVtb3J5RXJyb3I9cHl0aG9uMzMuUHlFeGNfTWVtb3J5RXJyb3IgREFUQQorICBQeUV4Y19NZW1vcnlFcnJvckluc3Q9cHl0aG9uMzMuUHlFeGNfTWVtb3J5RXJyb3JJbnN0IERBVEEKKyAgUHlFeGNfTmFtZUVycm9yPXB5dGhvbjMzLlB5RXhjX05hbWVFcnJvciBEQVRBCisgIFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3I9cHl0aG9uMzMuUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciBEQVRBCisgIFB5RXhjX09TRXJyb3I9cHl0aG9uMzMuUHlFeGNfT1NFcnJvciBEQVRBCisgIFB5RXhjX092ZXJmbG93RXJyb3I9cHl0aG9uMzMuUHlFeGNfT3ZlcmZsb3dFcnJvciBEQVRBCisgIFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzMuUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCisgIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdD1weXRob24zMy5QeUV4Y19SZWN1cnNpb25FcnJvckluc3QgREFUQQorICBQeUV4Y19SZWZlcmVuY2VFcnJvcj1weXRob24zMy5QeUV4Y19SZWZlcmVuY2VFcnJvciBEQVRBCisgIFB5RXhjX1J1bnRpbWVFcnJvcj1weXRob24zMy5QeUV4Y19SdW50aW1lRXJyb3IgREFUQQorICBQeUV4Y19SdW50aW1lV2FybmluZz1weXRob24zMy5QeUV4Y19SdW50aW1lV2FybmluZyBEQVRBCisgIFB5RXhjX1N0b3BJdGVyYXRpb249cHl0aG9uMzMuUHlFeGNfU3RvcEl0ZXJhdGlvbiBEQVRBCisgIFB5RXhjX1N5bnRheEVycm9yPXB5dGhvbjMzLlB5RXhjX1N5bnRheEVycm9yIERBVEEKKyAgUHlFeGNfU3ludGF4V2FybmluZz1weXRob24zMy5QeUV4Y19TeW50YXhXYXJuaW5nIERBVEEKKyAgUHlFeGNfU3lzdGVtRXJyb3I9cHl0aG9uMzMuUHlFeGNfU3lzdGVtRXJyb3IgREFUQQorICBQeUV4Y19TeXN0ZW1FeGl0PXB5dGhvbjMzLlB5RXhjX1N5c3RlbUV4aXQgREFUQQorICBQeUV4Y19UYWJFcnJvcj1weXRob24zMy5QeUV4Y19UYWJFcnJvciBEQVRBCisgIFB5RXhjX1R5cGVFcnJvcj1weXRob24zMy5QeUV4Y19UeXBlRXJyb3IgREFUQQorICBQeUV4Y19VbmJvdW5kTG9jYWxFcnJvcj1weXRob24zMy5QeUV4Y19VbmJvdW5kTG9jYWxFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcj1weXRob24zMy5QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3I9cHl0aG9uMzMuUHlFeGNfVW5pY29kZUVuY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZUVycm9yPXB5dGhvbjMzLlB5RXhjX1VuaWNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcj1weXRob24zMy5QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlV2FybmluZz1weXRob24zMy5QeUV4Y19Vbmljb2RlV2FybmluZyBEQVRBCisgIFB5RXhjX1VzZXJXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX1VzZXJXYXJuaW5nIERBVEEKKyAgUHlFeGNfVmFsdWVFcnJvcj1weXRob24zMy5QeUV4Y19WYWx1ZUVycm9yIERBVEEKKyAgUHlFeGNfV2FybmluZz1weXRob24zMy5QeUV4Y19XYXJuaW5nIERBVEEKKyAgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3I9cHl0aG9uMzMuUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IgREFUQQorICBQeUV4Y2VwdGlvbl9HZXRDYXVzZT1weXRob24zMy5QeUV4Y2VwdGlvbl9HZXRDYXVzZQorICBQeUV4Y2VwdGlvbl9HZXRDb250ZXh0PXB5dGhvbjMzLlB5RXhjZXB0aW9uX0dldENvbnRleHQKKyAgUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrPXB5dGhvbjMzLlB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaworICBQeUV4Y2VwdGlvbl9TZXRDYXVzZT1weXRob24zMy5QeUV4Y2VwdGlvbl9TZXRDYXVzZQorICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0PXB5dGhvbjMzLlB5RXhjZXB0aW9uX1NldENvbnRleHQKKyAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrPXB5dGhvbjMzLlB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaworICBQeUZpbGVfRnJvbUZkPXB5dGhvbjMzLlB5RmlsZV9Gcm9tRmQKKyAgUHlGaWxlX0dldExpbmU9cHl0aG9uMzMuUHlGaWxlX0dldExpbmUKKyAgUHlGaWxlX1dyaXRlT2JqZWN0PXB5dGhvbjMzLlB5RmlsZV9Xcml0ZU9iamVjdAorICBQeUZpbGVfV3JpdGVTdHJpbmc9cHl0aG9uMzMuUHlGaWxlX1dyaXRlU3RyaW5nCisgIFB5RmlsdGVyX1R5cGU9cHl0aG9uMzMuUHlGaWx0ZXJfVHlwZSBEQVRBCisgIFB5RmxvYXRfQXNEb3VibGU9cHl0aG9uMzMuUHlGbG9hdF9Bc0RvdWJsZQorICBQeUZsb2F0X0Zyb21Eb3VibGU9cHl0aG9uMzMuUHlGbG9hdF9Gcm9tRG91YmxlCisgIFB5RmxvYXRfRnJvbVN0cmluZz1weXRob24zMy5QeUZsb2F0X0Zyb21TdHJpbmcKKyAgUHlGbG9hdF9HZXRJbmZvPXB5dGhvbjMzLlB5RmxvYXRfR2V0SW5mbworICBQeUZsb2F0X0dldE1heD1weXRob24zMy5QeUZsb2F0X0dldE1heAorICBQeUZsb2F0X0dldE1pbj1weXRob24zMy5QeUZsb2F0X0dldE1pbgorICBQeUZsb2F0X1R5cGU9cHl0aG9uMzMuUHlGbG9hdF9UeXBlIERBVEEKKyAgUHlGcm96ZW5TZXRfTmV3PXB5dGhvbjMzLlB5RnJvemVuU2V0X05ldworICBQeUZyb3plblNldF9UeXBlPXB5dGhvbjMzLlB5RnJvemVuU2V0X1R5cGUgREFUQQorICBQeUdDX0NvbGxlY3Q9cHl0aG9uMzMuUHlHQ19Db2xsZWN0CisgIFB5R0lMU3RhdGVfRW5zdXJlPXB5dGhvbjMzLlB5R0lMU3RhdGVfRW5zdXJlCisgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlPXB5dGhvbjMzLlB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlCisgIFB5R0lMU3RhdGVfUmVsZWFzZT1weXRob24zMy5QeUdJTFN0YXRlX1JlbGVhc2UKKyAgUHlHZXRTZXREZXNjcl9UeXBlPXB5dGhvbjMzLlB5R2V0U2V0RGVzY3JfVHlwZSBEQVRBCisgIFB5SW1wb3J0X0FkZE1vZHVsZT1weXRob24zMy5QeUltcG9ydF9BZGRNb2R1bGUKKyAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYj1weXRob24zMy5QeUltcG9ydF9BcHBlbmRJbml0dGFiCisgIFB5SW1wb3J0X0NsZWFudXA9cHl0aG9uMzMuUHlJbXBvcnRfQ2xlYW51cAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZT1weXRob24zMy5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4PXB5dGhvbjMzLlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzPXB5dGhvbjMzLlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcworICBQeUltcG9ydF9HZXRJbXBvcnRlcj1weXRob24zMy5QeUltcG9ydF9HZXRJbXBvcnRlcgorICBQeUltcG9ydF9HZXRNYWdpY051bWJlcj1weXRob24zMy5QeUltcG9ydF9HZXRNYWdpY051bWJlcgorICBQeUltcG9ydF9HZXRNYWdpY1RhZz1weXRob24zMy5QeUltcG9ydF9HZXRNYWdpY1RhZworICBQeUltcG9ydF9HZXRNb2R1bGVEaWN0PXB5dGhvbjMzLlB5SW1wb3J0X0dldE1vZHVsZURpY3QKKyAgUHlJbXBvcnRfSW1wb3J0PXB5dGhvbjMzLlB5SW1wb3J0X0ltcG9ydAorICBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGU9cHl0aG9uMzMuUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZT1weXRob24zMy5QeUltcG9ydF9JbXBvcnRNb2R1bGUKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWw9cHl0aG9uMzMuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaz1weXRob24zMy5QeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrCisgIFB5SW1wb3J0X1JlbG9hZE1vZHVsZT1weXRob24zMy5QeUltcG9ydF9SZWxvYWRNb2R1bGUKKyAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyPXB5dGhvbjMzLlB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcgorICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlPXB5dGhvbjMzLlB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUKKyAgUHlJbnRlcnByZXRlclN0YXRlX05ldz1weXRob24zMy5QeUludGVycHJldGVyU3RhdGVfTmV3CisgIFB5SXRlcl9OZXh0PXB5dGhvbjMzLlB5SXRlcl9OZXh0CisgIFB5TGlzdEl0ZXJfVHlwZT1weXRob24zMy5QeUxpc3RJdGVyX1R5cGUgREFUQQorICBQeUxpc3RSZXZJdGVyX1R5cGU9cHl0aG9uMzMuUHlMaXN0UmV2SXRlcl9UeXBlIERBVEEKKyAgUHlMaXN0X0FwcGVuZD1weXRob24zMy5QeUxpc3RfQXBwZW5kCisgIFB5TGlzdF9Bc1R1cGxlPXB5dGhvbjMzLlB5TGlzdF9Bc1R1cGxlCisgIFB5TGlzdF9HZXRJdGVtPXB5dGhvbjMzLlB5TGlzdF9HZXRJdGVtCisgIFB5TGlzdF9HZXRTbGljZT1weXRob24zMy5QeUxpc3RfR2V0U2xpY2UKKyAgUHlMaXN0X0luc2VydD1weXRob24zMy5QeUxpc3RfSW5zZXJ0CisgIFB5TGlzdF9OZXc9cHl0aG9uMzMuUHlMaXN0X05ldworICBQeUxpc3RfUmV2ZXJzZT1weXRob24zMy5QeUxpc3RfUmV2ZXJzZQorICBQeUxpc3RfU2V0SXRlbT1weXRob24zMy5QeUxpc3RfU2V0SXRlbQorICBQeUxpc3RfU2V0U2xpY2U9cHl0aG9uMzMuUHlMaXN0X1NldFNsaWNlCisgIFB5TGlzdF9TaXplPXB5dGhvbjMzLlB5TGlzdF9TaXplCisgIFB5TGlzdF9Tb3J0PXB5dGhvbjMzLlB5TGlzdF9Tb3J0CisgIFB5TGlzdF9UeXBlPXB5dGhvbjMzLlB5TGlzdF9UeXBlIERBVEEKKyAgUHlMb25nUmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzMuUHlMb25nUmFuZ2VJdGVyX1R5cGUgREFUQQorICBQeUxvbmdfQXNEb3VibGU9cHl0aG9uMzMuUHlMb25nX0FzRG91YmxlCisgIFB5TG9uZ19Bc0xvbmc9cHl0aG9uMzMuUHlMb25nX0FzTG9uZworICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzMuUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93CisgIFB5TG9uZ19Bc0xvbmdMb25nPXB5dGhvbjMzLlB5TG9uZ19Bc0xvbmdMb25nCisgIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzMuUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdworICBQeUxvbmdfQXNTaXplX3Q9cHl0aG9uMzMuUHlMb25nX0FzU2l6ZV90CisgIFB5TG9uZ19Bc1NzaXplX3Q9cHl0aG9uMzMuUHlMb25nX0FzU3NpemVfdAorICBQeUxvbmdfQXNVbnNpZ25lZExvbmc9cHl0aG9uMzMuUHlMb25nX0FzVW5zaWduZWRMb25nCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzMuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaz1weXRob24zMy5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrPXB5dGhvbjMzLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sKKyAgUHlMb25nX0FzVm9pZFB0cj1weXRob24zMy5QeUxvbmdfQXNWb2lkUHRyCisgIFB5TG9uZ19Gcm9tRG91YmxlPXB5dGhvbjMzLlB5TG9uZ19Gcm9tRG91YmxlCisgIFB5TG9uZ19Gcm9tTG9uZz1weXRob24zMy5QeUxvbmdfRnJvbUxvbmcKKyAgUHlMb25nX0Zyb21Mb25nTG9uZz1weXRob24zMy5QeUxvbmdfRnJvbUxvbmdMb25nCisgIFB5TG9uZ19Gcm9tU2l6ZV90PXB5dGhvbjMzLlB5TG9uZ19Gcm9tU2l6ZV90CisgIFB5TG9uZ19Gcm9tU3NpemVfdD1weXRob24zMy5QeUxvbmdfRnJvbVNzaXplX3QKKyAgUHlMb25nX0Zyb21TdHJpbmc9cHl0aG9uMzMuUHlMb25nX0Zyb21TdHJpbmcKKyAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmc9cHl0aG9uMzMuUHlMb25nX0Zyb21VbnNpZ25lZExvbmcKKyAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nPXB5dGhvbjMzLlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZworICBQeUxvbmdfRnJvbVZvaWRQdHI9cHl0aG9uMzMuUHlMb25nX0Zyb21Wb2lkUHRyCisgIFB5TG9uZ19HZXRJbmZvPXB5dGhvbjMzLlB5TG9uZ19HZXRJbmZvCisgIFB5TG9uZ19UeXBlPXB5dGhvbjMzLlB5TG9uZ19UeXBlIERBVEEKKyAgUHlNYXBfVHlwZT1weXRob24zMy5QeU1hcF9UeXBlIERBVEEKKyAgUHlNYXBwaW5nX0NoZWNrPXB5dGhvbjMzLlB5TWFwcGluZ19DaGVjaworICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZz1weXRob24zMy5QeU1hcHBpbmdfR2V0SXRlbVN0cmluZworICBQeU1hcHBpbmdfSGFzS2V5PXB5dGhvbjMzLlB5TWFwcGluZ19IYXNLZXkKKyAgUHlNYXBwaW5nX0hhc0tleVN0cmluZz1weXRob24zMy5QeU1hcHBpbmdfSGFzS2V5U3RyaW5nCisgIFB5TWFwcGluZ19JdGVtcz1weXRob24zMy5QeU1hcHBpbmdfSXRlbXMKKyAgUHlNYXBwaW5nX0tleXM9cHl0aG9uMzMuUHlNYXBwaW5nX0tleXMKKyAgUHlNYXBwaW5nX0xlbmd0aD1weXRob24zMy5QeU1hcHBpbmdfTGVuZ3RoCisgIFB5TWFwcGluZ19TZXRJdGVtU3RyaW5nPXB5dGhvbjMzLlB5TWFwcGluZ19TZXRJdGVtU3RyaW5nCisgIFB5TWFwcGluZ19TaXplPXB5dGhvbjMzLlB5TWFwcGluZ19TaXplCisgIFB5TWFwcGluZ19WYWx1ZXM9cHl0aG9uMzMuUHlNYXBwaW5nX1ZhbHVlcworICBQeU1lbV9GcmVlPXB5dGhvbjMzLlB5TWVtX0ZyZWUKKyAgUHlNZW1fTWFsbG9jPXB5dGhvbjMzLlB5TWVtX01hbGxvYworICBQeU1lbV9SZWFsbG9jPXB5dGhvbjMzLlB5TWVtX1JlYWxsb2MKKyAgUHlNZW1iZXJEZXNjcl9UeXBlPXB5dGhvbjMzLlB5TWVtYmVyRGVzY3JfVHlwZSBEQVRBCisgIFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0PXB5dGhvbjMzLlB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0CisgIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzPXB5dGhvbjMzLlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzCisgIFB5TWVtb3J5Vmlld19UeXBlPXB5dGhvbjMzLlB5TWVtb3J5Vmlld19UeXBlIERBVEEKKyAgUHlNZXRob2REZXNjcl9UeXBlPXB5dGhvbjMzLlB5TWV0aG9kRGVzY3JfVHlwZSBEQVRBCisgIFB5TW9kdWxlX0FkZEludENvbnN0YW50PXB5dGhvbjMzLlB5TW9kdWxlX0FkZEludENvbnN0YW50CisgIFB5TW9kdWxlX0FkZE9iamVjdD1weXRob24zMy5QeU1vZHVsZV9BZGRPYmplY3QKKyAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQ9cHl0aG9uMzMuUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQKKyAgUHlNb2R1bGVfQ3JlYXRlMj1weXRob24zMy5QeU1vZHVsZV9DcmVhdGUyCisgIFB5TW9kdWxlX0dldERlZj1weXRob24zMy5QeU1vZHVsZV9HZXREZWYKKyAgUHlNb2R1bGVfR2V0RGljdD1weXRob24zMy5QeU1vZHVsZV9HZXREaWN0CisgIFB5TW9kdWxlX0dldEZpbGVuYW1lPXB5dGhvbjMzLlB5TW9kdWxlX0dldEZpbGVuYW1lCisgIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0PXB5dGhvbjMzLlB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0CisgIFB5TW9kdWxlX0dldE5hbWU9cHl0aG9uMzMuUHlNb2R1bGVfR2V0TmFtZQorICBQeU1vZHVsZV9HZXRTdGF0ZT1weXRob24zMy5QeU1vZHVsZV9HZXRTdGF0ZQorICBQeU1vZHVsZV9OZXc9cHl0aG9uMzMuUHlNb2R1bGVfTmV3CisgIFB5TW9kdWxlX1R5cGU9cHl0aG9uMzMuUHlNb2R1bGVfVHlwZSBEQVRBCisgIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzMuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCisgIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjMzLlB5TnVtYmVyX0Fic29sdXRlCisgIFB5TnVtYmVyX0FkZD1weXRob24zMy5QeU51bWJlcl9BZGQKKyAgUHlOdW1iZXJfQW5kPXB5dGhvbjMzLlB5TnVtYmVyX0FuZAorICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzMuUHlOdW1iZXJfQXNTc2l6ZV90CisgIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjMzLlB5TnVtYmVyX0NoZWNrCisgIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zMy5QeU51bWJlcl9EaXZtb2QKKyAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzMuUHlOdW1iZXJfRmxvYXQKKyAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzMuUHlOdW1iZXJfRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zMy5QeU51bWJlcl9JblBsYWNlQWRkCisgIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZUFuZAorICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAorICBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHk9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5CisgIFB5TnVtYmVyX0luUGxhY2VPcj1weXRob24zMy5QeU51bWJlcl9JblBsYWNlT3IKKyAgUHlOdW1iZXJfSW5QbGFjZVBvd2VyPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VQb3dlcgorICBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKKyAgUHlOdW1iZXJfSW5QbGFjZVJzaGlmdD1weXRob24zMy5QeU51bWJlcl9JblBsYWNlUnNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdD1weXRob24zMy5QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKKyAgUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGU9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZVhvcj1weXRob24zMy5QeU51bWJlcl9JblBsYWNlWG9yCisgIFB5TnVtYmVyX0luZGV4PXB5dGhvbjMzLlB5TnVtYmVyX0luZGV4CisgIFB5TnVtYmVyX0ludmVydD1weXRob24zMy5QeU51bWJlcl9JbnZlcnQKKyAgUHlOdW1iZXJfTG9uZz1weXRob24zMy5QeU51bWJlcl9Mb25nCisgIFB5TnVtYmVyX0xzaGlmdD1weXRob24zMy5QeU51bWJlcl9Mc2hpZnQKKyAgUHlOdW1iZXJfTXVsdGlwbHk9cHl0aG9uMzMuUHlOdW1iZXJfTXVsdGlwbHkKKyAgUHlOdW1iZXJfTmVnYXRpdmU9cHl0aG9uMzMuUHlOdW1iZXJfTmVnYXRpdmUKKyAgUHlOdW1iZXJfT3I9cHl0aG9uMzMuUHlOdW1iZXJfT3IKKyAgUHlOdW1iZXJfUG9zaXRpdmU9cHl0aG9uMzMuUHlOdW1iZXJfUG9zaXRpdmUKKyAgUHlOdW1iZXJfUG93ZXI9cHl0aG9uMzMuUHlOdW1iZXJfUG93ZXIKKyAgUHlOdW1iZXJfUmVtYWluZGVyPXB5dGhvbjMzLlB5TnVtYmVyX1JlbWFpbmRlcgorICBQeU51bWJlcl9Sc2hpZnQ9cHl0aG9uMzMuUHlOdW1iZXJfUnNoaWZ0CisgIFB5TnVtYmVyX1N1YnRyYWN0PXB5dGhvbjMzLlB5TnVtYmVyX1N1YnRyYWN0CisgIFB5TnVtYmVyX1RvQmFzZT1weXRob24zMy5QeU51bWJlcl9Ub0Jhc2UKKyAgUHlOdW1iZXJfVHJ1ZURpdmlkZT1weXRob24zMy5QeU51bWJlcl9UcnVlRGl2aWRlCisgIFB5TnVtYmVyX1hvcj1weXRob24zMy5QeU51bWJlcl9Yb3IKKyAgUHlPU19BZnRlckZvcms9cHl0aG9uMzMuUHlPU19BZnRlckZvcmsKKyAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zMy5QeU9TX0luaXRJbnRlcnJ1cHRzCisgIFB5T1NfSW5wdXRIb29rPXB5dGhvbjMzLlB5T1NfSW5wdXRIb29rIERBVEEKKyAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zMy5QeU9TX0ludGVycnVwdE9jY3VycmVkCisgIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzMuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCisgIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zMy5QeU9TX2RvdWJsZV90b19zdHJpbmcKKyAgUHlPU19nZXRzaWc9cHl0aG9uMzMuUHlPU19nZXRzaWcKKyAgUHlPU19teXN0cmljbXA9cHl0aG9uMzMuUHlPU19teXN0cmljbXAKKyAgUHlPU19teXN0cm5pY21wPXB5dGhvbjMzLlB5T1NfbXlzdHJuaWNtcAorICBQeU9TX3NldHNpZz1weXRob24zMy5QeU9TX3NldHNpZworICBQeU9TX3NucHJpbnRmPXB5dGhvbjMzLlB5T1Nfc25wcmludGYKKyAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjMzLlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQorICBQeU9TX3N0cnRvbD1weXRob24zMy5QeU9TX3N0cnRvbAorICBQeU9TX3N0cnRvdWw9cHl0aG9uMzMuUHlPU19zdHJ0b3VsCisgIFB5T1NfdnNucHJpbnRmPXB5dGhvbjMzLlB5T1NfdnNucHJpbnRmCisgIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjMzLlB5T2JqZWN0X0FTQ0lJCisgIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zMy5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKKyAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zMy5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCisgIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zMy5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zMy5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCisgIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjMzLlB5T2JqZWN0X0J5dGVzCisgIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzMuUHlPYmplY3RfQ2FsbAorICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzMuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzMuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncworICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjMzLlB5T2JqZWN0X0NhbGxNZXRob2QKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzMuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zMy5QeU9iamVjdF9DYWxsT2JqZWN0CisgIFB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcj1weXRob24zMy5QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcz1weXRob24zMy5QeU9iamVjdF9DbGVhcldlYWtSZWZzCisgIFB5T2JqZWN0X0RlbEl0ZW09cHl0aG9uMzMuUHlPYmplY3RfRGVsSXRlbQorICBQeU9iamVjdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjMzLlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlPYmplY3RfRGlyPXB5dGhvbjMzLlB5T2JqZWN0X0RpcgorICBQeU9iamVjdF9Gb3JtYXQ9cHl0aG9uMzMuUHlPYmplY3RfRm9ybWF0CisgIFB5T2JqZWN0X0ZyZWU9cHl0aG9uMzMuUHlPYmplY3RfRnJlZQorICBQeU9iamVjdF9HQ19EZWw9cHl0aG9uMzMuUHlPYmplY3RfR0NfRGVsCisgIFB5T2JqZWN0X0dDX1RyYWNrPXB5dGhvbjMzLlB5T2JqZWN0X0dDX1RyYWNrCisgIFB5T2JqZWN0X0dDX1VuVHJhY2s9cHl0aG9uMzMuUHlPYmplY3RfR0NfVW5UcmFjaworICBQeU9iamVjdF9HZW5lcmljR2V0QXR0cj1weXRob24zMy5QeU9iamVjdF9HZW5lcmljR2V0QXR0cgorICBQeU9iamVjdF9HZW5lcmljU2V0QXR0cj1weXRob24zMy5QeU9iamVjdF9HZW5lcmljU2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyPXB5dGhvbjMzLlB5T2JqZWN0X0dldEF0dHIKKyAgUHlPYmplY3RfR2V0QXR0clN0cmluZz1weXRob24zMy5QeU9iamVjdF9HZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0dldEl0ZW09cHl0aG9uMzMuUHlPYmplY3RfR2V0SXRlbQorICBQeU9iamVjdF9HZXRJdGVyPXB5dGhvbjMzLlB5T2JqZWN0X0dldEl0ZXIKKyAgUHlPYmplY3RfSGFzQXR0cj1weXRob24zMy5QeU9iamVjdF9IYXNBdHRyCisgIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmc9cHl0aG9uMzMuUHlPYmplY3RfSGFzQXR0clN0cmluZworICBQeU9iamVjdF9IYXNoPXB5dGhvbjMzLlB5T2JqZWN0X0hhc2gKKyAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkPXB5dGhvbjMzLlB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAorICBQeU9iamVjdF9Jbml0PXB5dGhvbjMzLlB5T2JqZWN0X0luaXQKKyAgUHlPYmplY3RfSW5pdFZhcj1weXRob24zMy5QeU9iamVjdF9Jbml0VmFyCisgIFB5T2JqZWN0X0lzSW5zdGFuY2U9cHl0aG9uMzMuUHlPYmplY3RfSXNJbnN0YW5jZQorICBQeU9iamVjdF9Jc1N1YmNsYXNzPXB5dGhvbjMzLlB5T2JqZWN0X0lzU3ViY2xhc3MKKyAgUHlPYmplY3RfSXNUcnVlPXB5dGhvbjMzLlB5T2JqZWN0X0lzVHJ1ZQorICBQeU9iamVjdF9MZW5ndGg9cHl0aG9uMzMuUHlPYmplY3RfTGVuZ3RoCisgIFB5T2JqZWN0X01hbGxvYz1weXRob24zMy5QeU9iamVjdF9NYWxsb2MKKyAgUHlPYmplY3RfTm90PXB5dGhvbjMzLlB5T2JqZWN0X05vdAorICBQeU9iamVjdF9SZWFsbG9jPXB5dGhvbjMzLlB5T2JqZWN0X1JlYWxsb2MKKyAgUHlPYmplY3RfUmVwcj1weXRob24zMy5QeU9iamVjdF9SZXByCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlPXB5dGhvbjMzLlB5T2JqZWN0X1JpY2hDb21wYXJlCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbD1weXRob24zMy5QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKKyAgUHlPYmplY3RfU2VsZkl0ZXI9cHl0aG9uMzMuUHlPYmplY3RfU2VsZkl0ZXIKKyAgUHlPYmplY3RfU2V0QXR0cj1weXRob24zMy5QeU9iamVjdF9TZXRBdHRyCisgIFB5T2JqZWN0X1NldEF0dHJTdHJpbmc9cHl0aG9uMzMuUHlPYmplY3RfU2V0QXR0clN0cmluZworICBQeU9iamVjdF9TZXRJdGVtPXB5dGhvbjMzLlB5T2JqZWN0X1NldEl0ZW0KKyAgUHlPYmplY3RfU2l6ZT1weXRob24zMy5QeU9iamVjdF9TaXplCisgIFB5T2JqZWN0X1N0cj1weXRob24zMy5QeU9iamVjdF9TdHIKKyAgUHlPYmplY3RfVHlwZT1weXRob24zMy5QeU9iamVjdF9UeXBlIERBVEEKKyAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3M9cHl0aG9uMzMuUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKKyAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncz1weXRob24zMy5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCisgIFB5UHJvcGVydHlfVHlwZT1weXRob24zMy5QeVByb3BlcnR5X1R5cGUgREFUQQorICBQeVJhbmdlSXRlcl9UeXBlPXB5dGhvbjMzLlB5UmFuZ2VJdGVyX1R5cGUgREFUQQorICBQeVJhbmdlX1R5cGU9cHl0aG9uMzMuUHlSYW5nZV9UeXBlIERBVEEKKyAgUHlSZXZlcnNlZF9UeXBlPXB5dGhvbjMzLlB5UmV2ZXJzZWRfVHlwZSBEQVRBCisgIFB5U2VxSXRlcl9OZXc9cHl0aG9uMzMuUHlTZXFJdGVyX05ldworICBQeVNlcUl0ZXJfVHlwZT1weXRob24zMy5QeVNlcUl0ZXJfVHlwZSBEQVRBCisgIFB5U2VxdWVuY2VfQ2hlY2s9cHl0aG9uMzMuUHlTZXF1ZW5jZV9DaGVjaworICBQeVNlcXVlbmNlX0NvbmNhdD1weXRob24zMy5QeVNlcXVlbmNlX0NvbmNhdAorICBQeVNlcXVlbmNlX0NvbnRhaW5zPXB5dGhvbjMzLlB5U2VxdWVuY2VfQ29udGFpbnMKKyAgUHlTZXF1ZW5jZV9Db3VudD1weXRob24zMy5QeVNlcXVlbmNlX0NvdW50CisgIFB5U2VxdWVuY2VfRGVsSXRlbT1weXRob24zMy5QeVNlcXVlbmNlX0RlbEl0ZW0KKyAgUHlTZXF1ZW5jZV9EZWxTbGljZT1weXRob24zMy5QeVNlcXVlbmNlX0RlbFNsaWNlCisgIFB5U2VxdWVuY2VfRmFzdD1weXRob24zMy5QeVNlcXVlbmNlX0Zhc3QKKyAgUHlTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjMzLlB5U2VxdWVuY2VfR2V0SXRlbQorICBQeVNlcXVlbmNlX0dldFNsaWNlPXB5dGhvbjMzLlB5U2VxdWVuY2VfR2V0U2xpY2UKKyAgUHlTZXF1ZW5jZV9Jbj1weXRob24zMy5QeVNlcXVlbmNlX0luCisgIFB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdD1weXRob24zMy5QeVNlcXVlbmNlX0luUGxhY2VDb25jYXQKKyAgUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0PXB5dGhvbjMzLlB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdAorICBQeVNlcXVlbmNlX0luZGV4PXB5dGhvbjMzLlB5U2VxdWVuY2VfSW5kZXgKKyAgUHlTZXF1ZW5jZV9MZW5ndGg9cHl0aG9uMzMuUHlTZXF1ZW5jZV9MZW5ndGgKKyAgUHlTZXF1ZW5jZV9MaXN0PXB5dGhvbjMzLlB5U2VxdWVuY2VfTGlzdAorICBQeVNlcXVlbmNlX1JlcGVhdD1weXRob24zMy5QeVNlcXVlbmNlX1JlcGVhdAorICBQeVNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzMuUHlTZXF1ZW5jZV9TZXRJdGVtCisgIFB5U2VxdWVuY2VfU2V0U2xpY2U9cHl0aG9uMzMuUHlTZXF1ZW5jZV9TZXRTbGljZQorICBQeVNlcXVlbmNlX1NpemU9cHl0aG9uMzMuUHlTZXF1ZW5jZV9TaXplCisgIFB5U2VxdWVuY2VfVHVwbGU9cHl0aG9uMzMuUHlTZXF1ZW5jZV9UdXBsZQorICBQeVNldEl0ZXJfVHlwZT1weXRob24zMy5QeVNldEl0ZXJfVHlwZSBEQVRBCisgIFB5U2V0X0FkZD1weXRob24zMy5QeVNldF9BZGQKKyAgUHlTZXRfQ2xlYXI9cHl0aG9uMzMuUHlTZXRfQ2xlYXIKKyAgUHlTZXRfQ29udGFpbnM9cHl0aG9uMzMuUHlTZXRfQ29udGFpbnMKKyAgUHlTZXRfRGlzY2FyZD1weXRob24zMy5QeVNldF9EaXNjYXJkCisgIFB5U2V0X05ldz1weXRob24zMy5QeVNldF9OZXcKKyAgUHlTZXRfUG9wPXB5dGhvbjMzLlB5U2V0X1BvcAorICBQeVNldF9TaXplPXB5dGhvbjMzLlB5U2V0X1NpemUKKyAgUHlTZXRfVHlwZT1weXRob24zMy5QeVNldF9UeXBlIERBVEEKKyAgUHlTbGljZV9HZXRJbmRpY2VzPXB5dGhvbjMzLlB5U2xpY2VfR2V0SW5kaWNlcworICBQeVNsaWNlX0dldEluZGljZXNFeD1weXRob24zMy5QeVNsaWNlX0dldEluZGljZXNFeAorICBQeVNsaWNlX05ldz1weXRob24zMy5QeVNsaWNlX05ldworICBQeVNsaWNlX1R5cGU9cHl0aG9uMzMuUHlTbGljZV9UeXBlIERBVEEKKyAgUHlTb3J0V3JhcHBlcl9UeXBlPXB5dGhvbjMzLlB5U29ydFdyYXBwZXJfVHlwZSBEQVRBCisgIFB5U3RhdGVfRmluZE1vZHVsZT1weXRob24zMy5QeVN0YXRlX0ZpbmRNb2R1bGUKKyAgUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzMuUHlTdGF0ZV9BZGRNb2R1bGUKKyAgUHlTdGF0ZV9SZW1vdmVNb2R1bGU9cHl0aG9uMzMuUHlTdGF0ZV9SZW1vdmVNb2R1bGUKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjMzLlB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQorICBQeVN0cnVjdFNlcXVlbmNlX05ldz1weXRob24zMy5QeVN0cnVjdFNlcXVlbmNlX05ldworICBQeVN0cnVjdFNlcXVlbmNlX05ld1R5cGU9cHl0aG9uMzMuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlCisgIFB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbT1weXRob24zMy5QeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW0KKyAgUHlTdXBlcl9UeXBlPXB5dGhvbjMzLlB5U3VwZXJfVHlwZSBEQVRBCisgIFB5U3lzX0FkZFdhcm5PcHRpb249cHl0aG9uMzMuUHlTeXNfQWRkV2Fybk9wdGlvbgorICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZT1weXRob24zMy5QeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZQorICBQeVN5c19Gb3JtYXRTdGRlcnI9cHl0aG9uMzMuUHlTeXNfRm9ybWF0U3RkZXJyCisgIFB5U3lzX0Zvcm1hdFN0ZG91dD1weXRob24zMy5QeVN5c19Gb3JtYXRTdGRvdXQKKyAgUHlTeXNfR2V0T2JqZWN0PXB5dGhvbjMzLlB5U3lzX0dldE9iamVjdAorICBQeVN5c19IYXNXYXJuT3B0aW9ucz1weXRob24zMy5QeVN5c19IYXNXYXJuT3B0aW9ucworICBQeVN5c19SZXNldFdhcm5PcHRpb25zPXB5dGhvbjMzLlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKKyAgUHlTeXNfU2V0QXJndj1weXRob24zMy5QeVN5c19TZXRBcmd2CisgIFB5U3lzX1NldEFyZ3ZFeD1weXRob24zMy5QeVN5c19TZXRBcmd2RXgKKyAgUHlTeXNfU2V0T2JqZWN0PXB5dGhvbjMzLlB5U3lzX1NldE9iamVjdAorICBQeVN5c19TZXRQYXRoPXB5dGhvbjMzLlB5U3lzX1NldFBhdGgKKyAgUHlTeXNfV3JpdGVTdGRlcnI9cHl0aG9uMzMuUHlTeXNfV3JpdGVTdGRlcnIKKyAgUHlTeXNfV3JpdGVTdGRvdXQ9cHl0aG9uMzMuUHlTeXNfV3JpdGVTdGRvdXQKKyAgUHlUaHJlYWRTdGF0ZV9DbGVhcj1weXRob24zMy5QeVRocmVhZFN0YXRlX0NsZWFyCisgIFB5VGhyZWFkU3RhdGVfRGVsZXRlPXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfRGVsZXRlCisgIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudD1weXRob24zMy5QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKKyAgUHlUaHJlYWRTdGF0ZV9HZXQ9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9HZXQKKyAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0PXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfR2V0RGljdAorICBQeVRocmVhZFN0YXRlX05ldz1weXRob24zMy5QeVRocmVhZFN0YXRlX05ldworICBQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjPXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKKyAgUHlUaHJlYWRTdGF0ZV9Td2FwPXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfU3dhcAorICBQeVRyYWNlQmFja19IZXJlPXB5dGhvbjMzLlB5VHJhY2VCYWNrX0hlcmUKKyAgUHlUcmFjZUJhY2tfUHJpbnQ9cHl0aG9uMzMuUHlUcmFjZUJhY2tfUHJpbnQKKyAgUHlUcmFjZUJhY2tfVHlwZT1weXRob24zMy5QeVRyYWNlQmFja19UeXBlIERBVEEKKyAgUHlUdXBsZUl0ZXJfVHlwZT1weXRob24zMy5QeVR1cGxlSXRlcl9UeXBlIERBVEEKKyAgUHlUdXBsZV9DbGVhckZyZWVMaXN0PXB5dGhvbjMzLlB5VHVwbGVfQ2xlYXJGcmVlTGlzdAorICBQeVR1cGxlX0dldEl0ZW09cHl0aG9uMzMuUHlUdXBsZV9HZXRJdGVtCisgIFB5VHVwbGVfR2V0U2xpY2U9cHl0aG9uMzMuUHlUdXBsZV9HZXRTbGljZQorICBQeVR1cGxlX05ldz1weXRob24zMy5QeVR1cGxlX05ldworICBQeVR1cGxlX1BhY2s9cHl0aG9uMzMuUHlUdXBsZV9QYWNrCisgIFB5VHVwbGVfU2V0SXRlbT1weXRob24zMy5QeVR1cGxlX1NldEl0ZW0KKyAgUHlUdXBsZV9TaXplPXB5dGhvbjMzLlB5VHVwbGVfU2l6ZQorICBQeVR1cGxlX1R5cGU9cHl0aG9uMzMuUHlUdXBsZV9UeXBlIERBVEEKKyAgUHlUeXBlX0NsZWFyQ2FjaGU9cHl0aG9uMzMuUHlUeXBlX0NsZWFyQ2FjaGUKKyAgUHlUeXBlX0Zyb21TcGVjPXB5dGhvbjMzLlB5VHlwZV9Gcm9tU3BlYworICBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXM9cHl0aG9uMzMuUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCisgIFB5VHlwZV9HZW5lcmljQWxsb2M9cHl0aG9uMzMuUHlUeXBlX0dlbmVyaWNBbGxvYworICBQeVR5cGVfR2VuZXJpY05ldz1weXRob24zMy5QeVR5cGVfR2VuZXJpY05ldworICBQeVR5cGVfR2V0RmxhZ3M9cHl0aG9uMzMuUHlUeXBlX0dldEZsYWdzCisgIFB5VHlwZV9Jc1N1YnR5cGU9cHl0aG9uMzMuUHlUeXBlX0lzU3VidHlwZQorICBQeVR5cGVfTW9kaWZpZWQ9cHl0aG9uMzMuUHlUeXBlX01vZGlmaWVkCisgIFB5VHlwZV9SZWFkeT1weXRob24zMy5QeVR5cGVfUmVhZHkKKyAgUHlUeXBlX1R5cGU9cHl0aG9uMzMuUHlUeXBlX1R5cGUgREFUQQorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGU9cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZD1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZD1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZworICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdD1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlSXRlcl9UeXBlPXB5dGhvbjMzLlB5VW5pY29kZUl0ZXJfVHlwZSBEQVRBCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZD1weXRob24zMy5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzMuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0PXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZD1weXRob24zMy5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydD1weXRob24zMy5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVfQXBwZW5kPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXBwZW5kCisgIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9BcHBlbmRBbmREZWwKKyAgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0FTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0NoYXJtYXBTdHJpbmcKKyAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzRGVjb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzRGVjb2RlZFVuaWNvZGUKKyAgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNFbmNvZGVkU3RyaW5nCisgIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNFbmNvZGVkVW5pY29kZQorICBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0xhdGluMVN0cmluZworICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNVVEYxNlN0cmluZworICBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzVVRGMzJTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzVVRGOFN0cmluZworICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNVbmljb2RlRXNjYXBlU3RyaW5nCisgIFB5VW5pY29kZV9Bc1dpZGVDaGFyPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNXaWRlQ2hhcgorICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0NsZWFyRnJlZWxpc3QKKyAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Db21wYXJlCisgIFB5VW5pY29kZV9Db25jYXQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Db25jYXQKKyAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQ29udGFpbnMKKyAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQ291bnQKKyAgUHlVbmljb2RlX0RlY29kZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZQorICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVBU0NJSQorICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZUNoYXJtYXAKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZUZTRGVmYXVsdAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKKyAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZUxhdGluMQorICBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTYKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWw9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYxNlN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVVEYzMj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjMyCisgIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzJTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjgKKyAgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjhTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0ZTQ29udmVydGVyPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKKyAgUHlVbmljb2RlX0ZTRGVjb2Rlcj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0ZTRGVjb2RlcgorICBQeVVuaWNvZGVfRmluZD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0ZpbmQKKyAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zvcm1hdAorICBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Q9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbUZvcm1hdFYKKyAgUHlVbmljb2RlX0Zyb21PYmplY3Q9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tT2JqZWN0CisgIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21PcmRpbmFsCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbVN0cmluZworICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbVdpZGVDaGFyCisgIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9HZXREZWZhdWx0RW5jb2RpbmcKKyAgUHlVbmljb2RlX0dldFNpemU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9HZXRTaXplCisgIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Jc0lkZW50aWZpZXIKKyAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Kb2luCisgIFB5VW5pY29kZV9QYXJ0aXRpb249cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9QYXJ0aXRpb24KKyAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9SUGFydGl0aW9uCisgIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9SU3BsaXQKKyAgUHlVbmljb2RlX1JlcGxhY2U9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9SZXBsYWNlCisgIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9SZXNpemUKKyAgUHlVbmljb2RlX1JpY2hDb21wYXJlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfUmljaENvbXBhcmUKKyAgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1NldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9TcGxpdAorICBQeVVuaWNvZGVfU3BsaXRsaW5lcz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1NwbGl0bGluZXMKKyAgUHlVbmljb2RlX1RhaWxtYXRjaD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1RhaWxtYXRjaAorICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfVHJhbnNsYXRlCisgIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwPXB5dGhvbjMzLlB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwCisgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjMzLlB5VW5pY29kZV9EZWNvZGVVVEY3CisgIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzMuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjMzLlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKKyAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjMzLlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAorICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zMy5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQorICBQeVVuaWNvZGVfVHlwZT1weXRob24zMy5QeVVuaWNvZGVfVHlwZSBEQVRBCisgIFB5V2Vha3JlZl9HZXRPYmplY3Q9cHl0aG9uMzMuUHlXZWFrcmVmX0dldE9iamVjdCBEQVRBCisgIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zMy5QeVdlYWtyZWZfTmV3UHJveHkKKyAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zMy5QeVdlYWtyZWZfTmV3UmVmCisgIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzMuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCisgIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzMuUHlXcmFwcGVyX05ldworICBQeVppcF9UeXBlPXB5dGhvbjMzLlB5WmlwX1R5cGUgREFUQQorICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zMy5QeV9BZGRQZW5kaW5nQ2FsbAorICBQeV9BdEV4aXQ9cHl0aG9uMzMuUHlfQXRFeGl0CisgIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzMuUHlfQnVpbGRWYWx1ZQorICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjMzLlB5X0NvbXBpbGVTdHJpbmcKKyAgUHlfRGVjUmVmPXB5dGhvbjMzLlB5X0RlY1JlZgorICBQeV9FbmRJbnRlcnByZXRlcj1weXRob24zMy5QeV9FbmRJbnRlcnByZXRlcgorICBQeV9FeGl0PXB5dGhvbjMzLlB5X0V4aXQKKyAgUHlfRmF0YWxFcnJvcj1weXRob24zMy5QeV9GYXRhbEVycm9yCisgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzMuUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0ZpbmFsaXplPXB5dGhvbjMzLlB5X0ZpbmFsaXplCisgIFB5X0dldEJ1aWxkSW5mbz1weXRob24zMy5QeV9HZXRCdWlsZEluZm8KKyAgUHlfR2V0Q29tcGlsZXI9cHl0aG9uMzMuUHlfR2V0Q29tcGlsZXIKKyAgUHlfR2V0Q29weXJpZ2h0PXB5dGhvbjMzLlB5X0dldENvcHlyaWdodAorICBQeV9HZXRFeGVjUHJlZml4PXB5dGhvbjMzLlB5X0dldEV4ZWNQcmVmaXgKKyAgUHlfR2V0UGF0aD1weXRob24zMy5QeV9HZXRQYXRoCisgIFB5X0dldFBsYXRmb3JtPXB5dGhvbjMzLlB5X0dldFBsYXRmb3JtCisgIFB5X0dldFByZWZpeD1weXRob24zMy5QeV9HZXRQcmVmaXgKKyAgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoPXB5dGhvbjMzLlB5X0dldFByb2dyYW1GdWxsUGF0aAorICBQeV9HZXRQcm9ncmFtTmFtZT1weXRob24zMy5QeV9HZXRQcm9ncmFtTmFtZQorICBQeV9HZXRQeXRob25Ib21lPXB5dGhvbjMzLlB5X0dldFB5dGhvbkhvbWUKKyAgUHlfR2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzMuUHlfR2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfR2V0VmVyc2lvbj1weXRob24zMy5QeV9HZXRWZXJzaW9uCisgIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzMuUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0luY1JlZj1weXRob24zMy5QeV9JbmNSZWYKKyAgUHlfSW5pdGlhbGl6ZT1weXRob24zMy5QeV9Jbml0aWFsaXplCisgIFB5X0luaXRpYWxpemVFeD1weXRob24zMy5QeV9Jbml0aWFsaXplRXgKKyAgUHlfSXNJbml0aWFsaXplZD1weXRob24zMy5QeV9Jc0luaXRpYWxpemVkCisgIFB5X01haW49cHl0aG9uMzMuUHlfTWFpbgorICBQeV9NYWtlUGVuZGluZ0NhbGxzPXB5dGhvbjMzLlB5X01ha2VQZW5kaW5nQ2FsbHMKKyAgUHlfTmV3SW50ZXJwcmV0ZXI9cHl0aG9uMzMuUHlfTmV3SW50ZXJwcmV0ZXIKKyAgUHlfUmVwckVudGVyPXB5dGhvbjMzLlB5X1JlcHJFbnRlcgorICBQeV9SZXByTGVhdmU9cHl0aG9uMzMuUHlfUmVwckxlYXZlCisgIFB5X1NldFByb2dyYW1OYW1lPXB5dGhvbjMzLlB5X1NldFByb2dyYW1OYW1lCisgIFB5X1NldFB5dGhvbkhvbWU9cHl0aG9uMzMuUHlfU2V0UHl0aG9uSG9tZQorICBQeV9TZXRSZWN1cnNpb25MaW1pdD1weXRob24zMy5QeV9TZXRSZWN1cnNpb25MaW1pdAorICBQeV9TeW10YWJsZVN0cmluZz1weXRob24zMy5QeV9TeW10YWJsZVN0cmluZworICBQeV9WYUJ1aWxkVmFsdWU9cHl0aG9uMzMuUHlfVmFCdWlsZFZhbHVlCisgIF9QeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzMuX1B5RXJyX0JhZEludGVybmFsQ2FsbAorICBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUPXB5dGhvbjMzLl9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKKyAgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQ9cHl0aG9uMzMuX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQKKyAgX1B5T2JqZWN0X0dDX01hbGxvYz1weXRob24zMy5fUHlPYmplY3RfR0NfTWFsbG9jCisgIF9QeU9iamVjdF9HQ19OZXc9cHl0aG9uMzMuX1B5T2JqZWN0X0dDX05ldworICBfUHlPYmplY3RfR0NfTmV3VmFyPXB5dGhvbjMzLl9QeU9iamVjdF9HQ19OZXdWYXIKKyAgX1B5T2JqZWN0X0dDX1Jlc2l6ZT1weXRob24zMy5fUHlPYmplY3RfR0NfUmVzaXplCisgIF9QeU9iamVjdF9OZXc9cHl0aG9uMzMuX1B5T2JqZWN0X05ldworICBfUHlPYmplY3RfTmV3VmFyPXB5dGhvbjMzLl9QeU9iamVjdF9OZXdWYXIKKyAgX1B5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjMzLl9QeVN0YXRlX0FkZE1vZHVsZQorICBfUHlUaHJlYWRTdGF0ZV9Jbml0PXB5dGhvbjMzLl9QeVRocmVhZFN0YXRlX0luaXQKKyAgX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2M9cHl0aG9uMzMuX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MKKyAgX1B5VHJhc2hfZGVsZXRlX2xhdGVyPXB5dGhvbjMzLl9QeVRyYXNoX2RlbGV0ZV9sYXRlciBEQVRBCisgIF9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nPXB5dGhvbjMzLl9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nIERBVEEKKyAgX1B5VHJhc2hfZGVwb3NpdF9vYmplY3Q9cHl0aG9uMzMuX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QKKyAgX1B5VHJhc2hfZGVzdHJveV9jaGFpbj1weXRob24zMy5fUHlUcmFzaF9kZXN0cm95X2NoYWluCisgIF9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGU9cHl0aG9uMzMuX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUHJveHlUeXBlPXB5dGhvbjMzLl9QeVdlYWtyZWZfUHJveHlUeXBlIERBVEEKKyAgX1B5V2Vha3JlZl9SZWZUeXBlPXB5dGhvbjMzLl9QeVdlYWtyZWZfUmVmVHlwZSBEQVRBCisgIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjMzLl9QeV9CdWlsZFZhbHVlX1NpemVUCisgIF9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0PXB5dGhvbjMzLl9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0IERBVEEKKyAgX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbD1weXRob24zMy5fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCisgIF9QeV9EZWFsbG9jPXB5dGhvbjMzLl9QeV9EZWFsbG9jCisgIF9QeV9FbGxpcHNpc09iamVjdD1weXRob24zMy5fUHlfRWxsaXBzaXNPYmplY3QgREFUQQorICBfUHlfRmFsc2VTdHJ1Y3Q9cHl0aG9uMzMuX1B5X0ZhbHNlU3RydWN0IERBVEEKKyAgX1B5X05vbmVTdHJ1Y3Q9cHl0aG9uMzMuX1B5X05vbmVTdHJ1Y3QgREFUQQorICBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q9cHl0aG9uMzMuX1B5X05vdEltcGxlbWVudGVkU3RydWN0IERBVEEKKyAgX1B5X1N3YXBwZWRPcD1weXRob24zMy5fUHlfU3dhcHBlZE9wIERBVEEKKyAgX1B5X1RydWVTdHJ1Y3Q9cHl0aG9uMzMuX1B5X1RydWVTdHJ1Y3QgREFUQQorICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUPXB5dGhvbjMzLl9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlX1NpemVUPXB5dGhvbjMzLl9QeUFyZ19QYXJzZV9TaXplVAorICBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVD1weXRob24zMy5fUHlBcmdfUGFyc2VUdXBsZV9TaXplVAorICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjMzLl9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQ9cHl0aG9uMzMuX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjMzLl9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zMy5fUHlfQnVpbGRWYWx1ZV9TaXplVApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMy5tYWsgYi9QQy9weXRob24zLm1hawppbmRleCBhN2YwMWNiLi4yZWM5MTg1IDEwMDY0NAotLS0gYS9QQy9weXRob24zLm1haworKysgYi9QQy9weXRob24zLm1hawpAQCAtMSwxMCArMSwxMCBAQAotJChPdXREaXIpcHl0aG9uMy5kbGw6CXB5dGhvbjMuZGVmICQoT3V0RGlyKXB5dGhvbjMyc3R1Yi5saWIKLQljbCAvTEQgL0ZlJChPdXREaXIpcHl0aG9uMy5kbGwgcHl0aG9uM2RsbC5jIHB5dGhvbjMuZGVmICQoT3V0RGlyKXB5dGhvbjMyc3R1Yi5saWIKKyQoT3V0RGlyKXB5dGhvbjMuZGxsOglweXRob24zLmRlZiAkKE91dERpcilweXRob24zM3N0dWIubGliCisJY2wgL0xEIC9GZSQoT3V0RGlyKXB5dGhvbjMuZGxsIHB5dGhvbjNkbGwuYyBweXRob24zLmRlZiAkKE91dERpcilweXRob24zM3N0dWIubGliCiAKLSQoT3V0RGlyKXB5dGhvbjMyc3R1Yi5saWI6CXB5dGhvbjMyc3R1Yi5kZWYKLQlsaWIgL2RlZjpweXRob24zMnN0dWIuZGVmIC9vdXQ6JChPdXREaXIpcHl0aG9uMzJzdHViLmxpYiAvTUFDSElORTokKE1BQ0hJTkUpCiskKE91dERpcilweXRob24zM3N0dWIubGliOglweXRob24zM3N0dWIuZGVmCisJbGliIC9kZWY6cHl0aG9uMzNzdHViLmRlZiAvb3V0OiQoT3V0RGlyKXB5dGhvbjMzc3R1Yi5saWIgL01BQ0hJTkU6JChNQUNISU5FKQogCiBjbGVhbjoKLQlkZWwgJChPdXREaXIpcHl0aG9uMy5kbGwgJChPdXREaXIpcHl0aG9uMy5saWIgJChPdXREaXIpcHl0aG9uMzJzdHViLmxpYiAkKE91dERpcilweXRob24zLmV4cCAkKE91dERpcilweXRob24zMnN0dWIuZXhwCisJZGVsICQoT3V0RGlyKXB5dGhvbjMuZGxsICQoT3V0RGlyKXB5dGhvbjMubGliICQoT3V0RGlyKXB5dGhvbjMzc3R1Yi5saWIgJChPdXREaXIpcHl0aG9uMy5leHAgJChPdXREaXIpcHl0aG9uMzNzdHViLmV4cAogCiByZWJ1aWxkOiBjbGVhbiAkKE91dERpcilweXRob24zLmRsbApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMzJnZW4ucHkgYi9QQy9weXRob24zM2dlbi5weQpzaW1pbGFyaXR5IGluZGV4IDYzJQpyZW5hbWUgZnJvbSBQQy9weXRob24zMmdlbi5weQpyZW5hbWUgdG8gUEMvcHl0aG9uMzNnZW4ucHkKaW5kZXggOTE4MmQ1NC4uMjFiOWY1NiAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uMzJnZW4ucHkKKysrIGIvUEMvcHl0aG9uMzNnZW4ucHkKQEAgLTEsMTggKzEsMjAgQEAKLSMgR2VuZXJhdGUgcHl0aG9uMzJzdHViLmRlZiBvdXQgb2YgcHl0aG9uMy5kZWYKKyMgR2VuZXJhdGUgcHl0aG9uMzNzdHViLmRlZiBvdXQgb2YgcHl0aG9uMy5kZWYKICMgVGhlIHJlZ3VsYXIgaW1wb3J0IGxpYnJhcnkgY2Fubm90IGJlIHVzZWQsCiAjIHNpbmNlIGl0IGRvZXNuJ3QgcHJvdmlkZSB0aGUgcmlnaHQgc3ltYm9scyBmb3IKICMgZGF0YSBmb3J3YXJkaW5nCi1vdXQgPSBvcGVuKCJweXRob24zMnN0dWIuZGVmIiwgInciKQotb3V0LndyaXRlKCdMSUJSQVJZICJweXRob24zMiJcbicpCitvdXQgPSBvcGVuKCJweXRob24zM3N0dWIuZGVmIiwgInciKQorb3V0LndyaXRlKCdMSUJSQVJZICJweXRob24zMyJcbicpCiBvdXQud3JpdGUoJ0VYUE9SVFNcbicpCiAKIGlucCA9IG9wZW4oInB5dGhvbjMuZGVmIikKLWlucC5yZWFkbGluZSgpCiBsaW5lID0gaW5wLnJlYWRsaW5lKCkKK3doaWxlIGxpbmUuc3RyaXAoKS5zdGFydHN3aXRoKCc7Jyk6CisgICAgbGluZSA9IGlucC5yZWFkbGluZSgpCitsaW5lID0gaW5wLnJlYWRsaW5lKCkgIyBMSUJSQVJZCiBhc3NlcnQgbGluZS5zdHJpcCgpPT0nRVhQT1JUUycKIAogZm9yIGxpbmUgaW4gaW5wOgotICAgICMgU1lNMT1weXRob24zMi5TWU0yWyBEQVRBXQorICAgICMgU1lNMT1weXRob24zMy5TWU0yWyBEQVRBXQogICAgIGhlYWQsIHRhaWwgPSBsaW5lLnNwbGl0KCcuJykKICAgICBpZiAnREFUQScgaW4gdGFpbDoKICAgICAgICAgc3ltYm9sLCB0YWlsID0gdGFpbC5zcGxpdCgnICcpCkBAIC0yMiw0ICsyNCwzIEBACiAKIGlucC5jbG9zZSgpCiBvdXQuY2xvc2UoKQotCmRpZmYgLS1naXQgYS9QQy9weXRob24zMnN0dWIuZGVmIGIvUEMvcHl0aG9uMzNzdHViLmRlZgpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQy9weXRob24zMnN0dWIuZGVmCnJlbmFtZSB0byBQQy9weXRob24zM3N0dWIuZGVmCmluZGV4IDA5NDNlZjAuLjViOGNjZjYgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMyc3R1Yi5kZWYKKysrIGIvUEMvcHl0aG9uMzNzdHViLmRlZgpAQCAtMSw0ICsxLDQgQEAKLUxJQlJBUlkgInB5dGhvbjMyIgorTElCUkFSWSAicHl0aG9uMzMiCiBFWFBPUlRTCiBQeUFyZ19QYXJzZQogUHlBcmdfUGFyc2VUdXBsZQpAQCAtNDcxLDYgKzQ3MSw4IEBACiBQeVNsaWNlX1R5cGUKIFB5U29ydFdyYXBwZXJfVHlwZQogUHlTdGF0ZV9GaW5kTW9kdWxlCitQeVN0YXRlX0FkZE1vZHVsZQorUHlTdGF0ZV9SZW1vdmVNb2R1bGUKIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQogUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQpAQCAtNTExLDYgKzUxMyw3IEBACiBQeVR1cGxlX1R5cGUKIFB5VHlwZV9DbGVhckNhY2hlCiBQeVR5cGVfRnJvbVNwZWMKK1B5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcwogUHlUeXBlX0dlbmVyaWNBbGxvYwogUHlUeXBlX0dlbmVyaWNOZXcKIFB5VHlwZV9HZXRGbGFncwpAQCAtNjg3LDMgKzY5MCw5IEBACiBfUHlfU3dhcHBlZE9wCiBfUHlfVHJ1ZVN0cnVjdAogX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAorX1B5QXJnX1BhcnNlX1NpemVUCitfUHlBcmdfUGFyc2VUdXBsZV9TaXplVAorX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKK19QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorX1B5X0J1aWxkVmFsdWVfU2l6ZVQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl9udC5yYyBiL1BDL3B5dGhvbl9udC5yYwppbmRleCA1Mjk1NjEwLi41MDEwYmFhIDEwMDY0NAotLS0gYS9QQy9weXRob25fbnQucmMKKysrIGIvUEMvcHl0aG9uX250LnJjCkBAIC0xMiw3ICsxMiw3IEBACiAjICAgaW5jbHVkZSAicHl0aG9ubnRfcmMuaCIKICNlbmRpZgogCi0vKiBlLmcuLCAyLjFhMgorLyogZS5nLiwgMy4zLjBhMQogICogUFlfVkVSU0lPTiBjb21lcyBmcm9tIHBhdGNoZXZlbC5oCiAgKi8KICNkZWZpbmUgUFlUSE9OX1ZFUlNJT04gUFlfVkVSU0lPTiAiXDAiCmRpZmYgLS1naXQgYS9QQy9yZWFkbWUudHh0IGIvUEMvcmVhZG1lLnR4dAppbmRleCBiNWE1YTg3Li5mZGMwOWFiIDEwMDY0NAotLS0gYS9QQy9yZWFkbWUudHh0CisrKyBiL1BDL3JlYWRtZS50eHQKQEAgLTYzLDcgKzYzLDcgQEAKIAogcHl0aG9uX250LnJjICAgUmVzb3VyY2UgY29tcGlsZXIgaW5wdXQgZm9yIHB5dGhvbjE1LmRsbC4KIAotZGxfbnQuYywgaW1wb3J0X250LmMKK2RsX250LmMKICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgc291cmNlcyB1c2VkIGZvciAzMi1iaXQgV2luZG93cyBmZWF0dXJlcy4KIAogZ2V0cGF0aHAuYyAgICAgRGVmYXVsdCBzeXMucGF0aCBjYWxjdWxhdGlvbnMgKGZvciBhbGwgUEMgcGxhdGZvcm1zKS4KZGlmZiAtLWdpdCBhL1BDL3dpbnJlZy5jIGIvUEMvd2lucmVnLmMKaW5kZXggMjQwY2E2OS4uM2E1YzhhNiAxMDA2NDQKLS0tIGEvUEMvd2lucmVnLmMKKysrIGIvUEMvd2lucmVnLmMKQEAgLTc2MCwyNiArNzYwLDI3IEBACiAgICAgICAgIGNhc2UgUkVHX1NaOgogICAgICAgICBjYXNlIFJFR19FWFBBTkRfU1o6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICAqcmV0RGF0YVNpemUgPSAxOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgICAgICAgICAgKnJldERhdGFTaXplID0gUHlfU0FGRV9ET1dOQ0FTVCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiArIFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKHZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LCBEV09SRCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKERXT1JELCAqcmV0RGF0YVNpemUpOwotICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmPT1OVUxMKXsKLSAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgIHdjc2NweSgod2NoYXJfdCAqKSpyZXREYXRhQnVmLCBMIiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHdjc2NweSgod2NoYXJfdCAqKSpyZXREYXRhQnVmLAotICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2YWx1ZSkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSopUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodmFsdWUsICZsZW4pOworICAgICAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWYgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplID0gUHlfU0FGRV9ET1dOQ0FTVCgKKyAgICAgICAgICAgICAgICAgICAgICAgIChsZW4gKyAxKSAqIHNpemVvZih3Y2hhcl90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QsIERXT1JEKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICpyZXREYXRhQnVmID0gKEJZVEUgKilQeU1lbV9ORVcod2NoYXJfdCwgMSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICgod2NoYXJfdCAqKSpyZXREYXRhQnVmKVswXSA9IEwnXDAnOworICAgICAgICAgICAgICAgICAgICAqcmV0RGF0YVNpemUgPSAxICogc2l6ZW9mKHdjaGFyX3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgY2FzZSBSRUdfTVVMVElfU1o6CiAgICAgICAgICAgICB7CkBAIC03OTYsMTAgKzc5NywxNiBAQAogICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdDsKKyAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqd3N0cjsKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisKICAgICAgICAgICAgICAgICAgICAgdCA9IFB5TGlzdF9HRVRfSVRFTSh2YWx1ZSwgaik7CiAgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICAgICAgICAgICAgICBzaXplICs9IFB5X1NBRkVfRE9XTkNBU1QoMiArIFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKHQpLAorICAgICAgICAgICAgICAgICAgICB3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodCwgJmxlbik7CisgICAgICAgICAgICAgICAgICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIHNpemUgKz0gUHlfU0FGRV9ET1dOQ0FTVCgobGVuICsgMSkgKiBzaXplb2Yod2NoYXJfdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsIERXT1JEKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTgxNSwxMCArODIyLDE1IEBACiAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGk7IGorKykKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0OworICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICp3c3RyOworICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKwogICAgICAgICAgICAgICAgICAgICB0ID0gUHlMaXN0X0dFVF9JVEVNKHZhbHVlLCBqKTsKLSAgICAgICAgICAgICAgICAgICAgd2NzY3B5KFAsIFB5VW5pY29kZV9BU19VTklDT0RFKHQpKTsKLSAgICAgICAgICAgICAgICAgICAgUCArPSAxICsgd2NzbGVuKAotICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodCkpOworICAgICAgICAgICAgICAgICAgICB3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodCwgJmxlbik7CisgICAgICAgICAgICAgICAgICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIHdjc2NweShQLCB3c3RyKTsKKyAgICAgICAgICAgICAgICAgICAgUCArPSAobGVuICsgMSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIEFuZCBkb3VibHktdGVybWluYXRlIHRoZSBsaXN0Li4uICovCiAgICAgICAgICAgICAgICAgKlAgPSAnXDAnOwpAQCAtODgyLDcgKzg5NCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldERhdGFTaXplIC09IDI7CiAgICAgICAgICAgICAgICAgaWYgKHJldERhdGFTaXplIDw9IDApCiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBMIiI7Ci0gICAgICAgICAgICAgICAgb2JEYXRhID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGRhdGEsIHJldERhdGFTaXplLzIpOworICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoZGF0YSwgcmV0RGF0YVNpemUvMik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIGNhc2UgUkVHX01VTFRJX1NaOgpAQCAtOTEzLDcgKzkyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X1NldEl0ZW0ob2JEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21Vbmljb2RlKHN0cltpbmRleF0sIGxlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHN0cltpbmRleF0sIGxlbikpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmcmVlKHN0cik7CiAKQEAgLTEwNTQsNyArMTA2Niw3IEBACiAKICAgICAvKiBPbmx5IGF2YWlsYWJsZSBvbiA2NGJpdCBwbGF0Zm9ybXMsIHNvIHdlIG11c3QgbG9hZCBpdAogICAgICAgIGR5bmFtaWNhbGx5LiAqLwotICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGUoImFkdmFwaTMyLmRsbCIpOworICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGVXKEwiYWR2YXBpMzIuZGxsIik7CiAgICAgaWYgKGhNb2QpCiAgICAgICAgIHBmbiA9IChSREtFRnVuYylHZXRQcm9jQWRkcmVzcyhoTW9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWdEZWxldGVLZXlFeFciKTsKQEAgLTExMjMsNyArMTEzNSw3IEBACiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ0VudW1LZXlFeCIpOwogCi0gICAgcmV0U3RyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHRtcGJ1ZiwgbGVuKTsKKyAgICByZXRTdHIgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHRtcGJ1ZiwgbGVuKTsKICAgICByZXR1cm4gcmV0U3RyOyAgLyogY2FuIGJlIE5VTEwgKi8KIH0KIApAQCAtMTIxNSw4ICsxMjI3LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUV4cGFuZEVudmlyb25tZW50U3RyaW5ncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfVU5JQ09ERSAqcmV0VmFsdWUgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKnNyYzsKKyAgICB3Y2hhcl90ICpyZXRWYWx1ZSA9IE5VTEw7CisgICAgd2NoYXJfdCAqc3JjOwogICAgIERXT1JEIHJldFZhbHVlU2l6ZTsKICAgICBEV09SRCByYzsKICAgICBQeU9iamVjdCAqbzsKQEAgLTEyMjksNyArMTI0MSw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyZXRWYWx1ZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIpOwogICAgIH0KLSAgICByZXRWYWx1ZSA9IChQeV9VTklDT0RFICopUHlNZW1fTWFsbG9jKHJldFZhbHVlU2l6ZSAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgcmV0VmFsdWUgPSAod2NoYXJfdCAqKVB5TWVtX01hbGxvYyhyZXRWYWx1ZVNpemUgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgIGlmIChyZXRWYWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KQEAgLTEyNDAsNyArMTI1Miw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyZXRWYWx1ZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIpOwogICAgIH0KLSAgICBvID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHJldFZhbHVlLCB3Y3NsZW4ocmV0VmFsdWUpKTsKKyAgICBvID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihyZXRWYWx1ZSwgd2NzbGVuKHJldFZhbHVlKSk7CiAgICAgUHlNZW1fRnJlZShyZXRWYWx1ZSk7CiAgICAgcmV0dXJuIG87CiB9CkBAIC0xMzk0LDcgKzE0MDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ1F1ZXJ5VmFsdWUiKTsKICAgICB9CiAKLSAgICByZXRTdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocmV0QnVmLCB3Y3NsZW4ocmV0QnVmKSk7CisgICAgcmV0U3RyID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihyZXRCdWYsIHdjc2xlbihyZXRCdWYpKTsKICAgICBQeU1lbV9GcmVlKHJldEJ1Zik7CiAgICAgcmV0dXJuIHJldFN0cjsKIH0KQEAgLTE1MjUsNyArMTUzNyw3IEBACiB7CiAgICAgSEtFWSBoS2V5OwogICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICBQeV9VTklDT0RFICp2YWx1ZU5hbWU7CisgICAgd2NoYXJfdCAqdmFsdWVOYW1lOwogICAgIFB5T2JqZWN0ICpvYlJlczsKICAgICBQeU9iamVjdCAqdmFsdWU7CiAgICAgQllURSAqZGF0YTsKQEAgLTE1NzgsNyArMTU5MCw3IEBACiAKICAgICAvKiBPbmx5IGF2YWlsYWJsZSBvbiA2NGJpdCBwbGF0Zm9ybXMsIHNvIHdlIG11c3QgbG9hZCBpdAogICAgICAgIGR5bmFtaWNhbGx5LiovCi0gICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZSgiYWR2YXBpMzIuZGxsIik7CisgICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZVcoTCJhZHZhcGkzMi5kbGwiKTsKICAgICBpZiAoaE1vZCkKICAgICAgICAgcGZuID0gKFJEUktGdW5jKUdldFByb2NBZGRyZXNzKGhNb2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnRGlzYWJsZVJlZmxlY3Rpb25LZXkiKTsKQEAgLTE2MTQsNyArMTYyNiw3IEBACiAKICAgICAvKiBPbmx5IGF2YWlsYWJsZSBvbiA2NGJpdCBwbGF0Zm9ybXMsIHNvIHdlIG11c3QgbG9hZCBpdAogICAgICAgIGR5bmFtaWNhbGx5LiovCi0gICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZSgiYWR2YXBpMzIuZGxsIik7CisgICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZVcoTCJhZHZhcGkzMi5kbGwiKTsKICAgICBpZiAoaE1vZCkKICAgICAgICAgcGZuID0gKFJFUktGdW5jKUdldFByb2NBZGRyZXNzKGhNb2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnRW5hYmxlUmVmbGVjdGlvbktleSIpOwpAQCAtMTY1MSw3ICsxNjYzLDcgQEAKIAogICAgIC8qIE9ubHkgYXZhaWxhYmxlIG9uIDY0Yml0IHBsYXRmb3Jtcywgc28gd2UgbXVzdCBsb2FkIGl0CiAgICAgICAgZHluYW1pY2FsbHkuKi8KLSAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlKCJhZHZhcGkzMi5kbGwiKTsKKyAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlVyhMImFkdmFwaTMyLmRsbCIpOwogICAgIGlmIChoTW9kKQogICAgICAgICBwZm4gPSAoUlFSS0Z1bmMpR2V0UHJvY0FkZHJlc3MoaE1vZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWdRdWVyeVJlZmxlY3Rpb25LZXkiKTsKZGlmZiAtLWdpdCBhL1BDL3dpbnNvdW5kLmMgYi9QQy93aW5zb3VuZC5jCmluZGV4IDFlZDk1YmEuLmI1NjRlYWIgMTAwNjQ0Ci0tLSBhL1BDL3dpbnNvdW5kLmMKKysrIGIvUEMvd2luc291bmQuYwpAQCAtNzIsNyArNzIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvdW5kX3BsYXlzb3VuZChQeU9iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfVU5JQ09ERSAqd3NvdW5kOworICAgIHdjaGFyX3QgKndzb3VuZDsKICAgICBpbnQgZmxhZ3M7CiAgICAgaW50IG9rOwogCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19iejIudmN4cHJvaiBiL1BDYnVpbGQvX2J6Mi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzODdlNTQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19iejIudmN4cHJvagpAQCAtMCwwICsxLDI2MSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPmJ6MjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYnoybW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcYmxvY2tzb3J0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcYnpsaWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxjb21wcmVzcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGNyY3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcZGVjb21wcmVzcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGh1ZmZtYW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxyYW5kdGFibGUuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGJ6MkRpcilcYnpsaWIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoYnoyRGlyKVxiemxpYl9wcml2YXRlLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19iejIudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fYnoyLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWM2NGRkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fYnoyLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDQ4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntmNTNhODU5ZC1kYWQyLTRkNWItYWU0MS1mMjhkOGI1NzFmNWF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnppcDIgMS4wLjYgSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3ZTBiZWQwNS1hZTMzLTQzYjctODc5Ny02NTY0NTViYmI3ZjN9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnppcDIgMS4wLjYgU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlZDU3NGI4OS02OTgzLTRjZGYtOWY5OC1mZTcwNDhkOWU4OWN9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2J6Mm1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcYmxvY2tzb3J0LmMiPgorICAgICAgPEZpbHRlcj5iemlwMiAxLjAuNiBTb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxiemxpYi5jIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgU291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcY29tcHJlc3MuYyI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGNyY3RhYmxlLmMiPgorICAgICAgPEZpbHRlcj5iemlwMiAxLjAuNiBTb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxkZWNvbXByZXNzLmMiPgorICAgICAgPEZpbHRlcj5iemlwMiAxLjAuNiBTb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxodWZmbWFuLmMiPgorICAgICAgPEZpbHRlcj5iemlwMiAxLjAuNiBTb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxyYW5kdGFibGUuYyI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoYnoyRGlyKVxiemxpYi5oIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgSGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGJ6MkRpcilcYnpsaWJfcHJpdmF0ZS5oIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgSGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fY3R5cGVzLnZjeHByb2ogYi9QQ2J1aWxkL19jdHlwZXMudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDJjYjFmCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fY3R5cGVzLnZjeHByb2oKQEAgLTAsMCArMSwyOTQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fY3R5cGVzPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlc19kbGZjbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaV9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmljb25maWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZml0YXJnZXQuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxiYWNrcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxwcm9jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2ZpZWxkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbWFsbG9jX2Nsb3N1cmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xwcmVwX2NpZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXHN0Z2RpY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW4zMi5jIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAiJChJbnREaXIpd2luNjQub2JqIiAiJShGdWxsUGF0aCkiCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoSW50RGlyKXdpbjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSIKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoSW50RGlyKXdpbjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpd2luNjQub2JqIiAiJShGdWxsUGF0aCkiCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoSW50RGlyKXdpbjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvRm8gIiQoSW50RGlyKXdpbjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoSW50RGlyKXdpbjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgIDwvQ3VzdG9tQnVpbGQ+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19jdHlwZXMudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZDdhN2IKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19jdHlwZXMudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsNjUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezgwNjA4MWVlLTJhZjAtNDhkMC1hODNlLWVlMDJhNzRiYWEwZn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2RiZGVhMWYyLWFkOGItNDRjYS1iNzgyLWZjZjY1ZDkxNTU5Yn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlcy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzX2RsZmNuLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaV9jb21tb24uaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaWNvbmZpZy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpdGFyZ2V0LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbGJhY2tzLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjYWxscHJvYy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2ZpZWxkLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXG1hbGxvY19jbG9zdXJlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xwcmVwX2NpZi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ3VzdG9tQnVpbGQ+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2ogYi9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZTI5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3hwcm9qCkBAIC0wLDAgKzEsMTkyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2N0eXBlc190ZXN0PC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZTk0Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OGZkNzAxMTktNTQ4MS00ZTVkLWIxODctZDBiMTRlYjI3ZTM4fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MzhhYmM0ODYtZTE0My00OWRjLThjZjAtOGFlZmFiMGUwZDNkfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qIGIvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YmE4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2oKQEAgLTAsMCArMSwzMDggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fZGVjaW1hbDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOy4uXEluY2x1ZGU7Li5cUEM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYml0cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNydC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xkaWZyYWRpeDIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcZG9jc3RyaW5ncy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm91cnN0ZXAuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbXBkZWNpbWFsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG51bWJlcnRoZW9yeS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xzaXhzdGVwLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHRyYW5zcG9zZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0eXBlYXJpdGguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdW1vZGFyaXRoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjY29tcGF0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjc3RkaW50LmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxfZGVjaW1hbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29uc3RhbnRzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnRleHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNydC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xkaWZyYWRpeDIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGlvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1lbW9yeS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtcGRlY2ltYWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbnVtYmVydGhlb3J5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHNpeHN0ZXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHJhbnNwb3NlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjZGl2NjQuYXNtIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICIkKEludERpcil2Y2RpdjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL0ZvICIkKEludERpcil2Y2RpdjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChJbnREaXIpdmNkaXY2NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvRm8gIiQoSW50RGlyKXZjZGl2NjQub2JqIiAiJShGdWxsUGF0aCkiCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoSW50RGlyKXZjZGl2NjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gIiQoSW50RGlyKXZjZGl2NjQub2JqIiAiJShGdWxsUGF0aCkiCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChJbnREaXIpdmNkaXY2NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMTlhYTIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDExNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZjM1YTc4YTYtM2VmMC00ZTM2LWJkOGItYWZhZWYyMmZiYjdjfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MTM4MDg5ZjgtZmFiYS00OTRmLWI2ZWQtMDUxZjMxZmJhZjJkfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJhc2Vhcml0aC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJpdHMuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb252b2x1dGUuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjcnQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xkaWZyYWRpeDIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxkb2NzdHJpbmdzLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm91cnN0ZXAuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtcGRlY2ltYWwuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xudW1iZXJ0aGVvcnkuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xzaXhzdGVwLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHJhbnNwb3NlLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHlwZWFyaXRoLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdW1vZGFyaXRoLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNjb21wYXQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y3N0ZGludC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxfZGVjaW1hbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJhc2Vhcml0aC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnN0YW50cy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnRleHQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb252b2x1dGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjcnQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xkaWZyYWRpeDIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmbnQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmb3Vyc3RlcC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGlvLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbWVtb3J5LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbXBkZWNpbWFsLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbnVtYmVydGhlb3J5LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcc2l4c3RlcC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHRyYW5zcG9zZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjZGl2NjQuYXNtIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWlsZD4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvaiBiL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgwMmFiMwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2oKQEAgLTAsMCArMSwyNzAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fZWxlbWVudHRyZWU8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGFzY2lpLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGFzY2lpdGFiLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2NvbmZpZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxleHBhdF9leHRlcm5hbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxpYXNjaWl0YWIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcaW50ZXJuYWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcbGF0aW4xdGFiLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XG1hY2NvbmZpZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxuYW1ldGFiLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHB5ZXhwYXRucy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx1dGY4dGFiLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHdpbmNvbmZpZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2VsZW1lbnR0cmVlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU3ODI5NQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDcyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2NDNkODYwNy1kMDI0LTQwZmUtODU4My0xODIzYzk2NDMwZjB9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3YjUzMzVhZC0wNTlmLTQ4NmYtODVlNC1mNDc1N2UyNmE5YmZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcYXNjaWkuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxhc2NpaXRhYi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfY29uZmlnLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfZXh0ZXJuYWwuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxpYXNjaWl0YWIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxpbnRlcm5hbC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGxhdGluMXRhYi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XG1hY2NvbmZpZy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XG5hbWV0YWIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxweWV4cGF0bnMuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx1dGY4dGFiLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcd2luY29uZmlnLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZWxlbWVudHRyZWUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2ogYi9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUxOTdhZgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvagpAQCAtMCwwICsxLDE4OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ308L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fZnJlZXplX2ltcG9ydGxpYjwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxMaW5rSW5jcmVtZW50YWw+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgPC9MaW5rPgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxDb21tYW5kPiQoVGFyZ2V0UGF0aCkgLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IC4uXFB5dGhvblxpbXBvcnRsaWIuaDwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxNZXNzYWdlPmNyZWF0aW5nIGltcG9ydGxpYi5oPC9NZXNzYWdlPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgPC9MaW5rPgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxDb21tYW5kPiQoVGFyZ2V0UGF0aCkgLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IC4uXFB5dGhvblxpbXBvcnRsaWIuaDwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxNZXNzYWdlPmNyZWF0aW5nIGltcG9ydGxpYi5oPC9NZXNzYWdlPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgPC9MaW5rPgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxDb21tYW5kPiQoVGFyZ2V0UGF0aCkgLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IC4uXFB5dGhvblxpbXBvcnRsaWIuaDwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxNZXNzYWdlPmNyZWF0aW5nIGltcG9ydGxpYi5oPC9NZXNzYWdlPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4kKFRhcmdldFBhdGgpIC4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSAuLlxQeXRob25caW1wb3J0bGliLmg8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8TWVzc2FnZT5jcmVhdGluZyBpbXBvcnRsaWIuaDwvTWVzc2FnZT4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9mcmVlemVfaW1wb3J0bGliLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxQcml2YXRlPnRydWU8L1ByaXZhdGU+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+dHJ1ZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgICA8Q29weUxvY2FsU2F0ZWxsaXRlQXNzZW1ibGllcz5mYWxzZTwvQ29weUxvY2FsU2F0ZWxsaXRlQXNzZW1ibGllcz4KKyAgICAgIDxMaW5rTGlicmFyeURlcGVuZGVuY2llcz50cnVlPC9MaW5rTGlicmFyeURlcGVuZGVuY2llcz4KKyAgICAgIDxVc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cz5mYWxzZTwvVXNlTGlicmFyeURlcGVuZGVuY3lJbnB1dHM+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBlYzE5MwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZnJlZXplX2ltcG9ydGxpYi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvTm9uZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qIGIvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNDMzZWQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19oYXNobGliLnZjeHByb2oKQEAgLTAsMCArMSwyODIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5faGFzaGxpYjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9oYXNob3BlbnNzbC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob24udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57YjExZDc1MGYtY2QxZi00YTk2LTg1Y2UtZTY5YTVjNTI1OWY5fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InNzbC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntlNWIwNGNjMC1lYjRjLTQyYWItYjRkYy0xOGVmOTVmODY0YjB9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlkOTkzZQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2NjNDU5NjNkLWJkMjUtNGViOC1iZGJhLWE1NTA3MDkwYmNhNH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19sem1hLnZjeHByb2ogYi9QQ2J1aWxkL19sem1hLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMyNWM4MAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2x6bWEudmN4cHJvagpAQCAtMCwwICsxLDI1MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPmx6bWE8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2x6bWFtb2R1bGUuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2x6bWEudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fbHptYS52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM1ZWQ3NAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2x6bWEudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezUzZTY4ZWRhLTM5ZmMtNDMzNi1hNjU4LWRjNWY1ZDU5ODc2MH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbHptYW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX21zaS52Y3hwcm9qIGIvUENidWlsZC9fbXNpLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMyM2QxNgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX21zaS52Y3hwcm9qCkBAIC0wLDAgKzEsMjI2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X21zaTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXF9tc2kuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX21zaS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19tc2kudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZWM1MmQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19tc2kudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2JkZWY3NzEwLWU0MzMtNGFjMC04NGUwLTE0ZjM0NDU0YmQzZX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcX21zaS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3Byb2ogYi9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDYzMzdkLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1NTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQotCU5hbWU9Il9tdWx0aXByb2Nlc3NpbmciDQotCVByb2plY3RHVUlEPSJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCi0JUm9vdE5hbWVzcGFjZT0iX211bHRpcHJvY2Vzc2luZyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xjb25uZWN0aW9uLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHBpcGVfY29ubmVjdGlvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNlbWFwaG9yZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNvY2tldF9jb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcd2luMzJfZnVuY3Rpb25zLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2ogYi9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGJiNTY4Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oKQEAgLTAsMCArMSwyMzAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fbXVsdGlwcm9jZXNzaW5nPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODEzM2VjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDI0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2MjNjOTU2Yy0xODkzLTQzZDktYTdkYy05NmU0ZmVmMjBmOTN9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszNDYxNWE2Mi1mOTk5LTQ2NTktODNmNS0xOWQxN2E2NDQ1MzB9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNlbWFwaG9yZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qIGIvUENidWlsZC9fc29ja2V0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM4MzZlOQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qCkBAIC0wLDAgKzEsMjI5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X3NvY2tldDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zb2NrZXQudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fc29ja2V0LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTBmZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fc29ja2V0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDIxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsxNDUyMjA3Zi03MDdjLTRlODQtYjUzMi0zMDcxOTNhMGZkODV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsxZWRmZTBkMC03YjlkLTRkYzgtYTMzNS1iMjFmZWY3Y2M3N2F9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NxbGl0ZTMudmN4cHJvaiBiL1BDYnVpbGQvX3NxbGl0ZTMudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTJkYWQxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qCkBAIC0wLDAgKzEsMjc0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X3NxbGl0ZTM8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccm93LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3FsaXRlY29tcGF0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InNxbGl0ZTMudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57YTFhMjk1ZTUtNDYzYy00MzdmLTgxY2EtMWYzMjM2NzY4NWRhfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3NxbGl0ZTMudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ZTVmZGIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDcyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntkYWM4YWIzYi1jZTE2LTRiZWYtYmVmOS03NjQ2M2EwMWY1YzR9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4MTRiMTg3ZC00NGFkLTRmMmItYmFhNy0xOGNhOGE4YTZhNzd9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHNxbGl0ZWNvbXBhdC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccm93LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zc2wudmN4cHJvaiBiL1BDYnVpbGQvX3NzbC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNzFkMTkKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19zc2wudmN4cHJvagpAQCAtMCwwICsxLDI4NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9zc2w8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3NsLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntiMTFkNzUwZi1jZDFmLTRhOTYtODVjZS1lNjlhNWM1MjU5Zjl9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ic3NsLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2U1YjA0Y2MwLWViNGMtNDJhYi1iNGRjLTE4ZWY5NWY4NjRiMH08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJfc29ja2V0LnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezg2OTM3ZjUzLWMxODktNDBlZi04Y2U4LTg3NTlkOGU3ZDQ4MH08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3NsLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3NzbC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhiMTQ1OQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3NzbC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57Njk1MzQ4ZjctZTlmNi00ZmUxLWJjMDMtNWYwOGZmYzgwOTVifTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zc2wuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2ogYi9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEyNjVmNgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvagpAQCAtMCwwICsxLDIxNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl90ZXN0YnVmZmVyPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RidWZmZXIuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWRmMjgyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OGQyMzIyNDAtOTIxYS00YmMyLTg3YzMtOTNmZmQzNDYyZjBhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0YnVmZmVyLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGNhcGkudmN4cHJvaiBiL1BDYnVpbGQvX3Rlc3RjYXBpLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk5YTdlNAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3RjYXBpLnZjeHByb2oKQEAgLTAsMCArMSwyMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdGNhcGk8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdGNhcGltb2R1bGUuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RjYXBpLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3Rlc3RjYXBpLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTZhZDFhCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdGNhcGkudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2E3NmE5MGQ4LThlOGItNGMzNi04ZjU4LThiZDQ2YWJlOWY1ZX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdGNhcGltb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190a2ludGVyLnZjeHByb2ogYi9QQ2J1aWxkL190a2ludGVyLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdmNzJmZQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3RraW50ZXIudmN4cHJvagpAQCAtMCwwICsxLDI1MSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl90a2ludGVyPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYkRlYnVnKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrNjREaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0azY0TGliRGVidWcpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGtMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0azY0RGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGs2NExpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0a0RpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrTGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0azY0RGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGs2NExpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0a0RpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrTGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrNjREaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0azY0TGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3RraW50ZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdGthcHBpbml0LmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190a2ludGVyLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3RraW50ZXIudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNWNkNDcKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190a2ludGVyLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiOWNlNjRkZC1jYjk1LTQ3MmQtYmJlOC01NTgzYjJjZDM3NWJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3RraW50ZXIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x0a2FwcGluaXQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvaiBiL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5Mjc2YTIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvagpAQCAtMCwwICsxLDE1OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+d2luaW5zdDwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXDwvT3V0RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxUYXJnZXRFeHQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+LmV4ZTwvVGFyZ2V0RXh0PgorICAgIDxUYXJnZXRFeHQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi5leGU8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NaW5TcGFjZTwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXEluY2x1ZGU7Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDAwMDA8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQQzsuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNvbWN0bDMyLmxpYjtpbWFnZWhscC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTEwLjAuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPkxJQkM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC0xMC4wLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPgorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPgorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwMDAwPC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUEM7Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jb21jdGwzMi5saWI7aW1hZ2VobHAubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC0xMC4wLWFtZDY0LmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5MSUJDOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLWFtZDY0LnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPgorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPgorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGV4dHJhY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcYXJjaGl2ZS5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxQeXRob25Qb3dlcmVkLmJtcCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRiNmE0ZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSw2MSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MjkzYjEwOTItMDNhZC00YjdjLWFjYjktYzRhYjYyZTUyZjU1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQ8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXNcemxpYiI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MGVkYzA0MDYtMjgyZi00ZGJjLWI2MGUtYTg2N2MzNGEyYTMxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZWEwYzBmMGUtM2I3My00NzRlLWE5OTktZTk2ODlkMDMyY2NjfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MGM3N2MxY2YtM2Y4Ny00Zjg3LWJkODYtYjQyNTIxMWMyMTgxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGV4dHJhY3QuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGFyY2hpdmUuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5yYyI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcUHl0aG9uUG93ZXJlZC5ibXAiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvTm9uZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZC5iYXQgYi9QQ2J1aWxkL2J1aWxkLmJhdAppbmRleCBhNzM1NjBlLi5mYTBkOTViIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2J1aWxkLmJhdAorKysgYi9QQ2J1aWxkL2J1aWxkLmJhdApAQCAtNSwxNCArNSwxNSBAQAogc2V0bG9jYWwKIHNldCBwbGF0Zj1XaW4zMgogc2V0IGNvbmY9UmVsZWFzZQotc2V0IGJ1aWxkPQorc2V0IHRhcmdldD1idWlsZAorc2V0IGRpcj0lfmRwMAogCiA6Q2hlY2tPcHRzCiBpZiAiJTEiPT0iLWMiIChzZXQgY29uZj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKIGlmICIlMSI9PSItcCIgKHNldCBwbGF0Zj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKLWlmICIlMSI9PSItciIgKHNldCBidWlsZD0vcmVidWlsZCkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJTEiPT0iLXIiIChzZXQgdGFyZ2V0PXJlYnVpbGQpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cwogaWYgIiUxIj09Ii1kIiAoc2V0IGNvbmY9RGVidWcpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cwogCi1zZXQgY21kPXZjYnVpbGQgL3VzZWVudiBwY2J1aWxkLnNsbiAlYnVpbGQlICIlY29uZiV8JXBsYXRmJSIKK3NldCBjbWQ9bXNidWlsZCAvcDp1c2VlbnY9dHJ1ZSAlZGlyJXBjYnVpbGQuc2xuIC90OiV0YXJnZXQlIC9wOkNvbmZpZ3VyYXRpb249JWNvbmYlIC9wOlBsYXRmb3JtPSVwbGF0ZiUKIGVjaG8gJWNtZCUKICVjbWQlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3NzbC5iYXQgYi9QQ2J1aWxkL2J1aWxkX3NzbC5iYXQKaW5kZXggY2VlNjRhOC4uMzU3YjA4YiAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZF9zc2wuYmF0CisrKyBiL1BDYnVpbGQvYnVpbGRfc3NsLmJhdApAQCAtMiwxMCArMiwxMCBAQAogaWYgbm90IGRlZmluZWQgSE9TVF9QWVRIT04gKAogICBpZiAlMSBFUVUgRGVidWcgKAogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUKLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzFfZC5kbGwgZXhpdCAxCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjMzX2QuZGxsIGV4aXQgMQogICApIEVMU0UgKAogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob24uZXhlCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjMxLmRsbCBleGl0IDEKKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzMuZGxsIGV4aXQgMQogICApCiApCiAlSE9TVF9QWVRIT04lIGJ1aWxkX3NzbC5weSAlMSAlMiAlMwpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF9zc2wucHkgYi9QQ2J1aWxkL2J1aWxkX3NzbC5weQppbmRleCA5Mzg4MTI0Li41YTdhODllIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2J1aWxkX3NzbC5weQorKysgYi9QQ2J1aWxkL2J1aWxkX3NzbC5weQpAQCAtNjUsOSArNjUsOSBAQAogCiAjIEZldGNoIFNTTCBkaXJlY3RvcnkgZnJvbSBWQyBwcm9wZXJ0aWVzCiBkZWYgZ2V0X3NzbF9kaXIoKToKLSAgICBwcm9wZmlsZSA9IChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ3B5cHJvamVjdC52c3Byb3BzJykpCisgICAgcHJvcGZpbGUgPSAob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICdweXByb2plY3QucHJvcHMnKSkKICAgICB3aXRoIG9wZW4ocHJvcGZpbGUpIGFzIGY6Ci0gICAgICAgIG0gPSByZS5zZWFyY2goJ29wZW5zc2wtKFteIl0rKSInLCBmLnJlYWQoKSkKKyAgICAgICAgbSA9IHJlLnNlYXJjaCgnb3BlbnNzbC0oW148XSspPCcsIGYucmVhZCgpKQogICAgICAgICByZXR1cm4gIi4uXC4uXG9wZW5zc2wtIittLmdyb3VwKDEpCiAKIApAQCAtMjI4LDkgKzIyOCw5IEBACiAKICAgICAgICAgIyBOb3cgcnVuIG1ha2UuCiAgICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IjoKLSAgICAgICAgICAgIHJjID0gb3Muc3lzdGVtKCJtbDY0IC1jIC1Gb21zXFx1cHRhYmxlLm9iaiBtc1xcdXB0YWJsZS5hc20iKQorICAgICAgICAgICAgcmMgPSBvcy5zeXN0ZW0oIm5hc20gLWYgd2luNjQgLURORUFSIC1PeCAtZyBtc1xcdXB0YWJsZS5hc20iKQogICAgICAgICAgICAgaWYgcmM6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIm1sNjQgYXNzZW1ibGVyIGhhcyBmYWlsZWQuIikKKyAgICAgICAgICAgICAgICBwcmludCgibmFzbSBhc3NlbWJsZXIgaGFzIGZhaWxlZC4iKQogICAgICAgICAgICAgICAgIHN5cy5leGl0KHJjKQogCiAgICAgICAgIGNvcHkociJjcnlwdG9cYnVpbGRpbmZfJXMuaCIgJSBhcmNoLCByImNyeXB0b1xidWlsZGluZi5oIikKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGRfdGtpbnRlci5weSBiL1BDYnVpbGQvYnVpbGRfdGtpbnRlci5weQppbmRleCBlYjFkMDkyLi40MTk2Y2YzIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2J1aWxkX3RraW50ZXIucHkKKysrIGIvUENidWlsZC9idWlsZF90a2ludGVyLnB5CkBAIC0xMSw4ICsxMSw4IEBACiBoZXJlID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCiBwYXIgPSBvcy5wYXRoLnBhcmRpcgogCi1UQ0wgPSAidGNsOC41LjkiCi1USyA9ICJ0azguNS45IgorVENMID0gInRjbDguNS4xMSIKK1RLID0gInRrOC41LjExIgogVElYID0gInRpeC04LjQuMy54IgogCiBST09UID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihoZXJlLCBwYXIsIHBhcikpCkBAIC0zMiw3ICszMiw3IEBACiBkZWYgYnVpbGQocGxhdGZvcm0sIGNsZWFuKToKICAgICBpZiBwbGF0Zm9ybSA9PSAiV2luMzIiOgogICAgICAgICBkZXN0ID0gb3MucGF0aC5qb2luKFJPT1QsICJ0Y2x0ayIpCi0gICAgICAgIG1hY2hpbmUgPSAiWDg2IgorICAgICAgICBtYWNoaW5lID0gIklYODYiCiAgICAgZWxpZiBwbGF0Zm9ybSA9PSAiQU1ENjQiOgogICAgICAgICBkZXN0ID0gb3MucGF0aC5qb2luKFJPT1QsICJ0Y2x0azY0IikKICAgICAgICAgbWFjaGluZSA9ICJBTUQ2NCIKZGlmZiAtLWdpdCBhL1BDYnVpbGQvZGVidWcucHJvcHMgYi9QQ2J1aWxkL2RlYnVnLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliN2E2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2RlYnVnLnByb3BzCkBAIC0wLDAgKzEsMjcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiPgorICAgIDxQeURlYnVnRXh0Pl9kPC9QeURlYnVnRXh0PgorICAgIDxLaWxsUHl0aG9uRXhlPiQoT3V0RGlyKWtpbGxfcHl0aG9uX2QuZXhlPC9LaWxsUHl0aG9uRXhlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8VGFyZ2V0TmFtZT4kKFByb2plY3ROYW1lKV9kPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeURlYnVnRXh0Ij4KKyAgICAgIDxWYWx1ZT4kKFB5RGVidWdFeHQpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iS2lsbFB5dGhvbkV4ZSI+CisgICAgICA8VmFsdWU+JChLaWxsUHl0aG9uRXhlKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2Vudi5iYXQgYi9QQ2J1aWxkL2Vudi5iYXQKaW5kZXggNjM4YjE2Yy4uMDhkYzhlZiAxMDA2NDQKLS0tIGEvUENidWlsZC9lbnYuYmF0CisrKyBiL1BDYnVpbGQvZW52LmJhdApAQCAtMSw1ICsxLDkgQEAKIEBlY2hvIG9mZgotc2V0IFZTOT0lUHJvZ3JhbUZpbGVzJVxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyA5LjAKK3NldCBWUzEwPSVQcm9ncmFtRmlsZXMoeDg2KSVcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMTAuMAorSUYgRVhJU1QgIiVWUzEwJSIgR09UTyBvaworc2V0IFZTMTA9JVByb2dyYW1GaWxlcyVcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMTAuMAorOm9rCisKIGVjaG8gQnVpbGQgZW52aXJvbm1lbnRzOiB4ODYsIGlhNjQsIGFtZDY0LCB4ODZfYW1kNjQsIHg4Nl9pYTY0CiBlY2hvLgotY2FsbCAiJVZTOSVcVkNcdmN2YXJzYWxsLmJhdCIgJTEKK2NhbGwgIiVWUzEwJVxWQ1x2Y3ZhcnNhbGwuYmF0IiAlMQpkaWZmIC0tZ2l0IGEvUENidWlsZC9raWxsX3B5dGhvbi5jIGIvUENidWlsZC9raWxsX3B5dGhvbi5jCmluZGV4IDZiOTE2NzguLmJiMzIzZDMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQva2lsbF9weXRob24uYworKysgYi9QQ2J1aWxkL2tpbGxfcHl0aG9uLmMKQEAgLTEwNiw3ICsxMDYsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBYWFggVE9ETzogaWYgd2UgcmVhbGx5IHdhbnRlZCB0byBiZSBmYW5jeSwgd2UgY291bGQgY2hlY2sgdGhlIAogICAgICAgICAgKiBtb2R1bGVzIGZvciBhbGwgcHJvY2Vzc2VzIChub3QganVzdCB0aGUgcHl0aG9uW19kXS5leGUgb25lcykKLSAgICAgICAgICogYW5kIHNlZSBpZiBhbnkgb2Ygb3VyIERMTHMgYXJlIGxvYWRlZCAoaS5lLiBweXRob24zMltfZF0uZGxsKSwKKyAgICAgICAgICogYW5kIHNlZSBpZiBhbnkgb2Ygb3VyIERMTHMgYXJlIGxvYWRlZCAoaS5lLiBweXRob24zM1tfZF0uZGxsKSwKICAgICAgICAgICogYXMgdGhhdCB3b3VsZCBhbHNvIGluaGliaXQgb3VyIGFiaWxpdHkgdG8gcmVidWlsZCB0aGUgc29sdXRpb24uCiAgICAgICAgICAqIE5vdCB3b3J0aCBsb29zaW5nIHNsZWVwIG92ZXIgdGhvdWdoOyBmb3Igbm93LCBhIHNpbXBsZSBjaGVjayAKICAgICAgICAgICogZm9yIGp1c3QgdGhlIHB5dGhvbiBleGVjdXRhYmxlIHNob3VsZCBiZSBzdWZmaWNpZW50LgpkaWZmIC0tZ2l0IGEvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qIGIvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNjdjNDAKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2oKQEAgLTAsMCArMSwxMjAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5raWxsX3B5dGhvbjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpX2QuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ia2lsbF9weXRob24uYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzNkNzUxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NDg2MDY1OTEtYzhiNi00MWE1LTk1YzUtOWEwODkwYzU1MDRmfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJraWxsX3B5dGhvbi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8uYyBiL1BDYnVpbGQvbWFrZV9idWlsZGluZm8uYwppbmRleCBmZDNhMmUyLi5mOWFhZGVlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLmMKKysrIGIvUENidWlsZC9tYWtlX2J1aWxkaW5mby5jCkBAIC0yLDYgKzIsNyBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxpby5oPgogCiAjZGVmaW5lIENNRF9TSVpFIDUwMAogCkBAIC02MSw2ICs2Miw1MSBAQAogICAgIHJldHVybiAxOwogfQogCitjb25zdCBjaGFyIERFTElNU1tdID0geyAiIFxuIiB9OworCitpbnQgZ2V0X21lcmN1cmlhbF9pbmZvKGNoYXIgKiBoZ2JyYW5jaCwgY2hhciAqIGhndGFnLCBjaGFyICogaGdyZXYsIGludCBzaXplKQoreworICAgIGludCByZXN1bHQgPSAwOworICAgIGNoYXIgZmlsZW5hbWVbQ01EX1NJWkVdOworICAgIGNoYXIgY21kbGluZVtDTURfU0laRV07CisKKyAgICBzdHJjcHlfcyhmaWxlbmFtZSwgQ01EX1NJWkUsICJ0bXBYWFhYWFgiKTsKKyAgICBpZiAoX21rdGVtcF9zKGZpbGVuYW1lLCBDTURfU0laRSkgPT0gMCkgeworICAgICAgICBpbnQgcmM7CisKKyAgICAgICAgc3RyY3B5X3MoY21kbGluZSwgQ01EX1NJWkUsICJoZyBpZCAtYml0ID4gIik7CisgICAgICAgIHN0cmNhdF9zKGNtZGxpbmUsIENNRF9TSVpFLCBmaWxlbmFtZSk7CisgICAgICAgIHJjID0gc3lzdGVtKGNtZGxpbmUpOworICAgICAgICBpZiAocmMgPT0gMCkgeworICAgICAgICAgICAgRklMRSAqIGZwOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZm9wZW5fcygmZnAsIGZpbGVuYW1lLCAiciIpID09IDApIHsKKyAgICAgICAgICAgICAgICBjaGFyICogY3AgPSBmZ2V0cyhjbWRsaW5lLCBDTURfU0laRSwgZnApOworCisgICAgICAgICAgICAgICAgaWYgKGNwKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgKiBjb250ZXh0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAqIHRwID0gc3RydG9rX3MoY3AsIERFTElNUywgJmNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhncmV2LCBzaXplLCB0cCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGdicmFuY2gsIHNpemUsIHRwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3RhZywgc2l6ZSwgdHApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmY2xvc2UoZnApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIF91bmxpbmsoZmlsZW5hbWUpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciphcmd2W10pCiB7CiAgICAgY2hhciBjb21tYW5kW0NNRF9TSVpFXSA9ICJjbC5leGUgLWMgLURfV0lOMzIgLURVU0VfRExfRVhQT1JUIC1EX1dJTkRPV1MgLURXSU4zMiAtRF9XSU5ETEwgIjsKQEAgLTEwOSw4ICsxNTUsMjcgQEAKICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcIiIpOwogICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7CiAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIgLURTVUJXQ1JFViAiKTsKLSAgICB9IGVsc2UKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGNoYXIgaGd0YWdbQ01EX1NJWkVdOworICAgICAgICBjaGFyIGhnYnJhbmNoW0NNRF9TSVpFXTsKKyAgICAgICAgY2hhciBoZ3JldltDTURfU0laRV07CisKKyAgICAgICAgaWYgKGdldF9tZXJjdXJpYWxfaW5mbyhoZ2JyYW5jaCwgaGd0YWcsIGhncmV2LCBDTURfU0laRSkpIHsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLURIR0JSQU5DSD1cXFwiIik7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGdicmFuY2gpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiIik7CisKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1ESEdUQUc9XFxcIiIpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhndGFnKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiIpOworCisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtREhHVkVSU0lPTj1cXFwiIik7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGdyZXYpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiICIpOworICAgICAgICB9CiAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIik7CisgICAgfQogICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1Gb1wiIik7CiAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOwogICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvLm9cIiAtSS4uXFxJbmNsdWRlIC1JLi5cXFBDIik7CmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2ogYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVlN2Y5MQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvagpAQCAtMCwwICsxLDUyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPm1ha2VfYnVpbGRpbmZvPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpciltYWtlX2J1aWxkaW5mby5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1ha2VfYnVpbGRpbmZvLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIyN2Y4YwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJtYWtlX2J1aWxkaW5mby5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qIGIvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNmNTA3YgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qCkBAIC0wLDAgKzEsMjAwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+bWFrZV92ZXJzaW9uaW5mbzwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPE1lc3NhZ2U+QnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmg8L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQorbWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yYy5oCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cz4kKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjLmg7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxJbnB1dHM+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZTwvSW5wdXRzPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm8uZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICAgIDxQb3N0QnVpbGRFdmVudCAvPgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDdXN0b21CdWlsZFN0ZXA+CisgICAgICA8TWVzc2FnZT5CdWlsZCBQQy9weXRob25udF9yYyhfZCkuaDwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCittYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjLmgKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzPiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmMuaDslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGU8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCittYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbl9udC5oCis8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPEN1c3RvbUJ1aWxkU3RlcD4KKyAgICAgIDxNZXNzYWdlPkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKK21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yY19kLmgKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzPiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmNfZC5oOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8SW5wdXRzPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZTwvSW5wdXRzPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPE1lc3NhZ2U+QnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmg8L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQorbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjX2QuaAorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHM+JChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yY19kLmg7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKK21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25fbnRfZC5oCis8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbWFrZV92ZXJzaW9uaW5mby5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmMwNDM0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlNDE4MDk1NC1jM2E1LTQ3NDktYjlhNC0zMWI4MDRlZTRmYTh9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BjYnVpbGQuc2xuIGIvUENidWlsZC9wY2J1aWxkLnNsbgppbmRleCAxZGU0ZWExLi5kNmEwMjJmIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3BjYnVpbGQuc2xuCisrKyBiL1BDYnVpbGQvcGNidWlsZC5zbG4KQEAgLTEsMTQxICsxLDc4IEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMC4wMA0KLSMgVmlzdWFsIFN0dWRpbyAyMDA4DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjcHJvaiIsICJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0gPSB7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfdmVyc2lvbmluZm8iLCAibWFrZV92ZXJzaW9uaW5mby52Y3Byb2oiLCAie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjcHJvaiIsICJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0gPSB7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfQ0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQ0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0gPSB7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbnciLCAicHl0aG9udy52Y3Byb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3OXhwb3BlbiIsICJ3OXhwb3Blbi52Y3Byb2oiLCAie0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX2J1aWxkaW5mbyIsICJtYWtlX2J1aWxkaW5mby52Y3Byb2oiLCAie0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0iDQotRW5kUHJvamVjdA0KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDExLjAwDQorIyBWaXN1YWwgU3R1ZGlvIDIwMTANCiBQcm9qZWN0KCJ7MjE1MEUzMzMtOEZEQy00MkEzLTk0NzQtMUEzOTU2RDQ2REU4fSIpID0gIlNvbHV0aW9uIEl0ZW1zIiwgIlNvbHV0aW9uIEl0ZW1zIiwgIns1NTNFQzMzRS05ODE2LTQ5OTYtQTY2MC01RDYxODZBMEIwQjN9Ig0KIAlQcm9qZWN0U2VjdGlvbihTb2x1dGlvbkl0ZW1zKSA9IHByZVByb2plY3QNCiAJCS4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMgPSAuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jDQogCQlyZWFkbWUudHh0ID0gcmVhZG1lLnR4dA0KIAlFbmRQcm9qZWN0U2VjdGlvbg0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbnNvdW5kIiwgIndpbnNvdW5kLnZjcHJvaiIsICJ7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uIiwgInB5dGhvbi52Y3hwcm9qIiwgIntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXMiLCAiX2N0eXBlcy52Y3Byb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfdmVyc2lvbmluZm8iLCAibWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qIiwgIntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXNfdGVzdCIsICJfY3R5cGVzX3Rlc3QudmNwcm9qIiwgIns5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob25jb3JlIiwgInB5dGhvbmNvcmUudmN4cHJvaiIsICJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZWxlbWVudHRyZWUiLCAiX2VsZW1lbnR0cmVlLnZjcHJvaiIsICJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjeHByb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX21zaSIsICJfbXNpLnZjcHJvaiIsICJ7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmN4cHJvaiIsICJ7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc29ja2V0IiwgIl9zb2NrZXQudmNwcm9qIiwgIns4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX2J1aWxkaW5mbyIsICJtYWtlX2J1aWxkaW5mby52Y3hwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zcWxpdGUzIiwgIl9zcWxpdGUzLnZjcHJvaiIsICJ7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0gPSB7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luc291bmQiLCAid2luc291bmQudmN4cHJvaiIsICJ7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3NsIiwgIl9zc2wudmNwcm9qIiwgIntDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSA9IHs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSA9IHtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZGVjaW1hbCIsICJfZGVjaW1hbC52Y3hwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y2FwaSIsICJfdGVzdGNhcGkudmNwcm9qIiwgIns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzIiwgIl9jdHlwZXMudmN4cHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGtpbnRlciIsICJfdGtpbnRlci52Y3Byb2oiLCAiezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXNfdGVzdCIsICJfY3R5cGVzX3Rlc3QudmN4cHJvaiIsICJ7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiejIiLCAiYnoyLnZjcHJvaiIsICJ7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2VsZW1lbnR0cmVlIiwgIl9lbGVtZW50dHJlZS52Y3hwcm9qIiwgInsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNlbGVjdCIsICJzZWxlY3QudmNwcm9qIiwgInsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXNpIiwgIl9tc2kudmN4cHJvaiIsICJ7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ1bmljb2RlZGF0YSIsICJ1bmljb2RlZGF0YS52Y3Byb2oiLCAie0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zb2NrZXQiLCAiX3NvY2tldC52Y3hwcm9qIiwgIns4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5ZXhwYXQiLCAicHlleHBhdC52Y3Byb2oiLCAie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zcWxpdGUzIiwgIl9zcWxpdGUzLnZjeHByb2oiLCAiezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYmRpc3Rfd2luaW5zdCIsICJiZGlzdF93aW5pbnN0LnZjcHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zc2wiLCAiX3NzbC52Y3hwcm9qIiwgIntDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9oYXNobGliIiwgIl9oYXNobGliLnZjcHJvaiIsICJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0gPSB7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RjYXBpIiwgIl90ZXN0Y2FwaS52Y3hwcm9qIiwgIns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNxbGl0ZTMiLCAic3FsaXRlMy52Y3Byb2oiLCAie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90a2ludGVyIiwgIl90a2ludGVyLnZjeHByb2oiLCAiezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX211bHRpcHJvY2Vzc2luZyIsICJfbXVsdGlwcm9jZXNzaW5nLnZjcHJvaiIsICJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2J6MiIsICJfYnoyLnZjeHByb2oiLCAiezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3NsIiwgInNzbC52Y3Byb2oiLCAie0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNlbGVjdCIsICJzZWxlY3QudmN4cHJvaiIsICJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJraWxsX3B5dGhvbiIsICJraWxsX3B5dGhvbi52Y3Byb2oiLCAiezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0iDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbHptYSIsICJfbHptYS52Y3hwcm9qIiwgIntGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbjNkbGwiLCAicHl0aG9uM2RsbC52Y3Byb2oiLCAiezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0iDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ1bmljb2RlZGF0YSIsICJ1bmljb2RlZGF0YS52Y3hwcm9qIiwgIntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInh4bGltaXRlZCIsICJ4eGxpbWl0ZWQudmNwcm9qIiwgIntGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9Ig0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlleHBhdCIsICJweWV4cGF0LnZjeHByb2oiLCAie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYmRpc3Rfd2luaW5zdCIsICJiZGlzdF93aW5pbnN0LnZjeHByb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2hhc2hsaWIiLCAiX2hhc2hsaWIudmN4cHJvaiIsICJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzcWxpdGUzIiwgInNxbGl0ZTMudmN4cHJvaiIsICJ7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXVsdGlwcm9jZXNzaW5nIiwgIl9tdWx0aXByb2Nlc3NpbmcudmN4cHJvaiIsICJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzc2wiLCAic3NsLnZjeHByb2oiLCAie0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAia2lsbF9weXRob24iLCAia2lsbF9weXRob24udmN4cHJvaiIsICJ7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24zZGxsIiwgInB5dGhvbjNkbGwudmN4cHJvaiIsICJ7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4eGxpbWl0ZWQiLCAieHhsaW1pdGVkLnZjeHByb2oiLCAie0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RidWZmZXIiLCAiX3Rlc3RidWZmZXIudmN4cHJvaiIsICJ7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweWxhdW5jaGVyIiwgInB5bGF1bmNoZXIudmN4cHJvaiIsICJ7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXdsYXVuY2hlciIsICJweXdsYXVuY2hlci52Y3hwcm9qIiwgInsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9mcmVlemVfaW1wb3J0bGliIiwgIl9mcmVlemVfaW1wb3J0bGliLnZjeHByb2oiLCAiezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30iDQogRW5kUHJvamVjdA0KIEdsb2JhbA0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KQEAgLTI2MSw2ICsxOTgsMjIgQEAKIAkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQogCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCkBAIC00MzcsNiArMzkwLDIyIEBACiAJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KIAkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQogCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQpAQCAtNTU4LDM2ICs1MjcsOTAgQEAKIAkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KIAkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAlFbmRHbG9iYWxTZWN0aW9uDQogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQogCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BnaW5zdHJ1bWVudC5wcm9wcyBiL1BDYnVpbGQvcGdpbnN0cnVtZW50LnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ODQ5OTUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3BnaW5zdHJ1bWVudC5wcm9wcwpAQCAtMCwwICsxLDM4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4KKyAgICA8T3V0RGlyUEdJPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSktcGdpXDwvT3V0RGlyUEdJPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyPiQoT3V0RGlyUEdJKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtcGdpXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxGYXZvclNpemVPclNwZWVkPlNpemU8L0Zhdm9yU2l6ZU9yU3BlZWQ+CisgICAgICA8T21pdEZyYW1lUG9pbnRlcnM+dHJ1ZTwvT21pdEZyYW1lUG9pbnRlcnM+CisgICAgICA8RW5hYmxlRmliZXJTYWZlT3B0aW1pemF0aW9ucz5mYWxzZTwvRW5hYmxlRmliZXJTYWZlT3B0aW1pemF0aW9ucz4KKyAgICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxFeGNlcHRpb25IYW5kbGluZz4KKyAgICAgIDwvRXhjZXB0aW9uSGFuZGxpbmc+CisgICAgICA8QnVmZmVyU2VjdXJpdHlDaGVjaz5mYWxzZTwvQnVmZmVyU2VjdXJpdHlDaGVjaz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8TGlua1RpbWVDb2RlR2VuZXJhdGlvbj5QR0luc3RydW1lbnQ8L0xpbmtUaW1lQ29kZUdlbmVyYXRpb24+CisgICAgICA8UHJvZmlsZUd1aWRlZERhdGFiYXNlPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSktcGdpXCQoVGFyZ2V0TmFtZSkucGdkPC9Qcm9maWxlR3VpZGVkRGF0YWJhc2U+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKE91dERpclBHSSlcJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iT3V0RGlyUEdJIj4KKyAgICAgIDxWYWx1ZT4kKE91dERpclBHSSk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BndXBkYXRlLnByb3BzIGIvUENidWlsZC9wZ3VwZGF0ZS5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzc1YTAyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9wZ3VwZGF0ZS5wcm9wcwpAQCAtMCwwICsxLDE3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChTb2x1dGlvbkRpcilccGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ29cPC9PdXREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbE1hbmlmZXN0RGVwZW5kZW5jaWVzPiUoQWRkaXRpb25hbE1hbmlmZXN0RGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbE1hbmlmZXN0RGVwZW5kZW5jaWVzPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24+UEdVcGRhdGU8L0xpbmtUaW1lQ29kZUdlbmVyYXRpb24+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKE91dERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZC5wcm9wcyBiL1BDYnVpbGQvcHlkLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OTk2NmUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5ZC5wcm9wcwpAQCAtMCwwICsxLDI1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxHZW5lcmF0ZU1hbmlmZXN0PmZhbHNlPC9HZW5lcmF0ZU1hbmlmZXN0PgorICAgIDxFbWJlZE1hbmlmZXN0PmZhbHNlPC9FbWJlZE1hbmlmZXN0PgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfQlVJTERfQ09SRV9NT0RVTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWRfZC5wcm9wcyBiL1BDYnVpbGQvcHlkX2QucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAyMzI4OAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHlkX2QucHJvcHMKQEAgLTAsMCArMSwzMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8R2VuZXJhdGVNYW5pZmVzdD5mYWxzZTwvR2VuZXJhdGVNYW5pZmVzdD4KKyAgICA8RW1iZWRNYW5pZmVzdD5mYWxzZTwvRW1iZWRNYW5pZmVzdD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgICA8VGFyZ2V0TmFtZT4kKFByb2plY3ROYW1lKV9kPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+RGVmYXVsdDwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfQlVJTERfQ09SRV9NT0RVTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbmsgLz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXAgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvaiBiL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NGZkM2QKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvagpAQCAtMCwwICsxLDIzNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnB5ZXhwYXQ8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccHlleHBhdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWV4cGF0LnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJmMzYyZgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwzMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZGRhZTc3YTYtN2NhMC00YTFiLWI3MWMtZGVlYTVmNDAyNWRlfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NWFmOWQ0MGMtZmM0Ni00NjQwLWFkODQtM2QxZGQzNGE3MWQ3fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccHlleHBhdC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qIGIvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZhOTNkZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qCkBAIC0wLDAgKzEsMzExIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+cHlsYXVuY2hlcjwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+cHlfZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxUYXJnZXROYW1lPnB5X2Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuaWNvIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5bGF1bmNoZXIucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Im1ha2VfdmVyc2lvbmluZm8udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ZjBlMDU0MWUtZjE3ZC00MzBiLTk3YzQtOTNhZGYwZGQyODRlfTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiMjNkMgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwzMiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xsYXVuY2hlci5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXGxhdW5jaGVyLmljbyI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9Ob25lPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5bGF1bmNoZXIucmMiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcyBiL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZmJlM2MKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwpAQCAtMCwwICsxLDEwNSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdXaW4zMiciPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpPC9PdXREaXI+CisgICAgPEludERpcj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbilcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+ICAKKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0neDY0JyI+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxfUHJvcGVydHlTaGVldERpc3BsYXlOYW1lPmFtZDY0PC9fUHJvcGVydHlTaGVldERpc3BsYXlOYW1lPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcilhbWQ2NFw8L091dERpcj4KKyAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+CisgICAgPFB5RGxsTmFtZT5weXRob24zMyQoUHlEZWJ1Z0V4dCk8L1B5RGxsTmFtZT4KKyAgICA8UHl0aG9uRXhlPiQoT3V0RGlyKXB5dGhvbiQoUHlEZWJ1Z0V4dCkuZXhlPC9QeXRob25FeGU+CisgICAgPEtpbGxQeXRob25FeGU+JChPdXREaXIpa2lsbF9weXRob24kKFB5RGVidWdFeHQpLmV4ZTwvS2lsbFB5dGhvbkV4ZT4KKyAgICA8ZXh0ZXJuYWxzRGlyPi4uXC4uPC9leHRlcm5hbHNEaXI+CisgICAgPHNxbGl0ZTNEaXI+JChleHRlcm5hbHNEaXIpXHNxbGl0ZS0zLjcuMTI8L3NxbGl0ZTNEaXI+CisgICAgPGJ6MkRpcj4kKGV4dGVybmFsc0RpcilcYnppcDItMS4wLjY8L2J6MkRpcj4KKyAgICA8bHptYURpcj4kKGV4dGVybmFsc0RpcilceHotNS4wLjM8L2x6bWFEaXI+CisgICAgPG9wZW5zc2xEaXI+JChleHRlcm5hbHNEaXIpXG9wZW5zc2wtMS4wLjFjPC9vcGVuc3NsRGlyPgorICAgIDx0Y2x0a0Rpcj4kKGV4dGVybmFsc0RpcilcdGNsdGs8L3RjbHRrRGlyPgorICAgIDx0Y2x0azY0RGlyPiQoZXh0ZXJuYWxzRGlyKVx0Y2x0azY0PC90Y2x0azY0RGlyPgorICAgIDx0Y2x0a0xpYj4kKHRjbHRrRGlyKVxsaWJcdGNsODUubGliOyQodGNsdGtEaXIpXGxpYlx0azg1LmxpYjwvdGNsdGtMaWI+CisgICAgPHRjbHRrTGliRGVidWc+JCh0Y2x0a0RpcilcbGliXHRjbDg1Zy5saWI7JCh0Y2x0a0RpcilcbGliXHRrODVnLmxpYjwvdGNsdGtMaWJEZWJ1Zz4KKyAgICA8dGNsdGs2NExpYj4kKHRjbHRrNjREaXIpXGxpYlx0Y2w4NS5saWI7JCh0Y2x0azY0RGlyKVxsaWJcdGs4NS5saWI8L3RjbHRrNjRMaWI+CisgICAgPHRjbHRrNjRMaWJEZWJ1Zz4kKHRjbHRrNjREaXIpXGxpYlx0Y2w4NWcubGliOyQodGNsdGs2NERpcilcbGliXHRrODVnLmxpYjwvdGNsdGs2NExpYkRlYnVnPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTsgLi5cUEM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxFeGNlcHRpb25IYW5kbGluZz4KKyAgICAgIDwvRXhjZXB0aW9uSGFuZGxpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4kKE91dERpcik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUEM7Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHlEbGxOYW1lIj4KKyAgICAgIDxWYWx1ZT4kKFB5RGxsTmFtZSk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeXRob25FeGUiPgorICAgICAgPFZhbHVlPiQoUHl0aG9uRXhlKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IktpbGxQeXRob25FeGUiPgorICAgICAgPFZhbHVlPiQoS2lsbFB5dGhvbkV4ZSk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJleHRlcm5hbHNEaXIiPgorICAgICAgPFZhbHVlPiQoZXh0ZXJuYWxzRGlyKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InNxbGl0ZTNEaXIiPgorICAgICAgPFZhbHVlPiQoc3FsaXRlM0Rpcik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJiejJEaXIiPgorICAgICAgPFZhbHVlPiQoYnoyRGlyKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9Imx6bWFEaXIiPgorICAgICAgPFZhbHVlPiQobHptYURpcik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJvcGVuc3NsRGlyIj4KKyAgICAgIDxWYWx1ZT4kKG9wZW5zc2xEaXIpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0idGNsdGtEaXIiPgorICAgICAgPFZhbHVlPiQodGNsdGtEaXIpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0idGNsdGs2NERpciI+CisgICAgICA8VmFsdWU+JCh0Y2x0azY0RGlyKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrTGliIj4KKyAgICAgIDxWYWx1ZT4kKHRjbHRrTGliKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrTGliRGVidWciPgorICAgICAgPFZhbHVlPiQodGNsdGtMaWJEZWJ1Zyk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0azY0TGliIj4KKyAgICAgIDxWYWx1ZT4kKHRjbHRrNjRMaWIpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0idGNsdGs2NExpYkRlYnVnIj4KKyAgICAgIDxWYWx1ZT4kKHRjbHRrNjRMaWJEZWJ1Zyk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qIGIvUENidWlsZC9weXRob24udmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGE5ZGUwCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXRob24udmN4cHJvagpAQCAtMCwwICsxLDM2OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX08L1Byb2plY3RHdWlkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob25fZC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob25fZC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIxMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXHB5Y29uLmljbyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fZXhlLnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccHl0aG9uLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Inc5eHBvcGVuLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2U5ZTBhMWY2LTAwMDktNGU4Yy1iOGY4LTFiOGY1ZDQ5YTA1OH08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weXRob24udmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0OTA2YTQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsyZDY5MDc5NS1kZTgzLTRhMzMtODIzNS0zYzVkYWZlNDVlZmF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4YjAxMGExOS01YjI5LTQ1ZjEtYThhMC1mNjcyZTJiYmIxMWF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xweWNvbi5pY28iPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvTm9uZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fZXhlLnJjIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHB5dGhvbi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qIGIvUENidWlsZC9weXRob24zZGxsLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM0NTliNQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCkBAIC0wLDAgKzEsMTg0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5weXRob24zZGxsPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoT3V0RGlyKXB5dGhvbjMuZGxsPC9OTWFrZU91dHB1dD4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoT3V0RGlyKXB5dGhvbjMuZGxsPC9OTWFrZU91dHB1dD4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHl0aG9uMy5kZWYiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uM2RsbC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24zZGxsLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI1MGM0NQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwzMiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xweXRob24zLmRlZiI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvTm9uZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob24zZGxsLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NDkzZTMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagpAQCAtMCwwICsxLDY4MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnB5dGhvbmNvcmU8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQeURsbE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5EZWZhdWx0PC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBEZWJ1ZyAiJChJbnREaXIpIjwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5EZWZhdWx0PC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBEZWJ1ZyAiJChJbnREaXIpIjwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgUmVsZWFzZSAiJChJbnREaXIpIjwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFB5RGxsTmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcikiPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcikiPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgUmVsZWFzZSAiJChJbnREaXIpIjwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxhYnN0cmFjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxhY2N1LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFzZGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJpdHNldC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxib29sb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJ5dGVzX21ldGhvZHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYnl0ZWFycmF5b2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJ5dGVzb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNlbGxvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY2V2YWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY2xhc3NvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjb2RlY3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29tcGlsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjb21wbGV4b2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGRhdGV0aW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGRlc2Nyb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGRpY3RvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZHluYW1pY19hbm5vdGF0aW9ucy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxlbnVtb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGVycmNvZGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZXZhbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmaWxlb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGZpbGV1dGlscy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmbG9hdG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmcmFtZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmdW5jb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGdlbm9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxncmFtaW5pdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxncmFtbWFyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGltcG9ydC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxpbnRyY2hlY2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcaXRlcm9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxsaXN0b2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGxvbmdpbnRyZXByLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGxvbmdvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWFyc2hhbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtZW1vcnlvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWV0YWdyYW1tYXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWV0aG9kb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbW9kdWxlb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG5hbWVzcGFjZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxub2RlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvYmppbXBsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9wY29kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc2RlZnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwZ2VuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBnZW5oZWFkZXJzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5X2N1cnNlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWFyZW5hLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5Y2Fwc3VsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWN0eXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZGVidWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHllcnJvcnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlleHBhdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWZwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWdldG9wdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1hdGguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHl0aW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWFjcm8uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHltZW0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlwb3J0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlzdHJjbXAuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlzdHJ0b2QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZHRvYS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxQeXRob24tYXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXFB5dGhvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXRob25ydW4uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHl0aHJlYWQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccmFuZ2VvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc2V0b2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHNsaWNlb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHN0cnVjdG1lbWJlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzdHJ1Y3RzZXEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc3ltdGFibGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc3lzbW9kdWxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHRva2VuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHRyYWNlYmFjay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx0dXBsZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx1Y25oYXNoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHVuaWNvZGVvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcd2Vha3JlZm9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbWF0aC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNyYzMyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmaXhlZC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHRyZWVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcemNvbmYuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6Y29uZi5pbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHpsaWIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcYWxnX2ppc3gwMjAxLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xjamtjb2RlY3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGVtdV9qaXN4MDIxM18yMDAwLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19jbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfaGsuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2ppc3gwMjEzX3BhaXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2pwLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19rci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfdHcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxjb3VudC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmFzdHNlYXJjaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmluZC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJccGFydGl0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxzcGxpdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x1bmljb2RldHlwZV9kYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUGFyc2VyXHBhcnNlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUGFyc2VyXHRva2VuaXplci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUENcZXJybWFwLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQQ1xweWNvbmZpZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNldmFsX2dpbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbmR2YXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxpbXBvcnRkbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRocmVhZF9udC5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2xsZWN0aW9uc21vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3N2LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9mdW5jdG9vbHNtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2hlYXBxbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9qc29uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9sb2NhbGVtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2xzcHJvZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbWF0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcGlja2xlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NyZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3RydWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF93ZWFrcmVmLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGFycmF5bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGF0ZXhpdG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xhdWRpb29wLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGJpbmFzY2lpLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNtYXRobW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kYXRldGltZW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xlcnJub21vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmYXVsdGhhbmRsZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2Ntb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaXRlcnRvb2xzbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1haW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWF0aG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtZDVtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbW1hcG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xvcGVyYXRvci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xwYXJzZXJtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccG9zaXhtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNoYTFtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2hhMjU2bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNoYTUxMm1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzaWduYWxtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc3ltdGFibGVtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3RocmVhZG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x0aW1lbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHh4c3VidHlwZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6aXBpbXBvcnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYm1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cZmlsZWlvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xzdHJpbmdpby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmJhY2suYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcdHJlZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx1bmNvbXByLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfY24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaGsuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaXNvMjAyMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19qcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19rci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc190dy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3dpbmFwaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xhYnN0cmFjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xhY2N1LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGJvb2xvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYnl0ZXNfbWV0aG9kcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xieXRlYXJyYXlvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYnl0ZXNvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY2Fwc3VsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjZWxsb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNsYXNzb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNvZGVvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY29tcGxleG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xkaWN0b2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGVudW1vYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZXhjZXB0aW9ucy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmaWxlb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGZsb2F0b2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGZyYW1lb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGl0ZXJvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbGlzdG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xsb25nb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG1lbW9yeW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xtZXRob2RvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbW9kdWxlb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG5hbWVzcGFjZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcb2JtYWxsb2MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNccmFuZ2VvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc2V0b2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHNsaWNlb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cnVjdHNlcS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x0dXBsZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x0eXBlb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHVuaWNvZGVjdHlwZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x1bmljb2Rlb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHdlYWtyZWZvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxhY2NlbGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcYml0c2V0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcZmlyc3RzZXRzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcZ3JhbW1hci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGdyYW1tYXIxLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcbGlzdG5vZGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxtZXRhZ3JhbW1hci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXG15cmVhZGxpbmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxub2RlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2VyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2V0b2suYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclx0b2tlbml6ZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHdpbnJlZy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcY29uZmlnLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xkbF9udC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcZ2V0cGF0aHAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXG1zdmNydG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHJhbmRvbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXF93YXJuaW5ncy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGFzZGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxibHRpbm1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNldmFsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cY29kZWNzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cY29tcGlsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR5bmFtaWNfYW5ub3RhdGlvbnMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkeW5sb2FkX3dpbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGVycm9ycy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZpbGV1dGlscy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZvcm1hdHRlcl91bmljb2RlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZnJvemVuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZnV0dXJlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0YXJncy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldGNvbXBpbGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0Y29weXJpZ2h0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0b3B0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0cGxhdGZvcm0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXR2ZXJzaW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ3JhbWluaXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxpbXBvcnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxpbXBvcnRkbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXG1hcnNoYWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxtb2RzdXBwb3J0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbXlzbnByaW50Zi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXG15c3RydG91bC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHBlZXBob2xlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlhcmVuYS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5Y3R5cGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWZwZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5bWF0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5dGltZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RhdGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cmNtcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RydG9kLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHRvYS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXRob25ydW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxzdHJ1Y3RtZW1iZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxzeW10YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHN5c21vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRocmVhZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRyYWNlYmFjay5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ia2lsbF9weXRob24udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57NmRlMTA3NDQtZTM5Ni00MGE1LWI0ZTItMWI2OWFhN2M4ZDMxfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Im1ha2VfYnVpbGRpbmZvLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2M3M2YwZWMxLTM1OGItNDE3Ny05NDBmLTA4NDZhYzhiMDRjZH08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJtYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2YwZTA1NDFlLWYxN2QtNDMwYi05N2M0LTkzYWRmMGRkMjg0ZX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDliNGJiNAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSw5MjUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJJbmNsdWRlIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswODZiMGFmYi0yNzBjLTQ2MDMtYTAyYS02M2Q0NmYwYjJiOTJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iTW9kdWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OGU4MTYwOWYtMTNjYS00ZWFlLTlmZGItZjhhZjIwYzcxMGM3fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9Ik1vZHVsZXNcX2lvIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4Nzg3YzViYi1iYWI2LTQ1ODYtYTQyZS00YTI3YzdiM2ZmYjZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iTW9kdWxlc1x6bGliIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns1ZDZkMmQ2Yy05ZTYxLTRhMWQtYjBiMi01Y2MyZjQ0NmQ2OWV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iTW9kdWxlc1xjamtjb2RlY3MiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezlmMTJjNGIxLTMyMmUtNDMxZS1hYmYxLWUwMjU1MGY1MDAzMn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJPYmplY3RzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthYjI5YTU1OC0xNDNkLTRmZTctYTAzOS1iNDMxZmI0Mjk4NTZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUGFyc2VyIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5NzM0OWZlZS0wYWJmLTQ4YjAtYThmNS03NzFiZjM5YjhhZWV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUEMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2VhMjFmYzk4LWRlODktNDc0Ni1hOTc5LWM1NjE2OTY0MzI5YX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJQeXRob24iPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2YyNjk2NDA2LTE0YmMtNDhiZC05MGM1LWU5M2FiODJhMjFhY308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YzNlMDNhNWMtNTZjNy00NWZkLTg1NDMtZTVkMjMyNmI5MDdkfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFic3RyYWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFjY3UuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYXNkbC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxhc3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYml0c2V0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJvb2xvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYnl0ZXNfbWV0aG9kcy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxieXRlYXJyYXlvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYnl0ZXNvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY2VsbG9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjZXZhbC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjbGFzc29iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjb2RlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNvZGVjcy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjb21waWxlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNvbXBsZXhvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZGF0ZXRpbWUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZGVzY3JvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZGljdG9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkeW5hbWljX2Fubm90YXRpb25zLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGVudW1vYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZXJyY29kZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxldmFsLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGZpbGVvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZmlsZXV0aWxzLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGZsb2F0b2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGZyYW1lb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGZ1bmNvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZ2Vub2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGdyYW1pbml0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGdyYW1tYXIuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcaW1wb3J0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGludHJjaGVjay5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxpdGVyb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGxpc3RvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbG9uZ2ludHJlcHIuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbG9uZ29iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtYXJzaGFsLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1lbW9yeW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtZXRhZ3JhbW1hci5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtZXRob2RvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbW9kc3VwcG9ydC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtb2R1bGVvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbm9kZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb2JqaW1wbC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvcGNvZGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3NkZWZzLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhcnNldG9rLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGdlbi5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwZ2VuaGVhZGVycy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweV9jdXJzZXMuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlhcmVuYS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWNhcHN1bGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHljdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWRlYnVnLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZXJyb3JzLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZXhwYXQuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlmcGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlnZXRvcHQuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHltYXRoLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5dGltZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1hY3JvLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWVtLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5cG9ydC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0YXRlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RyY21wLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RydG9kLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGR0b2EuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcUHl0aG9uLWFzdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxQeXRob24uaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHl0aG9ucnVuLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5dGhyZWFkLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHJhbmdlb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHNldG9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzbGljZW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzdHJ1Y3RtZW1iZXIuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc3RydWN0c2VxLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHN5bXRhYmxlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHN5c21vZHVsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx0b2tlbi5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx0cmFjZWJhY2suaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdHVwbGVvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdWNuaGFzaC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx1bmljb2Rlb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHdlYWtyZWZvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX21hdGguaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmZpeGVkLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcdHJlZXMuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHpjb25mLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6Y29uZi5pbi5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcemxpYi5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcYWxnX2ppc3gwMjAxLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcY2prY29kZWNzLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcZW11X2ppc3gwMjEzXzIwMDAuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19jbi5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2hrLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfamlzeDAyMTNfcGFpci5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2pwLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3Nfa3IuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc190dy5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcY291bnQuaCI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGZhc3RzZWFyY2guaCI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGZpbmQuaCI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHBhcnRpdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcc3BsaXQuaCI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdW5pY29kZXR5cGVfZGIuaCI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBhcnNlclxwYXJzZXIuaCI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUGFyc2VyXHRva2VuaXplci5oIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQQ1xlcnJtYXAuaCI+CisgICAgICA8RmlsdGVyPlBDPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQQ1xweWNvbmZpZy5oIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxpbXBvcnRkbC5oIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cdGhyZWFkX250LmgiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbmFtZXNwYWNlb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cY29uZHZhci5oIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cY2V2YWxfZ2lsLmgiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29sbGVjdGlvbnNtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Nzdi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZnVuY3Rvb2xzbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9oZWFwcW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfanNvbi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbG9jYWxlbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9sc3Byb2YuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX21hdGguYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3BpY2tsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcmUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3N0cnVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfd2Vha3JlZi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xhcnJheW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xhdGV4aXRtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYXVkaW9vcC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xiaW5hc2NpaS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjbWF0aG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGF0ZXRpbWVtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXJybm9tb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmF1bHRoYW5kbGVyLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGdjbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGl0ZXJ0b29sc21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtYWluLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1hdGhtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcb3BlcmF0b3IuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccGFyc2VybW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzaGExbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzaGE1MTJtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2lnbmFsbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN5bXRhYmxlbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90aHJlYWRtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdGltZW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x4eHN1YnR5cGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemlwaW1wb3J0LmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGZpbGVpby5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGJ5dGVzaW8uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xzdHJpbmdpby5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xpb2Jhc2UuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZiYWNrLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcdHJlZXMuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHVuY29tcHIuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfY24uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2hrLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19pc28yMDIyLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19qcC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3Nfa3IuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX3R3LmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGFic3RyYWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGFjY3UuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYm9vbG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xieXRlc19tZXRob2RzLmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGJ5dGVhcnJheW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xieXRlc29iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjYXBzdWxlLmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNlbGxvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY2xhc3NvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY29kZW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjb21wbGV4b2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGRlc2Nyb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGRpY3RvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZW51bW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xleGNlcHRpb25zLmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGZpbGVvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZmxvYXRvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZnJhbWVvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZnVuY29iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xnZW5vYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcaXRlcm9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xsaXN0b2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGxvbmdvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbWVtb3J5b2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG1ldGhvZG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xtb2R1bGVvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG9ibWFsbG9jLmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHJhbmdlb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHNldG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzbGljZW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJ1Y3RzZXEuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdHVwbGVvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdHlwZW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x1bmljb2RlY3R5cGUuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdW5pY29kZW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x3ZWFrcmVmb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcYWNjZWxlci5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcYml0c2V0LmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxmaXJzdHNldHMuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGdyYW1tYXIuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGdyYW1tYXIxLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxsaXN0bm9kZS5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXG15cmVhZGxpbmUuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXG5vZGUuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXHBhcnNlci5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2V0b2suYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXHRva2VuaXplci5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3aW5yZWcuYyI+CisgICAgICA8RmlsdGVyPlBDPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xjb25maWcuYyI+CisgICAgICA8RmlsdGVyPlBDPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xkbF9udC5jIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGdldHBhdGhwLmMiPgorICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbXN2Y3J0bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXF93YXJuaW5ncy5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cYXNkbC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cYXN0LmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxibHRpbm1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cY2V2YWwuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvZGVjcy5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cY29tcGlsZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHluYW1pY19hbm5vdGF0aW9ucy5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHlubG9hZF93aW4uYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGVycm9ycy5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZmlsZXV0aWxzLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxmb3JtYXR0ZXJfdW5pY29kZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZnJvemVuLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxmdXR1cmUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldGFyZ3MuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldGNvbXBpbGVyLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRjb3B5cmlnaHQuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldG9wdC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0cGxhdGZvcm0uYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldHZlcnNpb24uYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdyYW1pbml0LmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxpbXBvcnQuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGltcG9ydGRsLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxtYXJzaGFsLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxtb2RzdXBwb3J0LmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxteXNucHJpbnRmLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxteXN0cnRvdWwuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHBlZXBob2xlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWFyZW5hLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWN0eXBlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWZwZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHltYXRoLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXRpbWUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RhdGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RyY21wLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cnRvZC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHRvYS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cUHl0aG9uLWFzdC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHl0aG9ucnVuLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxzdHJ1Y3RtZW1iZXIuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHN5bXRhYmxlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxzeXNtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRocmVhZC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cdHJhY2ViYWNrLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxyYW5kb20uYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfd2luYXBpLmMiPgorICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xuYW1lc3BhY2VvYmplY3QuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbncudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMTQ1NjkKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagpAQCAtMCwwICsxLDM0NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX08L1Byb2plY3RHdWlkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9ud19kLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9ud19kLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX2V4ZS5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xXaW5NYWluLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbncudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weXRob253LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTk4NjZmCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXRob253LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDIxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezA0MzRjZjExLWEzMTEtNGE5Mi04YTZjLTQxNjRhYTc5YTdmMn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2UxZDhlYTZiLWM2NWQtNDJmNC05ZWVkLTYwMTA4NDZlZDM3OH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX2V4ZS5yYyI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcV2luTWFpbi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvaiBiL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGUzNWE3Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qCkBAIC0wLDAgKzEsMjQ2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+cHl3bGF1bmNoZXI8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5d19kPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPFRhcmdldE5hbWU+cHl3X2Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8VGFyZ2V0TmFtZT5weXc8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5weXc8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5dzwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUztOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUztOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUztOREVCVUc7X1dJTjY0O19NX1g2NDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHO19XSU42NDtfTV9YNjQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xsYXVuY2hlci5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xsYXVuY2hlci5pY28iIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHlsYXVuY2hlci5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5d2xhdW5jaGVyLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGIyM2QyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwzMiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xsYXVuY2hlci5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXGxhdW5jaGVyLmljbyI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9Ob25lPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5bGF1bmNoZXIucmMiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3JlYWRtZS50eHQgYi9QQ2J1aWxkL3JlYWRtZS50eHQKaW5kZXggYzdlM2M3Mi4uZTc0OTQyOSAxMDA2NDQKLS0tIGEvUENidWlsZC9yZWFkbWUudHh0CisrKyBiL1BDYnVpbGQvcmVhZG1lLnR4dApAQCAtMSw0ICsxLDQgQEAKLUJ1aWxkaW5nIFB5dGhvbiB1c2luZyBWQysrIDkuMAorQnVpbGRpbmcgUHl0aG9uIHVzaW5nIFZDKysgMTAuMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFRoaXMgZGlyZWN0b3J5IGlzIHVzZWQgdG8gYnVpbGQgUHl0aG9uIGZvciBXaW4zMiBhbmQgeDY0IHBsYXRmb3JtcywgZS5nLiAKQEAgLTM3LDcgKzM3LDcgQEAKICAgIHJ1bm5pbmcgYSBQeXRob24gY29yZSBidWlsZGJvdCB0ZXN0IHNsYXZlOyBzZWUgU1VCUFJPSkVDVFMgYmVsb3cpCiAKIFdoZW4gdXNpbmcgdGhlIERlYnVnIHNldHRpbmcsIHRoZSBvdXRwdXQgZmlsZXMgaGF2ZSBhIF9kIGFkZGVkIHRvCi10aGVpciBuYW1lOiAgcHl0aG9uMzJfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uIEJvdGgKK3RoZWlyIG5hbWU6ICBweXRob24zM19kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gQm90aAogdGhlIGJ1aWxkIGFuZCBydCBiYXRjaCBmaWxlcyBhY2NlcHQgYSAtZCBvcHRpb24gZm9yIGRlYnVnIGJ1aWxkcy4KIAogVGhlIDMyYml0IGJ1aWxkcyBlbmQgdXAgaW4gdGhlIHNvbHV0aW9uIGZvbGRlciBQQ2J1aWxkIHdoaWxlIHRoZSB4NjQgYnVpbGRzCkBAIC02MiwxNyArNjIsMTEgQEAKIEMgUlVOVElNRQogLS0tLS0tLS0tCiAKLVZpc3VhbCBTdHVkaW8gMjAwOCB1c2VzIHZlcnNpb24gOSBvZiB0aGUgQyBydW50aW1lIChNU1ZDUlQ5KS4gIFRoZSBleGVjdXRhYmxlcwotYXJlIGxpbmtlZCB0byBhIENSVCAic2lkZSBieSBzaWRlIiBhc3NlbWJseSB3aGljaCBtdXN0IGJlIHByZXNlbnQgb24gdGhlIHRhcmdldAotbWFjaGluZS4gIFRoaXMgaXMgYXZhbGlibGUgdW5kZXIgdGhlIFZDL1JlZGlzdCBmb2xkZXIgb2YgeW91ciB2aXN1YWwgc3R1ZGlvCi1kaXN0cmlidXRpb24uIE9uIFhQIGFuZCBsYXRlciBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IHN1cHBvcnQKLXNpZGUtYnktc2lkZSBhc3NlbWJsaWVzIGl0IGlzIG5vdCBlbm91Z2ggdG8gaGF2ZSB0aGUgbXN2Y3J0OTAuZGxsIHByZXNlbnQsCi1pdCBoYXMgdG8gYmUgdGhlcmUgYXMgYSB3aG9sZSBhc3NlbWJseSwgdGhhdCBpcywgYSBmb2xkZXIgd2l0aCB0aGUgLmRsbAotYW5kIGEgLm1hbmlmZXN0LiAgQWxzbywgYSBjaGVjayBpcyBtYWRlIGZvciB0aGUgY29ycmVjdCB2ZXJzaW9uLgotVGhlcmVmb3JlLCBvbmUgc2hvdWxkIGRpc3RyaWJ1dGUgdGhpcyBhc3NlbWJseSB3aXRoIHRoZSBkbGxzLCBhbmQga2VlcAotaXQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiAgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBzeXN0ZW1zLCBvbmUgc2hvdWxkCi1hbHNvIHNldCB0aGUgUEFUSCB0byB0aGlzIGRpcmVjdG9yeSBzbyB0aGF0IHRoZSBkbGwgY2FuIGJlIGZvdW5kLgotRm9yIG1vcmUgaW5mbywgc2VlIHRoZSBSZWFkbWUgaW4gdGhlIFZDL1JlZGlzdCBmb2xkZXIuCitWaXN1YWwgU3R1ZGlvIDIwMTAgdXNlcyB2ZXJzaW9uIDEwIG9mIHRoZSBDIHJ1bnRpbWUgKE1TVkNSVDkpLiAgVGhlIGV4ZWN1dGFibGVzCitubyBsb25nZXIgdXNlIHRoZSAiU2lkZSBieSBTaWRlIiBhc3NlbWJsaWVzIHVzZWQgaW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlCitjb21waWxlci4gIFRoaXMgc2ltcGxpZmllcyBkaXN0cmlidXRpb24gb2YgYXBwbGljYXRpb25zLgorVGhlIHJ1biB0aW1lIGxpYnJhcmllcyBhcmUgYXZhbGlibGUgdW5kZXIgdGhlIFZDL1JlZGlzdCBmb2xkZXIgb2YgeW91ciB2aXN1YWwgc3R1ZGlvCitkaXN0cmlidXRpb24uIEZvciBtb3JlIGluZm8sIHNlZSB0aGUgUmVhZG1lIGluIHRoZSBWQy9SZWRpc3QgZm9sZGVyLgogCiBTVUJQUk9KRUNUUwogLS0tLS0tLS0tLS0KQEAgLTkyLDYgKzg2LDkgQEAKIF90ZXN0Y2FwaQogICAgIHRlc3RzIG9mIHRoZSBQeXRob24gQyBBUEksIHJ1biB2aWEgTGliL3Rlc3QvdGVzdF9jYXBpLnB5LCBhbmQKICAgICBpbXBsZW1lbnRlZCBieSBtb2R1bGUgTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYworX3Rlc3RidWZmZXIKKyAgICBidWZmZXIgcHJvdG9jb2wgdGVzdHMsIHJ1biB2aWEgTGliL3Rlc3QvdGVzdF9idWZmZXIucHksIGFuZAorICAgIGltcGxlbWVudGVkIGJ5IG1vZHVsZSBNb2R1bGVzL190ZXN0YnVmZmVyLmMKIHB5ZXhwYXQKICAgICBQeXRob24gd3JhcHBlciBmb3IgYWNjZWxlcmF0ZWQgWE1MIHBhcnNpbmcsIHdoaWNoIGluY29ycG9yYXRlcyBzdGFibGUKICAgICBjb2RlIGZyb20gdGhlIEV4cGF0IHByb2plY3Q6ICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2V4cGF0LwpAQCAtMTEyLDkgKzEwOSw5IEBACiAgICAgcHJlLWJ1aWx0IFRjbC9UayBpbiBlaXRoZXIgLi5cLi5cdGNsdGsgZm9yIDMyLWJpdCBvciAuLlwuLlx0Y2x0azY0IGZvcgogICAgIDY0LWJpdCAocmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkpLiAgU2VlIGJlbG93IGZvciBpbnN0cnVjdGlvbnMgdG8gYnVpbGQKICAgICBUY2wvVGsuIAotYnoyCi0gICAgUHl0aG9uIHdyYXBwZXIgZm9yIHRoZSBsaWJiejIgY29tcHJlc3Npb24gbGlicmFyeS4gIEhvbWVwYWdlCi0gICAgICAgIGh0dHA6Ly9zb3VyY2VzLnJlZGhhdC5jb20vYnppcDIvCitfYnoyCisgICAgUHl0aG9uIHdyYXBwZXIgZm9yIHRoZSBsaWJiemlwMiBjb21wcmVzc2lvbiBsaWJyYXJ5LiAgSG9tZXBhZ2UKKyAgICAgICAgaHR0cDovL3d3dy5iemlwLm9yZy8KICAgICBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIHB5dGhvbi5vcmcgY29weSBpbnRvIHRoZSBkaXN0CiAgICAgZGlyZWN0b3J5OgogCkBAIC0xMzMsMTMgKzEzMCwxOSBAQAogCiAgICAgQWxsIG9mIHRoaXMgbWFuYWdlZCB0byBidWlsZCBsaWJiejIubGliIGluIAogICAgIGJ6aXAyLTEuMC42XCRwbGF0Zm9ybS0kY29uZmlndXJhdGlvblwsIHdoaWNoIHRoZSBQeXRob24gcHJvamVjdCBsaW5rcyBpbi4KK19sem1hCisgICAgUHl0aG9uIHdyYXBwZXIgZm9yIHRoZSBsaWJsem1hIGNvbXByZXNzaW9uIGxpYnJhcnkuCisKKyAgICBEb3dubG9hZCB0aGUgcHJlLWJ1aWx0IFdpbmRvd3MgYmluYXJpZXMgZnJvbSBodHRwOi8vdHVrYWFuaS5vcmcveHovLCBhbmQKKyAgICBleHRyYWN0IHRvIC4uXHh6LTUuMC4zLiBJZiB5b3UgYXJlIHVzaW5nIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBsaWJsem1hLAorICAgIGl0IHdpbGwgYmUgbmVjZXNzYXJ5IHRvIHJlbmFtZSB0aGUgZGlyZWN0b3J5IGZyb20geHotPFZFUlNJT04+IHRvIHh6LTUuMC4zLgogCiBfc3NsCiAgICAgUHl0aG9uIHdyYXBwZXIgZm9yIHRoZSBzZWN1cmUgc29ja2V0cyBsaWJyYXJ5LgogCiAgICAgR2V0IHRoZSBzb3VyY2UgY29kZSB0aHJvdWdoCiAKLSAgICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9vcGVuc3NsLTEuMC4wagorICAgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL29wZW5zc2wtMS4wLjFjCiAKICAgICAqKiBOT1RFOiBpZiB5b3UgdXNlIHRoZSBUb29sc1xidWlsZGJvdFxleHRlcm5hbCgtYW1kNjQpLmJhdCBhcHByb2FjaCBmb3IKICAgICBvYnRhaW5pbmcgZXh0ZXJuYWwgc291cmNlcyB0aGVuIHlvdSBkb24ndCBuZWVkIHRvIG1hbnVhbGx5IGdldCB0aGUgc291cmNlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3JlbGVhc2UucHJvcHMgYi9QQ2J1aWxkL3JlbGVhc2UucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNmZTNlNAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcmVsZWFzZS5wcm9wcwpAQCAtMCwwICsxLDE5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4KKyAgICA8UHlEZWJ1Z0V4dCAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeURlYnVnRXh0Ij4KKyAgICAgIDxWYWx1ZT4kKFB5RGVidWdFeHQpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc2VsZWN0LnZjeHByb2ogYi9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNDkyM2MKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qCkBAIC0wLDAgKzEsMjM0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+c2VsZWN0PC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc2VsZWN0LnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvc2VsZWN0LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWEyZmM4Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zZWxlY3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezk4MzQ2MDc3LTkwMGMtNGM3YS04NTJmLWEyMzQ3MGUzN2I0MH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMucHJvcHMgYi9QQ2J1aWxkL3NxbGl0ZTMucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNlZTAyYwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc3FsaXRlMy5wcm9wcwpAQCAtMCwwICsxLDE2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5TUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMTwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2ogYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWYwMTBkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKQEAgLTAsMCArMSwyNDAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5zcWxpdGUzPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpX2QuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlM2V4dC5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJraWxsX3B5dGhvbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0Pns2ZGUxMDc0NC1lMzk2LTQwYTUtYjRlMi0xYjY5YWE3YzhkMzF9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NjgwYzEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2NlNWI2NDlkLWE2ZjctNDQ1OS05NDI1LWM4ODM3OTVkNzlkZn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBlODQyZmUyLTE3NmItNGU4My05ZDFmLTBhZDEzYTg1OWVmZH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlM2V4dC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zc2wudmN4cHJvaiBiL1BDYnVpbGQvc3NsLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFmZDc4MAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc3NsLnZjeHByb2oKQEAgLTAsMCArMSwyMjEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5zc2w8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+TWFrZUZpbGVQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2IxMWQ3NTBmLWNkMWYtNGE5Ni04NWNlLWU2OWE1YzUyNTlmOX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qIGIvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZDUyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2oKQEAgLTAsMCArMSwyMjIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT51bmljb2RlZGF0YTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhX2RiLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGU2NDBlCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YjkzOWE4ZjEtY2NkNy00MjBhLTk3NGEtMjQzNjA2ZGNjZDc0fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZTJjMDU1YmItZWM2Mi00YmJjLWFhMWMtZDg4ZGE0ZDRhZDFjfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhX2RiLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZW5hbWVfZGIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGEuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3ZzOXRvMTAucHkgYi9QQ2J1aWxkL3ZzOXRvMTAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJmODMyYQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdnM5dG8xMC5weQpAQCAtMCwwICsxLDU2IEBACisjUnVuIHRoaXMgZmlsZSBhZnRlciBhdXRvbWF0aWMgY29udmVydHNpb24gb2YgdGhlIFZpc3VhbFN0dWRpbyAyMDA4IHNvbHV0aW9uIGJ5IFZpc3VhbFN0dWRpbyAyMDEwLgorI1RoaXMgY2FuIGJlIGRvbmUgd2hlbmV2ZXIgdGhlIDIwMDggc29sdXRpb24gY2hhbmdlcy4KKyNJdCB3aWxsIG1ha2UgdGhlIG5lY2Vzc2FyeSBjbGVhbnVwIGFuZCB1cGRhdGVzIHRvIHRoZSB2Y3hwcm9qIGZpbGVzCisjdGhlIC5wcm9wcyBmaWxlcyBuZWVkIHRvIGJlIG1haW50YWluZWQgYnkgaGFuZCBpZiB0aGUgLnZzcHJvcHMgZmlsZXMgY2hhbmdlCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKKworZGVmIHZzOXRvMTAoc3JjLCBkZXN0KToKKyAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKHNyYyk6CisgICAgICAgIHBhdGgsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKKyAgICAgICAgaWYgZXh0Lmxvd2VyKCkgbm90IGluICgnLnZjeHByb2onLCk6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oc3JjLCBuYW1lKSkKKyAgICAgICAgZGVzdG5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihkZXN0LCBuYW1lKSkKKyAgICAgICAgcHJpbnQoIiVzIC0+ICVzIiAlIChmaWxlbmFtZSwgZGVzdG5hbWUpKQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGFzdGxpbmUgPSBiIiIKKyAgICAgICAgaW1wb3J0Z3JvdXAgPSBGYWxzZQorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGZpbjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbjoKKyAgICAgICAgICAgICAgICAjcmVtb3ZlIHJlZHVuZGFudCBsaW5rZXIgb3V0cHV0IGluZm8KKyAgICAgICAgICAgICAgICBpZiBiIjxPdXRwdXRMaW5lPiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBiIjxQcm9ncmFtRGF0YWJhc2VGaWxlPiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBiIjxJbXBvcnRMaWJyYXJ5PiIgaW4gbGluZSBhbmQgYiI8L0ltcG9ydExpYnJhcnk+IiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgI2FkZCBuZXcgcHJvcGVydHkgc2hlZXQgdG8gdGhlIHB5dGhvbmNvcmUKKyAgICAgICAgICAgICAgICBpZiBpbXBvcnRncm91cCBhbmQgInB5dGhvbmNvcmUiIGluIG5hbWUubG93ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgYiI8L0ltcG9ydEdyb3VwPiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGIiZGVidWcucHJvcHMiIGluIGxhc3RsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChiJyAgICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbmNvcmVfZC5wcm9wcyIgLz5cclxuJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgYiJweXRob25jb3JlIiBub3QgaW4gbGFzdGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGInICAgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uY29yZS5wcm9wcyIgLz5cclxuJykKKyAgICAgICAgICAgICAgICBpZiBiIjxJbXBvcnRHcm91cCBDb25kaXRpb24iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydGdyb3VwID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsaWYgYiI8L0ltcG9ydEdyb3VwPiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0Z3JvdXAgPSBGYWxzZQorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgICAgIGxhc3RsaW5lID0gbGluZQorICAgICAgICB3aXRoIG9wZW4oZGVzdG5hbWUsICd3YicpIGFzIGZvdXQ6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3JjID0gIi4iIGlmIGxlbihzeXMuYXJndikgPCAyIGVsc2Ugc3lzLmFyZ3ZbMV0KKyAgICBuYW1lID0gb3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLmFic3BhdGgoc3JjKSkKKyAgICBkZXN0ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzcmMsICIuLiIsIG5hbWUgKyAiVXBkIikpCisgICAgb3MubWFrZWRpcnMoZGVzdCkKKyAgICB2czl0bzEwKHNyYywgZGVzdCkKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvaiBiL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWFmZTIyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qCkBAIC0wLDAgKzEsMjg3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+dzl4cG9wZW48L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcdzl4cG9wZW4uYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWM2N2FkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YWJjMmRmZmQtM2YyYS00N2JkLWI4OWItMDMxNGM5OWVmMjFlfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3OXhwb3Blbi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvd2luc291bmQudmN4cHJvaiBiL1BDYnVpbGQvd2luc291bmQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjUxOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qCkBAIC0wLDAgKzEsMjE4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+d2luc291bmQ8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHdpbnNvdW5kLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvd2luc291bmQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMDg5MzEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcd2luc291bmQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3g2NC5wcm9wcyBiL1BDYnVpbGQveDY0LnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4OWQ5NWIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3g2NC5wcm9wcwpAQCAtMCwwICsxLDIwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiBDb25kaXRpb249IickKEhPU1RfUFlUSE9OKSchPScnIj4KKyAgICA8UHl0aG9uRXhlPiQoSE9TVF9QWVRIT04pPC9QeXRob25FeGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vVVNFQ0w6TVNfT1BURVJPTiAvR1MtICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lONjQ7X01fWDY0OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHl0aG9uRXhlIj4KKyAgICAgIDxWYWx1ZT4kKFB5dGhvbkV4ZSk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmJjMjBkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagpAQCAtMCwwICsxLDE5NCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+eHhsaW1pdGVkPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19XSU4zMjtfV0lORExMO1B5X0xJTUlURURfQVBJPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9MSU1JVEVEX0FQSTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9MSU1JVEVEX0FQSTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHh4bGltaXRlZC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFkYjQ2OAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlYjVlZWJjNy0zNzg3LTRmOGYtYjI4Mi0yMDRkYjI5NjJjYzN9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNceHhsaW1pdGVkLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGFyc2VyL1B5dGhvbi5hc2RsIGIvUGFyc2VyL1B5dGhvbi5hc2RsCmluZGV4IDk0MDdiMmYuLjZiMDZkZWMgMTAwNjQ0Ci0tLSBhL1BhcnNlci9QeXRob24uYXNkbAorKysgYi9QYXJzZXIvUHl0aG9uLmFzZGwKQEAgLTEsMTE5ICsxLDEyMCBAQAotLS0gQVNETCdzIGZvdXIgYnVpbHRpbiB0eXBlcyBhcmUgaWRlbnRpZmllciwgaW50LCBzdHJpbmcsIG9iamVjdAorLS0gQVNETCdzIGZpdmUgYnVpbHRpbiB0eXBlcyBhcmUgaWRlbnRpZmllciwgaW50LCBzdHJpbmcsIGJ5dGVzLCBvYmplY3QKIAotbW9kdWxlIFB5dGhvbiB2ZXJzaW9uICIkUmV2aXNpb24kIgorbW9kdWxlIFB5dGhvbgogewotCW1vZCA9IE1vZHVsZShzdG10KiBib2R5KQotCSAgICB8IEludGVyYWN0aXZlKHN0bXQqIGJvZHkpCi0JICAgIHwgRXhwcmVzc2lvbihleHByIGJvZHkpCisgICAgbW9kID0gTW9kdWxlKHN0bXQqIGJvZHkpCisgICAgICAgIHwgSW50ZXJhY3RpdmUoc3RtdCogYm9keSkKKyAgICAgICAgfCBFeHByZXNzaW9uKGV4cHIgYm9keSkKIAotCSAgICAtLSBub3QgcmVhbGx5IGFuIGFjdHVhbCBub2RlIGJ1dCB1c2VmdWwgaW4gSnl0aG9uJ3MgdHlwZXN5c3RlbS4KLQkgICAgfCBTdWl0ZShzdG10KiBib2R5KQorICAgICAgICAtLSBub3QgcmVhbGx5IGFuIGFjdHVhbCBub2RlIGJ1dCB1c2VmdWwgaW4gSnl0aG9uJ3MgdHlwZXN5c3RlbS4KKyAgICAgICAgfCBTdWl0ZShzdG10KiBib2R5KQogCi0Jc3RtdCA9IEZ1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzIGFyZ3MsIAorICAgIHN0bXQgPSBGdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50cyBhcmdzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXQqIGJvZHksIGV4cHIqIGRlY29yYXRvcl9saXN0LCBleHByPyByZXR1cm5zKQotCSAgICAgIHwgQ2xhc3NEZWYoaWRlbnRpZmllciBuYW1lLCAKLQkJCSBleHByKiBiYXNlcywKLQkJCSBrZXl3b3JkKiBrZXl3b3JkcywKLQkJCSBleHByPyBzdGFyYXJncywKLQkJCSBleHByPyBrd2FyZ3MsCi0JCQkgc3RtdCogYm9keSwKLQkJCSBleHByKiBkZWNvcmF0b3JfbGlzdCkKLQkgICAgICB8IFJldHVybihleHByPyB2YWx1ZSkKKyAgICAgICAgICB8IENsYXNzRGVmKGlkZW50aWZpZXIgbmFtZSwgCisgICAgICAgICAgICAgZXhwciogYmFzZXMsCisgICAgICAgICAgICAga2V5d29yZCoga2V5d29yZHMsCisgICAgICAgICAgICAgZXhwcj8gc3RhcmFyZ3MsCisgICAgICAgICAgICAgZXhwcj8ga3dhcmdzLAorICAgICAgICAgICAgIHN0bXQqIGJvZHksCisgICAgICAgICAgICAgZXhwciogZGVjb3JhdG9yX2xpc3QpCisgICAgICAgICAgfCBSZXR1cm4oZXhwcj8gdmFsdWUpCiAKLQkgICAgICB8IERlbGV0ZShleHByKiB0YXJnZXRzKQotCSAgICAgIHwgQXNzaWduKGV4cHIqIHRhcmdldHMsIGV4cHIgdmFsdWUpCi0JICAgICAgfCBBdWdBc3NpZ24oZXhwciB0YXJnZXQsIG9wZXJhdG9yIG9wLCBleHByIHZhbHVlKQorICAgICAgICAgIHwgRGVsZXRlKGV4cHIqIHRhcmdldHMpCisgICAgICAgICAgfCBBc3NpZ24oZXhwciogdGFyZ2V0cywgZXhwciB2YWx1ZSkKKyAgICAgICAgICB8IEF1Z0Fzc2lnbihleHByIHRhcmdldCwgb3BlcmF0b3Igb3AsIGV4cHIgdmFsdWUpCiAKLQkgICAgICAtLSB1c2UgJ29yZWxzZScgYmVjYXVzZSBlbHNlIGlzIGEga2V5d29yZCBpbiB0YXJnZXQgbGFuZ3VhZ2VzCi0JICAgICAgfCBGb3IoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQotCSAgICAgIHwgV2hpbGUoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCi0JICAgICAgfCBJZihleHByIHRlc3QsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKLQkgICAgICB8IFdpdGgoZXhwciBjb250ZXh0X2V4cHIsIGV4cHI/IG9wdGlvbmFsX3ZhcnMsIHN0bXQqIGJvZHkpCisgICAgICAgICAgLS0gdXNlICdvcmVsc2UnIGJlY2F1c2UgZWxzZSBpcyBhIGtleXdvcmQgaW4gdGFyZ2V0IGxhbmd1YWdlcworICAgICAgICAgIHwgRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKKyAgICAgICAgICB8IFdoaWxlKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQorICAgICAgICAgIHwgSWYoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCisgICAgICAgICAgfCBXaXRoKHdpdGhpdGVtKiBpdGVtcywgc3RtdCogYm9keSkKIAotCSAgICAgIHwgUmFpc2UoZXhwcj8gZXhjLCBleHByPyBjYXVzZSkKLQkgICAgICB8IFRyeUV4Y2VwdChzdG10KiBib2R5LCBleGNlcHRoYW5kbGVyKiBoYW5kbGVycywgc3RtdCogb3JlbHNlKQotCSAgICAgIHwgVHJ5RmluYWxseShzdG10KiBib2R5LCBzdG10KiBmaW5hbGJvZHkpCi0JICAgICAgfCBBc3NlcnQoZXhwciB0ZXN0LCBleHByPyBtc2cpCisgICAgICAgICAgfCBSYWlzZShleHByPyBleGMsIGV4cHI/IGNhdXNlKQorICAgICAgICAgIHwgVHJ5KHN0bXQqIGJvZHksIGV4Y2VwdGhhbmRsZXIqIGhhbmRsZXJzLCBzdG10KiBvcmVsc2UsIHN0bXQqIGZpbmFsYm9keSkKKyAgICAgICAgICB8IEFzc2VydChleHByIHRlc3QsIGV4cHI/IG1zZykKIAotCSAgICAgIHwgSW1wb3J0KGFsaWFzKiBuYW1lcykKLQkgICAgICB8IEltcG9ydEZyb20oaWRlbnRpZmllcj8gbW9kdWxlLCBhbGlhcyogbmFtZXMsIGludD8gbGV2ZWwpCisgICAgICAgICAgfCBJbXBvcnQoYWxpYXMqIG5hbWVzKQorICAgICAgICAgIHwgSW1wb3J0RnJvbShpZGVudGlmaWVyPyBtb2R1bGUsIGFsaWFzKiBuYW1lcywgaW50PyBsZXZlbCkKIAotCSAgICAgIHwgR2xvYmFsKGlkZW50aWZpZXIqIG5hbWVzKQotCSAgICAgIHwgTm9ubG9jYWwoaWRlbnRpZmllciogbmFtZXMpCi0JICAgICAgfCBFeHByKGV4cHIgdmFsdWUpCi0JICAgICAgfCBQYXNzIHwgQnJlYWsgfCBDb250aW51ZQorICAgICAgICAgIHwgR2xvYmFsKGlkZW50aWZpZXIqIG5hbWVzKQorICAgICAgICAgIHwgTm9ubG9jYWwoaWRlbnRpZmllciogbmFtZXMpCisgICAgICAgICAgfCBFeHByKGV4cHIgdmFsdWUpCisgICAgICAgICAgfCBQYXNzIHwgQnJlYWsgfCBDb250aW51ZQogCi0JICAgICAgLS0gWFhYIEp5dGhvbiB3aWxsIGJlIGRpZmZlcmVudAotCSAgICAgIC0tIGNvbF9vZmZzZXQgaXMgdGhlIGJ5dGUgb2Zmc2V0IGluIHRoZSB1dGY4IHN0cmluZyB0aGUgcGFyc2VyIHVzZXMKLQkgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKKyAgICAgICAgICAtLSBYWFggSnl0aG9uIHdpbGwgYmUgZGlmZmVyZW50CisgICAgICAgICAgLS0gY29sX29mZnNldCBpcyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIHV0Zjggc3RyaW5nIHRoZSBwYXJzZXIgdXNlcworICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogCi0JICAgICAgLS0gQm9vbE9wKCkgY2FuIHVzZSBsZWZ0ICYgcmlnaHQ/Ci0JZXhwciA9IEJvb2xPcChib29sb3Agb3AsIGV4cHIqIHZhbHVlcykKLQkgICAgIHwgQmluT3AoZXhwciBsZWZ0LCBvcGVyYXRvciBvcCwgZXhwciByaWdodCkKLQkgICAgIHwgVW5hcnlPcCh1bmFyeW9wIG9wLCBleHByIG9wZXJhbmQpCi0JICAgICB8IExhbWJkYShhcmd1bWVudHMgYXJncywgZXhwciBib2R5KQotCSAgICAgfCBJZkV4cChleHByIHRlc3QsIGV4cHIgYm9keSwgZXhwciBvcmVsc2UpCi0JICAgICB8IERpY3QoZXhwcioga2V5cywgZXhwciogdmFsdWVzKQotCSAgICAgfCBTZXQoZXhwciogZWx0cykKLQkgICAgIHwgTGlzdENvbXAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCi0JICAgICB8IFNldENvbXAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCi0JICAgICB8IERpY3RDb21wKGV4cHIga2V5LCBleHByIHZhbHVlLCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQotCSAgICAgfCBHZW5lcmF0b3JFeHAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCi0JICAgICAtLSB0aGUgZ3JhbW1hciBjb25zdHJhaW5zIHdoZXJlIHlpZWxkIGV4cHJlc3Npb25zIGNhbiBvY2N1cgotCSAgICAgfCBZaWVsZChleHByPyB2YWx1ZSkKLQkgICAgIC0tIG5lZWQgc2VxdWVuY2VzIGZvciBjb21wYXJlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KLQkgICAgIC0tIHggPCA0IDwgMyBhbmQgKHggPCA0KSA8IDMKLQkgICAgIHwgQ29tcGFyZShleHByIGxlZnQsIGNtcG9wKiBvcHMsIGV4cHIqIGNvbXBhcmF0b3JzKQotCSAgICAgfCBDYWxsKGV4cHIgZnVuYywgZXhwciogYXJncywga2V5d29yZCoga2V5d29yZHMsCi0JCQkgZXhwcj8gc3RhcmFyZ3MsIGV4cHI/IGt3YXJncykKLQkgICAgIHwgTnVtKG9iamVjdCBuKSAtLSBhIG51bWJlciBhcyBhIFB5T2JqZWN0LgotCSAgICAgfCBTdHIoc3RyaW5nIHMpIC0tIG5lZWQgdG8gc3BlY2lmeSByYXcsIHVuaWNvZGUsIGV0Yz8KLQkgICAgIHwgQnl0ZXMoc3RyaW5nIHMpCi0JICAgICB8IEVsbGlwc2lzCi0JICAgICAtLSBvdGhlciBsaXRlcmFscz8gYm9vbHM/CisgICAgICAgICAgLS0gQm9vbE9wKCkgY2FuIHVzZSBsZWZ0ICYgcmlnaHQ/CisgICAgZXhwciA9IEJvb2xPcChib29sb3Agb3AsIGV4cHIqIHZhbHVlcykKKyAgICAgICAgIHwgQmluT3AoZXhwciBsZWZ0LCBvcGVyYXRvciBvcCwgZXhwciByaWdodCkKKyAgICAgICAgIHwgVW5hcnlPcCh1bmFyeW9wIG9wLCBleHByIG9wZXJhbmQpCisgICAgICAgICB8IExhbWJkYShhcmd1bWVudHMgYXJncywgZXhwciBib2R5KQorICAgICAgICAgfCBJZkV4cChleHByIHRlc3QsIGV4cHIgYm9keSwgZXhwciBvcmVsc2UpCisgICAgICAgICB8IERpY3QoZXhwcioga2V5cywgZXhwciogdmFsdWVzKQorICAgICAgICAgfCBTZXQoZXhwciogZWx0cykKKyAgICAgICAgIHwgTGlzdENvbXAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCisgICAgICAgICB8IFNldENvbXAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCisgICAgICAgICB8IERpY3RDb21wKGV4cHIga2V5LCBleHByIHZhbHVlLCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQorICAgICAgICAgfCBHZW5lcmF0b3JFeHAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCisgICAgICAgICAtLSB0aGUgZ3JhbW1hciBjb25zdHJhaW5zIHdoZXJlIHlpZWxkIGV4cHJlc3Npb25zIGNhbiBvY2N1cgorICAgICAgICAgfCBZaWVsZChleHByPyB2YWx1ZSkKKyAgICAgICAgICAgICB8IFlpZWxkRnJvbShleHByPyB2YWx1ZSkKKyAgICAgICAgIC0tIG5lZWQgc2VxdWVuY2VzIGZvciBjb21wYXJlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgIC0tIHggPCA0IDwgMyBhbmQgKHggPCA0KSA8IDMKKyAgICAgICAgIHwgQ29tcGFyZShleHByIGxlZnQsIGNtcG9wKiBvcHMsIGV4cHIqIGNvbXBhcmF0b3JzKQorICAgICAgICAgfCBDYWxsKGV4cHIgZnVuYywgZXhwciogYXJncywga2V5d29yZCoga2V5d29yZHMsCisgICAgICAgICAgICAgZXhwcj8gc3RhcmFyZ3MsIGV4cHI/IGt3YXJncykKKyAgICAgICAgIHwgTnVtKG9iamVjdCBuKSAtLSBhIG51bWJlciBhcyBhIFB5T2JqZWN0LgorICAgICAgICAgfCBTdHIoc3RyaW5nIHMpIC0tIG5lZWQgdG8gc3BlY2lmeSByYXcsIHVuaWNvZGUsIGV0Yz8KKyAgICAgICAgIHwgQnl0ZXMoYnl0ZXMgcykKKyAgICAgICAgIHwgRWxsaXBzaXMKKyAgICAgICAgIC0tIG90aGVyIGxpdGVyYWxzPyBib29scz8KIAotCSAgICAgLS0gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uIGNhbiBhcHBlYXIgaW4gYXNzaWdubWVudCBjb250ZXh0Ci0JICAgICB8IEF0dHJpYnV0ZShleHByIHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dCBjdHgpCi0JICAgICB8IFN1YnNjcmlwdChleHByIHZhbHVlLCBzbGljZSBzbGljZSwgZXhwcl9jb250ZXh0IGN0eCkKLQkgICAgIHwgU3RhcnJlZChleHByIHZhbHVlLCBleHByX2NvbnRleHQgY3R4KQotCSAgICAgfCBOYW1lKGlkZW50aWZpZXIgaWQsIGV4cHJfY29udGV4dCBjdHgpCi0JICAgICB8IExpc3QoZXhwciogZWx0cywgZXhwcl9jb250ZXh0IGN0eCkgCi0JICAgICB8IFR1cGxlKGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpCisgICAgICAgICAtLSB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24gY2FuIGFwcGVhciBpbiBhc3NpZ25tZW50IGNvbnRleHQKKyAgICAgICAgIHwgQXR0cmlidXRlKGV4cHIgdmFsdWUsIGlkZW50aWZpZXIgYXR0ciwgZXhwcl9jb250ZXh0IGN0eCkKKyAgICAgICAgIHwgU3Vic2NyaXB0KGV4cHIgdmFsdWUsIHNsaWNlIHNsaWNlLCBleHByX2NvbnRleHQgY3R4KQorICAgICAgICAgfCBTdGFycmVkKGV4cHIgdmFsdWUsIGV4cHJfY29udGV4dCBjdHgpCisgICAgICAgICB8IE5hbWUoaWRlbnRpZmllciBpZCwgZXhwcl9jb250ZXh0IGN0eCkKKyAgICAgICAgIHwgTGlzdChleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KSAKKyAgICAgICAgIHwgVHVwbGUoZXhwciogZWx0cywgZXhwcl9jb250ZXh0IGN0eCkKIAotCSAgICAgIC0tIGNvbF9vZmZzZXQgaXMgdGhlIGJ5dGUgb2Zmc2V0IGluIHRoZSB1dGY4IHN0cmluZyB0aGUgcGFyc2VyIHVzZXMKLQkgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKKyAgICAgICAgICAtLSBjb2xfb2Zmc2V0IGlzIHRoZSBieXRlIG9mZnNldCBpbiB0aGUgdXRmOCBzdHJpbmcgdGhlIHBhcnNlciB1c2VzCisgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiAKLQlleHByX2NvbnRleHQgPSBMb2FkIHwgU3RvcmUgfCBEZWwgfCBBdWdMb2FkIHwgQXVnU3RvcmUgfCBQYXJhbQorICAgIGV4cHJfY29udGV4dCA9IExvYWQgfCBTdG9yZSB8IERlbCB8IEF1Z0xvYWQgfCBBdWdTdG9yZSB8IFBhcmFtCiAKLQlzbGljZSA9IFNsaWNlKGV4cHI/IGxvd2VyLCBleHByPyB1cHBlciwgZXhwcj8gc3RlcCkgCi0JICAgICAgfCBFeHRTbGljZShzbGljZSogZGltcykgCi0JICAgICAgfCBJbmRleChleHByIHZhbHVlKSAKKyAgICBzbGljZSA9IFNsaWNlKGV4cHI/IGxvd2VyLCBleHByPyB1cHBlciwgZXhwcj8gc3RlcCkgCisgICAgICAgICAgfCBFeHRTbGljZShzbGljZSogZGltcykgCisgICAgICAgICAgfCBJbmRleChleHByIHZhbHVlKSAKIAotCWJvb2xvcCA9IEFuZCB8IE9yIAorICAgIGJvb2xvcCA9IEFuZCB8IE9yIAogCi0Jb3BlcmF0b3IgPSBBZGQgfCBTdWIgfCBNdWx0IHwgRGl2IHwgTW9kIHwgUG93IHwgTFNoaWZ0IAorICAgIG9wZXJhdG9yID0gQWRkIHwgU3ViIHwgTXVsdCB8IERpdiB8IE1vZCB8IFBvdyB8IExTaGlmdCAKICAgICAgICAgICAgICAgICAgfCBSU2hpZnQgfCBCaXRPciB8IEJpdFhvciB8IEJpdEFuZCB8IEZsb29yRGl2CiAKLQl1bmFyeW9wID0gSW52ZXJ0IHwgTm90IHwgVUFkZCB8IFVTdWIKKyAgICB1bmFyeW9wID0gSW52ZXJ0IHwgTm90IHwgVUFkZCB8IFVTdWIKIAotCWNtcG9wID0gRXEgfCBOb3RFcSB8IEx0IHwgTHRFIHwgR3QgfCBHdEUgfCBJcyB8IElzTm90IHwgSW4gfCBOb3RJbgorICAgIGNtcG9wID0gRXEgfCBOb3RFcSB8IEx0IHwgTHRFIHwgR3QgfCBHdEUgfCBJcyB8IElzTm90IHwgSW4gfCBOb3RJbgogCi0JY29tcHJlaGVuc2lvbiA9IChleHByIHRhcmdldCwgZXhwciBpdGVyLCBleHByKiBpZnMpCisgICAgY29tcHJlaGVuc2lvbiA9IChleHByIHRhcmdldCwgZXhwciBpdGVyLCBleHByKiBpZnMpCiAKLQktLSBub3Qgc3VyZSB3aGF0IHRvIGNhbGwgdGhlIGZpcnN0IGFyZ3VtZW50IGZvciByYWlzZSBhbmQgZXhjZXB0Ci0JZXhjZXB0aGFuZGxlciA9IEV4Y2VwdEhhbmRsZXIoZXhwcj8gdHlwZSwgaWRlbnRpZmllcj8gbmFtZSwgc3RtdCogYm9keSkKLQkgICAgICAgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCisgICAgZXhjZXB0aGFuZGxlciA9IEV4Y2VwdEhhbmRsZXIoZXhwcj8gdHlwZSwgaWRlbnRpZmllcj8gbmFtZSwgc3RtdCogYm9keSkKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiAKLQlhcmd1bWVudHMgPSAoYXJnKiBhcmdzLCBpZGVudGlmaWVyPyB2YXJhcmcsIGV4cHI/IHZhcmFyZ2Fubm90YXRpb24sCisgICAgYXJndW1lbnRzID0gKGFyZyogYXJncywgaWRlbnRpZmllcj8gdmFyYXJnLCBleHByPyB2YXJhcmdhbm5vdGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgYXJnKiBrd29ubHlhcmdzLCBpZGVudGlmaWVyPyBrd2FyZywKICAgICAgICAgICAgICAgICAgICAgIGV4cHI/IGt3YXJnYW5ub3RhdGlvbiwgZXhwciogZGVmYXVsdHMsCiAgICAgICAgICAgICAgICAgICAgICBleHByKiBrd19kZWZhdWx0cykKLQlhcmcgPSAoaWRlbnRpZmllciBhcmcsIGV4cHI/IGFubm90YXRpb24pCisgICAgYXJnID0gKGlkZW50aWZpZXIgYXJnLCBleHByPyBhbm5vdGF0aW9uKQogCi0gICAgICAgIC0tIGtleXdvcmQgYXJndW1lbnRzIHN1cHBsaWVkIHRvIGNhbGwKLSAgICAgICAga2V5d29yZCA9IChpZGVudGlmaWVyIGFyZywgZXhwciB2YWx1ZSkKKyAgICAtLSBrZXl3b3JkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBjYWxsCisgICAga2V5d29yZCA9IChpZGVudGlmaWVyIGFyZywgZXhwciB2YWx1ZSkKIAotICAgICAgICAtLSBpbXBvcnQgbmFtZSB3aXRoIG9wdGlvbmFsICdhcycgYWxpYXMuCi0gICAgICAgIGFsaWFzID0gKGlkZW50aWZpZXIgbmFtZSwgaWRlbnRpZmllcj8gYXNuYW1lKQorICAgIC0tIGltcG9ydCBuYW1lIHdpdGggb3B0aW9uYWwgJ2FzJyBhbGlhcy4KKyAgICBhbGlhcyA9IChpZGVudGlmaWVyIG5hbWUsIGlkZW50aWZpZXI/IGFzbmFtZSkKKworICAgIHdpdGhpdGVtID0gKGV4cHIgY29udGV4dF9leHByLCBleHByPyBvcHRpb25hbF92YXJzKQogfQogCmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbC5weSBiL1BhcnNlci9hc2RsLnB5CmluZGV4IDdiNGUyZGMuLjA4YWEwNWIgMTAwNjQ0Ci0tLSBhL1BhcnNlci9hc2RsLnB5CisrKyBiL1BhcnNlci9hc2RsLnB5CkBAIC0xMTQsMjggKzExNCwyMCBAQAogICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IodG9rLmxpbmVubywgdG9rKQogCiAgICAgZGVmIHBfbW9kdWxlXzAoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB2ZXJzaW9uIHsgfSAiCi0gICAgICAgIG1vZHVsZSwgbmFtZSwgdmVyc2lvbiwgXzAsIF8xID0gaW5mbworICAgICAgICAiIG1vZHVsZSA6Oj0gSWQgSWQgeyB9ICIKKyAgICAgICAgbW9kdWxlLCBuYW1lLCBfMCwgXzEgPSBpbmZvCiAgICAgICAgIGlmIG1vZHVsZS52YWx1ZSAhPSAibW9kdWxlIjoKICAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcihtb2R1bGUubGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgJ21vZHVsZScsIGZvdW5kICVzIiAlIG1vZHVsZSkKLSAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBOb25lLCB2ZXJzaW9uKQorICAgICAgICByZXR1cm4gTW9kdWxlKG5hbWUsIE5vbmUpCiAKICAgICBkZWYgcF9tb2R1bGUoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB2ZXJzaW9uIHsgZGVmaW5pdGlvbnMgfSAiCi0gICAgICAgIG1vZHVsZSwgbmFtZSwgdmVyc2lvbiwgXzAsIGRlZmluaXRpb25zLCBfMSA9IGluZm8KKyAgICAgICAgIiBtb2R1bGUgOjo9IElkIElkIHsgZGVmaW5pdGlvbnMgfSAiCisgICAgICAgIG1vZHVsZSwgbmFtZSwgXzAsIGRlZmluaXRpb25zLCBfMSA9IGluZm8KICAgICAgICAgaWYgbW9kdWxlLnZhbHVlICE9ICJtb2R1bGUiOgogICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKG1vZHVsZS5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCAnbW9kdWxlJywgZm91bmQgJXMiICUgbW9kdWxlKQotICAgICAgICByZXR1cm4gTW9kdWxlKG5hbWUsIGRlZmluaXRpb25zLCB2ZXJzaW9uKQotCi0gICAgZGVmIHBfdmVyc2lvbihzZWxmLCBpbmZvKToKLSAgICAgICAgInZlcnNpb24gOjo9IElkIFN0cmluZyIKLSAgICAgICAgdmVyc2lvbiwgViA9IGluZm8KLSAgICAgICAgaWYgdmVyc2lvbi52YWx1ZSAhPSAidmVyc2lvbiI6Ci0gICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IodmVyc2lvbi5saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCAndmVyc2lvbicsIGZvdW5kICUiICUgdmVyc2lvbikKLSAgICAgICAgcmV0dXJuIFYKKyAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBkZWZpbml0aW9ucykKIAogICAgIGRlZiBwX2RlZmluaXRpb25fMChzZWxmLCBkZWZpbml0aW9uKToKICAgICAgICAgIiBkZWZpbml0aW9ucyA6Oj0gZGVmaW5pdGlvbiAiCkBAIC0xNjQsMTUgKzE1NiwxMSBAQAogICAgICAgICBpZiBpZC52YWx1ZSAhPSAiYXR0cmlidXRlcyI6CiAgICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IoaWQubGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgYXR0cmlidXRlcywgZm91bmQgJXMiICUgaWQpCi0gICAgICAgIGlmIGF0dHJpYnV0ZXM6Ci0gICAgICAgICAgICBhdHRyaWJ1dGVzLnJldmVyc2UoKQogICAgICAgICByZXR1cm4gU3VtKHN1bSwgYXR0cmlidXRlcykKIAogICAgIGRlZiBwX3Byb2R1Y3Qoc2VsZiwgaW5mbyk6CiAgICAgICAgICIgcHJvZHVjdCA6Oj0gKCBmaWVsZHMgKSAiCiAgICAgICAgIF8wLCBmaWVsZHMsIF8xID0gaW5mbwotICAgICAgICAjIFhYWCBjYW4ndCBJIGp1c3QgY29uc3RydWN0IHRoaW5ncyBpbiB0aGUgcmlnaHQgb3JkZXI/Ci0gICAgICAgIGZpZWxkcy5yZXZlcnNlKCkKICAgICAgICAgcmV0dXJuIFByb2R1Y3QoZmllbGRzKQogCiAgICAgZGVmIHBfc3VtXzAoc2VsZiwgY29uc3RydWN0b3IpOgpAQCAtMTk2LDggKzE4NCw2IEBACiAgICAgZGVmIHBfY29uc3RydWN0b3JfMShzZWxmLCBpbmZvKToKICAgICAgICAgIiBjb25zdHJ1Y3RvciA6Oj0gSWQgKCBmaWVsZHMgKSAiCiAgICAgICAgIGlkLCBfMCwgZmllbGRzLCBfMSA9IGluZm8KLSAgICAgICAgIyBYWFggY2FuJ3QgSSBqdXN0IGNvbnN0cnVjdCB0aGluZ3MgaW4gdGhlIHJpZ2h0IG9yZGVyPwotICAgICAgICBmaWVsZHMucmV2ZXJzZSgpCiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RvcihpZCwgZmllbGRzKQogCiAgICAgZGVmIHBfZmllbGRzXzAoc2VsZiwgZmllbGQpOgpAQCAtMjA1LDggKzE5MSw4IEBACiAgICAgICAgIHJldHVybiBbZmllbGRbMF1dCiAKICAgICBkZWYgcF9maWVsZHNfMShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBmaWVsZHMgOjo9IGZpZWxkICwgZmllbGRzICIKLSAgICAgICAgZmllbGQsIF8sIGZpZWxkcyA9IGluZm8KKyAgICAgICAgIiBmaWVsZHMgOjo9IGZpZWxkcyAsIGZpZWxkICIKKyAgICAgICAgZmllbGRzLCBfLCBmaWVsZCA9IGluZm8KICAgICAgICAgcmV0dXJuIGZpZWxkcyArIFtmaWVsZF0KIAogICAgIGRlZiBwX2ZpZWxkXzAoc2VsZiwgdHlwZV8pOgpAQCAtMjM2LDcgKzIyMiw3IEBACiAgICAgICAgICIgZmllbGQgOjo9IElkID8gIgogICAgICAgICByZXR1cm4gRmllbGQodHlwZVswXSwgb3B0PVRydWUpCiAKLWJ1aWx0aW5fdHlwZXMgPSAoImlkZW50aWZpZXIiLCAic3RyaW5nIiwgImludCIsICJib29sIiwgIm9iamVjdCIpCitidWlsdGluX3R5cGVzID0gKCJpZGVudGlmaWVyIiwgInN0cmluZyIsICJieXRlcyIsICJpbnQiLCAib2JqZWN0IikKIAogIyBiZWxvdyBpcyBhIGNvbGxlY3Rpb24gb2YgY2xhc3NlcyB0byBjYXB0dXJlIHRoZSBBU1Qgb2YgYW4gQVNUIDotKQogIyBub3Qgc3VyZSBpZiBhbnkgb2YgdGhlIG1ldGhvZHMgYXJlIHVzZWZ1bCB5ZXQsIGJ1dCBJJ20gYWRkaW5nIHRoZW0KQEAgLTI0NiwxMCArMjMyLDkgQEAKICAgICBwYXNzICMgYSBtYXJrZXIgY2xhc3MKIAogY2xhc3MgTW9kdWxlKEFTVCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGRmbnMsIHZlcnNpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkZm5zKToKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLmRmbnMgPSBkZm5zCi0gICAgICAgIHNlbGYudmVyc2lvbiA9IHZlcnNpb24KICAgICAgICAgc2VsZi50eXBlcyA9IHt9ICMgbWFwcyB0eXBlIG5hbWUgdG8gdmFsdWUgKGZyb20gZGZucykKICAgICAgICAgZm9yIHR5cGUgaW4gZGZuczoKICAgICAgICAgICAgIHNlbGYudHlwZXNbdHlwZS5uYW1lLnZhbHVlXSA9IHR5cGUudmFsdWUKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsX2MucHkgYi9QYXJzZXIvYXNkbF9jLnB5CmluZGV4IGI4NWMwN2UuLjY5OGFmYWMgMTAwNzU1Ci0tLSBhL1BhcnNlci9hc2RsX2MucHkKKysrIGIvUGFyc2VyL2FzZGxfYy5weQpAQCAtNSw2ICs1LDcgQEAKICMgaGFuZGxlIGZpZWxkcyB0aGF0IGhhdmUgYSB0eXBlIGJ1dCBubyBuYW1lCiAKIGltcG9ydCBvcywgc3lzCitpbXBvcnQgc3VicHJvY2VzcwogCiBpbXBvcnQgYXNkbAogCkBAIC04NCw4ICs4NSwxNiBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUpOgogICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCisgICAgICAgIHNlbGYuaWRlbnRpZmllcnMgPSBzZXQoKQogICAgICAgICBzdXBlcihFbWl0VmlzaXRvciwgc2VsZikuX19pbml0X18oKQogCisgICAgZGVmIGVtaXRfaWRlbnRpZmllcihzZWxmLCBuYW1lKToKKyAgICAgICAgbmFtZSA9IHN0cihuYW1lKQorICAgICAgICBpZiBuYW1lIGluIHNlbGYuaWRlbnRpZmllcnM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5lbWl0KCJfUHlfSURFTlRJRklFUiglcyk7IiAlIG5hbWUsIDApCisgICAgICAgIHNlbGYuaWRlbnRpZmllcnMuYWRkKG5hbWUpCisKICAgICBkZWYgZW1pdChzZWxmLCBzLCBkZXB0aCwgcmVmbG93PVRydWUpOgogICAgICAgICAjIFhYWCByZWZsb3cgbG9uZyBsaW5lcz8KICAgICAgICAgaWYgcmVmbG93OgpAQCAtNDg1LDEyICs0OTQsMTIgQEAKIAogICAgIGRlZiB2aXNpdEZpZWxkKHNlbGYsIGZpZWxkLCBuYW1lLCBzdW09Tm9uZSwgcHJvZD1Ob25lLCBkZXB0aD0wKToKICAgICAgICAgY3R5cGUgPSBnZXRfY190eXBlKGZpZWxkLnR5cGUpCi0gICAgICAgIHNlbGYuZW1pdCgiaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCBcIiVzXCIpKSB7IiAlIGZpZWxkLm5hbWUsIGRlcHRoKQorICAgICAgICBzZWxmLmVtaXQoImlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfJXMpKSB7IiAlIGZpZWxkLm5hbWUsIGRlcHRoKQogICAgICAgICBzZWxmLmVtaXQoImludCByZXM7IiwgZGVwdGgrMSkKICAgICAgICAgaWYgZmllbGQuc2VxOgogICAgICAgICAgICAgc2VsZi5lbWl0KCJQeV9zc2l6ZV90IGxlbjsiLCBkZXB0aCsxKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJQeV9zc2l6ZV90IGk7IiwgZGVwdGgrMSkKLSAgICAgICAgc2VsZi5lbWl0KCJ0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgXCIlc1wiKTsiICUgZmllbGQubmFtZSwgZGVwdGgrMSkKKyAgICAgICAgc2VsZi5lbWl0KCJ0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfJXMpOyIgJSBmaWVsZC5uYW1lLCBkZXB0aCsxKQogICAgICAgICBzZWxmLmVtaXQoImlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7IiwgZGVwdGgrMSkKICAgICAgICAgaWYgZmllbGQuc2VxOgogICAgICAgICAgICAgc2VsZi5lbWl0KCJpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7IiwgZGVwdGgrMSkKQEAgLTU1Miw2ICs1NjEsOCBAQAogICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBQeVR5cGVPYmplY3QgKiVzX3R5cGU7IiAlIG5hbWUsIDApCiAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqXyVzKHZvaWQqKTsiICUgbmFtZSwgMCkKICAgICAgICAgaWYgcHJvZC5maWVsZHM6CisgICAgICAgICAgICBmb3IgZiBpbiBwcm9kLmZpZWxkczoKKyAgICAgICAgICAgICAgICBzZWxmLmVtaXRfaWRlbnRpZmllcihmLm5hbWUpCiAgICAgICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBjaGFyIColc19maWVsZHNbXT17IiAlIG5hbWUsMCkKICAgICAgICAgICAgIGZvciBmIGluIHByb2QuZmllbGRzOgogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgnIiVzIiwnICUgZi5uYW1lLCAxKQpAQCAtNTYwLDYgKzU3MSw4IEBACiAgICAgZGVmIHZpc2l0U3VtKHNlbGYsIHN1bSwgbmFtZSk6CiAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIFB5VHlwZU9iamVjdCAqJXNfdHlwZTsiICUgbmFtZSwgMCkKICAgICAgICAgaWYgc3VtLmF0dHJpYnV0ZXM6CisgICAgICAgICAgICBmb3IgYSBpbiBzdW0uYXR0cmlidXRlczoKKyAgICAgICAgICAgICAgICBzZWxmLmVtaXRfaWRlbnRpZmllcihhLm5hbWUpCiAgICAgICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBjaGFyIColc19hdHRyaWJ1dGVzW10gPSB7IiAlIG5hbWUsIDApCiAgICAgICAgICAgICBmb3IgYSBpbiBzdW0uYXR0cmlidXRlczoKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoJyIlcyIsJyAlIGEubmFtZSwgMSkKQEAgLTU3OSw2ICs1OTIsOCBAQAogICAgIGRlZiB2aXNpdENvbnN0cnVjdG9yKHNlbGYsIGNvbnMsIG5hbWUpOgogICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBQeVR5cGVPYmplY3QgKiVzX3R5cGU7IiAlIGNvbnMubmFtZSwgMCkKICAgICAgICAgaWYgY29ucy5maWVsZHM6CisgICAgICAgICAgICBmb3IgdCBpbiBjb25zLmZpZWxkczoKKyAgICAgICAgICAgICAgICBzZWxmLmVtaXRfaWRlbnRpZmllcih0Lm5hbWUpCiAgICAgICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBjaGFyIColc19maWVsZHNbXT17IiAlIGNvbnMubmFtZSwgMCkKICAgICAgICAgICAgIGZvciB0IGluIGNvbnMuZmllbGRzOgogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgnIiVzIiwnICUgdC5uYW1lLCAxKQpAQCAtNTg4LDEzICs2MDMsMzkgQEAKIAogICAgIGRlZiB2aXNpdE1vZHVsZShzZWxmLCBtb2QpOgogICAgICAgICBzZWxmLmVtaXQoIiIiCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICpkaWN0OworfSBBU1Rfb2JqZWN0OworCitzdGF0aWMgdm9pZAorYXN0X2RlYWxsb2MoQVNUX29iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKHNlbGYpOworfQorCitzdGF0aWMgaW50Cithc3RfdHJhdmVyc2UoQVNUX29iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+ZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCithc3RfY2xlYXIoQVNUX29iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKK30KKwogc3RhdGljIGludAogYXN0X3R5cGVfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKKyAgICBfUHlfSURFTlRJRklFUihfZmllbGRzKTsKICAgICBQeV9zc2l6ZV90IGksIG51bWZpZWxkcyA9IDA7CiAgICAgaW50IHJlcyA9IC0xOwogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKmZpZWxkczsKLSAgICBmaWVsZHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCopUHlfVFlQRShzZWxmKSwgIl9maWVsZHMiKTsKKyAgICBmaWVsZHMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCopUHlfVFlQRShzZWxmKSwgJlB5SWRfX2ZpZWxkcyk7CiAgICAgaWYgKCFmaWVsZHMpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgaWYgKGZpZWxkcykgewpAQCAtNjQ0LDcgKzY4NSw4IEBACiBhc3RfdHlwZV9yZWR1Y2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBQeU9iamVjdCAqZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fZGljdF9fIik7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworICAgIFB5T2JqZWN0ICpkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtNjY0LDEyICs3MDYsMTcgQEAKICAgICB7TlVMTH0KIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBhc3RfdHlwZV9nZXRzZXRzW10gPSB7CisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBQeU9iamVjdF9HZW5lcmljU2V0RGljdH0sCisgICAge05VTEx9Cit9OworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEFTVF90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgIl9hc3QuQVNUIiwKLSAgICBzaXplb2YoUHlPYmplY3QpLAorICAgIHNpemVvZihBU1Rfb2JqZWN0KSwKICAgICAwLAotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpYXN0X2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCkBAIC02ODQsMjYgKzczMSwyNiBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAvKiB0cF9nZXRhdHRybyAqLwogICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgICh0cmF2ZXJzZXByb2MpYXN0X3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWFzdF9jbGVhciwgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgYXN0X3R5cGVfbWV0aG9kcywgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBhc3RfdHlwZV9nZXRzZXRzLCAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZihBU1Rfb2JqZWN0LCBkaWN0KSwvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgKGluaXRwcm9jKWFzdF90eXBlX2luaXQsIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgLyogdHBfbmV3ICovCi0gICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogCkBAIC03MzAsNiArNzc3LDcgQEAKIHN0YXRpYyBpbnQgYWRkX2F0dHJpYnV0ZXMoUHlUeXBlT2JqZWN0KiB0eXBlLCBjaGFyKiphdHRycywgaW50IG51bV9maWVsZHMpCiB7CiAgICAgaW50IGksIHJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihfYXR0cmlidXRlcyk7CiAgICAgUHlPYmplY3QgKnMsICpsID0gUHlUdXBsZV9OZXcobnVtX2ZpZWxkcyk7CiAgICAgaWYgKCFsKQogICAgICAgICByZXR1cm4gMDsKQEAgLTc0MSw3ICs3ODksNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obCwgaSwgcyk7CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoKFB5T2JqZWN0Kil0eXBlLCAiX2F0dHJpYnV0ZXMiLCBsKSA+PSAwOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9TZXRBdHRySWQoKFB5T2JqZWN0Kil0eXBlLCAmUHlJZF9fYXR0cmlidXRlcywgbCkgPj0gMDsKICAgICBQeV9ERUNSRUYobCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTc1MCw3ICs3OTgsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfbGlzdChhc2RsX3NlcSAqc2VxLCBQeU9iamVjdCogKCpmdW5jKSh2b2lkKikpCiB7Ci0gICAgaW50IGksIG4gPSBhc2RsX3NlcV9MRU4oc2VxKTsKKyAgICBQeV9zc2l6ZV90IGksIG4gPSBhc2RsX3NlcV9MRU4oc2VxKTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlMaXN0X05ldyhuKTsKICAgICBQeU9iamVjdCAqdmFsdWU7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC03NzUsNiArODIzLDcgQEAKIH0KICNkZWZpbmUgYXN0Mm9ial9pZGVudGlmaWVyIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfc3RyaW5nIGFzdDJvYmpfb2JqZWN0CisjZGVmaW5lIGFzdDJvYmpfYnl0ZXMgYXN0Mm9ial9vYmplY3QKIAogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2ludChsb25nIGIpCiB7CkBAIC04MTIsNiArODYxLDE1IEBACiAgICAgcmV0dXJuIG9iajJhc3Rfb2JqZWN0KG9iaiwgb3V0LCBhcmVuYSk7CiB9CiAKK3N0YXRpYyBpbnQgb2JqMmFzdF9ieXRlcyhQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiQVNUIGJ5dGVzIG11c3QgYmUgb2YgdHlwZSBieXRlcyIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIG9iajJhc3Rfb2JqZWN0KG9iaiwgb3V0LCBhcmVuYSk7Cit9CisKIHN0YXRpYyBpbnQgb2JqMmFzdF9pbnQoUHlPYmplY3QqIG9iaiwgaW50KiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGludCBpOwpAQCAtOTEwLDEwICs5NjgsNiBAQAogICAgICAgICBzZWxmLmVtaXQoJ2lmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQVNUIiwgKFB5T2JqZWN0KikmQVNUX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7JywgMSkKICAgICAgICAgc2VsZi5lbWl0KCdpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5Q0ZfT05MWV9BU1QiLCBQeUNGX09OTFlfQVNUKSA8IDApJywgMSkKICAgICAgICAgc2VsZi5lbWl0KCJyZXR1cm4gTlVMTDsiLCAyKQotICAgICAgICAjIFZhbHVlIG9mIHZlcnNpb246ICIkUmV2aXNpb24kIgotICAgICAgICBzZWxmLmVtaXQoJ2lmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiX192ZXJzaW9uX18iLCAiJXMiKSA8IDApJwotICAgICAgICAgICAgICAgICUgbW9kLnZlcnNpb24sIDEpCi0gICAgICAgIHNlbGYuZW1pdCgicmV0dXJuIE5VTEw7IiwgMikKICAgICAgICAgZm9yIGRmbiBpbiBtb2QuZGZuczoKICAgICAgICAgICAgIHNlbGYudmlzaXQoZGZuKQogICAgICAgICBzZWxmLmVtaXQoInJldHVybiBtOyIsIDEpCkBAIC05OTcsNyArMTA1MSw3IEBACiAgICAgICAgIGZvciBhIGluIHN1bS5hdHRyaWJ1dGVzOgogICAgICAgICAgICAgc2VsZi5lbWl0KCJ2YWx1ZSA9IGFzdDJvYmpfJXMoby0+JXMpOyIgJSAoYS50eXBlLCBhLm5hbWUpLCAxKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsiLCAxKQotICAgICAgICAgICAgc2VsZi5lbWl0KCdpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICIlcyIsIHZhbHVlKSA8IDApJyAlIGEubmFtZSwgMSkKKyAgICAgICAgICAgIHNlbGYuZW1pdCgnaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF8lcywgdmFsdWUpIDwgMCknICUgYS5uYW1lLCAxKQogICAgICAgICAgICAgc2VsZi5lbWl0KCdnb3RvIGZhaWxlZDsnLCAyKQogICAgICAgICAgICAgc2VsZi5lbWl0KCdQeV9ERUNSRUYodmFsdWUpOycsIDEpCiAgICAgICAgIHNlbGYuZnVuY19lbmQoKQpAQCAtMTA0Myw3ICsxMDk3LDcgQEAKICAgICAgICAgICAgIHZhbHVlID0gIm8tPnYuJXMuJXMiICUgKG5hbWUsIGZpZWxkLm5hbWUpCiAgICAgICAgIHNlbGYuc2V0KGZpZWxkLCB2YWx1ZSwgZGVwdGgpCiAgICAgICAgIGVtaXQoImlmICghdmFsdWUpIGdvdG8gZmFpbGVkOyIsIDApCi0gICAgICAgIGVtaXQoJ2lmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIiVzIiwgdmFsdWUpID09IC0xKScgJSBmaWVsZC5uYW1lLCAwKQorICAgICAgICBlbWl0KCdpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkXyVzLCB2YWx1ZSkgPT0gLTEpJyAlIGZpZWxkLm5hbWUsIDApCiAgICAgICAgIGVtaXQoImdvdG8gZmFpbGVkOyIsIDEpCiAgICAgICAgIGVtaXQoIlB5X0RFQ1JFRih2YWx1ZSk7IiwgMCkKIApAQCAtMTA2Niw3ICsxMTIwLDcgQEAKICAgICAgICAgICAgICAgICAjIFdoaWxlIHRoZSBzZXF1ZW5jZSBlbGVtZW50cyBhcmUgc3RvcmVkIGFzIHZvaWQqLAogICAgICAgICAgICAgICAgICMgYXN0Mm9ial9jbXBvcCBleHBlY3RzIGFuIGVudW0KICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoInsiLCBkZXB0aCkKLSAgICAgICAgICAgICAgICBzZWxmLmVtaXQoImludCBpLCBuID0gYXNkbF9zZXFfTEVOKCVzKTsiICUgdmFsdWUsIGRlcHRoKzEpCisgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJQeV9zc2l6ZV90IGksIG4gPSBhc2RsX3NlcV9MRU4oJXMpOyIgJSB2YWx1ZSwgZGVwdGgrMSkKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoInZhbHVlID0gUHlMaXN0X05ldyhuKTsiLCBkZXB0aCsxKQogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgiaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7IiwgZGVwdGgrMSkKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoImZvcihpID0gMDsgaSA8IG47IGkrKykiLCBkZXB0aCsxKQpAQCAtMTEzNCwyNCArMTE4OCwxMiBAQAogCiBjb21tb25fbXNnID0gIi8qIEZpbGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgJXMuICovXG5cbiIKIAotY19maWxlX21zZyA9ICIiIgotLyoKLSAgIF9fdmVyc2lvbl9fICVzLgotCi0gICBUaGlzIG1vZHVsZSBtdXN0IGJlIGNvbW1pdHRlZCBzZXBhcmF0ZWx5IGFmdGVyIGVhY2ggQVNUIGdyYW1tYXIgY2hhbmdlOwotICAgVGhlIF9fdmVyc2lvbl9fIG51bWJlciBpcyBzZXQgdG8gdGhlIHJldmlzaW9uIG51bWJlciBvZiB0aGUgY29tbWl0Ci0gICBjb250YWluaW5nIHRoZSBncmFtbWFyIGNoYW5nZS4KLSovCi0KLSIiIgotCiBkZWYgbWFpbihzcmNmaWxlKToKICAgICBhcmd2MCA9IHN5cy5hcmd2WzBdCiAgICAgY29tcG9uZW50cyA9IGFyZ3YwLnNwbGl0KG9zLnNlcCkKICAgICBhcmd2MCA9IG9zLnNlcC5qb2luKGNvbXBvbmVudHNbLTI6XSkKICAgICBhdXRvX2dlbl9tc2cgPSBjb21tb25fbXNnICUgYXJndjAKICAgICBtb2QgPSBhc2RsLnBhcnNlKHNyY2ZpbGUpCi0gICAgbW9kLnZlcnNpb24gPSAiODIxNjMiCiAgICAgaWYgbm90IGFzZGwuY2hlY2sobW9kKToKICAgICAgICAgc3lzLmV4aXQoMSkKICAgICBpZiBJTkNfRElSOgpAQCAtMTE3Myw3ICsxMjE1LDggQEAKICAgICAgICAgcCA9IG9zLnBhdGguam9pbihTUkNfRElSLCBzdHIobW9kLm5hbWUpICsgIi1hc3QuYyIpCiAgICAgICAgIGYgPSBvcGVuKHAsICJ3IikKICAgICAgICAgZi53cml0ZShhdXRvX2dlbl9tc2cpCi0gICAgICAgIGYud3JpdGUoY19maWxlX21zZyAlIG1vZC52ZXJzaW9uKQorICAgICAgICBmLndyaXRlKCcjaW5jbHVkZSA8c3RkZGVmLmg+XG4nKQorICAgICAgICBmLndyaXRlKCdcbicpCiAgICAgICAgIGYud3JpdGUoJyNpbmNsdWRlICJQeXRob24uaCJcbicpCiAgICAgICAgIGYud3JpdGUoJyNpbmNsdWRlICIlcy1hc3QuaCJcbicgJSBtb2QubmFtZSkKICAgICAgICAgZi53cml0ZSgnXG4nKQpkaWZmIC0tZ2l0IGEvUGFyc2VyL2ludHJjaGVjay5jIGIvUGFyc2VyL2ludHJjaGVjay5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDM5ODY0Li4wMDAwMDAwCi0tLSBhL1BhcnNlci9pbnRyY2hlY2suYworKysgL2Rldi9udWxsCkBAIC0xLDE3NCArMCwwIEBACi0KLS8qIENoZWNrIGZvciBpbnRlcnJ1cHRzICovCi0KLSNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlICJweXRocmVhZC5oIgotCi0jaWZkZWYgUVVJQ0tXSU4KLQotI2luY2x1ZGUgPGlvLmg+Ci0KLXZvaWQKLVB5T1NfSW5pdEludGVycnVwdHModm9pZCkKLXsKLX0KLQotdm9pZAotUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKQotewotfQotCi1pbnQKLVB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCkKLXsKLSAgICBfd3lpZWxkKCk7Ci19Ci0KLSNkZWZpbmUgT0sKLQotI2VuZGlmIC8qIFFVSUNLV0lOICovCi0KLSNpZiBkZWZpbmVkKF9NX0lYODYpICYmICFkZWZpbmVkKF9fUU5YX18pCi0jaW5jbHVkZSA8aW8uaD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChNU0RPUykgJiYgIWRlZmluZWQoUVVJQ0tXSU4pCi0KLSNpZmRlZiBfX0dOVUNfXwotCi0vKiBUaGlzIGlzIGZvciBESkdQUCdzIEdPMzIgZXh0ZW5kZXIuICBJIGRvbid0IGtub3cgaG93IHRvIHRyYXAKLSAqIGNvbnRyb2wtQyAgKFRoZXJlJ3Mgbm8gQVBJIGZvciBjdHJsLUMsIGFuZCBJIGRvbid0IHdhbnQgdG8gbWVzcyB3aXRoCi0gKiB0aGUgaW50ZXJydXB0IHZlY3RvcnMuKSAgSG93ZXZlciwgdGhpcyBET0VTIGNhdGNoIGNvbnRyb2wtYnJlYWsuCi0gKiAtLUFtcml0Ci0gKi8KLQotI2luY2x1ZGUgPGdvMzIuaD4KLQotdm9pZAotUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKQotewotICAgIF9nbzMyX3dhbnRfY3RybF9icmVhaygxIC8qIFRSVUUgKi8pOwotfQotCi12b2lkCi1QeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpCi17Ci19Ci0KLWludAotUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKQotewotICAgIHJldHVybiBfZ28zMl93YXNfY3RybF9icmVha19oaXQoKTsKLX0KLQotI2Vsc2UgLyogIV9fR05VQ19fICovCi0KLS8qIFRoaXMgbWlnaHQgd29yayBmb3IgTVMtRE9TICh1bnRlc3RlZCB0aG91Z2gpOiAqLwotCi12b2lkCi1QeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpCi17Ci19Ci0KLXZvaWQKLVB5T1NfRmluaUludGVycnVwdHModm9pZCkKLXsKLX0KLQotaW50Ci1QeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpCi17Ci0gICAgaW50IGludGVycnVwdGVkID0gMDsKLSAgICB3aGlsZSAoa2JoaXQoKSkgewotICAgICAgICBpZiAoZ2V0Y2goKSA9PSAnXDAwMycpCi0gICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IDE7Ci0gICAgfQotICAgIHJldHVybiBpbnRlcnJ1cHRlZDsKLX0KLQotI2VuZGlmIC8qIF9fR05VQ19fICovCi0KLSNkZWZpbmUgT0sKLQotI2VuZGlmIC8qIE1TRE9TICYmICFRVUlDS1dJTiAqLwotCi0KLSNpZm5kZWYgT0sKLQotLyogRGVmYXVsdCB2ZXJzaW9uIC0tIGZvciByZWFsIG9wZXJhdGluZyBzeXN0ZW1zIGFuZCBmb3IgU3RhbmRhcmQgQyAqLwotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzaWduYWwuaD4KLQotc3RhdGljIGludCBpbnRlcnJ1cHRlZDsKLQotdm9pZAotUHlFcnJfU2V0SW50ZXJydXB0KHZvaWQpCi17Ci0gICAgaW50ZXJydXB0ZWQgPSAxOwotfQotCi1leHRlcm4gaW50IFB5RXJyX0NoZWNrU2lnbmFscyh2b2lkKTsKLQotc3RhdGljIGludAotY2hlY2tzaWduYWxzX3dpdGhhcmcodm9pZCAqIGFyZykKLXsKLSAgICByZXR1cm4gUHlFcnJfQ2hlY2tTaWduYWxzKCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1pbnRjYXRjaGVyKGludCBzaWcpCi17Ci0gICAgZXh0ZXJuIHZvaWQgUHlfRXhpdChpbnQpOwotICAgIHN0YXRpYyBjaGFyIG1lc3NhZ2VbXSA9Ci0icHl0aG9uOiB0byBpbnRlcnJ1cHQgYSB0cnVseSBoYW5naW5nIFB5dGhvbiBwcm9ncmFtLCBpbnRlcnJ1cHQgb25jZSBtb3JlLlxuIjsKLSAgICBzd2l0Y2ggKGludGVycnVwdGVkKyspIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgICAgd3JpdGUoMiwgbWVzc2FnZSwgc3RybGVuKG1lc3NhZ2UpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICBpbnRlcnJ1cHRlZCA9IDA7Ci0gICAgICAgIFB5X0V4aXQoMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBQeU9TX3NldHNpZyhTSUdJTlQsIGludGNhdGNoZXIpOwotICAgIFB5X0FkZFBlbmRpbmdDYWxsKGNoZWNrc2lnbmFsc193aXRoYXJnLCBOVUxMKTsKLX0KLQotc3RhdGljIHZvaWQgKCpvbGRfc2lnaW50aGFuZGxlcikoaW50KSA9IFNJR19ERkw7Ci0KLXZvaWQKLVB5T1NfSW5pdEludGVycnVwdHModm9pZCkKLXsKLSAgICBpZiAoKG9sZF9zaWdpbnRoYW5kbGVyID0gUHlPU19zZXRzaWcoU0lHSU5ULCBTSUdfSUdOKSkgIT0gU0lHX0lHTikKLSAgICAgICAgUHlPU19zZXRzaWcoU0lHSU5ULCBpbnRjYXRjaGVyKTsKLX0KLQotdm9pZAotUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKQotewotICAgIFB5T1Nfc2V0c2lnKFNJR0lOVCwgb2xkX3NpZ2ludGhhbmRsZXIpOwotfQotCi1pbnQKLVB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCkKLXsKLSAgICBpZiAoIWludGVycnVwdGVkKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpbnRlcnJ1cHRlZCA9IDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLSNlbmRpZiAvKiAhT0sgKi8KLQotdm9pZAotUHlPU19BZnRlckZvcmsodm9pZCkKLXsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIFB5RXZhbF9SZUluaXRUaHJlYWRzKCk7Ci0gICAgUHlUaHJlYWRfUmVJbml0VExTKCk7Ci0jZW5kaWYKLX0KZGlmZiAtLWdpdCBhL1BhcnNlci9teXJlYWRsaW5lLmMgYi9QYXJzZXIvbXlyZWFkbGluZS5jCmluZGV4IDkzZWRkN2YuLmQ4NjQ2MjMgMTAwNjQ0Ci0tLSBhL1BhcnNlci9teXJlYWRsaW5lLmMKKysrIGIvUGFyc2VyL215cmVhZGxpbmUuYwpAQCAtMzUsMTIgKzM1LDExIEBACiBzdGF0aWMgaW50CiBteV9mZ2V0cyhjaGFyICpidWYsIGludCBsZW4sIEZJTEUgKmZwKQogeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50OworI2VuZGlmCiAgICAgY2hhciAqcDsKICAgICBpbnQgZXJyOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpbnQgaTsKLSNlbmRpZgotCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgaWYgKFB5T1NfSW5wdXRIb29rICE9IE5VTEwpCiAgICAgICAgICAgICAodm9pZCkoUHlPU19JbnB1dEhvb2spKCk7CkBAIC01NywyMCArNTYsMjQgQEAKICAgICAgICAgLyogQ3RybC1DIGFueXdoZXJlIG9uIHRoZSBsaW5lIG9yIEN0cmwtWiBpZiB0aGUgb25seSBjaGFyYWN0ZXIKICAgICAgICAgICAgb24gYSBsaW5lIHdpbGwgc2V0IEVSUk9SX09QRVJBVElPTl9BQk9SVEVELiBVbmRlciBub3JtYWwKICAgICAgICAgICAgY2lyY3Vtc3RhbmNlcyBDdHJsLUMgd2lsbCBhbHNvIGhhdmUgY2F1c2VkIHRoZSBTSUdJTlQgaGFuZGxlcgotICAgICAgICAgICB0byBmaXJlLiBUaGlzIHNpZ25hbCBmaXJlcyBpbiBhbm90aGVyIHRocmVhZCBhbmQgaXMgbm90Ci0gICAgICAgICAgIGd1YXJhbnRlZWQgdG8gaGF2ZSBvY2N1cnJlZCBiZWZvcmUgdGhpcyBwb2ludCBpbiB0aGUgY29kZS4KKyAgICAgICAgICAgdG8gZmlyZSB3aGljaCB3aWxsIGhhdmUgc2V0IHRoZSBldmVudCBvYmplY3QgcmV0dXJuZWQgYnkKKyAgICAgICAgICAgX1B5T1NfU2lnaW50RXZlbnQuIFRoaXMgc2lnbmFsIGZpcmVzIGluIGFub3RoZXIgdGhyZWFkIGFuZAorICAgICAgICAgICBpcyBub3QgZ3VhcmFudGVlZCB0byBoYXZlIG9jY3VycmVkIGJlZm9yZSB0aGlzIHBvaW50IGluIHRoZQorICAgICAgICAgICBjb2RlLgogCi0gICAgICAgICAgIFRoZXJlZm9yZTogY2hlY2sgaW4gYSBzbWFsbCBsb29wIHRvIHNlZSBpZiB0aGUgdHJpZ2dlciBoYXMKLSAgICAgICAgICAgZmlyZWQsIGluIHdoaWNoIGNhc2UgYXNzdW1lIHRoaXMgaXMgYSBDdHJsLUMgZXZlbnQuIElmIGl0Ci0gICAgICAgICAgIGhhc24ndCBmaXJlZCB3aXRoaW4gMTBtcyBhc3N1bWUgdGhhdCB0aGlzIGlzIGEgQ3RybC1aIG9uIGl0cwotICAgICAgICAgICBvd24gb3IgdGhhdCB0aGUgc2lnbmFsIGlzbid0IGdvaW5nIHRvIGZpcmUgZm9yIHNvbWUgb3RoZXIKLSAgICAgICAgICAgcmVhc29uIGFuZCBkcm9wIHRocm91Z2ggdG8gY2hlY2sgZm9yIEVPRi4KKyAgICAgICAgICAgVGhlcmVmb3JlOiBjaGVjayB3aGV0aGVyIHRoZSBldmVudCBpcyBzZXQgd2l0aCBhIHNtYWxsIHRpbWVvdXQuCisgICAgICAgICAgIElmIGl0IGlzLCBhc3N1bWUgdGhpcyBpcyBhIEN0cmwtQyBhbmQgcmVzZXQgdGhlIGV2ZW50LiBJZiBpdAorICAgICAgICAgICBpc24ndCBzZXQgYXNzdW1lIHRoYXQgdGhpcyBpcyBhIEN0cmwtWiBvbiBpdHMgb3duIGFuZCBkcm9wCisgICAgICAgICAgIHRocm91Z2ggdG8gY2hlY2sgZm9yIEVPRi4KICAgICAgICAgKi8KICAgICAgICAgaWYgKEdldExhc3RFcnJvcigpPT1FUlJPUl9PUEVSQVRJT05fQUJPUlRFRCkgewotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIFNsZWVwKDEpOworICAgICAgICAgICAgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgICAgIHN3aXRjaCAoV2FpdEZvclNpbmdsZU9iamVjdChoSW50ZXJydXB0RXZlbnQsIDEwKSkgeworICAgICAgICAgICAgY2FzZSBXQUlUX09CSkVDVF8wOgorICAgICAgICAgICAgICAgIFJlc2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogSW50ZXJydXB0ICovCisgICAgICAgICAgICBjYXNlIFdBSVRfRkFJTEVEOgorICAgICAgICAgICAgICAgIHJldHVybiAtMjsgLyogRXJyb3IgKi8KICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KQEAgLTkwLDcgKzkzLDcgQEAKICNlbmRpZgogICAgICAgICAgICAgaWYgKHMgPCAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLQkgICAgLyogdHJ5IGFnYWluICovCisgICAgICAgIC8qIHRyeSBhZ2FpbiAqLwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvUGFyc2VyL3BhcnNldG9rLmMgYi9QYXJzZXIvcGFyc2V0b2suYwppbmRleCBiYjlhZmM0Li43YmViNzM1IDEwMDY0NAotLS0gYS9QYXJzZXIvcGFyc2V0b2suYworKysgYi9QYXJzZXIvcGFyc2V0b2suYwpAQCAtMTMsNyArMTMsNyBAQAogCiAvKiBGb3J3YXJkICovCiBzdGF0aWMgbm9kZSAqcGFyc2V0b2soc3RydWN0IHRva19zdGF0ZSAqLCBncmFtbWFyICosIGludCwgcGVycmRldGFpbCAqLCBpbnQgKik7Ci1zdGF0aWMgdm9pZCBpbml0ZXJyKHBlcnJkZXRhaWwgKmVycl9yZXQsIGNvbnN0IGNoYXIqIGZpbGVuYW1lKTsKK3N0YXRpYyBpbnQgaW5pdGVycihwZXJyZGV0YWlsICplcnJfcmV0LCBjb25zdCBjaGFyKiBmaWxlbmFtZSk7CiAKIC8qIFBhcnNlIGlucHV0IGNvbWluZyBmcm9tIGEgc3RyaW5nLiAgUmV0dXJuIGVycm9yIGNvZGUsIHByaW50IHNvbWUgZXJyb3JzLiAqLwogbm9kZSAqCkBAIC00OCw3ICs0OCw4IEBACiAgICAgc3RydWN0IHRva19zdGF0ZSAqdG9rOwogICAgIGludCBleGVjX2lucHV0ID0gc3RhcnQgPT0gZmlsZV9pbnB1dDsKIAotICAgIGluaXRlcnIoZXJyX3JldCwgZmlsZW5hbWUpOworICAgIGlmIChpbml0ZXJyKGVycl9yZXQsIGZpbGVuYW1lKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCpmbGFncyAmIFB5UEFSU0VfSUdOT1JFX0NPT0tJRSkKICAgICAgICAgdG9rID0gUHlUb2tlbml6ZXJfRnJvbVVURjgocywgZXhlY19pbnB1dCk7CkBAIC01OSw3ICs2MCwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0b2stPmZpbGVuYW1lID0gZmlsZW5hbWUgPyBmaWxlbmFtZSA6ICI8c3RyaW5nPiI7CisjaWZuZGVmIFBHRU4KKyAgICBQeV9JTkNSRUYoZXJyX3JldC0+ZmlsZW5hbWUpOworICAgIHRvay0+ZmlsZW5hbWUgPSBlcnJfcmV0LT5maWxlbmFtZTsKKyNlbmRpZgogICAgIHJldHVybiBwYXJzZXRvayh0b2ssIGcsIHN0YXJ0LCBlcnJfcmV0LCBmbGFncyk7CiB9CiAKQEAgLTkwLDEzICs5NCwxNyBAQAogewogICAgIHN0cnVjdCB0b2tfc3RhdGUgKnRvazsKIAotICAgIGluaXRlcnIoZXJyX3JldCwgZmlsZW5hbWUpOworICAgIGlmIChpbml0ZXJyKGVycl9yZXQsIGZpbGVuYW1lKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCh0b2sgPSBQeVRva2VuaXplcl9Gcm9tRmlsZShmcCwgKGNoYXIgKillbmMsIHBzMSwgcHMyKSkgPT0gTlVMTCkgewogICAgICAgICBlcnJfcmV0LT5lcnJvciA9IEVfTk9NRU07CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB0b2stPmZpbGVuYW1lID0gZmlsZW5hbWU7CisjaWZuZGVmIFBHRU4KKyAgICBQeV9JTkNSRUYoZXJyX3JldC0+ZmlsZW5hbWUpOworICAgIHRvay0+ZmlsZW5hbWUgPSBlcnJfcmV0LT5maWxlbmFtZTsKKyNlbmRpZgogICAgIHJldHVybiBwYXJzZXRvayh0b2ssIGcsIHN0YXJ0LCBlcnJfcmV0LCBmbGFncyk7CiB9CiAKQEAgLTIxNiw2ICsyMjQsMzYgQEAKICAgICBpZiAoZXJyX3JldC0+ZXJyb3IgPT0gRV9ET05FKSB7CiAgICAgICAgIG4gPSBwcy0+cF90cmVlOwogICAgICAgICBwcy0+cF90cmVlID0gTlVMTDsKKworI2lmbmRlZiBQR0VOCisgICAgICAgIC8qIENoZWNrIHRoYXQgdGhlIHNvdXJjZSBmb3IgYSBzaW5nbGUgaW5wdXQgc3RhdGVtZW50IHJlYWxseQorICAgICAgICAgICBpcyBhIHNpbmdsZSBzdGF0ZW1lbnQgYnkgbG9va2luZyBhdCB3aGF0IGlzIGxlZnQgaW4gdGhlCisgICAgICAgICAgIGJ1ZmZlciBhZnRlciBwYXJzaW5nLiAgVHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKKyAgICAgICAgICAgYXJlIE9LLiAgKi8KKyAgICAgICAgaWYgKHN0YXJ0ID09IHNpbmdsZV9pbnB1dCkgeworICAgICAgICAgICAgY2hhciAqY3VyID0gdG9rLT5jdXI7CisgICAgICAgICAgICBjaGFyIGMgPSAqdG9rLT5jdXI7CisKKyAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoYyA9PSAnICcgfHwgYyA9PSAnXHQnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcMDE0JykKKyAgICAgICAgICAgICAgICAgICAgYyA9ICorK2N1cjsKKworICAgICAgICAgICAgICAgIGlmICghYykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBpZiAoYyAhPSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyX3JldC0+ZXJyb3IgPSBFX0JBRFNJTkdMRTsKKyAgICAgICAgICAgICAgICAgICAgUHlOb2RlX0ZyZWUobik7CisgICAgICAgICAgICAgICAgICAgIG4gPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBTdWNrIHVwIGNvbW1lbnQuICovCisgICAgICAgICAgICAgICAgd2hpbGUgKGMgJiYgYyAhPSAnXG4nKQorICAgICAgICAgICAgICAgICAgICBjID0gKisrY3VyOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYKICAgICB9CiAgICAgZWxzZQogICAgICAgICBuID0gTlVMTDsKQEAgLTIyNiw3ICsyNjQsNyBAQAogICAgIFB5UGFyc2VyX0RlbGV0ZShwcyk7CiAKICAgICBpZiAobiA9PSBOVUxMKSB7Ci0gICAgICAgIGlmICh0b2stPmxpbmVubyA8PSAxICYmIHRvay0+ZG9uZSA9PSBFX0VPRikKKyAgICAgICAgaWYgKHRvay0+ZG9uZSA9PSBFX0VPRikKICAgICAgICAgICAgIGVycl9yZXQtPmVycm9yID0gRV9FT0Y7CiAgICAgICAgIGVycl9yZXQtPmxpbmVubyA9IHRvay0+bGluZW5vOwogICAgICAgICBpZiAodG9rLT5idWYgIT0gTlVMTCkgewpAQCAtMjY5LDE0ICszMDcsMjQgQEAKICAgICByZXR1cm4gbjsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIGluaXRlcnIocGVycmRldGFpbCAqZXJyX3JldCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAgICAgZXJyX3JldC0+ZXJyb3IgPSBFX09LOwotICAgIGVycl9yZXQtPmZpbGVuYW1lID0gZmlsZW5hbWU7CiAgICAgZXJyX3JldC0+bGluZW5vID0gMDsKICAgICBlcnJfcmV0LT5vZmZzZXQgPSAwOwogICAgIGVycl9yZXQtPnRleHQgPSBOVUxMOwogICAgIGVycl9yZXQtPnRva2VuID0gLTE7CiAgICAgZXJyX3JldC0+ZXhwZWN0ZWQgPSAtMTsKKyNpZm5kZWYgUEdFTgorICAgIGlmIChmaWxlbmFtZSkKKyAgICAgICAgZXJyX3JldC0+ZmlsZW5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGZpbGVuYW1lKTsKKyAgICBlbHNlCisgICAgICAgIGVycl9yZXQtPmZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxzdHJpbmc+Iik7CisgICAgaWYgKGVycl9yZXQtPmZpbGVuYW1lID09IE5VTEwpIHsKKyAgICAgICAgZXJyX3JldC0+ZXJyb3IgPSBFX0VSUk9SOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9QYXJzZXIvcGFyc2V0b2tfcGdlbi5jIGIvUGFyc2VyL3BhcnNldG9rX3BnZW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2I5Mjg4Ci0tLSAvZGV2L251bGwKKysrIGIvUGFyc2VyL3BhcnNldG9rX3BnZW4uYwpAQCAtMCwwICsxLDIgQEAKKyNkZWZpbmUgUEdFTgorI2luY2x1ZGUgInBhcnNldG9rLmMiCmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbm1haW4uYyBiL1BhcnNlci9wZ2VubWFpbi5jCmluZGV4IDRiN2I1NWEuLjUyYjgzODAgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wZ2VubWFpbi5jCisrKyBiL1BhcnNlci9wZ2VubWFpbi5jCkBAIC0yOSw2ICsyOSw4IEBACiAvKiBGb3J3YXJkICovCiBncmFtbWFyICpnZXRncmFtbWFyKGNoYXIgKmZpbGVuYW1lKTsKIAordm9pZCBQeV9FeGl0KGludCkgX1B5X05PX1JFVFVSTjsKKwogdm9pZAogUHlfRXhpdChpbnQgc3RzKQogewpkaWZmIC0tZ2l0IGEvUGFyc2VyL3Rva2VuaXplci5jIGIvUGFyc2VyL3Rva2VuaXplci5jCmluZGV4IDViYTEyYTQuLjkzYTRhNWMgMTAwNjQ0Ci0tLSBhL1BhcnNlci90b2tlbml6ZXIuYworKysgYi9QYXJzZXIvdG9rZW5pemVyLmMKQEAgLTEyOCw3ICsxMjgsNiBAQAogICAgIHRvay0+cHJvbXB0ID0gdG9rLT5uZXh0cHJvbXB0ID0gTlVMTDsKICAgICB0b2stPmxpbmVubyA9IDA7CiAgICAgdG9rLT5sZXZlbCA9IDA7Ci0gICAgdG9rLT5maWxlbmFtZSA9IE5VTEw7CiAgICAgdG9rLT5hbHR3YXJuaW5nID0gMTsKICAgICB0b2stPmFsdGVycm9yID0gMTsKICAgICB0b2stPmFsdHRhYnNpemUgPSAxOwpAQCAtMTQwLDYgKzEzOSw3IEBACiAgICAgdG9rLT5lbmNvZGluZyA9IE5VTEw7CiAgICAgdG9rLT5jb250X2xpbmUgPSAwOwogI2lmbmRlZiBQR0VOCisgICAgdG9rLT5maWxlbmFtZSA9IE5VTEw7CiAgICAgdG9rLT5kZWNvZGluZ19yZWFkbGluZSA9IE5VTEw7CiAgICAgdG9rLT5kZWNvZGluZ19idWZmZXIgPSBOVUxMOwogI2VuZGlmCkBAIC00NjIsNiArNDYyLDggQEAKIGZwX3NldHJlYWRsKHN0cnVjdCB0b2tfc3RhdGUgKnRvaywgY29uc3QgY2hhciogZW5jKQogewogICAgIFB5T2JqZWN0ICpyZWFkbGluZSA9IE5VTEwsICpzdHJlYW0gPSBOVUxMLCAqaW8gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOworICAgIF9QeV9JREVOVElGSUVSKHJlYWRsaW5lKTsKICAgICBpbnQgZmQ7CiAKICAgICBpbyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soImlvIik7CkBAIC00NzQsMTMgKzQ3NiwxMyBAQAogICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgfQogCi0gICAgc3RyZWFtID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIm9wZW4iLCAiaXNpc09PTyIsCisgICAgc3RyZWFtID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaXNPT08iLAogICAgICAgICAgICAgICAgICAgICBmZCwgInIiLCAtMSwgZW5jLCBQeV9Ob25lLCBQeV9Ob25lLCBQeV9GYWxzZSk7CiAgICAgaWYgKHN0cmVhbSA9PSBOVUxMKQogICAgICAgICBnb3RvIGNsZWFudXA7CiAKICAgICBQeV9YREVDUkVGKHRvay0+ZGVjb2RpbmdfcmVhZGxpbmUpOwotICAgIHJlYWRsaW5lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJlYW0sICJyZWFkbGluZSIpOworICAgIHJlYWRsaW5lID0gX1B5T2JqZWN0X0dldEF0dHJJZChzdHJlYW0sICZQeUlkX3JlYWRsaW5lKTsKICAgICB0b2stPmRlY29kaW5nX3JlYWRsaW5lID0gcmVhZGxpbmU7CiAKICAgICAvKiBUaGUgZmlsZSBoYXMgYmVlbiByZW9wZW5lZDsgcGFyc2luZyB3aWxsIHJlc3RhcnQgZnJvbQpAQCAtNTQ1LDcgKzU0Nyw2IEBACiB7CiAgICAgY2hhciAqbGluZSA9IE5VTEw7CiAgICAgaW50IGJhZGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGlmICh0b2stPmRlY29kaW5nX3N0YXRlID09IFNUQVRFX05PUk1BTCkgewogICAgICAgICAgICAgLyogV2UgYWxyZWFkeSBoYXZlIGEgY29kZWMgYXNzb2NpYXRlZCB3aXRoCkBAIC01ODYsMTkgKzU4NywxMiBAQAogICAgIGlmIChiYWRjaGFyKSB7CiAgICAgICAgIC8qIE5lZWQgdG8gYWRkIDEgdG8gdGhlIGxpbmUgbnVtYmVyLCBzaW5jZSB0aGlzIGxpbmUKICAgICAgICAgICAgaGFzIG5vdCBiZWVuIGNvdW50ZWQsIHlldC4gICovCi0gICAgICAgIGlmICh0b2stPmZpbGVuYW1lICE9IE5VTEwpCi0gICAgICAgICAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQodG9rLT5maWxlbmFtZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxmaWxlPiIpOwotICAgICAgICBpZiAoZmlsZW5hbWUgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAotICAgICAgICAgICAgICAgICAgICAiTm9uLVVURi04IGNvZGUgc3RhcnRpbmcgd2l0aCAnXFx4JS4yeCcgIgotICAgICAgICAgICAgICAgICAgICAiaW4gZmlsZSAlVSBvbiBsaW5lICVpLCAiCi0gICAgICAgICAgICAgICAgICAgICJidXQgbm8gZW5jb2RpbmcgZGVjbGFyZWQ7ICIKLSAgICAgICAgICAgICAgICAgICAgInNlZSBodHRwOi8vcHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDI2My8gZm9yIGRldGFpbHMiLAotICAgICAgICAgICAgICAgICAgICBiYWRjaGFyLCBmaWxlbmFtZSwgdG9rLT5saW5lbm8gKyAxKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7Ci0gICAgICAgIH0KKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAorICAgICAgICAgICAgICAgICJOb24tVVRGLTggY29kZSBzdGFydGluZyB3aXRoICdcXHglLjJ4JyAiCisgICAgICAgICAgICAgICAgImluIGZpbGUgJVUgb24gbGluZSAlaSwgIgorICAgICAgICAgICAgICAgICJidXQgbm8gZW5jb2RpbmcgZGVjbGFyZWQ7ICIKKyAgICAgICAgICAgICAgICAic2VlIGh0dHA6Ly9weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMjYzLyBmb3IgZGV0YWlscyIsCisgICAgICAgICAgICAgICAgYmFkY2hhciwgdG9rLT5maWxlbmFtZSwgdG9rLT5saW5lbm8gKyAxKTsKICAgICAgICAgcmV0dXJuIGVycm9yX3JldCh0b2spOwogICAgIH0KICNlbmRpZgpAQCAtODU2LDYgKzg1MCw3IEBACiAjaWZuZGVmIFBHRU4KICAgICBQeV9YREVDUkVGKHRvay0+ZGVjb2RpbmdfcmVhZGxpbmUpOwogICAgIFB5X1hERUNSRUYodG9rLT5kZWNvZGluZ19idWZmZXIpOworICAgIFB5X1hERUNSRUYodG9rLT5maWxlbmFtZSk7CiAjZW5kaWYKICAgICBpZiAodG9rLT5mcCAhPSBOVUxMICYmIHRvay0+YnVmICE9IE5VTEwpCiAgICAgICAgIFB5TWVtX0ZSRUUodG9rLT5idWYpOwpAQCAtMTI1MCw4ICsxMjQ1LDEzIEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICBpZiAodG9rLT5hbHR3YXJuaW5nKSB7Ci0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIlczogaW5jb25zaXN0ZW50IHVzZSBvZiB0YWJzIGFuZCBzcGFjZXMgIgorI2lmZGVmIFBHRU4KKyAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImluY29uc2lzdGVudCB1c2Ugb2YgdGFicyBhbmQgc3BhY2VzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGluZGVudGF0aW9uXG4iKTsKKyNlbHNlCisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiJVU6IGluY29uc2lzdGVudCB1c2Ugb2YgdGFicyBhbmQgc3BhY2VzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGluZGVudGF0aW9uXG4iLCB0b2stPmZpbGVuYW1lKTsKKyNlbmRpZgogICAgICAgICB0b2stPmFsdHdhcm5pbmcgPSAwOwogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTEyNjAsMTQgKzEyNjAsMTYgQEAKICNpZmRlZiBQR0VOCiAjZGVmaW5lIHZlcmlmeV9pZGVudGlmaWVyKHRvaykgMQogI2Vsc2UKLS8qIFZlcmlmeSB0aGF0IHRoZSBpZGVudGlmaWVyIGZvbGxvd3MgUEVQIDMxMzEuICovCisvKiBWZXJpZnkgdGhhdCB0aGUgaWRlbnRpZmllciBmb2xsb3dzIFBFUCAzMTMxLgorICAgQWxsIGlkZW50aWZpZXIgc3RyaW5ncyBhcmUgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiIHVuaWNvZGUgb2JqZWN0cy4KKyAqLwogc3RhdGljIGludAogdmVyaWZ5X2lkZW50aWZpZXIoc3RydWN0IHRva19zdGF0ZSAqdG9rKQogewogICAgIFB5T2JqZWN0ICpzOwogICAgIGludCByZXN1bHQ7CiAgICAgcyA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHRvay0+c3RhcnQsIHRvay0+Y3VyIC0gdG9rLT5zdGFydCwgTlVMTCk7Ci0gICAgaWYgKHMgPT0gTlVMTCkgeworICAgIGlmIChzID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHMpID09IC0xKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX0lERU5USUZJRVI7CkBAIC0xNDEwLDEzICsxNDEyLDIwIEBACiAgICAgLyogSWRlbnRpZmllciAobW9zdCBmcmVxdWVudCB0b2tlbiEpICovCiAgICAgbm9uYXNjaWkgPSAwOwogICAgIGlmIChpc19wb3RlbnRpYWxfaWRlbnRpZmllcl9zdGFydChjKSkgewotICAgICAgICAvKiBQcm9jZXNzIGIiIiwgciIiIGFuZCBiciIiICovCi0gICAgICAgIGlmIChjID09ICdiJyB8fCBjID09ICdCJykgewotICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgaWYgKGMgPT0gJyInIHx8IGMgPT0gJ1wnJykKLSAgICAgICAgICAgICAgICBnb3RvIGxldHRlcl9xdW90ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYyA9PSAncicgfHwgYyA9PSAnUicpIHsKKyAgICAgICAgLyogUHJvY2VzcyBiIiIsIHIiIiwgdSIiLCBiciIiIGFuZCByYiIiICovCisgICAgICAgIGludCBzYXdfYiA9IDAsIHNhd19yID0gMCwgc2F3X3UgPSAwOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgaWYgKCEoc2F3X2IgfHwgc2F3X3UpICYmIChjID09ICdiJyB8fCBjID09ICdCJykpCisgICAgICAgICAgICAgICAgc2F3X2IgPSAxOworICAgICAgICAgICAgLyogU2luY2UgdGhpcyBpcyBhIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHN1cHBvcnQgbGl0ZXJhbCB3ZSBkb24ndAorICAgICAgICAgICAgICAgd2FudCB0byBzdXBwb3J0IGl0IGluIGFyYml0cmFyeSBvcmRlciBsaWtlIGJ5dGUgbGl0ZXJhbHMuICovCisgICAgICAgICAgICBlbHNlIGlmICghKHNhd19iIHx8IHNhd191IHx8IHNhd19yKSAmJiAoYyA9PSAndScgfHwgYyA9PSAnVScpKQorICAgICAgICAgICAgICAgIHNhd191ID0gMTsKKyAgICAgICAgICAgIC8qIHVyIiIgYW5kIHJ1IiIgYXJlIG5vdCBzdXBwb3J0ZWQgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X3IgfHwgc2F3X3UpICYmIChjID09ICdyJyB8fCBjID09ICdSJykpCisgICAgICAgICAgICAgICAgc2F3X3IgPSAxOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgaWYgKGMgPT0gJyInIHx8IGMgPT0gJ1wnJykKICAgICAgICAgICAgICAgICBnb3RvIGxldHRlcl9xdW90ZTsKQEAgLTE2OTIsMTcgKzE3MDEsMTggQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0vKiBHZXQgLSotIGVuY29kaW5nIC0qLSBmcm9tIGEgUHl0aG9uIGZpbGUuCisvKiBHZXQgdGhlIGVuY29kaW5nIG9mIGEgUHl0aG9uIGZpbGUuIENoZWNrIGZvciB0aGUgY29kaW5nIGNvb2tpZSBhbmQgY2hlY2sgaWYKKyAgIHRoZSBmaWxlIHN0YXJ0cyB3aXRoIGEgQk9NLgogCi0gICBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcgcmV0dXJucyBOVUxMIHdoZW4gaXQgY2FuJ3QgZmluZCB0aGUgZW5jb2RpbmcgaW4KLSAgIHRoZSBmaXJzdCBvciBzZWNvbmQgbGluZSBvZiB0aGUgZmlsZSAoaW4gd2hpY2ggY2FzZSB0aGUgZW5jb2RpbmcKLSAgIHNob3VsZCBiZSBhc3N1bWVkIHRvIGJlIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKSkuCisgICBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmdGaWxlbmFtZSgpIHJldHVybnMgTlVMTCB3aGVuIGl0IGNhbid0IGZpbmQgdGhlCisgICBlbmNvZGluZyBpbiB0aGUgZmlyc3Qgb3Igc2Vjb25kIGxpbmUgb2YgdGhlIGZpbGUgKGluIHdoaWNoIGNhc2UgdGhlIGVuY29kaW5nCisgICBzaG91bGQgYmUgYXNzdW1lZCB0byBiZSBVVEYtOCkuCiAKLSAgIFRoZSBjaGFyICogcmV0dXJuZWQgaXMgbWFsbG9jJ2VkIHZpYSBQeU1lbV9NQUxMT0MoKSBhbmQgdGh1cyBtdXN0IGJlIGZyZWVkCi0gICBieSB0aGUgY2FsbGVyLgotKi8KKyAgIFRoZSBjaGFyKiByZXR1cm5lZCBpcyBtYWxsb2MnZWQgdmlhIFB5TWVtX01BTExPQygpIGFuZCB0aHVzIG11c3QgYmUgZnJlZWQKKyAgIGJ5IHRoZSBjYWxsZXIuICovCisKIGNoYXIgKgotUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKGludCBmZCkKK1B5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKGludCBmZCwgUHlPYmplY3QgKmZpbGVuYW1lKQogewogICAgIHN0cnVjdCB0b2tfc3RhdGUgKnRvazsKICAgICBGSUxFICpmcDsKQEAgLTE3MjEsNiArMTczMSwyMCBAQAogICAgICAgICBmY2xvc2UoZnApOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisjaWZuZGVmIFBHRU4KKyAgICBpZiAoZmlsZW5hbWUgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZmlsZW5hbWUpOworICAgICAgICB0b2stPmZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0b2stPmZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxzdHJpbmc+Iik7CisgICAgICAgIGlmICh0b2stPmZpbGVuYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIGZjbG9zZShmcCk7CisgICAgICAgICAgICBQeVRva2VuaXplcl9GcmVlKHRvayk7CisgICAgICAgICAgICByZXR1cm4gZW5jb2Rpbmc7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKICAgICB3aGlsZSAodG9rLT5saW5lbm8gPCAyICYmIHRvay0+ZG9uZSA9PSBFX09LKSB7CiAgICAgICAgIFB5VG9rZW5pemVyX0dldCh0b2ssICZwX3N0YXJ0LCAmcF9lbmQpOwogICAgIH0KQEAgLTE3MzQsNiArMTc1OCwxMiBAQAogICAgIHJldHVybiBlbmNvZGluZzsKIH0KIAorY2hhciAqCitQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoaW50IGZkKQoreworICAgIHJldHVybiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmdGaWxlbmFtZShmZCwgTlVMTCk7Cit9CisKICNpZmRlZiBQeV9ERUJVRwogCiB2b2lkCmRpZmYgLS1naXQgYS9QYXJzZXIvdG9rZW5pemVyLmggYi9QYXJzZXIvdG9rZW5pemVyLmgKaW5kZXggMmJlM2JmMi4uZWQxZjNhYSAxMDA2NDQKLS0tIGEvUGFyc2VyL3Rva2VuaXplci5oCisrKyBiL1BhcnNlci90b2tlbml6ZXIuaApAQCAtNDAsNyArNDAsMTMgQEAKICAgICBpbnQgbGV2ZWw7ICAgICAgICAgIC8qICgpIFtdIHt9IFBhcmVudGhlc2VzIG5lc3RpbmcgbGV2ZWwgKi8KICAgICAgICAgICAgIC8qIFVzZWQgdG8gYWxsb3cgZnJlZSBjb250aW51YXRpb25zIGluc2lkZSB0aGVtICovCiAgICAgLyogU3R1ZmYgZm9yIGNoZWNraW5nIG9uIGRpZmZlcmVudCB0YWIgc2l6ZXMgKi8KLSAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsgICAvKiBlbmNvZGVkIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCisjaWZuZGVmIFBHRU4KKyAgICAvKiBwZ2VuIGRvZXNuJ3QgaGF2ZSBhY2Nlc3MgdG8gUHl0aG9uIGNvZGVjcywgaXQgY2Fubm90IGRlY29kZSB0aGUgaW5wdXQKKyAgICAgICBmaWxlbmFtZS4gVGhlIGJ5dGVzIGZpbGVuYW1lIG1pZ2h0IGJlIGtlcHQsIGJ1dCBpdCBpcyBvbmx5IHVzZWQgYnkKKyAgICAgICBpbmRlbnRlcnJvcigpIGFuZCBpdCBpcyBub3QgcmVhbGx5IG5lZWRlZDogcGdlbiBvbmx5IGNvbXBpbGVzIG9uZSBmaWxlCisgICAgICAgKEdyYW1tYXIvR3JhbW1hcikuICovCisgICAgUHlPYmplY3QgKmZpbGVuYW1lOworI2VuZGlmCiAgICAgaW50IGFsdHdhcm5pbmc7ICAgICAvKiBJc3N1ZSB3YXJuaW5nIGlmIGFsdGVybmF0ZSB0YWJzIGRvbid0IG1hdGNoICovCiAgICAgaW50IGFsdGVycm9yOyAgICAgICAvKiBJc3N1ZSBlcnJvciBpZiBhbHRlcm5hdGUgdGFicyBkb24ndCBtYXRjaCAqLwogICAgIGludCBhbHR0YWJzaXplOyAgICAgLyogQWx0ZXJuYXRlIHRhYiBzcGFjaW5nICovCkBAIC02OSw3ICs3NSw2IEBACiBleHRlcm4gaW50IFB5VG9rZW5pemVyX0dldChzdHJ1Y3QgdG9rX3N0YXRlICosIGNoYXIgKiosIGNoYXIgKiopOwogZXh0ZXJuIGNoYXIgKiBQeVRva2VuaXplcl9SZXN0b3JlRW5jb2Rpbmcoc3RydWN0IHRva19zdGF0ZSogdG9rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbiwgaW50ICpvZmZzZXQpOwotZXh0ZXJuIGNoYXIgKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoaW50KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9QeXRob24vUHl0aG9uLWFzdC5jIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwppbmRleCBhMjc2YjZjLi44MDVmMmI4IDEwMDY0NAotLS0gYS9QeXRob24vUHl0aG9uLWFzdC5jCisrKyBiL1B5dGhvbi9QeXRob24tYXN0LmMKQEAgLTEsMTMgKzEsNiBAQAogLyogRmlsZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBQYXJzZXIvYXNkbF9jLnB5LiAqLwogCi0KLS8qCi0gICBfX3ZlcnNpb25fXyA4MjE2My4KLQotICAgVGhpcyBtb2R1bGUgbXVzdCBiZSBjb21taXR0ZWQgc2VwYXJhdGVseSBhZnRlciBlYWNoIEFTVCBncmFtbWFyIGNoYW5nZTsKLSAgIFRoZSBfX3ZlcnNpb25fXyBudW1iZXIgaXMgc2V0IHRvIHRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGNvbW1pdAotICAgY29udGFpbmluZyB0aGUgZ3JhbW1hciBjaGFuZ2UuCi0qLworI2luY2x1ZGUgPHN0ZGRlZi5oPgogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiUHl0aG9uLWFzdC5oIgpAQCAtMTYsNiArOSw3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0ICptb2RfdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9tb2Qodm9pZCopOwogc3RhdGljIFB5VHlwZU9iamVjdCAqTW9kdWxlX3R5cGU7CitfUHlfSURFTlRJRklFUihib2R5KTsKIHN0YXRpYyBjaGFyICpNb2R1bGVfZmllbGRzW109ewogICAgICAgICAiYm9keSIsCiB9OwpAQCAtMzIsMTIgKzI2LDE4IEBACiAgICAgICAgICJib2R5IiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpzdG10X3R5cGU7CitfUHlfSURFTlRJRklFUihsaW5lbm8pOworX1B5X0lERU5USUZJRVIoY29sX29mZnNldCk7CiBzdGF0aWMgY2hhciAqc3RtdF9hdHRyaWJ1dGVzW10gPSB7CiAgICAgICAgICJsaW5lbm8iLAogICAgICAgICAiY29sX29mZnNldCIsCiB9Owogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX3N0bXQodm9pZCopOwogc3RhdGljIFB5VHlwZU9iamVjdCAqRnVuY3Rpb25EZWZfdHlwZTsKK19QeV9JREVOVElGSUVSKG5hbWUpOworX1B5X0lERU5USUZJRVIoYXJncyk7CitfUHlfSURFTlRJRklFUihkZWNvcmF0b3JfbGlzdCk7CitfUHlfSURFTlRJRklFUihyZXR1cm5zKTsKIHN0YXRpYyBjaGFyICpGdW5jdGlvbkRlZl9maWVsZHNbXT17CiAgICAgICAgICJuYW1lIiwKICAgICAgICAgImFyZ3MiLApAQCAtNDYsNiArNDYsMTAgQEAKICAgICAgICAgInJldHVybnMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkNsYXNzRGVmX3R5cGU7CitfUHlfSURFTlRJRklFUihiYXNlcyk7CitfUHlfSURFTlRJRklFUihrZXl3b3Jkcyk7CitfUHlfSURFTlRJRklFUihzdGFyYXJncyk7CitfUHlfSURFTlRJRklFUihrd2FyZ3MpOwogc3RhdGljIGNoYXIgKkNsYXNzRGVmX2ZpZWxkc1tdPXsKICAgICAgICAgIm5hbWUiLAogICAgICAgICAiYmFzZXMiLApAQCAtNTYsMTAgKzYwLDEyIEBACiAgICAgICAgICJkZWNvcmF0b3JfbGlzdCIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqUmV0dXJuX3R5cGU7CitfUHlfSURFTlRJRklFUih2YWx1ZSk7CiBzdGF0aWMgY2hhciAqUmV0dXJuX2ZpZWxkc1tdPXsKICAgICAgICAgInZhbHVlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpEZWxldGVfdHlwZTsKK19QeV9JREVOVElGSUVSKHRhcmdldHMpOwogc3RhdGljIGNoYXIgKkRlbGV0ZV9maWVsZHNbXT17CiAgICAgICAgICJ0YXJnZXRzIiwKIH07CkBAIC02OSwxMiArNzUsMTYgQEAKICAgICAgICAgInZhbHVlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpBdWdBc3NpZ25fdHlwZTsKK19QeV9JREVOVElGSUVSKHRhcmdldCk7CitfUHlfSURFTlRJRklFUihvcCk7CiBzdGF0aWMgY2hhciAqQXVnQXNzaWduX2ZpZWxkc1tdPXsKICAgICAgICAgInRhcmdldCIsCiAgICAgICAgICJvcCIsCiAgICAgICAgICJ2YWx1ZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRm9yX3R5cGU7CitfUHlfSURFTlRJRklFUihpdGVyKTsKK19QeV9JREVOVElGSUVSKG9yZWxzZSk7CiBzdGF0aWMgY2hhciAqRm9yX2ZpZWxkc1tdPXsKICAgICAgICAgInRhcmdldCIsCiAgICAgICAgICJpdGVyIiwKQEAgLTgyLDYgKzkyLDcgQEAKICAgICAgICAgIm9yZWxzZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqV2hpbGVfdHlwZTsKK19QeV9JREVOVElGSUVSKHRlc3QpOwogc3RhdGljIGNoYXIgKldoaWxlX2ZpZWxkc1tdPXsKICAgICAgICAgInRlc3QiLAogICAgICAgICAiYm9keSIsCkBAIC05NCwzNyArMTA1LDQxIEBACiAgICAgICAgICJvcmVsc2UiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKldpdGhfdHlwZTsKK19QeV9JREVOVElGSUVSKGl0ZW1zKTsKIHN0YXRpYyBjaGFyICpXaXRoX2ZpZWxkc1tdPXsKLSAgICAgICAgImNvbnRleHRfZXhwciIsCi0gICAgICAgICJvcHRpb25hbF92YXJzIiwKKyAgICAgICAgIml0ZW1zIiwKICAgICAgICAgImJvZHkiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlJhaXNlX3R5cGU7CitfUHlfSURFTlRJRklFUihleGMpOworX1B5X0lERU5USUZJRVIoY2F1c2UpOwogc3RhdGljIGNoYXIgKlJhaXNlX2ZpZWxkc1tdPXsKICAgICAgICAgImV4YyIsCiAgICAgICAgICJjYXVzZSIsCiB9Owotc3RhdGljIFB5VHlwZU9iamVjdCAqVHJ5RXhjZXB0X3R5cGU7Ci1zdGF0aWMgY2hhciAqVHJ5RXhjZXB0X2ZpZWxkc1tdPXsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKlRyeV90eXBlOworX1B5X0lERU5USUZJRVIoaGFuZGxlcnMpOworX1B5X0lERU5USUZJRVIoZmluYWxib2R5KTsKK3N0YXRpYyBjaGFyICpUcnlfZmllbGRzW109ewogICAgICAgICAiYm9keSIsCiAgICAgICAgICJoYW5kbGVycyIsCiAgICAgICAgICJvcmVsc2UiLAotfTsKLXN0YXRpYyBQeVR5cGVPYmplY3QgKlRyeUZpbmFsbHlfdHlwZTsKLXN0YXRpYyBjaGFyICpUcnlGaW5hbGx5X2ZpZWxkc1tdPXsKLSAgICAgICAgImJvZHkiLAogICAgICAgICAiZmluYWxib2R5IiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpBc3NlcnRfdHlwZTsKK19QeV9JREVOVElGSUVSKG1zZyk7CiBzdGF0aWMgY2hhciAqQXNzZXJ0X2ZpZWxkc1tdPXsKICAgICAgICAgInRlc3QiLAogICAgICAgICAibXNnIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpJbXBvcnRfdHlwZTsKK19QeV9JREVOVElGSUVSKG5hbWVzKTsKIHN0YXRpYyBjaGFyICpJbXBvcnRfZmllbGRzW109ewogICAgICAgICAibmFtZXMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkltcG9ydEZyb21fdHlwZTsKK19QeV9JREVOVElGSUVSKG1vZHVsZSk7CitfUHlfSURFTlRJRklFUihsZXZlbCk7CiBzdGF0aWMgY2hhciAqSW1wb3J0RnJvbV9maWVsZHNbXT17CiAgICAgICAgICJtb2R1bGUiLAogICAgICAgICAibmFtZXMiLApAQCAtMTUyLDE3ICsxNjcsMjEgQEAKIH07CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfZXhwcih2b2lkKik7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpCb29sT3BfdHlwZTsKK19QeV9JREVOVElGSUVSKHZhbHVlcyk7CiBzdGF0aWMgY2hhciAqQm9vbE9wX2ZpZWxkc1tdPXsKICAgICAgICAgIm9wIiwKICAgICAgICAgInZhbHVlcyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQmluT3BfdHlwZTsKK19QeV9JREVOVElGSUVSKGxlZnQpOworX1B5X0lERU5USUZJRVIocmlnaHQpOwogc3RhdGljIGNoYXIgKkJpbk9wX2ZpZWxkc1tdPXsKICAgICAgICAgImxlZnQiLAogICAgICAgICAib3AiLAogICAgICAgICAicmlnaHQiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlVuYXJ5T3BfdHlwZTsKK19QeV9JREVOVElGSUVSKG9wZXJhbmQpOwogc3RhdGljIGNoYXIgKlVuYXJ5T3BfZmllbGRzW109ewogICAgICAgICAib3AiLAogICAgICAgICAib3BlcmFuZCIsCkBAIC0xNzksMTUgKzE5OCwxOSBAQAogICAgICAgICAib3JlbHNlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpEaWN0X3R5cGU7CitfUHlfSURFTlRJRklFUihrZXlzKTsKIHN0YXRpYyBjaGFyICpEaWN0X2ZpZWxkc1tdPXsKICAgICAgICAgImtleXMiLAogICAgICAgICAidmFsdWVzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpTZXRfdHlwZTsKK19QeV9JREVOVElGSUVSKGVsdHMpOwogc3RhdGljIGNoYXIgKlNldF9maWVsZHNbXT17CiAgICAgICAgICJlbHRzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpMaXN0Q29tcF90eXBlOworX1B5X0lERU5USUZJRVIoZWx0KTsKK19QeV9JREVOVElGSUVSKGdlbmVyYXRvcnMpOwogc3RhdGljIGNoYXIgKkxpc3RDb21wX2ZpZWxkc1tdPXsKICAgICAgICAgImVsdCIsCiAgICAgICAgICJnZW5lcmF0b3JzIiwKQEAgLTE5OCw2ICsyMjEsNyBAQAogICAgICAgICAiZ2VuZXJhdG9ycyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRGljdENvbXBfdHlwZTsKK19QeV9JREVOVElGSUVSKGtleSk7CiBzdGF0aWMgY2hhciAqRGljdENvbXBfZmllbGRzW109ewogICAgICAgICAia2V5IiwKICAgICAgICAgInZhbHVlIiwKQEAgLTIxMiwxMyArMjM2LDIwIEBACiBzdGF0aWMgY2hhciAqWWllbGRfZmllbGRzW109ewogICAgICAgICAidmFsdWUiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKllpZWxkRnJvbV90eXBlOworc3RhdGljIGNoYXIgKllpZWxkRnJvbV9maWVsZHNbXT17CisgICAgICAgICJ2YWx1ZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQ29tcGFyZV90eXBlOworX1B5X0lERU5USUZJRVIob3BzKTsKK19QeV9JREVOVElGSUVSKGNvbXBhcmF0b3JzKTsKIHN0YXRpYyBjaGFyICpDb21wYXJlX2ZpZWxkc1tdPXsKICAgICAgICAgImxlZnQiLAogICAgICAgICAib3BzIiwKICAgICAgICAgImNvbXBhcmF0b3JzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpDYWxsX3R5cGU7CitfUHlfSURFTlRJRklFUihmdW5jKTsKIHN0YXRpYyBjaGFyICpDYWxsX2ZpZWxkc1tdPXsKICAgICAgICAgImZ1bmMiLAogICAgICAgICAiYXJncyIsCkBAIC0yMjcsMTAgKzI1OCwxMiBAQAogICAgICAgICAia3dhcmdzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpOdW1fdHlwZTsKK19QeV9JREVOVElGSUVSKG4pOwogc3RhdGljIGNoYXIgKk51bV9maWVsZHNbXT17CiAgICAgICAgICJuIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpTdHJfdHlwZTsKK19QeV9JREVOVElGSUVSKHMpOwogc3RhdGljIGNoYXIgKlN0cl9maWVsZHNbXT17CiAgICAgICAgICJzIiwKIH07CkBAIC0yNDAsMTIgKzI3MywxNSBAQAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkVsbGlwc2lzX3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpBdHRyaWJ1dGVfdHlwZTsKK19QeV9JREVOVElGSUVSKGF0dHIpOworX1B5X0lERU5USUZJRVIoY3R4KTsKIHN0YXRpYyBjaGFyICpBdHRyaWJ1dGVfZmllbGRzW109ewogICAgICAgICAidmFsdWUiLAogICAgICAgICAiYXR0ciIsCiAgICAgICAgICJjdHgiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlN1YnNjcmlwdF90eXBlOworX1B5X0lERU5USUZJRVIoc2xpY2UpOwogc3RhdGljIGNoYXIgKlN1YnNjcmlwdF9maWVsZHNbXT17CiAgICAgICAgICJ2YWx1ZSIsCiAgICAgICAgICJzbGljZSIsCkBAIC0yNTcsNiArMjkzLDcgQEAKICAgICAgICAgImN0eCIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqTmFtZV90eXBlOworX1B5X0lERU5USUZJRVIoaWQpOwogc3RhdGljIGNoYXIgKk5hbWVfZmllbGRzW109ewogICAgICAgICAiaWQiLAogICAgICAgICAiY3R4IiwKQEAgLTI4NCwxMiArMzIxLDE2IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpzbGljZV90eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX3NsaWNlKHZvaWQqKTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlNsaWNlX3R5cGU7CitfUHlfSURFTlRJRklFUihsb3dlcik7CitfUHlfSURFTlRJRklFUih1cHBlcik7CitfUHlfSURFTlRJRklFUihzdGVwKTsKIHN0YXRpYyBjaGFyICpTbGljZV9maWVsZHNbXT17CiAgICAgICAgICJsb3dlciIsCiAgICAgICAgICJ1cHBlciIsCiAgICAgICAgICJzdGVwIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpFeHRTbGljZV90eXBlOworX1B5X0lERU5USUZJRVIoZGltcyk7CiBzdGF0aWMgY2hhciAqRXh0U2xpY2VfZmllbGRzW109ewogICAgICAgICAiZGltcyIsCiB9OwpAQCAtMzQ1LDYgKzM4Niw3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpOb3RJbl90eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqY29tcHJlaGVuc2lvbl90eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2NvbXByZWhlbnNpb24odm9pZCopOworX1B5X0lERU5USUZJRVIoaWZzKTsKIHN0YXRpYyBjaGFyICpjb21wcmVoZW5zaW9uX2ZpZWxkc1tdPXsKICAgICAgICAgInRhcmdldCIsCiAgICAgICAgICJpdGVyIiwKQEAgLTM1Nyw2ICszOTksNyBAQAogfTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9leGNlcHRoYW5kbGVyKHZvaWQqKTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkV4Y2VwdEhhbmRsZXJfdHlwZTsKK19QeV9JREVOVElGSUVSKHR5cGUpOwogc3RhdGljIGNoYXIgKkV4Y2VwdEhhbmRsZXJfZmllbGRzW109ewogICAgICAgICAidHlwZSIsCiAgICAgICAgICJuYW1lIiwKQEAgLTM2NCw2ICs0MDcsMTMgQEAKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICphcmd1bWVudHNfdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9hcmd1bWVudHModm9pZCopOworX1B5X0lERU5USUZJRVIodmFyYXJnKTsKK19QeV9JREVOVElGSUVSKHZhcmFyZ2Fubm90YXRpb24pOworX1B5X0lERU5USUZJRVIoa3dvbmx5YXJncyk7CitfUHlfSURFTlRJRklFUihrd2FyZyk7CitfUHlfSURFTlRJRklFUihrd2FyZ2Fubm90YXRpb24pOworX1B5X0lERU5USUZJRVIoZGVmYXVsdHMpOworX1B5X0lERU5USUZJRVIoa3dfZGVmYXVsdHMpOwogc3RhdGljIGNoYXIgKmFyZ3VtZW50c19maWVsZHNbXT17CiAgICAgICAgICJhcmdzIiwKICAgICAgICAgInZhcmFyZyIsCkBAIC0zNzYsNiArNDI2LDggQEAKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICphcmdfdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9hcmcodm9pZCopOworX1B5X0lERU5USUZJRVIoYXJnKTsKK19QeV9JREVOVElGSUVSKGFubm90YXRpb24pOwogc3RhdGljIGNoYXIgKmFyZ19maWVsZHNbXT17CiAgICAgICAgICJhcmciLAogICAgICAgICAiYW5ub3RhdGlvbiIsCkBAIC0zODgsMTkgKzQ0MCw1NCBAQAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmFsaWFzX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfYWxpYXModm9pZCopOworX1B5X0lERU5USUZJRVIoYXNuYW1lKTsKIHN0YXRpYyBjaGFyICphbGlhc19maWVsZHNbXT17CiAgICAgICAgICJuYW1lIiwKICAgICAgICAgImFzbmFtZSIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqd2l0aGl0ZW1fdHlwZTsKK3N0YXRpYyBQeU9iamVjdCogYXN0Mm9ial93aXRoaXRlbSh2b2lkKik7CitfUHlfSURFTlRJRklFUihjb250ZXh0X2V4cHIpOworX1B5X0lERU5USUZJRVIob3B0aW9uYWxfdmFycyk7CitzdGF0aWMgY2hhciAqd2l0aGl0ZW1fZmllbGRzW109eworICAgICAgICAiY29udGV4dF9leHByIiwKKyAgICAgICAgIm9wdGlvbmFsX3ZhcnMiLAorfTsKIAogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICpkaWN0OworfSBBU1Rfb2JqZWN0OworCitzdGF0aWMgdm9pZAorYXN0X2RlYWxsb2MoQVNUX29iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKHNlbGYpOworfQorCitzdGF0aWMgaW50Cithc3RfdHJhdmVyc2UoQVNUX29iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+ZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCithc3RfY2xlYXIoQVNUX29iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKK30KKwogc3RhdGljIGludAogYXN0X3R5cGVfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKKyAgICBfUHlfSURFTlRJRklFUihfZmllbGRzKTsKICAgICBQeV9zc2l6ZV90IGksIG51bWZpZWxkcyA9IDA7CiAgICAgaW50IHJlcyA9IC0xOwogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKmZpZWxkczsKLSAgICBmaWVsZHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCopUHlfVFlQRShzZWxmKSwgIl9maWVsZHMiKTsKKyAgICBmaWVsZHMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCopUHlfVFlQRShzZWxmKSwgJlB5SWRfX2ZpZWxkcyk7CiAgICAgaWYgKCFmaWVsZHMpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgaWYgKGZpZWxkcykgewpAQCAtNDUwLDcgKzUzNyw4IEBACiBhc3RfdHlwZV9yZWR1Y2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBQeU9iamVjdCAqZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fZGljdF9fIik7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworICAgIFB5T2JqZWN0ICpkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtNDcwLDEyICs1NTgsMTcgQEAKICAgICB7TlVMTH0KIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBhc3RfdHlwZV9nZXRzZXRzW10gPSB7CisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBQeU9iamVjdF9HZW5lcmljU2V0RGljdH0sCisgICAge05VTEx9Cit9OworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEFTVF90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgIl9hc3QuQVNUIiwKLSAgICBzaXplb2YoUHlPYmplY3QpLAorICAgIHNpemVvZihBU1Rfb2JqZWN0KSwKICAgICAwLAotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpYXN0X2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCkBAIC00OTAsMjYgKzU4MywyNiBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAvKiB0cF9nZXRhdHRybyAqLwogICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgICh0cmF2ZXJzZXByb2MpYXN0X3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWFzdF9jbGVhciwgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgYXN0X3R5cGVfbWV0aG9kcywgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBhc3RfdHlwZV9nZXRzZXRzLCAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZihBU1Rfb2JqZWN0LCBkaWN0KSwvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgKGluaXRwcm9jKWFzdF90eXBlX2luaXQsIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgLyogdHBfbmV3ICovCi0gICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogCkBAIC01MzYsNiArNjI5LDcgQEAKIHN0YXRpYyBpbnQgYWRkX2F0dHJpYnV0ZXMoUHlUeXBlT2JqZWN0KiB0eXBlLCBjaGFyKiphdHRycywgaW50IG51bV9maWVsZHMpCiB7CiAgICAgaW50IGksIHJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihfYXR0cmlidXRlcyk7CiAgICAgUHlPYmplY3QgKnMsICpsID0gUHlUdXBsZV9OZXcobnVtX2ZpZWxkcyk7CiAgICAgaWYgKCFsKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU0Nyw3ICs2NDEsNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obCwgaSwgcyk7CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoKFB5T2JqZWN0Kil0eXBlLCAiX2F0dHJpYnV0ZXMiLCBsKSA+PSAwOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9TZXRBdHRySWQoKFB5T2JqZWN0Kil0eXBlLCAmUHlJZF9fYXR0cmlidXRlcywgbCkgPj0gMDsKICAgICBQeV9ERUNSRUYobCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTU1Niw3ICs2NTAsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfbGlzdChhc2RsX3NlcSAqc2VxLCBQeU9iamVjdCogKCpmdW5jKSh2b2lkKikpCiB7Ci0gICAgaW50IGksIG4gPSBhc2RsX3NlcV9MRU4oc2VxKTsKKyAgICBQeV9zc2l6ZV90IGksIG4gPSBhc2RsX3NlcV9MRU4oc2VxKTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlMaXN0X05ldyhuKTsKICAgICBQeU9iamVjdCAqdmFsdWU7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC01ODEsNiArNjc1LDcgQEAKIH0KICNkZWZpbmUgYXN0Mm9ial9pZGVudGlmaWVyIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfc3RyaW5nIGFzdDJvYmpfb2JqZWN0CisjZGVmaW5lIGFzdDJvYmpfYnl0ZXMgYXN0Mm9ial9vYmplY3QKIAogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2ludChsb25nIGIpCiB7CkBAIC02MTgsNiArNzEzLDE1IEBACiAgICAgcmV0dXJuIG9iajJhc3Rfb2JqZWN0KG9iaiwgb3V0LCBhcmVuYSk7CiB9CiAKK3N0YXRpYyBpbnQgb2JqMmFzdF9ieXRlcyhQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiQVNUIGJ5dGVzIG11c3QgYmUgb2YgdHlwZSBieXRlcyIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIG9iajJhc3Rfb2JqZWN0KG9iaiwgb3V0LCBhcmVuYSk7Cit9CisKIHN0YXRpYyBpbnQgb2JqMmFzdF9pbnQoUHlPYmplY3QqIG9iaiwgaW50KiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGludCBpOwpAQCAtNjkxLDE1ICs3OTUsMTIgQEAKICAgICAgICAgaWYgKCFXaGlsZV90eXBlKSByZXR1cm4gMDsKICAgICAgICAgSWZfdHlwZSA9IG1ha2VfdHlwZSgiSWYiLCBzdG10X3R5cGUsIElmX2ZpZWxkcywgMyk7CiAgICAgICAgIGlmICghSWZfdHlwZSkgcmV0dXJuIDA7Ci0gICAgICAgIFdpdGhfdHlwZSA9IG1ha2VfdHlwZSgiV2l0aCIsIHN0bXRfdHlwZSwgV2l0aF9maWVsZHMsIDMpOworICAgICAgICBXaXRoX3R5cGUgPSBtYWtlX3R5cGUoIldpdGgiLCBzdG10X3R5cGUsIFdpdGhfZmllbGRzLCAyKTsKICAgICAgICAgaWYgKCFXaXRoX3R5cGUpIHJldHVybiAwOwogICAgICAgICBSYWlzZV90eXBlID0gbWFrZV90eXBlKCJSYWlzZSIsIHN0bXRfdHlwZSwgUmFpc2VfZmllbGRzLCAyKTsKICAgICAgICAgaWYgKCFSYWlzZV90eXBlKSByZXR1cm4gMDsKLSAgICAgICAgVHJ5RXhjZXB0X3R5cGUgPSBtYWtlX3R5cGUoIlRyeUV4Y2VwdCIsIHN0bXRfdHlwZSwgVHJ5RXhjZXB0X2ZpZWxkcywgMyk7Ci0gICAgICAgIGlmICghVHJ5RXhjZXB0X3R5cGUpIHJldHVybiAwOwotICAgICAgICBUcnlGaW5hbGx5X3R5cGUgPSBtYWtlX3R5cGUoIlRyeUZpbmFsbHkiLCBzdG10X3R5cGUsIFRyeUZpbmFsbHlfZmllbGRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMik7Ci0gICAgICAgIGlmICghVHJ5RmluYWxseV90eXBlKSByZXR1cm4gMDsKKyAgICAgICAgVHJ5X3R5cGUgPSBtYWtlX3R5cGUoIlRyeSIsIHN0bXRfdHlwZSwgVHJ5X2ZpZWxkcywgNCk7CisgICAgICAgIGlmICghVHJ5X3R5cGUpIHJldHVybiAwOwogICAgICAgICBBc3NlcnRfdHlwZSA9IG1ha2VfdHlwZSgiQXNzZXJ0Iiwgc3RtdF90eXBlLCBBc3NlcnRfZmllbGRzLCAyKTsKICAgICAgICAgaWYgKCFBc3NlcnRfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIEltcG9ydF90eXBlID0gbWFrZV90eXBlKCJJbXBvcnQiLCBzdG10X3R5cGUsIEltcG9ydF9maWVsZHMsIDEpOwpAQCAtNzQ3LDYgKzg0OCw4IEBACiAgICAgICAgIGlmICghR2VuZXJhdG9yRXhwX3R5cGUpIHJldHVybiAwOwogICAgICAgICBZaWVsZF90eXBlID0gbWFrZV90eXBlKCJZaWVsZCIsIGV4cHJfdHlwZSwgWWllbGRfZmllbGRzLCAxKTsKICAgICAgICAgaWYgKCFZaWVsZF90eXBlKSByZXR1cm4gMDsKKyAgICAgICAgWWllbGRGcm9tX3R5cGUgPSBtYWtlX3R5cGUoIllpZWxkRnJvbSIsIGV4cHJfdHlwZSwgWWllbGRGcm9tX2ZpZWxkcywgMSk7CisgICAgICAgIGlmICghWWllbGRGcm9tX3R5cGUpIHJldHVybiAwOwogICAgICAgICBDb21wYXJlX3R5cGUgPSBtYWtlX3R5cGUoIkNvbXBhcmUiLCBleHByX3R5cGUsIENvbXBhcmVfZmllbGRzLCAzKTsKICAgICAgICAgaWYgKCFDb21wYXJlX3R5cGUpIHJldHVybiAwOwogICAgICAgICBDYWxsX3R5cGUgPSBtYWtlX3R5cGUoIkNhbGwiLCBleHByX3R5cGUsIENhbGxfZmllbGRzLCA1KTsKQEAgLTk0OSw2ICsxMDUyLDggQEAKICAgICAgICAgaWYgKCFrZXl3b3JkX3R5cGUpIHJldHVybiAwOwogICAgICAgICBhbGlhc190eXBlID0gbWFrZV90eXBlKCJhbGlhcyIsICZBU1RfdHlwZSwgYWxpYXNfZmllbGRzLCAyKTsKICAgICAgICAgaWYgKCFhbGlhc190eXBlKSByZXR1cm4gMDsKKyAgICAgICAgd2l0aGl0ZW1fdHlwZSA9IG1ha2VfdHlwZSgid2l0aGl0ZW0iLCAmQVNUX3R5cGUsIHdpdGhpdGVtX2ZpZWxkcywgMik7CisgICAgICAgIGlmICghd2l0aGl0ZW1fdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIGluaXRpYWxpemVkID0gMTsKICAgICAgICAgcmV0dXJuIDE7CiB9CkBAIC05NzEsNiArMTA3Niw3IEBACiBzdGF0aWMgaW50IG9iajJhc3RfYXJnKFB5T2JqZWN0KiBvYmosIGFyZ190eSogb3V0LCBQeUFyZW5hKiBhcmVuYSk7CiBzdGF0aWMgaW50IG9iajJhc3Rfa2V5d29yZChQeU9iamVjdCogb2JqLCBrZXl3b3JkX3R5KiBvdXQsIFB5QXJlbmEqIGFyZW5hKTsKIHN0YXRpYyBpbnQgb2JqMmFzdF9hbGlhcyhQeU9iamVjdCogb2JqLCBhbGlhc190eSogb3V0LCBQeUFyZW5hKiBhcmVuYSk7CitzdGF0aWMgaW50IG9iajJhc3Rfd2l0aGl0ZW0oUHlPYmplY3QqIG9iaiwgd2l0aGl0ZW1fdHkqIG91dCwgUHlBcmVuYSogYXJlbmEpOwogCiBtb2RfdHkKIE1vZHVsZShhc2RsX3NlcSAqIGJvZHksIFB5QXJlbmEgKmFyZW5hKQpAQCAtMTIzNiwyMSArMTM0MiwxNSBAQAogfQogCiBzdG10X3R5Ci1XaXRoKGV4cHJfdHkgY29udGV4dF9leHByLCBleHByX3R5IG9wdGlvbmFsX3ZhcnMsIGFzZGxfc2VxICogYm9keSwgaW50IGxpbmVubywKLSAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQorV2l0aChhc2RsX3NlcSAqIGl0ZW1zLCBhc2RsX3NlcSAqIGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCisgICAgICphcmVuYSkKIHsKICAgICAgICAgc3RtdF90eSBwOwotICAgICAgICBpZiAoIWNvbnRleHRfZXhwcikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgY29udGV4dF9leHByIGlzIHJlcXVpcmVkIGZvciBXaXRoIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBwLT5raW5kID0gV2l0aF9raW5kOwotICAgICAgICBwLT52LldpdGguY29udGV4dF9leHByID0gY29udGV4dF9leHByOwotICAgICAgICBwLT52LldpdGgub3B0aW9uYWxfdmFycyA9IG9wdGlvbmFsX3ZhcnM7CisgICAgICAgIHAtPnYuV2l0aC5pdGVtcyA9IGl0ZW1zOwogICAgICAgICBwLT52LldpdGguYm9keSA9IGJvZHk7CiAgICAgICAgIHAtPmxpbmVubyA9IGxpbmVubzsKICAgICAgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CkBAIC0xMjczLDMzICsxMzczLDE4IEBACiB9CiAKIHN0bXRfdHkKLVRyeUV4Y2VwdChhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogaGFuZGxlcnMsIGFzZGxfc2VxICogb3JlbHNlLCBpbnQgbGluZW5vLAotICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK1RyeShhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogaGFuZGxlcnMsIGFzZGxfc2VxICogb3JlbHNlLCBhc2RsX3NlcSAqCisgICAgZmluYWxib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgICAgIHN0bXRfdHkgcDsKICAgICAgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBwLT5raW5kID0gVHJ5RXhjZXB0X2tpbmQ7Ci0gICAgICAgIHAtPnYuVHJ5RXhjZXB0LmJvZHkgPSBib2R5OwotICAgICAgICBwLT52LlRyeUV4Y2VwdC5oYW5kbGVycyA9IGhhbmRsZXJzOwotICAgICAgICBwLT52LlRyeUV4Y2VwdC5vcmVsc2UgPSBvcmVsc2U7Ci0gICAgICAgIHAtPmxpbmVubyA9IGxpbmVubzsKLSAgICAgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7Ci0gICAgICAgIHJldHVybiBwOwotfQotCi1zdG10X3R5Ci1UcnlGaW5hbGx5KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBmaW5hbGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAotICAgICAgICAgICBQeUFyZW5hICphcmVuYSkKLXsKLSAgICAgICAgc3RtdF90eSBwOwotICAgICAgICBwID0gKHN0bXRfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOwotICAgICAgICBpZiAoIXApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHAtPmtpbmQgPSBUcnlGaW5hbGx5X2tpbmQ7Ci0gICAgICAgIHAtPnYuVHJ5RmluYWxseS5ib2R5ID0gYm9keTsKLSAgICAgICAgcC0+di5UcnlGaW5hbGx5LmZpbmFsYm9keSA9IGZpbmFsYm9keTsKKyAgICAgICAgcC0+a2luZCA9IFRyeV9raW5kOworICAgICAgICBwLT52LlRyeS5ib2R5ID0gYm9keTsKKyAgICAgICAgcC0+di5UcnkuaGFuZGxlcnMgPSBoYW5kbGVyczsKKyAgICAgICAgcC0+di5Ucnkub3JlbHNlID0gb3JlbHNlOworICAgICAgICBwLT52LlRyeS5maW5hbGJvZHkgPSBmaW5hbGJvZHk7CiAgICAgICAgIHAtPmxpbmVubyA9IGxpbmVubzsKICAgICAgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CiAgICAgICAgIHJldHVybiBwOwpAQCAtMTcxNCw2ICsxNzk5LDIwIEBACiB9CiAKIGV4cHJfdHkKK1lpZWxkRnJvbShleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgICAgIGV4cHJfdHkgcDsKKyAgICAgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBwLT5raW5kID0gWWllbGRGcm9tX2tpbmQ7CisgICAgICAgIHAtPnYuWWllbGRGcm9tLnZhbHVlID0gdmFsdWU7CisgICAgICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICAgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgICAgIHJldHVybiBwOworfQorCitleHByX3R5CiBDb21wYXJlKGV4cHJfdHkgbGVmdCwgYXNkbF9pbnRfc2VxICogb3BzLCBhc2RsX3NlcSAqIGNvbXBhcmF0b3JzLCBpbnQgbGluZW5vLAogICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CkBAIC0xNzk4LDcgKzE4OTcsNyBAQAogfQogCiBleHByX3R5Ci1CeXRlcyhzdHJpbmcgcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQorQnl0ZXMoYnl0ZXMgcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewogICAgICAgICBleHByX3R5IHA7CiAgICAgICAgIGlmICghcykgewpAQCAtMjE0Niw2ICsyMjQ1LDIzIEBACiAgICAgICAgIHJldHVybiBwOwogfQogCit3aXRoaXRlbV90eQord2l0aGl0ZW0oZXhwcl90eSBjb250ZXh0X2V4cHIsIGV4cHJfdHkgb3B0aW9uYWxfdmFycywgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgICAgIHdpdGhpdGVtX3R5IHA7CisgICAgICAgIGlmICghY29udGV4dF9leHByKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCBjb250ZXh0X2V4cHIgaXMgcmVxdWlyZWQgZm9yIHdpdGhpdGVtIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcCA9ICh3aXRoaXRlbV90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcC0+Y29udGV4dF9leHByID0gY29udGV4dF9leHByOworICAgICAgICBwLT5vcHRpb25hbF92YXJzID0gb3B0aW9uYWxfdmFyczsKKyAgICAgICAgcmV0dXJuIHA7Cit9CisKIAogUHlPYmplY3QqCiBhc3Qyb2JqX21vZCh2b2lkKiBfbykKQEAgLTIxNjMsNyArMjI3OSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuTW9kdWxlLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTcyLDcgKzIyODgsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkludGVyYWN0aXZlLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTgxLDcgKzIyOTcsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkV4cHJlc3Npb24uYm9keSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTkwLDcgKzIzMDYsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlN1aXRlLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjE4LDI5ICsyMzM0LDI5IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuRnVuY3Rpb25EZWYubmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2FyZ3VtZW50cyhvLT52LkZ1bmN0aW9uRGVmLmFyZ3MpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRnVuY3Rpb25EZWYuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZGVjb3JhdG9yX2xpc3QiLCB2YWx1ZSkgPT0KKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2RlY29yYXRvcl9saXN0LCB2YWx1ZSkgPT0KICAgICAgICAgICAgICAgICAgICAgLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRnVuY3Rpb25EZWYucmV0dXJucyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAicmV0dXJucyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3JldHVybnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjQ5LDM4ICsyMzY1LDM4IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuQ2xhc3NEZWYubmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DbGFzc0RlZi5iYXNlcywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJiYXNlcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2Jhc2VzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ2xhc3NEZWYua2V5d29yZHMsIGFzdDJvYmpfa2V5d29yZCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia2V5d29yZHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rZXl3b3JkcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNsYXNzRGVmLnN0YXJhcmdzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJzdGFyYXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3N0YXJhcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2xhc3NEZWYua3dhcmdzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrd2FyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd2FyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DbGFzc0RlZi5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ2xhc3NEZWYuZGVjb3JhdG9yX2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJkZWNvcmF0b3JfbGlzdCIsIHZhbHVlKSA9PQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZGVjb3JhdG9yX2xpc3QsIHZhbHVlKSA9PQogICAgICAgICAgICAgICAgICAgICAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CkBAIC0yMjkwLDcgKzI0MDYsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlJldHVybi52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIyOTksNyArMjQxNSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRGVsZXRlLnRhcmdldHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGFyZ2V0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzA4LDEyICsyNDI0LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXNzaWduLnRhcmdldHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGFyZ2V0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bc3NpZ24udmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzIyLDE3ICsyNDM4LDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXVnQXNzaWduLnRhcmdldCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGFyZ2V0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9vcGVyYXRvcihvLT52LkF1Z0Fzc2lnbi5vcCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3AiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkF1Z0Fzc2lnbi52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIzNDEsMjIgKzI0NTcsMjIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Gb3IudGFyZ2V0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0YXJnZXQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Gb3IuaXRlcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiaXRlciIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2l0ZXIsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Gb3IuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkZvci5vcmVsc2UsIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3JlbHNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3JlbHNlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM2NSwxNyArMjQ4MSwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LldoaWxlLnRlc3QpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRlc3QiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90ZXN0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuV2hpbGUuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LldoaWxlLm9yZWxzZSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcmVsc2UiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcmVsc2UsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzg0LDM3ICsyNTAwLDMxIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuSWYudGVzdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGVzdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3Rlc3QsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5JZi5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuSWYub3JlbHNlLCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9yZWxzZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29yZWxzZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXaXRoX2tpbmQ6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoV2l0aF90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5XaXRoLmNvbnRleHRfZXhwcik7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5XaXRoLml0ZW1zLCBhc3Qyb2JqX3dpdGhpdGVtKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjb250ZXh0X2V4cHIiLCB2YWx1ZSkgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuV2l0aC5vcHRpb25hbF92YXJzKTsKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcHRpb25hbF92YXJzIiwgdmFsdWUpID09Ci0gICAgICAgICAgICAgICAgICAgIC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaXRlbXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5XaXRoLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDIzLDQ2ICsyNTMzLDM2IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuUmFpc2UuZXhjKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJleGMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9leGMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5SYWlzZS5jYXVzZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY2F1c2UiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jYXVzZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUcnlFeGNlcHRfa2luZDoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhUcnlFeGNlcHRfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGNhc2UgVHJ5X2tpbmQ6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoVHJ5X3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeUV4Y2VwdC5ib2R5LCBhc3Qyb2JqX3N0bXQpOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5LmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnlFeGNlcHQuaGFuZGxlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9leGNlcHRoYW5kbGVyKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeS5oYW5kbGVycywgYXN0Mm9ial9leGNlcHRoYW5kbGVyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJoYW5kbGVycyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2hhbmRsZXJzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5RXhjZXB0Lm9yZWxzZSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeS5vcmVsc2UsIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3JlbHNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3JlbHNlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRyeUZpbmFsbHlfa2luZDoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhUcnlGaW5hbGx5X3R5cGUsIE5VTEwsIE5VTEwpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeUZpbmFsbHkuYm9keSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeS5maW5hbGJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnlGaW5hbGx5LmZpbmFsYm9keSwgYXN0Mm9ial9zdG10KTsKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJmaW5hbGJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9maW5hbGJvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDcxLDEyICsyNTcxLDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXNzZXJ0LnRlc3QpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRlc3QiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90ZXN0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXNzZXJ0Lm1zZyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibXNnIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbXNnLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQ4NSw3ICsyNTg1LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5JbXBvcnQubmFtZXMsIGFzdDJvYmpfYWxpYXMpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWVzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDk0LDE3ICsyNTk0LDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuSW1wb3J0RnJvbS5tb2R1bGUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm1vZHVsZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX21vZHVsZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkltcG9ydEZyb20ubmFtZXMsIGFzdDJvYmpfYWxpYXMpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWVzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT52LkltcG9ydEZyb20ubGV2ZWwpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImxldmVsIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbGV2ZWwsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTEzLDcgKzI2MTMsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52Lkdsb2JhbC5uYW1lcywgYXN0Mm9ial9pZGVudGlmaWVyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWVzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjUyMiw3ICsyNjIyLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Ob25sb2NhbC5uYW1lcywgYXN0Mm9ial9pZGVudGlmaWVyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWVzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjUzMSw3ICsyNjMxLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5FeHByLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU1MCwxMiArMjY1MCwxMiBAQAogICAgICAgICB9CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+bGluZW5vKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImxpbmVubyIsIHZhbHVlKSA8IDApCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbGluZW5vLCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmNvbF9vZmZzZXQpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY29sX29mZnNldCIsIHZhbHVlKSA8IDApCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29sX29mZnNldCwgdmFsdWUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI1ODEsMTIgKzI2ODEsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2Jvb2xvcChvLT52LkJvb2xPcC5vcCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3AiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkJvb2xPcC52YWx1ZXMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWVzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWVzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU5NSwxNyArMjY5NSwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkJpbk9wLmxlZnQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImxlZnQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9sZWZ0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9vcGVyYXRvcihvLT52LkJpbk9wLm9wKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29wLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQmluT3AucmlnaHQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInJpZ2h0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfcmlnaHQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjE0LDEyICsyNzE0LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial91bmFyeW9wKG8tPnYuVW5hcnlPcC5vcCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3AiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlVuYXJ5T3Aub3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3BlcmFuZCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29wZXJhbmQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjI4LDEyICsyNzI4LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9hcmd1bWVudHMoby0+di5MYW1iZGEuYXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5MYW1iZGEuYm9keSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjQyLDE3ICsyNzQyLDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuSWZFeHAudGVzdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGVzdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3Rlc3QsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5JZkV4cC5ib2R5KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LklmRXhwLm9yZWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3JlbHNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3JlbHNlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY2MSwxMiArMjc2MSwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkRpY3Qua2V5cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrZXlzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa2V5cywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkRpY3QudmFsdWVzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2NzUsNyArMjc3NSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuU2V0LmVsdHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZWx0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2VsdHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjg0LDEzICsyNzg0LDEzIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuTGlzdENvbXAuZWx0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJlbHQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9lbHQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5MaXN0Q29tcC5nZW5lcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfY29tcHJlaGVuc2lvbik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZ2VuZXJhdG9ycyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2dlbmVyYXRvcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjk5LDEzICsyNzk5LDEzIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuU2V0Q29tcC5lbHQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImVsdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2VsdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlNldENvbXAuZ2VuZXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2NvbXByZWhlbnNpb24pOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImdlbmVyYXRvcnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9nZW5lcmF0b3JzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjcxNCwxOCArMjgxNCwxOCBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkRpY3RDb21wLmtleSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia2V5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa2V5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRGljdENvbXAudmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5EaWN0Q29tcC5nZW5lcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfY29tcHJlaGVuc2lvbik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZ2VuZXJhdG9ycyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2dlbmVyYXRvcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzM0LDEzICsyODM0LDEzIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuR2VuZXJhdG9yRXhwLmVsdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZWx0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZWx0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuR2VuZXJhdG9yRXhwLmdlbmVyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9jb21wcmVoZW5zaW9uKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJnZW5lcmF0b3JzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZ2VuZXJhdG9ycywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3NDksNyArMjg0OSwxNiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LllpZWxkLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFlpZWxkRnJvbV9raW5kOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFlpZWxkRnJvbV90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5ZaWVsZEZyb20udmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzU4LDIzICsyODY3LDIzIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ29tcGFyZS5sZWZ0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsZWZ0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbGVmdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgaSwgbiA9IGFzZGxfc2VxX0xFTihvLT52LkNvbXBhcmUub3BzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaSwgbiA9IGFzZGxfc2VxX0xFTihvLT52LkNvbXBhcmUub3BzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gUHlMaXN0X05ldyhuKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0odmFsdWUsIGksIGFzdDJvYmpfY21wb3AoKGNtcG9wX3R5KWFzZGxfc2VxX0dFVChvLT52LkNvbXBhcmUub3BzLCBpKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Db21wYXJlLmNvbXBhcmF0b3JzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImNvbXBhcmF0b3JzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29tcGFyYXRvcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzgzLDI3ICsyODkyLDI3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2FsbC5mdW5jKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJmdW5jIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZnVuYywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNhbGwuYXJncywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNhbGwua2V5d29yZHMsIGFzdDJvYmpfa2V5d29yZCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia2V5d29yZHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rZXl3b3JkcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNhbGwuc3RhcmFyZ3MpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInN0YXJhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc3RhcmFyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DYWxsLmt3YXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia3dhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgxMiw3ICsyOTIxLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX29iamVjdChvLT52Lk51bS5uKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbiwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4MjEsMTYgKzI5MzAsMTYgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX3N0cmluZyhvLT52LlN0ci5zKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCeXRlc19raW5kOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEJ5dGVzX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfc3RyaW5nKG8tPnYuQnl0ZXMucyk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2J5dGVzKG8tPnYuQnl0ZXMucyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAicyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yODQzLDE3ICsyOTUyLDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXR0cmlidXRlLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuQXR0cmlidXRlLmF0dHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImF0dHIiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hdHRyLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByX2NvbnRleHQoby0+di5BdHRyaWJ1dGUuY3R4KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjdHgiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jdHgsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yODYyLDE3ICsyOTcxLDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuU3Vic2NyaXB0LnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9zbGljZShvLT52LlN1YnNjcmlwdC5zbGljZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAic2xpY2UiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zbGljZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcl9jb250ZXh0KG8tPnYuU3Vic2NyaXB0LmN0eCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY3R4IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY3R4LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg4MSwxMiArMjk5MCwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlN0YXJyZWQudmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHJfY29udGV4dChvLT52LlN0YXJyZWQuY3R4KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjdHgiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jdHgsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yODk1LDEyICszMDA0LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuTmFtZS5pZCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiaWQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pZCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcl9jb250ZXh0KG8tPnYuTmFtZS5jdHgpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImN0eCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2N0eCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5MDksMTIgKzMwMTgsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5MaXN0LmVsdHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZWx0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2VsdHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHJfY29udGV4dChvLT52Lkxpc3QuY3R4KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjdHgiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jdHgsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTIzLDI0ICszMDMyLDI0IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHVwbGUuZWx0cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJlbHRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZWx0cywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcl9jb250ZXh0KG8tPnYuVHVwbGUuY3R4KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjdHgiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jdHgsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5saW5lbm8pOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibGluZW5vIiwgdmFsdWUpIDwgMCkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9saW5lbm8sIHZhbHVlKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+Y29sX29mZnNldCk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjb2xfb2Zmc2V0IiwgdmFsdWUpIDwgMCkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jb2xfb2Zmc2V0LCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjk5MywxNyArMzEwMiwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlNsaWNlLmxvd2VyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsb3dlciIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xvd2VyLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuU2xpY2UudXBwZXIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInVwcGVyIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdXBwZXIsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5TbGljZS5zdGVwKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJzdGVwIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc3RlcCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMwMTIsNyArMzEyMSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRXh0U2xpY2UuZGltcywgYXN0Mm9ial9zbGljZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZGltcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2RpbXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDIxLDcgKzMxMzAsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkluZGV4LnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzE2NywxNyArMzI3NiwxNyBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnRhcmdldCk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0YXJnZXQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPml0ZXIpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiaXRlciIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pdGVyLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPmlmcywgYXN0Mm9ial9leHByKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImlmcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pZnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMyMDMsMjkgKzMzMTIsMjkgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5FeGNlcHRIYW5kbGVyLnR5cGUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInR5cGUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90eXBlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuRXhjZXB0SGFuZGxlci5uYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkV4Y2VwdEhhbmRsZXIuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmxpbmVubyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsaW5lbm8iLCB2YWx1ZSkgPCAwKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xpbmVubywgdmFsdWUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5jb2xfb2Zmc2V0KTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImNvbF9vZmZzZXQiLCB2YWx1ZSkgPCAwKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbF9vZmZzZXQsIHZhbHVlKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMjQ5LDQyICszMzU4LDQyIEBACiAgICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gTlVMTDsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+YXJncywgYXN0Mm9ial9hcmcpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnZhcmFyZyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YXJhcmciLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFyYXJnLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnZhcmFyZ2Fubm90YXRpb24pOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFyYXJnYW5ub3RhdGlvbiIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YXJhcmdhbm5vdGF0aW9uLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPmt3b25seWFyZ3MsIGFzdDJvYmpfYXJnKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImt3b25seWFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dvbmx5YXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT5rd2FyZyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrd2FyZyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd2FyZywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT5rd2FyZ2Fubm90YXRpb24pOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia3dhcmdhbm5vdGF0aW9uIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3YXJnYW5ub3RhdGlvbiwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5kZWZhdWx0cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImRlZmF1bHRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2RlZmF1bHRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPmt3X2RlZmF1bHRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia3dfZGVmYXVsdHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dfZGVmYXVsdHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMDgsMTIgKzM0MTcsMTIgQEAKICAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT5hcmcpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXJnIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT5hbm5vdGF0aW9uKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFubm90YXRpb24iLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYW5ub3RhdGlvbiwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzMzNywxMiArMzQ0NiwxMiBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPmFyZyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhcmciLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXJnLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnZhbHVlKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMzY2LDEyICszNDc1LDQxIEBACiAgICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gTlVMTDsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+bmFtZSk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+YXNuYW1lKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFzbmFtZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hc25hbWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKK2ZhaWxlZDoKKyAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7CisgICAgICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0KgorYXN0Mm9ial93aXRoaXRlbSh2b2lkKiBfbykKK3sKKyAgICAgICAgd2l0aGl0ZW1fdHkgbyA9ICh3aXRoaXRlbV90eSlfbzsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEwsICp2YWx1ZSA9IE5VTEw7CisgICAgICAgIGlmICghbykgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KHdpdGhpdGVtX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIE5VTEw7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPmNvbnRleHRfZXhwcik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbnRleHRfZXhwciwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT5vcHRpb25hbF92YXJzKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3B0aW9uYWxfdmFycywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzQwMCwxMSArMzUzOCwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiTW9kdWxlIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzQzNiwxMSArMzU3NCwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiSW50ZXJhY3RpdmUgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNDcyLDkgKzM2MTAsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGV4cHJfdHkgYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmYm9keSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM0OTUsMTEgKzM2MzMsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlN1aXRlIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzU0NCw5ICszNjgyLDkgQEAKICAgICAgICAgICAgICAgICAqb3V0ID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsaW5lbm8iKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xpbmVubykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibGluZW5vIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xpbmVubyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZsaW5lbm8sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzU1Niw5ICszNjk0LDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJsaW5lbm9cIiBtaXNzaW5nIGZyb20gc3RtdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImNvbF9vZmZzZXQiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2NvbF9vZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImNvbF9vZmZzZXQiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY29sX29mZnNldCk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM1NzksOSArMzcxNyw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGRlY29yYXRvcl9saXN0OwogICAgICAgICAgICAgICAgIGV4cHJfdHkgcmV0dXJuczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmbmFtZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM1OTEsOSArMzcyOSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJuYW1lXCIgbWlzc2luZyBmcm9tIEZ1bmN0aW9uRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hcmdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfYXJndW1lbnRzKHRtcCwgJmFyZ3MsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNjAzLDExICszNzQxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdzXCIgbWlzc2luZyBmcm9tIEZ1bmN0aW9uRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRnVuY3Rpb25EZWYgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNjI4LDExICszNzY2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIEZ1bmN0aW9uRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZGVjb3JhdG9yX2xpc3QiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImRlY29yYXRvcl9saXN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkZ1bmN0aW9uRGVmIGZpZWxkIFwiZGVjb3JhdG9yX2xpc3RcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM2NTMsOSArMzc5MSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJkZWNvcmF0b3JfbGlzdFwiIG1pc3NpbmcgZnJvbSBGdW5jdGlvbkRlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInJldHVybnMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfcmV0dXJucykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInJldHVybnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9yZXR1cm5zKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmcmV0dXJucywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM2ODIsOSArMzgyMCw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGRlY29yYXRvcl9saXN0OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZuYW1lLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzY5NCwxMSArMzgzMiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibmFtZVwiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJhc2VzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2Jhc2VzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJiYXNlcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2Jhc2VzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDbGFzc0RlZiBmaWVsZCBcImJhc2VzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNzE5LDExICszODU3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJiYXNlc1wiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImtleXdvcmRzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2tleXdvcmRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrZXl3b3JkcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2tleXdvcmRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDbGFzc0RlZiBmaWVsZCBcImtleXdvcmRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNzQ0LDkgKzM4ODIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5d29yZHNcIiBtaXNzaW5nIGZyb20gQ2xhc3NEZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJzdGFyYXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zdGFyYXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInN0YXJhcmdzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZzdGFyYXJncywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM3NTUsOSArMzg5Myw5IEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJhcmdzID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia3dhcmdzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3YXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImt3YXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmt3YXJncywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM3NjYsMTEgKzM5MDQsMTEgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ2xhc3NEZWYgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNzkxLDExICszOTI5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIENsYXNzRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZGVjb3JhdG9yX2xpc3QiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImRlY29yYXRvcl9saXN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNsYXNzRGVmIGZpZWxkIFwiZGVjb3JhdG9yX2xpc3RcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM4MjgsOSArMzk2Niw5IEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzg1MCwxMSArMzk4OCwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiB0YXJnZXRzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGFyZ2V0cyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0YXJnZXRzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRGVsZXRlIGZpZWxkIFwidGFyZ2V0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzg4NywxMSArNDAyNSwxMSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiB0YXJnZXRzOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0YXJnZXRzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRhcmdldHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJBc3NpZ24gZmllbGQgXCJ0YXJnZXRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zOTEyLDkgKzQwNTAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0c1wiIG1pc3NpbmcgZnJvbSBBc3NpZ24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM5MzcsOSArNDA3NSw5IEBACiAgICAgICAgICAgICAgICAgb3BlcmF0b3JfdHkgb3A7CiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRhcmdldCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0YXJnZXQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0YXJnZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zOTQ5LDkgKzQwODcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0XCIgbWlzc2luZyBmcm9tIEF1Z0Fzc2lnbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3AiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9vcGVyYXRvcih0bXAsICZvcCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM5NjEsOSArNDA5OSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcFwiIG1pc3NpbmcgZnJvbSBBdWdBc3NpZ24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM5ODcsOSArNDEyNSw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG9yZWxzZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRhcmdldCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0YXJnZXQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0YXJnZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zOTk5LDkgKzQxMzcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0XCIgbWlzc2luZyBmcm9tIEZvciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIml0ZXIiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXRlcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIml0ZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pdGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmaXRlciwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQwMTEsMTEgKzQxNDksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIml0ZXJcIiBtaXNzaW5nIGZyb20gRm9yIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRm9yIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDAzNiwxMSArNDE3NCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBGb3IiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcmVsc2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcmVsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkZvciBmaWVsZCBcIm9yZWxzZVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDA3NSw5ICs0MjEzLDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogb3JlbHNlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGVzdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90ZXN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGVzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3Rlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0ZXN0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDA4NywxMSArNDIyNSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGVzdFwiIG1pc3NpbmcgZnJvbSBXaGlsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIldoaWxlIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDExMiwxMSArNDI1MCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBXaGlsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29yZWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiV2hpbGUgZmllbGQgXCJvcmVsc2VcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQxNTAsOSArNDI4OCw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG9yZWxzZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRlc3QiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGVzdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRlc3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90ZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGVzdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQxNjIsMTEgKzQzMDAsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRlc3RcIiBtaXNzaW5nIGZyb20gSWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJJZiBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQxODcsMTEgKzQzMjUsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gSWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcmVsc2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcmVsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIklmIGZpZWxkIFwib3JlbHNlXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MjIxLDM4ICs0MzU5LDM5IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKLSAgICAgICAgICAgICAgICBleHByX3R5IGNvbnRleHRfZXhwcjsKLSAgICAgICAgICAgICAgICBleHByX3R5IG9wdGlvbmFsX3ZhcnM7CisgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGl0ZW1zOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY29udGV4dF9leHByIikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImNvbnRleHRfZXhwciIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZjb250ZXh0X2V4cHIsIGFyZW5hKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJjb250ZXh0X2V4cHJcIiBtaXNzaW5nIGZyb20gV2l0aCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wdGlvbmFsX3ZhcnMiKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3B0aW9uYWxfdmFycyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZvcHRpb25hbF92YXJzLCBhcmVuYSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxfdmFycyA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXRlbXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pdGVtcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiV2l0aCBmaWVsZCBcIml0ZW1zXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaXRlbV90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF93aXRoaXRlbShQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChpdGVtcywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaXRlbXNcIiBtaXNzaW5nIGZyb20gV2l0aCIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJXaXRoIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDI3Myw4ICs0NDEyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gV2l0aCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpvdXQgPSBXaXRoKGNvbnRleHRfZXhwciwgb3B0aW9uYWxfdmFycywgYm9keSwgbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAqb3V0ID0gV2l0aChpdGVtcywgYm9keSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTQyODYsOSArNDQyNCw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSBleGM7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBjYXVzZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImV4YyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9leGMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJleGMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9leGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZleGMsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00Mjk3LDkgKzQ0MzUsOSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleGMgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjYXVzZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jYXVzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImNhdXNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY2F1c2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZjYXVzZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQzMTIsNyArNDQ1MCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKVRyeUV4Y2VwdF90eXBlKTsKKyAgICAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKVRyeV90eXBlKTsKICAgICAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQpAQCAtNDMyMCwxNSArNDQ1OCwxNiBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBoYW5kbGVyczsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogb3JlbHNlOworICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBmaW5hbGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnlFeGNlcHQgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnkgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CkBAIC00MzQzLDE3ICs0NDgyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIFRyeUV4Y2VwdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBUcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJoYW5kbGVycyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9oYW5kbGVycykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiaGFuZGxlcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9oYW5kbGVycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5RXhjZXB0IGZpZWxkIFwiaGFuZGxlcnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeSBmaWVsZCBcImhhbmRsZXJzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CkBAIC00MzY4LDE3ICs0NTA3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJoYW5kbGVyc1wiIG1pc3NpbmcgZnJvbSBUcnlFeGNlcHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImhhbmRsZXJzXCIgbWlzc2luZyBmcm9tIFRyeSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29yZWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5RXhjZXB0IGZpZWxkIFwib3JlbHNlXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnkgZmllbGQgXCJvcmVsc2VcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKQEAgLTQzOTMsNTUgKzQ1MzIsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9yZWxzZVwiIG1pc3NpbmcgZnJvbSBUcnlFeGNlcHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9yZWxzZVwiIG1pc3NpbmcgZnJvbSBUcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAqb3V0ID0gVHJ5RXhjZXB0KGJvZHksIGhhbmRsZXJzLCBvcmVsc2UsIGxpbmVubywgY29sX29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZW5hKTsKLSAgICAgICAgICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopVHJ5RmluYWxseV90eXBlKTsKLSAgICAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewotICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwotICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBmaW5hbGJvZHk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2ZpbmFsYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2ZpbmFsYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5RmluYWxseSBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9keSA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10X3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsdWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBUcnlGaW5hbGx5Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZmluYWxib2R5IikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZmluYWxib2R5Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5RmluYWxseSBmaWVsZCBcImZpbmFsYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5IGZpZWxkIFwiZmluYWxib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CkBAIC00NDU2LDEwICs0NTU3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJmaW5hbGJvZHlcIiBtaXNzaW5nIGZyb20gVHJ5RmluYWxseSIpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZmluYWxib2R5XCIgbWlzc2luZyBmcm9tIFRyeSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpvdXQgPSBUcnlGaW5hbGx5KGJvZHksIGZpbmFsYm9keSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgICAgICAgICAgKm91dCA9IFRyeShib2R5LCBoYW5kbGVycywgb3JlbHNlLCBmaW5hbGJvZHksIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtNDQ3MSw5ICs0NTczLDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IHRlc3Q7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBtc2c7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0ZXN0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3Rlc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0ZXN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRlc3QsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NDgzLDkgKzQ1ODUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGVzdFwiIG1pc3NpbmcgZnJvbSBBc3NlcnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJtc2ciKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbXNnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibXNnIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbXNnKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmbXNnLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDUwNSwxMSArNDYwNywxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBuYW1lczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJJbXBvcnQgZmllbGQgXCJuYW1lc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDU0Myw5ICs0NjQ1LDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogbmFtZXM7CiAgICAgICAgICAgICAgICAgaW50IGxldmVsOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibW9kdWxlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX21vZHVsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm1vZHVsZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX21vZHVsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJm1vZHVsZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ1NTQsMTEgKzQ2NTYsMTEgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkltcG9ydEZyb20gZmllbGQgXCJuYW1lc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDU3OSw5ICs0NjgxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm5hbWVzXCIgbWlzc2luZyBmcm9tIEltcG9ydEZyb20iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsZXZlbCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9sZXZlbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImxldmVsIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGV2ZWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmxldmVsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDYwMiwxMSArNDcwNCwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBuYW1lczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJHbG9iYWwgZmllbGQgXCJuYW1lc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDYzOCwxMSArNDc0MCwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBuYW1lczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJOb25sb2NhbCBmaWVsZCBcIm5hbWVzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00Njc0LDkgKzQ3NzYsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ3NDAsOSArNDg0Miw5IEBACiAgICAgICAgICAgICAgICAgKm91dCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibGluZW5vIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImxpbmVubyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmbGluZW5vLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ3NTIsOSArNDg1NCw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibGluZW5vXCIgbWlzc2luZyBmcm9tIGV4cHIiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjb2xfb2Zmc2V0IikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jb2xfb2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjb2xfb2Zmc2V0Iik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbF9vZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmY29sX29mZnNldCwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NzcyLDkgKzQ4NzQsOSBAQAogICAgICAgICAgICAgICAgIGJvb2xvcF90eSBvcDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogdmFsdWVzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3AiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3ApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2Jvb2xvcCh0bXAsICZvcCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ3ODQsMTEgKzQ4ODYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9wXCIgbWlzc2luZyBmcm9tIEJvb2xPcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQm9vbE9wIGZpZWxkIFwidmFsdWVzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00ODIyLDkgKzQ5MjQsOSBAQAogICAgICAgICAgICAgICAgIG9wZXJhdG9yX3R5IG9wOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgcmlnaHQ7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsZWZ0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xlZnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsZWZ0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGVmdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmxlZnQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00ODM0LDkgKzQ5MzYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibGVmdFwiIG1pc3NpbmcgZnJvbSBCaW5PcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3AiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9vcGVyYXRvcih0bXAsICZvcCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ4NDYsOSArNDk0OCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcFwiIG1pc3NpbmcgZnJvbSBCaW5PcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInJpZ2h0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3JpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAicmlnaHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9yaWdodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnJpZ2h0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDg3MCw5ICs0OTcyLDkgQEAKICAgICAgICAgICAgICAgICB1bmFyeW9wX3R5IG9wOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgb3BlcmFuZDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3AiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF91bmFyeW9wKHRtcCwgJm9wLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDg4Miw5ICs0OTg0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9wXCIgbWlzc2luZyBmcm9tIFVuYXJ5T3AiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcGVyYW5kIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wZXJhbmQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcGVyYW5kIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJm9wZXJhbmQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00OTA2LDkgKzUwMDgsOSBAQAogICAgICAgICAgICAgICAgIGFyZ3VtZW50c190eSBhcmdzOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2FyZ3VtZW50cyh0bXAsICZhcmdzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDkxOCw5ICs1MDIwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFyZ3NcIiBtaXNzaW5nIGZyb20gTGFtYmRhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZib2R5LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDk0Myw5ICs1MDQ1LDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IGJvZHk7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBvcmVsc2U7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0ZXN0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3Rlc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0ZXN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRlc3QsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00OTU1LDkgKzUwNTcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGVzdFwiIG1pc3NpbmcgZnJvbSBJZkV4cCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmYm9keSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ5NjcsOSArNTA2OSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIElmRXhwIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3JlbHNlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29yZWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29yZWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJm9yZWxzZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ5OTEsMTEgKzUwOTMsMTEgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSoga2V5czsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogdmFsdWVzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia2V5cyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rZXlzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrZXlzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa2V5cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRGljdCBmaWVsZCBcImtleXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUwMTYsMTEgKzUxMTgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImtleXNcIiBtaXNzaW5nIGZyb20gRGljdCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRGljdCBmaWVsZCBcInZhbHVlc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTA1MiwxMSArNTE1NCwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBlbHRzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZWx0cyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9lbHRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJlbHRzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZWx0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiU2V0IGZpZWxkIFwiZWx0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTA4OSw5ICs1MTkxLDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IGVsdDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZ2VuZXJhdG9yczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImVsdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9lbHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJlbHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9lbHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZlbHQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MTAxLDExICs1MjAzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJlbHRcIiBtaXNzaW5nIGZyb20gTGlzdENvbXAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJMaXN0Q29tcCBmaWVsZCBcImdlbmVyYXRvcnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUxMzgsOSArNTI0MCw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQ7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGdlbmVyYXRvcnM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJlbHQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZWx0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZWx0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmZWx0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTE1MCwxMSArNTI1MiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZWx0XCIgbWlzc2luZyBmcm9tIFNldENvbXAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJTZXRDb21wIGZpZWxkIFwiZ2VuZXJhdG9yc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTE4OCw5ICs1MjkwLDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBnZW5lcmF0b3JzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia2V5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2tleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImtleSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2tleSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmtleSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUyMDAsOSArNTMwMiw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrZXlcIiBtaXNzaW5nIGZyb20gRGljdENvbXAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUyMTIsMTEgKzUzMTQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIERpY3RDb21wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRGljdENvbXAgZmllbGQgXCJnZW5lcmF0b3JzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01MjUwLDkgKzUzNTIsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBnZW5lcmF0b3JzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZWx0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImVsdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmVsdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUyNjIsMTEgKzUzNjQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImVsdFwiIG1pc3NpbmcgZnJvbSBHZW5lcmF0b3JFeHAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJHZW5lcmF0b3JFeHAgZmllbGQgXCJnZW5lcmF0b3JzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01Mjk4LDkgKzU0MDAsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUzMTMsNiArNTQxNSwyOCBAQAogICAgICAgICAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CisgICAgICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilZaWVsZEZyb21fdHlwZSk7CisgICAgICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOworCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKm91dCA9IFlpZWxkRnJvbSh2YWx1ZSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUNvbXBhcmVfdHlwZSk7CiAgICAgICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC01MzIyLDkgKzU0NDYsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfaW50X3NlcSogb3BzOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBjb21wYXJhdG9yczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImxlZnQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbGVmdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImxlZnQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9sZWZ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmbGVmdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUzMzQsMTEgKzU0NTgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImxlZnRcIiBtaXNzaW5nIGZyb20gQ29tcGFyZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9wcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29wcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ29tcGFyZSBmaWVsZCBcIm9wc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTM1OSwxMSArNTQ4MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwib3BzXCIgbWlzc2luZyBmcm9tIENvbXBhcmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjb21wYXJhdG9ycyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jb21wYXJhdG9ycykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY29tcGFyYXRvcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb21wYXJhdG9ycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ29tcGFyZSBmaWVsZCBcImNvbXBhcmF0b3JzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01NDAwLDkgKzU1MjQsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgc3RhcmFyZ3M7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBrd2FyZ3M7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJmdW5jIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2Z1bmMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJmdW5jIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZnVuYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmZ1bmMsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NDEyLDExICs1NTM2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJmdW5jXCIgbWlzc2luZyBmcm9tIENhbGwiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhcmdzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDYWxsIGZpZWxkIFwiYXJnc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTQzNywxMSArNTU2MSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnc1wiIG1pc3NpbmcgZnJvbSBDYWxsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia2V5d29yZHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa2V5d29yZHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImtleXdvcmRzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa2V5d29yZHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNhbGwgZmllbGQgXCJrZXl3b3Jkc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTQ2Miw5ICs1NTg2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImtleXdvcmRzXCIgbWlzc2luZyBmcm9tIENhbGwiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJzdGFyYXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zdGFyYXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInN0YXJhcmdzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZzdGFyYXJncywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU0NzMsOSArNTU5Nyw5IEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJhcmdzID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia3dhcmdzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3YXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImt3YXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmt3YXJncywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU0OTYsOSArNTYyMCw5IEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgb2JqZWN0IG47CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9vYmplY3QodG1wLCAmbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU1MTksOSArNTY0Myw5IEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgc3RyaW5nIHM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdHJpbmcodG1wLCAmcywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU1NDAsMTMgKzU2NjQsMTMgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewotICAgICAgICAgICAgICAgIHN0cmluZyBzOworICAgICAgICAgICAgICAgIGJ5dGVzIHM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdHJpbmcodG1wLCAmcywgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9ieXRlcyh0bXAsICZzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKQEAgLTU1NzcsOSArNTcwMSw5IEBACiAgICAgICAgICAgICAgICAgaWRlbnRpZmllciBhdHRyOwogICAgICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSBjdHg7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU1ODksOSArNTcxMyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZVwiIG1pc3NpbmcgZnJvbSBBdHRyaWJ1dGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhdHRyIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2F0dHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhdHRyIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXR0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJmF0dHIsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NjAxLDkgKzU3MjUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXR0clwiIG1pc3NpbmcgZnJvbSBBdHRyaWJ1dGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjdHgiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY3R4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY3R4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHJfY29udGV4dCh0bXAsICZjdHgsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NjI2LDkgKzU3NTAsOSBAQAogICAgICAgICAgICAgICAgIHNsaWNlX3R5IHNsaWNlOwogICAgICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSBjdHg7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU2MzgsOSArNTc2Miw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZVwiIG1pc3NpbmcgZnJvbSBTdWJzY3JpcHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJzbGljZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zbGljZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInNsaWNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc2xpY2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc2xpY2UodG1wLCAmc2xpY2UsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NjUwLDkgKzU3NzQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwic2xpY2VcIiBtaXNzaW5nIGZyb20gU3Vic2NyaXB0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY3R4IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2N0eCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImN0eCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2N0eCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByX2NvbnRleHQodG1wLCAmY3R4LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTY3NCw5ICs1Nzk4LDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogICAgICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSBjdHg7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU2ODYsOSArNTgxMCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZVwiIG1pc3NpbmcgZnJvbSBTdGFycmVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY3R4IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2N0eCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImN0eCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2N0eCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByX2NvbnRleHQodG1wLCAmY3R4LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTcxMCw5ICs1ODM0LDkgQEAKICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIGlkOwogICAgICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSBjdHg7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJpZCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImlkIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZpZCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU3MjIsOSArNTg0Niw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpZFwiIG1pc3NpbmcgZnJvbSBOYW1lIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY3R4IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2N0eCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImN0eCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2N0eCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByX2NvbnRleHQodG1wLCAmY3R4LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTc0NiwxMSArNTg3MCwxMSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBlbHRzOwogICAgICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSBjdHg7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJlbHRzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2VsdHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImVsdHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9lbHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJMaXN0IGZpZWxkIFwiZWx0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTc3MSw5ICs1ODk1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImVsdHNcIiBtaXNzaW5nIGZyb20gTGlzdCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImN0eCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjdHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcl9jb250ZXh0KHRtcCwgJmN0eCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU3OTUsMTEgKzU5MTksMTEgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZWx0czsKICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZWx0cyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9lbHRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJlbHRzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZWx0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHVwbGUgZmllbGQgXCJlbHRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01ODIwLDkgKzU5NDQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZWx0c1wiIG1pc3NpbmcgZnJvbSBUdXBsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImN0eCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjdHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcl9jb250ZXh0KHRtcCwgJmN0eCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU5MjEsOSArNjA0NSw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSB1cHBlcjsKICAgICAgICAgICAgICAgICBleHByX3R5IHN0ZXA7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsb3dlciIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9sb3dlcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImxvd2VyIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbG93ZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZsb3dlciwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU5MzIsOSArNjA1Niw5IEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidXBwZXIiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdXBwZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ1cHBlciIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3VwcGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdXBwZXIsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01OTQzLDkgKzYwNjcsOSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlciA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInN0ZXAiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfc3RlcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInN0ZXAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zdGVwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmc3RlcCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU5NjUsMTEgKzYwODksMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZGltczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImRpbXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZGltcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZGltcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2RpbXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkV4dFNsaWNlIGZpZWxkIFwiZGltc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjAwMSw5ICs2MTI1LDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02Mjk2LDkgKzY0MjAsOSBAQAogICAgICAgICBleHByX3R5IGl0ZXI7CiAgICAgICAgIGFzZGxfc2VxKiBpZnM7CiAKLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGFyZ2V0IikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRhcmdldCIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRhcmdldCwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02MzA4LDkgKzY0MzIsOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldFwiIG1pc3NpbmcgZnJvbSBjb21wcmVoZW5zaW9uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiaXRlciIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXRlcikpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiaXRlciIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pdGVyKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZpdGVyLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTYzMjAsMTEgKzY0NDQsMTEgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpdGVyXCIgbWlzc2luZyBmcm9tIGNvbXByZWhlbnNpb24iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJpZnMiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2lmcykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImlmcyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pZnMpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImNvbXByZWhlbnNpb24gZmllbGQgXCJpZnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTYzNjUsOSArNjQ4OSw5IEBACiAgICAgICAgICAgICAgICAgKm91dCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibGluZW5vIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImxpbmVubyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmbGluZW5vLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTYzNzcsOSArNjUwMSw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibGluZW5vXCIgbWlzc2luZyBmcm9tIGV4Y2VwdGhhbmRsZXIiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjb2xfb2Zmc2V0IikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jb2xfb2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjb2xfb2Zmc2V0Iik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbF9vZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmY29sX29mZnNldCwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02Mzk4LDkgKzY1MjIsOSBAQAogICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgbmFtZTsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInR5cGUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInR5cGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdHlwZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY0MDksOSArNjUzMyw5IEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJm5hbWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NDIwLDExICs2NTQ0LDExIEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJFeGNlcHRIYW5kbGVyIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjQ3MCwxMSArNjU5NCwxMSBAQAogICAgICAgICBhc2RsX3NlcSogZGVmYXVsdHM7CiAgICAgICAgIGFzZGxfc2VxKiBrd19kZWZhdWx0czsKIAotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhcmdzIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hcmdzKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXJncyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hcmdzKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudHMgZmllbGQgXCJhcmdzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02NDk1LDkgKzY2MTksOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFyZ3NcIiBtaXNzaW5nIGZyb20gYXJndW1lbnRzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFyYXJnIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YXJhcmcpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhcmFyZyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YXJhcmcpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJnZhcmFyZywgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NTA2LDkgKzY2MzAsOSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhcmFyZyA9IE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFyYXJnYW5ub3RhdGlvbiIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFyYXJnYW5ub3RhdGlvbikpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFyYXJnYW5ub3RhdGlvbiIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YXJhcmdhbm5vdGF0aW9uKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YXJhcmdhbm5vdGF0aW9uLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY1MTcsMTEgKzY2NDEsMTEgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXJhcmdhbm5vdGF0aW9uID0gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrd29ubHlhcmdzIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd29ubHlhcmdzKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia3dvbmx5YXJncyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rd29ubHlhcmdzKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudHMgZmllbGQgXCJrd29ubHlhcmdzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02NTQyLDkgKzY2NjYsOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImt3b25seWFyZ3NcIiBtaXNzaW5nIGZyb20gYXJndW1lbnRzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia3dhcmciKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3YXJnKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrd2FyZyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rd2FyZyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAma3dhcmcsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjU1Myw5ICs2Njc3LDkgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBrd2FyZyA9IE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia3dhcmdhbm5vdGF0aW9uIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd2FyZ2Fubm90YXRpb24pKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImt3YXJnYW5ub3RhdGlvbiIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rd2FyZ2Fubm90YXRpb24pOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmt3YXJnYW5ub3RhdGlvbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NTY0LDExICs2Njg4LDExIEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAga3dhcmdhbm5vdGF0aW9uID0gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJkZWZhdWx0cyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZGVmYXVsdHMpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJkZWZhdWx0cyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9kZWZhdWx0cyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnRzIGZpZWxkIFwiZGVmYXVsdHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTY1ODksMTEgKzY3MTMsMTEgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJkZWZhdWx0c1wiIG1pc3NpbmcgZnJvbSBhcmd1bWVudHMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrd19kZWZhdWx0cyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa3dfZGVmYXVsdHMpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrd19kZWZhdWx0cyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rd19kZWZhdWx0cyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnRzIGZpZWxkIFwia3dfZGVmYXVsdHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTY2MjksOSArNjc1Myw5IEBACiAgICAgICAgIGlkZW50aWZpZXIgYXJnOwogICAgICAgICBleHByX3R5IGFubm90YXRpb247CiAKLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXJnIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hcmcpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFyZyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hcmcpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJmFyZywgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NjQxLDkgKzY3NjUsOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFyZ1wiIG1pc3NpbmcgZnJvbSBhcmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhbm5vdGF0aW9uIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hbm5vdGF0aW9uKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhbm5vdGF0aW9uIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2Fubm90YXRpb24pOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmFubm90YXRpb24sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjY2Niw5ICs2NzkwLDkgQEAKICAgICAgICAgaWRlbnRpZmllciBhcmc7CiAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXJnIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hcmcpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFyZyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hcmcpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJmFyZywgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02Njc4LDkgKzY4MDIsOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFyZ1wiIG1pc3NpbmcgZnJvbSBrZXl3b3JkIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjcwNCw5ICs2ODI4LDkgQEAKICAgICAgICAgaWRlbnRpZmllciBuYW1lOwogICAgICAgICBpZGVudGlmaWVyIGFzbmFtZTsKIAotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWUpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJm5hbWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjcxNiw5ICs2ODQwLDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJuYW1lXCIgbWlzc2luZyBmcm9tIGFsaWFzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXNuYW1lIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hc25hbWUpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFzbmFtZSIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hc25hbWUpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJmFzbmFtZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NzM0LDYgKzY4NTgsNDMgQEAKICAgICAgICAgcmV0dXJuIDE7CiB9CiAKK2ludAorb2JqMmFzdF93aXRoaXRlbShQeU9iamVjdCogb2JqLCB3aXRoaXRlbV90eSogb3V0LCBQeUFyZW5hKiBhcmVuYSkKK3sKKyAgICAgICAgUHlPYmplY3QqIHRtcCA9IE5VTEw7CisgICAgICAgIGV4cHJfdHkgY29udGV4dF9leHByOworICAgICAgICBleHByX3R5IG9wdGlvbmFsX3ZhcnM7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jb250ZXh0X2V4cHIpKSB7CisgICAgICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY29udGV4dF9leHByKTsKKyAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZjb250ZXh0X2V4cHIsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImNvbnRleHRfZXhwclwiIG1pc3NpbmcgZnJvbSB3aXRoaXRlbSIpOworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3B0aW9uYWxfdmFycykpIHsKKyAgICAgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcHRpb25hbF92YXJzKTsKKyAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZvcHRpb25hbF92YXJzLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvcHRpb25hbF92YXJzID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gd2l0aGl0ZW0oY29udGV4dF9leHByLCBvcHRpb25hbF92YXJzLCBhcmVuYSk7CisgICAgICAgIHJldHVybiAwOworZmFpbGVkOgorICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgIHJldHVybiAxOworfQorCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2FzdG1vZHVsZSA9IHsKICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULCAiX2FzdCIKQEAgLTY3NTAsOCArNjkxMSw2IEBACiAgICAgICAgICAgICBOVUxMOwogICAgICAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5Q0ZfT05MWV9BU1QiLCBQeUNGX09OTFlfQVNUKSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiX192ZXJzaW9uX18iLCAiODIxNjMiKSA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAibW9kIiwgKFB5T2JqZWN0Kiltb2RfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgICAgIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTW9kdWxlIiwgKFB5T2JqZWN0KilNb2R1bGVfdHlwZSkgPCAwKQpAQCAtNjc4NSwxMCArNjk0NCw4IEBACiAgICAgICAgICAgICBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlJhaXNlIiwgKFB5T2JqZWN0KilSYWlzZV90eXBlKSA8IDApIHJldHVybgogICAgICAgICAgICAgTlVMTDsKLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJUcnlFeGNlcHQiLCAoUHlPYmplY3QqKVRyeUV4Y2VwdF90eXBlKSA8Ci0gICAgICAgICAgICAwKSByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJUcnlGaW5hbGx5IiwgKFB5T2JqZWN0KilUcnlGaW5hbGx5X3R5cGUpIDwKLSAgICAgICAgICAgIDApIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlRyeSIsIChQeU9iamVjdCopVHJ5X3R5cGUpIDwgMCkgcmV0dXJuCisgICAgICAgICAgICBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFzc2VydCIsIChQeU9iamVjdCopQXNzZXJ0X3R5cGUpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkltcG9ydCIsIChQeU9iamVjdCopSW1wb3J0X3R5cGUpIDwgMCkKQEAgLTY4MzMsNiArNjk5MCw4IEBACiAgICAgICAgICAgICAoUHlPYmplY3QqKUdlbmVyYXRvckV4cF90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIllpZWxkIiwgKFB5T2JqZWN0KilZaWVsZF90eXBlKSA8IDApIHJldHVybgogICAgICAgICAgICAgTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJZaWVsZEZyb20iLCAoUHlPYmplY3QqKVlpZWxkRnJvbV90eXBlKSA8CisgICAgICAgICAgICAwKSByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDb21wYXJlIiwgKFB5T2JqZWN0KilDb21wYXJlX3R5cGUpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNhbGwiLCAoUHlPYmplY3QqKUNhbGxfdHlwZSkgPCAwKSByZXR1cm4KQEAgLTY5NTEsNiArNzExMCw4IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJhbGlhcyIsIChQeU9iamVjdCopYWxpYXNfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgICAgIE5VTEw7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAid2l0aGl0ZW0iLCAoUHlPYmplY3QqKXdpdGhpdGVtX3R5cGUpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICByZXR1cm4gbTsKIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL193YXJuaW5ncy5jIGIvUHl0aG9uL193YXJuaW5ncy5jCmluZGV4IGMxMmRiNDQuLmYzM2U0NzcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9fd2FybmluZ3MuYworKysgYi9QeXRob24vX3dhcm5pbmdzLmMKQEAgLTE4LDExICsxOCwxMiBAQAogY2hlY2tfbWF0Y2hlZChQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIobWF0Y2gpOwogICAgIGludCByYzsKIAogICAgIGlmIChvYmogPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIDE7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvYmosICJtYXRjaCIsICJPIiwgYXJnKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9iaiwgJlB5SWRfbWF0Y2gsICJPIiwgYXJnKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIApAQCAtMjAyLDEzICsyMDMsMTMgQEAKIAogICAgIG1vZF9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGZpbGVuYW1lKTsKICAgICBpZiAobW9kX3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbGVuID0gUHlVbmljb2RlX0dldFNpemUoZmlsZW5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKGZpbGVuYW1lKTsKICAgICBpZiAobGVuIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGxlbiA+PSAzICYmCiAgICAgICAgIHN0cm5jbXAobW9kX3N0ciArIChsZW4gLSAzKSwgIi5weSIsIDMpID09IDApIHsKLSAgICAgICAgbW9kdWxlID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKG1vZF9zdHIsIGxlbi0zKTsKKyAgICAgICAgbW9kdWxlID0gUHlVbmljb2RlX1N1YnN0cmluZyhmaWxlbmFtZSwgMCwgbGVuLTMpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgbW9kdWxlID0gZmlsZW5hbWU7CkBAIC0yNDYsMTAgKzI0NywxMSBAQAogICAgIFB5T2JqZWN0ICpmX3N0ZGVycjsKICAgICBQeU9iamVjdCAqbmFtZTsKICAgICBjaGFyIGxpbmVub19zdHJbMTI4XTsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CiAKICAgICBQeU9TX3NucHJpbnRmKGxpbmVub19zdHIsIHNpemVvZihsaW5lbm9fc3RyKSwgIjolZDogIiwgbGluZW5vKTsKIAotICAgIG5hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNhdGVnb3J5LCAiX19uYW1lX18iKTsKKyAgICBuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChjYXRlZ29yeSwgJlB5SWRfX19uYW1lX18pOwogICAgIGlmIChuYW1lID09IE5VTEwpICAvKiBYWFggQ2FuIGFuIG9iamVjdCBsYWNrIGEgJ19fbmFtZV9fJyBhdHRyaWJ1dGU/ICovCiAgICAgICAgIHJldHVybjsKIApAQCAtNDA5LDEwICs0MTEsMTAgQEAKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgICAgICAgICBpZiAoIVB5TWV0aG9kX0NoZWNrKHNob3dfZnhuKSAmJiAhUHlGdW5jdGlvbl9DaGVjayhzaG93X2Z4bikpIHsKKyAgICAgICAgICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhzaG93X2Z4bikpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FybmluZ3Muc2hvd3dhcm5pbmcoKSBtdXN0IGJlIHNldCB0byBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIG9yIG1ldGhvZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGFibGUiKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2hvd19meG4pOwogICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKICAgICAgICAgICAgIH0KQEAgLTQ5NywxOCArNDk5LDI4IEBACiAgICAgLyogU2V0dXAgZmlsZW5hbWUuICovCiAgICAgKmZpbGVuYW1lID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZ2xvYmFscywgIl9fZmlsZV9fIik7CiAgICAgaWYgKCpmaWxlbmFtZSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjaygqZmlsZW5hbWUpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dldFNpemUoKmZpbGVuYW1lKTsKLSAgICAgICAgUHlfVU5JQ09ERSAqdW5pY29kZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKCpmaWxlbmFtZSk7CisgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICBpbnQga2luZDsKKyAgICAgICAgdm9pZCAqZGF0YTsKIAorICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKCpmaWxlbmFtZSkpCisgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKKworICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKCpmaWxlbmFtZSk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCgqZmlsZW5hbWUpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoKmZpbGVuYW1lKTsKKworI2RlZmluZSBhc2NpaV9sb3dlcihjKSAoKGMgPD0gMTI3KSA/IFB5X1RPTE9XRVIoYykgOiAwKQogICAgICAgICAvKiBpZiBmaWxlbmFtZS5sb3dlcigpLmVuZHN3aXRoKCgiLnB5YyIsICIucHlvIikpOiAqLwogICAgICAgICBpZiAobGVuID49IDQgJiYKLSAgICAgICAgICAgIHVuaWNvZGVbbGVuLTRdID09ICcuJyAmJgotICAgICAgICAgICAgUHlfVU5JQ09ERV9UT0xPV0VSKHVuaWNvZGVbbGVuLTNdKSA9PSAncCcgJiYKLSAgICAgICAgICAgIFB5X1VOSUNPREVfVE9MT1dFUih1bmljb2RlW2xlbi0yXSkgPT0gJ3knICYmCi0gICAgICAgICAgICAoUHlfVU5JQ09ERV9UT0xPV0VSKHVuaWNvZGVbbGVuLTFdKSA9PSAnYycgfHwKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFX1RPTE9XRVIodW5pY29kZVtsZW4tMV0pID09ICdvJykpCisgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tNCkgPT0gJy4nICYmCisgICAgICAgICAgICBhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMykpID09ICdwJyAmJgorICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTIpKSA9PSAneScgJiYKKyAgICAgICAgICAgIChhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMSkpID09ICdjJyB8fAorICAgICAgICAgICAgICAgIGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0xKSkgPT0gJ28nKSkKICAgICAgICAgewotICAgICAgICAgICAgKmZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHVuaWNvZGUsIGxlbi0xKTsKKyAgICAgICAgICAgICpmaWxlbmFtZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcoKmZpbGVuYW1lLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqZmlsZW5hbWUpLTEpOwogICAgICAgICAgICAgaWYgKCpmaWxlbmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwogICAgICAgICB9CkBAIC02NDMsOCArNjU1LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAobW9kdWxlX2dsb2JhbHMpIHsKLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpnZXRfc291cmNlX25hbWUgPSBOVUxMOwotICAgICAgICBzdGF0aWMgUHlPYmplY3QgKnNwbGl0bGluZXNfbmFtZSA9IE5VTEw7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGdldF9zb3VyY2UpOworICAgICAgICBfUHlfSURFTlRJRklFUihzcGxpdGxpbmVzKTsKKyAgICAgICAgUHlPYmplY3QgKnRtcDsKICAgICAgICAgUHlPYmplY3QgKmxvYWRlcjsKICAgICAgICAgUHlPYmplY3QgKm1vZHVsZV9uYW1lOwogICAgICAgICBQeU9iamVjdCAqc291cmNlOwpAQCAtNjUyLDE2ICs2NjUsMTAgQEAKICAgICAgICAgUHlPYmplY3QgKnNvdXJjZV9saW5lOwogICAgICAgICBQeU9iamVjdCAqcmV0dXJuZWQ7CiAKLSAgICAgICAgaWYgKGdldF9zb3VyY2VfbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBnZXRfc291cmNlX25hbWUgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiZ2V0X3NvdXJjZSIpOwotICAgICAgICAgICAgaWYgKCFnZXRfc291cmNlX25hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNwbGl0bGluZXNfbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBzcGxpdGxpbmVzX25hbWUgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygic3BsaXRsaW5lcyIpOwotICAgICAgICAgICAgaWYgKCFzcGxpdGxpbmVzX25hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCh0bXAgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9nZXRfc291cmNlKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoKHRtcCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX3NwbGl0bGluZXMpKSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAgICAgLyogQ2hlY2svZ2V0IHRoZSByZXF1aXNpdGUgcGllY2VzIG5lZWRlZCBmb3IgdGhlIGxvYWRlci4gKi8KICAgICAgICAgbG9hZGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlX2dsb2JhbHMsICJfX2xvYWRlcl9fIik7CkBAIC02NzEsMTEgKzY3OCwxMSBAQAogICAgICAgICAgICAgZ290byBzdGFuZGFyZF9jYWxsOwogCiAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGUgbG9hZGVyIGltcGxlbWVudHMgdGhlIG9wdGlvbmFsIGdldF9zb3VyY2UoKSBtZXRob2QuICovCi0gICAgICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyhsb2FkZXIsICJnZXRfc291cmNlIikpCisgICAgICAgIGlmICghX1B5T2JqZWN0X0hhc0F0dHJJZChsb2FkZXIsICZQeUlkX2dldF9zb3VyY2UpKQogICAgICAgICAgICAgICAgIGdvdG8gc3RhbmRhcmRfY2FsbDsKICAgICAgICAgLyogQ2FsbCBnZXRfc291cmNlKCkgdG8gZ2V0IHRoZSBzb3VyY2UgY29kZS4gKi8KLSAgICAgICAgc291cmNlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MobG9hZGVyLCBnZXRfc291cmNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZSwgTlVMTCk7CisgICAgICAgIHNvdXJjZSA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKGxvYWRlciwgUHlJZF9nZXRfc291cmNlLm9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUsIE5VTEwpOwogICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gUHlfTm9uZSkgewpAQCAtNjg0LDggKzY5MSw5IEBACiAgICAgICAgIH0KIAogICAgICAgICAvKiBTcGxpdCB0aGUgc291cmNlIGludG8gbGluZXMuICovCi0gICAgICAgIHNvdXJjZV9saXN0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc291cmNlLCBzcGxpdGxpbmVzX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIHNvdXJjZV9saXN0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5SWRfc3BsaXRsaW5lcy5vYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihzb3VyY2UpOwogICAgICAgICBpZiAoIXNvdXJjZV9saXN0KQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05NTAsMjMgKzk1OCwzMCBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgX2ZpbHRlcnMgPSBpbml0X2ZpbHRlcnMoKTsKLSAgICBpZiAoX2ZpbHRlcnMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9maWx0ZXJzID09IE5VTEwpIHsKKyAgICAgICAgX2ZpbHRlcnMgPSBpbml0X2ZpbHRlcnMoKTsKKyAgICAgICAgaWYgKF9maWx0ZXJzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgUHlfSU5DUkVGKF9maWx0ZXJzKTsKICAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJmaWx0ZXJzIiwgX2ZpbHRlcnMpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBfb25jZV9yZWdpc3RyeSA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoX29uY2VfcmVnaXN0cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9vbmNlX3JlZ2lzdHJ5ID09IE5VTEwpIHsKKyAgICAgICAgX29uY2VfcmVnaXN0cnkgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIGlmIChfb25jZV9yZWdpc3RyeSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFB5X0lOQ1JFRihfb25jZV9yZWdpc3RyeSk7CiAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX29uY2VyZWdpc3RyeSIsIF9vbmNlX3JlZ2lzdHJ5KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgX2RlZmF1bHRfYWN0aW9uID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImRlZmF1bHQiKTsKLSAgICBpZiAoX2RlZmF1bHRfYWN0aW9uID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfZGVmYXVsdF9hY3Rpb24gPT0gTlVMTCkgeworICAgICAgICBfZGVmYXVsdF9hY3Rpb24gPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiZGVmYXVsdCIpOworICAgICAgICBpZiAoX2RlZmF1bHRfYWN0aW9uID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfSU5DUkVGKF9kZWZhdWx0X2FjdGlvbik7CiAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2RlZmF1bHRhY3Rpb24iLCBfZGVmYXVsdF9hY3Rpb24pIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIG07CmRpZmYgLS1naXQgYS9QeXRob24vYXNkbC5jIGIvUHl0aG9uL2FzZGwuYwppbmRleCBjMzBkN2QyMC4uZTdlMzI4MCAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzZGwuYworKysgYi9QeXRob24vYXNkbC5jCkBAIC0yLDcgKzIsNyBAQAogI2luY2x1ZGUgImFzZGwuaCIKIAogYXNkbF9zZXEgKgotYXNkbF9zZXFfbmV3KGludCBzaXplLCBQeUFyZW5hICphcmVuYSkKK2FzZGxfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGFzZGxfc2VxICpzZXEgPSBOVUxMOwogICAgIHNpemVfdCBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOwpAQCAtMzMsNyArMzMsNyBAQAogfQogCiBhc2RsX2ludF9zZXEgKgotYXNkbF9pbnRfc2VxX25ldyhpbnQgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpCithc2RsX2ludF9zZXFfbmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgYXNkbF9pbnRfc2VxICpzZXEgPSBOVUxMOwogICAgIHNpemVfdCBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzdC5jIGIvUHl0aG9uL2FzdC5jCmluZGV4IDZmYWY1YjIuLmZjNmM1NjUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc3QuYworKysgYi9QeXRob24vYXN0LmMKQEAgLTEsMjQgKzEsNTA3IEBACiAvKgogICogVGhpcyBmaWxlIGluY2x1ZGVzIGZ1bmN0aW9ucyB0byB0cmFuc2Zvcm0gYSBjb25jcmV0ZSBzeW50YXggdHJlZSAoQ1NUKSB0bwotICogYW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUgKEFTVCkuICBUaGUgbWFpbiBmdW5jdGlvbiBpcyBQeUFTVF9Gcm9tTm9kZSgpLgorICogYW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUgKEFTVCkuIFRoZSBtYWluIGZ1bmN0aW9uIGlzIFB5QVNUX0Zyb21Ob2RlKCkuCiAgKgogICovCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiUHl0aG9uLWFzdC5oIgotI2luY2x1ZGUgImdyYW1tYXIuaCIKICNpbmNsdWRlICJub2RlLmgiCiAjaW5jbHVkZSAiYXN0LmgiCiAjaW5jbHVkZSAidG9rZW4uaCIKLSNpbmNsdWRlICJwYXJzZXRvay5oIgotI2luY2x1ZGUgImdyYW1pbml0LmgiCiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KIAorc3RhdGljIGludCB2YWxpZGF0ZV9zdG10cyhhc2RsX3NlcSAqKTsKK3N0YXRpYyBpbnQgdmFsaWRhdGVfZXhwcnMoYXNkbF9zZXEgKiwgZXhwcl9jb250ZXh0X3R5LCBpbnQpOworc3RhdGljIGludCB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoYXNkbF9zZXEgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworc3RhdGljIGludCB2YWxpZGF0ZV9zdG10KHN0bXRfdHkpOworc3RhdGljIGludCB2YWxpZGF0ZV9leHByKGV4cHJfdHksIGV4cHJfY29udGV4dF90eSk7CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2NvbXByZWhlbnNpb24oYXNkbF9zZXEgKmdlbnMpCit7CisgICAgaW50IGk7CisgICAgaWYgKCFhc2RsX3NlcV9MRU4oZ2VucykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJjb21wcmVoZW5zaW9uIHdpdGggbm8gZ2VuZXJhdG9ycyIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihnZW5zKTsgaSsrKSB7CisgICAgICAgIGNvbXByZWhlbnNpb25fdHkgY29tcCA9IGFzZGxfc2VxX0dFVChnZW5zLCBpKTsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGNvbXAtPnRhcmdldCwgU3RvcmUpIHx8CisgICAgICAgICAgICAhdmFsaWRhdGVfZXhwcihjb21wLT5pdGVyLCBMb2FkKSB8fAorICAgICAgICAgICAgIXZhbGlkYXRlX2V4cHJzKGNvbXAtPmlmcywgTG9hZCwgMCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX3NsaWNlKHNsaWNlX3R5IHNsaWNlKQoreworICAgIHN3aXRjaCAoc2xpY2UtPmtpbmQpIHsKKyAgICBjYXNlIFNsaWNlX2tpbmQ6CisgICAgICAgIHJldHVybiAoIXNsaWNlLT52LlNsaWNlLmxvd2VyIHx8IHZhbGlkYXRlX2V4cHIoc2xpY2UtPnYuU2xpY2UubG93ZXIsIExvYWQpKSAmJgorICAgICAgICAgICAgKCFzbGljZS0+di5TbGljZS51cHBlciB8fCB2YWxpZGF0ZV9leHByKHNsaWNlLT52LlNsaWNlLnVwcGVyLCBMb2FkKSkgJiYKKyAgICAgICAgICAgICghc2xpY2UtPnYuU2xpY2Uuc3RlcCB8fCB2YWxpZGF0ZV9leHByKHNsaWNlLT52LlNsaWNlLnN0ZXAsIExvYWQpKTsKKyAgICBjYXNlIEV4dFNsaWNlX2tpbmQ6IHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGlmICghdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHNsaWNlLT52LkV4dFNsaWNlLmRpbXMsICJkaW1zIiwgIkV4dFNsaWNlIikpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzbGljZS0+di5FeHRTbGljZS5kaW1zKTsgaSsrKQorICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZV9zbGljZShhc2RsX3NlcV9HRVQoc2xpY2UtPnYuRXh0U2xpY2UuZGltcywgaSkpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgY2FzZSBJbmRleF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzbGljZS0+di5JbmRleC52YWx1ZSwgTG9hZCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAidW5rbm93biBzbGljZSBub2RlIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIGludAordmFsaWRhdGVfa2V5d29yZHMoYXNkbF9zZXEgKmtleXdvcmRzKQoreworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oa2V5d29yZHMpOyBpKyspCisgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcigoKGtleXdvcmRfdHkpYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKSktPnZhbHVlLCBMb2FkKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9hcmdzKGFzZGxfc2VxICphcmdzKQoreworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oYXJncyk7IGkrKykgeworICAgICAgICBhcmdfdHkgYXJnID0gYXNkbF9zZXFfR0VUKGFyZ3MsIGkpOworICAgICAgICBpZiAoYXJnLT5hbm5vdGF0aW9uICYmICF2YWxpZGF0ZV9leHByKGFyZy0+YW5ub3RhdGlvbiwgTG9hZCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK2V4cHJfY29udGV4dF9uYW1lKGV4cHJfY29udGV4dF90eSBjdHgpCit7CisgICAgc3dpdGNoIChjdHgpIHsKKyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJldHVybiAiTG9hZCI7CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuICJTdG9yZSI7CisgICAgY2FzZSBEZWw6CisgICAgICAgIHJldHVybiAiRGVsIjsKKyAgICBjYXNlIEF1Z0xvYWQ6CisgICAgICAgIHJldHVybiAiQXVnTG9hZCI7CisgICAgY2FzZSBBdWdTdG9yZToKKyAgICAgICAgcmV0dXJuICJBdWdTdG9yZSI7CisgICAgY2FzZSBQYXJhbToKKyAgICAgICAgcmV0dXJuICJQYXJhbSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICByZXR1cm4gIih1bmtub3duKSI7CisgICAgfQorfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9hcmd1bWVudHMoYXJndW1lbnRzX3R5IGFyZ3MpCit7CisgICAgaWYgKCF2YWxpZGF0ZV9hcmdzKGFyZ3MtPmFyZ3MpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoYXJncy0+dmFyYXJnYW5ub3RhdGlvbikgeworICAgICAgICBpZiAoIWFyZ3MtPnZhcmFyZykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ2YXJhcmdhbm5vdGF0aW9uIGJ1dCBubyB2YXJhcmcgb24gYXJndW1lbnRzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXZhbGlkYXRlX2V4cHIoYXJncy0+dmFyYXJnYW5ub3RhdGlvbiwgTG9hZCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCF2YWxpZGF0ZV9hcmdzKGFyZ3MtPmt3b25seWFyZ3MpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoYXJncy0+a3dhcmdhbm5vdGF0aW9uKSB7CisgICAgICAgIGlmICghYXJncy0+a3dhcmcpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAia3dhcmdhbm5vdGF0aW9uIGJ1dCBubyBrd2FyZyBvbiBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcihhcmdzLT5rd2FyZ2Fubm90YXRpb24sIExvYWQpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChhc2RsX3NlcV9MRU4oYXJncy0+ZGVmYXVsdHMpID4gYXNkbF9zZXFfTEVOKGFyZ3MtPmFyZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibW9yZSBwb3NpdGlvbmFsIGRlZmF1bHRzIHRoYW4gYXJncyBvbiBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChhc2RsX3NlcV9MRU4oYXJncy0+a3dfZGVmYXVsdHMpICE9IGFzZGxfc2VxX0xFTihhcmdzLT5rd29ubHlhcmdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImxlbmd0aCBvZiBrd29ubHlhcmdzIGlzIG5vdCB0aGUgc2FtZSBhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAia3dfZGVmYXVsdHMgb24gYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoYXJncy0+ZGVmYXVsdHMsIExvYWQsIDApICYmIHZhbGlkYXRlX2V4cHJzKGFyZ3MtPmt3X2RlZmF1bHRzLCBMb2FkLCAxKTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfZXhwcihleHByX3R5IGV4cCwgZXhwcl9jb250ZXh0X3R5IGN0eCkKK3sKKyAgICBpbnQgY2hlY2tfY3R4ID0gMTsKKyAgICBleHByX2NvbnRleHRfdHkgYWN0dWFsX2N0eDsKKworICAgIC8qIEZpcnN0IGNoZWNrIGV4cHJlc3Npb24gY29udGV4dC4gKi8KKyAgICBzd2l0Y2ggKGV4cC0+a2luZCkgeworICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CisgICAgICAgIGFjdHVhbF9jdHggPSBleHAtPnYuQXR0cmlidXRlLmN0eDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKKyAgICAgICAgYWN0dWFsX2N0eCA9IGV4cC0+di5TdWJzY3JpcHQuY3R4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXJyZWRfa2luZDoKKyAgICAgICAgYWN0dWFsX2N0eCA9IGV4cC0+di5TdGFycmVkLmN0eDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOYW1lX2tpbmQ6CisgICAgICAgIGFjdHVhbF9jdHggPSBleHAtPnYuTmFtZS5jdHg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdF9raW5kOgorICAgICAgICBhY3R1YWxfY3R4ID0gZXhwLT52Lkxpc3QuY3R4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR1cGxlX2tpbmQ6CisgICAgICAgIGFjdHVhbF9jdHggPSBleHAtPnYuVHVwbGUuY3R4OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBpZiAoY3R4ICE9IExvYWQpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiZXhwcmVzc2lvbiB3aGljaCBjYW4ndCBiZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImFzc2lnbmVkIHRvIGluICVzIGNvbnRleHQiLCBleHByX2NvbnRleHRfbmFtZShjdHgpKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGNoZWNrX2N0eCA9IDA7CisgICAgfQorICAgIGlmIChjaGVja19jdHggJiYgYWN0dWFsX2N0eCAhPSBjdHgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJleHByZXNzaW9uIG11c3QgaGF2ZSAlcyBjb250ZXh0IGJ1dCBoYXMgJXMgaW5zdGVhZCIsCisgICAgICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfbmFtZShjdHgpLCBleHByX2NvbnRleHRfbmFtZShhY3R1YWxfY3R4KSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIE5vdyB2YWxpZGF0ZSBleHByZXNzaW9uLiAqLworICAgIHN3aXRjaCAoZXhwLT5raW5kKSB7CisgICAgY2FzZSBCb29sT3Bfa2luZDoKKyAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihleHAtPnYuQm9vbE9wLnZhbHVlcykgPCAyKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkJvb2xPcCB3aXRoIGxlc3MgdGhhbiAyIHZhbHVlcyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5Cb29sT3AudmFsdWVzLCBMb2FkLCAwKTsKKyAgICBjYXNlIEJpbk9wX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5CaW5PcC5sZWZ0LCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuQmluT3AucmlnaHQsIExvYWQpOworICAgIGNhc2UgVW5hcnlPcF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuVW5hcnlPcC5vcGVyYW5kLCBMb2FkKTsKKyAgICBjYXNlIExhbWJkYV9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYXJndW1lbnRzKGV4cC0+di5MYW1iZGEuYXJncykgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LkxhbWJkYS5ib2R5LCBMb2FkKTsKKyAgICBjYXNlIElmRXhwX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5JZkV4cC50ZXN0LCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuSWZFeHAuYm9keSwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LklmRXhwLm9yZWxzZSwgTG9hZCk7CisgICAgY2FzZSBEaWN0X2tpbmQ6CisgICAgICAgIGlmIChhc2RsX3NlcV9MRU4oZXhwLT52LkRpY3Qua2V5cykgIT0gYXNkbF9zZXFfTEVOKGV4cC0+di5EaWN0LnZhbHVlcykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaWN0IGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Yga2V5cyBhcyB2YWx1ZXMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuRGljdC5rZXlzLCBMb2FkLCAwKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoZXhwLT52LkRpY3QudmFsdWVzLCBMb2FkLCAwKTsKKyAgICBjYXNlIFNldF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LlNldC5lbHRzLCBMb2FkLCAwKTsKKyNkZWZpbmUgQ09NUChOQU1FKSBcCisgICAgICAgIGNhc2UgTkFNRSAjIyBfa2luZDogXAorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2NvbXByZWhlbnNpb24oZXhwLT52Lk5BTUUuZ2VuZXJhdG9ycykgJiYgXAorICAgICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52Lk5BTUUuZWx0LCBMb2FkKTsKKyAgICBDT01QKExpc3RDb21wKQorICAgIENPTVAoU2V0Q29tcCkKKyAgICBDT01QKEdlbmVyYXRvckV4cCkKKyN1bmRlZiBDT01QCisgICAgY2FzZSBEaWN0Q29tcF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfY29tcHJlaGVuc2lvbihleHAtPnYuRGljdENvbXAuZ2VuZXJhdG9ycykgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LkRpY3RDb21wLmtleSwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LkRpY3RDb21wLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIFlpZWxkX2tpbmQ6CisgICAgICAgIHJldHVybiAhZXhwLT52LllpZWxkLnZhbHVlIHx8IHZhbGlkYXRlX2V4cHIoZXhwLT52LllpZWxkLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIFlpZWxkRnJvbV9raW5kOgorICAgICAgICByZXR1cm4gIWV4cC0+di5ZaWVsZEZyb20udmFsdWUgfHwKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LllpZWxkRnJvbS52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBDb21wYXJlX2tpbmQ6CisgICAgICAgIGlmICghYXNkbF9zZXFfTEVOKGV4cC0+di5Db21wYXJlLmNvbXBhcmF0b3JzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDb21wYXJlIHdpdGggbm8gY29tcGFyYXRvcnMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmIChhc2RsX3NlcV9MRU4oZXhwLT52LkNvbXBhcmUuY29tcGFyYXRvcnMpICE9CisgICAgICAgICAgICBhc2RsX3NlcV9MRU4oZXhwLT52LkNvbXBhcmUub3BzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDb21wYXJlIGhhcyBhIGRpZmZlcmVudCBudW1iZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBjb21wYXJhdG9ycyBhbmQgb3BlcmFuZHMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuQ29tcGFyZS5jb21wYXJhdG9ycywgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LkNvbXBhcmUubGVmdCwgTG9hZCk7CisgICAgY2FzZSBDYWxsX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLmZ1bmMsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhleHAtPnYuQ2FsbC5hcmdzLCBMb2FkLCAwKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoZXhwLT52LkNhbGwua2V5d29yZHMpICYmCisgICAgICAgICAgICAoIWV4cC0+di5DYWxsLnN0YXJhcmdzIHx8IHZhbGlkYXRlX2V4cHIoZXhwLT52LkNhbGwuc3RhcmFyZ3MsIExvYWQpKSAmJgorICAgICAgICAgICAgKCFleHAtPnYuQ2FsbC5rd2FyZ3MgfHwgdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5rd2FyZ3MsIExvYWQpKTsKKyAgICBjYXNlIE51bV9raW5kOiB7CisgICAgICAgIFB5T2JqZWN0ICpuID0gZXhwLT52Lk51bS5uOworICAgICAgICBpZiAoIVB5TG9uZ19DaGVja0V4YWN0KG4pICYmICFQeUZsb2F0X0NoZWNrRXhhY3QobikgJiYKKyAgICAgICAgICAgICFQeUNvbXBsZXhfQ2hlY2tFeGFjdChuKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm5vbi1udW1lcmljIHR5cGUgaW4gTnVtIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgY2FzZSBTdHJfa2luZDogeworICAgICAgICBQeU9iamVjdCAqcyA9IGV4cC0+di5TdHIuczsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm5vbi1zdHJpbmcgdHlwZSBpbiBTdHIiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBjYXNlIEJ5dGVzX2tpbmQ6IHsKKyAgICAgICAgUHlPYmplY3QgKmIgPSBleHAtPnYuQnl0ZXMuczsKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3QoYikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJub24tYnl0ZXMgdHlwZSBpbiBCeXRlcyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5BdHRyaWJ1dGUudmFsdWUsIExvYWQpOworICAgIGNhc2UgU3Vic2NyaXB0X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9zbGljZShleHAtPnYuU3Vic2NyaXB0LnNsaWNlKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuU3Vic2NyaXB0LnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIFN0YXJyZWRfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LlN0YXJyZWQudmFsdWUsIGN0eCk7CisgICAgY2FzZSBMaXN0X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuTGlzdC5lbHRzLCBjdHgsIDApOworICAgIGNhc2UgVHVwbGVfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5UdXBsZS5lbHRzLCBjdHgsIDApOworICAgIC8qIFRoZXNlIGxhc3QgY2FzZXMgZG9uJ3QgaGF2ZSBhbnkgY2hlY2tpbmcuICovCisgICAgY2FzZSBOYW1lX2tpbmQ6CisgICAgY2FzZSBFbGxpcHNpc19raW5kOgorICAgICAgICByZXR1cm4gMTsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJ1bmV4cGVjdGVkIGV4cHJlc3Npb24iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9ub25lbXB0eV9zZXEoYXNkbF9zZXEgKnNlcSwgY29uc3QgY2hhciAqd2hhdCwgY29uc3QgY2hhciAqb3duZXIpCit7CisgICAgaWYgKGFzZGxfc2VxX0xFTihzZXEpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImVtcHR5ICVzIG9uICVzIiwgd2hhdCwgb3duZXIpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9hc3NpZ25saXN0KGFzZGxfc2VxICp0YXJnZXRzLCBleHByX2NvbnRleHRfdHkgY3R4KQoreworICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEodGFyZ2V0cywgInRhcmdldHMiLCBjdHggPT0gRGVsID8gIkRlbGV0ZSIgOiAiQXNzaWduIikgJiYKKyAgICAgICAgdmFsaWRhdGVfZXhwcnModGFyZ2V0cywgY3R4LCAwKTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfYm9keShhc2RsX3NlcSAqYm9keSwgY29uc3QgY2hhciAqb3duZXIpCit7CisgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShib2R5LCAiYm9keSIsIG93bmVyKSAmJiB2YWxpZGF0ZV9zdG10cyhib2R5KTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfc3RtdChzdG10X3R5IHN0bXQpCit7CisgICAgaW50IGk7CisgICAgc3dpdGNoIChzdG10LT5raW5kKSB7CisgICAgY2FzZSBGdW5jdGlvbkRlZl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LkZ1bmN0aW9uRGVmLmJvZHksICJGdW5jdGlvbkRlZiIpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9hcmd1bWVudHMoc3RtdC0+di5GdW5jdGlvbkRlZi5hcmdzKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoc3RtdC0+di5GdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCwgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgICghc3RtdC0+di5GdW5jdGlvbkRlZi5yZXR1cm5zIHx8CisgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkZ1bmN0aW9uRGVmLnJldHVybnMsIExvYWQpKTsKKyAgICBjYXNlIENsYXNzRGVmX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuQ2xhc3NEZWYuYm9keSwgIkNsYXNzRGVmIikgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKHN0bXQtPnYuQ2xhc3NEZWYuYmFzZXMsIExvYWQsIDApICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9rZXl3b3JkcyhzdG10LT52LkNsYXNzRGVmLmtleXdvcmRzKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoc3RtdC0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCwgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgICghc3RtdC0+di5DbGFzc0RlZi5zdGFyYXJncyB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQ2xhc3NEZWYuc3RhcmFyZ3MsIExvYWQpKSAmJgorICAgICAgICAgICAgKCFzdG10LT52LkNsYXNzRGVmLmt3YXJncyB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQ2xhc3NEZWYua3dhcmdzLCBMb2FkKSk7CisgICAgY2FzZSBSZXR1cm5fa2luZDoKKyAgICAgICAgcmV0dXJuICFzdG10LT52LlJldHVybi52YWx1ZSB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuUmV0dXJuLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIERlbGV0ZV9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYXNzaWdubGlzdChzdG10LT52LkRlbGV0ZS50YXJnZXRzLCBEZWwpOworICAgIGNhc2UgQXNzaWduX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9hc3NpZ25saXN0KHN0bXQtPnYuQXNzaWduLnRhcmdldHMsIFN0b3JlKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkFzc2lnbi52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBBdWdBc3NpZ25fa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udGFyZ2V0LCBTdG9yZSkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udmFsdWUsIExvYWQpOworICAgIGNhc2UgRm9yX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLnRhcmdldCwgU3RvcmUpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLml0ZXIsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuRm9yLmJvZHksICJGb3IiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5Gb3Iub3JlbHNlKTsKKyAgICBjYXNlIFdoaWxlX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuV2hpbGUudGVzdCwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5XaGlsZS5ib2R5LCAiV2hpbGUiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5XaGlsZS5vcmVsc2UpOworICAgIGNhc2UgSWZfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5JZi50ZXN0LCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfYm9keShzdG10LT52LklmLmJvZHksICJJZiIpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9zdG10cyhzdG10LT52LklmLm9yZWxzZSk7CisgICAgY2FzZSBXaXRoX2tpbmQ6CisgICAgICAgIGlmICghdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuV2l0aC5pdGVtcywgIml0ZW1zIiwgIldpdGgiKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHN0bXQtPnYuV2l0aC5pdGVtcyk7IGkrKykgeworICAgICAgICAgICAgd2l0aGl0ZW1fdHkgaXRlbSA9IGFzZGxfc2VxX0dFVChzdG10LT52LldpdGguaXRlbXMsIGkpOworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGl0ZW0tPmNvbnRleHRfZXhwciwgTG9hZCkgfHwKKyAgICAgICAgICAgICAgICAoaXRlbS0+b3B0aW9uYWxfdmFycyAmJiAhdmFsaWRhdGVfZXhwcihpdGVtLT5vcHRpb25hbF92YXJzLCBTdG9yZSkpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuV2l0aC5ib2R5LCAiV2l0aCIpOworICAgIGNhc2UgUmFpc2Vfa2luZDoKKyAgICAgICAgaWYgKHN0bXQtPnYuUmFpc2UuZXhjKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LlJhaXNlLmV4YywgTG9hZCkgJiYKKyAgICAgICAgICAgICAgICAoIXN0bXQtPnYuUmFpc2UuY2F1c2UgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LlJhaXNlLmNhdXNlLCBMb2FkKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0bXQtPnYuUmFpc2UuY2F1c2UpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiUmFpc2Ugd2l0aCBjYXVzZSBidXQgbm8gZXhjZXB0aW9uIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIFRyeV9raW5kOgorICAgICAgICBpZiAoIXZhbGlkYXRlX2JvZHkoc3RtdC0+di5UcnkuYm9keSwgIlRyeSIpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICghYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5LmhhbmRsZXJzKSAmJgorICAgICAgICAgICAgIWFzZGxfc2VxX0xFTihzdG10LT52LlRyeS5maW5hbGJvZHkpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlRyeSBoYXMgbmVpdGhlciBleGNlcHQgaGFuZGxlcnMgbm9yIGZpbmFsYm9keSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFhc2RsX3NlcV9MRU4oc3RtdC0+di5UcnkuaGFuZGxlcnMpICYmCisgICAgICAgICAgICBhc2RsX3NlcV9MRU4oc3RtdC0+di5Ucnkub3JlbHNlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJUcnkgaGFzIG9yZWxzZSBidXQgbm8gZXhjZXB0IGhhbmRsZXJzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5LmhhbmRsZXJzKTsgaSsrKSB7CisgICAgICAgICAgICBleGNlcHRoYW5kbGVyX3R5IGhhbmRsZXIgPSBhc2RsX3NlcV9HRVQoc3RtdC0+di5UcnkuaGFuZGxlcnMsIGkpOworICAgICAgICAgICAgaWYgKChoYW5kbGVyLT52LkV4Y2VwdEhhbmRsZXIudHlwZSAmJgorICAgICAgICAgICAgICAgICAhdmFsaWRhdGVfZXhwcihoYW5kbGVyLT52LkV4Y2VwdEhhbmRsZXIudHlwZSwgTG9hZCkpIHx8CisgICAgICAgICAgICAgICAgIXZhbGlkYXRlX2JvZHkoaGFuZGxlci0+di5FeGNlcHRIYW5kbGVyLmJvZHksICJFeGNlcHRIYW5kbGVyIikpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICghYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5LmZpbmFsYm9keSkgfHwKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdG10cyhzdG10LT52LlRyeS5maW5hbGJvZHkpKSAmJgorICAgICAgICAgICAgKCFhc2RsX3NlcV9MRU4oc3RtdC0+di5Ucnkub3JlbHNlKSB8fAorICAgICAgICAgICAgIHZhbGlkYXRlX3N0bXRzKHN0bXQtPnYuVHJ5Lm9yZWxzZSkpOworICAgIGNhc2UgQXNzZXJ0X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXNzZXJ0LnRlc3QsIExvYWQpICYmCisgICAgICAgICAgICAoIXN0bXQtPnYuQXNzZXJ0Lm1zZyB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXNzZXJ0Lm1zZywgTG9hZCkpOworICAgIGNhc2UgSW1wb3J0X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5JbXBvcnQubmFtZXMsICJuYW1lcyIsICJJbXBvcnQiKTsKKyAgICBjYXNlIEltcG9ydEZyb21fa2luZDoKKyAgICAgICAgaWYgKHN0bXQtPnYuSW1wb3J0RnJvbS5sZXZlbCA8IC0xKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkltcG9ydEZyb20gbGV2ZWwgbGVzcyB0aGFuIC0xIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0RnJvbS5uYW1lcywgIm5hbWVzIiwgIkltcG9ydEZyb20iKTsKKyAgICBjYXNlIEdsb2JhbF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuR2xvYmFsLm5hbWVzLCAibmFtZXMiLCAiR2xvYmFsIik7CisgICAgY2FzZSBOb25sb2NhbF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuTm9ubG9jYWwubmFtZXMsICJuYW1lcyIsICJOb25sb2NhbCIpOworICAgIGNhc2UgRXhwcl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkV4cHIudmFsdWUsIExvYWQpOworICAgIGNhc2UgUGFzc19raW5kOgorICAgIGNhc2UgQnJlYWtfa2luZDoKKyAgICBjYXNlIENvbnRpbnVlX2tpbmQ6CisgICAgICAgIHJldHVybiAxOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgInVuZXhwZWN0ZWQgc3RhdGVtZW50Iik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIGludAordmFsaWRhdGVfc3RtdHMoYXNkbF9zZXEgKnNlcSkKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHNlcSk7IGkrKykgeworICAgICAgICBzdG10X3R5IHN0bXQgPSBhc2RsX3NlcV9HRVQoc2VxLCBpKTsKKyAgICAgICAgaWYgKHN0bXQpIHsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfc3RtdChzdG10KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIGRpc2FsbG93ZWQgaW4gc3RhdGVtZW50IGxpc3QiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9leHBycyhhc2RsX3NlcSAqZXhwcnMsIGV4cHJfY29udGV4dF90eSBjdHgsIGludCBudWxsX29rKQoreworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oZXhwcnMpOyBpKyspIHsKKyAgICAgICAgZXhwcl90eSBleHByID0gYXNkbF9zZXFfR0VUKGV4cHJzLCBpKTsKKyAgICAgICAgaWYgKGV4cHIpIHsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcihleHByLCBjdHgpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFudWxsX29rKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSBkaXNhbGxvd2VkIGluIGV4cHJlc3Npb24gbGlzdCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworaW50CitQeUFTVF9WYWxpZGF0ZShtb2RfdHkgbW9kKQoreworICAgIGludCByZXMgPSAwOworCisgICAgc3dpdGNoIChtb2QtPmtpbmQpIHsKKyAgICBjYXNlIE1vZHVsZV9raW5kOgorICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdG10cyhtb2QtPnYuTW9kdWxlLmJvZHkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGVyYWN0aXZlX2tpbmQ6CisgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXRzKG1vZC0+di5JbnRlcmFjdGl2ZS5ib2R5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uX2tpbmQ6CisgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHIobW9kLT52LkV4cHJlc3Npb24uYm9keSwgTG9hZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3VpdGVfa2luZDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJTdWl0ZSBpcyBub3QgdmFsaWQgaW4gdGhlIENQeXRob24gY29tcGlsZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiaW1wb3NzaWJsZSBtb2R1bGUgbm9kZSIpOworICAgICAgICByZXMgPSAwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLyogVGhpcyBpcyBkb25lIGhlcmUsIHNvIGRlZmluZXMgbGlrZSAidGVzdCIgZG9uJ3QgaW50ZXJmZXJlIHdpdGggQVNUIHVzZSBhYm92ZS4gKi8KKyNpbmNsdWRlICJncmFtbWFyLmgiCisjaW5jbHVkZSAicGFyc2V0b2suaCIKKyNpbmNsdWRlICJncmFtaW5pdC5oIgorCiAvKiBEYXRhIHN0cnVjdHVyZSB1c2VkIGludGVybmFsbHkgKi8KIHN0cnVjdCBjb21waWxpbmcgewogICAgIGNoYXIgKmNfZW5jb2Rpbmc7IC8qIHNvdXJjZSBlbmNvZGluZyAqLwogICAgIFB5QXJlbmEgKmNfYXJlbmE7IC8qIGFyZW5hIGZvciBhbGxvY2F0aW5nIG1lbWVvcnkgKi8KICAgICBjb25zdCBjaGFyICpjX2ZpbGVuYW1lOyAvKiBmaWxlbmFtZSAqLworICAgIFB5T2JqZWN0ICpjX25vcm1hbGl6ZTsgLyogTm9ybWFsaXphdGlvbiBmdW5jdGlvbiBmcm9tIHVuaWNvZGVkYXRhLiAqLworICAgIFB5T2JqZWN0ICpjX25vcm1hbGl6ZV9hcmdzOyAvKiBOb3JtYWxpemF0aW9uIGFyZ3VtZW50IHR1cGxlLiAqLwogfTsKIAogc3RhdGljIGFzZGxfc2VxICpzZXFfZm9yX3Rlc3RsaXN0KHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqKTsKQEAgLTM4LDQ1ICs1MjEsNTggQEAKIHN0YXRpYyBQeU9iamVjdCAqcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqYnl0ZXNtb2RlKTsKIAotI2lmbmRlZiBMSU5FTk8KLSNkZWZpbmUgTElORU5PKG4pICAgICAgICgobiktPm5fbGluZW5vKQotI2VuZGlmCi0KICNkZWZpbmUgQ09NUF9HRU5FWFAgICAwCiAjZGVmaW5lIENPTVBfTElTVENPTVAgMQogI2RlZmluZSBDT01QX1NFVENPTVAgIDIKIAorc3RhdGljIGludAoraW5pdF9ub3JtYWxpemF0aW9uKHN0cnVjdCBjb21waWxpbmcgKmMpCit7CisgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ1bmljb2RlZGF0YSIpOworICAgIGlmICghbSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgYy0+Y19ub3JtYWxpemUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG0sICJub3JtYWxpemUiKTsKKyAgICBQeV9ERUNSRUYobSk7CisgICAgaWYgKCFjLT5jX25vcm1hbGl6ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgYy0+Y19ub3JtYWxpemVfYXJncyA9IFB5X0J1aWxkVmFsdWUoIihzTikiLCAiTkZLQyIsIFB5X05vbmUpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYy0+Y19ub3JtYWxpemVfYXJncywgMSwgTlVMTCk7CisgICAgaWYgKCFjLT5jX25vcm1hbGl6ZV9hcmdzKSB7CisgICAgICAgIFB5X0NMRUFSKGMtPmNfbm9ybWFsaXplKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCiBzdGF0aWMgaWRlbnRpZmllcgotbmV3X2lkZW50aWZpZXIoY29uc3QgY2hhciogbiwgUHlBcmVuYSAqYXJlbmEpCituZXdfaWRlbnRpZmllcihjb25zdCBjaGFyKiBuLCBzdHJ1Y3QgY29tcGlsaW5nICpjKQogewogICAgIFB5T2JqZWN0KiBpZCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KG4sIHN0cmxlbihuKSwgTlVMTCk7Ci0gICAgUHlfVU5JQ09ERSAqdTsKICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaWQpOworICAgIC8qIFB5VW5pY29kZV9EZWNvZGVVVEY4IHNob3VsZCBhbHdheXMgcmV0dXJuIGEgcmVhZHkgc3RyaW5nLiAqLworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkoaWQpKTsKICAgICAvKiBDaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUKICAgICAgICBpZGVudGlmaWVyOyBpZiBzbywgbm9ybWFsaXplIHRvIE5GS0MuICovCi0gICAgZm9yICg7ICp1OyB1KyspIHsKLSAgICAgICAgaWYgKCp1ID49IDEyOCkgewotICAgICAgICAgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ1bmljb2RlZGF0YSIpOwotICAgICAgICAgICAgUHlPYmplY3QgKmlkMjsKLSAgICAgICAgICAgIGlmICghbSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlkMiA9IFB5T2JqZWN0X0NhbGxNZXRob2QobSwgIm5vcm1hbGl6ZSIsICJzTyIsICJORktDIiwgaWQpOwotICAgICAgICAgICAgUHlfREVDUkVGKG0pOwotICAgICAgICAgICAgaWYgKCFpZDIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoaWQpKSB7CisgICAgICAgIFB5T2JqZWN0ICppZDI7CisgICAgICAgIGlmICghYy0+Y19ub3JtYWxpemUgJiYgIWluaXRfbm9ybWFsaXphdGlvbihjKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGlkKTsKLSAgICAgICAgICAgIGlkID0gaWQyOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGMtPmNfbm9ybWFsaXplX2FyZ3MsIDEsIGlkKTsKKyAgICAgICAgaWQyID0gUHlPYmplY3RfQ2FsbChjLT5jX25vcm1hbGl6ZSwgYy0+Y19ub3JtYWxpemVfYXJncywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihpZCk7CisgICAgICAgIGlmICghaWQyKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlkID0gaWQyOwogICAgIH0KICAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZSgmaWQpOwotICAgIFB5QXJlbmFfQWRkUHlPYmplY3QoYXJlbmEsIGlkKTsKKyAgICBQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIGlkKTsKICAgICByZXR1cm4gaWQ7CiB9CiAKLSNkZWZpbmUgTkVXX0lERU5USUZJRVIobikgbmV3X2lkZW50aWZpZXIoU1RSKG4pLCBjLT5jX2FyZW5hKQorI2RlZmluZSBORVdfSURFTlRJRklFUihuKSBuZXdfaWRlbnRpZmllcihTVFIobiksIGMpCiAKIC8qIFRoaXMgcm91dGluZSBwcm92aWRlcyBhbiBpbnZhbGlkIG9iamVjdCBmb3IgdGhlIHN5bnRheCBlcnJvci4KICAgIFRoZSBvdXRlcm1vc3Qgcm91dGluZSBtdXN0IHVucGFjayB0aGlzIGVycm9yIGFuZCBjcmVhdGUgdGhlCkBAIC0yMjYsMTMgKzcyMiwxNCBAQAogICAgIHN0bXRfdHkgczsKICAgICBub2RlICpjaDsKICAgICBzdHJ1Y3QgY29tcGlsaW5nIGM7CisgICAgbW9kX3R5IHJlcyA9IE5VTEw7CiAKICAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmNmX2ZsYWdzICYgUHlDRl9TT1VSQ0VfSVNfVVRGOCkgewogICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwogICAgICAgICBpZiAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKSB7CiAjaWYgMAogICAgICAgICAgICAgYXN0X2Vycm9yKG4sICJlbmNvZGluZyBkZWNsYXJhdGlvbiBpbiBVbmljb2RlIHN0cmluZyIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGdvdG8gb3V0OwogI2VuZGlmCiAgICAgICAgICAgICBuID0gQ0hJTEQobiwgMCk7CiAgICAgICAgIH0KQEAgLTI0NSwxMyArNzQyLDE0IEBACiAgICAgfQogICAgIGMuY19hcmVuYSA9IGFyZW5hOwogICAgIGMuY19maWxlbmFtZSA9IGZpbGVuYW1lOworICAgIGMuY19ub3JtYWxpemUgPSBjLmNfbm9ybWFsaXplX2FyZ3MgPSBOVUxMOwogCiAgICAgayA9IDA7CiAgICAgc3dpdGNoIChUWVBFKG4pKSB7CiAgICAgICAgIGNhc2UgZmlsZV9pbnB1dDoKICAgICAgICAgICAgIHN0bXRzID0gYXNkbF9zZXFfbmV3KG51bV9zdG10cyhuKSwgYXJlbmEpOwogICAgICAgICAgICAgaWYgKCFzdG10cykKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOQ0gobikgLSAxOyBpKyspIHsKICAgICAgICAgICAgICAgICBjaCA9IENISUxEKG4sIGkpOwogICAgICAgICAgICAgICAgIGlmIChUWVBFKGNoKSA9PSBORVdMSU5FKQpAQCAtMjYxLDcgKzc1OSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKG51bSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIHMgPSBhc3RfZm9yX3N0bXQoJmMsIGNoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFzKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc3RtdHMsIGsrKywgcyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMjcwLDQyICs3NjgsNDQgQEAKICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG51bTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYXN0X2Zvcl9zdG10KCZjLCBDSElMRChjaCwgaiAqIDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHN0bXRzLCBrKyssIHMpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIE1vZHVsZShzdG10cywgYXJlbmEpOworICAgICAgICAgICAgcmVzID0gTW9kdWxlKHN0bXRzLCBhcmVuYSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBldmFsX2lucHV0OiB7CiAgICAgICAgICAgICBleHByX3R5IHRlc3RsaXN0X2FzdDsKIAogICAgICAgICAgICAgLyogWFhYIFdoeSBub3QgY29tcF9mb3IgaGVyZT8gKi8KICAgICAgICAgICAgIHRlc3RsaXN0X2FzdCA9IGFzdF9mb3JfdGVzdGxpc3QoJmMsIENISUxEKG4sIDApKTsKICAgICAgICAgICAgIGlmICghdGVzdGxpc3RfYXN0KQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICByZXR1cm4gRXhwcmVzc2lvbih0ZXN0bGlzdF9hc3QsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIHJlcyA9IEV4cHJlc3Npb24odGVzdGxpc3RfYXN0LCBhcmVuYSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIHNpbmdsZV9pbnB1dDoKICAgICAgICAgICAgIGlmIChUWVBFKENISUxEKG4sIDApKSA9PSBORVdMSU5FKSB7CiAgICAgICAgICAgICAgICAgc3RtdHMgPSBhc2RsX3NlcV9uZXcoMSwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmICghc3RtdHMpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzdG10cywgMCwgUGFzcyhuLT5uX2xpbmVubywgbi0+bl9jb2xfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVuYSkpOwogICAgICAgICAgICAgICAgIGlmICghYXNkbF9zZXFfR0VUKHN0bXRzLCAwKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gSW50ZXJhY3RpdmUoc3RtdHMsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICAgICAgcmVzID0gSW50ZXJhY3RpdmUoc3RtdHMsIGFyZW5hKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG4gPSBDSElMRChuLCAwKTsKICAgICAgICAgICAgICAgICBudW0gPSBudW1fc3RtdHMobik7CiAgICAgICAgICAgICAgICAgc3RtdHMgPSBhc2RsX3NlcV9uZXcobnVtLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdG10cykKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgaWYgKG51bSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIHMgPSBhc3RfZm9yX3N0bXQoJmMsIG4pOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXMpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzdG10cywgMCwgcyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMzE2LDIxICs4MTYsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhc3RfZm9yX3N0bXQoJmMsIENISUxEKG4sIGkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHN0bXRzLCBpIC8gMiwgcyk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICByZXR1cm4gSW50ZXJhY3RpdmUoc3RtdHMsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICByZXMgPSBJbnRlcmFjdGl2ZShzdG10cywgYXJlbmEpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbm9kZSAlZCBmb3IgUHlBU1RfRnJvbU5vZGUiLCBUWVBFKG4pKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBnb3RvIG91dDsKICAgICB9Ci0gZXJyb3I6Ci0gICAgYXN0X2Vycm9yX2ZpbmlzaChmaWxlbmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Cisgb3V0OgorICAgIGlmIChjLmNfbm9ybWFsaXplKSB7CisgICAgICAgIFB5X0RFQ1JFRihjLmNfbm9ybWFsaXplKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjLmNfbm9ybWFsaXplX2FyZ3MsIDEsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoYy5jX25vcm1hbGl6ZV9hcmdzKTsKKyAgICB9CisgICAgaWYgKCFyZXMpCisgICAgICAgIGFzdF9lcnJvcl9maW5pc2goZmlsZW5hbWUpOworICAgIHJldHVybiByZXM7CiB9CiAKIC8qIFJldHVybiB0aGUgQVNUIHJlcHIuIG9mIHRoZSBvcGVyYXRvciByZXByZXNlbnRlZCBhcyBzeW50YXggKHwsIF4sIGV0Yy4pCkBAIC00NjgsNiArOTc1LDcgQEAKICAgICAgICAgICAgIGV4cHJfbmFtZSA9ICJnZW5lcmF0b3IgZXhwcmVzc2lvbiI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBZaWVsZF9raW5kOgorICAgICAgICBjYXNlIFlpZWxkRnJvbV9raW5kOgogICAgICAgICAgICAgZXhwcl9uYW1lID0gInlpZWxkIGV4cHJlc3Npb24iOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGlzdENvbXBfa2luZDoKQEAgLTE4ODksMTIgKzIzOTcsMjUgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2Jpbm9wKGMsIG4pOwogICAgICAgICBjYXNlIHlpZWxkX2V4cHI6IHsKKyAgICAgICAgICAgIG5vZGUgKmFuID0gTlVMTDsKKyAgICAgICAgICAgIG5vZGUgKmVuID0gTlVMTDsKKyAgICAgICAgICAgIGludCBpc19mcm9tID0gMDsKICAgICAgICAgICAgIGV4cHJfdHkgZXhwID0gTlVMTDsKLSAgICAgICAgICAgIGlmIChOQ0gobikgPT0gMikgewotICAgICAgICAgICAgICAgIGV4cCA9IGFzdF9mb3JfdGVzdGxpc3QoYywgQ0hJTEQobiwgMSkpOworICAgICAgICAgICAgaWYgKE5DSChuKSA+IDEpCisgICAgICAgICAgICAgICAgYW4gPSBDSElMRChuLCAxKTsgLyogeWllbGRfYXJnICovCisgICAgICAgICAgICBpZiAoYW4pIHsKKyAgICAgICAgICAgICAgICBlbiA9IENISUxEKGFuLCBOQ0goYW4pIC0gMSk7CisgICAgICAgICAgICAgICAgaWYgKE5DSChhbikgPT0gMikgeworICAgICAgICAgICAgICAgICAgICBpc19mcm9tID0gMTsKKyAgICAgICAgICAgICAgICAgICAgZXhwID0gYXN0X2Zvcl9leHByKGMsIGVuKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBleHAgPSBhc3RfZm9yX3Rlc3RsaXN0KGMsIGVuKTsKICAgICAgICAgICAgICAgICBpZiAoIWV4cCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNfZnJvbSkKKyAgICAgICAgICAgICAgICByZXR1cm4gWWllbGRGcm9tKGV4cCwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgICAgICAgICAgcmV0dXJuIFlpZWxkKGV4cCwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZmFjdG9yOgpAQCAtMTkxOSw3ICsyNDQwLDcgQEAKICAgICAvKgogICAgICAgYXJnbGlzdDogKGFyZ3VtZW50ICcsJykqIChhcmd1bWVudCBbJywnXXwgJyonIHRlc3QgWycsJyAnKionIHRlc3RdCiAgICAgICAgICAgICAgICB8ICcqKicgdGVzdCkKLSAgICAgIGFyZ3VtZW50OiBbdGVzdCAnPSddIHRlc3QgW2NvbXBfZm9yXSAgICAgICAgIyBSZWFsbHkgW2tleXdvcmQgJz0nXSB0ZXN0CisgICAgICBhcmd1bWVudDogW3Rlc3QgJz0nXSAodGVzdCkgW2NvbXBfZm9yXSAgICAgICAgIyBSZWFsbHkgW2tleXdvcmQgJz0nXSB0ZXN0CiAgICAgKi8KIAogICAgIGludCBpLCBuYXJncywgbmtleXdvcmRzLCBuZ2VuczsKQEAgLTIwMDMsMTMgKzI1MjQsMTMgQEAKICAgICAgICAgICAgICAgICAgKiB0aGVuIGlzIHZlcnkgY29uZnVzaW5nLgogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIGlmIChlLT5raW5kID09IExhbWJkYV9raW5kKSB7Ci0gICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQoY2gsIDApLCAibGFtYmRhIGNhbm5vdCBjb250YWluIGFzc2lnbm1lbnQiKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQoY2gsIDApLCAibGFtYmRhIGNhbm5vdCBjb250YWluIGFzc2lnbm1lbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLT5raW5kICE9IE5hbWVfa2luZCkgewotICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKENISUxEKGNoLCAwKSwgImtleXdvcmQgY2FuJ3QgYmUgYW4gZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChjaCwgMCksICJrZXl3b3JkIGNhbid0IGJlIGFuIGV4cHJlc3Npb24iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JiaWRkZW5fbmFtZShlLT52Lk5hbWUuaWQsIGNoLCAxKSkgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBrZXkgPSBlLT52Lk5hbWUuaWQ7CiAgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IG5rZXl3b3JkczsgaysrKSB7CkBAIC0yMjEzLDcgKzI3MzQsNyBAQAogICAgICAgY29udGludWVfc3RtdDogJ2NvbnRpbnVlJwogICAgICAgcmV0dXJuX3N0bXQ6ICdyZXR1cm4nIFt0ZXN0bGlzdF0KICAgICAgIHlpZWxkX3N0bXQ6IHlpZWxkX2V4cHIKLSAgICAgIHlpZWxkX2V4cHI6ICd5aWVsZCcgdGVzdGxpc3QKKyAgICAgIHlpZWxkX2V4cHI6ICd5aWVsZCcgdGVzdGxpc3QgfCAneWllbGQnICdmcm9tJyB0ZXN0CiAgICAgICByYWlzZV9zdG10OiAncmFpc2UnIFt0ZXN0IFsnLCcgdGVzdCBbJywnIHRlc3RdXV0KICAgICAqLwogICAgIG5vZGUgKmNoOwpAQCAtMjg4Nyw3ICszNDA4LDcgQEAKIHsKICAgICBjb25zdCBpbnQgbmNoID0gTkNIKG4pOwogICAgIGludCBuX2V4Y2VwdCA9IChuY2ggLSAzKS8zOwotICAgIGFzZGxfc2VxICpib2R5LCAqb3JlbHNlID0gTlVMTCwgKmZpbmFsbHkgPSBOVUxMOworICAgIGFzZGxfc2VxICpib2R5LCAqaGFuZGxlcnMgPSBOVUxMLCAqb3JlbHNlID0gTlVMTCwgKmZpbmFsbHkgPSBOVUxMOwogCiAgICAgUkVRKG4sIHRyeV9zdG10KTsKIApAQCAtMjkyOCw5ICszNDQ5LDggQEAKIAogICAgIGlmIChuX2V4Y2VwdCA+IDApIHsKICAgICAgICAgaW50IGk7Ci0gICAgICAgIHN0bXRfdHkgZXhjZXB0X3N0OwogICAgICAgICAvKiBwcm9jZXNzIGV4Y2VwdCBzdGF0ZW1lbnRzIHRvIGNyZWF0ZSBhIHRyeSAuLi4gZXhjZXB0ICovCi0gICAgICAgIGFzZGxfc2VxICpoYW5kbGVycyA9IGFzZGxfc2VxX25ldyhuX2V4Y2VwdCwgYy0+Y19hcmVuYSk7CisgICAgICAgIGhhbmRsZXJzID0gYXNkbF9zZXFfbmV3KG5fZXhjZXB0LCBjLT5jX2FyZW5hKTsKICAgICAgICAgaWYgKGhhbmRsZXJzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjk0MSwyOCArMzQ2MSwxNSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGhhbmRsZXJzLCBpLCBlKTsKICAgICAgICAgfQotCi0gICAgICAgIGV4Y2VwdF9zdCA9IFRyeUV4Y2VwdChib2R5LCBoYW5kbGVycywgb3JlbHNlLCBMSU5FTk8obiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwotICAgICAgICBpZiAoIWZpbmFsbHkpCi0gICAgICAgICAgICByZXR1cm4gZXhjZXB0X3N0OwotCi0gICAgICAgIC8qIGlmIGEgJ2ZpbmFsbHknIGlzIHByZXNlbnQgdG9vLCB3ZSBuZXN0IHRoZSBUcnlFeGNlcHQgd2l0aGluIGEKLSAgICAgICAgICAgVHJ5RmluYWxseSB0byBlbXVsYXRlIHRyeSAuLi4gZXhjZXB0IC4uLiBmaW5hbGx5ICovCi0gICAgICAgIGJvZHkgPSBhc2RsX3NlcV9uZXcoMSwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIGlmIChib2R5ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIDAsIGV4Y2VwdF9zdCk7CiAgICAgfQogCi0gICAgLyogbXVzdCBiZSBhIHRyeSAuLi4gZmluYWxseSAoZXhjZXB0IGNsYXVzZXMgYXJlIGluIGJvZHksIGlmIGFueSBleGlzdCkgKi8KLSAgICBhc3NlcnQoZmluYWxseSAhPSBOVUxMKTsKLSAgICByZXR1cm4gVHJ5RmluYWxseShib2R5LCBmaW5hbGx5LCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgYXNzZXJ0KGZpbmFsbHkgIT0gTlVMTCB8fCBhc2RsX3NlcV9MRU4oaGFuZGxlcnMpKTsKKyAgICByZXR1cm4gVHJ5KGJvZHksIGhhbmRsZXJzLCBvcmVsc2UsIGZpbmFsbHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKIH0KIAogLyogd2l0aF9pdGVtOiB0ZXN0IFsnYXMnIGV4cHJdICovCi1zdGF0aWMgc3RtdF90eQotYXN0X2Zvcl93aXRoX2l0ZW0oc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgYXNkbF9zZXEgKmNvbnRlbnQpCitzdGF0aWMgd2l0aGl0ZW1fdHkKK2FzdF9mb3Jfd2l0aF9pdGVtKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgZXhwcl90eSBjb250ZXh0X2V4cHIsIG9wdGlvbmFsX3ZhcnMgPSBOVUxMOwogCkBAIC0yOTgxLDQzICszNDg4LDM0IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gV2l0aChjb250ZXh0X2V4cHIsIG9wdGlvbmFsX3ZhcnMsIGNvbnRlbnQsIExJTkVOTyhuKSwKLSAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgIHJldHVybiB3aXRoaXRlbShjb250ZXh0X2V4cHIsIG9wdGlvbmFsX3ZhcnMsIGMtPmNfYXJlbmEpOwogfQogCiAvKiB3aXRoX3N0bXQ6ICd3aXRoJyB3aXRoX2l0ZW0gKCcsJyB3aXRoX2l0ZW0pKiAnOicgc3VpdGUgKi8KIHN0YXRpYyBzdG10X3R5CiBhc3RfZm9yX3dpdGhfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewotICAgIGludCBpOwotICAgIHN0bXRfdHkgcmV0OwotICAgIGFzZGxfc2VxICppbm5lcjsKKyAgICBpbnQgaSwgbl9pdGVtczsKKyAgICBhc2RsX3NlcSAqaXRlbXMsICpib2R5OwogCiAgICAgUkVRKG4sIHdpdGhfc3RtdCk7CiAKLSAgICAvKiBwcm9jZXNzIHRoZSB3aXRoIGl0ZW1zIGluc2lkZS1vdXQgKi8KLSAgICBpID0gTkNIKG4pIC0gMTsKLSAgICAvKiB0aGUgc3VpdGUgb2YgdGhlIGlubmVybW9zdCB3aXRoIGl0ZW0gaXMgdGhlIHN1aXRlIG9mIHRoZSB3aXRoIHN0bXQgKi8KLSAgICBpbm5lciA9IGFzdF9mb3Jfc3VpdGUoYywgQ0hJTEQobiwgaSkpOwotICAgIGlmICghaW5uZXIpCisgICAgbl9pdGVtcyA9IChOQ0gobikgLSAyKSAvIDI7CisgICAgaXRlbXMgPSBhc2RsX3NlcV9uZXcobl9pdGVtcywgYy0+Y19hcmVuYSk7CisgICAgaWYgKCFpdGVtcykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGkgLT0gMjsKLSAgICAgICAgcmV0ID0gYXN0X2Zvcl93aXRoX2l0ZW0oYywgQ0hJTEQobiwgaSksIGlubmVyKTsKLSAgICAgICAgaWYgKCFyZXQpCisgICAgZm9yIChpID0gMTsgaSA8IE5DSChuKSAtIDI7IGkgKz0gMikgeworICAgICAgICB3aXRoaXRlbV90eSBpdGVtID0gYXN0X2Zvcl93aXRoX2l0ZW0oYywgQ0hJTEQobiwgaSkpOworICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogd2FzIHRoaXMgdGhlIGxhc3QgaXRlbT8gKi8KLSAgICAgICAgaWYgKGkgPT0gMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvKiBpZiBub3QsIHdyYXAgdGhlIHJlc3VsdCBzbyBmYXIgaW4gYSBuZXcgc2VxdWVuY2UgKi8KLSAgICAgICAgaW5uZXIgPSBhc2RsX3NlcV9uZXcoMSwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIGlmICghaW5uZXIpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXNkbF9zZXFfU0VUKGlubmVyLCAwLCByZXQpOworICAgICAgICBhc2RsX3NlcV9TRVQoaXRlbXMsIChpIC0gMSkgLyAyLCBpdGVtKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmV0OworICAgIGJvZHkgPSBhc3RfZm9yX3N1aXRlKGMsIENISUxEKG4sIE5DSChuKSAtIDEpKTsKKyAgICBpZiAoIWJvZHkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFdpdGgoaXRlbXMsIGJvZHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKIH0KIAogc3RhdGljIHN0bXRfdHkKQEAgLTMyMDEsMjAgKzM2OTksMTQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRlY29kZV91dGY4KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKipzUHRyLCBjb25zdCBjaGFyICplbmQsIGNoYXIqIGVuY29kaW5nKQorZGVjb2RlX3V0Zjgoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqKnNQdHIsIGNvbnN0IGNoYXIgKmVuZCkKIHsKLSAgICBQeU9iamVjdCAqdSwgKnY7CiAgICAgY2hhciAqcywgKnQ7CiAgICAgdCA9IHMgPSAoY2hhciAqKSpzUHRyOwogICAgIC8qIHdoaWxlIChzIDwgZW5kICYmICpzICE9ICdcXCcpIHMrKzsgKi8gLyogaW5lZmZpY2llbnQgZm9yIHUiLi4iICovCiAgICAgd2hpbGUgKHMgPCBlbmQgJiYgKCpzICYgMHg4MCkpIHMrKzsKICAgICAqc1B0ciA9IHM7Ci0gICAgdSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHQsIHMgLSB0LCBOVUxMKTsKLSAgICBpZiAodSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1LCBlbmNvZGluZywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKHUpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOCh0LCBzIC0gdCwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMjI2LDcgKzM3MTgsNiBAQAogICAgIGNvbnN0IGNoYXIgKmVuZDsKIAogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIGJ1ZiA9IChjaGFyICopczsKICAgICAgICAgdSA9IE5VTEw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KQEAgLTMyNDksMjIgKzM3NDAsMjAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgqcyAmIDB4ODApIHsgLyogWFhYIGluZWZmaWNpZW50ICovCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnc7Ci0gICAgICAgICAgICAgICAgY2hhciAqcjsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJuLCBpOwotICAgICAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kLCAidXRmLTMyLWJlIik7CisgICAgICAgICAgICAgICAgaW50IGtpbmQ7CisgICAgICAgICAgICAgICAgdm9pZCAqZGF0YTsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKKyAgICAgICAgICAgICAgICB3ID0gZGVjb2RlX3V0ZjgoYywgJnMsIGVuZCk7CiAgICAgICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByID0gUHlCeXRlc19BU19TVFJJTkcodyk7Ci0gICAgICAgICAgICAgICAgcm4gPSBQeV9TSVpFKHcpOwotICAgICAgICAgICAgICAgIGFzc2VydChybiAlIDQgPT0gMCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJuOyBpICs9IDQpIHsKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihwLCAiXFxVJTAyeCUwMnglMDJ4JTAyeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcltpICsgMF0gJiAweEZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJbaSArIDFdICYgMHhGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByW2kgKyAyXSAmIDB4RkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcltpICsgM10gJiAweEZGKTsKKyAgICAgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodyk7CisgICAgICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHcpOworICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHcpOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHAsICJcXFUlMDh4IiwgY2hyKTsKICAgICAgICAgICAgICAgICAgICAgcCArPSAxMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLyogU2hvdWxkIGJlIGltcG9zc2libGUgdG8gb3ZlcmZsb3cgKi8KQEAgLTMyOTgsMTMgKzM3ODcsMjEgQEAKICAgICBpbnQgcmF3bW9kZSA9IDA7CiAgICAgaW50IG5lZWRfZW5jb2Rpbmc7CiAgICAgaWYgKGlzYWxwaGEocXVvdGUpKSB7Ci0gICAgICAgIGlmIChxdW90ZSA9PSAnYicgfHwgcXVvdGUgPT0gJ0InKSB7Ci0gICAgICAgICAgICBxdW90ZSA9ICorK3M7Ci0gICAgICAgICAgICAqYnl0ZXNtb2RlID0gMTsKLSAgICAgICAgfQotICAgICAgICBpZiAocXVvdGUgPT0gJ3InIHx8IHF1b3RlID09ICdSJykgewotICAgICAgICAgICAgcXVvdGUgPSAqKytzOwotICAgICAgICAgICAgcmF3bW9kZSA9IDE7CisgICAgICAgIHdoaWxlICghKmJ5dGVzbW9kZSB8fCAhcmF3bW9kZSkgeworICAgICAgICAgICAgaWYgKHF1b3RlID09ICdiJyB8fCBxdW90ZSA9PSAnQicpIHsKKyAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7CisgICAgICAgICAgICAgICAgKmJ5dGVzbW9kZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChxdW90ZSA9PSAndScgfHwgcXVvdGUgPT0gJ1UnKSB7CisgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocXVvdGUgPT0gJ3InIHx8IHF1b3RlID09ICdSJykgeworICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKKyAgICAgICAgICAgICAgICByYXdtb2RlID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGlmIChxdW90ZSAhPSAnXCcnICYmIHF1b3RlICE9ICdcIicpIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKaW5kZXggYjg1ZTM3Yi4uMGU2ZTZmZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2JsdGlubW9kdWxlLmMKKysrIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKQEAgLTYsNiArNiw5IEBACiAjaW5jbHVkZSAibm9kZS5oIgogI2luY2x1ZGUgImNvZGUuaCIKIAorI2luY2x1ZGUgImFzZGwuaCIKKyNpbmNsdWRlICJhc3QuaCIKKwogI2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKQEAgLTE4LDIwICsyMSwyMCBAQAogICAgRG9uJ3QgZm9yZ2V0IHRvIG1vZGlmeSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KCkgaWYgeW91IHRvdWNoIGFueSBvZiB0aGUKICAgIHZhbHVlcyBmb3IgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyEKICovCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gIm1iY3MiOwogaW50IFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAxOwogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKLSNlbGlmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCisjZWxzZQogY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IE5VTEw7IC8qIHNldCBieSBpbml0ZnNlbmNvZGluZygpICovCiBpbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7Ci0jZWxzZQotY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJ1dGYtOCI7Ci1pbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDE7CiAjZW5kaWYKIAorX1B5X0lERU5USUZJRVIoZmlsZW5vKTsKK19QeV9JREVOVElGSUVSKGZsdXNoKTsKKwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fX19idWlsZF9jbGFzc19fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0zOSw2ICs0Miw3IEBACiAgICAgUHlPYmplY3QgKmNscyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBuYXJnczsKICAgICBpbnQgaXNjbGFzczsKKyAgICBfUHlfSURFTlRJRklFUihfX3ByZXBhcmVfXyk7CiAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMKTsKICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKQEAgLTk5LDYgKzEwMyw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihtZXRhKTsKICAgICAgICAgaXNjbGFzcyA9IDE7ICAvKiBtZXRhIGlzIHJlYWxseSBhIGNsYXNzICovCiAgICAgfQorCiAgICAgaWYgKGlzY2xhc3MpIHsKICAgICAgICAgLyogbWV0YSBpcyByZWFsbHkgYSBjbGFzcywgc28gY2hlY2sgZm9yIGEgbW9yZSBkZXJpdmVkCiAgICAgICAgICAgIG1ldGFjbGFzcywgb3IgcG9zc2libGUgbWV0YWNsYXNzIGNvbmZsaWN0czogKi8KQEAgLTExOCw3ICsxMjMsNyBAQAogICAgIH0KICAgICAvKiBlbHNlOiBtZXRhIGlzIG5vdCBhIGNsYXNzLCBzbyB3ZSBjYW5ub3QgZG8gdGhlIG1ldGFjbGFzcwogICAgICAgIGNhbGN1bGF0aW9uLCBzbyB3ZSB3aWxsIHVzZSB0aGUgZXhwbGljaXRseSBnaXZlbiBvYmplY3QgYXMgaXQgaXMgKi8KLSAgICBwcmVwID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtZXRhLCAiX19wcmVwYXJlX18iKTsKKyAgICBwcmVwID0gX1B5T2JqZWN0X0dldEF0dHJJZChtZXRhLCAmUHlJZF9fX3ByZXBhcmVfXyk7CiAgICAgaWYgKHByZXAgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xNzksMjEgKzE4NCwxOCBAQAogewogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibmFtZSIsICJnbG9iYWxzIiwgImxvY2FscyIsICJmcm9tbGlzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsZXZlbCIsIDB9OwotICAgIGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKmdsb2JhbHMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpsb2NhbHMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpmcm9tbGlzdCA9IE5VTEw7Ci0gICAgaW50IGxldmVsID0gLTE7CisgICAgUHlPYmplY3QgKm5hbWUsICpnbG9iYWxzID0gTlVMTCwgKmxvY2FscyA9IE5VTEwsICpmcm9tbGlzdCA9IE5VTEw7CisgICAgaW50IGxldmVsID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJzfE9PT2k6X19pbXBvcnRfXyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIlV8T09PaTpfX2ltcG9ydF9fIiwKICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbmFtZSwgJmdsb2JhbHMsICZsb2NhbHMsICZmcm9tbGlzdCwgJmxldmVsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKG5hbWUsIGdsb2JhbHMsIGxvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGxldmVsKTsKKyAgICByZXR1cm4gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QobmFtZSwgZ2xvYmFscywgbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdCwgbGV2ZWwpOwogfQogCiBQeURvY19TVFJWQVIoaW1wb3J0X2RvYywKLSJfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9e30sIGxvY2Fscz17fSwgZnJvbWxpc3Q9W10sIGxldmVsPS0xKSAtPiBtb2R1bGVcblwKKyJfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGZyb21saXN0PSgpLCBsZXZlbD0wKSAtPiBtb2R1bGVcblwKIFxuXAogSW1wb3J0IGEgbW9kdWxlLiBCZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgZm9yIHVzZSBieSB0aGUgUHl0aG9uXG5cCiBpbnRlcnByZXRlciBhbmQgbm90IGZvciBnZW5lcmFsIHVzZSBpdCBpcyBiZXR0ZXIgdG8gdXNlXG5cCkBAIC0yMDYsOCArMjA4LDcgQEAKIFdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlLCBub3RlIHRoYXQgX19pbXBvcnRfXygnQS5CJywgLi4uKVxuXAogcmV0dXJucyBwYWNrYWdlIEEgd2hlbiBmcm9tbGlzdCBpcyBlbXB0eSwgYnV0IGl0cyBzdWJtb2R1bGUgQiB3aGVuXG5cCiBmcm9tbGlzdCBpcyBub3QgZW1wdHkuICBMZXZlbCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gXG5cCi1hYnNvbHV0ZSBvciByZWxhdGl2ZSBpbXBvcnRzLiAgLTEgaXMgdGhlIG9yaWdpbmFsIHN0cmF0ZWd5IG9mIGF0dGVtcHRpbmdcblwKLWJvdGggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIGltcG9ydHMsIDAgaXMgYWJzb2x1dGUsIGEgcG9zaXRpdmUgbnVtYmVyXG5cCithYnNvbHV0ZSBvciByZWxhdGl2ZSBpbXBvcnRzLiAwIGlzIGFic29sdXRlIHdoaWxlIGEgcG9zaXRpdmUgbnVtYmVyXG5cCiBpcyB0aGUgbnVtYmVyIG9mIHBhcmVudCBkaXJlY3RvcmllcyB0byBzZWFyY2ggcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgbW9kdWxlLiIpOwogCiAKQEAgLTQzNiw2ICs0MzcsMTkgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitmaWx0ZXJfcmVkdWNlKGZpbHRlcm9iamVjdCAqbHopCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQpOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBmaWx0ZXJfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgKFB5Q0Z1bmN0aW9uKWZpbHRlcl9yZWR1Y2UsICAgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoZmlsdGVyX2RvYywKICJmaWx0ZXIoZnVuY3Rpb24gb3IgTm9uZSwgaXRlcmFibGUpIC0tPiBmaWx0ZXIgb2JqZWN0XG5cCiBcblwKQEAgLTQ3Miw3ICs0ODYsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZmlsdGVyX25leHQsICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGZpbHRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtNTE2LDE3ICs1MzAsMTAgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKHgpOwogfQogCi1QeURvY19WQVIoY2hyX2RvYykgPSBQeURvY19TVFIoCitQeURvY19TVFJWQVIoY2hyX2RvYywKICJjaHIoaSkgLT4gVW5pY29kZSBjaGFyYWN0ZXJcblwKIFxuXAotUmV0dXJuIGEgVW5pY29kZSBzdHJpbmcgb2Ygb25lIGNoYXJhY3RlciB3aXRoIG9yZGluYWwgaTsgMCA8PSBpIDw9IDB4MTBmZmZmLiIKLSkKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi1QeURvY19TVFIoCi0iXG5JZiAweDEwMDAwIDw9IGksIGEgc3Vycm9nYXRlIHBhaXIgaXMgcmV0dXJuZWQuIgotKQotI2VuZGlmCi07CitSZXR1cm4gYSBVbmljb2RlIHN0cmluZyBvZiBvbmUgY2hhcmFjdGVyIHdpdGggb3JkaW5hbCBpOyAwIDw9IGkgPD0gMHgxMGZmZmYuIik7CiAKIAogc3RhdGljIGNoYXIgKgpAQCAtNTM3LDggKzU0NCw4IEBACiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGNtZCkpIHsKICAgICAgICAgY2YtPmNmX2ZsYWdzIHw9IFB5Q0ZfSUdOT1JFX0NPT0tJRTsKLSAgICAgICAgY21kID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKGNtZCwgTlVMTCk7Ci0gICAgICAgIGlmIChjbWQgPT0gTlVMTCkKKyAgICAgICAgc3RyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoY21kLCAmc2l6ZSk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmICghUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyKGNtZCkpIHsKQEAgLTU0Nyw5ICs1NTQsMTAgQEAKICAgICAgICAgICBmdW5jbmFtZSwgd2hhdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoUHlPYmplY3RfQXNSZWFkQnVmZmVyKGNtZCwgKGNvbnN0IHZvaWQgKiopJnN0ciwgJnNpemUpIDwgMCkgeworICAgIGVsc2UgaWYgKFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcihjbWQsIChjb25zdCB2b2lkICoqKSZzdHIsICZzaXplKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgaWYgKHN0cmxlbihzdHIpICE9IHNpemUpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UgY29kZSBzdHJpbmcgY2Fubm90IGNvbnRhaW4gbnVsbCBieXRlcyIpOwpAQCAtNjM4LDYgKzY0NiwxMCBAQAogICAgICAgICAgICAgICAgIFB5QXJlbmFfRnJlZShhcmVuYSk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghUHlBU1RfVmFsaWRhdGUobW9kKSkgeworICAgICAgICAgICAgICAgIFB5QXJlbmFfRnJlZShhcmVuYSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdCA9IChQeU9iamVjdCopUHlBU1RfQ29tcGlsZUV4KG1vZCwgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2YsIG9wdGltaXplLCBhcmVuYSk7CiAgICAgICAgICAgICBQeUFyZW5hX0ZyZWUoYXJlbmEpOwpAQCAtNzkzLDcgKzgwNSw2IEBACiB7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgUHlPYmplY3QgKnByb2csICpnbG9iYWxzID0gUHlfTm9uZSwgKmxvY2FscyA9IFB5X05vbmU7Ci0gICAgaW50IHBsYWluID0gMDsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImV4ZWMiLCAxLCAzLCAmcHJvZywgJmdsb2JhbHMsICZsb2NhbHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTgwMiw3ICs4MTMsNiBAQAogICAgICAgICBnbG9iYWxzID0gUHlFdmFsX0dldEdsb2JhbHMoKTsKICAgICAgICAgaWYgKGxvY2FscyA9PSBQeV9Ob25lKSB7CiAgICAgICAgICAgICBsb2NhbHMgPSBQeUV2YWxfR2V0TG9jYWxzKCk7Ci0gICAgICAgICAgICBwbGFpbiA9IDE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFnbG9iYWxzIHx8ICFsb2NhbHMpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKQEAgLTEwNTgsNiArMTA2OCwzMSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCittYXBfcmVkdWNlKG1hcG9iamVjdCAqbHopCit7CisgICAgUHlfc3NpemVfdCBudW1hcmdzID0gUHlUdXBsZV9HRVRfU0laRShsei0+aXRlcnMpOworICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcobnVtYXJncysxKTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKGx6LT5mdW5jKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIGx6LT5mdW5jKTsKKyAgICBmb3IgKGkgPSAwOyBpPG51bWFyZ3M7IGkrKyl7CisgICAgICAgIFB5T2JqZWN0ICppdCA9IFB5VHVwbGVfR0VUX0lURU0obHotPml0ZXJzLCBpKTsKKyAgICAgICAgUHlfSU5DUkVGKGl0KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCBpKzEsIGl0KTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT04iLCBQeV9UWVBFKGx6KSwgYXJncyk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBtYXBfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgKFB5Q0Z1bmN0aW9uKW1hcF9yZWR1Y2UsICAgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCisKIFB5RG9jX1NUUlZBUihtYXBfZG9jLAogIm1hcChmdW5jLCAqaXRlcmFibGVzKSAtLT4gbWFwIG9iamVjdFxuXAogXG5cCkBAIC0xMDk0LDcgKzExMjksNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpbWFwX25leHQsICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtYXBfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTExMTgsNyArMTE1Myw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghUHlJdGVyX0NoZWNrKGl0KSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgIiUuMjAwcyBvYmplY3QgaXMgbm90IGFuIGl0ZXJhdG9yIiwKKyAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGFuIGl0ZXJhdG9yIiwKICAgICAgICAgICAgIGl0LT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTQyNCwyNCArMTQ1OSwxMyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7Ci0gICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwogICAgICAgICBpZiAoc2l6ZSA9PSAxKSB7Ci0gICAgICAgICAgICBvcmQgPSAobG9uZykqUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKTsKKyAgICAgICAgICAgIG9yZCA9IChsb25nKVB5VW5pY29kZV9SRUFEX0NIQVIob2JqLCAwKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKHNpemUgPT0gMikgewotICAgICAgICAgICAgLyogRGVjb2RlIGEgdmFsaWQgc3Vycm9nYXRlIHBhaXIgKi8KLSAgICAgICAgICAgIGludCBjMCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iailbMF07Ci0gICAgICAgICAgICBpbnQgYzEgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopWzFdOwotICAgICAgICAgICAgaWYgKDB4RDgwMCA8PSBjMCAmJiBjMCA8PSAweERCRkYgJiYKLSAgICAgICAgICAgICAgICAweERDMDAgPD0gYzEgJiYgYzEgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgb3JkID0gKCgoKGMwICYgMHgwM0ZGKSA8PCAxMCkgfCAoYzEgJiAweDAzRkYpKSArCi0gICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDApOwotICAgICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCiAgICAgfQogICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKG9iaikpIHsKICAgICAgICAgLyogWFhYIEhvcGVmdWxseSB0aGlzIGlzIHRlbXBvcmFyeSAqLwpAQCAtMTQ2OSwxMyArMTQ5Myw3IEBACiAib3JkKGMpIC0+IGludGVnZXJcblwKIFxuXAogUmV0dXJuIHRoZSBpbnRlZ2VyIG9yZGluYWwgb2YgYSBvbmUtY2hhcmFjdGVyIHN0cmluZy4iCi0pCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotUHlEb2NfU1RSKAotIlxuQSB2YWxpZCBzdXJyb2dhdGUgcGFpciBpcyBhbHNvIGFjY2VwdGVkLiIKLSkKLSNlbmRpZgotOworKTsKIAogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTQ5OSwxNSArMTUxNywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fcHJpbnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJlbmQiLCAiZmlsZSIsIDB9OworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgImVuZCIsICJmaWxlIiwgImZsdXNoIiwgMH07CiAgICAgc3RhdGljIFB5T2JqZWN0ICpkdW1teV9hcmdzOwotICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMLCAqZW5kID0gTlVMTCwgKmZpbGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMLCAqZW5kID0gTlVMTCwgKmZpbGUgPSBOVUxMLCAqZmx1c2ggPSBOVUxMOwogICAgIGludCBpLCBlcnI7CiAKICAgICBpZiAoZHVtbXlfYXJncyA9PSBOVUxMICYmICEoZHVtbXlfYXJncyA9IFB5VHVwbGVfTmV3KDApKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGR1bW15X2FyZ3MsIGt3ZHMsICJ8T09POnByaW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzZXAsICZlbmQsICZmaWxlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoZHVtbXlfYXJncywga3dkcywgInxPT09POnByaW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzZXAsICZlbmQsICZmaWxlLCAmZmx1c2gpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoZmlsZSA9PSBOVUxMIHx8IGZpbGUgPT0gUHlfTm9uZSkgewogICAgICAgICBmaWxlID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRvdXQiKTsKQEAgLTE1NTgsMTcgKzE1NzYsMzIgQEAKICAgICBpZiAoZXJyKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmIChmbHVzaCAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICp0bXA7CisgICAgICAgIGludCBkb19mbHVzaCA9IFB5T2JqZWN0X0lzVHJ1ZShmbHVzaCk7CisgICAgICAgIGlmIChkb19mbHVzaCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBlbHNlIGlmIChkb19mbHVzaCkgeworICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmaWxlLCAiZmx1c2giLCAiIik7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKHByaW50X2RvYywKLSJwcmludCh2YWx1ZSwgLi4uLCBzZXA9JyAnLCBlbmQ9J1xcbicsIGZpbGU9c3lzLnN0ZG91dClcblwKKyJwcmludCh2YWx1ZSwgLi4uLCBzZXA9JyAnLCBlbmQ9J1xcbicsIGZpbGU9c3lzLnN0ZG91dCwgZmx1c2g9RmFsc2UpXG5cCiBcblwKIFByaW50cyB0aGUgdmFsdWVzIHRvIGEgc3RyZWFtLCBvciB0byBzeXMuc3Rkb3V0IGJ5IGRlZmF1bHQuXG5cCiBPcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50czpcblwKLWZpbGU6IGEgZmlsZS1saWtlIG9iamVjdCAoc3RyZWFtKTsgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgc3lzLnN0ZG91dC5cblwKLXNlcDogIHN0cmluZyBpbnNlcnRlZCBiZXR3ZWVuIHZhbHVlcywgZGVmYXVsdCBhIHNwYWNlLlxuXAotZW5kOiAgc3RyaW5nIGFwcGVuZGVkIGFmdGVyIHRoZSBsYXN0IHZhbHVlLCBkZWZhdWx0IGEgbmV3bGluZS4iKTsKK2ZpbGU6ICBhIGZpbGUtbGlrZSBvYmplY3QgKHN0cmVhbSk7IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHN5cy5zdGRvdXQuXG5cCitzZXA6ICAgc3RyaW5nIGluc2VydGVkIGJldHdlZW4gdmFsdWVzLCBkZWZhdWx0IGEgc3BhY2UuXG5cCitlbmQ6ICAgc3RyaW5nIGFwcGVuZGVkIGFmdGVyIHRoZSBsYXN0IHZhbHVlLCBkZWZhdWx0IGEgbmV3bGluZS5cblwKK2ZsdXNoOiB3aGV0aGVyIHRvIGZvcmNpYmx5IGZsdXNoIHRoZSBzdHJlYW0uIik7CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE2MDQsNyArMTYzNyw3IEBACiAgICAgfQogCiAgICAgLyogRmlyc3Qgb2YgYWxsLCBmbHVzaCBzdGRlcnIgKi8KLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZlcnIsICJmbHVzaCIsICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTE2MTMsNyArMTY0Niw3IEBACiAgICAgLyogV2Ugc2hvdWxkIG9ubHkgdXNlIChHTlUpIHJlYWRsaW5lIGlmIFB5dGhvbidzIHN5cy5zdGRpbiBhbmQKICAgICAgICBzeXMuc3Rkb3V0IGFyZSB0aGUgc2FtZSBhcyBDJ3Mgc3RkaW4gYW5kIHN0ZG91dCwgYmVjYXVzZSB3ZQogICAgICAgIG5lZWQgdG8gcGFzcyBpdCB0aG9zZS4gKi8KLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZpbiwgImZpbGVubyIsICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbiwgJlB5SWRfZmlsZW5vLCAiIik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIHR0eSA9IDA7CkBAIC0xNjI2LDcgKzE2NTksNyBAQAogICAgICAgICB0dHkgPSBmZCA9PSBmaWxlbm8oc3RkaW4pICYmIGlzYXR0eShmZCk7CiAgICAgfQogICAgIGlmICh0dHkpIHsKLSAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmb3V0LCAiZmlsZW5vIiwgIiIpOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZpbGVubywgIiIpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlIHsKQEAgLTE2NDgsOSArMTY4MSwxMSBAQAogICAgICAgICBjaGFyICpzdGRpbl9lbmNvZGluZ19zdHIsICpzdGRpbl9lcnJvcnNfc3RyOwogICAgICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgICAgICBzaXplX3QgbGVuOworICAgICAgICBfUHlfSURFTlRJRklFUihlbmNvZGluZyk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGVycm9ycyk7CiAKLSAgICAgICAgc3RkaW5fZW5jb2RpbmcgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbiwgImVuY29kaW5nIik7Ci0gICAgICAgIHN0ZGluX2Vycm9ycyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmluLCAiZXJyb3JzIik7CisgICAgICAgIHN0ZGluX2VuY29kaW5nID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaW4sICZQeUlkX2VuY29kaW5nKTsKKyAgICAgICAgc3RkaW5fZXJyb3JzID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaW4sICZQeUlkX2Vycm9ycyk7CiAgICAgICAgIGlmICghc3RkaW5fZW5jb2RpbmcgfHwgIXN0ZGluX2Vycm9ycykKICAgICAgICAgICAgIC8qIHN0ZGluIGlzIGEgdGV4dCBzdHJlYW0sIHNvIGl0IG11c3QgaGF2ZSBhbgogICAgICAgICAgICAgICAgZW5jb2RpbmcuICovCkBAIC0xNjU5LDcgKzE2OTQsNyBAQAogICAgICAgICBzdGRpbl9lcnJvcnNfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhzdGRpbl9lcnJvcnMpOwogICAgICAgICBpZiAoIXN0ZGluX2VuY29kaW5nX3N0ciB8fCAhc3RkaW5fZXJyb3JzX3N0cikKICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKLSAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmb3V0LCAiZmx1c2giLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQpAQCAtMTY2OCw4ICsxNzAzLDggQEAKICAgICAgICAgICAgIC8qIFdlIGhhdmUgYSBwcm9tcHQsIGVuY29kZSBpdCBhcyBzdGRvdXQgd291bGQgKi8KICAgICAgICAgICAgIGNoYXIgKnN0ZG91dF9lbmNvZGluZ19zdHIsICpzdGRvdXRfZXJyb3JzX3N0cjsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmdwbzsKLSAgICAgICAgICAgIHN0ZG91dF9lbmNvZGluZyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZm91dCwgImVuY29kaW5nIik7Ci0gICAgICAgICAgICBzdGRvdXRfZXJyb3JzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmb3V0LCAiZXJyb3JzIik7CisgICAgICAgICAgICBzdGRvdXRfZW5jb2RpbmcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZvdXQsICZQeUlkX2VuY29kaW5nKTsKKyAgICAgICAgICAgIHN0ZG91dF9lcnJvcnMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZvdXQsICZQeUlkX2Vycm9ycyk7CiAgICAgICAgICAgICBpZiAoIXN0ZG91dF9lbmNvZGluZyB8fCAhc3Rkb3V0X2Vycm9ycykKICAgICAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7CiAgICAgICAgICAgICBzdGRvdXRfZW5jb2Rpbmdfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhzdGRvdXRfZW5jb2RpbmcpOwpAQCAtMTczOSw3ICsxNzc0LDcgQEAKICAgICAgICAgaWYgKFB5RmlsZV9Xcml0ZU9iamVjdChwcm9tcHRhcmcsIGZvdXQsIFB5X1BSSU5UX1JBVykgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZvdXQsICJmbHVzaCIsICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTE4MjEsNiArMTg1Niw3IEBACiAgICAgUHlPYmplY3QgKmNhbGxhYmxlOwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaXRlcmFibGUiLCAia2V5IiwgInJldmVyc2UiLCAwfTsKICAgICBpbnQgcmV2ZXJzZTsKKyAgICBfUHlfSURFTlRJRklFUihzb3J0KTsKIAogICAgIC8qIGFyZ3MgMS0zIHNob3VsZCBtYXRjaCBsaXN0c29ydCBpbiBPYmplY3RzL2xpc3RvYmplY3QuYyAqLwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9pOnNvcnRlZCIsCkBAIC0xODMxLDcgKzE4NjcsNyBAQAogICAgIGlmIChuZXdsaXN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgY2FsbGFibGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG5ld2xpc3QsICJzb3J0Iik7CisgICAgY2FsbGFibGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKG5ld2xpc3QsICZQeUlkX3NvcnQpOwogICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdsaXN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODc3LDcgKzE5MTMsOCBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKGQpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodiwgIl9fZGljdF9fIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKKyAgICAgICAgZCA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfX19kaWN0X18pOwogICAgICAgICBpZiAoZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJ2YXJzKCkgYXJndW1lbnQgbXVzdCBoYXZlIF9fZGljdF9fIGF0dHJpYnV0ZSIpOwpAQCAtMTkyMSwxMiArMTk1OCwxOCBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKHJlc3VsdCkpIHsKKyAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVzdWx0KSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAic3VtKCkgY2FuJ3Qgc3VtIGJ5dGVzIFt1c2UgYicnLmpvaW4oc2VxKSBpbnN0ZWFkXSIpOwogICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgInN1bSgpIGNhbid0IHN1bSBieXRlYXJyYXkgW3VzZSBiJycuam9pbihzZXEpIGluc3RlYWRdIik7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCiAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwogICAgIH0KQEAgLTIyMjksNiArMjI3MiwxOCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit6aXBfcmVkdWNlKHppcG9iamVjdCAqbHopCit7CisgICAgLyogSnVzdCByZWNyZWF0ZSB0aGUgemlwIHdpdGggdGhlIGludGVybmFsIGl0ZXJhdG9yIHR1cGxlICovCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk9PIiwgUHlfVFlQRShseiksIGx6LT5pdHR1cGxlKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIHppcF9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAoUHlDRnVuY3Rpb24pemlwX3JlZHVjZSwgICBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUih6aXBfZG9jLAogInppcChpdGVyMSBbLGl0ZXIyIFsuLi5dXSkgLS0+IHppcCBvYmplY3RcblwKIFxuXApAQCAtMjI2Nyw3ICsyMzIyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXppcF9uZXh0LCAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgemlwX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCmRpZmYgLS1naXQgYS9QeXRob24vY2V2YWwuYyBiL1B5dGhvbi9jZXZhbC5jCmluZGV4IGYwZWE3YzkuLjgyYmZjYzYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jZXZhbC5jCisrKyBiL1B5dGhvbi9jZXZhbC5jCkBAIC0xMzgsNyArMTM4LDcgQEAKIHN0YXRpYyB2b2lkIGZvcm1hdF9leGNfdW5ib3VuZChQeUNvZGVPYmplY3QgKmNvLCBpbnQgb3BhcmcpOwogc3RhdGljIFB5T2JqZWN0ICogdW5pY29kZV9jb25jYXRlbmF0ZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICosIHVuc2lnbmVkIGNoYXIgKik7Ci1zdGF0aWMgUHlPYmplY3QgKiBzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqLCBjaGFyICosIFB5T2JqZWN0ICoqKTsKK3N0YXRpYyBQeU9iamVjdCAqIHNwZWNpYWxfbG9va3VwKFB5T2JqZWN0ICosIF9QeV9JZGVudGlmaWVyICopOwogCiAjZGVmaW5lIE5BTUVfRVJST1JfTVNHIFwKICAgICAibmFtZSAnJS4yMDBzJyBpcyBub3QgZGVmaW5lZCIKQEAgLTM3Miw2ICszNzIsNyBAQAogdm9pZAogUHlFdmFsX1JlSW5pdFRocmVhZHModm9pZCkKIHsKKyAgICBfUHlfSURFTlRJRklFUihfYWZ0ZXJfZm9yayk7CiAgICAgUHlPYmplY3QgKnRocmVhZGluZywgKnJlc3VsdDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogCkBAIC0zOTIsNyArMzkzLDcgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRocmVhZGluZywgIl9hZnRlcl9mb3JrIiwgTlVMTCk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19hZnRlcl9mb3JrLCBOVUxMKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSh0aHJlYWRpbmcpOwogICAgIGVsc2UKQEAgLTQ5MSw3ICs0OTIsNiBAQAogfSBwZW5kaW5nY2FsbHNbTlBFTkRJTkdDQUxMU107CiBzdGF0aWMgaW50IHBlbmRpbmdmaXJzdCA9IDA7CiBzdGF0aWMgaW50IHBlbmRpbmdsYXN0ID0gMDsKLXN0YXRpYyBjaGFyIHBlbmRpbmdidXN5ID0gMDsKIAogaW50CiBQeV9BZGRQZW5kaW5nQ2FsbChpbnQgKCpmdW5jKSh2b2lkICopLCB2b2lkICphcmcpCkBAIC01MzgsNiArNTM4LDcgQEAKIGludAogUHlfTWFrZVBlbmRpbmdDYWxscyh2b2lkKQogeworICAgIHN0YXRpYyBpbnQgYnVzeSA9IDA7CiAgICAgaW50IGk7CiAgICAgaW50IHIgPSAwOwogCkBAIC01NTIsOSArNTUzLDkgQEAKICAgICBpZiAobWFpbl90aHJlYWQgJiYgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpICE9IG1haW5fdGhyZWFkKQogICAgICAgICByZXR1cm4gMDsKICAgICAvKiBkb24ndCBwZXJmb3JtIHJlY3Vyc2l2ZSBwZW5kaW5nIGNhbGxzICovCi0gICAgaWYgKHBlbmRpbmdidXN5KQorICAgIGlmIChidXN5KQogICAgICAgICByZXR1cm4gMDsKLSAgICBwZW5kaW5nYnVzeSA9IDE7CisgICAgYnVzeSA9IDE7CiAgICAgLyogcGVyZm9ybSBhIGJvdW5kZWQgbnVtYmVyIG9mIGNhbGxzLCBpbiBjYXNlIG9mIHJlY3Vyc2lvbiAqLwogICAgIGZvciAoaT0wOyBpPE5QRU5ESU5HQ0FMTFM7IGkrKykgewogICAgICAgICBpbnQgajsKQEAgLTU4Myw3ICs1ODQsNyBAQAogICAgICAgICBpZiAocikKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBwZW5kaW5nYnVzeSA9IDA7CisgICAgYnVzeSA9IDA7CiAgICAgcmV0dXJuIHI7CiB9CiAKQEAgLTc0OSw2ICs3NTAsOSBAQAogICAgICAgICBXSFlfU0lMRU5DRUQgPSAgMHgwMDgwICAvKiBFeGNlcHRpb24gc2lsZW5jZWQgYnkgJ3dpdGgnICovCiB9OwogCitzdGF0aWMgdm9pZCBzYXZlX2V4Y19zdGF0ZShQeVRocmVhZFN0YXRlICosIFB5RnJhbWVPYmplY3QgKik7CitzdGF0aWMgdm9pZCBzd2FwX2V4Y19zdGF0ZShQeVRocmVhZFN0YXRlICosIFB5RnJhbWVPYmplY3QgKik7CitzdGF0aWMgdm9pZCByZXN0b3JlX2FuZF9jbGVhcl9leGNfc3RhdGUoUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICopOwogc3RhdGljIGVudW0gd2h5X2NvZGUgZG9fcmFpc2UoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IHVucGFja19pdGVyYWJsZShQeU9iamVjdCAqLCBpbnQsIGludCwgUHlPYmplY3QgKiopOwogCkBAIC04MTcsOSArODIxLDkgQEAKICAgICB1bnNpZ25lZCBjaGFyICpmaXJzdF9pbnN0cjsKICAgICBQeU9iamVjdCAqbmFtZXM7CiAgICAgUHlPYmplY3QgKmNvbnN0czsKLSNpZiBkZWZpbmVkKFB5X0RFQlVHKSB8fCBkZWZpbmVkKExMVFJBQ0UpCi0gICAgLyogTWFrZSBpdCBlYXNpZXIgdG8gZmluZCBvdXQgd2hlcmUgd2UgYXJlIHdpdGggYSBkZWJ1Z2dlciAqLwotICAgIGNoYXIgKmZpbGVuYW1lOworCisjaWZkZWYgTExUUkFDRQorICAgIF9QeV9JREVOVElGSUVSKF9fbHRyYWNlX18pOwogI2VuZGlmCiAKIC8qIENvbXB1dGVkIEdPVE9zLCBvcgpAQCAtMTExNCw1OSArMTExOCw4IEBACiAgICAgICAgIFB5X1hERUNSRUYodHJhY2ViYWNrKTsgXAogICAgIH0KIAotI2RlZmluZSBTQVZFX0VYQ19TVEFURSgpIFwKLSAgICB7IFwKLSAgICAgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRyYWNlYmFjazsgXAotICAgICAgICBQeV9YSU5DUkVGKHRzdGF0ZS0+ZXhjX3R5cGUpOyBcCi0gICAgICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdmFsdWUpOyBcCi0gICAgICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdHJhY2ViYWNrKTsgXAotICAgICAgICB0eXBlID0gZi0+Zl9leGNfdHlwZTsgXAotICAgICAgICB2YWx1ZSA9IGYtPmZfZXhjX3ZhbHVlOyBcCi0gICAgICAgIHRyYWNlYmFjayA9IGYtPmZfZXhjX3RyYWNlYmFjazsgXAotICAgICAgICBmLT5mX2V4Y190eXBlID0gdHN0YXRlLT5leGNfdHlwZTsgXAotICAgICAgICBmLT5mX2V4Y192YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOyBcCi0gICAgICAgIGYtPmZfZXhjX3RyYWNlYmFjayA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsgXAotICAgICAgICBQeV9YREVDUkVGKHR5cGUpOyBcCi0gICAgICAgIFB5X1hERUNSRUYodmFsdWUpOyBcCi0gICAgICAgIFB5X1hERUNSRUYodHJhY2ViYWNrKTsgXAotICAgIH0KLQotI2RlZmluZSBTV0FQX0VYQ19TVEFURSgpIFwKLSAgICB7IFwKLSAgICAgICAgUHlPYmplY3QgKnRtcDsgXAotICAgICAgICB0bXAgPSB0c3RhdGUtPmV4Y190eXBlOyBcCi0gICAgICAgIHRzdGF0ZS0+ZXhjX3R5cGUgPSBmLT5mX2V4Y190eXBlOyBcCi0gICAgICAgIGYtPmZfZXhjX3R5cGUgPSB0bXA7IFwKLSAgICAgICAgdG1wID0gdHN0YXRlLT5leGNfdmFsdWU7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdmFsdWUgPSBmLT5mX2V4Y192YWx1ZTsgXAotICAgICAgICBmLT5mX2V4Y192YWx1ZSA9IHRtcDsgXAotICAgICAgICB0bXAgPSB0c3RhdGUtPmV4Y190cmFjZWJhY2s7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdHJhY2ViYWNrID0gZi0+Zl9leGNfdHJhY2ViYWNrOyBcCi0gICAgICAgIGYtPmZfZXhjX3RyYWNlYmFjayA9IHRtcDsgXAotICAgIH0KLQotI2RlZmluZSBSRVNUT1JFX0FORF9DTEVBUl9FWENfU1RBVEUoKSBcCi0gICAgeyBcCi0gICAgICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0YjsgXAotICAgICAgICB0eXBlID0gdHN0YXRlLT5leGNfdHlwZTsgXAotICAgICAgICB2YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOyBcCi0gICAgICAgIHRiID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOyBcCi0gICAgICAgIHRzdGF0ZS0+ZXhjX3R5cGUgPSBmLT5mX2V4Y190eXBlOyBcCi0gICAgICAgIHRzdGF0ZS0+ZXhjX3ZhbHVlID0gZi0+Zl9leGNfdmFsdWU7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdHJhY2ViYWNrID0gZi0+Zl9leGNfdHJhY2ViYWNrOyBcCi0gICAgICAgIGYtPmZfZXhjX3R5cGUgPSBOVUxMOyBcCi0gICAgICAgIGYtPmZfZXhjX3ZhbHVlID0gTlVMTDsgXAotICAgICAgICBmLT5mX2V4Y190cmFjZWJhY2sgPSBOVUxMOyBcCi0gICAgICAgIFB5X1hERUNSRUYodHlwZSk7IFwKLSAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7IFwKLSAgICAgICAgUHlfWERFQ1JFRih0Yik7IFwKLSAgICB9Ci0KIC8qIFN0YXJ0IG9mIGNvZGUgKi8KIAotICAgIGlmIChmID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgLyogcHVzaCBmcmFtZSAqLwogICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiIpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyMjEsNiArMTE3NCw4IEBACiAgICAgICAgZi0+Zl9sYXN0aSB0byAtMSAoaS5lLiB0aGUgaW5kZXggKmJlZm9yZSogdGhlIGZpcnN0IGluc3RydWN0aW9uKQogICAgICAgIGFuZCBZSUVMRF9WQUxVRSBkb2Vzbid0IGZpZGRsZSB3aXRoIGZfbGFzdGkgYW55IG1vcmUuICBTbyB0aGlzCiAgICAgICAgZG9lcyB3b3JrLiAgUHJvbWlzZS4KKyAgICAgICBZSUVMRF9GUk9NIHNldHMgZl9sYXN0aSB0byBpdHNlbGYsIGluIG9yZGVyIHRvIHJlcGVhdGVkIHlpZWxkCisgICAgICAgbXVsdGlwbGUgdmFsdWVzLgogCiAgICAgICAgV2hlbiB0aGUgUFJFRElDVCgpIG1hY3JvcyBhcmUgZW5hYmxlZCwgc29tZSBvcGNvZGUgcGFpcnMgZm9sbG93IGluCiAgICAgICAgZGlyZWN0IHN1Y2Nlc3Npb24gd2l0aG91dCB1cGRhdGluZyBmLT5mX2xhc3RpLiAgQSBzdWNjZXNzZnVsCkBAIC0xMjQwLDI3ICsxMTk1LDE0IEBACiAgICAgICAgICAgICAvKiBXZSB3ZXJlIGluIGFuIGV4Y2VwdCBoYW5kbGVyIHdoZW4gd2UgbGVmdCwKICAgICAgICAgICAgICAgIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSB3aGljaCB3YXMgcHV0IGFzaWRlCiAgICAgICAgICAgICAgICAoc2VlIFlJRUxEX1ZBTFVFKS4gKi8KLSAgICAgICAgICAgIFNXQVBfRVhDX1NUQVRFKCk7CisgICAgICAgICAgICBzd2FwX2V4Y19zdGF0ZSh0c3RhdGUsIGYpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgU0FWRV9FWENfU1RBVEUoKTsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzYXZlX2V4Y19zdGF0ZSh0c3RhdGUsIGYpOwogICAgIH0KIAogI2lmZGVmIExMVFJBQ0UKLSAgICBsbHRyYWNlID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZi0+Zl9nbG9iYWxzLCAiX19sbHRyYWNlX18iKSAhPSBOVUxMOwotI2VuZGlmCi0jaWYgZGVmaW5lZChQeV9ERUJVRykgfHwgZGVmaW5lZChMTFRSQUNFKQotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKLSAgICAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7Ci0gICAgICAgIGZpbGVuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhjby0+Y29fZmlsZW5hbWUpOwotICAgICAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCAmJiB0c3RhdGUtPm92ZXJmbG93ZWQpIHsKLSAgICAgICAgICAgIC8qIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkICovCi0gICAgICAgICAgICBnb3RvIGV4aXRfZXZhbF9mcmFtZTsKLSAgICAgICAgfQotICAgICAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOwotICAgIH0KKyAgICBsbHRyYWNlID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9nbG9iYWxzLCAmUHlJZF9fX2x0cmFjZV9fKSAhPSBOVUxMOwogI2VuZGlmCiAKICAgICB3aHkgPSBXSFlfTk9UOwpAQCAtMTQxMiw4ICsxMzU0LDYgQEAKICAgICAgICAgICAgeCB0byBOVUxMLCBlcnIgdG8gbm9uemVybywgb3Igd2h5IHRvIGFueXRoaW5nIGJ1dCBXSFlfTk9ULAogICAgICAgICAgICBhbmQgdGhhdCBubyBvcGVyYXRpb24gdGhhdCBzdWNjZWVkcyBkb2VzIHRoaXMhICovCiAKLSAgICAgICAgLyogY2FzZSBTVE9QX0NPREU6IHRoaXMgaXMgYW4gZXJyb3IhICovCi0KICAgICAgICAgVEFSR0VUKE5PUCkKICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKIApAQCAtMTg5NCw2ICsxODM0LDQwIEBACiAgICAgICAgICAgICB3aHkgPSBXSFlfUkVUVVJOOwogICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKIAorICAgICAgICBUQVJHRVQoWUlFTERfRlJPTSkKKyAgICAgICAgICAgIHUgPSBQT1AoKTsKKyAgICAgICAgICAgIHggPSBUT1AoKTsKKyAgICAgICAgICAgIC8qIHNlbmQgdSB0byB4ICovCisgICAgICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh4KSkgeworICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXgsIHUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzZW5kKTsKKyAgICAgICAgICAgICAgICBpZiAodSA9PSBQeV9Ob25lKQorICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBQeV9UWVBFKHgpLT50cF9pdGVybmV4dCh4KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoeCwgJlB5SWRfc2VuZCwgIk8iLCB1KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKKyAgICAgICAgICAgIGlmICghcmV0dmFsKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbDsKKyAgICAgICAgICAgICAgICB4ID0gUE9QKCk7IC8qIFJlbW92ZSBpdGVyIGZyb20gc3RhY2sgKi8KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgICAgICAgICAgZXJyID0gX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKCZ2YWwpOworICAgICAgICAgICAgICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIHggPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgeCA9IHZhbDsKKyAgICAgICAgICAgICAgICBQVVNIKHgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogeCByZW1haW5zIG9uIHN0YWNrLCByZXR2YWwgaXMgdmFsdWUgdG8gYmUgeWllbGRlZCAqLworICAgICAgICAgICAgZi0+Zl9zdGFja3RvcCA9IHN0YWNrX3BvaW50ZXI7CisgICAgICAgICAgICB3aHkgPSBXSFlfWUlFTEQ7CisgICAgICAgICAgICAvKiBhbmQgcmVwZWF0Li4uICovCisgICAgICAgICAgICBmLT5mX2xhc3RpLS07CisgICAgICAgICAgICBnb3RvIGZhc3RfeWllbGQ7CisKICAgICAgICAgVEFSR0VUKFlJRUxEX1ZBTFVFKQogICAgICAgICAgICAgcmV0dmFsID0gUE9QKCk7CiAgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKQEAgLTE5NTYsMTYgKzE5MzAsMzMgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIFRBUkdFVChMT0FEX0JVSUxEX0NMQVNTKQotICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGYtPmZfYnVpbHRpbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnVpbGRfY2xhc3NfXyIpOwotICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnVpbGRfY2xhc3NfXyBub3QgZm91bmQiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19idWlsZF9jbGFzc19fKTsKKworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKSB7CisgICAgICAgICAgICAgICAgeCA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfYnVpbHRpbnMsICZQeUlkX19fYnVpbGRfY2xhc3NfXyk7CisgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnVpbGRfY2xhc3NfXyBub3QgZm91bmQiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpidWlsZF9jbGFzc19zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2J1aWxkX2NsYXNzX18pOworICAgICAgICAgICAgICAgIGlmIChidWlsZF9jbGFzc19zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgeCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgYnVpbGRfY2xhc3Nfc3RyKTsKKyAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnVpbGRfY2xhc3NfXyBub3QgZm91bmQiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSCh4KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKFNUT1JFX05BTUUpCiAgICAgICAgICAgICB3ID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwpAQCAtMjEwMSw3MCArMjA5Miw2MiBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHggPSBQeURpY3RfR2V0SXRlbShmLT5mX2dsb2JhbHMsIHcpOworICAgICAgICAgICAgICAgIFB5X1hJTkNSRUYoeCk7CiAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgdyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRV9FUlJPUl9NU0csIHcpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2J1aWx0aW5zKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIHcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0VSUk9SX01TRywgdyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUVfRVJST1JfTVNHLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQVVNIKHgpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKIAogICAgICAgICBUQVJHRVQoTE9BRF9HTE9CQUwpCiAgICAgICAgICAgICB3ID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwotICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHcpKSB7Ci0gICAgICAgICAgICAgICAgLyogSW5saW5lIHRoZSBQeURpY3RfR2V0SXRlbSgpIGNhbGxzLgotICAgICAgICAgICAgICAgICAgIFdBUk5JTkc6IHRoaXMgaXMgYW4gZXh0cmVtZSBzcGVlZCBoYWNrLgotICAgICAgICAgICAgICAgICAgIERvIG5vdCB0cnkgdGhpcyBhdCBob21lLiAqLwotICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKil3KS0+aGFzaDsKLSAgICAgICAgICAgICAgICBpZiAoaGFzaCAhPSAtMSkgewotICAgICAgICAgICAgICAgICAgICBQeURpY3RPYmplY3QgKmQ7Ci0gICAgICAgICAgICAgICAgICAgIFB5RGljdEVudHJ5ICplOwotICAgICAgICAgICAgICAgICAgICBkID0gKFB5RGljdE9iamVjdCAqKShmLT5mX2dsb2JhbHMpOwotICAgICAgICAgICAgICAgICAgICBlID0gZC0+bWFfbG9va3VwKGQsIHcsIGhhc2gpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB4ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHggPSBlLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgUFVTSCh4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIERJU1BBVENIKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZCA9IChQeURpY3RPYmplY3QgKikoZi0+Zl9idWlsdGlucyk7Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBkLT5tYV9sb29rdXAoZCwgdywgaGFzaCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgeCA9IGUtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQVVNIKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBnb3RvIGxvYWRfZ2xvYmFsX2Vycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIHVuLWlubGluZWQgdmVyc2lvbiBvZiB0aGUgY29kZSBhYm92ZSAqLwotICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtKGYtPmZfZ2xvYmFscywgdyk7Ci0gICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIHcpOworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfZ2xvYmFscykKKyAgICAgICAgICAgICAgICAmJiBQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2J1aWx0aW5zKSkgeworICAgICAgICAgICAgICAgIHggPSBfUHlEaWN0X0xvYWRHbG9iYWwoKFB5RGljdE9iamVjdCAqKWYtPmZfZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURpY3RPYmplY3QgKilmLT5mX2J1aWx0aW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyk7CiAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgbG9hZF9nbG9iYWxfZXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19OYW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JBTF9OQU1FX0VSUk9SX01TRywgdyk7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JBTF9OQU1FX0VSUk9SX01TRywgdyk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBTbG93LXBhdGggaWYgZ2xvYmFscyBvciBidWlsdGlucyBpcyBub3QgYSBkaWN0ICovCisgICAgICAgICAgICAgICAgeCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCB3KTsKKyAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHggPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIHcpOworICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JBTF9OQU1FX0VSUk9SX01TRywgdyk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFBVU0goeCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogCkBAIC0yMzEzLDggKzIyOTYsMTAgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAKICAgICAgICAgVEFSR0VUKElNUE9SVF9OQU1FKQorICAgICAgICB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKICAgICAgICAgICAgIHcgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7Ci0gICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZi0+Zl9idWlsdGlucywgIl9faW1wb3J0X18iKTsKKyAgICAgICAgICAgIHggPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2J1aWx0aW5zLCAmUHlJZF9fX2ltcG9ydF9fKTsKICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOwpAQCAtMjM1NSw2ICsyMzQwLDcgQEAKICAgICAgICAgICAgIFNFVF9UT1AoeCk7CiAgICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoSU1QT1JUX1NUQVIpCiAgICAgICAgICAgICB2ID0gUE9QKCk7CkBAIC0yNTU5LDEzICsyNTQ1LDE0IEBACiAKICAgICAgICAgVEFSR0VUKFNFVFVQX1dJVEgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBQeU9iamVjdCAqZXhpdCwgKmVudGVyOworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19leGl0X18pOworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19lbnRlcl9fKTsKICAgICAgICAgICAgIHcgPSBUT1AoKTsKLSAgICAgICAgICAgIHggPSBzcGVjaWFsX2xvb2t1cCh3LCAiX19leGl0X18iLCAmZXhpdCk7CisgICAgICAgICAgICB4ID0gc3BlY2lhbF9sb29rdXAodywgJlB5SWRfX19leGl0X18pOwogICAgICAgICAgICAgaWYgKCF4KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIHUgPSBzcGVjaWFsX2xvb2t1cCh3LCAiX19lbnRlcl9fIiwgJmVudGVyKTsKKyAgICAgICAgICAgIHUgPSBzcGVjaWFsX2xvb2t1cCh3LCAmUHlJZF9fX2VudGVyX18pOwogICAgICAgICAgICAgUHlfREVDUkVGKHcpOwogICAgICAgICAgICAgaWYgKCF1KSB7CiAgICAgICAgICAgICAgICAgeCA9IE5VTEw7CkBAIC0yNzI1LDcgKzI3MTIsNyBAQAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRigqcGZ1bmMpOwogICAgICAgICAgICAgICAgICpwZnVuYyA9IHNlbGY7CiAgICAgICAgICAgICAgICAgbmErKzsKLSAgICAgICAgICAgICAgICBuKys7CisgICAgICAgICAgICAgICAgLyogbisrOyAqLwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwogICAgICAgICAgICAgc3AgPSBzdGFja19wb2ludGVyOwpAQCAtMjc1Myw5ICsyNzQwLDExIEBACiAgICAgICAgICAgICBpbnQga3dkZWZhdWx0cyA9IChvcGFyZz4+OCkgJiAweGZmOwogICAgICAgICAgICAgaW50IG51bV9hbm5vdGF0aW9ucyA9IChvcGFyZyA+PiAxNikgJiAweDdmZmY7CiAKKyAgICAgICAgICAgIHcgPSBQT1AoKTsgLyogcXVhbG5hbWUgKi8KICAgICAgICAgICAgIHYgPSBQT1AoKTsgLyogY29kZSBvYmplY3QgKi8KLSAgICAgICAgICAgIHggPSBQeUZ1bmN0aW9uX05ldyh2LCBmLT5mX2dsb2JhbHMpOworICAgICAgICAgICAgeCA9IFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKHYsIGYtPmZfZ2xvYmFscywgdyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICBQeV9ERUNSRUYodyk7CiAKICAgICAgICAgICAgIGlmICh4ICE9IE5VTEwgJiYgb3Bjb2RlID09IE1BS0VfQ0xPU1VSRSkgewogICAgICAgICAgICAgICAgIHYgPSBQT1AoKTsKQEAgLTMwNDksOSArMzAzOCw5IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChpID09IGYtPmZfaWJsb2NrKQogICAgICAgICAgICAgLyogV2UgZGlkIG5vdCBjcmVhdGUgdGhpcyBleGNlcHRpb24uICovCi0gICAgICAgICAgICBSRVNUT1JFX0FORF9DTEVBUl9FWENfU1RBVEUoKQorICAgICAgICAgICAgcmVzdG9yZV9hbmRfY2xlYXJfZXhjX3N0YXRlKHRzdGF0ZSwgZik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFNXQVBfRVhDX1NUQVRFKCkKKyAgICAgICAgICAgIHN3YXBfZXhjX3N0YXRlKHRzdGF0ZSwgZik7CiAgICAgfQogCiAgICAgaWYgKHRzdGF0ZS0+dXNlX3RyYWNpbmcpIHsKQEAgLTMwODEsNyArMzA3MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHJhY2VfUkVUVVJOLCByZXR2YWwpKSB7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihyZXR2YWwpOwogICAgICAgICAgICAgICAgIHJldHZhbCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgd2h5ID0gV0hZX0VYQ0VQVElPTjsKKyAgICAgICAgICAgICAgICAvKiB3aHkgPSBXSFlfRVhDRVBUSU9OOyAqLwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzA5NCw2ICszMDgzLDE1NiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKK3N0YXRpYyB2b2lkCitmb3JtYXRfbWlzc2luZyhjb25zdCBjaGFyICpraW5kLCBQeUNvZGVPYmplY3QgKmNvLCBQeU9iamVjdCAqbmFtZXMpCit7CisgICAgaW50IGVycjsKKyAgICBQeV9zc2l6ZV90IGxlbiA9IFB5TGlzdF9HRVRfU0laRShuYW1lcyk7CisgICAgUHlPYmplY3QgKm5hbWVfc3RyLCAqY29tbWEsICp0YWlsLCAqdG1wOworCisgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KG5hbWVzKSk7CisgICAgYXNzZXJ0KGxlbiA+PSAxKTsKKyAgICAvKiBEZWFsIHdpdGggdGhlIGpveXMgb2YgbmF0dXJhbCBsYW5ndWFnZS4gKi8KKyAgICBzd2l0Y2ggKGxlbikgeworICAgIGNhc2UgMToKKyAgICAgICAgbmFtZV9zdHIgPSBQeUxpc3RfR0VUX0lURU0obmFtZXMsIDApOworICAgICAgICBQeV9JTkNSRUYobmFtZV9zdHIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIG5hbWVfc3RyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVIGFuZCAlVSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBsZW4gLSAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0obmFtZXMsIGxlbiAtIDEpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGFpbCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIsICVVLCBhbmQgJVUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBsZW4gLSAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9HRVRfSVRFTShuYW1lcywgbGVuIC0gMSkpOworICAgICAgICBpZiAodGFpbCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvKiBDaG9wIG9mZiB0aGUgbGFzdCB0d28gb2JqZWN0cyBpbiB0aGUgbGlzdC4gVGhpcyBzaG91bGRuJ3QgYWN0dWFsbHkKKyAgICAgICAgICAgZmFpbCwgYnV0IHdlIGNhbid0IGJlIHRvbyBjYXJlZnVsLiAqLworICAgICAgICBlcnIgPSBQeUxpc3RfU2V0U2xpY2UobmFtZXMsIGxlbiAtIDIsIGxlbiwgTlVMTCk7CisgICAgICAgIGlmIChlcnIgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvKiBTdGl0Y2ggZXZlcnl0aGluZyB1cCBpbnRvIGEgbmljZSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4gKi8KKyAgICAgICAgY29tbWEgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiLCAiKTsKKyAgICAgICAgaWYgKGNvbW1hID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0bXAgPSBQeVVuaWNvZGVfSm9pbihjb21tYSwgbmFtZXMpOworICAgICAgICBQeV9ERUNSRUYoY29tbWEpOworICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBuYW1lX3N0ciA9IFB5VW5pY29kZV9Db25jYXQodG1wLCB0YWlsKTsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIiVVKCkgbWlzc2luZyAlaSByZXF1aXJlZCAlcyBhcmd1bWVudCVzOiAlVSIsCisgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAorICAgICAgICAgICAgICAgICBsZW4sCisgICAgICAgICAgICAgICAgIGtpbmQsCisgICAgICAgICAgICAgICAgIGxlbiA9PSAxID8gIiIgOiAicyIsCisgICAgICAgICAgICAgICAgIG5hbWVfc3RyKTsKKyAgICBQeV9ERUNSRUYobmFtZV9zdHIpOworfQorCitzdGF0aWMgdm9pZAorbWlzc2luZ19hcmd1bWVudHMoUHlDb2RlT2JqZWN0ICpjbywgaW50IG1pc3NpbmcsIGludCBkZWZjb3VudCwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKK3sKKyAgICBpbnQgaSwgaiA9IDA7CisgICAgaW50IHN0YXJ0LCBlbmQ7CisgICAgaW50IHBvc2l0aW9uYWwgPSBkZWZjb3VudCAhPSAtMTsKKyAgICBjb25zdCBjaGFyICpraW5kID0gcG9zaXRpb25hbCA/ICJwb3NpdGlvbmFsIiA6ICJrZXl3b3JkLW9ubHkiOworICAgIFB5T2JqZWN0ICptaXNzaW5nX25hbWVzOworCisgICAgLyogQ29tcHV0ZSB0aGUgbmFtZXMgb2YgdGhlIGFyZ3VtZW50cyB0aGF0IGFyZSBtaXNzaW5nLiAqLworICAgIG1pc3NpbmdfbmFtZXMgPSBQeUxpc3RfTmV3KG1pc3NpbmcpOworICAgIGlmIChtaXNzaW5nX25hbWVzID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAocG9zaXRpb25hbCkgeworICAgICAgICBzdGFydCA9IDA7CisgICAgICAgIGVuZCA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhcnQgPSBjby0+Y29fYXJnY291bnQ7CisgICAgICAgIGVuZCA9IHN0YXJ0ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OworICAgIH0KKyAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmF3ID0gUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fdmFybmFtZXMsIGkpOworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBQeU9iamVjdF9SZXByKHJhdyk7CisgICAgICAgICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG1pc3NpbmdfbmFtZXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShtaXNzaW5nX25hbWVzLCBqKyssIG5hbWUpOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChqID09IG1pc3NpbmcpOworICAgIGZvcm1hdF9taXNzaW5nKGtpbmQsIGNvLCBtaXNzaW5nX25hbWVzKTsKKyAgICBQeV9ERUNSRUYobWlzc2luZ19uYW1lcyk7Cit9CisKK3N0YXRpYyB2b2lkCit0b29fbWFueV9wb3NpdGlvbmFsKFB5Q29kZU9iamVjdCAqY28sIGludCBnaXZlbiwgaW50IGRlZmNvdW50LCBQeU9iamVjdCAqKmZhc3Rsb2NhbHMpCit7CisgICAgaW50IHBsdXJhbDsKKyAgICBpbnQga3dvbmx5X2dpdmVuID0gMDsKKyAgICBpbnQgaTsKKyAgICBQeU9iamVjdCAqc2lnLCAqa3dvbmx5X3NpZzsKKworICAgIGFzc2VydCgoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgPT0gMCk7CisgICAgLyogQ291bnQgbWlzc2luZyBrZXl3b3JkLW9ubHkgYXJncy4gKi8KKyAgICBmb3IgKGkgPSBjby0+Y29fYXJnY291bnQ7IGkgPCBjby0+Y29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7IGkrKykKKyAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpCisgICAgICAgICAgICBrd29ubHlfZ2l2ZW4rKzsKKyAgICBpZiAoZGVmY291bnQpIHsKKyAgICAgICAgaW50IGF0bGVhc3QgPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKKyAgICAgICAgcGx1cmFsID0gMTsKKyAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImZyb20gJWQgdG8gJWQiLCBhdGxlYXN0LCBjby0+Y29fYXJnY291bnQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcGx1cmFsID0gY28tPmNvX2FyZ2NvdW50ICE9IDE7CisgICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlZCIsIGNvLT5jb19hcmdjb3VudCk7CisgICAgfQorICAgIGlmIChzaWcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChrd29ubHlfZ2l2ZW4pIHsKKyAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gIiBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKGFuZCAlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnQlcykiOworICAgICAgICBrd29ubHlfc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoZm9ybWF0LCBnaXZlbiAhPSAxID8gInMiIDogIiIsIGt3b25seV9naXZlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiKTsKKyAgICAgICAgaWYgKGt3b25seV9zaWcgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNpZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFRoaXMgd2lsbCBub3QgZmFpbC4gKi8KKyAgICAgICAga3dvbmx5X3NpZyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKKyAgICAgICAgYXNzZXJ0KGt3b25seV9zaWcgIT0gTlVMTCk7CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICIlVSgpIHRha2VzICVVIHBvc2l0aW9uYWwgYXJndW1lbnQlcyBidXQgJWQlVSAlcyBnaXZlbiIsCisgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAorICAgICAgICAgICAgICAgICBzaWcsCisgICAgICAgICAgICAgICAgIHBsdXJhbCA/ICJzIiA6ICIiLAorICAgICAgICAgICAgICAgICBnaXZlbiwKKyAgICAgICAgICAgICAgICAga3dvbmx5X3NpZywKKyAgICAgICAgICAgICAgICAgZ2l2ZW4gPT0gMSAmJiAha3dvbmx5X2dpdmVuID8gIndhcyIgOiAid2VyZSIpOworICAgIFB5X0RFQ1JFRihzaWcpOworICAgIFB5X0RFQ1JFRihrd29ubHlfc2lnKTsKK30KKwogLyogVGhpcyBpcyBnb25uYSBzZWVtICpyZWFsIHdlaXJkKiwgYnV0IGlmIHlvdSBwdXQgc29tZSBvdGhlciBjb2RlIGJldHdlZW4KICAgIFB5RXZhbF9FdmFsRnJhbWUoKSBhbmQgUHlFdmFsX0V2YWxDb2RlRXgoKSB5b3Ugd2lsbCBuZWVkIHRvIGFkanVzdAogICAgdGhlIHRlc3QgaW4gdGhlIGlmIHN0YXRlbWVudHMgaW4gTWlzYy9nZGJpbml0IChweXN0YWNrIGFuZCBweXN0YWNrdikuICovCkBAIC0zMTEwLDYgKzMyNDksOSBAQAogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAgICAgUHlPYmplY3QgKngsICp1OwogICAgIGludCB0b3RhbF9hcmdzID0gY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OworICAgIGludCBpOworICAgIGludCBuID0gYXJnY291bnQ7CisgICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7CiAKICAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKQEAgLTMxMjYsMjEyICszMjY4LDE1MyBAQAogICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgZnJlZXZhcnMgPSBmLT5mX2xvY2Fsc3BsdXMgKyBjby0+Y29fbmxvY2FsczsKIAotICAgIGlmICh0b3RhbF9hcmdzIHx8IGNvLT5jb19mbGFncyAmIChDT19WQVJBUkdTIHwgQ09fVkFSS0VZV09SRFMpKSB7Ci0gICAgICAgIGludCBpOwotICAgICAgICBpbnQgbiA9IGFyZ2NvdW50OwotICAgICAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTKSB7Ci0gICAgICAgICAgICBrd2RpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgaSA9IHRvdGFsX2FyZ3M7Ci0gICAgICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykKLSAgICAgICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICBTRVRMT0NBTChpLCBrd2RpY3QpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCkgewotICAgICAgICAgICAgaWYgKCEoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyAlcyAlZCAiCi0gICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKCVkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICBkZWZjb3VudCA/ICJhdCBtb3N0IiA6ICJleGFjdGx5IiwKLSAgICAgICAgICAgICAgICAgICAgY28tPmNvX2FyZ2NvdW50LAotICAgICAgICAgICAgICAgICAgICBjby0+Y29fYXJnY291bnQgPT0gMSA/ICIiIDogInMiLAotICAgICAgICAgICAgICAgICAgICBhcmdjb3VudCArIGt3Y291bnQpOwotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG4gPSBjby0+Y29fYXJnY291bnQ7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgIC8qIFBhcnNlIGFyZ3VtZW50cy4gKi8KKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFMpIHsKKyAgICAgICAga3dkaWN0ID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGkgPSB0b3RhbF9hcmdzOworICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgU0VUTE9DQUwoaSwga3dkaWN0KTsKKyAgICB9CisgICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50KQorICAgICAgICBuID0gY28tPmNvX2FyZ2NvdW50OworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgeCA9IGFyZ3NbaV07CisgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgU0VUTE9DQUwoaSwgeCk7CisgICAgfQorICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSB7CisgICAgICAgIHUgPSBQeVR1cGxlX05ldyhhcmdjb3VudCAtIG4pOworICAgICAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBTRVRMT0NBTCh0b3RhbF9hcmdzLCB1KTsKKyAgICAgICAgZm9yIChpID0gbjsgaSA8IGFyZ2NvdW50OyBpKyspIHsKICAgICAgICAgICAgIHggPSBhcmdzW2ldOwogICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwotICAgICAgICAgICAgU0VUTE9DQUwoaSwgeCk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHUsIGktbiwgeCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHsKLSAgICAgICAgICAgIHUgPSBQeVR1cGxlX05ldyhhcmdjb3VudCAtIG4pOwotICAgICAgICAgICAgaWYgKHUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICBTRVRMT0NBTCh0b3RhbF9hcmdzLCB1KTsKLSAgICAgICAgICAgIGZvciAoaSA9IG47IGkgPCBhcmdjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgeCA9IGFyZ3NbaV07Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwotICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odSwgaS1uLCB4KTsKLSAgICAgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IGt3Y291bnQ7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqKmNvX3Zhcm5hbWVzOworICAgICAgICBQeU9iamVjdCAqa2V5d29yZCA9IGt3c1syKmldOworICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBrd3NbMippICsgMV07CisgICAgICAgIGludCBqOworICAgICAgICBpZiAoa2V5d29yZCA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2soa2V5d29yZCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGt3Y291bnQ7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKipjb192YXJuYW1lczsKLSAgICAgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3dzWzIqaV07Ci0gICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBrd3NbMippICsgMV07Ci0gICAgICAgICAgICBpbnQgajsKLSAgICAgICAgICAgIGlmIChrZXl3b3JkID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhrZXl3b3JkKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICIlVSgpIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCi0gICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lKTsKKyAgICAgICAgLyogU3BlZWQgaGFjazogZG8gcmF3IHBvaW50ZXIgY29tcGFyZXMuIEFzIG5hbWVzIGFyZQorICAgICAgICAgICBub3JtYWxseSBpbnRlcm5lZCB0aGlzIHNob3VsZCBhbG1vc3QgYWx3YXlzIGhpdC4gKi8KKyAgICAgICAgY29fdmFybmFtZXMgPSAoKFB5VHVwbGVPYmplY3QgKikoY28tPmNvX3Zhcm5hbWVzKSktPm9iX2l0ZW07CisgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpubSA9IGNvX3Zhcm5hbWVzW2pdOworICAgICAgICAgICAgaWYgKG5tID09IGtleXdvcmQpCisgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKKyAgICAgICAgfQorICAgICAgICAvKiBTbG93IGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKi8KKyAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgeworICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07CisgICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKAorICAgICAgICAgICAgICAgIGtleXdvcmQsIG5tLCBQeV9FUSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICBnb3RvIGt3X2ZvdW5kOworICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBTcGVlZCBoYWNrOiBkbyByYXcgcG9pbnRlciBjb21wYXJlcy4gQXMgbmFtZXMgYXJlCi0gICAgICAgICAgICAgICBub3JtYWxseSBpbnRlcm5lZCB0aGlzIHNob3VsZCBhbG1vc3QgYWx3YXlzIGhpdC4gKi8KLSAgICAgICAgICAgIGNvX3Zhcm5hbWVzID0gKChQeVR1cGxlT2JqZWN0ICopKGNvLT5jb192YXJuYW1lcykpLT5vYl9pdGVtOwotICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpubSA9IGNvX3Zhcm5hbWVzW2pdOwotICAgICAgICAgICAgICAgIGlmIChubSA9PSBrZXl3b3JkKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGt3X2ZvdW5kOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogU2xvdyBmYWxsYmFjaywganVzdCBpbiBjYXNlICovCi0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07Ci0gICAgICAgICAgICAgICAgaW50IGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgKLSAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgbm0sIFB5X0VRKTsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaiA+PSB0b3RhbF9hcmdzICYmIGt3ZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IGFuIHVuZXhwZWN0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCAnJVMnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOwotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5d29yZCwgdmFsdWUpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAga3dfZm91bmQ6Ci0gICAgICAgICAgICBpZiAoR0VUTE9DQUwoaikgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IG11bHRpcGxlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBrZXl3b3JkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgJyVTJyIsCisgICAgICAgIH0KKyAgICAgICAgaWYgKGogPj0gdG90YWxfYXJncyAmJiBrd2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgYW4gdW5leHBlY3RlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgJyVTJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCk7Ci0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIFNFVExPQ0FMKGosIHZhbHVlKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQotICAgICAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID4gMCkgewotICAgICAgICAgICAgZm9yIChpID0gY28tPmNvX2FyZ2NvdW50OyBpIDwgdG90YWxfYXJnczsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKGNvLT5jb192YXJuYW1lcywgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGt3ZGVmcyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWYgPSBQeURpY3RfR2V0SXRlbShrd2RlZnMsIG5hbWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGVmKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNFVExPQ0FMKGksIGRlZik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiJVUoKSBuZWVkcyBrZXl3b3JkLW9ubHkgYXJndW1lbnQgJVMiLAotICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwgbmFtZSk7Ci0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgfQorICAgICAgICBQeURpY3RfU2V0SXRlbShrd2RpY3QsIGtleXdvcmQsIHZhbHVlKTsKKyAgICAgICAgY29udGludWU7CisgICAgICBrd19mb3VuZDoKKyAgICAgICAgaWYgKEdFVExPQ0FMKGopICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IG11bHRpcGxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBhcmd1bWVudCAnJVMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXJnY291bnQgPCBjby0+Y29fYXJnY291bnQpIHsKLSAgICAgICAgICAgIGludCBtID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7Ci0gICAgICAgICAgICBmb3IgKGkgPSBhcmdjb3VudDsgaSA8IG07IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBqLCBnaXZlbiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBjby0+Y29fYXJnY291bnQ7IGorKykKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChHRVRMT0NBTChqKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbisrOwotICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJXMgJWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50JXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIiglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAoKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZGVmY291bnQpID8gImF0IGxlYXN0IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJleGFjdGx5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSwgbSA9PSAxID8gIiIgOiAicyIsIGdpdmVuKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChuID4gbSkKLSAgICAgICAgICAgICAgICBpID0gbiAtIG07Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaSA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgaSA8IGRlZmNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoR0VUTE9DQUwobStpKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWYgPSBkZWZzW2ldOwotICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmKTsKLSAgICAgICAgICAgICAgICAgICAgU0VUTE9DQUwobStpLCBkZWYpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgICAgICBTRVRMT0NBTChqLCB2YWx1ZSk7CiAgICAgfQotICAgIGVsc2UgaWYgKGFyZ2NvdW50ID4gMCB8fCBrd2NvdW50ID4gMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgbm8gYXJndW1lbnRzICglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICBhcmdjb3VudCArIGt3Y291bnQpOworICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCAmJiAhKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpKSB7CisgICAgICAgIHRvb19tYW55X3Bvc2l0aW9uYWwoY28sIGFyZ2NvdW50LCBkZWZjb3VudCwgZmFzdGxvY2Fscyk7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9Ci0gICAgLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgc3RvcmFnZSBmb3IgY2VsbCB2YXJzLCBhbmQgY29weSBmcmVlCi0gICAgICAgdmFycyBpbnRvIGZyYW1lLiAgVGhpcyBpc24ndCB0b28gZWZmaWNpZW50IHJpZ2h0IG5vdy4gKi8KLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpKSB7Ci0gICAgICAgIGludCBpLCBqLCBuYXJncywgZm91bmQ7Ci0gICAgICAgIFB5X1VOSUNPREUgKmNlbGxuYW1lLCAqYXJnbmFtZTsKLSAgICAgICAgUHlPYmplY3QgKmM7Ci0KLSAgICAgICAgbmFyZ3MgPSB0b3RhbF9hcmdzOwotICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykKLSAgICAgICAgICAgIG5hcmdzKys7Ci0gICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJLRVlXT1JEUykKLSAgICAgICAgICAgIG5hcmdzKys7Ci0KLSAgICAgICAgLyogSW5pdGlhbGl6ZSBlYWNoIGNlbGwgdmFyLCB0YWtpbmcgaW50byBhY2NvdW50Ci0gICAgICAgICAgIGNlbGwgdmFycyB0aGF0IGFyZSBpbml0aWFsaXplZCBmcm9tIGFyZ3VtZW50cy4KLQotICAgICAgICAgICBTaG91bGQgYXJyYW5nZSBmb3IgdGhlIGNvbXBpbGVyIHRvIHB1dCBjZWxsdmFycwotICAgICAgICAgICB0aGF0IGFyZSBhcmd1bWVudHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgY2VsbHZhcnMKLSAgICAgICAgICAgbGlzdCBzbyB0aGF0IHdlIGNhbiBtYXJjaCBvdmVyIGl0IG1vcmUgZWZmaWNpZW50bHk/Ci0gICAgICAgICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycyk7ICsraSkgewotICAgICAgICAgICAgY2VsbG5hbWUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKGNvLT5jb19jZWxsdmFycywgaSkpOwotICAgICAgICAgICAgZm91bmQgPSAwOwotICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG5hcmdzOyBqKyspIHsKLSAgICAgICAgICAgICAgICBhcmduYW1lID0gUHlVbmljb2RlX0FTX1VOSUNPREUoCi0gICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX3Zhcm5hbWVzLCBqKSk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfc3RyY21wKGNlbGxuYW1lLCBhcmduYW1lKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSBQeUNlbGxfTmV3KEdFVExPQ0FMKGopKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICAgICAgR0VUTE9DQUwoY28tPmNvX25sb2NhbHMgKyBpKSA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gMTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGZvdW5kID09IDApIHsKLSAgICAgICAgICAgICAgICBjID0gUHlDZWxsX05ldyhOVUxMKTsKLSAgICAgICAgICAgICAgICBpZiAoYyA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgU0VUTE9DQUwoY28tPmNvX25sb2NhbHMgKyBpLCBjKTsKKyAgICBpZiAoYXJnY291bnQgPCBjby0+Y29fYXJnY291bnQpIHsKKyAgICAgICAgaW50IG0gPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKKyAgICAgICAgaW50IG1pc3NpbmcgPSAwOworICAgICAgICBmb3IgKGkgPSBhcmdjb3VudDsgaSA8IG07IGkrKykKKyAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIG1pc3NpbmcrKzsKKyAgICAgICAgaWYgKG1pc3NpbmcpIHsKKyAgICAgICAgICAgIG1pc3NpbmdfYXJndW1lbnRzKGNvLCBtaXNzaW5nLCBkZWZjb3VudCwgZmFzdGxvY2Fscyk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG4gPiBtKQorICAgICAgICAgICAgaSA9IG4gLSBtOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgZm9yICg7IGkgPCBkZWZjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoR0VUTE9DQUwobStpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZiA9IGRlZnNbaV07CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGRlZik7CisgICAgICAgICAgICAgICAgU0VUTE9DQUwobStpLCBkZWYpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19mcmVldmFycykpIHsKLSAgICAgICAgaW50IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19mcmVldmFycyk7ICsraSkgewotICAgICAgICAgICAgUHlPYmplY3QgKm8gPSBQeVR1cGxlX0dFVF9JVEVNKGNsb3N1cmUsIGkpOwotICAgICAgICAgICAgUHlfSU5DUkVGKG8pOwotICAgICAgICAgICAgZnJlZXZhcnNbUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpICsgaV0gPSBvOworICAgIGlmIChjby0+Y29fa3dvbmx5YXJnY291bnQgPiAwKSB7CisgICAgICAgIGludCBtaXNzaW5nID0gMDsKKyAgICAgICAgZm9yIChpID0gY28tPmNvX2FyZ2NvdW50OyBpIDwgdG90YWxfYXJnczsgaSsrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZTsKKyAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX3Zhcm5hbWVzLCBpKTsKKyAgICAgICAgICAgIGlmIChrd2RlZnMgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWYgPSBQeURpY3RfR2V0SXRlbShrd2RlZnMsIG5hbWUpOworICAgICAgICAgICAgICAgIGlmIChkZWYpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGRlZik7CisgICAgICAgICAgICAgICAgICAgIFNFVExPQ0FMKGksIGRlZik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1pc3NpbmcrKzsKICAgICAgICAgfQorICAgICAgICBpZiAobWlzc2luZykgeworICAgICAgICAgICAgbWlzc2luZ19hcmd1bWVudHMoY28sIG1pc3NpbmcsIC0xLCBmYXN0bG9jYWxzKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHN0b3JhZ2UgZm9yIGNlbGwgdmFycywgYW5kIGNvcHkgZnJlZQorICAgICAgIHZhcnMgaW50byBmcmFtZS4gKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpOyArK2kpIHsKKyAgICAgICAgUHlPYmplY3QgKmM7CisgICAgICAgIGludCBhcmc7CisgICAgICAgIC8qIFBvc3NpYmx5IGFjY291bnQgZm9yIHRoZSBjZWxsIHZhcmlhYmxlIGJlaW5nIGFuIGFyZ3VtZW50LiAqLworICAgICAgICBpZiAoY28tPmNvX2NlbGwyYXJnICE9IE5VTEwgJiYKKyAgICAgICAgICAgIChhcmcgPSBjby0+Y29fY2VsbDJhcmdbaV0pICE9IENPX0NFTExfTk9UX0FOX0FSRykKKyAgICAgICAgICAgIGMgPSBQeUNlbGxfTmV3KEdFVExPQ0FMKGFyZykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjID0gUHlDZWxsX05ldyhOVUxMKTsKKyAgICAgICAgaWYgKGMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgU0VUTE9DQUwoY28tPmNvX25sb2NhbHMgKyBpLCBjKTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2ZyZWV2YXJzKTsgKytpKSB7CisgICAgICAgIFB5T2JqZWN0ICpvID0gUHlUdXBsZV9HRVRfSVRFTShjbG9zdXJlLCBpKTsKKyAgICAgICAgUHlfSU5DUkVGKG8pOworICAgICAgICBmcmVldmFyc1tQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycykgKyBpXSA9IG87CiAgICAgfQogCiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0dFTkVSQVRPUikgewpAQCAtMzM2NSwxOCArMzQ0OCw3MiBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqbywgY2hhciAqbWV0aCwgUHlPYmplY3QgKipjYWNoZSkKK3NwZWNpYWxfbG9va3VwKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqaWQpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICByZXMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCBtZXRoLCBjYWNoZSk7CisgICAgcmVzID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgaWQpOwogICAgIGlmIChyZXMgPT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsICpjYWNoZSk7CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgaWQtPm9iamVjdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gcmVzOwogfQogCiAKKy8qIFRoZXNlIDMgZnVuY3Rpb25zIGRlYWwgd2l0aCB0aGUgZXhjZXB0aW9uIHN0YXRlIG9mIGdlbmVyYXRvcnMuICovCisKK3N0YXRpYyB2b2lkCitzYXZlX2V4Y19zdGF0ZShQeVRocmVhZFN0YXRlICp0c3RhdGUsIFB5RnJhbWVPYmplY3QgKmYpCit7CisgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRyYWNlYmFjazsKKyAgICBQeV9YSU5DUkVGKHRzdGF0ZS0+ZXhjX3R5cGUpOworICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdmFsdWUpOworICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdHJhY2ViYWNrKTsKKyAgICB0eXBlID0gZi0+Zl9leGNfdHlwZTsKKyAgICB2YWx1ZSA9IGYtPmZfZXhjX3ZhbHVlOworICAgIHRyYWNlYmFjayA9IGYtPmZfZXhjX3RyYWNlYmFjazsKKyAgICBmLT5mX2V4Y190eXBlID0gdHN0YXRlLT5leGNfdHlwZTsKKyAgICBmLT5mX2V4Y192YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOworICAgIGYtPmZfZXhjX3RyYWNlYmFjayA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsKKyAgICBQeV9YREVDUkVGKHR5cGUpOworICAgIFB5X1hERUNSRUYodmFsdWUpOworICAgIFB5X1hERUNSRUYodHJhY2ViYWNrKTsKK30KKworc3RhdGljIHZvaWQKK3N3YXBfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSwgUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIHRtcCA9IHRzdGF0ZS0+ZXhjX3R5cGU7CisgICAgdHN0YXRlLT5leGNfdHlwZSA9IGYtPmZfZXhjX3R5cGU7CisgICAgZi0+Zl9leGNfdHlwZSA9IHRtcDsKKyAgICB0bXAgPSB0c3RhdGUtPmV4Y192YWx1ZTsKKyAgICB0c3RhdGUtPmV4Y192YWx1ZSA9IGYtPmZfZXhjX3ZhbHVlOworICAgIGYtPmZfZXhjX3ZhbHVlID0gdG1wOworICAgIHRtcCA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsKKyAgICB0c3RhdGUtPmV4Y190cmFjZWJhY2sgPSBmLT5mX2V4Y190cmFjZWJhY2s7CisgICAgZi0+Zl9leGNfdHJhY2ViYWNrID0gdG1wOworfQorCitzdGF0aWMgdm9pZAorcmVzdG9yZV9hbmRfY2xlYXJfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSwgUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdGI7CisgICAgdHlwZSA9IHRzdGF0ZS0+ZXhjX3R5cGU7CisgICAgdmFsdWUgPSB0c3RhdGUtPmV4Y192YWx1ZTsKKyAgICB0YiA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsKKyAgICB0c3RhdGUtPmV4Y190eXBlID0gZi0+Zl9leGNfdHlwZTsKKyAgICB0c3RhdGUtPmV4Y192YWx1ZSA9IGYtPmZfZXhjX3ZhbHVlOworICAgIHRzdGF0ZS0+ZXhjX3RyYWNlYmFjayA9IGYtPmZfZXhjX3RyYWNlYmFjazsKKyAgICBmLT5mX2V4Y190eXBlID0gTlVMTDsKKyAgICBmLT5mX2V4Y192YWx1ZSA9IE5VTEw7CisgICAgZi0+Zl9leGNfdHJhY2ViYWNrID0gTlVMTDsKKyAgICBQeV9YREVDUkVGKHR5cGUpOworICAgIFB5X1hERUNSRUYodmFsdWUpOworICAgIFB5X1hERUNSRUYodGIpOworfQorCisKIC8qIExvZ2ljIGZvciB0aGUgcmFpc2Ugc3RhdGVtZW50ICh0b28gY29tcGxpY2F0ZWQgZm9yIGlubGluaW5nKS4KICAgIFRoaXMgKmNvbnN1bWVzKiBhIHJlZmVyZW5jZSBjb3VudCB0byBlYWNoIG9mIGl0cyBhcmd1bWVudHMuICovCiBzdGF0aWMgZW51bSB3aHlfY29kZQpAQCAtMzQ0Niw2ICszNTgzLDEwIEBACiAgICAgICAgIGVsc2UgaWYgKFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2soY2F1c2UpKSB7CiAgICAgICAgICAgICBmaXhlZF9jYXVzZSA9IGNhdXNlOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNhdXNlID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjYXVzZSk7CisgICAgICAgICAgICBmaXhlZF9jYXVzZSA9IE5VTEw7CisgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb24gY2F1c2VzIG11c3QgZGVyaXZlIGZyb20gIgpAQCAtNDE5Miw3ICs0MzMzLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzZXF1ZW5jZSwgbm90ICUyMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgc2VxdWVuY2UsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MzQyLDcgKzQ0ODMsOSBAQAogc3RhdGljIGludAogaW1wb3J0X2FsbF9mcm9tKFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICp2KQogewotICAgIFB5T2JqZWN0ICphbGwgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHYsICJfX2FsbF9fIik7CisgICAgX1B5X0lERU5USUZJRVIoX19hbGxfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworICAgIFB5T2JqZWN0ICphbGwgPSBfUHlPYmplY3RfR2V0QXR0cklkKHYsICZQeUlkX19fYWxsX18pOwogICAgIFB5T2JqZWN0ICpkaWN0LCAqbmFtZSwgKnZhbHVlOwogICAgIGludCBza2lwX2xlYWRpbmdfdW5kZXJzY29yZXMgPSAwOwogICAgIGludCBwb3MsIGVycjsKQEAgLTQzNTEsNyArNDQ5NCw3IEBACiAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gLTE7IC8qIFVuZXhwZWN0ZWQgZXJyb3IgKi8KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodiwgIl9fZGljdF9fIik7CisgICAgICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKHYsICZQeUlkX19fZGljdF9fKTsKICAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00Mzc3LDcgKzQ1MjAsOCBAQAogICAgICAgICB9CiAgICAgICAgIGlmIChza2lwX2xlYWRpbmdfdW5kZXJzY29yZXMgJiYKICAgICAgICAgICAgIFB5VW5pY29kZV9DaGVjayhuYW1lKSAmJgotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZSlbMF0gPT0gJ18nKQorICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKG5hbWUpICE9IC0xICYmCisgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRF9DSEFSKG5hbWUsIDApID09ICdfJykKICAgICAgICAgewogICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC00NDM3LDE5ICs0NTgxLDkgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfY29uY2F0ZW5hdGUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LAotICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKmYsIHVuc2lnbmVkIGNoYXIgKm5leHRfaW5zdHIpCisgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKmYsIHVuc2lnbmVkIGNoYXIgKm5leHRfaW5zdHIpCiB7Ci0gICAgLyogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzICd2YXJpYWJsZSArPSBleHByJyB3aGVuIGJvdGggYXJndW1lbnRzCi0gICAgICAgYXJlIChVbmljb2RlKSBzdHJpbmdzLiAqLwotICAgIFB5X3NzaXplX3Qgdl9sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodik7Ci0gICAgUHlfc3NpemVfdCB3X2xlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh3KTsKLSAgICBQeV9zc2l6ZV90IG5ld19sZW4gPSB2X2xlbiArIHdfbGVuOwotICAgIGlmIChuZXdfbGVuIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzIGFyZSB0b28gbGFyZ2UgdG8gY29uY2F0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQorICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAyKSB7CiAgICAgICAgIC8qIEluIHRoZSBjb21tb24gY2FzZSwgdGhlcmUgYXJlIDIgcmVmZXJlbmNlcyB0byB0aGUgdmFsdWUKICAgICAgICAgICogc3RvcmVkIGluICd2YXJpYWJsZScgd2hlbiB0aGUgKz0gaXMgcGVyZm9ybWVkOiBvbmUgb24gdGhlCkBAIC00NDkwLDMxICs0NjI0LDkgQEAKICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAxICYmICFQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQodikpIHsKLSAgICAgICAgLyogTm93IHdlIG93biB0aGUgbGFzdCByZWZlcmVuY2UgdG8gJ3YnLCBzbyB3ZSBjYW4gcmVzaXplIGl0Ci0gICAgICAgICAqIGluLXBsYWNlLgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKFB5VW5pY29kZV9SZXNpemUoJnYsIG5ld19sZW4pICE9IDApIHsKLSAgICAgICAgICAgIC8qIFhYWCBpZiBQeVVuaWNvZGVfUmVzaXplKCkgZmFpbHMsICd2JyBoYXMgYmVlbgotICAgICAgICAgICAgICogZGVhbGxvY2F0ZWQgc28gaXQgY2Fubm90IGJlIHB1dCBiYWNrIGludG8KLSAgICAgICAgICAgICAqICd2YXJpYWJsZScuICBUaGUgTWVtb3J5RXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlcmUKLSAgICAgICAgICAgICAqIGlzIG5vIHZhbHVlIGluICd2YXJpYWJsZScsIHdoaWNoIG1pZ2h0ICh2ZXJ5Ci0gICAgICAgICAgICAgKiByZW1vdGVseSkgYmUgYSBjYXVzZSBvZiBpbmNvbXBhdGliaWxpdGllcy4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgLyogY29weSAndycgaW50byB0aGUgbmV3bHkgYWxsb2NhdGVkIGFyZWEgb2YgJ3YnICovCi0gICAgICAgIG1lbWNweShQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSArIHZfbGVuLAotICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodyksIHdfbGVuKnNpemVvZihQeV9VTklDT0RFKSk7Ci0gICAgICAgIHJldHVybiB2OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogV2hlbiBpbi1wbGFjZSByZXNpemluZyBpcyBub3QgYW4gb3B0aW9uLiAqLwotICAgICAgICB3ID0gUHlVbmljb2RlX0NvbmNhdCh2LCB3KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICByZXR1cm4gdzsKLSAgICB9CisgICAgcmVzID0gdjsKKyAgICBQeVVuaWNvZGVfQXBwZW5kKCZyZXMsIHcpOworICAgIHJldHVybiByZXM7CiB9CiAKICNpZmRlZiBEWU5BTUlDX0VYRUNVVElPTl9QUk9GSUxFCmRpZmYgLS1naXQgYS9QeXRob24vY2V2YWxfZ2lsLmggYi9QeXRob24vY2V2YWxfZ2lsLmgKaW5kZXggYmY3YTM1MC4uMjcwMmQ1YyAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsX2dpbC5oCisrKyBiL1B5dGhvbi9jZXZhbF9naWwuaApAQCAtNTksMjEzICs1OSw0OSBAQAogICAgICAoTm90ZTogdGhpcyBtZWNoYW5pc20gaXMgZW5hYmxlZCB3aXRoIEZPUkNFX1NXSVRDSElORyBhYm92ZSkKICovCiAKLSNpZm5kZWYgX1BPU0lYX1RIUkVBRFMKLS8qIFRoaXMgbWVhbnMgcHRocmVhZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCBpbiBsaWJjIGhlYWRlcnMsIGhlbmNlIHRoZSBtYWNybwotICAgbm90IHByZXNlbnQgaW4gdW5pc3RkLmguIEJ1dCB0aGV5IHN0aWxsIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBhbiBleHRlcm5hbAotICAgbGlicmFyeSAoZS5nLiBnbnUgcHRoIGluIHB0aHJlYWQgZW11bGF0aW9uKSAqLwotIyBpZmRlZiBIQVZFX1BUSFJFQURfSAotIyAgaW5jbHVkZSA8cHRocmVhZC5oPiAvKiBfUE9TSVhfVEhSRUFEUyAqLwotIyBlbmRpZgorI2luY2x1ZGUgImNvbmR2YXIuaCIKKyNpZm5kZWYgUHlfSEFWRV9DT05EVkFSCisjZXJyb3IgWW91IG5lZWQgZWl0aGVyIGEgUE9TSVgtY29tcGF0aWJsZSBvciBhIFdpbmRvd3Mgc3lzdGVtIQogI2VuZGlmCiAKLQotI2lmZGVmIF9QT1NJWF9USFJFQURTCi0KLS8qCi0gKiBQT1NJWCBzdXBwb3J0Ci0gKi8KLQotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLQotI2RlZmluZSBBRERfTUlDUk9TRUNPTkRTKHR2LCBpbnRlcnZhbCkgXAotZG8geyBcCi0gICAgdHYudHZfdXNlYyArPSAobG9uZykgaW50ZXJ2YWw7IFwKLSAgICB0di50dl9zZWMgKz0gdHYudHZfdXNlYyAvIDEwMDAwMDA7IFwKLSAgICB0di50dl91c2VjICU9IDEwMDAwMDA7IFwKLX0gd2hpbGUgKDApCi0KLS8qIFdlIGFzc3VtZSBhbGwgbW9kZXJuIFBPU0lYIHN5c3RlbXMgaGF2ZSBnZXR0aW1lb2ZkYXkoKSAqLwotI2lmZGVmIEdFVFRJTUVPRkRBWV9OT19UWgotI2RlZmluZSBHRVRUSU1FT0ZEQVkocHR2KSBnZXR0aW1lb2ZkYXkocHR2KQotI2Vsc2UKLSNkZWZpbmUgR0VUVElNRU9GREFZKHB0dikgZ2V0dGltZW9mZGF5KHB0diwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpCi0jZW5kaWYKLQotI2RlZmluZSBNVVRFWF9UIHB0aHJlYWRfbXV0ZXhfdAorI2RlZmluZSBNVVRFWF9UIFB5TVVURVhfVAogI2RlZmluZSBNVVRFWF9JTklUKG11dCkgXAotICAgIGlmIChwdGhyZWFkX211dGV4X2luaXQoJm11dCwgTlVMTCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX211dGV4X2luaXQoIiAjbXV0ICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeU1VVEVYX0lOSVQoJihtdXQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5TVVURVhfSU5JVCgiICNtdXQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIE1VVEVYX0ZJTkkobXV0KSBcCi0gICAgaWYgKHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0KSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfbXV0ZXhfZGVzdHJveSgiICNtdXQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5TVVURVhfRklOSSgmKG11dCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlNVVRFWF9GSU5JKCIgI211dCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgTVVURVhfTE9DSyhtdXQpIFwKLSAgICBpZiAocHRocmVhZF9tdXRleF9sb2NrKCZtdXQpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9tdXRleF9sb2NrKCIgI211dCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlNVVRFWF9MT0NLKCYobXV0KSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeU1VVEVYX0xPQ0soIiAjbXV0ICIpIGZhaWxlZCIpOyB9OwogI2RlZmluZSBNVVRFWF9VTkxPQ0sobXV0KSBcCi0gICAgaWYgKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXQpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9tdXRleF91bmxvY2soIiAjbXV0ICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeU1VVEVYX1VOTE9DSygmKG11dCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlNVVRFWF9VTkxPQ0soIiAjbXV0ICIpIGZhaWxlZCIpOyB9OwogCi0jZGVmaW5lIENPTkRfVCBwdGhyZWFkX2NvbmRfdAorI2RlZmluZSBDT05EX1QgUHlDT05EX1QKICNkZWZpbmUgQ09ORF9JTklUKGNvbmQpIFwKLSAgICBpZiAocHRocmVhZF9jb25kX2luaXQoJmNvbmQsIE5VTEwpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9jb25kX2luaXQoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlDT05EX0lOSVQoJihjb25kKSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeUNPTkRfSU5JVCgiICNjb25kICIpIGZhaWxlZCIpOyB9OwogI2RlZmluZSBDT05EX0ZJTkkoY29uZCkgXAotICAgIGlmIChwdGhyZWFkX2NvbmRfZGVzdHJveSgmY29uZCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX2NvbmRfZGVzdHJveSgiICNjb25kICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeUNPTkRfRklOSSgmKGNvbmQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5Q09ORF9GSU5JKCIgI2NvbmQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIENPTkRfU0lHTkFMKGNvbmQpIFwKLSAgICBpZiAocHRocmVhZF9jb25kX3NpZ25hbCgmY29uZCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX2NvbmRfc2lnbmFsKCIgI2NvbmQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5Q09ORF9TSUdOQUwoJihjb25kKSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeUNPTkRfU0lHTkFMKCIgI2NvbmQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIENPTkRfV0FJVChjb25kLCBtdXQpIFwKLSAgICBpZiAocHRocmVhZF9jb25kX3dhaXQoJmNvbmQsICZtdXQpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9jb25kX3dhaXQoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlDT05EX1dBSVQoJihjb25kKSwgJihtdXQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5Q09ORF9XQUlUKCIgI2NvbmQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIENPTkRfVElNRURfV0FJVChjb25kLCBtdXQsIG1pY3Jvc2Vjb25kcywgdGltZW91dF9yZXN1bHQpIFwKICAgICB7IFwKLSAgICAgICAgaW50IHI7IFwKLSAgICAgICAgc3RydWN0IHRpbWVzcGVjIHRzOyBcCi0gICAgICAgIHN0cnVjdCB0aW1ldmFsIGRlYWRsaW5lOyBcCi0gICAgICAgIFwKLSAgICAgICAgR0VUVElNRU9GREFZKCZkZWFkbGluZSk7IFwKLSAgICAgICAgQUREX01JQ1JPU0VDT05EUyhkZWFkbGluZSwgbWljcm9zZWNvbmRzKTsgXAotICAgICAgICB0cy50dl9zZWMgPSBkZWFkbGluZS50dl9zZWM7IFwKLSAgICAgICAgdHMudHZfbnNlYyA9IGRlYWRsaW5lLnR2X3VzZWMgKiAxMDAwOyBcCi0gICAgICAgIFwKLSAgICAgICAgciA9IHB0aHJlYWRfY29uZF90aW1lZHdhaXQoJmNvbmQsICZtdXQsICZ0cyk7IFwKLSAgICAgICAgaWYgKHIgPT0gRVRJTUVET1VUKSBcCisgICAgICAgIGludCByID0gUHlDT05EX1RJTUVEV0FJVCgmKGNvbmQpLCAmKG11dCksIChtaWNyb3NlY29uZHMpKTsgXAorICAgICAgICBpZiAociA8IDApIFwKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5Q09ORF9XQUlUKCIgI2NvbmQgIikgZmFpbGVkIik7IFwKKyAgICAgICAgaWYgKHIpIC8qIDEgPT0gdGltZW91dCwgMiA9PSBpbXBsLiBjYW4ndCBzYXksIHNvIGFzc3VtZSB0aW1lb3V0ICovIFwKICAgICAgICAgICAgIHRpbWVvdXRfcmVzdWx0ID0gMTsgXAotICAgICAgICBlbHNlIGlmIChyKSBcCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX2NvbmRfdGltZWR3YWl0KCIgI2NvbmQgIikgZmFpbGVkIik7IFwKICAgICAgICAgZWxzZSBcCiAgICAgICAgICAgICB0aW1lb3V0X3Jlc3VsdCA9IDA7IFwKICAgICB9IFwKIAotI2VsaWYgZGVmaW5lZChOVF9USFJFQURTKQotCi0vKgotICogV2luZG93cyAoMjAwMCBhbmQgbGF0ZXIsIGFzIHdlbGwgYXMgKGhvcGVmdWxseSkgQ0UpIHN1cHBvcnQKLSAqLwotCi0jaW5jbHVkZSA8d2luZG93cy5oPgotCi0jZGVmaW5lIE1VVEVYX1QgQ1JJVElDQUxfU0VDVElPTgotI2RlZmluZSBNVVRFWF9JTklUKG11dCkgZG8geyBcCi0gICAgaWYgKCEoSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbkFuZFNwaW5Db3VudCgmKG11dCksIDQwMDApKSkgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJDcmVhdGVNdXRleCgiICNtdXQgIikgZmFpbGVkIik7IFwKLX0gd2hpbGUgKDApCi0jZGVmaW5lIE1VVEVYX0ZJTkkobXV0KSBcCi0gICAgRGVsZXRlQ3JpdGljYWxTZWN0aW9uKCYobXV0KSkKLSNkZWZpbmUgTVVURVhfTE9DSyhtdXQpIFwKLSAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmKG11dCkpCi0jZGVmaW5lIE1VVEVYX1VOTE9DSyhtdXQpIFwKLSAgICBMZWF2ZUNyaXRpY2FsU2VjdGlvbigmKG11dCkpCi0KLS8qIFdlIGVtdWxhdGUgY29uZGl0aW9uIHZhcmlhYmxlcyB3aXRoIGEgc2VtYXBob3JlLgotICAgV2UgdXNlIGEgU2VtYXBob3JlIHJhdGhlciB0aGFuIGFuIGF1dG8tcmVzZXQgZXZlbnQsIGJlY2F1c2UgYWx0aG91Z2gKLSAgIGFuIGF1dG8tcmVzZW50IGV2ZW50IG1pZ2h0IGFwcGVhciB0byBzb2x2ZSB0aGUgbG9zdC13YWtldXAgYnVnIChyYWNlCi0gICBjb25kaXRpb24gYmV0d2VlbiByZWxlYXNpbmcgdGhlIG91dGVyIGxvY2sgYW5kIHdhaXRpbmcpIGJlY2F1c2UgaXQKLSAgIG1haW50YWlucyBzdGF0ZSBldmVuIHRob3VnaCBhIHdhaXQgaGFzbid0IGhhcHBlbmVkLCB0aGVyZSBpcyBzdGlsbAotICAgYSBsb3N0IHdha2V1cCBwcm9ibGVtIGlmIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGFyZSBpbnRlcnJ1cHRlZCBpbiB0aGUKLSAgIGNyaXRpY2FsIHBsYWNlLiAgQSBzZW1hcGhvcmUgc29sdmVzIHRoYXQuCi0gICBCZWNhdXNlIGl0IGlzIG9rIHRvIHNpZ25hbCBhIGNvbmRpdGlvbiB2YXJpYWJsZSB3aXRoIG5vIG9uZQotICAgd2FpdGluZywgd2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YKLSAgIHdhaXRpbmcgdGhyZWFkcy4gIE90aGVyd2lzZSwgdGhlIHNlbWFwaG9yZSdzIHN0YXRlIGNvdWxkIHJpc2UKLSAgIHdpdGhvdXQgYm91bmQuCi0KLSAgIEdlbmVyaWMgZW11bGF0aW9ucyBvZiB0aGUgcHRocmVhZF9jb25kXyogQVBJIHVzaW5nCi0gICBXaW4zMiBmdW5jdGlvbnMgY2FuIGJlIGZvdW5kIG9uIHRoZSBXZWIuCi0gICBUaGUgZm9sbG93aW5nIHJlYWQgY2FuIGJlIGVkaWZpY2F0aW5nIChvciBub3QpOgotICAgaHR0cDovL3d3dy5jc2Uud3VzdGwuZWR1L35zY2htaWR0L3dpbjMyLWN2LTEuaHRtbAotKi8KLXR5cGVkZWYgc3RydWN0IENPTkRfVAotewotICAgIEhBTkRMRSBzZW07ICAgIC8qIHRoZSBzZW1hcGhvcmUgKi8KLSAgICBpbnQgbl93YWl0aW5nOyAvKiBob3cgbWFueSBhcmUgdW5yZWxlYXNlZCAqLwotfSBDT05EX1Q7Ci0KLV9faW5saW5lIHN0YXRpYyB2b2lkIF9jb25kX2luaXQoQ09ORF9UICpjb25kKQotewotICAgIC8qIEEgc2VtYXBob3JlIHdpdGggYSBsYXJnZSBtYXggdmFsdWUsICBUaGUgcG9zaXRpdmUgdmFsdWUKLSAgICAgKiBpcyBvbmx5IG5lZWRlZCB0byBjYXRjaCB0aG9zZSAibG9zdCB3YWtldXAiIGV2ZW50cyBhbmQKLSAgICAgKiByYWNlIGNvbmRpdGlvbnMgd2hlbiBhIHRpbWVkIHdhaXQgZWxhcHNlcy4KLSAgICAgKi8KLSAgICBpZiAoIShjb25kLT5zZW0gPSBDcmVhdGVTZW1hcGhvcmUoTlVMTCwgMCwgMTAwMCwgTlVMTCkpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJDcmVhdGVTZW1hcGhvcmUoKSBmYWlsZWQiKTsKLSAgICBjb25kLT5uX3dhaXRpbmcgPSAwOwotfQotCi1fX2lubGluZSBzdGF0aWMgdm9pZCBfY29uZF9maW5pKENPTkRfVCAqY29uZCkKLXsKLSAgICBCT09MIG9rID0gQ2xvc2VIYW5kbGUoY29uZC0+c2VtKTsKLSAgICBpZiAoIW9rKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJDbG9zZUhhbmRsZSgpIGZhaWxlZCIpOwotfQotCi1fX2lubGluZSBzdGF0aWMgdm9pZCBfY29uZF93YWl0KENPTkRfVCAqY29uZCwgTVVURVhfVCAqbXV0KQotewotICAgICsrY29uZC0+bl93YWl0aW5nOwotICAgIE1VVEVYX1VOTE9DSygqbXV0KTsKLSAgICAvKiAibG9zdCB3YWtldXAgYnVnIiB3b3VsZCBvY2N1ciBpZiB0aGUgY2FsbGVyIHdlcmUgaW50ZXJydXB0ZWQgaGVyZSwKLSAgICAgKiBidXQgd2UgYXJlIHNhZmUgYmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzZW1hcGhvcmUgd2ljaCBoYXMgYW4gaW50ZXJuYWwKLSAgICAgKiBjb3VudC4KLSAgICAgKi8KLSAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdChjb25kLT5zZW0sIElORklOSVRFKSA9PSBXQUlUX0ZBSUxFRCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiV2FpdEZvclNpbmdsZU9iamVjdCgpIGZhaWxlZCIpOwotICAgIE1VVEVYX0xPQ0soKm11dCk7Ci19Ci0KLV9faW5saW5lIHN0YXRpYyBpbnQgX2NvbmRfdGltZWRfd2FpdChDT05EX1QgKmNvbmQsIE1VVEVYX1QgKm11dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1cykKLXsKLSAgICBEV09SRCByOwotICAgICsrY29uZC0+bl93YWl0aW5nOwotICAgIE1VVEVYX1VOTE9DSygqbXV0KTsKLSAgICByID0gV2FpdEZvclNpbmdsZU9iamVjdChjb25kLT5zZW0sIHVzIC8gMTAwMCk7Ci0gICAgaWYgKHIgPT0gV0FJVF9GQUlMRUQpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIldhaXRGb3JTaW5nbGVPYmplY3QoKSBmYWlsZWQiKTsKLSAgICBNVVRFWF9MT0NLKCptdXQpOwotICAgIGlmIChyID09IFdBSVRfVElNRU9VVCkKLSAgICAgICAgLS1jb25kLT5uX3dhaXRpbmc7Ci0gICAgICAgIC8qIEhlcmUgd2UgaGF2ZSBhIGJlbmlnbiByYWNlIGNvbmRpdGlvbiB3aXRoIF9jb25kX3NpZ25hbC4gIElmIHRoZQotICAgICAgICAgKiB3YWl0IG9wZXJhdGlvbiBoYXMgdGltZWQgb3V0LCBidXQgYmVmb3JlIHdlIGNhbiBhY3F1aXJlIHRoZQotICAgICAgICAgKiBtdXRleCBhZ2FpbiB0byBkZWNyZW1lbnQgbl93YWl0aW5nLCBhIHRocmVhZCBob2xkaW5nIHRoZSBtdXRleAotICAgICAgICAgKiBzdGlsbCBzZWVzIGEgcG9zaXRpdmUgbl93YWl0aW5nIHZhbHVlIGFuZCBtYXkgY2FsbAotICAgICAgICAgKiBSZWxlYXNlU2VtYXBob3JlIGFuZCBkZWNyZW1lbnQgbl93YWl0aW5nLgotICAgICAgICAgKiBUaGlzIHdpbGwgY2F1c2Ugbl93YWl0aW5nIHRvIGJlIGRlY3JlbWVudGVkIHR3aWNlLgotICAgICAgICAgKiBUaGlzIGlzIGJlbmlnbiwgdGhvdWdoLCBiZWNhdXNlIFJlbGVhc2VTZW1hcGhvcmUgd2lsbCBhbHNvIGhhdmUKLSAgICAgICAgICogYmVlbiBjYWxsZWQsIGxlYXZpbmcgdGhlIHNlbWFwaG9yZSBzdGF0ZSBwb3NpdGl2ZS4gIFdlIG1heQotICAgICAgICAgKiB0aHVzIGVuZCB1cCB3aXRoIHNlbWFwaG9yZSBpbiBzdGF0ZSAxLCBhbmQgbl93YWl0aW5nID09IC0xLCBhbmQKLSAgICAgICAgICogdGhlIG5leHQgdGltZSBzb21lb25lIGNhbGxzIF9jb25kX3dhaXQoKSwgdGhhdCB0aHJlYWQgd2lsbAotICAgICAgICAgKiBwYXNzIHJpZ2h0IHRocm91Z2gsIGRlY3JlbWVudGluZyB0aGUgc2VtYXBob3JlIHN0YXRlIGFuZAotICAgICAgICAgKiBpbmNyZW1lbnRpbmcgbl93YWl0aW5nLCB0aHVzIGNvcnJlY3RpbmcgdGhlIGV4dHJhIF9jb25kX3NpZ25hbC4KLSAgICAgICAgICovCi0gICAgcmV0dXJuIHIgPT0gV0FJVF9USU1FT1VUOwotfQotCi1fX2lubGluZSBzdGF0aWMgdm9pZCBfY29uZF9zaWduYWwoQ09ORF9UICAqY29uZCkgewotICAgIC8qIE5PVEU6IFRoaXMgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgbXV0ZXggaGVsZCAqLwotICAgIGlmIChjb25kLT5uX3dhaXRpbmcgPiAwKSB7Ci0gICAgICAgIGlmICghUmVsZWFzZVNlbWFwaG9yZShjb25kLT5zZW0sIDEsIE5VTEwpKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUmVsZWFzZVNlbWFwaG9yZSgpIGZhaWxlZCIpOwotICAgICAgICAtLWNvbmQtPm5fd2FpdGluZzsKLSAgICB9Ci19Ci0KLSNkZWZpbmUgQ09ORF9JTklUKGNvbmQpIFwKLSAgICBfY29uZF9pbml0KCYoY29uZCkpCi0jZGVmaW5lIENPTkRfRklOSShjb25kKSBcCi0gICAgX2NvbmRfZmluaSgmKGNvbmQpKQotI2RlZmluZSBDT05EX1NJR05BTChjb25kKSBcCi0gICAgX2NvbmRfc2lnbmFsKCYoY29uZCkpCi0jZGVmaW5lIENPTkRfV0FJVChjb25kLCBtdXQpIFwKLSAgICBfY29uZF93YWl0KCYoY29uZCksICYobXV0KSkKLSNkZWZpbmUgQ09ORF9USU1FRF9XQUlUKGNvbmQsIG11dCwgdXMsIHRpbWVvdXRfcmVzdWx0KSBkbyB7IFwKLSAgICAodGltZW91dF9yZXN1bHQpID0gX2NvbmRfdGltZWRfd2FpdCgmKGNvbmQpLCAmKG11dCksIHVzKTsgXAotfSB3aGlsZSAoMCkKLQotI2Vsc2UKLQotI2Vycm9yIFlvdSBuZWVkIGVpdGhlciBhIFBPU0lYLWNvbXBhdGlibGUgb3IgYSBXaW5kb3dzIHN5c3RlbSEKLQotI2VuZGlmIC8qIF9QT1NJWF9USFJFQURTLCBOVF9USFJFQURTICovCiAKIAogLyogV2hldGhlciB0aGUgR0lMIGlzIGFscmVhZHkgdGFrZW4gKC0xIGlmIHVuaW5pdGlhbGl6ZWQpLiBUaGlzIGlzIGF0b21pYwpAQCAtMzEzLDEzICsxNDksMTQgQEAKIAogc3RhdGljIHZvaWQgZGVzdHJveV9naWwodm9pZCkKIHsKKyAgICAvKiBzb21lIHB0aHJlYWQtbGlrZSBpbXBsZW1lbnRhdGlvbnMgdGllIHRoZSBtdXRleCB0byB0aGUgY29uZAorICAgICAqIGFuZCBtdXN0IGhhdmUgdGhlIGNvbmQgZGVzdHJveWVkIGZpcnN0LgorICAgICAqLworICAgIENPTkRfRklOSShnaWxfY29uZCk7CiAgICAgTVVURVhfRklOSShnaWxfbXV0ZXgpOwogI2lmZGVmIEZPUkNFX1NXSVRDSElORwotICAgIE1VVEVYX0ZJTkkoc3dpdGNoX211dGV4KTsKLSNlbmRpZgotICAgIENPTkRfRklOSShnaWxfY29uZCk7Ci0jaWZkZWYgRk9SQ0VfU1dJVENISU5HCiAgICAgQ09ORF9GSU5JKHN3aXRjaF9jb25kKTsKKyAgICBNVVRFWF9GSU5JKHN3aXRjaF9tdXRleCk7CiAjZW5kaWYKICAgICBfUHlfYXRvbWljX3N0b3JlX2V4cGxpY2l0KCZnaWxfbG9ja2VkLCAtMSwgX1B5X21lbW9yeV9vcmRlcl9yZWxlYXNlKTsKICAgICBfUHlfQU5OT1RBVEVfUldMT0NLX0RFU1RST1koJmdpbF9sb2NrZWQpOwpAQCAtMzU1LDEzICsxOTIsMTMgQEAKICAgICAgICAgTVVURVhfTE9DSyhzd2l0Y2hfbXV0ZXgpOwogICAgICAgICAvKiBOb3Qgc3dpdGNoZWQgeWV0ID0+IHdhaXQgKi8KICAgICAgICAgaWYgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpID09IHRzdGF0ZSkgewotCSAgICBSRVNFVF9HSUxfRFJPUF9SRVFVRVNUKCk7CisgICAgICAgIFJFU0VUX0dJTF9EUk9QX1JFUVVFU1QoKTsKICAgICAgICAgICAgIC8qIE5PVEU6IGlmIENPTkRfV0FJVCBkb2VzIG5vdCBhdG9taWNhbGx5IHN0YXJ0IHdhaXRpbmcgd2hlbgogICAgICAgICAgICAgICAgcmVsZWFzaW5nIHRoZSBtdXRleCwgYW5vdGhlciB0aHJlYWQgY2FuIHJ1biB0aHJvdWdoLCB0YWtlCiAgICAgICAgICAgICAgICB0aGUgR0lMIGFuZCBkcm9wIGl0IGFnYWluLCBhbmQgcmVzZXQgdGhlIGNvbmRpdGlvbgogICAgICAgICAgICAgICAgYmVmb3JlIHdlIGV2ZW4gaGFkIGEgY2hhbmNlIHRvIHdhaXQgZm9yIGl0LiAqLwogICAgICAgICAgICAgQ09ORF9XQUlUKHN3aXRjaF9jb25kLCBzd2l0Y2hfbXV0ZXgpOwotCX0KKyAgICB9CiAgICAgICAgIE1VVEVYX1VOTE9DSyhzd2l0Y2hfbXV0ZXgpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvZGVjcy5jIGIvUHl0aG9uL2NvZGVjcy5jCmluZGV4IGM3ZjRhOWMuLjc5N2E0NWYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb2RlY3MuYworKysgYi9QeXRob24vY29kZWNzLmMKQEAgLTExLDYgKzExLDggQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDxjdHlwZS5oPgogCitjb25zdCBjaGFyICpQeV9oZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisKIC8qIC0tLSBDb2RlYyBSZWdpc3RyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBJbXBvcnQgdGhlIHN0YW5kYXJkIGVuY29kaW5ncyBwYWNrYWdlIHdoaWNoIHdpbGwgcmVnaXN0ZXIgdGhlIGZpcnN0CkBAIC00NjUsOSArNDY3LDExIEBACiAKIHN0YXRpYyB2b2lkIHdyb25nX2V4Y2VwdGlvbl90eXBlKFB5T2JqZWN0ICpleGMpCiB7Ci0gICAgUHlPYmplY3QgKnR5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGV4YywgIl9fY2xhc3NfXyIpOworICAgIF9QeV9JREVOVElGSUVSKF9fY2xhc3NfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworICAgIFB5T2JqZWN0ICp0eXBlID0gX1B5T2JqZWN0X0dldEF0dHJJZChleGMsICZQeUlkX19fY2xhc3NfXyk7CiAgICAgaWYgKHR5cGUgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodHlwZSwgIl9fbmFtZV9fIik7CisgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0eXBlLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKICAgICAgICAgaWYgKG5hbWUgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTUwNiw1NyArNTEwLDU4IEBACiAgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICAvKiBvdWNoOiBwYXNzaW5nIE5VTEwsIDAsIHBvcyBnaXZlcyBOb25lIGluc3RlYWQgb2YgdScnICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIih1I24pIiwgJmVuZCwgMCwgZW5kKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIFB5VW5pY29kZV9OZXcoMCwgMCksIGVuZCk7CiB9CiAKIAogUHlPYmplY3QgKlB5Q29kZWNfUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKQogewotICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0OwotICAgIFB5X3NzaXplX3QgZW5kOwotICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBlbmQsIGksIGxlbjsKIAogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICBQeV9VTklDT0RFICpwOworICAgICAgICBpbnQga2luZDsKKyAgICAgICAgdm9pZCAqZGF0YTsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGVuZC1zdGFydCk7CisgICAgICAgIGxlbiA9IGVuZCAtIHN0YXJ0OworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KGxlbiwgJz8nKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAocCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyksIGkgPSBzdGFydDsKLSAgICAgICAgICAgIGk8ZW5kOyArK3AsICsraSkKLSAgICAgICAgICAgICpwID0gJz8nOwotICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihPbikiLCByZXMsIGVuZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gcmVzdHVwbGU7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKQorICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGksICc/Jyk7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgewotICAgICAgICBQeV9VTklDT0RFIHJlcyA9IFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSOwogICAgICAgICBpZiAoUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIih1I24pIiwgJnJlcywgMSwgZW5kKTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihDbikiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KVB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICBQeV9VTklDT0RFICpwOworICAgICAgICBpbnQga2luZDsKKyAgICAgICAgdm9pZCAqZGF0YTsKICAgICAgICAgaWYgKFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGVuZC1zdGFydCk7CisgICAgICAgIGxlbiA9IGVuZCAtIHN0YXJ0OworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KGxlbiwgUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKSwgaSA9IHN0YXJ0OwotICAgICAgICAgICAgaTxlbmQ7ICsrcCwgKytpKQotICAgICAgICAgICAgKnAgPSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUjsKLSAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoT24pIiwgcmVzLCBlbmQpOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlc3R1cGxlOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcyk7CisgICAgICAgIGZvciAoaT0wOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSwgUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CkBAIC01NjksODIgKzU3NCw3MiBAQAogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgICAgIFB5X1VOSUNPREUgKnN0YXJ0cDsKLSAgICAgICAgUHlfVU5JQ09ERSAqb3V0cDsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0cDsKICAgICAgICAgaW50IHJlc3NpemU7CisgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzdGFydHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmplY3QpOwotICAgICAgICBmb3IgKHAgPSBzdGFydHArc3RhcnQsIHJlc3NpemUgPSAwOyBwIDwgc3RhcnRwK2VuZDsgKytwKSB7Ci0gICAgICAgICAgICBpZiAoKnA8MTApCisgICAgICAgIGZvciAoaSA9IHN0YXJ0LCByZXNzaXplID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgICAgICAvKiBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiICovCisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKKyAgICAgICAgICAgIGlmIChjaDwxMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrMSsxOwotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwKQorICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMisyKzE7Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwKQorICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrMysxOwotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDApCisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNCsxOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNSsxOwotI2Vsc2UKLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMCkKLSAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNSsxOwotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDAwMCkKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwMDApCiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAyKzYrMTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNysxOwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgLyogYWxsb2NhdGUgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHJlc3NpemUpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHJlc3NpemUsIDEyNyk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBvdXRwID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKTsKICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgZm9yIChwID0gc3RhcnRwK3N0YXJ0LCBvdXRwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKLSAgICAgICAgICAgIHAgPCBzdGFydHArZW5kOyArK3ApIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgYyA9ICpwOworICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7CiAgICAgICAgICAgICBpbnQgZGlnaXRzOwogICAgICAgICAgICAgaW50IGJhc2U7CisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKICAgICAgICAgICAgICpvdXRwKysgPSAnJic7CiAgICAgICAgICAgICAqb3V0cCsrID0gJyMnOwotICAgICAgICAgICAgaWYgKCpwPDEwKSB7CisgICAgICAgICAgICBpZiAoY2g8MTApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSAxOwogICAgICAgICAgICAgICAgIGJhc2UgPSAxOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwKSB7CisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSAyOwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDApIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSAzOwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMCkgeworICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSA0OwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwOwogICAgICAgICAgICAgfQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDAwKSB7CiAgICAgICAgICAgICAgICAgZGlnaXRzID0gNTsKICAgICAgICAgICAgICAgICBiYXNlID0gMTAwMDA7CiAgICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDAwKSB7Ci0gICAgICAgICAgICAgICAgZGlnaXRzID0gNTsKLSAgICAgICAgICAgICAgICBiYXNlID0gMTAwMDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDAwKSB7CisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMDAwKSB7CiAgICAgICAgICAgICAgICAgZGlnaXRzID0gNjsKICAgICAgICAgICAgICAgICBiYXNlID0gMTAwMDAwOwogICAgICAgICAgICAgfQpAQCAtNjUyLDE2ICs2NDcsMTUgQEAKICAgICAgICAgICAgICAgICBkaWdpdHMgPSA3OwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwMDAwOwogICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgICAgICB3aGlsZSAoZGlnaXRzLS0+MCkgewotICAgICAgICAgICAgICAgICpvdXRwKysgPSAnMCcgKyBjL2Jhc2U7Ci0gICAgICAgICAgICAgICAgYyAlPSBiYXNlOworICAgICAgICAgICAgICAgICpvdXRwKysgPSAnMCcgKyBjaC9iYXNlOworICAgICAgICAgICAgICAgIGNoICU9IGJhc2U7CiAgICAgICAgICAgICAgICAgYmFzZSAvPSAxMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICpvdXRwKysgPSAnOyc7CiAgICAgICAgIH0KLSAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoT24pIiwgcmVzLCBlbmQpOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHJlc3R1cGxlOwogICAgIH0KQEAgLTY3MSw4NyArNjY1LDY1IEBACiAgICAgfQogfQogCi1zdGF0aWMgUHlfVU5JQ09ERSBoZXhkaWdpdHNbXSA9IHsKLSAgICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywKLSAgICAnOCcsICc5JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJwotfTsKLQogUHlPYmplY3QgKlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKQogewotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSNkZWZpbmUgSVNfU1VSUk9HQVRFX1BBSVIocCwgZW5kKSBcCi0gICAgKCpwID49IDB4RDgwMCAmJiAqcCA8PSAweERCRkYgJiYgKHAgKyAxKSA8IGVuZCAmJiBcCi0gICAgICoocCArIDEpID49IDB4REMwMCAmJiAqKHAgKyAxKSA8PSAweERGRkYpCi0jZWxzZQotI2RlZmluZSBJU19TVVJST0dBVEVfUEFJUihwLCBlbmQpIDAKLSNlbmRpZgogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgICAgIFB5X1VOSUNPREUgKnN0YXJ0cDsKLSAgICAgICAgUHlfVU5JQ09ERSAqb3V0cDsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0cDsKICAgICAgICAgaW50IHJlc3NpemU7CisgICAgICAgIFB5X1VDUzQgYzsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHN0YXJ0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iamVjdCk7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydCwgcmVzc2l6ZSA9IDA7IHAgPCBzdGFydHArZW5kOyArK3ApIHsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIGlmICgqcCA+PSAweDAwMDEwMDAwKQorICAgICAgICBmb3IgKGkgPSBzdGFydCwgcmVzc2l6ZSA9IDA7IGkgPCBlbmQ7ICsraSkgeworICAgICAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLworICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKKyAgICAgICAgICAgIGlmIChjID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSs4OwotICAgICAgICAgICAgZWxzZQotI2VuZGlmCi0gICAgICAgICAgICBpZiAoKnAgPj0gMHgxMDApIHsKLSAgICAgICAgICAgICAgICBpZiAoSVNfU1VSUk9HQVRFX1BBSVIocCwgc3RhcnRwK2VuZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErODsKLSAgICAgICAgICAgICAgICAgICAgKytwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7CisgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErNDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSsyOwogICAgICAgICB9Ci0gICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCByZXNzaXplKTsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyhyZXNzaXplLCAxMjcpOwogICAgICAgICBpZiAocmVzPT1OVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydCwgb3V0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyk7Ci0gICAgICAgICAgICBwIDwgc3RhcnRwK2VuZDsgKytwKSB7Ci0gICAgICAgICAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCkgKnA7CisgICAgICAgIGZvciAoaSA9IHN0YXJ0LCBvdXRwID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKTsKKyAgICAgICAgICAgIGkgPCBlbmQ7ICsraSkgeworICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKICAgICAgICAgICAgICpvdXRwKysgPSAnXFwnOwotICAgICAgICAgICAgaWYgKElTX1NVUlJPR0FURV9QQUlSKHAsIHN0YXJ0cCtlbmQpKSB7Ci0gICAgICAgICAgICAgICAgYyA9ICgoKnAgJiAweDNGRikgPDwgMTApICsgKCoocCArIDEpICYgMHgzRkYpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYyA+PSAweDAwMDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgKm91dHArKyA9ICdVJzsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4yOCkmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4yNCkmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4yMCkmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4xNikmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4xMikmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj44KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjI4KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjI0KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjIwKSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjE2KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjEyKSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjgpJjB4Zl07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7CiAgICAgICAgICAgICAgICAgKm91dHArKyA9ICd1JzsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4xMikmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj44KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjEyKSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjgpJjB4Zl07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKm91dHArKyA9ICd4JzsKLSAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjQpJjB4Zl07Ci0gICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzW2MmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjQpJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzW2MmMHhmXTsKICAgICAgICAgfQogCi0gICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE9uKSIsIHJlcywgZW5kKTsKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CiAgICAgICAgIHJldHVybiByZXN0dXBsZTsKICAgICB9CkBAIC03NTksNyArNzMxLDYgQEAKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI3VuZGVmIElTX1NVUlJPR0FURV9QQUlSCiB9CiAKIC8qIFRoaXMgaGFuZGxlciBpcyBkZWNsYXJlZCBzdGF0aWMgdW50aWwgc29tZW9uZSBkZW1vbnN0cmF0ZXMKQEAgLTc2OSwxMiArNzQwLDExIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSAqc3RhcnRwOwogICAgICAgICBjaGFyICpvdXRwOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03ODIsMTUgKzc1MiwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzdGFydHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmplY3QpOwogICAgICAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDMqKGVuZC1zdGFydCkpOwogICAgICAgICBpZiAoIXJlcykgewogICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBvdXRwID0gUHlCeXRlc19Bc1N0cmluZyhyZXMpOwotICAgICAgICBmb3IgKHAgPSBzdGFydHArc3RhcnQ7IHAgPCBzdGFydHArZW5kOyBwKyspIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcDsKKyAgICAgICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLworICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKICAgICAgICAgICAgIGlmIChjaCA8IDB4ZDgwMCB8fCBjaCA+IDB4ZGZmZikgewogICAgICAgICAgICAgICAgIC8qIE5vdCBhIHN1cnJvZ2F0ZSwgZmFpbCB3aXRoIG9yaWdpbmFsIGV4Y2VwdGlvbiAqLwogICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CkBAIC04MDksNyArNzc5LDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IDA7CisgICAgICAgIFB5X1VDUzQgY2ggPSAwOwogICAgICAgICBpZiAoUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKQEAgLTgzNSw3ICs4MDUsMTAgQEAKICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHUjbikiLCAmY2gsIDEsIHN0YXJ0KzMpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOworICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIHN0YXJ0KzMpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKQEAgLTg0OCwxMiArODIxLDExIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSAqc3RhcnRwOwogICAgICAgICBjaGFyICpvdXRwOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04NjEsMTUgKzgzMywxNSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzdGFydHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmplY3QpOwogICAgICAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGVuZC1zdGFydCk7CiAgICAgICAgIGlmICghcmVzKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIG91dHAgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlcyk7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydDsgcCA8IHN0YXJ0cCtlbmQ7IHArKykgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpwOworICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICAvKiBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiICovCisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwogICAgICAgICAgICAgaWYgKGNoIDwgMHhkYzgwIHx8IGNoID4gMHhkY2ZmKSB7CiAgICAgICAgICAgICAgICAgLyogTm90IGEgVVRGLThiIHN1cnJvZ2F0ZSwgZmFpbCB3aXRoIG9yaWdpbmFsIGV4Y2VwdGlvbiAqLwogICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CkBAIC04ODUsOCArODU3LDkgQEAKICAgICAgICAgcmV0dXJuIHJlc3R1cGxlOwogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgeworICAgICAgICBQeU9iamVjdCAqc3RyOwogICAgICAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgICAgICBQeV9VTklDT0RFIGNoWzRdOyAvKiBkZWNvZGUgdXAgdG8gNCBiYWQgYnl0ZXMuICovCisgICAgICAgIFB5X1VDUzIgY2hbNF07IC8qIGRlY29kZSB1cCB0byA0IGJhZCBieXRlcy4gKi8KICAgICAgICAgaW50IGNvbnN1bWVkID0gMDsKICAgICAgICAgaWYgKFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTExLDcgKzg4NCwxMCBAQAogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZXhjKSwgZXhjKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIodSNuKSIsIGNoLCBjb25zdW1lZCwgc3RhcnQrY29uc3VtZWQpOworICAgICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV8yQllURV9LSU5ELCBjaCwgY29uc3VtZWQpOworICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCBzdHIsIHN0YXJ0K2NvbnN1bWVkKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CkBAIC0xMDQ4LDcgKzEwMjQsNyBAQAogICAgIGludGVycC0+Y29kZWNfZXJyb3JfcmVnaXN0cnkgPSBQeURpY3RfTmV3KCk7CiAKICAgICBpZiAoaW50ZXJwLT5jb2RlY19lcnJvcl9yZWdpc3RyeSkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKG1ldGhvZHMpL3NpemVvZihtZXRob2RzWzBdKTsgKytpKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9BUlJBWV9MRU5HVEgobWV0aG9kcyk7ICsraSkgewogICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQeUNGdW5jdGlvbl9OZXcoJm1ldGhvZHNbaV0uZGVmLCBOVUxMKTsKICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICBpZiAoIWZ1bmMpCmRpZmYgLS1naXQgYS9QeXRob24vY29tcGlsZS5jIGIvUHl0aG9uL2NvbXBpbGUuYwppbmRleCBkNmY2NDBmLi5mZjU1MjIwIDEwMDY0NAotLS0gYS9QeXRob24vY29tcGlsZS5jCisrKyBiL1B5dGhvbi9jb21waWxlLmMKQEAgLTkwLDYgKzkwLDEzIEBACiAgICAgYmFzaWNibG9jayAqZmJfYmxvY2s7CiB9OwogCitlbnVtIHsKKyAgICBDT01QSUxFUl9TQ09QRV9NT0RVTEUsCisgICAgQ09NUElMRVJfU0NPUEVfQ0xBU1MsCisgICAgQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04sCisgICAgQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTiwKK307CisKIC8qIFRoZSBmb2xsb3dpbmcgaXRlbXMgY2hhbmdlIG9uIGVudHJ5IGFuZCBleGl0IG9mIGNvZGUgYmxvY2tzLgogICAgVGhleSBtdXN0IGJlIHNhdmVkIGFuZCByZXN0b3JlZCB3aGVuIHJldHVybmluZyB0byBhIGJsb2NrLgogKi8KQEAgLTk3LDYgKzEwNCw5IEBACiAgICAgUHlTVEVudHJ5T2JqZWN0ICp1X3N0ZTsKIAogICAgIFB5T2JqZWN0ICp1X25hbWU7CisgICAgUHlPYmplY3QgKnVfcXVhbG5hbWU7ICAvKiBkb3Qtc2VwYXJhdGVkIHF1YWxpZmllZCBuYW1lIChsYXp5KSAqLworICAgIGludCB1X3Njb3BlX3R5cGU7CisKICAgICAvKiBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgZGljdHMgdGhhdCBtYXAgb2JqZWN0cyB0bwogICAgICAgIHRoZSBpbmRleCBvZiB0aGVtIGluIGNvX1hYWC4gICAgICBUaGUgaW5kZXggaXMgdXNlZCBhcwogICAgICAgIHRoZSBhcmd1bWVudCBmb3Igb3Bjb2RlcyB0aGF0IHJlZmVyIHRvIHRob3NlIGNvbGxlY3Rpb25zLgpAQCAtMTM1LDYgKzE0NSw3IEBACiAKIHN0cnVjdCBjb21waWxlciB7CiAgICAgY29uc3QgY2hhciAqY19maWxlbmFtZTsKKyAgICBQeU9iamVjdCAqY19maWxlbmFtZV9vYmo7CiAgICAgc3RydWN0IHN5bXRhYmxlICpjX3N0OwogICAgIFB5RnV0dXJlRmVhdHVyZXMgKmNfZnV0dXJlOyAvKiBwb2ludGVyIHRvIG1vZHVsZSdzIF9fZnV0dXJlX18gKi8KICAgICBQeUNvbXBpbGVyRmxhZ3MgKmNfZmxhZ3M7CkBAIC0xNDgsNyArMTU5LDcgQEAKICAgICBQeUFyZW5hICpjX2FyZW5hOyAgICAgICAgICAgIC8qIHBvaW50ZXIgdG8gbWVtb3J5IGFsbG9jYXRpb24gYXJlbmEgKi8KIH07CiAKLXN0YXRpYyBpbnQgY29tcGlsZXJfZW50ZXJfc2NvcGUoc3RydWN0IGNvbXBpbGVyICosIGlkZW50aWZpZXIsIHZvaWQgKiwgaW50KTsKK3N0YXRpYyBpbnQgY29tcGlsZXJfZW50ZXJfc2NvcGUoc3RydWN0IGNvbXBpbGVyICosIGlkZW50aWZpZXIsIGludCwgdm9pZCAqLCBpbnQpOwogc3RhdGljIHZvaWQgY29tcGlsZXJfZnJlZShzdHJ1Y3QgY29tcGlsZXIgKik7CiBzdGF0aWMgYmFzaWNibG9jayAqY29tcGlsZXJfbmV3X2Jsb2NrKHN0cnVjdCBjb21waWxlciAqKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfbmV4dF9pbnN0cihzdHJ1Y3QgY29tcGlsZXIgKiwgYmFzaWNibG9jayAqKTsKQEAgLTE3OCwxMiArMTg5LDEzIEBACiBzdGF0aWMgaW50IGlucGxhY2VfYmlub3Aoc3RydWN0IGNvbXBpbGVyICosIG9wZXJhdG9yX3R5KTsKIHN0YXRpYyBpbnQgZXhwcl9jb25zdGFudChzdHJ1Y3QgY29tcGlsZXIgKiwgZXhwcl90eSk7CiAKLXN0YXRpYyBpbnQgY29tcGlsZXJfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CitzdGF0aWMgaW50IGNvbXBpbGVyX3dpdGgoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHksIGludCk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgaW50IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgc3RhcmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkga3dhcmdzKTsKK3N0YXRpYyBpbnQgY29tcGlsZXJfdHJ5X2V4Y2VwdChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CiAKIHN0YXRpYyBQeUNvZGVPYmplY3QgKmFzc2VtYmxlKHN0cnVjdCBjb21waWxlciAqLCBpbnQgYWRkTm9uZSk7CiBzdGF0aWMgUHlPYmplY3QgKl9fZG9jX187CkBAIC0xOTUsMTYgKzIwNywxNyBAQAogewogICAgIC8qIE5hbWUgbWFuZ2xpbmc6IF9fcHJpdmF0ZSBiZWNvbWVzIF9jbGFzc25hbWVfX3ByaXZhdGUuCiAgICAgICAgVGhpcyBpcyBpbmRlcGVuZGVudCBmcm9tIGhvdyB0aGUgbmFtZSBpcyB1c2VkLiAqLwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnAsICpuYW1lID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaWRlbnQpOwotICAgIFB5X1VOSUNPREUgKmJ1ZmZlcjsKLSAgICBzaXplX3QgbmxlbiwgcGxlbjsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIHNpemVfdCBubGVuLCBwbGVuLCBpcHJpdjsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CiAgICAgaWYgKHByaXZhdGVvYmogPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHByaXZhdGVvYmopIHx8Ci0gICAgICAgIG5hbWUgPT0gTlVMTCB8fCBuYW1lWzBdICE9ICdfJyB8fCBuYW1lWzFdICE9ICdfJykgeworICAgICAgICBQeVVuaWNvZGVfUkVBRF9DSEFSKGlkZW50LCAwKSAhPSAnXycgfHwKKyAgICAgICAgUHlVbmljb2RlX1JFQURfQ0hBUihpZGVudCwgMSkgIT0gJ18nKSB7CiAgICAgICAgIFB5X0lOQ1JFRihpZGVudCk7CiAgICAgICAgIHJldHVybiBpZGVudDsKICAgICB9Ci0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHByaXZhdGVvYmopOwotICAgIG5sZW4gPSBQeV9VTklDT0RFX3N0cmxlbihuYW1lKTsKKyAgICBubGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaWRlbnQpOworICAgIHBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwcml2YXRlb2JqKTsKICAgICAvKiBEb24ndCBtYW5nbGUgX19pZF9fIG9yIG5hbWVzIHdpdGggZG90cy4KIAogICAgICAgIFRoZSBvbmx5IHRpbWUgYSBuYW1lIHdpdGggYSBkb3QgY2FuIG9jY3VyIGlzIHdoZW4KQEAgLTIxNCwzMiArMjI3LDQ0IEBACiAgICAgICAgVE9ETyhqaHlsdG9uKTogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBzdXBwb3J0CiAgICAgICAgbWFuZ2xpbmcgb2YgdGhlIG1vZHVsZSBuYW1lLCBlLmcuIF9fTS5YLgogICAgICovCi0gICAgaWYgKChuYW1lW25sZW4tMV0gPT0gJ18nICYmIG5hbWVbbmxlbi0yXSA9PSAnXycpCi0gICAgICAgIHx8IFB5X1VOSUNPREVfc3RyY2hyKG5hbWUsICcuJykpIHsKKyAgICBpZiAoKFB5VW5pY29kZV9SRUFEX0NIQVIoaWRlbnQsIG5sZW4tMSkgPT0gJ18nICYmCisgICAgICAgICBQeVVuaWNvZGVfUkVBRF9DSEFSKGlkZW50LCBubGVuLTIpID09ICdfJykgfHwKKyAgICAgICAgUHlVbmljb2RlX0ZpbmRDaGFyKGlkZW50LCAnLicsIDAsIG5sZW4sIDEpICE9IC0xKSB7CiAgICAgICAgIFB5X0lOQ1JFRihpZGVudCk7CiAgICAgICAgIHJldHVybiBpZGVudDsgLyogRG9uJ3QgbWFuZ2xlIF9fd2hhdGV2ZXJfXyAqLwogICAgIH0KICAgICAvKiBTdHJpcCBsZWFkaW5nIHVuZGVyc2NvcmVzIGZyb20gY2xhc3MgbmFtZSAqLwotICAgIHdoaWxlICgqcCA9PSAnXycpCi0gICAgICAgIHArKzsKLSAgICBpZiAoKnAgPT0gMCkgeworICAgIGlwcml2ID0gMDsKKyAgICB3aGlsZSAoUHlVbmljb2RlX1JFQURfQ0hBUihwcml2YXRlb2JqLCBpcHJpdikgPT0gJ18nKQorICAgICAgICBpcHJpdisrOworICAgIGlmIChpcHJpdiA9PSBwbGVuKSB7CiAgICAgICAgIFB5X0lOQ1JFRihpZGVudCk7CiAgICAgICAgIHJldHVybiBpZGVudDsgLyogRG9uJ3QgbWFuZ2xlIGlmIGNsYXNzIGlzIGp1c3QgdW5kZXJzY29yZXMgKi8KICAgICB9Ci0gICAgcGxlbiA9IFB5X1VOSUNPREVfc3RybGVuKHApOworICAgIHBsZW4gLT0gaXByaXY7CiAKICAgICBhc3NlcnQoMSA8PSBQWV9TU0laRV9UX01BWCAtIG5sZW4pOwogICAgIGFzc2VydCgxICsgbmxlbiA8PSBQWV9TU0laRV9UX01BWCAtIHBsZW4pOwogCi0gICAgaWRlbnQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMSArIG5sZW4gKyBwbGVuKTsKLSAgICBpZiAoIWlkZW50KQorICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoaWRlbnQpOworICAgIGlmIChQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocHJpdmF0ZW9iaikgPiBtYXhjaGFyKQorICAgICAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHByaXZhdGVvYmopOworCisgICAgcmVzdWx0ID0gUHlVbmljb2RlX05ldygxICsgbmxlbiArIHBsZW4sIG1heGNoYXIpOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gMDsKLSAgICAvKiBpZGVudCA9ICJfIiArIHBbOnBsZW5dICsgbmFtZSAjIGkuZS4gMStwbGVuK25sZW4gYnl0ZXMgKi8KLSAgICBidWZmZXIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShpZGVudCk7Ci0gICAgYnVmZmVyWzBdID0gJ18nOwotICAgIFB5X1VOSUNPREVfc3RybmNweShidWZmZXIrMSwgcCwgcGxlbik7Ci0gICAgUHlfVU5JQ09ERV9zdHJjcHkoYnVmZmVyKzErcGxlbiwgbmFtZSk7Ci0gICAgcmV0dXJuIGlkZW50OworICAgIC8qIGlkZW50ID0gIl8iICsgcHJpdltpcHJpdjpdICsgaWRlbnQgIyBpLmUuIDErcGxlbitubGVuIGJ5dGVzICovCisgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHJlc3VsdCksIFB5VW5pY29kZV9EQVRBKHJlc3VsdCksIDAsICdfJyk7CisgICAgaWYgKFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycyhyZXN1bHQsIDEsIHByaXZhdGVvYmosIGlwcml2LCBwbGVuKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgcGxlbisxLCBpZGVudCwgMCwgbmxlbikgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXN1bHQsIDEpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgaW50CkBAIC0yNzIsNiArMjk3LDkgQEAKICAgICBpZiAoIWNvbXBpbGVyX2luaXQoJmMpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjLmNfZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICBjLmNfZmlsZW5hbWVfb2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChmaWxlbmFtZSk7CisgICAgaWYgKCFjLmNfZmlsZW5hbWVfb2JqKQorICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgYy5jX2FyZW5hID0gYXJlbmE7CiAgICAgYy5jX2Z1dHVyZSA9IFB5RnV0dXJlX0Zyb21BU1QobW9kLCBmaWxlbmFtZSk7CiAgICAgaWYgKGMuY19mdXR1cmUgPT0gTlVMTCkKQEAgLTMyNCw2ICszNTIsOCBAQAogICAgICAgICBQeVN5bXRhYmxlX0ZyZWUoYy0+Y19zdCk7CiAgICAgaWYgKGMtPmNfZnV0dXJlKQogICAgICAgICBQeU9iamVjdF9GcmVlKGMtPmNfZnV0dXJlKTsKKyAgICBpZiAoYy0+Y19maWxlbmFtZV9vYmopCisgICAgICAgIFB5X0RFQ1JFRihjLT5jX2ZpbGVuYW1lX29iaik7CiAgICAgUHlfREVDUkVGKGMtPmNfc3RhY2spOwogfQogCkBAIC00NTgsNiArNDg4LDcgQEAKICAgICB9CiAgICAgUHlfQ0xFQVIodS0+dV9zdGUpOwogICAgIFB5X0NMRUFSKHUtPnVfbmFtZSk7CisgICAgUHlfQ0xFQVIodS0+dV9xdWFsbmFtZSk7CiAgICAgUHlfQ0xFQVIodS0+dV9jb25zdHMpOwogICAgIFB5X0NMRUFSKHUtPnVfbmFtZXMpOwogICAgIFB5X0NMRUFSKHUtPnVfdmFybmFtZXMpOwpAQCAtNDY4LDggKzQ5OSw4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBpbGVyX2VudGVyX3Njb3BlKHN0cnVjdCBjb21waWxlciAqYywgaWRlbnRpZmllciBuYW1lLCB2b2lkICprZXksCi0gICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vKQorY29tcGlsZXJfZW50ZXJfc2NvcGUoc3RydWN0IGNvbXBpbGVyICpjLCBpZGVudGlmaWVyIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgc2NvcGVfdHlwZSwgdm9pZCAqa2V5LCBpbnQgbGluZW5vKQogewogICAgIHN0cnVjdCBjb21waWxlcl91bml0ICp1OwogCkBAIC00ODAsNiArNTExLDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIG1lbXNldCh1LCAwLCBzaXplb2Yoc3RydWN0IGNvbXBpbGVyX3VuaXQpKTsKKyAgICB1LT51X3Njb3BlX3R5cGUgPSBzY29wZV90eXBlOwogICAgIHUtPnVfYXJnY291bnQgPSAwOwogICAgIHUtPnVfa3dvbmx5YXJnY291bnQgPSAwOwogICAgIHUtPnVfc3RlID0gUHlTeW10YWJsZV9Mb29rdXAoYy0+Y19zdCwga2V5KTsKQEAgLTU2Nyw2ICs1OTksNTkgQEAKIAogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY29tcGlsZXJfc2NvcGVfcXVhbG5hbWUoc3RydWN0IGNvbXBpbGVyICpjKQoreworICAgIFB5X3NzaXplX3Qgc3RhY2tfc2l6ZSwgaTsKKyAgICBfUHlfc3RhdGljX3N0cmluZyhkb3QsICIuIik7CisgICAgX1B5X3N0YXRpY19zdHJpbmcobG9jYWxzLCAiPGxvY2Fscz4iKTsKKyAgICBzdHJ1Y3QgY29tcGlsZXJfdW5pdCAqdTsKKyAgICBQeU9iamVjdCAqY2Fwc3VsZSwgKm5hbWUsICpzZXEsICpkb3Rfc3RyLCAqbG9jYWxzX3N0cjsKKworICAgIHUgPSBjLT51OworICAgIGlmICh1LT51X3F1YWxuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKHUtPnVfcXVhbG5hbWUpOworICAgICAgICByZXR1cm4gdS0+dV9xdWFsbmFtZTsKKyAgICB9CisKKyAgICBzZXEgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChzZXEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdGFja19zaXplID0gUHlMaXN0X0dFVF9TSVpFKGMtPmNfc3RhY2spOworICAgIGZvciAoaSA9IDA7IGkgPCBzdGFja19zaXplOyBpKyspIHsKKyAgICAgICAgY2Fwc3VsZSA9IFB5TGlzdF9HRVRfSVRFTShjLT5jX3N0YWNrLCBpKTsKKyAgICAgICAgdSA9IChzdHJ1Y3QgY29tcGlsZXJfdW5pdCAqKVB5Q2Fwc3VsZV9HZXRQb2ludGVyKGNhcHN1bGUsIENPTVBJTEVSX0NBUFNVTEVfTkFNRV9DT01QSUxFUl9VTklUKTsKKyAgICAgICAgYXNzZXJ0KHUpOworICAgICAgICBpZiAodS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX01PRFVMRSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChzZXEsIHUtPnVfbmFtZSkpCisgICAgICAgICAgICBnb3RvIF9lcnJvcjsKKyAgICAgICAgaWYgKHUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9GVU5DVElPTikgeworICAgICAgICAgICAgbG9jYWxzX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZsb2NhbHMpOworICAgICAgICAgICAgaWYgKGxvY2Fsc19zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIF9lcnJvcjsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHNlcSwgbG9jYWxzX3N0cikpCisgICAgICAgICAgICAgICAgZ290byBfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgdSA9IGMtPnU7CisgICAgaWYgKFB5TGlzdF9BcHBlbmQoc2VxLCB1LT51X25hbWUpKQorICAgICAgICBnb3RvIF9lcnJvcjsKKyAgICBkb3Rfc3RyID0gX1B5VW5pY29kZV9Gcm9tSWQoJmRvdCk7CisgICAgaWYgKGRvdF9zdHIgPT0gTlVMTCkKKyAgICAgICAgZ290byBfZXJyb3I7CisgICAgbmFtZSA9IFB5VW5pY29kZV9Kb2luKGRvdF9zdHIsIHNlcSk7CisgICAgUHlfREVDUkVGKHNlcSk7CisgICAgdS0+dV9xdWFsbmFtZSA9IG5hbWU7CisgICAgUHlfWElOQ1JFRihuYW1lKTsKKyAgICByZXR1cm4gbmFtZTsKKworX2Vycm9yOgorICAgIFB5X1hERUNSRUYoc2VxKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogLyogQWxsb2NhdGUgYSBuZXcgYmxvY2sgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gaXQuCiAgICBSZXR1cm5zIE5VTEwgb24gZXJyb3IuCiAqLwpAQCAtNzc3LDcgKzg2Miw4IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGNhc2UgWUlFTERfVkFMVUU6CiAgICAgICAgICAgICByZXR1cm4gMDsKLQorICAgICAgICBjYXNlIFlJRUxEX0ZST006CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGNhc2UgUE9QX0JMT0NLOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgUE9QX0VYQ0VQVDoKQEAgLTg2Myw5ICs5NDksOSBAQAogICAgICAgICBjYXNlIENBTExfRlVOQ1RJT05fVkFSX0tXOgogICAgICAgICAgICAgcmV0dXJuIC1OQVJHUyhvcGFyZyktMjsKICAgICAgICAgY2FzZSBNQUtFX0ZVTkNUSU9OOgotICAgICAgICAgICAgcmV0dXJuIC1OQVJHUyhvcGFyZykgLSAoKG9wYXJnID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICAgICByZXR1cm4gLTEgLU5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKICAgICAgICAgY2FzZSBNQUtFX0NMT1NVUkU6Ci0gICAgICAgICAgICByZXR1cm4gLTEgLSBOQVJHUyhvcGFyZykgLSAoKG9wYXJnID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICAgICByZXR1cm4gLTIgLSBOQVJHUyhvcGFyZykgLSAoKG9wYXJnID4+IDE2KSAmIDB4ZmZmZik7CiAjdW5kZWYgTkFSR1MKICAgICAgICAgY2FzZSBCVUlMRF9TTElDRToKICAgICAgICAgICAgIGlmIChvcGFyZyA9PSAzKQpAQCAtMTE5NSw3ICsxMjgxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAvKiBVc2UgMCBmb3IgZmlyc3RsaW5lbm8gaW5pdGlhbGx5LCB3aWxsIGZpeHVwIGluIGFzc2VtYmxlKCkuICovCi0gICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBtb2R1bGUsIG1vZCwgMCkpCisgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBtb2R1bGUsIENPTVBJTEVSX1NDT1BFX01PRFVMRSwgbW9kLCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc3dpdGNoIChtb2QtPmtpbmQpIHsKICAgICBjYXNlIE1vZHVsZV9raW5kOgpAQCAtMTI3MSwxMSArMTM1NywxNSBAQAogfQogCiBzdGF0aWMgaW50Ci1jb21waWxlcl9tYWtlX2Nsb3N1cmUoc3RydWN0IGNvbXBpbGVyICpjLCBQeUNvZGVPYmplY3QgKmNvLCBpbnQgYXJncykKK2NvbXBpbGVyX21ha2VfY2xvc3VyZShzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5Q29kZU9iamVjdCAqY28sIGludCBhcmdzLCBQeU9iamVjdCAqcXVhbG5hbWUpCiB7CiAgICAgaW50IGksIGZyZWUgPSBQeUNvZGVfR2V0TnVtRnJlZShjbyk7CisgICAgaWYgKHF1YWxuYW1lID09IE5VTEwpCisgICAgICAgIHF1YWxuYW1lID0gY28tPmNvX25hbWU7CisKICAgICBpZiAoZnJlZSA9PSAwKSB7CiAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgKFB5T2JqZWN0KiljbywgY29uc3RzKTsKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBxdWFsbmFtZSwgY29uc3RzKTsKICAgICAgICAgQURET1BfSShjLCBNQUtFX0ZVTkNUSU9OLCBhcmdzKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtMTMxMiw2ICsxNDAyLDcgQEAKICAgICB9CiAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgZnJlZSk7CiAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCAoUHlPYmplY3QqKWNvLCBjb25zdHMpOworICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgcXVhbG5hbWUsIGNvbnN0cyk7CiAgICAgQURET1BfSShjLCBNQUtFX0NMT1NVUkUsIGFyZ3MpOwogICAgIHJldHVybiAxOwogfQpAQCAtMTQ1Nyw3ICsxNTQ4LDcgQEAKIGNvbXBpbGVyX2Z1bmN0aW9uKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQogewogICAgIFB5Q29kZU9iamVjdCAqY287Ci0gICAgUHlPYmplY3QgKmZpcnN0X2NvbnN0ID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqcXVhbG5hbWUsICpmaXJzdF9jb25zdCA9IFB5X05vbmU7CiAgICAgYXJndW1lbnRzX3R5IGFyZ3MgPSBzLT52LkZ1bmN0aW9uRGVmLmFyZ3M7CiAgICAgZXhwcl90eSByZXR1cm5zID0gcy0+di5GdW5jdGlvbkRlZi5yZXR1cm5zOwogICAgIGFzZGxfc2VxKiBkZWNvcyA9IHMtPnYuRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3Q7CkBAIC0xNDgzLDcgKzE1NzQsOCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICBhc3NlcnQoKG51bV9hbm5vdGF0aW9ucyAmIDB4RkZGRikgPT0gbnVtX2Fubm90YXRpb25zKTsKIAotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgcy0+di5GdW5jdGlvbkRlZi5uYW1lLCAodm9pZCAqKXMsCisgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBzLT52LkZ1bmN0aW9uRGVmLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT01QSUxFUl9TQ09QRV9GVU5DVElPTiwgKHZvaWQgKilzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE1MDUsMTQgKzE1OTcsMTkgQEAKICAgICAgICAgVklTSVRfSU5fU0NPUEUoYywgc3RtdCwgc3QpOwogICAgIH0KICAgICBjbyA9IGFzc2VtYmxlKGMsIDEpOworICAgIHF1YWxuYW1lID0gY29tcGlsZXJfc2NvcGVfcXVhbG5hbWUoYyk7CiAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKLSAgICBpZiAoY28gPT0gTlVMTCkKKyAgICBpZiAocXVhbG5hbWUgPT0gTlVMTCB8fCBjbyA9PSBOVUxMKSB7CisgICAgICAgIFB5X1hERUNSRUYocXVhbG5hbWUpOworICAgICAgICBQeV9YREVDUkVGKGNvKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgYXJnbGVuZ3RoID0gYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKTsKICAgICBhcmdsZW5ndGggfD0ga3dfZGVmYXVsdF9jb3VudCA8PCA4OwogICAgIGFyZ2xlbmd0aCB8PSBudW1fYW5ub3RhdGlvbnMgPDwgMTY7Ci0gICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBhcmdsZW5ndGgpOworICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoLCBxdWFsbmFtZSk7CisgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCiAgICAgLyogZGVjb3JhdG9ycyAqLwpAQCAtMTU0Nyw3ICsxNjQ0LDggQEAKICAgICAqLwogCiAgICAgLyogMS4gY29tcGlsZSB0aGUgY2xhc3MgYm9keSBpbnRvIGEgY29kZSBvYmplY3QgKi8KLSAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIHMtPnYuQ2xhc3NEZWYubmFtZSwgKHZvaWQgKilzLCBzLT5saW5lbm8pKQorICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgcy0+di5DbGFzc0RlZi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NUElMRVJfU0NPUEVfQ0xBU1MsICh2b2lkICopcywgcy0+bGluZW5vKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLyogdGhpcyBibG9jayByZXByZXNlbnRzIHdoYXQgd2UgZG8gaW4gdGhlIG5ldyBzY29wZSAqLwogICAgIHsKQEAgLTE1NzcsNiArMTY3NSwyMSBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIC8qIHN0b3JlIHRoZSBfX3F1YWxuYW1lX18gKi8KKyAgICAgICAgc3RyID0gY29tcGlsZXJfc2NvcGVfcXVhbG5hbWUoYyk7CisgICAgICAgIGlmICghc3RyKSB7CisgICAgICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBzdHIsIGNvbnN0cyk7CisgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICBzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19xdWFsbmFtZV9fIik7CisgICAgICAgIGlmICghc3RyIHx8ICFjb21waWxlcl9uYW1lb3AoYywgc3RyLCBTdG9yZSkpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKKyAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICAgICAgLyogY29tcGlsZSB0aGUgYm9keSBwcm9wZXIgKi8KICAgICAgICAgaWYgKCFjb21waWxlcl9ib2R5KGMsIHMtPnYuQ2xhc3NEZWYuYm9keSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CkBAIC0xNjEzLDcgKzE3MjYsNyBAQAogICAgIEFERE9QKGMsIExPQURfQlVJTERfQ0xBU1MpOwogCiAgICAgLyogMy4gbG9hZCBhIGZ1bmN0aW9uIChvciBjbG9zdXJlKSBtYWRlIGZyb20gdGhlIGNvZGUgb2JqZWN0ICovCi0gICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCAwKTsKKyAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIDAsIE5VTEwpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKICAgICAvKiA0LiBsb2FkIGNsYXNzIG5hbWUgKi8KQEAgLTE2NjQsNiArMTc3Nyw3IEBACiBjb21waWxlcl9sYW1iZGEoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKKyAgICBQeU9iamVjdCAqcXVhbG5hbWU7CiAgICAgc3RhdGljIGlkZW50aWZpZXIgbmFtZTsKICAgICBpbnQga3dfZGVmYXVsdF9jb3VudCA9IDAsIGFyZ2xlbmd0aDsKICAgICBhcmd1bWVudHNfdHkgYXJncyA9IGUtPnYuTGFtYmRhLmFyZ3M7CkBAIC0xNjgzLDcgKzE3OTcsOCBAQAogICAgIH0KICAgICBpZiAoYXJncy0+ZGVmYXVsdHMpCiAgICAgICAgIFZJU0lUX1NFUShjLCBleHByLCBhcmdzLT5kZWZhdWx0cyk7Ci0gICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCAodm9pZCAqKWUsIGUtPmxpbmVubykpCisgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCBDT01QSUxFUl9TQ09QRV9GVU5DVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopZSwgZS0+bGluZW5vKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiBNYWtlIE5vbmUgdGhlIGZpcnN0IGNvbnN0YW50LCBzbyB0aGUgbGFtYmRhIGNhbid0IGhhdmUgYQpAQCAtMTcwMSwxMyArMTgxNiwxNSBAQAogICAgICAgICBBRERPUF9JTl9TQ09QRShjLCBSRVRVUk5fVkFMVUUpOwogICAgIH0KICAgICBjbyA9IGFzc2VtYmxlKGMsIDEpOworICAgIHF1YWxuYW1lID0gY29tcGlsZXJfc2NvcGVfcXVhbG5hbWUoYyk7CiAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKLSAgICBpZiAoY28gPT0gTlVMTCkKKyAgICBpZiAocXVhbG5hbWUgPT0gTlVMTCB8fCBjbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGFyZ2xlbmd0aCA9IGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cyk7CiAgICAgYXJnbGVuZ3RoIHw9IGt3X2RlZmF1bHRfY291bnQgPDwgODsKLSAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBhcmdsZW5ndGgsIHF1YWxuYW1lKTsKKyAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKICAgICByZXR1cm4gMTsKQEAgLTE5MTYsNyArMjAzMywxMyBAQAogICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGJvZHkpOwogICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRklOQUxMWV9UUlksIGJvZHkpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnlGaW5hbGx5LmJvZHkpOworICAgIGlmIChzLT52LlRyeS5oYW5kbGVycyAmJiBhc2RsX3NlcV9MRU4ocy0+di5UcnkuaGFuZGxlcnMpKSB7CisgICAgICAgIGlmICghY29tcGlsZXJfdHJ5X2V4Y2VwdChjLCBzKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5LmJvZHkpOworICAgIH0KICAgICBBRERPUChjLCBQT1BfQkxPQ0spOwogICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRklOQUxMWV9UUlksIGJvZHkpOwogCkBAIC0xOTI0LDcgKzIwNDcsNyBAQAogICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGVuZCk7CiAgICAgaWYgKCFjb21waWxlcl9wdXNoX2ZibG9jayhjLCBGSU5BTExZX0VORCwgZW5kKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5RmluYWxseS5maW5hbGJvZHkpOworICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeS5maW5hbGJvZHkpOwogICAgIEFERE9QKGMsIEVORF9GSU5BTExZKTsKICAgICBjb21waWxlcl9wb3BfZmJsb2NrKGMsIEZJTkFMTFlfRU5ELCBlbmQpOwogCkBAIC0xOTc4LDE1ICsyMTAxLDE1IEBACiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYm9keSk7CiAgICAgaWYgKCFjb21waWxlcl9wdXNoX2ZibG9jayhjLCBFWENFUFQsIGJvZHkpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnlFeGNlcHQuYm9keSk7CisgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5LmJvZHkpOwogICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7CiAgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBFWENFUFQsIGJvZHkpOwogICAgIEFERE9QX0pSRUwoYywgSlVNUF9GT1JXQVJELCBvcmVsc2UpOwotICAgIG4gPSBhc2RsX3NlcV9MRU4ocy0+di5UcnlFeGNlcHQuaGFuZGxlcnMpOworICAgIG4gPSBhc2RsX3NlcV9MRU4ocy0+di5UcnkuaGFuZGxlcnMpOwogICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGV4Y2VwdCk7CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICBleGNlcHRoYW5kbGVyX3R5IGhhbmRsZXIgPSAoZXhjZXB0aGFuZGxlcl90eSlhc2RsX3NlcV9HRVQoCi0gICAgICAgICAgICBzLT52LlRyeUV4Y2VwdC5oYW5kbGVycywgaSk7CisgICAgICAgICAgICBzLT52LlRyeS5oYW5kbGVycywgaSk7CiAgICAgICAgIGlmICghaGFuZGxlci0+di5FeGNlcHRIYW5kbGVyLnR5cGUgJiYgaSA8IG4tMSkKICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiZGVmYXVsdCAnZXhjZXB0OicgbXVzdCBiZSBsYXN0Iik7CiAgICAgICAgIGMtPnUtPnVfbGluZW5vX3NldCA9IDA7CkBAIC0yMDczLDEyICsyMTk2LDIxIEBACiAgICAgfQogICAgIEFERE9QKGMsIEVORF9GSU5BTExZKTsKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBvcmVsc2UpOwotICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeUV4Y2VwdC5vcmVsc2UpOworICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeS5vcmVsc2UpOwogICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGVuZCk7CiAgICAgcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBpbnQKK2NvbXBpbGVyX3RyeShzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykgeworICAgIGlmIChzLT52LlRyeS5maW5hbGJvZHkgJiYgYXNkbF9zZXFfTEVOKHMtPnYuVHJ5LmZpbmFsYm9keSkpCisgICAgICAgIHJldHVybiBjb21waWxlcl90cnlfZmluYWxseShjLCBzKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBjb21waWxlcl90cnlfZXhjZXB0KGMsIHMpOworfQorCisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX2ltcG9ydF9hcyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGlkZW50aWZpZXIgbmFtZSwgaWRlbnRpZmllciBhc25hbWUpCiB7CiAgICAgLyogVGhlIElNUE9SVF9OQU1FIG9wY29kZSB3YXMgYWxyZWFkeSBnZW5lcmF0ZWQuICBUaGlzIGZ1bmN0aW9uCkBAIC0yMDg3LDIyICsyMjE5LDI3IEBACiAgICAgICAgSWYgdGhlcmUgaXMgYSBkb3QgaW4gbmFtZSwgd2UgbmVlZCB0byBzcGxpdCBpdCBhbmQgZW1pdCBhCiAgICAgICAgTE9BRF9BVFRSIGZvciBlYWNoIG5hbWUuCiAgICAgKi8KLSAgICBjb25zdCBQeV9VTklDT0RFICpzcmMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lKTsKLSAgICBjb25zdCBQeV9VTklDT0RFICpkb3QgPSBQeV9VTklDT0RFX3N0cmNocihzcmMsICcuJyk7Ci0gICAgaWYgKGRvdCkgeworICAgIFB5X3NzaXplX3QgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKG5hbWUsICcuJywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSwgMSk7CisgICAgaWYgKGRvdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChkb3QgIT0gLTEpIHsKICAgICAgICAgLyogQ29uc3VtZSB0aGUgYmFzZSBtb2R1bGUgbmFtZSB0byBnZXQgdGhlIGZpcnN0IGF0dHJpYnV0ZSAqLwotICAgICAgICBzcmMgPSBkb3QgKyAxOwotICAgICAgICB3aGlsZSAoZG90KSB7Ci0gICAgICAgICAgICAvKiBOQiBzcmMgaXMgb25seSBkZWZpbmVkIHdoZW4gZG90ICE9IE5VTEwgKi8KKyAgICAgICAgUHlfc3NpemVfdCBwb3MgPSBkb3QgKyAxOworICAgICAgICB3aGlsZSAoZG90ICE9IC0xKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqYXR0cjsKLSAgICAgICAgICAgIGRvdCA9IFB5X1VOSUNPREVfc3RyY2hyKHNyYywgJy4nKTsKLSAgICAgICAgICAgIGF0dHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QgPyBkb3QgLSBzcmMgOiBQeV9VTklDT0RFX3N0cmxlbihzcmMpKTsKKyAgICAgICAgICAgIGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihuYW1lLCAnLicsIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSwgMSk7CisgICAgICAgICAgICBpZiAoZG90ID09IC0yKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGF0dHIgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKG5hbWUsIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3QgIT0gLTEpID8gZG90IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpKTsKICAgICAgICAgICAgIGlmICghYXR0cikKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQVRUUiwgYXR0ciwgbmFtZXMpOwogICAgICAgICAgICAgUHlfREVDUkVGKGF0dHIpOwotICAgICAgICAgICAgc3JjID0gZG90ICsgMTsKKyAgICAgICAgICAgIHBvcyA9IGRvdCArIDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGNvbXBpbGVyX25hbWVvcChjLCBhc25hbWUsIFN0b3JlKTsKQEAgLTIxNDEsMTMgKzIyNzgsMTIgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlkZW50aWZpZXIgdG1wID0gYWxpYXMtPm5hbWU7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpiYXNlID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYWxpYXMtPm5hbWUpOwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqZG90ID0gUHlfVU5JQ09ERV9zdHJjaHIoYmFzZSwgJy4nKTsKLSAgICAgICAgICAgIGlmIChkb3QpCi0gICAgICAgICAgICAgICAgdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCAtIGJhc2UpOworICAgICAgICAgICAgUHlfc3NpemVfdCBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIoCisgICAgICAgICAgICAgICAgYWxpYXMtPm5hbWUsICcuJywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoYWxpYXMtPm5hbWUpLCAxKTsKKyAgICAgICAgICAgIGlmIChkb3QgIT0gLTEpCisgICAgICAgICAgICAgICAgdG1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhhbGlhcy0+bmFtZSwgMCwgZG90KTsKICAgICAgICAgICAgIHIgPSBjb21waWxlcl9uYW1lb3AoYywgdG1wLCBTdG9yZSk7Ci0gICAgICAgICAgICBpZiAoZG90KSB7CisgICAgICAgICAgICBpZiAoZG90ICE9IC0xKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXIpCkBAIC0yMjEwLDcgKzIzNDYsNyBAQAogICAgICAgICBhbGlhc190eSBhbGlhcyA9IChhbGlhc190eSlhc2RsX3NlcV9HRVQocy0+di5JbXBvcnRGcm9tLm5hbWVzLCBpKTsKICAgICAgICAgaWRlbnRpZmllciBzdG9yZV9uYW1lOwogCi0gICAgICAgIGlmIChpID09IDAgJiYgKlB5VW5pY29kZV9BU19VTklDT0RFKGFsaWFzLT5uYW1lKSA9PSAnKicpIHsKKyAgICAgICAgaWYgKGkgPT0gMCAmJiBQeVVuaWNvZGVfUkVBRF9DSEFSKGFsaWFzLT5uYW1lLCAwKSA9PSAnKicpIHsKICAgICAgICAgICAgIGFzc2VydChuID09IDEpOwogICAgICAgICAgICAgQURET1AoYywgSU1QT1JUX1NUQVIpOwogICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC0yMzI1LDEwICsyNDYxLDggQEAKICAgICAgICAgfQogICAgICAgICBBRERPUF9JKGMsIFJBSVNFX1ZBUkFSR1MsIG4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRyeUV4Y2VwdF9raW5kOgotICAgICAgICByZXR1cm4gY29tcGlsZXJfdHJ5X2V4Y2VwdChjLCBzKTsKLSAgICBjYXNlIFRyeUZpbmFsbHlfa2luZDoKLSAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3RyeV9maW5hbGx5KGMsIHMpOworICAgIGNhc2UgVHJ5X2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl90cnkoYywgcyk7CiAgICAgY2FzZSBBc3NlcnRfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Fzc2VydChjLCBzKTsKICAgICBjYXNlIEltcG9ydF9raW5kOgpAQCAtMjM1OSw3ICsyNDkzLDcgQEAKICAgICBjYXNlIENvbnRpbnVlX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9jb250aW51ZShjKTsKICAgICBjYXNlIFdpdGhfa2luZDoKLSAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3dpdGgoYywgcyk7CisgICAgICAgIHJldHVybiBjb21waWxlcl93aXRoKGMsIHMsIDApOwogICAgIH0KICAgICByZXR1cm4gMTsKIH0KQEAgLTI1MjYsNyArMjY2MCw3IEBACiAgICAgfQogCiAgICAgLyogWFhYIExlYXZlIGFzc2VydCBoZXJlLCBidXQgaGFuZGxlIF9fZG9jX18gYW5kIHRoZSBsaWtlIGJldHRlciAqLwotICAgIGFzc2VydChzY29wZSB8fCBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lKVswXSA9PSAnXycpOworICAgIGFzc2VydChzY29wZSB8fCBQeVVuaWNvZGVfUkVBRF9DSEFSKG5hbWUsIDApID09ICdfJyk7CiAKICAgICBzd2l0Y2ggKG9wdHlwZSkgewogICAgIGNhc2UgT1BfREVSRUY6CkBAIC0yOTA0LDExICszMDM4LDEzIEBACiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbyA9IE5VTEw7CiAgICAgZXhwcl90eSBvdXRlcm1vc3RfaXRlcjsKKyAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBOVUxMOwogCiAgICAgb3V0ZXJtb3N0X2l0ZXIgPSAoKGNvbXByZWhlbnNpb25fdHkpCiAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIDApKS0+aXRlcjsKIAotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgKHZvaWQgKillLCBlLT5saW5lbm8pKQorICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopZSwgZS0+bGluZW5vKSkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGlmICh0eXBlICE9IENPTVBfR0VORVhQKSB7CkBAIC0yOTQxLDEyICszMDc3LDE0IEBACiAgICAgfQogCiAgICAgY28gPSBhc3NlbWJsZShjLCAxKTsKKyAgICBxdWFsbmFtZSA9IGNvbXBpbGVyX3Njb3BlX3F1YWxuYW1lKGMpOwogICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7Ci0gICAgaWYgKGNvID09IE5VTEwpCisgICAgaWYgKHF1YWxuYW1lID09IE5VTEwgfHwgY28gPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGlmICghY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCAwKSkKKyAgICBpZiAoIWNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgMCwgcXVhbG5hbWUpKQogICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKIAogICAgIFZJU0lUKGMsIGV4cHIsIG91dGVybW9zdF9pdGVyKTsKQEAgLTI5NTYsNiArMzA5NCw3IEBACiBlcnJvcl9pbl9zY29wZToKICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwogZXJyb3I6CisgICAgUHlfWERFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfWERFQ1JFRihjbyk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zMDQ5LDggKzMxODgsNyBAQAogICAgICAgICByZXR1cm4gUHlPYmplY3RfSXNUcnVlKGUtPnYuU3RyLnMpOwogICAgIGNhc2UgTmFtZV9raW5kOgogICAgICAgICAvKiBvcHRpbWl6ZSBhd2F5IG5hbWVzIHRoYXQgY2FuJ3QgYmUgcmVhc3NpZ25lZCAqLwotICAgICAgICBpZCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKAotICAgICAgICAgICAgX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKGUtPnYuTmFtZS5pZCwgTlVMTCkpOworICAgICAgICBpZCA9IFB5VW5pY29kZV9Bc1VURjgoZS0+di5OYW1lLmlkKTsKICAgICAgICAgaWYgKHN0cmNtcChpZCwgIlRydWUiKSA9PSAwKSByZXR1cm4gMTsKICAgICAgICAgaWYgKHN0cmNtcChpZCwgIkZhbHNlIikgPT0gMCkgcmV0dXJuIDA7CiAgICAgICAgIGlmIChzdHJjbXAoaWQsICJOb25lIikgPT0gMCkgcmV0dXJuIDA7CkBAIC0zMDg2LDkgKzMyMjQsMTAgQEAKICAgICAgICBleGl0KCpleGMpCiAgKi8KIHN0YXRpYyBpbnQKLWNvbXBpbGVyX3dpdGgoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCitjb21waWxlcl93aXRoKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzLCBpbnQgcG9zKQogewogICAgIGJhc2ljYmxvY2sgKmJsb2NrLCAqZmluYWxseTsKKyAgICB3aXRoaXRlbV90eSBpdGVtID0gYXNkbF9zZXFfR0VUKHMtPnYuV2l0aC5pdGVtcywgcG9zKTsKIAogICAgIGFzc2VydChzLT5raW5kID09IFdpdGhfa2luZCk7CiAKQEAgLTMwOTgsNyArMzIzNyw3IEBACiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLyogRXZhbHVhdGUgRVhQUiAqLwotICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuV2l0aC5jb250ZXh0X2V4cHIpOworICAgIFZJU0lUKGMsIGV4cHIsIGl0ZW0tPmNvbnRleHRfZXhwcik7CiAgICAgQURET1BfSlJFTChjLCBTRVRVUF9XSVRILCBmaW5hbGx5KTsKIAogICAgIC8qIFNFVFVQX1dJVEggcHVzaGVzIGEgZmluYWxseSBibG9jay4gKi8KQEAgLTMxMDcsMTYgKzMyNDYsMjAgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKHMtPnYuV2l0aC5vcHRpb25hbF92YXJzKSB7Ci0gICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuV2l0aC5vcHRpb25hbF92YXJzKTsKKyAgICBpZiAoaXRlbS0+b3B0aW9uYWxfdmFycykgeworICAgICAgICBWSVNJVChjLCBleHByLCBpdGVtLT5vcHRpb25hbF92YXJzKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgLyogRGlzY2FyZCByZXN1bHQgZnJvbSBjb250ZXh0Ll9fZW50ZXJfXygpICovCiAgICAgICAgIEFERE9QKGMsIFBPUF9UT1ApOwogICAgIH0KIAotICAgIC8qIEJMT0NLIGNvZGUgKi8KLSAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5XaXRoLmJvZHkpOworICAgIHBvcysrOworICAgIGlmIChwb3MgPT0gYXNkbF9zZXFfTEVOKHMtPnYuV2l0aC5pdGVtcykpCisgICAgICAgIC8qIEJMT0NLIGNvZGUgKi8KKyAgICAgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuV2l0aC5ib2R5KQorICAgIGVsc2UgaWYgKCFjb21waWxlcl93aXRoKGMsIHMsIHBvcykpCisgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgIC8qIEVuZCBvZiB0cnkgYmxvY2s7IHN0YXJ0IHRoZSBmaW5hbGx5IGJsb2NrICovCiAgICAgQURET1AoYywgUE9QX0JMT0NLKTsKQEAgLTMxOTMsMTYgKzMzMzYsMjcgQEAKICAgICBjYXNlIERpY3RDb21wX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9kaWN0Y29tcChjLCBlKTsKICAgICBjYXNlIFlpZWxkX2tpbmQ6CisgICAgY2FzZSBZaWVsZEZyb21fa2luZDogeworICAgICAgICBleHByX3R5IHZhbHVlOwogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCcgb3V0c2lkZSBmdW5jdGlvbiIpOwotICAgICAgICBpZiAoZS0+di5ZaWVsZC52YWx1ZSkgewotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZS0+di5ZaWVsZC52YWx1ZSk7CisgICAgICAgIHZhbHVlID0gKGUtPmtpbmQgPT0gWWllbGRGcm9tX2tpbmQpID8gZS0+di5ZaWVsZEZyb20udmFsdWUgOiBlLT52LllpZWxkLnZhbHVlOworICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKICAgICAgICAgfQotICAgICAgICBBRERPUChjLCBZSUVMRF9WQUxVRSk7CisgICAgICAgIGlmIChlLT5raW5kID09IFlpZWxkRnJvbV9raW5kKSB7CisgICAgICAgICAgICBBRERPUChjLCBHRVRfSVRFUik7CisgICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFERE9QKGMsIFlJRUxEX1ZBTFVFKTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBDb21wYXJlX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9jb21wYXJlKGMsIGUpOwogICAgIGNhc2UgQ2FsbF9raW5kOgpAQCAtMzM4NSw3ICszNTM5LDcgQEAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2Vycm9yKHN0cnVjdCBjb21waWxlciAqYywgY29uc3QgY2hhciAqZXJyc3RyKQogewotICAgIFB5T2JqZWN0ICpsb2MsICpmaWxlbmFtZTsKKyAgICBQeU9iamVjdCAqbG9jOwogICAgIFB5T2JqZWN0ICp1ID0gTlVMTCwgKnYgPSBOVUxMOwogCiAgICAgbG9jID0gUHlFcnJfUHJvZ3JhbVRleHQoYy0+Y19maWxlbmFtZSwgYy0+dS0+dV9saW5lbm8pOwpAQCAtMzM5MywxNiArMzU0Nyw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgbG9jID0gUHlfTm9uZTsKICAgICB9Ci0gICAgaWYgKGMtPmNfZmlsZW5hbWUgIT0gTlVMTCkgewotICAgICAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYy0+Y19maWxlbmFtZSk7Ci0gICAgICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIGZpbGVuYW1lID0gUHlfTm9uZTsKLSAgICB9Ci0gICAgdSA9IFB5X0J1aWxkVmFsdWUoIihOaWlPKSIsIGZpbGVuYW1lLCBjLT51LT51X2xpbmVubywKKyAgICB1ID0gUHlfQnVpbGRWYWx1ZSgiKE9paU8pIiwgYy0+Y19maWxlbmFtZV9vYmosIGMtPnUtPnVfbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgIGMtPnUtPnVfY29sX29mZnNldCwgbG9jKTsKICAgICBpZiAoIXUpCiAgICAgICAgIGdvdG8gZXhpdDsKQEAgLTM5NTEsNyArNDA5Niw2IEBACiAgICAgUHlPYmplY3QgKmNvbnN0cyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWVzID0gTlVMTDsKICAgICBQeU9iamVjdCAqdmFybmFtZXMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpmcmVldmFycyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNlbGx2YXJzID0gTlVMTDsKQEAgLTM5NzUsMTAgKzQxMTksNiBAQAogICAgIGZyZWV2YXJzID0gZGljdF9rZXlzX2lub3JkZXIoYy0+dS0+dV9mcmVldmFycywgUHlUdXBsZV9TaXplKGNlbGx2YXJzKSk7CiAgICAgaWYgKCFmcmVldmFycykKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYy0+Y19maWxlbmFtZSk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgZ290byBlcnJvcjsKLQogICAgIG5sb2NhbHMgPSBQeURpY3RfU2l6ZShjLT51LT51X3Zhcm5hbWVzKTsKICAgICBmbGFncyA9IGNvbXB1dGVfY29kZV9mbGFncyhjKTsKICAgICBpZiAoZmxhZ3MgPCAwKQpAQCAtMzk5OCwxNCArNDEzOCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBubG9jYWxzLCBzdGFja2RlcHRoKGMpLCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGUsIGNvbnN0cywgbmFtZXMsIHZhcm5hbWVzLAogICAgICAgICAgICAgICAgICAgICBmcmVldmFycywgY2VsbHZhcnMsCi0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBjLT51LT51X25hbWUsCisgICAgICAgICAgICAgICAgICAgIGMtPmNfZmlsZW5hbWVfb2JqLCBjLT51LT51X25hbWUsCiAgICAgICAgICAgICAgICAgICAgIGMtPnUtPnVfZmlyc3RsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgIGEtPmFfbG5vdGFiKTsKICBlcnJvcjoKICAgICBQeV9YREVDUkVGKGNvbnN0cyk7CiAgICAgUHlfWERFQ1JFRihuYW1lcyk7CiAgICAgUHlfWERFQ1JFRih2YXJuYW1lcyk7Ci0gICAgUHlfWERFQ1JFRihmaWxlbmFtZSk7CiAgICAgUHlfWERFQ1JFRihuYW1lKTsKICAgICBQeV9YREVDUkVGKGZyZWV2YXJzKTsKICAgICBQeV9YREVDUkVGKGNlbGx2YXJzKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9jb25kdmFyLmggYi9QeXRob24vY29uZHZhci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNmJkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vY29uZHZhci5oCkBAIC0wLDAgKzEsMzkwIEBACisvKiAKKyAqIFBvcnRhYmxlIGNvbmRpdGlvbiB2YXJpYWJsZSBzdXBwb3J0IGZvciB3aW5kb3dzIGFuZCBwdGhyZWFkcy4KKyAqIEV2ZXJ5dGhpbmcgaXMgaW5saW5lLCB0aGlzIGhlYWRlciBjYW4gYmUgaW5jbHVkZWQgd2hlcmUgbmVlZGVkLgorICoKKyAqIEFQSXMgZ2VuZXJhbGx5IHJldHVybiAwIG9uIHN1Y2Nlc3MgYW5kIG5vbi16ZXJvIG9uIGVycm9yLAorICogYW5kIHRoZSBjYWxsZXIgbmVlZHMgdG8gdXNlIGl0cyBwbGF0Zm9ybSdzIGVycm9yIG1lY2hhbmlzbSB0bworICogZGlzY292ZXIgdGhlIGVycm9yIChlcnJubywgb3IgR2V0TGFzdEVycm9yKCkpCisgKgorICogTm90ZSB0aGF0IHNvbWUgaW1wbGVtZW50YXRpb25zIGNhbm5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEKKyAqIGNvbmRpdGlvbiB2YXJpYWJsZSB3YWl0IHRpbWUtb3V0IGFuZCBzdWNjZXNzZnVsIHdhaXQuIE1vc3Qgb2Z0ZW4KKyAqIHRoZSBkaWZmZXJlbmNlIGlzIG1vb3QgYW55d2F5IHNpbmNlIHRoZSB3YWl0IGNvbmRpdGlvbiBtdXN0IGJlCisgKiByZS1jaGVja2VkLgorICogUHlDT05EX1RJTUVEV0FJVCwgaW4gYWRkaXRpb24gdG8gcmV0dXJuaW5nIG5lZ2F0aXZlIG9uIGVycm9yLAorICogdGh1cyByZXR1cm5zIDAgb24gcmVndWxhciBzdWNjZXNzLCAxIG9uIHRpbWVvdXQKKyAqIG9yIDIgaWYgaXQgY2FuJ3QgdGVsbC4KKyAqCisgKiBUaGVyZSBhcmUgYXQgbGVhc3QgdHdvIGNhdmVhdHMgd2l0aCB1c2luZyB0aGVzZSBjb25kaXRpb24gdmFyaWFibGVzLAorICogZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhleSBtYXkgYmUgZW11bGF0ZWQgd2l0aCBTZW1hcGhvcmVzIG9uCisgKiBXaW5kb3dzOgorICogMSkgV2hpbGUgUHlDT05EX1NJR05BTCgpIHdpbGwgd2FrZSB1cCBhdCBsZWFzdCBvbmUgdGhyZWFkLCB3ZQorICogICAgY2Fubm90IGN1cnJlbnRseSBndWFyYW50ZWUgdGhhdCBpdCB3aWxsIGJlIG9uZSBvZiB0aGUgdGhyZWFkcworICogICAgYWxyZWFkeSB3YWl0aW5nIGluIGEgUHlDT05EX1dBSVQoKSBjYWxsLiAgSXQgX2NvdWxkXyBjYXVzZQorICogICAgdGhlIHdha2V1cCBvZiBhIHN1YnNlcXVlbnQgdGhyZWFkIHRvIHRyeSBhIFB5Q09ORF9XQUlUKCksCisgKiAgICBpbmNsdWRpbmcgdGhlIHRocmVhZCBkb2luZyB0aGUgUHlDT05EX1NJR05BTCgpIGl0c2VsZi4KKyAqICAgIFRoZSBzYW1lIGFwcGxpZXMgdG8gUHlDT05EX0JST0FEQ0FTVCgpLCBpZiBOIHRocmVhZHMgYXJlIHdhaXRpbmcKKyAqICAgIHRoZW4gYXQgbGVhc3QgTiB0aHJlYWRzIHdpbGwgYmUgd29rZW4gdXAsIGJ1dCBub3QgbmVjZXNzYXJpbHkKKyAqICAgIHRob3NlIGFscmVhZHkgd2FpdGluZy4KKyAqICAgIEZvciB0aGlzIHJlYXNvbiwgZG9uJ3QgbWFrZSB0aGUgc2NoZWR1bGluZyBhc3N1bXB0aW9uIHRoYXQgYQorICogICAgc3BlY2lmaWMgb3RoZXIgdGhyZWFkIHdpbGwgZ2V0IHRoZSB3YWtldXAgc2lnbmFsCisgKiAyKSBUaGUgX211dGV4XyBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIFB5Q09ORF9TSUdOQUwoKSBhbmQKKyAqICAgIFB5Q09ORF9CUk9BRENBU1QoKS4KKyAqICAgIFdoaWxlIGUuZy4gdGhlIHBvc2l4IHN0YW5kYXJkIHN0cm9uZ2x5IHJlY29tbWVuZHMgdGhhdCB0aGUgbXV0ZXgKKyAqICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29uZGl0aW9uIHZhcmlhYmxlIGlzIGhlbGQgd2hlbiBhCisgKiAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCkgY2FsbCBpcyBtYWRlLCB0aGlzIGlzIG5vdCBhIGhhcmQgcmVxdWlyZW1lbnQsCisgKiAgICBhbHRob3VnaCBzY2hlZHVsaW5nIHdpbGwgbm90IGJlICJyZWxpYWJsZSIgaWYgaXQgaXNuJ3QuICBIZXJlCisgKiAgICB0aGUgbXV0ZXggaXMgdXNlZCBmb3IgaW50ZXJuYWwgc3luY2hyb25pemF0aW9uIG9mIHRoZSBlbXVsYXRlZAorICogICAgQ29uZGl0aW9uIFZhcmlhYmxlLgorICovCisKKyNpZm5kZWYgX0NPTkRWQVJfSF8KKyNkZWZpbmUgX0NPTkRWQVJfSF8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorCisjaWZuZGVmIF9QT1NJWF9USFJFQURTCisvKiBUaGlzIG1lYW5zIHB0aHJlYWRzIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gbGliYyBoZWFkZXJzLCBoZW5jZSB0aGUgbWFjcm8KKyAgIG5vdCBwcmVzZW50IGluIHVuaXN0ZC5oLiBCdXQgdGhleSBzdGlsbCBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgYW4gZXh0ZXJuYWwKKyAgIGxpYnJhcnkgKGUuZy4gZ251IHB0aCBpbiBwdGhyZWFkIGVtdWxhdGlvbikgKi8KKyMgaWZkZWYgSEFWRV9QVEhSRUFEX0gKKyMgIGluY2x1ZGUgPHB0aHJlYWQuaD4gLyogX1BPU0lYX1RIUkVBRFMgKi8KKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgX1BPU0lYX1RIUkVBRFMKKy8qCisgKiBQT1NJWCBzdXBwb3J0CisgKi8KKyNkZWZpbmUgUHlfSEFWRV9DT05EVkFSCisKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisKKyNkZWZpbmUgUHlDT05EX0FERF9NSUNST1NFQ09ORFModHYsIGludGVydmFsKSBcCitkbyB7IFwKKyAgICB0di50dl91c2VjICs9IChsb25nKSBpbnRlcnZhbDsgXAorICAgIHR2LnR2X3NlYyArPSB0di50dl91c2VjIC8gMTAwMDAwMDsgXAorICAgIHR2LnR2X3VzZWMgJT0gMTAwMDAwMDsgXAorfSB3aGlsZSAoMCkKKworLyogV2UgYXNzdW1lIGFsbCBtb2Rlcm4gUE9TSVggc3lzdGVtcyBoYXZlIGdldHRpbWVvZmRheSgpICovCisjaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCisjZGVmaW5lIFB5Q09ORF9HRVRUSU1FT0ZEQVkocHR2KSBnZXR0aW1lb2ZkYXkocHR2KQorI2Vsc2UKKyNkZWZpbmUgUHlDT05EX0dFVFRJTUVPRkRBWShwdHYpIGdldHRpbWVvZmRheShwdHYsIChzdHJ1Y3QgdGltZXpvbmUgKilOVUxMKQorI2VuZGlmCisKKy8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJldHVybiAwIG9uIHN1Y2Nlc3MsIG5vbnplcm8gb24gZXJyb3IgKi8KKyNkZWZpbmUgUHlNVVRFWF9UIHB0aHJlYWRfbXV0ZXhfdAorI2RlZmluZSBQeU1VVEVYX0lOSVQobXV0KSAgICAgICBwdGhyZWFkX211dGV4X2luaXQoKG11dCksIE5VTEwpCisjZGVmaW5lIFB5TVVURVhfRklOSShtdXQpICAgICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveShtdXQpCisjZGVmaW5lIFB5TVVURVhfTE9DSyhtdXQpICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayhtdXQpCisjZGVmaW5lIFB5TVVURVhfVU5MT0NLKG11dCkgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG11dCkKKworI2RlZmluZSBQeUNPTkRfVCBwdGhyZWFkX2NvbmRfdAorI2RlZmluZSBQeUNPTkRfSU5JVChjb25kKSAgICAgICBwdGhyZWFkX2NvbmRfaW5pdCgoY29uZCksIE5VTEwpCisjZGVmaW5lIFB5Q09ORF9GSU5JKGNvbmQpICAgICAgIHB0aHJlYWRfY29uZF9kZXN0cm95KGNvbmQpCisjZGVmaW5lIFB5Q09ORF9TSUdOQUwoY29uZCkgICAgIHB0aHJlYWRfY29uZF9zaWduYWwoY29uZCkKKyNkZWZpbmUgUHlDT05EX0JST0FEQ0FTVChjb25kKSAgcHRocmVhZF9jb25kX2Jyb2FkY2FzdChjb25kKQorI2RlZmluZSBQeUNPTkRfV0FJVChjb25kLCBtdXQpICBwdGhyZWFkX2NvbmRfd2FpdCgoY29uZCksIChtdXQpKQorCisvKiByZXR1cm4gMCBmb3Igc3VjY2VzcywgMSBvbiB0aW1lb3V0LCAtMSBvbiBlcnJvciAqLworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmNvbmQsIFB5TVVURVhfVCAqbXV0LCBsb25nIHVzKQoreworICAgIGludCByOworICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKKyAgICBzdHJ1Y3QgdGltZXZhbCBkZWFkbGluZTsKKworICAgIFB5Q09ORF9HRVRUSU1FT0ZEQVkoJmRlYWRsaW5lKTsKKyAgICBQeUNPTkRfQUREX01JQ1JPU0VDT05EUyhkZWFkbGluZSwgdXMpOworICAgIHRzLnR2X3NlYyA9IGRlYWRsaW5lLnR2X3NlYzsKKyAgICB0cy50dl9uc2VjID0gZGVhZGxpbmUudHZfdXNlYyAqIDEwMDA7CisKKyAgICByID0gcHRocmVhZF9jb25kX3RpbWVkd2FpdCgoY29uZCksIChtdXQpLCAmdHMpOworICAgIGlmIChyID09IEVUSU1FRE9VVCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZWxzZSBpZiAocikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UgCisgICAgICAgIHJldHVybiAwOworfQorCisjZWxpZiBkZWZpbmVkKE5UX1RIUkVBRFMpCisvKgorICogV2luZG93cyAoWFAsIDIwMDMgc2VydmVyIGFuZCBsYXRlciwgYXMgd2VsbCBhcyAoaG9wZWZ1bGx5KSBDRSkgc3VwcG9ydAorICoKKyAqIEVtdWxhdGVkIGNvbmRpdGlvbiB2YXJpYWJsZXMgb25lcyB0aGF0IHdvcmsgd2l0aCBYUCBhbmQgbGF0ZXIsIHBsdXMKKyAqIGV4YW1wbGUgbmF0aXZlIHN1cHBvcnQgb24gVklTVEEgYW5kIG9ud2FyZHMuCisgKi8KKyNkZWZpbmUgUHlfSEFWRV9DT05EVkFSCisKKworLyogaW5jbHVkZSB3aW5kb3dzIGlmIGl0IGhhc24ndCBiZWVuIGRvbmUgYmVmb3JlICovCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisKKy8qIG9wdGlvbnMgKi8KKy8qIG5vbi1lbXVsYXRlZCBjb25kaXRpb24gdmFyaWFibGVzIGFyZSBwcm92aWRlZCBmb3IgdGhvc2UgdGhhdCB3YW50CisgKiB0byB0YXJnZXQgV2luZG93cyBWaXN0YS4gIE1vZGlmeSB0aGlzIG1hY3JvIHRvIGVuYWJsZSB0aGVtLgorICovCisjaWZuZGVmIF9QWV9FTVVMQVRFRF9XSU5fQ1YKKyNkZWZpbmUgX1BZX0VNVUxBVEVEX1dJTl9DViAxICAvKiB1c2UgZW11bGF0ZWQgY29uZGl0aW9uIHZhcmlhYmxlcyAqLworI2VuZGlmCisKKy8qIGZhbGwgYmFjayB0byBlbXVsYXRpb24gaWYgbm90IHRhcmdldGluZyBWaXN0YSAqLworI2lmICFkZWZpbmVkIE5URERJX1ZJU1RBIHx8IE5URERJX1ZFUlNJT04gPCBOVERESV9WSVNUQQorI3VuZGVmIF9QWV9FTVVMQVRFRF9XSU5fQ1YKKyNkZWZpbmUgX1BZX0VNVUxBVEVEX1dJTl9DViAxCisjZW5kaWYKKworCisjaWYgX1BZX0VNVUxBVEVEX1dJTl9DVgorCisvKiBUaGUgbXV0ZXggaXMgYSBDcml0aWNhbFNlY3Rpb24gb2JqZWN0IGFuZAorICAgVGhlIGNvbmRpdGlvbiB2YXJpYWJsZXMgaXMgZW11bGF0ZWQgd2l0aCB0aGUgaGVscCBvZiBhIHNlbWFwaG9yZS4KKyAgIFNlbWFwaG9yZXMgYXJlIGF2YWlsYWJsZSBvbiBXaW5kb3dzIFhQICgyMDAzIHNlcnZlcikgYW5kIGxhdGVyLgorICAgV2UgdXNlIGEgU2VtYXBob3JlIHJhdGhlciB0aGFuIGFuIGF1dG8tcmVzZXQgZXZlbnQsIGJlY2F1c2UgYWx0aG91Z2gKKyAgIGFuIGF1dG8tcmVzZW50IGV2ZW50IG1pZ2h0IGFwcGVhciB0byBzb2x2ZSB0aGUgbG9zdC13YWtldXAgYnVnIChyYWNlCisgICBjb25kaXRpb24gYmV0d2VlbiByZWxlYXNpbmcgdGhlIG91dGVyIGxvY2sgYW5kIHdhaXRpbmcpIGJlY2F1c2UgaXQKKyAgIG1haW50YWlucyBzdGF0ZSBldmVuIHRob3VnaCBhIHdhaXQgaGFzbid0IGhhcHBlbmVkLCB0aGVyZSBpcyBzdGlsbAorICAgYSBsb3N0IHdha2V1cCBwcm9ibGVtIGlmIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGFyZSBpbnRlcnJ1cHRlZCBpbiB0aGUKKyAgIGNyaXRpY2FsIHBsYWNlLiAgQSBzZW1hcGhvcmUgc29sdmVzIHRoYXQsIGJlY2F1c2UgaXRzIHN0YXRlIGlzIGNvdW50ZWQsCisgICBub3QgQm9vbGVhbi4KKyAgIEJlY2F1c2UgaXQgaXMgb2sgdG8gc2lnbmFsIGEgY29uZGl0aW9uIHZhcmlhYmxlIHdpdGggbm8gb25lCisgICB3YWl0aW5nLCB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG51bWJlciBvZgorICAgd2FpdGluZyB0aHJlYWRzLiAgT3RoZXJ3aXNlLCB0aGUgc2VtYXBob3JlJ3Mgc3RhdGUgY291bGQgcmlzZQorICAgd2l0aG91dCBib3VuZC4gIFRoaXMgYWxzbyBoZWxwcyByZWR1Y2UgdGhlIG51bWJlciBvZiAic3B1cmlvdXMgd2FrZXVwcyIKKyAgIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhcHBlbi4KKworICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBzdGlsbCBoYXMgdGhlIHByb2JsZW0gdGhhdCB0aGUgdGhyZWFkcyB3b2tlbgorICAgd2l0aCBhICJzaWduYWwiIGFyZW4ndCBuZWNlc3NhcmlseSB0aG9zZSB0aGF0IGFyZSBhbHJlYWR5CisgICB3YWl0aW5nLiAgSXQgY29ycmVzcG9uZHMgdG8gbGlzdGluZyAyIGluOgorICAgaHR0cDovL2JpcnJlbGwub3JnL2FuZHJldy9wYXBlcnMvSW1wbGVtZW50aW5nQ1ZzLnBkZgorCisgICBHZW5lcmljIGVtdWxhdGlvbnMgb2YgdGhlIHB0aHJlYWRfY29uZF8qIEFQSSB1c2luZworICAgZWFybGllciBXaW4zMiBmdW5jdGlvbnMgY2FuIGJlIGZvdW5kIG9uIHRoZSBXZWIuCisgICBUaGUgZm9sbG93aW5nIHJlYWQgY2FuIGJlIGVkaWZpY2F0aW5nIChvciBub3QpOgorICAgaHR0cDovL3d3dy5jc2Uud3VzdGwuZWR1L35zY2htaWR0L3dpbjMyLWN2LTEuaHRtbAorCisgICBTZWUgYWxzbyAKKyovCisKK3R5cGVkZWYgQ1JJVElDQUxfU0VDVElPTiBQeU1VVEVYX1Q7CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX0lOSVQoUHlNVVRFWF9UICpjcykKK3sKKyAgICBJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfRklOSShQeU1VVEVYX1QgKmNzKQoreworICAgIERlbGV0ZUNyaXRpY2FsU2VjdGlvbihjcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX0xPQ0soUHlNVVRFWF9UICpjcykKK3sKKyAgICBFbnRlckNyaXRpY2FsU2VjdGlvbihjcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX1VOTE9DSyhQeU1VVEVYX1QgKmNzKQoreworICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogVGhlIENvbmRpdGlvblZhcmlhYmxlIG9iamVjdC4gIEZyb20gWFAgb253YXJkcyBpdCBpcyBlYXNpbHkgZW11bGF0ZWQgd2l0aAorICogYSBTZW1hcGhvcmUKKyAqLworCit0eXBlZGVmIHN0cnVjdCBfUHlDT05EX1QKK3sKKyAgICBIQU5ETEUgc2VtOworICAgIGludCB3YWl0aW5nOyAvKiB0byBhbGxvdyBQeUNPTkRfU0lHTkFMIHRvIGJlIGEgbm8tb3AgKi8KK30gUHlDT05EX1Q7CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfSU5JVChQeUNPTkRfVCAqY3YpCit7CisgICAgLyogQSBzZW1hcGhvcmUgd2l0aCBhICJsYXJnZSIgbWF4IHZhbHVlLCAgVGhlIHBvc2l0aXZlIHZhbHVlCisgICAgICogaXMgb25seSBuZWVkZWQgdG8gY2F0Y2ggdGhvc2UgImxvc3Qgd2FrZXVwIiBldmVudHMgYW5kCisgICAgICogcmFjZSBjb25kaXRpb25zIHdoZW4gYSB0aW1lZCB3YWl0IGVsYXBzZXMuCisgICAgICovCisgICAgY3YtPnNlbSA9IENyZWF0ZVNlbWFwaG9yZShOVUxMLCAwLCAxMDAwMDAsIE5VTEwpOworICAgIGlmIChjdi0+c2VtPT1OVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgY3YtPndhaXRpbmcgPSAwOworICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX0ZJTkkoUHlDT05EX1QgKmN2KQoreworICAgIHJldHVybiBDbG9zZUhhbmRsZShjdi0+c2VtKSA/IDAgOiAtMTsKK30KKworLyogdGhpcyBpbXBsZW1lbnRhdGlvbiBjYW4gZGV0ZWN0IGEgdGltZW91dC4gIFJldHVybnMgMSBvbiB0aW1lb3V0LAorICogMCBvdGhlcndpc2UgKGFuZCAtMSBvbiBlcnJvcikKKyAqLworUHlfTE9DQUxfSU5MSU5FKGludCkKK19QeUNPTkRfV0FJVF9NUyhQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIERXT1JEIG1zKQoreworICAgIERXT1JEIHdhaXQ7CisgICAgY3YtPndhaXRpbmcrKzsKKyAgICBQeU1VVEVYX1VOTE9DSyhjcyk7CisgICAgLyogImxvc3Qgd2FrZXVwIGJ1ZyIgd291bGQgb2NjdXIgaWYgdGhlIGNhbGxlciB3ZXJlIGludGVycnVwdGVkIGhlcmUsCisgICAgICogYnV0IHdlIGFyZSBzYWZlIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2VtYXBob3JlIHdpY2ggaGFzIGFuIGludGVybmFsCisgICAgICogY291bnQuCisgICAgICovCisgICAgd2FpdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoY3YtPnNlbSwgbXMpOworICAgIFB5TVVURVhfTE9DSyhjcyk7CisgICAgaWYgKHdhaXQgIT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgICAgLS1jdi0+d2FpdGluZzsKKyAgICAgICAgLyogSGVyZSB3ZSBoYXZlIGEgYmVuaWduIHJhY2UgY29uZGl0aW9uIHdpdGggUHlDT05EX1NJR05BTC4KKyAgICAgICAgICogV2hlbiBmYWlsdXJlIG9jY3VycyBvciB0aW1lb3V0LCBpdCBpcyBwb3NzaWJsZSB0aGF0CisgICAgICAgICAqIFB5Q09ORF9TSUdOQUwgYWxzbyBkZWNyZW1lbnRzIHRoaXMgdmFsdWUKKyAgICAgICAgICogYW5kIHNpZ25hbHMgcmVsZWFzZXMgdGhlIG11dGV4LiAgVGhpcyBpcyBiZW5pZ24gYmVjYXVzZSBpdAorICAgICAgICAgKiBqdXN0IG1lYW5zIGFuIGV4dHJhIHNwdXJpb3VzIHdha2V1cCBmb3IgYSB3YWl0aW5nIHRocmVhZC4KKyAgICAgICAgICogKCd3YWl0aW5nJyBjb3JyZXNwb25kcyB0byB0aGUgc2VtYXBob3JlJ3MgIm5lZ2F0aXZlIiBjb3VudCBhbmQKKyAgICAgICAgICogd2UgbWF5IGVuZCB1cCB3aXRoIGUuZy4gKHdhaXRpbmcgPT0gLTEgJiYgc2VtLmNvdW50ID09IDEpLiAgV2hlbgorICAgICAgICAgKiBhIG5ldyB0aHJlYWQgY29tZXMgYWxvbmcsIGl0IHdpbGwgcGFzcyByaWdodCB0aHJvdWhnaCwgaGF2aW5nCisgICAgICAgICAqIGFkanVzdGVkIGl0IHRvICh3YWl0aW5nID09IDAgJiYgc2VtLmNvdW50ID09IDApLgorICAgICAgICAgKi8KKyAgICAgICAgIAorICAgIGlmICh3YWl0ID09IFdBSVRfRkFJTEVEKQorICAgICAgICByZXR1cm4gLTE7CisgICAgLyogcmV0dXJuIDAgb24gc3VjY2VzcywgMSBvbiB0aW1lb3V0ICovCisgICAgcmV0dXJuIHdhaXQgIT0gV0FJVF9PQkpFQ1RfMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9XQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcykKK3sKKyAgICBpbnQgcmVzdWx0ID0gX1B5Q09ORF9XQUlUX01TKGN2LCBjcywgSU5GSU5JVEUpOworICAgIHJldHVybiByZXN1bHQgPj0gMCA/IDAgOiByZXN1bHQ7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgbG9uZyB1cykKK3sKKyAgICByZXR1cm4gX1B5Q09ORF9XQUlUX01TKGN2LCBjcywgdXMvMTAwMCk7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfU0lHTkFMKFB5Q09ORF9UICpjdikKK3sKKyAgICAvKiB0aGlzIHRlc3QgYWxsb3dzIFB5Q09ORF9TSUdOQUwgdG8gYmUgYSBuby1vcCB1bmxlc3MgcmVxdWlyZWQKKyAgICAgKiB0byB3YWtlIHNvbWVvbmUgdXAsIHRodXMgcHJldmVudGluZyBhbiB1bmJvdW5kZWQgaW5jcmVhc2Ugb2YKKyAgICAgKiB0aGUgc2VtYXBob3JlJ3MgaW50ZXJuYWwgY291bnRlci4KKyAgICAgKi8KKyAgICBpZiAoY3YtPndhaXRpbmcgPiAwKSB7CisgICAgICAgIC8qIG5vdGlmeWluZyB0aHJlYWQgZGVjcmVhc2VzIHRoZSBjdi0+d2FpdGluZyBjb3VudCBzbyB0aGF0CisgICAgICAgICAqIGEgZGVsYXkgYmV0d2VlbiBub3RpZnkgYW5kIGFjdHVhbCB3YWtldXAgb2YgdGhlIHRhcmdldCB0aHJlYWQKKyAgICAgICAgICogZG9lc24ndCBjYXVzZSBhIG51bWJlciBvZiBleHRyYSBSZWxlYXNlU2VtYXBob3JlIGNhbGxzLgorICAgICAgICAgKi8KKyAgICAgICAgY3YtPndhaXRpbmctLTsKKyAgICAgICAgcmV0dXJuIFJlbGVhc2VTZW1hcGhvcmUoY3YtPnNlbSwgMSwgTlVMTCkgPyAwIDogLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX0JST0FEQ0FTVChQeUNPTkRfVCAqY3YpCit7CisgICAgaWYgKGN2LT53YWl0aW5nID4gMCkgeworICAgICAgICByZXR1cm4gUmVsZWFzZVNlbWFwaG9yZShjdi0+c2VtLCBjdi0+d2FpdGluZywgTlVMTCkgPyAwIDogLTE7CisJCWN2LT53YWl0aW5nID0gMDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbHNlCisKKy8qIFVzZSBuYXRpdmUgV2luNyBwcmltaXRpdmVzIGlmIGJ1aWxkIHRhcmdldCBpcyBXaW43IG9yIGhpZ2hlciAqLworCisvKiBTUldMT0NLIGlzIGZhc3RlciBhbmQgYmV0dGVyIHRoYW4gQ3JpdGljYWxTZWN0aW9uICovCit0eXBlZGVmIFNSV0xPQ0sgUHlNVVRFWF9UOworCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlNVVRFWF9JTklUKFB5TVVURVhfVCAqY3MpCit7CisgICAgSW5pdGlhbGl6ZVNSV0xvY2soY3MpOworICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlNVVRFWF9GSU5JKFB5TVVURVhfVCAqY3MpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX0xPQ0soUHlNVVRFWF9UICpjcykKK3sKKyAgICBBY3F1aXJlU1JXTG9ja0V4Y2x1c2l2ZShjcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX1VOTE9DSyhQeU1VVEVYX1QgKmNzKQoreworICAgIFJlbGVhc2VTUldMb2NrRXhjbHVzaXZlKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworCit0eXBlZGVmIENPTkRJVElPTl9WQVJJQUJMRSAgUHlDT05EX1Q7CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfSU5JVChQeUNPTkRfVCAqY3YpCit7CisgICAgSW5pdGlhbGl6ZUNvbmRpdGlvblZhcmlhYmxlKGN2KTsKKyAgICByZXR1cm4gMDsKK30KK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfRklOSShQeUNPTkRfVCAqY3YpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MpCit7CisgICAgcmV0dXJuIFNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcoY3YsIGNzLCBJTkZJTklURSwgMCkgPyAwIDogLTE7Cit9CisKKy8qIFRoaXMgaW1wbGVtZW50YXRpb24gbWFrZXMgbm8gZGlzdGluY3Rpb24gYWJvdXQgdGltZW91dHMuICBTaWduYWwKKyAqIDIgdG8gaW5kaWNhdGUgdGhhdCB3ZSBkb24ndCBrbm93LgorICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIGxvbmcgdXMpCit7CisgICAgcmV0dXJuIFNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcoY3YsIGNzLCB1cy8xMDAwLCAwKSA/IDIgOiAtMTsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9TSUdOQUwoUHlDT05EX1QgKmN2KQoreworICAgICBXYWtlQ29uZGl0aW9uVmFyaWFibGUoY3YpOworICAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9CUk9BRENBU1QoUHlDT05EX1QgKmN2KQoreworICAgICBXYWtlQWxsQ29uZGl0aW9uVmFyaWFibGUoY3YpOworICAgICByZXR1cm4gMDsKK30KKworCisjZW5kaWYgLyogX1BZX0VNVUxBVEVEX1dJTl9DViAqLworCisjZW5kaWYgLyogX1BPU0lYX1RIUkVBRFMsIE5UX1RIUkVBRFMgKi8KKworI2VuZGlmIC8qIF9DT05EVkFSX0hfICovCmRpZmYgLS1naXQgYS9QeXRob24vZHRvYS5jIGIvUHl0aG9uL2R0b2EuYwppbmRleCA0NGRjMDFmLi44Mzg2MWFjIDEwMDY0NAotLS0gYS9QeXRob24vZHRvYS5jCisrKyBiL1B5dGhvbi9kdG9hLmMKQEAgLTI2NSw2ICsyNjUsMTYgQEAKICNkZWZpbmUgQmlnMCAoRnJhY19tYXNrMSB8IEV4cF9tc2sxKihEQkxfTUFYX0VYUCtCaWFzLTEpKQogI2RlZmluZSBCaWcxIDB4ZmZmZmZmZmYKIAorLyogU3RhbmRhcmQgTmFOIHVzZWQgYnkgX1B5X2RnX3N0ZG5hbi4gKi8KKworI2RlZmluZSBOQU5fV09SRDAgMHg3ZmY4MDAwMAorI2RlZmluZSBOQU5fV09SRDEgMAorCisvKiBCaXRzIG9mIHRoZSByZXByZXNlbnRhdGlvbiBvZiBwb3NpdGl2ZSBpbmZpbml0eS4gKi8KKworI2RlZmluZSBQT1NJTkZfV09SRDAgMHg3ZmYwMDAwMAorI2RlZmluZSBQT1NJTkZfV09SRDEgMAorCiAvKiBzdHJ1Y3QgQkNpbmZvIGlzIHVzZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiBmcm9tIF9QeV9kZ19zdHJ0b2QgdG8gYmlnY29tcCAqLwogCiB0eXBlZGVmIHN0cnVjdCBCQ2luZm8gQkNpbmZvOwpAQCAtMTQ4Niw2ICsxNDk2LDM2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qIFJldHVybiBhICdzdGFuZGFyZCcgTmFOIHZhbHVlLgorCisgICBUaGVyZSBhcmUgZXhhY3RseSB0d28gcXVpZXQgTmFOcyB0aGF0IGRvbid0IGFyaXNlIGJ5ICdxdWlldGluZycgc2lnbmFsaW5nCisgICBOYU5zIChzZWUgSUVFRSA3NTQtMjAwOCwgc2VjdGlvbiA2LjIuMSkuICBJZiBzaWduID09IDAsIHJldHVybiB0aGUgb25lIHdob3NlCisgICBzaWduIGJpdCBpcyBjbGVhcmVkLiAgT3RoZXJ3aXNlLCByZXR1cm4gdGhlIG9uZSB3aG9zZSBzaWduIGJpdCBpcyBzZXQuCisqLworCitkb3VibGUKK19QeV9kZ19zdGRuYW4oaW50IHNpZ24pCit7CisgICAgVSBydjsKKyAgICB3b3JkMCgmcnYpID0gTkFOX1dPUkQwOworICAgIHdvcmQxKCZydikgPSBOQU5fV09SRDE7CisgICAgaWYgKHNpZ24pCisgICAgICAgIHdvcmQwKCZydikgfD0gU2lnbl9iaXQ7CisgICAgcmV0dXJuIGR2YWwoJnJ2KTsKK30KKworLyogUmV0dXJuIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGluZmluaXR5LCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHNpZ24gKDAgZm9yCisgKiBwb3NpdGl2ZSBpbmZpbml0eSwgMSBmb3IgbmVnYXRpdmUgaW5maW5pdHkpLiAqLworCitkb3VibGUKK19QeV9kZ19pbmZpbml0eShpbnQgc2lnbikKK3sKKyAgICBVIHJ2OworICAgIHdvcmQwKCZydikgPSBQT1NJTkZfV09SRDA7CisgICAgd29yZDEoJnJ2KSA9IFBPU0lORl9XT1JEMTsKKyAgICByZXR1cm4gc2lnbiA/IC1kdmFsKCZydikgOiBkdmFsKCZydik7Cit9CisKIGRvdWJsZQogX1B5X2RnX3N0cnRvZChjb25zdCBjaGFyICpzMDAsIGNoYXIgKipzZSkKIHsKQEAgLTE4ODYsMjAgKzE5MjYsMjAgQEAKICAgICAgICAgYmQyKys7CiAKICAgICAgICAgLyogQXQgdGhpcyBzdGFnZSBiZDUgLSBiYjUgPT0gZSA9PSBiZDIgLSBiYjIgKyBiYmUsIGJiMiAtIGJzMiA9PSAxLAotCSAgIGFuZCBicyA9PSAxLCBzbzoKKyAgICAgICAgICAgYW5kIGJzID09IDEsIHNvOgogCiAgICAgICAgICAgICAgIHRkdiA9PSBiZCAqIDEwKiplID0gYmQgKiAyKiooYmJlIC0gYmIyICsgYmQyKSAqIDUqKihiZDUgLSBiYjUpCiAgICAgICAgICAgICAgIHNydiA9PSBiYiAqIDIqKmJiZSA9IGJiICogMioqKGJiZSAtIGJiMiArIGJiMikKLQkgICAgICAwLjUgdWxwKHNydikgPT0gMioqKGJiZS0xKSA9IGJzICogMioqKGJiZSAtIGJiMiArIGJzMikKKyAgICAgICAgICAgICAgMC41IHVscChzcnYpID09IDIqKihiYmUtMSkgPSBicyAqIDIqKihiYmUgLSBiYjIgKyBiczIpCiAKLQkgICBJdCBmb2xsb3dzIHRoYXQ6CisgICAgICAgICAgIEl0IGZvbGxvd3MgdGhhdDoKIAogICAgICAgICAgICAgICBNICogdGR2ID0gYmQgKiAyKipiZDIgKiA1KipiZDUKICAgICAgICAgICAgICAgTSAqIHNydiA9IGJiICogMioqYmIyICogNSoqYmI1CiAgICAgICAgICAgICAgIE0gKiAwLjUgdWxwKHNydikgPSBicyAqIDIqKmJzMiAqIDUqKmJiNQogCi0JICAgZm9yIHNvbWUgY29uc3RhbnQgTS4gIChBY3R1YWxseSwgTSA9PSAyKiooYmIyIC0gYmJlKSAqIDUqKmJiNSwgYnV0Ci0JICAgdGhpcyBmYWN0IGlzIG5vdCBuZWVkZWQgYmVsb3cuKQorICAgICAgICAgICBmb3Igc29tZSBjb25zdGFudCBNLiAgKEFjdHVhbGx5LCBNID09IDIqKihiYjIgLSBiYmUpICogNSoqYmI1LCBidXQKKyAgICAgICAgICAgdGhpcyBmYWN0IGlzIG5vdCBuZWVkZWQgYmVsb3cuKQogICAgICAgICAqLwogCiAgICAgICAgIC8qIFJlbW92ZSBmYWN0b3Igb2YgMioqaSwgd2hlcmUgaSA9IG1pbihiYjIsIGJkMiwgYnMyKS4gKi8KQEAgLTIwNTUsNyArMjA5NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICArIEV4cF9tc2sxCiAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgIHdvcmQxKCZydikgPSAwOwotICAgICAgICAgICAgICAgICAgICBkc2lnbiA9IDA7CisgICAgICAgICAgICAgICAgICAgIC8qIGRzaWduID0gMDsgKi8KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjA5Miw3ICsyMTMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZ290byB1bmRmbDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBkc2lnbiA9IDEgLSBkc2lnbjsKKyAgICAgICAgICAgIC8qIGRzaWduID0gMSAtIGRzaWduOyAqLwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKChhYWRqID0gcmF0aW8oZGVsdGEsIGJzKSkgPD0gMi4pIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2FpeC5jIGIvUHl0aG9uL2R5bmxvYWRfYWl4LmMKaW5kZXggMTQ5OTkwZC4uYjRmNzFmMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfYWl4LmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfYWl4LmMKQEAgLTI2LDExICsyNiw3IEBACiAgICAgdm9pZCAgICAgICAgICAqZW50cnk7CiB9IE1vZHVsZSwgKk1vZHVsZVB0cjsKIAotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKLSAgICB7Ii5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7MCwgMH0KLX07Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsiLnNvIiwgTlVMTH07CiAKIHN0YXRpYyBpbnQKIGFpeF9nZXRvbGRtb2R1bGVzKHZvaWQgKiptb2RsaXN0cHRyKQpAQCAtMTA5LDYgKzEwNSw4IEBACiB7CiAKICAgICBjaGFyICptZXNzYWdlWzEwMjRdLCBlcnJidWZbMTAyNF07CisgICAgUHlPYmplY3QgKnBhdGhuYW1lX29iID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyYnVmX29iID0gTlVMTDsKICAgICByZWdpc3RlciBpbnQgaSxqOwogCiAgICAgc3RydWN0IGVycnRhYiB7CkBAIC0xMjksNyArMTI3LDYgQEAKICAgICAgICAge0xfRVJST1JfRVJSTk8sICAgICAgICAgICAgICAgICBOVUxMfQogICAgIH07CiAKLSNkZWZpbmUgTE9BRF9FUlJUQUJfTEVOIChzaXplb2YobG9hZF9lcnJ0YWIpL3NpemVvZihsb2FkX2VycnRhYlswXSkpCiAjZGVmaW5lIEVSUkJVRl9BUFBFTkQocykgc3RybmNhdChlcnJidWYsIHMsIHNpemVvZihlcnJidWYpLXN0cmxlbihlcnJidWYpLTEpCiAKICAgICBQeU9TX3NucHJpbnRmKGVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZiksICJmcm9tIG1vZHVsZSAlLjIwMHMgIiwgcGF0aG5hbWUpOwpAQCAtMTQwLDcgKzEzNyw3IEBACiAgICAgfQogICAgIGZvcihpID0gMDsgbWVzc2FnZVtpXSAmJiAqbWVzc2FnZVtpXTsgaSsrKSB7CiAgICAgICAgIGludCBuZXJyID0gYXRvaShtZXNzYWdlW2ldKTsKLSAgICAgICAgZm9yIChqPTA7IGo8TE9BRF9FUlJUQUJfTEVOIDsgaisrKSB7CisgICAgICAgIGZvciAoaj0wOyBqIDwgUHlfQVJSQVlfTEVOR1RIKGxvYWRfZXJydGFiKTsgaisrKSB7CiAgICAgICAgICAgICBpZiAobmVyciA9PSBsb2FkX2VycnRhYltqXS5lcnJObyAmJiBsb2FkX2VycnRhYltqXS5lcnJzdHIpCiAgICAgICAgICAgICBFUlJCVUZfQVBQRU5EKGxvYWRfZXJydGFiW2pdLmVycnN0cik7CiAgICAgICAgIH0KQEAgLTE0OSwxMiArMTQ2LDE2IEBACiAgICAgICAgIEVSUkJVRl9BUFBFTkQoIlxuIik7CiAgICAgfQogICAgIGVycmJ1ZltzdHJsZW4oZXJyYnVmKS0xXSA9ICdcMCc7ICAgICAgICAgICAgLyogdHJpbSBvZmYgbGFzdCBuZXdsaW5lICovCi0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCBlcnJidWYpOworICAgIHBhdGhuYW1lX29iID0gUHlVbmljb2RlX0Zyb21TdHJpbmcocGF0aG5hbWUpOworICAgIGVycmJ1Zl9vYiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGVycmJ1Zik7CisgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IoZXJyYnVmX29iLCBOVUxMLCBwYXRobmFtZSk7CisgICAgUHlfREVDUkVGKHBhdGhuYW1lX29iKTsKKyAgICBQeV9ERUNSRUYoZXJyYnVmX29iKTsKICAgICByZXR1cm47CiB9CiAKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqZnFuYW1lLCBjb25zdCBjaGFyICpzaG9ydG5hbWUsCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfZGwuYyBiL1B5dGhvbi9keW5sb2FkX2RsLmMKaW5kZXggMjYwNmUxZS4uNTgzNmNiM2IgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX2RsLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfZGwuYwpAQCAtOSwxOCArOSwxNCBAQAogCiBleHRlcm4gY2hhciAqUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCk7CiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0JeyIubyIsICJyYiIsIENfRVhURU5TSU9OfSwKLQl7Im1vZHVsZS5vIiwgInJiIiwgQ19FWFRFTlNJT059LAotCXswLCAwfQotfTsKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geyIubyIsIE5VTEx9OwogCiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKmZxbmFtZSwgY29uc3QgY2hhciAqc2hvcnRuYW1lLAotCQkJCSAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7Ci0JY2hhciBmdW5jbmFtZVsyNThdOworICAgIGNoYXIgZnVuY25hbWVbMjU4XTsKIAotCVB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKLQlyZXR1cm4gZGxfbG9hZG1vZChQeV9HZXRQcm9ncmFtTmFtZSgpLCBwYXRobmFtZSwgZnVuY25hbWUpOworICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKKyAgICByZXR1cm4gZGxfbG9hZG1vZChQeV9HZXRQcm9ncmFtTmFtZSgpLCBwYXRobmFtZSwgZnVuY25hbWUpOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfaHB1eC5jIGIvUHl0aG9uL2R5bmxvYWRfaHB1eC5jCmluZGV4IDE4YTgxMzcuLmM5NTU0MTQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX2hwdXguYworKysgYi9QeXRob24vZHlubG9hZF9ocHV4LmMKQEAgLTEzLDEzICsxMyw5IEBACiAjZGVmaW5lIEZVTkNOQU1FX1BBVFRFUk4gIlB5SW5pdF8lLjIwMHMiCiAjZW5kaWYKIAotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKLSAgICB7U0hMSUJfRVhULCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUiU0hMSUJfRVhULCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgezAsIDB9Ci19OworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7U0hMSUJfRVhULCBOVUxMfTsKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqZnFuYW1lLCBjb25zdCBjaGFyICpzaG9ydG5hbWUsCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwpAQCAtMzcsMTEgKzMzLDIxIEBACiAgICAgLyogWFhYIENodWNrIEJsYWtlIG9uY2Ugd3JvdGUgdGhhdCAwIHNob3VsZCBiZSBCSU5EX05PU1RBUlQ/ICovCiAgICAgaWYgKGxpYiA9PSBOVUxMKSB7CiAgICAgICAgIGNoYXIgYnVmWzI1Nl07CisgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZV9vYiA9IE5VTEw7CisgICAgICAgIFB5T2JqZWN0ICpidWZfb2IgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqc2hvcnRuYW1lX29iID0gTlVMTDsKKwogICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCiAgICAgICAgICAgICBwZXJyb3IocGF0aG5hbWUpOwogICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJGYWlsZWQgdG8gbG9hZCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCBidWYpOworICAgICAgICBidWZfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOworICAgICAgICBzaG9ydG5hbWVfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzaG9ydG5hbWUpOworICAgICAgICBwYXRobmFtZV9vYiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHBhdGhuYW1lKTsKKyAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IoYnVmX29iLCBzaG9ydG5hbWVfb2IsIHBhdGhuYW1lX29iKTsKKyAgICAgICAgUHlfREVDUkVGKGJ1Zl9vYik7CisgICAgICAgIFB5X0RFQ1JFRihzaG9ydG5hbWVfb2IpOworICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWVfb2IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgRlVOQ05BTUVfUEFUVEVSTiwgc2hvcnRuYW1lKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX25leHQuYyBiL1B5dGhvbi9keW5sb2FkX25leHQuYwppbmRleCBjYWJmOWI5Li44NWM5NWI0IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9uZXh0LmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfbmV4dC5jCkBAIC04LDExICs4LDcgQEAKIAogI2luY2x1ZGUgPG1hY2gtby9keWxkLmg+CiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0gICAgeyIuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgezAsIDB9Ci19OworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ii5zbyIsIE5VTEx9OwogCiAvKgogKiogUHl0aG9uIG1vZHVsZXMgYXJlIE1hY2gtTyBNSF9CVU5ETEUgZmlsZXMuIFRoZSBiZXN0IHdheSB0byBsb2FkIHRoZXNlCkBAIC0zMSw4ICsyNyw4IEBACiAjZGVmaW5lIExJTktPUFRJT05TIE5TTElOS01PRFVMRV9PUFRJT05fQklORE5PV3wgXAogICAgIE5TTElOS01PRFVMRV9PUFRJT05fUkVUVVJOX09OX0VSUk9SfE5TTElOS01PRFVMRV9PUFRJT05fUFJJVkFURQogI2VuZGlmCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwID0gTlVMTDsKICAgICBjaGFyIGZ1bmNuYW1lWzI1OF07CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9vczIuYyBiL1B5dGhvbi9keW5sb2FkX29zMi5jCmluZGV4IDEwMWMwMjQuLjBlMWI5MDcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX29zMi5jCisrKyBiL1B5dGhvbi9keW5sb2FkX29zMi5jCkBAIC05LDEzICs5LDkgQEAKICNpbmNsdWRlICJpbXBvcnRkbC5oIgogCiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0gICAgeyIucHlkIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsiLmRsbCIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7MCwgMH0KLX07Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsiLnB5ZCIsICIuZGxsIiwgTlVMTH07CiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKmZxbmFtZSwgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3NobGliLmMgYi9QeXRob24vZHlubG9hZF9zaGxpYi5jCmluZGV4IDdlYTUxMGUuLjBjYTY1YzcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX3NobGliLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYwpAQCAtMzYsMzEgKzM2LDI1IEBACiAgICBsaXZlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gIEUuZy4gZm9vbW9kdWxlLmNweXRob24tMzIuc28KICovCiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKICNpZmRlZiBfX0NZR1dJTl9fCi0gICAgeyIuZGxsIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLmRsbCIsICJyYiIsIENfRVhURU5TSU9OfSwKKyAgICAiLmRsbCIsCiAjZWxzZSAgLyogIV9fQ1lHV0lOX18gKi8KICNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfR0NDKQotICAgIHsiLnB5ZCIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Ii5kbGwiLCAicmIiLCBDX0VYVEVOU0lPTn0sCisgICAgIi5weWQiLAorICAgICIuZGxsIiwKICNlbHNlICAvKiAhKGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpKSAqLwogI2lmZGVmIF9fVk1TCi0gICAgeyIuZXhlIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsiLkVYRSIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS5leGUiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJNT0RVTEUuRVhFIiwgInJiIiwgQ19FWFRFTlNJT059LAorICAgICIuZXhlIiwKKyAgICAiLkVYRSIsCiAjZWxzZSAgLyogIV9fVk1TICovCi0gICAgeyIuIiBTT0FCSSAiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLiIgU09BQkkgIi5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Ii5hYmkiIFBZVEhPTl9BQklfU1RSSU5HICIuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUuYWJpIiBQWVRIT05fQUJJX1NUUklORyAiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAorICAgICIuIiBTT0FCSSAiLnNvIiwKKyAgICAiLmFiaSIgUFlUSE9OX0FCSV9TVFJJTkcgIi5zbyIsCisgICAgIi5zbyIsCiAjZW5kaWYgIC8qIF9fVk1TICovCiAjZW5kaWYgIC8qIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpICovCiAjZW5kaWYgIC8qIF9fQ1lHV0lOX18gKi8KLSAgICB7MCwgMH0KKyAgICBOVUxMLAogfTsKIAogc3RhdGljIHN0cnVjdCB7CkBAIC03NSw3ICs2OSw3IEBACiBzdGF0aWMgaW50IG5oYW5kbGVzID0gMDsKIAogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CkBAIC0xMjEsMTAgKzExNSw2IEBACiAgICAgZGxvcGVuZmxhZ3MgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnAtPmRsb3BlbmZsYWdzOwogI2VuZGlmCiAKLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJkbG9wZW4oXCIlc1wiLCAleCk7XG4iLCBwYXRobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGxvcGVuZmxhZ3MpOwotCiAjaWZkZWYgX19WTVMKICAgICAvKiBWTVMgY3VycmVudGx5IGRvbid0IGFsbG93IGEgcGF0aG5hbWUsIHVzZSBhIGxvZ2ljYWwgbmFtZSBpbnN0ZWFkICovCiAgICAgLyogQ29uY2F0ZW5hdGUgJ3B5dGhvbl9tb2R1bGVfJyBhbmQgc2hvcnRuYW1lICovCkBAIC0xMzksMTAgKzEyOSwxOSBAQAogICAgIGhhbmRsZSA9IGRsb3BlbihwYXRobmFtZSwgZGxvcGVuZmxhZ3MpOwogCiAgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICptb2RfbmFtZSA9IE5VTEw7CisgICAgICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKmVycm9yX29iID0gTlVMTDsKICAgICAgICAgY29uc3QgY2hhciAqZXJyb3IgPSBkbGVycm9yKCk7CiAgICAgICAgIGlmIChlcnJvciA9PSBOVUxMKQogICAgICAgICAgICAgZXJyb3IgPSAidW5rbm93biBkbG9wZW4oKSBlcnJvciI7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgZXJyb3IpOworICAgICAgICBlcnJvcl9vYiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGVycm9yKTsKKyAgICAgICAgcGF0aCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHBhdGhuYW1lKTsKKyAgICAgICAgbW9kX25hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzaG9ydG5hbWUpOworICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihlcnJvcl9vYiwgbW9kX25hbWUsIHBhdGgpOworICAgICAgICBQeV9YREVDUkVGKGVycm9yX29iKTsKKyAgICAgICAgUHlfWERFQ1JFRihwYXRoKTsKKyAgICAgICAgUHlfWERFQ1JFRihtb2RfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoZnAgIT0gTlVMTCAmJiBuaGFuZGxlcyA8IDEyOCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3N0dWIuYyBiL1B5dGhvbi9keW5sb2FkX3N0dWIuYwppbmRleCA2OWY4YjQ1Li41OTE2MDQ4IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9zdHViLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfc3R1Yi5jCkBAIC02LDYgKzYsNCBAQAogI2luY2x1ZGUgImltcG9ydGRsLmgiCiAKIAotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKLQl7MCwgMH0KLX07Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHtOVUxMfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3dpbi5jIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKaW5kZXggNzNhMWRjZi4uMjViNjY4MCAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfd2luLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKQEAgLTEyLDE2ICsxMiwxOCBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogLy8gImFjdGl2YXRpb24gY29udGV4dCIgbWFnaWMgLSBzZWUgZGxfbnQuYy4uLgorI2lmIEhBVkVfU1hTCiBleHRlcm4gVUxPTkdfUFRSIF9QeV9BY3RpdmF0ZUFjdEN0eCgpOwogdm9pZCBfUHlfRGVhY3RpdmF0ZUFjdEN0eChVTE9OR19QVFIgY29va2llKTsKLQotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKLSNpZmRlZiBfREVCVUcKLSAgICB7Il9kLnB5ZCIsICJyYiIsIENfRVhURU5TSU9OfSwKLSNlbHNlCi0gICAgeyIucHlkIiwgInJiIiwgQ19FWFRFTlNJT059LAogI2VuZGlmCi0gICAgezAsIDB9CisKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geworI2lmZGVmIF9ERUJVRworICAgICJfZC5weWQiLAorI2Vsc2UKKyAgICAiLnB5ZCIsCisjZW5kaWYKKyAgICBOVUxMCiB9OwogCiAKQEAgLTE3MSw0MyArMTczLDQ0IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKmZxbmFtZSwgY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3MoY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CiAgICAgY2hhciBmdW5jbmFtZVsyNThdLCAqaW1wb3J0X3B5dGhvbjsKKyAgICB3Y2hhcl90ICp3cGF0aG5hbWU7CiAKICNpZm5kZWYgX0RFQlVHCiAgICAgX1B5X0NoZWNrUHl0aG9uMygpOwogI2VuZGlmCiAKKyAgICB3cGF0aG5hbWUgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGhuYW1lKTsKKyAgICBpZiAod3BhdGhuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgIlB5SW5pdF8lLjIwMHMiLCBzaG9ydG5hbWUpOwogCiAgICAgewogICAgICAgICBISU5TVEFOQ0UgaERMTCA9IE5VTEw7Ci0gICAgICAgIGNoYXIgcGF0aGJ1ZlsyNjBdOwotICAgICAgICBMUFRTVFIgZHVtbXk7CiAgICAgICAgIHVuc2lnbmVkIGludCBvbGRfbW9kZTsKKyNpZiBIQVZFX1NYUwogICAgICAgICBVTE9OR19QVFIgY29va2llID0gMDsKLSAgICAgICAgLyogV2UgdXNlIExvYWRMaWJyYXJ5RXggc28gV2luZG93cyBsb29rcyBmb3IgZGVwZW5kZW50IERMTHMKLSAgICAgICAgICAgIGluIGRpcmVjdG9yeSBvZiBwYXRobmFtZSBmaXJzdC4gIEhvd2V2ZXIsIFdpbmRvd3M5NQotICAgICAgICAgICAgY2FuIHNvbWV0aW1lcyBub3Qgd29yayBjb3JyZWN0bHkgdW5sZXNzIHRoZSBhYnNvbHV0ZQotICAgICAgICAgICAgcGF0aCBpcyB1c2VkLiAgSWYgR2V0RnVsbFBhdGhOYW1lKCkgZmFpbHMsIHRoZSBMb2FkTGlicmFyeQotICAgICAgICAgICAgd2lsbCBjZXJ0YWlubHkgZmFpbCB0b28sIHNvIHVzZSBpdHMgZXJyb3IgY29kZSAqLworI2VuZGlmCiAKICAgICAgICAgLyogRG9uJ3QgZGlzcGxheSBhIG1lc3NhZ2UgYm94IHdoZW4gUHl0aG9uIGNhbid0IGxvYWQgYSBETEwgKi8KICAgICAgICAgb2xkX21vZGUgPSBTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyk7CiAKLSAgICAgICAgaWYgKEdldEZ1bGxQYXRoTmFtZShwYXRobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YocGF0aGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXkpKSB7Ci0gICAgICAgICAgICBVTE9OR19QVFIgY29va2llID0gX1B5X0FjdGl2YXRlQWN0Q3R4KCk7Ci0gICAgICAgICAgICAvKiBYWFggVGhpcyBjYWxsIGRvZXNuJ3QgZXhpc3QgaW4gV2luZG93cyBDRSAqLwotICAgICAgICAgICAgaERMTCA9IExvYWRMaWJyYXJ5RXgocGF0aG5hbWUsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7Ci0gICAgICAgICAgICBfUHlfRGVhY3RpdmF0ZUFjdEN0eChjb29raWUpOwotICAgICAgICB9CisjaWYgSEFWRV9TWFMKKyAgICAgICAgY29va2llID0gX1B5X0FjdGl2YXRlQWN0Q3R4KCk7CisjZW5kaWYKKyAgICAgICAgLyogV2UgdXNlIExvYWRMaWJyYXJ5RXggc28gV2luZG93cyBsb29rcyBmb3IgZGVwZW5kZW50IERMTHMKKyAgICAgICAgICAgIGluIGRpcmVjdG9yeSBvZiBwYXRobmFtZSBmaXJzdC4gKi8KKyAgICAgICAgLyogWFhYIFRoaXMgY2FsbCBkb2Vzbid0IGV4aXN0IGluIFdpbmRvd3MgQ0UgKi8KKyAgICAgICAgaERMTCA9IExvYWRMaWJyYXJ5RXhXKHdwYXRobmFtZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKTsKKyNpZiBIQVZFX1NYUworICAgICAgICBfUHlfRGVhY3RpdmF0ZUFjdEN0eChjb29raWUpOworI2VuZGlmCiAKICAgICAgICAgLyogcmVzdG9yZSBvbGQgZXJyb3IgbW9kZSBzZXR0aW5ncyAqLwogICAgICAgICBTZXRFcnJvck1vZGUob2xkX21vZGUpOwpAQCAtMjU0LDMxICsyNTcsMzQgQEAKICAgICAgICAgICAgICAgICAgICAgIkRMTCBsb2FkIGZhaWxlZDogIik7CiAKICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsKCZtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGVJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgdGhlTGVuZ3RoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfSW1wb3J0RXJyb3IsIG1lc3NhZ2UpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihtZXNzYWdlKTsKKyAgICAgICAgICAgIGlmIChtZXNzYWdlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihtZXNzYWdlLCBQeVVuaWNvZGVfRnJvbVN0cmluZyhzaG9ydG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWVzc2FnZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzI1Nl07CiAKKyAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKICNpZmRlZiBfREVCVUcKLSAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgInB5dGhvbiVkJWRfZC5kbGwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQlZF9kLmRsbCIsCiAjZWxzZQotICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAicHl0aG9uJWQlZC5kbGwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQlZC5kbGwiLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX01BSk9SX1ZFUlNJT04sUFlfTUlOT1JfVkVSU0lPTik7CiAgICAgICAgICAgICBpbXBvcnRfcHl0aG9uID0gR2V0UHl0aG9uSW1wb3J0KGhETEwpOwogCiAgICAgICAgICAgICBpZiAoaW1wb3J0X3B5dGhvbiAmJgogICAgICAgICAgICAgICAgIHN0cmNhc2VjbXAoYnVmZmVyLGltcG9ydF9weXRob24pKSB7Ci0gICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZHVsZSB1c2Ugb2YgJS4xNTBzIGNvbmZsaWN0cyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aCB0aGlzIHZlcnNpb24gb2YgUHl0aG9uLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRfcHl0aG9uKTsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgdXNlIG9mICUuMTUwcyBjb25mbGljdHMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aCB0aGlzIHZlcnNpb24gb2YgUHl0aG9uLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydF9weXRob24pOwogICAgICAgICAgICAgICAgIEZyZWVMaWJyYXJ5KGhETEwpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Vycm9ycy5jIGIvUHl0aG9uL2Vycm9ycy5jCmluZGV4IDVhOWE2MjQuLjYyNmIxNmUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9lcnJvcnMuYworKysgYi9QeXRob24vZXJyb3JzLmMKQEAgLTMyMCw2ICszMjAsMzkgQEAKICAgICBQeUVycl9SZXN0b3JlKE5VTEwsIE5VTEwsIE5VTEwpOwogfQogCit2b2lkCitQeUVycl9HZXRFeGNJbmZvKFB5T2JqZWN0ICoqcF90eXBlLCBQeU9iamVjdCAqKnBfdmFsdWUsIFB5T2JqZWN0ICoqcF90cmFjZWJhY2spCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKworICAgICpwX3R5cGUgPSB0c3RhdGUtPmV4Y190eXBlOworICAgICpwX3ZhbHVlID0gdHN0YXRlLT5leGNfdmFsdWU7CisgICAgKnBfdHJhY2ViYWNrID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOworCisgICAgUHlfWElOQ1JFRigqcF90eXBlKTsKKyAgICBQeV9YSU5DUkVGKCpwX3ZhbHVlKTsKKyAgICBQeV9YSU5DUkVGKCpwX3RyYWNlYmFjayk7Cit9CisKK3ZvaWQKK1B5RXJyX1NldEV4Y0luZm8oUHlPYmplY3QgKnBfdHlwZSwgUHlPYmplY3QgKnBfdmFsdWUsIFB5T2JqZWN0ICpwX3RyYWNlYmFjaykKK3sKKyAgICBQeU9iamVjdCAqb2xkdHlwZSwgKm9sZHZhbHVlLCAqb2xkdHJhY2ViYWNrOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBvbGR0eXBlID0gdHN0YXRlLT5leGNfdHlwZTsKKyAgICBvbGR2YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOworICAgIG9sZHRyYWNlYmFjayA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsKKworICAgIHRzdGF0ZS0+ZXhjX3R5cGUgPSBwX3R5cGU7CisgICAgdHN0YXRlLT5leGNfdmFsdWUgPSBwX3ZhbHVlOworICAgIHRzdGF0ZS0+ZXhjX3RyYWNlYmFjayA9IHBfdHJhY2ViYWNrOworCisgICAgUHlfWERFQ1JFRihvbGR0eXBlKTsKKyAgICBQeV9YREVDUkVGKG9sZHZhbHVlKTsKKyAgICBQeV9YREVDUkVGKG9sZHRyYWNlYmFjayk7Cit9CisKIC8qIENvbnZlbmllbmNlIGZ1bmN0aW9ucyB0byBzZXQgYSB0eXBlIGVycm9yIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIDAgKi8KIAogaW50CkBAIC0zNDEsMTEgKzM3NCw5IEBACiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlPYmplY3QgKmV4YywgUHlPYmplY3QgKmZpbGVuYW1lT2JqZWN0KQogewogICAgIFB5T2JqZWN0ICptZXNzYWdlOwotICAgIFB5T2JqZWN0ICp2OworICAgIFB5T2JqZWN0ICp2LCAqYXJnczsKICAgICBpbnQgaSA9IGVycm5vOwotI2lmbmRlZiBNU19XSU5ET1dTCi0gICAgY2hhciAqczsKLSNlbHNlCisjaWZkZWYgTVNfV0lORE9XUwogICAgIFdDSEFSICpzX2J1ZiA9IE5VTEw7CiAjZW5kaWYgLyogVW5peC9XaW5kb3dzICovCiAKQEAgLTM1NSwxMSArMzg2LDE0IEBACiAjZW5kaWYKIAogI2lmbmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKGkgPT0gMCkKLSAgICAgICAgcyA9ICJFcnJvciI7IC8qIFNvbWV0aW1lcyBlcnJubyBkaWRuJ3QgZ2V0IHNldCAqLwotICAgIGVsc2UKLSAgICAgICAgcyA9IHN0cmVycm9yKGkpOwotICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCBzdHJsZW4ocyksICJpZ25vcmUiKTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAgIGNoYXIgKnMgPSBzdHJlcnJvcihpKTsKKyAgICAgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocywgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogU29tZXRpbWVzIGVycm5vIGRpZG4ndCBnZXQgc2V0ICovCisgICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiRXJyb3IiKTsKKyAgICB9CiAjZWxzZQogICAgIGlmIChpID09IDApCiAgICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiRXJyb3IiKTsgLyogU29tZXRpbWVzIGVycm5vIGRpZG4ndCBnZXQgc2V0ICovCkBAIC0zOTUsNyArNDI5LDcgQEAKICAgICAgICAgICAgICAgICAvKiByZW1vdmUgdHJhaWxpbmcgY3IvbGYgYW5kIGRvdHMgKi8KICAgICAgICAgICAgICAgICB3aGlsZSAobGVuID4gMCAmJiAoc19idWZbbGVuLTFdIDw9IEwnICcgfHwgc19idWZbbGVuLTFdID09IEwnLicpKQogICAgICAgICAgICAgICAgICAgICBzX2J1ZlstLWxlbl0gPSBMJ1wwJzsKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNfYnVmLCBsZW4pOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHNfYnVmLCBsZW4pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNDEwLDE0ICs0NDQsMTggQEAKICAgICB9CiAKICAgICBpZiAoZmlsZW5hbWVPYmplY3QgIT0gTlVMTCkKLSAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpT08pIiwgaSwgbWVzc2FnZSwgZmlsZW5hbWVPYmplY3QpOworICAgICAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiKGlPTykiLCBpLCBtZXNzYWdlLCBmaWxlbmFtZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGlPKSIsIGksIG1lc3NhZ2UpOworICAgICAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiKGlPKSIsIGksIG1lc3NhZ2UpOwogICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKIAotICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KGV4Yywgdik7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICBpZiAoYXJncyAhPSBOVUxMKSB7CisgICAgICAgIHYgPSBQeU9iamVjdF9DYWxsKGV4YywgYXJncywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgaWYgKHYgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KChQeU9iamVjdCAqKSBQeV9UWVBFKHYpLCB2KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgfQogICAgIH0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgTG9jYWxGcmVlKHNfYnVmKTsKQEAgLTQ2NCw3ICs1MDIsNyBAQAogICAgIGludCBsZW47CiAgICAgV0NIQVIgKnNfYnVmID0gTlVMTDsgLyogRnJlZSB2aWEgTG9jYWxGcmVlICovCiAgICAgUHlPYmplY3QgKm1lc3NhZ2U7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgUHlPYmplY3QgKmFyZ3MsICp2OwogICAgIERXT1JEIGVyciA9IChEV09SRClpZXJyOwogICAgIGlmIChlcnI9PTApIGVyciA9IEdldExhc3RFcnJvcigpOwogICAgIGxlbiA9IEZvcm1hdE1lc3NhZ2VXKApAQCAtNDg3LDcgKzUyNSw3IEBACiAgICAgICAgIC8qIHJlbW92ZSB0cmFpbGluZyBjci9sZiBhbmQgZG90cyAqLwogICAgICAgICB3aGlsZSAobGVuID4gMCAmJiAoc19idWZbbGVuLTFdIDw9IEwnICcgfHwgc19idWZbbGVuLTFdID09IEwnLicpKQogICAgICAgICAgICAgc19idWZbLS1sZW5dID0gTCdcMCc7Ci0gICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc19idWYsIGxlbik7CisgICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHNfYnVmLCBsZW4pOwogICAgIH0KIAogICAgIGlmIChtZXNzYWdlID09IE5VTEwpCkBAIC00OTYsMTUgKzUzNCwyMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoZmlsZW5hbWVPYmplY3QgIT0gTlVMTCkKLSAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpT08pIiwgZXJyLCBtZXNzYWdlLCBmaWxlbmFtZU9iamVjdCk7Ci0gICAgZWxzZQotICAgICAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGlPKSIsIGVyciwgbWVzc2FnZSk7CisgICAgaWYgKGZpbGVuYW1lT2JqZWN0ID09IE5VTEwpCisgICAgICAgIGZpbGVuYW1lT2JqZWN0ID0gUHlfTm9uZTsKKyAgICAvKiBUaGlzIGlzIHRoZSBjb25zdHJ1Y3RvciBzaWduYXR1cmUgZm9yIHBhc3NpbmcgYSBXaW5kb3dzIGVycm9yIGNvZGUuCisgICAgICAgVGhlIFBPU0lYIHRyYW5zbGF0aW9uIHdpbGwgYmUgZmlndXJlZCBvdXQgYnkgdGhlIGNvbnN0cnVjdG9yLiAqLworICAgIGFyZ3MgPSBQeV9CdWlsZFZhbHVlKCIoaU9PaSkiLCAwLCBtZXNzYWdlLCBmaWxlbmFtZU9iamVjdCwgZXJyKTsKICAgICBQeV9ERUNSRUYobWVzc2FnZSk7CiAKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChleGMsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7CisgICAgaWYgKGFyZ3MgIT0gTlVMTCkgeworICAgICAgICB2ID0gUHlPYmplY3RfQ2FsbChleGMsIGFyZ3MsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgIGlmICh2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdCgoUHlPYmplY3QgKikgUHlfVFlQRSh2KSwgdik7CisgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgIH0KICAgICB9CiAgICAgTG9jYWxGcmVlKHNfYnVmKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTU3NSw2ICs2MTgsNDkgQEAKIH0KICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKK1B5T2JqZWN0ICoKK1B5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKK3sKKyAgICBQeU9iamVjdCAqYXJncywgKmt3YXJncywgKmVycm9yOworCisgICAgaWYgKG1zZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGFyZ3MgPSBQeVR1cGxlX05ldygxKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGt3YXJncyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoa3dhcmdzID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIG5hbWUgPSBQeV9Ob25lOworICAgIH0KKworICAgIGlmIChwYXRoID09IE5VTEwpIHsKKyAgICAgICAgcGF0aCA9IFB5X05vbmU7CisgICAgfQorCisgICAgUHlfSU5DUkVGKG1zZyk7CisgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCBtc2cpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgIm5hbWUiLCBuYW1lKTsKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJwYXRoIiwgcGF0aCk7CisKKyAgICBlcnJvciA9IFB5T2JqZWN0X0NhbGwoUHlFeGNfSW1wb3J0RXJyb3IsIGFyZ3MsIGt3YXJncyk7CisgICAgaWYgKGVycm9yICE9IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KChQeU9iamVjdCAqKVB5X1RZUEUoZXJyb3IpLCBlcnJvcik7CisgICAgICAgIFB5X0RFQ1JFRihlcnJvcik7CisgICAgfQorCisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKIHZvaWQKIF9QeUVycl9CYWRJbnRlcm5hbENhbGwoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCiB7CkBAIC02NTYsNyArNzQyLDcgQEAKICAgICAgICAgaWYgKGJhc2VzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgfQotICAgIC8qIENyZWF0ZSBhIHJlYWwgbmV3LXN0eWxlIGNsYXNzLiAqLworICAgIC8qIENyZWF0ZSBhIHJlYWwgY2xhc3MuICovCiAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKSZQeVR5cGVfVHlwZSwgInNPTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCsxLCBiYXNlcywgZGljdCk7CiAgIGZhaWx1cmU6CkBAIC03MDcsNiArNzkzLDcgQEAKIHZvaWQKIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShQeU9iamVjdCAqb2JqKQogeworICAgIF9QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOwogICAgIFB5T2JqZWN0ICpmLCAqdCwgKnYsICp0YjsKICAgICBQeUVycl9GZXRjaCgmdCwgJnYsICZ0Yik7CiAgICAgZiA9IFB5U3lzX0dldE9iamVjdCgic3RkZXJyIik7CkBAIC03MjMsNyArODEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gZG90KzE7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1vZHVsZU5hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHQsICJfX21vZHVsZV9fIik7CisgICAgICAgICAgICBtb2R1bGVOYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0LCAmUHlJZF9fX21vZHVsZV9fKTsKICAgICAgICAgICAgIGlmIChtb2R1bGVOYW1lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgUHlGaWxlX1dyaXRlU3RyaW5nKCI8dW5rbm93bj4iLCBmKTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtNzc0LDYgKzg2MSwxMiBAQAogUHlFcnJfU3ludGF4TG9jYXRpb25FeChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiB7CiAgICAgUHlPYmplY3QgKmV4YywgKnYsICp0YiwgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUihmaWxlbmFtZSk7CisgICAgX1B5X0lERU5USUZJRVIobGluZW5vKTsKKyAgICBfUHlfSURFTlRJRklFUihtc2cpOworICAgIF9QeV9JREVOVElGSUVSKG9mZnNldCk7CisgICAgX1B5X0lERU5USUZJRVIocHJpbnRfZmlsZV9hbmRfbGluZSk7CisgICAgX1B5X0lERU5USUZJRVIodGV4dCk7CiAKICAgICAvKiBhZGQgYXR0cmlidXRlcyBmb3IgdGhlIGxpbmUgbnVtYmVyIGFuZCBmaWxlbmFtZSBmb3IgdGhlIGVycm9yICovCiAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnYsICZ0Yik7CkBAIC03ODQsNyArODc3LDcgQEAKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHYsICJsaW5lbm8iLCB0bXApKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF9saW5lbm8sIHRtcCkpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICB9CkBAIC03OTMsNyArODg2LDcgQEAKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAib2Zmc2V0IiwgdG1wKSkKKyAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHYsICZQeUlkX29mZnNldCwgdG1wKSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgIH0KQEAgLTgwMywzNSArODk2LDM1IEBACiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgImZpbGVuYW1lIiwgdG1wKSkKKyAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHYsICZQeUlkX2ZpbGVuYW1lLCB0bXApKQogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgfQogCiAgICAgICAgIHRtcCA9IFB5RXJyX1Byb2dyYW1UZXh0KGZpbGVuYW1lLCBsaW5lbm8pOwogICAgICAgICBpZiAodG1wKSB7Ci0gICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAidGV4dCIsIHRtcCkpCisgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF90ZXh0LCB0bXApKQogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAib2Zmc2V0IiwgUHlfTm9uZSkpIHsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF9vZmZzZXQsIFB5X05vbmUpKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQogICAgIGlmIChleGMgIT0gUHlFeGNfU3ludGF4RXJyb3IpIHsKLSAgICAgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHYsICJtc2ciKSkgeworICAgICAgICBpZiAoIV9QeU9iamVjdF9IYXNBdHRySWQodiwgJlB5SWRfbXNnKSkgewogICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfU3RyKHYpOwogICAgICAgICAgICAgaWYgKHRtcCkgewotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHYsICJtc2ciLCB0bXApKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHYsICZQeUlkX21zZywgdG1wKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcodiwgInByaW50X2ZpbGVfYW5kX2xpbmUiKSkgewotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgInByaW50X2ZpbGVfYW5kX2xpbmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSkpCisgICAgICAgIGlmICghX1B5T2JqZWN0X0hhc0F0dHJJZCh2LCAmUHlJZF9wcmludF9maWxlX2FuZF9saW5lKSkgeworICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQodiwgJlB5SWRfcHJpbnRfZmlsZV9hbmRfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUpKQogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vZmlsZXV0aWxzLmMgYi9QeXRob24vZmlsZXV0aWxzLmMKaW5kZXggYzU2M2VhYS4uNTAxY2I4YyAxMDA2NDQKLS0tIGEvUHl0aG9uL2ZpbGV1dGlscy5jCisrKyBiL1B5dGhvbi9maWxldXRpbHMuYwpAQCAtMyw2ICszLDQwIEBACiAjICBpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTEFOR0lORk9fSAorI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisjZW5kaWYKKworUHlPYmplY3QgKgorX1B5X2RldmljZV9lbmNvZGluZyhpbnQgZmQpCit7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKE1TX1dJTjY0KQorICAgIFVJTlQgY3A7CisjZW5kaWYKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkgfHwgIWlzYXR0eShmZCkpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChNU19XSU42NCkKKyAgICBpZiAoZmQgPT0gMCkKKyAgICAgICAgY3AgPSBHZXRDb25zb2xlQ1AoKTsKKyAgICBlbHNlIGlmIChmZCA9PSAxIHx8IGZkID09IDIpCisgICAgICAgIGNwID0gR2V0Q29uc29sZU91dHB1dENQKCk7CisgICAgZWxzZQorICAgICAgICBjcCA9IDA7CisgICAgLyogR2V0Q29uc29sZUNQKCkgYW5kIEdldENvbnNvbGVPdXRwdXRDUCgpIHJldHVybiAwIGlmIHRoZSBhcHBsaWNhdGlvbgorICAgICAgIGhhcyBubyBjb25zb2xlICovCisgICAgaWYgKGNwICE9IDApCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiY3AldSIsICh1bnNpZ25lZCBpbnQpY3ApOworI2VsaWYgZGVmaW5lZChDT0RFU0VUKQorICAgIHsKKyAgICAgICAgY2hhciAqY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworICAgICAgICBpZiAoY29kZXNldCAhPSBOVUxMICYmIGNvZGVzZXRbMF0gIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhjb2Rlc2V0KTsKKyAgICB9CisjZW5kaWYKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKwogI2lmZGVmIEhBVkVfU1RBVAogCiAvKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKQEAgLTE2LDcgKzUwLDkgQEAKICAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICh1c2UKICAgIFB5TWVtX0ZyZWUoKSB0byBmcmVlIHRoZSBtZW1vcnkpIGFuZCB3cml0ZSB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gd2lkZQogICAgY2hhcmFjdGVycyBleGNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyIGludG8gKnNpemUgaWYgc2l6ZSBpcyBub3QgTlVMTCwgb3IKLSAgIE5VTEwgb24gZXJyb3IgKGNvbnZlcnNpb24gb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IpLgorICAgTlVMTCBvbiBlcnJvciAoZGVjb2Rpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IpLiBJZiBzaXplIGlzIG5vdCBOVUxMLAorICAgKnNpemUgaXMgc2V0IHRvIChzaXplX3QpLTEgb24gbWVtb3J5IGVycm9yIGFuZCAoc2l6ZV90KS0yIG9uIGRlY29kaW5nCisgICBlcnJvci4KIAogICAgQ29udmVyc2lvbiBlcnJvcnMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDCiAgICBsaWJyYXJ5LiAqLwpAQCAtODIsOCArMTE4LDkgQEAKICAgICAgICAgICAgICAgIHNpbmNlIHdlIHByb3ZpZGUgZXZlcnl0aGluZyB0aGF0IHdlIGhhdmUgLQogICAgICAgICAgICAgICAgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDIGxpYnJhcnksIG9yIEkKICAgICAgICAgICAgICAgIG1pc3VuZGVyc3Rvb2QgaG93IG1icnRvd2Mgd29ya3MuICovCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVuZXhwZWN0ZWQgbWJydG93YyByZXN1bHQgLTJcbiIpOwogICAgICAgICAgICAgUHlNZW1fRnJlZShyZXMpOworICAgICAgICAgICAgaWYgKHNpemUgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqc2l6ZSA9IChzaXplX3QpLTI7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoY29udmVydGVkID09IChzaXplX3QpLTEpIHsKQEAgLTExMiw3ICsxNDksOCBAQAogICAgICAgIGlzIEFTQ0lJIChpLmUuIGVzY2FwZSBhbGwgYnl0ZXMgPiAxMjguIFRoaXMgd2lsbCBzdGlsbCByb3VuZHRyaXAKICAgICAgICBjb3JyZWN0bHkgaW4gdGhlIGxvY2FsZSdzIGNoYXJzZXQsIHdoaWNoIG11c3QgYmUgYW4gQVNDSUkgc3VwZXJzZXQuICovCiAgICAgcmVzID0gUHlNZW1fTWFsbG9jKChzdHJsZW4oYXJnKSsxKSpzaXplb2Yod2NoYXJfdCkpOwotICAgIGlmICghcmVzKSBnb3RvIG9vbTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgZ290byBvb207CiAgICAgaW4gPSAodW5zaWduZWQgY2hhciopYXJnOwogICAgIG91dCA9IHJlczsKICAgICB3aGlsZSgqaW4pCkBAIC0xMjYsNyArMTY0LDggQEAKICAgICAgICAgKnNpemUgPSBvdXQgLSByZXM7CiAgICAgcmV0dXJuIHJlczsKIG9vbToKLSAgICBmcHJpbnRmKHN0ZGVyciwgIm91dCBvZiBtZW1vcnlcbiIpOworICAgIGlmIChzaXplICE9IE5VTEwpCisgICAgICAgICpzaXplID0gKHNpemVfdCktMTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMTM3LDEwICsxNzYsMTAgQEAKICAgIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHJldmVyc2Ugb2YgX1B5X2NoYXIyd2NoYXIoKS4KIAogICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCBieXRlIHN0cmluZyAodXNlIFB5TWVtX0ZyZWUoKSB0byBmcmVlCi0gICB0aGUgbWVtb3J5KSwgb3IgTlVMTCBvbiBjb252ZXJzaW9uIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLgorICAgdGhlIG1lbW9yeSksIG9yIE5VTEwgb24gZW5jb2Rpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuCiAKICAgIElmIGVycm9yX3BvcyBpcyBub3QgTlVMTDogKmVycm9yX3BvcyBpcyB0aGUgaW5kZXggb2YgdGhlIGludmFsaWQgY2hhcmFjdGVyCi0gICBvbiBjb252ZXJzaW9uIGVycm9yLCBvciAoc2l6ZV90KS0xIG90aGVyd2lzZS4gKi8KKyAgIG9uIGVuY29kaW5nIGVycm9yLCBvciAoc2l6ZV90KS0xIG90aGVyd2lzZS4gKi8KIGNoYXIqCiBfUHlfd2NoYXIyY2hhcihjb25zdCB3Y2hhcl90ICp0ZXh0LCBzaXplX3QgKmVycm9yX3BvcykKIHsKQEAgLTIzNSw4ICsyNzQsOCBAQAogLyogQ2FsbCBfd3N0YXQoKSBvbiBXaW5kb3dzLCBvciBlbmNvZGUgdGhlIHBhdGggdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kCiAgICBjYWxsIHN0YXQoKSBvdGhlcndpc2UuIE9ubHkgZmlsbCBzdF9tb2RlIGF0dHJpYnV0ZSBvbiBXaW5kb3dzLgogCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBfd3N0YXQoKSAvIHN0YXQoKSBlcnJvciBvciAoaWYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgIHVuaWNvZGUgZXJyb3IuICovCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBfd3N0YXQoKSAvIHN0YXQoKSBlcnJvciwgLTIgaWYgYW4gZXhjZXB0aW9uIHdhcworICAgcmFpc2VkLiAqLwogCiBpbnQKIF9QeV9zdGF0KFB5T2JqZWN0ICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZikKQEAgLTI0NCw4ICsyODMsMTIgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaW50IGVycjsKICAgICBzdHJ1Y3QgX3N0YXQgd3N0YXRidWY7CisgICAgd2NoYXJfdCAqd3BhdGg7CiAKLSAgICBlcnIgPSBfd3N0YXQoUHlVbmljb2RlX0FTX1VOSUNPREUocGF0aCksICZ3c3RhdGJ1Zik7CisgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOworICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTI7CisgICAgZXJyID0gX3dzdGF0KHdwYXRoLCAmd3N0YXRidWYpOwogICAgIGlmICghZXJyKQogICAgICAgICBzdGF0YnVmLT5zdF9tb2RlID0gd3N0YXRidWYuc3RfbW9kZTsKICAgICByZXR1cm4gZXJyOwpAQCAtMjUzLDcgKzI5Niw3IEBACiAgICAgaW50IHJldDsKICAgICBQeU9iamVjdCAqYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOwogICAgIGlmIChieXRlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiAtMjsKICAgICByZXQgPSBzdGF0KFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgc3RhdGJ1Zik7CiAgICAgUHlfREVDUkVGKGJ5dGVzKTsKICAgICByZXR1cm4gcmV0OwpAQCAtMjk3LDE4ICszNDAsMjkgQEAKIF9QeV9mb3BlbihQeU9iamVjdCAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKIHsKICNpZmRlZiBNU19XSU5ET1dTCisgICAgd2NoYXJfdCAqd3BhdGg7CiAgICAgd2NoYXJfdCB3bW9kZVsxMF07CiAgICAgaW50IHVzaXplOwogCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGF0aCkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzdHIgZmlsZSBwYXRoIGV4cGVjdGVkIHVuZGVyIFdpbmRvd3MsIGdvdCAlUiIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHBhdGgpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHdwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwYXRoKTsKKyAgICBpZiAod3BhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB1c2l6ZSA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfQUNQLCAwLCBtb2RlLCAtMSwgd21vZGUsIHNpemVvZih3bW9kZSkpOwogICAgIGlmICh1c2l6ZSA9PSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBfd2ZvcGVuKFB5VW5pY29kZV9BU19VTklDT0RFKHBhdGgpLCB3bW9kZSk7CisgICAgcmV0dXJuIF93Zm9wZW4od3BhdGgsIHdtb2RlKTsKICNlbHNlCiAgICAgRklMRSAqZjsKLSAgICBQeU9iamVjdCAqYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOwotICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihwYXRoLCAmYnl0ZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmID0gZm9wZW4oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBtb2RlKTsKICAgICBQeV9ERUNSRUYoYnl0ZXMpOwpAQCAtMzE5LDcgKzM3Myw3IEBACiAjaWZkZWYgSEFWRV9SRUFETElOSwogCiAvKiBSZWFkIHZhbHVlIG9mIHN5bWJvbGljIGxpbmsuIEVuY29kZSB0aGUgcGF0aCB0byB0aGUgbG9jYWxlIGVuY29kaW5nLCBkZWNvZGUKLSAgIHRoZSByZXN1bHQgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLiAqLworICAgdGhlIHJlc3VsdCBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcuIFJldHVybiAtMSBvbiBlcnJvci4gKi8KIAogaW50CiBfUHlfd3JlYWRsaW5rKGNvbnN0IHdjaGFyX3QgKnBhdGgsIHdjaGFyX3QgKmJ1Ziwgc2l6ZV90IGJ1ZnNpeikKQEAgLTM2Myw3ICs0MTcsOCBAQAogI2lmZGVmIEhBVkVfUkVBTFBBVEgKIAogLyogUmV0dXJuIHRoZSBjYW5vbmljYWxpemVkIGFic29sdXRlIHBhdGhuYW1lLiBFbmNvZGUgcGF0aCB0byB0aGUgbG9jYWxlCi0gICBlbmNvZGluZywgZGVjb2RlIHRoZSByZXN1bHQgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLiAqLworICAgZW5jb2RpbmcsIGRlY29kZSB0aGUgcmVzdWx0IGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZy4KKyAgIFJldHVybiBOVUxMIG9uIGVycm9yLiAqLwogCiB3Y2hhcl90KgogX1B5X3dyZWFscGF0aChjb25zdCB3Y2hhcl90ICpwYXRoLApAQCAtNDAxLDcgKzQ1Niw4IEBACiAjZW5kaWYKIAogLyogR2V0IHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gc2l6ZSBpcyB0aGUgYnVmZmVyIHNpemUgaW4gd2lkZSBjaGFyYWN0ZXJzCi0gICBpbmNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyLiBEZWNvZGUgdGhlIHBhdGggZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLiAqLworICAgaW5jbHVkaW5nIHRoZSBudWxsIGNoYXJhY3Rlci4gRGVjb2RlIHRoZSBwYXRoIGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZy4KKyAgIFJldHVybiBOVUxMIG9uIGVycm9yLiAqLwogCiB3Y2hhcl90KgogX1B5X3dnZXRjd2Qod2NoYXJfdCAqYnVmLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKaW5kZXggYzM1MDkwNy4uYTI2M2VmYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKKysrIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKQEAgLTMsMTIgKzMsMTUzNCBAQAogICAgb2YgaW50Ll9fZmxvYXRfXywgZXRjLiwgdGhhdCB0YWtlIGFuZCByZXR1cm4gdW5pY29kZSBvYmplY3RzICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlICIuLi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oIgorI2luY2x1ZGUgPGxvY2FsZS5oPgorCisvKiBSYWlzZXMgYW4gZXhjZXB0aW9uIGFib3V0IGFuIHVua25vd24gcHJlc2VudGF0aW9uIHR5cGUgZm9yIHRoaXMKKyAqIHR5cGUuICovCisKK3N0YXRpYyB2b2lkCit1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKFB5X1VDUzQgcHJlc2VudGF0aW9uX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVfbmFtZSkKK3sKKyAgICAvKiAlYyBtaWdodCBiZSBvdXQtb2YtcmFuZ2UsIGhlbmNlIHRoZSB0d28gY2FzZXMuICovCisgICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZm9ybWF0IGNvZGUgJyVjJyAiCisgICAgICAgICAgICAgICAgICAgICAiZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgIChjaGFyKXByZXNlbnRhdGlvbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lKTsKKyAgICBlbHNlCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZm9ybWF0IGNvZGUgJ1xceCV4JyAiCisgICAgICAgICAgICAgICAgICAgICAiZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUpOworfQorCitzdGF0aWMgdm9pZAoraW52YWxpZF9jb21tYV90eXBlKFB5X1VDUzQgcHJlc2VudGF0aW9uX3R5cGUpCit7CisgICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICclYycuIiwKKyAgICAgICAgICAgICAgICAgICAgIChjaGFyKXByZXNlbnRhdGlvbl90eXBlKTsKKyAgICBlbHNlCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICdcXHgleCcuIiwKKyAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUpOworfQorCisvKgorICAgIGdldF9pbnRlZ2VyIGNvbnN1bWVzIDAgb3IgbW9yZSBkZWNpbWFsIGRpZ2l0IGNoYXJhY3RlcnMgZnJvbSBhbgorICAgIGlucHV0IHN0cmluZywgdXBkYXRlcyAqcmVzdWx0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpdmUKKyAgICBpbnRlZ2VyLCBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBjb25zdW1lZC4KKworICAgIHJldHVybnMgLTEgb24gZXJyb3IuCisqLworc3RhdGljIGludAorZ2V0X2ludGVnZXIoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCAqcG9zLCBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnJlc3VsdCkKK3sKKyAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yLCBkaWdpdHZhbDsKKyAgICBpbnQgbnVtZGlnaXRzOworICAgIGFjY3VtdWxhdG9yID0gbnVtZGlnaXRzID0gMDsKKyAgICBmb3IgKDs7KCpwb3MpKyssIG51bWRpZ2l0cysrKSB7CisgICAgICAgIGlmICgqcG9zID49IGVuZCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkaWdpdHZhbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLCAqcG9zKSk7CisgICAgICAgIGlmIChkaWdpdHZhbCA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLyoKKyAgICAgICAgICAgRGV0ZWN0IHBvc3NpYmxlIG92ZXJmbG93IGJlZm9yZSBpdCBoYXBwZW5zOgorCisgICAgICAgICAgICAgIGFjY3VtdWxhdG9yICogMTAgKyBkaWdpdHZhbCA+IFBZX1NTSVpFX1RfTUFYIGlmIGFuZCBvbmx5IGlmCisgICAgICAgICAgICAgIGFjY3VtdWxhdG9yID4gKFBZX1NTSVpFX1RfTUFYIC0gZGlnaXR2YWwpIC8gMTAuCisgICAgICAgICovCisgICAgICAgIGlmIChhY2N1bXVsYXRvciA+IChQWV9TU0laRV9UX01BWCAtIGRpZ2l0dmFsKSAvIDEwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgZGVjaW1hbCBkaWdpdHMgaW4gZm9ybWF0IHN0cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGFjY3VtdWxhdG9yID0gYWNjdW11bGF0b3IgKiAxMCArIGRpZ2l0dmFsOworICAgIH0KKyAgICAqcmVzdWx0ID0gYWNjdW11bGF0b3I7CisgICAgcmV0dXJuIG51bWRpZ2l0czsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyIHBhcnNpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiByZXR1cm5zIHRydWUgaWYgdGhpcyBjaGFyYWN0ZXIgaXMgYSBzcGVjaWZpZXIgYWxpZ25tZW50IHRva2VuICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQoraXNfYWxpZ25tZW50X3Rva2VuKFB5X1VDUzQgYykKK3sKKyAgICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlICc8JzogY2FzZSAnPic6IGNhc2UgJz0nOiBjYXNlICdeJzoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCisvKiByZXR1cm5zIHRydWUgaWYgdGhpcyBjaGFyYWN0ZXIgaXMgYSBzaWduIGVsZW1lbnQgKi8KK1B5X0xPQ0FMX0lOTElORShpbnQpCitpc19zaWduX2VsZW1lbnQoUHlfVUNTNCBjKQoreworICAgIHN3aXRjaCAoYykgeworICAgIGNhc2UgJyAnOiBjYXNlICcrJzogY2FzZSAnLSc6CisgICAgICAgIHJldHVybiAxOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KIAogCi0jZGVmaW5lIEZPUk1BVF9TVFJJTkcgIF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWQKLSNkZWZpbmUgRk9STUFUX0xPTkcgICAgX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZAotI2RlZmluZSBGT1JNQVRfRkxPQVQgICBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZAotI2RlZmluZSBGT1JNQVRfQ09NUExFWCBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlfVUNTNCBmaWxsX2NoYXI7CisgICAgUHlfVUNTNCBhbGlnbjsKKyAgICBpbnQgYWx0ZXJuYXRlOworICAgIFB5X1VDUzQgc2lnbjsKKyAgICBQeV9zc2l6ZV90IHdpZHRoOworICAgIGludCB0aG91c2FuZHNfc2VwYXJhdG9yczsKKyAgICBQeV9zc2l6ZV90IHByZWNpc2lvbjsKKyAgICBQeV9VQ1M0IHR5cGU7Cit9IEludGVybmFsRm9ybWF0U3BlYzsKIAotI2luY2x1ZGUgIi4uL09iamVjdHMvc3RyaW5nbGliL2Zvcm1hdHRlci5oIgorI2lmIDAKKy8qIE9jY2Fzc2lvbmFsbHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuIFNob3VsZCBub3JtYWxseSBiZSBjb21tZW50ZWQgb3V0LiAqLworc3RhdGljIHZvaWQKK0RFQlVHX1BSSU5UX0ZPUk1BVF9TUEVDKEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQoreworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IGZpbGxfY2hhciAlZFxuIiwgZm9ybWF0LT5maWxsX2NoYXIpOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IGFsaWduICVkXG4iLCBmb3JtYXQtPmFsaWduKTsKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBhbHRlcm5hdGUgJWRcbiIsIGZvcm1hdC0+YWx0ZXJuYXRlKTsKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBzaWduICVkXG4iLCBmb3JtYXQtPnNpZ24pOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHdpZHRoICV6ZFxuIiwgZm9ybWF0LT53aWR0aCk7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogdGhvdXNhbmRzX3NlcGFyYXRvcnMgJWRcbiIsCisgICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMpOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHByZWNpc2lvbiAlemRcbiIsIGZvcm1hdC0+cHJlY2lzaW9uKTsKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiB0eXBlICVjXG4iLCBmb3JtYXQtPnR5cGUpOworICAgIHByaW50ZigiXG4iKTsKK30KKyNlbmRpZgorCisKKy8qCisgIHB0ciBwb2ludHMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmb3JtYXRfc3BlYywgZW5kIHBvaW50cyBqdXN0IHBhc3QgaXRzIGVuZC4KKyAgZmlsbHMgaW4gZm9ybWF0IHdpdGggdGhlIHBhcnNlZCBpbmZvcm1hdGlvbi4KKyAgcmV0dXJucyAxIG9uIHN1Y2Nlc3MsIDAgb24gZmFpbHVyZS4KKyAgaWYgZmFpbHVyZSwgc2V0cyB0aGUgZXhjZXB0aW9uCisqLworc3RhdGljIGludAorcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRlZmF1bHRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRlZmF1bHRfYWxpZ24pCit7CisgICAgUHlfc3NpemVfdCBwb3MgPSBzdGFydDsKKyAgICAvKiBlbmQtcG9zIGlzIHVzZWQgdGhyb3VnaG91dCB0aGlzIGNvZGUgdG8gc3BlY2lmeSB0aGUgbGVuZ3RoIG9mCisgICAgICAgdGhlIGlucHV0IHN0cmluZyAqLworI2RlZmluZSBSRUFEX3NwZWMoaW5kZXgpIFB5VW5pY29kZV9SRUFEX0NIQVIoZm9ybWF0X3NwZWMsIGluZGV4KQorCisgICAgUHlfc3NpemVfdCBjb25zdW1lZDsKKyAgICBpbnQgYWxpZ25fc3BlY2lmaWVkID0gMDsKKworICAgIGZvcm1hdC0+ZmlsbF9jaGFyID0gJ1wwJzsKKyAgICBmb3JtYXQtPmFsaWduID0gZGVmYXVsdF9hbGlnbjsKKyAgICBmb3JtYXQtPmFsdGVybmF0ZSA9IDA7CisgICAgZm9ybWF0LT5zaWduID0gJ1wwJzsKKyAgICBmb3JtYXQtPndpZHRoID0gLTE7CisgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDA7CisgICAgZm9ybWF0LT5wcmVjaXNpb24gPSAtMTsKKyAgICBmb3JtYXQtPnR5cGUgPSBkZWZhdWx0X3R5cGU7CisKKyAgICAvKiBJZiB0aGUgc2Vjb25kIGNoYXIgaXMgYW4gYWxpZ25tZW50IHRva2VuLAorICAgICAgIHRoZW4gcGFyc2UgdGhlIGZpbGwgY2hhciAqLworICAgIGlmIChlbmQtcG9zID49IDIgJiYgaXNfYWxpZ25tZW50X3Rva2VuKFJFQURfc3BlYyhwb3MrMSkpKSB7CisgICAgICAgIGZvcm1hdC0+YWxpZ24gPSBSRUFEX3NwZWMocG9zKzEpOworICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9IFJFQURfc3BlYyhwb3MpOworICAgICAgICBhbGlnbl9zcGVjaWZpZWQgPSAxOworICAgICAgICBwb3MgKz0gMjsKKyAgICB9CisgICAgZWxzZSBpZiAoZW5kLXBvcyA+PSAxICYmIGlzX2FsaWdubWVudF90b2tlbihSRUFEX3NwZWMocG9zKSkpIHsKKyAgICAgICAgZm9ybWF0LT5hbGlnbiA9IFJFQURfc3BlYyhwb3MpOworICAgICAgICBhbGlnbl9zcGVjaWZpZWQgPSAxOworICAgICAgICArK3BvczsKKyAgICB9CisKKyAgICAvKiBQYXJzZSB0aGUgdmFyaW91cyBzaWduIG9wdGlvbnMgKi8KKyAgICBpZiAoZW5kLXBvcyA+PSAxICYmIGlzX3NpZ25fZWxlbWVudChSRUFEX3NwZWMocG9zKSkpIHsKKyAgICAgICAgZm9ybWF0LT5zaWduID0gUkVBRF9zcGVjKHBvcyk7CisgICAgICAgICsrcG9zOworICAgIH0KKworICAgIC8qIElmIHRoZSBuZXh0IGNoYXJhY3RlciBpcyAjLCB3ZSdyZSBpbiBhbHRlcm5hdGUgbW9kZS4gIFRoaXMgb25seQorICAgICAgIGFwcGxpZXMgdG8gaW50ZWdlcnMuICovCisgICAgaWYgKGVuZC1wb3MgPj0gMSAmJiBSRUFEX3NwZWMocG9zKSA9PSAnIycpIHsKKyAgICAgICAgZm9ybWF0LT5hbHRlcm5hdGUgPSAxOworICAgICAgICArK3BvczsKKyAgICB9CisKKyAgICAvKiBUaGUgc3BlY2lhbCBjYXNlIGZvciAwLXBhZGRpbmcgKGJhY2t3YXJkcyBjb21wYXQpICovCisgICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICdcMCcgJiYgZW5kLXBvcyA+PSAxICYmIFJFQURfc3BlYyhwb3MpID09ICcwJykgeworICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9ICcwJzsKKyAgICAgICAgaWYgKCFhbGlnbl9zcGVjaWZpZWQpIHsKKyAgICAgICAgICAgIGZvcm1hdC0+YWxpZ24gPSAnPSc7CisgICAgICAgIH0KKyAgICAgICAgKytwb3M7CisgICAgfQorCisgICAgY29uc3VtZWQgPSBnZXRfaW50ZWdlcihmb3JtYXRfc3BlYywgJnBvcywgZW5kLCAmZm9ybWF0LT53aWR0aCk7CisgICAgaWYgKGNvbnN1bWVkID09IC0xKQorICAgICAgICAvKiBPdmVyZmxvdyBlcnJvci4gRXhjZXB0aW9uIGFscmVhZHkgc2V0LiAqLworICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIElmIGNvbnN1bWVkIGlzIDAsIHdlIGRpZG4ndCBjb25zdW1lIGFueSBjaGFyYWN0ZXJzIGZvciB0aGUKKyAgICAgICB3aWR0aC4gSW4gdGhhdCBjYXNlLCByZXNldCB0aGUgd2lkdGggdG8gLTEsIGJlY2F1c2UKKyAgICAgICBnZXRfaW50ZWdlcigpIHdpbGwgaGF2ZSBzZXQgaXQgdG8gemVyby4gLTEgaXMgaG93IHdlIHJlY29yZAorICAgICAgIHRoYXQgdGhlIHdpZHRoIHdhc24ndCBzcGVjaWZpZWQuICovCisgICAgaWYgKGNvbnN1bWVkID09IDApCisgICAgICAgIGZvcm1hdC0+d2lkdGggPSAtMTsKKworICAgIC8qIENvbW1hIHNpZ25pZmllcyBhZGQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgKi8KKyAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnLCcpIHsKKyAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDE7CisgICAgICAgICsrcG9zOworICAgIH0KKworICAgIC8qIFBhcnNlIGZpZWxkIHByZWNpc2lvbiAqLworICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcuJykgeworICAgICAgICArK3BvczsKKworICAgICAgICBjb25zdW1lZCA9IGdldF9pbnRlZ2VyKGZvcm1hdF9zcGVjLCAmcG9zLCBlbmQsICZmb3JtYXQtPnByZWNpc2lvbik7CisgICAgICAgIGlmIChjb25zdW1lZCA9PSAtMSkKKyAgICAgICAgICAgIC8qIE92ZXJmbG93IGVycm9yLiBFeGNlcHRpb24gYWxyZWFkeSBzZXQuICovCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAvKiBOb3QgaGF2aW5nIGEgcHJlY2lzaW9uIGFmdGVyIGEgZG90IGlzIGFuIGVycm9yLiAqLworICAgICAgICBpZiAoY29uc3VtZWQgPT0gMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZvcm1hdCBzcGVjaWZpZXIgbWlzc2luZyBwcmVjaXNpb24iKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICB9CisKKyAgICAvKiBGaW5hbGx5LCBwYXJzZSB0aGUgdHlwZSBmaWVsZC4gKi8KKworICAgIGlmIChlbmQtcG9zID4gMSkgeworICAgICAgICAvKiBNb3JlIHRoYW4gb25lIGNoYXIgcmVtYWluLCBpbnZhbGlkIGZvcm1hdCBzcGVjaWZpZXIuICovCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBmb3JtYXQgc3BlY2lmaWVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChlbmQtcG9zID09IDEpIHsKKyAgICAgICAgZm9ybWF0LT50eXBlID0gUkVBRF9zcGVjKHBvcyk7CisgICAgICAgICsrcG9zOworICAgIH0KKworICAgIC8qIERvIGFzIG11Y2ggdmFsaWRhdGluZyBhcyB3ZSBjYW4sIGp1c3QgYnkgbG9va2luZyBhdCB0aGUgZm9ybWF0CisgICAgICAgc3BlY2lmaWVyLiAgRG8gbm90IHRha2UgaW50byBhY2NvdW50IHdoYXQgdHlwZSBvZiBmb3JtYXR0aW5nCisgICAgICAgd2UncmUgZG9pbmcgKGludCwgZmxvYXQsIHN0cmluZykuICovCisKKyAgICBpZiAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycykgeworICAgICAgICBzd2l0Y2ggKGZvcm1hdC0+dHlwZSkgeworICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgY2FzZSAnZSc6CisgICAgICAgIGNhc2UgJ2YnOgorICAgICAgICBjYXNlICdnJzoKKyAgICAgICAgY2FzZSAnRSc6CisgICAgICAgIGNhc2UgJ0cnOgorICAgICAgICBjYXNlICclJzoKKyAgICAgICAgY2FzZSAnRic6CisgICAgICAgIGNhc2UgJ1wwJzoKKyAgICAgICAgICAgIC8qIFRoZXNlIGFyZSBhbGxvd2VkLiBTZWUgUEVQIDM3OC4qLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpbnZhbGlkX2NvbW1hX3R5cGUoZm9ybWF0LT50eXBlKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0IChmb3JtYXQtPmFsaWduIDw9IDEyNyk7CisgICAgYXNzZXJ0IChmb3JtYXQtPnNpZ24gPD0gMTI3KTsKKyAgICByZXR1cm4gMTsKK30KKworLyogQ2FsY3VsYXRlIHRoZSBwYWRkaW5nIG5lZWRlZC4gKi8KK3N0YXRpYyB2b2lkCitjYWxjX3BhZGRpbmcoUHlfc3NpemVfdCBuY2hhcnMsIFB5X3NzaXplX3Qgd2lkdGgsIFB5X1VDUzQgYWxpZ24sCisgICAgICAgICAgICAgUHlfc3NpemVfdCAqbl9scGFkZGluZywgUHlfc3NpemVfdCAqbl9ycGFkZGluZywKKyAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX3RvdGFsKQoreworICAgIGlmICh3aWR0aCA+PSAwKSB7CisgICAgICAgIGlmIChuY2hhcnMgPiB3aWR0aCkKKyAgICAgICAgICAgICpuX3RvdGFsID0gbmNoYXJzOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqbl90b3RhbCA9IHdpZHRoOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogbm90IHNwZWNpZmllZCwgdXNlIGFsbCBvZiB0aGUgY2hhcnMgYW5kIG5vIG1vcmUgKi8KKyAgICAgICAgKm5fdG90YWwgPSBuY2hhcnM7CisgICAgfQorCisgICAgLyogRmlndXJlIG91dCBob3cgbXVjaCBsZWFkaW5nIHNwYWNlIHdlIG5lZWQsIGJhc2VkIG9uIHRoZQorICAgICAgIGFsaWduaW5nICovCisgICAgaWYgKGFsaWduID09ICc+JykKKyAgICAgICAgKm5fbHBhZGRpbmcgPSAqbl90b3RhbCAtIG5jaGFyczsKKyAgICBlbHNlIGlmIChhbGlnbiA9PSAnXicpCisgICAgICAgICpuX2xwYWRkaW5nID0gKCpuX3RvdGFsIC0gbmNoYXJzKSAvIDI7CisgICAgZWxzZSBpZiAoYWxpZ24gPT0gJzwnIHx8IGFsaWduID09ICc9JykKKyAgICAgICAgKm5fbHBhZGRpbmcgPSAwOworICAgIGVsc2UgeworICAgICAgICAvKiBXZSBzaG91bGQgbmV2ZXIgaGF2ZSBhbiB1bnNwZWNpZmllZCBhbGlnbm1lbnQuICovCisgICAgICAgICpuX2xwYWRkaW5nID0gMDsKKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KKworICAgICpuX3JwYWRkaW5nID0gKm5fdG90YWwgLSBuY2hhcnMgLSAqbl9scGFkZGluZzsKK30KKworLyogRG8gdGhlIHBhZGRpbmcsIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBjYWxsZXItc3VwcGxpZWQKKyAgIGNvbnRlbnQgZ29lcy4gKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitmaWxsX3BhZGRpbmcoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgIFB5X3NzaXplX3QgbmNoYXJzLAorICAgICAgICAgICAgIFB5X1VDUzQgZmlsbF9jaGFyLCBQeV9zc2l6ZV90IG5fbHBhZGRpbmcsCisgICAgICAgICAgICAgUHlfc3NpemVfdCBuX3JwYWRkaW5nKQoreworICAgIFB5X3NzaXplX3QgcG9zOworCisgICAgLyogUGFkIG9uIGxlZnQuICovCisgICAgaWYgKG5fbHBhZGRpbmcpIHsKKyAgICAgICAgcG9zID0gd3JpdGVyLT5wb3M7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdEZpbGwod3JpdGVyLT5idWZmZXIsIHBvcywgbl9scGFkZGluZywgZmlsbF9jaGFyKTsKKyAgICB9CisKKyAgICAvKiBQYWQgb24gcmlnaHQuICovCisgICAgaWYgKG5fcnBhZGRpbmcpIHsKKyAgICAgICAgcG9zID0gd3JpdGVyLT5wb3MgKyBuY2hhcnMgKyBuX2xwYWRkaW5nOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RGaWxsKHdyaXRlci0+YnVmZmVyLCBwb3MsIG5fcnBhZGRpbmcsIGZpbGxfY2hhcik7CisgICAgfQorCisgICAgLyogUG9pbnRlciB0byB0aGUgdXNlciBjb250ZW50LiAqLworICAgIHdyaXRlci0+cG9zICs9IG5fbHBhZGRpbmc7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogY29tbW9uIHJvdXRpbmVzIGZvciBudW1lcmljIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogTG9jYWxlIHR5cGUgY29kZXMuICovCisjZGVmaW5lIExUX0NVUlJFTlRfTE9DQUxFIDAKKyNkZWZpbmUgTFRfREVGQVVMVF9MT0NBTEUgMQorI2RlZmluZSBMVF9OT19MT0NBTEUgMgorCisvKiBMb2NhbGUgaW5mbyBuZWVkZWQgZm9yIGZvcm1hdHRpbmcgaW50ZWdlcnMgYW5kIHRoZSBwYXJ0IG9mIGZsb2F0cworICAgYmVmb3JlIGFuZCBpbmNsdWRpbmcgdGhlIGRlY2ltYWwuIE5vdGUgdGhhdCBsb2NhbGVzIG9ubHkgc3VwcG9ydAorICAgOC1iaXQgY2hhcnMsIG5vdCB1bmljb2RlLiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpkZWNpbWFsX3BvaW50OworICAgIFB5T2JqZWN0ICp0aG91c2FuZHNfc2VwOworICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nOworfSBMb2NhbGVJbmZvOworCisjZGVmaW5lIFNUQVRJQ19MT0NBTEVfSU5GT19JTklUIHswLCAwLCAwfQorCisvKiBkZXNjcmliZXMgdGhlIGxheW91dCBmb3IgYW4gaW50ZWdlciwgc2VlIHRoZSBjb21tZW50IGluCisgICBjYWxjX251bWJlcl93aWR0aHMoKSBmb3IgZGV0YWlscyAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5X3NzaXplX3Qgbl9scGFkZGluZzsKKyAgICBQeV9zc2l6ZV90IG5fcHJlZml4OworICAgIFB5X3NzaXplX3Qgbl9zcGFkZGluZzsKKyAgICBQeV9zc2l6ZV90IG5fcnBhZGRpbmc7CisgICAgY2hhciBzaWduOworICAgIFB5X3NzaXplX3Qgbl9zaWduOyAgICAgIC8qIG51bWJlciBvZiBkaWdpdHMgbmVlZGVkIGZvciBzaWduICgwLzEpICovCisgICAgUHlfc3NpemVfdCBuX2dyb3VwZWRfZGlnaXRzOyAvKiBTcGFjZSB0YWtlbiB1cCBieSB0aGUgZGlnaXRzLCBpbmNsdWRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBncm91cGluZyBjaGFycy4gKi8KKyAgICBQeV9zc2l6ZV90IG5fZGVjaW1hbDsgICAvKiAwIGlmIG9ubHkgYW4gaW50ZWdlciAqLworICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXI7IC8qIERpZ2l0cyBpbiBkZWNpbWFsIGFuZC9vciBleHBvbmVudCBwYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGluZyB0aGUgZGVjaW1hbCBpdHNlbGYsIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudC4gKi8KKworICAgIC8qIFRoZXNlIDIgYXJlIG5vdCB0aGUgd2lkdGhzIG9mIGZpZWxkcywgYnV0IGFyZSBuZWVkZWQgYnkKKyAgICAgICBTVFJJTkdMSUJfR1JPVVBJTkcuICovCisgICAgUHlfc3NpemVfdCBuX2RpZ2l0czsgICAgLyogVGhlIG51bWJlciBvZiBkaWdpdHMgYmVmb3JlIGEgZGVjaW1hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGV4cG9uZW50LiAqLworICAgIFB5X3NzaXplX3Qgbl9taW5fd2lkdGg7IC8qIFRoZSBtaW5fd2lkdGggd2UgdXNlZCB3aGVuIHdlIGNvbXB1dGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5fZ3JvdXBlZF9kaWdpdHMgd2lkdGguICovCit9IE51bWJlckZpZWxkV2lkdGhzOworCisKKy8qIEdpdmVuIGEgbnVtYmVyIG9mIHRoZSBmb3JtOgorICAgZGlnaXRzW3JlbWFpbmRlcl0KKyAgIHdoZXJlIHB0ciBwb2ludHMgdG8gdGhlIHN0YXJ0IGFuZCBlbmQgcG9pbnRzIHRvIHRoZSBlbmQsIGZpbmQgd2hlcmUKKyAgICB0aGUgaW50ZWdlciBwYXJ0IGVuZHMuIFRoaXMgY291bGQgYmUgYSBkZWNpbWFsLCBhbiBleHBvbmVudCwgYm90aCwKKyAgICBvciBuZWl0aGVyLgorICAgSWYgYSBkZWNpbWFsIHBvaW50IGlzIHByZXNlbnQsIHNldCAqaGFzX2RlY2ltYWwgYW5kIGluY3JlbWVudAorICAgIHJlbWFpbmRlciBiZXlvbmQgaXQuCisgICBSZXN1bHRzIGFyZSB1bmRlZmluZWQgKGJ1dCBzaG91bGRuJ3QgY3Jhc2gpIGZvciBpbXByb3Blcmx5CisgICAgZm9ybWF0dGVkIHN0cmluZ3MuCisqLworc3RhdGljIHZvaWQKK3BhcnNlX251bWJlcihQeU9iamVjdCAqcywgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fcmVtYWluZGVyLCBpbnQgKmhhc19kZWNpbWFsKQoreworICAgIFB5X3NzaXplX3QgcmVtYWluZGVyOworCisgICAgd2hpbGUgKHBvczxlbmQgJiYgaXNkaWdpdChQeVVuaWNvZGVfUkVBRF9DSEFSKHMsIHBvcykpKQorICAgICAgICArK3BvczsKKyAgICByZW1haW5kZXIgPSBwb3M7CisKKyAgICAvKiBEb2VzIHJlbWFpbmRlciBzdGFydCB3aXRoIGEgZGVjaW1hbCBwb2ludD8gKi8KKyAgICAqaGFzX2RlY2ltYWwgPSBwb3M8ZW5kICYmIFB5VW5pY29kZV9SRUFEX0NIQVIocywgcmVtYWluZGVyKSA9PSAnLic7CisKKyAgICAvKiBTa2lwIHRoZSBkZWNpbWFsIHBvaW50LiAqLworICAgIGlmICgqaGFzX2RlY2ltYWwpCisgICAgICAgIHJlbWFpbmRlcisrOworCisgICAgKm5fcmVtYWluZGVyID0gZW5kIC0gcmVtYWluZGVyOworfQorCisvKiBub3QgYWxsIGZpZWxkcyBvZiBmb3JtYXQgYXJlIHVzZWQuICBmb3IgZXhhbXBsZSwgcHJlY2lzaW9uIGlzCisgICB1bnVzZWQuICBzaG91bGQgdGhpcyB0YWtlIGRpc2NyZXRlIHBhcmFtcyBpbiBvcmRlciB0byBiZSBtb3JlIGNsZWFyCisgICBhYm91dCB3aGF0IGl0IGRvZXM/ICBvciBpcyBwYXNzaW5nIGEgc2luZ2xlIGZvcm1hdCBwYXJhbWV0ZXIgZWFzaWVyCisgICBhbmQgbW9yZSBlZmZpY2llbnQgZW5vdWdoIHRvIGp1c3RpZnkgYSBsaXR0bGUgb2JmdXNjYXRpb24/ICovCitzdGF0aWMgUHlfc3NpemVfdAorY2FsY19udW1iZXJfd2lkdGhzKE51bWJlckZpZWxkV2lkdGhzICpzcGVjLCBQeV9zc2l6ZV90IG5fcHJlZml4LAorICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgc2lnbl9jaGFyLCBQeU9iamVjdCAqbnVtYmVyLCBQeV9zc2l6ZV90IG5fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2VuZCwgUHlfc3NpemVfdCBuX3JlbWFpbmRlciwKKyAgICAgICAgICAgICAgICAgICBpbnQgaGFzX2RlY2ltYWwsIGNvbnN0IExvY2FsZUluZm8gKmxvY2FsZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nOworICAgIFB5X3NzaXplX3Qgbl9wYWRkaW5nOworCisgICAgc3BlYy0+bl9kaWdpdHMgPSBuX2VuZCAtIG5fc3RhcnQgLSBuX3JlbWFpbmRlciAtIChoYXNfZGVjaW1hbD8xOjApOworICAgIHNwZWMtPm5fbHBhZGRpbmcgPSAwOworICAgIHNwZWMtPm5fcHJlZml4ID0gbl9wcmVmaXg7CisgICAgc3BlYy0+bl9kZWNpbWFsID0gaGFzX2RlY2ltYWwgPyBQeVVuaWNvZGVfR0VUX0xFTkdUSChsb2NhbGUtPmRlY2ltYWxfcG9pbnQpIDogMDsKKyAgICBzcGVjLT5uX3JlbWFpbmRlciA9IG5fcmVtYWluZGVyOworICAgIHNwZWMtPm5fc3BhZGRpbmcgPSAwOworICAgIHNwZWMtPm5fcnBhZGRpbmcgPSAwOworICAgIHNwZWMtPnNpZ24gPSAnXDAnOworICAgIHNwZWMtPm5fc2lnbiA9IDA7CisKKyAgICAvKiB0aGUgb3V0cHV0IHdpbGwgbG9vayBsaWtlOgorICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICB8IDxscGFkZGluZz4gPHNpZ24+IDxwcmVmaXg+IDxzcGFkZGluZz4gPGdyb3VwZWRfZGlnaXRzPiA8ZGVjaW1hbD4gPHJlbWFpbmRlcj4gPHJwYWRkaW5nPiB8CisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisgICAgICAgc2lnbiBpcyBjb21wdXRlZCBmcm9tIGZvcm1hdC0+c2lnbiBhbmQgdGhlIGFjdHVhbAorICAgICAgIHNpZ24gb2YgdGhlIG51bWJlcgorCisgICAgICAgcHJlZml4IGlzIGdpdmVuIChpdCdzIGZvciB0aGUgJzB4JyBwcmVmaXgpCisKKyAgICAgICBkaWdpdHMgaXMgYWxyZWFkeSBrbm93bgorCisgICAgICAgdGhlIHRvdGFsIHdpZHRoIGlzIGVpdGhlciBnaXZlbiwgb3IgY29tcHV0ZWQgZnJvbSB0aGUKKyAgICAgICBhY3R1YWwgZGlnaXRzCisKKyAgICAgICBvbmx5IG9uZSBvZiBscGFkZGluZywgc3BhZGRpbmcsIGFuZCBycGFkZGluZyBjYW4gYmUgbm9uLXplcm8sCisgICAgICAgYW5kIGl0J3MgY2FsY3VsYXRlZCBmcm9tIHRoZSB3aWR0aCBhbmQgb3RoZXIgZmllbGRzCisgICAgKi8KKworICAgIC8qIGNvbXB1dGUgdGhlIHZhcmlvdXMgcGFydHMgd2UncmUgZ29pbmcgdG8gd3JpdGUgKi8KKyAgICBzd2l0Y2ggKGZvcm1hdC0+c2lnbikgeworICAgIGNhc2UgJysnOgorICAgICAgICAvKiBhbHdheXMgcHV0IGEgKyBvciAtICovCisgICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7CisgICAgICAgIHNwZWMtPnNpZ24gPSAoc2lnbl9jaGFyID09ICctJyA/ICctJyA6ICcrJyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJyAnOgorICAgICAgICBzcGVjLT5uX3NpZ24gPSAxOworICAgICAgICBzcGVjLT5zaWduID0gKHNpZ25fY2hhciA9PSAnLScgPyAnLScgOiAnICcpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiBOb3Qgc3BlY2lmaWVkLCBvciB0aGUgZGVmYXVsdCAoLSkgKi8KKyAgICAgICAgaWYgKHNpZ25fY2hhciA9PSAnLScpIHsKKyAgICAgICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7CisgICAgICAgICAgICBzcGVjLT5zaWduID0gJy0nOworICAgICAgICB9CisgICAgfQorCisgICAgLyogVGhlIG51bWJlciBvZiBjaGFycyB1c2VkIGZvciBub24tZGlnaXRzIGFuZCBub24tcGFkZGluZy4gKi8KKyAgICBuX25vbl9kaWdpdF9ub25fcGFkZGluZyA9IHNwZWMtPm5fc2lnbiArIHNwZWMtPm5fcHJlZml4ICsgc3BlYy0+bl9kZWNpbWFsICsKKyAgICAgICAgc3BlYy0+bl9yZW1haW5kZXI7CisKKyAgICAvKiBtaW5fd2lkdGggY2FuIGdvIG5lZ2F0aXZlLCB0aGF0J3Mgb2theS4gZm9ybWF0LT53aWR0aCA9PSAtMSBtZWFucworICAgICAgIHdlIGRvbid0IGNhcmUuICovCisgICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICcwJyAmJiBmb3JtYXQtPmFsaWduID09ICc9JykKKyAgICAgICAgc3BlYy0+bl9taW5fd2lkdGggPSBmb3JtYXQtPndpZHRoIC0gbl9ub25fZGlnaXRfbm9uX3BhZGRpbmc7CisgICAgZWxzZQorICAgICAgICBzcGVjLT5uX21pbl93aWR0aCA9IDA7CisKKyAgICBpZiAoc3BlYy0+bl9kaWdpdHMgPT0gMCkKKyAgICAgICAgLyogVGhpcyBjYXNlIG9ubHkgb2NjdXJzIHdoZW4gdXNpbmcgJ2MnIGZvcm1hdHRpbmcsIHdlIG5lZWQKKyAgICAgICAgICAgdG8gc3BlY2lhbCBjYXNlIGl0IGJlY2F1c2UgdGhlIGdyb3VwaW5nIGNvZGUgYWx3YXlzIHdhbnRzCisgICAgICAgICAgIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGNoYXJhY3Rlci4gKi8KKyAgICAgICAgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIFB5X1VDUzQgZ3JvdXBpbmdfbWF4Y2hhcjsKKyAgICAgICAgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyA9IF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgMCwgTlVMTCwKKyAgICAgICAgICAgIHNwZWMtPm5fZGlnaXRzLCBzcGVjLT5uX21pbl93aWR0aCwKKyAgICAgICAgICAgIGxvY2FsZS0+Z3JvdXBpbmcsIGxvY2FsZS0+dGhvdXNhbmRzX3NlcCwgJmdyb3VwaW5nX21heGNoYXIpOworICAgICAgICAqbWF4Y2hhciA9IFB5X01BWCgqbWF4Y2hhciwgZ3JvdXBpbmdfbWF4Y2hhcik7CisgICAgfQorCisgICAgLyogR2l2ZW4gdGhlIGRlc2lyZWQgd2lkdGggYW5kIHRoZSB0b3RhbCBvZiBkaWdpdCBhbmQgbm9uLWRpZ2l0CisgICAgICAgc3BhY2Ugd2UgY29uc3VtZSwgc2VlIGlmIHdlIG5lZWQgYW55IHBhZGRpbmcuIGZvcm1hdC0+d2lkdGggY2FuCisgICAgICAgYmUgbmVnYXRpdmUgKG1lYW5pbmcgbm8gcGFkZGluZyksIGJ1dCB0aGlzIGNvZGUgc3RpbGwgd29ya3MgaW4KKyAgICAgICB0aGF0IGNhc2UuICovCisgICAgbl9wYWRkaW5nID0gZm9ybWF0LT53aWR0aCAtCisgICAgICAgICAgICAgICAgICAgICAgICAobl9ub25fZGlnaXRfbm9uX3BhZGRpbmcgKyBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzKTsKKyAgICBpZiAobl9wYWRkaW5nID4gMCkgeworICAgICAgICAvKiBTb21lIHBhZGRpbmcgaXMgbmVlZGVkLiBEZXRlcm1pbmUgaWYgaXQncyBsZWZ0LCBzcGFjZSwgb3IgcmlnaHQuICovCisgICAgICAgIHN3aXRjaCAoZm9ybWF0LT5hbGlnbikgeworICAgICAgICBjYXNlICc8JzoKKyAgICAgICAgICAgIHNwZWMtPm5fcnBhZGRpbmcgPSBuX3BhZGRpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnXic6CisgICAgICAgICAgICBzcGVjLT5uX2xwYWRkaW5nID0gbl9wYWRkaW5nIC8gMjsKKyAgICAgICAgICAgIHNwZWMtPm5fcnBhZGRpbmcgPSBuX3BhZGRpbmcgLSBzcGVjLT5uX2xwYWRkaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJz0nOgorICAgICAgICAgICAgc3BlYy0+bl9zcGFkZGluZyA9IG5fcGFkZGluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICc+JzoKKyAgICAgICAgICAgIHNwZWMtPm5fbHBhZGRpbmcgPSBuX3BhZGRpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8qIFNob3VsZG4ndCBnZXQgaGVyZSwgYnV0IHRyZWF0IGl0IGFzICc+JyAqLworICAgICAgICAgICAgc3BlYy0+bl9scGFkZGluZyA9IG5fcGFkZGluZzsKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNwZWMtPm5fbHBhZGRpbmcgfHwgc3BlYy0+bl9zcGFkZGluZyB8fCBzcGVjLT5uX3JwYWRkaW5nKQorICAgICAgICAqbWF4Y2hhciA9IFB5X01BWCgqbWF4Y2hhciwgZm9ybWF0LT5maWxsX2NoYXIpOworCisgICAgaWYgKHNwZWMtPm5fZGVjaW1hbCkKKyAgICAgICAgKm1heGNoYXIgPSBQeV9NQVgoKm1heGNoYXIsIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShsb2NhbGUtPmRlY2ltYWxfcG9pbnQpKTsKKworICAgIHJldHVybiBzcGVjLT5uX2xwYWRkaW5nICsgc3BlYy0+bl9zaWduICsgc3BlYy0+bl9wcmVmaXggKworICAgICAgICBzcGVjLT5uX3NwYWRkaW5nICsgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyArIHNwZWMtPm5fZGVjaW1hbCArCisgICAgICAgIHNwZWMtPm5fcmVtYWluZGVyICsgc3BlYy0+bl9ycGFkZGluZzsKK30KKworLyogRmlsbCBpbiB0aGUgZGlnaXQgcGFydHMgb2YgYSBudW1iZXJzJ3Mgc3RyaW5nIHJlcHJlc2VudGF0aW9uLAorICAgYXMgZGV0ZXJtaW5lZCBpbiBjYWxjX251bWJlcl93aWR0aHMoKS4KKyAgIFJldHVybiAtMSBvbiBlcnJvciwgb3IgMCBvbiBzdWNjZXNzLiAqLworc3RhdGljIGludAorZmlsbF9udW1iZXIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBjb25zdCBOdW1iZXJGaWVsZFdpZHRocyAqc3BlYywKKyAgICAgICAgICAgIFB5T2JqZWN0ICpkaWdpdHMsIFB5X3NzaXplX3QgZF9zdGFydCwgUHlfc3NpemVfdCBkX2VuZCwKKyAgICAgICAgICAgIFB5T2JqZWN0ICpwcmVmaXgsIFB5X3NzaXplX3QgcF9zdGFydCwKKyAgICAgICAgICAgIFB5X1VDUzQgZmlsbF9jaGFyLAorICAgICAgICAgICAgTG9jYWxlSW5mbyAqbG9jYWxlLCBpbnQgdG91cHBlcikKK3sKKyAgICAvKiBVc2VkIHRvIGtlZXAgdHJhY2sgb2YgZGlnaXRzLCBkZWNpbWFsLCBhbmQgcmVtYWluZGVyLiAqLworICAgIFB5X3NzaXplX3QgZF9wb3MgPSBkX3N0YXJ0OworICAgIGNvbnN0IGVudW0gUHlVbmljb2RlX0tpbmQga2luZCA9IHdyaXRlci0+a2luZDsKKyAgICBjb25zdCB2b2lkICpkYXRhID0gd3JpdGVyLT5kYXRhOworICAgIFB5X3NzaXplX3QgcjsKKworICAgIGlmIChzcGVjLT5uX2xwYWRkaW5nKSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdEZpbGwod3JpdGVyLT5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5wb3MsIHNwZWMtPm5fbHBhZGRpbmcsIGZpbGxfY2hhcik7CisgICAgICAgIHdyaXRlci0+cG9zICs9IHNwZWMtPm5fbHBhZGRpbmc7CisgICAgfQorICAgIGlmIChzcGVjLT5uX3NpZ24gPT0gMSkgeworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLT5wb3MsIHNwZWMtPnNpZ24pOworICAgICAgICB3cml0ZXItPnBvcysrOworICAgIH0KKyAgICBpZiAoc3BlYy0+bl9wcmVmaXgpIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHBfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMtPm5fcHJlZml4KTsKKyAgICAgICAgaWYgKHRvdXBwZXIpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgdDsKKyAgICAgICAgICAgIGZvciAodCA9IDA7IHQgPCBzcGVjLT5uX3ByZWZpeDsgdCsrKSB7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgd3JpdGVyLT5wb3MgKyB0KTsKKyAgICAgICAgICAgICAgICBjID0gUHlfVE9VUFBFUihjKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQgKGMgPD0gMTI3KTsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLT5wb3MgKyB0LCBjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX3ByZWZpeDsKKyAgICB9CisgICAgaWYgKHNwZWMtPm5fc3BhZGRpbmcpIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0RmlsbCh3cml0ZXItPmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPnBvcywgc3BlYy0+bl9zcGFkZGluZywgZmlsbF9jaGFyKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9zcGFkZGluZzsKKyAgICB9CisKKyAgICAvKiBPbmx5IGZvciB0eXBlICdjJyBzcGVjaWFsIGNhc2UsIGl0IGhhcyBubyBkaWdpdHMuICovCisgICAgaWYgKHNwZWMtPm5fZGlnaXRzICE9IDApIHsKKyAgICAgICAgLyogRmlsbCB0aGUgZGlnaXRzIHdpdGggSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcuICovCisgICAgICAgIGNoYXIgKnBkaWdpdHM7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZGlnaXRzKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcGRpZ2l0cyA9IFB5VW5pY29kZV9EQVRBKGRpZ2l0cyk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfS0lORChkaWdpdHMpIDwga2luZCkgeworICAgICAgICAgICAgcGRpZ2l0cyA9IF9QeVVuaWNvZGVfQXNLaW5kKGRpZ2l0cywga2luZCk7CisgICAgICAgICAgICBpZiAocGRpZ2l0cyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByID0gX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICAgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cywKKyAgICAgICAgICAgICAgICBwZGlnaXRzICsga2luZCAqIGRfcG9zLAorICAgICAgICAgICAgICAgIHNwZWMtPm5fZGlnaXRzLCBzcGVjLT5uX21pbl93aWR0aCwKKyAgICAgICAgICAgICAgICBsb2NhbGUtPmdyb3VwaW5nLCBsb2NhbGUtPnRob3VzYW5kc19zZXAsIE5VTEwpOworICAgICAgICBpZiAociA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgYXNzZXJ0KHIgPT0gc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfS0lORChkaWdpdHMpIDwga2luZCkKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUocGRpZ2l0cyk7CisgICAgICAgIGRfcG9zICs9IHNwZWMtPm5fZGlnaXRzOworICAgIH0KKyAgICBpZiAodG91cHBlcikgeworICAgICAgICBQeV9zc2l6ZV90IHQ7CisgICAgICAgIGZvciAodCA9IDA7IHQgPCBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzOyB0KyspIHsKKyAgICAgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHdyaXRlci0+cG9zICsgdCk7CisgICAgICAgICAgICBjID0gUHlfVE9VUFBFUihjKTsKKyAgICAgICAgICAgIGlmIChjID4gMTI3KSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAibm9uLWFzY2lpIGdyb3VwZWQgZGlnaXQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLT5wb3MgKyB0LCBjKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzOworCisgICAgaWYgKHNwZWMtPm5fZGVjaW1hbCkgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygKKyAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywKKyAgICAgICAgICAgIGxvY2FsZS0+ZGVjaW1hbF9wb2ludCwgMCwgc3BlYy0+bl9kZWNpbWFsKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9kZWNpbWFsOworICAgICAgICBkX3BvcyArPSAxOworICAgIH0KKworICAgIGlmIChzcGVjLT5uX3JlbWFpbmRlcikgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygKKyAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywKKyAgICAgICAgICAgIGRpZ2l0cywgZF9wb3MsIHNwZWMtPm5fcmVtYWluZGVyKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9yZW1haW5kZXI7CisgICAgICAgIC8qIGRfcG9zICs9IHNwZWMtPm5fcmVtYWluZGVyOyAqLworICAgIH0KKworICAgIGlmIChzcGVjLT5uX3JwYWRkaW5nKSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdEZpbGwod3JpdGVyLT5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5wb3MsIHNwZWMtPm5fcnBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbF9jaGFyKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9ycGFkZGluZzsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjaGFyIG5vX2dyb3VwaW5nWzFdID0ge0NIQVJfTUFYfTsKKworLyogRmluZCB0aGUgZGVjaW1hbCBwb2ludCBjaGFyYWN0ZXIocz8pLCB0aG91c2FuZHNfc2VwYXJhdG9yKHM/KSwgYW5kCisgICBncm91cGluZyBkZXNjcmlwdGlvbiwgZWl0aGVyIGZvciB0aGUgY3VycmVudCBsb2NhbGUgaWYgdHlwZSBpcworICAgTFRfQ1VSUkVOVF9MT0NBTEUsIGEgaGFyZC1jb2RlZCBsb2NhbGUgaWYgTFRfREVGQVVMVF9MT0NBTEUsIG9yCisgICBub25lIGlmIExUX05PX0xPQ0FMRS4gKi8KK3N0YXRpYyBpbnQKK2dldF9sb2NhbGVfaW5mbyhpbnQgdHlwZSwgTG9jYWxlSW5mbyAqbG9jYWxlX2luZm8pCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMVF9DVVJSRU5UX0xPQ0FMRTogeworICAgICAgICBzdHJ1Y3QgbGNvbnYgKmxvY2FsZV9kYXRhID0gbG9jYWxlY29udigpOworICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZV9kYXRhLT5kZWNpbWFsX3BvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgaWYgKGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlX2RhdGEtPnRob3VzYW5kc19zZXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBpZiAobG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50KTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSBsb2NhbGVfZGF0YS0+Z3JvdXBpbmc7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExUX0RFRkFVTFRfTE9DQUxFOgorICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLicpOworICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLCcpOworICAgICAgICBpZiAoIWxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50IHx8ICFsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSAiXDMiOyAvKiBHcm91cCBldmVyeSAzIGNoYXJhY3RlcnMuICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltcGxpY2l0KSB0cmFpbGluZyAwIG1lYW5zIHJlcGVhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZWx5LiAqLworICAgICAgICBicmVhazsKKyAgICBjYXNlIExUX05PX0xPQ0FMRToKKyAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJy4nKTsKKyAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSBQeVVuaWNvZGVfTmV3KDAsIDApOworICAgICAgICBpZiAoIWxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50IHx8ICFsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSBub19ncm91cGluZzsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2ZyZWVfbG9jYWxlX2luZm8oTG9jYWxlSW5mbyAqbG9jYWxlX2luZm8pCit7CisgICAgUHlfWERFQ1JFRihsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCk7CisgICAgUHlfWERFQ1JFRihsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogc3RyaW5nIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludAorZm9ybWF0X3N0cmluZ19pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgUHlfc3NpemVfdCBscGFkOworICAgIFB5X3NzaXplX3QgcnBhZDsKKyAgICBQeV9zc2l6ZV90IHRvdGFsOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHZhbHVlKSk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodmFsdWUpOworCisgICAgLyogc2lnbiBpcyBub3QgYWxsb3dlZCBvbiBzdHJpbmdzICovCisgICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnXDAnKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlNpZ24gbm90IGFsbG93ZWQgaW4gc3RyaW5nIGZvcm1hdCBzcGVjaWZpZXIiKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIC8qIGFsdGVybmF0ZSBpcyBub3QgYWxsb3dlZCBvbiBzdHJpbmdzICovCisgICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkFsdGVybmF0ZSBmb3JtICgjKSBub3QgYWxsb3dlZCBpbiBzdHJpbmcgZm9ybWF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZXIiKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIC8qICc9JyBhbGlnbm1lbnQgbm90IGFsbG93ZWQgb24gc3RyaW5ncyAqLworICAgIGlmIChmb3JtYXQtPmFsaWduID09ICc9JykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInPScgYWxpZ25tZW50IG5vdCBhbGxvd2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbiBzdHJpbmcgZm9ybWF0IHNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgaWYgKGZvcm1hdC0+d2lkdGggPT0gLTEgJiYgZm9ybWF0LT5wcmVjaXNpb24gPT0gLTEpIHsKKyAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgdmFsdWUpOworICAgIH0KKworICAgIC8qIGlmIHByZWNpc2lvbiBpcyBzcGVjaWZpZWQsIG91dHB1dCBubyBtb3JlIHRoYXQgZm9ybWF0LnByZWNpc2lvbgorICAgICAgIGNoYXJhY3RlcnMgKi8KKyAgICBpZiAoZm9ybWF0LT5wcmVjaXNpb24gPj0gMCAmJiBsZW4gPj0gZm9ybWF0LT5wcmVjaXNpb24pIHsKKyAgICAgICAgbGVuID0gZm9ybWF0LT5wcmVjaXNpb247CisgICAgfQorCisgICAgY2FsY19wYWRkaW5nKGxlbiwgZm9ybWF0LT53aWR0aCwgZm9ybWF0LT5hbGlnbiwgJmxwYWQsICZycGFkLCAmdG90YWwpOworCisgICAgbWF4Y2hhciA9IF9QeVVuaWNvZGVfRmluZE1heENoYXIodmFsdWUsIDAsIGxlbik7CisgICAgaWYgKGxwYWQgIT0gMCB8fCBycGFkICE9IDApCisgICAgICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgZm9ybWF0LT5maWxsX2NoYXIpOworCisgICAgLyogYWxsb2NhdGUgdGhlIHJlc3VsdGluZyBzdHJpbmcgKi8KKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgdG90YWwsIG1heGNoYXIpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBXcml0ZSBpbnRvIHRoYXQgc3BhY2UuIEZpcnN0IHRoZSBwYWRkaW5nLiAqLworICAgIHJlc3VsdCA9IGZpbGxfcGFkZGluZyh3cml0ZXIsIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXI9PSdcMCc/JyAnOmZvcm1hdC0+ZmlsbF9jaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBscGFkLCBycGFkKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBUaGVuIHRoZSBzb3VyY2Ugc3RyaW5nLiAqLworICAgIGlmIChsZW4pIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgMCwgbGVuKTsKKyAgICB9CisgICAgd3JpdGVyLT5wb3MgKz0gKGxlbiArIHJwYWQpOworICAgIHJlc3VsdCA9IDA7CisKK2RvbmU6CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqIGxvbmcgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQKK2Zvcm1hdF9sb25nX2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDEyNzsKKyAgICBQeU9iamVjdCAqdG1wID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGludW1lcmljX2NoYXJzOworICAgIFB5X1VDUzQgc2lnbl9jaGFyID0gJ1wwJzsKKyAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOyAgICAgICAvKiBjb3VudCBvZiBkaWdpdHMgbmVlZCBmcm9tIHRoZSBjb21wdXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyAqLworICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXIgPSAwOyAvKiBVc2VkIG9ubHkgZm9yICdjJyBmb3JtYXR0aW5nLCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBub24tZGlnaXRzICovCisgICAgUHlfc3NpemVfdCBuX3ByZWZpeCA9IDA7ICAgLyogQ291bnQgb2YgcHJlZml4IGNoYXJzLCAoZS5nLiwgJzB4JykgKi8KKyAgICBQeV9zc2l6ZV90IG5fdG90YWw7CisgICAgUHlfc3NpemVfdCBwcmVmaXggPSAwOworICAgIE51bWJlckZpZWxkV2lkdGhzIHNwZWM7CisgICAgbG9uZyB4OworCisgICAgLyogTG9jYWxlIHNldHRpbmdzLCBlaXRoZXIgZnJvbSB0aGUgYWN0dWFsIGxvY2FsZSBvcgorICAgICAgIGZyb20gYSBoYXJkLWNvZGUgcHNldWRvLWxvY2FsZSAqLworICAgIExvY2FsZUluZm8gbG9jYWxlID0gU1RBVElDX0xPQ0FMRV9JTkZPX0lOSVQ7CisKKyAgICAvKiBubyBwcmVjaXNpb24gYWxsb3dlZCBvbiBpbnRlZ2VycyAqLworICAgIGlmIChmb3JtYXQtPnByZWNpc2lvbiAhPSAtMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJQcmVjaXNpb24gbm90IGFsbG93ZWQgaW4gaW50ZWdlciBmb3JtYXQgc3BlY2lmaWVyIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICAvKiBzcGVjaWFsIGNhc2UgZm9yIGNoYXJhY3RlciBmb3JtYXR0aW5nICovCisgICAgaWYgKGZvcm1hdC0+dHlwZSA9PSAnYycpIHsKKyAgICAgICAgLyogZXJyb3IgdG8gc3BlY2lmeSBhIHNpZ24gKi8KKyAgICAgICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnXDAnKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2lnbiBub3QgYWxsb3dlZCB3aXRoIGludGVnZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmb3JtYXQgc3BlY2lmaWVyICdjJyIpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisKKyAgICAgICAgLyogdGFrZW4gZnJvbSB1bmljb2Rlb2JqZWN0LmMgZm9ybWF0Y2hhcigpICovCisgICAgICAgIC8qIEludGVnZXIgaW5wdXQgdHJ1bmNhdGVkIHRvIGEgY2hhcmFjdGVyICovCisgICAgICAgIHggPSBQeUxvbmdfQXNMb25nKHZhbHVlKTsKKyAgICAgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgaWYgKHggPCAwIHx8IHggPiAweDEwZmZmZikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIik7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKyAgICAgICAgdG1wID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKHgpOworICAgICAgICBpbnVtZXJpY19jaGFycyA9IDA7CisgICAgICAgIG5fZGlnaXRzID0gMTsKKyAgICAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCAoUHlfVUNTNCl4KTsKKworICAgICAgICAvKiBBcyBhIHNvcnQtb2YgaGFjaywgd2UgdGVsbCBjYWxjX251bWJlcl93aWR0aHMgdGhhdCB3ZSBvbmx5CisgICAgICAgICAgIGhhdmUgInJlbWFpbmRlciIgY2hhcmFjdGVycy4gY2FsY19udW1iZXJfd2lkdGhzIHRoaW5rcworICAgICAgICAgICB0aGVzZSBhcmUgY2hhcmFjdGVycyB0aGF0IGRvbid0IGdldCBmb3JtYXR0ZWQsIG9ubHkgY29waWVkCisgICAgICAgICAgIGludG8gdGhlIG91dHB1dCBzdHJpbmcuIFdlIGRvIHRoaXMgZm9yICdjJyBmb3JtYXR0aW5nLAorICAgICAgICAgICBiZWNhdXNlIHRoZSBjaGFyYWN0ZXJzIGFyZSBsaWtlbHkgdG8gYmUgbm9uLWRpZ2l0cy4gKi8KKyAgICAgICAgbl9yZW1haW5kZXIgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGJhc2U7CisgICAgICAgIGludCBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAwOyAgLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMgYWRkZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU51bWJlcl9Ub0Jhc2UgdGhhdCB3ZSB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCBvdmVyLiAqLworCisgICAgICAgIC8qIENvbXB1dGUgdGhlIGJhc2UgYW5kIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSBhZGRlZCBieQorICAgICAgICAgICBQeU51bWJlcl9Ub0Jhc2UgKi8KKyAgICAgICAgc3dpdGNoIChmb3JtYXQtPnR5cGUpIHsKKyAgICAgICAgY2FzZSAnYic6CisgICAgICAgICAgICBiYXNlID0gMjsKKyAgICAgICAgICAgIGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDI7IC8qIDBiICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnbyc6CisgICAgICAgICAgICBiYXNlID0gODsKKyAgICAgICAgICAgIGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDI7IC8qIDBvICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgYmFzZSA9IDE2OworICAgICAgICAgICAgbGVhZGluZ19jaGFyc190b19za2lwID0gMjsgLyogMHggKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OiAgLyogc2hvdWxkbid0IGJlIG5lZWRlZCwgYnV0IHN0b3BzIGEgY29tcGlsZXIgd2FybmluZyAqLworICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgY2FzZSAnbic6CisgICAgICAgICAgICBiYXNlID0gMTA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmb3JtYXQtPnNpZ24gIT0gJysnICYmIGZvcm1hdC0+c2lnbiAhPSAnICcKKyAgICAgICAgICAgICYmIGZvcm1hdC0+d2lkdGggPT0gLTEKKyAgICAgICAgICAgICYmIGZvcm1hdC0+dHlwZSAhPSAnWCcgJiYgZm9ybWF0LT50eXBlICE9ICduJworICAgICAgICAgICAgJiYgIWZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMKKyAgICAgICAgICAgICYmIFB5TG9uZ19DaGVja0V4YWN0KHZhbHVlKSkKKyAgICAgICAgeworICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICByZXR1cm4gX1B5TG9uZ19Gb3JtYXRXcml0ZXIod3JpdGVyLCB2YWx1ZSwgYmFzZSwgZm9ybWF0LT5hbHRlcm5hdGUpOworICAgICAgICB9CisKKyAgICAgICAgLyogVGhlIG51bWJlciBvZiBwcmVmaXggY2hhcnMgaXMgdGhlIHNhbWUgYXMgdGhlIGxlYWRpbmcKKyAgICAgICAgICAgY2hhcnMgdG8gc2tpcCAqLworICAgICAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpCisgICAgICAgICAgICBuX3ByZWZpeCA9IGxlYWRpbmdfY2hhcnNfdG9fc2tpcDsKKworICAgICAgICAvKiBEbyB0aGUgaGFyZCBwYXJ0LCBjb252ZXJ0aW5nIHRvIGEgc3RyaW5nIGluIGEgZ2l2ZW4gYmFzZSAqLworICAgICAgICB0bXAgPSBfUHlMb25nX0Zvcm1hdCh2YWx1ZSwgYmFzZSk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkodG1wKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKworICAgICAgICBpbnVtZXJpY19jaGFycyA9IDA7CisgICAgICAgIG5fZGlnaXRzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodG1wKTsKKworICAgICAgICBwcmVmaXggPSBpbnVtZXJpY19jaGFyczsKKworICAgICAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAorICAgICAgICAgICBhbmQgc2tpcCBpdCAqLworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUih0bXAsIGludW1lcmljX2NoYXJzKSA9PSAnLScpIHsKKyAgICAgICAgICAgIHNpZ25fY2hhciA9ICctJzsKKyAgICAgICAgICAgICsrcHJlZml4OworICAgICAgICAgICAgKytsZWFkaW5nX2NoYXJzX3RvX3NraXA7CisgICAgICAgIH0KKworICAgICAgICAvKiBTa2lwIG92ZXIgdGhlIGxlYWRpbmcgY2hhcnMgKDB4LCAwYiwgZXRjLikgKi8KKyAgICAgICAgbl9kaWdpdHMgLT0gbGVhZGluZ19jaGFyc190b19za2lwOworICAgICAgICBpbnVtZXJpY19jaGFycyArPSBsZWFkaW5nX2NoYXJzX3RvX3NraXA7CisgICAgfQorCisgICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLworICAgIGlmIChnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KKyAgICAgICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBDYWxjdWxhdGUgaG93IG11Y2ggbWVtb3J5IHdlJ2xsIG5lZWQuICovCisgICAgbl90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmc3BlYywgbl9wcmVmaXgsIHNpZ25fY2hhciwgdG1wLCBpbnVtZXJpY19jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludW1lcmljX2NoYXJzICsgbl9kaWdpdHMsIG5fcmVtYWluZGVyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSwgZm9ybWF0LCAmbWF4Y2hhcik7CisKKyAgICAvKiBBbGxvY2F0ZSB0aGUgbWVtb3J5LiAqLworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBuX3RvdGFsLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogUG9wdWxhdGUgdGhlIG1lbW9yeS4gKi8KKyAgICByZXN1bHQgPSBmaWxsX251bWJlcih3cml0ZXIsICZzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCwgaW51bWVyaWNfY2hhcnMsIGludW1lcmljX2NoYXJzICsgbl9kaWdpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLCBwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPT0gJ1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUsIGZvcm1hdC0+dHlwZSA9PSAnWCcpOworCitkb25lOgorICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBmcmVlX2xvY2FsZV9pbmZvKCZsb2NhbGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogZmxvYXQgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogbXVjaCBvZiB0aGlzIGlzIHRha2VuIGZyb20gdW5pY29kZW9iamVjdC5jICovCitzdGF0aWMgaW50Citmb3JtYXRfZmxvYXRfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBjaGFyICpidWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KKyAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOworICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXI7CisgICAgUHlfc3NpemVfdCBuX3RvdGFsOworICAgIGludCBoYXNfZGVjaW1hbDsKKyAgICBkb3VibGUgdmFsOworICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uID0gZm9ybWF0LT5wcmVjaXNpb247CisgICAgUHlfc3NpemVfdCBkZWZhdWx0X3ByZWNpc2lvbiA9IDY7CisgICAgUHlfVUNTNCB0eXBlID0gZm9ybWF0LT50eXBlOworICAgIGludCBhZGRfcGN0ID0gMDsKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIE51bWJlckZpZWxkV2lkdGhzIHNwZWM7CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlfVUNTNCBtYXhjaGFyID0gMTI3OworICAgIFB5X1VDUzQgc2lnbl9jaGFyID0gJ1wwJzsKKyAgICBpbnQgZmxvYXRfdHlwZTsgLyogVXNlZCB0byBzZWUgaWYgd2UgaGF2ZSBhIG5hbiwgaW5mLCBvciByZWd1bGFyIGZsb2F0LiAqLworICAgIFB5T2JqZWN0ICp1bmljb2RlX3RtcCA9IE5VTEw7CisKKyAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCisgICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCisgICAgTG9jYWxlSW5mbyBsb2NhbGUgPSBTVEFUSUNfTE9DQUxFX0lORk9fSU5JVDsKKworICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkKKyAgICAgICAgZmxhZ3MgfD0gUHlfRFRTRl9BTFQ7CisKKyAgICBpZiAodHlwZSA9PSAnXDAnKSB7CisgICAgICAgIC8qIE9taXR0ZWQgdHlwZSBzcGVjaWZpZXIuICBCZWhhdmVzIGluIHRoZSBzYW1lIHdheSBhcyByZXByKHgpCisgICAgICAgICAgIGFuZCBzdHIoeCkgaWYgbm8gcHJlY2lzaW9uIGlzIGdpdmVuLCBlbHNlIGxpa2UgJ2cnLCBidXQgd2l0aAorICAgICAgICAgICBhdCBsZWFzdCBvbmUgZGlnaXQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuICovCisgICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUREX0RPVF8wOworICAgICAgICB0eXBlID0gJ3InOworICAgICAgICBkZWZhdWx0X3ByZWNpc2lvbiA9IDA7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gJ24nKQorICAgICAgICAvKiAnbicgaXMgdGhlIHNhbWUgYXMgJ2cnLCBleGNlcHQgZm9yIHRoZSBsb2NhbGUgdXNlZCB0bworICAgICAgICAgICBmb3JtYXQgdGhlIHJlc3VsdC4gV2UgdGFrZSBjYXJlIG9mIHRoYXQgbGF0ZXIuICovCisgICAgICAgIHR5cGUgPSAnZyc7CisKKyAgICB2YWwgPSBQeUZsb2F0X0FzRG91YmxlKHZhbHVlKTsKKyAgICBpZiAodmFsID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgaWYgKHR5cGUgPT0gJyUnKSB7CisgICAgICAgIHR5cGUgPSAnZic7CisgICAgICAgIHZhbCAqPSAxMDA7CisgICAgICAgIGFkZF9wY3QgPSAxOworICAgIH0KKworICAgIGlmIChwcmVjaXNpb24gPCAwKQorICAgICAgICBwcmVjaXNpb24gPSBkZWZhdWx0X3ByZWNpc2lvbjsKKyAgICBlbHNlIGlmICh0eXBlID09ICdyJykKKyAgICAgICAgdHlwZSA9ICdnJzsKKworICAgIC8qIENhc3QgInR5cGUiLCBiZWNhdXNlIGlmIHdlJ3JlIGluIHVuaWNvZGUgd2UgbmVlZCB0byBwYXNzIGEKKyAgICAgICA4LWJpdCBjaGFyLiBUaGlzIGlzIHNhZmUsIGJlY2F1c2Ugd2UndmUgcmVzdHJpY3RlZCB3aGF0ICJ0eXBlIgorICAgICAgIGNhbiBiZS4gKi8KKyAgICBidWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcodmFsLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmxvYXRfdHlwZSk7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgbl9kaWdpdHMgPSBzdHJsZW4oYnVmKTsKKworICAgIGlmIChhZGRfcGN0KSB7CisgICAgICAgIC8qIFdlIGtub3cgdGhhdCBidWYgaGFzIGEgdHJhaWxpbmcgemVybyAoc2luY2Ugd2UganVzdCBjYWxsZWQKKyAgICAgICAgICAgc3RybGVuKCkgb24gaXQpLCBhbmQgd2UgZG9uJ3QgdXNlIHRoYXQgZmFjdCBhbnkgbW9yZS4gU28gd2UKKyAgICAgICAgICAgY2FuIGp1c3Qgd3JpdGUgb3ZlciB0aGUgdHJhaWxpbmcgemVyby4gKi8KKyAgICAgICAgYnVmW25fZGlnaXRzXSA9ICclJzsKKyAgICAgICAgbl9kaWdpdHMgKz0gMTsKKyAgICB9CisKKyAgICAvKiBTaW5jZSB0aGVyZSBpcyBubyB1bmljb2RlIHZlcnNpb24gb2YgUHlPU19kb3VibGVfdG9fc3RyaW5nLAorICAgICAgIGp1c3QgdXNlIHRoZSA4IGJpdCB2ZXJzaW9uIGFuZCB0aGVuIGNvbnZlcnQgdG8gdW5pY29kZS4gKi8KKyAgICB1bmljb2RlX3RtcCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKGJ1Ziwgbl9kaWdpdHMpOworICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICBpZiAodW5pY29kZV90bXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnKycgJiYgZm9ybWF0LT5zaWduICE9ICcgJworICAgICAgICAmJiBmb3JtYXQtPndpZHRoID09IC0xCisgICAgICAgICYmIGZvcm1hdC0+dHlwZSAhPSAnbicKKyAgICAgICAgJiYgIWZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMpCisgICAgeworICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgcmVzdWx0ID0gX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cih3cml0ZXIsIHVuaWNvZGVfdG1wKTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGVfdG1wKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAorICAgICAgIGFuZCBza2lwIGl0ICovCisgICAgaW5kZXggPSAwOworICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGVfdG1wLCBpbmRleCkgPT0gJy0nKSB7CisgICAgICAgIHNpZ25fY2hhciA9ICctJzsKKyAgICAgICAgKytpbmRleDsKKyAgICAgICAgLS1uX2RpZ2l0czsKKyAgICB9CisKKyAgICAvKiBEZXRlcm1pbmUgaWYgd2UgaGF2ZSBhbnkgInJlbWFpbmRlciIgKGFmdGVyIHRoZSBkaWdpdHMsIG1pZ2h0IGluY2x1ZGUKKyAgICAgICBkZWNpbWFsIG9yIGV4cG9uZW50IG9yIGJvdGggKG9yIG5laXRoZXIpKSAqLworICAgIHBhcnNlX251bWJlcih1bmljb2RlX3RtcCwgaW5kZXgsIGluZGV4ICsgbl9kaWdpdHMsICZuX3JlbWFpbmRlciwgJmhhc19kZWNpbWFsKTsKKworICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KKyAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6CisgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogQ2FsY3VsYXRlIGhvdyBtdWNoIG1lbW9yeSB3ZSdsbCBuZWVkLiAqLworICAgIG5fdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJnNwZWMsIDAsIHNpZ25fY2hhciwgdW5pY29kZV90bXAsIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggKyBuX2RpZ2l0cywgbl9yZW1haW5kZXIsIGhhc19kZWNpbWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSwgZm9ybWF0LCAmbWF4Y2hhcik7CisKKyAgICAvKiBBbGxvY2F0ZSB0aGUgbWVtb3J5LiAqLworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBuX3RvdGFsLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogUG9wdWxhdGUgdGhlIG1lbW9yeS4gKi8KKyAgICByZXN1bHQgPSBmaWxsX251bWJlcih3cml0ZXIsICZzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfdG1wLCBpbmRleCwgaW5kZXggKyBuX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyID09ICdcMCcgPyAnICcgOiBmb3JtYXQtPmZpbGxfY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCAwKTsKKworZG9uZToKKyAgICBQeV9ERUNSRUYodW5pY29kZV90bXApOworICAgIGZyZWVfbG9jYWxlX2luZm8oJmxvY2FsZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBjb21wbGV4IGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50Citmb3JtYXRfY29tcGxleF9pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBkb3VibGUgcmU7CisgICAgZG91YmxlIGltOworICAgIGNoYXIgKnJlX2J1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLworICAgIGNoYXIgKmltX2J1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLworCisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIHRtcF9mb3JtYXQgPSAqZm9ybWF0OworICAgIFB5X3NzaXplX3Qgbl9yZV9kaWdpdHM7CisgICAgUHlfc3NpemVfdCBuX2ltX2RpZ2l0czsKKyAgICBQeV9zc2l6ZV90IG5fcmVfcmVtYWluZGVyOworICAgIFB5X3NzaXplX3Qgbl9pbV9yZW1haW5kZXI7CisgICAgUHlfc3NpemVfdCBuX3JlX3RvdGFsOworICAgIFB5X3NzaXplX3Qgbl9pbV90b3RhbDsKKyAgICBpbnQgcmVfaGFzX2RlY2ltYWw7CisgICAgaW50IGltX2hhc19kZWNpbWFsOworICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uID0gZm9ybWF0LT5wcmVjaXNpb247CisgICAgUHlfc3NpemVfdCBkZWZhdWx0X3ByZWNpc2lvbiA9IDY7CisgICAgUHlfVUNTNCB0eXBlID0gZm9ybWF0LT50eXBlOworICAgIFB5X3NzaXplX3QgaV9yZTsKKyAgICBQeV9zc2l6ZV90IGlfaW07CisgICAgTnVtYmVyRmllbGRXaWR0aHMgcmVfc3BlYzsKKyAgICBOdW1iZXJGaWVsZFdpZHRocyBpbV9zcGVjOworICAgIGludCBmbGFncyA9IDA7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDEyNzsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIHJraW5kOworICAgIHZvaWQgKnJkYXRhOworICAgIFB5X1VDUzQgcmVfc2lnbl9jaGFyID0gJ1wwJzsKKyAgICBQeV9VQ1M0IGltX3NpZ25fY2hhciA9ICdcMCc7CisgICAgaW50IHJlX2Zsb2F0X3R5cGU7IC8qIFVzZWQgdG8gc2VlIGlmIHdlIGhhdmUgYSBuYW4sIGluZiwgb3IgcmVndWxhciBmbG9hdC4gKi8KKyAgICBpbnQgaW1fZmxvYXRfdHlwZTsKKyAgICBpbnQgYWRkX3BhcmVucyA9IDA7CisgICAgaW50IHNraXBfcmUgPSAwOworICAgIFB5X3NzaXplX3QgbHBhZDsKKyAgICBQeV9zc2l6ZV90IHJwYWQ7CisgICAgUHlfc3NpemVfdCB0b3RhbDsKKyAgICBQeU9iamVjdCAqcmVfdW5pY29kZV90bXAgPSBOVUxMOworICAgIFB5T2JqZWN0ICppbV91bmljb2RlX3RtcCA9IE5VTEw7CisKKyAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCisgICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCisgICAgTG9jYWxlSW5mbyBsb2NhbGUgPSBTVEFUSUNfTE9DQUxFX0lORk9fSU5JVDsKKworICAgIC8qIFplcm8gcGFkZGluZyBpcyBub3QgYWxsb3dlZC4gKi8KKyAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJzAnKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlplcm8gcGFkZGluZyBpcyBub3QgYWxsb3dlZCBpbiBjb21wbGV4IGZvcm1hdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVyIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICAvKiBOZWl0aGVyIGlzICc9JyBhbGlnbm1lbnQgLiAqLworICAgIGlmIChmb3JtYXQtPmFsaWduID09ICc9JykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInPScgYWxpZ25tZW50IGZsYWcgaXMgbm90IGFsbG93ZWQgaW4gY29tcGxleCBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgcmUgPSBQeUNvbXBsZXhfUmVhbEFzRG91YmxlKHZhbHVlKTsKKyAgICBpZiAocmUgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaW0gPSBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlKHZhbHVlKTsKKyAgICBpZiAoaW0gPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpCisgICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUxUOworCisgICAgaWYgKHR5cGUgPT0gJ1wwJykgeworICAgICAgICAvKiBPbWl0dGVkIHR5cGUgc3BlY2lmaWVyLiBTaG91bGQgYmUgbGlrZSBzdHIoc2VsZikuICovCisgICAgICAgIHR5cGUgPSAncic7CisgICAgICAgIGRlZmF1bHRfcHJlY2lzaW9uID0gMDsKKyAgICAgICAgaWYgKHJlID09IDAuMCAmJiBjb3B5c2lnbigxLjAsIHJlKSA9PSAxLjApCisgICAgICAgICAgICBza2lwX3JlID0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkX3BhcmVucyA9IDE7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gJ24nKQorICAgICAgICAvKiAnbicgaXMgdGhlIHNhbWUgYXMgJ2cnLCBleGNlcHQgZm9yIHRoZSBsb2NhbGUgdXNlZCB0bworICAgICAgICAgICBmb3JtYXQgdGhlIHJlc3VsdC4gV2UgdGFrZSBjYXJlIG9mIHRoYXQgbGF0ZXIuICovCisgICAgICAgIHR5cGUgPSAnZyc7CisKKyAgICBpZiAocHJlY2lzaW9uIDwgMCkKKyAgICAgICAgcHJlY2lzaW9uID0gZGVmYXVsdF9wcmVjaXNpb247CisgICAgZWxzZSBpZiAodHlwZSA9PSAncicpCisgICAgICAgIHR5cGUgPSAnZyc7CisKKyAgICAvKiBDYXN0ICJ0eXBlIiwgYmVjYXVzZSBpZiB3ZSdyZSBpbiB1bmljb2RlIHdlIG5lZWQgdG8gcGFzcyBhCisgICAgICAgOC1iaXQgY2hhci4gVGhpcyBpcyBzYWZlLCBiZWNhdXNlIHdlJ3ZlIHJlc3RyaWN0ZWQgd2hhdCAidHlwZSIKKyAgICAgICBjYW4gYmUuICovCisgICAgcmVfYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHJlLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVfZmxvYXRfdHlwZSk7CisgICAgaWYgKHJlX2J1ZiA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaW1fYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKGltLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1fZmxvYXRfdHlwZSk7CisgICAgaWYgKGltX2J1ZiA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBuX3JlX2RpZ2l0cyA9IHN0cmxlbihyZV9idWYpOworICAgIG5faW1fZGlnaXRzID0gc3RybGVuKGltX2J1Zik7CisKKyAgICAvKiBTaW5jZSB0aGVyZSBpcyBubyB1bmljb2RlIHZlcnNpb24gb2YgUHlPU19kb3VibGVfdG9fc3RyaW5nLAorICAgICAgIGp1c3QgdXNlIHRoZSA4IGJpdCB2ZXJzaW9uIGFuZCB0aGVuIGNvbnZlcnQgdG8gdW5pY29kZS4gKi8KKyAgICByZV91bmljb2RlX3RtcCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKHJlX2J1Ziwgbl9yZV9kaWdpdHMpOworICAgIGlmIChyZV91bmljb2RlX3RtcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaV9yZSA9IDA7CisKKyAgICBpbV91bmljb2RlX3RtcCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKGltX2J1Ziwgbl9pbV9kaWdpdHMpOworICAgIGlmIChpbV91bmljb2RlX3RtcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaV9pbSA9IDA7CisKKyAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAorICAgICAgIGFuZCBza2lwIGl0ICovCisgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIocmVfdW5pY29kZV90bXAsIGlfcmUpID09ICctJykgeworICAgICAgICByZV9zaWduX2NoYXIgPSAnLSc7CisgICAgICAgICsraV9yZTsKKyAgICAgICAgLS1uX3JlX2RpZ2l0czsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIoaW1fdW5pY29kZV90bXAsIGlfaW0pID09ICctJykgeworICAgICAgICBpbV9zaWduX2NoYXIgPSAnLSc7CisgICAgICAgICsraV9pbTsKKyAgICAgICAgLS1uX2ltX2RpZ2l0czsKKyAgICB9CisKKyAgICAvKiBEZXRlcm1pbmUgaWYgd2UgaGF2ZSBhbnkgInJlbWFpbmRlciIgKGFmdGVyIHRoZSBkaWdpdHMsIG1pZ2h0IGluY2x1ZGUKKyAgICAgICBkZWNpbWFsIG9yIGV4cG9uZW50IG9yIGJvdGggKG9yIG5laXRoZXIpKSAqLworICAgIHBhcnNlX251bWJlcihyZV91bmljb2RlX3RtcCwgaV9yZSwgaV9yZSArIG5fcmVfZGlnaXRzLAorICAgICAgICAgICAgICAgICAmbl9yZV9yZW1haW5kZXIsICZyZV9oYXNfZGVjaW1hbCk7CisgICAgcGFyc2VfbnVtYmVyKGltX3VuaWNvZGVfdG1wLCBpX2ltLCBpX2ltICsgbl9pbV9kaWdpdHMsCisgICAgICAgICAgICAgICAgICZuX2ltX3JlbWFpbmRlciwgJmltX2hhc19kZWNpbWFsKTsKKworICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KKyAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6CisgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogVHVybiBvZmYgYW55IHBhZGRpbmcuIFdlJ2xsIGRvIGl0IGxhdGVyIGFmdGVyIHdlJ3ZlIGNvbXBvc2VkCisgICAgICAgdGhlIG51bWJlcnMgd2l0aG91dCBwYWRkaW5nLiAqLworICAgIHRtcF9mb3JtYXQuZmlsbF9jaGFyID0gJ1wwJzsKKyAgICB0bXBfZm9ybWF0LmFsaWduID0gJzwnOworICAgIHRtcF9mb3JtYXQud2lkdGggPSAtMTsKKworICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KKyAgICBuX3JlX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZyZV9zcGVjLCAwLCByZV9zaWduX2NoYXIsIHJlX3VuaWNvZGVfdG1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaV9yZSwgaV9yZSArIG5fcmVfZGlnaXRzLCBuX3JlX3JlbWFpbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlX2hhc19kZWNpbWFsLCAmbG9jYWxlLCAmdG1wX2Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhjaGFyKTsKKworICAgIC8qIFNhbWUgZm9ybWF0dGluZywgYnV0IGFsd2F5cyBpbmNsdWRlIGEgc2lnbiwgdW5sZXNzIHRoZSByZWFsIHBhcnQgaXMKKyAgICAgKiBnb2luZyB0byBiZSBvbWl0dGVkLCBpbiB3aGljaCBjYXNlIHdlIHVzZSB3aGF0ZXZlciBzaWduIGNvbnZlbnRpb24gd2FzCisgICAgICogcmVxdWVzdGVkIGJ5IHRoZSBvcmlnaW5hbCBmb3JtYXQuICovCisgICAgaWYgKCFza2lwX3JlKQorICAgICAgICB0bXBfZm9ybWF0LnNpZ24gPSAnKyc7CisgICAgbl9pbV90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmaW1fc3BlYywgMCwgaW1fc2lnbl9jaGFyLCBpbV91bmljb2RlX3RtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfaW0sIGlfaW0gKyBuX2ltX2RpZ2l0cywgbl9pbV9yZW1haW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbV9oYXNfZGVjaW1hbCwgJmxvY2FsZSwgJnRtcF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4Y2hhcik7CisKKyAgICBpZiAoc2tpcF9yZSkKKyAgICAgICAgbl9yZV90b3RhbCA9IDA7CisKKyAgICAvKiBBZGQgMSBmb3IgdGhlICdqJywgYW5kIG9wdGlvbmFsbHkgMiBmb3IgcGFyZW5zLiAqLworICAgIGNhbGNfcGFkZGluZyhuX3JlX3RvdGFsICsgbl9pbV90b3RhbCArIDEgKyBhZGRfcGFyZW5zICogMiwKKyAgICAgICAgICAgICAgICAgZm9ybWF0LT53aWR0aCwgZm9ybWF0LT5hbGlnbiwgJmxwYWQsICZycGFkLCAmdG90YWwpOworCisgICAgaWYgKGxwYWQgfHwgcnBhZCkKKyAgICAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCBmb3JtYXQtPmZpbGxfY2hhcik7CisKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgdG90YWwsIG1heGNoYXIpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgcmtpbmQgPSB3cml0ZXItPmtpbmQ7CisgICAgcmRhdGEgPSB3cml0ZXItPmRhdGE7CisKKyAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiBGaXJzdCwgdGhlIHBhZGRpbmcuICovCisgICAgcmVzdWx0ID0gZmlsbF9wYWRkaW5nKHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbl9yZV90b3RhbCArIG5faW1fdG90YWwgKyAxICsgYWRkX3BhcmVucyAqIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyPT0nXDAnID8gJyAnIDogZm9ybWF0LT5maWxsX2NoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxwYWQsIHJwYWQpOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIGlmIChhZGRfcGFyZW5zKSB7CisgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgcmRhdGEsIHdyaXRlci0+cG9zLCAnKCcpOworICAgICAgICB3cml0ZXItPnBvcysrOworICAgIH0KKworICAgIGlmICghc2tpcF9yZSkgeworICAgICAgICByZXN1bHQgPSBmaWxsX251bWJlcih3cml0ZXIsICZyZV9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZV91bmljb2RlX3RtcCwgaV9yZSwgaV9yZSArIG5fcmVfZGlnaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCAwKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgICAgcmVzdWx0ID0gZmlsbF9udW1iZXIod3JpdGVyLCAmaW1fc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbV91bmljb2RlX3RtcCwgaV9pbSwgaV9pbSArIG5faW1fZGlnaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCAwKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgUHlVbmljb2RlX1dSSVRFKHJraW5kLCByZGF0YSwgd3JpdGVyLT5wb3MsICdqJyk7CisgICAgd3JpdGVyLT5wb3MrKzsKKworICAgIGlmIChhZGRfcGFyZW5zKSB7CisgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgcmRhdGEsIHdyaXRlci0+cG9zLCAnKScpOworICAgICAgICB3cml0ZXItPnBvcysrOworICAgIH0KKworICAgIHdyaXRlci0+cG9zICs9IHJwYWQ7CisKK2RvbmU6CisgICAgUHlNZW1fRnJlZShyZV9idWYpOworICAgIFB5TWVtX0ZyZWUoaW1fYnVmKTsKKyAgICBQeV9YREVDUkVGKHJlX3VuaWNvZGVfdG1wKTsKKyAgICBQeV9YREVDUkVGKGltX3VuaWNvZGVfdG1wKTsKKyAgICBmcmVlX2xvY2FsZV9pbmZvKCZsb2NhbGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogYnVpbHQgaW4gZm9ybWF0dGVycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBpbnQKK2Zvcm1hdF9vYmooUHlPYmplY3QgKm9iaiwgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgaW50IGVycjsKKworICAgIHN0ciA9IFB5T2JqZWN0X1N0cihvYmopOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVyciA9IF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCBzdHIpOworICAgIFB5X0RFQ1JFRihzdHIpOworICAgIHJldHVybiBlcnI7Cit9CisKK2ludAorX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob2JqKSk7CisKKyAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQorICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KKyAgICBpZiAoc3RhcnQgPT0gZW5kKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopKQorICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCBvYmopOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0X29iaihvYmosIHdyaXRlcik7CisgICAgfQorCisgICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCisgICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ3MnLCAnPCcpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCisgICAgc3dpdGNoIChmb3JtYXQudHlwZSkgeworICAgIGNhc2UgJ3MnOgorICAgICAgICAvKiBubyB0eXBlIGNvbnZlcnNpb24gbmVlZGVkLCBhbHJlYWR5IGEgc3RyaW5nLiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KKyAgICAgICAgcmV0dXJuIGZvcm1hdF9zdHJpbmdfaW50ZXJuYWwob2JqLCAmZm9ybWF0LCB3cml0ZXIpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIHVua25vd24gKi8KKyAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KKworaW50CitfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBQeU9iamVjdCAqdG1wID0gTlVMTCwgKnN0ciA9IE5VTEw7CisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisKKyAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQorICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KKyAgICBpZiAoc3RhcnQgPT0gZW5kKSB7CisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKQorICAgICAgICAgICAgcmV0dXJuIF9QeUxvbmdfRm9ybWF0V3JpdGVyKHdyaXRlciwgb2JqLCAxMCwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRfb2JqKG9iaiwgd3JpdGVyKTsKKyAgICB9CisKKyAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KKyAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywgc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAnZCcsICc+JykpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KKyAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7CisgICAgY2FzZSAnYic6CisgICAgY2FzZSAnYyc6CisgICAgY2FzZSAnZCc6CisgICAgY2FzZSAnbyc6CisgICAgY2FzZSAneCc6CisgICAgY2FzZSAnWCc6CisgICAgY2FzZSAnbic6CisgICAgICAgIC8qIG5vIHR5cGUgY29udmVyc2lvbiBuZWVkZWQsIGFscmVhZHkgYW4gaW50IChvciBsb25nKS4gIGRvCisgICAgICAgICAgIHRoZSBmb3JtYXR0aW5nICovCisgICAgICAgIHJlc3VsdCA9IGZvcm1hdF9sb25nX2ludGVybmFsKG9iaiwgJmZvcm1hdCwgd3JpdGVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdlJzoKKyAgICBjYXNlICdFJzoKKyAgICBjYXNlICdmJzoKKyAgICBjYXNlICdGJzoKKyAgICBjYXNlICdnJzoKKyAgICBjYXNlICdHJzoKKyAgICBjYXNlICclJzoKKyAgICAgICAgLyogY29udmVydCB0byBmbG9hdCAqLworICAgICAgICB0bXAgPSBQeU51bWJlcl9GbG9hdChvYmopOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIHJlc3VsdCA9IGZvcm1hdF9mbG9hdF9pbnRlcm5hbCh0bXAsICZmb3JtYXQsIHdyaXRlcik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogdW5rbm93biAqLworICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCitkb25lOgorICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YREVDUkVGKHN0cik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50CitfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKKworICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCisgICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLworICAgIGlmIChzdGFydCA9PSBlbmQpCisgICAgICAgIHJldHVybiBmb3JtYXRfb2JqKG9iaiwgd3JpdGVyKTsKKworICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLworICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLCBzdGFydCwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdcMCcsICc+JykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KKyAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7CisgICAgY2FzZSAnXDAnOiAvKiBObyBmb3JtYXQgY29kZTogbGlrZSAnZycsIGJ1dCB3aXRoIGF0IGxlYXN0IG9uZSBkZWNpbWFsLiAqLworICAgIGNhc2UgJ2UnOgorICAgIGNhc2UgJ0UnOgorICAgIGNhc2UgJ2YnOgorICAgIGNhc2UgJ0YnOgorICAgIGNhc2UgJ2cnOgorICAgIGNhc2UgJ0cnOgorICAgIGNhc2UgJ24nOgorICAgIGNhc2UgJyUnOgorICAgICAgICAvKiBubyBjb252ZXJzaW9uLCBhbHJlYWR5IGEgZmxvYXQuICBkbyB0aGUgZm9ybWF0dGluZyAqLworICAgICAgICByZXR1cm4gZm9ybWF0X2Zsb2F0X2ludGVybmFsKG9iaiwgJmZvcm1hdCwgd3JpdGVyKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIHVua25vd24gKi8KKyAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KKworaW50CitfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OworCisgICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKKyAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCisgICAgaWYgKHN0YXJ0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuIGZvcm1hdF9vYmoob2JqLCB3cml0ZXIpOworCisgICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCisgICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ1wwJywgJz4nKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLworICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKKyAgICBjYXNlICdcMCc6IC8qIE5vIGZvcm1hdCBjb2RlOiBsaWtlICdnJywgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwuICovCisgICAgY2FzZSAnZSc6CisgICAgY2FzZSAnRSc6CisgICAgY2FzZSAnZic6CisgICAgY2FzZSAnRic6CisgICAgY2FzZSAnZyc6CisgICAgY2FzZSAnRyc6CisgICAgY2FzZSAnbic6CisgICAgICAgIC8qIG5vIGNvbnZlcnNpb24sIGFscmVhZHkgYSBjb21wbGV4LiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KKyAgICAgICAgcmV0dXJuIGZvcm1hdF9jb21wbGV4X2ludGVybmFsKG9iaiwgJmZvcm1hdCwgd3JpdGVyKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIHVua25vd24gKi8KKyAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1B5dGhvbi9mcm96ZW4uYyBiL1B5dGhvbi9mcm96ZW4uYwppbmRleCBkZGY2MjI0Li4yNWZkYzE3IDEwMDY0NAotLS0gYS9QeXRob24vZnJvemVuLmMKKysrIGIvUHl0aG9uL2Zyb3plbi5jCkBAIC0yLDYgKzIsNyBAQAogLyogRHVtbXkgZnJvemVuIG1vZHVsZXMgaW5pdGlhbGl6ZXIgKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgImltcG9ydGxpYi5oIgogCiAvKiBJbiBvcmRlciB0byB0ZXN0IHRoZSBzdXBwb3J0IGZvciBmcm96ZW4gbW9kdWxlcywgYnkgZGVmYXVsdCB3ZQogICAgZGVmaW5lIGEgc2luZ2xlIGZyb3plbiBtb2R1bGUsIF9faGVsbG9fXy4gIExvYWRpbmcgaXQgd2lsbCBwcmludApAQCAtMjgsNiArMjksOCBAQAogI2RlZmluZSBTSVpFIChpbnQpc2l6ZW9mKE1fX19oZWxsb19fKQogCiBzdGF0aWMgc3RydWN0IF9mcm96ZW4gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXNbXSA9IHsKKyAgICAvKiBpbXBvcnRsaWIgKi8KKyAgICB7Il9mcm96ZW5faW1wb3J0bGliIiwgX1B5X01fX2ltcG9ydGxpYiwgKGludClzaXplb2YoX1B5X01fX2ltcG9ydGxpYil9LAogICAgIC8qIFRlc3QgbW9kdWxlICovCiAgICAgeyJfX2hlbGxvX18iLCBNX19faGVsbG9fXywgU0laRX0sCiAgICAgLyogVGVzdCBwYWNrYWdlIChuZWdhdGl2ZSBzaXplIGluZGljYXRlcyBwYWNrYWdlLW5lc3MpICovCmRpZmYgLS1naXQgYS9QeXRob24vZ2V0YXJncy5jIGIvUHl0aG9uL2dldGFyZ3MuYwppbmRleCAwMDY5NjcxLi45ZjcyZmE0IDEwMDY0NAotLS0gYS9QeXRob24vZ2V0YXJncy5jCisrKyBiL1B5dGhvbi9nZXRhcmdzLmMKQEAgLTMzLDE2ICszMywzMyBAQAogI2RlZmluZSBGTEFHX0NPTVBBVCAxCiAjZGVmaW5lIEZMQUdfU0laRV9UIDIKIAordHlwZWRlZiBpbnQgKCpkZXN0cl90KShQeU9iamVjdCAqLCB2b2lkICopOworCisKKy8qIEtlZXAgdHJhY2sgb2YgIm9iamVjdHMiIHRoYXQgaGF2ZSBiZWVuIGFsbG9jYXRlZCBvciBpbml0aWFsaXplZCBhbmQKKyAgIHdoaWNoIHdpbGwgbmVlZCB0byBiZSBkZWFsbG9jYXRlZCBvciBjbGVhbmVkIHVwIHNvbWVob3cgaWYgb3ZlcmFsbAorICAgcGFyc2luZyBmYWlscy4KKyovCit0eXBlZGVmIHN0cnVjdCB7CisgIHZvaWQgKml0ZW07CisgIGRlc3RyX3QgZGVzdHJ1Y3RvcjsKK30gZnJlZWxpc3RlbnRyeV90OworCit0eXBlZGVmIHN0cnVjdCB7CisgIGludCBmaXJzdF9hdmFpbGFibGU7CisgIGZyZWVsaXN0ZW50cnlfdCAqZW50cmllczsKK30gZnJlZWxpc3RfdDsKKwogCiAvKiBGb3J3YXJkICovCiBzdGF0aWMgaW50IHZnZXRhcmdzMShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QgKiwgaW50KTsKIHN0YXRpYyB2b2lkIHNldGVycm9yKGludCwgY29uc3QgY2hhciAqLCBpbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogc3RhdGljIGNoYXIgKmNvbnZlcnRpdGVtKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBpbnQgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBmcmVlbGlzdF90ICopOwogc3RhdGljIGNoYXIgKmNvbnZlcnR0dXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGNoYXIgKiwgc2l6ZV90LCBpbnQsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGNoYXIgKiwgc2l6ZV90LCBpbnQsIGZyZWVsaXN0X3QgKik7CiBzdGF0aWMgY2hhciAqY29udmVydHNpbXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsIGZyZWVsaXN0X3QgKik7CiBzdGF0aWMgUHlfc3NpemVfdCBjb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICosIHZvaWQgKipwLCBjaGFyICoqKTsKIHN0YXRpYyBpbnQgZ2V0YnVmZmVyKFB5T2JqZWN0ICosIFB5X2J1ZmZlciAqLCBjaGFyKiopOwogCkBAIC0xMjMsMTE1ICsxNDAsNTQgQEAKIAogLyogSGFuZGxlIGNsZWFudXAgb2YgYWxsb2NhdGVkIG1lbW9yeSBpbiBjYXNlIG9mIGV4Y2VwdGlvbiAqLwogCi0jZGVmaW5lIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfUFRSICJnZXRhcmdzLmNsZWFudXBfcHRyIgotI2RlZmluZSBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX0JVRkZFUiAiZ2V0YXJncy5jbGVhbnVwX2J1ZmZlciIKLSNkZWZpbmUgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9DT05WRVJUICJnZXRhcmdzLmNsZWFudXBfY29udmVydCIKLQotc3RhdGljIHZvaWQKLWNsZWFudXBfcHRyKFB5T2JqZWN0ICpzZWxmKQorc3RhdGljIGludAorY2xlYW51cF9wdHIoUHlPYmplY3QgKnNlbGYsIHZvaWQgKnB0cikKIHsKLSAgICB2b2lkICpwdHIgPSBQeUNhcHN1bGVfR2V0UG9pbnRlcihzZWxmLCBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX1BUUik7CiAgICAgaWYgKHB0cikgewogICAgICAgICBQeU1lbV9GUkVFKHB0cik7CiAgICAgfQotfQotCi1zdGF0aWMgdm9pZAotY2xlYW51cF9idWZmZXIoUHlPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfYnVmZmVyICpwdHIgPSAoUHlfYnVmZmVyICopUHlDYXBzdWxlX0dldFBvaW50ZXIoc2VsZiwgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9CVUZGRVIpOwotICAgIGlmIChwdHIpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShwdHIpOwotICAgIH0KLX0KLQotc3RhdGljIGludAotYWRkY2xlYW51cCh2b2lkICpwdHIsIFB5T2JqZWN0ICoqZnJlZWxpc3QsIGludCBpc19idWZmZXIpCi17Ci0gICAgUHlPYmplY3QgKmNvYmo7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICBQeUNhcHN1bGVfRGVzdHJ1Y3RvciBkZXN0cjsKLQotICAgIGlmIChpc19idWZmZXIpIHsKLSAgICAgICAgZGVzdHIgPSBjbGVhbnVwX2J1ZmZlcjsKLSAgICAgICAgbmFtZSA9IEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQlVGRkVSOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRlc3RyID0gY2xlYW51cF9wdHI7Ci0gICAgICAgIG5hbWUgPSBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX1BUUjsKLSAgICB9Ci0KLSAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAqZnJlZWxpc3QgPSBQeUxpc3RfTmV3KDApOwotICAgICAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAgICAgZGVzdHIocHRyKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNvYmogPSBQeUNhcHN1bGVfTmV3KHB0ciwgbmFtZSwgZGVzdHIpOwotICAgIGlmICghY29iaikgewotICAgICAgICBkZXN0cihwdHIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChQeUxpc3RfQXBwZW5kKCpmcmVlbGlzdCwgY29iaikpIHsKLSAgICAgICAgUHlfREVDUkVGKGNvYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihjb2JqKTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQKLWNsZWFudXBfY29udmVydChQeU9iamVjdCAqc2VsZikKLXsKLSAgICB0eXBlZGVmIGludCAoKmRlc3RyX3QpKFB5T2JqZWN0ICosIHZvaWQgKik7Ci0gICAgZGVzdHJfdCBkZXN0ciA9IChkZXN0cl90KVB5Q2Fwc3VsZV9HZXRDb250ZXh0KHNlbGYpOwotICAgIHZvaWQgKnB0ciA9IFB5Q2Fwc3VsZV9HZXRQb2ludGVyKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9DT05WRVJUKTsKLSAgICBpZiAocHRyICYmIGRlc3RyKQotICAgICAgICBkZXN0cihOVUxMLCBwdHIpOwotfQotCi1zdGF0aWMgaW50Ci1hZGRjbGVhbnVwX2NvbnZlcnQodm9pZCAqcHRyLCBQeU9iamVjdCAqKmZyZWVsaXN0LCBpbnQgKCpkZXN0cikoUHlPYmplY3QqLHZvaWQqKSkKLXsKLSAgICBQeU9iamVjdCAqY29iajsKLSAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAqZnJlZWxpc3QgPSBQeUxpc3RfTmV3KDApOwotICAgICAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAgICAgZGVzdHIoTlVMTCwgcHRyKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjb2JqID0gUHlDYXBzdWxlX05ldyhwdHIsIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQ09OVkVSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2NvbnZlcnQpOwotICAgIGlmICghY29iaikgewotICAgICAgICBkZXN0cihOVUxMLCBwdHIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChQeUNhcHN1bGVfU2V0Q29udGV4dChjb2JqLCBkZXN0cikgPT0gLTEpIHsKLSAgICAgICAgLyogVGhpcyByZWFsbHkgc2hvdWxkIG5vdCBoYXBwZW4uICovCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhcHN1bGUgcmVmdXNlZCBzZXR0aW5nIG9mIGNvbnRleHQuIik7Ci0gICAgfQotICAgIGlmIChQeUxpc3RfQXBwZW5kKCpmcmVlbGlzdCwgY29iaikpIHsKLSAgICAgICAgUHlfREVDUkVGKGNvYmopOyAvKiBUaGlzIHdpbGwgYWxzbyBjYWxsIGRlc3RyLiAqLwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihjb2JqKTsKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAotY2xlYW5yZXR1cm4oaW50IHJldHZhbCwgUHlPYmplY3QgKmZyZWVsaXN0KQorY2xlYW51cF9idWZmZXIoUHlPYmplY3QgKnNlbGYsIHZvaWQgKnB0cikKIHsKLSAgICBpZiAoZnJlZWxpc3QgJiYgcmV0dmFsICE9IDApIHsKLSAgICAgICAgLyogV2Ugd2VyZSBzdWNjZXNzZnVsLCByZXNldCB0aGUgZGVzdHJ1Y3RvcnMgc28gdGhhdCB0aGV5Ci0gICAgICAgICAgIGRvbid0IGdldCBjYWxsZWQuICovCi0gICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlMaXN0X0dFVF9TSVpFKGZyZWVsaXN0KSwgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgUHlDYXBzdWxlX1NldERlc3RydWN0b3IoUHlMaXN0X0dFVF9JVEVNKGZyZWVsaXN0LCBpKSwgTlVMTCk7CisgICAgUHlfYnVmZmVyICpidWYgPSAoUHlfYnVmZmVyICopcHRyOworICAgIGlmIChidWYpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShidWYpOwogICAgIH0KLSAgICBQeV9YREVDUkVGKGZyZWVsaXN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorYWRkY2xlYW51cCh2b2lkICpwdHIsIGZyZWVsaXN0X3QgKmZyZWVsaXN0LCBkZXN0cl90IGRlc3RydWN0b3IpCit7CisgICAgaW50IGluZGV4OworCisgICAgaW5kZXggPSBmcmVlbGlzdC0+Zmlyc3RfYXZhaWxhYmxlOworICAgIGZyZWVsaXN0LT5maXJzdF9hdmFpbGFibGUgKz0gMTsKKworICAgIGZyZWVsaXN0LT5lbnRyaWVzW2luZGV4XS5pdGVtID0gcHRyOworICAgIGZyZWVsaXN0LT5lbnRyaWVzW2luZGV4XS5kZXN0cnVjdG9yID0gZGVzdHJ1Y3RvcjsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitjbGVhbnJldHVybihpbnQgcmV0dmFsLCBmcmVlbGlzdF90ICpmcmVlbGlzdCkKK3sKKyAgICBpbnQgaW5kZXg7CisKKyAgICBpZiAocmV0dmFsID09IDApIHsKKyAgICAgIC8qIEEgZmFpbHVyZSBvY2N1cnJlZCwgdGhlcmVmb3JlIGV4ZWN1dGUgYWxsIG9mIHRoZSBjbGVhbnVwCisgICAgICAgICBmdW5jdGlvbnMuCisgICAgICAqLworICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgZnJlZWxpc3QtPmZpcnN0X2F2YWlsYWJsZTsgKytpbmRleCkgeworICAgICAgICAgIGZyZWVsaXN0LT5lbnRyaWVzW2luZGV4XS5kZXN0cnVjdG9yKE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZWxpc3QtPmVudHJpZXNbaW5kZXhdLml0ZW0pOworICAgICAgfQorICAgIH0KKyAgICBQeU1lbV9GUkVFKGZyZWVsaXN0LT5lbnRyaWVzKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0yNTAsNyArMjA2LDcgQEAKICAgICBjb25zdCBjaGFyICpmb3JtYXRzYXZlID0gZm9ybWF0OwogICAgIFB5X3NzaXplX3QgaSwgbGVuOwogICAgIGNoYXIgKm1zZzsKLSAgICBQeU9iamVjdCAqZnJlZWxpc3QgPSBOVUxMOworICAgIGZyZWVsaXN0X3QgZnJlZWxpc3QgPSB7MCwgTlVMTH07CiAgICAgaW50IGNvbXBhdCA9IGZsYWdzICYgRkxBR19DT01QQVQ7CiAKICAgICBhc3NlcnQoY29tcGF0IHx8IChhcmdzICE9IChQeU9iamVjdCopTlVMTCkpOwpAQCAtMzA2LDY0ICsyNjIsNjYgQEAKIAogICAgIGZvcm1hdCA9IGZvcm1hdHNhdmU7CiAKKyAgICBmcmVlbGlzdC5lbnRyaWVzID0gUHlNZW1fTkVXKGZyZWVsaXN0ZW50cnlfdCwgbWF4KTsKKyAgICBpZiAoZnJlZWxpc3QuZW50cmllcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmIChjb21wYXQpIHsKICAgICAgICAgaWYgKG1heCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgUHlPU19zbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJXMgdGFrZXMgbm8gYXJndW1lbnRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1zZ2J1Zik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIHRha2VzIG5vIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAobWluID09IDEgJiYgbWF4ID09IDEpIHsKICAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIik7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbXNnYnVmKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJXMgdGFrZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGFyZ3MsICZmb3JtYXQsIHBfdmEsIGZsYWdzLCBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgaWYgKG1zZyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCBmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICBzZXRlcnJvcihsZXZlbHNbMF0sIG1zZywgbGV2ZWxzKzEsIGZuYW1lLCBtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAib2xkIHN0eWxlIGdldGFyZ3MgZm9ybWF0IHVzZXMgbmV3IGZlYXR1cmVzIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICJuZXcgc3R5bGUgZ2V0YXJncyBmb3JtYXQgYnV0IGFyZ3VtZW50IGlzIG5vdCBhIHR1cGxlIik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKICAgICBsZW4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogCiAgICAgaWYgKGxlbiA8IG1pbiB8fCBtYXggPCBsZW4pIHsKLSAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlPU19zbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4xNTBzJXMgdGFrZXMgJXMgJWQgYXJndW1lbnQlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoJWxkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPT1tYXggPyAiZXhhY3RseSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsZW4gPCBtaW4gPyAiYXQgbGVhc3QiIDogImF0IG1vc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPCBtaW4gPyBtaW4gOiBtYXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4gPCBtaW4gPyBtaW4gOiBtYXgpID09IDEgPyAiIiA6ICJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU0FGRV9ET1dOQ0FTVChsZW4sIFB5X3NzaXplX3QsIGxvbmcpKTsKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBtc2didWY7Ci0gICAgICAgIH0KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJS4xNTBzJXMgdGFrZXMgJXMgJWQgYXJndW1lbnQlcyAoJWxkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWluPT1tYXggPyAiZXhhY3RseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICA6IGxlbiA8IG1pbiA/ICJhdCBsZWFzdCIgOiAiYXQgbW9zdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIDwgbWluID8gbWluIDogbWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4gPCBtaW4gPyBtaW4gOiBtYXgpID09IDEgPyAiIiA6ICJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TQUZFX0RPV05DQVNUKGxlbiwgUHlfc3NpemVfdCwgbG9uZykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CkBAIC0zNzQsNyArMzMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CiAgICAgICAgIGlmIChtc2cpIHsKICAgICAgICAgICAgIHNldGVycm9yKGkrMSwgbXNnLCBsZXZlbHMsIGZuYW1lLCBtc2cpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zODMsMTAgKzM0MSwxMCBAQAogICAgICAgICAqZm9ybWF0ICE9ICd8JyAmJiAqZm9ybWF0ICE9ICc6JyAmJiAqZm9ybWF0ICE9ICc7JykgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiYmFkIGZvcm1hdCBzdHJpbmc6ICUuMjAwcyIsIGZvcm1hdHNhdmUpOwotICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKLSAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgZnJlZWxpc3QpOworICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogfQogCiAKQEAgLTQ1MCw3ICs0MDgsNyBAQAogc3RhdGljIGNoYXIgKgogY29udmVydHR1cGxlKFB5T2JqZWN0ICphcmcsIGNvbnN0IGNoYXIgKipwX2Zvcm1hdCwgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzLAogICAgICAgICAgICAgIGludCAqbGV2ZWxzLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBpbnQgdG9wbGV2ZWwsCi0gICAgICAgICAgICAgUHlPYmplY3QgKipmcmVlbGlzdCkKKyAgICAgICAgICAgICBmcmVlbGlzdF90ICpmcmVlbGlzdCkKIHsKICAgICBpbnQgbGV2ZWwgPSAwOwogICAgIGludCBuID0gMDsKQEAgLTUyNSw3ICs0ODMsNyBAQAogCiBzdGF0aWMgY2hhciAqCiBjb252ZXJ0aXRlbShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKLSAgICAgICAgICAgIGludCAqbGV2ZWxzLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBQeU9iamVjdCAqKmZyZWVsaXN0KQorICAgICAgICAgICAgaW50ICpsZXZlbHMsIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQogewogICAgIGNoYXIgKm1zZzsKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CkBAIC01NTAsOSArNTA4LDYgQEAKIAogCiAKLSNkZWZpbmUgVU5JQ09ERV9ERUZBVUxUX0VOQ09ESU5HKGFyZykgXAotICAgIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhhcmcsIE5VTEwpCi0KIC8qIEZvcm1hdCBhbiBlcnJvciBtZXNzYWdlIGdlbmVyYXRlZCBieSBjb252ZXJ0c2ltcGxlKCkuICovCiAKIHN0YXRpYyBjaGFyICoKQEAgLTU5Myw3ICs1NDgsNyBAQAogCiBzdGF0aWMgY2hhciAqCiBjb252ZXJ0c2ltcGxlKFB5T2JqZWN0ICphcmcsIGNvbnN0IGNoYXIgKipwX2Zvcm1hdCwgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzLAotICAgICAgICAgICAgICBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBQeU9iamVjdCAqKmZyZWVsaXN0KQorICAgICAgICAgICAgICBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBmcmVlbGlzdF90ICpmcmVlbGlzdCkKIHsKICAgICAvKiBGb3IgIyBjb2RlcyAqLwogI2RlZmluZSBGRVRDSF9TSVpFICAgICAgaW50ICpxPU5VTEw7UHlfc3NpemVfdCAqcTI9TlVMTDtcCkBAIC02MTUsNyArNTcwLDcgQEAKIAogICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICpwX2Zvcm1hdDsKICAgICBjaGFyIGMgPSAqZm9ybWF0Kys7Ci0gICAgUHlPYmplY3QgKnVhcmc7CisgICAgY2hhciAqc2FyZzsKIAogICAgIHN3aXRjaCAoYykgewogCkBAIC04MzIsNiArNzg3LDggQEAKICAgICAgICAgY2hhciAqcCA9IHZhX2FyZygqcF92YSwgY2hhciAqKTsKICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSAmJiBQeUJ5dGVzX1NpemUoYXJnKSA9PSAxKQogICAgICAgICAgICAgKnAgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpWzBdOworICAgICAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhhcmcpICYmIFB5Qnl0ZUFycmF5X1NpemUoYXJnKSA9PSAxKQorICAgICAgICAgICAgKnAgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoYXJnKVswXTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoImEgYnl0ZSBzdHJpbmcgb2YgbGVuZ3RoIDEiLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtODM5LDExICs3OTYsMzMgQEAKIAogICAgIGNhc2UgJ0MnOiB7LyogdW5pY29kZSBjaGFyICovCiAgICAgICAgIGludCAqcCA9IHZhX2FyZygqcF92YSwgaW50ICopOwotICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykgJiYKLSAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShhcmcpID09IDEpCi0gICAgICAgICAgICAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFyZylbMF07Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaW50IGtpbmQ7CisgICAgICAgIHZvaWQgKmRhdGE7CisKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soYXJnKSkKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJhIHVuaWNvZGUgY2hhcmFjdGVyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSkKKyAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGFyZykgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJhIHVuaWNvZGUgY2hhcmFjdGVyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworCisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChhcmcpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoYXJnKTsKKyAgICAgICAgKnAgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSAncCc6IHsvKiBib29sZWFuICpwKnJlZGljYXRlICovCisgICAgICAgIGludCAqcCA9IHZhX2FyZygqcF92YSwgaW50ICopOworICAgICAgICBpbnQgdmFsID0gUHlPYmplY3RfSXNUcnVlKGFyZyk7CisgICAgICAgIGlmICh2YWwgPiAwKQorICAgICAgICAgICAgKnAgPSAxOworICAgICAgICBlbHNlIGlmICh2YWwgPT0gMCkKKyAgICAgICAgICAgICpwID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC04NTgsNyArODM3LDcgQEAKICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCAoUHlfYnVmZmVyKilwLCAmYnVmKSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYnVmLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKLSAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCAxKSkgeworICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAocCwgZnJlZWxpc3QsIGNsZWFudXBfYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAogICAgICAgICAgICAgICAgICAgICAiKGNsZWFudXAgcHJvYmxlbSkiLAogICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CkBAIC04OTEsMjAgKzg3MCwxOSBAQAogICAgICAgICAgICAgaWYgKGMgPT0gJ3onICYmIGFyZyA9PSBQeV9Ob25lKQogICAgICAgICAgICAgICAgIFB5QnVmZmVyX0ZpbGxJbmZvKHAsIE5VTEwsIE5VTEwsIDAsIDEsIDApOwogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICB1YXJnID0gVU5JQ09ERV9ERUZBVUxUX0VOQ09ESU5HKGFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKHVhcmcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICBzYXJnID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoc2FyZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihDT05WX1VOSUNPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9GaWxsSW5mbyhwLCBhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcodWFyZyksIFB5Qnl0ZXNfR0VUX1NJWkUodWFyZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMCk7CisgICAgICAgICAgICAgICAgUHlCdWZmZXJfRmlsbEluZm8ocCwgYXJnLCBzYXJnLCBsZW4sIDEsIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIGFueSBidWZmZXItbGlrZSBvYmplY3QgKi8KICAgICAgICAgICAgICAgICBjaGFyICpidWY7CiAgICAgICAgICAgICAgICAgaWYgKGdldGJ1ZmZlcihhcmcsIHAsICZidWYpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYnVmLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYWRkY2xlYW51cChwLCBmcmVlbGlzdCwgMSkpIHsKKyAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCBjbGVhbnVwX2J1ZmZlcikpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKICAgICAgICAgICAgICAgICAgICAgIihjbGVhbnVwIHByb2JsZW0pIiwKICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtOTIwLDEyICs4OTgsMTMgQEAKICAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICB1YXJnID0gVU5JQ09ERV9ERUZBVUxUX0VOQ09ESU5HKGFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKHVhcmcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICBzYXJnID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoc2FyZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihDT05WX1VOSUNPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgICAgICAqcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHVhcmcpOwotICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUoUHlCeXRlc19HRVRfU0laRSh1YXJnKSk7CisgICAgICAgICAgICAgICAgKnAgPSBzYXJnOworICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUobGVuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBhbnkgYnVmZmVyLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgICAgICAgICAgLyogWFhYIFJlYWxseT8gKi8KQEAgLTkzOSwyNSArOTE4LDI1IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiAicyIgb3IgInoiICovCiAgICAgICAgICAgICBjaGFyICoqcCA9IHZhX2FyZygqcF92YSwgY2hhciAqKik7Ci0gICAgICAgICAgICB1YXJnID0gTlVMTDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgc2FyZyA9IE5VTEw7CiAKICAgICAgICAgICAgIGlmIChjID09ICd6JyAmJiBhcmcgPT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICAqcCA9IE5VTEw7CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgIHVhcmcgPSBVTklDT0RFX0RFRkFVTFRfRU5DT0RJTkcoYXJnKTsKLSAgICAgICAgICAgICAgICBpZiAodWFyZyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHNhcmcgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShhcmcsICZsZW4pOworICAgICAgICAgICAgICAgIGlmIChzYXJnID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKENPTlZfVU5JQ09ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgICAgICpwID0gUHlCeXRlc19BU19TVFJJTkcodWFyZyk7CisgICAgICAgICAgICAgICAgKnAgPSBzYXJnOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGMgPT0gJ3onID8gInN0ciBvciBOb25lIiA6ICJzdHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgIGlmICgqcCAhPSBOVUxMICYmIHVhcmcgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KSBzdHJsZW4oKnApICE9IFB5Qnl0ZXNfR0VUX1NJWkUodWFyZykpCisgICAgICAgICAgICBpZiAoKnAgIT0gTlVMTCAmJiBzYXJnICE9IE5VTEwgJiYgKFB5X3NzaXplX3QpIHN0cmxlbigqcCkgIT0gbGVuKQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICBjID09ICd6JyA/ICJzdHIgd2l0aG91dCBudWxsIGJ5dGVzIG9yIE5vbmUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInN0ciB3aXRob3V0IG51bGwgYnl0ZXMiLAorICAgICAgICAgICAgICAgICAgICBjID09ICd6JyA/ICJzdHIgd2l0aG91dCBudWxsIGNoYXJhY3RlcnMgb3IgTm9uZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtOTY2LDkgKzk0NSwxMCBAQAogICAgIGNhc2UgJ3UnOiAvKiByYXcgdW5pY29kZSBidWZmZXIgKFB5X1VOSUNPREUgKikgKi8KICAgICBjYXNlICdaJzogLyogcmF3IHVuaWNvZGUgYnVmZmVyIG9yIE5vbmUgKi8KICAgICB7CisgICAgICAgIFB5X1VOSUNPREUgKipwID0gdmFfYXJnKCpwX3ZhLCBQeV9VTklDT0RFICoqKTsKKwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnIycpIHsgLyogYW55IGJ1ZmZlci1saWtlIG9iamVjdCAqLwogICAgICAgICAgICAgLyogInMjIiBvciAiWiMiICovCi0gICAgICAgICAgICBQeV9VTklDT0RFICoqcCA9IHZhX2FyZygqcF92YSwgUHlfVU5JQ09ERSAqKik7CiAgICAgICAgICAgICBGRVRDSF9TSVpFOwogCiAgICAgICAgICAgICBpZiAoYyA9PSAnWicgJiYgYXJnID09IFB5X05vbmUpIHsKQEAgLTk3NiwyMyArOTU2LDI3IEBACiAgICAgICAgICAgICAgICAgU1RPUkVfU0laRSgwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgICAgICAgICAgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhcmcpOwotICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUoUHlVbmljb2RlX0dFVF9TSVpFKGFyZykpOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKKyAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKGxlbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoInN0ciBvciBOb25lIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgZm9ybWF0Kys7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiAicyIgb3IgIloiICovCi0gICAgICAgICAgICBQeV9VTklDT0RFICoqcCA9IHZhX2FyZygqcF92YSwgUHlfVU5JQ09ERSAqKik7Ci0KICAgICAgICAgICAgIGlmIChjID09ICdaJyAmJiBhcmcgPT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICAqcCA9IE5VTEw7CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYXJnKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9zdHJsZW4oKnApICE9IFB5VW5pY29kZV9HRVRfU0laRShhcmcpKQorICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKKyAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9zdHJsZW4oKnApICE9IGxlbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXIgb3IgTm9uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIG9yIE5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYyA9PSAnWicgPyAic3RyIG9yIE5vbmUiIDogInN0ciIsCkBAIC0xMTEwLDcgKzEwOTQsNyBAQAogICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYWRkY2xlYW51cCgqYnVmZmVyLCBmcmVlbGlzdCwgMCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYWRkY2xlYW51cCgqYnVmZmVyLCBmcmVlbGlzdCwgY2xlYW51cF9wdHIpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCiAgICAgICAgICAgICAgICAgICAgICAgICAiKGNsZWFudXAgcHJvYmxlbSkiLApAQCAtMTE1Miw3ICsxMTM2LDcgQEAKICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYWRkY2xlYW51cCgqYnVmZmVyLCBmcmVlbGlzdCwgMCkpIHsKKyAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKCpidWZmZXIsIGZyZWVsaXN0LCBjbGVhbnVwX3B0cikpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoIihjbGVhbnVwIHByb2JsZW0pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTE4Myw4ICsxMTY3LDExIEBACiAKICAgICBjYXNlICdVJzogeyAvKiBQeVVuaWNvZGUgb2JqZWN0ICovCiAgICAgICAgIFB5T2JqZWN0ICoqcCA9IHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOwotICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpCisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhcmcpID09IC0xKQorICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgICAgICAqcCA9IGFyZzsKKyAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigic3RyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICBicmVhazsKQEAgLTEyMTMsNyArMTIwMCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoIih1bnNwZWNpZmllZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIGlmIChyZXMgPT0gUHlfQ0xFQU5VUF9TVVBQT1JURUQgJiYKLSAgICAgICAgICAgICAgICBhZGRjbGVhbnVwX2NvbnZlcnQoYWRkciwgZnJlZWxpc3QsIGNvbnZlcnQpID09IC0xKQorICAgICAgICAgICAgICAgIGFkZGNsZWFudXAoYWRkciwgZnJlZWxpc3QsIGNvbnZlcnQpID09IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoY2xlYW51cCBwcm9ibGVtKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQpAQCAtMTI0NCw3ICsxMjMxLDcgQEAKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoKFB5X2J1ZmZlciopcCk7CiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiY29udGlndW91cyBidWZmZXIiLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGFkZGNsZWFudXAocCwgZnJlZWxpc3QsIDEpKSB7CisgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCBjbGVhbnVwX2J1ZmZlcikpIHsKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAogICAgICAgICAgICAgICAgICIoY2xlYW51cCBwcm9ibGVtKSIsCiAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTQzMSw4ICsxNDE4LDEwIEBACiAgICAgaW50IGxldmVsc1szMl07CiAgICAgY29uc3QgY2hhciAqZm5hbWUsICptc2csICpjdXN0b21fbXNnLCAqa2V5d29yZDsKICAgICBpbnQgbWluID0gSU5UX01BWDsKKyAgICBpbnQgbWF4ID0gSU5UX01BWDsKICAgICBpbnQgaSwgbGVuLCBuYXJncywgbmtleXdvcmRzOwotICAgIFB5T2JqZWN0ICpmcmVlbGlzdCA9IE5VTEwsICpjdXJyZW50X2FyZzsKKyAgICBQeU9iamVjdCAqY3VycmVudF9hcmc7CisgICAgZnJlZWxpc3RfdCBmcmVlbGlzdCA9IHswLCBOVUxMfTsKIAogICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgYXNzZXJ0KGtleXdvcmRzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGtleXdvcmRzKSk7CkBAIC0xNDU2LDMxICsxNDQ1LDY4IEBACiAgICAgZm9yIChsZW49MDsga3dsaXN0W2xlbl07IGxlbisrKQogICAgICAgICBjb250aW51ZTsKIAorICAgIGZyZWVsaXN0LmVudHJpZXMgPSBQeU1lbV9ORVcoZnJlZWxpc3RlbnRyeV90LCBsZW4pOworICAgIGlmIChmcmVlbGlzdC5lbnRyaWVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogICAgIG5rZXl3b3JkcyA9IChrZXl3b3JkcyA9PSBOVUxMKSA/IDAgOiBQeURpY3RfU2l6ZShrZXl3b3Jkcyk7CiAgICAgaWYgKG5hcmdzICsgbmtleXdvcmRzID4gbGVuKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlcyVzIHRha2VzIGF0IG1vc3QgJWQgIgotICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50JXMgKCVkIGdpdmVuKSIsCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXMlcyB0YWtlcyBhdCBtb3N0ICVkIGFyZ3VtZW50JXMgKCVkIGdpdmVuKSIsCiAgICAgICAgICAgICAgICAgICAgICAoZm5hbWUgPT0gTlVMTCkgPyAiZnVuY3Rpb24iIDogZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAoZm5hbWUgPT0gTlVMTCkgPyAiIiA6ICIoKSIsCiAgICAgICAgICAgICAgICAgICAgICBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAobGVuID09IDEpID8gIiIgOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICBuYXJncyArIG5rZXl3b3Jkcyk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKICAgICAvKiBjb252ZXJ0IHR1cGxlIGFyZ3MgYW5kIGtleXdvcmQgYXJncyBpbiBzYW1lIGxvb3AsIHVzaW5nIGt3bGlzdCB0byBkcml2ZSBwcm9jZXNzICovCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIGtleXdvcmQgPSBrd2xpc3RbaV07CiAgICAgICAgIGlmICgqZm9ybWF0ID09ICd8JykgeworICAgICAgICAgICAgaWYgKG1pbiAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAofCBzcGVjaWZpZWQgdHdpY2UpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG1pbiA9IGk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKKworICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBiZWZvcmUgfCkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoKmZvcm1hdCA9PSAnJCcpIHsKKyAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgc3BlY2lmaWVkIHR3aWNlKSIpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtYXggPSBpOworICAgICAgICAgICAgZm9ybWF0Kys7CisKKyAgICAgICAgICAgIGlmIChtYXggPCBuYXJncykgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAhPSBJTlRfTUFYKSA/ICJhdCBtb3N0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LCBuYXJncyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKElTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vcmUga2V5d29yZCBsaXN0IGVudHJpZXMgKCVkKSB0aGFuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHNwZWNpZmllcnMgKCVkKSIsIGxlbiwgaSk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOwogICAgICAgICBpZiAobmtleXdvcmRzKSB7CkBAIC0xNDk0LDExICsxNTIwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJXMnKSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9zaXRpb24gKCVkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChua2V5d29yZHMgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgZWxzZSBpZiAoaSA8IG5hcmdzKQogICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwogCkBAIC0xNTA3LDcgKzE1MzMsNyBAQAogICAgICAgICAgICAgICAgIGxldmVscywgbXNnYnVmLCBzaXplb2YobXNnYnVmKSwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIGlmIChtc2cpIHsKICAgICAgICAgICAgICAgICBzZXRlcnJvcihpKzEsIG1zZywgbGV2ZWxzLCBmbmFtZSwgY3VzdG9tX21zZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xNTE2LDE0ICsxNTQyLDE0IEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiUmVxdWlyZWQgYXJndW1lbnQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIChwb3MgJWQpIG5vdCBmb3VuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgICAgICAvKiBjdXJyZW50IGNvZGUgcmVwb3J0cyBzdWNjZXNzIHdoZW4gYWxsIHJlcXVpcmVkIGFyZ3MKICAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCiAgICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPwogICAgICAgICAgKi8KICAgICAgICAgaWYgKCFua2V5d29yZHMpCi0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiAKICAgICAgICAgLyogV2UgYXJlIGludG8gb3B0aW9uYWwgYXJncywgc2tpcCB0aHJ1IHRvIGFueSByZW1haW5pbmcKICAgICAgICAgICoga2V5d29yZCBhcmdzICovCkBAIC0xNTMxLDE1ICsxNTU3LDE1IEBACiAgICAgICAgIGlmIChtc2cpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsICIlczogJyVzJyIsIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICpmb3JtYXQgIT0gJ3wnKSB7CisgICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICgqZm9ybWF0ICE9ICd8JykgJiYgKCpmb3JtYXQgIT0gJyQnKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgIm1vcmUgYXJndW1lbnQgc3BlY2lmaWVycyB0aGFuIGtleXdvcmQgbGlzdCBlbnRyaWVzICIKICAgICAgICAgICAgICIocmVtYWluaW5nIGZvcm1hdDonJXMnKSIsIGZvcm1hdCk7Ci0gICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgIH0KIAogICAgIC8qIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZXh0cmFuZW91cyBrZXl3b3JkIGFyZ3VtZW50cyAqLwpAQCAtMTU1Miw3ICsxNTc4LDcgQEAKICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIGNoZWNrIHRoYXQgX1B5VW5pY29kZV9Bc1N0cmluZygpIHJlc3VsdCBpcyBub3QgTlVMTCAqLwogICAgICAgICAgICAga3MgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7CkBAIC0xNTY5LDEyICsxNTk1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJVUnIGlzIGFuIGludmFsaWQga2V5d29yZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBjbGVhbnJldHVybigxLCBmcmVlbGlzdCk7CisgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiB9CiAKIApAQCAtMTU4Niw4ICsxNjEyLDEwIEBACiAKICAgICBzd2l0Y2ggKGMpIHsKIAotICAgIC8qIHNpbXBsZSBjb2RlcwotICAgICAqIFRoZSBpbmRpdmlkdWFsIHR5cGVzIChzZWNvbmQgYXJnIG9mIHZhX2FyZykgYXJlIGlycmVsZXZhbnQgKi8KKyAgICAvKgorICAgICAqIGNvZGVzIHRoYXQgdGFrZSBhIHNpbmdsZSBkYXRhIHBvaW50ZXIgYXMgYW4gYXJndW1lbnQKKyAgICAgKiAodGhlIHR5cGUgb2YgdGhlIHBvaW50ZXIgaXMgaXJyZWxldmFudCkKKyAgICAgKi8KIAogICAgIGNhc2UgJ2InOiAvKiBieXRlIC0tIHZlcnkgc2hvcnQgaW50ICovCiAgICAgY2FzZSAnQic6IC8qIGJ5dGUgYXMgYml0ZmllbGQgKi8KQEAgLTE2MDEsMjIgKzE2MjksMjEgQEAKICAgICBjYXNlICdMJzogLyogUFlfTE9OR19MT05HICovCiAgICAgY2FzZSAnSyc6IC8qIFBZX0xPTkdfTE9ORyBzaXplZCBiaXRmaWVsZCAqLwogI2VuZGlmCisgICAgY2FzZSAnbic6IC8qIFB5X3NzaXplX3QgKi8KICAgICBjYXNlICdmJzogLyogZmxvYXQgKi8KICAgICBjYXNlICdkJzogLyogZG91YmxlICovCiAgICAgY2FzZSAnRCc6IC8qIGNvbXBsZXggZG91YmxlICovCiAgICAgY2FzZSAnYyc6IC8qIGNoYXIgKi8KICAgICBjYXNlICdDJzogLyogdW5pY29kZSBjaGFyICovCisgICAgY2FzZSAncCc6IC8qIGJvb2xlYW4gcHJlZGljYXRlICovCisgICAgY2FzZSAnUyc6IC8qIHN0cmluZyBvYmplY3QgKi8KKyAgICBjYXNlICdZJzogLyogc3RyaW5nIG9iamVjdCAqLworICAgIGNhc2UgJ1UnOiAvKiB1bmljb2RlIHN0cmluZyBvYmplY3QgKi8KICAgICAgICAgewogICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICBjYXNlICduJzogLyogUHlfc3NpemVfdCAqLwotICAgICAgICB7Ci0gICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeV9zc2l6ZV90ICopOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgIC8qIHN0cmluZyBjb2RlcyAqLwogCiAgICAgY2FzZSAnZSc6IC8qIHN0cmluZyB3aXRoIGVuY29kaW5nICovCkBAIC0xNjQ5LDE2ICsxNjc2LDYgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAvKiBvYmplY3QgY29kZXMgKi8KLQotICAgIGNhc2UgJ1MnOiAvKiBzdHJpbmcgb2JqZWN0ICovCi0gICAgY2FzZSAnWSc6IC8qIHN0cmluZyBvYmplY3QgKi8KLSAgICBjYXNlICdVJzogLyogdW5pY29kZSBzdHJpbmcgb2JqZWN0ICovCi0gICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICBjYXNlICdPJzogLyogb2JqZWN0ICovCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgqZm9ybWF0ID09ICchJykgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dldGNvcHlyaWdodC5jIGIvUHl0aG9uL2dldGNvcHlyaWdodC5jCmluZGV4IGQxZTI1NzguLmQ4M2M2ZGEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9nZXRjb3B5cmlnaHQuYworKysgYi9QeXRob24vZ2V0Y29weXJpZ2h0LmMKQEAgLTE5LDUgKzE5LDUgQEAKIGNvbnN0IGNoYXIgKgogUHlfR2V0Q29weXJpZ2h0KHZvaWQpCiB7Ci0JcmV0dXJuIGNwcnQ7CisgICAgcmV0dXJuIGNwcnQ7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vZ3JhbWluaXQuYyBiL1B5dGhvbi9ncmFtaW5pdC5jCmluZGV4IGNhYmM0ZDYuLmUwNDk5OWIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ncmFtaW5pdC5jCisrKyBiL1B5dGhvbi9ncmFtaW5pdC5jCkBAIC0xNzkxLDcgKzE3OTEsNyBAQAogICAgIHsxNjcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MF8xWzJdID0gewotICAgIHs5LCAyfSwKKyAgICB7MTY4LCAyfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgwXzJbMV0gPSB7CkBAIC0xODAyLDE3MSArMTgwMiwxODggQEAKICAgICB7MiwgYXJjc184MF8xfSwKICAgICB7MSwgYXJjc184MF8yfSwKIH07Ci1zdGF0aWMgZGZhIGRmYXNbODFdID0gewotICAgIHsyNTYsICJzaW5nbGVfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMCwKLSAgICAgIlwwMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNCJ9LAotICAgIHsyNTcsICJmaWxlX2lucHV0IiwgMCwgMiwgc3RhdGVzXzEsCi0gICAgICJcMjA0XDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDQifSwKLSAgICB7MjU4LCAiZXZhbF9pbnB1dCIsIDAsIDMsIHN0YXRlc18yLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezI1OSwgImRlY29yYXRvciIsIDAsIDcsIHN0YXRlc18zLAotICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2MCwgImRlY29yYXRvcnMiLCAwLCAyLCBzdGF0ZXNfNCwKLSAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjEsICJkZWNvcmF0ZWQiLCAwLCAzLCBzdGF0ZXNfNSwKLSAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjIsICJmdW5jZGVmIiwgMCwgOCwgc3RhdGVzXzYsCi0gICAgICJcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjYzLCAicGFyYW1ldGVycyIsIDAsIDQsIHN0YXRlc183LAotICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NCwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzgsCi0gICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY1LCAidGZwZGVmIiwgMCwgNCwgc3RhdGVzXzksCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY2LCAidmFyYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzEwLAotICAgICAiXDAwMFwwMDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NywgInZmcGRlZiIsIDAsIDIsIHN0YXRlc18xMSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjgsICJzdG10IiwgMCwgMiwgc3RhdGVzXzEyLAotICAgICAiXDAwMFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0In0sCi0gICAgezI2OSwgInNpbXBsZV9zdG10IiwgMCwgNCwgc3RhdGVzXzEzLAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwIn0sCi0gICAgezI3MCwgInNtYWxsX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTQsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDAifSwKLSAgICB7MjcxLCAiZXhwcl9zdG10IiwgMCwgNiwgc3RhdGVzXzE1LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezI3MiwgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xNiwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHsyNzMsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzc2XDAzN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc0LCAiZGVsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMTgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc1LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzE5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NiwgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM0MFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMCJ9LAotICAgIHsyNzcsICJicmVha19zdG10IiwgMCwgMiwgc3RhdGVzXzIxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3OCwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc5LCAicmV0dXJuX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgwLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMCJ9LAotICAgIHsyODEsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI1LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MiwgImltcG9ydF9zdG10IiwgMCwgMiwgc3RhdGVzXzI2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MywgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NCwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzI4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NSwgImltcG9ydF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzI5LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NiwgImRvdHRlZF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMwLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NywgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODgsICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzIsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg5LCAiZG90dGVkX25hbWUiLCAwLCAyLCBzdGF0ZXNfMzMsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkwLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkxLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTIsICJhc3NlcnRfc3RtdCIsIDAsIDUsIHN0YXRlc18zNiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTMsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM3LAotICAgICAiXDAwMFwwMTBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDA0NVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0In0sCi0gICAgezI5NCwgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk1LCAid2hpbGVfc3RtdCIsIDAsIDgsIHN0YXRlc18zOSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTYsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk3LCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OCwgIndpdGhfc3RtdCIsIDAsIDUsIHN0YXRlc180MiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTksICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDMsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzAwLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDEsICJzdWl0ZSIsIDAsIDUsIHN0YXRlc180NSwKLSAgICAgIlwwMDRcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMCJ9LAotICAgIHszMDIsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ2LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwMywgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzQ3LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwNCwgImxhbWJkZWYiLCAwLCA1LCBzdGF0ZXNfNDgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA1LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNDksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA2LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDcsICJhbmRfdGVzdCIsIDAsIDIsIHN0YXRlc181MSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDgsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181MiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDksICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzUzLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxMCwgImNvbXBfb3AiLCAwLCA0LCBzdGF0ZXNfNTQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwyMjBcMTc3XDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzExLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU1LAotICAgICAiXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMxMiwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTYsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzEzLCAieG9yX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTcsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE0LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTgsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE1LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTYsICJhcml0aF9leHByIiwgMCwgMiwgc3RhdGVzXzYwLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxNywgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE4LCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzYyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxOSwgInBvd2VyIiwgMCwgNCwgc3RhdGVzXzYzLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEyMFwwNzZcMDAwIn0sCi0gICAgezMyMCwgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjQsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDAifSwKLSAgICB7MzIxLCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182NSwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjIsICJ0cmFpbGVyIiwgMCwgNywgc3RhdGVzXzY2LAotICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwIn0sCi0gICAgezMyMywgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNjcsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI0LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzY4LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMyNSwgInNsaWNlb3AiLCAwLCAzLCBzdGF0ZXNfNjksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzI2LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI3LCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI4LCAiZGljdG9yc2V0bWFrZXIiLCAwLCAxMSwgc3RhdGVzXzcyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMyOSwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzczLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0In0sCi0gICAgezMzMCwgImFyZ2xpc3QiLCAwLCA4LCBzdGF0ZXNfNzQsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzMxLCAiYXJndW1lbnQiLCAwLCA0LCBzdGF0ZXNfNzUsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzMyLCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzMywgImNvbXBfZm9yIiwgMCwgNiwgc3RhdGVzXzc3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzNCwgImNvbXBfaWYiLCAwLCA0LCBzdGF0ZXNfNzgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM1LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc183OSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzYsICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzgwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwIn0sCitzdGF0aWMgYXJjIGFyY3NfODFfMFsyXSA9IHsKKyAgICB7NzMsIDF9LAorICAgIHs5LCAyfSwKIH07Ci1zdGF0aWMgbGFiZWwgbGFiZWxzWzE2OF0gPSB7CitzdGF0aWMgYXJjIGFyY3NfODFfMVsxXSA9IHsKKyAgICB7MjQsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgxWzNdID0geworICAgIHsyLCBhcmNzXzgxXzB9LAorICAgIHsxLCBhcmNzXzgxXzF9LAorICAgIHsxLCBhcmNzXzgxXzJ9LAorfTsKK3N0YXRpYyBkZmEgZGZhc1s4Ml0gPSB7CisgICAgezI1NiwgInNpbmdsZV9pbnB1dCIsIDAsIDMsIHN0YXRlc18wLAorICAgICAiXDAwNFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0XDAwMCJ9LAorICAgIHsyNTcsICJmaWxlX2lucHV0IiwgMCwgMiwgc3RhdGVzXzEsCisgICAgICJcMjA0XDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDRcMDAwIn0sCisgICAgezI1OCwgImV2YWxfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MjU5LCAiZGVjb3JhdG9yIiwgMCwgNywgc3RhdGVzXzMsCisgICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2MCwgImRlY29yYXRvcnMiLCAwLCAyLCBzdGF0ZXNfNCwKKyAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYxLCAiZGVjb3JhdGVkIiwgMCwgMywgc3RhdGVzXzUsCisgICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2MiwgImZ1bmNkZWYiLCAwLCA4LCBzdGF0ZXNfNiwKKyAgICAgIlwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYzLCAicGFyYW1ldGVycyIsIDAsIDQsIHN0YXRlc183LAorICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjQsICJ0eXBlZGFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc184LAorICAgICAiXDAwMFwwMDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjUsICJ0ZnBkZWYiLCAwLCA0LCBzdGF0ZXNfOSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY2LCAidmFyYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzEwLAorICAgICAiXDAwMFwwMDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjcsICJ2ZnBkZWYiLCAwLCAyLCBzdGF0ZXNfMTEsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2OCwgInN0bXQiLCAwLCAyLCBzdGF0ZXNfMTIsCisgICAgICJcMDAwXDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDRcMDAwIn0sCisgICAgezI2OSwgInNpbXBsZV9zdG10IiwgMCwgNCwgc3RhdGVzXzEzLAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwXDAwMCJ9LAorICAgIHsyNzAsICJzbWFsbF9zdG10IiwgMCwgMiwgc3RhdGVzXzE0LAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwXDAwMCJ9LAorICAgIHsyNzEsICJleHByX3N0bXQiLCAwLCA2LCBzdGF0ZXNfMTUsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezI3MiwgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xNiwKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MjczLCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM3NlwwMzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzQsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18xOCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc1LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzE5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzYsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwIn0sCisgICAgezI3NywgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3OCwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3OSwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzIzLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODAsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMCJ9LAorICAgIHsyODEsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODIsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgzLCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NCwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzI4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODUsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18yOSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg2LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzAsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NywgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg4LCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzMyLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODksICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zMywKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkwLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MSwgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MiwgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTMsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM3LAorICAgICAiXDAwMFwwMTBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDA0NVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMCJ9LAorICAgIHsyOTQsICJpZl9zdG10IiwgMCwgOCwgc3RhdGVzXzM4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTUsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzM5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTYsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NywgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180MSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk4LCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTksICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDMsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwMCwgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMSwgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ1LAorICAgICAiXDAwNFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwXDAwMCJ9LAorICAgIHszMDIsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ2LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDMsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc180NywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzA0LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc180OCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA1LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNDksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwNiwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTAsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwNywgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUxLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDgsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181MiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzA5LCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181MywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzEwLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDIyMFwxNzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzExLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU1LAorICAgICAiXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTIsICJleHByIiwgMCwgMiwgc3RhdGVzXzU2LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTMsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181NywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE0LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTgsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxNSwgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxNiwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxNywgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjEsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxOCwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182MiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE5LCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjMsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyMCwgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjQsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyMSwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjUsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyMiwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNjYsCisgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwIn0sCisgICAgezMyMywgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNjcsCisgICAgICJcMDAwXDA0MFwwNDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyNCwgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc182OCwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzI1LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc182OSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzI2LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyNywgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzcxLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMjgsICJkaWN0b3JzZXRtYWtlciIsIDAsIDExLCBzdGF0ZXNfNzIsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyOSwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzczLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMCJ9LAorICAgIHszMzAsICJhcmdsaXN0IiwgMCwgOCwgc3RhdGVzXzc0LAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMzEsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183NSwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzMyLCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzMsICJjb21wX2ZvciIsIDAsIDYsIHN0YXRlc183NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM0LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc183OCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM1LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc183OSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM2LCAieWllbGRfZXhwciIsIDAsIDMsIHN0YXRlc184MCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKKyAgICB7MzM3LCAieWllbGRfYXJnIiwgMCwgMywgc3RhdGVzXzgxLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMlwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorfTsKK3N0YXRpYyBsYWJlbCBsYWJlbHNbMTY5XSA9IHsKICAgICB7MCwgIkVNUFRZIn0sCiAgICAgezI1NiwgMH0sCiAgICAgezQsIDB9LApAQCAtMjEzNSwxMCArMjE1MiwxMSBAQAogICAgIHszMzQsIDB9LAogICAgIHszMzUsIDB9LAogICAgIHsxLCAieWllbGQifSwKKyAgICB7MzM3LCAwfSwKIH07CiBncmFtbWFyIF9QeVBhcnNlcl9HcmFtbWFyID0gewotICAgIDgxLAorICAgIDgyLAogICAgIGRmYXMsCi0gICAgezE2OCwgbGFiZWxzfSwKKyAgICB7MTY5LCBsYWJlbHN9LAogICAgIDI1NgogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnQuYyBiL1B5dGhvbi9pbXBvcnQuYwppbmRleCBiZWIwZWVjLi4yZjcxYjk3IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0LmMKKysrIGIvUHl0aG9uL2ltcG9ydC5jCkBAIC04LDYgKzgsNyBAQAogI2luY2x1ZGUgImVycmNvZGUuaCIKICNpbmNsdWRlICJtYXJzaGFsLmgiCiAjaW5jbHVkZSAiY29kZS5oIgorI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAib3NkZWZzLmgiCiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIApAQCAtMjYsMTc2ICsyNywzOCBAQAogI2VuZGlmCiAKIAotLyogTWFnaWMgd29yZCB0byByZWplY3QgLnB5YyBmaWxlcyBnZW5lcmF0ZWQgYnkgb3RoZXIgUHl0aG9uIHZlcnNpb25zLgotICAgSXQgc2hvdWxkIGNoYW5nZSBmb3IgZWFjaCBpbmNvbXBhdGlibGUgY2hhbmdlIHRvIHRoZSBieXRlY29kZS4KLQotICAgVGhlIHZhbHVlIG9mIENSIGFuZCBMRiBpcyBpbmNvcnBvcmF0ZWQgc28gaWYgeW91IGV2ZXIgcmVhZCBvciB3cml0ZQotICAgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCi0gICBBcHBsZSBNUFcgY29tcGlsZXIgc3dhcHMgdGhlaXIgdmFsdWVzLCBib3RjaGluZyBzdHJpbmcgY29uc3RhbnRzLgotCi0gICBUaGUgbWFnaWMgbnVtYmVycyBtdXN0IGJlIHNwYWNlZCBhcGFydCBhdCBsZWFzdCAyIHZhbHVlcywgYXMgdGhlCi0gICAtVSBpbnRlcnBldGVyIGZsYWcgd2lsbCBjYXVzZSBNQUdJQysxIGJlaW5nIHVzZWQuIFRoZXkgaGF2ZSBiZWVuCi0gICBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KLQotICAgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KLSAgIFRoZSBjdXJyZW50IHdvcmtpbmcgc2NoZW1lIGlzIHRvIGluY3JlbWVudCB0aGUgcHJldmlvdXMgdmFsdWUgYnkKLSAgIDEwLgotCi0gICBTdGFydGluZyB3aXRoIHRoZSBhZG9wdGlvbiBvZiBQRVAgMzE0NyBpbiBQeXRob24gMy4yLCBldmVyeSBidW1wIGluIG1hZ2ljCi0gICBudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCi0gICB0byByZXByZXNlbnQgdGhlIG1hZ2ljIG51bWJlciBpbiBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllcy4gIFdoZW4geW91IGNoYW5nZQotICAgdGhlIG1hZ2ljIG51bWJlciwgeW91IG11c3QgYWxzbyBzZXQgYSBuZXcgdW5pcXVlIG1hZ2ljIHRhZy4gIEdlbmVyYWxseSB0aGlzCi0gICBjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0Ci0gICBpdCBjYW4gcmVhbGx5IGJlIGFueXRoaW5nLCBhcyBsb25nIGFzIGl0J3MgZGlmZmVyZW50IHRoYW4gYW55dGhpbmcgZWxzZQotICAgdGhhdCdzIGNvbWUgYmVmb3JlLiAgVGhlIHRhZ3MgYXJlIGluY2x1ZGVkIGluIHRoZSBmb2xsb3dpbmcgdGFibGUsIHN0YXJ0aW5nCi0gICB3aXRoIFB5dGhvbiAzLjJhMC4KLQotICAgS25vd24gdmFsdWVzOgotICAgICAgIFB5dGhvbiAxLjU6ICAgMjAxMjEKLSAgICAgICBQeXRob24gMS41LjE6IDIwMTIxCi0gICAgICAgUHl0aG9uIDEuNS4yOiAyMDEyMQotICAgICAgIFB5dGhvbiAxLjY6ICAgNTA0MjgKLSAgICAgICBQeXRob24gMi4wOiAgIDUwODIzCi0gICAgICAgUHl0aG9uIDIuMC4xOiA1MDgyMwotICAgICAgIFB5dGhvbiAyLjE6ICAgNjAyMDIKLSAgICAgICBQeXRob24gMi4xLjE6IDYwMjAyCi0gICAgICAgUHl0aG9uIDIuMS4yOiA2MDIwMgotICAgICAgIFB5dGhvbiAyLjI6ICAgNjA3MTcKLSAgICAgICBQeXRob24gMi4zYTA6IDYyMDExCi0gICAgICAgUHl0aG9uIDIuM2EwOiA2MjAyMQotICAgICAgIFB5dGhvbiAyLjNhMDogNjIwMTEgKCEpCi0gICAgICAgUHl0aG9uIDIuNGEwOiA2MjA0MQotICAgICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKLSAgICAgICBQeXRob24gMi40YjE6IDYyMDYxCi0gICAgICAgUHl0aG9uIDIuNWEwOiA2MjA3MQotICAgICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCi0gICAgICAgUHl0aG9uIDIuNWEwOiA2MjA5MSAod2l0aCkKLSAgICAgICBQeXRob24gMi41YTA6IDYyMDkyIChjaGFuZ2VkIFdJVEhfQ0xFQU5VUCBvcGNvZGUpCi0gICAgICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCi0gICAgICAgUHl0aG9uIDIuNWIzOiA2MjExMSAoZml4IHdyb25nIGNvZGU6IHggKz0geWllbGQpCi0gICAgICAgUHl0aG9uIDIuNWMxOiA2MjEyMSAoZml4IHdyb25nIGxub3RhYiB3aXRoIGZvciBsb29wcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKLSAgICAgICBQeXRob24gMi41YzI6IDYyMTMxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLiBpbiBsaXN0Y29tcC9nZW5leHApCi0gICAgICAgUHl0aG9uIDIuNmEwOiA2MjE1MSAocGVlcGhvbGUgb3B0aW1pemF0aW9ucyBhbmQgU1RPUkVfTUFQIG9wY29kZSkKLSAgICAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQotICAgICAgIFB5dGhvbiAzMDAwOiAgIDMwMDAKLSAgICAgICAgICAgICAgICAgICAgICAzMDEwIChyZW1vdmVkIFVOQVJZX0NPTlZFUlQpCi0gICAgICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQotICAgICAgICAgICAgICAgICAgICAgIDMwMzAgKGFkZGVkIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgICAgICAgIDMwNDAgKGFkZGVkIHNpZ25hdHVyZSBhbm5vdGF0aW9ucykKLSAgICAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgICAgMzA2MCAoUEVQIDMxMTUgbWV0YWNsYXNzIHN5bnRheCkKLSAgICAgICAgICAgICAgICAgICAgICAzMDYxIChzdHJpbmcgbGl0ZXJhbHMgYmVjb21lIHVuaWNvZGUpCi0gICAgICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKLSAgICAgICAgICAgICAgICAgICAgICAzMDgxIChQRVAgMzEzNyBtYWtlIF9fZmlsZV9fIGFuZCBfX25hbWVfXyB1bmljb2RlKQotICAgICAgICAgICAgICAgICAgICAgIDMwOTEgKGtpbGwgc3RyOCBpbnRlcm5pbmcpCi0gICAgICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQotICAgICAgICAgICAgICAgICAgICAgIDMxMDMgKF9fZmlsZV9fIHBvaW50cyB0byBzb3VyY2UgZmlsZSkKLSAgICAgICBQeXRob24gMy4wYTQ6IDMxMTEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pLgotICAgICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQotICAgICAgIFB5dGhvbiAzLjFhMDogMzE0MSAob3B0aW1pemUgbGlzdCwgc2V0IGFuZCBkaWN0IGNvbXByZWhlbnNpb25zOgotICAgICAgICAgICAgICAgY2hhbmdlIExJU1RfQVBQRU5EIGFuZCBTRVRfQURELCBhZGQgTUFQX0FERCkKLSAgICAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgotICAgICAgICAgICAgICAgaW50cm9kdWNlIFBPUF9KVU1QX0lGX0ZBTFNFIGFuZCBQT1BfSlVNUF9JRl9UUlVFKQotICAgICAgIFB5dGhvbiAzLjJhMDogMzE2MCAoYWRkIFNFVFVQX1dJVEgpCi0gICAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKLSAgICAgICBQeXRob24gMy4yYTE6IDMxNzAgKGFkZCBEVVBfVE9QX1RXTywgcmVtb3ZlIERVUF9UT1BYIGFuZCBST1RfRk9VUikKLSAgICAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgotICAgICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKLSovCi0KLS8qIE1BR0lDIG11c3QgY2hhbmdlIHdoZW5ldmVyIHRoZSBieXRlY29kZSBlbWl0dGVkIGJ5IHRoZSBjb21waWxlciBtYXkgbm8KLSAgIGxvbmdlciBiZSB1bmRlcnN0b29kIGJ5IG9sZGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZXZhbCBsb29wICh1c3VhbGx5Ci0gICBkdWUgdG8gdGhlIGFkZGl0aW9uIG9mIG5ldyBvcGNvZGVzKQotICAgVEFHIG11c3QgY2hhbmdlIGZvciBlYWNoIG1ham9yIFB5dGhvbiByZWxlYXNlLiBUaGUgbWFnaWMgbnVtYmVyIHdpbGwgdGFrZQotICAgY2FyZSBvZiBhbnkgYnl0ZWNvZGUgY2hhbmdlcyB0aGF0IG9jY3VyIGR1cmluZyBkZXZlbG9wbWVudC4KLSovCi0jZGVmaW5lIE1BR0lDICgzMTgwIHwgKChsb25nKSdccic8PDE2KSB8ICgobG9uZyknXG4nPDwyNCkpCi0jZGVmaW5lIFRBRyAiY3B5dGhvbi0zMiIKICNkZWZpbmUgQ0FDSEVESVIgIl9fcHljYWNoZV9fIgotLyogQ3VycmVudCBtYWdpYyB3b3JkIGFuZCBzdHJpbmcgdGFnIGFzIGdsb2JhbHMuICovCi1zdGF0aWMgbG9uZyBweWNfbWFnaWMgPSBNQUdJQzsKLXN0YXRpYyBjb25zdCBjaGFyICpweWNfdGFnID0gVEFHOwogCi0vKiBTZWUgX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZSgpIGJlbG93ICovCisvKiBTZWUgX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KCkgYmVsb3cgKi8KIHN0YXRpYyBQeU9iamVjdCAqZXh0ZW5zaW9ucyA9IE5VTEw7CiAKKy8qIEZ1bmN0aW9uIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCitleHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKGludCwgUHlPYmplY3QgKik7CisKIC8qIFRoaXMgdGFibGUgaXMgZGVmaW5lZCBpbiBjb25maWcuYzogKi8KIGV4dGVybiBzdHJ1Y3QgX2luaXR0YWIgX1B5SW1wb3J0X0luaXR0YWJbXTsKIAotLyogTWV0aG9kIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCi1leHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhpbnQpOwotCiBzdHJ1Y3QgX2luaXR0YWIgKlB5SW1wb3J0X0luaXR0YWIgPSBfUHlJbXBvcnRfSW5pdHRhYjsKIAotLyogdGhlc2UgdGFibGVzIGRlZmluZSB0aGUgbW9kdWxlIHN1ZmZpeGVzIHRoYXQgUHl0aG9uIHJlY29nbml6ZXMgKi8KLXN0cnVjdCBmaWxlZGVzY3IgKiBfUHlJbXBvcnRfRmlsZXRhYiA9IE5VTEw7Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9TdGFuZGFyZEZpbGV0YWJbXSA9IHsKLSAgICB7Ii5weSIsICJVIiwgUFlfU09VUkNFfSwKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgeyIucHl3IiwgIlUiLCBQWV9TT1VSQ0V9LAotI2VuZGlmCi0gICAgeyIucHljIiwgInJiIiwgUFlfQ09NUElMRUR9LAotICAgIHswLCAwfQotfTsKLQorc3RhdGljIFB5T2JqZWN0ICppbml0c3RyID0gTlVMTDsKIAogLyogSW5pdGlhbGl6ZSB0aGluZ3MgKi8KIAogdm9pZAogX1B5SW1wb3J0X0luaXQodm9pZCkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyICpzY2FuOwotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZpbGV0YWI7Ci0gICAgaW50IGNvdW50RCA9IDA7Ci0gICAgaW50IGNvdW50UyA9IDA7Ci0KLSAgICAvKiBwcmVwYXJlIF9QeUltcG9ydF9GaWxldGFiOiBjb3B5IGVudHJpZXMgZnJvbQotICAgICAgIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYiBhbmQgX1B5SW1wb3J0X1N0YW5kYXJkRmlsZXRhYi4KLSAgICAgKi8KLSNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwotICAgIGZvciAoc2NhbiA9IF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYjsgc2Nhbi0+c3VmZml4ICE9IE5VTEw7ICsrc2NhbikKLSAgICAgICAgKytjb3VudEQ7Ci0jZW5kaWYKLSAgICBmb3IgKHNjYW4gPSBfUHlJbXBvcnRfU3RhbmRhcmRGaWxldGFiOyBzY2FuLT5zdWZmaXggIT0gTlVMTDsgKytzY2FuKQotICAgICAgICArK2NvdW50UzsKLSAgICBmaWxldGFiID0gUHlNZW1fTkVXKHN0cnVjdCBmaWxlZGVzY3IsIGNvdW50RCArIGNvdW50UyArIDEpOwotICAgIGlmIChmaWxldGFiID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgaW1wb3J0IGZpbGUgdGFibGUuIik7Ci0jaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKLSAgICBtZW1jcHkoZmlsZXRhYiwgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiLAotICAgICAgICAgICBjb3VudEQgKiBzaXplb2Yoc3RydWN0IGZpbGVkZXNjcikpOwotI2VuZGlmCi0gICAgbWVtY3B5KGZpbGV0YWIgKyBjb3VudEQsIF9QeUltcG9ydF9TdGFuZGFyZEZpbGV0YWIsCi0gICAgICAgICAgIGNvdW50UyAqIHNpemVvZihzdHJ1Y3QgZmlsZWRlc2NyKSk7Ci0gICAgZmlsZXRhYltjb3VudEQgKyBjb3VudFNdLnN1ZmZpeCA9IE5VTEw7Ci0KLSAgICBfUHlJbXBvcnRfRmlsZXRhYiA9IGZpbGV0YWI7Ci0KLSAgICBpZiAoUHlfT3B0aW1pemVGbGFnKSB7Ci0gICAgICAgIC8qIFJlcGxhY2UgIi5weWMiIHdpdGggIi5weW8iIGluIF9QeUltcG9ydF9GaWxldGFiICovCi0gICAgICAgIGZvciAoOyBmaWxldGFiLT5zdWZmaXggIT0gTlVMTDsgZmlsZXRhYisrKSB7Ci0gICAgICAgICAgICBpZiAoc3RyY21wKGZpbGV0YWItPnN1ZmZpeCwgIi5weWMiKSA9PSAwKQotICAgICAgICAgICAgICAgIGZpbGV0YWItPnN1ZmZpeCA9ICIucHlvIjsKLSAgICAgICAgfQotICAgIH0KKyAgICBpbml0c3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9faW5pdF9fIik7CisgICAgaWYgKGluaXRzdHIgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBpbXBvcnQgdmFyaWFibGVzIik7CiB9CiAKIHZvaWQKIF9QeUltcG9ydEhvb2tzX0luaXQodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqdiwgKnBhdGhfaG9va3MgPSBOVUxMLCAqemltcGltcG9ydDsKKyAgICBQeU9iamVjdCAqdiwgKnBhdGhfaG9va3MgPSBOVUxMOwogICAgIGludCBlcnIgPSAwOwogCi0gICAgLyogYWRkaW5nIHN5cy5wYXRoX2hvb2tzIGFuZCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSwgc2V0dGluZyB1cAotICAgICAgIHppcGltcG9ydCAqLwotICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TnVsbEltcG9ydGVyX1R5cGUpIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgaW5zdGFsbGluZyB6aXBpbXBvcnQgaG9va1xuIik7Ci0KKyAgICAvKiBhZGRpbmcgc3lzLnBhdGhfaG9va3MgYW5kIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlICovCiAgICAgdiA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTIxNiwxMSArNzksMjUgQEAKICAgICBlcnIgPSBQeVN5c19TZXRPYmplY3QoInBhdGhfaG9va3MiLCBwYXRoX2hvb2tzKTsKICAgICBpZiAoZXJyKSB7CiAgIGVycm9yOgotICAgICAgICBQeUVycl9QcmludCgpOwotICAgICAgICBQeV9GYXRhbEVycm9yKCJpbml0aWFsaXppbmcgc3lzLm1ldGFfcGF0aCwgc3lzLnBhdGhfaG9va3MsICIKLSAgICAgICAgICAgICAgICAgICAgICAicGF0aF9pbXBvcnRlcl9jYWNoZSwgb3IgTnVsbEltcG9ydGVyIGZhaWxlZCIKLSAgICAgICAgICAgICAgICAgICAgICApOworICAgIFB5RXJyX1ByaW50KCk7CisgICAgUHlfRmF0YWxFcnJvcigiaW5pdGlhbGl6aW5nIHN5cy5tZXRhX3BhdGgsIHN5cy5wYXRoX2hvb2tzLCAiCisgICAgICAgICAgICAgICAgICAib3IgcGF0aF9pbXBvcnRlcl9jYWNoZSBmYWlsZWQiKTsKICAgICB9CisgICAgUHlfREVDUkVGKHBhdGhfaG9va3MpOworfQorCit2b2lkCitfUHlJbXBvcnRaaXBfSW5pdCh2b2lkKQoreworICAgIFB5T2JqZWN0ICpwYXRoX2hvb2tzLCAqemltcGltcG9ydDsKKyAgICBpbnQgZXJyID0gMDsKKworICAgIHBhdGhfaG9va3MgPSBQeVN5c19HZXRPYmplY3QoInBhdGhfaG9va3MiKTsKKyAgICBpZiAocGF0aF9ob29rcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQorICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBpbnN0YWxsaW5nIHppcGltcG9ydCBob29rXG4iKTsKIAogICAgIHppbXBpbXBvcnQgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInppcGltcG9ydCIpOwogICAgIGlmICh6aW1waW1wb3J0ID09IE5VTEwpIHsKQEAgLTIyOSw4ICsxMDYsOSBAQAogICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgY2FuJ3QgaW1wb3J0IHppcGltcG9ydFxuIik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqemlwaW1wb3J0ZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHppbXBpbXBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInppcGltcG9ydGVyIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHppcGltcG9ydGVyKTsKKyAgICAgICAgUHlPYmplY3QgKnppcGltcG9ydGVyID0gX1B5T2JqZWN0X0dldEF0dHJJZCh6aW1waW1wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX3ppcGltcG9ydGVyKTsKICAgICAgICAgUHlfREVDUkVGKHppbXBpbXBvcnQpOwogICAgICAgICBpZiAoemlwaW1wb3J0ZXIgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogTm8gemlwaW1wb3J0ZXIgb2JqZWN0IC0tIG9rYXkgKi8KQEAgLTIzOSwxNyArMTE3LDIzIEBACiAgICAgICAgICAgICAgICAgICAgICIjIGNhbid0IGltcG9ydCB6aXBpbXBvcnQuemlwaW1wb3J0ZXJcbiIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogc3lzLnBhdGhfaG9va3MuYXBwZW5kKHppcGltcG9ydGVyKSAqLwotICAgICAgICAgICAgZXJyID0gUHlMaXN0X0FwcGVuZChwYXRoX2hvb2tzLCB6aXBpbXBvcnRlcik7CisgICAgICAgICAgICAvKiBzeXMucGF0aF9ob29rcy5pbnNlcnQoMCwgemlwaW1wb3J0ZXIpICovCisgICAgICAgICAgICBlcnIgPSBQeUxpc3RfSW5zZXJ0KHBhdGhfaG9va3MsIDAsIHppcGltcG9ydGVyKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih6aXBpbXBvcnRlcik7Ci0gICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgaWYgKGVyciA8IDApIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQogICAgICAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAogICAgICAgICAgICAgICAgICAgICAiIyBpbnN0YWxsZWQgemlwaW1wb3J0IGhvb2tcbiIpOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0RFQ1JFRihwYXRoX2hvb2tzKTsKKworICAgIHJldHVybjsKKworICBlcnJvcjoKKyAgICBQeUVycl9QcmludCgpOworICAgIFB5X0ZhdGFsRXJyb3IoImluaXRpYWxpemluZyB6aXBpbXBvcnQgZmFpbGVkIik7CiB9CiAKIC8qIExvY2tpbmcgcHJpbWl0aXZlcyB0byBwcmV2ZW50IHBhcmFsbGVsIGltcG9ydHMgb2YgdGhlIHNhbWUgbW9kdWxlCkBAIC0zMTksNyArMjAzLDcgQEAKICAgICAgICAgLyogRm9ya2VkIGFzIGEgc2lkZSBlZmZlY3Qgb2YgaW1wb3J0ICovCiAgICAgICAgIGxvbmcgbWUgPSBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCk7CiAgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhpbXBvcnRfbG9jaywgMCk7Ci0JLyogWFhYOiBjYW4gdGhlIHByZXZpb3VzIGxpbmUgZmFpbD8gKi8KKyAgICAgICAgLyogWFhYOiBjYW4gdGhlIHByZXZpb3VzIGxpbmUgZmFpbD8gKi8KICAgICAgICAgaW1wb3J0X2xvY2tfdGhyZWFkID0gbWU7CiAgICAgICAgIGltcG9ydF9sb2NrX2xldmVsLS07CiAgICAgfSBlbHNlIHsKQEAgLTM2OSw4ICsyNTMsNiBAQAogewogICAgIFB5X1hERUNSRUYoZXh0ZW5zaW9ucyk7CiAgICAgZXh0ZW5zaW9ucyA9IE5VTEw7Ci0gICAgUHlNZW1fREVMKF9QeUltcG9ydF9GaWxldGFiKTsKLSAgICBfUHlJbXBvcnRfRmlsZXRhYiA9IE5VTEw7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBpZiAoaW1wb3J0X2xvY2sgIT0gTlVMTCkgewogICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soaW1wb3J0X2xvY2spOwpAQCAtMzc5LDE0ICsyNjEsNiBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkCi1pbXBfbW9kdWxlc19yZWxvYWRpbmdfY2xlYXIodm9pZCkKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKLSAgICBpZiAoaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyAhPSBOVUxMKQotICAgICAgICBQeURpY3RfQ2xlYXIoaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyk7Ci19Ci0KIC8qIEhlbHBlciBmb3Igc3lzICovCiAKIFB5T2JqZWN0ICoKQEAgLTQyMyw3ICsyOTcsNiBAQAogUHlJbXBvcnRfQ2xlYW51cCh2b2lkKQogewogICAgIFB5X3NzaXplX3QgcG9zLCBuZG9uZTsKLSAgICBjaGFyICpuYW1lOwogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKmRpY3Q7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBpbnRlcnAtPm1vZHVsZXM7CkBAIC00OTYsMTQgKzM2OSwxMyBAQAogICAgICAgICAgICAgaWYgKHZhbHVlLT5vYl9yZWZjbnQgIT0gMSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soa2V5KSAmJiBQeU1vZHVsZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOwotICAgICAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwgImJ1aWx0aW5zIikgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCAiYnVpbHRpbnMiKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoc3RyY21wKG5hbWUsICJzeXMiKSA9PSAwKQorICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJzeXMiKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAotICAgICAgICAgICAgICAgICAgICAgICAgIiMgY2xlYW51cFsxXSAlc1xuIiwgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigKKyAgICAgICAgICAgICAgICAgICAgICAgICIjIGNsZWFudXBbMV0gJVVcbiIsIGtleSk7CiAgICAgICAgICAgICAgICAgX1B5TW9kdWxlX0NsZWFyKHZhbHVlKTsKICAgICAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbShtb2R1bGVzLCBrZXksIFB5X05vbmUpOwogICAgICAgICAgICAgICAgIG5kb25lKys7CkBAIC01MTUsMTMgKzM4NywxMiBAQAogICAgIHBvcyA9IDA7CiAgICAgd2hpbGUgKFB5RGljdF9OZXh0KG1vZHVsZXMsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhrZXkpICYmIFB5TW9kdWxlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoa2V5KTsKLSAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwgImJ1aWx0aW5zIikgPT0gMCkKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJidWlsdGlucyIpID09IDApCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoc3RyY21wKG5hbWUsICJzeXMiKSA9PSAwKQorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgInN5cyIpID09IDApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgY2xlYW51cFsyXSAlc1xuIiwgbmFtZSk7CisgICAgICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjIGNsZWFudXBbMl0gJVVcbiIsIGtleSk7CiAgICAgICAgICAgICBfUHlNb2R1bGVfQ2xlYXIodmFsdWUpOwogICAgICAgICAgICAgUHlEaWN0X1NldEl0ZW0obW9kdWxlcywga2V5LCBQeV9Ob25lKTsKICAgICAgICAgfQpAQCAtNTQ3LDcgKzQxOCw2IEBACiAgICAgUHlEaWN0X0NsZWFyKG1vZHVsZXMpOwogICAgIGludGVycC0+bW9kdWxlcyA9IE5VTEw7CiAgICAgUHlfREVDUkVGKG1vZHVsZXMpOwotICAgIFB5X0NMRUFSKGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcpOwogfQogCiAKQEAgLTU1NiwyNSArNDI2LDM2IEBACiBsb25nCiBQeUltcG9ydF9HZXRNYWdpY051bWJlcih2b2lkKQogewotICAgIHJldHVybiBweWNfbWFnaWM7CisgICAgbG9uZyByZXM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dldCgpLT5pbnRlcnA7CisgICAgUHlPYmplY3QgKnB5Y19tYWdpYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9SQVdfTUFHSUNfTlVNQkVSIik7CisgICAgaWYgKHB5Y19tYWdpYyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gUHlMb25nX0FzTG9uZyhweWNfbWFnaWMpOworICAgIFB5X0RFQ1JFRihweWNfbWFnaWMpOworICAgIHJldHVybiByZXM7CiB9CiAKIAorZXh0ZXJuIGNvbnN0IGNoYXIgKiBfUHlTeXNfSW1wbENhY2hlVGFnOworCiBjb25zdCBjaGFyICoKIFB5SW1wb3J0X0dldE1hZ2ljVGFnKHZvaWQpCiB7Ci0gICAgcmV0dXJuIHB5Y190YWc7CisgICAgcmV0dXJuIF9QeVN5c19JbXBsQ2FjaGVUYWc7CiB9CiAKKwogLyogTWFnaWMgZm9yIGV4dGVuc2lvbiBtb2R1bGVzIChidWlsdC1pbiBhcyB3ZWxsIGFzIGR5bmFtaWNhbGx5CiAgICBsb2FkZWQpLiAgVG8gcHJldmVudCBpbml0aWFsaXppbmcgYW4gZXh0ZW5zaW9uIG1vZHVsZSBtb3JlIHRoYW4KICAgIG9uY2UsIHdlIGtlZXAgYSBzdGF0aWMgZGljdGlvbmFyeSAnZXh0ZW5zaW9ucycga2V5ZWQgYnkgbW9kdWxlIG5hbWUKICAgIChmb3IgYnVpbHQtaW4gbW9kdWxlcykgb3IgYnkgZmlsZW5hbWUgKGZvciBkeW5hbWljYWxseSBsb2FkZWQKICAgIG1vZHVsZXMpLCBjb250YWluaW5nIHRoZXNlIG1vZHVsZXMuICBBIGNvcHkgb2YgdGhlIG1vZHVsZSdzCi0gICBkaWN0aW9uYXJ5IGlzIHN0b3JlZCBieSBjYWxsaW5nIF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUoKQorICAgZGljdGlvbmFyeSBpcyBzdG9yZWQgYnkgY2FsbGluZyBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QoKQogICAgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBzdWNjZWVkcy4gIEEKICAgIGNvcHkgY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZXJlIGJ5IGNhbGxpbmcKLSAgIF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uVW5pY29kZSgpLgorICAgX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QoKS4KIAogICAgTW9kdWxlcyB3aGljaCBkbyBzdXBwb3J0IG11bHRpcGxlIGluaXRpYWxpemF0aW9uIHNldCB0aGVpciBtX3NpemUKICAgIGZpZWxkIHRvIGEgbm9uLW5lZ2F0aXZlIG51bWJlciAoaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKQEAgLTU4Myw3ICs0NjQsOCBAQAogKi8KIAogaW50Ci1fUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKFB5T2JqZWN0ICptb2QsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpmaWxlbmFtZSkKK19QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUpCiB7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMsICpkaWN0OwogICAgIHN0cnVjdCBQeU1vZHVsZURlZiAqZGVmOwpAQCAtNjAyLDEwICs0ODQsMTAgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBtb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lLCBtb2QpIDwgMCkKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0obW9kdWxlcywgbmFtZSwgbW9kKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoX1B5U3RhdGVfQWRkTW9kdWxlKG1vZCwgZGVmKSA8IDApIHsKLSAgICAgICAgUHlEaWN0X0RlbEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSk7CisgICAgICAgIFB5RGljdF9EZWxJdGVtKG1vZHVsZXMsIG5hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChkZWYtPm1fc2l6ZSA9PSAtMSkgewpAQCAtNjMxLDE3ICs1MTMsMTcgQEAKIF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oUHlPYmplY3QgKm1vZCwgY2hhciAqbmFtZSkKIHsKICAgICBpbnQgcmVzOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKLSAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwotICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKQorICAgIFB5T2JqZWN0ICpuYW1lb2JqOworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmVzID0gX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZShtb2QsIG5hbWUsIGZpbGVuYW1lKTsKLSAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOworICAgIHJlcyA9IF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChtb2QsIG5hbWVvYmosIG5hbWVvYmopOworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKICAgICByZXR1cm4gcmVzOwogfQogCiBQeU9iamVjdCAqCi1fUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUoY2hhciAqbmFtZSwgUHlPYmplY3QgKmZpbGVuYW1lKQorX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpmaWxlbmFtZSkKIHsKICAgICBQeU9iamVjdCAqbW9kLCAqbWRpY3Q7CiAgICAgUHlNb2R1bGVEZWYqIGRlZjsKQEAgLTY1NCw3ICs1MzYsNyBAQAogICAgICAgICAvKiBNb2R1bGUgZG9lcyBub3Qgc3VwcG9ydCByZXBlYXRlZCBpbml0aWFsaXphdGlvbiAqLwogICAgICAgICBpZiAoZGVmLT5tX2Jhc2UubV9jb3B5ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbW9kID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOworICAgICAgICBtb2QgPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7CiAgICAgICAgIGlmIChtb2QgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBtZGljdCA9IFB5TW9kdWxlX0dldERpY3QobW9kKTsKQEAgLTY2OSwzMCArNTUxLDMwIEBACiAgICAgICAgIG1vZCA9IGRlZi0+bV9iYXNlLm1faW5pdCgpOwogICAgICAgICBpZiAobW9kID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpLCBuYW1lLCBtb2QpOworICAgICAgICBQeURpY3RfU2V0SXRlbShQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksIG5hbWUsIG1vZCk7CiAgICAgICAgIFB5X0RFQ1JFRihtb2QpOwogICAgIH0KICAgICBpZiAoX1B5U3RhdGVfQWRkTW9kdWxlKG1vZCwgZGVmKSA8IDApIHsKLSAgICAgICAgUHlEaWN0X0RlbEl0ZW1TdHJpbmcoUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpLCBuYW1lKTsKKyAgICAgICAgUHlEaWN0X0RlbEl0ZW0oUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpLCBuYW1lKTsKICAgICAgICAgUHlfREVDUkVGKG1vZCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0ICVzICMgcHJldmlvdXNseSBsb2FkZWQgKCVVKVxuIiwKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgJVUgIyBwcmV2aW91c2x5IGxvYWRlZCAoJVIpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBmaWxlbmFtZSk7CiAgICAgcmV0dXJuIG1vZDsKIAogfQogCiBQeU9iamVjdCAqCi1fUHlJbXBvcnRfRmluZEJ1aWx0aW4oY2hhciAqbmFtZSkKK19QeUltcG9ydF9GaW5kQnVpbHRpbihjb25zdCBjaGFyICpuYW1lKQogewotICAgIFB5T2JqZWN0ICpyZXMsICpmaWxlbmFtZTsKLSAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwotICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKQorICAgIFB5T2JqZWN0ICpyZXMsICpuYW1lb2JqOworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBfUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUobmFtZSwgZmlsZW5hbWUpOwotICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CisgICAgcmVzID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZW9iaiwgbmFtZW9iaik7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOwogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTcwMywxOCArNTg1LDE4IEBACiAgICAnTkVXJyBSRUZFUkVOQ0UhICovCiAKIFB5T2JqZWN0ICoKLVB5SW1wb3J0X0FkZE1vZHVsZShjb25zdCBjaGFyICpuYW1lKQorUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KFB5T2JqZWN0ICpuYW1lKQogewogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwogICAgIFB5T2JqZWN0ICptOwogCi0gICAgaWYgKChtID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkpICE9IE5VTEwgJiYKKyAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbShtb2R1bGVzLCBuYW1lKSkgIT0gTlVMTCAmJgogICAgICAgICBQeU1vZHVsZV9DaGVjayhtKSkKICAgICAgICAgcmV0dXJuIG07Ci0gICAgbSA9IFB5TW9kdWxlX05ldyhuYW1lKTsKKyAgICBtID0gUHlNb2R1bGVfTmV3T2JqZWN0KG5hbWUpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lLCBtKSAhPSAwKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKG1vZHVsZXMsIG5hbWUsIG0pICE9IDApIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC03MjMsMjIgKzYwNSwzMSBAQAogICAgIHJldHVybiBtOwogfQogCitQeU9iamVjdCAqCitQeUltcG9ydF9BZGRNb2R1bGUoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqbmFtZW9iaiwgKm1vZHVsZTsKKyAgICBuYW1lb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbW9kdWxlID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWVvYmopOworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICByZXR1cm4gbW9kdWxlOworfQorCisKIC8qIFJlbW92ZSBuYW1lIGZyb20gc3lzLm1vZHVsZXMsIGlmIGl0J3MgdGhlcmUuICovCiBzdGF0aWMgdm9pZAotcmVtb3ZlX21vZHVsZShjb25zdCBjaGFyICpuYW1lKQorcmVtb3ZlX21vZHVsZShQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkgPT0gTlVMTCkKKyAgICBpZiAoUHlEaWN0X0dldEl0ZW0obW9kdWxlcywgbmFtZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChQeURpY3RfRGVsSXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKSA8IDApCisgICAgaWYgKFB5RGljdF9EZWxJdGVtKG1vZHVsZXMsIG5hbWUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiaW1wb3J0OiAgZGVsZXRpbmcgZXhpc3Rpbmcga2V5IGluIgogICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlcyBmYWlsZWQiKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICogZ2V0X3NvdXJjZWZpbGUoY2hhciAqZmlsZSk7Ci1zdGF0aWMgY2hhciAqbWFrZV9zb3VyY2VfcGF0aG5hbWUoY2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Zik7Ci1zdGF0aWMgY2hhciAqbWFrZV9jb21waWxlZF9wYXRobmFtZShjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlYnVnKTsKIAogLyogRXhlY3V0ZSBhIGNvZGUgb2JqZWN0IGluIGEgbW9kdWxlIGFuZCByZXR1cm4gdGhlIG1vZHVsZSBvYmplY3QKICAqIFdJVEggSU5DUkVNRU5URUQgUkVGRVJFTkNFIENPVU5ULiAgSWYgYW4gZXJyb3Igb2NjdXJzLCBuYW1lIGlzCkBAIC03NjgsMTAgKzY1OSw2MCBAQAogUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpjbywgY2hhciAqcGF0aG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3BhdGhuYW1lKQogeworICAgIFB5T2JqZWN0ICptID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnBhdGhvYmogPSBOVUxMLCAqY3BhdGhvYmogPSBOVUxMOworCisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGNwYXRobmFtZSAhPSBOVUxMKSB7CisgICAgICAgIGNwYXRob2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjcGF0aG5hbWUpOworICAgICAgICBpZiAoY3BhdGhvYmogPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgY3BhdGhvYmogPSBOVUxMOworCisgICAgaWYgKHBhdGhuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgcGF0aG9iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQocGF0aG5hbWUpOworICAgICAgICBpZiAocGF0aG9iaiA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZSBpZiAoY3BhdGhvYmogIT0gTlVMTCkgeworICAgICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX2dldF9zb3VyY2VmaWxlKTsKKworICAgICAgICBpZiAoaW50ZXJwID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lczogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gaW50ZXJwcmV0ZXIhIik7CisgICAgICAgIH0KKworICAgICAgICBwYXRob2JqID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZ2V0X3NvdXJjZWZpbGUsIGNwYXRob2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIGlmIChwYXRob2JqID09IE5VTEwpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHBhdGhvYmogPSBOVUxMOworCisgICAgbSA9IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KG5hbWVvYmosIGNvLCBwYXRob2JqLCBjcGF0aG9iaik7CitlcnJvcjoKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CisgICAgUHlfWERFQ1JFRihwYXRob2JqKTsKKyAgICBQeV9YREVDUkVGKGNwYXRob2JqKTsKKyAgICByZXR1cm4gbTsKK30KKworUHlPYmplY3QqCitQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmNvLCBQeU9iamVjdCAqcGF0aG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY3BhdGhuYW1lKQorewogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwogICAgIFB5T2JqZWN0ICptLCAqZCwgKnY7CiAKLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOworICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogSWYgdGhlIG1vZHVsZSBpcyBiZWluZyByZWxvYWRlZCwgd2UgZ2V0IHRoZSBvbGQgbW9kdWxlIGJhY2sKQEAgLTc4Miw0MyArNzIzLDMzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0QnVpbHRpbnMoKSkgIT0gMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIC8qIFJlbWVtYmVyIHRoZSBmaWxlbmFtZSBhcyB0aGUgX19maWxlX18gYXR0cmlidXRlICovCi0gICAgdiA9IE5VTEw7CiAgICAgaWYgKHBhdGhuYW1lICE9IE5VTEwpIHsKLSAgICAgICAgdiA9IGdldF9zb3VyY2VmaWxlKHBhdGhuYW1lKTsKLSAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHYgPSBwYXRobmFtZTsKICAgICB9Ci0gICAgaWYgKHYgPT0gTlVMTCkgeworICAgIGVsc2UgewogICAgICAgICB2ID0gKChQeUNvZGVPYmplY3QgKiljbyktPmNvX2ZpbGVuYW1lOwotICAgICAgICBQeV9JTkNSRUYodik7CiAgICAgfQorICAgIFB5X0lOQ1JFRih2KTsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fZmlsZV9fIiwgdikgIT0gMCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogTm90IGltcG9ydGFudCBlbm91Z2ggdG8gcmVwb3J0ICovCiAgICAgUHlfREVDUkVGKHYpOwogCiAgICAgLyogUmVtZW1iZXIgdGhlIHB5YyBwYXRoIG5hbWUgYXMgdGhlIF9fY2FjaGVkX18gYXR0cmlidXRlLiAqLwotICAgIGlmIChjcGF0aG5hbWUgPT0gTlVMTCkgeworICAgIGlmIChjcGF0aG5hbWUgIT0gTlVMTCkKKyAgICAgICAgdiA9IGNwYXRobmFtZTsKKyAgICBlbHNlCiAgICAgICAgIHYgPSBQeV9Ob25lOwotICAgICAgICBQeV9JTkNSRUYodik7Ci0gICAgfQotICAgIGVsc2UgaWYgKCh2ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoY3BhdGhuYW1lKSkgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBOb3QgaW1wb3J0YW50IGVub3VnaCB0byByZXBvcnQgKi8KLSAgICAgICAgdiA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRih2KTsKLSAgICB9CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2NhY2hlZF9fIiwgdikgIT0gMCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogTm90IGltcG9ydGFudCBlbm91Z2ggdG8gcmVwb3J0ICovCi0gICAgUHlfREVDUkVGKHYpOwogCiAgICAgdiA9IFB5RXZhbF9FdmFsQ29kZShjbywgZCwgZCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBQeV9ERUNSRUYodik7CiAKLSAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKSkgPT0gTlVMTCkgeworICAgIGlmICgobSA9IFB5RGljdF9HZXRJdGVtKG1vZHVsZXMsIG5hbWUpKSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJMb2FkZWQgbW9kdWxlICUuMjAwcyBub3QgZm91bmQgaW4gc3lzLm1vZHVsZXMiLAorICAgICAgICAgICAgICAgICAgICAgIkxvYWRlZCBtb2R1bGUgJVIgbm90IGZvdW5kIGluIHN5cy5tb2R1bGVzIiwKICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC04MzMsNDA5ICs3NjQsNiBAQAogfQogCiAKLS8qIExpa2Ugc3RycmNocihzdHJpbmcsICcvJykgYnV0IHNlYXJjaGVzIGZvciB0aGUgcmlnaHRtb3N0IG9mIGVpdGhlciBTRVAKLSAgIG9yIEFMVFNFUCwgaWYgdGhlIGxhdHRlciBpcyBkZWZpbmVkLgotKi8KLXN0YXRpYyBjaGFyICoKLXJpZ2h0bW9zdF9zZXAoY2hhciAqcykKLXsKLSAgICBjaGFyICpmb3VuZCwgYzsKLSAgICBmb3IgKGZvdW5kID0gTlVMTDsgKGMgPSAqcyk7IHMrKykgewotICAgICAgICBpZiAoYyA9PSBTRVAKLSNpZmRlZiBBTFRTRVAKLSAgICAgICAgICAgIHx8IGMgPT0gQUxUU0VQCi0jZW5kaWYKLSAgICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgZm91bmQgPSBzOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmb3VuZDsKLX0KLQotCi0vKiBHaXZlbiBhIHBhdGhuYW1lIGZvciBhIFB5dGhvbiBzb3VyY2UgZmlsZSwgZmlsbCBhIGJ1ZmZlciB3aXRoIHRoZQotICAgcGF0aG5hbWUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNvbXBpbGVkIGZpbGUuICBSZXR1cm4gdGhlIHBhdGhuYW1lCi0gICBmb3IgdGhlIGNvbXBpbGVkIGZpbGUsIG9yIE5VTEwgaWYgdGhlcmUncyBubyBzcGFjZSBpbiB0aGUgYnVmZmVyLgotICAgRG9lc24ndCBzZXQgYW4gZXhjZXB0aW9uLiAqLwotCi1zdGF0aWMgY2hhciAqCi1tYWtlX2NvbXBpbGVkX3BhdGhuYW1lKGNoYXIgKnBhdGhuYW1lLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4sIGludCBkZWJ1ZykKLXsKLSAgICAvKiBmb28ucHkgLT4gX19weWNhY2hlX18vZm9vLjx0YWc+LnB5YyAqLwotICAgIHNpemVfdCBsZW4gPSBzdHJsZW4ocGF0aG5hbWUpOwotICAgIHNpemVfdCBpLCBzYXZlOwotICAgIGNoYXIgKnBvczsKLSAgICBpbnQgc2VwID0gU0VQOwotCi0gICAgLyogU2FuaXR5IGNoZWNrIHRoYXQgdGhlIGJ1ZmZlciBoYXMgcm91Z2hseSBlbm91Z2ggc3BhY2UgdG8gaG9sZCB3aGF0Ci0gICAgICAgd2lsbCBldmVudHVhbGx5IGJlIHRoZSBmdWxsIHBhdGggdG8gdGhlIGNvbXBpbGVkIGZpbGUuICBUaGUgNSBleHRyYQotICAgICAgIGJ5dGVzIGluY2x1ZGUgdGhlIHNsYXNoIGFmZXIgX19weWNhY2hlX18sIHRoZSB0d28gZXh0cmEgZG90cywgdGhlCi0gICAgICAgZXh0cmEgdHJhaWxpbmcgY2hhcmFjdGVyICgnYycgb3IgJ28nKSBhbmQgbnVsbC4gIFRoaXMgaXNuJ3QgZXhhY3QKLSAgICAgICBiZWNhdXNlIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGNhbiBhZmZlY3QgaG93IG1hbnkgYWN0dWFsCi0gICAgICAgY2hhcmFjdGVycyBvZiB0aGUgc3RyaW5nIGdldCBpbnRvIHRoZSBidWZmZXIuICBXZSdsbCBkbyBhIGZpbmFsCi0gICAgICAgc2FuaXR5IGNoZWNrIGJlZm9yZSB3cml0aW5nIHRoZSBleHRlbnNpb24gdG8gZW5zdXJlIHdlIGRvIG5vdAotICAgICAgIG92ZXJmbG93IHRoZSBidWZmZXIuCi0gICAgKi8KLSAgICBpZiAobGVuICsgc3RybGVuKENBQ0hFRElSKSArIHN0cmxlbihweWNfdGFnKSArIDUgPiBidWZsZW4pCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogRmluZCB0aGUgbGFzdCBwYXRoIHNlcGFyYXRvciBhbmQgY29weSBldmVyeXRoaW5nIGZyb20gdGhlIHN0YXJ0IG9mCi0gICAgICAgdGhlIHNvdXJjZSBzdHJpbmcgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgc2VwYXJhdG9yLgotICAgICovCi0gICAgaWYgKChwb3MgPSByaWdodG1vc3Rfc2VwKHBhdGhuYW1lKSkgPT0gTlVMTCkgewotICAgICAgICBpID0gMDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNlcCA9ICpwb3M7Ci0gICAgICAgIGkgPSBwb3MgLSBwYXRobmFtZSArIDE7Ci0gICAgICAgIHN0cm5jcHkoYnVmLCBwYXRobmFtZSwgaSk7Ci0gICAgfQotCi0gICAgc2F2ZSA9IGk7Ci0gICAgYnVmW2krK10gPSAnXDAnOwotICAgIC8qIEFkZCBfX3B5Y2FjaGVfXy8gKi8KLSAgICBzdHJjYXQoYnVmLCBDQUNIRURJUik7Ci0gICAgaSArPSBzdHJsZW4oQ0FDSEVESVIpIC0gMTsKLSAgICBidWZbaSsrXSA9IHNlcDsKLSAgICBidWZbaSsrXSA9ICdcMCc7Ci0gICAgLyogQWRkIHRoZSBiYXNlIGZpbGVuYW1lLCBidXQgcmVtb3ZlIHRoZSAucHkgb3IgLnB5dyBleHRlbnNpb24sIHNpbmNlCi0gICAgICAgdGhlIHRhZyBuYW1lIG11c3QgZ28gYmVmb3JlIHRoZSBleHRlbnNpb24uCi0gICAgKi8KLSAgICBzdHJjYXQoYnVmLCBwYXRobmFtZSArIHNhdmUpOwotICAgIGlmICgocG9zID0gc3RycmNocihidWYsICcuJykpICE9IE5VTEwpCi0gICAgICAgICorK3BvcyA9ICdcMCc7Ci0gICAgc3RyY2F0KGJ1ZiwgcHljX3RhZyk7Ci0gICAgLyogVGhlIGxlbmd0aCB0ZXN0IGFib3ZlIGFzc3VtZXMgdGhhdCB3ZSdyZSBvbmx5IGFkZGluZyBvbmUgY2hhcmFjdGVyCi0gICAgICAgdG8gdGhlIGVuZCBvZiB3aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHRoZSBleHRlbnNpb24uICBXaGF0IGlmIHRoZXJlCi0gICAgICAgaXMgbm8gZXh0ZW5zaW9uLCBvciB0aGUgc3RyaW5nIGVuZHMgaW4gJy4nIG9yICcucCcsIGFuZCBvdGhlcndpc2UKLSAgICAgICBmaWxscyB0aGUgYnVmZmVyPyAgQnkgYXBwZW5kaW5nIDQgbW9yZSBjaGFyYWN0ZXJzIG9udG8gdGhlIHN0cmluZwotICAgICAgIGhlcmUsIHdlIGNvdWxkIG92ZXJydW4gdGhlIGJ1ZmZlci4KLQotICAgICAgIEFzIGEgc2ltcGxlIGV4YW1wbGUsIGxldCdzIHNheSBidWZsZW49MzIgYW5kIHRoZSBpbnB1dCBzdHJpbmcgaXMKLSAgICAgICAneHh4LnB5Jy4gIHN0cmxlbigpIHdvdWxkIGJlIDYgYW5kIHRoZSB0ZXN0IGFib3ZlIHdvdWxkIHlpZWxkOgotCi0gICAgICAgKDYgKyAxMSArIDEwICsgNSA9PSAzMikgPiAzMgotCi0gICAgICAgd2hpY2ggaXMgZmFsc2UgYW5kIHNvIHRoZSBuYW1lIG1hbmdsaW5nIHdvdWxkIGNvbnRpbnVlLiAgVGhpcyB3b3VsZAotICAgICAgIGJlIGZpbmUgYmVjYXVzZSB3ZSdkIGVuZCB1cCB3aXRoIHRoaXMgc3RyaW5nIGluIGJ1ZjoKLQotICAgICAgIF9fcHljYWNoZV9fL3h4eC5jcHl0aG9uLTMyLnB5Y1wwCi0KLSAgICAgICBzdHJsZW4ob2YgdGhhdCkgPT0gMzAgKyB0aGUgbnVsIGZpdHMgaW5zaWRlIGEgMzIgY2hhcmFjdGVyIGJ1ZmZlci4KLSAgICAgICBXZSBjYW4gZXZlbiBoYW5kbGUgYW4gaW5wdXQgc3RyaW5nIG9mIHNheSAneHh4eHgnIGFib3ZlIGJlY2F1c2UKLSAgICAgICB0aGF0J3MgKDUgKyAxMSArIDEwICsgNSA9PSAzMSkgPiAzMiB3aGljaCBpcyBhbHNvIGZhbHNlLiAgTmFtZQotICAgICAgIG1hbmdsaW5nIHRoYXQgeWllbGRzOgotCi0gICAgICAgX19weWNhY2hlX18veHh4eHhjcHl0aG9uLTMyLnB5Y1wwCi0KLSAgICAgICB3aGljaCBpcyAzMiBjaGFyYWN0ZXJzIGluY2x1ZGluZyB0aGUgbnVsLCBhbmQgdGh1cyBmaXRzIGluIHRoZQotICAgICAgIGJ1ZmZlci4gSG93ZXZlciwgYW4gaW5wdXQgc3RyaW5nIG9mICd4eHh4eHgnIHdvdWxkIHlpZWxkIGEgcmVzdWx0Ci0gICAgICAgc3RyaW5nIG9mOgotCi0gICAgICAgX19weWNhY2hlX18veHh4eHh4Y3B5dGhvbi0zMi5weWNcMAotCi0gICAgICAgd2hpY2ggaXMgMzMgY2hhcmFjdGVycyBsb25nIChpbmNsdWRpbmcgdGhlIG51bCksIHRodXMgb3ZlcmZsb3dpbmcKLSAgICAgICB0aGUgYnVmZmVyLCBldmVuIHRob3VnaCB0aGUgZmlyc3QgdGVzdCB3b3VsZCBmYWlsLCBpLmUuOiB0aGUgaW5wdXQKLSAgICAgICBzdHJpbmcgaXMgYWxzbyA2IGNoYXJhY3RlcnMgbG9uZywgc28gMzIgPiAzMiBpcyBmYWxzZS4KLQotICAgICAgIFRoZSByZWFzb24gdGhlIGZpcnN0IHRlc3QgZmFpbHMgYnV0IHdlIHN0aWxsIG92ZXJmbG93IHRoZSBidWZmZXIgaXMKLSAgICAgICB0aGF0IHRoZSB0ZXN0IGFib3ZlIG9ubHkgZXhwZWN0cyB0byBhZGQgb25lIGV4dHJhIGNoYXJhY3RlciB0byBiZQotICAgICAgIGFkZGVkIHRvIHRoZSBleHRlbnNpb24sIGFuZCBoZXJlIHdlJ3JlIGFkZGluZyB0aHJlZSAocHljKS4gIFdlCi0gICAgICAgZG9uJ3QgYWRkIHRoZSBmaXJzdCBkb3QsIHNvIHRoYXQgcmVjbGFpbXMgb25lIG9mIGV4cGVjdGVkCi0gICAgICAgcG9zaXRpb25zLCBsZWF2aW5nIHVzIG92ZXJmbG93aW5nIGJ5IDEgYnl0ZSAoMyBleHRyYSAtIDEgcmVjbGFpbWVkCi0gICAgICAgZG90IC0gMSBleHBlY3RlZCBleHRyYSA9PSAxIG92ZXJmbG93ZWQpLgotCi0gICAgICAgVGhlIGJlc3Qgd2UgY2FuIGRvIGlzIGVuc3VyZSB0aGF0IHdlIHN0aWxsIGhhdmUgZW5vdWdoIHJvb20gaW4gdGhlCi0gICAgICAgdGFyZ2V0IGJ1ZmZlciBiZWZvcmUgd2Ugd3JpdGUgdGhlIGV4dGVuc2lvbi4gIEJlY2F1c2UgaXQncyBhbHdheXMKLSAgICAgICBvbmx5IHRoZSBleHRlbnNpb24gdGhhdCBjYW4gY2F1c2UgdGhlIG92ZXJmbG93LCBhbmQgbmV2ZXIgdGhlIG90aGVyCi0gICAgICAgcGF0aCBieXRlcyB3ZSd2ZSB3cml0dGVuLCBpdCdzIHN1ZmZpY2llbnQgdG8ganVzdCBkbyBvbmUgbW9yZSB0ZXN0Ci0gICAgICAgaGVyZS4gIFN0aWxsLCB0aGUgYXNzZXJ0aW9uIHRoYXQgZm9sbG93cyBjYW4ndCBodXJ0LgotICAgICovCi0jaWYgMAotICAgIHByaW50Zigic3RybGVuKGJ1Zik6ICVkOyBidWZsZW46ICVkXG4iLCAoaW50KXN0cmxlbihidWYpLCAoaW50KWJ1Zmxlbik7Ci0jZW5kaWYKLSAgICBpZiAoc3RybGVuKGJ1ZikgKyA1ID4gYnVmbGVuKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHJjYXQoYnVmLCBkZWJ1ZyA/ICIucHljIiA6ICIucHlvIik7Ci0gICAgYXNzZXJ0KHN0cmxlbihidWYpIDwgYnVmbGVuKTsKLSAgICByZXR1cm4gYnVmOwotfQotCi0KLS8qIEdpdmVuIGEgcGF0aG5hbWUgdG8gYSBQeXRob24gYnl0ZSBjb21waWxlZCBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gdGhlCi0gICBzb3VyY2UgZmlsZSwgaWYgdGhlIHBhdGggbWF0Y2hlcyB0aGUgUEVQIDMxNDcgZm9ybWF0LiAgVGhpcyBkb2VzIG5vdCBjaGVjawotICAgZm9yIGFueSBmaWxlIGV4aXN0ZW5jZSwgaG93ZXZlciwgaWYgdGhlIHB5YyBmaWxlIG5hbWUgZG9lcyBub3QgbWF0Y2ggUEVQCi0gICAzMTQ3IHN0eWxlLCBOVUxMIGlzIHJldHVybmVkLiAgYnVmIG11c3QgYmUgYXQgbGVhc3QgYXMgYmlnIGFzIHBhdGhuYW1lOwotICAgdGhlIHJlc3VsdGluZyBwYXRoIHdpbGwgYWx3YXlzIGJlIHNob3J0ZXIuICovCi0KLXN0YXRpYyBjaGFyICoKLW1ha2Vfc291cmNlX3BhdGhuYW1lKGNoYXIgKnBhdGhuYW1lLCBjaGFyICpidWYpCi17Ci0gICAgLyogX19weWNhY2hlX18vZm9vLjx0YWc+LnB5YyAtPiBmb28ucHkgKi8KLSAgICBzaXplX3QgaSwgajsKLSAgICBjaGFyICpsZWZ0LCAqcmlnaHQsICpkb3QwLCAqZG90MSwgc2VwOwotCi0gICAgLyogTG9vayBiYWNrIHR3byBzbGFzaGVzIGZyb20gdGhlIGVuZC4gIEluIGJldHdlZW4gdGhlc2UgdHdvIHNsYXNoZXMKLSAgICAgICBtdXN0IGJlIHRoZSBzdHJpbmcgX19weWNhY2hlX18gb3IgdGhpcyBpcyBub3QgYSBQRVAgMzE0NyBzdHlsZQotICAgICAgIHBhdGguICBJdCdzIHBvc3NpYmxlIGZvciB0aGVyZSB0byBiZSBvbmx5IG9uZSBzbGFzaC4KLSAgICAqLwotICAgIGlmICgocmlnaHQgPSByaWdodG1vc3Rfc2VwKHBhdGhuYW1lKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc2VwID0gKnJpZ2h0OwotICAgICpyaWdodCA9ICdcMCc7Ci0gICAgbGVmdCA9IHJpZ2h0bW9zdF9zZXAocGF0aG5hbWUpOwotICAgICpyaWdodCA9IHNlcDsKLSAgICBpZiAobGVmdCA9PSBOVUxMKQotICAgICAgICBsZWZ0ID0gcGF0aG5hbWU7Ci0gICAgZWxzZQotICAgICAgICBsZWZ0Kys7Ci0gICAgaWYgKHJpZ2h0LWxlZnQgIT0gc3RybGVuKENBQ0hFRElSKSB8fAotICAgICAgICBzdHJuY21wKGxlZnQsIENBQ0hFRElSLCByaWdodC1sZWZ0KSAhPSAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIE5vdyB2ZXJpZnkgdGhhdCB0aGUgcGF0aCBjb21wb25lbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBsYXN0IHNsYXNoCi0gICAgICAgaGFzIHR3byBkb3RzIGluIGl0LgotICAgICovCi0gICAgaWYgKChkb3QwID0gc3RyY2hyKHJpZ2h0ICsgMSwgJy4nKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKChkb3QxID0gc3RyY2hyKGRvdDAgKyAxLCAnLicpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAvKiBUb28gbWFueSBkb3RzPyAqLwotICAgIGlmIChzdHJjaHIoZG90MSArIDEsICcuJykgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBUaGlzIGlzIGEgUEVQIDMxNDcgcGF0aC4gIFN0YXJ0IGJ5IGNvcHlpbmcgZXZlcnl0aGluZyBmcm9tIHRoZQotICAgICAgIHN0YXJ0IG9mIHBhdGhuYW1lIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGxlZnRtb3N0IHNsYXNoLiAgVGhlbgotICAgICAgIGNvcHkgdGhlIGZpbGUncyBiYXNlbmFtZSwgcmVtb3ZpbmcgdGhlIG1hZ2ljIHRhZyBhbmQgYWRkaW5nIGEgLnB5Ci0gICAgICAgc3VmZml4LgotICAgICovCi0gICAgc3RybmNweShidWYsIHBhdGhuYW1lLCAoaT1sZWZ0LXBhdGhuYW1lKSk7Ci0gICAgc3RybmNweShidWYraSwgcmlnaHQrMSwgKGo9ZG90MC1yaWdodCkpOwotICAgIHN0cmNweShidWYraStqLCAicHkiKTsKLSAgICByZXR1cm4gYnVmOwotfQotCi0vKiBHaXZlbiBhIHBhdGhuYW1lIGZvciBhIFB5dGhvbiBzb3VyY2UgZmlsZSwgaXRzIHRpbWUgb2YgbGFzdAotICAgbW9kaWZpY2F0aW9uLCBhbmQgYSBwYXRobmFtZSBmb3IgYSBjb21waWxlZCBmaWxlLCBjaGVjayB3aGV0aGVyIHRoZQotICAgY29tcGlsZWQgZmlsZSByZXByZXNlbnRzIHRoZSBzYW1lIHZlcnNpb24gb2YgdGhlIHNvdXJjZS4gIElmIHNvLAotICAgcmV0dXJuIGEgRklMRSBwb2ludGVyIGZvciB0aGUgY29tcGlsZWQgZmlsZSwgcG9zaXRpb25lZCBqdXN0IGFmdGVyCi0gICB0aGUgaGVhZGVyOyBpZiBub3QsIHJldHVybiBOVUxMLgotICAgRG9lc24ndCBzZXQgYW4gZXhjZXB0aW9uLiAqLwotCi1zdGF0aWMgRklMRSAqCi1jaGVja19jb21waWxlZF9tb2R1bGUoY2hhciAqcGF0aG5hbWUsIHRpbWVfdCBtdGltZSwgY2hhciAqY3BhdGhuYW1lKQotewotICAgIEZJTEUgKmZwOwotICAgIGxvbmcgbWFnaWM7Ci0gICAgbG9uZyBweWNfbXRpbWU7Ci0KLSAgICBmcCA9IGZvcGVuKGNwYXRobmFtZSwgInJiIik7Ci0gICAgaWYgKGZwID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIG1hZ2ljID0gUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwotICAgIGlmIChtYWdpYyAhPSBweWNfbWFnaWMpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgJXMgaGFzIGJhZCBtYWdpY1xuIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHB5Y19tdGltZSA9IFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKLSAgICBpZiAocHljX210aW1lICE9IG10aW1lKSB7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIGhhcyBiYWQgbXRpbWVcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIG1hdGNoZXMgJXNcbiIsIGNwYXRobmFtZSwgcGF0aG5hbWUpOwotICAgIHJldHVybiBmcDsKLX0KLQotCi0vKiBSZWFkIGEgY29kZSBvYmplY3QgZnJvbSBhIGZpbGUgYW5kIGNoZWNrIGl0IGZvciB2YWxpZGl0eSAqLwotCi1zdGF0aWMgUHlDb2RlT2JqZWN0ICoKLXJlYWRfY29tcGlsZWRfbW9kdWxlKGNoYXIgKmNwYXRobmFtZSwgRklMRSAqZnApCi17Ci0gICAgUHlPYmplY3QgKmNvOwotCi0gICAgY28gPSBQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZShmcCk7Ci0gICAgaWYgKGNvID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlDb2RlX0NoZWNrKGNvKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiTm9uLWNvZGUgb2JqZWN0IGluICUuMjAwcyIsIGNwYXRobmFtZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihjbyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gKFB5Q29kZU9iamVjdCAqKWNvOwotfQotCi0KLS8qIExvYWQgYSBtb2R1bGUgZnJvbSBhIGNvbXBpbGVkIGZpbGUsIGV4ZWN1dGUgaXQsIGFuZCByZXR1cm4gaXRzCi0gICBtb2R1bGUgb2JqZWN0IFdJVEggSU5DUkVNRU5URUQgUkVGRVJFTkNFIENPVU5UICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1sb2FkX2NvbXBpbGVkX21vZHVsZShjaGFyICpuYW1lLCBjaGFyICpjcGF0aG5hbWUsIEZJTEUgKmZwKQotewotICAgIGxvbmcgbWFnaWM7Ci0gICAgUHlDb2RlT2JqZWN0ICpjbzsKLSAgICBQeU9iamVjdCAqbTsKLQotICAgIG1hZ2ljID0gUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwotICAgIGlmIChtYWdpYyAhPSBweWNfbWFnaWMpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkJhZCBtYWdpYyBudW1iZXIgaW4gJS4yMDBzIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgICh2b2lkKSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7Ci0gICAgY28gPSByZWFkX2NvbXBpbGVkX21vZHVsZShjcGF0aG5hbWUsIGZwKTsKLSAgICBpZiAoY28gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgcHJlY29tcGlsZWQgZnJvbSAlc1xuIiwKLSAgICAgICAgICAgIG5hbWUsIGNwYXRobmFtZSk7Ci0gICAgbSA9IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygKLSAgICAgICAgbmFtZSwgKFB5T2JqZWN0ICopY28sIGNwYXRobmFtZSwgY3BhdGhuYW1lKTsKLSAgICBQeV9ERUNSRUYoY28pOwotCi0gICAgcmV0dXJuIG07Ci19Ci0KLS8qIFBhcnNlIGEgc291cmNlIGZpbGUgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBjb2RlIG9iamVjdCAqLwotCi1zdGF0aWMgUHlDb2RlT2JqZWN0ICoKLXBhcnNlX3NvdXJjZV9tb2R1bGUoY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQotewotICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwotICAgIG1vZF90eSBtb2Q7Ci0gICAgUHlDb21waWxlckZsYWdzIGZsYWdzOwotICAgIFB5QXJlbmEgKmFyZW5hID0gUHlBcmVuYV9OZXcoKTsKLSAgICBpZiAoYXJlbmEgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBmbGFncy5jZl9mbGFncyA9IDA7Ci0gICAgbW9kID0gUHlQYXJzZXJfQVNURnJvbUZpbGUoZnAsIHBhdGhuYW1lLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2ZpbGVfaW5wdXQsIDAsIDAsICZmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBhcmVuYSk7Ci0gICAgaWYgKG1vZCkgewotICAgICAgICBjbyA9IFB5QVNUX0NvbXBpbGUobW9kLCBwYXRobmFtZSwgTlVMTCwgYXJlbmEpOwotICAgIH0KLSAgICBQeUFyZW5hX0ZyZWUoYXJlbmEpOwotICAgIHJldHVybiBjbzsKLX0KLQotCi0vKiBIZWxwZXIgdG8gb3BlbiBhIGJ5dGVjb2RlIGZpbGUgZm9yIHdyaXRpbmcgaW4gZXhjbHVzaXZlIG1vZGUgKi8KLQotc3RhdGljIEZJTEUgKgotb3Blbl9leGNsdXNpdmUoY2hhciAqZmlsZW5hbWUsIG1vZGVfdCBtb2RlKQotewotI2lmIGRlZmluZWQoT19FWENMKSYmZGVmaW5lZChPX0NSRUFUKSYmZGVmaW5lZChPX1dST05MWSkmJmRlZmluZWQoT19UUlVOQykKLSAgICAvKiBVc2UgT19FWENMIHRvIGF2b2lkIGEgcmFjZSBjb25kaXRpb24gd2hlbiBhbm90aGVyIHByb2Nlc3MgdHJpZXMgdG8KLSAgICAgICB3cml0ZSB0aGUgc2FtZSBmaWxlLiAgV2hlbiB0aGF0IGhhcHBlbnMsIG91ciBvcGVuKCkgY2FsbCBmYWlscywKLSAgICAgICB3aGljaCBpcyBqdXN0IGZpbmUgKHNpbmNlIGl0J3Mgb25seSBhIGNhY2hlKS4KLSAgICAgICBYWFggSWYgdGhlIGZpbGUgZXhpc3RzIGFuZCBpcyB3cml0YWJsZSBidXQgdGhlIGRpcmVjdG9yeSBpcyBub3QKLSAgICAgICB3cml0YWJsZSwgdGhlIGZpbGUgd2lsbCBuZXZlciBiZSB3cml0dGVuLiAgT2ggd2VsbC4KLSAgICAqLwotICAgIGludCBmZDsKLSAgICAodm9pZCkgdW5saW5rKGZpbGVuYW1lKTsKLSAgICBmZCA9IG9wZW4oZmlsZW5hbWUsIE9fRVhDTHxPX0NSRUFUfE9fV1JPTkxZfE9fVFJVTkMKLSNpZmRlZiBPX0JJTkFSWQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxPX0JJTkFSWSAgIC8qIG5lY2Vzc2FyeSBmb3IgV2luZG93cyAqLwotI2VuZGlmCi0jaWZkZWYgX19WTVMKLSAgICAgICAgICAgICwgbW9kZSwgImN0eHQ9YmluIiwgInNocj1uaWwiCi0jZWxzZQotICAgICAgICAgICAgLCBtb2RlCi0jZW5kaWYKLSAgICAgICAgICApOwotICAgIGlmIChmZCA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBmZG9wZW4oZmQsICJ3YiIpOwotI2Vsc2UKLSAgICAvKiBCZXN0IHdlIGNhbiBkbyAtLSBvbiBXaW5kb3dzIHRoaXMgY2FuJ3QgaGFwcGVuIGFueXdheSAqLwotICAgIHJldHVybiBmb3BlbihmaWxlbmFtZSwgIndiIik7Ci0jZW5kaWYKLX0KLQotCi0vKiBXcml0ZSBhIGNvbXBpbGVkIG1vZHVsZSB0byBhIGZpbGUsIHBsYWNpbmcgdGhlIHRpbWUgb2YgbGFzdAotICAgbW9kaWZpY2F0aW9uIG9mIGl0cyBzb3VyY2UgaW50byB0aGUgaGVhZGVyLgotICAgRXJyb3JzIGFyZSBpZ25vcmVkLCBpZiBhIHdyaXRlIGVycm9yIG9jY3VycyBhbiBhdHRlbXB0IGlzIG1hZGUgdG8KLSAgIHJlbW92ZSB0aGUgZmlsZS4gKi8KLQotc3RhdGljIHZvaWQKLXdyaXRlX2NvbXBpbGVkX21vZHVsZShQeUNvZGVPYmplY3QgKmNvLCBjaGFyICpjcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzcmNzdGF0KQotewotICAgIEZJTEUgKmZwOwotICAgIGNoYXIgKmRpcnBhdGg7Ci0gICAgdGltZV90IG10aW1lID0gc3Jjc3RhdC0+c3RfbXRpbWU7Ci0jaWZkZWYgTVNfV0lORE9XUyAgIC8qIHNpbmNlIFdpbmRvd3MgdXNlcyBkaWZmZXJlbnQgcGVybWlzc2lvbnMgICovCi0gICAgbW9kZV90IG1vZGUgPSBzcmNzdGF0LT5zdF9tb2RlICYgflNfSUVYRUM7Ci0jZWxzZQotICAgIG1vZGVfdCBtb2RlID0gc3Jjc3RhdC0+c3RfbW9kZSAmIH5TX0lYVVNSICYgflNfSVhHUlAgJiB+U19JWE9USDsKLSAgICBtb2RlX3QgZGlybW9kZSA9IChzcmNzdGF0LT5zdF9tb2RlIHwKLSAgICAgICAgICAgICAgICAgICAgICBTX0lYVVNSIHwgU19JWEdSUCB8IFNfSVhPVEggfAotICAgICAgICAgICAgICAgICAgICAgIFNfSVdVU1IgfCBTX0lXR1JQIHwgU19JV09USCk7Ci0jZW5kaWYKLSAgICBpbnQgc2F2ZWQ7Ci0KLSAgICAvKiBFbnN1cmUgdGhhdCB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGV4aXN0cy4gKi8KLSAgICBkaXJwYXRoID0gcmlnaHRtb3N0X3NlcChjcGF0aG5hbWUpOwotICAgIGlmIChkaXJwYXRoID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgIiMgbm8gJXMgcGF0aCBmb3VuZCAlc1xuIiwKLSAgICAgICAgICAgICAgICBDQUNIRURJUiwgY3BhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzYXZlZCA9ICpkaXJwYXRoOwotICAgICpkaXJwYXRoID0gJ1wwJzsKLQotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoX21rZGlyKGNwYXRobmFtZSkgPCAwICYmIGVycm5vICE9IEVFWElTVCkgewotI2Vsc2UKLSAgICBpZiAobWtkaXIoY3BhdGhuYW1lLCBkaXJtb2RlKSA8IDAgJiYgZXJybm8gIT0gRUVYSVNUKSB7Ci0jZW5kaWYKLSAgICAgICAgKmRpcnBhdGggPSBzYXZlZDsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgIiMgY2Fubm90IGNyZWF0ZSBjYWNoZSBkaXIgJXNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgKmRpcnBhdGggPSBzYXZlZDsKLQotICAgIGZwID0gb3Blbl9leGNsdXNpdmUoY3BhdGhuYW1lLCBtb2RlKTsKLSAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigKLSAgICAgICAgICAgICAgICAiIyBjYW4ndCBjcmVhdGUgJXNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZShweWNfbWFnaWMsIGZwLCBQeV9NQVJTSEFMX1ZFUlNJT04pOwotICAgIC8qIEZpcnN0IHdyaXRlIGEgMCBmb3IgbXRpbWUgKi8KLSAgICBQeU1hcnNoYWxfV3JpdGVMb25nVG9GaWxlKDBMLCBmcCwgUHlfTUFSU0hBTF9WRVJTSU9OKTsKLSAgICBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb0ZpbGUoKFB5T2JqZWN0ICopY28sIGZwLCBQeV9NQVJTSEFMX1ZFUlNJT04pOwotICAgIGlmIChmZmx1c2goZnApICE9IDAgfHwgZmVycm9yKGZwKSkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjYW4ndCB3cml0ZSAlc1xuIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgLyogRG9uJ3Qga2VlcCBwYXJ0aWFsIGZpbGUgKi8KLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgKHZvaWQpIHVubGluayhjcGF0aG5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8qIE5vdyB3cml0ZSB0aGUgdHJ1ZSBtdGltZSAoYXMgYSAzMi1iaXQgZmllbGQpICovCi0gICAgZnNlZWsoZnAsIDRMLCAwKTsKLSAgICBhc3NlcnQobXRpbWUgPD0gMHhGRkZGRkZGRik7Ci0gICAgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZSgobG9uZyltdGltZSwgZnAsIFB5X01BUlNIQUxfVkVSU0lPTik7Ci0gICAgZmZsdXNoKGZwKTsKLSAgICBmY2xvc2UoZnApOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgd3JvdGUgJXNcbiIsIGNwYXRobmFtZSk7Ci19Ci0KIHN0YXRpYyB2b2lkCiB1cGRhdGVfY29kZV9maWxlbmFtZXMoUHlDb2RlT2JqZWN0ICpjbywgUHlPYmplY3QgKm9sZG5hbWUsIFB5T2JqZWN0ICpuZXduYW1lKQogewpAQCAtMTI2MCwyMjcgKzc4OCw2MCBAQAogICAgIH0KIH0KIAotc3RhdGljIGludAotdXBkYXRlX2NvbXBpbGVkX21vZHVsZShQeUNvZGVPYmplY3QgKmNvLCBjaGFyICpwYXRobmFtZSkKK3N0YXRpYyB2b2lkCit1cGRhdGVfY29tcGlsZWRfbW9kdWxlKFB5Q29kZU9iamVjdCAqY28sIFB5T2JqZWN0ICpuZXduYW1lKQogewotICAgIFB5T2JqZWN0ICpvbGRuYW1lLCAqbmV3bmFtZTsKKyAgICBQeU9iamVjdCAqb2xkbmFtZTsKIAotICAgIG5ld25hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHBhdGhuYW1lKTsKLSAgICBpZiAobmV3bmFtZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKGNvLT5jb19maWxlbmFtZSwgbmV3bmFtZSkpIHsKLSAgICAgICAgUHlfREVDUkVGKG5ld25hbWUpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlKGNvLT5jb19maWxlbmFtZSwgbmV3bmFtZSkgPT0gMCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgb2xkbmFtZSA9IGNvLT5jb19maWxlbmFtZTsKICAgICBQeV9JTkNSRUYob2xkbmFtZSk7CiAgICAgdXBkYXRlX2NvZGVfZmlsZW5hbWVzKGNvLCBvbGRuYW1lLCBuZXduYW1lKTsKICAgICBQeV9ERUNSRUYob2xkbmFtZSk7Ci0gICAgUHlfREVDUkVGKG5ld25hbWUpOwotICAgIHJldHVybiAxOwogfQogCi0vKiBMb2FkIGEgc291cmNlIG1vZHVsZSBmcm9tIGEgZ2l2ZW4gZmlsZSBhbmQgcmV0dXJuIGl0cyBtb2R1bGUKLSAgIG9iamVjdCBXSVRIIElOQ1JFTUVOVEVEIFJFRkVSRU5DRSBDT1VOVC4gIElmIHRoZXJlJ3MgYSBtYXRjaGluZwotICAgYnl0ZS1jb21waWxlZCBmaWxlLCB1c2UgdGhhdCBpbnN0ZWFkLiAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgotbG9hZF9zb3VyY2VfbW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2ltcF9maXhfY29fZmlsZW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIEZJTEUgKmZwYzsKLSAgICBjaGFyICpidWY7Ci0gICAgY2hhciAqY3BhdGhuYW1lOwotICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwotICAgIFB5T2JqZWN0ICptOworICAgIFB5T2JqZWN0ICpjbzsKKyAgICBQeU9iamVjdCAqZmlsZV9wYXRoOwogCi0gICAgaWYgKGZzdGF0KGZpbGVubyhmcCksICZzdCkgIT0gMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgZmlsZSBzdGF0dXMgZnJvbSAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POl9maXhfY29fZmlsZW5hbWUiLCAmY28sICZmaWxlX3BhdGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghUHlDb2RlX0NoZWNrKGNvKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBjb2RlIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNpemVvZiBzdC5zdF9tdGltZSA+IDQpIHsKLSAgICAgICAgLyogUHl0aG9uJ3MgLnB5YyB0aW1lc3RhbXAgaGFuZGxpbmcgcHJlc3VtZXMgdGhhdCB0aGUgdGltZXN0YW1wIGZpdHMKLSAgICAgICAgICAgaW4gNCBieXRlcy4gU2luY2UgdGhlIGNvZGUgb25seSBkb2VzIGFuIGVxdWFsaXR5IGNvbXBhcmlzb24sCi0gICAgICAgICAgIG9yZGVyaW5nIGlzIG5vdCBpbXBvcnRhbnQgYW5kIHdlIGNhbiBzYWZlbHkgaWdub3JlIHRoZSBoaWdoZXIgYml0cwotICAgICAgICAgICAoY29sbGlzaW9ucyBhcmUgZXh0cmVtZWx5IHVubGlrZWx5KS4KLSAgICAgICAgICovCi0gICAgICAgIHN0LnN0X210aW1lICY9IDB4RkZGRkZGRkY7Ci0gICAgfQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgY3BhdGhuYW1lID0gbWFrZV9jb21waWxlZF9wYXRobmFtZSgKLSAgICAgICAgcGF0aG5hbWUsIGJ1ZiwgKHNpemVfdClNQVhQQVRITEVOICsgMSwgIVB5X09wdGltaXplRmxhZyk7Ci0gICAgaWYgKGNwYXRobmFtZSAhPSBOVUxMICYmCi0gICAgICAgIChmcGMgPSBjaGVja19jb21waWxlZF9tb2R1bGUocGF0aG5hbWUsIHN0LnN0X210aW1lLCBjcGF0aG5hbWUpKSkgewotICAgICAgICBjbyA9IHJlYWRfY29tcGlsZWRfbW9kdWxlKGNwYXRobmFtZSwgZnBjKTsKLSAgICAgICAgZmNsb3NlKGZwYyk7Ci0gICAgICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICBpZiAodXBkYXRlX2NvbXBpbGVkX21vZHVsZShjbywgcGF0aG5hbWUpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIHByZWNvbXBpbGVkIGZyb20gJXNcbiIsCi0gICAgICAgICAgICAgICAgbmFtZSwgY3BhdGhuYW1lKTsKLSAgICAgICAgcGF0aG5hbWUgPSBjcGF0aG5hbWU7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBjbyA9IHBhcnNlX3NvdXJjZV9tb2R1bGUocGF0aG5hbWUsIGZwKTsKLSAgICAgICAgaWYgKGNvID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJpbXBvcnQgJXMgIyBmcm9tICVzXG4iLAotICAgICAgICAgICAgICAgIG5hbWUsIHBhdGhuYW1lKTsKLSAgICAgICAgaWYgKGNwYXRobmFtZSkgewotICAgICAgICAgICAgUHlPYmplY3QgKnJvID0gUHlTeXNfR2V0T2JqZWN0KCJkb250X3dyaXRlX2J5dGVjb2RlIik7Ci0gICAgICAgICAgICBpbnQgYiA9IChybyA9PSBOVUxMKSA/IDAgOiBQeU9iamVjdF9Jc1RydWUocm8pOwotICAgICAgICAgICAgaWYgKGIgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIGlmICghYikKLSAgICAgICAgICAgICAgICB3cml0ZV9jb21waWxlZF9tb2R1bGUoY28sIGNwYXRobmFtZSwgJnN0KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKAotICAgICAgICBuYW1lLCAoUHlPYmplY3QgKiljbywgcGF0aG5hbWUsIGNwYXRobmFtZSk7Ci0gICAgUHlfREVDUkVGKGNvKTsKIAotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gbTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmaWxlX3BhdGgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi1lcnJvcl9leGl0OgotICAgIFB5X1hERUNSRUYoY28pOwotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICB1cGRhdGVfY29tcGlsZWRfbW9kdWxlKChQeUNvZGVPYmplY3QqKWNvLCBmaWxlX3BhdGgpOworCisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLS8qIEdldCBzb3VyY2UgZmlsZSAtPiB1bmljb2RlIG9yIE5vbmUKLSAqIFJldHVybnMgdGhlIHBhdGggdG8gdGhlIHB5IGZpbGUgaWYgYXZhaWxhYmxlLCBlbHNlIHRoZSBnaXZlbiBwYXRoCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1nZXRfc291cmNlZmlsZShjaGFyICpmaWxlKQotewotICAgIGNoYXIgKnB5ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBQeU9iamVjdCAqdTsKLSAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotCi0gICAgaWYgKCFmaWxlIHx8ICEqZmlsZSkgewotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9Ci0KLSAgICBsZW4gPSBzdHJsZW4oZmlsZSk7Ci0gICAgLyogbWF0Y2ggJyoucHk/JyAqLwotICAgIGlmIChsZW4gPiBNQVhQQVRITEVOIHx8IFB5T1Nfc3RybmljbXAoJmZpbGVbbGVuLTRdLCAiLnB5IiwgMykgIT0gMCkgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChmaWxlKTsKLSAgICB9Ci0KLSAgICBweSA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChweSA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICAvKiBTdGFydCBieSB0cnlpbmcgdG8gdHVybiBQRVAgMzE0NyBwYXRoIGludG8gc291cmNlIHBhdGguICBJZiB0aGF0Ci0gICAgICogZmFpbHMsIGp1c3QgY2hvcCBvZmYgdGhlIHRyYWlsaW5nIGNoYXJhY3RlciwgaS5lLiBsZWdhY3kgcHljIHBhdGgKLSAgICAgKiB0byBweS4KLSAgICAgKi8KLSAgICBpZiAobWFrZV9zb3VyY2VfcGF0aG5hbWUoZmlsZSwgcHkpID09IE5VTEwpIHsKLSAgICAgICAgc3RybmNweShweSwgZmlsZSwgbGVuLTEpOwotICAgICAgICBweVtsZW4tMV0gPSAnXDAnOwotICAgIH0KLQotICAgIGlmIChzdGF0KHB5LCAmc3RhdGJ1ZikgPT0gMCAmJgotICAgICAgICBTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpIHsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQocHkpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZSk7Ci0gICAgfQotICAgIFB5TWVtX0ZSRUUocHkpOwotICAgIHJldHVybiB1OwotfQogCiAvKiBGb3J3YXJkICovCi1zdGF0aWMgUHlPYmplY3QgKmxvYWRfbW9kdWxlKGNoYXIgKiwgRklMRSAqLCBjaGFyICosIGludCwgUHlPYmplY3QgKik7Ci1zdGF0aWMgc3RydWN0IGZpbGVkZXNjciAqZmluZF9tb2R1bGUoY2hhciAqLCBjaGFyICosIFB5T2JqZWN0ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIEZJTEUgKiosIFB5T2JqZWN0ICoqKTsKLXN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqIGZpbmRfZnJvemVuKGNoYXIgKik7Ci0KLS8qIExvYWQgYSBwYWNrYWdlIGFuZCByZXR1cm4gaXRzIG1vZHVsZSBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRAotICAgUkVGRVJFTkNFIENPVU5UICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1sb2FkX3BhY2thZ2UoY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUpCi17Ci0gICAgUHlPYmplY3QgKm0sICpkOwotICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7Ci0gICAgaW50IGVycjsKLSAgICBjaGFyICpidWYgPSBOVUxMOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0KLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIGRpcmVjdG9yeSAlc1xuIiwKLSAgICAgICAgICAgIG5hbWUsIHBhdGhuYW1lKTsKLSAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKLSAgICBmaWxlID0gZ2V0X3NvdXJjZWZpbGUocGF0aG5hbWUpOwotICAgIGlmIChmaWxlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcGF0aCA9IFB5X0J1aWxkVmFsdWUoIltPXSIsIGZpbGUpOwotICAgIGlmIChwYXRoID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgZXJyID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fZmlsZV9fIiwgZmlsZSk7Ci0gICAgaWYgKGVyciA9PSAwKQotICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19wYXRoX18iLCBwYXRoKTsKLSAgICBpZiAoZXJyICE9IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgYnVmID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGJ1ZlswXSA9ICdcMCc7Ci0gICAgZmRwID0gZmluZF9tb2R1bGUobmFtZSwgIl9faW5pdF9fIiwgcGF0aCwgYnVmLCBNQVhQQVRITEVOKzEsICZmcCwgTlVMTCk7Ci0gICAgaWYgKGZkcCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0ltcG9ydEVycm9yKSkgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihtKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtID0gTlVMTDsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLSAgICBtID0gbG9hZF9tb2R1bGUobmFtZSwgZnAsIGJ1ZiwgZmRwLT50eXBlLCBOVUxMKTsKLSAgICBpZiAoZnAgIT0gTlVMTCkKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICBnb3RvIGNsZWFudXA7Ci0KLSAgZXJyb3I6Ci0gICAgbSA9IE5VTEw7Ci0gIGNsZWFudXA6Ci0gICAgaWYgKGJ1ZikKLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgIFB5X1hERUNSRUYocGF0aCk7Ci0gICAgUHlfWERFQ1JFRihmaWxlKTsKLSAgICByZXR1cm4gbTsKLX0KK3N0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqIGZpbmRfZnJvemVuKFB5T2JqZWN0ICopOwogCiAKIC8qIEhlbHBlciB0byB0ZXN0IGZvciBidWlsdC1pbiBtb2R1bGUgKi8KIAogc3RhdGljIGludAotaXNfYnVpbHRpbihjaGFyICpuYW1lKQoraXNfYnVpbHRpbihQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBpbnQgaTsKKyAgICBpbnQgaSwgY21wOwogICAgIGZvciAoaSA9IDA7IFB5SW1wb3J0X0luaXR0YWJbaV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKLSAgICAgICAgaWYgKHN0cmNtcChuYW1lLCBQeUltcG9ydF9Jbml0dGFiW2ldLm5hbWUpID09IDApIHsKKyAgICAgICAgY21wID0gUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgUHlJbXBvcnRfSW5pdHRhYltpXS5uYW1lKTsKKyAgICAgICAgaWYgKGNtcCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAoUHlJbXBvcnRfSW5pdHRhYltpXS5pbml0ZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGVsc2UKQEAgLTE1MzYsMTUgKzg5Nyw3IEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQogICAgIGlmIChpbXBvcnRlciA9PSBOVUxMKSB7Ci0gICAgICAgIGltcG9ydGVyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKLSAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeU51bGxJbXBvcnRlcl9UeXBlLCBwLCBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIGlmIChpbXBvcnRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19JbXBvcnRFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KICAgICBpZiAoaW1wb3J0ZXIgIT0gTlVMTCkgewogICAgICAgICBpbnQgZXJyID0gUHlEaWN0X1NldEl0ZW0ocGF0aF9pbXBvcnRlcl9jYWNoZSwgcCwgaW1wb3J0ZXIpOwpAQCAtMTU2OSw2NjEgKzkyMiwzOCBAQAogICAgIHJldHVybiBpbXBvcnRlcjsKIH0KIAotLyogU2VhcmNoIHRoZSBwYXRoIChkZWZhdWx0IHN5cy5wYXRoKSBmb3IgYSBtb2R1bGUuICBSZXR1cm4gdGhlCi0gICBjb3JyZXNwb25kaW5nIGZpbGVkZXNjciBzdHJ1Y3QsIGFuZCAodmlhIHJldHVybiBhcmd1bWVudHMpIHRoZQotICAgcGF0aG5hbWUgYW5kIGFuIG9wZW4gZmlsZS4gIFJldHVybiBOVUxMIGlmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kLiAqLwogCi0jaWZkZWYgTVNfQ09SRURMTAotZXh0ZXJuIEZJTEUgKlB5V2luX0ZpbmRSZWdpc3RlcmVkTW9kdWxlKGNvbnN0IGNoYXIgKiwgc3RydWN0IGZpbGVkZXNjciAqKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIFB5X3NzaXplX3QpOwotI2VuZGlmCi0KLXN0YXRpYyBpbnQgY2FzZV9vayhjaGFyICosIFB5X3NzaXplX3QsIFB5X3NzaXplX3QsIGNoYXIgKik7Ci1zdGF0aWMgaW50IGZpbmRfaW5pdF9tb2R1bGUoY2hhciAqKTsgLyogRm9yd2FyZCAqLwotc3RhdGljIHN0cnVjdCBmaWxlZGVzY3IgaW1wb3J0aG9va2Rlc2NyID0geyIiLCAiIiwgSU1QX0hPT0t9OwotCi1zdGF0aWMgc3RydWN0IGZpbGVkZXNjciAqCi1maW5kX21vZHVsZShjaGFyICpmdWxsbmFtZSwgY2hhciAqc3VibmFtZSwgUHlPYmplY3QgKnBhdGgsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICAgIHNpemVfdCBidWZsZW4sIEZJTEUgKipwX2ZwLCBQeU9iamVjdCAqKnBfbG9hZGVyKQotewotICAgIFB5X3NzaXplX3QgaSwgbnBhdGg7Ci0gICAgc2l6ZV90IGxlbiwgbmFtZWxlbjsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHAgPSBOVUxMOwotICAgIGNoYXIgKmZpbGVtb2RlOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGF0aF9ob29rcywgKnBhdGhfaW1wb3J0ZXJfY2FjaGU7Ci0gICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSAgICBzdGF0aWMgc3RydWN0IGZpbGVkZXNjciBmZF9mcm96ZW4gPSB7IiIsICIiLCBQWV9GUk9aRU59OwotICAgIHN0YXRpYyBzdHJ1Y3QgZmlsZWRlc2NyIGZkX2J1aWx0aW4gPSB7IiIsICIiLCBDX0JVSUxUSU59OwotICAgIHN0YXRpYyBzdHJ1Y3QgZmlsZWRlc2NyIGZkX3BhY2thZ2UgPSB7IiIsICIiLCBQS0dfRElSRUNUT1JZfTsKLSAgICBjaGFyICpuYW1lOwotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgc2l6ZV90IHNhdmVkX2xlbjsKLSAgICBzaXplX3Qgc2F2ZWRfbmFtZWxlbjsKLSAgICBjaGFyICpzYXZlZF9idWYgPSBOVUxMOwotI2VuZGlmCi0gICAgaWYgKHBfbG9hZGVyICE9IE5VTEwpCi0gICAgICAgICpwX2xvYWRlciA9IE5VTEw7Ci0KLSAgICBpZiAoc3RybGVuKHN1Ym5hbWUpID4gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgbmFtZSBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbmFtZSA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChuYW1lID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cmNweShuYW1lLCBzdWJuYW1lKTsKLQotICAgIC8qIHN5cy5tZXRhX3BhdGggaW1wb3J0IGhvb2sgKi8KLSAgICBpZiAocF9sb2FkZXIgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbWV0YV9wYXRoOwotCi0gICAgICAgIG1ldGFfcGF0aCA9IFB5U3lzX0dldE9iamVjdCgibWV0YV9wYXRoIik7Ci0gICAgICAgIGlmIChtZXRhX3BhdGggPT0gTlVMTCB8fCAhUHlMaXN0X0NoZWNrKG1ldGFfcGF0aCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5tZXRhX3BhdGggbXVzdCBiZSBhIGxpc3Qgb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9va3MiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYobWV0YV9wYXRoKTsgIC8qIHphcCBndWFyZCAqLwotICAgICAgICBucGF0aCA9IFB5TGlzdF9TaXplKG1ldGFfcGF0aCk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBucGF0aDsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbG9hZGVyOwotICAgICAgICAgICAgUHlPYmplY3QgKmhvb2sgPSBQeUxpc3RfR2V0SXRlbShtZXRhX3BhdGgsIGkpOwotICAgICAgICAgICAgbG9hZGVyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChob29rLCAiZmluZF9tb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic08iLCBmdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCAhPSBOVUxMID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA6IFB5X05vbmUpOwotICAgICAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG1ldGFfcGF0aCk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OyAgLyogdHJ1ZSBlcnJvciAqLwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxvYWRlciAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICAgICAgLyogYSBsb2FkZXIgd2FzIGZvdW5kICovCi0gICAgICAgICAgICAgICAgKnBfbG9hZGVyID0gbG9hZGVyOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRhX3BhdGgpOwotICAgICAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZpbXBvcnRob29rZGVzY3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYobWV0YV9wYXRoKTsKLSAgICB9Ci0KLSAgICBpZiAoZmluZF9mcm96ZW4oZnVsbG5hbWUpICE9IE5VTEwpIHsKLSAgICAgICAgc3RyY3B5KGJ1ZiwgZnVsbG5hbWUpOwotICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICByZXR1cm4gJmZkX2Zyb3plbjsKLSAgICB9Ci0KLSAgICBpZiAocGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChpc19idWlsdGluKG5hbWUpKSB7Ci0gICAgICAgICAgICBzdHJjcHkoYnVmLCBuYW1lKTsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gJmZkX2J1aWx0aW47Ci0gICAgICAgIH0KLSNpZmRlZiBNU19DT1JFRExMCi0gICAgICAgIGZwID0gUHlXaW5fRmluZFJlZ2lzdGVyZWRNb2R1bGUobmFtZSwgJmZkcCwgYnVmLCBidWZsZW4pOwotICAgICAgICBpZiAoZnAgIT0gTlVMTCkgewotICAgICAgICAgICAgKnBfZnAgPSBmcDsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmRwOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgcGF0aCA9IFB5U3lzX0dldE9iamVjdCgicGF0aCIpOwotICAgIH0KLQotICAgIGlmIChwYXRoID09IE5VTEwgfHwgIVB5TGlzdF9DaGVjayhwYXRoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5wYXRoIG11c3QgYmUgYSBsaXN0IG9mIGRpcmVjdG9yeSBuYW1lcyIpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgfQotCi0gICAgcGF0aF9ob29rcyA9IFB5U3lzX0dldE9iamVjdCgicGF0aF9ob29rcyIpOwotICAgIGlmIChwYXRoX2hvb2tzID09IE5VTEwgfHwgIVB5TGlzdF9DaGVjayhwYXRoX2hvb2tzKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5wYXRoX2hvb2tzIG11c3QgYmUgYSBsaXN0IG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9va3MiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KLSAgICBwYXRoX2ltcG9ydGVyX2NhY2hlID0gUHlTeXNfR2V0T2JqZWN0KCJwYXRoX2ltcG9ydGVyX2NhY2hlIik7Ci0gICAgaWYgKHBhdGhfaW1wb3J0ZXJfY2FjaGUgPT0gTlVMTCB8fAotICAgICAgICAhUHlEaWN0X0NoZWNrKHBhdGhfaW1wb3J0ZXJfY2FjaGUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgbXVzdCBiZSBhIGRpY3QiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KLQotICAgIG5wYXRoID0gUHlMaXN0X1NpemUocGF0aCk7Ci0gICAgbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnBhdGg7IGkrKykgewotICAgICAgICBQeU9iamVjdCAqdiA9IFB5TGlzdF9HZXRJdGVtKHBhdGgsIGkpOwotICAgICAgICBQeU9iamVjdCAqb3JpZ3YgPSB2OwotICAgICAgICBjb25zdCBjaGFyICpiYXNlOwotICAgICAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgICAgIGlmICghdikKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQodik7Ci0gICAgICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghUHlCeXRlc19DaGVjayh2KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBQeV9JTkNSRUYodik7Ci0KLSAgICAgICAgYmFzZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwotICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRSh2KTsKLSAgICAgICAgbGVuID0gc2l6ZTsKLSAgICAgICAgaWYgKGxlbiArIDIgKyBuYW1lbGVuICsgTUFYU1VGRklYU0laRSA+PSBidWZsZW4pIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBUb28gbG9uZyAqLwotICAgICAgICB9Ci0gICAgICAgIHN0cmNweShidWYsIGJhc2UpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0KLSAgICAgICAgaWYgKHN0cmxlbihidWYpICE9IGxlbikgewotICAgICAgICAgICAgY29udGludWU7IC8qIHYgY29udGFpbnMgJ1wwJyAqLwotICAgICAgICB9Ci0KLSAgICAgICAgLyogc3lzLnBhdGhfaG9va3MgaW1wb3J0IGhvb2sgKi8KLSAgICAgICAgaWYgKHBfbG9hZGVyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICppbXBvcnRlcjsKLQotICAgICAgICAgICAgaW1wb3J0ZXIgPSBnZXRfcGF0aF9pbXBvcnRlcihwYXRoX2ltcG9ydGVyX2NhY2hlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzLCBvcmlndik7Ci0gICAgICAgICAgICBpZiAoaW1wb3J0ZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIE5vdGU6IGltcG9ydGVyIGlzIGEgYm9ycm93ZWQgcmVmZXJlbmNlICovCi0gICAgICAgICAgICBpZiAoaW1wb3J0ZXIgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2FkZXI7Ci0gICAgICAgICAgICAgICAgbG9hZGVyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbXBvcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaW5kX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIsIGZ1bGxuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsgIC8qIGVycm9yICovCi0gICAgICAgICAgICAgICAgaWYgKGxvYWRlciAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIGEgbG9hZGVyIHdhcyBmb3VuZCAqLwotICAgICAgICAgICAgICAgICAgICAqcF9sb2FkZXIgPSBsb2FkZXI7Ci0gICAgICAgICAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAmaW1wb3J0aG9va2Rlc2NyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvKiBubyBob29rIHdhcyBmb3VuZCwgdXNlIGJ1aWx0aW4gaW1wb3J0ICovCi0KLSAgICAgICAgaWYgKGxlbiA+IDAgJiYgYnVmW2xlbi0xXSAhPSBTRVAKLSNpZmRlZiBBTFRTRVAKLSAgICAgICAgICAgICYmIGJ1ZltsZW4tMV0gIT0gQUxUU0VQCi0jZW5kaWYKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGJ1ZltsZW4rK10gPSBTRVA7Ci0gICAgICAgIHN0cmNweShidWYrbGVuLCBuYW1lKTsKLSAgICAgICAgbGVuICs9IG5hbWVsZW47Ci0KLSAgICAgICAgLyogQ2hlY2sgZm9yIHBhY2thZ2UgaW1wb3J0IChidWYgaG9sZHMgYSBkaXJlY3RvcnkgbmFtZSwKLSAgICAgICAgICAgYW5kIHRoZXJlJ3MgYW4gX19pbml0X18gbW9kdWxlIGluIHRoYXQgZGlyZWN0b3J5ICovCi0jaWZkZWYgSEFWRV9TVEFUCi0gICAgICAgIGlmIChzdGF0KGJ1ZiwgJnN0YXRidWYpID09IDAgJiYgICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgICAgIFNfSVNESVIoc3RhdGJ1Zi5zdF9tb2RlKSAmJiAgICAgICAgIC8qIGl0J3MgYSBkaXJlY3RvcnkgKi8KLSAgICAgICAgICAgIGNhc2Vfb2soYnVmLCBsZW4sIG5hbWVsZW4sIG5hbWUpKSB7IC8qIGNhc2UgbWF0Y2hlcyAqLwotICAgICAgICAgICAgaWYgKGZpbmRfaW5pdF9tb2R1bGUoYnVmKSkgeyAvKiBhbmQgaGFzIF9faW5pdF9fLnB5ICovCi0gICAgICAgICAgICAgICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gJmZkX3BhY2thZ2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChidWYpOwotICAgICAgICAgICAgICAgIGlmICh1bmljb2RlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgICAgICBlcnIgPSBQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0ltcG9ydFdhcm5pbmcsIDEsCi0gICAgICAgICAgICAgICAgICAgICJOb3QgaW1wb3J0aW5nIGRpcmVjdG9yeSAnJVUnOiBtaXNzaW5nIF9faW5pdF9fLnB5IiwKLSAgICAgICAgICAgICAgICAgICAgdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGlmIChlcnIpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICAgICAgLyogdGFrZSBhIHNuYXBzaG90IG9mIHRoZSBtb2R1bGUgc3BlYyBmb3IgcmVzdG9yYXRpb24KLSAgICAgICAgICogYWZ0ZXIgdGhlIDggY2hhcmFjdGVyIERMTCBoYWNrZXJ5Ci0gICAgICAgICAqLwotICAgICAgICBzYXZlZF9idWYgPSBzdHJkdXAoYnVmKTsKLSAgICAgICAgc2F2ZWRfbGVuID0gbGVuOwotICAgICAgICBzYXZlZF9uYW1lbGVuID0gbmFtZWxlbjsKLSNlbmRpZiAvKiBQWU9TX09TMiAqLwotICAgICAgICBmb3IgKGZkcCA9IF9QeUltcG9ydF9GaWxldGFiOyBmZHAtPnN1ZmZpeCAhPSBOVUxMOyBmZHArKykgewotICAgICAgICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKEhBVkVfRFlOQU1JQ19MT0FESU5HKQotICAgICAgICAgICAgLyogT1MvMiBsaW1pdHMgRExMcyB0byA4IGNoYXJhY3RlciBuYW1lcyAody9vCi0gICAgICAgICAgICAgICBleHRlbnNpb24pCi0gICAgICAgICAgICAgKiBzbyBpZiB0aGUgbmFtZSBpcyBsb25nZXIgdGhhbiB0aGF0IGFuZCBpdHMgYQotICAgICAgICAgICAgICogZHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZSB3ZSdyZSBnb2luZyB0byB0cnksCi0gICAgICAgICAgICAgKiB0cnVuY2F0ZSB0aGUgbmFtZSBiZWZvcmUgdHJ5aW5nCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChzdHJsZW4oc3VibmFtZSkgPiA4KSB7Ci0gICAgICAgICAgICAgICAgLyogaXMgdGhpcyBhbiBhdHRlbXB0IHRvIGxvYWQgYSBDIGV4dGVuc2lvbj8gKi8KLSAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyICpzY2FuOwotICAgICAgICAgICAgICAgIHNjYW4gPSBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWI7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHNjYW4tPnN1ZmZpeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc3RyY21wKHNjYW4tPnN1ZmZpeCwgZmRwLT5zdWZmaXgpKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHNjYW4rKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHNjYW4tPnN1ZmZpeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIHllcywgc28gdHJ1bmNhdGUgdGhlIG5hbWUgKi8KLSAgICAgICAgICAgICAgICAgICAgbmFtZWxlbiA9IDg7Ci0gICAgICAgICAgICAgICAgICAgIGxlbiAtPSBzdHJsZW4oc3VibmFtZSkgLSBuYW1lbGVuOwotICAgICAgICAgICAgICAgICAgICBidWZbbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotI2VuZGlmIC8qIFBZT1NfT1MyICovCi0gICAgICAgICAgICBzdHJjcHkoYnVmK2xlbiwgZmRwLT5zdWZmaXgpOwotICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkKLSAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyB0cnlpbmcgJXNcbiIsIGJ1Zik7Ci0KLSAgICAgICAgICAgIGZpbGVtb2RlID0gZmRwLT5tb2RlOwotICAgICAgICAgICAgaWYgKGZpbGVtb2RlWzBdID09ICdVJykKLSAgICAgICAgICAgICAgICBmaWxlbW9kZSA9ICJyIiBQWV9TVERJT1RFWFRNT0RFOwotCi0gICAgICAgICAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwICYmIFNfSVNESVIoc3RhdGJ1Zi5zdF9tb2RlKSkKLSAgICAgICAgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICAgICAgZnAgPSBOVUxMOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZwID0gZm9wZW4oYnVmLCBmaWxlbW9kZSk7Ci0gICAgICAgICAgICBpZiAoZnAgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChjYXNlX29rKGJ1ZiwgbGVuLCBuYW1lbGVuLCBuYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgIC8qIGNvbnRpbnVlIHNlYXJjaCAqLwotICAgICAgICAgICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICAgICAgICAgICAgICBmcCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgICAgICAgICAvKiByZXN0b3JlIHRoZSBzYXZlZCBzbmFwc2hvdCAqLwotICAgICAgICAgICAgc3RyY3B5KGJ1Ziwgc2F2ZWRfYnVmKTsKLSAgICAgICAgICAgIGxlbiA9IHNhdmVkX2xlbjsKLSAgICAgICAgICAgIG5hbWVsZW4gPSBzYXZlZF9uYW1lbGVuOwotI2VuZGlmCi0gICAgICAgIH0KLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgICAgICAvKiBkb24ndCBuZWVkL3dhbnQgdGhlIG1vZHVsZSBuYW1lIHNuYXBzaG90IGFueW1vcmUgKi8KLSAgICAgICAgaWYgKHNhdmVkX2J1ZikKLSAgICAgICAgewotICAgICAgICAgICAgZnJlZShzYXZlZF9idWYpOwotICAgICAgICAgICAgc2F2ZWRfYnVmID0gTlVMTDsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGlmIChmcCAhPSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJObyBtb2R1bGUgbmFtZWQgJS4yMDBzIiwgbmFtZSk7Ci0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICB9Ci0gICAgKnBfZnAgPSBmcDsKLSAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgIHJldHVybiBmZHA7Ci0KLWVycm9yX2V4aXQ6Ci0gICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotLyogY2FzZV9vayhjaGFyKiBidWYsIFB5X3NzaXplX3QgbGVuLCBQeV9zc2l6ZV90IG5hbWVsZW4sIGNoYXIqIG5hbWUpCi0gKiBUaGUgYXJndW1lbnRzIGhlcmUgYXJlIHRyaWNreSwgYmVzdCBzaG93biBieSBleGFtcGxlOgotICogICAgL2EvYi9jL2QvZS9mL2cvaC9pL2ovay9zb21lX2xvbmdfbW9kdWxlX25hbWUucHlcMAotICogICAgXiAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIF4gICAgXgotICogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLSBidWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotICogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0gbGVuIC0tLS0tLS0tLS0tLS0tLS0tLXwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLSBuYW1lIC0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLSBuYW1lbGVuIC0tLS0tfAotICogYnVmIGlzIHRoZSBmdWxsIHBhdGgsIGJ1dCBsZW4gb25seSBjb3VudHMgdXAgdG8gKCYgZXhjbHVzaXZlIG9mKSB0aGUKLSAqIGV4dGVuc2lvbi4gIG5hbWUgaXMgdGhlIG1vZHVsZSBuYW1lLCBhbHNvIGV4Y2x1c2l2ZSBvZiBleHRlbnNpb24uCi0gKgotICogV2UndmUgYWxyZWFkeSBkb25lIGEgc3VjY2Vzc2Z1bCBzdGF0KCkgb3IgZm9wZW4oKSBvbiBidWYsIHNvIGtub3cgdGhhdAotICogdGhlcmUncyBzb21lIG1hdGNoLCBwb3NzaWJseSBjYXNlLWluc2Vuc2l0aXZlLgotICoKLSAqIGNhc2Vfb2soKSBpcyB0byByZXR1cm4gMSBpZiB0aGVyZSdzIGEgY2FzZS1zZW5zaXRpdmUgbWF0Y2ggZm9yCi0gKiBuYW1lLCBlbHNlIDAuICBjYXNlX29rKCkgaXMgYWxzbyB0byByZXR1cm4gMSBpZiBlbnZhciBQWVRIT05DQVNFT0sKLSAqIGV4aXN0cy4KLSAqCi0gKiBjYXNlX29rKCkgaXMgdXNlZCB0byBpbXBsZW1lbnQgY2FzZS1zZW5zaXRpdmUgaW1wb3J0IHNlbWFudGljcyBldmVuCi0gKiBvbiBwbGF0Zm9ybXMgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLiAgSXQncyB0cml2aWFsIHRvIGltcGxlbWVudAotICogZm9yIGNhc2Utc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLiAgSXQncyBwcmV0dHkgbXVjaCBhIGNyb3NzLXBsYXRmb3JtCi0gKiBuaWdodG1hcmUgZm9yIHN5c3RlbXMgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLgotICovCi0KLS8qIEZpcnN0IHdlIG1heSBuZWVkIGEgcGlsZSBvZiBwbGF0Zm9ybS1zcGVjaWZpYyBoZWFkZXIgZmlsZXM7IHRoZSBzZXF1ZW5jZQotICogb2YgI2lmJ3MgaGVyZSBzaG91bGQgbWF0Y2ggdGhlIHNlcXVlbmNlIGluIHRoZSBib2R5IG9mIGNhc2Vfb2soKS4KLSAqLwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0KLSNlbGlmIGRlZmluZWQoREpHUFApCi0jaW5jbHVkZSA8ZGlyLmg+Ci0KLSNlbGlmIChkZWZpbmVkKF9fTUFDSF9fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkgJiYgZGVmaW5lZChIQVZFX0RJUkVOVF9IKQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPGRpcmVudC5oPgotCi0jZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQotI2RlZmluZSBJTkNMX0RPUwotI2RlZmluZSBJTkNMX0RPU0VSUk9SUwotI2RlZmluZSBJTkNMX05PUE1BUEkKLSNpbmNsdWRlIDxvczIuaD4KLSNlbmRpZgotCi1zdGF0aWMgaW50Ci1jYXNlX29rKGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sIFB5X3NzaXplX3QgbmFtZWxlbiwgY2hhciAqbmFtZSkKLXsKLS8qIFBpY2sgYSBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbjsgdGhlIHNlcXVlbmNlIG9mICNpZidzIGhlcmUgc2hvdWxkCi0gKiBtYXRjaCB0aGUgc2VxdWVuY2UganVzdCBhYm92ZS4KLSAqLwotCi0vKiBNU19XSU5ET1dTICovCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIFdJTjMyX0ZJTkRfREFUQSBkYXRhOwotICAgIEhBTkRMRSBoOwotCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OQ0FTRU9LIikgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBoID0gRmluZEZpcnN0RmlsZShidWYsICZkYXRhKTsKLSAgICBpZiAoaCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfTmFtZUVycm9yLAotICAgICAgICAgICJDYW4ndCBmaW5kIGZpbGUgZm9yIG1vZHVsZSAlLjEwMHNcbihmaWxlbmFtZSAlLjMwMHMpIiwKLSAgICAgICAgICBuYW1lLCBidWYpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgRmluZENsb3NlKGgpOwotICAgIHJldHVybiBzdHJuY21wKGRhdGEuY0ZpbGVOYW1lLCBuYW1lLCBuYW1lbGVuKSA9PSAwOwotCi0vKiBESkdQUCAqLwotI2VsaWYgZGVmaW5lZChESkdQUCkKLSAgICBzdHJ1Y3QgZmZibGsgZmZibGs7Ci0gICAgaW50IGRvbmU7Ci0KLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05DQVNFT0siKSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIGRvbmUgPSBmaW5kZmlyc3QoYnVmLCAmZmZibGssIEZBX0FSQ0h8RkFfUkRPTkxZfEZBX0hJRERFTnxGQV9ESVJFQyk7Ci0gICAgaWYgKGRvbmUpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05hbWVFcnJvciwKLSAgICAgICAgICAiQ2FuJ3QgZmluZCBmaWxlIGZvciBtb2R1bGUgJS4xMDBzXG4oZmlsZW5hbWUgJS4zMDBzKSIsCi0gICAgICAgICAgbmFtZSwgYnVmKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBzdHJuY21wKGZmYmxrLmZmX25hbWUsIG5hbWUsIG5hbWVsZW4pID09IDA7Ci0KLS8qIG5ldy1mYW5nbGVkIG1hY2ludG9zaCAobWFjb3N4KSBvciBDeWd3aW4gKi8KLSNlbGlmIChkZWZpbmVkKF9fTUFDSF9fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkgJiYgZGVmaW5lZChIQVZFX0RJUkVOVF9IKQotICAgIERJUiAqZGlycDsKLSAgICBzdHJ1Y3QgZGlyZW50ICpkcDsKLSAgICBjaGFyIGRpcm5hbWVbTUFYUEFUSExFTiArIDFdOwotICAgIGNvbnN0IGludCBkaXJsZW4gPSBsZW4gLSBuYW1lbGVuIC0gMTsgLyogZG9uJ3Qgd2FudCB0cmFpbGluZyBTRVAgKi8KLQotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkNBU0VPSyIpICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgLyogQ29weSB0aGUgZGlyIGNvbXBvbmVudCBpbnRvIGRpcm5hbWU7IHN1YnN0aXR1dGUgIi4iIGlmIGVtcHR5ICovCi0gICAgaWYgKGRpcmxlbiA8PSAwKSB7Ci0gICAgICAgIGRpcm5hbWVbMF0gPSAnLic7Ci0gICAgICAgIGRpcm5hbWVbMV0gPSAnXDAnOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgYXNzZXJ0KGRpcmxlbiA8PSBNQVhQQVRITEVOKTsKLSAgICAgICAgbWVtY3B5KGRpcm5hbWUsIGJ1ZiwgZGlybGVuKTsKLSAgICAgICAgZGlybmFtZVtkaXJsZW5dID0gJ1wwJzsKLSAgICB9Ci0gICAgLyogT3BlbiB0aGUgZGlyZWN0b3J5IGFuZCBzZWFyY2ggdGhlIGVudHJpZXMgZm9yIGFuIGV4YWN0IG1hdGNoLiAqLwotICAgIGRpcnAgPSBvcGVuZGlyKGRpcm5hbWUpOwotICAgIGlmIChkaXJwKSB7Ci0gICAgICAgIGNoYXIgKm5hbWVXaXRoRXh0ID0gYnVmICsgbGVuIC0gbmFtZWxlbjsKLSAgICAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGlycCkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGNvbnN0IGludCB0aGlzbGVuID0KLSNpZmRlZiBfRElSRU5UX0hBVkVfRF9OQU1FTEVOCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcC0+ZF9uYW1sZW47Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGRwLT5kX25hbWUpOwotI2VuZGlmCi0gICAgICAgICAgICBpZiAodGhpc2xlbiA+PSBuYW1lbGVuICYmCi0gICAgICAgICAgICAgICAgc3RyY21wKGRwLT5kX25hbWUsIG5hbWVXaXRoRXh0KSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIEZvdW5kICovCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0gICAgfQotICAgIHJldHVybiAwIDsgLyogTm90IGZvdW5kICovCi0KLS8qIE9TLzIgKi8KLSNlbGlmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgSERJUiBoZGlyID0gMTsKLSAgICBVTE9ORyBzcmNoY250ID0gMTsKLSAgICBGSUxFRklOREJVRjMgZmZidWY7Ci0gICAgQVBJUkVUIHJjOwotCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OQ0FTRU9LIikgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICByYyA9IERvc0ZpbmRGaXJzdChidWYsCi0gICAgICAgICAgICAgICAgICAgICAgJmhkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgRklMRV9SRUFET05MWSB8IEZJTEVfSElEREVOIHwgRklMRV9TWVNURU0gfCBGSUxFX0RJUkVDVE9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAmZmZidWYsIHNpemVvZihmZmJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgJnNyY2hjbnQsCi0gICAgICAgICAgICAgICAgICAgICAgRklMX1NUQU5EQVJEKTsKLSAgICBpZiAocmMgIT0gTk9fRVJST1IpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdHJuY21wKGZmYnVmLmFjaE5hbWUsIG5hbWUsIG5hbWVsZW4pID09IDA7Ci0KLS8qIGFzc3VtaW5nIGl0J3MgYSBjYXNlLXNlbnNpdGl2ZSBmaWxlc3lzdGVtLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8hICovCi0jZWxzZQotICAgIHJldHVybiAxOwotCi0jZW5kaWYKLX0KLQotI2lmZGVmIEhBVkVfU1RBVAotCi0vKiBIZWxwZXIgdG8gbG9vayBmb3IgX19pbml0X18ucHkgb3IgX19pbml0X18ucHlbY29dIGluIHBvdGVudGlhbCBwYWNrYWdlICovCi1zdGF0aWMgaW50Ci1maW5kX2luaXRfbW9kdWxlKGNoYXIgKmJ1ZikKLXsKLSAgICBjb25zdCBzaXplX3Qgc2F2ZV9sZW4gPSBzdHJsZW4oYnVmKTsKLSAgICBzaXplX3QgaSA9IHNhdmVfbGVuOwotICAgIGNoYXIgKnBuYW1lOyAgLyogcG9pbnRlciB0byBzdGFydCBvZiBfX2luaXRfXyAqLwotICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0KLS8qICAgICAgRm9yIGNhbGxpbmcgY2FzZV9vayhidWYsIGxlbiwgbmFtZWxlbiwgbmFtZSk6Ci0gKiAgICAgIC9hL2IvYy9kL2UvZi9nL2gvaS9qL2svc29tZV9sb25nX21vZHVsZV9uYW1lLnB5XDAKLSAqICAgICAgXiAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIF4gICAgXgotICogICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tIGJ1ZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0gKiAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tIGxlbiAtLS0tLS0tLS0tLS0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLSBuYW1lIC0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tIG5hbWVsZW4gLS0tLS18Ci0gKi8KLSAgICBpZiAoc2F2ZV9sZW4gKyAxMyA+PSBNQVhQQVRITEVOKQotICAgICAgICByZXR1cm4gMDsKLSAgICBidWZbaSsrXSA9IFNFUDsKLSAgICBwbmFtZSA9IGJ1ZiArIGk7Ci0gICAgc3RyY3B5KHBuYW1lLCAiX19pbml0X18ucHkiKTsKLSAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwKSB7Ci0gICAgICAgIGlmIChjYXNlX29rKGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgc2F2ZV9sZW4gKyA5LCAgICAgICAgICAgICAgIC8qIGxlbigiL19faW5pdF9fIikgKi8KLSAgICAgICAgICAgICAgICA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbigiX19pbml0X18iKSAqLwotICAgICAgICAgICAgICAgIHBuYW1lKSkgewotICAgICAgICAgICAgYnVmW3NhdmVfbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpICs9IHN0cmxlbihwbmFtZSk7Ci0gICAgc3RyY3B5KGJ1ZitpLCBQeV9PcHRpbWl6ZUZsYWcgPyAibyIgOiAiYyIpOwotICAgIGlmIChzdGF0KGJ1ZiwgJnN0YXRidWYpID09IDApIHsKLSAgICAgICAgaWYgKGNhc2Vfb2soYnVmLAotICAgICAgICAgICAgICAgICAgICBzYXZlX2xlbiArIDksICAgICAgICAgICAgICAgLyogbGVuKCIvX19pbml0X18iKSAqLwotICAgICAgICAgICAgICAgIDgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuKCJfX2luaXRfXyIpICovCi0gICAgICAgICAgICAgICAgcG5hbWUpKSB7Ci0gICAgICAgICAgICBidWZbc2F2ZV9sZW5dID0gJ1wwJzsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgfQotICAgIGJ1ZltzYXZlX2xlbl0gPSAnXDAnOwotICAgIHJldHVybiAwOwotfQotCi0jZW5kaWYgLyogSEFWRV9TVEFUICovCi0KLQotc3RhdGljIGludCBpbml0X2J1aWx0aW4oY2hhciAqKTsgLyogRm9yd2FyZCAqLwotCi1zdGF0aWMgUHlPYmplY3QqCi1sb2FkX2J1aWx0aW4oY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUsIGludCB0eXBlKQotewotICAgIFB5T2JqZWN0ICptLCAqbW9kdWxlczsKLSAgICBpbnQgZXJyOwotCi0gICAgaWYgKHBhdGhuYW1lICE9IE5VTEwgJiYgcGF0aG5hbWVbMF0gIT0gJ1wwJykKLSAgICAgICAgbmFtZSA9IHBhdGhuYW1lOwotCi0gICAgaWYgKHR5cGUgPT0gQ19CVUlMVElOKQotICAgICAgICBlcnIgPSBpbml0X2J1aWx0aW4obmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBlcnIgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUobmFtZSk7Ci0gICAgaWYgKGVyciA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChlcnIgPT0gMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgIlB1cnBvcnRlZCAlcyBtb2R1bGUgJS4yMDBzIG5vdCBmb3VuZCIsCi0gICAgICAgICAgICAgICAgdHlwZSA9PSBDX0JVSUxUSU4gPwotICAgICAgICAgICAgICAgICJidWlsdGluIiA6ICJmcm96ZW4iLAotICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBtb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKTsKLSAgICBpZiAobSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdCgKLSAgICAgICAgICAgICAgICBQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAiJXMgbW9kdWxlICUuMjAwcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQiLAotICAgICAgICAgICAgICAgIHR5cGUgPT0gQ19CVUlMVElOID8KLSAgICAgICAgICAgICAgICAiYnVpbHRpbiIgOiAiZnJvemVuIiwKLSAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihtKTsKLSAgICByZXR1cm4gbTsKLX0KLQotLyogTG9hZCBhbiBleHRlcm5hbCBtb2R1bGUgdXNpbmcgdGhlIGRlZmF1bHQgc2VhcmNoIHBhdGggYW5kIHJldHVybgotICAgaXRzIG1vZHVsZSBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRCBSRUZFUkVOQ0UgQ09VTlQgKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfbW9kdWxlKGNoYXIgKm5hbWUsIEZJTEUgKmZwLCBjaGFyICpwYXRobmFtZSwgaW50IHR5cGUsIFB5T2JqZWN0ICpsb2FkZXIpCi17Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICAvKiBGaXJzdCBjaGVjayB0aGF0IHRoZXJlJ3MgYW4gb3BlbiBmaWxlIChpZiB3ZSBuZWVkIG9uZSkgICovCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBQWV9TT1VSQ0U6Ci0gICAgY2FzZSBQWV9DT01QSUxFRDoKLSAgICAgICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgImZpbGUgb2JqZWN0IHJlcXVpcmVkIGZvciBpbXBvcnQgKHR5cGUgY29kZSAlZCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLQotICAgIGNhc2UgUFlfU09VUkNFOgotICAgICAgICBtID0gbG9hZF9zb3VyY2VfbW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBQWV9DT01QSUxFRDoKLSAgICAgICAgbSA9IGxvYWRfY29tcGlsZWRfbW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotCi0jaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKLSAgICBjYXNlIENfRVhURU5TSU9OOgotICAgICAgICBtID0gX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICBjYXNlIFBLR19ESVJFQ1RPUlk6Ci0gICAgICAgIG0gPSBsb2FkX3BhY2thZ2UobmFtZSwgcGF0aG5hbWUpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ19CVUlMVElOOgotICAgIGNhc2UgUFlfRlJPWkVOOgotICAgICAgICBtID0gbG9hZF9idWlsdGluKG5hbWUsIHBhdGhuYW1lLCB0eXBlKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIElNUF9IT09LOiB7Ci0gICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9vayB3aXRob3V0IGxvYWRlciIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgbSA9IFB5T2JqZWN0X0NhbGxNZXRob2QobG9hZGVyLCAibG9hZF9tb2R1bGUiLCAicyIsIG5hbWUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRG9uJ3Qga25vdyBob3cgdG8gaW1wb3J0ICUuMjAwcyAodHlwZSBjb2RlICVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgbmFtZSwgdHlwZSk7Ci0gICAgICAgIG0gPSBOVUxMOwotCi0gICAgfQotCi0gICAgcmV0dXJuIG07Ci19Ci0KK3N0YXRpYyBpbnQgaW5pdF9idWlsdGluKFB5T2JqZWN0ICopOyAvKiBGb3J3YXJkICovCiAKIC8qIEluaXRpYWxpemUgYSBidWlsdC1pbiBtb2R1bGUuCiAgICBSZXR1cm4gMSBmb3Igc3VjY2VzcywgMCBpZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZCwgYW5kIC0xIHdpdGgKICAgIGFuIGV4Y2VwdGlvbiBzZXQgaWYgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4gKi8KIAogc3RhdGljIGludAotaW5pdF9idWlsdGluKGNoYXIgKm5hbWUpCitpbml0X2J1aWx0aW4oUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9pbml0dGFiICpwOwogCi0gICAgaWYgKF9QeUltcG9ydF9GaW5kQnVpbHRpbihuYW1lKSAhPSBOVUxMKQorICAgIGlmIChfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChuYW1lLCBuYW1lKSAhPSBOVUxMKQogICAgICAgICByZXR1cm4gMTsKIAogICAgIGZvciAocCA9IFB5SW1wb3J0X0luaXR0YWI7IHAtPm5hbWUgIT0gTlVMTDsgcCsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICptb2Q7CiAgICAgICAgIFB5TW9kdWxlRGVmICpkZWY7Ci0gICAgICAgIGlmIChzdHJjbXAobmFtZSwgcC0+bmFtZSkgPT0gMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgcC0+bmFtZSkgPT0gMCkgewogICAgICAgICAgICAgaWYgKHAtPmluaXRmdW5jID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcmUtaW5pdCBpbnRlcm5hbCBtb2R1bGUgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCByZS1pbml0IGludGVybmFsIG1vZHVsZSAlUiIsCiAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgYnVpbHRpblxuIiwgbmFtZSk7CiAgICAgICAgICAgICBtb2QgPSAoKnAtPmluaXRmdW5jKSgpOwogICAgICAgICAgICAgaWYgKG1vZCA9PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHBvaW50ZXIgdG8gbW9kdWxlIGluaXQgZnVuY3Rpb24uICovCiAgICAgICAgICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKICAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHAtPmluaXRmdW5jOwotICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4obW9kLCBuYW1lKSA8IDApCisgICAgICAgICAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZSwgbmFtZSkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIC8qIEZpeHVwRXh0ZW5zaW9uIGhhcyBwdXQgdGhlIG1vZHVsZSBpbnRvIHN5cy5tb2R1bGVzLAogICAgICAgICAgICAgICAgc28gd2UgY2FuIHJlbGVhc2Ugb3VyIG93biByZWZlcmVuY2UuICovCkBAIC0yMjM4LDM3ICs5NjgsMzcgQEAKIC8qIEZyb3plbiBtb2R1bGVzICovCiAKIHN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqCi1maW5kX2Zyb3plbihjaGFyICpuYW1lKQorZmluZF9mcm96ZW4oUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnA7CiAKLSAgICBpZiAoIW5hbWUpCisgICAgaWYgKG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKHAgPSBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOyA7IHArKykgewogICAgICAgICBpZiAocC0+bmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChzdHJjbXAocC0+bmFtZSwgbmFtZSkgPT0gMCkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsIHAtPm5hbWUpID09IDApCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRfZnJvemVuX29iamVjdChjaGFyICpuYW1lKQorZ2V0X2Zyb3plbl9vYmplY3QoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICBpbnQgc2l6ZTsKIAogICAgIGlmIChwID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlUiIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChwLT5jb2RlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkV4Y2x1ZGVkIGZyb3plbiBvYmplY3QgbmFtZWQgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJFeGNsdWRlZCBmcm96ZW4gb2JqZWN0IG5hbWVkICVSIiwKICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yMjc5LDE0ICsxMDA5LDE0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pc19mcm96ZW5fcGFja2FnZShjaGFyICpuYW1lKQoraXNfZnJvemVuX3BhY2thZ2UoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICBpbnQgc2l6ZTsKIAogICAgIGlmIChwID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlUiIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjMwNiwxOSArMTAzNiwyMCBAQAogICAgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgZnJvbSBmcm96ZW5tYWluLmMgKi8KIAogaW50Ci1QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoY2hhciAqbmFtZSkKK1B5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBzdHJ1Y3QgX2Zyb3plbiAqcCA9IGZpbmRfZnJvemVuKG5hbWUpOwotICAgIFB5T2JqZWN0ICpjbzsKLSAgICBQeU9iamVjdCAqbTsKKyAgICBzdHJ1Y3QgX2Zyb3plbiAqcDsKKyAgICBQeU9iamVjdCAqY28sICptLCAqcGF0aDsKICAgICBpbnQgaXNwYWNrYWdlOwogICAgIGludCBzaXplOwogCisgICAgcCA9IGZpbmRfZnJvemVuKG5hbWUpOworCiAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKHAtPmNvZGUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRXhjbHVkZWQgZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIkV4Y2x1ZGVkIGZyb3plbiBvYmplY3QgbmFtZWQgJVIiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0yMzI2LDQxICsxMDU3LDM5IEBACiAgICAgaXNwYWNrYWdlID0gKHNpemUgPCAwKTsKICAgICBpZiAoaXNwYWNrYWdlKQogICAgICAgICBzaXplID0gLXNpemU7Ci0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgZnJvemVuJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBpc3BhY2thZ2UgPyAiIHBhY2thZ2UiIDogIiIpOwogICAgIGNvID0gUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nKChjaGFyICopcC0+Y29kZSwgc2l6ZSk7CiAgICAgaWYgKGNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIVB5Q29kZV9DaGVjayhjbykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJmcm96ZW4gb2JqZWN0ICUuMjAwcyBpcyBub3QgYSBjb2RlIG9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAiZnJvemVuIG9iamVjdCAlUiBpcyBub3QgYSBjb2RlIG9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgZ290byBlcnJfcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNwYWNrYWdlKSB7CiAgICAgICAgIC8qIFNldCBfX3BhdGhfXyB0byB0aGUgcGFja2FnZSBuYW1lICovCi0gICAgICAgIFB5T2JqZWN0ICpkLCAqcywgKmw7CisgICAgICAgIFB5T2JqZWN0ICpkLCAqbDsKICAgICAgICAgaW50IGVycjsKLSAgICAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lKTsKICAgICAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgICAgIHMgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhuYW1lKTsKLSAgICAgICAgaWYgKHMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgbCA9IFB5TGlzdF9OZXcoMSk7CiAgICAgICAgIGlmIChsID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgfQotICAgICAgICBQeUxpc3RfU0VUX0lURU0obCwgMCwgcyk7CisgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGwsIDAsIG5hbWUpOwogICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19wYXRoX18iLCBsKTsKICAgICAgICAgUHlfREVDUkVGKGwpOwogICAgICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgfQotICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KG5hbWUsIGNvLCAiPGZyb3plbj4iKTsKKyAgICBwYXRoID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxmcm96ZW4+Iik7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJfcmV0dXJuOworICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChuYW1lLCBjbywgcGF0aCwgTlVMTCk7CisgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICBQeV9ERUNSRUYoY28pOwpAQCAtMjM3MSw2ICsxMTAwLDE5IEBACiAgICAgcmV0dXJuIC0xOwogfQogCitpbnQKK1B5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZShjaGFyICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpuYW1lb2JqOworICAgIGludCByZXQ7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXQgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QobmFtZW9iaik7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIHJldHVybiByZXQ7Cit9CisKIAogLyogSW1wb3J0IGEgbW9kdWxlLCBlaXRoZXIgYnVpbHQtaW4sIGZyb3plbiwgb3IgZXh0ZXJuYWwsIGFuZCByZXR1cm4KICAgIGl0cyBtb2R1bGUgb2JqZWN0IFdJVEggSU5DUkVNRU5URUQgUkVGRVJFTkNFIENPVU5UICovCkBAIC0yNDAxLDU4NSArMTE0Myw0MTEgQEAKIFB5T2JqZWN0ICoKIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5T2JqZWN0ICptb2R1bGVzOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgbG9uZyBtZTsKLSNlbmRpZgotCi0gICAgLyogVHJ5IHRvIGdldCB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXNbbmFtZV0gKi8KLSAgICBtb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIGlmIChtb2R1bGVzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSk7Ci0gICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBjaGVjayB0aGUgaW1wb3J0IGxvY2sKLSAgICAgKiBtZSBtaWdodCBiZSAtMSBidXQgSSBpZ25vcmUgdGhlIGVycm9yIGhlcmUsIHRoZSBsb2NrIGZ1bmN0aW9uCi0gICAgICogdGFrZXMgY2FyZSBvZiB0aGUgcHJvYmxlbSAqLwotICAgIG1lID0gUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpOwotICAgIGlmIChpbXBvcnRfbG9ja190aHJlYWQgPT0gLTEgfHwgaW1wb3J0X2xvY2tfdGhyZWFkID09IG1lKSB7Ci0gICAgICAgIC8qIG5vIHRocmVhZCBvciBtZSBpcyBob2xkaW5nIHRoZSBsb2NrICovCi0gICAgICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUobmFtZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGltcG9ydCAlLjIwMHMgYmVjYXVzZSB0aGUgaW1wb3J0IGxvY2siCi0gICAgICAgICAgICAgICAgICAgICAiaXMgaGVsZCBieSBhbm90aGVyIHRocmVhZC4iLAotICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSNlbHNlCiAgICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydE1vZHVsZShuYW1lKTsKLSNlbmRpZgogfQogCi0vKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgaGVscGVyIHJvdXRpbmVzICovCi1zdGF0aWMgUHlPYmplY3QgKmdldF9wYXJlbnQoUHlPYmplY3QgKmdsb2JhbHMsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpwX2J1ZmxlbiwgaW50IGxldmVsKTsKLXN0YXRpYyBQeU9iamVjdCAqbG9hZF9uZXh0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICphbHRtb2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqcF9uYW1lLCBjaGFyICpidWYsIFB5X3NzaXplX3QgKnBfYnVmbGVuKTsKLXN0YXRpYyBpbnQgbWFya19taXNzKGNoYXIgKm5hbWUpOwotc3RhdGljIGludCBlbnN1cmVfZnJvbWxpc3QoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmZyb21saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBQeV9zc2l6ZV90IGJ1ZmxlbiwgaW50IHJlY3Vyc2l2ZSk7Ci1zdGF0aWMgUHlPYmplY3QgKiBpbXBvcnRfc3VibW9kdWxlKFB5T2JqZWN0ICptb2QsIGNoYXIgKm5hbWUsIGNoYXIgKmZ1bGxuYW1lKTsKIAotLyogVGhlIE1hZ251bSBPcHVzIG9mIGRvdHRlZC1uYW1lIGltcG9ydCA6LSkgKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcG9ydF9tb2R1bGVfbGV2ZWwoY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQorLyogUmVtb3ZlIGltcG9ydGxpYiBmcmFtZXMgZnJvbSB0aGUgdHJhY2ViYWNrLAorICogZXhjZXB0IGluIFZlcmJvc2UgbW9kZS4gKi8KK3N0YXRpYyB2b2lkCityZW1vdmVfaW1wb3J0bGliX2ZyYW1lcyh2b2lkKQogewotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGJ1ZmxlbiA9IDA7Ci0gICAgUHlPYmplY3QgKnBhcmVudCwgKmhlYWQsICpuZXh0LCAqdGFpbDsKKyAgICBjb25zdCBjaGFyICppbXBvcnRsaWJfZmlsZW5hbWUgPSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iOworICAgIGNvbnN0IGNoYXIgKnJlbW92ZV9mcmFtZXMgPSAiX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZCI7CisgICAgaW50IGFsd2F5c190cmltID0gMDsKKyAgICBpbnQgaW5faW1wb3J0bGliID0gMDsKKyAgICBQeU9iamVjdCAqZXhjZXB0aW9uLCAqdmFsdWUsICpiYXNlX3RiLCAqdGI7CisgICAgUHlPYmplY3QgKipwcmV2X2xpbmssICoqb3V0ZXJfbGluayA9IE5VTEw7CiAKLSAgICBpZiAoc3RyY2hyKG5hbWUsICcvJykgIT0gTlVMTAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgfHwgc3RyY2hyKG5hbWUsICdcXCcpICE9IE5VTEwKKyAgICAvKiBTeW5vcHNpczogaWYgaXQncyBhbiBJbXBvcnRFcnJvciwgd2UgdHJpbSBhbGwgaW1wb3J0bGliIGNodW5rcworICAgICAgIGZyb20gdGhlIHRyYWNlYmFjay4gV2UgYWx3YXlzIHRyaW0gY2h1bmtzCisgICAgICAgd2hpY2ggZW5kIHdpdGggYSBjYWxsIHRvICJfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkIi4gKi8KKworICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2YWx1ZSwgJmJhc2VfdGIpOworICAgIGlmICghZXhjZXB0aW9uIHx8IFB5X1ZlcmJvc2VGbGFnKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaWYgKFB5VHlwZV9Jc1N1YnR5cGUoKFB5VHlwZU9iamVjdCAqKSBleGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgKFB5VHlwZU9iamVjdCAqKSBQeUV4Y19JbXBvcnRFcnJvcikpCisgICAgICAgIGFsd2F5c190cmltID0gMTsKKworICAgIHByZXZfbGluayA9ICZiYXNlX3RiOworICAgIHRiID0gYmFzZV90YjsKKyAgICB3aGlsZSAodGIgIT0gTlVMTCkgeworICAgICAgICBQeVRyYWNlYmFja09iamVjdCAqdHJhY2ViYWNrID0gKFB5VHJhY2ViYWNrT2JqZWN0ICopdGI7CisgICAgICAgIFB5T2JqZWN0ICpuZXh0ID0gKFB5T2JqZWN0ICopIHRyYWNlYmFjay0+dGJfbmV4dDsKKyAgICAgICAgUHlGcmFtZU9iamVjdCAqZnJhbWUgPSB0cmFjZWJhY2stPnRiX2ZyYW1lOworICAgICAgICBQeUNvZGVPYmplY3QgKmNvZGUgPSBmcmFtZS0+Zl9jb2RlOworICAgICAgICBpbnQgbm93X2luX2ltcG9ydGxpYjsKKworICAgICAgICBhc3NlcnQoUHlUcmFjZUJhY2tfQ2hlY2sodGIpKTsKKyAgICAgICAgbm93X2luX2ltcG9ydGxpYiA9IChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS0+Y29fZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYl9maWxlbmFtZSkgPT0gMCk7CisgICAgICAgIGlmIChub3dfaW5faW1wb3J0bGliICYmICFpbl9pbXBvcnRsaWIpIHsKKyAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIGxpbmsgdG8gdGhpcyBjaHVuayBvZiBpbXBvcnRsaWIgdHJhY2ViYWNrcyAqLworICAgICAgICAgICAgb3V0ZXJfbGluayA9IHByZXZfbGluazsKKyAgICAgICAgfQorICAgICAgICBpbl9pbXBvcnRsaWIgPSBub3dfaW5faW1wb3J0bGliOworCisgICAgICAgIGlmIChpbl9pbXBvcnRsaWIgJiYKKyAgICAgICAgICAgIChhbHdheXNfdHJpbSB8fAorICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGNvZGUtPmNvX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ZyYW1lcykgPT0gMCkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSAqb3V0ZXJfbGluazsKKyAgICAgICAgICAgICpvdXRlcl9saW5rID0gbmV4dDsKKyAgICAgICAgICAgIFB5X1hJTkNSRUYobmV4dCk7CisgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgICAgIHByZXZfbGluayA9IG91dGVyX2xpbms7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcmV2X2xpbmsgPSAoUHlPYmplY3QgKiopICZ0cmFjZWJhY2stPnRiX25leHQ7CisgICAgICAgIH0KKyAgICAgICAgdGIgPSBuZXh0OworICAgIH0KK2RvbmU6CisgICAgUHlFcnJfUmVzdG9yZShleGNlcHRpb24sIHZhbHVlLCBiYXNlX3RiKTsKK30KKworCitQeU9iamVjdCAqCitQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdpdmVuX2dsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZ2l2ZW5fZnJvbWxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCit7CisgICAgX1B5X0lERU5USUZJRVIoX19pbXBvcnRfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19pbml0aWFsaXppbmdfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19wYWNrYWdlX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fcGF0aF9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX2ZpbmRfYW5kX2xvYWQpOworICAgIF9QeV9JREVOVElGSUVSKF9oYW5kbGVfZnJvbWxpc3QpOworICAgIF9QeV9JREVOVElGSUVSKF9sb2NrX3VubG9ja19tb2R1bGUpOworICAgIF9QeV9zdGF0aWNfc3RyaW5nKHNpbmdsZV9kb3QsICIuIik7CisgICAgUHlPYmplY3QgKmFic19uYW1lID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYnVpbHRpbnNfaW1wb3J0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmluYWxfbW9kID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbW9kID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGFja2FnZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmcm9tbGlzdCA9IE5VTEw7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisKKyAgICAvKiBNYWtlIHN1cmUgdG8gdXNlIGRlZmF1bHQgdmFsdWVzIHNvIGFzIHRvIG5vdCBoYXZlCisgICAgICAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKSB0cnVuY2F0ZSB0aGUgcGFyYW1ldGVyIGxpc3QgYmVjYXVzZSBvZiBhCisgICAgICAgTlVMTCBhcmd1bWVudC4gKi8KKyAgICBpZiAoZ2l2ZW5fZ2xvYmFscyA9PSBOVUxMKSB7CisgICAgICAgIGdsb2JhbHMgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIE9ubHkgaGF2ZSB0byBjYXJlIHdoYXQgZ2l2ZW5fZ2xvYmFscyBpcyBpZiBpdCB3aWxsIGJlIHVzZWQKKyAgICAgICAgICAgZm9yIHNvbWV0aGluZy4gKi8KKyAgICAgICAgaWYgKGxldmVsID4gMCAmJiAhUHlEaWN0X0NoZWNrKGdpdmVuX2dsb2JhbHMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2xvYmFscyBtdXN0IGJlIGEgZGljdCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBnbG9iYWxzID0gZ2l2ZW5fZ2xvYmFsczsKKyAgICAgICAgUHlfSU5DUkVGKGdsb2JhbHMpOworICAgIH0KKworICAgIGlmIChnaXZlbl9mcm9tbGlzdCA9PSBOVUxMKSB7CisgICAgICAgIGZyb21saXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgaWYgKGZyb21saXN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZyb21saXN0ID0gZ2l2ZW5fZnJvbWxpc3Q7CisgICAgICAgIFB5X0lOQ1JFRihmcm9tbGlzdCk7CisgICAgfQorICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIFRoZSBiZWxvdyBjb2RlIGlzIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgJiBfZ2NkX2ltcG9ydCgpLCBwb3J0ZWQgdG8gQworICAgICAgIGZvciBhZGRlZCBwZXJmb3JtYW5jZS4gKi8KKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtb2R1bGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lKSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKGxldmVsIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImxldmVsIG11c3QgYmUgPj0gMCIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fcGFja2FnZV9fKTsKKyAgICAgICAgaWYgKHBhY2thZ2UgIT0gTlVMTCAmJiBwYWNrYWdlICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInBhY2thZ2UgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYWNrYWdlID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19uYW1lX18pOworICAgICAgICAgICAgaWYgKHBhY2thZ2UgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJfX25hbWVfXyBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisKKyAgICAgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7CisgICAgICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9SUGFydGl0aW9uKHBhY2thZ2UsIGJvcnJvd2VkX2RvdCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhY2thZ2UpOworICAgICAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYWNrYWdlID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIlBhcmVudCBtb2R1bGUgJVIgbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgorICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeyAgLyogbGV2ZWwgPT0gMCAqLworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPT0gMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBwYWNrYWdlID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOworICAgIH0KKworICAgIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgUHlfc3NpemVfdCBsYXN0X2RvdCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhY2thZ2UpOworICAgICAgICBQeU9iamVjdCAqYmFzZSA9IE5VTEw7CisgICAgICAgIGludCBsZXZlbF91cCA9IDE7CisKKyAgICAgICAgZm9yIChsZXZlbF91cCA9IDE7IGxldmVsX3VwIDwgbGV2ZWw7IGxldmVsX3VwICs9IDEpIHsKKyAgICAgICAgICAgIGxhc3RfZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhY2thZ2UsICcuJywgMCwgbGFzdF9kb3QsIC0xKTsKKyAgICAgICAgICAgIGlmIChsYXN0X2RvdCA9PSAtMikgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsYXN0X2RvdCA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2UiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2UgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGxhc3RfZG90KTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCwgKnNlcSA9IE5VTEw7CisKKyAgICAgICAgICAgIGJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKKyAgICAgICAgICAgIHNlcSA9IFB5VHVwbGVfUGFjaygyLCBiYXNlLCBuYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKKyAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCB8fCBzZXEgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFic19uYW1lID0gUHlVbmljb2RlX0pvaW4oYm9ycm93ZWRfZG90LCBzZXEpOworICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICBpZiAoYWJzX25hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhYnNfbmFtZSA9IGJhc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFic19uYW1lID0gbmFtZTsKKyAgICAgICAgUHlfSU5DUkVGKGFic19uYW1lKTsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwogI2VuZGlmCi0gICAgICAgICkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiSW1wb3J0IGJ5IGZpbGVuYW1lIGlzIG5vdCBzdXBwb3J0ZWQuIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgLyogRnJvbSB0aGlzIHBvaW50IGZvcndhcmQsIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2shICovCisgICAgaWYgKFB5RGljdF9DaGVjayhnbG9iYWxzKSkgeworICAgICAgICBidWlsdGluc19pbXBvcnQgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX2ltcG9ydF9fKTsKICAgICB9Ci0KLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIHBhcmVudCA9IGdldF9wYXJlbnQoZ2xvYmFscywgYnVmLCAmYnVmbGVuLCBsZXZlbCk7Ci0gICAgaWYgKHBhcmVudCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0KLSAgICBoZWFkID0gbG9hZF9uZXh0KHBhcmVudCwgbGV2ZWwgPCAwID8gUHlfTm9uZSA6IHBhcmVudCwgJm5hbWUsIGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICZidWZsZW4pOwotICAgIGlmIChoZWFkID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLQotICAgIHRhaWwgPSBoZWFkOwotICAgIFB5X0lOQ1JFRih0YWlsKTsKLSAgICB3aGlsZSAobmFtZSkgewotICAgICAgICBuZXh0ID0gbG9hZF9uZXh0KHRhaWwsIHRhaWwsICZuYW1lLCBidWYsICZidWZsZW4pOwotICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihoZWFkKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICBpZiAoYnVpbHRpbnNfaW1wb3J0ID09IE5VTEwpIHsKKyAgICAgICAgYnVpbHRpbnNfaW1wb3J0ID0gX1B5RGljdF9HZXRJdGVtSWQoaW50ZXJwLT5idWlsdGlucywgJlB5SWRfX19pbXBvcnRfXyk7CisgICAgICAgIGlmIChidWlsdGluc19pbXBvcnQgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiX19pbXBvcnRfXyBtaXNzaW5nIik7CiAgICAgICAgIH0KLSAgICAgICAgdGFpbCA9IG5leHQ7CiAgICAgfQotICAgIGlmICh0YWlsID09IFB5X05vbmUpIHsKLSAgICAgICAgLyogSWYgdGFpbCBpcyBQeV9Ob25lLCBib3RoIGdldF9wYXJlbnQgYW5kIGxvYWRfbmV4dCBmb3VuZAotICAgICAgICAgICBhbiBlbXB0eSBtb2R1bGUgbmFtZTogc29tZW9uZSBjYWxsZWQgX19pbXBvcnRfXygiIikgb3IKLSAgICAgICAgICAgZG9jdG9yZWQgZmF1bHR5IGJ5dGVjb2RlICovCi0gICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgUHlfREVDUkVGKGhlYWQpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBtb2R1bGUgbmFtZSIpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgfQorICAgIFB5X0lOQ1JFRihidWlsdGluc19pbXBvcnQpOwogCi0gICAgaWYgKGZyb21saXN0ICE9IE5VTEwpIHsKLSAgICAgICAgaW50IGIgPSAoZnJvbWxpc3QgPT0gUHlfTm9uZSkgPyAwIDogUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKLSAgICAgICAgaWYgKGIgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaGVhZCk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgbW9kID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCBhYnNfbmFtZSk7CisgICAgaWYgKG1vZCA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5T2JqZWN0ICptc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiaW1wb3J0IG9mICVSIGhhbHRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgaW4gc3lzLm1vZHVsZXMiLCBhYnNfbmFtZSk7CisgICAgICAgIGlmIChtc2cgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobXNnLCBhYnNfbmFtZSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYobXNnKTsKICAgICAgICAgfQotICAgICAgICBpZiAoIWIpCi0gICAgICAgICAgICBmcm9tbGlzdCA9IE5VTEw7CisgICAgICAgIG1vZCA9IE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2s7CiAgICAgfQorICAgIGVsc2UgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZTsKKyAgICAgICAgaW50IGluaXRpYWxpemluZyA9IDA7CiAKLSAgICBpZiAoZnJvbWxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIGhlYWQ7CisgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICAvKiBPcHRpbWl6YXRpb246IG9ubHkgY2FsbCBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSBpZgorICAgICAgICAgICBfX2luaXRpYWxpemluZ19fIGlzIHRydWUuCisgICAgICAgICAgIE5PVEU6IGJlY2F1c2Ugb2YgdGhpcywgX19pbml0aWFsaXppbmdfXyBtdXN0IGJlIHNldCAqYmVmb3JlKgorICAgICAgICAgICBzdHVmZmluZyB0aGUgbmV3IG1vZHVsZSBpbiBzeXMubW9kdWxlcy4KKyAgICAgICAgICovCisgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0dldEF0dHJJZChtb2QsICZQeUlkX19faW5pdGlhbGl6aW5nX18pOworICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW5pdGlhbGl6aW5nID0gUHlPYmplY3RfSXNUcnVlKHZhbHVlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoaW5pdGlhbGl6aW5nID09IC0xKQorICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluaXRpYWxpemluZyA+IDApIHsKKyAgICAgICAgICAgIC8qIF9ib290c3RyYXAuX2xvY2tfdW5sb2NrX21vZHVsZSgpIHJlbGVhc2VzIHRoZSBpbXBvcnQgbG9jayAqLworICAgICAgICAgICAgdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2xvY2tfdW5sb2NrX21vZHVsZSwgYWJzX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CiAgICAgfQotCi0gICAgUHlfREVDUkVGKGhlYWQpOwotICAgIGlmICghZW5zdXJlX2Zyb21saXN0KHRhaWwsIGZyb21saXN0LCBidWYsIGJ1ZmxlbiwgMCkpIHsKLSAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgZWxzZSB7CisgICAgICAgIC8qIF9ib290c3RyYXAuX2ZpbmRfYW5kX2xvYWQoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KKyAgICAgICAgbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19maW5kX2FuZF9sb2FkLCBhYnNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnNfaW1wb3J0LCBOVUxMKTsKKyAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CiAgICAgfQorICAgIC8qIEZyb20gbm93IG9uIHdlIGRvbid0IGhvbGQgdGhlIGltcG9ydCBsb2NrIGFueW1vcmUuICovCiAKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIHRhaWw7CisgICAgaWYgKFB5T2JqZWN0X05vdChmcm9tbGlzdCkpIHsKKyAgICAgICAgaWYgKGxldmVsID09IDAgfHwgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPiAwKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZnJvbnQgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKnBhcnRpdGlvbiA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOwogCi1lcnJvcl9leGl0OgotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9QYXJ0aXRpb24obmFtZSwgYm9ycm93ZWRfZG90KTsKKyAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChQeVR1cGxlX0dFVF9JVEVNKHBhcnRpdGlvbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgICAgICAvKiBObyBkb3QgaW4gbW9kdWxlIG5hbWUsIHNpbXBsZSBleGl0ICovCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7CisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gbW9kOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZyb250ID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOworICAgICAgICAgICAgUHlfSU5DUkVGKGZyb250KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOworCisgICAgICAgICAgICBpZiAobGV2ZWwgPT0gMCkgeworICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoYnVpbHRpbnNfaW1wb3J0LCBmcm9udCwgTlVMTCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZyb250KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY3V0X29mZiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChmcm9udCk7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBhYnNfbmFtZV9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhYnNfbmFtZSk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRvX3JldHVybiA9IFB5VW5pY29kZV9TdWJzdHJpbmcoYWJzX25hbWUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic19uYW1lX2xlbiAtIGN1dF9vZmYpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CisgICAgICAgICAgICAgICAgaWYgKHRvX3JldHVybiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCB0b19yZXR1cm4pOworICAgICAgICAgICAgICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgbm90IGluIHN5cy5tb2R1bGVzIGFzIGV4cGVjdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmluYWxfbW9kKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRvX3JldHVybik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmaW5hbF9tb2QgPSBtb2Q7CisgICAgICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZmluYWxfbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19oYW5kbGVfZnJvbWxpc3QsIG1vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGJ1aWx0aW5zX2ltcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgfQorICAgIGdvdG8gZXJyb3I7CisKKyAgZXJyb3Jfd2l0aF91bmxvY2s6CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2siKTsKKyAgICB9CisjZW5kaWYKKyAgZXJyb3I6CisgICAgUHlfWERFQ1JFRihhYnNfbmFtZSk7CisgICAgUHlfWERFQ1JFRihidWlsdGluc19pbXBvcnQpOworICAgIFB5X1hERUNSRUYobW9kKTsKKyAgICBQeV9YREVDUkVGKHBhY2thZ2UpOworICAgIFB5X1hERUNSRUYoZ2xvYmFscyk7CisgICAgUHlfWERFQ1JFRihmcm9tbGlzdCk7CisgICAgaWYgKGZpbmFsX21vZCA9PSBOVUxMKQorICAgICAgICByZW1vdmVfaW1wb3J0bGliX2ZyYW1lcygpOworICAgIHJldHVybiBmaW5hbF9tb2Q7CiB9CiAKIFB5T2JqZWN0ICoKLVB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQorUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwoY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwotICAgIHJlc3VsdCA9IGltcG9ydF9tb2R1bGVfbGV2ZWwobmFtZSwgZ2xvYmFscywgbG9jYWxzLCBmcm9tbGlzdCwgbGV2ZWwpOwotICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jayIpOworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqbW9kOworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogUmV0dXJuIHRoZSBwYWNrYWdlIHRoYXQgYW4gaW1wb3J0IGlzIGJlaW5nIHBlcmZvcm1lZCBpbi4gIElmIGdsb2JhbHMgY29tZXMKLSAgIGZyb20gdGhlIG1vZHVsZSBmb28uYmFyLmJhdCAobm90IGl0c2VsZiBhIHBhY2thZ2UpLCB0aGlzIHJldHVybnMgdGhlCi0gICBzeXMubW9kdWxlcyBlbnRyeSBmb3IgZm9vLmJhci4gIElmIGdsb2JhbHMgaXMgZnJvbSBhIHBhY2thZ2UncyBfX2luaXRfXy5weSwKLSAgIHRoZSBwYWNrYWdlJ3MgZW50cnkgaW4gc3lzLm1vZHVsZXMgaXMgcmV0dXJuZWQsIGFzIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotCi0gICBUaGUgKm5hbWUqIG9mIHRoZSByZXR1cm5lZCBwYWNrYWdlIGlzIHJldHVybmVkIGluIGJ1Ziwgd2l0aCB0aGUgbGVuZ3RoIG9mCi0gICB0aGUgbmFtZSBpbiAqcF9idWZsZW4uCi0KLSAgIElmIGdsb2JhbHMgZG9lc24ndCBjb21lIGZyb20gYSBwYWNrYWdlIG9yIGEgbW9kdWxlIGluIGEgcGFja2FnZSwgb3IgYQotICAgY29ycmVzcG9uZGluZyBlbnRyeSBpcyBub3QgZm91bmQgaW4gc3lzLm1vZHVsZXMsIFB5X05vbmUgaXMgcmV0dXJuZWQuCi0qLwotc3RhdGljIFB5T2JqZWN0ICoKLWdldF9wYXJlbnQoUHlPYmplY3QgKmdsb2JhbHMsIGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCAqcF9idWZsZW4sIGludCBsZXZlbCkKLXsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm5hbWVzdHIgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqcGF0aHN0ciA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpwa2dzdHIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpwa2duYW1lLCAqbW9kbmFtZSwgKm1vZHBhdGgsICptb2R1bGVzLCAqcGFyZW50OwotICAgIGludCBvcmlnX2xldmVsID0gbGV2ZWw7Ci0KLSAgICBpZiAoZ2xvYmFscyA9PSBOVUxMIHx8ICFQeURpY3RfQ2hlY2soZ2xvYmFscykgfHwgIWxldmVsKQotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLQotICAgIGlmIChuYW1lc3RyID09IE5VTEwpIHsKLSAgICAgICAgbmFtZXN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25hbWVfXyIpOwotICAgICAgICBpZiAobmFtZXN0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChwYXRoc3RyID09IE5VTEwpIHsKLSAgICAgICAgcGF0aHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX3BhdGhfXyIpOwotICAgICAgICBpZiAocGF0aHN0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChwa2dzdHIgPT0gTlVMTCkgewotICAgICAgICBwa2dzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19wYWNrYWdlX18iKTsKLSAgICAgICAgaWYgKHBrZ3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgKmJ1ZiA9ICdcMCc7Ci0gICAgKnBfYnVmbGVuID0gMDsKLSAgICBwa2duYW1lID0gUHlEaWN0X0dldEl0ZW0oZ2xvYmFscywgcGtnc3RyKTsKLQotICAgIGlmICgocGtnbmFtZSAhPSBOVUxMKSAmJiAocGtnbmFtZSAhPSBQeV9Ob25lKSkgewotICAgICAgICAvKiBfX3BhY2thZ2VfXyBpcyBzZXQsIHNvIHVzZSBpdCAqLwotICAgICAgICBjaGFyICpwa2duYW1lX3N0cjsKLSAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0KLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGtnbmFtZSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX3BhY2thZ2VfXyBzZXQgdG8gbm9uLXN0cmluZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcGtnbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShwa2duYW1lLCAmbGVuKTsKLSAgICAgICAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJBdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGluIG5vbi1wYWNrYWdlIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobGVuID4gTUFYUEFUSExFTikgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhY2thZ2UgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyY3B5KGJ1ZiwgcGtnbmFtZV9zdHIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIF9fcGFja2FnZV9fIG5vdCBzZXQsIHNvIGZpZ3VyZSBpdCBvdXQgYW5kIHNldCBpdCAqLwotICAgICAgICBtb2RuYW1lID0gUHlEaWN0X0dldEl0ZW0oZ2xvYmFscywgbmFtZXN0cik7Ci0gICAgICAgIGlmIChtb2RuYW1lID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhtb2RuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotCi0gICAgICAgIG1vZHBhdGggPSBQeURpY3RfR2V0SXRlbShnbG9iYWxzLCBwYXRoc3RyKTsKLSAgICAgICAgaWYgKG1vZHBhdGggIT0gTlVMTCkgewotICAgICAgICAgICAgLyogX19wYXRoX18gaXMgc2V0LCBzbyBtb2RuYW1lIGlzIGFscmVhZHkgdGhlIHBhY2thZ2UgbmFtZSAqLwotICAgICAgICAgICAgY2hhciAqbW9kbmFtZV9zdHI7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIGludCBlcnJvcjsKLQotICAgICAgICAgICAgbW9kbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShtb2RuYW1lLCAmbGVuKTsKLSAgICAgICAgICAgIGlmIChsZW4gPiBNQVhQQVRITEVOKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyY3B5KGJ1ZiwgbW9kbmFtZV9zdHIpOwotICAgICAgICAgICAgZXJyb3IgPSBQeURpY3RfU2V0SXRlbShnbG9iYWxzLCBwa2dzdHIsIG1vZG5hbWUpOwotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3Qgc2V0IF9fcGFja2FnZV9fIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBOb3JtYWwgbW9kdWxlLCBzbyB3b3JrIG91dCB0aGUgcGFja2FnZSBuYW1lIGlmIGFueSAqLwotICAgICAgICAgICAgY2hhciAqc3RhcnQgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG1vZG5hbWUpOwotICAgICAgICAgICAgY2hhciAqbGFzdGRvdCA9IHN0cnJjaHIoc3RhcnQsICcuJyk7Ci0gICAgICAgICAgICBzaXplX3QgbGVuOwotICAgICAgICAgICAgaW50IGVycm9yOwotICAgICAgICAgICAgaWYgKGxhc3Rkb3QgPT0gTlVMTCAmJiBsZXZlbCA+IDApIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIkF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgaW4gbm9uLXBhY2thZ2UiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsYXN0ZG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBlcnJvciA9IFB5RGljdF9TZXRJdGVtKGdsb2JhbHMsIHBrZ3N0ciwgUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBzZXQgX19wYWNrYWdlX18iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGVuID0gbGFzdGRvdCAtIHN0YXJ0OwotICAgICAgICAgICAgaWYgKGxlbiA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RybmNweShidWYsIHN0YXJ0LCBsZW4pOwotICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgcGtnbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgICAgICAgICBpZiAocGtnbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlcnJvciA9IFB5RGljdF9TZXRJdGVtKGdsb2JhbHMsIHBrZ3N0ciwgcGtnbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGtnbmFtZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBzZXQgX19wYWNrYWdlX18iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoLS1sZXZlbCA+IDApIHsKLSAgICAgICAgY2hhciAqZG90ID0gc3RycmNocihidWYsICcuJyk7Ci0gICAgICAgIGlmIChkb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgIkF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kICIKLSAgICAgICAgICAgICAgICAidG9wbGV2ZWwgcGFja2FnZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgKmRvdCA9ICdcMCc7Ci0gICAgfQotICAgICpwX2J1ZmxlbiA9IHN0cmxlbihidWYpOwotCi0gICAgbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBwYXJlbnQgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBidWYpOwotICAgIGlmIChwYXJlbnQgPT0gTlVMTCkgewotICAgICAgICBpZiAob3JpZ19sZXZlbCA8IDEpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICplcnJfbXNnID0gUHlCeXRlc19Gcm9tRm9ybWF0KAotICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICclLjIwMHMnIG5vdCBmb3VuZCAiCi0gICAgICAgICAgICAgICAgIndoaWxlIGhhbmRsaW5nIGFic29sdXRlIGltcG9ydCIsIGJ1Zik7Ci0gICAgICAgICAgICBpZiAoZXJyX21zZyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIVB5RXJyX1dhcm5FeChQeUV4Y19SdW50aW1lV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcoZXJyX21zZyksIDEpKSB7Ci0gICAgICAgICAgICAgICAgKmJ1ZiA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgKnBfYnVmbGVuID0gMDsKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGVycl9tc2cpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICclLjIwMHMnIG5vdCBsb2FkZWQsICIKLSAgICAgICAgICAgICAgICAiY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgaW1wb3J0IiwgYnVmKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcGFyZW50OwotICAgIC8qIFdlIGV4cGVjdCwgYnV0IGNhbid0IGd1YXJhbnRlZSwgaWYgcGFyZW50ICE9IE5vbmUsIHRoYXQ6Ci0gICAgICAgLSBwYXJlbnQuX19uYW1lX18gPT0gYnVmCi0gICAgICAgLSBwYXJlbnQuX19kaWN0X18gaXMgZ2xvYmFscwotICAgICAgIElmIHRoaXMgaXMgdmlvbGF0ZWQuLi4gIFdobyBjYXJlcz8gKi8KLX0KLQotLyogYWx0bW9kIGlzIGVpdGhlciBOb25lIG9yIHNhbWUgYXMgbW9kICovCi1zdGF0aWMgUHlPYmplY3QgKgotbG9hZF9uZXh0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICphbHRtb2QsIGNoYXIgKipwX25hbWUsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICBQeV9zc2l6ZV90ICpwX2J1ZmxlbikKLXsKLSAgICBjaGFyICpuYW1lID0gKnBfbmFtZTsKLSAgICBjaGFyICpkb3QgPSBzdHJjaHIobmFtZSwgJy4nKTsKLSAgICBzaXplX3QgbGVuOwotICAgIGNoYXIgKnA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIGlmIChzdHJsZW4obmFtZSkgPT0gMCkgewotICAgICAgICAvKiBjb21wbGV0ZWx5IGVtcHR5IG1vZHVsZSBuYW1lIHNob3VsZCBvbmx5IGhhcHBlbiBpbgotICAgICAgICAgICAnZnJvbSAuIGltcG9ydCcgKG9yICdfX2ltcG9ydF9fKCIiKScpKi8KLSAgICAgICAgUHlfSU5DUkVGKG1vZCk7Ci0gICAgICAgICpwX25hbWUgPSBOVUxMOwotICAgICAgICByZXR1cm4gbW9kOwotICAgIH0KLQotICAgIGlmIChkb3QgPT0gTlVMTCkgewotICAgICAgICAqcF9uYW1lID0gTlVMTDsKLSAgICAgICAgbGVuID0gc3RybGVuKG5hbWUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgKnBfbmFtZSA9IGRvdCsxOwotICAgICAgICBsZW4gPSBkb3QtbmFtZTsKLSAgICB9Ci0gICAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IG1vZHVsZSBuYW1lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHAgPSBidWYgKyAqcF9idWZsZW47Ci0gICAgaWYgKHAgIT0gYnVmKQotICAgICAgICAqcCsrID0gJy4nOwotICAgIGlmIChwK2xlbi1idWYgPj0gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgc3RybmNweShwLCBuYW1lLCBsZW4pOwotICAgIHBbbGVuXSA9ICdcMCc7Ci0gICAgKnBfYnVmbGVuID0gcCtsZW4tYnVmOwotCi0gICAgcmVzdWx0ID0gaW1wb3J0X3N1Ym1vZHVsZShtb2QsIHAsIGJ1Zik7Ci0gICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lICYmIGFsdG1vZCAhPSBtb2QpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIC8qIEhlcmUsIGFsdG1vZCBtdXN0IGJlIE5vbmUgYW5kIG1vZCBtdXN0IG5vdCBiZSBOb25lICovCi0gICAgICAgIHJlc3VsdCA9IGltcG9ydF9zdWJtb2R1bGUoYWx0bW9kLCBwLCBwKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIHJlc3VsdCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBpZiAobWFya19taXNzKGJ1ZikgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RybmNweShidWYsIG5hbWUsIGxlbik7Ci0gICAgICAgICAgICBidWZbbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICAqcF9idWZsZW4gPSBsZW47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChyZXN1bHQgPT0gUHlfTm9uZSkgewotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIG1vZHVsZSBuYW1lZCAlLjIwMHMiLCBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGludAotbWFya19taXNzKGNoYXIgKm5hbWUpCi17Ci0gICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgcmV0dXJuIFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUsIFB5X05vbmUpOwotfQotCi1zdGF0aWMgaW50Ci1lbnN1cmVfZnJvbWxpc3QoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmZyb21saXN0LCBjaGFyICpidWYsIFB5X3NzaXplX3QgYnVmbGVuLAotICAgICAgICAgICAgICAgIGludCByZWN1cnNpdmUpCi17Ci0gICAgaW50IGk7Ci0KLSAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcobW9kLCAiX19wYXRoX18iKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBmb3IgKGkgPSAwOyA7IGkrKykgewotICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5U2VxdWVuY2VfR2V0SXRlbShmcm9tbGlzdCwgaSk7Ci0gICAgICAgIGludCBoYXNpdDsKLSAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfSW5kZXhFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkl0ZW0gaW4gYGBmcm9tIGxpc3QnJyBub3QgYSBzdHJpbmciKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQVNfVU5JQ09ERShpdGVtKVswXSA9PSAnKicpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICphbGw7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgICAgICAvKiBTZWUgaWYgdGhlIHBhY2thZ2UgZGVmaW5lcyBfX2FsbF9fICovCi0gICAgICAgICAgICBpZiAocmVjdXJzaXZlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBBdm9pZCBlbmRsZXNzIHJlY3Vyc2lvbiAqLwotICAgICAgICAgICAgYWxsID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2QsICJfX2FsbF9fIik7Ci0gICAgICAgICAgICBpZiAoYWxsID09IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGludCByZXQgPSBlbnN1cmVfZnJvbWxpc3QobW9kLCBhbGwsIGJ1ZiwgYnVmbGVuLCAxKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYWxsKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJldCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBoYXNpdCA9IFB5T2JqZWN0X0hhc0F0dHIobW9kLCBpdGVtKTsKLSAgICAgICAgaWYgKCFoYXNpdCkgewotICAgICAgICAgICAgUHlPYmplY3QgKml0ZW04OwotICAgICAgICAgICAgY2hhciAqc3VibmFtZTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJtb2Q7Ci0gICAgICAgICAgICBjaGFyICpwOwotICAgICAgICAgICAgaXRlbTggPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGl0ZW0pOwotICAgICAgICAgICAgaWYgKCFpdGVtOCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ2Fubm90IGVuY29kZSBwYXRoIGl0ZW0iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN1Ym5hbWUgPSBQeUJ5dGVzX0FTX1NUUklORyhpdGVtOCk7Ci0gICAgICAgICAgICBpZiAoYnVmbGVuICsgc3RybGVuKHN1Ym5hbWUpID49IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZHVsZSBuYW1lIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcCA9IGJ1ZiArIGJ1ZmxlbjsKLSAgICAgICAgICAgICpwKysgPSAnLic7Ci0gICAgICAgICAgICBzdHJjcHkocCwgc3VibmFtZSk7Ci0gICAgICAgICAgICBzdWJtb2QgPSBpbXBvcnRfc3VibW9kdWxlKG1vZCwgc3VibmFtZSwgYnVmKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtOCk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHN1Ym1vZCk7Ci0gICAgICAgICAgICBpZiAoc3VibW9kID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgIH0KLQotICAgIC8qIE5PVFJFQUNIRUQgKi8KLX0KLQotc3RhdGljIGludAotYWRkX3N1Ym1vZHVsZShQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqc3VibW9kLCBjaGFyICpmdWxsbmFtZSwgY2hhciAqc3VibmFtZSwKLSAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZHVsZXMpCi17Ci0gICAgaWYgKG1vZCA9PSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gMTsKLSAgICAvKiBJcnJlc3BlY3RpdmUgb2YgdGhlIHN1Y2Nlc3Mgb2YgdGhpcyBsb2FkLCBtYWtlIGEKLSAgICAgICByZWZlcmVuY2UgdG8gaXQgaW4gdGhlIHBhcmVudCBwYWNrYWdlIG1vZHVsZS4gIEEgY29weSBnZXRzCi0gICAgICAgc2F2ZWQgaW4gdGhlIG1vZHVsZXMgZGljdGlvbmFyeSB1bmRlciB0aGUgZnVsbCBuYW1lLCBzbyBnZXQgYQotICAgICAgIHJlZmVyZW5jZSBmcm9tIHRoZXJlLCBpZiBuZWVkIGJlLiAgKFRoZSBleGNlcHRpb24gaXMgd2hlbiB0aGUKLSAgICAgICBsb2FkIGZhaWxlZCB3aXRoIGEgU3ludGF4RXJyb3IgLS0gdGhlbiB0aGVyZSdzIG5vIHRyYWNlIGluCi0gICAgICAgc3lzLm1vZHVsZXMuICBJbiB0aGF0IGNhc2UsIG9mIGNvdXJzZSwgZG8gbm90aGluZyBleHRyYS4pICovCi0gICAgaWYgKHN1Ym1vZCA9PSBOVUxMKSB7Ci0gICAgICAgIHN1Ym1vZCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIGZ1bGxuYW1lKTsKLSAgICAgICAgaWYgKHN1Ym1vZCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIGlmIChQeU1vZHVsZV9DaGVjayhtb2QpKSB7Ci0gICAgICAgIC8qIFdlIGNhbid0IHVzZSBzZXRhdHRyIGhlcmUgc2luY2UgaXQgY2FuIGdpdmUgYQotICAgICAgICAgKiBzcHVyaW91cyB3YXJuaW5nIGlmIHRoZSBzdWJtb2R1bGUgbmFtZSBzaGFkb3dzIGEKLSAgICAgICAgICogYnVpbHRpbiBuYW1lICovCi0gICAgICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChtb2QpOwotICAgICAgICBpZiAoIWRpY3QpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsIHN1Ym5hbWUsIHN1Ym1vZCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhtb2QsIHN1Ym5hbWUsIHN1Ym1vZCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wb3J0X3N1Ym1vZHVsZShQeU9iamVjdCAqbW9kLCBjaGFyICpzdWJuYW1lLCBjaGFyICpmdWxsbmFtZSkKLXsKLSAgICBQeU9iamVjdCAqbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBQeU9iamVjdCAqbSA9IE5VTEw7Ci0KLSAgICAvKiBSZXF1aXJlOgotICAgICAgIGlmIG1vZCA9PSBOb25lOiBzdWJuYW1lID09IGZ1bGxuYW1lCi0gICAgICAgZWxzZTogbW9kLl9fbmFtZV9fICsgIi4iICsgc3VibmFtZSA9PSBmdWxsbmFtZQotICAgICovCi0KLSAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBmdWxsbmFtZSkpICE9IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKG0pOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnBhdGgsICpsb2FkZXIgPSBOVUxMOwotICAgICAgICBjaGFyICpidWY7Ci0gICAgICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKLSAgICAgICAgRklMRSAqZnAgPSBOVUxMOwotCi0gICAgICAgIGlmIChtb2QgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgIHBhdGggPSBOVUxMOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhdGggPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1vZCwgIl9fcGF0aF9fIik7Ci0gICAgICAgICAgICBpZiAocGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgfQotICAgICAgICBidWZbMF0gPSAnXDAnOwotICAgICAgICBmZHAgPSBmaW5kX21vZHVsZShmdWxsbmFtZSwgc3VibmFtZSwgcGF0aCwgYnVmLCBNQVhQQVRITEVOKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmcCwgJmxvYWRlcik7Ci0gICAgICAgIFB5X1hERUNSRUYocGF0aCk7Ci0gICAgICAgIGlmIChmZHAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0ltcG9ydEVycm9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgfQotICAgICAgICBtID0gbG9hZF9tb2R1bGUoZnVsbG5hbWUsIGZwLCBidWYsIGZkcC0+dHlwZSwgbG9hZGVyKTsKLSAgICAgICAgUHlfWERFQ1JFRihsb2FkZXIpOwotICAgICAgICBpZiAoZnApCi0gICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBpZiAoIWFkZF9zdWJtb2R1bGUobW9kLCBtLCBmdWxsbmFtZSwgc3VibmFtZSwgbW9kdWxlcykpIHsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobSk7Ci0gICAgICAgICAgICBtID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgfQotCi0gICAgcmV0dXJuIG07CisgICAgbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QobmFtZW9iaiwgZ2xvYmFscywgbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBsZXZlbCk7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIHJldHVybiBtb2Q7CiB9CiAKIApAQCAtMjk4OSwxMDMgKzE1NTcsMjMgQEAKIFB5T2JqZWN0ICoKIFB5SW1wb3J0X1JlbG9hZE1vZHVsZShQeU9iamVjdCAqbSkKIHsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKLSAgICBQeU9iamVjdCAqbW9kdWxlc19yZWxvYWRpbmcgPSBpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nOworICAgIF9QeV9JREVOVElGSUVSKHJlbG9hZCk7CisgICAgUHlPYmplY3QgKnJlbG9hZGVkX21vZHVsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMLCAqbG9hZGVyID0gTlVMTCwgKmV4aXN0aW5nX20gPSBOVUxMOwotICAgIGNoYXIgKm5hbWUsICpzdWJuYW1lOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0gICAgRklMRSAqZnAgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuZXdtOwotCi0gICAgaWYgKG1vZHVsZXNfcmVsb2FkaW5nID09IE5VTEwpIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlJbXBvcnRfUmVsb2FkTW9kdWxlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgIm5vIG1vZHVsZXNfcmVsb2FkaW5nIGRpY3Rpb25hcnkhIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5T2JqZWN0ICppbXAgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCAiaW1wIik7CisgICAgaWYgKGltcCA9PSBOVUxMKSB7CisgICAgICAgIGltcCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiaW1wIik7CisgICAgICAgIGlmIChpbXAgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAobSA9PSBOVUxMIHx8ICFQeU1vZHVsZV9DaGVjayhtKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlbG9hZCgpIGFyZ3VtZW50IG11c3QgYmUgbW9kdWxlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBuYW1lID0gKGNoYXIqKVB5TW9kdWxlX0dldE5hbWUobSk7Ci0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG0gIT0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInJlbG9hZCgpOiBtb2R1bGUgJS4yMDBzIG5vdCBpbiBzeXMubW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGV4aXN0aW5nX20gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzX3JlbG9hZGluZywgbmFtZSk7Ci0gICAgaWYgKGV4aXN0aW5nX20gIT0gTlVMTCkgewotICAgICAgICAvKiBEdWUgdG8gYSByZWN1cnNpdmUgcmVsb2FkLCB0aGlzIG1vZHVsZSBpcyBhbHJlYWR5Ci0gICAgICAgICAgIGJlaW5nIHJlbG9hZGVkLiAqLwotICAgICAgICBQeV9JTkNSRUYoZXhpc3RpbmdfbSk7Ci0gICAgICAgIHJldHVybiBleGlzdGluZ19tOwotICAgIH0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlc19yZWxvYWRpbmcsIG5hbWUsIG0pIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdWJuYW1lID0gc3RycmNocihuYW1lLCAnLicpOwotICAgIGlmIChzdWJuYW1lID09IE5VTEwpCi0gICAgICAgIHN1Ym5hbWUgPSBuYW1lOwogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqcGFyZW50bmFtZSwgKnBhcmVudDsKLSAgICAgICAgcGFyZW50bmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShuYW1lLCAoc3VibmFtZS1uYW1lKSk7Ci0gICAgICAgIGlmIChwYXJlbnRuYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyZW50ID0gUHlEaWN0X0dldEl0ZW0obW9kdWxlcywgcGFyZW50bmFtZSk7Ci0gICAgICAgIGlmIChwYXJlbnQgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICJyZWxvYWQoKTogcGFyZW50ICVVIG5vdCBpbiBzeXMubW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgIHBhcmVudG5hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHBhcmVudG5hbWUpOwotICAgICAgICAgICAgaW1wX21vZHVsZXNfcmVsb2FkaW5nX2NsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYocGFyZW50bmFtZSk7Ci0gICAgICAgIHN1Ym5hbWUrKzsKLSAgICAgICAgcGF0aCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcocGFyZW50LCAiX19wYXRoX18iKTsKLSAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICBQeV9YREVDUkVGKHBhdGgpOwotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgYnVmWzBdID0gJ1wwJzsKLSAgICBmZHAgPSBmaW5kX21vZHVsZShuYW1lLCBzdWJuYW1lLCBwYXRoLCBidWYsIE1BWFBBVEhMRU4rMSwgJmZwLCAmbG9hZGVyKTsKLSAgICBQeV9YREVDUkVGKHBhdGgpOwotCi0gICAgaWYgKGZkcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X1hERUNSRUYobG9hZGVyKTsKLSAgICAgICAgaW1wX21vZHVsZXNfcmVsb2FkaW5nX2NsZWFyKCk7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihpbXApOwogICAgIH0KIAotICAgIG5ld20gPSBsb2FkX21vZHVsZShuYW1lLCBmcCwgYnVmLCBmZHAtPnR5cGUsIGxvYWRlcik7Ci0gICAgUHlfWERFQ1JFRihsb2FkZXIpOwotCi0gICAgaWYgKGZwKQotICAgICAgICBmY2xvc2UoZnApOwotICAgIGlmIChuZXdtID09IE5VTEwpIHsKLSAgICAgICAgLyogbG9hZF9tb2R1bGUgcHJvYmFibHkgcmVtb3ZlZCBuYW1lIGZyb20gbW9kdWxlcyBiZWNhdXNlIG9mCi0gICAgICAgICAqIHRoZSBlcnJvci4gIFB1dCBiYWNrIHRoZSBvcmlnaW5hbCBtb2R1bGUgb2JqZWN0LiAgV2UncmUKLSAgICAgICAgICogZ29pbmcgdG8gcmV0dXJuIE5VTEwgaW4gdGhpcyBjYXNlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgotICAgICAgICAgKiByZXBsYWNpbmcgbmFtZSBzdWNjZWVkcywgc28gdGhlIHJldHVybiB2YWx1ZSBpcyBpZ25vcmVkLgotICAgICAgICAgKi8KLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSwgbSk7Ci0gICAgfQotICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gbmV3bTsKKyAgICByZWxvYWRlZF9tb2R1bGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGltcCwgJlB5SWRfcmVsb2FkLCAiTyIsIG0pOworICAgIFB5X0RFQ1JFRihpbXApOworICAgIHJldHVybiByZWxvYWRlZF9tb2R1bGU7CiB9CiAKIApAQCAtMzE3NSw0OCArMTY2MywxOSBAQAogICAgIHJldHVybiByOwogfQogCi0KLS8qIE1vZHVsZSAnaW1wJyBwcm92aWRlcyBQeXRob24gYWNjZXNzIHRvIHRoZSBwcmltaXRpdmVzIHVzZWQgZm9yCi0gICBpbXBvcnRpbmcgbW9kdWxlcy4KLSovCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbWFrZV9tYWdpYyhsb25nIG1hZ2ljKQotewotICAgIGNoYXIgYnVmWzRdOwotCi0gICAgYnVmWzBdID0gKGNoYXIpICgobWFnaWMgPj4gIDApICYgMHhmZik7Ci0gICAgYnVmWzFdID0gKGNoYXIpICgobWFnaWMgPj4gIDgpICYgMHhmZik7Ci0gICAgYnVmWzJdID0gKGNoYXIpICgobWFnaWMgPj4gMTYpICYgMHhmZik7Ci0gICAgYnVmWzNdID0gKGNoYXIpICgobWFnaWMgPj4gMjQpICYgMHhmZik7Ci0KLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIDQpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2dldF9tYWdpYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICByZXR1cm4gaW1wX21ha2VfbWFnaWMocHljX21hZ2ljKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9nZXRfdGFnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQotewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhweWNfdGFnKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9nZXRfc3VmZml4ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitpbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewogICAgIFB5T2JqZWN0ICpsaXN0OwotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKKyAgICBjb25zdCBjaGFyICpzdWZmaXg7CisgICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmIChsaXN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoZmRwID0gX1B5SW1wb3J0X0ZpbGV0YWI7IGZkcC0+c3VmZml4ICE9IE5VTEw7IGZkcCsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlfQnVpbGRWYWx1ZSgic3NpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHAtPnN1ZmZpeCwgZmRwLT5tb2RlLCBmZHAtPnR5cGUpOworI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCisgICAgd2hpbGUgKChzdWZmaXggPSBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbaW5kZXhdKSkgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHN1ZmZpeCk7CiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzIyNywxMDIgKzE2ODYsMTkgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgaW5kZXggKz0gMTsKICAgICB9CisjZW5kaWYKICAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfZmluZF9tb2R1bGUoY2hhciAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCi17Ci0gICAgZXh0ZXJuIGludCBmY2xvc2UoRklMRSAqKTsKLSAgICBQeU9iamVjdCAqZm9iLCAqcmV0OwotICAgIFB5T2JqZWN0ICpwYXRob2JqOwotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKLSAgICBjaGFyICpwYXRobmFtZTsKLSAgICBGSUxFICpmcCA9IE5VTEw7Ci0gICAgaW50IGZkID0gLTE7Ci0gICAgY2hhciAqZm91bmRfZW5jb2RpbmcgPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLQotICAgIHBhdGhuYW1lID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKHBhdGhuYW1lID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIHBhdGhuYW1lWzBdID0gJ1wwJzsKLSAgICBpZiAocGF0aCA9PSBQeV9Ob25lKQotICAgICAgICBwYXRoID0gTlVMTDsKLSAgICBmZHAgPSBmaW5kX21vZHVsZShOVUxMLCBuYW1lLCBwYXRoLCBwYXRobmFtZSwgTUFYUEFUSExFTisxLCAmZnAsIE5VTEwpOwotICAgIGlmIChmZHAgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIGlmIChmcCAhPSBOVUxMKSB7Ci0gICAgICAgIGZkID0gZmlsZW5vKGZwKTsKLSAgICAgICAgaWYgKGZkICE9IC0xKQotICAgICAgICAgICAgZmQgPSBkdXAoZmQpOwotICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBmcCA9IE5VTEw7Ci0gICAgICAgIGlmIChmZCA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChmZCAhPSAtMSkgewotICAgICAgICBpZiAoc3RyY2hyKGZkcC0+bW9kZSwgJ2InKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoKSByZXR1cm5zIFB5TWVtX01BTExPQydlZAotICAgICAgICAgICAgICAgbWVtb3J5LiAqLwotICAgICAgICAgICAgZm91bmRfZW5jb2RpbmcgPSBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoZmQpOwotICAgICAgICAgICAgbHNlZWsoZmQsIDAsIDApOyAvKiBSZXNldCBwb3NpdGlvbiAqLwotICAgICAgICAgICAgaWYgKGZvdW5kX2VuY29kaW5nID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbmNvZGluZyA9IChmb3VuZF9lbmNvZGluZyAhPSBOVUxMKSA/IGZvdW5kX2VuY29kaW5nIDoKLSAgICAgICAgICAgICAgICAgICAoY2hhciopUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwotICAgICAgICB9Ci0gICAgICAgIGZvYiA9IFB5RmlsZV9Gcm9tRmQoZmQsIHBhdGhuYW1lLCBmZHAtPm1vZGUsIC0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKillbmNvZGluZywgTlVMTCwgTlVMTCwgMSk7Ci0gICAgICAgIGlmIChmb2IgPT0gTlVMTCkgewotICAgICAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICAgICAgUHlNZW1fRlJFRShmb3VuZF9lbmNvZGluZyk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvYiA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRihmb2IpOwotICAgIH0KLSAgICBwYXRob2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7Ci0gICAgcmV0ID0gUHlfQnVpbGRWYWx1ZSgiTk4oc3NpKSIsCi0gICAgICAgICAgICAgICAgICBmb2IsIHBhdGhvYmosIGZkcC0+c3VmZml4LCBmZHAtPm1vZGUsIGZkcC0+dHlwZSk7Ci0gICAgUHlNZW1fRlJFRShmb3VuZF9lbmNvZGluZyk7Ci0gICAgUHlNZW1fRlJFRShwYXRobmFtZSk7Ci0gICAgcmV0dXJuIHJldDsKLQotZXJyb3JfZXhpdDoKLSAgICBQeU1lbV9GUkVFKHBhdGhuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9maW5kX21vZHVsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnJldCwgKnBhdGggPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8TzpmaW5kX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0ID0gY2FsbF9maW5kX21vZHVsZShQeUJ5dGVzX0FTX1NUUklORyhuYW1lKSwgcGF0aCk7Ci0gICAgUHlfREVDUkVGKG5hbWUpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaW5pdF9idWlsdGluKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lOwogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKm07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmluaXRfYnVpbHRpbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aW5pdF9idWlsdGluIiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXQgPSBpbml0X2J1aWx0aW4obmFtZSk7CiAgICAgaWYgKHJldCA8IDApCkBAIC0zMzMxLDcgKzE3MDcsNyBAQAogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOworICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7CiAgICAgUHlfWElOQ1JFRihtKTsKICAgICByZXR1cm4gbTsKIH0KQEAgLTMzMzksMTkgKzE3MTUsMTkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaW5pdF9mcm96ZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKm5hbWU7CisgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgaW50IHJldDsKICAgICBQeU9iamVjdCAqbTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aW5pdF9mcm96ZW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmluaXRfZnJvemVuIiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXQgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUobmFtZSk7CisgICAgcmV0ID0gUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAocmV0ID09IDApIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIFB5X1hJTkNSRUYobSk7CiAgICAgcmV0dXJuIG07CiB9CkBAIC0zMzU5LDkgKzE3MzUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGltcF9nZXRfZnJvemVuX29iamVjdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpnZXRfZnJvemVuX29iamVjdCIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBnZXRfZnJvemVuX29iamVjdChuYW1lKTsKIH0KQEAgLTMzNjksOSArMTc0NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2lzX2Zyb3plbl9wYWNrYWdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmlzX2Zyb3plbl9wYWNrYWdlIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIGlzX2Zyb3plbl9wYWNrYWdlKG5hbWUpOwogfQpAQCAtMzM3OSw4ICsxNzU1LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaXNfYnVpbHRpbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aXNfYnVpbHRpbiIsICZuYW1lKSkKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aXNfYnVpbHRpbiIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhpc19idWlsdGluKG5hbWUpKTsKIH0KQEAgLTMzODgsMzMzICsxNzY0LDU0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2lzX2Zyb3plbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKICAgICBzdHJ1Y3QgX2Zyb3plbiAqcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aXNfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTppc19mcm96ZW4iLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSAocCA9PSBOVUxMID8gMCA6IHAtPnNpemUpKTsKIH0KIAotc3RhdGljIEZJTEUgKgotZ2V0X2ZpbGUoY2hhciAqcGF0aG5hbWUsIFB5T2JqZWN0ICpmb2IsIGNoYXIgKm1vZGUpCi17Ci0gICAgRklMRSAqZnA7Ci0gICAgaWYgKG1vZGVbMF0gPT0gJ1UnKQotICAgICAgICBtb2RlID0gInIiIFBZX1NURElPVEVYVE1PREU7Ci0gICAgaWYgKGZvYiA9PSBOVUxMKSB7Ci0gICAgICAgIGZwID0gZm9wZW4ocGF0aG5hbWUsIG1vZGUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaW50IGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcihmb2IpOwotICAgICAgICBpZiAoZmQgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgLyogdGhlIEZJTEUgc3RydWN0IGdldHMgYSBuZXcgZmQsIHNvIHRoYXQgaXQgY2FuIGJlIGNsb3NlZAotICAgICAgICAgKiBpbmRlcGVuZGVudGx5IG9mIHRoZSBmaWxlIGRlc2NyaXB0b3IgZ2l2ZW4KLSAgICAgICAgICovCi0gICAgICAgIGZkID0gZHVwKGZkKTsKLSAgICAgICAgaWYgKGZkID09IC0xKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgZnAgPSBmZG9wZW4oZmQsIG1vZGUpOwotICAgIH0KLSAgICBpZiAoZnApCi0gICAgICAgIHJldHVybiBmcDsKLWVycm9yOgotICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX2NvbXBpbGVkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqZm9iID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbTsKLSAgICBGSUxFICpmcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPJnxPOmxvYWRfY29tcGlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmb2IpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcCA9IGdldF9maWxlKFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZm9iLCAicmIiKTsKLSAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbSA9IGxvYWRfY29tcGlsZWRfbW9kdWxlKG5hbWUsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZnApOwotICAgIGZjbG9zZShmcCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICByZXR1cm4gbTsKLX0KLQogI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfbG9hZF9keW5hbWljKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpwYXRoYnl0ZXM7Ci0gICAgY2hhciAqcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmZvYiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgRklMRSAqZnAgPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mfE86bG9hZF9keW5hbWljIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhieXRlcywgJmZvYikpCisgICAgUHlPYmplY3QgKm5hbWUsICpwYXRobmFtZSwgKmZvYiA9IE5VTEwsICptb2Q7CisgICAgRklMRSAqZnA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVPJnxPOmxvYWRfZHluYW1pYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmcGF0aG5hbWUsICZmb2IpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRobmFtZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhieXRlcyk7Ci0gICAgaWYgKGZvYikgewotICAgICAgICBmcCA9IGdldF9maWxlKHBhdGhuYW1lLCBmb2IsICJyIik7CisgICAgaWYgKGZvYiAhPSBOVUxMKSB7CisgICAgICAgIGZwID0gX1B5X2ZvcGVuKHBhdGhuYW1lLCAiciIpOwogICAgICAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOworICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQotICAgIG0gPSBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUobmFtZSwgcGF0aG5hbWUsIGZwKTsKLSAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKKyAgICBlbHNlCisgICAgICAgIGZwID0gTlVMTDsKKyAgICBtb2QgPSBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUobmFtZSwgcGF0aG5hbWUsIGZwKTsKKyAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwogICAgIGlmIChmcCkKICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICByZXR1cm4gbTsKKyAgICByZXR1cm4gbW9kOwogfQogCiAjZW5kaWYgLyogSEFWRV9EWU5BTUlDX0xPQURJTkcgKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX3NvdXJjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmZvYiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgRklMRSAqZnA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyZ8Tzpsb2FkX3NvdXJjZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGZwID0gZ2V0X2ZpbGUoUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWUpLCBmb2IsICJyIik7Ci0gICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIG0gPSBsb2FkX3NvdXJjZV9tb2R1bGUobmFtZSwgUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWUpLCBmcCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICBmY2xvc2UoZnApOwotICAgIHJldHVybiBtOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2xvYWRfbW9kdWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpmb2I7Ci0gICAgUHlPYmplY3QgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICogcmV0OwotICAgIGNoYXIgKnN1ZmZpeDsgLyogVW51c2VkICovCi0gICAgY2hhciAqbW9kZTsKLSAgICBpbnQgdHlwZTsKLSAgICBGSUxFICpmcDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic09PJihzc2kpOmxvYWRfbW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsICZmb2IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3VmZml4LCAmbW9kZSwgJnR5cGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoKm1vZGUpIHsKLSAgICAgICAgLyogTW9kZSBtdXN0IHN0YXJ0IHdpdGggJ3InIG9yICdVJyBhbmQgbXVzdCBub3QgY29udGFpbiAnKycuCi0gICAgICAgICAgIEltcGxpY2l0IGluIHRoaXMgdGVzdCBpcyB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBtb2RlCi0gICAgICAgICAgIG1heSBjb250YWluIG90aGVyIG1vZGlmaWVycyBsaWtlICdiJyBvciAndCcuICovCi0KLSAgICAgICAgaWYgKCEoKm1vZGUgPT0gJ3InIHx8ICptb2RlID09ICdVJykgfHwgc3RyY2hyKG1vZGUsICcrJykpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZpbGUgb3BlbiBtb2RlICUuMjAwcyIsIG1vZGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChmb2IgPT0gUHlfTm9uZSkKLSAgICAgICAgZnAgPSBOVUxMOwotICAgIGVsc2UgewotICAgICAgICBmcCA9IGdldF9maWxlKE5VTEwsIGZvYiwgbW9kZSk7Ci0gICAgICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0ID0gbG9hZF9tb2R1bGUobmFtZSwgZnAsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgdHlwZSwgTlVMTCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICBpZiAoZnApCi0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX3BhY2thZ2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICogcmV0OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mOmxvYWRfcGFja2FnZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldCA9IGxvYWRfcGFja2FnZShuYW1lLCBQeUJ5dGVzX0FTX1NUUklORyhwYXRobmFtZSkpOwotICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9uZXdfbW9kdWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpuZXdfbW9kdWxlIiwgJm5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlNb2R1bGVfTmV3KG5hbWUpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX3JlbG9hZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCi17Ci0gICAgcmV0dXJuIFB5SW1wb3J0X1JlbG9hZE1vZHVsZSh2KTsKLX0KLQotUHlEb2NfU1RSVkFSKGRvY19yZWxvYWQsCi0icmVsb2FkKG1vZHVsZSkgLT4gbW9kdWxlXG5cCi1cblwKLVJlbG9hZCB0aGUgbW9kdWxlLiAgVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgYmVmb3JlLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2NhY2hlX2Zyb21fc291cmNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3cykKLXsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAiZGVidWdfb3ZlcnJpZGUiLCBOVUxMfTsKLQotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeU9iamVjdCAqcGF0aGJ5dGVzOwotICAgIGNoYXIgKmNwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqZGVidWdfb3ZlcnJpZGUgPSBOVUxMOwotICAgIGludCBkZWJ1ZyA9ICFQeV9PcHRpbWl6ZUZsYWc7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKLSAgICAgICAgICAgICAgICBhcmdzLCBrd3MsICJPJnxPIiwga3dsaXN0LAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhieXRlcywgJmRlYnVnX292ZXJyaWRlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoZGVidWdfb3ZlcnJpZGUgIT0gTlVMTCAmJgotICAgICAgICAoZGVidWcgPSBQeU9iamVjdF9Jc1RydWUoZGVidWdfb3ZlcnJpZGUpKSA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgY3BhdGhuYW1lID0gbWFrZV9jb21waWxlZF9wYXRobmFtZSgKLSAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocGF0aGJ5dGVzKSwKLSAgICAgICAgYnVmLCBNQVhQQVRITEVOKzEsIGRlYnVnKTsKLSAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKLQotICAgIGlmIChjcGF0aG5hbWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsICJwYXRoIGJ1ZmZlciB0b28gc2hvcnQiKTsKLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgewotICAgICAgICBQeU9iamVjdCAqcmV0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChidWYpOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotfQotCi1QeURvY19TVFJWQVIoZG9jX2NhY2hlX2Zyb21fc291cmNlLAotImNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtkZWJ1Z19vdmVycmlkZV0pIC0+IHBhdGhcblwKLUdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5Yy8ucHlvIGZpbGUuXG5cCi1cblwKLVRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZVxuXAotLnB5Yy8ucHlvIGZpbGUgY2FsY3VsYXRlZCBhcyBpZiB0aGUgLnB5IGZpbGUgd2VyZSBpbXBvcnRlZC4gIFRoZSBleHRlbnNpb25cblwKLXdpbGwgYmUgLnB5YyB1bmxlc3MgX19kZWJ1Z19fIGlzIG5vdCBkZWZpbmVkLCB0aGVuIGl0IHdpbGwgYmUgLnB5by5cblwKLVxuXAotSWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIHRoZW4gaXQgbXVzdCBiZSBhIGJvb2xlYW4gYW5kIGlzIHRha2VuIGFzXG5cCi10aGUgdmFsdWUgb2YgX19kZWJ1Z19fIGluc3RlYWQuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfc291cmNlX2Zyb21fY2FjaGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dzKQotewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsIE5VTEx9OwotCi0gICAgUHlPYmplY3QgKnBhdGhuYW1lX29iajsKLSAgICBjaGFyICpwYXRobmFtZTsKLSAgICBjaGFyICpidWY7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKLSAgICAgICAgICAgICAgICBhcmdzLCBrd3MsICJPJiIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZV9vYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHBhdGhuYW1lID0gUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWVfb2JqKTsKLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIGlmIChtYWtlX3NvdXJjZV9wYXRobmFtZShwYXRobmFtZSwgYnVmKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiTm90IGEgUEVQIDMxNDcgcHljIHBhdGg6ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lX29iaik7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihwYXRobmFtZV9vYmopOwotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKnJldCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICB9Ci19Ci0KLVB5RG9jX1NUUlZBUihkb2Nfc291cmNlX2Zyb21fY2FjaGUsCi0ic291cmNlX2Zyb21fY2FjaGUocGF0aCkgLT4gcGF0aFxuXAotR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLi8ucHlvIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5IGZpbGUuXG5cCi1cblwKLVRoZSAucHljLy5weW8gZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvXG5cCi10aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljLy5weW8gZmlsZS4gIElmIHBhdGhcblwKLWRvZXMgbm90IGNvbmZvcm0gdG8gUEVQIDMxNDcgZm9ybWF0LCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLiIpOwogCiAvKiBEb2Mgc3RyaW5ncyAqLwogCiBQeURvY19TVFJWQVIoZG9jX2ltcCwKLSJUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgY29tcG9uZW50cyBuZWVkZWQgdG8gYnVpbGQgeW91ciBvd25cblwKLV9faW1wb3J0X18gZnVuY3Rpb24uICBVbmRvY3VtZW50ZWQgZnVuY3Rpb25zIGFyZSBvYnNvbGV0ZS4iKTsKKyIoRXh0cmVtZWx5KSBsb3ctbGV2ZWwgaW1wb3J0IG1hY2hpbmVyeSBiaXRzIGFzIHVzZWQgYnkgaW1wb3J0bGliIGFuZCBpbXAuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfZmluZF9tb2R1bGUsCi0iZmluZF9tb2R1bGUobmFtZSwgW3BhdGhdKSAtPiAoZmlsZSwgZmlsZW5hbWUsIChzdWZmaXgsIG1vZGUsIHR5cGUpKVxuXAotU2VhcmNoIGZvciBhIG1vZHVsZS4gIElmIHBhdGggaXMgb21pdHRlZCBvciBOb25lLCBzZWFyY2ggZm9yIGFcblwKLWJ1aWx0LWluLCBmcm96ZW4gb3Igc3BlY2lhbCBtb2R1bGUgYW5kIGNvbnRpbnVlIHNlYXJjaCBpbiBzeXMucGF0aC5cblwKLVRoZSBtb2R1bGUgbmFtZSBjYW5ub3QgY29udGFpbiAnLic7IHRvIHNlYXJjaCBmb3IgYSBzdWJtb2R1bGUgb2YgYVxuXAotcGFja2FnZSwgcGFzcyB0aGUgc3VibW9kdWxlIG5hbWUgYW5kIHRoZSBwYWNrYWdlJ3MgX19wYXRoX18uIik7Ci0KLVB5RG9jX1NUUlZBUihkb2NfbG9hZF9tb2R1bGUsCi0ibG9hZF9tb2R1bGUobmFtZSwgZmlsZSwgZmlsZW5hbWUsIChzdWZmaXgsIG1vZGUsIHR5cGUpKSAtPiBtb2R1bGVcblwKLUxvYWQgYSBtb2R1bGUsIGdpdmVuIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5IGZpbmRfbW9kdWxlKCkuXG5cCi1UaGUgbW9kdWxlIG5hbWUgbXVzdCBpbmNsdWRlIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSwgaWYgYW55LiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2dldF9tYWdpYywKLSJnZXRfbWFnaWMoKSAtPiBzdHJpbmdcblwKLVJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciAucHljIG9yIC5weW8gZmlsZXMuIik7Ci0KLVB5RG9jX1NUUlZBUihkb2NfZ2V0X3RhZywKLSJnZXRfdGFnKCkgLT4gc3RyaW5nXG5cCi1SZXR1cm4gdGhlIG1hZ2ljIHRhZyBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2dldF9zdWZmaXhlcywKLSJnZXRfc3VmZml4ZXMoKSAtPiBbKHN1ZmZpeCwgbW9kZSwgdHlwZSksIC4uLl1cblwKLVJldHVybiBhIGxpc3Qgb2YgKHN1ZmZpeCwgbW9kZSwgdHlwZSkgdHVwbGVzIGRlc2NyaWJpbmcgdGhlIGZpbGVzXG5cCi10aGF0IGZpbmRfbW9kdWxlKCkgbG9va3MgZm9yLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX25ld19tb2R1bGUsCi0ibmV3X21vZHVsZShuYW1lKSAtPiBtb2R1bGVcblwKLUNyZWF0ZSBhIG5ldyBtb2R1bGUuICBEbyBub3QgZW50ZXIgaXQgaW4gc3lzLm1vZHVsZXMuXG5cCi1UaGUgbW9kdWxlIG5hbWUgbXVzdCBpbmNsdWRlIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSwgaWYgYW55LiIpOworUHlEb2NfU1RSVkFSKGRvY19leHRlbnNpb25fc3VmZml4ZXMsCisiZXh0ZW5zaW9uX3N1ZmZpeGVzKCkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCitSZXR1cm5zIHRoZSBsaXN0IG9mIGZpbGUgc3VmZml4ZXMgdXNlZCB0byBpZGVudGlmeSBleHRlbnNpb24gbW9kdWxlcy4iKTsKIAogUHlEb2NfU1RSVkFSKGRvY19sb2NrX2hlbGQsCiAibG9ja19oZWxkKCkgLT4gYm9vbGVhblxuXApAQCAtMzczNCwxNzkgKzE4MzEsMjggQEAKIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgaW1wX21ldGhvZHNbXSA9IHsKLSAgICB7ImZpbmRfbW9kdWxlIiwgICAgICBpbXBfZmluZF9tb2R1bGUsICBNRVRIX1ZBUkFSR1MsIGRvY19maW5kX21vZHVsZX0sCi0gICAgeyJnZXRfbWFnaWMiLCAgICAgICAgaW1wX2dldF9tYWdpYywgICAgTUVUSF9OT0FSR1MsICBkb2NfZ2V0X21hZ2ljfSwKLSAgICB7ImdldF90YWciLCAgICAgICAgICBpbXBfZ2V0X3RhZywgICAgICBNRVRIX05PQVJHUywgIGRvY19nZXRfdGFnfSwKLSAgICB7ImdldF9zdWZmaXhlcyIsIGltcF9nZXRfc3VmZml4ZXMsIE1FVEhfTk9BUkdTLCAgZG9jX2dldF9zdWZmaXhlc30sCi0gICAgeyJsb2FkX21vZHVsZSIsICAgICAgaW1wX2xvYWRfbW9kdWxlLCAgTUVUSF9WQVJBUkdTLCBkb2NfbG9hZF9tb2R1bGV9LAotICAgIHsibmV3X21vZHVsZSIsICAgICAgIGltcF9uZXdfbW9kdWxlLCAgIE1FVEhfVkFSQVJHUywgZG9jX25ld19tb2R1bGV9LAorICAgIHsiZXh0ZW5zaW9uX3N1ZmZpeGVzIiwgaW1wX2V4dGVuc2lvbl9zdWZmaXhlcywgTUVUSF9OT0FSR1MsCisgICAgICAgIGRvY19leHRlbnNpb25fc3VmZml4ZXN9LAogICAgIHsibG9ja19oZWxkIiwgICAgICAgIGltcF9sb2NrX2hlbGQsICAgIE1FVEhfTk9BUkdTLCAgZG9jX2xvY2tfaGVsZH0sCiAgICAgeyJhY3F1aXJlX2xvY2siLCBpbXBfYWNxdWlyZV9sb2NrLCBNRVRIX05PQVJHUywgIGRvY19hY3F1aXJlX2xvY2t9LAogICAgIHsicmVsZWFzZV9sb2NrIiwgaW1wX3JlbGVhc2VfbG9jaywgTUVUSF9OT0FSR1MsICBkb2NfcmVsZWFzZV9sb2NrfSwKLSAgICB7InJlbG9hZCIsICAgICAgIGltcF9yZWxvYWQsICAgICAgIE1FVEhfTywgICAgICAgZG9jX3JlbG9hZH0sCi0gICAgeyJjYWNoZV9mcm9tX3NvdXJjZSIsIChQeUNGdW5jdGlvbilpbXBfY2FjaGVfZnJvbV9zb3VyY2UsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGRvY19jYWNoZV9mcm9tX3NvdXJjZX0sCi0gICAgeyJzb3VyY2VfZnJvbV9jYWNoZSIsIChQeUNGdW5jdGlvbilpbXBfc291cmNlX2Zyb21fY2FjaGUsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGRvY19zb3VyY2VfZnJvbV9jYWNoZX0sCi0gICAgLyogVGhlIHJlc3QgYXJlIG9ic29sZXRlICovCiAgICAgeyJnZXRfZnJvemVuX29iamVjdCIsICAgICAgIGltcF9nZXRfZnJvemVuX29iamVjdCwgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpc19mcm96ZW5fcGFja2FnZSIsICAgaW1wX2lzX2Zyb3plbl9wYWNrYWdlLCAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImluaXRfYnVpbHRpbiIsICAgICAgICAgICAgaW1wX2luaXRfYnVpbHRpbiwgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImluaXRfZnJvemVuIiwgICAgICAgICAgICAgaW1wX2luaXRfZnJvemVuLCAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImlzX2J1aWx0aW4iLCAgICAgICAgICAgICAgaW1wX2lzX2J1aWx0aW4sICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImlzX2Zyb3plbiIsICAgICAgICAgICAgICAgaW1wX2lzX2Zyb3plbiwgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImxvYWRfY29tcGlsZWQiLCAgICAgICAgICAgaW1wX2xvYWRfY29tcGlsZWQsICAgICAgTUVUSF9WQVJBUkdTfSwKICNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwogICAgIHsibG9hZF9keW5hbWljIiwgICAgICAgICAgICBpbXBfbG9hZF9keW5hbWljLCAgICAgICBNRVRIX1ZBUkFSR1N9LAogI2VuZGlmCi0gICAgeyJsb2FkX3BhY2thZ2UiLCAgICAgICAgICAgIGltcF9sb2FkX3BhY2thZ2UsICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJsb2FkX3NvdXJjZSIsICAgICAgICAgICAgIGltcF9sb2FkX3NvdXJjZSwgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJfZml4X2NvX2ZpbGVuYW1lIiwgICAgICAgIGltcF9maXhfY29fZmlsZW5hbWUsICAgIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAotc3RhdGljIGludAotc2V0aW50KFB5T2JqZWN0ICpkLCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCi17Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgaW50IGVycjsKLQotICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpdmFsdWUpOwotICAgIGVyciA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIG5hbWUsIHYpOwotICAgIFB5X1hERUNSRUYodik7Ci0gICAgcmV0dXJuIGVycjsKLX0KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLX0gTnVsbEltcG9ydGVyOwotCi1zdGF0aWMgaW50Ci1OdWxsSW1wb3J0ZXJfaW5pdChOdWxsSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSNpZm5kZWYgTVNfV0lORE9XUwotICAgIFB5T2JqZWN0ICpwYXRoOwotICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0gICAgaW50IHJ2OwotCi0gICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcygiTnVsbEltcG9ydGVyKCkiLCBrd2RzKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpOdWxsSW1wb3J0ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUocGF0aCkgPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgImVtcHR5IHBhdGhuYW1lIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBydiA9IHN0YXQoUHlCeXRlc19BU19TVFJJTkcocGF0aCksICZzdGF0YnVmKTsKLSAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgaWYgKHJ2ID09IDApIHsKLSAgICAgICAgLyogaXQgZXhpc3RzICovCi0gICAgICAgIGlmIChTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkpIHsKLSAgICAgICAgICAgIC8qIGl0J3MgYSBkaXJlY3RvcnkgKi8KLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgImV4aXN0aW5nIGRpcmVjdG9yeSIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotI2Vsc2UgLyogTVNfV0lORE9XUyAqLwotICAgIFB5T2JqZWN0ICpwYXRob2JqOwotICAgIERXT1JEIHJ2OwotICAgIHdjaGFyX3QgKnBhdGg7Ci0KLSAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKCJOdWxsSW1wb3J0ZXIoKSIsIGt3ZHMpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6TnVsbEltcG9ydGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGhvYmopKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopID09IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCAiZW1wdHkgcGF0aG5hbWUiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHBhdGggPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhwYXRob2JqLCBOVUxMKTsKLSAgICBpZiAocGF0aCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgLyogc2VlIGlzc3VlMTI5MyBhbmQgaXNzdWUzNjc3OgotICAgICAqIHN0YXQoKSBvbiBXaW5kb3dzIGRvZXNuJ3QgcmVjb2duaXNlIHBhdGhzIGxpa2UKLSAgICAgKiAiZTpcXHNoYXJlZFxcIiBhbmQgIlxcXFx3aGl0ZXJhYi1jMnpubGhcXHNoYXJlZCIgYXMgZGlycy4KLSAgICAgKi8KLSAgICBydiA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoKTsKLSAgICBQeU1lbV9GcmVlKHBhdGgpOwotICAgIGlmIChydiAhPSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgewotICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgaWYgKHJ2ICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSB7Ci0gICAgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJleGlzdGluZyBkaXJlY3RvcnkiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotTnVsbEltcG9ydGVyX2ZpbmRfbW9kdWxlKE51bGxJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBOdWxsSW1wb3J0ZXJfbWV0aG9kc1tdID0gewotICAgIHsiZmluZF9tb2R1bGUiLCAoUHlDRnVuY3Rpb24pTnVsbEltcG9ydGVyX2ZpbmRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJBbHdheXMgcmV0dXJuIE5vbmUiCi0gICAgfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi0KLVB5VHlwZU9iamVjdCBQeU51bGxJbXBvcnRlcl9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJpbXAuTnVsbEltcG9ydGVyIiwgICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKE51bGxJbXBvcnRlciksICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgIC8qdHBfZmxhZ3MqLwotICAgICJOdWxsIGltcG9ydGVyIG9iamVjdCIsICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgTnVsbEltcG9ydGVyX21ldGhvZHMsICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpTnVsbEltcG9ydGVyX2luaXQsICAgICAgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgUHlUeXBlX0dlbmVyaWNOZXcgICAgICAgICAgLyogdHBfbmV3ICovCi19OwogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGltcG1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgImltcCIsCisgICAgIl9pbXAiLAogICAgIGRvY19pbXAsCiAgICAgMCwKICAgICBpbXBfbWV0aG9kcywKQEAgLTM5MjEsOSArMTg2Nyw2IEBACiB7CiAgICAgUHlPYmplY3QgKm0sICpkOwogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlOdWxsSW1wb3J0ZXJfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJmltcG1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsdXJlOwpAQCAtMzkzMSwxOSArMTg3NCw2IEBACiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsdXJlOwogCi0gICAgaWYgKHNldGludChkLCAiU0VBUkNIX0VSUk9SIiwgU0VBUkNIX0VSUk9SKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQWV9TT1VSQ0UiLCBQWV9TT1VSQ0UpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX0NPTVBJTEVEIiwgUFlfQ09NUElMRUQpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIkNfRVhURU5TSU9OIiwgQ19FWFRFTlNJT04pIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX1JFU09VUkNFIiwgUFlfUkVTT1VSQ0UpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBLR19ESVJFQ1RPUlkiLCBQS0dfRElSRUNUT1JZKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJDX0JVSUxUSU4iLCBDX0JVSUxUSU4pIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX0ZST1pFTiIsIFBZX0ZST1pFTikgPCAwKSBnb3RvIGZhaWx1cmU7Ci0gICAgaWYgKHNldGludChkLCAiUFlfQ09ERVJFU09VUkNFIiwgUFlfQ09ERVJFU09VUkNFKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJJTVBfSE9PSyIsIElNUF9IT09LKSA8IDApIGdvdG8gZmFpbHVyZTsKLQotICAgIFB5X0lOQ1JFRigmUHlOdWxsSW1wb3J0ZXJfVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJOdWxsSW1wb3J0ZXIiLCAoUHlPYmplY3QgKikmUHlOdWxsSW1wb3J0ZXJfVHlwZSk7CiAgICAgcmV0dXJuIG07CiAgIGZhaWx1cmU6CiAgICAgUHlfWERFQ1JFRihtKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5jIGIvUHl0aG9uL2ltcG9ydGRsLmMKaW5kZXggOWNhZWQ0NS4uOTQyZTRiOCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmMKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmMKQEAgLTEyLDUwICsxMiw3MyBAQAogCiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIAotZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorI2lmZGVmIE1TX1dJTkRPV1MKK2V4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkV2luZG93cyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGhuYW1lLCBGSUxFICpmcCk7CisjZWxzZQorZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApOwotCi0KKyNlbmRpZgogCiBQeU9iamVjdCAqCi1fUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCwgRklMRSAqZnApCiB7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgUHlPYmplY3QgKnBhdGg7Ci0gICAgY2hhciAqbGFzdGRvdCwgKnNob3J0bmFtZSwgKnBhY2thZ2Vjb250ZXh0LCAqb2xkY29udGV4dDsKKyAgICBQeU9iamVjdCAqbSA9IE5VTEw7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqcGF0aGJ5dGVzOworI2VuZGlmCisgICAgUHlPYmplY3QgKm5hbWVhc2NpaTsKKyAgICBjaGFyICpuYW1lc3RyLCAqbGFzdGRvdCwgKnNob3J0bmFtZSwgKnBhY2thZ2Vjb250ZXh0LCAqb2xkY29udGV4dDsKICAgICBkbF9mdW5jcHRyIHAwOwogICAgIFB5T2JqZWN0KiAoKnApKHZvaWQpOwogICAgIHN0cnVjdCBQeU1vZHVsZURlZiAqZGVmOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBwYXRoID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICBtID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgcGF0aCk7CisgICAgaWYgKG0gIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYobSk7CisgICAgICAgIHJldHVybiBtOworICAgIH0KKworICAgIC8qIG5hbWUgbXVzdCBiZSBlbmNvZGFibGUgdG8gQVNDSUkgYmVjYXVzZSBkeW5hbWljIG1vZHVsZSBtdXN0IGhhdmUgYQorICAgICAgIGZ1bmN0aW9uIGNhbGxlZCAiUHlJbml0X05BTUUiLCB0aGV5IGFyZSB3cml0dGVuIGluIEMsIGFuZCB0aGUgQyBsYW5ndWFnZQorICAgICAgIGRvZXNuJ3QgYWNjZXB0IG5vbi1BU0NJSSBpZGVudGlmaWVycy4gKi8KKyAgICBuYW1lYXNjaWkgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG5hbWUsICJhc2NpaSIsIE5VTEwpOworICAgIGlmIChuYW1lYXNjaWkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoKG0gPSBfUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUobmFtZSwgcGF0aCkpICE9IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKG0pOwotICAgICAgICByZXN1bHQgPSBtOwotICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIGxhc3Rkb3QgPSBzdHJyY2hyKG5hbWUsICcuJyk7CisgICAgbmFtZXN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWVhc2NpaSk7CisgICAgaWYgKG5hbWVzdHIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGxhc3Rkb3QgPSBzdHJyY2hyKG5hbWVzdHIsICcuJyk7CiAgICAgaWYgKGxhc3Rkb3QgPT0gTlVMTCkgewogICAgICAgICBwYWNrYWdlY29udGV4dCA9IE5VTEw7Ci0gICAgICAgIHNob3J0bmFtZSA9IG5hbWU7CisgICAgICAgIHNob3J0bmFtZSA9IG5hbWVzdHI7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBwYWNrYWdlY29udGV4dCA9IG5hbWU7CisgICAgICAgIHBhY2thZ2Vjb250ZXh0ID0gbmFtZXN0cjsKICAgICAgICAgc2hvcnRuYW1lID0gbGFzdGRvdCsxOwogICAgIH0KIAotICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKG5hbWUsIHNob3J0bmFtZSwgcGF0aG5hbWUsIGZwKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcDAgPSBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3Moc2hvcnRuYW1lLCBwYXRoLCBmcCk7CisjZWxzZQorICAgIHBhdGhieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7CisgICAgaWYgKHBhdGhieXRlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKHNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhwYXRoYnl0ZXMpLCBmcCk7CisgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisjZW5kaWYKICAgICBwID0gKFB5T2JqZWN0KigqKSh2b2lkKSlwMDsKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgImR5bmFtaWMgbW9kdWxlIGRvZXMgbm90IGRlZmluZSBpbml0IGZ1bmN0aW9uIChQeUluaXRfJS4yMDBzKSIsCi0gICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOworICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImR5bmFtaWMgbW9kdWxlIGRvZXMgbm90IGRlZmluZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5pdCBmdW5jdGlvbiAoUHlJbml0XyVzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOworICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihtc2csIG5hbWUsIHBhdGgpOworICAgICAgICBQeV9ERUNSRUYobXNnKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgb2xkY29udGV4dCA9IF9QeV9QYWNrYWdlQ29udGV4dDsKQEAgLTY2LDcgKzg5LDYgQEAKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICVzIHJhaXNlZCB1bnJlcG9ydGVkIGV4Y2VwdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOwpAQCAtODMsMjAgKzEwNSwxNSBAQAogICAgIGVsc2UKICAgICAgICAgUHlfSU5DUkVGKHBhdGgpOwogCi0gICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUobSwgbmFtZSwgcGF0aCkgPCAwKQorICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobSwgbmFtZSwgcGF0aCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAiaW1wb3J0ICVzICMgZHluYW1pY2FsbHkgbG9hZGVkIGZyb20gJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBwYXRobmFtZSk7Ci0gICAgcmVzdWx0ID0gbTsKLSAgICBnb3RvIGZpbmFsbHk7CisgICAgUHlfREVDUkVGKG5hbWVhc2NpaSk7CisgICAgcmV0dXJuIG07CiAKIGVycm9yOgotICAgIHJlc3VsdCA9IE5VTEw7Ci1maW5hbGx5OgotICAgIFB5X0RFQ1JFRihwYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIFB5X0RFQ1JFRihuYW1lYXNjaWkpOworICAgIFB5X1hERUNSRUYobSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbmRpZiAvKiBIQVZFX0RZTkFNSUNfTE9BRElORyAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmggYi9QeXRob24vaW1wb3J0ZGwuaAppbmRleCBiNGQyMWJlLi42YjljZjc1IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuaAorKysgYi9QeXRob24vaW1wb3J0ZGwuaApAQCAtNiwyOSArNiw5IEBACiAjZW5kaWYKIAogCi0vKiBEZWZpbml0aW9ucyBmb3IgZHluYW1pYyBsb2FkaW5nIG9mIGV4dGVuc2lvbiBtb2R1bGVzICovCi1lbnVtIGZpbGV0eXBlIHsKLSAgICBTRUFSQ0hfRVJST1IsCi0gICAgUFlfU09VUkNFLAotICAgIFBZX0NPTVBJTEVELAotICAgIENfRVhURU5TSU9OLAotICAgIFBZX1JFU09VUkNFLCAvKiBNYWMgb25seSAqLwotICAgIFBLR19ESVJFQ1RPUlksCi0gICAgQ19CVUlMVElOLAotICAgIFBZX0ZST1pFTiwKLSAgICBQWV9DT0RFUkVTT1VSQ0UsIC8qIE1hYyBvbmx5ICovCi0gICAgSU1QX0hPT0sKLX07CitleHRlcm4gY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW107CiAKLXN0cnVjdCBmaWxlZGVzY3IgewotICAgIGNoYXIgKnN1ZmZpeDsKLSAgICBjaGFyICptb2RlOwotICAgIGVudW0gZmlsZXR5cGUgdHlwZTsKLX07Ci1leHRlcm4gc3RydWN0IGZpbGVkZXNjciAqIF9QeUltcG9ydF9GaWxldGFiOwotZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW107Ci0KLWV4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLAorZXh0ZXJuIFB5T2JqZWN0ICpfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRobmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKik7CiAKIC8qIE1heCBsZW5ndGggb2YgbW9kdWxlIHN1ZmZpeCBzZWFyY2hlZCBmb3IgLS0gYWNjb21tb2RhdGVzICJtb2R1bGUuc2xiIiAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYi5oIGIvUHl0aG9uL2ltcG9ydGxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZTAxM2MKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vaW1wb3J0bGliLmgKQEAgLTAsMCArMSw0Mzg1IEBACisvKiBBdXRvLWdlbmVyYXRlZCBieSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMgKi8KK3Vuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYltdID0geworICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDYsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDIwNiwzLDAsMCwxMDAsMCwwLDkwLDAsMCwKKyAgICAxMDAsMTI5LDAsOTAsMSwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAorICAgIDIsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCwzLDAsMTAwLDgsCisgICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLAorICAgIDEzMiwwLDAsOTAsNSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsCisgICAgNiwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxNiwKKyAgICAwLDEwMCwxNywwLDEzMiwwLDAsOTAsOCwwLDEwMCwxOCwwLDEwMCwxOSwwLAorICAgIDEzMiwwLDAsOTAsOSwwLDEwMCwyMCwwLDEwMCwyMSwwLDEwMCwyMiwwLDEzMiwKKyAgICAxLDAsOTAsMTAsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMzIsMCwwLDkwLDExLAorICAgIDAsMTAxLDEyLDAsMTAxLDExLDAsMTA2LDEzLDAsMTMxLDEsMCw5MCwxNCwwLAorICAgIDEwMCwyNSwwLDEwMCwyNiwwLDEzMiwwLDAsOTAsMTUsMCwxMDUsMCwwLDkwLAorICAgIDE2LDAsMTA1LDAsMCw5MCwxNywwLDcxLDEwMCwyNywwLDEwMCwyOCwwLDEzMiwKKyAgICAwLDAsMTAwLDI4LDAsMTAxLDE4LDAsMTMxLDMsMCw5MCwxOSwwLDcxLDEwMCwKKyAgICAyOSwwLDEwMCwzMCwwLDEzMiwwLDAsMTAwLDMwLDAsMTMxLDIsMCw5MCwyMCwKKyAgICAwLDcxLDEwMCwzMSwwLDEwMCwzMiwwLDEzMiwwLDAsMTAwLDMyLDAsMTMxLDIsCisgICAgMCw5MCwyMSwwLDEwMCwzMywwLDEwMCwzNCwwLDEzMiwwLDAsOTAsMjIsMCwKKyAgICAxMDAsMzUsMCwxMDAsMzYsMCwxMzIsMCwwLDkwLDIzLDAsMTAwLDM3LDAsMTAwLAorICAgIDM4LDAsMTMyLDAsMCw5MCwyNCwwLDEwMCwzOSwwLDEwMSwyNSwwLDEwMCw0MCwKKyAgICAwLDEzMSwxLDAsMTAwLDQxLDAsNjIsNjYsMTAxLDI1LDAsMTAwLDQyLDAsMTMxLAorICAgIDEsMCwxMDAsNDMsMCw2Miw2Niw5MCwyNiwwLDEwMSwyNywwLDEwMCw0NCwwLAorICAgIDEwMCw0NSwwLDEzMiwwLDAsMTAxLDI4LDAsMTAwLDQ2LDAsMTAwLDQ3LDAsMTAwLAorICAgIDQ4LDAsMTMxLDMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsOTAsMjksMCwxMDAsCisgICAgNDksMCw5MCwzMCwwLDEwMCw1MCwwLDEwMywxLDAsOTAsMzEsMCwxMDAsNTEsCisgICAgMCwxMDMsMSwwLDkwLDMyLDAsMTAwLDUyLDAsMTAzLDEsMCw5MCwzMywwLAorICAgIDEwMSwzMiwwLDkwLDM0LDAsMTAwLDEyOCwwLDEwMCw1MywwLDEwMCw1NCwwLDEzMiwKKyAgICAxLDAsOTAsMzYsMCwxMDAsNTUsMCwxMDAsNTYsMCwxMzIsMCwwLDkwLDM3LAorICAgIDAsMTAwLDU3LDAsMTAwLDU4LDAsMTMyLDAsMCw5MCwzOCwwLDEwMCw1OSwwLAorICAgIDEwMCw2MCwwLDEzMiwwLDAsOTAsMzksMCwxMDAsNjEsMCwxMDAsNjIsMCwxMzIsCisgICAgMCwwLDkwLDQwLDAsMTAwLDYzLDAsMTAwLDY0LDAsMTMyLDAsMCw5MCw0MSwKKyAgICAwLDEwMCw2NSwwLDEwMCw2NiwwLDEzMiwwLDAsOTAsNDIsMCwxMDAsNjcsMCwKKyAgICAxMDAsNjgsMCwxMzIsMCwwLDkwLDQzLDAsMTAwLDY5LDAsMTAwLDcwLDAsMTMyLAorICAgIDAsMCw5MCw0NCwwLDEwMCw3MSwwLDEwMCw3MiwwLDEzMiwwLDAsOTAsNDUsCisgICAgMCwxMDAsNzMsMCwxMDAsNzQsMCwxMzIsMCwwLDkwLDQ2LDAsNzEsMTAwLDc1LAorICAgIDAsMTAwLDc2LDAsMTMyLDAsMCwxMDAsNzYsMCwxMzEsMiwwLDkwLDQ3LDAsCisgICAgNzEsMTAwLDc3LDAsMTAwLDc4LDAsMTMyLDAsMCwxMDAsNzgsMCwxMzEsMiwwLAorICAgIDkwLDQ4LDAsNzEsMTAwLDc5LDAsMTAwLDgwLDAsMTMyLDAsMCwxMDAsODAsMCwKKyAgICAxMzEsMiwwLDkwLDQ5LDAsNzEsMTAwLDgxLDAsMTAwLDgyLDAsMTMyLDAsMCwKKyAgICAxMDAsODIsMCwxMzEsMiwwLDkwLDUwLDAsNzEsMTAwLDgzLDAsMTAwLDg0LDAsCisgICAgMTMyLDAsMCwxMDAsODQsMCwxMDEsNTAsMCwxMzEsMywwLDkwLDUxLDAsNzEsCisgICAgMTAwLDg1LDAsMTAwLDg2LDAsMTMyLDAsMCwxMDAsODYsMCwxMzEsMiwwLDkwLAorICAgIDUyLDAsNzEsMTAwLDg3LDAsMTAwLDg4LDAsMTMyLDAsMCwxMDAsODgsMCwxMDEsCisgICAgNTIsMCwxMDEsNTEsMCwxMzEsNCwwLDkwLDUzLDAsNzEsMTAwLDg5LDAsMTAwLAorICAgIDkwLDAsMTMyLDAsMCwxMDAsOTAsMCwxMDEsNTIsMCwxMDEsNTAsMCwxMzEsNCwKKyAgICAwLDkwLDU0LDAsMTAzLDAsMCw5MCw1NSwwLDcxLDEwMCw5MSwwLDEwMCw5MiwKKyAgICAwLDEzMiwwLDAsMTAwLDkyLDAsMTMxLDIsMCw5MCw1NiwwLDcxLDEwMCw5MywKKyAgICAwLDEwMCw5NCwwLDEzMiwwLDAsMTAwLDk0LDAsMTMxLDIsMCw5MCw1NywwLAorICAgIDcxLDEwMCw5NSwwLDEwMCw5NiwwLDEzMiwwLDAsMTAwLDk2LDAsMTMxLDIsMCwKKyAgICA5MCw1OCwwLDcxLDEwMCw5NywwLDEwMCw5OCwwLDEzMiwwLDAsMTAwLDk4LDAsCisgICAgMTMxLDIsMCw5MCw1OSwwLDcxLDEwMCw5OSwwLDEwMCwxMDAsMCwxMzIsMCwwLAorICAgIDEwMCwxMDAsMCwxMzEsMiwwLDkwLDYwLDAsNzEsMTAwLDEwMSwwLDEwMCwxMDIsMCwKKyAgICAxMzIsMCwwLDEwMCwxMDIsMCwxMzEsMiwwLDkwLDYxLDAsMTAwLDEwMywwLDEwMCwKKyAgICAxMDQsMCwxMzIsMCwwLDkwLDYyLDAsMTAwLDEwNSwwLDEwMCwxMDYsMCwxMzIsMCwKKyAgICAwLDkwLDYzLDAsMTAwLDEwNywwLDEwMCwxMDgsMCwxMzIsMCwwLDkwLDY0LDAsCisgICAgMTAwLDEwOSwwLDkwLDY1LDAsMTAwLDExMCwwLDEwMCwxMTEsMCwxMzIsMCwwLDkwLAorICAgIDY2LDAsMTAwLDExMiwwLDEwMCwxMTMsMCwxMzIsMCwwLDkwLDY3LDAsMTAwLDEyOCwKKyAgICAwLDEwMCw0NiwwLDEwMCwxMTQsMCwxMDAsMTE1LDAsMTMyLDIsMCw5MCw2OCwwLAorICAgIDEwMCwxMTYsMCwxMDAsMTE3LDAsMTMyLDAsMCw5MCw2OSwwLDEwMCwxMTgsMCwxMDAsCisgICAgMTE5LDAsMTMyLDAsMCw5MCw3MCwwLDEwMCwxMjAsMCwxMDAsMTIxLDAsMTMyLDAsCisgICAgMCw5MCw3MSwwLDEwMCwxMjgsMCwxMDAsMTI4LDAsMTAyLDAsMCwxMDAsNDYsMCwKKyAgICAxMDAsMTIyLDAsMTAwLDEyMywwLDEzMiw0LDAsOTAsNzIsMCwxMDAsMTI0LDAsMTAwLAorICAgIDEyNSwwLDEzMiwwLDAsOTAsNzMsMCwxMDAsMTI2LDAsMTAwLDEyNywwLDEzMiwwLAorICAgIDAsOTAsNzQsMCwxMDAsMTI4LDAsODMsNDAsMTMwLDAsMCwwLDExNyw4MywxLAorICAgIDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwKKyAgICAxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LAorICAgIDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwKKyAgICAzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwKKyAgICAxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsCisgICAgOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLAorICAgIDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsCisgICAgMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LAorICAgIDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LAorICAgIDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLAorICAgIDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsCisgICAgMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwKKyAgICAxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNywKKyAgICA5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsCisgICAgMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDYsMTAsMTAsMTE3LDMsMCwwLDAsMTE5LDEwNSwxMTAsMTE3LDYsMCwKKyAgICAwLDAsOTksMTIxLDEwMywxMTksMTA1LDExMCwxMTcsNiwwLDAsMCwxMDAsOTcsMTE0LAorICAgIDExOSwxMDUsMTEwLDk5LDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDQ5LDAsMCwwLDExNiwwLDAsCisgICAgMTA2LDEsMCwxMDYsMiwwLDExNiwzLDAsMTMxLDEsMCwxMTQsMzMsMCwxMDAsCisgICAgMSwwLDEwMCwyLDAsMTMyLDAsMCwxMjUsMCwwLDExMCwxMiwwLDEwMCwzLAorICAgIDAsMTAwLDIsMCwxMzIsMCwwLDEyNSwwLDAsMTI0LDAsMCw4Myw0MCw0LAorICAgIDAsMCwwLDc4LDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsODMsMCwwLDAsMTE1LDEzLDAsMCwwLDEwMCwxLAorICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw2LDAsODMsNDAsMiwwLDAsMCwKKyAgICAxMTcsNTMsMCwwLDAsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksCisgICAgMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwKKyAgICAxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSw0NiwxMTUsMTIsMCwwLDAsODAsCisgICAgODksODQsNzIsNzksNzgsNjcsNjUsODMsNjksNzksNzUsNDAsMiwwLDAsMCwKKyAgICAxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw3LDAsMCwwLDEwMSwxMTAsMTE4LAorICAgIDEwNSwxMTQsMTExLDExMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsNDAsMCwKKyAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDExNCwxMDEsMTA4LDk3LDEyMCwKKyAgICA5NSw5OSw5NywxMTUsMTAxLDM0LDAsMCwwLDExNSwyLDAsMCwwLDAsMiwKKyAgICAxMTcsMzcsMCwwLDAsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLAorICAgIDk1LDk5LDk3LDExNSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LAorICAgIDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsODMsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw1MywwLAorICAgIDAsMCw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLDk5LAorICAgIDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsMTA1LAorICAgIDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDcwLDQwLDEsMCwwLDAsMTE3LDUsMCwKKyAgICAwLDAsNzAsOTcsMTA4LDExNSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMTQsMTAxLAorICAgIDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwzOCwwLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDIsNDAsNCwwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwKKyAgICAxMTcsOCwwLDAsMCwxMTIsMTA4LDk3LDExNiwxMDIsMTExLDExNCwxMDksMTE3LDEwLDAsCisgICAgMCwwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDExNywyNywwLDAsCisgICAgMCw5NSw2Nyw2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3MywKKyAgICA4Niw2OSw5NSw4MCw3Niw2NSw4NCw3MCw3OSw4Miw3Nyw4Myw0MCwxLDAsMCwKKyAgICAwLDExNywxMSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LAorICAgIDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNiwwLAorICAgIDAsMCw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsCisgICAgMTE1LDEwMSwzMiwwLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTgsMSwxNSwKKyAgICA0LDEyLDMsMTE3LDE2LDAsMCwwLDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsCisgICAgMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwOCwwLAorICAgIDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMCwwLDEwMywwLAorICAgIDAsMTI1LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCwxMDAsMSwwLAorICAgIDY0LDEzMSwxLDAsMSwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCwxMDAsMiwKKyAgICAwLDYzLDEwMCwxLDAsNjQsMTMxLDEsMCwxLDEyNCwxLDAsMTA2LDEsMCwKKyAgICAxMjQsMCwwLDEwMCwzLDAsNjMsMTAwLDEsMCw2NCwxMzEsMSwwLDEsMTI0LAorICAgIDEsMCwxMDYsMSwwLDEyNCwwLDAsMTAwLDQsMCw2MywxMDAsMSwwLDY0LAorICAgIDEzMSwxLDAsMSwxMTYsMiwwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MCw1LAorICAgIDAsMCwwLDExNywxMTEsMCwwLDAsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsCisgICAgOTcsMzIsNTEsNTAsNDUsOTgsMTA1LDExNiwzMiwxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsCisgICAgMzIsMTE2LDExMSwzMiwxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsCisgICAgMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg4LDg4LDg4LDMyLDg0LDEwMSwxMDksMTEyLAorICAgIDExMSwxMTQsOTcsMTE0LDEyMSwzMiwxMTcsMTEwLDExNiwxMDUsMTA4LDMyLDEwOSw5NywxMTQsMTE1LAorICAgIDEwNCw5NywxMDgsMzksMTE1LDMyLDEwOCwxMTEsMTEwLDEwMywzMiwxMDIsMTE3LDExMCw5OSwxMTYsCisgICAgMTA1LDExMSwxMTAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEyMCwxMTIsMTExLDExNSwxMDEsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDEwNSwyNTUsMCwwLDAsMTA1LDgsMCwwLAorICAgIDAsMTA1LDE2LDAsMCwwLDEwNSwyNCwwLDAsMCw0MCwzLDAsMCwwLAorICAgIDExNywzLDAsMCwwLDEwNSwxMTAsMTE2LDExNyw2LDAsMCwwLDk3LDExMiwxMTIsCisgICAgMTAxLDExMCwxMDAsMTE3LDksMCwwLDAsOTgsMTIxLDExNiwxMDEsOTcsMTE0LDExNCw5NywKKyAgICAxMjEsNDAsMiwwLDAsMCwxMTcsMSwwLDAsMCwxMjAsMTE3LDksMCwwLAorICAgIDAsMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsMCwwLDAsOTUsMTE5LDk1LDEwOCwxMTEsCisgICAgMTEwLDEwMyw0NSwwLDAsMCwxMTUsMTQsMCwwLDAsMCw2LDEyLDEsNiwKKyAgICAxLDE3LDEsMjEsMSwyMSwxLDIxLDEsMTE3LDcsMCwwLDAsOTUsMTE5LAorICAgIDk1LDEwOCwxMTEsMTEwLDEwMyw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw2OCwwLDAsMCwxMjQsCisgICAgMCwwLDEwMCwxLDAsMjUsMTI1LDEsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLAorICAgIDIsMCwyNSwxMDAsMywwLDYyLDc5LDEyNSwxLDAsMTI0LDEsMCwxMjQsMCwKKyAgICAwLDEwMCw0LDAsMjUsMTAwLDUsMCw2Miw3OSwxMjUsMSwwLDEyNCwxLDAsCisgICAgMTI0LDAsMCwxMDAsNiwwLDI1LDEwMCw3LDAsNjIsNzksMTI1LDEsMCwxMjQsCisgICAgMSwwLDgzLDQwLDgsMCwwLDAsMTE3LDExNSwwLDAsMCw2NywxMTEsMTEwLAorICAgIDExOCwxMDEsMTE0LDExNiwzMiw1MiwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwKKyAgICAxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDMyLDExNiwxMTEsCisgICAgMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw4OCw4OCw4OCwzMiw4NCwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMjEsMzIsCisgICAgMTE3LDExMCwxMTYsMTA1LDEwOCwzMiwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDM5LDExNSwzMiwKKyAgICAxMDgsMTExLDExMCwxMDMsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDk3LDExNCwKKyAgICAxMDEsMzIsMTAxLDEyMCwxMTIsMTExLDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDEwNSwwLDAsMCwwLDEwNSwxLDAsMCwwLDEwNSw4LDAsMCwwLDEwNSwKKyAgICAyLDAsMCwwLDEwNSwxNiwwLDAsMCwxMDUsMywwLDAsMCwxMDUsMjQsCisgICAgMCwwLDAsNDAsMCwwLDAsMCw0MCwyLDAsMCwwLDExNyw5LDAsCisgICAgMCwwLDEwNSwxMTAsMTE2LDk1LDk4LDEyMSwxMTYsMTAxLDExNSwxMTcsMSwwLDAsMCwKKyAgICAxMjAsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsNywwLAorICAgIDAsMCw5NSwxMTQsOTUsMTA4LDExMSwxMTAsMTAzLDYxLDAsMCwwLDExNSwxMCwwLAorICAgIDAsMCwwLDYsMTAsMSwxOCwxLDE4LDEsMTgsMSwxMTcsNywwLDAsCisgICAgMCw5NSwxMTQsOTUsMTA4LDExMSwxMTAsMTAzLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwzLDAsMCwwLDQsMCwwLDAsNzEsMCwwLDAsMTE1LDEwMywwLAorICAgIDAsMCwxMDMsMCwwLDEyNSwxLDAsMTIwLDcxLDAsMTI0LDAsMCw2OCw5MywKKyAgICA2MywwLDEyNSwyLDAsMTI0LDIsMCwxMTUsMzEsMCwxMTMsMTMsMCwxMTAsMCwKKyAgICAwLDEyNCwxLDAsMTA2LDAsMCwxMjQsMiwwLDEzMSwxLDAsMSwxMjQsMiwKKyAgICAwLDEwMCw0LDAsMjUsMTE2LDEsMCwxMDcsNywwLDExNCwxMywwLDEyNCwxLAorICAgIDAsMTA2LDAsMCwxMTYsMiwwLDEzMSwxLDAsMSwxMTMsMTMsMCwxMTMsMTMsCisgICAgMCw4NywxMDAsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMDAsMywwLDEwMCw1LAorICAgIDAsMTMzLDIsMCwyNSwxMzEsMSwwLDgzLDQwLDYsMCwwLDAsMTE3LDMxLAorICAgIDAsMCwwLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDYsMTExLDEwNSwxMTAsNDAsCisgICAgNDEsNDYsMTA1LDEsMCwwLDAsMTE3LDAsMCwwLDAsNzgsMTA1LDI1NSwyNTUsCisgICAgMjU1LDI1NSwxMDUsMjU1LDI1NSwyNTUsMjU1LDQwLDQsMCwwLDAsMTE3LDYsMCwwLAorICAgIDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxMTcsMTUsMCwwLDAsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSwxMTcsOCwwLDAsMCwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiwxMTcsNCwwLDAsMCwxMDYsMTExLDEwNSwKKyAgICAxMTAsNDAsMywwLDAsMCwxMTcsMTAsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTEyLDk3LDExNCwxMTYsMTE1LDExNyw5LDAsMCwwLDExMCwxMDEsMTE5LDk1LDExMiw5NywKKyAgICAxMTQsMTE2LDExNSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE0LDExNiw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNzQsMCwwLDAsMTE1LDE2LDAsMCwwLAorICAgIDAsMiw2LDEsMTMsMSw2LDEsNiwxLDEzLDEsMTYsMSwyMCwxLAorICAgIDExNywxMCwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsODUsMCwwLDAsMTIwLDQ4LDAsMTE2LDAsMCwxMjQsCisgICAgMCwwLDEzMSwxLDAsNjgsOTMsMjgsMCwxMjUsMSwwLDEyNCwxLDAsMTE2LAorICAgIDEsMCwxMDcsNiwwLDExNCwxMywwLDEyNCwxLDAsMTI1LDIsMCw4MCwxMTMsCisgICAgMTMsMCwxMTMsMTMsMCw4NywxMTYsMiwwLDEyNSwyLDAsMTI0LDAsMCwxMDYsCisgICAgMywwLDEyNCwyLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDMsMCwxMjUsNCwKKyAgICAwLDEyNSw1LDAsMTI0LDMsMCwxMjQsNSwwLDEwMiwyLDAsODMsNDAsMSwKKyAgICAwLDAsMCwxMTcsMzIsMCwwLDAsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LAorICAgIDExNSwxMTIsMTA4LDEwNSwxMTYsNDAsNDEsNDYsNDAsNCwwLDAsMCwxMTcsOCwwLAorICAgIDAsMCwxMTQsMTAxLDExOCwxMDEsMTE0LDExNSwxMDEsMTAwLDExNywxNSwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDExNyw4LAorICAgIDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDExNywxMCwwLDAsMCwKKyAgICAxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MCw2LDAsMCwwLDExNywKKyAgICA0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNywxLDAsMCwwLDEyMCwxMTcsMywKKyAgICAwLDAsMCwxMTUsMTAxLDExMiwxMTcsNSwwLDAsMCwxMDIsMTE0LDExMSwxMTAsMTE2LAorICAgIDExNywxLDAsMCwwLDk1LDExNyw0LDAsMCwwLDExNiw5NywxMDUsMTA4LDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsODYsMCwwLDAsMTE1LAorICAgIDE0LDAsMCwwLDAsMiwxOSwxLDEyLDEsNiwxLDgsMiw2LDEsCisgICAgMjQsMSwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsCisgICAgMTA1LDExNiw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNjEsMCwwLDAsMTIxLDE5LDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwKKyAgICAyMiwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNDMsMCwxLDEsMSwxMDAsCisgICAgMiwwLDgzLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMDYsNCwwLDEwMCwxLAorICAgIDAsNjQsMTI0LDEsMCwxMDcsMiwwLDgzLDQwLDMsMCwwLDAsMTE3LDQ5LAorICAgIDAsMCwwLDg0LDEwMSwxMTUsMTE2LDMyLDExOSwxMDQsMTAxLDExNiwxMDQsMTAxLDExNCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTAxLDMyLDExNiwKKyAgICAxMjEsMTEyLDEwMSw0NiwxMDUsMCwyNDAsMCwwLDcwLDQwLDUsMCwwLDAsMTE3LAorICAgIDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNCwwLDAsMCwxMTUsMTE2LDk3LDExNiwKKyAgICAxMTcsNywwLDAsMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDUsMCwwLAorICAgIDAsNzAsOTcsMTA4LDExNSwxMDEsMTE3LDcsMCwwLDAsMTE1LDExNiw5NSwxMDksMTExLAorICAgIDEwMCwxMDEsNDAsMywwLDAsMCwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTcsNCwwLDAsMCwxMDksMTExLDEwMCwxMDEsMTE3LDksMCwwLDAsMTE1LDExNiwKKyAgICA5NywxMTYsOTUsMTA1LDExMCwxMDIsMTExLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDE4LDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsCisgICAgOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSw5OCwwLDAsMCwxMTUsMTAsCisgICAgMCwwLDAsMCwyLDMsMSwxOSwxLDEzLDEsOSwxLDExNywxOCwwLAorICAgIDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwKKyAgICAxMTYsMTIxLDExMiwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LDAsCisgICAgMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MCwyLDAsMCwwLAorICAgIDExNywzMSwwLDAsMCw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDIsCisgICAgMTA1LDEwOCwxMDEsNDYsMTA1LDAsMTI4LDAsMCw0MCwxLDAsMCwwLDExNywxOCwKKyAgICAwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSwKKyAgICA5NSwxMTYsMTIxLDExMiwxMDEsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICAxMiwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMDgsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywxMiwwLDAsMCwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwzNCwwLDAsMCwxMjQsMCwwLDExNSwyMSwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMzEsMCwwLDEyNSwwLDAsMTEwLDAsMCwxMTYsMiwwLDEyNCwwLAorICAgIDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQwLDIsMCwwLDAsMTE3LDMwLDAsCisgICAgMCwwLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMCwxMDUsMTE0LDQ2LAorICAgIDEwNSwwLDY0LDAsMCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDk1LAorICAgIDExMSwxMTUsMTE3LDYsMCwwLDAsMTAzLDEwMSwxMTYsOTksMTE5LDEwMCwxMTcsMTgsMCwKKyAgICAwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsCisgICAgMTE2LDEyMSwxMTIsMTAxLDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsCisgICAgMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCwxMTQsMCwKKyAgICAwLDAsMTE1LDYsMCwwLDAsMCwyLDYsMSwxNSwxLDExNywxMSwwLAorICAgIDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDEwNSwxODIsMSwKKyAgICAwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTcsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE5MiwwLDAsMCwxMDAsMSwwLDEwNiwKKyAgICAwLDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMiwKKyAgICAwLDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLDAsMTE2LDIsMCwKKyAgICAxMDYsNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsMiwwLDEwNiw2LDAsCisgICAgNjYsMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsMTI1LDQsMCwxMjEsNjAsCisgICAgMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsMywwLDEzMSwyLDAsCisgICAgMTQzLDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LDAsMTI0LDEsMCwxMzEsCisgICAgMSwwLDEsODcsMTAwLDQsMCw4MSw4OCwxMTYsMiwwLDEwNiwxMCwwLDEyNCwKKyAgICAzLDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLDU5LDAsNCwxMTYsMTEsCisgICAgMCwxMDcsMTAsMCwxMTQsMTg3LDAsMSwxLDEsMTIxLDE3LDAsMTE2LDIsMCwKKyAgICAxMDYsMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywxMTAsMTgsMCw0LDExNiwKKyAgICAxMSwwLDEwNywxMCwwLDExNCwxNzksMCwxLDEsMSw4OSwxMTAsMSwwLDg4LAorICAgIDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLDgzLDQwLDUsMCwwLAorICAgIDAsMTE3LDE2MiwwLDAsMCw2NiwxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LAorICAgIDExNiwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LAorICAgIDEwNSwxMTYsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiw5NywxMTYsMTExLDEwOSwxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsCisgICAgMzIsMzIsMzIsNjYsMTAxLDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsCisgICAgMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksCisgICAgMTIwLDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsCisgICAgMTEwLDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwKKyAgICAxMTEsMTE0LDk3LDExNCwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LAorICAgIDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCw0NiwxMTcsNSwwLDAsMCwxMjMsMTI1LDQ2LAorICAgIDEyMywxMjUsMTA1LDE4MiwxLDAsMCwxMTcsMiwwLDAsMCwxMTksOTgsNzgsNDAsCisgICAgMTMsMCwwLDAsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsCisgICAgMiwwLDAsMCwxMDUsMTAwLDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsCisgICAgMCwwLDAsMTExLDExMiwxMDEsMTEwLDExNyw2LDAsMCwwLDc5LDk1LDY5LDg4LAorICAgIDY3LDc2LDExNyw3LDAsMCwwLDc5LDk1LDY3LDgyLDY5LDY1LDg0LDExNyw4LAorICAgIDAsMCwwLDc5LDk1LDg3LDgyLDc5LDc4LDc2LDg5LDExNywzLDAsMCwwLAorICAgIDk1LDEwNSwxMTEsMTE3LDYsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzMsNzksMTE3LDUsCisgICAgMCwwLDAsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTcsNywwLDAsMCwxMTQsMTAxLDExMiwKKyAgICAxMDgsOTcsOTksMTAxLDExNyw3LDAsMCwwLDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTcsNiwwLDAsMCwxMTcsMTEwLDEwOCwxMDUsMTEwLDEwNyw0MCw2LDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMCw5NywKKyAgICAxMTYsOTcsMTE3LDQsMCwwLDAsMTA5LDExMSwxMDAsMTAxLDExNyw4LDAsMCwwLAorICAgIDExMiw5NywxMTYsMTA0LDk1LDExNiwxMDksMTEyLDExNywyLDAsMCwwLDEwMiwxMDAsMTE3LAorICAgIDQsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDEzLDAsMCwwLDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsCisgICAgOTcsMTE2LDExMSwxMDksMTA1LDk5LDEyMSwwLDAsMCwxMTUsMjYsMCwwLDAsMCwKKyAgICA1LDI0LDEsOSwxLDMzLDEsMywzLDIxLDEsMTksMSwyMCwxLDEzLAorICAgIDEsMywxLDE3LDEsMTMsMSw1LDEsMTE3LDEzLDAsMCwwLDk1LDExOSwKKyAgICAxMTQsMTA1LDExNiwxMDEsOTUsOTcsMTE2LDExMSwxMDksMTA1LDk5LDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwzLDAsMCwwLDcsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDk1LDAsMCwwLDEyMCw2OSwwLDEwMCwxLDAsMTAwLDIsMCwxMDAsMywKKyAgICAwLDEwMCw0LDAsMTAzLDQsMCw2OCw5Myw0OSwwLDEyNSwyLDAsMTE2LDAsCisgICAgMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMTQsMTksMCwxMTYsMSwwLAorICAgIDEyNCwwLDAsMTI0LDIsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsCisgICAgMiwwLDEzMSwzLDAsMSwxMTMsMTksMCwxMTMsMTksMCw4NywxMjQsMCwwLAorICAgIDEwNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDEsMCwxLAorICAgIDEwMCw1LDAsODMsNDAsNiwwLDAsMCwxMTcsNDcsMCwwLDAsODMsMTA1LAorICAgIDEwOSwxMTIsMTA4LDEwMSwzMiwxMTUsMTE3LDk4LDExNSwxMTYsMTA1LDExNiwxMTcsMTE2LDEwMSwzMiwKKyAgICAxMDIsMTExLDExNCwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTExLDExMSwxMDgsMTE1LDQ2LDExNywxMTIsCisgICAgMTAwLDk3LDExNiwxMDEsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDYsMTE3LDEwLDAsCisgICAgMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwKKyAgICAxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSwKKyAgICA5NSwxMDAsMTExLDk5LDk1LDk1LDc4LDQwLDUsMCwwLDAsMTE3LDcsMCwwLAorICAgIDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsNywwLDAsMCwxMTUsMTAxLDExNiwKKyAgICA5NywxMTYsMTE2LDExNCwxMTcsNywwLDAsMCwxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMDAsMTA1LDk5LDExNiw5NSw5NSwxMTcsNiwwLAorICAgIDAsMCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQwLDMsMCwwLDAsMTE3LDMsMCwKKyAgICAwLDAsMTEwLDEwMSwxMTksMTE3LDMsMCwwLDAsMTExLDEwOCwxMDAsMTE3LDcsMCwKKyAgICAwLDAsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNyw1LDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDE0MywKKyAgICAwLDAsMCwxMTUsOCwwLDAsMCwwLDIsMjUsMSwxNSwxLDMyLDEsCisgICAgMTE3LDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTI0LDAsMCwKKyAgICAxMzEsMSwwLDgzLDQwLDEsMCwwLDAsMTE3LDc1LDAsMCwwLDY3LDExNCwKKyAgICAxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiwxMTAsMTAxLDExOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTAxLDExMCwxMTYsMTAxLDExNCwxMDEsCisgICAgMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNDAsMiwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTYsMTIxLDExMiwxMDEsMTE3LDMsMCwwLDAsOTUsMTA1LDExMSw0MCwKKyAgICAxLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDExMCwxMDEsCisgICAgMTE5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE1NCwwLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDYsMTE3LDEwLDAsMCwwLDExMCwxMDEsMTE5LDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEsCisgICAgMCwwLDAsNjYsMCwwLDAsMTE1LDIwLDAsMCwwLDEyNCwwLDAsNjksCisgICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw4MywKKyAgICA0MCwyLDAsMCwwLDExNywxNCwwLDAsMCw5NSw2OCwxMDEsOTcsMTAwLDEwOCwKKyAgICAxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCw3OCw0MCwzLDAsMCwwLDExNyw4LAorICAgIDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCwKKyAgICA5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsCisgICAgOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsNDAsMSwwLDAsMCwKKyAgICAxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE0LDAsMCwwLAorICAgIDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDE3MSwwLAorICAgIDAsMCwxMTUsMiwwLDAsMCwxNiwxLDExNywxNCwwLDAsMCw5NSw2OCwKKyAgICAxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY2LDAsMCwKKyAgICAwLDExNSw4NiwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLAorICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLAorICAgIDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsCisgICAgMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLAorICAgIDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsCisgICAgMTEsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTIsMCw4Myw0MCwxMywwLDAsCisgICAgMCwxMTcsMTEsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksCisgICAgMTA3LDExNywxNjksMCwwLDAsNjUsMzIsMTE0LDEwMSw5OSwxMTcsMTE0LDExNSwxMDUsMTE4LAorICAgIDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNSwxMTUsMzIsOTcsCisgICAgOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMzIsMTAwLDEwMSwKKyAgICA5NywxMDAsMTA4LDExMSw5OSwxMDcsMTE1LDEwLDMyLDMyLDMyLDMyLDQwLDEwMSw0NiwxMDMsCisgICAgNDYsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw0OSwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLAorICAgIDEwMywzMiwxMTYsMTExLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiwKKyAgICA2NSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjYsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LAorICAgIDExNCwxMDEsOTcsMTAwLDMyLDUwLDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsCisgICAgMTAsMzIsMzIsMzIsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLAorICAgIDY2LDMyLDExNiwxMDQsMTAxLDExMCwzMiw2NSw0MSw0NiwxMCwzMiwzMiwzMiwzMiw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw3MCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLAorICAgIDAsMCwxMjQsMCwwLDk1LDIsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsCisgICAgMCwxMjQsMCwwLDk1LDMsMCwxMjQsMSwwLDEyNCwwLDAsOTUsNCwwLAorICAgIDEwMCwwLDAsMTI0LDAsMCw5NSw2LDAsMTAwLDEsMCwxMjQsMCwwLDk1LAorICAgIDcsMCwxMDAsMSwwLDEyNCwwLDAsOTUsOCwwLDEwMCwwLDAsODMsNDAsCisgICAgMiwwLDAsMCw3OCwxMDUsMCwwLDAsMCw0MCw5LDAsMCwwLDExNywKKyAgICA3LDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDEzLDAsMCwwLAorICAgIDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDQsMCwKKyAgICAwLDAsMTA4LDExMSw5OSwxMDcsMTE3LDYsMCwwLDAsMTE5LDk3LDEwNywxMDEsMTE3LAorICAgIDExMiwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCw3OCwKKyAgICAxMTEsMTEwLDEwMSwxMTcsNSwwLDAsMCwxMTEsMTE5LDExMCwxMDEsMTE0LDExNyw1LDAsCisgICAgMCwwLDk5LDExMSwxMTcsMTEwLDExNiwxMTcsNywwLDAsMCwxMTksOTcsMTA1LDExNiwKKyAgICAxMDEsMTE0LDExNSw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LAorICAgIDEwMiwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLAorICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LAorICAgIDExNiw5NSw5NSwxODEsMCwwLDAsMTE1LDEyLDAsMCwwLDAsMSwxNSwxLAorICAgIDE1LDEsOSwxLDksMSw5LDEsMTE3LDIwLDAsMCwwLDk1LDc3LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsCisgICAgOTUsOTksMSwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsODcsMCwwLDAsMTE2LDAsMCwxMDYsMSwKKyAgICAwLDEzMSwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTI1LDIsMCwKKyAgICAxMjAsNTksMCwxMTYsMywwLDEwNiw0LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwKKyAgICAzLDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDU1LDAsMTAwLDEsCisgICAgMCw4MywxMjQsMywwLDEwNiwyLDAsMTI1LDIsMCwxMjQsMiwwLDEyNCwxLAorICAgIDAsMTA3LDIsMCwxMTQsMjQsMCwxMDAsMiwwLDgzLDExMywyNCwwLDEwMCwwLAorICAgIDAsODMsNDAsMywwLDAsMCw3OCw3MCw4NCw0MCw4LDAsMCwwLDExNywKKyAgICA3LDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDksMCwwLDAsCisgICAgMTAzLDEwMSwxMTYsOTUsMTA1LDEwMCwxMDEsMTEwLDExNiwxMTcsNSwwLDAsMCwxMTEsMTE5LAorICAgIDExMCwxMDEsMTE0LDExNywxMiwwLDAsMCw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsMTEwLAorICAgIDEwMyw5NSwxMTEsMTEwLDExNywzLDAsMCwwLDEwMywxMDEsMTE2LDExNyw0LDAsMCwKKyAgICAwLDc4LDExMSwxMTAsMTAxLDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLDExNywKKyAgICA0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDQwLDQsMCwwLDAsMTE3LDQsMCwKKyAgICAwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywyLDAsMCwwLDEwOSwxMDEsMTE3LDMsMCwKKyAgICAwLDAsMTE2LDEwNSwxMDAsMTE3LDQsMCwwLDAsMTA4LDExMSw5OSwxMDcsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsMTA0LAorICAgIDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywxODksMCwwLDAsMTE1LAorICAgIDE4LDAsMCwwLDAsMiwxMiwxLDksMSwzLDEsMTUsMSwxMiwxLAorICAgIDQsMSw5LDEsMTIsMSwxMTcsMjQsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDIxNCwwLDAsMCwxMTYsMCwwLAorICAgIDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTE2LDIsMCwxMjQsCisgICAgMSwwLDYwLDEyMiwxNzcsMCwxMjAsMTcwLDAsMTI0LDAsMCwxMDYsMywwLDE0MywKKyAgICAxMzAsMCwxLDEyNCwwLDAsMTA2LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE1LAorICAgIDY4LDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwxLDAsMTA3LDIsMCwxMTQsOTYsCisgICAgMCwxMjQsMSwwLDEyNCwwLDAsOTUsNSwwLDEyNCwwLDAsNCwxMDYsNCwKKyAgICAwLDEwMCwyLDAsNTUsMiw5NSw0LDAsMTAwLDUsMCw4MywxMjQsMCwwLAorICAgIDEwNiw3LDAsMTMxLDAsMCwxMTQsMTI3LDAsMTE2LDgsMCwxMDAsMywwLDEyNCwKKyAgICAwLDAsMjIsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDAsMCwxMDYsCisgICAgOSwwLDEwNiwxMCwwLDEwMCw2LDAsMTMxLDEsMCwxMTQsMTYzLDAsMTI0LDAsCisgICAgMCw0LDEwNiwxMiwwLDEwMCwyLDAsNTUsMiw5NSwxMiwwLDExMCwwLDAsCisgICAgODcsMTAwLDQsMCw4MSw4OCwxMjQsMCwwLDEwNiw5LDAsMTA2LDEwLDAsMTMxLAorICAgIDAsMCwxLDEyNCwwLDAsMTA2LDksMCwxMDYsMTMsMCwxMzEsMCwwLDEsCisgICAgMTEzLDI4LDAsODcsMTAwLDQsMCwxMTYsMiwwLDEyNCwxLDAsNjEsODgsMTAwLAorICAgIDQsMCw4Myw0MCw3LDAsMCwwLDExNywxODUsMCwwLDAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsNjUsOTksMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNyw0NiwzMiwzMiwKKyAgICA3MywxMDIsMzIsOTcsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwzMiwxMDAsCisgICAgMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwKKyAgICAxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5NywzMiw5NSwKKyAgICA2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LAorICAgIDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsNzksMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksOTcsMTIxLDExNSwzMiw5NywKKyAgICA5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLDg0LDExNCwxMTcsMTAxLAorICAgIDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCw0NiwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMDUsMCwwLDAsMCwxMDUsMSwwLDAsMCwKKyAgICAxMTcsMjMsMCwwLDAsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsMTAwLDEwMSwKKyAgICAxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiwzNywxMTQsNzgsODQsNzAsNDAsCisgICAgMTQsMCwwLDAsMTE3LDcsMCwwLDAsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwKKyAgICAxMTcsOSwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDUsMTAwLDEwMSwxMTAsMTE2LDExNywxMiwKKyAgICAwLDAsMCw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsMTEwLDEwMyw5NSwxMTEsMTEwLDExNywKKyAgICA0LDAsMCwwLDEwOCwxMTEsOTksMTA3LDExNyw1LDAsMCwwLDk5LDExMSwxMTcsCisgICAgMTEwLDExNiwxMTcsNSwwLDAsMCwxMTEsMTE5LDExMCwxMDEsMTE0LDExNyw0LDAsMCwKKyAgICAwLDg0LDExNCwxMTcsMTAxLDExNywxMiwwLDAsMCwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsCisgICAgOTcsMTAwLDEwOCwxMTEsOTksMTA3LDExNywxNCwwLDAsMCw5NSw2OCwxMDEsOTcsMTAwLAorICAgIDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsMCwxMTksOTcsCisgICAgMTA3LDEwMSwxMTcsMTEyLDExNyw3LDAsMCwwLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTE3LDUsMCwwLDAsNzAsOTcsMTA4LDExNSwxMDEsMTE3LDcsMCwwLDAsMTE5LAorICAgIDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsMTE3LDcsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LAorICAgIDExNSwxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDMsMCwwLDAsMTE2LDEwNSwxMDAsNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsNywwLDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLAorICAgIDIwMSwwLDAsMCwxMTUsMzIsMCwwLDAsMCw2LDEyLDEsMTAsMSwzLAorICAgIDEsMywxLDEwLDEsMzAsMSw5LDEsMTUsMSw0LDEsMTIsMSwxOSwKKyAgICAxLDE4LDEsMjQsMiwxMywxLDIwLDIsMTE3LDE5LDAsMCwwLDk1LDc3LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsCisgICAgMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEwLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxNjUsMCwwLDAsMTE2LDAsMCwxMDYsMSwKKyAgICAwLDEzMSwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTQzLDEzOCwwLAorICAgIDEsMTI0LDAsMCwxMDYsMywwLDEyNCwxLDAsMTA3LDMsMCwxMTQsNTIsMCwKKyAgICAxMTYsNCwwLDEwMCwxLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LAorICAgIDAsMCwxMDYsNSwwLDEwMCwyLDAsMTA3LDQsMCwxMTUsNzMsMCwxMTYsNiwKKyAgICAwLDEzMCwxLDAsMTI0LDAsMCw0LDEwNiw1LDAsMTAwLDMsMCw1NiwyLAorICAgIDk1LDUsMCwxMjQsMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsMiwwLDExNCwKKyAgICAxNTUsMCwxMDAsMCwwLDEyNCwwLDAsOTUsMywwLDEyNCwwLDAsMTA2LDgsCisgICAgMCwxMTQsMTU1LDAsMTI0LDAsMCw0LDEwNiw4LDAsMTAwLDMsMCw1NiwyLAorICAgIDk1LDgsMCwxMjQsMCwwLDEwNiw5LDAsMTA2LDEwLDAsMTMxLDAsMCwxLAorICAgIDExMywxNTUsMCwxMTAsMCwwLDg3LDEwMCwwLDAsODEsODgsMTAwLDAsMCw4MywKKyAgICA0MCw0LDAsMCwwLDc4LDExNywzMSwwLDAsMCw5OSw5NywxMTAsMTEwLDExMSwKKyAgICAxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE3LDExMCw0NSw5Nyw5OSwxMTMsCisgICAgMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsMTExLDk5LDEwNywxMDUsMCwwLDAsMCwxMDUsCisgICAgMSwwLDAsMCw0MCwxMSwwLDAsMCwxMTcsNywwLDAsMCw5NSwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDExNyw5LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsCisgICAgMTAxLDExMCwxMTYsMTE3LDQsMCwwLDAsMTA4LDExMSw5OSwxMDcsMTE3LDUsMCwwLAorICAgIDAsMTExLDExOSwxMTAsMTAxLDExNCwxMTcsMTIsMCwwLDAsODIsMTE3LDExMCwxMTYsMTA1LAorICAgIDEwOSwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNyw1LDAsMCwwLDk5LDExMSwxMTcsMTEwLAorICAgIDExNiwxMTcsMTQsMCwwLDAsNjUsMTE1LDExNSwxMDEsMTE0LDExNiwxMDUsMTExLDExMCw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDcsMCwKKyAgICAwLDAsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsMTE3LDYsMCwwLDAsMTE5LDk3LAorICAgIDEwNywxMDEsMTE3LDExMiwxMTcsNywwLDAsMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwKKyAgICA0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMywKKyAgICAwLDAsMCwxMTYsMTA1LDEwMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDIyNiwwLAorICAgIDAsMCwxMTUsMjIsMCwwLDAsMCwxLDEyLDEsMTAsMSwxNSwxLDE1LAorICAgIDEsMjEsMSwxNSwxLDE1LDEsOSwxLDksMSwxNSwxLDExNywxOSwwLAorICAgIDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LDEwMSwKKyAgICAxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMjMsMCwwLDAsMTAwLAorICAgIDEsMCwxMjQsMCwwLDEwNiwwLDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwxLAorICAgIDAsMTAyLDIsMCwyMiw4Myw0MCwyLDAsMCwwLDc4LDExNywyMSwwLDAsCisgICAgMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsMzcsMTE0LDQxLAorICAgIDMyLDk3LDExNiwzMiwzNywxMDAsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTcsMiwwLDAsMCwxMDUsMTAwLDQwLDEsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsNDAsMCwKKyAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LAorICAgIDk1LDk1LDIzOSwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDIwLDAsCisgICAgMCwwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwKKyAgICAxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDAsOSwwLDAsMCwxMTcsOCwwLDAsCisgICAgMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywKKyAgICAxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LAorICAgIDEwMCwxMTEsOTksOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAorICAgIDk1LDk1LDExNywxMiwwLDAsMCwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwKKyAgICAxMTEsOTksMTA3LDExNyw3LDAsMCwwLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE3LAorICAgIDcsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMTE3LDgsMCwwLDAsCisgICAgOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDQwLDEsMCwwLDAsMTE3LDEwLDAsCisgICAgMCwwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSw3NywxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTc1LDAsMCwwLDExNSwxMiwwLDAsCisgICAgMCwxNiw0LDYsMiwxMiw4LDEyLDEyLDEyLDI1LDEyLDEzLDExNywxMSwwLAorICAgIDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NiwwLAorICAgIDAsMCwxMTUsNzQsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsCisgICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwKKyAgICAwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsCisgICAgMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsCisgICAgODMsNDAsMTEsMCwwLDAsMTE3LDE2LDAsMCwwLDk1LDY4LDExNywxMDksMTA5LAorICAgIDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTE3LDg2LDAsMCwwLAorICAgIDY1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNzYsMTExLDk5LDEwNywzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwzMiwKKyAgICAxMDIsMTExLDExNCwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk4LDExNywxMDUsMTA4LDEwMCwKKyAgICAxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDExMSwxMTcsMTE2LDEwLDMyLDMyLDMyLDMyLDEwOSwxMTcsCisgICAgMTA4LDExNiwxMDUsNDUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTE3LAorICAgIDExMiwxMTIsMTExLDExNCwxMTYsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsCisgICAgMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMDAsMSwwLDEyNCwwLDAsOTUsCisgICAgMSwwLDEwMCwwLDAsODMsNDAsMiwwLDAsMCw3OCwxMDUsMCwwLDAsCisgICAgMCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywKKyAgICA1LDAsMCwwLDk5LDExMSwxMTcsMTEwLDExNiw0MCwyLDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwyNDcsMCwwLDAsMTE1LDQsMCwKKyAgICAwLDAsMCwxLDksMSwxMTcsMjUsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksCisgICAgMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsMTEwLAorICAgIDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwwLDAsMTI0LDAsCisgICAgMCw0LDEwNiwwLDAsMTAwLDEsMCw1NSwyLDk1LDAsMCwxMDAsMiwwLAorICAgIDgzLDQwLDMsMCwwLDAsNzgsMTA1LDEsMCwwLDAsODQsNDAsMiwwLAorICAgIDAsMCwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDQsMCwwLAorICAgIDAsODQsMTE0LDExNywxMDEsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgNywwLDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDI1MSwwLDAsMCwxMTUsCisgICAgNCwwLDAsMCwwLDEsMTUsMSwxMTcsMjQsMCwwLDAsOTUsNjgsMTE3LAorICAgIDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwKKyAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ5LDAsMCwwLDEyNCwKKyAgICAwLDAsMTA2LDAsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDMwLDAsMTE2LDEsCisgICAgMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwwLDAsCisgICAgNCwxMDYsMCwwLDEwMCwzLDAsNTYsMiw5NSwwLDAsMTAwLDAsMCw4MywKKyAgICA0MCw0LDAsMCwwLDc4LDEwNSwwLDAsMCwwLDExNywzMSwwLDAsMCwKKyAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE3LAorICAgIDExMCw0NSw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsMTExLDk5LDEwNywxMDUsCisgICAgMSwwLDAsMCw0MCwyLDAsMCwwLDExNyw1LDAsMCwwLDk5LDExMSwKKyAgICAxMTcsMTEwLDExNiwxMTcsMTIsMCwwLDAsODIsMTE3LDExMCwxMTYsMTA1LDEwOSwxMDEsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwKKyAgICAxMDgsMTAyLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsCisgICAgMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMjU1LDAsMCwwLDExNSw2LAorICAgIDAsMCwwLDAsMSwxNSwxLDE1LDEsMTE3LDI0LDAsMCwwLDk1LDY4LAorICAgIDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LAorICAgIDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsCisgICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMjMsMCwwLDAsCisgICAgMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwKKyAgICAxLDAsMTAyLDIsMCwyMiw4Myw0MCwyLDAsMCwwLDc4LDExNywyNiwwLAorICAgIDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDQwLDM3LDExNCw0MSwzMiw5NywxMTYsMzIsMzcsMTAwLDQwLDIsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDIsMCwwLDAsMTA1LAorICAgIDEwMCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwKKyAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLAorICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw0LDEsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMSwxMTcsMjUsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsCisgICAgOTUsNzgsNDAsOCwwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsCisgICAgMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNyw3LDAsCisgICAgMCwwLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE3LDcsMCwwLDAsMTE0LDEwMSwKKyAgICAxMDgsMTAxLDk3LDExNSwxMDEsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LAorICAgIDk1LDk1LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsCisgICAgOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxNiwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDI0MywwLDAsMCwxMTUsMTAsMCwwLDAsCisgICAgMTYsMiw2LDIsMTIsNCwxMiw0LDEyLDUsMTE3LDE2LDAsMCwwLDk1LAorICAgIDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsCisgICAgMywwLDAsMCwxMTUsMTQyLDAsMCwwLDEwMCwzLDAsMTI1LDEsMCwxMjEsCisgICAgMTcsMCwxMTYsMSwwLDEzNiwwLDAsMjUsMTMxLDAsMCwxMjUsMSwwLDg3LAorICAgIDExMCwxOCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNDMsMCwxLDEsMSwKKyAgICA4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxMzgsCisgICAgMCwxMTYsMywwLDEwMCwzLDAsMTA3LDgsMCwxMTQsODMsMCwxMTYsNCwwLAorICAgIDEzNiwwLDAsMTMxLDEsMCwxMjUsMSwwLDExMCwxMiwwLDExNiw1LDAsMTM2LAorICAgIDAsMCwxMzEsMSwwLDEyNSwxLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLAorICAgIDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwyLDAsMTE2LDYsMCwxMDYsNywwLAorICAgIDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNiwxLDAsMTM2LDAsMCw2MCwKKyAgICAxMTAsMCwwLDEyNCwxLDAsODMsNDAsNCwwLDAsMCwxMTcsMTA5LDAsMCwKKyAgICAwLDcxLDEwMSwxMTYsMzIsMTExLDExNCwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsOTcsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsMTExLAorICAgIDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwKKyAgICAxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwxOSwKKyAgICAwLDAsMCwxMTUsMTEsMCwwLDAsMTE2LDAsMCwxMzYsMCwwLDYxLDEwMCwKKyAgICAwLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwxLDAsMCwwLDExNywxMywKKyAgICAwLDAsMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTUsCisgICAgNDAsMSwwLDAsMCwxMTcsMSwwLDAsMCw5NSw0MCwxLDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNywyLDAsMCwwLDk5LDk4LDI0LDEsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsMSwxMTcsMjgsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAorICAgIDQ2LDk5LDk4LDc4LDQwLDgsMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLAorICAgIDExMCwxMDEsMTE3LDEzLDAsMCwwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwKKyAgICAxMTEsOTksMTA3LDExNSwxMTcsOCwwLDAsMCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTcsNywwLDAsMCw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDExNywxNiwwLAorICAgIDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDExNywxMSwwLDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsMTE3LDgsMCwwLDAsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsMTE3LAorICAgIDMsMCwwLDAsMTE0LDEwMSwxMDIsNDAsMywwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMDgsMTExLDk5LDEwNywxMTcsMiwKKyAgICAwLDAsMCw5OSw5OCw0MCwwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LAorICAgIDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNiwwLDAsMCw5NSwKKyAgICAxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMCwKKyAgICAxLDAsMCwxMTUsMjQsMCwwLDAsMCw0LDYsMSwzLDEsMTcsMSwKKyAgICAxMywxLDUsMSwxMiwxLDEyLDEsMTUsMiwxMiwxLDE4LDIsMjUsMSwKKyAgICAxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTA4LDExMSw5OSwxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDcxLDAsMCwwLDExNiwKKyAgICAwLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTE2LDEsMCwxMDYsMiwKKyAgICAwLDEzMSwwLDAsMSwxMjEsMTQsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDAsCisgICAgMCwxLDg3LDExMCwxOCwwLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsNTYsMCwKKyAgICAxLDEsMSw4OSwxMTAsMTEsMCw4OCwxMjQsMSwwLDEwNiw1LDAsMTMxLDAsCisgICAgMCwxLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsMjEsMSwwLDAsCisgICAgODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCwKKyAgICA5NywxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDQsMzIsCisgICAgOTcsMTEwLDEwMCwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAxMTAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsCisgICAgMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsOTcsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwKKyAgICAxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMTAsMTE1LDExNywxMTQsCisgICAgMTAxLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTksMTExLAorICAgIDEwOSwxMTIsMTA4LDEwMSwxMTYsMTAxLDEwOCwxMjEsMzIsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsCisgICAgMTA1LDEyMiwxMDEsMTAwLDQ0LDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsCisgICAgMzIsMTAxLDExOCwxMDEsMTEwLDExNiwzMiwxMDUsMTE2LDMyLDEwNSwxMTUsMzIsOTgsMTAxLDEwNSwKKyAgICAxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk3LAorICAgIDExMCwxMTEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsCisgICAgOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTE2LAorICAgIDk3LDEwNywxMDEsMTEwLDQ2LDc4LDQwLDYsMCwwLDAsMTE3LDE2LDAsMCwwLAorICAgIDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LAorICAgIDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCwxMTQsMTAxLAorICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsNywwLDAsMCw5NywKKyAgICA5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNywxNCwwLDAsMCw5NSw2OCwxMDEsOTcsMTAwLAorICAgIDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCwxMTcsNywwLDAsMCwxMTQsMTAxLAorICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExMCwKKyAgICA5NywxMDksMTAxLDExNyw0LDAsMCwwLDEwOCwxMTEsOTksMTA3LDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE5LDAsMCwwLDk1LDEwOCwxMTEsCisgICAgOTksMTA3LDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMjksMSwwLDAsMTE1LDE0LDAsMCwwLDAsNywxMiwxLDEwLDEsMywKKyAgICAxLDE0LDEsMTMsMyw1LDIsMTE3LDE5LDAsMCwwLDk1LDEwOCwxMTEsOTksCisgICAgMTA3LDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCwKKyAgICA3OSwwLDAsMCwxMTUsMTMsMCwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwKKyAgICAyLDAsMTQyLDAsMCw4Myw0MCwxLDAsMCwwLDExNyw0NiwxLDAsMCwKKyAgICAxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiw0Niw5OSwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTcsMTA4LDExOSw5NywxMjEsMTE1LDMyLAorICAgIDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDMyLDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LDEwMSwxMTUsCisgICAgMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTAxLDExMCwKKyAgICAxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsMzIsMTE2LDExMSwKKyAgICAzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDg1LDExNSwxMDEsMzIsMTA1LDExNiwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLAorICAgIDk3LDEwMCwzMiwxMTEsMTAyLDMyLDk3LDMyLDExMCwxMTEsMTE0LDEwOSw5NywxMDgsMzIsOTksCisgICAgOTcsMTA4LDEwOCwzMiwxMDUsMTEwLDMyLDExMiwxMDgsOTcsOTksMTAxLDExNSwzMiwxMTksMTA0LAorICAgIDEwMSwxMTQsMTAxLDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsMTE2LDExNCwxMTEsMTAwLDExNyw5OSwxMDEsCisgICAgMTE1LDMyLDExNywxMTAsMTE5LDk3LDExMCwxMTYsMTAxLDEwMCwzMiwxMTAsMTExLDEwNSwxMTUsMTAxLAorICAgIDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTYsMTE0LDk3LDk5LDEwMSw5OCwKKyAgICA5Nyw5OSwxMDcsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAxLAorICAgIDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0MSwxMCwzMiwzMiwzMiwzMiw0MCwwLAorICAgIDAsMCwwLDQwLDMsMCwwLDAsMTE3LDEsMCwwLDAsMTAyLDExNyw0LAorICAgIDAsMCwwLDk3LDExNCwxMDMsMTE1LDExNyw0LDAsMCwwLDEwNywxMTksMTAwLDExNSwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywyNSwwLDAsCisgICAgMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwKKyAgICAxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCw0OSwxLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDgsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsOTUsCisgICAgMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLAorICAgIDExOCwxMDEsMTAwLDEwNSwxNTgsMTIsMCwwLDExNywxLDAsMCwwLDEzLDEwNSwxNiwKKyAgICAwLDAsMCwxMTcsMSwwLDAsMCwxMCwxMDUsMjQsMCwwLDAsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw5OSwKKyAgICAwLDAsMCwxMTUsMjksMCwwLDAsMTI0LDAsMCw5MywxOSwwLDEyNSwxLAorICAgIDAsMTE2LDAsMCwxMjQsMSwwLDYzLDEwMCwwLDAsNjQsODYsMSwxMTMsMywKKyAgICAwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMDUsMjU1LDAsMCwwLDc4LAorICAgIDQwLDEsMCwwLDAsMTE3LDE3LDAsMCwwLDk1LDgyLDY1LDg3LDk1LDc3LAorICAgIDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LDY2LDY5LDgyLDQwLDIsMCwwLDAsCisgICAgMTE3LDIsMCwwLDAsNDYsNDgsMTE3LDEsMCwwLDAsMTEwLDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwwLDAsNjAsMTAzLAorICAgIDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDE1MCwxLDAsMCwxMTUsMiwwLDAsMCwKKyAgICA2LDAsMTE3LDksMCwwLDAsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLAorICAgIDEwNSwwLDAsMCwwLDEwNSwyNSwwLDAsMCwxMDUsOCwwLDAsMCwxMTcsCisgICAgMTEsMCwwLDAsOTUsOTUsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk1LDExNywKKyAgICAzLDAsMCwwLDQ2LDExMiwxMjEsMTE3LDQsMCwwLDAsNDYsMTEyLDEyMSw5OSwKKyAgICAxMTcsNCwwLDAsMCw0NiwxMTIsMTIxLDExMSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMTEsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMTczLAorICAgIDAsMCwwLDEyNCwxLDAsMTAwLDUsMCwxMDcsOCwwLDExNCwxOCwwLDExNiwKKyAgICAxLDAsMTEwLDMsMCwxMjQsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMTQsMzksCisgICAgMCwxMTYsMiwwLDEyNSwzLDAsMTEwLDYsMCwxMTYsMywwLDEyNSwzLDAsCisgICAgMTE2LDQsMCwxMjQsMCwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LAorICAgIDUsMCwxMjQsNSwwLDEwNiw1LDAsMTAwLDEsMCwxMzEsMSwwLDkyLDMsCisgICAgMCwxMjUsNiwwLDEyNSw3LDAsMTI1LDgsMCwxMTYsNiwwLDEwNiw3LDAsCisgICAgMTA2LDgsMCwxMjUsOSwwLDEyNCw5LDAsMTAwLDUsMCwxMDcsOCwwLDExNCwKKyAgICAxMjYsMCwxMTYsOSwwLDEwMCwyLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLAorICAgIDAsMTAwLDMsMCwxMDYsMTAsMCwxMjQsNiwwLDEyNCw3LDAsMTI0LDksMCwKKyAgICAxMjQsMywwLDEwMCw0LDAsMjUsMTAzLDQsMCwxMzEsMSwwLDEyNSwxMCwwLAorICAgIDExNiwxMSwwLDEyNCw0LDAsMTE2LDEyLDAsMTI0LDEwLDAsMTMxLDMsMCw4MywKKyAgICA0MCw2LDAsMCwwLDExNywyNDIsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLAorICAgIDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwKKyAgICAxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLAorICAgIDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LAorICAgIDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LAorICAgIDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwKKyAgICAzMiw0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKKyAgICA5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiw5NywxMTUsMzIsMTA1LDEwMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTksMTAxLAorICAgIDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsCisgICAgMTAxLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMTcsMTEwLDEwOCwKKyAgICAxMDEsMTE1LDExNSwzMiw5NSw5NSwxMDAsMTAxLDk4LDExNywxMDMsOTUsOTUsMzIsMTA1LDExNSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsNDQsMzIsMTE2LDEwNCwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMTYsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiw0NiwxMTIsCisgICAgMTIxLDExMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsCisgICAgMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLAorICAgIDExNiwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTA1LDExNiwzMiwKKyAgICAxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk3LDMyLDk4LDExMSwxMTEsMTA4LDEwMSw5NywKKyAgICAxMTAsMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTE1LDMyLDExNiw5NywxMDcsMTAxLDExMCwzMiw5NywKKyAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLAorICAgIDExMSwxMDIsMzIsOTUsOTUsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDk1LDMyLDEwNSwxMTAsMTE1LAorICAgIDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTUsMTIxLAorICAgIDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLAorICAgIDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCwKKyAgICA5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE3LDEsMCwwLAorICAgIDAsNDYsMTE3LDM2LDAsMCwwLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsCisgICAgMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LAorICAgIDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwxMTcsMCwwLDAsMCwKKyAgICAxMDUsMCwwLDAsMCw3OCw0MCwxMywwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICA3OCwxMTEsMTEwLDEwMSwxMTcsOSwwLDAsMCw5NSw5NSwxMDAsMTAxLDk4LDExNywxMDMsCisgICAgOTUsOTUsMTE3LDIzLDAsMCwwLDY4LDY5LDY2LDg1LDcxLDk1LDY2LDg5LDg0LAorICAgIDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNywyNywKKyAgICAwLDAsMCw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSw4NCwKKyAgICA2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMTEsCisgICAgMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsOSwKKyAgICAwLDAsMCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNywzLDAsMCwKKyAgICAwLDExNSwxMjEsMTE1LDExNywxNCwwLDAsMCwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCisgICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMTE3LDksMCwwLDAsOTksOTcsOTksMTA0LAorICAgIDEwMSw5NSwxMTYsOTcsMTAzLDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwKKyAgICAwLDAsMTA2LDExMSwxMDUsMTEwLDExNywxMCwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDYsMTExLDEwNSwxMTAsMTE3LDgsMCwwLDAsOTUsODAsODksNjcsNjUsNjcsCisgICAgNzIsNjksNDAsMTEsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsCisgICAgMTE3LDE0LDAsMCwwLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LAorICAgIDEwNSwxMDAsMTAxLDExNyw1LDAsMCwwLDEwMCwxMDEsOTgsMTE3LDEwMywxMTcsOCwwLAorICAgIDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNyw0LDAsMCwwLDEwNCwKKyAgICAxMDEsOTcsMTAwLDExNyw0LDAsMCwwLDExNiw5NywxMDUsMTA4LDExNywxMywwLDAsCisgICAgMCw5OCw5NywxMTUsMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsMywKKyAgICAwLDAsMCwxMTUsMTAxLDExMiwxMTcsMSwwLDAsMCw5NSwxMTcsMywwLDAsCisgICAgMCwxMTYsOTcsMTAzLDExNyw4LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAorICAgIDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLAorICAgIDAsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDE2MywxLDAsMCwxMTUsMjIsMCwwLDAsMCwxMywyNCwxLAorICAgIDYsMSw5LDIsNiwxLDE4LDEsMjQsMSwxMiwxLDEyLDEsMTUsMSwKKyAgICAzMSwxLDExNywxNywwLDAsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLAorICAgIDEwOSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLAorICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMDAsNywwLDEwNyw4LAorICAgIDAsMTE0LDMzLDAsMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwKKyAgICAxMTAsMCwwLDExNiw1LDAsMTI0LDAsMCwxMzEsMSwwLDkyLDIsMCwxMjUsCisgICAgMSwwLDEyNSwyLDAsMTE2LDUsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwKKyAgICAwLDEyNSwxLDAsMTI1LDMsMCwxMjQsMywwLDExNiw2LDAsMTA3LDMsMCwKKyAgICAxMTQsMTA4LDAsMTE2LDcsMCwxMDAsMiwwLDEwNiw4LDAsMTE2LDYsMCwxMjQsCisgICAgMCwwLDEzMSwyLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDIsCisgICAgMCwxMDYsOSwwLDEwMCwzLDAsMTMxLDEsMCwxMDAsNCwwLDEwNywzLDAsCisgICAgMTE0LDE1MywwLDExNiw3LDAsMTAwLDUsMCwxMDYsOCwwLDEyNCwyLDAsMTMxLAorICAgIDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMiwwLDEwNiwxMCwKKyAgICAwLDEwMCwzLDAsMTMxLDEsMCwxMDAsNiwwLDI1LDEyNSw0LDAsMTE2LDExLAorICAgIDAsMTI0LDEsMCwxMjQsNCwwLDExNiwxMiwwLDEwMCw2LDAsMjUsMjMsMTMxLAorICAgIDIsMCw4Myw0MCw4LDAsMCwwLDExNywxMjEsMSwwLDAsNzEsMTA1LDExOCwKKyAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsCisgICAgMzIsNDYsMTEyLDEyMSw5OSw0Niw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksCisgICAgNDcsNDYsMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsCisgICAgMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiwxMTYsCisgICAgMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LAorICAgIDEwOCwxMDEsNDYsMzIsMzIsNzMsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLAorICAgIDExNSwxMCwzMiwzMiwzMiwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LAorICAgIDEwOSwzMiwxMTYsMTExLDMyLDgwLDY5LDgwLDMyLDUxLDQ5LDUyLDU1LDMyLDEwMiwxMTEsCisgICAgMTE0LDEwOSw5NywxMTYsNDQsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwKKyAgICAzMiw3MywxMDIsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsCisgICAgOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDExNywzNiwwLDAsMCwxMTUsMTIxLDExNSw0NiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsCisgICAgOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTE3LAorICAgIDM3LDAsMCwwLDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTExLDExNiwxMTYsMTExLAorICAgIDEwOSw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwKKyAgICAxMjEsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwxMTcsMSwwLDAsMCw0NiwxMDUsCisgICAgMiwwLDAsMCwxMTcsMjgsMCwwLDAsMTAxLDEyMCwxMTIsMTAxLDk5LDExNiwxMDEsCisgICAgMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw1MCwzMiwxMDAsMTExLDExNiwxMTUsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMDUsMCwwLDAsMCw3OCw0MCwxMywwLDAsMCwKKyAgICAxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsMTQsMCwwLDAsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDExNyw5LDAsMCwwLAorICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywxMTcsNCwwLDAsMCw3OCwxMTEsCisgICAgMTEwLDEwMSwxMTcsMTksMCwwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LAorICAgIDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNyw4LDAsMCwwLDk1LAorICAgIDgwLDg5LDY3LDY1LDY3LDcyLDY5LDExNywxMCwwLDAsMCw4Niw5NywxMDgsMTE3LAorICAgIDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LAorICAgIDExNiwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDksMCwwLDAsCisgICAgMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsMTAsMCwwLDAsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDExNywxNSwwLDAsMCw4Myw3OSw4NSwKKyAgICA4Miw2Nyw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MCw1LDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwNCwKKyAgICAxMDEsOTcsMTAwLDExNywxNiwwLDAsMCwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsCisgICAgMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNyw3LDAsMCwwLDExMiwxMjEsOTksCisgICAgOTcsOTksMTA0LDEwMSwxMTcsMTMsMCwwLDAsOTgsOTcsMTE1LDEwMSw5NSwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTcsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LAorICAgIDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSwxOTAsMSwwLDAsMTE1LDI0LDAsMCwKKyAgICAwLDAsOSwxOCwxLDE1LDEsMTgsMSwxOCwxLDEyLDEsOSwxLDE4LAorICAgIDEsMjEsMSw5LDEsMTUsMSwxOSwxLDExNywxNywwLDAsMCwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDEzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNjQsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwKKyAgICAxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyMiwwLDEwMCw2LDAsODMsMTI0LAorICAgIDAsMCwxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDEsCisgICAgMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsMCwxMiwxMTUsODEsMCwxMjQsMywKKyAgICAwLDEwNiwzLDAsMTMxLDAsMCwxMDAsNywwLDEwMCw4LDAsMTMzLDIsMCwKKyAgICAyNSwxMDAsNSwwLDEwNywzLDAsMTE0LDg1LDAsMTI0LDAsMCw4MywxMjEsMTYsCisgICAgMCwxMTYsNCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDg3LDExMCw0MCwKKyAgICAwLDQsMTE2LDUsMCwxMTYsNiwwLDEwMiwyLDAsMTA3LDEwLDAsMTE0LDE0MywKKyAgICAwLDEsMSwxLDExNiw3LDAsMTAwLDksMCwxMDAsNiwwLDEzMywyLDAsCisgICAgMjUsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LDExNiw4LDAsMTE2LDksMCwxMzEsCisgICAgMSwwLDExNCwxNjAsMCwxMjQsNCwwLDgzLDEyNCwwLDAsODMsNDAsMTAsMCwKKyAgICAwLDAsMTE3LDE4OCwwLDAsMCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywKKyAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsCisgICAgMTAxLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsCisgICAgMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LAorICAgIDExNCwxMDEsMTA4LDEyMSwzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwKKyAgICAxMDAsMTE1LDQ1LDk5LDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwKKyAgICAzMiwxMDIsMTExLDExNCwxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiw5NSw2OSwxMjAsMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgODcsMTA1LDExNiwxMDQsNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLAorICAgIDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsMTA1LDAsMCwwLDAsMTE3LDEsMCwwLDAsNDYsMTA1LDMsCisgICAgMCwwLDAsMTA1LDEsMCwwLDAsMTE3LDMsMCwwLDAsNDYsMTEyLDEyMSwKKyAgICA3OCwxMDUsMjUzLDI1NSwyNTUsMjU1LDEwNSwyNTUsMjU1LDI1NSwyNTUsMTA1LDI1NSwyNTUsMjU1LDI1NSwKKyAgICA0MCwxMCwwLDAsMCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsNCwwLAorICAgIDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsOSwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMDUsCisgICAgMTE2LDEwNSwxMTEsMTEwLDExNyw1LDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE3LDE3LAorICAgIDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk5LAorICAgIDk3LDk5LDEwNCwxMDEsMTE3LDE5LDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsCisgICAgMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTAsMCwwLAorICAgIDAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMiwwLDAsMCwKKyAgICA5OCwxMjEsMTE2LDk5LDExMSwxMDAsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNywxMiwwLDAsCisgICAgMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSwxMTcsMTIsMCwKKyAgICAwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsNDAsNSwKKyAgICAwLDAsMCwxMTcsMTMsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTE0LDEwMSwxMTUsMTE2LDExNywxLAorICAgIDAsMCwwLDk1LDExNyw5LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDExNywxMSwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE1LAorICAgIDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDIxMywxLDAsMCwxMTUsMjAsMCwwLDAsMCw3LDE4LDEsNCwKKyAgICAxLDI0LDEsMzUsMSw0LDIsMywxLDE2LDEsMTksMSwyMSwyLDExNywKKyAgICAxNSwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwKKyAgICAxMDUsMTA4LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICA0LDAsMCwwLDcxLDAsMCwwLDExNSw3NSwwLDAsMCwxMTYsMCwwLAorICAgIDEwNiwxLDAsMTA2LDIsMCwxMTQsNzEsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLAorICAgIDYsMCwxMzEsMSwwLDExNSw0MCwwLDEwMCwzLDAsMTI0LDAsMCwyMywxMjUsCisgICAgMCwwLDExMCwwLDAsMTE2LDQsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDEsCisgICAgMCwxNDAsMCwwLDEwMCw0LDAsMTE2LDAsMCwxMDYsNiwwLDEzMSwxLDEsCisgICAgMSwxMTAsMCwwLDEwMCw1LDAsODMsNDAsNywwLDAsMCwxMTcsNjEsMCwKKyAgICAwLDAsODAsMTE0LDEwNSwxMTAsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSwKKyAgICA5NywxMDMsMTAxLDMyLDExNiwxMTEsMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwKKyAgICAzMiw0NSwxMTgsNDcsODAsODksODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsCisgICAgNjksMzIsMTA1LDExNSwzMiwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDExNywKKyAgICAxLDAsMCwwLDM1LDExNyw3LDAsMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDMyLDExNywyLDAsMCwwLDM1LDMyLDExNyw0LDAsMCwwLDEwMiwxMDUsMTA4LAorICAgIDEwMSw3OCw0MCwyLDAsMCwwLDExNywxLDAsMCwwLDM1LDExNyw3LDAsCisgICAgMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDQwLDcsMCwwLDAsMTE3LDMsCisgICAgMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDUsMCwwLDAsMTAyLDEwOCw5NywxMDMsMTE1LAorICAgIDExNyw3LDAsMCwwLDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDExNywxMCwwLDAsCisgICAgMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LDExOSwxMDUsMTE2LDEwNCwxMTcsNSwwLDAsMCwKKyAgICAxMTIsMTE0LDEwNSwxMTAsMTE2LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsCisgICAgMTE3LDYsMCwwLDAsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsNDAsMiwwLDAsMCwKKyAgICAxMTcsNywwLDAsMCwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsNCwwLDAsCisgICAgMCw5NywxMTQsMTAzLDExNSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksCisgICAgMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMzQsMSwwLDAsMTE1LDgsMCwwLDAsMCwKKyAgICAyLDEyLDEsMTUsMSwxMywxLDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCwKKyAgICA5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDMsMCwwLAorICAgIDAsMTE1LDM1LDAsMCwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwKKyAgICAyLDAsMTM0LDAsMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwKKyAgICAwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDM5LAorICAgIDAsMCwwLDgzLDEwMSwxMTYsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDk1LDk1LDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMywwLDAsMCw0LDAsMCwwLDMxLDAsMCwwLDExNSwKKyAgICAxMDEsMCwwLDAsMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTQyLDAsMCwKKyAgICAxMjUsMiwwLDExNiwwLDAsMTI0LDIsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLAorICAgIDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDk3LDAsMTI0LDIsMCwxMDYsMiwKKyAgICAwLDEyNCwyLDAsOTUsMywwLDExNiw0LDAsMTI0LDIsMCwxMDAsMiwwLAorICAgIDEzMSwyLDAsMTE1LDk3LDAsMTI0LDIsMCwxMDYsMywwLDEwNiw1LDAsMTAwLAorICAgIDMsMCwxMzEsMSwwLDEwMCw0LDAsMjUsMTI0LDIsMCw5NSwzLDAsMTEzLAorICAgIDk3LDAsMTEwLDAsMCwxMjQsMiwwLDgzLDQwLDUsMCwwLDAsNzgsMTE3LAorICAgIDExLDAsMCwwLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMSwwLDAsCisgICAgMCw0NiwxMDUsMCwwLDAsMCw0MCw2LDAsMCwwLDExNyw3LDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsCisgICAgMTAxLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMSwKKyAgICAwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDcsCisgICAgMCwwLDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTAsMCwwLDAsMTE0LAorICAgIDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsNDAsMywwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCw5NywxMTQsMTAzLDExNSwxMTcsNiwwLDAsMCwxMDcsMTE5LDk3LDExNCwKKyAgICAxMDMsMTE1LDExNyw2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwKKyAgICAwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDE5LDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwyNDQsMSwwLDAsMTE1LDEyLDAsCisgICAgMCwwLDAsMSwxNSwxLDI0LDEsMTIsMSwxNSwxLDMxLDEsMTE3LDQwLAorICAgIDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw2MCwKKyAgICAxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDEsMCwwLDAsCisgICAgMTE3LDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwwLDAsMCwxMTcsCisgICAgMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMTksMCwwLDAsMTE1LDEwMSwxMTYsOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLAorICAgIDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLAorICAgIDExMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDExLDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSwyNDIsMSwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LDcsCisgICAgMTMsMSwxMTcsMTEsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsCisgICAgMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsCisgICAgMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsCisgICAgMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDAsCisgICAgMywwLDAsMCwxMTcsMzgsMCwwLDAsODMsMTAxLDExNiwzMiw5NSw5NSwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LAorICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwwLAorICAgIDMxLDAsMCwwLDExNSw0OSwwLDAsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LAorICAgIDEsMCwxMjQsMiwwLDE0MiwxLDAsMTI1LDMsMCwxMTYsMCwwLDEyNCwzLAorICAgIDAsMTAwLDEsMCwxMzEsMiwwLDExNSw0NSwwLDEyNCwwLDAsMTI0LDMsMCwKKyAgICA5NSwxLDAsMTEwLDAsMCwxMjQsMywwLDgzLDQwLDIsMCwwLDAsNzgsCisgICAgMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsNDAsCisgICAgMiwwLDAsMCwxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAorICAgIDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQwLAorICAgIDQsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsCisgICAgMCwwLDk3LDExNCwxMDMsMTE1LDExNyw2LDAsMCwwLDEwNywxMTksOTcsMTE0LDEwMywKKyAgICAxMTUsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMSwwLDAsCisgICAgMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsMTgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwKKyAgICAxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwxLDIsMCwwLDExNSw4LDAsMCwwLAorICAgIDAsMSwxOCwxLDE1LDEsMTIsMSwxMTcsMzgsMCwwLDAsMTE1LDEwMSwxMTYsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsCisgICAgNDYsMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwKKyAgICAxMTIsMTAxLDExNCw0MCwxLDAsMCwwLDExNyw1LDAsMCwwLDk1LDExOSwxMTQsCisgICAgOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsMTE3LAorICAgIDE4LDAsMCwwLDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE5LAorICAgIDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwxLDAsMCwwLAorICAgIDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTE1LAorICAgIDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwyNTUsMSwwLDAsMTE1LDYsMCwKKyAgICAwLDAsMCwyLDE4LDUsMTMsMSwxMTcsMTAsMCwwLDAsMTE1LDEwMSwxMTYsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwKKyAgICAwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwKKyAgICAxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwKKyAgICAxMjQsMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDQyLDMsMCwwLDY4LDEwMSwKKyAgICA5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LAorICAgIDEwMSwzMiwxMTUsMTAxLDEwOCwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDg0LDEwNCwxMDEsMzIsMTAwLDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTcsCisgICAgMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDUsMTE1LDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMTcsCisgICAgMTE1LDEwMSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEwLDMyLDMyLDMyLDMyLDExMCw5NywxMDksCisgICAgMTAxLDQ2LDMyLDg0LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEyLDk3LAorICAgIDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwKKyAgICAxMTQsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSwzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTYsMzIsOTcsMTA4LDExNCwKKyAgICAxMDEsOTcsMTAwLDEyMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTEsMTE0LDMyLDEwNSwKKyAgICAxMTUsMzIsOTcsMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsCisgICAgNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsCisgICAgMzIsMTEwLDEwMSwxMTksNDQsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDk1LDk1LDExMCw5NywxMDksCisgICAgMTAxLDk1LDk1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTAyLDEwNSwxMTQsMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwKKyAgICAxMTYsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw0NCwKKyAgICAzMiw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDMyLDEwNSwxMTUsMzIsMTE1LAorICAgIDEwMSwxMTYsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDEwOCwxMDIsNDQsMzIsOTcsMTEwLDEwMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsCisgICAgMTA1LDExNSwzMiwxMTUsMTAxLDExNiwzMiw5Nyw5OSw5OSwxMTEsMTE0LDEwMCwxMDUsMTEwLDEwMywKKyAgICAxMDgsMTIxLDMyLDQwLDEwNSwxMDIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwNSwxMTUsOTUsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDQwLDQxLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMDIsMTA1LAorICAgIDExMCwxMDEsMTAwLDQxLDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsCisgICAgMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwMiwxMTEsMTE0LDEwMSwzMiwxMDUsMTE2LDMyLDEwNSwKKyAgICAxMTUsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwMCwxMDEsOTksMTExLDExNCw5NywxMTYsMTAxLDEwMCwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsNDAsMTA1LDEwMiwzMiwxMTUsMTAxLDEwOCwxMDIsNDYsMTA1LDExNSw5NSwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsNDEsMzIsMTAwLDExMSwxMDEsMTE1LDEwLDMyLDMyLAorICAgIDMyLDMyLDExMCwxMTEsMTE2LDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMDIsMTExLDExNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE2LDMyLDExOSwxMDUsMTA4LAorICAgIDEwOCwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsMzIsMTEyLDExMSwxMTUsMTE2LDQ1LDEwOCwxMTEsCisgICAgOTcsMTAwLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiw5NywxMTAsMzIsCisgICAgMTAxLDEyMCw5OSwxMDEsMTEyLDExNiwxMDUsMTExLDExMCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsCisgICAgMTE1LDEwMSwxMDAsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLDk5LDExMSwKKyAgICAxMTQsOTcsMTE2LDExMSwxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDEwMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE2LDMyLDEwNSwxMTUsMTAsMzIsCisgICAgMzIsMzIsMzIsMTE1LDExNyw5OCwxMTUsMTAxLDExMywxMTcsMTAxLDExMCwxMTYsMTA4LDEyMSwzMiwKKyAgICAxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMjEsMTE1LAorICAgIDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiw5NywxMTUsMTE1LAorICAgIDExNywxMDksMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLAorICAgIDk5LDExMSwxMTQsOTcsMTE2LDEwMSwxMDAsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLAorICAgIDMyLDExNiw5NywxMDcsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiw5NywxMTUsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwKKyAgICAxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDcsMCwwLDAsMjUsMCwwLDAsMzEsMCwwLDAsMTE1LDI1NCwwLAorICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwxLAorICAgIDAsMTI1LDQsMCwxMjQsNCwwLDEwMCwwLDAsMTA3LDksMCwxMjUsNSwwLAorICAgIDEyNCw1LDAsMTE1LDE2OCwwLDExNiw0LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwKKyAgICA0LDAsMTAwLDMsMCwxMjQsNCwwLDk1LDYsMCwxMjQsNCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMjQsMSwwLDYwLDEyNCwwLDAsMTI0LDQsMCw5NSw3LAorICAgIDAsMTIxLDE5LDAsMTI0LDAsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwKKyAgICAxMjUsNiwwLDg3LDExMCwyNCwwLDQsMTE2LDksMCwxMTYsMTAsMCwxMDIsMiwKKyAgICAwLDEwNywxMCwwLDExNCwxMjQsMCwxLDEsMSw4OSwxMTMsMTc3LDAsODgsMTI0LAorICAgIDYsMCwxMTQsMTQzLDAsMTI0LDEsMCwxMjQsNCwwLDk1LDExLDAsMTEzLDE3NywKKyAgICAwLDEyNCwxLDAsMTA2LDEyLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsCisgICAgMjUsMTI0LDQsMCw5NSwxMSwwLDExMCw5LDAsMTAwLDMsMCwxMjQsNCwwLAorICAgIDk1LDYsMCwxMjIsNjAsMCwxMjEsMjMsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LAorICAgIDQsMCwxMjQsMiwwLDEyNCwzLDAsMTQyLDIsMCw4Myw4NywxMTAsMzAsMCwKKyAgICAxLDEsMSwxMjQsNSwwLDExNSwyMjgsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LAorICAgIDEsMCw2MSwxMTAsMCwwLDEzMCwwLDAsODksMTEwLDEsMCw4OCw4NywxMDAsCisgICAgMCwwLDEwMCw0LDAsMTI0LDQsMCw5NSw2LDAsODgsMTAwLDAsMCw4MywKKyAgICA0MCw1LDAsMCwwLDc4LDExNywxLDAsMCwwLDQ2LDEwNSwwLDAsMCwKKyAgICAwLDg0LDcwLDQwLDE0LDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LAorICAgIDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMywwLDAsCisgICAgMCwxMDMsMTAxLDExNiwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTAsMCwKKyAgICAwLDAsMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsMCwwLAorICAgIDAsODQsMTE0LDExNywxMDEsMTE3LDE2LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKKyAgICAxMDUsOTcsMTA4LDEwNSwxMjIsMTA1LDExMCwxMDMsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNywxMSwwLDAsMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTQsMCwwLDAsNjUsMTE2LDExNiwKKyAgICAxMTQsMTA1LDk4LDExNywxMTYsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsCisgICAgOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNywxMCwwLDAsMCwKKyAgICAxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsNSwwLDAsMCw3MCwKKyAgICA5NywxMDgsMTE1LDEwMSw0MCw3LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsCisgICAgMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LAorICAgIDQsMCwwLDAsOTcsMTE0LDEwMywxMTUsMTE3LDYsMCwwLDAsMTA3LDExOSw5NywKKyAgICAxMTQsMTAzLDExNSwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsOSwKKyAgICAwLDAsMCwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE3LDEwLDAsMCwKKyAgICAwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQwLDEsMCwwLDAsCisgICAgMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDI1LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMjgsMiwwLAorICAgIDAsMTE1LDQ0LDAsMCwwLDAsMSwxOCwxLDEyLDEsNiw0LDEyLDMsCisgICAgOSwxLDEzLDEsOSwxLDMsMSwxOSwxLDE5LDEsNSwyLDYsMSwKKyAgICAxMiwyLDI1LDIsOSwxLDYsMiwyMywxLDMsMSw2LDEsMTMsMSwKKyAgICAxMiwyLDExNyw1MiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLAorICAgIDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSwKKyAgICA2Miw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDEsMCwwLDAsCisgICAgMTE3LDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwwLDAsMCwxMTcsCisgICAgMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMjUsMCwwLDAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsMTAyLDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCw0MCwwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LAorICAgIDMsMCwwLDAsMTAyLDEyMCwxMTAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDEwLAorICAgIDIsMCwwLDExNSw2LDAsMCwwLDAsMTgsMTgsMzMsMTMsMSwxMTcsMTcsCisgICAgMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLDExMSwxMTQsOTUsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCw0LDAsMCwwLDMsMCwwLDAsMTE1LDM4LDAsMCwwLDEwMCwzLAorICAgIDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMSwwLAorICAgIDEyNSwxLDAsMTE2LDEsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLAorICAgIDEyNCwxLDAsODMsNDAsNCwwLDAsMCwxMTcsMjUyLDAsMCwwLDY4LDEwMSwKKyAgICA5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwKKyAgICAxMjEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsCisgICAgMTAwLDMyLDEwOSw5NywxMTYsOTksMTA0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTExLDExMCwKKyAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAzMiw5OSw5NywxMTAsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMiwxMDUsMTE0LDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsCisgICAgMTA5LDEwMSwxMTAsMTE2LDMyLDQwLDExNSwxMDEsMTA4LDEwMiw0MSwzMiwxMDksMTE3LDExNSwxMTYsCisgICAgMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMzIsOTUsMTEwLDk3LDEwOSwxMDEsMzIsMTE5LDEwNCwKKyAgICAxMDUsOTksMTA0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsOTksMTExLDExMCwxMDAsMzIsOTcsCisgICAgMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTksCisgICAgMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiw0NiwKKyAgICAzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwNSwxMTUsCisgICAgMTExLDExMCwzMiwxMDIsOTcsMTA1LDEwOCwxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwKKyAgICAxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCw1LDAsMCwwLDMxLDAsMCwwLDExNSwKKyAgICA4MywwLDAsMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjQsMCwKKyAgICAxMjQsMCwwLDEwNiwxLDAsMTI1LDEsMCwxMTAsNDAsMCwxMjQsMCwwLDEwNiwKKyAgICAxLDAsMTI0LDEsMCwxMDcsMywwLDExNCw2NCwwLDExNiwyLDAsMTAwLDEsCisgICAgMCwxMjQsMSwwLDIyLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLAorICAgIDAsMTEwLDAsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLAorICAgIDEyNCwzLDAsMTQyLDIsMCw4Myw0MCwzLDAsMCwwLDc4LDExNywyMywwLAorICAgIDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwKKyAgICAxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDM3LDExNSwxMTcsNCwwLDAsMCwxMTAsOTcsCisgICAgMTA5LDEwMSw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLAorICAgIDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywxMSwwLDAsMCw3MywxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCw0MCw0LDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsNCwwLDAsMCw5NywxMTQsMTAzLDExNSwxMTcsNiwwLDAsMCwxMDcsMTE5LAorICAgIDk3LDExNCwxMDMsMTE1LDQwLDEsMCwwLDAsMTE3LDYsMCwwLDAsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE5LDAsMCwwLAorICAgIDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLAorICAgIDExMiwxMDEsMTE0LDczLDIsMCwwLDExNSwxMCwwLDAsMCwwLDEsMTIsMSwKKyAgICAxMiwxLDE1LDEsMjUsMSwxMTcsNDAsMCwwLDAsOTUsOTksMTA0LDEwMSw5OSwKKyAgICAxMDcsOTUsMTEwLDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LAorICAgIDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLAorICAgIDExMiwxMDEsMTE0LDc4LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLAorICAgIDExMCwxMDEsMTE3LDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwwLDAsCisgICAgMCwxMTcsNiwwLDAsMCwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsMTksMCwwLAorICAgIDAsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywKKyAgICAxMTIsMTEyLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwxLDAsMCwwLDExNyw2LAorICAgIDAsMCwwLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsCisgICAgOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsNjUsMiwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCw4LDIxLDYsMTMsMSwxMTcsMTEsMCwwLDAsOTUsCisgICAgOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwKKyAgICAzNSwwLDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLAorICAgIDEzNCwwLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsCisgICAgMiwwLDEsMTI0LDEsMCw4Myw0MCwzLDAsMCwwLDExNyw0OSwwLDAsCisgICAgMCw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsCisgICAgMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsCisgICAgMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsCisgICAgMCwwLDAsMTksMCwwLDAsMTE1LDU4LDAsMCwwLDEyNCwxLDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDEwNyw3LDAsMTE0LDQ1LDAsMTE2LDIsMCwxMDAsMSwKKyAgICAwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwyLDAsMTI0LDEsMCwKKyAgICAxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LAorICAgIDEsMCwxMzEsMiwwLDgzLDQwLDMsMCwwLDAsNzgsMTE3LDI3LDAsMCwKKyAgICAwLDEyMywxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiw5OCwxMTcsMTA1LAorICAgIDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLDAsCisgICAgMCwxMTAsOTcsMTA5LDEwMSw0MCw0LDAsMCwwLDExNywzLDAsMCwwLDExNSwKKyAgICAxMjEsMTE1LDExNywyMCwwLDAsMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTE3LDExLDAsMCwwLAorICAgIDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsMCwwLAorICAgIDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksCisgICAgMTAxLDQwLDEsMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsNDAsMCwKKyAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDI1LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsCisgICAgMTEyLDEwMSwxMTQsODUsMiwwLDAsMTE1LDgsMCwwLDAsMCwxLDE1LDEsCisgICAgMTgsMSwxMiwxLDExNyw1MiwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKKyAgICAxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsCisgICAgMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywKKyAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDEsMCwKKyAgICAwLDAsMTE3LDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwwLDAsCisgICAgMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMjUsMCwwLDAsOTUsMTE0LAorICAgIDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwKKyAgICAxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwwLDAsMCwwLDQwLDEsMCwwLAorICAgIDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCwKKyAgICA5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDgzLDIsMCwwLDExNSw2LDAsMCwwLDAsMiwxOCw1LDEzLDEsCisgICAgMTE3LDE3LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTksMSwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwzNSwwLDAsMCwKKyAgICAxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI1LAorICAgIDEsMCwxMTYsMCwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LAorICAgIDEsMCw4Myw0MCwzLDAsMCwwLDExNyw0NywwLDAsMCw2OCwxMDEsOTksCisgICAgMTExLDExNCw5NywxMTYsMTExLDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQ2LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsMTksMCwwLAorICAgIDAsMTE1LDU4LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwKKyAgICAxLDAsMTE1LDQ1LDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTI0LDEsCisgICAgMCwxMzEsMSwwLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsCisgICAgMTEwLDAsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLAorICAgIDQwLDMsMCwwLDAsNzgsMTE3LDI1LDAsMCwwLDEyMywxMjUsMzIsMTA1LDExNSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSw0MCw0LDAsCisgICAgMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNyw5LDAsMCwwLAorICAgIDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LDExLDAsMCwwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsMCwwLDEwMiwxMTEsCisgICAgMTE0LDEwOSw5NywxMTYsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLAorICAgIDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLAorICAgIDEsMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDI0LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwKKyAgICAxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsCisgICAgOTYsMiwwLDAsMTE1LDgsMCwwLDAsMCwxLDE1LDEsMTgsMSwxMiwKKyAgICAxLDExNyw1MCwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKKyAgICA5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDEsMCwwLDAsMTE3LDUsMCwKKyAgICAwLDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwwLDAsMCwxMTcsMywwLDAsCisgICAgMCwxMDIsMTIwLDExMCwxMTcsMjQsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsCisgICAgMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLAorICAgIDExNCw0MCwwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgMTAyLDEyMCwxMTAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxNiwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk0LDIsMCwwLDExNSw2LAorICAgIDAsMCwwLDAsMiwxOCw1LDEzLDEsMTE3LDE2LDAsMCwwLDk1LDExNCwKKyAgICAxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsODcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLAorICAgIDAsMTMxLDEsMCw5MiwyLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwyLDAsCisgICAgMTAwLDMsMCwxMDcsOCwwLDExNCw4MywwLDExNiwyLDAsMTI0LDMsMCwxMzEsCisgICAgMSwwLDExNCw4MywwLDEwMCwxLDAsMTI1LDQsMCwxMTYsMywwLDEwNiw0LAorICAgIDAsMTI0LDQsMCwxMDYsNSwwLDEyNCwzLDAsMTAwLDIsMCwyNSwxMzEsMSwKKyAgICAwLDExNiw2LDAsMTMxLDIsMCwxLDExMCwwLDAsMTI0LDIsMCw4Myw0MCwKKyAgICA0LDAsMCwwLDExNyw4NiwwLDAsMCw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMjEsMzIsMTAwLDEwMSwxMDgsMTAxLDEwMyw5NywKKyAgICAxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDEwOCwxMDIsCisgICAgNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTE3LAorICAgIDQ0LDAsMCwwLDc4LDExMSwxMTYsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwKKyAgICAxMDMsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMjMsMTI1LDU4LDMyLAorICAgIDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsCisgICAgMTA1LDAsMCwwLDAsNzgsNDAsNywwLDAsMCwxMTcsMTEsMCwwLDAsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDQsMCwwLDAsCisgICAgNzgsMTExLDExMCwxMDEsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsMTE3LDksMCwwLAorICAgIDAsOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDExNyw0LDAsMCwwLDExOSwKKyAgICA5NywxMTQsMTEwLDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDEzLAorICAgIDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywKKyAgICA0MCw1LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwKKyAgICAwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDYsMCwwLDAsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsOCwwLDAsMCwxMTIsMTExLDExNCwxMTYsMTA1LAorICAgIDExMSwxMTAsMTE1LDExNywzLDAsMCwwLDEwOSwxMTUsMTAzLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LDAsMCwwLDk1LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksMTA1LDIsMCwKKyAgICAwLDExNSwxMCwwLDAsMCwwLDYsMjEsMSwyNCwxLDYsMSwzMiwxLAorICAgIDExNywxNywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDk5LDEsMCwwLDAsMCwwLDAsMCwxLAorICAgIDAsMCwwLDYsMCwwLDAsNjYsMCwwLDAsMTE1LDE3MywwLDAsMCwKKyAgICAxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAorICAgIDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwxMDAsMywwLDEzMiwKKyAgICAwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDQsMCwxMDAsMTQsMCwxMDAsNCwKKyAgICAwLDEwMCw1LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDcsMCwxMDEsNCwwLAorICAgIDEwMSw4LDAsMTAxLDksMCwxMDEsMTAsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLAorICAgIDAsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDExLAorICAgIDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCwKKyAgICAxMzEsMSwwLDEzMSwxLDAsOTAsMTIsMCwxMDEsNCwwLDEwMSwxMCwwLDEwMCwKKyAgICAxMCwwLDEwMCwxMSwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEzLAorICAgIDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLAorICAgIDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLDEwMCwxNCwwLDgzLDQwLDE1LDAsCisgICAgMCwwLDExNywxNSwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE3LDE0NCwwLDAsMCw3NywxMDEsMTE2LDk3LDMyLAorICAgIDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCisgICAgMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDk5LDEwOCwKKyAgICA5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsMTA1LDk5LDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LDExOCwxMTEsMTA1LDEwMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsCisgICAgMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKKyAgICAxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMSwKKyAgICAwLDEzMSwxLDAsODMsNDAsMiwwLDAsMCw3OCwxMTcsMjQsMCwwLDAsCisgICAgNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMzksMTIzLDEyNSwzOSwzMiw0MCw5OCwxMTcsCisgICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSw2Miw0MCwyLDAsMCwwLDExNyw2LDAsCisgICAgMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsOTUsOTUsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwKKyAgICAxMDgsMTE1LDExNyw2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwxMzEsMiwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCwyLDExNywyNywwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCisgICAgMTE0LDEwMSwxMTIsMTE0LDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM5LDAsMCwwLDEyNCwyLAorICAgIDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxNiwwLDEwMCwxLDAsODMsMTE2LDEsCisgICAgMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsMCwxMTQsMzUsMCwxMjQsMCwwLAorICAgIDgzLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsMTEzLDAsMCwwLDcwLAorICAgIDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiwxMDUsMTE1LDMyLDEwMSwKKyAgICAxMTgsMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMDQsCisgICAgMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwKKyAgICAzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiw5NywzMiwxMDIsOTcsCisgICAgMTA1LDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA3OCw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywKKyAgICA0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMCwwLDAsMCwxMDUsMTE1LDk1LAorICAgIDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQwLDMsMCwwLDAsMTE3LDMsMCwwLAorICAgIDAsOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEzNSwyLDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDcsMTIsMSw0LDEsMTE3LDI3LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTI0LAorICAgIDEsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LDYsMCwxMjUsMiwwLDEyMSwyMCwKKyAgICAwLDExNiwyLDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMTMxLDIsMCwKKyAgICA4Myw4NywxMTAsNDYsMCwxLDEsMSwxMjQsMiwwLDEyLDExNCw3NiwwLDEyNCwKKyAgICAxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw2LDAsMTE0LDc2LDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDEyNCwxLDAsNjEsMTEwLDAsMCwxMzAsMCwwLDg5LDExMCwKKyAgICAxLDAsODgsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNywyMywwLDAsCisgICAgMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDQwLDUsMCwwLDAsMTE3LDMsCisgICAgMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE1LDExNywyNSwwLDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LAorICAgIDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwKKyAgICAxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsMTA1LDExMCwKKyAgICAxMDUsMTE2LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQwLDMsMCwwLDAsMTE3LAorICAgIDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE3LDksMCwwLDAsMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsCisgICAgOTcsMTAwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLAorICAgIDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE0NiwyLAorICAgIDAsMCwxMTUsMTQsMCwwLDAsMCw2LDE1LDEsMywxLDIwLDEsMywKKyAgICAxLDIyLDEsMTMsMSwxMTcsMjcsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLAorICAgIDEsMCw4Myw0MCwyLDAsMCwwLDExNyw1NywwLDAsMCw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsCisgICAgMTA2LDEwMSw5OSwxMTYsMTE1LDQ2LDc4LDQwLDEsMCwwLDAsMTE3LDQsMCwwLAorICAgIDAsNzgsMTExLDExMCwxMDEsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwKKyAgICAxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwKKyAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLAorICAgIDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDE2MCwyLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDQsMTE3LDI0LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDAsMiwKKyAgICAwLDAsMCwxMTcsNTYsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwKKyAgICAxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LAorICAgIDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0NiwKKyAgICA3OCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLAorICAgIDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwwLDAsCisgICAgMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwxNjYsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LDExNywKKyAgICAyNiwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDAsMiwwLDAsCisgICAgMCwxMTcsNTIsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3MCw5NywxMDgsCisgICAgMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwKKyAgICAzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDQ2LDcwLDQwLDEsMCwwLDAsCisgICAgMTE3LDUsMCwwLDAsNzAsOTcsMTA4LDExNSwxMDEsNDAsMiwwLDAsMCwxMTcsCisgICAgMywwLDAsMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwKKyAgICAxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNywxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxNzIsCisgICAgMiwwLDAsMTE1LDIsMCwwLDAsMCw0LDExNywyNiwwLDAsMCw2NiwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LAorICAgIDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNzgsNDAsMTUsMCwwLDAsMTE3LAorICAgIDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCwKKyAgICA5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsCisgICAgMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNywxMSwwLDAsMCw5OSwxMDgsOTcsCisgICAgMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsMTEsMCwwLDAsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsCisgICAgMTAxLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE3LDExLDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSwxMTcsMTAsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTcsMTcsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksCisgICAgMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsCisgICAgMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksCisgICAgOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxNSwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLDIsMCwwLDExNSwyOCwwLDAsMCwxNiw3LAorICAgIDYsMiwxOCw0LDMsMSwxOCwxMCwzLDEsMywxLDMsMSwyNywxMSwKKyAgICAzLDEsMjEsNSwzLDEsMjEsNSwzLDEsMTE3LDE1LDAsMCwwLDY2LAorICAgIDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw2LDAsMCwwLDY2LAorICAgIDAsMCwwLDExNSwxNzMsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLAorICAgIDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwKKyAgICAwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLAorICAgIDEwMSw0LDAsMTAwLDE0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwxLDAsMTMxLAorICAgIDEsMCw5MCw3LDAsMTAxLDQsMCwxMDEsOCwwLDEwMSw5LDAsMTAxLDEwLAorICAgIDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLAorICAgIDEzMSwxLDAsMTMxLDEsMCw5MCwxMSwwLDEwMSw0LDAsMTAxLDEwLDAsMTAwLAorICAgIDgsMCwxMDAsOSwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEyLAorICAgIDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLAorICAgIDEzMSwxLDAsMTMxLDEsMCw5MCwxMywwLDEwMSw0LDAsMTAxLDEwLDAsMTAwLAorICAgIDEyLDAsMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTQsCisgICAgMCwxMDAsMTQsMCw4Myw0MCwxNSwwLDAsMCwxMTcsMTQsMCwwLDAsNzAsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE3LDE0MiwwLAorICAgIDAsMCw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLAorICAgIDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwKKyAgICAxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsCisgICAgMTA1LDk5LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LDExOCwKKyAgICAxMTEsMTA1LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OSwxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsCisgICAgMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDAsMiwwLDAsMCw3OCwKKyAgICAxMTcsMjIsMCwwLDAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMzksMTIzLDEyNSwKKyAgICAzOSwzMiw0MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0MSw2Miw0MCwyLDAsMCwwLAorICAgIDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDgsMCwwLDAsCisgICAgOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsNDAsMiwwLDAsMCwxMTcsMywwLAorICAgIDAsMCw5OSwxMDgsMTE1LDExNywxLDAsMCwwLDEwOSw0MCwwLDAsMCwwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMTg4LDIsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsMiwxMTcsMjYsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsCisgICAgMTE0LDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDIzLDAsMCwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsMTE0LDE5LDAsMTI0LDAsMCw4MywxMDAsMSwKKyAgICAwLDgzLDQwLDIsMCwwLDAsMTE3LDIxLDAsMCwwLDcwLDEwNSwxMTAsMTAwLAorICAgIDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQ2LDc4LDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsCisgICAgMTE3LDksMCwwLDAsMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTcsNCwKKyAgICAwLDAsMCw3OCwxMTEsMTEwLDEwMSw0MCwzLDAsMCwwLDExNywzLDAsMCwKKyAgICAwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksCisgICAgMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTIsMiwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAzLDExNywyNiwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsOSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTAwLDAsMCwwLDEyNCwxLDAsMTE2LDAsMCwKKyAgICAxMDYsMSwwLDEwNyw2LDAsMTI1LDIsMCwxMjEsMzIsMCwxMTYsMiwwLDExNiwKKyAgICAzLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDMsMCwxMjQsMywKKyAgICAwLDk2LDUsMCwxMjQsMywwLDgzLDg3LDExMCw0NiwwLDEsMSwxLDEyNCwKKyAgICAyLDAsMTIsMTE0LDg4LDAsMTI0LDEsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LAorICAgIDYsMCwxMTQsODgsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCw2MSwxMTAsCisgICAgMCwwLDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsMSwwLDgzLDQwLDIsCisgICAgMCwwLDAsMTE3LDIxLDAsMCwwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsNDAsNiwKKyAgICAwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LDEwOCwKKyAgICAxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwKKyAgICAxMDksMTExLDExOCwxMDEsMTAwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMSwKKyAgICAwLDAsMCwxMDUsMTEwLDEwNSwxMTYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LDgsCisgICAgMCwwLDAsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDQwLDQsMCwwLDAsCisgICAgMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwKKyAgICAxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDksMCwwLDAsMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwKKyAgICAxMTEsOTcsMTAwLDExNywxLDAsMCwwLDEwOSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxOTcsMiwwLDAsMTE1LDE4LDAsMCwwLDAsNiwKKyAgICAxNSwxLDMsMSwxOCwyLDYsMSw4LDEsMywxLDIyLDEsMTMsMSwKKyAgICAxMTcsMjYsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwKKyAgICAxLDAsMTMxLDEsMCw4Myw0MCwxLDAsMCwwLDExNyw0NSwwLDAsMCwKKyAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLAorICAgIDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw0MCwyLDAsCisgICAgMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxNywwLDAsMCwKKyAgICAxMDMsMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTEsOTgsMTA2LDEwMSw5OSwKKyAgICAxMTYsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw4LAorICAgIDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LAorICAgIDk5LDExMSwxMDAsMTAxLDIxNCwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTE3LAorICAgIDIzLDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw1NCwKKyAgICAwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LAorICAgIDExNSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDQwLDEsMCwwLDAsMTE3LAorICAgIDQsMCwwLDAsNzgsMTExLDExMCwxMDEsNDAsMiwwLDAsMCwxMTcsMywwLAorICAgIDAsMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsCisgICAgMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwKKyAgICAwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDIyMCwyLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDQsMTE3LDI1LDAsMCwwLDcwLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsCisgICAgMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MCwxLDAsCisgICAgMCwwLDExNyw0NiwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwKKyAgICAxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsNDYsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCw5NSwKKyAgICAxMDUsMTA5LDExMiwxMTcsMTcsMCwwLDAsMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsMiwwLDAsMCwxMTcsMywKKyAgICAwLDAsMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsCisgICAgOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICAxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwyMjYsMiwKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCw0LDExNywyNSwwLDAsMCw3MCwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw3OCw0MCwxNSwwLDAsMCwxMTcsOCwwLAorICAgIDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LAorICAgIDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LAorICAgIDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LAorICAgIDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNywxMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LAorICAgIDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsCisgICAgMTEsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNywKKyAgICAxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxNiwKKyAgICAwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKKyAgICAxMTcsMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTcsCisgICAgMTAsMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsMSwKKyAgICAwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LAorICAgIDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE0LAorICAgIDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDE3OSwyLDAsMCwxMTUsMjgsMCwwLDAsMTYsNyw2LDIsMTgsNCwKKyAgICAzLDEsMTgsNCwzLDEsMywxLDMsMSwyNywxNCwzLDEsMjEsNSwKKyAgICAzLDEsMjEsNSwzLDEsMTE3LDE0LDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDQsMCwwLDAsNjYsMCwwLDAsMTE1LDEwMSwKKyAgICAwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsCisgICAgOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsOTAsNCwwLDEwMCwKKyAgICAzLDAsOTAsNSwwLDEwMCwxMSwwLDkwLDcsMCwxMDEsOCwwLDEwMCw0LAorICAgIDAsMTAwLDUsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw4LDAsCisgICAgMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSwKKyAgICA4LDAsMTAwLDEwLDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwxLDAsMTMxLDEsCisgICAgMCw5MCwxMiwwLDEwMCwxMCwwLDgzLDQwLDEyLDAsMCwwLDExNywyMSwwLAorICAgIDAsMCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwKKyAgICAxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsNjcsMCwwLDAsNzcsMTAxLDExNiw5NywKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDEwMSw5OSwxMDgsOTcsMTE0LDEwMSwKKyAgICAxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSwKKyAgICAzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LDEwLDMyLDMyLDMyLDMyLDExNywKKyAgICA1OSwwLDAsMCw4MywxMTEsMTAyLDExNiwxMTksOTcsMTE0LDEwMSw5Miw4MCwxMjEsMTE2LAorICAgIDEwNCwxMTEsMTEwLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsNjcsMTExLDExNCwxMDEsOTIsMTIzLAorICAgIDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMjUsOTIsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTUsOTIsMTIzLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMjUsMTE3LAorICAgIDY1LDAsMCwwLDgzLDExMSwxMDIsMTE2LDExOSw5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsCisgICAgMTA0LDExMSwxMTAsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsCisgICAgMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw5MiwxMjMsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSw5MiwKKyAgICA2OCwxMDEsOTgsMTE3LDEwMyw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsNjcsMCwwLDAsMTIxLAorICAgIDIzLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwwLDAsMTA2LDIsMCwxMjQsMSwKKyAgICAwLDEzMSwyLDAsODMsODcsMTEwLDM3LDAsNCwxMTYsMywwLDEwNywxMCwwLAorICAgIDExNCw2MiwwLDEsMSwxLDExNiwwLDAsMTA2LDEsMCwxMTYsMCwwLDEwNiwKKyAgICA0LDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg5LDExMCwxLDAsODgsMTAwLDAsCisgICAgMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDUsMCwwLDAsMTE3LDcsMCwKKyAgICAwLDAsOTUsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE3LDcsMCwwLDAsNzksMTEyLAorICAgIDEwMSwxMTAsNzUsMTAxLDEyMSwxMTcsMTcsMCwwLDAsNzIsNzUsNjksODksOTUsNjcsCisgICAgODUsODIsODIsNjksNzgsODQsOTUsODUsODMsNjksODIsMTE3LDEyLDAsMCwwLAorICAgIDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTgsMCwwLAorICAgIDAsNzIsNzUsNjksODksOTUsNzYsNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsCisgICAgNzMsNzgsNjksNDAsMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LAorICAgIDExNywzLDAsMCwwLDEwNywxMDEsMTIxLDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDE0LDAsMCwwLDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDI0NiwyLDAsMCwxMTUsOCwwLDAsMCwKKyAgICAwLDIsMywxLDIzLDEsMTMsMSwxMTcsMzYsMCwwLDAsODcsMTA1LDExMCwKKyAgICAxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDYsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwKKyAgICAxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDE0MiwwLDAsMCwxMjQsMCwwLDEwNiwwLAorICAgIDAsMTE0LDIxLDAsMTI0LDAsMCwxMDYsMSwwLDEyNSwyLDAsMTEwLDksMCwKKyAgICAxMjQsMCwwLDEwNiwyLDAsMTI1LDIsMCwxMjQsMiwwLDEwNiwzLDAsMTAwLAorICAgIDEsMCwxMjQsMSwwLDEwMCwyLDAsMTE2LDQsMCwxMDYsNSwwLDEwMCwwLAorICAgIDAsMTAwLDMsMCwxMzMsMiwwLDI1LDEzMSwwLDIsMTI1LDMsMCwxMjEsNDYsCisgICAgMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMSwwLDE0MywyNSwwLAorICAgIDEyNSw0LDAsMTE2LDcsMCwxMDYsOCwwLDEyNCw0LDAsMTAwLDQsMCwxMzEsCisgICAgMiwwLDEyNSw1LDAsODcsMTAwLDAsMCw4MSw4OCw4NywxMTAsMjIsMCw0LAorICAgIDExNiw5LDAsMTA3LDEwLDAsMTE0LDEzNywwLDEsMSwxLDEwMCwwLDAsODMsCisgICAgODksMTEwLDEsMCw4OCwxMjQsNSwwLDgzLDQwLDUsMCwwLDAsNzgsMTE3LAorICAgIDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNywxMSwwLDAsCisgICAgMCwxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTA1LDMsMCwwLAorICAgIDAsMTE3LDAsMCwwLDAsNDAsMTEsMCwwLDAsMTE3LDExLDAsMCwwLAorICAgIDY4LDY5LDY2LDg1LDcxLDk1LDY2LDg1LDczLDc2LDY4LDExNywxOCwwLDAsMCwKKyAgICA4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSw2OSw4OSw5NSw2OCw2OSw2NiwKKyAgICA4NSw3MSwxMTcsMTIsMCwwLDAsODIsNjksNzEsNzMsODMsODQsODIsODksOTUsCisgICAgNzUsNjksODksMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMywKKyAgICAwLDAsMCwxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwxMTgsMTAxLDExNCwxMTUsMTA1LAorICAgIDExMSwxMTAsMTE3LDE0LDAsMCwwLDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsMTAxLDEwMywKKyAgICAxMDUsMTE1LDExNiwxMTQsMTIxLDExNyw3LDAsMCwwLDk1LDExOSwxMDUsMTEwLDExNCwxMDEsCisgICAgMTAzLDExNywxMCwwLDAsMCw4MSwxMTcsMTAxLDExNCwxMjEsODYsOTcsMTA4LDExNywxMDEsCisgICAgMTE3LDEyLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSw0MCw2LDAsMCwwLDExNywKKyAgICAzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LAorICAgIDExMCw5NywxMDksMTAxLDExNywxMiwwLDAsMCwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsCisgICAgMTIxLDk1LDEwNywxMDEsMTIxLDExNywzLDAsMCwwLDEwNywxMDEsMTIxLDExNyw0LDAsCisgICAgMCwwLDEwNCwxMDcsMTAxLDEyMSwxMTcsOCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsMTEyLAorICAgIDk3LDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgMTYsMCwwLDAsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwKKyAgICAxMTUsMTE2LDExNCwxMjEsMjUzLDIsMCwwLDExNSwyMiwwLDAsMCwwLDIsOSwKKyAgICAxLDEyLDIsOSwxLDE1LDEsMjIsMSwzLDEsMTgsMSwyOCwxLDEzLAorICAgIDEsOSwxLDExNywzOCwwLDAsMCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwKKyAgICAxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTUsCisgICAgMTAxLDk3LDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsNywwLDAsMCwxMiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTQwLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwKKyAgICAwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDgsMCwKKyAgICAxMTQsMzEsMCwxMDAsMSwwLDgzLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwKKyAgICAxMjQsMywwLDEzMSwxLDAsMSw4NywxMTAsMjIsMCw0LDExNiw0LDAsMTA3LAorICAgIDEwLDAsMTE0LDcyLDAsMSwxLDEsMTAwLDEsMCw4Myw4OSwxMTAsMSwwLAorICAgIDg4LDEyMCw2MCwwLDExNiw1LDAsMTMxLDAsMCw2OCw5Myw0OSwwLDkyLDMsCisgICAgMCwxMjUsNCwwLDEyNSw1LDAsMTI1LDYsMCwxMjQsMywwLDEwNiw2LDAsCisgICAgMTE2LDcsMCwxMjQsNSwwLDEzMSwxLDAsMTMxLDEsMCwxMTQsODMsMCwxMjQsCisgICAgNCwwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwwLDgzLDExMyw4MywwLDg3LAorICAgIDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsMzQsMCwwLDAsNzAsMTA1LAorICAgIDExMCwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLAorICAgIDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwKKyAgICA3OCw0MCw4LDAsMCwwLDExNywxNiwwLDAsMCw5NSwxMTUsMTAxLDk3LDExNCwKKyAgICA5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwxMTcsNCwwLDAsMCwKKyAgICA3OCwxMTEsMTEwLDEwMSwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw0LDAsMCwKKyAgICAwLDExNSwxMTYsOTcsMTE2LDExNyw3LDAsMCwwLDc5LDgzLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTcsMjcsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMTE1LDExNyw4LDAsMCwwLDEwMSwxMTAsMTAwLDExNSwxMTksMTA1LDExNiwxMDQsMTE3LDUsCisgICAgMCwwLDAsMTE2LDExNywxMTIsMTA4LDEwMSw0MCw3LDAsMCwwLDExNywzLDAsCisgICAgMCwwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw4LDAsMCwwLAorICAgIDEwMiwxMDUsMTA4LDEwMSwxMTIsOTcsMTE2LDEwNCwxMTcsNiwwLDAsMCwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNyw4LDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsCisgICAgMTE3LDEsMCwwLDAsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDEyLDMsMCwwLDExNSwyMCwwLDAsMCwwLDMsMTUsMSwxMiwKKyAgICAxLDQsMSwzLDEsMTcsMSwxMywxLDksMSwyNSwxLDIxLDEsMTE3LAorICAgIDMzLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwKKyAgICAxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw3MCw0MCwxMywwLDAsMCwxMTcsOCwwLDAsCisgICAgMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywKKyAgICAxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LAorICAgIDEwMCwxMTEsOTksOTUsOTUsMTE3LDEyLDAsMCwwLDgyLDY5LDcxLDczLDgzLDg0LAorICAgIDgyLDg5LDk1LDc1LDY5LDg5LDExNywxOCwwLDAsMCw4Miw2OSw3MSw3Myw4MywKKyAgICA4NCw4Miw4OSw5NSw3NSw2OSw4OSw5NSw2OCw2OSw2Niw4NSw3MSwxMTcsNSwwLAorICAgIDAsMCw3MCw5NywxMDgsMTE1LDEwMSwxMTcsMTEsMCwwLDAsNjgsNjksNjYsODUsCisgICAgNzEsOTUsNjYsODUsNzMsNzYsNjgsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsCisgICAgMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNywxNCwwLDAsMCw5NSwxMTEsMTEyLDEwMSwKKyAgICAxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwxMTcsMTYsMCwwLDAsOTUsCisgICAgMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsMTE3LAorICAgIDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLAorICAgIDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjEsMCwwLDAsODcsMTA1LDExMCwKKyAgICAxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsMjMzLDIsMCwwLDExNSwxNiwwLDAsMCwxNiwzLDYsMyw2LAorICAgIDMsNiwyLDYsMiwxOCw3LDE4LDE1LDMsMSwxMTcsMjEsMCwwLDAsCisgICAgODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsNSwwLDAsMCw2NiwwLDAsMCwxMTUsNzQsMCwwLDAsMTI0LAorICAgIDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsCisgICAgMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LAorICAgIDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMSw2LDAsCisgICAgMTAwLDYsMCwxMDAsMTAsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMSwxMzEsCisgICAgMSwwLDkwLDgsMCwxMDAsOSwwLDgzLDQwLDExLDAsMCwwLDExNywxMywKKyAgICAwLDAsMCw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsCisgICAgMTE3LDgzLDAsMCwwLDY2LDk3LDExNSwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsCisgICAgMTExLDEwMiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMCwKKyAgICAxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5OCwxMTEsMTE2LDEwNCwzMiw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsMzIsCisgICAgMzIsMzIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDUsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwKKyAgICAwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwKKyAgICAwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsCisgICAgMCwxMDAsMiwwLDEwMCwxLDAsMTMxLDIsMCwxMDAsMywwLDI1LDEyNSwzLAorICAgIDAsMTI0LDEsMCwxMDYsMywwLDEwMCwyLDAsMTMxLDEsMCwxMDAsNCwwLAorICAgIDI1LDEyNSw0LDAsMTI0LDMsMCwxMDAsNSwwLDEwNywyLDAsMTExLDg3LDAsCisgICAgMTI0LDQsMCwxMDAsNSwwLDEwNywzLDAsODMsNDAsNiwwLDAsMCwxMTcsCisgICAgMTQxLDAsMCwwLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLAorICAgIDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywKKyAgICAxMDUsMTEwLDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwKKyAgICAzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwKKyAgICAxMTEsMTAyLDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0NiwxMTIsMTIxLDM5LAorICAgIDQ2LDEwNSwxLDAsMCwwLDExNywxLDAsMCwwLDQ2LDEwNSwwLDAsMCwKKyAgICAwLDEwNSwyLDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LAorICAgIDExNiw5NSw5NSw0MCw0LDAsMCwwLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNywxMiwwLDAsMCwxMDMsMTAxLDExNiwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDYsMCwwLDAsMTE0LDExNSwKKyAgICAxMTIsMTA4LDEwNSwxMTYsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LAorICAgIDEwNSwxMTEsMTEwLDQwLDUsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsOCwKKyAgICAwLDAsMCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDEzLDAsMCwwLAorICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5NSw5OCw5NywxMTUsMTAxLDExNyw5LDAsCisgICAgMCwwLDExNiw5NywxMDUsMTA4LDk1LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDMsMCwwLDExNSw4LDAsMCwwLDAsCisgICAgMywyNSwxLDIyLDEsMTksMSwxMTcsMjQsMCwwLDAsOTUsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDk5LDUsMCwwLDAsMCwwLDAsMCwxMiwwLDAsCisgICAgMCwyMiwwLDAsMCw2NywwLDAsMCwxMTUsMTk4LDEsMCwwLDEyNCwyLAorICAgIDAsMTAwLDEsMCwxMDAsMiwwLDEzMywyLDAsMjUsMTI1LDUsMCwxMjQsMiwKKyAgICAwLDEwMCwyLDAsMTAwLDMsMCwxMzMsMiwwLDI1LDEyNSw2LDAsMTI0LDIsCisgICAgMCwxMDAsMywwLDEwMCw0LDAsMTMzLDIsMCwyNSwxMjUsNywwLDEyNCw1LAorICAgIDAsMTE2LDAsMCwxMDcsMywwLDExNCwxMDUsMCwxMDAsNSwwLDEwNiwxLDAsCisgICAgMTI0LDEsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LDgsMCwxMTYsMiwwLDEyNCwKKyAgICA4LDAsMTAwLDYsMCwxMjQsMSwwLDEwMCw3LDAsMTI0LDMsMCwxMzEsMSwKKyAgICAyLDEzMCwxLDAsMTEwLDExNiwwLDExNiwzLDAsMTI0LDYsMCwxMzEsMSwwLAorICAgIDEwMCwyLDAsMTA3LDMsMCwxMTQsMTYzLDAsMTAwLDgsMCwxMDYsMSwwLDEyNCwKKyAgICAxLDAsMTMxLDEsMCwxMjUsOSwwLDExNiw0LDAsMTI0LDksMCwxMzEsMSwKKyAgICAwLDEsMTE2LDUsMCwxMjQsOSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsNTgsCisgICAgMCwxMTYsMywwLDEyNCw3LDAsMTMxLDEsMCwxMDAsMiwwLDEwNywzLDAsCisgICAgMTE0LDIyMSwwLDEwMCw5LDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LAorICAgIDksMCwxMTYsNCwwLDEyNCw5LDAsMTMxLDEsMCwxLDExNiw1LDAsMTI0LAorICAgIDksMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsNCwwLDEwMCwxLAorICAgIDAsMTA3LDksMCwxMTQsMTg0LDEsMTIxLDIwLDAsMTE2LDcsMCwxMjQsNCwwLAorICAgIDEwMCwxMCwwLDI1LDEzMSwxLDAsMTI1LDEwLDAsODcsMTEwLDE4LDAsNCwxMTYsCisgICAgOCwwLDEwNywxMCwwLDExNCwxNywxLDEsMSwxLDg5LDExMCw3MSwwLDg4LAorICAgIDExNiw5LDAsMTI0LDYsMCwxMzEsMSwwLDEyNCwxMCwwLDEwNywzLDAsMTE0LAorICAgIDg4LDEsMTAwLDExLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDksCisgICAgMCwxMTYsNCwwLDEyNCw5LDAsMTMxLDEsMCwxLDExNiwyLDAsMTI0LDksCisgICAgMCwxMDAsNiwwLDEyNCwxLDAsMTAwLDcsMCwxMjQsMywwLDEzMSwxLDIsCisgICAgMTMwLDEsMCwxMTAsMCwwLDEyMSwxOCwwLDEyNCw0LDAsMTAwLDEyLDAsMjUsCisgICAgMTAwLDEzLDAsNjQsMTI1LDExLDAsODcsMTEwLDE4LDAsNCwxMTYsOCwwLDEwNywKKyAgICAxMCwwLDExNCwxMjYsMSwxLDEsMSw4OSwxMTMsMTg0LDEsODgsMTE2LDksMCwKKyAgICAxMjQsNywwLDEzMSwxLDAsMTI0LDExLDAsMTA3LDMsMCwxMTQsMTg0LDEsMTE2LAorICAgIDIsMCwxMDAsMTEsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMDAsNiwKKyAgICAwLDEyNCwxLDAsMTAwLDcsMCwxMjQsMywwLDEzMSwxLDIsMTMwLDEsMCwKKyAgICAxMTMsMTg0LDEsMTEwLDAsMCwxMjQsMiwwLDEwMCw0LDAsMTAwLDEsMCwxMzMsCisgICAgMiwwLDI1LDgzLDQwLDE0LDAsMCwwLDExNywxOTMsMCwwLDAsODIsMTAxLAorICAgIDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LAorICAgIDEwOCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDQsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMTA1LAorICAgIDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDk3LDEwMywxMDUsOTksMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCw0NCwzMiwxMTYsMTA1LDEwOSwKKyAgICAxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDk3LDExMCwxMDAsMzIsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwzMiwxMTUsMTA1LDEyMiwxMDEsMzIsOTcsMTA4LDExMSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExOSw5NywxMjEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsCisgICAgMTAyLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDEwNSwKKyAgICAxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNSwxMDcsMTA1LDExMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDk5LAorICAgIDEwNCwxMDEsOTksMTA3LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LAorICAgIDEwNSw0LDAsMCwwLDEwNSw4LDAsMCwwLDEwNSwxMiwwLDAsMCwxMTcsCisgICAgMzAsMCwwLDAsOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsCisgICAgMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsCisgICAgMTE0LDEyNSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwKKyAgICAxMTIsOTcsMTE2LDEwNCwxMTcsMTksMCwwLDAsOTgsOTcsMTAwLDMyLDExNiwxMDUsMTA5LAorICAgIDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTA1LDExMCwzMiwxMjMsMTI1LDExNywxNCwwLDAsCisgICAgMCw5OCw5NywxMDAsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsMzIsMTIzLDEyNSwxMTcsCisgICAgNSwwLDAsMCwxMDksMTE2LDEwNSwxMDksMTAxLDExNywyNCwwLDAsMCw5OCwxMjEsCisgICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMTYsOTcsMTA4LDEwMSwzMiwKKyAgICAxMDIsMTExLDExNCwzMiwxMjMsMTI1LDExNyw0LDAsMCwwLDExNSwxMDUsMTIyLDEwMSwxMDgsCisgICAgMywwLDAsMCwyNTUsMTI3LDI1NSwxMjcsMywwLDQwLDEwLDAsMCwwLDExNywKKyAgICAxMiwwLDAsMCw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw2Niw4OSw4NCw2OSw4MywKKyAgICAxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywxMSwwLDAsMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMywwLDAsMCwKKyAgICAxMDgsMTAxLDExMCwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsCisgICAgOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDgsMCwwLDAsNjksNzksNzAsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywzLAorICAgIDAsMCwwLDEwNSwxMTAsMTE2LDExNyw4LDAsMCwwLDc1LDEwMSwxMjEsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDExNyw3LDAsMCwwLDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsNDAsCisgICAgMTIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsCisgICAgMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMDAsCisgICAgOTcsMTE2LDk3LDExNywxMywwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTE3LDUsMCwwLDAsMTA5LDk3LDEwMywxMDUsOTksCisgICAgMTE3LDEzLDAsMCwwLDExNCw5NywxMTksOTUsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsCisgICAgMTA5LDExMiwxMTcsOCwwLDAsMCwxMTQsOTcsMTE5LDk1LDExNSwxMDUsMTIyLDEwMSwxMTcsCisgICAgMywwLDAsMCwxMDksMTE1LDEwMywxMTcsNywwLDAsMCwxMDksMTAxLDExNSwxMTUsCisgICAgOTcsMTAzLDEwMSwxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDksCisgICAgMTE2LDEwNSwxMDksMTAxLDExNywxMSwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAorICAgIDExNSwxMDUsMTIyLDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNywyMCwwLDAsMCw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTA5LAorICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDQwLDMsMCwwLDExNSw2NiwwLAorICAgIDAsMCwwLDcsMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDI3LDEsCisgICAgMTgsMSwxNSwxLDEwLDEsMTUsMSwxOCwxLDE1LDEsMTAsMSwxNSwxLAorICAgIDEyLDEsMywxLDIwLDEsMTMsMSw1LDIsMTgsMSwxNSwxLDEwLDEsCisgICAgMTUsMSwxMiwxLDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsMywxLAorICAgIDE1LDEsMjEsMywxMTcsMzQsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDk1LDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDIsMTE0LAorICAgIDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwwLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDk5LDIsMCwwLDAsMSwKKyAgICAwLDAsMCw1LDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAyMjcsMCwwLDAsMTI0LDEsMCwxMDYsMCwwLDEyNSwzLDAsMTI0LDAsMCwKKyAgICAxMDYsMSwwLDEyNCwzLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCwwLDAsMTA2LAorICAgIDIsMCwxMjQsMywwLDEzMSwxLDAsMTI0LDEsMCw5NSwzLDAsMTI0LDIsCisgICAgMCwxMTUsMTA2LDAsMTIxLDIyLDAsMTE2LDQsMCwxMjQsMSwwLDEwNiwzLDAsCisgICAgMTMxLDEsMCwxMjQsMSwwLDk1LDUsMCw4NywxMTMsMTE4LDAsNCwxMTYsNiwKKyAgICAwLDEwNywxMCwwLDExNCwxMDIsMCwxLDEsMSwxMjQsMSwwLDEwNiwzLDAsCisgICAgMTI0LDEsMCw5NSw1LDAsODksMTEzLDExOCwwLDg4LDExMCwxMiwwLDEyNCwxLAorICAgIDAsMTA2LDMsMCwxMjQsMSwwLDk1LDUsMCwxMjQsMywwLDEyNCwxLDAsCisgICAgOTUsNywwLDEyNCwwLDAsMTA2LDgsMCwxMjQsMywwLDEzMSwxLDAsMTE0LAorICAgIDE3MCwwLDExNiw5LDAsMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsMTAwLDEsCisgICAgMCwyNSwxMDMsMSwwLDEyNCwxLDAsOTUsMTAsMCwxMTAsMjUsMCwxMjQsMSwKKyAgICAwLDEwNiw3LDAsMTA2LDExLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwxLDAsCisgICAgMjUsMTI0LDEsMCw5NSw3LDAsMTI0LDAsMCwxMjQsMSwwLDk1LDEyLDAsCisgICAgMTE2LDEzLDAsMTE2LDE0LDAsMTI0LDQsMCwxMjQsMSwwLDEwNiwxNSwwLDEzMSwKKyAgICAzLDAsMSwxMjQsMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDgyLDAsMCwKKyAgICAwLDcyLDEwMSwxMDgsMTEyLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLAorICAgIDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwzMiwxMTEsMTE0LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwKKyAgICAxMTUsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwKKyAgICAxMTAsMTAzLDQ2LDEwNSwwLDAsMCwwLDExNywxLDAsMCwwLDQ2LDQwLDE2LAorICAgIDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LAorICAgIDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywxMiwwLAorICAgIDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDgsCisgICAgMCwwLDAsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNywxNywwLDAsMCwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDExNywxMCwwLDAsMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwKKyAgICAxMTcsMTksMCwwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSw5NSwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDk1LDExNywxMCwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwKKyAgICAxMDUsMTExLDExMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA5NSw5NSwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwKKyAgICAxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsCisgICAgMTE3LDQsMCwwLDAsMTAxLDEyMCwxMDEsOTksMTE3LDgsMCwwLDAsOTUsOTUsCisgICAgMTAwLDEwNSw5OSwxMTYsOTUsOTUsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTUsMTAxLDEwOCwxMDIsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LAorICAgIDEwLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDExNyw0LAorICAgIDAsMCwwLDExMCw5NywxMDksMTAxLDExNywxMSwwLDAsMCw5OSwxMTEsMTAwLDEwMSwKKyAgICA5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsODUsMywwLDAsMTE1LDMyLDAsMCwwLDAsNCw5LAorICAgIDEsMTUsMSwxOCwxLDYsMSwzLDEsMjIsMSwxMywxLDIwLDIsMTIsCisgICAgMSw5LDEsMTUsMSwyOCwyLDI1LDEsOSwxLDE5LDEsMTE3LDI2LDAsCisgICAgMCwwLDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw3MCw0MCw5LAorICAgIDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LAorICAgIDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsCisgICAgMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsMTAsMCwwLAorICAgIDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDIwLDAsMCwwLAorICAgIDk1LDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsCisgICAgOTksMTExLDEwMCwxMDEsMTE3LDE3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAorICAgIDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDUsMCwwLDAsNzAsCisgICAgOTcsMTA4LDExNSwxMDEsMTE3LDEyLDAsMCwwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LAorICAgIDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMywwLDAsMCw5NSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsMjcsMywwLDAsMTE1LDEwLDAsMCwwLAorICAgIDE2LDMsNiwyLDEyLDgsMTIsNDUsNiwxLDExNywxMywwLDAsMCw5NSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NiwwLDAsCisgICAgMCwxMTUsMTA0LDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsCisgICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsCisgICAgMywwLDEwMCwzLDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwKKyAgICAwLDEwMCw2LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCwxMDAsOCwwLAorICAgIDEzMiwwLDAsOTAsNiwwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCw5MCwKKyAgICA3LDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDEzLAorICAgIDAsMTAwLDE0LDAsMTMyLDAsMCw5MCw5LDAsMTAwLDE1LDAsODMsNDAsMTYsCisgICAgMCwwLDAsMTE3LDEyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsCisgICAgMCwxMzAsMSwwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsMTIxLDAsCisgICAgMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCisgICAgMTAwLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsCisgICAgMTE2LDEwNSwxMDksMTAxLDMyLDQwLDk3LDExMCwzMiwxMDUsMTEwLDExNiw0MSwzMiwxMDIsMTExLAorICAgIDExNCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLAorICAgIDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDQ0LDMyLDExOSwxMDQsCisgICAgMTAxLDExNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiw5NywzMiwxMTUsMTE2LAorICAgIDExNCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MCwxLDAsMCwKKyAgICAwLDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAorICAgIDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsNDAsMiwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLAorICAgIDAsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTEsMywwLDAsMTE1LAorICAgIDIsMCwwLDAsMCw0LDExNywyMywwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LAorICAgIDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjAsMCwwLDAsMTA1LDEsMCwxMjQsCisgICAgMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwxLDAsNTQsODMsCisgICAgNDAsMiwwLDAsMCwxMTcsMTE0LDEsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsCisgICAgOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDEwNSwxMTAsMTAzLDMyLDk3LDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAwLAorICAgIDEwNSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksCisgICAgMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwxMTYsMTExLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiw0MCwxMTUsMTE2LDExNCw0MSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiw4MCwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMDcsMTAxLDEyMSwxMTUsNTgsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTA5LDExNiwxMDUsMTA5LDEwMSwKKyAgICAzOSwzMiw0MCwxMDksOTcsMTEwLDEwMCw5NywxMTYsMTExLDExNCwxMjEsNDEsMzIsMTA1LDExNSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTYsMTA1LDEwOSwKKyAgICAxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDExMSwxMDIsMzIsMTA4LDk3LDExNSwxMTYsMzIsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsNTksMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTE1LDEwNSwKKyAgICAxMjIsMTAxLDM5LDMyLDQwLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCw0MSwzMiwxMDUsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMDUsMTEwLDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDExNSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAorICAgIDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTE0LAorICAgIDEwMSw5NywxMDAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsCisgICAgMTAxLDExNSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTcsNSwwLDAsCisgICAgMCwxMDksMTE2LDEwNSwxMDksMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsNDAsMiwwLDAsMCwxMTcsCisgICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwKKyAgICAwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNywzLDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDEwLDExNywyMywwLDAsMCw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsCisgICAgOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKKyAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsMTI0LDIsMCwxMjQsMywwLDEzMSwyLDAsODMsNDAsMSwwLAorICAgIDAsMCwxMTcsMjI4LDAsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLAorICAgIDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwKKyAgICAxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwKKyAgICAzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICA0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksCisgICAgMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLAorICAgIDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsCisgICAgMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsCisgICAgMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LAorICAgIDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDExNiwxMTQsCisgICAgOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwKKyAgICAxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQwLDEsMCwwLDAsCisgICAgMTE3LDgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCw0LDAsCisgICAgMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMTEsMCwwLDAsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTAsMCwwLDAsCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsCisgICAgOTcsMTE2LDk3LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksCisgICAgMTExLDEwMCwxMDEsMTI5LDMsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTcsMjgsCisgICAgMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKKyAgICA5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk5LAorICAgIDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDEsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDAsMTMwLDEsMCwxMDAsCisgICAgMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDE1MSwwLDAsMCw3OSwxMTIsMTE2LAorICAgIDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSwKKyAgICA5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiw0MCwKKyAgICA5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCisgICAgMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwKKyAgICAxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDc4LDQwLDEsMCwwLDAsMTE3LDE5LDAsMCwwLDc4LAorICAgIDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsCisgICAgMTExLDExNCw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsCisgICAgMTE2LDk3LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsCisgICAgMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMzksMywwLDAsMTE1LAorICAgIDIsMCwwLDAsMCw2LDExNywyMSwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDksMCwwLDAsNDQsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDYyLDEsMCwwLDEwMCwxLDAsMTAwLDIsMCwKKyAgICAxMDgsMCwwLDEyNSwyLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLAorICAgIDEsMCwxMjUsMywwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMywKKyAgICAwLDEzMSwxLDAsMTI1LDQsMCw4NywxMTAsNTgsMCw0LDExNiwzLDAsMTA3LAorICAgIDEwLDAsMTE0LDEwNiwwLDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiw0LDAsCisgICAgMTAwLDMsMCwxMDAsNCwwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwwLDEzMCwKKyAgICAyLDAsODcsODksMTAwLDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LDUsMCwKKyAgICA4OCwxMTAsMSwwLDg4LDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLAorICAgIDAsMTA2LDcsMCwxMjUsNiwwLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDgsMCwKKyAgICAxMjQsNiwwLDEzMSwxLDAsMTI1LDcsMCw4NywxMTAsNTgsMCw0LDExNiw5LAorICAgIDAsMTA3LDEwLDAsMTE0LDIwNCwwLDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiwKKyAgICA0LDAsMTAwLDUsMCwxMDAsNCwwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwKKyAgICAwLDEzMCwyLDAsODcsODksMTAwLDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LAorICAgIDUsMCw4OCwxMTAsMSwwLDg4LDExNiw1LDAsMTA2LDEwLDAsMTAwLDIsMCwKKyAgICAxMDAsNywwLDEzMSwyLDAsMTI1LDgsMCwxMjEsMzAsMCwxMjQsOCwwLDEwNiwKKyAgICAxMywwLDEyNCw0LDAsMTA2LDEzLDAsMTI0LDcsMCwxMDAsMSwwLDI1LDEzMSwKKyAgICAxLDAsMTMxLDEsMCw4Myw4NywxMTAsNTgsMCw0LDExNiwxNCwwLDEwNywxMCwKKyAgICAwLDExNCw1NywxLDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiw0LDAsMTAwLAorICAgIDYsMCwxMDAsNCwwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwwLDEzMCwyLAorICAgIDAsODcsODksMTAwLDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LDUsMCw4OCwKKyAgICAxMTAsMSwwLDg4LDEwMCwyLDAsODMsNDAsOCwwLDAsMCwxMTcsNTIsMCwKKyAgICAwLDAsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwKKyAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwKKyAgICAxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSw0NiwxMDUsMCwwLDAsMCw3OCwxMTcsMzksMCwwLAorICAgIDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsMTA1LAorICAgIDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDMsMTAxLAorICAgIDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDQxLDExNyw0LDAsMCwwLDExMCw5NywxMDksCisgICAgMTAxLDExNywyNSwwLDAsMCw3MCw5NywxMDUsMTA4LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwKKyAgICAxMDAsMTAxLDExNiwxMDEsOTksMTE2LDMyLDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMywxMTcsCisgICAgMjgsMCwwLDAsNzAsOTcsMTA1LDEwOCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSwKKyAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKKyAgICA4NCw0MCwxNSwwLDAsMCwxMTcsOCwwLDAsMCwxMTYsMTExLDEwNywxMDEsMTEwLAorICAgIDEwNSwxMjIsMTAxLDExNywxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiwKKyAgICA5NywxMTcsNywwLDAsMCw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDExLDAsCisgICAgMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNywzLDAsCisgICAgMCwwLDk1LDEwNSwxMTEsMTE3LDcsMCwwLDAsNjYsMTIxLDExNiwxMDEsMTE1LDczLAorICAgIDc5LDExNyw4LDAsMCwwLDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSwxMTcsMTUsCisgICAgMCwwLDAsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LAorICAgIDExMCwxMDMsMTE3LDExLDAsMCwwLDgzLDEyMSwxMTAsMTE2LDk3LDEyMCw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE3LDI1LDAsMCwwLDczLDExMCw5OSwxMTQsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICA5NywxMDgsNzgsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwKKyAgICAxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsCisgICAgMTE3LDEwMSwxMTcsNiwwLDAsMCwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNywxOCwwLAorICAgIDAsMCw4NSwxMTAsMTA1LDk5LDExMSwxMDAsMTAxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsNDAsOSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLAorICAgIDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNywKKyAgICA4LDAsMCwwLDExNiwxMTEsMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMTE3LDQsMCwwLAorICAgIDAsMTEyLDk3LDExNiwxMDQsMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgOTUsOTgsMTIxLDExNiwxMDEsMTE1LDExNywzLDAsMCwwLDEwMSwxMjAsOTksMTE3LDEwLAorICAgIDAsMCwwLDExNCwxMDEsOTcsMTAwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDgsMCwKKyAgICAwLDAsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDExNywxNSwwLDAsMCwxMTAsCisgICAgMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsOTUsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxNDgsMywwLDAsMTE1LDM4LDAsCisgICAgMCwwLDAsMiwxMiwxLDE1LDEsMywxLDE5LDEsMTgsMSw5LDEsCisgICAgMzEsMSwxOCwxLDMsMSwxOSwxLDE4LDEsOSwxLDMxLDEsMTgsMSwKKyAgICAzLDEsMzAsMSwxOCwxLDksMSwxMTcsMjMsMCwwLDAsODMsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwxMiwwLDAsCisgICAgMCw0NSwwLDAsMCw2NywwLDAsMCwxMTUsNTIsMiwwLDAsMTI0LDAsCisgICAgMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxMCwwLAorICAgIDEyNSwzLDAsMTIxLDE2LDAsMTE2LDIsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LAorICAgIDQsMCw4NywxMTAsMjQsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYzLDAsCisgICAgMSwxLDEsMTAwLDEwLDAsMTI1LDQsMCw4OSwxMTAsMTQsMSw4OCwxMjEsMTksCisgICAgMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw1LDAsCisgICAgODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwxMDMsMCwxLDEsCisgICAgMSw4OSwxMTAsMjMwLDAsODgsMTE2LDUsMCwxMjQsNSwwLDEwMCwxLDAsMjUsCisgICAgMTMxLDEsMCwxMjUsMywwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsCisgICAgNCwwLDEzMSwxLDAsMTI1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsCisgICAgMTA3LDEwLDAsMTE0LDE1OSwwLDEsMSwxLDg5LDExMCwxNzQsMCw4OCwxMjEsMjgsCisgICAgMCwxMjQsMCwwLDEwNiw4LDAsMTI0LDEsMCwxMjQsNiwwLDEyNCw0LDAsCisgICAgMTI0LDUsMCwxMzEsNCwwLDEyNSw3LDAsODcsMTEwLDI0LDAsNCwxMTYsOSwKKyAgICAwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLDAsMTE0LDIxNCwwLDEsMSwxLAorICAgIDg5LDExMCwxMTksMCw4OCwxMTYsMTEsMCwxMDAsMiwwLDEyNCw0LDAsMTI0LDIsCisgICAgMCwxMzEsMywwLDEsMTE2LDEyLDAsMTA2LDEzLDAsMTI0LDcsMCwxMzEsMSwKKyAgICAwLDEyNSw4LDAsMTE2LDE0LDAsMTI0LDgsMCwxMTYsMTUsMCwxMzEsMiwwLAorICAgIDExNCwzOCwxLDExNiwxNiwwLDEwNiwxNywwLDEyNCw4LDAsMTI0LDIsMCwxMzEsCisgICAgMiwwLDEsMTE2LDExLDAsMTAwLDMsMCwxMjQsNCwwLDEzMSwyLDAsMSwKKyAgICAxMjQsOCwwLDgzLDEwMCw0LDAsMTI1LDksMCwxMTYsOSwwLDEyNCw5LDAsCisgICAgMTA2LDE4LDAsMTI0LDQsMCwxMzEsMSwwLDEwMCw1LDAsMTI0LDEsMCwxMDAsCisgICAgNiwwLDEyNCw0LDAsMTMxLDEsMiwxMzAsMSwwLDEyNCwwLDAsMTA2LDYsCisgICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDEwLDAsMTE2LDE5LDAsMTE2LDIwLDAsCisgICAgMTI0LDEwLDAsMTI0LDIsMCwxMDAsNywwLDEwMCw4LDAsMTAwLDExLDAsMTMxLAorICAgIDQsMSwxMjUsMTEsMCwxMTYsMTEsMCwxMDAsMywwLDEyNCwyLDAsMTMxLDIsCisgICAgMCwxLDExNiwyMiwwLDEwNiwyMywwLDEyLDExNCw0OCwyLDEyNCw0LDAsMTAwLAorICAgIDEwLDAsMTA3LDksMCwxMTQsNDgsMiwxMjQsMywwLDEwMCwxMCwwLDEwNyw5LAorICAgIDAsMTE0LDQ4LDIsMTE2LDI0LDAsMTE2LDI1LDAsMTMxLDEsMCwxMjUsNiwwLAorICAgIDEyNCw2LDAsMTA2LDI2LDAsMTE2LDI3LDAsMTI0LDMsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsMSwxMjQsNiwwLDEwNiwyNiwwLDExNiwyNywwLDExNiwyOCwwLDEyNCwKKyAgICAxMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDYsMCwxMDYsCisgICAgMjYsMCwxMTYsMTIsMCwxMDYsMjksMCwxMjQsMTEsMCwxMzEsMSwwLDEzMSwxLAorICAgIDAsMSwxMjEsMzYsMCwxMjQsMCwwLDEwNiwzMCwwLDEyNCwyLDAsMTI0LDQsCisgICAgMCwxMjQsNiwwLDEzMSwzLDAsMSwxMTYsMTEsMCwxMDAsOSwwLDEyNCw0LAorICAgIDAsMTMxLDIsMCwxLDg3LDExMyw0OCwyLDQsMTE2LDMsMCwxMDcsMTAsMCwKKyAgICAxMTQsNDQsMiwxLDEsMSw4OSwxMTMsNDgsMiw4OCwxMTAsMCwwLDEyNCwxMSwKKyAgICAwLDgzLDQwLDEyLDAsMCwwLDExNywxOTAsMCwwLDAsNjcsMTExLDExMCw5OSwKKyAgICAxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNCwxMDEsMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLAorICAgIDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMDAsNDYsMzIsODQsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDQsMzIsMTE1LDEwMSwKKyAgICAxMTYsOTUsMTAwLDk3LDExNiw5NywzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsCisgICAgMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE3LDUsMCwwLDAsMTA5LAorICAgIDExNiwxMDUsMTA5LDEwMSwxMTcsMTMsMCwwLDAsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LAorICAgIDEwNCwxMDEsMTE1LDMyLDEyMywxMjUsMTE3LDE5LDAsMCwwLDk5LDExMSwxMDAsMTAxLDMyLAorICAgIDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDEyNSwxMTcsMjEsCisgICAgMCwwLDAsNzgsMTExLDExMCw0NSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSwKKyAgICA5OSwxMTYsMzIsMTA1LDExMCwzMiwxMjMsMTI1LDExNyw0LDAsMCwwLDExMCw5NywxMDksCisgICAgMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMSwKKyAgICAxMjAsMTAxLDk5LDExNywxMiwwLDAsMCwxMDAsMTExLDExMCwxMTYsOTUsMTA1LDExMCwxMDQsCisgICAgMTAxLDExNCwxMDUsMTE2LDExNywxMCwwLDAsMCwxMTksMTE0LDExMSwxMTYsMTAxLDMyLDEyMywKKyAgICAzMywxMTQsMTI1LDc4LDg0LDQwLDMxLDAsMCwwLDExNywxMiwwLDAsMCwxMDMsCisgICAgMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsCisgICAgNzgsMTExLDExMCwxMDEsMTE3LDE3LDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLAorICAgIDExNCwxMTEsMTA5LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDE5LDAsMCwwLDc4LAorICAgIDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsCisgICAgMTExLDExNCwxMTcsMTAsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsCisgICAgMTE1LDExNywzLDAsMCwwLDEwNSwxMTAsMTE2LDExNyw4LDAsMCwwLDEwMywxMDEsCisgICAgMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE3LDcsMCwwLDAsNzMsNzksNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDExNywyMCwwLDAsMCw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwKKyAgICAxMTEsMTA5LDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNywxMSwwLDAsMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsOCwwLDAsMCwKKyAgICA2OSw3OSw3MCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsCisgICAgMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNyw3LDAsCisgICAgMCwwLDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsMTE3LDUsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsMTE1LDExNywxMCwwLDAsMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsCisgICAgOTksMTAxLDExNywxMCwwLDAsMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwKKyAgICAxMDEsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDE2LDAsMCwwLDk1LAorICAgIDEwMiwxMDUsMTIwLDk1LDk5LDExMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LAorICAgIDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMjUsMCwwLDAsOTUsCisgICAgOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwKKyAgICA5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDcsMCwwLDAsOTksMTExLDEwOSwKKyAgICAxMTIsMTA1LDEwOCwxMDEsMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LDMsMCwKKyAgICAwLDAsMTE1LDEyMSwxMTUsMTE3LDE5LDAsMCwwLDEwMCwxMTEsMTEwLDExNiw5NSwxMTksCisgICAgMTE0LDEwNSwxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNyw5LDAsCisgICAgMCwwLDk4LDEyMSwxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLDExNywxMiwwLDAsMCwKKyAgICA5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw2Niw4OSw4NCw2OSw4MywxMTcsNiwwLDAsCisgICAgMCwxMDEsMTIwLDExNiwxMDEsMTEwLDEwMCwxMTcsNywwLDAsMCw5NSwxMTksOTUsMTA4LAorICAgIDExMSwxMTAsMTAzLDExNywzLDAsMCwwLDEwOCwxMDEsMTEwLDExNyw1LDAsMCwwLAorICAgIDEwMCwxMTcsMTA5LDExMiwxMTUsMTE3LDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsCisgICAgOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDAsMTIsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCwxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwKKyAgICAxMDksMTE2LDEwNSwxMDksMTAxLDExNywxMywwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCisgICAgMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMiwwLDAsMCwxMTUsMTE2LDExNyw0LAorICAgIDAsMCwwLDEwMCw5NywxMTYsOTcsMTE3LDEwLDAsMCwwLDk4LDEyMSwxMTYsMTAxLAorICAgIDExNSw5NSwxMDAsOTcsMTE2LDk3LDExNyw1LDAsMCwwLDEwMiwxMTEsMTE3LDExMCwxMDAsCisgICAgMTE3LDMsMCwwLDAsMTA5LDExNSwxMDMsMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDExNywxMSwwLDAsMCw5OSwxMTEsCisgICAgMTAwLDEwMSw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCisgICAgMTAwLDEwMSwxNzAsMywwLDAsMTE1LDk4LDAsMCwwLDAsNywxNSwxLDYsCisgICAgMSwzLDEsMTYsMSwxMywxLDExLDIsMywxLDE5LDEsMTMsMSw1LAorICAgIDIsMTYsMSwzLDEsMTksMSwxMywxLDUsMiwzLDEsMTIsMSwzLAorICAgIDEsMTMsMSwxOSwxLDUsMiw5LDEsNywxLDE1LDEsMTUsMSwxNiwKKyAgICAxLDYsMSw3LDEsNCwyLDYsMSwxOCwxLDE1LDEsMTUsMSw2LAorICAgIDEsMTIsMSw5LDEsMTMsMSwyMiwxLDEyLDEsMTIsMSwxOSwxLDI1LAorICAgIDEsMjIsMSwzLDEsMTksMSwxNywxLDEzLDEsOCwxLDExNywyMSwwLAorICAgIDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywKKyAgICAxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwKKyAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsMSwKKyAgICAwLDAsMCwxMTcsMCwxLDAsMCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsCisgICAgMTExLDEwMiwzMiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgODIsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDUsCisgICAgMTExLDExMCw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsCisgICAgMTAxLDExMCw5NywxMDksMTAxLDMyLDk3LDExMCwxMDAsMzIsODIsMTAxLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsCisgICAgOTcsMzIsMTE2LDExMSwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsCisgICAgMzIsODUsMTE1LDEwMSwzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDEwNSwxMTUsMzIsMTAwLDEwNSw5OSwxMTYsOTcsMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLAorICAgIDExOSwxMDQsMTAxLDExNiwxMDQsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwzMiwxMTcsMTE1LDEwMSwxMTUsNDcsMTE5LDExNCwKKyAgICAxMDUsMTE2LDEwMSwxMTUsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDAsMSwwLDAsMCwxMTcsMTIsMCwKKyAgICAwLDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMiwKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLAorICAgIDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwKKyAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDIzMiwzLDAsMCwxMTUsMiwwLDAsMCwwLDgsCisgICAgMTE3LDI0LDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDAsMTAsCisgICAgMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywKKyAgICAxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwKKyAgICAxMTcsMTAsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsCisgICAgMTAsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNywxNSwKKyAgICAwLDAsMCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKKyAgICAxMDAsMTAxLDExNyw4LDAsMCwwLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE3LAorICAgIDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDgsCisgICAgMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE3LDExLDAsMCwwLAorICAgIDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsCisgICAgMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwKKyAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCwKKyAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEwOSwzLDAsMCwKKyAgICAxMTUsMTQsMCwwLDAsMTYsMiwxMiw2LDEyLDEyLDEyLDEwLDEyLDksMTIsCisgICAgMjIsMTIsNjIsMTE3LDEyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsNCwwLDAsMCwyLDAsMCwwLDExNSw5MiwwLDAsMCwxMjQsMCwKKyAgICAwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLAorICAgIDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwKKyAgICAxMDEsNSwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsNCwwLDEwMCw1LDAsMTM0LAorICAgIDAsMCwxMzEsMSwwLDkwLDYsMCwxMDEsNSwwLDEwMCw2LDAsMTAwLDcsCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsOTAsNywwLDEwMCw4LDAsMTAwLDksMCwKKyAgICAxMzIsMCwwLDkwLDgsMCwxMzUsMCwwLDgzLDQwLDEwLDAsMCwwLDExNywKKyAgICAxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDEwMywKKyAgICAwLDAsMCw2Niw5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTIsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDEwLDMyLDMyLDMyLDMyLAorICAgIDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsCisgICAgMTE2LDEwMSwxMDksMzIsMTE3LDExNSw5NywxMDMsMTAxLDQ2LDk5LDMsMCwwLDAsMCwKKyAgICAwLDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDIyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwKKyAgICAxMjQsMCwwLDk1LDEsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LAorICAgIDc1LDAsMCwwLDY3LDk3LDk5LDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsCisgICAgMTA4LDEwMSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw3OCwKKyAgICA0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LAorICAgIDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDMsMCwwLDAsMTE3LDQsMCwwLAorICAgIDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsCisgICAgMTA1LDExNiw5NSw5NSwyNDgsMywwLDAsMTE1LDQsMCwwLDAsMCwzLDksCisgICAgMSwxMTcsMTksMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDIyLAorICAgIDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwyLDAsMTA2LAorICAgIDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCwxMTcsMjYsCisgICAgMCwwLDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMDIsMTE0LDExMSwxMDksMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDQwLDMsMCwKKyAgICAwLDAsMTE3LDUsMCwwLDAsMTE1LDExNywxMTIsMTAxLDExNCwxMTcsMTAsMCwwLAorICAgIDAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwKKyAgICAxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwyLDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LAorICAgIDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMSwwLDAsMCwxMTcsOSwwLDAsMCwKKyAgICA5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSw5NSw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMjU0LDMsMCwwLDExNSwyLDAsMCwwLDAsNSwxMTcsMjIsMCwwLDAsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDcsMCwwLDAsCisgICAgMTI0LDAsMCwxMDYsMCwwLDgzLDQwLDEsMCwwLDAsMTE3LDU4LDAsMCwKKyAgICAwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiw5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNDAsMSwwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwyLDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsCisgICAgMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCisgICAgMTAxLDUsNCwwLDAsMTE1LDIsMCwwLDAsMCwzLDExNywyMywwLDAsCisgICAgMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCisgICAgMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwzLDAsMCwwLDgsMCwwLDAsNjcsMCwwLDAsMTE1LDQxLDAsCisgICAgMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsCisgICAgMCwxNDMsMTcsMCwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMzEsMCwwLAorICAgIDgzLDg3LDEwMCwyLDAsODEsODgsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLAorICAgIDExNywzOSwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwMCw5NywxMTYsOTcsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LAorICAgIDExNSwzMiwxMTQsOTcsMTE5LDMyLDk4LDEyMSwxMTYsMTAxLDExNSw0NiwxMTcsMSwwLDAsCisgICAgMCwxMTQsNzgsNDAsMywwLDAsMCwxMTcsMywwLDAsMCw5NSwxMDUsMTExLAorICAgIDExNyw2LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDczLDc5LDExNyw0LDAsMCwwLAorICAgIDExNCwxMDEsOTcsMTAwLDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwKKyAgICAxMDgsMTAyLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLAorICAgIDEwMiwxMDUsMTA4LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTAsNCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMCwyLDIxLDEsMTE3LDE5LDAsMCwwLDcwLAorICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDQwLDksMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LAorICAgIDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsCisgICAgMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LAorICAgIDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTEsMCwKKyAgICAwLDAsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDExLDAsCisgICAgMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMiwwLAorICAgIDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDgsCisgICAgMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCwxLDAsMCwwLAorICAgIDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsCisgICAgMCwwLDAsMCw0MCwxLDAsMCwwLDExNyw5LDAsMCwwLDk1LDk1LAorICAgIDk5LDEwOCw5NywxMTUsMTE1LDk1LDk1LDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDI0MywzLDAsMCwxMTUsMTAsMCwwLAorICAgIDAsMTYsMyw2LDIsMTIsNiwyNCw3LDE4LDUsMTE3LDEwLDAsMCwwLAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw0LDAsMCwwLDY2LDAsMCwwLDExNSwKKyAgICA2OCwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLAorICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwKKyAgICAxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKKyAgICA1LDAsMTAwLDYsMCwxMDAsNywwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwKKyAgICAxLDkwLDYsMCwxMDAsMTAsMCw4Myw0MCwxMSwwLDAsMCwxMTcsMTYsMCwKKyAgICAwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwxMTcsNjIsMCwwLDAsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwKKyAgICAxMDIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTcsCisgICAgMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLAorICAgIDExNSwxMTYsMTAxLDEwOSw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOSwwLDAsMCwxMTYsCisgICAgMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTA1LDIsCisgICAgMCwxMjQsMiwwLDEwNiwyLDAsMTAwLDEsMCw1NCwxMjQsMiwwLDEwNiwzLAorICAgIDAsMTAwLDIsMCw1NCw4Myw0MCwzLDAsMCwwLDExNywzMywwLDAsMCwKKyAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDk3LDEwMCwKKyAgICA5NywxMTYsOTcsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgNDYsMTE3LDUsMCwwLDAsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsNCwwLDAsMCwKKyAgICAxMTUsMTA1LDEyMiwxMDEsNDAsNCwwLDAsMCwxMTcsMywwLDAsMCw5NSwxMTEsCisgICAgMTE1LDExNyw0LDAsMCwwLDExNSwxMTYsOTcsMTE2LDExNyw4LDAsMCwwLDExNSwKKyAgICAxMTYsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsNywwLDAsMCwxMTUsMTE2LDk1LDExNSwKKyAgICAxMDUsMTIyLDEwMSw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LAorICAgIDEwMiwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsMiwwLDAsMCwxMTUsCisgICAgMTE2LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwyMCw0LDAsMCwKKyAgICAxMTUsNCwwLDAsMCwwLDIsMTUsMSwxMTcsMjcsMCwwLDAsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwwLDAsMCwwLDAsCisgICAgMCwwLDUsMCwwLDAsMTMsMCwwLDAsNjcsMCwwLDAsMTE1LDcxLAorICAgIDAsMCwwLDEyMSwyMiwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwKKyAgICAxLDAsMTA2LDIsMCwxMjUsNCwwLDg3LDExMCwyNCwwLDQsMTE2LDMsMCwKKyAgICAxMDcsMTAsMCwxMTQsNDgsMCwxLDEsMSwxMDAsMSwwLDEyNSw0LDAsODksCisgICAgMTEwLDEsMCw4OCwxMjQsMCwwLDEwNiw0LDAsMTI0LDIsMCwxMjQsMywwLAorICAgIDEwMCwyLDAsMTI0LDQsMCwxMzEsMiwxLDgzLDQwLDMsMCwwLDAsNzgsCisgICAgMTA1LDE4MiwxLDAsMCwxMTcsNSwwLDAsMCw5NSwxMDksMTExLDEwMCwxMDEsNDAsCisgICAgNSwwLDAsMCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw0LDAsMCwKKyAgICAwLDExNSwxMTYsOTcsMTE2LDExNyw3LDAsMCwwLDExNSwxMTYsOTUsMTA5LDExMSwxMDAsCisgICAgMTAxLDExNyw3LDAsMCwwLDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwxMTcsOCwwLAorICAgIDAsMCwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDUsMCwwLDAsMTE3LAorICAgIDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywxMSwwLDAsMCwxMTUsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNywxMywwLDAsMCw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsCisgICAgOTcsMTE2LDk3LDExNyw0LDAsMCwwLDEwOSwxMTEsMTAwLDEwMSw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNSwwLDAsMCw5NSw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDI1LDQsMCwwLAorICAgIDExNSwxMCwwLDAsMCwwLDIsMywxLDIyLDEsMTMsMSwxMSwxLDExNywKKyAgICAzMiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsCisgICAgOTksMTExLDEwMCwxMDEsMTE3LDUsMCwwLDAsOTUsMTA5LDExMSwxMDAsMTAxLDEwNSwxODIsCisgICAgMSwwLDAsOTksMywwLDAsMCwxLDAsMCwwLDgsMCwwLDAsCisgICAgMTMsMCwwLDAsNjcsMCwwLDAsMTE1LDI0NSwwLDAsMCwxMTYsMCwwLAorICAgIDEyNCwxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNSwwLDEwMywKKyAgICAwLDAsMTI1LDYsMCwxMjAsNTQsMCwxMjQsNCwwLDExNCw4MCwwLDExNiwxLAorICAgIDAsMTI0LDQsMCwxMzEsMSwwLDEyLDExNCw4MCwwLDExNiwwLDAsMTI0LDQsCisgICAgMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw3LDAsMTI0LDYsMCwKKyAgICAxMDYsMiwwLDEyNCw3LDAsMTMxLDEsMCwxLDExMywyNywwLDg3LDEyMCw5NywKKyAgICAwLDExNiwzLDAsMTI0LDYsMCwxMzEsMSwwLDY4LDkzLDgzLDAsMTI1LDcsCisgICAgMCwxMTYsNCwwLDEyNCw0LDAsMTI0LDcsMCwxMzEsMiwwLDEyNSw0LDAsCisgICAgMTIxLDE3LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LDAsMTMxLDEsMCwxLAorICAgIDg3LDExMyw5NCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTU1LDAsMSwxLAorICAgIDEsMTE5LDk0LDAsODksMTEzLDk0LDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwKKyAgICAxNzYsMCwxLDEsMSwxMDAsMSwwLDgzLDg5LDExMyw5NCwwLDg4LDExMyw5NCwKKyAgICAwLDg3LDEyMSwzMywwLDExNiw5LDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwzLAorICAgIDAsMTMxLDMsMCwxLDExNiwxMCwwLDEwMCwyLDAsMTI0LDEsMCwxMzEsMiwKKyAgICAwLDEsODcsMTEwLDI0LDAsNCwxMTYsOCwwLDExNiw3LDAsMTAyLDIsMCwKKyAgICAxMDcsMTAsMCwxMTQsMjQwLDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMDAsMSwKKyAgICAwLDgzLDQwLDMsMCwwLDAsMTE3LDI3LDAsMCwwLDg3LDExNCwxMDUsMTE2LAorICAgIDEwMSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLAorICAgIDk3LDMyLDEwMiwxMDUsMTA4LDEwMSw0Niw3OCwxMTcsMTIsMCwwLDAsOTksMTE0LDEwMSwKKyAgICA5NywxMTYsMTAxLDEwMCwzMiwxMjMsMzMsMTE0LDEyNSw0MCwxMSwwLDAsMCwxMTcsMTEsCisgICAgMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsMTEsCisgICAgMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCwxMTcsNiwKKyAgICAwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNyw4LDAsMCwwLDExNCwxMDEsCisgICAgMTE4LDEwMSwxMTQsMTE1LDEwMSwxMDAsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwNiwxMTEsMTA1LDExMCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw1LDAsCisgICAgMCwwLDEwOSwxMDcsMTAwLDEwNSwxMTQsMTE3LDE1LDAsMCwwLDcwLDEwNSwxMDgsMTAxLAorICAgIDY5LDEyMCwxMDUsMTE1LDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDExNywxNSwwLDAsMCwKKyAgICA4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LAorICAgIDEzLDAsMCwwLDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTcsMTE2LDExMSwxMDksMTA1LAorICAgIDk5LDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksCisgICAgMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw0MCw4LDAsMCwwLDExNyw0LDAsMCwwLAorICAgIDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLAorICAgIDAsMCwxMDAsOTcsMTE2LDk3LDExNyw1LDAsMCwwLDk1LDEwOSwxMTEsMTAwLDEwMSwKKyAgICAxMTcsNiwwLDAsMCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDExNyw4LDAsMCwwLAorICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsMTAsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTEyLDk3LDExNCwxMTYsMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTQsMTE2LAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLAorICAgIDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywzMyw0LDAsMCwxMTUsMzYsMCwKKyAgICAwLDAsMCwyLDE4LDEsNiwyLDIyLDEsMTgsMSwxNywyLDE5LDEsCisgICAgMTUsMSwzLDEsMTcsMSwxMywyLDcsMSwxMywzLDEzLDEsMywxLAorICAgIDE2LDEsMTcsMSwxOSwzLDExNywyNSwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LAorICAgIDEwMCw5NywxMTYsOTcsNzgsNDAsNywwLDAsMCwxMTcsOCwwLDAsMCw5NSwKKyAgICA5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsCisgICAgMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsCisgICAgOTksOTUsOTUsMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsCisgICAgMTE2LDExNSwxMTcsMTUsMCwwLDAsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsCisgICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsOCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDAsCisgICAgOTcsMTE2LDk3LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwKKyAgICAxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxNiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LAorICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDE2LDQsMCwwLDExNSw4LDAsMCwKKyAgICAwLDE2LDIsNiwyLDEyLDUsMTIsOCwxMTcsMTYsMCwwLDAsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY2LAorICAgIDAsMCwwLDExNSw2MiwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsCisgICAgMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLAorICAgIDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsCisgICAgMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsCisgICAgNiwwLDEwMCw4LDAsODMsNDAsOSwwLDAsMCwxMTcsMjAsMCwwLDAsCisgICAgODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE3LDQ1LDAsMCwwLDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwKKyAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMTUsMzIsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDExNSw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxOSwwLDAsMCwKKyAgICAxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDAsMSwwLDEwMCwyLDAsMTMxLAorICAgIDEsMSw4Myw0MCwzLDAsMCwwLDc4LDExNywxMCwwLDAsMCwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw4NCw0MCwyLDAsMCwwLDExNywxMiwKKyAgICAwLDAsMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsCisgICAgNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSw0MCwyLDAsMCwwLDExNyw0LDAsCisgICAgMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLAorICAgIDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjYsCisgICAgNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywzMiwwLDAsMCw4MywKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCw2LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxMzgsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwKKyAgICAxLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwKKyAgICAwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDEsMCwKKyAgICAxMjQsMywwLDEyNCwyLDAsMTAwLDAsMCwxMzEsNCwwLDEyNSw0LDAsMTE2LAorICAgIDQsMCwxMDYsNSwwLDEyNCw0LDAsMTMxLDEsMCwxMjUsNSwwLDExNiw2LAorICAgIDAsMTI0LDUsMCwxMTYsNywwLDEzMSwyLDAsMTE0LDEwMSwwLDExNiw4LDAsCisgICAgMTAwLDEsMCwxMjQsMiwwLDEzMSwyLDAsMSwxMjQsNSwwLDgzLDExNiw5LAorICAgIDAsMTAwLDIsMCwxMDYsMTAsMCwxMjQsMiwwLDEzMSwxLDAsMTAwLDMsMCwKKyAgICAxMjQsMSwwLDEwMCw0LDAsMTI0LDIsMCwxMzEsMSwyLDEzMCwxLDAsMTAwLAorICAgIDAsMCw4Myw0MCw1LDAsMCwwLDc4LDExNywyMSwwLDAsMCw5OSwxMTEsCisgICAgMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywKKyAgICAzMywxMTQsMTI1LDExNywyMSwwLDAsMCw3OCwxMTEsMTEwLDQ1LDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDMyLDEyMywxMjUsMTE3LDQsMCwKKyAgICAwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsCisgICAgMTEsMCwwLDAsMTE3LDEyLDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LAorICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDExNywyMCwwLDAsMCw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwKKyAgICAxMTEsMTA5LDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNyw0LDAsMCwwLAorICAgIDc4LDExMSwxMTAsMTAxLDExNyw3LDAsMCwwLDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsCisgICAgMTE3LDUsMCwwLDAsMTA4LDExMSw5NywxMDAsMTE1LDExNywxMCwwLDAsMCwxMDUsCisgICAgMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDExNywxMCwwLDAsMCw5NSw5OSwKKyAgICAxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsCisgICAgMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNywxMSwwLAorICAgIDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLAorICAgIDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDQwLDYsMCwwLDAsMTE3LDQsMCwKKyAgICAwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsCisgICAgOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsCisgICAgMCwxMDAsOTcsMTE2LDk3LDExNywxMCwwLDAsMCw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsCisgICAgMTAwLDk3LDExNiw5NywxMTcsNSwwLDAsMCwxMDIsMTExLDExNywxMTAsMTAwLDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNjksNCwwLDAsMTE1LDE4LDAsMCwwLAorICAgIDAsMSwxNSwxLDE1LDEsMjQsMSwxNSwxLDE1LDEsMTMsMSw0LDIsCisgICAgMTgsMSwxMTcsMjksMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LAorICAgIDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCisgICAgOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKKyAgICAwLDgzLDQwLDIsMCwwLDAsMTE3LDM5LDAsMCwwLDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsCisgICAgMzIsMTA1LDExNSwzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLAorICAgIDEwMCwxMDEsNDYsNzgsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsCisgICAgMTEwLDEwMSw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTAzLDEwMSwKKyAgICAxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw4MSw0LDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDIsMTE3LDMxLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLAorICAgIDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LAorICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNzgsNDAsNywwLDAsMCwxMTcsOCwwLAorICAgIDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LAorICAgIDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LAorICAgIDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LAorICAgIDExMSwxMDAsMTAxLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsCisgICAgOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywyMCwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsCisgICAgMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw2Miw0LDAsMCwxMTUsCisgICAgOCwwLDAsMCwxNiwyLDYsMiwxMiwzLDEyLDEyLDExNywyMCwwLDAsCisgICAgMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCw1LDAsMCwwLDY2LDAsMCwwLDExNSwxMDQsMCwwLDAsMTI0LAorICAgIDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsCisgICAgMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LAorICAgIDAsMTAxLDUsMCwxMDEsNiwwLDEwMSw3LDAsMTAwLDQsMCwxMDAsNSwwLAorICAgIDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwxLDAsOTAsOCwwLDEwMCwKKyAgICA2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDksMCwxMDAsOCwwLDEwMCw5LAorICAgIDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsCisgICAgOTAsMTEsMCwxMDAsMTIsMCw4Myw0MCwxMywwLDAsMCwxMTcsMTksMCwwLAorICAgIDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE3LDkzLDAsMCwwLDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwKKyAgICAxMDIsMTExLDExNCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwKKyAgICA5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwKKyAgICAxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMTksMTExLDExNCwxMDcsMzIsCisgICAgMTE5LDEwNSwxMTYsMTA0LDMyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsOTksMywwLDAsMCwwLDAsMCwwLDMsCisgICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsCisgICAgMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsCisgICAgMSwwLDEwMCwwLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwyLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk4LDQsMCwwLAorICAgIDExNSw0LDAsMCwwLDAsMSw5LDEsMTE3LDI4LDAsMCwwLDY5LDEyMCwKKyAgICAxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTc1LDAsMCwwLDEyNCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw2LDAsCisgICAgMTI1LDIsMCwxMjEsMTA3LDAsMTE2LDIsMCwxMTYsMywwLDEwNiw0LDAsMTI0LAorICAgIDEsMCwxMjQsMCwwLDEwNiw1LDAsMTMxLDMsMCwxMjUsMywwLDExNiw2LAorICAgIDAsMTAwLDEsMCwxMjQsMCwwLDEwNiw1LDAsMTMxLDIsMCwxLDEyNCwwLAorICAgIDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwxLDAsMTE0LDExNywwLDExNiw4LDAsCisgICAgMTI0LDMsMCwxMDAsMiwwLDEzMSwyLDAsMTIsMTE0LDExNywwLDExNiw5LDAsCisgICAgMTI0LDAsMCwxMDYsNSwwLDEzMSwxLDAsMTAwLDMsMCwyNSwxMDMsMSwwLAorICAgIDEyNCwzLDAsOTUsMTAsMCwxMTAsMCwwLDEyNCwzLDAsODMsODcsMTEwLDQ2LAorICAgIDAsMSwxLDEsMTI0LDIsMCwxMiwxMTQsMTYzLDAsMTI0LDEsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTA3LDYsMCwxMTQsMTYzLDAsMTE2LDAsMCwxMDYsMSwwLAorICAgIDEyNCwxLDAsNjEsMTEwLDAsMCwxMzAsMCwwLDg5LDExMCwxLDAsODgsMTAwLAorICAgIDQsMCw4Myw0MCw1LDAsMCwwLDExNywyNSwwLDAsMCw3NiwxMTEsOTcsCisgICAgMTAwLDMyLDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMTcsMzMsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsMTE3LDgsMCwwLAorICAgIDAsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTA1LDAsMCwwLDAsNzgsNDAsCisgICAgMTEsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLAorICAgIDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywyNSwwLDAsMCw5NSw5OSw5NywKKyAgICAxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwKKyAgICAxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsCisgICAgMTIsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSwKKyAgICAxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsMTYsMCwwLDAsOTUsMTE4LAorICAgIDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDEwLAorICAgIDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNyw3LDAsCisgICAgMCwwLDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LDExLDAsMCwwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsMTE3LDgsMCwwLDAsOTUsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsOTUsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksCisgICAgMTAxLDExNyw5LDAsMCwwLDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCwxMTcsCisgICAgNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwwLDAsMCwwLDQwLAorICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMDIsNCwwLDAsMTE1LDI0LDAsMCwwLDAsCisgICAgNSwxNSwxLDMsMSw5LDEsMTUsMSwxNiwxLDMxLDEsMjgsMSw4LAorICAgIDEsMywxLDIyLDEsMTMsMSwxMTcsMzEsMCwwLDAsNjksMTIwLDExNiwxMDEsCisgICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAorICAgIDExNSw0OCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwKKyAgICAwLDEwMCwxLDAsMjUsMTM3LDAsMCwxMTYsMiwwLDEzNSwwLDAsMTAyLDEsCisgICAgMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDAsMCwxMTYsMywwLDY4LDEzMSwxLAorICAgIDAsMTMxLDEsMCw4Myw0MCw0LDAsMCwwLDExNyw0OSwwLDAsMCw4MiwKKyAgICAxMDEsMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsCisgICAgMTA1LDEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsNCwwLDAsMCw1MSwwLDAsMCwxMTUsMzEsMCwwLDAsMTI0LAorICAgIDAsMCw5MywyMSwwLDEyNSwxLDAsMTM2LDAsMCwxMDAsMCwwLDEyNCwxLAorICAgIDAsMjMsMTA3LDIsMCw4NiwxLDExMywzLDAsMTAwLDEsMCw4Myw0MCwyLAorICAgIDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwKKyAgICA3OCw0MCwwLDAsMCwwLDQwLDIsMCwwLDAsMTE3LDIsMCwwLDAsCisgICAgNDYsNDgsMTE3LDYsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsNDAsMSwwLAorICAgIDAsMCwxMTcsOSwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwwLDAsNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDEyMyw0LDAsMCwxMTUsMiwwLDAsMCw2LDEsCisgICAgMTE3LDQ5LDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLAorICAgIDExMCwxMDEsMTIwLDExMiwxMTQsNjIsNDAsNCwwLDAsMCwxMTcsMTEsMCwwLDAsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsNCwwLDAsMCwKKyAgICAxMTIsOTcsMTE2LDEwNCwxMTcsMywwLDAsMCw5NywxMTAsMTIxLDExNywxOCwwLDAsCisgICAgMCw2OSw4OCw4NCw2OSw3OCw4Myw3Myw3OSw3OCw5NSw4Myw4NSw3MCw3MCw3MywKKyAgICA4OCw2OSw4Myw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LAorICAgIDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwKKyAgICAwLDAsMCw0MCwxLDAsMCwwLDExNyw5LDAsMCwwLDEwMiwxMDUsMTA4LAorICAgIDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDEyMCw0LDAsMCwxMTUsNiwwLDAsMCwKKyAgICAwLDIsMTksMSwxOCwxLDExNywzMCwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsCisgICAgMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LAorICAgIDAsMCwwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsNjMsMCwwLAorICAgIDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsCisgICAgOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwKKyAgICAxMDEsMzIsOTcsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ2LAorICAgIDc4LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsNDAsCisgICAgMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwKKyAgICAwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksCisgICAgMTExLDEwMCwxMDEsMTI2LDQsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMjgsCisgICAgMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQwLDIsMCwKKyAgICAwLDAsMTE3LDUzLDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLAorICAgIDExMCwxMDEsMzIsOTcsMTE1LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTAsMTExLDMyLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsNDAsMSwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSw0MCwyLDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LAorICAgIDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwxMzAsNCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywzMCwwLDAsCisgICAgMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDc4LAorICAgIDQwLDEyLDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLAorICAgIDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKKyAgICA5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsOCwKKyAgICAwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDExLDAsMCwwLAorICAgIDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDExNywxMSwwLDAsMCwKKyAgICAxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDEwLDAsMCwwLAorICAgIDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDExLDAsMCwwLDEwOCwKKyAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMCwwLDAsMCwxMDUsCisgICAgMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsOCwwLDAsMCwxMDMsMTAxLAorICAgIDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxMTcsMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSwKKyAgICA5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTksMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTAsNCwwLAorICAgIDAsMTE1LDE2LDAsMCwwLDE2LDYsNiwyLDEyLDQsMywxLDMsMSwKKyAgICAyNCwxNiwxMiw2LDEyLDQsMTE3LDE5LDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjYsCisgICAgMCwwLDAsMTE1LDEzNCwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsCisgICAgMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLAorICAgIDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsCisgICAgMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsCisgICAgNiwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsCisgICAgMCwxMDAsMTEsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwKKyAgICAxMzIsMCwwLDkwLDksMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLAorICAgIDEwLDAsMTAwLDE2LDAsMTAwLDE3LDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwxOCwKKyAgICAwLDEwMCwxOSwwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMjAsMCw4Myw0MCwyMSwKKyAgICAwLDAsMCwxMTcsMTQsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDExNywzNywxLDAsMCw4MiwxMDEsMTEyLDExNCwxMDEsCisgICAgMTE1LDEwMSwxMTAsMTE2LDExNSwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzksMTE1LDMyLDExMiw5NywxMTYsMTA0LAorICAgIDQ2LDMyLDMyLDczLDExNiwzMiwxMTcsMTE1LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LAorICAgIDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsMTA1LDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLDEwMiwxMTQsCisgICAgMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTYsMzIsMTA4LDExMSwxMTEsMTA3LAorICAgIDExNSwzMiwxMTcsMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzksCisgICAgMTE1LDEwLDMyLDMyLDMyLDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQ2LDMyLAorICAgIDMyLDg3LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTA1LDExNSwzMiw5OSwxMDQsOTcsMTEwLDEwMywKKyAgICAxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwKKyAgICAzMiwxMTEsMTE5LDExMCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNCwxMDEsOTksCisgICAgMTExLDEwOSwxMTIsMTE3LDExNiwxMDEsMTAwLDQ0LDEwLDMyLDMyLDMyLDMyLDExNywxMTUsMTA1LAorICAgIDExMCwxMDMsMzIsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMzIsCisgICAgMzIsNzAsMTExLDExNCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwKKyAgICAxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywxMTYsMTA0LDEwLAorICAgIDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsCisgICAgOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNTIsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLAorICAgIDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwwLDExNiwyLDAsMTI0LAorICAgIDAsMCwxMDYsMywwLDEzMSwwLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDQsCisgICAgMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsODMsNDAsMSwKKyAgICAwLDAsMCw3OCw0MCw2LDAsMCwwLDExNyw1LDAsMCwwLDk1LDExMCwKKyAgICA5NywxMDksMTAxLDExNyw1LDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDExNyw1LDAsCisgICAgMCwwLDExNiwxMTcsMTEyLDEwOCwxMDEsMTE3LDE2LDAsMCwwLDk1LDEwMywxMDEsMTE2LAorICAgIDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDE3LDAsMCwKKyAgICAwLDk1LDEwOCw5NywxMTUsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsMTE3LDEyLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDExNywxMSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxNDIsNCwwLDAsCisgICAgMTE1LDgsMCwwLDAsMCwxLDksMSw5LDEsMjEsMSwxMTcsMjMsMCwKKyAgICAwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LAorICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw1MywKKyAgICAwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwKKyAgICAxLDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwyLAorICAgIDAsMTAwLDIsMCwxMDcsMiwwLDExNCw0MywwLDEwMCw2LDAsODMsMTI0LDEsCisgICAgMCwxMDAsNSwwLDEwMiwyLDAsODMsNDAsNywwLDAsMCwxMTcsNjIsMCwKKyAgICAwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTE2LDExNywxMTIsMTA4LAorICAgIDEwMSwzMiwxMTEsMTAyLDMyLDQwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDUsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwKKyAgICA0NSwxMTIsOTcsMTE2LDEwNCw0NSw5NywxMTYsMTE2LDExNCw0NSwxMTAsOTcsMTA5LDEwMSw0MSwKKyAgICAxMTcsMSwwLDAsMCw0NiwxMTcsMCwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICAxMTUsMTIxLDExNSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsOCwwLDAsCisgICAgMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSw0MCwyLDAsMCwwLDExNywzLAorICAgIDAsMCwwLDExNSwxMjEsMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLAorICAgIDIsMCwwLDAsMTE3LDUsMCwwLDAsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDEwLAorICAgIDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQwLDQsMCwKKyAgICAwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw2LDAsMCwwLAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTE3LDMsMCwwLDAsMTAwLDExMSwxMTYsMTE3LDIsCisgICAgMCwwLDAsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywyMywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsCisgICAgMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTQ4LDQsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMiwyNywxLDEyLDIsNCwzLDExNywzOCwKKyAgICAwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwKKyAgICAxMDQsNDYsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LAorICAgIDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwwLDkyLDIsMCwxMjUsCisgICAgMSwwLDEyNSwyLDAsMTE2LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsCisgICAgMCwyNSwxMjQsMiwwLDEzMSwyLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwKKyAgICA0LDAsMCwwLDExNywyMywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsCisgICAgMTE3LDcsMCwwLDAsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDMsMCwwLAorICAgIDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywxOCwKKyAgICAwLDAsMCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNywxNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSw5NywKKyAgICAxMTYsMTE2LDExNCw5NSwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDE1OCw0LDAsMCwxMTUsNCwwLAorICAgIDAsMCwwLDEsMTgsMSwxMTcsMzEsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTAzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsCisgICAgMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTI0LDAsMCwxMDYsMiwwLDEwNywKKyAgICAzLDAsMTE0LDk2LDAsMTI0LDAsMCwxMDYsMywwLDEyNCwwLDAsMTA2LDQsCisgICAgMCwxMjQsMSwwLDEzMSwyLDAsOTIsMiwwLDEyNSwyLDAsMTI1LDMsMCwKKyAgICAxMjQsMiwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsODQsMCwxMjQsMywwLDEyNCwKKyAgICAwLDAsOTUsNiwwLDExMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDIsCisgICAgMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDYsMCw4Myw0MCwxLDAsMCwwLAorICAgIDc4LDQwLDcsMCwwLDAsMTE3LDUsMCwwLDAsMTE2LDExNywxMTIsMTA4LDEwMSwKKyAgICAxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTcsMCwwLDAsOTUsMTA4LDk3LDExNSwxMTYsOTUsCisgICAgMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTIsMCwwLDAsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDUsMCwwLAorICAgIDAsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LAorICAgIDUsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsNDAsNCwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDExLDAsMCwwLDExMiw5NywxMTQsMTAxLAorICAgIDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwxMTcsOCwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMTIsOTcsMTE2LDEwNCw0MCwKKyAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCwKKyAgICA5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTYyLDQsMCwwLAorICAgIDExNSwxNCwwLDAsMCwwLDIsMTgsMSwxNSwxLDI3LDMsMTIsMSwxMiwKKyAgICAxLDEyLDEsMTE3LDI3LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LAorICAgIDk3LDExNiwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwKKyAgICAxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLDgzLDQwLDEsMCwKKyAgICAwLDAsNzgsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMDUsMTE2LDEwMSwKKyAgICAxMTQsMTE3LDEyLDAsMCwwLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsCisgICAgMTE2LDEwMSw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSwxNzQsNCwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCwxLDExNywyMywwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKKyAgICAxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCw4Myw0MCwxLDAsMCwwLDc4LAorICAgIDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsMTE3LDEyLDAsCisgICAgMCwwLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSw0MCwxLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LDAsMCwwLDk1LDk1LDEwOCwKKyAgICAxMDEsMTEwLDk1LDk1LDE3Nyw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LAorICAgIDIyLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsCisgICAgMTE2LDEwNCw0Niw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLAorICAgIDEzMSwxLDAsODMsNDAsMiwwLDAsMCw3OCwxMTcsMjAsMCwwLDAsOTUsCisgICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQwLDEyMywzMywKKyAgICAxMTQsMTI1LDQxLDQwLDIsMCwwLDAsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsCisgICAgMTA5LDk3LDExNiwxMTcsNSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw0MCwxLDAsCisgICAgMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsMCwwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDExNCwxMDEsCisgICAgMTEyLDExNCw5NSw5NSwxODAsNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywKKyAgICAyMywwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAorICAgIDExNiwxMDQsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDE2LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLAorICAgIDAsMTA3LDYsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDEsMCwwLDAsCisgICAgMTE3LDEyLDAsMCwwLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LAorICAgIDEwMSw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsCisgICAgNCwwLDAsMCwxMDUsMTE2LDEwMSwxMDksNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsCisgICAgMTA1LDExMCwxMTUsOTUsOTUsMTgzLDQsMCwwLDExNSwyLDAsMCwwLDAsMSwKKyAgICAxMTcsMjcsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCwKKyAgICA5NywxMTYsMTA0LDQ2LDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDIwLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwKKyAgICAxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxLDEwMCwwLDAsODMsNDAsMSwKKyAgICAwLDAsMCw3OCw0MCwyLDAsMCwwLDExNyw1LDAsMCwwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNDAsMiwKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLAorICAgIDAsMTA1LDExNiwxMDEsMTA5LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDYsMCwwLDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxODYsNCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwxLDExNywyMSwwLDAsMCw5NSw3OCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTcsMTEyLDExMiwxMDEsMTEwLAorICAgIDEwMCw3OCw0MCwxMywwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsCisgICAgMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNywyMywwLAorICAgIDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTE3LDE2LDAsMCwwLDk1LDEwMywKKyAgICAxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDEyLAorICAgIDAsMCwwLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsMTE3LDcsMCwwLAorICAgIDAsOTUsOTUsMTA4LDEwMSwxMTAsOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LAorICAgIDEwMSwxMTIsMTE0LDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSw5OSwxMTEsMTEwLDExNiwKKyAgICA5NywxMDUsMTEwLDExNSw5NSw5NSwxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsCisgICAgMTAwLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksCisgICAgOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxNCwwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAorICAgIDgwLDk3LDExNiwxMDQsMTM1LDQsMCwwLDExNSwyMCwwLDAsMCwxNiw1LDYsCisgICAgMiwxMiw2LDEyLDEwLDEyLDQsMTIsMTIsMTIsMywxMiwzLDEyLDMsMTIsCisgICAgMywxMTcsMTQsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA4MCw5NywxMTYsMTA0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDMsMCwwLDAsNjYsMCwwLDAsMTE1LDY4LDAsMCwwLDEyNCwwLAorICAgIDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsCisgICAgMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMSw0LDAsMTAwLDMsMCwKKyAgICAxMDAsNCwwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsMCwxMDAsCisgICAgNSwwLDEwMCw2LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDcsMCwxMDAsNywKKyAgICAwLDgzLDQwLDgsMCwwLDAsMTE3LDE1LDAsMCwwLDc4LDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDQsMCwwLDAsCisgICAgMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDI1LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwzLAorICAgIDAsMTMxLDMsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQwLDEsCisgICAgMCwwLDAsNzgsNDAsMiwwLDAsMCwxMTcsMTQsMCwwLDAsOTUsNzgsCisgICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDExNyw1LDAsMCwKKyAgICAwLDk1LDExMiw5NywxMTYsMTA0LDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsCisgICAgMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDExNywxMSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxOTEsCisgICAgNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyNCwwLDAsMCw3OCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSwKKyAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLAorICAgIDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLAorICAgIDgzLDQwLDIsMCwwLDAsNzgsMTE3LDI1LDAsMCwwLDYwLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDM5LDEyMywxMjUsMzksMzIsNDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKKyAgICA5Nyw5OSwxMDEsNDEsNjIsNDAsMiwwLDAsMCwxMTcsNiwwLDAsMCwxMDIsCisgICAgMTExLDExNCwxMDksOTcsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLAorICAgIDk1LDk1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsCisgICAgNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwwLDAsMCwwLDQwLAorICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMTk0LDQsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMiwxMTcsMjcsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsCisgICAgMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDMyLDAsMCwwLDExNiwwLDAsMTAwLDEsCisgICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDIsMCwxLDEyNCwwLDAsMTA2LDEsCisgICAgMCwxMjQsMSwwLDk1LDIsMCwxMjQsMSwwLDgzLDQwLDIsMCwwLDAsCisgICAgMTE3LDI0LDAsMCwwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTE3LDM4LDAsCisgICAgMCwwLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDMyLDEyMywzMywxMTQsMTI1LDQwLDMsMCwwLDAsMTE3LDE2LDAsCisgICAgMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywKKyAgICAxMDMsMTAxLDExNyw1LDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQwLDIsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLAorICAgIDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE5OCw0LAorICAgIDAsMCwxMTUsNiwwLDAsMCwwLDMsMTYsMSwxMiwxLDExNywyNywwLAorICAgIDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MCw4LAorICAgIDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LAorICAgIDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsCisgICAgMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNywxMSwwLAorICAgIDAsMCw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsMTEsMCwKKyAgICAwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDExNywxNywwLAorICAgIDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsCisgICAgMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTkwLDQsMCwwLDExNSw2LDAsMCwwLAorICAgIDE2LDEsMTIsMywxOCw0LDExNywxNSwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw0LDAsMCwwLDY2LDAsMCwwLDExNSwKKyAgICAxMTksMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwKKyAgICAwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsCisgICAgMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw0LDAsMTAwLAorICAgIDQsMCwxMDAsNSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw2LDAsMTAxLDQsCisgICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDcsMCwKKyAgICAxMDEsNCwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDEzMSwxLDAsOTAsCisgICAgOCwwLDEwMSw0LDAsMTAwLDEyLDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDEsCisgICAgMCwxMzEsMSwwLDkwLDEwLDAsMTAwLDEyLDAsODMsNDAsMTMsMCwwLDAsCisgICAgMTE3LDEwLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsCisgICAgNjIsMCwwLDAsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5NSw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsCisgICAgMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwwLDEyMCw1MSwwLDExNiwKKyAgICAwLDAsMTA2LDEsMCwxMDYsMiwwLDEzMSwwLDAsNjgsOTMsMzQsMCwxMjUsCisgICAgMSwwLDExNiwzLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLDAsMTE0LDE2LAorICAgIDAsMTI0LDEsMCwxMDYsNCwwLDEzMSwwLDAsMSwxMTMsMTYsMCwxMTMsMTYsCisgICAgMCw4NywxMDAsMiwwLDgzLDQwLDMsMCwwLDAsMTE3LDEyNSwwLDAsMCwKKyAgICA2Nyw5NywxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLAorICAgIDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNDAsNDEsMzIsMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMzIsMTExLDExMCwzMiw5NywxMDgsMTA4LDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTYsMTExLDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsCisgICAgMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwzMiw0MCwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDEsNDYsMTE3LDE3LDAsCisgICAgMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSwxMTUsNzgsNDAsNSwwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLAorICAgIDExNSwxMTcsMTksMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNyw2LDAsMCwwLDExOCw5NywKKyAgICAxMDgsMTE3LDEwMSwxMTUsMTE3LDcsMCwwLDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwKKyAgICAxMTcsMTcsMCwwLDAsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDExNSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLAorICAgIDk5LDEwOCwxMTUsMTE3LDYsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsMCwwLDAsMTA1LAorICAgIDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwKKyAgICAyMTIsNCwwLDAsMTE1LDYsMCwwLDAsMCw0LDIyLDEsMTUsMSwxMTcsCisgICAgMjgsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwKKyAgICAxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDk0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwKKyAgICAxMTUsMjgsMCwxMTYsMiwwLDEwNiwzLDAsMTAwLDEsMCwxMTYsNCwwLDEzMSwKKyAgICAyLDAsMSwxMTAsMCwwLDEyMCw1OSwwLDExNiwwLDAsMTA2LDEsMCw2OCwKKyAgICA5Myw0NCwwLDEyNSwyLDAsMTIxLDE0LDAsMTI0LDIsMCwxMjQsMSwwLDEzMSwKKyAgICAxLDAsODMsODcsMTEzLDM4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCw4MSwKKyAgICAwLDEsMSwxLDExOSwzOCwwLDg5LDExMywzOCwwLDg4LDExMywzOCwwLDg3LAorICAgIDEwMCwyLDAsODMsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDExNywxMTMsMCwKKyAgICAwLDAsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksCisgICAgMTAxLDMyLDExMSwxMDIsMzIsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsMTExLDExNCwzMiw5NywKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LAorICAgIDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsCisgICAgMzksMTA0LDExMSwxMTEsMTA3LDExNSwzOSwzMiwxMDUsMTE1LDMyLDEwMiw5NywxMDgsMTE1LDEwMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE3LDExNSwxMDEsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwxMTcsMjMsMCwwLDAsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNzgsCisgICAgNDAsNywwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsMTAsMCwKKyAgICAwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwxMTcsOSwwLDAsCisgICAgMCw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTE3LDQsMCwwLDAsMTE5LAorICAgIDk3LDExNCwxMTAsMTE3LDEzLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsODcsOTcsCisgICAgMTE0LDExMCwxMDUsMTEwLDEwMywxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsNDAsMywKKyAgICAwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw0LDAsMCwwLAorICAgIDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwNCwxMTEsMTExLDEwNyw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDIyMCw0LDAsMCwxMTUsMTYsMCwKKyAgICAwLDAsMCw3LDksMSwxOSwxLDE2LDEsMywxLDE0LDEsMTMsMSwKKyAgICAxMiwyLDExNywyMiwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsOTEsMCwwLDAsMTI0LDEsMCwxMDAsMSwwLDEwNywyLDAsCisgICAgMTE0LDIxLDAsMTAwLDIsMCwxMjUsMSwwLDExMCwwLDAsMTIxLDE3LDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDEyNCwxLDAsMjUsMTI1LDIsMCw4NywxMTAsNDYsMCwKKyAgICA0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDg2LDAsMSwxLDEsMTI0LDAsMCwKKyAgICAxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwyLDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDEyNCwxLDAsNjAsODksMTEwLDEsMCw4OCwxMjQsMiwKKyAgICAwLDgzLDQwLDMsMCwwLDAsMTE3LDIxMCwwLDAsMCw3MSwxMDEsMTE2LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTAyLDExNCwKKyAgICAxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSw0NCwzMiwxMDIsMTA1LDExMCwxMDAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsOTcsMTEyLDExMiwxMTQsMTExLDExMiwxMTQsMTA1LDk3LDExNiwxMDEsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgOTcsMTEwLDEwMCwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDEwNSwxMTYsNDYsMzIsNzMsMTAyLAorICAgIDMyLDExMCwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiw5NywxMTgsCisgICAgOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDQ0LDMyLDExNSwxMTYsMTExLDExNCwxMDEsMzIsNzgsCisgICAgMTExLDExMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE3LDAsCisgICAgMCwwLDAsMTE3LDEsMCwwLDAsNDYsNDAsNCwwLDAsMCwxMTcsMywKKyAgICAwLDAsMCwxMTUsMTIxLDExNSwxMTcsMTksMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNyw4LAorICAgIDAsMCwwLDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDQwLDMsMCwwLDAsCisgICAgMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTcsNiwwLDAsMCwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywyMCwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMjM3LDQsMCwwLDExNSwxNiwwLDAsMCwwLDgsMTIsMSw5LDEsCisgICAgMywxLDE3LDEsMTMsMSwxNSwxLDE4LDEsMTE3LDMxLDAsMCwwLDgwLAorICAgIDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDgsMCwwLDAsNCwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTYyLDAsMCwwLDEwMywwLDAsMTI1LDMsMCwxMjAsMTQ5LAorICAgIDAsMTI0LDIsMCw2OCw5MywxMzEsMCwxMjUsNCwwLDEyNCwwLDAsMTA2LDAsCisgICAgMCwxMjQsNCwwLDEzMSwxLDAsMTI1LDUsMCwxMjQsNSwwLDEwMCwyLDAsCisgICAgMTA3LDksMCwxMTQsMTMsMCwxMTYsMiwwLDEyNCw1LDAsMTAwLDEsMCwxMzEsCisgICAgMiwwLDExNCw4NSwwLDEyNCw1LDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLAorICAgIDAsOTIsMiwwLDEyNSw2LDAsMTI1LDcsMCwxMTAsMjEsMCwxMjQsNSwwLAorICAgIDEwNiw0LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw2LDAsMTAzLDAsMCwxMjUsCisgICAgNywwLDEyNCw2LDAsMTAwLDIsMCwxMDcsOSwwLDExNCwxMjgsMCwxMjQsNiwKKyAgICAwLDEyNCwzLDAsMTAyLDIsMCw4MywxMjQsMywwLDEwNiw1LDAsMTI0LDcsCisgICAgMCwxMzEsMSwwLDEsMTEzLDEzLDAsMTEzLDEzLDAsODcsMTAwLDIsMCwxMjQsCisgICAgMywwLDEwMiwyLDAsODMsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDExNywKKyAgICA2MywwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTAsOTcsCisgICAgMTA5LDEwMSw0NiwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNzgsNDAsNiwwLDAsMCwxMTcsMjAsMCwwLDAsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw3LDAsMCwwLAorICAgIDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDYsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLAorICAgIDExMCwxMDAsNDAsOCwwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNywKKyAgICA4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsCisgICAgMCwxMTIsOTcsMTE2LDEwNCwxMTcsMTQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKKyAgICA5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDUsMCwwLDAsMTAxLDExMCwxMTYsCisgICAgMTE0LDEyMSwxMTcsNiwwLDAsMCwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsNiwwLAorICAgIDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw4LDAsMCwwLDExMiwxMTEsMTE0LAorICAgIDExNiwxMDUsMTExLDExMCwxMTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMTEsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwyNTQsNCwwLDAsMTE1LDI0LDAsMCwwLDAsNSw2LDEsMTMsMSwKKyAgICAxNSwxLDEyLDEsMTUsMSwyNCwyLDE1LDEsNiwxLDEyLDIsMTAsNSwKKyAgICAyMCwyLDExNywyMiwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw5NywwLDAsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwKKyAgICAxMTQsMjQsMCwxMTYsMSwwLDEwNiwyLDAsMTI1LDIsMCwxMTAsMCwwLDEyNCwKKyAgICAwLDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCw5MiwyLAorICAgIDAsMTI1LDMsMCwxMjUsNCwwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOSwwLAorICAgIDExNCw2NCwwLDEyNCwzLDAsODMsMTI0LDQsMCwxMTQsODksMCwxMTYsNCwwLAorICAgIDEyNCwxLDAsMTI0LDQsMCwxMjQsMCwwLDEwNiwzLDAsMTMxLDMsMCw4MywKKyAgICAxMDAsMSwwLDgzLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsOTgsMCwKKyAgICAwLDAsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsMTE0LAorICAgIDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwKKyAgICA5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsCisgICAgOTksMTA0LDEwMSw0Niw3OCw0MCw1LDAsMCwwLDExNyw0LDAsMCwwLDc4LAorICAgIDExMSwxMTAsMTAxLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw0LDAsMCwwLAorICAgIDExMiw5NywxMTYsMTA0LDExNywxMSwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNywxNSwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0MCw1LDAsMCwwLDExNywzLDAsCisgICAgMCwwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw2LDAsMCwwLAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwKKyAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwyMyw1LDAsMCwxMTUsMTYsMCwwLDAsMCw0LAorICAgIDEyLDEsMTIsMSwyNCwxLDEyLDEsNCwyLDYsMywxOSwyLDExNywyMiwKKyAgICAwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQwLDExLDAsMCwwLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLAorICAgIDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsMTEsMCwwLDAsOTksMTA4LDk3LAorICAgIDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE3LDE3LDAsMCwwLDEwNSwxMTAsMTE4LAorICAgIDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsMTE3LDExLAorICAgIDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMTE3LDIwLAorICAgIDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsMTEsMCwwLDAsOTUsMTAzLDEwMSwxMTYsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwKKyAgICAxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksOTcsCisgICAgMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNywxMCwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMjA4LAorICAgIDQsMCwwLDExNSwxNCwwLDAsMCwxNiwyLDYsMiwxOCw4LDE4LDE3LAorICAgIDE4LDE3LDE4LDI1LDMsMSwxMTcsMTAsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNjYsMCwwLDAsMTE1LDExMCwwLDAsMCwxMjQsCisgICAgMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwKKyAgICAxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsCisgICAgMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAxLDYsMCwKKyAgICA5MCw3LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsOCwwLDEwMCwKKyAgICA4LDAsMTAwLDksMCwxMzIsMCwwLDkwLDksMCwxMDEsMTAsMCwxMDAsMTAsCisgICAgMCwxMDAsMTEsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTEsMCwxMDAsMTIsMCwKKyAgICAxMDAsMTMsMCwxMzIsMCwwLDkwLDEyLDAsMTAwLDE0LDAsODMsNDAsMTUsMCwKKyAgICAwLDAsMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsMTE3LDE3MiwwLDAsMCw3MCwxMDUsMTA4LDEwMSw0NSw5OCw5NywxMTUsMTAxLDEwMCwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMTAsCisgICAgMTE2LDEwMSwxMTQsOTcsOTksMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLAorICAgIDk3LDExNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSwxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTEyLAorICAgIDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDk3LDExMCw5OSwxMDEsNDQsMzIsOTgsMTAxLDEwNSwxMTAsCisgICAgMTAzLDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTAyLDExNCwxMDEsMTE1LDEwNCwxMDEsMTAwLDMyLAorICAgIDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwKKyAgICAxMTQsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwNSwxMTUsCisgICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwNSwxMTAsMTAzLDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLAorICAgIDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw1LAorICAgIDAsMCwwLDcsMCwwLDAsMTE1LDEyMiwwLDAsMCwxMDMsMCwwLDEyNSwKKyAgICAzLDAsMTIwLDUyLDAsMTI0LDIsMCw2OCw5Myw0NCwwLDkyLDIsMCwxMzcsCisgICAgMCwwLDEyNSw0LDAsMTI0LDMsMCwxMDYsMCwwLDEzNSwwLDAsMTAyLDEsCisgICAgMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjQsNCwwLDY4LDEzMSwxLAorICAgIDAsMTMxLDEsMCwxLDExMywxMywwLDg3LDEyNCwzLDAsMTI0LDAsMCw5NSwKKyAgICAxLDAsMTI0LDEsMCwxMTIsNzksMCwxMDAsMywwLDEyNCwwLDAsOTUsMiwKKyAgICAwLDEwMCw2LDAsMTI0LDAsMCw5NSwzLDAsMTE2LDQsMCwxMzEsMCwwLAorICAgIDEyNCwwLDAsOTUsNSwwLDExNiw0LDAsMTMxLDAsMCwxMjQsMCwwLDk1LAorICAgIDYsMCwxMDAsNSwwLDgzLDQwLDcsMCwwLDAsMTE3LDIwMSwwLDAsMCwKKyAgICA3MywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNSwxMDEsOTcsMTE0LAorICAgIDk5LDEwNCwzMiwxMTEsMTEwLDMyLDk3LDExMCwxMDAsMzIsOTcsMzIsMTE4LDk3LDExNCwxMDUsCisgICAgOTcsOTgsMTA4LDEwMSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDExMSwxMDIsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNTEsNDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTUsMzIsCisgICAgOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTE3LDEwMiwxMDIsCisgICAgMTA1LDEyMCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCisgICAgMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsNDQsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsOTcsMTEwLDEwMCwzMiw5NywzMiw5OCwxMTEsMTExLDEwOCwxMDEsOTcsCisgICAgMTEwLDMyLDExMSwxMDIsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMTUsMzIsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDUxLDAsMCwwLDExNSwyNywKKyAgICAwLDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwwLDEzNiwKKyAgICAwLDAsMTAyLDIsMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4Myw0MCwxLAorICAgIDAsMCwwLDc4LDQwLDAsMCwwLDAsNDAsMiwwLDAsMCwxMTcsMiwKKyAgICAwLDAsMCw0Niw0OCwxMTcsNiwwLDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwKKyAgICA0MCwxLDAsMCwwLDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwwLDAsNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDU2LDUsMCwwLDExNSwyLDAsMCwwLDYsMCwKKyAgICAxMTcsMzgsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LAorICAgIDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTcsMSwwLDAsMCwKKyAgICA0NiwxMDUsMSwwLDAsMCw3OCwxMDUsMjU1LDI1NSwyNTUsMjU1LDQwLDcsMCwwLAorICAgIDAsMTE3LDYsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE3LDgsMCwwLAorICAgIDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LDQsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LAorICAgIDEwOSwxMDEsMTE3LDMsMCwwLDAsMTE1LDEwMSwxMTYsMTE3LDExLDAsMCwwLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDE5LDAsMCwwLDk1LAorICAgIDExNCwxMDEsMTA4LDk3LDEyMCwxMDEsMTAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDcsMCwwLDAsMTAwLDEwMSwKKyAgICAxMTYsOTcsMTA1LDEwOCwxMTUsMTE3LDcsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTUsMTE3LDgsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0MCwwLAorICAgIDAsMCwwLDQwLDEsMCwwLDAsMTE3LDYsMCwwLDAsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAorICAgIDk1LDk1LDUwLDUsMCwwLDExNSwxNiwwLDAsMCwwLDQsNiwxLDE5LAorICAgIDEsMzYsMSw5LDIsMTUsMSw5LDEsMTIsMSwxMTcsMTksMCwwLDAsCisgICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTAwLDMsMCwKKyAgICAxMjQsMCwwLDk1LDAsMCwxMDAsMiwwLDgzLDQwLDQsMCwwLDAsMTE3LAorICAgIDMxLDAsMCwwLDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwOSwxMTYsMTA1LAorICAgIDEwOSwxMDEsNDYsMTA1LDEsMCwwLDAsNzgsMTA1LDI1NSwyNTUsMjU1LDI1NSw0MCwxLAorICAgIDAsMCwwLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LAorICAgIDEwNSwxMDksMTAxLDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LDAsCisgICAgMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSwxMTUsNjQsNSwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywyOCwKKyAgICAwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsCisgICAgMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDEyLDAsMCwwLDEzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNzIsMSwwLDAsMTAwLDUsMCwxMjUsMiwwLDEyNCwKKyAgICAxLDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDIsMCwyNSwxMjUsCisgICAgMywwLDEyMSwyNSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LAorICAgIDAsMTMxLDEsMCwxMDYsNSwwLDEyNSw0LDAsODcsMTEwLDI0LDAsNCwxMTYsCisgICAgNiwwLDEwNywxMCwwLDExNCw3NiwwLDEsMSwxLDEwMCw2LDAsMTI1LDQsCisgICAgMCw4OSwxMTAsMSwwLDg4LDEyNCw0LDAsMTI0LDAsMCwxMDYsNywwLDEwNywKKyAgICAzLDAsMTE0LDExNCwwLDEyNCwwLDAsMTA2LDgsMCwxMzEsMCwwLDEsMTI0LAorICAgIDQsMCwxMjQsMCwwLDk1LDcsMCwxMTAsMCwwLDExNiw5LDAsMTMxLDAsCisgICAgMCwxMTQsMTQ3LDAsMTI0LDAsMCwxMDYsMTAsMCwxMjUsNSwwLDEyNCwzLDAsCisgICAgMTA2LDExLDAsMTMxLDAsMCwxMjUsNiwwLDExMCwxNSwwLDEyNCwwLDAsMTA2LAorICAgIDEyLDAsMTI1LDUsMCwxMjQsMywwLDEyNSw2LDAsMTI0LDYsMCwxMjQsNSwKKyAgICAwLDEwNyw2LDAsMTE0LDQ1LDEsMTE2LDEzLDAsMTI0LDAsMCwxMDYsNCwwLAorICAgIDEyNCwzLDAsMTMxLDIsMCwxMjUsNywwLDExNiwxNCwwLDEyNCw3LDAsMTMxLAorICAgIDEsMCwxMTQsNDUsMSwxMjAsOTEsMCwxMjQsMCwwLDEwNiwxNSwwLDY4LDkzLAorICAgIDcxLDAsOTIsMiwwLDEyNSw4LDAsMTI1LDksMCwxMDAsNCwwLDEyNCw4LAorICAgIDAsMjMsMTI1LDEwLDAsMTE2LDEzLDAsMTI0LDcsMCwxMjQsMTAsMCwxMzEsMiwKKyAgICAwLDEyNSwxMSwwLDExNiwxNiwwLDEyNCwxMSwwLDEzMSwxLDAsMTE0LDIxNCwwLAorICAgIDEyNCw5LDAsMTI0LDEsMCwxMjQsMTEsMCwxMzEsMiwwLDEyNCw3LDAsMTAzLAorICAgIDEsMCwxMDIsMiwwLDgzLDExMywyMTQsMCw4NywxMDAsNywwLDEyNSwyLDAsCisgICAgMTEzLDQ1LDEsMTEwLDAsMCwxMjAsOTUsMCwxMjQsMCwwLDEwNiwxNSwwLDY4LAorICAgIDkzLDg0LDAsOTIsMiwwLDEyNSw4LDAsMTI1LDksMCwxMjQsNiwwLDEyNCwKKyAgICA4LDAsMjMsMTI0LDUsMCwxMDcsNiwwLDExNCw1NSwxLDExNiwxMywwLDEyNCwKKyAgICAwLDAsMTA2LDQsMCwxMjQsMywwLDEyNCw4LDAsMjMsMTMxLDIsMCwxMjUsCisgICAgMTEsMCwxMTYsMTYsMCwxMjQsMTEsMCwxMzEsMSwwLDExNCwxMzksMSwxMjQsOSwKKyAgICAwLDEyNCwxLDAsMTI0LDExLDAsMTMxLDIsMCwxMDMsMCwwLDEwMiwyLDAsCisgICAgODMsMTEzLDU1LDEsMTEzLDU1LDEsODcsMTI0LDIsMCwxMTQsMTYyLDEsMTAwLDgsCisgICAgMCwxMjQsNywwLDEwMywxLDAsMTAyLDIsMCw4MywxMDAsOCwwLDEwMywwLAorICAgIDAsMTAyLDIsMCw4Myw0MCw5LDAsMCwwLDExNywxMjUsMCwwLDAsODQsCisgICAgMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LAorICAgIDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLAorICAgIDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwKKyAgICAzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsCisgICAgMTAyLDQ1LDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsMTE3LDEsMCwwLAorICAgIDAsNDYsMTA1LDIsMCwwLDAsMTA1LDEsMCwwLDAsMTE3LDgsMCwwLAorICAgIDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDcwLDEwNSwyNTUsMjU1LDI1NSwyNTUsODQsCisgICAgNzgsNDAsMTksMCwwLDAsMTE3LDUsMCwwLDAsNzAsOTcsMTA4LDExNSwxMDEsCisgICAgMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNywKKyAgICAzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsMCwwLDAsMTE1LDExNiw5NywxMTYsCisgICAgMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDgsMCwwLDAsMTE1LDExNiwKKyAgICA5NSwxMDksMTE2LDEwNSwxMDksMTAxLDExNyw3LDAsMCwwLDc5LDgzLDY5LDExNCwxMTQsCisgICAgMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsCisgICAgMTA5LDEwMSwxMTcsMTEsMCwwLDAsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsMTE3LDExLDAsMCwwLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywKKyAgICAxMTUsMTAxLDExNywxOSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNyw1LDAsMCwwLDEwOCwKKyAgICAxMTEsMTE5LDEwMSwxMTQsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LAorICAgIDk3LDk5LDEwNCwxMDEsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwKKyAgICAxMTEsMTA1LDExMCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwKKyAgICAxMDAsMTA1LDExNCwxMTcsOCwwLDAsMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwKKyAgICAxMTcsMTIsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LDQsMCwwLDAsNzgsCisgICAgMTExLDExMCwxMDEsNDAsMTIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsMTIsCisgICAgMCwwLDAsMTA1LDExNSw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMTcsCisgICAgMTEsMCwwLDAsMTE2LDk3LDEwNSwxMDgsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LAorICAgIDUsMCwwLDAsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsNSwwLDAsMCw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDExNywxMiwwLDAsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNyw5LDAsMCwwLDk4LDk3LDExNSwxMDEsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsMTE3LDYsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTE3LDYsMCwKKyAgICAwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTMsMCwwLDAsMTA1LDExMCwxMDUsCisgICAgMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsOSwwLDAsMCwxMDIsCisgICAgMTE3LDEwOCwxMDgsOTUsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNzAsNSwwLDAsMTE1LDYyLDAsMCwwLDAsMyw2LAorICAgIDEsMTksMSwzLDEsMjUsMSwxMywxLDExLDEsMTUsMSwxMCwxLDEyLAorICAgIDIsOSwxLDksMSwxNSwyLDksMSw2LDIsMTIsMSwxOCwxLDEyLAorICAgIDEsMjIsMSwxMCwxLDE1LDEsMTIsMSwyNiw0LDEyLDIsMjIsMSwxNiwKKyAgICAxLDIyLDEsMTIsMSwyNiwxLDYsMSwxMywxLDExNywyMiwwLDAsMCwKKyAgICA3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCw5LAorICAgIDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwyNTUsMCwwLDAsCisgICAgMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTIxLDE5LDAsMTE2LDEsMCwxMDYsCisgICAgMiwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwyNCwwLDQsCisgICAgMTE2LDMsMCwxMDcsMTAsMCwxMTQsNTQsMCwxLDEsMSwxMDMsMCwwLDEyNSwKKyAgICAyLDAsODksMTEwLDEsMCw4OCwxMTYsNCwwLDEwNiw1LDAsMTA2LDYsMCwKKyAgICAxMDAsMSwwLDEzMSwxLDAsMTE1LDkxLDAsMTE2LDcsMCwxMjQsMiwwLDEzMSwKKyAgICAxLDAsMTI0LDAsMCw5NSw4LDAsMTEwLDExMSwwLDExNiw3LDAsMTMxLDAsCisgICAgMCwxMjUsMywwLDEyMCw5MCwwLDEyNCwyLDAsNjgsOTMsODIsMCwxMjUsNCwKKyAgICAwLDEyNCw0LDAsMTA2LDksMCwxMDAsMiwwLDEzMSwxLDAsOTIsMywwLAorICAgIDEyNSw1LDAsMTI1LDYsMCwxMjUsNywwLDEyNCw2LDAsMTE0LDE3MCwwLDEwMCwKKyAgICAzLDAsMTA2LDEwLDAsMTI0LDUsMCwxMjQsNywwLDEwNiwxMSwwLDEzMSwwLAorICAgIDAsMTMxLDIsMCwxMjUsOCwwLDExMCw2LDAsMTI0LDUsMCwxMjUsOCwwLAorICAgIDEyNCwzLDAsMTA2LDEyLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLDEwNywwLAorICAgIDg3LDEyNCwzLDAsMTI0LDAsMCw5NSw4LDAsMTE2LDQsMCwxMDYsNSwwLAorICAgIDEwNiw2LDAsMTE2LDEzLDAsMTMxLDEsMCwxMTQsMjUxLDAsMTE2LDcsMCwxMDAsCisgICAgNCwwLDEwMCw1LDAsMTMyLDAsMCwxMjQsMiwwLDY4LDEzMSwxLDAsMTMxLAorICAgIDEsMCwxMjQsMCwwLDk1LDE0LDAsMTEwLDAsMCwxMDAsNiwwLDgzLDQwLAorICAgIDcsMCwwLDAsMTE3LDY4LDAsMCwwLDcwLDEwNSwxMDgsMTA4LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTExLDEwMiwzMiwxMTIsMTExLDExNiwxMDEsMTEwLAorICAgIDExNiwxMDUsOTcsMTA4LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLAorICAgIDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwKKyAgICAxMDUsMTE1LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDYsMTE3LDMsMCwKKyAgICAwLDAsMTE5LDEwNSwxMTAsMTE3LDEsMCwwLDAsNDYsMTE3LDUsMCwwLDAsCisgICAgMTIzLDEyNSw0NiwxMjMsMTI1LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDIsMCwwLDAsMTE1LDAsMCwwLDExNSwyNywwLDAsMCwxMjQsCisgICAgMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwwLDEwNiwwLDAsMTMxLDAsCisgICAgMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4Myw0MCwxLDAsMCwwLDc4LAorICAgIDQwLDEsMCwwLDAsMTE3LDUsMCwwLDAsMTA4LDExMSwxMTksMTAxLDExNCw0MCwKKyAgICAyLDAsMCwwLDExNywyLDAsMCwwLDQ2LDQ4LDExNywyLDAsMCwwLAorICAgIDEwMiwxMTAsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOSwKKyAgICAwLDAsMCw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTQwLDUsMCwwLAorICAgIDExNSwyLDAsMCwwLDYsMCwxMTcsNDEsMCwwLDAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDc4LDQwLDE1LDAsMCwwLDExNyw0LDAsMCwwLAorICAgIDExMiw5NywxMTYsMTA0LDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDcsMCwwLAorICAgIDAsMTA4LDEwNSwxMTUsMTE2LDEwMCwxMDUsMTE0LDExNywxNywwLDAsMCw3MCwxMDUsMTA4LAorICAgIDEwMSw3OCwxMTEsMTE2LDcwLDExMSwxMTcsMTEwLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDMsCisgICAgMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDgsMCwwLDAsMTEyLDEwOCw5NywxMTYsMTAyLAorICAgIDExMSwxMTQsMTA5LDExNywxMCwwLDAsMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LDExOSwxMDUsCisgICAgMTE2LDEwNCwxMTcsMywwLDAsMCwxMTUsMTAxLDExNiwxMTcsMTEsMCwwLDAsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsOSwwLDAsMCwxMTIsCisgICAgOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LAorICAgIDEwOSw5NywxMTYsMTE3LDUsMCwwLDAsMTA4LDExMSwxMTksMTAxLDExNCwxMTcsMywwLAorICAgIDAsMCw5NywxMDAsMTAwLDExNywyNywwLDAsMCw5NSw2Nyw2NSw4Myw2OSw5NSwKKyAgICA3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSw4MCw3Niw2NSw4NCwKKyAgICA3MCw3OSw4Miw3Nyw4MywxMTcsMTksMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLAorICAgIDEwMSwxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSw0MCw5LDAsCisgICAgMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwKKyAgICAxMTIsOTcsMTE2LDEwNCwxMTcsOCwwLDAsMCw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwKKyAgICAxMTUsMTE3LDIxLDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsOTUsMTE1LDExNywxMDIsMTAyLAorICAgIDEwNSwxMjAsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDExNyw0LDAsMCwwLAorICAgIDEwNSwxMTYsMTAxLDEwOSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsMywwLAorICAgIDAsMCwxMDAsMTExLDExNiwxMTcsNiwwLDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwKKyAgICAxMTcsOCwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSwxMTIsNSwwLDAsMTE1LDM0LDAsCisgICAgMCwwLDAsMiw5LDEsMywxLDE5LDEsMTMsMiwxMSwzLDE4LDEsCisgICAgMTgsNyw5LDEsMTMsMSwyNCwxLDYsMSwyNywyLDYsMSwxNywxLAorICAgIDksMSwxOCwxLDExNywyMiwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsCisgICAgNywwLDAsMCwxMTUsMjUsMCwwLDAsMTM1LDAsMCwxMzUsMSwwLDEwMiwKKyAgICAyLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI1LDIsMCwxMjQsMiwKKyAgICAwLDgzLDQwLDMsMCwwLDAsMTE3LDIwLDEsMCwwLDY1LDMyLDk5LDEwOCwKKyAgICA5NywxMTUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsOTksMTA4LDExMSwxMTUsMTE3LAorICAgIDExNCwxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LAorICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDExNCwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDMyLDk3LDExMCwzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwKKyAgICAzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwKKyAgICAxMDIsMTA1LDEwMSwxMDAsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMzIsOTcsMTEwLDEwMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICA5OSwxMDgsMTExLDExNSwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsCisgICAgMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsCisgICAgMTE3LDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDAsMTA1LDExNCwKKyAgICAxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ0LDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LAorICAgIDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwKKyAgICAwLDE5LDAsMCwwLDExNSw0NiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsCisgICAgMTMxLDEsMCwxMTUsMzMsMCwxMTYsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMjQsCisgICAgMCwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEzNiwwLDAsMTI0LDAsCisgICAgMCwxMzYsMSwwLDE0MCwxLDAsODMsNDAsMywwLDAsMCwxMTcsNDUsMCwKKyAgICAwLDAsODAsOTcsMTE2LDEwNCwzMiwxMDQsMTExLDExMSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwxMDksOTcsOTksMTA0LDEwNSwxMTAsCisgICAgMTAxLDExNCwxMjEsNDYsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTcsCisgICAgMzAsMCwwLDAsMTExLDExMCwxMDgsMTIxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLAorICAgIDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTAwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDIsMCwwLDAsCisgICAgMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsCisgICAgMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMiwKKyAgICAwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNywxNCwwLDAsMCwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywyNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsCisgICAgMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsCisgICAgMTAxLDExNCwxNTIsNSwwLDAsMTE1LDYsMCwwLDAsMCwyLDEyLDEsMjEsCisgICAgMSwxMTcsNTQsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsNDYsNjAsMTA4LDExMSw5OSw5NywKKyAgICAxMDgsMTE1LDYyLDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsMTExLAorICAgIDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDAsMCwwLAorICAgIDAsNDAsMywwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNywxNCwKKyAgICAwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsCisgICAgMTE1LDExNywyNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsCisgICAgMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwwLAorICAgIDAsMCwwLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwKKyAgICAxMTcsMTQsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMDAsMTAxLDExNiw5NywKKyAgICAxMDUsMTA4LDExNSwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LAorICAgIDExMSwxMTEsMTA3LDE0Miw1LDAsMCwxMTUsNCwwLDAsMCwwLDEwLDIxLDYsCisgICAgMTE3LDIwLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE0LAorICAgIDAsMCwwLDEwMCwxLDAsMTI0LDAsMCwxMDYsMCwwLDEwMiwxLDAsMjIsCisgICAgODMsNDAsMiwwLDAsMCw3OCwxMTcsMTQsMCwwLDAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwzNywxMTQsNDEsNDAsMSwwLDAsMCwxMTcsCisgICAgNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwxLDAsMCwwLDExNyw0LDAsCisgICAgMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwxNjAsCisgICAgNSwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywxOSwwLDAsMCw3MCwKKyAgICAxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA5NSw5NSw3OCw0MCwxMywwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsCisgICAgOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCwKKyAgICA5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsCisgICAgOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNywxNywKKyAgICAwLDAsMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LAorICAgIDk5LDEwNCwxMDEsMTE1LDExNywxNywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDExNywxMSwwLDAsMCwxMDIsCisgICAgMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDExLDAsMCwwLDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCw5NSwKKyAgICAxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsMTEsMCwwLDAsOTksCisgICAgMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE3LDksMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNyw4LDAsMCwwLDk1LDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCw5NSw5NSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSwKKyAgICA5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCw0MSw1LDAsMCwxMTUsMTYsMCwwLDAsMTYsNyw2LAorICAgIDIsMTIsMTQsMTIsNCw2LDIsMTIsNDIsMTIsMzAsMTgsMTgsMTE3LDEwLDAsCisgICAgMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NiwwLDAsCisgICAgMCwxMTUsNTAsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwKKyAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwKKyAgICAzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLAorICAgIDAsOTAsNSwwLDEwMCw2LDAsODMsNDAsNywwLDAsMCwxMTcsMTgsMCwKKyAgICAwLDAsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsCisgICAgMTE2LDEwMSwxMjAsMTE2LDExNywzNiwwLDAsMCw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwKKyAgICAzMiwxMDksOTcsMTEwLDk3LDEwMywxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwxLDAsMCwwLDEsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLAorICAgIDEsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNywyNCwwLDAsMCw2NSwKKyAgICA5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQwLDIsMCwwLDAsMTE3LDQsMCwKKyAgICAwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDk3LDk5LDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsNDAsMSwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsOSwwLDAsMCw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDE3MCwKKyAgICA1LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDI4LDAsMCwwLDk1LAorICAgIDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLAorICAgIDExNiw0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDQsMCwwLDAsCisgICAgMCwwLDAsMCw0LDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTAwLAorICAgIDEsMCw4Myw0MCwyLDAsMCwwLDExNyw2MCwwLDAsMCw4MiwxMDEsMTA4LAorICAgIDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDMyLDExNCwxMDEsMTAzLDk3LDExNCwxMDAsMTA4LDEwMSwxMTUsMTE1LDMyLAorICAgIDExMSwxMDIsMzIsOTcsMTEwLDEyMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDEwMSwxMjAsCisgICAgOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDc4LDQwLDIsMCwwLDAsMTE3LAorICAgIDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDExNCwxMDEsMTA4LAorICAgIDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDQwLDQsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMSwxMjAsOTksOTUsCisgICAgMTE2LDEyMSwxMTIsMTAxLDExNyw5LDAsMCwwLDEwMSwxMjAsOTksOTUsMTE4LDk3LDEwOCwKKyAgICAxMTcsMTAxLDExNywxMywwLDAsMCwxMDEsMTIwLDk5LDk1LDExNiwxMTQsOTcsOTksMTAxLAorICAgIDk4LDk3LDk5LDEwNyw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNyw4LDAsMCwwLDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwxNzQsNSwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCwyLDExNywyNywwLDAsMCw5NSw3MywxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsNDYsCisgICAgOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQwLDYsMCwwLDAsMTE3LDgsCisgICAgMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLAorICAgIDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSwKKyAgICA5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCwKKyAgICA5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNyw5LDAsMCwwLDk1LDk1LDEwMSwxMTAsCisgICAgMTE2LDEwMSwxMTQsOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LAorICAgIDk1LDk1LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsCisgICAgOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxOCwwLDAsMCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSwKKyAgICA5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMTY2LDUsMCwwLDExNSw2LDAsCisgICAgMCwwLDE2LDIsNiwyLDEyLDQsMTE3LDE4LDAsMCwwLDk1LDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiw5OSwKKyAgICAzLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw5MSwwLDAsMCwxMjQsMSwwLDEwNiwwLDAsMTAwLAorICAgIDEsMCwxMjQsMiwwLDEwMCwyLDAsMjQsMTMxLDIsMCwxMjUsMywwLDExNiwKKyAgICAxLDAsMTI0LDMsMCwxMzEsMSwwLDEyNCwyLDAsMTA3LDAsMCwxMTQsNTUsCisgICAgMCwxMTYsMiwwLDEwMCwzLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsCisgICAgMTI0LDMsMCwxMDAsNCwwLDI1LDEyNSw0LDAsMTI0LDAsMCwxMTQsODcsMCwKKyAgICAxMDAsNSwwLDEwNiwzLDAsMTI0LDQsMCwxMjQsMCwwLDEzMSwyLDAsODMsCisgICAgMTI0LDQsMCw4Myw0MCw2LDAsMCwwLDExNyw1MCwwLDAsMCw4MiwxMDEsCisgICAgMTE1LDExMSwxMDgsMTE4LDEwMSwzMiw5NywzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTE2LDExMSwzMiwKKyAgICA5NywxMTAsMzIsOTcsOTgsMTE1LDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTExLDExMCwxMDEsNDYsCisgICAgMTE3LDEsMCwwLDAsNDYsMTA1LDEsMCwwLDAsMTE3LDUwLDAsMCwwLAorICAgIDk3LDExNiwxMTYsMTAxLDEwOSwxMTIsMTE2LDEwMSwxMDAsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwKKyAgICAxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk4LDEwMSwxMjEsMTExLDExMCwxMDAsCisgICAgMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsMTA1LDAsMCwwLDAsMTE3LDUsMCwwLDAsMTIzLDEyNSw0NiwxMjMsCisgICAgMTI1LDQwLDQsMCwwLDAsMTE3LDYsMCwwLDAsMTE0LDExNSwxMTIsMTA4LDEwNSwKKyAgICAxMTYsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsMTE3LDEwLDAsMCwwLDg2LDk3LAorICAgIDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwKKyAgICAxMDksOTcsMTE2LDQwLDUsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE3LDcsMCwwLDAsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNyw1LDAsCisgICAgMCwwLDEwOCwxMDEsMTE4LDEwMSwxMDgsMTE3LDQsMCwwLDAsOTgsMTA1LDExNiwxMTUsCisgICAgMTE3LDQsMCwwLDAsOTgsOTcsMTE1LDEwMSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMywwLDAsMCw5NSwxMTQsMTAxLDExNSwxMTEsMTA4LAorICAgIDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTc5LDUsMCwwLDExNSwxMCwwLDAsMCwKKyAgICAwLDIsMjIsMSwxOCwxLDE1LDEsMTAsMSwxMTcsMTMsMCwwLDAsOTUsCisgICAgMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDk1LDExMCw5NywxMDksMTAxLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCw0LDAsMCwwLDExLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMzgsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDExNSwyOCwwLDExNiwKKyAgICAyLDAsMTA2LDMsMCwxMDAsMSwwLDExNiw0LDAsMTMxLDIsMCwxLDExMCwKKyAgICAwLDAsMTIwLDEwMywwLDExNiwwLDAsMTA2LDEsMCw2OCw5Myw4OCwwLDEyNSwKKyAgICAyLDAsMTE2LDUsMCwxMzEsMCwwLDE0MywyMywwLDEsMTI0LDIsMCwxMDYsCisgICAgNiwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDEyNSwzLDAsODcsMTAwLAorICAgIDIsMCw4MSw4OCwxMjQsMywwLDEwMCwyLDAsMTA3LDksMCwxMTQsMzgsMCwKKyAgICAxMjQsMCwwLDExNiwwLDAsMTA2LDgsMCwxMDcsNywwLDExNCwxMDksMCwxMjQsCisgICAgMywwLDgzLDExNiwwLDAsMTA2LDgsMCwxMjQsMCwwLDI1LDEwNiw5LDAsCisgICAgODMsMTEzLDM4LDAsMTEzLDM4LDAsODcsMTAwLDIsMCw4MywxMDAsMiwwLDgzLAorICAgIDQwLDMsMCwwLDAsMTE3LDIzLDAsMCwwLDcwLDEwNSwxMTAsMTAwLDMyLDk3LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDExNywyMiwwLDAsMCwxMTUsMTIxLDExNSw0NiwxMDksMTAxLDExNiw5Nyw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNzgsNDAsMTAsMCwKKyAgICAwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDksMCwwLDAsMTA5LAorICAgIDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDksMCwwLDAsOTUsMTE5LDk3LAorICAgIDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDExNyw0LDAsMCwwLDExOSw5NywxMTQsMTEwLDExNywKKyAgICAxMywwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwKKyAgICAxMDMsMTE3LDE4LDAsMCwwLDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LAorICAgIDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsCisgICAgMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsCisgICAgMTAxLDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMTAsMCwKKyAgICAwLDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSw0MCw0LDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDExNyw2LDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNyw2LAorICAgIDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE4OCw1LDAsMCwxMTUsMjAsMCwwLDAsMCwKKyAgICAyLDksMSwxOSwxLDE2LDEsMTAsMSwyNCwxLDEyLDIsMTUsMSw0LAorICAgIDIsMjEsMiwxMTcsMTIsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwKKyAgICAwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDE5NCwwLDAsMCwxMTYsMCwKKyAgICAwLDEyNCwwLDAsMTE2LDEsMCwxMzEsMiwwLDExNSw0NSwwLDExNiwyLDAsCisgICAgMTAwLDEsMCwxMDYsMywwLDExNiw0LDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDIsMCwxMDAsMiwKKyAgICAwLDEwNywwLDAsMTE0LDcyLDAsMTE2LDUsMCwxMDAsMywwLDEzMSwxLDAsCisgICAgMTMwLDEsMCwxMTAsMCwwLDEyNCwxLDAsMTE0LDE1NiwwLDExNiwwLDAsMTI0LAorICAgIDEsMCwxMTYsMSwwLDEzMSwyLDAsMTE1LDEwOCwwLDExNiwyLDAsMTAwLDQsCisgICAgMCwxMzEsMSwwLDEzMCwxLDAsMTEzLDE1NiwwLDEyNCwxLDAsMTE2LDYsMCwKKyAgICAxMDYsNywwLDEwNyw3LDAsMTE0LDE1NiwwLDEwMCw1LDAsMTI1LDMsMCwxMTYsCisgICAgOCwwLDEyNCwzLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTMxLDEsCisgICAgMCwxMzAsMSwwLDExMywxNTYsMCwxMTAsMCwwLDEyNCwwLDAsMTIsMTE0LDE5MCwKKyAgICAwLDEyNCwyLDAsMTAwLDIsMCwxMDcsMiwwLDExNCwxOTAsMCwxMTYsNSwwLAorICAgIDEwMCw2LDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTAwLDcsMCw4MywKKyAgICA0MCw4LDAsMCwwLDExNywyOCwwLDAsMCw4NiwxMDEsMTE0LDEwNSwxMDIsMTIxLAorICAgIDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwzNCwKKyAgICAxMTUsOTcsMTEwLDEwMSwzNCw0NiwxMTcsMzEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsCisgICAgMTE2LDExNCw0NCwzMiwxMTAsMTExLDExNiwzMiwxMjMsMTI1LDEwNSwwLDAsMCwwLDExNywKKyAgICAxOCwwLDAsMCwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwKKyAgICAxMDEsMzIsNjIsNjEsMzIsNDgsMTE3LDMxLDAsMCwwLDk1LDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCisgICAgMTExLDMyLDk3LDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDExNyw2MSwwLDAsMCw4MCwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwKKyAgICAxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiw5OSw5NywKKyAgICAxMTAsMTEwLDExMSwxMTYsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwxMDEsMTA4LAorICAgIDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTcsMTcsMCwwLAorICAgIDAsNjksMTA5LDExMiwxMTYsMTIxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywKKyAgICAxMDksMTAxLDc4LDQwLDksMCwwLDAsMTE3LDEwLDAsMCwwLDEwNSwxMTUsMTA1LAorICAgIDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMTE3LDMsMCwwLDAsMTE1LDExNiwxMTQsMTE3LAorICAgIDksMCwwLDAsODQsMTIxLDExMiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsCisgICAgMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDQsMCwwLDAsMTE2LDEyMSwxMTIsCisgICAgMTAxLDExNywxMCwwLDAsMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDExNywxMSwwLDAsMCw4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LAorICAgIDExNCwxMTQsMTExLDExNCw0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywKKyAgICAxMDksMTAxLDExNyw3LDAsMCwwLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsNSwKKyAgICAwLDAsMCwxMDgsMTAxLDExOCwxMDEsMTA4LDExNywzLDAsMCwwLDEwOSwxMTUsMTAzLAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEzLDAsMCwKKyAgICAwLDk1LDExNSw5NywxMTAsMTA1LDExNiwxMjEsOTUsOTksMTA0LDEwMSw5OSwxMDcsMjA1LDUsCisgICAgMCwwLDExNSwyNCwwLDAsMCwwLDIsMTUsMSwzMCwxLDEyLDEsMTUsCisgICAgMSw2LDEsMTUsMSwxNSwxLDE1LDEsNiwyLDI3LDEsMTksMSwxMTcsCisgICAgMTMsMCwwLDAsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsMTAxLDk5LAorICAgIDEwNywxMTcsMjAsMCwwLDAsNzgsMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAorICAgIDExMCw5NywxMDksMTAxLDEwMCwzMiwxMjMsMzMsMTE0LDEyNSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsOSwwLDAsMCwyNywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTIsMiwwLDAsMTAwLDAsMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDEsMCwKKyAgICAxMDAsMSwwLDEzMSwxLDAsMTAwLDIsMCwyNSwxMjUsMywwLDEyNCwzLDAsCisgICAgMTE0LDE3OCwwLDEyNCwzLDAsMTE2LDIsMCwxMDYsMywwLDEwNyw3LDAsMTE0LAorICAgIDYyLDAsMTE2LDQsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsMCwxLDExMCwKKyAgICAwLDAsMTI0LDAsMCwxMTYsMiwwLDEwNiwzLDAsMTA3LDYsMCwxMTQsODgsCisgICAgMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsMCwyNSw4MywxMTYsMiwwLDEwNiwKKyAgICAzLDAsMTI0LDMsMCwyNSwxMjUsNCwwLDEyMSwxMywwLDEyNCw0LDAsMTA2LAorICAgIDUsMCwxMjUsMiwwLDg3LDExMywxNzgsMCw0LDExNiw2LDAsMTA3LDEwLDAsCisgICAgMTE0LDE3NCwwLDEsMSwxLDExNiw3LDAsMTAwLDMsMCwyMywxMDYsOCwwLAorICAgIDEyNCwwLDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw1LDAsMTE2LDksMCwxMjQsCisgICAgNSwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwxLDEzMCwxLDAsODksMTEzLAorICAgIDE3OCwwLDg4LDExMCwwLDAsMTE2LDEwLDAsMTI0LDAsMCwxMjQsMiwwLDEzMSwKKyAgICAyLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjUwLAorICAgIDAsMTE2LDksMCwxMTYsNywwLDEwNiw4LDAsMTI0LDAsMCwxMzEsMSwwLAorICAgIDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwxLDEyNSw3LDAsMTAwLDEwLDAsMTI0LAorICAgIDcsMCw5NSwxMiwwLDEyNCw3LDAsMTMwLDEsMCwxMTAsNDcsMCwxMjQsMCwKKyAgICAwLDExNiwyLDAsMTA2LDMsMCwxMDcsNywwLDExNCw0MSwxLDEyNCw2LDAsCisgICAgMTA2LDEzLDAsMTI0LDAsMCwxMzEsMSwwLDEsMTE2LDE0LDAsMTAwLDUsMCwKKyAgICAxMjQsMCwwLDEyNCw2LDAsMTMxLDMsMCwxLDExMCwwLDAsMTE2LDIsMCwKKyAgICAxMDYsMywwLDEyNCwwLDAsMjUsMTI1LDgsMCwxMjQsMywwLDExNCwxMDUsMSwKKyAgICAxMTYsMiwwLDEwNiwzLDAsMTI0LDMsMCwyNSwxMjUsNCwwLDExNiwxNSwwLAorICAgIDEyNCw0LDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsCisgICAgNiwwLDI1LDEyNCw4LDAsMTMxLDMsMCwxLDExMCwwLDAsMTE2LDE2LDAsCisgICAgMTI0LDgsMCwxMDAsNywwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKKyAgICA4LDAsMTE0LDIxMiwxLDEyMSw1OSwwLDEyNCw4LDAsMTA2LDE3LDAsMTI0LDgsCisgICAgMCw5NSwxOCwwLDExNiwxOSwwLDEyNCw4LDAsMTAwLDgsMCwxMzEsMiwwLAorICAgIDExNSwxODcsMSwxMjQsOCwwLDEwNiwxOCwwLDEwNiwxLDAsMTAwLDEsMCwxMzEsCisgICAgMSwwLDEwMCwyLDAsMjUsMTI0LDgsMCw5NSwxOCwwLDExMCwwLDAsODcsCisgICAgMTEzLDIxMiwxLDQsMTE2LDYsMCwxMDcsMTAsMCwxMTQsMjA4LDEsMSwxLDEsCisgICAgODksMTEzLDIxMiwxLDg4LDExMCwwLDAsMTE2LDE5LDAsMTI0LDgsMCwxMDAsOSwKKyAgICAwLDEzMSwyLDAsMTE1LDgsMiwxMjEsMTMsMCwxMjQsNiwwLDEyNCw4LDAsCisgICAgOTUsMjAsMCw4NywxMTMsOCwyLDQsMTE2LDYsMCwxMDcsMTAsMCwxMTQsNCwKKyAgICAyLDEsMSwxLDg5LDExMyw4LDIsODgsMTEwLDAsMCwxMjQsOCwwLDgzLAorICAgIDQwLDExLDAsMCwwLDc4LDExNywxLDAsMCwwLDQ2LDEwNSwwLDAsMCwKKyAgICAwLDExNywyMSwwLDAsMCw1OSwzMiwxMjMsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwKKyAgICAxMTYsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNyw0LDAsMCwwLAorICAgIDExMCw5NywxMDksMTAxLDExNywxOCwwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSwzMiwzNSwzMiwxMjMsMzMsMTE0LDEyNSwxMDUsMiwwLDAsMCwKKyAgICAxMTcsMTEsMCwwLDAsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LAorICAgIDExNyw4LDAsMCwwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNywxMCwwLAorICAgIDAsMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDg0LDQwLDIxLDAsCisgICAgMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMCwwLDAsMCwKKyAgICAxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsMywwLDAsMCwxMTUsCisgICAgMTIxLDExNSwxMTcsNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDI1LAorICAgIDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsCisgICAgOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNywxNCwwLDAsMCw2NSwxMTYsCisgICAgMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNyw4LDAsMCwKKyAgICAwLDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNyw2LDAsMCwwLDEwMiwxMTEsCisgICAgMTE0LDEwOSw5NywxMTYsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNywxMiwwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LDEwLAorICAgIDAsMCwwLDk1LDExMCwxMTEsMTE2LDk1LDEwMiwxMTEsMTE3LDExMCwxMDAsMTE3LDExLDAsCisgICAgMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxNiwwLAorICAgIDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsCisgICAgMTAzLDEwMSwxMTcsNywwLDAsMCwxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwxMTcsNywKKyAgICAwLDAsMCwxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwxMTcsOCwwLDAsMCw5NSwKKyAgICA5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTEsMCwwLDAsOTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNyw3LDAsMCwwLDEwNCw5NywxMTUsOTcsCisgICAgMTE2LDExNiwxMTQsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTUsOTUsNDAsOSwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsNywwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTcsNCwwLDAsCisgICAgMCwxMTIsOTcsMTE2LDEwNCwxMTcsNiwwLDAsMCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LAorICAgIDExNywxMywwLDAsMCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNywzLDAsMCwwLDEwOSwxMTUsMTAzLDExNyw2LDAsMCwwLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDMsMCwwLDAsMTAxLDEyMCw5OSwxMTcsNiwwLAorICAgIDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywyMywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsCisgICAgMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsCisgICAgMjI0LDUsMCwwLDExNSw3NiwwLDAsMCwwLDEsNiwxLDE5LDEsNiwKKyAgICAxLDE1LDEsMTYsMiwxNSwxLDExLDIsMTMsMSwzLDEsMTMsMSwxMywKKyAgICAxLDIyLDEsMjYsMSwxNSwxLDEyLDEsMjcsMyw5LDEsOSwxLDE1LAorICAgIDIsMTMsMSwxOSwyLDEzLDEsNiwyLDEzLDEsMzIsMiwyNCwxLDMsCisgICAgMSwxMiwxLDE1LDEsMzIsMSwxMywxLDgsMiwxNSwxLDMsMSwxMywKKyAgICAxLDEzLDEsOCwxLDExNywyMywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsCisgICAgOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwKKyAgICAxMDAsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTgsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDc1LDAsMCwwLDEyMiwxNiwwLDExNiwwLAorICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTAwLDEsMCwxMTYsMSwKKyAgICAwLDEwNiwyLDAsMTMxLDAsMCwxLDg4LDEyNCwyLDAsMTA2LDMsMCwxMzEsCisgICAgMCwwLDEsMTIyLDE3LDAsMTE2LDQsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLAorICAgIDIsMCw4Myw4NywxMDAsMSwwLDEyNCwyLDAsMTA2LDUsMCwxMzEsMCwwLAorICAgIDEsODgsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw1NCwwLDAsMCwKKyAgICA3MCwxMDUsMTEwLDEwMCwzMiw5NywxMTAsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwKKyAgICAxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMzIsMTA4LDExMSw5OSwxMDcsNDYsNzgsNDAsNiwwLDAsMCwxMTcsMTYsMCwwLAorICAgIDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwKKyAgICAxMDcsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDExNCwKKyAgICAxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNyw3LDAsMCwwLAorICAgIDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE3LDIzLDAsMCwwLDk1LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwKKyAgICAxMDcsMTAxLDEwMCwxMTcsNywwLDAsMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw0MCwKKyAgICAzLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw3LDAsCisgICAgMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDExNyw0LDAsMCwwLDEwOCwxMTEsCisgICAgOTksMTA3LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE0LAorICAgIDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsCisgICAgMTAwLDE4LDYsMCwwLDExNSwxNCwwLDAsMCwwLDIsMywxLDE2LDIsCisgICAgMTEsMSwxMCwxLDMsMSwxNywyLDExNywxNCwwLDAsMCw5NSwxMDIsMTA1LAorICAgIDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5OSwzLDAsMCwwLAorICAgIDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxNzIsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsCisgICAgMCwxMzEsMywwLDEsMTI0LDIsMCwxMDAsMSwwLDEwNyw0LDAsMTE0LDQ5LAorICAgIDAsMTE2LDEsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLAorICAgIDEyNSwwLDAsMTEwLDAsMCwxMTYsMiwwLDEwNiwzLDAsMTMxLDAsMCwxLAorICAgIDEyNCwwLDAsMTE2LDQsMCwxMDYsNSwwLDEwNyw3LDAsMTE0LDg3LDAsMTE2LAorICAgIDYsMCwxMjQsMCwwLDExNiw3LDAsMTMxLDIsMCw4MywxMTYsNCwwLDEwNiwKKyAgICA1LDAsMTI0LDAsMCwyNSwxMjUsMywwLDEyNCwzLDAsMTAwLDQsMCwxMDcsCisgICAgOCwwLDExNCwxNTgsMCwxMTYsMiwwLDEwNiw5LDAsMTMxLDAsMCwxLDEwMCwKKyAgICAyLDAsMTA2LDEwLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSw0LDAsMTE2LDExLAorICAgIDAsMTI0LDQsMCwxMDAsMywwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLAorICAgIDExMCwwLDAsMTE2LDEyLDAsMTI0LDAsMCwxMzEsMSwwLDEsMTI0LDMsMCwKKyAgICA4Myw0MCw1LDAsMCwwLDExNyw1MCwxLDAsMCw3MywxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwKKyAgICAzMiwxMDUsMTE2LDExNSwzMiwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsMTA4LDEwOCwzMiwKKyAgICAxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDksOTcsMTAwLAorICAgIDEwMSwzMiwxMDIsMTE0LDExMSwxMDksNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDk3LDEwMCwxMDYsMTE3LDExNSwxMTYsMTA5LDEwMSwxMTAsMTE2LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LAorICAgIDExNiwxMDUsMTExLDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTAzLDExNCwxMDEsOTcsMTE2LDEwMSwxMTUsMTE2LDMyLDk5LDExMSwxMDksCisgICAgMTA5LDExMSwxMTAsMzIsMTAwLDEwMSwxMTAsMTExLDEwOSwxMDUsMTEwLDk3LDExNiwxMTEsMTE0LDMyLAorICAgIDExMSwxMDIsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwxMDUsMTE2LDEyMSwKKyAgICAxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5NywxMTAsMTAwLDMyLDk1LAorICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDQ2LDMyLDg0LDEwNCwxMDUsMTE1LDMyLAorICAgIDEwNSwxMTAsOTksMTA4LDExNywxMDAsMTAxLDExNSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsCisgICAgMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDEwNSwxMDIsMTAsCisgICAgMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDAsCisgICAgMTA1LDEwMCwzMiwxMTAsMTExLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMDUsMCwwLAorICAgIDAsMCwxMTcsNDAsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTExLDEwMiwKKyAgICAzMiwxMjMsMTI1LDMyLDEwNCw5NywxMDgsMTE2LDEwMSwxMDAsNTksMzIsNzgsMTExLDExMCwxMDEsCisgICAgMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LAorICAgIDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNzgsNDAsMTMsMCwwLDAsMTE3LDEzLAorICAgIDAsMCwwLDk1LDExNSw5NywxMTAsMTA1LDExNiwxMjEsOTUsOTksMTA0LDEwMSw5OSwxMDcsCisgICAgMTE3LDEzLDAsMCwwLDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsCisgICAgOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsMywwLDAsCisgICAgMCwxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgMTE3LDE0LDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDExNywxMSwwLDAsMCw5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMiwwLDAsCisgICAgMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsNiwwLAorICAgIDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywxMSwwLDAsMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTksMCwwLDAsOTUsMTA4LDExMSwKKyAgICA5OSwxMDcsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0MCw1LDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw3LAorICAgIDAsMCwwLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsNSwwLDAsMCwxMDgsCisgICAgMTAxLDExOCwxMDEsMTA4LDExNyw2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywKKyAgICA3LDAsMCwwLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDEwMyw5OSwxMDAsCisgICAgOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzEsNiwwLDAsMTE1LDI4LDAsMCwwLAorICAgIDAsOSwxNiwxLDEyLDEsMjEsMSwxMCwxLDE1LDEsMTMsMSwxMywxLAorICAgIDEyLDEsMTAsMSw2LDEsOSwxLDIxLDEsMTAsMSwxMTcsMTEsMCwwLAorICAgIDAsOTUsMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5OSwzLDAsMCwKKyAgICAwLDAsMCwwLDAsNSwwLDAsMCwxNywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjMzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwKKyAgICAyLDAsMTE0LDIyOSwwLDEwMCwyLDAsMTI0LDEsMCwxMDcsNiwwLDExNCw4OSwKKyAgICAwLDExNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwxLDAsMTI0LDEsMCwKKyAgICAxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCwxLDExNiwwLDAsMTI0LDAsMCwKKyAgICAxMDAsMywwLDEzMSwyLDAsMTE0LDg5LDAsMTI0LDEsMCwxMDYsMywwLDEyNCwKKyAgICAwLDAsMTA2LDQsMCwxMzEsMSwwLDEsMTEzLDg5LDAsMTEwLDAsMCwxMjAsCisgICAgMTM3LDAsMTI0LDEsMCw2OCw5MywxMjYsMCwxMjUsMywwLDExNiwwLDAsMTI0LAorICAgIDAsMCwxMjQsMywwLDEzMSwyLDAsMTE1LDk2LDAsMTIxLDMyLDAsMTE2LDUsCisgICAgMCwxMjQsMiwwLDEwMCw0LDAsMTA2LDYsMCwxMjQsMCwwLDEwNiw3LDAsCisgICAgMTI0LDMsMCwxMzEsMiwwLDEzMSwyLDAsMSw4NywxMTMsMjIyLDAsNCwxMTYsCisgICAgOCwwLDEwNywxMCwwLDExNCwyMTgsMCwxLDEyNSw0LDAsMSwxMjIsMzUsMCwKKyAgICAxMTYsMCwwLDEyNCw0LDAsMTAwLDUsMCwxMzEsMiwwLDExNCwxOTcsMCwxMjQsCisgICAgNCwwLDEwNiw5LDAsMTE0LDE5NywwLDExMCwzLDAsMTMwLDAsMCw4Nyw4OSwKKyAgICAxMDAsNiwwLDEwMCw2LDAsMTI1LDQsMCwxMjYsNCwwLDg4LDExMywyMjIsMCwKKyAgICA4OCwxMTMsOTYsMCwxMTMsOTYsMCw4NywxMTAsMCwwLDEyNCwwLDAsODMsNDAsCisgICAgNywwLDAsMCwxMTcsMjM4LDAsMCwwLDcwLDEwNSwxMDMsMTE3LDExNCwxMDEsMzIsCisgICAgMTExLDExNywxMTYsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw5NSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsMTA1LDExNSwKKyAgICAzMiw5NywzMiw5OSw5NywxMDgsMTA4LDk3LDk4LDEwOCwxMDEsMzIsMTE5LDEwNCwxMDUsOTksCisgICAgMTA0LDMyLDExNiw5NywxMDcsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKKyAgICAzMiwxMTEsMTAyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNiwxMTEsMTAsMzIsMzIsCisgICAgMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsNzMsMTE2LDMyLDEwNSwxMTUsMzIsCisgICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMCwxMDEsOTksMTExLAorICAgIDExNywxMTIsMTA4LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk3LDExNSwxMTUsMTE3LDEwOSwxMDUsMTEwLDEwMywzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDM5LDExNSwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTE0LDEwMSwxMDAsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE3LDgsMCwwLDAsOTUsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsOTUsMTE3LDEsMCwwLDAsNDIsMTE3LDcsMCwwLDAsOTUsCisgICAgOTUsOTcsMTA4LDEwOCw5NSw5NSwxMTcsNSwwLDAsMCwxMjMsMTI1LDQ2LDEyMywxMjUsCisgICAgMTE3LDEwLDAsMCwwLDk1LDExMCwxMTEsMTE2LDk1LDEwMiwxMTEsMTE3LDExMCwxMDAsNzgsCisgICAgNDAsMTAsMCwwLDAsMTE3LDcsMCwwLDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LAorICAgIDExNCwxMTcsNCwwLDAsMCwxMDgsMTA1LDExNSwxMTYsMTE3LDYsMCwwLDAsMTE0LAorICAgIDEwMSwxMDksMTExLDExOCwxMDEsMTE3LDYsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsCisgICAgMTE3LDcsMCwwLDAsOTUsOTUsOTcsMTA4LDEwOCw5NSw5NSwxMTcsMjUsMCwwLAorICAgIDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksCisgICAgMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDYsMCwwLDAsMTAyLAorICAgIDExMSwxMTQsMTA5LDk3LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSwKKyAgICA5NSw5NSwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE3LDEwLDAsMCwwLDk1LDExMCwxMTEsMTE2LDk1LDEwMiwxMTEsMTE3LDExMCwKKyAgICAxMDAsNDAsNSwwLDAsMCwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTcsOCwwLDAsMCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDExNyw3LAorICAgIDAsMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDExNywxLDAsMCwwLDEyMCwKKyAgICAxMTcsMywwLDAsMCwxMDEsMTIwLDk5LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLDk1LDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsCisgICAgOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiw1NSw2LDAsMCwxMTUsMzIsMCwKKyAgICAwLDAsMCwxMCwxNSwxLDEyLDEsMTIsMSwxMywxLDE1LDEsMjIsMSwKKyAgICAxMywxLDE1LDEsMywxLDYsMSwyNiwxLDE4LDYsMjQsMSwzLDIsCisgICAgMzIsMSwxMTcsMTYsMCwwLDAsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwxMDIsCisgICAgMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDc4LDAsMCwKKyAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTI1LDEsMCwKKyAgICAxMjQsMSwwLDEwMCw2LDAsMTA3LDgsMCwxMTQsNzQsMCwxMjQsMCwwLDEwMCwKKyAgICAyLDAsMjUsMTI1LDEsMCwxMDAsMywwLDEyNCwwLDAsMTA3LDcsMCwxMTQsCisgICAgNzQsMCwxMjQsMSwwLDEwNiwyLDAsMTAwLDQsMCwxMzEsMSwwLDEwMCw1LAorICAgIDAsMjUsMTI1LDEsMCwxMTMsNzQsMCwxMTAsMCwwLDEyNCwxLDAsODMsNDAsCisgICAgNywwLDAsMCwxMTcsMTY3LDAsMCwwLDY3LDk3LDEwOCw5OSwxMTcsMTA4LDk3LAorICAgIDExNiwxMDEsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsCisgICAgMTAxLDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsCisgICAgMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDMsMTE3LDk3LDExNCw5NywxMTAsMTE2LDEwMSwxMDEsCisgICAgMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDEwMCwzMiwKKyAgICAxMTEsMTE0LDMyLDk5LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsMzIsCisgICAgMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDExNCwKKyAgICAxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsCisgICAgMTE1LDMyLDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsCisgICAgMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMTcsMTEsMCwwLDAsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LAorICAgIDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw4LDAsCisgICAgMCwwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNywxLDAsMCwwLDQ2LAorICAgIDEwNSwwLDAsMCwwLDc4LDQwLDMsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgMTAzLDEwMSwxMTYsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDEwLDAsMCwKKyAgICAwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQwLDIsMCwwLDAsCisgICAgMTE3LDcsMCwwLDAsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSwxMTcsNywwLDAsCisgICAgMCwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMTcsMCwwLDAsOTUsOTksOTcsMTA4LDk5LDk1LDk1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw4OSw2LDAsMCwxMTUsMTIsCisgICAgMCwwLDAsMCw3LDE1LDEsMTIsMSwxMCwxLDEyLDEsMjUsMSwxMTcsCisgICAgMTcsMCwwLDAsOTUsOTksOTcsMTA4LDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSw5NSw5NSw5OSwwLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw1NSwwLDAsMCwxMTYsCisgICAgMCwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEwMiwyLDAsMTI1LDAsCisgICAgMCwxMTYsMywwLDExNiw0LDAsMTAyLDIsMCwxMjUsMSwwLDExNiw1LDAsCisgICAgMTE2LDYsMCwxMDIsMiwwLDEyNSwyLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwKKyAgICAyLDAsMTAzLDMsMCw4Myw0MCwxLDAsMCwwLDExNywxMTEsMCwwLDAsCisgICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDExMSwKKyAgICAxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDY5LDk3LDk5LDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMzIsMTA1LDExNSwzMiw5NywKKyAgICAzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDQsMzIsCisgICAgMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0NCwzMiw5NywxMDgsMTA4LDExMSwxMTksOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNSw0MSw0NiwxMCwzMiwzMiwzMiwzMiw0MCwKKyAgICA3LDAsMCwwLDExNywxOSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsNCwwLDAsCisgICAgMCw5NSwxMDUsMTA5LDExMiwxMTcsMTgsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsCisgICAgMTA1LDExMSwxMTAsOTUsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTcsMTYsMCwwLAorICAgIDAsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwxMTcsMTUsMCwwLDAsODMsNzksODUsODIsNjcsNjksOTUsODMsODUsNzAsCisgICAgNzAsNzMsODgsNjksODMsMTE3LDIwLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICAxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxNywKKyAgICAwLDAsMCw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCwKKyAgICA3Myw4OCw2OSw4Myw0MCwzLDAsMCwwLDExNywxMCwwLDAsMCwxMDEsMTIwLAorICAgIDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwxMTUsMTE3LDYsMCwwLDAsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwxMTcsOCwwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywyNywwLDAsCisgICAgMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwKKyAgICAxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTA0LDYsMCwwLAorICAgIDExNSw4LDAsMCwwLDAsNSwxOCwxLDEyLDEsMTIsMSwxMTcsMjcsMCwKKyAgICAwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsCisgICAgOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDk5LDUsMCwKKyAgICAwLDAsMCwwLDAsMCw5LDAsMCwwLDUsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDIyNywwLDAsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDIsMCwKKyAgICAxMTQsMjcsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNSwwLDExMCwKKyAgICA1NCwwLDEyNCwxLDAsMTAwLDMsMCwxMDcsOSwwLDExNCw0NSwwLDEyNCwxLAorICAgIDAsMTEwLDMsMCwxMDUsMCwwLDEyNSw2LDAsMTE2LDIsMCwxMjQsNiwwLAorICAgIDEzMSwxLDAsMTI1LDcsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDcsMCwxMjQsCisgICAgNCwwLDEzMSwzLDAsMTI1LDUsMCwxMjQsMywwLDExNSwyMDcsMCwxMjQsNCwKKyAgICAwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMTIyLDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDEwNiwzLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTMxLDEsMCwKKyAgICA4MywxMjQsMCwwLDExNSwxMzIsMCwxMjQsNSwwLDgzLDExNiw0LDAsMTI0LDAsCisgICAgMCwxMzEsMSwwLDExNiw0LDAsMTI0LDAsMCwxMDYsMywwLDEwMCwyLDAsCisgICAgMTMxLDEsMCwxMDAsMSwwLDI1LDEzMSwxLDAsMjQsMTI1LDgsMCwxMTYsNSwKKyAgICAwLDEwNiw2LDAsMTI0LDUsMCwxMDYsNywwLDEwMCwzLDAsMTE2LDQsMCwKKyAgICAxMjQsNSwwLDEwNiw3LDAsMTMxLDEsMCwxMjQsOCwwLDI0LDEzMywyLDAsCisgICAgMjUsMjUsODMsMTEwLDE2LDAsMTE2LDgsMCwxMjQsNSwwLDEyNCwzLDAsMTE2LAorICAgIDAsMCwxMzEsMywwLDgzLDEwMCwzLDAsODMsNDAsNCwwLDAsMCwxMTcsCisgICAgMjE0LDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTcsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDMsCisgICAgMTA4LDExMSw5OCw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwKKyAgICAzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwxMTAsMTAyLDEwMSwKKyAgICAxMTQsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMDUsMTE1LDMyLDExMSw5OSw5OSwxMTcsMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwKKyAgICAxMTQsMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwKKyAgICAxMDEsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwzOSwKKyAgICAzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLDExMCwKKyAgICAxMTEsMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwxMDIsCisgICAgMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsMTE2LAorICAgIDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsMTE1LAorICAgIDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsCisgICAgMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsNDYsCisgICAgMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsCisgICAgMTE2LDYyLDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwxMTgsCisgICAgMTAxLDEwOCwzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsCisgICAgMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAzMiwxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICAxMDUsMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LAorICAgIDk2LDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLDEwNCwKKyAgICA5NywxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLDEwMiwKKyAgICAzMiw1MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMDUsMCwwLDAsMCwxMTcsCisgICAgMSwwLDAsMCw0Niw3OCw0MCw5LDAsMCwwLDExNywxMSwwLDAsMCwKKyAgICA5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNyw0LDAsMCwwLAorICAgIDc4LDExMSwxMTAsMTAxLDExNywxNywwLDAsMCw5NSw5OSw5NywxMDgsOTksOTUsOTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNyw5LDAsMCwwLDExMiwKKyAgICA5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsCisgICAgMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LAorICAgIDk1LDExNywxNiwwLDAsMCw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDk1LDEwMiwxMTQsCisgICAgMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsNDAsOSwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTcsNywwLDAsMCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LAorICAgIDExNyw2LDAsMCwwLDEwOCwxMTEsOTksOTcsMTA4LDExNSwxMTcsOCwwLDAsMCwKKyAgICAxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDExNyw1LDAsMCwwLDEwOCwxMDEsMTE4LAorICAgIDEwMSwxMDgsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDgsMCwKKyAgICAwLDAsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSw5NSwxMTcsNywwLDAsMCwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDcsMCwwLDAsOTksMTE3LDExNiw5NSwxMTEsCisgICAgMTAyLDEwMiw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwKKyAgICAwLDAsMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwxMTUsNiwwLAorICAgIDAsMTE1LDI2LDAsMCwwLDAsMTEsMTIsMSwxNSwyLDI0LDEsMTIsMSwKKyAgICAxOCwxLDYsMywxMiwxLDIzLDEsNiwxLDQsMiwzNSwxLDQwLDIsCisgICAgMTE3LDEwLDAsMCwwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwxNCwwLDAsMCwxMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTY5LDIsMCwwLDEyNCwxLDAsOTcsMCwwLDEyNCwKKyAgICAwLDAsOTcsMSwwLDEyMCw0NywwLDExNiwwLDAsMTE2LDEsMCwxMDIsMiwKKyAgICAwLDY4LDkzLDMzLDAsMTI1LDIsMCwxMTYsMiwwLDEyNCwyLDAsMTAwLDEsCisgICAgMCwxMzEsMiwwLDExNSwyNSwwLDExNiwzLDAsMTI0LDIsMCw5NSw0LDAsCisgICAgMTEzLDI1LDAsMTEzLDI1LDAsODcsMTE2LDEsMCwxMDYsNSwwLDExNiw2LDAsCisgICAgMjUsMTI1LDMsMCwxMjAsNzYsMCwxMDAsMjgsMCw2OCw5Myw2OCwwLDEyNSw0LAorICAgIDAsMTI0LDQsMCwxMTYsMSwwLDEwNiw1LDAsMTA3LDcsMCwxMTQsMTIxLDAsCisgICAgMTE2LDMsMCwxMDYsNywwLDEyNCw0LDAsMTMxLDEsMCwxMjUsNSwwLDExMCwKKyAgICAxMywwLDExNiwxLDAsMTA2LDUsMCwxMjQsNCwwLDI1LDEyNSw1LDAsMTE2LAorICAgIDgsMCwxMjQsMywwLDEyNCw0LDAsMTI0LDUsMCwxMzEsMywwLDEsMTEzLAorICAgIDgyLDAsODcsMTAwLDYsMCwxMDAsNywwLDEwMywxLDAsMTAyLDIsMCwxMDAsCisgICAgOCwwLDEwMCw5LDAsMTAwLDcsMCwxMDMsMiwwLDEwMiwyLDAsMTAwLDEwLAorICAgIDAsMTAwLDksMCwxMDAsNywwLDEwMywyLDAsMTAyLDIsMCwxMDIsMywwLAorICAgIDEyNSw2LDAsMTIwLDE4OSwwLDEyNCw2LDAsNjgsOTMsMTY5LDAsOTIsMiwwLAorICAgIDEyNSw3LDAsMTI1LDgsMCwxMTYsOSwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwKKyAgICAwLDAsMTI0LDgsMCw2OCwxMzEsMSwwLDEzMSwxLDAsMTE1LDI1MiwwLDExNiwKKyAgICAxMCwwLDEzMCwxLDAsMTI0LDgsMCwxMDAsMTMsMCwyNSwxMjUsOSwwLDEyNCwKKyAgICA3LDAsMTE2LDEsMCwxMDYsNSwwLDEwNyw2LDAsMTE0LDM4LDEsMTE2LDEsCisgICAgMCwxMDYsNSwwLDEyNCw3LDAsMjUsMTI1LDEwLDAsODAsMTEzLDIwOSwwLDEyMSwKKyAgICA2MCwwLDExNiwzLDAsMTA2LDcsMCwxMjQsNywwLDEzMSwxLDAsMTI1LDEwLAorICAgIDAsMTI0LDcsMCwxMDAsMTAsMCwxMDcsMiwwLDExNCw5NiwxLDEwMCwxNCwwLAorICAgIDExNiwxLDAsMTA2LDExLDAsMTA3LDYsMCwxMTQsOTYsMSwxMjQsOCwwLDEwMCwKKyAgICAxNSwwLDI1LDEyNSw5LDAsMTEwLDAsMCw4MCw4NywxMTMsMjA5LDAsNCwxMTYsCisgICAgMTIsMCwxMDcsMTAsMCwxMTQsMTIxLDEsMSwxLDEsMTE5LDIwOSwwLDg5LDExMywKKyAgICAyMDksMCw4OCwxMTMsMjA5LDAsODcsMTE2LDEyLDAsMTAwLDE2LDAsMTMxLDEsMCwKKyAgICAxMzAsMSwwLDEyMSwxOSwwLDExNiwzLDAsMTA2LDcsMCwxMDAsMTcsMCwxMzEsCisgICAgMSwwLDEyNSwxMSwwLDg3LDExMCwyNCwwLDQsMTE2LDEyLDAsMTA3LDEwLDAsCisgICAgMTE0LDE4MywxLDEsMSwxLDEwMCwyNywwLDEyNSwxMSwwLDg5LDExMCwxLDAsCisgICAgODgsMTE2LDMsMCwxMDYsNywwLDEwMCwxOCwwLDEzMSwxLDAsMTI1LDEyLDAsCisgICAgMTI0LDcsMCwxMDAsOCwwLDEwNywyLDAsMTE0LDI0NSwxLDExNiwzLDAsMTA2LAorICAgIDcsMCwxMDAsMTksMCwxMzEsMSwwLDEyNSwxMywwLDExNiw4LDAsMTI0LDMsCisgICAgMCwxMDAsMjAsMCwxMjQsMTMsMCwxMzEsMywwLDEsMTEwLDAsMCwxMTYsOCwKKyAgICAwLDEyNCwzLDAsMTAwLDIxLDAsMTI0LDEwLDAsMTMxLDMsMCwxLDExNiw4LAorICAgIDAsMTI0LDMsMCwxMDAsMTcsMCwxMjQsMTEsMCwxMzEsMywwLDEsMTE2LDgsCisgICAgMCwxMjQsMywwLDEwMCwxOCwwLDEyNCwxMiwwLDEzMSwzLDAsMSwxMTYsOCwKKyAgICAwLDEyNCwzLDAsMTAwLDIyLDAsMTI0LDksMCwxMzEsMywwLDEsMTE2LDgsCisgICAgMCwxMjQsMywwLDEwMCwyMywwLDExNiwxNCwwLDEyNCw4LDAsMTMxLDEsMCwKKyAgICAxMzEsMywwLDEsMTE2LDgsMCwxMjQsMywwLDEwMCwyNCwwLDExNiwxNSwwLAorICAgIDEzMSwwLDAsMTMxLDMsMCwxLDExNiwxNiwwLDEwNiwxNywwLDExNiwwLDAsCisgICAgMTA2LDE4LDAsMTMxLDAsMCwxMzEsMSwwLDEsMTI0LDcsMCwxMDAsOCwwLAorICAgIDEwNywyLDAsMTE0LDE2NSwyLDExNiwxOSwwLDEwNiwyMCwwLDEwMCwyNSwwLDEzMSwKKyAgICAxLDAsMSwxMDAsMjYsMCwxMTYsMTYsMCwxMDcsNiwwLDExNCwxNjUsMiwxMDAsCisgICAgMjksMCwxMTYsMjIsMCw5NSwyMywwLDExMywxNjUsMiwxMTAsMCwwLDEwMCwyNywKKyAgICAwLDgzLDQwLDMwLDAsMCwwLDExNywyNTAsMCwwLDAsODMsMTAxLDExNiwxMTcsCisgICAgMTEyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLAorICAgIDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICAzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LAorICAgIDEwNCwxMDEsMTA5LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTE1LDMyLDExNSwxMjEsMTE1LDMyLDEwNSwKKyAgICAxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsCisgICAgNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLAorICAgIDk3LDExMCwxMDAsMzIsOTUsMTA1LDEwOSwxMTIsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsCisgICAgMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwxMTEsOTcsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiwKKyAgICA0NSwxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwKKyAgICAzMiwxMTYsMTA0LDExMSwxMTUsMTAxLDMyLDExNiwxMTksMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDEwMSwxMjAsMTEyLDEwOCwxMDUsCisgICAgOTksMTA1LDExNiwxMDgsMTIxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw5NSw5NSwxMTcsMywwLDAsMCw5NSwxMDUsMTExLDExNyw5LDAsCisgICAgMCwwLDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsOCwwLDAsMCwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTUsMTE3LDcsMCwwLDAsMTA5LDk3LDExNCwKKyAgICAxMTUsMTA0LDk3LDEwOCwxMTcsNSwwLDAsMCwxMTIsMTExLDExNSwxMDUsMTIwLDExNywxLAorICAgIDAsMCwwLDQ3LDExNywyLDAsMCwwLDExMCwxMTYsMTE3LDEsMCwwLDAsCisgICAgOTIsMTE3LDMsMCwwLDAsMTExLDExNSw1MCw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwxMTUsMzMsCisgICAgMCwwLDAsMTI0LDAsMCw5MywyMywwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCisgICAgMSwwLDEzMSwxLDAsMTAwLDAsMCwxMDcsMiwwLDg2LDEsMTEzLDMsMCwKKyAgICAxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTA1LDEsMCwwLDAsNzgsNDAsCisgICAgMSwwLDAsMCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCw0MCwyLDAsMCwKKyAgICAwLDExNywyLDAsMCwwLDQ2LDQ4LDExNywzLDAsMCwwLDExNSwxMDEsMTEyLAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwwLAorICAgIDAsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDE3NCw2LDAsMCwxMTUsMiwKKyAgICAwLDAsMCw2LDAsMTE3LDI1LDAsMCwwLDk1LDExNSwxMDEsMTE2LDExNywxMTIsCisgICAgNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsCisgICAgMTEyLDExNCw2MiwxMDUsMCwwLDAsMCwxMTcsNywwLDAsMCw2OSw3Nyw4OCwKKyAgICAzMiw3MSw2Nyw2NywxMDUsMSwwLDAsMCwxMTcsMzAsMCwwLDAsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LAorICAgIDMyLDExMiwxMTEsMTE1LDEwNSwxMjAsMzIsMTExLDExNCwzMiwxMTAsMTE2LDExNyw3LDAsMCwKKyAgICAwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDgsMCwwLDAsOTUsMTE5LDEwMSwKKyAgICA5NywxMDcsMTE0LDEwMSwxMDIsMTE3LDYsMCwwLDAsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsCisgICAgMTE3LDcsMCwwLDAsOTUsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE3LDMsMCwwLAorICAgIDAsOTUsMTExLDExNSwxMTcsOCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLAorICAgIDExMiwxMTcsMTUsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsOTcsMTE0LAorICAgIDk3LDExNiwxMTEsMTE0LDExNSwxMTcsMTEsMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLAorICAgIDk1LDk5LDk3LDExNSwxMDEsMTE3LDQsMCwwLDAsNDYsMTEyLDEyMSwxMTksMTE3LDYsCisgICAgMCwwLDAsOTUsMTAwLDQ2LDExMiwxMjEsMTAwLDc4LDQwLDQsMCwwLDAsMTE3LAorICAgIDMsMCwwLDAsOTUsMTA1LDExMSwxMTcsOSwwLDAsMCw5NSwxMTksOTcsMTE0LAorICAgIDExMCwxMDUsMTEwLDEwMywxMTUsMTE3LDgsMCwwLDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsMTE1LDExNyw3LDAsMCwwLDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsODQsNDAsCisgICAgMjQsMCwwLDAsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDMsMCwKKyAgICAwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LAorICAgIDExNCwxMTcsMTUsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDk1LDk1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTEsMCwKKyAgICAwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDcsMCwKKyAgICAwLDAsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDMsMCwwLDAsOTcsMTA4LAorICAgIDEwOCwxMTcsMTQsMCwwLDAsNjUsMTE1LDExNSwxMDEsMTE0LDExNiwxMDUsMTExLDExMCw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE3LDcsMCwwLDAsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLAorICAgIDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMywwLDAsMCwxMTUsMTAxLAorICAgIDExNiwxMTcsMTYsMCwwLDAsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsCisgICAgMTIwLDk1LDk5LDk3LDExNSwxMDEsMTE3LDE4LDAsMCwwLDY5LDg4LDg0LDY5LDc4LAorICAgIDgzLDczLDc5LDc4LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNyw2LDAsCisgICAgMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNywxOCwwLDAsMCwxMDEsMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNywKKyAgICAxNSwwLDAsMCw4Myw3OSw4NSw4Miw2Nyw2OSw5NSw4Myw4NSw3MCw3MCw3MywKKyAgICA4OCw2OSw4MywxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNyw0LAorICAgIDAsMCwwLDg0LDExNCwxMTcsMTAxLDExNywyMSwwLDAsMCw4NywxMDUsMTEwLDEwMCwKKyAgICAxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCwxMTcsMTEsMCwwLDAsNjgsNjksNjYsODUsNzEsOTUsNjYsODUsNzMsNzYsCisgICAgNjgsNDAsMTQsMCwwLDAsMTE3LDEwLDAsMCwwLDExNSwxMjEsMTE1LDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsMCw5NSwxMDUsMTA5LDExMiw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTcsMTEsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNywxMiwwLDAsMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTcsMTQsMCwwLDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE3LDEwLDAsMCwwLDExMSwxMTUsOTUsMTAwLDEwMSwxMTYsOTcsCisgICAgMTA1LDEwOCwxMTUsMTE3LDEwLDAsMCwwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LAorICAgIDExMSwxMTUsMTE3LDE1LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDk3LAorICAgIDExNCw5NywxMTYsMTExLDExNCwxMTUsMTE3LDgsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTE1LDEwMSwxMTIsMTE3LDksMCwwLDAsMTExLDExNSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTcsMTMsMCwwLDAsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTcsMTQsMCwwLDAsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEzLDAsMCwwLDExOSwxMDUsMTEwLDExNCwxMDEsCisgICAgMTAzLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDYsMCwwLDAsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiwxNDcsCisgICAgNiwwLDAsMTE1LDkwLDAsMCwwLDAsOSw2LDEsNiwyLDE5LDEsCisgICAgMTUsMSwxNiwyLDEzLDEsMTMsMSwxNSwxLDE4LDIsMTMsMSwyMCwyLAorICAgIDQ4LDEsMTksMiwzMSwxLDEwLDEsMTUsMSwxMywxLDQsMiwzLDEsCisgICAgMTUsMiwyNywxLDEzLDEsNSwxLDEzLDEsMTIsMiwxMiwyLDMsMSwKKyAgICAxOSwxLDEzLDIsMTEsMSwxNSwyLDEyLDEsMTUsMSwxOSwyLDE2LDEsCisgICAgMTYsMSwxNiwxLDE2LDEsMjIsMiwxOSwxLDE5LDEsMTIsMSwxMywxLAorICAgIDEyLDEsMTE3LDYsMCwwLDAsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxMzYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEyNCwxLDAsCisgICAgMTMxLDIsMCwxLDExNiwxLDAsMTMxLDAsMCwxMjUsMiwwLDExNiwyLDAsCisgICAgMTA2LDMsMCwxMDYsNCwwLDExNiw1LDAsMTA2LDYsMCwxMjQsMiwwLDE0MCwKKyAgICAwLDAsMTAzLDEsMCwxMzEsMSwwLDEsMTE2LDIsMCwxMDYsNywwLDEwNiwKKyAgICA4LDAsMTE2LDksMCwxMzEsMSwwLDEsMTE2LDIsMCwxMDYsNywwLDEwNiwKKyAgICA4LDAsMTE2LDEwLDAsMTMxLDEsMCwxLDExNiwxMSwwLDEwNiwxMiwwLDEwMCwKKyAgICAxLDAsMTA3LDIsMCwxMTQsMTE2LDAsMTE2LDIsMCwxMDYsNywwLDEwNiw4LAorICAgIDAsMTE2LDEzLDAsMTMxLDEsMCwxLDExMCwwLDAsMTE2LDIsMCwxMDYsNywKKyAgICAwLDEwNiw4LDAsMTE2LDE0LDAsMTMxLDEsMCwxLDEwMCwyLDAsODMsNDAsCisgICAgMywwLDAsMCwxMTcsNTAsMCwwLDAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMTcsMiwwLDAsMCwKKyAgICAxMTAsMTE2LDc4LDQwLDE1LDAsMCwwLDExNyw2LDAsMCwwLDk1LDExNSwxMDEsCisgICAgMTE2LDExNywxMTIsMTE3LDI3LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTcsMTEyLAorICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDExNSwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsMTAsMCwwLDAsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwxMTcsNiwwLDAsMCwxMDEsCisgICAgMTIwLDExNiwxMDEsMTEwLDEwMCwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwxMTcsOSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsMTE3LDksMCwwLDAsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgMTE3LDYsMCwwLDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxMTcsMTUsMCwwLDAsCisgICAgNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywKKyAgICAxNCwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTAxLDExNCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywyMSwwLDAsMCw4NywxMDUsMTEwLDEwMCwKKyAgICAxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCwxMTcsMTAsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQwLDMsMCwwLDAsMTE3LDEwLDAsMCwwLDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsMCw5NSwxMDUsMTA5LDExMiw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTcsMTcsMCwwLDAsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LAorICAgIDEwMSwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSwxMDUsMTEwLDExNSwxMTYsCisgICAgOTcsMTA4LDEwOCwyMTYsNiwwLDAsMTE1LDE2LDAsMCwwLDAsMiwxMywxLAorICAgIDksMSwyOCwxLDE2LDEsMTYsMSwxNSwxLDE5LDEsMTE3LDgsMCwwLAorICAgIDAsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsNzgsNDAsMywwLDAsMCwxMTcsCisgICAgMywwLDAsMCwxMTksMTA1LDExMCwxMTcsNiwwLDAsMCw5OSwxMjEsMTAzLDExOSwKKyAgICAxMDUsMTEwLDExNyw2LDAsMCwwLDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsNDAsNzUsMCwKKyAgICAwLDAsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsMjcsCisgICAgMCwwLDAsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksNzgsODMsNzMsCisgICAgODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsODMsMTE3LDE2LAorICAgIDAsMCwwLDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSwKKyAgICA5NywxMTUsMTAxLDExNyw3LDAsMCwwLDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsMTE3LAorICAgIDcsMCwwLDAsOTUsMTE0LDk1LDEwOCwxMTEsMTEwLDEwMywxMTcsMTAsMCwwLDAsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDExNywxMSwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNywxOCwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwKKyAgICAxMDEsMTE3LDEyLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwKKyAgICAxMDUsMTE0LDExNywxMywwLDAsMCw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LDk3LDExNiwKKyAgICAxMTEsMTA5LDEwNSw5OSwxMTcsNSwwLDAsMCw5NSwxMTksMTE0LDk3LDExMiwxMTcsNCwKKyAgICAwLDAsMCwxMTYsMTIxLDExMiwxMDEsMTE3LDgsMCwwLDAsOTUsOTUsOTksMTExLAorICAgIDEwMCwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk5LDExMSwxMDAsMTAxLDk1LDExNiwKKyAgICAxMjEsMTEyLDEwMSwxMTcsMTAsMCwwLDAsMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE3LDEzLDAsMCwwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwKKyAgICAxMTEsOTksMTA3LDExNSwxMTcsMTIsMCwwLDAsOTUsOTgsMTA4LDExMSw5OSwxMDcsMTA1LAorICAgIDExMCwxMDMsOTUsMTExLDExMCwxMTcsMTIsMCwwLDAsODIsMTE3LDExMCwxMTYsMTA1LDEwOSwKKyAgICAxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywxNCwwLDAsMCw5NSw2OCwxMDEsOTcsMTAwLAorICAgIDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsNzcsCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDExNywxNiwwLDAsMCw5NSw2OCwKKyAgICAxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDExNywxNiwKKyAgICAwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsCisgICAgMTExLDk5LDEwNywxMTcsMTksMCwwLDAsOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LDExMCwKKyAgICAxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMjUsMCwwLDAsCisgICAgOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLAorICAgIDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDMsMCwwLDAsMTExLDExNCwKKyAgICAxMDAsMTE3LDE3LDAsMCwwLDk1LDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLDY3LAorICAgIDk1LDc4LDg1LDc3LDY2LDY5LDgyLDExNyw1LDAsMCwwLDk4LDEyMSwxMTYsMTAxLAorICAgIDExNSwxMTcsNSwwLDAsMCwxMTQsOTcsMTEwLDEwMywxMDEsMTE3LDEyLDAsMCwwLAorICAgIDk1LDc3LDY1LDcxLDczLDY3LDk1LDY2LDg5LDg0LDY5LDgzLDExNyw4LDAsMCwKKyAgICAwLDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDExNywxNSwwLDAsMCw4Myw3OSwKKyAgICA4NSw4Miw2Nyw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMjMsMCwKKyAgICAwLDAsNjgsNjksNjYsODUsNzEsOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksCisgICAgOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDI3LDAsMCwwLDc5LDgwLAorICAgIDg0LDczLDc3LDczLDkwLDY5LDY4LDk1LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LAorICAgIDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNywxNywwLDAsMCw2Niw4OSwKKyAgICA4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsCisgICAgNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTcsMCwwLDAsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTcsMTcsCisgICAgMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSwxMTcsMTUsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwxMDIsMTA1LDEwOCwxMDEsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsCisgICAgMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNywxMSwwLAorICAgIDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDEwLDAsCisgICAgMCwwLDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE3LDAsMCwKKyAgICAwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDExNywxNywwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LAorICAgIDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNywxNiwwLDAsMCw5NSwxMTQsMTAxLAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNywxNywwLAorICAgIDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LAorICAgIDEwNCwxMDUsMTA5LDExNywxNSwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE3LDE0LDAsMCwwLDcwLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywyMSwwLDAsMCw4NywKKyAgICAxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwxMTcsMTMsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDY2LDk3LDExNSwxMDUsOTksMTE1LDExNywxMiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE2LDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDIwLDAsMCwwLAorICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNywxOCwwLDAsMCw2OSw4OCw4NCw2OSw3OCw4Myw3MywKKyAgICA3OSw3OCw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMTksMCwwLDAsCisgICAgNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE3LDE0LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCwxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsCisgICAgMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDEwLDAsMCwwLDgwLAorICAgIDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsMTAsMCwwLDAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsMTgsMCwwLDAsOTUsNzMsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDExNywKKyAgICAxMywwLDAsMCw5NSwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE3LDEyLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTcsMTMsMCwwLDAsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwKKyAgICAxMDQsMTAxLDk5LDEwNywxMTcsOCwwLDAsMCw5NSw2OSw4Miw4Miw5NSw3Nyw4MywKKyAgICA3MSwxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsCisgICAgMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDExNywxNCwwLAorICAgIDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxMTcsMTEsMCwwLDAsOTUsMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMTcsMTYsMCwwLDAsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwKKyAgICAxMDksMTA4LDEwNSwxMTUsMTE2LDExNywxNywwLDAsMCw5NSw5OSw5NywxMDgsOTksOTUsCisgICAgOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNywyNywwLDAsMCwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LDEwLDAsMCwwLAorICAgIDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDExNyw2LDAsMCwwLDk1LAorICAgIDExNSwxMDEsMTE2LDExNywxMTIsMTE3LDgsMCwwLDAsOTUsMTA1LDExMCwxMTUsMTE2LDk3LAorICAgIDEwOCwxMDgsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNyw4LDAsMCwwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLAorICAgIDgsMCwwLDAsMTE1LDEzNCwwLDAsMCw2LDIxLDYsMywxMiwxMywxMiwKKyAgICAxNiwxMiwxMywxMiwxMiwxMiwxMiwxMiwxMCwxMiw2LDEyLDcsMTUsMjIsMTIsCisgICAgOCwxNSwzLDEyLDEyLDYsMiw2LDMsMjIsNCwxOSw2OCwxOSwyMywxMiwKKyAgICAxOSwxMiwyMCwxMiwxMDAsMzQsMSwzNywyLDYsMiw5LDIsOSwxLDksCisgICAgMiw2LDQsMTUsMjcsMTIsMjMsMTIsMjEsMTIsOCwxMiwxMywxMiwxMSwxMiwKKyAgICA1NSwxMiwxOCwxMiwxMSwxMiwxMSwxMiwxNywxOSw1NywxOSw1NCwxOSw1MCwxOSwKKyAgICA4MiwyMiwxMzQsMTksMjksMjUsNDYsMjUsMjUsNiwzLDE5LDQ1LDE5LDU1LDE5LAorICAgIDE4LDE5LDg5LDE5LDEyNSwxOSwxMywxMiw5LDEyLDE3LDEyLDE3LDYsMiwxMiwKKyAgICA1MCwxMiwxMywxOCwyNCwxMiwzNCwxMiwxNSwxMiwxMSwyNCwzMiwxMiw2OSwKK307CmRpZmYgLS1naXQgYS9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkgYi9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKaW5kZXggNWQ4ZTVhOS4uZDlhMDg1NSAxMDA3NTUKLS0tIGEvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CisrKyBiL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQpAQCAtMjMsOSArMjMsNiBAQAogICAgIG9wY29kZSA9IGZpbmRfbW9kdWxlKCJvcGNvZGUiKQogICAgIHRhcmdldHMgPSBbJ191bmtub3duX29wY29kZSddICogMjU2CiAgICAgZm9yIG9wbmFtZSwgb3AgaW4gb3Bjb2RlLm9wbWFwLml0ZW1zKCk6Ci0gICAgICAgIGlmIG9wbmFtZSA9PSAiU1RPUF9DT0RFIjoKLSAgICAgICAgICAgICMgWFhYIG9wY29kZSBub3QgaW1wbGVtZW50ZWQKLSAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHRhcmdldHNbb3BdID0gIlRBUkdFVF8lcyIgJSBvcG5hbWUKICAgICBmLndyaXRlKCJzdGF0aWMgdm9pZCAqb3Bjb2RlX3RhcmdldHNbMjU2XSA9IHtcbiIpCiAgICAgZi53cml0ZSgiLFxuIi5qb2luKFsiICAgICYmJXMiICUgcyBmb3IgcyBpbiB0YXJnZXRzXSkpCmRpZmYgLS1naXQgYS9QeXRob24vbWFyc2hhbC5jIGIvUHl0aG9uL21hcnNoYWwuYwppbmRleCAzZTJmYmViLi42ZDUyYTg0IDEwMDY0NAotLS0gYS9QeXRob24vbWFyc2hhbC5jCisrKyBiL1B5dGhvbi9tYXJzaGFsLmMKQEAgLTMxLDYgKzMxLDkgQEAKICNkZWZpbmUgVFlQRV9TVE9QSVRFUiAgICAgICAgICAgJ1MnCiAjZGVmaW5lIFRZUEVfRUxMSVBTSVMgICAgICAgICAgICcuJwogI2RlZmluZSBUWVBFX0lOVCAgICAgICAgICAgICAgICAnaScKKy8qIFRZUEVfSU5UNjQgaXMgZGVwcmVjYXRlZC4gSXQgaXMgbm90CisgICBnZW5lcmF0ZWQgYW55bW9yZSwgYW5kIHN1cHBvcnQgZm9yIHJlYWRpbmcgaXQKKyAgIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy40LiAqLwogI2RlZmluZSBUWVBFX0lOVDY0ICAgICAgICAgICAgICAnSScKICNkZWZpbmUgVFlQRV9GTE9BVCAgICAgICAgICAgICAgJ2YnCiAjZGVmaW5lIFRZUEVfQklOQVJZX0ZMT0FUICAgICAgICdnJwpAQCAtNTksOSArNjIsOSBAQAogICAgIC8qIElmIGZwID09IE5VTEwsIHRoZSBmb2xsb3dpbmcgYXJlIHZhbGlkOiAqLwogICAgIFB5T2JqZWN0ICpyZWFkYWJsZTsgICAgLyogU3RyZWFtLWxpa2Ugb2JqZWN0IGJlaW5nIHJlYWQgZnJvbSAqLwogICAgIFB5T2JqZWN0ICpzdHI7CisgICAgUHlPYmplY3QgKmN1cnJlbnRfZmlsZW5hbWU7CiAgICAgY2hhciAqcHRyOwogICAgIGNoYXIgKmVuZDsKLSAgICBQeU9iamVjdCAqc3RyaW5nczsgLyogZGljdCBvbiBtYXJzaGFsLCBsaXN0IG9uIHVubWFyc2hhbCAqLwogICAgIGludCB2ZXJzaW9uOwogfSBXRklMRTsKIApAQCAtMTIxLDE1ICsxMjQsNiBAQAogICAgIHdfYnl0ZSgoY2hhcikoKHg+PjI0KSAmIDB4ZmYpLCBwKTsKIH0KIAotI2lmIFNJWkVPRl9MT05HID4gNAotc3RhdGljIHZvaWQKLXdfbG9uZzY0KGxvbmcgeCwgV0ZJTEUgKnApCi17Ci0gICAgd19sb25nKHgsIHApOwotICAgIHdfbG9uZyh4Pj4zMiwgcCk7Ci19Ci0jZW5kaWYKLQogLyogV2UgYXNzdW1lIHRoYXQgUHl0aG9uIGxvbmdzIGFyZSBzdG9yZWQgaW50ZXJuYWxseSBpbiBiYXNlIHNvbWUgcG93ZXIgb2YKICAgIDIqKjE1OyBmb3IgdGhlIHNha2Ugb2YgcG9ydGFiaWxpdHkgd2UnbGwgYWx3YXlzIHJlYWQgYW5kIHdyaXRlIHRoZW0gaW4gYmFzZQogICAgZXhhY3RseSAyKioxNS4gKi8KQEAgLTIxOSw4ICsyMTMsOCBAQAogI2lmIFNJWkVPRl9MT05HID4gNAogICAgICAgICAgICAgbG9uZyB5ID0gUHlfQVJJVEhNRVRJQ19SSUdIVF9TSElGVChsb25nLCB4LCAzMSk7CiAgICAgICAgICAgICBpZiAoeSAmJiB5ICE9IC0xKSB7Ci0gICAgICAgICAgICAgICAgd19ieXRlKFRZUEVfSU5UNjQsIHApOwotICAgICAgICAgICAgICAgIHdfbG9uZzY0KHgsIHApOworICAgICAgICAgICAgICAgIC8qIFRvbyBsYXJnZSBmb3IgVFlQRV9JTlQgKi8KKyAgICAgICAgICAgICAgICB3X1B5TG9uZygoUHlMb25nT2JqZWN0Kil2LCBwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICNlbmRpZgpAQCAtMzExLDkgKzMwNSw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHYpKSB7CiAgICAgICAgIFB5T2JqZWN0ICp1dGY4OwotICAgICAgICB1dGY4ID0gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlcGFzcyIpOworICAgICAgICB1dGY4ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh2LCAidXRmOCIsICJzdXJyb2dhdGVwYXNzIik7CiAgICAgICAgIGlmICh1dGY4ID09IE5VTEwpIHsKICAgICAgICAgICAgIHAtPmRlcHRoLS07CiAgICAgICAgICAgICBwLT5lcnJvciA9IFdGRVJSX1VOTUFSU0hBTExBQkxFOwpAQCAtNDQ1LDcgKzQzNyw2IEBACiAgICAgd2YuZnAgPSBmcDsKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwogICAgIHdmLmRlcHRoID0gMDsKLSAgICB3Zi5zdHJpbmdzID0gTlVMTDsKICAgICB3Zi52ZXJzaW9uID0gdmVyc2lvbjsKICAgICB3X2xvbmcoeCwgJndmKTsKIH0KQEAgLTQ1NywxMCArNDQ4LDggQEAKICAgICB3Zi5mcCA9IGZwOwogICAgIHdmLmVycm9yID0gV0ZFUlJfT0s7CiAgICAgd2YuZGVwdGggPSAwOwotICAgIHdmLnN0cmluZ3MgPSAodmVyc2lvbiA+IDApID8gUHlEaWN0X05ldygpIDogTlVMTDsKICAgICB3Zi52ZXJzaW9uID0gdmVyc2lvbjsKICAgICB3X29iamVjdCh4LCAmd2YpOwotICAgIFB5X1hERUNSRUYod2Yuc3RyaW5ncyk7CiB9CiAKIHR5cGVkZWYgV0ZJTEUgUkZJTEU7IC8qIFNhbWUgc3RydWN0IHdpdGggZGlmZmVyZW50IGludmFyaWFudHMgKi8KQEAgLTQ4NSw3ICs0NzQsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2QocC0+cmVhZGFibGUsICJyZWFkIiwgImkiLCBuKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CisKKyAgICAgICAgUHlPYmplY3QgKmRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHAtPnJlYWRhYmxlLCAmUHlJZF9yZWFkLCAiaSIsIG4pOwogICAgICAgICByZWFkID0gMDsKICAgICAgICAgaWYgKGRhdGEgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGRhdGEpKSB7CkBAIC0xMDY5LDYgKzEwNjAsMTggQEAKICAgICAgICAgICAgIGZpbGVuYW1lID0gcl9vYmplY3QocCk7CiAgICAgICAgICAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGNvZGVfZXJyb3I7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoZmlsZW5hbWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHAtPmN1cnJlbnRfZmlsZW5hbWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKGZpbGVuYW1lLCBwLT5jdXJyZW50X2ZpbGVuYW1lKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihwLT5jdXJyZW50X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gcC0+Y3VycmVudF9maWxlbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcC0+Y3VycmVudF9maWxlbmFtZSA9IGZpbGVuYW1lOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5hbWUgPSByX29iamVjdChwKTsKICAgICAgICAgICAgIGlmIChuYW1lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBjb2RlX2Vycm9yOwpAQCAtMTEzMSw3ICsxMTM0LDcgQEAKICAgICBhc3NlcnQoZnApOwogICAgIHJmLnJlYWRhYmxlID0gTlVMTDsKICAgICByZi5mcCA9IGZwOwotICAgIHJmLnN0cmluZ3MgPSBOVUxMOworICAgIHJmLmN1cnJlbnRfZmlsZW5hbWUgPSBOVUxMOwogICAgIHJmLmVuZCA9IHJmLnB0ciA9IE5VTEw7CiAgICAgcmV0dXJuIHJfc2hvcnQoJnJmKTsKIH0KQEAgLTExNDIsNyArMTE0NSw3IEBACiAgICAgUkZJTEUgcmY7CiAgICAgcmYuZnAgPSBmcDsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7Ci0gICAgcmYuc3RyaW5ncyA9IE5VTEw7CisgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgcmYucHRyID0gcmYuZW5kID0gTlVMTDsKICAgICByZXR1cm4gcl9sb25nKCZyZik7CiB9CkBAIC0xMjA0LDExICsxMjA3LDEwIEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICByZi5mcCA9IGZwOwogICAgIHJmLnJlYWRhYmxlID0gTlVMTDsKLSAgICByZi5zdHJpbmdzID0gUHlMaXN0X05ldygwKTsKKyAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5kZXB0aCA9IDA7CiAgICAgcmYucHRyID0gcmYuZW5kID0gTlVMTDsKICAgICByZXN1bHQgPSByX29iamVjdCgmcmYpOwotICAgIFB5X0RFQ1JFRihyZi5zdHJpbmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjE5LDEyICsxMjIxLDExIEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICByZi5mcCA9IE5VTEw7CiAgICAgcmYucmVhZGFibGUgPSBOVUxMOworICAgIHJmLmN1cnJlbnRfZmlsZW5hbWUgPSBOVUxMOwogICAgIHJmLnB0ciA9IHN0cjsKICAgICByZi5lbmQgPSBzdHIgKyBsZW47Ci0gICAgcmYuc3RyaW5ncyA9IFB5TGlzdF9OZXcoMCk7CiAgICAgcmYuZGVwdGggPSAwOwogICAgIHJlc3VsdCA9IHJfb2JqZWN0KCZyZik7Ci0gICAgUHlfREVDUkVGKHJmLnN0cmluZ3MpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyMzIsNyArMTIzMyw2IEBACiBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb1N0cmluZyhQeU9iamVjdCAqeCwgaW50IHZlcnNpb24pCiB7CiAgICAgV0ZJTEUgd2Y7Ci0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKICAgICB3Zi5mcCA9IE5VTEw7CiAgICAgd2YucmVhZGFibGUgPSBOVUxMOwpAQCAtMTI0NCw5ICsxMjQ0LDcgQEAKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwogICAgIHdmLmRlcHRoID0gMDsKICAgICB3Zi52ZXJzaW9uID0gdmVyc2lvbjsKLSAgICB3Zi5zdHJpbmdzID0gKHZlcnNpb24gPiAwKSA/IFB5RGljdF9OZXcoKSA6IE5VTEw7CiAgICAgd19vYmplY3QoeCwgJndmKTsKLSAgICBQeV9YREVDUkVGKHdmLnN0cmluZ3MpOwogICAgIGlmICh3Zi5zdHIgIT0gTlVMTCkgewogICAgICAgICBjaGFyICpiYXNlID0gUHlCeXRlc19BU19TVFJJTkcoKFB5Qnl0ZXNPYmplY3QgKil3Zi5zdHIpOwogICAgICAgICBpZiAod2YucHRyIC0gYmFzZSA+IFBZX1NTSVpFX1RfTUFYKSB7CkBAIC0xMjY4LDEyICsxMjY2LDcgQEAKICAgICAgICAgICAgICAgIDoib2JqZWN0IHRvbyBkZWVwbHkgbmVzdGVkIHRvIG1hcnNoYWwiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmICh3Zi5zdHIgIT0gTlVMTCkgewotICAgICAgICAvKiBYWFggUXVpY2sgaGFjayAtLSBuZWVkIHRvIGRvIHRoaXMgZGlmZmVyZW50bHkgKi8KLSAgICAgICAgcmVzID0gUHlCeXRlc19Gcm9tT2JqZWN0KHdmLnN0cik7Ci0gICAgICAgIFB5X0RFQ1JFRih3Zi5zdHIpOwotICAgIH0KLSAgICByZXR1cm4gcmVzOworICAgIHJldHVybiB3Zi5zdHI7CiB9CiAKIC8qIEFuZCBhbiBpbnRlcmZhY2UgZm9yIFB5dGhvbiBwcm9ncmFtcy4uLiAqLwpAQCAtMTI4NywxMiArMTI4MCwxNCBAQAogICAgIGludCB2ZXJzaW9uID0gUHlfTUFSU0hBTF9WRVJTSU9OOwogICAgIFB5T2JqZWN0ICpzOwogICAgIFB5T2JqZWN0ICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xpOmR1bXAiLCAmeCwgJmYsICZ2ZXJzaW9uKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcyA9IFB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvU3RyaW5nKHgsIHZlcnNpb24pOwogICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgIndyaXRlIiwgIk8iLCBzKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX3dyaXRlLCAiTyIsIHMpOwogICAgIFB5X0RFQ1JFRihzKTsKICAgICByZXR1cm4gcmVzOwogfQpAQCAtMTMxNCw2ICsxMzA5LDcgQEAKIG1hcnNoYWxfbG9hZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmYpCiB7CiAgICAgUHlPYmplY3QgKmRhdGEsICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAgICAgUkZJTEUgcmY7CiAKICAgICAvKgpAQCAtMTMyMSw3ICsxMzE3LDcgQEAKICAgICAgKiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBvYmplY3QgcGFzc2VkIGluIGF0IGxlYXN0CiAgICAgICogaGFzIGEgcmVhZCBtZXRob2Qgd2hpY2ggcmV0dXJucyBieXRlcy4KICAgICAgKi8KLSAgICBkYXRhID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmLCAicmVhZCIsICJpIiwgMCk7CisgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfcmVhZCwgImkiLCAwKTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soZGF0YSkpIHsKQEAgLTEzMzEsMTIgKzEzMjcsMTEgQEAKICAgICAgICAgcmVzdWx0ID0gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJmLnN0cmluZ3MgPSBQeUxpc3RfTmV3KDApOwogICAgICAgICByZi5kZXB0aCA9IDA7CiAgICAgICAgIHJmLmZwID0gTlVMTDsKICAgICAgICAgcmYucmVhZGFibGUgPSBmOworICAgICAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICAgICAgcmVzdWx0ID0gcmVhZF9vYmplY3QoJnJmKTsKLSAgICAgICAgUHlfREVDUkVGKHJmLnN0cmluZ3MpOwogICAgIH0KICAgICBQeV9ERUNSRUYoZGF0YSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzODksMTIgKzEzODQsMTEgQEAKICAgICBuID0gcC5sZW47CiAgICAgcmYuZnAgPSBOVUxMOwogICAgIHJmLnJlYWRhYmxlID0gTlVMTDsKKyAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5wdHIgPSBzOwogICAgIHJmLmVuZCA9IHMgKyBuOwotICAgIHJmLnN0cmluZ3MgPSBQeUxpc3RfTmV3KDApOwogICAgIHJmLmRlcHRoID0gMDsKICAgICByZXN1bHQgPSByZWFkX29iamVjdCgmcmYpOwotICAgIFB5X0RFQ1JFRihyZi5zdHJpbmdzKTsKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL21vZHN1cHBvcnQuYyBiL1B5dGhvbi9tb2RzdXBwb3J0LmMKaW5kZXggODViMGQ2Ni4uNDI4OTE0ZiAxMDA2NDQKLS0tIGEvUHl0aG9uL21vZHN1cHBvcnQuYworKysgYi9QeXRob24vbW9kc3VwcG9ydC5jCkBAIC0xNDgsMTUgKzE0OCw2IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBpbnQKLV91c3RybGVuKFB5X1VOSUNPREUgKnUpCi17Ci0gICAgaW50IGkgPSAwOwotICAgIFB5X1VOSUNPREUgKnYgPSB1OwotICAgIHdoaWxlICgqdiAhPSAwKSB7IGkrKzsgdisrOyB9Ci0gICAgcmV0dXJuIGk7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBkb19ta3R1cGxlKGNvbnN0IGNoYXIgKipwX2Zvcm1hdCwgdmFfbGlzdCAqcF92YSwgaW50IGVuZGNoYXIsIGludCBuLCBpbnQgZmxhZ3MpCiB7CkBAIC0yNjksNyArMjYwLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChuIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgbiA9IF91c3RybGVuKHUpOworICAgICAgICAgICAgICAgICAgICBuID0gUHlfVU5JQ09ERV9zdHJsZW4odSk7CiAgICAgICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh1LCBuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB2OwpAQCAtMjkyLDExICsyODMsNiBAQAogICAgICAgICBjYXNlICdDJzoKICAgICAgICAgewogICAgICAgICAgICAgaW50IGkgPSB2YV9hcmcoKnBfdmEsIGludCk7Ci0gICAgICAgICAgICBpZiAoaSA8IDAgfHwgaSA+IFB5VW5pY29kZV9HZXRNYXgoKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoaSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL29wY29kZV90YXJnZXRzLmggYi9QeXRob24vb3Bjb2RlX3RhcmdldHMuaAppbmRleCBhOTFkYTc5Li4yZDZiY2RhIDEwMDY0NAotLS0gYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaAorKysgYi9QeXRob24vb3Bjb2RlX3RhcmdldHMuaApAQCAtNzEsNyArNzEsNyBAQAogICAgICYmVEFSR0VUX1NUT1JFX0xPQ0FMUywKICAgICAmJlRBUkdFVF9QUklOVF9FWFBSLAogICAgICYmVEFSR0VUX0xPQURfQlVJTERfQ0xBU1MsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfWUlFTERfRlJPTSwKICAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJlRBUkdFVF9JTlBMQUNFX0xTSElGVCwKZGlmZiAtLWdpdCBhL1B5dGhvbi9wZWVwaG9sZS5jIGIvUHl0aG9uL3BlZXBob2xlLmMKaW5kZXggMzU5ZWRhOC4uNWQ1MzY3NyAxMDA2NDQKLS0tIGEvUHl0aG9uL3BlZXBob2xlLmMKKysrIGIvUHl0aG9uL3BlZXBob2xlLmMKQEAgLTIzLDYgKzIzLDY0IEBACiAjZGVmaW5lIElTQkFTSUNCTE9DSyhibG9ja3MsIHN0YXJ0LCBieXRlcykgXAogICAgIChibG9ja3Nbc3RhcnRdPT1ibG9ja3Nbc3RhcnQrYnl0ZXMtMV0pCiAKKworI2RlZmluZSBDT05TVF9TVEFDS19DUkVBVEUoKSB7IFwKKyAgICBjb25zdF9zdGFja19zaXplID0gMjU2OyBcCisgICAgY29uc3Rfc3RhY2sgPSBQeU1lbV9OZXcoUHlPYmplY3QgKiwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKKyAgICBsb2FkX2NvbnN0X3N0YWNrID0gUHlNZW1fTmV3KFB5X3NzaXplX3QsIGNvbnN0X3N0YWNrX3NpemUpOyBcCisgICAgaWYgKCFjb25zdF9zdGFjayB8fCAhbG9hZF9jb25zdF9zdGFjaykgeyBcCisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7IFwKKyAgICAgICAgZ290byBleGl0RXJyb3I7IFwKKyAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfREVMRVRFKCkgZG8geyBcCisgICAgaWYgKGNvbnN0X3N0YWNrKSBcCisgICAgICAgIFB5TWVtX0ZyZWUoY29uc3Rfc3RhY2spOyBcCisgICAgaWYgKGxvYWRfY29uc3Rfc3RhY2spIFwKKyAgICAgICAgUHlNZW1fRnJlZShsb2FkX2NvbnN0X3N0YWNrKTsgXAorICAgIH0gd2hpbGUoMCkKKworI2RlZmluZSBDT05TVF9TVEFDS19MRU4oKSAoY29uc3Rfc3RhY2tfdG9wICsgMSkKKworI2RlZmluZSBDT05TVF9TVEFDS19QVVNIX09QKGkpIGRvIHsgXAorICAgIFB5T2JqZWN0ICpfeDsgXAorICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOyBcCisgICAgYXNzZXJ0KFB5TGlzdF9HRVRfU0laRShjb25zdHMpID4gR0VUQVJHKGNvZGVzdHIsIGkpKTsgXAorICAgIF94ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgR0VUQVJHKGNvZGVzdHIsIGkpKTsgXAorICAgIGlmICgrK2NvbnN0X3N0YWNrX3RvcCA+PSBjb25zdF9zdGFja19zaXplKSB7IFwKKyAgICAgICAgY29uc3Rfc3RhY2tfc2l6ZSAqPSAyOyBcCisgICAgICAgIFB5TWVtX1Jlc2l6ZShjb25zdF9zdGFjaywgUHlPYmplY3QgKiwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKKyAgICAgICAgUHlNZW1fUmVzaXplKGxvYWRfY29uc3Rfc3RhY2ssIFB5X3NzaXplX3QsIGNvbnN0X3N0YWNrX3NpemUpOyBcCisgICAgICAgIGlmICghY29uc3Rfc3RhY2sgfHwgIWxvYWRfY29uc3Rfc3RhY2spIHsgXAorICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsgXAorICAgICAgICAgICAgZ290byBleGl0RXJyb3I7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgbG9hZF9jb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdID0gaTsgXAorICAgIGNvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcF0gPSBfeDsgXAorICAgIGluX2NvbnN0cyA9IDE7IFwKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfUkVTRVQoKSBkbyB7IFwKKyAgICBjb25zdF9zdGFja190b3AgPSAtMTsgXAorICAgIH0gd2hpbGUoMCkKKworI2RlZmluZSBDT05TVF9TVEFDS19UT1AoKSBcCisgICAgY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXQorCisjZGVmaW5lIENPTlNUX1NUQUNLX0xBU1ROKGkpIFwKKyAgICAmY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wIC0gaSArIDFdCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfUE9QKGkpIGRvIHsgXAorICAgIGFzc2VydChjb25zdF9zdGFja190b3AgKyAxID49IGkpOyBcCisgICAgY29uc3Rfc3RhY2tfdG9wIC09IGk7IFwKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfT1BfTEFTVE4oaSkgXAorICAgICgoY29uc3Rfc3RhY2tfdG9wID49IGkgLSAxKSA/IGxvYWRfY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wIC0gaSArIDFdIDogLTEpCisKKwogLyogUmVwbGFjZSBMT0FEX0NPTlNUIGMxLiBMT0FEX0NPTlNUIGMyIC4uLiBMT0FEX0NPTlNUIGNuIEJVSUxEX1RVUExFIG4KICAgIHdpdGggICAgTE9BRF9DT05TVCAoYzEsIGMyLCAuLi4gY24pLgogICAgVGhlIGNvbnN0cyB0YWJsZSBtdXN0IHN0aWxsIGJlIGluIGxpc3QgZm9ybSBzbyB0aGF0IHRoZQpAQCAtMzMsMTcgKzkxLDE0IEBACiAgICB0ZXN0OyBmb3IgQlVJTERfU0VUIGl0IGFzc2VtYmxlcyBhIGZyb3plbnNldCByYXRoZXIgdGhhbiBhIHR1cGxlLgogKi8KIHN0YXRpYyBpbnQKLXR1cGxlX29mX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeV9zc2l6ZV90IG4sIFB5T2JqZWN0ICpjb25zdHMpCit0dXBsZV9vZl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlfc3NpemVfdCBuLAorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcykKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3QsICpjb25zdGFudDsKLSAgICBQeV9zc2l6ZV90IGksIGFyZywgbGVuX2NvbnN0czsKKyAgICBQeV9zc2l6ZV90IGksIGxlbl9jb25zdHM7CiAKICAgICAvKiBQcmUtY29uZGl0aW9ucyAqLwogICAgIGFzc2VydChQeUxpc3RfQ2hlY2tFeGFjdChjb25zdHMpKTsKLSAgICBhc3NlcnQoY29kZXN0cltuKjNdID09IEJVSUxEX1RVUExFIHx8IGNvZGVzdHJbbiozXSA9PSBCVUlMRF9MSVNUIHx8IGNvZGVzdHJbbiozXSA9PSBCVUlMRF9TRVQpOwotICAgIGFzc2VydChHRVRBUkcoY29kZXN0ciwgKG4qMykpID09IG4pOwotICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKQotICAgICAgICBhc3NlcnQoY29kZXN0cltpKjNdID09IExPQURfQ09OU1QpOwogCiAgICAgLyogQnVpbGR1cCBuZXcgdHVwbGUgb2YgY29uc3RhbnRzICovCiAgICAgbmV3Y29uc3QgPSBQeVR1cGxlX05ldyhuKTsKQEAgLTUxLDE2ICsxMDYsMTQgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgbGVuX2NvbnN0cyA9IFB5TGlzdF9HRVRfU0laRShjb25zdHMpOwogICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7Ci0gICAgICAgIGFyZyA9IEdFVEFSRyhjb2Rlc3RyLCAoaSozKSk7Ci0gICAgICAgIGFzc2VydChhcmcgPCBsZW5fY29uc3RzKTsKLSAgICAgICAgY29uc3RhbnQgPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBhcmcpOworICAgICAgICBjb25zdGFudCA9IG9ianNbaV07CiAgICAgICAgIFB5X0lOQ1JFRihjb25zdGFudCk7CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3Y29uc3QsIGksIGNvbnN0YW50KTsKICAgICB9CiAKICAgICAvKiBJZiBpdCdzIGEgQlVJTERfU0VULCB1c2UgdGhlIFB5VHVwbGUgd2UganVzdCBidWlsdCB0byBjcmVhdGUgYQogICAgICAgUHlGcm96ZW5TZXQsIGFuZCB1c2UgdGhhdCBhcyB0aGUgY29uc3RhbnQgaW5zdGVhZDogKi8KLSAgICBpZiAoY29kZXN0cltuKjNdID09IEJVSUxEX1NFVCkgeworICAgIGlmIChjb2Rlc3RyWzBdID09IEJVSUxEX1NFVCkgewogICAgICAgICBQeU9iamVjdCAqdHVwbGUgPSBuZXdjb25zdDsKICAgICAgICAgbmV3Y29uc3QgPSBQeUZyb3plblNldF9OZXcodHVwbGUpOwogICAgICAgICBQeV9ERUNSRUYodHVwbGUpOwpAQCAtNzcsOSArMTMwLDggQEAKIAogICAgIC8qIFdyaXRlIE5PUHMgb3ZlciBvbGQgTE9BRF9DT05TVFMgYW5kCiAgICAgICAgYWRkIGEgbmV3IExPQURfQ09OU1QgbmV3Y29uc3Qgb24gdG9wIG9mIHRoZSBCVUlMRF9UVVBMRSBuICovCi0gICAgbWVtc2V0KGNvZGVzdHIsIE5PUCwgbiozKTsKLSAgICBjb2Rlc3RyW24qM10gPSBMT0FEX0NPTlNUOwotICAgIFNFVEFSRyhjb2Rlc3RyLCAobiozKSwgbGVuX2NvbnN0cyk7CisgICAgY29kZXN0clswXSA9IExPQURfQ09OU1Q7CisgICAgU0VUQVJHKGNvZGVzdHIsIDAsIGxlbl9jb25zdHMpOwogICAgIHJldHVybiAxOwogfQogCkBAIC04NywxNCArMTM5LDE0IEBACiAgICB3aXRoICAgIExPQURfQ09OU1QgYmlub3AoYzEsYzIpCiAgICBUaGUgY29uc3RzIHRhYmxlIG11c3Qgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHNvIHRoYXQgdGhlCiAgICBuZXcgY29uc3RhbnQgY2FuIGJlIGFwcGVuZGVkLgotICAgQ2FsbGVkIHdpdGggY29kZXN0ciBwb2ludGluZyB0byB0aGUgZmlyc3QgTE9BRF9DT05TVC4KKyAgIENhbGxlZCB3aXRoIGNvZGVzdHIgcG9pbnRpbmcgdG8gdGhlIEJJTk9QLgogICAgQWJhbmRvbnMgdGhlIHRyYW5zZm9ybWF0aW9uIGlmIHRoZSBmb2xkaW5nIGZhaWxzIChpLmUuICAxKydhJykuCiAgICBJZiB0aGUgbmV3IGNvbnN0YW50IGlzIGEgc2VxdWVuY2UsIG9ubHkgZm9sZHMgd2hlbiB0aGUgc2l6ZQogICAgaXMgYmVsb3cgYSB0aHJlc2hvbGQgdmFsdWUuICBUaGF0IGtlZXBzIHB5YyBmaWxlcyBmcm9tCiAgICBiZWNvbWluZyBsYXJnZSBpbiB0aGUgcHJlc2VuY2Ugb2YgY29kZSBsaWtlOiAgKE5vbmUsKSoxMDAwLgogKi8KIHN0YXRpYyBpbnQKLWZvbGRfYmlub3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzKQorZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcykKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3QsICp2LCAqdzsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHMsIHNpemU7CkBAIC0xMDIsMTMgKzE1NCwxMSBAQAogCiAgICAgLyogUHJlLWNvbmRpdGlvbnMgKi8KICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QoY29uc3RzKSk7Ci0gICAgYXNzZXJ0KGNvZGVzdHJbMF0gPT0gTE9BRF9DT05TVCk7Ci0gICAgYXNzZXJ0KGNvZGVzdHJbM10gPT0gTE9BRF9DT05TVCk7CiAKICAgICAvKiBDcmVhdGUgbmV3IGNvbnN0YW50ICovCi0gICAgdiA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCAwKSk7Ci0gICAgdyA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCAzKSk7Ci0gICAgb3Bjb2RlID0gY29kZXN0cls2XTsKKyAgICB2ID0gb2Jqc1swXTsKKyAgICB3ID0gb2Jqc1sxXTsKKyAgICBvcGNvZGUgPSBjb2Rlc3RyWzBdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9Qb3dlcih2LCB3LCBQeV9Ob25lKTsKQEAgLTEzMywyNCArMTgzLDYgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJJTkFSWV9TVUJTQ1I6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5T2JqZWN0X0dldEl0ZW0odiwgdyk7Ci0gICAgICAgICAgICAvKiAjNTA1NzogaWYgdiBpcyB1bmljb2RlLCB0aGVyZSBtaWdodCBiZSBkaWZmZXJlbmNlcyBiZXR3ZWVuCi0gICAgICAgICAgICAgICB3aWRlIGFuZCBuYXJyb3cgYnVpbGRzIGluIGNhc2VzIGxpa2UgJ1xVMDAwMTIzNDUnWzBdLgotICAgICAgICAgICAgICAgV2lkZSBidWlsZHMgd2lsbCByZXR1cm4gYSBub24tQk1QIGNoYXIsIHdoZXJlYXMgbmFycm93IGJ1aWxkcwotICAgICAgICAgICAgICAgd2lsbCByZXR1cm4gYSBzdXJyb2dhdGUuICBJbiBib3RoIHRoZSBjYXNlcyBza2lwIHRoZQotICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uIGluIG9yZGVyIHRvIHByb2R1Y2UgY29tcGF0aWJsZSBweWNzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAobmV3Y29uc3QgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9DaGVjayh2KSAmJiBQeVVuaWNvZGVfQ2hlY2sobmV3Y29uc3QpKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG5ld2NvbnN0KVswXTsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICBpZiAoY2ggPiAweEZGRkYpIHsKLSNlbHNlCi0gICAgICAgICAgICAgICAgaWYgKGNoID49IDB4RDgwMCAmJiBjaCA8PSAweERGRkYpIHsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCSU5BUllfTFNISUZUOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9Mc2hpZnQodiwgdyk7CkBAIC0xOTgsMTYgKzIzMCwxNSBAQAogICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7CiAKICAgICAvKiBXcml0ZSBOT1AgTk9QIE5PUCBOT1AgTE9BRF9DT05TVCBuZXdjb25zdCAqLwotICAgIG1lbXNldChjb2Rlc3RyLCBOT1AsIDQpOwotICAgIGNvZGVzdHJbNF0gPSBMT0FEX0NPTlNUOwotICAgIFNFVEFSRyhjb2Rlc3RyLCA0LCBsZW5fY29uc3RzKTsKKyAgICBjb2Rlc3RyWy0yXSA9IExPQURfQ09OU1Q7CisgICAgU0VUQVJHKGNvZGVzdHIsIC0yLCBsZW5fY29uc3RzKTsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIGludAotZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cykKK2ZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICp2KQogewotICAgIFB5T2JqZWN0ICpuZXdjb25zdD1OVUxMLCAqdjsKKyAgICBQeU9iamVjdCAqbmV3Y29uc3Q7CiAgICAgUHlfc3NpemVfdCBsZW5fY29uc3RzOwogICAgIGludCBvcGNvZGU7CiAKQEAgLTIxNiwxMyArMjQ3LDEwIEBACiAgICAgYXNzZXJ0KGNvZGVzdHJbMF0gPT0gTE9BRF9DT05TVCk7CiAKICAgICAvKiBDcmVhdGUgbmV3IGNvbnN0YW50ICovCi0gICAgdiA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCAwKSk7CiAgICAgb3Bjb2RlID0gY29kZXN0clszXTsKICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgotICAgICAgICAgICAgLyogUHJlc2VydmUgdGhlIHNpZ24gb2YgLTAuMCAqLwotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0lzVHJ1ZSh2KSA9PSAxKQotICAgICAgICAgICAgICAgIG5ld2NvbnN0ID0gUHlOdW1iZXJfTmVnYXRpdmUodik7CisgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX05lZ2F0aXZlKHYpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVU5BUllfSU5WRVJUOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9JbnZlcnQodik7CkBAIC0zNTgsNyArMzg2LDExIEBACiAgICAgdW5zaWduZWQgY2hhciAqbGluZW5vOwogICAgIGludCAqYWRkcm1hcCA9IE5VTEw7CiAgICAgaW50IG5ld19saW5lLCBjdW1fb3JpZ19saW5lLCBsYXN0X2xpbmUsIHRhYnNpejsKLSAgICBpbnQgY3VtbGM9MCwgbGFzdGxjPTA7ICAgICAgLyogQ291bnQgcnVucyBvZiBjb25zZWN1dGl2ZSBMT0FEX0NPTlNUcyAqLworICAgIFB5T2JqZWN0ICoqY29uc3Rfc3RhY2sgPSBOVUxMOworICAgIFB5X3NzaXplX3QgKmxvYWRfY29uc3Rfc3RhY2sgPSBOVUxMOworICAgIFB5X3NzaXplX3QgY29uc3Rfc3RhY2tfdG9wID0gLTE7CisgICAgUHlfc3NpemVfdCBjb25zdF9zdGFja19zaXplID0gMDsKKyAgICBpbnQgaW5fY29uc3RzID0gMDsgIC8qIHdoZXRoZXIgd2UgYXJlIGluIGEgTE9BRF9DT05TVCBzZXF1ZW5jZSAqLwogICAgIHVuc2lnbmVkIGludCAqYmxvY2tzID0gTlVMTDsKICAgICBjaGFyICpuYW1lOwogCkBAIC00MDQsMTIgKzQzNiwxNiBAQAogICAgICAgICBnb3RvIGV4aXRFcnJvcjsKICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKGNvbnN0cykpOwogCisgICAgQ09OU1RfU1RBQ0tfQ1JFQVRFKCk7CisKICAgICBmb3IgKGk9MCA7IGk8Y29kZWxlbiA7IGkgKz0gQ09ERVNJWkUoY29kZXN0cltpXSkpIHsKICAgICAgIHJlb3B0aW1pemVfY3VycmVudDoKICAgICAgICAgb3Bjb2RlID0gY29kZXN0cltpXTsKIAotICAgICAgICBsYXN0bGMgPSBjdW1sYzsKLSAgICAgICAgY3VtbGMgPSAwOworICAgICAgICBpZiAoIWluX2NvbnN0cykgeworICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKKyAgICAgICAgfQorICAgICAgICBpbl9jb25zdHMgPSAwOwogCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgICAgICAvKiBSZXBsYWNlIFVOQVJZX05PVCBQT1BfSlVNUF9JRl9GQUxTRQpAQCAtNDUwLDIxICs0ODYsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0RXJyb3I7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaCA9PSAwKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBjdW1sYyA9IGxhc3RsYyArIDE7CisgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIFNraXAgb3ZlciBMT0FEX0NPTlNUIHRydWVjb25zdAogICAgICAgICAgICAgICAgICAgIFBPUF9KVU1QX0lGX0ZBTFNFIHh4LiBUaGlzIGltcHJvdmVzCiAgICAgICAgICAgICAgICAgICAgIndoaWxlIDEiIHBlcmZvcm1hbmNlLiAqLwogICAgICAgICAgICAgY2FzZSBMT0FEX0NPTlNUOgotICAgICAgICAgICAgICAgIGN1bWxjID0gbGFzdGxjICsgMTsKKyAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwogICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSk7CiAgICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBQT1BfSlVNUF9JRl9GQUxTRSAgfHwKICAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw2KSAgfHwKICAgICAgICAgICAgICAgICAgICAgIVB5T2JqZWN0X0lzVHJ1ZShQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBqKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2ksIE5PUCwgNik7Ci0gICAgICAgICAgICAgICAgY3VtbGMgPSAwOworICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBUcnkgdG8gZm9sZCB0dXBsZXMgb2YgY29uc3RhbnRzIChpbmNsdWRlcyBhIGNhc2UgZm9yIGxpc3RzIGFuZCBzZXRzCkBAIC00NzYsMTkgKzUxMiwyMyBAQAogICAgICAgICAgICAgY2FzZSBCVUlMRF9MSVNUOgogICAgICAgICAgICAgY2FzZSBCVUlMRF9TRVQ6CiAgICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBoID0gaSAtIDMgKiBqOwotICAgICAgICAgICAgICAgIGlmIChoID49IDAgICYmCi0gICAgICAgICAgICAgICAgICAgIGogPD0gbGFzdGxjICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICBpZiAoaiA9PSAwKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oaik7CisgICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCBqKSk7CisgICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJiBqID4gMCAmJiBqIDw9IENPTlNUX1NUQUNLX0xFTigpICYmCiAgICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX1RVUExFICYmCi0gICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgMyooaisxKSkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzMpKSB8fAogICAgICAgICAgICAgICAgICAgICAgKChvcGNvZGUgPT0gQlVJTERfTElTVCB8fCBvcGNvZGUgPT0gQlVJTERfU0VUKSAmJgogICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaSszXT09Q09NUEFSRV9PUCAmJgotICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIDMqKGorMikpICYmCisgICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzYpICYmCiAgICAgICAgICAgICAgICAgICAgICAgKEdFVEFSRyhjb2Rlc3RyLGkrMyk9PTYgfHwKICAgICAgICAgICAgICAgICAgICAgICAgR0VUQVJHKGNvZGVzdHIsaSszKT09NykpKSAmJgotICAgICAgICAgICAgICAgICAgICB0dXBsZV9vZl9jb25zdGFudHMoJmNvZGVzdHJbaF0sIGosIGNvbnN0cykpIHsKKyAgICAgICAgICAgICAgICAgICAgdHVwbGVfb2ZfY29uc3RhbnRzKCZjb2Rlc3RyW2ldLCBqLCBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKGopKSkgewogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgY3VtbGMgPSAxOworICAgICAgICAgICAgICAgICAgICBtZW1zZXQoJmNvZGVzdHJbaF0sIE5PUCwgaSAtIGgpOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1Aoaik7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzNdICE9IFVOUEFDS19TRVFVRU5DRSAgfHwKQEAgLTUwMSwxMCArNTQxLDEyIEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJPVF9UV087CiAgICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCA1KTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGogPT0gMykgewogICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUk9UX1RIUkVFOwogICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krMV0gPSBST1RfVFdPOwogICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzIsIE5PUCwgNCk7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01MjMsMTIgKzU2NSwxOCBAQAogICAgICAgICAgICAgY2FzZSBCSU5BUllfQU5EOgogICAgICAgICAgICAgY2FzZSBCSU5BUllfWE9SOgogICAgICAgICAgICAgY2FzZSBCSU5BUllfT1I6Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RsYyA+PSAyICAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaS02LCA3KSAgJiYKLSAgICAgICAgICAgICAgICAgICAgZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ktNl0sIGNvbnN0cykpIHsKKyAgICAgICAgICAgICAgICAvKiBOT1RFOiBMT0FEX0NPTlNUIGlzIHNhdmVkIGF0IGBpLTJgIHNpbmNlIGl0IGhhcyBhbiBhcmcKKyAgICAgICAgICAgICAgICAgICB3aGlsZSBCSU5PUCBoYXNuJ3QgKi8KKyAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCAyKSk7CisgICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJgorICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrMSkgICYmCisgICAgICAgICAgICAgICAgICAgIGZvbGRfYmlub3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpXSwgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTigyKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaSAtPSAyOworICAgICAgICAgICAgICAgICAgICBtZW1zZXQoJmNvZGVzdHJbaF0sIE5PUCwgaSAtIGgpOwogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgY3VtbGMgPSAxOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMik7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01MzcsMTIgKzU4NSwxNSBAQAogICAgICAgICAgICAgY2FzZSBVTkFSWV9ORUdBVElWRToKICAgICAgICAgICAgIGNhc2UgVU5BUllfSU5WRVJUOgogICAgICAgICAgICAgY2FzZSBVTkFSWV9QT1NJVElWRToKLSAgICAgICAgICAgICAgICBpZiAobGFzdGxjID49IDEgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBpLTMsIDQpICAmJgotICAgICAgICAgICAgICAgICAgICBmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpLTNdLCBjb25zdHMpKSAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCAxKSk7CisgICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJgorICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrMSkgICYmCisgICAgICAgICAgICAgICAgICAgIGZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ktM10sIGNvbnN0cywgQ09OU1RfU1RBQ0tfVE9QKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGkgLT0gMjsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7Ci0gICAgICAgICAgICAgICAgICAgIGN1bWxjID0gMTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNjk5LDYgKzc1MCw3IEBACiAgICAgYXNzZXJ0KGggKyBub3BzID09IGNvZGVsZW4pOwogCiAgICAgY29kZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKiljb2Rlc3RyLCBoKTsKKyAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKICAgICBQeU1lbV9GcmVlKGFkZHJtYXApOwogICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgUHlNZW1fRnJlZShibG9ja3MpOwpAQCAtNzA4LDYgKzc2MCw3IEBACiAgICAgY29kZSA9IE5VTEw7CiAKICBleGl0VW5jaGFuZ2VkOgorICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOwogICAgIGlmIChibG9ja3MgIT0gTlVMTCkKICAgICAgICAgUHlNZW1fRnJlZShibG9ja3MpOwogICAgIGlmIChhZGRybWFwICE9IE5VTEwpCmRpZmYgLS1naXQgYS9QeXRob24vcHlzdGF0ZS5jIGIvUHl0aG9uL3B5c3RhdGUuYwppbmRleCAxMzkyMzMxLi44ZGM1NzBhIDEwMDY0NAotLS0gYS9QeXRob24vcHlzdGF0ZS5jCisrKyBiL1B5dGhvbi9weXN0YXRlLmMKQEAgLTY5LDcgKzY5LDYgQEAKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgdGhyZWFkcyBmb3IgaW50ZXJwcmV0ZXIiKTsKICNlbmRpZgogICAgICAgICBpbnRlcnAtPm1vZHVsZXMgPSBOVUxMOwotICAgICAgICBpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nID0gTlVMTDsKICAgICAgICAgaW50ZXJwLT5tb2R1bGVzX2J5X2luZGV4ID0gTlVMTDsKICAgICAgICAgaW50ZXJwLT5zeXNkaWN0ID0gTlVMTDsKICAgICAgICAgaW50ZXJwLT5idWlsdGlucyA9IE5VTEw7CkBAIC03OSw2ICs3OCw3IEBACiAgICAgICAgIGludGVycC0+Y29kZWNfZXJyb3JfcmVnaXN0cnkgPSBOVUxMOwogICAgICAgICBpbnRlcnAtPmNvZGVjc19pbml0aWFsaXplZCA9IDA7CiAgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDA7CisgICAgICAgIGludGVycC0+aW1wb3J0bGliID0gTlVMTDsKICNpZmRlZiBIQVZFX0RMT1BFTgogI2lmZGVmIFJUTERfTk9XCiAgICAgICAgIGludGVycC0+ZGxvcGVuZmxhZ3MgPSBSVExEX05PVzsKQEAgLTExMyw5ICsxMTMsOSBAQAogICAgIFB5X0NMRUFSKGludGVycC0+Y29kZWNfZXJyb3JfcmVnaXN0cnkpOwogICAgIFB5X0NMRUFSKGludGVycC0+bW9kdWxlcyk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5tb2R1bGVzX2J5X2luZGV4KTsKLSAgICBQeV9DTEVBUihpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nKTsKICAgICBQeV9DTEVBUihpbnRlcnAtPnN5c2RpY3QpOwogICAgIFB5X0NMRUFSKGludGVycC0+YnVpbHRpbnMpOworICAgIFB5X0NMRUFSKGludGVycC0+aW1wb3J0bGliKTsKIH0KIAogCkBAIC0yMzksOSArMjM5LDkgQEAKIH0KIAogUHlPYmplY3QqCi1QeVN0YXRlX0ZpbmRNb2R1bGUoc3RydWN0IFB5TW9kdWxlRGVmKiBtKQorUHlTdGF0ZV9GaW5kTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiogbW9kdWxlKQogewotICAgIFB5X3NzaXplX3QgaW5kZXggPSBtLT5tX2Jhc2UubV9pbmRleDsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gbW9kdWxlLT5tX2Jhc2UubV9pbmRleDsKICAgICBQeUludGVycHJldGVyU3RhdGUgKnN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaWYgKGluZGV4ID09IDApCkBAIC0yNzMsNiArMjczLDQ3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5kZXgsIG1vZHVsZSk7CiB9CiAKK2ludAorUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqIG1vZHVsZSwgc3RydWN0IFB5TW9kdWxlRGVmKiBkZWYpCit7CisgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKnN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworICAgIGlmICghZGVmKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5U3RhdGVfQWRkTW9kdWxlOiBNb2R1bGUgRGVmaW5pdGlvbiBpcyBOVUxMIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaW5kZXggPSBkZWYtPm1fYmFzZS5tX2luZGV4OworICAgIGlmIChzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCkgeworICAgICAgICBpZihQeUxpc3RfR0VUX1NJWkUoc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXgpID49IGluZGV4KSB7CisgICAgICAgICAgICBpZihtb2R1bGUgPT0gUHlMaXN0X0dFVF9JVEVNKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4LCBpbmRleCkpIHsKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVN0YXRlX0FkZE1vZHVsZTogTW9kdWxlIGFscmVhZHkgYWRkZWQhIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBfUHlTdGF0ZV9BZGRNb2R1bGUobW9kdWxlLCBkZWYpOworfQorCitpbnQKK1B5U3RhdGVfUmVtb3ZlTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiogZGVmKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZWYtPm1fYmFzZS5tX2luZGV4OworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgaWYgKGluZGV4ID09IDApIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9SZW1vdmVNb2R1bGU6IE1vZHVsZSBpbmRleCBpbnZhbGlkLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5U3RhdGVfUmVtb3ZlTW9kdWxlOiBJbnRlcnByZXRlcnMgbW9kdWxlLWxpc3Qgbm90IGFjZXNzaWJsZS4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoaW5kZXggPiBQeUxpc3RfR0VUX1NJWkUoc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXgpKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5U3RhdGVfUmVtb3ZlTW9kdWxlOiBNb2R1bGUgaW5kZXggb3V0IG9mIGJvdW5kcy4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gUHlMaXN0X1NldEl0ZW0oc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXgsIGluZGV4LCBQeV9Ob25lKTsKK30KKwogdm9pZAogUHlUaHJlYWRTdGF0ZV9DbGVhcihQeVRocmVhZFN0YXRlICp0c3RhdGUpCiB7CmRpZmYgLS1naXQgYS9QeXRob24vcHlzdHJ0b2QuYyBiL1B5dGhvbi9weXN0cnRvZC5jCmluZGV4IDc1ZTMwMzIuLjRhYjhmMDggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0cnRvZC5jCisrKyBiL1B5dGhvbi9weXN0cnRvZC5jCkBAIC0yMiw2ICsyMiw0MyBAQAogICAgdGhlIHN1Y2Nlc3NmdWxseSBwYXJzZWQgcG9ydGlvbiBvZiB0aGUgc3RyaW5nLiAgT24gZmFpbHVyZSwgcmV0dXJuIC0xLjAgYW5kCiAgICBzZXQgKmVuZHB0ciB0byBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZy4gKi8KIAorI2lmbmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisKK2RvdWJsZQorX1B5X3BhcnNlX2luZl9vcl9uYW4oY29uc3QgY2hhciAqcCwgY2hhciAqKmVuZHB0cikKK3sKKyAgICBkb3VibGUgcmV0dmFsOworICAgIGNvbnN0IGNoYXIgKnM7CisgICAgaW50IG5lZ2F0ZSA9IDA7CisKKyAgICBzID0gcDsKKyAgICBpZiAoKnMgPT0gJy0nKSB7CisgICAgICAgIG5lZ2F0ZSA9IDE7CisgICAgICAgIHMrKzsKKyAgICB9CisgICAgZWxzZSBpZiAoKnMgPT0gJysnKSB7CisgICAgICAgIHMrKzsKKyAgICB9CisgICAgaWYgKGNhc2VfaW5zZW5zaXRpdmVfbWF0Y2gocywgImluZiIpKSB7CisgICAgICAgIHMgKz0gMzsKKyAgICAgICAgaWYgKGNhc2VfaW5zZW5zaXRpdmVfbWF0Y2gocywgImluaXR5IikpCisgICAgICAgICAgICBzICs9IDU7CisgICAgICAgIHJldHZhbCA9IF9QeV9kZ19pbmZpbml0eShuZWdhdGUpOworICAgIH0KKyAgICBlbHNlIGlmIChjYXNlX2luc2Vuc2l0aXZlX21hdGNoKHMsICJuYW4iKSkgeworICAgICAgICBzICs9IDM7CisgICAgICAgIHJldHZhbCA9IF9QeV9kZ19zdGRuYW4obmVnYXRlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHMgPSBwOworICAgICAgICByZXR2YWwgPSAtMS4wOworICAgIH0KKyAgICAqZW5kcHRyID0gKGNoYXIgKilzOworICAgIHJldHVybiByZXR2YWw7Cit9CisKKyNlbHNlCisKIGRvdWJsZQogX1B5X3BhcnNlX2luZl9vcl9uYW4oY29uc3QgY2hhciAqcCwgY2hhciAqKmVuZHB0cikKIHsKQEAgLTU3LDYgKzk0LDggQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCisjZW5kaWYKKwogLyoqCiAgKiBfUHlPU19hc2NpaV9zdHJ0b2Q6CiAgKiBAbnB0cjogICAgdGhlIHN0cmluZyB0byBjb252ZXJ0IHRvIGEgbnVtZXJpYyB2YWx1ZS4KQEAgLTk1NCw3ICs5OTMsNyBAQAogICAgICAgICAgICAgLyogc2hvdWxkbid0IGdldCBoZXJlOiBHYXkncyBjb2RlIHNob3VsZCBhbHdheXMgcmV0dXJuCiAgICAgICAgICAgICAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBhIGRpZ2l0LCBhbiAnSScsICBvciAnTicgKi8KICAgICAgICAgICAgIHN0cm5jcHkocCwgIkVSUiIsIDMpOwotICAgICAgICAgICAgcCArPSAzOworICAgICAgICAgICAgLyogcCArPSAzOyAqLwogICAgICAgICAgICAgYXNzZXJ0KDApOwogICAgICAgICB9CiAgICAgICAgIGdvdG8gZXhpdDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRob25ydW4uYyBiL1B5dGhvbi9weXRob25ydW4uYwppbmRleCBjZjRlMzRjLi4wNWRmYjhlIDEwMDY0NAotLS0gYS9QeXRob24vcHl0aG9ucnVuLmMKKysrIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCkBAIC01Miw3ICs1Miw3IEBACiBleHRlcm4gZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hcjsgLyogRnJvbSBncmFtaW5pdC5jICovCiAKIC8qIEZvcndhcmQgKi8KLXN0YXRpYyB2b2lkIGluaXRtYWluKHZvaWQpOworc3RhdGljIHZvaWQgaW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApOwogc3RhdGljIGludCBpbml0ZnNlbmNvZGluZyhQeUludGVycHJldGVyU3RhdGUgKmludGVycCk7CiBzdGF0aWMgdm9pZCBpbml0c2l0ZSh2b2lkKTsKIHN0YXRpYyBpbnQgaW5pdHN0ZGlvKHZvaWQpOwpAQCAtNjIsMTQgKzYyLDE3IEBACiBzdGF0aWMgUHlPYmplY3QgKnJ1bl9weWNfZmlsZShGSUxFICosIGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Q29tcGlsZXJGbGFncyAqKTsKIHN0YXRpYyB2b2lkIGVycl9pbnB1dChwZXJyZGV0YWlsICopOworc3RhdGljIHZvaWQgZXJyX2ZyZWUocGVycmRldGFpbCAqKTsKIHN0YXRpYyB2b2lkIGluaXRzaWdzKHZvaWQpOwogc3RhdGljIHZvaWQgY2FsbF9weV9leGl0ZnVuY3Modm9pZCk7CiBzdGF0aWMgdm9pZCB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCk7CiBzdGF0aWMgdm9pZCBjYWxsX2xsX2V4aXRmdW5jcyh2b2lkKTsKLWV4dGVybiB2b2lkIF9QeVVuaWNvZGVfSW5pdCh2b2lkKTsKK2V4dGVybiBpbnQgX1B5VW5pY29kZV9Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgX1B5VW5pY29kZV9GaW5pKHZvaWQpOwogZXh0ZXJuIGludCBfUHlMb25nX0luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBQeUxvbmdfRmluaSh2b2lkKTsKK2V4dGVybiBpbnQgX1B5RmF1bHRoYW5kbGVyX0luaXQodm9pZCk7CitleHRlcm4gdm9pZCBfUHlGYXVsdGhhbmRsZXJfRmluaSh2b2lkKTsKIAogI2lmZGVmIFdJVEhfVEhSRUFECiBleHRlcm4gdm9pZCBfUHlHSUxTdGF0ZV9Jbml0KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqLCBQeVRocmVhZFN0YXRlICopOwpAQCAtMTM5LDEyICsxNDIsMTMgQEAKIHsKICAgICBjaGFyICpuYW1lX3V0ZjgsICpuYW1lX3N0cjsKICAgICBQeU9iamVjdCAqY29kZWMsICpuYW1lID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihuYW1lKTsKIAogICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKGVuY29kaW5nKTsKICAgICBpZiAoIWNvZGVjKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY29kZWMsICJuYW1lIik7CisgICAgbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29kZWMsICZQeUlkX25hbWUpOwogICAgIFB5X0NMRUFSKGNvZGVjKTsKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0xNjYsMjEgKzE3MCw3OSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi0jaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKIHN0YXRpYyBjaGFyKgotZ2V0X2NvZGVzZXQodm9pZCkKK2dldF9sb2NhbGVfZW5jb2Rpbmcodm9pZCkKIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgY2hhciBjb2RlcGFnZVsxMDBdOworICAgIFB5T1Nfc25wcmludGYoY29kZXBhZ2UsIHNpemVvZihjb2RlcGFnZSksICJjcCVkIiwgR2V0QUNQKCkpOworICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2RlcGFnZSk7CisjZWxpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChDT0RFU0VUKQogICAgIGNoYXIqIGNvZGVzZXQgPSBubF9sYW5naW5mbyhDT0RFU0VUKTsKICAgICBpZiAoIWNvZGVzZXQgfHwgY29kZXNldFswXSA9PSAnXDAnKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ09ERVNFVCBpcyBub3Qgc2V0IG9yIGVtcHR5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoY29kZXNldCk7Ci19CisjZWxzZQorICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7CisgICAgcmV0dXJuIE5VTEw7CiAjZW5kaWYKK30KKworc3RhdGljIHZvaWQKK2ltcG9ydF9pbml0KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLCBQeU9iamVjdCAqc3lzbW9kKQoreworICAgIFB5T2JqZWN0ICppbXBvcnRsaWI7CisgICAgUHlPYmplY3QgKmltcG1vZDsKKyAgICBQeU9iamVjdCAqc3lzX21vZHVsZXM7CisgICAgUHlPYmplY3QgKnZhbHVlOworCisgICAgLyogSW1wb3J0IF9pbXBvcnRsaWIgdGhyb3VnaCBpdHMgZnJvemVuIHZlcnNpb24sIF9mcm96ZW5faW1wb3J0bGliLiAqLworICAgIGlmIChQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoIl9mcm96ZW5faW1wb3J0bGliIikgPD0gMCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWIiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWIgIyBmcm96ZW5cbiIpOworICAgIH0KKyAgICBpbXBvcnRsaWIgPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9mcm96ZW5faW1wb3J0bGliIik7CisgICAgaWYgKGltcG9ydGxpYiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNvdWxkbid0IGdldCBfZnJvemVuX2ltcG9ydGxpYiBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgICAic3lzLm1vZHVsZXMiKTsKKyAgICB9CisgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBpbXBvcnRsaWI7CisgICAgUHlfSU5DUkVGKGludGVycC0+aW1wb3J0bGliKTsKKworICAgIC8qIEluc3RhbGwgX2ltcG9ydGxpYiBhcyBfX2ltcG9ydF9fICovCisgICAgaW1wbW9kID0gUHlJbml0X2ltcCgpOworICAgIGlmIChpbXBtb2QgPT0gTlVMTCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbXBvcnQgaW1wIik7CisgICAgfQorICAgIGVsc2UgaWYgKFB5X1ZlcmJvc2VGbGFnKSB7CisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0IGltcCAjIGJ1aWx0aW5cbiIpOworICAgIH0KKyAgICBzeXNfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKKyAgICBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgc3lzICMgYnVpbHRpblxuIik7CisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhzeXNfbW9kdWxlcywgIl9pbXAiLCBpbXBtb2QpIDwgMCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBzYXZlIF9pbXAgdG8gc3lzLm1vZHVsZXMiKTsKKyAgICB9CisKKyAgICB2YWx1ZSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW1wb3J0bGliLCAiX2luc3RhbGwiLCAiT08iLCBzeXNtb2QsIGltcG1vZCk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfUHJpbnQoKTsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogaW1wb3J0bGliIGluc3RhbGwgZmFpbGVkIik7CisgICAgfQorICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgUHlfREVDUkVGKGltcG1vZCk7CisKKyAgICBfUHlJbXBvcnRaaXBfSW5pdCgpOworfQorCiAKIHZvaWQKLVB5X0luaXRpYWxpemVFeChpbnQgaW5zdGFsbF9zaWdzKQorX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCBpbnN0YWxsX3NpZ3MsIGludCBpbnN0YWxsX2ltcG9ydGxpYikKIHsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CkBAIC0yNTIsMTIgKzMxNCwxMCBAQAogICAgIGludGVycC0+bW9kdWxlcyA9IFB5RGljdF9OZXcoKTsKICAgICBpZiAoaW50ZXJwLT5tb2R1bGVzID09IE5VTEwpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgbW9kdWxlcyBkaWN0aW9uYXJ5Iik7Ci0gICAgaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBtYWtlIG1vZHVsZXNfcmVsb2FkaW5nIGRpY3Rpb25hcnkiKTsKIAogICAgIC8qIEluaXQgVW5pY29kZSBpbXBsZW1lbnRhdGlvbjsgcmVsaWVzIG9uIHRoZSBjb2RlYyByZWdpc3RyeSAqLwotICAgIF9QeVVuaWNvZGVfSW5pdCgpOworICAgIGlmIChfUHlVbmljb2RlX0luaXQoKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgdW5pY29kZSIpOwogCiAgICAgYmltb2QgPSBfUHlCdWlsdGluX0luaXQoKTsKICAgICBpZiAoYmltb2QgPT0gTlVMTCkKQEAgLTI2OSw3ICszMjksNyBAQAogICAgIFB5X0lOQ1JFRihpbnRlcnAtPmJ1aWx0aW5zKTsKIAogICAgIC8qIGluaXRpYWxpemUgYnVpbHRpbiBleGNlcHRpb25zICovCi0gICAgX1B5RXhjX0luaXQoKTsKKyAgICBfUHlFeGNfSW5pdChiaW1vZCk7CiAKICAgICBzeXNtb2QgPSBfUHlTeXNfSW5pdCgpOwogICAgIGlmIChzeXNtb2QgPT0gTlVMTCkKQEAgLTI5OSw2ICszNTksMTUgQEAKICAgICAvKiBJbml0aWFsaXplIF93YXJuaW5ncy4gKi8KICAgICBfUHlXYXJuaW5nc19Jbml0KCk7CiAKKyAgICBpZiAoIWluc3RhbGxfaW1wb3J0bGliKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBvcnRfaW5pdChpbnRlcnAsIHN5c21vZCk7CisKKyAgICAvKiBpbml0aWFsaXplIHRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlICovCisgICAgaWYgKF9QeUZhdWx0aGFuZGxlcl9Jbml0KCkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgZmF1bHRoYW5kbGVyIik7CisKICAgICBfUHlUaW1lX0luaXQoKTsKIAogICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKQEAgLTMwNyw3ICszNzYsNyBAQAogICAgIGlmIChpbnN0YWxsX3NpZ3MpCiAgICAgICAgIGluaXRzaWdzKCk7IC8qIFNpZ25hbCBoYW5kbGluZyBzdHVmZiwgaW5jbHVkaW5nIGluaXRpbnRyKCkgKi8KIAotICAgIGluaXRtYWluKCk7IC8qIE1vZHVsZSBfX21haW5fXyAqLworICAgIGluaXRtYWluKGludGVycCk7IC8qIE1vZHVsZSBfX21haW5fXyAqLwogICAgIGlmIChpbml0c3RkaW8oKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOwpAQCAtMzI3LDYgKzM5NiwxMiBAQAogfQogCiB2b2lkCitQeV9Jbml0aWFsaXplRXgoaW50IGluc3RhbGxfc2lncykKK3sKKyAgICBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW5zdGFsbF9zaWdzLCAxKTsKK30KKwordm9pZAogUHlfSW5pdGlhbGl6ZSh2b2lkKQogewogICAgIFB5X0luaXRpYWxpemVFeCgxKTsKQEAgLTM2MSw5ICs0MzYsMTAgQEAKICAgICBQeU9iamVjdCAqZm91dCA9IFB5U3lzX0dldE9iamVjdCgic3Rkb3V0Iik7CiAgICAgUHlPYmplY3QgKmZlcnIgPSBQeVN5c19HZXRPYmplY3QoInN0ZGVyciIpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIoZmx1c2gpOwogCiAgICAgaWYgKGZvdXQgIT0gTlVMTCAmJiBmb3V0ICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZvdXQpKSB7Ci0gICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZm91dCwgImZsdXNoIiwgIiIpOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmb3V0KTsKICAgICAgICAgZWxzZQpAQCAtMzcxLDcgKzQ0Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKGZlcnIgIT0gTlVMTCAmJiBmZXJyICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZlcnIpKSB7Ci0gICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZmVyciwgImZsdXNoIiwgIiIpOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UKQEAgLTQ2NCw3ICs1NDAsNyBAQAogICAgIGZsdXNoX3N0ZF9maWxlcygpOwogCiAgICAgLyogQ29sbGVjdCBmaW5hbCBnYXJiYWdlLiAgVGhpcyBkaXNwb3NlcyBvZiBjeWNsZXMgY3JlYXRlZCBieQotICAgICAqIG5ldy1zdHlsZSBjbGFzcyBkZWZpbml0aW9ucywgZm9yIGV4YW1wbGUuCisgICAgICogY2xhc3MgZGVmaW5pdGlvbnMsIGZvciBleGFtcGxlLgogICAgICAqIFhYWCBUaGlzIGlzIGRpc2FibGVkIGJlY2F1c2UgaXQgY2F1c2VkIHRvbyBtYW55IHByb2JsZW1zLiAgSWYKICAgICAgKiBYWFggYSBfX2RlbF9fIG9yIHdlYWtyZWYgY2FsbGJhY2sgdHJpZ2dlcnMgaGVyZSwgUHl0aG9uIGNvZGUgaGFzCiAgICAgICogWFhYIGEgaGFyZCB0aW1lIHJ1bm5pbmcsIGJlY2F1c2UgZXZlbiB0aGUgc3lzIG1vZHVsZSBoYXMgYmVlbgpAQCAtNDg1LDYgKzU2MSw5IEBACiAgICAgLyogRGVzdHJveSB0aGUgZGF0YWJhc2UgdXNlZCBieSBfUHlJbXBvcnRfe0ZpeHVwLEZpbmR9RXh0ZW5zaW9uICovCiAgICAgX1B5SW1wb3J0X0ZpbmkoKTsKIAorICAgIC8qIHVubG9hZCBmYXVsdGhhbmRsZXIgbW9kdWxlICovCisgICAgX1B5RmF1bHRoYW5kbGVyX0ZpbmkoKTsKKwogICAgIC8qIERlYnVnZ2luZyBzdHVmZiAqLwogI2lmZGVmIENPVU5UX0FMTE9DUwogICAgIGR1bXBfY291bnRzKHN0ZG91dCk7CkBAIC01MzQsNiArNjEzLDcgQEAKICAgICBQeUxvbmdfRmluaSgpOwogICAgIFB5RmxvYXRfRmluaSgpOwogICAgIFB5RGljdF9GaW5pKCk7CisgICAgUHlTbGljZV9GaW5pKCk7CiAKICAgICAvKiBDbGVhbnVwIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KICAgICBfUHlVbmljb2RlX0ZpbmkoKTsKQEAgLTU2Miw3ICs2NDIsNyBAQAogI2VuZGlmIC8qIFB5X1RSQUNFX1JFRlMgKi8KICNpZmRlZiBQWU1BTExPQ19ERUJVRwogICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIikpCi0gICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKCk7CisgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CiAjZW5kaWYKIAogICAgIGNhbGxfbGxfZXhpdGZ1bmNzKCk7CkBAIC02MDYsNyArNjg2LDYgQEAKICAgICAvKiBYWFggVGhlIGZvbGxvd2luZyBpcyBsYXggaW4gZXJyb3IgY2hlY2tpbmcgKi8KIAogICAgIGludGVycC0+bW9kdWxlcyA9IFB5RGljdF9OZXcoKTsKLSAgICBpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nID0gUHlEaWN0X05ldygpOwogCiAgICAgYmltb2QgPSBfUHlJbXBvcnRfRmluZEJ1aWx0aW4oImJ1aWx0aW5zIik7CiAgICAgaWYgKGJpbW9kICE9IE5VTEwpIHsKQEAgLTYxNywxMSArNjk2LDEyIEBACiAgICAgfQogCiAgICAgLyogaW5pdGlhbGl6ZSBidWlsdGluIGV4Y2VwdGlvbnMgKi8KLSAgICBfUHlFeGNfSW5pdCgpOworICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKIAogICAgIHN5c21vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigic3lzIik7CiAgICAgaWYgKGJpbW9kICE9IE5VTEwgJiYgc3lzbW9kICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnBzdGRlcnI7CisKICAgICAgICAgaW50ZXJwLT5zeXNkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChzeXNtb2QpOwogICAgICAgICBpZiAoaW50ZXJwLT5zeXNkaWN0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKQEAgLTY0MCwxMyArNzIwLDE1IEBACiAKICAgICAgICAgX1B5SW1wb3J0SG9va3NfSW5pdCgpOwogCisgICAgICAgIGltcG9ydF9pbml0KGludGVycCwgc3lzbW9kKTsKKwogICAgICAgICBpZiAoaW5pdGZzZW5jb2RpbmcoaW50ZXJwKSA8IDApCiAgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKIAogICAgICAgICBpZiAoaW5pdHN0ZGlvKCkgPCAwKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigKICAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7Ci0gICAgICAgIGluaXRtYWluKCk7CisgICAgICAgIGluaXRtYWluKGludGVycCk7CiAgICAgICAgIGlmICghUHlfTm9TaXRlRmxhZykKICAgICAgICAgICAgIGluaXRzaXRlKCk7CiAgICAgfQpAQCAtNzQzLDcgKzgyNSw3IEBACiAvKiBDcmVhdGUgX19tYWluX18gbW9kdWxlICovCiAKIHN0YXRpYyB2b2lkCi1pbml0bWFpbih2b2lkKQoraW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCiB7CiAgICAgUHlPYmplY3QgKm0sICpkOwogICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7CkBAIC03NTIsMzUgKzgzNCw0OCBAQAogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwogICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIikgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7Ci0gICAgICAgIGlmIChiaW1vZCA9PSBOVUxMIHx8Ci0gICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIiwgYmltb2QpICE9IDApCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJjYW4ndCBhZGQgX19idWlsdGluc19fIHRvIF9fbWFpbl9fIik7CisgICAgICAgIGlmIChiaW1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgYnVpbHRpbnMgbW9kdWxlIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iLCBiaW1vZCkgPCAwKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2J1aWx0aW5zX18iKTsKKyAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoYmltb2QpOwogICAgIH0KKyAgICAvKiBNYWluIGlzIGEgbGl0dGxlIHNwZWNpYWwgLSBpbXAuaXNfYnVpbHRpbigiX19tYWluX18iKSB3aWxsIHJldHVybgorICAgICAqIEZhbHNlLCBidXQgQnVpbHRpbkltcG9ydGVyIGlzIHN0aWxsIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGluaXRpYWwKKyAgICAgKiBzZXR0aW5nIGZvciBpdHMgX19sb2FkZXJfXyBhdHRyaWJ1dGUuIEEgbW9yZSBzdWl0YWJsZSB2YWx1ZSB3aWxsCisgICAgICogYmUgc2V0IGlmIF9fbWFpbl9fIGdldHMgZnVydGhlciBpbml0aWFsaXplZCBsYXRlciBpbiB0aGUgc3RhcnR1cAorICAgICAqIHByb2Nlc3MuCisgICAgICovCisgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIikgPT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqbG9hZGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJ1aWx0aW5JbXBvcnRlciIpOworICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZXRyaWV2ZSBCdWlsdGluSW1wb3J0ZXIiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iLCBsb2FkZXIpIDwgMCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgX19tYWluX18uX19sb2FkZXJfXyIpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihsb2FkZXIpOworICAgIH0KIH0KIAogc3RhdGljIGludAogaW5pdGZzZW5jb2RpbmcoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCiB7CiAgICAgUHlPYmplY3QgKmNvZGVjOwotI2lmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCi0gICAgY2hhciAqY29kZXNldCA9IE5VTEw7CiAKLSAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIE9uIFVuaXgsIHNldCB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgYWNjb3JkaW5nIHRvIHRoZQotICAgICAgICAgICB1c2VyJ3MgcHJlZmVyZW5jZSwgaWYgdGhlIENPREVTRVQgbmFtZXMgYSB3ZWxsLWtub3duCi0gICAgICAgICAgIFB5dGhvbiBjb2RlYywgYW5kIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgaXNuJ3QKLSAgICAgICAgICAgaW5pdGlhbGl6ZWQgYnkgb3RoZXIgbWVhbnMuICovCi0gICAgICAgIGNvZGVzZXQgPSBnZXRfY29kZXNldCgpOwotICAgICAgICBpZiAoY29kZXNldCA9PSBOVUxMKQorICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCisgICAgeworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gZ2V0X2xvY2FsZV9lbmNvZGluZygpOworICAgICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogVW5hYmxlIHRvIGdldCB0aGUgbG9jYWxlIGVuY29kaW5nIik7CiAKLSAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IGNvZGVzZXQ7CiAgICAgICAgIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAwOwogICAgICAgICBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgPSAxOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8qIHRoZSBlbmNvZGluZyBpcyBtYmNzLCB1dGYtOCBvciBhc2NpaSAqLwogICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOwpAQCAtODIyLDYgKzkxNywxMSBAQAogICAgIGNvbnN0IGNoYXIqIG5ld2xpbmU7CiAgICAgUHlPYmplY3QgKmxpbmVfYnVmZmVyaW5nOwogICAgIGludCBidWZmZXJpbmcsIGlzYXR0eTsKKyAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKKyAgICBfUHlfSURFTlRJRklFUihpc2F0dHkpOworICAgIF9QeV9JREVOVElGSUVSKFRleHRJT1dyYXBwZXIpOworICAgIF9QeV9JREVOVElGSUVSKG5hbWUpOworICAgIF9QeV9JREVOVElGSUVSKG1vZGUpOwogCiAgICAgLyogc3RkaW4gaXMgYWx3YXlzIG9wZW5lZCBpbiBidWZmZXJlZCBtb2RlLCBmaXJzdCBiZWNhdXNlIGl0IHNob3VsZG4ndAogICAgICAgIG1ha2UgYSBkaWZmZXJlbmNlIGluIGNvbW1vbiB1c2UgY2FzZXMsIHNlY29uZCBiZWNhdXNlIFRleHRJT1dyYXBwZXIKQEAgLTgzNiwxNCArOTM2LDE1IEBACiAgICAgICAgIG1vZGUgPSAid2IiOwogICAgIGVsc2UKICAgICAgICAgbW9kZSA9ICJyYiI7Ci0gICAgYnVmID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIm9wZW4iLCAiaXNpT09PaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgbW9kZSwgYnVmZmVyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgUHlfTm9uZSwgMCk7CisgICAgYnVmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaU9PT2kiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIG1vZGUsIGJ1ZmZlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIFB5X05vbmUsIDApOwogICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGlmIChidWZmZXJpbmcpIHsKLSAgICAgICAgcmF3ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhidWYsICJyYXciKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmF3KTsKKyAgICAgICAgcmF3ID0gX1B5T2JqZWN0X0dldEF0dHJJZChidWYsICZQeUlkX3Jhdyk7CiAgICAgICAgIGlmIChyYXcgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtODUzLDkgKzk1NCw5IEBACiAgICAgfQogCiAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwotICAgIGlmICh0ZXh0ID09IE5VTEwgfHwgUHlPYmplY3RfU2V0QXR0clN0cmluZyhyYXcsICJuYW1lIiwgdGV4dCkgPCAwKQorICAgIGlmICh0ZXh0ID09IE5VTEwgfHwgX1B5T2JqZWN0X1NldEF0dHJJZChyYXcsICZQeUlkX25hbWUsIHRleHQpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJhdywgImlzYXR0eSIsICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJhdywgJlB5SWRfaXNhdHR5LCAiIik7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGlzYXR0eSA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtODgxLDkgKzk4Miw5IEBACiAgICAgbmV3bGluZSA9ICJcbiI7CiAjZW5kaWYKIAotICAgIHN0cmVhbSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW8sICJUZXh0SU9XcmFwcGVyIiwgIk9zc3NPIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgZW5jb2RpbmcsIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUsIGxpbmVfYnVmZmVyaW5nKTsKKyAgICBzdHJlYW0gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9UZXh0SU9XcmFwcGVyLCAiT3Nzc08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBlbmNvZGluZywgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZSwgbGluZV9idWZmZXJpbmcpOwogICAgIFB5X0NMRUFSKGJ1Zik7CiAgICAgaWYgKHN0cmVhbSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtODkzLDcgKzk5NCw3IEBACiAgICAgZWxzZQogICAgICAgICBtb2RlID0gInIiOwogICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhtb2RlKTsKLSAgICBpZiAoIXRleHQgfHwgUHlPYmplY3RfU2V0QXR0clN0cmluZyhzdHJlYW0sICJtb2RlIiwgdGV4dCkgPCAwKQorICAgIGlmICghdGV4dCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHN0cmVhbSwgJlB5SWRfbW9kZSwgdGV4dCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIFB5X0NMRUFSKHRleHQpOwogICAgIHJldHVybiBzdHJlYW07CkBAIC0xMTMzLDEzICsxMjM0LDE0IEBACiAgICAgUHlBcmVuYSAqYXJlbmE7CiAgICAgY2hhciAqcHMxID0gIiIsICpwczIgPSAiIiwgKmVuYyA9IE5VTEw7CiAgICAgaW50IGVycmNvZGUgPSAwOworICAgIF9QeV9JREVOVElGSUVSKGVuY29kaW5nKTsKIAogICAgIGlmIChmcCA9PSBzdGRpbikgewogICAgICAgICAvKiBGZXRjaCBlbmNvZGluZyBmcm9tIHN5cy5zdGRpbiAqLwogICAgICAgICB2ID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRpbiIpOwogICAgICAgICBpZiAodiA9PSBOVUxMIHx8IHYgPT0gUHlfTm9uZSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgb2VuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodiwgImVuY29kaW5nIik7CisgICAgICAgIG9lbmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKHYsICZQeUlkX2VuY29kaW5nKTsKICAgICAgICAgaWYgKCFvZW5jKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBlbmMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG9lbmMpOwpAQCAtMTI1Miw2ICsxMzU0LDMyIEBACiB9CiAKIGludAorc3RhdGljIHNldF9tYWluX2xvYWRlcihQeU9iamVjdCAqZCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmxvYWRlcl9uYW1lKQoreworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqbG9hZGVyX3R5cGUsICpsb2FkZXI7CisgICAgaW50IHJlc3VsdCA9IDA7CisgICAgLyogR2V0IGN1cnJlbnQgdGhyZWFkIHN0YXRlIGFuZCBpbnRlcnByZXRlciBwb2ludGVyICovCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBpbnRlcnAgPSB0c3RhdGUtPmludGVycDsKKyAgICBsb2FkZXJfdHlwZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsIGxvYWRlcl9uYW1lKTsKKyAgICBpZiAobG9hZGVyX3R5cGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGxvYWRlciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihsb2FkZXJfdHlwZSwgInNzIiwgIl9fbWFpbl9fIiwgZmlsZW5hbWUpOworICAgIFB5X0RFQ1JFRihsb2FkZXJfdHlwZSk7CisgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIiwgbG9hZGVyKSA8IDApIHsKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQorICAgIFB5X0RFQ1JFRihsb2FkZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAogUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgY2xvc2VpdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MpCiB7CkBAIC0xMjk0LDggKzE0MjIsMjEgQEAKICAgICAgICAgLyogVHVybiBvbiBvcHRpbWl6YXRpb24gaWYgYSAucHlvIGZpbGUgaXMgZ2l2ZW4gKi8KICAgICAgICAgaWYgKHN0cmNtcChleHQsICIucHlvIikgPT0gMCkKICAgICAgICAgICAgIFB5X09wdGltaXplRmxhZyA9IDE7CisKKyAgICAgICAgaWYgKHNldF9tYWluX2xvYWRlcihkLCBmaWxlbmFtZSwgIlNvdXJjZWxlc3NGaWxlTG9hZGVyIikgPCAwKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInB5dGhvbjogZmFpbGVkIHRvIHNldCBfX21haW5fXy5fX2xvYWRlcl9fXG4iKTsKKyAgICAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CiAgICAgICAgIHYgPSBydW5fcHljX2ZpbGUoZnAsIGZpbGVuYW1lLCBkLCBkLCBmbGFncyk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgLyogV2hlbiBydW5uaW5nIGZyb20gc3RkaW4sIGxlYXZlIF9fbWFpbl9fLl9fbG9hZGVyX18gYWxvbmUgKi8KKyAgICAgICAgaWYgKHN0cmNtcChmaWxlbmFtZSwgIjxzdGRpbj4iKSAhPSAwICYmCisgICAgICAgICAgICBzZXRfbWFpbl9sb2FkZXIoZCwgZmlsZW5hbWUsICJTb3VyY2VGaWxlTG9hZGVyIikgPCAwKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInB5dGhvbjogZmFpbGVkIHRvIHNldCBfX21haW5fXy5fX2xvYWRlcl9fXG4iKTsKKyAgICAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CiAgICAgICAgIHYgPSBQeVJ1bl9GaWxlRXhGbGFncyhmcCwgZmlsZW5hbWUsIFB5X2ZpbGVfaW5wdXQsIGQsIGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWl0LCBmbGFncyk7CiAgICAgfQpAQCAtMTMzNiwyMCArMTQ3NywyMCBAQAogewogICAgIGxvbmcgaG9sZDsKICAgICBQeU9iamVjdCAqdjsKLQotICAgIC8qIG9sZCBzdHlsZSBlcnJvcnMgKi8KLSAgICBpZiAoUHlUdXBsZV9DaGVjayhlcnIpKQotICAgICAgICByZXR1cm4gUHlBcmdfUGFyc2VUdXBsZShlcnIsICJPKHppaXopIiwgbWVzc2FnZSwgZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgb2Zmc2V0LCB0ZXh0KTsKKyAgICBfUHlfSURFTlRJRklFUihtc2cpOworICAgIF9QeV9JREVOVElGSUVSKGZpbGVuYW1lKTsKKyAgICBfUHlfSURFTlRJRklFUihsaW5lbm8pOworICAgIF9QeV9JREVOVElGSUVSKG9mZnNldCk7CisgICAgX1B5X0lERU5USUZJRVIodGV4dCk7CiAKICAgICAqbWVzc2FnZSA9IE5VTEw7CiAKICAgICAvKiBuZXcgc3R5bGUgZXJyb3JzLiAgYGVycicgaXMgYW4gaW5zdGFuY2UgKi8KLSAgICAqbWVzc2FnZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXJyLCAibXNnIik7CisgICAgKm1lc3NhZ2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfbXNnKTsKICAgICBpZiAoISptZXNzYWdlKQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJmaWxlbmFtZSIpOworICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfZmlsZW5hbWUpOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGlmICh2ID09IFB5X05vbmUpIHsKQEAgLTEzNjMsNyArMTUwNCw3IEBACiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogCi0gICAgdiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXJyLCAibGluZW5vIik7CisgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9saW5lbm8pOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGhvbGQgPSBQeUxvbmdfQXNMb25nKHYpOwpAQCAtMTM3Miw3ICsxNTEzLDcgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICpsaW5lbm8gPSAoaW50KWhvbGQ7CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJvZmZzZXQiKTsKKyAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX29mZnNldCk7CiAgICAgaWYgKCF2KQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgaWYgKHYgPT0gUHlfTm9uZSkgewpAQCAtMTM4Niw3ICsxNTI3LDcgQEAKICAgICAgICAgKm9mZnNldCA9IChpbnQpaG9sZDsKICAgICB9CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJ0ZXh0Iik7CisgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF90ZXh0KTsKICAgICBpZiAoIXYpCiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBpZiAodiA9PSBQeV9Ob25lKSB7CkBAIC0xNDYwLDcgKzE2MDEsOCBAQAogICAgICAgICBnb3RvIGRvbmU7CiAgICAgaWYgKFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIC8qIFRoZSBlcnJvciBjb2RlIHNob3VsZCBiZSBpbiB0aGUgYGNvZGUnIGF0dHJpYnV0ZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKmNvZGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHZhbHVlLCAiY29kZSIpOworICAgICAgICBfUHlfSURFTlRJRklFUihjb2RlKTsKKyAgICAgICAgUHlPYmplY3QgKmNvZGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHZhbHVlLCAmUHlJZF9jb2RlKTsKICAgICAgICAgaWYgKGNvZGUpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICB2YWx1ZSA9IGNvZGU7CkBAIC0xNTY3LDYgKzE3MDksNyBAQAogewogICAgIGludCBlcnIgPSAwOwogICAgIFB5T2JqZWN0ICp0eXBlLCAqdGI7CisgICAgX1B5X0lERU5USUZJRVIocHJpbnRfZmlsZV9hbmRfbGluZSk7CiAKICAgICBpZiAoIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RmlsZV9Xcml0ZVN0cmluZygiVHlwZUVycm9yOiBwcmludF9leGNlcHRpb24oKTogRXhjZXB0aW9uIGV4cGVjdGVkIGZvciB2YWx1ZSwgIiwgZik7CkBAIC0xNTgyLDcgKzE3MjUsNyBAQAogICAgIGlmICh0YiAmJiB0YiAhPSBQeV9Ob25lKQogICAgICAgICBlcnIgPSBQeVRyYWNlQmFja19QcmludCh0YiwgZik7CiAgICAgaWYgKGVyciA9PSAwICYmCi0gICAgICAgIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcodmFsdWUsICJwcmludF9maWxlX2FuZF9saW5lIikpCisgICAgICAgIF9QeU9iamVjdF9IYXNBdHRySWQodmFsdWUsICZQeUlkX3ByaW50X2ZpbGVfYW5kX2xpbmUpKQogICAgIHsKICAgICAgICAgUHlPYmplY3QgKm1lc3NhZ2U7CiAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCAqdGV4dDsKQEAgLTE2MTcsNiArMTc2MCw3IEBACiAgICAgZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0KiBtb2R1bGVOYW1lOwogICAgICAgICBjaGFyKiBjbGFzc05hbWU7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOwogICAgICAgICBhc3NlcnQoUHlFeGNlcHRpb25DbGFzc19DaGVjayh0eXBlKSk7CiAgICAgICAgIGNsYXNzTmFtZSA9IFB5RXhjZXB0aW9uQ2xhc3NfTmFtZSh0eXBlKTsKICAgICAgICAgaWYgKGNsYXNzTmFtZSAhPSBOVUxMKSB7CkBAIC0xNjI1LDEwICsxNzY5LDEwIEBACiAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gZG90KzE7CiAgICAgICAgIH0KIAotICAgICAgICBtb2R1bGVOYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0eXBlLCAiX19tb2R1bGVfXyIpOworICAgICAgICBtb2R1bGVOYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0eXBlLCAmUHlJZF9fX21vZHVsZV9fKTsKICAgICAgICAgaWYgKG1vZHVsZU5hbWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKG1vZHVsZU5hbWUpKQogICAgICAgICB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobW9kdWxlTmFtZSk7CisgICAgICAgICAgICBQeV9YREVDUkVGKG1vZHVsZU5hbWUpOwogICAgICAgICAgICAgZXJyID0gUHlGaWxlX1dyaXRlU3RyaW5nKCI8dW5rbm93bj4iLCBmKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE2NTUsNyArMTc5OSw3IEBACiAgICAgICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgICAgICBlcnIgPSAtMTsKICAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhzKSB8fAotICAgICAgICAgICAgUHlVbmljb2RlX0dldFNpemUocykgIT0gMCkKKyAgICAgICAgICAgIFB5VW5pY29kZV9HZXRMZW5ndGgocykgIT0gMCkKICAgICAgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZVN0cmluZygiOiAiLCBmKTsKICAgICAgICAgaWYgKGVyciA9PSAwKQogICAgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZU9iamVjdChzLCBmLCBQeV9QUklOVF9SQVcpOwpAQCAtMTcwMyw3ICsxODQ3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXNlX21lc3NhZ2UsIGYpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQgJiYKKyAgICAgICAgICAgICAgICAhKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKil2YWx1ZSktPnN1cHByZXNzX2NvbnRleHQpIHsKICAgICAgICAgICAgICAgICByZXMgPSBQeVNldF9Db250YWlucyhzZWVuLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAocmVzID09IC0xKQogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTc5MiwxMyArMTkzNywxNCBAQAogewogICAgIFB5T2JqZWN0ICpmLCAqcjsKICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOworICAgIF9QeV9JREVOVElGSUVSKGZsdXNoKTsKIAogICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uICovCiAgICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRyYWNlYmFjayk7CiAKICAgICBmID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKICAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJmbHVzaCIsICIiKTsKKyAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7CiAgICAgICAgIGVsc2UKQEAgLTE4MDYsNyArMTk1Miw3IEBACiAgICAgfQogICAgIGYgPSBQeVN5c19HZXRPYmplY3QoInN0ZG91dCIpOwogICAgIGlmIChmICE9IE5VTEwpIHsKLSAgICAgICAgciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgImZsdXNoIiwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtMTg0NSw2ICsxOTkxLDggQEAKICAgICAgICAgICAgICAgICAgICAiQmFkIG1hZ2ljIG51bWJlciBpbiAucHljIGZpbGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIC8qIFNraXAgbXRpbWUgYW5kIHNpemUgKi8KKyAgICAodm9pZCkgUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwogICAgICh2b2lkKSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7CiAgICAgdiA9IFB5TWFyc2hhbF9SZWFkTGFzdE9iamVjdEZyb21GaWxlKGZwKTsKICAgICBmY2xvc2UoZnApOwpAQCAtMTkzNywxMiArMjA4NSwxMyBAQAogICAgICAgICBmbGFncy0+Y2ZfZmxhZ3MgfD0gaWZsYWdzICYgUHlDRl9NQVNLOwogICAgICAgICBtb2QgPSBQeUFTVF9Gcm9tTm9kZShuLCBmbGFncywgZmlsZW5hbWUsIGFyZW5hKTsKICAgICAgICAgUHlOb2RlX0ZyZWUobik7Ci0gICAgICAgIHJldHVybiBtb2Q7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBlcnJfaW5wdXQoJmVycik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtb2QgPSBOVUxMOwogICAgIH0KKyAgICBlcnJfZnJlZSgmZXJyKTsKKyAgICByZXR1cm4gbW9kOwogfQogCiBtb2RfdHkKQEAgLTE5NjcsMTQgKzIxMTYsMTUgQEAKICAgICAgICAgZmxhZ3MtPmNmX2ZsYWdzIHw9IGlmbGFncyAmIFB5Q0ZfTUFTSzsKICAgICAgICAgbW9kID0gUHlBU1RfRnJvbU5vZGUobiwgZmxhZ3MsIGZpbGVuYW1lLCBhcmVuYSk7CiAgICAgICAgIFB5Tm9kZV9GcmVlKG4pOwotICAgICAgICByZXR1cm4gbW9kOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOwogICAgICAgICBpZiAoZXJyY29kZSkKICAgICAgICAgICAgICplcnJjb2RlID0gZXJyLmVycm9yOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbW9kID0gTlVMTDsKICAgICB9CisgICAgZXJyX2ZyZWUoJmVycik7CisgICAgcmV0dXJuIG1vZDsKIH0KIAogLyogU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gcGFyc2VmaWxlIC0tIHJldHVybiBub2RlIG9yIHNldCBleGNlcHRpb24gKi8KQEAgLTE5ODgsNiArMjEzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBOVUxMLCBOVUxMLCAmZXJyLCBmbGFncyk7CiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOworICAgIGVycl9mcmVlKCZlcnIpOwogCiAgICAgcmV0dXJuIG47CiB9CkBAIC0yMDAyLDYgKzIxNTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCAmZXJyLCBmbGFncyk7CiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOworICAgIGVycl9mcmVlKCZlcnIpOwogICAgIHJldHVybiBuOwogfQogCkBAIC0yMDE0LDYgKzIxNjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICZfUHlQYXJzZXJfR3JhbW1hciwgc3RhcnQsICZlcnIsIGZsYWdzKTsKICAgICBpZiAobiA9PSBOVUxMKQogICAgICAgICBlcnJfaW5wdXQoJmVycik7CisgICAgZXJyX2ZyZWUoJmVycik7CiAgICAgcmV0dXJuIG47CiB9CiAKQEAgLTIwMjcsMTEgKzIxODAsMjMgQEAKICAgIGV2ZW4gcGFyc2VyIG1vZHVsZXMuICovCiAKIHZvaWQKK1B5UGFyc2VyX0NsZWFyRXJyb3IocGVycmRldGFpbCAqZXJyKQoreworICAgIGVycl9mcmVlKGVycik7Cit9CisKK3ZvaWQKIFB5UGFyc2VyX1NldEVycm9yKHBlcnJkZXRhaWwgKmVycikKIHsKICAgICBlcnJfaW5wdXQoZXJyKTsKIH0KIAorc3RhdGljIHZvaWQKK2Vycl9mcmVlKHBlcnJkZXRhaWwgKmVycikKK3sKKyAgICBQeV9DTEVBUihlcnItPmZpbGVuYW1lKTsKK30KKwogLyogU2V0IHRoZSBlcnJvciBhcHByb3ByaWF0ZSB0byB0aGUgZ2l2ZW4gaW5wdXQgZXJyb3IgY29kZSAoc2VlIGVycmNvZGUuaCkgKi8KIAogc3RhdGljIHZvaWQKQEAgLTIwMzksNyArMjIwNCw2IEBACiB7CiAgICAgUHlPYmplY3QgKnYsICp3LCAqZXJydHlwZSwgKmVycnRleHQ7CiAgICAgUHlPYmplY3QgKm1zZ19vYmogPSBOVUxMOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICBjaGFyICptc2cgPSBOVUxMOwogCiAgICAgZXJydHlwZSA9IFB5RXhjX1N5bnRheEVycm9yOwpAQCAtMjExMSw2ICsyMjc1LDkgQEAKICAgICBjYXNlIEVfSURFTlRJRklFUjoKICAgICAgICAgbXNnID0gImludmFsaWQgY2hhcmFjdGVyIGluIGlkZW50aWZpZXIiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEVfQkFEU0lOR0xFOgorICAgICAgICBtc2cgPSAibXVsdGlwbGUgc3RhdGVtZW50cyBmb3VuZCB3aGlsZSBjb21waWxpbmcgYSBzaW5nbGUgc3RhdGVtZW50IjsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlcnJvcj0lZFxuIiwgZXJyLT5lcnJvcik7CiAgICAgICAgIG1zZyA9ICJ1bmtub3duIHBhcnNpbmcgZXJyb3IiOwpAQCAtMjEyNSwxNyArMjI5Miw4IEBACiAgICAgICAgIGVycnRleHQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChlcnItPnRleHQsIHN0cmxlbihlcnItPnRleHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2UiKTsKICAgICB9Ci0gICAgaWYgKGVyci0+ZmlsZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGVyci0+ZmlsZW5hbWUpOwotICAgIGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIGZpbGVuYW1lID0gUHlfTm9uZTsKLSAgICB9Ci0gICAgaWYgKGZpbGVuYW1lICE9IE5VTEwpCi0gICAgICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoTmlpTikiLCBmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLT5saW5lbm8sIGVyci0+b2Zmc2V0LCBlcnJ0ZXh0KTsKLSAgICBlbHNlCi0gICAgICAgIHYgPSBOVUxMOworICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoT2lpTikiLCBlcnItPmZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIGVyci0+bGluZW5vLCBlcnItPm9mZnNldCwgZXJydGV4dCk7CiAgICAgaWYgKHYgIT0gTlVMTCkgewogICAgICAgICBpZiAobXNnX29iaikKICAgICAgICAgICAgIHcgPSBQeV9CdWlsZFZhbHVlKCIoT08pIiwgbXNnX29iaiwgdik7CkBAIC0yMTU5LDExICsyMzE3LDI0IEBACiB2b2lkCiBQeV9GYXRhbEVycm9yKGNvbnN0IGNoYXIgKm1zZykKIHsKKyAgICBjb25zdCBpbnQgZmQgPSBmaWxlbm8oc3RkZXJyKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisKICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhdGFsIFB5dGhvbiBlcnJvcjogJXNcbiIsIG1zZyk7CiAgICAgZmZsdXNoKHN0ZGVycik7IC8qIGl0IGhlbHBzIGluIFdpbmRvd3MgZGVidWcgYnVpbGQgKi8KICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBQeUVycl9QcmludEV4KDApOwogICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdHN0YXRlID0gX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpOworICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgICAgICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgdHN0YXRlLT5pbnRlcnAsIHRzdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgX1B5RmF1bHRoYW5kbGVyX0ZpbmkoKTsKKyAgICB9CisKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgewogICAgICAgICBzaXplX3QgbGVuID0gc3RybGVuKG1zZyk7CkBAIC0yMjE4LDYgKzIzODksNyBAQAogd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKHZvaWQpCiB7CiAjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBfUHlfSURFTlRJRklFUihfc2h1dGRvd24pOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICBQeU9iamVjdCAqdGhyZWFkaW5nID0gUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcodHN0YXRlLT5pbnRlcnAtPm1vZHVsZXMsCkBAIC0yMjI3LDcgKzIzOTksNyBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGhyZWFkaW5nLCAiX3NodXRkb3duIiwgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sICIiKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHRocmVhZGluZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGltZS5jIGIvUHl0aG9uL3B5dGltZS5jCmluZGV4IDZmYjc2OTUuLmJlZWFiODcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRpbWUuYworKysgYi9QeXRob24vcHl0aW1lLmMKQEAgLTEsNyArMSw5IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgogCi0jaWZkZWYgX19BUFBMRV9fCi0jaWYgZGVmaW5lZChIQVZFX0dFVFRJTUVPRkRBWSkgJiYgZGVmaW5lZChIQVZFX0ZUSU1FKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKEhBVkVfR0VUVElNRU9GREFZKSAmJiBkZWZpbmVkKEhBVkVfRlRJTUUpCiAgIC8qCiAgICAqIF9QeVRpbWVfZ2V0dGltZW9mZGF5IGZhbGxzIGJhY2sgdG8gZnRpbWUgd2hlbiBnZXR0dGltZW9mZGF5IGZhaWxzIGJlY2F1c2UgdGhlIGxhdHRlcgogICAgKiBtaWdodCBmYWlsIG9uIHNvbWUgcGxhdGZvcm1zLiBUaGlzIGZhbGxiYWNrIGlzIHVud2FudGVkIG9uIE1hY09TWCBiZWNhdXNlCkBAIC0xMCwxOCArMTIsNDEgQEAKICAgICovCiAjIHVuZGVmIEhBVkVfRlRJTUUKICNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX0ZUSU1FKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKQorI2luY2x1ZGUgPHN5cy90aW1lYi5oPgorZXh0ZXJuIGludCBmdGltZShzdHJ1Y3QgdGltZWIgKik7CiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfRlRJTUUKLSNpbmNsdWRlIDxzeXMvdGltZWIuaD4KLSNpZiAhZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChQWU9TX09TMikKLWV4dGVybiBpbnQgZnRpbWUoc3RydWN0IHRpbWViICopOwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLSNlbmRpZiAvKiBIQVZFX0ZUSU1FICovCi0KLXZvaWQKLV9QeVRpbWVfZ2V0dGltZW9mZGF5KF9QeVRpbWVfdGltZXZhbCAqdHApCitzdGF0aWMgdm9pZAorcHlnZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgRklMRVRJTUUgc3lzdGVtX3RpbWU7CisgICAgVUxBUkdFX0lOVEVHRVIgbGFyZ2U7CisgICAgVUxPTkdMT05HIG1pY3Jvc2Vjb25kczsKKworICAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZzeXN0ZW1fdGltZSk7CisgICAgbGFyZ2UudS5Mb3dQYXJ0ID0gc3lzdGVtX3RpbWUuZHdMb3dEYXRlVGltZTsKKyAgICBsYXJnZS51LkhpZ2hQYXJ0ID0gc3lzdGVtX3RpbWUuZHdIaWdoRGF0ZVRpbWU7CisgICAgLyogMTEsNjQ0LDQ3Myw2MDAsMDAwLDAwMDogbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBiZXR3ZWVuCisgICAgICAgdGhlIDFzdCBqYW51YXJ5IDE2MDEgYW5kIHRoZSAxc3QgamFudWFyeSAxOTcwICgzNjkgeWVhcnMgKyA4OSBsZWFwCisgICAgICAgZGF5cykuICovCisgICAgbWljcm9zZWNvbmRzID0gbGFyZ2UuUXVhZFBhcnQgLyAxMCAtIDExNjQ0NDczNjAwMDAwMDAwOworICAgIHRwLT50dl9zZWMgPSBtaWNyb3NlY29uZHMgLyAxMDAwMDAwOworICAgIHRwLT50dl91c2VjID0gbWljcm9zZWNvbmRzICUgMTAwMDAwMDsKKyAgICBpZiAoaW5mbykgeworICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKKyAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQ7CisKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoKSI7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgICh2b2lkKSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCgmdGltZUFkanVzdG1lbnQsICZ0aW1lSW5jcmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgfQorI2Vsc2UKICAgICAvKiBUaGVyZSBhcmUgdGhyZWUgd2F5cyB0byBnZXQgdGhlIHRpbWU6CiAgICAgICAoMSkgZ2V0dGltZW9mZGF5KCkgLS0gcmVzb2x1dGlvbiBpbiBtaWNyb3NlY29uZHMKICAgICAgICgyKSBmdGltZSgpIC0tIHJlc29sdXRpb24gaW4gbWlsbGlzZWNvbmRzCkBAIC0zMCwyNyArNTUsMTczIEBACiAgICAgICBTaW5jZSBvbiBzb21lIHN5c3RlbXMgKGUuZy4gU0NPIE9EVCAzLjApIGdldHRpbWVvZmRheSgpIG1heQogICAgICAgZmFpbCwgc28gd2UgZmFsbCBiYWNrIG9uIGZ0aW1lKCkgb3IgdGltZSgpLgogICAgICAgTm90ZTogY2xvY2sgcmVzb2x1dGlvbiBkb2VzIG5vdCBpbXBseSBjbG9jayBhY2N1cmFjeSEgKi8KKwogI2lmZGVmIEhBVkVfR0VUVElNRU9GREFZCisgICAgaW50IGVycjsKICNpZmRlZiBHRVRUSU1FT0ZEQVlfTk9fVFoKLSAgICBpZiAoZ2V0dGltZW9mZGF5KHRwKSA9PSAwKQorICAgIGVyciA9IGdldHRpbWVvZmRheSh0cCk7CisjZWxzZQorICAgIGVyciA9IGdldHRpbWVvZmRheSh0cCwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpOworI2VuZGlmCisgICAgaWYgKGVyciA9PSAwKSB7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJnZXR0aW1lb2ZkYXkoKSI7CisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNjsKKyAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47Ci0jZWxzZSAvKiAhR0VUVElNRU9GREFZX05PX1RaICovCi0gICAgaWYgKGdldHRpbWVvZmRheSh0cCwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpID09IDApCi0gICAgICAgIHJldHVybjsKLSNlbmRpZiAvKiAhR0VUVElNRU9GREFZX05PX1RaICovCi0jZW5kaWYgLyogIUhBVkVfR0VUVElNRU9GREFZICovCisgICAgfQorI2VuZGlmICAgLyogSEFWRV9HRVRUSU1FT0ZEQVkgKi8KKwogI2lmIGRlZmluZWQoSEFWRV9GVElNRSkKICAgICB7CiAgICAgICAgIHN0cnVjdCB0aW1lYiB0OwogICAgICAgICBmdGltZSgmdCk7CiAgICAgICAgIHRwLT50dl9zZWMgPSB0LnRpbWU7CiAgICAgICAgIHRwLT50dl91c2VjID0gdC5taWxsaXRtICogMTAwMDsKKyAgICAgICAgaWYgKGluZm8pIHsKKyAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImZ0aW1lKCkiOworICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTM7CisgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgICAgIH0KICAgICB9CiAjZWxzZSAvKiAhSEFWRV9GVElNRSAqLwogICAgIHRwLT50dl9zZWMgPSB0aW1lKE5VTEwpOwogICAgIHRwLT50dl91c2VjID0gMDsKKyAgICBpZiAoaW5mbykgeworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJ0aW1lKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMS4wOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICB9CiAjZW5kaWYgLyogIUhBVkVfRlRJTUUgKi8KLSAgICByZXR1cm47CisKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCit9CisKK3ZvaWQKK19QeVRpbWVfZ2V0dGltZW9mZGF5KF9QeVRpbWVfdGltZXZhbCAqdHApCit7CisgICAgcHlnZXR0aW1lb2ZkYXkodHAsIE5VTEwpOworfQorCit2b2lkCitfUHlUaW1lX2dldHRpbWVvZmRheV9pbmZvKF9QeVRpbWVfdGltZXZhbCAqdHAsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisgICAgcHlnZXR0aW1lb2ZkYXkodHAsIGluZm8pOworfQorCitzdGF0aWMgdm9pZAorZXJyb3JfdGltZV90X292ZXJmbG93KHZvaWQpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciBwbGF0Zm9ybSB0aW1lX3QiKTsKK30KKwordGltZV90CitfUHlMb25nX0FzVGltZV90KFB5T2JqZWN0ICpvYmopCit7CisjaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgUFlfTE9OR19MT05HIHZhbDsKKyAgICB2YWwgPSBQeUxvbmdfQXNMb25nTG9uZyhvYmopOworI2Vsc2UKKyAgICBsb25nIHZhbDsKKyAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICB2YWwgPSBQeUxvbmdfQXNMb25nKG9iaik7CisjZW5kaWYKKyAgICBpZiAodmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gKHRpbWVfdCl2YWw7Cit9CisKK1B5T2JqZWN0ICoKK19QeUxvbmdfRnJvbVRpbWVfdCh0aW1lX3QgdCkKK3sKKyNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKSAmJiBTSVpFT0ZfVElNRV9UID09IFNJWkVPRl9MT05HX0xPTkcKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXQpOworI2Vsc2UKKyAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKK19QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqbnVtZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZW5vbWluYXRvcikKK3sKKyAgICBhc3NlcnQoZGVub21pbmF0b3IgPD0gTE9OR19NQVgpOworICAgIGlmIChQeUZsb2F0X0NoZWNrKG9iaikpIHsKKyAgICAgICAgZG91YmxlIGQsIGludHBhcnQsIGVycjsKKyAgICAgICAgLyogdm9sYXRpbGUgYXZvaWRzIHVuc2FmZSBvcHRpbWl6YXRpb24gb24gZmxvYXQgZW5hYmxlZCBieSBnY2MgLU8zICovCisgICAgICAgIHZvbGF0aWxlIGRvdWJsZSBmbG9hdHBhcnQ7CisKKyAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKKyAgICAgICAgZmxvYXRwYXJ0ID0gbW9kZihkLCAmaW50cGFydCk7CisgICAgICAgIGlmIChmbG9hdHBhcnQgPCAwKSB7CisgICAgICAgICAgICBmbG9hdHBhcnQgPSAxLjAgKyBmbG9hdHBhcnQ7CisgICAgICAgICAgICBpbnRwYXJ0IC09IDEuMDsKKyAgICAgICAgfQorCisgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CisgICAgICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7CisgICAgICAgIGlmIChlcnIgPD0gLTEuMCB8fCBlcnIgPj0gMS4wKSB7CisgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGZsb2F0cGFydCAqPSBkZW5vbWluYXRvcjsKKyAgICAgICAgKm51bWVyYXRvciA9IChsb25nKWZsb2F0cGFydDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAqc2VjID0gX1B5TG9uZ19Bc1RpbWVfdChvYmopOworICAgICAgICBpZiAoKnNlYyA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICpudW1lcmF0b3IgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2ludAorX1B5VGltZV9PYmplY3RUb1RpbWVfdChQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYykKK3sKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7CisgICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7CisKKyAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKKyAgICAgICAgKHZvaWQpbW9kZihkLCAmaW50cGFydCk7CisKKyAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKKyAgICAgICAgZXJyID0gaW50cGFydCAtIChkb3VibGUpKnNlYzsKKyAgICAgICAgaWYgKGVyciA8PSAtMS4wIHx8IGVyciA+PSAxLjApIHsKKyAgICAgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgKnNlYyA9IF9QeUxvbmdfQXNUaW1lX3Qob2JqKTsKKyAgICAgICAgaWYgKCpzZWMgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2ludAorX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICpuc2VjKQoreworICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIG5zZWMsIDFlOSk7Cit9CisKK2ludAorX1B5VGltZV9PYmplY3RUb1RpbWV2YWwoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKnVzZWMpCit7CisgICAgcmV0dXJuIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgdXNlYywgMWU2KTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvUHl0aG9uL3JhbmRvbS5jIGIvUHl0aG9uL3JhbmRvbS5jCmluZGV4IGEyYWUwMDIuLjcwMTlhMzUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9yYW5kb20uYworKysgYi9QeXRob24vcmFuZG9tLmMKQEAgLTI1NywxNyArMjU3LDYgQEAKICAgICBfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCA9IDE7CiAKICAgICAvKgotICAgICAgQnkgZGVmYXVsdCwgaGFzaCByYW5kb21pemF0aW9uIGlzIGRpc2FibGVkLCBhbmQgb25seQotICAgICAgZW5hYmxlZCBpZiBQWVRIT05IQVNIU0VFRCBpcyBzZXQgdG8gbm9uLWVtcHR5IG9yIGlmCi0gICAgICAiLVIiIGlzIHByb3ZpZGVkIGF0IHRoZSBjb21tYW5kIGxpbmU6Ci0gICAgKi8KLSAgICBpZiAoIVB5X0hhc2hSYW5kb21pemF0aW9uRmxhZykgewotICAgICAgICAvKiBEaXNhYmxlIHRoZSByYW5kb21pemVkIGhhc2g6ICovCi0gICAgICAgIG1lbXNldChzZWNyZXQsIDAsIHNlY3JldF9zaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8qCiAgICAgICBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZC4gIEdlbmVyYXRlIGEgcGVyLXByb2Nlc3Mgc2VjcmV0LAogICAgICAgdXNpbmcgUFlUSE9OSEFTSFNFRUQgaWYgcHJvdmlkZWQuCiAgICAgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9zeW10YWJsZS5jIGIvUHl0aG9uL3N5bXRhYmxlLmMKaW5kZXggMWVjNTFmNy4uYTBiNzg2YiAxMDA2NDQKLS0tIGEvUHl0aG9uL3N5bXRhYmxlLmMKKysrIGIvUHl0aG9uL3N5bXRhYmxlLmMKQEAgLTE5LDEwICsxOSw2IEBACiAKICNkZWZpbmUgSU1QT1JUX1NUQVJfV0FSTklORyAiaW1wb3J0ICogb25seSBhbGxvd2VkIGF0IG1vZHVsZSBsZXZlbCIKIAotI2RlZmluZSBSRVRVUk5fVkFMX0lOX0dFTkVSQVRPUiBcCi0gICAgIidyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvciIKLQotCiBzdGF0aWMgUHlTVEVudHJ5T2JqZWN0ICoKIHN0ZV9uZXcoc3RydWN0IHN5bXRhYmxlICpzdCwgaWRlbnRpZmllciBuYW1lLCBfUHlfYmxvY2tfdHkgYmxvY2ssCiAgICAgICAgIHZvaWQgKmtleSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCkBAIC0xODUsNiArMTgxLDcgQEAKIHN0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfYXJnYW5ub3RhdGlvbnMoc3RydWN0IHN5bXRhYmxlICpzdCwgYXNkbF9zZXEgKmFyZ3MpOwogc3RhdGljIGludCBzeW10YWJsZV9pbXBsaWNpdF9hcmcoc3RydWN0IHN5bXRhYmxlICpzdCwgaW50IHBvcyk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0cnVjdCBzeW10YWJsZSAqc3QsIHN0bXRfdHkgcyk7CitzdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X3dpdGhpdGVtKHN0cnVjdCBzeW10YWJsZSAqc3QsIHdpdGhpdGVtX3R5IGl0ZW0pOwogCiAKIHN0YXRpYyBpZGVudGlmaWVyIHRvcCA9IE5VTEwsIGxhbWJkYSA9IE5VTEwsIGdlbmV4cHIgPSBOVUxMLApAQCAtNzUwLDcgKzc0Nyw3IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIC8qIFJlY3Vyc2l2ZWx5IGNhbGwgYW5hbHl6ZV9ibG9jaygpIG9uIGVhY2ggY2hpbGQgYmxvY2suCisgICAgLyogUmVjdXJzaXZlbHkgY2FsbCBhbmFseXplX2NoaWxkX2Jsb2NrKCkgb24gZWFjaCBjaGlsZCBibG9jay4KIAogICAgICAgIG5ld2JvdW5kLCBuZXdnbG9iYWwgbm93IGNvbnRhaW4gdGhlIG5hbWVzIHZpc2libGUgaW4KICAgICAgICBuZXN0ZWQgYmxvY2tzLiAgVGhlIGZyZWUgdmFyaWFibGVzIGluIHRoZSBjaGlsZHJlbiB3aWxsCkBAIC04OTMsMTggKzg5MCwxNSBAQAogc3RhdGljIGludAogc3ltdGFibGVfZXhpdF9ibG9jayhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCB2b2lkICphc3QpCiB7Ci0gICAgUHlfc3NpemVfdCBlbmQ7CisgICAgUHlfc3NpemVfdCBzaXplOwogCi0gICAgUHlfQ0xFQVIoc3QtPnN0X2N1cik7Ci0gICAgZW5kID0gUHlMaXN0X0dFVF9TSVpFKHN0LT5zdF9zdGFjaykgLSAxOwotICAgIGlmIChlbmQgPj0gMCkgewotICAgICAgICBzdC0+c3RfY3VyID0gKFB5U1RFbnRyeU9iamVjdCAqKVB5TGlzdF9HRVRfSVRFTShzdC0+c3Rfc3RhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCk7Ci0gICAgICAgIGlmIChzdC0+c3RfY3VyID09IE5VTEwpCisgICAgc3QtPnN0X2N1ciA9IE5VTEw7CisgICAgc2l6ZSA9IFB5TGlzdF9HRVRfU0laRShzdC0+c3Rfc3RhY2spOworICAgIGlmIChzaXplKSB7CisgICAgICAgIGlmIChQeUxpc3RfU2V0U2xpY2Uoc3QtPnN0X3N0YWNrLCBzaXplIC0gMSwgc2l6ZSwgTlVMTCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIFB5X0lOQ1JFRihzdC0+c3RfY3VyKTsKLSAgICAgICAgaWYgKFB5U2VxdWVuY2VfRGVsSXRlbShzdC0+c3Rfc3RhY2ssIGVuZCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICgtLXNpemUpCisgICAgICAgICAgICBzdC0+c3RfY3VyID0gKFB5U1RFbnRyeU9iamVjdCAqKVB5TGlzdF9HRVRfSVRFTShzdC0+c3Rfc3RhY2ssIHNpemUgLSAxKTsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC05MTMsMjMgKzkwNywyMyBAQAogc3ltdGFibGVfZW50ZXJfYmxvY2soc3RydWN0IHN5bXRhYmxlICpzdCwgaWRlbnRpZmllciBuYW1lLCBfUHlfYmxvY2tfdHkgYmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICB2b2lkICphc3QsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogewotICAgIFB5U1RFbnRyeU9iamVjdCAqcHJldiA9IE5VTEw7CisgICAgUHlTVEVudHJ5T2JqZWN0ICpwcmV2ID0gTlVMTCwgKnN0ZTsKIAotICAgIGlmIChzdC0+c3RfY3VyKSB7Ci0gICAgICAgIHByZXYgPSBzdC0+c3RfY3VyOwotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChzdC0+c3Rfc3RhY2ssIChQeU9iamVjdCAqKXN0LT5zdF9jdXIpIDwgMCkgewotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHN0LT5zdF9jdXIpOwotICAgIH0KLSAgICBzdC0+c3RfY3VyID0gc3RlX25ldyhzdCwgbmFtZSwgYmxvY2ssIGFzdCwgbGluZW5vLCBjb2xfb2Zmc2V0KTsKLSAgICBpZiAoc3QtPnN0X2N1ciA9PSBOVUxMKQorICAgIHN0ZSA9IHN0ZV9uZXcoc3QsIG5hbWUsIGJsb2NrLCBhc3QsIGxpbmVubywgY29sX29mZnNldCk7CisgICAgaWYgKHN0ZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoUHlMaXN0X0FwcGVuZChzdC0+c3Rfc3RhY2ssIChQeU9iamVjdCAqKXN0ZSkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdGUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcHJldiA9IHN0LT5zdF9jdXI7CisgICAgLyogVGhlIGVudHJ5IGlzIG93bmVkIGJ5IHRoZSBzdGFjay4gQm9ycm93IGl0IGZvciBzdF9jdXIuICovCisgICAgUHlfREVDUkVGKHN0ZSk7CisgICAgc3QtPnN0X2N1ciA9IHN0ZTsKICAgICBpZiAoYmxvY2sgPT0gTW9kdWxlQmxvY2spCiAgICAgICAgIHN0LT5zdF9nbG9iYWwgPSBzdC0+c3RfY3VyLT5zdGVfc3ltYm9sczsKICAgICBpZiAocHJldikgewotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChwcmV2LT5zdGVfY2hpbGRyZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKXN0LT5zdF9jdXIpIDwgMCkgeworICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChwcmV2LT5zdGVfY2hpbGRyZW4sIChQeU9iamVjdCAqKXN0ZSkgPCAwKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KQEAgLTEwMjMsMTIgKzEwMTcsNiBAQAogICAgIGlmICghc3ltdGFibGVfdmlzaXRfICMjIFRZUEUoKFNUKSwgKFYpKSkgXAogICAgICAgICByZXR1cm4gMDsKIAotI2RlZmluZSBWSVNJVF9JTl9CTE9DSyhTVCwgVFlQRSwgViwgUykgXAotICAgIGlmICghc3ltdGFibGVfdmlzaXRfICMjIFRZUEUoKFNUKSwgKFYpKSkgeyBcCi0gICAgICAgIHN5bXRhYmxlX2V4aXRfYmxvY2soKFNUKSwgKFMpKTsgXAotICAgICAgICByZXR1cm4gMDsgXAotICAgIH0KLQogI2RlZmluZSBWSVNJVF9TRVEoU1QsIFRZUEUsIFNFUSkgeyBcCiAgICAgaW50IGk7IFwKICAgICBhc2RsX3NlcSAqc2VxID0gKFNFUSk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXApAQCAtMTAzOSwxOCArMTAyNyw2IEBACiAgICAgfSBcCiB9CiAKLSNkZWZpbmUgVklTSVRfU0VRX0lOX0JMT0NLKFNULCBUWVBFLCBTRVEsIFMpIHsgXAotICAgIGludCBpOyBcCi0gICAgYXNkbF9zZXEgKnNlcSA9IChTRVEpOyAvKiBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlICovIFwKLSAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHNlcSk7IGkrKykgeyBcCi0gICAgICAgIFRZUEUgIyMgX3R5IGVsdCA9IChUWVBFICMjIF90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAotICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIGVsdCkpIHsgXAotICAgICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jaygoU1QpLCAoUykpOyBcCi0gICAgICAgICAgICByZXR1cm4gMDsgXAotICAgICAgICB9IFwKLSAgICB9IFwKLX0KLQogI2RlZmluZSBWSVNJVF9TRVFfVEFJTChTVCwgVFlQRSwgU0VRLCBTVEFSVCkgeyBcCiAgICAgaW50IGk7IFwKICAgICBhc2RsX3NlcSAqc2VxID0gKFNFUSk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXApAQCAtMTA2MSwxOCArMTAzNyw2IEBACiAgICAgfSBcCiB9CiAKLSNkZWZpbmUgVklTSVRfU0VRX1RBSUxfSU5fQkxPQ0soU1QsIFRZUEUsIFNFUSwgU1RBUlQsIFMpIHsgXAotICAgIGludCBpOyBcCi0gICAgYXNkbF9zZXEgKnNlcSA9IChTRVEpOyAvKiBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlICovIFwKLSAgICBmb3IgKGkgPSAoU1RBUlQpOyBpIDwgYXNkbF9zZXFfTEVOKHNlcSk7IGkrKykgeyBcCi0gICAgICAgIFRZUEUgIyMgX3R5IGVsdCA9IChUWVBFICMjIF90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAotICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIGVsdCkpIHsgXAotICAgICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jaygoU1QpLCAoUykpOyBcCi0gICAgICAgICAgICByZXR1cm4gMDsgXAotICAgICAgICB9IFwKLSAgICB9IFwKLX0KLQogI2RlZmluZSBWSVNJVF9LV09OTFlERUZBVUxUUyhTVCwgS1dfREVGQVVMVFMpIHsgXAogICAgIGludCBpID0gMDsgXAogICAgIGFzZGxfc2VxICpzZXEgPSAoS1dfREVGQVVMVFMpOyAvKiBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlICovIFwKQEAgLTExMjIsOCArMTA4Niw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25CbG9jaywgKHZvaWQgKilzLCBzLT5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgVklTSVRfSU5fQkxPQ0soc3QsIGFyZ3VtZW50cywgcy0+di5GdW5jdGlvbkRlZi5hcmdzLCBzKTsKLSAgICAgICAgVklTSVRfU0VRX0lOX0JMT0NLKHN0LCBzdG10LCBzLT52LkZ1bmN0aW9uRGVmLmJvZHksIHMpOworICAgICAgICBWSVNJVChzdCwgYXJndW1lbnRzLCBzLT52LkZ1bmN0aW9uRGVmLmFyZ3MpOworICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuRnVuY3Rpb25EZWYuYm9keSk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgcykpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgYnJlYWs7CkBAIC0xMTUxLDcgKzExMTUsNyBAQAogICAgICAgICB9CiAgICAgICAgIHRtcCA9IHN0LT5zdF9wcml2YXRlOwogICAgICAgICBzdC0+c3RfcHJpdmF0ZSA9IHMtPnYuQ2xhc3NEZWYubmFtZTsKLSAgICAgICAgVklTSVRfU0VRX0lOX0JMT0NLKHN0LCBzdG10LCBzLT52LkNsYXNzRGVmLmJvZHksIHMpOworICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuQ2xhc3NEZWYuYm9keSk7CiAgICAgICAgIHN0LT5zdF9wcml2YXRlID0gdG1wOwogICAgICAgICBpZiAoIXN5bXRhYmxlX2V4aXRfYmxvY2soc3QsIHMpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMTYxLDE0ICsxMTI1LDYgQEAKICAgICAgICAgaWYgKHMtPnYuUmV0dXJuLnZhbHVlKSB7CiAgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5SZXR1cm4udmFsdWUpOwogICAgICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX3JldHVybnNfdmFsdWUgPSAxOwotICAgICAgICAgICAgaWYgKHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3ludGF4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIFJFVFVSTl9WQUxfSU5fR0VORVJBVE9SKTsKLSAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbkV4KHN0LT5zdF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGVsZXRlX2tpbmQ6CkBAIC0xMjA1LDE5ICsxMTYxLDE2IEBACiAgICAgY2FzZSBSYWlzZV9raW5kOgogICAgICAgICBpZiAocy0+di5SYWlzZS5leGMpIHsKICAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LlJhaXNlLmV4Yyk7Ci0gICAgICAgIGlmIChzLT52LlJhaXNlLmNhdXNlKSB7Ci0gICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LlJhaXNlLmNhdXNlKTsKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKHMtPnYuUmFpc2UuY2F1c2UpIHsKKyAgICAgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5SYWlzZS5jYXVzZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUcnlFeGNlcHRfa2luZDoKLSAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeUV4Y2VwdC5ib2R5KTsKLSAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeUV4Y2VwdC5vcmVsc2UpOwotICAgICAgICBWSVNJVF9TRVEoc3QsIGV4Y2VwdGhhbmRsZXIsIHMtPnYuVHJ5RXhjZXB0LmhhbmRsZXJzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUcnlGaW5hbGx5X2tpbmQ6Ci0gICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5UcnlGaW5hbGx5LmJvZHkpOwotICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5RmluYWxseS5maW5hbGJvZHkpOworICAgIGNhc2UgVHJ5X2tpbmQ6CisgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5UcnkuYm9keSk7CisgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5Ucnkub3JlbHNlKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBleGNlcHRoYW5kbGVyLCBzLT52LlRyeS5oYW5kbGVycyk7CisgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5UcnkuZmluYWxib2R5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBc3NlcnRfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQXNzZXJ0LnRlc3QpOwpAQCAtMTMwNSwxMCArMTI1OCw3IEBACiAgICAgICAgIC8qIG5vdGhpbmcgdG8gZG8gaGVyZSAqLwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdpdGhfa2luZDoKLSAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuV2l0aC5jb250ZXh0X2V4cHIpOwotICAgICAgICBpZiAocy0+di5XaXRoLm9wdGlvbmFsX3ZhcnMpIHsKLSAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LldpdGgub3B0aW9uYWxfdmFycyk7Ci0gICAgICAgIH0KKyAgICAgICAgVklTSVRfU0VRKHN0LCB3aXRoaXRlbSwgcy0+di5XaXRoLml0ZW1zKTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LldpdGguYm9keSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNDEsOCArMTI5MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25CbG9jaywgKHZvaWQgKillLCBlLT5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+Y29sX29mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgVklTSVRfSU5fQkxPQ0soc3QsIGFyZ3VtZW50cywgZS0+di5MYW1iZGEuYXJncywgKHZvaWQqKWUpOwotICAgICAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgZS0+di5MYW1iZGEuYm9keSwgKHZvaWQqKWUpOworICAgICAgICBWSVNJVChzdCwgYXJndW1lbnRzLCBlLT52LkxhbWJkYS5hcmdzKTsKKyAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuTGFtYmRhLmJvZHkpOwogICAgICAgICBpZiAoIXN5bXRhYmxlX2V4aXRfYmxvY2soc3QsICh2b2lkICopZSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgYnJlYWs7CkBAIC0xMzc2LDE3ICsxMzI2LDE0IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBZaWVsZF9raW5kOgotICAgICAgICBpZiAoZS0+di5ZaWVsZC52YWx1ZSkKLSAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LllpZWxkLnZhbHVlKTsKKyAgICBjYXNlIFlpZWxkRnJvbV9raW5kOiB7CisgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgIHZhbHVlID0gKGUtPmtpbmQgPT0gWWllbGRGcm9tX2tpbmQpID8gZS0+di5ZaWVsZEZyb20udmFsdWUgOiBlLT52LllpZWxkLnZhbHVlOworICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgdmFsdWUpOwogICAgICAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gMTsKLSAgICAgICAgaWYgKHN0LT5zdF9jdXItPnN0ZV9yZXR1cm5zX3ZhbHVlKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3ludGF4RXJyb3IsCi0gICAgICAgICAgICAgICAgUkVUVVJOX1ZBTF9JTl9HRU5FUkFUT1IpOwotICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25FeChzdC0+c3RfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPmxpbmVubywgZS0+Y29sX29mZnNldCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBDb21wYXJlX2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkNvbXBhcmUubGVmdCk7CiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5Db21wYXJlLmNvbXBhcmF0b3JzKTsKQEAgLTE1NDMsNiArMTQ5MCwxNiBAQAogICAgIHJldHVybiAxOwogfQogCitzdGF0aWMgaW50CitzeW10YWJsZV92aXNpdF93aXRoaXRlbShzdHJ1Y3Qgc3ltdGFibGUgKnN0LCB3aXRoaXRlbV90eSBpdGVtKQoreworICAgIFZJU0lUKHN0LCBleHByLCBpdGVtLT5jb250ZXh0X2V4cHIpOworICAgIGlmIChpdGVtLT5vcHRpb25hbF92YXJzKSB7CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBpdGVtLT5vcHRpb25hbF92YXJzKTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIAogc3RhdGljIGludAogc3ltdGFibGVfdmlzaXRfYWxpYXMoc3RydWN0IHN5bXRhYmxlICpzdCwgYWxpYXNfdHkgYSkKQEAgLTE1NTMsMTAgKzE1MTAsMTAgQEAKICAgICAqLwogICAgIFB5T2JqZWN0ICpzdG9yZV9uYW1lOwogICAgIFB5T2JqZWN0ICpuYW1lID0gKGEtPmFzbmFtZSA9PSBOVUxMKSA/IGEtPm5hbWUgOiBhLT5hc25hbWU7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqYmFzZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpOwotICAgIFB5X1VOSUNPREUgKmRvdCA9IFB5X1VOSUNPREVfc3RyY2hyKGJhc2UsICcuJyk7Ci0gICAgaWYgKGRvdCkgewotICAgICAgICBzdG9yZV9uYW1lID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGJhc2UsIGRvdCAtIGJhc2UpOworICAgIFB5X3NzaXplX3QgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKG5hbWUsICcuJywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSwgMSk7CisgICAgaWYgKGRvdCAhPSAtMSkgeworICAgICAgICBzdG9yZV9uYW1lID0gUHlVbmljb2RlX1N1YnN0cmluZyhuYW1lLCAwLCBkb3QpOwogICAgICAgICBpZiAoIXN0b3JlX25hbWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNjUzLDEzICsxNjEwLDEyIEBACiAgICAgICAgIHN5bXRhYmxlX2V4aXRfYmxvY2soc3QsICh2b2lkICopZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgb3V0ZXJtb3N0LT50YXJnZXQsICh2b2lkKillKTsKLSAgICBWSVNJVF9TRVFfSU5fQkxPQ0soc3QsIGV4cHIsIG91dGVybW9zdC0+aWZzLCAodm9pZCopZSk7Ci0gICAgVklTSVRfU0VRX1RBSUxfSU5fQkxPQ0soc3QsIGNvbXByZWhlbnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9ycywgMSwgKHZvaWQqKWUpOworICAgIFZJU0lUKHN0LCBleHByLCBvdXRlcm1vc3QtPnRhcmdldCk7CisgICAgVklTSVRfU0VRKHN0LCBleHByLCBvdXRlcm1vc3QtPmlmcyk7CisgICAgVklTSVRfU0VRX1RBSUwoc3QsIGNvbXByZWhlbnNpb24sIGdlbmVyYXRvcnMsIDEpOwogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgVklTSVRfSU5fQkxPQ0soc3QsIGV4cHIsIHZhbHVlLCAodm9pZCopZSk7Ci0gICAgVklTSVRfSU5fQkxPQ0soc3QsIGV4cHIsIGVsdCwgKHZvaWQqKWUpOworICAgICAgICBWSVNJVChzdCwgZXhwciwgdmFsdWUpOworICAgIFZJU0lUKHN0LCBleHByLCBlbHQpOwogICAgIHJldHVybiBzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCAodm9pZCAqKWUpOwogfQogCmRpZmYgLS1naXQgYS9QeXRob24vc3lzbW9kdWxlLmMgYi9QeXRob24vc3lzbW9kdWxlLmMKaW5kZXggYzRmMjdkMC4uMjBiZmE1NSAxMDA2NDQKLS0tIGEvUHl0aG9uL3N5c21vZHVsZS5jCisrKyBiL1B5dGhvbi9zeXNtb2R1bGUuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImNvZGUuaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIgorI2luY2x1ZGUgInB5dGhyZWFkLmgiCiAKICNpbmNsdWRlICJvc2RlZnMuaCIKIApAQCAtNzgsOCArNzksMTAgQEAKICAgICBQeU9iamVjdCAqZW5jb2RlZCwgKmVzY2FwZWRfc3RyLCAqcmVwcl9zdHIsICpidWZmZXIsICpyZXN1bHQ7CiAgICAgY2hhciAqc3Rkb3V0X2VuY29kaW5nX3N0cjsKICAgICBpbnQgcmV0OworICAgIF9QeV9JREVOVElGSUVSKGVuY29kaW5nKTsKKyAgICBfUHlfSURFTlRJRklFUihidWZmZXIpOwogCi0gICAgc3Rkb3V0X2VuY29kaW5nID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvdXRmLCAiZW5jb2RpbmciKTsKKyAgICBzdGRvdXRfZW5jb2RpbmcgPSBfUHlPYmplY3RfR2V0QXR0cklkKG91dGYsICZQeUlkX2VuY29kaW5nKTsKICAgICBpZiAoc3Rkb3V0X2VuY29kaW5nID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgc3Rkb3V0X2VuY29kaW5nX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3Rkb3V0X2VuY29kaW5nKTsKQEAgLTk2LDkgKzk5LDEwIEBACiAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGJ1ZmZlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob3V0ZiwgImJ1ZmZlciIpOworICAgIGJ1ZmZlciA9IF9QeU9iamVjdF9HZXRBdHRySWQob3V0ZiwgJlB5SWRfYnVmZmVyKTsKICAgICBpZiAoYnVmZmVyKSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoYnVmZmVyLCAid3JpdGUiLCAiKE8pIiwgZW5jb2RlZCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChidWZmZXIsICZQeUlkX3dyaXRlLCAiKE8pIiwgZW5jb2RlZCk7CiAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOwogICAgICAgICBQeV9ERUNSRUYoZW5jb2RlZCk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKQEAgLTEzNSw2ICsxMzksNyBAQAogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gaW50ZXJwLT5tb2R1bGVzOwogICAgIFB5T2JqZWN0ICpidWlsdGlucyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsICJidWlsdGlucyIpOwogICAgIGludCBlcnI7CisgICAgX1B5X0lERU5USUZJRVIoXyk7CiAKICAgICBpZiAoYnVpbHRpbnMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibG9zdCBidWlsdGlucyBtb2R1bGUiKTsKQEAgLTE0OCw3ICsxNTMsNyBAQAogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhidWlsdGlucywgIl8iLCBQeV9Ob25lKSAhPSAwKQorICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKGJ1aWx0aW5zLCAmUHlJZF9fLCBQeV9Ob25lKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBvdXRmID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRvdXQiKTsKICAgICBpZiAob3V0ZiA9PSBOVUxMIHx8IG91dGYgPT0gUHlfTm9uZSkgewpAQCAtMTcwLDcgKzE3NSw3IEBACiAgICAgfQogICAgIGlmIChQeUZpbGVfV3JpdGVTdHJpbmcoIlxuIiwgb3V0ZikgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoYnVpbHRpbnMsICJfIiwgbykgIT0gMCkKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChidWlsdGlucywgJlB5SWRfXywgbykgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtNzcwLDkgKzc3NSw3IEBACiBhIGxhenkgcmVzb2x2aW5nIG9mIHN5bWJvbHMgd2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUsIGlmIGNhbGxlZCBhc1xuXAogc3lzLnNldGRsb3BlbmZsYWdzKDApLiAgVG8gc2hhcmUgc3ltYm9scyBhY3Jvc3MgZXh0ZW5zaW9uIG1vZHVsZXMsIGNhbGwgYXNcblwKIHN5cy5zZXRkbG9wZW5mbGFncyhjdHlwZXMuUlRMRF9HTE9CQUwpLiAgU3ltYm9saWMgbmFtZXMgZm9yIHRoZSBmbGFnIG1vZHVsZXNcblwKLWNhbiBiZSBlaXRoZXIgZm91bmQgaW4gdGhlIGN0eXBlcyBtb2R1bGUsIG9yIGluIHRoZSBETEZDTiBtb2R1bGUuIElmIERMRkNOXG5cCi1pcyBub3QgYXZhaWxhYmxlLCBpdCBjYW4gYmUgZ2VuZXJhdGVkIGZyb20gL3Vzci9pbmNsdWRlL2RsZmNuLmggdXNpbmcgdGhlXG5cCi1oMnB5IHNjcmlwdC4iKTsKK2NhbiBiZSBmb3VuZCBpbiB0aGUgb3MgbW9kdWxlIChSVExEX3h4eCBjb25zdGFudHMsIGUuZy4gb3MuUlRMRF9MQVpZKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHN5c19nZXRkbG9wZW5mbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC04MTEsMTAgKzgxNCwxMSBAQAogc3lzX2dldHNpemVvZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqc3RyX19zaXplb2ZfXyA9IE5VTEwsICpnY19oZWFkX3NpemUgPSBOVUxMOworICAgIHN0YXRpYyBQeU9iamVjdCAqZ2NfaGVhZF9zaXplID0gTlVMTDsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im9iamVjdCIsICJkZWZhdWx0IiwgMH07CiAgICAgUHlPYmplY3QgKm8sICpkZmx0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbWV0aG9kOworICAgIF9QeV9JREVOVElGSUVSKF9fc2l6ZW9mX18pOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpnZXRzaXplb2YiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm8sICZkZmx0KSkKQEAgLTgzMSw4ICs4MzUsNyBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoUHlfVFlQRShvKSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICJfX3NpemVvZl9fIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyX19zaXplb2ZfXyk7CisgICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgJlB5SWRfX19zaXplb2ZfXyk7CiAgICAgaWYgKG1ldGhvZCA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC05OTQsNiArOTk3LDI3IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2RlYnVnbWFsbG9jc3RhdHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworI2lmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisjZW5kaWYKKyAgICBfUHlPYmplY3RfRGVidWdUeXBlU3RhdHMoc3RkZXJyKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorUHlEb2NfU1RSVkFSKGRlYnVnbWFsbG9jc3RhdHNfZG9jLAorIl9kZWJ1Z21hbGxvY3N0YXRzKClcblwKK1xuXAorUHJpbnQgc3VtbWFyeSBpbmZvIHRvIHN0ZGVyciBhYm91dCB0aGUgc3RhdGUgb2ZcblwKK3B5bWFsbG9jJ3Mgc3RydWN0dXJlcy5cblwKK1xuXAorSW4gUHlfREVCVUcgbW9kZSwgYWxzbyBwZXJmb3JtIHNvbWUgZXhwZW5zaXZlIGludGVybmFsIGNvbnNpc3RlbmN5XG5cCitjaGVja3MuXG5cCisiKTsKKwogI2lmZGVmIFB5X1RSQUNFX1JFRlMKIC8qIERlZmluZWQgaW4gb2JqZWN0cy5jIGJlY2F1c2UgaXQgdXNlcyBzdGF0aWMgZ2xvYmFscyBpZiB0aGF0IGZpbGUgKi8KIGV4dGVybiBQeU9iamVjdCAqX1B5X0dldE9iamVjdHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CkBAIC0xMDkwLDYgKzExMTQsOCBAQAogICAgIHsic2V0dHJhY2UiLCAgICAgICAgc3lzX3NldHRyYWNlLCBNRVRIX08sIHNldHRyYWNlX2RvY30sCiAgICAgeyJnZXR0cmFjZSIsICAgICAgICBzeXNfZ2V0dHJhY2UsIE1FVEhfTk9BUkdTLCBnZXR0cmFjZV9kb2N9LAogICAgIHsiY2FsbF90cmFjaW5nIiwgc3lzX2NhbGxfdHJhY2luZywgTUVUSF9WQVJBUkdTLCBjYWxsX3RyYWNpbmdfZG9jfSwKKyAgICB7Il9kZWJ1Z21hbGxvY3N0YXRzIiwgc3lzX2RlYnVnbWFsbG9jc3RhdHMsIE1FVEhfVkFSQVJHUywKKyAgICAgZGVidWdtYWxsb2NzdGF0c19kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xMTc3LDcgKzEyMDMsNiBAQAogICAgIFB5T2JqZWN0ICpvcHRzOwogICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTCwgKnZhbHVlID0gTlVMTDsKICAgICBjb25zdCB3Y2hhcl90ICpuYW1lX2VuZDsKLSAgICBpbnQgcjsKIAogICAgIG9wdHMgPSBnZXRfeG9wdGlvbnMoKTsKICAgICBpZiAob3B0cyA9PSBOVUxMKQpAQCAtMTE5NSw3ICsxMjIwLDcgQEAKICAgICB9CiAgICAgaWYgKG5hbWUgPT0gTlVMTCB8fCB2YWx1ZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIHIgPSBQeURpY3RfU2V0SXRlbShvcHRzLCBuYW1lLCB2YWx1ZSk7CisgICAgUHlEaWN0X1NldEl0ZW0ob3B0cywgbmFtZSwgdmFsdWUpOwogICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIHJldHVybjsKQEAgLTEyNTIsMjEgKzEyNzcsMjIgQEAKICJcblwKIFN0YXRpYyBvYmplY3RzOlxuXAogXG5cCi1mbG9hdF9pbmZvIC0tIGEgZGljdCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmbG9hdCBpbXBsZW1lbnRhdGlvbi5cblwKK2J1aWx0aW5fbW9kdWxlX25hbWVzIC0tIHR1cGxlIG9mIG1vZHVsZSBuYW1lcyBidWlsdCBpbnRvIHRoaXMgaW50ZXJwcmV0ZXJcblwKK2NvcHlyaWdodCAtLSBjb3B5cmlnaHQgbm90aWNlIHBlcnRhaW5pbmcgdG8gdGhpcyBpbnRlcnByZXRlclxuXAorZXhlY19wcmVmaXggLS0gcHJlZml4IHVzZWQgdG8gZmluZCB0aGUgbWFjaGluZS1zcGVjaWZpYyBQeXRob24gbGlicmFyeVxuXAorZXhlY3V0YWJsZSAtLSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGJpbmFyeSBvZiB0aGUgUHl0aG9uIGludGVycHJldGVyXG5cCitmbG9hdF9pbmZvIC0tIGEgc3RydWN0IHNlcXVlbmNlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZsb2F0IGltcGxlbWVudGF0aW9uLlxuXAorZmxvYXRfcmVwcl9zdHlsZSAtLSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgc3R5bGUgb2YgcmVwcigpIG91dHB1dCBmb3IgZmxvYXRzXG5cCitoZXh2ZXJzaW9uIC0tIHZlcnNpb24gaW5mb3JtYXRpb24gZW5jb2RlZCBhcyBhIHNpbmdsZSBpbnRlZ2VyXG5cCitpbXBsZW1lbnRhdGlvbiAtLSBQeXRob24gaW1wbGVtZW50YXRpb24gaW5mb3JtYXRpb24uXG5cCiBpbnRfaW5mbyAtLSBhIHN0cnVjdCBzZXF1ZW5jZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbnQgaW1wbGVtZW50YXRpb24uXG5cCiBtYXhzaXplIC0tIHRoZSBsYXJnZXN0IHN1cHBvcnRlZCBsZW5ndGggb2YgY29udGFpbmVycy5cblwKLW1heHVuaWNvZGUgLS0gdGhlIGxhcmdlc3Qgc3VwcG9ydGVkIGNoYXJhY3RlclxuXAotYnVpbHRpbl9tb2R1bGVfbmFtZXMgLS0gdHVwbGUgb2YgbW9kdWxlIG5hbWVzIGJ1aWx0IGludG8gdGhpcyBpbnRlcnByZXRlclxuXAotc3VidmVyc2lvbiAtLSBzdWJ2ZXJzaW9uIGluZm9ybWF0aW9uIG9mIHRoZSBidWlsZCBhcyB0dXBsZVxuXAorbWF4dW5pY29kZSAtLSB0aGUgdmFsdWUgb2YgdGhlIGxhcmdlc3QgVW5pY29kZSBjb2RlcG9pbnRcblwKK3BsYXRmb3JtIC0tIHBsYXRmb3JtIGlkZW50aWZpZXJcblwKK3ByZWZpeCAtLSBwcmVmaXggdXNlZCB0byBmaW5kIHRoZSBQeXRob24gbGlicmFyeVxuXAordGhyZWFkX2luZm8gLS0gYSBzdHJ1Y3Qgc2VxdWVuY2Ugd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uLlxuXAogdmVyc2lvbiAtLSB0aGUgdmVyc2lvbiBvZiB0aGlzIGludGVycHJldGVyIGFzIGEgc3RyaW5nXG5cCiB2ZXJzaW9uX2luZm8gLS0gdmVyc2lvbiBpbmZvcm1hdGlvbiBhcyBhIG5hbWVkIHR1cGxlXG5cCi1oZXh2ZXJzaW9uIC0tIHZlcnNpb24gaW5mb3JtYXRpb24gZW5jb2RlZCBhcyBhIHNpbmdsZSBpbnRlZ2VyXG5cCi1jb3B5cmlnaHQgLS0gY29weXJpZ2h0IG5vdGljZSBwZXJ0YWluaW5nIHRvIHRoaXMgaW50ZXJwcmV0ZXJcblwKLXBsYXRmb3JtIC0tIHBsYXRmb3JtIGlkZW50aWZpZXJcblwKLWV4ZWN1dGFibGUgLS0gYWJzb2x1dGUgcGF0aCBvZiB0aGUgZXhlY3V0YWJsZSBiaW5hcnkgb2YgdGhlIFB5dGhvbiBpbnRlcnByZXRlclxuXAotcHJlZml4IC0tIHByZWZpeCB1c2VkIHRvIGZpbmQgdGhlIFB5dGhvbiBsaWJyYXJ5XG5cCi1leGVjX3ByZWZpeCAtLSBwcmVmaXggdXNlZCB0byBmaW5kIHRoZSBtYWNoaW5lLXNwZWNpZmljIFB5dGhvbiBsaWJyYXJ5XG5cCi1mbG9hdF9yZXByX3N0eWxlIC0tIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBzdHlsZSBvZiByZXByKCkgb3V0cHV0IGZvciBmbG9hdHNcblwKICIKICkKICNpZmRlZiBNU19XSU5ET1dTCkBAIC0xMzA1LDQzICsxMzMxLDYgQEAKICkKIC8qIGVuZCBvZiBzeXNfZG9jICovIDsKIAotLyogU3VidmVyc2lvbiBicmFuY2ggYW5kIHJldmlzaW9uIG1hbmFnZW1lbnQgKi8KLXN0YXRpYyBpbnQgc3ZuX2luaXRpYWxpemVkOwotc3RhdGljIGNoYXIgcGF0Y2hsZXZlbF9yZXZpc2lvbls1MF07IC8qIEp1c3QgdGhlIG51bWJlciAqLwotc3RhdGljIGNoYXIgYnJhbmNoWzUwXTsKLXN0YXRpYyBjaGFyIHNob3J0YnJhbmNoWzUwXTsKLXN0YXRpYyBjb25zdCBjaGFyICpzdm5fcmV2aXNpb247Ci0KLXN0YXRpYyB2b2lkCi1zdm52ZXJzaW9uX2luaXQodm9pZCkKLXsKLSAgICBpZiAoc3ZuX2luaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdm5faW5pdGlhbGl6ZWQgPSAxOwotICAgICpwYXRjaGxldmVsX3JldmlzaW9uID0gJ1wwJzsKLSAgICBzdHJjcHkoYnJhbmNoLCAiIik7Ci0gICAgc3RyY3B5KHNob3J0YnJhbmNoLCAidW5rbm93biIpOwotICAgIHN2bl9yZXZpc2lvbiA9ICIiOwotfQotCi0vKiBSZXR1cm4gc3ZudmVyc2lvbiBvdXRwdXQgaWYgYXZhaWxhYmxlLgotICAgRWxzZSByZXR1cm4gUmV2aXNpb24gb2YgcGF0Y2hsZXZlbC5oIGlmIG9uIGJyYW5jaC4KLSAgIEVsc2UgcmV0dXJuIGVtcHR5IHN0cmluZyAqLwotY29uc3QgY2hhcioKLVB5X1N1YnZlcnNpb25SZXZpc2lvbigpCi17Ci0gICAgc3ZudmVyc2lvbl9pbml0KCk7Ci0gICAgcmV0dXJuIHN2bl9yZXZpc2lvbjsKLX0KLQotY29uc3QgY2hhcioKLVB5X1N1YnZlcnNpb25TaG9ydEJyYW5jaCgpCi17Ci0gICAgc3ZudmVyc2lvbl9pbml0KCk7Ci0gICAgcmV0dXJuIHNob3J0YnJhbmNoOwotfQotCiAKIFB5RG9jX1NUUlZBUihmbGFnc19fZG9jX18sCiAic3lzLmZsYWdzXG5cCkBAIC0xMzUyLDcgKzEzNDEsNiBAQAogCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBmbGFnc19maWVsZHNbXSA9IHsKICAgICB7ImRlYnVnIiwgICAgICAgICAgICAgICAgICAgIi1kIn0sCi0gICAgeyJkaXZpc2lvbl93YXJuaW5nIiwgICAgICAgICItUSJ9LAogICAgIHsiaW5zcGVjdCIsICAgICAgICAgICAgICAgICAiLWkifSwKICAgICB7ImludGVyYWN0aXZlIiwgICAgICAgICAgICAgIi1pIn0sCiAgICAgeyJvcHRpbWl6ZSIsICAgICAgICAgICAgICAgICItTyBvciAtT08ifSwKQEAgLTEzNzcsOSArMTM2NSw5IEBACiAgICAgZmxhZ3NfX2RvY19fLCAgICAgICAvKiBkb2MgKi8KICAgICBmbGFnc19maWVsZHMsICAgICAgIC8qIGZpZWxkcyAqLwogI2lmZGVmIFJJU0NPUwotICAgIDE0Ci0jZWxzZQogICAgIDEzCisjZWxzZQorICAgIDEyCiAjZW5kaWYKIH07CiAKQEAgLTEzOTcsNyArMTM4NSw2IEBACiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShzZXEsIHBvcysrLCBQeUxvbmdfRnJvbUxvbmcoZmxhZykpCiAKICAgICBTZXRGbGFnKFB5X0RlYnVnRmxhZyk7Ci0gICAgU2V0RmxhZyhQeV9EaXZpc2lvbldhcm5pbmdGbGFnKTsKICAgICBTZXRGbGFnKFB5X0luc3BlY3RGbGFnKTsKICAgICBTZXRGbGFnKFB5X0ludGVyYWN0aXZlRmxhZyk7CiAgICAgU2V0RmxhZyhQeV9PcHRpbWl6ZUZsYWcpOwpAQCAtMTQ5MSw2ICsxNDc4LDczIEBACiAgICAgcmV0dXJuIHZlcnNpb25faW5mbzsKIH0KIAorLyogc3lzLmltcGxlbWVudGF0aW9uIHZhbHVlcyAqLworI2RlZmluZSBOQU1FICJjcHl0aG9uIgorY29uc3QgY2hhciAqX1B5U3lzX0ltcGxOYW1lID0gTkFNRTsKKyNkZWZpbmUgUVVPVEUoYXJnKSAjYXJnCisjZGVmaW5lIFNUUklGWShuYW1lKSBRVU9URShuYW1lKQorI2RlZmluZSBNQUpPUiBTVFJJRlkoUFlfTUFKT1JfVkVSU0lPTikKKyNkZWZpbmUgTUlOT1IgU1RSSUZZKFBZX01JTk9SX1ZFUlNJT04pCisjZGVmaW5lIFRBRyBOQU1FICItIiBNQUpPUiBNSU5PUjsKK2NvbnN0IGNoYXIgKl9QeVN5c19JbXBsQ2FjaGVUYWcgPSBUQUc7CisjdW5kZWYgTkFNRQorI3VuZGVmIFFVT1RFCisjdW5kZWYgU1RSSUZZCisjdW5kZWYgTUFKT1IKKyN1bmRlZiBNSU5PUgorI3VuZGVmIFRBRworCitzdGF0aWMgUHlPYmplY3QgKgorbWFrZV9pbXBsX2luZm8oUHlPYmplY3QgKnZlcnNpb25faW5mbykKK3sKKyAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0ICppbXBsX2luZm8sICp2YWx1ZSwgKm5zOworCisgICAgaW1wbF9pbmZvID0gUHlEaWN0X05ldygpOworICAgIGlmIChpbXBsX2luZm8gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBwb3B1bGF0ZSB0aGUgZGljdCAqLworCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhfUHlTeXNfSW1wbE5hbWUpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGltcGxfaW5mbywgIm5hbWUiLCB2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoX1B5U3lzX0ltcGxDYWNoZVRhZyk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW1wbF9pbmZvLCAiY2FjaGVfdGFnIiwgdmFsdWUpOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXMgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhpbXBsX2luZm8sICJ2ZXJzaW9uIiwgdmVyc2lvbl9pbmZvKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHZhbHVlID0gUHlMb25nX0Zyb21Mb25nKFBZX1ZFUlNJT05fSEVYKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXMgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhpbXBsX2luZm8sICJoZXh2ZXJzaW9uIiwgdmFsdWUpOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBkaWN0IHJlYWR5ICovCisKKyAgICBucyA9IF9QeU5hbWVzcGFjZV9OZXcoaW1wbF9pbmZvKTsKKyAgICBQeV9ERUNSRUYoaW1wbF9pbmZvKTsKKyAgICByZXR1cm4gbnM7CisKK2Vycm9yOgorICAgIFB5X0NMRUFSKGltcGxfaW5mbyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgc3lzbW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKICAgICAic3lzIiwKQEAgLTE1MDYsNyArMTU2MCw3IEBACiBQeU9iamVjdCAqCiBfUHlTeXNfSW5pdCh2b2lkKQogewotICAgIFB5T2JqZWN0ICptLCAqdiwgKnN5c2RpY3Q7CisgICAgUHlPYmplY3QgKm0sICp2LCAqc3lzZGljdCwgKnZlcnNpb25faW5mbzsKICAgICBjaGFyICpzOwogCiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmc3lzbW9kdWxlKTsKQEAgLTE1NDcsMTAgKzE2MDEsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0dldFZlcnNpb24oKSkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImhleHZlcnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZyhQWV9WRVJTSU9OX0hFWCkpOwotICAgIHN2bnZlcnNpb25faW5pdCgpOwotICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInN1YnZlcnNpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlfQnVpbGRWYWx1ZSgiKHNzcykiLCAiQ1B5dGhvbiIsIGJyYW5jaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZuX3JldmlzaW9uKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiX21lcmN1cmlhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9CdWlsZFZhbHVlKCIoc3p6KSIsICJDUHl0aG9uIiwgX1B5X2hnaWRlbnRpZmllcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGd2ZXJzaW9uKCkpKTsKQEAgLTE1NjksNiArMTYxOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihQeV9HZXRQcmVmaXgoKSwgLTEpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJleGVjX3ByZWZpeCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldEV4ZWNQcmVmaXgoKSwgLTEpKTsKKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJiYXNlX3ByZWZpeCIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldFByZWZpeCgpLCAtMSkpOworICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImJhc2VfZXhlY19wcmVmaXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihQeV9HZXRFeGVjUHJlZml4KCksIC0xKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygibWF4c2l6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbVNzaXplX3QoUFlfU1NJWkVfVF9NQVgpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJmbG9hdF9pbmZvIiwKQEAgLTE1ODEsNyArMTYzNSw3IEBACiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiaGFzaF9pbmZvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9oYXNoX2luZm8oKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygibWF4dW5pY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX0dldE1heCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmcoMHgxMEZGRkYpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJidWlsdGluX21vZHVsZV9uYW1lcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2J1aWx0aW5fbW9kdWxlX25hbWVzKCkpOwogICAgIHsKQEAgLTE2MjYsMTEgKzE2ODAsMTUgQEAKICAgICAvKiB2ZXJzaW9uX2luZm8gKi8KICAgICBpZiAoVmVyc2lvbkluZm9UeXBlLnRwX25hbWUgPT0gMCkKICAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmVmVyc2lvbkluZm9UeXBlLCAmdmVyc2lvbl9pbmZvX2Rlc2MpOwotICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInZlcnNpb25faW5mbyIsIG1ha2VfdmVyc2lvbl9pbmZvKCkpOworICAgIHZlcnNpb25faW5mbyA9IG1ha2VfdmVyc2lvbl9pbmZvKCk7CisgICAgU0VUX1NZU19GUk9NX1NUUklORygidmVyc2lvbl9pbmZvIiwgdmVyc2lvbl9pbmZvKTsKICAgICAvKiBwcmV2ZW50IHVzZXIgZnJvbSBjcmVhdGluZyBuZXcgaW5zdGFuY2VzICovCiAgICAgVmVyc2lvbkluZm9UeXBlLnRwX2luaXQgPSBOVUxMOwogICAgIFZlcnNpb25JbmZvVHlwZS50cF9uZXcgPSBOVUxMOwogCisgICAgLyogaW1wbGVtZW50YXRpb24gKi8KKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJpbXBsZW1lbnRhdGlvbiIsIG1ha2VfaW1wbF9pbmZvKHZlcnNpb25faW5mbykpOworCiAgICAgLyogZmxhZ3MgKi8KICAgICBpZiAoRmxhZ3NUeXBlLnRwX25hbWUgPT0gMCkKICAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmRmxhZ3NUeXBlLCAmZmxhZ3NfZGVzYyk7CkBAIC0xNjU4LDYgKzE3MTYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJsZWdhY3kiKSk7CiAjZW5kaWYKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgU0VUX1NZU19GUk9NX1NUUklORygidGhyZWFkX2luZm8iLCBQeVRocmVhZF9HZXRJbmZvKCkpOworI2VuZGlmCisKICN1bmRlZiBTRVRfU1lTX0ZST01fU1RSSU5HCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTgxMiw3ICsxODc0LDcgQEAKICAgICAgICAgdGhlIGFyZ3VtZW50IG11c3QgYmUgdGhlIGZ1bGwgcGF0aCBhbnl3YXkuICovCiAgICAgICAgIHdjaGFyX3QgKnB0ZW1wOwogICAgICAgICBpZiAoR2V0RnVsbFBhdGhOYW1lVyhhcmd2MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihmdWxscGF0aCkvc2l6ZW9mKGZ1bGxwYXRoWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSChmdWxscGF0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxscGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdGVtcCkpIHsKICAgICAgICAgICAgIGFyZ3YwID0gZnVsbHBhdGg7CkBAIC0xODgxLDExICsxOTQzLDEyIEBACiB7CiAgICAgUHlPYmplY3QgKndyaXRlciA9IE5VTEwsICphcmdzID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7CiAgICAgaW50IGVycjsKKyAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CiAKICAgICBpZiAoZmlsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICB3cml0ZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJ3cml0ZSIpOworICAgIHdyaXRlciA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfd3JpdGUpOwogICAgIGlmICh3cml0ZXIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZC5jIGIvUHl0aG9uL3RocmVhZC5jCmluZGV4IGQyMjQwNDYuLmU1NWQzNDIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWQuYworKysgYi9QeXRob24vdGhyZWFkLmMKQEAgLTcsNyArNyw2IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKIAotCiAjaWZuZGVmIF9QT1NJWF9USFJFQURTCiAvKiBUaGlzIG1lYW5zIHB0aHJlYWRzIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gbGliYyBoZWFkZXJzLCBoZW5jZSB0aGUgbWFjcm8KICAgIG5vdCBwcmVzZW50IGluIHVuaXN0ZC5oLiBCdXQgdGhleSBzdGlsbCBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgYW4gZXh0ZXJuYWwKQEAgLTI3LDE4ICsyNiw2IEBACiAKICNpZm5kZWYgX1BPU0lYX1RIUkVBRFMKIAotI2lmZGVmIF9fc2dpCi0jZGVmaW5lIFNHSV9USFJFQURTCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfVEhSRUFEX0gKLSNkZWZpbmUgU09MQVJJU19USFJFQURTCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoc3VuKSAmJiAhZGVmaW5lZChTT0xBUklTX1RIUkVBRFMpCi0jZGVmaW5lIFNVTl9MV1AKLSNlbmRpZgotCiAvKiBDaGVjayBpZiB3ZSdyZSBydW5uaW5nIG9uIEhQLVVYIGFuZCBfU0NfVEhSRUFEUyBpcyBkZWZpbmVkLiBJZiBzbywgdGhlbgogICAgZW5vdWdoIG9mIHRoZSBQb3NpeCB0aHJlYWRzIHBhY2thZ2UgaXMgaW1wbGVtZW50ZWQgdG8gc3VwcG9ydCBweXRob24KICAgIHRocmVhZHMuCkBAIC05NCw0NyArODEsMjEgQEAKICAgIG9yIHRoZSBzaXplIHNwZWNpZmllZCBieSB0aGUgVEhSRUFEX1NUQUNLX1NJWkUgbWFjcm8uICovCiBzdGF0aWMgc2l6ZV90IF9weXRocmVhZF9zdGFja3NpemUgPSAwOwogCi0jaWZkZWYgU0dJX1RIUkVBRFMKLSNlcnJvciBTR0kgSXJpeCB0aHJlYWRzIGFyZSBub3cgdW5zdXBwb3J0ZWQsIGFuZCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjMuCi0jaW5jbHVkZSAidGhyZWFkX3NnaS5oIgotI2VuZGlmCi0KLSNpZmRlZiBTT0xBUklTX1RIUkVBRFMKLSNpbmNsdWRlICJ0aHJlYWRfc29sYXJpcy5oIgotI2VuZGlmCi0KLSNpZmRlZiBTVU5fTFdQCi0jZXJyb3IgU3VuT1MgbGlnaHR3ZWlnaHQgcHJvY2Vzc2VzIGFyZSBub3cgdW5zdXBwb3J0ZWQsIGFuZCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjMuCi0jaW5jbHVkZSAidGhyZWFkX2x3cC5oIgotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1BUSAotI2Vycm9yIEdOVSBwdGggdGhyZWFkcyBhcmUgbm93IHVuc3VwcG9ydGVkLCBhbmQgY29kZSB3aWxsIGJlIHJlbW92ZWQgaW4gMy4zLgotI2luY2x1ZGUgInRocmVhZF9wdGguaCIKLSN1bmRlZiBfUE9TSVhfVEhSRUFEUwotI2VuZGlmCi0KICNpZmRlZiBfUE9TSVhfVEhSRUFEUworI2RlZmluZSBQWVRIUkVBRF9OQU1FICJwdGhyZWFkIgogI2luY2x1ZGUgInRocmVhZF9wdGhyZWFkLmgiCiAjZW5kaWYKIAotI2lmZGVmIENfVEhSRUFEUwotI2Vycm9yIE1hY2ggQyBUaHJlYWRzIGFyZSBub3cgdW5zdXBwb3J0ZWQsIGFuZCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjMuCi0jaW5jbHVkZSAidGhyZWFkX2N0aHJlYWQuaCIKLSNlbmRpZgotCiAjaWZkZWYgTlRfVEhSRUFEUworI2RlZmluZSBQWVRIUkVBRF9OQU1FICJudCIKICNpbmNsdWRlICJ0aHJlYWRfbnQuaCIKICNlbmRpZgogCiAjaWZkZWYgT1MyX1RIUkVBRFMKKyNkZWZpbmUgUFlUSFJFQURfTkFNRSAib3MyIgogI2luY2x1ZGUgInRocmVhZF9vczIuaCIKICNlbmRpZgogCi0jaWZkZWYgUExBTjlfVEhSRUFEUwotI2luY2x1ZGUgInRocmVhZF9wbGFuOS5oIgotI2VuZGlmCi0KIC8qCiAjaWZkZWYgRk9PQkFSX1RIUkVBRFMKICNpbmNsdWRlICJ0aHJlYWRfZm9vYmFyLmgiCkBAIC00MDksMyArMzcwLDg0IEBACiB9CiAKICNlbmRpZiAvKiBQeV9IQVZFX05BVElWRV9UTFMgKi8KKworUHlEb2NfU1RSVkFSKHRocmVhZGluZm9fX2RvY19fLAorInN5cy50aHJlYWRfaW5mb1xuXAorXG5cCitBIHN0cnVjdCBzZXF1ZW5jZSBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24uIik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHRocmVhZGluZm9fZmllbGRzW10gPSB7CisgICAgeyJuYW1lIiwgICAgIm5hbWUgb2YgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbiJ9LAorICAgIHsibG9jayIsICAgICJuYW1lIG9mIHRoZSBsb2NrIGltcGxlbWVudGF0aW9uIn0sCisgICAgeyJ2ZXJzaW9uIiwgIm5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHRocmVhZCBsaWJyYXJ5In0sCisgICAgezB9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHRocmVhZGluZm9fZGVzYyA9IHsKKyAgICAic3lzLnRocmVhZF9pbmZvIiwgICAgICAgICAgIC8qIG5hbWUgKi8KKyAgICB0aHJlYWRpbmZvX19kb2NfXywgICAgICAgICAgIC8qIGRvYyAqLworICAgIHRocmVhZGluZm9fZmllbGRzLCAgICAgICAgICAgLyogZmllbGRzICovCisgICAgMworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBUaHJlYWRJbmZvVHlwZTsKKworUHlPYmplY3QqCitQeVRocmVhZF9HZXRJbmZvKHZvaWQpCit7CisgICAgUHlPYmplY3QgKnRocmVhZGluZm8sICp2YWx1ZTsKKyAgICBpbnQgcG9zID0gMDsKKyNpZiAoZGVmaW5lZChfUE9TSVhfVEhSRUFEUykgJiYgZGVmaW5lZChIQVZFX0NPTkZTVFIpIFwKKyAgICAgJiYgZGVmaW5lZChfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTikpCisgICAgY2hhciBidWZmZXJbMjU1XTsKKyAgICBpbnQgbGVuOworI2VuZGlmCisKKyAgICBpZiAoVGhyZWFkSW5mb1R5cGUudHBfbmFtZSA9PSAwKQorICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZUaHJlYWRJbmZvVHlwZSwgJnRocmVhZGluZm9fZGVzYyk7CisKKyAgICB0aHJlYWRpbmZvID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlRocmVhZEluZm9UeXBlKTsKKyAgICBpZiAodGhyZWFkaW5mbyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUFlUSFJFQURfTkFNRSk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHRocmVhZGluZm8pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0aHJlYWRpbmZvLCBwb3MrKywgdmFsdWUpOworCisjaWZkZWYgX1BPU0lYX1RIUkVBRFMKKyNpZmRlZiBVU0VfU0VNQVBIT1JFUworICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNlbWFwaG9yZSIpOworI2Vsc2UKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJtdXRleCtjb25kIik7CisjZW5kaWYKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYodGhyZWFkaW5mbyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNlbHNlCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHZhbHVlID0gUHlfTm9uZTsKKyNlbmRpZgorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odGhyZWFkaW5mbywgcG9zKyssIHZhbHVlKTsKKworI2lmIChkZWZpbmVkKF9QT1NJWF9USFJFQURTKSAmJiBkZWZpbmVkKEhBVkVfQ09ORlNUUikgXAorICAgICAmJiBkZWZpbmVkKF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OKSkKKyAgICB2YWx1ZSA9IE5VTEw7CisgICAgbGVuID0gY29uZnN0cihfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTiwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgaWYgKDEgPCBsZW4gJiYgbGVuIDwgc2l6ZW9mKGJ1ZmZlcikpIHsKKyAgICAgICAgdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWZmZXIsIGxlbi0xKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyNlbmRpZgorICAgIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICB2YWx1ZSA9IFB5X05vbmU7CisgICAgfQorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odGhyZWFkaW5mbywgcG9zKyssIHZhbHVlKTsKKyAgICByZXR1cm4gdGhyZWFkaW5mbzsKK30KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfY3RocmVhZC5oIGIvUHl0aG9uL3RocmVhZF9jdGhyZWFkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiM2UzOTAuLjAwMDAwMDAKLS0tIGEvUHl0aG9uL3RocmVhZF9jdGhyZWFkLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotCi0jaWZkZWYgTUFDSF9DX1RIUkVBRFMKLSNpbmNsdWRlIDxtYWNoL2N0aHJlYWRzLmg+Ci0jZW5kaWYKLQotI2lmZGVmIEhVUkRfQ19USFJFQURTCi0jaW5jbHVkZSA8Y3RocmVhZHMuaD4KLSNlbmRpZgotCi0vKgotICogSW5pdGlhbGl6YXRpb24uCi0gKi8KLXN0YXRpYyB2b2lkCi1QeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLSNpZm5kZWYgSFVSRF9DX1RIUkVBRFMKLSAgICAvKiBSb2xhbmQgTWNHcmF0aCBzYWlkIHRoaXMgc2hvdWxkIG5vdCBiZSB1c2VkIHNpbmNlIHRoaXMgaXMKLSAgICBkb25lIHdoaWxlIGxpbmtpbmcgdG8gdGhyZWFkcyAqLwotICAgIGN0aHJlYWRfaW5pdCgpOwotI2Vsc2UKLS8qIGRvIG5vdGhpbmcgKi8KLSAgICA7Ci0jZW5kaWYKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi1sb25nCi1QeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKHZvaWQgKCpmdW5jKSh2b2lkICopLCB2b2lkICphcmcpCi17Ci0gICAgaW50IHN1Y2Nlc3MgPSAwOyAgICAgICAgICAgIC8qIGluaXQgbm90IG5lZWRlZCB3aGVuIFNPTEFSSVNfVEhSRUFEUyBhbmQgKi8KLSAgICAgICAgICAgICAgICAvKiBDX1RIUkVBRFMgaW1wbGVtZW50ZWQgcHJvcGVybHkgKi8KLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgLyogbG9va3MgbGlrZSBzb2xhcmlzIGRldGFjaGVzIHRoZSB0aHJlYWQgdG8gbmV2ZXIgcmVqb2luCi0gICAgICogc28gd2VsbCBkbyBpdCBoZXJlCi0gICAgICovCi0gICAgY3RocmVhZF9kZXRhY2goY3RocmVhZF9mb3JrKChjdGhyZWFkX2ZuX3QpIGZ1bmMsIGFyZykpOwotICAgIHJldHVybiBzdWNjZXNzIDwgMCA/IC0xIDogMDsKLX0KLQotbG9uZwotUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgcmV0dXJuIChsb25nKSBjdGhyZWFkX3NlbGYoKTsKLX0KLQotdm9pZAotUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgZXhpdCgwKTsKLSAgICBjdGhyZWFkX2V4aXQoMCk7Ci19Ci0KLS8qCi0gKiBMb2NrIHN1cHBvcnQuCi0gKi8KLVB5VGhyZWFkX3R5cGVfbG9jawotUHlUaHJlYWRfYWxsb2NhdGVfbG9jayh2b2lkKQotewotICAgIG11dGV4X3QgbG9jazsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBsb2NrID0gbXV0ZXhfYWxsb2MoKTsKLSAgICBpZiAobXV0ZXhfaW5pdChsb2NrKSkgewotICAgICAgICBwZXJyb3IoIm11dGV4X2luaXQiKTsKLSAgICAgICAgZnJlZSgodm9pZCAqKSBsb2NrKTsKLSAgICAgICAgbG9jayA9IDA7Ci0gICAgfQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIGxvY2spKTsKLSAgICByZXR1cm4gKFB5VGhyZWFkX3R5cGVfbG9jaykgbG9jazsKLX0KLQotdm9pZAotUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIG11dGV4X2ZyZWUobG9jayk7Ci19Ci0KLWludAotUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3MgPSBGQUxTRTsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIGxvY2ssIHdhaXRmbGFnKSk7Ci0gICAgaWYgKHdhaXRmbGFnKSB7ICAgICAgICAgICAgIC8qIGJsb2NraW5nICovCi0gICAgICAgIG11dGV4X2xvY2soKG11dGV4X3QpbG9jayk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBUUlVFOwotICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAvKiBub24gYmxvY2tpbmcgKi8KLSAgICAgICAgc3VjY2VzcyA9IG11dGV4X3RyeV9sb2NrKChtdXRleF90KWxvY2spOwotICAgIH0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIGxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBtdXRleF91bmxvY2soKG11dGV4X3QgKWxvY2spOwotfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9sd3AuaCBiL1B5dGhvbi90aHJlYWRfbHdwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhN2IzN2EuLjAwMDAwMDAKLS0tIGEvUHl0aG9uL3RocmVhZF9sd3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxsd3AvbHdwLmg+Ci0jaW5jbHVkZSA8bHdwL3N0YWNrZGVwLmg+Ci0KLSNkZWZpbmUgU1RBQ0tTSVpFICAgICAgIDEwMDAgICAgLyogc3RhY2tzaXplIGZvciBhIHRocmVhZCAqLwotI2RlZmluZSBOU1RBQ0tTICAgICAgICAgMiAgICAgICAvKiAjIHN0YWNrcyB0byBiZSBwdXQgaW4gY2FjaGUgaW5pdGlhbGx5ICovCi0KLXN0cnVjdCBsb2NrIHsKLSAgICBpbnQgbG9ja19sb2NrZWQ7Ci0gICAgY3ZfdCBsb2NrX2NvbmR2YXI7Ci0gICAgbW9uX3QgbG9ja19tb25pdG9yOwotfTsKLQotCi0vKgotICogSW5pdGlhbGl6YXRpb24uCi0gKi8KLXN0YXRpYyB2b2lkIFB5VGhyZWFkX19pbml0X3RocmVhZCh2b2lkKQotewotICAgIGx3cF9zZXRzdGtjYWNoZShTVEFDS1NJWkUsIE5TVEFDS1MpOwotfQotCi0vKgotICogVGhyZWFkIHN1cHBvcnQuCi0gKi8KLQotCi1sb25nIFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSAgICB0aHJlYWRfdCB0aWQ7Ci0gICAgaW50IHN1Y2Nlc3M7Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICBzdWNjZXNzID0gbHdwX2NyZWF0ZSgmdGlkLCBmdW5jLCBNSU5QUklPLCAwLCBsd3BfbmV3c3RrKCksIDEsIGFyZyk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3MgPCAwID8gLTEgOiAwOwotfQotCi1sb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCkKLXsKLSAgICB0aHJlYWRfdCB0aWQ7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICBpZiAobHdwX3NlbGYoJnRpZCkgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIHRpZC50aHJlYWRfaWQ7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgZXhpdCgwKTsKLSAgICBsd3BfZGVzdHJveShTRUxGKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4KLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrIFB5VGhyZWFkX2FsbG9jYXRlX2xvY2sodm9pZCkKLXsKLSAgICBzdHJ1Y3QgbG9jayAqbG9jazsKLSAgICBleHRlcm4gY2hhciAqbWFsbG9jKHNpemVfdCk7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgbG9jayA9IChzdHJ1Y3QgbG9jayAqKSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBsb2NrKSk7Ci0gICAgbG9jay0+bG9ja19sb2NrZWQgPSAwOwotICAgICh2b2lkKSBtb25fY3JlYXRlKCZsb2NrLT5sb2NrX21vbml0b3IpOwotICAgICh2b2lkKSBjdl9jcmVhdGUoJmxvY2stPmxvY2tfY29uZHZhciwgbG9jay0+bG9ja19tb25pdG9yKTsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpIC0+ICVwXG4iLCBsb2NrKSk7Ci0gICAgcmV0dXJuIChQeVRocmVhZF90eXBlX2xvY2spIGxvY2s7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIG1vbl9kZXN0cm95KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbW9uaXRvcik7Ci0gICAgZnJlZSgoY2hhciAqKSBsb2NrKTsKLX0KLQotaW50IFB5VGhyZWFkX2FjcXVpcmVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaywgaW50IHdhaXRmbGFnKQotewotICAgIGludCBzdWNjZXNzOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIGNhbGxlZFxuIiwgbG9jaywgd2FpdGZsYWcpKTsKLSAgICBzdWNjZXNzID0gMDsKLQotICAgICh2b2lkKSBtb25fZW50ZXIoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLSAgICBpZiAod2FpdGZsYWcpCi0gICAgICAgIHdoaWxlICgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2xvY2tlZCkKLSAgICAgICAgICAgIGN2X3dhaXQoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19jb25kdmFyKTsKLSAgICBpZiAoISgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbG9ja2VkKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSAxOwotICAgICAgICAoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2xvY2tlZCA9IDE7Ci0gICAgfQotICAgIGN2X2Jyb2FkY2FzdCgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2NvbmR2YXIpOwotICAgIG1vbl9leGl0KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbW9uaXRvcik7Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIC0+ICVkXG4iLCBsb2NrLCB3YWl0ZmxhZywgc3VjY2VzcykpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICAodm9pZCkgbW9uX2VudGVyKCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbW9uaXRvcik7Ci0gICAgKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19sb2NrZWQgPSAwOwotICAgIGN2X2Jyb2FkY2FzdCgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2NvbmR2YXIpOwotICAgIG1vbl9leGl0KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbW9uaXRvcik7Ci19CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX250LmggYi9QeXRob24vdGhyZWFkX250LmgKaW5kZXggZDFiYjBlNS4uOTM4YmYxZSAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZF9udC5oCisrKyBiL1B5dGhvbi90aHJlYWRfbnQuaApAQCAtOSw2ICs5LDEwOSBAQAogI2luY2x1ZGUgPHByb2Nlc3MuaD4KICNlbmRpZgogCisvKiBvcHRpb25zICovCisjaWZuZGVmIF9QWV9VU0VfQ1ZfTE9DS1MKKyNkZWZpbmUgX1BZX1VTRV9DVl9MT0NLUyAxICAgICAvKiB1c2UgbG9ja3MgYmFzZWQgb24gY29uZCB2YXJzICovCisjZW5kaWYKKworLyogTm93LCBkZWZpbmUgYSBub24tcmVjdXJzaXZlIG11dGV4IHVzaW5nIGVpdGhlciBjb25kaXRpb24gdmFyaWFibGVzCisgKiBhbmQgY3JpdGljYWwgc2VjdGlvbnMgKGZhc3QpIG9yIHVzaW5nIG9wZXJhdGluZyBzeXN0ZW0gbXV0ZXhlcworICogKHNsb3cpCisgKi8KKworI2lmIF9QWV9VU0VfQ1ZfTE9DS1MKKworI2luY2x1ZGUgImNvbmR2YXIuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX05STVVURVgKK3sKKyAgICBQeU1VVEVYX1QgY3M7CisgICAgUHlDT05EX1QgY3Y7CisgICAgaW50IGxvY2tlZDsKK30gTlJNVVRFWDsKK3R5cGVkZWYgTlJNVVRFWCAqUE5STVVURVg7CisKK1BOUk1VVEVYCitBbGxvY05vblJlY3Vyc2l2ZU11dGV4KCkKK3sKKyAgICBQTlJNVVRFWCBtID0gKFBOUk1VVEVYKW1hbGxvYyhzaXplb2YoTlJNVVRFWCkpOworICAgIGlmICghbSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5Q09ORF9JTklUKCZtLT5jdikpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlNVVRFWF9JTklUKCZtLT5jcykpIHsKKyAgICAgICAgUHlDT05EX0ZJTkkoJm0tPmN2KTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBtLT5sb2NrZWQgPSAwOworICAgIHJldHVybiBtOworZmFpbDoKKyAgICBmcmVlKG0pOworICAgIHJldHVybiBOVUxMOworfQorCitWT0lECitGcmVlTm9uUmVjdXJzaXZlTXV0ZXgoUE5STVVURVggbXV0ZXgpCit7CisgICAgaWYgKG11dGV4KSB7CisgICAgICAgIFB5Q09ORF9GSU5JKCZtdXRleC0+Y3YpOworICAgICAgICBQeU1VVEVYX0ZJTkkoJm11dGV4LT5jcyk7CisgICAgICAgIGZyZWUobXV0ZXgpOworICAgIH0KK30KKworRFdPUkQKK0VudGVyTm9uUmVjdXJzaXZlTXV0ZXgoUE5STVVURVggbXV0ZXgsIERXT1JEIG1pbGxpc2Vjb25kcykKK3sKKyAgICBEV09SRCByZXN1bHQgPSBXQUlUX09CSkVDVF8wOworICAgIGlmIChQeU1VVEVYX0xPQ0soJm11dGV4LT5jcykpCisgICAgICAgIHJldHVybiBXQUlUX0ZBSUxFRDsKKyAgICBpZiAobWlsbGlzZWNvbmRzID09IElORklOSVRFKSB7CisgICAgICAgIHdoaWxlIChtdXRleC0+bG9ja2VkKSB7CisgICAgICAgICAgICBpZiAoUHlDT05EX1dBSVQoJm11dGV4LT5jdiwgJm11dGV4LT5jcykpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBXQUlUX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzICE9IDApIHsKKyAgICAgICAgLyogd2FpdCBhdCBsZWFzdCB1bnRpbCB0aGUgdGFyZ2V0ICovCisgICAgICAgIERXT1JEIG5vdywgdGFyZ2V0ID0gR2V0VGlja0NvdW50KCkgKyBtaWxsaXNlY29uZHM7CisgICAgICAgIHdoaWxlIChtdXRleC0+bG9ja2VkKSB7CisgICAgICAgICAgICBpZiAoUHlDT05EX1RJTUVEV0FJVCgmbXV0ZXgtPmN2LCAmbXV0ZXgtPmNzLCBtaWxsaXNlY29uZHMqMTAwMCkgPCAwKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gV0FJVF9GQUlMRUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBub3cgPSBHZXRUaWNrQ291bnQoKTsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPD0gbm93KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbWlsbGlzZWNvbmRzID0gdGFyZ2V0LW5vdzsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIW11dGV4LT5sb2NrZWQpIHsKKyAgICAgICAgbXV0ZXgtPmxvY2tlZCA9IDE7CisgICAgICAgIHJlc3VsdCA9IFdBSVRfT0JKRUNUXzA7CisgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgICAgcmVzdWx0ID0gV0FJVF9USU1FT1VUOworICAgIC8qIGVsc2UsIGl0IGlzIFdBSVRfRkFJTEVEICovCisgICAgUHlNVVRFWF9VTkxPQ0soJm11dGV4LT5jcyk7IC8qIG11c3QgaWdub3JlIHJlc3VsdCBoZXJlICovCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQk9PTAorTGVhdmVOb25SZWN1cnNpdmVNdXRleChQTlJNVVRFWCBtdXRleCkKK3sKKyAgICBCT09MIHJlc3VsdDsKKyAgICBpZiAoUHlNVVRFWF9MT0NLKCZtdXRleC0+Y3MpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgbXV0ZXgtPmxvY2tlZCA9IDA7CisgICAgcmVzdWx0ID0gUHlDT05EX1NJR05BTCgmbXV0ZXgtPmN2KTsKKyAgICByZXN1bHQgJj0gUHlNVVRFWF9VTkxPQ0soJm11dGV4LT5jcyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30gICAgCisKKyNlbHNlIC8qIGlmICEgX1BZX1VTRV9DVl9MT0NLUyAqLworCisvKiBOUi1sb2NrcyBiYXNlZCBvbiBhIGtlcm5lbCBtdXRleCAqLwogI2RlZmluZSBQTlJNVVRFWCBIQU5ETEUKIAogUE5STVVURVgKQEAgLTM1LDYgKzEzOCw3IEBACiB7CiAgICAgcmV0dXJuIFJlbGVhc2VTZW1hcGhvcmUobXV0ZXgsIDEsIE5VTEwpOwogfQorI2VuZGlmIC8qIF9QWV9VU0VfQ1ZfTE9DS1MgKi8KIAogbG9uZyBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpOwogCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX3B0aC5oIGIvUHl0aG9uL3RocmVhZF9wdGguaAppbmRleCA4MmEwMGU3Li41NzA0MjY2IDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX3B0aC5oCisrKyBiL1B5dGhvbi90aHJlYWRfcHRoLmgKQEAgLTY5LDkgKzY5LDggQEAKICAgICB2b2xhdGlsZSBwdGhfdCB0aHJlYWRpZDsKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIC8qIEp1bXAgdGhyb3VnaCBzb21lIGhvb3BzIGZvciBBbHBoYSBPU0YvMSAqLwogICAgIHRocmVhZGlkID0gcHRoX3NlbGYoKTsKLSAgICByZXR1cm4gKGxvbmcpICoobG9uZyAqKSAmdGhyZWFkaWQ7CisgICAgcmV0dXJuIChsb25nKSB0aHJlYWRpZDsKIH0KIAogdm9pZCBQeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmggYi9QeXRob24vdGhyZWFkX3B0aHJlYWQuaAppbmRleCAzY2RlMDM1Li41MDA3YWFmIDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX3B0aHJlYWQuaAorKysgYi9QeXRob24vdGhyZWFkX3B0aHJlYWQuaApAQCAtMTQ4LDcgKzE0OCw3IEBACiAgKiBJbml0aWFsaXphdGlvbi4KICAqLwogCi0jaWZkZWYgX0hBVkVfQlNESQorI2lmIGRlZmluZWQoX0hBVkVfQlNESSkKIHN0YXRpYwogdm9pZCBfbm9vcCh2b2lkKQogewpAQCAtMjQ0LDggKzI0NCw3IEBACiAgICBob3NlZCIgYmVjYXVzZToKICAgICAgLSBJdCBkb2VzIG5vdCBndWFyYW50ZWUgdGhlIHByb21pc2UgdGhhdCBhIG5vbi16ZXJvIGludGVnZXIgaXMgcmV0dXJuZWQuCiAgICAgIC0gVGhlIGNhc3QgdG8gbG9uZyBpcyBpbmhlcmVudGx5IHVuc2FmZS4KLSAgICAgLSBJdCBpcyBub3QgY2xlYXIgdGhhdCB0aGUgJ3ZvbGF0aWxlJyAoZm9yIEFJWD8pIGFuZCB1Z2x5IGNhc3RpbmcgaW4gdGhlCi0gICAgICAgbGF0dGVyIHJldHVybiBzdGF0ZW1lbnQgKGZvciBBbHBoYSBPU0YvMSkgYXJlIGFueSBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAtIEl0IGlzIG5vdCBjbGVhciB0aGF0IHRoZSAndm9sYXRpbGUnIChmb3IgQUlYPykgYXJlIGFueSBsb25nZXIgbmVjZXNzYXJ5LgogKi8KIGxvbmcKIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCkKQEAgLTI1MywxMyArMjUyLDggQEAKICAgICB2b2xhdGlsZSBwdGhyZWFkX3QgdGhyZWFkaWQ7CiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICAvKiBKdW1wIHRocm91Z2ggc29tZSBob29wcyBmb3IgQWxwaGEgT1NGLzEgKi8KICAgICB0aHJlYWRpZCA9IHB0aHJlYWRfc2VsZigpOwotI2lmIFNJWkVPRl9QVEhSRUFEX1QgPD0gU0laRU9GX0xPTkcKICAgICByZXR1cm4gKGxvbmcpIHRocmVhZGlkOwotI2Vsc2UKLSAgICByZXR1cm4gKGxvbmcpICoobG9uZyAqKSAmdGhyZWFkaWQ7Ci0jZW5kaWYKIH0KIAogdm9pZApAQCAtNDQ5LDEyICs0NDMsMTUgQEAKIAogICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwogCi0gICAgc3RhdHVzID0gcHRocmVhZF9tdXRleF9kZXN0cm95KCAmdGhlbG9jay0+bXV0ICk7Ci0gICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX211dGV4X2Rlc3Ryb3kiKTsKLQorICAgIC8qIHNvbWUgcHRocmVhZC1saWtlIGltcGxlbWVudGF0aW9ucyB0aWUgdGhlIG11dGV4IHRvIHRoZSBjb25kCisgICAgICogYW5kIG11c3QgaGF2ZSB0aGUgY29uZCBkZXN0cm95ZWQgZmlyc3QuCisgICAgICovCiAgICAgc3RhdHVzID0gcHRocmVhZF9jb25kX2Rlc3Ryb3koICZ0aGVsb2NrLT5sb2NrX3JlbGVhc2VkICk7CiAgICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX2NvbmRfZGVzdHJveSIpOwogCisgICAgc3RhdHVzID0gcHRocmVhZF9tdXRleF9kZXN0cm95KCAmdGhlbG9jay0+bXV0ICk7CisgICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX211dGV4X2Rlc3Ryb3kiKTsKKwogICAgIGZyZWUoKHZvaWQgKil0aGVsb2NrKTsKIH0KIApAQCAtNTM3LDEyICs1MzQsMTIgQEAKIAogICAgIHRoZWxvY2stPmxvY2tlZCA9IDA7CiAKLSAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X3VubG9jayggJnRoZWxvY2stPm11dCApOwotICAgIENIRUNLX1NUQVRVUygicHRocmVhZF9tdXRleF91bmxvY2tbM10iKTsKLQogICAgIC8qIHdha2UgdXAgc29tZW9uZSAoYW55b25lLCBpZiBhbnkpIHdhaXRpbmcgb24gdGhlIGxvY2sgKi8KICAgICBzdGF0dXMgPSBwdGhyZWFkX2NvbmRfc2lnbmFsKCAmdGhlbG9jay0+bG9ja19yZWxlYXNlZCApOwogICAgIENIRUNLX1NUQVRVUygicHRocmVhZF9jb25kX3NpZ25hbCIpOworCisgICAgc3RhdHVzID0gcHRocmVhZF9tdXRleF91bmxvY2soICZ0aGVsb2NrLT5tdXQgKTsKKyAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfdW5sb2NrWzNdIik7CiB9CiAKICNlbmRpZiAvKiBVU0VfU0VNQVBIT1JFUyAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9zZ2kuaCBiL1B5dGhvbi90aHJlYWRfc2dpLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MWFiMmMuLjAwMDAwMDAKLS0tIGEvUHl0aG9uL3RocmVhZF9zZ2kuaAorKysgL2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0jaW5jbHVkZSA8c3lzL3ByY3RsLmg+Ci0jaW5jbHVkZSA8dWxvY2tzLmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLQotI2RlZmluZSBIRFJfU0laRSAgICAgICAgMjY4MCAgICAvKiBzaXplb2YodXNoZHJfdCkgKi8KLSNkZWZpbmUgTUFYUFJPQyAgICAgICAgIDEwMCAgICAgLyogbWF4ICMgb2YgdGhyZWFkcyB0aGF0IGNhbiBiZSBzdGFydGVkICovCi0KLXN0YXRpYyB1c3B0cl90ICpzaGFyZWRfYXJlbmE7Ci1zdGF0aWMgdWxvY2tfdCBjb3VudF9sb2NrOyAgICAgIC8qIHByb3RlY3Rpb24gZm9yIHNvbWUgdmFyaWFibGVzICovCi1zdGF0aWMgdWxvY2tfdCB3YWl0X2xvY2s7ICAgICAgIC8qIGxvY2sgdXNlZCB0byB3YWl0IGZvciBvdGhlciB0aHJlYWRzICovCi1zdGF0aWMgaW50IHdhaXRpbmdfZm9yX3RocmVhZHM7IC8qIHByb3RlY3RlZCBieSBjb3VudF9sb2NrICovCi1zdGF0aWMgaW50IG50aHJlYWRzOyAgICAgICAgICAgIC8qIHByb3RlY3RlZCBieSBjb3VudF9sb2NrICovCi1zdGF0aWMgaW50IGV4aXRfc3RhdHVzOwotc3RhdGljIGludCBleGl0aW5nOyAgICAgICAgICAgICAvKiB3ZSdyZSBhbHJlYWR5IGV4aXRpbmcgKGZvciBtYXliZV9leGl0KSAqLwotc3RhdGljIHBpZF90IG15X3BpZDsgICAgICAgICAgICAvKiBQSUQgb2YgbWFpbiB0aHJlYWQgKi8KLXN0YXRpYyBzdHJ1Y3QgcGlkbGlzdCB7Ci0gICAgcGlkX3QgcGFyZW50OwotICAgIHBpZF90IGNoaWxkOwotfSBwaWRsaXN0W01BWFBST0NdOyAgICAgLyogUElEcyBvZiBvdGhlciB0aHJlYWRzOyBwcm90ZWN0ZWQgYnkgY291bnRfbG9jayAqLwotc3RhdGljIGludCBtYXhwaWRpbmRleDsgICAgICAgICAvKiAjIG9mIFBJRHMgaW4gcGlkbGlzdCAqLwotLyoKLSAqIEluaXRpYWxpemF0aW9uLgotICovCi1zdGF0aWMgdm9pZCBQeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLSNpZmRlZiBVU0VfREwKLSAgICBsb25nIGFkZHIsIHNpemU7Ci0jZW5kaWYgLyogVVNFX0RMICovCi0KLQotI2lmZGVmIFVTRV9ETAotICAgIGlmICgoc2l6ZSA9IHVzY29uZmlnKENPTkZfSU5JVFNJWkUsIDY0KjEwMjQpKSA8IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRTSVpFIChjaGVjaykiKTsKLSAgICBpZiAodXNjb25maWcoQ09ORl9JTklUU0laRSwgc2l6ZSkgPCAwKQotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9JTklUU0laRSAocmVzZXQpIik7Ci0gICAgYWRkciA9IChsb25nKSBkbF9nZXRyYW5nZShzaXplICsgSERSX1NJWkUpOwotICAgIGRwcmludGYoKCJ0cnlpbmcgdG8gdXNlIGFkZHIgJXAtJXAgZm9yIHNoYXJlZCBhcmVuYVxuIiwgYWRkciwgYWRkcitzaXplKSk7Ci0gICAgZXJybm8gPSAwOwotICAgIGlmICgoYWRkciA9IHVzY29uZmlnKENPTkZfQVRUQUNIQUREUiwgYWRkcikpIDwgMCAmJiBlcnJubyAhPSAwKQotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9BVFRBQ0hBRERSIChzZXQpIik7Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgaWYgKHVzY29uZmlnKENPTkZfSU5JVFVTRVJTLCAxNikgPCAwKQotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9JTklUVVNFUlMiKTsKLSAgICBteV9waWQgPSBnZXRwaWQoKTsgICAgICAgICAgLyogc28gdGhhdCB3ZSBrbm93IHdoaWNoIGlzIHRoZSBtYWluIHRocmVhZCAqLwotICAgIGlmICh1c2NvbmZpZyhDT05GX0FSRU5BVFlQRSwgVVNfU0hBUkVET05MWSkgPCAwKQotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9BUkVOQVRZUEUiKTsKLSAgICB1c2NvbmZpZyhDT05GX0xPQ0tUWVBFLCBVU19ERUJVRyk7IC8qIFhYWCAqLwotI2lmZGVmIFB5X0RFQlVHCi0gICAgaWYgKHRocmVhZF9kZWJ1ZyAmIDQpCi0gICAgICAgIHVzY29uZmlnKENPTkZfTE9DS1RZUEUsIFVTX0RFQlVHUExVUyk7Ci0gICAgZWxzZSBpZiAodGhyZWFkX2RlYnVnICYgMikKLSAgICAgICAgdXNjb25maWcoQ09ORl9MT0NLVFlQRSwgVVNfREVCVUcpOwotI2VuZGlmIC8qIFB5X0RFQlVHICovCi0gICAgaWYgKChzaGFyZWRfYXJlbmEgPSB1c2luaXQodG1wbmFtKDApKSkgPT0gMCkKLSAgICAgICAgcGVycm9yKCJ1c2luaXQiKTsKLSNpZmRlZiBVU0VfREwKLSAgICBpZiAodXNjb25maWcoQ09ORl9BVFRBQ0hBRERSLCBhZGRyKSA8IDApIC8qIHJlc2V0IGFkZHJlc3MgKi8KLSAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfQVRUQUNIQUREUiAocmVzZXQpIik7Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgaWYgKChjb3VudF9sb2NrID0gdXNuZXdsb2NrKHNoYXJlZF9hcmVuYSkpID09IE5VTEwpCi0gICAgICAgIHBlcnJvcigidXNuZXdsb2NrIChjb3VudF9sb2NrKSIpOwotICAgICh2b2lkKSB1c2luaXRsb2NrKGNvdW50X2xvY2spOwotICAgIGlmICgod2FpdF9sb2NrID0gdXNuZXdsb2NrKHNoYXJlZF9hcmVuYSkpID09IE5VTEwpCi0gICAgICAgIHBlcnJvcigidXNuZXdsb2NrICh3YWl0X2xvY2spIik7Ci0gICAgZHByaW50ZigoImFyZW5hIHN0YXJ0OiAlcCwgYXJlbmEgc2l6ZTogJWxkXG4iLCAgc2hhcmVkX2FyZW5hLCAobG9uZykgdXNjb25maWcoQ09ORl9HRVRTSVpFLCBzaGFyZWRfYXJlbmEpKSk7Ci19Ci0KLS8qCi0gKiBUaHJlYWQgc3VwcG9ydC4KLSAqLwotCi1zdGF0aWMgdm9pZCBjbGVhbl90aHJlYWRzKHZvaWQpCi17Ci0gICAgaW50IGksIGo7Ci0gICAgcGlkX3QgbXlwaWQsIHBpZDsKLQotICAgIC8qIGNsZWFuIHVwIGFueSBleGl0ZWQgdGhyZWFkcyAqLwotICAgIG15cGlkID0gZ2V0cGlkKCk7Ci0gICAgaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCBtYXhwaWRpbmRleCkgewotICAgICAgICBpZiAocGlkbGlzdFtpXS5wYXJlbnQgPT0gbXlwaWQgJiYgKHBpZCA9IHBpZGxpc3RbaV0uY2hpbGQpID4gMCkgewotICAgICAgICAgICAgcGlkID0gd2FpdHBpZChwaWQsIDAsIFdOT0hBTkcpOwotICAgICAgICAgICAgaWYgKHBpZCA+IDApIHsKLSAgICAgICAgICAgICAgICAvKiBhIHRocmVhZCBoYXMgZXhpdGVkICovCi0gICAgICAgICAgICAgICAgcGlkbGlzdFtpXSA9IHBpZGxpc3RbLS1tYXhwaWRpbmRleF07Ci0gICAgICAgICAgICAgICAgLyogcmVtb3ZlIHJlZmVyZW5jZXMgdG8gY2hpbGRyZW4gb2YgZGVhZCBwcm9jICovCi0gICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG1heHBpZGluZGV4OyBqKyspCi0gICAgICAgICAgICAgICAgICAgIGlmIChwaWRsaXN0W2pdLnBhcmVudCA9PSBwaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBwaWRsaXN0W2pdLmNoaWxkID0gLTE7Ci0gICAgICAgICAgICAgICAgY29udGludWU7IC8qIGRvbid0IGluY3JlbWVudCBpICovCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaSsrOwotICAgIH0KLSAgICAvKiBjbGVhbiB1cCB0aGUgbGlzdCAqLwotICAgIGkgPSAwOwotICAgIHdoaWxlIChpIDwgbWF4cGlkaW5kZXgpIHsKLSAgICAgICAgaWYgKHBpZGxpc3RbaV0uY2hpbGQgPT0gLTEpIHsKLSAgICAgICAgICAgIHBpZGxpc3RbaV0gPSBwaWRsaXN0Wy0tbWF4cGlkaW5kZXhdOwotICAgICAgICAgICAgY29udGludWU7IC8qIGRvbid0IGluY3JlbWVudCBpICovCi0gICAgICAgIH0KLSAgICAgICAgaSsrOwotICAgIH0KLX0KLQotbG9uZyBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKHZvaWQgKCpmdW5jKSh2b2lkICopLCB2b2lkICphcmcpCi17Ci0jaWZkZWYgVVNFX0RMCi0gICAgbG9uZyBhZGRyLCBzaXplOwotICAgIHN0YXRpYyBpbnQgbG9jYWxfaW5pdGlhbGl6ZWQgPSAwOwotI2VuZGlmIC8qIFVTRV9ETCAqLwotICAgIGludCBzdWNjZXNzID0gMDsgICAgICAgICAgICAvKiBpbml0IG5vdCBuZWVkZWQgd2hlbiBTT0xBUklTX1RIUkVBRFMgYW5kICovCi0gICAgICAgICAgICAgICAgLyogQ19USFJFQURTIGltcGxlbWVudGVkIHByb3Blcmx5ICovCi0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIHN3aXRjaCAodXNzZXRsb2NrKGNvdW50X2xvY2spKSB7Ci0gICAgY2FzZSAwOiByZXR1cm4gMDsKLSAgICBjYXNlIC0xOiBwZXJyb3IoInVzc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICB9Ci0gICAgaWYgKG1heHBpZGluZGV4ID49IE1BWFBST0MpCi0gICAgICAgIHN1Y2Nlc3MgPSAtMTsKLSAgICBlbHNlIHsKLSNpZmRlZiBVU0VfREwKLSAgICAgICAgaWYgKCFsb2NhbF9pbml0aWFsaXplZCkgewotICAgICAgICAgICAgaWYgKChzaXplID0gdXNjb25maWcoQ09ORl9JTklUU0laRSwgNjQqMTAyNCkpIDwgMCkKLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9JTklUU0laRSAoY2hlY2spIik7Ci0gICAgICAgICAgICBpZiAodXNjb25maWcoQ09ORl9JTklUU0laRSwgc2l6ZSkgPCAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRTSVpFIChyZXNldCkiKTsKLSAgICAgICAgICAgIGFkZHIgPSAobG9uZykgZGxfZ2V0cmFuZ2Uoc2l6ZSArIEhEUl9TSVpFKTsKLSAgICAgICAgICAgIGRwcmludGYoKCJ0cnlpbmcgdG8gdXNlIGFkZHIgJXAtJXAgZm9yIHNwcm9jXG4iLAotICAgICAgICAgICAgICAgICAgICAgYWRkciwgYWRkcitzaXplKSk7Ci0gICAgICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgICAgICBpZiAoKGFkZHIgPSB1c2NvbmZpZyhDT05GX0FUVEFDSEFERFIsIGFkZHIpKSA8IDAgJiYKLSAgICAgICAgICAgICAgICBlcnJubyAhPSAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FUVEFDSEFERFIgKHNldCkiKTsKLSAgICAgICAgfQotI2VuZGlmIC8qIFVTRV9ETCAqLwotICAgICAgICBjbGVhbl90aHJlYWRzKCk7Ci0gICAgICAgIGlmICgoc3VjY2VzcyA9IHNwcm9jKGZ1bmMsIFBSX1NBTEwsIGFyZykpIDwgMCkKLSAgICAgICAgICAgIHBlcnJvcigic3Byb2MiKTsKLSNpZmRlZiBVU0VfREwKLSAgICAgICAgaWYgKCFsb2NhbF9pbml0aWFsaXplZCkgewotICAgICAgICAgICAgaWYgKHVzY29uZmlnKENPTkZfQVRUQUNIQUREUiwgYWRkcikgPCAwKQotICAgICAgICAgICAgICAgIC8qIHJlc2V0IGFkZHJlc3MgKi8KLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9BVFRBQ0hBRERSIChyZXNldCkiKTsKLSAgICAgICAgICAgIGxvY2FsX2luaXRpYWxpemVkID0gMTsKLSAgICAgICAgfQotI2VuZGlmIC8qIFVTRV9ETCAqLwotICAgICAgICBpZiAoc3VjY2VzcyA+PSAwKSB7Ci0gICAgICAgICAgICBudGhyZWFkcysrOwotICAgICAgICAgICAgcGlkbGlzdFttYXhwaWRpbmRleF0ucGFyZW50ID0gZ2V0cGlkKCk7Ci0gICAgICAgICAgICBwaWRsaXN0W21heHBpZGluZGV4KytdLmNoaWxkID0gc3VjY2VzczsKLSAgICAgICAgICAgIGRwcmludGYoKCJwaWRsaXN0WyVkXSA9ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgbWF4cGlkaW5kZXgtMSwgc3VjY2VzcykpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICh1c3Vuc2V0bG9jayhjb3VudF9sb2NrKSA8IDApCi0gICAgICAgIHBlcnJvcigidXN1bnNldGxvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLWxvbmcgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIHJldHVybiBnZXRwaWQoKTsKLX0KLQotdm9pZCBQeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBleGl0KDApOwotICAgIGlmICh1c3NldGxvY2soY291bnRfbG9jaykgPCAwKQotICAgICAgICBwZXJyb3IoInVzc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICBudGhyZWFkcy0tOwotICAgIGlmIChnZXRwaWQoKSA9PSBteV9waWQpIHsKLSAgICAgICAgLyogbWFpbiB0aHJlYWQ7IHdhaXQgZm9yIG90aGVyIHRocmVhZHMgdG8gZXhpdCAqLwotICAgICAgICBleGl0aW5nID0gMTsKLSAgICAgICAgd2FpdGluZ19mb3JfdGhyZWFkcyA9IDE7Ci0gICAgICAgIGlmICh1c3NldGxvY2sod2FpdF9sb2NrKSA8IDApCi0gICAgICAgICAgICBwZXJyb3IoInVzc2V0bG9jayAod2FpdF9sb2NrKSIpOwotICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICBpZiAobnRocmVhZHMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgZHByaW50ZigoInJlYWxseSBleGl0ICglZClcbiIsIGV4aXRfc3RhdHVzKSk7Ci0gICAgICAgICAgICAgICAgZXhpdChleGl0X3N0YXR1cyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodXN1bnNldGxvY2soY291bnRfbG9jaykgPCAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXN1bnNldGxvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgICAgICAgICBkcHJpbnRmKCgid2FpdGluZyBmb3Igb3RoZXIgdGhyZWFkcyAoJWQpXG4iLCBudGhyZWFkcykpOwotICAgICAgICAgICAgaWYgKHVzc2V0bG9jayh3YWl0X2xvY2spIDwgMCkKLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzc2V0bG9jayAod2FpdF9sb2NrKSIpOwotICAgICAgICAgICAgaWYgKHVzc2V0bG9jayhjb3VudF9sb2NrKSA8IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c3NldGxvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLyogbm90IHRoZSBtYWluIHRocmVhZCAqLwotICAgIGlmICh3YWl0aW5nX2Zvcl90aHJlYWRzKSB7Ci0gICAgICAgIGRwcmludGYoKCJtYWluIHRocmVhZCBpcyB3YWl0aW5nXG4iKSk7Ci0gICAgICAgIGlmICh1c3Vuc2V0bG9jayh3YWl0X2xvY2spIDwgMCkKLSAgICAgICAgICAgIHBlcnJvcigidXN1bnNldGxvY2sgKHdhaXRfbG9jaykiKTsKLSAgICB9Ci0gICAgaWYgKHVzdW5zZXRsb2NrKGNvdW50X2xvY2spIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICBfZXhpdCgwKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4KLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrIFB5VGhyZWFkX2FsbG9jYXRlX2xvY2sodm9pZCkKLXsKLSAgICB1bG9ja190IGxvY2s7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgaWYgKChsb2NrID0gdXNuZXdsb2NrKHNoYXJlZF9hcmVuYSkpID09IE5VTEwpCi0gICAgICAgIHBlcnJvcigidXNuZXdsb2NrIik7Ci0gICAgKHZvaWQpIHVzaW5pdGxvY2sobG9jayk7Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKSAtPiAlcFxuIiwgbG9jaykpOwotICAgIHJldHVybiAoUHlUaHJlYWRfdHlwZV9sb2NrKSBsb2NrOwotfQotCi12b2lkIFB5VGhyZWFkX2ZyZWVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZnJlZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICB1c2ZyZWVsb2NrKCh1bG9ja190KSBsb2NrLCBzaGFyZWRfYXJlbmEpOwotfQotCi1pbnQgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3M7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCB3YWl0ZmxhZykpOwotICAgIGVycm5vID0gMDsgICAgICAgICAgICAgICAgICAvKiBjbGVhciBpdCBqdXN0IGluIGNhc2UgKi8KLSAgICBpZiAod2FpdGZsYWcpCi0gICAgICAgIHN1Y2Nlc3MgPSB1c3NldGxvY2soKHVsb2NrX3QpIGxvY2spOwotICAgIGVsc2UKLSAgICAgICAgc3VjY2VzcyA9IHVzY3NldGxvY2soKHVsb2NrX3QpIGxvY2ssIDEpOyAvKiBUcnkgaXQgb25jZSAqLwotICAgIGlmIChzdWNjZXNzIDwgMCkKLSAgICAgICAgcGVycm9yKHdhaXRmbGFnID8gInVzc2V0bG9jayIgOiAidXNjc2V0bG9jayIpOwotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSAtPiAlZFxuIiwgbG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotdm9pZCBQeVRocmVhZF9yZWxlYXNlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgaWYgKHVzdW5zZXRsb2NrKCh1bG9ja190KSBsb2NrKSA8IDApCi0gICAgICAgIHBlcnJvcigidXN1bnNldGxvY2siKTsKLX0KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfc29sYXJpcy5oIGIvUHl0aG9uL3RocmVhZF9zb2xhcmlzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZTFjZmMuLjAwMDAwMDAKLS0tIGEvUHl0aG9uL3RocmVhZF9zb2xhcmlzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPC91c3IvaW5jbHVkZS90aHJlYWQuaD4KLSN1bmRlZiBfUE9TSVhfVEhSRUFEUwotCi0KLS8qCi0gKiBJbml0aWFsaXphdGlvbi4KLSAqLwotc3RhdGljIHZvaWQgUHlUaHJlYWRfX2luaXRfdGhyZWFkKHZvaWQpCi17Ci19Ci0KLS8qCi0gKiBUaHJlYWQgc3VwcG9ydC4KLSAqLwotc3RydWN0IGZ1bmNfYXJnIHsKLSAgICB2b2lkICgqZnVuYykodm9pZCAqKTsKLSAgICB2b2lkICphcmc7Ci19OwotCi1zdGF0aWMgdm9pZCAqCi1uZXdfZnVuYyh2b2lkICpmdW5jYXJnKQotewotICAgIHZvaWQgKCpmdW5jKSh2b2lkICopOwotICAgIHZvaWQgKmFyZzsKLQotICAgIGZ1bmMgPSAoKHN0cnVjdCBmdW5jX2FyZyAqKSBmdW5jYXJnKS0+ZnVuYzsKLSAgICBhcmcgPSAoKHN0cnVjdCBmdW5jX2FyZyAqKSBmdW5jYXJnKS0+YXJnOwotICAgIGZyZWUoZnVuY2FyZyk7Ci0gICAgKCpmdW5jKShhcmcpOwotICAgIHJldHVybiAwOwotfQotCi0KLWxvbmcKLVB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSAgICB0aHJlYWRfdCB0aWQ7Ci0gICAgc3RydWN0IGZ1bmNfYXJnICpmdW5jYXJnOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICBmdW5jYXJnID0gKHN0cnVjdCBmdW5jX2FyZyAqKSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBmdW5jX2FyZykpOwotICAgIGZ1bmNhcmctPmZ1bmMgPSBmdW5jOwotICAgIGZ1bmNhcmctPmFyZyA9IGFyZzsKLSAgICBpZiAodGhyX2NyZWF0ZSgwLCAwLCBuZXdfZnVuYywgZnVuY2FyZywKLSAgICAgICAgICAgICAgICAgICBUSFJfREVUQUNIRUQgfCBUSFJfTkVXX0xXUCwgJnRpZCkpIHsKLSAgICAgICAgcGVycm9yKCJ0aHJfY3JlYXRlIik7Ci0gICAgICAgIGZyZWUoKHZvaWQgKikgZnVuY2FyZyk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIHRpZDsKLX0KLQotbG9uZwotUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgcmV0dXJuIHRocl9zZWxmKCk7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIGV4aXQoMCk7Ci0gICAgdGhyX2V4aXQoMCk7Ci19Ci0KLS8qCi0gKiBMb2NrIHN1cHBvcnQuCi0gKi8KLVB5VGhyZWFkX3R5cGVfbG9jawotUHlUaHJlYWRfYWxsb2NhdGVfbG9jayh2b2lkKQotewotICAgIG11dGV4X3QgKmxvY2s7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgbG9jayA9IChtdXRleF90ICopIG1hbGxvYyhzaXplb2YobXV0ZXhfdCkpOwotICAgIGlmIChtdXRleF9pbml0KGxvY2ssIFVTWU5DX1RIUkVBRCwgMCkpIHsKLSAgICAgICAgcGVycm9yKCJtdXRleF9pbml0Iik7Ci0gICAgICAgIGZyZWUoKHZvaWQgKikgbG9jayk7Ci0gICAgICAgIGxvY2sgPSAwOwotICAgIH0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpIC0+ICVwXG4iLCBsb2NrKSk7Ci0gICAgcmV0dXJuIChQeVRocmVhZF90eXBlX2xvY2spIGxvY2s7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX2ZyZWVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZnJlZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBtdXRleF9kZXN0cm95KChtdXRleF90ICopIGxvY2spOwotICAgIGZyZWUoKHZvaWQgKikgbG9jayk7Ci19Ci0KLWludAotUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3M7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCB3YWl0ZmxhZykpOwotICAgIGlmICh3YWl0ZmxhZykKLSAgICAgICAgc3VjY2VzcyA9IG11dGV4X2xvY2soKG11dGV4X3QgKikgbG9jayk7Ci0gICAgZWxzZQotICAgICAgICBzdWNjZXNzID0gbXV0ZXhfdHJ5bG9jaygobXV0ZXhfdCAqKSBsb2NrKTsKLSAgICBpZiAoc3VjY2VzcyA8IDApCi0gICAgICAgIHBlcnJvcih3YWl0ZmxhZyA/ICJtdXRleF9sb2NrIiA6ICJtdXRleF90cnlsb2NrIik7Ci0gICAgZWxzZQotICAgICAgICBzdWNjZXNzID0gIXN1Y2Nlc3M7IC8qIHNvbGFyaXMgZG9lcyBpdCB0aGUgb3RoZXIgd2F5IHJvdW5kICovCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIC0+ICVkXG4iLCBsb2NrLCB3YWl0ZmxhZywgc3VjY2VzcykpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkCi1QeVRocmVhZF9yZWxlYXNlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgaWYgKG11dGV4X3VubG9jaygobXV0ZXhfdCAqKSBsb2NrKSkKLSAgICAgICAgcGVycm9yKCJtdXRleF91bmxvY2siKTsKLX0KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfd2luY2UuaCBiL1B5dGhvbi90aHJlYWRfd2luY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFkZGMwMi4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX3dpbmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotCi0vKiBUaGlzIGNvZGUgaW1wbGVtZW50ZWQgYnkgTWFyayBIYW1tb25kIChNSGFtbW9uZEBza2lwcGluZXQuY29tLmF1KSAqLwotCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHB5ZGVidWcuaD4KLQotbG9uZyBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpOwotCi0vKgotICogQ2hhbmdlIGFsbCBoZWFkZXJzIHRvIHB1cmUgQU5TSSBhcyBubyBvbmUgd2lsbCB1c2UgSyZSIHN0eWxlIG9uIGFuCi0gKiBOVAotICovCi0KLS8qCi0gKiBJbml0aWFsaXphdGlvbiBvZiB0aGUgQyBwYWNrYWdlLCBzaG91bGQgbm90IGJlIG5lZWRlZC4KLSAqLwotc3RhdGljIHZvaWQgUHlUaHJlYWRfX2luaXRfdGhyZWFkKHZvaWQpCi17Ci19Ci0KLS8qCi0gKiBUaHJlYWQgc3VwcG9ydC4KLSAqLwotbG9uZyBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKHZvaWQgKCpmdW5jKSh2b2lkICopLCB2b2lkICphcmcpCi17Ci0gICAgbG9uZyBydjsKLSAgICBpbnQgc3VjY2VzcyA9IC0xOwotCi0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSkpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBydiA9IF9iZWdpbnRocmVhZChmdW5jLCAwLCBhcmcpOyAvKiB1c2UgZGVmYXVsdCBzdGFjayBzaXplICovCi0KLSAgICBpZiAocnYgIT0gLTEpIHsKLSAgICAgICAgc3VjY2VzcyA9IDA7Ci0gICAgICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgc3VjY2VlZGVkOlxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLS8qCi0gKiBSZXR1cm4gdGhlIHRocmVhZCBJZCBpbnN0ZWFkIG9mIGFuIGhhbmRsZS4gVGhlIElkIGlzIHNhaWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlCi0gKiB0aHJlYWQgaW4gdGhlIHN5c3RlbQotICovCi1sb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCkKLXsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgcmV0dXJuIEdldEN1cnJlbnRUaHJlYWRJZCgpOwotfQotCi12b2lkIFB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBleGl0KDApOwotICAgIF9lbmR0aHJlYWQoKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4gSXQgaGFzIHRvIGJlIGltcGxlbWVudGVkIHVzaW5nIE11dGV4ZXMsIGFzCi0gKiBDRSBkb2VzbnQgc3VwcG9ydCBzZW1hcGhvcmVzLiAgVGhlcmVmb3JlIHdlIHVzZSBzb21lIGhhY2tzIHRvCi0gKiBzaW11bGF0ZSB0aGUgbm9uIHJlZW50cmFudCByZXF1aXJlbWVudHMgb2YgUHl0aG9uIGxvY2tzCi0gKi8KLVB5VGhyZWFkX3R5cGVfbG9jayBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKHZvaWQpCi17Ci0gICAgSEFORExFIGFMb2NrOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2sgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgYUxvY2sgPSBDcmVhdGVFdmVudChOVUxMLCAgICAgICAgICAgLyogU2VjdXJpdHkgYXR0cmlidXRlcyAgICAgICovCi0gICAgICAgICAgICAwLCAgICAgICAgICAgICAgLyogTWFudWFsLVJlc2V0ICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAvKiBJcyBpbml0aWFsbHkgc2lnbmFsbGVkICAqLwotICAgICAgICAgICAgTlVMTCk7ICAgICAgICAgIC8qIE5hbWUgb2YgZXZlbnQgICAgICAgICAgICAqLwotCi0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpIC0+ICVwXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksIGFMb2NrKSk7Ci0KLSAgICByZXR1cm4gKFB5VGhyZWFkX3R5cGVfbG9jaykgYUxvY2s7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBhTG9jaykKLXsKLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLGFMb2NrKSk7Ci0KLSAgICBDbG9zZUhhbmRsZShhTG9jayk7Ci19Ci0KLS8qCi0gKiBSZXR1cm4gMSBvbiBzdWNjZXNzIGlmIHRoZSBsb2NrIHdhcyBhY3F1aXJlZAotICoKLSAqIGFuZCAwIGlmIHRoZSBsb2NrIHdhcyBub3QgYWNxdWlyZWQuIFRoaXMgbWVhbnMgYSAwIGlzIHJldHVybmVkCi0gKiBpZiB0aGUgbG9jayBoYXMgYWxyZWFkeSBiZWVuIGFjcXVpcmVkIGJ5IHRoaXMgdGhyZWFkIQotICovCi1pbnQgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBhTG9jaywgaW50IHdhaXRmbGFnKQotewotICAgIGludCBzdWNjZXNzID0gMTsKLSAgICBEV09SRCB3YWl0UmVzdWx0OwotCi0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksYUxvY2ssIHdhaXRmbGFnKSk7Ci0KLSNpZm5kZWYgREVCVUcKLSAgICB3YWl0UmVzdWx0ID0gV2FpdEZvclNpbmdsZU9iamVjdChhTG9jaywgKHdhaXRmbGFnID8gSU5GSU5JVEUgOiAwKSk7Ci0jZWxzZQotICAgIC8qIFRvIGFpZCBpbiBkZWJ1Z2dpbmcsIHdlIHJlZ3VsYXJseSB3YWtlIHVwLiAgVGhpcyBhbGxvd3MgdXMgdG8KLSAgICBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciAqLwotICAgIHdoaWxlIChUUlVFKSB7Ci0gICAgICAgIHdhaXRSZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGFMb2NrLCB3YWl0ZmxhZyA/IDMwMDAgOiAwKTsKLSAgICAgICAgaWYgKHdhaXRmbGFnPT0wIHx8ICh3YWl0ZmxhZyAmJiB3YWl0UmVzdWx0ID09IFdBSVRfT0JKRUNUXzApKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAod2FpdFJlc3VsdCAhPSBXQUlUX09CSkVDVF8wKSB7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDA7ICAgIC8qIFdlIGZhaWxlZCAqLwotICAgIH0KLQotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIC0+ICVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksYUxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7Ci0KLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotdm9pZCBQeVRocmVhZF9yZWxlYXNlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGFMb2NrKQotewotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksYUxvY2spKTsKLQotICAgIGlmICghU2V0RXZlbnQoYUxvY2spKQotICAgIGRwcmludGYoKCIlbGQ6IENvdWxkIG5vdCBQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGVycm9yOiAlbFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLCBhTG9jaywgR2V0TGFzdEVycm9yKCkpKTsKLX0KLQotCmRpZmYgLS1naXQgYS9QeXRob24vdHJhY2ViYWNrLmMgYi9QeXRob24vdHJhY2ViYWNrLmMKaW5kZXggNTliYjNmMC4uYjkyODkwMiAxMDA2NDQKLS0tIGEvUHl0aG9uL3RyYWNlYmFjay5jCisrKyBiL1B5dGhvbi90cmFjZWJhY2suYwpAQCAtMTMsOCArMTMsMTMgQEAKIAogI2RlZmluZSBPRkYoeCkgb2Zmc2V0b2YoUHlUcmFjZWJhY2tPYmplY3QsIHgpCiAKLS8qIE1ldGhvZCBmcm9tIFBhcnNlci90b2tlbml6ZXIuYyAqLwotZXh0ZXJuIGNoYXIgKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoaW50KTsKKyNkZWZpbmUgUFVUUyhmZCwgc3RyKSB3cml0ZShmZCwgc3RyLCBzdHJsZW4oc3RyKSkKKyNkZWZpbmUgTUFYX1NUUklOR19MRU5HVEggNTAwCisjZGVmaW5lIE1BWF9GUkFNRV9ERVBUSCAxMDAKKyNkZWZpbmUgTUFYX05USFJFQURTIDEwMAorCisvKiBGdW5jdGlvbiBmcm9tIFBhcnNlci90b2tlbml6ZXIuYyAqLworZXh0ZXJuIGNoYXIgKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmdGaWxlbmFtZShpbnQsIFB5T2JqZWN0ICopOwogCiBzdGF0aWMgUHlPYmplY3QgKgogdGJfZGlyKFB5VHJhY2ViYWNrT2JqZWN0ICpzZWxmKQpAQCAtMTQ3LDYgKzE1Miw3IEBACiAgICAgY29uc3QgY2hhciogZmlsZXBhdGg7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKIAogICAgIGZpbGVieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoZmlsZW5hbWUpOwogICAgIGlmIChmaWxlYnl0ZXMgPT0gTlVMTCkgewpAQCAtMTk0LDcgKzIwMCw3IEBACiAgICAgICAgICAgICBuYW1lYnVmW2xlbisrXSA9IFNFUDsKICAgICAgICAgc3RyY3B5KG5hbWVidWYrbGVuLCB0YWlsKTsKIAotICAgICAgICBiaW5hcnkgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAib3BlbiIsICJzcyIsIG5hbWVidWYsICJyYiIpOworICAgICAgICBiaW5hcnkgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAic3MiLCBuYW1lYnVmLCAicmIiKTsKICAgICAgICAgaWYgKGJpbmFyeSAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBiaW5hcnk7CiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CkBAIC0yMjQsOCArMjMwLDExIEBACiAgICAgUHlPYmplY3QgKmxpbmVvYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgY2hhciBidWZbTUFYUEFUSExFTisxXTsKLSAgICBQeV9VTklDT0RFICp1LCAqcDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKKyAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKKyAgICBfUHlfSURFTlRJRklFUihUZXh0SU9XcmFwcGVyKTsKIAogICAgIC8qIG9wZW4gdGhlIGZpbGUgKi8KICAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkKQEAgLTIzNCw3ICsyNDMsNyBAQAogICAgIGlvID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiaW8iKTsKICAgICBpZiAoaW8gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGJpbmFyeSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW8sICJvcGVuIiwgIk9zIiwgZmlsZW5hbWUsICJyYiIpOworICAgIGJpbmFyeSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJPcyIsIGZpbGVuYW1lLCAicmIiKTsKIAogICAgIGlmIChiaW5hcnkgPT0gTlVMTCkgewogICAgICAgICBiaW5hcnkgPSBfUHlfRmluZFNvdXJjZUZpbGUoZmlsZW5hbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZiksIGlvKTsKQEAgLTI0NiwxMCArMjU1LDEwIEBACiAKICAgICAvKiB1c2UgdGhlIHJpZ2h0IGVuY29kaW5nIHRvIGRlY29kZSB0aGUgZmlsZSBhcyB1bmljb2RlICovCiAgICAgZmQgPSBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yKGJpbmFyeSk7Ci0gICAgZm91bmRfZW5jb2RpbmcgPSBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoZmQpOworICAgIGZvdW5kX2VuY29kaW5nID0gUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nRmlsZW5hbWUoZmQsIGZpbGVuYW1lKTsKICAgICBlbmNvZGluZyA9IChmb3VuZF9lbmNvZGluZyAhPSBOVUxMKSA/IGZvdW5kX2VuY29kaW5nIDogInV0Zi04IjsKICAgICBsc2VlayhmZCwgMCwgMCk7IC8qIFJlc2V0IHBvc2l0aW9uICovCi0gICAgZm9iID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIlRleHRJT1dyYXBwZXIiLCAiT3MiLCBiaW5hcnksIGVuY29kaW5nKTsKKyAgICBmb2IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9UZXh0SU9XcmFwcGVyLCAiT3MiLCBiaW5hcnksIGVuY29kaW5nKTsKICAgICBQeV9ERUNSRUYoaW8pOwogICAgIFB5X0RFQ1JFRihiaW5hcnkpOwogICAgIFB5TWVtX0ZSRUUoZm91bmRfZW5jb2RpbmcpOwpAQCAtMjY4LDcgKzI3Nyw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZvYiwgImNsb3NlIiwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm9iLCAmUHlJZF9jbG9zZSwgIiIpOwogICAgIGlmIChyZXMpCiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIGVsc2UKQEAgLTI4MCwxMyArMjg5LDE2IEBACiAgICAgfQogCiAgICAgLyogcmVtb3ZlIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgbGluZSAqLwotICAgIHUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShsaW5lb2JqKTsKLSAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUobGluZW9iaik7Ci0gICAgZm9yIChwPXU7ICpwID09ICcgJyB8fCAqcCA9PSAnXHQnIHx8ICpwID09ICdcMDE0JzsgcCsrKQotICAgICAgICBsZW4tLTsKLSAgICBpZiAodSAhPSBwKSB7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGxpbmVvYmopOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShsaW5lb2JqKTsKKyAgICBmb3IgKGk9MDsgaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmVvYmopOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggIT0gJyAnICYmIGNoICE9ICdcdCcgJiYgY2ggIT0gJ1wwMTQnKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChpKSB7CiAgICAgICAgIFB5T2JqZWN0ICp0cnVuY2F0ZWQ7Ci0gICAgICAgIHRydW5jYXRlZCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBsZW4pOworICAgICAgICB0cnVuY2F0ZWQgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGxpbmVvYmosIGksIFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmVvYmopKTsKICAgICAgICAgaWYgKHRydW5jYXRlZCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGxpbmVvYmopOwogICAgICAgICAgICAgbGluZW9iaiA9IHRydW5jYXRlZDsKQEAgLTMzMiw3ICszNDQsMTAgQEAKICAgICBQeV9ERUNSRUYobGluZSk7CiAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICByZXR1cm4gZXJyOwotICAgIHJldHVybiBfUHlfRGlzcGxheVNvdXJjZUxpbmUoZiwgZmlsZW5hbWUsIGxpbmVubywgNCk7CisgICAgLyogaWdub3JlIGVycm9ycyBzaW5jZSB3ZSBjYW4ndCByZXBvcnQgdGhlbSwgY2FuIHdlPyAqLworICAgIGlmIChfUHlfRGlzcGxheVNvdXJjZUxpbmUoZiwgZmlsZW5hbWUsIGxpbmVubywgNCkpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIGludApAQCAtNDAyLDMgKzQxNywyNTAgQEAKICAgICAgICAgZXJyID0gdGJfcHJpbnRpbnRlcm5hbCgoUHlUcmFjZWJhY2tPYmplY3QgKil2LCBmLCBsaW1pdCk7CiAgICAgcmV0dXJuIGVycjsKIH0KKworLyogUmV2ZXJzZSBhIHN0cmluZy4gRm9yIGV4YW1wbGUsICJhYmNkIiBiZWNvbWVzICJkY2JhIi4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworc3RhdGljIHZvaWQKK3JldmVyc2Vfc3RyaW5nKGNoYXIgKnRleHQsIGNvbnN0IHNpemVfdCBsZW4pCit7CisgICAgY2hhciB0bXA7CisgICAgc2l6ZV90IGksIGo7CisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICByZXR1cm47CisgICAgZm9yIChpPTAsIGo9bGVuLTE7IGkgPCBqOyBpKyssIGotLSkgeworICAgICAgICB0bXAgPSB0ZXh0W2ldOworICAgICAgICB0ZXh0W2ldID0gdGV4dFtqXTsKKyAgICAgICAgdGV4dFtqXSA9IHRtcDsKKyAgICB9Cit9CisKKy8qIEZvcm1hdCBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyA5OTk5OTldIHRvIGRlY2ltYWwsCisgICBhbmQgd3JpdGUgaXQgaW50byB0aGUgZmlsZSBmZC4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworc3RhdGljIHZvaWQKK2R1bXBfZGVjaW1hbChpbnQgZmQsIGludCB2YWx1ZSkKK3sKKyAgICBjaGFyIGJ1ZmZlcls3XTsKKyAgICBpbnQgbGVuOworICAgIGlmICh2YWx1ZSA8IDAgfHwgOTk5OTk5IDwgdmFsdWUpCisgICAgICAgIHJldHVybjsKKyAgICBsZW4gPSAwOworICAgIGRvIHsKKyAgICAgICAgYnVmZmVyW2xlbl0gPSAnMCcgKyAodmFsdWUgJSAxMCk7CisgICAgICAgIHZhbHVlIC89IDEwOworICAgICAgICBsZW4rKzsKKyAgICB9IHdoaWxlICh2YWx1ZSk7CisgICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOworICAgIHdyaXRlKGZkLCBidWZmZXIsIGxlbik7Cit9CisKKy8qIEZvcm1hdCBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAweGZmZmZmZmZmXSB0byBoZXhkZWNpbWFsIG9mICd3aWR0aCcgZGlnaXRzLAorICAgYW5kIHdyaXRlIGl0IGludG8gdGhlIGZpbGUgZmQuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK3N0YXRpYyB2b2lkCitkdW1wX2hleGFkZWNpbWFsKGludCB3aWR0aCwgdW5zaWduZWQgbG9uZyB2YWx1ZSwgaW50IGZkKQoreworICAgIGludCBsZW47CisgICAgY2hhciBidWZmZXJbc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMiArIDFdOworICAgIGxlbiA9IDA7CisgICAgZG8geworICAgICAgICBidWZmZXJbbGVuXSA9IFB5X2hleGRpZ2l0c1t2YWx1ZSAmIDE1XTsKKyAgICAgICAgdmFsdWUgPj49IDQ7CisgICAgICAgIGxlbisrOworICAgIH0gd2hpbGUgKGxlbiA8IHdpZHRoIHx8IHZhbHVlKTsKKyAgICByZXZlcnNlX3N0cmluZyhidWZmZXIsIGxlbik7CisgICAgd3JpdGUoZmQsIGJ1ZmZlciwgbGVuKTsKK30KKworLyogV3JpdGUgYW4gdW5pY29kZSBvYmplY3QgaW50byB0aGUgZmlsZSBmZCB1c2luZyBhc2NpaStiYWNrc2xhc2hyZXBsYWNlLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorZHVtcF9hc2NpaShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KQoreworICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpID0gKFB5QVNDSUlPYmplY3QgKil0ZXh0OworICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKKyAgICBpbnQgdHJ1bmNhdGVkOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGEgPSBOVUxMOworICAgIHdjaGFyX3QgKndzdHIgPSBOVUxMOworICAgIFB5X1VDUzQgY2g7CisKKyAgICBzaXplID0gYXNjaWktPmxlbmd0aDsKKyAgICBraW5kID0gYXNjaWktPnN0YXRlLmtpbmQ7CisgICAgaWYgKGFzY2lpLT5zdGF0ZS5jb21wYWN0KSB7CisgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkpCisgICAgICAgICAgICBkYXRhID0gKChQeUFTQ0lJT2JqZWN0Kil0ZXh0KSArIDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGEgPSAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKXRleHQpICsgMTsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgICAgICBkYXRhID0gKChQeVVuaWNvZGVPYmplY3QgKil0ZXh0KS0+ZGF0YS5hbnk7CisgICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB3c3RyID0gKChQeUFTQ0lJT2JqZWN0ICopdGV4dCktPndzdHI7CisgICAgICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNpemUgPSAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKil0ZXh0KS0+d3N0cl9sZW5ndGg7CisgICAgfQorCisgICAgaWYgKE1BWF9TVFJJTkdfTEVOR1RIIDwgc2l6ZSkgeworICAgICAgICBzaXplID0gTUFYX1NUUklOR19MRU5HVEg7CisgICAgICAgIHRydW5jYXRlZCA9IDE7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgdHJ1bmNhdGVkID0gMDsKKworICAgIGZvciAoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmIChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKQorICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2ggPSB3c3RyW2ldOworICAgICAgICBpZiAoY2ggPCAxMjgpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IChjaGFyKWNoOworICAgICAgICAgICAgd3JpdGUoZmQsICZjLCAxKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjaCA8IDB4ZmYpIHsKKyAgICAgICAgICAgIFBVVFMoZmQsICJcXHgiKTsKKyAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoMiwgY2gsIGZkKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjaCA8IDB4ZmZmZikgeworICAgICAgICAgICAgUFVUUyhmZCwgIlxcdSIpOworICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbCg0LCBjaCwgZmQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUFVUUyhmZCwgIlxcVSIpOworICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbCg4LCBjaCwgZmQpOworICAgICAgICB9CisgICAgfQorICAgIGlmICh0cnVuY2F0ZWQpCisgICAgICAgIFBVVFMoZmQsICIuLi4iKTsKK30KKworLyogV3JpdGUgYSBmcmFtZSBpbnRvIHRoZSBmaWxlIGZkOiAiRmlsZSAieHh4IiwgbGluZSB4eHggaW4geHh4Ii4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworc3RhdGljIHZvaWQKK2R1bXBfZnJhbWUoaW50IGZkLCBQeUZyYW1lT2JqZWN0ICpmcmFtZSkKK3sKKyAgICBQeUNvZGVPYmplY3QgKmNvZGU7CisgICAgaW50IGxpbmVubzsKKworICAgIGNvZGUgPSBmcmFtZS0+Zl9jb2RlOworICAgIFBVVFMoZmQsICIgIEZpbGUgIik7CisgICAgaWYgKGNvZGUgIT0gTlVMTCAmJiBjb2RlLT5jb19maWxlbmFtZSAhPSBOVUxMCisgICAgICAgICYmIFB5VW5pY29kZV9DaGVjayhjb2RlLT5jb19maWxlbmFtZSkpCisgICAgeworICAgICAgICB3cml0ZShmZCwgIlwiIiwgMSk7CisgICAgICAgIGR1bXBfYXNjaWkoZmQsIGNvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICAgICAgd3JpdGUoZmQsICJcIiIsIDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKKyAgICB9CisKKyAgICAvKiBQeUZyYW1lX0dldExpbmVOdW1iZXIoKSB3YXMgaW50cm9kdWNlZCBpbiBQeXRob24gMi43LjAgYW5kIDMuMi4wICovCisgICAgbGluZW5vID0gUHlDb2RlX0FkZHIyTGluZShjb2RlLCBmcmFtZS0+Zl9sYXN0aSk7CisgICAgUFVUUyhmZCwgIiwgbGluZSAiKTsKKyAgICBkdW1wX2RlY2ltYWwoZmQsIGxpbmVubyk7CisgICAgUFVUUyhmZCwgIiBpbiAiKTsKKworICAgIGlmIChjb2RlICE9IE5VTEwgJiYgY29kZS0+Y29fbmFtZSAhPSBOVUxMCisgICAgICAgICYmIFB5VW5pY29kZV9DaGVjayhjb2RlLT5jb19uYW1lKSkKKyAgICAgICAgZHVtcF9hc2NpaShmZCwgY29kZS0+Y29fbmFtZSk7CisgICAgZWxzZQorICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CisKKyAgICB3cml0ZShmZCwgIlxuIiwgMSk7Cit9CisKK3N0YXRpYyB2b2lkCitkdW1wX3RyYWNlYmFjayhpbnQgZmQsIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSwgaW50IHdyaXRlX2hlYWRlcikKK3sKKyAgICBQeUZyYW1lT2JqZWN0ICpmcmFtZTsKKyAgICB1bnNpZ25lZCBpbnQgZGVwdGg7CisKKyAgICBpZiAod3JpdGVfaGVhZGVyKQorICAgICAgICBQVVRTKGZkLCAiVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTpcbiIpOworCisgICAgZnJhbWUgPSBfUHlUaHJlYWRTdGF0ZV9HZXRGcmFtZSh0c3RhdGUpOworICAgIGlmIChmcmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisKKyAgICBkZXB0aCA9IDA7CisgICAgd2hpbGUgKGZyYW1lICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKE1BWF9GUkFNRV9ERVBUSCA8PSBkZXB0aCkgeworICAgICAgICAgICAgUFVUUyhmZCwgIiAgLi4uXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICghUHlGcmFtZV9DaGVjayhmcmFtZSkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZHVtcF9mcmFtZShmZCwgZnJhbWUpOworICAgICAgICBmcmFtZSA9IGZyYW1lLT5mX2JhY2s7CisgICAgICAgIGRlcHRoKys7CisgICAgfQorfQorCit2b2lkCitfUHlfRHVtcFRyYWNlYmFjayhpbnQgZmQsIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKK3sKKyAgICBkdW1wX3RyYWNlYmFjayhmZCwgdHN0YXRlLCAxKTsKK30KKworLyogV3JpdGUgdGhlIHRocmVhZCBpZGVudGlmaWVyIGludG8gdGhlIGZpbGUgJ2ZkJzogIkN1cnJlbnQgdGhyZWFkIDB4SEhISDpcIiBpZgorICAgaXNfY3VycmVudCBpcyB0cnVlLCAiVGhyZWFkIDB4SEhISDpcbiIgb3RoZXJ3aXNlLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAord3JpdGVfdGhyZWFkX2lkKGludCBmZCwgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlLCBpbnQgaXNfY3VycmVudCkKK3sKKyAgICBpZiAoaXNfY3VycmVudCkKKyAgICAgICAgUFVUUyhmZCwgIkN1cnJlbnQgdGhyZWFkIDB4Iik7CisgICAgZWxzZQorICAgICAgICBQVVRTKGZkLCAiVGhyZWFkIDB4Iik7CisgICAgZHVtcF9oZXhhZGVjaW1hbChzaXplb2YobG9uZykqMiwgKHVuc2lnbmVkIGxvbmcpdHN0YXRlLT50aHJlYWRfaWQsIGZkKTsKKyAgICBQVVRTKGZkLCAiOlxuIik7Cit9CisKK2NvbnN0IGNoYXIqCitfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgdW5zaWduZWQgaW50IG50aHJlYWRzOworCisgICAgLyogR2V0IHRoZSBjdXJyZW50IGludGVycHJldGVyIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkICovCisgICAgdHN0YXRlID0gUHlJbnRlcnByZXRlclN0YXRlX1RocmVhZEhlYWQoaW50ZXJwKTsKKyAgICBpZiAodHN0YXRlID09IE5VTEwpCisgICAgICAgIHJldHVybiAidW5hYmxlIHRvIGdldCB0aGUgdGhyZWFkIGhlYWQgc3RhdGUiOworCisgICAgLyogRHVtcCB0aGUgdHJhY2ViYWNrIG9mIGVhY2ggdGhyZWFkICovCisgICAgdHN0YXRlID0gUHlJbnRlcnByZXRlclN0YXRlX1RocmVhZEhlYWQoaW50ZXJwKTsKKyAgICBudGhyZWFkcyA9IDA7CisgICAgZG8KKyAgICB7CisgICAgICAgIGlmIChudGhyZWFkcyAhPSAwKQorICAgICAgICAgICAgd3JpdGUoZmQsICJcbiIsIDEpOworICAgICAgICBpZiAobnRocmVhZHMgPj0gTUFYX05USFJFQURTKSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiLi4uXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHdyaXRlX3RocmVhZF9pZChmZCwgdHN0YXRlLCB0c3RhdGUgPT0gY3VycmVudF90aHJlYWQpOworICAgICAgICBkdW1wX3RyYWNlYmFjayhmZCwgdHN0YXRlLCAwKTsKKyAgICAgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9OZXh0KHRzdGF0ZSk7CisgICAgICAgIG50aHJlYWRzKys7CisgICAgfSB3aGlsZSAodHN0YXRlICE9IE5VTEwpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQppbmRleCBiMTM4MDZiLi4zZjBmMTQ5IDEwMDY0NAotLS0gYS9SRUFETUUKKysrIGIvUkVBRE1FCkBAIC0xLDUgKzEsNSBAQAotVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjIuMwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjMuMCByZWxlYXNlIGNhbmRpZGF0ZSAxCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLAogMjAxMiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xNSw2ICsxNSw4IEBACiAKIE9uIFVuaXgsIExpbnV4LCBCU0QsIE9TWCwgYW5kIEN5Z3dpbjoKIAorTmV3IHRleHQKKwogICAgIC4vY29uZmlndXJlCiAgICAgbWFrZQogICAgIG1ha2UgdGVzdApAQCAtNTAsOSArNTIsOSBAQAogLS0tLS0tLS0tLQogCiBXZSB0cnkgdG8gaGF2ZSBhIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcgb2YgdGhlIGNoYW5nZXMgaW4gdGhlICJXaGF0J3MgTmV3IGluCi1QeXRob24gMy4yIiBkb2N1bWVudCwgZm91bmQgYXQKK1B5dGhvbiAzLjMiIGRvY3VtZW50LCBmb3VuZCBhdAogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjIvd2hhdHNuZXcvMy4yLmh0bWwKKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy93aGF0c25ldy8zLjMuaHRtbAogCiBGb3IgYSBtb3JlIGRldGFpbGVkIGNoYW5nZSBsb2csIHJlYWQgTWlzYy9ORVdTICh0aG91Z2ggdGhpcyBmaWxlLCB0b28sIGlzCiBpbmNvbXBsZXRlLCBhbmQgYWxzbyBkb2Vzbid0IGxpc3QgYW55dGhpbmcgbWVyZ2VkIGluIGZyb20gdGhlIDIuNyByZWxlYXNlIHVuZGVyCkBAIC02NSw5ICs2Nyw5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLURvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjIgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgorRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuMyBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMi8KKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy8KIAogSXQgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiBtYW55IGZvcm1hdHMgZm9yIGZhc3RlciBhY2Nlc3MuICBUaGUgZG9jdW1lbnRhdGlvbgogaXMgZG93bmxvYWRhYmxlIGluIEhUTUwsIFBERiwgYW5kIHJlU3RydWN0dXJlZFRleHQgZm9ybWF0czsgdGhlIGxhdHRlciB2ZXJzaW9uCkBAIC04NSwxOCArODcsMTYgQEAKIEEgc291cmNlLXRvLXNvdXJjZSB0cmFuc2xhdGlvbiB0b29sLCAiMnRvMyIsIGNhbiB0YWtlIGNhcmUgb2YgdGhlIG11bmRhbmUgdGFzawogb2YgY29udmVydGluZyBsYXJnZSBhbW91bnRzIG9mIHNvdXJjZSBjb2RlLiAgSXQgaXMgbm90IGEgY29tcGxldGUgc29sdXRpb24gYnV0CiBpcyBjb21wbGVtZW50ZWQgYnkgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGluIDIuNi4gIFNlZQotaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjIvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCitodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy9saWJyYXJ5LzJ0bzMuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogCiBUZXN0aW5nCiAtLS0tLS0tCiAKLVRvIHRlc3QgdGhlIGludGVycHJldGVyLCB0eXBlICJtYWtlIHRlc3QiIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LiAgVGhpcyBydW5zCi10aGUgdGVzdCBzZXQgdHdpY2UgKG9uY2Ugd2l0aCBubyBjb21waWxlZCBmaWxlcywgb25jZSB3aXRoIHRoZSBjb21waWxlZCBmaWxlcwotbGVmdCBieSB0aGUgcHJldmlvdXMgdGVzdCBydW4pLiAgVGhlIHRlc3Qgc2V0IHByb2R1Y2VzIHNvbWUgb3V0cHV0LiAgWW91IGNhbgotZ2VuZXJhbGx5IGlnbm9yZSB0aGUgbWVzc2FnZXMgYWJvdXQgc2tpcHBlZCB0ZXN0cyBkdWUgdG8gb3B0aW9uYWwgZmVhdHVyZXMgd2hpY2gKLWNhbid0IGJlIGltcG9ydGVkLiAgSWYgYSBtZXNzYWdlIGlzIHByaW50ZWQgYWJvdXQgYSBmYWlsZWQgdGVzdCBvciBhIHRyYWNlYmFjawotb3IgY29yZSBkdW1wIGlzIHByb2R1Y2VkLCBzb21ldGhpbmcgaXMgd3JvbmcuCitUbyB0ZXN0IHRoZSBpbnRlcnByZXRlciwgdHlwZSAibWFrZSB0ZXN0IiBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4gIFRoZSB0ZXN0CitzZXQgcHJvZHVjZXMgc29tZSBvdXRwdXQuICBZb3UgY2FuIGdlbmVyYWxseSBpZ25vcmUgdGhlIG1lc3NhZ2VzIGFib3V0IHNraXBwZWQKK3Rlc3RzIGR1ZSB0byBvcHRpb25hbCBmZWF0dXJlcyB3aGljaCBjYW4ndCBiZSBpbXBvcnRlZC4gIElmIGEgbWVzc2FnZSBpcyBwcmludGVkCithYm91dCBhIGZhaWxlZCB0ZXN0IG9yIGEgdHJhY2ViYWNrIG9yIGNvcmUgZHVtcCBpcyBwcm9kdWNlZCwgc29tZXRoaW5nIGlzIHdyb25nLgogCiBCeSBkZWZhdWx0LCB0ZXN0cyBhcmUgcHJldmVudGVkIGZyb20gb3ZlcnVzaW5nIHJlc291cmNlcyBsaWtlIGRpc2sgc3BhY2UgYW5kCiBtZW1vcnkuICBUbyBlbmFibGUgdGhlc2UgdGVzdHMsIHJ1biAibWFrZSB0ZXN0YWxsIi4KQEAgLTEyNSw4ICsxMjUsOCBAQAogSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlciB2ZXJzaW9ucyB1c2luZwogIm1ha2UgYWx0aW5zdGFsbCIuCiAKLUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjUsIDIuNiBhbmQgMy4yIHdpdGggMi42IGJlaW5nIHRoZQotcHJpbWFyeSB2ZXJzaW9uLCB5b3Ugd291bGQgZXhlY3V0ZSAibWFrZSBpbnN0YWxsIiBpbiB5b3VyIDIuNiBidWlsZCBkaXJlY3RvcnkKK0ZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy4zIHdpdGggMi43IGJlaW5nIHRoZQorcHJpbWFyeSB2ZXJzaW9uLCB5b3Ugd291bGQgZXhlY3V0ZSAibWFrZSBpbnN0YWxsIiBpbiB5b3VyIDIuNyBidWlsZCBkaXJlY3RvcnkKIGFuZCAibWFrZSBhbHRpbnN0YWxsIiBpbiB0aGUgb3RoZXJzLgogCiAKQEAgLTE2MSw3ICsxNjEsNyBAQAogUmVsZWFzZSBTY2hlZHVsZQogLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgUEVQIDM5MiBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzOTIvCitTZWUgUEVQIDM5OCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzOTgvCiAKIAogQ29weXJpZ2h0IGFuZCBMaWNlbnNlIEluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9SRUFETUUgYi9Ub29scy9SRUFETUUKaW5kZXggYzFmODliYS4uMGQ5NjFkZSAxMDA2NDQKLS0tIGEvVG9vbHMvUkVBRE1FCisrKyBiL1Rvb2xzL1JFQURNRQpAQCAtMyw3ICszLDcgQEAKIAogYnVpbGRib3QgICAgICAgIEJhdGNoZmlsZXMgZm9yIHJ1bm5pbmcgb24gV2luZG93cyBidWlsZHNsYXZlcy4KIAotY2NiZW5jaCAgICAgICAgIEEgUHl0aG9uIGNvbmN1cnJlbmN5IGJlbmNobWFyay4KK2NjYmVuY2ggICAgICAgICBBIFB5dGhvbiB0aHJlYWRzLWJhc2VkIGNvbmN1cnJlbmN5IGJlbmNobWFyay4gKCopCiAKIGRlbW8gICAgICAgICAgICBTZXZlcmFsIFB5dGhvbiBwcm9ncmFtbWluZyBkZW1vcy4KIApAQCAtMTcsMTMgKzE3LDEzIEBACiAgICAgICAgICAgICAgICAgYW5kIG1zZ2ZtdC5weSBnZW5lcmF0ZXMgYSBiaW5hcnkgbWVzc2FnZSBjYXRhbG9nCiAgICAgICAgICAgICAgICAgZnJvbSBhIGNhdGFsb2cgaW4gdGV4dCBmb3JtYXQuCiAKLWlvYmVuY2ggICAgICAgICBCZW5jaG1hcmsgZm9yIHRoZSBuZXcgUHl0aG9uIEkvTyBzeXN0ZW0uCitpb2JlbmNoICAgICAgICAgQmVuY2htYXJrIGZvciB0aGUgbmV3IFB5dGhvbiBJL08gc3lzdGVtLiAoKikKIAogbXNpICAgICAgICAgICAgIFN1cHBvcnQgZm9yIHBhY2thZ2luZyBQeXRob24gYXMgYW4gTVNJIHBhY2thZ2Ugb24gV2luZG93cy4KIAogcGFyc2VyICAgICAgICAgIFVuLXBhcnNpbmcgdG9vbCB0byBnZW5lcmF0ZSBjb2RlIGZyb20gYW4gQVNULgogCi1weWJlbmNoICAgICAgICAgQ29tcHJlaGVuc2l2ZSBQeXRob24gYmVuY2htYXJraW5nIHN1aXRlLgorcHliZW5jaCAgICAgICAgIExvdy1sZXZlbCBiZW5jaG1hcmtpbmcgZm9yIHRoZSBQeXRob24gZXZhbHVhdGlvbiBsb29wLiAoKikKIAogcHluY2hlICAgICAgICAgIEEgVGtpbnRlci1iYXNlZCBjb2xvciBlZGl0b3IuCiAKQEAgLTMyLDYgKzMyLDkgQEAKICAgICAgICAgICAgICAgICB0YWJzIGFuZCBzcGFjZXMsIGFuZCAydG8zLCB3aGljaCBjb252ZXJ0cyBQeXRob24gMiBjb2RlCiAgICAgICAgICAgICAgICAgdG8gUHl0aG9uIDMgY29kZS4KIAorc3RyaW5nYmVuY2ggICAgIEEgc3VpdGUgb2YgbWljcm8tYmVuY2htYXJrcyBmb3IgdmFyaW91cyBvcGVyYXRpb25zIG9uCisgICAgICAgICAgICAgICAgc3RyaW5ncyAoYm90aCA4LWJpdCBhbmQgdW5pY29kZSkuICgqKQorCiB0ZXN0MnRvMyAgICAgICAgQSBkZW1vbnN0cmF0aW9uIG9mIGhvdyB0byB1c2UgMnRvMyB0cmFuc3BhcmVudGx5IGluIHNldHVwLnB5LgogCiB1bmljb2RlICAgICAgICAgVG9vbHMgZm9yIGdlbmVyYXRpbmcgdW5pY29kZWRhdGEgYW5kIGNvZGVjcyBmcm9tIHVuaWNvZGUub3JnCkBAIC00MCwzICs0Myw2IEBACiAKIHVuaXR0ZXN0Z3VpICAgICBBIFRraW50ZXIgYmFzZWQgR1VJIHRlc3QgcnVubmVyIGZvciB1bml0dGVzdCwgd2l0aCB0ZXN0CiAgICAgICAgICAgICAgICAgZGlzY292ZXJ5LgorCisKKygqKSBBIGdlbmVyaWMgYmVuY2htYXJrIHN1aXRlIGlzIG1haW50YWluZWQgc2VwYXJhdGVseSBhdCBodHRwOi8vaGcucHl0aG9uLm9yZy9iZW5jaG1hcmtzLwpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0CmluZGV4IDg3MTNiMzguLjdlZTdiMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKQEAgLTEsNyArMSw3IEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjb21waWxlIiBzdGVwLgotc2V0IEhPU1RfUFlUSE9OPSIlQ0QlXFBDYnVpbGRcYW1kNjRccHl0aG9uX2QuZXhlIgogY21kIC9jIFRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLWFtZDY0LmJhdAotY2FsbCAiJVZTOTBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKIGNtZCAvYyBUb29sc1xidWlsZGJvdFxjbGVhbi1hbWQ2NC5iYXQKLXZjYnVpbGQgL3VzZWVudiBQQ2J1aWxkXGtpbGxfcHl0aG9uLnZjcHJvaiAiRGVidWd8eDY0IiAmJiBQQ2J1aWxkXGFtZDY0XGtpbGxfcHl0aG9uX2QuZXhlCi12Y2J1aWxkIFBDYnVpbGRccGNidWlsZC5zbG4gIkRlYnVnfHg2NCIKK21zYnVpbGQgUENidWlsZFxraWxsX3B5dGhvbi52Y3hwcm9qIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0CitQQ2J1aWxkXGFtZDY0XGtpbGxfcHl0aG9uX2QuZXhlCittc2J1aWxkIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybT14NjQKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdAppbmRleCBhYjNlYTdkLi5jOTNjZmQ1IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvYnVpbGQuYmF0CkBAIC0xLDcgKzEsOCBAQAogQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiY29tcGlsZSIgc3RlcC4KIGNtZCAvYyBUb29sc1xidWlsZGJvdFxleHRlcm5hbC5iYXQKLWNhbGwgIiVWUzkwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKK2NhbGwgIiVWUzEwMENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCiBjbWQgL2MgVG9vbHNcYnVpbGRib3RcY2xlYW4uYmF0Ci12Y2J1aWxkIC91c2VlbnYgUENidWlsZFxraWxsX3B5dGhvbi52Y3Byb2ogIkRlYnVnfFdpbjMyIiAmJiBQQ2J1aWxkXGtpbGxfcHl0aG9uX2QuZXhlCi12Y2J1aWxkIC91c2VlbnYgUENidWlsZFxwY2J1aWxkLnNsbiAiRGVidWd8V2luMzIiCittc2J1aWxkIFBDYnVpbGRca2lsbF9weXRob24udmN4cHJvaiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtVGFyZ2V0PXg4NgorUENidWlsZFxraWxsX3B5dGhvbl9kLmV4ZQorbXNidWlsZCBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm09V2luMzIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0CmluZGV4IDQ0MzBjYjguLmFlOTNlNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQKQEAgLTIsMTAgKzIsMTAgQEAKIAogY21kIC9jIFRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLmJhdAogQHJlbSBidWlsZCByZWxlYXNlIHZlcnNpb25zIG9mIHRoaW5ncwotY2FsbCAiJVZTOTBDT01OVE9PTFMldnN2YXJzMzIuYmF0IgorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKIAogQHJlbSBidWlsZCBQeXRob24KLXZjYnVpbGQgL3VzZWVudiBQQ2J1aWxkXHBjYnVpbGQuc2xuICJSZWxlYXNlfFdpbjMyIgorbXNidWlsZCAvcDp1c2VlbnY9dHJ1ZSBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT1XaW4zMgogCiBAcmVtIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uCiBiYXNoLmV4ZSAtYyAnY2QgRG9jO21ha2UgUFlUSE9OPXB5dGhvbjIuNSB1cGRhdGUgaHRtbGhlbHAnCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKaW5kZXggNzE1ODA1YS4uMjQ2NjBhZiAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdApAQCAtMSwxMCArMSwxMCBAQAogQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiY2xlYW4iIHN0ZXAuCi1jYWxsICIlVlM5MENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDg2X2FtZDY0CitjYWxsICIlVlMxMDBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAogQGVjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLgogZGVsIC9zIExpYlwqLnB5YyBMaWJcKi5weW8KIEBlY2hvIERlbGV0aW5nIHRlc3QgbGVmdG92ZXJzIC4uLgogcm1kaXIgL3MgL3EgYnVpbGQKIGNkIFBDYnVpbGQKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJSZWxlYXNlfHg2NCIKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJEZWJ1Z3x4NjQiCittc2J1aWxkIC90YXJnZXQ6Y2xlYW4gcGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtVGFyZ2V0PXg2NAorbXNidWlsZCAvdGFyZ2V0OmNsZWFuIHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0CiBjZCAuLgpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0IGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CmluZGV4IDBjMDRiOGUuLjIxOGZhY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKQEAgLTEsOCArMSw4IEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4KLWNhbGwgIiVWUzkwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKK2NhbGwgIiVWUzEwMENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCiBAZWNobyBEZWxldGluZyB0ZXN0IGxlZnRvdmVycyAuLi4KIHJtZGlyIC9zIC9xIGJ1aWxkCiBjZCBQQ2J1aWxkCi12Y2J1aWxkIC9jbGVhbiBwY2J1aWxkLnNsbiAiUmVsZWFzZXxXaW4zMiIKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJEZWJ1Z3xXaW4zMiIKK21zYnVpbGQgL3RhcmdldDpjbGVhbiBwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm1UYXJnZXQ9eDg2Cittc2J1aWxkIC90YXJnZXQ6Y2xlYW4gcGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybVRhcmdldD14ODYKIGNkIC4uCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQKaW5kZXggOTU0MjM4ZS4uZDJmZjI1NSAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdApAQCAtMiwyMCArMiwyMCBAQAogCiBAcmVtIEFzc3VtZSB3ZSBzdGFydCBpbnNpZGUgdGhlIFB5dGhvbiBzb3VyY2UgZGlyZWN0b3J5CiBjYWxsICJUb29sc1xidWlsZGJvdFxleHRlcm5hbC1jb21tb24uYmF0IgotY2FsbCAiJVZTOTBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKIAogaWYgbm90IGV4aXN0IHRjbHRrNjRcYmluXHRjbDg1Zy5kbGwgKAotICAgIGNkIHRjbC04LjUuOS4wXHdpbgorICAgIGNkIHRjbC04LjUuMTEuMFx3aW4KICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IGNsZWFuIGFsbAogICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgaW5zdGFsbAogICAgIGNkIC4uXC4uCiApCiAKIGlmIG5vdCBleGlzdCB0Y2x0azY0XGJpblx0azg1Zy5kbGwgKAotICAgIGNkIHRrLTguNS45LjBcd2luICAgIAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBjbGVhbgotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBhbGwKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS45LjAgaW5zdGFsbAorICAgIGNkIHRrLTguNS4xMS4wXHdpbiAgICAKKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGNsZWFuCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgVENMRElSPS4uXC4uXHRjbC04LjUuMTEuMCBhbGwKKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGluc3RhbGwKICAgICBjZCAuLlwuLgogKQogCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1jb21tb24uYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtY29tbW9uLmJhdAppbmRleCAyMTY1YjhhLi40ZTlmZTQxIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1jb21tb24uYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWNvbW1vbi5iYXQKQEAgLTE0LDggKzE0LDggQEAKIEByZW0gaWYgZXhpc3QgdGs4LjQuMTYgcmQgL3MvcSB0azguNC4xNgogQHJlbSBpZiBleGlzdCB0ay04LjQuMTguMSByZCAvcy9xIHRrLTguNC4xOC4xCiBAcmVtIGlmIGV4aXN0IGRiLTQuNC4yMCByZCAvcy9xIGRiLTQuNC4yMAotQHJlbSBpZiBleGlzdCBvcGVuc3NsLTEuMC4waiByZCAvcy9xIG9wZW5zc2wtMS4wLjBqCi1AcmVtIGlmIGV4aXN0IHNxbGl0ZS0zLjcuNCByZCAvcy9xIHNxbGl0ZS0zLjcuNCAgICAKK0ByZW0gaWYgZXhpc3Qgb3BlbnNzbC0xLjAuMWMgcmQgL3MvcSBvcGVuc3NsLTEuMC4xYworQHJlbSBpZiBleGlzdCBzcWxpdGUtMy43LjEyIHJkIC9zL3Egc3FsaXRlLTMuNy4xMiAgICAKIAogQHJlbSBiemlwCiBpZiBub3QgZXhpc3QgYnppcDItMS4wLjYgKApAQCAtMjQsMTcgKzI0LDI1IEBACiApCiAKIEByZW0gT3BlblNTTAotaWYgbm90IGV4aXN0IG9wZW5zc2wtMS4wLjBqIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL29wZW5zc2wtMS4wLjBqCitpZiBub3QgZXhpc3Qgb3BlbnNzbC0xLjAuMWMgKAorICAgIHJkIC9zL3Egb3BlbnNzbC0xLjAuMGoKKyAgICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9vcGVuc3NsLTEuMC4xYworKQogCiBAcmVtIHRjbC90awotaWYgbm90IGV4aXN0IHRjbC04LjUuOS4wICgKK2lmIG5vdCBleGlzdCB0Y2wtOC41LjExLjAgKAogICAgcmQgL3MvcSB0Y2x0ayB0Y2x0azY0Ci0gICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC90Y2wtOC41LjkuMAorICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGNsLTguNS4xMS4wCiApCi1pZiBub3QgZXhpc3QgdGstOC41LjkuMCBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC90ay04LjUuOS4wCitpZiBub3QgZXhpc3QgdGstOC41LjExLjAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGstOC41LjExLjAKIAogQHJlbSBzcWxpdGUzCi1pZiBub3QgZXhpc3Qgc3FsaXRlLTMuNy40ICgKLSAgcmQgL3MvcSBzcWxpdGUtc291cmNlLTMuNi4yMQotICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9zcWxpdGUtMy43LjQKK2lmIG5vdCBleGlzdCBzcWxpdGUtMy43LjEyICgKKyAgcmQgL3MvcSBzcWxpdGUtc291cmNlLTMuNy40CisgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3NxbGl0ZS0zLjcuMTIKKykKKworQHJlbSBsem1hCitpZiBub3QgZXhpc3QgeHotNS4wLjMgKAorICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC94ei01LjAuMwogKQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CmluZGV4IGU5NThmZDYuLmVkNWMxMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQKQEAgLTIsMjAgKzIsMjAgQEAKIAogQHJlbSBBc3N1bWUgd2Ugc3RhcnQgaW5zaWRlIHRoZSBQeXRob24gc291cmNlIGRpcmVjdG9yeQogY2FsbCAiVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwtY29tbW9uLmJhdCIKLWNhbGwgIiVWUzkwQ09NTlRPT0xTJVx2c3ZhcnMzMi5iYXQiCitjYWxsICIlVlMxMDBDT01OVE9PTFMlXHZzdmFyczMyLmJhdCIKIAogaWYgbm90IGV4aXN0IHRjbHRrXGJpblx0Y2w4NWcuZGxsICgKICAgICBAcmVtIGFsbCBhbmQgaW5zdGFsbCBuZWVkIHRvIGJlIHNlcGFyYXRlIGludm9jYXRpb25zLCBvdGhlcndpc2Ugbm1ha2VobHAgaXMgbm90IGZvdW5kIG9uIGluc3RhbGwKLSAgICBjZCB0Y2wtOC41LjkuMFx3aW4KKyAgICBjZCB0Y2wtOC41LjExLjBcd2luCiAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIGNsZWFuIGFsbCAKICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgaW5zdGFsbAogICAgIGNkIC4uXC4uCiApCiAKIGlmIG5vdCBleGlzdCB0Y2x0a1xiaW5cdGs4NWcuZGxsICgKLSAgICBjZCB0ay04LjUuOS4wXHdpbiAgICAKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBjbGVhbgotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGFsbAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGluc3RhbGwKKyAgICBjZCB0ay04LjUuMTEuMFx3aW4KKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgY2xlYW4KKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgYWxsCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGluc3RhbGwKICAgICBjZCAuLlwuLgogKQpkaWZmIC0tZ2l0IGEvVG9vbHMvY2NiZW5jaC9jY2JlbmNoLnB5IGIvVG9vbHMvY2NiZW5jaC9jY2JlbmNoLnB5CmluZGV4IDlmNzExOGYuLjYwY2VjM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2NjYmVuY2gvY2NiZW5jaC5weQorKysgYi9Ub29scy9jY2JlbmNoL2NjYmVuY2gucHkKQEAgLTEwLDcgKzEwLDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBzdWJwcm9jZXNzCkBAIC00MzUsNzAgKzQzNCw3MCBAQAogZGVmIHJ1bl9iYW5kd2lkdGhfdGVzdChmdW5jLCBhcmdzLCBudGhyZWFkcyk6CiAgICAgIyBDcmVhdGUgYSBsaXN0ZW5pbmcgc29ja2V0IHRvIHJlY2VpdmUgdGhlIHBhY2tldHMuIFdlIHVzZSBVRFAgd2hpY2ggc2hvdWxkCiAgICAgIyBiZSBwYWlubGVzc2x5IGNyb3NzLXBsYXRmb3JtLgotICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkKLSAgICBzb2NrLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKLSAgICBhZGRyID0gc29jay5nZXRzb2NrbmFtZSgpCisgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkgYXMgc29jazoKKyAgICAgICAgc29jay5iaW5kKCgiMTI3LjAuMC4xIiwgMCkpCisgICAgICAgIGFkZHIgPSBzb2NrLmdldHNvY2tuYW1lKCkKIAotICAgIGR1cmF0aW9uID0gQkFORFdJRFRIX0RVUkFUSU9OCi0gICAgcGFja2V0X3NpemUgPSBCQU5EV0lEVEhfUEFDS0VUX1NJWkUKLQotICAgIHJlc3VsdHMgPSBbXQotICAgIHRocmVhZHMgPSBbXQotICAgIGVuZF9ldmVudCA9IFtdCi0gICAgc3RhcnRfY29uZCA9IHRocmVhZGluZy5Db25kaXRpb24oKQotICAgIHN0YXJ0ZWQgPSBGYWxzZQotICAgIGlmIG50aHJlYWRzID4gMDoKLSAgICAgICAgIyBXYXJtIHVwCi0gICAgICAgIGZ1bmMoKmFyZ3MpCisgICAgICAgIGR1cmF0aW9uID0gQkFORFdJRFRIX0RVUkFUSU9OCisgICAgICAgIHBhY2tldF9zaXplID0gQkFORFdJRFRIX1BBQ0tFVF9TSVpFCiAKICAgICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICAgIGxvb3AgPSBUaW1lZExvb3AoZnVuYywgYXJncykKLSAgICAgICAgcmVhZHkgPSBbXQotICAgICAgICByZWFkeV9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisgICAgICAgIHRocmVhZHMgPSBbXQorICAgICAgICBlbmRfZXZlbnQgPSBbXQorICAgICAgICBzdGFydF9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisgICAgICAgIHN0YXJ0ZWQgPSBGYWxzZQorICAgICAgICBpZiBudGhyZWFkcyA+IDA6CisgICAgICAgICAgICAjIFdhcm0gdXAKKyAgICAgICAgICAgIGZ1bmMoKmFyZ3MpCiAKLSAgICAgICAgZGVmIHJ1bigpOgorICAgICAgICAgICAgcmVzdWx0cyA9IFtdCisgICAgICAgICAgICBsb29wID0gVGltZWRMb29wKGZ1bmMsIGFyZ3MpCisgICAgICAgICAgICByZWFkeSA9IFtdCisgICAgICAgICAgICByZWFkeV9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisKKyAgICAgICAgICAgIGRlZiBydW4oKToKKyAgICAgICAgICAgICAgICB3aXRoIHJlYWR5X2NvbmQ6CisgICAgICAgICAgICAgICAgICAgIHJlYWR5LmFwcGVuZChOb25lKQorICAgICAgICAgICAgICAgICAgICByZWFkeV9jb25kLm5vdGlmeSgpCisgICAgICAgICAgICAgICAgd2l0aCBzdGFydF9jb25kOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc3RhcnRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbmQud2FpdCgpCisgICAgICAgICAgICAgICAgbG9vcChzdGFydF90aW1lLCBkdXJhdGlvbiAqIDEuNSwgZW5kX2V2ZW50LCBkb195aWVsZD1GYWxzZSkKKworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnRocmVhZHMpOgorICAgICAgICAgICAgICAgIHRocmVhZHMuYXBwZW5kKHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJ1bikpCisgICAgICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgorICAgICAgICAgICAgICAgIHQuc2V0RGFlbW9uKFRydWUpCisgICAgICAgICAgICAgICAgdC5zdGFydCgpCisgICAgICAgICAgICAjIFdhaXQgZm9yIHRocmVhZHMgdG8gYmUgcmVhZHkKICAgICAgICAgICAgIHdpdGggcmVhZHlfY29uZDoKLSAgICAgICAgICAgICAgICByZWFkeS5hcHBlbmQoTm9uZSkKLSAgICAgICAgICAgICAgICByZWFkeV9jb25kLm5vdGlmeSgpCi0gICAgICAgICAgICB3aXRoIHN0YXJ0X2NvbmQ6Ci0gICAgICAgICAgICAgICAgd2hpbGUgbm90IHN0YXJ0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbmQud2FpdCgpCi0gICAgICAgICAgICBsb29wKHN0YXJ0X3RpbWUsIGR1cmF0aW9uICogMS41LCBlbmRfZXZlbnQsIGRvX3lpZWxkPUZhbHNlKQorICAgICAgICAgICAgICAgIHdoaWxlIGxlbihyZWFkeSkgPCBudGhyZWFkczoKKyAgICAgICAgICAgICAgICAgICAgcmVhZHlfY29uZC53YWl0KCkKIAotICAgICAgICBmb3IgaSBpbiByYW5nZShudGhyZWFkcyk6Ci0gICAgICAgICAgICB0aHJlYWRzLmFwcGVuZCh0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1ydW4pKQotICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgotICAgICAgICAgICAgdC5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgICAgIHQuc3RhcnQoKQotICAgICAgICAjIFdhaXQgZm9yIHRocmVhZHMgdG8gYmUgcmVhZHkKLSAgICAgICAgd2l0aCByZWFkeV9jb25kOgotICAgICAgICAgICAgd2hpbGUgbGVuKHJlYWR5KSA8IG50aHJlYWRzOgotICAgICAgICAgICAgICAgIHJlYWR5X2NvbmQud2FpdCgpCi0KLSAgICAjIFJ1biB0aGUgY2xpZW50IGFuZCB3YWl0IGZvciB0aGUgZmlyc3QgcGFja2V0IHRvIGFycml2ZSBiZWZvcmUKLSAgICAjIHVuYmxvY2tpbmcgdGhlIGJhY2tncm91bmQgdGhyZWFkcy4KLSAgICBwcm9jZXNzID0gcnVuX2JhbmR3aWR0aF9jbGllbnQoYWRkcj1hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfc2l6ZT1wYWNrZXRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb249ZHVyYXRpb24pCi0gICAgX3RpbWUgPSB0aW1lLnRpbWUKLSAgICAjIFRoaXMgd2lsbCBhbHNvIHdhaXQgZm9yIHRoZSBwYXJlbnQgdG8gYmUgcmVhZHkKLSAgICBzID0gX3JlY3Yoc29jaywgcGFja2V0X3NpemUpCi0gICAgcmVtb3RlX2FkZHIgPSBldmFsKHMucGFydGl0aW9uKCcjJylbMF0pCi0KLSAgICB3aXRoIHN0YXJ0X2NvbmQ6Ci0gICAgICAgIHN0YXJ0X3RpbWUgPSBfdGltZSgpCi0gICAgICAgIHN0YXJ0ZWQgPSBUcnVlCi0gICAgICAgIHN0YXJ0X2NvbmQubm90aWZ5KG50aHJlYWRzKQotCi0gICAgbiA9IDAKLSAgICBmaXJzdF90aW1lID0gTm9uZQotICAgIHdoaWxlIG5vdCBlbmRfZXZlbnQgYW5kIEJXX0VORCBub3QgaW4gczoKLSAgICAgICAgX3NlbmR0byhzb2NrLCBzLCByZW1vdGVfYWRkcikKKyAgICAgICAgIyBSdW4gdGhlIGNsaWVudCBhbmQgd2FpdCBmb3IgdGhlIGZpcnN0IHBhY2tldCB0byBhcnJpdmUgYmVmb3JlCisgICAgICAgICMgdW5ibG9ja2luZyB0aGUgYmFja2dyb3VuZCB0aHJlYWRzLgorICAgICAgICBwcm9jZXNzID0gcnVuX2JhbmR3aWR0aF9jbGllbnQoYWRkcj1hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemU9cGFja2V0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbj1kdXJhdGlvbikKKyAgICAgICAgX3RpbWUgPSB0aW1lLnRpbWUKKyAgICAgICAgIyBUaGlzIHdpbGwgYWxzbyB3YWl0IGZvciB0aGUgcGFyZW50IHRvIGJlIHJlYWR5CiAgICAgICAgIHMgPSBfcmVjdihzb2NrLCBwYWNrZXRfc2l6ZSkKLSAgICAgICAgaWYgZmlyc3RfdGltZSBpcyBOb25lOgotICAgICAgICAgICAgZmlyc3RfdGltZSA9IF90aW1lKCkKLSAgICAgICAgbiArPSAxCi0gICAgZW5kX3RpbWUgPSBfdGltZSgpCisgICAgICAgIHJlbW90ZV9hZGRyID0gZXZhbChzLnBhcnRpdGlvbignIycpWzBdKQorCisgICAgICAgIHdpdGggc3RhcnRfY29uZDoKKyAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSBfdGltZSgpCisgICAgICAgICAgICBzdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgc3RhcnRfY29uZC5ub3RpZnkobnRocmVhZHMpCisKKyAgICAgICAgbiA9IDAKKyAgICAgICAgZmlyc3RfdGltZSA9IE5vbmUKKyAgICAgICAgd2hpbGUgbm90IGVuZF9ldmVudCBhbmQgQldfRU5EIG5vdCBpbiBzOgorICAgICAgICAgICAgX3NlbmR0byhzb2NrLCBzLCByZW1vdGVfYWRkcikKKyAgICAgICAgICAgIHMgPSBfcmVjdihzb2NrLCBwYWNrZXRfc2l6ZSkKKyAgICAgICAgICAgIGlmIGZpcnN0X3RpbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmaXJzdF90aW1lID0gX3RpbWUoKQorICAgICAgICAgICAgbiArPSAxCisgICAgICAgIGVuZF90aW1lID0gX3RpbWUoKQogCiAgICAgZW5kX2V2ZW50LmFwcGVuZChOb25lKQogICAgIGZvciB0IGluIHRocmVhZHM6CmRpZmYgLS1naXQgYS9Ub29scy9kZW1vL2xpZmUucHkgYi9Ub29scy9kZW1vL2xpZmUucHkKaW5kZXggZGZiOWFiOC4uZmM0Y2I0OSAxMDA3NTUKLS0tIGEvVG9vbHMvZGVtby9saWZlLnB5CisrKyBiL1Rvb2xzL2RlbW8vbGlmZS5weQpAQCAtNDYsMzggKzQ2LDM4IEBACiAgICAgICAgIHNlbGYuc3RhdGUgPSB7fQogICAgICAgICBzZWxmLnNjciA9IHNjcgogICAgICAgICBZLCBYID0gc2VsZi5zY3IuZ2V0bWF4eXgoKQotICAgICAgICBzZWxmLlgsIHNlbGYuWSA9IFgtMiwgWS0yLTEKKyAgICAgICAgc2VsZi5YLCBzZWxmLlkgPSBYIC0gMiwgWSAtIDIgLSAxCiAgICAgICAgIHNlbGYuY2hhciA9IGNoYXIKICAgICAgICAgc2VsZi5zY3IuY2xlYXIoKQogCiAgICAgICAgICMgRHJhdyBhIGJvcmRlciBhcm91bmQgdGhlIGJvYXJkCi0gICAgICAgIGJvcmRlcl9saW5lID0gJysnKyhzZWxmLlgqJy0nKSsnKycKKyAgICAgICAgYm9yZGVyX2xpbmUgPSAnKycgKyAoc2VsZi5YICogJy0nKSArICcrJwogICAgICAgICBzZWxmLnNjci5hZGRzdHIoMCwgMCwgYm9yZGVyX2xpbmUpCi0gICAgICAgIHNlbGYuc2NyLmFkZHN0cihzZWxmLlkrMSwgMCwgYm9yZGVyX2xpbmUpCisgICAgICAgIHNlbGYuc2NyLmFkZHN0cihzZWxmLlkgKyAxLCAwLCBib3JkZXJfbGluZSkKICAgICAgICAgZm9yIHkgaW4gcmFuZ2UoMCwgc2VsZi5ZKToKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxK3ksIDAsICd8JykKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxK3ksIHNlbGYuWCsxLCAnfCcpCisgICAgICAgICAgICBzZWxmLnNjci5hZGRzdHIoMSArIHksIDAsICd8JykKKyAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxICsgeSwgc2VsZi5YICsgMSwgJ3wnKQogICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKIAogICAgIGRlZiBzZXQoc2VsZiwgeSwgeCk6CiAgICAgICAgICIiIlNldCBhIGNlbGwgdG8gdGhlIGxpdmUgc3RhdGUiIiIKLSAgICAgICAgaWYgeDwwIG9yIHNlbGYuWDw9eCBvciB5PDAgb3Igc2VsZi5ZPD15OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29vcmRpbmF0ZXMgb3V0IG9mIHJhbmdlICVpLCVpIiUgKHksIHgpKQotICAgICAgICBzZWxmLnN0YXRlW3gseV0gPSAxCisgICAgICAgIGlmIHggPCAwIG9yIHNlbGYuWCA8PSB4IG9yIHkgPCAwIG9yIHNlbGYuWSA8PSB5OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29vcmRpbmF0ZXMgb3V0IG9mIHJhbmdlICVpLCVpIiAlICh5LCB4KSkKKyAgICAgICAgc2VsZi5zdGF0ZVt4LCB5XSA9IDEKIAogICAgIGRlZiB0b2dnbGUoc2VsZiwgeSwgeCk6CiAgICAgICAgICIiIlRvZ2dsZSBhIGNlbGwncyBzdGF0ZSBiZXR3ZWVuIGxpdmUgYW5kIGRlYWQiIiIKICAgICAgICAgaWYgeCA8IDAgb3Igc2VsZi5YIDw9IHggb3IgeSA8IDAgb3Igc2VsZi5ZIDw9IHk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb29yZGluYXRlcyBvdXQgb2YgcmFuZ2UgJWksJWkiJSAoeSwgeCkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb29yZGluYXRlcyBvdXQgb2YgcmFuZ2UgJWksJWkiICUgKHksIHgpKQogICAgICAgICBpZiAoeCwgeSkgaW4gc2VsZi5zdGF0ZToKICAgICAgICAgICAgIGRlbCBzZWxmLnN0YXRlW3gsIHldCi0gICAgICAgICAgICBzZWxmLnNjci5hZGRjaCh5KzEsIHgrMSwgJyAnKQorICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goeSArIDEsIHggKyAxLCAnICcpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN0YXRlW3gsIHldID0gMQogICAgICAgICAgICAgaWYgY3Vyc2VzLmhhc19jb2xvcnMoKToKICAgICAgICAgICAgICAgICAjIExldCdzIHBpY2sgYSByYW5kb20gY29sb3IhCiAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYXR0cnNldChjdXJzZXMuY29sb3JfcGFpcihyYW5kb20ucmFuZHJhbmdlKDEsIDcpKSkKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKHkrMSwgeCsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICBzZWxmLnNjci5hZGRjaCh5ICsgMSwgeCArIDEsIHNlbGYuY2hhcikKICAgICAgICAgICAgIHNlbGYuc2NyLmF0dHJzZXQoMCkKICAgICAgICAgc2VsZi5zY3IucmVmcmVzaCgpCiAKQEAgLTg4LDQzICs4OCw0NiBAQAogCiAgICAgZGVmIGRpc3BsYXkoc2VsZiwgdXBkYXRlX2JvYXJkPVRydWUpOgogICAgICAgICAiIiJEaXNwbGF5IHRoZSB3aG9sZSBib2FyZCwgb3B0aW9uYWxseSBjb21wdXRpbmcgb25lIGdlbmVyYXRpb24iIiIKLSAgICAgICAgTSxOID0gc2VsZi5YLCBzZWxmLlkKKyAgICAgICAgTSwgTiA9IHNlbGYuWCwgc2VsZi5ZCiAgICAgICAgIGlmIG5vdCB1cGRhdGVfYm9hcmQ6CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBNKToKICAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBOKToKLSAgICAgICAgICAgICAgICAgICAgaWYgKGksaikgaW4gc2VsZi5zdGF0ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGorMSwgaSsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICAgICAgICAgIGlmIChpLCBqKSBpbiBzZWxmLnN0YXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCBzZWxmLmNoYXIpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hZGRjaChqKzEsIGkrMSwgJyAnKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCAnICcpCiAgICAgICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGQgPSB7fQogICAgICAgICBzZWxmLmJvcmluZyA9IDEKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgTSk6Ci0gICAgICAgICAgICBMID0gcmFuZ2UoIG1heCgwLCBpLTEpLCBtaW4oTSwgaSsyKSApCisgICAgICAgICAgICBMID0gcmFuZ2UobWF4KDAsIGkgLSAxKSwgbWluKE0sIGkgKyAyKSkKICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDAsIE4pOgogICAgICAgICAgICAgICAgIHMgPSAwCi0gICAgICAgICAgICAgICAgbGl2ZSA9IChpLGopIGluIHNlbGYuc3RhdGUKLSAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZSggbWF4KDAsIGotMSksIG1pbihOLCBqKzIpICk6CisgICAgICAgICAgICAgICAgbGl2ZSA9IChpLCBqKSBpbiBzZWxmLnN0YXRlCisgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UobWF4KDAsIGogLSAxKSwgbWluKE4sIGogKyAyKSk6CiAgICAgICAgICAgICAgICAgICAgIGZvciBsIGluIEw6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobCxrKSBpbiBzZWxmLnN0YXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwsIGspIGluIHNlbGYuc3RhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyArPSAxCiAgICAgICAgICAgICAgICAgcyAtPSBsaXZlCiAgICAgICAgICAgICAgICAgaWYgcyA9PSAzOgogICAgICAgICAgICAgICAgICAgICAjIEJpcnRoCi0gICAgICAgICAgICAgICAgICAgIGRbaSxqXSA9IDEKKyAgICAgICAgICAgICAgICAgICAgZFtpLCBqXSA9IDEKICAgICAgICAgICAgICAgICAgICAgaWYgY3Vyc2VzLmhhc19jb2xvcnMoKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgTGV0J3MgcGljayBhIHJhbmRvbSBjb2xvciEKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmF0dHJzZXQoY3Vyc2VzLmNvbG9yX3BhaXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tLnJhbmRyYW5nZSgxLCA3KSkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGorMSwgaSsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGogKyAxLCBpICsgMSwgc2VsZi5jaGFyKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hdHRyc2V0KDApCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaXZlOiBzZWxmLmJvcmluZyA9IDAKLSAgICAgICAgICAgICAgICBlbGlmIHMgPT0gMiBhbmQgbGl2ZTogZFtpLGpdID0gMSAgICAgICAjIFN1cnZpdmFsCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaXZlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ib3JpbmcgPSAwCisgICAgICAgICAgICAgICAgZWxpZiBzID09IDIgYW5kIGxpdmU6CisgICAgICAgICAgICAgICAgICAgICMgU3Vydml2YWwKKyAgICAgICAgICAgICAgICAgICAgZFtpLCBqXSA9IDEKICAgICAgICAgICAgICAgICBlbGlmIGxpdmU6CiAgICAgICAgICAgICAgICAgICAgICMgRGVhdGgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaisxLCBpKzEsICcgJykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCAnICcpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYm9yaW5nID0gMAogICAgICAgICBzZWxmLnN0YXRlID0gZAogICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKQEAgLTEzNSwxNiArMTM4LDE3IEBACiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIHNlbGYuWCk6CiAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBzZWxmLlkpOgogICAgICAgICAgICAgICAgIGlmIHJhbmRvbS5yYW5kb20oKSA+IDAuNToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXQoaixpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNldChqLCBpKQogCiAKIGRlZiBlcmFzZV9tZW51KHN0ZHNjciwgbWVudV95KToKICAgICAiQ2xlYXIgdGhlIHNwYWNlIHdoZXJlIHRoZSBtZW51IHJlc2lkZXMiCiAgICAgc3Rkc2NyLm1vdmUobWVudV95LCAwKQogICAgIHN0ZHNjci5jbHJ0b2VvbCgpCi0gICAgc3Rkc2NyLm1vdmUobWVudV95KzEsIDApCisgICAgc3Rkc2NyLm1vdmUobWVudV95ICsgMSwgMCkKICAgICBzdGRzY3IuY2xydG9lb2woKQogCisKIGRlZiBkaXNwbGF5X21lbnUoc3Rkc2NyLCBtZW51X3kpOgogICAgICJEaXNwbGF5IHRoZSBtZW51IG9mIHBvc3NpYmxlIGtleXN0cm9rZSBjb21tYW5kcyIKICAgICBlcmFzZV9tZW51KHN0ZHNjciwgbWVudV95KQpAQCAtMTU0LDE1ICsxNTgsMTYgQEAKICAgICAgICAgc3Rkc2NyLmF0dHJzZXQoY3Vyc2VzLmNvbG9yX3BhaXIoMSkpCiAgICAgc3Rkc2NyLmFkZHN0cihtZW51X3ksIDQsCiAgICAgICAgICdVc2UgdGhlIGN1cnNvciBrZXlzIHRvIG1vdmUsIGFuZCBzcGFjZSBvciBFbnRlciB0byB0b2dnbGUgYSBjZWxsLicpCi0gICAgc3Rkc2NyLmFkZHN0cihtZW51X3krMSwgNCwKKyAgICBzdGRzY3IuYWRkc3RyKG1lbnVfeSArIDEsIDQsCiAgICAgICAgICdFKXJhc2UgdGhlIGJvYXJkLCBSKWFuZG9tIGZpbGwsIFMpdGVwIG9uY2Ugb3IgQylvbnRpbnVvdXNseSwgUSl1aXQnKQogICAgIHN0ZHNjci5hdHRyc2V0KDApCiAKKwogZGVmIGtleWxvb3Aoc3Rkc2NyKToKICAgICAjIENsZWFyIHRoZSBzY3JlZW4gYW5kIGRpc3BsYXkgdGhlIG1lbnUgb2Yga2V5cwogICAgIHN0ZHNjci5jbGVhcigpCiAgICAgc3Rkc2NyX3ksIHN0ZHNjcl94ID0gc3Rkc2NyLmdldG1heHl4KCkKLSAgICBtZW51X3kgPSAoc3Rkc2NyX3ktMyktMQorICAgIG1lbnVfeSA9IChzdGRzY3JfeSAtIDMpIC0gMQogICAgIGRpc3BsYXlfbWVudShzdGRzY3IsIG1lbnVfeSkKIAogICAgICMgSWYgY29sb3IsIHRoZW4gaW5pdGlhbGl6ZSB0aGUgY29sb3IgcGFpcnMKQEAgLTE3OSwxNiArMTg0LDE2IEBACiAgICAgY3Vyc2VzLm1vdXNlbWFzayhjdXJzZXMuQlVUVE9OMV9DTElDS0VEKQogCiAgICAgIyBBbGxvY2F0ZSBhIHN1YndpbmRvdyBmb3IgdGhlIExpZmUgYm9hcmQgYW5kIGNyZWF0ZSB0aGUgYm9hcmQgb2JqZWN0Ci0gICAgc3Vid2luID0gc3Rkc2NyLnN1YndpbihzdGRzY3JfeS0zLCBzdGRzY3JfeCwgMCwgMCkKKyAgICBzdWJ3aW4gPSBzdGRzY3Iuc3Vid2luKHN0ZHNjcl95IC0gMywgc3Rkc2NyX3gsIDAsIDApCiAgICAgYm9hcmQgPSBMaWZlQm9hcmQoc3Vid2luLCBjaGFyPW9yZCgnKicpKQogICAgIGJvYXJkLmRpc3BsYXkodXBkYXRlX2JvYXJkPUZhbHNlKQogCiAgICAgIyB4cG9zLCB5cG9zIGFyZSB0aGUgY3Vyc29yJ3MgcG9zaXRpb24KLSAgICB4cG9zLCB5cG9zID0gYm9hcmQuWC8vMiwgYm9hcmQuWS8vMgorICAgIHhwb3MsIHlwb3MgPSBib2FyZC5YIC8vIDIsIGJvYXJkLlkgLy8gMgogCiAgICAgIyBNYWluIGxvb3A6CiAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgc3Rkc2NyLm1vdmUoMSt5cG9zLCAxK3hwb3MpICAgICAjIE1vdmUgdGhlIGN1cnNvcgorICAgICAgICBzdGRzY3IubW92ZSgxICsgeXBvcywgMSArIHhwb3MpICAgIyBNb3ZlIHRoZSBjdXJzb3IKICAgICAgICAgYyA9IHN0ZHNjci5nZXRjaCgpICAgICAgICAgICAgICAgICMgR2V0IGEga2V5c3Ryb2tlCiAgICAgICAgIGlmIDAgPCBjIDwgMjU2OgogICAgICAgICAgICAgYyA9IGNocihjKQpAQCAtMjI0LDE1ICsyMjksMjEgQEAKICAgICAgICAgICAgICAgICBib2FyZC5kaXNwbGF5KHVwZGF0ZV9ib2FyZD1GYWxzZSkKICAgICAgICAgICAgIGVsaWYgYyBpbiAnU3MnOgogICAgICAgICAgICAgICAgIGJvYXJkLmRpc3BsYXkoKQotICAgICAgICAgICAgZWxzZTogcGFzcyAgICAgICAgICAgICAgICAgICMgSWdub3JlIGluY29ycmVjdCBrZXlzCi0gICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1VQIGFuZCB5cG9zID4gMDogICAgICAgICAgICB5cG9zIC09IDEKLSAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfRE9XTiBhbmQgeXBvcyA8IGJvYXJkLlktMTogIHlwb3MgKz0gMQotICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9MRUZUIGFuZCB4cG9zID4gMDogICAgICAgICAgeHBvcyAtPSAxCi0gICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1JJR0hUIGFuZCB4cG9zIDwgYm9hcmQuWC0xOiB4cG9zICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZ25vcmUgaW5jb3JyZWN0IGtleXMKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1VQIGFuZCB5cG9zID4gMDoKKyAgICAgICAgICAgIHlwb3MgLT0gMQorICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9ET1dOIGFuZCB5cG9zICsgMSA8IGJvYXJkLlk6CisgICAgICAgICAgICB5cG9zICs9IDEKKyAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfTEVGVCBhbmQgeHBvcyA+IDA6CisgICAgICAgICAgICB4cG9zIC09IDEKKyAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfUklHSFQgYW5kIHhwb3MgKyAxIDwgYm9hcmQuWDoKKyAgICAgICAgICAgIHhwb3MgKz0gMQogICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9NT1VTRToKICAgICAgICAgICAgIG1vdXNlX2lkLCBtb3VzZV94LCBtb3VzZV95LCBtb3VzZV96LCBidXR0b25fc3RhdGUgPSBjdXJzZXMuZ2V0bW91c2UoKQotICAgICAgICAgICAgaWYgKG1vdXNlX3ggPiAwIGFuZCBtb3VzZV94IDwgYm9hcmQuWCsxIGFuZAotICAgICAgICAgICAgICAgIG1vdXNlX3kgPiAwIGFuZCBtb3VzZV95IDwgYm9hcmQuWSsxKToKKyAgICAgICAgICAgIGlmIChtb3VzZV94ID4gMCBhbmQgbW91c2VfeCA8IGJvYXJkLlggKyAxIGFuZAorICAgICAgICAgICAgICAgIG1vdXNlX3kgPiAwIGFuZCBtb3VzZV95IDwgYm9hcmQuWSArIDEpOgogICAgICAgICAgICAgICAgIHhwb3MgPSBtb3VzZV94IC0gMQogICAgICAgICAgICAgICAgIHlwb3MgPSBtb3VzZV95IC0gMQogICAgICAgICAgICAgICAgIGJvYXJkLnRvZ2dsZSh5cG9zLCB4cG9zKQpAQCAtMjQ1LDcgKzI1Niw3IEBACiAKIAogZGVmIG1haW4oc3Rkc2NyKToKLSAgICBrZXlsb29wKHN0ZHNjcikgICAgICAgICAgICAgICAgICAgICMgRW50ZXIgdGhlIG1haW4gbG9vcAorICAgIGtleWxvb3Aoc3Rkc2NyKSAgICAgICAgICAgICAgICAgIyBFbnRlciB0aGUgbWFpbiBsb29wCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgY3Vyc2VzLndyYXBwZXIobWFpbikKZGlmZiAtLWdpdCBhL1Rvb2xzL2RlbW8vc3MxLnB5IGIvVG9vbHMvZGVtby9zczEucHkKaW5kZXggNGNlYTY2Ny4uNzFjOWJlOCAxMDA3NTUKLS0tIGEvVG9vbHMvZGVtby9zczEucHkKKysrIGIvVG9vbHMvZGVtby9zczEucHkKQEAgLTgxMiw3ICs4MTIsNiBAQAogCiBkZWYgdGVzdF9iYXNpYygpOgogICAgICJCYXNpYyBub24tZ3VpIHNlbGYtdGVzdC4iCi0gICAgaW1wb3J0IG9zCiAgICAgYSA9IFNoZWV0KCkKICAgICBmb3IgeCBpbiByYW5nZSgxLCAxMSk6CiAgICAgICAgIGZvciB5IGluIHJhbmdlKDEsIDExKToKZGlmZiAtLWdpdCBhL1Rvb2xzL2dkYi9saWJweXRob24ucHkgYi9Ub29scy9nZGIvbGlicHl0aG9uLnB5CmluZGV4IDhiYmJiMTAuLjJjZGMzZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2dkYi9saWJweXRob24ucHkKKysrIGIvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQpAQCAtNDksNiArNDksMTEgQEAKIF90eXBlX2NoYXJfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCdjaGFyJykucG9pbnRlcigpICMgY2hhcioKIF90eXBlX3Vuc2lnbmVkX2NoYXJfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCd1bnNpZ25lZCBjaGFyJykucG9pbnRlcigpICMgdW5zaWduZWQgY2hhcioKIF90eXBlX3ZvaWRfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCd2b2lkJykucG9pbnRlcigpICMgdm9pZCoKK190eXBlX3Vuc2lnbmVkX3Nob3J0X3B0ciA9IGdkYi5sb29rdXBfdHlwZSgndW5zaWduZWQgc2hvcnQnKS5wb2ludGVyKCkKK190eXBlX3Vuc2lnbmVkX2ludF9wdHIgPSBnZGIubG9va3VwX3R5cGUoJ3Vuc2lnbmVkIGludCcpLnBvaW50ZXIoKQorCisjIHZhbHVlIGNvbXB1dGVkIGxhdGVyLCBzZWUgUHlVbmljb2RlT2JqZWN0UHRyLnByb3h5KCkKK19pc19wZXAzOTMgPSBOb25lCiAKIFNJWkVPRl9WT0lEX1AgPSBfdHlwZV92b2lkX3B0ci5zaXplb2YKIApAQCAtMzIyLDcgKzMyNyw2IEBACiAKICAgICAgICAgbmFtZV9tYXAgPSB7J2Jvb2wnOiBQeUJvb2xPYmplY3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdjbGFzc29iaic6IFB5Q2xhc3NPYmplY3RQdHIsCi0gICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSc6IFB5SW5zdGFuY2VPYmplY3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdOb25lVHlwZSc6IFB5Tm9uZVN0cnVjdFB0ciwKICAgICAgICAgICAgICAgICAgICAgJ2ZyYW1lJzogUHlGcmFtZU9iamVjdFB0ciwKICAgICAgICAgICAgICAgICAgICAgJ3NldCcgOiBQeVNldE9iamVjdFB0ciwKQEAgLTM5Niw3ICs0MDAsNyBAQAogCiAKIGRlZiBfd3JpdGVfaW5zdGFuY2VfcmVwcihvdXQsIHZpc2l0ZWQsIG5hbWUsIHB5b3BfYXR0cmRpY3QsIGFkZHJlc3MpOgotICAgICcnJ1NoYXJlZCBjb2RlIGZvciB1c2UgYnkgb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUgY2xhc3NlczoKKyAgICAnJydTaGFyZWQgY29kZSBmb3IgdXNlIGJ5IGFsbCBjbGFzc2VzOgogICAgIHdyaXRlIGEgcmVwcmVzZW50YXRpb24gdG8gZmlsZS1saWtlIG9iamVjdCAib3V0IicnJwogICAgIG91dC53cml0ZSgnPCcpCiAgICAgb3V0LndyaXRlKG5hbWUpCkBAIC00NzksNyArNDgzLDcgQEAKIAogICAgIGRlZiBwcm94eXZhbChzZWxmLCB2aXNpdGVkKToKICAgICAgICAgJycnCi0gICAgICAgIFN1cHBvcnQgZm9yIG5ldy1zdHlsZSBjbGFzc2VzLgorICAgICAgICBTdXBwb3J0IGZvciBjbGFzc2VzLgogCiAgICAgICAgIEN1cnJlbnRseSB3ZSBqdXN0IGxvY2F0ZSB0aGUgZGljdGlvbmFyeSB1c2luZyBhIHRyYW5zbGl0ZXJhdGlvbiB0bwogICAgICAgICBweXRob24gb2YgX1B5T2JqZWN0X0dldERpY3RQdHIsIGlnbm9yaW5nIGRlc2NyaXB0b3JzCkBAIC00OTYsNyArNTAwLDcgQEAKICAgICAgICAgICAgIGF0dHJfZGljdCA9IHt9CiAgICAgICAgIHRwX25hbWUgPSBzZWxmLnNhZmVfdHBfbmFtZSgpCiAKLSAgICAgICAgIyBOZXctc3R5bGUgY2xhc3M6CisgICAgICAgICMgQ2xhc3M6CiAgICAgICAgIHJldHVybiBJbnN0YW5jZVByb3h5KHRwX25hbWUsIGF0dHJfZGljdCwgbG9uZyhzZWxmLl9nZGJ2YWwpKQogCiAgICAgZGVmIHdyaXRlX3JlcHIoc2VsZiwgb3V0LCB2aXNpdGVkKToKQEAgLTYzMCw5ICs2MzQsMTQgQEAKICAgICAgICAgWWllbGRzIGEgc2VxdWVuY2Ugb2YgKFB5T2JqZWN0UHRyIGtleSwgUHlPYmplY3RQdHIgdmFsdWUpIHBhaXJzLAogICAgICAgICBhbmFsYWdvdXMgdG8gZGljdC5pdGVyaXRlbXMoKQogICAgICAgICAnJycKLSAgICAgICAgZm9yIGkgaW4gc2FmZV9yYW5nZShzZWxmLmZpZWxkKCdtYV9tYXNrJykgKyAxKToKLSAgICAgICAgICAgIGVwID0gc2VsZi5maWVsZCgnbWFfdGFibGUnKSArIGkKLSAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cihlcFsnbWVfdmFsdWUnXSkKKyAgICAgICAga2V5cyA9IHNlbGYuZmllbGQoJ21hX2tleXMnKQorICAgICAgICB2YWx1ZXMgPSBzZWxmLmZpZWxkKCdtYV92YWx1ZXMnKQorICAgICAgICBmb3IgaSBpbiBzYWZlX3JhbmdlKGtleXNbJ2RrX3NpemUnXSk6CisgICAgICAgICAgICBlcCA9IGtleXNbJ2RrX2VudHJpZXMnXS5hZGRyZXNzICsgaQorICAgICAgICAgICAgaWYgbG9uZyh2YWx1ZXMpOgorICAgICAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cih2YWx1ZXNbaV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cihlcFsnbWVfdmFsdWUnXSkKICAgICAgICAgICAgIGlmIG5vdCBweW9wX3ZhbHVlLmlzX251bGwoKToKICAgICAgICAgICAgICAgICBweW9wX2tleSA9IFB5T2JqZWN0UHRyLmZyb21fcHlvYmplY3RfcHRyKGVwWydtZV9rZXknXSkKICAgICAgICAgICAgICAgICB5aWVsZCAocHlvcF9rZXksIHB5b3BfdmFsdWUpCkBAIC02NjgsNDQgKzY3Nyw2IEBACiAgICAgICAgICAgICBweW9wX3ZhbHVlLndyaXRlX3JlcHIob3V0LCB2aXNpdGVkKQogICAgICAgICBvdXQud3JpdGUoJ30nKQogCi1jbGFzcyBQeUluc3RhbmNlT2JqZWN0UHRyKFB5T2JqZWN0UHRyKToKLSAgICBfdHlwZW5hbWUgPSAnUHlJbnN0YW5jZU9iamVjdCcKLQotICAgIGRlZiBwcm94eXZhbChzZWxmLCB2aXNpdGVkKToKLSAgICAgICAgIyBHdWFyZCBhZ2FpbnN0IGluZmluaXRlIGxvb3BzOgotICAgICAgICBpZiBzZWxmLmFzX2FkZHJlc3MoKSBpbiB2aXNpdGVkOgotICAgICAgICAgICAgcmV0dXJuIFByb3h5QWxyZWFkeVZpc2l0ZWQoJzwuLi4+JykKLSAgICAgICAgdmlzaXRlZC5hZGQoc2VsZi5hc19hZGRyZXNzKCkpCi0KLSAgICAgICAgIyBHZXQgbmFtZSBvZiBjbGFzczoKLSAgICAgICAgaW5fY2xhc3MgPSBzZWxmLnB5b3BfZmllbGQoJ2luX2NsYXNzJykKLSAgICAgICAgY2xfbmFtZSA9IGluX2NsYXNzLnB5b3BfZmllbGQoJ2NsX25hbWUnKS5wcm94eXZhbCh2aXNpdGVkKQotCi0gICAgICAgICMgR2V0IGRpY3Rpb25hcnkgb2YgaW5zdGFuY2UgYXR0cmlidXRlczoKLSAgICAgICAgaW5fZGljdCA9IHNlbGYucHlvcF9maWVsZCgnaW5fZGljdCcpLnByb3h5dmFsKHZpc2l0ZWQpCi0KLSAgICAgICAgIyBPbGQtc3R5bGUgY2xhc3M6Ci0gICAgICAgIHJldHVybiBJbnN0YW5jZVByb3h5KGNsX25hbWUsIGluX2RpY3QsIGxvbmcoc2VsZi5fZ2RidmFsKSkKLQotICAgIGRlZiB3cml0ZV9yZXByKHNlbGYsIG91dCwgdmlzaXRlZCk6Ci0gICAgICAgICMgR3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBsb29wczoKLSAgICAgICAgaWYgc2VsZi5hc19hZGRyZXNzKCkgaW4gdmlzaXRlZDoKLSAgICAgICAgICAgIG91dC53cml0ZSgnPC4uLj4nKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHZpc2l0ZWQuYWRkKHNlbGYuYXNfYWRkcmVzcygpKQotCi0gICAgICAgICMgT2xkLXN0eWxlIGNsYXNzOgotCi0gICAgICAgICMgR2V0IG5hbWUgb2YgY2xhc3M6Ci0gICAgICAgIGluX2NsYXNzID0gc2VsZi5weW9wX2ZpZWxkKCdpbl9jbGFzcycpCi0gICAgICAgIGNsX25hbWUgPSBpbl9jbGFzcy5weW9wX2ZpZWxkKCdjbF9uYW1lJykucHJveHl2YWwodmlzaXRlZCkKLQotICAgICAgICAjIEdldCBkaWN0aW9uYXJ5IG9mIGluc3RhbmNlIGF0dHJpYnV0ZXM6Ci0gICAgICAgIHB5b3BfaW5fZGljdCA9IHNlbGYucHlvcF9maWVsZCgnaW5fZGljdCcpCi0KLSAgICAgICAgX3dyaXRlX2luc3RhbmNlX3JlcHIob3V0LCB2aXNpdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbF9uYW1lLCBweW9wX2luX2RpY3QsIHNlbGYuYXNfYWRkcmVzcygpKQotCiBjbGFzcyBQeUxpc3RPYmplY3RQdHIoUHlPYmplY3RQdHIpOgogICAgIF90eXBlbmFtZSA9ICdQeUxpc3RPYmplY3QnCiAKQEAgLTExMjMsMTUgKzEwOTQsNDYgQEAKICAgICAgICAgcmV0dXJuIF90eXBlX1B5X1VOSUNPREUuc2l6ZW9mCiAKICAgICBkZWYgcHJveHl2YWwoc2VsZiwgdmlzaXRlZCk6Ci0gICAgICAgICMgRnJvbSB1bmljb2Rlb2JqZWN0Lmg6Ci0gICAgICAgICMgICAgIFB5X3NzaXplX3QgbGVuZ3RoOyAgLyogTGVuZ3RoIG9mIHJhdyBVbmljb2RlIGRhdGEgaW4gYnVmZmVyICovCi0gICAgICAgICMgICAgIFB5X1VOSUNPREUgKnN0cjsgICAgLyogUmF3IFVuaWNvZGUgYnVmZmVyICovCi0gICAgICAgIGZpZWxkX2xlbmd0aCA9IGxvbmcoc2VsZi5maWVsZCgnbGVuZ3RoJykpCi0gICAgICAgIGZpZWxkX3N0ciA9IHNlbGYuZmllbGQoJ3N0cicpCisgICAgICAgIGdsb2JhbCBfaXNfcGVwMzkzCisgICAgICAgIGlmIF9pc19wZXAzOTMgaXMgTm9uZToKKyAgICAgICAgICAgIGZpZWxkcyA9IGdkYi5sb29rdXBfdHlwZSgnUHlVbmljb2RlT2JqZWN0JykudGFyZ2V0KCkuZmllbGRzKCkKKyAgICAgICAgICAgIF9pc19wZXAzOTMgPSAnZGF0YScgaW4gW2YubmFtZSBmb3IgZiBpbiBmaWVsZHNdCisgICAgICAgIGlmIF9pc19wZXAzOTM6CisgICAgICAgICAgICAjIFB5dGhvbiAzLjMgYW5kIG5ld2VyCisgICAgICAgICAgICBtYXlfaGF2ZV9zdXJyb2dhdGVzID0gRmFsc2UKKyAgICAgICAgICAgIGNvbXBhY3QgPSBzZWxmLmZpZWxkKCdfYmFzZScpCisgICAgICAgICAgICBhc2NpaSA9IGNvbXBhY3RbJ19iYXNlJ10KKyAgICAgICAgICAgIHN0YXRlID0gYXNjaWlbJ3N0YXRlJ10KKyAgICAgICAgICAgIGlzX2NvbXBhY3RfYXNjaWkgPSAoaW50KHN0YXRlWydhc2NpaSddKSBhbmQgaW50KHN0YXRlWydjb21wYWN0J10pKQorICAgICAgICAgICAgaWYgbm90IGludChzdGF0ZVsncmVhZHknXSk6CisgICAgICAgICAgICAgICAgIyBzdHJpbmcgaXMgbm90IHJlYWR5CisgICAgICAgICAgICAgICAgZmllbGRfbGVuZ3RoID0gbG9uZyhjb21wYWN0Wyd3c3RyX2xlbmd0aCddKQorICAgICAgICAgICAgICAgIG1heV9oYXZlX3N1cnJvZ2F0ZXMgPSBUcnVlCisgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gYXNjaWlbJ3dzdHInXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmaWVsZF9sZW5ndGggPSBsb25nKGFzY2lpWydsZW5ndGgnXSkKKyAgICAgICAgICAgICAgICBpZiBpc19jb21wYWN0X2FzY2lpOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBhc2NpaS5hZGRyZXNzICsgMQorICAgICAgICAgICAgICAgIGVsaWYgaW50KHN0YXRlWydjb21wYWN0J10pOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBjb21wYWN0LmFkZHJlc3MgKyAxCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gc2VsZi5maWVsZCgnZGF0YScpWydhbnknXQorICAgICAgICAgICAgICAgIHJlcHJfa2luZCA9IGludChzdGF0ZVsna2luZCddKQorICAgICAgICAgICAgICAgIGlmIHJlcHJfa2luZCA9PSAxOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBmaWVsZF9zdHIuY2FzdChfdHlwZV91bnNpZ25lZF9jaGFyX3B0cikKKyAgICAgICAgICAgICAgICBlbGlmIHJlcHJfa2luZCA9PSAyOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBmaWVsZF9zdHIuY2FzdChfdHlwZV91bnNpZ25lZF9zaG9ydF9wdHIpCisgICAgICAgICAgICAgICAgZWxpZiByZXByX2tpbmQgPT0gNDoKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gZmllbGRfc3RyLmNhc3QoX3R5cGVfdW5zaWduZWRfaW50X3B0cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgUHl0aG9uIDMuMiBhbmQgZWFybGllcgorICAgICAgICAgICAgZmllbGRfbGVuZ3RoID0gbG9uZyhzZWxmLmZpZWxkKCdsZW5ndGgnKSkKKyAgICAgICAgICAgIGZpZWxkX3N0ciA9IHNlbGYuZmllbGQoJ3N0cicpCisgICAgICAgICAgICBtYXlfaGF2ZV9zdXJyb2dhdGVzID0gc2VsZi5jaGFyX3dpZHRoKCkgPT0gMgogCiAgICAgICAgICMgR2F0aGVyIGEgbGlzdCBvZiBpbnRzIGZyb20gdGhlIFB5X1VOSUNPREUgYXJyYXk7IHRoZXNlIGFyZSBlaXRoZXIKLSAgICAgICAgIyBVQ1MtMiBvciBVQ1MtNCBjb2RlIHBvaW50czoKLSAgICAgICAgaWYgc2VsZi5jaGFyX3dpZHRoKCkgPiAyOgorICAgICAgICAjIFVDUy0xLCBVQ1MtMiBvciBVQ1MtNCBjb2RlIHBvaW50czoKKyAgICAgICAgaWYgbm90IG1heV9oYXZlX3N1cnJvZ2F0ZXM6CiAgICAgICAgICAgICBQeV9VTklDT0RFcyA9IFtpbnQoZmllbGRfc3RyW2ldKSBmb3IgaSBpbiBzYWZlX3JhbmdlKGZpZWxkX2xlbmd0aCldCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIEEgbW9yZSBlbGFib3JhdGUgcm91dGluZSBpZiBzaXplb2YoUHlfVU5JQ09ERSkgaXMgMiBpbiB0aGUKQEAgLTEzODgsNiArMTM5MCwyMyBAQAogICAgICAgICAgICAgaXRlcl9mcmFtZSA9IGl0ZXJfZnJhbWUubmV3ZXIoKQogICAgICAgICByZXR1cm4gaW5kZXgKIAorICAgICMgV2UgZGl2aWRlIGZyYW1lcyBpbnRvOgorICAgICMgICAtICJweXRob24gZnJhbWVzIjoKKyAgICAjICAgICAgIC0gImJ5dGVjb2RlIGZyYW1lcyIgaS5lLiBQeUV2YWxfRXZhbEZyYW1lRXgKKyAgICAjICAgICAgIC0gIm90aGVyIHB5dGhvbiBmcmFtZXMiOiB0aGluZ3MgdGhhdCBhcmUgb2YgaW50ZXJlc3QgZnJvbSBhIHB5dGhvbgorICAgICMgICAgICAgICBQT1YsIGJ1dCBhcmVuJ3QgYnl0ZWNvZGUgKGUuZy4gR0MsIEdJTCkKKyAgICAjICAgLSBldmVyeXRoaW5nIGVsc2UKKworICAgIGRlZiBpc19weXRob25fZnJhbWUoc2VsZik6CisgICAgICAgICcnJ0lzIHRoaXMgYSBQeUV2YWxfRXZhbEZyYW1lRXggZnJhbWUsIG9yIHNvbWUgb3RoZXIgaW1wb3J0YW50CisgICAgICAgIGZyYW1lPyAoc2VlIGlzX290aGVyX3B5dGhvbl9mcmFtZSBmb3Igd2hhdCAiaW1wb3J0YW50IiBtZWFucyBpbiB0aGlzCisgICAgICAgIGNvbnRleHQpJycnCisgICAgICAgIGlmIHNlbGYuaXNfZXZhbGZyYW1lZXgoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYuaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIGRlZiBpc19ldmFsZnJhbWVleChzZWxmKToKICAgICAgICAgJycnSXMgdGhpcyBhIFB5RXZhbF9FdmFsRnJhbWVFeCBmcmFtZT8nJycKICAgICAgICAgaWYgc2VsZi5fZ2RiZnJhbWUubmFtZSgpID09ICdQeUV2YWxfRXZhbEZyYW1lRXgnOgpAQCAtMTQwNCw2ICsxNDIzLDQ5IEBACiAKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBkZWYgaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKHNlbGYpOgorICAgICAgICAnJydJcyB0aGlzIGZyYW1lIHdvcnRoIGRpc3BsYXlpbmcgaW4gcHl0aG9uIGJhY2t0cmFjZXM/CisgICAgICAgIEV4YW1wbGVzOgorICAgICAgICAgIC0gd2FpdGluZyBvbiB0aGUgR0lMCisgICAgICAgICAgLSBnYXJiYWdlLWNvbGxlY3RpbmcKKyAgICAgICAgICAtIHdpdGhpbiBhIENGdW5jdGlvbgorICAgICAgICAgSWYgaXQgaXMsIHJldHVybiBhIGRlc2NyaXB0aXZlIHN0cmluZworICAgICAgICAgRm9yIG90aGVyIGZyYW1lcywgcmV0dXJuIEZhbHNlCisgICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5pc193YWl0aW5nX2Zvcl9naWwoKToKKyAgICAgICAgICAgIHJldHVybiAnV2FpdGluZyBmb3IgdGhlIEdJTCcKKyAgICAgICAgZWxpZiBzZWxmLmlzX2djX2NvbGxlY3QoKToKKyAgICAgICAgICAgIHJldHVybiAnR2FyYmFnZS1jb2xsZWN0aW5nJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBEZXRlY3QgaW52b2NhdGlvbnMgb2YgUHlDRnVuY3Rpb24gaW5zdGFuY2VzOgorICAgICAgICAgICAgb2xkZXIgPSBzZWxmLm9sZGVyKCkKKyAgICAgICAgICAgIGlmIG9sZGVyIGFuZCBvbGRlci5fZ2RiZnJhbWUubmFtZSgpID09ICdQeUNGdW5jdGlvbl9DYWxsJzoKKyAgICAgICAgICAgICAgICAjIFdpdGhpbiB0aGF0IGZyYW1lOgorICAgICAgICAgICAgICAgICMgICAiZnVuYyIgaXMgdGhlIGxvY2FsIGNvbnRhaW5pbmcgdGhlIFB5T2JqZWN0KiBvZiB0aGUKKyAgICAgICAgICAgICAgICAjIFB5Q0Z1bmN0aW9uT2JqZWN0IGluc3RhbmNlCisgICAgICAgICAgICAgICAgIyAgICJmIiBpcyB0aGUgc2FtZSB2YWx1ZSwgYnV0IGNhc3QgdG8gKFB5Q0Z1bmN0aW9uT2JqZWN0KikKKyAgICAgICAgICAgICAgICAjICAgInNlbGYiIGlzIHRoZSAoUHlPYmplY3QqKSBvZiB0aGUgJ3NlbGYnCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJldHR5cHJpbnRlciBmb3IgdGhlIGZ1bmM6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBvbGRlci5fZ2RiZnJhbWUucmVhZF92YXIoJ2Z1bmMnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyKGZ1bmMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQeUNGdW5jdGlvbiBpbnZvY2F0aW9uICh1bmFibGUgdG8gcmVhZCAiZnVuYyIpJworCisgICAgICAgICMgVGhpcyBmcmFtZSBpc24ndCB3b3J0aCByZXBvcnRpbmc6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3dhaXRpbmdfZm9yX2dpbChzZWxmKToKKyAgICAgICAgJycnSXMgdGhpcyBmcmFtZSB3YWl0aW5nIG9uIHRoZSBHSUw/JycnCisgICAgICAgICMgVGhpcyBhc3N1bWVzIHRoZSBfUE9TSVhfVEhSRUFEUyB2ZXJzaW9uIG9mIFB5dGhvbi9jZXZhbF9naWwuaDoKKyAgICAgICAgbmFtZSA9IHNlbGYuX2dkYmZyYW1lLm5hbWUoKQorICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUuc3RhcnRzd2l0aCgncHRocmVhZF9jb25kX3RpbWVkd2FpdCcpCisKKyAgICBkZWYgaXNfZ2NfY29sbGVjdChzZWxmKToKKyAgICAgICAgJycnSXMgdGhpcyBmcmFtZSAiY29sbGVjdCIgd2l0aGluIHRoZSB0aGUgZ2FyYmFnZS1jb2xsZWN0b3I/JycnCisgICAgICAgIHJldHVybiBzZWxmLl9nZGJmcmFtZS5uYW1lKCkgPT0gJ2NvbGxlY3QnCisKICAgICBkZWYgZ2V0X3B5b3Aoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBzZWxmLl9nZGJmcmFtZS5yZWFkX3ZhcignZicpCkBAIC0xNDMzLDggKzE0OTUsMjIgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnZXRfc2VsZWN0ZWRfcHl0aG9uX2ZyYW1lKGNscyk6Ci0gICAgICAgICcnJ1RyeSB0byBvYnRhaW4gdGhlIEZyYW1lIGZvciB0aGUgcHl0aG9uIGNvZGUgaW4gdGhlIHNlbGVjdGVkIGZyYW1lLAotICAgICAgICBvciBOb25lJycnCisgICAgICAgICcnJ1RyeSB0byBvYnRhaW4gdGhlIEZyYW1lIGZvciB0aGUgcHl0aG9uLXJlbGF0ZWQgY29kZSBpbiB0aGUgc2VsZWN0ZWQKKyAgICAgICAgZnJhbWUsIG9yIE5vbmUnJycKKyAgICAgICAgZnJhbWUgPSBjbHMuZ2V0X3NlbGVjdGVkX2ZyYW1lKCkKKworICAgICAgICB3aGlsZSBmcmFtZToKKyAgICAgICAgICAgIGlmIGZyYW1lLmlzX3B5dGhvbl9mcmFtZSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZQorICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5vbGRlcigpCisKKyAgICAgICAgIyBOb3QgZm91bmQ6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X3NlbGVjdGVkX2J5dGVjb2RlX2ZyYW1lKGNscyk6CisgICAgICAgICcnJ1RyeSB0byBvYnRhaW4gdGhlIEZyYW1lIGZvciB0aGUgcHl0aG9uIGJ5dGVjb2RlIGludGVycHJldGVyIGluIHRoZQorICAgICAgICBzZWxlY3RlZCBHREIgZnJhbWUsIG9yIE5vbmUnJycKICAgICAgICAgZnJhbWUgPSBjbHMuZ2V0X3NlbGVjdGVkX2ZyYW1lKCkKIAogICAgICAgICB3aGlsZSBmcmFtZToKQEAgLTE0NTgsNyArMTUzNCwxMSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcjJWkgKHVuYWJsZSB0byByZWFkIHB5dGhvbiBmcmFtZSBpbmZvcm1hdGlvbilcbicgJSBzZWxmLmdldF9pbmRleCgpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnIyVpXG4nICUgc2VsZi5nZXRfaW5kZXgoKSkKKyAgICAgICAgICAgIGluZm8gPSBzZWxmLmlzX290aGVyX3B5dGhvbl9mcmFtZSgpCisgICAgICAgICAgICBpZiBpbmZvOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyMlaSAlc1xuJyAlIChzZWxmLmdldF9pbmRleCgpLCBpbmZvKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnIyVpXG4nICUgc2VsZi5nZXRfaW5kZXgoKSkKIAogICAgIGRlZiBwcmludF90cmFjZWJhY2soc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaXNfZXZhbGZyYW1lZXgoKToKQEAgLTE0NzIsNyArMTU1MiwxMSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgICh1bmFibGUgdG8gcmVhZCBweXRob24gZnJhbWUgaW5mb3JtYXRpb24pXG4nKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICAobm90IGEgcHl0aG9uIGZyYW1lKVxuJykKKyAgICAgICAgICAgIGluZm8gPSBzZWxmLmlzX290aGVyX3B5dGhvbl9mcmFtZSgpCisgICAgICAgICAgICBpZiBpbmZvOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAgJXNcbicgJSBpbmZvKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgIChub3QgYSBweXRob24gZnJhbWUpXG4nKQogCiBjbGFzcyBQeUxpc3QoZ2RiLkNvbW1hbmQpOgogICAgICcnJ0xpc3QgdGhlIGN1cnJlbnQgUHl0aG9uIHNvdXJjZSBjb2RlLCBpZiBhbnkKQEAgLTE1MDgsOSArMTU5MiwxMCBAQAogICAgICAgICBpZiBtOgogICAgICAgICAgICAgc3RhcnQsIGVuZCA9IG1hcChpbnQsIG0uZ3JvdXBzKCkpCiAKLSAgICAgICAgZnJhbWUgPSBGcmFtZS5nZXRfc2VsZWN0ZWRfcHl0aG9uX2ZyYW1lKCkKKyAgICAgICAgIyBweS1saXN0IHJlcXVpcmVzIGFuIGFjdHVhbCBQeUV2YWxfRXZhbEZyYW1lRXggZnJhbWU6CisgICAgICAgIGZyYW1lID0gRnJhbWUuZ2V0X3NlbGVjdGVkX2J5dGVjb2RlX2ZyYW1lKCkKICAgICAgICAgaWYgbm90IGZyYW1lOgotICAgICAgICAgICAgcHJpbnQgJ1VuYWJsZSB0byBsb2NhdGUgcHl0aG9uIGZyYW1lJworICAgICAgICAgICAgcHJpbnQgJ1VuYWJsZSB0byBsb2NhdGUgZ2RiIGZyYW1lIGZvciBweXRob24gYnl0ZWNvZGUgaW50ZXJwcmV0ZXInCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBweW9wID0gZnJhbWUuZ2V0X3B5b3AoKQpAQCAtMTU2Miw3ICsxNjQ3LDcgQEAKICAgICAgICAgaWYgbm90IGl0ZXJfZnJhbWU6CiAgICAgICAgICAgICBicmVhawogCi0gICAgICAgIGlmIGl0ZXJfZnJhbWUuaXNfZXZhbGZyYW1lZXgoKToKKyAgICAgICAgaWYgaXRlcl9mcmFtZS5pc19weXRob25fZnJhbWUoKToKICAgICAgICAgICAgICMgUmVzdWx0OgogICAgICAgICAgICAgaWYgaXRlcl9mcmFtZS5zZWxlY3QoKToKICAgICAgICAgICAgICAgICBpdGVyX2ZyYW1lLnByaW50X3N1bW1hcnkoKQpAQCAtMTYxNiw3ICsxNzAxLDcgQEAKICAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ3MsIGZyb21fdHR5KToKICAgICAgICAgZnJhbWUgPSBGcmFtZS5nZXRfc2VsZWN0ZWRfcHl0aG9uX2ZyYW1lKCkKICAgICAgICAgd2hpbGUgZnJhbWU6Ci0gICAgICAgICAgICBpZiBmcmFtZS5pc19ldmFsZnJhbWVleCgpOgorICAgICAgICAgICAgaWYgZnJhbWUuaXNfcHl0aG9uX2ZyYW1lKCk6CiAgICAgICAgICAgICAgICAgZnJhbWUucHJpbnRfc3VtbWFyeSgpCiAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyKCkKIApAQCAtMTYzNSw3ICsxNzIwLDcgQEAKICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTpcbicpCiAgICAgICAgIGZyYW1lID0gRnJhbWUuZ2V0X3NlbGVjdGVkX3B5dGhvbl9mcmFtZSgpCiAgICAgICAgIHdoaWxlIGZyYW1lOgotICAgICAgICAgICAgaWYgZnJhbWUuaXNfZXZhbGZyYW1lZXgoKToKKyAgICAgICAgICAgIGlmIGZyYW1lLmlzX3B5dGhvbl9mcmFtZSgpOgogICAgICAgICAgICAgICAgIGZyYW1lLnByaW50X3RyYWNlYmFjaygpCiAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyKCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvaGcvaGd0b3VjaC5weSBiL1Rvb2xzL2hnL2hndG91Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk2MWExMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2hnL2hndG91Y2gucHkKQEAgLTAsMCArMSwxMDMgQEAKKyIiIkJyaW5nIHRpbWUgc3RhbXBzIG9mIGdlbmVyYXRlZCBjaGVja2VkLWluIGZpbGVzIGludG8gdGhlIHJpZ2h0IG9yZGVyCisKK0EgdmVyc2lvbmVkIGNvbmZpZ3VyYXRpb24gZmlsZSAuaGd0b3VjaCBzcGVjaWZpZXMgZ2VuZXJhdGVkIGZpbGVzLCBpbiB0aGUKK3N5bnRheCBvZiBtYWtlIHJ1bGVzLgorCisgIG91dHB1dDogICAgaW5wdXQxIGlucHV0MgorCitJbiBhZGRpdGlvbiB0byB0aGUgZGVwZW5kZW5jeSBzeW50YXgsICMtY29tbWVudHMgYXJlIHN1cHBvcnRlZC4KKyIiIgoraW1wb3J0IGVycm5vCitpbXBvcnQgb3MKKworZGVmIHBhcnNlX2NvbmZpZyhyZXBvKToKKyAgICB0cnk6CisgICAgICAgIGZwID0gcmVwby53ZmlsZSgiLmhndG91Y2giKQorICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldHVybiB7fQorICAgIHJlc3VsdCA9IHt9CisgICAgd2l0aCBmcDoKKyAgICAgICAgZm9yIGxpbmUgaW4gZnA6CisgICAgICAgICAgICAjIHN0cmlwIGNvbW1lbnRzCisgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnIycpWzBdLnN0cmlwKCkKKyAgICAgICAgICAgIGlmICc6JyBub3QgaW4gbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgb3V0cHV0cywgaW5wdXRzID0gbGluZS5zcGxpdCgnOicsIDEpCisgICAgICAgICAgICBvdXRwdXRzID0gb3V0cHV0cy5zcGxpdCgpCisgICAgICAgICAgICBpbnB1dHMgPSBpbnB1dHMuc3BsaXQoKQorICAgICAgICAgICAgZm9yIG8gaW4gb3V0cHV0czoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtvXS5leHRlbmQoaW5wdXRzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W29dID0gaW5wdXRzCisgICAgcmV0dXJuIHJlc3VsdAorCitkZWYgY2hlY2tfcnVsZSh1aSwgcmVwbywgbW9kaWZpZWQsIG91dHB1dCwgaW5wdXRzKToKKyAgICBmX291dHB1dCA9IHJlcG8ud2pvaW4ob3V0cHV0KQorICAgIHRyeToKKyAgICAgICAgb190aW1lID0gb3Muc3RhdChmX291dHB1dCkuc3RfbXRpbWUKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgdWkud2FybigiR2VuZXJhdGVkIGZpbGUgJXMgZG9lcyBub3QgZXhpc3RcbiIgJSBvdXRwdXQpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIG5lZWRfdG91Y2ggPSBGYWxzZQorICAgIGJhY2tkYXRlID0gTm9uZQorICAgIGJhY2tkYXRlX3NvdXJjZSA9IE5vbmUKKyAgICBmb3IgaSBpbiBpbnB1dHM6CisgICAgICAgIGZfaSA9IHJlcG8ud2pvaW4oaSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaV90aW1lID0gb3Muc3RhdChmX2kpLnN0X210aW1lCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgdWkud2FybigiLmhndG91Y2ggaW5wdXQgZmlsZSAlcyBkb2VzIG5vdCBleGlzdFxuIiAlIGkpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgaSBpbiBtb2RpZmllZDoKKyAgICAgICAgICAgICMgaW5wdXQgaXMgbW9kaWZpZWQuIE5lZWQgdG8gYmFja2RhdGUgYXQgbGVhc3QgdG8gaV90aW1lCisgICAgICAgICAgICBpZiBiYWNrZGF0ZSBpcyBOb25lIG9yIGJhY2tkYXRlID4gaV90aW1lOgorICAgICAgICAgICAgICAgIGJhY2tkYXRlID0gaV90aW1lCisgICAgICAgICAgICAgICAgYmFja2RhdGVfc291cmNlID0gaQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgb190aW1lIDw9IGlfdGltZToKKyAgICAgICAgICAgICMgZ2VuZXJhdGVkIGZpbGUgaXMgb2xkZXIsIHRvdWNoCisgICAgICAgICAgICBuZWVkX3RvdWNoID0gVHJ1ZQorICAgIGlmIGJhY2tkYXRlIGlzIG5vdCBOb25lOgorICAgICAgICB1aS53YXJuKCJJbnB1dCAlcyBmb3IgZmlsZSAlcyBsb2NhbGx5IG1vZGlmaWVkXG4iICUgKGJhY2tkYXRlX3NvdXJjZSwgb3V0cHV0KSkKKyAgICAgICAgIyBzZXQgdG8gMXMgYmVmb3JlIG9sZGVzdCBtb2RpZmllZCBpbnB1dAorICAgICAgICBiYWNrZGF0ZSAtPSAxCisgICAgICAgIG9zLnV0aW1lKGZfb3V0cHV0LCAoYmFja2RhdGUsIGJhY2tkYXRlKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgbmVlZF90b3VjaDoKKyAgICAgICAgdWkubm90ZSgiVG91Y2hpbmcgJXNcbiIgJSBvdXRwdXQpCisgICAgICAgIG9zLnV0aW1lKGZfb3V0cHV0LCBOb25lKQorICAgIHJldHVybiBUcnVlCisKK2RlZiBkb190b3VjaCh1aSwgcmVwbyk6CisgICAgbW9kaWZpZWQgPSByZXBvLnN0YXR1cygpWzBdCisgICAgZGVwZW5kZW5jaWVzID0gcGFyc2VfY29uZmlnKHJlcG8pCisgICAgc3VjY2VzcyA9IFRydWUKKyAgICAjIHRyeSBwcm9jZXNzaW5nIGFsbCBydWxlcyBpbiB0b3BvbG9naWNhbCBvcmRlcgorICAgIGhvbGRfYmFjayA9IHt9CisgICAgd2hpbGUgZGVwZW5kZW5jaWVzOgorICAgICAgICBvdXRwdXQsIGlucHV0cyA9IGRlcGVuZGVuY2llcy5wb3BpdGVtKCkKKyAgICAgICAgIyBjaGVjayB3aGV0aGVyIGFueSBvZiB0aGUgaW5wdXRzIGlzIGdlbmVyYXRlZAorICAgICAgICBmb3IgaSBpbiBpbnB1dHM6CisgICAgICAgICAgICBpZiBpIGluIGRlcGVuZGVuY2llczoKKyAgICAgICAgICAgICAgICBob2xkX2JhY2tbb3V0cHV0XSA9IGlucHV0cworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHN1Y2Nlc3MgPSBjaGVja19ydWxlKHVpLCByZXBvLCBtb2RpZmllZCwgb3V0cHV0LCBpbnB1dHMpCisgICAgICAgICMgcHV0IGJhY2sgaGVsZCBiYWNrIHJ1bGVzCisgICAgICAgIGRlcGVuZGVuY2llcy51cGRhdGUoaG9sZF9iYWNrKQorICAgICAgICBob2xkX2JhY2sgPSB7fQorICAgIGlmIGhvbGRfYmFjazoKKyAgICAgICAgdWkud2FybigiQ3ljbGljIGRlcGVuZGVuY3kgaW52b2x2aW5nICVzXG4iICUgKCcgJy5qb2luKGhvbGRfYmFjay5rZXlzKCkpKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIHN1Y2Nlc3MKKworZGVmIHRvdWNoKHVpLCByZXBvKToKKyAgICAidG91Y2ggZ2VuZXJhdGVkIGZpbGVzIHRoYXQgYXJlIG9sZGVyIHRoYW4gdGhlaXIgc291cmNlcyBhZnRlciBhbiB1cGRhdGUuIgorICAgIGRvX3RvdWNoKHVpLCByZXBvKQorCitjbWR0YWJsZSA9IHsKKyAgICAidG91Y2giOiAodG91Y2gsIFtdLAorICAgICAgICAgICAgICAidG91Y2ggZ2VuZXJhdGVkIGZpbGVzIGFjY29yZGluZyB0byB0aGUgLmhndG91Y2ggY29uZmlndXJhdGlvbiIpCit9CmRpZmYgLS1naXQgYS9Ub29scy9pMThuL3B5Z2V0dGV4dC5weSBiL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CmluZGV4IDY3YTk2MGYuLjkzYjJiNzkgMTAwNzU1Ci0tLSBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CisrKyBiL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CkBAIC0xNjMsNyArMTYzLDYgQEAKIGltcG9ydCBnZXRvcHQKIGltcG9ydCB0b2tlbgogaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgb3BlcmF0b3IKIAogX192ZXJzaW9uX18gPSAnMS41JwogCmRpZmYgLS1naXQgYS9Ub29scy9pbXBvcnRiZW5jaC9SRUFETUUgYi9Ub29scy9pbXBvcnRiZW5jaC9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFhNTU0NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2ltcG9ydGJlbmNoL1JFQURNRQpAQCAtMCwwICsxLDYgQEAKK0ltcG9ydGJlbmNoIGlzIGEgc2V0IG9mIG1pY3JvLWJlbmNobWFya3MgZm9yIHZhcmlvdXMgaW1wb3J0IHNjZW5hcmlvcy4KKworSXQgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGFuIG92ZXJhbGwgYmVuY2htYXJrIG9mIGltcG9ydCBwZXJmb3JtYW5jZSwgYnV0IHJhdGhlcgorYW4gZWFzeSB3YXkgdG8gbWVhc3VyZSBpbXBhY3Qgb2YgcG9zc2libGUgY29kZSBjaGFuZ2VzLiBGb3IgYSByZWFsLXdvcmxkCitiZW5jaG1hcmsgb2YgaW1wb3J0LCB1c2UgdGhlIG5vcm1hbF9zdGFydHVwIGJlbmNobWFyayBmcm9tCitoZy5weXRob24ub3JnL2JlbmNobWFya3MuCmRpZmYgLS1naXQgYS9Ub29scy9pbXBvcnRiZW5jaC9pbXBvcnRiZW5jaC5weSBiL1Rvb2xzL2ltcG9ydGJlbmNoL2ltcG9ydGJlbmNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNGMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9pbXBvcnRiZW5jaC9pbXBvcnRiZW5jaC5weQpAQCAtMCwwICsxLDI1MiBAQAorIiIiQmVuY2htYXJrIHNvbWUgYmFzaWMgaW1wb3J0IHVzZS1jYXNlcy4KKworVGhlIGFzc3VtcHRpb24gaXMgbWFkZSB0aGF0IHRoaXMgYmVuY2htYXJrIGlzIHJ1biBpbiBhIGZyZXNoIGludGVycHJldGVyIGFuZAordGh1cyBoYXMgbm8gZXh0ZXJuYWwgY2hhbmdlcyBtYWRlIHRvIGltcG9ydC1yZWxhdGVkIGF0dHJpYnV0ZXMgaW4gc3lzLgorCisiIiIKK2Zyb20gdGVzdC50ZXN0X2ltcG9ydGxpYiBpbXBvcnQgdXRpbAorZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliLnNvdXJjZSBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAoraW1wb3J0IGRlY2ltYWwKK2ltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcHlfY29tcGlsZQoraW1wb3J0IHN5cworaW1wb3J0IHRhYm5hbm55CitpbXBvcnQgdGltZWl0CisKKworZGVmIGJlbmNoKG5hbWUsIGNsZWFudXA9bGFtYmRhOiBOb25lLCAqLCBzZWNvbmRzPTEsIHJlcGVhdD0zKToKKyAgICAiIiJCZW5jaCB0aGUgZ2l2ZW4gc3RhdGVtZW50IGFzIG1hbnkgdGltZXMgYXMgbmVjZXNzYXJ5IHVudGlsIHRvdGFsCisgICAgZXhlY3V0aW9ucyB0YWtlIG9uZSBzZWNvbmQuIiIiCisgICAgc3RtdCA9ICJfX2ltcG9ydF9fKHshcn0pIi5mb3JtYXQobmFtZSkKKyAgICB0aW1lciA9IHRpbWVpdC5UaW1lcihzdG10KQorICAgIGZvciB4IGluIHJhbmdlKHJlcGVhdCk6CisgICAgICAgIHRvdGFsX3RpbWUgPSAwCisgICAgICAgIGNvdW50ID0gMAorICAgICAgICB3aGlsZSB0b3RhbF90aW1lIDwgc2Vjb25kczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b3RhbF90aW1lICs9IHRpbWVyLnRpbWVpdCgxKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjbGVhbnVwKCkKKyAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT25lIGV4ZWN1dGlvbiB0b28gZmFyCisgICAgICAgICAgICBpZiB0b3RhbF90aW1lID4gc2Vjb25kczoKKyAgICAgICAgICAgICAgICBjb3VudCAtPSAxCisgICAgICAgIHlpZWxkIGNvdW50IC8vIHNlY29uZHMKKworZGVmIGZyb21fY2FjaGUoc2Vjb25kcywgcmVwZWF0KToKKyAgICAiIiJzeXMubW9kdWxlcyIiIgorICAgIG5hbWUgPSAnPGJlbmNobWFyayBpbXBvcnQ+JworICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCisgICAgbW9kdWxlLl9fZmlsZV9fID0gJzx0ZXN0PicKKyAgICBtb2R1bGUuX19wYWNrYWdlX18gPSAnJworICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICB5aWVsZCByZXN1bHQKKworCitkZWYgYnVpbHRpbl9tb2Qoc2Vjb25kcywgcmVwZWF0KToKKyAgICAiIiJCdWlsdC1pbiBtb2R1bGUiIiIKKyAgICBuYW1lID0gJ2Vycm5vJworICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQorICAgICMgUmVseWluZyBvbiBidWlsdC1pbiBpbXBvcnRlciBiZWluZyBpbXBsaWNpdC4KKyAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgeWllbGQgcmVzdWx0CisKKworZGVmIHNvdXJjZV93b19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgorICAgICIiIlNvdXJjZSB3L28gYnl0ZWNvZGU6IHNtYWxsIiIiCisgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBUcnVlCisgICAgdHJ5OgorICAgICAgICBuYW1lID0gJ19faW1wb3J0bGliX3Rlc3RfYmVuY2htYXJrX18nCisgICAgICAgICMgQ2xlYXJzIG91dCBzeXMubW9kdWxlcyBhbmQgcHV0cyBhbiBlbnRyeSBhdCB0aGUgZnJvbnQgb2Ygc3lzLnBhdGguCisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pKQorICAgICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyKQorICAgICAgICAgICAgbG9hZGVyID0gKGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUywgVHJ1ZSkKKyAgICAgICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKGxvYWRlcikpCisgICAgICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKKworCitkZWYgX3dvX2J5dGVjb2RlKG1vZHVsZSk6CisgICAgbmFtZSA9IG1vZHVsZS5fX25hbWVfXworICAgIGRlZiBiZW5jaG1hcmtfd29fYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKKyAgICAgICAgIiIiU291cmNlIHcvbyBieXRlY29kZToge30iIiIKKyAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShtb2R1bGUuX19maWxlX18pCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGJ5dGVjb2RlX3BhdGgpOgorICAgICAgICAgICAgb3MudW5saW5rKGJ5dGVjb2RlX3BhdGgpCisgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQorCisgICAgYmVuY2htYXJrX3dvX2J5dGVjb2RlLl9fZG9jX18gPSBiZW5jaG1hcmtfd29fYnl0ZWNvZGUuX19kb2NfXy5mb3JtYXQobmFtZSkKKyAgICByZXR1cm4gYmVuY2htYXJrX3dvX2J5dGVjb2RlCisKK3RhYm5hbm55X3dvX2J5dGVjb2RlID0gX3dvX2J5dGVjb2RlKHRhYm5hbm55KQorZGVjaW1hbF93b19ieXRlY29kZSA9IF93b19ieXRlY29kZShkZWNpbWFsKQorCisKK2RlZiBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgorICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiBzbWFsbCIiIgorICAgIGFzc2VydCBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUKKyAgICBuYW1lID0gJ19faW1wb3J0bGliX3Rlc3RfYmVuY2htYXJrX18nCisgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhuYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIpCisgICAgICAgIGxvYWRlciA9IChpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUywgVHJ1ZSkKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2sobG9hZGVyKSkKKyAgICAgICAgZGVmIGNsZWFudXAoKToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQorICAgICAgICAgICAgb3MudW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBjbGVhbnVwLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCisgICAgICAgICAgICB5aWVsZCByZXN1bHQKKworCitkZWYgX3dyaXRpbmdfYnl0ZWNvZGUobW9kdWxlKToKKyAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCisgICAgZGVmIHdyaXRpbmdfYnl0ZWNvZGVfYmVuY2htYXJrKHNlY29uZHMsIHJlcGVhdCk6CisgICAgICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiB7fSIiIgorICAgICAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCisgICAgICAgIGRlZiBjbGVhbnVwKCk6CisgICAgICAgICAgICBzeXMubW9kdWxlcy5wb3AobmFtZSkKKyAgICAgICAgICAgIG9zLnVubGluayhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobW9kdWxlLl9fZmlsZV9fKSkKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBjbGVhbnVwLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgeWllbGQgcmVzdWx0CisKKyAgICB3cml0aW5nX2J5dGVjb2RlX2JlbmNobWFyay5fX2RvY19fID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0aW5nX2J5dGVjb2RlX2JlbmNobWFyay5fX2RvY19fLmZvcm1hdChuYW1lKSkKKyAgICByZXR1cm4gd3JpdGluZ19ieXRlY29kZV9iZW5jaG1hcmsKKwordGFibmFubnlfd3JpdGluZ19ieXRlY29kZSA9IF93cml0aW5nX2J5dGVjb2RlKHRhYm5hbm55KQorZGVjaW1hbF93cml0aW5nX2J5dGVjb2RlID0gX3dyaXRpbmdfYnl0ZWNvZGUoZGVjaW1hbCkKKworCitkZWYgc291cmNlX3VzaW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6CisgICAgIiIiU291cmNlIHcvIGJ5dGVjb2RlOiBzbWFsbCIiIgorICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKKyAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6CisgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlcikKKyAgICAgICAgbG9hZGVyID0gKGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUywgVHJ1ZSkKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2sobG9hZGVyKSkKKyAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1hcHBpbmdbbmFtZV0pCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCisgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorCisKK2RlZiBfdXNpbmdfYnl0ZWNvZGUobW9kdWxlKToKKyAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCisgICAgZGVmIHVzaW5nX2J5dGVjb2RlX2JlbmNobWFyayhzZWNvbmRzLCByZXBlYXQpOgorICAgICAgICAiIiJTb3VyY2Ugdy8gYnl0ZWNvZGU6IHt9IiIiCisgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtb2R1bGUuX19maWxlX18pCisgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorCisgICAgdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrLl9fZG9jX18gPSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nX2J5dGVjb2RlX2JlbmNobWFyay5fX2RvY19fLmZvcm1hdChuYW1lKSkKKyAgICByZXR1cm4gdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrCisKK3RhYm5hbm55X3VzaW5nX2J5dGVjb2RlID0gX3VzaW5nX2J5dGVjb2RlKHRhYm5hbm55KQorZGVjaW1hbF91c2luZ19ieXRlY29kZSA9IF91c2luZ19ieXRlY29kZShkZWNpbWFsKQorCisKK2RlZiBtYWluKGltcG9ydF8sIG9wdGlvbnMpOgorICAgIGlmIG9wdGlvbnMuc291cmNlX2ZpbGU6CisgICAgICAgIHdpdGggb3B0aW9ucy5zb3VyY2VfZmlsZToKKyAgICAgICAgICAgIHByZXZfcmVzdWx0cyA9IGpzb24ubG9hZChvcHRpb25zLnNvdXJjZV9maWxlKQorICAgIGVsc2U6CisgICAgICAgIHByZXZfcmVzdWx0cyA9IHt9CisgICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRfCisgICAgYmVuY2htYXJrcyA9IChmcm9tX2NhY2hlLCBidWlsdGluX21vZCwKKyAgICAgICAgICAgICAgICAgIHNvdXJjZV93cml0aW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgc291cmNlX3dvX2J5dGVjb2RlLCBzb3VyY2VfdXNpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgICB0YWJuYW5ueV93cml0aW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgdGFibmFubnlfd29fYnl0ZWNvZGUsIHRhYm5hbm55X3VzaW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgZGVjaW1hbF93cml0aW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgZGVjaW1hbF93b19ieXRlY29kZSwgZGVjaW1hbF91c2luZ19ieXRlY29kZSwKKyAgICAgICAgICAgICAgICApCisgICAgaWYgb3B0aW9ucy5iZW5jaG1hcms6CisgICAgICAgIGZvciBiIGluIGJlbmNobWFya3M6CisgICAgICAgICAgICBpZiBiLl9fZG9jX18gPT0gb3B0aW9ucy5iZW5jaG1hcms6CisgICAgICAgICAgICAgICAgYmVuY2htYXJrcyA9IFtiXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCgnVW5rbm93biBiZW5jaG1hcms6IHshcn0nLmZvcm1hdChvcHRpb25zLmJlbmNobWFyaywKKyAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgIHNlY29uZHMgPSAxCisgICAgc2Vjb25kc19wbHVyYWwgPSAncycgaWYgc2Vjb25kcyA+IDEgZWxzZSAnJworICAgIHJlcGVhdCA9IDMKKyAgICBoZWFkZXIgPSAoJ01lYXN1cmluZyBpbXBvcnRzL3NlY29uZCBvdmVyIHt9IHNlY29uZHt9LCBiZXN0IG91dCBvZiB7fVxuJworICAgICAgICAgICAgICAnRW50aXJlIGJlbmNobWFyayBydW4gc2hvdWxkIHRha2UgYWJvdXQge30gc2Vjb25kc1xuJworICAgICAgICAgICAgICAnVXNpbmcgeyFyfSBhcyBfX2ltcG9ydF9fXG4nKQorICAgIHByaW50KGhlYWRlci5mb3JtYXQoc2Vjb25kcywgc2Vjb25kc19wbHVyYWwsIHJlcGVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbihiZW5jaG1hcmtzKSAqIHNlY29uZHMgKiByZXBlYXQsIF9faW1wb3J0X18pKQorICAgIG5ld19yZXN1bHRzID0ge30KKyAgICBmb3IgYmVuY2htYXJrIGluIGJlbmNobWFya3M6CisgICAgICAgIHByaW50KGJlbmNobWFyay5fX2RvY19fLCAiWyIsIGVuZD0nICcpCisgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaG1hcmsoc2Vjb25kcz1zZWNvbmRzLCByZXBlYXQ9cmVwZWF0KToKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCkKKyAgICAgICAgICAgIHByaW50KHJlc3VsdCwgZW5kPScgJykKKyAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCisgICAgICAgIHByaW50KCJdIiwgImJlc3QgaXMiLCBmb3JtYXQobWF4KHJlc3VsdHMpLCAnLGQnKSkKKyAgICAgICAgbmV3X3Jlc3VsdHNbYmVuY2htYXJrLl9fZG9jX19dID0gcmVzdWx0cworICAgIGlmIHByZXZfcmVzdWx0czoKKyAgICAgICAgcHJpbnQoJ1xuXG5Db21wYXJpbmcgbmV3IHZzLiBvbGRcbicpCisgICAgICAgIGZvciBiZW5jaG1hcmsgaW4gYmVuY2htYXJrczoKKyAgICAgICAgICAgIGJlbmNobWFya19uYW1lID0gYmVuY2htYXJrLl9fZG9jX18KKyAgICAgICAgICAgIG9sZF9yZXN1bHQgPSBtYXgocHJldl9yZXN1bHRzW2JlbmNobWFya19uYW1lXSkKKyAgICAgICAgICAgIG5ld19yZXN1bHQgPSBtYXgobmV3X3Jlc3VsdHNbYmVuY2htYXJrX25hbWVdKQorICAgICAgICAgICAgcmVzdWx0ID0gJ3s6LGR9IHZzLiB7OixkfSAoezolfSknLmZvcm1hdChuZXdfcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yZXN1bHQvb2xkX3Jlc3VsdCkKKyAgICAgICAgICAgIHByaW50KGJlbmNobWFya19uYW1lLCAnOicsIHJlc3VsdCkKKyAgICBpZiBvcHRpb25zLmRlc3RfZmlsZToKKyAgICAgICAgd2l0aCBvcHRpb25zLmRlc3RfZmlsZToKKyAgICAgICAgICAgIGpzb24uZHVtcChuZXdfcmVzdWx0cywgb3B0aW9ucy5kZXN0X2ZpbGUsIGluZGVudD0yKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IGFyZ3BhcnNlCisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1idWlsdGluJywgZGVzdD0nYnVpbHRpbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSJ1c2UgdGhlIGJ1aWx0LWluIF9faW1wb3J0X18iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmVhZCcsIGRlc3Q9J3NvdXJjZV9maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoJ3InKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZpbGUgdG8gcmVhZCBiZW5jaG1hcmsgZGF0YSBmcm9tIHRvIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWdhaW5zdCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXcnLCAnLS13cml0ZScsIGRlc3Q9J2Rlc3RfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCd3JyksCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdmaWxlIHRvIHdyaXRlIGJlbmNobWFyayBkYXRhIHRvJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJlbmNobWFyaycsIGRlc3Q9J2JlbmNobWFyaycsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzcGVjaWZpYyBiZW5jaG1hcmsgdG8gcnVuJykKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGltcG9ydF8gPSBfX2ltcG9ydF9fCisgICAgaWYgbm90IG9wdGlvbnMuYnVpbHRpbjoKKyAgICAgICAgaW1wb3J0XyA9IGltcG9ydGxpYi5fX2ltcG9ydF9fCisKKyAgICBtYWluKGltcG9ydF8sIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Ub29scy9pb2JlbmNoL2lvYmVuY2gucHkgYi9Ub29scy9pb2JlbmNoL2lvYmVuY2gucHkKaW5kZXggNWVjNmYxNy4uNTMwYmM3OSAxMDA2NDQKLS0tIGEvVG9vbHMvaW9iZW5jaC9pb2JlbmNoLnB5CisrKyBiL1Rvb2xzL2lvYmVuY2gvaW9iZW5jaC5weQpAQCAtMSwxMyArMSwxMiBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KICMgVGhpcyBmaWxlIHNob3VsZCBiZSBrZXB0IGNvbXBhdGlibGUgd2l0aCBib3RoIFB5dGhvbiAyLjYgYW5kIFB5dGhvbiA+PSAzLjAuCiAKLWltcG9ydCB0aW1lCitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1pbXBvcnQgaGFzaGxpYgotaW1wb3J0IGZ1bmN0b29scwotaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IHRpbWUKIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgogCiBvdXQgPSBzeXMuc3Rkb3V0CkBAIC0zMDcsNiArMzA2LDE2IEBACiAgICAgICAgICJsYXJnZSI6IDIsCiAgICAgfQogCisgICAgcHJpbnQoIlB5dGhvbiAlcyIgJSBzeXMudmVyc2lvbikKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKKyAgICAgICAgICAgIHRleHQgPSAiVUNTLTQgKHdpZGUgYnVpbGQpIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGV4dCA9ICJVVEYtMTYgKG5hcnJvdyBidWlsZCkiCisgICAgZWxzZToKKyAgICAgICAgdGV4dCA9ICJQRVAgMzkzIgorICAgIHByaW50KCJVbmljb2RlOiAlcyIgJSB0ZXh0KQorICAgIHByaW50KHBsYXRmb3JtLnBsYXRmb3JtKCkpCiAgICAgYmluYXJ5X2ZpbGVzID0gbGlzdChnZXRfYmluYXJ5X2ZpbGVzKCkpCiAgICAgdGV4dF9maWxlcyA9IGxpc3QoZ2V0X3RleHRfZmlsZXMoKSkKICAgICBpZiAiYiIgaW4gb3B0aW9uczoKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHkgYi9Ub29scy9tc2kvbXNpLnB5CmluZGV4IDUwODgxNmQuLmQ0NjI3MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kucHkKKysrIGIvVG9vbHMvbXNpL21zaS5weQpAQCAtMiwxMiArMiwxMSBAQAogIyAoQykgMjAwMyBNYXJ0aW4gdi4gTG9ld2lzCiAjIFNlZSAiRk9PIiBpbiBjb21tZW50cyByZWZlcnMgdG8gTVNETiBzZWN0aW9ucyB3aXRoIHRoZSB0aXRsZSBGT08uCiBpbXBvcnQgbXNpbGliLCBzY2hlbWEsIHNlcXVlbmNlLCBvcywgZ2xvYiwgdGltZSwgcmUsIHNodXRpbCwgemlwZmlsZQoraW1wb3J0IHN1YnByb2Nlc3MsIHRlbXBmaWxlCiBmcm9tIG1zaWxpYiBpbXBvcnQgRmVhdHVyZSwgQ0FCLCBEaXJlY3RvcnksIERpYWxvZywgQmluYXJ5LCBhZGRfZGF0YQogaW1wb3J0IHVpc2FtcGxlCiBmcm9tIHdpbjMyY29tLmNsaWVudCBpbXBvcnQgY29uc3RhbnRzCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCi1mcm9tIHV1aWRzIGltcG9ydCBwcm9kdWN0X2NvZGVzCi1pbXBvcnQgdGVtcGZpbGUKIAogIyBTZXR0aW5ncyBjYW4gYmUgb3ZlcnJpZGRlbiBpbiBjb25maWcucHkgYmVsb3cKICMgMCBmb3Igb2ZmaWNpYWwgcHl0aG9uLm9yZyByZWxlYXNlcwpAQCAtMjgsNyArMjcsNyBAQAogIyBwYXRoIHRvIFBDYnVpbGQgZGlyZWN0b3J5CiBQQ0JVSUxEPSJQQ2J1aWxkIgogIyBtc3ZjcnQgdmVyc2lvbgotTVNWQ1IgPSAiOTAiCitNU1ZDUiA9ICIxMDAiCiAjIE5hbWUgb2YgY2VydGlmaWNhdGUgaW4gZGVmYXVsdCBzdG9yZSB0byBzaWduIE1TSSB3aXRoCiBjZXJ0bmFtZSA9IE5vbmUKICMgTWFrZSBhIHppcCBmaWxlIGNvbnRhaW5pbmcgdGhlIFBEQiBmaWxlcyBmb3IgdGhpcyBidWlsZD8KQEAgLTc3LDE5ICs3NiwxNiBAQAogCiBpZiBzbmFwc2hvdDoKICAgICBjdXJyZW50X3ZlcnNpb24gPSAiJXMuJXMuJXMiICUgKG1ham9yLCBtaW5vciwgaW50KHRpbWUudGltZSgpLzM2MDAvMjQpKQotICAgIHByb2R1Y3RfY29kZSA9IG1zaWxpYi5nZW5fdXVpZCgpCi1lbHNlOgotICAgIHByb2R1Y3RfY29kZSA9IHByb2R1Y3RfY29kZXNbY3VycmVudF92ZXJzaW9uXQogCiBpZiBmdWxsX2N1cnJlbnRfdmVyc2lvbiBpcyBOb25lOgogICAgIGZ1bGxfY3VycmVudF92ZXJzaW9uID0gY3VycmVudF92ZXJzaW9uCiAKIGV4dGVuc2lvbnMgPSBbCi0gICAgJ2J6Mi5weWQnLAogICAgICdweWV4cGF0LnB5ZCcsCiAgICAgJ3NlbGVjdC5weWQnLAogICAgICd1bmljb2RlZGF0YS5weWQnLAogICAgICd3aW5zb3VuZC5weWQnLAorICAgICdfYnoyLnB5ZCcsCiAgICAgJ19lbGVtZW50dHJlZS5weWQnLAogICAgICdfc29ja2V0LnB5ZCcsCiAgICAgJ19zc2wucHlkJywKQEAgLTEwMCw3ICs5NiwxMCBAQAogICAgICdfY3R5cGVzX3Rlc3QucHlkJywKICAgICAnX3NxbGl0ZTMucHlkJywKICAgICAnX2hhc2hsaWIucHlkJywKLSAgICAnX211bHRpcHJvY2Vzc2luZy5weWQnCisgICAgJ19tdWx0aXByb2Nlc3NpbmcucHlkJywKKyAgICAnX2x6bWEucHlkJywKKyAgICAnX2RlY2ltYWwucHlkJywKKyAgICAnX3Rlc3RidWZmZXIucHlkJwogXQogCiAjIFdlbGwta25vd24gY29tcG9uZW50IFVVSURzCkBAIC0xMTksMTIgKzExOCwxMSBAQAogICAgICIzMCI6Ins2OTUzYmMzYi02NzY4LTQyOTEtODQxMC03OTE0Y2U2ZTJjYTh9IiwKICAgICAiMzEiOiJ7NGFmY2JhMGItMTNlNC00N2MzLWJlYmUtNDc3NDI4YjQ2OTEzfSIsCiAgICAgIjMyIjoiezNmZjk1MzE1LTEwOTYtNGQzMS1iZDg2LTYwMWQ1NDM4YWQ1ZX0iLAorICAgICIzMyI6IntmNzU4MWNhNC1kMzY4LTRlZWEtOGY4Mi1kNDhjNjRjNGYwNDd9IiwKICAgICB9IFttYWpvcittaW5vcl0KIAogIyBDb21wdXRlIHRoZSBuYW1lIHRoYXQgU3BoaW54IGdpdmVzIHRvIHRoZSBkb2NmaWxlCi1kb2NmaWxlID0gIiIKLWlmIGludChtaWNybyk6Ci0gICAgZG9jZmlsZSA9IG1pY3JvCitkb2NmaWxlID0gbWljcm8KIGlmIGxldmVsIDwgMHhmOgogICAgIGlmIGxldmVsID09IDB4QzoKICAgICAgICAgZG9jZmlsZSArPSAicmMlcyIgJSAoc2VyaWFsLCkKQEAgLTE4NSwxMiArMTgzLDE5IEBACiBtc2lsaWIuc2V0X2FyY2hfZnJvbV9maWxlKGRsbF9wYXRoKQogaWYgbXNpbGliLnBlX3R5cGUoZGxsX3BhdGgpICE9IG1zaWxpYi5wZV90eXBlKCJtc2lzdXBwb3J0LmRsbCIpOgogICAgIHJhaXNlIFN5c3RlbUVycm9yKCJtc2lzdXBwb3J0LmRsbCBmb3IgaW5jb3JyZWN0IGFyY2hpdGVjdHVyZSIpCisKIGlmIG1zaWxpYi5XaW42NDoKICAgICB1cGdyYWRlX2NvZGUgPSB1cGdyYWRlX2NvZGVfNjQKLSAgICAjIEJ1bXAgdGhlIGxhc3QgZGlnaXQgb2YgdGhlIGNvZGUgYnkgb25lLCBzbyB0aGF0IDMyLWJpdCBhbmQgNjQtYml0Ci0gICAgIyByZWxlYXNlcyBnZXQgc2VwYXJhdGUgcHJvZHVjdCBjb2RlcwotICAgIGRpZ2l0ID0gaGV4KChpbnQocHJvZHVjdF9jb2RlWy0yXSwxNikrMSklMTYpWy0xXQotICAgIHByb2R1Y3RfY29kZSA9IHByb2R1Y3RfY29kZVs6LTJdICsgZGlnaXQgKyAnfScKKworaWYgc25hcHNob3Q6CisgICAgcHJvZHVjdF9jb2RlID0gbXNpbGliLmdlbl91dWlkKCkKK2Vsc2U6CisgICAgIyBvZmZpY2lhbCByZWxlYXNlOiBnZW5lcmF0ZSBVVUlEIGZyb20gdGhlIGRvd25sb2FkIGxpbmsgdGhhdCB0aGUgZmlsZSB3aWxsIGhhdmUKKyAgICBpbXBvcnQgdXVpZAorICAgIHByb2R1Y3RfY29kZSA9IHV1aWQudXVpZDModXVpZC5OQU1FU1BBQ0VfVVJMLAorICAgICAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJXMuJXMuJXMvcHl0aG9uLSVzJXMubXNpJyAlCisgICAgICAgICAgICAgICAgICAgIChtYWpvciwgbWlub3IsIG1pY3JvLCBmdWxsX2N1cnJlbnRfdmVyc2lvbiwgbXNpbGliLmFyY2hfZXh0KSkKKyAgICBwcm9kdWN0X2NvZGUgPSAneyVzfScgJSBwcm9kdWN0X2NvZGUKIAogaWYgdGVzdHBhY2thZ2U6CiAgICAgZXh0ID0gJ3B4JwpAQCAtMjgxLDcgKzI4Niw3IEBACiAgICAgICAgICAgICAgIE5vbmUsIG1pZ3JhdGVfZmVhdHVyZXMsIE5vbmUsICJSRU1PVkVPTERTTkFQU0hPVCIpXSkKICAgICAgICAgcHJvcHMgPSAiUkVNT1ZFT0xEU05BUFNIT1Q7UkVNT1ZFT0xEVkVSU0lPTiIKIAotICAgIHByb3BzICs9ICI7VEFSR0VURElSO0RMTERJUiIKKyAgICBwcm9wcyArPSAiO1RBUkdFVERJUjtETExESVI7TEFVTkNIRVJESVIiCiAgICAgIyBJbnN0YWxsZXIgY29sbGVjdHMgdGhlIHByb2R1Y3QgY29kZXMgb2YgdGhlIGVhcmxpZXIgcmVsZWFzZXMgaW4KICAgICAjIHRoZXNlIHByb3BlcnRpZXMuIEluIG9yZGVyIHRvIGFsbG93IG1vZGlmaWNhdGlvbiBvZiB0aGUgcHJvcGVydGllcywKICAgICAjIHRoZXkgbXVzdCBiZSBkZWNsYXJlZCBhcyBzZWN1cmUuIFNlZSAiU2VjdXJlQ3VzdG9tUHJvcGVydGllcyBQcm9wZXJ0eSIKQEAgLTQyMSw2ICs0MjYsOCBAQAogICAgICAgICAgIltXaW5kb3dzVm9sdW1lXVB5dGhvbiVzJXMiICUgKG1ham9yLCBtaW5vcikpLAogICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgMzA3LCAiRExMRElSIiwgIltUQVJHRVRESVJdIiksCiAgICAgICAgICgiU2V0RExMRGlyVG9TeXN0ZW0zMiIsIDMwNywgIkRMTERJUiIsIFN5c3RlbUZvbGRlck5hbWUpLAorICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAzMDcsICJMQVVOQ0hFUkRJUiIsICJbVEFSR0VURElSXSIpLAorICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9XaW5kb3dzIiwgMzA3LCAiTEFVTkNIRVJESVIiLCAiW1dpbmRvd3NGb2xkZXJdIiksCiAgICAgICAgICMgbXNpZGJDdXN0b21BY3Rpb25UeXBlRXhlICsgbXNpZGJDdXN0b21BY3Rpb25UeXBlU291cmNlRmlsZQogICAgICAgICAjIFNlZSAiQ3VzdG9tIEFjdGlvbiBUeXBlIDE4IgogICAgICAgICAoIkNvbXBpbGVQeWMiLCAxOCwgInB5dGhvbi5leGUiLCBjb21waWxlYXJncyksCkBAIC00MzcsNiArNDQ0LDggQEAKICAgICAgICAgICAgICAgIyBJbiB0aGUgdXNlciBpbnRlcmZhY2UsIGFzc3VtZSBhbGwtdXNlcnMgaW5zdGFsbGF0aW9uIGlmIHByaXZpbGVnZWQuCiAgICAgICAgICAgICAgICgiU2V0RExMRGlyVG9TeXN0ZW0zMiIsICdETExESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MSksCiAgICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzUyKSwKKyAgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvV2luZG93cyIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUzKSwKKyAgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgJ0xBVU5DSEVSRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzU0KSwKICAgICAgICAgICAgICAgKCJTZWxlY3REaXJlY3RvcnlEbGciLCAiTm90IEluc3RhbGxlZCIsIDEyMzApLAogICAgICAgICAgICAgICAjIFhYWCBubyBzdXBwb3J0IGZvciByZXN1bWUgaW5zdGFsbGF0aW9ucyB5ZXQKICAgICAgICAgICAgICAgIygiUmVzdW1lRGxnIiwgIkluc3RhbGxlZCBBTkQgKFJFU1VNRSBPUiBQcmVzZWxlY3RlZCkiLCAxMjQwKSwKQEAgLTQ0NSwxMyArNDU0LDIwIEBACiAgICAgYWRkX2RhdGEoZGIsICJBZG1pblVJU2VxdWVuY2UiLAogICAgICAgICAgICAgIFsoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKICAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiInLCA3NTEpLAorICAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiInLCA3NTIpLAogICAgICAgICAgICAgIF0pCiAKKyAgICAjIFByZXBlbmQgVEFSR0VURElSIHRvIHRoZSBzeXN0ZW0gcGF0aCwgYW5kIHJlbW92ZSBpdCBvbiB1bmluc3RhbGwuCisgICAgYWRkX2RhdGEoZGIsICJFbnZpcm9ubWVudCIsCisgICAgICAgICAgICAgWygiUGF0aEFkZGl0aW9uIiwgIj0tKlBhdGgiLCAiW1RBUkdFVERJUl07W35dIiwgIlJFR0lTVFJZLnBhdGgiKV0pCisKICAgICAjIEV4ZWN1dGUgU2VxdWVuY2VzCiAgICAgYWRkX2RhdGEoZGIsICJJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlIiwKICAgICAgICAgICAgIFsoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKICAgICAgICAgICAgICAoIlNldERMTERpclRvU3lzdGVtMzIiLCAnRExMRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTEpLAogICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzUyKSwKKyAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9XaW5kb3dzIiwgJ0xBVU5DSEVSRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTMpLAorICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1NCksCiAgICAgICAgICAgICAgKCJVcGRhdGVFZGl0SURMRSIsIE5vbmUsIDEwNTApLAogICAgICAgICAgICAgICgiQ29tcGlsZVB5YyIsICJDT01QSUxFQUxMIiwgNjgwMCksCiAgICAgICAgICAgICAgKCJDb21waWxlUHlvIiwgIkNPTVBJTEVBTEwiLCA2ODAxKSwKQEAgLTQ2MCw2ICs0NzYsNyBAQAogICAgIGFkZF9kYXRhKGRiLCAiQWRtaW5FeGVjdXRlU2VxdWVuY2UiLAogICAgICAgICAgICAgWygiSW5pdGlhbFRhcmdldERpciIsICdUQVJHRVRESVI9IiInLCA3NTApLAogICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiJywgNzUxKSwKKyAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiInLCA3NTIpLAogICAgICAgICAgICAgICgiQ29tcGlsZVB5YyIsICJDT01QSUxFQUxMIiwgNjgwMCksCiAgICAgICAgICAgICAgKCJDb21waWxlUHlvIiwgIkNPTVBJTEVBTEwiLCA2ODAxKSwKICAgICAgICAgICAgICAoIkNvbXBpbGVHcmFtbWFyIiwgIkNPTVBJTEVBTEwiLCA2ODAyKSwKQEAgLTY3MCwxMSArNjg3LDExIEBACiAgICAgYz1mZWF0dXJlcy54YnV0dG9uKCJBZHZhbmNlZCIsICJBZHZhbmNlZCIsIE5vbmUsIDAuMzApCiAgICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQWR2YW5jZWREbGciKQogCi0gICAgYz1mZWF0dXJlcy50ZXh0KCJJdGVtRGVzY3JpcHRpb24iLCAxNDAsIDE4MCwgMjEwLCAzMCwgMywKKyAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1EZXNjcmlwdGlvbiIsIDE0MCwgMTgwLCAyMTAsIDQwLCAzLAogICAgICAgICAgICAgICAgICAgIk11bHRpbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uIikKICAgICBjLm1hcHBpbmcoIlNlbGVjdGlvbkRlc2NyaXB0aW9uIiwiVGV4dCIpCiAKLSAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1TaXplIiwgMTQwLCAyMTAsIDIxMCwgNDUsIDMsCisgICAgYz1mZWF0dXJlcy50ZXh0KCJJdGVtU2l6ZSIsIDE0MCwgMjI1LCAyMTAsIDMzLCAzLAogICAgICAgICAgICAgICAgICAgICAiVGhlIHNpemUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLiIpCiAgICAgYy5tYXBwaW5nKCJTZWxlY3Rpb25TaXplIiwgIlRleHQiKQogCkBAIC04MjgsNyArODQ1LDcgQEAKICAgICAjIChpLmUuIGFkZGl0aW9uYWwgUHl0aG9uIGxpYnJhcmllcykgbmVlZCB0byBmb2xsb3cgdGhlIHBhcmVudCBmZWF0dXJlLgogICAgICMgRmVhdHVyZXMgdGhhdCBoYXZlIG5vIGFkdmVydGlzZW1lbnQgdHJpZ2dlciAoZS5nLiB0aGUgdGVzdCBzdWl0ZSkKICAgICAjIG11c3Qgbm90IHN1cHBvcnQgYWR2ZXJ0aXNlbWVudAotICAgIGdsb2JhbCBkZWZhdWx0X2ZlYXR1cmUsIHRjbHRrLCBodG1sZmlsZXMsIHRvb2xzLCB0ZXN0c3VpdGUsIGV4dF9mZWF0dXJlLCBwcml2YXRlX2NydAorICAgIGdsb2JhbCBkZWZhdWx0X2ZlYXR1cmUsIHRjbHRrLCBodG1sZmlsZXMsIHRvb2xzLCB0ZXN0c3VpdGUsIGV4dF9mZWF0dXJlLCBwcml2YXRlX2NydCwgcHJlcGVuZF9wYXRoCiAgICAgZGVmYXVsdF9mZWF0dXJlID0gRmVhdHVyZShkYiwgIkRlZmF1bHRGZWF0dXJlIiwgIlB5dGhvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIEludGVycHJldGVyIGFuZCBMaWJyYXJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgZGlyZWN0b3J5ID0gIlRBUkdFVERJUiIpCkBAIC04NDgsMzIgKzg2NSwzOCBAQAogICAgIGh0bWxmaWxlcyA9IEZlYXR1cmUoZGIsICJEb2N1bWVudGF0aW9uIiwgIkRvY3VtZW50YXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiBIVE1MSGVscCBGaWxlIiwgNywgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlKQogICAgIHRvb2xzID0gRmVhdHVyZShkYiwgIlRvb2xzIiwgIlV0aWxpdHkgU2NyaXB0cyIsCi0gICAgICAgICAgICAgICAgICAgICJQeXRob24gdXRpbGl0eSBzY3JpcHRzIChUb29scy8iLCA5LAorICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHV0aWxpdHkgc2NyaXB0cyAoVG9vbHMvKSIsIDksCiAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yKQogICAgIHRlc3RzdWl0ZSA9IEZlYXR1cmUoZGIsICJUZXN0c3VpdGUiLCAiVGVzdCBzdWl0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHRlc3Qgc3VpdGUgKExpYi90ZXN0LykiLCAxMSwKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yfDgpCisgICAgIyBwcmVwZW5kX3BhdGggaXMgYW4gYWRkaXRpb25hbCBmZWF0dXJlIHdoaWNoIGlzIHRvIGJlIG9mZiBieSBkZWZhdWx0LgorICAgICMgU2luY2UgdGhlIGRlZmF1bHQgbGV2ZWwgZm9yIHRoZSBhYm92ZSBmZWF0dXJlcyBpcyAxLCB0aGlzIG5lZWRzIHRvIGJlCisgICAgIyBhdCBsZWFzdCBsZXZlbCBoaWdoZXIuCisgICAgcHJlcGVuZF9wYXRoID0gRmVhdHVyZShkYiwgIlByZXBlbmRQYXRoIiwgIkFkZCBweXRob24uZXhlIHRvIFBhdGgiLAorICAgICAgICAgICAgICAgICAgICAgICAgIlByZXBlbmQgW1RBUkdFVERJUl0gdG8gdGhlIHN5c3RlbSBQYXRoIHZhcmlhYmxlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUgJ3B5dGhvbicgaW50byBhIGNvbW1hbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgInByb21wdCB3aXRob3V0IG5lZWRpbmcgdGhlIGZ1bGwgcGF0aC4iLCAxMywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yfDgsCisgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0yKQogCi1kZWYgZXh0cmFjdF9tc3ZjcjkwKCk6CitkZWYgZXh0cmFjdF9tc3ZjcjEwMCgpOgogICAgICMgRmluZCB0aGUgcmVkaXN0cmlidXRhYmxlIGZpbGVzCiAgICAgaWYgbXNpbGliLldpbjY0OgotICAgICAgICBhcmNoID0gImFtZDY0IgorICAgICAgICBhcmNoID0gIng2NCIKICAgICBlbHNlOgogICAgICAgICBhcmNoID0gIng4NiIKLSAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnVlM5MENPTU5UT09MUyddLCByIi4uXC4uXFZDXHJlZGlzdFwlc1xNaWNyb3NvZnQuVkM5MC5DUlQiICUgYXJjaCkKKyAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnVlMxMDBDT01OVE9PTFMnXSwgciIuLlwuLlxWQ1xyZWRpc3RcJXNcTWljcm9zb2Z0LlZDMTAwLkNSVCIgJSBhcmNoKQogCiAgICAgcmVzdWx0ID0gW10KICAgICBpbnN0YWxsZXIgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCi0gICAgIyBvbWl0IG1zdmNtOTAgYW5kIG1zdmNwOTAsIGFzIHRoZXkgYXJlbid0IHJlYWxseSBuZWVkZWQKLSAgICBmaWxlcyA9IFsiTWljcm9zb2Z0LlZDOTAuQ1JULm1hbmlmZXN0IiwgIm1zdmNyOTAuZGxsIl0KLSAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXIsIGYpCi0gICAgICAgIGt3ID0geydzcmMnOnBhdGh9Ci0gICAgICAgIGlmIGYuZW5kc3dpdGgoJy5kbGwnKToKLSAgICAgICAgICAgIGt3Wyd2ZXJzaW9uJ10gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocGF0aCwgMCkKLSAgICAgICAgICAgIGt3WydsYW5ndWFnZSddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDEpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoKGYsIGt3KSkKLSAgICByZXR1cm4gcmVzdWx0CisgICAgIyBBdCBsZWFzdCBmb3IgVlMyMDEwLCBtYW5pZmVzdHMgYXJlIG5vIGxvbmdlciBwcm92aWRlZAorICAgIG5hbWUgPSAibXN2Y3IxMDAuZGxsIgorICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyLCBuYW1lKQorICAgIGt3ID0geydzcmMnOnBhdGh9CisgICAga3dbJ3ZlcnNpb24nXSA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihwYXRoLCAwKQorICAgIGt3WydsYW5ndWFnZSddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDEpCisgICAgcmV0dXJuIG5hbWUsIGt3CiAKIGRlZiBnZW5lcmF0ZV9saWNlbnNlKCk6CiAgICAgaW1wb3J0IHNodXRpbCwgZ2xvYgpAQCAtODg5LDcgKzkxMiw3IEBACiAgICAgICAgIGRpcnMgPSBnbG9iLmdsb2Ioc3JjZGlyKyIvLi4vIitwYXQpCiAgICAgICAgIGlmIG5vdCBkaXJzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgIkNvdWxkIG5vdCBmaW5kICIrc3JjZGlyKyIvLi4vIitwYXQKLSAgICAgICAgaWYgbGVuKGRpcnMpID4gMjoKKyAgICAgICAgaWYgbGVuKGRpcnMpID4gMiBhbmQgbm90IHNuYXBzaG90OgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgIk11bHRpcGxlIGNvcGllcyBvZiAiK3BhdAogICAgICAgICBkaXIgPSBkaXJzWzBdCiAgICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihvcGVuKG9zLnBhdGguam9pbihkaXIsIGZpbGUpKSwgb3V0KQpAQCAtOTA0LDE2ICs5MjcsMjggQEAKICAgICAgICAgICAgIGt3Wydjb21wb25lbnRmbGFncyddID0gMiAjbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzT3B0aW9uYWwKICAgICAgICAgRGlyZWN0b3J5Ll9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KQogCi0gICAgZGVmIGNoZWNrX3VucGFja2FnZWQoc2VsZik6Ci0gICAgICAgIHNlbGYudW5wYWNrYWdlZF9maWxlcy5kaXNjYXJkKCdfX3B5Y2FjaGVfXycpCi0gICAgICAgIHNlbGYudW5wYWNrYWdlZF9maWxlcy5kaXNjYXJkKCcuc3ZuJykKLSAgICAgICAgaWYgc2VsZi51bnBhY2thZ2VkX2ZpbGVzOgotICAgICAgICAgICAgcHJpbnQgIldhcm5pbmc6IFVucGFja2FnZWQgZmlsZXMgaW4gJXMiICUgc2VsZi5hYnNvbHV0ZQotICAgICAgICAgICAgcHJpbnQgc2VsZi51bnBhY2thZ2VkX2ZpbGVzCitkZWYgaGdtYW5pZmVzdCgpOgorICAgICMgRmV0Y2ggZmlsZSBsaXN0IGZyb20gTWVyY3VyaWFsCisgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydoZycsICdtYW5pZmVzdCddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgIyBDcmVhdGUgbmVzdGVkIGRpcmVjdG9yaWVzIGZvciBmaWxlIHRyZWUKKyAgICByZXN1bHQgPSB7fQorICAgIGZvciBsaW5lIGluIHN0ZG91dC5zcGxpdGxpbmVzKCk6CisgICAgICAgIGNvbXBvbmVudHMgPSBsaW5lLnNwbGl0KCcvJykKKyAgICAgICAgZCA9IHJlc3VsdAorICAgICAgICB3aGlsZSBsZW4oY29tcG9uZW50cykgPiAxOgorICAgICAgICAgICAgZDEgPSBkLnNldGRlZmF1bHQoY29tcG9uZW50c1swXSwge30pCisgICAgICAgICAgICBkID0gZDEKKyAgICAgICAgICAgIGRlbCBjb21wb25lbnRzWzBdCisgICAgICAgIGRbY29tcG9uZW50c1swXV0gPSBOb25lCisgICAgcmV0dXJuIHJlc3VsdAorCiAKICMgU2VlICJGaWxlIFRhYmxlIiwgIkNvbXBvbmVudCBUYWJsZSIsICJEaXJlY3RvcnkgVGFibGUiLAogIyAiRmVhdHVyZUNvbXBvbmVudHMgVGFibGUiCiBkZWYgYWRkX2ZpbGVzKGRiKToKKyAgICBpbnN0YWxsZXIgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCisgICAgaGdmaWxlcyA9IGhnbWFuaWZlc3QoKQogICAgIGNhYiA9IENBQigicHl0aG9uIikKICAgICB0bXBmaWxlcyA9IFtdCiAgICAgIyBBZGQgYWxsIGV4ZWN1dGFibGVzLCBpY29ucywgdGV4dCBmaWxlcyBpbnRvIHRoZSBUQVJHRVRESVIgY29tcG9uZW50CkBAIC05MzIsMTEgKzk2NywzMCBAQAogCiAgICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXNTaGFyZWREbGxSZWZDb3VudCA9IDgsIHNlZSAiQ29tcG9uZW50IFRhYmxlIgogICAgIGRsbGRpciA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIHNyY2RpciwgIkRMTERJUiIsICIuIikKKyAgICBsYXVuY2hlcmRpciA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIHNyY2RpciwgIkxBVU5DSEVSRElSIiwgIi4iKQorCisgICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXM2NGJpdCA9IDI1NjsgdGhpcyBkaXNhYmxlcyByZWdpc3RyeSByZWRpcmVjdGlvbgorICAgICMgdG8gYWxsb3cgc2V0dGluZyB0aGUgU2hhcmVkRExMcyBrZXkgaW4gdGhlIDY0LWJpdCBwb3J0aW9uIGV2ZW4gZm9yIGEKKyAgICAjIDMyLWJpdCBpbnN0YWxsZXIuCisgICAgIyBYWFggZG9lcyB0aGlzIHN0aWxsIGFsbG93IHRvIGluc3RhbGwgdGhlIGNvbXBvbmVudCBvbiBhIDMyLWJpdCBzeXN0ZW0/CisgICAgIyBQaWNrIHVwIDMyLWJpdCBiaW5hcnkgYWx3YXlzCisgICAgbGF1bmNoZXJzcmMgPSBQQ0JVSUxECisgICAgaWYgbGF1bmNoZXJzcmMubG93ZXIoKSA9PSAncGNidWlsZFxceDY0LXBnbyc6CisgICAgICAgIGxhdW5jaGVyc3JjID0gJ1BDQnVpbGRcXHdpbjMyLXBnbycKKyAgICBsYXVuY2hlciA9IG9zLnBhdGguam9pbihzcmNkaXIsIGxhdW5jaGVyc3JjLCAicHkuZXhlIikKKyAgICBsYXVuY2hlcmRpci5zdGFydF9jb21wb25lbnQoImxhdW5jaGVyIiwgZmxhZ3MgPSA4KzI1Niwga2V5ZmlsZT0icHkuZXhlIikKKyAgICBsYXVuY2hlcmRpci5hZGRfZmlsZShsYXVuY2hlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlciwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U9aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVyLCAxKSkKKyAgICBsYXVuY2hlcncgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBsYXVuY2hlcnNyYywgInB5dy5leGUiKQorICAgIGxhdW5jaGVyZGlyLnN0YXJ0X2NvbXBvbmVudCgibGF1bmNoZXJ3IiwgZmxhZ3MgPSA4KzI1Niwga2V5ZmlsZT0icHl3LmV4ZSIpCisgICAgbGF1bmNoZXJkaXIuYWRkX2ZpbGUobGF1bmNoZXJ3LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVydywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U9aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVydywgMSkpCiAKICAgICBweWRsbCA9ICJweXRob24lcyVzLmRsbCIgJSAobWFqb3IsIG1pbm9yKQogICAgIHB5ZGxsc3JjID0gb3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCwgcHlkbGwpCiAgICAgZGxsZGlyLnN0YXJ0X2NvbXBvbmVudCgiRExMRElSIiwgZmxhZ3MgPSA4LCBrZXlmaWxlID0gcHlkbGwsIHV1aWQgPSBweXRob25kbGxfdXVpZCkKLSAgICBpbnN0YWxsZXIgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCiAgICAgcHl2ZXJzaW9uID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHB5ZGxsc3JjLCAwKQogICAgIGlmIG5vdCBzbmFwc2hvdDoKICAgICAgICAgIyBGb3IgcmVsZWFzZXMsIHRoZSBQeXRob24gRExMIGhhcyB0aGUgc2FtZSB2ZXJzaW9uIGFzIHRoZQpAQCAtOTUyLDkgKzEwMDYsOCBAQAogICAgICMgcG9pbnRpbmcgdG8gdGhlIHJvb3QgZGlyZWN0b3J5CiAgICAgcm9vdC5zdGFydF9jb21wb25lbnQoIm1zdmNyOTAiLCBmZWF0dXJlPXByaXZhdGVfY3J0KQogICAgICMgUmVzdWx0cyBhcmUgSUQsa2V5d29yZCBwYWlycwotICAgIG1hbmlmZXN0LCBjcnRkbGwgPSBleHRyYWN0X21zdmNyOTAoKQotICAgIHJvb3QuYWRkX2ZpbGUobWFuaWZlc3RbMF0sICoqbWFuaWZlc3RbMV0pCi0gICAgcm9vdC5hZGRfZmlsZShjcnRkbGxbMF0sICoqY3J0ZGxsWzFdKQorICAgIGNydGRsbCwga3dkcyA9IGV4dHJhY3RfbXN2Y3IxMDAoKQorICAgIHJvb3QuYWRkX2ZpbGUoY3J0ZGxsLCAqKmt3ZHMpCiAgICAgIyBDb3B5IHRoZSBtYW5pZmVzdAogICAgICMgQWN0dWFsbHksIGRvbid0IGRvIHRoYXQgYW55bW9yZSAtIG5vIERMTCBpbiBETExzIHNob3VsZCBoYXZlIGEgbWFuaWZlc3QKICAgICAjIGRlcGVuZGVuY3kgb24gbXN2Y3I5MC5kbGwgYW55bW9yZSwgc28gdGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeQpAQCAtOTc1LDEwNCArMTAyOCw0MCBAQAogCiAgICAgIyBBZGQgYWxsIC5weSBmaWxlcyBpbiBMaWIsIGV4Y2VwdCB0a2ludGVyLCB0ZXN0CiAgICAgZGlycyA9IFtdCi0gICAgcHlkaXJzID0gWyhyb290LCJMaWIiKV0KKyAgICBweWRpcnMgPSBbKHJvb3QsICJMaWIiLCBoZ2ZpbGVzWyJMaWIiXSwgZGVmYXVsdF9mZWF0dXJlKV0KICAgICB3aGlsZSBweWRpcnM6CiAgICAgICAgICMgQ29tbWl0IGV2ZXJ5IG5vdyBhbmQgdGhlbiwgb3IgZWxzZSBpbnN0YWxsZXIgd2lsbCBjb21wbGFpbgogICAgICAgICBkYi5Db21taXQoKQotICAgICAgICBwYXJlbnQsIGRpciA9IHB5ZGlycy5wb3AoKQotICAgICAgICBpZiBkaXIgPT0gIi5zdm4iIG9yIGRpciA9PSAnX19weWNhY2hlX18nIG9yIGRpci5zdGFydHN3aXRoKCJwbGF0LSIpOgorICAgICAgICBwYXJlbnQsIGRpciwgZmlsZXMsIGZlYXR1cmUgPSBweWRpcnMucG9wKCkKKyAgICAgICAgaWYgZGlyLnN0YXJ0c3dpdGgoInBsYXQtIik6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbGlmIGRpciBpbiBbInRraW50ZXIiLCAiaWRsZWxpYiIsICJJY29ucyJdOgorICAgICAgICBpZiBkaXIgaW4gWyJ0a2ludGVyIiwgImlkbGVsaWIiLCAidHVydGxlZGVtbyJdOgogICAgICAgICAgICAgaWYgbm90IGhhdmVfdGNsOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmZWF0dXJlID0gdGNsdGsKICAgICAgICAgICAgIHRjbHRrLnNldF9jdXJyZW50KCkKLSAgICAgICAgZWxpZiBkaXIgaW4gWyd0ZXN0JywgJ3Rlc3RzJywgJ2RhdGEnLCAnb3V0cHV0J106Ci0gICAgICAgICAgICAjIHRlc3Q6IExpYiwgTGliL2VtYWlsLCBMaWIvY3R5cGVzLCBMaWIvc3FsaXRlMwotICAgICAgICAgICAgIyB0ZXN0czogTGliL2Rpc3R1dGlscwotICAgICAgICAgICAgIyBkYXRhOiBMaWIvZW1haWwvdGVzdAotICAgICAgICAgICAgIyBvdXRwdXQ6IExpYi90ZXN0Ci0gICAgICAgICAgICB0ZXN0c3VpdGUuc2V0X2N1cnJlbnQoKQorICAgICAgICBlbGlmIGRpciBpbiAoJ3Rlc3QnLCAndGVzdHMnKToKKyAgICAgICAgICAgIGZlYXR1cmUgPSB0ZXN0c3VpdGUKICAgICAgICAgZWxpZiBub3QgaGF2ZV9jdHlwZXMgYW5kIGRpciA9PSAiY3R5cGVzIjoKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkZWZhdWx0X2ZlYXR1cmUuc2V0X2N1cnJlbnQoKQorICAgICAgICBmZWF0dXJlLnNldF9jdXJyZW50KCkKICAgICAgICAgbGliID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcGFyZW50LCBkaXIsIGRpciwgIiVzfCVzIiAlIChwYXJlbnQubWFrZV9zaG9ydChkaXIpLCBkaXIpKQotICAgICAgICAjIEFkZCBhZGRpdGlvbmFsIGZpbGVzCiAgICAgICAgIGRpcnMuYXBwZW5kKGxpYikKLSAgICAgICAgbGliLmdsb2IoIioudHh0IikKLSAgICAgICAgaWYgZGlyPT0nc2l0ZS1wYWNrYWdlcyc6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlJFQURNRS50eHQiLCBzcmM9IlJFQURNRSIpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmaWxlcyA9IGxpYi5nbG9iKCIqLnB5IikKLSAgICAgICAgZmlsZXMgKz0gbGliLmdsb2IoIioucHl3IikKLSAgICAgICAgaWYgZmlsZXM6Ci0gICAgICAgICAgICAjIEFkZCBhbiBlbnRyeSB0byB0aGUgUmVtb3ZlRmlsZSB0YWJsZSB0byByZW1vdmUgYnl0ZWNvZGUgZmlsZXMuCi0gICAgICAgICAgICBsaWIucmVtb3ZlX3B5YygpCi0gICAgICAgICMgcGFja2FnZSBSRUFETUVzIGlmIHByZXNlbnQKLSAgICAgICAgbGliLmdsb2IoIlJFQURNRSIpCi0gICAgICAgIGlmIGRpcj09J0xpYic6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoJ3dzZ2lyZWYuZWdnLWluZm8nKQotICAgICAgICBpZiBkaXI9PSd0ZXN0JyBhbmQgcGFyZW50LnBoeXNpY2FsPT0nTGliJzoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiMTg1dGVzdC5kYiIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImF1ZGlvdGVzdC5hdSIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInNnbWxfaW5wdXQuaHRtbCIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInRlc3R0YXIudGFyIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgidGVzdF9kaWZmbGliX2V4cGVjdC5odG1sIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiY2hlY2tfc291bmRjYXJkLnZicyIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImVtcHR5LnZicyIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlNpbmUtMTAwMEh6LTMwMG1zLmFpZiIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIm1pbWUudHlwZXMiKQotICAgICAgICAgICAgbGliLmdsb2IoIioudXVlIikKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLnBlbSIpCi0gICAgICAgICAgICBsaWIuZ2xvYigiKi5wY2siKQotICAgICAgICAgICAgbGliLmdsb2IoImNmZ3BhcnNlci4qIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiemlwX2NwNDM3X2hlYWRlci56aXAiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJ6aXBkaXIuemlwIikKLSAgICAgICAgaWYgZGlyPT0nY2FwYXRoJzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLjAiKQotICAgICAgICBpZiBkaXI9PSd0ZXN0cycgYW5kIHBhcmVudC5waHlzaWNhbD09J2Rpc3R1dGlscyc6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlNldHVwLnNhbXBsZSIpCi0gICAgICAgIGlmIGRpcj09J2RlY2ltYWx0ZXN0ZGF0YSc6Ci0gICAgICAgICAgICBsaWIuZ2xvYigiKi5kZWNUZXN0IikKLSAgICAgICAgaWYgZGlyPT0neG1sdGVzdGRhdGEnOgotICAgICAgICAgICAgbGliLmdsb2IoIioueG1sIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgidGVzdC54bWwub3V0IikKLSAgICAgICAgaWYgZGlyPT0nb3V0cHV0JzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCJ0ZXN0XyoiKQotICAgICAgICBpZiBkaXI9PSdzbmRoZHJkYXRhJzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCJzbmRoZHIuKiIpCi0gICAgICAgIGlmIGRpcj09J2lkbGVsaWInOgotICAgICAgICAgICAgbGliLmdsb2IoIiouZGVmIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiaWRsZS5iYXQiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJDaGFuZ2VMb2ciKQotICAgICAgICBpZiBkaXI9PSJJY29ucyI6Ci0gICAgICAgICAgICBsaWIuZ2xvYigiKi5naWYiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJpZGxlLmljbnMiKQotICAgICAgICBpZiBkaXI9PSJjb21tYW5kIiBhbmQgcGFyZW50LnBoeXNpY2FsPT0iZGlzdHV0aWxzIjoKLSAgICAgICAgICAgIGxpYi5nbG9iKCJ3aW5pbnN0Ki5leGUiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJjb21tYW5kX3RlbXBsYXRlIikKLSAgICAgICAgaWYgZGlyPT0ibGliMnRvMyI6Ci0gICAgICAgICAgICBsaWIucmVtb3ZlZmlsZSgicGlja2xlIiwgIioucGlja2xlIikKLSAgICAgICAgaWYgZGlyPT0ibWFjaG9saWIiOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUuY3R5cGVzIikKLSAgICAgICAgICAgIGxpYi5nbG9iKCJmZXRjaF9tYWNob2xpYioiKQotICAgICAgICBpZiBkaXI9PSd0dXJ0bGVkZW1vJzoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgidHVydGxlLmNmZyIpCi0gICAgICAgIGlmIGRpcj09InB5ZG9jX2RhdGEiOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJfcHlkb2MuY3NzIikKLSAgICAgICAgaWYgZGlyPT0iZGF0YSIgYW5kIHBhcmVudC5waHlzaWNhbD09InRlc3QiIGFuZCBwYXJlbnQuYmFzZWRpci5waHlzaWNhbD09ImVtYWlsIjoKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGQgY29udGFpbiBhbGwgbm9uLS5zdm4gZmlsZXMgbGlzdGVkIGluIHN1YnZlcnNpb24KLSAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIobGliLmFic29sdXRlKToKLSAgICAgICAgICAgICAgICBpZiBmLmVuZHN3aXRoKCIudHh0Iikgb3IgZj09Ii5zdm4iOmNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgiLmF1Iikgb3IgZi5lbmRzd2l0aCgiLmdpZiIpOgotICAgICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoZikKKyAgICAgICAgaGFzX3B5ID0gRmFsc2UKKyAgICAgICAgZm9yIG5hbWUsIHN1YmRpciBpbiBmaWxlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgc3ViZGlyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihsaWIuYWJzb2x1dGUsIG5hbWUpKQorICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gJ1JFQURNRSc6CisgICAgICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiUkVBRE1FLnR4dCIsIHNyYz0iUkVBRE1FIikKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiV0FSTklORzogTmV3IGZpbGUgJXMgaW4gZW1haWwvdGVzdC9kYXRhIiAlIGYpCi0gICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIobGliLmFic29sdXRlKToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgZikpOgotICAgICAgICAgICAgICAgIHB5ZGlycy5hcHBlbmQoKGxpYiwgZikpCi0gICAgZm9yIGQgaW4gZGlyczoKLSAgICAgICAgZC5jaGVja191bnBhY2thZ2VkKCkKKyAgICAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGhhc19weSA9IGhhc19weSBvciBuYW1lLmVuZHN3aXRoKCIucHkiKSBvciBuYW1lLmVuZHN3aXRoKCIucHl3IikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgbmFtZSkpCisgICAgICAgICAgICAgICAgcHlkaXJzLmFwcGVuZCgobGliLCBuYW1lLCBzdWJkaXIsIGZlYXR1cmUpKQorCisgICAgICAgIGlmIGhhc19weToKKyAgICAgICAgICAgIGxpYi5yZW1vdmVfcHljKCkKICAgICAjIEFkZCBETExzCiAgICAgZGVmYXVsdF9mZWF0dXJlLnNldF9jdXJyZW50KCkKICAgICBsaWIgPSBETExzCkBAIC0xMTU5LDYgKzExNDgsOCBAQAogICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUudHh0Iiwgc3JjPSJSRUFETUUiKQogICAgICAgICBpZiBmID09ICdTY3JpcHRzJzoKICAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiMnRvMy5weSIsIHNyYz0iMnRvMyIpCisgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInB5ZG9jMy5weSIsIHNyYz0icHlkb2MzIikKKyAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgicHl2ZW52LnB5Iiwgc3JjPSJweXZlbnYiKQogICAgICAgICAgICAgaWYgaGF2ZV90Y2w6CiAgICAgICAgICAgICAgICAgbGliLnN0YXJ0X2NvbXBvbmVudCgicHlkb2NndWkucHl3IiwgdGNsdGssIGtleWZpbGU9InB5ZG9jZ3VpLnB5dyIpCiAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKCJweWRvY2d1aS5weXciKQpAQCAtMTE5MCw2ICsxMTgxLDggQEAKICAgICAgICAgICAgICAgICJJbnN0YWxsUGF0aCIpLAogICAgICAgICAgICAgICAoIlJFR0lTVFJZLmRvYyIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCBOb25lLAogICAgICAgICAgICAgICAgIkRvY3VtZW50YXRpb24iKSwKKyAgICAgICAgICAgICAgKCJSRUdJU1RSWS5wYXRoIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsIE5vbmUsCisgICAgICAgICAgICAgIE5vbmUpLAogICAgICAgICAgICAgICAoIlJFR0lTVFJZLmRlZiIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LAogICAgICAgICAgICAgICAgTm9uZSwgTm9uZSldICsgdGNsZGF0YSkKICAgICAjIFNlZSAiRmVhdHVyZUNvbXBvbmVudHMgVGFibGUiLgpAQCAtMTIwNiw2ICsxMTk5LDcgQEAKICAgICBhZGRfZGF0YShkYiwgIkZlYXR1cmVDb21wb25lbnRzIiwKICAgICAgICAgICAgICBbKGRlZmF1bHRfZmVhdHVyZS5pZCwgIlJFR0lTVFJZIiksCiAgICAgICAgICAgICAgIChodG1sZmlsZXMuaWQsICJSRUdJU1RSWS5kb2MiKSwKKyAgICAgICAgICAgICAgKHByZXBlbmRfcGF0aC5pZCwgIlJFR0lTVFJZLnBhdGgiKSwKICAgICAgICAgICAgICAgKGV4dF9mZWF0dXJlLmlkLCAiUkVHSVNUUlkuZGVmIildICsKICAgICAgICAgICAgICAgdGNsZGF0YQogICAgICAgICAgICAgICApCkBAIC0xMjQ0LDExICsxMjM4LDExIEBACiAgICAgICAgICAgICAgICJ0ZXh0L3BsYWluIiwgIlJFR0lTVFJZLmRlZiIpLAogICAgICAgICAgICAgICNWZXJicwogICAgICAgICAgICAgICgicHkub3BlbiIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIiIsICJvcGVuIiksICIiLAotICAgICAgICAgICAgICByJyJbVEFSR0VURElSXXB5dGhvbi5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCisgICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weS5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCiAgICAgICAgICAgICAgKCJweXcub3BlbiIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIk5vQ29uIiwgIm9wZW4iKSwgIiIsCi0gICAgICAgICAgICAgIHInIltUQVJHRVRESVJdcHl0aG9udy5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCisgICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weXcuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAogICAgICAgICAgICAgICgicHljLm9wZW4iLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICJDb21waWxlZCIsICJvcGVuIiksICIiLAotICAgICAgICAgICAgICByJyJbVEFSR0VURElSXXB5dGhvbi5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCisgICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weS5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCiAgICAgICAgICAgICAgXSArIHRjbF92ZXJicyArIFsKICAgICAgICAgICAgICAjSWNvbnMKICAgICAgICAgICAgICAoInB5Lmljb24iLCAtMSwgcGF0MiAlICh0ZXN0cHJlZml4LCAiIiksICIiLApAQCAtMTM0Nyw5ICsxMzQxLDkgQEAKICMgTWVyZ2UgQ1JUIGludG8gTVNJIGZpbGUuIFRoaXMgcmVxdWlyZXMgdGhlIGRhdGFiYXNlIHRvIGJlIGNsb3NlZC4KIG1vZF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsiUHJvZ3JhbUZpbGVzIl0sICJDb21tb24gRmlsZXMiLCAiTWVyZ2UgTW9kdWxlcyIpCiBpZiBtc2lsaWIuV2luNjQ6Ci0gICAgbW9kdWxlcyA9IFsiTWljcm9zb2Z0X1ZDOTBfQ1JUX3g4Nl94NjQubXNtIiwgInBvbGljeV85XzBfTWljcm9zb2Z0X1ZDOTBfQ1JUX3g4Nl94NjQubXNtIl0KKyAgICBtb2R1bGVzID0gWyJNaWNyb3NvZnRfVkMxMDBfQ1JUX3g2NC5tc20iXQogZWxzZToKLSAgICBtb2R1bGVzID0gWyJNaWNyb3NvZnRfVkM5MF9DUlRfeDg2Lm1zbSIsInBvbGljeV85XzBfTWljcm9zb2Z0X1ZDOTBfQ1JUX3g4Ni5tc20iXQorICAgIG1vZHVsZXMgPSBbIk1pY3Jvc29mdF9WQzEwMF9DUlRfeDg2Lm1zbSJdCiAKIGZvciBpLCBuIGluIGVudW1lcmF0ZShtb2R1bGVzKToKICAgICBtb2R1bGVzW2ldID0gb3MucGF0aC5qb2luKG1vZF9kaXIsIG4pCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpbGliLnB5IGIvVG9vbHMvbXNpL21zaWxpYi5weQppbmRleCA1Nzk1ZDBlLi40NzJkOWQ0IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbXNpbGliLnB5CisrKyBiL1Rvb2xzL21zaS9tc2lsaWIucHkKQEAgLTQwOCw3ICs0MDgsNyBAQAogICAgICAgICBzZWxmLnBoeXNpY2FsID0gcGh5c2ljYWwKICAgICAgICAgc2VsZi5sb2dpY2FsID0gbG9naWNhbAogICAgICAgICBzZWxmLmNvbXBvbmVudCA9IE5vbmUKLSAgICAgICAgc2VsZi5zaG9ydF9uYW1lcyA9IHNldHMuU2V0KCkKKyAgICAgICAgc2VsZi5zaG9ydF9uYW1lcyA9IHt9CiAgICAgICAgIHNlbGYuaWRzID0gc2V0cy5TZXQoKQogICAgICAgICBzZWxmLmtleWZpbGVzID0ge30KICAgICAgICAgc2VsZi5jb21wb25lbnRmbGFncyA9IGNvbXBvbmVudGZsYWdzCkBAIC00NTYsMjMgKzQ1NiwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgWyhmZWF0dXJlLmlkLCBjb21wb25lbnQpXSkKIAogICAgIGRlZiBtYWtlX3Nob3J0KHNlbGYsIGZpbGUpOgorICAgICAgICBsb25nID0gZmlsZQogICAgICAgICBmaWxlID0gcmUuc3ViKHInW1w/fD48Oi8qIissOz1cW1xdXScsICdfJywgZmlsZSkgIyByZXN0cmljdGlvbnMgb24gc2hvcnQgbmFtZXMKLSAgICAgICAgcGFydHMgPSBmaWxlLnNwbGl0KCIuIikKKyAgICAgICAgcGFydHMgPSBmaWxlLnNwbGl0KCIuIiwgMSkKICAgICAgICAgaWYgbGVuKHBhcnRzKT4xOgotICAgICAgICAgICAgc3VmZml4ID0gcGFydHNbLTFdLnVwcGVyKCkKKyAgICAgICAgICAgIHN1ZmZpeCA9IHBhcnRzWzFdLnVwcGVyKCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1ZmZpeCA9IE5vbmUKKyAgICAgICAgICAgIHN1ZmZpeCA9ICcnCiAgICAgICAgIHByZWZpeCA9IHBhcnRzWzBdLnVwcGVyKCkKLSAgICAgICAgaWYgbGVuKHByZWZpeCkgPD0gOCBhbmQgKG5vdCBzdWZmaXggb3IgbGVuKHN1ZmZpeCk8PTMpOgorICAgICAgICBpZiBsZW4ocHJlZml4KSA8PSA4IGFuZCAnLicgbm90IGluIHN1ZmZpeCBhbmQgbGVuKHN1ZmZpeCkgPD0gMzoKICAgICAgICAgICAgIGlmIHN1ZmZpeDoKICAgICAgICAgICAgICAgICBmaWxlID0gcHJlZml4KyIuIitzdWZmaXgKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZmlsZSA9IHByZWZpeAotICAgICAgICAgICAgYXNzZXJ0IGZpbGUgbm90IGluIHNlbGYuc2hvcnRfbmFtZXMKKyAgICAgICAgICAgIGFzc2VydCBmaWxlIG5vdCBpbiBzZWxmLnNob3J0X25hbWVzLCAoZmlsZSwgc2VsZi5zaG9ydF9uYW1lc1tmaWxlXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByZWZpeCA9IHByZWZpeFs6Nl0KICAgICAgICAgICAgIGlmIHN1ZmZpeDoKLSAgICAgICAgICAgICAgICBzdWZmaXggPSBzdWZmaXhbOjNdCisgICAgICAgICAgICAgICAgIyBsYXN0IHRocmVlIGNoYXJhY3RlcnMgb2YgbGFzdCBzdWZmaXgKKyAgICAgICAgICAgICAgICBzdWZmaXggPSBzdWZmaXgucnNwbGl0KCcuJylbLTFdWzozXQogICAgICAgICAgICAgcG9zID0gMQogICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICBpZiBzdWZmaXg6CkBAIC00ODQsNyArNDg2LDcgQEAKICAgICAgICAgICAgICAgICBhc3NlcnQgcG9zIDwgMTAwMDAKICAgICAgICAgICAgICAgICBpZiBwb3MgaW4gKDEwLCAxMDAsIDEwMDApOgogICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBwcmVmaXhbOi0xXQotICAgICAgICBzZWxmLnNob3J0X25hbWVzLmFkZChmaWxlKQorICAgICAgICBzZWxmLnNob3J0X25hbWVzW2ZpbGVdID0gbG9uZwogICAgICAgICByZXR1cm4gZmlsZQogCiAgICAgZGVmIGFkZF9maWxlKHNlbGYsIGZpbGUsIHNyYz1Ob25lLCB2ZXJzaW9uPU5vbmUsIGxhbmd1YWdlPU5vbmUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3V1aWRzLnB5IGIvVG9vbHMvbXNpL3V1aWRzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGQxN2FkLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS91dWlkcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgVGhpcyBzaG91bGQgYmUgZXh0ZW5kZWQgZm9yIGVhY2ggUHl0aG9uIHJlbGVhc2UuCi0jIFRoZSBwcm9kdWN0IGNvZGUgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIG5hbWUgb2YgdGhlIE1TSSBmaWxlCi0jIGNoYW5nZXMsIGFuZCB3aGVuIG5ldyBjb21wb25lbnQgY29kZXMgYXJlIGlzc3VlZCBmb3IgZXhpc3RpbmcKLSMgY29tcG9uZW50cy4gU2VlICJDaGFuZ2luZyB0aGUgUHJvZHVjdCBDb2RlIi4gQXMgd2UgY2hhbmdlIHRoZQotIyBjb21wb25lbnQgY29kZXMgd2l0aCBldmVyeSBidWlsZCwgd2UgbmVlZCBhIG5ldyBwcm9kdWN0IGNvZGUKLSMgZWFjaCB0aW1lLiBGb3IgaW50ZXJtZWRpYXRlIChzbmFwc2hvdCkgcmVsZWFzZXMsIHRoZXkgYXJlIGF1dG9tYXRpY2FsbHkKLSMgZ2VuZXJhdGVkLiBGb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIHdlIHJlY29yZCB0aGUgcHJvZHVjdCBjb2RlcywKLSMgc28gcGVvcGxlIGNhbiByZWZlciB0byB0aGVtLgotcHJvZHVjdF9jb2RlcyA9IHsKLSAgICAnMi41LjEwMSc6ICd7YmMxNGNlM2UtNWU3Mi00YTY0LWFjMWYtYmY1OWE1NzE4OThjfScsICMgMi41YTEKLSAgICAnMi41LjEwMic6ICd7NWVlZDUxYzEtOGU5ZC00MDcxLTk0YzUtYjQwZGU1ZDQ5YmE1fScsICMgMi41YTIKLSAgICAnMi41LjEwMyc6ICd7NzNkY2Q5NjYtZmZlYy00MTVmLWJiMzktODM0MmMxZjQ3MDE3fScsICMgMi41YTMKLSAgICAnMi41LjExMSc6ICd7Yzc5N2VjZjgtYThlNi00ZmVjLWJiOTktNTI2YjY1ZjI4NjI2fScsICMgMi41YjEKLSAgICAnMi41LjExMic6ICd7MzJiZWI3NzQtZjYyNS00MzlkLWI1ODctNzE4NzQ4N2JhZjE1fScsICMgMi41YjIKLSAgICAnMi41LjExMyc6ICd7ODlmMjM5MTgtMTFjZi00ZjA4LWJlMTMtYjliMmU2NDYzZmQ5fScsICMgMi41YjMKLSAgICAnMi41LjEyMSc6ICd7OGU5MzIxYmMtNmIyNC00OGEzLThmZDQtYzk1ZjhlNTMxZTVmfScsICMgMi41YzEKLSAgICAnMi41LjEyMic6ICd7YTZjZDUwOGQtOTU5OS00NWRhLWE0NDEtY2JmZmE5ZjdlMDcwfScsICMgMi41YzIKLSAgICAnMi41LjE1MCc6ICd7MGEyYzU4NTQtNTU3ZS00OGM4LTgzNWEtM2I5ZjA3NGJkY2FhfScsICMgMi41LjAKLSAgICAnMi41LjExMjEnOid7MDM3OGI0M2UtNjE4NC00YzJmLWJlMWEtNGEzNjc3ODFjZDU0fScsICMgMi41LjFjMQotICAgICcyLjUuMTE1MCc6J3szMTgwMDAwNC02Mzg2LTQ5OTktYTUxOS01MThmMmQ3OGQ4ZjB9JywgIyAyLjUuMQotICAgICcyLjUuMjE1MCc6J3s2MzA0YTdkYS0xMTMyLTRlOTEtYTM0My1hMjk2MjY5ZWFiOGF9JywgIyAyLjUuMmMxCi0gICAgJzIuNS4yMTUwJzonezZiOTc2YWRmLThhZTgtNDM0ZS1iMjgyLWEwNmM3ZjYyNGQyZn0nLCAjIDIuNS4yCi0gICAgJzIuNi4xMDEnOiAnezBiYTgyZTFiLTUyZmQtNGUwMy04NjEwLWE2Yzc2MjM4ZThhOH0nLCAjIDIuNmExCi0gICAgJzIuNi4xMDInOiAnezNiMjdlMTZjLTU2ZGItNDU3MC1hMmQzLWU5YTI2MTgwYzYwYn0nLCAjIDIuNmEyCi0gICAgJzIuNi4xMDMnOiAne2NkMDZhOWM1LWJkZTUtNGJkNy05ODc0LTQ4OTMzOTk3MTIyYX0nLCAjIDIuNmEzCi0gICAgJzIuNi4xMDQnOiAne2RjNmVkNjM0LTQ3NGEtNGE1MC1hNTQ3LThkZTRiNzQ5MWU1M30nLCAjIDIuNmE0Ci0gICAgJzIuNi4xMTEnOiAnezNmODIwNzlhLTViZWUtNGM0YS04YTQxLTgyOTIzODllMjRhZX0nLCAjIDIuNmIxCi0gICAgJzIuNi4xMTInOiAnezhhMGU1OTcwLWYzZTYtNDczNy05YTJiLWJjNWZmMGYxNWZiNX0nLCAjIDIuNmIyCi0gICAgJzIuNi4xMTMnOiAne2RmNGY1YzIxLTZmY2MtNDU0MC05NWRlLTg1ZmViYTYzNGU3Nn0nLCAjIDIuNmIzCi0gICAgJzIuNi4xMjEnOiAne2JiZDM0NDY0LWRkZWItNDAyOC05OWU1LWYxNmM0YThmYmRiM30nLCAjIDIuNmMxCi0gICAgJzIuNi4xMjInOiAnezhmNjQ3ODdlLWEwMjMtNGM2MC1iZmVlLTI1ZDNhM2Y1OTJjNn0nLCAjIDIuNmMyCi0gICAgJzIuNi4xNTAnOiAnezExMGViNWM0LWU5OTUtNGNmYi1hYjgwLWE1ZjMxNWJlYTllOH0nLCAjIDIuNi4wCi0gICAgJzIuNi4xMTUwJzonezljYzg5MTcwLTAwMGItNDU3ZC05MWYxLTUzNjkxZjg1YjIyM30nLCAjIDIuNi4xCi0gICAgJzIuNi4yMTIxJzone2FkYWM0MTJiLWIyMDktNGMxNS1iNmFiLWRjYTFiNmU0NzE0NH0nLCAjIDIuNi4yYzEKLSAgICAnMi42LjIxNTAnOid7MjRhYWI0MjAtNGUzMC00NDk2LTk3MzktM2UyMTZmM2RlNmFlfScsICMgMi42LjIKLSAgICAnMi42LjMxMjEnOid7YTczZTAyNTQtZGNkYS00ZmU0LWJmMzctYzdlMWM0ZjRlYmI2fScsICMgMi42LjNjMQotICAgICcyLjYuMzE1MCc6J3szZDlhYzA5NS1lMTE1LTRlOTQtYmRlZi03ZjdlZGYxNzY5N2R9JywgIyAyLjYuMwotICAgICcyLjYuNDEyMSc6J3s3MjdkZTYwNS0wMzU5LTQ2MDYtYTk0Yi1jMjAzMzY1MjM3OWJ9JywgIyAyLjYuNGMxCi0gICAgJzIuNi40MTIyJzonezRmNzYwM2M2LTYzNTItNDI5OS1hMzk4LTE1MGEzMWIxOWFjY30nLCAjIDIuNi40YzIKLSAgICAnMi42LjQxNTAnOid7ZTczOTRhMGYtM2Y4MC00NWIxLTg3ZmMtYWJjZDUxODkzMjQ2fScsICMgMi42LjQKLSAgICAnMi42LjUxMjEnOid7ZTBlMjczZDctNzU5OC00NzAxLTgzMjUtYzkwYzA2OWZkNWZmfScsICMgMi42LjVjMQotICAgICcyLjYuNTEyMic6J3tmYTIyN2I3Ni0wNjcxLTRkYzYtYjgyNi1jMmZmMmE3MGRmZDV9JywgIyAyLjYuNWMyCi0gICAgJzIuNi41MTUwJzonezQ3MjNmMTk5LWZhNjQtNDIzMy04ZTZlLTlmY2NjOTVhMThlZX0nLCAjIDIuNi41Ci0gICAgJzIuNy4xMDEnOiAne2VjYTFiYmVmLTQzMmMtNDlhZS1hNjY3LWMyMTNjYzdiYmYyMn0nLCAjIDIuN2ExCi0gICAgJzIuNy4xMDInOiAnezIxY2UxNmVkLTczYzQtNDYwZC05YjExLTUyMmY0MTdiMjA5MH0nLCAjIDIuN2EyCi0gICAgJzIuNy4xMDMnOiAnezZlN2RiZDU1LWJhNGEtNDhhYy1hNjg4LTZjNzVkYjRkNzUwMH0nLCAjIDIuN2EzCi0gICAgJzIuNy4xMDQnOiAne2VlNzc0YmEzLTc0YTUtNDhkOS1iNDI1LWIzNWEyODcyNjBjOH0nLCAjIDIuN2E0Ci0gICAgJzIuNy4xMTEnOiAnezljZmQ5ZWM3LWE5YzctNDk4MC1hMWM2LTA1NGZjNjQ5M2ViM30nLCAjIDIuN2IxCi0gICAgJzIuNy4xMTInOiAnezlhNzJmYWY2LWMzMDQtNDE2NS04NTk1LTkyOTFmZjMwY2FjNn0nLCAjIDIuN2IyCi0gICAgJzIuNy4xMjEnOiAne2Y1MzBjOTRhLWRkNTMtNGRlOS05NDhlLWI2MzJiOWNiNDhkMn0nLCAjIDIuN2MxCi0gICAgJzIuNy4xMjInOiAne2Y4MDkwNWQyLWRkOGQtNGI4ZS04YTQwLWMyM2M5M2RjYTA3ZH0nLCAjIDIuN2MyCi0gICAgJzIuNy4xNTAnOiAnezIwYzMxNDM1LTJhMGEtNDU4MC1iZThiLWFjMDZmYzI0M2NhNH0nLCAjIDIuNy4wCi0gICAgJzMuMC4xMDEnOiAnezg1NTQyNjNhLTMyNDItNDg1Ny05MzU5LWFhODdiYzJjNThjMn0nLCAjIDMuMGExCi0gICAgJzMuMC4xMDInOiAnezY5MmQ2ZTJjLWYwYWMtNDBiOC1hMTMzLTcxOTFhZWViNjdmOX0nLCAjIDMuMGEyCi0gICAgJzMuMC4xMDMnOiAnezQ5Y2IyOTk1LTc1MWEtNDc1My1iZTdhLWQwYjFiYjU4NWUwNn0nLCAjIDMuMGEzCi0gICAgJzMuMC4xMDQnOiAnezg3Y2IwMTllLTE5ZmQtNDIzOC1iMWM3LTg1NzUxNDM3ZDY0Nn0nLCAjIDMuMGE0Ci0gICAgJzMuMC4xMDUnOiAne2NmMjY1OWFmLTE5ZWMtNDNkMi04YzM1LTBmNmEwOTQzOWQ0Mn0nLCAjIDMuMGE1Ci0gICAgJzMuMC4xMTEnOiAnezM2YzI2ZjU1LTgzN2QtNDVjZi04NDhjLTVmNWMwZmI0N2EyOH0nLCAjIDMuMGIxCi0gICAgJzMuMC4xMTInOiAnezA1NmEwZmJjLWM4ZmUtNGM2MS1hYWRlLWM0NDExYjcwYzk5OH0nLCAjIDMuMGIyCi0gICAgJzMuMC4xMTMnOiAnezJiMmU4OWE5LTgzYWYtNDNmOS1iN2Q1LTk2ZTgwYzVhM2YyNn0nLCAjIDMuMGIzCi0gICAgJzMuMC4xMTQnOiAne2U5NWMzMWFmLTY5YmUtNGRkNy05NmU2LWU1ZmM4NWU2NjBlNn0nLCAjIDMuMGI0Ci0gICAgJzMuMC4xMjEnOiAne2QwOTc5YzVlLWNkM2MtNDJlYy1iZTRjLWUyOTRkYTc5MzU3M30nLCAjIDMuMGMxCi0gICAgJzMuMC4xMjInOiAne2Y3MDdiOGU5LWEyNTctNDA0NS04MThlLTQ5MjNmYzIwZmJiNn0nLCAjIDMuMGMyCi0gICAgJzMuMC4xMjMnOiAnezVlNzIwOGYxLTg2NDMtNGVhMi1hYjVlLTQ2NDQ4ODcxMTJlM30nLCAjIDMuMGMzCi0gICAgJzMuMC4xNTAnOiAne2UwZTU2ZTIxLTU1ZGUtNGY3Ny1hMTA5LTFiYWE3MjM0ODc0M30nLCAjIDMuMC4wCi0gICAgJzMuMC4xMTIxJzone2QzNWIxZWE1LTNkNzAtNDg3Mi1iZjdlLWNkMDY2YTc3YTljOX0nLCAjIDMuMC4xYzEKLSAgICAnMy4wLjExNTAnOid7ZGUyZjJkOWMtNTNlMi00MGVlLTgyMDktNzRkYTYzY2IwNjBlfScsICMgMy4wLjEKLSAgICAnMy4wLjIxMjEnOid7Y2VmNzllN2YtOTgwOS00OWUyLWFmZDItZTI0MTQ4ZDdjODU1fScsICMgMy4wLjJjMQotICAgICczLjAuMjE1MCc6J3swY2YzYjk1YS04MzgyLTQ2MDctOTc3OS1jMzY0MDdmZjM2MmN9JywgIyAzLjAuMgotICAgICczLjEuMTAxJzogJ3tjNDIzZWFkYS1jNDk4LTRkNTEtOWViNC1iZmVhZTY0N2UwYTB9JywgIyAzLjFhMQotICAgICczLjEuMTAyJzogJ3tmNmUxOTliZi1kYzY0LTQyZjMtODdkNC0xNTI1OTkxYTAxM2V9JywgIyAzLjFhMgotICAgICczLjEuMTExJzogJ3tjM2M4Mjg5My02OWIyLTQ2NzYtODU1NC0xYjZlZTZjMTkxZTl9JywgIyAzLjFiMQotICAgICczLjEuMTIxJzogJ3tkYTJiNTE3MC0xMmYzLTRkOTktOGExZi01NDkyNmNjYTdhY2R9JywgIyAzLjFjMQotICAgICczLjEuMTIyJzogJ3tiY2ViNTEzMy1lMmVlLTQxMDktOTUxZi1hYzdlOTQxYTE2OTJ9JywgIyAzLjFjMgotICAgICczLjEuMTUwJzogJ3szYWQ2MWVlNS04MWQyLTRkN2UtYWRlZi1kYTFkZDM3Mjc3ZDF9JywgIyAzLjEuMAotICAgICczLjEuMTEyMSc6J3s1NzgyZjk1Ny02ZDQ5LTQxZDQtYmFkMC02Njg3MTVkZmQ2Mzh9JywgIyAzLjEuMWMxCi0gICAgJzMuMS4xMTUwJzonezdmZjkwNDYwLTg5YjctNDM1Yi1iNTgzLWIzN2IyODE1Y2NjN30nLCAjIDMuMS4xCi0gICAgJzMuMS4yMTIxJzone2VjNDU2MjRhLTM3OGMtNDNiZS05MWYzLTNmN2E1OWIwZDkwY30nLCAjIDMuMS4yYzEKLSAgICAnMy4xLjIxNTAnOid7ZDQwYWYwMTYtNTA2Yy00M2ZiLWE3MzgtYmQ1NGZhOGMxZTg1fScsICMgMy4xLjIKLSAgICAnMy4yLjEwMScgOid7YjQxMWYxNjgtN2EzNi00ZmZmLTkwMmMtYTU1NGQxYzc4YTRmfScsICMgMy4yYTEKLSAgICAnMy4yLjEwMicgOid7NzlmZjczYjctODM1OS00MTBmLWI5YzUtMTUyZDIwMjZmOGM4fScsICMgMy4yYTIKLSAgICAnMy4yLjEwMycgOid7ZTc2MzVjNjUtYzIyMS00YjliLWI3MGEtNTYxMWI4MzY5ZDc3fScsICMgMy4yYTMKLSAgICAnMy4yLjEwNCcgOid7NzQ4Y2QxMzktNzViOC00Y2E4LTk4YTctNTgyNjIyOTgxODFlfScsICMgMy4yYTQKLSAgICAnMy4yLjExMScgOid7MjBiZmMxNmYtYzdjZC00ZmMwLThmOTYtOTkxNDYxNGEzYzUwfScsICMgMy4yYjEKLSAgICAnMy4yLjExMicgOid7MGUzNTBjOTgtOGQ3My00OTkzLWI2ODYtY2ZlODcxNjAwNDZlfScsICMgMy4yYjIKLSAgICAnMy4yLjEyMScgOid7MjA5NDk2OGQtNzU4My00N2Y2LWE3ZmQtMjIzMDQ1MzJlMDlmfScsICMgMy4ycmMxCi0gICAgJzMuMi4xMjInIDonezRmM2VkZmE2LWNmNzAtNDY5YS04MjVmLWUxMjA2YWE3ZjQxMn0nLCAjIDMuMnJjMgotICAgICczLjIuMTIzJyA6J3s5MGM2NzNkNy04Y2ZkLTQ5NjktOTgxNi1mN2Q3MGJhZDg3ZjN9JywgIyAzLjJyYzMKLSAgICAnMy4yLjE1MCcgOid7YjIwNDJkNWUtOTg2ZC00NGVjLWFlZTMtYWZlNDEwOGNjYzkzfScsICMgMy4yLjAKLSAgICAnMy4yLjExMjEnOid7NGY5MGRlNGEtODNkZC00NDQzLWI2MjUtY2ExMzBmZjM2MWRkfScsICMgMy4yLjFyYzEKLSAgICAnMy4yLjExMjInOid7ZGM1ZWIwNGQtZmY4YS00YmVkLThmOTYtMjM5NDJmZDU5ZTVmfScsICMgMy4yLjFyYzIKLSAgICAnMy4yLjExNTAnOid7MzRiMjUzMGMtNjM0OS00MjkyLTlkYzMtNjBiZGE0YWVkOTNjfScsICMgMy4yLjEKLSAgICAnMy4yLjIxMjEnOid7REZCMjlBNTMtQUNDNC00NGU2LTg1QTYtRDBEQTI2RkU4RTRFfScsICMgMy4yLjJyYzEKLSAgICAnMy4yLjIxNTAnOid7NENERTMxNjgtRDA2MC00YjdjLUJDNzQtNEQ4RjlCQjAxQUZEfScsICMgMy4yLjIKLSAgICAnMy4yLjMxMjEnOid7QjhFOENGRjctRTRDNi00YTdjLTlGMDYtQkIzQThCNzVEREE4fScsICMgMy4yLjNyYzEKLSAgICAnMy4yLjMxMjInOid7RThEQ0QzRTAtMTJCNi00ZmI3LTlEQjUtNTQzQzJFNjczNzJFfScsICMgMy4yLjNyYzIKLSAgICAnMy4yLjMxNTAnOid7Nzg5Qzk2NDQtOUY4Mi00NGQzLUI0Q0EtQUMzMUY0NkY1ODgyfScsICMgMy4yLjMKLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvcGFyc2VyL3Rlc3RfdW5wYXJzZS5weSBiL1Rvb2xzL3BhcnNlci90ZXN0X3VucGFyc2UucHkKaW5kZXggMmFjMWVhNi4uYmU4NDQwMCAxMDA2NDQKLS0tIGEvVG9vbHMvcGFyc2VyL3Rlc3RfdW5wYXJzZS5weQorKysgYi9Ub29scy9wYXJzZXIvdGVzdF91bnBhcnNlLnB5CkBAIC0yLDkgKzIsMTAgQEAKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIGltcG9ydCBpbwogaW1wb3J0IG9zCitpbXBvcnQgcmFuZG9tCiBpbXBvcnQgdG9rZW5pemUKLWltcG9ydCBhc3QKIGltcG9ydCB1bnBhcnNlCitpbXBvcnQgYXN0CiAKIGRlZiByZWFkX3B5ZmlsZShmaWxlbmFtZSk6CiAgICAgIiIiUmVhZCBhbmQgcmV0dXJuIHRoZSBjb250ZW50cyBvZiBhIFB5dGhvbiBzb3VyY2UgZmlsZSAoYXMgYQpAQCAtOTMsNiArOTQsMjEgQEAKICAgICBzdWl0ZTUKICIiIgogCit3aXRoX3NpbXBsZSA9ICIiIlwKK3dpdGggZigpOgorICAgIHN1aXRlMQorIiIiCisKK3dpdGhfYXMgPSAiIiJcCit3aXRoIGYoKSBhcyB4OgorICAgIHN1aXRlMQorIiIiCisKK3dpdGhfdHdvX2l0ZW1zID0gIiIiXAord2l0aCBmKCkgYXMgeCwgZygpIGFzIHk6CisgICAgc3VpdGUxCisiIiIKKwogY2xhc3MgQVNUVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBhc3NlcnRBU1RFcXVhbChzZWxmLCBhc3QxLCBhc3QyKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZHVtcChhc3QxKSwgYXN0LmR1bXAoYXN0MikpCkBAIC0yMTUsNiArMjMxLDE1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKCJhLCAqYlswXSwgYyA9IHNlcSIpCiAgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKCJhLCAqKGIsIGMpID0gc2VxIikKIAorICAgIGRlZiB0ZXN0X3dpdGhfc2ltcGxlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcCh3aXRoX3NpbXBsZSkKKworICAgIGRlZiB0ZXN0X3dpdGhfYXMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHdpdGhfYXMpCisKKyAgICBkZWYgdGVzdF93aXRoX3R3b19pdGVtcyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAod2l0aF90d29faXRlbXMpCisKIAogY2xhc3MgRGlyZWN0b3J5VGVzdENhc2UoQVNUVGVzdENhc2UpOgogICAgICIiIlRlc3Qgcm91bmR0cmlwIGJlaGF2aW91ciBvbiBhbGwgZmlsZXMgaW4gTGliIGFuZCBMaWIvdGVzdC4iIiIKQEAgLTIzMyw2ICsyNTgsMTAgQEAKICAgICAgICAgICAgICAgICBpZiBuLmVuZHN3aXRoKCcucHknKSBhbmQgbm90IG4uc3RhcnRzd2l0aCgnYmFkJyk6CiAgICAgICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZChvcy5wYXRoLmpvaW4odGVzdF9kaXIsIG4pKQogCisgICAgICAgICMgVGVzdCBsaW1pdGVkIHN1YnNldCBvZiBmaWxlcyB1bmxlc3MgdGhlICdjcHUnIHJlc291cmNlIGlzIHNwZWNpZmllZC4KKyAgICAgICAgaWYgbm90IHRlc3Quc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCJjcHUiKToKKyAgICAgICAgICAgIG5hbWVzID0gcmFuZG9tLnNhbXBsZShuYW1lcywgMTApCisKICAgICAgICAgZm9yIGZpbGVuYW1lIGluIG5hbWVzOgogICAgICAgICAgICAgaWYgdGVzdC5zdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoJ1Rlc3RpbmcgJXMnICUgZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weSBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CmluZGV4IGQ5ZmNhOTcuLmI1NWUyYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CisrKyBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CkBAIC0xLDYgKzEsNSBAQAogIlVzYWdlOiB1bnBhcnNlLnB5IDxwYXRoIHRvIHNvdXJjZSBmaWxlPiIKIGltcG9ydCBzeXMKLWltcG9ydCBtYXRoCiBpbXBvcnQgYXN0CiBpbXBvcnQgdG9rZW5pemUKIGltcG9ydCBpbwpAQCAtMTQ3LDYgKzE0NiwxNCBAQAogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQogICAgICAgICBzZWxmLndyaXRlKCIpIikKIAorICAgIGRlZiBfWWllbGRGcm9tKHNlbGYsIHQpOgorICAgICAgICBzZWxmLndyaXRlKCIoIikKKyAgICAgICAgc2VsZi53cml0ZSgieWllbGQgZnJvbSIpCisgICAgICAgIGlmIHQudmFsdWU6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgIikKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKKyAgICAgICAgc2VsZi53cml0ZSgiKSIpCisKICAgICBkZWYgX1JhaXNlKHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoInJhaXNlIikKICAgICAgICAgaWYgbm90IHQuZXhjOgpAQCAtMTU4LDEyICsxNjUsMTEgQEAKICAgICAgICAgICAgIHNlbGYud3JpdGUoIiBmcm9tICIpCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuY2F1c2UpCiAKLSAgICBkZWYgX1RyeUV4Y2VwdChzZWxmLCB0KToKKyAgICBkZWYgX1RyeShzZWxmLCB0KToKICAgICAgICAgc2VsZi5maWxsKCJ0cnkiKQogICAgICAgICBzZWxmLmVudGVyKCkKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmJvZHkpCiAgICAgICAgIHNlbGYubGVhdmUoKQotCiAgICAgICAgIGZvciBleCBpbiB0LmhhbmRsZXJzOgogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaChleCkKICAgICAgICAgaWYgdC5vcmVsc2U6CkBAIC0xNzEsMjIgKzE3NywxMiBAQAogICAgICAgICAgICAgc2VsZi5lbnRlcigpCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQub3JlbHNlKQogICAgICAgICAgICAgc2VsZi5sZWF2ZSgpCi0KLSAgICBkZWYgX1RyeUZpbmFsbHkoc2VsZiwgdCk6Ci0gICAgICAgIGlmIGxlbih0LmJvZHkpID09IDEgYW5kIGlzaW5zdGFuY2UodC5ib2R5WzBdLCBhc3QuVHJ5RXhjZXB0KToKLSAgICAgICAgICAgICMgdHJ5LWV4Y2VwdC1maW5hbGx5Ci0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmlsbCgidHJ5IikKKyAgICAgICAgaWYgdC5maW5hbGJvZHk6CisgICAgICAgICAgICBzZWxmLmZpbGwoImZpbmFsbHkiKQogICAgICAgICAgICAgc2VsZi5lbnRlcigpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5maW5hbGJvZHkpCiAgICAgICAgICAgICBzZWxmLmxlYXZlKCkKIAotICAgICAgICBzZWxmLmZpbGwoImZpbmFsbHkiKQotICAgICAgICBzZWxmLmVudGVyKCkKLSAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmZpbmFsYm9keSkKLSAgICAgICAgc2VsZi5sZWF2ZSgpCi0KICAgICBkZWYgX0V4Y2VwdEhhbmRsZXIoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYuZmlsbCgiZXhjZXB0IikKICAgICAgICAgaWYgdC50eXBlOgpAQCAtMjk2LDEwICsyOTIsNyBAQAogCiAgICAgZGVmIF9XaXRoKHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoIndpdGggIikKLSAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmNvbnRleHRfZXhwcikKLSAgICAgICAgaWYgdC5vcHRpb25hbF92YXJzOgotICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzICIpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQub3B0aW9uYWxfdmFycykKKyAgICAgICAgaW50ZXJsZWF2ZShsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHNlbGYuZGlzcGF0Y2gsIHQuaXRlbXMpCiAgICAgICAgIHNlbGYuZW50ZXIoKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKICAgICAgICAgc2VsZi5sZWF2ZSgpCkBAIC01NjQsNiArNTU3LDEyIEBACiAgICAgICAgIGlmIHQuYXNuYW1lOgogICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzICIrdC5hc25hbWUpCiAKKyAgICBkZWYgX3dpdGhpdGVtKHNlbGYsIHQpOgorICAgICAgICBzZWxmLmRpc3BhdGNoKHQuY29udGV4dF9leHByKQorICAgICAgICBpZiB0Lm9wdGlvbmFsX3ZhcnM6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgYXMgIikKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5vcHRpb25hbF92YXJzKQorCiBkZWYgcm91bmR0cmlwKGZpbGVuYW1lLCBvdXRwdXQ9c3lzLnN0ZG91dCk6CiAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBweWZpbGU6CiAgICAgICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKHB5ZmlsZS5yZWFkbGluZSlbMF0KZGlmZiAtLWdpdCBhL1Rvb2xzL3B5YmVuY2gvcHliZW5jaC5weSBiL1Rvb2xzL3B5YmVuY2gvcHliZW5jaC5weQppbmRleCA4ZWFhZDYzLi45NDJmNTZkIDEwMDc1NQotLS0gYS9Ub29scy9weWJlbmNoL3B5YmVuY2gucHkKKysrIGIvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5CkBAIC0zNSw3ICszNSw5IEBACiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRSAhCiAiIiIKIAotaW1wb3J0IHN5cywgdGltZSwgb3BlcmF0b3IsIHBsYXRmb3JtCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHBsYXRmb3JtCiBmcm9tIENvbW1hbmRMaW5lIGltcG9ydCAqCiAKIHRyeToKQEAgLTczLDExICs3NSwxNSBAQAogCiAjIFRpbWVyIHR5cGVzCiBUSU1FUl9USU1FX1RJTUUgPSAndGltZS50aW1lJworVElNRVJfVElNRV9QUk9DRVNTX1RJTUUgPSAndGltZS5wcm9jZXNzX3RpbWUnCitUSU1FUl9USU1FX1BFUkZfQ09VTlRFUiA9ICd0aW1lLnBlcmZfY291bnRlcicKIFRJTUVSX1RJTUVfQ0xPQ0sgPSAndGltZS5jbG9jaycKIFRJTUVSX1NZU1RJTUVTX1BST0NFU1NUSU1FID0gJ3N5c3RpbWVzLnByb2Nlc3N0aW1lJwogCiAjIENob29zZSBwbGF0Zm9ybSBkZWZhdWx0IHRpbWVyCi1pZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgoraWYgaGFzYXR0cih0aW1lLCAncGVyZl9jb3VudGVyJyk6CisgICAgVElNRVJfUExBVEZPUk1fREVGQVVMVCA9IFRJTUVSX1RJTUVfUEVSRl9DT1VOVEVSCitlbGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6CiAgICAgIyBPbiBXaW5YUCB0aGlzIGhhcyAyLjVtcyByZXNvbHV0aW9uCiAgICAgVElNRVJfUExBVEZPUk1fREVGQVVMVCA9IFRJTUVSX1RJTUVfQ0xPQ0sKIGVsc2U6CkBAIC05Myw2ICs5OSwxMCBAQAogCiAgICAgaWYgdGltZXJ0eXBlID09IFRJTUVSX1RJTUVfVElNRToKICAgICAgICAgcmV0dXJuIHRpbWUudGltZQorICAgIGVsaWYgdGltZXJ0eXBlID09IFRJTUVSX1RJTUVfUFJPQ0VTU19USU1FOgorICAgICAgICByZXR1cm4gdGltZS5wcm9jZXNzX3RpbWUKKyAgICBlbGlmIHRpbWVydHlwZSA9PSBUSU1FUl9USU1FX1BFUkZfQ09VTlRFUjoKKyAgICAgICAgcmV0dXJuIHRpbWUucGVyZl9jb3VudGVyCiAgICAgZWxpZiB0aW1lcnR5cGUgPT0gVElNRVJfVElNRV9DTE9DSzoKICAgICAgICAgcmV0dXJuIHRpbWUuY2xvY2sKICAgICBlbGlmIHRpbWVydHlwZSA9PSBUSU1FUl9TWVNUSU1FU19QUk9DRVNTVElNRToKQEAgLTEwNyw2ICsxMTcsNyBAQAogICAgICAgICBwcmludCgnR2V0dGluZyBtYWNoaW5lIGRldGFpbHMuLi4nKQogICAgIGJ1aWxkbm8sIGJ1aWxkZGF0ZSA9IHBsYXRmb3JtLnB5dGhvbl9idWlsZCgpCiAgICAgcHl0aG9uID0gcGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKQorICAgICMgWFhYIHRoaXMgaXMgbm93IGFsd2F5cyBVQ1M0LCBtYXliZSByZXBsYWNlIGl0IHdpdGggJ1BFUDM5MycgaW4gMy4zKz8KICAgICBpZiBzeXMubWF4dW5pY29kZSA9PSA2NTUzNToKICAgICAgICAgIyBVQ1MyIGJ1aWxkIChzdGFuZGFyZCkKICAgICAgICAgdW5pdHlwZSA9ICdVQ1MyJwpAQCAtODY1LDcgKzg3NiwxOCBAQAogICAgICAgICAgICAgcHJpbnQoJyogdXNpbmcgdGltZXI6IHN5c3RpbWVzLnByb2Nlc3N0aW1lICglcyknICUgXAogICAgICAgICAgICAgICAgICAgc3lzdGltZXMuU1lTVElNRVNfSU1QTEVNRU5UQVRJT04pCiAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGNsb2NrIGZ1bmN0aW9uIGRvZXMgZXhpc3QKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnZXRfdGltZXIodGltZXIpCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgIHByaW50KCIqIEVycm9yOiBVbmtub3duIHRpbWVyOiAlcyIgJSB0aW1lcikKKyAgICAgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICAgICAgcHJpbnQoJyogdXNpbmcgdGltZXI6ICVzJyAlIHRpbWVyKQorICAgICAgICAgICAgaWYgaGFzYXR0cih0aW1lLCAnZ2V0X2Nsb2NrX2luZm8nKToKKyAgICAgICAgICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbyh0aW1lcls1Ol0pCisgICAgICAgICAgICAgICAgcHJpbnQoJyogdGltZXI6IHJlc29sdXRpb249JXMsIGltcGxlbWVudGF0aW9uPSVzJworICAgICAgICAgICAgICAgICAgICAgICUgKGluZm8ucmVzb2x1dGlvbiwgaW5mby5pbXBsZW1lbnRhdGlvbikpCiAKICAgICAgICAgcHJpbnQoKQogCkBAIC05NDMsOCArOTY1LDYgQEAKICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcChiZW5jaCxmKQogICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgcmVhc29uOgotICAgICAgICAgICAgICAgIHByaW50KCcqIEVycm9yIG9wZW5pbmcvd3JpdGluZyByZXBvcnRmaWxlJykKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIHJlYXNvbjoKICAgICAgICAgICAgICAgICBwcmludCgnKiBFcnJvciBvcGVuaW5nL3dyaXRpbmcgcmVwb3J0ZmlsZSAlczogJXMnICUgKAogICAgICAgICAgICAgICAgICAgICByZXBvcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICByZWFzb24pKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9SRUFETUUgYi9Ub29scy9zY3JpcHRzL1JFQURNRQppbmRleCA4YzAyNTI5Li5kNjVkMWZkIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL1JFQURNRQorKysgYi9Ub29scy9zY3JpcHRzL1JFQURNRQpAQCAtMTUsNyArMTUsNyBAQAogZGlmZi5weSAgICAgICAgICAgICAgICAgUHJpbnQgZmlsZSBkaWZmcyBpbiBjb250ZXh0LCB1bmlmaWVkLCBvciBuZGlmZiBmb3JtYXRzCiBkdXRyZWUucHkgICAgICAgICAgICAgICBGb3JtYXQgZHUoMSkgb3V0cHV0IGFzIGEgdHJlZSBzb3J0ZWQgYnkgc2l6ZQogZXB0YWdzLnB5ICAgICAgICAgICAgICAgQ3JlYXRlIEVtYWNzIFRBR1MgZmlsZSBmb3IgUHl0aG9uIG1vZHVsZXMKLWZpbmRfcmVjdXJzaW9ubGltaXQucHkgIEZpbmQgdGhlIG1heGltdW0gcmVjdXJzaW9uIGxpbWl0IG9uIHRoaXMgbWFjaGluZSAKK2ZpbmRfcmVjdXJzaW9ubGltaXQucHkgIEZpbmQgdGhlIG1heGltdW0gcmVjdXJzaW9uIGxpbWl0IG9uIHRoaXMgbWFjaGluZQogZmluZGRpdi5weSAgICAgICAgICAgICAgQSBncmVwLWxpa2UgdG9vbCB0aGF0IGxvb2tzIGZvciBkaXZpc2lvbiBvcGVyYXRvcnMKIGZpbmRsaW5rc3RvLnB5ICAgICAgICAgIFJlY3Vyc2l2ZWx5IGZpbmQgc3ltYm9saWMgbGlua3MgdG8gYSBnaXZlbiBwYXRoIHByZWZpeAogZmluZG5vY29kaW5nLnB5ICAgICAgICAgRmluZCBzb3VyY2UgZmlsZXMgd2hpY2ggbmVlZCBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbgpAQCAtMjgsNiArMjgsNyBAQAogZ29vZ2xlLnB5ICAgICAgICAgICAgICAgT3BlbiBhIHdlYmJyb3dzZXIgd2l0aCBHb29nbGUKIGdwcm9mMmh0bWwucHkgICAgICAgICAgIFRyYW5zZm9ybSBncHJvZigxKSBvdXRwdXQgaW50byB1c2VmdWwgSFRNTAogaDJweS5weSAgICAgICAgICAgICAgICAgVHJhbnNsYXRlICNkZWZpbmUncyBpbnRvIFB5dGhvbiBhc3NpZ25tZW50cworaGlnaGxpZ2h0LnB5ICAgICAgICAgICAgUHl0aG9uIHN5bnRheCBoaWdobGlnaHRpbmcgd2l0aCBIVE1MIG91dHB1dAogaWRsZTMgICAgICAgICAgICAgICAgICAgTWFpbiBwcm9ncmFtIHRvIHN0YXJ0IElETEUKIGlmZGVmLnB5ICAgICAgICAgICAgICAgIFJlbW92ZSAjaWYobilkZWYgZ3JvdXBzIGZyb20gQyBzb3VyY2VzCiBsZmNyLnB5ICAgICAgICAgICAgICAgICBDaGFuZ2UgTEYgbGluZSBlbmRpbmdzIHRvIENSTEYgKFVuaXggdG8gV2luZG93cykKQEAgLTUzLDYgKzU0LDcgQEAKIHJlaW5kZW50LnB5ICAgICAgICAgICAgIENoYW5nZSAucHkgZmlsZXMgdG8gdXNlIDQtc3BhY2UgaW5kZW50cwogcmVpbmRlbnQtcnN0LnB5ICAgICAgICAgRml4LXVwIHJlU3RydWN0dXJlZFRleHQgZmlsZSB3aGl0ZXNwYWNlCiByZ3JlcC5weSAgICAgICAgICAgICAgICBSZXZlcnNlIGdyZXAgdGhyb3VnaCBhIGZpbGUgKHVzZWZ1bCBmb3IgYmlnIGxvZ2ZpbGVzKQorcnVuX3Rlc3RzLnB5ICAgICAgICAgICAgUnVuIHRoZSB0ZXN0IHN1aXRlIHdpdGggbW9yZSBzZW5zaWJsZSBkZWZhdWx0IG9wdGlvbnMKIHNlcnZlLnB5ICAgICAgICAgICAgICAgIFNtYWxsIHdzZ2lyZWYtYmFzZWQgd2ViIHNlcnZlciwgdXNlZCBpbiBtYWtlIHNlcnZlIGluIERvYwogc3VmZi5weSAgICAgICAgICAgICAgICAgU29ydCBhIGxpc3Qgb2YgZmlsZXMgYnkgc3VmZml4CiBzdm5lb2wucHkgICAgICAgICAgICAgICBTZXQgc3ZuOmVvbC1zdHlsZSBvbiBhbGwgZmlsZXMgaW4gZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2RpZmYucHkgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKaW5kZXggOWVmYjA3OC4uZjliMTRiZiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQpAQCAtOSw2ICs5LDEyIEBACiAiIiIKIAogaW1wb3J0IHN5cywgb3MsIHRpbWUsIGRpZmZsaWIsIG9wdHBhcnNlCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUKKworZGVmIGZpbGVfbXRpbWUocGF0aCk6CisgICAgdCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAob3Muc3RhdChwYXRoKS5zdF9tdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZS51dGMpCisgICAgcmV0dXJuIHQuYXN0aW1lem9uZSgpLmlzb2Zvcm1hdCgpCiAKIGRlZiBtYWluKCk6CiAKQEAgLTMwLDEwICszNiwxMiBAQAogICAgIG4gPSBvcHRpb25zLmxpbmVzCiAgICAgZnJvbWZpbGUsIHRvZmlsZSA9IGFyZ3MKIAotICAgIGZyb21kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KGZyb21maWxlKS5zdF9tdGltZSkKLSAgICB0b2RhdGUgPSB0aW1lLmN0aW1lKG9zLnN0YXQodG9maWxlKS5zdF9tdGltZSkKLSAgICBmcm9tbGluZXMgPSBvcGVuKGZyb21maWxlLCAnVScpLnJlYWRsaW5lcygpCi0gICAgdG9saW5lcyA9IG9wZW4odG9maWxlLCAnVScpLnJlYWRsaW5lcygpCisgICAgZnJvbWRhdGUgPSBmaWxlX210aW1lKGZyb21maWxlKQorICAgIHRvZGF0ZSA9IGZpbGVfbXRpbWUodG9maWxlKQorICAgIHdpdGggb3Blbihmcm9tZmlsZSwgJ1UnKSBhcyBmZjoKKyAgICAgICAgZnJvbWxpbmVzID0gZmYucmVhZGxpbmVzKCkKKyAgICB3aXRoIG9wZW4odG9maWxlLCAnVScpIGFzIHRmOgorICAgICAgICB0b2xpbmVzID0gdGYucmVhZGxpbmVzKCkKIAogICAgIGlmIG9wdGlvbnMudToKICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgZnJvbWZpbGUsIHRvZmlsZSwgZnJvbWRhdGUsIHRvZGF0ZSwgbj1uKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9maW5kbm9jb2RpbmcucHkgYi9Ub29scy9zY3JpcHRzL2ZpbmRub2NvZGluZy5weQppbmRleCBhNDk0YTQ4Li5iM2U5ZGM3IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2ZpbmRub2NvZGluZy5weQorKysgYi9Ub29scy9zY3JpcHRzL2ZpbmRub2NvZGluZy5weQpAQCAtMiw3ICsyLDcgQEAKIAogIiIiTGlzdCBhbGwgdGhvc2UgUHl0aG9uIGZpbGVzIHRoYXQgcmVxdWlyZSBhIGNvZGluZyBkaXJlY3RpdmUKIAotVXNhZ2U6IG5vY29kaW5nLnB5IGRpcjEgW2RpcjIuLi5dCitVc2FnZTogZmluZG5vY29kaW5nLnB5IGRpcjEgW2RpcjIuLi5dCiAiIiIKIAogX19hdXRob3JfXyA9ICJPbGVnIEJyb3l0bWFubiwgR2VvcmcgQnJhbmRsIgpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJubyBzb3BoaXN0aWNhdGVkIFB5dGhvbiBzb3VyY2UgZmlsZSBzZWFyY2ggd2lsbCBiZSBkb25lLiIsIGZpbGU9c3lzLnN0ZGVycikKIAogCi1kZWNsX3JlID0gcmUuY29tcGlsZShyImNvZGluZ1s9Ol1ccyooWy1cdy5dKykiKQorZGVjbF9yZSA9IHJlLmNvbXBpbGUocmIiY29kaW5nWz06XVxzKihbLVx3Ll0rKSIpCiAKIGRlZiBnZXRfZGVjbGFyYXRpb24obGluZSk6CiAgICAgbWF0Y2ggPSBkZWNsX3JlLnNlYXJjaChsaW5lKQpAQCAtNTAsMjEgKzUwLDIwIEBACiAKIGRlZiBuZWVkc19kZWNsYXJhdGlvbihmdWxscGF0aCk6CiAgICAgdHJ5OgotICAgICAgICBpbmZpbGUgPSBvcGVuKGZ1bGxwYXRoLCAnclUnKQorICAgICAgICBpbmZpbGUgPSBvcGVuKGZ1bGxwYXRoLCAncmInKQogICAgIGV4Y2VwdCBJT0Vycm9yOiAjIE9vcHMsIHRoZSBmaWxlIHdhcyByZW1vdmVkIC0gaWdub3JlIGl0CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBsaW5lMSA9IGluZmlsZS5yZWFkbGluZSgpCi0gICAgbGluZTIgPSBpbmZpbGUucmVhZGxpbmUoKQorICAgIHdpdGggaW5maWxlOgorICAgICAgICBsaW5lMSA9IGluZmlsZS5yZWFkbGluZSgpCisgICAgICAgIGxpbmUyID0gaW5maWxlLnJlYWRsaW5lKCkKIAotICAgIGlmIGdldF9kZWNsYXJhdGlvbihsaW5lMSkgb3IgZ2V0X2RlY2xhcmF0aW9uKGxpbmUyKToKLSAgICAgICAgIyB0aGUgZmlsZSBkb2VzIGhhdmUgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24sIHNvIHRydXN0IGl0Ci0gICAgICAgIGluZmlsZS5jbG9zZSgpCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBnZXRfZGVjbGFyYXRpb24obGluZTEpIG9yIGdldF9kZWNsYXJhdGlvbihsaW5lMik6CisgICAgICAgICAgICAjIHRoZSBmaWxlIGRvZXMgaGF2ZSBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbiwgc28gdHJ1c3QgaXQKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgIyBjaGVjayB0aGUgd2hvbGUgZmlsZSBmb3Igbm9uIHV0Zi04IGNoYXJhY3RlcnMKLSAgICByZXN0ID0gaW5maWxlLnJlYWQoKQotICAgIGluZmlsZS5jbG9zZSgpCisgICAgICAgICMgY2hlY2sgdGhlIHdob2xlIGZpbGUgZm9yIG5vbiB1dGYtOCBjaGFyYWN0ZXJzCisgICAgICAgIHJlc3QgPSBpbmZpbGUucmVhZCgpCiAKICAgICBpZiBoYXNfY29ycmVjdF9lbmNvZGluZyhsaW5lMStsaW5lMityZXN0LCAidXRmLTgiKToKICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weSBiL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFmZjVjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQpAQCAtMCwwICsxLDI2MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworJycnQWRkIHN5bnRheCBoaWdobGlnaHRpbmcgdG8gUHl0aG9uIHNvdXJjZSBjb2RlJycnCisKK19fYXV0aG9yX18gPSAnUmF5bW9uZCBIZXR0aW5nZXInCisKK2ltcG9ydCBrZXl3b3JkLCB0b2tlbml6ZSwgY2dpLCByZSwgZnVuY3Rvb2xzCit0cnk6CisgICAgaW1wb3J0IGJ1aWx0aW5zCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IF9fYnVpbHRpbl9fIGFzIGJ1aWx0aW5zCisKKyMjIyMgQW5hbHl6ZSBQeXRob24gU291cmNlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNfYnVpbHRpbihzKToKKyAgICAnUmV0dXJuIFRydWUgaWYgcyBpcyB0aGUgbmFtZSBvZiBhIGJ1aWx0aW4nCisgICAgcmV0dXJuIGhhc2F0dHIoYnVpbHRpbnMsIHMpCisKK2RlZiBjb21iaW5lX3JhbmdlKGxpbmVzLCBzdGFydCwgZW5kKToKKyAgICAnSm9pbiBjb250ZW50IGZyb20gYSByYW5nZSBvZiBsaW5lcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQnCisgICAgKHNyb3csIHNjb2wpLCAoZXJvdywgZWNvbCkgPSBzdGFydCwgZW5kCisgICAgaWYgc3JvdyA9PSBlcm93OgorICAgICAgICByZXR1cm4gbGluZXNbc3Jvdy0xXVtzY29sOmVjb2xdLCBlbmQKKyAgICByb3dzID0gW2xpbmVzW3Nyb3ctMV1bc2NvbDpdXSArIGxpbmVzW3Nyb3c6IGVyb3ctMV0gKyBbbGluZXNbZXJvdy0xXVs6ZWNvbF1dCisgICAgcmV0dXJuICcnLmpvaW4ocm93cyksIGVuZAorCitkZWYgYW5hbHl6ZV9weXRob24oc291cmNlKToKKyAgICAnJydHZW5lcmF0ZSBhbmQgY2xhc3NpZnkgY2h1bmtzIG9mIFB5dGhvbiBmb3Igc3ludGF4IGhpZ2hsaWdodGluZy4KKyAgICAgICBZaWVsZHMgdHVwbGVzIGluIHRoZSBmb3JtOiAoY2F0ZWdvcnksIGNhdGVnb3JpemVkX3RleHQpLgorICAgICcnJworICAgIGxpbmVzID0gc291cmNlLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICBsaW5lcy5hcHBlbmQoJycpCisgICAgcmVhZGxpbmUgPSBmdW5jdG9vbHMucGFydGlhbChuZXh0LCBpdGVyKGxpbmVzKSwgJycpCisgICAga2luZCA9IHRva19zdHIgPSAnJworICAgIHRva190eXBlID0gdG9rZW5pemUuQ09NTUVOVAorICAgIHdyaXR0ZW4gPSAoMSwgMCkKKyAgICBmb3IgdG9rIGluIHRva2VuaXplLmdlbmVyYXRlX3Rva2VucyhyZWFkbGluZSk6CisgICAgICAgIHByZXZfdG9rX3R5cGUsIHByZXZfdG9rX3N0ciA9IHRva190eXBlLCB0b2tfc3RyCisgICAgICAgIHRva190eXBlLCB0b2tfc3RyLCAoc3Jvdywgc2NvbCksIChlcm93LCBlY29sKSwgbG9naWNhbF9saW5lbm8gPSB0b2sKKyAgICAgICAga2luZCA9ICcnCisgICAgICAgIGlmIHRva190eXBlID09IHRva2VuaXplLkNPTU1FTlQ6CisgICAgICAgICAgICBraW5kID0gJ2NvbW1lbnQnCisgICAgICAgIGVsaWYgdG9rX3R5cGUgPT0gdG9rZW5pemUuT1AgYW5kIHRva19zdHJbOjFdIG5vdCBpbiAne31bXSgpLC46O0AnOgorICAgICAgICAgICAga2luZCA9ICdvcGVyYXRvcicKKyAgICAgICAgZWxpZiB0b2tfdHlwZSA9PSB0b2tlbml6ZS5TVFJJTkc6CisgICAgICAgICAgICBraW5kID0gJ3N0cmluZycKKyAgICAgICAgICAgIGlmIHByZXZfdG9rX3R5cGUgPT0gdG9rZW5pemUuSU5ERU5UIG9yIHNjb2w9PTA6CisgICAgICAgICAgICAgICAga2luZCA9ICdkb2NzdHJpbmcnCisgICAgICAgIGVsaWYgdG9rX3R5cGUgPT0gdG9rZW5pemUuTkFNRToKKyAgICAgICAgICAgIGlmIHRva19zdHIgaW4gKCdkZWYnLCAnY2xhc3MnLCAnaW1wb3J0JywgJ2Zyb20nKToKKyAgICAgICAgICAgICAgICBraW5kID0gJ2RlZmluaXRpb24nCisgICAgICAgICAgICBlbGlmIHByZXZfdG9rX3N0ciBpbiAoJ2RlZicsICdjbGFzcycpOgorICAgICAgICAgICAgICAgIGtpbmQgPSAnZGVmbmFtZScKKyAgICAgICAgICAgIGVsaWYga2V5d29yZC5pc2tleXdvcmQodG9rX3N0cik6CisgICAgICAgICAgICAgICAga2luZCA9ICdrZXl3b3JkJworICAgICAgICAgICAgZWxpZiBpc19idWlsdGluKHRva19zdHIpIGFuZCBwcmV2X3Rva19zdHIgIT0gJy4nOgorICAgICAgICAgICAgICAgIGtpbmQgPSAnYnVpbHRpbicKKyAgICAgICAgaWYga2luZDoKKyAgICAgICAgICAgIHRleHQsIHdyaXR0ZW4gPSBjb21iaW5lX3JhbmdlKGxpbmVzLCB3cml0dGVuLCAoc3Jvdywgc2NvbCkpCisgICAgICAgICAgICB5aWVsZCAnJywgdGV4dAorICAgICAgICAgICAgdGV4dCwgd3JpdHRlbiA9IHRva19zdHIsIChlcm93LCBlY29sKQorICAgICAgICAgICAgeWllbGQga2luZCwgdGV4dAorICAgIGxpbmVfdXB0b190b2tlbiwgd3JpdHRlbiA9IGNvbWJpbmVfcmFuZ2UobGluZXMsIHdyaXR0ZW4sIChlcm93LCBlY29sKSkKKyAgICB5aWVsZCAnJywgbGluZV91cHRvX3Rva2VuCisKKyMjIyMgUmF3IE91dHB1dCAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgcmF3X2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpOgorICAgICdTdHJhaWdodCB0ZXh0IGRpc3BsYXkgb2YgdGV4dCBjbGFzc2lmaWNhdGlvbnMnCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3Iga2luZCwgdGV4dCBpbiBjbGFzc2lmaWVkX3RleHQ6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyUxNXM6ICAlclxuJyAlIChraW5kIG9yICdwbGFpbicsIHRleHQpKQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKworIyMjIyBBTlNJIE91dHB1dCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZmF1bHRfYW5zaSA9IHsKKyAgICAnY29tbWVudCc6ICgnXDAzM1swOzMxbScsICdcMDMzWzBtJyksCisgICAgJ3N0cmluZyc6ICgnXDAzM1swOzMybScsICdcMDMzWzBtJyksCisgICAgJ2RvY3N0cmluZyc6ICgnXDAzM1swOzMybScsICdcMDMzWzBtJyksCisgICAgJ2tleXdvcmQnOiAoJ1wwMzNbMDszM20nLCAnXDAzM1swbScpLAorICAgICdidWlsdGluJzogKCdcMDMzWzA7MzVtJywgJ1wwMzNbMG0nKSwKKyAgICAnZGVmaW5pdGlvbic6ICgnXDAzM1swOzMzbScsICdcMDMzWzBtJyksCisgICAgJ2RlZm5hbWUnOiAoJ1wwMzNbMDszNG0nLCAnXDAzM1swbScpLAorICAgICdvcGVyYXRvcic6ICgnXDAzM1swOzMzbScsICdcMDMzWzBtJyksCit9CisKK2RlZiBhbnNpX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQsIGNvbG9ycz1kZWZhdWx0X2Fuc2kpOgorICAgICdBZGQgc3ludGF4IGhpZ2hsaWdodGluZyB0byBzb3VyY2UgY29kZSB1c2luZyBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMnCisgICAgIyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUKKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBraW5kLCB0ZXh0IGluIGNsYXNzaWZpZWRfdGV4dDoKKyAgICAgICAgb3BlbmVyLCBjbG9zZXIgPSBjb2xvcnMuZ2V0KGtpbmQsICgnJywgJycpKQorICAgICAgICByZXN1bHQgKz0gW29wZW5lciwgdGV4dCwgY2xvc2VyXQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKworIyMjIyBIVE1MIE91dHB1dCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBodG1sX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQsb3BlbmVyPSc8cHJlIGNsYXNzPSJweXRob24iPlxuJywgY2xvc2VyPSc8L3ByZT5cbicpOgorICAgICdDb252ZXJ0IGNsYXNzaWZpZWQgdGV4dCB0byBhbiBIVE1MIGZyYWdtZW50JworICAgIHJlc3VsdCA9IFtvcGVuZXJdCisgICAgZm9yIGtpbmQsIHRleHQgaW4gY2xhc3NpZmllZF90ZXh0OgorICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPHNwYW4gY2xhc3M9IiVzIj4nICUga2luZCkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjZ2kuZXNjYXBlKHRleHQpKQorICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPC9zcGFuPicpCisgICAgcmVzdWx0LmFwcGVuZChjbG9zZXIpCisgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCitkZWZhdWx0X2NzcyA9IHsKKyAgICAnLmNvbW1lbnQnOiAne2NvbG9yOiBjcmltc29uO30nLAorICAgICcuc3RyaW5nJzogICd7Y29sb3I6IGZvcmVzdGdyZWVuO30nLAorICAgICcuZG9jc3RyaW5nJzogJ3tjb2xvcjogZm9yZXN0Z3JlZW47IGZvbnQtc3R5bGU6aXRhbGljO30nLAorICAgICcua2V5d29yZCc6ICd7Y29sb3I6IGRhcmtvcmFuZ2U7fScsCisgICAgJy5idWlsdGluJzogJ3tjb2xvcjogcHVycGxlO30nLAorICAgICcuZGVmaW5pdGlvbic6ICd7Y29sb3I6IGRhcmtvcmFuZ2U7IGZvbnQtd2VpZ2h0OmJvbGQ7fScsCisgICAgJy5kZWZuYW1lJzogJ3tjb2xvcjogYmx1ZTt9JywKKyAgICAnLm9wZXJhdG9yJzogJ3tjb2xvcjogYnJvd247fScsCit9CisKK2RlZmF1bHRfaHRtbCA9ICcnJ1wKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+IHt0aXRsZX0gPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cit7Y3NzfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgore2JvZHl9Cis8L2JvZHk+Cis8L2h0bWw+CisnJycKKworZGVmIGJ1aWxkX2h0bWxfcGFnZShjbGFzc2lmaWVkX3RleHQsIHRpdGxlPSdweXRob24nLAorICAgICAgICAgICAgICAgICAgICBjc3M9ZGVmYXVsdF9jc3MsIGh0bWw9ZGVmYXVsdF9odG1sKToKKyAgICAnQ3JlYXRlIGEgY29tcGxldGUgSFRNTCBwYWdlIHdpdGggY29sb3JpemVkIHNvdXJjZSBjb2RlJworICAgIGNzc19zdHIgPSAnXG4nLmpvaW4oWyclcyAlcycgJSBpdGVtIGZvciBpdGVtIGluIGNzcy5pdGVtcygpXSkKKyAgICByZXN1bHQgPSBodG1sX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpCisgICAgdGl0bGUgPSBjZ2kuZXNjYXBlKHRpdGxlKQorICAgIHJldHVybiBodG1sLmZvcm1hdCh0aXRsZT10aXRsZSwgY3NzPWNzc19zdHIsIGJvZHk9cmVzdWx0KQorCisjIyMjIExhVGVYIE91dHB1dCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmYXVsdF9sYXRleF9jb21tYW5kcyA9IHsKKyAgICAnY29tbWVudCc6ICd7XGNvbG9ye3JlZH0jMX0nLAorICAgICdzdHJpbmcnOiAne1xjb2xvcntGb3Jlc3RHcmVlbn0jMX0nLAorICAgICdkb2NzdHJpbmcnOiAne1xlbXBoe1xjb2xvcntGb3Jlc3RHcmVlbn0jMX19JywKKyAgICAna2V5d29yZCc6ICd7XGNvbG9ye29yYW5nZX0jMX0nLAorICAgICdidWlsdGluJzogJ3tcY29sb3J7cHVycGxlfSMxfScsCisgICAgJ2RlZmluaXRpb24nOiAne1xjb2xvcntvcmFuZ2V9IzF9JywKKyAgICAnZGVmbmFtZSc6ICd7XGNvbG9ye2JsdWV9IzF9JywKKyAgICAnb3BlcmF0b3InOiAne1xjb2xvcnticm93bn0jMX0nLAorfQorCitkZWZhdWx0X2xhdGV4X2RvY3VtZW50ID0gcicnJworXGRvY3VtZW50Y2xhc3N7YXJ0aWNsZX0KK1x1c2VwYWNrYWdle2FsbHR0fQorXHVzZXBhY2thZ2V7dXBxdW90ZX0KK1x1c2VwYWNrYWdle2NvbG9yfQorXHVzZXBhY2thZ2VbdXNlbmFtZXMsZHZpcHNuYW1lc117eGNvbG9yfQorXHVzZXBhY2thZ2VbY21de2Z1bGxwYWdlfQorJShtYWNyb3MpcworXGJlZ2lue2RvY3VtZW50fQorXGNlbnRlcntcTEFSR0V7JSh0aXRsZSlzfX0KK1xiZWdpbnthbGx0dH0KKyUoYm9keSlzCitcZW5ke2FsbHR0fQorXGVuZHtkb2N1bWVudH0KKycnJworCitkZWYgYWxsdHRfZXNjYXBlKHMpOgorICAgICdSZXBsYWNlIGJhY2tzbGFzaCBhbmQgYnJhY2VzIHdpdGggdGhlaXIgZXNjYXBlZCBlcXVpdmFsZW50cycKKyAgICB4bGF0ID0geyd7JzogcidceycsICd9JzogcidcfScsICdcXCc6IHInXHRleHRiYWNrc2xhc2h7fSd9CisgICAgcmV0dXJuIHJlLnN1YihyJ1tcXHt9XScsIGxhbWJkYSBtbzogeGxhdFttby5ncm91cCgpXSwgcykKKworZGVmIGxhdGV4X2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQsIHRpdGxlID0gJ3B5dGhvbicsCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzID0gZGVmYXVsdF9sYXRleF9jb21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQgPSBkZWZhdWx0X2xhdGV4X2RvY3VtZW50KToKKyAgICAnQ3JlYXRlIGEgY29tcGxldGUgTGFUZVggZG9jdW1lbnQgd2l0aCBjb2xvcml6ZWQgc291cmNlIGNvZGUnCisgICAgbWFjcm9zID0gJ1xuJy5qb2luKHInXG5ld2NvbW1hbmR7XHB5JXN9WzFdeyVzfScgJSBjIGZvciBjIGluIGNvbW1hbmRzLml0ZW1zKCkpCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3Iga2luZCwgdGV4dCBpbiBjbGFzc2lmaWVkX3RleHQ6CisgICAgICAgIGlmIGtpbmQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHInXHB5JXN7JyAlIGtpbmQpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoYWxsdHRfZXNjYXBlKHRleHQpKQorICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfScpCisgICAgcmV0dXJuIGRlZmF1bHRfbGF0ZXhfZG9jdW1lbnQgJSBkaWN0KHRpdGxlPXRpdGxlLCBtYWNyb3M9bWFjcm9zLCBib2R5PScnLmpvaW4ocmVzdWx0KSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBzeXMsIGFyZ3BhcnNlLCB3ZWJicm93c2VyLCBvcywgdGV4dHdyYXAKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAnQWRkIHN5bnRheCBoaWdobGlnaHRpbmcgdG8gUHl0aG9uIHNvdXJjZSBjb2RlJywKKyAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5SYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIsCisgICAgICAgICAgICBlcGlsb2cgPSB0ZXh0d3JhcC5kZWRlbnQoJycnCisgICAgICAgICAgICAgICAgZXhhbXBsZXM6CisKKyAgICAgICAgICAgICAgICAgICMgU2hvdyBzeW50YXggaGlnaGxpZ2h0ZWQgY29kZSBpbiB0aGUgdGVybWluYWwgd2luZG93CisgICAgICAgICAgICAgICAgICAkIC4vaGlnaGxpZ2h0LnB5IG15ZmlsZS5weQorCisgICAgICAgICAgICAgICAgICAjIENvbG9yaXplIG15ZmlsZS5weSBhbmQgZGlzcGxheSBpbiBhIGJyb3dzZXIKKyAgICAgICAgICAgICAgICAgICQgLi9oaWdobGlnaHQucHkgLWIgbXlmaWxlLnB5CisKKyAgICAgICAgICAgICAgICAgICMgQ3JlYXRlIGFuIEhUTUwgc2VjdGlvbiB0byBlbWJlZCBpbiBhbiBleGlzdGluZyB3ZWJwYWdlCisgICAgICAgICAgICAgICAgICAuL2hpZ2hsaWdodC5weSAtcyBteWZpbGUucHkKKworICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgYSBjb21wbGV0ZSBIVE1MIGZpbGUKKyAgICAgICAgICAgICAgICAgICQgLi9oaWdobGlnaHQucHkgLWMgbXlmaWxlLnB5ID4gbXlmaWxlLmh0bWwKKworICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgYSBQREYgdXNpbmcgTGFUZVgKKyAgICAgICAgICAgICAgICAgICQgLi9oaWdobGlnaHQucHkgLWwgbXlmaWxlLnB5IHwgcGRmbGF0ZXgKKworICAgICAgICAgICAgJycnKSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdzb3VyY2VmaWxlJywgbWV0YXZhciA9ICdTT1VSQ0VGSUxFJywKKyAgICAgICAgICAgIGhlbHAgPSAnZmlsZSBjb250YWluaW5nIFB5dGhvbiBzb3VyY2Vjb2RlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJyb3dzZXInLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ2xhdW5jaCBhIGJyb3dzZXIgdG8gc2hvdyByZXN1bHRzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsICctLWNvbXBsZXRlJywgYWN0aW9uID0gJ3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscCA9ICdidWlsZCBhIGNvbXBsZXRlIGh0bWwgd2VicGFnZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1sYXRleCcsIGFjdGlvbiA9ICdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHAgPSAnYnVpbGQgYSBMYVRlWCBkb2N1bWVudCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yYXcnLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ3JhdyBwYXJzZSBvZiBjYXRlZ29yaXplZCB0ZXh0JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLXNlY3Rpb24nLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ3Nob3cgYW4gSFRNTCBzZWN0aW9uIHJhdGhlciB0aGFuIGEgY29tcGxldGUgd2VicGFnZScpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGlmIGFyZ3Muc2VjdGlvbiBhbmQgKGFyZ3MuYnJvd3NlciBvciBhcmdzLmNvbXBsZXRlKToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdUaGUgLXMvLS1zZWN0aW9uIG9wdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIC1iLy0tYnJvd3NlciBvciAtYy8tLWNvbXBsZXRlIG9wdGlvbnMnKQorCisgICAgc291cmNlZmlsZSA9IGFyZ3Muc291cmNlZmlsZQorICAgIHdpdGggb3Blbihzb3VyY2VmaWxlKSBhcyBmOgorICAgICAgICBzb3VyY2UgPSBmLnJlYWQoKQorICAgIGNsYXNzaWZpZWRfdGV4dCA9IGFuYWx5emVfcHl0aG9uKHNvdXJjZSkKKworICAgIGlmIGFyZ3MucmF3OgorICAgICAgICBlbmNvZGVkID0gcmF3X2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpCisgICAgZWxpZiBhcmdzLmNvbXBsZXRlIG9yIGFyZ3MuYnJvd3NlcjoKKyAgICAgICAgZW5jb2RlZCA9IGJ1aWxkX2h0bWxfcGFnZShjbGFzc2lmaWVkX3RleHQsIHRpdGxlPXNvdXJjZWZpbGUpCisgICAgZWxpZiBhcmdzLnNlY3Rpb246CisgICAgICAgIGVuY29kZWQgPSBodG1sX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpCisgICAgZWxpZiBhcmdzLmxhdGV4OgorICAgICAgICBlbmNvZGVkID0gbGF0ZXhfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCwgdGl0bGU9c291cmNlZmlsZSkKKyAgICBlbHNlOgorICAgICAgICBlbmNvZGVkID0gYW5zaV9oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0KQorCisgICAgaWYgYXJncy5icm93c2VyOgorICAgICAgICBodG1sZmlsZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShzb3VyY2VmaWxlKSlbMF0gKyAnLmh0bWwnCisgICAgICAgIHdpdGggb3BlbihodG1sZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShlbmNvZGVkKQorICAgICAgICB3ZWJicm93c2VyLm9wZW4oJ2ZpbGU6Ly8nICsgb3MucGF0aC5hYnNwYXRoKGh0bWxmaWxlKSkKKyAgICBlbHNlOgorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGVuY29kZWQpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2ltcG9ydF9kaWFnbm9zdGljcy5weSBiL1Rvb2xzL3NjcmlwdHMvaW1wb3J0X2RpYWdub3N0aWNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM5MDcyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zY3JpcHRzL2ltcG9ydF9kaWFnbm9zdGljcy5weQpAQCAtMCwwICsxLDM3IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisiIiJNaXNjZWxsYW5lb3VzIGRpYWdub3N0aWNzIGZvciB0aGUgaW1wb3J0IHN5c3RlbSIiIgorCitpbXBvcnQgc3lzCitpbXBvcnQgYXJncGFyc2UKK2Zyb20gcHByaW50IGltcG9ydCBwcHJpbnQKKworZGVmIF9kdW1wX3N0YXRlKGFyZ3MpOgorICAgIHByaW50KHN5cy52ZXJzaW9uKQorICAgIGZvciBuYW1lIGluIGFyZ3MuYXR0cmlidXRlczoKKyAgICAgICAgcHJpbnQoInN5cy57fToiLmZvcm1hdChuYW1lKSkKKyAgICAgICAgcHByaW50KGdldGF0dHIoc3lzLCBuYW1lKSkKKworZGVmIF9hZGRfZHVtcF9hcmdzKGNtZCk6CisgICAgY21kLmFkZF9hcmd1bWVudCgiYXR0cmlidXRlcyIsIG1ldGF2YXI9IkFUVFIiLCBuYXJncz0iKyIsCisgICAgICAgICAgICAgICAgICAgICBoZWxwPSJzeXMgbW9kdWxlIGF0dHJpYnV0ZSB0byBkaXNwbGF5IikKKworQ09NTUFORFMgPSAoCisgICgiZHVtcCIsICJEdW1wIGltcG9ydCBzdGF0ZSIsIF9kdW1wX3N0YXRlLCBfYWRkX2R1bXBfYXJncyksCispCisKK2RlZiBfbWFrZV9wYXJzZXIoKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgc3ViID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKHRpdGxlPSJDb21tYW5kcyIpCisgICAgZm9yIG5hbWUsIGRlc2NyaXB0aW9uLCBpbXBsZW1lbnRhdGlvbiwgYWRkX2FyZ3MgaW4gQ09NTUFORFM6CisgICAgICAgIGNtZCA9IHN1Yi5hZGRfcGFyc2VyKG5hbWUsIGhlbHA9ZGVzY3JpcHRpb24pCisgICAgICAgIGNtZC5zZXRfZGVmYXVsdHMoY29tbWFuZD1pbXBsZW1lbnRhdGlvbikKKyAgICAgICAgYWRkX2FyZ3MoY21kKQorICAgIHJldHVybiBwYXJzZXIKKworZGVmIG1haW4oYXJncyk6CisgICAgcGFyc2VyID0gX21ha2VfcGFyc2VyKCkKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKKyAgICByZXR1cm4gYXJncy5jb21tYW5kKGFyZ3MpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJndlsxOl0pKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5IGIvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5CmluZGV4IDBlMThkZDkuLjUwM2M2N2EgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQorKysgYi9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKQEAgLTQ5LDI5ICs0OSwxNSBAQAogQHN0YXR1cygiR2V0dGluZyB0aGUgbGlzdCBvZiBmaWxlcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC9jaGFuZ2VkIiwKICAgICAgICAgaW5mbz1sYW1iZGEgeDogbl9maWxlc19zdHIobGVuKHgpKSkKIGRlZiBjaGFuZ2VkX2ZpbGVzKCk6Ci0gICAgIiIiR2V0IHRoZSBsaXN0IG9mIGNoYW5nZWQgb3IgYWRkZWQgZmlsZXMgZnJvbSB0aGUgVkNTLiIiIgotICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKFNSQ0RJUiwgJy5oZycpKToKLSAgICAgICAgdmNzID0gJ2hnJwotICAgICAgICBjbWQgPSAnaGcgc3RhdHVzIC0tYWRkZWQgLS1tb2RpZmllZCAtLW5vLXN0YXR1cycKLSAgICAgICAgaWYgbXFfcGF0Y2hlc19hcHBsaWVkKCk6Ci0gICAgICAgICAgICBjbWQgKz0gJyAtLXJldiBxcGFyZW50JwotICAgIGVsaWYgb3MucGF0aC5pc2RpcignLnN2bicpOgotICAgICAgICB2Y3MgPSAnc3ZuJwotICAgICAgICBjbWQgPSAnc3ZuIHN0YXR1cyAtLXF1aWV0IC0tbm9uLWludGVyYWN0aXZlIC0taWdub3JlLWV4dGVybmFscycKLSAgICBlbHNlOgorICAgICIiIkdldCB0aGUgbGlzdCBvZiBjaGFuZ2VkIG9yIGFkZGVkIGZpbGVzIGZyb20gTWVyY3VyaWFsLiIiIgorICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihTUkNESVIsICcuaGcnKSk6CiAgICAgICAgIHN5cy5leGl0KCduZWVkIGEgY2hlY2tvdXQgdG8gZ2V0IG1vZGlmaWVkIGZpbGVzJykKIAotICAgIHN0ID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQuc3BsaXQoKSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICB0cnk6Ci0gICAgICAgIHN0LndhaXQoKQotICAgICAgICBpZiB2Y3MgPT0gJ2hnJzoKLSAgICAgICAgICAgIHJldHVybiBbeC5kZWNvZGUoKS5yc3RyaXAoKSBmb3IgeCBpbiBzdC5zdGRvdXRdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvdXRwdXQgPSAoeC5kZWNvZGUoKS5yc3RyaXAoKS5yc3BsaXQoTm9uZSwgMSlbLTFdCi0gICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc3Quc3Rkb3V0IGlmIHhbMF0gaW4gYidBTScpCi0gICAgICAgIHJldHVybiBzZXQocGF0aCBmb3IgcGF0aCBpbiBvdXRwdXQgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCkpCi0gICAgZmluYWxseToKLSAgICAgICAgc3Quc3Rkb3V0LmNsb3NlKCkKKyAgICBjbWQgPSAnaGcgc3RhdHVzIC0tYWRkZWQgLS1tb2RpZmllZCAtLW5vLXN0YXR1cycKKyAgICBpZiBtcV9wYXRjaGVzX2FwcGxpZWQoKToKKyAgICAgICAgY21kICs9ICcgLS1yZXYgcXBhcmVudCcKKyAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oY21kLnNwbGl0KCksIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpIGFzIHN0OgorICAgICAgICByZXR1cm4gW3guZGVjb2RlKCkucnN0cmlwKCkgZm9yIHggaW4gc3Quc3Rkb3V0XQogCiAKIGRlZiByZXBvcnRfbW9kaWZpZWRfZmlsZXMoZmlsZV9wYXRocyk6CkBAIC04OSwxMCArNzUsOCBAQAogZGVmIG5vcm1hbGl6ZV93aGl0ZXNwYWNlKGZpbGVfcGF0aHMpOgogICAgICIiIk1ha2Ugc3VyZSB0aGF0IHRoZSB3aGl0ZXNwYWNlIGZvciAucHkgZmlsZXMgaGF2ZSBiZWVuIG5vcm1hbGl6ZWQuIiIiCiAgICAgcmVpbmRlbnQubWFrZWJhY2t1cCA9IEZhbHNlICAjIE5vIG5lZWQgdG8gY3JlYXRlIGJhY2t1cHMuCi0gICAgZml4ZWQgPSBbXQotICAgIGZvciBwYXRoIGluICh4IGZvciB4IGluIGZpbGVfcGF0aHMgaWYgeC5lbmRzd2l0aCgnLnB5JykpOgotICAgICAgICBpZiByZWluZGVudC5jaGVjayhvcy5wYXRoLmpvaW4oU1JDRElSLCBwYXRoKSk6Ci0gICAgICAgICAgICBmaXhlZC5hcHBlbmQocGF0aCkKKyAgICBmaXhlZCA9IFtwYXRoIGZvciBwYXRoIGluIGZpbGVfcGF0aHMgaWYgcGF0aC5lbmRzd2l0aCgnLnB5JykgYW5kCisgICAgICAgICAgICAgcmVpbmRlbnQuY2hlY2sob3MucGF0aC5qb2luKFNSQ0RJUiwgcGF0aCkpXQogICAgIHJldHVybiBmaXhlZAogCiAKQEAgLTE0OCw2ICsxMzIsMjEgQEAKICAgICAiIiJDaGVjayBpZiBNaXNjL05FV1MgaGFzIGJlZW4gY2hhbmdlZC4iIiIKICAgICByZXR1cm4gJ01pc2MvTkVXUycgaW4gZmlsZV9wYXRocwogCitAc3RhdHVzKCJjb25maWd1cmUgcmVnZW5lcmF0ZWQiLCBtb2RhbD1UcnVlLCBpbmZvPXN0cikKK2RlZiByZWdlbmVyYXRlZF9jb25maWd1cmUoZmlsZV9wYXRocyk6CisgICAgIiIiQ2hlY2sgaWYgY29uZmlndXJlIGhhcyBiZWVuIHJlZ2VuZXJhdGVkLiIiIgorICAgIGlmICdjb25maWd1cmUuYWMnIGluIGZpbGVfcGF0aHM6CisgICAgICAgIHJldHVybiAieWVzIiBpZiAnY29uZmlndXJlJyBpbiBmaWxlX3BhdGhzIGVsc2UgIm5vIgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAibm90IG5lZWRlZCIKKworQHN0YXR1cygicHljb25maWcuaC5pbiByZWdlbmVyYXRlZCIsIG1vZGFsPVRydWUsIGluZm89c3RyKQorZGVmIHJlZ2VuZXJhdGVkX3B5Y29uZmlnX2hfaW4oZmlsZV9wYXRocyk6CisgICAgIiIiQ2hlY2sgaWYgcHljb25maWcuaC5pbiBoYXMgYmVlbiByZWdlbmVyYXRlZC4iIiIKKyAgICBpZiAnY29uZmlndXJlLmFjJyBpbiBmaWxlX3BhdGhzOgorICAgICAgICByZXR1cm4gInllcyIgaWYgJ3B5Y29uZmlnLmguaW4nIGluIGZpbGVfcGF0aHMgZWxzZSAibm8iCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICJub3QgbmVlZGVkIgogCiBkZWYgbWFpbigpOgogICAgIGZpbGVfcGF0aHMgPSBjaGFuZ2VkX2ZpbGVzKCkKQEAgLTE2Nyw2ICsxNjYsMTAgQEAKICAgICBjcmVkaXRfZ2l2ZW4oc3BlY2lhbF9maWxlcykKICAgICAjIE1pc2MvTkVXUyBjaGFuZ2VkLgogICAgIHJlcG9ydGVkX25ld3Moc3BlY2lhbF9maWxlcykKKyAgICAjIFJlZ2VuZXJhdGVkIGNvbmZpZ3VyZSwgaWYgbmVjZXNzYXJ5LgorICAgIHJlZ2VuZXJhdGVkX2NvbmZpZ3VyZShmaWxlX3BhdGhzKQorICAgICMgUmVnZW5lcmF0ZWQgcHljb25maWcuaC5pbiwgaWYgbmVjZXNzYXJ5LgorICAgIHJlZ2VuZXJhdGVkX3B5Y29uZmlnX2hfaW4oZmlsZV9wYXRocykKIAogICAgICMgVGVzdCBzdWl0ZSBydW4gYW5kIHBhc3NlZC4KICAgICBpZiBweXRob25fZmlsZXMgb3IgY19maWxlczoKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcHlzb3VyY2UucHkgYi9Ub29scy9zY3JpcHRzL3B5c291cmNlLnB5CmluZGV4IDA0ODEzMWUuLjY5ZThlMGQgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcHlzb3VyY2UucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9weXNvdXJjZS5weQpAQCAtMjIsNyArMjIsNyBAQAogCiBpbXBvcnQgb3MsIHJlCiAKLWJpbmFyeV9yZSA9IHJlLmNvbXBpbGUoJ1tceDAwLVx4MDhceDBFLVx4MUZceDdGXScpCitiaW5hcnlfcmUgPSByZS5jb21waWxlKGJyJ1tceDAwLVx4MDhceDBFLVx4MUZceDdGXScpCiAKIGRlYnVnID0gRmFsc2UKIApAQCAtNDIsNyArNDIsNyBAQAogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gb3BlbihmdWxscGF0aCwgJ3JVJykKKyAgICAgICAgcmV0dXJuIG9wZW4oZnVsbHBhdGgsICJyYiIpCiAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOiAjIEFjY2VzcyBkZW5pZWQsIG9yIGEgc3BlY2lhbCBmaWxlIC0gaWdub3JlIGl0CiAgICAgICAgIHByaW50X2RlYnVnKCIlczogYWNjZXNzIGRlbmllZDogJXMiICUgKGZ1bGxwYXRoLCBlcnIpKQogICAgICAgICByZXR1cm4gTm9uZQpAQCAtNTUsOCArNTUsOCBAQAogICAgIGlmIGluZmlsZSBpcyBOb25lOgogICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGxpbmUgPSBpbmZpbGUucmVhZGxpbmUoKQotICAgIGluZmlsZS5jbG9zZSgpCisgICAgd2l0aCBpbmZpbGU6CisgICAgICAgIGxpbmUgPSBpbmZpbGUucmVhZGxpbmUoKQogCiAgICAgaWYgYmluYXJ5X3JlLnNlYXJjaChsaW5lKToKICAgICAgICAgIyBmaWxlIGFwcGVhcnMgdG8gYmUgYmluYXJ5CkBAIC02NSw3ICs2NSw3IEBACiAKICAgICBpZiBmdWxscGF0aC5lbmRzd2l0aCgiLnB5Iikgb3IgZnVsbHBhdGguZW5kc3dpdGgoIi5weXciKToKICAgICAgICAgcmV0dXJuIFRydWUKLSAgICBlbGlmICJweXRob24iIGluIGxpbmU6CisgICAgZWxpZiBiInB5dGhvbiIgaW4gbGluZToKICAgICAgICAgIyBkaXNndWlzZWQgUHl0aG9uIHNjcmlwdCAoZS5nLiBDR0kpCiAgICAgICAgIHJldHVybiBUcnVlCiAKQEAgLTc2LDggKzc2LDggQEAKICAgICBpZiBpbmZpbGUgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBjb2RlID0gaW5maWxlLnJlYWQoKQotICAgIGluZmlsZS5jbG9zZSgpCisgICAgd2l0aCBpbmZpbGU6CisgICAgICAgIGNvZGUgPSBpbmZpbGUucmVhZCgpCiAKICAgICB0cnk6CiAgICAgICAgIGNvbXBpbGUoY29kZSwgZnVsbHBhdGgsICJleGVjIikKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcHl2ZW52IGIvVG9vbHMvc2NyaXB0cy9weXZlbnYKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTc4ZDY5MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CkBAIC0wLDAgKzEsMTEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHN5cworICAgIHJjID0gMQorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHZlbnYKKyAgICAgICAgdmVudi5tYWluKCkKKyAgICAgICAgcmMgPSAwCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBwcmludCgnRXJyb3I6ICVzJyAlIGUsIGZpbGU9c3lzLnN0ZGVycikKKyAgICBzeXMuZXhpdChyYykKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgYi9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5CmluZGV4IGIxODk5M2IuLjRhOTE2ZWEgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weQpAQCAtOCw2ICs4LDggQEAKIC1yICgtLXJlY3Vyc2UpICBSZWN1cnNlLiAgIFNlYXJjaCBmb3IgYWxsIC5weSBmaWxlcyBpbiBzdWJkaXJlY3RvcmllcyB0b28uCiAtbiAoLS1ub2JhY2t1cCkgTm8gYmFja3VwLiBEb2VzIG5vdCBtYWtlIGEgIi5iYWsiIGZpbGUgYmVmb3JlIHJlaW5kZW50aW5nLgogLXYgKC0tdmVyYm9zZSkgIFZlcmJvc2UuICAgUHJpbnQgaW5mb3JtYXRpdmUgbXNnczsgZWxzZSBubyBvdXRwdXQuCisgICAoLS1uZXdsaW5lKSAgTmV3bGluZS4gICBTcGVjaWZ5IHRoZSBuZXdsaW5lIGNoYXJhY3RlciB0byB1c2UgKENSTEYsIExGKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgaXMgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsIGZpbGUuCiAtaCAoLS1oZWxwKSAgICAgSGVscC4gICAgICBQcmludCB0aGlzIHVzYWdlIGluZm9ybWF0aW9uIGFuZCBleGl0LgogCiBDaGFuZ2UgUHl0aG9uICgucHkpIGZpbGVzIHRvIHVzZSA0LXNwYWNlIGluZGVudHMgYW5kIG5vIGhhcmQgdGFiIGNoYXJhY3RlcnMuCkBAIC01MCw2ICs1Miw4IEBACiByZWN1cnNlID0gRmFsc2UKIGRyeXJ1biA9IEZhbHNlCiBtYWtlYmFja3VwID0gVHJ1ZQorc3BlY19uZXdsaW5lID0gTm9uZQorIiIiQSBzcGVjaWZpZWQgbmV3bGluZSB0byBiZSB1c2VkIGluIHRoZSBvdXRwdXQgKHNldCBieSAtLW5ld2xpbmUgb3B0aW9uKSIiIgogCiAKIGRlZiB1c2FnZShtc2c9Tm9uZSk6CkBAIC02MiwxMyArNjYsMTIgQEAKICAgICBzeXMuc3RkZXJyLndyaXRlKCIgIi5qb2luKHN0cihhcmcpIGZvciBhcmcgaW4gYXJncykpCiAgICAgc3lzLnN0ZGVyci53cml0ZSgiXG4iKQogCi0KIGRlZiBtYWluKCk6CiAgICAgaW1wb3J0IGdldG9wdAotICAgIGdsb2JhbCB2ZXJib3NlLCByZWN1cnNlLCBkcnlydW4sIG1ha2ViYWNrdXAKKyAgICBnbG9iYWwgdmVyYm9zZSwgcmVjdXJzZSwgZHJ5cnVuLCBtYWtlYmFja3VwLCBzcGVjX25ld2xpbmUKICAgICB0cnk6CiAgICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgImRybnZoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsiZHJ5cnVuIiwgInJlY3Vyc2UiLCAibm9iYWNrdXAiLCAidmVyYm9zZSIsICJoZWxwIl0pCisgICAgICAgICAgICBbImRyeXJ1biIsICJyZWN1cnNlIiwgIm5vYmFja3VwIiwgInZlcmJvc2UiLCAibmV3bGluZT0iLCAiaGVscCJdKQogICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgogICAgICAgICB1c2FnZShtc2cpCiAgICAgICAgIHJldHVybgpAQCAtODEsNiArODQsMTEgQEAKICAgICAgICAgICAgIG1ha2ViYWNrdXAgPSBGYWxzZQogICAgICAgICBlbGlmIG8gaW4gKCctdicsICctLXZlcmJvc2UnKToKICAgICAgICAgICAgIHZlcmJvc2UgPSBUcnVlCisgICAgICAgIGVsaWYgbyBpbiAoJy0tbmV3bGluZScsKToKKyAgICAgICAgICAgIGlmIG5vdCBhLnVwcGVyKCkgaW4gKCdDUkxGJywgJ0xGJyk6CisgICAgICAgICAgICAgICAgdXNhZ2UoKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgc3BlY19uZXdsaW5lID0gZGljdChDUkxGPSdcclxuJywgTEY9J1xuJylbYS51cHBlcigpXQogICAgICAgICBlbGlmIG8gaW4gKCctaCcsICctLWhlbHAnKToKICAgICAgICAgICAgIHVzYWdlKCkKICAgICAgICAgICAgIHJldHVybgpAQCAtMTE4LDkgKzEyNiw5IEBACiAgICAgICAgIGVycnByaW50KCIlczogSS9PIEVycm9yOiAlcyIgJSAoZmlsZSwgc3RyKG1zZykpKQogICAgICAgICByZXR1cm4KIAotICAgIG5ld2xpbmUgPSByLm5ld2xpbmVzCisgICAgbmV3bGluZSA9IHNwZWNfbmV3bGluZSBpZiBzcGVjX25ld2xpbmUgZWxzZSByLm5ld2xpbmVzCiAgICAgaWYgaXNpbnN0YW5jZShuZXdsaW5lLCB0dXBsZSk6Ci0gICAgICAgIGVycnByaW50KCIlczogbWl4ZWQgbmV3bGluZXMgZGV0ZWN0ZWQ7IGNhbm5vdCBwcm9jZXNzIGZpbGUiICUgZmlsZSkKKyAgICAgICAgZXJycHJpbnQoIiVzOiBtaXhlZCBuZXdsaW5lcyBkZXRlY3RlZDsgY2Fubm90IGNvbnRpbnVlIHdpdGhvdXQgLS1uZXdsaW5lIiAlIGZpbGUpCiAgICAgICAgIHJldHVybgogCiAgICAgaWYgci5ydW4oKToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5IGIvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTJhMjA1MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CkBAIC0wLDAgKzEsNTEgQEAKKyIiIlJ1biBQeXRob24ncyB0ZXN0IHN1aXRlIGluIGEgZmFzdCwgcmlnb3JvdXMgd2F5LgorCitUaGUgZGVmYXVsdHMgYXJlIG1lYW50IHRvIGJlIHJlYXNvbmFibHkgdGhvcm91Z2gsIHdoaWxlIHNraXBwaW5nIGNlcnRhaW4KK3Rlc3RzIHRoYXQgY2FuIGJlIHRpbWUtY29uc3VtaW5nIG9yIHJlc291cmNlLWludGVuc2l2ZSAoZS5nLiBsYXJnZWZpbGUpLAorb3IgZGlzdHJhY3RpbmcgKGUuZy4gYXVkaW8gYW5kIGd1aSkuIFRoZXNlIGRlZmF1bHRzIGNhbiBiZSBvdmVycmlkZGVuIGJ5CitzaW1wbHkgcGFzc2luZyBhIC11IG9wdGlvbiB0byB0aGlzIHNjcmlwdC4KKworIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRlc3Quc3VwcG9ydAordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCisKKworZGVmIGlzX211bHRpcHJvY2Vzc19mbGFnKGFyZyk6CisgICAgcmV0dXJuIGFyZy5zdGFydHN3aXRoKCctaicpIG9yIGFyZy5zdGFydHN3aXRoKCctLW11bHRpcHJvY2VzcycpCisKKworZGVmIGlzX3Jlc291cmNlX3VzZV9mbGFnKGFyZyk6CisgICAgcmV0dXJuIGFyZy5zdGFydHN3aXRoKCctdScpIG9yIGFyZy5zdGFydHN3aXRoKCctLXVzZScpCisKKworZGVmIG1haW4ocmVncnRlc3RfYXJncyk6CisgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICctVycsICdkZWZhdWx0JywgICAgICAjIFdhcm5pbmdzIHNldCB0byAnZGVmYXVsdCcKKyAgICAgICAgICAgICctYmInLCAgICAgICAgICAgICAgICAjIFdhcm5pbmdzIGFib3V0IGJ5dGVzL2J5dGVhcnJheQorICAgICAgICAgICAgJy1FJywgICAgICAgICAgICAgICAgICMgSWdub3JlIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgICAgICAgICAgXQorICAgICMgQWxsb3cgdXNlci1zcGVjaWZpZWQgaW50ZXJwcmV0ZXIgb3B0aW9ucyB0byBvdmVycmlkZSBvdXIgZGVmYXVsdHMuCisgICAgYXJncy5leHRlbmQodGVzdC5zdXBwb3J0LmFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpKQorICAgIGFyZ3MuZXh0ZW5kKFsnLW0nLCAndGVzdCcsICAgICMgUnVuIHRoZSB0ZXN0IHN1aXRlCisgICAgICAgICAgICAgICAgICctcicsICAgICAgICAgICAgIyBSYW5kb21pemUgdGVzdCBvcmRlcgorICAgICAgICAgICAgICAgICAnLXcnLCAgICAgICAgICAgICMgUmUtcnVuIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUKKyAgICAgICAgICAgICAgICAgXSkKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgYXJncy5hcHBlbmQoJy1uJykgICAgICAgICAjIFNpbGVuY2UgYWxlcnRzIHVuZGVyIFdpbmRvd3MKKyAgICBpZiB0aHJlYWRpbmcgYW5kIG5vdCBhbnkoaXNfbXVsdGlwcm9jZXNzX2ZsYWcoYXJnKSBmb3IgYXJnIGluIHJlZ3J0ZXN0X2FyZ3MpOgorICAgICAgICBhcmdzLmV4dGVuZChbJy1qJywgJzAnXSkgICMgVXNlIGFsbCBDUFUgY29yZXMKKyAgICBpZiBub3QgYW55KGlzX3Jlc291cmNlX3VzZV9mbGFnKGFyZykgZm9yIGFyZyBpbiByZWdydGVzdF9hcmdzKToKKyAgICAgICAgYXJncy5leHRlbmQoWyctdScsICdhbGwsLWxhcmdlZmlsZSwtYXVkaW8sLWd1aSddKQorICAgIGFyZ3MuZXh0ZW5kKHJlZ3J0ZXN0X2FyZ3MpCisgICAgcHJpbnQoJyAnLmpvaW4oYXJncykpCisgICAgb3MuZXhlY3Yoc3lzLmV4ZWN1dGFibGUsIGFyZ3MpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKHN5cy5hcmd2WzE6XSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NzbC9tYWtlX3NzbF9kYXRhLnB5IGIvVG9vbHMvc3NsL21ha2Vfc3NsX2RhdGEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAyNDRkMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NzbC9tYWtlX3NzbF9kYXRhLnB5CkBAIC0wLDAgKzEsNjggQEAKKyMhIC91c3IvYmluL2VudiBweXRob24zCisKKyIiIgorVGhpcyBzY3JpcHQgc2hvdWxkIGJlIGNhbGxlZCAqbWFudWFsbHkqIHdoZW4gd2Ugd2FudCB0byB1cGdyYWRlIFNTTEVycm9yCitgbGlicmFyeWAgYW5kIGByZWFzb25gIG1uZW1ub25pY3MgdG8gYSBtb3JlIHJlY2VudCBPcGVuU1NMIHZlcnNpb24uCisKK0l0IHRha2VzIHR3byBhcmd1bWVudHM6CistIHRoZSBwYXRoIHRvIHRoZSBPcGVuU1NMIGluY2x1ZGUgZmlsZXMnIGRpcmVjdG9yeQorICAoZS5nLiBvcGVuc3NsLTEuMC4xLWJldGEzL2luY2x1ZGUvb3BlbnNzbC8pCistIHRoZSBwYXRoIHRvIHRoZSBDIGZpbGUgdG8gYmUgZ2VuZXJhdGVkCisgIChwcm9iYWJseSBNb2R1bGVzL19zc2xfZGF0YS5oKQorIiIiCisKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworCitkZWYgcGFyc2VfZXJyb3JfY29kZXMoaF9maWxlLCBwcmVmaXgpOgorICAgIHBhdCA9IHJlLmNvbXBpbGUociIjZGVmaW5lXFcrKCVzKFtcd10rKSlcVysoXGQrKVxiIiAlIHJlLmVzY2FwZShwcmVmaXgpKQorICAgIGNvZGVzID0gW10KKyAgICB3aXRoIG9wZW4oaF9maWxlLCAiciIsIGVuY29kaW5nPSJsYXRpbjEiKSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgbWF0Y2ggPSBwYXQuc2VhcmNoKGxpbmUpCisgICAgICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgICAgICBjb2RlLCBuYW1lLCBudW0gPSBtYXRjaC5ncm91cHMoKQorICAgICAgICAgICAgICAgIG51bSA9IGludChudW0pCisgICAgICAgICAgICAgICAgY29kZXMuYXBwZW5kKChjb2RlLCBuYW1lLCBudW0pKQorICAgIHJldHVybiBjb2RlcworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIG9wZW5zc2xfaW5jID0gc3lzLmFyZ3ZbMV0KKyAgICBvdXRmaWxlID0gc3lzLmFyZ3ZbMl0KKyAgICB1c2Vfc3Rkb3V0ID0gb3V0ZmlsZSA9PSAnLScKKyAgICBmID0gc3lzLnN0ZG91dCBpZiB1c2Vfc3Rkb3V0IGVsc2Ugb3BlbihvdXRmaWxlLCAidyIpCisgICAgZXJyb3JfbGlicmFyaWVzID0gKAorICAgICAgICAjIChsaWJyYXJ5IGNvZGUsIG1uZW1vbmljLCBlcnJvciBwcmVmaXgsIGhlYWRlciBmaWxlKQorICAgICAgICAoJ0VSUl9MSUJfUEVNJywgJ1BFTScsICdQRU1fUl8nLCAncGVtLmgnKSwKKyAgICAgICAgKCdFUlJfTElCX1NTTCcsICdTU0wnLCAnU1NMX1JfJywgJ3NzbC5oJyksCisgICAgICAgICgnRVJSX0xJQl9YNTA5JywgJ1g1MDknLCAnWDUwOV9SXycsICd4NTA5LmgnKSwKKyAgICAgICAgKQorICAgIGRlZiB3KGwpOgorICAgICAgICBmLndyaXRlKGwgKyAiXG4iKQorICAgIHcoIi8qIEZpbGUgZ2VuZXJhdGVkIGJ5IFRvb2xzL3NzbC9tYWtlX3NzbF9kYXRhLnB5ICovIikKKyAgICB3KCIvKiBHZW5lcmF0ZWQgb24gJXMgKi8iICUgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuaXNvZm9ybWF0KCkpCisgICAgdygiIikKKworICAgIHcoInN0YXRpYyBzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSBsaWJyYXJ5X2NvZGVzW10gPSB7IikKKyAgICBmb3IgbGliY29kZSwgbW5lbW8sIF8sIF8gaW4gZXJyb3JfbGlicmFyaWVzOgorICAgICAgICB3KCcgICAgeyIlcyIsICVzfSwnICUgKG1uZW1vLCBsaWJjb2RlKSkKKyAgICB3KCcgICAgeyBOVUxMIH0nKQorICAgIHcoJ307JykKKyAgICB3KCIiKQorCisgICAgdygic3RhdGljIHN0cnVjdCBweV9zc2xfZXJyb3JfY29kZSBlcnJvcl9jb2Rlc1tdID0geyIpCisgICAgZm9yIGxpYmNvZGUsIF8sIHByZWZpeCwgaF9maWxlIGluIGVycm9yX2xpYnJhcmllczoKKyAgICAgICAgY29kZXMgPSBwYXJzZV9lcnJvcl9jb2Rlcyhvcy5wYXRoLmpvaW4ob3BlbnNzbF9pbmMsIGhfZmlsZSksIHByZWZpeCkKKyAgICAgICAgZm9yIGNvZGUsIG5hbWUsIG51bSBpbiBzb3J0ZWQoY29kZXMpOgorICAgICAgICAgICAgdygnICAjaWZkZWYgJXMnICUgKGNvZGUpKQorICAgICAgICAgICAgdygnICAgIHsiJXMiLCAlcywgJXN9LCcgJSAobmFtZSwgbGliY29kZSwgY29kZSkpCisgICAgICAgICAgICB3KCcgICNlbHNlJykKKyAgICAgICAgICAgIHcoJyAgICB7IiVzIiwgJXMsICVkfSwnICUgKG5hbWUsIGxpYmNvZGUsIG51bSkpCisgICAgICAgICAgICB3KCcgICNlbmRpZicpCisgICAgdygnICAgIHsgTlVMTCB9JykKKyAgICB3KCd9OycpCisgICAgaWYgbm90IHVzZV9zdGRvdXQ6CisgICAgICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc3RyaW5nYmVuY2gvUkVBRE1FIGIvVG9vbHMvc3RyaW5nYmVuY2gvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNzFmMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zdHJpbmdiZW5jaC9SRUFETUUKQEAgLTAsMCArMSw2OCBAQAorc3RyaW5nYmVuY2ggaXMgYSBzZXQgb2YgcGVyZm9ybWFuY2UgdGVzdHMgY29tcGFyaW5nIGJ5dGUgc3RyaW5nCitvcGVyYXRpb25zIHdpdGggdW5pY29kZSBvcGVyYXRpb25zLiAgVGhlIHR3byBzdHJpbmcgaW1wbGVtZW50YXRpb25zCithcmUgbG9vc2VseSBiYXNlZCBvbiBlYWNoIG90aGVyIGFuZCBzb21ldGltZXMgdGhlIGFsZ29yaXRobSBmb3Igb25lIGlzCitmYXN0ZXIgdGhhbiB0aGUgb3RoZXIuCisKK1RoZXNlIHRlc3Qgc2V0IHdhcyBzdGFydGVkIGF0IHRoZSBOZWVkIEZvciBTcGVlZCBzcHJpbnQgaW4gUmV5a2phdmlrCit0byBpZGVudGlmeSB3aGljaCBzdHJpbmcgbWV0aG9kcyBjb3VsZCBiZSBzcGVkIHVwIHF1aWNrbHkgYW5kIHRvCitpZGVudGlmeSBvYnZpb3VzIHBsYWNlcyBmb3IgaW1wcm92ZW1lbnQuCisKK0hlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIGJlbmNobWFyaworCisKK0BiZW5jaCgnIkFuZHJldyIuc3RhcnRzd2l0aCgiQSIpJywgJ3N0YXJ0c3dpdGggc2luZ2xlIGNoYXJhY3RlcicsIDEwMDApCitkZWYgc3RhcnRzd2l0aF9zaW5nbGUoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfc3RhcnRzd2l0aCA9IHMxLnN0YXJ0c3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3RhcnRzd2l0aChzMikKKworVGhlIGJlbmNoIGRlY29yYXRvciB0YWtlcyB0aHJlZSBwYXJhbWV0ZXJzLiAgVGhlIGZpcnN0IGlzIGEgc2hvcnQKK2Rlc2NyaXB0aW9uIG9mIGhvdyB0aGUgY29kZSB3b3Jrcy4gIEluIG1vc3QgY2FzZXMgdGhpcyBpcyBQeXRob24gY29kZQorc25pcHBldC4gIEl0IGlzIG5vdCB0aGUgY29kZSB3aGljaCBpcyBhY3R1YWxseSBydW4gYmVjYXVzZSB0aGUgcmVhbAorY29kZSBpcyBoYW5kLW9wdGltaXplZCB0byBmb2N1cyBvbiB0aGUgbWV0aG9kIGJlaW5nIHRlc3RlZC4KKworVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgYSBncm91cCB0aXRsZS4gIEFsbCBiZW5jaG1hcmtzIHdpdGggdGhlIHNhbWUKK2dyb3VwIHRpdGxlIGFyZSBsaXN0ZWQgdG9nZXRoZXIuICBUaGlzIGxldHMgeW91IGNvbXBhcmUgZGlmZmVyZW50CitpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgYWxnb3JpdGhtLCBzdWNoIGFzICJ0IGluIHMiCit2cy4gInMuZmluZCh0KSIuCisKK1RoZSBsYXN0IGlzIGEgY291bnQuICBFYWNoIGJlbmNobWFyayBsb29wcyBvdmVyIHRoZSBhbGdvcml0aG0gZWl0aGVyCisxMDAgb3IgMTAwMCB0aW1lcywgZGVwZW5kaW5nIG9uIHRoZSBhbGdvcml0aG0gcGVyZm9ybWFuY2UuICBUaGUgb3V0cHV0Cit0aW1lIGlzIHRoZSB0aW1lIHBlciBiZW5jaG1hcmsgY2FsbCBzbyB0aGUgcmVhZGVyIG5lZWRzIGEgd2F5IHRvIGtub3cKK2hvdyB0byBzY2FsZSB0aGUgcGVyZm9ybWFuY2UuCisKK1RoZXNlIHBhcmFtZXRlcnMgYmVjb21lIGZ1bmN0aW9uIGF0dHJpYnV0ZXMuCisKKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHRoZSBvdXRwdXQKKworCis9PT09PT09PT09IGNvdW50IG5ld2xpbmVzCiszOC41NCAgIDQxLjYwICAgOTIuNyAgICAuLi50ZXh0LndpdGguMjAwMC5uZXdsaW5lcy5jb3VudCgiXG4iKSAoKjEwMCkKKz09PT09PT09PT0gZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIKKzEuMTQgICAgMS4xOCAgICA5Ni44ICAgICgiQSIqMTAwMCkuZmluZCgiQSIpICgqMTAwMCkKKzAuNDQgICAgMC40MSAgICAxMDUuNiAgICJBIiBpbiAiQSIqMTAwMCAoKjEwMDApCisxLjE1ICAgIDEuMTcgICAgOTguMSAgICAoIkEiKjEwMDApLmluZGV4KCJBIikgKCoxMDAwKQorCitUaGUgZmlyc3QgY29sdW1uIGlzIHRoZSBydW4gdGltZSBpbiBtaWxsaXNlY29uZHMgZm9yIGJ5dGUgc3RyaW5ncy4KK1RoZSBzZWNvbmQgaXMgdGhlIHJ1biB0aW1lIGZvciB1bmljb2RlIHN0cmluZ3MuICBUaGUgdGhpcmQgaXMgYQorcGVyY2VudGFnZTsgYnl0ZSB0aW1lIC8gdW5pY29kZSB0aW1lLiAgSXQncyB0aGUgcGVyY2VudGFnZSBieSB3aGljaAordW5pY29kZSBpcyBmYXN0ZXIgdGhhbiBieXRlIHN0cmluZ3MuCisKK1RoZSBsYXN0IGNvbHVtbiBjb250YWlucyB0aGUgY29kZSBzbmlwcGV0IGFuZCB0aGUgcmVwZWF0IGNvdW50IGZvciB0aGUKK2ludGVybmFsIGJlbmNobWFyayBsb29wLgorCitUaGUgdGltZXMgYXJlIGNvbXB1dGVkIHdpdGggJ3RpbWVpdC5weScgd2hpY2ggcmVwZWF0cyB0aGUgdGVzdCBtb3JlCithbmQgbW9yZSB0aW1lcyB1bnRpbCB0aGUgdG90YWwgdGltZSB0YWtlcyBvdmVyIDAuMiBzZWNvbmRzLCByZXR1cm5pbmcKK3RoZSBiZXN0IHRpbWUgZm9yIGEgc2luZ2xlIGl0ZXJhdGlvbi4KKworVGhlIGZpbmFsIGxpbmUgb2YgdGhlIG91dHB1dCBpcyB0aGUgY3VtdWxhdGl2ZSB0aW1lIGZvciBieXRlIGFuZAordW5pY29kZSBzdHJpbmdzLCBhbmQgdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2Ugb2YgdW5pY29kZSByZWxhdGl2ZSB0bworYnl0ZXMuICBGb3IgZXhhbXBsZQorCis0MDc5LjgzIDU0MzIuMjUgNzUuMSAgICBUT1RBTAorCitIb3dldmVyLCB0aGlzIGhhcyBubyBtZWFuaW5nIGFzIGl0IGV2ZW5seSB3ZWlnaHRzIGV2ZXJ5IHRlc3QuCisKZGlmZiAtLWdpdCBhL1Rvb2xzL3N0cmluZ2JlbmNoL3N0cmluZ2JlbmNoLnB5IGIvVG9vbHMvc3RyaW5nYmVuY2gvc3RyaW5nYmVuY2gucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTBhMjFmYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3N0cmluZ2JlbmNoL3N0cmluZ2JlbmNoLnB5CkBAIC0wLDAgKzEsMTQ4MiBAQAorCisjIFZhcmlvdXMgbWljcm9iZW5jaG1hcmtzIGNvbXBhcmluZyB1bmljb2RlIGFuZCBieXRlIHN0cmluZyBwZXJmb3JtYW5jZQorIyBQbGVhc2Uga2VlcCB0aGlzIGZpbGUgYm90aCAyLnggYW5kIDMueCBjb21wYXRpYmxlIQorCitpbXBvcnQgdGltZWl0CitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgb3BlcmF0b3IKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgb3B0cGFyc2UKKworVkVSU0lPTiA9ICcyLjAnCisKK2RlZiBwKCphcmdzKToKKyAgICBzeXMuc3Rkb3V0LndyaXRlKCcgJy5qb2luKHN0cihzKSBmb3IgcyBpbiBhcmdzKSArICdcbicpCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKToKKyAgICBCWVRFUyA9IGJ5dGVzX2Zyb21fc3RyID0gbGFtYmRhIHg6IHguZW5jb2RlKCdhc2NpaScpCisgICAgVU5JQ09ERSA9IHVuaWNvZGVfZnJvbV9zdHIgPSBsYW1iZGEgeDogeAorZWxzZToKKyAgICBCWVRFUyA9IGJ5dGVzX2Zyb21fc3RyID0gbGFtYmRhIHg6IHgKKyAgICBVTklDT0RFID0gdW5pY29kZV9mcm9tX3N0ciA9IGxhbWJkYSB4OiB4LmRlY29kZSgnYXNjaWknKQorCitjbGFzcyBVbnN1cHBvcnRlZFR5cGUoVHlwZUVycm9yKToKKyAgICBwYXNzCisKKworcCgnc3RyaW5nYmVuY2ggdiVzJyAlIFZFUlNJT04pCitwKHN5cy52ZXJzaW9uKQorcChkYXRldGltZS5kYXRldGltZS5ub3coKSkKKworUkVQRUFUID0gMQorUkVQRUFUID0gMworI1JFUEVBVCA9IDcKKworaWYgX19uYW1lX18gIT0gIl9fbWFpbl9fIjoKKyAgICByYWlzZSBTeXN0ZW1FeGl0KCJNdXN0IHJ1biBhcyBtYWluIHByb2dyYW0iKQorCitwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQorcGFyc2VyLmFkZF9vcHRpb24oIi1SIiwgIi0tc2tpcC1yZSIsIGRlc3Q9InNraXBfcmUiLAorICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAgIGhlbHA9InNraXAgcmVndWxhciBleHByZXNzaW9uIHRlc3RzIikKK3BhcnNlci5hZGRfb3B0aW9uKCItOCIsICItLTgtYml0IiwgZGVzdD0iYnl0ZXNfb25seSIsCisgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgaGVscD0ib25seSBkbyA4LWJpdCBzdHJpbmcgYmVuY2htYXJrcyIpCitwYXJzZXIuYWRkX29wdGlvbigiLXUiLCAiLS11bmljb2RlIiwgZGVzdD0idW5pY29kZV9vbmx5IiwKKyAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICBoZWxwPSJvbmx5IGRvIFVuaWNvZGUgc3RyaW5nIGJlbmNobWFya3MiKQorCisKK19SQU5HRV8xMDAwID0gbGlzdChyYW5nZSgxMDAwKSkKK19SQU5HRV8xMDAgPSBsaXN0KHJhbmdlKDEwMCkpCitfUkFOR0VfMTAgPSBsaXN0KHJhbmdlKDEwKSkKKworZHVwcyA9IHt9CitkZWYgYmVuY2gocywgZ3JvdXAsIHJlcGVhdF9jb3VudCk6CisgICAgZGVmIGJsYWgoZik6CisgICAgICAgIGlmIGYuX19uYW1lX18gaW4gZHVwczoKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJNdWx0aXBsZSBmdW5jdGlvbnMgd2l0aCBzYW1lIG5hbWU6ICVyIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZi5fX25hbWVfXywpKQorICAgICAgICBkdXBzW2YuX19uYW1lX19dID0gMQorICAgICAgICBmLmNvbW1lbnQgPSBzCisgICAgICAgIGYuaXNfYmVuY2ggPSBUcnVlCisgICAgICAgIGYuZ3JvdXAgPSBncm91cAorICAgICAgICBmLnJlcGVhdF9jb3VudCA9IHJlcGVhdF9jb3VudAorICAgICAgICByZXR1cm4gZgorICAgIHJldHVybiBibGFoCisKK2RlZiB1c2VzX3JlKGYpOgorICAgIGYudXNlc19yZSA9IFRydWUKKworIyMjIyMjIyAnaW4nIGNvbXBhcmlzb25zCisKK0BiZW5jaCgnIkEiIGluICJBIioxMDAwJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBpbl90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczIgaW4gczEKKworQGJlbmNoKCciQiIgaW4gIkEiKjEwMDAnLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIGluX3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMiBpbiBzMQorCisKK0BiZW5jaCgnIkFCIiBpbiAiQUIiKjEwMDAnLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBpbl90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczIgaW4gczEKKworQGJlbmNoKCciQkMiIGluICJBQiIqMTAwMCcsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGluX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMyIGluIHMxCisKK0BiZW5jaCgnIkJDIiBpbiAoIkFCIiozMDArIkMiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgaW5fdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQyIpCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczIgaW4gczEKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAocysiRSIpIGluICgocysiRCIpKjMwMCtzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBpbl90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqMzAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMiBpbiBzMQorCisjIFRyeSB3aXRoIHJlZ2V4CitAdXNlc19yZQorQGJlbmNoKCdzPSJBQkMiKjMzOyByZS5jb21waWxlKHMrIkQiKS5zZWFyY2goKHMrIkQiKSozMDArcysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcmVfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjMwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgcGF0ID0gcmUuY29tcGlsZShzMikKKyAgICBzZWFyY2ggPSBwYXQuc2VhcmNoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgc2VhcmNoKHMxKQorCisKKyMjIyMgc2FtZSB0ZXN0cyBhcyAnaW4nIGJ1dCB1c2UgJ2ZpbmQnCisKK0BiZW5jaCgnKCJBIioxMDAwKS5maW5kKCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCcoIkEiKjEwMDApLmZpbmQoIkIiKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgZmluZF90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuZmluZCgiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5maW5kKCJCQyIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgZmluZF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuZmluZCgiQ0EiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyX2JpcyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCcoIkFCIiozMDArIkMiKS5maW5kKCJCQyIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkMiKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCcoIkFCIiozMDArIkNBIikuZmluZCgiQ0EiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgZmluZF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnNfYmlzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQ0EiKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoKHMrIkQiKSo1MDArcysiRSIpLmZpbmQocysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgZmluZF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqNTAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKChzKyJEIikqNTAwKyJFIitzKS5maW5kKCJFIitzKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIGZpbmRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzX2JpcyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSo1MDAgKyBlK20KKyAgICBzMiA9IGUrbQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfZmluZChzMikKKworCisjIyMjIFNhbWUgdGVzdHMgZm9yICdyZmluZCcKKworQGJlbmNoKCcoIkEiKjEwMDApLnJmaW5kKCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5yZmluZCgiQiIpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucmZpbmQoIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLnJmaW5kKCJCQyIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLnJmaW5kKCJDQSIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyX2JpcyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCcoIkMiKyJBQiIqMzAwKS5yZmluZCgiQ0EiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkMiICsgIkFCIiAqIDMwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgnKCJCQyIrIkFCIiozMDApLnJmaW5kKCJCQyIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnNfYmlzKFNUUik6CisgICAgczEgPSBTVFIoIkJDIiArICJBQiIgKiAzMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgiRSIrcysoIkQiK3MpKjUwMCkucmZpbmQoIkUiK3MpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcmZpbmRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IGUrbSArIChkK20pKjUwMAorICAgIHMyID0gZSttCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7IChzKyJFIisoIkQiK3MpKjUwMCkucmZpbmQocysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcmZpbmRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzX2JpcyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSBtK2UgKyAoZCttKSo1MDAKKyAgICBzMiA9IG0rZQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9yZmluZChzMikKKworCisjIyMjIE5vdyB3aXRoIGluZGV4LgorIyBTa2lwIHRoZSBvbmVzIHdoaWNoIGZhaWwgYmVjYXVzZSB0aGF0IHdvdWxkIGluY2x1ZGUgZXhjZXB0aW9uIG92ZXJoZWFkLgorCitAYmVuY2goJygiQSIqMTAwMCkuaW5kZXgoIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgaW5kZXhfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfaW5kZXggPSBzMS5pbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9pbmRleChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5pbmRleCgiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGluZGV4X3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX2luZGV4ID0gczEuaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfaW5kZXgoczIpCisKK0BiZW5jaCgnKCJBQiIqMzAwKyJDIikuaW5kZXgoIkJDIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGluZGV4X3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkMiKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfaW5kZXggPSBzMS5pbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9pbmRleChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoKHMrIkQiKSo1MDArcysiRSIpLmluZGV4KHMrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIGluZGV4X3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSo1MDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIHMxX2luZGV4ID0gczEuaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9pbmRleChzMikKKworCisjIyMjIFNhbWUgZm9yIHJpbmRleAorCitAYmVuY2goJygiQSIqMTAwMCkucmluZGV4KCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJpbmRleF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9yaW5kZXggPSBzMS5yaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmluZGV4KHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLnJpbmRleCgiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJpbmRleF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9yaW5kZXggPSBzMS5yaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmluZGV4KHMyKQorCitAYmVuY2goJygiQyIrIkFCIiozMDApLnJpbmRleCgiQ0EiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmluZGV4X3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJDIiArICJBQiIgKiAzMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9yaW5kZXggPSBzMS5yaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmluZGV4KHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgiRSIrcysoIkQiK3MpKjUwMCkucmluZGV4KCJFIitzKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJpbmRleF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gZSArIG0gKyAoZCttKSo1MDAKKyAgICBzMiA9IGUgKyBtCisgICAgczFfcmluZGV4ID0gczEucmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcmluZGV4KHMyKQorCisKKyMjIyMgU2FtZSBmb3IgcGFydGl0aW9uCisKK0BiZW5jaCgnKCJBIioxMDAwKS5wYXJ0aXRpb24oIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcGFydGl0aW9uX3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5wYXJ0aXRpb24oIkIiKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcGFydGl0aW9uX3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5wYXJ0aXRpb24oIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5wYXJ0aXRpb24oIkJDIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQUIiKjMwMCsiQyIpLnBhcnRpdGlvbigiQkMiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcGFydGl0aW9uX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkMiKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoKHMrIkQiKSo1MDArcysiRSIpLnBhcnRpdGlvbihzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjUwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCisKKyMjIyMgU2FtZSBmb3IgcnBhcnRpdGlvbgorCitAYmVuY2goJygiQSIqMTAwMCkucnBhcnRpdGlvbigiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5ycGFydGl0aW9uKCJCIiknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworCitAYmVuY2goJygiQUIiKjEwMDApLnJwYXJ0aXRpb24oIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucnBhcnRpdGlvbigiQkMiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQyIrIkFCIiozMDApLnJwYXJ0aXRpb24oIkNBIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkMiICsgIkFCIiAqIDMwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKCJFIitzKygiRCIrcykqNTAwKS5ycGFydGl0aW9uKCJFIitzKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IGUgKyBtICsgKGQrbSkqNTAwCisgICAgczIgPSBlICsgbQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworCisjIyMjIFNhbWUgZm9yIHNwbGl0KHMsIDEpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5zcGxpdCgiQSIsIDEpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBzcGxpdF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQSIqMTAwMCkuc3BsaXQoIkIiLCAxKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgc3BsaXRfdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworCitAYmVuY2goJygiQUIiKjEwMDApLnNwbGl0KCJBQiIsIDEpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgc3BsaXRfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkFCIioxMDAwKS5zcGxpdCgiQkMiLCAxKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHNwbGl0X3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkFCIiozMDArIkMiKS5zcGxpdCgiQkMiLCAxKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgc3BsaXRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQyIpCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgocysiRCIpKjUwMCtzKyJFIikuc3BsaXQocysiRSIsIDEpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgc3BsaXRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjUwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCisKKyMjIyMgU2FtZSBmb3IgcnNwbGl0KHMsIDEpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5yc3BsaXQoIkEiLCAxKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcnNwbGl0X3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5yc3BsaXQoIkIiLCAxKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcnNwbGl0X3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yc3BsaXQoIkFCIiwgMSknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByc3BsaXRfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yc3BsaXQoIkJDIiwgMSknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByc3BsaXRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQyIrIkFCIiozMDApLnJzcGxpdCgiQ0EiLCAxKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnNwbGl0X3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJDIiArICJBQiIgKiAzMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgiRSIrcysoIkQiK3MpKjUwMCkucnNwbGl0KCJFIitzLCAxKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJzcGxpdF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gZSArIG0gKyAoZCttKSo1MDAKKyAgICBzMiA9IGUgKyBtCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCisKKyMjIyMgQmVuY2htYXJrIHRoZSBvcGVyYXRvci1iYXNlZCBtZXRob2RzCisKK0BiZW5jaCgnIkEiKjEwJywgInJlcGVhdCAxIGNoYXJhY3RlciAxMCB0aW1lcyIsIDEwMDApCitkZWYgcmVwZWF0X3NpbmdsZV8xMF90aW1lcyhTVFIpOgorICAgIHMgPSBTVFIoIkEiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzICogMTAKKworQGJlbmNoKCciQSIqMTAwMCcsICJyZXBlYXQgMSBjaGFyYWN0ZXIgMTAwMCB0aW1lcyIsIDEwMDApCitkZWYgcmVwZWF0X3NpbmdsZV8xMDAwX3RpbWVzKFNUUik6CisgICAgcyA9IFNUUigiQSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMgKiAxMDAwCisKK0BiZW5jaCgnIkFCQ0RFIioxMCcsICJyZXBlYXQgNSBjaGFyYWN0ZXJzIDEwIHRpbWVzIiwgMTAwMCkKK2RlZiByZXBlYXRfNV8xMF90aW1lcyhTVFIpOgorICAgIHMgPSBTVFIoIkFCQ0RFIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcyAqIDEwCisKK0BiZW5jaCgnIkFCQ0RFIioxMDAwJywgInJlcGVhdCA1IGNoYXJhY3RlcnMgMTAwMCB0aW1lcyIsIDEwMDApCitkZWYgcmVwZWF0XzVfMTAwMF90aW1lcyhTVFIpOgorICAgIHMgPSBTVFIoIkFCQ0RFIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcyAqIDEwMDAKKworIyArIGZvciBjb25jYXQKKworQGJlbmNoKCciQW5kcmV3IisiRGFsa2UiJywgImNvbmNhdCB0d28gc3RyaW5ncyIsIDEwMDApCitkZWYgY29uY2F0X3R3b19zdHJpbmdzKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkRhbGtlIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczErczIKKworQGJlbmNoKCdzMStzMitzMytzNCsuLi4rczIwJywgImNvbmNhdCAyMCBzdHJpbmdzIG9mIHdvcmRzIGxlbmd0aCA0IHRvIDE1IiwKKyAgICAgICAxMDAwKQorZGVmIGNvbmNhdF9tYW55X3N0cmluZ3MoU1RSKToKKyAgICBzMT1TVFIoJ1RJWFNHWU5SRURDVkJISicpCisgICAgczI9U1RSKCdQVU1UTFhCWlZETycpCisgICAgczM9U1RSKCdGVlpOSicpCisgICAgczQ9U1RSKCdPR0RYVVcnKQorICAgIHM1PVNUUignV0VJTVJOQ09ZVkdIS0InKQorICAgIHM2PVNUUignRkNRVE5NWFBVWkgnKQorICAgIHM3PVNUUignVElDWkpZUkxCTlZVRUFLJykKKyAgICBzOD1TVFIoJ1JFWUInKQorICAgIHM5PVNUUignUFdVT1EnKQorICAgIHMxMD1TVFIoJ0VRSENNS0JTJykKKyAgICBzMTE9U1RSKCdBRVZERk9IJykKKyAgICBzMTI9U1RSKCdJRkhWRCcpCisgICAgczEzPVNUUignSkdUQ05MWFdPSFEnKQorICAgIHMxND1TVFIoJ0lUU0tFUFlMUk9aQVdYRicpCisgICAgczE1PVNUUignVEhFSycpCisgICAgczE2PVNUUignR0hQWkZCVVlDS01OSklUJykKKyAgICBzMTc9U1RSKCdKTVVaJykKKyAgICBzMTg9U1RSKCdXTFpRTVRCJykKKyAgICBzMTk9U1RSKCdLUEFEQ0JXJykKKyAgICBzMjA9U1RSKCdUTkpIWlFBR0JVJykKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgKHMxICsgczIrIHMzKyBzNCsgczUrIHM2KyBzNysgczgrIHM5K3MxMCsKKyAgICAgICAgIHMxMStzMTIrczEzK3MxNCtzMTUrczE2K3MxNytzMTgrczE5K3MyMCkKKworCisjIyMjIEJlbmNobWFyayBqb2luCisKK2RlZiBnZXRfYnl0ZXNfeWllbGRpbmdfc2VxKFNUUiwgYXJnKToKKyAgICBpZiBTVFIgaXMgQllURVMgYW5kIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKToKKyAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRUeXBlCisgICAgcmV0dXJuIFNUUihhcmcpCisKK0BiZW5jaCgnIkEiLmpvaW4oIiIpJywKKyAgICAgICAiam9pbiBlbXB0eSBzdHJpbmcsIHdpdGggMSBjaGFyYWN0ZXIgc2VwIiwgMTAwKQorZGVmIGpvaW5fZW1wdHlfc2luZ2xlKFNUUik6CisgICAgc2VwID0gU1RSKCJBIikKKyAgICBzMiA9IGdldF9ieXRlc195aWVsZGluZ19zZXEoU1RSLCAiIikKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkFCQ0RFIi5qb2luKCIiKScsCisgICAgICAgImpvaW4gZW1wdHkgc3RyaW5nLCB3aXRoIDUgY2hhcmFjdGVyIHNlcCIsIDEwMCkKK2RlZiBqb2luX2VtcHR5XzUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkFCQ0RFIikKKyAgICBzMiA9IGdldF9ieXRlc195aWVsZGluZ19zZXEoU1RSLCAiIikKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkEiLmpvaW4oIkFCQy4uWiIpJywKKyAgICAgICAiam9pbiBzdHJpbmcgd2l0aCAyNiBjaGFyYWN0ZXJzLCB3aXRoIDEgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl9hbHBoYWJldF9zaW5nbGUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkEiKQorICAgIHMyID0gZ2V0X2J5dGVzX3lpZWxkaW5nX3NlcShTVFIsICJBQkNERUZHSElKS0xNbk9QUVJTVFVWV1hZWiIpCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQUJDREUiLmpvaW4oIkFCQy4uWiIpJywKKyAgICAgICAiam9pbiBzdHJpbmcgd2l0aCAyNiBjaGFyYWN0ZXJzLCB3aXRoIDUgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl9hbHBoYWJldF81KFNUUik6CisgICAgc2VwID0gU1RSKCJBQkNERSIpCisgICAgczIgPSBnZXRfYnl0ZXNfeWllbGRpbmdfc2VxKFNUUiwgIkFCQ0RFRkdISUpLTE1uT1BRUlNUVVZXWFlaIikKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBIi5qb2luKGxpc3QoIkFCQy4uWiIpKScsCisgICAgICAgImpvaW4gbGlzdCBvZiAyNiBjaGFyYWN0ZXJzLCB3aXRoIDEgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl9hbHBoYWJldF9saXN0X3NpbmdsZShTVFIpOgorICAgIHNlcCA9IFNUUigiQSIpCisgICAgczIgPSBbU1RSKHgpIGZvciB4IGluICJBQkNERUZHSElKS0xNbk9QUVJTVFVWV1hZWiJdCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQUJDREUiLmpvaW4obGlzdCgiQUJDLi5aIikpJywKKyAgICAgICAiam9pbiBsaXN0IG9mIDI2IGNoYXJhY3RlcnMsIHdpdGggNSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luX2FscGhhYmV0X2xpc3RfZml2ZShTVFIpOgorICAgIHNlcCA9IFNUUigiQUJDREUiKQorICAgIHMyID0gW1NUUih4KSBmb3IgeCBpbiAiQUJDREVGR0hJSktMTW5PUFFSU1RVVldYWVoiXQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkEiLmpvaW4oWyJCb2IiXSoxMDApKScsCisgICAgICAgImpvaW4gbGlzdCBvZiAxMDAgd29yZHMsIHdpdGggMSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luXzEwMF93b3Jkc19zaW5nbGUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkEiKQorICAgIHMyID0gW1NUUigiQm9iIildKjEwMAorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkFCQ0RFIi5qb2luKFsiQm9iIl0qMTAwKSknLAorICAgICAgICJqb2luIGxpc3Qgb2YgMTAwIHdvcmRzLCB3aXRoIDUgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl8xMDBfd29yZHNfNShTVFIpOgorICAgIHNlcCA9IFNUUigiQUJDREUiKQorICAgIHMyID0gW1NUUigiQm9iIildKjEwMAorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKKyMjIyMgc3BsaXQgdGVzdHMKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikuc3BsaXQoKScsICJzcGxpdCB3aGl0ZXNwYWNlIChzbWFsbCkiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2Vfc3BsaXQoU1RSKToKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdCgpCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnJzcGxpdCgpJywgInNwbGl0IHdoaXRlc3BhY2UgKHNtYWxsKSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9yc3BsaXQoU1RSKToKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdCgpCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnNwbGl0KE5vbmUsIDEpJywKKyAgICAgICAic3BsaXQgMSB3aGl0ZXNwYWNlIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3NwbGl0XzEoU1RSKToKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBOID0gTm9uZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KE4sIDEpCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnJzcGxpdChOb25lLCAxKScsCisgICAgICAgInNwbGl0IDEgd2hpdGVzcGFjZSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9yc3BsaXRfMShTVFIpOgorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgTiA9IE5vbmUKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQoTiwgMSkKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikucGFydGl0aW9uKCIgIiknLAorICAgICAgICJzcGxpdCAxIHdoaXRlc3BhY2UiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2VfcGFydGl0aW9uKFNUUik6CisgICAgc2VwID0gU1RSKCIgIikKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19wYXJ0aXRpb24gPSBzLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3BhcnRpdGlvbihzZXApCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnJwYXJ0aXRpb24oIiAiKScsCisgICAgICAgInNwbGl0IDEgd2hpdGVzcGFjZSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9ycGFydGl0aW9uKFNUUik6CisgICAgc2VwID0gU1RSKCIgIikKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19ycGFydGl0aW9uID0gcy5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnBhcnRpdGlvbihzZXApCisKK2h1bWFuX3RleHQgPSAiIiJcCitQeXRob24gaXMgYSBkeW5hbWljIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZyBsYW5ndWFnZSB0aGF0IGNhbiBiZQordXNlZCBmb3IgbWFueSBraW5kcyBvZiBzb2Z0d2FyZSBkZXZlbG9wbWVudC4gSXQgb2ZmZXJzIHN0cm9uZyBzdXBwb3J0Citmb3IgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBsYW5ndWFnZXMgYW5kIHRvb2xzLCBjb21lcyB3aXRoIGV4dGVuc2l2ZQorc3RhbmRhcmQgbGlicmFyaWVzLCBhbmQgY2FuIGJlIGxlYXJuZWQgaW4gYSBmZXcgZGF5cy4gTWFueSBQeXRob24KK3Byb2dyYW1tZXJzIHJlcG9ydCBzdWJzdGFudGlhbCBwcm9kdWN0aXZpdHkgZ2FpbnMgYW5kIGZlZWwgdGhlIGxhbmd1YWdlCitlbmNvdXJhZ2VzIHRoZSBkZXZlbG9wbWVudCBvZiBoaWdoZXIgcXVhbGl0eSwgbW9yZSBtYWludGFpbmFibGUgY29kZS4KKworUHl0aG9uIHJ1bnMgb24gV2luZG93cywgTGludXgvVW5peCwgTWFjIE9TIFgsIE9TLzIsIEFtaWdhLCBQYWxtCitIYW5kaGVsZHMsIGFuZCBOb2tpYSBtb2JpbGUgcGhvbmVzLiBQeXRob24gaGFzIGFsc28gYmVlbiBwb3J0ZWQgdG8gdGhlCitKYXZhIGFuZCAuTkVUIHZpcnR1YWwgbWFjaGluZXMuCisKK1B5dGhvbiBpcyBkaXN0cmlidXRlZCB1bmRlciBhbiBPU0ktYXBwcm92ZWQgb3BlbiBzb3VyY2UgbGljZW5zZSB0aGF0CittYWtlcyBpdCBmcmVlIHRvIHVzZSwgZXZlbiBmb3IgY29tbWVyY2lhbCBwcm9kdWN0cy4KKyIiIioyNQoraHVtYW5fdGV4dF9ieXRlcyA9IGJ5dGVzX2Zyb21fc3RyKGh1bWFuX3RleHQpCitodW1hbl90ZXh0X3VuaWNvZGUgPSB1bmljb2RlX2Zyb21fc3RyKGh1bWFuX3RleHQpCitkZWYgX2dldF9odW1hbl90ZXh0KFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6CisgICAgICAgIHJldHVybiBodW1hbl90ZXh0X3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6CisgICAgICAgIHJldHVybiBodW1hbl90ZXh0X2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworQGJlbmNoKCdodW1hbl90ZXh0LnNwbGl0KCknLCAic3BsaXQgd2hpdGVzcGFjZSAoaHVnZSkiLCAxMCkKK2RlZiB3aGl0ZXNwYWNlX3NwbGl0X2h1Z2UoU1RSKToKKyAgICBzID0gX2dldF9odW1hbl90ZXh0KFNUUikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19zcGxpdCgpCisKK0BiZW5jaCgnaHVtYW5fdGV4dC5yc3BsaXQoKScsICJzcGxpdCB3aGl0ZXNwYWNlIChodWdlKSIsIDEwKQorZGVmIHdoaXRlc3BhY2VfcnNwbGl0X2h1Z2UoU1RSKToKKyAgICBzID0gX2dldF9odW1hbl90ZXh0KFNUUikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JzcGxpdCgpCisKKworCitAYmVuY2goJyJ0aGlzXFxuaXNcXG5hXFxudGVzdFxcbiIuc3BsaXQoIlxcbiIpJywgInNwbGl0IG5ld2xpbmVzIiwgMTAwMCkKK2RlZiBuZXdsaW5lc19zcGxpdChTVFIpOgorICAgIHMgPSBTVFIoInRoaXNcbmlzXG5hXG50ZXN0XG4iKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgbmwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdChubCkKKworCitAYmVuY2goJyJ0aGlzXFxuaXNcXG5hXFxudGVzdFxcbiIucnNwbGl0KCJcXG4iKScsICJzcGxpdCBuZXdsaW5lcyIsIDEwMDApCitkZWYgbmV3bGluZXNfcnNwbGl0KFNUUik6CisgICAgcyA9IFNUUigidGhpc1xuaXNcbmFcbnRlc3RcbiIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIG5sID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KG5sKQorCitAYmVuY2goJyJ0aGlzXFxuaXNcXG5hXFxudGVzdFxcbiIuc3BsaXRsaW5lcygpJywgInNwbGl0IG5ld2xpbmVzIiwgMTAwMCkKK2RlZiBuZXdsaW5lc19zcGxpdGxpbmVzKFNUUik6CisgICAgcyA9IFNUUigidGhpc1xuaXNcbmFcbnRlc3RcbiIpCisgICAgc19zcGxpdGxpbmVzID0gcy5zcGxpdGxpbmVzCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXRsaW5lcygpCisKKyMjIHNwbGl0IHRleHQgd2l0aCAyMDAwIG5ld2xpbmVzCisKK2RlZiBfbWFrZV8yMDAwX2xpbmVzKCk6CisgICAgaW1wb3J0IHJhbmRvbQorICAgIHIgPSByYW5kb20uUmFuZG9tKDEwMCkKKyAgICBjaGFycyA9IGxpc3QobWFwKGNociwgcmFuZ2UoMzIsIDEyOCkpKQorICAgIGkgPSAwCisgICAgd2hpbGUgaSA8IGxlbihjaGFycyk6CisgICAgICAgIGNoYXJzW2ldID0gIiAiCisgICAgICAgIGkgKz0gci5yYW5kcmFuZ2UoOSkKKyAgICBzID0gIiIuam9pbihjaGFycykKKyAgICBzID0gcyo0CisgICAgd29yZHMgPSBbXQorICAgIGZvciBpIGluIHJhbmdlKDIwMDApOgorICAgICAgICBzdGFydCA9IHIucmFuZHJhbmdlKDk2KQorICAgICAgICBuID0gci5yYW5kaW50KDUsIDY1KQorICAgICAgICB3b3Jkcy5hcHBlbmQoc1tzdGFydDpzdGFydCtuXSkKKyAgICByZXR1cm4gIlxuIi5qb2luKHdvcmRzKSsiXG4iCisKK190ZXh0X3dpdGhfMjAwMF9saW5lcyA9IF9tYWtlXzIwMDBfbGluZXMoKQorX3RleHRfd2l0aF8yMDAwX2xpbmVzX2J5dGVzID0gYnl0ZXNfZnJvbV9zdHIoX3RleHRfd2l0aF8yMDAwX2xpbmVzKQorX3RleHRfd2l0aF8yMDAwX2xpbmVzX3VuaWNvZGUgPSB1bmljb2RlX2Zyb21fc3RyKF90ZXh0X3dpdGhfMjAwMF9saW5lcykKK2RlZiBfZ2V0XzIwMDBfbGluZXMoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERToKKyAgICAgICAgcmV0dXJuIF90ZXh0X3dpdGhfMjAwMF9saW5lc191bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOgorICAgICAgICByZXR1cm4gX3RleHRfd2l0aF8yMDAwX2xpbmVzX2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworCitAYmVuY2goJyIuLi50ZXh0Li4uIi5zcGxpdCgiXFxuIiknLCAic3BsaXQgMjAwMCBuZXdsaW5lcyIsIDEwKQorZGVmIG5ld2xpbmVzX3NwbGl0XzIwMDAoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIG5sID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3NwbGl0KG5sKQorCitAYmVuY2goJyIuLi50ZXh0Li4uIi5yc3BsaXQoIlxcbiIpJywgInNwbGl0IDIwMDAgbmV3bGluZXMiLCAxMCkKK2RlZiBuZXdsaW5lc19yc3BsaXRfMjAwMChTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBubCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yc3BsaXQobmwpCisKK0BiZW5jaCgnIi4uLnRleHQuLi4iLnNwbGl0bGluZXMoKScsICJzcGxpdCAyMDAwIG5ld2xpbmVzIiwgMTApCitkZWYgbmV3bGluZXNfc3BsaXRsaW5lc18yMDAwKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgc19zcGxpdGxpbmVzID0gcy5zcGxpdGxpbmVzCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3NwbGl0bGluZXMoKQorCisKKyMjIHNwbGl0IHRleHQgb24gIi0tIiBjaGFyYWN0ZXJzCitAYmVuY2goCisgICAgJyJ0aGlzLS1pcy0tYS0tdGVzdC0tb2YtLXRoZS0tZW1lcmdlbmN5LS1icm9hZGNhc3QtLXN5c3RlbSIuc3BsaXQoIi0tIiknLAorICAgICJzcGxpdCBvbiBtdWx0aWNoYXJhY3RlciBzZXBhcmF0b3IgKHNtYWxsKSIsIDEwMDApCitkZWYgc3BsaXRfbXVsdGljaGFyX3NlcF9zbWFsbChTVFIpOgorICAgIHMgPSBTVFIoInRoaXMtLWlzLS1hLS10ZXN0LS1vZi0tdGhlLS1lbWVyZ2VuY3ktLWJyb2FkY2FzdC0tc3lzdGVtIikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIHBhdCA9IFNUUigiLS0iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KHBhdCkKK0BiZW5jaCgKKyAgICAnInRoaXMtLWlzLS1hLS10ZXN0LS1vZi0tdGhlLS1lbWVyZ2VuY3ktLWJyb2FkY2FzdC0tc3lzdGVtIi5yc3BsaXQoIi0tIiknLAorICAgICJzcGxpdCBvbiBtdWx0aWNoYXJhY3RlciBzZXBhcmF0b3IgKHNtYWxsKSIsIDEwMDApCitkZWYgcnNwbGl0X211bHRpY2hhcl9zZXBfc21hbGwoU1RSKToKKyAgICBzID0gU1RSKCJ0aGlzLS1pcy0tYS0tdGVzdC0tb2YtLXRoZS0tZW1lcmdlbmN5LS1icm9hZGNhc3QtLXN5c3RlbSIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIHBhdCA9IFNUUigiLS0iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdChwYXQpCisKKyMjIHNwbGl0IGRuYSB0ZXh0IG9uICJBQ1RBVCIgY2hhcmFjdGVycworQGJlbmNoKCdkbmEuc3BsaXQoIkFDVEFUIiknLAorICAgICAgICJzcGxpdCBvbiBtdWx0aWNoYXJhY3RlciBzZXBhcmF0b3IgKGRuYSkiLCAxMCkKK2RlZiBzcGxpdF9tdWx0aWNoYXJfc2VwX2RuYShTVFIpOgorICAgIHMgPSBfZ2V0X2RuYShTVFIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBwYXQgPSBTVFIoIkFDVEFUIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfc3BsaXQocGF0KQorCitAYmVuY2goJ2RuYS5yc3BsaXQoIkFDVEFUIiknLAorICAgICAgICJzcGxpdCBvbiBtdWx0aWNoYXJhY3RlciBzZXBhcmF0b3IgKGRuYSkiLCAxMCkKK2RlZiByc3BsaXRfbXVsdGljaGFyX3NlcF9kbmEoU1RSKToKKyAgICBzID0gX2dldF9kbmEoU1RSKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBwYXQgPSBTVFIoIkFDVEFUIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcnNwbGl0KHBhdCkKKworCisKKyMjIHNwbGl0IHdpdGggbGltaXRzCisKK0dGRjNfZXhhbXBsZSA9ICJcdCIuam9pbihbCisgICAgIkkiLCAiR2Vub21pY19jYW5vbmljYWwiLCAicmVnaW9uIiwgIjM1NzIwOCIsICIzOTYxODMiLCAiLiIsICIrIiwgIi4iLAorICAgICJJRD1TZXF1ZW5jZTpSMTE5O25vdGU9Q2xvbmUgUjExOSUzQiBHZW5iYW5rIEFGMDYzMDA3O05hbWU9UjExOSJdKQorCitAYmVuY2goJ0dGRjNfZXhhbXBsZS5zcGxpdCgiXFx0IiknLCAidGFiIHNwbGl0IiwgMTAwMCkKK2RlZiB0YWJfc3BsaXRfbm9fbGltaXQoU1RSKToKKyAgICBzZXAgPSBTVFIoIlx0IikKKyAgICBzID0gU1RSKEdGRjNfZXhhbXBsZSkKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KHNlcCkKKworQGJlbmNoKCdHRkYzX2V4YW1wbGUuc3BsaXQoIlxcdCIsIDgpJywgInRhYiBzcGxpdCIsIDEwMDApCitkZWYgdGFiX3NwbGl0X2xpbWl0KFNUUik6CisgICAgc2VwID0gU1RSKCJcdCIpCisgICAgcyA9IFNUUihHRkYzX2V4YW1wbGUpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdChzZXAsIDgpCisKK0BiZW5jaCgnR0ZGM19leGFtcGxlLnJzcGxpdCgiXFx0IiknLCAidGFiIHNwbGl0IiwgMTAwMCkKK2RlZiB0YWJfcnNwbGl0X25vX2xpbWl0KFNUUik6CisgICAgc2VwID0gU1RSKCJcdCIpCisgICAgcyA9IFNUUihHRkYzX2V4YW1wbGUpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdChzZXApCisKK0BiZW5jaCgnR0ZGM19leGFtcGxlLnJzcGxpdCgiXFx0IiwgOCknLCAidGFiIHNwbGl0IiwgMTAwMCkKK2RlZiB0YWJfcnNwbGl0X2xpbWl0KFNUUik6CisgICAgc2VwID0gU1RSKCJcdCIpCisgICAgcyA9IFNUUihHRkYzX2V4YW1wbGUpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdChzZXAsIDgpCisKKyMjIyMgQ291bnQgY2hhcmFjdGVycworCitAYmVuY2goJy4uLnRleHQud2l0aC4yMDAwLm5ld2xpbmVzLmNvdW50KCJcXG4iKScsCisgICAgICAgImNvdW50IG5ld2xpbmVzIiwgMTApCitkZWYgY291bnRfbmV3bGluZXMoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBzX2NvdW50ID0gcy5jb3VudAorICAgIG5sID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX2NvdW50KG5sKQorCisjIE9yY2hpZCBzZXF1ZW5jZXMgY29uY2F0ZW5hdGVkLCBmcm9tIEJpb3B5dGhvbgorX2RuYSA9ICIiIgorQ0dUQUFDQUFHR1RUVENDR1RBR0dUR0FBQ0NUR0NHR0FBR0dBVENBVFRHVFRHQUdBVENBQ0FUQUFUQUFUVEdBVENHR0dUVAorQUFUQ1RHR0FHR0FUQ1RHVFRUQUNUVFRHR1RDQUNDQ0FUR0FHQ0FUVFRHQ1RHVFRHQUFHVEdBQ0NUQUdBQVRUR0NDQVRDRworQUdDQ1RDQ1RUR0dHQUdDVFRUQ1RUR1RUR0dDR0FHQVRDVEFBQUNDQ1RUR0NDQ0dHQ0dDQUdUVFRUR0NUQ0NBQUdUQ0dUVAorVEdBQ0FDQVRBQVRUR0dUR0FBR0dHR0dUR0dDQVRDQ1RUQ0NDVEdBQ0NDVENDQ0NDQUFDVEFUVFRUVFRUQUFDQUFDVENUQworQUdDQUFDR0dBR0FDVENBR1RDVFRDR0dDQUFBVEdDR0FUQUFBVEdHVEdUR0FBVFRHQ0FHQUFUQ0NDR1RHQ0FDQ0FUQ0dBRworVENUVFRHQUFDR0NBQUdUVEdDR0NDQ0dBR0dDQ0FUQ0FHR0NDQUFHR0dDQUNHQ0NUR0NDVEdHR0NBVFRHQ0dBR1RDQVRBVAorQ1RDVENDQ1RUQUFDR0FHR0NUR1RDQ0FUQUNBVEFDVEdUVENBR0NDR0dUR0NHR0FUR1RHQUdUVFRHR0NDQ0NUVEdUVENUVAorVEdHVEFDR0dHR0dHVENUQUFHQUdDVEdDQVRHR0dDVFRUVEdBVEdHVENDVEFBQVRBQ0dHQ0FBR0FHR1RHR0FDR0FBQ1RBVAorR0NUQUNBQUNBQUFBVFRHVFRHVEdDQUdBR0dDQ0NDR0dHVFRHVENHVEFUVEFHQVRHR0dDQ0FDQ0dUQUFUQ1RHQUFHQUNDQworVFRUVEdBQUNDQ0NBVFRHR0FHR0NDQ0FUQ0FBQ0NDQVRHQVRDQUdUVEdBVEdHQ0NBVFRUR0dUVEdDR0FDQ0NDQUdHVENBRworR1RHQUdDQUFDQUdDVEdUQ0dUQUFDQUFHR1RUVENDR1RBR0dHVEdBQUNUR0NHR0FBR0dBVENBVFRHVFRHQUdBVENBQ0FUQQorQVRBQVRUR0FUQ0dBR1RUQUFUQ1RHR0FHR0FUQ1RHVFRUQUNUVEdHR1RDQUNDQ0FUR0dHQ0FUVFRHQ1RHVFRHQUFHVEdBQworQ1RBR0FUVFRHQ0NBVENHQUdDQ1RDQ1RUR0dHQUdDQVRDQ1RUR1RUR0dDR0FUQVRDVEFBQUNDQ1RDQUFUVFRUVENDQ0NDQQorQVRDQUFBVFRBQ0FDQUFBQVRUR0dUR0dBR0dHR0dUR0dDQVRUQ1RUQ0NDVFRBQ0NDVENDQ0NDQUFBVEFUVFRUVFRUQUFDQQorQUNUQ1RDQUdDQUFDR0dBVEFUQ1RDQUdDVENUVEdDQVRDR0FUR0FBR0FBQ0NDQUNDR0FBQVRHQ0dBVEFBQVRHR1RHVEdBQQorVFRHQ0FHQUFUQ0NDR1RHQUFDQ0FUQ0dBR1RDVFRUR0FBQ0dDQUFHVFRHQ0dDQ0NHQUdHQ0NBVENBR0dDQ0FBR0dHQ0FDRworQ0NUR0NDVEdHR0NBVFRHQ0dBR1RDQVRBVENUQ1RDQ0NUVEFBQ0dBR0dDVEdUQ0NBVEFDQVRBQ1RHVFRDQUdDQ0dHVEdDRworR0FUR1RHQUdUVFRHR0NDQ0NUVEdUVENUVFRHR1RBQ0dHR0dHR1RDVEFBR0FHQVRHQ0FUR0dHQ1RUVFRHQVRHR1RDQ1RBQQorQVRBQ0dHQ0FBR0FHR1RHR0FDR0FBQ1RBVEdDVEFDQUFDQUFBQVRUR1RUR1RHQ0FBQUdHQ0NDQ0dHR1RUR1RDR1RBVEFBRworQVRHR0dDQ0FDQ0dBVEFUQ1RHQUFHQUNDQ1RUVFRHR0FDQ0NDQVRUR0dBR0NDQ0FUQ0FBQ0NDQVRHVENBR1RUR0FUR0dDQworQVRUQ0dUQUFDQUFHR1RUVENDR1RBR0dUR0FBQ0NUR0NHR0FBR0dBVENBVFRHVFRHQUdBVENBQ0FUQUFUQUFUVEdBVENHQQorR1RUQUFUQ1RHR0FHR0FUQ1RHVFRUQUNUVEdHR1RDQUNDQ0FUR0dHQ0FUVFRHQ1RHVFRHQUFHVEdBQ0NUQUdBVFRUR0NDQQorVENHQUdDQ1RDQ1RUR0dHQUdDVFRUQ1RUR1RUR0dDR0FUQVRDVEFBQUNDQ1RUR0NDQ0dHQ0FHQUdUVFRUR0dHQUFUQ0NDRworVEdBQUNDQVRDR0FHVENUVFRHQUFDR0NBQUdUVEdDR0NDQ0dBR0dDQ0FUQ0FHR0NDQUFHR0dDQUNHQ0NUR0NDVEdHR0NBVAorVEdDR0FHVENBVEFUQ1RDVENDQ1RUQUFDR0FHR0NUR1RDQ0FUQUNBQ0FDQ1RHVFRDQUdDQ0dHVEdDR0dBVEdUR0FHVFRURworR0NDQ0NUVEdUVENUVFRHR1RBQ0dHR0dHR1RDVEFBR0FHQ1RHQ0FUR0dHQ1RUVFRHQVRHR1RDQ1RBQUFUQUNHR0NBQUdBRworR1RHR0FDR0FBQ1RBVEdDVEFDQUFDQUFBQVRUR1RUR1RHQ0FBQUdHQ0NDQ0dHR1RUR1RDR1RBVFRBR0FUR0dHQ0NBQ0NBVAorQUFUQ1RHQUFHQUNDQ1RUVFRHQUFDQ0NDQVRUR0dBR0dDQ0NBVENBQUNDQ0FUR0FUQ0FHVFRHQVRHR0NDQVRUVEdHVFRHQworR0FDQ0NBR1RDQUdHVEdBR0dHVEFHR1RHQUFDQ1RHQ0dHQUFHR0FUQ0FUVEdUVEdBR0FUQ0FDQVRBQVRBQVRUR0FUQ0dBRworVFRBQVRDVEdHQUdHQVRDVEdUVFRBQ1RUVEdHVENBQ0NDQVRHR0dDQVRUVEdDVEdUVEdBQUdUR0FDQ1RBR0FUVFRHQ0NBVAorQ0dBR0NDVENDVFRHR0dBR0NUVFRDVFRHVFRHR0NHQUdBVENUQUFBQ0NDVFRHQ0NDR0dDR0dBR1RUVEdHQ0dDQ0FBR1RDQQorVEFUR0FDQUNBVEFBVFRHR1RHQUFHR0dHR1RHR0NBVENDVEdDQ0NUR0FDQ0NUQ0NDQ0FBQVRUQVRUVFRUVFRBQUNBQUNUQworVENBR0NBQUNHR0FUQVRDVENHR0NUQ1RUR0NBVENHQVRHQUFHQUFDR0NBR0NHQUFBVEdDR0FUQUFBVEdHVEdUR0FBVFRHQworQUdBQVRDQ0NHVEdBQUNDQVRDR0FHVENUVFRHR0FBQ0dDQUFHVFRHQ0dDQ0NHQUdHQ0NBVENBR0dDQ0FBR0dHQ0FDR0NDVAorR0NDVEdHR0NBVFRHR0dBQVRDQVRBVENUQ1RDQ0NDVEFBQ0dBR0dDVEFUQ0NBQUFDQVRBQ1RHVFRDQVRDQ0dHVEdDR0dBVAorR1RHQUdUVFRHR0NDQ0NUVEdUVENUVFRHR1RBQ0NHR0dHR1RDVEFBR0FHQ1RHQ0FUR0dHQ0FUVFRHQVRHR1RDQ1RDQUFBQQorQ0dHQ0FBR0FHR1RHR0FDR0FBQ1RBVEdDQ0FDQUFDQUFBQVRUR1RUR1RDQ0NBQUdHQ0NDQ0dHR1RUR1RDR1RBVFRBR0FURworR0dDQ0FDQ0dUQUFDQ1RHQUFHQUNDQ1RUVFRHQUFDQ0NDQVRUR0dBR0dDQ0NBVENBQUNDQ0FUR0FUQ0FHVFRHQVRHQUNDQQorVFRUR1RUR0NHQUNDQ0NBR1RDQUdDVEdBR0NBQUNDQ0dDVEdBR1RHR0FBR0dUQ0FUVEdDQ0dBVEFUQ0FDQVRBQVRBQVRURworQVRDR0FHVFRBQVRDVEdHQUdHQVRDVEdUVFRBQ1RUR0dUQ0FDQ0NBVEdBR0NBVFRUR0NUR1RUR0FBR1RHQUNDVEFHQVRUVAorR0NDQVRDR0FHQ0NUQ0NUVEdHR0FHVFRUVENUVEdUVEdHQ0dBR0FUQ1RBQUFDQ0NUVEdDQ0NHR0NHR0FHVFRHVEdDR0NDQQorQUdUQ0FUQVRHQUNBQ0FUQUFUVEdHVEdBQUdHR0dHVEdHQ0FUQ0NUR0NDQ1RHQUNDQ1RDQ0NDQUFBVFRBVFRUVFRUVEFBQworQUFDVENUQ0FHQ0FBQ0dHQVRBVENUQ0dHQ1RDVFRHQ0FUQ0dBVEdBQUdBQUNHQ0FHQ0dBQUFUR0NHQVRBQUFUR0dUR1RHQQorQVRUR0NBR0FBVENDQ0dUR0FBQ0NBVENHQUdUQ1RUVEdBQUNHQ0FBR1RUR0NHQ0NDR0FHR0NDQVRDQUdHQ0NBQUdHR0NBQworR0NDVEdDQ1RHR0dDQVRUR0NHQUdUQ0FUQVRDVENUQ0NDVFRBQUNHQUdHQ1RHVENDQVRBQ0FUQUNUR1RUQ0FUQ0NHR1RHQworR0dBVEdUR0FHVFRUR0dDQ0NDVFRHVFRDVFRUR0dUQUNHR0dHR0dUQ1RBQUdBR0NUR0NBVEdHR0NBVFRUR0FUR0dUQ0NUQworQUFBQUNHR0NBQUdBR0dUR0dBQ0dBQUNUQVRHQ1RBQ0FBQ0NBQUFUVEdUVEdUQ0NDQUFHR0NDQ0NHR0dUVEdUQ0dUQVRUQQorR0FUR0dHQ0NBQ0NHVEFBQ0NUR0FBR0FDQ0NUVFRUR0FBQ0NDQ0FUVEdHQUdHQ0NDQVRDQUFDQ0NBVEdBVENBR1RUR0FURworQUNDQVRHVEdUVEdDR0FDQ0NDQUdUQ0FHQ1RHQUdDQUFDR0NHQ1RHQUdDR1RBQUNBQUdHVFRUQ0NHVEFHR1RHR0FDQ1RDQworR0dHQUdHQVRDQVRUR1RUR0FHQVRDQUNBVEFBVEFBVFRHQVRDR0FHR1RBQVRDVEdHQUdHQVRDVEdDQVRBVFRUVEdHVENBQworIiIiCitfZG5hID0gIiIuam9pbihfZG5hLnNwbGl0bGluZXMoKSkKK19kbmEgPSBfZG5hICogMjUKK19kbmFfYnl0ZXMgPSBieXRlc19mcm9tX3N0cihfZG5hKQorX2RuYV91bmljb2RlID0gdW5pY29kZV9mcm9tX3N0cihfZG5hKQorCitkZWYgX2dldF9kbmEoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERToKKyAgICAgICAgcmV0dXJuIF9kbmFfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzoKKyAgICAgICAgcmV0dXJuIF9kbmFfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCitAYmVuY2goJ2RuYS5jb3VudCgiQUFDVCIpJywgImNvdW50IEFBQ1Qgc3Vic3RyaW5ncyBpbiBETkEgZXhhbXBsZSIsIDEwKQorZGVmIGNvdW50X2FhY3QoU1RSKToKKyAgICBzZXEgPSBfZ2V0X2RuYShTVFIpCisgICAgc2VxX2NvdW50ID0gc2VxLmNvdW50CisgICAgbmVlZGxlID0gU1RSKCJBQUNUIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNlcV9jb3VudChuZWVkbGUpCisKKyMjIyMjIHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoCisKK0BiZW5jaCgnIkFuZHJldyIuc3RhcnRzd2l0aCgiQSIpJywgJ3N0YXJ0c3dpdGggc2luZ2xlIGNoYXJhY3RlcicsIDEwMDApCitkZWYgc3RhcnRzd2l0aF9zaW5nbGUoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfc3RhcnRzd2l0aCA9IHMxLnN0YXJ0c3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3RhcnRzd2l0aChzMikKKworQGJlbmNoKCciQW5kcmV3Ii5zdGFydHN3aXRoKCJBbmRyZXciKScsICdzdGFydHN3aXRoIG11bHRpcGxlIGNoYXJhY3RlcnMnLAorICAgICAgIDEwMDApCitkZWYgc3RhcnRzd2l0aF9tdWx0aXBsZShTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBbmRyZXciKQorICAgIHMxX3N0YXJ0c3dpdGggPSBzMS5zdGFydHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3N0YXJ0c3dpdGgoczIpCisKK0BiZW5jaCgnIkFuZHJldyIuc3RhcnRzd2l0aCgiQW5kZXJzIiknLAorICAgICAgICdzdGFydHN3aXRoIG11bHRpcGxlIGNoYXJhY3RlcnMgLSBub3QhJywgMTAwMCkKK2RlZiBzdGFydHN3aXRoX211bHRpcGxlX25vdChTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBbmRlcnMiKQorICAgIHMxX3N0YXJ0c3dpdGggPSBzMS5zdGFydHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3N0YXJ0c3dpdGgoczIpCisKKworIyBlbmRzd2l0aAorCitAYmVuY2goJyJBbmRyZXciLmVuZHN3aXRoKCJ3IiknLCAnZW5kc3dpdGggc2luZ2xlIGNoYXJhY3RlcicsIDEwMDApCitkZWYgZW5kc3dpdGhfc2luZ2xlKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoInciKQorICAgIHMxX2VuZHN3aXRoID0gczEuZW5kc3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZW5kc3dpdGgoczIpCisKK0BiZW5jaCgnIkFuZHJldyIuZW5kc3dpdGgoIkFuZHJldyIpJywgJ2VuZHN3aXRoIG11bHRpcGxlIGNoYXJhY3RlcnMnLCAxMDAwKQorZGVmIGVuZHN3aXRoX211bHRpcGxlKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkFuZHJldyIpCisgICAgczFfZW5kc3dpdGggPSBzMS5lbmRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9lbmRzd2l0aChzMikKKworQGJlbmNoKCciQW5kcmV3Ii5lbmRzd2l0aCgiQW5kZXJzIiknLAorICAgICAgICdlbmRzd2l0aCBtdWx0aXBsZSBjaGFyYWN0ZXJzIC0gbm90IScsIDEwMDApCitkZWYgZW5kc3dpdGhfbXVsdGlwbGVfbm90KFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkFuZGVycyIpCisgICAgczFfZW5kc3dpdGggPSBzMS5lbmRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9lbmRzd2l0aChzMikKKworIyMjIyBTdHJpcAorCitAYmVuY2goJyJIZWxsbyFcXG4iLnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9zdHJpcF9yaWdodChTVFIpOgorICAgIHMgPSBTVFIoIkhlbGxvIVxuIikKKyAgICBzX3N0cmlwID0gcy5zdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3N0cmlwKCkKKworQGJlbmNoKCciSGVsbG8hXFxuIi5yc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX3JzdHJpcChTVFIpOgorICAgIHMgPSBTVFIoIkhlbGxvIVxuIikKKyAgICBzX3JzdHJpcCA9IHMucnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnN0cmlwKCkKKworQGJlbmNoKCciXFxuSGVsbG8hIi5zdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfc3RyaXBfbGVmdChTVFIpOgorICAgIHMgPSBTVFIoIlxuSGVsbG8hIikKKyAgICBzX3N0cmlwID0gcy5zdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3N0cmlwKCkKKworQGJlbmNoKCciXFxuSGVsbG8hXFxuIi5zdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfc3RyaXBfYm90aChTVFIpOgorICAgIHMgPSBTVFIoIlxuSGVsbG8hXG4iKQorICAgIHNfc3RyaXAgPSBzLnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3RyaXAoKQorCitAYmVuY2goJyJcXG5IZWxsbyEiLnJzdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfbHN0cmlwKFNUUik6CisgICAgcyA9IFNUUigiXG5IZWxsbyEiKQorICAgIHNfbHN0cmlwID0gcy5sc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19sc3RyaXAoKQorCitAYmVuY2goJ3M9IkhlbGxvIVxcbiI7IHNbOi0xXSBpZiBzWy0xXT09IlxcbiIgZWxzZSBzJywKKyAgICAgICAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9pZl9lbHNlKFNUUik6CisgICAgcyA9IFNUUigiSGVsbG8hXG4iKQorICAgIE5MID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNbOi0xXSBpZiAoc1stMV0gPT0gTkwpIGVsc2UgcworCisKKyMgU3RyaXAgbXVsdGlwbGUgc3BhY2VzIG9yIHRhYnMKKworQGJlbmNoKCciSGVsbG9cXHQgICBcXHQiLnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgc3BhY2VzIGFuZCB0YWJzJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9zcGFjZV9zdHJpcChTVFIpOgorICAgIHMgPSBTVFIoIkhlbGxvXHQgICBcdCEiKQorICAgIHNfc3RyaXAgPSBzLnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3RyaXAoKQorCitAYmVuY2goJyJIZWxsb1xcdCAgIFxcdCIucnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgc3BhY2VzIGFuZCB0YWJzJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9zcGFjZV9yc3RyaXAoU1RSKToKKyAgICBzID0gU1RSKCJIZWxsbyFcdCAgIFx0IikKKyAgICBzX3JzdHJpcCA9IHMucnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnN0cmlwKCkKKworQGJlbmNoKCciXFx0ICAgXFx0SGVsbG8iLnJzdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIHNwYWNlcyBhbmQgdGFicycsIDEwMDApCitkZWYgdGVybWluYWxfc3BhY2VfbHN0cmlwKFNUUik6CisgICAgcyA9IFNUUigiXHQgICBcdEhlbGxvISIpCisgICAgc19sc3RyaXAgPSBzLmxzdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX2xzdHJpcCgpCisKKworIyMjIyByZXBsYWNlCitAYmVuY2goJyJUaGlzIGlzIGEgdGVzdCIucmVwbGFjZSgiICIsICJcXHQiKScsICdyZXBsYWNlIHNpbmdsZSBjaGFyYWN0ZXInLAorICAgICAgIDEwMDApCitkZWYgcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgcyA9IFNUUigiVGhpcyBpcyBhIHRlc3QhIikKKyAgICBmcm9tX3N0ciA9IFNUUigiICIpCisgICAgdG9fc3RyID0gU1RSKCJcdCIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyKQorCitAdXNlc19yZQorQGJlbmNoKCdyZS5zdWIoIiAiLCAiXFx0IiwgIlRoaXMgaXMgYSB0ZXN0IicsICdyZXBsYWNlIHNpbmdsZSBjaGFyYWN0ZXInLAorICAgICAgIDEwMDApCitkZWYgcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX3JlKFNUUik6CisgICAgcyA9IFNUUigiVGhpcyBpcyBhIHRlc3QhIikKKyAgICBwYXQgPSByZS5jb21waWxlKFNUUigiICIpKQorICAgIHRvX3N0ciA9IFNUUigiXHQiKQorICAgIHBhdF9zdWIgPSBwYXQuc3ViCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHBhdF9zdWIodG9fc3RyLCBzKQorCitAYmVuY2goJyIuLi50ZXh0LndpdGguMjAwMC5saW5lcy4uLnJlcGxhY2UoIlxcbiIsICIgIiknLAorICAgICAgICdyZXBsYWNlIHNpbmdsZSBjaGFyYWN0ZXIsIGJpZyBzdHJpbmcnLCAxMCkKK2RlZiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfYmlnKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgZnJvbV9zdHIgPSBTVFIoIlxuIikKKyAgICB0b19zdHIgPSBTVFIoIiAiKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIpCisKK0B1c2VzX3JlCitAYmVuY2goJ3JlLnN1YigiXFxuIiwgIiAiLCAiLi4udGV4dC53aXRoLjIwMDAubGluZXMuLi4iKScsCisgICAgICAgJ3JlcGxhY2Ugc2luZ2xlIGNoYXJhY3RlciwgYmlnIHN0cmluZycsIDEwKQorZGVmIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9iaWdfcmUoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBwYXQgPSByZS5jb21waWxlKFNUUigiXG4iKSkKKyAgICB0b19zdHIgPSBTVFIoIiAiKQorICAgIHBhdF9zdWIgPSBwYXQuc3ViCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBwYXRfc3ViKHRvX3N0ciwgcykKKworCitAYmVuY2goJ2RuYS5yZXBsYWNlKCJBVEMiLCAiQVRUIiknLAorICAgICAgICdyZXBsYWNlIG11bHRpcGxlIGNoYXJhY3RlcnMsIGRuYScsIDEwKQorZGVmIHJlcGxhY2VfbXVsdGlwbGVfY2hhcmFjdGVyc19kbmEoU1RSKToKKyAgICBzZXEgPSBfZ2V0X2RuYShTVFIpCisgICAgZnJvbV9zdHIgPSBTVFIoIkFUQyIpCisgICAgdG9fc3RyID0gU1RSKCJBVFQiKQorICAgIHNlcV9yZXBsYWNlID0gc2VxLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNlcV9yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIpCisKKyMgVGhpcyBpbmNyZWFzZXMgdGhlIGNoYXJhY3RlciBjb3VudAorQGJlbmNoKCciLi4udGV4dC53aXRoLjIwMDAubmV3bGluZXMuLi5yZXBsYWNlKCJcXG4iLCAiXFxyXFxuIiknLAorICAgICAgICdyZXBsYWNlIGFuZCBleHBhbmQgbXVsdGlwbGUgY2hhcmFjdGVycywgYmlnIHN0cmluZycsIDEwKQorZGVmIHJlcGxhY2VfbXVsdGlwbGVfY2hhcmFjdGVyX2JpZyhTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIGZyb21fc3RyID0gU1RSKCJcbiIpCisgICAgdG9fc3RyID0gU1RSKCJcclxuIikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyKQorCisKKyMgVGhpcyBkZWNyZWFzZXMgdGhlIGNoYXJhY3RlciBjb3VudAorQGJlbmNoKCciV2hlbiBzaGFsbCB3ZSB0aHJlZSBtZWV0IGFnYWluPyIucmVwbGFjZSgiZWUiLCAiIiknLAorICAgICAgICdyZXBsYWNlL3JlbW92ZSBtdWx0aXBsZSBjaGFyYWN0ZXJzJywgMTAwMCkKK2RlZiByZXBsYWNlX211bHRpcGxlX2NoYXJhY3Rlcl9yZW1vdmUoU1RSKToKKyAgICBzID0gU1RSKCJXaGVuIHNoYWxsIHdlIHRocmVlIG1lZXQgYWdhaW4/IikKKyAgICBmcm9tX3N0ciA9IFNUUigiZWUiKQorICAgIHRvX3N0ciA9IFNUUigiIikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIpCisKKworYmlnX3MgPSAiQSIgKyAoIloiKjEyOCoxMDI0KQorYmlnX3NfYnl0ZXMgPSBieXRlc19mcm9tX3N0cihiaWdfcykKK2JpZ19zX3VuaWNvZGUgPSB1bmljb2RlX2Zyb21fc3RyKGJpZ19zKQorZGVmIF9nZXRfYmlnX3MoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERTogcmV0dXJuIGJpZ19zX3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6IHJldHVybiBiaWdfc19ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKyMgVGhlIG9sZGVyIHJlcGxhY2UgaW1wbGVtZW50YXRpb24gY291bnRlZCBhbGwgbWF0Y2hlcyBpbgorIyB0aGUgc3RyaW5nIGV2ZW4gd2hlbiBpdCBvbmx5IG5lZWVkIHRvIG1ha2Ugb25lIHJlcGxhY2VtZW50LgorQGJlbmNoKCcoIkEiICsgKCJaIioxMjgqMTAyNCkpLnJlcGxhY2UoIkEiLCAiQkIiLCAxKScsCisgICAgICAgJ3F1aWNrIHJlcGxhY2Ugc2luZ2xlIGNoYXJhY3RlciBtYXRjaCcsIDEwKQorZGVmIHF1aWNrX3JlcGxhY2Vfc2luZ2xlX21hdGNoKFNUUik6CisgICAgcyA9IF9nZXRfYmlnX3MoU1RSKQorICAgIGZyb21fc3RyID0gU1RSKCJBIikKKyAgICB0b19zdHIgPSBTVFIoIkJCIikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyLCAxKQorCitAYmVuY2goJygiQSIgKyAoIloiKjEyOCoxMDI0KSkucmVwbGFjZSgiQVpaIiwgIkJCWloiLCAxKScsCisgICAgICAgJ3F1aWNrIHJlcGxhY2UgbXVsdGlwbGUgY2hhcmFjdGVyIG1hdGNoJywgMTApCitkZWYgcXVpY2tfcmVwbGFjZV9tdWx0aXBsZV9tYXRjaChTVFIpOgorICAgIHMgPSBfZ2V0X2JpZ19zKFNUUikKKyAgICBmcm9tX3N0ciA9IFNUUigiQVpaIikKKyAgICB0b19zdHIgPSBTVFIoIkJCWloiKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIsIDEpCisKKworIyMjIworCisjIENDUCBkb2VzIGEgbG90IG9mIHRoaXMsIGZvciBpbnRlcm5hdGlvbmFsaXNhdGlvbiBvZiBpbmdhbWUgbWVzc2FnZXMuCitfZm9ybWF0ID0gIlRoZSAlKHRoaW5nKXMgaXMgJShwbGFjZSlzIHRoZSAlKGxvY2F0aW9uKXMuIgorX2Zvcm1hdF9kaWN0ID0geyAidGhpbmciOiJUSElORyIsICJwbGFjZSI6IlBMQUNFIiwgImxvY2F0aW9uIjoiTE9DQVRJT04iLCB9CitfZm9ybWF0X2J5dGVzID0gYnl0ZXNfZnJvbV9zdHIoX2Zvcm1hdCkKK19mb3JtYXRfdW5pY29kZSA9IHVuaWNvZGVfZnJvbV9zdHIoX2Zvcm1hdCkKK19mb3JtYXRfZGljdF9ieXRlcyA9IGRpY3QoKGJ5dGVzX2Zyb21fc3RyKGspLCBieXRlc19mcm9tX3N0cih2KSkgZm9yIChrLHYpIGluIF9mb3JtYXRfZGljdC5pdGVtcygpKQorX2Zvcm1hdF9kaWN0X3VuaWNvZGUgPSBkaWN0KCh1bmljb2RlX2Zyb21fc3RyKGspLCB1bmljb2RlX2Zyb21fc3RyKHYpKSBmb3IgKGssdikgaW4gX2Zvcm1hdF9kaWN0Lml0ZW1zKCkpCisKK2RlZiBfZ2V0X2Zvcm1hdChTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOgorICAgICAgICByZXR1cm4gX2Zvcm1hdF91bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOgorICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCk6CisgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZFR5cGUKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCitkZWYgX2dldF9mb3JtYXRfZGljdChTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOgorICAgICAgICByZXR1cm4gX2Zvcm1hdF9kaWN0X3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6CisgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKToKKyAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkVHlwZQorICAgICAgICByZXR1cm4gX2Zvcm1hdF9kaWN0X2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworIyBGb3JtYXR0aW5nLgorQGJlbmNoKCciVGhlICUoazEpcyBpcyAlKGsyKXMgdGhlICUoazMpcy4iJXsiazEiOiJ4IiwiazIiOiJ5IiwiazMiOiJ6Iix9JywKKyAgICAgICAnZm9ybWF0dGluZyBhIHN0cmluZyB0eXBlIHdpdGggYSBkaWN0JywgMTAwMCkKK2RlZiBmb3JtYXRfd2l0aF9kaWN0KFNUUik6CisgICAgcyA9IF9nZXRfZm9ybWF0KFNUUikKKyAgICBkID0gX2dldF9mb3JtYXRfZGljdChTVFIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMgJSBkCisKKworIyMjIyBVcHBlci0gYW5kIGxvd2VyLSBjYXNlIGNvbnZlcnNpb24KKworQGJlbmNoKCcoIldoZXJlIGluIHRoZSB3b3JsZCBpcyBDYXJtZW4gU2FuIERlaWdvPyIqMTApLmxvd2VyKCknLAorICAgICAgICJjYXNlIGNvbnZlcnNpb24gLS0gcmFyZSIsIDEwMDApCitkZWYgbG93ZXJfY29udmVyc2lvbl9yYXJlKFNUUik6CisgICAgcyA9IFNUUigiV2hlcmUgaW4gdGhlIHdvcmxkIGlzIENhcm1lbiBTYW4gRGVpZ28/IioxMCkKKyAgICBzX2xvd2VyID0gcy5sb3dlcgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX2xvd2VyKCkKKworQGJlbmNoKCcoIldIRVJFIElOIFRIRSBXT1JMRCBJUyBDQVJNRU4gU0FOIERFSUdPPyIqMTApLmxvd2VyKCknLAorICAgICAgICJjYXNlIGNvbnZlcnNpb24gLS0gZGVuc2UiLCAxMDAwKQorZGVmIGxvd2VyX2NvbnZlcnNpb25fZGVuc2UoU1RSKToKKyAgICBzID0gU1RSKCJXSEVSRSBJTiBUSEUgV09STEQgSVMgQ0FSTUVOIFNBTiBERUlHTz8iKjEwKQorICAgIHNfbG93ZXIgPSBzLmxvd2VyCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfbG93ZXIoKQorCisKK0BiZW5jaCgnKCJ3SEVSRSBJTiBUSEUgV09STEQgSVMgY0FSTUVOIHNBTiBkRUlHTz8iKjEwKS51cHBlcigpJywKKyAgICAgICAiY2FzZSBjb252ZXJzaW9uIC0tIHJhcmUiLCAxMDAwKQorZGVmIHVwcGVyX2NvbnZlcnNpb25fcmFyZShTVFIpOgorICAgIHMgPSBTVFIoIldoZXJlIGluIHRoZSB3b3JsZCBpcyBDYXJtZW4gU2FuIERlaWdvPyIqMTApCisgICAgc191cHBlciA9IHMudXBwZXIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc191cHBlcigpCisKK0BiZW5jaCgnKCJ3aGVyZSBpbiB0aGUgd29ybGQgaXMgY2FybWVuIHNhbiBkZWlnbz8iKjEwKS51cHBlcigpJywKKyAgICAgICAiY2FzZSBjb252ZXJzaW9uIC0tIGRlbnNlIiwgMTAwMCkKK2RlZiB1cHBlcl9jb252ZXJzaW9uX2RlbnNlKFNUUik6CisgICAgcyA9IFNUUigid2hlcmUgaW4gdGhlIHdvcmxkIGlzIGNhcm1lbiBzYW4gZGVpZ28/IioxMCkKKyAgICBzX3VwcGVyID0gcy51cHBlcgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3VwcGVyKCkKKworCisjIGVuZCBvZiBiZW5jaG1hcmtzCisKKyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIEJlbmNoVGltZXIodGltZWl0LlRpbWVyKToKKyAgICBkZWYgYmVzdChzZWxmLCByZXBlYXQ9MSk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDEwKToKKyAgICAgICAgICAgIG51bWJlciA9IDEwKippCisgICAgICAgICAgICB4ID0gc2VsZi50aW1laXQobnVtYmVyKQorICAgICAgICAgICAgaWYgeCA+IDAuMDI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgdGltZXMgPSBbeF0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgcmVwZWF0KToKKyAgICAgICAgICAgIHRpbWVzLmFwcGVuZChzZWxmLnRpbWVpdChudW1iZXIpKQorICAgICAgICByZXR1cm4gbWluKHRpbWVzKSAvIG51bWJlcgorCitkZWYgbWFpbigpOgorICAgIChvcHRpb25zLCB0ZXN0X25hbWVzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBvcHRpb25zLmJ5dGVzX29ubHkgYW5kIG9wdGlvbnMudW5pY29kZV9vbmx5OgorICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KCJPbmx5IG9uZSBvZiAtLTgtYml0IGFuZCAtLXVuaWNvZGUgYXJlIGFsbG93ZWQiKQorCisgICAgYmVuY2hfZnVuY3Rpb25zID0gW10KKyAgICBmb3IgKGssdikgaW4gZ2xvYmFscygpLml0ZW1zKCk6CisgICAgICAgIGlmIGhhc2F0dHIodiwgImlzX2JlbmNoIik6CisgICAgICAgICAgICBpZiB0ZXN0X25hbWVzOgorICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIHRlc3RfbmFtZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gdi5ncm91cDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBOb3Qgc2VsZWN0ZWQsIGlnbm9yZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgb3B0aW9ucy5za2lwX3JlIGFuZCBoYXNhdHRyKHYsICJ1c2VzX3JlIik6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgYmVuY2hfZnVuY3Rpb25zLmFwcGVuZCggKHYuZ3JvdXAsIGssIHYpICkKKyAgICBiZW5jaF9mdW5jdGlvbnMuc29ydCgpCisKKyAgICBwKCJieXRlc1x0dW5pY29kZSIpCisgICAgcCgiKGluIG1zKVx0KGluIG1zKVx0JVx0Y29tbWVudCIpCisKKyAgICBieXRlc190b3RhbCA9IHVuaV90b3RhbCA9IDAuMAorCisgICAgZm9yIHRpdGxlLCBncm91cCBpbiBpdGVydG9vbHMuZ3JvdXBieShiZW5jaF9mdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yLml0ZW1nZXR0ZXIoMCkpOgorICAgICAgICAjIEZsdXNoIGJ1ZmZlciBiZWZvcmUgZWFjaCBncm91cAorICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICAgICAgcCgiPSIqMTAsIHRpdGxlKQorICAgICAgICBmb3IgKF8sIGssIHYpIGluIGdyb3VwOgorICAgICAgICAgICAgaWYgaGFzYXR0cih2LCAiaXNfYmVuY2giKToKKyAgICAgICAgICAgICAgICBieXRlc190aW1lID0gMC4wCisgICAgICAgICAgICAgICAgYnl0ZXNfdGltZV9zID0gIiAtICIKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3B0aW9ucy51bmljb2RlX29ubHk6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWUgPSBCZW5jaFRpbWVyKCJfX21haW5fXy4lcyhfX21haW5fXy5CWVRFUykiICUgKGssKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgX19tYWluX18iKS5iZXN0KFJFUEVBVCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWVfcyA9ICIlLjJmIiAlICgxMDAwICogYnl0ZXNfdGltZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RvdGFsICs9IGJ5dGVzX3RpbWUKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuc3VwcG9ydGVkVHlwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWVfcyA9ICJOL0EiCisgICAgICAgICAgICAgICAgdW5pX3RpbWUgPSAwLjAKKyAgICAgICAgICAgICAgICB1bmlfdGltZV9zID0gIiAtICIKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3B0aW9ucy5ieXRlc19vbmx5OgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB1bmlfdGltZSA9IEJlbmNoVGltZXIoIl9fbWFpbl9fLiVzKF9fbWFpbl9fLlVOSUNPREUpIiAlIChrLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBfX21haW5fXyIpLmJlc3QoUkVQRUFUKQorICAgICAgICAgICAgICAgICAgICAgICAgdW5pX3RpbWVfcyA9ICIlLjJmIiAlICgxMDAwICogdW5pX3RpbWUpCisgICAgICAgICAgICAgICAgICAgICAgICB1bmlfdG90YWwgKz0gdW5pX3RpbWUKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuc3VwcG9ydGVkVHlwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaV90aW1lX3MgPSAiTi9BIgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYXZlcmFnZSA9IGJ5dGVzX3RpbWUvdW5pX3RpbWUKKyAgICAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBhdmVyYWdlID0gMC4wCisgICAgICAgICAgICAgICAgcCgiJXNcdCVzXHQlLjFmXHQlcyAoKiVkKSIgJSAoCisgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWVfcywgdW5pX3RpbWVfcywgMTAwLiphdmVyYWdlLAorICAgICAgICAgICAgICAgICAgICB2LmNvbW1lbnQsIHYucmVwZWF0X2NvdW50KSkKKworICAgIGlmIGJ5dGVzX3RvdGFsID09IHVuaV90b3RhbCA9PSAwLjA6CisgICAgICAgIHAoIlRoYXQgd2FzIHppcHB5ISIpCisgICAgZWxzZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmF0aW8gPSBieXRlc190b3RhbC91bmlfdG90YWwKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgcmF0aW8gPSAwLjAKKyAgICAgICAgcCgiJS4yZlx0JS4yZlx0JS4xZlx0JXMiICUgKAorICAgICAgICAgICAgMTAwMCpieXRlc190b3RhbCwgMTAwMCp1bmlfdG90YWwsIDEwMC4qcmF0aW8sCisgICAgICAgICAgICAiVE9UQUwiKSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weSBiL1Rvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weQppbmRleCAwZjVjMWUyLi43ZGUxNGZkIDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL2NvbXBhcmVjb2RlY3MucHkKKysrIGIvVG9vbHMvdW5pY29kZS9jb21wYXJlY29kZWNzLnB5CkBAIC0xNCw3ICsxNCw3IEBACiAgICAgcHJpbnQoJ0NvbXBhcmluZyBlbmNvZGluZy9kZWNvZGluZyBvZiAgICVyIGFuZCAgICVyJyAlIChlbmNvZGluZzEsIGVuY29kaW5nMikpCiAgICAgbWlzbWF0Y2ggPSAwCiAgICAgIyBDaGVjayBlbmNvZGluZwotICAgIGZvciBpIGluIHJhbmdlKHN5cy5tYXh1bmljb2RlKToKKyAgICBmb3IgaSBpbiByYW5nZShzeXMubWF4dW5pY29kZSsxKToKICAgICAgICAgdSA9IGNocihpKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjMSA9IHUuZW5jb2RlKGVuY29kaW5nMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CmluZGV4IDdlN2Q2ZDAuLmY1YTFhZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKKysrIGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgICAgICAgICBjb21tZW50ID0gJycKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNvbW1lbnQgPSBjb21tZW50WzE6XS5zdHJpcCgpCi0gICAgICAgIGlmIGVuYyA8IDI1NjoKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZW5jLCB0dXBsZSkgYW5kIGVuYyA8IDI1NjoKICAgICAgICAgICAgIGlmIGVuYyBpbiB1bm1hcHBlZDoKICAgICAgICAgICAgICAgICB1bm1hcHBlZC5yZW1vdmUoZW5jKQogICAgICAgICAgICAgaWYgZW5jID09IHVuaToKQEAgLTIwMiwxMSArMjAyLDEwIEBACiAgICAgIyBBbmFseXplIG1hcCBhbmQgY3JlYXRlIHRhYmxlIGRpY3QKICAgICBtYXBwaW5ncyA9IHNvcnRlZChtYXAuaXRlbXMoKSkKICAgICB0YWJsZSA9IHt9Ci0gICAgbWF4a2V5ID0gMAorICAgIG1heGtleSA9IDI1NQogICAgIGlmICdJREVOVElUWScgaW4gbWFwOgogICAgICAgICBmb3Iga2V5IGluIHJhbmdlKDI1Nik6CiAgICAgICAgICAgICB0YWJsZVtrZXldID0gKGtleSwgJycpCi0gICAgICAgIG1heGtleSA9IDI1NQogICAgICAgICBkZWwgbWFwWydJREVOVElUWSddCiAgICAgZm9yIG1hcGtleSwgbWFwdmFsdWUgaW4gbWFwcGluZ3M6CiAgICAgICAgIG1hcGNvbW1lbnQgPSAnJwpAQCAtMjI0LDYgKzIyMyw3IEBACiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAjIENyZWF0ZSB0YWJsZSBjb2RlCisgICAgbWF4Y2hhciA9IDAKICAgICBmb3Iga2V5IGluIHJhbmdlKG1heGtleSArIDEpOgogICAgICAgICBpZiBrZXkgbm90IGluIHRhYmxlOgogICAgICAgICAgICAgbWFwdmFsdWUgPSBNSVNTSU5HX0NPREUKQEAgLTIzOCw2ICsyMzgsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1hcGNoYXIgPSBjaHIobWFwdmFsdWUpCisgICAgICAgIG1heGNoYXIgPSBtYXgobWF4Y2hhciwgb3JkKG1hcGNoYXIpKQogICAgICAgICBpZiBtYXBjb21tZW50IGFuZCBjb21tZW50czoKICAgICAgICAgICAgIGFwcGVuZCgnICAgICVhIFx0IyAgJXMgLT4gJXMnICUgKG1hcGNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleHJlcHIoa2V5LCBrZXlfcHJlY2lzaW9uKSwKQEAgLTI0NSw2ICsyNDYsOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXBwZW5kKCcgICAgJWEnICUgbWFwY2hhcikKIAorICAgIGlmIG1heGNoYXIgPCAyNTY6CisgICAgICAgIGFwcGVuZCgnICAgICVhIFx0IyMgV2lkZW4gdG8gVUNTMiBmb3Igb3B0aW1pemF0aW9uJyAlIFVOSV9VTkRFRklORUQpCiAgICAgYXBwZW5kKCcpJykKICAgICByZXR1cm4gbAogCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CmluZGV4IGQ1MDMxOTAuLmQ4M2NmNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CkBAIC0yMSwxNyArMjEsMjMgQEAKICMgMjAwNC0wNS0yOSBwZXJreSBhZGQgZWFzdCBhc2lhbiB3aWR0aCBpbmZvcm1hdGlvbgogIyAyMDA2LTAzLTEwIG12bCAgdXBkYXRlIHRvIFVuaWNvZGUgNC4xOyBhZGQgVUNEIDMuMiBkZWx0YQogIyAyMDA4LTA2LTExIGdiICAgYWRkIFBSSU5UQUJMRV9NQVNLIGZvciBBdHN1byBJc2hpbW90bydzIGFzY2lpKCkgcGF0Y2gKKyMgMjAxMS0xMC0yMSBlemlvIGFkZCBzdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcworIyAyMDEyLTAxICAgIGJlbmphbWluIGFkZCBmdWxsIGNhc2UgbWFwcGluZ3MKICMKICMgd3JpdHRlbiBieSBGcmVkcmlrIEx1bmRoIChmcmVkcmlrQHB5dGhvbndhcmUuY29tKQogIwogCi1pbXBvcnQgc3lzLCBvcywgemlwZmlsZQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgemlwZmlsZQorCitmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKIAogU0NSSVBUID0gc3lzLmFyZ3ZbMF0KIFZFUlNJT04gPSAiMy4yIgogCiAjIFRoZSBVbmljb2RlIERhdGFiYXNlCi1VTklEQVRBX1ZFUlNJT04gPSAiNi4wLjAiCitVTklEQVRBX1ZFUlNJT04gPSAiNi4xLjAiCiBVTklDT0RFX0RBVEEgPSAiVW5pY29kZURhdGElcy50eHQiCiBDT01QT1NJVElPTl9FWENMVVNJT05TID0gIkNvbXBvc2l0aW9uRXhjbHVzaW9ucyVzLnR4dCIKIEVBU1RBU0lBTl9XSURUSCA9ICJFYXN0QXNpYW5XaWR0aCVzLnR4dCIKQEAgLTM5LDYgKzQ1LDE5IEBACiBERVJJVkVEX0NPUkVfUFJPUEVSVElFUyA9ICJEZXJpdmVkQ29yZVByb3BlcnRpZXMlcy50eHQiCiBERVJJVkVETk9STUFMSVpBVElPTl9QUk9QUyA9ICJEZXJpdmVkTm9ybWFsaXphdGlvblByb3BzJXMudHh0IgogTElORV9CUkVBSyA9ICJMaW5lQnJlYWslcy50eHQiCitOQU1FX0FMSUFTRVMgPSAiTmFtZUFsaWFzZXMlcy50eHQiCitOQU1FRF9TRVFVRU5DRVMgPSAiTmFtZWRTZXF1ZW5jZXMlcy50eHQiCitTUEVDSUFMX0NBU0lORyA9ICJTcGVjaWFsQ2FzaW5nJXMudHh0IgorQ0FTRV9GT0xESU5HID0gIkNhc2VGb2xkaW5nJXMudHh0IgorCisjIFByaXZhdGUgVXNlIEFyZWFzIC0tIGluIHBsYW5lcyAxLCAxNSwgMTYKK1BVQV8xID0gcmFuZ2UoMHhFMDAwLCAweEY5MDApCitQVUFfMTUgPSByYW5nZSgweEYwMDAwLCAweEZGRkZFKQorUFVBXzE2ID0gcmFuZ2UoMHgxMDAwMDAsIDB4MTBGRkZFKQorCisjIHdlIHVzZSB0aGlzIHJhbmdlcyBvZiBQVUFfMTUgdG8gc3RvcmUgbmFtZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMKK05BTUVfQUxJQVNFU19TVEFSVCA9IDB4RjAwMDAKK05BTUVEX1NFUVVFTkNFU19TVEFSVCA9IDB4RjAyMDAKIAogb2xkX3ZlcnNpb25zID0gWyIzLjIuMCJdCiAKQEAgLTY3LDEzICs4NiwxNSBAQAogWElEX1NUQVJUX01BU0sgPSAweDEwMAogWElEX0NPTlRJTlVFX01BU0sgPSAweDIwMAogUFJJTlRBQkxFX01BU0sgPSAweDQwMAotTk9ERUxUQV9NQVNLID0gMHg4MDAKLU5VTUVSSUNfTUFTSyA9IDB4MTAwMAorTlVNRVJJQ19NQVNLID0gMHg4MDAKK0NBU0VfSUdOT1JBQkxFX01BU0sgPSAweDEwMDAKK0NBU0VEX01BU0sgPSAweDIwMDAKK0VYVEVOREVEX0NBU0VfTUFTSyA9IDB4NDAwMAogCiAjIHRoZXNlIHJhbmdlcyBuZWVkIHRvIG1hdGNoIHVuaWNvZGVkYXRhLmM6aXNfdW5pZmllZF9pZGVvZ3JhcGgKIGNqa19yYW5nZXMgPSBbCiAgICAgKCczNDAwJywgJzREQjUnKSwKLSAgICAoJzRFMDAnLCAnOUZDQicpLAorICAgICgnNEUwMCcsICc5RkNDJyksCiAgICAgKCcyMDAwMCcsICcyQTZENicpLAogICAgICgnMkE3MDAnLCAnMkI3MzQnKSwKICAgICAoJzJCNzQwJywgJzJCODFEJykKQEAgLTM2Nyw2ICszODgsNyBAQAogICAgIG51bWVyaWMgPSB7fQogICAgIHNwYWNlcyA9IFtdCiAgICAgbGluZWJyZWFrcyA9IFtdCisgICAgZXh0cmFfY2FzaW5nID0gW10KIAogICAgIGZvciBjaGFyIGluIHVuaWNvZGUuY2hhcnM6CiAgICAgICAgIHJlY29yZCA9IHVuaWNvZGUudGFibGVbY2hhcl0KQEAgLTM3OSw3ICs0MDEsNyBAQAogICAgICAgICAgICAgZGVsdGEgPSBUcnVlCiAgICAgICAgICAgICBpZiBjYXRlZ29yeSBpbiBbIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgIkxvIl06CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gQUxQSEFfTUFTSwotICAgICAgICAgICAgaWYgY2F0ZWdvcnkgPT0gIkxsIjoKKyAgICAgICAgICAgIGlmICJMb3dlcmNhc2UiIGluIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gTE9XRVJfTUFTSwogICAgICAgICAgICAgaWYgJ0xpbmVfQnJlYWsnIGluIHByb3BlcnRpZXMgb3IgYmlkaXJlY3Rpb25hbCA9PSAiQiI6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gTElORUJSRUFLX01BU0sKQEAgLTM4OSw3ICs0MTEsNyBAQAogICAgICAgICAgICAgICAgIHNwYWNlcy5hcHBlbmQoY2hhcikKICAgICAgICAgICAgIGlmIGNhdGVnb3J5ID09ICJMdCI6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gVElUTEVfTUFTSwotICAgICAgICAgICAgaWYgY2F0ZWdvcnkgPT0gIkx1IjoKKyAgICAgICAgICAgIGlmICJVcHBlcmNhc2UiIGluIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gVVBQRVJfTUFTSwogICAgICAgICAgICAgaWYgY2hhciA9PSBvcmQoIiAiKSBvciBjYXRlZ29yeVswXSBub3QgaW4gKCJDIiwgIloiKToKICAgICAgICAgICAgICAgICBmbGFncyB8PSBQUklOVEFCTEVfTUFTSwpAQCAtMzk3LDcgKzQxOSwxMiBAQAogICAgICAgICAgICAgICAgIGZsYWdzIHw9IFhJRF9TVEFSVF9NQVNLCiAgICAgICAgICAgICBpZiAiWElEX0NvbnRpbnVlIiBpbiBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IFhJRF9DT05USU5VRV9NQVNLCi0gICAgICAgICAgICAjIHVzZSBkZWx0YSBwcmVkaWN0b3IgZm9yIHVwcGVyL2xvd2VyL3RpdGxlIGlmIGl0IGZpdHMKKyAgICAgICAgICAgIGlmICJDYXNlZCIgaW4gcHJvcGVydGllczoKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBDQVNFRF9NQVNLCisgICAgICAgICAgICBpZiAiQ2FzZV9JZ25vcmFibGUiIGluIHByb3BlcnRpZXM6CisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gQ0FTRV9JR05PUkFCTEVfTUFTSworICAgICAgICAgICAgc2MgPSB1bmljb2RlLnNwZWNpYWxfY2FzaW5nLmdldChjaGFyKQorICAgICAgICAgICAgY2YgPSB1bmljb2RlLmNhc2VfZm9sZGluZy5nZXQoY2hhciwgW2NoYXJdKQogICAgICAgICAgICAgaWYgcmVjb3JkWzEyXToKICAgICAgICAgICAgICAgICB1cHBlciA9IGludChyZWNvcmRbMTJdLCAxNikKICAgICAgICAgICAgIGVsc2U6CkBAIC00MDksMjMgKzQzNiwzOSBAQAogICAgICAgICAgICAgaWYgcmVjb3JkWzE0XToKICAgICAgICAgICAgICAgICB0aXRsZSA9IGludChyZWNvcmRbMTRdLCAxNikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBVQ0QuaHRtbCBzYXlzIHRoYXQgYSBtaXNzaW5nIHRpdGxlIGNoYXIgbWVhbnMgdGhhdAotICAgICAgICAgICAgICAgICMgaXQgZGVmYXVsdHMgdG8gdGhlIHVwcGVyY2FzZSBjaGFyYWN0ZXIsIG5vdCB0byB0aGUKLSAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBpdHNlbGYuIEFwcGFyZW50bHksIGluIHRoZSBjdXJyZW50IFVDRCAoNS54KQotICAgICAgICAgICAgICAgICMgdGhpcyBmZWF0dXJlIGlzIG5ldmVyIHVzZWQKICAgICAgICAgICAgICAgICB0aXRsZSA9IHVwcGVyCi0gICAgICAgICAgICB1cHBlcl9kID0gdXBwZXIgLSBjaGFyCi0gICAgICAgICAgICBsb3dlcl9kID0gbG93ZXIgLSBjaGFyCi0gICAgICAgICAgICB0aXRsZV9kID0gdGl0bGUgLSBjaGFyCi0gICAgICAgICAgICBpZiAtMzI3NjggPD0gdXBwZXJfZCA8PSAzMjc2NyBhbmQgXAotICAgICAgICAgICAgICAgLTMyNzY4IDw9IGxvd2VyX2QgPD0gMzI3NjcgYW5kIFwKLSAgICAgICAgICAgICAgIC0zMjc2OCA8PSB0aXRsZV9kIDw9IDMyNzY3OgotICAgICAgICAgICAgICAgICMgdXNlIGRlbHRhcwotICAgICAgICAgICAgICAgIHVwcGVyID0gdXBwZXJfZCAmIDB4ZmZmZgotICAgICAgICAgICAgICAgIGxvd2VyID0gbG93ZXJfZCAmIDB4ZmZmZgotICAgICAgICAgICAgICAgIHRpdGxlID0gdGl0bGVfZCAmIDB4ZmZmZgorICAgICAgICAgICAgaWYgc2MgaXMgTm9uZSBhbmQgY2YgIT0gW2xvd2VyXToKKyAgICAgICAgICAgICAgICBzYyA9IChbbG93ZXJdLCBbdGl0bGVdLCBbdXBwZXJdKQorICAgICAgICAgICAgaWYgc2MgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiB1cHBlciA9PSBsb3dlciA9PSB0aXRsZToKKyAgICAgICAgICAgICAgICAgICAgdXBwZXIgPSBsb3dlciA9IHRpdGxlID0gMAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHVwcGVyID0gdXBwZXIgLSBjaGFyCisgICAgICAgICAgICAgICAgICAgIGxvd2VyID0gbG93ZXIgLSBjaGFyCisgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdGl0bGUgLSBjaGFyCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoYWJzKHVwcGVyKSA8PSAyMTQ3NDgzNjQ3IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicyhsb3dlcikgPD0gMjE0NzQ4MzY0NyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnModGl0bGUpIDw9IDIxNDc0ODM2NDcpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZsYWdzIHw9IE5PREVMVEFfTUFTSworICAgICAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGVpdGhlciB3aGVuIHNvbWUgY2hhcmFjdGVyIG1hcHMgdG8gbW9yZSB0aGFuIG9uZQorICAgICAgICAgICAgICAgICMgY2hhcmFjdGVyIGluIHVwcGVyY2FzZSwgbG93ZXJjYXNlLCBvciB0aXRsZWNhc2Ugb3IgdGhlCisgICAgICAgICAgICAgICAgIyBjYXNlZm9sZGVkIHZlcnNpb24gb2YgdGhlIGNoYXJhY3RlciBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAjIGxvd2VyY2FzZS4gVGhlIGV4dHJhIGNoYXJhY3RlcnMgYXJlIHN0b3JlZCBpbiBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICMgYXJyYXkuCisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gRVhURU5ERURfQ0FTRV9NQVNLCisgICAgICAgICAgICAgICAgbG93ZXIgPSBsZW4oZXh0cmFfY2FzaW5nKSB8IChsZW4oc2NbMF0pIDw8IDI0KQorICAgICAgICAgICAgICAgIGV4dHJhX2Nhc2luZy5leHRlbmQoc2NbMF0pCisgICAgICAgICAgICAgICAgaWYgY2YgIT0gc2NbMF06CisgICAgICAgICAgICAgICAgICAgIGxvd2VyIHw9IGxlbihjZikgPDwgMjAKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfY2FzaW5nLmV4dGVuZChjZikKKyAgICAgICAgICAgICAgICB1cHBlciA9IGxlbihleHRyYV9jYXNpbmcpIHwgKGxlbihzY1syXSkgPDwgMjQpCisgICAgICAgICAgICAgICAgZXh0cmFfY2FzaW5nLmV4dGVuZChzY1syXSkKKyAgICAgICAgICAgICAgICAjIFRpdGxlIGlzIHByb2JhYmx5IGVxdWFsIHRvIHVwcGVyLgorICAgICAgICAgICAgICAgIGlmIHNjWzFdID09IHNjWzJdOgorICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHVwcGVyCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSBsZW4oZXh0cmFfY2FzaW5nKSB8IChsZW4oc2NbMV0pIDw8IDI0KQorICAgICAgICAgICAgICAgICAgICBleHRyYV9jYXNpbmcuZXh0ZW5kKHNjWzFdKQogICAgICAgICAgICAgIyBkZWNpbWFsIGRpZ2l0LCBpbnRlZ2VyIGRpZ2l0CiAgICAgICAgICAgICBkZWNpbWFsID0gMAogICAgICAgICAgICAgaWYgcmVjb3JkWzZdOgpAQCAtNDUyLDYgKzQ5NSw3IEBACiAgICAgcHJpbnQoc3VtKG1hcChsZW4sIG51bWVyaWMudmFsdWVzKCkpKSwgIm51bWVyaWMgY29kZSBwb2ludHMiKQogICAgIHByaW50KGxlbihzcGFjZXMpLCAid2hpdGVzcGFjZSBjb2RlIHBvaW50cyIpCiAgICAgcHJpbnQobGVuKGxpbmVicmVha3MpLCAibGluZWJyZWFrIGNvZGUgcG9pbnRzIikKKyAgICBwcmludChsZW4oZXh0cmFfY2FzaW5nKSwgImV4dGVuZGVkIGNhc2UgYXJyYXkiKQogCiAgICAgcHJpbnQoIi0tLSBXcml0aW5nIiwgRklMRSwgIi4uLiIpCiAKQEAgLTQ2NSw2ICs1MDksMTQgQEAKICAgICBwcmludCgifTsiLCBmaWxlPWZwKQogICAgIHByaW50KGZpbGU9ZnApCiAKKyAgICBwcmludCgiLyogZXh0ZW5kZWQgY2FzZSBtYXBwaW5ncyAqLyIsIGZpbGU9ZnApCisgICAgcHJpbnQoZmlsZT1mcCkKKyAgICBwcmludCgiY29uc3QgUHlfVUNTNCBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtdID0geyIsIGZpbGU9ZnApCisgICAgZm9yIGMgaW4gZXh0cmFfY2FzaW5nOgorICAgICAgICBwcmludCgiICAgICVkLCIgJSBjLCBmaWxlPWZwKQorICAgIHByaW50KCJ9OyIsIGZpbGU9ZnApCisgICAgcHJpbnQoZmlsZT1mcCkKKwogICAgICMgc3BsaXQgZGVjb21wb3NpdGlvbiBpbmRleCB0YWJsZQogICAgIGluZGV4MSwgaW5kZXgyLCBzaGlmdCA9IHNwbGl0YmlucyhpbmRleCwgdHJhY2UpCiAKQEAgLTY5Miw2ICs3NDQsMzkgQEAKICAgICBwcmludCgiLyogbmFtZS0+Y29kZSBkaWN0aW9uYXJ5ICovIiwgZmlsZT1mcCkKICAgICBjb2RlaGFzaC5kdW1wKGZwLCB0cmFjZSkKIAorICAgIHByaW50KGZpbGU9ZnApCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWxpYXNlc19zdGFydCA9ICUjeDsnICUKKyAgICAgICAgICBOQU1FX0FMSUFTRVNfU1RBUlQsIGZpbGU9ZnApCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWxpYXNlc19lbmQgPSAlI3g7JyAlCisgICAgICAgICAgKE5BTUVfQUxJQVNFU19TVEFSVCArIGxlbih1bmljb2RlLmFsaWFzZXMpKSwgZmlsZT1mcCkKKworICAgIHByaW50KCdzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVfYWxpYXNlc1tdID0geycsIGZpbGU9ZnApCisgICAgZm9yIG5hbWUsIGNvZGVwb2ludCBpbiB1bmljb2RlLmFsaWFzZXM6CisgICAgICAgIHByaW50KCcgICAgMHglMDRYLCcgJSBjb2RlcG9pbnQsIGZpbGU9ZnApCisgICAgcHJpbnQoJ307JywgZmlsZT1mcCkKKworICAgICMgSW4gVW5pY29kZSA2LjAuMCwgdGhlIHNlcXVlbmNlcyBjb250YWluIGF0IG1vc3QgNCBCTVAgY2hhcnMsCisgICAgIyBzbyB3ZSBhcmUgdXNpbmcgUHlfVUNTMiBzZXFbNF0uICBUaGlzIG5lZWRzIHRvIGJlIHVwZGF0ZWQgaWYgbG9uZ2VyCisgICAgIyBzZXF1ZW5jZXMgb3Igc2VxdWVuY2VzIHdpdGggbm9uLUJNUCBjaGFycyBhcmUgYWRkZWQuCisgICAgIyB1bmljb2RlZGF0YV9sb29rdXAgc2hvdWxkIGJlIGFkYXB0ZWQgdG9vLgorICAgIHByaW50KGRlZGVudCgiIiIKKyAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgTmFtZWRTZXF1ZW5jZSB7CisgICAgICAgICAgICBpbnQgc2VxbGVuOworICAgICAgICAgICAgUHlfVUNTMiBzZXFbNF07CisgICAgICAgIH0gbmFtZWRfc2VxdWVuY2U7CisgICAgICAgICIiIiksIGZpbGU9ZnApCisKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lZF9zZXF1ZW5jZXNfc3RhcnQgPSAlI3g7JyAlCisgICAgICAgICAgTkFNRURfU0VRVUVOQ0VTX1NUQVJULCBmaWxlPWZwKQorICAgIHByaW50KCdzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVkX3NlcXVlbmNlc19lbmQgPSAlI3g7JyAlCisgICAgICAgICAgKE5BTUVEX1NFUVVFTkNFU19TVEFSVCArIGxlbih1bmljb2RlLm5hbWVkX3NlcXVlbmNlcykpLCBmaWxlPWZwKQorCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCBuYW1lZF9zZXF1ZW5jZSBuYW1lZF9zZXF1ZW5jZXNbXSA9IHsnLCBmaWxlPWZwKQorICAgIGZvciBuYW1lLCBzZXF1ZW5jZSBpbiB1bmljb2RlLm5hbWVkX3NlcXVlbmNlczoKKyAgICAgICAgc2VxX3N0ciA9ICcsICcuam9pbignMHglMDRYJyAlIGNwIGZvciBjcCBpbiBzZXF1ZW5jZSkKKyAgICAgICAgcHJpbnQoJyAgICB7JWQsIHslc319LCcgJSAobGVuKHNlcXVlbmNlKSwgc2VxX3N0ciksIGZpbGU9ZnApCisgICAgcHJpbnQoJ307JywgZmlsZT1mcCkKKwogICAgIGZwLmNsb3NlKCkKIAogCkBAIC03MjYsNyArODExLDExIEBACiAgICAgICAgICAgICBmb3IgayBpbiByYW5nZShsZW4ob2xkLnRhYmxlW2ldKSk6CiAgICAgICAgICAgICAgICAgaWYgb2xkLnRhYmxlW2ldW2tdICE9IG5ldy50YWJsZVtpXVtrXToKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBvbGQudGFibGVbaV1ba10KLSAgICAgICAgICAgICAgICAgICAgaWYgayA9PSAyOgorICAgICAgICAgICAgICAgICAgICBpZiBrID09IDEgYW5kIGkgaW4gUFVBXzE1OgorICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgbmFtZSBpcyBub3Qgc2V0IGluIHRoZSBvbGQudGFibGUsIGJ1dCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgbmV3LnRhYmxlIHdlIGFyZSB1c2luZyBpdCBmb3IgYWxpYXNlcyBhbmQgbmFtZWQgc2VxCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgdmFsdWUgPT0gJycKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQgIkNBVEVHT1JZIixoZXgoaSksIG9sZC50YWJsZVtpXVtrXSwgbmV3LnRhYmxlW2ldW2tdCiAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeV9jaGFuZ2VzW2ldID0gQ0FURUdPUllfTkFNRVMuaW5kZXgodmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSA0OgpAQCAtODE2LDE1ICs5MDUsMTUgQEAKICAgICAgICAgICAgICAgICAgZXhwYW5kPTEsCiAgICAgICAgICAgICAgICAgIGNqa19jaGVjaz1UcnVlKToKICAgICAgICAgc2VsZi5jaGFuZ2VkID0gW10KLSAgICAgICAgZmlsZSA9IG9wZW5fZGF0YShVTklDT0RFX0RBVEEsIHZlcnNpb24pCiAgICAgICAgIHRhYmxlID0gW05vbmVdICogMHgxMTAwMDAKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHMgPSBmaWxlLnJlYWRsaW5lKCkKLSAgICAgICAgICAgIGlmIG5vdCBzOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBzID0gcy5zdHJpcCgpLnNwbGl0KCI7IikKLSAgICAgICAgICAgIGNoYXIgPSBpbnQoc1swXSwgMTYpCi0gICAgICAgICAgICB0YWJsZVtjaGFyXSA9IHMKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoVU5JQ09ERV9EQVRBLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICBzID0gZmlsZS5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcyA9IHMuc3RyaXAoKS5zcGxpdCgiOyIpCisgICAgICAgICAgICAgICAgY2hhciA9IGludChzWzBdLCAxNikKKyAgICAgICAgICAgICAgICB0YWJsZVtjaGFyXSA9IHMKIAogICAgICAgICBjamtfcmFuZ2VzX2ZvdW5kID0gW10KIApAQCAtODU1LDMyICs5NDQsNzkgQEAKICAgICAgICAgc2VsZi50YWJsZSA9IHRhYmxlCiAgICAgICAgIHNlbGYuY2hhcnMgPSBsaXN0KHJhbmdlKDB4MTEwMDAwKSkgIyB1bmljb2RlIDMuMgogCi0gICAgICAgIGZpbGUgPSBvcGVuX2RhdGEoQ09NUE9TSVRJT05fRVhDTFVTSU9OUywgdmVyc2lvbikKKyAgICAgICAgIyBjaGVjayBmb3IgbmFtZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMsIHNlZSAjMTI3NTMKKyAgICAgICAgIyBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMgYXJlIG5vdCBpbiAzLjIuMAorICAgICAgICBpZiB2ZXJzaW9uICE9ICczLjIuMCc6CisgICAgICAgICAgICBzZWxmLmFsaWFzZXMgPSBbXQorICAgICAgICAgICAgIyBzdG9yZSBhbGlhc2VzIGluIHRoZSBQcml2YXRlIFVzZSBBcmVhIDE1LCBpbiByYW5nZSBVK0YwMDAwLi5VK0YwMEZGLAorICAgICAgICAgICAgIyBpbiBvcmRlciB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgY29tcHJlc3Npb24gYW5kIGxvb2t1cAorICAgICAgICAgICAgIyBhbGdvcml0aG1zIHVzZWQgZm9yIHRoZSBvdGhlciBjaGFyYWN0ZXJzCisgICAgICAgICAgICBwdWFfaW5kZXggPSBOQU1FX0FMSUFTRVNfU1RBUlQKKyAgICAgICAgICAgIHdpdGggb3Blbl9kYXRhKE5BTUVfQUxJQVNFUywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgICAgICBzID0gcy5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzIG9yIHMuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgY2hhciwgbmFtZSwgYWJicmV2ID0gcy5zcGxpdCgnOycpCisgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBpbnQoY2hhciwgMTYpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWxpYXNlcy5hcHBlbmQoKG5hbWUsIGNoYXIpKQorICAgICAgICAgICAgICAgICAgICAjIGFsc28gc3RvcmUgdGhlIG5hbWUgaW4gdGhlIFBVQSAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGFibGVbcHVhX2luZGV4XVsxXSA9IG5hbWUKKyAgICAgICAgICAgICAgICAgICAgcHVhX2luZGV4ICs9IDEKKyAgICAgICAgICAgIGFzc2VydCBwdWFfaW5kZXggLSBOQU1FX0FMSUFTRVNfU1RBUlQgPT0gbGVuKHNlbGYuYWxpYXNlcykKKworICAgICAgICAgICAgc2VsZi5uYW1lZF9zZXF1ZW5jZXMgPSBbXQorICAgICAgICAgICAgIyBzdG9yZSBuYW1lZCBzZXFlbmNlcyBpbiB0aGUgUFVBIDEsIGluIHJhbmdlIFUrRjAxMDAuLiwKKyAgICAgICAgICAgICMgaW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGNvbXByZXNzaW9uIGFuZCBsb29rdXAKKyAgICAgICAgICAgICMgYWxnb3JpdGhtcyB1c2VkIGZvciB0aGUgb3RoZXIgY2hhcmFjdGVycy4KKworICAgICAgICAgICAgYXNzZXJ0IHB1YV9pbmRleCA8IE5BTUVEX1NFUVVFTkNFU19TVEFSVAorICAgICAgICAgICAgcHVhX2luZGV4ID0gTkFNRURfU0VRVUVOQ0VTX1NUQVJUCisgICAgICAgICAgICB3aXRoIG9wZW5fZGF0YShOQU1FRF9TRVFVRU5DRVMsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgcyBvciBzLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIG5hbWUsIGNoYXJzID0gcy5zcGxpdCgnOycpCisgICAgICAgICAgICAgICAgICAgIGNoYXJzID0gdHVwbGUoaW50KGNoYXIsIDE2KSBmb3IgY2hhciBpbiBjaGFycy5zcGxpdCgpKQorICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHN0cnVjdHVyZSBkZWZpbmVkIGluIG1ha2V1bmljb2RlbmFtZSBpcyBPSworICAgICAgICAgICAgICAgICAgICBhc3NlcnQgMiA8PSBsZW4oY2hhcnMpIDw9IDQsICJjaGFuZ2UgdGhlIFB5X1VDUzIgYXJyYXkgc2l6ZSIKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFsbChjIDw9IDB4RkZGRiBmb3IgYyBpbiBjaGFycyksICgidXNlIFB5X1VDUzQgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBOYW1lZFNlcXVlbmNlIHN0cnVjdCBhbmQgaW4gdW5pY29kZWRhdGFfbG9va3VwIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lZF9zZXF1ZW5jZXMuYXBwZW5kKChuYW1lLCBjaGFycykpCisgICAgICAgICAgICAgICAgICAgICMgYWxzbyBzdG9yZSB0aGVzZSBpbiB0aGUgUFVBIDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50YWJsZVtwdWFfaW5kZXhdWzFdID0gbmFtZQorICAgICAgICAgICAgICAgICAgICBwdWFfaW5kZXggKz0gMQorICAgICAgICAgICAgYXNzZXJ0IHB1YV9pbmRleCAtIE5BTUVEX1NFUVVFTkNFU19TVEFSVCA9PSBsZW4oc2VsZi5uYW1lZF9zZXF1ZW5jZXMpCisKICAgICAgICAgc2VsZi5leGNsdXNpb25zID0ge30KLSAgICAgICAgZm9yIHMgaW4gZmlsZToKLSAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBzOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBzWzBdID09ICcjJzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgY2hhciA9IGludChzLnNwbGl0KClbMF0sMTYpCi0gICAgICAgICAgICBzZWxmLmV4Y2x1c2lvbnNbY2hhcl0gPSAxCisgICAgICAgIHdpdGggb3Blbl9kYXRhKENPTVBPU0lUSU9OX0VYQ0xVU0lPTlMsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBzWzBdID09ICcjJzoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjaGFyID0gaW50KHMuc3BsaXQoKVswXSwxNikKKyAgICAgICAgICAgICAgICBzZWxmLmV4Y2x1c2lvbnNbY2hhcl0gPSAxCiAKICAgICAgICAgd2lkdGhzID0gW05vbmVdICogMHgxMTAwMDAKLSAgICAgICAgZm9yIHMgaW4gb3Blbl9kYXRhKEVBU1RBU0lBTl9XSURUSCwgdmVyc2lvbik6Ci0gICAgICAgICAgICBzID0gcy5zdHJpcCgpCi0gICAgICAgICAgICBpZiBub3QgczoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgc1swXSA9PSAnIyc6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHMgPSBzLnNwbGl0KClbMF0uc3BsaXQoJzsnKQotICAgICAgICAgICAgaWYgJy4uJyBpbiBzWzBdOgotICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KLSAgICAgICAgICAgICAgICBjaGFycyA9IGxpc3QocmFuZ2UoZmlyc3QsIGxhc3QrMSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNoYXJzID0gW2ludChzWzBdLCAxNildCi0gICAgICAgICAgICBmb3IgY2hhciBpbiBjaGFyczoKLSAgICAgICAgICAgICAgICB3aWR0aHNbY2hhcl0gPSBzWzFdCisgICAgICAgIHdpdGggb3Blbl9kYXRhKEVBU1RBU0lBTl9XSURUSCwgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHNbMF0gPT0gJyMnOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHMgPSBzLnNwbGl0KClbMF0uc3BsaXQoJzsnKQorICAgICAgICAgICAgICAgIGlmICcuLicgaW4gc1swXToKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiBzWzBdLnNwbGl0KCcuLicpXQorICAgICAgICAgICAgICAgICAgICBjaGFycyA9IGxpc3QocmFuZ2UoZmlyc3QsIGxhc3QrMSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnMgPSBbaW50KHNbMF0sIDE2KV0KKyAgICAgICAgICAgICAgICBmb3IgY2hhciBpbiBjaGFyczoKKyAgICAgICAgICAgICAgICAgICAgd2lkdGhzW2NoYXJdID0gc1sxXQorCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDB4MTEwMDAwKToKICAgICAgICAgICAgIGlmIHRhYmxlW2ldIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRhYmxlW2ldLmFwcGVuZCh3aWR0aHNbaV0pCkBAIC04ODgsMzYgKzEwMjQsMzkgQEAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMHgxMTAwMDApOgogICAgICAgICAgICAgaWYgdGFibGVbaV0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdGFibGVbaV0uYXBwZW5kKHNldCgpKQotICAgICAgICBmb3IgcyBpbiBvcGVuX2RhdGEoREVSSVZFRF9DT1JFX1BST1BFUlRJRVMsIHZlcnNpb24pOgotICAgICAgICAgICAgcyA9IHMuc3BsaXQoJyMnLCAxKVswXS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBub3QgczoKLSAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICByLCBwID0gcy5zcGxpdCgiOyIpCi0gICAgICAgICAgICByID0gci5zdHJpcCgpCi0gICAgICAgICAgICBwID0gcC5zdHJpcCgpCi0gICAgICAgICAgICBpZiAiLi4iIGluIHI6Ci0gICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiByLnNwbGl0KCcuLicpXQotICAgICAgICAgICAgICAgIGNoYXJzID0gbGlzdChyYW5nZShmaXJzdCwgbGFzdCsxKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY2hhcnMgPSBbaW50KHIsIDE2KV0KLSAgICAgICAgICAgIGZvciBjaGFyIGluIGNoYXJzOgotICAgICAgICAgICAgICAgIGlmIHRhYmxlW2NoYXJdOgotICAgICAgICAgICAgICAgICAgICAjIFNvbWUgcHJvcGVydGllcyAoZS5nLiBEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50KQotICAgICAgICAgICAgICAgICAgICAjIGFwcGx5IHRvIHVuYXNzaWduZWQgY29kZSBwb2ludHM7IGlnbm9yZSB0aGVtCi0gICAgICAgICAgICAgICAgICAgIHRhYmxlW2NoYXJdWy0xXS5hZGQocCkKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoREVSSVZFRF9DT1JFX1BST1BFUlRJRVMsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgIHMgPSBzLnNwbGl0KCcjJywgMSlbMF0uc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgIGZvciBzIGluIG9wZW5fZGF0YShMSU5FX0JSRUFLLCB2ZXJzaW9uKToKLSAgICAgICAgICAgIHMgPSBzLnBhcnRpdGlvbignIycpWzBdCi0gICAgICAgICAgICBzID0gW2kuc3RyaXAoKSBmb3IgaSBpbiBzLnNwbGl0KCc7JyldCi0gICAgICAgICAgICBpZiBsZW4ocykgPCAyIG9yIHNbMV0gbm90IGluIE1BTkRBVE9SWV9MSU5FX0JSRUFLUzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgJy4uJyBub3QgaW4gc1swXToKLSAgICAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBpbnQoc1swXSwgMTYpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KLSAgICAgICAgICAgIGZvciBjaGFyIGluIHJhbmdlKGZpcnN0LCBsYXN0KzEpOgotICAgICAgICAgICAgICAgIHRhYmxlW2NoYXJdWy0xXS5hZGQoJ0xpbmVfQnJlYWsnKQorICAgICAgICAgICAgICAgIHIsIHAgPSBzLnNwbGl0KCI7IikKKyAgICAgICAgICAgICAgICByID0gci5zdHJpcCgpCisgICAgICAgICAgICAgICAgcCA9IHAuc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmICIuLiIgaW4gcjoKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiByLnNwbGl0KCcuLicpXQorICAgICAgICAgICAgICAgICAgICBjaGFycyA9IGxpc3QocmFuZ2UoZmlyc3QsIGxhc3QrMSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnMgPSBbaW50KHIsIDE2KV0KKyAgICAgICAgICAgICAgICBmb3IgY2hhciBpbiBjaGFyczoKKyAgICAgICAgICAgICAgICAgICAgaWYgdGFibGVbY2hhcl06CisgICAgICAgICAgICAgICAgICAgICAgICAjIFNvbWUgcHJvcGVydGllcyAoZS5nLiBEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBseSB0byB1bmFzc2lnbmVkIGNvZGUgcG9pbnRzOyBpZ25vcmUgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVbY2hhcl1bLTFdLmFkZChwKQorCisgICAgICAgIHdpdGggb3Blbl9kYXRhKExJTkVfQlJFQUssIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgIHMgPSBzLnBhcnRpdGlvbignIycpWzBdCisgICAgICAgICAgICAgICAgcyA9IFtpLnN0cmlwKCkgZm9yIGkgaW4gcy5zcGxpdCgnOycpXQorICAgICAgICAgICAgICAgIGlmIGxlbihzKSA8IDIgb3Igc1sxXSBub3QgaW4gTUFOREFUT1JZX0xJTkVfQlJFQUtTOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmICcuLicgbm90IGluIHNbMF06CisgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gbGFzdCA9IGludChzWzBdLCAxNikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHNbMF0uc3BsaXQoJy4uJyldCisgICAgICAgICAgICAgICAgZm9yIGNoYXIgaW4gcmFuZ2UoZmlyc3QsIGxhc3QrMSk6CisgICAgICAgICAgICAgICAgICAgIHRhYmxlW2NoYXJdWy0xXS5hZGQoJ0xpbmVfQnJlYWsnKQogCiAgICAgICAgICMgV2Ugb25seSB3YW50IHRoZSBxdWlja2NoZWNrIHByb3BlcnRpZXMKICAgICAgICAgIyBGb3JtYXQ6IE5GP19RQzsgWShlcykvTihvKS9NKGF5YmUpCkBAIC05MjgsMzEgKzEwNjcsMzMgQEAKICAgICAgICAgIyBmb3Igb2xkZXIgdmVyc2lvbnMsIGFuZCBubyBkZWx0YSByZWNvcmRzIHdpbGwgYmUgY3JlYXRlZC4KICAgICAgICAgcXVpY2tjaGVja3MgPSBbMF0gKiAweDExMDAwMAogICAgICAgICBxY19vcmRlciA9ICdORkRfUUMgTkZLRF9RQyBORkNfUUMgTkZLQ19RQycuc3BsaXQoKQotICAgICAgICBmb3IgcyBpbiBvcGVuX2RhdGEoREVSSVZFRE5PUk1BTElaQVRJT05fUFJPUFMsIHZlcnNpb24pOgotICAgICAgICAgICAgaWYgJyMnIGluIHM6Ci0gICAgICAgICAgICAgICAgcyA9IHNbOnMuaW5kZXgoJyMnKV0KLSAgICAgICAgICAgIHMgPSBbaS5zdHJpcCgpIGZvciBpIGluIHMuc3BsaXQoJzsnKV0KLSAgICAgICAgICAgIGlmIGxlbihzKSA8IDIgb3Igc1sxXSBub3QgaW4gcWNfb3JkZXI6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHF1aWNrY2hlY2sgPSAnTU4nLmluZGV4KHNbMl0pICsgMSAjIE1heWJlIG9yIE5vCi0gICAgICAgICAgICBxdWlja2NoZWNrX3NoaWZ0ID0gcWNfb3JkZXIuaW5kZXgoc1sxXSkqMgotICAgICAgICAgICAgcXVpY2tjaGVjayA8PD0gcXVpY2tjaGVja19zaGlmdAotICAgICAgICAgICAgaWYgJy4uJyBub3QgaW4gc1swXToKLSAgICAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBpbnQoc1swXSwgMTYpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KLSAgICAgICAgICAgIGZvciBjaGFyIGluIHJhbmdlKGZpcnN0LCBsYXN0KzEpOgotICAgICAgICAgICAgICAgIGFzc2VydCBub3QgKHF1aWNrY2hlY2tzW2NoYXJdPj5xdWlja2NoZWNrX3NoaWZ0KSYzCi0gICAgICAgICAgICAgICAgcXVpY2tjaGVja3NbY2hhcl0gfD0gcXVpY2tjaGVjaworICAgICAgICB3aXRoIG9wZW5fZGF0YShERVJJVkVETk9STUFMSVpBVElPTl9QUk9QUywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgaWYgJyMnIGluIHM6CisgICAgICAgICAgICAgICAgICAgIHMgPSBzWzpzLmluZGV4KCcjJyldCisgICAgICAgICAgICAgICAgcyA9IFtpLnN0cmlwKCkgZm9yIGkgaW4gcy5zcGxpdCgnOycpXQorICAgICAgICAgICAgICAgIGlmIGxlbihzKSA8IDIgb3Igc1sxXSBub3QgaW4gcWNfb3JkZXI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcXVpY2tjaGVjayA9ICdNTicuaW5kZXgoc1syXSkgKyAxICMgTWF5YmUgb3IgTm8KKyAgICAgICAgICAgICAgICBxdWlja2NoZWNrX3NoaWZ0ID0gcWNfb3JkZXIuaW5kZXgoc1sxXSkqMgorICAgICAgICAgICAgICAgIHF1aWNrY2hlY2sgPDw9IHF1aWNrY2hlY2tfc2hpZnQKKyAgICAgICAgICAgICAgICBpZiAnLi4nIG5vdCBpbiBzWzBdOgorICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBpbnQoc1swXSwgMTYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiBzWzBdLnNwbGl0KCcuLicpXQorICAgICAgICAgICAgICAgIGZvciBjaGFyIGluIHJhbmdlKGZpcnN0LCBsYXN0KzEpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IChxdWlja2NoZWNrc1tjaGFyXT4+cXVpY2tjaGVja19zaGlmdCkmMworICAgICAgICAgICAgICAgICAgICBxdWlja2NoZWNrc1tjaGFyXSB8PSBxdWlja2NoZWNrCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDB4MTEwMDAwKToKICAgICAgICAgICAgIGlmIHRhYmxlW2ldIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRhYmxlW2ldLmFwcGVuZChxdWlja2NoZWNrc1tpXSkKIAotICAgICAgICB6aXAgPSB6aXBmaWxlLlppcEZpbGUob3Blbl9kYXRhKFVOSUhBTiwgdmVyc2lvbikpCi0gICAgICAgIGlmIHZlcnNpb24gPT0gJzMuMi4wJzoKLSAgICAgICAgICAgIGRhdGEgPSB6aXAub3BlbignVW5paGFuLTMuMi4wLnR4dCcpLnJlYWQoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGF0YSA9IHppcC5vcGVuKCdVbmloYW5fTnVtZXJpY1ZhbHVlcy50eHQnKS5yZWFkKCkKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoVU5JSEFOLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgemlwID0gemlwZmlsZS5aaXBGaWxlKGZpbGUpCisgICAgICAgICAgICBpZiB2ZXJzaW9uID09ICczLjIuMCc6CisgICAgICAgICAgICAgICAgZGF0YSA9IHppcC5vcGVuKCdVbmloYW4tMy4yLjAudHh0JykucmVhZCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSB6aXAub3BlbignVW5paGFuX051bWVyaWNWYWx1ZXMudHh0JykucmVhZCgpCiAgICAgICAgIGZvciBsaW5lIGluIGRhdGEuZGVjb2RlKCJ1dGYtOCIpLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJ1UrJyk6CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTk2NSw2ICsxMTA2LDM0IEBACiAgICAgICAgICAgICAjIFBhdGNoIHRoZSBudW1lcmljIGZpZWxkCiAgICAgICAgICAgICBpZiB0YWJsZVtpXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0YWJsZVtpXVs4XSA9IHZhbHVlCisgICAgICAgIHNjID0gc2VsZi5zcGVjaWFsX2Nhc2luZyA9IHt9CisgICAgICAgIHdpdGggb3Blbl9kYXRhKFNQRUNJQUxfQ0FTSU5HLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICBzID0gc1s6LTFdLnNwbGl0KCcjJywgMSlbMF0KKyAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBkYXRhID0gcy5zcGxpdCgiOyAiKQorICAgICAgICAgICAgICAgIGlmIGRhdGFbNF06CisgICAgICAgICAgICAgICAgICAgICMgV2UgaWdub3JlIGFsbCBjb25kaXRpb25hbHMgKHNpbmNlIHRoZXkgZGVwZW5kIG9uCisgICAgICAgICAgICAgICAgICAgICMgbGFuZ3VhZ2VzKSBleGNlcHQgZm9yIG9uZSwgd2hpY2ggaXMgaGFyZGNvZGVkLiBTZWUKKyAgICAgICAgICAgICAgICAgICAgIyBoYW5kbGVfY2FwaXRhbF9zaWdtYSBpbiB1bmljb2Rlb2JqZWN0LmMuCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgYyA9IGludChkYXRhWzBdLCAxNikKKyAgICAgICAgICAgICAgICBsb3dlciA9IFtpbnQoY2hhciwgMTYpIGZvciBjaGFyIGluIGRhdGFbMV0uc3BsaXQoKV0KKyAgICAgICAgICAgICAgICB0aXRsZSA9IFtpbnQoY2hhciwgMTYpIGZvciBjaGFyIGluIGRhdGFbMl0uc3BsaXQoKV0KKyAgICAgICAgICAgICAgICB1cHBlciA9IFtpbnQoY2hhciwgMTYpIGZvciBjaGFyIGluIGRhdGFbM10uc3BsaXQoKV0KKyAgICAgICAgICAgICAgICBzY1tjXSA9IChsb3dlciwgdGl0bGUsIHVwcGVyKQorICAgICAgICBjZiA9IHNlbGYuY2FzZV9mb2xkaW5nID0ge30KKyAgICAgICAgaWYgdmVyc2lvbiAhPSAnMy4yLjAnOgorICAgICAgICAgICAgd2l0aCBvcGVuX2RhdGEoQ0FTRV9GT0xESU5HLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIHMgPSBzWzotMV0uc3BsaXQoJyMnLCAxKVswXQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzLnNwbGl0KCI7ICIpCisgICAgICAgICAgICAgICAgICAgIGlmIGRhdGFbMV0gaW4gIkNGIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpbnQoZGF0YVswXSwgMTYpCisgICAgICAgICAgICAgICAgICAgICAgICBjZltjXSA9IFtpbnQoY2hhciwgMTYpIGZvciBjaGFyIGluIGRhdGFbMl0uc3BsaXQoKV0KIAogICAgIGRlZiB1c2VsYXRpbjEoc2VsZik6CiAgICAgICAgICMgcmVzdHJpY3QgY2hhcmFjdGVyIHJhbmdlIHRvIElTTyBMYXRpbiAxCmRpZmYgLS1naXQgYS9Ub29scy91bml0dGVzdGd1aS91bml0dGVzdGd1aS5weSBiL1Rvb2xzL3VuaXR0ZXN0Z3VpL3VuaXR0ZXN0Z3VpLnB5CmluZGV4IGI1MjY2NDYuLjA5YTIwZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaXR0ZXN0Z3VpL3VuaXR0ZXN0Z3VpLnB5CisrKyBiL1Rvb2xzL3VuaXR0ZXN0Z3VpL3VuaXR0ZXN0Z3VpLnB5CkBAIC0yOCw3ICsyOCw2IEBACiAiIiIKIAogX19hdXRob3JfXyA9ICJTdGV2ZSBQdXJjZWxsIChzdGVwaGVuX3B1cmNlbGxAeWFob28uY29tKSIKLV9fdmVyc2lvbl9fID0gIiRSZXZpc2lvbjogMS43ICQiWzExOi0yXQogCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCmRpZmYgLS1naXQgYS9jb25maWcuZ3Vlc3MgYi9jb25maWcuZ3Vlc3MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDYyMmE0NAotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy5ndWVzcwpAQCAtMCwwICsxLDE1MzAgQEAKKyMhIC9iaW4vc2gKKyMgQXR0ZW1wdCB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZS4KKyMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCisjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKKyMgICAyMDExLCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCit0aW1lc3RhbXA9JzIwMTItMDItMTAnCisKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCisKKyMgT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLiAgUGxlYXNlIHNlbmQgcGF0Y2hlcyAoY29udGV4dAorIyBkaWZmIGZvcm1hdCkgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+IGFuZCBpbmNsdWRlIGEgQ2hhbmdlTG9nCisjIGVudHJ5LgorIworIyBUaGlzIHNjcmlwdCBhdHRlbXB0cyB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZSBzaW1pbGFyIHRvCisjIGNvbmZpZy5zdWIuICBJZiBpdCBzdWNjZWVkcywgaXQgcHJpbnRzIHRoZSBzeXN0ZW0gbmFtZSBvbiBzdGRvdXQsIGFuZAorIyBleGl0cyB3aXRoIDAuICBPdGhlcndpc2UsIGl0IGV4aXRzIHdpdGggMS4KKyMKKyMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206CisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAorCittZT1gZWNobyAiJDAiIHwgc2VkIC1lICdzLC4qLywsJ2AKKwordXNhZ2U9IlwKK1VzYWdlOiAkMCBbT1BUSU9OXQorCitPdXRwdXQgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZSBvZiB0aGUgc3lzdGVtIFxgJG1lJyBpcyBydW4gb24uCisKK09wZXJhdGlvbiBtb2RlczoKKyAgLWgsIC0taGVscCAgICAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CisgIC10LCAtLXRpbWUtc3RhbXAgICBwcmludCBkYXRlIG9mIGxhc3QgbW9kaWZpY2F0aW9uLCB0aGVuIGV4aXQKKyAgLXYsIC0tdmVyc2lvbiAgICAgIHByaW50IHZlcnNpb24gbnVtYmVyLCB0aGVuIGV4aXQKKworUmVwb3J0IGJ1Z3MgYW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiIKKwordmVyc2lvbj0iXAorR05VIGNvbmZpZy5ndWVzcyAoJHRpbWVzdGFtcCkKKworT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLgorQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLAorMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMgorRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCit3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCisKK2hlbHA9IgorVHJ5IFxgJG1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorCisjIFBhcnNlIGNvbW1hbmQgbGluZQord2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtLXRpbWUtc3RhbXAgfCAtLXRpbWUqIHwgLXQgKQorICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OworICAgIC0tdmVyc2lvbiB8IC12ICkKKyAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7CisgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKKyAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7CisgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgc2hpZnQ7IGJyZWFrIDs7CisgICAgLSApCSMgVXNlIHN0ZGluIGFzIGlucHV0LgorICAgICAgIGJyZWFrIDs7CisgICAgLSogKQorICAgICAgIGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIgPiYyCisgICAgICAgZXhpdCAxIDs7CisgICAgKiApCisgICAgICAgYnJlYWsgOzsKKyAgZXNhYworZG9uZQorCitpZiB0ZXN0ICQjICE9IDA7IHRoZW4KKyAgZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIgPiYyCisgIGV4aXQgMQorZmkKKwordHJhcCAnZXhpdCAxJyAxIDIgMTUKKworIyBDQ19GT1JfQlVJTEQgLS0gY29tcGlsZXIgdXNlZCBieSB0aGlzIHNjcmlwdC4gTm90ZSB0aGF0IHRoZSB1c2Ugb2YgYQorIyBjb21waWxlciB0byBhaWQgaW4gc3lzdGVtIGRldGVjdGlvbiBpcyBkaXNjb3VyYWdlZCBhcyBpdCByZXF1aXJlcworIyB0ZW1wb3JhcnkgZmlsZXMgdG8gYmUgY3JlYXRlZCBhbmQsIGFzIHlvdSBjYW4gc2VlIGJlbG93LCBpdCBpcyBhCisjIGhlYWRhY2hlIHRvIGRlYWwgd2l0aCBpbiBhIHBvcnRhYmxlIGZhc2hpb24uCisKKyMgSGlzdG9yaWNhbGx5LCBgQ0NfRk9SX0JVSUxEJyB1c2VkIHRvIGJlIG5hbWVkIGBIT1NUX0NDJy4gV2Ugc3RpbGwKKyMgdXNlIGBIT1NUX0NDJyBpZiBkZWZpbmVkLCBidXQgaXQgaXMgZGVwcmVjYXRlZC4KKworIyBQb3J0YWJsZSB0bXAgZGlyZWN0b3J5IGNyZWF0aW9uIGluc3BpcmVkIGJ5IHRoZSBBdXRvY29uZiB0ZWFtLgorCitzZXRfY2NfZm9yX2J1aWxkPScKK3RyYXAgImV4aXRjb2RlPVwkPzsgKHJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsKSAmJiBleGl0IFwkZXhpdGNvZGUiIDAgOwordHJhcCAicm0gLWYgXCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGw7IGV4aXQgMSIgMSAyIDEzIDE1IDsKKzogJHtUTVBESVI9L3RtcH0gOworIHsgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAiJFRNUERJUi9jZ1hYWFhYWCIpIDI+L2Rldi9udWxsYCAmJiB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIiA7IH0gfHwKKyB7IHRlc3QgLW4gIiRSQU5ET00iICYmIHRtcD0kVE1QRElSL2NnJCQtJFJBTkRPTSAmJiAodW1hc2sgMDc3ICYmIG1rZGlyICR0bXApIDsgfSB8fAorIHsgdG1wPSRUTVBESVIvY2ctJCQgJiYgKHVtYXNrIDA3NyAmJiBta2RpciAkdG1wKSAmJiBlY2hvICJXYXJuaW5nOiBjcmVhdGluZyBpbnNlY3VyZSB0ZW1wIGRpcmVjdG9yeSIgPiYyIDsgfSB8fAorIHsgZWNobyAiJG1lOiBjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAkVE1QRElSIiA+JjIgOyBleGl0IDEgOyB9IDsKK2R1bW15PSR0bXAvZHVtbXkgOwordG1wZmlsZXM9IiRkdW1teS5jICRkdW1teS5vICRkdW1teS5yZWwgJGR1bW15IiA7CitjYXNlICRDQ19GT1JfQlVJTEQsJEhPU1RfQ0MsJENDIGluCisgLCwpICAgIGVjaG8gImludCB4OyIgPiAkZHVtbXkuYyA7CisJZm9yIGMgaW4gY2MgZ2NjIGM4OSBjOTkgOyBkbworCSAgaWYgKCRjIC1jIC1vICRkdW1teS5vICRkdW1teS5jKSA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJICAgICBDQ19GT1JfQlVJTEQ9IiRjIjsgYnJlYWsgOworCSAgZmkgOworCWRvbmUgOworCWlmIHRlc3QgeCIkQ0NfRk9SX0JVSUxEIiA9IHggOyB0aGVuCisJICBDQ19GT1JfQlVJTEQ9bm9fY29tcGlsZXJfZm91bmQgOworCWZpCisJOzsKKyAsLCopICAgQ0NfRk9SX0JVSUxEPSRDQyA7OworICwqLCopICBDQ19GT1JfQlVJTEQ9JEhPU1RfQ0MgOzsKK2VzYWMgOyBzZXRfY2NfZm9yX2J1aWxkPSA7JworCisjIFRoaXMgaXMgbmVlZGVkIHRvIGZpbmQgdW5hbWUgb24gYSBQeXJhbWlkIE9TeCB3aGVuIHJ1biBpbiB0aGUgQlNEIHVuaXZlcnNlLgorIyAoZ2hhemlAbm9jLnJ1dGdlcnMuZWR1IDE5OTQtMDgtMjQpCitpZiAodGVzdCAtZiAvLmF0dGJpbi91bmFtZSkgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCVBBVEg9JFBBVEg6Ly5hdHRiaW4gOyBleHBvcnQgUEFUSAorZmkKKworVU5BTUVfTUFDSElORT1gKHVuYW1lIC1tKSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfTUFDSElORT11bmtub3duCitVTkFNRV9SRUxFQVNFPWAodW5hbWUgLXIpIDI+L2Rldi9udWxsYCB8fCBVTkFNRV9SRUxFQVNFPXVua25vd24KK1VOQU1FX1NZU1RFTT1gKHVuYW1lIC1zKSAyPi9kZXYvbnVsbGAgIHx8IFVOQU1FX1NZU1RFTT11bmtub3duCitVTkFNRV9WRVJTSU9OPWAodW5hbWUgLXYpIDI+L2Rldi9udWxsYCB8fCBVTkFNRV9WRVJTSU9OPXVua25vd24KKworIyBOb3RlOiBvcmRlciBpcyBzaWduaWZpY2FudCAtIHRoZSBjYXNlIGJyYW5jaGVzIGFyZSBub3QgZXhjbHVzaXZlLgorCitjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVBU0V9OiR7VU5BTUVfVkVSU0lPTn0iIGluCisgICAgKjpOZXRCU0Q6KjoqKQorCSMgTmV0QlNEIChuYnNkKSB0YXJnZXRzIHNob3VsZCAod2hlcmUgYXBwbGljYWJsZSkgbWF0Y2ggb25lIG9yCisJIyBtb3JlIG9mIHRoZSB0dXBsZXM6ICotKi1uZXRic2RlbGYqLCAqLSotbmV0YnNkYW91dCosCisJIyAqLSotbmV0YnNkZWNvZmYqIGFuZCAqLSotbmV0YnNkKi4gIEZvciB0YXJnZXRzIHRoYXQgcmVjZW50bHkKKwkjIHN3aXRjaGVkIHRvIEVMRiwgKi0qLW5ldGJzZCogd291bGQgc2VsZWN0IHRoZSBvbGQKKwkjIG9iamVjdCBmaWxlIGZvcm1hdC4gIFRoaXMgcHJvdmlkZXMgYm90aCBmb3J3YXJkCisJIyBjb21wYXRpYmlsaXR5IGFuZCBhIGNvbnNpc3RlbnQgbWVjaGFuaXNtIGZvciBzZWxlY3RpbmcgdGhlCisJIyBvYmplY3QgZmlsZSBmb3JtYXQuCisJIworCSMgTm90ZTogTmV0QlNEIGRvZXNuJ3QgcGFydGljdWxhcmx5IGNhcmUgYWJvdXQgdGhlIHZlbmRvcgorCSMgcG9ydGlvbiBvZiB0aGUgbmFtZS4gIFdlIGFsd2F5cyBzZXQgaXQgdG8gInVua25vd24iLgorCXN5c2N0bD0ic3lzY3RsIC1uIGh3Lm1hY2hpbmVfYXJjaCIKKwlVTkFNRV9NQUNISU5FX0FSQ0g9YCgvc2Jpbi8kc3lzY3RsIDI+L2Rldi9udWxsIHx8IFwKKwkgICAgL3Vzci9zYmluLyRzeXNjdGwgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duKWAKKwljYXNlICIke1VOQU1FX01BQ0hJTkVfQVJDSH0iIGluCisJICAgIGFybWViKSBtYWNoaW5lPWFybWViLXVua25vd24gOzsKKwkgICAgYXJtKikgbWFjaGluZT1hcm0tdW5rbm93biA7OworCSAgICBzaDNlbCkgbWFjaGluZT1zaGwtdW5rbm93biA7OworCSAgICBzaDNlYikgbWFjaGluZT1zaC11bmtub3duIDs7CisJICAgIHNoNWVsKSBtYWNoaW5lPXNoNWxlLXVua25vd24gOzsKKwkgICAgKikgbWFjaGluZT0ke1VOQU1FX01BQ0hJTkVfQVJDSH0tdW5rbm93biA7OworCWVzYWMKKwkjIFRoZSBPcGVyYXRpbmcgU3lzdGVtIGluY2x1ZGluZyBvYmplY3QgZm9ybWF0LCBpZiBpdCBoYXMgc3dpdGNoZWQKKwkjIHRvIEVMRiByZWNlbnRseSwgb3Igd2lsbCBpbiB0aGUgZnV0dXJlLgorCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KKwkgICAgYXJtKnxpMzg2fG02OGt8bnMzMmt8c2gzKnxzcGFyY3x2YXgpCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJaWYgZWNobyBfX0VMRl9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKKwkJCXwgZ3JlcCAtcSBfX0VMRl9fCisJCXRoZW4KKwkJICAgICMgT25jZSBhbGwgdXRpbGl0aWVzIGNhbiBiZSBFQ09GRiAobmV0YnNkZWNvZmYpIG9yIGEub3V0IChuZXRic2Rhb3V0KS4KKwkJICAgICMgUmV0dXJuIG5ldGJzZCBmb3IgZWl0aGVyLiAgRklYPworCQkgICAgb3M9bmV0YnNkCisJCWVsc2UKKwkJICAgIG9zPW5ldGJzZGVsZgorCQlmaQorCQk7OworCSAgICAqKQorCQlvcz1uZXRic2QKKwkJOzsKKwllc2FjCisJIyBUaGUgT1MgcmVsZWFzZQorCSMgRGViaWFuIEdOVS9OZXRCU0QgbWFjaGluZXMgaGF2ZSBhIGRpZmZlcmVudCB1c2VybGFuZCwgYW5kCisJIyB0aHVzLCBuZWVkIGEgZGlzdGluY3QgdHJpcGxldC4gSG93ZXZlciwgdGhleSBkbyBub3QgbmVlZAorCSMga2VybmVsIHZlcnNpb24gaW5mb3JtYXRpb24sIHNvIGl0IGNhbiBiZSByZXBsYWNlZCB3aXRoIGEKKwkjIHN1aXRhYmxlIHRhZywgaW4gdGhlIHN0eWxlIG9mIGxpbnV4LWdudS4KKwljYXNlICIke1VOQU1FX1ZFUlNJT059IiBpbgorCSAgICBEZWJpYW4qKQorCQlyZWxlYXNlPSctZ251JworCQk7OworCSAgICAqKQorCQlyZWxlYXNlPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stX10uKi9cLi8nYAorCQk7OworCWVzYWMKKwkjIFNpbmNlIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTToKKwkjIGNvbnRhaW5zIHJlZHVuZGFudCBpbmZvcm1hdGlvbiwgdGhlIHNob3J0ZXIgZm9ybToKKwkjIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNIGlzIHVzZWQuCisJZWNobyAiJHttYWNoaW5lfS0ke29zfSR7cmVsZWFzZX0iCisJZXhpdCA7OworICAgICo6T3BlbkJTRDoqOiopCisJVU5BTUVfTUFDSElORV9BUkNIPWBhcmNoIHwgc2VkICdzL09wZW5CU0QuLy8nYAorCWVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpla2tvQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1la2tvYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlNvbGlkQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zb2xpZGJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWFjcHBjOk1pckJTRDoqOiopCisJZWNobyBwb3dlcnBjLXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk1pckJTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBhbHBoYTpPU0YxOio6KikKKwljYXNlICRVTkFNRV9SRUxFQVNFIGluCisJKjQuMCkKKwkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDN9J2AKKwkJOzsKKwkqNS4qKQorCQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkNH0nYAorCQk7OworCWVzYWMKKwkjIEFjY29yZGluZyB0byBDb21wYXEsIC91c3Ivc2Jpbi9wc3JpbmZvIGhhcyBiZWVuIGF2YWlsYWJsZSBvbgorCSMgT1NGLzEgYW5kIFRydTY0IHN5c3RlbXMgcHJvZHVjZWQgc2luY2UgMTk5NS4gIEkgaG9wZSB0aGF0CisJIyBjb3ZlcnMgbW9zdCBzeXN0ZW1zIHJ1bm5pbmcgdG9kYXkuICBUaGlzIGNvZGUgcGlwZXMgdGhlIENQVQorCSMgdHlwZXMgdGhyb3VnaCBoZWFkIC1uIDEsIHNvIHdlIG9ubHkgZGV0ZWN0IHRoZSB0eXBlIG9mIENQVSAwLgorCUFMUEhBX0NQVV9UWVBFPWAvdXNyL3NiaW4vcHNyaW5mbyAtdiB8IHNlZCAtbiAtZSAncy9eICBUaGUgYWxwaGEgXCguKlwpIHByb2Nlc3Nvci4qJC9cMS9wJyB8IGhlYWQgLW4gMWAKKwljYXNlICIkQUxQSEFfQ1BVX1RZUEUiIGluCisJICAgICJFVjQgKDIxMDY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiRVY0LjUgKDIxMDY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiTENBNCAoMjEwNjYvMjEwNjgpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGEiIDs7CisJICAgICJFVjUgKDIxMTY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY1IiA7OworCSAgICAiRVY1LjYgKDIxMTY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NTYiIDs7CisJICAgICJFVjUuNiAoMjExNjRQQykiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYXBjYTU2IiA7OworCSAgICAiRVY1LjcgKDIxMTY0UEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFwY2E1NyIgOzsKKwkgICAgIkVWNiAoMjEyNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjYiIDs7CisJICAgICJFVjYuNyAoMjEyNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2NyIgOzsKKwkgICAgIkVWNi44Q0IgKDIxMjY0QykiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CisJICAgICJFVjYuOEFMICgyMTI2NEIpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OworCSAgICAiRVY2LjhDWCAoMjEyNjREKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKKwkgICAgIkVWNi45QSAoMjEyNjQvRVY2OUEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY5IiA7OworCSAgICAiRVY3ICgyMTM2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NyIgOzsKKwkgICAgIkVWNy45ICgyMTM2NEEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjc5IiA7OworCWVzYWMKKwkjIEEgUG4ubiB2ZXJzaW9uIGlzIGEgcGF0Y2hlZCB2ZXJzaW9uLgorCSMgQSBWbi5uIHZlcnNpb24gaXMgYSByZWxlYXNlZCB2ZXJzaW9uLgorCSMgQSBUbi5uIHZlcnNpb24gaXMgYSByZWxlYXNlZCBmaWVsZCB0ZXN0IHZlcnNpb24uCisJIyBBIFhuLm4gdmVyc2lvbiBpcyBhbiB1bnJlbGVhc2VkIGV4cGVyaW1lbnRhbCBiYXNlbGV2ZWwuCisJIyAxLjIgdXNlcyAiMS4yIiBmb3IgdW5hbWUgLXIuCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1vc2ZgZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL15bUFZUWF0vLycgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCisJIyBSZXNldCBFWElUIHRyYXAgYmVmb3JlIGV4aXRpbmcgdG8gYXZvaWQgc3B1cmlvdXMgbm9uLXplcm8gZXhpdCBjb2RlLgorCWV4aXRjb2RlPSQ/CisJdHJhcCAnJyAwCisJZXhpdCAkZXhpdGNvZGUgOzsKKyAgICBBbHBoYVwgKjpXaW5kb3dzX05UKjoqKQorCSMgSG93IGRvIHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5c3RlbT8KKwkjIFNob3VsZCB3ZSBjaGFuZ2UgVU5BTUVfTUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQKKwkjIG9mIHRoZSBzcGVjaWZpYyBBbHBoYSBtb2RlbD8KKwllY2hvIGFscGhhLXBjLWludGVyaXgKKwlleGl0IDs7CisgICAgMjEwNjQ6V2luZG93c19OVDo1MDozKQorCWVjaG8gYWxwaGEtZGVjLXdpbm50My41CisJZXhpdCA7OworICAgIEFtaWdhKjpVTklYX1N5c3RlbV9WOjQuMDoqKQorCWVjaG8gbTY4ay11bmtub3duLXN5c3Y0CisJZXhpdCA7OworICAgICo6W0FhXW1pZ2FbT29dW1NzXToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYW1pZ2FvcworCWV4aXQgOzsKKyAgICAqOltNbV1vcnBoW09vXVtTc106KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1vcnBob3MKKwlleGl0IDs7CisgICAgKjpPUy8zOTA6KjoqKQorCWVjaG8gaTM3MC1pYm0tb3BlbmVkaXRpb24KKwlleGl0IDs7CisgICAgKjp6L1ZNOio6KikKKwllY2hvIHMzOTAtaWJtLXp2bW9lCisJZXhpdCA7OworICAgICo6T1M0MDA6KjoqKQorCWVjaG8gcG93ZXJwYy1pYm0tb3M0MDAKKwlleGl0IDs7CisgICAgYXJtOlJJU0MqOjEuWzAxMl0qOip8YXJtOnJpc2NpeDoxLlswMTJdKjoqKQorCWVjaG8gYXJtLWFjb3JuLXJpc2NpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgYXJtOnJpc2NvczoqOip8YXJtOlJJU0NPUzoqOiopCisJZWNobyBhcm0tdW5rbm93bi1yaXNjb3MKKwlleGl0IDs7CisgICAgU1IyPzAxOkhJLVVYL01QUDoqOiogfCBTUjgwMDA6SEktVVgvTVBQOio6KikKKwllY2hvIGhwcGExLjEtaGl0YWNoaS1oaXV4bXBwCisJZXhpdCA7OworICAgIFB5cmFtaWQqOk9TeCo6KjoqIHwgTUlTKjpPU3gqOio6KiB8IE1JUyo6U01QX0RDLU9TeCo6KjoqKQorCSMgYWtlZUB3cGRpczAzLndwYWZiLmFmLm1pbCAoRWFybGUgRi4gQWtlKSBjb250cmlidXRlZCBNSVMgYW5kIE5JTEUuCisJaWYgdGVzdCAiYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbGAiID0gYXR0IDsgdGhlbgorCQllY2hvIHB5cmFtaWQtcHlyYW1pZC1zeXN2MworCWVsc2UKKwkJZWNobyBweXJhbWlkLXB5cmFtaWQtYnNkCisJZmkKKwlleGl0IDs7CisgICAgTklMRSo6KjoqOmRjb3N4KQorCWVjaG8gcHlyYW1pZC1weXJhbWlkLXN2cjQKKwlleGl0IDs7CisgICAgRFJTPzYwMDA6dW5peDo0LjA6NiopCisJZWNobyBzcGFyYy1pY2wtbng2CisJZXhpdCA7OworICAgIERSUz82MDAwOlVOSVhfU1Y6NC4yKjo3KiB8IERSUz82MDAwOmlzaXM6NC4yKjo3KikKKwljYXNlIGAvdXNyL2Jpbi91bmFtZSAtcGAgaW4KKwkgICAgc3BhcmMpIGVjaG8gc3BhcmMtaWNsLW54NzsgZXhpdCA7OworCWVzYWMgOzsKKyAgICBzMzkweDpTdW5PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40SDpTdW5PUzo1Lio6KikKKwllY2hvIHNwYXJjLWhhbC1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40KjpTdW5PUzo1Lio6KiB8IHRhZHBvbGUqOlN1bk9TOjUuKjoqKQorCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIGk4NnBjOkF1cm9yYVVYOjUuKjoqIHwgaTg2eGVuOkF1cm9yYVVYOjUuKjoqKQorCWVjaG8gaTM4Ni1wYy1hdXJvcmF1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgaTg2cGM6U3VuT1M6NS4qOiogfCBpODZ4ZW46U3VuT1M6NS4qOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCVNVTl9BUkNIPSJpMzg2IgorCSMgSWYgdGhlcmUgaXMgYSBjb21waWxlciwgc2VlIGlmIGl0IGlzIGNvbmZpZ3VyZWQgZm9yIDY0LWJpdCBvYmplY3RzLgorCSMgTm90ZSB0aGF0IHRoZSBTdW4gY2MgZG9lcyBub3QgdHVybiBfX0xQNjRfXyBpbnRvIDEgbGlrZSBnY2MgZG9lcy4KKwkjIFRoaXMgdGVzdCB3b3JrcyBmb3IgYm90aCBjb21waWxlcnMuCisJaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gJ25vX2NvbXBpbGVyX2ZvdW5kJyBdOyB0aGVuCisJICAgIGlmIChlY2hvICcjaWZkZWYgX19hbWQ2NCc7IGVjaG8gSVNfNjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCisJCShDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCWdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCisJICAgIHRoZW4KKwkJU1VOX0FSQ0g9Ing4Nl82NCIKKwkgICAgZmkKKwlmaQorCWVjaG8gJHtTVU5fQVJDSH0tcGMtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6U3VuT1M6Nio6KikKKwkjIEFjY29yZGluZyB0byBjb25maWcuc3ViLCB0aGlzIGlzIHRoZSBwcm9wZXIgd2F5IHRvIGNhbm9uaWNhbGl6ZQorCSMgU3VuT1M2LiAgSGFyZCB0byBndWVzcyBleGFjdGx5IHdoYXQgU3VuT1M2IHdpbGwgYmUgbGlrZSwgYnV0CisJIyBpdCdzIGxpa2VseSB0byBiZSBtb3JlIGxpa2UgU29sYXJpcyB0aGFuIFN1bk9TNC4KKwllY2hvIHNwYXJjLXN1bi1zb2xhcmlzM2BlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40KjpTdW5PUzoqOiopCisJY2FzZSAiYC91c3IvYmluL2FyY2ggLWtgIiBpbgorCSAgICBTZXJpZXMqfFM0KikKKwkJVU5BTUVfUkVMRUFTRT1gdW5hbWUgLXZgCisJCTs7CisJZXNhYworCSMgSmFwYW5lc2UgTGFuZ3VhZ2UgdmVyc2lvbnMgaGF2ZSBhIHZlcnNpb24gbnVtYmVyIGxpa2UgYDQuMS4zLUpMJy4KKwllY2hvIHNwYXJjLXN1bi1zdW5vc2BlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLy0vXy8nYAorCWV4aXQgOzsKKyAgICBzdW4zKjpTdW5PUzoqOiopCisJZWNobyBtNjhrLXN1bi1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgc3VuKjoqOjQuMkJTRDoqKQorCVVOQU1FX1JFTEVBU0U9YChzZWQgMXEgL2V0Yy9tb3RkIHwgYXdrICd7cHJpbnQgc3Vic3RyKCQ1LDEsMyl9JykgMj4vZGV2L251bGxgCisJdGVzdCAieCR7VU5BTUVfUkVMRUFTRX0iID0gIngiICYmIFVOQU1FX1JFTEVBU0U9MworCWNhc2UgImAvYmluL2FyY2hgIiBpbgorCSAgICBzdW4zKQorCQllY2hvIG02OGstc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCQk7OworCSAgICBzdW40KQorCQllY2hvIHNwYXJjLXN1bi1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwkJOzsKKwllc2FjCisJZXhpdCA7OworICAgIGF1c2hwOlN1bk9TOio6KikKKwllY2hvIHNwYXJjLWF1c3BleC1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgIyBUaGUgc2l0dWF0aW9uIGZvciBNaU5UIGlzIGEgbGl0dGxlIGNvbmZ1c2luZy4gIFRoZSBtYWNoaW5lIG5hbWUKKyAgICAjIGNhbiBiZSB2aXJ0dWFsbHkgZXZlcnl0aGluZyAoZXZlcnl0aGluZyB3aGljaCBpcyBub3QKKyAgICAjICJhdGFyaXN0IiBvciAiYXRhcmlzdGUiIGF0IGxlYXN0IHNob3VsZCBoYXZlIGEgcHJvY2Vzc29yCisgICAgIyA+IG02ODAwMCkuICBUaGUgc3lzdGVtIG5hbWUgcmFuZ2VzIGZyb20gIk1pTlQiIG92ZXIgIkZyZWVNaU5UIgorICAgICMgdG8gdGhlIGxvd2VyY2FzZSB2ZXJzaW9uICJtaW50IiAob3IgImZyZWVtaW50IikuICBGaW5hbGx5CisgICAgIyB0aGUgc3lzdGVtIG5hbWUgIlRPUyIgZGVub3RlcyBhIHN5c3RlbSB3aGljaCBpcyBhY3R1YWxseSBub3QKKyAgICAjIE1pTlQuICBCdXQgTWlOVCBpcyBkb3dud2FyZCBjb21wYXRpYmxlIHRvIFRPUywgc28gdGhpcyBzaG91bGQKKyAgICAjIGJlIG5vIHByb2JsZW0uCisgICAgYXRhcmlzdFtlXToqTWlOVDoqOiogfCBhdGFyaXN0W2VdOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGF0YXJpKjoqTWlOVDoqOiogfCBhdGFyaSo6Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKmZhbGNvbio6Kk1pTlQ6KjoqIHwgKmZhbGNvbio6Km1pbnQ6KjoqIHwgKmZhbGNvbio6KlRPUzoqOiopCisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1pbGFuKjoqTWlOVDoqOiogfCBtaWxhbio6Km1pbnQ6KjoqIHwgKm1pbGFuKjoqVE9TOio6KikKKwllY2hvIG02OGstbWlsYW4tbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgaGFkZXMqOipNaU5UOio6KiB8IGhhZGVzKjoqbWludDoqOiogfCAqaGFkZXMqOipUT1M6KjoqKQorCWVjaG8gbTY4ay1oYWRlcy1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOipNaU5UOio6KiB8ICo6Km1pbnQ6KjoqIHwgKjoqVE9TOio6KikKKwllY2hvIG02OGstdW5rbm93bi1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtNjhrOm1hY2h0ZW46KjoqKQorCWVjaG8gbTY4ay1hcHBsZS1tYWNodGVuJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBwb3dlcnBjOm1hY2h0ZW46KjoqKQorCWVjaG8gcG93ZXJwYy1hcHBsZS1tYWNodGVuJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBSSVNDKjpNYWNoOio6KikKKwllY2hvIG1pcHMtZGVjLW1hY2hfYnNkNC4zCisJZXhpdCA7OworICAgIFJJU0MqOlVMVFJJWDoqOiopCisJZWNobyBtaXBzLWRlYy11bHRyaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFZBWCo6VUxUUklYKjoqOiopCisJZWNobyB2YXgtZGVjLXVsdHJpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgMjAyMDpDTElYOio6KiB8IDI0MzA6Q0xJWDoqOiopCisJZWNobyBjbGlwcGVyLWludGVyZ3JhcGgtY2xpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWlwczoqOio6VU1JUFMgfCBtaXBzOio6KjpSSVNDb3MpCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisjaWZkZWYgX19jcGx1c3BsdXMKKyNpbmNsdWRlIDxzdGRpby5oPiAgLyogZm9yIHByaW50ZigpIHByb3RvdHlwZSAqLworCWludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisjZWxzZQorCWludCBtYWluIChhcmdjLCBhcmd2KSBpbnQgYXJnYzsgY2hhciAqYXJndltdOyB7CisjZW5kaWYKKwkjaWYgZGVmaW5lZCAoaG9zdF9taXBzKSAmJiBkZWZpbmVkIChNSVBTRUIpCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfU1lTVikKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc3N5c3ZcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkjZW5kaWYKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9TVlI0KQorCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2NvcyVzc3ZyNFxuIiwgYXJndlsxXSk7IGV4aXQgKDApOworCSNlbmRpZgorCSNpZiBkZWZpbmVkIChTWVNUWVBFX0JTRDQzKSB8fCBkZWZpbmVkKFNZU1RZUEVfQlNEKQorCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2NvcyVzYnNkXG4iLCBhcmd2WzFdKTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2VuZGlmCisJICBleGl0ICgtMSk7CisJfQorRU9GCisJJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYKKwkgIGR1bW15YXJnPWBlY2hvICIke1VOQU1FX1JFTEVBU0V9IiB8IHNlZCAtbiAncy9cKFswLTldKlwpLiovXDEvcCdgICYmCisJICBTWVNURU1fTkFNRT1gJGR1bW15ICRkdW1teWFyZ2AgJiYKKwkgICAgeyBlY2hvICIkU1lTVEVNX05BTUUiOyBleGl0OyB9CisJZWNobyBtaXBzLW1pcHMtcmlzY29zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBNb3Rvcm9sYTpQb3dlck1BWF9PUzoqOiopCisJZWNobyBwb3dlcnBjLW1vdG9yb2xhLXBvd2VybWF4CisJZXhpdCA7OworICAgIE1vdG9yb2xhOio6NC4zOlBMOC0qKQorCWVjaG8gcG93ZXJwYy1oYXJyaXMtcG93ZXJtYXgKKwlleGl0IDs7CisgICAgTmlnaHRfSGF3azoqOio6UG93ZXJNQVhfT1MgfCBTeW5lcmd5OlBvd2VyTUFYX09TOio6KikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4CisJZXhpdCA7OworICAgIE5pZ2h0X0hhd2s6UG93ZXJfVU5JWDoqOiopCisJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcnVuaXgKKwlleGl0IDs7CisgICAgbTg4azpDWC9VWDo3KjoqKQorCWVjaG8gbTg4ay1oYXJyaXMtY3h1eDcKKwlleGl0IDs7CisgICAgbTg4azoqOjQqOlI0KikKKwllY2hvIG04OGstbW90b3JvbGEtc3lzdjQKKwlleGl0IDs7CisgICAgbTg4azoqOjMqOlIzKikKKwllY2hvIG04OGstbW90b3JvbGEtc3lzdjMKKwlleGl0IDs7CisgICAgQVZpaU9OOmRndXg6KjoqKQorCSMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNoaXRlY3R1cmVzCisJVU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKKwlpZiBbICRVTkFNRV9QUk9DRVNTT1IgPSBtYzg4MTAwIF0gfHwgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODExMCBdCisJdGhlbgorCSAgICBpZiBbICR7VEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0V9eCA9IG04OGtkZ3V4ZWxmeCBdIHx8IFwKKwkgICAgICAgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSB4IF0KKwkgICAgdGhlbgorCQllY2hvIG04OGstZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZWxzZQorCQllY2hvIG04OGstZGctZGd1eGJjcyR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZmkKKwllbHNlCisJICAgIGVjaG8gaTU4Ni1kZy1kZ3V4JHtVTkFNRV9SRUxFQVNFfQorCWZpCisJZXhpdCA7OworICAgIE04OCo6RG9scGhpbk9TOio6KikJIyBEb2xwaGluT1MgKFNWUjMpCisJZWNobyBtODhrLWRvbHBoaW4tc3lzdjMKKwlleGl0IDs7CisgICAgTTg4KjoqOlIzKjoqKQorCSMgRGVsdGEgODhrIHN5c3RlbSBydW5uaW5nIFNWUjMKKwllY2hvIG04OGstbW90b3JvbGEtc3lzdjMKKwlleGl0IDs7CisgICAgWEQ4OCo6KjoqOiopICMgVGVrdHJvbml4IFhEODggc3lzdGVtIHJ1bm5pbmcgVVRla1YgKFNWUjMpCisJZWNobyBtODhrLXRla3Ryb25peC1zeXN2MworCWV4aXQgOzsKKyAgICBUZWs0M1swLTldWzAtOV06VVRlazoqOiopICMgVGVrdHJvbml4IDQzMDAgc3lzdGVtIHJ1bm5pbmcgVVRlayAoQlNEKQorCWVjaG8gbTY4ay10ZWt0cm9uaXgtYnNkCisJZXhpdCA7OworICAgICo6SVJJWCo6KjoqKQorCWVjaG8gbWlwcy1zZ2ktaXJpeGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLy0vXy9nJ2AKKwlleGl0IDs7CisgICAgPz8/Pz8/Pz86QUlYPzpbMTJdLjE6MikgICAjIEFJWCAyLjIuMSBvciBBSVggMi4xLjEgaXMgUlQvUEMgQUlYLgorCWVjaG8gcm9tcC1pYm0tYWl4ICAgICAjIHVuYW1lIC1tIGdpdmVzIGFuIDggaGV4LWNvZGUgQ1BVIGlkCisJZXhpdCA7OyAgICAgICAgICAgICAgICMgTm90ZSB0aGF0OiBlY2hvICInYHVuYW1lIC1zYCciIGdpdmVzICdBSVggJworICAgIGkqODY6QUlYOio6KikKKwllY2hvIGkzODYtaWJtLWFpeAorCWV4aXQgOzsKKyAgICBpYTY0OkFJWDoqOiopCisJaWYgWyAteCAvdXNyL2Jpbi9vc2xldmVsIF0gOyB0aGVuCisJCUlCTV9SRVY9YC91c3IvYmluL29zbGV2ZWxgCisJZWxzZQorCQlJQk1fUkVWPSR7VU5BTUVfVkVSU0lPTn0uJHtVTkFNRV9SRUxFQVNFfQorCWZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1haXgke0lCTV9SRVZ9CisJZXhpdCA7OworICAgICo6QUlYOjI6MykKKwlpZiBncmVwIGJvczMyNSAvdXNyL2luY2x1ZGUvc3RkaW8uaCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQlzZWQgJ3MvXgkJLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkJI2luY2x1ZGUgPHN5cy9zeXN0ZW1jZmcuaD4KKworCQltYWluKCkKKwkJCXsKKwkJCWlmICghX19wb3dlcl9wYygpKQorCQkJCWV4aXQoMSk7CisJCQlwdXRzKCJwb3dlcnBjLWlibS1haXgzLjIuNSIpOworCQkJZXhpdCgwKTsKKwkJCX0KK0VPRgorCQlpZiAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJiBTWVNURU1fTkFNRT1gJGR1bW15YAorCQl0aGVuCisJCQllY2hvICIkU1lTVEVNX05BTUUiCisJCWVsc2UKKwkJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIuNQorCQlmaQorCWVsaWYgZ3JlcCBib3MzMjQgL3Vzci9pbmNsdWRlL3N0ZGlvLmggPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIuNAorCWVsc2UKKwkJZWNobyByczYwMDAtaWJtLWFpeDMuMgorCWZpCisJZXhpdCA7OworICAgICo6QUlYOio6WzQ1NjddKQorCUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAorCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVsICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQlJQk1fQVJDSD1yczYwMDAKKwllbHNlCisJCUlCTV9BUkNIPXBvd2VycGMKKwlmaQorCWlmIFsgLXggL3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAorCWVsc2UKKwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWVjaG8gJHtJQk1fQVJDSH0taWJtLWFpeCR7SUJNX1JFVn0KKwlleGl0IDs7CisgICAgKjpBSVg6KjoqKQorCWVjaG8gcnM2MDAwLWlibS1haXgKKwlleGl0IDs7CisgICAgaWJtcnQ6NC40QlNEOip8cm9tcC1pYm06QlNEOiopCisJZWNobyByb21wLWlibS1ic2Q0LjQKKwlleGl0IDs7CisgICAgaWJtcnQ6KkJTRDoqfHJvbXAtaWJtOkJTRDoqKSAgICAgICAgICAgICMgY292ZXJzIFJUL1BDIEJTRCBhbmQKKwllY2hvIHJvbXAtaWJtLWJzZCR7VU5BTUVfUkVMRUFTRX0gICAjIDQuMyB3aXRoIHVuYW1lIGFkZGVkIHRvCisJZXhpdCA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXBvcnQ6IHJvbXAtaWJtIEJTRCA0LjMKKyAgICAqOkJPU1g6KjoqKQorCWVjaG8gcnM2MDAwLWJ1bGwtYm9zeAorCWV4aXQgOzsKKyAgICBEUFgvMj8wMDpCLk8uUy46KjoqKQorCWVjaG8gbTY4ay1idWxsLXN5c3YzCisJZXhpdCA7OworICAgIDkwMDAvWzM0XT8/OjQuM2JzZDoxLio6KikKKwllY2hvIG02OGstaHAtYnNkCisJZXhpdCA7OworICAgIGhwMzAwOjQuNEJTRDoqOiogfCA5MDAwL1szNF0/Pzo0LjNic2Q6Mi4qOiopCisJZWNobyBtNjhrLWhwLWJzZDQuNAorCWV4aXQgOzsKKyAgICA5MDAwL1szNDY3OF0/PzpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSouWzBCXSovLydgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KKwkgICAgOTAwMC8zMT8gKSAgICAgICAgICAgIEhQX0FSQ0g9bTY4MDAwIDs7CisJICAgIDkwMDAvWzM0XT8/ICkgICAgICAgICBIUF9BUkNIPW02OGsgOzsKKwkgICAgOTAwMC9bNjc4XVswLTldWzAtOV0pCisJCWlmIFsgLXggL3Vzci9iaW4vZ2V0Y29uZiBdOyB0aGVuCisJCSAgICBzY19jcHVfdmVyc2lvbj1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19DUFVfVkVSU0lPTiAyPi9kZXYvbnVsbGAKKwkJICAgIHNjX2tlcm5lbF9iaXRzPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0tFUk5FTF9CSVRTIDI+L2Rldi9udWxsYAorCQkgICAgY2FzZSAiJHtzY19jcHVfdmVyc2lvbn0iIGluCisJCSAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVfUEFfUklTQzFfMAorCQkgICAgICA1MjgpIEhQX0FSQ0g9ImhwcGExLjEiIDs7ICMgQ1BVX1BBX1JJU0MxXzEKKwkJICAgICAgNTMyKSAgICAgICAgICAgICAgICAgICAgICAjIENQVV9QQV9SSVNDMl8wCisJCQljYXNlICIke3NjX2tlcm5lbF9iaXRzfSIgaW4KKwkJCSAgMzIpIEhQX0FSQ0g9ImhwcGEyLjBuIiA7OworCQkJICA2NCkgSFBfQVJDSD0iaHBwYTIuMHciIDs7CisJCQkgICcnKSBIUF9BUkNIPSJocHBhMi4wIiA7OyAgICMgSFAtVVggMTAuMjAKKwkJCWVzYWMgOzsKKwkJICAgIGVzYWMKKwkJZmkKKwkJaWYgWyAiJHtIUF9BUkNIfSIgPSAiIiBdOyB0aGVuCisJCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCSAgICBzZWQgJ3MvXgkJLy8nIDw8IEVPRiA+JGR1bW15LmMKKworCQkjZGVmaW5lIF9IUFVYX1NPVVJDRQorCQkjaW5jbHVkZSA8c3RkbGliLmg+CisJCSNpbmNsdWRlIDx1bmlzdGQuaD4KKworCQlpbnQgbWFpbiAoKQorCQl7CisJCSNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKwkJICAgIGxvbmcgYml0cyA9IHN5c2NvbmYoX1NDX0tFUk5FTF9CSVRTKTsKKwkJI2VuZGlmCisJCSAgICBsb25nIGNwdSAgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOworCisJCSAgICBzd2l0Y2ggKGNwdSkKKwkJCXsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworCQkJY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEiKTsgYnJlYWs7CisJCQljYXNlIENQVV9QQV9SSVNDMl8wOgorCQkjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisJCQkgICAgc3dpdGNoIChiaXRzKQorCQkJCXsKKwkJCQljYXNlIDY0OiBwdXRzICgiaHBwYTIuMHciKTsgYnJlYWs7CisJCQkJY2FzZSAzMjogcHV0cyAoImhwcGEyLjBuIik7IGJyZWFrOworCQkJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworCQkJCX0gYnJlYWs7CisJCSNlbHNlICAvKiAhZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpICovCisJCQkgICAgcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisJCSNlbmRpZgorCQkJZGVmYXVsdDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisJCQl9CisJCSAgICBleGl0ICgwKTsKKwkJfQorRU9GCisJCSAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCkgJiYgSFBfQVJDSD1gJGR1bW15YAorCQkgICAgdGVzdCAteiAiJEhQX0FSQ0giICYmIEhQX0FSQ0g9aHBwYQorCQlmaSA7OworCWVzYWMKKwlpZiBbICR7SFBfQVJDSH0gPSAiaHBwYTIuMHciIF0KKwl0aGVuCisJICAgIGV2YWwgJHNldF9jY19mb3JfYnVpbGQKKworCSAgICAjIGhwcGEyLjB3LWhwLWhwdXgqIGhhcyBhIDY0LWJpdCBrZXJuZWwgYW5kIGEgY29tcGlsZXIgZ2VuZXJhdGluZworCSAgICAjIDMyLWJpdCBjb2RlLiAgaHBwYTY0LWhwLWhwdXgqIGhhcyB0aGUgc2FtZSBrZXJuZWwgYW5kIGEgY29tcGlsZXIKKwkgICAgIyBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlLiAgR05VIGFuZCBIUCB1c2UgZGlmZmVyZW50IG5vbWVuY2xhdHVyZToKKwkgICAgIworCSAgICAjICQgQ0NfRk9SX0JVSUxEPWNjIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4gaHBwYTIuMHctaHAtaHB1eDExLjIzCisJICAgICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtEQTIuMHciIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4gaHBwYTY0LWhwLWhwdXgxMS4yMworCisJICAgIGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwKKwkJZ3JlcCAtcSBfX0xQNjRfXworCSAgICB0aGVuCisJCUhQX0FSQ0g9ImhwcGEyLjB3IgorCSAgICBlbHNlCisJCUhQX0FSQ0g9ImhwcGE2NCIKKwkgICAgZmkKKwlmaQorCWVjaG8gJHtIUF9BUkNIfS1ocC1ocHV4JHtIUFVYX1JFVn0KKwlleGl0IDs7CisgICAgaWE2NDpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSouWzBCXSovLydgCisJZWNobyBpYTY0LWhwLWhwdXgke0hQVVhfUkVWfQorCWV4aXQgOzsKKyAgICAzMDUwKjpISS1VWDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI2luY2x1ZGUgPHVuaXN0ZC5oPgorCWludAorCW1haW4gKCkKKwl7CisJICBsb25nIGNwdSA9IHN5c2NvbmYgKF9TQ19DUFVfVkVSU0lPTik7CisJICAvKiBUaGUgb3JkZXIgbWF0dGVycywgYmVjYXVzZSBDUFVfSVNfSFBfTUM2OEsgZXJyb25lb3VzbHkgcmV0dXJucworCSAgICAgdHJ1ZSBmb3IgQ1BVX1BBX1JJU0MxXzAuICBDUFVfSVNfUEFfUklTQyByZXR1cm5zIGNvcnJlY3QKKwkgICAgIHJlc3VsdHMsIGhvd2V2ZXIuICAqLworCSAgaWYgKENQVV9JU19QQV9SSVNDIChjcHUpKQorCSAgICB7CisJICAgICAgc3dpdGNoIChjcHUpCisJCXsKKwkJICBjYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMC1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCSAgY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGNhc2UgQ1BVX1BBX1JJU0MyXzA6IHB1dHMgKCJocHBhMi4wLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJICBkZWZhdWx0OiBwdXRzICgiaHBwYS1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgZWxzZSBpZiAoQ1BVX0lTX0hQX01DNjhLIChjcHUpKQorCSAgICBwdXRzICgibTY4ay1oaXRhY2hpLWhpdXh3ZTIiKTsKKwkgIGVsc2UgcHV0cyAoInVua25vd24taGl0YWNoaS1oaXV4d2UyIik7CisJICBleGl0ICgwKTsKKwl9CitFT0YKKwkkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJiBTWVNURU1fTkFNRT1gJGR1bW15YCAmJgorCQl7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKwllY2hvIHVua25vd24taGl0YWNoaS1oaXV4d2UyCisJZXhpdCA7OworICAgIDkwMDAvNz8/OjQuM2JzZDoqOiogfCA5MDAwLzg/Wzc5XTo0LjNic2Q6KjoqICkKKwllY2hvIGhwcGExLjEtaHAtYnNkCisJZXhpdCA7OworICAgIDkwMDAvOD8/OjQuM2JzZDoqOiopCisJZWNobyBocHBhMS4wLWhwLWJzZAorCWV4aXQgOzsKKyAgICAqOT8/KjpNUEUvaVg6KjoqIHwgKjMwMDAqOk1QRS9pWDoqOiopCisJZWNobyBocHBhMS4wLWhwLW1wZWl4CisJZXhpdCA7OworICAgIGhwNz8/Ok9TRjE6KjoqIHwgaHA4P1s3OV06T1NGMToqOiogKQorCWVjaG8gaHBwYTEuMS1ocC1vc2YKKwlleGl0IDs7CisgICAgaHA4Pz86T1NGMToqOiopCisJZWNobyBocHBhMS4wLWhwLW9zZgorCWV4aXQgOzsKKyAgICBpKjg2Ok9TRjE6KjoqKQorCWlmIFsgLXggL3Vzci9zYmluL3N5c3ZlcnNpb24gXSA7IHRoZW4KKwkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tb3NmMW1rCisJZWxzZQorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1vc2YxCisJZmkKKwlleGl0IDs7CisgICAgcGFyaXNjKjpMaXRlcyo6KjoqKQorCWVjaG8gaHBwYTEuMS1ocC1saXRlcworCWV4aXQgOzsKKyAgICBDMSo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMxKjoqKQorCWVjaG8gYzEtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBDMio6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMyKjoqKQorCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYworCXRoZW4gZWNobyBjMzItY29udmV4LWJzZAorCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCisJZmkKKwlleGl0IDs7CisgICAgQzM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM0KjoqKQorCWVjaG8gYzM0LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgQzM4KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM4KjoqKQorCWVjaG8gYzM4LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgQzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDNCo6KikKKwllY2hvIGM0LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgQ1JBWSpZLU1QOio6KjoqKQorCWVjaG8geW1wLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqW0EtWl05MDoqOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IFwKKwl8IHNlZCAtZSAncy9DUkFZLipcKFtBLVpdOTBcKS9cMS8nIFwKKwkgICAgICAtZSB5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LyBcCisJICAgICAgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBDUkFZKlRTOio6KjoqKQorCWVjaG8gdDkwLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqVDNFOio6KjoqKQorCWVjaG8gYWxwaGFldjUtY3JheS11bmljb3NtayR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBDUkFZKlNWMToqOio6KikKKwllY2hvIHN2MS1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICAqOlVOSUNPUy9tcDoqOiopCisJZWNobyBjcmF5bnYtY3JheS11bmljb3NtcCR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBGMzBbMDFdOlVOSVhfU3lzdGVtX1Y6KjoqIHwgRjcwMDpVTklYX1N5c3RlbV9WOio6KikKKwlGVUpJVFNVX1BST0M9YHVuYW1lIC1tIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAorCUZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAorCWVjaG8gIiR7RlVKSVRTVV9QUk9DfS1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJZXhpdCA7OworICAgIDUwMDA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKKwlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisJRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy8gL18vJ2AKKwllY2hvICJzcGFyYy1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJZXhpdCA7OworICAgIGkqODY6QlNELzM4NjoqOiogfCBpKjg2OkJTRC9PUzoqOiogfCAqOkFzY2VuZFwgRW1iZWRkZWQvT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1ic2RpJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBzcGFyYyo6QlNEL09TOio6KikKKwllY2hvIHNwYXJjLXVua25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpCU0QvT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6RnJlZUJTRDoqOiopCisJVU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKKwljYXNlICR7VU5BTUVfUFJPQ0VTU09SfSBpbgorCSAgICBhbWQ2NCkKKwkJZWNobyB4ODZfNjQtdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYCA7OworCSAgICAqKQorCQllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS11bmtub3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisJZXNhYworCWV4aXQgOzsKKyAgICBpKjpDWUdXSU4qOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWN5Z3dpbgorCWV4aXQgOzsKKyAgICAqOk1JTkdXKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5ndzMyCisJZXhpdCA7OworICAgIGkqOk1TWVMqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1zeXMKKwlleGl0IDs7CisgICAgaSo6d2luZG93czMyKjoqKQorCSMgdW5hbWUgLW0gaW5jbHVkZXMgIi1wYyIgb24gdGhpcyBzeXN0ZW0uCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LW1pbmd3MzIKKwlleGl0IDs7CisgICAgaSo6UFcqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXB3MzIKKwlleGl0IDs7CisgICAgKjpJbnRlcml4KjoqKQorCWNhc2UgJHtVTkFNRV9NQUNISU5FfSBpbgorCSAgICB4ODYpCisJCWVjaG8gaTU4Ni1wYy1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQorCQlleGl0IDs7CisJICAgIGF1dGhlbnRpY2FtZCB8IGdlbnVpbmVpbnRlbCB8IEVNNjRUKQorCQllY2hvIHg4Nl82NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisJCWV4aXQgOzsKKwkgICAgSUE2NCkKKwkJZWNobyBpYTY0LXVua25vd24taW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KKwkJZXhpdCA7OworCWVzYWMgOzsKKyAgICBbMzQ1XTg2OldpbmRvd3NfOTU6KiB8IFszNDVdODY6V2luZG93c185ODoqIHwgWzM0NV04NjpXaW5kb3dzX05UOiopCisJZWNobyBpJHtVTkFNRV9NQUNISU5FfS1wYy1ta3MKKwlleGl0IDs7CisgICAgODY2NDpXaW5kb3dzX05UOiopCisJZWNobyB4ODZfNjQtcGMtbWtzCisJZXhpdCA7OworICAgIGkqOldpbmRvd3NfTlQqOiogfCBQZW50aXVtKjpXaW5kb3dzX05UKjoqKQorCSMgSG93IGRvIHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5c3RlbT8KKwkjIEl0IGFsc28gY29uZmxpY3RzIHdpdGggcHJlLTIuMCB2ZXJzaW9ucyBvZiBBVCZUIFVXSU4uIFNob3VsZCB3ZQorCSMgVU5BTUVfTUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQgb2YgaTM4Nj8KKwllY2hvIGk1ODYtcGMtaW50ZXJpeAorCWV4aXQgOzsKKyAgICBpKjpVV0lOKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy11d2luCisJZXhpdCA7OworICAgIGFtZDY0OkNZR1dJTio6KjoqIHwgeDg2XzY0OkNZR1dJTio6KjoqKQorCWVjaG8geDg2XzY0LXVua25vd24tY3lnd2luCisJZXhpdCA7OworICAgIHAqOkNZR1dJTio6KikKKwllY2hvIHBvd2VycGNsZS11bmtub3duLWN5Z3dpbgorCWV4aXQgOzsKKyAgICBwcmVwKjpTdW5PUzo1Lio6KikKKwllY2hvIHBvd2VycGNsZS11bmtub3duLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgICo6R05VOio6KikKKwkjIHRoZSBHTlUgc3lzdGVtCisJZWNobyBgZWNobyAke1VOQU1FX01BQ0hJTkV9fHNlZCAtZSAncyxbLS9dLiokLCwnYC11bmtub3duLWdudWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLC8uKiQsLCdgCisJZXhpdCA7OworICAgICo6R05VLyo6KjoqKQorCSMgb3RoZXIgc3lzdGVtcyB3aXRoIEdOVSBsaWJjIGFuZCB1c2VybGFuZAorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWBlY2hvICR7VU5BTUVfU1lTVEVNfSB8IHNlZCAncyxeW14vXSovLCwnIHwgdHIgJ1tBLVpdJyAnW2Etel0nYGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AtZ251CisJZXhpdCA7OworICAgIGkqODY6TWluaXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5peAorCWV4aXQgOzsKKyAgICBhYXJjaDY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgYWFyY2g2NF9iZTpMaW51eDoqOiopCisJVU5BTUVfTUFDSElORT1hYXJjaDY0X2JlCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGFscGhhOkxpbnV4Oio6KikKKwljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgorCSAgRVY1KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjUgOzsKKwkgIEVWNTYpICBVTkFNRV9NQUNISU5FPWFscGhhZXY1NiA7OworCSAgUENBNTYpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgUENBNTcpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKKwkgIEVWNjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OworCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7CisJZXNhYworCW9iamR1bXAgLS1wcml2YXRlLWhlYWRlcnMgL2Jpbi9zaCB8IGdyZXAgLXEgbGQuc28uMQorCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7IGVsc2UgTElCQz0iIiA7IGZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQorCWV4aXQgOzsKKyAgICBhcm0qOkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJaWYgZWNobyBfX0FSTV9FQUJJX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCSAgICB8IGdyZXAgLXEgX19BUk1fRUFCSV9fCisJdGhlbgorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwllbHNlCisJICAgIGlmIGVjaG8gX19BUk1fUENTX1ZGUCB8ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCisJCXwgZ3JlcCAtcSBfX0FSTV9QQ1NfVkZQCisJICAgIHRoZW4KKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251ZWFiaQorCSAgICBlbHNlCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmloZgorCSAgICBmaQorCWZpCisJZXhpdCA7OworICAgIGF2cjMyKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGNyaXM6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBjcmlzdjMyOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXhpcy1saW51eC1nbnUKKwlleGl0IDs7CisgICAgZnJ2OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgaGV4YWdvbjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGkqODY6TGludXg6KjoqKQorCUxJQkM9Z251CisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI2lmZGVmIF9fZGlldGxpYmNfXworCUxJQkM9ZGlldGxpYmMKKwkjZW5kaWYKK0VPRgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeTElCQydgCisJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9IgorCWV4aXQgOzsKKyAgICBpYTY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbTMycio6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBtNjgqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbWlwczpMaW51eDoqOiogfCBtaXBzNjQ6TGludXg6KjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSN1bmRlZiBDUFUKKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfQorCSN1bmRlZiAke1VOQU1FX01BQ0hJTkV9ZWwKKwkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQorCUNQVT0ke1VOQU1FX01BQ0hJTkV9ZWwKKwkjZWxzZQorCSNpZiBkZWZpbmVkKF9fTUlQU0VCX18pIHx8IGRlZmluZWQoX19NSVBTRUIpIHx8IGRlZmluZWQoX01JUFNFQikgfHwgZGVmaW5lZChNSVBTRUIpCisJQ1BVPSR7VU5BTUVfTUFDSElORX0KKwkjZWxzZQorCUNQVT0KKwkjZW5kaWYKKwkjZW5kaWYKK0VPRgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeQ1BVJ2AKKwl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQorCTs7CisgICAgb3IzMjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBhZHJlOkxpbnV4Oio6KikKKwllY2hvIHNwYXJjLXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCisJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQorCSMgTG9vayBmb3IgQ1BVIGxldmVsCisJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+L2Rldi9udWxsIHwgY3V0IC1kJyAnIC1mMmAgaW4KKwkgIFBBNyopIGVjaG8gaHBwYTEuMS11bmtub3duLWxpbnV4LWdudSA7OworCSAgUEE4KikgZWNobyBocHBhMi4wLXVua25vd24tbGludXgtZ251IDs7CisJICAqKSAgICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKKwllc2FjCisJZXhpdCA7OworICAgIHBwYzY0OkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBwcGM6TGludXg6KjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBzMzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWxpbnV4CisJZXhpdCA7OworICAgIHNoNjQqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgc2gqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgc3BhcmM6TGludXg6KjoqIHwgc3BhcmM2NDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHRpbGUqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgdmF4OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB4ODZfNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB4dGVuc2EqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgaSo4NjpEWU5JWC9wdHg6NCo6KikKKwkjIHB0eCA0LjAgZG9lcyB1bmFtZSAtcyBjb3JyZWN0bHksIHdpdGggRFlOSVgvcHR4IGluIHRoZXJlLgorCSMgZWFybGllciB2ZXJzaW9ucyBhcmUgbWVzc2VkIHVwIGFuZCBwdXQgdGhlIG5vZGVuYW1lIGluIGJvdGgKKwkjIHN5c25hbWUgYW5kIG5vZGVuYW1lLgorCWVjaG8gaTM4Ni1zZXF1ZW50LXN5c3Y0CisJZXhpdCA7OworICAgIGkqODY6VU5JWF9TVjo0LjJNUDoyLiopCisJIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0LCBidXQgaXQgaGFzIGl0cyBvd24gdmVyc2lvbgorCSMgbnVtYmVyIHNlcmllcyBzdGFydGluZyB3aXRoIDIuLi4KKwkjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdvbid0IG1hdGNoIHRoaXMsCisJIyBJIGp1c3QgaGF2ZSB0byBob3BlLiAgLS0gcm1zLgorCSMgVXNlIHN5c3Y0LjJ1dy4uLiBzbyB0aGF0IHN5c3Y0KiBtYXRjaGVzIGl0LgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2NC4ydXcke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6T1MvMjoqOiopCisJIyBJZiB3ZSB3ZXJlIGFibGUgdG8gZmluZCBgdW5hbWUnLCB0aGVuIEVNWCBVbml4IGNvbXBhdGliaWxpdHkKKwkjIGlzIHByb2JhYmx5IGluc3RhbGxlZC4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtb3MyLWVteAorCWV4aXQgOzsKKyAgICBpKjg2OlhUUy0zMDA6KjpTVE9QKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN0b3AKKwlleGl0IDs7CisgICAgaSo4NjphdGhlb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWF0aGVvcworCWV4aXQgOzsKKyAgICBpKjg2OnN5bGxhYmxlOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lsbGFibGUKKwlleGl0IDs7CisgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LlswMl0qOiopCisJZWNobyBpMzg2LXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBpKjg2OipET1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1tc2Rvc2RqZ3BwCisJZXhpdCA7OworICAgIGkqODY6Kjo0Lio6KiB8IGkqODY6U1lTVEVNX1Y6NC4qOiopCisJVU5BTUVfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgJ3MvXC9NUCQvLydgCisJaWYgZ3JlcCBOb3ZlbGwgL3Vzci9pbmNsdWRlL2xpbmsuaCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bml2ZWwtc3lzdiR7VU5BTUVfUkVMfQorCWVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3Yke1VOQU1FX1JFTH0KKwlmaQorCWV4aXQgOzsKKyAgICBpKjg2Oio6NTpbNjc4XSopCisJIyBVbml4V2FyZSA3LngsIE9wZW5VTklYIGFuZCBPcGVuU2VydmVyIDYuCisJY2FzZSBgL2Jpbi91bmFtZSAtWCB8IGdyZXAgIl5NYWNoaW5lImAgaW4KKwkgICAgKjQ4NiopCSAgICAgVU5BTUVfTUFDSElORT1pNDg2IDs7CisJICAgICpQZW50aXVtKQkgICAgIFVOQU1FX01BQ0hJTkU9aTU4NiA7OworCSAgICAqUGVudCp8KkNlbGVyb24pIFVOQU1FX01BQ0hJTkU9aTY4NiA7OworCWVzYWMKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfSR7VU5BTUVfU1lTVEVNfSR7VU5BTUVfVkVSU0lPTn0KKwlleGl0IDs7CisgICAgaSo4NjoqOjMuMjoqKQorCWlmIHRlc3QgLWYgL3Vzci9vcHRpb25zL2NiLm5hbWU7IHRoZW4KKwkJVU5BTUVfUkVMPWBzZWQgLW4gJ3MvLipWZXJzaW9uIC8vcCcgPC91c3Ivb3B0aW9ucy9jYi5uYW1lYAorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtaXNjJFVOQU1FX1JFTAorCWVsaWYgL2Jpbi91bmFtZSAtWCAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIDsgdGhlbgorCQlVTkFNRV9SRUw9YCgvYmluL3VuYW1lIC1YfGdyZXAgUmVsZWFzZXxzZWQgLWUgJ3MvLio9IC8vJylgCisJCSgvYmluL3VuYW1lIC1YfGdyZXAgaTgwNDg2ID4vZGV2L251bGwpICYmIFVOQU1FX01BQ0hJTkU9aTQ4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudGl1bScgPi9kZXYvbnVsbCkgXAorCQkJJiYgVU5BTUVfTUFDSElORT1pNTg2CisJCSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5lLipQZW50ICpJSScgPi9kZXYvbnVsbCkgXAorCQkJJiYgVU5BTUVfTUFDSElORT1pNjg2CisJCSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5lLipQZW50aXVtIFBybycgPi9kZXYvbnVsbCkgXAorCQkJJiYgVU5BTUVfTUFDSElORT1pNjg2CisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zY28kVU5BTUVfUkVMCisJZWxzZQorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjMyCisJZmkKKwlleGl0IDs7CisgICAgcGM6KjoqOiopCisJIyBMZWZ0IGhlcmUgZm9yIGNvbXBhdGliaWxpdHk6CisJIyB1bmFtZSAtbSBwcmludHMgZm9yIERKR1BQIGFsd2F5cyAncGMnLCBidXQgaXQgcHJpbnRzIG5vdGhpbmcgYWJvdXQKKwkjIHRoZSBwcm9jZXNzb3IsIHNvIHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpNTg2LgorCSMgTm90ZTogd2hhdGV2ZXIgdGhpcyBpcywgaXQgTVVTVCBiZSB0aGUgc2FtZSBhcyB3aGF0IGNvbmZpZy5zdWIKKwkjIHByaW50cyBmb3IgdGhlICJkamdwcCIgaG9zdCwgb3IgZWxzZSBHREIgY29uZmlndXJ5IHdpbGwgZGVjaWRlIHRoYXQKKwkjIHRoaXMgaXMgYSBjcm9zcy1idWlsZC4KKwllY2hvIGk1ODYtcGMtbXNkb3NkamdwcAorCWV4aXQgOzsKKyAgICBJbnRlbDpNYWNoOjMqOiopCisJZWNobyBpMzg2LXBjLW1hY2gzCisJZXhpdCA7OworICAgIHBhcmFnb246KjoqOiopCisJZWNobyBpODYwLWludGVsLW9zZjEKKwlleGl0IDs7CisgICAgaTg2MDoqOjQuKjoqKSAjIGk4NjAtU1ZSNAorCWlmIGdyZXAgU3RhcmRlbnQgL3Vzci9pbmNsdWRlL3N5cy91YWRtaW4uaCA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJICBlY2hvIGk4NjAtc3RhcmRlbnQtc3lzdiR7VU5BTUVfUkVMRUFTRX0gIyBTdGFyZGVudCBWaXN0cmEgaTg2MC1TVlI0CisJZWxzZSAjIEFkZCBvdGhlciBpODYwLVNWUjQgdmVuZG9ycyBiZWxvdyBhcyB0aGV5IGFyZSBkaXNjb3ZlcmVkLgorCSAgZWNobyBpODYwLXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0gICMgVW5rbm93biBpODYwLVNWUjQKKwlmaQorCWV4aXQgOzsKKyAgICBtaW5pKjpDVElYOlNZUyo1OiopCisJIyAibWluaWZyYW1lIgorCWVjaG8gbTY4MDEwLWNvbnZlcmdlbnQtc3lzdgorCWV4aXQgOzsKKyAgICBtYzY4azpVTklYOlNZU1RFTTU6My41MW0pCisJZWNobyBtNjhrLWNvbnZlcmdlbnQtc3lzdgorCWV4aXQgOzsKKyAgICBNNjgwPzA6RC1OSVg6NS4zOiopCisJZWNobyBtNjhrLWRpYWItZG5peAorCWV4aXQgOzsKKyAgICBNNjgqOio6UjNWWzU2NzhdKjoqKQorCXRlc3QgLXIgL3N5c1Y2OCAmJiB7IGVjaG8gJ202OGstbW90b3JvbGEtc3lzdic7IGV4aXQ7IH0gOzsKKyAgICAzWzM0NV0/PzoqOjQuMDozLjAgfCAzWzM0XT8/QToqOjQuMDozLjAgfCAzWzM0XT8/LCo6Kjo0LjA6My4wIHwgM1szNF0/Py8qOio6NC4wOjMuMCB8IDQ0MDA6Kjo0LjA6My4wIHwgNDg1MDoqOjQuMDozLjAgfCBTS0E0MDoqOjQuMDozLjAgfCBTRFMyOio6NC4wOjMuMCB8IFNIRzI6Kjo0LjA6My4wIHwgUzc1MDEqOio6NC4wOjMuMCkKKwlPU19SRUw9JycKKwl0ZXN0IC1yIC9ldGMvLnJlbGlkIFwKKwkmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgL2Jpbi9ncmVwIGVudGl1bSA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9IDs7CisgICAgM1szNF0/PzoqOjQuMDoqIHwgM1szNF0/PywqOio6NC4wOiopCisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKyAgICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKKwlPU19SRUw9Jy4zJworCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorCSAgICAmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgcHRlcm9uID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIG02OCo6THlueE9TOjIuKjoqIHwgbTY4KjpMeW54T1M6My4wKjoqKQorCWVjaG8gbTY4ay11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWM2ODAzMDpVTklYX1N5c3RlbV9WOjQuKjoqKQorCWVjaG8gbTY4ay1hdGFyaS1zeXN2NAorCWV4aXQgOzsKKyAgICBUU1VOQU1JOkx5bnhPUzoyLio6KikKKwllY2hvIHNwYXJjLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICByczYwMDA6THlueE9TOjIuKjoqKQorCWVjaG8gcnM2MDAwLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBQb3dlclBDOkx5bnhPUzoyLio6KiB8IFBvd2VyUEM6THlueE9TOjMuWzAxXSo6KiB8IFBvd2VyUEM6THlueE9TOjQuWzAyXSo6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNNW0JFXVM6VU5JWF9TVjoqOiopCisJZWNobyBtaXBzLWRkZS1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBSTSo6UmVsaWFudFVOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAorCWV4aXQgOzsKKyAgICBSTSo6U0lOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAorCWV4aXQgOzsKKyAgICAqOlNJTklYLSo6KjoqKQorCWlmIHVuYW1lIC1wIDI+L2Rldi9udWxsID4vZGV2L251bGwgOyB0aGVuCisJCVVOQU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zbmktc3lzdjQKKwllbHNlCisJCWVjaG8gbnMzMmstc25pLXN5c3YKKwlmaQorCWV4aXQgOzsKKyAgICBQRU5USVVNOio6NC4wKjoqKQkjIFVuaXN5cyBgQ2xlYXJQYXRoIEhNUCBJWCA0MDAwJyBTVlI0L01QIGVmZm9ydAorCQkJIyBzYXlzIDxSaWNoYXJkLk0uQmFydGVsQGNjTWFpbC5DZW5zdXMuR09WPgorCWVjaG8gaTU4Ni11bmlzeXMtc3lzdjQKKwlleGl0IDs7CisgICAgKjpVTklYX1N5c3RlbV9WOjQqOkZUWCopCisJIyBGcm9tIEdlcmFsZCBIZXdlcyA8aGV3ZXNAb3Blbm1hcmtldC5jb20+LgorCSMgSG93IGFib3V0IGRpZmZlcmVudGlhdGluZyBiZXR3ZWVuIHN0cmF0dXMgYXJjaGl0ZWN0dXJlcz8gLWRqbQorCWVjaG8gaHBwYTEuMS1zdHJhdHVzLXN5c3Y0CisJZXhpdCA7OworICAgICo6KjoqOkZUWCopCisJIyBGcm9tIHNlYW5mQHN3ZGMuc3RyYXR1cy5jb20uCisJZWNobyBpODYwLXN0cmF0dXMtc3lzdjQKKwlleGl0IDs7CisgICAgaSo4NjpWT1M6KjoqKQorCSMgRnJvbSBQYXVsLkdyZWVuQHN0cmF0dXMuY29tLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zdHJhdHVzLXZvcworCWV4aXQgOzsKKyAgICAqOlZPUzoqOiopCisJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCisJZWNobyBocHBhMS4xLXN0cmF0dXMtdm9zCisJZXhpdCA7OworICAgIG1jNjgqOkEvVVg6KjoqKQorCWVjaG8gbTY4ay1hcHBsZS1hdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG5ld3MqOk5FV1MtT1M6Nio6KikKKwllY2hvIG1pcHMtc29ueS1uZXdzb3M2CisJZXhpdCA7OworICAgIFJbMzRdMDAwOipTeXN0ZW1fVio6KjoqIHwgUjQwMDA6VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6KjoqKQorCWlmIFsgLWQgL3Vzci9uZWMgXTsgdGhlbgorCQllY2hvIG1pcHMtbmVjLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJZWxzZQorCQllY2hvIG1pcHMtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWZpCisJZXhpdCA7OworICAgIEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBoYXJkd2FyZSBtYWRlIGJ5IEJlLCBQUEMgb25seS4KKwllY2hvIHBvd2VycGMtYmUtYmVvcworCWV4aXQgOzsKKyAgICBCZU1hYzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gTWFjIG9yIE1hYyBjbG9uZSwgUFBDIG9ubHkuCisJZWNobyBwb3dlcnBjLWFwcGxlLWJlb3MKKwlleGl0IDs7CisgICAgQmVQQzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gSW50ZWwgUEMgY29tcGF0aWJsZS4KKwllY2hvIGk1ODYtcGMtYmVvcworCWV4aXQgOzsKKyAgICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWhhaWt1CisJZXhpdCA7OworICAgIFNYLTQ6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g0LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC01OlNVUEVSLVVYOio6KikKKwllY2hvIHN4NS1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtNjpTVVBFUi1VWDoqOiopCisJZWNobyBzeDYtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLTc6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g3LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC04OlNVUEVSLVVYOio6KikKKwllY2hvIHN4OC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtOFI6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g4ci1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUG93ZXIqOlJoYXBzb2R5Oio6KikKKwllY2hvIHBvd2VycGMtYXBwbGUtcmhhcHNvZHkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UmhhcHNvZHk6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1hcHBsZS1yaGFwc29keSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpEYXJ3aW46KjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgIHx8IFVOQU1FX1BST0NFU1NPUj11bmtub3duCisJY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCisJICAgIGkzODYpCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gJ25vX2NvbXBpbGVyX2ZvdW5kJyBdOyB0aGVuCisJCSAgaWYgKGVjaG8gJyNpZmRlZiBfX0xQNjRfXyc7IGVjaG8gSVNfNjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCisJCSAgICAgIChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCSAgICAgIGdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCisJCSAgdGhlbgorCQkgICAgICBVTkFNRV9QUk9DRVNTT1I9Ing4Nl82NCIKKwkJICBmaQorCQlmaSA7OworCSAgICB1bmtub3duKSBVTkFNRV9QUk9DRVNTT1I9cG93ZXJwYyA7OworCWVzYWMKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS1hcHBsZS1kYXJ3aW4ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6cHJvY250byo6KjoqIHwgKjpRTlg6WzAxMjM0NTY3ODldKjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgCisJaWYgdGVzdCAiJFVOQU1FX1BST0NFU1NPUiIgPSAieDg2IjsgdGhlbgorCQlVTkFNRV9QUk9DRVNTT1I9aTM4NgorCQlVTkFNRV9NQUNISU5FPXBjCisJZmkKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS0ke1VOQU1FX01BQ0hJTkV9LW50by1xbngke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UU5YOio6NCopCisJZWNobyBpMzg2LXBjLXFueAorCWV4aXQgOzsKKyAgICBORU8tPzpOT05TVE9QX0tFUk5FTDoqOiopCisJZWNobyBuZW8tdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgTlNFLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbnNlLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIE5TUi0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKwllY2hvIG5zci10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk5vblN0b3AtVVg6KjoqKQorCWVjaG8gbWlwcy1jb21wYXEtbm9uc3RvcHV4CisJZXhpdCA7OworICAgIEJTMjAwMDpQT1NJWCo6KjoqKQorCWVjaG8gYnMyMDAwLXNpZW1lbnMtc3lzdgorCWV4aXQgOzsKKyAgICBEUy8qOlVOSVhfU3lzdGVtX1Y6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS0ke1VOQU1FX1NZU1RFTX0tJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlBsYW45Oio6KikKKwkjICJ1bmFtZSAtbSIgaXMgbm90IGNvbnNpc3RlbnQsIHNvIHVzZSAkY3B1dHlwZSBpbnN0ZWFkLiAzODYKKwkjIGlzIGNvbnZlcnRlZCB0byBpMzg2IGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHg4NgorCSMgb3BlcmF0aW5nIHN5c3RlbXMuCisJaWYgdGVzdCAiJGNwdXR5cGUiID0gIjM4NiI7IHRoZW4KKwkgICAgVU5BTUVfTUFDSElORT1pMzg2CisJZWxzZQorCSAgICBVTkFNRV9NQUNISU5FPSIkY3B1dHlwZSIKKwlmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXBsYW45CisJZXhpdCA7OworICAgICo6VE9QUy0xMDoqOiopCisJZWNobyBwZHAxMC11bmtub3duLXRvcHMxMAorCWV4aXQgOzsKKyAgICAqOlRFTkVYOio6KikKKwllY2hvIHBkcDEwLXVua25vd24tdGVuZXgKKwlleGl0IDs7CisgICAgS1MxMDpUT1BTLTIwOio6KiB8IEtMMTA6VE9QUy0yMDoqOiogfCBUWVBFNDpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLWRlYy10b3BzMjAKKwlleGl0IDs7CisgICAgWEtMLTE6VE9QUy0yMDoqOiogfCBUWVBFNTpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLXhrbC10b3BzMjAKKwlleGl0IDs7CisgICAgKjpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLXVua25vd24tdG9wczIwCisJZXhpdCA7OworICAgICo6SVRTOio6KikKKwllY2hvIHBkcDEwLXVua25vd24taXRzCisJZXhpdCA7OworICAgIFNFSToqOio6U0VJVVgpCisJZWNobyBtaXBzLXNlaS1zZWl1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpEcmFnb25GbHk6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWRyYWdvbmZseWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AKKwlleGl0IDs7CisgICAgKjoqVk1TOio6KikKKwlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORX0iIGluCisJICAgIEEqKSBlY2hvIGFscGhhLWRlYy12bXMgOyBleGl0IDs7CisJICAgIEkqKSBlY2hvIGlhNjQtZGVjLXZtcyA7IGV4aXQgOzsKKwkgICAgViopIGVjaG8gdmF4LWRlYy12bXMgOyBleGl0IDs7CisJZXNhYyA7OworICAgICo6WEVOSVg6KjpTeXNWKQorCWVjaG8gaTM4Ni1wYy14ZW5peAorCWV4aXQgOzsKKyAgICBpKjg2OnNreW9zOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc2t5b3NgZWNobyAke1VOQU1FX1JFTEVBU0V9YCB8IHNlZCAtZSAncy8gLiokLy8nCisJZXhpdCA7OworICAgIGkqODY6cmRvczoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXJkb3MKKwlleGl0IDs7CisgICAgaSo4NjpBUk9TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtYXJvcworCWV4aXQgOzsKKyAgICB4ODZfNjQ6Vk1rZXJuZWw6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWVzeAorCWV4aXQgOzsKK2VzYWMKKworI2VjaG8gJyhObyB1bmFtZSBjb21tYW5kIG9yIHVuYW1lIG91dHB1dCBub3QgcmVjb2duaXplZC4pJyAxPiYyCisjZWNobyAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RFTX06JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiAxPiYyCisKK2V2YWwgJHNldF9jY19mb3JfYnVpbGQKK2NhdCA+JGR1bW15LmMgPDxFT0YKKyNpZmRlZiBfU0VRVUVOVF8KKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjIGluY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisjZW5kaWYKK21haW4gKCkKK3sKKyNpZiBkZWZpbmVkIChzb255KQorI2lmIGRlZmluZWQgKE1JUFNFQikKKyAgLyogQkZEIHdhbnRzICJic2QiIGluc3RlYWQgb2YgIm5ld3NvcyIuICBQZXJoYXBzIEJGRCBzaG91bGQgYmUgY2hhbmdlZCwKKyAgICAgSSBkb24ndCBrbm93Li4uLiAgKi8KKyAgcHJpbnRmICgibWlwcy1zb255LWJzZFxuIik7IGV4aXQgKDApOworI2Vsc2UKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAgcHJpbnRmICgibTY4ay1zb255LW5ld3NvcyVzXG4iLAorI2lmZGVmIE5FV1NPUzQKKwkiNCIKKyNlbHNlCisJIiIKKyNlbmRpZgorCSk7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9fYXJtKSAmJiBkZWZpbmVkIChfX2Fjb3JuKSAmJiBkZWZpbmVkIChfX3VuaXgpCisgIHByaW50ZiAoImFybS1hY29ybi1yaXNjaXhcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoaHAzMDApICYmICFkZWZpbmVkIChocHV4KQorICBwcmludGYgKCJtNjhrLWhwLWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChOZVhUKQorI2lmICFkZWZpbmVkIChfX0FSQ0hJVEVDVFVSRV9fKQorI2RlZmluZSBfX0FSQ0hJVEVDVFVSRV9fICJtNjhrIgorI2VuZGlmCisgIGludCB2ZXJzaW9uOworICB2ZXJzaW9uPWAoaG9zdGluZm8gfCBzZWQgLW4gJ3MvLipOZVhUIE1hY2ggXChbMC05XSpcKS4qL1wxL3AnKSAyPi9kZXYvbnVsbGA7CisgIGlmICh2ZXJzaW9uIDwgNCkKKyAgICBwcmludGYgKCIlcy1uZXh0LW5leHRzdGVwJWRcbiIsIF9fQVJDSElURUNUVVJFX18sIHZlcnNpb24pOworICBlbHNlCisgICAgcHJpbnRmICgiJXMtbmV4dC1vcGVuc3RlcCVkXG4iLCBfX0FSQ0hJVEVDVFVSRV9fLCB2ZXJzaW9uKTsKKyAgZXhpdCAoMCk7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKE1VTFRJTUFYKSB8fCBkZWZpbmVkIChuMTYpCisjaWYgZGVmaW5lZCAoVU1BWFYpCisgIHByaW50ZiAoIm5zMzJrLWVuY29yZS1zeXN2XG4iKTsgZXhpdCAoMCk7CisjZWxzZQorI2lmIGRlZmluZWQgKENNVSkKKyAgcHJpbnRmICgibnMzMmstZW5jb3JlLW1hY2hcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisgIHByaW50ZiAoIm5zMzJrLWVuY29yZS1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9fMzg2QlNEX18pCisgIHByaW50ZiAoImkzODYtcGMtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKHNlcXVlbnQpCisjaWYgZGVmaW5lZCAoaTM4NikKKyAgcHJpbnRmICgiaTM4Ni1zZXF1ZW50LWR5bml4XG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNpZiBkZWZpbmVkIChuczMyMDAwKQorICBwcmludGYgKCJuczMyay1zZXF1ZW50LWR5bml4XG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX1NFUVVFTlRfKQorICAgIHN0cnVjdCB1dHNuYW1lIHVuOworCisgICAgdW5hbWUoJnVuKTsKKworICAgIGlmIChzdHJuY21wKHVuLnZlcnNpb24sICJWMiIsIDIpID09IDApIHsKKwlwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4MlxuIik7IGV4aXQgKDApOworICAgIH0KKyAgICBpZiAoc3RybmNtcCh1bi52ZXJzaW9uLCAiVjEiLCAyKSA9PSAwKSB7IC8qIFhYWCBpcyBWMSBjb3JyZWN0PyAqLworCXByaW50ZiAoImkzODYtc2VxdWVudC1wdHgxXG4iKTsgZXhpdCAoMCk7CisgICAgfQorICAgIHByaW50ZiAoImkzODYtc2VxdWVudC1wdHhcbiIpOyBleGl0ICgwKTsKKworI2VuZGlmCisKKyNpZiBkZWZpbmVkICh2YXgpCisjIGlmICFkZWZpbmVkICh1bHRyaXgpCisjICBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyMgIGlmIGRlZmluZWQgKEJTRCkKKyMgICBpZiBCU0QgPT0gNDMKKyAgICAgIHByaW50ZiAoInZheC1kZWMtYnNkNC4zXG4iKTsgZXhpdCAoMCk7CisjICAgZWxzZQorIyAgICBpZiBCU0QgPT0gMTk5MDA2CisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZDQuM3Jlbm9cbiIpOyBleGl0ICgwKTsKKyMgICAgZWxzZQorICAgICAgcHJpbnRmICgidmF4LWRlYy1ic2RcbiIpOyBleGl0ICgwKTsKKyMgICAgZW5kaWYKKyMgICBlbmRpZgorIyAgZWxzZQorICAgIHByaW50ZiAoInZheC1kZWMtYnNkXG4iKTsgZXhpdCAoMCk7CisjICBlbmRpZgorIyBlbHNlCisgICAgcHJpbnRmICgidmF4LWRlYy11bHRyaXhcbiIpOyBleGl0ICgwKTsKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoYWxsaWFudCkgJiYgZGVmaW5lZCAoaTg2MCkKKyAgcHJpbnRmICgiaTg2MC1hbGxpYW50LWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyAgZXhpdCAoMSk7Cit9CitFT0YKKworJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAgJiYKKwl7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKworIyBBcG9sbG9zIHB1dCB0aGUgc3lzdGVtIHR5cGUgaW4gdGhlIGVudmlyb25tZW50LgorCit0ZXN0IC1kIC91c3IvYXBvbGxvICYmIHsgZWNobyAke0lTUH0tYXBvbGxvLSR7U1lTVFlQRX07IGV4aXQ7IH0KKworIyBDb252ZXggdmVyc2lvbnMgdGhhdCBwcmVkYXRlIHVuYW1lIGNhbiB1c2UgZ2V0c3lzaW5mbygxKQorCitpZiBbIC14IC91c3IvY29udmV4L2dldHN5c2luZm8gXQordGhlbgorICAgIGNhc2UgYGdldHN5c2luZm8gLWYgY3B1X3R5cGVgIGluCisgICAgYzEqKQorCWVjaG8gYzEtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBjMiopCisJaWYgZ2V0c3lzaW5mbyAtZiBzY2FsYXJfYWNjCisJdGhlbiBlY2hvIGMzMi1jb252ZXgtYnNkCisJZWxzZSBlY2hvIGMyLWNvbnZleC1ic2QKKwlmaQorCWV4aXQgOzsKKyAgICBjMzQqKQorCWVjaG8gYzM0LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgYzM4KikKKwllY2hvIGMzOC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGM0KikKKwllY2hvIGM0LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgZXNhYworZmkKKworY2F0ID4mMiA8PEVPRgorJDA6IHVuYWJsZSB0byBndWVzcyBzeXN0ZW0gdHlwZQorCitUaGlzIHNjcmlwdCwgbGFzdCBtb2RpZmllZCAkdGltZXN0YW1wLCBoYXMgZmFpbGVkIHRvIHJlY29nbml6ZQordGhlIG9wZXJhdGluZyBzeXN0ZW0geW91IGFyZSB1c2luZy4gSXQgaXMgYWR2aXNlZCB0aGF0IHlvdQorZG93bmxvYWQgdGhlIG1vc3QgdXAgdG8gZGF0ZSB2ZXJzaW9uIG9mIHRoZSBjb25maWcgc2NyaXB0cyBmcm9tCisKKyAgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5ndWVzcztoYj1IRUFECithbmQKKyAgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5zdWI7aGI9SEVBRAorCitJZiB0aGUgdmVyc2lvbiB5b3UgcnVuICgkMCkgaXMgYWxyZWFkeSB1cCB0byBkYXRlLCBwbGVhc2UKK3NlbmQgdGhlIGZvbGxvd2luZyBkYXRhIGFuZCBhbnkgaW5mb3JtYXRpb24geW91IHRoaW5rIG1pZ2h0IGJlCitwZXJ0aW5lbnQgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+IGluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIG5lZWRlZAoraW5mb3JtYXRpb24gdG8gaGFuZGxlIHlvdXIgc3lzdGVtLgorCitjb25maWcuZ3Vlc3MgdGltZXN0YW1wID0gJHRpbWVzdGFtcAorCit1bmFtZSAtbSA9IGAodW5hbWUgLW0pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXMgPSBgKHVuYW1lIC1zKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtdiA9IGAodW5hbWUgLXYpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKKworL3Vzci9iaW4vdW5hbWUgLXAgPSBgKC91c3IvYmluL3VuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKy9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYvbnVsbGAKKworaG9zdGluZm8gICAgICAgICAgICAgICA9IGAoaG9zdGluZm8pIDI+L2Rldi9udWxsYAorL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IGAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGxgCisvdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbGAKKy9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251bGxgCisvdXNyL2Jpbi9vc2xldmVsICAgICAgID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVsbGAKKy91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2luZm8pIDI+L2Rldi9udWxsYAorCitVTkFNRV9NQUNISU5FID0gJHtVTkFNRV9NQUNISU5FfQorVU5BTUVfUkVMRUFTRSA9ICR7VU5BTUVfUkVMRUFTRX0KK1VOQU1FX1NZU1RFTSAgPSAke1VOQU1FX1NZU1RFTX0KK1VOQU1FX1ZFUlNJT04gPSAke1VOQU1FX1ZFUlNJT059CitFT0YKKworZXhpdCAxCisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJ0aW1lc3RhbXA9JyIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkIgorIyB0aW1lLXN0YW1wLWVuZDogIiciCisjIEVuZDoKZGlmZiAtLWdpdCBhL2NvbmZpZy5zdWIgYi9jb25maWcuc3ViCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM4OTRkYTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcuc3ViCkBAIC0wLDAgKzEsMTc3MyBAQAorIyEgL2Jpbi9zaAorIyBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3JpcHQuCisjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAorIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsCisjICAgMjAxMSwgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwordGltZXN0YW1wPScyMDEyLTAyLTEwJworCisjIFRoaXMgZmlsZSBpcyAoaW4gcHJpbmNpcGxlKSBjb21tb24gdG8gQUxMIEdOVSBzb2Z0d2FyZS4KKyMgVGhlIHByZXNlbmNlIG9mIGEgbWFjaGluZSBpbiB0aGlzIGZpbGUgc3VnZ2VzdHMgdGhhdCBTT01FIEdOVSBzb2Z0d2FyZQorIyBjYW4gaGFuZGxlIHRoYXQgbWFjaGluZS4gIEl0IGRvZXMgbm90IGltcGx5IEFMTCBHTlUgc29mdHdhcmUgY2FuLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKworIyBQbGVhc2Ugc2VuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4gIFN1Ym1pdCBhIGNvbnRleHQKKyMgZGlmZiBhbmQgYSBwcm9wZXJseSBmb3JtYXR0ZWQgR05VIENoYW5nZUxvZyBlbnRyeS4KKyMKKyMgQ29uZmlndXJhdGlvbiBzdWJyb3V0aW5lIHRvIHZhbGlkYXRlIGFuZCBjYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIHR5cGUuCisjIFN1cHBseSB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gdHlwZSBhcyBhbiBhcmd1bWVudC4KKyMgSWYgaXQgaXMgaW52YWxpZCwgd2UgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBvbiBzdGRlcnIgYW5kIGV4aXQgd2l0aCBjb2RlIDEuCisjIE90aGVyd2lzZSwgd2UgcHJpbnQgdGhlIGNhbm9uaWNhbCBjb25maWcgdHlwZSBvbiBzdGRvdXQgYW5kIHN1Y2NlZWQuCisKKyMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206CisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKworIyBUaGlzIGZpbGUgaXMgc3VwcG9zZWQgdG8gYmUgdGhlIHNhbWUgZm9yIGFsbCBHTlUgcGFja2FnZXMKKyMgYW5kIHJlY29nbml6ZSBhbGwgdGhlIENQVSB0eXBlcywgc3lzdGVtIHR5cGVzIGFuZCBhbGlhc2VzCisjIHRoYXQgYXJlIG1lYW5pbmdmdWwgd2l0aCAqYW55KiBHTlUgc29mdHdhcmUuCisjIEVhY2ggcGFja2FnZSBpcyByZXNwb25zaWJsZSBmb3IgcmVwb3J0aW5nIHdoaWNoIHZhbGlkIGNvbmZpZ3VyYXRpb25zCisjIGl0IGRvZXMgbm90IHN1cHBvcnQuICBUaGUgdXNlciBzaG91bGQgYmUgYWJsZSB0byBkaXN0aW5ndWlzaAorIyBhIGZhaWx1cmUgdG8gc3VwcG9ydCBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gZnJvbSBhIG1lYW5pbmdsZXNzCisjIGNvbmZpZ3VyYXRpb24uCisKKyMgVGhlIGdvYWwgb2YgdGhpcyBmaWxlIGlzIHRvIG1hcCBhbGwgdGhlIHZhcmlvdXMgdmFyaWF0aW9ucyBvZiBhIGdpdmVuCisjIG1hY2hpbmUgc3BlY2lmaWNhdGlvbiBpbnRvIGEgc2luZ2xlIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm06CisjCUNQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNCisjIG9yIGluIHNvbWUgY2FzZXMsIHRoZSBuZXdlciBmb3VyLXBhcnQgZm9ybToKKyMJQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNCisjIEl0IGlzIHdyb25nIHRvIGVjaG8gYW55IG90aGVyIHR5cGUgb2Ygc3BlY2lmaWNhdGlvbi4KKworbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCisKK3VzYWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0gQ1BVLU1GUi1PUFNZUworICAgICAgICQwIFtPUFRJT05dIEFMSUFTCisKK0Nhbm9uaWNhbGl6ZSBhIGNvbmZpZ3VyYXRpb24gbmFtZS4KKworT3BlcmF0aW9uIG1vZGVzOgorICAtaCwgLS1oZWxwICAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKKyAgLXQsIC0tdGltZS1zdGFtcCAgIHByaW50IGRhdGUgb2YgbGFzdCBtb2RpZmljYXRpb24sIHRoZW4gZXhpdAorICAtdiwgLS12ZXJzaW9uICAgICAgcHJpbnQgdmVyc2lvbiBudW1iZXIsIHRoZW4gZXhpdAorCitSZXBvcnQgYnVncyBhbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uIgorCit2ZXJzaW9uPSJcCitHTlUgY29uZmlnLnN1YiAoJHRpbWVzdGFtcCkKKworQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLAorMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMgorRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCit3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCisKK2hlbHA9IgorVHJ5IFxgJG1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorCisjIFBhcnNlIGNvbW1hbmQgbGluZQord2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtLXRpbWUtc3RhbXAgfCAtLXRpbWUqIHwgLXQgKQorICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OworICAgIC0tdmVyc2lvbiB8IC12ICkKKyAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7CisgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKKyAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7CisgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgc2hpZnQ7IGJyZWFrIDs7CisgICAgLSApCSMgVXNlIHN0ZGluIGFzIGlucHV0LgorICAgICAgIGJyZWFrIDs7CisgICAgLSogKQorICAgICAgIGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIKKyAgICAgICBleGl0IDEgOzsKKworICAgICpsb2NhbCopCisgICAgICAgIyBGaXJzdCBwYXNzIHRocm91Z2ggYW55IGxvY2FsIG1hY2hpbmUgdHlwZXMuCisgICAgICAgZWNobyAkMQorICAgICAgIGV4aXQgOzsKKworICAgICogKQorICAgICAgIGJyZWFrIDs7CisgIGVzYWMKK2RvbmUKKworY2FzZSAkIyBpbgorIDApIGVjaG8gIiRtZTogbWlzc2luZyBhcmd1bWVudCRoZWxwIiA+JjIKKyAgICBleGl0IDE7OworIDEpIDs7CisgKikgZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIgPiYyCisgICAgZXhpdCAxOzsKK2VzYWMKKworIyBTZXBhcmF0ZSB3aGF0IHRoZSB1c2VyIGdhdmUgaW50byBDUFUtQ09NUEFOWSBhbmQgT1Mgb3IgS0VSTkVMLU9TIChpZiBhbnkpLgorIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KK21heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAorY2FzZSAkbWF5YmVfb3MgaW4KKyAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtYW5kcm9pZCogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xpYiogfCBcCisgIGxpbnV4LXVjbGliYyogfCB1Y2xpbnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IFwKKyAga25ldGJzZCotZ251KiB8IG5ldGJzZCotZ251KiB8IFwKKyAga29wZW5zb2xhcmlzKi1nbnUqIHwgXAorICBzdG9ybS1jaGFvcyogfCBvczItZW14KiB8IHJ0bWstbm92YSopCisgICAgb3M9LSRtYXliZV9vcworICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wxLydgCisgICAgOzsKKyAgYW5kcm9pZC1saW51eCkKKyAgICBvcz0tbGludXgtYW5kcm9pZAorICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wxLydgLXVua25vd24KKyAgICA7OworICAqKQorICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvLVteLV0qJC8vJ2AKKyAgICBpZiBbICRiYXNpY19tYWNoaW5lICE9ICQxIF0KKyAgICB0aGVuIG9zPWBlY2hvICQxIHwgc2VkICdzLy4qLS8tLydgCisgICAgZWxzZSBvcz07IGZpCisgICAgOzsKK2VzYWMKKworIyMjIExldCdzIHJlY29nbml6ZSBjb21tb24gbWFjaGluZXMgYXMgbm90IGJlaW5nIG9wZXJhdGluZyBzeXN0ZW1zIHNvCisjIyMgdGhhdCB0aGluZ3MgbGlrZSBjb25maWcuc3ViIGRlY3N0YXRpb24tMzEwMCB3b3JrLiAgV2UgYWxzbworIyMjIHJlY29nbml6ZSBzb21lIG1hbnVmYWN0dXJlcnMgYXMgbm90IGJlaW5nIG9wZXJhdGluZyBzeXN0ZW1zLCBzbyB3ZQorIyMjIGNhbiBwcm92aWRlIGRlZmF1bHQgb3BlcmF0aW5nIHN5c3RlbXMgYmVsb3cuCitjYXNlICRvcyBpbgorCS1zdW4qb3MqKQorCQkjIFByZXZlbnQgZm9sbG93aW5nIGNsYXVzZSBmcm9tIGhhbmRsaW5nIHRoaXMgaW52YWxpZCBpbnB1dC4KKwkJOzsKKwktZGVjKiB8IC1taXBzKiB8IC1zZXF1ZW50KiB8IC1lbmNvcmUqIHwgLXBjNTMyKiB8IC1zZ2kqIHwgLXNvbnkqIHwgXAorCS1hdHQqIHwgLTczMDAqIHwgLTMzMDAqIHwgLWRlbHRhKiB8IC1tb3Rvcm9sYSogfCAtc3VuWzIzNF0qIHwgXAorCS11bmljb20qIHwgLWlibSogfCAtbmV4dCB8IC1ocCB8IC1pc2kqIHwgLWFwb2xsbyB8IC1hbHRvcyogfCBcCisJLWNvbnZlcmdlbnQqIHwgLW5jciogfCAtbmV3cyB8IC0zMiogfCAtMzYwMCogfCAtMzEwMCogfCAtaGl0YWNoaSogfFwKKwktY1sxMjNdKiB8IC1jb252ZXgqIHwgLXN1biB8IC1jcmRzIHwgLW9tcm9uKiB8IC1kZyB8IC11bHRyYSB8IC10dGkqIHwgXAorCS1oYXJyaXMgfCAtZG9scGhpbiB8IC1oaWdobGV2ZWwgfCAtZ291bGQgfCAtY2JtIHwgLW5zIHwgLW1hc3Njb21wIHwgXAorCS1hcHBsZSB8IC1heGlzIHwgLWtudXRoIHwgLWNyYXkgfCAtbWljcm9ibGF6ZSkKKwkJb3M9CisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktYmx1ZWdlbmUqKQorCQlvcz0tY25rCisJCTs7CisJLXNpbSB8IC1jaXNjbyB8IC1va2kgfCAtd2VjIHwgLXdpbmJvbmQpCisJCW9zPQorCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLXNjb3V0KQorCQk7OworCS13cnMpCisJCW9zPS12eHdvcmtzCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktY2hvcnVzb3MqKQorCQlvcz0tY2hvcnVzb3MKKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1jaG9ydXNyZGIpCisJCW9zPS1jaG9ydXNyZGIKKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1oaXV4KikKKwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwktc2NvNikKKwkJb3M9LXNjbzV2NgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzUpCisJCW9zPS1zY28zLjJ2NQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzQpCisJCW9zPS1zY28zLjJ2NAorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzMuMi5bNC05XSopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAncy9zY28zLjIuL3NjbzMuMnYvJ2AKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY28zLjJ2WzQtOV0qKQorCQkjIERvbid0IGZvcmdldCB2ZXJzaW9uIGlmIGl0IGlzIDMuMnY0IG9yIG5ld2VyLgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzV2NiopCisJCSMgRG9uJ3QgZm9yZ2V0IHZlcnNpb24gaWYgaXQgaXMgMy4ydjQgb3IgbmV3ZXIuCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvKikKKwkJb3M9LXNjbzMuMnYyCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktdWRrKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1pc2MpCisJCW9zPS1pc2MyLjIKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1jbGl4KikKKwkJYmFzaWNfbWFjaGluZT1jbGlwcGVyLWludGVyZ3JhcGgKKwkJOzsKKwktaXNjKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1seW54KikKKwkJb3M9LWx5bnhvcworCQk7OworCS1wdHgqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXNlcXVlbnQvJ2AKKwkJOzsKKwktd2luZG93c250KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzL3dpbmRvd3NudC93aW5udC8nYAorCQk7OworCS1wc29zKikKKwkJb3M9LXBzb3MKKwkJOzsKKwktbWludCB8IC1taW50WzAtOV0qKQorCQliYXNpY19tYWNoaW5lPW02OGstYXRhcmkKKwkJb3M9LW1pbnQKKwkJOzsKK2VzYWMKKworIyBEZWNvZGUgYWxpYXNlcyBmb3IgY2VydGFpbiBDUFUtQ09NUEFOWSBjb21iaW5hdGlvbnMuCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJIyBSZWNvZ25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRob3V0IGNvbXBhbnkgbmFtZS4KKwkjIFNvbWUgYXJlIG9taXR0ZWQgaGVyZSBiZWNhdXNlIHRoZXkgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzIGJlbG93LgorCTE3NTBhIHwgNTgwIFwKKwl8IGEyOWsgXAorCXwgYWFyY2g2NCB8IGFhcmNoNjRfYmUgXAorCXwgYWxwaGEgfCBhbHBoYWV2WzQtOF0gfCBhbHBoYWV2NTYgfCBhbHBoYWV2Nls3OF0gfCBhbHBoYXBjYTVbNjddIFwKKwl8IGFscGhhNjQgfCBhbHBoYTY0ZXZbNC04XSB8IGFscGhhNjRldjU2IHwgYWxwaGE2NGV2Nls3OF0gfCBhbHBoYTY0cGNhNVs2N10gXAorCXwgYW0zM18yLjAgXAorCXwgYXJjIHwgYXJtIHwgYXJtW2JsXWUgfCBhcm1lW2xiXSB8IGFybXZbMjM0NV0gfCBhcm12WzM0NV1bbGJdIHwgYXZyIHwgYXZyMzIgXAorICAgICAgICB8IGJlMzIgfCBiZTY0IFwKKwl8IGJmaW4gXAorCXwgYzR4IHwgY2xpcHBlciBcCisJfCBkMTB2IHwgZDMwdiB8IGRseCB8IGRzcDE2eHggXAorCXwgZXBpcGhhbnkgXAorCXwgZmlkbyB8IGZyMzAgfCBmcnYgXAorCXwgaDgzMDAgfCBoODUwMCB8IGhwcGEgfCBocHBhMS5bMDFdIHwgaHBwYTIuMCB8IGhwcGEyLjBbbnddIHwgaHBwYTY0IFwKKwl8IGhleGFnb24gXAorCXwgaTM3MCB8IGk4NjAgfCBpOTYwIHwgaWE2NCBcCisJfCBpcDJrIHwgaXEyMDAwIFwKKwl8IGxlMzIgfCBsZTY0IFwKKwl8IGxtMzIgXAorCXwgbTMyYyB8IG0zMnIgfCBtMzJybGUgfCBtNjgwMDAgfCBtNjhrIHwgbTg4ayBcCisJfCBtYXhxIHwgbWIgfCBtaWNyb2JsYXplIHwgbWNvcmUgfCBtZXAgfCBtZXRhZyBcCisJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwgbWlwc2xlIFwKKwl8IG1pcHMxNiBcCisJfCBtaXBzNjQgfCBtaXBzNjRlbCBcCisJfCBtaXBzNjRvY3Rlb24gfCBtaXBzNjRvY3Rlb25lbCBcCisJfCBtaXBzNjRvcmlvbiB8IG1pcHM2NG9yaW9uZWwgXAorCXwgbWlwczY0cjU5MDAgfCBtaXBzNjRyNTkwMGVsIFwKKwl8IG1pcHM2NHZyIHwgbWlwczY0dnJlbCBcCisJfCBtaXBzNjR2cjQxMDAgfCBtaXBzNjR2cjQxMDBlbCBcCisJfCBtaXBzNjR2cjQzMDAgfCBtaXBzNjR2cjQzMDBlbCBcCisJfCBtaXBzNjR2cjUwMDAgfCBtaXBzNjR2cjUwMDBlbCBcCisJfCBtaXBzNjR2cjU5MDAgfCBtaXBzNjR2cjU5MDBlbCBcCisJfCBtaXBzaXNhMzIgfCBtaXBzaXNhMzJlbCBcCisJfCBtaXBzaXNhMzJyMiB8IG1pcHNpc2EzMnIyZWwgXAorCXwgbWlwc2lzYTY0IHwgbWlwc2lzYTY0ZWwgXAorCXwgbWlwc2lzYTY0cjIgfCBtaXBzaXNhNjRyMmVsIFwKKwl8IG1pcHNpc2E2NHNiMSB8IG1pcHNpc2E2NHNiMWVsIFwKKwl8IG1pcHNpc2E2NHNyNzFrIHwgbWlwc2lzYTY0c3I3MWtlbCBcCisJfCBtaXBzdHgzOSB8IG1pcHN0eDM5ZWwgXAorCXwgbW4xMDIwMCB8IG1uMTAzMDAgXAorCXwgbW94aWUgXAorCXwgbXQgXAorCXwgbXNwNDMwIFwKKwl8IG5kczMyIHwgbmRzMzJsZSB8IG5kczMyYmUgXAorCXwgbmlvcyB8IG5pb3MyIFwKKwl8IG5zMTZrIHwgbnMzMmsgXAorCXwgb3BlbjggXAorCXwgb3IzMiBcCisJfCBwZHAxMCB8IHBkcDExIHwgcGogfCBwamwgXAorCXwgcG93ZXJwYyB8IHBvd2VycGM2NCB8IHBvd2VycGM2NGxlIHwgcG93ZXJwY2xlIFwKKwl8IHB5cmFtaWQgXAorCXwgcmw3OCB8IHJ4IFwKKwl8IHNjb3JlIFwKKwl8IHNoIHwgc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRdYWViIHwgc2hbMjNdZSB8IHNoWzM0XWViIHwgc2hlYiB8IHNoYmUgfCBzaGxlIHwgc2hbMTIzNF1sZSB8IHNoM2VsZSBcCisJfCBzaDY0IHwgc2g2NGxlIFwKKwl8IHNwYXJjIHwgc3BhcmM2NCB8IHNwYXJjNjRiIHwgc3BhcmM2NHYgfCBzcGFyYzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIFwKKwl8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5diBcCisJfCBzcHUgXAorCXwgdGFob2UgfCB0aWM0eCB8IHRpYzU0eCB8IHRpYzU1eCB8IHRpYzZ4IHwgdGljODAgfCB0cm9uIFwKKwl8IHViaWNvbTMyIFwKKwl8IHY4NTAgfCB2ODUwZSB8IHY4NTBlMSB8IHY4NTBlMiB8IHY4NTBlcyB8IHY4NTBlMnYzIFwKKwl8IHdlMzJrIFwKKwl8IHg4NiB8IHhjMTZ4IHwgeHN0b3JteTE2IHwgeHRlbnNhIFwKKwl8IHo4ayB8IHo4MCkKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCTs7CisJYzU0eCkKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtdW5rbm93bgorCQk7OworCWM1NXgpCisJCWJhc2ljX21hY2hpbmU9dGljNTV4LXVua25vd24KKwkJOzsKKwljNngpCisJCWJhc2ljX21hY2hpbmU9dGljNngtdW5rbm93bgorCQk7OworCW02ODExIHwgbTY4aGMxMSB8IG02ODEyIHwgbTY4aGMxMiB8IG02OGhjczEyeCB8IHBpY29jaGlwKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJb3M9LW5vbmUKKwkJOzsKKwltODgxMTAgfCBtNjgwWzEyMzQ2XTAgfCBtNjgzPzIgfCBtNjgzNjAgfCBtNTIwMCB8IHY3MCB8IHc2NSB8IHo4aykKKwkJOzsKKwltczEpCisJCWJhc2ljX21hY2hpbmU9bXQtdW5rbm93bgorCQk7OworCisJc3Ryb25nYXJtIHwgdGh1bWIgfCB4c2NhbGUpCisJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KKwkJOzsKKwl4Z2F0ZSkKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCW9zPS1ub25lCisJCTs7CisJeHNjYWxlZWIpCisJCWJhc2ljX21hY2hpbmU9YXJtZWItdW5rbm93bgorCQk7OworCisJeHNjYWxlZWwpCisJCWJhc2ljX21hY2hpbmU9YXJtZWwtdW5rbm93bgorCQk7OworCisJIyBXZSB1c2UgYHBjJyByYXRoZXIgdGhhbiBgdW5rbm93bicKKwkjIGJlY2F1c2UgKDEpIHRoYXQncyB3aGF0IHRoZXkgbm9ybWFsbHkgYXJlLCBhbmQKKwkjICgyKSB0aGUgd29yZCAidW5rbm93biIgdGVuZHMgdG8gY29uZnVzZSBiZWdpbm5pbmcgdXNlcnMuCisJaSo4NiB8IHg4Nl82NCkKKwkgIGJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtcGMKKwkgIDs7CisJIyBPYmplY3QgaWYgbW9yZSB0aGFuIG9uZSBjb21wYW55IG5hbWUgd29yZC4KKwkqLSotKikKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBtYWNoaW5lIFxgJGJhc2ljX21hY2hpbmVcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aCBjb21wYW55IG5hbWUuCisJNTgwLSogXAorCXwgYTI5ay0qIFwKKwl8IGFhcmNoNjQtKiB8IGFhcmNoNjRfYmUtKiBcCisJfCBhbHBoYS0qIHwgYWxwaGFldls0LThdLSogfCBhbHBoYWV2NTYtKiB8IGFscGhhZXY2Wzc4XS0qIFwKKwl8IGFscGhhNjQtKiB8IGFscGhhNjRldls0LThdLSogfCBhbHBoYTY0ZXY1Ni0qIHwgYWxwaGE2NGV2Nls3OF0tKiBcCisJfCBhbHBoYXBjYTVbNjddLSogfCBhbHBoYTY0cGNhNVs2N10tKiB8IGFyYy0qIFwKKwl8IGFybS0qICB8IGFybWJlLSogfCBhcm1sZS0qIHwgYXJtZWItKiB8IGFybXYqLSogXAorCXwgYXZyLSogfCBhdnIzMi0qIFwKKwl8IGJlMzItKiB8IGJlNjQtKiBcCisJfCBiZmluLSogfCBiczIwMDAtKiBcCisJfCBjWzEyM10qIHwgYzMwLSogfCBbY2p0XTkwLSogfCBjNHgtKiBcCisJfCBjbGlwcGVyLSogfCBjcmF5bnYtKiB8IGN5ZHJhLSogXAorCXwgZDEwdi0qIHwgZDMwdi0qIHwgZGx4LSogXAorCXwgZWx4c2ktKiBcCisJfCBmMzBbMDFdLSogfCBmNzAwLSogfCBmaWRvLSogfCBmcjMwLSogfCBmcnYtKiB8IGZ4ODAtKiBcCisJfCBoODMwMC0qIHwgaDg1MDAtKiBcCisJfCBocHBhLSogfCBocHBhMS5bMDFdLSogfCBocHBhMi4wLSogfCBocHBhMi4wW253XS0qIHwgaHBwYTY0LSogXAorCXwgaGV4YWdvbi0qIFwKKwl8IGkqODYtKiB8IGk4NjAtKiB8IGk5NjAtKiB8IGlhNjQtKiBcCisJfCBpcDJrLSogfCBpcTIwMDAtKiBcCisJfCBsZTMyLSogfCBsZTY0LSogXAorCXwgbG0zMi0qIFwKKwl8IG0zMmMtKiB8IG0zMnItKiB8IG0zMnJsZS0qIFwKKwl8IG02ODAwMC0qIHwgbTY4MFswMTIzNDZdMC0qIHwgbTY4MzYwLSogfCBtNjgzPzItKiB8IG02OGstKiBcCisJfCBtODgxMTAtKiB8IG04OGstKiB8IG1heHEtKiB8IG1jb3JlLSogfCBtZXRhZy0qIHwgbWljcm9ibGF6ZS0qIFwKKwl8IG1pcHMtKiB8IG1pcHNiZS0qIHwgbWlwc2ViLSogfCBtaXBzZWwtKiB8IG1pcHNsZS0qIFwKKwl8IG1pcHMxNi0qIFwKKwl8IG1pcHM2NC0qIHwgbWlwczY0ZWwtKiBcCisJfCBtaXBzNjRvY3Rlb24tKiB8IG1pcHM2NG9jdGVvbmVsLSogXAorCXwgbWlwczY0b3Jpb24tKiB8IG1pcHM2NG9yaW9uZWwtKiBcCisJfCBtaXBzNjRyNTkwMC0qIHwgbWlwczY0cjU5MDBlbC0qIFwKKwl8IG1pcHM2NHZyLSogfCBtaXBzNjR2cmVsLSogXAorCXwgbWlwczY0dnI0MTAwLSogfCBtaXBzNjR2cjQxMDBlbC0qIFwKKwl8IG1pcHM2NHZyNDMwMC0qIHwgbWlwczY0dnI0MzAwZWwtKiBcCisJfCBtaXBzNjR2cjUwMDAtKiB8IG1pcHM2NHZyNTAwMGVsLSogXAorCXwgbWlwczY0dnI1OTAwLSogfCBtaXBzNjR2cjU5MDBlbC0qIFwKKwl8IG1pcHNpc2EzMi0qIHwgbWlwc2lzYTMyZWwtKiBcCisJfCBtaXBzaXNhMzJyMi0qIHwgbWlwc2lzYTMycjJlbC0qIFwKKwl8IG1pcHNpc2E2NC0qIHwgbWlwc2lzYTY0ZWwtKiBcCisJfCBtaXBzaXNhNjRyMi0qIHwgbWlwc2lzYTY0cjJlbC0qIFwKKwl8IG1pcHNpc2E2NHNiMS0qIHwgbWlwc2lzYTY0c2IxZWwtKiBcCisJfCBtaXBzaXNhNjRzcjcxay0qIHwgbWlwc2lzYTY0c3I3MWtlbC0qIFwKKwl8IG1pcHN0eDM5LSogfCBtaXBzdHgzOWVsLSogXAorCXwgbW1peC0qIFwKKwl8IG10LSogXAorCXwgbXNwNDMwLSogXAorCXwgbmRzMzItKiB8IG5kczMybGUtKiB8IG5kczMyYmUtKiBcCisJfCBuaW9zLSogfCBuaW9zMi0qIFwKKwl8IG5vbmUtKiB8IG5wMS0qIHwgbnMxNmstKiB8IG5zMzJrLSogXAorCXwgb3BlbjgtKiBcCisJfCBvcmlvbi0qIFwKKwl8IHBkcDEwLSogfCBwZHAxMS0qIHwgcGotKiB8IHBqbC0qIHwgcG4tKiB8IHBvd2VyLSogXAorCXwgcG93ZXJwYy0qIHwgcG93ZXJwYzY0LSogfCBwb3dlcnBjNjRsZS0qIHwgcG93ZXJwY2xlLSogXAorCXwgcHlyYW1pZC0qIFwKKwl8IHJsNzgtKiB8IHJvbXAtKiB8IHJzNjAwMC0qIHwgcngtKiBcCisJfCBzaC0qIHwgc2hbMTIzNF0tKiB8IHNoWzI0XWEtKiB8IHNoWzI0XWFlYi0qIHwgc2hbMjNdZS0qIHwgc2hbMzRdZWItKiB8IHNoZWItKiB8IHNoYmUtKiBcCisJfCBzaGxlLSogfCBzaFsxMjM0XWxlLSogfCBzaDNlbGUtKiB8IHNoNjQtKiB8IHNoNjRsZS0qIFwKKwl8IHNwYXJjLSogfCBzcGFyYzY0LSogfCBzcGFyYzY0Yi0qIHwgc3BhcmM2NHYtKiB8IHNwYXJjODZ4LSogfCBzcGFyY2xldC0qIFwKKwl8IHNwYXJjbGl0ZS0qIFwKKwl8IHNwYXJjdjgtKiB8IHNwYXJjdjktKiB8IHNwYXJjdjliLSogfCBzcGFyY3Y5di0qIHwgc3YxLSogfCBzeD8tKiBcCisJfCB0YWhvZS0qIFwKKwl8IHRpYzMwLSogfCB0aWM0eC0qIHwgdGljNTR4LSogfCB0aWM1NXgtKiB8IHRpYzZ4LSogfCB0aWM4MC0qIFwKKwl8IHRpbGUqLSogXAorCXwgdHJvbi0qIFwKKwl8IHViaWNvbTMyLSogXAorCXwgdjg1MC0qIHwgdjg1MGUtKiB8IHY4NTBlMS0qIHwgdjg1MGVzLSogfCB2ODUwZTItKiB8IHY4NTBlMnYzLSogXAorCXwgdmF4LSogXAorCXwgd2UzMmstKiBcCisJfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhwczEwMC0qIFwKKwl8IHhzdG9ybXkxNi0qIHwgeHRlbnNhKi0qIFwKKwl8IHltcC0qIFwKKwl8IHo4ay0qIHwgejgwLSopCisJCTs7CisJIyBSZWNvZ25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRob3V0IGNvbXBhbnkgbmFtZSwgd2l0aCBnbG9iIG1hdGNoLgorCXh0ZW5zYSopCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQk7OworCSMgUmVjb2duaXplIHRoZSB2YXJpb3VzIG1hY2hpbmUgbmFtZXMgYW5kIGFsaWFzZXMgd2hpY2ggc3RhbmQKKwkjIGZvciBhIENQVSB0eXBlIGFuZCBhIGNvbXBhbnkgYW5kIHNvbWV0aW1lcyBldmVuIGFuIE9TLgorCTM4NmJzZCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LWJzZAorCQk7OworCTNiMSB8IDczMDAgfCA3MzAwLWF0dCB8IGF0dC03MzAwIHwgcGM3MzAwIHwgc2FmYXJpIHwgdW5peHBjKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1hdHQKKwkJOzsKKwkzYiopCisJCWJhc2ljX21hY2hpbmU9d2UzMmstYXR0CisJCTs7CisJYTI5a2hpZikKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisJYWJhY3VzKQorCQliYXNpY19tYWNoaW5lPWFiYWN1cy11bmtub3duCisJCTs7CisJYWRvYmU2OGspCisJCWJhc2ljX21hY2hpbmU9bTY4MDEwLWFkb2JlCisJCW9zPS1zY291dAorCQk7OworCWFsbGlhbnQgfCBmeDgwKQorCQliYXNpY19tYWNoaW5lPWZ4ODAtYWxsaWFudAorCQk7OworCWFsdG9zIHwgYWx0b3MzMDY4KQorCQliYXNpY19tYWNoaW5lPW02OGstYWx0b3MKKwkJOzsKKwlhbTI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLW5vbmUKKwkJb3M9LWJzZAorCQk7OworCWFtZDY0KQorCQliYXNpY19tYWNoaW5lPXg4Nl82NC1wYworCQk7OworCWFtZDY0LSopCisJCWJhc2ljX21hY2hpbmU9eDg2XzY0LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYW1kYWhsKQorCQliYXNpY19tYWNoaW5lPTU4MC1hbWRhaGwKKwkJb3M9LXN5c3YKKwkJOzsKKwlhbWlnYSB8IGFtaWdhLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCisJCTs7CisJYW1pZ2FvcyB8IGFtaWdhZG9zKQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tYW1pZ2FvcworCQk7OworCWFtaWdhdW5peCB8IGFtaXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCisJCW9zPS1zeXN2NAorCQk7OworCWFwb2xsbzY4KQorCQliYXNpY19tYWNoaW5lPW02OGstYXBvbGxvCisJCW9zPS1zeXN2CisJCTs7CisJYXBvbGxvNjhic2QpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcG9sbG8KKwkJb3M9LWJzZAorCQk7OworCWFyb3MpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tYXJvcworCQk7OworCWF1eCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwcGxlCisJCW9zPS1hdXgKKwkJOzsKKwliYWxhbmNlKQorCQliYXNpY19tYWNoaW5lPW5zMzJrLXNlcXVlbnQKKwkJb3M9LWR5bml4CisJCTs7CisJYmxhY2tmaW4pCisJCWJhc2ljX21hY2hpbmU9YmZpbi11bmtub3duCisJCW9zPS1saW51eAorCQk7OworCWJsYWNrZmluLSopCisJCWJhc2ljX21hY2hpbmU9YmZpbi1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQlvcz0tbGludXgKKwkJOzsKKwlibHVlZ2VuZSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KKwkJb3M9LWNuaworCQk7OworCWM1NHgtKikKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljNTV4LSopCisJCWJhc2ljX21hY2hpbmU9dGljNTV4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYzZ4LSopCisJCWJhc2ljX21hY2hpbmU9dGljNngtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljOTApCisJCWJhc2ljX21hY2hpbmU9YzkwLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCWNlZ2NjKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCW9zPS1jZWdjYworCQk7OworCWNvbnZleC1jMSkKKwkJYmFzaWNfbWFjaGluZT1jMS1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMikKKwkJYmFzaWNfbWFjaGluZT1jMi1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMzIpCisJCWJhc2ljX21hY2hpbmU9YzMyLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMzNCkKKwkJYmFzaWNfbWFjaGluZT1jMzQtY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzM4KQorCQliYXNpY19tYWNoaW5lPWMzOC1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNyYXkgfCBqOTApCisJCWJhc2ljX21hY2hpbmU9ajkwLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCWNyYXludikKKwkJYmFzaWNfbWFjaGluZT1jcmF5bnYtY3JheQorCQlvcz0tdW5pY29zbXAKKwkJOzsKKwljcjE2IHwgY3IxNi0qKQorCQliYXNpY19tYWNoaW5lPWNyMTYtdW5rbm93bgorCQlvcz0tZWxmCisJCTs7CisJY3JkcyB8IHVub3MpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1jcmRzCisJCTs7CisJY3Jpc3YzMiB8IGNyaXN2MzItKiB8IGV0cmF4ZnMqKQorCQliYXNpY19tYWNoaW5lPWNyaXN2MzItYXhpcworCQk7OworCWNyaXMgfCBjcmlzLSogfCBldHJheCopCisJCWJhc2ljX21hY2hpbmU9Y3Jpcy1heGlzCisJCTs7CisJY3J4KQorCQliYXNpY19tYWNoaW5lPWNyeC11bmtub3duCisJCW9zPS1lbGYKKwkJOzsKKwlkYTMwIHwgZGEzMC0qKQorCQliYXNpY19tYWNoaW5lPW02OGstZGEzMAorCQk7OworCWRlY3N0YXRpb24gfCBkZWNzdGF0aW9uLTMxMDAgfCBwbWF4IHwgcG1heC0qIHwgcG1pbiB8IGRlYzMxMDAgfCBkZWNzdGF0bikKKwkJYmFzaWNfbWFjaGluZT1taXBzLWRlYworCQk7OworCWRlY3N5c3RlbTEwKiB8IGRlYzEwKikKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC1kZWMKKwkJb3M9LXRvcHMxMAorCQk7OworCWRlY3N5c3RlbTIwKiB8IGRlYzIwKikKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC1kZWMKKwkJb3M9LXRvcHMyMAorCQk7OworCWRlbHRhIHwgMzMwMCB8IG1vdG9yb2xhLTMzMDAgfCBtb3Rvcm9sYS1kZWx0YSBcCisJICAgICAgfCAzMzAwLW1vdG9yb2xhIHwgZGVsdGEtbW90b3JvbGEpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1tb3Rvcm9sYQorCQk7OworCWRlbHRhODgpCisJCWJhc2ljX21hY2hpbmU9bTg4ay1tb3Rvcm9sYQorCQlvcz0tc3lzdjMKKwkJOzsKKwlkaWNvcykKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCW9zPS1kaWNvcworCQk7OworCWRqZ3BwKQorCQliYXNpY19tYWNoaW5lPWk1ODYtcGMKKwkJb3M9LW1zZG9zZGpncHAKKwkJOzsKKwlkcHgyMCB8IGRweDIwLSopCisJCWJhc2ljX21hY2hpbmU9cnM2MDAwLWJ1bGwKKwkJb3M9LWJvc3gKKwkJOzsKKwlkcHgyKiB8IGRweDIqLWJ1bGwpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1idWxsCisJCW9zPS1zeXN2MworCQk7OworCWVibW9uMjlrKQorCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCisJCW9zPS1lYm1vbgorCQk7OworCWVseHNpKQorCQliYXNpY19tYWNoaW5lPWVseHNpLWVseHNpCisJCW9zPS1ic2QKKwkJOzsKKwllbmNvcmUgfCB1bWF4IHwgbW1heCkKKwkJYmFzaWNfbWFjaGluZT1uczMyay1lbmNvcmUKKwkJOzsKKwllczE4MDAgfCBPU0U2OGsgfCBvc2U2OGsgfCBvc2UgfCBPU0UpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1lcmljc3NvbgorCQlvcz0tb3NlCisJCTs7CisJZngyODAwKQorCQliYXNpY19tYWNoaW5lPWk4NjAtYWxsaWFudAorCQk7OworCWdlbml4KQorCQliYXNpY19tYWNoaW5lPW5zMzJrLW5zCisJCTs7CisJZ21pY3JvKQorCQliYXNpY19tYWNoaW5lPXRyb24tZ21pY3JvCisJCW9zPS1zeXN2CisJCTs7CisJZ28zMikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1nbzMyCisJCTs7CisJaDMwNTByKiB8IGhpdXgqKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaGl0YWNoaQorCQlvcz0taGl1eHdlMgorCQk7OworCWg4MzAwaG1zKQorCQliYXNpY19tYWNoaW5lPWg4MzAwLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCWg4MzAweHJheSkKKwkJYmFzaWNfbWFjaGluZT1oODMwMC1oaXRhY2hpCisJCW9zPS14cmF5CisJCTs7CisJaDg1MDBobXMpCisJCWJhc2ljX21hY2hpbmU9aDg1MDAtaGl0YWNoaQorCQlvcz0taG1zCisJCTs7CisJaGFycmlzKQorCQliYXNpY19tYWNoaW5lPW04OGstaGFycmlzCisJCW9zPS1zeXN2MworCQk7OworCWhwMzAwLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQk7OworCWhwMzAwYnNkKQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJb3M9LWJzZAorCQk7OworCWhwMzAwaHB1eCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCW9zPS1ocHV4CisJCTs7CisJaHAzazlbMC05XVswLTldIHwgaHA5WzAtOV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHA5azJbMC05XVswLTldIHwgaHA5azMxWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLWhwCisJCTs7CisJaHA5azNbMi05XVswLTldKQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJOzsKKwlocDlrNlswLTldWzAtOV0gfCBocDZbMC05XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjAtaHAKKwkJOzsKKwlocDlrN1swLTc5XVswLTldIHwgaHA3WzAtNzldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs3OFswLTldIHwgaHA3OFswLTldKQorCQkjIEZJWE1FOiByZWFsbHkgaHBwYTIuMC1ocAorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlocDlrOFs2N10xIHwgaHA4WzY3XTEgfCBocDlrODBbMjRdIHwgaHA4MFsyNF0gfCBocDlrOFs3OF05IHwgaHA4Wzc4XTkgfCBocDlrODkzIHwgaHA4OTMpCisJCSMgRklYTUU6IHJlYWxseSBocHBhMi4wLWhwCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzAtOV1bMTM2NzldIHwgaHA4WzAtOV1bMTM2NzldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlocDlrOFswLTldWzAtOV0gfCBocDhbMC05XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjAtaHAKKwkJOzsKKwlocHBhLW5leHQpCisJCW9zPS1uZXh0c3RlcDMKKwkJOzsKKwlocHBhb3NmKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJb3M9LW9zZgorCQk7OworCWhwcHJvKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJb3M9LXByb2VsZgorCQk7OworCWkzNzAtaWJtKiB8IGlibSopCisJCWJhc2ljX21hY2hpbmU9aTM3MC1pYm0KKwkJOzsKKwlpKjg2djMyKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3YzMgorCQk7OworCWkqODZ2NCopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc3lzdjQKKwkJOzsKKwlpKjg2dikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2CisJCTs7CisJaSo4NnNvbDIpCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc29sYXJpczIKKwkJOzsKKwlpMzg2bWFjaCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LW1hY2gKKwkJb3M9LW1hY2gKKwkJOzsKKwlpMzg2LXZzdGEgfCB2c3RhKQorCQliYXNpY19tYWNoaW5lPWkzODYtdW5rbm93bgorCQlvcz0tdnN0YQorCQk7OworCWlyaXMgfCBpcmlzNGQpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1zZ2kKKwkJY2FzZSAkb3MgaW4KKwkJICAgIC1pcml4KikKKwkJCTs7CisJCSAgICAqKQorCQkJb3M9LWlyaXg0CisJCQk7OworCQllc2FjCisJCTs7CisJaXNpNjggfCBpc2kpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1pc2kKKwkJb3M9LXN5c3YKKwkJOzsKKwltNjhrbm9tbXUpCisJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCisJCW9zPS1saW51eAorCQk7OworCW02OGtub21tdS0qKQorCQliYXNpY19tYWNoaW5lPW02OGstYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9LWxpbnV4CisJCTs7CisJbTg4ay1vbXJvbiopCisJCWJhc2ljX21hY2hpbmU9bTg4ay1vbXJvbgorCQk7OworCW1hZ251bSB8IG0zMjMwKQorCQliYXNpY19tYWNoaW5lPW1pcHMtbWlwcworCQlvcz0tc3lzdgorCQk7OworCW1lcmxpbikKKwkJYmFzaWNfbWFjaGluZT1uczMyay11dGVrCisJCW9zPS1zeXN2CisJCTs7CisJbWljcm9ibGF6ZSkKKwkJYmFzaWNfbWFjaGluZT1taWNyb2JsYXplLXhpbGlueAorCQk7OworCW1pbmd3MzIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tbWluZ3czMgorCQk7OworCW1pbmd3MzJjZSkKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQlvcz0tbWluZ3czMmNlCisJCTs7CisJbWluaWZyYW1lKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1jb252ZXJnZW50CisJCTs7CisJKm1pbnQgfCAtbWludFswLTldKiB8ICpNaU5UIHwgKk1pTlRbMC05XSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hdGFyaQorCQlvcz0tbWludAorCQk7OworCW1pcHMzKi0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkIC1lICdzL21pcHMzL21pcHM2NC8nYAorCQk7OworCW1pcHMzKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9taXBzMy9taXBzNjQvJ2AtdW5rbm93bgorCQk7OworCW1vbml0b3IpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKKwkJb3M9LWNvZmYKKwkJOzsKKwltb3JwaG9zKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgorCQlvcz0tbW9ycGhvcworCQk7OworCW1zZG9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LW1zZG9zCisJCTs7CisJbXMxLSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgLWUgJ3MvbXMxLS9tdC0vJ2AKKwkJOzsKKwltc3lzKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LW1zeXMKKwkJOzsKKwltdnMpCisJCWJhc2ljX21hY2hpbmU9aTM3MC1pYm0KKwkJb3M9LW12cworCQk7OworCW5hY2wpCisJCWJhc2ljX21hY2hpbmU9bGUzMi11bmtub3duCisJCW9zPS1uYWNsCisJCTs7CisJbmNyMzAwMCkKKwkJYmFzaWNfbWFjaGluZT1pNDg2LW5jcgorCQlvcz0tc3lzdjQKKwkJOzsKKwluZXRic2QzODYpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni11bmtub3duCisJCW9zPS1uZXRic2QKKwkJOzsKKwluZXR3aW5kZXIpCisJCWJhc2ljX21hY2hpbmU9YXJtdjRsLXJlYmVsCisJCW9zPS1saW51eAorCQk7OworCW5ld3MgfCBuZXdzNzAwIHwgbmV3czgwMCB8IG5ld3M5MDApCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZXdzMTAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMzAtc29ueQorCQlvcz0tbmV3c29zCisJCTs7CisJbmV3cy0zNjAwIHwgcmlzYy1uZXdzKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc29ueQorCQlvcz0tbmV3c29zCisJCTs7CisJbmVjdjcwKQorCQliYXNpY19tYWNoaW5lPXY3MC1uZWMKKwkJb3M9LXN5c3YKKwkJOzsKKwluZXh0IHwgbSotbmV4dCApCisJCWJhc2ljX21hY2hpbmU9bTY4ay1uZXh0CisJCWNhc2UgJG9zIGluCisJCSAgICAtbmV4dHN0ZXAqICkKKwkJCTs7CisJCSAgICAtbnMyKikKKwkJICAgICAgb3M9LW5leHRzdGVwMgorCQkJOzsKKwkJICAgICopCisJCSAgICAgIG9zPS1uZXh0c3RlcDMKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwluaDMwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4ay1oYXJyaXMKKwkJb3M9LWN4dXgKKwkJOzsKKwluaFs0NV0wMDApCisJCWJhc2ljX21hY2hpbmU9bTg4ay1oYXJyaXMKKwkJb3M9LWN4dXgKKwkJOzsKKwluaW5keTk2MCkKKwkJYmFzaWNfbWFjaGluZT1pOTYwLWludGVsCisJCW9zPS1uaW5keQorCQk7OworCW1vbjk2MCkKKwkJYmFzaWNfbWFjaGluZT1pOTYwLWludGVsCisJCW9zPS1tb245NjAKKwkJOzsKKwlub25zdG9wdXgpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1jb21wYXEKKwkJb3M9LW5vbnN0b3B1eAorCQk7OworCW5wMSkKKwkJYmFzaWNfbWFjaGluZT1ucDEtZ291bGQKKwkJOzsKKwluZW8tdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5lby10YW5kZW0KKwkJOzsKKwluc2UtdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5zZS10YW5kZW0KKwkJOzsKKwluc3ItdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5zci10YW5kZW0KKwkJOzsKKwlvcDUwbi0qIHwgb3A2MGMtKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorCQlvcz0tcHJvZWxmCisJCTs7CisJb3BlbnJpc2MgfCBvcGVucmlzYy0qKQorCQliYXNpY19tYWNoaW5lPW9yMzItdW5rbm93bgorCQk7OworCW9zNDAwKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJtCisJCW9zPS1vczQwMAorCQk7OworCU9TRTY4MDAwIHwgb3NlNjgwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLWVyaWNzc29uCisJCW9zPS1vc2UKKwkJOzsKKwlvczY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW5vbmUKKwkJb3M9LW9zNjhrCisJCTs7CisJcGEtaGl0YWNoaSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhpdGFjaGkKKwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwlwYXJhZ29uKQorCQliYXNpY19tYWNoaW5lPWk4NjAtaW50ZWwKKwkJb3M9LW9zZgorCQk7OworCXBhcmlzYykKKwkJYmFzaWNfbWFjaGluZT1ocHBhLXVua25vd24KKwkJb3M9LWxpbnV4CisJCTs7CisJcGFyaXNjLSopCisJCWJhc2ljX21hY2hpbmU9aHBwYS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQlvcz0tbGludXgKKwkJOzsKKwlwYmQpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtdHRpCisJCTs7CisJcGJiKQorCQliYXNpY19tYWNoaW5lPW02OGstdHRpCisJCTs7CisJcGM1MzIgfCBwYzUzMi0qKQorCQliYXNpY19tYWNoaW5lPW5zMzJrLXBjNTMyCisJCTs7CisJcGM5OCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCTs7CisJcGM5OC0qKQorCQliYXNpY19tYWNoaW5lPWkzODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtIHwgcDUgfCBrNSB8IGs2IHwgbmV4Z2VuIHwgdmlhYzMpCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1wYworCQk7OworCXBlbnRpdW1wcm8gfCBwNiB8IDZ4ODYgfCBhdGhsb24gfCBhdGhsb25fKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCTs7CisJcGVudGl1bWlpIHwgcGVudGl1bTIgfCBwZW50aXVtaWlpIHwgcGVudGl1bTMpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQk7OworCXBlbnRpdW00KQorCQliYXNpY19tYWNoaW5lPWk3ODYtcGMKKwkJOzsKKwlwZW50aXVtLSogfCBwNS0qIHwgazUtKiB8IGs2LSogfCBuZXhnZW4tKiB8IHZpYWMzLSopCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW1wcm8tKiB8IHA2LSogfCA2eDg2LSogfCBhdGhsb24tKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bWlpLSogfCBwZW50aXVtMi0qIHwgcGVudGl1bWlpaS0qIHwgcGVudGl1bTMtKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bTQtKikKKwkJYmFzaWNfbWFjaGluZT1pNzg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcG4pCisJCWJhc2ljX21hY2hpbmU9cG4tZ291bGQKKwkJOzsKKwlwb3dlcikJYmFzaWNfbWFjaGluZT1wb3dlci1pYm0KKwkJOzsKKwlwcGMgfCBwcGNiZSkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwkJOzsKKwlwcGMtKiB8IHBwY2JlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwY2xlIHwgcG93ZXJwY2xpdHRsZSB8IHBwYy1sZSB8IHBvd2VycGMtbGl0dGxlKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGNsZS11bmtub3duCisJCTs7CisJcHBjbGUtKiB8IHBvd2VycGNsaXR0bGUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjbGUtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwcGM2NCkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjQtdW5rbm93bgorCQk7OworCXBwYzY0LSopIGJhc2ljX21hY2hpbmU9cG93ZXJwYzY0LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjNjRsZSB8IHBvd2VycGM2NGxpdHRsZSB8IHBwYzY0LWxlIHwgcG93ZXJwYzY0LWxpdHRsZSkKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjRsZS11bmtub3duCisJCTs7CisJcHBjNjRsZS0qIHwgcG93ZXJwYzY0bGl0dGxlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYzY0bGUtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwczIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1pYm0KKwkJOzsKKwlwdzMyKQorCQliYXNpY19tYWNoaW5lPWk1ODYtdW5rbm93bgorCQlvcz0tcHczMgorCQk7OworCXJkb3MpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tcmRvcworCQk7OworCXJvbTY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXJvbTY4aworCQlvcz0tY29mZgorCQk7OworCXJtWzQ2XTAwKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2llbWVucworCQk7OworCXJ0cGMgfCBydHBjLSopCisJCWJhc2ljX21hY2hpbmU9cm9tcC1pYm0KKwkJOzsKKwlzMzkwIHwgczM5MC0qKQorCQliYXNpY19tYWNoaW5lPXMzOTAtaWJtCisJCTs7CisJczM5MHggfCBzMzkweC0qKQorCQliYXNpY19tYWNoaW5lPXMzOTB4LWlibQorCQk7OworCXNhMjkyMDApCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCXNiMSkKKwkJYmFzaWNfbWFjaGluZT1taXBzaXNhNjRzYjEtdW5rbm93bgorCQk7OworCXNiMWVsKQorCQliYXNpY19tYWNoaW5lPW1pcHNpc2E2NHNiMWVsLXVua25vd24KKwkJOzsKKwlzZGUpCisJCWJhc2ljX21hY2hpbmU9bWlwc2lzYTMyLXNkZQorCQlvcz0tZWxmCisJCTs7CisJc2VpKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2VpCisJCW9zPS1zZWl1eAorCQk7OworCXNlcXVlbnQpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1zZXF1ZW50CisJCTs7CisJc2gpCisJCWJhc2ljX21hY2hpbmU9c2gtaGl0YWNoaQorCQlvcz0taG1zCisJCTs7CisJc2g1ZWwpCisJCWJhc2ljX21hY2hpbmU9c2g1bGUtdW5rbm93bgorCQk7OworCXNoNjQpCisJCWJhc2ljX21hY2hpbmU9c2g2NC11bmtub3duCisJCTs7CisJc3BhcmNsaXRlLXdycyB8IHNpbXNvLXdycykKKwkJYmFzaWNfbWFjaGluZT1zcGFyY2xpdGUtd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJc3BzNykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKKwkJb3M9LXN5c3YyCisJCTs7CisJc3B1cikKKwkJYmFzaWNfbWFjaGluZT1zcHVyLXVua25vd24KKwkJOzsKKwlzdDIwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4ay10YW5kZW0KKwkJOzsKKwlzdHJhdHVzKQorCQliYXNpY19tYWNoaW5lPWk4NjAtc3RyYXR1cworCQlvcz0tc3lzdjQKKwkJOzsKKwlzdHJvbmdhcm0tKiB8IHRodW1iLSopCisJCWJhc2ljX21hY2hpbmU9YXJtLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJc3VuMikKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCisJCTs7CisJc3VuMm9zMykKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW4yb3M0KQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjNvczMpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zdW4KKwkJb3M9LXN1bm9zMworCQk7OworCXN1bjNvczQpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjRvczMpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW40b3M0KQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc3Vub3M0CisJCTs7CisJc3VuNHNvbDIpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCW9zPS1zb2xhcmlzMgorCQk7OworCXN1bjMgfCBzdW4zLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zdW4KKwkJOzsKKwlzdW40KQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQk7OworCXN1bjM4NiB8IHN1bjM4NmkgfCByb2FkcnVubmVyKQorCQliYXNpY19tYWNoaW5lPWkzODYtc3VuCisJCTs7CisJc3YxKQorCQliYXNpY19tYWNoaW5lPXN2MS1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwlzeW1tZXRyeSkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXNlcXVlbnQKKwkJb3M9LWR5bml4CisJCTs7CisJdDNlKQorCQliYXNpY19tYWNoaW5lPWFscGhhZXY1LWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXQ5MCkKKwkJYmFzaWNfbWFjaGluZT10OTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJdGlsZSopCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQlvcz0tbGludXgtZ251CisJCTs7CisJdHgzOSkKKwkJYmFzaWNfbWFjaGluZT1taXBzdHgzOS11bmtub3duCisJCTs7CisJdHgzOWVsKQorCQliYXNpY19tYWNoaW5lPW1pcHN0eDM5ZWwtdW5rbm93bgorCQk7OworCXRvYWQxKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLXhrbAorCQlvcz0tdG9wczIwCisJCTs7CisJdG93ZXIgfCB0b3dlci0zMikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW5jcgorCQk7OworCXRwZikKKwkJYmFzaWNfbWFjaGluZT1zMzkweC1pYm0KKwkJb3M9LXRwZgorCQk7OworCXVkaTI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisJdWx0cmEzKQorCQliYXNpY19tYWNoaW5lPWEyOWstbnl1CisJCW9zPS1zeW0xCisJCTs7CisJdjgxMCB8IG5lY3Y4MTApCisJCWJhc2ljX21hY2hpbmU9djgxMC1uZWMKKwkJb3M9LW5vbmUKKwkJOzsKKwl2YXh2KQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJb3M9LXN5c3YKKwkJOzsKKwl2bXMpCisJCWJhc2ljX21hY2hpbmU9dmF4LWRlYworCQlvcz0tdm1zCisJCTs7CisJdnBwKnx2eHx2eC0qKQorCQliYXNpY19tYWNoaW5lPWYzMDEtZnVqaXRzdQorCQk7OworCXZ4d29ya3M5NjApCisJCWJhc2ljX21hY2hpbmU9aTk2MC13cnMKKwkJb3M9LXZ4d29ya3MKKwkJOzsKKwl2eHdvcmtzNjgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay13cnMKKwkJb3M9LXZ4d29ya3MKKwkJOzsKKwl2eHdvcmtzMjlrKQorCQliYXNpY19tYWNoaW5lPWEyOWstd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJdzY1KikKKwkJYmFzaWNfbWFjaGluZT13NjUtd2RjCisJCW9zPS1ub25lCisJCTs7CisJdzg5ay0qKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtd2luYm9uZAorCQlvcz0tcHJvZWxmCisJCTs7CisJeGJveCkKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCW9zPS1taW5ndzMyCisJCTs7CisJeHBzIHwgeHBzMTAwKQorCQliYXNpY19tYWNoaW5lPXhwczEwMC1ob25leXdlbGwKKwkJOzsKKwl4c2NhbGUtKiB8IHhzY2FsZWVbYmxdLSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXnhzY2FsZS9hcm0vJ2AKKwkJOzsKKwl5bXApCisJCWJhc2ljX21hY2hpbmU9eW1wLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXo4ay0qLWNvZmYpCisJCWJhc2ljX21hY2hpbmU9ejhrLXVua25vd24KKwkJb3M9LXNpbQorCQk7OworCXo4MC0qLWNvZmYpCisJCWJhc2ljX21hY2hpbmU9ejgwLXVua25vd24KKwkJb3M9LXNpbQorCQk7OworCW5vbmUpCisJCWJhc2ljX21hY2hpbmU9bm9uZS1ub25lCisJCW9zPS1ub25lCisJCTs7CisKKyMgSGVyZSB3ZSBoYW5kbGUgdGhlIGRlZmF1bHQgbWFudWZhY3R1cmVyIG9mIGNlcnRhaW4gQ1BVIHR5cGVzLiAgSXQgaXMgaW4KKyMgc29tZSBjYXNlcyB0aGUgb25seSBtYW51ZmFjdHVyZXIsIGluIG90aGVycywgaXQgaXMgdGhlIG1vc3QgcG9wdWxhci4KKwl3ODlrKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtd2luYm9uZAorCQk7OworCW9wNTBuKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCTs7CisJb3A2MGMpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1va2kKKwkJOzsKKwlyb21wKQorCQliYXNpY19tYWNoaW5lPXJvbXAtaWJtCisJCTs7CisJbW1peCkKKwkJYmFzaWNfbWFjaGluZT1tbWl4LWtudXRoCisJCTs7CisJcnM2MDAwKQorCQliYXNpY19tYWNoaW5lPXJzNjAwMC1pYm0KKwkJOzsKKwl2YXgpCisJCWJhc2ljX21hY2hpbmU9dmF4LWRlYworCQk7OworCXBkcDEwKQorCQkjIHRoZXJlIGFyZSBtYW55IGNsb25lcywgc28gREVDIGlzIG5vdCBhIHNhZmUgYmV0CisJCWJhc2ljX21hY2hpbmU9cGRwMTAtdW5rbm93bgorCQk7OworCXBkcDExKQorCQliYXNpY19tYWNoaW5lPXBkcDExLWRlYworCQk7OworCXdlMzJrKQorCQliYXNpY19tYWNoaW5lPXdlMzJrLWF0dAorCQk7OworCXNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzI0XWFlYiB8IHNoWzM0XWViIHwgc2hbMTIzNF1sZSB8IHNoWzIzXWVsZSkKKwkJYmFzaWNfbWFjaGluZT1zaC11bmtub3duCisJCTs7CisJc3BhcmMgfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNwYXJjdjliIHwgc3BhcmN2OXYpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCTs7CisJY3lkcmEpCisJCWJhc2ljX21hY2hpbmU9Y3lkcmEtY3lkcm9tZQorCQk7OworCW9yaW9uKQorCQliYXNpY19tYWNoaW5lPW9yaW9uLWhpZ2hsZXZlbAorCQk7OworCW9yaW9uMTA1KQorCQliYXNpY19tYWNoaW5lPWNsaXBwZXItaGlnaGxldmVsCisJCTs7CisJbWFjIHwgbXB3IHwgbWFjLW1wdykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwcGxlCisJCTs7CisJcG1hYyB8IHBtYWMtbXB3KQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtYXBwbGUKKwkJOzsKKwkqLXVua25vd24pCisJCSMgTWFrZSBzdXJlIHRvIG1hdGNoIGFuIGFscmVhZHktY2Fub25pY2FsaXplZCBtYWNoaW5lIG5hbWUuCisJCTs7CisJKikKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBtYWNoaW5lIFxgJGJhc2ljX21hY2hpbmVcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworZXNhYworCisjIEhlcmUgd2UgY2Fub25pY2FsaXplIGNlcnRhaW4gYWxpYXNlcyBmb3IgbWFudWZhY3R1cmVycy4KK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkqLWRpZ2l0YWwqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL2RpZ2l0YWwuKi9kZWMvJ2AKKwkJOzsKKwkqLWNvbW1vZG9yZSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvY29tbW9kb3JlLiovY2JtLydgCisJCTs7CisJKikKKwkJOzsKK2VzYWMKKworIyBEZWNvZGUgbWFudWZhY3R1cmVyLXNwZWNpZmljIGFsaWFzZXMgZm9yIGNlcnRhaW4gb3BlcmF0aW5nIHN5c3RlbXMuCisKK2lmIFsgeCIkb3MiICE9IHgiIiBdCit0aGVuCitjYXNlICRvcyBpbgorCSMgRmlyc3QgbWF0Y2ggc29tZSBzeXN0ZW0gdHlwZSBhbGlhc2VzCisJIyB0aGF0IG1pZ2h0IGdldCBjb25mdXNlZCB3aXRoIHZhbGlkIHN5c3RlbSB0eXBlcy4KKwkjIC1zb2xhcmlzKiBpcyBhIGJhc2ljIHN5c3RlbSB0eXBlLCB3aXRoIHRoaXMgb25lIGV4Y2VwdGlvbi4KKwktYXVyb3JhdXgpCisJCW9zPS1hdXJvcmF1eAorCQk7OworCS1zb2xhcmlzMSB8IC1zb2xhcmlzMS4qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c29sYXJpczF8c3Vub3M0fCdgCisJCTs7CisJLXNvbGFyaXMpCisJCW9zPS1zb2xhcmlzMgorCQk7OworCS1zdnI0KikKKwkJb3M9LXN5c3Y0CisJCTs7CisJLXVuaXh3YXJlKikKKwkJb3M9LXN5c3Y0LjJ1dworCQk7OworCS1nbnUvbGludXgqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8Z251L2xpbnV4fGxpbnV4LWdudXwnYAorCQk7OworCSMgRmlyc3QgYWNjZXB0IHRoZSBiYXNpYyBzeXN0ZW0gdHlwZXMuCisJIyBUaGUgcG9ydGFibGUgc3lzdGVtcyBjb21lcyBmaXJzdC4KKwkjIEVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gQSAqLCB0byBtYXRjaCBhIHZlcnNpb24gbnVtYmVyLgorCSMgLXN5c3YqIGlzIG5vdCBoZXJlIGJlY2F1c2UgaXQgY29tZXMgbGF0ZXIsIGFmdGVyIHN5c3ZyNC4KKwktZ251KiB8IC1ic2QqIHwgLW1hY2gqIHwgLW1pbml4KiB8IC1nZW5peCogfCAtdWx0cml4KiB8IC1pcml4KiBcCisJICAgICAgfCAtKnZtcyogfCAtc2NvKiB8IC1lc2l4KiB8IC1pc2MqIHwgLWFpeCogfCAtY25rKiB8IC1zdW5vcyB8IC1zdW5vc1szNF0qXAorCSAgICAgIHwgLWhwdXgqIHwgLXVub3MqIHwgLW9zZiogfCAtbHVuYSogfCAtZGd1eCogfCAtYXVyb3JhdXgqIHwgLXNvbGFyaXMqIFwKKwkgICAgICB8IC1zeW0qIHwgLWtvcGVuc29sYXJpcyogXAorCSAgICAgIHwgLWFtaWdhb3MqIHwgLWFtaWdhZG9zKiB8IC1tc2RvcyogfCAtbmV3c29zKiB8IC11bmljb3MqIHwgLWFvZiogXAorCSAgICAgIHwgLWFvcyogfCAtYXJvcyogXAorCSAgICAgIHwgLW5pbmR5KiB8IC12eHNpbSogfCAtdnh3b3JrcyogfCAtZWJtb24qIHwgLWhtcyogfCAtbXZzKiBcCisJICAgICAgfCAtY2xpeCogfCAtcmlzY29zKiB8IC11bmlwbHVzKiB8IC1pcmlzKiB8IC1ydHUqIHwgLXhlbml4KiBcCisJICAgICAgfCAtaGl1eCogfCAtMzg2YnNkKiB8IC1rbmV0YnNkKiB8IC1taXJic2QqIHwgLW5ldGJzZCogXAorCSAgICAgIHwgLW9wZW5ic2QqIHwgLXNvbGlkYnNkKiBcCisJICAgICAgfCAtZWtrb2JzZCogfCAta2ZyZWVic2QqIHwgLWZyZWVic2QqIHwgLXJpc2NpeCogfCAtbHlueG9zKiBcCisJICAgICAgfCAtYm9zeCogfCAtbmV4dHN0ZXAqIHwgLWN4dXgqIHwgLWFvdXQqIHwgLWVsZiogfCAtb2FiaSogXAorCSAgICAgIHwgLXB0eCogfCAtY29mZiogfCAtZWNvZmYqIHwgLXdpbm50KiB8IC1kb21haW4qIHwgLXZzdGEqIFwKKwkgICAgICB8IC11ZGkqIHwgLWVhYmkqIHwgLWxpdGVzKiB8IC1pZWVlKiB8IC1nbzMyKiB8IC1hdXgqIFwKKwkgICAgICB8IC1jaG9ydXNvcyogfCAtY2hvcnVzcmRiKiB8IC1jZWdjYyogXAorCSAgICAgIHwgLWN5Z3dpbiogfCAtbXN5cyogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKKwkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LWFuZHJvaWQqIFwKKwkgICAgICB8IC1saW51eC1uZXdsaWIqIHwgLWxpbnV4LXVjbGliYyogXAorCSAgICAgIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKKwkgICAgICB8IC1pbnRlcml4KiB8IC11d2luKiB8IC1ta3MqIHwgLXJoYXBzb2R5KiB8IC1kYXJ3aW4qIHwgLW9wZW5lZCogXAorCSAgICAgIHwgLW9wZW5zdGVwKiB8IC1vc2tpdCogfCAtY29uaXgqIHwgLXB3MzIqIHwgLW5vbnN0b3B1eCogXAorCSAgICAgIHwgLXN0b3JtLWNoYW9zKiB8IC10b3BzMTAqIHwgLXRlbmV4KiB8IC10b3BzMjAqIHwgLWl0cyogXAorCSAgICAgIHwgLW9zMiogfCAtdm9zKiB8IC1wYWxtb3MqIHwgLXVjbGludXgqIHwgLW51Y2xldXMqIFwKKwkgICAgICB8IC1tb3JwaG9zKiB8IC1zdXBlcnV4KiB8IC1ydG1rKiB8IC1ydG1rLW5vdmEqIHwgLXdpbmRpc3MqIFwKKwkgICAgICB8IC1wb3dlcm1heCogfCAtZG5peCogfCAtbng2IHwgLW54NyB8IC1zZWkqIHwgLWRyYWdvbmZseSogXAorCSAgICAgIHwgLXNreW9zKiB8IC1oYWlrdSogfCAtcmRvcyogfCAtdG9wcGVycyogfCAtZHJvcHMqIHwgLWVzKikKKwkjIFJlbWVtYmVyLCBlYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCisJCTs7CisJLXFueCopCisJCWNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkJICAgIHg4Ni0qIHwgaSo4Ni0qKQorCQkJOzsKKwkJICAgICopCisJCQlvcz0tbnRvJG9zCisJCQk7OworCQllc2FjCisJCTs7CisJLW50by1xbngqKQorCQk7OworCS1udG8qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bnRvfG50by1xbnh8J2AKKwkJOzsKKwktc2ltIHwgLWVzMTgwMCogfCAtaG1zKiB8IC14cmF5IHwgLW9zNjhrKiB8IC1ub25lKiB8IC12ODhyKiBcCisJICAgICAgfCAtd2luZG93cyogfCAtb3N4IHwgLWFidWcgfCAtbmV0d2FyZSogfCAtb3M5KiB8IC1iZW9zKiB8IC1oYWlrdSogXAorCSAgICAgIHwgLW1hY29zKiB8IC1tcHcqIHwgLW1hZ2ljKiB8IC1tbWl4d2FyZSogfCAtbW9uOTYwKiB8IC1sbmV3cyopCisJCTs7CisJLW1hYyopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xtYWN8bWFjb3N8J2AKKwkJOzsKKwktbGludXgtZGlldGxpYmMpCisJCW9zPS1saW51eC1kaWV0bGliYworCQk7OworCS1saW51eCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xsaW51eHxsaW51eC1nbnV8J2AKKwkJOzsKKwktc3Vub3M1KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHN1bm9zNXxzb2xhcmlzMnwnYAorCQk7OworCS1zdW5vczYqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c3Vub3M2fHNvbGFyaXMzfCdgCisJCTs7CisJLW9wZW5lZCopCisJCW9zPS1vcGVuZWRpdGlvbgorCQk7OworCS1vczQwMCopCisJCW9zPS1vczQwMAorCQk7OworCS13aW5jZSopCisJCW9zPS13aW5jZQorCQk7OworCS1vc2Zyb3NlKikKKwkJb3M9LW9zZnJvc2UKKwkJOzsKKwktb3NmKikKKwkJb3M9LW9zZgorCQk7OworCS11dGVrKikKKwkJb3M9LWJzZAorCQk7OworCS1keW5peCopCisJCW9zPS1ic2QKKwkJOzsKKwktYWNpcyopCisJCW9zPS1hb3MKKwkJOzsKKwktYXRoZW9zKikKKwkJb3M9LWF0aGVvcworCQk7OworCS1zeWxsYWJsZSopCisJCW9zPS1zeWxsYWJsZQorCQk7OworCS0zODZic2QpCisJCW9zPS1ic2QKKwkJOzsKKwktY3RpeCogfCAtdXRzKikKKwkJb3M9LXN5c3YKKwkJOzsKKwktbm92YSopCisJCW9zPS1ydG1rLW5vdmEKKwkJOzsKKwktbnMyICkKKwkJb3M9LW5leHRzdGVwMgorCQk7OworCS1uc2sqKQorCQlvcz0tbnNrCisJCTs7CisJIyBQcmVzZXJ2ZSB0aGUgdmVyc2lvbiBudW1iZXIgb2Ygc2luaXg1LgorCS1zaW5peDUuKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNpbml4fHN5c3Z8J2AKKwkJOzsKKwktc2luaXgqKQorCQlvcz0tc3lzdjQKKwkJOzsKKwktdHBmKikKKwkJb3M9LXRwZgorCQk7OworCS10cml0b24qKQorCQlvcz0tc3lzdjMKKwkJOzsKKwktb3NzKikKKwkJb3M9LXN5c3YzCisJCTs7CisJLXN2cjQpCisJCW9zPS1zeXN2NAorCQk7OworCS1zdnIzKQorCQlvcz0tc3lzdjMKKwkJOzsKKwktc3lzdnI0KQorCQlvcz0tc3lzdjQKKwkJOzsKKwkjIFRoaXMgbXVzdCBjb21lIGFmdGVyIC1zeXN2cjQuCisJLXN5c3YqKQorCQk7OworCS1vc2UqKQorCQlvcz0tb3NlCisJCTs7CisJLWVzMTgwMCopCisJCW9zPS1vc2UKKwkJOzsKKwkteGVuaXgpCisJCW9zPS14ZW5peAorCQk7OworCS0qbWludCB8IC1taW50WzAtOV0qIHwgLSpNaU5UIHwgLU1pTlRbMC05XSopCisJCW9zPS1taW50CisJCTs7CisJLWFyb3MqKQorCQlvcz0tYXJvcworCQk7OworCS1rYW9zKikKKwkJb3M9LWthb3MKKwkJOzsKKwktenZtb2UpCisJCW9zPS16dm1vZQorCQk7OworCS1kaWNvcyopCisJCW9zPS1kaWNvcworCQk7OworCS1uYWNsKikKKwkJOzsKKwktbm9uZSkKKwkJOzsKKwkqKQorCQkjIEdldCByaWQgb2YgdGhlIGAtJyBhdCB0aGUgYmVnaW5uaW5nIG9mICRvcy4KKwkJb3M9YGVjaG8gJG9zIHwgc2VkICdzL1teLV0qLS8vJ2AKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBzeXN0ZW0gXGAkb3NcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworZXNhYworZWxzZQorCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBkZWZhdWx0IG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQgY29tZSB3aXRoIHZhcmlvdXMgbWFjaGluZXMuCisjIFRoZSB2YWx1ZSBzaG91bGQgYmUgd2hhdCB0aGUgdmVuZG9yIGN1cnJlbnRseSBzaGlwcyBvdXQgdGhlIGRvb3Igd2l0aCB0aGVpcgorIyBtYWNoaW5lIG9yIHB1dCBhbm90aGVyIHdheSwgdGhlIG1vc3QgcG9wdWxhciBvcyBwcm92aWRlZCB3aXRoIHRoZSBtYWNoaW5lLgorCisjIE5vdGUgdGhhdCBpZiB5b3UncmUgZ29pbmcgdG8gdHJ5IHRvIG1hdGNoICItTUFOVUZBQ1RVUkVSIiBoZXJlIChzYXksCisjICItc3VuIiksIHRoZW4geW91IGhhdmUgdG8gdGVsbCB0aGUgY2FzZSBzdGF0ZW1lbnQgdXAgdG93YXJkcyB0aGUgdG9wCisjIHRoYXQgTUFOVUZBQ1RVUkVSIGlzbid0IGFuIG9wZXJhdGluZyBzeXN0ZW0uICBPdGhlcndpc2UsIGNvZGUgYWJvdmUKKyMgd2lsbCBzaWduYWwgYW4gZXJyb3Igc2F5aW5nIHRoYXQgTUFOVUZBQ1RVUkVSIGlzbid0IGFuIG9wZXJhdGluZworIyBzeXN0ZW0sIGFuZCB3ZSdsbCBuZXZlciBnZXQgdG8gdGhpcyBwb2ludC4KKworY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCXNjb3JlLSopCisJCW9zPS1lbGYKKwkJOzsKKwlzcHUtKikKKwkJb3M9LWVsZgorCQk7OworCSotYWNvcm4pCisJCW9zPS1yaXNjaXgxLjIKKwkJOzsKKwlhcm0qLXJlYmVsKQorCQlvcz0tbGludXgKKwkJOzsKKwlhcm0qLXNlbWkpCisJCW9zPS1hb3V0CisJCTs7CisJYzR4LSogfCB0aWM0eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzU0eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzU1eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzZ4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJIyBUaGlzIG11c3QgY29tZSBiZWZvcmUgdGhlICotZGVjIGVudHJ5LgorCXBkcDEwLSopCisJCW9zPS10b3BzMjAKKwkJOzsKKwlwZHAxMS0qKQorCQlvcz0tbm9uZQorCQk7OworCSotZGVjIHwgdmF4LSopCisJCW9zPS11bHRyaXg0LjIKKwkJOzsKKwltNjgqLWFwb2xsbykKKwkJb3M9LWRvbWFpbgorCQk7OworCWkzODYtc3VuKQorCQlvcz0tc3Vub3M0LjAuMgorCQk7OworCW02ODAwMC1zdW4pCisJCW9zPS1zdW5vczMKKwkJOzsKKwltNjgqLWNpc2NvKQorCQlvcz0tYW91dAorCQk7OworCW1lcC0qKQorCQlvcz0tZWxmCisJCTs7CisJbWlwcyotY2lzY28pCisJCW9zPS1lbGYKKwkJOzsKKwltaXBzKi0qKQorCQlvcz0tZWxmCisJCTs7CisJb3IzMi0qKQorCQlvcz0tY29mZgorCQk7OworCSotdHRpKQkjIG11c3QgYmUgYmVmb3JlIHNwYXJjIGVudHJ5IG9yIHdlIGdldCB0aGUgd3Jvbmcgb3MuCisJCW9zPS1zeXN2MworCQk7OworCXNwYXJjLSogfCAqLXN1bikKKwkJb3M9LXN1bm9zNC4xLjEKKwkJOzsKKwkqLWJlKQorCQlvcz0tYmVvcworCQk7OworCSotaGFpa3UpCisJCW9zPS1oYWlrdQorCQk7OworCSotaWJtKQorCQlvcz0tYWl4CisJCTs7CisJKi1rbnV0aCkKKwkJb3M9LW1taXh3YXJlCisJCTs7CisJKi13ZWMpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwkqLXdpbmJvbmQpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwkqLW9raSkKKwkJb3M9LXByb2VsZgorCQk7OworCSotaHApCisJCW9zPS1ocHV4CisJCTs7CisJKi1oaXRhY2hpKQorCQlvcz0taGl1eAorCQk7OworCWk4NjAtKiB8ICotYXR0IHwgKi1uY3IgfCAqLWFsdG9zIHwgKi1tb3Rvcm9sYSB8ICotY29udmVyZ2VudCkKKwkJb3M9LXN5c3YKKwkJOzsKKwkqLWNibSkKKwkJb3M9LWFtaWdhb3MKKwkJOzsKKwkqLWRnKQorCQlvcz0tZGd1eAorCQk7OworCSotZG9scGhpbikKKwkJb3M9LXN5c3YzCisJCTs7CisJbTY4ay1jY3VyKQorCQlvcz0tcnR1CisJCTs7CisJbTg4ay1vbXJvbiopCisJCW9zPS1sdW5hCisJCTs7CisJKi1uZXh0ICkKKwkJb3M9LW5leHRzdGVwCisJCTs7CisJKi1zZXF1ZW50KQorCQlvcz0tcHR4CisJCTs7CisJKi1jcmRzKQorCQlvcz0tdW5vcworCQk7OworCSotbnMpCisJCW9zPS1nZW5peAorCQk7OworCWkzNzAtKikKKwkJb3M9LW12cworCQk7OworCSotbmV4dCkKKwkJb3M9LW5leHRzdGVwMworCQk7OworCSotZ291bGQpCisJCW9zPS1zeXN2CisJCTs7CisJKi1oaWdobGV2ZWwpCisJCW9zPS1ic2QKKwkJOzsKKwkqLWVuY29yZSkKKwkJb3M9LWJzZAorCQk7OworCSotc2dpKQorCQlvcz0taXJpeAorCQk7OworCSotc2llbWVucykKKwkJb3M9LXN5c3Y0CisJCTs7CisJKi1tYXNzY29tcCkKKwkJb3M9LXJ0dQorCQk7OworCWYzMFswMV0tZnVqaXRzdSB8IGY3MDAtZnVqaXRzdSkKKwkJb3M9LXV4cHYKKwkJOzsKKwkqLXJvbTY4aykKKwkJb3M9LWNvZmYKKwkJOzsKKwkqLSpidWcpCisJCW9zPS1jb2ZmCisJCTs7CisJKi1hcHBsZSkKKwkJb3M9LW1hY29zCisJCTs7CisJKi1hdGFyaSopCisJCW9zPS1taW50CisJCTs7CisJKikKKwkJb3M9LW5vbmUKKwkJOzsKK2VzYWMKK2ZpCisKKyMgSGVyZSB3ZSBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2Uga25vdyB0aGUgb3MsIGFuZCB0aGUgQ1BVIHR5cGUsIGJ1dCBub3QgdGhlCisjIG1hbnVmYWN0dXJlci4gIFdlIHBpY2sgdGhlIGxvZ2ljYWwgbWFudWZhY3R1cmVyLgordmVuZG9yPXVua25vd24KK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkqLXVua25vd24pCisJCWNhc2UgJG9zIGluCisJCQktcmlzY2l4KikKKwkJCQl2ZW5kb3I9YWNvcm4KKwkJCQk7OworCQkJLXN1bm9zKikKKwkJCQl2ZW5kb3I9c3VuCisJCQkJOzsKKwkJCS1jbmsqfC1haXgqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLWJlb3MqKQorCQkJCXZlbmRvcj1iZQorCQkJCTs7CisJCQktaHB1eCopCisJCQkJdmVuZG9yPWhwCisJCQkJOzsKKwkJCS1tcGVpeCopCisJCQkJdmVuZG9yPWhwCisJCQkJOzsKKwkJCS1oaXV4KikKKwkJCQl2ZW5kb3I9aGl0YWNoaQorCQkJCTs7CisJCQktdW5vcyopCisJCQkJdmVuZG9yPWNyZHMKKwkJCQk7OworCQkJLWRndXgqKQorCQkJCXZlbmRvcj1kZworCQkJCTs7CisJCQktbHVuYSopCisJCQkJdmVuZG9yPW9tcm9uCisJCQkJOzsKKwkJCS1nZW5peCopCisJCQkJdmVuZG9yPW5zCisJCQkJOzsKKwkJCS1tdnMqIHwgLW9wZW5lZCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktb3M0MDAqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLXB0eCopCisJCQkJdmVuZG9yPXNlcXVlbnQKKwkJCQk7OworCQkJLXRwZiopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktdnhzaW0qIHwgLXZ4d29ya3MqIHwgLXdpbmRpc3MqKQorCQkJCXZlbmRvcj13cnMKKwkJCQk7OworCQkJLWF1eCopCisJCQkJdmVuZG9yPWFwcGxlCisJCQkJOzsKKwkJCS1obXMqKQorCQkJCXZlbmRvcj1oaXRhY2hpCisJCQkJOzsKKwkJCS1tcHcqIHwgLW1hY29zKikKKwkJCQl2ZW5kb3I9YXBwbGUKKwkJCQk7OworCQkJLSptaW50IHwgLW1pbnRbMC05XSogfCAtKk1pTlQgfCAtTWlOVFswLTldKikKKwkJCQl2ZW5kb3I9YXRhcmkKKwkJCQk7OworCQkJLXZvcyopCisJCQkJdmVuZG9yPXN0cmF0dXMKKwkJCQk7OworCQllc2FjCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgInMvdW5rbm93bi8kdmVuZG9yLyJgCisJCTs7Citlc2FjCisKK2VjaG8gJGJhc2ljX21hY2hpbmUkb3MKK2V4aXQKKworIyBMb2NhbCB2YXJpYWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1zdGFydDogInRpbWVzdGFtcD0nIgorIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQiCisjIHRpbWUtc3RhbXAtZW5kOiAiJyIKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDllN2NmYzAuLjMxZmMzZDYgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTEsNyArMSw2IEBACiAjISAvYmluL3NoCi0jIEZyb20gY29uZmlndXJlLmFjIFJldmlzaW9uLgogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjggZm9yIHB5dGhvbiAzLjIuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCBmb3IgcHl0aG9uIDMuMy4KICMKICMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvPi4KICMKQEAgLTU2MSw4ICs1NjAsOCBAQAogIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCiBQQUNLQUdFX05BTUU9J3B5dGhvbicKIFBBQ0tBR0VfVEFSTkFNRT0ncHl0aG9uJwotUEFDS0FHRV9WRVJTSU9OPSczLjInCi1QQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuMicKK1BBQ0tBR0VfVkVSU0lPTj0nMy4zJworUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjMnCiBQQUNLQUdFX0JVR1JFUE9SVD0naHR0cDovL2J1Z3MucHl0aG9uLm9yZy8nCiBQQUNLQUdFX1VSTD0nJwogCkBAIC02NDEsMTcgKzY0MCwxNiBAQAogT1BUCiBBQklGTEFHUwogTE4KK01LRElSX1AKIElOU1RBTExfREFUQQogSU5TVEFMTF9TQ1JJUFQKIElOU1RBTExfUFJPR1JBTQogSEFTX1BZVEhPTgogRElTQUJMRV9BU0RMR0VOCi1IQVNfSEcKLUhHQlJBTkNICi1IR1RBRwotSEdWRVJTSU9OCi1TVk5WRVJTSU9OCithY19jdF9SRUFERUxGCitSRUFERUxGCiBBUkZMQUdTCithY19jdF9BUgogQVIKIFJBTkxJQgogVVNFX0lOTElORQpAQCAtNjcxLDYgKzY2OSw3IEBACiBHUkVQCiBDUFAKIE5PX0FTX05FRURFRAorYWNfY3RfQ1hYCiBNQUlOQ0MKIENYWAogT0JKRVhUCkBAIC02ODMsNiArNjgyLDcgQEAKIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQKIENPTkZJR1VSRV9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQKIFNHSV9BQkkKK19QWVRIT05fSE9TVF9QTEFURk9STQogTUFDSERFUAogRlJBTUVXT1JLSU5TVEFMTEFQUFNQUkVGSVgKIEZSQU1FV09SS1VOSVhUT09MU1BSRUZJWApAQCAtNzAxLDYgKzcwMSwxOSBAQAogQ09ORklHX0FSR1MKIFNPVkVSU0lPTgogVkVSU0lPTgorUFlUSE9OX0ZPUl9CVUlMRAoraG9zdF9vcworaG9zdF92ZW5kb3IKK2hvc3RfY3B1Citob3N0CitidWlsZF9vcworYnVpbGRfdmVuZG9yCitidWlsZF9jcHUKK2J1aWxkCitIQVNfSEcKK0hHQlJBTkNICitIR1RBRworSEdWRVJTSU9OCiB0YXJnZXRfYWxpYXMKIGhvc3RfYWxpYXMKIGJ1aWxkX2FsaWFzCkBAIC03NTUsMTAgKzc2OCwxMCBAQAogd2l0aF9saWJzCiB3aXRoX3N5c3RlbV9leHBhdAogd2l0aF9zeXN0ZW1fZmZpCit3aXRoX3N5c3RlbV9saWJtcGRlYwogZW5hYmxlX2xvYWRhYmxlX3NxbGl0ZV9leHRlbnNpb25zCiB3aXRoX2RibWxpYm9yZGVyCiB3aXRoX3NpZ25hbF9tb2R1bGUKLXdpdGhfZGVjX3RocmVhZHMKIHdpdGhfdGhyZWFkcwogd2l0aF90aHJlYWQKIGVuYWJsZV9pcHY2CkBAIC03NzAsNyArNzgzLDYgQEAKIHdpdGhfbGlibQogd2l0aF9saWJjCiBlbmFibGVfYmlnX2RpZ2l0cwotd2l0aF93aWRlX3VuaWNvZGUKIHdpdGhfY29tcHV0ZWRfZ290b3MKICcKICAgICAgIGFjX3ByZWNpb3VzX3ZhcnM9J2J1aWxkX2FsaWFzCkBAIC0xMzI0LDcgKzEzMzYsNyBAQAogICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgogICBjYXQgPDxfQUNFT0YKLVxgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjIgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuMyB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0xMzgwLDEyICsxMzkyLDE2IEBACiBfQUNFT0YKIAogICBjYXQgPDxcX0FDRU9GCisKK1N5c3RlbSB0eXBlczoKKyAgLS1idWlsZD1CVUlMRCAgICAgY29uZmlndXJlIGZvciBidWlsZGluZyBvbiBCVUlMRCBbZ3Vlc3NlZF0KKyAgLS1ob3N0PUhPU1QgICAgICAgY3Jvc3MtY29tcGlsZSB0byBidWlsZCBwcm9ncmFtcyB0byBydW4gb24gSE9TVCBbQlVJTERdCiBfQUNFT0YKIGZpCiAKIGlmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCiAgIGNhc2UgJGFjX2luaXRfaGVscCBpbgotICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgcHl0aG9uIDMuMjoiOzsKKyAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjM6Ijs7CiAgICBlc2FjCiAgIGNhdCA8PFxfQUNFT0YKIApAQCAtMTM5NCw3ICsxNDEwLDcgQEAKICAgLS1kaXNhYmxlLUZFQVRVUkUgICAgICAgZG8gbm90IGluY2x1ZGUgRkVBVFVSRSAoc2FtZSBhcyAtLWVuYWJsZS1GRUFUVVJFPW5vKQogICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15ZXNdCiAgIC0tZW5hYmxlLXVuaXZlcnNhbHNka1s9U0RLRElSXQotICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBhZ2FpbnN0IE1hYyBPUyBYIDEwLjR1IFNESyAocHBjL2kzODYpCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIGZhdCBiaW5hcnkgYWdhaW5zdCBNYWMgT1MgWCBTREsKICAgLS1lbmFibGUtZnJhbWV3b3JrWz1JTlNUQUxMRElSXQogICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCAoTWFjT1NYfERhcndpbikgZnJhbWV3b3JrCiAgIC0tZW5hYmxlLXNoYXJlZCAgICAgICAgIGRpc2FibGUvZW5hYmxlIGJ1aWxkaW5nIHNoYXJlZCBweXRob24gbGlicmFyeQpAQCAtMTQyNSwxMiArMTQ0MSwxMyBAQAogICAtLXdpdGgtc3lzdGVtLWV4cGF0ICAgICBidWlsZCBweWV4cGF0IG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZXhwYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQogICAtLXdpdGgtc3lzdGVtLWZmaSAgICAgICBidWlsZCBfY3R5cGVzIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZmZpIGxpYnJhcnkKKyAgLS13aXRoLXN5c3RlbS1saWJtcGRlYyAgYnVpbGQgX2RlY2ltYWwgbW9kdWxlIHVzaW5nIGFuIGluc3RhbGxlZCBsaWJtcGRlYworICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5CiAgIC0td2l0aC1kYm1saWJvcmRlcj1kYjE6ZGIyOi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciB0byBjaGVjayBkYiBiYWNrZW5kcyBmb3IgZGJtLiBWYWxpZCB2YWx1ZSBpcyBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9uIHNlcGFyYXRlZCBzdHJpbmcgd2l0aCB0aGUgYmFja2VuZCBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAgICBgbmRibScsIGBnZGJtJyBhbmQgYGJkYicuCiAgIC0td2l0aC1zaWduYWwtbW9kdWxlICAgIGRpc2FibGUvZW5hYmxlIHNpZ25hbCBtb2R1bGUKLSAgLS13aXRoLWRlYy10aHJlYWRzICAgICAgdXNlIERFQyBBbHBoYS9PU0YxIHRocmVhZC1zYWZlIGxpYnJhcmllcwogICAtLXdpdGgob3V0KS10aHJlYWRzWz1ESVJFQ1RPUlldCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGUvZW5hYmxlIHRocmVhZCBzdXBwb3J0CiAgIC0td2l0aChvdXQpLXRocmVhZFs9RElSRUNUT1JZXQpAQCAtMTQ0Miw3ICsxNDU5LDYgQEAKICAgLS13aXRoLWZwZWN0bCAgICAgICAgICAgZW5hYmxlIFNJR0ZQRSBjYXRjaGluZwogICAtLXdpdGgtbGlibT1TVFJJTkcgICAgICBtYXRoIGxpYnJhcnkKICAgLS13aXRoLWxpYmM9U1RSSU5HICAgICAgQyBsaWJyYXJ5Ci0gIC0td2l0aC13aWRlLXVuaWNvZGUgICAgIFVzZSA0LWJ5dGUgVW5pY29kZSBjaGFyYWN0ZXJzIChkZWZhdWx0IGlzIDIgYnl0ZXMpCiAgIC0td2l0aChvdXQpLWNvbXB1dGVkLWdvdG9zCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBjb21wdXRlZCBnb3RvcyBpbiBldmFsdWF0aW9uIGxvb3AgKGVuYWJsZWQgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBvbiBzdXBwb3J0ZWQgY29tcGlsZXJzKQpAQCAtMTUyMyw3ICsxNTM5LDcgQEAKIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwogaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogICBjYXQgPDxcX0FDRU9GCi1weXRob24gY29uZmlndXJlIDMuMgorcHl0aG9uIGNvbmZpZ3VyZSAzLjMKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OAogCiBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0yMzU0LDcgKzIzNzAsNyBAQAogVGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKIHJ1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVidWdnaW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuCiAKLUl0IHdhcyBjcmVhdGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy4yLCB3aGljaCB3YXMKK0l0IHdhcyBjcmVhdGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy4zLCB3aGljaCB3YXMKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgICQgJDAgJEAKQEAgLTI3MDMsOSArMjcxOSwxOTIgQEAKIAogCiAKKworCisKKworaWYgdGVzdCAtZSAkc3JjZGlyLy5oZy9kaXJzdGF0ZQordGhlbgorIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJoZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgaGc7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0hBU19IRys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRIQVNfSEciOyB0aGVuCisgIGFjX2N2X3Byb2dfSEFTX0hHPSIkSEFTX0hHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfSEFTX0hHPSJmb3VuZCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19IQVNfSEciICYmIGFjX2N2X3Byb2dfSEFTX0hHPSJub3QtZm91bmQiCitmaQorZmkKK0hBU19IRz0kYWNfY3ZfcHJvZ19IQVNfSEcKK2lmIHRlc3QgLW4gIiRIQVNfSEciOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSEFTX0hHIiA+JjUKKyRhc19lY2hvICIkSEFTX0hHIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2Vsc2UKK0hBU19IRz1uby1yZXBvc2l0b3J5CitmaQoraWYgdGVzdCAkSEFTX0hHID0gZm91bmQKK3RoZW4KKyAgICBIR1ZFUlNJT049ImhnIGlkIC1pIFwkKHNyY2RpcikiCisgICAgSEdUQUc9ImhnIGlkIC10IFwkKHNyY2RpcikiCisgICAgSEdCUkFOQ0g9ImhnIGlkIC1iIFwkKHNyY2RpcikiCitlbHNlCisgICAgSEdWRVJTSU9OPSIiCisgICAgSEdUQUc9IiIKKyAgICBIR0JSQU5DSD0iIgorZmkKKworCiBhY19jb25maWdfaGVhZGVycz0iJGFjX2NvbmZpZ19oZWFkZXJzIHB5Y29uZmlnLmgiCiAKIAorYWNfYXV4X2Rpcj0KK2ZvciBhY19kaXIgaW4gIiRzcmNkaXIiICIkc3JjZGlyLy4uIiAiJHNyY2Rpci8uLi8uLiI7IGRvCisgIGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC1zaCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLXNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLnNoIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwuc2ggLWMiCisgICAgYnJlYWsKKyAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL3NodG9vbCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9zaHRvb2wgaW5zdGFsbCAtYyIKKyAgICBicmVhaworICBmaQorZG9uZQoraWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBpbnN0YWxsLXNoLCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4gXCIkc3JjZGlyXCIgXCIkc3JjZGlyLy4uXCIgXCIkc3JjZGlyLy4uLy4uXCIiICIkTElORU5PIiA1CitmaQorCisjIFRoZXNlIHRocmVlIHZhcmlhYmxlcyBhcmUgdW5kb2N1bWVudGVkIGFuZCB1bnN1cHBvcnRlZCwKKyMgYW5kIGFyZSBpbnRlbmRlZCB0byBiZSB3aXRoZHJhd24gaW4gYSBmdXR1cmUgQXV0b2NvbmYgcmVsZWFzZS4KKyMgVGhleSBjYW4gY2F1c2Ugc2VyaW91cyBwcm9ibGVtcyBpZiBhIGJ1aWxkZXIncyBzb3VyY2UgdHJlZSBpcyBpbiBhIGRpcmVjdG9yeQorIyB3aG9zZSBmdWxsIG5hbWUgY29udGFpbnMgdW51c3VhbCBjaGFyYWN0ZXJzLgorYWNfY29uZmlnX2d1ZXNzPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorYWNfY29uZmlnX3N1Yj0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCithY19jb25maWd1cmU9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWd1cmUiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCisKKworIyBNYWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgorJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiBzdW40ID4vZGV2L251bGwgMj4mMSB8fAorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IHJ1biAkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgIiRMSU5FTk8iIDUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9idWlsZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcwordGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCisgIGFjX2J1aWxkX2FsaWFzPWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyJgCit0ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIgIiRMSU5FTk8iIDUKK2FjX2N2X2J1aWxkPWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRhY19idWlsZF9hbGlhc2AgfHwKKyAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRhY19idWlsZF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2J1aWxkIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfYnVpbGQiID4mNjsgfQorY2FzZSAkYWNfY3ZfYnVpbGQgaW4KKyotKi0qKSA7OworKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGJ1aWxkIiAiJExJTkVOTyIgNTs7Citlc2FjCitidWlsZD0kYWNfY3ZfYnVpbGQKK2FjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKK3NldCB4ICRhY19jdl9idWlsZAorc2hpZnQKK2J1aWxkX2NwdT0kMQorYnVpbGRfdmVuZG9yPSQyCitzaGlmdDsgc2hpZnQKKyMgUmVtZW1iZXIsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQgdG8gY3JlYXRlICQqLAorIyBleGNlcHQgd2l0aCBvbGQgc2hlbGxzOgorYnVpbGRfb3M9JCoKK0lGUz0kYWNfc2F2ZV9JRlMKK2Nhc2UgJGJ1aWxkX29zIGluICpcICopIGJ1aWxkX29zPWBlY2hvICIkYnVpbGRfb3MiIHwgc2VkICdzLyAvLS9nJ2A7OyBlc2FjCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfaG9zdCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIngkaG9zdF9hbGlhcyIgPSB4OyB0aGVuCisgIGFjX2N2X2hvc3Q9JGFjX2N2X2J1aWxkCitlbHNlCisgIGFjX2N2X2hvc3Q9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGhvc3RfYWxpYXNgIHx8CisgICAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRob3N0X2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hvc3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl9ob3N0IiA+JjY7IH0KK2Nhc2UgJGFjX2N2X2hvc3QgaW4KKyotKi0qKSA7OworKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGhvc3QiICIkTElORU5PIiA1OzsKK2VzYWMKK2hvc3Q9JGFjX2N2X2hvc3QKK2FjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKK3NldCB4ICRhY19jdl9ob3N0CitzaGlmdAoraG9zdF9jcHU9JDEKK2hvc3RfdmVuZG9yPSQyCitzaGlmdDsgc2hpZnQKKyMgUmVtZW1iZXIsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQgdG8gY3JlYXRlICQqLAorIyBleGNlcHQgd2l0aCBvbGQgc2hlbGxzOgoraG9zdF9vcz0kKgorSUZTPSRhY19zYXZlX0lGUworY2FzZSAkaG9zdF9vcyBpbiAqXCAqKSBob3N0X29zPWBlY2hvICIkaG9zdF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKKworCisKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgcHl0aG9uIGludGVycHJldGVyIGZvciBjcm9zcyBidWlsZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgcHl0aG9uIGludGVycHJldGVyIGZvciBjcm9zcyBidWlsZC4uLiAiID4mNjsgfQorICAgIGlmIHRlc3QgLXogIiRQWVRIT05fRk9SX0JVSUxEIjsgdGhlbgorICAgICAgICBmb3IgaW50ZXJwIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob247IGRvCisJICAgIHdoaWNoICRpbnRlcnAgPi9kZXYvbnVsbCAyPiYxIHx8IGNvbnRpbnVlCisJICAgIGlmICRpbnRlcnAgLWMgJ2ltcG9ydCBzeXM7c3lzLmV4aXQobm90IHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLDMpKSc7IHRoZW4KKwkgICAgICAgIGJyZWFrCisJICAgIGZpCisgICAgICAgICAgICBpbnRlcnA9CisJZG9uZQorICAgICAgICBpZiB0ZXN0IHgkaW50ZXJwID0geDsgdGhlbgorCSAgICBhc19mbl9lcnJvciAkPyAicHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBpbnRlcnByZXRlciBub3QgZm91bmQiICIkTElORU5PIiA1CisJZmkKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRpbnRlcnAiID4mNQorJGFzX2VjaG8gIiRpbnRlcnAiID4mNjsgfQorCVBZVEhPTl9GT1JfQlVJTEQ9Il9QWVRIT05fUFJPSkVDVF9CQVNFPSRzcmNkaXIiJyBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzcmNkaXIpL0xpYjokKHNyY2RpcikvTGliL3BsYXQtJChNQUNIREVQKSAnJGludGVycAorICAgIGZpCitlbHNlCisgICAgUFlUSE9OX0ZPUl9CVUlMRD0nLi8kKEJVSUxEUFlUSE9OKSAtRScKK2ZpCisKKwogCiBpZiB0ZXN0ICIkcHJlZml4IiAhPSAiLyI7IHRoZW4KICAgICBwcmVmaXg9YGVjaG8gIiRwcmVmaXgiIHwgc2VkIC1lICdzL1wvJC8vZydgCkBAIC0yNzIxLDcgKzI5MjAsNyBAQAogbXYgY29uZmRlZnMuaC5uZXcgY29uZmRlZnMuaAogCiAKLVZFUlNJT049My4yCitWRVJTSU9OPTMuMwogCiAjIFZlcnNpb24gbnVtYmVyIG9mIFB5dGhvbidzIG93biBzaGFyZWQgbGlicmFyeSBmaWxlLgogCkBAIC0yNzc0LDEwICsyOTczLDE2IEBACiAgIGVuYWJsZXZhbD0kZW5hYmxlX3VuaXZlcnNhbHNkazsKIAljYXNlICRlbmFibGV2YWwgaW4KIAl5ZXMpCi0JCWVuYWJsZXZhbD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrCi0JCWlmIHRlc3QgISAtZCAiJHtlbmFibGV2YWx9IgorCQkjIExvY2F0ZSB0aGUgYmVzdCB1c2FibGUgU0RLLCBzZWUgTWFjL1JFQURNRS50eHQgZm9yIG1vcmUKKwkJIyBpbmZvcm1hdGlvbgorCQllbmFibGV2YWw9ImAvdXNyL2Jpbi94Y29kZWJ1aWxkIC12ZXJzaW9uIC1zZGsgbWFjb3N4IFBhdGggMj4vZGV2L251bGxgIgorCQlpZiB0ZXN0IC16ICIke2VuYWJsZXZhbH0iCiAJCXRoZW4KLQkJCWVuYWJsZXZhbD0vCisJCQllbmFibGV2YWw9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaworCQkJaWYgdGVzdCAhIC1kICIke2VuYWJsZXZhbH0iCisJCQl0aGVuCisJCQkJZW5hYmxldmFsPS8KKwkJCWZpCiAJCWZpCiAJCTs7CiAJZXNhYwpAQCAtMjgxNSw3ICszMDIwLDIwIEBACiAKIAogCisjIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2UgcHJlZmVyIHRvIHNlbGVjdCAnMzItYml0JyBpZiBhdmFpbGFibGUsCisjIG90aGVyd2lzZSB1c2UgJ2ludGVsJwogVU5JVkVSU0FMX0FSQ0hTPSIzMi1iaXQiCitpZiB0ZXN0ICJgdW5hbWUgLXNgIiA9ICJEYXJ3aW4iCit0aGVuCisJaWYgdGVzdCAtbiAiJHtVTklWRVJTQUxTREt9IgorCXRoZW4KKwkJaWYgdGVzdCAteiAiYC91c3IvYmluL2ZpbGUgIiR7VU5JVkVSU0FMU0RLfS91c3IvbGliL2xpYlN5c3RlbS5keWxpYiIgfCBncmVwIHBwY2AiCisJCXRoZW4KKwkJCVVOSVZFUlNBTF9BUkNIUz0iaW50ZWwiCisJCWZpCisJZmkKK2ZpCisKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXVuaXZlcnNhbC1hcmNocyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXVuaXZlcnNhbC1hcmNocy4uLiAiID4mNjsgfQpAQCAtMjgyOSw4ICszMDQ3LDggQEAKIAogZWxzZQogCi0gCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAzMi1iaXQiID4mNQotJGFzX2VjaG8gIjMyLWJpdCIgPiY2OyB9CisgCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke1VOSVZFUlNBTF9BUkNIU30iID4mNQorJGFzX2VjaG8gIiR7VU5JVkVSU0FMX0FSQ0hTfSIgPiY2OyB9CiAKIGZpCiAKQEAgLTI5ODMsNiArMzIwMSwyNSBAQAogJGFzX2VjaG9fbiAiY2hlY2tpbmcgTUFDSERFUC4uLiAiID4mNjsgfQogaWYgdGVzdCAteiAiJE1BQ0hERVAiCiB0aGVuCisgICAgIyBhdm9pZCB1c2luZyB1bmFtZSBmb3IgY3Jvc3MgYnVpbGRzCisgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgICAgICAjIGFjX3N5c19zeXN0ZW0gYW5kIGFjX3N5c19yZWxlYXNlIGFyZSBvbmx5IHVzZWQgZm9yIHNldHRpbmcKKyAgICAgICAjIGBkZWZpbmVfeG9wZW5fc291cmNlJyBpbiB0aGUgY2FzZSBzdGF0ZW1lbnQgYmVsb3cuIEZvciB0aGUKKyAgICAgICAjIGN1cnJlbnQgc3VwcG9ydGVkIGNyb3NzIGJ1aWxkcywgdGhpcyBtYWNybyBpcyBub3QgYWRqdXN0ZWQuCisJY2FzZSAiJGhvc3QiIGluCisJKi0qLWxpbnV4KikKKwkJYWNfc3lzX3N5c3RlbT1MaW51eAorCQk7OworCSotKi1jeWd3aW4qKQorCQlhY19zeXNfc3lzdGVtPUN5Z3dpbgorCQk7OworCSopCisJCSMgZm9yIG5vdywgbGltaXQgY3Jvc3MgYnVpbGRzIHRvIGtub3duIGNvbmZpZ3VyYXRpb25zCisJCU1BQ0hERVA9InVua25vd24iCisJCWFzX2ZuX2Vycm9yICQ/ICJjcm9zcyBidWlsZCBub3Qgc3VwcG9ydGVkIGZvciAkaG9zdCIgIiRMSU5FTk8iIDUKKwllc2FjCisJYWNfc3lzX3JlbGVhc2U9CisgICAgZWxzZQogCWFjX3N5c19zeXN0ZW09YHVuYW1lIC1zYAogCWlmIHRlc3QgIiRhY19zeXNfc3lzdGVtIiA9ICJBSVgiIFwKIAktbyAiJGFjX3N5c19zeXN0ZW0iID0gIlVuaXhXYXJlIiAtbyAiJGFjX3N5c19zeXN0ZW0iID0gIk9wZW5VTklYIjsgdGhlbgpAQCAtMjk5MCwxOSArMzIyNyw0MyBAQAogCWVsc2UKIAkJYWNfc3lzX3JlbGVhc2U9YHVuYW1lIC1yYAogCWZpCi0JYWNfbWRfc3lzdGVtPWBlY2hvICRhY19zeXNfc3lzdGVtIHwKLQkJCSAgIHRyIC1kICcvICcgfCB0ciAnW0EtWl0nICdbYS16XSdgCi0JYWNfbWRfcmVsZWFzZT1gZWNobyAkYWNfc3lzX3JlbGVhc2UgfAotCQkJICAgdHIgLWQgJy8gJyB8IHNlZCAncy9eW0EtWl1cLi8vJyB8IHNlZCAncy9cLi4qLy8nYAotCU1BQ0hERVA9IiRhY19tZF9zeXN0ZW0kYWNfbWRfcmVsZWFzZSIKKyAgICBmaQorICAgIGFjX21kX3N5c3RlbT1gZWNobyAkYWNfc3lzX3N5c3RlbSB8CisJCQl0ciAtZCAnLyAnIHwgdHIgJ1tBLVpdJyAnW2Etel0nYAorICAgIGFjX21kX3JlbGVhc2U9YGVjaG8gJGFjX3N5c19yZWxlYXNlIHwKKwkJCXRyIC1kICcvICcgfCBzZWQgJ3MvXltBLVpdXC4vLycgfCBzZWQgJ3MvXC4uKi8vJ2AKKyAgICBNQUNIREVQPSIkYWNfbWRfc3lzdGVtJGFjX21kX3JlbGVhc2UiCiAKLQljYXNlICRNQUNIREVQIGluCi0JbGludXgqKSBNQUNIREVQPSJsaW51eDIiOzsKKyAgICBjYXNlICRNQUNIREVQIGluCisJbGludXgqKSBNQUNIREVQPSJsaW51eCI7OwogCWN5Z3dpbiopIE1BQ0hERVA9ImN5Z3dpbiI7OwogCWRhcndpbiopIE1BQ0hERVA9ImRhcndpbiI7OwotICAgICAgICBpcml4NjQ2KSBNQUNIREVQPSJpcml4NiI7OworCWlyaXg2NDYpIE1BQ0hERVA9ImlyaXg2Ijs7CiAJJycpCU1BQ0hERVA9InVua25vd24iOzsKKyAgICBlc2FjCitmaQorCisKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisJY2FzZSAiJGhvc3QiIGluCisJKi0qLWxpbnV4KikKKwkJY2FzZSAiJGhvc3RfY3B1IiBpbgorCQlhcm0qKQorCQkJX2hvc3RfY3B1PWFybQorCQkJOzsKKwkJKikKKwkJCV9ob3N0X2NwdT0kaG9zdF9jcHUKKwkJZXNhYworCQk7OworCSotKi1jeWd3aW4qKQorCQlfaG9zdF9jcHU9CisJCTs7CisJKikKKwkJIyBmb3Igbm93LCBsaW1pdCBjcm9zcyBidWlsZHMgdG8ga25vd24gY29uZmlndXJhdGlvbnMKKwkJTUFDSERFUD0idW5rbm93biIKKwkJYXNfZm5fZXJyb3IgJD8gImNyb3NzIGJ1aWxkIG5vdCBzdXBwb3J0ZWQgZm9yICRob3N0IiAiJExJTkVOTyIgNQogCWVzYWMKKwlfUFlUSE9OX0hPU1RfUExBVEZPUk09IiRNQUNIREVQJHtfaG9zdF9jcHU6Ky0kX2hvc3RfY3B1fSIKIGZpCiAKICMgU29tZSBzeXN0ZW1zIGNhbm5vdCBzdGFuZCBfWE9QRU5fU09VUkNFIGJlaW5nIGRlZmluZWQgYXQgYWxsOyB0aGV5CkBAIC0zMDkzLDggKzMzNTQsOSBAQAogCiBpZiB0ZXN0ICRkZWZpbmVfeG9wZW5fc291cmNlID0geWVzCiB0aGVuCisgICMgWC9PcGVuIDcsIGluY29ycG9yYXRpbmcgUE9TSVguMS0yMDA4CiAKLSRhc19lY2hvICIjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNjAwIiA+PmNvbmZkZWZzLmgKKyRhc19lY2hvICIjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNzAwIiA+PmNvbmZkZWZzLmgKIAogCiAgICMgT24gVHJ1NjQgVW5peCA0LjBGLCBkZWZpbmluZyBfWE9QRU5fU09VUkNFIGFsc28gcmVxdWlyZXMKQEAgLTMxMDYsOCArMzM2OCw3IEBACiAKIAogCi0kYXNfZWNobyAiI2RlZmluZSBfUE9TSVhfQ19TT1VSQ0UgMjAwMTEyTCIgPj5jb25mZGVmcy5oCi0KKyRhc19lY2hvICIjZGVmaW5lIF9QT1NJWF9DX1NPVVJDRSAyMDA4MDlMIiA+PmNvbmZkZWZzLmgKIAogZmkKIApAQCAtMzEzOCwxMiArMzM5OSw2IEBACiBDT05GSUdVUkVfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPQogRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0nIycKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBtYWNoaW5lIHR5cGUgYXMgcmVwb3J0ZWQgYnkgdW5hbWUgLW0iID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgbWFjaGluZSB0eXBlIGFzIHJlcG9ydGVkIGJ5IHVuYW1lIC1tLi4uICIgPiY2OyB9Ci1hY19zeXNfbWFjaGluZT1gdW5hbWUgLW1gCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3N5c19tYWNoaW5lIiA+JjUKLSRhc19lY2hvICIkYWNfc3lzX21hY2hpbmUiID4mNjsgfQotCiAjIGNoZWNrcyBmb3IgYWx0ZXJuYXRpdmUgcHJvZ3JhbXMKIAogIyBjb21waWxlciBmbGFncyBhcmUgZ2VuZXJhdGVkIGluIHR3byBzZXRzLCBCQVNFQ0ZMQUdTIGFuZCBPUFQuICBPUFQgaXMganVzdApAQCAtMzE5Myw2ICszNDQ4LDY2IEBACiBpZiB0ZXN0IC16ICIkQ0ZMQUdTIjsgdGhlbgogICAgICAgICBDRkxBR1M9CiBmaQorCitpZiB0ZXN0ICIkYWNfc3lzX3N5c3RlbSIgPSAiRGFyd2luIgordGhlbgorCSMgQ29tcGlsZXIgc2VsZWN0aW9uIG9uIE1hY09TWCBpcyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4KKwkjIEFDX1BST0dfQ0MgY2FuIGhhbmRsZSwgc2VlIE1hYy9SRUFETUUudHh0IGZvciBtb3JlCisJIyBpbmZvcm1hdGlvbgorCWlmIHRlc3QgLXogIiR7Q0N9IgorCXRoZW4KKwkJZm91bmRfZ2NjPQorCQlmb3VuZF9jbGFuZz0KKwkJYXNfc2F2ZV9JRlM9JElGUzsgSUZTPToKKwkJZm9yIGFzX2RpciBpbiAkUEFUSAorCQlkbworCQkJSUZTPSRhc19zYXZlX0lGUworCQkJaWYgdGVzdCAteCAkYXNfZGlyL2djYzsgdGhlbgorCQkJCWlmIHRlc3QgLXogIiR7Zm91bmRfZ2NjfSI7IHRoZW4KKwkJCQkJZm91bmRfZ2NjPSRhc19kaXIvZ2NjCisJCQkJZmkKKwkJCWZpCisJCQlpZiB0ZXN0IC14ICRhc19kaXIvY2xhbmc7IHRoZW4KKwkJCQlpZiB0ZXN0IC16ICIke2ZvdW5kX2NsYW5nfSI7IHRoZW4KKwkJCQkJZm91bmRfY2xhbmc9JGFzX2Rpci9jbGFuZworCQkJCWZpCisJCQlmaQorCQlkb25lCisJCUlGUz0kYXNfc2F2ZV9JRlMKKworCQlpZiB0ZXN0IC1uICIkZm91bmRfZ2NjIiAtYSAtbiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQlpZiB0ZXN0IC1uICJgIiRmb3VuZF9nY2MiIC0tdmVyc2lvbiB8IGdyZXAgbGx2bS1nY2NgIgorCQkJdGhlbgorCQkJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogRGV0ZWN0ZWQgbGx2bS1nY2MsIGZhbGxpbmcgYmFjayB0byBjbGFuZyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBEZXRlY3RlZCBsbHZtLWdjYywgZmFsbGluZyBiYWNrIHRvIGNsYW5nIiA+JjY7fQorCQkJCUNDPSIkZm91bmRfY2xhbmciCisJCQkJQ1hYPSIkZm91bmRfY2xhbmcrKyIKKwkJCWZpCisKKworCQllbGlmIHRlc3QgLXogIiRmb3VuZF9nY2MiIC1hIC1uICIkZm91bmRfY2xhbmciCisJCXRoZW4KKwkJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogTm8gR0NDIGZvdW5kLCB1c2UgQ0xBTkciID4mNQorJGFzX2VjaG8gIiRhc19tZTogTm8gR0NDIGZvdW5kLCB1c2UgQ0xBTkciID4mNjt9CisJCQlDQz0iJGZvdW5kX2NsYW5nIgorCQkJQ1hYPSIkZm91bmRfY2xhbmcrKyIKKworCQllbGlmIHRlc3QgLXogIiRmb3VuZF9nY2MiIC1hIC16ICIkZm91bmRfY2xhbmciCisJCXRoZW4KKwkJCWZvdW5kX2NsYW5nPWAvdXNyL2Jpbi94Y3J1biAtZmluZCBjbGFuZyAyPi9kZXYvbnVsbGAKKwkJCWlmIHRlc3QgLW4gIiR7Zm91bmRfY2xhbmd9IgorCQkJdGhlbgorCQkJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogVXNpbmcgY2xhbmcgZnJvbSBYY29kZS5hcHAiID4mNQorJGFzX2VjaG8gIiRhc19tZTogVXNpbmcgY2xhbmcgZnJvbSBYY29kZS5hcHAiID4mNjt9CisJCQkJQ0M9IiR7Zm91bmRfY2xhbmd9IgorCQkJCUNYWD0iYC91c3IvYmluL3hjcnVuIC1maW5kIGNsYW5nKytgIgorCisJCQkjIGVsc2U6IHVzZSBkZWZhdWx0IGJlaGF2aW91cgorCQkJZmkKKwkJZmkKKwlmaQorZmkKIGFjX2V4dD1jCiBhY19jcHA9JyRDUFAgJENQUEZMQUdTJwogYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwpAQCAtNDAxOSwxNiArNDMzNCw2MCBAQAogaWYgdGVzdCAteiAiJENYWCIKIHRoZW4KICAgICAgICAgY2FzZSAiJENDIiBpbgotICAgICAgICBnY2MpICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKyAgICAgICAgZ2NjKSAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1nKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZysrOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9DWFgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRDWFggaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfQ1hYPSIkQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiBub3Rmb3VuZAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9DWFg9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCitDWFg9JGFjX2N2X3BhdGhfQ1hYCitpZiB0ZXN0IC1uICIkQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENYWCIgPiY1CiskYXNfZWNobyAiJENYWCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfQ1hYIjsgdGhlbgorICBhY19wdF9DWFg9JENYWAorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImcrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgZysrOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcGF0aF9DWFgrOn0gZmFsc2U7IHRoZW4gOgoraWYgJHthY19jdl9wYXRoX2FjX3B0X0NYWCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCi0gIGNhc2UgJENYWCBpbgorICBjYXNlICRhY19wdF9DWFggaW4KICAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfQ1hYPSIkQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhY19wdF9DWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgogICA7OwogICAqKQogICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCkBAIC00MDM4LDcgKzQzOTcsNyBAQAogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0gICAgYWNfY3ZfcGF0aF9DWFg9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNDA0NiwyMiArNDQwNSwzNiBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAKLSAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQ1hYIiAmJiBhY19jdl9wYXRoX0NYWD0iZysrIgogICA7OwogZXNhYwogZmkKLUNYWD0kYWNfY3ZfcGF0aF9DWFgKLWlmIHRlc3QgLW4gIiRDWFgiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ1hYIiA+JjUKLSRhc19lY2hvICIkQ1hYIiA+JjY7IH0KK2FjX3B0X0NYWD0kYWNfY3ZfcGF0aF9hY19wdF9DWFgKK2lmIHRlc3QgLW4gIiRhY19wdF9DWFgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcHRfQ1hYIiA+JjUKKyRhc19lY2hvICIkYWNfcHRfQ1hYIiA+JjY7IH0KIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQogCisgIGlmIHRlc3QgIngkYWNfcHRfQ1hYIiA9IHg7IHRoZW4KKyAgICBDWFg9ImcrKyIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDWFg9JGFjX3B0X0NYWAorICBmaQorZWxzZQorICBDWFg9IiRhY19jdl9wYXRoX0NYWCIKK2ZpCiAgOzsKLSAgICAgICAgY2MpICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImMrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgYysrOyBhY193b3JkPSQyCisgICAgICAgIGNjKSAgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWMrKzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKQEAgLTQwODcsNyArNDQ2MCw2IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKIAotICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9DWFgiICYmIGFjX2N2X3BhdGhfQ1hYPSJjKysiCiAgIDs7CiBlc2FjCiBmaQpAQCAtNDEwMCw2ICs0NDcyLDE2MSBAQAogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCI7IHRoZW4KKyAgYWNfcHRfQ1hYPSRDWFgKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGMrKzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfYWNfcHRfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkYWNfcHRfQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX2FjX3B0X0NYWD0iJGFjX3B0X0NYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gbm90Zm91bmQKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorYWNfcHRfQ1hYPSRhY19jdl9wYXRoX2FjX3B0X0NYWAoraWYgdGVzdCAtbiAiJGFjX3B0X0NYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19wdF9DWFgiID4mNQorJGFzX2VjaG8gIiRhY19wdF9DWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19wdF9DWFgiID0geDsgdGhlbgorICAgIENYWD0iYysrIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENYWD0kYWNfcHRfQ1hYCisgIGZpCitlbHNlCisgIENYWD0iJGFjX2N2X3BhdGhfQ1hYIgorZmkKKyA7OworICAgICAgICBjbGFuZ3wqL2NsYW5nKSAgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9Y2xhbmcrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1jbGFuZysrOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9DWFgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRDWFggaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfQ1hYPSIkQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiBub3Rmb3VuZAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9DWFg9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCitDWFg9JGFjX2N2X3BhdGhfQ1hYCitpZiB0ZXN0IC1uICIkQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENYWCIgPiY1CiskYXNfZWNobyAiJENYWCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfQ1hYIjsgdGhlbgorICBhY19wdF9DWFg9JENYWAorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNsYW5nKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGNsYW5nKys7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX2FjX3B0X0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJGFjX3B0X0NYWCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhY19wdF9DWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluIG5vdGZvdW5kCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX2FjX3B0X0NYWD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK2FjX3B0X0NYWD0kYWNfY3ZfcGF0aF9hY19wdF9DWFgKK2lmIHRlc3QgLW4gIiRhY19wdF9DWFgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcHRfQ1hYIiA+JjUKKyRhc19lY2hvICIkYWNfcHRfQ1hYIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfcHRfQ1hYIiA9IHg7IHRoZW4KKyAgICBDWFg9ImNsYW5nKysiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ1hYPSRhY19wdF9DWFgKKyAgZmkKK2Vsc2UKKyAgQ1hYPSIkYWNfY3ZfcGF0aF9DWFgiCitmaQogIDs7CiAgICAgICAgIGVzYWMKIAlpZiB0ZXN0ICIkQ1hYIiA9ICJub3Rmb3VuZCIKQEAgLTQxMDksMTAgKzQ2MzYsMTEgQEAKIGZpCiBpZiB0ZXN0IC16ICIkQ1hYIgogdGhlbgotCWZvciBhY19wcm9nIGluICRDQ0MgYysrIGcrKyBnY2MgQ0MgY3h4IGNjKysgY2wKLWRvCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisJaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiAkQ0NDIGMrKyBnKysgZ2NjIENDIGN4eCBjYysrIGNsCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQogaWYgJHthY19jdl9wcm9nX0NYWCs6fSBmYWxzZTsgdGhlbiA6CkBAIC00MTI4LDcgKzQ2NTYsNyBAQAogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19DWFg9IiRhY19wcm9nIgorICAgIGFjX2N2X3Byb2dfQ1hYPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC00MTQ4LDkgKzQ2NzYsNjUgQEAKIGZpCiAKIAotICB0ZXN0IC1uICIkQ1hYIiAmJiBicmVhaworICAgIHRlc3QgLW4gIiRDWFgiICYmIGJyZWFrCisgIGRvbmUKK2ZpCitpZiB0ZXN0IC16ICIkQ1hYIjsgdGhlbgorICBhY19jdF9DWFg9JENYWAorICBmb3IgYWNfcHJvZyBpbiAkQ0NDIGMrKyBnKysgZ2NjIENDIGN4eCBjYysrIGNsCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0NYWCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9DWFg9IiRhY19jdF9DWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9DWFg9IiRhY19wcm9nIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKIGRvbmUKLXRlc3QgLW4gIiRDWFgiIHx8IENYWD0ibm90Zm91bmQiCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9DWFg9JGFjX2N2X3Byb2dfYWNfY3RfQ1hYCitpZiB0ZXN0IC1uICIkYWNfY3RfQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0NYWCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X0NYWCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIHRlc3QgLW4gIiRhY19jdF9DWFgiICYmIGJyZWFrCitkb25lCisKKyAgaWYgdGVzdCAieCRhY19jdF9DWFgiID0geDsgdGhlbgorICAgIENYWD0ibm90Zm91bmQiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ1hYPSRhY19jdF9DWFgKKyAgZmkKK2ZpCiAKIAlpZiB0ZXN0ICIkQ1hYIiA9ICJub3Rmb3VuZCIKIAl0aGVuCkBAIC00ODkwLDM3ICs1NDc0LDM1IEBACiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS1lbmFibGUtcHJvZmlsaW5nLi4uICIgPiY2OyB9CiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcHJvZmlsaW5nIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX3Byb2ZpbGluZytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZhbD0kZW5hYmxlX3Byb2ZpbGluZzsgYWNfc2F2ZV9jYz0iJENDIgotIENDPSIkQ0MgLXBnIgotIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKLSAgYWNfZW5hYmxlX3Byb2ZpbGluZz0ibm8iCi1lbHNlCisgIGVuYWJsZXZhbD0kZW5hYmxlX3Byb2ZpbGluZzsKK2ZpCisKK2lmIHRlc3QgIngkZW5hYmxlX3Byb2ZpbGluZyIgPSB4eWVzOyB0aGVuCisgIGFjX3NhdmVfY2M9IiRDQyIKKyAgQ0M9IiQoQ0MpIC1wZyIKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogaW50IG1haW4oKSB7IHJldHVybiAwOyB9CiBfQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgotICBhY19lbmFibGVfcHJvZmlsaW5nPSJ5ZXMiCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisKIGVsc2UKLSAgYWNfZW5hYmxlX3Byb2ZpbGluZz0ibm8iCisgIGVuYWJsZV9wcm9maWxpbmc9bm8KIGZpCi1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorICBDQz0iJGFjX3NhdmVfY2MiCitlbHNlCisgIGVuYWJsZV9wcm9maWxpbmc9bm8KIGZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGVuYWJsZV9wcm9maWxpbmciID4mNQorJGFzX2VjaG8gIiRlbmFibGVfcHJvZmlsaW5nIiA+JjY7IH0KIAotIENDPSIkYWNfc2F2ZV9jYyIKK2lmIHRlc3QgIngkZW5hYmxlX3Byb2ZpbGluZyIgPSB4eWVzOyB0aGVuCisgIEJBU0VDRkxBR1M9Ii1wZyAkQkFTRUNGTEFHUyIKKyAgTERGTEFHUz0iLXBnICRMREZMQUdTIgogZmkKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19lbmFibGVfcHJvZmlsaW5nIiA+JjUKLSRhc19lY2hvICIkYWNfZW5hYmxlX3Byb2ZpbGluZyIgPiY2OyB9Ci0KLWNhc2UgIiRhY19lbmFibGVfcHJvZmlsaW5nIiBpbgotICAgICJ5ZXMiKQotCUJBU0VDRkxBR1M9Ii1wZyAkQkFTRUNGTEFHUyIKLQlMREZMQUdTPSItcGcgJExERkxBR1MiCi0gICAgOzsKLWVzYWMKLQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBMRExJQlJBUlkiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgTERMSUJSQVJZLi4uICIgPiY2OyB9CiAKQEAgLTQ5ODYsMTEgKzU1NjgsNiBAQAogCSAgQkxETElCUkFSWT0nLVdsLCtiLCQoTElCRElSKSAtTC4gLWxweXRob24kKExEVkVSU0lPTiknCiAJICBSVU5TSEFSRUQ9U0hMSUJfUEFUSD1gcHdkYDoke1NITElCX1BBVEh9CiAJICA7OwotICAgIE9TRiopCi0JICBMRExJQlJBUlk9J2xpYnB5dGhvbiQoTERWRVJTSU9OKS5zbycKLQkgIEJMRExJQlJBUlk9Jy1ycGF0aCAkKExJQkRJUikgLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwotCSAgUlVOU0hBUkVEPUxEX0xJQlJBUllfUEFUSD1gcHdkYDoke0xEX0xJQlJBUllfUEFUSH0KLQkgIDs7CiAgICAgRGFyd2luKikKICAgICAJTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuZHlsaWInCiAJQkxETElCUkFSWT0nLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwpAQCAtNTAxMSw2ICs1NTg4LDEwIEBACiAgIGVzYWMKIGZpCiAKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisJUlVOU0hBUkVEPQorZmkKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRMRExJQlJBUlkiID4mNQogJGFzX2VjaG8gIiRMRExJQlJBUlkiID4mNjsgfQogCkBAIC01MTA3LDEwICs1Njg4LDExIEBACiBmaQogCiAKLWZvciBhY19wcm9nIGluIGFyIGFhbAotZG8KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gYXIgYWFsCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQogaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKQEAgLTUxMjYsNyArNTcwOCw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSAgICBhY19jdl9wcm9nX0FSPSIkYWNfcHJvZyIKKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC01MTQ2LDkgKzU3MjgsNjUgQEAKIGZpCiAKIAotICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworICBkb25lCitmaQoraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICBhY19jdF9BUj0kQVIKKyAgZm9yIGFjX3Byb2cgaW4gYXIgYWFsCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19jdF9BUiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCiBkb25lCi10ZXN0IC1uICIkQVIiIHx8IEFSPSJhciIKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X0FSPSRhY19jdl9wcm9nX2FjX2N0X0FSCitpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQVIiID4mNQorJGFzX2VjaG8gIiRhY19jdF9BUiIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKK2RvbmUKKworICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICBBUj0iYXIiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQVI9JGFjX2N0X0FSCisgIGZpCitmaQogCiAKICMgdHdlYWsgQVJGTEFHUyBvbmx5IGlmIHRoZSB1c2VyIGRpZG4ndCBzZXQgaXQgb24gdGhlIGNvbW1hbmQgbGluZQpAQCAtNTE1OCwxNiArNTc5NiwxOCBAQAogICAgICAgICBBUkZMQUdTPSJyYyIKIGZpCiAKLQotIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJzdm52ZXJzaW9uIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBzdm52ZXJzaW9uOyBhY193b3JkPSQyCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIHJlYWRlbGYKKyAgZG8KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3Byb2dfU1ZOVkVSU0lPTis6fSBmYWxzZTsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfUkVBREVMRis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCi0gIGlmIHRlc3QgLW4gIiRTVk5WRVJTSU9OIjsgdGhlbgotICBhY19jdl9wcm9nX1NWTlZFUlNJT049IiRTVk5WRVJTSU9OIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKyAgaWYgdGVzdCAtbiAiJFJFQURFTEYiOyB0aGVuCisgIGFjX2N2X3Byb2dfUkVBREVMRj0iJFJFQURFTEYiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgogZWxzZQogYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgogZm9yIGFzX2RpciBpbiAkUEFUSApAQCAtNTE3Niw3ICs1ODE2LDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotICAgIGFjX2N2X3Byb2dfU1ZOVkVSU0lPTj0iZm91bmQiCisgICAgYWNfY3ZfcHJvZ19SRUFERUxGPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC01MTg0LDQxICs1ODI0LDM0IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKIAotICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19TVk5WRVJTSU9OIiAmJiBhY19jdl9wcm9nX1NWTlZFUlNJT049Im5vdC1mb3VuZCIKIGZpCiBmaQotU1ZOVkVSU0lPTj0kYWNfY3ZfcHJvZ19TVk5WRVJTSU9OCi1pZiB0ZXN0IC1uICIkU1ZOVkVSU0lPTiI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRTVk5WRVJTSU9OIiA+JjUKLSRhc19lY2hvICIkU1ZOVkVSU0lPTiIgPiY2OyB9CitSRUFERUxGPSRhY19jdl9wcm9nX1JFQURFTEYKK2lmIHRlc3QgLW4gIiRSRUFERUxGIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFJFQURFTEYiID4mNQorJGFzX2VjaG8gIiRSRUFERUxGIiA+JjY7IH0KIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQogCiAKLWlmIHRlc3QgJFNWTlZFUlNJT04gPSBmb3VuZAotdGhlbgotCVNWTlZFUlNJT049InN2bnZlcnNpb24gXCQoc3JjZGlyKSIKLWVsc2UKLQlTVk5WRVJTSU9OPSJlY2hvIFVudmVyc2lvbmVkIGRpcmVjdG9yeSIKKyAgICB0ZXN0IC1uICIkUkVBREVMRiIgJiYgYnJlYWsKKyAgZG9uZQogZmkKLQotCi0KLQotCi1pZiB0ZXN0IC1lICRzcmNkaXIvLmhnL2RpcnN0YXRlCi10aGVuCi0jIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImhnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBoZzsgYWNfd29yZD0kMgoraWYgdGVzdCAteiAiJFJFQURFTEYiOyB0aGVuCisgIGFjX2N0X1JFQURFTEY9JFJFQURFTEYKKyAgZm9yIGFjX3Byb2cgaW4gcmVhZGVsZgorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX0hBU19IRys6fSBmYWxzZTsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfUkVBREVMRis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCi0gIGlmIHRlc3QgLW4gIiRIQVNfSEciOyB0aGVuCi0gIGFjX2N2X3Byb2dfSEFTX0hHPSIkSEFTX0hHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKyAgaWYgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfUkVBREVMRj0iJGFjX2N0X1JFQURFTEYiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgogZWxzZQogYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgogZm9yIGFzX2RpciBpbiAkUEFUSApAQCAtNTIyNyw3ICs1ODYwLDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotICAgIGFjX2N2X3Byb2dfSEFTX0hHPSJmb3VuZCIKKyAgICBhY19jdl9wcm9nX2FjX2N0X1JFQURFTEY9IiRhY19wcm9nIgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKICAgZmkKQEAgLTUyMzUsMzQgKzU4NjgsNDQgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogCi0gIHRlc3QgLXogIiRhY19jdl9wcm9nX0hBU19IRyIgJiYgYWNfY3ZfcHJvZ19IQVNfSEc9Im5vdC1mb3VuZCIKIGZpCiBmaQotSEFTX0hHPSRhY19jdl9wcm9nX0hBU19IRwotaWYgdGVzdCAtbiAiJEhBU19IRyI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRIQVNfSEciID4mNQotJGFzX2VjaG8gIiRIQVNfSEciID4mNjsgfQorYWNfY3RfUkVBREVMRj0kYWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGCitpZiB0ZXN0IC1uICIkYWNfY3RfUkVBREVMRiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9SRUFERUxGIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfUkVBREVMRiIgPiY2OyB9CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAogCi1lbHNlCi1IQVNfSEc9bm8tcmVwb3NpdG9yeQorICB0ZXN0IC1uICIkYWNfY3RfUkVBREVMRiIgJiYgYnJlYWsKK2RvbmUKKworICBpZiB0ZXN0ICJ4JGFjX2N0X1JFQURFTEYiID0geDsgdGhlbgorICAgIFJFQURFTEY9IjoiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgUkVBREVMRj0kYWNfY3RfUkVBREVMRgorICBmaQogZmkKLWlmIHRlc3QgJEhBU19IRyA9IGZvdW5kCi10aGVuCi0gICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgotICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgotICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgotZWxzZQotICAgIEhHVkVSU0lPTj0iIgotICAgIEhHVEFHPSIiCi0gICAgSEdCUkFOQ0g9IiIKKworaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgICBjYXNlICIkUkVBREVMRiIgaW4KKwlyZWFkZWxmfDopCisJYXNfZm5fZXJyb3IgJD8gInJlYWRlbGYgZm9yIHRoZSBob3N0IGlzIHJlcXVpcmVkIGZvciBjcm9zcyBidWlsZHMiICIkTElORU5PIiA1CisJOzsKKyAgICBlc2FjCiBmaQogCiAKKwogRElTQUJMRV9BU0RMR0VOPSIiCiAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInB5dGhvbiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgcHl0aG9uOyBhY193b3JkPSQyCkBAIC01MzE2LDM1ICs1OTU5LDYgQEAKIAkJSU5TVEFMTD0iJHtzcmNkaXJ9L2luc3RhbGwtc2ggLWMiCiAJZmkKIGVzYWMKLWFjX2F1eF9kaXI9Ci1mb3IgYWNfZGlyIGluICIkc3JjZGlyIiAiJHNyY2Rpci8uLiIgIiRzcmNkaXIvLi4vLi4iOyBkbwotICBpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwtc2giOyB0aGVuCi0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC1zaCAtYyIKLSAgICBicmVhawotICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5zaCI7IHRoZW4KLSAgICBhY19hdXhfZGlyPSRhY19kaXIKLSAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIgotICAgIGJyZWFrCi0gIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9zaHRvb2wiOyB0aGVuCi0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCi0gICAgYnJlYWsKLSAgZmkKLWRvbmUKLWlmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhlbgotICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIFwiJHNyY2RpclwiIFwiJHNyY2Rpci8uLlwiIFwiJHNyY2Rpci8uLi8uLlwiIiAiJExJTkVOTyIgNQotZmkKLQotIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJlIHVuZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsCi0jIGFuZCBhcmUgaW50ZW5kZWQgdG8gYmUgd2l0aGRyYXduIGluIGEgZnV0dXJlIEF1dG9jb25mIHJlbGVhc2UuCi0jIFRoZXkgY2FuIGNhdXNlIHNlcmlvdXMgcHJvYmxlbXMgaWYgYSBidWlsZGVyJ3Mgc291cmNlIHRyZWUgaXMgaW4gYSBkaXJlY3RvcnkKLSMgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIHVudXN1YWwgY2hhcmFjdGVycy4KLWFjX2NvbmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KLWFjX2NvbmZpZ19zdWI9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgotYWNfY29uZmlndXJlPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgotCi0KICMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2UgcHJlZmVyIGEgQyBwcm9ncmFtIChmYXN0ZXIpLAogIyBzbyBvbmUgc2NyaXB0IGlzIGFzIGdvb2QgYXMgYW5vdGhlci4gIEJ1dCBhdm9pZCB0aGUgYnJva2VuIG9yCiAjIGluY29tcGF0aWJsZSB2ZXJzaW9uczoKQEAgLTU0MzgsNiArNjA1Miw0OCBAQAogCiB0ZXN0IC16ICIkSU5TVEFMTF9EQVRBIiAmJiBJTlNUQUxMX0RBVEE9JyR7SU5TVEFMTH0gLW0gNjQ0JwogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIHRocmVhZC1zYWZlIG1rZGlyIC1wIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhIHRocmVhZC1zYWZlIG1rZGlyIC1wLi4uICIgPiY2OyB9CitpZiB0ZXN0IC16ICIkTUtESVJfUCI7IHRoZW4KKyAgaWYgJHthY19jdl9wYXRoX21rZGlyKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi9vcHQvc2Z3L2JpbgorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIG1rZGlyIGdta2RpcjsgZG8KKwkgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisJICAgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgfSB8fCBjb250aW51ZQorCSAgIGNhc2UgYCIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAtLXZlcnNpb24gMj4mMWAgaW4gIygKKwkgICAgICdta2RpciAoR05VIGNvcmV1dGlscykgJyogfCBcCisJICAgICAnbWtkaXIgKGNvcmV1dGlscykgJyogfCBcCisJICAgICAnbWtkaXIgKGZpbGV1dGlscykgJzQuMSopCisJICAgICAgIGFjX2N2X3BhdGhfbWtkaXI9JGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dAorCSAgICAgICBicmVhayAzOzsKKwkgICBlc2FjCisJIGRvbmUKKyAgICAgICBkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKKworICB0ZXN0IC1kIC4vLS12ZXJzaW9uICYmIHJtZGlyIC4vLS12ZXJzaW9uCisgIGlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9ta2RpcitzZXR9IiA9IHNldDsgdGhlbgorICAgIE1LRElSX1A9IiRhY19jdl9wYXRoX21rZGlyIC1wIgorICBlbHNlCisgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgRG9uJ3QgY2FjaGUgYQorICAgICMgdmFsdWUgZm9yIE1LRElSX1Agd2l0aGluIGEgc291cmNlIGRpcmVjdG9yeSwgYmVjYXVzZSB0aGF0IHdpbGwKKyAgICAjIGJyZWFrIG90aGVyIHBhY2thZ2VzIHVzaW5nIHRoZSBjYWNoZSBpZiB0aGF0IGRpcmVjdG9yeSBpcworICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHZhbHVlIGlzIGEgcmVsYXRpdmUgbmFtZS4KKyAgICBNS0RJUl9QPSIkYWNfaW5zdGFsbF9zaCAtZCIKKyAgZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1LRElSX1AiID4mNQorJGFzX2VjaG8gIiRNS0RJUl9QIiA+JjY7IH0KKwogCiAjIE5vdCBldmVyeSBmaWxlc3lzdGVtIHN1cHBvcnRzIGhhcmQgbGlua3MKIApAQCAtNTYxNiwxMCArNjI3Miw1MyBAQAogICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWZuby1zdHJpY3QtYWxpYXNpbmciCiAgICAgZmkKIAorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcmVzdWx0IHdhcm5pbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcmVzdWx0IHdhcm5pbmcuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XdW51c2VkLXJlc3VsdCAtV2Vycm9yIgorICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKKyAgICAgaWYgJHthY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZz15ZXMKKworZWxzZQorCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPW5vCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmciID4mNjsgfQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcgPSB5ZXMKKyAgICB0aGVuCisgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV25vLXVudXNlZC1yZXN1bHQiCisgICAgZmkKKwogICAgICMgaWYgdXNpbmcgZ2NjIG9uIGFscGhhLCB1c2UgLW1pZWVlIHRvIGdldCAobmVhcikgZnVsbCBJRUVFIDc1NAogICAgICMgc3VwcG9ydC4gIFdpdGhvdXQgdGhpcywgdHJlYXRtZW50IG9mIHN1Ym5vcm1hbHMgZG9lc24ndCBmb2xsb3cKICAgICAjIHRoZSBzdGFuZGFyZC4KLSAgICBjYXNlICRhY19zeXNfbWFjaGluZSBpbgorICAgIGNhc2UgJGhvc3QgaW4KICAgICAgICAgIGFscGhhKikKICAgICAgICAgICAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtbWllZWUiCiAgICAgICAgICAgICAgICAgOzsKQEAgLTU2OTUsNyArNjM5NCw5IEBACiAJICAgICMgQ2FsY3VsYXRlIHRoZSByaWdodCBkZXBsb3ltZW50IHRhcmdldCBmb3IgdGhpcyBidWlsZC4KIAkgICAgIwogCSAgICBjdXJfdGFyZ2V0PWBzd192ZXJzIC1wcm9kdWN0VmVyc2lvbiB8IHNlZCAncy9cKDEwXC5bMC05XSpcKS4qL1wxLydgCi0JICAgIGlmIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPicgMTAuMjsgdGhlbgorCSAgICBpZiB0ZXN0ICR7Y3VyX3RhcmdldH0gJz4nIDEwLjIgJiYgXAorCSAgICAgICB0ZXN0ICR7Y3VyX3RhcmdldH0gJzwnIDEwLjYKKwkgICAgdGhlbgogCQkgICAgY3VyX3RhcmdldD0xMC4zCiAJCSAgICBpZiB0ZXN0ICR7ZW5hYmxlX3VuaXZlcnNhbHNka307IHRoZW4KIAkJCSAgICBpZiB0ZXN0ICIke1VOSVZFUlNBTF9BUkNIU30iID0gImFsbCI7IHRoZW4KQEAgLTU3MzQsOSArNjQzNSw2IEBACiAJICAgIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JycKIAogCSAgICA7OwotCU9TRiopCi0JICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1taWVlZSIKLQkgICAgOzsKICAgICBlc2FjCiAgICAgOzsKIApAQCAtNTc0NSw5ICs2NDQzLDYgQEAKICAgICBPcGVuVU5JWCp8VW5peFdhcmUqKQogCUJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1LIHBlbnRpdW0saG9zdCxpbmxpbmUsbG9vcF91bnJvbGwsYWxsb2NhICIKIAk7OwotICAgIE9TRiopCi0JQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWllZWUgLXN0ZCIKLSAgICAJOzsKICAgICBTQ09fU1YqKQogCUJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1iZWxmIC1LaTQ4NiAtRFNDTzUiCiAJOzsKQEAgLTYxNTcsMTcgKzY4NTIsMjAgQEAKIAogZmkKIAorYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKIGZvciBhY19oZWFkZXIgaW4gYXNtL3R5cGVzLmggY29uaW8uaCBjdXJzZXMuaCBkaXJlY3QuaCBkbGZjbi5oIGVycm5vLmggXAogZmNudGwuaCBncnAuaCBcCi1pZWVlZnAuaCBpby5oIGxhbmdpbmZvLmggbGliaW50bC5oIG5jdXJzZXMuaCBwb2xsLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCi1zaGFkb3cuaCBzaWduYWwuaCBzdGRpbnQuaCBzdHJvcHRzLmggdGVybWlvcy5oIHRocmVhZC5oIFwKK2llZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggbmN1cnNlcy5oIHByb2Nlc3MuaCBwdGhyZWFkLmggXAorc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdGRpbnQuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKIHVuaXN0ZC5oIHV0aW1lLmggXAotc3lzL2F1ZGlvaW8uaCBzeXMvYnNkdHR5Lmggc3lzL2Vwb2xsLmggc3lzL2V2ZW50Lmggc3lzL2ZpbGUuaCBzeXMvbG9hZGF2Zy5oIFwKLXN5cy9sb2NrLmggc3lzL21rZGV2Lmggc3lzL21vZGVtLmggXAotc3lzL3BhcmFtLmggc3lzL3BvbGwuaCBzeXMvc2VsZWN0Lmggc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggc3lzL3N0YXQuaCBcCi1zeXMvc3lzY2FsbC5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKLXN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBsaWJ1dGlsLmggXAotc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAorcG9sbC5oIHN5cy9kZXZwb2xsLmggc3lzL2Vwb2xsLmggc3lzL3BvbGwuaCBcCitzeXMvYXVkaW9pby5oIHN5cy94YXR0ci5oIHN5cy9ic2R0dHkuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIFwKK3N5cy9rZXJuX2NvbnRyb2wuaCBzeXMvbG9hZGF2Zy5oIHN5cy9sb2NrLmggc3lzL21rZGV2Lmggc3lzL21vZGVtLmggXAorc3lzL3BhcmFtLmggc3lzL3NlbGVjdC5oIHN5cy9zZW5kZmlsZS5oIHN5cy9zb2NrZXQuaCBzeXMvc3RhdHZmcy5oIFwKK3N5cy9zdGF0Lmggc3lzL3N5c2NhbGwuaCBzeXMvc3lzX2RvbWFpbi5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKK3N5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91aW8uaCBzeXMvdW4uaCBzeXMvdXRzbmFtZS5oIHN5cy93YWl0LmggcHR5LmggXAorbGlidXRpbC5oIHN5cy9yZXNvdXJjZS5oIG5ldHBhY2tldC9wYWNrZXQuaCBzeXNleGl0cy5oIGJsdWV0b290aC5oIFwKIGJsdWV0b290aC9ibHVldG9vdGguaCBsaW51eC90aXBjLmggc3Bhd24uaCB1dGlsLmgKIGRvIDoKICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYApAQCAtNjE4MSw2ICs2ODc5LDcgQEAKIAogZG9uZQogCitDUFBGTEFHUz0kYWNfc2F2ZV9jcHBmbGFncwogYWNfaGVhZGVyX2RpcmVudD1ubwogZm9yIGFjX2hkciBpbiBkaXJlbnQuaCBzeXMvbmRpci5oIHN5cy9kaXIuaCBuZGlyLmg7IGRvCiAgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl9kaXJlbnRfJGFjX2hkciIgfCAkYXNfdHJfc2hgCkBAIC02MzkwLDYgKzcwODksMzQgQEAKIGZpCiAKIAorIyBPbiBEYXJ3aW4gKE9TIFgpIG5ldC9pZi5oIHJlcXVpcmVzIHN5cy9zb2NrZXQuaCB0byBiZSBpbXBvcnRlZCBmaXJzdC4KK2ZvciBhY19oZWFkZXIgaW4gbmV0L2lmLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgIm5ldC9pZi5oIiAiYWNfY3ZfaGVhZGVyX25ldF9pZl9oIiAiI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgU1REQ19IRUFERVJTCisjIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyBpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbHNlCisjIGlmZGVmIEhBVkVfU1RETElCX0gKKyMgIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyBlbmRpZgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyMgaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisKKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX25ldF9pZl9oIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfTkVUX0lGX0ggMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworCisKICMgT24gU29sYXJpcywgdGVybS5oIHJlcXVpcmVzIGN1cnNlcy5oCiBmb3IgYWNfaGVhZGVyIGluIHRlcm0uaAogZG8gOgpAQCAtNjQzMSw2ICs3MTU4LDI2IEBACiBkb25lCiAKIAorIyBPbiBMaW51eCwgY2FuLmggYW5kIGNhbi9yYXcuaCByZXF1aXJlIHN5cy9zb2NrZXQuaAorZm9yIGFjX2hlYWRlciBpbiBsaW51eC9jYW4uaCBsaW51eC9jYW4vcmF3LmgKK2RvIDoKKyAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgIiRhY19oZWFkZXIiICIkYXNfYWNfSGVhZGVyIiAiCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKworIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKKwogIyBjaGVja3MgZm9yIHR5cGVkZWZzCiB3YXNfaXRfZGVmaW5lZD1ubwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY2xvY2tfdCBpbiB0aW1lLmgiID4mNQpAQCAtNjQ1NSw3ICs3MjAyLDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2FzX2l0X2RlZmluZWQiID4mNQogJGFzX2VjaG8gIiR3YXNfaXRfZGVmaW5lZCIgPiY2OyB9CiAKLSMgQ2hlY2sgd2hldGhlciB1c2luZyBtYWtlZGV2IHJlcXVpcmVzIGRlZmluaW5nIF9PU0ZfU09VUkNFCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBtYWtlZGV2IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWtlZGV2Li4uICIgPiY2OyB9CiBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC02NDg2LDM1ICs3MjMyLDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotaWYgdGVzdCAiJGFjX2N2X2hhc19tYWtlZGV2IiA9ICJubyI7IHRoZW4KLSAgICAjIHdlIGRpZG4ndCBsaW5rLCB0cnkgaWYgX09TRl9TT1VSQ0Ugd2lsbCBhbGxvdyB1cyB0byBsaW5rCi0gICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0jZGVmaW5lIF9PU0ZfU09VUkNFIDEKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQotaW50Ci1tYWluICgpCi17Ci0gbWFrZWRldigwLCAwKQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2hhc19tYWtlZGV2PXllcwotZWxzZQotICBhY19jdl9oYXNfbWFrZWRldj1ubwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gICAgaWYgdGVzdCAiJGFjX2N2X2hhc19tYWtlZGV2IiA9ICJ5ZXMiOyB0aGVuCi0KLSRhc19lY2hvICIjZGVmaW5lIF9PU0ZfU09VUkNFIDEiID4+Y29uZmRlZnMuaAotCi0gICAgZmkKLWZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hhc19tYWtlZGV2IiA+JjUKICRhc19lY2hvICIkYWNfY3ZfaGFzX21ha2VkZXYiID4mNjsgfQogaWYgdGVzdCAiJGFjX2N2X2hhc19tYWtlZGV2IiA9ICJ5ZXMiOyB0aGVuCkBAIC02NzIyLDYgKzc0MzksMTMgQEAKIAogZmkKIAorYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiX191aW50MTI4X3QiICJhY19jdl90eXBlX19fdWludDEyOF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfX191aW50MTI4X3QiID0geHllczsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0NDX1VJTlQxMjhfVCAxIiA+PmNvbmZkZWZzLmgKKworZmkKKwogCiAjIFNpemVzIG9mIHZhcmlvdXMgY29tbW9uIGJhc2ljIHR5cGVzCiAjIEFOU0kgQyByZXF1aXJlcyBzaXplb2YoY2hhcikgPT0gMSwgc28gbm8gbmVlZCB0byBjaGVjayBpdApAQCAtNzYwMiw3ICs4MzI2LDYgQEAKIAkJZWxzZQogCQkJTERTSEFSRUQ9J2xkIC1iJwogCQlmaSA7OwotCU9TRiopIExEU0hBUkVEPSJsZCAtc2hhcmVkIC1leHBlY3RfdW5yZXNvbHZlZCBcIipcIiI7OwogCURhcndpbi8xLjMqKQogCQlMRFNIQVJFRD0nJChDQykgLWJ1bmRsZScKIAkJTERDWFhTSEFSRUQ9JyQoQ1hYKSAtYnVuZGxlJwpAQCAtNzg0MSw2ICs4NTY0LDUxIEBACiAKIAogIyBjaGVja3MgZm9yIGxpYnJhcmllcworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2VuZGZpbGUgaW4gLWxzZW5kZmlsZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc2VuZGZpbGUgaW4gLWxzZW5kZmlsZS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHNlbmRmaWxlICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBzZW5kZmlsZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIHNlbmRmaWxlICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZSIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0xJQlNFTkRGSUxFIDEKK19BQ0VPRgorCisgIExJQlM9Ii1sc2VuZGZpbGUgJExJQlMiCisKK2ZpCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbC4uLiAiID4mNjsgfQogaWYgJHthY19jdl9saWJfZGxfZGxvcGVuKzp9IGZhbHNlOyB0aGVuIDoKQEAgLTgzMDksNiArOTA3NywyMSBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX3N5c3RlbV9mZmkiID4mNQogJGFzX2VjaG8gIiR3aXRoX3N5c3RlbV9mZmkiID4mNjsgfQogCisjIENoZWNrIGZvciB1c2Ugb2YgdGhlIHN5c3RlbSBsaWJtcGRlYyBsaWJyYXJ5Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtc3lzdGVtLWxpYm1wZGVjIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtc3lzdGVtLWxpYm1wZGVjLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3lzdGVtX2xpYm1wZGVjIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9zeXN0ZW1fbGlibXBkZWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX3N5c3RlbV9saWJtcGRlYzsKK2Vsc2UKKyAgd2l0aF9zeXN0ZW1fbGlibXBkZWM9Im5vIgorZmkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfc3lzdGVtX2xpYm1wZGVjIiA+JjUKKyRhc19lY2hvICIkd2l0aF9zeXN0ZW1fbGlibXBkZWMiID4mNjsgfQorCiAjIENoZWNrIGZvciBzdXBwb3J0IGZvciBsb2FkYWJsZSBzcWxpdGUgZXh0ZW5zaW9ucwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0tZW5hYmxlLWxvYWRhYmxlLXNxbGl0ZS1leHRlbnNpb25zLi4uICIgPiY2OyB9CkBAIC04Mzc2LDIzICs5MTU5LDYgQEAKIAogVVNFX1RIUkVBRF9NT0RVTEU9IiIKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLWRlYy10aHJlYWRzIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtZGVjLXRocmVhZHMuLi4gIiA+JjY7IH0KLQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWRlYy10aHJlYWRzIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9kZWNfdGhyZWFkcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfZGVjX3RocmVhZHM7Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGh2YWwiID4mNQotJGFzX2VjaG8gIiR3aXRodmFsIiA+JjY7IH0KLUxETEFTVD0tdGhyZWFkcwotaWYgdGVzdCAiJHt3aXRoX3RocmVhZCtzZXR9IiAhPSBzZXQ7IHRoZW4KLSAgIHdpdGhfdGhyZWFkPSIkd2l0aHZhbCI7Ci1maQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCiAKIAogIyBUZW1wbGF0ZXMgZm9yIHRoaW5ncyBBQ19ERUZJTkVkIG1vcmUgdGhhbiBvbmNlLgpAQCAtODQwMCw3ICs5MTY2LDYgQEAKIAogCiAKLQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXRocmVhZHMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC10aHJlYWRzLi4uICIgPiY2OyB9CiAKQEAgLTg1MDIsMzEgKzkyNjcsNiBAQAogCiAgICAgJGFzX2VjaG8gIiNkZWZpbmUgX1JFRU5UUkFOVCAxIiA+PmNvbmZkZWZzLmgKIAotICAgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJjdGhyZWFkcy5oIiAiYWNfY3ZfaGVhZGVyX2N0aHJlYWRzX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2N0aHJlYWRzX2giID0geHllczsgdGhlbiA6Ci0gICRhc19lY2hvICIjZGVmaW5lIFdJVEhfVEhSRUFEIDEiID4+Y29uZmRlZnMuaAotCi0gICAgJGFzX2VjaG8gIiNkZWZpbmUgQ19USFJFQURTIDEiID4+Y29uZmRlZnMuaAotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhVUkRfQ19USFJFQURTIDEiID4+Y29uZmRlZnMuaAotCi0gICAgTElCUz0iJExJQlMgLWx0aHJlYWRzIgotICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIgotZWxzZQotCi0gICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIm1hY2gvY3RocmVhZHMuaCIgImFjX2N2X2hlYWRlcl9tYWNoX2N0aHJlYWRzX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX21hY2hfY3RocmVhZHNfaCIgPSB4eWVzOyB0aGVuIDoKLSAgJGFzX2VjaG8gIiNkZWZpbmUgV0lUSF9USFJFQUQgMSIgPj5jb25mZGVmcy5oCi0KLSAgICAkYXNfZWNobyAiI2RlZmluZSBDX1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCi0KLQotJGFzX2VjaG8gIiNkZWZpbmUgTUFDSF9DX1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyIKLWVsc2UKLQogICAgICMgSnVzdCBsb29raW5nIGZvciBwdGhyZWFkX2NyZWF0ZSBpbiBsaWJwdGhyZWFkIGlzIG5vdCBlbm91Z2g6CiAgICAgIyBvbiBIUC9VWCwgcHRocmVhZC5oIHJlbmFtZXMgcHRocmVhZF9jcmVhdGUgdG8gYSBkaWZmZXJlbnQgc3ltYm9sIG5hbWUuCiAgICAgIyBTbyB3ZSByZWFsbHkgaGF2ZSB0byBpbmNsdWRlIHB0aHJlYWQuaCwgYW5kIHRoZW4gbGluay4KQEAgLTg3NTgsMTIgKzk0OTgsNiBAQAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotCi0KLWZpCi0KLQogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdXNjb25maWcgaW4gLWxtcGMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHVzY29uZmlnIGluIC1sbXBjLi4uICIgPiY2OyB9CkBAIC04ODU2LDE1ICs5NTkwLDYgQEAKIGZpCiAKICAgICBmaQotCi0gICAgaWYgdGVzdCAiJFVTRV9USFJFQURfTU9EVUxFIiAhPSAiIyIKLSAgICB0aGVuCi0gICAgICAgICMgSWYgdGhlIGFib3ZlIGNoZWNrcyBkaWRuJ3QgZGlzYWJsZSB0aHJlYWRzLCAoYXQgbGVhc3QpIE9TRjEKLSAgICAgICAgIyBuZWVkcyB0aGlzICctdGhyZWFkcycgYXJndW1lbnQgZHVyaW5nIGxpbmtpbmcuCi0gICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSAgICAgICAgT1NGMSkgTERMQVNUPS10aHJlYWRzOzsKLSAgICAgICAgZXNhYwotICAgIGZpCiBmaQogCiBpZiB0ZXN0ICIkcG9zaXhfdGhyZWFkcyIgPSAieWVzIjsgdGhlbgpAQCAtOTMwMSwxMyArMTAwMjYsMTMgQEAKIGlmIHRlc3QgLXogIiR3aXRoX3B5bWFsbG9jIgogdGhlbgogICAgIHdpdGhfcHltYWxsb2M9InllcyIKLSAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIGlmIHRlc3QgIiR3aXRoX3B5bWFsbG9jIiAhPSAibm8iCiB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIFdJVEhfUFlNQUxMT0MgMSIgPj5jb25mZGVmcy5oCiAKKyAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9weW1hbGxvYyIgPiY1CiAkYXNfZWNobyAiJHdpdGhfcHltYWxsb2MiID4mNjsgfQpAQCAtOTQwNSwyNCArMTAxMzAsMzcgQEAKIGVsc2UKIAlNQUNIREVQX09CSlM9IiRNQUNIREVQX09CSlMgJGV4dHJhX21hY2hkZXBfb2JqcyIKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogTUFDSERFUF9PQkpTIiA+JjUKLSRhc19lY2hvICJNQUNIREVQX09CSlMiID4mNjsgfQoraWYgdGVzdCAteiAiJE1BQ0hERVBfT0JKUyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vbmUiID4mNQorJGFzX2VjaG8gIm5vbmUiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BQ0hERVBfT0JKUyIgPiY1CiskYXNfZWNobyAiJE1BQ0hERVBfT0JKUyIgPiY2OyB9CitmaQogCiAjIGNoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMKIGZvciBhY19mdW5jIGluIGFsYXJtIGFjY2VwdDQgc2V0aXRpbWVyIGdldGl0aW1lciBiaW5kX3RleHRkb21haW5fY29kZXNldCBjaG93biBcCi0gY2xvY2sgY29uZnN0ciBjdGVybWlkIGV4ZWN2IGZjaG1vZCBmY2hvd24gZm9yayBmcGF0aGNvbmYgZnRpbWUgZnRydW5jYXRlIFwKLSBnYWlfc3RyZXJyb3IgZ2V0Z3JvdXBzIGdldGxvZ2luIGdldGxvYWRhdmcgZ2V0cGVlcm5hbWUgZ2V0cGdpZCBnZXRwaWQgXAorIGNsb2NrIGNvbmZzdHIgY3Rlcm1pZCBleGVjdiBmYWNjZXNzYXQgZmNobW9kIGZjaG1vZGF0IGZjaG93biBmY2hvd25hdCBcCisgZmV4ZWN2ZSBmZG9wZW5kaXIgZm9yayBmcGF0aGNvbmYgZnN0YXRhdCBmdGltZSBmdHJ1bmNhdGUgZnV0aW1lc2F0IFwKKyBmdXRpbWVucyBmdXRpbWVzIGdhaV9zdHJlcnJvciBcCisgZ2V0Z3JvdXBsaXN0IGdldGdyb3VwcyBnZXRsb2dpbiBnZXRsb2FkYXZnIGdldHBlZXJuYW1lIGdldHBnaWQgZ2V0cGlkIFwKICBnZXRwcmlvcml0eSBnZXRyZXN1aWQgZ2V0cmVzZ2lkIGdldHB3ZW50IGdldHNwbmFtIGdldHNwZW50IGdldHNpZCBnZXR3ZCBcCi0gaW5pdGdyb3VwcyBraWxsIGtpbGxwZyBsY2htb2QgbGNob3duIGxzdGF0IG1icnRvd2MgbWtmaWZvIG1rbm9kIG1rdGltZSBcCi0gbXJlbWFwIG5pY2UgcGF0aGNvbmYgcGF1c2UgcGxvY2sgcG9sbCBwdGhyZWFkX2luaXQgXAotIHB1dGVudiByZWFkbGluayByZWFscGF0aCBcCi0gc2VsZWN0IHNlbV9vcGVuIHNlbV90aW1lZHdhaXQgc2VtX2dldHZhbHVlIHNlbV91bmxpbmsgc2V0ZWdpZCBzZXRldWlkIFwKLSBzZXRnaWQgXAotIHNldGxvY2FsZSBzZXRyZWdpZCBzZXRyZXVpZCBzZXRyZXN1aWQgc2V0cmVzZ2lkIHNldHNpZCBzZXRwZ2lkIHNldHBncnAgc2V0dWlkIHNldHZidWYgXAotIHNpZ2FjdGlvbiBzaWdpbnRlcnJ1cHQgc2lncmVsc2Ugc25wcmludGYgc3RyZnRpbWUgc3RybGNweSBcCisgaWZfbmFtZWluZGV4IFwKKyBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG1vZCBsY2hvd24gbG9ja2YgbGlua2F0IGxzdGF0IGx1dGltZXMgbW1hcCBcCisgbWVtcmNociBtYnJ0b3djIG1rZGlyYXQgbWtmaWZvIFwKKyBta2ZpZm9hdCBta25vZCBta25vZGF0IG1rdGltZSBtcmVtYXAgbmljZSBvcGVuYXQgcGF0aGNvbmYgcGF1c2UgcGlwZTIgcGxvY2sgcG9sbCBcCisgcG9zaXhfZmFsbG9jYXRlIHBvc2l4X2ZhZHZpc2UgcHJlYWQgXAorIHB0aHJlYWRfaW5pdCBwdGhyZWFkX2tpbGwgcHV0ZW52IHB3cml0ZSByZWFkbGluayByZWFkbGlua2F0IHJlYWR2IHJlYWxwYXRoIHJlbmFtZWF0IFwKKyBzZWxlY3Qgc2VtX29wZW4gc2VtX3RpbWVkd2FpdCBzZW1fZ2V0dmFsdWUgc2VtX3VubGluayBzZW5kZmlsZSBzZXRlZ2lkIHNldGV1aWQgXAorIHNldGdpZCBzZXRob3N0bmFtZSBcCisgc2V0bG9jYWxlIHNldHJlZ2lkIHNldHJldWlkIHNldHJlc3VpZCBzZXRyZXNnaWQgc2V0c2lkIHNldHBnaWQgc2V0cGdycCBzZXRwcmlvcml0eSBzZXR1aWQgc2V0dmJ1ZiBcCisgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCBzY2hlZF9zZXRhZmZpbml0eSBzY2hlZF9zZXRzY2hlZHVsZXIgc2NoZWRfc2V0cGFyYW0gXAorIHNjaGVkX3JyX2dldF9pbnRlcnZhbCBcCisgc2lnYWN0aW9uIHNpZ2FsdHN0YWNrIHNpZ2ludGVycnVwdCBzaWdwZW5kaW5nIHNpZ3JlbHNlIFwKKyBzaWd0aW1lZHdhaXQgc2lnd2FpdCBzaWd3YWl0aW5mbyBzbnByaW50ZiBzdHJmdGltZSBzdHJsY3B5IHN5bWxpbmthdCBzeW5jIFwKICBzeXNjb25mIHRjZ2V0cGdycCB0Y3NldHBncnAgdGVtcG5hbSB0aW1lZ20gdGltZXMgdG1wZmlsZSB0bXBuYW0gdG1wbmFtX3IgXAotIHRydW5jYXRlIHVuYW1lIHVuc2V0ZW52IHV0aW1lcyB3YWl0cGlkIHdhaXQzIHdhaXQ0IFwKLSB3Y3Njb2xsIHdjc2Z0aW1lIHdjc3hmcm0gX2dldHB0eQorIHRydW5jYXRlIHVuYW1lIHVubGlua2F0IHVuc2V0ZW52IHV0aW1lbnNhdCB1dGltZXMgd2FpdGlkIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAorIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSB3cml0ZXYgX2dldHB0eQogZG8gOgogICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKQEAgLTk2MjIsNiArMTAzNjAsMzEgQEAKIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZXBvbGxfY3JlYXRlMSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZXBvbGxfY3JlYXRlMS4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy9lcG9sbC5oPgoraW50CittYWluICgpCit7Cit2b2lkICp4PWVwb2xsX2NyZWF0ZTEKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0VQT0xMX0NSRUFURTEgMSIgPj5jb25mZGVmcy5oCisKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBrcXVldWUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGtxdWV1ZS4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTA1OTYsNiArMTEzNTksMTI1IEBACiBkb25lCiAKIAorZm9yIGFjX2Z1bmMgaW4gY2xvY2tfZ2V0dGltZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJjbG9ja19nZXR0aW1lIiAiYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX2dldHRpbWUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEKK19BQ0VPRgorCitlbHNlCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja19nZXR0aW1lIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX2dldHRpbWUgaW4gLWxydC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scnQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGNsb2NrX2dldHRpbWUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9ja19nZXR0aW1lICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lPXllcworZWxzZQorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID0geHllczsgdGhlbiA6CisKKyAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEiID4+Y29uZmRlZnMuaAorCisKKyRhc19lY2hvICIjZGVmaW5lIFRJTUVNT0RVTEVfTElCIHJ0IiA+PmNvbmZkZWZzLmgKKworCitmaQorCisKK2ZpCitkb25lCisKKworZm9yIGFjX2Z1bmMgaW4gY2xvY2tfZ2V0cmVzCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImNsb2NrX2dldHJlcyIgImFjX2N2X2Z1bmNfY2xvY2tfZ2V0cmVzIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX2dldHJlcyIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0NMT0NLX0dFVFJFUyAxCitfQUNFT0YKKworZWxzZQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY2xvY2tfZ2V0cmVzIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX2dldHJlcyBpbiAtbHJ0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9ydF9jbG9ja19nZXRyZXMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHJ0ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBjbG9ja19nZXRyZXMgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9ja19nZXRyZXMgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcz15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfY2xvY2tfZ2V0cmVzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9ydF9jbG9ja19nZXRyZXMiID0geHllczsgdGhlbiA6CisKKyAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19HRVRSRVMgMSIgPj5jb25mZGVmcy5oCisKKworZmkKKworCitmaQorZG9uZQorCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ham9yIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWpvci4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTA2NzMsNyArMTE1NTUsMTIgQEAKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorCitpZiB0ZXN0ICIke2VuYWJsZV9pcHY2K3NldH0iID0gc2V0OyB0aGVuCisgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPSJubyAtLSBjb25maWd1cmVkIHdpdGggLS0oZW58ZGlzKWFibGUtaXB2NiIKK2Vsc2UKICAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89eWVzCitmaQogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCkBAIC0xMDc4MSw3ICsxMTY2OCw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8iID4mNjsgfQogCi1pZiB0ZXN0ICRoYXZlX2dldGFkZHJpbmZvID0gbm8gLW8gIiRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPSB5ZXMKK2lmIHRlc3QgJGhhdmVfZ2V0YWRkcmluZm8gPSBubyB8fCB0ZXN0ICIkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8iID0geWVzCiB0aGVuCiAJaWYgdGVzdCAkaXB2NiA9IHllcwogCXRoZW4KQEAgLTExNzUwLDYgKzEyNjM3LDQwIEBACiBmaQogCiAKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKiBDaGVjayBmb3IgZ2NjIHg2NCBpbmxpbmUgYXNzZW1ibGVyICoKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXIuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJtb3ZxICVyY3gsICVyYXgiKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfZ2NjX2FzbV9mb3JfeDY0PXllcworZWxzZQorICBoYXZlX2djY19hc21fZm9yX3g2ND1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2djY19hc21fZm9yX3g2NCIgPiY1CiskYXNfZWNobyAiJGhhdmVfZ2NjX2FzbV9mb3JfeDY0IiA+JjY7IH0KK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g2NCIgPSB5ZXMKK3RoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9HQ0NfQVNNX0ZPUl9YNjQgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICMgKiBDaGVjayBmb3IgdmFyaW91cyBwcm9wZXJ0aWVzIG9mIGZsb2F0aW5nIHBvaW50ICoKICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEyMDAwLDcgKzEyOTIxLDcgQEAKIGZpCiBkb25lCiAKLWZvciBhY19mdW5jIGluIGh5cG90IGxnYW1tYSBsb2cxcCByb3VuZCB0Z2FtbWEKK2ZvciBhY19mdW5jIGluIGh5cG90IGxnYW1tYSBsb2cxcCBsb2cyIHJvdW5kIHRnYW1tYQogZG8gOgogICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKQEAgLTEyNDA3LDY1ICsxMzMyOCwxOSBAQAogJGFzX2VjaG8gIiRhY19jdl93Y2hhcl90X3NpZ25lZCIgPiY2OyB9CiBmaQogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoYXQgdHlwZSB0byB1c2UgZm9yIHN0ciIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGF0IHR5cGUgdG8gdXNlIGZvciBzdHIuLi4gIiA+JjY7IH0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC13aWRlLXVuaWNvZGUgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3dpZGVfdW5pY29kZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfd2lkZV91bmljb2RlOwotaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vCi10aGVuIHVuaWNvZGVfc2l6ZT0iNCIKLWVsc2UgdW5pY29kZV9zaXplPSIyIgotZmkKLQotZWxzZQotCi1jYXNlICIkaGF2ZV91Y3M0X3RjbCIgaW4KLSAgeWVzKSB1bmljb2RlX3NpemU9IjQiOzsKLSAgKikgICB1bmljb2RlX3NpemU9IjIiIDs7Ci1lc2FjCi0KLWZpCi0KLQotCi1jYXNlICIkdW5pY29kZV9zaXplIiBpbgotICA0KQotICAgICAkYXNfZWNobyAiI2RlZmluZSBQeV9VTklDT0RFX1NJWkUgNCIgPj5jb25mZGVmcy5oCi0KLSAgICAgQUJJRkxBR1M9IiR7QUJJRkxBR1N9dSIKLSAgICAgOzsKLSAgKikgJGFzX2VjaG8gIiNkZWZpbmUgUHlfVU5JQ09ERV9TSVpFIDIiID4+Y29uZmRlZnMuaAotIDs7Ci1lc2FjCi0KLQotCiAjIHdjaGFyX3QgaXMgb25seSB1c2FibGUgaWYgaXQgbWFwcyB0byBhbiB1bnNpZ25lZCB0eXBlCi1pZiB0ZXN0ICIkdW5pY29kZV9zaXplIiA9ICIkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiIFwKK2lmIHRlc3QgIiRhY19jdl9zaXplb2Zfd2NoYXJfdCIgLWdlIDIgXAogICAgICAgICAgIC1hICIkYWNfY3Zfd2NoYXJfdF9zaWduZWQiID0gIm5vIgogdGhlbgotICBQWV9VTklDT0RFX1RZUEU9IndjaGFyX3QiCisgIEhBVkVfVVNBQkxFX1dDSEFSX1Q9InllcyIKIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9VU0FCTEVfV0NIQVJfVCAxIiA+PmNvbmZkZWZzLmgKIAotICAkYXNfZWNobyAiI2RlZmluZSBQWV9VTklDT0RFX1RZUEUgd2NoYXJfdCIgPj5jb25mZGVmcy5oCi0KLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9zaG9ydCIgPSAiJHVuaWNvZGVfc2l6ZSIKLXRoZW4KLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJ1bnNpZ25lZCBzaG9ydCIKLSAgICAgJGFzX2VjaG8gIiNkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIHVuc2lnbmVkIHNob3J0IiA+PmNvbmZkZWZzLmgKLQotZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2xvbmciID0gIiR1bmljb2RlX3NpemUiCi10aGVuCi0gICAgIFBZX1VOSUNPREVfVFlQRT0idW5zaWduZWQgbG9uZyIKLSAgICAgJGFzX2VjaG8gIiNkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIHVuc2lnbmVkIGxvbmciID4+Y29uZmRlZnMuaAotCiBlbHNlCi0gICAgIFBZX1VOSUNPREVfVFlQRT0ibm8gdHlwZSBmb3VuZCIKKyAgSEFWRV9VU0FCTEVfV0NIQVJfVD0ibm8gdXNhYmxlIHdjaGFyX3QgZm91bmQiCiBmaQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRQWV9VTklDT0RFX1RZUEUiID4mNQotJGFzX2VjaG8gIiRQWV9VTklDT0RFX1RZUEUiID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRIQVZFX1VTQUJMRV9XQ0hBUl9UIiA+JjUKKyRhc19lY2hvICIkSEFWRV9VU0FCTEVfV0NIQVJfVCIgPiY2OyB9CiAKICMgY2hlY2sgZm9yIGVuZGlhbm5lc3MKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgYnl0ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4iID4mNQpAQCAtMTI4NDgsNyArMTM3MjMsNyBAQAogcHlfY3ZfbGliX3JlYWRsaW5lPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBsaW5rIHJlYWRsaW5lIGxpYnMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGxpbmsgcmVhZGxpbmUgbGlicy4uLiAiID4mNjsgfQotZm9yIHB5X2xpYnRlcm1jYXAgaW4gIiIgbmN1cnNlc3cgbmN1cnNlcyBjdXJzZXMgdGVybWNhcDsgZG8KK2ZvciBweV9saWJ0ZXJtY2FwIGluICIiIHRpbmZvIG5jdXJzZXN3IG5jdXJzZXMgY3Vyc2VzIHRlcm1jYXA7IGRvCiAgIGlmIHRlc3QgLXogIiRweV9saWJ0ZXJtY2FwIjsgdGhlbgogICAgIFJFQURMSU5FX0xJQlM9Ii1scmVhZGxpbmUiCiAgIGVsc2UKQEAgLTEzNDc4LDYgKzE0MzUzLDggQEAKIAogZmkKIAorYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKICMgT24gSFAvVVggMTEuMCwgbXZ3ZGVsY2ggaXMgYSBibG9jayB3aXRoIGEgcmV0dXJuIHN0YXRlbWVudAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIG12d2RlbGNoIGlzIGFuIGV4cHJlc3Npb24iID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBtdndkZWxjaCBpcyBhbiBleHByZXNzaW9uLi4uICIgPiY2OyB9CkBAIC0xMzYzMSwzNSArMTQ1MDgsNzYgQEAKIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIyBsYXN0IGN1cnNlcyBjb25maWd1cmUgY2hlY2sKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRldmljZSBmaWxlcyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBjaGVja2luZyBmb3IgZGV2aWNlIGZpbGVzIiA+JjY7fQorCitpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSB4eWVzOyB0aGVuCisgIGlmIHRlc3QgIiR7YWNfY3ZfZmlsZV9fZGV2X3B0bXgrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdG14IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAvZGV2L3B0bXguLi4gIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm90IHNldCIgPiY1CiskYXNfZWNobyAibm90IHNldCIgPiY2OyB9CisgICAgYXNfZm5fZXJyb3IgJD8gInNldCBhY19jdl9maWxlX19kZXZfcHRteCB0byB5ZXMvbm8gaW4geW91ciBDT05GSUdfU0lURSBmaWxlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQorICBmaQorICBpZiB0ZXN0ICIke2FjX2N2X2ZpbGVfX2Rldl9wdGMrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdGMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC9kZXYvcHRjLi4uICIgPiY2OyB9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vdCBzZXQiID4mNQorJGFzX2VjaG8gIm5vdCBzZXQiID4mNjsgfQorICAgIGFzX2ZuX2Vycm9yICQ/ICJzZXQgYWNfY3ZfZmlsZV9fZGV2X3B0YyB0byB5ZXMvbm8gaW4geW91ciBDT05GSUdfU0lURSBmaWxlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQorICBmaQorZmkKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdG14IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAvZGV2L3B0bXguLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZmlsZV9fZGV2X3B0bXgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyAmJgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNoZWNrIGZvciBmaWxlIGV4aXN0ZW5jZSB3aGVuIGNyb3NzIGNvbXBpbGluZyIgIiRMSU5FTk8iIDUKK2lmIHRlc3QgLXIgIi9kZXYvcHRteCI7IHRoZW4KKyAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzCitlbHNlCisgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PW5vCitmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZmlsZV9fZGV2X3B0bXgiID4mNQorJGFzX2VjaG8gIiRhY19jdl9maWxlX19kZXZfcHRteCIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdG14IiA9IHh5ZXM7IHRoZW4gOgogCi1pZiB0ZXN0IC1yIC9kZXYvcHRteAotdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkKKworaWYgdGVzdCAieCRhY19jdl9maWxlX19kZXZfcHRteCIgPSB4eWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfREVWX1BUTVggMSIgPj5jb25mZGVmcy5oCiAKLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9CiBmaQotCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAvZGV2L3B0YyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgL2Rldi9wdGMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZmlsZV9fZGV2X3B0Yys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY2hlY2sgZm9yIGZpbGUgZXhpc3RlbmNlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQoraWYgdGVzdCAtciAiL2Rldi9wdGMiOyB0aGVuCisgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9eWVzCitlbHNlCisgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8KK2ZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9maWxlX19kZXZfcHRjIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZmlsZV9fZGV2X3B0YyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdGMiID0geHllczsgdGhlbiA6CiAKLWlmIHRlc3QgLXIgL2Rldi9wdGMKLXRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KK2ZpCisKK2lmIHRlc3QgIngkYWNfY3ZfZmlsZV9fZGV2X3B0YyIgPSB4eWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfREVWX1BUQyAxIiA+PmNvbmZkZWZzLmgKIAotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKIGlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKQEAgLTEzNjcwLDcgKzE0NTg4LDM2IEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vCisgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD0iY3Jvc3MgLS0gYXNzdW1pbmcgbm8iCisgICBpZiB0ZXN0IHgkR0NDID0geHllczsgdGhlbgorICAgIHNhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciAtV2Zvcm1hdCIKKyAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CisgICAgICAgICNpbmNsdWRlIDxzdGRkZWYuaD4KKworaW50CittYWluICgpCit7CisKKyAgICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpMTIzKTsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMyk7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMyk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICBDRkxBR1M9JHNhdmVfQ0ZMQUdTCisgICBmaQogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCkBAIC0xMzg1OCw0OSArMTQ4MDUsNiBAQAogCiBmaQogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X2NvbXB1dGVkX2dvdG9zKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgotICBhY19jdl9jb21wdXRlZF9nb3Rvcz1ubwotZWxzZQotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLXsKLSAgICBzdGF0aWMgdm9pZCAqdGFyZ2V0c1sxXSA9IHsgJiZMQUJFTDEgfTsKLSAgICBnb3RvIExBQkVMMjsKLUxBQkVMMToKLSAgICByZXR1cm4gMDsKLUxBQkVMMjoKLSAgICBnb3RvICp0YXJnZXRzWzBdOwotICAgIHJldHVybiAxOwotfQotCi1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9jb21wdXRlZF9nb3Rvcz15ZXMKLWVsc2UKLSAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KLWZpCi1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0Ci1maQotCi1maQotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID4mNjsgfQotaWYgdGVzdCAiJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiA9IHllcwotdGhlbgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0NPTVBVVEVEX0dPVE9TIDEiID4+Y29uZmRlZnMuaAotCi1maQotCiAjIENoZWNrIGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1jb21wdXRlZC1nb3RvcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLWNvbXB1dGVkLWdvdG9zLi4uICIgPiY2OyB9CkBAIC0xMzkzMSw2ICsxNDgzNSw1MiBAQAogZmkKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2NvbXB1dGVkX2dvdG9zKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBpZiB0ZXN0ICIke3dpdGhfY29tcHV0ZWRfZ290b3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPSIkd2l0aF9jb21wdXRlZF9nb3RvcyAtLSBjb25maWd1cmVkIC0td2l0aChvdXQpLWNvbXB1dGVkLWdvdG9zIgorIGVsc2UKKyAgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPW5vCisgZmkKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgc3RhdGljIHZvaWQgKnRhcmdldHNbMV0gPSB7ICYmTEFCRUwxIH07CisgICAgZ290byBMQUJFTDI7CitMQUJFTDE6CisgICAgcmV0dXJuIDA7CitMQUJFTDI6CisgICAgZ290byAqdGFyZ2V0c1swXTsKKyAgICByZXR1cm4gMTsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9eWVzCitlbHNlCisgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPW5vCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jb21wdXRlZF9nb3RvcyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiA+JjY7IH0KK2Nhc2UgIiRhY19jdl9jb21wdXRlZF9nb3RvcyIgaW4geWVzKikKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DT01QVVRFRF9HT1RPUyAxIiA+PmNvbmZkZWZzLmgKKworZXNhYworCiBjYXNlICRhY19zeXNfc3lzdGVtIGluCiBBSVgqKQogCkBAIC0xMzkzOSwxOCArMTQ4ODksNiBAQAogZXNhYwogCiAKLWNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSAgT1NGKikgYXNfZm5fZXJyb3IgJD8gIk9TRiogc3lzdGVtcyBhcmUgZGVwcmVjYXRlZCB1bmxlc3Mgc29tZWJvZHkgdm9sdW50ZWVycy4gQ2hlY2sgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTg2MDYiICIkTElORU5PIiA1IDs7Ci1lc2FjCi0KLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInBpcGUyIiAiYWNfY3ZfZnVuY19waXBlMiIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19waXBlMiIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9QSVBFMiAxIiA+PmNvbmZkZWZzLmgKLQotZmkKLQotCiAKIAogZm9yIGggaW4gYChjZCAkc3JjZGlyO2VjaG8gUHl0aG9uL3RocmVhZF8qLmgpYApAQCAtMTM5NzAsNiArMTQ5MDgsMTM2IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogZG9uZSIgPiY1CiAkYXNfZWNobyAiZG9uZSIgPiY2OyB9CiAKKyMgQXZhaWxhYmlsaXR5IG9mIC1PMjoKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1PMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgLU8yLi4uICIgPiY2OyB9CitzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCitDRkxBR1M9Ii1PMiIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfTzI9eWVzCitlbHNlCisgIGhhdmVfTzI9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9PMiIgPiY1CiskYXNfZWNobyAiJGhhdmVfTzIiID4mNjsgfQorQ0ZMQUdTPSIkc2F2ZWRfY2ZsYWdzIgorCisjIF9GT1JUSUZZX1NPVVJDRSB3cmFwcGVycyBmb3IgbWVtbW92ZSBhbmQgYmNvcHkgYXJlIGluY29ycmVjdDoKKyMgaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxMC0xMi9tc2cwMDAwOS5odG1sCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBnbGliYyBfRk9SVElGWV9TT1VSQ0UvbWVtbW92ZSBidWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdsaWJjIF9GT1JUSUZZX1NPVVJDRS9tZW1tb3ZlIGJ1Zy4uLiAiID4mNjsgfQorc2F2ZWRfY2ZsYWdzPSIkQ0ZMQUdTIgorQ0ZMQUdTPSItTzIgLURfRk9SVElGWV9TT1VSQ0U9MiIKK2lmIHRlc3QgIiRoYXZlX08yIiA9IG5vOyB0aGVuCisgICAgQ0ZMQUdTPSIiCitmaQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBoYXZlX2dsaWJjX21lbW1vdmVfYnVnPXVuZGVmaW5lZAorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgordm9pZCBmb28odm9pZCAqcCwgdm9pZCAqcSkgeyBtZW1tb3ZlKHAsIHEsIDE5KTsgfQoraW50IG1haW4oKSB7CisgIGNoYXIgYVszMl0gPSAiMTIzNDU2Nzg5MDAwMDAwMDAwIjsKKyAgZm9vKCZhWzldLCBhKTsKKyAgaWYgKHN0cmNtcChhLCAiMTIzNDU2Nzg5MTIzNDU2Nzg5MDAwMDAwMDAwIikgIT0gMCkKKyAgICByZXR1cm4gMTsKKyAgZm9vKGEsICZhWzldKTsKKyAgaWYgKHN0cmNtcChhLCAiMTIzNDU2Nzg5MDAwMDAwMDAwIikgIT0gMCkKKyAgICByZXR1cm4gMTsKKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfZ2xpYmNfbWVtbW92ZV9idWc9bm8KK2Vsc2UKKyAgaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz15ZXMKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID4mNQorJGFzX2VjaG8gIiRoYXZlX2dsaWJjX21lbW1vdmVfYnVnIiA+JjY7IH0KK2lmIHRlc3QgIiRoYXZlX2dsaWJjX21lbW1vdmVfYnVnIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0dMSUJDX01FTU1PVkVfQlVHIDEiID4+Y29uZmRlZnMuaAorCitmaQorCitpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl94ODciID0geWVzOyB0aGVuCisgICAgIyBTb21lIHZlcnNpb25zIG9mIGdjYyBtaXNjb21waWxlIGlubGluZSBhc206CisgICAgIyBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQ2NDkxCisgICAgIyBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLzIwMTAtMTEvbXNnMDAzNjYuaHRtbAorICAgIGNhc2UgJENDIGluCisgICAgICAgICpnY2MqKQorICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ2NjIGlwYS1wdXJlLWNvbnN0IGJ1ZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ2NjIGlwYS1wdXJlLWNvbnN0IGJ1Zy4uLiAiID4mNjsgfQorICAgICAgICAgICAgc2F2ZWRfY2ZsYWdzPSIkQ0ZMQUdTIgorICAgICAgICAgICAgQ0ZMQUdTPSItTzIiCisgICAgICAgICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnPXVuZGVmaW5lZAorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgaW50CisgICAgICAgICAgICBmb28oaW50ICpwKSB7CisgICAgICAgICAgICAgIGludCByOworICAgICAgICAgICAgICBhc20gKCAibW92bCBcJDYsICglMSlcblx0IgorICAgICAgICAgICAgICAgICAgICAieG9ybCAlMCwgJTBcblx0IgorICAgICAgICAgICAgICAgICAgICA6ICI9ciIgKHIpIDogInIiIChwKSA6ICJtZW1vcnkiCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IG1haW4oKSB7CisgICAgICAgICAgICAgIGludCBwID0gODsKKyAgICAgICAgICAgICAgaWYgKChmb28oJnApID8gOiBwKSAhPSA2KQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9bm8KK2Vsc2UKKyAgaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9eWVzCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworICAgICAgICAgICAgQ0ZMQUdTPSIkc2F2ZWRfY2ZsYWdzIgorICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2lwYV9wdXJlX2NvbnN0X2J1ZyIgPiY1CiskYXNfZWNobyAiJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA+JjY7IH0KKyAgICAgICAgICAgIGlmIHRlc3QgIiRoYXZlX2lwYV9wdXJlX2NvbnN0X2J1ZyIgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JUEFfUFVSRV9DT05TVF9CVUcgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgZXNhYworZmkKKwogIyBnZW5lcmF0ZSBvdXRwdXQgZmlsZXMKIGFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZS5wcmUgTW9kdWxlcy9TZXR1cC5jb25maWcgTWlzYy9weXRob24ucGMiCiAKQEAgLTE0NDk0LDcgKzE1NTYyLDcgQEAKICMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgogIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KIGFjX2xvZz0iCi1UaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy4yLCB3aGljaCB3YXMKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjMsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwpAQCAtMTQ1NTYsNyArMTU2MjQsNyBAQAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBhY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgIgogYWNfY3NfdmVyc2lvbj0iXFwKLXB5dGhvbiBjb25maWcuc3RhdHVzIDMuMgorcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy4zCiBjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgsCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCkBAIC0xNDU2Nyw2ICsxNTYzNSw3IEBACiBhY19wd2Q9JyRhY19wd2QnCiBzcmNkaXI9JyRzcmNkaXInCiBJTlNUQUxMPSckSU5TVEFMTCcKK01LRElSX1A9JyRNS0RJUl9QJwogdGVzdCAtbiAiXCRBV0siIHx8IEFXSz1hd2sKIF9BQ0VPRgogCkBAIC0xNTEzNCw2ICsxNjIwMywxMSBAQAogICBbXFwvJF0qIHwgPzpbXFwvXSogKSBhY19JTlNUQUxMPSRJTlNUQUxMIDs7CiAgICopIGFjX0lOU1RBTEw9JGFjX3RvcF9idWlsZF9wcmVmaXgkSU5TVEFMTCA7OwogICBlc2FjCisgIGFjX01LRElSX1A9JE1LRElSX1AKKyAgY2FzZSAkTUtESVJfUCBpbgorICBbXFwvJF0qIHwgPzpbXFwvXSogKSA7OworICAqLyopIGFjX01LRElSX1A9JGFjX3RvcF9idWlsZF9wcmVmaXgkTUtESVJfUCA7OworICBlc2FjCiBfQUNFT0YKIAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQpAQCAtMTUxODgsNiArMTYyNjIsNyBAQAogcyZAYWJzX2J1aWxkZGlyQCYkYWNfYWJzX2J1aWxkZGlyJjt0IHQKIHMmQGFic190b3BfYnVpbGRkaXJAJiRhY19hYnNfdG9wX2J1aWxkZGlyJjt0IHQKIHMmQElOU1RBTExAJiRhY19JTlNUQUxMJjt0IHQKK3MmQE1LRElSX1BAJiRhY19NS0RJUl9QJjt0IHQKICRhY19kYXRhcm9vdGRpcl9oYWNrCiAiCiBldmFsIHNlZCBcIlwkYWNfc2VkX2V4dHJhXCIgIiRhY19maWxlX2lucHV0cyIgfCAkQVdLIC1mICIkYWNfdG1wL3N1YnMuYXdrIiBcCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMTM4ZDU2Mi4uZTNmNWI5NiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMywyMiArMyw1OSBAQAogZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKICMgU2V0IFZFUlNJT04gc28gd2Ugb25seSBuZWVkIHRvIGVkaXQgaW4gb25lIHBsYWNlIChpLmUuLCBoZXJlKQotbTRfZGVmaW5lKFBZVEhPTl9WRVJTSU9OLCAzLjIpCittNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuMykKIAotZG5sIFNvbWUgbTQgbWFnaWMgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZ2VuZXJhdGVkCi1kbmwgYnkgdGhlIGNvcnJlY3QgYXV0b2NvbmYgdmVyc2lvbi4KLW00X2RlZmluZShbdmVyc2lvbl9yZXF1aXJlZF0sCi1bbTRfaWYobTRfdmVyc2lvbl9jb21wYXJlKG00X2RlZm4oW200X1BBQ0tBR0VfVkVSU0lPTl0pLCBbJDFdKSwgMCwKLSAgICAgICBbXSwKLSAgICAgICBbbTRfZmF0YWwoW0F1dG9jb25mIHZlcnNpb24gJDEgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbl0sIDYzKV0pCi1dKQogQUNfUFJFUkVRKDIuNjUpCiAKLUFDX1JFVklTSU9OKCRSZXZpc2lvbiQpCiBBQ19JTklUKHB5dGhvbiwgUFlUSE9OX1ZFUlNJT04sIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvKQorCitBQ19TVUJTVChIR1ZFUlNJT04pCitBQ19TVUJTVChIR1RBRykKK0FDX1NVQlNUKEhHQlJBTkNIKQorCitpZiB0ZXN0IC1lICRzcmNkaXIvLmhnL2RpcnN0YXRlCit0aGVuCitBQ19DSEVDS19QUk9HKEhBU19IRywgaGcsIGZvdW5kLCBub3QtZm91bmQpCitlbHNlCitIQVNfSEc9bm8tcmVwb3NpdG9yeQorZmkKK2lmIHRlc3QgJEhBU19IRyA9IGZvdW5kCit0aGVuCisgICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgorICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgorICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgorZWxzZQorICAgIEhHVkVSU0lPTj0iIgorICAgIEhHVEFHPSIiCisgICAgSEdCUkFOQ0g9IiIKK2ZpCisKIEFDX0NPTkZJR19TUkNESVIoW0luY2x1ZGUvb2JqZWN0LmhdKQogQUNfQ09ORklHX0hFQURFUihweWNvbmZpZy5oKQogCitBQ19DQU5PTklDQUxfSE9TVAorCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHB5dGhvbiBpbnRlcnByZXRlciBmb3IgY3Jvc3MgYnVpbGRdKQorICAgIGlmIHRlc3QgLXogIiRQWVRIT05fRk9SX0JVSUxEIjsgdGhlbgorICAgICAgICBmb3IgaW50ZXJwIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob247IGRvCisJICAgIHdoaWNoICRpbnRlcnAgPi9kZXYvbnVsbCAyPiYxIHx8IGNvbnRpbnVlCisJICAgIGlmICRpbnRlcnAgLWMgJ2ltcG9ydCBzeXM7c3lzLmV4aXQobm90IHN5cy52ZXJzaW9uX2luZm9APDpAOjJAOj5AID49ICgzLDMpKSc7IHRoZW4KKwkgICAgICAgIGJyZWFrCisJICAgIGZpCisgICAgICAgICAgICBpbnRlcnA9CisJZG9uZQorICAgICAgICBpZiB0ZXN0IHgkaW50ZXJwID0geDsgdGhlbgorCSAgICBBQ19NU0dfRVJST1IoW3B5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kXSkKKwlmaQorICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCisJUFlUSE9OX0ZPUl9CVUlMRD0iX1BZVEhPTl9QUk9KRUNUX0JBU0U9JHNyY2RpciInIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvcGxhdC0kKE1BQ0hERVApICckaW50ZXJwCisgICAgZmkKK2Vsc2UKKyAgICBQWVRIT05fRk9SX0JVSUxEPScuLyQoQlVJTERQWVRIT04pIC1FJworZmkKK0FDX1NVQlNUKFBZVEhPTl9GT1JfQlVJTEQpCisKIGRubCBFbnN1cmUgdGhhdCBpZiBwcmVmaXggaXMgc3BlY2lmaWVkLCBpdCBkb2VzIG5vdCBlbmQgaW4gYSBzbGFzaC4gSWYKIGRubCBpdCBkb2VzLCB3ZSBnZXQgcGF0aCBuYW1lcyBjb250YWluaW5nICcvLycgd2hpY2ggaXMgYm90aCB1Z2x5IGFuZAogZG5sIGNhbiBjYXVzZSB0cm91YmxlLgpAQCAtODgsMTQgKzEyNSwyMCBAQAogCiBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAtLWVuYWJsZS11bml2ZXJzYWxzZGtdKQogQUNfQVJHX0VOQUJMRSh1bml2ZXJzYWxzZGssCi0JQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXVuaXZlcnNhbHNka0A8OkA9U0RLRElSQDo+QF0sIFtCdWlsZCBhZ2FpbnN0IE1hYyBPUyBYIDEwLjR1IFNESyAocHBjL2kzODYpXSksCisJQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXVuaXZlcnNhbHNka0A8OkA9U0RLRElSQDo+QF0sIFtCdWlsZCBmYXQgYmluYXJ5IGFnYWluc3QgTWFjIE9TIFggU0RLXSksCiBbCiAJY2FzZSAkZW5hYmxldmFsIGluCiAJeWVzKQotCQllbmFibGV2YWw9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkawotCQlpZiB0ZXN0ICEgLWQgIiR7ZW5hYmxldmFsfSIKKwkJIyBMb2NhdGUgdGhlIGJlc3QgdXNhYmxlIFNESywgc2VlIE1hYy9SRUFETUUudHh0IGZvciBtb3JlCisJCSMgaW5mb3JtYXRpb24KKwkJZW5hYmxldmFsPSJgL3Vzci9iaW4veGNvZGVidWlsZCAtdmVyc2lvbiAtc2RrIG1hY29zeCBQYXRoIDI+L2Rldi9udWxsYCIKKwkJaWYgdGVzdCAteiAiJHtlbmFibGV2YWx9IgogCQl0aGVuCi0JCQllbmFibGV2YWw9LworCQkJZW5hYmxldmFsPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsKKwkJCWlmIHRlc3QgISAtZCAiJHtlbmFibGV2YWx9IgorCQkJdGhlbgorCQkJCWVuYWJsZXZhbD0vCisJCQlmaQogCQlmaQogCQk7OwogCWVzYWMKQEAgLTEyNyw3ICsxNzAsMjAgQEAKIAogQUNfU1VCU1QoQVJDSF9SVU5fMzJCSVQpCiAKKyMgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBwcmVmZXIgdG8gc2VsZWN0ICczMi1iaXQnIGlmIGF2YWlsYWJsZSwKKyMgb3RoZXJ3aXNlIHVzZSAnaW50ZWwnCiBVTklWRVJTQUxfQVJDSFM9IjMyLWJpdCIKK2lmIHRlc3QgImB1bmFtZSAtc2AiID0gIkRhcndpbiIKK3RoZW4KKwlpZiB0ZXN0IC1uICIke1VOSVZFUlNBTFNES30iCisJdGhlbgorCQlpZiB0ZXN0IC16ICJgL3Vzci9iaW4vZmlsZSAiJHtVTklWRVJTQUxTREt9L3Vzci9saWIvbGliU3lzdGVtLmR5bGliIiB8IGdyZXAgcHBjYCIKKwkJdGhlbgorCQkJVU5JVkVSU0FMX0FSQ0hTPSJpbnRlbCIKKwkJZmkKKwlmaQorZmkKKwogQUNfU1VCU1QoTElQT18zMkJJVF9GTEFHUykKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXVuaXZlcnNhbC1hcmNocykKIEFDX0FSR19XSVRIKHVuaXZlcnNhbC1hcmNocywKQEAgLTEzNyw3ICsxOTMsNyBAQAogCVVOSVZFUlNBTF9BUkNIUz0iJHdpdGh2YWwiCiBdLAogWwotIAlBQ19NU0dfUkVTVUxUKDMyLWJpdCkKKyAJQUNfTVNHX1JFU1VMVCgke1VOSVZFUlNBTF9BUkNIU30pCiBdKQogCiAKQEAgLTI3Niw2ICszMzIsMjUgQEAKIEFDX01TR19DSEVDS0lORyhNQUNIREVQKQogaWYgdGVzdCAteiAiJE1BQ0hERVAiCiB0aGVuCisgICAgIyBhdm9pZCB1c2luZyB1bmFtZSBmb3IgY3Jvc3MgYnVpbGRzCisgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgICAgICAjIGFjX3N5c19zeXN0ZW0gYW5kIGFjX3N5c19yZWxlYXNlIGFyZSBvbmx5IHVzZWQgZm9yIHNldHRpbmcKKyAgICAgICAjIGBkZWZpbmVfeG9wZW5fc291cmNlJyBpbiB0aGUgY2FzZSBzdGF0ZW1lbnQgYmVsb3cuIEZvciB0aGUKKyAgICAgICAjIGN1cnJlbnQgc3VwcG9ydGVkIGNyb3NzIGJ1aWxkcywgdGhpcyBtYWNybyBpcyBub3QgYWRqdXN0ZWQuCisJY2FzZSAiJGhvc3QiIGluCisJKi0qLWxpbnV4KikKKwkJYWNfc3lzX3N5c3RlbT1MaW51eAorCQk7OworCSotKi1jeWd3aW4qKQorCQlhY19zeXNfc3lzdGVtPUN5Z3dpbgorCQk7OworCSopCisJCSMgZm9yIG5vdywgbGltaXQgY3Jvc3MgYnVpbGRzIHRvIGtub3duIGNvbmZpZ3VyYXRpb25zCisJCU1BQ0hERVA9InVua25vd24iCisJCUFDX01TR19FUlJPUihbY3Jvc3MgYnVpbGQgbm90IHN1cHBvcnRlZCBmb3IgJGhvc3RdKQorCWVzYWMKKwlhY19zeXNfcmVsZWFzZT0KKyAgICBlbHNlCiAJYWNfc3lzX3N5c3RlbT1gdW5hbWUgLXNgCiAJaWYgdGVzdCAiJGFjX3N5c19zeXN0ZW0iID0gIkFJWCIgXAogCS1vICIkYWNfc3lzX3N5c3RlbSIgPSAiVW5peFdhcmUiIC1vICIkYWNfc3lzX3N5c3RlbSIgPSAiT3BlblVOSVgiOyB0aGVuCkBAIC0yODMsMTkgKzM1OCw0MyBAQAogCWVsc2UKIAkJYWNfc3lzX3JlbGVhc2U9YHVuYW1lIC1yYAogCWZpCi0JYWNfbWRfc3lzdGVtPWBlY2hvICRhY19zeXNfc3lzdGVtIHwKLQkJCSAgIHRyIC1kICdbLyBdJyB8IHRyICdbW0EtWl1dJyAnW1thLXpdXSdgCi0JYWNfbWRfcmVsZWFzZT1gZWNobyAkYWNfc3lzX3JlbGVhc2UgfAotCQkJICAgdHIgLWQgJ1svIF0nIHwgc2VkICdzL15bW0EtWl1dXC4vLycgfCBzZWQgJ3MvXC4uKi8vJ2AKLQlNQUNIREVQPSIkYWNfbWRfc3lzdGVtJGFjX21kX3JlbGVhc2UiCisgICAgZmkKKyAgICBhY19tZF9zeXN0ZW09YGVjaG8gJGFjX3N5c19zeXN0ZW0gfAorCQkJdHIgLWQgJ1svIF0nIHwgdHIgJ1tbQS1aXV0nICdbW2Etel1dJ2AKKyAgICBhY19tZF9yZWxlYXNlPWBlY2hvICRhY19zeXNfcmVsZWFzZSB8CisJCQl0ciAtZCAnWy8gXScgfCBzZWQgJ3MvXltbQS1aXV1cLi8vJyB8IHNlZCAncy9cLi4qLy8nYAorICAgIE1BQ0hERVA9IiRhY19tZF9zeXN0ZW0kYWNfbWRfcmVsZWFzZSIKIAotCWNhc2UgJE1BQ0hERVAgaW4KLQlsaW51eCopIE1BQ0hERVA9ImxpbnV4MiI7OworICAgIGNhc2UgJE1BQ0hERVAgaW4KKwlsaW51eCopIE1BQ0hERVA9ImxpbnV4Ijs7CiAJY3lnd2luKikgTUFDSERFUD0iY3lnd2luIjs7CiAJZGFyd2luKikgTUFDSERFUD0iZGFyd2luIjs7Ci0gICAgICAgIGlyaXg2NDYpIE1BQ0hERVA9ImlyaXg2Ijs7CisJaXJpeDY0NikgTUFDSERFUD0iaXJpeDYiOzsKIAknJykJTUFDSERFUD0idW5rbm93biI7OworICAgIGVzYWMKK2ZpCisKK0FDX1NVQlNUKF9QWVRIT05fSE9TVF9QTEFURk9STSkKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisJY2FzZSAiJGhvc3QiIGluCisJKi0qLWxpbnV4KikKKwkJY2FzZSAiJGhvc3RfY3B1IiBpbgorCQlhcm0qKQorCQkJX2hvc3RfY3B1PWFybQorCQkJOzsKKwkJKikKKwkJCV9ob3N0X2NwdT0kaG9zdF9jcHUKKwkJZXNhYworCQk7OworCSotKi1jeWd3aW4qKQorCQlfaG9zdF9jcHU9CisJCTs7CisJKikKKwkJIyBmb3Igbm93LCBsaW1pdCBjcm9zcyBidWlsZHMgdG8ga25vd24gY29uZmlndXJhdGlvbnMKKwkJTUFDSERFUD0idW5rbm93biIKKwkJQUNfTVNHX0VSUk9SKFtjcm9zcyBidWlsZCBub3Qgc3VwcG9ydGVkIGZvciAkaG9zdF0pCiAJZXNhYworCV9QWVRIT05fSE9TVF9QTEFURk9STT0iJE1BQ0hERVAke19ob3N0X2NwdTorLSRfaG9zdF9jcHV9IgogZmkKIAkKICMgU29tZSBzeXN0ZW1zIGNhbm5vdCBzdGFuZCBfWE9QRU5fU09VUkNFIGJlaW5nIGRlZmluZWQgYXQgYWxsOyB0aGV5CkBAIC0zODMsNyArNDgyLDggQEAKIAogaWYgdGVzdCAkZGVmaW5lX3hvcGVuX3NvdXJjZSA9IHllcwogdGhlbgotICBBQ19ERUZJTkUoX1hPUEVOX1NPVVJDRSwgNjAwLCAKKyAgIyBYL09wZW4gNywgaW5jb3Jwb3JhdGluZyBQT1NJWC4xLTIwMDgKKyAgQUNfREVGSU5FKF9YT1BFTl9TT1VSQ0UsIDcwMCwKICAgICAgICAgICAgIERlZmluZSB0byB0aGUgbGV2ZWwgb2YgWC9PcGVuIHRoYXQgeW91ciBzeXN0ZW0gc3VwcG9ydHMpCiAKICAgIyBPbiBUcnU2NCBVbml4IDQuMEYsIGRlZmluaW5nIF9YT1BFTl9TT1VSQ0UgYWxzbyByZXF1aXJlcwpAQCAtMzkzLDggKzQ5Myw3IEBACiAgIEFDX0RFRklORShfWE9QRU5fU09VUkNFX0VYVEVOREVELCAxLAogICAgCSAgICBEZWZpbmUgdG8gYWN0aXZhdGUgVW5peDk1LWFuZC1lYXJsaWVyIGZlYXR1cmVzKQogCi0gIEFDX0RFRklORShfUE9TSVhfQ19TT1VSQ0UsIDIwMDExMkwsIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElFRUUgU3RkcyAxMDAzLjEtMjAwMSkKLSAgCisgIEFDX0RFRklORShfUE9TSVhfQ19TT1VSQ0UsIDIwMDgwOUwsIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElFRUUgU3RkcyAxMDAzLjEtMjAwOCkKIGZpCiAKICMKQEAgLTQyMywxMCArNTIyLDYgQEAKIENPTkZJR1VSRV9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9CiBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPScjJwogCi1BQ19NU0dfQ0hFQ0tJTkcobWFjaGluZSB0eXBlIGFzIHJlcG9ydGVkIGJ5IHVuYW1lIC1tKQotYWNfc3lzX21hY2hpbmU9YHVuYW1lIC1tYAotQUNfTVNHX1JFU1VMVCgkYWNfc3lzX21hY2hpbmUpCi0KICMgY2hlY2tzIGZvciBhbHRlcm5hdGl2ZSBwcm9ncmFtcwogCiAjIGNvbXBpbGVyIGZsYWdzIGFyZSBnZW5lcmF0ZWQgaW4gdHdvIHNldHMsIEJBU0VDRkxBR1MgYW5kIE9QVC4gIE9QVCBpcyBqdXN0CkBAIC00NjksNiArNTY0LDYzIEBACiBpZiB0ZXN0IC16ICIkQ0ZMQUdTIjsgdGhlbgogICAgICAgICBDRkxBR1M9CiBmaQorCitpZiB0ZXN0ICIkYWNfc3lzX3N5c3RlbSIgPSAiRGFyd2luIgordGhlbgorCSMgQ29tcGlsZXIgc2VsZWN0aW9uIG9uIE1hY09TWCBpcyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4KKwkjIEFDX1BST0dfQ0MgY2FuIGhhbmRsZSwgc2VlIE1hYy9SRUFETUUudHh0IGZvciBtb3JlCisJIyBpbmZvcm1hdGlvbgorCWlmIHRlc3QgLXogIiR7Q0N9IgorCXRoZW4KKwkJZm91bmRfZ2NjPQorCQlmb3VuZF9jbGFuZz0KKwkJYXNfc2F2ZV9JRlM9JElGUzsgSUZTPToKKwkJZm9yIGFzX2RpciBpbiAkUEFUSAorCQlkbworCQkJSUZTPSRhc19zYXZlX0lGUworCQkJaWYgdGVzdCAteCAkYXNfZGlyL2djYzsgdGhlbgorCQkJCWlmIHRlc3QgLXogIiR7Zm91bmRfZ2NjfSI7IHRoZW4KKwkJCQkJZm91bmRfZ2NjPSRhc19kaXIvZ2NjCisJCQkJZmkKKwkJCWZpCisJCQlpZiB0ZXN0IC14ICRhc19kaXIvY2xhbmc7IHRoZW4KKwkJCQlpZiB0ZXN0IC16ICIke2ZvdW5kX2NsYW5nfSI7IHRoZW4KKwkJCQkJZm91bmRfY2xhbmc9JGFzX2Rpci9jbGFuZworCQkJCWZpCisJCQlmaQorCQlkb25lCisJCUlGUz0kYXNfc2F2ZV9JRlMKKworCQlpZiB0ZXN0IC1uICIkZm91bmRfZ2NjIiAtYSAtbiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQlpZiB0ZXN0IC1uICJgIiRmb3VuZF9nY2MiIC0tdmVyc2lvbiB8IGdyZXAgbGx2bS1nY2NgIgorCQkJdGhlbgorCQkJCUFDX01TR19OT1RJQ0UoW0RldGVjdGVkIGxsdm0tZ2NjLCBmYWxsaW5nIGJhY2sgdG8gY2xhbmddKQorCQkJCUNDPSIkZm91bmRfY2xhbmciCisJCQkJQ1hYPSIkZm91bmRfY2xhbmcrKyIKKwkJCWZpCisKKworCQllbGlmIHRlc3QgLXogIiRmb3VuZF9nY2MiIC1hIC1uICIkZm91bmRfY2xhbmciCisJCXRoZW4KKwkJCUFDX01TR19OT1RJQ0UoW05vIEdDQyBmb3VuZCwgdXNlIENMQU5HXSkKKwkJCUNDPSIkZm91bmRfY2xhbmciCisJCQlDWFg9IiRmb3VuZF9jbGFuZysrIgorCisJCWVsaWYgdGVzdCAteiAiJGZvdW5kX2djYyIgLWEgLXogIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJZm91bmRfY2xhbmc9YC91c3IvYmluL3hjcnVuIC1maW5kIGNsYW5nIDI+L2Rldi9udWxsYAorCQkJaWYgdGVzdCAtbiAiJHtmb3VuZF9jbGFuZ30iCisJCQl0aGVuCisJCQkJQUNfTVNHX05PVElDRShbVXNpbmcgY2xhbmcgZnJvbSBYY29kZS5hcHBdKQorCQkJCUNDPSIke2ZvdW5kX2NsYW5nfSIKKwkJCQlDWFg9ImAvdXNyL2Jpbi94Y3J1biAtZmluZCBjbGFuZysrYCIKKworCQkJIyBlbHNlOiB1c2UgZGVmYXVsdCBiZWhhdmlvdXIKKwkJCWZpCisJCWZpCisJZmkKK2ZpCiBBQ19QUk9HX0NDCiAKIEFDX1NVQlNUKENYWCkKQEAgLTUwMCw4ICs2NTIsOSBAQAogaWYgdGVzdCAteiAiJENYWCIKIHRoZW4KICAgICAgICAgY2FzZSAiJENDIiBpbgotICAgICAgICBnY2MpICAgIEFDX1BBVEhfUFJPRyhDWFgsIFtnKytdLCBbZysrXSwgW25vdGZvdW5kXSkgOzsKLSAgICAgICAgY2MpICAgICBBQ19QQVRIX1BST0coQ1hYLCBbYysrXSwgW2MrK10sIFtub3Rmb3VuZF0pIDs7CisgICAgICAgIGdjYykgICAgQUNfUEFUSF9UT09MKENYWCwgW2crK10sIFtnKytdLCBbbm90Zm91bmRdKSA7OworICAgICAgICBjYykgICAgIEFDX1BBVEhfVE9PTChDWFgsIFtjKytdLCBbYysrXSwgW25vdGZvdW5kXSkgOzsKKyAgICAgICAgY2xhbmd8Ki9jbGFuZykgICAgIEFDX1BBVEhfVE9PTChDWFgsIFtjbGFuZysrXSwgW2NsYW5nKytdLCBbbm90Zm91bmRdKSA7OwogICAgICAgICBlc2FjCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCiAJdGhlbgpAQCAtNTEwLDcgKzY2Myw3IEBACiBmaQogaWYgdGVzdCAteiAiJENYWCIKIHRoZW4KLQlBQ19DSEVDS19QUk9HUyhDWFgsICRDQ0MgYysrIGcrKyBnY2MgQ0MgY3h4IGNjKysgY2wsIG5vdGZvdW5kKQorCUFDX0NIRUNLX1RPT0xTKENYWCwgJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbCwgbm90Zm91bmQpCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCiAJdGhlbgogCQlDWFg9IiIKQEAgLTcwNCwyMiArODU3LDIzIEBACiAKIEFDX01TR19DSEVDS0lORyhmb3IgLS1lbmFibGUtcHJvZmlsaW5nKQogQUNfQVJHX0VOQUJMRShwcm9maWxpbmcsCi0gICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wcm9maWxpbmddLCBbZW5hYmxlIEMtbGV2ZWwgY29kZSBwcm9maWxpbmddKSwKLVthY19zYXZlX2NjPSIkQ0MiCi0gQ0M9IiRDQyAtcGciCi0gQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tpbnQgbWFpbigpIHsgcmV0dXJuIDA7IH1dXSldLAotICAgW2FjX2VuYWJsZV9wcm9maWxpbmc9InllcyJdLAotICAgW2FjX2VuYWJsZV9wcm9maWxpbmc9Im5vIl0sCi0gICBbYWNfZW5hYmxlX3Byb2ZpbGluZz0ibm8iXSkKLSBDQz0iJGFjX3NhdmVfY2MiXSkKLUFDX01TR19SRVNVTFQoJGFjX2VuYWJsZV9wcm9maWxpbmcpCisgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wcm9maWxpbmddLCBbZW5hYmxlIEMtbGV2ZWwgY29kZSBwcm9maWxpbmddKSkKK2lmIHRlc3QgIngkZW5hYmxlX3Byb2ZpbGluZyIgPSB4eWVzOyB0aGVuCisgIGFjX3NhdmVfY2M9IiRDQyIKKyAgQ0M9IiQoQ0MpIC1wZyIKKyAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbaW50IG1haW4oKSB7IHJldHVybiAwOyB9XV0pXSwKKyAgICBbXSwKKyAgICBbZW5hYmxlX3Byb2ZpbGluZz1ub10pCisgIENDPSIkYWNfc2F2ZV9jYyIKK2Vsc2UKKyAgZW5hYmxlX3Byb2ZpbGluZz1ubworZmkKK0FDX01TR19SRVNVTFQoJGVuYWJsZV9wcm9maWxpbmcpCiAKLWNhc2UgIiRhY19lbmFibGVfcHJvZmlsaW5nIiBpbgotICAgICJ5ZXMiKQotCUJBU0VDRkxBR1M9Ii1wZyAkQkFTRUNGTEFHUyIKLQlMREZMQUdTPSItcGcgJExERkxBR1MiCi0gICAgOzsKLWVzYWMKK2lmIHRlc3QgIngkZW5hYmxlX3Byb2ZpbGluZyIgPSB4eWVzOyB0aGVuCisgIEJBU0VDRkxBR1M9Ii1wZyAkQkFTRUNGTEFHUyIKKyAgTERGTEFHUz0iLXBnICRMREZMQUdTIgorZmkKIAogQUNfTVNHX0NIRUNLSU5HKExETElCUkFSWSkKIApAQCAtNzgzLDExICs5MzcsNiBAQAogCSAgQkxETElCUkFSWT0nLVdsLCtiLCQoTElCRElSKSAtTC4gLWxweXRob24kKExEVkVSU0lPTiknCiAJICBSVU5TSEFSRUQ9U0hMSUJfUEFUSD1gcHdkYDoke1NITElCX1BBVEh9CiAJICA7OwotICAgIE9TRiopCi0JICBMRExJQlJBUlk9J2xpYnB5dGhvbiQoTERWRVJTSU9OKS5zbycKLQkgIEJMRExJQlJBUlk9Jy1ycGF0aCAkKExJQkRJUikgLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwotCSAgUlVOU0hBUkVEPUxEX0xJQlJBUllfUEFUSD1gcHdkYDoke0xEX0xJQlJBUllfUEFUSH0KLQkgIDs7CiAgICAgRGFyd2luKikKICAgICAJTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuZHlsaWInCiAJQkxETElCUkFSWT0nLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwpAQCAtODA4LDExICs5NTcsMTUgQEAKICAgZXNhYwogZmkKIAoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKwlSVU5TSEFSRUQ9CitmaQorCiBBQ19NU0dfUkVTVUxUKCRMRExJQlJBUlkpCiAKIEFDX1BST0dfUkFOTElCCiBBQ19TVUJTVChBUikKLUFDX0NIRUNLX1BST0dTKEFSLCBhciBhYWwsIGFyKQorQUNfQ0hFQ0tfVE9PTFMoQVIsIGFyIGFhbCwgYXIpCiAKICMgdHdlYWsgQVJGTEFHUyBvbmx5IGlmIHRoZSB1c2VyIGRpZG4ndCBzZXQgaXQgb24gdGhlIGNvbW1hbmQgbGluZQogQUNfU1VCU1QoQVJGTEFHUykKQEAgLTgyMSwzNSArOTc0LDE1IEBACiAgICAgICAgIEFSRkxBR1M9InJjIgogZmkKIAotQUNfU1VCU1QoU1ZOVkVSU0lPTikKLUFDX0NIRUNLX1BST0coU1ZOVkVSU0lPTiwgc3ZudmVyc2lvbiwgZm91bmQsIG5vdC1mb3VuZCkKLWlmIHRlc3QgJFNWTlZFUlNJT04gPSBmb3VuZAotdGhlbgotCVNWTlZFUlNJT049InN2bnZlcnNpb24gXCQoc3JjZGlyKSIKLWVsc2UKLQlTVk5WRVJTSU9OPSJlY2hvIFVudmVyc2lvbmVkIGRpcmVjdG9yeSIKK0FDX0NIRUNLX1RPT0xTKFtSRUFERUxGXSwgW3JlYWRlbGZdLCBbOl0pCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgIGNhc2UgIiRSRUFERUxGIiBpbgorCXJlYWRlbGZ8OikKKwlBQ19NU0dfRVJST1IoW3JlYWRlbGYgZm9yIHRoZSBob3N0IGlzIHJlcXVpcmVkIGZvciBjcm9zcyBidWlsZHNdKQorCTs7CisgICAgZXNhYwogZmkKLQotQUNfU1VCU1QoSEdWRVJTSU9OKQotQUNfU1VCU1QoSEdUQUcpCi1BQ19TVUJTVChIR0JSQU5DSCkKLQotaWYgdGVzdCAtZSAkc3JjZGlyLy5oZy9kaXJzdGF0ZQotdGhlbgotQUNfQ0hFQ0tfUFJPRyhIQVNfSEcsIGhnLCBmb3VuZCwgbm90LWZvdW5kKQotZWxzZQotSEFTX0hHPW5vLXJlcG9zaXRvcnkKLWZpCi1pZiB0ZXN0ICRIQVNfSEcgPSBmb3VuZAotdGhlbgotICAgIEhHVkVSU0lPTj0iaGcgaWQgLWkgXCQoc3JjZGlyKSIKLSAgICBIR1RBRz0iaGcgaWQgLXQgXCQoc3JjZGlyKSIKLSAgICBIR0JSQU5DSD0iaGcgaWQgLWIgXCQoc3JjZGlyKSIKLWVsc2UKLSAgICBIR1ZFUlNJT049IiIKLSAgICBIR1RBRz0iIgotICAgIEhHQlJBTkNIPSIiCi1maQorQUNfU1VCU1QoUkVBREVMRikKIAogQUNfU1VCU1QoRElTQUJMRV9BU0RMR0VOKQogRElTQUJMRV9BU0RMR0VOPSIiCkBAIC04NjksNiArMTAwMiw3IEBACiAJZmkKIGVzYWMKIEFDX1BST0dfSU5TVEFMTAorQUNfUFJPR19NS0RJUl9QCiAKICMgTm90IGV2ZXJ5IGZpbGVzeXN0ZW0gc3VwcG9ydHMgaGFyZCBsaW5rcwogQUNfU1VCU1QoTE4pCkBAIC0xMDAzLDEwICsxMTM3LDMyIEBACiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtZm5vLXN0cmljdC1hbGlhc2luZyIKICAgICBmaQogCisgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHJlc3VsdCB3YXJuaW5nKQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVd1bnVzZWQtcmVzdWx0IC1XZXJyb3IiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcsCisgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICBbCisJICAgQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pCisJIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZz15ZXMKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPW5vCisJIF0pKQorICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nKQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcgPSB5ZXMKKyAgICB0aGVuCisgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV25vLXVudXNlZC1yZXN1bHQiCisgICAgZmkKKwogICAgICMgaWYgdXNpbmcgZ2NjIG9uIGFscGhhLCB1c2UgLW1pZWVlIHRvIGdldCAobmVhcikgZnVsbCBJRUVFIDc1NAogICAgICMgc3VwcG9ydC4gIFdpdGhvdXQgdGhpcywgdHJlYXRtZW50IG9mIHN1Ym5vcm1hbHMgZG9lc24ndCBmb2xsb3cKICAgICAjIHRoZSBzdGFuZGFyZC4KLSAgICBjYXNlICRhY19zeXNfbWFjaGluZSBpbgorICAgIGNhc2UgJGhvc3QgaW4KICAgICAgICAgIGFscGhhKikKICAgICAgICAgICAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtbWllZWUiCiAgICAgICAgICAgICAgICAgOzsKQEAgLTEwODAsNyArMTIzNiw5IEBACiAJICAgICMgQ2FsY3VsYXRlIHRoZSByaWdodCBkZXBsb3ltZW50IHRhcmdldCBmb3IgdGhpcyBidWlsZC4KIAkgICAgIwogCSAgICBjdXJfdGFyZ2V0PWBzd192ZXJzIC1wcm9kdWN0VmVyc2lvbiB8IHNlZCAncy9cKDEwXC5bWzAtOV1dKlwpLiovXDEvJ2AKLQkgICAgaWYgdGVzdCAke2N1cl90YXJnZXR9ICc+JyAxMC4yOyB0aGVuCisJICAgIGlmIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPicgMTAuMiAmJiBcCisJICAgICAgIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPCcgMTAuNgorCSAgICB0aGVuCiAJCSAgICBjdXJfdGFyZ2V0PTEwLjMKIAkJICAgIGlmIHRlc3QgJHtlbmFibGVfdW5pdmVyc2Fsc2RrfTsgdGhlbgogCQkJICAgIGlmIHRlc3QgIiR7VU5JVkVSU0FMX0FSQ0hTfSIgPSAiYWxsIjsgdGhlbgpAQCAtMTExOSw5ICsxMjc3LDYgQEAKIAkgICAgRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0nJwogCiAJICAgIDs7Ci0JT1NGKikKLQkgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLW1pZWVlIgotCSAgICA7OwogICAgIGVzYWMKICAgICA7OwogCkBAIC0xMTMwLDkgKzEyODUsNiBAQAogICAgIE9wZW5VTklYKnxVbml4V2FyZSopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLUsgcGVudGl1bSxob3N0LGlubGluZSxsb29wX3Vucm9sbCxhbGxvY2EgIgogCTs7Ci0gICAgT1NGKikKLQlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtaWVlZSAtc3RkIgotICAgIAk7OwogICAgIFNDT19TViopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWJlbGYgLUtpNDg2IC1EU0NPNSIKIAk7OwpAQCAtMTMzMywyMSArMTQ4NSw0MiBAQAogCiAjIGNoZWNrcyBmb3IgaGVhZGVyIGZpbGVzCiBBQ19IRUFERVJfU1REQworYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKIEFDX0NIRUNLX0hFQURFUlMoYXNtL3R5cGVzLmggY29uaW8uaCBjdXJzZXMuaCBkaXJlY3QuaCBkbGZjbi5oIGVycm5vLmggXAogZmNudGwuaCBncnAuaCBcCi1pZWVlZnAuaCBpby5oIGxhbmdpbmZvLmggbGliaW50bC5oIG5jdXJzZXMuaCBwb2xsLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCi1zaGFkb3cuaCBzaWduYWwuaCBzdGRpbnQuaCBzdHJvcHRzLmggdGVybWlvcy5oIHRocmVhZC5oIFwKK2llZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggbmN1cnNlcy5oIHByb2Nlc3MuaCBwdGhyZWFkLmggXAorc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdGRpbnQuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKIHVuaXN0ZC5oIHV0aW1lLmggXAotc3lzL2F1ZGlvaW8uaCBzeXMvYnNkdHR5Lmggc3lzL2Vwb2xsLmggc3lzL2V2ZW50Lmggc3lzL2ZpbGUuaCBzeXMvbG9hZGF2Zy5oIFwKLXN5cy9sb2NrLmggc3lzL21rZGV2Lmggc3lzL21vZGVtLmggXAotc3lzL3BhcmFtLmggc3lzL3BvbGwuaCBzeXMvc2VsZWN0Lmggc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggc3lzL3N0YXQuaCBcCi1zeXMvc3lzY2FsbC5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKLXN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBsaWJ1dGlsLmggXAotc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAorcG9sbC5oIHN5cy9kZXZwb2xsLmggc3lzL2Vwb2xsLmggc3lzL3BvbGwuaCBcCitzeXMvYXVkaW9pby5oIHN5cy94YXR0ci5oIHN5cy9ic2R0dHkuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIFwKK3N5cy9rZXJuX2NvbnRyb2wuaCBzeXMvbG9hZGF2Zy5oIHN5cy9sb2NrLmggc3lzL21rZGV2Lmggc3lzL21vZGVtLmggXAorc3lzL3BhcmFtLmggc3lzL3NlbGVjdC5oIHN5cy9zZW5kZmlsZS5oIHN5cy9zb2NrZXQuaCBzeXMvc3RhdHZmcy5oIFwKK3N5cy9zdGF0Lmggc3lzL3N5c2NhbGwuaCBzeXMvc3lzX2RvbWFpbi5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKK3N5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91aW8uaCBzeXMvdW4uaCBzeXMvdXRzbmFtZS5oIHN5cy93YWl0LmggcHR5LmggXAorbGlidXRpbC5oIHN5cy9yZXNvdXJjZS5oIG5ldHBhY2tldC9wYWNrZXQuaCBzeXNleGl0cy5oIGJsdWV0b290aC5oIFwKIGJsdWV0b290aC9ibHVldG9vdGguaCBsaW51eC90aXBjLmggc3Bhd24uaCB1dGlsLmgpCitDUFBGTEFHUz0kYWNfc2F2ZV9jcHBmbGFncwogQUNfSEVBREVSX0RJUkVOVAogQUNfSEVBREVSX01BSk9SCiAKKyMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCitBQ19DSEVDS19IRUFERVJTKFtuZXQvaWYuaF0sIFtdLCBbXSwKK1sjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBTVERDX0hFQURFUlMKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMgaWZkZWYgSEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKK10pCisKKwogIyBPbiBTb2xhcmlzLCB0ZXJtLmggcmVxdWlyZXMgY3Vyc2VzLmgKIEFDX0NIRUNLX0hFQURFUlModGVybS5oLCwsWwogI2lmZGVmIEhBVkVfQ1VSU0VTX0gKQEAgLTEzNjUsNiArMTUzOCwxMyBAQAogI2VuZGlmCiBdKQogCisjIE9uIExpbnV4LCBjYW4uaCBhbmQgY2FuL3Jhdy5oIHJlcXVpcmUgc3lzL3NvY2tldC5oCitBQ19DSEVDS19IRUFERVJTKGxpbnV4L2Nhbi5oIGxpbnV4L2Nhbi9yYXcuaCwsLFsKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorXSkKKwogIyBjaGVja3MgZm9yIHR5cGVkZWZzCiB3YXNfaXRfZGVmaW5lZD1ubwogQUNfTVNHX0NIRUNLSU5HKGZvciBjbG9ja190IGluIHRpbWUuaCkKQEAgLTEzNzMsNyArMTU1Myw2IEBACiBdKQogQUNfTVNHX1JFU1VMVCgkd2FzX2l0X2RlZmluZWQpCiAKLSMgQ2hlY2sgd2hldGhlciB1c2luZyBtYWtlZGV2IHJlcXVpcmVzIGRlZmluaW5nIF9PU0ZfU09VUkNFCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1ha2VkZXYpCiBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAjaWYgZGVmaW5lZChNQUpPUl9JTl9NS0RFVikKQEAgLTEzODYsMTkgKzE1NjUsNiBAQAogXV0sIFtbCiAgIG1ha2VkZXYoMCwgMCkgXV0pCiBdLFthY19jdl9oYXNfbWFrZWRldj15ZXNdLFthY19jdl9oYXNfbWFrZWRldj1ub10pCi1pZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gIm5vIjsgdGhlbgotICAgICMgd2UgZGlkbid0IGxpbmssIHRyeSBpZiBfT1NGX1NPVVJDRSB3aWxsIGFsbG93IHVzIHRvIGxpbmsKLSAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCi0jZGVmaW5lIF9PU0ZfU09VUkNFIDEKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAgICBdXSwKLSAgICBbWyBtYWtlZGV2KDAsIDApIF1dKV0sCi0gICAgW2FjX2N2X2hhc19tYWtlZGV2PXllc10sCi0gICAgW2FjX2N2X2hhc19tYWtlZGV2PW5vXSkKLSAgICBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KLSAgICAgICAgQUNfREVGSU5FKF9PU0ZfU09VUkNFLCAxLCBbRGVmaW5lIF9PU0ZfU09VUkNFIHRvIGdldCB0aGUgbWFrZWRldiBtYWNyby5dKQotICAgIGZpCi1maQogQUNfTVNHX1JFU1VMVCgkYWNfY3ZfaGFzX21ha2VkZXYpCiBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KICAgICBBQ19ERUZJTkUoSEFWRV9NQUtFREVWLCAxLCBbRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIG1ha2VkZXYgbWFjcm8uXSkKQEAgLTE0NTgsNiArMTYyNCw4IEBACiBBQ19UWVBFX0lOVDY0X1QKIEFDX0NIRUNLX1RZUEUoc3NpemVfdCwKICAgQUNfREVGSU5FKEhBVkVfU1NJWkVfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHNzaXplX3RdKSwsKQorQUNfQ0hFQ0tfVFlQRShfX3VpbnQxMjhfdCwKKyAgQUNfREVGSU5FKEhBVkVfR0NDX1VJTlQxMjhfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIF9fdWludDEyOF90XSksLCkKIAogIyBTaXplcyBvZiB2YXJpb3VzIGNvbW1vbiBiYXNpYyB0eXBlcwogIyBBTlNJIEMgcmVxdWlyZXMgc2l6ZW9mKGNoYXIpID09IDEsIHNvIG5vIG5lZWQgdG8gY2hlY2sgaXQKQEAgLTE3MTgsNyArMTg4Niw2IEBACiAJCWVsc2UKIAkJCUxEU0hBUkVEPSdsZCAtYicKIAkJZmkgOzsKLQlPU0YqKSBMRFNIQVJFRD0ibGQgLXNoYXJlZCAtZXhwZWN0X3VucmVzb2x2ZWQgXCIqXCIiOzsKIAlEYXJ3aW4vMS4zKikKIAkJTERTSEFSRUQ9JyQoQ0MpIC1idW5kbGUnCiAJCUxEQ1hYU0hBUkVEPSckKENYWCkgLWJ1bmRsZScKQEAgLTE5NDgsNiArMjExNSw3IEBACiAKIAogIyBjaGVja3MgZm9yIGxpYnJhcmllcworQUNfQ0hFQ0tfTElCKHNlbmRmaWxlLCBzZW5kZmlsZSkKIEFDX0NIRUNLX0xJQihkbCwgZGxvcGVuKQkjIER5bmFtaWMgbGlua2luZyBmb3IgU3VuT1MvU29sYXJpcyBhbmQgU1lTVgogQUNfQ0hFQ0tfTElCKGRsZCwgc2hsX2xvYWQpCSMgRHluYW1pYyBsaW5raW5nIGZvciBIUC1VWAogCkBAIC0yMDIxLDYgKzIxODksMTUgQEAKIAogQUNfTVNHX1JFU1VMVCgkd2l0aF9zeXN0ZW1fZmZpKQogCisjIENoZWNrIGZvciB1c2Ugb2YgdGhlIHN5c3RlbSBsaWJtcGRlYyBsaWJyYXJ5CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMpCitBQ19BUkdfV0lUSChzeXN0ZW1fbGlibXBkZWMsCisgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXN5c3RlbS1saWJtcGRlY10sIFtidWlsZCBfZGVjaW1hbCBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGxpYm1wZGVjIGxpYnJhcnldKSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgW3dpdGhfc3lzdGVtX2xpYm1wZGVjPSJubyJdKQorCitBQ19NU0dfUkVTVUxUKCR3aXRoX3N5c3RlbV9saWJtcGRlYykKKwogIyBDaGVjayBmb3Igc3VwcG9ydCBmb3IgbG9hZGFibGUgc3FsaXRlIGV4dGVuc2lvbnMKIEFDX01TR19DSEVDS0lORyhmb3IgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMpCiBBQ19BUkdfRU5BQkxFKGxvYWRhYmxlLXNxbGl0ZS1leHRlbnNpb25zLApAQCAtMjA3MiwyMSArMjI0OSwxMCBAQAogQUNfU1VCU1QoVVNFX1RIUkVBRF9NT0RVTEUpCiBVU0VfVEhSRUFEX01PRFVMRT0iIgogCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1kZWMtdGhyZWFkcykKIEFDX1NVQlNUKExETEFTVCkKLUFDX0FSR19XSVRIKGRlYy10aHJlYWRzLAotICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kZWMtdGhyZWFkc10sIFt1c2UgREVDIEFscGhhL09TRjEgdGhyZWFkLXNhZmUgbGlicmFyaWVzXSksCi1bCi1BQ19NU0dfUkVTVUxUKCR3aXRodmFsKQotTERMQVNUPS10aHJlYWRzCi1pZiB0ZXN0ICIke3dpdGhfdGhyZWFkK3NldH0iICE9IHNldDsgdGhlbgotICAgd2l0aF90aHJlYWQ9IiR3aXRodmFsIjsKLWZpXSwKLVtBQ19NU0dfUkVTVUxUKG5vKV0pCiAKICMgVGVtcGxhdGVzIGZvciB0aGluZ3MgQUNfREVGSU5FZCBtb3JlIHRoYW4gb25jZS4KICMgRm9yIGEgc2luZ2xlIEFDX0RFRklORSwgbm8gdGVtcGxhdGUgaXMgbmVlZGVkLgotQUhfVEVNUExBVEUoQ19USFJFQURTLFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIE1hY2ggY3RocmVhZHMgcGFja2FnZV0pCiBBSF9URU1QTEFURShfUkVFTlRSQU5ULAogICBbRGVmaW5lIHRvIGZvcmNlIHVzZSBvZiB0aHJlYWQtc2FmZSBlcnJubywgaF9lcnJubywgYW5kIG90aGVyIGZ1bmN0aW9uc10pCiBBSF9URU1QTEFURShXSVRIX1RIUkVBRCwKQEAgLTIxNjgsMTcgKzIzMzQsNiBAQAogICAgIEFDX01TR19SRVNVTFQoJHVuaXN0ZF9kZWZpbmVzX3B0aHJlYWRzKQogCiAgICAgQUNfREVGSU5FKF9SRUVOVFJBTlQpCi0gICAgQUNfQ0hFQ0tfSEVBREVSKGN0aHJlYWRzLmgsIFtBQ19ERUZJTkUoV0lUSF9USFJFQUQpCi0gICAgQUNfREVGSU5FKENfVEhSRUFEUykKLSAgICBBQ19ERUZJTkUoSFVSRF9DX1RIUkVBRFMsIDEsCi0gICAgW0RlZmluZSBpZiB5b3UgYXJlIHVzaW5nIE1hY2ggY3RocmVhZHMgZGlyZWN0bHkgdW5kZXIgL2luY2x1ZGVdKQotICAgIExJQlM9IiRMSUJTIC1sdGhyZWFkcyIKLSAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyJdLFsKLSAgICBBQ19DSEVDS19IRUFERVIobWFjaC9jdGhyZWFkcy5oLCBbQUNfREVGSU5FKFdJVEhfVEhSRUFEKQotICAgIEFDX0RFRklORShDX1RIUkVBRFMpCi0gICAgQUNfREVGSU5FKE1BQ0hfQ19USFJFQURTLCAxLAotICAgIFtEZWZpbmUgaWYgeW91IGFyZSB1c2luZyBNYWNoIGN0aHJlYWRzIHVuZGVyIG1hY2ggL10pCi0gICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iXSxbCiAgICAgIyBKdXN0IGxvb2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIGxpYnB0aHJlYWQgaXMgbm90IGVub3VnaDoKICAgICAjIG9uIEhQL1VYLCBwdGhyZWFkLmggcmVuYW1lcyBwdGhyZWFkX2NyZWF0ZSB0byBhIGRpZmZlcmVudCBzeW1ib2wgbmFtZS4KICAgICAjIFNvIHdlIHJlYWxseSBoYXZlIHRvIGluY2x1ZGUgcHRocmVhZC5oLCBhbmQgdGhlbiBsaW5rLgpAQCAtMjIxNCw3ICsyMzY5LDcgQEAKICAgICBMSUJTPSIkTElCUyAtbGNtYSIKICAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyJdLFsKICAgICBVU0VfVEhSRUFEX01PRFVMRT0iIyJdKQotICAgIF0pXSldKV0pXSldKV0pCisgICAgXSldKV0pXSldKQogCiAgICAgQUNfQ0hFQ0tfTElCKG1wYywgdXNjb25maWcsIFtBQ19ERUZJTkUoV0lUSF9USFJFQUQpCiAgICAgTElCUz0iJExJQlMgLWxtcGMiCkBAIC0yMjI3LDE1ICsyMzgyLDYgQEAKICAgICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIgogICAgICAgVVNFX1RIUkVBRF9NT0RVTEU9IiJdKQogICAgIGZpCi0KLSAgICBpZiB0ZXN0ICIkVVNFX1RIUkVBRF9NT0RVTEUiICE9ICIjIgotICAgIHRoZW4KLSAgICAgICAgIyBJZiB0aGUgYWJvdmUgY2hlY2tzIGRpZG4ndCBkaXNhYmxlIHRocmVhZHMsIChhdCBsZWFzdCkgT1NGMQotICAgICAgICAjIG5lZWRzIHRoaXMgJy10aHJlYWRzJyBhcmd1bWVudCBkdXJpbmcgbGlua2luZy4KLSAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICAgICAgICBPU0YxKSBMRExBU1Q9LXRocmVhZHM7OwotICAgICAgICBlc2FjCi0gICAgZmkKIGZpCiAKIGlmIHRlc3QgIiRwb3NpeF90aHJlYWRzIiA9ICJ5ZXMiOyB0aGVuCkBAIC0yNTA5LDEyICsyNjU1LDEyIEBACiBpZiB0ZXN0IC16ICIkd2l0aF9weW1hbGxvYyIKIHRoZW4KICAgICB3aXRoX3B5bWFsbG9jPSJ5ZXMiCi0gICAgQUJJRkxBR1M9IiR7QUJJRkxBR1N9bSIKIGZpCiBpZiB0ZXN0ICIkd2l0aF9weW1hbGxvYyIgIT0gIm5vIgogdGhlbgogICAgIEFDX0RFRklORShXSVRIX1BZTUFMTE9DLCAxLCAKICAgICAgW0RlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIFB5dGhvbi1zcGVjaWZpYyBtYWxsb2NzXSkKKyAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIEFDX01TR19SRVNVTFQoJHdpdGhfcHltYWxsb2MpCiAKQEAgLTI1ODMsMjMgKzI3MjksMzUgQEAKIGVsc2UKIAlNQUNIREVQX09CSlM9IiRNQUNIREVQX09CSlMgJGV4dHJhX21hY2hkZXBfb2JqcyIKIGZpCi1BQ19NU0dfUkVTVUxUKE1BQ0hERVBfT0JKUykKK2lmIHRlc3QgLXogIiRNQUNIREVQX09CSlMiOyB0aGVuCisgIEFDX01TR19SRVNVTFQoW25vbmVdKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKFskTUFDSERFUF9PQkpTXSkKK2ZpCiAKICMgY2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucwogQUNfQ0hFQ0tfRlVOQ1MoYWxhcm0gYWNjZXB0NCBzZXRpdGltZXIgZ2V0aXRpbWVyIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IGNob3duIFwKLSBjbG9jayBjb25mc3RyIGN0ZXJtaWQgZXhlY3YgZmNobW9kIGZjaG93biBmb3JrIGZwYXRoY29uZiBmdGltZSBmdHJ1bmNhdGUgXAotIGdhaV9zdHJlcnJvciBnZXRncm91cHMgZ2V0bG9naW4gZ2V0bG9hZGF2ZyBnZXRwZWVybmFtZSBnZXRwZ2lkIGdldHBpZCBcCisgY2xvY2sgY29uZnN0ciBjdGVybWlkIGV4ZWN2IGZhY2Nlc3NhdCBmY2htb2QgZmNobW9kYXQgZmNob3duIGZjaG93bmF0IFwKKyBmZXhlY3ZlIGZkb3BlbmRpciBmb3JrIGZwYXRoY29uZiBmc3RhdGF0IGZ0aW1lIGZ0cnVuY2F0ZSBmdXRpbWVzYXQgXAorIGZ1dGltZW5zIGZ1dGltZXMgZ2FpX3N0cmVycm9yIFwKKyBnZXRncm91cGxpc3QgZ2V0Z3JvdXBzIGdldGxvZ2luIGdldGxvYWRhdmcgZ2V0cGVlcm5hbWUgZ2V0cGdpZCBnZXRwaWQgXAogIGdldHByaW9yaXR5IGdldHJlc3VpZCBnZXRyZXNnaWQgZ2V0cHdlbnQgZ2V0c3BuYW0gZ2V0c3BlbnQgZ2V0c2lkIGdldHdkIFwKLSBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG1vZCBsY2hvd24gbHN0YXQgbWJydG93YyBta2ZpZm8gbWtub2QgbWt0aW1lIFwKLSBtcmVtYXAgbmljZSBwYXRoY29uZiBwYXVzZSBwbG9jayBwb2xsIHB0aHJlYWRfaW5pdCBcCi0gcHV0ZW52IHJlYWRsaW5rIHJlYWxwYXRoIFwKLSBzZWxlY3Qgc2VtX29wZW4gc2VtX3RpbWVkd2FpdCBzZW1fZ2V0dmFsdWUgc2VtX3VubGluayBzZXRlZ2lkIHNldGV1aWQgXAotIHNldGdpZCBcCi0gc2V0bG9jYWxlIHNldHJlZ2lkIHNldHJldWlkIHNldHJlc3VpZCBzZXRyZXNnaWQgc2V0c2lkIHNldHBnaWQgc2V0cGdycCBzZXR1aWQgc2V0dmJ1ZiBcCi0gc2lnYWN0aW9uIHNpZ2ludGVycnVwdCBzaWdyZWxzZSBzbnByaW50ZiBzdHJmdGltZSBzdHJsY3B5IFwKKyBpZl9uYW1laW5kZXggXAorIGluaXRncm91cHMga2lsbCBraWxscGcgbGNobW9kIGxjaG93biBsb2NrZiBsaW5rYXQgbHN0YXQgbHV0aW1lcyBtbWFwIFwKKyBtZW1yY2hyIG1icnRvd2MgbWtkaXJhdCBta2ZpZm8gXAorIG1rZmlmb2F0IG1rbm9kIG1rbm9kYXQgbWt0aW1lIG1yZW1hcCBuaWNlIG9wZW5hdCBwYXRoY29uZiBwYXVzZSBwaXBlMiBwbG9jayBwb2xsIFwKKyBwb3NpeF9mYWxsb2NhdGUgcG9zaXhfZmFkdmlzZSBwcmVhZCBcCisgcHRocmVhZF9pbml0IHB0aHJlYWRfa2lsbCBwdXRlbnYgcHdyaXRlIHJlYWRsaW5rIHJlYWRsaW5rYXQgcmVhZHYgcmVhbHBhdGggcmVuYW1lYXQgXAorIHNlbGVjdCBzZW1fb3BlbiBzZW1fdGltZWR3YWl0IHNlbV9nZXR2YWx1ZSBzZW1fdW5saW5rIHNlbmRmaWxlIHNldGVnaWQgc2V0ZXVpZCBcCisgc2V0Z2lkIHNldGhvc3RuYW1lIFwKKyBzZXRsb2NhbGUgc2V0cmVnaWQgc2V0cmV1aWQgc2V0cmVzdWlkIHNldHJlc2dpZCBzZXRzaWQgc2V0cGdpZCBzZXRwZ3JwIHNldHByaW9yaXR5IHNldHVpZCBzZXR2YnVmIFwKKyBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IHNjaGVkX3NldGFmZmluaXR5IHNjaGVkX3NldHNjaGVkdWxlciBzY2hlZF9zZXRwYXJhbSBcCisgc2NoZWRfcnJfZ2V0X2ludGVydmFsIFwKKyBzaWdhY3Rpb24gc2lnYWx0c3RhY2sgc2lnaW50ZXJydXB0IHNpZ3BlbmRpbmcgc2lncmVsc2UgXAorIHNpZ3RpbWVkd2FpdCBzaWd3YWl0IHNpZ3dhaXRpbmZvIHNucHJpbnRmIHN0cmZ0aW1lIHN0cmxjcHkgc3ltbGlua2F0IHN5bmMgXAogIHN5c2NvbmYgdGNnZXRwZ3JwIHRjc2V0cGdycCB0ZW1wbmFtIHRpbWVnbSB0aW1lcyB0bXBmaWxlIHRtcG5hbSB0bXBuYW1fciBcCi0gdHJ1bmNhdGUgdW5hbWUgdW5zZXRlbnYgdXRpbWVzIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAotIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSBfZ2V0cHR5KQorIHRydW5jYXRlIHVuYW1lIHVubGlua2F0IHVuc2V0ZW52IHV0aW1lbnNhdCB1dGltZXMgd2FpdGlkIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAorIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSB3cml0ZXYgX2dldHB0eSkKIAogQUNfQ0hFQ0tfREVDTChkaXJmZCwKICAgICBBQ19ERUZJTkUoSEFWRV9ESVJGRCwgMSwKQEAgLTI2NTEsNiArMjgwOSwxMiBAQAogICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKICAgW0FDX01TR19SRVNVTFQobm8pCiBdKQorQUNfTVNHX0NIRUNLSU5HKGZvciBlcG9sbF9jcmVhdGUxKQorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxzeXMvZXBvbGwuaD5dXSwgW1t2b2lkICp4PWVwb2xsX2NyZWF0ZTFdXSldLAorICBbQUNfREVGSU5FKEhBVkVfRVBPTExfQ1JFQVRFMSwgMSwgRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZXBvbGxfY3JlYXRlMScgZnVuY3Rpb24uKQorICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKyAgW0FDX01TR19SRVNVTFQobm8pCitdKQogQUNfTVNHX0NIRUNLSU5HKGZvciBrcXVldWUpCiBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC0yODgxLDYgKzMwNDUsMjAgQEAKICAgICBdKQogKQogCitBQ19DSEVDS19GVU5DUyhjbG9ja19nZXR0aW1lLCBbXSwgWworICAgIEFDX0NIRUNLX0xJQihydCwgY2xvY2tfZ2V0dGltZSwgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9DTE9DS19HRVRUSU1FLCAxKQorICAgICAgICBBQ19ERUZJTkUoVElNRU1PRFVMRV9MSUIsIFtydF0sCisgICAgICAgICAgICAgICAgICBbTGlicmFyeSBuZWVkZWQgYnkgdGltZW1vZHVsZS5jOiBsaWJydCBtYXkgYmUgbmVlZGVkIGZvciBjbG9ja19nZXR0aW1lKCldKQorICAgIF0pCitdKQorCitBQ19DSEVDS19GVU5DUyhjbG9ja19nZXRyZXMsIFtdLCBbCisgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19nZXRyZXMsIFsKKyAgICAgICAgQUNfREVGSU5FKEhBVkVfQ0xPQ0tfR0VUUkVTLCAxKQorICAgIF0pCitdKQorCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1ham9yLCBtaW5vciwgYW5kIG1ha2VkZXYpCiBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAjaWYgZGVmaW5lZChNQUpPUl9JTl9NS0RFVikKQEAgLTMwMDUsMTIgKzMxODMsMTcgQEAKIF1dXSldLAogW2FjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPW5vXSwKIFthY19jdl9idWdneV9nZXRhZGRyaW5mbz15ZXNdLAotW2FjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPXllc10pKQorWworaWYgdGVzdCAiJHtlbmFibGVfaXB2NitzZXR9IiA9IHNldDsgdGhlbgorICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz0ibm8gLS0gY29uZmlndXJlZCB3aXRoIC0tKGVufGRpcylhYmxlLWlwdjYiCitlbHNlCisgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPXllcworZmldKSkKIGZpCiAKIEFDX01TR19SRVNVTFQoJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvKQogCi1pZiB0ZXN0ICRoYXZlX2dldGFkZHJpbmZvID0gbm8gLW8gIiRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPSB5ZXMKK2lmIHRlc3QgJGhhdmVfZ2V0YWRkcmluZm8gPSBubyB8fCB0ZXN0ICIkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8iID0geWVzCiB0aGVuCiAJaWYgdGVzdCAkaXB2NiA9IHllcwogCXRoZW4KQEAgLTMzMDIsNiArMzQ4NSwyMSBAQAogZmldLAogW0FDX01TR19SRVNVTFQoZGVmYXVsdCBMSUJDPSIkTElCQyIpXSkKIAorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqIENoZWNrIGZvciBnY2MgeDY0IGlubGluZSBhc3NlbWJsZXIgKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlcikKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJtb3ZxICVyY3gsICVyYXgiKTsKK11dKV0sW2hhdmVfZ2NjX2FzbV9mb3JfeDY0PXllc10sW2hhdmVfZ2NjX2FzbV9mb3JfeDY0PW5vXSkKK0FDX01TR19SRVNVTFQoJGhhdmVfZ2NjX2FzbV9mb3JfeDY0KQoraWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDY0IiA9IHllcwordGhlbgorICAgIEFDX0RFRklORShIQVZFX0dDQ19BU01fRk9SX1g2NCwgMSwKKyAgICBbRGVmaW5lIGlmIHdlIGNhbiB1c2UgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyXSkKK2ZpCisKICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICMgKiBDaGVjayBmb3IgdmFyaW91cyBwcm9wZXJ0aWVzIG9mIGZsb2F0aW5nIHBvaW50ICoKICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTM0NTAsNyArMzY0OCw3IEBACiBMSUJTPSIkTElCUyAkTElCTSIKIAogQUNfQ0hFQ0tfRlVOQ1MoW2Fjb3NoIGFzaW5oIGF0YW5oIGNvcHlzaWduIGVyZiBlcmZjIGV4cG0xIGZpbml0ZSBnYW1tYV0pCi1BQ19DSEVDS19GVU5DUyhbaHlwb3QgbGdhbW1hIGxvZzFwIHJvdW5kIHRnYW1tYV0pCitBQ19DSEVDS19GVU5DUyhbaHlwb3QgbGdhbW1hIGxvZzFwIGxvZzIgcm91bmQgdGdhbW1hXSkKIEFDX0NIRUNLX0RFQ0xTKFtpc2luZiwgaXNuYW4sIGlzZmluaXRlXSwgW10sIFtdLCBbWyNpbmNsdWRlIDxtYXRoLmg+XV0pCiAKICMgT24gRnJlZUJTRCA2LjIsIGl0IGFwcGVhcnMgdGhhdCB0YW5oKC0wLikgcmV0dXJucyAwLiBpbnN0ZWFkIG9mCkBAIC0zNjQ4LDU3ICszODQ2LDE5IEBACiAgIEFDX01TR19SRVNVTFQoJGFjX2N2X3djaGFyX3Rfc2lnbmVkKQogZmkKIAotQUNfTVNHX0NIRUNLSU5HKHdoYXQgdHlwZSB0byB1c2UgZm9yIHN0cikKLUFDX0FSR19XSVRIKHdpZGUtdW5pY29kZSwgCi0gICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXdpZGUtdW5pY29kZV0sIFtVc2UgNC1ieXRlIFVuaWNvZGUgY2hhcmFjdGVycyAoZGVmYXVsdCBpcyAyIGJ5dGVzKV0pLAotWwotaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vCi10aGVuIHVuaWNvZGVfc2l6ZT0iNCIKLWVsc2UgdW5pY29kZV9zaXplPSIyIgotZmkKLV0sCi1bCi1jYXNlICIkaGF2ZV91Y3M0X3RjbCIgaW4KLSAgeWVzKSB1bmljb2RlX3NpemU9IjQiOzsKLSAgKikgICB1bmljb2RlX3NpemU9IjIiIDs7Ci1lc2FjCi1dKQotCi1BSF9URU1QTEFURShQeV9VTklDT0RFX1NJWkUsCi0gIFtEZWZpbmUgYXMgdGhlIHNpemUgb2YgdGhlIHVuaWNvZGUgdHlwZS5dKQotY2FzZSAiJHVuaWNvZGVfc2l6ZSIgaW4KLSAgNCkKLSAgICAgQUNfREVGSU5FKFB5X1VOSUNPREVfU0laRSwgNCkKLSAgICAgQUJJRkxBR1M9IiR7QUJJRkxBR1N9dSIKLSAgICAgOzsKLSAgKikgQUNfREVGSU5FKFB5X1VOSUNPREVfU0laRSwgMikgOzsKLWVzYWMKLQotQUhfVEVNUExBVEUoUFlfVU5JQ09ERV9UWVBFLAotICBbRGVmaW5lIGFzIHRoZSBpbnRlZ3JhbCB0eXBlIHVzZWQgZm9yIFVuaWNvZGUgcmVwcmVzZW50YXRpb24uXSkKLQogIyB3Y2hhcl90IGlzIG9ubHkgdXNhYmxlIGlmIGl0IG1hcHMgdG8gYW4gdW5zaWduZWQgdHlwZQotaWYgdGVzdCAiJHVuaWNvZGVfc2l6ZSIgPSAiJGFjX2N2X3NpemVvZl93Y2hhcl90IiBcCitpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiIC1nZSAyIFwKICAgICAgICAgICAtYSAiJGFjX2N2X3djaGFyX3Rfc2lnbmVkIiA9ICJubyIKIHRoZW4KLSAgUFlfVU5JQ09ERV9UWVBFPSJ3Y2hhcl90IgorICBIQVZFX1VTQUJMRV9XQ0hBUl9UPSJ5ZXMiCiAgIEFDX0RFRklORShIQVZFX1VTQUJMRV9XQ0hBUl9ULCAxLAogICBbRGVmaW5lIGlmIHlvdSBoYXZlIGEgdXNlYWJsZSB3Y2hhcl90IHR5cGUgZGVmaW5lZCBpbiB3Y2hhci5oOyB1c2VhYmxlCiAgICBtZWFucyB3Y2hhcl90IG11c3QgYmUgYW4gdW5zaWduZWQgdHlwZSB3aXRoIGF0IGxlYXN0IDE2IGJpdHMuIChzZWUKICAgIEluY2x1ZGUvdW5pY29kZW9iamVjdC5oKS5dKQotICBBQ19ERUZJTkUoUFlfVU5JQ09ERV9UWVBFLHdjaGFyX3QpCi1lbGlmIHRlc3QgIiRhY19jdl9zaXplb2Zfc2hvcnQiID0gIiR1bmljb2RlX3NpemUiCi10aGVuCi0gICAgIFBZX1VOSUNPREVfVFlQRT0idW5zaWduZWQgc2hvcnQiCi0gICAgIEFDX0RFRklORShQWV9VTklDT0RFX1RZUEUsdW5zaWduZWQgc2hvcnQpCi1lbGlmIHRlc3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgPSAiJHVuaWNvZGVfc2l6ZSIKLXRoZW4KLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJ1bnNpZ25lZCBsb25nIgotICAgICBBQ19ERUZJTkUoUFlfVU5JQ09ERV9UWVBFLHVuc2lnbmVkIGxvbmcpCiBlbHNlCi0gICAgIFBZX1VOSUNPREVfVFlQRT0ibm8gdHlwZSBmb3VuZCIKKyAgSEFWRV9VU0FCTEVfV0NIQVJfVD0ibm8gdXNhYmxlIHdjaGFyX3QgZm91bmQiCiBmaQotQUNfTVNHX1JFU1VMVCgkUFlfVU5JQ09ERV9UWVBFKQorQUNfTVNHX1JFU1VMVCgkSEFWRV9VU0FCTEVfV0NIQVJfVCkKIAogIyBjaGVjayBmb3IgZW5kaWFubmVzcwogQUNfQ19CSUdFTkRJQU4KQEAgLTM4MDUsNyArMzk2NSw3IEBACiAjIHdpdGggc2V0dXAucHkuCiBweV9jdl9saWJfcmVhZGxpbmU9bm8KIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgcmVhZGxpbmUgbGlic10pCi1mb3IgcHlfbGlidGVybWNhcCBpbiAiIiBuY3Vyc2VzdyBuY3Vyc2VzIGN1cnNlcyB0ZXJtY2FwOyBkbworZm9yIHB5X2xpYnRlcm1jYXAgaW4gIiIgdGluZm8gbmN1cnNlc3cgbmN1cnNlcyBjdXJzZXMgdGVybWNhcDsgZG8KICAgaWYgdGVzdCAteiAiJHB5X2xpYnRlcm1jYXAiOyB0aGVuCiAgICAgUkVBRExJTkVfTElCUz0iLWxyZWFkbGluZSIKICAgZWxzZQpAQCAtNDA0OCw2ICs0MjA4LDggQEAKICAgW0RlZmluZSBpZiB5b3UgaGF2ZSBzdHJ1Y3Qgc3RhdC5zdF9tdGltZW5zZWNdKQogZmkKIAorYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKICMgT24gSFAvVVggMTEuMCwgbXZ3ZGVsY2ggaXMgYSBibG9jayB3aXRoIGEgcmV0dXJuIHN0YXRlbWVudAogQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgbXZ3ZGVsY2ggaXMgYW4gZXhwcmVzc2lvbikKIEFDX0NBQ0hFX1ZBTChhY19jdl9tdndkZWxjaF9pc19leHByZXNzaW9uLApAQCAtNDEwMiwyNyArNDI2NCwzNCBAQAogICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKICAgW0FDX01TR19SRVNVTFQobm8pXQogKQorIyBsYXN0IGN1cnNlcyBjb25maWd1cmUgY2hlY2sKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCiAKLUFDX01TR19DSEVDS0lORyhmb3IgL2Rldi9wdG14KQorQUNfTVNHX05PVElDRShbY2hlY2tpbmcgZm9yIGRldmljZSBmaWxlc10pCiAKLWlmIHRlc3QgLXIgL2Rldi9wdG14Ci10aGVuCi0gIEFDX01TR19SRVNVTFQoeWVzKQotICBBQ19ERUZJTkUoSEFWRV9ERVZfUFRNWCwgMSwKLSAgW0RlZmluZSBpZiB3ZSBoYXZlIC9kZXYvcHRteC5dKQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQorZG5sIE5PVEU6IEluZm9ybSB1c2VyIGhvdyB0byBwcm9jZWVkIHdpdGggZmlsZXMgd2hlbiBjcm9zcyBjb21waWxpbmcuCitpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSB4eWVzOyB0aGVuCisgIGlmIHRlc3QgIiR7YWNfY3ZfZmlsZV9fZGV2X3B0bXgrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgL2Rldi9wdG14XSkKKyAgICBBQ19NU0dfUkVTVUxUKFtub3Qgc2V0XSkKKyAgICBBQ19NU0dfRVJST1IoW3NldCBhY19jdl9maWxlX19kZXZfcHRteCB0byB5ZXMvbm8gaW4geW91ciBDT05GSUdfU0lURSBmaWxlIHdoZW4gY3Jvc3MgY29tcGlsaW5nXSkKKyAgZmkKKyAgaWYgdGVzdCAiJHthY19jdl9maWxlX19kZXZfcHRjK3NldH0iICE9IHNldDsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbZm9yIC9kZXYvcHRjXSkKKyAgICBBQ19NU0dfUkVTVUxUKFtub3Qgc2V0XSkKKyAgICBBQ19NU0dfRVJST1IoW3NldCBhY19jdl9maWxlX19kZXZfcHRjIHRvIHllcy9ubyBpbiB5b3VyIENPTkZJR19TSVRFIGZpbGUgd2hlbiBjcm9zcyBjb21waWxpbmddKQorICBmaQogZmkKIAotQUNfTVNHX0NIRUNLSU5HKGZvciAvZGV2L3B0YykKLQotaWYgdGVzdCAtciAvZGV2L3B0YwotdGhlbgotICBBQ19NU0dfUkVTVUxUKHllcykKK0FDX0NIRUNLX0ZJTEUoL2Rldi9wdG14LCBbXSwgW10pCitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdG14IiA9IHh5ZXM7IHRoZW4KKyAgQUNfREVGSU5FKEhBVkVfREVWX1BUTVgsIDEsCisgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdG14IGRldmljZSBmaWxlLl0pCitmaQorQUNfQ0hFQ0tfRklMRSgvZGV2L3B0YywgW10sIFtdKQoraWYgdGVzdCAieCRhY19jdl9maWxlX19kZXZfcHRjIiA9IHh5ZXM7IHRoZW4KICAgQUNfREVGSU5FKEhBVkVfREVWX1BUQywgMSwKLSAgW0RlZmluZSBpZiB3ZSBoYXZlIC9kZXYvcHRjLl0pCi1lbHNlCi0gIEFDX01TR19SRVNVTFQobm8pCisgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdGMgZGV2aWNlIGZpbGUuXSkKIGZpCiAKIGlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKQEAgLTQxNjIsNyArNDMzMSwyMyBAQAogICBdXV0pXSwKICAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXNdLAogICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vXSwKLSAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD1ub10pCisgIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9ImNyb3NzIC0tIGFzc3VtaW5nIG5vIgorICAgaWYgdGVzdCB4JEdDQyA9IHh5ZXM7IHRoZW4KKyAgICBzYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1XZXJyb3IgLVdmb3JtYXQiCisgICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KKyAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICAgICAgXV0sIFtbCisgICAgICBjaGFyICpidWZmZXI7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMyk7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpOworICAgICAgc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpOworICAgICAgXV0pXSwKKyAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKKyAgICApCisgICAgQ0ZMQUdTPSRzYXZlX0NGTEFHUworICAgZmldKQogICApCiAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCkKIGZpCkBAIC00MjU3LDMwICs0NDQyLDYgQEAKICAgIHdpZGUgY2hhcnMgdGhhdCB3b3VsZCBiZSBjb252ZXJ0ZWQuXSkKIGZpCiAKLUFDX01TR19DSEVDS0lORyh3aGV0aGVyICRDQyBzdXBwb3J0cyBjb21wdXRlZCBnb3RvcykKLUFDX0NBQ0hFX1ZBTChhY19jdl9jb21wdXRlZF9nb3RvcywKLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbWwotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIHN0YXRpYyB2b2lkICp0YXJnZXRzWzFdID0geyAmJkxBQkVMMSB9OwotICAgIGdvdG8gTEFCRUwyOwotTEFCRUwxOgotICAgIHJldHVybiAwOwotTEFCRUwyOgotICAgIGdvdG8gKnRhcmdldHNbMF07Ci0gICAgcmV0dXJuIDE7Ci19Ci1dXV0pXSwKLVthY19jdl9jb21wdXRlZF9nb3Rvcz15ZXNdLAotW2FjX2N2X2NvbXB1dGVkX2dvdG9zPW5vXSwKLVthY19jdl9jb21wdXRlZF9nb3Rvcz1ub10pKQotQUNfTVNHX1JFU1VMVCgkYWNfY3ZfY29tcHV0ZWRfZ290b3MpCi1pZiB0ZXN0ICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID0geWVzCi10aGVuCi0gIEFDX0RFRklORShIQVZFX0NPTVBVVEVEX0dPVE9TLCAxLAotICBbRGVmaW5lIGlmIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLl0pCi1maQotCiAjIENoZWNrIGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLWNvbXB1dGVkLWdvdG9zKQogQUNfQVJHX1dJVEgoY29tcHV0ZWQtZ290b3MsCkBAIC00MzAyLDE4ICs0NDYzLDM5IEBACiBdLAogW0FDX01TR19SRVNVTFQobm8gdmFsdWUgc3BlY2lmaWVkKV0pCiAKK0FDX01TR19DSEVDS0lORyh3aGV0aGVyICRDQyBzdXBwb3J0cyBjb21wdXRlZCBnb3RvcykKK0FDX0NBQ0hFX1ZBTChhY19jdl9jb21wdXRlZF9nb3RvcywKK0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbWworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIHN0YXRpYyB2b2lkICp0YXJnZXRzWzFdID0geyAmJkxBQkVMMSB9OworICAgIGdvdG8gTEFCRUwyOworTEFCRUwxOgorICAgIHJldHVybiAwOworTEFCRUwyOgorICAgIGdvdG8gKnRhcmdldHNbMF07CisgICAgcmV0dXJuIDE7Cit9CitdXV0pXSwKK1thY19jdl9jb21wdXRlZF9nb3Rvcz15ZXNdLAorW2FjX2N2X2NvbXB1dGVkX2dvdG9zPW5vXSwKK1tpZiB0ZXN0ICIke3dpdGhfY29tcHV0ZWRfZ290b3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPSIkd2l0aF9jb21wdXRlZF9nb3RvcyAtLSBjb25maWd1cmVkIC0td2l0aChvdXQpLWNvbXB1dGVkLWdvdG9zIgorIGVsc2UKKyAgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPW5vCisgZmldKSkKK0FDX01TR19SRVNVTFQoJGFjX2N2X2NvbXB1dGVkX2dvdG9zKQorY2FzZSAiJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiBpbiB5ZXMqKQorICBBQ19ERUZJTkUoSEFWRV9DT01QVVRFRF9HT1RPUywgMSwKKyAgW0RlZmluZSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBjb21wdXRlZCBnb3Rvcy5dKQorZXNhYworCiBjYXNlICRhY19zeXNfc3lzdGVtIGluCiBBSVgqKSAgIAogICBBQ19ERUZJTkUoSEFWRV9CUk9LRU5fUElQRV9CVUYsIDEsIFtEZWZpbmUgaWYgdGhlIHN5c3RlbSByZXBvcnRzIGFuIGludmFsaWQgUElQRV9CVUYgdmFsdWUuXSkgOzsKIGVzYWMKIAogCi1jYXNlICRhY19zeXNfc3lzdGVtIGluCi0gIE9TRiopIEFDX01TR19FUlJPUihPU0YqIHN5c3RlbXMgYXJlIGRlcHJlY2F0ZWQgdW5sZXNzIHNvbWVib2R5IHZvbHVudGVlcnMuIENoZWNrIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4NjA2KSA7OwotZXNhYwotCi1BQ19DSEVDS19GVU5DKHBpcGUyLCBBQ19ERUZJTkUoSEFWRV9QSVBFMiwgMSwgW0RlZmluZSBpZiB0aGUgT1Mgc3VwcG9ydHMgcGlwZTIoKV0pLCApCi0KIEFDX1NVQlNUKFRIUkVBREhFQURFUlMpCiAKIGZvciBoIGluIGAoY2QgJHNyY2RpcjtlY2hvIFB5dGhvbi90aHJlYWRfKi5oKWAKQEAgLTQzMzEsNiArNDUxMyw4OSBAQAogZG9uZQogQUNfTVNHX1JFU1VMVChkb25lKQogCisjIEF2YWlsYWJpbGl0eSBvZiAtTzI6CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC1PMikKK3NhdmVkX2NmbGFncz0iJENGTEFHUyIKK0NGTEFHUz0iLU8yIgorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbWworXV0pXSxbaGF2ZV9PMj15ZXNdLFtoYXZlX08yPW5vXSkKK0FDX01TR19SRVNVTFQoJGhhdmVfTzIpCitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisKKyMgX0ZPUlRJRllfU09VUkNFIHdyYXBwZXJzIGZvciBtZW1tb3ZlIGFuZCBiY29weSBhcmUgaW5jb3JyZWN0OgorIyBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDEwLTEyL21zZzAwMDA5Lmh0bWwKK0FDX01TR19DSEVDS0lORyhmb3IgZ2xpYmMgX0ZPUlRJRllfU09VUkNFL21lbW1vdmUgYnVnKQorc2F2ZWRfY2ZsYWdzPSIkQ0ZMQUdTIgorQ0ZMQUdTPSItTzIgLURfRk9SVElGWV9TT1VSQ0U9MiIKK2lmIHRlc3QgIiRoYXZlX08yIiA9IG5vOyB0aGVuCisgICAgQ0ZMQUdTPSIiCitmaQorQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgordm9pZCBmb28odm9pZCAqcCwgdm9pZCAqcSkgeyBtZW1tb3ZlKHAsIHEsIDE5KTsgfQoraW50IG1haW4oKSB7CisgIGNoYXIgYVszMl0gPSAiMTIzNDU2Nzg5MDAwMDAwMDAwIjsKKyAgZm9vKCZhWzldLCBhKTsKKyAgaWYgKHN0cmNtcChhLCAiMTIzNDU2Nzg5MTIzNDU2Nzg5MDAwMDAwMDAwIikgIT0gMCkKKyAgICByZXR1cm4gMTsKKyAgZm9vKGEsICZhWzldKTsKKyAgaWYgKHN0cmNtcChhLCAiMTIzNDU2Nzg5MDAwMDAwMDAwIikgIT0gMCkKKyAgICByZXR1cm4gMTsKKyAgcmV0dXJuIDA7Cit9CitdXSldLAorW2hhdmVfZ2xpYmNfbWVtbW92ZV9idWc9bm9dLAorW2hhdmVfZ2xpYmNfbWVtbW92ZV9idWc9eWVzXSwKK1toYXZlX2dsaWJjX21lbW1vdmVfYnVnPXVuZGVmaW5lZF0pCitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCitBQ19NU0dfUkVTVUxUKCRoYXZlX2dsaWJjX21lbW1vdmVfYnVnKQoraWYgdGVzdCAiJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfR0xJQkNfTUVNTU9WRV9CVUcsIDEsCisgICAgW0RlZmluZSBpZiBnbGliYyBoYXMgaW5jb3JyZWN0IF9GT1JUSUZZX1NPVVJDRSB3cmFwcGVycworICAgICBmb3IgbWVtbW92ZSBhbmQgYmNvcHkuXSkKK2ZpCisKK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXM7IHRoZW4KKyAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTEKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMC0xMS9tc2cwMDM2Ni5odG1sCisgICAgY2FzZSAkQ0MgaW4KKyAgICAgICAgKmdjYyopCisgICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGdjYyBpcGEtcHVyZS1jb25zdCBidWcpCisgICAgICAgICAgICBzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCisgICAgICAgICAgICBDRkxBR1M9Ii1PMiIKKyAgICAgICAgICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGludAorICAgICAgICAgICAgZm9vKGludCAqcCkgeworICAgICAgICAgICAgICBpbnQgcjsKKyAgICAgICAgICAgICAgYXNtICggIm1vdmwgXCQ2LCAoJTEpXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgInhvcmwgJTAsICUwXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgOiAiPXIiIChyKSA6ICJyIiAocCkgOiAibWVtb3J5IgorICAgICAgICAgICAgICApOworICAgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBtYWluKCkgeworICAgICAgICAgICAgICBpbnQgcCA9IDg7CisgICAgICAgICAgICAgIGlmICgoZm9vKCZwKSA/IDogcCkgIT0gNikKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgW2hhdmVfaXBhX3B1cmVfY29uc3RfYnVnPW5vXSwKKyAgICAgICAgICAgIFtoYXZlX2lwYV9wdXJlX2NvbnN0X2J1Zz15ZXNdLAorICAgICAgICAgICAgW2hhdmVfaXBhX3B1cmVfY29uc3RfYnVnPXVuZGVmaW5lZF0pCisgICAgICAgICAgICBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKCRoYXZlX2lwYV9wdXJlX2NvbnN0X2J1ZykKKyAgICAgICAgICAgIGlmIHRlc3QgIiRoYXZlX2lwYV9wdXJlX2NvbnN0X2J1ZyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9JUEFfUFVSRV9DT05TVF9CVUcsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgaWYgZ2NjIGhhcyB0aGUgaXBhLXB1cmUtY29uc3QgYnVnLl0pCisgICAgICAgICAgICBmaQorICAgICAgICA7OworICAgIGVzYWMKK2ZpCisKICMgZ2VuZXJhdGUgb3V0cHV0IGZpbGVzCiBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUucHJlIE1vZHVsZXMvU2V0dXAuY29uZmlnIE1pc2MvcHl0aG9uLnBjKQogQUNfQ09ORklHX0ZJTEVTKFtNb2R1bGVzL2xkX3NvX2FpeF0sIFtjaG1vZCAreCBNb2R1bGVzL2xkX3NvX2FpeF0pCmRpZmYgLS1naXQgYS9weWNvbmZpZy5oLmluIGIvcHljb25maWcuaC5pbgppbmRleCBjYThjY2I2Li4zY2EzYTRmIDEwMDY0NAotLS0gYS9weWNvbmZpZy5oLmluCisrKyBiL3B5Y29uZmlnLmguaW4KQEAgLTEyLDkgKzEyLDYgQEAKICAgIHN1cHBvcnQgZm9yIEFJWCBDKysgc2hhcmVkIGV4dGVuc2lvbiBtb2R1bGVzLiAqLwogI3VuZGVmIEFJWF9HRU5VSU5FX0NQTFVTUExVUwogCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIE1hY2ggY3RocmVhZHMgcGFja2FnZSAqLwotI3VuZGVmIENfVEhSRUFEUwotCiAvKiBEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkIGluIEFSTQogICAgbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKSAqLwogI3VuZGVmIERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQKQEAgLTExNiw2ICsxMTMsMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2snIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ0xPQ0sKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9ja19nZXRyZXMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQ0xPQ0tfR0VUUkVTCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfZ2V0dGltZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DTE9DS19HRVRUSU1FCisKIC8qIERlZmluZSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBjb21wdXRlZCBnb3Rvcy4gKi8KICN1bmRlZiBIQVZFX0NPTVBVVEVEX0dPVE9TCiAKQEAgLTE2NSwxMCArMTY4LDEwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGV2aWNlIG1hY3Jvcy4gKi8KICN1bmRlZiBIQVZFX0RFVklDRV9NQUNST1MKIAotLyogRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdGMuICovCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdGMgZGV2aWNlIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ERVZfUFRDCiAKLS8qIERlZmluZSBpZiB3ZSBoYXZlIC9kZXYvcHRteC4gKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0bXggZGV2aWNlIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ERVZfUFRNWAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KQEAgLTE5Niw2ICsxOTksOSBAQAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZXBvbGwnIGZ1bmN0aW9ucy4gKi8KICN1bmRlZiBIQVZFX0VQT0xMCiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2Vwb2xsX2NyZWF0ZTEnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRVBPTExfQ1JFQVRFMQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGVyZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9FUkYKIApAQCAtMjExLDIxICsyMTcsMzYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZXhwbTEnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRVhQTTEKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmYWNjZXNzYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkFDQ0VTU0FUCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2ZjaGRpcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GQ0hESVIKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2htb2QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRkNITU9ECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmNobW9kYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkNITU9EQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2hvd24nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRkNIT1dOCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmNob3duYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkNIT1dOQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0ZDTlRMX0gKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZmRhdGFzeW5jJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZEQVRBU1lOQwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZkb3BlbmRpcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GRE9QRU5ESVIKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmZXhlY3ZlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZFWEVDVkUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmaW5pdGUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRklOSVRFCiAKQEAgLTI0Nyw2ICsyNjgsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmc2Vla28nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRlNFRUtPCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnN0YXRhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GU1RBVEFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnN0YXR2ZnMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRlNUQVRWRlMKIApAQCAtMjY1LDE2ICsyODksMzEgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnRydW5jYXRlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZUUlVOQ0FURQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZ1dGltZW5zJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZVVElNRU5TCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnV0aW1lcycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GVVRJTUVTCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnV0aW1lc2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZVVElNRVNBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdhaV9zdHJlcnJvcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HQUlfU1RSRVJST1IKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnYW1tYScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HQU1NQQogCisvKiBEZWZpbmUgaWYgd2UgY2FuIHVzZSB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXIgKi8KKyN1bmRlZiBIQVZFX0dDQ19BU01fRk9SX1g2NAorCiAvKiBEZWZpbmUgaWYgd2UgY2FuIHVzZSBnY2MgaW5saW5lIGFzc2VtYmxlciB0byBnZXQgYW5kIHNldCB4ODcgY29udHJvbCB3b3JkCiAgICAqLwogI3VuZGVmIEhBVkVfR0NDX0FTTV9GT1JfWDg3CiAKKy8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIF9fdWludDEyOF90ICovCisjdW5kZWYgSEFWRV9HQ0NfVUlOVDEyOF9UCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZ2V0YWRkcmluZm8gZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRBRERSSU5GTwogCkBAIC0yODQsNiArMzIzLDkgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIGZsb2NrZmlsZSgpLCBnZXRjX3VubG9ja2VkKCksIGFuZCBmdW5sb2NrZmlsZSgpICovCiAjdW5kZWYgSEFWRV9HRVRDX1VOTE9DS0VECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0Z3JvdXBsaXN0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVEdST1VQTElTVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGdyb3VwcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRHUk9VUFMKIApAQCAtMzU2LDYgKzM5OCwxMCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXR3ZCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRXRAogCisvKiBEZWZpbmUgaWYgZ2xpYmMgaGFzIGluY29ycmVjdCBfRk9SVElGWV9TT1VSQ0Ugd3JhcHBlcnMgZm9yIG1lbW1vdmUgYW5kCisgICBiY29weS4gKi8KKyN1bmRlZiBIQVZFX0dMSUJDX01FTU1PVkVfQlVHCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Z3JwLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfR1JQX0gKIApAQCAtMzY4LDYgKzQxNCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGllZWVmcC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lFRUVGUF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaWZfbmFtZWluZGV4JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0lGX05BTUVJTkRFWAorCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdpbmV0X2F0b24nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfSU5FVF9BVE9OCiAKQEAgLTM4Myw2ICs0MzIsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpby5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lPX0gKIAorLyogRGVmaW5lIGlmIGdjYyBoYXMgdGhlIGlwYS1wdXJlLWNvbnN0IGJ1Zy4gKi8KKyN1bmRlZiBIQVZFX0lQQV9QVVJFX0NPTlNUX0JVRworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtpbGwnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS0lMTAogCkBAIC00MzEsMjEgKzQ4MywzOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZXNvbHYnIGxpYnJhcnkgKC1scmVzb2x2KS4gKi8KICN1bmRlZiBIQVZFX0xJQlJFU09MVgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNlbmRmaWxlJyBsaWJyYXJ5ICgtbHNlbmRmaWxlKS4gKi8KKyN1bmRlZiBIQVZFX0xJQlNFTkRGSUxFCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGlidXRpbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJQlVUSUxfSAogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdsaW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xJTksKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsaW5rYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTElOS0FUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvY2FuLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElOVVhfQ0FOX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9jYW4vcmF3Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElOVVhfQ0FOX1JBV19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvbmV0bGluay5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX05FVExJTktfSAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L3RpcGMuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU5VWF9USVBDX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2NrZicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MT0NLRgorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvZzFwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xPRzFQCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbG9nMicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MT0cyCisKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgZG91YmxlLiAqLwogI3VuZGVmIEhBVkVfTE9OR19ET1VCTEUKIApAQCAtNDU1LDYgKzUyNSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxzdGF0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xTVEFUCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHV0aW1lcycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MVVRJTUVTCisKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSBtYWtlZGV2IG1hY3JvLiAqLwogI3VuZGVmIEhBVkVfTUFLRURFVgogCkBAIC00NjcsMTUgKzU0MCwzMCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9NRU1PUllfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbXJjaHInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUVNUkNIUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZGlyYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUtESVJBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZmlmbycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9NS0ZJRk8KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta2ZpZm9hdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NS0ZJRk9BVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rbm9kJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01LTk9ECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtub2RhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NS05PREFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWt0aW1lJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01LVElNRQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1tYXAnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTU1BUAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1yZW1hcCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9NUkVNQVAKIApAQCAtNDg4LDkgKzU3NiwxNSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRwYWNrZXQvcGFja2V0Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTkVUUEFDS0VUX1BBQ0tFVF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0L2lmLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUX0lGX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBuaWNlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX05JQ0UKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBvcGVuYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfT1BFTkFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgb3BlbnB0eScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9PUEVOUFRZCiAKQEAgLTUwMyw3ICs1OTcsNyBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwYXVzZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QQVVTRQogCi0vKiBEZWZpbmUgaWYgdGhlIE9TIHN1cHBvcnRzIHBpcGUyKCkgKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGlwZTInIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUElQRTIKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwbG9jaycgZnVuY3Rpb24uICovCkBAIC01MTUsNiArNjA5LDE1IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHBvbGwuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9QT0xMX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwb3NpeF9mYWR2aXNlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BPU0lYX0ZBRFZJU0UKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwb3NpeF9mYWxsb2NhdGUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUE9TSVhfRkFMTE9DQVRFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHJlYWQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUFJFQUQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwcm9jZXNzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfUFJPQ0VTU19ICiAKQEAgLTUzMCw2ICs2MzMsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwdGhyZWFkX2luaXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUFRIUkVBRF9JTklUCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHRocmVhZF9raWxsJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BUSFJFQURfS0lMTAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB0aHJlYWRfc2lnbWFzaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QVEhSRUFEX1NJR01BU0sKIApAQCAtNTM5LDEyICs2NDUsMjQgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHV0ZW52JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BVVEVOVgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB3cml0ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QV1JJVEUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFkbGluaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9SRUFETElOSwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWRsaW5rYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUkVBRExJTktBVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWR2JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1JFQURWCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhbHBhdGgnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUkVBTFBBVEgKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZW5hbWVhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9SRU5BTUVBVAorCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgcmVhZGxpbmUgMi4xICovCiAjdW5kZWYgSEFWRV9STF9DQUxMQkFDSwogCkBAIC01NjksNiArNjg3LDI0IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJvdW5kJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1JPVU5ECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2NoZWQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TQ0hFRF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfcnJfZ2V0X2ludGVydmFsJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNjaGVkX3NldGFmZmluaXR5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfc2V0cGFyYW0nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfU0VUUEFSQU0KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9zZXRzY2hlZHVsZXInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VsZWN0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFTEVDVAogCkBAIC01ODQsNiArNzIwLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VtX3VubGluaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TRU1fVU5MSU5LCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VuZGZpbGUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VOREZJTEUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRlZ2lkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFVEVHSUQKIApAQCAtNTk2LDYgKzczNSw5IEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdzZXRncm91cHMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUR1JPVVBTCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0aG9zdG5hbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VUSE9TVE5BTUUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRpdGltZXInIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUSVRJTUVSCiAKQEAgLTYwOCw2ICs3NTAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRwZ3JwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFVFBHUlAKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRwcmlvcml0eScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRVRQUklPUklUWQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldHJlZ2lkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFVFJFR0lECiAKQEAgLTYzNSwxNSArNzgwLDMwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ2FjdGlvbicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TSUdBQ1RJT04KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzaWdhbHRzdGFjaycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TSUdBTFRTVEFDSworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ2ludGVycnVwdCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TSUdJTlRFUlJVUFQKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzaWduYWwuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TSUdOQUxfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3BlbmRpbmcnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHUEVORElORworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3JlbHNlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NJR1JFTFNFCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lndGltZWR3YWl0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NJR1RJTUVEV0FJVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3dhaXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHV0FJVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3dhaXRpbmZvJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NJR1dBSVRJTkZPCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc25wcmludGYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU05QUklOVEYKIApAQCAtNzI3LDYgKzg4NywxMiBAQAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnc3ltbGluaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TWU1MSU5LCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3ltbGlua2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NZTUxJTktBVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN5bmMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1lOQworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN5c2NvbmYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1lTQ09ORgogCkBAIC03MzksNiArOTA1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2JzZHR0eS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19CU0RUVFlfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9kZXZwb2xsLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9kaXIuaD4gaGVhZGVyIGZpbGUsIGFuZCBpdCBkZWZpbmVzIGBESVInLgogICAgKi8KICN1bmRlZiBIQVZFX1NZU19ESVJfSApAQCAtNzUyLDYgKzkyMSwxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZmlsZS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19GSUxFX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvaW9jdGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfSU9DVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9rZXJuX2NvbnRyb2wuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfS0VSTl9DT05UUk9MX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvbG9hZGF2Zy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19MT0FEQVZHX0gKIApAQCAtNzgwLDYgKzk1NSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zZWxlY3QuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfU0VMRUNUX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc2VuZGZpbGUuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU0VOREZJTEVfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zb2NrZXQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfU09DS0VUX0gKIApAQCAtNzkyLDYgKzk3MCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zeXNjYWxsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1NZU0NBTExfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zeXNfZG9tYWluLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1NZU19ET01BSU5fSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90ZXJtaW8uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfVEVSTUlPX0gKIApAQCAtODA0LDYgKzk4NSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19UWVBFU19ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Vpby5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19VSU9fSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91bi5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19VTl9ICiAKQEAgLTgxMyw2ICs5OTcsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvd2FpdC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19XQUlUX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMveGF0dHIuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfWEFUVFJfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHRjZ2V0cGdycCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9UQ0dFVFBHUlAKIApAQCAtODMxLDkgKzEwMTgsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0Z2FtbWEnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVEdBTU1BCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dGhyZWFkLmg+IGhlYWRlciBmaWxlLiAqLwotI3VuZGVmIEhBVkVfVEhSRUFEX0gKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0aW1lZ20nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVElNRUdNCiAKQEAgLTg3Miw2ICsxMDU2LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVU5JU1REX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bmxpbmthdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9VTkxJTktBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVuc2V0ZW52JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1VOU0VURU5WCiAKQEAgLTg4Myw2ICsxMDcwLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dXRpbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1VUSUxfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHV0aW1lbnNhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9VVElNRU5TQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1dGltZXMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVVRJTUVTCiAKQEAgLTg5NSw2ICsxMDg1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2FpdDQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfV0FJVDQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3YWl0aWQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfV0FJVElECisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2FpdHBpZCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9XQUlUUElECiAKQEAgLTkxNCwyMSArMTEwNywxOCBAQAogICAgKi8KICN1bmRlZiBIQVZFX1dPUktJTkdfVFpTRVQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3cml0ZXYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfV1JJVEVWCisKIC8qIERlZmluZSBpZiB0aGUgemxpYiBsaWJyYXJ5IGhhcyBpbmZsYXRlQ29weSAqLwogI3VuZGVmIEhBVkVfWkxJQl9DT1BZCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgX2dldHB0eScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9fR0VUUFRZCiAKLS8qIERlZmluZSBpZiB5b3UgYXJlIHVzaW5nIE1hY2ggY3RocmVhZHMgZGlyZWN0bHkgdW5kZXIgL2luY2x1ZGUgKi8KLSN1bmRlZiBIVVJEX0NfVEhSRUFEUwotCiAvKiBEZWZpbmUgaWYgbG9nMXAoLTAuKSBpcyAwLiByYXRoZXIgdGhhbiAtMC4gKi8KICN1bmRlZiBMT0cxUF9EUk9QU19aRVJPX1NJR04KIAotLyogRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgTWFjaCBjdGhyZWFkcyB1bmRlciBtYWNoIC8gKi8KLSN1bmRlZiBNQUNIX0NfVEhSRUFEUwotCiAvKiBEZWZpbmUgdG8gMSBpZiBgbWFqb3InLCBgbWlub3InLCBhbmQgYG1ha2VkZXYnIGFyZSBkZWNsYXJlZCBpbiA8bWtkZXYuaD4uCiAgICAqLwogI3VuZGVmIE1BSk9SX0lOX01LREVWCkBAIC05NzMsMTggKzExNjMsMTIgQEAKIC8qIERlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBQeV9zc2l6ZV90ICovCiAjdW5kZWYgUFlfRk9STUFUX1NJWkVfVAogCi0vKiBEZWZpbmUgYXMgdGhlIGludGVncmFsIHR5cGUgdXNlZCBmb3IgVW5pY29kZSByZXByZXNlbnRhdGlvbi4gKi8KLSN1bmRlZiBQWV9VTklDT0RFX1RZUEUKLQogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGFuIGludGVycHJldGVyIHdpdGggbWFueSBydW4tdGltZSBjaGVja3MuICovCiAjdW5kZWYgUHlfREVCVUcKIAogLyogRGVmaW5lZCBpZiBQeXRob24gaXMgYnVpbHQgYXMgYSBzaGFyZWQgbGlicmFyeS4gKi8KICN1bmRlZiBQeV9FTkFCTEVfU0hBUkVECiAKLS8qIERlZmluZSBhcyB0aGUgc2l6ZSBvZiB0aGUgdW5pY29kZSB0eXBlLiAqLwotI3VuZGVmIFB5X1VOSUNPREVfU0laRQotCiAvKiBhc3N1bWUgQzg5IHNlbWFudGljcyB0aGF0IFJFVFNJR1RZUEUgaXMgYWx3YXlzIHZvaWQgKi8KICN1bmRlZiBSRVRTSUdUWVBFCiAKQEAgLTEwNTgsNiArMTI0Miw5IEBACiAvKiBEZWZpbmUgaWYgdGFuaCgtMC4pIGlzIC0wLiwgb3IgaWYgcGxhdGZvcm0gZG9lc24ndCBoYXZlIHNpZ25lZCB6ZXJvcyAqLwogI3VuZGVmIFRBTkhfUFJFU0VSVkVTX1pFUk9fU0lHTgogCisvKiBMaWJyYXJ5IG5lZWRlZCBieSB0aW1lbW9kdWxlLmM6IGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKSAqLworI3VuZGVmIFRJTUVNT0RVTEVfTElCCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBjYW4gc2FmZWx5IGluY2x1ZGUgYm90aCA8c3lzL3RpbWUuaD4gYW5kIDx0aW1lLmg+LiAqLwogI3VuZGVmIFRJTUVfV0lUSF9TWVNfVElNRQogCkBAIC0xMTcwLDE0ICsxMzU3LDExIEBACiAvKiBEZWZpbmUgb24gTmV0QlNEIHRvIGFjdGl2YXRlIGFsbCBsaWJyYXJ5IGZlYXR1cmVzICovCiAjdW5kZWYgX05FVEJTRF9TT1VSQ0UKIAotLyogRGVmaW5lIF9PU0ZfU09VUkNFIHRvIGdldCB0aGUgbWFrZWRldiBtYWNyby4gKi8KLSN1bmRlZiBfT1NGX1NPVVJDRQotCiAvKiBEZWZpbmUgdG8gMiBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHByb3ZpZGUgUE9TSVguMSBmZWF0dXJlcyBleGNlcHQgd2l0aAogICAgdGhpcyBkZWZpbmVkLiAqLwogI3VuZGVmIF9QT1NJWF8xX1NPVVJDRQogCi0vKiBEZWZpbmUgdG8gYWN0aXZhdGUgZmVhdHVyZXMgZnJvbSBJRUVFIFN0ZHMgMTAwMy4xLTIwMDEgKi8KKy8qIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElFRUUgU3RkcyAxMDAzLjEtMjAwOCAqLwogI3VuZGVmIF9QT1NJWF9DX1NPVVJDRQogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgbmVlZCB0byBpbiBvcmRlciBmb3IgYHN0YXQnIGFuZCBvdGhlciB0aGluZ3MgdG8gd29yay4gKi8KZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggNjVhY2I5OS4uN2Y4NjNhNCAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTEsOCArMSw2IEBACiAjIEF1dG9kZXRlY3Rpbmcgc2V0dXAucHkgc2NyaXB0IGZvciBidWlsZGluZyB0aGUgUHl0aG9uIGV4dGVuc2lvbnMKICMKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogaW1wb3J0IHN5cywgb3MsIGltcCwgcmUsIG9wdHBhcnNlCiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKIGltcG9ydCBzeXNjb25maWcKQEAgLTE3LDggKzE1LDIwIEBACiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX3NjcmlwdHMgaW1wb3J0IGJ1aWxkX3NjcmlwdHMKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKIAorY3Jvc3NfY29tcGlsaW5nID0gIl9QWVRIT05fSE9TVF9QTEFURk9STSIgaW4gb3MuZW52aXJvbgorCitkZWYgZ2V0X3BsYXRmb3JtKCk6CisgICAgIyBjcm9zcyBidWlsZAorICAgIGlmICJfUFlUSE9OX0hPU1RfUExBVEZPUk0iIGluIG9zLmVudmlyb246CisgICAgICAgIHJldHVybiBvcy5lbnZpcm9uWyJfUFlUSE9OX0hPU1RfUExBVEZPUk0iXQorICAgICMgR2V0IHZhbHVlIG9mIHN5cy5wbGF0Zm9ybQorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdvc2YxJyk6CisgICAgICAgIHJldHVybiAnb3NmMScKKyAgICByZXR1cm4gc3lzLnBsYXRmb3JtCitob3N0X3BsYXRmb3JtID0gZ2V0X3BsYXRmb3JtKCkKKwogIyBXZXJlIHdlIGNvbXBpbGVkIC0td2l0aC1weWRlYnVnIG9yIHdpdGggI2RlZmluZSBQeV9ERUJVRz8KLUNPTVBJTEVEX1dJVEhfUFlERUJVRyA9IGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpCitDT01QSUxFRF9XSVRIX1BZREVCVUcgPSAoJy0td2l0aC1weWRlYnVnJyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIikpCiAKICMgVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCB0byBob2xkIHRoZSBsaXN0IG9mIG1vZHVsZXMgdG8gYmUgZGlzYWJsZWQuCiBkaXNhYmxlZF9tb2R1bGVfbGlzdCA9IFtdCkBAIC01OSw3ICs2OSw2IEBACiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmICdwYXRoJyBjYW4gYmUgbG9jYXRlZCBpbiBhbiBPU1ggU0RLCiAgICAgIiIiCi0gICAgcmV0dXJuIChwYXRoLnN0YXJ0c3dpdGgoJy91c3IvJykgYW5kIG5vdCBwYXRoLnN0YXJ0c3dpdGgoJy91c3IvbG9jYWwnKSkgb3IgcGF0aC5zdGFydHN3aXRoKCcvU3lzdGVtLycpCiAgICAgcmV0dXJuICggKHBhdGguc3RhcnRzd2l0aCgnL3Vzci8nKSBhbmQgbm90IHBhdGguc3RhcnRzd2l0aCgnL3Vzci9sb2NhbCcpKQogICAgICAgICAgICAgICAgIG9yIHBhdGguc3RhcnRzd2l0aCgnL1N5c3RlbS8nKQogICAgICAgICAgICAgICAgIG9yIHBhdGguc3RhcnRzd2l0aCgnL0xpYnJhcnkvJykgKQpAQCAtNzUsNyArODQsNyBAQAogICAgICdwYXRocycgaXMgYSBsaXN0IG9mIGFkZGl0aW9uYWwgbG9jYXRpb25zIHRvIGNoZWNrOyBpZiB0aGUgZmlsZSBpcwogICAgICAgICBmb3VuZCBpbiBvbmUgb2YgdGhlbSwgdGhlIHJlc3VsdGluZyBsaXN0IHdpbGwgY29udGFpbiB0aGUgZGlyZWN0b3J5LgogICAgICIiIgotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAjIEhvbm9yIHRoZSBNYWNPU1ggU0RLIHNldHRpbmcgd2hlbiBvbmUgd2FzIHNwZWNpZmllZC4KICAgICAgICAgIyBBbiBTREsgaXMgYSBkaXJlY3Rvcnkgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgYSByZWFsCiAgICAgICAgICMgc3lzdGVtLCBidXQgd2l0aCBvbmx5IGhlYWRlciBmaWxlcyBhbmQgbGlicmFyaWVzLgpAQCAtODUsNyArOTQsNyBAQAogICAgIGZvciBkaXIgaW4gc3RkX2RpcnM6CiAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkaXIpOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZGlyWzE6XSwgZmlsZW5hbWUpCiAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZik6IHJldHVybiBbXQpAQCAtOTQsNyArMTAzLDcgQEAKICAgICBmb3IgZGlyIGluIHBhdGhzOgogICAgICAgICBmID0gb3MucGF0aC5qb2luKGRpciwgZmlsZW5hbWUpCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKGRpcik6CiAgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsIGRpclsxOl0sIGZpbGVuYW1lKQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGYpOgpAQCAtMTA4LDcgKzExNyw3IEBACiAgICAgaWYgcmVzdWx0IGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgc3lzcm9vdCA9IG1hY29zeF9zZGtfcm9vdCgpCiAKICAgICAjIENoZWNrIHdoZXRoZXIgdGhlIGZvdW5kIGZpbGUgaXMgaW4gb25lIG9mIHRoZSBzdGFuZGFyZCBkaXJlY3RvcmllcwpAQCAtMTE3LDcgKzEyNiw3IEBACiAgICAgICAgICMgRW5zdXJlIHBhdGggZG9lc24ndCBlbmQgd2l0aCBwYXRoIHNlcGFyYXRvcgogICAgICAgICBwID0gcC5yc3RyaXAob3Muc2VwKQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKHApOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgocCk6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgcFsxOl0pID09IGRpcm5hbWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFsgXQogCkBAIC0xMzAsNyArMTM5LDcgQEAKICAgICAgICAgIyBFbnN1cmUgcGF0aCBkb2Vzbid0IGVuZCB3aXRoIHBhdGggc2VwYXJhdG9yCiAgICAgICAgIHAgPSBwLnJzdHJpcChvcy5zZXApCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgocCk6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChwKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguam9pbihzeXNyb290LCBwWzE6XSkgPT0gZGlybmFtZToKICAgICAgICAgICAgICAgICByZXR1cm4gWyBwIF0KIApAQCAtMTkxLDkgKzIwMCw2IEBACiAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguYWJzcGF0aChzcmNkaXIpCiAgICAgICAgIG1vZGRpcmxpc3QgPSBbb3MucGF0aC5qb2luKHNyY2RpciwgJ01vZHVsZXMnKV0KIAotICAgICAgICAjIFBsYXRmb3JtLWRlcGVuZGVudCBtb2R1bGUgc291cmNlIGFuZCBpbmNsdWRlIGRpcmVjdG9yaWVzCi0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRfcGxhdGZvcm0oKQotCiAgICAgICAgICMgRml4IHVwIHRoZSBwYXRocyBmb3Igc2NyaXB0cywgdG9vCiAgICAgICAgIHNlbGYuZGlzdHJpYnV0aW9uLnNjcmlwdHMgPSBbb3MucGF0aC5qb2luKHNyY2RpciwgZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIHNlbGYuZGlzdHJpYnV0aW9uLnNjcmlwdHNdCkBAIC0zMDgsNyArMzE0LDcgQEAKICAgICAgICAgICAgICAgICBleHQubmFtZSkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmIHNlbGYuZ2V0X3BsYXRmb3JtKCkgPT0gJ2RhcndpbicgYW5kICgKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgKAogICAgICAgICAgICAgICAgIHN5cy5tYXhzaXplID4gMioqMzIgYW5kICctYXJjaCcgaW4gZXh0LmV4dHJhX2xpbmtfYXJncyk6CiAgICAgICAgICAgICAjIERvbid0IGJvdGhlciBkb2luZyBhbiBpbXBvcnQgY2hlY2sgd2hlbiBhbiBleHRlbnNpb24gd2FzCiAgICAgICAgICAgICAjIGJ1aWxkIHdpdGggYW4gZXhwbGljaXQgJy1hcmNoJyBmbGFnIG9uIE9TWC4gVGhhdCdzIGN1cnJlbnRseQpAQCAtMzIyLDcgKzMyOCw3IEBACiAKICAgICAgICAgIyBXb3JrYXJvdW5kIGZvciBDeWd3aW46IEN5Z3dpbiBjdXJyZW50bHkgaGFzIGZvcmsgaXNzdWVzIHdoZW4gbWFueQogICAgICAgICAjIG1vZHVsZXMgaGF2ZSBiZWVuIGltcG9ydGVkCi0gICAgICAgIGlmIHNlbGYuZ2V0X3BsYXRmb3JtKCkgPT0gJ2N5Z3dpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2N5Z3dpbic6CiAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCdXQVJOSU5HOiBza2lwcGluZyBpbXBvcnQgY2hlY2sgZm9yIEN5Z3dpbi1iYXNlZCAiJXMiJwogICAgICAgICAgICAgICAgICUgZXh0Lm5hbWUpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTMzNSw2ICszNDEsMTAgQEAKICAgICAgICAgIyBjYWNoZWQuICBDbGVhciB0aGF0IGNhY2hlIGJlZm9yZSB0cnlpbmcgdG8gaW1wb3J0LgogICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCiAKKyAgICAgICAgIyBEb24ndCB0cnkgdG8gbG9hZCBleHRlbnNpb25zIGZvciBjcm9zcyBidWlsZHMKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wLmxvYWRfZHluYW1pYyhleHQubmFtZSwgZXh0X2ZpbGVuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgd2h5OgpAQCAtMzY2LDI0ICszNzYsNDEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MykKICAgICAgICAgICAgIHNlbGYuZmFpbGVkLmFwcGVuZChleHQubmFtZSkKIAotICAgIGRlZiBnZXRfcGxhdGZvcm0oc2VsZik6Ci0gICAgICAgICMgR2V0IHZhbHVlIG9mIHN5cy5wbGF0Zm9ybQotICAgICAgICBmb3IgcGxhdGZvcm0gaW4gWydjeWd3aW4nLCAnZGFyd2luJywgJ29zZjEnXToKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKHBsYXRmb3JtKToKLSAgICAgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm0KLSAgICAgICAgcmV0dXJuIHN5cy5wbGF0Zm9ybQotCiAgICAgZGVmIGFkZF9tdWx0aWFyY2hfcGF0aHMoc2VsZik6CiAgICAgICAgICMgRGViaWFuL1VidW50dSBtdWx0aWFyY2ggc3VwcG9ydC4KICAgICAgICAgIyBodHRwczovL3dpa2kudWJ1bnR1LmNvbS9NdWx0aWFyY2hTcGVjCi0gICAgICAgIGlmIG5vdCBmaW5kX2V4ZWN1dGFibGUoJ2Rwa2ctYXJjaGl0ZWN0dXJlJyk6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgY2MgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NDJykKICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdtdWx0aWFyY2gnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKAotICAgICAgICAgICAgJ2Rwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfTVVMVElBUkNIID4gJXMgMj4gL2Rldi9udWxsJyAlCi0gICAgICAgICAgICB0bXBmaWxlKQorICAgICAgICAgICAgJyVzIC1wcmludC1tdWx0aWFyY2ggPiAlcyAyPiAvZGV2L251bGwnICUgKGNjLCB0bXBmaWxlKSkKKyAgICAgICAgbXVsdGlhcmNoX3BhdGhfY29tcG9uZW50ID0gJycKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgcmV0ID4+IDggPT0gMDoKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4odG1wZmlsZSkgYXMgZnA6CisgICAgICAgICAgICAgICAgICAgIG11bHRpYXJjaF9wYXRoX2NvbXBvbmVudCA9IGZwLnJlYWRsaW5lKCkuc3RyaXAoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rKHRtcGZpbGUpCisKKyAgICAgICAgaWYgbXVsdGlhcmNoX3BhdGhfY29tcG9uZW50ICE9ICcnOgorICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2xpYi8nICsgbXVsdGlhcmNoX3BhdGhfY29tcG9uZW50KQorICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2luY2x1ZGUvJyArIG11bHRpYXJjaF9wYXRoX2NvbXBvbmVudCkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIG5vdCBmaW5kX2V4ZWN1dGFibGUoJ2Rwa2ctYXJjaGl0ZWN0dXJlJyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgb3B0ID0gJycKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgb3B0ID0gJy10JyArIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSE9TVF9HTlVfVFlQRScpCisgICAgICAgIHRtcGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF90ZW1wLCAnbXVsdGlhcmNoJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfdGVtcCk6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLmJ1aWxkX3RlbXApCisgICAgICAgIHJldCA9IG9zLnN5c3RlbSgKKyAgICAgICAgICAgICdkcGtnLWFyY2hpdGVjdHVyZSAlcyAtcURFQl9IT1NUX01VTFRJQVJDSCA+ICVzIDI+IC9kZXYvbnVsbCcgJQorICAgICAgICAgICAgKG9wdCwgdG1wZmlsZSkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHJldCA+PiA4ID09IDA6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHRtcGZpbGUpIGFzIGZwOgpAQCAtMzk1LDEyICs0MjIsNDggQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLnVubGluayh0bXBmaWxlKQogCisgICAgZGVmIGFkZF9nY2NfcGF0aHMoc2VsZik6CisgICAgICAgIGdjYyA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQ0MnKQorICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ2djY3BhdGhzJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfdGVtcCk6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLmJ1aWxkX3RlbXApCisgICAgICAgIHJldCA9IG9zLnN5c3RlbSgnJXMgLUUgLXYgLSA8L2Rldi9udWxsIDI+JXMgMT4vZGV2L251bGwnICUgKGdjYywgdG1wZmlsZSkpCisgICAgICAgIGlzX2djYyA9IEZhbHNlCisgICAgICAgIGluX2luY2RpcnMgPSBGYWxzZQorICAgICAgICBpbmNfZGlycyA9IFtdCisgICAgICAgIGxpYl9kaXJzID0gW10KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgcmV0ID4+IDggPT0gMDoKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4odG1wZmlsZSkgYXMgZnA6CisgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGZwLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJnY2MgdmVyc2lvbiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2djYyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCIjaW5jbHVkZSA8Li4uPiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2luY2RpcnMgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgiRW5kIG9mIHNlYXJjaCBsaXN0Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5faW5jZGlycyA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGlzX2djYyBhbmQgbGluZS5zdGFydHN3aXRoKCJMSUJSQVJZX1BBVEgiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZCBpbiBsaW5lLnN0cmlwKCkuc3BsaXQoIj0iKVsxXS5zcGxpdCgiOiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gb3MucGF0aC5ub3JtcGF0aChkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnL2djYy8nIG5vdCBpbiBkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGlzX2djYyBhbmQgaW5faW5jZGlycyBhbmQgJy9nY2MvJyBub3QgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuc3RyaXAoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnVubGluayh0bXBmaWxlKQorCiAgICAgZGVmIGRldGVjdF9tb2R1bGVzKHNlbGYpOgogICAgICAgICAjIEVuc3VyZSB0aGF0IC91c3IvbG9jYWwgaXMgYWx3YXlzIHVzZWQsIGJ1dCB0aGUgbG9jYWwgYnVpbGQKICAgICAgICAgIyBkaXJlY3RvcmllcyAoaS5lLiAnLicgYW5kICdJbmNsdWRlJykgbXVzdCBiZSBmaXJzdC4gIFNlZSBpc3N1ZQogICAgICAgICAjIDEwNTIwLgotICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsICcvdXNyL2xvY2FsL2xpYicpCi0gICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCisgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsICcvdXNyL2xvY2FsL2xpYicpCisgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsICcvdXNyL2xvY2FsL2luY2x1ZGUnKQorICAgICAgICAjIG9ubHkgY2hhbmdlIHRoaXMgZm9yIGNyb3NzIGJ1aWxkcyBmb3IgMy4zLCBpc3N1ZXMgb24gTWFnZWlhCisgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIHNlbGYuYWRkX2djY19wYXRocygpCiAgICAgICAgIHNlbGYuYWRkX211bHRpYXJjaF9wYXRocygpCiAKICAgICAgICAgIyBBZGQgcGF0aHMgc3BlY2lmaWVkIGluIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgTERGTEFHUyBhbmQKQEAgLTQzNyw3ICs1MDAsNyBAQAogICAgICAgICAgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIHJldmVyc2VkKG9wdGlvbnMuZGlycyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3QoZGlyX2xpc3QsIGRpcmVjdG9yeSkKIAotICAgICAgICBpZiBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpICE9ICcvdXNyJyBcCisgICAgICAgIGlmIG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfcHJlZml4KSAhPSAnL3VzcicgXAogICAgICAgICAgICAgICAgIGFuZCBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWVRIT05GUkFNRVdPUksnKToKICAgICAgICAgICAgICMgT1NYIG5vdGU6IERvbid0IGFkZCBMSUJESVIgYW5kIElOQ0xVREVESVIgdG8gYnVpbGRpbmcgYSBmcmFtZXdvcmsKICAgICAgICAgICAgICMgKFBZVEhPTkZSQU1FV09SSyBpcyBzZXQpIHRvIGF2b2lkICMgbGlua2luZyBwcm9ibGVtcyB3aGVuCkBAIC00NTEsMTEgKzUxNCwxMiBAQAogICAgICAgICAjIGxpYl9kaXJzIGFuZCBpbmNfZGlycyBhcmUgdXNlZCB0byBzZWFyY2ggZm9yIGZpbGVzOwogICAgICAgICAjIGlmIGEgZmlsZSBpcyBmb3VuZCBpbiBvbmUgb2YgdGhvc2UgZGlyZWN0b3JpZXMsIGl0IGNhbgogICAgICAgICAjIGJlIGFzc3VtZWQgdGhhdCBubyBhZGRpdGlvbmFsIC1JLC1MIGRpcmVjdGl2ZXMgYXJlIG5lZWRlZC4KLSAgICAgICAgbGliX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycyArIFsKLSAgICAgICAgICAgICcvbGliNjQnLCAnL3Vzci9saWI2NCcsCi0gICAgICAgICAgICAnL2xpYicsICcvdXNyL2xpYicsCi0gICAgICAgICAgICBdCi0gICAgICAgIGluY19kaXJzID0gc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMgKyBbJy91c3IvaW5jbHVkZSddCisgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICBsaWJfZGlycyA9IHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzICsgWworICAgICAgICAgICAgICAgICcvbGliNjQnLCAnL3Vzci9saWI2NCcsCisgICAgICAgICAgICAgICAgJy9saWInLCAnL3Vzci9saWInLAorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGluY19kaXJzID0gc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMgKyBbJy91c3IvaW5jbHVkZSddCiAgICAgICAgIGV4dHMgPSBbXQogICAgICAgICBtaXNzaW5nID0gW10KIApAQCAtNDYzLDE4ICs1MjcsMTcgQEAKICAgICAgICAgd2l0aCBvcGVuKGNvbmZpZ19oKSBhcyBmaWxlOgogICAgICAgICAgICAgY29uZmlnX2hfdmFycyA9IHN5c2NvbmZpZy5wYXJzZV9jb25maWdfaChmaWxlKQogCi0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRfcGxhdGZvcm0oKQogICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCiAKICAgICAgICAgIyBPU0YvMSBhbmQgVW5peHdhcmUgaGF2ZSBzb21lIHN0dWZmIGluIC91c3IvY2NzL2xpYiAobGlrZSAtbGRiKQotICAgICAgICBpZiBwbGF0Zm9ybSBpbiBbJ29zZjEnLCAndW5peHdhcmU3JywgJ29wZW51bml4OCddOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtIGluIFsnb3NmMScsICd1bml4d2FyZTcnLCAnb3BlbnVuaXg4J106CiAgICAgICAgICAgICBsaWJfZGlycyArPSBbJy91c3IvY2NzL2xpYiddCiAKICAgICAgICAgIyBIUC1VWDExaXYzIGtlZXBzIGZpbGVzIGluIGxpYi9ocHV4IGZvbGRlcnMuCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdocC11eDExJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnaHAtdXgxMSc6CiAgICAgICAgICAgICBsaWJfZGlycyArPSBbJy91c3IvbGliL2hwdXg2NCcsICcvdXNyL2xpYi9ocHV4MzInXQogCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgIyBUaGlzIHNob3VsZCB3b3JrIG9uIGFueSB1bml4eSBwbGF0Zm9ybSA7LSkKICAgICAgICAgICAgICMgSWYgdGhlIHVzZXIgaGFzIGJvdGhlcmVkIHNwZWNpZnlpbmcgYWRkaXRpb25hbCAtSSBhbmQgLUwgZmxhZ3MKICAgICAgICAgICAgICMgaW4gT1BUIGFuZCBMREZMQUdTIHdlIG1pZ2h0IGFzIHdlbGwgdXNlIHRoZW0gaGVyZS4KQEAgLTQ5NCw3ICs1NTcsNyBAQAogCiAgICAgICAgICMgQ2hlY2sgZm9yIE1hY09TIFgsIHdoaWNoIGRvZXNuJ3QgbmVlZCBsaWJtLmEgYXQgYWxsCiAgICAgICAgIG1hdGhfbGlicyA9IFsnbSddCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgbWF0aF9saWJzID0gW10KIAogICAgICAgICAjIFhYWCBPbWl0dGVkIG1vZHVsZXM6IGdsLCBwdXJlLCBkbCwgU0dJLXNwZWNpZmljIG1vZHVsZXMKQEAgLTUxNCwxMSArNTc3LDE3IEBACiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ21hdGgnLCAgWydtYXRobW9kdWxlLmMnLCAnX21hdGguYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydfbWF0aC5oJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPW1hdGhfbGlicykgKQorCisgICAgICAgICMgdGltZSBsaWJyYXJpZXM6IGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKQorICAgICAgICB0aW1lX2xpYnMgPSBbXQorICAgICAgICBsaWIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1RJTUVNT0RVTEVfTElCJykKKyAgICAgICAgaWYgbGliOgorICAgICAgICAgICAgdGltZV9saWJzLmFwcGVuZChsaWIpCisKICAgICAgICAgIyB0aW1lIG9wZXJhdGlvbnMgYW5kIHZhcmlhYmxlcwotICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCd0aW1lJywgWyd0aW1lbW9kdWxlLmMnLCAnX3RpbWUuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1tYXRoX2xpYnMpICkKLSAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2RhdGV0aW1lJywgWydfZGF0ZXRpbWVtb2R1bGUuYycsICdfdGltZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPW1hdGhfbGlicykgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCd0aW1lJywgWyd0aW1lbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9dGltZV9saWJzKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19kYXRldGltZScsIFsnX2RhdGV0aW1lbW9kdWxlLmMnXSkgKQogICAgICAgICAjIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGltcGxlbWVudGVkIGluIEMKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigiX3JhbmRvbSIsIFsiX3JhbmRvbW1vZHVsZS5jIl0pICkKICAgICAgICAgIyBiaXNlY3QKQEAgLTUzNCw2ICs2MDMsOCBAQAogICAgICAgICAjIFB5dGhvbiBDIEFQSSB0ZXN0IG1vZHVsZQogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfdGVzdGNhcGknLCBbJ190ZXN0Y2FwaW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ3Rlc3RjYXBpX2xvbmcuaCddKSApCisgICAgICAgICMgUHl0aG9uIFBFUC0zMTE4IChidWZmZXIgcHJvdG9jb2wpIHRlc3QgbW9kdWxlCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0YnVmZmVyJywgWydfdGVzdGJ1ZmZlci5jJ10pICkKICAgICAgICAgIyBwcm9maWxlciAoX2xzcHJvZiBpcyBmb3IgY1Byb2ZpbGUucHkpCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19sc3Byb2YnLCBbJ19sc3Byb2YuYycsICdyb3RhdGluZ3RyZWUuYyddKSApCiAgICAgICAgICMgc3RhdGljIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlCkBAIC01OTEsMTMgKzY2MiwyMCBAQAogICAgICAgICBkb19yZWFkbGluZSA9IHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICdyZWFkbGluZScpCiAgICAgICAgIHJlYWRsaW5lX3Rlcm1jYXBfbGlicmFyeSA9ICIiCiAgICAgICAgIGN1cnNlc19saWJyYXJ5ID0gIiIKKyAgICAgICAgIyBDYW5ub3QgdXNlIG9zLnBvcGVuIGhlcmUgaW4gcHkzay4KKyAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdyZWFkbGluZV90ZXJtY2FwX2xpYicpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmJ1aWxkX3RlbXApOgorICAgICAgICAgICAgb3MubWFrZWRpcnMoc2VsZi5idWlsZF90ZW1wKQogICAgICAgICAjIERldGVybWluZSBpZiByZWFkbGluZSBpcyBhbHJlYWR5IGxpbmtlZCBhZ2FpbnN0IGN1cnNlcyBvciB0aW5mby4KLSAgICAgICAgaWYgZG9fcmVhZGxpbmUgYW5kIGZpbmRfZXhlY3V0YWJsZSgnbGRkJyk6Ci0gICAgICAgICAgICAjIENhbm5vdCB1c2Ugb3MucG9wZW4gaGVyZSBpbiBweTNrLgotICAgICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdyZWFkbGluZV90ZXJtY2FwX2xpYicpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKLSAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLmJ1aWxkX3RlbXApCi0gICAgICAgICAgICByZXQgPSBvcy5zeXN0ZW0oImxkZCAlcyA+ICVzIiAlIChkb19yZWFkbGluZSwgdG1wZmlsZSkpCisgICAgICAgIGlmIGRvX3JlYWRsaW5lOgorICAgICAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbSgiJXMgLWQgJXMgfCBncmVwICcoTkVFREVEKScgPiAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1JFQURFTEYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9fcmVhZGxpbmUsIHRtcGZpbGUpKQorICAgICAgICAgICAgZWxpZiBmaW5kX2V4ZWN1dGFibGUoJ2xkZCcpOgorICAgICAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbSgibGRkICVzID4gJXMiICUgKGRvX3JlYWRsaW5lLCB0bXBmaWxlKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0ID0gMjU2CiAgICAgICAgICAgICBpZiByZXQgPj4gOCA9PSAwOgogICAgICAgICAgICAgICAgIHdpdGggb3Blbih0bXBmaWxlKSBhcyBmcDoKICAgICAgICAgICAgICAgICAgICAgZm9yIGxuIGluIGZwOgpAQCAtNjEwLDcgKzY4OCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAndGluZm8nIGluIGxuOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRsaW5lX3Rlcm1jYXBfbGlicmFyeSA9ICd0aW5mbycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgb3MudW5saW5rKHRtcGZpbGUpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0bXBmaWxlKToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsodG1wZmlsZSkKICAgICAgICAgIyBJc3N1ZSA3Mzg0OiBJZiByZWFkbGluZSBpcyBhbHJlYWR5IGxpbmtlZCBhZ2FpbnN0IGN1cnNlcywKICAgICAgICAgIyB1c2UgdGhlIHNhbWUgbGlicmFyeSBmb3IgdGhlIHJlYWRsaW5lIGFuZCBjdXJzZXMgbW9kdWxlcy4KICAgICAgICAgaWYgJ2N1cnNlcycgaW4gcmVhZGxpbmVfdGVybWNhcF9saWJyYXJ5OgpAQCAtNjIyLDcgKzcwMSw3IEBACiAgICAgICAgIGVsaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ2N1cnNlcycpOgogICAgICAgICAgICAgY3Vyc2VzX2xpYnJhcnkgPSAnY3Vyc2VzJwogCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgb3NfcmVsZWFzZSA9IGludChvcy51bmFtZSgpWzJdLnNwbGl0KCcuJylbMF0pCiAgICAgICAgICAgICBkZXBfdGFyZ2V0ID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnKQogICAgICAgICAgICAgaWYgZGVwX3RhcmdldCBhbmQgZGVwX3RhcmdldC5zcGxpdCgnLicpIDwgWycxMCcsICc1J106CkBAIC02MzQsNyArNzEzLDcgQEAKICAgICAgICAgICAgICAgICBpZiBmaW5kX2ZpbGUoJ3JlYWRsaW5lL3JsY29uZi5oJywgaW5jX2RpcnMsIFtdKSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBkb19yZWFkbGluZSA9IEZhbHNlCiAgICAgICAgIGlmIGRvX3JlYWRsaW5lOgotICAgICAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIG9zX3JlbGVhc2UgPCA5OgorICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgb3NfcmVsZWFzZSA8IDk6CiAgICAgICAgICAgICAgICAgIyBJbiBldmVyeSBkaXJlY3Rvcnkgb24gdGhlIHNlYXJjaCBwYXRoIHNlYXJjaCBmb3IgYSBkeW5hbWljCiAgICAgICAgICAgICAgICAgIyBsaWJyYXJ5IGFuZCB0aGVuIGEgc3RhdGljIGxpYnJhcnksIGluc3RlYWQgb2YgZmlyc3QgbG9va2luZwogICAgICAgICAgICAgICAgICMgZm9yIGR5bmFtaWMgbGlicmFyaWVzIG9uIHRoZSBlbnRpcmUgcGF0aC4KQEAgLTY2Niw3ICs3NDUsNyBAQAogICAgICAgICAgICAgbGlicyA9IFsnY3J5cHQnXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbGlicyA9IFtdCi0gICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ2NyeXB0JywgWydjcnlwdG1vZHVsZS5jJ10sIGxpYnJhcmllcz1saWJzKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jcnlwdCcsIFsnX2NyeXB0bW9kdWxlLmMnXSwgbGlicmFyaWVzPWxpYnMpICkKIAogICAgICAgICAjIENTViBmaWxlcwogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfY3N2JywgWydfY3N2LmMnXSkgKQpAQCAtNzE1LDcgKzc5NCw3IEBACiAgICAgICAgICAgICAgICAgaW5jX2RpcnMgKyBzZWFyY2hfZm9yX3NzbF9pbmNzX2luKQogICAgICAgICBpZiBvcGVuc3Nsdl9oOgogICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihvcGVuc3Nsdl9oWzBdLCAnb3BlbnNzbC9vcGVuc3Nsdi5oJykKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKG5hbWUpOgorICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKG5hbWUpOgogICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4obWFjb3N4X3Nka19yb290KCksIG5hbWVbMTpdKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHdpdGggb3BlbihuYW1lLCAncicpIGFzIGluY2ZpbGU6CkBAIC03NDcsMjAgKzgyNiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgIG9wZW5zc2xfdmVyKQogICAgICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfaGFzaGxpYicpCiAKLSAgICAgICAgbWluX3NoYTJfb3BlbnNzbF92ZXIgPSAweDAwOTA4MDAwCi0gICAgICAgIGlmIENPTVBJTEVEX1dJVEhfUFlERUJVRyBvciBvcGVuc3NsX3ZlciA8IG1pbl9zaGEyX29wZW5zc2xfdmVyOgotICAgICAgICAgICAgIyBPcGVuU1NMIGRvZXNuJ3QgZG8gdGhlc2UgdW50aWwgMC45Ljggc28gd2UnbGwgYnJpbmcgb3VyIG93biBoYXNoCi0gICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMjU2JywgWydzaGEyNTZtb2R1bGUuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsnaGFzaGxpYi5oJ10pICkKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGE1MTInLCBbJ3NoYTUxMm1vZHVsZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQotCi0gICAgICAgIGlmIENPTVBJTEVEX1dJVEhfUFlERUJVRyBvciBub3QgaGF2ZV91c2FibGVfb3BlbnNzbDoKLSAgICAgICAgICAgICMgbm8gb3BlbnNzbCBhdCBhbGwsIHVzZSBvdXIgb3duIG1kNSBhbmQgc2hhMQotICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX21kNScsIFsnbWQ1bW9kdWxlLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCi0gICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMScsIFsnc2hhMW1vZHVsZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQorICAgICAgICAjIFdlIGFsd2F5cyBjb21waWxlIHRoZXNlIGV2ZW4gd2hlbiBPcGVuU1NMIGlzIGF2YWlsYWJsZSAoaXNzdWUgIzE0NjkzKS4KKyAgICAgICAgIyBJdCdzIGhhcm1sZXNzIGFuZCB0aGUgb2JqZWN0IGNvZGUgaXMgdGlueSAoNDAtNTAgS0IgcGVyIG1vZHVsZSwKKyAgICAgICAgIyBvbmx5IGxvYWRlZCB3aGVuIGFjdHVhbGx5IHVzZWQpLgorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMjU2JywgWydzaGEyNTZtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhNTEyJywgWydzaGE1MTJtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfbWQ1JywgWydtZDVtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMScsIFsnc2hhMW1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCiAKICAgICAgICAgIyBNb2R1bGVzIHRoYXQgcHJvdmlkZSBwZXJzaXN0ZW50IGRpY3Rpb25hcnktbGlrZSBzZW1hbnRpY3MuICBZb3Ugd2lsbAogICAgICAgICAjIHByb2JhYmx5IHdhbnQgdG8gYXJyYW5nZSBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZW0gdG8gYmUgYXZhaWxhYmxlIG9uCkBAIC03NzcsNyArODUzLDcgQEAKICAgICAgICAgIyBhIHJlbGVhc2UuICBNb3N0IG9wZW4gc291cmNlIE9TZXMgY29tZSB3aXRoIG9uZSBvciBtb3JlCiAgICAgICAgICMgdmVyc2lvbnMgb2YgQmVya2VsZXlEQiBhbHJlYWR5IGluc3RhbGxlZC4KIAotICAgICAgICBtYXhfZGJfdmVyID0gKDUsIDEpCisgICAgICAgIG1heF9kYl92ZXIgPSAoNSwgMykKICAgICAgICAgbWluX2RiX3ZlciA9ICgzLCAzKQogICAgICAgICBkYl9zZXR1cF9kZWJ1ZyA9IEZhbHNlICAgIyB2ZXJib3NlIGRlYnVnIHByaW50cyBmcm9tIHRoaXMgc2NyaXB0PwogCkBAIC04MzQsNiArOTEwLDkgQEAKICAgICAgICAgICAgIGRiX2luY19wYXRocy5hcHBlbmQoJy9wa2cvZGItMy4lZC9pbmNsdWRlJyAlIHgpCiAgICAgICAgICAgICBkYl9pbmNfcGF0aHMuYXBwZW5kKCcvb3B0L2RiLTMuJWQvaW5jbHVkZScgJSB4KQogCisgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIGRiX2luY19wYXRocyA9IFtdCisKICAgICAgICAgIyBBZGQgc29tZSBjb21tb24gc3ViZGlyZWN0b3JpZXMgZm9yIFNsZWVweWNhdCBEQiB0byB0aGUgbGlzdCwKICAgICAgICAgIyBiYXNlZCBvbiB0aGUgc3RhbmRhcmQgaW5jbHVkZSBkaXJlY3Rvcmllcy4gVGhpcyB3YXkgREIzLzQgZ2V0cwogICAgICAgICAjIHBpY2tlZCB1cCB3aGVuIGl0IGlzIGluc3RhbGxlZCBpbiBhIG5vbi1zdGFuZGFyZCBwcmVmaXggYW5kCkBAIC04NTQsNyArOTMzLDcgQEAKIAogICAgICAgICBkYl92ZXJfaW5jX21hcCA9IHt9CiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgc3lzcm9vdCA9IG1hY29zeF9zZGtfcm9vdCgpCiAKICAgICAgICAgY2xhc3MgZGJfZm91bmQoRXhjZXB0aW9uKTogcGFzcwpAQCAtODYzLDcgKzk0Miw3IEBACiAgICAgICAgICAgICAjIHNlYXJjaCBwYXRoLgogICAgICAgICAgICAgZm9yIGQgaW4gaW5jX2RpcnMgKyBkYl9pbmNfcGF0aHM6CiAgICAgICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihkLCAiZGIuaCIpCi0gICAgICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CisgICAgICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKGQpOgogICAgICAgICAgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsIGRbMTpdLCAiZGIuaCIpCiAKICAgICAgICAgICAgICAgICBpZiBkYl9zZXR1cF9kZWJ1ZzogcHJpbnQoImRiOiBsb29raW5nIGZvciBkYi5oIGluIiwgZikKQEAgLTkxNCw3ICs5OTMsNyBAQAogICAgICAgICAgICAgICAgICAgICBkYl9pbmNkaXIucmVwbGFjZSgiaW5jbHVkZSIsICdsaWInKSwKICAgICAgICAgICAgICAgICBdCiAKLSAgICAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6CisgICAgICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSAhPSAnZGFyd2luJzoKICAgICAgICAgICAgICAgICAgICAgZGJfZGlyc190b19jaGVjayA9IGxpc3QoZmlsdGVyKG9zLnBhdGguaXNkaXIsIGRiX2RpcnNfdG9fY2hlY2spKQogCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTk3MCw3ICsxMDQ5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbG9jYWwvaW5jbHVkZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2xvY2FsL2luY2x1ZGUvc3FsaXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbG9jYWwvaW5jbHVkZS9zcWxpdGUzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICBzcWxpdGVfaW5jX3BhdGhzID0gW10KICAgICAgICAgTUlOX1NRTElURV9WRVJTSU9OX05VTUJFUiA9ICgzLCAwLCA4KQogICAgICAgICBNSU5fU1FMSVRFX1ZFUlNJT04gPSAiLiIuam9pbihbc3RyKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBNSU5fU1FMSVRFX1ZFUlNJT05fTlVNQkVSXSkKQEAgLTk3OCwxMiArMTA1OSwxMiBAQAogICAgICAgICAjIFNjYW4gdGhlIGRlZmF1bHQgaW5jbHVkZSBkaXJlY3RvcmllcyBiZWZvcmUgdGhlIFNRTGl0ZSBzcGVjaWZpYwogICAgICAgICAjIG9uZXMuIFRoaXMgYWxsb3dzIG9uZSB0byBvdmVycmlkZSB0aGUgY29weSBvZiBzcWxpdGUgb24gT1NYLAogICAgICAgICAjIHdoZXJlIC91c3IvaW5jbHVkZSBjb250YWlucyBhbiBvbGQgdmVyc2lvbiBvZiBzcWxpdGUuCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIHN5c3Jvb3QgPSBtYWNvc3hfc2RrX3Jvb3QoKQogCiAgICAgICAgIGZvciBkXyBpbiBpbmNfZGlycyArIHNxbGl0ZV9pbmNfcGF0aHM6CiAgICAgICAgICAgICBkID0gZF8KLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKGQpOgorICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKGQpOgogICAgICAgICAgICAgICAgIGQgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZFsxOl0pCiAKICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oZCwgInNxbGl0ZTMuaCIpCkBAIC0xMDM0LDcgKzExMTUsNyBAQAogICAgICAgICAgICAgICAgICdfc3FsaXRlL3V0aWwuYycsIF0KIAogICAgICAgICAgICAgc3FsaXRlX2RlZmluZXMgPSBbXQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICJ3aW4zMiI6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtICE9ICJ3aW4zMiI6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2RlZmluZXMuYXBwZW5kKCgnTU9EVUxFX05BTUUnLCAnInNxbGl0ZTMiJykpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNxbGl0ZV9kZWZpbmVzLmFwcGVuZCgoJ01PRFVMRV9OQU1FJywgJ1xcInNxbGl0ZTNcXCInKSkKQEAgLTEwNDQsNyArMTEyNSw3IEBACiAgICAgICAgICAgICBpZiAnLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMnIG5vdCBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2RlZmluZXMuYXBwZW5kKCgiU1FMSVRFX09NSVRfTE9BRF9FWFRFTlNJT04iLCAiMSIpKQogCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgICMgSW4gZXZlcnkgZGlyZWN0b3J5IG9uIHRoZSBzZWFyY2ggcGF0aCBzZWFyY2ggZm9yIGEgZHluYW1pYwogICAgICAgICAgICAgICAgICMgbGlicmFyeSBhbmQgdGhlbiBhIHN0YXRpYyBsaWJyYXJ5LCBpbnN0ZWFkIG9mIGZpcnN0IGxvb2tpbmcKICAgICAgICAgICAgICAgICAjIGZvciBkeW5hbWljIGxpYnJhcmllcyBvbiB0aGUgZW50aXJlIHBhdGguCkBAIC0xMDU0LDEwICsxMTM1LDE1IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNxbGl0ZV9leHRyYV9saW5rX2FyZ3MgPSAoKQogCisgICAgICAgICAgICBpbmNsdWRlX2RpcnMgPSBbIk1vZHVsZXMvX3NxbGl0ZSJdCisgICAgICAgICAgICAjIE9ubHkgaW5jbHVkZSB0aGUgZGlyZWN0b3J5IHdoZXJlIHNxbGl0ZSB3YXMgZm91bmQgaWYgaXQgZG9lcworICAgICAgICAgICAgIyBub3QgYWxyZWFkeSBleGlzdCBpbiBzZXQgaW5jbHVkZSBkaXJlY3Rvcmllcywgb3RoZXJ3aXNlIHlvdQorICAgICAgICAgICAgIyBjYW4gZW5kIHVwIHdpdGggYSBiYWQgc2VhcmNoIHBhdGggb3JkZXIuCisgICAgICAgICAgICBpZiBzcWxpdGVfaW5jZGlyIG5vdCBpbiBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlyczoKKyAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKHNxbGl0ZV9pbmNkaXIpCiAgICAgICAgICAgICBleHRzLmFwcGVuZChFeHRlbnNpb24oJ19zcWxpdGUzJywgc3FsaXRlX3NyY3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1zcWxpdGVfZGVmaW5lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9WyJNb2R1bGVzL19zcWxpdGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlX2luY2Rpcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWluY2x1ZGVfZGlycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9c3FsaXRlX2xpYmRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycz1zcWxpdGVfbGliZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1zcWxpdGVfZXh0cmFfbGlua19hcmdzLApAQCAtMTA2NSw5ICsxMTUxLDEwIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX3NxbGl0ZTMnKQogCisgICAgICAgIGRibV9zZXR1cF9kZWJ1ZyA9IEZhbHNlICAgIyB2ZXJib3NlIGRlYnVnIHByaW50cyBmcm9tIHRoaXMgc2NyaXB0PwogICAgICAgICBkYm1fb3JkZXIgPSBbJ2dkYm0nXQogICAgICAgICAjIFRoZSBzdGFuZGFyZCBVbml4IGRibSBtb2R1bGU6Ci0gICAgICAgIGlmIHBsYXRmb3JtIG5vdCBpbiBbJ2N5Z3dpbiddOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtIG5vdCBpbiBbJ2N5Z3dpbiddOgogICAgICAgICAgICAgY29uZmlnX2FyZ3MgPSBbYXJnLnN0cmlwKCInIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhcmcgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpLnNwbGl0KCldCiAgICAgICAgICAgICBkYm1fYXJncyA9IFthcmcgZm9yIGFyZyBpbiBjb25maWdfYXJncwpAQCAtMTA5MCw3ICsxMTc3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGJtX2xpYnMgPSBbJ2dkYm1fY29tcGF0J10KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRibV9saWJzID0gW10KLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgbmRibSIpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBkYm1fc2V0dXBfZGVidWc6IHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgbmRibSIpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYm1leHQgPSBFeHRlbnNpb24oJ19kYm0nLCBbJ19kYm1tb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9WwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0hBVkVfTkRCTV9IJyxOb25lKSwKQEAgLTExMDUsNyArMTE5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2RibV9jb21wYXQnKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJtX2xpYnMuYXBwZW5kKCdnZGJtX2NvbXBhdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaW5kX2ZpbGUoImdkYm0vbmRibS5oIiwgaW5jX2RpcnMsIFtdKSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiYnVpbGRpbmcgZGJtIHVzaW5nIGdkYm0iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRibV9zZXR1cF9kZWJ1ZzogcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBnZGJtIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYm1leHQgPSBFeHRlbnNpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfZGJtJywgWydfZGJtbW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bCkBAIC0xMTE0LDcgKzEyMDEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBnZGJtX2xpYnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfZmlsZSgiZ2RibS1uZGJtLmgiLCBpbmNfZGlycywgW10pIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgZ2RibSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGJtX3NldHVwX2RlYnVnOiBwcmludCgiYnVpbGRpbmcgZGJtIHVzaW5nIGdkYm0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kYm0nLCBbJ19kYm1tb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPVsKQEAgLTExMjQsNyArMTIxMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBlbGlmIGNhbmQgPT0gImJkYiI6CiAgICAgICAgICAgICAgICAgICAgIGlmIGRiX2luY3MgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiYnVpbGRpbmcgZGJtIHVzaW5nIGJkYiIpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBkYm1fc2V0dXBfZGVidWc6IHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgYmRiIikKICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbignX2RibScsIFsnX2RibW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeV9kaXJzPWRibGliX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycz1kYmxpYl9kaXIsCkBAIC0xMTQ5LDE0ICsxMjM2LDE0IEBACiAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2dkYm0nKQogCiAgICAgICAgICMgVW5peC1vbmx5IG1vZHVsZXMKLSAgICAgICAgaWYgcGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSAhPSAnd2luMzInOgogICAgICAgICAgICAgIyBTdGVlbiBMdW1ob2x0J3MgdGVybWlvcyBtb2R1bGUKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3Rlcm1pb3MnLCBbJ3Rlcm1pb3MuYyddKSApCiAgICAgICAgICAgICAjIEplcmVteSBIeWx0b24ncyBybGltaXQgaW50ZXJmYWNlCiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdyZXNvdXJjZScsIFsncmVzb3VyY2UuYyddKSApCiAKICAgICAgICAgICAgICMgU3VuIHllbGxvdyBwYWdlcy4gU29tZSBzeXN0ZW1zIGhhdmUgdGhlIGZ1bmN0aW9ucyBpbiBsaWJjLgotICAgICAgICAgICAgaWYgKHBsYXRmb3JtIG5vdCBpbiBbJ2N5Z3dpbicsICdxbng2J10gYW5kCisgICAgICAgICAgICBpZiAoaG9zdF9wbGF0Zm9ybSBub3QgaW4gWydjeWd3aW4nLCAncW54NiddIGFuZAogICAgICAgICAgICAgICAgIGZpbmRfZmlsZSgncnBjc3ZjL3lwX3Byb3QuaCcsIGluY19kaXJzLCBbXSkgaXMgbm90IE5vbmUpOgogICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnbnNsJykpOgogICAgICAgICAgICAgICAgICAgICBsaWJzID0gWyduc2wnXQpAQCAtMTE3MSwxNiArMTI1OCwzNSBAQAogCiAgICAgICAgICMgQ3Vyc2VzIHN1cHBvcnQsIHJlcXVpcmluZyB0aGUgU3lzdGVtIFYgdmVyc2lvbiBvZiBjdXJzZXMsIG9mdGVuCiAgICAgICAgICMgcHJvdmlkZWQgYnkgdGhlIG5jdXJzZXMgbGlicmFyeS4KKyAgICAgICAgY3Vyc2VzX2RlZmluZXMgPSBbXQorICAgICAgICBjdXJzZXNfaW5jbHVkZXMgPSBbXQogICAgICAgICBwYW5lbF9saWJyYXJ5ID0gJ3BhbmVsJworICAgICAgICBpZiBjdXJzZXNfbGlicmFyeSA9PSAnbmN1cnNlc3cnOgorICAgICAgICAgICAgY3Vyc2VzX2RlZmluZXMuYXBwZW5kKCgnSEFWRV9OQ1VSU0VTVycsICcxJykpCisgICAgICAgICAgICBjdXJzZXNfaW5jbHVkZXMuYXBwZW5kKCcvdXNyL2luY2x1ZGUvbmN1cnNlc3cnKQorICAgICAgICAgICAgIyBCdWcgMTQ2NDA1NjogSWYgX2N1cnNlcy5zbyBsaW5rcyB3aXRoIG5jdXJzZXN3LAorICAgICAgICAgICAgIyBfY3Vyc2VzX3BhbmVsLnNvIG11c3QgbGluayB3aXRoIHBhbmVsdy4KKyAgICAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWx3JworICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgICAgICAjIE9uIE9TIFgsIHRoZXJlIGlzIG5vIHNlcGFyYXRlIC91c3IvbGliL2xpYm5jdXJzZXN3IG5vcgorICAgICAgICAgICAgICAgICMgbGlicGFuZWx3LiAgSWYgd2UgYXJlIGhlcmUsIHdlIGZvdW5kIGEgbG9jYWxseS1zdXBwbGllZAorICAgICAgICAgICAgICAgICMgdmVyc2lvbiBvZiBsaWJuY3Vyc2Vzdy4gIFRoZXJlIHNob3VsZCBiZSBhbHNvIGJlIGEKKyAgICAgICAgICAgICAgICAjIGxpYnBhbmVsdy4gIF9YT1BFTl9TT1VSQ0UgZGVmaW5lcyBhcmUgdXN1YWxseSBleGNsdWRlZAorICAgICAgICAgICAgICAgICMgZm9yIE9TIFggYnV0IHdlIG5lZWQgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCBoZXJlIGZvcgorICAgICAgICAgICAgICAgICMgbmN1cnNlcyB3aWRlIGNoYXIgc3VwcG9ydAorICAgICAgICAgICAgICAgIGN1cnNlc19kZWZpbmVzLmFwcGVuZCgoJ19YT1BFTl9TT1VSQ0VfRVhURU5ERUQnLCAnMScpKQorICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGN1cnNlc19saWJyYXJ5ID09ICduY3Vyc2VzJzoKKyAgICAgICAgICAgICMgQnVpbGRpbmcgd2l0aCB0aGUgc3lzdGVtLXN1cHBpZWQgY29tYmluZWQgbGlibmN1cnNlcy9saWJwYW5lbAorICAgICAgICAgICAgY3Vyc2VzX2RlZmluZXMuYXBwZW5kKCgnSEFWRV9OQ1VSU0VTVycsICcxJykpCisgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdfWE9QRU5fU09VUkNFX0VYVEVOREVEJywgJzEnKSkKKwogICAgICAgICBpZiBjdXJzZXNfbGlicmFyeS5zdGFydHN3aXRoKCduY3Vyc2VzJyk6Ci0gICAgICAgICAgICBpZiBjdXJzZXNfbGlicmFyeSA9PSAnbmN1cnNlc3cnOgotICAgICAgICAgICAgICAgICMgQnVnIDE0NjQwNTY6IElmIF9jdXJzZXMuc28gbGlua3Mgd2l0aCBuY3Vyc2VzdywKLSAgICAgICAgICAgICAgICAjIF9jdXJzZXNfcGFuZWwuc28gbXVzdCBsaW5rIHdpdGggcGFuZWx3LgotICAgICAgICAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWx3JwogICAgICAgICAgICAgY3Vyc2VzX2xpYnMgPSBbY3Vyc2VzX2xpYnJhcnldCiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfY3Vyc2VzJywgWydfY3Vyc2VzbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWN1cnNlc19pbmNsdWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1jdXJzZXNfZGVmaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gY3Vyc2VzX2xpYnMpICkKLSAgICAgICAgZWxpZiBjdXJzZXNfbGlicmFyeSA9PSAnY3Vyc2VzJyBhbmQgcGxhdGZvcm0gIT0gJ2Rhcndpbic6CisgICAgICAgIGVsaWYgY3Vyc2VzX2xpYnJhcnkgPT0gJ2N1cnNlcycgYW5kIGhvc3RfcGxhdGZvcm0gIT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgICAgIyBPU1ggaGFzIGFuIG9sZCBCZXJrZWxleSBjdXJzZXMsIG5vdCBnb29kIGVub3VnaCBmb3IKICAgICAgICAgICAgICAgICAjIHRoZSBfY3Vyc2VzIG1vZHVsZS4KICAgICAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAndGVybWluZm8nKSk6CkBAIC0xMTkxLDYgKzEyOTcsNyBAQAogICAgICAgICAgICAgICAgIGN1cnNlc19saWJzID0gWydjdXJzZXMnXQogCiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfY3Vyc2VzJywgWydfY3Vyc2VzbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1jdXJzZXNfZGVmaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gY3Vyc2VzX2xpYnMpICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfY3Vyc2VzJykKQEAgLTExOTksNiArMTMwNiw4IEBACiAgICAgICAgIGlmIChtb2R1bGVfZW5hYmxlZChleHRzLCAnX2N1cnNlcycpIGFuZAogICAgICAgICAgICAgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgcGFuZWxfbGlicmFyeSkpOgogICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2N1cnNlc19wYW5lbCcsIFsnX2N1cnNlc19wYW5lbC5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1jdXJzZXNfaW5jbHVkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9Y3Vyc2VzX2RlZmluZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtwYW5lbF9saWJyYXJ5XSArIGN1cnNlc19saWJzKSApCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2N1cnNlc19wYW5lbCcpCkBAIC0xMjMxLDcgKzEzNDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGlmIHZlcnNpb24gPj0gdmVyc2lvbl9yZXE6CiAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICd6JykpOgotICAgICAgICAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CisgICAgICAgICAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICB6bGliX2V4dHJhX2xpbmtfYXJncyA9ICgnLVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QnLCkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWJfZXh0cmFfbGlua19hcmdzID0gKCkKQEAgLTEyNjMsMTUgKzEzNzIsMjIgQEAKIAogICAgICAgICAjIEd1c3Rhdm8gTmllbWV5ZXIncyBiejIgbW9kdWxlLgogICAgICAgICBpZiAoc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ2J6MicpKToKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgICAgICAgICAgYnoyX2V4dHJhX2xpbmtfYXJncyA9ICgnLVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QnLCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYnoyX2V4dHJhX2xpbmtfYXJncyA9ICgpCi0gICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdiejInLCBbJ2J6Mm1vZHVsZS5jJ10sCisgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfYnoyJywgWydfYnoybW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gWydiejInXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzID0gYnoyX2V4dHJhX2xpbmtfYXJncykgKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ2J6MicpCisgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2J6MicpCisKKyAgICAgICAgIyBMWk1BIGNvbXByZXNzaW9uIHN1cHBvcnQuCisgICAgICAgIGlmIHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICdsem1hJyk6CisgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfbHptYScsIFsnX2x6bWFtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ2x6bWEnXSkgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19sem1hJykKIAogICAgICAgICAjIEludGVyZmFjZSB0byB0aGUgRXhwYXQgWE1MIHBhcnNlcgogICAgICAgICAjCkBAIC0xMzI3LDMzICsxNDQzLDM2IEBACiAgICAgICAgICAgICBleHRzLmFwcGVuZChFeHRlbnNpb24oJ19jb2RlY3NfJXMnICUgbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnY2prY29kZWNzL19jb2RlY3NfJXMuYycgJSBsb2NdKSkKIAorICAgICAgICAjIFN0ZWZhbiBLcmFoJ3MgX2RlY2ltYWwgbW9kdWxlCisgICAgICAgIGV4dHMuYXBwZW5kKHNlbGYuX2RlY2ltYWxfZXh0KCkpCisKICAgICAgICAgIyBUaG9tYXMgSGVsbGVyJ3MgX2N0eXBlcyBtb2R1bGUKICAgICAgICAgc2VsZi5kZXRlY3RfY3R5cGVzKGluY19kaXJzLCBsaWJfZGlycykKIAogICAgICAgICAjIFJpY2hhcmQgT3Vka2VyaydzIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3dpbjMyJzogICAgICAgICAgICAgIyBXaW5kb3dzCisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ3dpbjMyJzogICAgICAgICMgV2luZG93cwogICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCiAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3dzMl8zMiddCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJzogICAgICAgICAgIyBNYWMgT1NYCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzogICAgICMgTWFjIE9TWAogICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCiAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbXQogCi0gICAgICAgIGVsaWYgcGxhdGZvcm0gPT0gJ2N5Z3dpbic6ICAgICAgICAgICMgQ3lnd2luCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnY3lnd2luJzogICAgICMgQ3lnd2luCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybSBpbiAoJ2ZyZWVic2Q0JywgJ2ZyZWVic2Q1JywgJ2ZyZWVic2Q2JywgJ2ZyZWVic2Q3JywgJ2ZyZWVic2Q4Jyk6CisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSBpbiAoJ2ZyZWVic2Q0JywgJ2ZyZWVic2Q1JywgJ2ZyZWVic2Q2JywgJ2ZyZWVic2Q3JywgJ2ZyZWVic2Q4Jyk6CiAgICAgICAgICAgICAjIEZyZWVCU0QncyBQMTAwMy4xYiBzZW1hcGhvcmUgc3VwcG9ydCBpcyB2ZXJ5IGV4cGVyaW1lbnRhbAogICAgICAgICAgICAgIyBhbmQgaGFzIG1hbnkga25vd24gcHJvYmxlbXMuIChhcyBvZiBKdW5lIDIwMDgpCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdvcGVuYnNkJyk6CisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybS5zdGFydHN3aXRoKCdvcGVuYnNkJyk6CiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCduZXRic2QnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpOgogICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCiAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbXQogCkBAIC0xMzYxLDE3ICsxNDgwLDEzIEBACiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncnQnXQogCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZ19zcmNzID0gWyAnX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19tdWx0aXByb2Nlc3Npbmcvc2VtYXBob3JlLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3BpcGVfY29ubmVjdGlvbi5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX211bHRpcHJvY2Vzc2luZy9zb2NrZXRfY29ubmVjdGlvbi5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX211bHRpcHJvY2Vzc2luZy93aW4zMl9mdW5jdGlvbnMuYycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtdWx0aXByb2Nlc3Npbmdfc3JjcyA9IFsgJ19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIGlmIChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfU0VNX09QRU4nKSBhbmQgbm90CiAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEJykpOgpAQCAtMTM4NiwxNCArMTUwMSwxMiBAQAogICAgICAgICAjIEVuZCBtdWx0aXByb2Nlc3NpbmcKIAogICAgICAgICAjIFBsYXRmb3JtLXNwZWNpZmljIGxpYnJhcmllcwotICAgICAgICBpZiAocGxhdGZvcm0gaW4gKCdsaW51eDInLCAnZnJlZWJzZDQnLCAnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZyZWVic2Q3JywgJ2ZyZWVic2Q4JykKLSAgICAgICAgICAgIG9yIHBsYXRmb3JtLnN0YXJ0c3dpdGgoImdudWtmcmVlYnNkIikpOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcsICdmcmVlYnNkJywgJ2dudWtmcmVlYnNkJykpOgogICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignb3NzYXVkaW9kZXYnLCBbJ29zc2F1ZGlvZGV2LmMnXSkgKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ29zc2F1ZGlvZGV2JykKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBleHRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW5zaW9uKCdfZ2VzdGFsdCcsIFsnX2dlc3RhbHQuYyddLAogICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3M9WyctZnJhbWV3b3JrJywgJ0NhcmJvbiddKQpAQCAtMTUxMSw4ICsxNjI0LDcgQEAKICAgICAgICAgIyBSYXRoZXIgdGhhbiBjb21wbGljYXRlIHRoZSBjb2RlIGJlbG93LCBkZXRlY3RpbmcgYW5kIGJ1aWxkaW5nCiAgICAgICAgICMgQXF1YVRrIGlzIGEgc2VwYXJhdGUgbWV0aG9kLiBPbmx5IG9uZSBUa2ludGVyIHdpbGwgYmUgYnVpbHQgb24KICAgICAgICAgIyBEYXJ3aW4gLSBlaXRoZXIgQXF1YVRrLCBpZiBpdCBpcyBmb3VuZCwgb3IgWDExIGJhc2VkIFRrLgotICAgICAgICBwbGF0Zm9ybSA9IHNlbGYuZ2V0X3BsYXRmb3JtKCkKLSAgICAgICAgaWYgKHBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZAorICAgICAgICBpZiAoaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQKICAgICAgICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXJfZGFyd2luKGluY19kaXJzLCBsaWJfZGlycykpOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTE1MzUsNyArMTY0Nyw3IEBACiAgICAgICAgICAgICAjIENoZWNrIGZvciB0aGUgaW5jbHVkZSBmaWxlcyBvbiBEZWJpYW4gYW5kIHtGcmVlLE9wZW59QlNELCB3aGVyZQogICAgICAgICAgICAgIyB0aGV5J3JlIHB1dCBpbiAvdXNyL2luY2x1ZGUve3RjbCx0a31YLlkKICAgICAgICAgICAgIGRvdHZlcnNpb24gPSB2ZXJzaW9uCi0gICAgICAgICAgICBpZiAnLicgbm90IGluIGRvdHZlcnNpb24gYW5kICJic2QiIGluIHN5cy5wbGF0Zm9ybS5sb3dlcigpOgorICAgICAgICAgICAgaWYgJy4nIG5vdCBpbiBkb3R2ZXJzaW9uIGFuZCAiYnNkIiBpbiBob3N0X3BsYXRmb3JtLmxvd2VyKCk6CiAgICAgICAgICAgICAgICAgIyBPcGVuQlNEIGFuZCBGcmVlQlNEIHVzZSBUY2wvVGsgbGlicmFyeSBuYW1lcyBsaWtlIGxpYnRjbDgzLmEsCiAgICAgICAgICAgICAgICAgIyBidXQgdGhlIGluY2x1ZGUgc3ViZGlycyBhcmUgbmFtZWQgbGlrZSAuLi4vaW5jbHVkZS90Y2w4LjMuCiAgICAgICAgICAgICAgICAgZG90dmVyc2lvbiA9IGRvdHZlcnNpb25bOi0xXSArICcuJyArIGRvdHZlcnNpb25bLTFdCkBAIC0xNTYxLDcgKzE2NzMsNyBAQAogICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoZGlyKQogCiAgICAgICAgICMgQ2hlY2sgZm9yIHZhcmlvdXMgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3N1bm9zNSc6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ3N1bm9zNSc6CiAgICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKCcvdXNyL29wZW53aW4vaW5jbHVkZScpCiAgICAgICAgICAgICBhZGRlZF9saWJfZGlycy5hcHBlbmQoJy91c3Ivb3Blbndpbi9saWInKQogICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKCcvdXNyL1gxMVI2L2luY2x1ZGUnKToKQEAgLTE1NzcsNyArMTY4OSw3IEBACiAgICAgICAgICAgICBhZGRlZF9saWJfZGlycy5hcHBlbmQoJy91c3IvWDExL2xpYicpCiAKICAgICAgICAgIyBJZiBDeWd3aW4sIHRoZW4gdmVyaWZ5IHRoYXQgWCBpcyBpbnN0YWxsZWQgYmVmb3JlIHByb2NlZWRpbmcKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2N5Z3dpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2N5Z3dpbic6CiAgICAgICAgICAgICB4MTFfaW5jID0gZmluZF9maWxlKCdYMTEvWGxpYi5oJywgW10sIGluY2x1ZGVfZGlycykKICAgICAgICAgICAgIGlmIHgxMV9pbmMgaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4KQEAgLTE1OTYsMTEgKzE3MDgsMTEgQEAKICAgICAgICAgbGlicy5hcHBlbmQoJ3RrJysgdmVyc2lvbikKICAgICAgICAgbGlicy5hcHBlbmQoJ3RjbCcrIHZlcnNpb24pCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gaW4gWydhaXgzJywgJ2FpeDQnXToKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSBpbiBbJ2FpeDMnLCAnYWl4NCddOgogICAgICAgICAgICAgbGlicy5hcHBlbmQoJ2xkJykKIAogICAgICAgICAjIEZpbmFsbHksIGxpbmsgd2l0aCB0aGUgWDExIGxpYnJhcmllcyAobm90IGFwcHJvcHJpYXRlIG9uIGN5Z3dpbikKLSAgICAgICAgaWYgcGxhdGZvcm0gIT0gImN5Z3dpbiI6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gIT0gImN5Z3dpbiI6CiAgICAgICAgICAgICBsaWJzLmFwcGVuZCgnWDExJykKIAogICAgICAgICBleHQgPSBFeHRlbnNpb24oJ190a2ludGVyJywgWydfdGtpbnRlci5jJywgJ3RrYXBwaW5pdC5jJ10sCkBAIC0xNjU2LDcgKzE3NjgsNyBAQAogCiAgICAgZGVmIGNvbmZpZ3VyZV9jdHlwZXMoc2VsZiwgZXh0KToKICAgICAgICAgaWYgbm90IHNlbGYudXNlX3N5c3RlbV9saWJmZmk6Ci0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbmZpZ3VyZV9jdHlwZXNfZGFyd2luKGV4dCkKIAogICAgICAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQpAQCAtMTY3NCw3ICsxNzg2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZpX2NvbmZpZ2ZpbGUpOgogICAgICAgICAgICAgICAgIGZyb20gZGlzdHV0aWxzLmRpcl91dGlsIGltcG9ydCBta3BhdGgKICAgICAgICAgICAgICAgICBta3BhdGgoZmZpX2J1aWxkZGlyKQotICAgICAgICAgICAgICAgIGNvbmZpZ19hcmdzID0gW10KKyAgICAgICAgICAgICAgICBjb25maWdfYXJncyA9IFthcmcgZm9yIGFyZyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIikuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoJy0taG9zdD0nIGluIGFyZykgb3IgKCctLWJ1aWxkPScgaW4gYXJnKSldCiAKICAgICAgICAgICAgICAgICAjIFBhc3MgZW1wdHkgQ0ZMQUdTIGJlY2F1c2Ugd2UnbGwganVzdCBhcHBlbmQgdGhlIHJlc3VsdGluZwogICAgICAgICAgICAgICAgICMgQ0ZMQUdTIHRvIFB5dGhvbidzOyAtZyBvciAtTzIgaXMgdG8gYmUgYXZvaWRlZC4KQEAgLTE3MTYsNyArMTgyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgJ19jdHlwZXMvY2ZpZWxkLmMnXQogICAgICAgICBkZXBlbmRzID0gWydfY3R5cGVzL2N0eXBlcy5oJ10KIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBzb3VyY2VzLmFwcGVuZCgnX2N0eXBlcy9tYWxsb2NfY2xvc3VyZS5jJykKICAgICAgICAgICAgIHNvdXJjZXMuYXBwZW5kKCdfY3R5cGVzL2Rhcndpbi9kbGZjbl9zaW1wbGUuYycpCiAgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MuYXBwZW5kKCctRE1BQ09TWCcpCkBAIC0xNzI0LDcgKzE4MzcsNyBAQAogIyBYWFggSXMgdGhpcyBzdGlsbCBuZWVkZWQ/CiAjIyAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncy5leHRlbmQoWyctcmVhZF9vbmx5X3JlbG9jcycsICd3YXJuaW5nJ10pCiAKLSAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ3N1bm9zNSc6CisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKICAgICAgICAgICAgICMgWFhYIFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeTsgaXQgYXBwZWFycyB0aGF0IHNvbWUKICAgICAgICAgICAgICMgb2YgdGhlIGFzc2VtYmxlciBjb2RlIGlzIG5vbi1QSUMgKGkuZS4gaXQgaGFzIHJlbG9jYXRpb25zCiAgICAgICAgICAgICAjIHdoZW4gaXQgc2hvdWxkbid0LiBUaGUgcHJvcGVyIGZpeCB3b3VsZCBiZSB0byByZXdyaXRlCkBAIC0xNzM1LDcgKzE4NDgsNyBAQAogICAgICAgICAgICAgIyBmaW5kaW5nIHNvbWUgLXogb3B0aW9uIGZvciB0aGUgU3VuIGNvbXBpbGVyLgogICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzLmFwcGVuZCgnLW1pbXB1cmUtdGV4dCcpCiAKLSAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnaHAtdXgnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ2hwLXV4Jyk6CiAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3MuYXBwZW5kKCctZlBJQycpCiAKICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCdfY3R5cGVzJywKQEAgLTE3NTIsNyArMTg2NSw3IEBACiAgICAgICAgIGlmIG5vdCAnLS13aXRoLXN5c3RlbS1mZmknIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgICMgT1MgWCAxMC41IGNvbWVzIHdpdGggbGliZmZpLmR5bGliOyB0aGUgaW5jbHVkZSBmaWxlcyBhcmUKICAgICAgICAgICAgICMgaW4gL3Vzci9pbmNsdWRlL2ZmaQogICAgICAgICAgICAgaW5jX2RpcnMuYXBwZW5kKCcvdXNyL2luY2x1ZGUvZmZpJykKQEAgLTE3ODIsNiArMTg5NSwxMjcgQEAKICAgICAgICAgICAgIGV4dC5saWJyYXJpZXMuYXBwZW5kKGZmaV9saWIpCiAgICAgICAgICAgICBzZWxmLnVzZV9zeXN0ZW1fbGliZmZpID0gVHJ1ZQogCisgICAgZGVmIF9kZWNpbWFsX2V4dChzZWxmKToKKyAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzID0gW10KKyAgICAgICAgdW5kZWZfbWFjcm9zID0gWydOREVCVUcnXQorICAgICAgICBpZiAnLS13aXRoLXN5c3RlbS1saWJtcGRlYycgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgorICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gW10KKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnbXBkZWMnXQorICAgICAgICAgICAgc291cmNlcyA9IFsnX2RlY2ltYWwvX2RlY2ltYWwuYyddCisgICAgICAgICAgICBkZXBlbmRzID0gWydfZGVjaW1hbC9kb2NzdHJpbmdzLmgnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gW29zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01vZHVsZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kZWNpbWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJtcGRlYycpKV0KKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCisgICAgICAgICAgICBzb3VyY2VzID0gWworICAgICAgICAgICAgICAnX2RlY2ltYWwvX2RlY2ltYWwuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb250ZXh0LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY3J0LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm50LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9pby5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuYycsCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGRlcGVuZHMgPSBbCisgICAgICAgICAgICAgICdfZGVjaW1hbC9kb2NzdHJpbmdzLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvYml0cy5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NvbnZvbHV0ZS5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NydC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZudC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvaW8uaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdW1vZGFyaXRoLmgnLAorICAgICAgICAgICAgICBdCisKKyAgICAgICAgY29uZmlnID0geworICAgICAgICAgICd4NjQnOiAgICAgWygnQ09ORklHXzY0JywnMScpLCAoJ0FTTScsJzEnKV0sCisgICAgICAgICAgJ3VpbnQxMjgnOiBbKCdDT05GSUdfNjQnLCcxJyksICgnQU5TSScsJzEnKSwgKCdIQVZFX1VJTlQxMjhfVCcsJzEnKV0sCisgICAgICAgICAgJ2Fuc2k2NCc6ICBbKCdDT05GSUdfNjQnLCcxJyksICgnQU5TSScsJzEnKV0sCisgICAgICAgICAgJ3Bwcm8nOiAgICBbKCdDT05GSUdfMzInLCcxJyksICgnUFBSTycsJzEnKSwgKCdBU00nLCcxJyldLAorICAgICAgICAgICdhbnNpMzInOiAgWygnQ09ORklHXzMyJywnMScpLCAoJ0FOU0knLCcxJyldLAorICAgICAgICAgICdhbnNpLWxlZ2FjeSc6IFsoJ0NPTkZJR18zMicsJzEnKSwgKCdBTlNJJywnMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0xFR0FDWV9DT01QSUxFUicsJzEnKV0sCisgICAgICAgICAgJ3VuaXZlcnNhbCc6ICAgWygnVU5JVkVSU0FMJywnMScpXQorICAgICAgICB9CisKKyAgICAgICAgY2MgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NDJykKKyAgICAgICAgc2l6ZW9mX3NpemVfdCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU0laRU9GX1NJWkVfVCcpCisgICAgICAgIG1hY2hpbmUgPSBvcy5lbnZpcm9uLmdldCgnUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FJykKKworICAgICAgICBpZiBtYWNoaW5lOgorICAgICAgICAgICAgIyBPdmVycmlkZSBhdXRvbWF0aWMgY29uZmlndXJhdGlvbiB0byBmYWNpbGl0YXRlIHRlc3RpbmcuCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnW21hY2hpbmVdCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgICMgVW5pdmVyc2FsIGhlcmUgbWVhbnM6IGJ1aWxkIHdpdGggdGhlIHNhbWUgb3B0aW9ucyBQeXRob24KKyAgICAgICAgICAgICMgd2FzIGJ1aWx0IHdpdGguCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWyd1bml2ZXJzYWwnXQorICAgICAgICBlbGlmIHNpemVvZl9zaXplX3QgPT0gODoKKyAgICAgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HQ0NfQVNNX0ZPUl9YNjQnKToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWyd4NjQnXQorICAgICAgICAgICAgZWxpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0NDX1VJTlQxMjhfVCcpOgorICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3MgPSBjb25maWdbJ3VpbnQxMjgnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWydhbnNpNjQnXQorICAgICAgICBlbGlmIHNpemVvZl9zaXplX3QgPT0gNDoKKyAgICAgICAgICAgIHBwcm8gPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0NDX0FTTV9GT1JfWDg3JykKKyAgICAgICAgICAgIGlmIHBwcm8gYW5kICgnZ2NjJyBpbiBjYyBvciAnY2xhbmcnIGluIGNjKSBhbmQgXAorICAgICAgICAgICAgICAgbm90ICdzdW5vcycgaW4gaG9zdF9wbGF0Zm9ybToKKyAgICAgICAgICAgICAgICAjIHNvbGFyaXM6IHByb2JsZW1zIHdpdGggcmVnaXN0ZXIgYWxsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAjIGljYyA+PSAxMS4wIHdvcmtzIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgZGVmaW5lX21hY3JvcyA9IGNvbmZpZ1sncHBybyddCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3MgPSBjb25maWdbJ2Fuc2kzMiddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNFcnJvcigiX2RlY2ltYWw6IHVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSIpCisKKyAgICAgICAgIyBXb3JrYXJvdW5kcyBmb3IgdG9vbGNoYWluIGJ1Z3M6CisgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9JUEFfUFVSRV9DT05TVF9CVUcnKToKKyAgICAgICAgICAgICMgU29tZSB2ZXJzaW9ucyBvZiBnY2MgbWlzY29tcGlsZSBpbmxpbmUgYXNtOgorICAgICAgICAgICAgIyBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQ2NDkxCisgICAgICAgICAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMC0xMS9tc2cwMDM2Ni5odG1sCisgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MuYXBwZW5kKCctZm5vLWlwYS1wdXJlLWNvbnN0JykKKyAgICAgICAgaWYgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdIQVZFX0dMSUJDX01FTU1PVkVfQlVHJyk6CisgICAgICAgICAgICAjIF9GT1JUSUZZX1NPVVJDRSB3cmFwcGVycyBmb3IgbWVtbW92ZSBhbmQgYmNvcHkgYXJlIGluY29ycmVjdDoKKyAgICAgICAgICAgICMgaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxMC0xMi9tc2cwMDAwOS5odG1sCisgICAgICAgICAgICB1bmRlZl9tYWNyb3MuYXBwZW5kKCdfRk9SVElGWV9TT1VSQ0UnKQorCisgICAgICAgICMgRmFzdGVyIHZlcnNpb24gd2l0aG91dCB0aHJlYWQgbG9jYWwgY29udGV4dHM6CisgICAgICAgIGlmIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfVEhSRUFEJyk6CisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zLmFwcGVuZCgoJ1dJVEhPVVRfVEhSRUFEUycsIDEpKQorCisgICAgICAgICMgVW5jb21tZW50IGZvciBleHRyYSBmdW5jdGlvbmFsaXR5OgorICAgICAgICAjZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCdFWFRSQV9GVU5DVElPTkFMSVRZJywgMSkpCisgICAgICAgIGV4dCA9IEV4dGVuc2lvbiAoCisgICAgICAgICAgICAnX2RlY2ltYWwnLAorICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWluY2x1ZGVfZGlycywKKyAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWRlZmluZV9tYWNyb3MsCisgICAgICAgICAgICB1bmRlZl9tYWNyb3M9dW5kZWZfbWFjcm9zLAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzPWV4dHJhX2NvbXBpbGVfYXJncywKKyAgICAgICAgICAgIHNvdXJjZXM9c291cmNlcywKKyAgICAgICAgICAgIGRlcGVuZHM9ZGVwZW5kcworICAgICAgICApCisgICAgICAgIHJldHVybiBleHQKIAogY2xhc3MgUHlCdWlsZEluc3RhbGwoaW5zdGFsbCk6CiAgICAgIyBTdXBwcmVzcyB0aGUgd2FybmluZyBhYm91dCBpbnN0YWxsYXRpb24gaW50byB0aGUgbGliX2R5bmxvYWQKQEAgLTE3OTEsNiArMjAyNSwxMyBAQAogICAgICAgICBpbnN0YWxsLmluaXRpYWxpemVfb3B0aW9ucyhzZWxmKQogICAgICAgICBzZWxmLndhcm5fZGlyPTAKIAorICAgICMgQ3VzdG9taXplIHN1YmNvbW1hbmRzIHRvIG5vdCBpbnN0YWxsIGFuIGVnZy1pbmZvIGZpbGUgZm9yIFB5dGhvbgorICAgIHN1Yl9jb21tYW5kcyA9IFsoJ2luc3RhbGxfbGliJywgaW5zdGFsbC5oYXNfbGliKSwKKyAgICAgICAgICAgICAgICAgICAgKCdpbnN0YWxsX2hlYWRlcnMnLCBpbnN0YWxsLmhhc19oZWFkZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgKCdpbnN0YWxsX3NjcmlwdHMnLCBpbnN0YWxsLmhhc19zY3JpcHRzKSwKKyAgICAgICAgICAgICAgICAgICAgKCdpbnN0YWxsX2RhdGEnLCBpbnN0YWxsLmhhc19kYXRhKV0KKworCiBjbGFzcyBQeUJ1aWxkSW5zdGFsbExpYihpbnN0YWxsX2xpYik6CiAgICAgIyBEbyBleGFjdGx5IHdoYXQgaW5zdGFsbF9saWIgZG9lcyBidXQgbWFrZSBzdXJlIGNvcnJlY3QgYWNjZXNzIG1vZGVzIGdldAogICAgICMgc2V0IG9uIGluc3RhbGxlZCBkaXJlY3RvcmllcyBhbmQgZmlsZXMuIEFsbCBpbnN0YWxsZWQgZmlsZXMgd2l0aCBnZXQKQEAgLTE4MzUsNyArMjA3Niw3IEBACiAgICAgICAgIG5ld291dGZpbGVzID0gW10KICAgICAgICAgbmV3dXBkYXRlZF9maWxlcyA9IFtdCiAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBvdXRmaWxlczoKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcydG8zJyk6CisgICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgoJzJ0bzMnLCAncHl2ZW52JykpOgogICAgICAgICAgICAgICAgIG5ld2ZpbGVuYW1lID0gZmlsZW5hbWUgKyBmdWxsdmVyc2lvbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBuZXdmaWxlbmFtZSA9IGZpbGVuYW1lICsgbWlub3Jvbmx5CkBAIC0xOTAzLDcgKzIxNDQsNyBAQAogICAgICAgICAgICMgY2hlY2sgdGhlIFB5QnVpbGRTY3JpcHRzIGNvbW1hbmQgYWJvdmUsIGFuZCBjaGFuZ2UgdGhlIGxpbmtzCiAgICAgICAgICAgIyBjcmVhdGVkIGJ5IHRoZSBiaW5pbnN0YWxsIHRhcmdldCBpbiBNYWtlZmlsZS5wcmUuaW4KICAgICAgICAgICBzY3JpcHRzID0gWyJUb29scy9zY3JpcHRzL3B5ZG9jMyIsICJUb29scy9zY3JpcHRzL2lkbGUzIiwKLSAgICAgICAgICAgICAgICAgICAgICJUb29scy9zY3JpcHRzLzJ0bzMiXQorICAgICAgICAgICAgICAgICAgICAgIlRvb2xzL3NjcmlwdHMvMnRvMyIsICJUb29scy9zY3JpcHRzL3B5dmVudiJdCiAgICAgICAgICkKIAogIyAtLWluc3RhbGwtcGxhdGxpYgo=